commit 2d2912a771a64188d74324fceb8dad2d2dbbcee2 Author: feda Date: Mon Mar 3 15:53:11 2025 +0300 initial software commit diff --git a/.mxproject b/.mxproject new file mode 100644 index 0000000..8c3bb1f --- /dev/null +++ b/.mxproject @@ -0,0 +1,24 @@ +[PreviousLibFiles] +LibFiles=Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_adc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dmamux.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h;Middlewares/Third_Party/FatFs/src/diskio.h;Middlewares/Third_Party/FatFs/src/ff.h;Middlewares/Third_Party/FatFs/src/ff_gen_drv.h;Middlewares/Third_Party/FatFs/src/integer.h;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c;Middlewares/Third_Party/FatFs/src/diskio.c;Middlewares/Third_Party/FatFs/src/ff.c;Middlewares/Third_Party/FatFs/src/ff_gen_drv.c;Middlewares/Third_Party/FatFs/src/option/syscall.c;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_adc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dmamux.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h;Middlewares/Third_Party/FatFs/src/diskio.h;Middlewares/Third_Party/FatFs/src/ff.h;Middlewares/Third_Party/FatFs/src/ff_gen_drv.h;Middlewares/Third_Party/FatFs/src/integer.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/core_armv8mbl.h; + +[PreviousUsedKeilFiles] +SourceFiles=..\Src\main.c;..\Src\bsp_driver_sd.c;..\Src\sd_diskio.c;..\Src\fatfs.c;..\Src\fatfs_platform.c;..\Src\stm32f7xx_it.c;..\Src\stm32f7xx_hal_msp.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_adc.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_adc_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_rcc.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_rcc_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_flash.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_flash_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_gpio.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_dma.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_dma_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_pwr.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_pwr_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_cortex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_i2c.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_i2c_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_exti.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_rcc.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_utils.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_exti.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_gpio.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_dma.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_sdmmc.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_sd.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_spi.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_tim.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_tim_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_tim.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_usart.c;..\Middlewares\Third_Party\FatFs\src\diskio.c;..\Middlewares\Third_Party\FatFs\src\ff.c;..\Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;..\Middlewares\Third_Party\FatFs\src\option\syscall.c;..\Drivers\CMSIS\Device\ST\STM32F7xx\Source\Templates\system_stm32f7xx.c;..\\Src\system_stm32f7xx.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_adc.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_adc_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_rcc.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_rcc_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_flash.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_flash_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_gpio.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_dma.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_dma_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_pwr.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_pwr_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_cortex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_i2c.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_i2c_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_exti.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_rcc.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_utils.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_exti.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_gpio.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_dma.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_sdmmc.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_sd.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_spi.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_tim.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_hal_tim_ex.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_tim.c;..\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_usart.c;..\Middlewares\Third_Party\FatFs\src\diskio.c;..\Middlewares\Third_Party\FatFs\src\ff.c;..\Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;..\Middlewares\Third_Party\FatFs\src\option\syscall.c;..\Drivers\CMSIS\Device\ST\STM32F7xx\Source\Templates\system_stm32f7xx.c;..\\Src\system_stm32f7xx.c;;;..\Middlewares\Third_Party\FatFs\src\diskio.c;..\Middlewares\Third_Party\FatFs\src\ff.c;..\Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;..\Middlewares\Third_Party\FatFs\src\option\syscall.c; +HeaderPath=..\Drivers\STM32F7xx_HAL_Driver\Inc;..\Drivers\STM32F7xx_HAL_Driver\Inc\Legacy;..\Middlewares\Third_Party\FatFs\src;..\Drivers\CMSIS\Device\ST\STM32F7xx\Include;..\Drivers\CMSIS\Include;..\Inc; +CDefines=USE_FULL_LL_DRIVER;USE_HAL_DRIVER;STM32F767xx;USE_FULL_LL_DRIVER;USE_HAL_DRIVER;USE_HAL_DRIVER; + +[PreviousUsedMakefileFiles] +SourceFiles=Src/main.c;Src/bsp_driver_sd.c;Src/sd_diskio.c;Src/fatfs.c;Src/fatfs_platform.c;Src/stm32f7xx_it.c;Src/stm32f7xx_hal_msp.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c;Middlewares/Third_Party/FatFs/src/diskio.c;Middlewares/Third_Party/FatFs/src/ff.c;Middlewares/Third_Party/FatFs/src/ff_gen_drv.c;Middlewares/Third_Party/FatFs/src/option/syscall.c;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;Src/system_stm32f7xx.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c;Middlewares/Third_Party/FatFs/src/diskio.c;Middlewares/Third_Party/FatFs/src/ff.c;Middlewares/Third_Party/FatFs/src/ff_gen_drv.c;Middlewares/Third_Party/FatFs/src/option/syscall.c;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;Src/system_stm32f7xx.c;;;Middlewares/Third_Party/FatFs/src/diskio.c;Middlewares/Third_Party/FatFs/src/ff.c;Middlewares/Third_Party/FatFs/src/ff_gen_drv.c;Middlewares/Third_Party/FatFs/src/option/syscall.c; +HeaderPath=Drivers/STM32F7xx_HAL_Driver/Inc;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy;Middlewares/Third_Party/FatFs/src;Drivers/CMSIS/Device/ST/STM32F7xx/Include;Drivers/CMSIS/Include;Inc; +CDefines=USE_FULL_LL_DRIVER;USE_HAL_DRIVER;STM32F767xx;USE_FULL_LL_DRIVER;USE_HAL_DRIVER;USE_HAL_DRIVER; + +[PreviousGenFiles] +HeaderPath=../Inc +HeaderFiles=ffconf.h;bsp_driver_sd.h;sd_diskio.h;fatfs.h;fatfs_platform.h;stm32f7xx_it.h;stm32_assert.h;stm32f7xx_hal_conf.h;main.h; +SourcePath=../Src +SourceFiles=bsp_driver_sd.c;sd_diskio.c;fatfs.c;fatfs_platform.c;stm32f7xx_it.c;stm32f7xx_hal_msp.c;main.c; + +[PreviousUsedCubeIDEFiles] +SourceFiles=Src/main.c;Src/bsp_driver_sd.c;Src/sd_diskio.c;Src/fatfs.c;Src/fatfs_platform.c;Src/stm32f7xx_it.c;Src/stm32f7xx_hal_msp.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c;Middlewares/Third_Party/FatFs/src/diskio.c;Middlewares/Third_Party/FatFs/src/ff.c;Middlewares/Third_Party/FatFs/src/ff_gen_drv.c;Middlewares/Third_Party/FatFs/src/option/syscall.c;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;Src/system_stm32f7xx.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c;Middlewares/Third_Party/FatFs/src/diskio.c;Middlewares/Third_Party/FatFs/src/ff.c;Middlewares/Third_Party/FatFs/src/ff_gen_drv.c;Middlewares/Third_Party/FatFs/src/option/syscall.c;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;Src/system_stm32f7xx.c;;;Middlewares/Third_Party/FatFs/src/diskio.c;Middlewares/Third_Party/FatFs/src/ff.c;Middlewares/Third_Party/FatFs/src/ff_gen_drv.c;Middlewares/Third_Party/FatFs/src/option/syscall.c; +HeaderPath=Drivers/STM32F7xx_HAL_Driver/Inc;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy;Middlewares/Third_Party/FatFs/src;Drivers/CMSIS/Device/ST/STM32F7xx/Include;Drivers/CMSIS/Include;Inc; +CDefines=USE_FULL_LL_DRIVER;USE_HAL_DRIVER;STM32F767xx;USE_FULL_LL_DRIVER;USE_HAL_DRIVER;USE_HAL_DRIVER; + diff --git a/.project b/.project new file mode 100644 index 0000000..a430205 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + For_stm32_2023_12_08 + + + + + + + + diff --git a/.project.bak b/.project.bak new file mode 100644 index 0000000..a430205 --- /dev/null +++ b/.project.bak @@ -0,0 +1,11 @@ + + + For_stm32_2023_12_08 + + + + + + + + diff --git a/Drivers/CMSIS/Core/Include/cmsis_armcc.h b/Drivers/CMSIS/Core/Include/cmsis_armcc.h new file mode 100644 index 0000000..7d751fb --- /dev/null +++ b/Drivers/CMSIS/Core/Include/cmsis_armcc.h @@ -0,0 +1,865 @@ +/**************************************************************************//** + * @file cmsis_armcc.h + * @brief CMSIS compiler ARMCC (Arm Compiler 5) header file + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_ARMCC_H +#define __CMSIS_ARMCC_H + + +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677) + #error "Please use Arm Compiler Toolchain V4.0.677 or later!" +#endif + +/* CMSIS compiler control architecture macros */ +#if ((defined (__TARGET_ARCH_6_M ) && (__TARGET_ARCH_6_M == 1)) || \ + (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M == 1)) ) + #define __ARM_ARCH_6M__ 1 +#endif + +#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M == 1)) + #define __ARM_ARCH_7M__ 1 +#endif + +#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1)) + #define __ARM_ARCH_7EM__ 1 +#endif + + /* __ARM_ARCH_8M_BASE__ not applicable */ + /* __ARM_ARCH_8M_MAIN__ not applicable */ + + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE static __forceinline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __declspec(noreturn) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed)) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT __packed struct +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION __packed union +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x))) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr))) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr))) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __enable_irq(); */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); */ + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; +} + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_INLINE uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __ASM("ipsr"); + return(__regIPSR); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_INLINE uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __ASM("apsr"); + return(__regAPSR); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_INLINE uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __ASM("xpsr"); + return(__regXPSR); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_INLINE uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + return(__regProcessStackPointer); +} + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + __regProcessStackPointer = topOfProcStack; +} + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_INLINE uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + return(__regMainStackPointer); +} + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + __regMainStackPointer = topOfMainStack; +} + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xFFU); +} + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_INLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + register uint32_t __regBasePriMax __ASM("basepri_max"); + __regBasePriMax = (basePri & 0xFFU); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & (uint32_t)1U); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + return(__regfpscr); +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + __regfpscr = (fpscr); +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __nop + + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __wfi + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __sev + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +#define __ISB() do {\ + __schedule_barrier();\ + __isb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() do {\ + __schedule_barrier();\ + __dsb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() do {\ + __schedule_barrier();\ + __dmb(0xF);\ + __schedule_barrier();\ + } while (0U) + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV __rev + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} +#endif + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} +#endif + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +#define __ROR __ror + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __breakpoint(value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + #define __RBIT __rbit +#else +__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ + return result; +} +#endif + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ __clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +#else + #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +#else + #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +#else + #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXB(value, ptr) __strex(value, ptr) +#else + #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXH(value, ptr) __strex(value, ptr) +#else + #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXW(value, ptr) __strex(value, ptr) +#else + #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __clrex + + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) +{ + rrx r0, r0 + bx lr +} +#endif + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRBT(value, ptr) __strt(value, ptr) + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRHT(value, ptr) __strt(value, ptr) + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRT(value, ptr) __strt(value, ptr) + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +#define __SADD8 __sadd8 +#define __QADD8 __qadd8 +#define __SHADD8 __shadd8 +#define __UADD8 __uadd8 +#define __UQADD8 __uqadd8 +#define __UHADD8 __uhadd8 +#define __SSUB8 __ssub8 +#define __QSUB8 __qsub8 +#define __SHSUB8 __shsub8 +#define __USUB8 __usub8 +#define __UQSUB8 __uqsub8 +#define __UHSUB8 __uhsub8 +#define __SADD16 __sadd16 +#define __QADD16 __qadd16 +#define __SHADD16 __shadd16 +#define __UADD16 __uadd16 +#define __UQADD16 __uqadd16 +#define __UHADD16 __uhadd16 +#define __SSUB16 __ssub16 +#define __QSUB16 __qsub16 +#define __SHSUB16 __shsub16 +#define __USUB16 __usub16 +#define __UQSUB16 __uqsub16 +#define __UHSUB16 __uhsub16 +#define __SASX __sasx +#define __QASX __qasx +#define __SHASX __shasx +#define __UASX __uasx +#define __UQASX __uqasx +#define __UHASX __uhasx +#define __SSAX __ssax +#define __QSAX __qsax +#define __SHSAX __shsax +#define __USAX __usax +#define __UQSAX __uqsax +#define __UHSAX __uhsax +#define __USAD8 __usad8 +#define __USADA8 __usada8 +#define __SSAT16 __ssat16 +#define __USAT16 __usat16 +#define __UXTB16 __uxtb16 +#define __UXTAB16 __uxtab16 +#define __SXTB16 __sxtb16 +#define __SXTAB16 __sxtab16 +#define __SMUAD __smuad +#define __SMUADX __smuadx +#define __SMLAD __smlad +#define __SMLADX __smladx +#define __SMLALD __smlald +#define __SMLALDX __smlaldx +#define __SMUSD __smusd +#define __SMUSDX __smusdx +#define __SMLSD __smlsd +#define __SMLSDX __smlsdx +#define __SMLSLD __smlsld +#define __SMLSLDX __smlsldx +#define __SEL __sel +#define __QADD __qadd +#define __QSUB __qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ + ((int64_t)(ARG3) << 32U) ) >> 32U)) + +#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCC_H */ diff --git a/Drivers/CMSIS/Core/Include/cmsis_armclang.h b/Drivers/CMSIS/Core/Include/cmsis_armclang.h new file mode 100644 index 0000000..d8031b0 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/cmsis_armclang.h @@ -0,0 +1,1869 @@ +/**************************************************************************//** + * @file cmsis_armclang.h + * @brief CMSIS compiler armclang (Arm Compiler 6) header file + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +#ifndef __ARM_COMPAT_H +#include /* Compatibility header for Arm Compiler 5 intrinsics */ +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __enable_irq(); see arm_compat.h */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); see arm_compat.h */ + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \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"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq /* see arm_compat.h */ + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq /* see arm_compat.h */ + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)0U) +#endif + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#endif + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __builtin_arm_nop + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __builtin_arm_wfi + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_sev + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +#define __ISB() __builtin_arm_isb(0xF); + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __builtin_arm_dsb(0xF); + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF); + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __builtin_arm_rbit + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ (uint8_t)__builtin_clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __builtin_arm_ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __builtin_arm_usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/Drivers/CMSIS/Core/Include/cmsis_compiler.h b/Drivers/CMSIS/Core/Include/cmsis_compiler.h new file mode 100644 index 0000000..79a2cac --- /dev/null +++ b/Drivers/CMSIS/Core/Include/cmsis_compiler.h @@ -0,0 +1,266 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/Drivers/CMSIS/Core/Include/cmsis_gcc.h b/Drivers/CMSIS/Core/Include/cmsis_gcc.h new file mode 100644 index 0000000..1bd41a4 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/cmsis_gcc.h @@ -0,0 +1,2085 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.0.4 + * @date 09. April 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \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"); +} + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \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"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI() __ASM volatile ("wfi") + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE() __ASM volatile ("wfe") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __ASM volatile ("sev") + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ (uint8_t)__builtin_clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ + __extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/Drivers/CMSIS/Core/Include/cmsis_iccarm.h b/Drivers/CMSIS/Core/Include/cmsis_iccarm.h new file mode 100644 index 0000000..3c90a2c --- /dev/null +++ b/Drivers/CMSIS/Core/Include/cmsis_iccarm.h @@ -0,0 +1,935 @@ +/**************************************************************************//** + * @file cmsis_iccarm.h + * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file + * @version V5.0.7 + * @date 19. June 2018 + ******************************************************************************/ + +//------------------------------------------------------------------------------ +// +// Copyright (c) 2017-2018 IAR Systems +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//------------------------------------------------------------------------------ + + +#ifndef __CMSIS_ICCARM_H__ +#define __CMSIS_ICCARM_H__ + +#ifndef __ICCARM__ + #error This file should only be compiled by ICCARM +#endif + +#pragma system_include + +#define __IAR_FT _Pragma("inline=forced") __intrinsic + +#if (__VER__ >= 8000000) + #define __ICCARM_V8 1 +#else + #define __ICCARM_V8 0 +#endif + +#ifndef __ALIGNED + #if __ICCARM_V8 + #define __ALIGNED(x) __attribute__((aligned(x))) + #elif (__VER__ >= 7080000) + /* Needs IAR language extensions */ + #define __ALIGNED(x) __attribute__((aligned(x))) + #else + #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored. + #define __ALIGNED(x) + #endif +#endif + + +/* Define compiler macros for CPU architecture, used in CMSIS 5. + */ +#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__ +/* Macros already defined */ +#else + #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M' + #if __ARM_ARCH == 6 + #define __ARM_ARCH_6M__ 1 + #elif __ARM_ARCH == 7 + #if __ARM_FEATURE_DSP + #define __ARM_ARCH_7EM__ 1 + #else + #define __ARM_ARCH_7M__ 1 + #endif + #endif /* __ARM_ARCH */ + #endif /* __ARM_ARCH_PROFILE == 'M' */ +#endif + +/* Alternativ core deduction for older ICCARM's */ +#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \ + !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__) + #if defined(__ARM6M__) && (__CORE__ == __ARM6M__) + #define __ARM_ARCH_6M__ 1 + #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__) + #define __ARM_ARCH_7M__ 1 + #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__) + #define __ARM_ARCH_7EM__ 1 + #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #else + #error "Unknown target." + #endif +#endif + + + +#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1 + #define __IAR_M0_FAMILY 1 +#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1 + #define __IAR_M0_FAMILY 1 +#else + #define __IAR_M0_FAMILY 0 +#endif + + +#ifndef __ASM + #define __ASM __asm +#endif + +#ifndef __INLINE + #define __INLINE inline +#endif + +#ifndef __NO_RETURN + #if __ICCARM_V8 + #define __NO_RETURN __attribute__((__noreturn__)) + #else + #define __NO_RETURN _Pragma("object_attribute=__noreturn") + #endif +#endif + +#ifndef __PACKED + #if __ICCARM_V8 + #define __PACKED __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED __packed + #endif +#endif + +#ifndef __PACKED_STRUCT + #if __ICCARM_V8 + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_STRUCT __packed struct + #endif +#endif + +#ifndef __PACKED_UNION + #if __ICCARM_V8 + #define __PACKED_UNION union __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_UNION __packed union + #endif +#endif + +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif + +#ifndef __FORCEINLINE + #define __FORCEINLINE _Pragma("inline=forced") +#endif + +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __FORCEINLINE __STATIC_INLINE +#endif + +#ifndef __UNALIGNED_UINT16_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint16_t __iar_uint16_read(void const *ptr) +{ + return *(__packed uint16_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR) +#endif + + +#ifndef __UNALIGNED_UINT16_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val) +{ + *(__packed uint16_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint32_t __iar_uint32_read(void const *ptr) +{ + return *(__packed uint32_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR) +#endif + +#ifndef __UNALIGNED_UINT32_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val) +{ + *(__packed uint32_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32 /* deprecated */ +#pragma language=save +#pragma language=extended +__packed struct __iar_u32 { uint32_t v; }; +#pragma language=restore +#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v) +#endif + +#ifndef __USED + #if __ICCARM_V8 + #define __USED __attribute__((used)) + #else + #define __USED _Pragma("__root") + #endif +#endif + +#ifndef __WEAK + #if __ICCARM_V8 + #define __WEAK __attribute__((weak)) + #else + #define __WEAK _Pragma("__weak") + #endif +#endif + + +#ifndef __ICCARM_INTRINSICS_VERSION__ + #define __ICCARM_INTRINSICS_VERSION__ 0 +#endif + +#if __ICCARM_INTRINSICS_VERSION__ == 2 + + #if defined(__CLZ) + #undef __CLZ + #endif + #if defined(__REVSH) + #undef __REVSH + #endif + #if defined(__RBIT) + #undef __RBIT + #endif + #if defined(__SSAT) + #undef __SSAT + #endif + #if defined(__USAT) + #undef __USAT + #endif + + #include "iccarm_builtin.h" + + #define __disable_fault_irq __iar_builtin_disable_fiq + #define __disable_irq __iar_builtin_disable_interrupt + #define __enable_fault_irq __iar_builtin_enable_fiq + #define __enable_irq __iar_builtin_enable_interrupt + #define __arm_rsr __iar_builtin_rsr + #define __arm_wsr __iar_builtin_wsr + + + #define __get_APSR() (__arm_rsr("APSR")) + #define __get_BASEPRI() (__arm_rsr("BASEPRI")) + #define __get_CONTROL() (__arm_rsr("CONTROL")) + #define __get_FAULTMASK() (__arm_rsr("FAULTMASK")) + + #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + #define __get_FPSCR() (__arm_rsr("FPSCR")) + #define __set_FPSCR(VALUE) (__arm_wsr("FPSCR", (VALUE))) + #else + #define __get_FPSCR() ( 0 ) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #define __get_IPSR() (__arm_rsr("IPSR")) + #define __get_MSP() (__arm_rsr("MSP")) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __get_MSPLIM() (0U) + #else + #define __get_MSPLIM() (__arm_rsr("MSPLIM")) + #endif + #define __get_PRIMASK() (__arm_rsr("PRIMASK")) + #define __get_PSP() (__arm_rsr("PSP")) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __get_PSPLIM() (0U) + #else + #define __get_PSPLIM() (__arm_rsr("PSPLIM")) + #endif + + #define __get_xPSR() (__arm_rsr("xPSR")) + + #define __set_BASEPRI(VALUE) (__arm_wsr("BASEPRI", (VALUE))) + #define __set_BASEPRI_MAX(VALUE) (__arm_wsr("BASEPRI_MAX", (VALUE))) + #define __set_CONTROL(VALUE) (__arm_wsr("CONTROL", (VALUE))) + #define __set_FAULTMASK(VALUE) (__arm_wsr("FAULTMASK", (VALUE))) + #define __set_MSP(VALUE) (__arm_wsr("MSP", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __set_MSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_MSPLIM(VALUE) (__arm_wsr("MSPLIM", (VALUE))) + #endif + #define __set_PRIMASK(VALUE) (__arm_wsr("PRIMASK", (VALUE))) + #define __set_PSP(VALUE) (__arm_wsr("PSP", (VALUE))) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __set_PSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_PSPLIM(VALUE) (__arm_wsr("PSPLIM", (VALUE))) + #endif + + #define __TZ_get_CONTROL_NS() (__arm_rsr("CONTROL_NS")) + #define __TZ_set_CONTROL_NS(VALUE) (__arm_wsr("CONTROL_NS", (VALUE))) + #define __TZ_get_PSP_NS() (__arm_rsr("PSP_NS")) + #define __TZ_set_PSP_NS(VALUE) (__arm_wsr("PSP_NS", (VALUE))) + #define __TZ_get_MSP_NS() (__arm_rsr("MSP_NS")) + #define __TZ_set_MSP_NS(VALUE) (__arm_wsr("MSP_NS", (VALUE))) + #define __TZ_get_SP_NS() (__arm_rsr("SP_NS")) + #define __TZ_set_SP_NS(VALUE) (__arm_wsr("SP_NS", (VALUE))) + #define __TZ_get_PRIMASK_NS() (__arm_rsr("PRIMASK_NS")) + #define __TZ_set_PRIMASK_NS(VALUE) (__arm_wsr("PRIMASK_NS", (VALUE))) + #define __TZ_get_BASEPRI_NS() (__arm_rsr("BASEPRI_NS")) + #define __TZ_set_BASEPRI_NS(VALUE) (__arm_wsr("BASEPRI_NS", (VALUE))) + #define __TZ_get_FAULTMASK_NS() (__arm_rsr("FAULTMASK_NS")) + #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr("FAULTMASK_NS", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __TZ_get_PSPLIM_NS() (0U) + #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE)) + #else + #define __TZ_get_PSPLIM_NS() (__arm_rsr("PSPLIM_NS")) + #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr("PSPLIM_NS", (VALUE))) + #endif + + #define __TZ_get_MSPLIM_NS() (__arm_rsr("MSPLIM_NS")) + #define __TZ_set_MSPLIM_NS(VALUE) (__arm_wsr("MSPLIM_NS", (VALUE))) + + #define __NOP __iar_builtin_no_operation + + #define __CLZ __iar_builtin_CLZ + #define __CLREX __iar_builtin_CLREX + + #define __DMB __iar_builtin_DMB + #define __DSB __iar_builtin_DSB + #define __ISB __iar_builtin_ISB + + #define __LDREXB __iar_builtin_LDREXB + #define __LDREXH __iar_builtin_LDREXH + #define __LDREXW __iar_builtin_LDREX + + #define __RBIT __iar_builtin_RBIT + #define __REV __iar_builtin_REV + #define __REV16 __iar_builtin_REV16 + + __IAR_FT int16_t __REVSH(int16_t val) + { + return (int16_t) __iar_builtin_REVSH(val); + } + + #define __ROR __iar_builtin_ROR + #define __RRX __iar_builtin_RRX + + #define __SEV __iar_builtin_SEV + + #if !__IAR_M0_FAMILY + #define __SSAT __iar_builtin_SSAT + #endif + + #define __STREXB __iar_builtin_STREXB + #define __STREXH __iar_builtin_STREXH + #define __STREXW __iar_builtin_STREX + + #if !__IAR_M0_FAMILY + #define __USAT __iar_builtin_USAT + #endif + + #define __WFE __iar_builtin_WFE + #define __WFI __iar_builtin_WFI + + #if __ARM_MEDIA__ + #define __SADD8 __iar_builtin_SADD8 + #define __QADD8 __iar_builtin_QADD8 + #define __SHADD8 __iar_builtin_SHADD8 + #define __UADD8 __iar_builtin_UADD8 + #define __UQADD8 __iar_builtin_UQADD8 + #define __UHADD8 __iar_builtin_UHADD8 + #define __SSUB8 __iar_builtin_SSUB8 + #define __QSUB8 __iar_builtin_QSUB8 + #define __SHSUB8 __iar_builtin_SHSUB8 + #define __USUB8 __iar_builtin_USUB8 + #define __UQSUB8 __iar_builtin_UQSUB8 + #define __UHSUB8 __iar_builtin_UHSUB8 + #define __SADD16 __iar_builtin_SADD16 + #define __QADD16 __iar_builtin_QADD16 + #define __SHADD16 __iar_builtin_SHADD16 + #define __UADD16 __iar_builtin_UADD16 + #define __UQADD16 __iar_builtin_UQADD16 + #define __UHADD16 __iar_builtin_UHADD16 + #define __SSUB16 __iar_builtin_SSUB16 + #define __QSUB16 __iar_builtin_QSUB16 + #define __SHSUB16 __iar_builtin_SHSUB16 + #define __USUB16 __iar_builtin_USUB16 + #define __UQSUB16 __iar_builtin_UQSUB16 + #define __UHSUB16 __iar_builtin_UHSUB16 + #define __SASX __iar_builtin_SASX + #define __QASX __iar_builtin_QASX + #define __SHASX __iar_builtin_SHASX + #define __UASX __iar_builtin_UASX + #define __UQASX __iar_builtin_UQASX + #define __UHASX __iar_builtin_UHASX + #define __SSAX __iar_builtin_SSAX + #define __QSAX __iar_builtin_QSAX + #define __SHSAX __iar_builtin_SHSAX + #define __USAX __iar_builtin_USAX + #define __UQSAX __iar_builtin_UQSAX + #define __UHSAX __iar_builtin_UHSAX + #define __USAD8 __iar_builtin_USAD8 + #define __USADA8 __iar_builtin_USADA8 + #define __SSAT16 __iar_builtin_SSAT16 + #define __USAT16 __iar_builtin_USAT16 + #define __UXTB16 __iar_builtin_UXTB16 + #define __UXTAB16 __iar_builtin_UXTAB16 + #define __SXTB16 __iar_builtin_SXTB16 + #define __SXTAB16 __iar_builtin_SXTAB16 + #define __SMUAD __iar_builtin_SMUAD + #define __SMUADX __iar_builtin_SMUADX + #define __SMMLA __iar_builtin_SMMLA + #define __SMLAD __iar_builtin_SMLAD + #define __SMLADX __iar_builtin_SMLADX + #define __SMLALD __iar_builtin_SMLALD + #define __SMLALDX __iar_builtin_SMLALDX + #define __SMUSD __iar_builtin_SMUSD + #define __SMUSDX __iar_builtin_SMUSDX + #define __SMLSD __iar_builtin_SMLSD + #define __SMLSDX __iar_builtin_SMLSDX + #define __SMLSLD __iar_builtin_SMLSLD + #define __SMLSLDX __iar_builtin_SMLSLDX + #define __SEL __iar_builtin_SEL + #define __QADD __iar_builtin_QADD + #define __QSUB __iar_builtin_QSUB + #define __PKHBT __iar_builtin_PKHBT + #define __PKHTB __iar_builtin_PKHTB + #endif + +#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #define __CLZ __cmsis_iar_clz_not_active + #define __SSAT __cmsis_iar_ssat_not_active + #define __USAT __cmsis_iar_usat_not_active + #define __RBIT __cmsis_iar_rbit_not_active + #define __get_APSR __cmsis_iar_get_APSR_not_active + #endif + + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #define __get_FPSCR __cmsis_iar_get_FPSR_not_active + #define __set_FPSCR __cmsis_iar_set_FPSR_not_active + #endif + + #ifdef __INTRINSICS_INCLUDED + #error intrinsics.h is already included previously! + #endif + + #include + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #undef __CLZ + #undef __SSAT + #undef __USAT + #undef __RBIT + #undef __get_APSR + + __STATIC_INLINE uint8_t __CLZ(uint32_t data) + { + if (data == 0U) { return 32U; } + + uint32_t count = 0U; + uint32_t mask = 0x80000000U; + + while ((data & mask) == 0U) + { + count += 1U; + mask = mask >> 1U; + } + return count; + } + + __STATIC_INLINE uint32_t __RBIT(uint32_t v) + { + uint8_t sc = 31U; + uint32_t r = v; + for (v >>= 1U; v; v >>= 1U) + { + r <<= 1U; + r |= v & 1U; + sc--; + } + return (r << sc); + } + + __STATIC_INLINE uint32_t __get_APSR(void) + { + uint32_t res; + __asm("MRS %0,APSR" : "=r" (res)); + return res; + } + + #endif + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #undef __get_FPSCR + #undef __set_FPSCR + #define __get_FPSCR() (0) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #pragma diag_suppress=Pe940 + #pragma diag_suppress=Pe177 + + #define __enable_irq __enable_interrupt + #define __disable_irq __disable_interrupt + #define __NOP __no_operation + + #define __get_xPSR __get_PSR + + #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0) + + __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr) + { + return __LDREX((unsigned long *)ptr); + } + + __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr) + { + return __STREX(value, (unsigned long *)ptr); + } + #endif + + + /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + #if (__CORTEX_M >= 0x03) + + __IAR_FT uint32_t __RRX(uint32_t value) + { + uint32_t result; + __ASM("RRX %0, %1" : "=r"(result) : "r" (value) : "cc"); + return(result); + } + + __IAR_FT void __set_BASEPRI_MAX(uint32_t value) + { + __asm volatile("MSR BASEPRI_MAX,%0"::"r" (value)); + } + + + #define __enable_fault_irq __enable_fiq + #define __disable_fault_irq __disable_fiq + + + #endif /* (__CORTEX_M >= 0x03) */ + + __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2) + { + return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2)); + } + + #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + __IAR_FT uint32_t __get_MSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,MSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_MSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR MSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __get_PSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_PSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_CONTROL_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,CONTROL_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_CONTROL_NS(uint32_t value) + { + __asm volatile("MSR CONTROL_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PSP_NS(uint32_t value) + { + __asm volatile("MSR PSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_MSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSP_NS(uint32_t value) + { + __asm volatile("MSR MSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_SP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,SP_NS" : "=r" (res)); + return res; + } + __IAR_FT void __TZ_set_SP_NS(uint32_t value) + { + __asm volatile("MSR SP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PRIMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PRIMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PRIMASK_NS(uint32_t value) + { + __asm volatile("MSR PRIMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_BASEPRI_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,BASEPRI_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_BASEPRI_NS(uint32_t value) + { + __asm volatile("MSR BASEPRI_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_FAULTMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,FAULTMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_FAULTMASK_NS(uint32_t value) + { + __asm volatile("MSR FAULTMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSPLIM_NS(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM_NS" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __TZ_set_PSPLIM_NS(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM_NS,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_MSPLIM_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSPLIM_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSPLIM_NS(uint32_t value) + { + __asm volatile("MSR MSPLIM_NS,%0" :: "r" (value)); + } + + #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#endif /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + +#define __BKPT(value) __asm volatile ("BKPT %0" : : "i"(value)) + +#if __IAR_M0_FAMILY + __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) + { + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; + } + + __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) + { + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; + } +#endif + +#if (__CORTEX_M >= 0x03) /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + + __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr) + { + uint32_t res; + __ASM("LDRBT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr) + { + uint32_t res; + __ASM("LDRHT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDRT(volatile uint32_t *addr) + { + uint32_t res; + __ASM("LDRT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return res; + } + + __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr) + { + __ASM("STRBT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr) + { + __ASM("STRHT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr) + { + __ASM("STRT %1, [%0]" : : "r" (addr), "r" (value) : "memory"); + } + +#endif /* (__CORTEX_M >= 0x03) */ + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + + __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDA(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDA %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr) + { + __ASM volatile ("STLB %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr) + { + __ASM volatile ("STLH %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr) + { + __ASM volatile ("STL %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEX %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXB %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXH %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEX %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + +#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#undef __IAR_FT +#undef __IAR_M0_FAMILY +#undef __ICCARM_V8 + +#pragma diag_default=Pe940 +#pragma diag_default=Pe177 + +#endif /* __CMSIS_ICCARM_H__ */ diff --git a/Drivers/CMSIS/Core/Include/cmsis_version.h b/Drivers/CMSIS/Core/Include/cmsis_version.h new file mode 100644 index 0000000..ae3f2e3 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.0.2 + * @date 19. April 2017 + ******************************************************************************/ +/* + * Copyright (c) 2009-2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/Drivers/CMSIS/Core/Include/core_armv8mbl.h b/Drivers/CMSIS/Core/Include/core_armv8mbl.h new file mode 100644 index 0000000..ec76ab2 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_armv8mbl.h @@ -0,0 +1,1918 @@ +/**************************************************************************//** + * @file core_armv8mbl.h + * @brief CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 22. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV8MBL_H_GENERIC +#define __CORE_ARMV8MBL_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MBL + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __ARMv8MBL_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MBL_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MBL_CMSIS_VERSION ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MBL_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M ( 2U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MBL_H_DEPENDANT +#define __CORE_ARMV8MBL_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MBL_REV + #define __ARMv8MBL_REV 0x0000U + #warning "__ARMv8MBL_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MBL */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_armv8mml.h b/Drivers/CMSIS/Core/Include/core_armv8mml.h new file mode 100644 index 0000000..2d0f106 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_armv8mml.h @@ -0,0 +1,2927 @@ +/**************************************************************************//** + * @file core_armv8mml.h + * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 06. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV8MML_H_GENERIC +#define __CORE_ARMV8MML_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MML + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS Armv8MML definitions */ +#define __ARMv8MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MML_CMSIS_VERSION ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (81U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MML_H_DEPENDANT +#define __CORE_ARMV8MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MML_REV + #define __ARMv8MML_REV 0x0000U + #warning "__ARMv8MML_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_cm0.h b/Drivers/CMSIS/Core/Include/core_cm0.h new file mode 100644 index 0000000..6f82227 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_cm0.h @@ -0,0 +1,949 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V5.0.5 + * @date 28. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0_H_GENERIC +#define __CORE_CM0_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M0 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0 definitions */ +#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ + __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0_H_DEPENDANT +#define __CORE_CM0_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0_REV + #define __CM0_REV 0x0000U + #warning "__CM0_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M0 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_cm0plus.h b/Drivers/CMSIS/Core/Include/core_cm0plus.h new file mode 100644 index 0000000..b9377e8 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_cm0plus.h @@ -0,0 +1,1083 @@ +/**************************************************************************//** + * @file core_cm0plus.h + * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File + * @version V5.0.6 + * @date 28. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0PLUS_H_GENERIC +#define __CORE_CM0PLUS_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex-M0+ + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0+ definitions */ +#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0PLUS_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \ + __CM0PLUS_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0PLUS_H_DEPENDANT +#define __CORE_CM0PLUS_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0PLUS_REV + #define __CM0PLUS_REV 0x0000U + #warning "__CM0PLUS_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex-M0+ */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 8U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0+ header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0+ */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; + +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_cm1.h b/Drivers/CMSIS/Core/Include/core_cm1.h new file mode 100644 index 0000000..fd1c407 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_cm1.h @@ -0,0 +1,976 @@ +/**************************************************************************//** + * @file core_cm1.h + * @brief CMSIS Cortex-M1 Core Peripheral Access Layer Header File + * @version V1.0.0 + * @date 23. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM1_H_GENERIC +#define __CORE_CM1_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M1 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM1 definitions */ +#define __CM1_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM1_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM1_CMSIS_VERSION ((__CM1_CMSIS_VERSION_MAIN << 16U) | \ + __CM1_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (1U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM1_H_DEPENDANT +#define __CORE_CM1_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM1_REV + #define __CM1_REV 0x0100U + #warning "__CM1_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M1 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_ITCMUAEN_Pos 4U /*!< ACTLR: Instruction TCM Upper Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMUAEN_Msk (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos) /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */ + +#define SCnSCB_ACTLR_ITCMLAEN_Pos 3U /*!< ACTLR: Instruction TCM Lower Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMLAEN_Msk (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos) /*!< ACTLR: Instruction TCM Lower Alias Enable Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M1 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M1 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M1 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_cm23.h b/Drivers/CMSIS/Core/Include/core_cm23.h new file mode 100644 index 0000000..8202a8d --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_cm23.h @@ -0,0 +1,1993 @@ +/**************************************************************************//** + * @file core_cm23.h + * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 22. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM23_H_GENERIC +#define __CORE_CM23_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M23 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __CM23_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM23_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM23_CMSIS_VERSION ((__CM23_CMSIS_VERSION_MAIN << 16U) | \ + __CM23_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (23U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM23_H_DEPENDANT +#define __CORE_CM23_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM23_REV + #define __CM23_REV 0x0000U + #warning "__CM23_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M23 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for Cortex-M23 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for Cortex-M23 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_cm3.h b/Drivers/CMSIS/Core/Include/core_cm3.h new file mode 100644 index 0000000..b0dfbd3 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_cm3.h @@ -0,0 +1,1941 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM3_H_GENERIC +#define __CORE_CM3_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M3 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16U) | \ + __CM3_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (3U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200U + #warning "__CM3_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M3 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#if defined (__CM3_REV) && (__CM3_REV < 0x0201U) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1U]; +#endif +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_cm33.h b/Drivers/CMSIS/Core/Include/core_cm33.h new file mode 100644 index 0000000..02f82e2 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_cm33.h @@ -0,0 +1,3002 @@ +/**************************************************************************//** + * @file core_cm33.h + * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File + * @version V5.0.9 + * @date 06. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM33_H_GENERIC +#define __CORE_CM33_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M33 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM33 definitions */ +#define __CM33_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM33_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM33_CMSIS_VERSION ((__CM33_CMSIS_VERSION_MAIN << 16U) | \ + __CM33_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (33U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_PCS_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM33_H_DEPENDANT +#define __CORE_CM33_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM33_REV + #define __CM33_REV 0x0000U + #warning "__CM33_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M33 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_cm4.h b/Drivers/CMSIS/Core/Include/core_cm4.h new file mode 100644 index 0000000..308b868 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_cm4.h @@ -0,0 +1,2129 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M4 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16U) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (4U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000U + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_cm7.h b/Drivers/CMSIS/Core/Include/core_cm7.h new file mode 100644 index 0000000..ada6c2a --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_cm7.h @@ -0,0 +1,2671 @@ +/**************************************************************************//** + * @file core_cm7.h + * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM7_H_GENERIC +#define __CORE_CM7_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M7 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM7 definitions */ +#define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (7U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM7_H_DEPENDANT +#define __CORE_CM7_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM7_REV + #define __CM7_REV 0x0000U + #warning "__CM7_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M7 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED3[93U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: Branch prediction enable bit Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: Branch prediction enable bit Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: Instruction cache enable bit Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: Instruction cache enable bit Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: Cache enable bit Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: Cache enable bit Mask */ + +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: DISRAMODE Position */ +#define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: DISRAMODE Mask */ + +#define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED3[981U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = SCB->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## Cache functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_INLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_INLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_INLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_INLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_INLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_INLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_INLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_INLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_InvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t)addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCIMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t) addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCCMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t) addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCCIMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/*@} end of CMSIS_Core_CacheFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_sc000.h b/Drivers/CMSIS/Core/Include/core_sc000.h new file mode 100644 index 0000000..9086c64 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_sc000.h @@ -0,0 +1,1022 @@ +/**************************************************************************//** + * @file core_sc000.h + * @brief CMSIS SC000 Core Peripheral Access Layer Header File + * @version V5.0.5 + * @date 28. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC000_H_GENERIC +#define __CORE_SC000_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC000 definitions */ +#define __SC000_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC000_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC000_CMSIS_VERSION ((__SC000_CMSIS_VERSION_MAIN << 16U) | \ + __SC000_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (000U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC000_H_DEPENDANT +#define __CORE_SC000_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC000_REV + #define __SC000_REV 0x0000U + #warning "__SC000_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC000 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + uint32_t RESERVED1[154U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the SC000 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for SC000 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for SC000 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for SC000 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/core_sc300.h b/Drivers/CMSIS/Core/Include/core_sc300.h new file mode 100644 index 0000000..665822d --- /dev/null +++ b/Drivers/CMSIS/Core/Include/core_sc300.h @@ -0,0 +1,1915 @@ +/**************************************************************************//** + * @file core_sc300.h + * @brief CMSIS SC300 Core Peripheral Access Layer Header File + * @version V5.0.6 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC300_H_GENERIC +#define __CORE_SC300_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC3000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC300 definitions */ +#define __SC300_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC300_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC300_CMSIS_VERSION ((__SC300_CMSIS_VERSION_MAIN << 16U) | \ + __SC300_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (300U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC300_H_DEPENDANT +#define __CORE_SC300_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC300_REV + #define __SC300_REV 0x0000U + #warning "__SC300_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC300 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED1[129U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + uint32_t RESERVED1[1U]; +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core/Include/mpu_armv7.h b/Drivers/CMSIS/Core/Include/mpu_armv7.h new file mode 100644 index 0000000..7d4b600 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/mpu_armv7.h @@ -0,0 +1,270 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField ) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable ) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable ) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable ) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec ) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) ) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if non-shareable) or 010b (if shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void orderedCpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + orderedCpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + orderedCpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/Drivers/CMSIS/Core/Include/mpu_armv8.h b/Drivers/CMSIS/Core/Include/mpu_armv8.h new file mode 100644 index 0000000..99ee9f9 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/mpu_armv8.h @@ -0,0 +1,333 @@ +/****************************************************************************** + * @file mpu_armv8.h + * @brief CMSIS MPU API for Armv8-M MPU + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV8_H +#define ARM_MPU_ARMV8_H + +/** \brief Attribute for device memory (outer only) */ +#define ARM_MPU_ATTR_DEVICE ( 0U ) + +/** \brief Attribute for non-cacheable, normal memory */ +#define ARM_MPU_ATTR_NON_CACHEABLE ( 4U ) + +/** \brief Attribute for normal memory (outer and inner) +* \param NT Non-Transient: Set to 1 for non-transient data. +* \param WB Write-Back: Set to 1 to use write-back update policy. +* \param RA Read Allocation: Set to 1 to use cache allocation on read miss. +* \param WA Write Allocation: Set to 1 to use cache allocation on write miss. +*/ +#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \ + (((NT & 1U) << 3U) | ((WB & 1U) << 2U) | ((RA & 1U) << 1U) | (WA & 1U)) + +/** \brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U) + +/** \brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRE (1U) + +/** \brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGRE (2U) + +/** \brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_GRE (3U) + +/** \brief Memory Attribute +* \param O Outer memory attributes +* \param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes +*/ +#define ARM_MPU_ATTR(O, I) (((O & 0xFU) << 4U) | (((O & 0xFU) != 0U) ? (I & 0xFU) : ((I & 0x3U) << 2U))) + +/** \brief Normal memory non-shareable */ +#define ARM_MPU_SH_NON (0U) + +/** \brief Normal memory outer shareable */ +#define ARM_MPU_SH_OUTER (2U) + +/** \brief Normal memory inner shareable */ +#define ARM_MPU_SH_INNER (3U) + +/** \brief Memory access permissions +* \param RO Read-Only: Set to 1 for read-only memory. +* \param NP Non-Privileged: Set to 1 for non-privileged memory. +*/ +#define ARM_MPU_AP_(RO, NP) (((RO & 1U) << 1U) | (NP & 1U)) + +/** \brief Region Base Address Register value +* \param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned. +* \param SH Defines the Shareability domain for this memory region. +* \param RO Read-Only: Set to 1 for a read-only memory region. +* \param NP Non-Privileged: Set to 1 for a non-privileged memory region. +* \oaram XN eXecute Never: Set to 1 for a non-executable memory region. +*/ +#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \ + ((BASE & MPU_RBAR_BASE_Msk) | \ + ((SH << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \ + ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \ + ((XN << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk)) + +/** \brief Region Limit Address Register value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR(LIMIT, IDX) \ + ((LIMIT & MPU_RLAR_LIMIT_Msk) | \ + ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; /*!< Region Base Address Register value */ + uint32_t RLAR; /*!< Region Limit Address Register value */ +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +#ifdef MPU_NS +/** Enable the Non-secure MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the Non-secure MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable_NS(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU_NS->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} +#endif + +/** Set the memory attribute encoding to the given MPU. +* \param mpu Pointer to the MPU to be configured. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr) +{ + const uint8_t reg = idx / 4U; + const uint32_t pos = ((idx % 4U) * 8U); + const uint32_t mask = 0xFFU << pos; + + if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) { + return; // invalid index + } + + mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask)); +} + +/** Set the memory attribute encoding. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU, idx, attr); +} + +#ifdef MPU_NS +/** Set the memory attribute encoding to the Non-secure MPU. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr); +} +#endif + +/** Clear and disable the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr) +{ + mpu->RNR = rnr; + mpu->RLAR = 0U; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU, rnr); +} + +#ifdef MPU_NS +/** Clear and disable the given Non-secure MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU_NS, rnr); +} +#endif + +/** Configure the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + mpu->RNR = rnr; + mpu->RBAR = rbar; + mpu->RLAR = rlar; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar); +} + +#ifdef MPU_NS +/** Configure the given Non-secure MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar); +} +#endif + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void orderedCpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table to the given MPU. +* \param mpu Pointer to the MPU registers to be used. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + if (cnt == 1U) { + mpu->RNR = rnr; + orderedCpy(&(mpu->RBAR), &(table->RBAR), rowWordSize); + } else { + uint32_t rnrBase = rnr & ~(MPU_TYPE_RALIASES-1U); + uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES; + + mpu->RNR = rnrBase; + while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) { + uint32_t c = MPU_TYPE_RALIASES - rnrOffset; + orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize); + table += c; + cnt -= c; + rnrOffset = 0U; + rnrBase += MPU_TYPE_RALIASES; + mpu->RNR = rnrBase; + } + + orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize); + } +} + +/** Load the given number of MPU regions from a table. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU, rnr, table, cnt); +} + +#ifdef MPU_NS +/** Load the given number of MPU regions from a table to the Non-secure MPU. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt); +} +#endif + +#endif + diff --git a/Drivers/CMSIS/Core/Include/tz_context.h b/Drivers/CMSIS/Core/Include/tz_context.h new file mode 100644 index 0000000..d4c1474 --- /dev/null +++ b/Drivers/CMSIS/Core/Include/tz_context.h @@ -0,0 +1,70 @@ +/****************************************************************************** + * @file tz_context.h + * @brief Context Management for Armv8-M TrustZone + * @version V1.0.1 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef TZ_CONTEXT_H +#define TZ_CONTEXT_H + +#include + +#ifndef TZ_MODULEID_T +#define TZ_MODULEID_T +/// \details Data type that identifies secure software modules called by a process. +typedef uint32_t TZ_ModuleId_t; +#endif + +/// \details TZ Memory ID identifies an allocated memory slot. +typedef uint32_t TZ_MemoryId_t; + +/// Initialize secure context memory system +/// \return execution status (1: success, 0: error) +uint32_t TZ_InitContextSystem_S (void); + +/// Allocate context memory for calling secure software modules in TrustZone +/// \param[in] module identifies software modules called from non-secure mode +/// \return value != 0 id TrustZone memory slot identifier +/// \return value 0 no memory available or internal error +TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); + +/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); + +/// Load secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); + +/// Store secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); + +#endif // TZ_CONTEXT_H diff --git a/Drivers/CMSIS/Core/Template/ARMv8-M/main_s.c b/Drivers/CMSIS/Core/Template/ARMv8-M/main_s.c new file mode 100644 index 0000000..cde9ff0 --- /dev/null +++ b/Drivers/CMSIS/Core/Template/ARMv8-M/main_s.c @@ -0,0 +1,58 @@ +/****************************************************************************** + * @file main_s.c + * @brief Code template for secure main function + * @version V1.1.1 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2013-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Use CMSE intrinsics */ +#include + +#include "RTE_Components.h" +#include CMSIS_device_header + +/* TZ_START_NS: Start address of non-secure application */ +#ifndef TZ_START_NS +#define TZ_START_NS (0x200000U) +#endif + +/* typedef for non-secure callback functions */ +typedef void (*funcptr_void) (void) __attribute__((cmse_nonsecure_call)); + +/* Secure main() */ +int main(void) { + funcptr_void NonSecure_ResetHandler; + + /* Add user setup code for secure part here*/ + + /* Set non-secure main stack (MSP_NS) */ + __TZ_set_MSP_NS(*((uint32_t *)(TZ_START_NS))); + + /* Get non-secure reset handler */ + NonSecure_ResetHandler = (funcptr_void)(*((uint32_t *)((TZ_START_NS) + 4U))); + + /* Start non-secure state software application */ + NonSecure_ResetHandler(); + + /* Non-secure software does not return, this code is not executed */ + while (1) { + __NOP(); + } +} diff --git a/Drivers/CMSIS/Core/Template/ARMv8-M/tz_context.c b/Drivers/CMSIS/Core/Template/ARMv8-M/tz_context.c new file mode 100644 index 0000000..298bbf7 --- /dev/null +++ b/Drivers/CMSIS/Core/Template/ARMv8-M/tz_context.c @@ -0,0 +1,200 @@ +/****************************************************************************** + * @file tz_context.c + * @brief Context Management for Armv8-M TrustZone - Sample implementation + * @version V1.1.1 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2016-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "RTE_Components.h" +#include CMSIS_device_header +#include "tz_context.h" + +/// Number of process slots (threads may call secure library code) +#ifndef TZ_PROCESS_STACK_SLOTS +#define TZ_PROCESS_STACK_SLOTS 8U +#endif + +/// Stack size of the secure library code +#ifndef TZ_PROCESS_STACK_SIZE +#define TZ_PROCESS_STACK_SIZE 256U +#endif + +typedef struct { + uint32_t sp_top; // stack space top + uint32_t sp_limit; // stack space limit + uint32_t sp; // current stack pointer +} stack_info_t; + +static stack_info_t ProcessStackInfo [TZ_PROCESS_STACK_SLOTS]; +static uint64_t ProcessStackMemory[TZ_PROCESS_STACK_SLOTS][TZ_PROCESS_STACK_SIZE/8U]; +static uint32_t ProcessStackFreeSlot = 0xFFFFFFFFU; + + +/// Initialize secure context memory system +/// \return execution status (1: success, 0: error) +__attribute__((cmse_nonsecure_entry)) +uint32_t TZ_InitContextSystem_S (void) { + uint32_t n; + + if (__get_IPSR() == 0U) { + return 0U; // Thread Mode + } + + for (n = 0U; n < TZ_PROCESS_STACK_SLOTS; n++) { + ProcessStackInfo[n].sp = 0U; + ProcessStackInfo[n].sp_limit = (uint32_t)&ProcessStackMemory[n]; + ProcessStackInfo[n].sp_top = (uint32_t)&ProcessStackMemory[n] + TZ_PROCESS_STACK_SIZE; + *((uint32_t *)ProcessStackMemory[n]) = n + 1U; + } + *((uint32_t *)ProcessStackMemory[--n]) = 0xFFFFFFFFU; + + ProcessStackFreeSlot = 0U; + + // Default process stack pointer and stack limit + __set_PSPLIM((uint32_t)ProcessStackMemory); + __set_PSP ((uint32_t)ProcessStackMemory); + + // Privileged Thread Mode using PSP + __set_CONTROL(0x02U); + + return 1U; // Success +} + + +/// Allocate context memory for calling secure software modules in TrustZone +/// \param[in] module identifies software modules called from non-secure mode +/// \return value != 0 id TrustZone memory slot identifier +/// \return value 0 no memory available or internal error +__attribute__((cmse_nonsecure_entry)) +TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module) { + uint32_t slot; + + (void)module; // Ignore (fixed Stack size) + + if (__get_IPSR() == 0U) { + return 0U; // Thread Mode + } + + if (ProcessStackFreeSlot == 0xFFFFFFFFU) { + return 0U; // No slot available + } + + slot = ProcessStackFreeSlot; + ProcessStackFreeSlot = *((uint32_t *)ProcessStackMemory[slot]); + + ProcessStackInfo[slot].sp = ProcessStackInfo[slot].sp_top; + + return (slot + 1U); +} + + +/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +__attribute__((cmse_nonsecure_entry)) +uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id) { + uint32_t slot; + + if (__get_IPSR() == 0U) { + return 0U; // Thread Mode + } + + if ((id == 0U) || (id > TZ_PROCESS_STACK_SLOTS)) { + return 0U; // Invalid ID + } + + slot = id - 1U; + + if (ProcessStackInfo[slot].sp == 0U) { + return 0U; // Inactive slot + } + ProcessStackInfo[slot].sp = 0U; + + *((uint32_t *)ProcessStackMemory[slot]) = ProcessStackFreeSlot; + ProcessStackFreeSlot = slot; + + return 1U; // Success +} + + +/// Load secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +__attribute__((cmse_nonsecure_entry)) +uint32_t TZ_LoadContext_S (TZ_MemoryId_t id) { + uint32_t slot; + + if ((__get_IPSR() == 0U) || ((__get_CONTROL() & 2U) == 0U)) { + return 0U; // Thread Mode or using Main Stack for threads + } + + if ((id == 0U) || (id > TZ_PROCESS_STACK_SLOTS)) { + return 0U; // Invalid ID + } + + slot = id - 1U; + + if (ProcessStackInfo[slot].sp == 0U) { + return 0U; // Inactive slot + } + + // Setup process stack pointer and stack limit + __set_PSPLIM(ProcessStackInfo[slot].sp_limit); + __set_PSP (ProcessStackInfo[slot].sp); + + return 1U; // Success +} + + +/// Store secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +__attribute__((cmse_nonsecure_entry)) +uint32_t TZ_StoreContext_S (TZ_MemoryId_t id) { + uint32_t slot; + uint32_t sp; + + if ((__get_IPSR() == 0U) || ((__get_CONTROL() & 2U) == 0U)) { + return 0U; // Thread Mode or using Main Stack for threads + } + + if ((id == 0U) || (id > TZ_PROCESS_STACK_SLOTS)) { + return 0U; // Invalid ID + } + + slot = id - 1U; + + if (ProcessStackInfo[slot].sp == 0U) { + return 0U; // Inactive slot + } + + sp = __get_PSP(); + if ((sp < ProcessStackInfo[slot].sp_limit) || + (sp > ProcessStackInfo[slot].sp_top)) { + return 0U; // SP out of range + } + ProcessStackInfo[slot].sp = sp; + + // Default process stack pointer and stack limit + __set_PSPLIM((uint32_t)ProcessStackMemory); + __set_PSP ((uint32_t)ProcessStackMemory); + + return 1U; // Success +} diff --git a/Drivers/CMSIS/Core_A/Include/cmsis_armcc.h b/Drivers/CMSIS/Core_A/Include/cmsis_armcc.h new file mode 100644 index 0000000..b2ccb1f --- /dev/null +++ b/Drivers/CMSIS/Core_A/Include/cmsis_armcc.h @@ -0,0 +1,544 @@ +/**************************************************************************//** + * @file cmsis_armcc.h + * @brief CMSIS compiler specific macros, functions, instructions + * @version V1.0.2 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_ARMCC_H +#define __CMSIS_ARMCC_H + +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677) + #error "Please use Arm Compiler Toolchain V4.0.677 or later!" +#endif + +/* CMSIS compiler control architecture macros */ +#if (defined (__TARGET_ARCH_7_A ) && (__TARGET_ARCH_7_A == 1)) + #define __ARM_ARCH_7A__ 1 +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __FORCEINLINE + #define __FORCEINLINE __forceinline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE static __forceinline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __declspec(noreturn) +#endif +#ifndef CMSIS_DEPRECATED + #define CMSIS_DEPRECATED __attribute__((deprecated)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed)) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT __packed struct +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr))) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr))) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed)) +#endif + +/* ########################## Core Instruction Access ######################### */ +/** + \brief No Operation + */ +#define __NOP __nop + +/** + \brief Wait For Interrupt + */ +#define __WFI __wfi + +/** + \brief Wait For Event + */ +#define __WFE __wfe + +/** + \brief Send Event + */ +#define __SEV __sev + +/** + \brief Instruction Synchronization Barrier + */ +#define __ISB() do {\ + __schedule_barrier();\ + __isb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \brief Data Synchronization Barrier + */ +#define __DSB() do {\ + __schedule_barrier();\ + __dsb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \brief Data Memory Barrier + */ +#define __DMB() do {\ + __schedule_barrier();\ + __dmb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV __rev + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} +#endif + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} +#endif + +/** + \brief Rotate Right in unsigned value (32 bit) + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +#define __ROR __ror + +/** + \brief Breakpoint + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __breakpoint(value) + +/** + \brief Reverse bit order of value + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __rbit + +/** + \brief Count leading zeros + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ __clz + +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +#else + #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +#endif + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +#else + #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +#endif + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +#else + #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +#endif + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXB(value, ptr) __strex(value, ptr) +#else + #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXH(value, ptr) __strex(value, ptr) +#else + #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXW(value, ptr) __strex(value, ptr) +#else + #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __clrex + + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __ssat + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __usat + +/* ########################### Core Function Access ########################### */ + +/** + \brief Get FPSCR (Floating Point Status/Control) + \return Floating Point Status/Control register value + */ +__STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + return(__regfpscr); +#else + return(0U); +#endif +} + +/** + \brief Set FPSCR (Floating Point Status/Control) + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + __regfpscr = (fpscr); +#else + (void)fpscr; +#endif +} + +/** \brief Get CPSR (Current Program Status Register) + \return CPSR Register value + */ +__STATIC_INLINE uint32_t __get_CPSR(void) +{ + register uint32_t __regCPSR __ASM("cpsr"); + return(__regCPSR); +} + + +/** \brief Set CPSR (Current Program Status Register) + \param [in] cpsr CPSR value to set + */ +__STATIC_INLINE void __set_CPSR(uint32_t cpsr) +{ + register uint32_t __regCPSR __ASM("cpsr"); + __regCPSR = cpsr; +} + +/** \brief Get Mode + \return Processor Mode + */ +__STATIC_INLINE uint32_t __get_mode(void) +{ + return (__get_CPSR() & 0x1FU); +} + +/** \brief Set Mode + \param [in] mode Mode value to set + */ +__STATIC_INLINE __ASM void __set_mode(uint32_t mode) +{ + MOV r1, lr + MSR CPSR_C, r0 + BX r1 +} + +/** \brief Get Stack Pointer + \return Stack Pointer + */ +__STATIC_INLINE __ASM uint32_t __get_SP(void) +{ + MOV r0, sp + BX lr +} + +/** \brief Set Stack Pointer + \param [in] stack Stack Pointer value to set + */ +__STATIC_INLINE __ASM void __set_SP(uint32_t stack) +{ + MOV sp, r0 + BX lr +} + + +/** \brief Get USR/SYS Stack Pointer + \return USR/SYSStack Pointer + */ +__STATIC_INLINE __ASM uint32_t __get_SP_usr(void) +{ + ARM + PRESERVE8 + + MRS R1, CPSR + CPS #0x1F ;no effect in USR mode + MOV R0, SP + MSR CPSR_c, R1 ;no effect in USR mode + ISB + BX LR +} + +/** \brief Set USR/SYS Stack Pointer + \param [in] topOfProcStack USR/SYS Stack Pointer value to set + */ +__STATIC_INLINE __ASM void __set_SP_usr(uint32_t topOfProcStack) +{ + ARM + PRESERVE8 + + MRS R1, CPSR + CPS #0x1F ;no effect in USR mode + MOV SP, R0 + MSR CPSR_c, R1 ;no effect in USR mode + ISB + BX LR +} + +/** \brief Get FPEXC (Floating Point Exception Control Register) + \return Floating Point Exception Control Register value + */ +__STATIC_INLINE uint32_t __get_FPEXC(void) +{ +#if (__FPU_PRESENT == 1) + register uint32_t __regfpexc __ASM("fpexc"); + return(__regfpexc); +#else + return(0); +#endif +} + +/** \brief Set FPEXC (Floating Point Exception Control Register) + \param [in] fpexc Floating Point Exception Control value to set + */ +__STATIC_INLINE void __set_FPEXC(uint32_t fpexc) +{ +#if (__FPU_PRESENT == 1) + register uint32_t __regfpexc __ASM("fpexc"); + __regfpexc = (fpexc); +#endif +} + +/* + * Include common core functions to access Coprocessor 15 registers + */ + +#define __get_CP(cp, op1, Rt, CRn, CRm, op2) do { register volatile uint32_t tmp __ASM("cp" # cp ":" # op1 ":c" # CRn ":c" # CRm ":" # op2); (Rt) = tmp; } while(0) +#define __set_CP(cp, op1, Rt, CRn, CRm, op2) do { register volatile uint32_t tmp __ASM("cp" # cp ":" # op1 ":c" # CRn ":c" # CRm ":" # op2); tmp = (Rt); } while(0) +#define __get_CP64(cp, op1, Rt, CRm) \ + do { \ + uint32_t ltmp, htmp; \ + __ASM volatile("MRRC p" # cp ", " # op1 ", ltmp, htmp, c" # CRm); \ + (Rt) = ((((uint64_t)htmp) << 32U) | ((uint64_t)ltmp)); \ + } while(0) + +#define __set_CP64(cp, op1, Rt, CRm) \ + do { \ + const uint64_t tmp = (Rt); \ + const uint32_t ltmp = (uint32_t)(tmp); \ + const uint32_t htmp = (uint32_t)(tmp >> 32U); \ + __ASM volatile("MCRR p" # cp ", " # op1 ", ltmp, htmp, c" # CRm); \ + } while(0) + +#include "cmsis_cp15.h" + +/** \brief Enable Floating Point Unit + + Critical section, called from undef handler, so systick is disabled + */ +__STATIC_INLINE __ASM void __FPU_Enable(void) +{ + ARM + + //Permit access to VFP/NEON, registers by modifying CPACR + MRC p15,0,R1,c1,c0,2 + ORR R1,R1,#0x00F00000 + MCR p15,0,R1,c1,c0,2 + + //Ensure that subsequent instructions occur in the context of VFP/NEON access permitted + ISB + + //Enable VFP/NEON + VMRS R1,FPEXC + ORR R1,R1,#0x40000000 + VMSR FPEXC,R1 + + //Initialise VFP/NEON registers to 0 + MOV R2,#0 + + //Initialise D16 registers to 0 + VMOV D0, R2,R2 + VMOV D1, R2,R2 + VMOV D2, R2,R2 + VMOV D3, R2,R2 + VMOV D4, R2,R2 + VMOV D5, R2,R2 + VMOV D6, R2,R2 + VMOV D7, R2,R2 + VMOV D8, R2,R2 + VMOV D9, R2,R2 + VMOV D10,R2,R2 + VMOV D11,R2,R2 + VMOV D12,R2,R2 + VMOV D13,R2,R2 + VMOV D14,R2,R2 + VMOV D15,R2,R2 + + IF {TARGET_FEATURE_EXTENSION_REGISTER_COUNT} == 32 + //Initialise D32 registers to 0 + VMOV D16,R2,R2 + VMOV D17,R2,R2 + VMOV D18,R2,R2 + VMOV D19,R2,R2 + VMOV D20,R2,R2 + VMOV D21,R2,R2 + VMOV D22,R2,R2 + VMOV D23,R2,R2 + VMOV D24,R2,R2 + VMOV D25,R2,R2 + VMOV D26,R2,R2 + VMOV D27,R2,R2 + VMOV D28,R2,R2 + VMOV D29,R2,R2 + VMOV D30,R2,R2 + VMOV D31,R2,R2 + ENDIF + + //Initialise FPSCR to a known state + VMRS R2,FPSCR + LDR R3,=0x00086060 //Mask off all bits that do not have to be preserved. Non-preserved bits can/should be zero. + AND R2,R2,R3 + VMSR FPSCR,R2 + + BX LR +} + +#endif /* __CMSIS_ARMCC_H */ diff --git a/Drivers/CMSIS/Core_A/Include/cmsis_armclang.h b/Drivers/CMSIS/Core_A/Include/cmsis_armclang.h new file mode 100644 index 0000000..e0de5a4 --- /dev/null +++ b/Drivers/CMSIS/Core_A/Include/cmsis_armclang.h @@ -0,0 +1,503 @@ +/**************************************************************************//** + * @file cmsis_armclang.h + * @brief CMSIS compiler specific macros, functions, instructions + * @version V1.0.2 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +#ifndef __ARM_COMPAT_H +#include /* Compatibility header for Arm Compiler 5 intrinsics */ +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __FORCEINLINE + #define __FORCEINLINE __attribute__((always_inline)) +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef CMSIS_DEPRECATED + #define CMSIS_DEPRECATED __attribute__((deprecated)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed)) +#endif + +/* ########################## Core Instruction Access ######################### */ +/** + \brief No Operation + */ +#define __NOP __builtin_arm_nop + +/** + \brief Wait For Interrupt + */ +#define __WFI __builtin_arm_wfi + +/** + \brief Wait For Event + */ +#define __WFE __builtin_arm_wfe + +/** + \brief Send Event + */ +#define __SEV __builtin_arm_sev + +/** + \brief Instruction Synchronization Barrier + */ +#define __ISB() do {\ + __schedule_barrier();\ + __builtin_arm_isb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \brief Data Synchronization Barrier + */ +#define __DSB() do {\ + __schedule_barrier();\ + __builtin_arm_dsb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \brief Data Memory Barrier + */ +#define __DMB() do {\ + __schedule_barrier();\ + __builtin_arm_dmb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV(value) __builtin_bswap32(value) + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + +/** + \brief Reverse bit order of value + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __builtin_arm_rbit + +/** + \brief Count leading zeros + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ (uint8_t)__builtin_clz + +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB (uint32_t)__builtin_arm_strex + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH (uint32_t)__builtin_arm_strex + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW (uint32_t)__builtin_arm_strex + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __builtin_arm_ssat + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __builtin_arm_usat + + +/* ########################### Core Function Access ########################### */ + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +#define __get_FPSCR __builtin_arm_get_fpscr + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +#define __set_FPSCR __builtin_arm_set_fpscr + +/** \brief Get CPSR Register + \return CPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CPSR(void) +{ + uint32_t result; + __ASM volatile("MRS %0, cpsr" : "=r" (result) ); + return(result); +} + +/** \brief Set CPSR Register + \param [in] cpsr CPSR value to set + */ +__STATIC_FORCEINLINE void __set_CPSR(uint32_t cpsr) +{ +__ASM volatile ("MSR cpsr, %0" : : "r" (cpsr) : "memory"); +} + +/** \brief Get Mode + \return Processor Mode + */ +__STATIC_FORCEINLINE uint32_t __get_mode(void) +{ + return (__get_CPSR() & 0x1FU); +} + +/** \brief Set Mode + \param [in] mode Mode value to set + */ +__STATIC_FORCEINLINE void __set_mode(uint32_t mode) +{ + __ASM volatile("MSR cpsr_c, %0" : : "r" (mode) : "memory"); +} + +/** \brief Get Stack Pointer + \return Stack Pointer value + */ +__STATIC_FORCEINLINE uint32_t __get_SP() +{ + uint32_t result; + __ASM volatile("MOV %0, sp" : "=r" (result) : : "memory"); + return result; +} + +/** \brief Set Stack Pointer + \param [in] stack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_SP(uint32_t stack) +{ + __ASM volatile("MOV sp, %0" : : "r" (stack) : "memory"); +} + +/** \brief Get USR/SYS Stack Pointer + \return USR/SYS Stack Pointer value + */ +__STATIC_FORCEINLINE uint32_t __get_SP_usr() +{ + uint32_t cpsr; + uint32_t result; + __ASM volatile( + "MRS %0, cpsr \n" + "CPS #0x1F \n" // no effect in USR mode + "MOV %1, sp \n" + "MSR cpsr_c, %2 \n" // no effect in USR mode + "ISB" : "=r"(cpsr), "=r"(result) : "r"(cpsr) : "memory" + ); + return result; +} + +/** \brief Set USR/SYS Stack Pointer + \param [in] topOfProcStack USR/SYS Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_SP_usr(uint32_t topOfProcStack) +{ + uint32_t cpsr; + __ASM volatile( + "MRS %0, cpsr \n" + "CPS #0x1F \n" // no effect in USR mode + "MOV sp, %1 \n" + "MSR cpsr_c, %2 \n" // no effect in USR mode + "ISB" : "=r"(cpsr) : "r" (topOfProcStack), "r"(cpsr) : "memory" + ); +} + +/** \brief Get FPEXC + \return Floating Point Exception Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPEXC(void) +{ +#if (__FPU_PRESENT == 1) + uint32_t result; + __ASM volatile("VMRS %0, fpexc" : "=r" (result) : : "memory"); + return(result); +#else + return(0); +#endif +} + +/** \brief Set FPEXC + \param [in] fpexc Floating Point Exception Control value to set + */ +__STATIC_FORCEINLINE void __set_FPEXC(uint32_t fpexc) +{ +#if (__FPU_PRESENT == 1) + __ASM volatile ("VMSR fpexc, %0" : : "r" (fpexc) : "memory"); +#endif +} + +/* + * Include common core functions to access Coprocessor 15 registers + */ + +#define __get_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile("MRC p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : "=r" (Rt) : : "memory" ) +#define __set_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile("MCR p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : : "r" (Rt) : "memory" ) +#define __get_CP64(cp, op1, Rt, CRm) __ASM volatile("MRRC p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : "=r" (Rt) : : "memory" ) +#define __set_CP64(cp, op1, Rt, CRm) __ASM volatile("MCRR p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : : "r" (Rt) : "memory" ) + +#include "cmsis_cp15.h" + +/** \brief Enable Floating Point Unit + + Critical section, called from undef handler, so systick is disabled + */ +__STATIC_INLINE void __FPU_Enable(void) +{ + __ASM volatile( + //Permit access to VFP/NEON, registers by modifying CPACR + " MRC p15,0,R1,c1,c0,2 \n" + " ORR R1,R1,#0x00F00000 \n" + " MCR p15,0,R1,c1,c0,2 \n" + + //Ensure that subsequent instructions occur in the context of VFP/NEON access permitted + " ISB \n" + + //Enable VFP/NEON + " VMRS R1,FPEXC \n" + " ORR R1,R1,#0x40000000 \n" + " VMSR FPEXC,R1 \n" + + //Initialise VFP/NEON registers to 0 + " MOV R2,#0 \n" + + //Initialise D16 registers to 0 + " VMOV D0, R2,R2 \n" + " VMOV D1, R2,R2 \n" + " VMOV D2, R2,R2 \n" + " VMOV D3, R2,R2 \n" + " VMOV D4, R2,R2 \n" + " VMOV D5, R2,R2 \n" + " VMOV D6, R2,R2 \n" + " VMOV D7, R2,R2 \n" + " VMOV D8, R2,R2 \n" + " VMOV D9, R2,R2 \n" + " VMOV D10,R2,R2 \n" + " VMOV D11,R2,R2 \n" + " VMOV D12,R2,R2 \n" + " VMOV D13,R2,R2 \n" + " VMOV D14,R2,R2 \n" + " VMOV D15,R2,R2 \n" + +#if __ARM_NEON == 1 + //Initialise D32 registers to 0 + " VMOV D16,R2,R2 \n" + " VMOV D17,R2,R2 \n" + " VMOV D18,R2,R2 \n" + " VMOV D19,R2,R2 \n" + " VMOV D20,R2,R2 \n" + " VMOV D21,R2,R2 \n" + " VMOV D22,R2,R2 \n" + " VMOV D23,R2,R2 \n" + " VMOV D24,R2,R2 \n" + " VMOV D25,R2,R2 \n" + " VMOV D26,R2,R2 \n" + " VMOV D27,R2,R2 \n" + " VMOV D28,R2,R2 \n" + " VMOV D29,R2,R2 \n" + " VMOV D30,R2,R2 \n" + " VMOV D31,R2,R2 \n" +#endif + + //Initialise FPSCR to a known state + " VMRS R2,FPSCR \n" + " LDR R3,=0x00086060 \n" //Mask off all bits that do not have to be preserved. Non-preserved bits can/should be zero. + " AND R2,R2,R3 \n" + " VMSR FPSCR,R2 " + ); +} + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/Drivers/CMSIS/Core_A/Include/cmsis_compiler.h b/Drivers/CMSIS/Core_A/Include/cmsis_compiler.h new file mode 100644 index 0000000..cd14cbc --- /dev/null +++ b/Drivers/CMSIS/Core_A/Include/cmsis_compiler.h @@ -0,0 +1,201 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler specific macros, functions, instructions + * @version V1.0.2 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include "cmsis_iccarm.h" + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef CMSIS_DEPRECATED + #define CMSIS_DEPRECATED __attribute__((deprecated)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __UNALIGNED_UINT32 + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef CMSIS_DEPRECATED + #define CMSIS_DEPRECATED __attribute__((deprecated)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __UNALIGNED_UINT32 + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef CMSIS_DEPRECATED + #warning No compiler specific solution for CMSIS_DEPRECATED. CMSIS_DEPRECATED is ignored. + #define CMSIS_DEPRECATED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __UNALIGNED_UINT32 + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/Drivers/CMSIS/Core_A/Include/cmsis_cp15.h b/Drivers/CMSIS/Core_A/Include/cmsis_cp15.h new file mode 100644 index 0000000..75e57b8 --- /dev/null +++ b/Drivers/CMSIS/Core_A/Include/cmsis_cp15.h @@ -0,0 +1,514 @@ +/**************************************************************************//** + * @file cmsis_cp15.h + * @brief CMSIS compiler specific macros, functions, instructions + * @version V1.0.1 + * @date 07. Sep 2017 + ******************************************************************************/ +/* + * Copyright (c) 2009-2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_CP15_H +#define __CMSIS_CP15_H + +/** \brief Get ACTLR + \return Auxiliary Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_ACTLR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 1, 0, 1); + return(result); +} + +/** \brief Set ACTLR + \param [in] actlr Auxiliary Control value to set + */ +__STATIC_FORCEINLINE void __set_ACTLR(uint32_t actlr) +{ + __set_CP(15, 0, actlr, 1, 0, 1); +} + +/** \brief Get CPACR + \return Coprocessor Access Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_CPACR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 1, 0, 2); + return result; +} + +/** \brief Set CPACR + \param [in] cpacr Coprocessor Access Control value to set + */ +__STATIC_FORCEINLINE void __set_CPACR(uint32_t cpacr) +{ + __set_CP(15, 0, cpacr, 1, 0, 2); +} + +/** \brief Get DFSR + \return Data Fault Status Register value + */ +__STATIC_FORCEINLINE uint32_t __get_DFSR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 5, 0, 0); + return result; +} + +/** \brief Set DFSR + \param [in] dfsr Data Fault Status value to set + */ +__STATIC_FORCEINLINE void __set_DFSR(uint32_t dfsr) +{ + __set_CP(15, 0, dfsr, 5, 0, 0); +} + +/** \brief Get IFSR + \return Instruction Fault Status Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IFSR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 5, 0, 1); + return result; +} + +/** \brief Set IFSR + \param [in] ifsr Instruction Fault Status value to set + */ +__STATIC_FORCEINLINE void __set_IFSR(uint32_t ifsr) +{ + __set_CP(15, 0, ifsr, 5, 0, 1); +} + +/** \brief Get ISR + \return Interrupt Status Register value + */ +__STATIC_FORCEINLINE uint32_t __get_ISR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 1, 0); + return result; +} + +/** \brief Get CBAR + \return Configuration Base Address register value + */ +__STATIC_FORCEINLINE uint32_t __get_CBAR(void) +{ + uint32_t result; + __get_CP(15, 4, result, 15, 0, 0); + return result; +} + +/** \brief Get TTBR0 + + This function returns the value of the Translation Table Base Register 0. + + \return Translation Table Base Register 0 value + */ +__STATIC_FORCEINLINE uint32_t __get_TTBR0(void) +{ + uint32_t result; + __get_CP(15, 0, result, 2, 0, 0); + return result; +} + +/** \brief Set TTBR0 + + This function assigns the given value to the Translation Table Base Register 0. + + \param [in] ttbr0 Translation Table Base Register 0 value to set + */ +__STATIC_FORCEINLINE void __set_TTBR0(uint32_t ttbr0) +{ + __set_CP(15, 0, ttbr0, 2, 0, 0); +} + +/** \brief Get DACR + + This function returns the value of the Domain Access Control Register. + + \return Domain Access Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_DACR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 3, 0, 0); + return result; +} + +/** \brief Set DACR + + This function assigns the given value to the Domain Access Control Register. + + \param [in] dacr Domain Access Control Register value to set + */ +__STATIC_FORCEINLINE void __set_DACR(uint32_t dacr) +{ + __set_CP(15, 0, dacr, 3, 0, 0); +} + +/** \brief Set SCTLR + + This function assigns the given value to the System Control Register. + + \param [in] sctlr System Control Register value to set + */ +__STATIC_FORCEINLINE void __set_SCTLR(uint32_t sctlr) +{ + __set_CP(15, 0, sctlr, 1, 0, 0); +} + +/** \brief Get SCTLR + \return System Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_SCTLR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 1, 0, 0); + return result; +} + +/** \brief Set ACTRL + \param [in] actrl Auxiliary Control Register value to set + */ +__STATIC_FORCEINLINE void __set_ACTRL(uint32_t actrl) +{ + __set_CP(15, 0, actrl, 1, 0, 1); +} + +/** \brief Get ACTRL + \return Auxiliary Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_ACTRL(void) +{ + uint32_t result; + __get_CP(15, 0, result, 1, 0, 1); + return result; +} + +/** \brief Get MPIDR + + This function returns the value of the Multiprocessor Affinity Register. + + \return Multiprocessor Affinity Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MPIDR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 0, 0, 5); + return result; +} + +/** \brief Get VBAR + + This function returns the value of the Vector Base Address Register. + + \return Vector Base Address Register + */ +__STATIC_FORCEINLINE uint32_t __get_VBAR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 0, 0); + return result; +} + +/** \brief Set VBAR + + This function assigns the given value to the Vector Base Address Register. + + \param [in] vbar Vector Base Address Register value to set + */ +__STATIC_FORCEINLINE void __set_VBAR(uint32_t vbar) +{ + __set_CP(15, 0, vbar, 12, 0, 0); +} + +/** \brief Get MVBAR + + This function returns the value of the Monitor Vector Base Address Register. + + \return Monitor Vector Base Address Register + */ +__STATIC_FORCEINLINE uint32_t __get_MVBAR(void) +{ + uint32_t result; + __get_CP(15, 0, result, 12, 0, 1); + return result; +} + +/** \brief Set MVBAR + + This function assigns the given value to the Monitor Vector Base Address Register. + + \param [in] mvbar Monitor Vector Base Address Register value to set + */ +__STATIC_FORCEINLINE void __set_MVBAR(uint32_t mvbar) +{ + __set_CP(15, 0, mvbar, 12, 0, 1); +} + +#if (defined(__CORTEX_A) && (__CORTEX_A == 7U) && \ + defined(__TIM_PRESENT) && (__TIM_PRESENT == 1U)) || \ + defined(DOXYGEN) + +/** \brief Set CNTFRQ + + This function assigns the given value to PL1 Physical Timer Counter Frequency Register (CNTFRQ). + + \param [in] value CNTFRQ Register value to set +*/ +__STATIC_FORCEINLINE void __set_CNTFRQ(uint32_t value) +{ + __set_CP(15, 0, value, 14, 0, 0); +} + +/** \brief Get CNTFRQ + + This function returns the value of the PL1 Physical Timer Counter Frequency Register (CNTFRQ). + + \return CNTFRQ Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CNTFRQ(void) +{ + uint32_t result; + __get_CP(15, 0, result, 14, 0 , 0); + return result; +} + +/** \brief Set CNTP_TVAL + + This function assigns the given value to PL1 Physical Timer Value Register (CNTP_TVAL). + + \param [in] value CNTP_TVAL Register value to set +*/ +__STATIC_FORCEINLINE void __set_CNTP_TVAL(uint32_t value) +{ + __set_CP(15, 0, value, 14, 2, 0); +} + +/** \brief Get CNTP_TVAL + + This function returns the value of the PL1 Physical Timer Value Register (CNTP_TVAL). + + \return CNTP_TVAL Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CNTP_TVAL(void) +{ + uint32_t result; + __get_CP(15, 0, result, 14, 2, 0); + return result; +} + +/** \brief Get CNTPCT + + This function returns the value of the 64 bits PL1 Physical Count Register (CNTPCT). + + \return CNTPCT Register value + */ +__STATIC_FORCEINLINE uint64_t __get_CNTPCT(void) +{ + uint64_t result; + __get_CP64(15, 0, result, 14); + return result; +} + +/** \brief Set CNTP_CVAL + + This function assigns the given value to 64bits PL1 Physical Timer CompareValue Register (CNTP_CVAL). + + \param [in] value CNTP_CVAL Register value to set +*/ +__STATIC_FORCEINLINE void __set_CNTP_CVAL(uint64_t value) +{ + __set_CP64(15, 2, value, 14); +} + +/** \brief Get CNTP_CVAL + + This function returns the value of the 64 bits PL1 Physical Timer CompareValue Register (CNTP_CVAL). + + \return CNTP_CVAL Register value + */ +__STATIC_FORCEINLINE uint64_t __get_CNTP_CVAL(void) +{ + uint64_t result; + __get_CP64(15, 2, result, 14); + return result; +} + +/** \brief Set CNTP_CTL + + This function assigns the given value to PL1 Physical Timer Control Register (CNTP_CTL). + + \param [in] value CNTP_CTL Register value to set +*/ +__STATIC_FORCEINLINE void __set_CNTP_CTL(uint32_t value) +{ + __set_CP(15, 0, value, 14, 2, 1); +} + +/** \brief Get CNTP_CTL register + \return CNTP_CTL Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CNTP_CTL(void) +{ + uint32_t result; + __get_CP(15, 0, result, 14, 2, 1); + return result; +} + +#endif + +/** \brief Set TLBIALL + + TLB Invalidate All + */ +__STATIC_FORCEINLINE void __set_TLBIALL(uint32_t value) +{ + __set_CP(15, 0, value, 8, 7, 0); +} + +/** \brief Set BPIALL. + + Branch Predictor Invalidate All + */ +__STATIC_FORCEINLINE void __set_BPIALL(uint32_t value) +{ + __set_CP(15, 0, value, 7, 5, 6); +} + +/** \brief Set ICIALLU + + Instruction Cache Invalidate All + */ +__STATIC_FORCEINLINE void __set_ICIALLU(uint32_t value) +{ + __set_CP(15, 0, value, 7, 5, 0); +} + +/** \brief Set DCCMVAC + + Data cache clean + */ +__STATIC_FORCEINLINE void __set_DCCMVAC(uint32_t value) +{ + __set_CP(15, 0, value, 7, 10, 1); +} + +/** \brief Set DCIMVAC + + Data cache invalidate + */ +__STATIC_FORCEINLINE void __set_DCIMVAC(uint32_t value) +{ + __set_CP(15, 0, value, 7, 6, 1); +} + +/** \brief Set DCCIMVAC + + Data cache clean and invalidate + */ +__STATIC_FORCEINLINE void __set_DCCIMVAC(uint32_t value) +{ + __set_CP(15, 0, value, 7, 14, 1); +} + +/** \brief Set CSSELR + */ +__STATIC_FORCEINLINE void __set_CSSELR(uint32_t value) +{ +// __ASM volatile("MCR p15, 2, %0, c0, c0, 0" : : "r"(value) : "memory"); + __set_CP(15, 2, value, 0, 0, 0); +} + +/** \brief Get CSSELR + \return CSSELR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CSSELR(void) +{ + uint32_t result; +// __ASM volatile("MRC p15, 2, %0, c0, c0, 0" : "=r"(result) : : "memory"); + __get_CP(15, 2, result, 0, 0, 0); + return result; +} + +/** \brief Set CCSIDR + \deprecated CCSIDR itself is read-only. Use __set_CSSELR to select cache level instead. + */ +CMSIS_DEPRECATED +__STATIC_FORCEINLINE void __set_CCSIDR(uint32_t value) +{ + __set_CSSELR(value); +} + +/** \brief Get CCSIDR + \return CCSIDR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CCSIDR(void) +{ + uint32_t result; +// __ASM volatile("MRC p15, 1, %0, c0, c0, 0" : "=r"(result) : : "memory"); + __get_CP(15, 1, result, 0, 0, 0); + return result; +} + +/** \brief Get CLIDR + \return CLIDR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CLIDR(void) +{ + uint32_t result; +// __ASM volatile("MRC p15, 1, %0, c0, c0, 1" : "=r"(result) : : "memory"); + __get_CP(15, 1, result, 0, 0, 1); + return result; +} + +/** \brief Set DCISW + */ +__STATIC_FORCEINLINE void __set_DCISW(uint32_t value) +{ +// __ASM volatile("MCR p15, 0, %0, c7, c6, 2" : : "r"(value) : "memory") + __set_CP(15, 0, value, 7, 6, 2); +} + +/** \brief Set DCCSW + */ +__STATIC_FORCEINLINE void __set_DCCSW(uint32_t value) +{ +// __ASM volatile("MCR p15, 0, %0, c7, c10, 2" : : "r"(value) : "memory") + __set_CP(15, 0, value, 7, 10, 2); +} + +/** \brief Set DCCISW + */ +__STATIC_FORCEINLINE void __set_DCCISW(uint32_t value) +{ +// __ASM volatile("MCR p15, 0, %0, c7, c14, 2" : : "r"(value) : "memory") + __set_CP(15, 0, value, 7, 14, 2); +} + +#endif diff --git a/Drivers/CMSIS/Core_A/Include/cmsis_gcc.h b/Drivers/CMSIS/Core_A/Include/cmsis_gcc.h new file mode 100644 index 0000000..fb1442c --- /dev/null +++ b/Drivers/CMSIS/Core_A/Include/cmsis_gcc.h @@ -0,0 +1,679 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler specific macros, functions, instructions + * @version V1.0.2 + * @date 09. April 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __FORCEINLINE + #define __FORCEINLINE __attribute__((always_inline)) +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef CMSIS_DEPRECATED + #define CMSIS_DEPRECATED __attribute__((deprecated)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif + +/* ########################## Core Instruction Access ######################### */ +/** + \brief No Operation + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + */ +#define __WFI() __ASM volatile ("wfi") + +/** + \brief Wait For Event + */ +#define __WFE() __ASM volatile ("wfe") + +/** + \brief Send Event + */ +#define __SEV() __ASM volatile ("sev") + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rev16_text"))) __STATIC_INLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + __ASM volatile("rev16 %0, %1" : "=r" (result) : "r" (value)); + return result; +} +#endif + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + int32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + +/** + \brief Count leading zeros + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ (uint8_t)__builtin_clz + +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ +__extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +/* ########################### Core Function Access ########################### */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + +/** + \brief Disable IRQ Interrupts + \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"); +} + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value +*/ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ + #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + #if __has_builtin(__builtin_arm_get_fpscr) + // Re-enable using built-in when GCC has been fixed + // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); + #else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); + #endif + #else + return(0U); + #endif +} + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set +*/ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ + #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + #if __has_builtin(__builtin_arm_set_fpscr) + // Re-enable using built-in when GCC has been fixed + // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); + #else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); + #endif + #else + (void)fpscr; + #endif +} + +/** \brief Get CPSR Register + \return CPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CPSR(void) +{ + uint32_t result; + __ASM volatile("MRS %0, cpsr" : "=r" (result) ); + return(result); +} + +/** \brief Set CPSR Register + \param [in] cpsr CPSR value to set + */ +__STATIC_FORCEINLINE void __set_CPSR(uint32_t cpsr) +{ +__ASM volatile ("MSR cpsr, %0" : : "r" (cpsr) : "memory"); +} + +/** \brief Get Mode + \return Processor Mode + */ +__STATIC_FORCEINLINE uint32_t __get_mode(void) +{ + return (__get_CPSR() & 0x1FU); +} + +/** \brief Set Mode + \param [in] mode Mode value to set + */ +__STATIC_FORCEINLINE void __set_mode(uint32_t mode) +{ + __ASM volatile("MSR cpsr_c, %0" : : "r" (mode) : "memory"); +} + +/** \brief Get Stack Pointer + \return Stack Pointer value + */ +__STATIC_FORCEINLINE uint32_t __get_SP(void) +{ + uint32_t result; + __ASM volatile("MOV %0, sp" : "=r" (result) : : "memory"); + return result; +} + +/** \brief Set Stack Pointer + \param [in] stack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_SP(uint32_t stack) +{ + __ASM volatile("MOV sp, %0" : : "r" (stack) : "memory"); +} + +/** \brief Get USR/SYS Stack Pointer + \return USR/SYS Stack Pointer value + */ +__STATIC_FORCEINLINE uint32_t __get_SP_usr(void) +{ + uint32_t cpsr = __get_CPSR(); + uint32_t result; + __ASM volatile( + "CPS #0x1F \n" + "MOV %0, sp " : "=r"(result) : : "memory" + ); + __set_CPSR(cpsr); + __ISB(); + return result; +} + +/** \brief Set USR/SYS Stack Pointer + \param [in] topOfProcStack USR/SYS Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_SP_usr(uint32_t topOfProcStack) +{ + uint32_t cpsr = __get_CPSR(); + __ASM volatile( + "CPS #0x1F \n" + "MOV sp, %0 " : : "r" (topOfProcStack) : "memory" + ); + __set_CPSR(cpsr); + __ISB(); +} + +/** \brief Get FPEXC + \return Floating Point Exception Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPEXC(void) +{ +#if (__FPU_PRESENT == 1) + uint32_t result; + __ASM volatile("VMRS %0, fpexc" : "=r" (result) ); + return(result); +#else + return(0); +#endif +} + +/** \brief Set FPEXC + \param [in] fpexc Floating Point Exception Control value to set + */ +__STATIC_FORCEINLINE void __set_FPEXC(uint32_t fpexc) +{ +#if (__FPU_PRESENT == 1) + __ASM volatile ("VMSR fpexc, %0" : : "r" (fpexc) : "memory"); +#endif +} + +/* + * Include common core functions to access Coprocessor 15 registers + */ + +#define __get_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile("MRC p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : "=r" (Rt) : : "memory" ) +#define __set_CP(cp, op1, Rt, CRn, CRm, op2) __ASM volatile("MCR p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : : "r" (Rt) : "memory" ) +#define __get_CP64(cp, op1, Rt, CRm) __ASM volatile("MRRC p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : "=r" (Rt) : : "memory" ) +#define __set_CP64(cp, op1, Rt, CRm) __ASM volatile("MCRR p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : : "r" (Rt) : "memory" ) + +#include "cmsis_cp15.h" + +/** \brief Enable Floating Point Unit + + Critical section, called from undef handler, so systick is disabled + */ +__STATIC_INLINE void __FPU_Enable(void) +{ + __ASM volatile( + //Permit access to VFP/NEON, registers by modifying CPACR + " MRC p15,0,R1,c1,c0,2 \n" + " ORR R1,R1,#0x00F00000 \n" + " MCR p15,0,R1,c1,c0,2 \n" + + //Ensure that subsequent instructions occur in the context of VFP/NEON access permitted + " ISB \n" + + //Enable VFP/NEON + " VMRS R1,FPEXC \n" + " ORR R1,R1,#0x40000000 \n" + " VMSR FPEXC,R1 \n" + + //Initialise VFP/NEON registers to 0 + " MOV R2,#0 \n" + + //Initialise D16 registers to 0 + " VMOV D0, R2,R2 \n" + " VMOV D1, R2,R2 \n" + " VMOV D2, R2,R2 \n" + " VMOV D3, R2,R2 \n" + " VMOV D4, R2,R2 \n" + " VMOV D5, R2,R2 \n" + " VMOV D6, R2,R2 \n" + " VMOV D7, R2,R2 \n" + " VMOV D8, R2,R2 \n" + " VMOV D9, R2,R2 \n" + " VMOV D10,R2,R2 \n" + " VMOV D11,R2,R2 \n" + " VMOV D12,R2,R2 \n" + " VMOV D13,R2,R2 \n" + " VMOV D14,R2,R2 \n" + " VMOV D15,R2,R2 \n" + +#if (defined(__ARM_NEON) && (__ARM_NEON == 1)) + //Initialise D32 registers to 0 + " VMOV D16,R2,R2 \n" + " VMOV D17,R2,R2 \n" + " VMOV D18,R2,R2 \n" + " VMOV D19,R2,R2 \n" + " VMOV D20,R2,R2 \n" + " VMOV D21,R2,R2 \n" + " VMOV D22,R2,R2 \n" + " VMOV D23,R2,R2 \n" + " VMOV D24,R2,R2 \n" + " VMOV D25,R2,R2 \n" + " VMOV D26,R2,R2 \n" + " VMOV D27,R2,R2 \n" + " VMOV D28,R2,R2 \n" + " VMOV D29,R2,R2 \n" + " VMOV D30,R2,R2 \n" + " VMOV D31,R2,R2 \n" +#endif + + //Initialise FPSCR to a known state + " VMRS R2,FPSCR \n" + " LDR R3,=0x00086060 \n" //Mask off all bits that do not have to be preserved. Non-preserved bits can/should be zero. + " AND R2,R2,R3 \n" + " VMSR FPSCR,R2 " + ); +} + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/Drivers/CMSIS/Core_A/Include/cmsis_iccarm.h b/Drivers/CMSIS/Core_A/Include/cmsis_iccarm.h new file mode 100644 index 0000000..c46c397 --- /dev/null +++ b/Drivers/CMSIS/Core_A/Include/cmsis_iccarm.h @@ -0,0 +1,559 @@ +/**************************************************************************//** + * @file cmsis_iccarm.h + * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file + * @version V5.0.6 + * @date 02. March 2018 + ******************************************************************************/ + +//------------------------------------------------------------------------------ +// +// Copyright (c) 2017-2018 IAR Systems +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//------------------------------------------------------------------------------ + + +#ifndef __CMSIS_ICCARM_H__ +#define __CMSIS_ICCARM_H__ + +#ifndef __ICCARM__ + #error This file should only be compiled by ICCARM +#endif + +#pragma system_include + +#define __IAR_FT _Pragma("inline=forced") __intrinsic + +#if (__VER__ >= 8000000) + #define __ICCARM_V8 1 +#else + #define __ICCARM_V8 0 +#endif + +#pragma language=extended + +#ifndef __ALIGNED + #if __ICCARM_V8 + #define __ALIGNED(x) __attribute__((aligned(x))) + #elif (__VER__ >= 7080000) + /* Needs IAR language extensions */ + #define __ALIGNED(x) __attribute__((aligned(x))) + #else + #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored. + #define __ALIGNED(x) + #endif +#endif + + +/* Define compiler macros for CPU architecture, used in CMSIS 5. + */ +#if __ARM_ARCH_7A__ +/* Macro already defined */ +#else + #if defined(__ARM7A__) + #define __ARM_ARCH_7A__ 1 + #endif +#endif + +#ifndef __ASM + #define __ASM __asm +#endif + +#ifndef __INLINE + #define __INLINE inline +#endif + +#ifndef __NO_RETURN + #if __ICCARM_V8 + #define __NO_RETURN __attribute__((__noreturn__)) + #else + #define __NO_RETURN _Pragma("object_attribute=__noreturn") + #endif +#endif + +#ifndef __PACKED + /* Needs IAR language extensions */ + #if __ICCARM_V8 + #define __PACKED __attribute__((packed, aligned(1))) + #else + #define __PACKED __packed + #endif +#endif + +#ifndef __PACKED_STRUCT + /* Needs IAR language extensions */ + #if __ICCARM_V8 + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + #else + #define __PACKED_STRUCT __packed struct + #endif +#endif + +#ifndef __PACKED_UNION + /* Needs IAR language extensions */ + #if __ICCARM_V8 + #define __PACKED_UNION union __attribute__((packed, aligned(1))) + #else + #define __PACKED_UNION __packed union + #endif +#endif + +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif + +#ifndef __FORCEINLINE + #define __FORCEINLINE _Pragma("inline=forced") +#endif + +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __FORCEINLINE __STATIC_INLINE +#endif + +#ifndef CMSIS_DEPRECATED + #define CMSIS_DEPRECATED __attribute__((deprecated)) +#endif + +#ifndef __UNALIGNED_UINT16_READ + #pragma language=save + #pragma language=extended + __IAR_FT uint16_t __iar_uint16_read(void const *ptr) + { + return *(__packed uint16_t*)(ptr); + } + #pragma language=restore + #define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR) +#endif + + +#ifndef __UNALIGNED_UINT16_WRITE + #pragma language=save + #pragma language=extended + __IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val) + { + *(__packed uint16_t*)(ptr) = val;; + } + #pragma language=restore + #define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32_READ + #pragma language=save + #pragma language=extended + __IAR_FT uint32_t __iar_uint32_read(void const *ptr) + { + return *(__packed uint32_t*)(ptr); + } + #pragma language=restore + #define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR) +#endif + +#ifndef __UNALIGNED_UINT32_WRITE + #pragma language=save + #pragma language=extended + __IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val) + { + *(__packed uint32_t*)(ptr) = val;; + } + #pragma language=restore + #define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL) +#endif + +#if 0 +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma language=save + #pragma language=extended + __packed struct __iar_u32 { uint32_t v; }; + #pragma language=restore + #define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v) +#endif +#endif + +#ifndef __USED + #if __ICCARM_V8 + #define __USED __attribute__((used)) + #else + #define __USED _Pragma("__root") + #endif +#endif + +#ifndef __WEAK + #if __ICCARM_V8 + #define __WEAK __attribute__((weak)) + #else + #define __WEAK _Pragma("__weak") + #endif +#endif + + +#ifndef __ICCARM_INTRINSICS_VERSION__ + #define __ICCARM_INTRINSICS_VERSION__ 0 +#endif + +#if __ICCARM_INTRINSICS_VERSION__ == 2 + + #if defined(__CLZ) + #undef __CLZ + #endif + #if defined(__REVSH) + #undef __REVSH + #endif + #if defined(__RBIT) + #undef __RBIT + #endif + #if defined(__SSAT) + #undef __SSAT + #endif + #if defined(__USAT) + #undef __USAT + #endif + + #include "iccarm_builtin.h" + + #define __enable_irq __iar_builtin_enable_interrupt + #define __disable_irq __iar_builtin_disable_interrupt + #define __enable_fault_irq __iar_builtin_enable_fiq + #define __disable_fault_irq __iar_builtin_disable_fiq + #define __arm_rsr __iar_builtin_rsr + #define __arm_wsr __iar_builtin_wsr + + #if __FPU_PRESENT + #define __get_FPSCR() (__arm_rsr("FPSCR")) + #else + #define __get_FPSCR() ( 0 ) + #endif + + #define __set_FPSCR(VALUE) (__arm_wsr("FPSCR", VALUE)) + + #define __get_CPSR() (__arm_rsr("CPSR")) + #define __get_mode() (__get_CPSR() & 0x1FU) + + #define __set_CPSR(VALUE) (__arm_wsr("CPSR", (VALUE))) + #define __set_mode(VALUE) (__arm_wsr("CPSR_c", (VALUE))) + + + #define __get_FPEXC() (__arm_rsr("FPEXC")) + #define __set_FPEXC(VALUE) (__arm_wsr("FPEXC", VALUE)) + + #define __get_CP(cp, op1, RT, CRn, CRm, op2) \ + ((RT) = __arm_rsr("p" # cp ":" # op1 ":c" # CRn ":c" # CRm ":" # op2)) + + #define __set_CP(cp, op1, RT, CRn, CRm, op2) \ + (__arm_wsr("p" # cp ":" # op1 ":c" # CRn ":c" # CRm ":" # op2, (RT))) + + #define __get_CP64(cp, op1, Rt, CRm) \ + __ASM volatile("MRRC p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : "=r" (Rt) : : "memory" ) + + #define __set_CP64(cp, op1, Rt, CRm) \ + __ASM volatile("MCRR p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : : "r" (Rt) : "memory" ) + + #include "cmsis_cp15.h" + + #define __NOP __iar_builtin_no_operation + + #define __CLZ __iar_builtin_CLZ + #define __CLREX __iar_builtin_CLREX + + #define __DMB __iar_builtin_DMB + #define __DSB __iar_builtin_DSB + #define __ISB __iar_builtin_ISB + + #define __LDREXB __iar_builtin_LDREXB + #define __LDREXH __iar_builtin_LDREXH + #define __LDREXW __iar_builtin_LDREX + + #define __RBIT __iar_builtin_RBIT + #define __REV __iar_builtin_REV + #define __REV16 __iar_builtin_REV16 + + __IAR_FT int16_t __REVSH(int16_t val) + { + return (int16_t) __iar_builtin_REVSH(val); + } + + #define __ROR __iar_builtin_ROR + #define __RRX __iar_builtin_RRX + + #define __SEV __iar_builtin_SEV + + #define __SSAT __iar_builtin_SSAT + + #define __STREXB __iar_builtin_STREXB + #define __STREXH __iar_builtin_STREXH + #define __STREXW __iar_builtin_STREX + + #define __USAT __iar_builtin_USAT + + #define __WFE __iar_builtin_WFE + #define __WFI __iar_builtin_WFI + + #define __SADD8 __iar_builtin_SADD8 + #define __QADD8 __iar_builtin_QADD8 + #define __SHADD8 __iar_builtin_SHADD8 + #define __UADD8 __iar_builtin_UADD8 + #define __UQADD8 __iar_builtin_UQADD8 + #define __UHADD8 __iar_builtin_UHADD8 + #define __SSUB8 __iar_builtin_SSUB8 + #define __QSUB8 __iar_builtin_QSUB8 + #define __SHSUB8 __iar_builtin_SHSUB8 + #define __USUB8 __iar_builtin_USUB8 + #define __UQSUB8 __iar_builtin_UQSUB8 + #define __UHSUB8 __iar_builtin_UHSUB8 + #define __SADD16 __iar_builtin_SADD16 + #define __QADD16 __iar_builtin_QADD16 + #define __SHADD16 __iar_builtin_SHADD16 + #define __UADD16 __iar_builtin_UADD16 + #define __UQADD16 __iar_builtin_UQADD16 + #define __UHADD16 __iar_builtin_UHADD16 + #define __SSUB16 __iar_builtin_SSUB16 + #define __QSUB16 __iar_builtin_QSUB16 + #define __SHSUB16 __iar_builtin_SHSUB16 + #define __USUB16 __iar_builtin_USUB16 + #define __UQSUB16 __iar_builtin_UQSUB16 + #define __UHSUB16 __iar_builtin_UHSUB16 + #define __SASX __iar_builtin_SASX + #define __QASX __iar_builtin_QASX + #define __SHASX __iar_builtin_SHASX + #define __UASX __iar_builtin_UASX + #define __UQASX __iar_builtin_UQASX + #define __UHASX __iar_builtin_UHASX + #define __SSAX __iar_builtin_SSAX + #define __QSAX __iar_builtin_QSAX + #define __SHSAX __iar_builtin_SHSAX + #define __USAX __iar_builtin_USAX + #define __UQSAX __iar_builtin_UQSAX + #define __UHSAX __iar_builtin_UHSAX + #define __USAD8 __iar_builtin_USAD8 + #define __USADA8 __iar_builtin_USADA8 + #define __SSAT16 __iar_builtin_SSAT16 + #define __USAT16 __iar_builtin_USAT16 + #define __UXTB16 __iar_builtin_UXTB16 + #define __UXTAB16 __iar_builtin_UXTAB16 + #define __SXTB16 __iar_builtin_SXTB16 + #define __SXTAB16 __iar_builtin_SXTAB16 + #define __SMUAD __iar_builtin_SMUAD + #define __SMUADX __iar_builtin_SMUADX + #define __SMMLA __iar_builtin_SMMLA + #define __SMLAD __iar_builtin_SMLAD + #define __SMLADX __iar_builtin_SMLADX + #define __SMLALD __iar_builtin_SMLALD + #define __SMLALDX __iar_builtin_SMLALDX + #define __SMUSD __iar_builtin_SMUSD + #define __SMUSDX __iar_builtin_SMUSDX + #define __SMLSD __iar_builtin_SMLSD + #define __SMLSDX __iar_builtin_SMLSDX + #define __SMLSLD __iar_builtin_SMLSLD + #define __SMLSLDX __iar_builtin_SMLSLDX + #define __SEL __iar_builtin_SEL + #define __QADD __iar_builtin_QADD + #define __QSUB __iar_builtin_QSUB + #define __PKHBT __iar_builtin_PKHBT + #define __PKHTB __iar_builtin_PKHTB + +#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + + #if !__FPU_PRESENT + #define __get_FPSCR __cmsis_iar_get_FPSR_not_active + #endif + + #ifdef __INTRINSICS_INCLUDED + #error intrinsics.h is already included previously! + #endif + + #include + + #if !__FPU_PRESENT + #define __get_FPSCR() (0) + #endif + + #pragma diag_suppress=Pe940 + #pragma diag_suppress=Pe177 + + #define __enable_irq __enable_interrupt + #define __disable_irq __disable_interrupt + #define __enable_fault_irq __enable_fiq + #define __disable_fault_irq __disable_fiq + #define __NOP __no_operation + + #define __get_xPSR __get_PSR + + __IAR_FT void __set_mode(uint32_t mode) + { + __ASM volatile("MSR cpsr_c, %0" : : "r" (mode) : "memory"); + } + + __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr) + { + return __LDREX((unsigned long *)ptr); + } + + __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr) + { + return __STREX(value, (unsigned long *)ptr); + } + + + __IAR_FT uint32_t __RRX(uint32_t value) + { + uint32_t result; + __ASM("RRX %0, %1" : "=r"(result) : "r" (value) : "cc"); + return(result); + } + + + __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2) + { + return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2)); + } + + __IAR_FT uint32_t __get_FPEXC(void) + { + #if (__FPU_PRESENT == 1) + uint32_t result; + __ASM volatile("VMRS %0, fpexc" : "=r" (result) : : "memory"); + return(result); + #else + return(0); + #endif + } + + __IAR_FT void __set_FPEXC(uint32_t fpexc) + { + #if (__FPU_PRESENT == 1) + __ASM volatile ("VMSR fpexc, %0" : : "r" (fpexc) : "memory"); + #endif + } + + + #define __get_CP(cp, op1, Rt, CRn, CRm, op2) \ + __ASM volatile("MRC p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : "=r" (Rt) : : "memory" ) + #define __set_CP(cp, op1, Rt, CRn, CRm, op2) \ + __ASM volatile("MCR p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : : "r" (Rt) : "memory" ) + #define __get_CP64(cp, op1, Rt, CRm) \ + __ASM volatile("MRRC p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : "=r" (Rt) : : "memory" ) + #define __set_CP64(cp, op1, Rt, CRm) \ + __ASM volatile("MCRR p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : : "r" (Rt) : "memory" ) + + #include "cmsis_cp15.h" + +#endif /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + +#define __BKPT(value) __asm volatile ("BKPT %0" : : "i"(value)) + + +__IAR_FT uint32_t __get_SP_usr(void) +{ + uint32_t cpsr; + uint32_t result; + __ASM volatile( + "MRS %0, cpsr \n" + "CPS #0x1F \n" // no effect in USR mode + "MOV %1, sp \n" + "MSR cpsr_c, %2 \n" // no effect in USR mode + "ISB" : "=r"(cpsr), "=r"(result) : "r"(cpsr) : "memory" + ); + return result; +} + +__IAR_FT void __set_SP_usr(uint32_t topOfProcStack) +{ + uint32_t cpsr; + __ASM volatile( + "MRS %0, cpsr \n" + "CPS #0x1F \n" // no effect in USR mode + "MOV sp, %1 \n" + "MSR cpsr_c, %2 \n" // no effect in USR mode + "ISB" : "=r"(cpsr) : "r" (topOfProcStack), "r"(cpsr) : "memory" + ); +} + +#define __get_mode() (__get_CPSR() & 0x1FU) + +__STATIC_INLINE +void __FPU_Enable(void) +{ + __ASM volatile( + //Permit access to VFP/NEON, registers by modifying CPACR + " MRC p15,0,R1,c1,c0,2 \n" + " ORR R1,R1,#0x00F00000 \n" + " MCR p15,0,R1,c1,c0,2 \n" + + //Ensure that subsequent instructions occur in the context of VFP/NEON access permitted + " ISB \n" + + //Enable VFP/NEON + " VMRS R1,FPEXC \n" + " ORR R1,R1,#0x40000000 \n" + " VMSR FPEXC,R1 \n" + + //Initialise VFP/NEON registers to 0 + " MOV R2,#0 \n" + + //Initialise D16 registers to 0 + " VMOV D0, R2,R2 \n" + " VMOV D1, R2,R2 \n" + " VMOV D2, R2,R2 \n" + " VMOV D3, R2,R2 \n" + " VMOV D4, R2,R2 \n" + " VMOV D5, R2,R2 \n" + " VMOV D6, R2,R2 \n" + " VMOV D7, R2,R2 \n" + " VMOV D8, R2,R2 \n" + " VMOV D9, R2,R2 \n" + " VMOV D10,R2,R2 \n" + " VMOV D11,R2,R2 \n" + " VMOV D12,R2,R2 \n" + " VMOV D13,R2,R2 \n" + " VMOV D14,R2,R2 \n" + " VMOV D15,R2,R2 \n" + +#ifdef __ARM_ADVANCED_SIMD__ + //Initialise D32 registers to 0 + " VMOV D16,R2,R2 \n" + " VMOV D17,R2,R2 \n" + " VMOV D18,R2,R2 \n" + " VMOV D19,R2,R2 \n" + " VMOV D20,R2,R2 \n" + " VMOV D21,R2,R2 \n" + " VMOV D22,R2,R2 \n" + " VMOV D23,R2,R2 \n" + " VMOV D24,R2,R2 \n" + " VMOV D25,R2,R2 \n" + " VMOV D26,R2,R2 \n" + " VMOV D27,R2,R2 \n" + " VMOV D28,R2,R2 \n" + " VMOV D29,R2,R2 \n" + " VMOV D30,R2,R2 \n" + " VMOV D31,R2,R2 \n" +#endif + + //Initialise FPSCR to a known state + " VMRS R2,FPSCR \n" + " MOV32 R3,#0x00086060 \n" //Mask off all bits that do not have to be preserved. Non-preserved bits can/should be zero. + " AND R2,R2,R3 \n" + " VMSR FPSCR,R2 \n"); +} + + + +#undef __IAR_FT +#undef __ICCARM_V8 + +#pragma diag_default=Pe940 +#pragma diag_default=Pe177 + +#endif /* __CMSIS_ICCARM_H__ */ diff --git a/Drivers/CMSIS/Core_A/Include/core_ca.h b/Drivers/CMSIS/Core_A/Include/core_ca.h new file mode 100644 index 0000000..c7b451f --- /dev/null +++ b/Drivers/CMSIS/Core_A/Include/core_ca.h @@ -0,0 +1,2614 @@ +/**************************************************************************//** + * @file core_ca.h + * @brief CMSIS Cortex-A Core Peripheral Access Layer Header File + * @version V1.0.1 + * @date 07. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef __CORE_CA_H_GENERIC +#define __CORE_CA_H_GENERIC + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ + +/* CMSIS CA definitions */ +#define __CA_CMSIS_VERSION_MAIN (1U) /*!< \brief [31:16] CMSIS-Core(A) main version */ +#define __CA_CMSIS_VERSION_SUB (1U) /*!< \brief [15:0] CMSIS-Core(A) sub version */ +#define __CA_CMSIS_VERSION ((__CA_CMSIS_VERSION_MAIN << 16U) | \ + __CA_CMSIS_VERSION_SUB ) /*!< \brief CMSIS-Core(A) version number */ + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TMS470__ ) + #if defined __TI_VFP_SUPPORT__ + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if (__FPU_PRESENT == 1) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CA_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CA_H_DEPENDANT +#define __CORE_CA_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + + /* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CA_REV + #define __CA_REV 0x0000U + #warning "__CA_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __GIC_PRESENT + #define __GIC_PRESENT 1U + #warning "__GIC_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __TIM_PRESENT + #define __TIM_PRESENT 1U + #warning "__TIM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __L2C_PRESENT + #define __L2C_PRESENT 0U + #warning "__L2C_PRESENT not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +#ifdef __cplusplus + #define __I volatile /*!< \brief Defines 'read only' permissions */ +#else + #define __I volatile const /*!< \brief Defines 'read only' permissions */ +#endif +#define __O volatile /*!< \brief Defines 'write only' permissions */ +#define __IO volatile /*!< \brief Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*!< \brief Defines 'read only' structure member permissions */ +#define __OM volatile /*!< \brief Defines 'write only' structure member permissions */ +#define __IOM volatile /*!< \brief Defines 'read / write' structure member permissions */ +#define RESERVED(N, T) T RESERVED##N; // placeholder struct members used for "reserved" areas + + /******************************************************************************* + * Register Abstraction + Core Register contain: + - CPSR + - CP15 Registers + - L2C-310 Cache Controller + - Generic Interrupt Controller Distributor + - Generic Interrupt Controller Interface + ******************************************************************************/ + +/* Core Register CPSR */ +typedef union +{ + struct + { + uint32_t M:5; /*!< \brief bit: 0.. 4 Mode field */ + uint32_t T:1; /*!< \brief bit: 5 Thumb execution state bit */ + uint32_t F:1; /*!< \brief bit: 6 FIQ mask bit */ + uint32_t I:1; /*!< \brief bit: 7 IRQ mask bit */ + uint32_t A:1; /*!< \brief bit: 8 Asynchronous abort mask bit */ + uint32_t E:1; /*!< \brief bit: 9 Endianness execution state bit */ + uint32_t IT1:6; /*!< \brief bit: 10..15 If-Then execution state bits 2-7 */ + uint32_t GE:4; /*!< \brief bit: 16..19 Greater than or Equal flags */ + RESERVED(0:4, uint32_t) + uint32_t J:1; /*!< \brief bit: 24 Jazelle bit */ + uint32_t IT0:2; /*!< \brief bit: 25..26 If-Then execution state bits 0-1 */ + uint32_t Q:1; /*!< \brief bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< \brief bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< \brief bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< \brief bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< \brief bit: 31 Negative condition code flag */ + } b; /*!< \brief Structure used for bit access */ + uint32_t w; /*!< \brief Type used for word access */ +} CPSR_Type; + + + +/* CPSR Register Definitions */ +#define CPSR_N_Pos 31U /*!< \brief CPSR: N Position */ +#define CPSR_N_Msk (1UL << CPSR_N_Pos) /*!< \brief CPSR: N Mask */ + +#define CPSR_Z_Pos 30U /*!< \brief CPSR: Z Position */ +#define CPSR_Z_Msk (1UL << CPSR_Z_Pos) /*!< \brief CPSR: Z Mask */ + +#define CPSR_C_Pos 29U /*!< \brief CPSR: C Position */ +#define CPSR_C_Msk (1UL << CPSR_C_Pos) /*!< \brief CPSR: C Mask */ + +#define CPSR_V_Pos 28U /*!< \brief CPSR: V Position */ +#define CPSR_V_Msk (1UL << CPSR_V_Pos) /*!< \brief CPSR: V Mask */ + +#define CPSR_Q_Pos 27U /*!< \brief CPSR: Q Position */ +#define CPSR_Q_Msk (1UL << CPSR_Q_Pos) /*!< \brief CPSR: Q Mask */ + +#define CPSR_IT0_Pos 25U /*!< \brief CPSR: IT0 Position */ +#define CPSR_IT0_Msk (3UL << CPSR_IT0_Pos) /*!< \brief CPSR: IT0 Mask */ + +#define CPSR_J_Pos 24U /*!< \brief CPSR: J Position */ +#define CPSR_J_Msk (1UL << CPSR_J_Pos) /*!< \brief CPSR: J Mask */ + +#define CPSR_GE_Pos 16U /*!< \brief CPSR: GE Position */ +#define CPSR_GE_Msk (0xFUL << CPSR_GE_Pos) /*!< \brief CPSR: GE Mask */ + +#define CPSR_IT1_Pos 10U /*!< \brief CPSR: IT1 Position */ +#define CPSR_IT1_Msk (0x3FUL << CPSR_IT1_Pos) /*!< \brief CPSR: IT1 Mask */ + +#define CPSR_E_Pos 9U /*!< \brief CPSR: E Position */ +#define CPSR_E_Msk (1UL << CPSR_E_Pos) /*!< \brief CPSR: E Mask */ + +#define CPSR_A_Pos 8U /*!< \brief CPSR: A Position */ +#define CPSR_A_Msk (1UL << CPSR_A_Pos) /*!< \brief CPSR: A Mask */ + +#define CPSR_I_Pos 7U /*!< \brief CPSR: I Position */ +#define CPSR_I_Msk (1UL << CPSR_I_Pos) /*!< \brief CPSR: I Mask */ + +#define CPSR_F_Pos 6U /*!< \brief CPSR: F Position */ +#define CPSR_F_Msk (1UL << CPSR_F_Pos) /*!< \brief CPSR: F Mask */ + +#define CPSR_T_Pos 5U /*!< \brief CPSR: T Position */ +#define CPSR_T_Msk (1UL << CPSR_T_Pos) /*!< \brief CPSR: T Mask */ + +#define CPSR_M_Pos 0U /*!< \brief CPSR: M Position */ +#define CPSR_M_Msk (0x1FUL << CPSR_M_Pos) /*!< \brief CPSR: M Mask */ + +#define CPSR_M_USR 0x10U /*!< \brief CPSR: M User mode (PL0) */ +#define CPSR_M_FIQ 0x11U /*!< \brief CPSR: M Fast Interrupt mode (PL1) */ +#define CPSR_M_IRQ 0x12U /*!< \brief CPSR: M Interrupt mode (PL1) */ +#define CPSR_M_SVC 0x13U /*!< \brief CPSR: M Supervisor mode (PL1) */ +#define CPSR_M_MON 0x16U /*!< \brief CPSR: M Monitor mode (PL1) */ +#define CPSR_M_ABT 0x17U /*!< \brief CPSR: M Abort mode (PL1) */ +#define CPSR_M_HYP 0x1AU /*!< \brief CPSR: M Hypervisor mode (PL2) */ +#define CPSR_M_UND 0x1BU /*!< \brief CPSR: M Undefined mode (PL1) */ +#define CPSR_M_SYS 0x1FU /*!< \brief CPSR: M System mode (PL1) */ + +/* CP15 Register SCTLR */ +typedef union +{ + struct + { + uint32_t M:1; /*!< \brief bit: 0 MMU enable */ + uint32_t A:1; /*!< \brief bit: 1 Alignment check enable */ + uint32_t C:1; /*!< \brief bit: 2 Cache enable */ + RESERVED(0:2, uint32_t) + uint32_t CP15BEN:1; /*!< \brief bit: 5 CP15 barrier enable */ + RESERVED(1:1, uint32_t) + uint32_t B:1; /*!< \brief bit: 7 Endianness model */ + RESERVED(2:2, uint32_t) + uint32_t SW:1; /*!< \brief bit: 10 SWP and SWPB enable */ + uint32_t Z:1; /*!< \brief bit: 11 Branch prediction enable */ + uint32_t I:1; /*!< \brief bit: 12 Instruction cache enable */ + uint32_t V:1; /*!< \brief bit: 13 Vectors bit */ + uint32_t RR:1; /*!< \brief bit: 14 Round Robin select */ + RESERVED(3:2, uint32_t) + uint32_t HA:1; /*!< \brief bit: 17 Hardware Access flag enable */ + RESERVED(4:1, uint32_t) + uint32_t WXN:1; /*!< \brief bit: 19 Write permission implies XN */ + uint32_t UWXN:1; /*!< \brief bit: 20 Unprivileged write permission implies PL1 XN */ + uint32_t FI:1; /*!< \brief bit: 21 Fast interrupts configuration enable */ + uint32_t U:1; /*!< \brief bit: 22 Alignment model */ + RESERVED(5:1, uint32_t) + uint32_t VE:1; /*!< \brief bit: 24 Interrupt Vectors Enable */ + uint32_t EE:1; /*!< \brief bit: 25 Exception Endianness */ + RESERVED(6:1, uint32_t) + uint32_t NMFI:1; /*!< \brief bit: 27 Non-maskable FIQ (NMFI) support */ + uint32_t TRE:1; /*!< \brief bit: 28 TEX remap enable. */ + uint32_t AFE:1; /*!< \brief bit: 29 Access flag enable */ + uint32_t TE:1; /*!< \brief bit: 30 Thumb Exception enable */ + RESERVED(7:1, uint32_t) + } b; /*!< \brief Structure used for bit access */ + uint32_t w; /*!< \brief Type used for word access */ +} SCTLR_Type; + +#define SCTLR_TE_Pos 30U /*!< \brief SCTLR: TE Position */ +#define SCTLR_TE_Msk (1UL << SCTLR_TE_Pos) /*!< \brief SCTLR: TE Mask */ + +#define SCTLR_AFE_Pos 29U /*!< \brief SCTLR: AFE Position */ +#define SCTLR_AFE_Msk (1UL << SCTLR_AFE_Pos) /*!< \brief SCTLR: AFE Mask */ + +#define SCTLR_TRE_Pos 28U /*!< \brief SCTLR: TRE Position */ +#define SCTLR_TRE_Msk (1UL << SCTLR_TRE_Pos) /*!< \brief SCTLR: TRE Mask */ + +#define SCTLR_NMFI_Pos 27U /*!< \brief SCTLR: NMFI Position */ +#define SCTLR_NMFI_Msk (1UL << SCTLR_NMFI_Pos) /*!< \brief SCTLR: NMFI Mask */ + +#define SCTLR_EE_Pos 25U /*!< \brief SCTLR: EE Position */ +#define SCTLR_EE_Msk (1UL << SCTLR_EE_Pos) /*!< \brief SCTLR: EE Mask */ + +#define SCTLR_VE_Pos 24U /*!< \brief SCTLR: VE Position */ +#define SCTLR_VE_Msk (1UL << SCTLR_VE_Pos) /*!< \brief SCTLR: VE Mask */ + +#define SCTLR_U_Pos 22U /*!< \brief SCTLR: U Position */ +#define SCTLR_U_Msk (1UL << SCTLR_U_Pos) /*!< \brief SCTLR: U Mask */ + +#define SCTLR_FI_Pos 21U /*!< \brief SCTLR: FI Position */ +#define SCTLR_FI_Msk (1UL << SCTLR_FI_Pos) /*!< \brief SCTLR: FI Mask */ + +#define SCTLR_UWXN_Pos 20U /*!< \brief SCTLR: UWXN Position */ +#define SCTLR_UWXN_Msk (1UL << SCTLR_UWXN_Pos) /*!< \brief SCTLR: UWXN Mask */ + +#define SCTLR_WXN_Pos 19U /*!< \brief SCTLR: WXN Position */ +#define SCTLR_WXN_Msk (1UL << SCTLR_WXN_Pos) /*!< \brief SCTLR: WXN Mask */ + +#define SCTLR_HA_Pos 17U /*!< \brief SCTLR: HA Position */ +#define SCTLR_HA_Msk (1UL << SCTLR_HA_Pos) /*!< \brief SCTLR: HA Mask */ + +#define SCTLR_RR_Pos 14U /*!< \brief SCTLR: RR Position */ +#define SCTLR_RR_Msk (1UL << SCTLR_RR_Pos) /*!< \brief SCTLR: RR Mask */ + +#define SCTLR_V_Pos 13U /*!< \brief SCTLR: V Position */ +#define SCTLR_V_Msk (1UL << SCTLR_V_Pos) /*!< \brief SCTLR: V Mask */ + +#define SCTLR_I_Pos 12U /*!< \brief SCTLR: I Position */ +#define SCTLR_I_Msk (1UL << SCTLR_I_Pos) /*!< \brief SCTLR: I Mask */ + +#define SCTLR_Z_Pos 11U /*!< \brief SCTLR: Z Position */ +#define SCTLR_Z_Msk (1UL << SCTLR_Z_Pos) /*!< \brief SCTLR: Z Mask */ + +#define SCTLR_SW_Pos 10U /*!< \brief SCTLR: SW Position */ +#define SCTLR_SW_Msk (1UL << SCTLR_SW_Pos) /*!< \brief SCTLR: SW Mask */ + +#define SCTLR_B_Pos 7U /*!< \brief SCTLR: B Position */ +#define SCTLR_B_Msk (1UL << SCTLR_B_Pos) /*!< \brief SCTLR: B Mask */ + +#define SCTLR_CP15BEN_Pos 5U /*!< \brief SCTLR: CP15BEN Position */ +#define SCTLR_CP15BEN_Msk (1UL << SCTLR_CP15BEN_Pos) /*!< \brief SCTLR: CP15BEN Mask */ + +#define SCTLR_C_Pos 2U /*!< \brief SCTLR: C Position */ +#define SCTLR_C_Msk (1UL << SCTLR_C_Pos) /*!< \brief SCTLR: C Mask */ + +#define SCTLR_A_Pos 1U /*!< \brief SCTLR: A Position */ +#define SCTLR_A_Msk (1UL << SCTLR_A_Pos) /*!< \brief SCTLR: A Mask */ + +#define SCTLR_M_Pos 0U /*!< \brief SCTLR: M Position */ +#define SCTLR_M_Msk (1UL << SCTLR_M_Pos) /*!< \brief SCTLR: M Mask */ + +/* CP15 Register ACTLR */ +typedef union +{ +#if __CORTEX_A == 5 || defined(DOXYGEN) + /** \brief Structure used for bit access on Cortex-A5 */ + struct + { + uint32_t FW:1; /*!< \brief bit: 0 Cache and TLB maintenance broadcast */ + RESERVED(0:5, uint32_t) + uint32_t SMP:1; /*!< \brief bit: 6 Enables coherent requests to the processor */ + uint32_t EXCL:1; /*!< \brief bit: 7 Exclusive L1/L2 cache control */ + RESERVED(1:2, uint32_t) + uint32_t DODMBS:1; /*!< \brief bit: 10 Disable optimized data memory barrier behavior */ + uint32_t DWBST:1; /*!< \brief bit: 11 AXI data write bursts to Normal memory */ + uint32_t RADIS:1; /*!< \brief bit: 12 L1 Data Cache read-allocate mode disable */ + uint32_t L1PCTL:2; /*!< \brief bit:13..14 L1 Data prefetch control */ + uint32_t BP:2; /*!< \brief bit:16..15 Branch prediction policy */ + uint32_t RSDIS:1; /*!< \brief bit: 17 Disable return stack operation */ + uint32_t BTDIS:1; /*!< \brief bit: 18 Disable indirect Branch Target Address Cache (BTAC) */ + RESERVED(3:9, uint32_t) + uint32_t DBDI:1; /*!< \brief bit: 28 Disable branch dual issue */ + RESERVED(7:3, uint32_t) + } b; +#endif +#if __CORTEX_A == 7 || defined(DOXYGEN) + /** \brief Structure used for bit access on Cortex-A7 */ + struct + { + RESERVED(0:6, uint32_t) + uint32_t SMP:1; /*!< \brief bit: 6 Enables coherent requests to the processor */ + RESERVED(1:3, uint32_t) + uint32_t DODMBS:1; /*!< \brief bit: 10 Disable optimized data memory barrier behavior */ + uint32_t L2RADIS:1; /*!< \brief bit: 11 L2 Data Cache read-allocate mode disable */ + uint32_t L1RADIS:1; /*!< \brief bit: 12 L1 Data Cache read-allocate mode disable */ + uint32_t L1PCTL:2; /*!< \brief bit:13..14 L1 Data prefetch control */ + uint32_t DDVM:1; /*!< \brief bit: 15 Disable Distributed Virtual Memory (DVM) transactions */ + RESERVED(3:12, uint32_t) + uint32_t DDI:1; /*!< \brief bit: 28 Disable dual issue */ + RESERVED(7:3, uint32_t) + } b; +#endif +#if __CORTEX_A == 9 || defined(DOXYGEN) + /** \brief Structure used for bit access on Cortex-A9 */ + struct + { + uint32_t FW:1; /*!< \brief bit: 0 Cache and TLB maintenance broadcast */ + RESERVED(0:1, uint32_t) + uint32_t L1PE:1; /*!< \brief bit: 2 Dside prefetch */ + uint32_t WFLZM:1; /*!< \brief bit: 3 Cache and TLB maintenance broadcast */ + RESERVED(1:2, uint32_t) + uint32_t SMP:1; /*!< \brief bit: 6 Enables coherent requests to the processor */ + uint32_t EXCL:1; /*!< \brief bit: 7 Exclusive L1/L2 cache control */ + uint32_t AOW:1; /*!< \brief bit: 8 Enable allocation in one cache way only */ + uint32_t PARITY:1; /*!< \brief bit: 9 Support for parity checking, if implemented */ + RESERVED(7:22, uint32_t) + } b; +#endif + uint32_t w; /*!< \brief Type used for word access */ +} ACTLR_Type; + +#define ACTLR_DDI_Pos 28U /*!< \brief ACTLR: DDI Position */ +#define ACTLR_DDI_Msk (1UL << ACTLR_DDI_Pos) /*!< \brief ACTLR: DDI Mask */ + +#define ACTLR_DBDI_Pos 28U /*!< \brief ACTLR: DBDI Position */ +#define ACTLR_DBDI_Msk (1UL << ACTLR_DBDI_Pos) /*!< \brief ACTLR: DBDI Mask */ + +#define ACTLR_BTDIS_Pos 18U /*!< \brief ACTLR: BTDIS Position */ +#define ACTLR_BTDIS_Msk (1UL << ACTLR_BTDIS_Pos) /*!< \brief ACTLR: BTDIS Mask */ + +#define ACTLR_RSDIS_Pos 17U /*!< \brief ACTLR: RSDIS Position */ +#define ACTLR_RSDIS_Msk (1UL << ACTLR_RSDIS_Pos) /*!< \brief ACTLR: RSDIS Mask */ + +#define ACTLR_BP_Pos 15U /*!< \brief ACTLR: BP Position */ +#define ACTLR_BP_Msk (3UL << ACTLR_BP_Pos) /*!< \brief ACTLR: BP Mask */ + +#define ACTLR_DDVM_Pos 15U /*!< \brief ACTLR: DDVM Position */ +#define ACTLR_DDVM_Msk (1UL << ACTLR_DDVM_Pos) /*!< \brief ACTLR: DDVM Mask */ + +#define ACTLR_L1PCTL_Pos 13U /*!< \brief ACTLR: L1PCTL Position */ +#define ACTLR_L1PCTL_Msk (3UL << ACTLR_L1PCTL_Pos) /*!< \brief ACTLR: L1PCTL Mask */ + +#define ACTLR_RADIS_Pos 12U /*!< \brief ACTLR: RADIS Position */ +#define ACTLR_RADIS_Msk (1UL << ACTLR_RADIS_Pos) /*!< \brief ACTLR: RADIS Mask */ + +#define ACTLR_L1RADIS_Pos 12U /*!< \brief ACTLR: L1RADIS Position */ +#define ACTLR_L1RADIS_Msk (1UL << ACTLR_L1RADIS_Pos) /*!< \brief ACTLR: L1RADIS Mask */ + +#define ACTLR_DWBST_Pos 11U /*!< \brief ACTLR: DWBST Position */ +#define ACTLR_DWBST_Msk (1UL << ACTLR_DWBST_Pos) /*!< \brief ACTLR: DWBST Mask */ + +#define ACTLR_L2RADIS_Pos 11U /*!< \brief ACTLR: L2RADIS Position */ +#define ACTLR_L2RADIS_Msk (1UL << ACTLR_L2RADIS_Pos) /*!< \brief ACTLR: L2RADIS Mask */ + +#define ACTLR_DODMBS_Pos 10U /*!< \brief ACTLR: DODMBS Position */ +#define ACTLR_DODMBS_Msk (1UL << ACTLR_DODMBS_Pos) /*!< \brief ACTLR: DODMBS Mask */ + +#define ACTLR_PARITY_Pos 9U /*!< \brief ACTLR: PARITY Position */ +#define ACTLR_PARITY_Msk (1UL << ACTLR_PARITY_Pos) /*!< \brief ACTLR: PARITY Mask */ + +#define ACTLR_AOW_Pos 8U /*!< \brief ACTLR: AOW Position */ +#define ACTLR_AOW_Msk (1UL << ACTLR_AOW_Pos) /*!< \brief ACTLR: AOW Mask */ + +#define ACTLR_EXCL_Pos 7U /*!< \brief ACTLR: EXCL Position */ +#define ACTLR_EXCL_Msk (1UL << ACTLR_EXCL_Pos) /*!< \brief ACTLR: EXCL Mask */ + +#define ACTLR_SMP_Pos 6U /*!< \brief ACTLR: SMP Position */ +#define ACTLR_SMP_Msk (1UL << ACTLR_SMP_Pos) /*!< \brief ACTLR: SMP Mask */ + +#define ACTLR_WFLZM_Pos 3U /*!< \brief ACTLR: WFLZM Position */ +#define ACTLR_WFLZM_Msk (1UL << ACTLR_WFLZM_Pos) /*!< \brief ACTLR: WFLZM Mask */ + +#define ACTLR_L1PE_Pos 2U /*!< \brief ACTLR: L1PE Position */ +#define ACTLR_L1PE_Msk (1UL << ACTLR_L1PE_Pos) /*!< \brief ACTLR: L1PE Mask */ + +#define ACTLR_FW_Pos 0U /*!< \brief ACTLR: FW Position */ +#define ACTLR_FW_Msk (1UL << ACTLR_FW_Pos) /*!< \brief ACTLR: FW Mask */ + +/* CP15 Register CPACR */ +typedef union +{ + struct + { + uint32_t CP0:2; /*!< \brief bit: 0..1 Access rights for coprocessor 0 */ + uint32_t CP1:2; /*!< \brief bit: 2..3 Access rights for coprocessor 1 */ + uint32_t CP2:2; /*!< \brief bit: 4..5 Access rights for coprocessor 2 */ + uint32_t CP3:2; /*!< \brief bit: 6..7 Access rights for coprocessor 3 */ + uint32_t CP4:2; /*!< \brief bit: 8..9 Access rights for coprocessor 4 */ + uint32_t CP5:2; /*!< \brief bit:10..11 Access rights for coprocessor 5 */ + uint32_t CP6:2; /*!< \brief bit:12..13 Access rights for coprocessor 6 */ + uint32_t CP7:2; /*!< \brief bit:14..15 Access rights for coprocessor 7 */ + uint32_t CP8:2; /*!< \brief bit:16..17 Access rights for coprocessor 8 */ + uint32_t CP9:2; /*!< \brief bit:18..19 Access rights for coprocessor 9 */ + uint32_t CP10:2; /*!< \brief bit:20..21 Access rights for coprocessor 10 */ + uint32_t CP11:2; /*!< \brief bit:22..23 Access rights for coprocessor 11 */ + uint32_t CP12:2; /*!< \brief bit:24..25 Access rights for coprocessor 11 */ + uint32_t CP13:2; /*!< \brief bit:26..27 Access rights for coprocessor 11 */ + uint32_t TRCDIS:1; /*!< \brief bit: 28 Disable CP14 access to trace registers */ + RESERVED(0:1, uint32_t) + uint32_t D32DIS:1; /*!< \brief bit: 30 Disable use of registers D16-D31 of the VFP register file */ + uint32_t ASEDIS:1; /*!< \brief bit: 31 Disable Advanced SIMD Functionality */ + } b; /*!< \brief Structure used for bit access */ + uint32_t w; /*!< \brief Type used for word access */ +} CPACR_Type; + +#define CPACR_ASEDIS_Pos 31U /*!< \brief CPACR: ASEDIS Position */ +#define CPACR_ASEDIS_Msk (1UL << CPACR_ASEDIS_Pos) /*!< \brief CPACR: ASEDIS Mask */ + +#define CPACR_D32DIS_Pos 30U /*!< \brief CPACR: D32DIS Position */ +#define CPACR_D32DIS_Msk (1UL << CPACR_D32DIS_Pos) /*!< \brief CPACR: D32DIS Mask */ + +#define CPACR_TRCDIS_Pos 28U /*!< \brief CPACR: D32DIS Position */ +#define CPACR_TRCDIS_Msk (1UL << CPACR_D32DIS_Pos) /*!< \brief CPACR: D32DIS Mask */ + +#define CPACR_CP_Pos_(n) (n*2U) /*!< \brief CPACR: CPn Position */ +#define CPACR_CP_Msk_(n) (3UL << CPACR_CP_Pos_(n)) /*!< \brief CPACR: CPn Mask */ + +#define CPACR_CP_NA 0U /*!< \brief CPACR CPn field: Access denied. */ +#define CPACR_CP_PL1 1U /*!< \brief CPACR CPn field: Accessible from PL1 only. */ +#define CPACR_CP_FA 3U /*!< \brief CPACR CPn field: Full access. */ + +/* CP15 Register DFSR */ +typedef union +{ + struct + { + uint32_t FS0:4; /*!< \brief bit: 0.. 3 Fault Status bits bit 0-3 */ + uint32_t Domain:4; /*!< \brief bit: 4.. 7 Fault on which domain */ + RESERVED(0:1, uint32_t) + uint32_t LPAE:1; /*!< \brief bit: 9 Large Physical Address Extension */ + uint32_t FS1:1; /*!< \brief bit: 10 Fault Status bits bit 4 */ + uint32_t WnR:1; /*!< \brief bit: 11 Write not Read bit */ + uint32_t ExT:1; /*!< \brief bit: 12 External abort type */ + uint32_t CM:1; /*!< \brief bit: 13 Cache maintenance fault */ + RESERVED(1:18, uint32_t) + } s; /*!< \brief Structure used for bit access in short format */ + struct + { + uint32_t STATUS:5; /*!< \brief bit: 0.. 5 Fault Status bits */ + RESERVED(0:3, uint32_t) + uint32_t LPAE:1; /*!< \brief bit: 9 Large Physical Address Extension */ + RESERVED(1:1, uint32_t) + uint32_t WnR:1; /*!< \brief bit: 11 Write not Read bit */ + uint32_t ExT:1; /*!< \brief bit: 12 External abort type */ + uint32_t CM:1; /*!< \brief bit: 13 Cache maintenance fault */ + RESERVED(2:18, uint32_t) + } l; /*!< \brief Structure used for bit access in long format */ + uint32_t w; /*!< \brief Type used for word access */ +} DFSR_Type; + +#define DFSR_CM_Pos 13U /*!< \brief DFSR: CM Position */ +#define DFSR_CM_Msk (1UL << DFSR_CM_Pos) /*!< \brief DFSR: CM Mask */ + +#define DFSR_Ext_Pos 12U /*!< \brief DFSR: Ext Position */ +#define DFSR_Ext_Msk (1UL << DFSR_Ext_Pos) /*!< \brief DFSR: Ext Mask */ + +#define DFSR_WnR_Pos 11U /*!< \brief DFSR: WnR Position */ +#define DFSR_WnR_Msk (1UL << DFSR_WnR_Pos) /*!< \brief DFSR: WnR Mask */ + +#define DFSR_FS1_Pos 10U /*!< \brief DFSR: FS1 Position */ +#define DFSR_FS1_Msk (1UL << DFSR_FS1_Pos) /*!< \brief DFSR: FS1 Mask */ + +#define DFSR_LPAE_Pos 9U /*!< \brief DFSR: LPAE Position */ +#define DFSR_LPAE_Msk (1UL << DFSR_LPAE_Pos) /*!< \brief DFSR: LPAE Mask */ + +#define DFSR_Domain_Pos 4U /*!< \brief DFSR: Domain Position */ +#define DFSR_Domain_Msk (0xFUL << DFSR_Domain_Pos) /*!< \brief DFSR: Domain Mask */ + +#define DFSR_FS0_Pos 0U /*!< \brief DFSR: FS0 Position */ +#define DFSR_FS0_Msk (0xFUL << DFSR_FS0_Pos) /*!< \brief DFSR: FS0 Mask */ + +#define DFSR_STATUS_Pos 0U /*!< \brief DFSR: STATUS Position */ +#define DFSR_STATUS_Msk (0x3FUL << DFSR_STATUS_Pos) /*!< \brief DFSR: STATUS Mask */ + +/* CP15 Register IFSR */ +typedef union +{ + struct + { + uint32_t FS0:4; /*!< \brief bit: 0.. 3 Fault Status bits bit 0-3 */ + RESERVED(0:5, uint32_t) + uint32_t LPAE:1; /*!< \brief bit: 9 Large Physical Address Extension */ + uint32_t FS1:1; /*!< \brief bit: 10 Fault Status bits bit 4 */ + RESERVED(1:1, uint32_t) + uint32_t ExT:1; /*!< \brief bit: 12 External abort type */ + RESERVED(2:19, uint32_t) + } s; /*!< \brief Structure used for bit access in short format */ + struct + { + uint32_t STATUS:6; /*!< \brief bit: 0.. 5 Fault Status bits */ + RESERVED(0:3, uint32_t) + uint32_t LPAE:1; /*!< \brief bit: 9 Large Physical Address Extension */ + RESERVED(1:2, uint32_t) + uint32_t ExT:1; /*!< \brief bit: 12 External abort type */ + RESERVED(2:19, uint32_t) + } l; /*!< \brief Structure used for bit access in long format */ + uint32_t w; /*!< \brief Type used for word access */ +} IFSR_Type; + +#define IFSR_ExT_Pos 12U /*!< \brief IFSR: ExT Position */ +#define IFSR_ExT_Msk (1UL << IFSR_ExT_Pos) /*!< \brief IFSR: ExT Mask */ + +#define IFSR_FS1_Pos 10U /*!< \brief IFSR: FS1 Position */ +#define IFSR_FS1_Msk (1UL << IFSR_FS1_Pos) /*!< \brief IFSR: FS1 Mask */ + +#define IFSR_LPAE_Pos 9U /*!< \brief IFSR: LPAE Position */ +#define IFSR_LPAE_Msk (0x1UL << IFSR_LPAE_Pos) /*!< \brief IFSR: LPAE Mask */ + +#define IFSR_FS0_Pos 0U /*!< \brief IFSR: FS0 Position */ +#define IFSR_FS0_Msk (0xFUL << IFSR_FS0_Pos) /*!< \brief IFSR: FS0 Mask */ + +#define IFSR_STATUS_Pos 0U /*!< \brief IFSR: STATUS Position */ +#define IFSR_STATUS_Msk (0x3FUL << IFSR_STATUS_Pos) /*!< \brief IFSR: STATUS Mask */ + +/* CP15 Register ISR */ +typedef union +{ + struct + { + RESERVED(0:6, uint32_t) + uint32_t F:1; /*!< \brief bit: 6 FIQ pending bit */ + uint32_t I:1; /*!< \brief bit: 7 IRQ pending bit */ + uint32_t A:1; /*!< \brief bit: 8 External abort pending bit */ + RESERVED(1:23, uint32_t) + } b; /*!< \brief Structure used for bit access */ + uint32_t w; /*!< \brief Type used for word access */ +} ISR_Type; + +#define ISR_A_Pos 13U /*!< \brief ISR: A Position */ +#define ISR_A_Msk (1UL << ISR_A_Pos) /*!< \brief ISR: A Mask */ + +#define ISR_I_Pos 12U /*!< \brief ISR: I Position */ +#define ISR_I_Msk (1UL << ISR_I_Pos) /*!< \brief ISR: I Mask */ + +#define ISR_F_Pos 11U /*!< \brief ISR: F Position */ +#define ISR_F_Msk (1UL << ISR_F_Pos) /*!< \brief ISR: F Mask */ + +/* DACR Register */ +#define DACR_D_Pos_(n) (2U*n) /*!< \brief DACR: Dn Position */ +#define DACR_D_Msk_(n) (3UL << DACR_D_Pos_(n)) /*!< \brief DACR: Dn Mask */ +#define DACR_Dn_NOACCESS 0U /*!< \brief DACR Dn field: No access */ +#define DACR_Dn_CLIENT 1U /*!< \brief DACR Dn field: Client */ +#define DACR_Dn_MANAGER 3U /*!< \brief DACR Dn field: Manager */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param [in] field Name of the register bit field. + \param [in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param [in] field Name of the register bit field. + \param [in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + + +/** + \brief Union type to access the L2C_310 Cache Controller. +*/ +#if (__L2C_PRESENT == 1U) || defined(DOXYGEN) +typedef struct +{ + __IM uint32_t CACHE_ID; /*!< \brief Offset: 0x0000 (R/ ) Cache ID Register */ + __IM uint32_t CACHE_TYPE; /*!< \brief Offset: 0x0004 (R/ ) Cache Type Register */ + RESERVED(0[0x3e], uint32_t) + __IOM uint32_t CONTROL; /*!< \brief Offset: 0x0100 (R/W) Control Register */ + __IOM uint32_t AUX_CNT; /*!< \brief Offset: 0x0104 (R/W) Auxiliary Control */ + RESERVED(1[0x3e], uint32_t) + __IOM uint32_t EVENT_CONTROL; /*!< \brief Offset: 0x0200 (R/W) Event Counter Control */ + __IOM uint32_t EVENT_COUNTER1_CONF; /*!< \brief Offset: 0x0204 (R/W) Event Counter 1 Configuration */ + __IOM uint32_t EVENT_COUNTER0_CONF; /*!< \brief Offset: 0x0208 (R/W) Event Counter 1 Configuration */ + RESERVED(2[0x2], uint32_t) + __IOM uint32_t INTERRUPT_MASK; /*!< \brief Offset: 0x0214 (R/W) Interrupt Mask */ + __IM uint32_t MASKED_INT_STATUS; /*!< \brief Offset: 0x0218 (R/ ) Masked Interrupt Status */ + __IM uint32_t RAW_INT_STATUS; /*!< \brief Offset: 0x021c (R/ ) Raw Interrupt Status */ + __OM uint32_t INTERRUPT_CLEAR; /*!< \brief Offset: 0x0220 ( /W) Interrupt Clear */ + RESERVED(3[0x143], uint32_t) + __IOM uint32_t CACHE_SYNC; /*!< \brief Offset: 0x0730 (R/W) Cache Sync */ + RESERVED(4[0xf], uint32_t) + __IOM uint32_t INV_LINE_PA; /*!< \brief Offset: 0x0770 (R/W) Invalidate Line By PA */ + RESERVED(6[2], uint32_t) + __IOM uint32_t INV_WAY; /*!< \brief Offset: 0x077c (R/W) Invalidate by Way */ + RESERVED(5[0xc], uint32_t) + __IOM uint32_t CLEAN_LINE_PA; /*!< \brief Offset: 0x07b0 (R/W) Clean Line by PA */ + RESERVED(7[1], uint32_t) + __IOM uint32_t CLEAN_LINE_INDEX_WAY; /*!< \brief Offset: 0x07b8 (R/W) Clean Line by Index/Way */ + __IOM uint32_t CLEAN_WAY; /*!< \brief Offset: 0x07bc (R/W) Clean by Way */ + RESERVED(8[0xc], uint32_t) + __IOM uint32_t CLEAN_INV_LINE_PA; /*!< \brief Offset: 0x07f0 (R/W) Clean and Invalidate Line by PA */ + RESERVED(9[1], uint32_t) + __IOM uint32_t CLEAN_INV_LINE_INDEX_WAY; /*!< \brief Offset: 0x07f8 (R/W) Clean and Invalidate Line by Index/Way */ + __IOM uint32_t CLEAN_INV_WAY; /*!< \brief Offset: 0x07fc (R/W) Clean and Invalidate by Way */ + RESERVED(10[0x40], uint32_t) + __IOM uint32_t DATA_LOCK_0_WAY; /*!< \brief Offset: 0x0900 (R/W) Data Lockdown 0 by Way */ + __IOM uint32_t INST_LOCK_0_WAY; /*!< \brief Offset: 0x0904 (R/W) Instruction Lockdown 0 by Way */ + __IOM uint32_t DATA_LOCK_1_WAY; /*!< \brief Offset: 0x0908 (R/W) Data Lockdown 1 by Way */ + __IOM uint32_t INST_LOCK_1_WAY; /*!< \brief Offset: 0x090c (R/W) Instruction Lockdown 1 by Way */ + __IOM uint32_t DATA_LOCK_2_WAY; /*!< \brief Offset: 0x0910 (R/W) Data Lockdown 2 by Way */ + __IOM uint32_t INST_LOCK_2_WAY; /*!< \brief Offset: 0x0914 (R/W) Instruction Lockdown 2 by Way */ + __IOM uint32_t DATA_LOCK_3_WAY; /*!< \brief Offset: 0x0918 (R/W) Data Lockdown 3 by Way */ + __IOM uint32_t INST_LOCK_3_WAY; /*!< \brief Offset: 0x091c (R/W) Instruction Lockdown 3 by Way */ + __IOM uint32_t DATA_LOCK_4_WAY; /*!< \brief Offset: 0x0920 (R/W) Data Lockdown 4 by Way */ + __IOM uint32_t INST_LOCK_4_WAY; /*!< \brief Offset: 0x0924 (R/W) Instruction Lockdown 4 by Way */ + __IOM uint32_t DATA_LOCK_5_WAY; /*!< \brief Offset: 0x0928 (R/W) Data Lockdown 5 by Way */ + __IOM uint32_t INST_LOCK_5_WAY; /*!< \brief Offset: 0x092c (R/W) Instruction Lockdown 5 by Way */ + __IOM uint32_t DATA_LOCK_6_WAY; /*!< \brief Offset: 0x0930 (R/W) Data Lockdown 5 by Way */ + __IOM uint32_t INST_LOCK_6_WAY; /*!< \brief Offset: 0x0934 (R/W) Instruction Lockdown 5 by Way */ + __IOM uint32_t DATA_LOCK_7_WAY; /*!< \brief Offset: 0x0938 (R/W) Data Lockdown 6 by Way */ + __IOM uint32_t INST_LOCK_7_WAY; /*!< \brief Offset: 0x093c (R/W) Instruction Lockdown 6 by Way */ + RESERVED(11[0x4], uint32_t) + __IOM uint32_t LOCK_LINE_EN; /*!< \brief Offset: 0x0950 (R/W) Lockdown by Line Enable */ + __IOM uint32_t UNLOCK_ALL_BY_WAY; /*!< \brief Offset: 0x0954 (R/W) Unlock All Lines by Way */ + RESERVED(12[0xaa], uint32_t) + __IOM uint32_t ADDRESS_FILTER_START; /*!< \brief Offset: 0x0c00 (R/W) Address Filtering Start */ + __IOM uint32_t ADDRESS_FILTER_END; /*!< \brief Offset: 0x0c04 (R/W) Address Filtering End */ + RESERVED(13[0xce], uint32_t) + __IOM uint32_t DEBUG_CONTROL; /*!< \brief Offset: 0x0f40 (R/W) Debug Control Register */ +} L2C_310_TypeDef; + +#define L2C_310 ((L2C_310_TypeDef *)L2C_310_BASE) /*!< \brief L2C_310 register set access pointer */ +#endif + +#if (__GIC_PRESENT == 1U) || defined(DOXYGEN) + +/** \brief Structure type to access the Generic Interrupt Controller Distributor (GICD) +*/ +typedef struct +{ + __IOM uint32_t CTLR; /*!< \brief Offset: 0x000 (R/W) Distributor Control Register */ + __IM uint32_t TYPER; /*!< \brief Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IM uint32_t IIDR; /*!< \brief Offset: 0x008 (R/ ) Distributor Implementer Identification Register */ + RESERVED(0, uint32_t) + __IOM uint32_t STATUSR; /*!< \brief Offset: 0x010 (R/W) Error Reporting Status Register, optional */ + RESERVED(1[11], uint32_t) + __OM uint32_t SETSPI_NSR; /*!< \brief Offset: 0x040 ( /W) Set SPI Register */ + RESERVED(2, uint32_t) + __OM uint32_t CLRSPI_NSR; /*!< \brief Offset: 0x048 ( /W) Clear SPI Register */ + RESERVED(3, uint32_t) + __OM uint32_t SETSPI_SR; /*!< \brief Offset: 0x050 ( /W) Set SPI, Secure Register */ + RESERVED(4, uint32_t) + __OM uint32_t CLRSPI_SR; /*!< \brief Offset: 0x058 ( /W) Clear SPI, Secure Register */ + RESERVED(5[9], uint32_t) + __IOM uint32_t IGROUPR[32]; /*!< \brief Offset: 0x080 (R/W) Interrupt Group Registers */ + __IOM uint32_t ISENABLER[32]; /*!< \brief Offset: 0x100 (R/W) Interrupt Set-Enable Registers */ + __IOM uint32_t ICENABLER[32]; /*!< \brief Offset: 0x180 (R/W) Interrupt Clear-Enable Registers */ + __IOM uint32_t ISPENDR[32]; /*!< \brief Offset: 0x200 (R/W) Interrupt Set-Pending Registers */ + __IOM uint32_t ICPENDR[32]; /*!< \brief Offset: 0x280 (R/W) Interrupt Clear-Pending Registers */ + __IOM uint32_t ISACTIVER[32]; /*!< \brief Offset: 0x300 (R/W) Interrupt Set-Active Registers */ + __IOM uint32_t ICACTIVER[32]; /*!< \brief Offset: 0x380 (R/W) Interrupt Clear-Active Registers */ + __IOM uint32_t IPRIORITYR[255]; /*!< \brief Offset: 0x400 (R/W) Interrupt Priority Registers */ + RESERVED(6, uint32_t) + __IOM uint32_t ITARGETSR[255]; /*!< \brief Offset: 0x800 (R/W) Interrupt Targets Registers */ + RESERVED(7, uint32_t) + __IOM uint32_t ICFGR[64]; /*!< \brief Offset: 0xC00 (R/W) Interrupt Configuration Registers */ + __IOM uint32_t IGRPMODR[32]; /*!< \brief Offset: 0xD00 (R/W) Interrupt Group Modifier Registers */ + RESERVED(8[32], uint32_t) + __IOM uint32_t NSACR[64]; /*!< \brief Offset: 0xE00 (R/W) Non-secure Access Control Registers */ + __OM uint32_t SGIR; /*!< \brief Offset: 0xF00 ( /W) Software Generated Interrupt Register */ + RESERVED(9[3], uint32_t) + __IOM uint32_t CPENDSGIR[4]; /*!< \brief Offset: 0xF10 (R/W) SGI Clear-Pending Registers */ + __IOM uint32_t SPENDSGIR[4]; /*!< \brief Offset: 0xF20 (R/W) SGI Set-Pending Registers */ + RESERVED(10[5236], uint32_t) + __IOM uint64_t IROUTER[988]; /*!< \brief Offset: 0x6100(R/W) Interrupt Routing Registers */ +} GICDistributor_Type; + +#define GICDistributor ((GICDistributor_Type *) GIC_DISTRIBUTOR_BASE ) /*!< \brief GIC Distributor register set access pointer */ + +/** \brief Structure type to access the Generic Interrupt Controller Interface (GICC) +*/ +typedef struct +{ + __IOM uint32_t CTLR; /*!< \brief Offset: 0x000 (R/W) CPU Interface Control Register */ + __IOM uint32_t PMR; /*!< \brief Offset: 0x004 (R/W) Interrupt Priority Mask Register */ + __IOM uint32_t BPR; /*!< \brief Offset: 0x008 (R/W) Binary Point Register */ + __IM uint32_t IAR; /*!< \brief Offset: 0x00C (R/ ) Interrupt Acknowledge Register */ + __OM uint32_t EOIR; /*!< \brief Offset: 0x010 ( /W) End Of Interrupt Register */ + __IM uint32_t RPR; /*!< \brief Offset: 0x014 (R/ ) Running Priority Register */ + __IM uint32_t HPPIR; /*!< \brief Offset: 0x018 (R/ ) Highest Priority Pending Interrupt Register */ + __IOM uint32_t ABPR; /*!< \brief Offset: 0x01C (R/W) Aliased Binary Point Register */ + __IM uint32_t AIAR; /*!< \brief Offset: 0x020 (R/ ) Aliased Interrupt Acknowledge Register */ + __OM uint32_t AEOIR; /*!< \brief Offset: 0x024 ( /W) Aliased End Of Interrupt Register */ + __IM uint32_t AHPPIR; /*!< \brief Offset: 0x028 (R/ ) Aliased Highest Priority Pending Interrupt Register */ + __IOM uint32_t STATUSR; /*!< \brief Offset: 0x02C (R/W) Error Reporting Status Register, optional */ + RESERVED(1[40], uint32_t) + __IOM uint32_t APR[4]; /*!< \brief Offset: 0x0D0 (R/W) Active Priority Register */ + __IOM uint32_t NSAPR[4]; /*!< \brief Offset: 0x0E0 (R/W) Non-secure Active Priority Register */ + RESERVED(2[3], uint32_t) + __IM uint32_t IIDR; /*!< \brief Offset: 0x0FC (R/ ) CPU Interface Identification Register */ + RESERVED(3[960], uint32_t) + __OM uint32_t DIR; /*!< \brief Offset: 0x1000( /W) Deactivate Interrupt Register */ +} GICInterface_Type; + +#define GICInterface ((GICInterface_Type *) GIC_INTERFACE_BASE ) /*!< \brief GIC Interface register set access pointer */ +#endif + +#if (__TIM_PRESENT == 1U) || defined(DOXYGEN) +#if ((__CORTEX_A == 5U) || (__CORTEX_A == 9U)) || defined(DOXYGEN) +/** \brief Structure type to access the Private Timer +*/ +typedef struct +{ + __IOM uint32_t LOAD; //!< \brief Offset: 0x000 (R/W) Private Timer Load Register + __IOM uint32_t COUNTER; //!< \brief Offset: 0x004 (R/W) Private Timer Counter Register + __IOM uint32_t CONTROL; //!< \brief Offset: 0x008 (R/W) Private Timer Control Register + __IOM uint32_t ISR; //!< \brief Offset: 0x00C (R/W) Private Timer Interrupt Status Register + RESERVED(0[4], uint32_t) + __IOM uint32_t WLOAD; //!< \brief Offset: 0x020 (R/W) Watchdog Load Register + __IOM uint32_t WCOUNTER; //!< \brief Offset: 0x024 (R/W) Watchdog Counter Register + __IOM uint32_t WCONTROL; //!< \brief Offset: 0x028 (R/W) Watchdog Control Register + __IOM uint32_t WISR; //!< \brief Offset: 0x02C (R/W) Watchdog Interrupt Status Register + __IOM uint32_t WRESET; //!< \brief Offset: 0x030 (R/W) Watchdog Reset Status Register + __OM uint32_t WDISABLE; //!< \brief Offset: 0x034 ( /W) Watchdog Disable Register +} Timer_Type; +#define PTIM ((Timer_Type *) TIMER_BASE ) /*!< \brief Timer register struct */ +#endif +#endif + + /******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - L1 Cache Functions + - L2C-310 Cache Controller Functions + - PL1 Timer Functions + - GIC Functions + - MMU Functions + ******************************************************************************/ + +/* ########################## L1 Cache functions ################################# */ + +/** \brief Enable Caches by setting I and C bits in SCTLR register. +*/ +__STATIC_FORCEINLINE void L1C_EnableCaches(void) { + __set_SCTLR( __get_SCTLR() | SCTLR_I_Msk | SCTLR_C_Msk); + __ISB(); +} + +/** \brief Disable Caches by clearing I and C bits in SCTLR register. +*/ +__STATIC_FORCEINLINE void L1C_DisableCaches(void) { + __set_SCTLR( __get_SCTLR() & (~SCTLR_I_Msk) & (~SCTLR_C_Msk)); + __ISB(); +} + +/** \brief Enable Branch Prediction by setting Z bit in SCTLR register. +*/ +__STATIC_FORCEINLINE void L1C_EnableBTAC(void) { + __set_SCTLR( __get_SCTLR() | SCTLR_Z_Msk); + __ISB(); +} + +/** \brief Disable Branch Prediction by clearing Z bit in SCTLR register. +*/ +__STATIC_FORCEINLINE void L1C_DisableBTAC(void) { + __set_SCTLR( __get_SCTLR() & (~SCTLR_Z_Msk)); + __ISB(); +} + +/** \brief Invalidate entire branch predictor array +*/ +__STATIC_FORCEINLINE void L1C_InvalidateBTAC(void) { + __set_BPIALL(0); + __DSB(); //ensure completion of the invalidation + __ISB(); //ensure instruction fetch path sees new state +} + +/** \brief Invalidate the whole instruction cache +*/ +__STATIC_FORCEINLINE void L1C_InvalidateICacheAll(void) { + __set_ICIALLU(0); + __DSB(); //ensure completion of the invalidation + __ISB(); //ensure instruction fetch path sees new I cache state +} + +/** \brief Clean data cache line by address. +* \param [in] va Pointer to data to clear the cache for. +*/ +__STATIC_FORCEINLINE void L1C_CleanDCacheMVA(void *va) { + __set_DCCMVAC((uint32_t)va); + __DMB(); //ensure the ordering of data cache maintenance operations and their effects +} + +/** \brief Invalidate data cache line by address. +* \param [in] va Pointer to data to invalidate the cache for. +*/ +__STATIC_FORCEINLINE void L1C_InvalidateDCacheMVA(void *va) { + __set_DCIMVAC((uint32_t)va); + __DMB(); //ensure the ordering of data cache maintenance operations and their effects +} + +/** \brief Clean and Invalidate data cache by address. +* \param [in] va Pointer to data to invalidate the cache for. +*/ +__STATIC_FORCEINLINE void L1C_CleanInvalidateDCacheMVA(void *va) { + __set_DCCIMVAC((uint32_t)va); + __DMB(); //ensure the ordering of data cache maintenance operations and their effects +} + +/** \brief Calculate log2 rounded up +* - log(0) => 0 +* - log(1) => 0 +* - log(2) => 1 +* - log(3) => 2 +* - log(4) => 2 +* - log(5) => 3 +* : : +* - log(16) => 4 +* - log(32) => 5 +* : : +* \param [in] n input value parameter +* \return log2(n) +*/ +__STATIC_FORCEINLINE uint8_t __log2_up(uint32_t n) +{ + if (n < 2U) { + return 0U; + } + uint8_t log = 0U; + uint32_t t = n; + while(t > 1U) + { + log++; + t >>= 1U; + } + if (n & 1U) { log++; } + return log; +} + +/** \brief Apply cache maintenance to given cache level. +* \param [in] level cache level to be maintained +* \param [in] maint 0 - invalidate, 1 - clean, otherwise - invalidate and clean +*/ +__STATIC_FORCEINLINE void __L1C_MaintainDCacheSetWay(uint32_t level, uint32_t maint) +{ + uint32_t Dummy; + uint32_t ccsidr; + uint32_t num_sets; + uint32_t num_ways; + uint32_t shift_way; + uint32_t log2_linesize; + int32_t log2_num_ways; + + Dummy = level << 1U; + /* set csselr, select ccsidr register */ + __set_CSSELR(Dummy); + /* get current ccsidr register */ + ccsidr = __get_CCSIDR(); + num_sets = ((ccsidr & 0x0FFFE000U) >> 13U) + 1U; + num_ways = ((ccsidr & 0x00001FF8U) >> 3U) + 1U; + log2_linesize = (ccsidr & 0x00000007U) + 2U + 2U; + log2_num_ways = __log2_up(num_ways); + if ((log2_num_ways < 0) || (log2_num_ways > 32)) { + return; // FATAL ERROR + } + shift_way = 32U - (uint32_t)log2_num_ways; + for(int32_t way = num_ways-1; way >= 0; way--) + { + for(int32_t set = num_sets-1; set >= 0; set--) + { + Dummy = (level << 1U) | (((uint32_t)set) << log2_linesize) | (((uint32_t)way) << shift_way); + switch (maint) + { + case 0U: __set_DCISW(Dummy); break; + case 1U: __set_DCCSW(Dummy); break; + default: __set_DCCISW(Dummy); break; + } + } + } + __DMB(); +} + +/** \brief Clean and Invalidate the entire data or unified cache +* Generic mechanism for cleaning/invalidating the entire data or unified cache to the point of coherency +* \param [in] op 0 - invalidate, 1 - clean, otherwise - invalidate and clean +*/ +__STATIC_FORCEINLINE void L1C_CleanInvalidateCache(uint32_t op) { + uint32_t clidr; + uint32_t cache_type; + clidr = __get_CLIDR(); + for(uint32_t i = 0U; i<7U; i++) + { + cache_type = (clidr >> i*3U) & 0x7UL; + if ((cache_type >= 2U) && (cache_type <= 4U)) + { + __L1C_MaintainDCacheSetWay(i, op); + } + } +} + +/** \brief Clean and Invalidate the entire data or unified cache +* Generic mechanism for cleaning/invalidating the entire data or unified cache to the point of coherency +* \param [in] op 0 - invalidate, 1 - clean, otherwise - invalidate and clean +* \deprecated Use generic L1C_CleanInvalidateCache instead. +*/ +CMSIS_DEPRECATED +__STATIC_FORCEINLINE void __L1C_CleanInvalidateCache(uint32_t op) { + L1C_CleanInvalidateCache(op); +} + +/** \brief Invalidate the whole data cache. +*/ +__STATIC_FORCEINLINE void L1C_InvalidateDCacheAll(void) { + L1C_CleanInvalidateCache(0); +} + +/** \brief Clean the whole data cache. + */ +__STATIC_FORCEINLINE void L1C_CleanDCacheAll(void) { + L1C_CleanInvalidateCache(1); +} + +/** \brief Clean and invalidate the whole data cache. + */ +__STATIC_FORCEINLINE void L1C_CleanInvalidateDCacheAll(void) { + L1C_CleanInvalidateCache(2); +} + +/* ########################## L2 Cache functions ################################# */ +#if (__L2C_PRESENT == 1U) || defined(DOXYGEN) +/** \brief Cache Sync operation by writing CACHE_SYNC register. +*/ +__STATIC_INLINE void L2C_Sync(void) +{ + L2C_310->CACHE_SYNC = 0x0; +} + +/** \brief Read cache controller cache ID from CACHE_ID register. + * \return L2C_310_TypeDef::CACHE_ID + */ +__STATIC_INLINE int L2C_GetID (void) +{ + return L2C_310->CACHE_ID; +} + +/** \brief Read cache controller cache type from CACHE_TYPE register. +* \return L2C_310_TypeDef::CACHE_TYPE +*/ +__STATIC_INLINE int L2C_GetType (void) +{ + return L2C_310->CACHE_TYPE; +} + +/** \brief Invalidate all cache by way +*/ +__STATIC_INLINE void L2C_InvAllByWay (void) +{ + unsigned int assoc; + + if (L2C_310->AUX_CNT & (1U << 16U)) { + assoc = 16U; + } else { + assoc = 8U; + } + + L2C_310->INV_WAY = (1U << assoc) - 1U; + while(L2C_310->INV_WAY & ((1U << assoc) - 1U)); //poll invalidate + + L2C_Sync(); +} + +/** \brief Clean and Invalidate all cache by way +*/ +__STATIC_INLINE void L2C_CleanInvAllByWay (void) +{ + unsigned int assoc; + + if (L2C_310->AUX_CNT & (1U << 16U)) { + assoc = 16U; + } else { + assoc = 8U; + } + + L2C_310->CLEAN_INV_WAY = (1U << assoc) - 1U; + while(L2C_310->CLEAN_INV_WAY & ((1U << assoc) - 1U)); //poll invalidate + + L2C_Sync(); +} + +/** \brief Enable Level 2 Cache +*/ +__STATIC_INLINE void L2C_Enable(void) +{ + L2C_310->CONTROL = 0; + L2C_310->INTERRUPT_CLEAR = 0x000001FFuL; + L2C_310->DEBUG_CONTROL = 0; + L2C_310->DATA_LOCK_0_WAY = 0; + L2C_310->CACHE_SYNC = 0; + L2C_310->CONTROL = 0x01; + L2C_Sync(); +} + +/** \brief Disable Level 2 Cache +*/ +__STATIC_INLINE void L2C_Disable(void) +{ + L2C_310->CONTROL = 0x00; + L2C_Sync(); +} + +/** \brief Invalidate cache by physical address +* \param [in] pa Pointer to data to invalidate cache for. +*/ +__STATIC_INLINE void L2C_InvPa (void *pa) +{ + L2C_310->INV_LINE_PA = (unsigned int)pa; + L2C_Sync(); +} + +/** \brief Clean cache by physical address +* \param [in] pa Pointer to data to invalidate cache for. +*/ +__STATIC_INLINE void L2C_CleanPa (void *pa) +{ + L2C_310->CLEAN_LINE_PA = (unsigned int)pa; + L2C_Sync(); +} + +/** \brief Clean and invalidate cache by physical address +* \param [in] pa Pointer to data to invalidate cache for. +*/ +__STATIC_INLINE void L2C_CleanInvPa (void *pa) +{ + L2C_310->CLEAN_INV_LINE_PA = (unsigned int)pa; + L2C_Sync(); +} +#endif + +/* ########################## GIC functions ###################################### */ +#if (__GIC_PRESENT == 1U) || defined(DOXYGEN) + +/** \brief Enable the interrupt distributor using the GIC's CTLR register. +*/ +__STATIC_INLINE void GIC_EnableDistributor(void) +{ + GICDistributor->CTLR |= 1U; +} + +/** \brief Disable the interrupt distributor using the GIC's CTLR register. +*/ +__STATIC_INLINE void GIC_DisableDistributor(void) +{ + GICDistributor->CTLR &=~1U; +} + +/** \brief Read the GIC's TYPER register. +* \return GICDistributor_Type::TYPER +*/ +__STATIC_INLINE uint32_t GIC_DistributorInfo(void) +{ + return (GICDistributor->TYPER); +} + +/** \brief Reads the GIC's IIDR register. +* \return GICDistributor_Type::IIDR +*/ +__STATIC_INLINE uint32_t GIC_DistributorImplementer(void) +{ + return (GICDistributor->IIDR); +} + +/** \brief Sets the GIC's ITARGETSR register for the given interrupt. +* \param [in] IRQn Interrupt to be configured. +* \param [in] cpu_target CPU interfaces to assign this interrupt to. +*/ +__STATIC_INLINE void GIC_SetTarget(IRQn_Type IRQn, uint32_t cpu_target) +{ + uint32_t mask = GICDistributor->ITARGETSR[IRQn / 4U] & ~(0xFFUL << ((IRQn % 4U) * 8U)); + GICDistributor->ITARGETSR[IRQn / 4U] = mask | ((cpu_target & 0xFFUL) << ((IRQn % 4U) * 8U)); +} + +/** \brief Read the GIC's ITARGETSR register. +* \param [in] IRQn Interrupt to acquire the configuration for. +* \return GICDistributor_Type::ITARGETSR +*/ +__STATIC_INLINE uint32_t GIC_GetTarget(IRQn_Type IRQn) +{ + return (GICDistributor->ITARGETSR[IRQn / 4U] >> ((IRQn % 4U) * 8U)) & 0xFFUL; +} + +/** \brief Enable the CPU's interrupt interface. +*/ +__STATIC_INLINE void GIC_EnableInterface(void) +{ + GICInterface->CTLR |= 1U; //enable interface +} + +/** \brief Disable the CPU's interrupt interface. +*/ +__STATIC_INLINE void GIC_DisableInterface(void) +{ + GICInterface->CTLR &=~1U; //disable distributor +} + +/** \brief Read the CPU's IAR register. +* \return GICInterface_Type::IAR +*/ +__STATIC_INLINE IRQn_Type GIC_AcknowledgePending(void) +{ + return (IRQn_Type)(GICInterface->IAR); +} + +/** \brief Writes the given interrupt number to the CPU's EOIR register. +* \param [in] IRQn The interrupt to be signaled as finished. +*/ +__STATIC_INLINE void GIC_EndInterrupt(IRQn_Type IRQn) +{ + GICInterface->EOIR = IRQn; +} + +/** \brief Enables the given interrupt using GIC's ISENABLER register. +* \param [in] IRQn The interrupt to be enabled. +*/ +__STATIC_INLINE void GIC_EnableIRQ(IRQn_Type IRQn) +{ + GICDistributor->ISENABLER[IRQn / 32U] = 1U << (IRQn % 32U); +} + +/** \brief Get interrupt enable status using GIC's ISENABLER register. +* \param [in] IRQn The interrupt to be queried. +* \return 0 - interrupt is not enabled, 1 - interrupt is enabled. +*/ +__STATIC_INLINE uint32_t GIC_GetEnableIRQ(IRQn_Type IRQn) +{ + return (GICDistributor->ISENABLER[IRQn / 32U] >> (IRQn % 32U)) & 1UL; +} + +/** \brief Disables the given interrupt using GIC's ICENABLER register. +* \param [in] IRQn The interrupt to be disabled. +*/ +__STATIC_INLINE void GIC_DisableIRQ(IRQn_Type IRQn) +{ + GICDistributor->ICENABLER[IRQn / 32U] = 1U << (IRQn % 32U); +} + +/** \brief Get interrupt pending status from GIC's ISPENDR register. +* \param [in] IRQn The interrupt to be queried. +* \return 0 - interrupt is not pending, 1 - interrupt is pendig. +*/ +__STATIC_INLINE uint32_t GIC_GetPendingIRQ(IRQn_Type IRQn) +{ + uint32_t pend; + + if (IRQn >= 16U) { + pend = (GICDistributor->ISPENDR[IRQn / 32U] >> (IRQn % 32U)) & 1UL; + } else { + // INTID 0-15 Software Generated Interrupt + pend = (GICDistributor->SPENDSGIR[IRQn / 4U] >> ((IRQn % 4U) * 8U)) & 0xFFUL; + // No CPU identification offered + if (pend != 0U) { + pend = 1U; + } else { + pend = 0U; + } + } + + return (pend); +} + +/** \brief Sets the given interrupt as pending using GIC's ISPENDR register. +* \param [in] IRQn The interrupt to be enabled. +*/ +__STATIC_INLINE void GIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if (IRQn >= 16U) { + GICDistributor->ISPENDR[IRQn / 32U] = 1U << (IRQn % 32U); + } else { + // INTID 0-15 Software Generated Interrupt + GICDistributor->SPENDSGIR[IRQn / 4U] = 1U << ((IRQn % 4U) * 8U); + } +} + +/** \brief Clears the given interrupt from being pending using GIC's ICPENDR register. +* \param [in] IRQn The interrupt to be enabled. +*/ +__STATIC_INLINE void GIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if (IRQn >= 16U) { + GICDistributor->ICPENDR[IRQn / 32U] = 1U << (IRQn % 32U); + } else { + // INTID 0-15 Software Generated Interrupt + GICDistributor->CPENDSGIR[IRQn / 4U] = 1U << ((IRQn % 4U) * 8U); + } +} + +/** \brief Sets the interrupt configuration using GIC's ICFGR register. +* \param [in] IRQn The interrupt to be configured. +* \param [in] int_config Int_config field value. Bit 0: Reserved (0 - N-N model, 1 - 1-N model for some GIC before v1) +* Bit 1: 0 - level sensitive, 1 - edge triggered +*/ +__STATIC_INLINE void GIC_SetConfiguration(IRQn_Type IRQn, uint32_t int_config) +{ + uint32_t icfgr = GICDistributor->ICFGR[IRQn / 16U]; + uint32_t shift = (IRQn % 16U) << 1U; + + icfgr &= (~(3U << shift)); + icfgr |= ( int_config << shift); + + GICDistributor->ICFGR[IRQn / 16U] = icfgr; +} + +/** \brief Get the interrupt configuration from the GIC's ICFGR register. +* \param [in] IRQn Interrupt to acquire the configuration for. +* \return Int_config field value. Bit 0: Reserved (0 - N-N model, 1 - 1-N model for some GIC before v1) +* Bit 1: 0 - level sensitive, 1 - edge triggered +*/ +__STATIC_INLINE uint32_t GIC_GetConfiguration(IRQn_Type IRQn) +{ + return (GICDistributor->ICFGR[IRQn / 16U] >> ((IRQn % 16U) >> 1U)); +} + +/** \brief Set the priority for the given interrupt in the GIC's IPRIORITYR register. +* \param [in] IRQn The interrupt to be configured. +* \param [in] priority The priority for the interrupt, lower values denote higher priorities. +*/ +__STATIC_INLINE void GIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +{ + uint32_t mask = GICDistributor->IPRIORITYR[IRQn / 4U] & ~(0xFFUL << ((IRQn % 4U) * 8U)); + GICDistributor->IPRIORITYR[IRQn / 4U] = mask | ((priority & 0xFFUL) << ((IRQn % 4U) * 8U)); +} + +/** \brief Read the current interrupt priority from GIC's IPRIORITYR register. +* \param [in] IRQn The interrupt to be queried. +*/ +__STATIC_INLINE uint32_t GIC_GetPriority(IRQn_Type IRQn) +{ + return (GICDistributor->IPRIORITYR[IRQn / 4U] >> ((IRQn % 4U) * 8U)) & 0xFFUL; +} + +/** \brief Set the interrupt priority mask using CPU's PMR register. +* \param [in] priority Priority mask to be set. +*/ +__STATIC_INLINE void GIC_SetInterfacePriorityMask(uint32_t priority) +{ + GICInterface->PMR = priority & 0xFFUL; //set priority mask +} + +/** \brief Read the current interrupt priority mask from CPU's PMR register. +* \result GICInterface_Type::PMR +*/ +__STATIC_INLINE uint32_t GIC_GetInterfacePriorityMask(void) +{ + return GICInterface->PMR; +} + +/** \brief Configures the group priority and subpriority split point using CPU's BPR register. +* \param [in] binary_point Amount of bits used as subpriority. +*/ +__STATIC_INLINE void GIC_SetBinaryPoint(uint32_t binary_point) +{ + GICInterface->BPR = binary_point & 7U; //set binary point +} + +/** \brief Read the current group priority and subpriority split point from CPU's BPR register. +* \return GICInterface_Type::BPR +*/ +__STATIC_INLINE uint32_t GIC_GetBinaryPoint(void) +{ + return GICInterface->BPR; +} + +/** \brief Get the status for a given interrupt. +* \param [in] IRQn The interrupt to get status for. +* \return 0 - not pending/active, 1 - pending, 2 - active, 3 - pending and active +*/ +__STATIC_INLINE uint32_t GIC_GetIRQStatus(IRQn_Type IRQn) +{ + uint32_t pending, active; + + active = ((GICDistributor->ISACTIVER[IRQn / 32U]) >> (IRQn % 32U)) & 1UL; + pending = ((GICDistributor->ISPENDR[IRQn / 32U]) >> (IRQn % 32U)) & 1UL; + + return ((active<<1U) | pending); +} + +/** \brief Generate a software interrupt using GIC's SGIR register. +* \param [in] IRQn Software interrupt to be generated. +* \param [in] target_list List of CPUs the software interrupt should be forwarded to. +* \param [in] filter_list Filter to be applied to determine interrupt receivers. +*/ +__STATIC_INLINE void GIC_SendSGI(IRQn_Type IRQn, uint32_t target_list, uint32_t filter_list) +{ + GICDistributor->SGIR = ((filter_list & 3U) << 24U) | ((target_list & 0xFFUL) << 16U) | (IRQn & 0x0FUL); +} + +/** \brief Get the interrupt number of the highest interrupt pending from CPU's HPPIR register. +* \return GICInterface_Type::HPPIR +*/ +__STATIC_INLINE uint32_t GIC_GetHighPendingIRQ(void) +{ + return GICInterface->HPPIR; +} + +/** \brief Provides information about the implementer and revision of the CPU interface. +* \return GICInterface_Type::IIDR +*/ +__STATIC_INLINE uint32_t GIC_GetInterfaceId(void) +{ + return GICInterface->IIDR; +} + +/** \brief Set the interrupt group from the GIC's IGROUPR register. +* \param [in] IRQn The interrupt to be queried. +* \param [in] group Interrupt group number: 0 - Group 0, 1 - Group 1 +*/ +__STATIC_INLINE void GIC_SetGroup(IRQn_Type IRQn, uint32_t group) +{ + uint32_t igroupr = GICDistributor->IGROUPR[IRQn / 32U]; + uint32_t shift = (IRQn % 32U); + + igroupr &= (~(1U << shift)); + igroupr |= ( (group & 1U) << shift); + + GICDistributor->IGROUPR[IRQn / 32U] = igroupr; +} +#define GIC_SetSecurity GIC_SetGroup + +/** \brief Get the interrupt group from the GIC's IGROUPR register. +* \param [in] IRQn The interrupt to be queried. +* \return 0 - Group 0, 1 - Group 1 +*/ +__STATIC_INLINE uint32_t GIC_GetGroup(IRQn_Type IRQn) +{ + return (GICDistributor->IGROUPR[IRQn / 32U] >> (IRQn % 32U)) & 1UL; +} +#define GIC_GetSecurity GIC_GetGroup + +/** \brief Initialize the interrupt distributor. +*/ +__STATIC_INLINE void GIC_DistInit(void) +{ + uint32_t i; + uint32_t num_irq = 0U; + uint32_t priority_field; + + //A reset sets all bits in the IGROUPRs corresponding to the SPIs to 0, + //configuring all of the interrupts as Secure. + + //Disable interrupt forwarding + GIC_DisableDistributor(); + //Get the maximum number of interrupts that the GIC supports + num_irq = 32U * ((GIC_DistributorInfo() & 0x1FU) + 1U); + + /* Priority level is implementation defined. + To determine the number of priority bits implemented write 0xFF to an IPRIORITYR + priority field and read back the value stored.*/ + GIC_SetPriority((IRQn_Type)0U, 0xFFU); + priority_field = GIC_GetPriority((IRQn_Type)0U); + + for (i = 32U; i < num_irq; i++) + { + //Disable the SPI interrupt + GIC_DisableIRQ((IRQn_Type)i); + //Set level-sensitive (and N-N model) + GIC_SetConfiguration((IRQn_Type)i, 0U); + //Set priority + GIC_SetPriority((IRQn_Type)i, priority_field/2U); + //Set target list to CPU0 + GIC_SetTarget((IRQn_Type)i, 1U); + } + //Enable distributor + GIC_EnableDistributor(); +} + +/** \brief Initialize the CPU's interrupt interface +*/ +__STATIC_INLINE void GIC_CPUInterfaceInit(void) +{ + uint32_t i; + uint32_t priority_field; + + //A reset sets all bits in the IGROUPRs corresponding to the SPIs to 0, + //configuring all of the interrupts as Secure. + + //Disable interrupt forwarding + GIC_DisableInterface(); + + /* Priority level is implementation defined. + To determine the number of priority bits implemented write 0xFF to an IPRIORITYR + priority field and read back the value stored.*/ + GIC_SetPriority((IRQn_Type)0U, 0xFFU); + priority_field = GIC_GetPriority((IRQn_Type)0U); + + //SGI and PPI + for (i = 0U; i < 32U; i++) + { + if(i > 15U) { + //Set level-sensitive (and N-N model) for PPI + GIC_SetConfiguration((IRQn_Type)i, 0U); + } + //Disable SGI and PPI interrupts + GIC_DisableIRQ((IRQn_Type)i); + //Set priority + GIC_SetPriority((IRQn_Type)i, priority_field/2U); + } + //Enable interface + GIC_EnableInterface(); + //Set binary point to 0 + GIC_SetBinaryPoint(0U); + //Set priority mask + GIC_SetInterfacePriorityMask(0xFFU); +} + +/** \brief Initialize and enable the GIC +*/ +__STATIC_INLINE void GIC_Enable(void) +{ + GIC_DistInit(); + GIC_CPUInterfaceInit(); //per CPU +} +#endif + +/* ########################## Generic Timer functions ############################ */ +#if (__TIM_PRESENT == 1U) || defined(DOXYGEN) + +/* PL1 Physical Timer */ +#if (__CORTEX_A == 7U) || defined(DOXYGEN) + +/** \brief Physical Timer Control register */ +typedef union +{ + struct + { + uint32_t ENABLE:1; /*!< \brief bit: 0 Enables the timer. */ + uint32_t IMASK:1; /*!< \brief bit: 1 Timer output signal mask bit. */ + uint32_t ISTATUS:1; /*!< \brief bit: 2 The status of the timer. */ + RESERVED(0:29, uint32_t) + } b; /*!< \brief Structure used for bit access */ + uint32_t w; /*!< \brief Type used for word access */ +} CNTP_CTL_Type; + +/** \brief Configures the frequency the timer shall run at. +* \param [in] value The timer frequency in Hz. +*/ +__STATIC_INLINE void PL1_SetCounterFrequency(uint32_t value) +{ + __set_CNTFRQ(value); + __ISB(); +} + +/** \brief Sets the reset value of the timer. +* \param [in] value The value the timer is loaded with. +*/ +__STATIC_INLINE void PL1_SetLoadValue(uint32_t value) +{ + __set_CNTP_TVAL(value); + __ISB(); +} + +/** \brief Get the current counter value. +* \return Current counter value. +*/ +__STATIC_INLINE uint32_t PL1_GetCurrentValue(void) +{ + return(__get_CNTP_TVAL()); +} + +/** \brief Get the current physical counter value. +* \return Current physical counter value. +*/ +__STATIC_INLINE uint64_t PL1_GetCurrentPhysicalValue(void) +{ + return(__get_CNTPCT()); +} + +/** \brief Set the physical compare value. +* \param [in] value New physical timer compare value. +*/ +__STATIC_INLINE void PL1_SetPhysicalCompareValue(uint64_t value) +{ + __set_CNTP_CVAL(value); + __ISB(); +} + +/** \brief Get the physical compare value. +* \return Physical compare value. +*/ +__STATIC_INLINE uint64_t PL1_GetPhysicalCompareValue(void) +{ + return(__get_CNTP_CVAL()); +} + +/** \brief Configure the timer by setting the control value. +* \param [in] value New timer control value. +*/ +__STATIC_INLINE void PL1_SetControl(uint32_t value) +{ + __set_CNTP_CTL(value); + __ISB(); +} + +/** \brief Get the control value. +* \return Control value. +*/ +__STATIC_INLINE uint32_t PL1_GetControl(void) +{ + return(__get_CNTP_CTL()); +} +#endif + +/* Private Timer */ +#if ((__CORTEX_A == 5U) || (__CORTEX_A == 9U)) || defined(DOXYGEN) +/** \brief Set the load value to timers LOAD register. +* \param [in] value The load value to be set. +*/ +__STATIC_INLINE void PTIM_SetLoadValue(uint32_t value) +{ + PTIM->LOAD = value; +} + +/** \brief Get the load value from timers LOAD register. +* \return Timer_Type::LOAD +*/ +__STATIC_INLINE uint32_t PTIM_GetLoadValue(void) +{ + return(PTIM->LOAD); +} + +/** \brief Set current counter value from its COUNTER register. +*/ +__STATIC_INLINE void PTIM_SetCurrentValue(uint32_t value) +{ + PTIM->COUNTER = value; +} + +/** \brief Get current counter value from timers COUNTER register. +* \result Timer_Type::COUNTER +*/ +__STATIC_INLINE uint32_t PTIM_GetCurrentValue(void) +{ + return(PTIM->COUNTER); +} + +/** \brief Configure the timer using its CONTROL register. +* \param [in] value The new configuration value to be set. +*/ +__STATIC_INLINE void PTIM_SetControl(uint32_t value) +{ + PTIM->CONTROL = value; +} + +/** ref Timer_Type::CONTROL Get the current timer configuration from its CONTROL register. +* \return Timer_Type::CONTROL +*/ +__STATIC_INLINE uint32_t PTIM_GetControl(void) +{ + return(PTIM->CONTROL); +} + +/** ref Timer_Type::CONTROL Get the event flag in timers ISR register. +* \return 0 - flag is not set, 1- flag is set +*/ +__STATIC_INLINE uint32_t PTIM_GetEventFlag(void) +{ + return (PTIM->ISR & 1UL); +} + +/** ref Timer_Type::CONTROL Clears the event flag in timers ISR register. +*/ +__STATIC_INLINE void PTIM_ClearEventFlag(void) +{ + PTIM->ISR = 1; +} +#endif +#endif + +/* ########################## MMU functions ###################################### */ + +#define SECTION_DESCRIPTOR (0x2) +#define SECTION_MASK (0xFFFFFFFC) + +#define SECTION_TEXCB_MASK (0xFFFF8FF3) +#define SECTION_B_SHIFT (2) +#define SECTION_C_SHIFT (3) +#define SECTION_TEX0_SHIFT (12) +#define SECTION_TEX1_SHIFT (13) +#define SECTION_TEX2_SHIFT (14) + +#define SECTION_XN_MASK (0xFFFFFFEF) +#define SECTION_XN_SHIFT (4) + +#define SECTION_DOMAIN_MASK (0xFFFFFE1F) +#define SECTION_DOMAIN_SHIFT (5) + +#define SECTION_P_MASK (0xFFFFFDFF) +#define SECTION_P_SHIFT (9) + +#define SECTION_AP_MASK (0xFFFF73FF) +#define SECTION_AP_SHIFT (10) +#define SECTION_AP2_SHIFT (15) + +#define SECTION_S_MASK (0xFFFEFFFF) +#define SECTION_S_SHIFT (16) + +#define SECTION_NG_MASK (0xFFFDFFFF) +#define SECTION_NG_SHIFT (17) + +#define SECTION_NS_MASK (0xFFF7FFFF) +#define SECTION_NS_SHIFT (19) + +#define PAGE_L1_DESCRIPTOR (0x1) +#define PAGE_L1_MASK (0xFFFFFFFC) + +#define PAGE_L2_4K_DESC (0x2) +#define PAGE_L2_4K_MASK (0xFFFFFFFD) + +#define PAGE_L2_64K_DESC (0x1) +#define PAGE_L2_64K_MASK (0xFFFFFFFC) + +#define PAGE_4K_TEXCB_MASK (0xFFFFFE33) +#define PAGE_4K_B_SHIFT (2) +#define PAGE_4K_C_SHIFT (3) +#define PAGE_4K_TEX0_SHIFT (6) +#define PAGE_4K_TEX1_SHIFT (7) +#define PAGE_4K_TEX2_SHIFT (8) + +#define PAGE_64K_TEXCB_MASK (0xFFFF8FF3) +#define PAGE_64K_B_SHIFT (2) +#define PAGE_64K_C_SHIFT (3) +#define PAGE_64K_TEX0_SHIFT (12) +#define PAGE_64K_TEX1_SHIFT (13) +#define PAGE_64K_TEX2_SHIFT (14) + +#define PAGE_TEXCB_MASK (0xFFFF8FF3) +#define PAGE_B_SHIFT (2) +#define PAGE_C_SHIFT (3) +#define PAGE_TEX_SHIFT (12) + +#define PAGE_XN_4K_MASK (0xFFFFFFFE) +#define PAGE_XN_4K_SHIFT (0) +#define PAGE_XN_64K_MASK (0xFFFF7FFF) +#define PAGE_XN_64K_SHIFT (15) + +#define PAGE_DOMAIN_MASK (0xFFFFFE1F) +#define PAGE_DOMAIN_SHIFT (5) + +#define PAGE_P_MASK (0xFFFFFDFF) +#define PAGE_P_SHIFT (9) + +#define PAGE_AP_MASK (0xFFFFFDCF) +#define PAGE_AP_SHIFT (4) +#define PAGE_AP2_SHIFT (9) + +#define PAGE_S_MASK (0xFFFFFBFF) +#define PAGE_S_SHIFT (10) + +#define PAGE_NG_MASK (0xFFFFF7FF) +#define PAGE_NG_SHIFT (11) + +#define PAGE_NS_MASK (0xFFFFFFF7) +#define PAGE_NS_SHIFT (3) + +#define OFFSET_1M (0x00100000) +#define OFFSET_64K (0x00010000) +#define OFFSET_4K (0x00001000) + +#define DESCRIPTOR_FAULT (0x00000000) + +/* Attributes enumerations */ + +/* Region size attributes */ +typedef enum +{ + SECTION, + PAGE_4k, + PAGE_64k, +} mmu_region_size_Type; + +/* Region type attributes */ +typedef enum +{ + NORMAL, + DEVICE, + SHARED_DEVICE, + NON_SHARED_DEVICE, + STRONGLY_ORDERED +} mmu_memory_Type; + +/* Region cacheability attributes */ +typedef enum +{ + NON_CACHEABLE, + WB_WA, + WT, + WB_NO_WA, +} mmu_cacheability_Type; + +/* Region parity check attributes */ +typedef enum +{ + ECC_DISABLED, + ECC_ENABLED, +} mmu_ecc_check_Type; + +/* Region execution attributes */ +typedef enum +{ + EXECUTE, + NON_EXECUTE, +} mmu_execute_Type; + +/* Region global attributes */ +typedef enum +{ + GLOBAL, + NON_GLOBAL, +} mmu_global_Type; + +/* Region shareability attributes */ +typedef enum +{ + NON_SHARED, + SHARED, +} mmu_shared_Type; + +/* Region security attributes */ +typedef enum +{ + SECURE, + NON_SECURE, +} mmu_secure_Type; + +/* Region access attributes */ +typedef enum +{ + NO_ACCESS, + RW, + READ, +} mmu_access_Type; + +/* Memory Region definition */ +typedef struct RegionStruct { + mmu_region_size_Type rg_t; + mmu_memory_Type mem_t; + uint8_t domain; + mmu_cacheability_Type inner_norm_t; + mmu_cacheability_Type outer_norm_t; + mmu_ecc_check_Type e_t; + mmu_execute_Type xn_t; + mmu_global_Type g_t; + mmu_secure_Type sec_t; + mmu_access_Type priv_t; + mmu_access_Type user_t; + mmu_shared_Type sh_t; + +} mmu_region_attributes_Type; + +//Following macros define the descriptors and attributes +//Sect_Normal. Outer & inner wb/wa, non-shareable, executable, rw, domain 0 +#define section_normal(descriptor_l1, region) region.rg_t = SECTION; \ + region.domain = 0x0; \ + region.e_t = ECC_DISABLED; \ + region.g_t = GLOBAL; \ + region.inner_norm_t = WB_WA; \ + region.outer_norm_t = WB_WA; \ + region.mem_t = NORMAL; \ + region.sec_t = SECURE; \ + region.xn_t = EXECUTE; \ + region.priv_t = RW; \ + region.user_t = RW; \ + region.sh_t = NON_SHARED; \ + MMU_GetSectionDescriptor(&descriptor_l1, region); + +//Sect_Normal_NC. Outer & inner non-cacheable, non-shareable, executable, rw, domain 0 +#define section_normal_nc(descriptor_l1, region) region.rg_t = SECTION; \ + region.domain = 0x0; \ + region.e_t = ECC_DISABLED; \ + region.g_t = GLOBAL; \ + region.inner_norm_t = NON_CACHEABLE; \ + region.outer_norm_t = NON_CACHEABLE; \ + region.mem_t = NORMAL; \ + region.sec_t = SECURE; \ + region.xn_t = EXECUTE; \ + region.priv_t = RW; \ + region.user_t = RW; \ + region.sh_t = NON_SHARED; \ + MMU_GetSectionDescriptor(&descriptor_l1, region); + +//Sect_Normal_Cod. Outer & inner wb/wa, non-shareable, executable, ro, domain 0 +#define section_normal_cod(descriptor_l1, region) region.rg_t = SECTION; \ + region.domain = 0x0; \ + region.e_t = ECC_DISABLED; \ + region.g_t = GLOBAL; \ + region.inner_norm_t = WB_WA; \ + region.outer_norm_t = WB_WA; \ + region.mem_t = NORMAL; \ + region.sec_t = SECURE; \ + region.xn_t = EXECUTE; \ + region.priv_t = READ; \ + region.user_t = READ; \ + region.sh_t = NON_SHARED; \ + MMU_GetSectionDescriptor(&descriptor_l1, region); + +//Sect_Normal_RO. Sect_Normal_Cod, but not executable +#define section_normal_ro(descriptor_l1, region) region.rg_t = SECTION; \ + region.domain = 0x0; \ + region.e_t = ECC_DISABLED; \ + region.g_t = GLOBAL; \ + region.inner_norm_t = WB_WA; \ + region.outer_norm_t = WB_WA; \ + region.mem_t = NORMAL; \ + region.sec_t = SECURE; \ + region.xn_t = NON_EXECUTE; \ + region.priv_t = READ; \ + region.user_t = READ; \ + region.sh_t = NON_SHARED; \ + MMU_GetSectionDescriptor(&descriptor_l1, region); + +//Sect_Normal_RW. Sect_Normal_Cod, but writeable and not executable +#define section_normal_rw(descriptor_l1, region) region.rg_t = SECTION; \ + region.domain = 0x0; \ + region.e_t = ECC_DISABLED; \ + region.g_t = GLOBAL; \ + region.inner_norm_t = WB_WA; \ + region.outer_norm_t = WB_WA; \ + region.mem_t = NORMAL; \ + region.sec_t = SECURE; \ + region.xn_t = NON_EXECUTE; \ + region.priv_t = RW; \ + region.user_t = RW; \ + region.sh_t = NON_SHARED; \ + MMU_GetSectionDescriptor(&descriptor_l1, region); +//Sect_SO. Strongly-ordered (therefore shareable), not executable, rw, domain 0, base addr 0 +#define section_so(descriptor_l1, region) region.rg_t = SECTION; \ + region.domain = 0x0; \ + region.e_t = ECC_DISABLED; \ + region.g_t = GLOBAL; \ + region.inner_norm_t = NON_CACHEABLE; \ + region.outer_norm_t = NON_CACHEABLE; \ + region.mem_t = STRONGLY_ORDERED; \ + region.sec_t = SECURE; \ + region.xn_t = NON_EXECUTE; \ + region.priv_t = RW; \ + region.user_t = RW; \ + region.sh_t = NON_SHARED; \ + MMU_GetSectionDescriptor(&descriptor_l1, region); + +//Sect_Device_RO. Device, non-shareable, non-executable, ro, domain 0, base addr 0 +#define section_device_ro(descriptor_l1, region) region.rg_t = SECTION; \ + region.domain = 0x0; \ + region.e_t = ECC_DISABLED; \ + region.g_t = GLOBAL; \ + region.inner_norm_t = NON_CACHEABLE; \ + region.outer_norm_t = NON_CACHEABLE; \ + region.mem_t = STRONGLY_ORDERED; \ + region.sec_t = SECURE; \ + region.xn_t = NON_EXECUTE; \ + region.priv_t = READ; \ + region.user_t = READ; \ + region.sh_t = NON_SHARED; \ + MMU_GetSectionDescriptor(&descriptor_l1, region); + +//Sect_Device_RW. Sect_Device_RO, but writeable +#define section_device_rw(descriptor_l1, region) region.rg_t = SECTION; \ + region.domain = 0x0; \ + region.e_t = ECC_DISABLED; \ + region.g_t = GLOBAL; \ + region.inner_norm_t = NON_CACHEABLE; \ + region.outer_norm_t = NON_CACHEABLE; \ + region.mem_t = STRONGLY_ORDERED; \ + region.sec_t = SECURE; \ + region.xn_t = NON_EXECUTE; \ + region.priv_t = RW; \ + region.user_t = RW; \ + region.sh_t = NON_SHARED; \ + MMU_GetSectionDescriptor(&descriptor_l1, region); +//Page_4k_Device_RW. Shared device, not executable, rw, domain 0 +#define page4k_device_rw(descriptor_l1, descriptor_l2, region) region.rg_t = PAGE_4k; \ + region.domain = 0x0; \ + region.e_t = ECC_DISABLED; \ + region.g_t = GLOBAL; \ + region.inner_norm_t = NON_CACHEABLE; \ + region.outer_norm_t = NON_CACHEABLE; \ + region.mem_t = SHARED_DEVICE; \ + region.sec_t = SECURE; \ + region.xn_t = NON_EXECUTE; \ + region.priv_t = RW; \ + region.user_t = RW; \ + region.sh_t = NON_SHARED; \ + MMU_GetPageDescriptor(&descriptor_l1, &descriptor_l2, region); + +//Page_64k_Device_RW. Shared device, not executable, rw, domain 0 +#define page64k_device_rw(descriptor_l1, descriptor_l2, region) region.rg_t = PAGE_64k; \ + region.domain = 0x0; \ + region.e_t = ECC_DISABLED; \ + region.g_t = GLOBAL; \ + region.inner_norm_t = NON_CACHEABLE; \ + region.outer_norm_t = NON_CACHEABLE; \ + region.mem_t = SHARED_DEVICE; \ + region.sec_t = SECURE; \ + region.xn_t = NON_EXECUTE; \ + region.priv_t = RW; \ + region.user_t = RW; \ + region.sh_t = NON_SHARED; \ + MMU_GetPageDescriptor(&descriptor_l1, &descriptor_l2, region); + +/** \brief Set section execution-never attribute + + \param [out] descriptor_l1 L1 descriptor. + \param [in] xn Section execution-never attribute : EXECUTE , NON_EXECUTE. + + \return 0 +*/ +__STATIC_INLINE int MMU_XNSection(uint32_t *descriptor_l1, mmu_execute_Type xn) +{ + *descriptor_l1 &= SECTION_XN_MASK; + *descriptor_l1 |= ((xn & 0x1) << SECTION_XN_SHIFT); + return 0; +} + +/** \brief Set section domain + + \param [out] descriptor_l1 L1 descriptor. + \param [in] domain Section domain + + \return 0 +*/ +__STATIC_INLINE int MMU_DomainSection(uint32_t *descriptor_l1, uint8_t domain) +{ + *descriptor_l1 &= SECTION_DOMAIN_MASK; + *descriptor_l1 |= ((domain & 0xF) << SECTION_DOMAIN_SHIFT); + return 0; +} + +/** \brief Set section parity check + + \param [out] descriptor_l1 L1 descriptor. + \param [in] p_bit Parity check: ECC_DISABLED, ECC_ENABLED + + \return 0 +*/ +__STATIC_INLINE int MMU_PSection(uint32_t *descriptor_l1, mmu_ecc_check_Type p_bit) +{ + *descriptor_l1 &= SECTION_P_MASK; + *descriptor_l1 |= ((p_bit & 0x1) << SECTION_P_SHIFT); + return 0; +} + +/** \brief Set section access privileges + + \param [out] descriptor_l1 L1 descriptor. + \param [in] user User Level Access: NO_ACCESS, RW, READ + \param [in] priv Privilege Level Access: NO_ACCESS, RW, READ + \param [in] afe Access flag enable + + \return 0 +*/ +__STATIC_INLINE int MMU_APSection(uint32_t *descriptor_l1, mmu_access_Type user, mmu_access_Type priv, uint32_t afe) +{ + uint32_t ap = 0; + + if (afe == 0) { //full access + if ((priv == NO_ACCESS) && (user == NO_ACCESS)) { ap = 0x0; } + else if ((priv == RW) && (user == NO_ACCESS)) { ap = 0x1; } + else if ((priv == RW) && (user == READ)) { ap = 0x2; } + else if ((priv == RW) && (user == RW)) { ap = 0x3; } + else if ((priv == READ) && (user == NO_ACCESS)) { ap = 0x5; } + else if ((priv == READ) && (user == READ)) { ap = 0x7; } + } + + else { //Simplified access + if ((priv == RW) && (user == NO_ACCESS)) { ap = 0x1; } + else if ((priv == RW) && (user == RW)) { ap = 0x3; } + else if ((priv == READ) && (user == NO_ACCESS)) { ap = 0x5; } + else if ((priv == READ) && (user == READ)) { ap = 0x7; } + } + + *descriptor_l1 &= SECTION_AP_MASK; + *descriptor_l1 |= (ap & 0x3) << SECTION_AP_SHIFT; + *descriptor_l1 |= ((ap & 0x4)>>2) << SECTION_AP2_SHIFT; + + return 0; +} + +/** \brief Set section shareability + + \param [out] descriptor_l1 L1 descriptor. + \param [in] s_bit Section shareability: NON_SHARED, SHARED + + \return 0 +*/ +__STATIC_INLINE int MMU_SharedSection(uint32_t *descriptor_l1, mmu_shared_Type s_bit) +{ + *descriptor_l1 &= SECTION_S_MASK; + *descriptor_l1 |= ((s_bit & 0x1) << SECTION_S_SHIFT); + return 0; +} + +/** \brief Set section Global attribute + + \param [out] descriptor_l1 L1 descriptor. + \param [in] g_bit Section attribute: GLOBAL, NON_GLOBAL + + \return 0 +*/ +__STATIC_INLINE int MMU_GlobalSection(uint32_t *descriptor_l1, mmu_global_Type g_bit) +{ + *descriptor_l1 &= SECTION_NG_MASK; + *descriptor_l1 |= ((g_bit & 0x1) << SECTION_NG_SHIFT); + return 0; +} + +/** \brief Set section Security attribute + + \param [out] descriptor_l1 L1 descriptor. + \param [in] s_bit Section Security attribute: SECURE, NON_SECURE + + \return 0 +*/ +__STATIC_INLINE int MMU_SecureSection(uint32_t *descriptor_l1, mmu_secure_Type s_bit) +{ + *descriptor_l1 &= SECTION_NS_MASK; + *descriptor_l1 |= ((s_bit & 0x1) << SECTION_NS_SHIFT); + return 0; +} + +/* Page 4k or 64k */ +/** \brief Set 4k/64k page execution-never attribute + + \param [out] descriptor_l2 L2 descriptor. + \param [in] xn Page execution-never attribute : EXECUTE , NON_EXECUTE. + \param [in] page Page size: PAGE_4k, PAGE_64k, + + \return 0 +*/ +__STATIC_INLINE int MMU_XNPage(uint32_t *descriptor_l2, mmu_execute_Type xn, mmu_region_size_Type page) +{ + if (page == PAGE_4k) + { + *descriptor_l2 &= PAGE_XN_4K_MASK; + *descriptor_l2 |= ((xn & 0x1) << PAGE_XN_4K_SHIFT); + } + else + { + *descriptor_l2 &= PAGE_XN_64K_MASK; + *descriptor_l2 |= ((xn & 0x1) << PAGE_XN_64K_SHIFT); + } + return 0; +} + +/** \brief Set 4k/64k page domain + + \param [out] descriptor_l1 L1 descriptor. + \param [in] domain Page domain + + \return 0 +*/ +__STATIC_INLINE int MMU_DomainPage(uint32_t *descriptor_l1, uint8_t domain) +{ + *descriptor_l1 &= PAGE_DOMAIN_MASK; + *descriptor_l1 |= ((domain & 0xf) << PAGE_DOMAIN_SHIFT); + return 0; +} + +/** \brief Set 4k/64k page parity check + + \param [out] descriptor_l1 L1 descriptor. + \param [in] p_bit Parity check: ECC_DISABLED, ECC_ENABLED + + \return 0 +*/ +__STATIC_INLINE int MMU_PPage(uint32_t *descriptor_l1, mmu_ecc_check_Type p_bit) +{ + *descriptor_l1 &= SECTION_P_MASK; + *descriptor_l1 |= ((p_bit & 0x1) << SECTION_P_SHIFT); + return 0; +} + +/** \brief Set 4k/64k page access privileges + + \param [out] descriptor_l2 L2 descriptor. + \param [in] user User Level Access: NO_ACCESS, RW, READ + \param [in] priv Privilege Level Access: NO_ACCESS, RW, READ + \param [in] afe Access flag enable + + \return 0 +*/ +__STATIC_INLINE int MMU_APPage(uint32_t *descriptor_l2, mmu_access_Type user, mmu_access_Type priv, uint32_t afe) +{ + uint32_t ap = 0; + + if (afe == 0) { //full access + if ((priv == NO_ACCESS) && (user == NO_ACCESS)) { ap = 0x0; } + else if ((priv == RW) && (user == NO_ACCESS)) { ap = 0x1; } + else if ((priv == RW) && (user == READ)) { ap = 0x2; } + else if ((priv == RW) && (user == RW)) { ap = 0x3; } + else if ((priv == READ) && (user == NO_ACCESS)) { ap = 0x5; } + else if ((priv == READ) && (user == READ)) { ap = 0x6; } + } + + else { //Simplified access + if ((priv == RW) && (user == NO_ACCESS)) { ap = 0x1; } + else if ((priv == RW) && (user == RW)) { ap = 0x3; } + else if ((priv == READ) && (user == NO_ACCESS)) { ap = 0x5; } + else if ((priv == READ) && (user == READ)) { ap = 0x7; } + } + + *descriptor_l2 &= PAGE_AP_MASK; + *descriptor_l2 |= (ap & 0x3) << PAGE_AP_SHIFT; + *descriptor_l2 |= ((ap & 0x4)>>2) << PAGE_AP2_SHIFT; + + return 0; +} + +/** \brief Set 4k/64k page shareability + + \param [out] descriptor_l2 L2 descriptor. + \param [in] s_bit 4k/64k page shareability: NON_SHARED, SHARED + + \return 0 +*/ +__STATIC_INLINE int MMU_SharedPage(uint32_t *descriptor_l2, mmu_shared_Type s_bit) +{ + *descriptor_l2 &= PAGE_S_MASK; + *descriptor_l2 |= ((s_bit & 0x1) << PAGE_S_SHIFT); + return 0; +} + +/** \brief Set 4k/64k page Global attribute + + \param [out] descriptor_l2 L2 descriptor. + \param [in] g_bit 4k/64k page attribute: GLOBAL, NON_GLOBAL + + \return 0 +*/ +__STATIC_INLINE int MMU_GlobalPage(uint32_t *descriptor_l2, mmu_global_Type g_bit) +{ + *descriptor_l2 &= PAGE_NG_MASK; + *descriptor_l2 |= ((g_bit & 0x1) << PAGE_NG_SHIFT); + return 0; +} + +/** \brief Set 4k/64k page Security attribute + + \param [out] descriptor_l1 L1 descriptor. + \param [in] s_bit 4k/64k page Security attribute: SECURE, NON_SECURE + + \return 0 +*/ +__STATIC_INLINE int MMU_SecurePage(uint32_t *descriptor_l1, mmu_secure_Type s_bit) +{ + *descriptor_l1 &= PAGE_NS_MASK; + *descriptor_l1 |= ((s_bit & 0x1) << PAGE_NS_SHIFT); + return 0; +} + +/** \brief Set Section memory attributes + + \param [out] descriptor_l1 L1 descriptor. + \param [in] mem Section memory type: NORMAL, DEVICE, SHARED_DEVICE, NON_SHARED_DEVICE, STRONGLY_ORDERED + \param [in] outer Outer cacheability: NON_CACHEABLE, WB_WA, WT, WB_NO_WA, + \param [in] inner Inner cacheability: NON_CACHEABLE, WB_WA, WT, WB_NO_WA, + + \return 0 +*/ +__STATIC_INLINE int MMU_MemorySection(uint32_t *descriptor_l1, mmu_memory_Type mem, mmu_cacheability_Type outer, mmu_cacheability_Type inner) +{ + *descriptor_l1 &= SECTION_TEXCB_MASK; + + if (STRONGLY_ORDERED == mem) + { + return 0; + } + else if (SHARED_DEVICE == mem) + { + *descriptor_l1 |= (1 << SECTION_B_SHIFT); + } + else if (NON_SHARED_DEVICE == mem) + { + *descriptor_l1 |= (1 << SECTION_TEX1_SHIFT); + } + else if (NORMAL == mem) + { + *descriptor_l1 |= 1 << SECTION_TEX2_SHIFT; + switch(inner) + { + case NON_CACHEABLE: + break; + case WB_WA: + *descriptor_l1 |= (1 << SECTION_B_SHIFT); + break; + case WT: + *descriptor_l1 |= 1 << SECTION_C_SHIFT; + break; + case WB_NO_WA: + *descriptor_l1 |= (1 << SECTION_B_SHIFT) | (1 << SECTION_C_SHIFT); + break; + } + switch(outer) + { + case NON_CACHEABLE: + break; + case WB_WA: + *descriptor_l1 |= (1 << SECTION_TEX0_SHIFT); + break; + case WT: + *descriptor_l1 |= 1 << SECTION_TEX1_SHIFT; + break; + case WB_NO_WA: + *descriptor_l1 |= (1 << SECTION_TEX0_SHIFT) | (1 << SECTION_TEX0_SHIFT); + break; + } + } + return 0; +} + +/** \brief Set 4k/64k page memory attributes + + \param [out] descriptor_l2 L2 descriptor. + \param [in] mem 4k/64k page memory type: NORMAL, DEVICE, SHARED_DEVICE, NON_SHARED_DEVICE, STRONGLY_ORDERED + \param [in] outer Outer cacheability: NON_CACHEABLE, WB_WA, WT, WB_NO_WA, + \param [in] inner Inner cacheability: NON_CACHEABLE, WB_WA, WT, WB_NO_WA, + \param [in] page Page size + + \return 0 +*/ +__STATIC_INLINE int MMU_MemoryPage(uint32_t *descriptor_l2, mmu_memory_Type mem, mmu_cacheability_Type outer, mmu_cacheability_Type inner, mmu_region_size_Type page) +{ + *descriptor_l2 &= PAGE_4K_TEXCB_MASK; + + if (page == PAGE_64k) + { + //same as section + MMU_MemorySection(descriptor_l2, mem, outer, inner); + } + else + { + if (STRONGLY_ORDERED == mem) + { + return 0; + } + else if (SHARED_DEVICE == mem) + { + *descriptor_l2 |= (1 << PAGE_4K_B_SHIFT); + } + else if (NON_SHARED_DEVICE == mem) + { + *descriptor_l2 |= (1 << PAGE_4K_TEX1_SHIFT); + } + else if (NORMAL == mem) + { + *descriptor_l2 |= 1 << PAGE_4K_TEX2_SHIFT; + switch(inner) + { + case NON_CACHEABLE: + break; + case WB_WA: + *descriptor_l2 |= (1 << PAGE_4K_B_SHIFT); + break; + case WT: + *descriptor_l2 |= 1 << PAGE_4K_C_SHIFT; + break; + case WB_NO_WA: + *descriptor_l2 |= (1 << PAGE_4K_B_SHIFT) | (1 << PAGE_4K_C_SHIFT); + break; + } + switch(outer) + { + case NON_CACHEABLE: + break; + case WB_WA: + *descriptor_l2 |= (1 << PAGE_4K_TEX0_SHIFT); + break; + case WT: + *descriptor_l2 |= 1 << PAGE_4K_TEX1_SHIFT; + break; + case WB_NO_WA: + *descriptor_l2 |= (1 << PAGE_4K_TEX0_SHIFT) | (1 << PAGE_4K_TEX0_SHIFT); + break; + } + } + } + + return 0; +} + +/** \brief Create a L1 section descriptor + + \param [out] descriptor L1 descriptor + \param [in] reg Section attributes + + \return 0 +*/ +__STATIC_INLINE int MMU_GetSectionDescriptor(uint32_t *descriptor, mmu_region_attributes_Type reg) +{ + *descriptor = 0; + + MMU_MemorySection(descriptor, reg.mem_t, reg.outer_norm_t, reg.inner_norm_t); + MMU_XNSection(descriptor,reg.xn_t); + MMU_DomainSection(descriptor, reg.domain); + MMU_PSection(descriptor, reg.e_t); + MMU_APSection(descriptor, reg.priv_t, reg.user_t, 1); + MMU_SharedSection(descriptor,reg.sh_t); + MMU_GlobalSection(descriptor,reg.g_t); + MMU_SecureSection(descriptor,reg.sec_t); + *descriptor &= SECTION_MASK; + *descriptor |= SECTION_DESCRIPTOR; + + return 0; +} + + +/** \brief Create a L1 and L2 4k/64k page descriptor + + \param [out] descriptor L1 descriptor + \param [out] descriptor2 L2 descriptor + \param [in] reg 4k/64k page attributes + + \return 0 +*/ +__STATIC_INLINE int MMU_GetPageDescriptor(uint32_t *descriptor, uint32_t *descriptor2, mmu_region_attributes_Type reg) +{ + *descriptor = 0; + *descriptor2 = 0; + + switch (reg.rg_t) + { + case PAGE_4k: + MMU_MemoryPage(descriptor2, reg.mem_t, reg.outer_norm_t, reg.inner_norm_t, PAGE_4k); + MMU_XNPage(descriptor2, reg.xn_t, PAGE_4k); + MMU_DomainPage(descriptor, reg.domain); + MMU_PPage(descriptor, reg.e_t); + MMU_APPage(descriptor2, reg.priv_t, reg.user_t, 1); + MMU_SharedPage(descriptor2,reg.sh_t); + MMU_GlobalPage(descriptor2,reg.g_t); + MMU_SecurePage(descriptor,reg.sec_t); + *descriptor &= PAGE_L1_MASK; + *descriptor |= PAGE_L1_DESCRIPTOR; + *descriptor2 &= PAGE_L2_4K_MASK; + *descriptor2 |= PAGE_L2_4K_DESC; + break; + + case PAGE_64k: + MMU_MemoryPage(descriptor2, reg.mem_t, reg.outer_norm_t, reg.inner_norm_t, PAGE_64k); + MMU_XNPage(descriptor2, reg.xn_t, PAGE_64k); + MMU_DomainPage(descriptor, reg.domain); + MMU_PPage(descriptor, reg.e_t); + MMU_APPage(descriptor2, reg.priv_t, reg.user_t, 1); + MMU_SharedPage(descriptor2,reg.sh_t); + MMU_GlobalPage(descriptor2,reg.g_t); + MMU_SecurePage(descriptor,reg.sec_t); + *descriptor &= PAGE_L1_MASK; + *descriptor |= PAGE_L1_DESCRIPTOR; + *descriptor2 &= PAGE_L2_64K_MASK; + *descriptor2 |= PAGE_L2_64K_DESC; + break; + + case SECTION: + //error + break; + } + + return 0; +} + +/** \brief Create a 1MB Section + + \param [in] ttb Translation table base address + \param [in] base_address Section base address + \param [in] count Number of sections to create + \param [in] descriptor_l1 L1 descriptor (region attributes) + +*/ +__STATIC_INLINE void MMU_TTSection(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1) +{ + uint32_t offset; + uint32_t entry; + uint32_t i; + + offset = base_address >> 20; + entry = (base_address & 0xFFF00000) | descriptor_l1; + + //4 bytes aligned + ttb = ttb + offset; + + for (i = 0; i < count; i++ ) + { + //4 bytes aligned + *ttb++ = entry; + entry += OFFSET_1M; + } +} + +/** \brief Create a 4k page entry + + \param [in] ttb L1 table base address + \param [in] base_address 4k base address + \param [in] count Number of 4k pages to create + \param [in] descriptor_l1 L1 descriptor (region attributes) + \param [in] ttb_l2 L2 table base address + \param [in] descriptor_l2 L2 descriptor (region attributes) + +*/ +__STATIC_INLINE void MMU_TTPage4k(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1, uint32_t *ttb_l2, uint32_t descriptor_l2 ) +{ + + uint32_t offset, offset2; + uint32_t entry, entry2; + uint32_t i; + + offset = base_address >> 20; + entry = ((int)ttb_l2 & 0xFFFFFC00) | descriptor_l1; + + //4 bytes aligned + ttb += offset; + //create l1_entry + *ttb = entry; + + offset2 = (base_address & 0xff000) >> 12; + ttb_l2 += offset2; + entry2 = (base_address & 0xFFFFF000) | descriptor_l2; + for (i = 0; i < count; i++ ) + { + //4 bytes aligned + *ttb_l2++ = entry2; + entry2 += OFFSET_4K; + } +} + +/** \brief Create a 64k page entry + + \param [in] ttb L1 table base address + \param [in] base_address 64k base address + \param [in] count Number of 64k pages to create + \param [in] descriptor_l1 L1 descriptor (region attributes) + \param [in] ttb_l2 L2 table base address + \param [in] descriptor_l2 L2 descriptor (region attributes) + +*/ +__STATIC_INLINE void MMU_TTPage64k(uint32_t *ttb, uint32_t base_address, uint32_t count, uint32_t descriptor_l1, uint32_t *ttb_l2, uint32_t descriptor_l2 ) +{ + uint32_t offset, offset2; + uint32_t entry, entry2; + uint32_t i,j; + + + offset = base_address >> 20; + entry = ((int)ttb_l2 & 0xFFFFFC00) | descriptor_l1; + + //4 bytes aligned + ttb += offset; + //create l1_entry + *ttb = entry; + + offset2 = (base_address & 0xff000) >> 12; + ttb_l2 += offset2; + entry2 = (base_address & 0xFFFF0000) | descriptor_l2; + for (i = 0; i < count; i++ ) + { + //create 16 entries + for (j = 0; j < 16; j++) + { + //4 bytes aligned + *ttb_l2++ = entry2; + } + entry2 += OFFSET_64K; + } +} + +/** \brief Enable MMU +*/ +__STATIC_INLINE void MMU_Enable(void) +{ + // Set M bit 0 to enable the MMU + // Set AFE bit to enable simplified access permissions model + // Clear TRE bit to disable TEX remap and A bit to disable strict alignment fault checking + __set_SCTLR( (__get_SCTLR() & ~(1 << 28) & ~(1 << 1)) | 1 | (1 << 29)); + __ISB(); +} + +/** \brief Disable MMU +*/ +__STATIC_INLINE void MMU_Disable(void) +{ + // Clear M bit 0 to disable the MMU + __set_SCTLR( __get_SCTLR() & ~1); + __ISB(); +} + +/** \brief Invalidate entire unified TLB +*/ + +__STATIC_INLINE void MMU_InvalidateTLB(void) +{ + __set_TLBIALL(0); + __DSB(); //ensure completion of the invalidation + __ISB(); //ensure instruction fetch path sees new state +} + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CA_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Core_A/Include/irq_ctrl.h b/Drivers/CMSIS/Core_A/Include/irq_ctrl.h new file mode 100644 index 0000000..a6d313d --- /dev/null +++ b/Drivers/CMSIS/Core_A/Include/irq_ctrl.h @@ -0,0 +1,186 @@ +/**************************************************************************//** + * @file irq_ctrl.h + * @brief Interrupt Controller API header file + * @version V1.0.0 + * @date 23. June 2017 + ******************************************************************************/ +/* + * Copyright (c) 2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef IRQ_CTRL_H_ +#define IRQ_CTRL_H_ + +#include + +#ifndef IRQHANDLER_T +#define IRQHANDLER_T +/// Interrupt handler data type +typedef void (*IRQHandler_t) (void); +#endif + +#ifndef IRQN_ID_T +#define IRQN_ID_T +/// Interrupt ID number data type +typedef int32_t IRQn_ID_t; +#endif + +/* Interrupt mode bit-masks */ +#define IRQ_MODE_TRIG_Pos (0U) +#define IRQ_MODE_TRIG_Msk (0x07UL /*<< IRQ_MODE_TRIG_Pos*/) +#define IRQ_MODE_TRIG_LEVEL (0x00UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: level triggered interrupt +#define IRQ_MODE_TRIG_LEVEL_LOW (0x01UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: low level triggered interrupt +#define IRQ_MODE_TRIG_LEVEL_HIGH (0x02UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: high level triggered interrupt +#define IRQ_MODE_TRIG_EDGE (0x04UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: edge triggered interrupt +#define IRQ_MODE_TRIG_EDGE_RISING (0x05UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: rising edge triggered interrupt +#define IRQ_MODE_TRIG_EDGE_FALLING (0x06UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: falling edge triggered interrupt +#define IRQ_MODE_TRIG_EDGE_BOTH (0x07UL /*<< IRQ_MODE_TRIG_Pos*/) ///< Trigger: rising and falling edge triggered interrupt + +#define IRQ_MODE_TYPE_Pos (3U) +#define IRQ_MODE_TYPE_Msk (0x01UL << IRQ_MODE_TYPE_Pos) +#define IRQ_MODE_TYPE_IRQ (0x00UL << IRQ_MODE_TYPE_Pos) ///< Type: interrupt source triggers CPU IRQ line +#define IRQ_MODE_TYPE_FIQ (0x01UL << IRQ_MODE_TYPE_Pos) ///< Type: interrupt source triggers CPU FIQ line + +#define IRQ_MODE_DOMAIN_Pos (4U) +#define IRQ_MODE_DOMAIN_Msk (0x01UL << IRQ_MODE_DOMAIN_Pos) +#define IRQ_MODE_DOMAIN_NONSECURE (0x00UL << IRQ_MODE_DOMAIN_Pos) ///< Domain: interrupt is targeting non-secure domain +#define IRQ_MODE_DOMAIN_SECURE (0x01UL << IRQ_MODE_DOMAIN_Pos) ///< Domain: interrupt is targeting secure domain + +#define IRQ_MODE_CPU_Pos (5U) +#define IRQ_MODE_CPU_Msk (0xFFUL << IRQ_MODE_CPU_Pos) +#define IRQ_MODE_CPU_ALL (0x00UL << IRQ_MODE_CPU_Pos) ///< CPU: interrupt targets all CPUs +#define IRQ_MODE_CPU_0 (0x01UL << IRQ_MODE_CPU_Pos) ///< CPU: interrupt targets CPU 0 +#define IRQ_MODE_CPU_1 (0x02UL << IRQ_MODE_CPU_Pos) ///< CPU: interrupt targets CPU 1 +#define IRQ_MODE_CPU_2 (0x04UL << IRQ_MODE_CPU_Pos) ///< CPU: interrupt targets CPU 2 +#define IRQ_MODE_CPU_3 (0x08UL << IRQ_MODE_CPU_Pos) ///< CPU: interrupt targets CPU 3 +#define IRQ_MODE_CPU_4 (0x10UL << IRQ_MODE_CPU_Pos) ///< CPU: interrupt targets CPU 4 +#define IRQ_MODE_CPU_5 (0x20UL << IRQ_MODE_CPU_Pos) ///< CPU: interrupt targets CPU 5 +#define IRQ_MODE_CPU_6 (0x40UL << IRQ_MODE_CPU_Pos) ///< CPU: interrupt targets CPU 6 +#define IRQ_MODE_CPU_7 (0x80UL << IRQ_MODE_CPU_Pos) ///< CPU: interrupt targets CPU 7 + +#define IRQ_MODE_ERROR (0x80000000UL) ///< Bit indicating mode value error + +/* Interrupt priority bit-masks */ +#define IRQ_PRIORITY_Msk (0x0000FFFFUL) ///< Interrupt priority value bit-mask +#define IRQ_PRIORITY_ERROR (0x80000000UL) ///< Bit indicating priority value error + +/// Initialize interrupt controller. +/// \return 0 on success, -1 on error. +int32_t IRQ_Initialize (void); + +/// Register interrupt handler. +/// \param[in] irqn interrupt ID number +/// \param[in] handler interrupt handler function address +/// \return 0 on success, -1 on error. +int32_t IRQ_SetHandler (IRQn_ID_t irqn, IRQHandler_t handler); + +/// Get the registered interrupt handler. +/// \param[in] irqn interrupt ID number +/// \return registered interrupt handler function address. +IRQHandler_t IRQ_GetHandler (IRQn_ID_t irqn); + +/// Enable interrupt. +/// \param[in] irqn interrupt ID number +/// \return 0 on success, -1 on error. +int32_t IRQ_Enable (IRQn_ID_t irqn); + +/// Disable interrupt. +/// \param[in] irqn interrupt ID number +/// \return 0 on success, -1 on error. +int32_t IRQ_Disable (IRQn_ID_t irqn); + +/// Get interrupt enable state. +/// \param[in] irqn interrupt ID number +/// \return 0 - interrupt is disabled, 1 - interrupt is enabled. +uint32_t IRQ_GetEnableState (IRQn_ID_t irqn); + +/// Configure interrupt request mode. +/// \param[in] irqn interrupt ID number +/// \param[in] mode mode configuration +/// \return 0 on success, -1 on error. +int32_t IRQ_SetMode (IRQn_ID_t irqn, uint32_t mode); + +/// Get interrupt mode configuration. +/// \param[in] irqn interrupt ID number +/// \return current interrupt mode configuration with optional IRQ_MODE_ERROR bit set. +uint32_t IRQ_GetMode (IRQn_ID_t irqn); + +/// Get ID number of current interrupt request (IRQ). +/// \return interrupt ID number. +IRQn_ID_t IRQ_GetActiveIRQ (void); + +/// Get ID number of current fast interrupt request (FIQ). +/// \return interrupt ID number. +IRQn_ID_t IRQ_GetActiveFIQ (void); + +/// Signal end of interrupt processing. +/// \param[in] irqn interrupt ID number +/// \return 0 on success, -1 on error. +int32_t IRQ_EndOfInterrupt (IRQn_ID_t irqn); + +/// Set interrupt pending flag. +/// \param[in] irqn interrupt ID number +/// \return 0 on success, -1 on error. +int32_t IRQ_SetPending (IRQn_ID_t irqn); + +/// Get interrupt pending flag. +/// \param[in] irqn interrupt ID number +/// \return 0 - interrupt is not pending, 1 - interrupt is pending. +uint32_t IRQ_GetPending (IRQn_ID_t irqn); + +/// Clear interrupt pending flag. +/// \param[in] irqn interrupt ID number +/// \return 0 on success, -1 on error. +int32_t IRQ_ClearPending (IRQn_ID_t irqn); + +/// Set interrupt priority value. +/// \param[in] irqn interrupt ID number +/// \param[in] priority interrupt priority value +/// \return 0 on success, -1 on error. +int32_t IRQ_SetPriority (IRQn_ID_t irqn, uint32_t priority); + +/// Get interrupt priority. +/// \param[in] irqn interrupt ID number +/// \return current interrupt priority value with optional IRQ_PRIORITY_ERROR bit set. +uint32_t IRQ_GetPriority (IRQn_ID_t irqn); + +/// Set priority masking threshold. +/// \param[in] priority priority masking threshold value +/// \return 0 on success, -1 on error. +int32_t IRQ_SetPriorityMask (uint32_t priority); + +/// Get priority masking threshold +/// \return current priority masking threshold value with optional IRQ_PRIORITY_ERROR bit set. +uint32_t IRQ_GetPriorityMask (void); + +/// Set priority grouping field split point +/// \param[in] bits number of MSB bits included in the group priority field comparison +/// \return 0 on success, -1 on error. +int32_t IRQ_SetPriorityGroupBits (uint32_t bits); + +/// Get priority grouping field split point +/// \return current number of MSB bits included in the group priority field comparison with +/// optional IRQ_PRIORITY_ERROR bit set. +uint32_t IRQ_GetPriorityGroupBits (void); + +#endif // IRQ_CTRL_H_ diff --git a/Drivers/CMSIS/Core_A/Source/irq_ctrl_gic.c b/Drivers/CMSIS/Core_A/Source/irq_ctrl_gic.c new file mode 100644 index 0000000..cf08a53 --- /dev/null +++ b/Drivers/CMSIS/Core_A/Source/irq_ctrl_gic.c @@ -0,0 +1,410 @@ +/**************************************************************************//** + * @file irq_ctrl_gic.c + * @brief Interrupt controller handling implementation for GIC + * @version V1.0.1 + * @date 9. April 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include "RTE_Components.h" +#include CMSIS_device_header + +#include "irq_ctrl.h" + +#if defined(__GIC_PRESENT) && (__GIC_PRESENT == 1U) + +/// Number of implemented interrupt lines +#ifndef IRQ_GIC_LINE_COUNT +#define IRQ_GIC_LINE_COUNT (1020U) +#endif + +static IRQHandler_t IRQTable[IRQ_GIC_LINE_COUNT] = { 0U }; +static uint32_t IRQ_ID0; + +/// Initialize interrupt controller. +__WEAK int32_t IRQ_Initialize (void) { + uint32_t i; + + for (i = 0U; i < IRQ_GIC_LINE_COUNT; i++) { + IRQTable[i] = (IRQHandler_t)NULL; + } + GIC_Enable(); + return (0); +} + + +/// Register interrupt handler. +__WEAK int32_t IRQ_SetHandler (IRQn_ID_t irqn, IRQHandler_t handler) { + int32_t status; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + IRQTable[irqn] = handler; + status = 0; + } else { + status = -1; + } + + return (status); +} + + +/// Get the registered interrupt handler. +__WEAK IRQHandler_t IRQ_GetHandler (IRQn_ID_t irqn) { + IRQHandler_t h; + + // Ignore CPUID field (software generated interrupts) + irqn &= 0x3FFU; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + h = IRQTable[irqn]; + } else { + h = (IRQHandler_t)0; + } + + return (h); +} + + +/// Enable interrupt. +__WEAK int32_t IRQ_Enable (IRQn_ID_t irqn) { + int32_t status; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + GIC_EnableIRQ ((IRQn_Type)irqn); + status = 0; + } else { + status = -1; + } + + return (status); +} + + +/// Disable interrupt. +__WEAK int32_t IRQ_Disable (IRQn_ID_t irqn) { + int32_t status; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + GIC_DisableIRQ ((IRQn_Type)irqn); + status = 0; + } else { + status = -1; + } + + return (status); +} + + +/// Get interrupt enable state. +__WEAK uint32_t IRQ_GetEnableState (IRQn_ID_t irqn) { + uint32_t enable; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + enable = GIC_GetEnableIRQ((IRQn_Type)irqn); + } else { + enable = 0U; + } + + return (enable); +} + + +/// Configure interrupt request mode. +__WEAK int32_t IRQ_SetMode (IRQn_ID_t irqn, uint32_t mode) { + uint32_t val; + uint8_t cfg; + uint8_t secure; + uint8_t cpu; + int32_t status = 0; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + // Check triggering mode + val = (mode & IRQ_MODE_TRIG_Msk); + + if (val == IRQ_MODE_TRIG_LEVEL) { + cfg = 0x00U; + } else if (val == IRQ_MODE_TRIG_EDGE) { + cfg = 0x02U; + } else { + cfg = 0x00U; + status = -1; + } + + // Check interrupt type + val = mode & IRQ_MODE_TYPE_Msk; + + if (val != IRQ_MODE_TYPE_IRQ) { + status = -1; + } + + // Check interrupt domain + val = mode & IRQ_MODE_DOMAIN_Msk; + + if (val == IRQ_MODE_DOMAIN_NONSECURE) { + secure = 0U; + } else { + // Check security extensions support + val = GIC_DistributorInfo() & (1UL << 10U); + + if (val != 0U) { + // Security extensions are supported + secure = 1U; + } else { + secure = 0U; + status = -1; + } + } + + // Check interrupt CPU targets + val = mode & IRQ_MODE_CPU_Msk; + + if (val == IRQ_MODE_CPU_ALL) { + cpu = 0xFFU; + } else { + cpu = val >> IRQ_MODE_CPU_Pos; + } + + // Apply configuration if no mode error + if (status == 0) { + GIC_SetConfiguration((IRQn_Type)irqn, cfg); + GIC_SetTarget ((IRQn_Type)irqn, cpu); + + if (secure != 0U) { + GIC_SetGroup ((IRQn_Type)irqn, secure); + } + } + } + + return (status); +} + + +/// Get interrupt mode configuration. +__WEAK uint32_t IRQ_GetMode (IRQn_ID_t irqn) { + uint32_t mode; + uint32_t val; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + mode = IRQ_MODE_TYPE_IRQ; + + // Get trigger mode + val = GIC_GetConfiguration((IRQn_Type)irqn); + + if ((val & 2U) != 0U) { + // Corresponding interrupt is edge triggered + mode |= IRQ_MODE_TRIG_EDGE; + } else { + // Corresponding interrupt is level triggered + mode |= IRQ_MODE_TRIG_LEVEL; + } + + // Get interrupt CPU targets + mode |= GIC_GetTarget ((IRQn_Type)irqn) << IRQ_MODE_CPU_Pos; + + } else { + mode = IRQ_MODE_ERROR; + } + + return (mode); +} + + +/// Get ID number of current interrupt request (IRQ). +__WEAK IRQn_ID_t IRQ_GetActiveIRQ (void) { + IRQn_ID_t irqn; + uint32_t prio; + + /* Dummy read to avoid GIC 390 errata 801120 */ + GIC_GetHighPendingIRQ(); + + irqn = GIC_AcknowledgePending(); + + __DSB(); + + /* Workaround GIC 390 errata 733075 (GIC-390_Errata_Notice_v6.pdf, 09-Jul-2014) */ + /* The following workaround code is for a single-core system. It would be */ + /* different in a multi-core system. */ + /* If the ID is 0 or 0x3FE or 0x3FF, then the GIC CPU interface may be locked-up */ + /* so unlock it, otherwise service the interrupt as normal. */ + /* Special IDs 1020=0x3FC and 1021=0x3FD are reserved values in GICv1 and GICv2 */ + /* so will not occur here. */ + + if ((irqn == 0) || (irqn >= 0x3FE)) { + /* Unlock the CPU interface with a dummy write to Interrupt Priority Register */ + prio = GIC_GetPriority((IRQn_Type)0); + GIC_SetPriority ((IRQn_Type)0, prio); + + __DSB(); + + if ((irqn == 0U) && ((GIC_GetIRQStatus ((IRQn_Type)irqn) & 1U) != 0U) && (IRQ_ID0 == 0U)) { + /* If the ID is 0, is active and has not been seen before */ + IRQ_ID0 = 1U; + } + /* End of Workaround GIC 390 errata 733075 */ + } + + return (irqn); +} + + +/// Get ID number of current fast interrupt request (FIQ). +__WEAK IRQn_ID_t IRQ_GetActiveFIQ (void) { + return ((IRQn_ID_t)-1); +} + + +/// Signal end of interrupt processing. +__WEAK int32_t IRQ_EndOfInterrupt (IRQn_ID_t irqn) { + int32_t status; + IRQn_Type irq = (IRQn_Type)irqn; + + irqn &= 0x3FFU; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + GIC_EndInterrupt (irq); + + if (irqn == 0) { + IRQ_ID0 = 0U; + } + + status = 0; + } else { + status = -1; + } + + return (status); +} + + +/// Set interrupt pending flag. +__WEAK int32_t IRQ_SetPending (IRQn_ID_t irqn) { + int32_t status; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + GIC_SetPendingIRQ ((IRQn_Type)irqn); + status = 0; + } else { + status = -1; + } + + return (status); +} + +/// Get interrupt pending flag. +__WEAK uint32_t IRQ_GetPending (IRQn_ID_t irqn) { + uint32_t pending; + + if ((irqn >= 16) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + pending = GIC_GetPendingIRQ ((IRQn_Type)irqn); + } else { + pending = 0U; + } + + return (pending & 1U); +} + + +/// Clear interrupt pending flag. +__WEAK int32_t IRQ_ClearPending (IRQn_ID_t irqn) { + int32_t status; + + if ((irqn >= 16) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + GIC_ClearPendingIRQ ((IRQn_Type)irqn); + status = 0; + } else { + status = -1; + } + + return (status); +} + + +/// Set interrupt priority value. +__WEAK int32_t IRQ_SetPriority (IRQn_ID_t irqn, uint32_t priority) { + int32_t status; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + GIC_SetPriority ((IRQn_Type)irqn, priority); + status = 0; + } else { + status = -1; + } + + return (status); +} + + +/// Get interrupt priority. +__WEAK uint32_t IRQ_GetPriority (IRQn_ID_t irqn) { + uint32_t priority; + + if ((irqn >= 0) && (irqn < (IRQn_ID_t)IRQ_GIC_LINE_COUNT)) { + priority = GIC_GetPriority ((IRQn_Type)irqn); + } else { + priority = IRQ_PRIORITY_ERROR; + } + + return (priority); +} + + +/// Set priority masking threshold. +__WEAK int32_t IRQ_SetPriorityMask (uint32_t priority) { + GIC_SetInterfacePriorityMask (priority); + return (0); +} + + +/// Get priority masking threshold +__WEAK uint32_t IRQ_GetPriorityMask (void) { + return GIC_GetInterfacePriorityMask(); +} + + +/// Set priority grouping field split point +__WEAK int32_t IRQ_SetPriorityGroupBits (uint32_t bits) { + int32_t status; + + if (bits == IRQ_PRIORITY_Msk) { + bits = 7U; + } + + if (bits < 8U) { + GIC_SetBinaryPoint (7U - bits); + status = 0; + } else { + status = -1; + } + + return (status); +} + + +/// Get priority grouping field split point +__WEAK uint32_t IRQ_GetPriorityGroupBits (void) { + uint32_t bp; + + bp = GIC_GetBinaryPoint() & 0x07U; + + return (7U - bp); +} + +#endif diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/arr_desc/arr_desc.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/arr_desc/arr_desc.h new file mode 100644 index 0000000..effab26 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/arr_desc/arr_desc.h @@ -0,0 +1,220 @@ +#ifndef _ARR_DESC_H_ +#define _ARR_DESC_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ +#include +#include /* memset() */ +#include "../util/util.h" /* CONCAT() */ + +/*--------------------------------------------------------------------------------*/ +/* Type Definitions */ +/*--------------------------------------------------------------------------------*/ + +/** + * Array-descriptor struct. + */ +typedef struct ARR_DESC_struct +{ + void * data_ptr; /* Pointer to the array contents. */ + int32_t element_count; /* Number of current elements. */ + int32_t element_size; /* Size of current elements in bytes. */ + int32_t underlying_size; /* Size of underlying array in bytes. */ +} ARR_DESC_t; + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Prefix of the array variable's name when creating an array and an array + * descriptor at the same time. + */ +#define ARR_DESC_ARR_PREFIX ARR_DESC_ARR_ + +/** + * Evaluate to the array variable's name when creating an array and an array + * descriptor at the same time. + */ +#define ARR_DESC_ARR_NAME(name) \ + CONCAT(ARR_DESC_ARR_PREFIX, name) + +/** + * Define an #ARR_DESC_t by itself. + * + * @note The user must supply an array to store the data used by the + * #ARR_DESC_t. + */ +#define ARR_DESC_INTERNAL_DEFINE(name, data_ptr, \ + element_count, element_size) \ + ARR_DESC_t name = { \ + data_ptr, \ + element_count, \ + element_size, \ + element_count * element_size \ + } \ + +/** + * Define both an array and an #ARR_DESC_t that describes it. + * + * @note Use the #CURLY() macro for the content field; it provides the curly + * braces necessary for an array initialization. + */ +#define ARR_DESC_DEFINE(type, name, element_count, content) \ + type ARR_DESC_ARR_NAME(name)[element_count] = content; \ + ARR_DESC_INTERNAL_DEFINE(name, \ + &ARR_DESC_ARR_NAME(name), \ + element_count, \ + sizeof(type)) /* Note the lacking semicolon */ + +/** + * Create a #ARR_DESC_t which refers to a subset of the data in another. + * + * The new #ARR_DESC_t shares the same underlying array as the aliased + * #ARR_DESC_t, but only describes a subset of the originals values. + */ +#define ARR_DESC_DEFINE_SUBSET(name, original, element_cnt) \ + ARR_DESC_INTERNAL_DEFINE(name, \ + &ARR_DESC_ARR_NAME(original), \ + element_cnt, \ + sizeof(ARR_DESC_ARR_NAME(original)[0]) \ + ) /* Note the lacking semicolon */ + +/** + * Creat an #ARR_DESC_t which points to the data in an existing array. + * + * @param start_idx Offset in array_ptr of first element. + * @param element_cnt Number of elements to include in the #ARR_DESC_t. + * + * @example + * + * float my_floats[4] = {0.0f, 1.0f, 2.0f, 3.0f}; + * + * ARR_DESC_DEFINE_USING_ARR(my_arr_desc, my_floats, 1, 3); + * + * printf("Element 0: %f\n", ARR_DESC_ELT(float, 0, &my_arr_desc)); + * printf("Element 1: %f\n", ARR_DESC_ELT(float, 1, &my_arr_desc)); + * + * Outputs: + * + * Element 0: 1.000000 + * Element 1: 2.000000 + * + * @warning There are no checks in place to catch invalid start indices; This + * is left to the user. + */ +#define ARR_DESC_DEFINE_USING_ARR(type, name, array_ptr, start_idx, element_cnt) \ + ARR_DESC_INTERNAL_DEFINE( \ + name, \ + (type *) (array_ptr + start_idx), \ + element_cnt, \ + sizeof(type) \ + ) /* Note the lacking semicolon*/ + +/** + * Declare an #ARR_DESC_t object. + */ +#define ARR_DESC_DECLARE(name) \ + extern ARR_DESC_t name /* Note the lacking semicolon */ + +/** + * Evaluate to the number of bytes stored in the #ARR_DESC_t. + */ +#define ARR_DESC_BYTES(arr_desc_ptr) \ + ((arr_desc_ptr)->element_count * (arr_desc_ptr)->element_size) + +/** + * Set the contents of #ARR_DESC_t to value. + */ +#define ARR_DESC_MEMSET(arr_desc_ptr, value, bytes) \ + do \ + { \ + memset((arr_desc_ptr)->data_ptr, \ + value, \ + BOUND(0, \ + (arr_desc_ptr)->underlying_size, \ + bytes) \ + ); \ + } while (0) + +/** + * Perform a memcpy of 'bytes' bytes from the source #ARR_DESC_t to the + * destination #ARR_DESC_t. + */ +#define ARR_DESC_MEMCPY(arr_desc_dest_ptr, arr_desc_src_ptr, bytes) \ + do \ + { \ + memcpy((arr_desc_dest_ptr)->data_ptr, \ + (arr_desc_src_ptr)->data_ptr, \ + BOUND(0, \ + (arr_desc_dest_ptr)->underlying_size, \ + bytes)); \ + } while (0) + +/** + * Evaluate to true if the source #ARR_DESC_t contents will fit into the + * destination #ARR_DESC_t and false otherwise. + */ +#define ARR_DESC_COPYABLE(arr_desc_dest_ptr, arr_desc_src_ptr) \ + (ARR_DESC_BYTES(arr_desc_src_ptr) <= \ + (arr_desc_dest_ptr)->underlying_size) + +/** + * Copy all the data from the source #ARR_DESC_t to the destination + * #ARR_DESC_t. + * + * @note If the destination #ARR_DESC_t is too small to fit the source data the + * copy is aborted and nothing happens. + */ +#define ARR_DESC_COPY(arr_desc_dest_ptr, arr_desc_src_ptr) \ + do \ + { \ + if (ARR_DESC_COPYABLE(arr_desc_dest_ptr, \ + arr_desc_src_ptr)) \ + { \ + ARR_DESC_MEMCPY(arr_desc_dest_ptr, \ + arr_desc_src_ptr, \ + ARR_DESC_BYTES(arr_desc_src_ptr)); \ + /* Update the properties*/ \ + (arr_desc_dest_ptr)->element_count = \ + (arr_desc_src_ptr)->element_count; \ + (arr_desc_dest_ptr)->element_size = \ + (arr_desc_src_ptr)->element_size; \ + } \ + } while (0) + +/** + * Compare the data in two #ARR_DESC_t structs for the specified number of + * bytes. + */ +#define ARR_DESC_MEMCMP(arr_desc_ptr_a, arr_desc_ptr_b, bytes) \ + memcmp((arr_desc_ptr_a)->data_ptr, \ + (arr_desc_ptr_b)->data_ptr, \ + bytes) /* Note the lacking semicolon */ \ + +/** + * Zero out the contents of the #ARR_DESC_t. + */ +#define ARR_DESC_ZERO(arr_desc_ptr) \ + ARR_DESC_MEMSET(arr_desc_ptr, \ + 0, \ + (arr_desc_ptr)->underlying_size) + +/** + * Evaluate to the data address in #ARR_DESC_t at offset. + */ +#define ARR_DESC_DATA_ADDR(type, arr_desc_ptr, offset) \ + ((void*)(((type *) \ + ((arr_desc_ptr)->data_ptr)) \ + + offset)) + +/** + * Evaluate to the element in #ARR_DESC_t with type at idx. + */ +#define ARR_DESC_ELT(type, idx, arr_desc_ptr) \ + (*((type *) ARR_DESC_DATA_ADDR(type, \ + arr_desc_ptr, \ + idx))) + +#endif /* _ARR_DESC_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest.h new file mode 100644 index 0000000..9d0af06 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest.h @@ -0,0 +1,17 @@ +#ifndef _JTEST_H_ +#define _JTEST_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "jtest_fw.h" +#include "jtest_test.h" +#include "jtest_test_define.h" +#include "jtest_test_call.h" +#include "jtest_group.h" +#include "jtest_group_define.h" +#include "jtest_group_call.h" +#include "jtest_cycle.h" + +#endif /* _JTEST_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_cycle.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_cycle.h new file mode 100644 index 0000000..1934af8 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_cycle.h @@ -0,0 +1,65 @@ +#ifndef _JTEST_CYCLE_H_ +#define _JTEST_CYCLE_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "jtest_fw.h" /* JTEST_DUMP_STRF() */ +#include "jtest_systick.h" +#include "jtest_util.h" /* STR() */ + +/*--------------------------------------------------------------------------------*/ +/* Declare Module Variables */ +/*--------------------------------------------------------------------------------*/ +extern const char * JTEST_CYCLE_STRF; + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Wrap the function call, fn_call, to count execution cycles and display the + * results. + */ +/* skipp function name + param +#define JTEST_COUNT_CYCLES(fn_call) \ + do \ + { \ + uint32_t __jtest_cycle_end_count; \ + \ + JTEST_SYSTICK_RESET(SysTick); \ + JTEST_SYSTICK_START(SysTick); \ + \ + fn_call; \ + \ + __jtest_cycle_end_count = \ + JTEST_SYSTICK_VALUE(SysTick); \ + \ + JTEST_SYSTICK_RESET(SysTick); \ + JTEST_DUMP_STRF(JTEST_CYCLE_STRF, \ + STR(fn_call), \ + (JTEST_SYSTICK_INITIAL_VALUE - \ + __jtest_cycle_end_count)); \ + } while (0) +*/ +#define JTEST_COUNT_CYCLES(fn_call) \ + do \ + { \ + uint32_t __jtest_cycle_end_count; \ + \ + JTEST_SYSTICK_RESET(SysTick); \ + JTEST_SYSTICK_START(SysTick); \ + \ + fn_call; \ + \ + __jtest_cycle_end_count = \ + JTEST_SYSTICK_VALUE(SysTick); \ + \ + JTEST_SYSTICK_RESET(SysTick); \ + JTEST_DUMP_STRF(JTEST_CYCLE_STRF, \ + (JTEST_SYSTICK_INITIAL_VALUE - \ + __jtest_cycle_end_count)); \ + } while (0) + +#endif /* _JTEST_CYCLE_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_define.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_define.h new file mode 100644 index 0000000..cbec329 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_define.h @@ -0,0 +1,37 @@ +#ifndef _JTEST_DEFINE_H_ +#define _JTEST_DEFINE_H_ + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Makes a symbol for use as a struct name. Names made this way have two parts; + * the first parts is a prefix common to all structs of that class. The second + * is a specifier which differs for each instance of that struct type. + */ +#define JTEST_STRUCT_NAME(prefix, specifier) \ + CONCAT(prefix, specifier) + +/** + * Define a struct with type with a name generated by #JTEST_STRUCT_NAME(). + */ +#define JTEST_DEFINE_STRUCT(type, struct_name) \ + type struct_name + +/** + * Declare a struct with type with a name generated by #JTEST_STRUCT_NAME(). + */ +#define JTEST_DECLARE_STRUCT(struct_definition) \ + extern struct_definition + +/** + * Define and initialize a struct (created with JTEST_DEFINE_STRUCT()) and + * initialize it with init_values. + */ +#define JTEST_INIT_STRUCT(struct_definition, init_values) \ + struct_definition = { \ + init_values \ + } + +#endif /* _JTEST_DEFINE_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_fw.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_fw.h new file mode 100644 index 0000000..13b015d --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_fw.h @@ -0,0 +1,253 @@ +#ifndef _JTEST_FW_H_ +#define _JTEST_FW_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include /* int32_t */ +#include /* strcpy() */ +#include /* sprintf() */ +#include "jtest_pf.h" /* Extend JTEST_FW_t with Pass/Fail data */ +#include "jtest_group.h" + +/*--------------------------------------------------------------------------------*/ +/* Type Definitions */ +/*--------------------------------------------------------------------------------*/ + +/** + * A struct used to interface with the Keil Debugger. + */ +typedef struct JTEST_FW_struct +{ + /* Action Triggers: The Keil debugger monitors these values for changes. In + * response to a change, the debugger executes code on the host. */ + volatile int32_t test_start; + volatile int32_t test_end; + volatile int32_t group_start; + volatile int32_t group_end; + volatile int32_t dump_str; + volatile int32_t dump_data; + volatile int32_t exit_fw; + + JTEST_GROUP_t * current_group_ptr; + + /* Buffers: The C-code cannot send strings and data directly to the + * debugging framework. Instead, the debugger can be told to read 128 byte + * (by default) chunks of memory. Data received in this manner requires + * post-processing to be legible.*/ + char * str_buffer; + char * data_buffer; + + /* Pass/Fail Data */ + JTEST_PF_MEMBERS; + +} JTEST_FW_t; + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Default name for the JTEST_FW struct. + * + * Define your own if you want the variable containing the #JTEST_FW_t to have + * a different name. + */ +#ifndef JTEST_FW +#define JTEST_FW JTEST_FW +#endif + +/** + * Default name for the JTEST_FW_STR_BUFFER. + * + * Define your own if you want the variable containing the char buffer to have + * a different name. + */ +#ifndef JTEST_FW_STR_BUFFER +#define JTEST_FW_STR_BUFFER JTEST_FW_STR_BUFFER +#endif + +/** + * Size of the #JTEST_FW_t, output string-buffer. + * + * If you change this value, make sure the "dump_str_fn" and "dump_data_fn" + * functions in jtest_fns.ini uses the same size. If you aren't sure, read the + * documentation Keil Debugger Command 'DISPLAY'. + */ +#define JTEST_BUF_SIZE 256 + + +/** + * The maximum number of bytes output at once using #JTEST_DUMP_STRF(). + */ +#define JTEST_STR_MAX_OUTPUT_SIZE 128 + +/** + * The maximum number of block transimissions needed to send a string from a + * buffer with JTEST_BUF_SIZE. + */ +#define JTEST_STR_MAX_OUTPUT_SEGMENTS \ + (JTEST_BUF_SIZE / JTEST_STR_MAX_OUTPUT_SIZE) + +/** + * Initialize the JTEST framework. + */ +#define JTEST_INIT() \ + do \ + { \ + JTEST_FW.str_buffer = JTEST_FW_STR_BUFFER; \ + } while (0) + +/* Debugger Action-triggering Macros */ +/*--------------------------------------------------------------------------------*/ + +/** + * Dispatch macro to trigger various actions in the Keil Debugger. + */ +#define JTEST_TRIGGER_ACTION(action_name) \ + do \ + { \ + action_name(); \ + } while (0) + +/** + * Trigger the "Test Start" action in the Keil Debugger. + */ +#define JTEST_ACT_TEST_START() \ + JTEST_TRIGGER_ACTION(test_start) + +/** + * Trigger the "Test End" action in the Keil Debugger. + */ +#define JTEST_ACT_TEST_END() \ + JTEST_TRIGGER_ACTION(test_end) + + +/** + * Trigger the "Group Start" action in the Keil Debugger. + */ +#define JTEST_ACT_GROUP_START() \ + JTEST_TRIGGER_ACTION(group_start) + +/** + * Trigger the "Group End" action in the Keil Debugger. + */ +#define JTEST_ACT_GROUP_END() \ + JTEST_TRIGGER_ACTION(group_end) + + +/** + * Fill the buffer named buf_name with value and dump it to the Keil debugger + * using action. + */ +#define JTEST_ACT_DUMP(action, buf_name, value) \ + do \ + { \ + JTEST_CLEAR_BUFFER(buf_name); \ + strcpy(JTEST_FW.buf_name, (value)); \ + JTEST_TRIGGER_ACTION(action); \ + } while (0) + +/** + * Trigger the "Exit Framework" action in the Keil Debugger. + */ +#define JTEST_ACT_EXIT_FW() \ + do \ + { \ + JTEST_TRIGGER_ACTION(exit_fw); \ + } while (0) + + +/* Buffer Manipulation Macros */ +/*--------------------------------------------------------------------------------*/ + +/** + * Clear the JTEST_FW buffer with name buf_name. + */ +#define JTEST_CLEAR_BUFFER(buf_name) \ + do \ + { \ + memset(JTEST_FW.buf_name, 0, JTEST_BUF_SIZE); \ + } while (0) + +/** + * Clear the memory needed for the JTEST_FW's string buffer. + */ +#define JTEST_CLEAR_STR_BUFFER() \ + JTEST_CLEAR_BUFFER(str_buffer) + +/** + * Clear the memory needed for the JTEST_FW's data buffer. + */ +#define JTEST_CLEAR_DATA_BUFFER() \ + JTEST_CLEAR_BUFFER(data_buffer) + +/** + * Dump the given string to the Keil Debugger. + */ +#define JTEST_DUMP_STR(string) \ + JTEST_ACT_DUMP(dump_str, str_buffer, string) + +/** + * Dump a formatted string to the Keil Debugger. + */ +#define JTEST_DUMP_STRF(format_str, ... ) \ + do \ + { \ + JTEST_CLEAR_STR_BUFFER(); \ + sprintf(JTEST_FW.str_buffer,format_str, __VA_ARGS__); \ + jtest_dump_str_segments(); \ + } while (0) + +/* Pass/Fail Macros */ +/*--------------------------------------------------------------------------------*/ + +/** + * Increment the number of passed tests in #JTEST_FW. + */ +#define JTEST_FW_INC_PASSED(amount) \ + JTEST_PF_INC_PASSED(&JTEST_FW, amount) + +/** + * Increment the number of passed tests in #JTEST_FW. + */ +#define JTEST_FW_INC_FAILED(amount) \ + JTEST_PF_INC_FAILED(&JTEST_FW, amount) + +/* Manipulating the Current Group */ +/*--------------------------------------------------------------------------------*/ + +/** + * Evaluate to the current_group_ptr in #JTEST_FW. + */ +#define JTEST_CURRENT_GROUP_PTR() \ + (JTEST_FW.current_group_ptr) + +#define JTEST_SET_CURRENT_GROUP(group_ptr) \ + do \ + { \ + JTEST_CURRENT_GROUP_PTR() = group_ptr; \ + } while (0) + +/*--------------------------------------------------------------------------------*/ +/* Declare Global Variables */ +/*--------------------------------------------------------------------------------*/ +extern char JTEST_FW_STR_BUFFER[JTEST_BUF_SIZE]; +extern volatile JTEST_FW_t JTEST_FW; + +/*--------------------------------------------------------------------------------*/ +/* Function Prototypes */ +/*--------------------------------------------------------------------------------*/ +void jtest_dump_str_segments(void); + +void test_start (void); +void test_end (void); +void group_start (void); +void group_end (void); +void dump_str (void); +void dump_data (void); +void exit_fw (void); + + +#endif /* _JTEST_FW_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group.h new file mode 100644 index 0000000..3b37ae4 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group.h @@ -0,0 +1,66 @@ +#ifndef _JTEST_GROUP_H_ +#define _JTEST_GROUP_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "jtest_pf.h" +#include "jtest_util.h" + +/*--------------------------------------------------------------------------------*/ +/* Type Definitions */ +/*--------------------------------------------------------------------------------*/ + +/** + * A struct which represents a group of #JTEST_TEST_t structs. This struct is + * used to run the group of tests, and report on their outcomes. + */ +typedef struct JTEST_GROUP_struct +{ + void (* group_fn_ptr) (void); /**< Pointer to the test group */ + char * name_str; /**< Name of the group */ + + /* Extend the #JTEST_GROUP_t with Pass/Fail information.*/ + JTEST_PF_MEMBERS; +} JTEST_GROUP_t; + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Set the name of JTEST_GROUP_t. + */ +#define JTEST_GROUP_SET_NAME(group_ptr, name) \ + JTEST_SET_STRUCT_ATTRIBUTE(group_ptr, name_str, name) + +#define JTEST_GROUP_SET_FN(group_ptr, fn_ptr) \ + JTEST_SET_STRUCT_ATTRIBUTE(group_ptr, group_fn_ptr, fn_ptr) + +/** + * Increment the number of tests passed in the JTEST_GROUP_t pointed to by + * group_ptr. + */ +#define JTEST_GROUP_INC_PASSED(group_ptr, amount) \ + JTEST_PF_INC_PASSED(group_ptr, amount) + +/** + * Increment the number of tests failed in the JTEST_GROUP_t pointed to by + * group_ptr. + */ +#define JTEST_GROUP_INC_FAILED(group_ptr, amount) \ + JTEST_PF_INC_FAILED(group_ptr, amount) + +/** + * Reset the pass/fail information of the #JTEST_GROUP_t pointed to by + * group_ptr. + */ +#define JTEST_GROUP_RESET_PF(group_ptr) \ + do \ + { \ + JTEST_PF_RESET_PASSED(group_ptr); \ + JTEST_PF_RESET_FAILED(group_ptr); \ + } while (0) + +#endif /* _JTEST_GROUP_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group_call.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group_call.h new file mode 100644 index 0000000..d565a4c --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group_call.h @@ -0,0 +1,126 @@ +#ifndef _JTEST_GROUP_CALL_H_ +#define _JTEST_GROUP_CALL_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "jtest_fw.h" +#include + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Execute the test in the #JTEST_GROUP_t struct associated witht he identifier + * group_fn. + */ +#define JTEST_GROUP_RUN(group_fn) \ + do \ + { \ + JTEST_DUMP_STR("Group Name:\n"); \ + JTEST_DUMP_STR(JTEST_GROUP_STRUCT_NAME(group_fn).name_str); \ + JTEST_GROUP_STRUCT_NAME(group_fn).group_fn_ptr(); \ + } while (0) + + +/** + * Update the enclosing #JTEST_GROUP_t's pass/fail information using the + * current #JTEST_GROUP_t's. + * + * @param group_ptr Pointer to the current #JTEST_GROUP_t. + * @param parent_ptr Pointer to the enclosing #JTEST_GROUP_t. + * + * @warning Only run this if the current #JTEST_GROUP_t is being called within + * the context of another #JTEST_GROUP_t. + */ +#define JTEST_GROUP_UPDATE_PARENT_GROUP_PF(group_ptr, parent_group_ptr) \ + do \ + { \ + JTEST_GROUP_INC_PASSED(parent_group_ptr, \ + (group_ptr)->passed); \ + JTEST_GROUP_INC_FAILED(parent_group_ptr, \ + (group_ptr)->failed); \ + } while (0) + +/** + * Update the #JTEST_FW's pass/fail information using the current + * #JTEST_GROUP_t's. + */ +#define JTEST_GROUP_UPDATE_FW_PF(group_ptr) \ + do \ + { \ + JTEST_FW_INC_PASSED((group_ptr)->passed); \ + JTEST_FW_INC_FAILED((group_ptr)->failed); \ + } while (0) + +/** + * Update the enclosing context with the current #JTEST_GROUP_t's pass/fail + * information. If this group isn't in an enclosing group, it updates the + * #JTEST_FW's pass/fail info by default. + */ +#define JTEST_GROUP_UPDATE_PARENT_GROUP_OR_FW_PF(group_ptr, \ + parent_group_ptr) \ + do \ + { \ + /* Update the pass fail counts in the parent group */ \ + if (parent_group_ptr /* Null implies Top*/) \ + { \ + JTEST_GROUP_UPDATE_PARENT_GROUP_PF( \ + group_ptr, \ + parent_group_ptr); \ + } else { \ + JTEST_GROUP_UPDATE_FW_PF( \ + group_ptr); \ + } \ + } while (0) + +/** + * Dump the results of running the #JTEST_GROUP_t to the Keil Debugger. + */ +#define JTEST_GROUP_DUMP_RESULTS(group_ptr) \ + do \ + { \ + JTEST_DUMP_STRF( \ + "Tests Run: %" PRIu32 "\n" \ + "----------\n" \ + " Passed: %" PRIu32 "\n" \ + " Failed: %" PRIu32 "\n", \ + (group_ptr)->passed + (group_ptr)->failed, \ + (group_ptr)->passed, \ + (group_ptr)->failed); \ + } while (0) + +/** + * Call the #JTEST_GROUP_t associated with the identifier group_fn. + */ +#define JTEST_GROUP_CALL(group_fn) \ + do \ + { /* Save the current group from JTEST_FW_t before swapping */ \ + /* it to this group (in order to restore it later )*/ \ + JTEST_GROUP_t * __jtest_temp_group_ptr = \ + JTEST_CURRENT_GROUP_PTR(); \ + JTEST_SET_CURRENT_GROUP(&JTEST_GROUP_STRUCT_NAME(group_fn)); \ + \ + /* Reset this group's pass/fail count. Each group */ \ + /* should only remember counts for its last execution. */ \ + JTEST_GROUP_RESET_PF(JTEST_CURRENT_GROUP_PTR()); \ + \ + /* Run the current group */ \ + JTEST_ACT_GROUP_START(); \ + JTEST_GROUP_RUN(group_fn); \ + JTEST_ACT_GROUP_END(); \ + \ + /* Update the pass fail counts in the parent group (or FW) */ \ + JTEST_GROUP_UPDATE_PARENT_GROUP_OR_FW_PF( \ + JTEST_CURRENT_GROUP_PTR(), \ + __jtest_temp_group_ptr); \ + \ + JTEST_GROUP_DUMP_RESULTS(JTEST_CURRENT_GROUP_PTR()); \ + \ + /* Restore the previously current group */ \ + JTEST_SET_CURRENT_GROUP(__jtest_temp_group_ptr); \ + } while (0) + +#endif /* _JTEST_GROUP_CALL_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group_define.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group_define.h new file mode 100644 index 0000000..b3a86c0 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_group_define.h @@ -0,0 +1,87 @@ +#ifndef _JTEST_GROUP_DEFINE_H_ +#define _JTEST_GROUP_DEFINE_H_ + + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "jtest_util.h" +#include "jtest_define.h" +#include "jtest_group.h" + +/* For defining macros with optional arguments */ +#include "opt_arg/opt_arg.h" + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Prefix for all #JTEST_GROUP_t structs. + */ +#define JTEST_GROUP_STRUCT_NAME_PREFIX G_JTEST_GROUP_STRUCT_ + +/** + * Define test template used by #JTEST_GROUP_t tests. + */ +#define JTEST_GROUP_FN_TEMPLATE(group_fn) \ + void group_fn(void) + +#define JTEST_GROUP_FN_PROTOTYPE JTEST_GROUP_FN_TEMPLATE /**< Alias for + #JTEST_GROUP_FN_TEMPLATE. */ + +/** + * Evaluate to the name of the #JTEST_GROUP_t struct associated with group_fn. + */ +#define JTEST_GROUP_STRUCT_NAME(group_fn) \ + JTEST_STRUCT_NAME(JTEST_GROUP_STRUCT_NAME_PREFIX, group_fn) + +/** + * Define a #JTEST_GROUP_t struct based on the given group_fn. + */ +#define JTEST_GROUP_DEFINE_STRUCT(group_fn) \ + JTEST_DEFINE_STRUCT(JTEST_GROUP_t, \ + JTEST_GROUP_STRUCT_NAME(group_fn)) + +/** + * Declare a #JTEST_GROUP_t struct based on the given group_fn. + */ +#define JTEST_GROUP_DECLARE_STRUCT(group_fn) \ + JTEST_DECLARE_STRUCT(JTEST_GROUP_DEFINE_STRUCT(group_fn)) + +/** + * Contents needed to initialize a JTEST_GROUP_t struct. + */ +#define JTEST_GROUP_STRUCT_INIT(group_fn) \ + group_fn, \ + STR_NL(group_fn), \ + JTEST_PF_MEMBER_INIT + +/** + * Initialize the contents of a #JTEST_GROUP_t struct. + */ +#define JTEST_GROUP_INIT(group_fn) \ + JTEST_GROUP_DEFINE_STRUCT(group_fn) = { \ + JTEST_GROUP_STRUCT_INIT(group_fn) \ + } + +/* Test Definition Macro */ +/*--------------------------------------------------------------------------------*/ + +/** + * Define a #JTEST_GROUP_t object and a test function. + */ +#define JTEST_DEFINE_GROUP(group_fn) \ + JTEST_GROUP_FN_PROTOTYPE(group_fn); \ + JTEST_GROUP_INIT(group_fn); \ + JTEST_GROUP_FN_PROTOTYPE(group_fn) /* Notice the lacking semicolon */ + +/** + * Declare a #JTEST_GROUP_t object and a test function prototype. + */ +#define JTEST_DECLARE_GROUP(group_fn) \ + JTEST_GROUP_FN_PROTOTYPE(group_fn); \ + JTEST_GROUP_DECLARE_STRUCT(group_fn) /* Note the lacking semicolon */ + +#endif /* _JTEST_GROUP_DEFINE_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_pf.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_pf.h new file mode 100644 index 0000000..2b005b6 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_pf.h @@ -0,0 +1,85 @@ +#ifndef _JTEST_PF_H_ +#define _JTEST_PF_H_ + +/*--------------------------------------------------------------------------------*/ +/* Purpose */ +/*--------------------------------------------------------------------------------*/ +/* jtest_pf.h Contains macros useful for capturing pass/fail data. */ + + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Members that can be added to other structs to extend them pass/fail data and + * corresponding functionality. + */ +#define JTEST_PF_MEMBERS \ + uint32_t passed; \ + uint32_t failed /* Note the lacking semicolon*/ \ + +/** + * Used for initializing JTEST_PF_MEMBERS in a struct declaration. + */ +#define JTEST_PF_MEMBER_INIT \ + 0, \ + 0 + +/* Member-Incrementing Macros */ +/*--------------------------------------------------------------------------------*/ + +/** + * Dispatch macro for incrementing #JTEST_PF_MEMBERS. + * + * @param xxx Values: 'passed', 'failed' + */ +#define JTEST_PF_INC_XXX(xxx, struct_pf_ptr, amount) \ + do \ + { \ + ((struct_pf_ptr)->xxx) += (amount); \ + } while (0) + +/** + * Specialization of the #JTEST_PF_INC_XXX macro to increment the passed + * member. + */ +#define JTEST_PF_INC_PASSED(struct_pf_ptr, amount) \ + JTEST_PF_INC_XXX(passed, struct_pf_ptr, amount) + + +/** + * Specialization of the #JTEST_PF_INC_XXX macro to increment the failed + * member. + */ +#define JTEST_PF_INC_FAILED(struct_pf_ptr, amount) \ + JTEST_PF_INC_XXX(failed, struct_pf_ptr, amount) + + +/* Member-Resetting Macros */ +/*--------------------------------------------------------------------------------*/ + +/** + * Dispatch macro for setting #JTEST_PF_MEMBERS to zero. + * + * @param xxx Values: 'passed', 'failed' + */ +#define JTEST_PF_RESET_XXX(xxx, struct_pf_ptr) \ + do \ + { \ + ((struct_pf_ptr)->xxx) = UINT32_C(0); \ + } while (0) + +/** + * Specialization of #JTEST_PF_RESET_XXX for the 'passed' member. + */ +#define JTEST_PF_RESET_PASSED(struct_pf_ptr) \ + JTEST_PF_RESET_XXX(passed, struct_pf_ptr) + +/** + * Specialization of #JTEST_PF_RESET_XXX for the 'failed' member. + */ +#define JTEST_PF_RESET_FAILED(struct_pf_ptr) \ + JTEST_PF_RESET_XXX(failed, struct_pf_ptr) + +#endif /* _JTEST_PF_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_systick.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_systick.h new file mode 100644 index 0000000..339ecf2 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_systick.h @@ -0,0 +1,93 @@ +#ifndef _JTEST_SYSTICK_H_ +#define _JTEST_SYSTICK_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +/* Get access to the SysTick structure. */ +#if defined ARMCM0 + #include "ARMCM0.h" +#elif defined ARMCM0P + #include "ARMCM0plus.h" +#elif defined ARMCM3 + #include "ARMCM3.h" +#elif defined ARMCM4 + #include "ARMCM4.h" +#elif defined ARMCM4_FP + #include "ARMCM4_FP.h" +#elif defined ARMCM7 + #include "ARMCM7.h" +#elif defined ARMCM7_SP + #include "ARMCM7_SP.h" +#elif defined ARMCM7_DP + #include "ARMCM7_DP.h" +#elif defined ARMSC000 + #include "ARMSC000.h" +#elif defined ARMSC300 + #include "ARMSC300.h" +#elif defined ARMv8MBL + #include "ARMv8MBL.h" +#elif defined ARMv8MML + #include "ARMv8MML.h" +#elif defined ARMv8MML_DSP + #include "ARMv8MML_DSP.h" +#elif defined ARMv8MML_SP + #include "ARMv8MML_SP.h" +#elif defined ARMv8MML_DSP_SP + #include "ARMv8MML_DSP_SP.h" +#elif defined ARMv8MML_DP + #include "ARMv8MML_DP.h" +#elif defined ARMv8MML_DSP_DP + #include "ARMv8MML_DSP_DP.h" + +#else + #warning "no appropriate header file found!" +#endif + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Initial value for the SysTick module. + * + * @note This is also the maximum value, important as SysTick is a decrementing + * counter. + */ +#define JTEST_SYSTICK_INITIAL_VALUE 0xFFFFFF + +/** + * Reset the SysTick, decrementing timer to it's maximum value and disable it. + * + * This macro should leave the SysTick timer in a state that's ready for cycle + * counting. + */ +#define JTEST_SYSTICK_RESET(systick_ptr) \ + do \ + { \ + (systick_ptr)->LOAD = JTEST_SYSTICK_INITIAL_VALUE; \ + (systick_ptr)->VAL = 1; \ + \ + /* Disable the SysTick module. */ \ + (systick_ptr)->CTRL = UINT32_C(0x000000); \ + } while (0) + +/** + * Start the SysTick timer, sourced by the processor clock. + */ +#define JTEST_SYSTICK_START(systick_ptr) \ + do \ + { \ + (systick_ptr)->CTRL = \ + SysTick_CTRL_ENABLE_Msk | \ + SysTick_CTRL_CLKSOURCE_Msk; /* Internal clk*/ \ + } while (0) + +/** + * Evaluate to the current value of the SysTick timer. + */ +#define JTEST_SYSTICK_VALUE(systick_ptr) \ + ((systick_ptr)->VAL) + +#endif /* _JTEST_SYSTICK_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test.h new file mode 100644 index 0000000..023145f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test.h @@ -0,0 +1,100 @@ +#ifndef _JTEST_TEST_H_ +#define _JTEST_TEST_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include +#include "jtest_util.h" +#include "jtest_test_ret.h" + +/*--------------------------------------------------------------------------------*/ +/* Type Definitions */ +/*--------------------------------------------------------------------------------*/ + +/** + * A struct which represents a Test in the JTEST framework. This struct is + * used to enable, run, and describe the test it represents. + */ +typedef struct JTEST_TEST_struct +{ + JTEST_TEST_RET_t ( * test_fn_ptr)(void); /**< Pointer to the test function. */ + char * test_fn_str; /**< Name of the test function */ + char * fut_str; /**< Name of the function under test. */ + + /** + * Flags that govern how the #JTEST_TEST_t behaves. + */ + union { + struct { + unsigned enabled : 1; + unsigned unused : 7; + } bits; + uint8_t byte; /* Access all flags at once. */ + } flags; + +} JTEST_TEST_t; + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Assign a test function to the #JTEST_TEST_t struct. + */ +#define JTEST_TEST_SET_FN(jtest_test_ptr, fn_ptr) \ + JTEST_SET_STRUCT_ATTRIBUTE(jtest_test_ptr, test_fn_ptr, fn_ptr) + +/** + * Specify a function under test (FUT) for the #JTEST_TEST_t struct. + */ +#define JTEST_TEST_SET_FUT(jtest_test_ptr, str) \ + JTEST_SET_STRUCT_ATTRIBUTE(jtest_test_ptr, fut_str, str) + +/* Macros concerning JTEST_TEST_t flags */ +/*--------------------------------------------------------------------------------*/ + +#define JTEST_TEST_FLAG_SET 1 /**< Value of a set #JTEST_TEST_t flag. */ +#define JTEST_TEST_FLAG_CLR 0 /**< Value of a cleared #JTEST_TEST_t flag. */ + +/** + * Evaluate to the flag in #JTEST_TEST_t having flag_name. + */ +#define JTEST_TEST_FLAG(jtest_test_ptr, flag_name) \ + ((jtest_test_ptr)->flags.bits.flag_name) + +/** + * Dispatch macro for setting and clearing #JTEST_TEST_t flags. + * + * @param jtest_test_ptr Pointer to a #JTEST_TEST_t struct. + * @param flag_name Name of the flag to set in #JTEST_TEST_t.flags.bits + * @param xxx Vaid values: "SET" or "CLR" + * + * @note This function depends on JTEST_TEST_FLAG_SET and JTEST_TEST_FLAG_CLR. + */ +#define JTEST_TEST_XXX_FLAG(jtest_test_ptr, flag_name, xxx) \ + do \ + { \ + JTEST_TEST_FLAG(jtest_test_ptr, flag_name) = JTEST_TEST_FLAG_##xxx ; \ + } while (0) + +/** + * Specification of #JTEST_TEST_XXX_FLAG to set #JTEST_TEST_t flags. + */ +#define JTEST_TEST_SET_FLAG(jtest_test_ptr, flag_name) \ + JTEST_TEST_XXX_FLAG(jtest_test_ptr, flag_name, SET) + +/** + * Specification of #JTEST_TEST_XXX_FLAG to clear #JTEST_TEST_t flags. + */ +#define JTEST_TEST_CLR_FLAG(jtest_test_ptr, flag_name) \ + JTEST_TEST_XXX_FLAG(jtest_test_ptr, flag_name, CLR) + +/** + * Evaluate to true if the #JTEST_TEST_t is enabled. + */ +#define JTEST_TEST_IS_ENABLED(jtest_test_ptr) \ + (JTEST_TEST_FLAG(jtest_test_ptr, enabled) == JTEST_TEST_FLAG_SET) + +#endif /* _JTEST_TEST_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_call.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_call.h new file mode 100644 index 0000000..9325185 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_call.h @@ -0,0 +1,121 @@ +#ifndef _JTEST_TEST_CALL_H_ +#define _JTEST_TEST_CALL_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ +#include "jtest_test.h" +#include "jtest_test_define.h" +#include "jtest_fw.h" + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Exectute the test in the #JTEST_TEST_t struct associated with the identifier + * test_fn and store the result in retval. + */ +#define JTEST_TEST_RUN(retval, test_fn) \ + do \ + { \ + JTEST_DUMP_STR("Test Name:\n"); \ + JTEST_DUMP_STR(JTEST_TEST_STRUCT_NAME(test_fn).test_fn_str); \ + JTEST_DUMP_STR("Function Under Test:\n"); \ + JTEST_DUMP_STR(JTEST_TEST_STRUCT_NAME(test_fn).fut_str); \ + retval = JTEST_TEST_STRUCT_NAME(test_fn).test_fn_ptr(); \ + } while (0) + +/** + * Update the enclosing #JTEST_GROUP_t's pass/fail information based on + * test_retval. + * + * @param test_retval A #JTEST_TEST_RET_enum for the current test. + * + * @warning Only use if #JTEST_TEST_t is called in the context of a + * #JTEST_GROUP_t. + */ +#define JTEST_TEST_UPDATE_PARENT_GROUP_PF(test_retval) \ + do \ + { \ + /* Update enclosing JTEST_GROUP_t with pass/fail info */ \ + if (test_retval == JTEST_TEST_PASSED) \ + { \ + JTEST_GROUP_INC_PASSED(JTEST_CURRENT_GROUP_PTR(), 1); \ + } else { \ + JTEST_GROUP_INC_FAILED(JTEST_CURRENT_GROUP_PTR(), 1); \ + } \ + } while (0) + +/** + * Update the #JTEST_FW with pass/fail information based on test_retval. + * + * @param test_retval A #JTEST_TEST_RET_enum for the current test. + */ +#define JTEST_TEST_UPDATE_FW_PF(test_retval) \ + do \ + { \ + /* Update the JTEST_FW with pass/fail info */ \ + if (test_retval == JTEST_TEST_PASSED) \ + { \ + JTEST_FW_INC_PASSED( 1); \ + } else { \ + JTEST_FW_INC_FAILED(1); \ + } \ + } while (0) + +/** + * Update the enclosing JTEST_GROUP_t's pass/fail information, or the + * #JTEST_FW's if this test has no enclosing #JTEST_GROUP_t. + * + * @param test_retval A #JTEST_TEST_RET_enum for the current test. + */ +#define JTEST_TEST_UPDATE_PARENT_GROUP_OR_FW_PF(test_retval) \ + do \ + { \ + /* Update pass-fail information */ \ + if (JTEST_CURRENT_GROUP_PTR() /* Non-null */) \ + { \ + JTEST_TEST_UPDATE_PARENT_GROUP_PF(test_retval); \ + } else { \ + JTEST_TEST_UPDATE_FW_PF(test_retval); \ + } \ + } while (0) + +/** + * Dump the results of the test to the Keil Debugger. + */ +#define JTEST_TEST_DUMP_RESULTS(test_retval) \ + do \ + { \ + if (test_retval == JTEST_TEST_PASSED) \ + { \ + JTEST_DUMP_STR("Test Passed\n"); \ + } else { \ + JTEST_DUMP_STR("Test Failed\n"); \ + } \ + } while (0) + +/** + * Call the #JTEST_TEST_t assocaited with the identifier test_fn. + */ +#define JTEST_TEST_CALL(test_fn) \ + do \ + { \ + if (JTEST_TEST_IS_ENABLED(&JTEST_TEST_STRUCT_NAME(test_fn))) \ + { \ + /* Default to failure */ \ + JTEST_TEST_RET_t __jtest_test_ret = JTEST_TEST_FAILED; \ + \ + JTEST_ACT_TEST_START(); \ + JTEST_TEST_RUN(__jtest_test_ret, test_fn); \ + \ + /* Update pass-fail information */ \ + JTEST_TEST_UPDATE_PARENT_GROUP_OR_FW_PF(__jtest_test_ret); \ + \ + JTEST_TEST_DUMP_RESULTS(__jtest_test_ret); \ + JTEST_ACT_TEST_END(); \ + } \ + } while (0) + +#endif /* _JTEST_TEST_CALL_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_define.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_define.h new file mode 100644 index 0000000..1447dd0 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_define.h @@ -0,0 +1,133 @@ +#ifndef _JTEST_TEST_DEFINE_H_ +#define _JTEST_TEST_DEFINE_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "jtest_util.h" +#include "jtest_define.h" +#include "jtest_test.h" + +/* For defining macros with optional arguments */ +#include "opt_arg/opt_arg.h" + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Prefix for all #JTEST_TEST_t structs. + */ +#define JTEST_TEST_STRUCT_NAME_PREFIX G_JTEST_TEST_STRUCT_ + +/** + * Define test template used by #JTEST_TEST_t tests. + */ +#define JTEST_TEST_FN_TEMPLATE(test_fn) \ + JTEST_TEST_RET_t test_fn(void) + +#define JTEST_TEST_FN_PROTOTYPE JTEST_TEST_FN_TEMPLATE /**< Alias for + * #JTEST_TEST_FN_TEMPLATE. */ + +/** + * Evaluate to the name of the #JTEST_TEST_t struct associated with test_fn. + */ +#define JTEST_TEST_STRUCT_NAME(test_fn) \ + JTEST_STRUCT_NAME(JTEST_TEST_STRUCT_NAME_PREFIX, test_fn) + +/** + * Define a #JTEST_TEST_t struct based on the given test_fn. + */ +#define JTEST_TEST_DEFINE_STRUCT(test_fn) \ + JTEST_DEFINE_STRUCT(JTEST_TEST_t, \ + JTEST_TEST_STRUCT_NAME(test_fn)) + +/** + * Declare a #JTEST_TEST_t struct based on the given test_fn. + */ +#define JTEST_TEST_DECLARE_STRUCT(test_fn) \ + JTEST_DECLARE_STRUCT(JTEST_TEST_DEFINE_STRUCT(test_fn)) + +/** + * Contents needed to initialize a JTEST_TEST_t struct. + */ +#define JTEST_TEST_STRUCT_INIT(test_fn, fut, enable) \ + test_fn, \ + STR_NL(test_fn), \ + STR_NL(fut), \ + { \ + { \ + enable, \ + 0 \ + } \ + } \ + + +/** + * Initialize the contents of a #JTEST_TEST_t struct. + */ +#define JTEST_TEST_INIT(test_fn, fut, enable) \ + JTEST_TEST_DEFINE_STRUCT(test_fn) = { \ + JTEST_TEST_STRUCT_INIT(test_fn, fut, enable) \ + } + +/* Test Definition Macro */ +/*--------------------------------------------------------------------------------*/ + +/** + * Define a #JTEST_TEST_t object and a test function. + */ +#define _JTEST_DEFINE_TEST(test_fn, fut, enable) \ + JTEST_TEST_FN_PROTOTYPE(test_fn); \ + JTEST_TEST_INIT(test_fn, fut, enable); \ + JTEST_TEST_FN_PROTOTYPE(test_fn) /* Notice the lacking semicolon */ + +/** + * Declare a #JTEST_TEST_t object and a test function prototype. + */ +#define JTEST_DECLARE_TEST(test_fn) \ + JTEST_TEST_FN_PROTOTYPE(test_fn); \ + JTEST_TEST_DECLARE_STRUCT(test_fn) /* Note the lacking semicolon */ + +/*--------------------------------------------------------------------------------*/ +/* Macros with optional arguments */ +/*--------------------------------------------------------------------------------*/ + +/* Top-level Interface */ +#define JTEST_DEFINE_TEST(...) \ + JTEST_DEFINE_TEST_(PP_NARG(__VA_ARGS__), ##__VA_ARGS__) + +/* Dispatch Macro*/ +#define JTEST_DEFINE_TEST_(N, ...) \ + SPLICE(JTEST_DEFINE_TEST_, N)(__VA_ARGS__) + +/* Default Arguments */ +#define JTEST_DEFINE_TEST_DEFAULT_FUT /* Blank */ +#define JTEST_DEFINE_TEST_DEFAULT_ENABLE \ + JTEST_TRUE /* Tests enabled by + * default. */ + +/* Dispatch Cases*/ +#define JTEST_DEFINE_TEST_1(_1) \ + _JTEST_DEFINE_TEST( \ + _1, \ + JTEST_DEFINE_TEST_DEFAULT_FUT, \ + JTEST_DEFINE_TEST_DEFAULT_ENABLE \ + ) + +#define JTEST_DEFINE_TEST_2(_1, _2) \ + _JTEST_DEFINE_TEST( \ + _1, \ + _2, \ + JTEST_DEFINE_TEST_DEFAULT_ENABLE \ + ) + +#define JTEST_DEFINE_TEST_3(_1, _2, _3) \ + _JTEST_DEFINE_TEST( \ + _1, \ + _2, \ + _3 \ + ) + +#endif /* _JTEST_TEST_DEFINE_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_ret.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_ret.h new file mode 100644 index 0000000..c3176e5 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_ret.h @@ -0,0 +1,17 @@ +#ifndef _JTEST_TEST_RET_H_ +#define _JTEST_TEST_RET_H_ + +/*--------------------------------------------------------------------------------*/ +/* Type Definitions */ +/*--------------------------------------------------------------------------------*/ + +/** + * Values a #JTEST_TEST_t can return. + */ +typedef enum JTEST_TEST_RET_enum +{ + JTEST_TEST_PASSED, + JTEST_TEST_FAILED +} JTEST_TEST_RET_t; + +#endif /* _JTEST_TEST_RET_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_util.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_util.h new file mode 100644 index 0000000..3e07d2e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_util.h @@ -0,0 +1,27 @@ +#ifndef _JTEST_UTIL_H_ +#define _JTEST_UTIL_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "util/util.h" + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/* Define boolean values for the framework. */ +#define JTEST_TRUE 1 /**< Value used for TRUE in JTEST. */ +#define JTEST_FALSE 0 /**< Value used for FALSE in JTEST. */ + +/** + * Set the value of the attribute in the struct to by struct_ptr to value. + */ +#define JTEST_SET_STRUCT_ATTRIBUTE(struct_ptr, attribute, value) \ + do \ + { \ + (struct_ptr)->attribute = (value); \ + } while (0) + +#endif /* _JTEST_UTIL_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/opt_arg.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/opt_arg.h new file mode 100644 index 0000000..683be1d --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/opt_arg.h @@ -0,0 +1,15 @@ +#ifndef _OPT_ARG_H_ +#define _OPT_ARG_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "pp_narg.h" +#include "splice.h" + +/* If you are Joseph Jaoudi, you have a snippet which expands into an + example. If you are not Joseph, but possess his code, study the examples. If + you have no examples, turn back contact Joseph. */ + +#endif /* _OPT_ARG_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/pp_narg.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/pp_narg.h new file mode 100644 index 0000000..d3248f4 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/pp_narg.h @@ -0,0 +1,25 @@ +#ifndef _PP_NARG_H_ +#define _PP_NARG_H_ + +#define PP_NARG(...) \ + PP_NARG_(__VA_ARGS__,PP_RSEQ_N()) +#define PP_NARG_(...) \ + PP_ARG_N(__VA_ARGS__) +#define PP_ARG_N( \ + _1, _2, _3, _4, _5, _6, _7, _8, _9,_10, \ + _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \ + _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \ + _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \ + _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \ + _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \ + _61,_62,_63,N,...) N +#define PP_RSEQ_N() \ + 63,62,61,60, \ + 59,58,57,56,55,54,53,52,51,50, \ + 49,48,47,46,45,44,43,42,41,40, \ + 39,38,37,36,35,34,33,32,31,30, \ + 29,28,27,26,25,24,23,22,21,20, \ + 19,18,17,16,15,14,13,12,11,10, \ + 9,8,7,6,5,4,3,2,1,0 + +#endif /* _PP_NARG_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/splice.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/splice.h new file mode 100644 index 0000000..ec9142b --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/opt_arg/splice.h @@ -0,0 +1,8 @@ +#ifndef _SPLICE_H_ +#define _SPLICE_H_ + +#define SPLICE(a,b) SPLICE_1(a,b) +#define SPLICE_1(a,b) SPLICE_2(a,b) +#define SPLICE_2(a,b) a##b + +#endif /* _SPLICE_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/util/util.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/util/util.h new file mode 100644 index 0000000..f56e0e6 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/util/util.h @@ -0,0 +1,52 @@ +#ifndef _UTIL_H_ +#define _UTIL_H_ + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Convert a symbol to a string and add a 'NewLine'. + */ +#define STR_NL(x) STR1_NL(x) +#define STR1_NL(x) (STR2_NL(x)"\n") +#define STR2_NL(x) #x + +/** + * Convert a symbol to a string. + */ +#define STR(x) STR1(x) +#define STR1(x) STR2(x) +#define STR2(x) #x + +/** + * Concatenate two symbols. + */ +#define CONCAT(a, b) CONCAT1(a, b) +#define CONCAT1(a, b) CONCAT2(a, b) +#define CONCAT2(a, b) a##b + + +/** + * Place curly braces around a varaible number of macro arguments. + */ +#define CURLY(...) {__VA_ARGS__} + +/** + * Place parenthesis around a variable number of macro arguments. + */ +#define PAREN(...) (__VA_ARGS__) + +/* Standard min/max macros. */ +#define MIN(x,y) (((x) < (y)) ? (x) : (y) ) +#define MAX(x,y) (((x) > (y)) ? (x) : (y) ) + +/** + * Bound value using low and high limits. + * + * Evaluate to a number in the range, endpoint inclusive. + */ +#define BOUND(low, high, value) \ + MAX(MIN(high, value), low) + +#endif /* _UTIL_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_cycle.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_cycle.c new file mode 100644 index 0000000..24d552d --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_cycle.c @@ -0,0 +1,9 @@ +#include "../inc/jtest_cycle.h" +#include + +/*--------------------------------------------------------------------------------*/ +/* Define Module Variables */ +/*--------------------------------------------------------------------------------*/ + +/* const char * JTEST_CYCLE_STRF = "Running: %s\nCycles: %" PRIu32 "\n"; */ +const char * JTEST_CYCLE_STRF = "Cycles: %" PRIu32 "\n"; /* function name + parameter string skipped */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_dump_str_segments.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_dump_str_segments.c new file mode 100644 index 0000000..c3a9bf8 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_dump_str_segments.c @@ -0,0 +1,36 @@ +#include "jtest_fw.h" + +/** + * Dump the JTEST_FW.str_buffer the Keil framework in pieces. + * + * The JTEST_FW.str_buffer contains more characters than the Keil framework can + * dump at once. This function dumps them in blocks. + */ +void jtest_dump_str_segments(void) +{ + uint32_t seg_idx = 0; + uint32_t memmove_idx = 0; + uint32_t seg_cnt = + (strlen(JTEST_FW.str_buffer) / JTEST_STR_MAX_OUTPUT_SIZE) + 1; + + for( seg_idx = 0; seg_idx < seg_cnt; ++seg_idx) + { + JTEST_TRIGGER_ACTION(dump_str); + + if (seg_idx < JTEST_STR_MAX_OUTPUT_SEGMENTS) + { + memmove_idx = 0; + while (memmove_idx < (seg_cnt - seg_idx -1) ) + { + memmove( + JTEST_FW.str_buffer+ + (memmove_idx* JTEST_STR_MAX_OUTPUT_SIZE), + JTEST_FW.str_buffer+ + ((memmove_idx+1)*JTEST_STR_MAX_OUTPUT_SIZE), + JTEST_BUF_SIZE); + ++memmove_idx; + } + } + } + return; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_fw.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_fw.c new file mode 100644 index 0000000..69d7a63 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_fw.c @@ -0,0 +1,9 @@ +#include "../inc/jtest.h" + +/*--------------------------------------------------------------------------------*/ +/* Define Global Variables */ +/*--------------------------------------------------------------------------------*/ + +char JTEST_FW_STR_BUFFER[JTEST_BUF_SIZE] = {0}; + +volatile JTEST_FW_t JTEST_FW = {0}; diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_trigger_action.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_trigger_action.c new file mode 100644 index 0000000..a3901da --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/src/jtest_trigger_action.c @@ -0,0 +1,37 @@ + +#include "jtest_fw.h" + +void test_start (void) { +// ; + JTEST_FW.test_start++; +} + +void test_end (void) { +// ; + JTEST_FW.test_end++; +} + +void group_start (void) { +// ; + JTEST_FW.group_start++; +} + +void group_end (void) { +// ; + JTEST_FW.group_end++; +} + +void dump_str (void) { +// ; + JTEST_FW.dump_str++; +} + +void dump_data (void) { +// ; + JTEST_FW.dump_data++; +} + +void exit_fw (void) { +// ; + JTEST_FW.exit_fw++; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/all_tests.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/all_tests.h new file mode 100644 index 0000000..df1e998 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/all_tests.h @@ -0,0 +1,9 @@ +#ifndef _ALL_TESTS_H_ +#define _ALL_TESTS_H_ + +/*--------------------------------------------------------------------------------*/ +/* Declare Test Groups */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(all_tests); + +#endif /* _ALL_TESTS_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_templates.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_templates.h new file mode 100644 index 0000000..958ef78 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_templates.h @@ -0,0 +1,267 @@ +#ifndef _BASIC_MATH_TEMPLATES_H_ +#define _BASIC_MATH_TEMPLATES_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ +#include "test_templates.h" + +/*--------------------------------------------------------------------------------*/ +/* Group Specific Templates */ +/*--------------------------------------------------------------------------------*/ + +/** + * Compare the outputs used by basic math tests for the function under test and + * the reference function. + */ +#define BASIC_MATH_COMPARE_INTERFACE(block_size, output_type) \ + TEST_ASSERT_BUFFERS_EQUAL( \ + basic_math_output_ref.data_ptr, \ + basic_math_output_fut.data_ptr, \ + block_size * sizeof(output_type)) + +/* + * Comparison SNR thresholds for the data types used in basic_math_tests. + */ +#define BASIC_MATH_SNR_THRESHOLD_float32_t 120 +#define BASIC_MATH_SNR_THRESHOLD_q31_t 100 +#define BASIC_MATH_SNR_THRESHOLD_q15_t 75 +#define BASIC_MATH_SNR_THRESHOLD_q7_t 25 + +/** + * Compare reference and fut outputs using SNR. + * + * @note The outputs are converted to float32_t before comparison. + */ +#define BASIC_MATH_SNR_COMPARE_INTERFACE(block_size, output_type) \ + do \ + { \ + TEST_CONVERT_AND_ASSERT_SNR( \ + basic_math_output_f32_ref, \ + basic_math_output_ref.data_ptr, \ + basic_math_output_f32_fut, \ + basic_math_output_fut.data_ptr, \ + block_size, \ + output_type, \ + BASIC_MATH_SNR_THRESHOLD_##output_type \ + ); \ + } while (0) + + +/** + * Compare reference and fut outputs using SNR. + * + * @note The outputs are converted to float32_t before comparison. + */ +#define BASIC_MATH_SNR_ELT1_COMPARE_INTERFACE(block_size, output_type) \ + do \ + { \ + TEST_CONVERT_AND_ASSERT_SNR( \ + basic_math_output_f32_ref, \ + basic_math_output_ref.data_ptr, \ + basic_math_output_f32_fut, \ + basic_math_output_fut.data_ptr, \ + 1, \ + output_type, \ + BASIC_MATH_SNR_THRESHOLD_##output_type \ + ); \ + } while (0) + + + +/*--------------------------------------------------------------------------------*/ +/* Input Interfaces */ +/*--------------------------------------------------------------------------------*/ +/* + * General: + * Input interfaces provide inputs to functions inside test templates. They + * ONLY provide the inputs. The output variables should be hard coded. + * + * The input interfaces must have the following format: + * + * ARM_xxx_INPUT_INTERFACE() or + * REF_xxx_INPUT_INTERFACE() + * + * The xxx must be lowercase, and is intended to be the indentifying substring + * in the function's name. Acceptable values are 'sub' or 'add' from the + * functions arm_add_q31. + */ + +#define ARM_abs_INPUT_INTERFACE(input, block_size) \ + PAREN(input, basic_math_output_fut.data_ptr, block_size) + +#define REF_abs_INPUT_INTERFACE(input, block_size) \ + PAREN(input, basic_math_output_ref.data_ptr, block_size) + +#define ARM_add_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, basic_math_output_fut.data_ptr, block_size) \ + +#define REF_add_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, basic_math_output_ref.data_ptr, block_size) \ + +#define ARM_dot_prod_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, block_size, basic_math_output_fut.data_ptr) \ + +#define REF_dot_prod_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, block_size, basic_math_output_ref.data_ptr) \ + +#define ARM_mult_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, basic_math_output_fut.data_ptr, block_size) \ + +#define REF_mult_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, basic_math_output_ref.data_ptr, block_size) \ + +#define ARM_negate_INPUT_INTERFACE(input, block_size) \ + PAREN(input, basic_math_output_fut.data_ptr, block_size) + +#define REF_negate_INPUT_INTERFACE(input, block_size) \ + PAREN(input, basic_math_output_ref.data_ptr, block_size) + +#define ARM_offset_INPUT_INTERFACE(input, elt, block_size) \ + PAREN(input, elt, basic_math_output_fut.data_ptr, block_size) \ + +#define REF_offset_INPUT_INTERFACE(input, elt, block_size) \ + PAREN(input, elt, basic_math_output_ref.data_ptr, block_size) \ + +#define ARM_shift_INPUT_INTERFACE(input, elt, block_size) \ + PAREN(input, elt, basic_math_output_fut.data_ptr, block_size) \ + +#define REF_shift_INPUT_INTERFACE(input, elt, block_size) \ + PAREN(input, elt, basic_math_output_ref.data_ptr, block_size) \ + +#define ARM_scale_float_INPUT_INTERFACE(input, elt, block_size) \ + PAREN(input, elt, basic_math_output_fut.data_ptr, block_size) \ + +#define REF_scale_float_INPUT_INTERFACE(input, elt, block_size) \ + PAREN(input, elt, basic_math_output_ref.data_ptr, block_size) \ + +/* These two are for the fixed point functions */ +#define ARM_scale_INPUT_INTERFACE(input, elt1, elt2, block_size) \ + PAREN(input, elt1, elt2, basic_math_output_fut.data_ptr, block_size) \ + +#define REF_scale_INPUT_INTERFACE(input, elt1, elt2, block_size) \ + PAREN(input, elt1, elt2, basic_math_output_ref.data_ptr, block_size) \ + +#define ARM_sub_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, basic_math_output_fut.data_ptr, block_size) \ + +#define REF_sub_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, basic_math_output_ref.data_ptr, block_size) \ + + +/*--------------------------------------------------------------------------------*/ +/* Test Templates */ +/*--------------------------------------------------------------------------------*/ + +/** + * Specialization of #TEST_TEMPLATE_BUF1_BLK() for basic math tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK(fn_name, \ + suffix, \ + input_type, \ + output_type) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + TEST_TEMPLATE_BUF1_BLK( \ + basic_math_f_all, \ + basic_math_block_sizes, \ + input_type, \ + output_type, \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + BASIC_MATH_COMPARE_INTERFACE); \ + } + +/** + * Specialization of #TEST_TEMPLATE_BUF2_BLK() for basic math tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK(fn_name, \ + suffix, \ + input_type, \ + output_type, \ + comparison_interface) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + TEST_TEMPLATE_BUF2_BLK( \ + basic_math_f_all, \ + basic_math_f_all, \ + basic_math_block_sizes, \ + input_type, \ + output_type, \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + comparison_interface); \ + } + +/** + * Specialization of #TEST_TEMPLATE_BUF1_ELT1_BLK() for basic math tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT1_BLK(fn_name, \ + suffix, \ + input_type, \ + elt_type, \ + output_type) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + TEST_TEMPLATE_BUF1_ELT1_BLK( \ + basic_math_f_all, \ + basic_math_elts, \ + basic_math_block_sizes, \ + input_type, \ + elt_type, \ + output_type, \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + BASIC_MATH_COMPARE_INTERFACE); \ + } + +/** + * Specialization of #TEST_TEMPLATE_BUF1_ELT2_BLK() for basic math tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT2_BLK(fn_name, \ + suffix, \ + input_type, \ + elt1_type, \ + elt2_type, \ + output_type) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + TEST_TEMPLATE_BUF1_ELT2_BLK( \ + basic_math_f_all, \ + basic_math_elts, \ + basic_math_elts2, \ + basic_math_block_sizes, \ + input_type, \ + elt1_type, \ + elt2_type, \ + output_type, \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + BASIC_MATH_COMPARE_INTERFACE); \ + } + +#endif /* _BASIC_MATH_TEMPLATES_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_test_data.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_test_data.h new file mode 100644 index 0000000..2f0b239 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_test_data.h @@ -0,0 +1,46 @@ +#ifndef ARM_BASIC_MATH_TEST_DATA_H +#define ARM_BASIC_MATH_TEST_DATA_H + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "arr_desc.h" +#include "arm_math.h" + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ +#define BASIC_MATH_MAX_INPUT_ELEMENTS 32 +#define BASIC_MATH_BIGGEST_INPUT_TYPE float32_t + +/*--------------------------------------------------------------------------------*/ +/* Declare Variables */ +/*--------------------------------------------------------------------------------*/ + +/* Input/Output Buffers */ +ARR_DESC_DECLARE(basic_math_output_fut); +ARR_DESC_DECLARE(basic_math_output_ref); + +extern BASIC_MATH_BIGGEST_INPUT_TYPE +basic_math_output_f32_ref[BASIC_MATH_MAX_INPUT_ELEMENTS]; + +extern BASIC_MATH_BIGGEST_INPUT_TYPE +basic_math_output_f32_fut[BASIC_MATH_MAX_INPUT_ELEMENTS]; + +/* Block Sizes*/ +ARR_DESC_DECLARE(basic_math_block_sizes); + +/* Numbers */ +ARR_DESC_DECLARE(basic_math_elts); +ARR_DESC_DECLARE(basic_math_elts2); +ARR_DESC_DECLARE(basic_math_eltsf); + +/* Float Inputs */ +ARR_DESC_DECLARE(basic_math_zeros); +ARR_DESC_DECLARE(basic_math_f_2); +ARR_DESC_DECLARE(basic_math_f_15); +ARR_DESC_DECLARE(basic_math_f_32); +ARR_DESC_DECLARE(basic_math_f_all); + +#endif diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_test_group.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_test_group.h new file mode 100644 index 0000000..ece92c7 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_test_group.h @@ -0,0 +1,9 @@ +#ifndef _BASIC_MATH_TEST_GROUP_H_ +#define _BASIC_MATH_TEST_GROUP_H_ + +/*--------------------------------------------------------------------------------*/ +/* Declare Test Groups */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(basic_math_tests); + +#endif /* _BASIC_MATH_TEST_GROUP_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_tests.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_tests.h new file mode 100644 index 0000000..0550444 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/basic_math_tests/basic_math_tests.h @@ -0,0 +1,17 @@ +#ifndef _BASIC_MATH_TESTS_H_ +#define _BASIC_MATH_TESTS_H_ + +/*--------------------------------------------------------------------------------*/ +/* Test/Group Declarations */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(abs_tests); +JTEST_DECLARE_GROUP(add_tests); +JTEST_DECLARE_GROUP(dot_prod_tests); +JTEST_DECLARE_GROUP(mult_tests); +JTEST_DECLARE_GROUP(negate_tests); +JTEST_DECLARE_GROUP(offset_tests); +JTEST_DECLARE_GROUP(scale_tests); +JTEST_DECLARE_GROUP(shift_tests); +JTEST_DECLARE_GROUP(sub_tests); + +#endif /* _BASIC_MATH_TESTS_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_templates.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_templates.h new file mode 100644 index 0000000..3b7f22f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_templates.h @@ -0,0 +1,222 @@ +#ifndef _COMPLEX_MATH_TEMPLATES_H_ +#define _COMPLEX_MATH_TEMPLATES_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ +#include "test_templates.h" + +/*--------------------------------------------------------------------------------*/ +/* Group Specific Templates */ +/*--------------------------------------------------------------------------------*/ + +/** + * Compare the real outputs from the function under test and the reference + * function. + */ +#define COMPLEX_MATH_COMPARE_RE_INTERFACE(block_size, output_type) \ + TEST_ASSERT_BUFFERS_EQUAL( \ + complex_math_output_ref_a.data_ptr, \ + complex_math_output_fut_a.data_ptr, \ + block_size * sizeof(output_type)) + +/** + * Compare the real and imaginary outputs from the function under test and the + * reference function. + */ +#define COMPLEX_MATH_COMPARE_CMPLX_INTERFACE(block_size, output_type) \ + do \ + { \ + COMPLEX_MATH_COMPARE_RE_INTERFACE(block_size * 2, output_type); \ + } while (0) + + +/* + * Comparison SNR thresholds for the data types used in complex_math_tests. + */ +#define COMPLEX_MATH_SNR_THRESHOLD_float32_t 120 +#define COMPLEX_MATH_SNR_THRESHOLD_q31_t 100 +#define COMPLEX_MATH_SNR_THRESHOLD_q15_t 75 + +/** + * Compare reference and fut outputs using SNR. + * + * The output_suffix specifies which output buffers to use for the + * comparison. An output_suffix of 'a' expands to the following buffers: + * + * - complex_math_output_f32_ref_a + * - complex_math_output_f32_fut_a + * - complex_math_output_ref_a + * - complex_math_output_fut_a + * + * @note The outputs are converted to float32_t before comparison. + */ +#define COMPLEX_MATH_SNR_COMPARE_OUT_INTERFACE(block_size, \ + output_type, \ + output_suffix) \ + do \ + { \ + TEST_CONVERT_AND_ASSERT_SNR( \ + complex_math_output_f32_ref_##output_suffix, \ + complex_math_output_ref_##output_suffix.data_ptr, \ + complex_math_output_f32_fut_##output_suffix, \ + complex_math_output_fut_##output_suffix.data_ptr, \ + block_size, \ + output_type, \ + COMPLEX_MATH_SNR_THRESHOLD_##output_type \ + ); \ + } while (0) + +/** + * Specification of #COMPLEX_MATH_SNR_COMPARE_INTERFACE() for real outputs. + */ +#define COMPLEX_MATH_SNR_COMPARE_RE_INTERFACE(block_size, \ + output_type) \ + COMPLEX_MATH_SNR_COMPARE_OUT_INTERFACE(block_size, \ + output_type, \ + a) + +/** + * Specification of #COMPLEX_MATH_SNR_COMPARE_INTERFACE() for complex outputs. + */ +#define COMPLEX_MATH_SNR_COMPARE_CMPLX_INTERFACE(block_size, \ + output_type) \ + COMPLEX_MATH_SNR_COMPARE_OUT_INTERFACE(block_size * 2, \ + output_type, \ + a) + +/** + * Compare reference and fut split outputs using SNR. + * + * 'Split' refers to two separate output buffers; one for real and one for + * complex. + */ +#define COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE(block_size, \ + output_type) \ + do \ + { \ + COMPLEX_MATH_SNR_COMPARE_OUT_INTERFACE(block_size, \ + output_type, \ + a); \ + COMPLEX_MATH_SNR_COMPARE_OUT_INTERFACE(block_size, \ + output_type, \ + b); \ + } while (0) + + +/*--------------------------------------------------------------------------------*/ +/* Input Interfaces */ +/*--------------------------------------------------------------------------------*/ +/* + * General: + * Input interfaces provide inputs to functions inside test templates. They + * ONLY provide the inputs. The output variables should be hard coded. + * + * The input interfaces must have the following format: + * + * ARM_xxx_INPUT_INTERFACE() or + * REF_xxx_INPUT_INTERFACE() + * + * The xxx must be lowercase, and is intended to be the indentifying substring + * in the function's name. Acceptable values are 'sub' or 'add' from the + * functions arm_add_q31. + */ + +#define ARM_cmplx_conj_INPUT_INTERFACE(input, block_size) \ + PAREN(input, complex_math_output_fut_a.data_ptr, block_size) + +#define REF_cmplx_conj_INPUT_INTERFACE(input, block_size) \ + PAREN(input, complex_math_output_ref_a.data_ptr, block_size) + +#define ARM_cmplx_dot_prod_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, block_size, \ + complex_math_output_fut_a.data_ptr, \ + complex_math_output_fut_b.data_ptr) + +#define REF_cmplx_dot_prod_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, block_size, \ + complex_math_output_ref_a.data_ptr, \ + complex_math_output_ref_b.data_ptr) + +#define ARM_cmplx_mag_INPUT_INTERFACE(input, block_size) \ + PAREN(input, complex_math_output_fut_a.data_ptr, block_size) + +#define REF_cmplx_mag_INPUT_INTERFACE(input, block_size) \ + PAREN(input, complex_math_output_ref_a.data_ptr, block_size) + +#define ARM_cmplx_mag_squared_INPUT_INTERFACE(input, block_size) \ + PAREN(input, complex_math_output_fut_a.data_ptr, block_size) + +#define REF_cmplx_mag_squared_INPUT_INTERFACE(input, block_size) \ + PAREN(input, complex_math_output_ref_a.data_ptr, block_size) + +#define ARM_cmplx_mult_cmplx_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, complex_math_output_fut_a.data_ptr, block_size) + +#define REF_cmplx_mult_cmplx_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, complex_math_output_ref_a.data_ptr, block_size) + +#define ARM_cmplx_mult_real_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, complex_math_output_fut_a.data_ptr, block_size) + +#define REF_cmplx_mult_real_INPUT_INTERFACE(input_a, input_b, block_size) \ + PAREN(input_a, input_b, complex_math_output_ref_a.data_ptr, block_size) + +/*--------------------------------------------------------------------------------*/ +/* Test Templates */ +/*--------------------------------------------------------------------------------*/ + +/** + * Specialization of #TEST_TEMPLATE_BUF1_BLK() for complex math tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK(fn_name, \ + suffix, \ + input_type, \ + output_type, \ + comparison_interface) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + TEST_TEMPLATE_BUF1_BLK( \ + complex_math_f_all, \ + complex_math_block_sizes, \ + input_type, \ + output_type, \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + comparison_interface); \ + } + +/** + * Specialization of #TEST_TEMPLATE_BUF2_BLK1() for complex math tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK(fn_name, \ + suffix, \ + input_type, \ + output_type, \ + comparison_interface) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + TEST_TEMPLATE_BUF2_BLK( \ + complex_math_f_all, \ + complex_math_f_all, \ + complex_math_block_sizes, \ + input_type, \ + output_type, \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + comparison_interface); \ + } + +#endif /* _COMPLEX_MATH_TEMPLATES_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_test_data.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_test_data.h new file mode 100644 index 0000000..df561b4 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_test_data.h @@ -0,0 +1,50 @@ +#ifndef _COMPLEX_MATH_TEST_DATA_H_ +#define _COMPLEX_MATH_TEST_DATA_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "arr_desc.h" +#include "arm_math.h" + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ +#define COMPLEX_MATH_MAX_INPUT_ELEMENTS 32 +#define COMPLEX_MATH_BIGGEST_INPUT_TYPE float32_t + +/*--------------------------------------------------------------------------------*/ +/* Decalare Variables */ +/*--------------------------------------------------------------------------------*/ + +/* Input/Output Buffers */ +ARR_DESC_DECLARE(complex_math_output_fut_a); +ARR_DESC_DECLARE(complex_math_output_fut_b); +ARR_DESC_DECLARE(complex_math_output_ref_a); +ARR_DESC_DECLARE(complex_math_output_ref_b); + +extern COMPLEX_MATH_BIGGEST_INPUT_TYPE +complex_math_output_f32_ref_a[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2]; + +extern COMPLEX_MATH_BIGGEST_INPUT_TYPE +complex_math_output_f32_ref_b[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2]; + +extern COMPLEX_MATH_BIGGEST_INPUT_TYPE +complex_math_output_f32_fut_a[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2]; + +extern COMPLEX_MATH_BIGGEST_INPUT_TYPE +complex_math_output_f32_fut_b[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2]; + +/* Block Sizes*/ +ARR_DESC_DECLARE(complex_math_block_sizes); + +/* Float Inputs */ +ARR_DESC_DECLARE(complex_math_zeros); +ARR_DESC_DECLARE(complex_math_f_2); +ARR_DESC_DECLARE(complex_math_f_15); +ARR_DESC_DECLARE(complex_math_f_32); +ARR_DESC_DECLARE(complex_math_f_all); + + +#endif /* _COMPLEX_MATH_TEST_DATA_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_test_group.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_test_group.h new file mode 100644 index 0000000..5c2ea1f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_test_group.h @@ -0,0 +1,9 @@ +#ifndef _COMPLEX_MATH_TEST_GROUP_H_ +#define _COMPLEX_MATH_TEST_GROUP_H_ + +/*--------------------------------------------------------------------------------*/ +/* Declare Test Groups */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(complex_math_tests); + +#endif /* _COMPLEX_MATH_TEST_GROUP_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_tests.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_tests.h new file mode 100644 index 0000000..ab4f0ae --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/complex_math_tests/complex_math_tests.h @@ -0,0 +1,14 @@ +#ifndef _COMPLEX_MATH_TESTS_H_ +#define _COMPLEX_MATH_TESTS_H_ + +/*--------------------------------------------------------------------------------*/ +/* Test/Group Declarations */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(cmplx_conj_tests); +JTEST_DECLARE_GROUP(cmplx_dot_prod_tests); +JTEST_DECLARE_GROUP(cmplx_mag_tests); +JTEST_DECLARE_GROUP(cmplx_mag_squared_tests); +JTEST_DECLARE_GROUP(cmplx_mult_cmplx_tests); +JTEST_DECLARE_GROUP(cmplx_mult_real_tests); + +#endif /* _COMPLEX_MATH_TESTS_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_templates.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_templates.h new file mode 100644 index 0000000..f7956fb --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_templates.h @@ -0,0 +1,46 @@ +#ifndef _CONTROLLER_TEMPLATES_H_ +#define _CONTROLLER_TEMPLATES_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "test_templates.h" +#include /* memcpy() */ + +/*--------------------------------------------------------------------------------*/ +/* Group Specific Templates */ +/*--------------------------------------------------------------------------------*/ + +/** + * Comparison SNR thresholds for the data types used in transform_tests. + */ +#define CONTROLLER_SNR_THRESHOLD_float32_t 110 +#define CONTROLLER_SNR_THRESHOLD_q31_t 100 +#define CONTROLLER_SNR_THRESHOLD_q15_t 45 + +/** + * Compare the outputs from the function under test and the reference + * function using SNR. + */ +#define CONTROLLER_SNR_COMPARE_INTERFACE(block_size, \ + output_type) \ + do \ + { \ + TEST_CONVERT_AND_ASSERT_SNR( \ + controller_output_f32_ref, \ + (output_type *) controller_output_ref, \ + controller_output_f32_fut, \ + (output_type *) controller_output_fut, \ + block_size, \ + output_type, \ + CONTROLLER_SNR_THRESHOLD_##output_type \ + ); \ + } while (0) + + +/*--------------------------------------------------------------------------------*/ +/* TEST Templates */ +/*--------------------------------------------------------------------------------*/ + +#endif /* _CONTROLLER_TEMPLATES_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_test_data.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_test_data.h new file mode 100644 index 0000000..5aa63eb --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_test_data.h @@ -0,0 +1,33 @@ +#ifndef _CONTROLLER_TEST_DATA_H_ +#define _CONTROLLER_TEST_DATA_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "arm_math.h" + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +#define CONTROLLER_MAX_LEN 1024 +#define CONTROLLER_MAX_COEFFS_LEN (12 * 3) +#define TRANFORM_BIGGEST_INPUT_TYPE float32_t + +/*--------------------------------------------------------------------------------*/ +/* Variable Declarations */ +/*--------------------------------------------------------------------------------*/ + +extern float32_t controller_output_fut[CONTROLLER_MAX_LEN]; +extern float32_t controller_output_ref[CONTROLLER_MAX_LEN]; +extern float32_t controller_output_f32_fut[CONTROLLER_MAX_LEN]; +extern float32_t controller_output_f32_ref[CONTROLLER_MAX_LEN]; +extern const float32_t controller_f32_inputs[CONTROLLER_MAX_LEN]; +extern const q31_t controller_q31_inputs[CONTROLLER_MAX_LEN]; +extern const q15_t * controller_q15_inputs; +extern const float32_t controller_f32_coeffs[CONTROLLER_MAX_COEFFS_LEN]; +extern const q31_t controller_q31_coeffs[CONTROLLER_MAX_COEFFS_LEN]; +extern const q15_t controller_q15_coeffs[CONTROLLER_MAX_COEFFS_LEN]; + +#endif /* _CONTROLLER_TEST_DATA_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_test_group.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_test_group.h new file mode 100644 index 0000000..baead25 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_test_group.h @@ -0,0 +1,9 @@ +#ifndef _CONTROLLER_TEST_GROUP_H_ +#define _CONTROLLER_TEST_GROUP_H_ + +/*--------------------------------------------------------------------------------*/ +/* Declare Test Group */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(controller_tests); + +#endif /* _CONTROLLER_TEST_GROUP_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_tests.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_tests.h new file mode 100644 index 0000000..41996a8 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/controller_tests/controller_tests.h @@ -0,0 +1,11 @@ +#ifndef _CONTROLLER_TESTS_H_ +#define _CONTROLLER_TESTS_H_ + +/*--------------------------------------------------------------------------------*/ +/* Test/Group Declarations */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(pid_reset_tests); +JTEST_DECLARE_GROUP(sin_cos_tests); +JTEST_DECLARE_GROUP(pid_tests); + +#endif /* _CONTROLLER_TESTS_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/fast_math_tests/fast_math_templates.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/fast_math_tests/fast_math_templates.h new file mode 100644 index 0000000..5b49512 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/fast_math_tests/fast_math_templates.h @@ -0,0 +1,102 @@ +#ifndef _FAST_MATH_TEMPLATES_H_ +#define _FAST_MATH_TEMPLATES_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "test_templates.h" +#include /* memcpy() */ + +/*--------------------------------------------------------------------------------*/ +/* Group Specific Templates */ +/*--------------------------------------------------------------------------------*/ + +/** + * Comparison SNR thresholds for the data types used in transform_tests. + */ +#define FAST_MATH_SNR_THRESHOLD_float32_t 95 +#define FAST_MATH_SNR_THRESHOLD_q31_t 95 +#define FAST_MATH_SNR_THRESHOLD_q15_t 45 + +/** + * Compare the outputs from the function under test and the reference + * function using SNR. + */ +#define FAST_MATH_SNR_COMPARE_INTERFACE(block_size, \ + output_type) \ + do \ + { \ + TEST_CONVERT_AND_ASSERT_SNR( \ + fast_math_output_f32_ref, \ + (output_type *) fast_math_output_ref, \ + fast_math_output_f32_fut, \ + (output_type *) fast_math_output_fut, \ + block_size, \ + output_type, \ + FAST_MATH_SNR_THRESHOLD_##output_type \ + ); \ + } while (0) + + +/*--------------------------------------------------------------------------------*/ +/* TEST Templates */ +/*--------------------------------------------------------------------------------*/ + +#define SQRT_TEST_TEMPLATE_ELT1(suffix) \ + \ + JTEST_DEFINE_TEST(arm_sqrt_##suffix##_test, arm_sqrt_##suffix) \ + { \ + uint32_t i; \ + \ + JTEST_COUNT_CYCLES( \ + for(i=0;i /* memcpy() */ + +/*--------------------------------------------------------------------------------*/ +/* Group Specific Templates */ +/*--------------------------------------------------------------------------------*/ + +/** +* Comparison SNR thresholds for the data types used in transform_tests. +*/ +#define INTRINSICS_SNR_THRESHOLD_q63_t 120 +#define INTRINSICS_SNR_THRESHOLD_q31_t 95 + +/** +* Compare the outputs from the function under test and the reference +* function using SNR. +*/ +#define INTRINSICS_SNR_COMPARE_INTERFACE(block_size, \ + output_type) \ + do \ + { \ + TEST_CONVERT_AND_ASSERT_SNR( \ + intrinsics_output_f32_ref, \ + (output_type##_t *) intrinsics_output_ref, \ + intrinsics_output_f32_fut, \ + (output_type##_t *) intrinsics_output_fut, \ + block_size, \ + output_type, \ + INTRINSICS_SNR_THRESHOLD_##output_type##_t \ + ); \ + } while (0) + + +/*--------------------------------------------------------------------------------*/ +/* TEST Templates */ +/*--------------------------------------------------------------------------------*/ + +#define INTRINSICS_TEST_TEMPLATE_ELT1(functionName, dataType) \ + \ + JTEST_DEFINE_TEST(functionName##_test, functionName) \ + { \ + uint32_t i; \ + \ + JTEST_COUNT_CYCLES( \ + for(i=0;ipData, \ + ((output_type *) &matrix_output_fut)->pData, \ + ((output_type *) &matrix_output_fut)->numRows * \ + ((output_type *) &matrix_output_ref)->numCols * \ + sizeof(output_content_type)) + +/** + * Comparison SNR thresholds for the data types used in matrix_tests. + */ +#define MATRIX_SNR_THRESHOLD 120 + +/** + * Compare the outputs from the function under test and the reference + * function using SNR. + */ +#define MATRIX_SNR_COMPARE_INTERFACE(output_type, output_content_type) \ + do \ + { \ + TEST_CONVERT_AND_ASSERT_SNR( \ + (float32_t *)matrix_output_f32_ref, \ + ((output_type *) &matrix_output_ref)->pData, \ + (float32_t *)matrix_output_f32_fut, \ + ((output_type *) &matrix_output_ref)->pData, \ + ((output_type *) &matrix_output_fut)->numRows * \ + ((output_type *) &matrix_output_ref)->numCols, \ + output_content_type, \ + MATRIX_SNR_THRESHOLD \ + ); \ + } while (0) + +/** + * Compare the outputs from the function under test and the reference + * function using SNR. This is special for float64_t + */ +#define MATRIX_DBL_SNR_COMPARE_INTERFACE(output_type) \ + do \ + { \ + TEST_ASSERT_DBL_SNR( \ + (float64_t *)matrix_output_f32_ref, \ + (float64_t *)matrix_output_f32_fut, \ + ((output_type *) &matrix_output_fut)->numRows * \ + ((output_type *) &matrix_output_ref)->numCols, \ + MATRIX_SNR_THRESHOLD \ + ); \ + } while (0) + +/*--------------------------------------------------------------------------------*/ +/* Input Interfaces */ +/*--------------------------------------------------------------------------------*/ +/* + * General: + * Input interfaces provide inputs to functions inside test templates. They + * ONLY provide the inputs. The output variables should be hard coded. + * + * The input interfaces must have the following format: + * + * ARM_xxx_INPUT_INTERFACE() or + * REF_xxx_INPUT_INTERFACE() + * + * The xxx must be lowercase, and is intended to be the indentifying substring + * in the function's name. Acceptable values are 'sub' or 'add' from the + * functions arm_add_q31. + */ + +#define ARM_mat_add_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_fut) + +#define REF_mat_add_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_ref) + +#define ARM_mat_cmplx_mult_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_fut) + +#define REF_mat_cmplx_mult_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_ref) + +#define ARM_mat_inverse_INPUT_INTERFACE(input_ptr) \ + PAREN(input_ptr, (void *) &matrix_output_fut) + +#define REF_mat_inverse_INPUT_INTERFACE(input_ptr) \ + PAREN(input_ptr, (void *) &matrix_output_ref) + +#define ARM_mat_mult_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_fut) + +#define REF_mat_mult_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_ref) + +#define ARM_mat_mult_fast_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_fut) + +#define REF_mat_mult_fast_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_ref) + +#define ARM_mat_sub_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_fut) + +#define REF_mat_sub_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, (void *) &matrix_output_ref) + +#define ARM_mat_trans_INPUT_INTERFACE(input_ptr) \ + PAREN(input_ptr, (void *) &matrix_output_fut) + +#define REF_mat_trans_INPUT_INTERFACE(input_ptr) \ + PAREN(input_ptr, (void *) &matrix_output_ref) + +/*--------------------------------------------------------------------------------*/ +/* Dimension Validation Interfaces */ +/*--------------------------------------------------------------------------------*/ + +#define MATRIX_TEST_VALID_ADDITIVE_DIMENSIONS(input_type, \ + matrix_a_ptr, \ + matrix_b_ptr) \ + ((((input_type) (matrix_a_ptr))->numRows == \ + ((input_type) (matrix_b_ptr))->numRows) && \ + (((input_type) (matrix_a_ptr))->numCols == \ + ((input_type) (matrix_b_ptr))->numCols)) + +#define MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS(input_type, \ + matrix_a_ptr, \ + matrix_b_ptr) \ + (((input_type) (matrix_a_ptr))->numCols == \ + ((input_type) (matrix_b_ptr))->numRows) + +#define MATRIX_TEST_VALID_SQUARE_DIMENSIONS(input_type, \ + matrix_ptr) \ + (((input_type)(matrix_ptr))->numRows == \ + ((input_type)(matrix_ptr))->numCols) + +#define MATRIX_TEST_VALID_DIMENSIONS_ALWAYS(input_type, \ + matrix_ptr) \ + (1 == 1) \ + +/*--------------------------------------------------------------------------------*/ +/* Output Configuration Interfaces */ +/*--------------------------------------------------------------------------------*/ +/* The matrix tests assume the output matrix is always the correct size. These + * interfaces size the properly size the output matrices according to the input + * matrices and the operation at hand.*/ + +#define MATRIX_TEST_CONFIG_ADDITIVE_OUTPUT(input_type, \ + matrix_a_ptr, \ + matrix_b_ptr) \ + do \ + { \ + ((input_type) &matrix_output_fut)->numRows = \ + ((input_type)(matrix_a_ptr))->numRows; \ + ((input_type) &matrix_output_fut)->numCols = \ + ((input_type)(matrix_a_ptr))->numCols; \ + ((input_type) &matrix_output_ref)->numRows = \ + ((input_type)(matrix_a_ptr))->numRows; \ + ((input_type) &matrix_output_ref)->numCols = \ + ((input_type)(matrix_a_ptr))->numCols; \ + } while (0) + +#define MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT(input_type, \ + matrix_a_ptr, \ + matrix_b_ptr) \ + do \ + { \ + ((input_type) &matrix_output_fut)->numRows = \ + ((input_type)(matrix_a_ptr))->numRows; \ + ((input_type) &matrix_output_fut)->numCols = \ + ((input_type)(matrix_b_ptr))->numCols; \ + ((input_type) &matrix_output_ref)->numRows = \ + ((input_type)(matrix_a_ptr))->numRows; \ + ((input_type) &matrix_output_ref)->numCols = \ + ((input_type)(matrix_b_ptr))->numCols; \ + } while (0) + +#define MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(input_type, \ + matrix_ptr) \ + do \ + { \ + ((input_type) &matrix_output_fut)->numRows = \ + ((input_type)(matrix_ptr))->numRows; \ + ((input_type) &matrix_output_fut)->numCols = \ + ((input_type)(matrix_ptr))->numCols; \ + ((input_type) &matrix_output_ref)->numRows = \ + ((input_type)(matrix_ptr))->numRows; \ + ((input_type) &matrix_output_ref)->numCols = \ + ((input_type)(matrix_ptr))->numCols; \ + } while (0) + +#define MATRIX_TEST_CONFIG_TRANSPOSE_OUTPUT(input_type, \ + matrix_ptr) \ + do \ + { \ + ((input_type) &matrix_output_fut)->numRows = \ + ((input_type)(matrix_ptr))->numCols; \ + ((input_type) &matrix_output_fut)->numCols = \ + ((input_type)(matrix_ptr))->numRows; \ + ((input_type) &matrix_output_ref)->numRows = \ + ((input_type)(matrix_ptr))->numCols; \ + ((input_type) &matrix_output_ref)->numCols = \ + ((input_type)(matrix_ptr))->numRows; \ + } while (0) + +/*--------------------------------------------------------------------------------*/ +/* TEST Templates */ +/*--------------------------------------------------------------------------------*/ + +#define MATRIX_TEST_TEMPLATE_ELT1(arr_desc_inputs, \ + input_type, \ + output_type, output_content_type, \ + fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + output_config_interface, \ + dim_validation_interface, \ + compare_interface) \ + do \ + { \ + TEMPLATE_DO_ARR_DESC( \ + input_idx, input_type, input, arr_desc_inputs \ + , \ + JTEST_DUMP_STRF("Matrix Dimensions: %dx%d\n", \ + (int)input->numRows, \ + (int)input->numCols); \ + \ + if (dim_validation_interface(input_type, \ + input)) { \ + output_config_interface(input_type, \ + input); \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface(input), \ + ref, ref_arg_interface(input)); \ + compare_interface(output_type, \ + output_content_type); \ + } else { \ + arm_status matrix_test_retval; \ + TEST_CALL_FUT( \ + matrix_test_retval = fut, \ + fut_arg_interface(input)); \ + \ + /* If dimensions are known bad, the fut should */ \ + /* detect it. */ \ + if ( matrix_test_retval != ARM_MATH_SIZE_MISMATCH) { \ + return JTEST_TEST_FAILED; \ + } \ + }); \ + return JTEST_TEST_PASSED; \ + } while (0) + + +#define MATRIX_TEST_TEMPLATE_ELT2(arr_desc_inputs_a, \ + arr_desc_inputs_b, \ + input_type, \ + output_type, output_content_type, \ + fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + output_config_interface, \ + dim_validation_interface, \ + compare_interface) \ + do \ + { \ + TEMPLATE_DO_ARR_DESC( \ + input_a_idx, input_type, input_a, arr_desc_inputs_a \ + , \ + input_type input_b = ARR_DESC_ELT( \ + input_type, input_a_idx, \ + &(arr_desc_inputs_b)); \ + \ + JTEST_DUMP_STRF("Matrix Dimensions: A %dx%d B %dx%d\n", \ + (int)input_a->numRows, \ + (int)input_a->numCols, \ + (int)input_b->numRows, \ + (int)input_b->numCols); \ + \ + if (dim_validation_interface(input_type, \ + input_a, \ + input_b)) { \ + \ + output_config_interface(input_type, \ + input_a, \ + input_b); \ + \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface(input_a, input_b), \ + ref, ref_arg_interface(input_a, input_b)); \ + \ + compare_interface(output_type, output_content_type); \ + \ + } else { \ + arm_status matrix_test_retval; \ + TEST_CALL_FUT( \ + matrix_test_retval = fut, fut_arg_interface(input_a, input_b)); \ + \ + /* If dimensions are known bad, the fut should */ \ + /* detect it. */ \ + if ( matrix_test_retval != ARM_MATH_SIZE_MISMATCH) { \ + return JTEST_TEST_FAILED; \ + } \ + }); \ + return JTEST_TEST_PASSED; \ + } while (0) + +/** + * Specialization of #MATRIX_TEST_TEMPLATE_ELT2() for matrix tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define MATRIX_DEFINE_TEST_TEMPLATE_ELT2(fn_name, suffix, \ + output_config_interface, \ + dim_validation_interface, \ + comparison_interface) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + MATRIX_TEST_TEMPLATE_ELT2( \ + matrix_##suffix##_a_inputs, \ + matrix_##suffix##_b_inputs, \ + arm_matrix_instance_##suffix * , \ + arm_matrix_instance_##suffix, \ + TYPE_FROM_ABBREV(suffix), \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + output_config_interface, \ + dim_validation_interface, \ + comparison_interface); \ + } \ + +/** + * Specialization of #MATRIX_TEST_TEMPLATE_ELT1() for matrix tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define MATRIX_DEFINE_TEST_TEMPLATE_ELT1(fn_name, suffix, \ + output_config_interface, \ + dim_validation_interface) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + MATRIX_TEST_TEMPLATE_ELT1( \ + matrix_##suffix##_a_inputs, \ + arm_matrix_instance_##suffix * , \ + arm_matrix_instance_##suffix, \ + TYPE_FROM_ABBREV(suffix), \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + output_config_interface, \ + dim_validation_interface, \ + MATRIX_COMPARE_INTERFACE); \ + } \ + + +#endif /* _MATRIX_TEMPLATES_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_test_data.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_test_data.h new file mode 100644 index 0000000..5940ae3 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_test_data.h @@ -0,0 +1,54 @@ +#ifndef _MATRIX_TEST_DATA_H_ +#define _MATRIX_TEST_DATA_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "arr_desc.h" +#include "arm_math.h" /* float32_t */ + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ +#define MATRIX_TEST_MAX_ROWS 4 +#define MATRIX_TEST_MAX_COLS 4 +#define MATRIX_TEST_BIGGEST_INPUT_TYPE float64_t +#define MATRIX_TEST_MAX_ELTS (MATRIX_TEST_MAX_ROWS * MATRIX_TEST_MAX_COLS) +#define MATRIX_MAX_COEFFS_LEN 16 +#define MATRIX_MAX_SHIFTS_LEN 5 + +/** + * Declare the matrix inputs defined by MATRIX_DEFINE_INPUTS. + */ +#define MATRIX_DECLARE_INPUTS(suffix) \ + ARR_DESC_DECLARE(matrix_##suffix##_a_inputs); \ + ARR_DESC_DECLARE(matrix_##suffix##_b_inputs); \ + ARR_DESC_DECLARE(matrix_##suffix##_invertible_inputs) + + +/*--------------------------------------------------------------------------------*/ +/* Declare Variables */ +/*--------------------------------------------------------------------------------*/ + +/* Input/Output Buffers */ +extern arm_matrix_instance_f32 matrix_output_fut; +extern arm_matrix_instance_f32 matrix_output_ref; +extern arm_matrix_instance_f64 matrix_output_fut64; +extern arm_matrix_instance_f64 matrix_output_ref64; +extern MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_f32_fut[MATRIX_TEST_MAX_ELTS]; +extern MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_f32_ref[MATRIX_TEST_MAX_ELTS]; +extern MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_scratch[MATRIX_TEST_MAX_ELTS]; + +/* Matrix Inputs */ +MATRIX_DECLARE_INPUTS(f64); +MATRIX_DECLARE_INPUTS(f32); +MATRIX_DECLARE_INPUTS(q31); +MATRIX_DECLARE_INPUTS(q15); + +extern const float32_t matrix_f32_scale_values[MATRIX_MAX_COEFFS_LEN]; +extern const q31_t matrix_q31_scale_values[MATRIX_MAX_COEFFS_LEN]; +extern const q15_t matrix_q15_scale_values[MATRIX_MAX_COEFFS_LEN]; +extern const int32_t matrix_shift_values[MATRIX_MAX_SHIFTS_LEN]; + +#endif /* _MATRIX_TEST_DATA_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_test_group.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_test_group.h new file mode 100644 index 0000000..017b125 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_test_group.h @@ -0,0 +1,9 @@ +#ifndef _MATRIX_TEST_GROUP_H_ +#define _MATRIX_TEST_GROUP_H_ + +/*--------------------------------------------------------------------------------*/ +/* Declare Test Groups */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(matrix_tests); + +#endif /* _MATRIX_TEST_GROUP_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_tests.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_tests.h new file mode 100644 index 0000000..9947c02 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/matrix_tests/matrix_tests.h @@ -0,0 +1,17 @@ +#ifndef _MATRIX_TESTS_H_ +#define _MATRIX_TESTS_H_ + +/*--------------------------------------------------------------------------------*/ +/* Test/Group Declarations */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(mat_add_tests); +JTEST_DECLARE_GROUP(mat_cmplx_mult_tests); +JTEST_DECLARE_GROUP(mat_init_tests); +JTEST_DECLARE_GROUP(mat_inverse_tests); +JTEST_DECLARE_GROUP(mat_mult_tests); +JTEST_DECLARE_GROUP(mat_mult_fast_tests); +JTEST_DECLARE_GROUP(mat_sub_tests); +JTEST_DECLARE_GROUP(mat_trans_tests); +JTEST_DECLARE_GROUP(mat_scale_tests); + +#endif /* _MATRIX_TESTS_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_templates.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_templates.h new file mode 100644 index 0000000..ddca35c --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_templates.h @@ -0,0 +1,157 @@ +#ifndef _STATISTICS_TEMPLATES_H_ +#define _STATISTICS_TEMPLATES_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "test_templates.h" + +/*--------------------------------------------------------------------------------*/ +/* Group Specific Templates */ +/*--------------------------------------------------------------------------------*/ + +/** + * Compare the outputs from the function under test and the reference function. + */ +#define STATISTICS_COMPARE_INTERFACE(block_size, \ + output_type) \ + do \ + { \ + TEST_ASSERT_BUFFERS_EQUAL( \ + statistics_output_ref.data_ptr, \ + statistics_output_fut.data_ptr, \ + 1 * sizeof(output_type) /* All fns return one value*/ \ + ); \ + TEST_ASSERT_EQUAL( \ + statistics_idx_fut, \ + statistics_idx_ref); \ + } while (0) \ + +/* + * Comparison SNR thresholds for the data types used in statistics_tests. + */ +#define STATISTICS_SNR_THRESHOLD_float32_t 120 +#define STATISTICS_SNR_THRESHOLD_q31_t 100 +#define STATISTICS_SNR_THRESHOLD_q15_t 60 +#define STATISTICS_SNR_THRESHOLD_q7_t 30 + +/** + * Compare reference and fut outputs using SNR. + * + * @note The outputs are converted to float32_t before comparison. + */ +#define STATISTICS_SNR_COMPARE_INTERFACE(block_size, \ + output_type) \ + do \ + { \ + TEST_CONVERT_AND_ASSERT_SNR( \ + statistics_output_f32_ref, \ + statistics_output_ref.data_ptr, \ + statistics_output_f32_fut, \ + statistics_output_fut.data_ptr, \ + 1, /* All fns return one element*/ \ + output_type, \ + STATISTICS_SNR_THRESHOLD_##output_type \ + ); \ + } while (0) + + + +/*--------------------------------------------------------------------------------*/ +/* Input Interfaces */ +/*--------------------------------------------------------------------------------*/ +/* + * General: + * Input interfaces provide inputs to functions inside test templates. They + * ONLY provide the inputs. The output variables should be hard coded. + * + * The input interfaces must have the following format: + * + * ARM_xxx_INPUT_INTERFACE() or + * REF_xxx_INPUT_INTERFACE() + * + * The xxx must be lowercase, and is intended to be the indentifying substring + * in the function's name. Acceptable values are 'sub' or 'add' from the + * functions arm_add_q31. + */ + +#define ARM_max_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, \ + statistics_output_fut.data_ptr, &statistics_idx_fut) + +#define REF_max_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, \ + statistics_output_ref.data_ptr, &statistics_idx_ref) + +#define ARM_mean_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, statistics_output_fut.data_ptr) + +#define REF_mean_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, statistics_output_ref.data_ptr) + +#define ARM_min_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, \ + statistics_output_fut.data_ptr, &statistics_idx_fut) + +#define REF_min_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, \ + statistics_output_ref.data_ptr, &statistics_idx_ref) + +#define ARM_power_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, statistics_output_fut.data_ptr) + +#define REF_power_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, statistics_output_ref.data_ptr) + +#define ARM_rms_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, statistics_output_fut.data_ptr) + +#define REF_rms_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, statistics_output_ref.data_ptr) + +#define ARM_std_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, statistics_output_fut.data_ptr) + +#define REF_std_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, statistics_output_ref.data_ptr) + +#define ARM_var_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, statistics_output_fut.data_ptr) + +#define REF_var_INPUT_INTERFACE(input, block_size) \ + PAREN(input, block_size, statistics_output_ref.data_ptr) + + +/*--------------------------------------------------------------------------------*/ +/* Test Templates */ +/*--------------------------------------------------------------------------------*/ + +/** + * Specialization of #TEST_TEMPLATE_BUF1_BLK() for statistics tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK(fn_name, \ + suffix, \ + input_type, \ + output_type, \ + comparison_interface) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + TEST_TEMPLATE_BUF1_BLK( \ + statistics_f_all, \ + statistics_block_sizes, \ + input_type, \ + output_type, \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + comparison_interface); \ + } + + +#endif /* _STATISTICS_TEMPLATES_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_test_data.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_test_data.h new file mode 100644 index 0000000..3e1ee09 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_test_data.h @@ -0,0 +1,44 @@ +#ifndef _STATISTICS_TEST_DATA_H_ +#define _STATISTICS_TEST_DATA_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "arr_desc.h" +#include "arm_math.h" + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ +#define STATISTICS_MAX_INPUT_ELEMENTS 32 +#define STATISTICS_BIGGEST_INPUT_TYPE float32_t + +/*--------------------------------------------------------------------------------*/ +/* Declare Variables */ +/*--------------------------------------------------------------------------------*/ + +/* Input/Output Buffers */ +ARR_DESC_DECLARE(statistics_output_fut); +ARR_DESC_DECLARE(statistics_output_ref); +extern uint32_t statistics_idx_fut; +extern uint32_t statistics_idx_ref; + +extern STATISTICS_BIGGEST_INPUT_TYPE +statistics_output_f32_ref[STATISTICS_MAX_INPUT_ELEMENTS]; + +extern STATISTICS_BIGGEST_INPUT_TYPE +statistics_output_f32_fut[STATISTICS_MAX_INPUT_ELEMENTS]; + + +/* Block Sizes */ +ARR_DESC_DECLARE(statistics_block_sizes); + +/* Float Inputs */ +ARR_DESC_DECLARE(statistics_zeros); +ARR_DESC_DECLARE(statistics_f_2); +ARR_DESC_DECLARE(statistics_f_15); +ARR_DESC_DECLARE(statistics_f_32); +ARR_DESC_DECLARE(statistics_f_all); + +#endif /* _STATISTICS_TEST_DATA_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_test_group.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_test_group.h new file mode 100644 index 0000000..d1446ed --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_test_group.h @@ -0,0 +1,9 @@ +#ifndef _STATISTICS_TEST_GROUP_H_ +#define _STATISTICS_TEST_GROUP_H_ + +/*--------------------------------------------------------------------------------*/ +/* Declare Test Groups */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(statistics_tests); + +#endif /* _STATISTICS_TEST_GROUP_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_tests.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_tests.h new file mode 100644 index 0000000..20df03e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/statistics_tests/statistics_tests.h @@ -0,0 +1,15 @@ +#ifndef _STATISTICS_TESTS_H_ +#define _STATISTICS_TESTS_H_ + +/*--------------------------------------------------------------------------------*/ +/* Test/Group Declarations */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(max_tests); +JTEST_DECLARE_GROUP(mean_tests); +JTEST_DECLARE_GROUP(min_tests); +JTEST_DECLARE_GROUP(power_tests); +JTEST_DECLARE_GROUP(rms_tests); +JTEST_DECLARE_GROUP(std_tests); +JTEST_DECLARE_GROUP(var_tests); + +#endif /* _STATISTICS_TESTS_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_templates.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_templates.h new file mode 100644 index 0000000..bc94791 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_templates.h @@ -0,0 +1,120 @@ +#ifndef _SUPPORT_TEMPLATES_H_ +#define _SUPPORT_TEMPLATES_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "test_templates.h" + +/*--------------------------------------------------------------------------------*/ +/* Group Specific Templates */ +/*--------------------------------------------------------------------------------*/ + +/** + * Compare the outputs from the function under test and the reference function. + */ +#define SUPPORT_COMPARE_INTERFACE(block_size, \ + output_type) \ + do \ + { \ + TEST_ASSERT_BUFFERS_EQUAL( \ + support_output_ref.data_ptr, \ + support_output_fut.data_ptr, \ + block_size * sizeof(output_type)); \ + } while (0) \ + +/*--------------------------------------------------------------------------------*/ +/* Input Interfaces */ +/*--------------------------------------------------------------------------------*/ +/* + * General: + * Input interfaces provide inputs to functions inside test templates. They + * ONLY provide the inputs. The output variables should be hard coded. + * + * The input interfaces must have the following format: + * + * ARM_xxx_INPUT_INTERFACE() or + * REF_xxx_INPUT_INTERFACE() + * + * The xxx must be lowercase, and is intended to be the indentifying substring + * in the function's name. Acceptable values are 'sub' or 'add' from the + * functions arm_add_q31. + */ + +#define ARM_copy_INPUT_INTERFACE(input, block_size) \ + PAREN(input, support_output_fut.data_ptr, block_size) + +#define REF_copy_INPUT_INTERFACE(input, block_size) \ + PAREN(input, support_output_ref.data_ptr, block_size) + +#define ARM_fill_INPUT_INTERFACE(elt, block_size) \ + PAREN(elt, support_output_fut.data_ptr, block_size) + +#define REF_fill_INPUT_INTERFACE(elt, block_size) \ + PAREN(elt, support_output_ref.data_ptr, block_size) + +#define ARM_x_to_y_INPUT_INTERFACE(input, block_size) \ + PAREN(input, support_output_fut.data_ptr, block_size) + +#define REF_x_to_y_INPUT_INTERFACE(input, block_size) \ + PAREN(input, support_output_ref.data_ptr, block_size) + +/*--------------------------------------------------------------------------------*/ +/* Test Templates */ +/*--------------------------------------------------------------------------------*/ + + +/** + * Specialization of #TEST_TEMPLATE_BUF1_BLK() for support tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define SUPPORT_DEFINE_TEST_TEMPLATE_BUF1_BLK(fn_name, \ + suffix, \ + input_type, \ + output_type, \ + comparison_interface) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + TEST_TEMPLATE_BUF1_BLK( \ + support_f_all, \ + support_block_sizes, \ + input_type, \ + output_type, \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + comparison_interface); \ + } + +/** + * Specialization of #TEST_TEMPLATE_ELT1_BLK() for support tests. + * + * @note This macro relies on the existance of ARM_xxx_INPUT_INTERFACE and + * REF_xxx_INPUT_INTERFACEs. + */ +#define SUPPORT_DEFINE_TEST_TEMPLATE_ELT1_BLK(fn_name, \ + suffix, \ + elt_type, \ + output_type, \ + comparison_interface) \ + JTEST_DEFINE_TEST(arm_##fn_name##_##suffix##_test, \ + arm_##fn_name##_##suffix) \ + { \ + TEST_TEMPLATE_ELT1_BLK( \ + support_elts, \ + support_block_sizes, \ + elt_type, \ + output_type, \ + arm_##fn_name##_##suffix, \ + ARM_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + REF_##fn_name##_INPUT_INTERFACE, \ + comparison_interface); \ + } + +#endif /* _SUPPORT_TEMPLATES_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_test_data.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_test_data.h new file mode 100644 index 0000000..cc6c636 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_test_data.h @@ -0,0 +1,31 @@ +#ifndef ARM_SUPPORT_TEST_DATA_H +#define ARM_SUPPORT_TEST_DATA_H + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "arr_desc.h" + +/*--------------------------------------------------------------------------------*/ +/* Declare Variables */ +/*--------------------------------------------------------------------------------*/ + +/* Input/Output Buffers */ +ARR_DESC_DECLARE(support_output_fut); +ARR_DESC_DECLARE(support_output_ref); + +/* Block Sizes*/ +ARR_DESC_DECLARE(support_block_sizes); + +/* Numbers */ +ARR_DESC_DECLARE(support_elts); + +/* Float Inputs */ +ARR_DESC_DECLARE(support_zeros); +ARR_DESC_DECLARE(support_f_2); +ARR_DESC_DECLARE(support_f_15); +ARR_DESC_DECLARE(support_f_32); +ARR_DESC_DECLARE(support_f_all); + +#endif diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_test_group.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_test_group.h new file mode 100644 index 0000000..ef3a768 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_test_group.h @@ -0,0 +1,9 @@ +#ifndef _SUPPORT_TEST_GROUP_H_ +#define _SUPPORT_TEST_GROUP_H_ + +/*--------------------------------------------------------------------------------*/ +/* Declare Test Groups */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(support_tests); + +#endif /* _SUPPORT_TEST_GROUP_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_tests.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_tests.h new file mode 100644 index 0000000..2eab273 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/support_tests/support_tests.h @@ -0,0 +1,11 @@ +#ifndef _SUPPORT_TESTS_H_ +#define _SUPPORT_TESTS_H_ + +/*--------------------------------------------------------------------------------*/ +/* Test/Group Declarations */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(copy_tests); +JTEST_DECLARE_GROUP(fill_tests); +JTEST_DECLARE_GROUP(x_to_y_tests); + +#endif /* _SUPPORT_TESTS_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/templates/template.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/templates/template.h new file mode 100644 index 0000000..e4577d1 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/templates/template.h @@ -0,0 +1,88 @@ +#ifndef _TEMPLATE_H_ +#define _TEMPLATE_H_ + +/*--------------------------------------------------------------------------------*/ +/* Looping and Iteration */ +/*--------------------------------------------------------------------------------*/ + +/** + * Template for the general structure of a loop. + */ +#define TEMPLATE_LOOP(setup, loop_def, body) \ + do \ + { \ + setup; \ + loop_def { \ + body; \ + } \ + } while (0) + +/** + * Template for looping over an array-like sequence. + */ +#define TEMPLATE_DO_ARR_LIKE(iter_idx, type, \ + arr, arr_length, \ + iter_elem_setup, \ + body) \ + do \ + { \ + TEMPLATE_LOOP( \ + int iter_idx, \ + for(iter_idx = 0; iter_idx < (arr_length); ++iter_idx), \ + iter_elem_setup; \ + body); \ + } while (0) + +/** + * Template for looping over the contents of an array. + */ +#define TEMPLATE_DO_ARR(iter_idx, type, iter_elem, arr, arr_length, body) \ + do \ + { \ + TEMPLATE_DO_ARR_LIKE( \ + iter_idx, type, arr, arr_length, \ + type iter_elem = (arr)[iter_idx], \ + body); \ + } while (0) + +/** + * Template for looping over the contents of an #ARR_DESC. + */ +#define TEMPLATE_DO_ARR_DESC(iter_idx, type, iter_elem, arr_desc, body) \ + do \ + { \ + TEMPLATE_DO_ARR_LIKE( \ + iter_idx, type, arr_desc, (arr_desc).element_count, \ + type iter_elem = ARR_DESC_ELT(type, iter_idx, &(arr_desc)), \ + body); \ + } while (0) + +/*--------------------------------------------------------------------------------*/ +/* Test Definition */ +/*--------------------------------------------------------------------------------*/ + +/** + * Template for the general structure of a test. + */ +#define TEMPLATE_TEST(setup, body, teardown) \ + do \ + { \ + setup; \ + body; \ + teardown; \ + } while (0) + +/** + * Template for calling a function. + * + * @note Surround function arguments with the #PAREN() macro. + * + * @example + * void my_func(int arg1, int arg2); + * + * TEMPLATE_CALL_FN(my_func, PAREN(3, 7)); + */ +#define TEMPLATE_CALL_FN(fn, fn_args) \ + fn fn_args + +#endif /* _TEMPLATE_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/templates/test_templates.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/templates/test_templates.h new file mode 100644 index 0000000..700bbe1 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/templates/test_templates.h @@ -0,0 +1,458 @@ +#ifndef _TEST_TEMPLATES_H_ +#define _TEST_TEMPLATES_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ +#include "template.h" +#include /* memcmp() */ +#include /* PRIu32 */ +#include "math_helper.h" /* arm_snr_f32() */ + +/*--------------------------------------------------------------------------------*/ +/* Function Aliases for use in Templates. */ +/*--------------------------------------------------------------------------------*/ +#define ref_q31_t_to_float ref_q31_to_float +#define ref_q15_t_to_float ref_q15_to_float +#define ref_q7_t_to_float ref_q7_to_float +#define ref_float_to_q31_t ref_float_to_q31 +#define ref_float_to_q15_t ref_float_to_q15 +#define ref_float_to_q7_t ref_float_to_q7 +#define ref_float32_t_to_float ref_copy_f32 +#define ref_float_to_float32_t ref_copy_f32 + + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Call the function-under-test. + */ +#define TEST_CALL_FUT(fut, fut_args) \ + JTEST_COUNT_CYCLES(TEMPLATE_CALL_FN(fut, fut_args)) + +/** + * Call the reference-function. + */ +#define TEST_CALL_REF(ref, ref_args) \ + TEMPLATE_CALL_FN(ref, ref_args) + +/** + * Call the function-under-test and the reference-function. + */ +#define TEST_CALL_FUT_AND_REF(fut, fut_args, ref, ref_args) \ + do { \ + TEST_CALL_FUT(fut, fut_args); \ + TEST_CALL_REF(ref, ref_args); \ + } while (0) + +/** + * This macro eats a variable number of arguments and evaluates to a null + * statement. + */ +#define TEST_NULL_STATEMENT(...) (void) "TEST_NULL_STATEMENT" + +/** + * A function name, Usable in any template where a fut or ref name is accepted, + * that evaluates to a #TEST_NULL_STATEMENT(). + */ +#define TEST_NULL_FN TEST_NULL_STATEMENT + +/** + * Assert that buffers A and B are byte-equivalent for a number of bytes. + */ +#define TEST_ASSERT_BUFFERS_EQUAL(buf_a, buf_b, bytes) \ + do \ + { \ + if (memcmp(buf_a, buf_b, bytes) != 0) \ + { \ + return JTEST_TEST_FAILED; \ + } \ + } while (0) + +/** + * Assert that the two entities are equal. + */ +#define TEST_ASSERT_EQUAL(a, b) \ + do \ + { \ + if ((a) != (b)) \ + { \ + return JTEST_TEST_FAILED; \ + } \ + } while (0) + +/** + * Convert elements to from src_type to float. + */ +#define TEST_CONVERT_TO_FLOAT(src_ptr, dst_ptr, block_size, src_type) \ + do \ + { \ + ref_##src_type##_to_float( \ + src_ptr, \ + dst_ptr, \ + block_size); \ + } while (0) \ + +/** + * Convert elements to from float to dst_type . + */ +#define TEST_CONVERT_FLOAT_TO(src_ptr, dst_ptr, block_size, dst_type) \ + do \ + { \ + ref_float_to_##dst_type( \ + src_ptr, \ + dst_ptr, \ + block_size); \ + } while (0) \ + +/** + * Assert that the SNR between a reference and test sample is above a given + * threshold. + */ +#define TEST_ASSERT_SNR(ref_ptr, tst_ptr, block_size, threshold) \ + do \ + { \ + float32_t snr = arm_snr_f32(ref_ptr, tst_ptr, block_size); \ + if ( snr <= threshold) \ + { \ + JTEST_DUMP_STRF("SNR: %f\n", snr); \ + return JTEST_TEST_FAILED; \ + } \ + } while (0) \ + +/** + * Assert that the SNR between a reference and test sample is above a given + * threshold. Special case for float64_t + */ +#define TEST_ASSERT_DBL_SNR(ref_ptr, tst_ptr, block_size, threshold) \ + do \ + { \ + float64_t snr = arm_snr_f64(ref_ptr, tst_ptr, block_size); \ + if ( snr <= threshold) \ + { \ + JTEST_DUMP_STRF("SNR: %f\n", snr); \ + return JTEST_TEST_FAILED; \ + } \ + } while (0) \ + +/** + * Compare test and reference elements by converting to float and + * calculating an SNR. + * + * This macro is a merger of the #TEST_CONVERT_TO_FLOAT() and + * #TEST_ASSERT_SNR() macros. + */ +#define TEST_CONVERT_AND_ASSERT_SNR(ref_dst_ptr, ref_src_ptr, \ + tst_dst_ptr, tst_src_ptr, \ + block_size, \ + tst_src_type, \ + threshold) \ + do \ + { \ + TEST_CONVERT_TO_FLOAT(ref_src_ptr, \ + ref_dst_ptr, \ + block_size, \ + tst_src_type); \ + TEST_CONVERT_TO_FLOAT(tst_src_ptr, \ + tst_dst_ptr, \ + block_size, \ + tst_src_type); \ + TEST_ASSERT_SNR(ref_dst_ptr, \ + tst_dst_ptr, \ + block_size, \ + threshold); \ + } while (0) + +/** + * Execute statements only if the combination of block size, function type + * specifier, and input ARR_DESC_t are valid. + * + * @example An ARR_DESC_t that contains 64 bytes cant service a 32 element + * block size if they are extracted in float32_t increments. + * + * 8 * 32 = 256 > 64. + */ +#define TEST_DO_VALID_BLOCKSIZE(block_size, fn_type_spec, \ + input_arr_desc, body) \ + do \ + { \ + if (block_size * sizeof(fn_type_spec) <= \ + ARR_DESC_BYTES(input_arr_desc)) \ + { \ + JTEST_DUMP_STRF("Block Size: %"PRIu32"\n", block_size); \ + body; \ + } \ + } while (0) \ + +/** + * Template for tests that rely on one input buffer and a blocksize parameter. + * + * The buffer is an #ARR_DESC_t. It is iterated over and it's values are + * passed to the function under test and reference functions through their + * appropriate argument interfaces. The argument interfaces this template to + * execute structurally similar functions. + * + */ +#define TEST_TEMPLATE_BUF1_BLK(arr_desc_inputs, \ + arr_desc_block_sizes, \ + input_type, output_type, \ + fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + compare_interface) \ + do \ + { \ + TEMPLATE_DO_ARR_DESC( \ + input_idx, ARR_DESC_t *, input_ptr, arr_desc_inputs \ + , \ + TEMPLATE_DO_ARR_DESC( \ + block_size_idx, uint32_t, block_size, arr_desc_block_sizes \ + , \ + void * input_data_ptr = input_ptr->data_ptr; \ + \ + TEST_DO_VALID_BLOCKSIZE( \ + block_size, input_type, input_ptr \ + , \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface( \ + input_data_ptr, block_size), \ + ref, ref_arg_interface( \ + input_data_ptr, block_size)); \ + \ + compare_interface(block_size, output_type)))); \ + \ + return JTEST_TEST_PASSED; \ + \ + } while (0) + +/** + * Template for tests that rely on an input buffer and an element. + * + * An element can is any thing which doesn't walk and talk like a + * sequence. Examples include numbers, and structures. + */ +#define TEST_TEMPLATE_BUF1_ELT1(arr_desc_inputs, \ + arr_desc_elts, \ + input_type, elt_type, output_type, \ + fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + compare_interface) \ + do \ + { \ + TEMPLATE_DO_ARR_DESC( \ + input_idx, ARR_DESC_t *, input_ptr, arr_desc_inputs \ + , \ + TEMPLATE_DO_ARR_DESC( \ + elt_idx, elt_type, elt, arr_desc_elts \ + , \ + void * input_data_ptr = input_ptr->data_ptr; \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface(input_data_ptr, elt), \ + ref, ref_arg_interface(input_data_ptr, elt)); \ + \ + compare_interface(output_type))); \ + return JTEST_TEST_PASSED; \ + } while (0) + +/** + * Template for tests that rely on an input buffer, an element, and a blocksize + * parameter. + */ +#define TEST_TEMPLATE_BUF1_ELT1_BLK(arr_desc_inputs, \ + arr_desc_elts, \ + arr_desc_block_sizes, \ + input_type, elt_type, output_type, \ + fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + compare_interface); \ + do \ + { \ + TEMPLATE_DO_ARR_DESC( \ + inut_idx, ARR_DESC_t *, input_ptr, arr_desc_inputs \ + , \ + TEMPLATE_DO_ARR_DESC( \ + block_size_idx, uint32_t, block_size, \ + arr_desc_block_sizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + elt_idx, elt_type, elt, arr_desc_elts \ + , \ + void * input_data_ptr = input_ptr->data_ptr; \ + TEST_DO_VALID_BLOCKSIZE( \ + block_size, input_type, input_ptr, \ + \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface( \ + input_data_ptr, elt, block_size), \ + ref, ref_arg_interface( \ + input_data_ptr, elt, block_size)); \ + compare_interface(block_size, output_type))))); \ + return JTEST_TEST_PASSED; \ + } while (0) + +/** + * Template for tests that rely on an input buffer, two elements, and a blocksize + * parameter. + */ +#define TEST_TEMPLATE_BUF1_ELT2_BLK(arr_desc_inputs, \ + arr_desc_elt1s, \ + arr_desc_elt2s, \ + arr_desc_block_sizes, \ + input_type, elt1_type, \ + elt2_type, output_type, \ + fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + compare_interface) \ + do \ + { \ + TEMPLATE_DO_ARR_DESC( \ + inut_idx, ARR_DESC_t *, input_ptr, arr_desc_inputs \ + , \ + TEMPLATE_DO_ARR_DESC( \ + block_size_idx, uint32_t, block_size, \ + arr_desc_block_sizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + elt1_idx, elt1_type, elt1, arr_desc_elt1s \ + , \ + TEMPLATE_DO_ARR_DESC( \ + elt2_idx, elt2_type, elt2, arr_desc_elt2s \ + , \ + void * input_data_ptr = input_ptr->data_ptr; \ + TEST_DO_VALID_BLOCKSIZE( \ + block_size, input_type, input_ptr, \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface( \ + input_data_ptr, elt1, elt2, block_size), \ + ref, ref_arg_interface( \ + input_data_ptr, elt1, elt2, block_size)); \ + compare_interface(block_size, output_type)))))); \ + return JTEST_TEST_PASSED; \ + } while (0) + +/** + * Template for tests that rely on two input buffers and a blocksize parameter. + * + * The two #ARR_DESC_t, input buffers are iterated through in parallel. The + * length of the first #ARR_DESC_t determines the length of the iteration. + */ +#define TEST_TEMPLATE_BUF2_BLK(arr_desc_inputs_a, \ + arr_desc_inputs_b, \ + arr_desc_block_sizes, \ + input_type, output_type, \ + fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + compare_interface) \ + do \ + { \ + /* Iterate over two input arrays in parallel.*/ \ + TEMPLATE_DO_ARR_DESC( \ + input_idx, ARR_DESC_t *, input_ptr, arr_desc_inputs_a \ + , \ + TEMPLATE_DO_ARR_DESC( \ + block_size_idx, uint32_t, block_size, arr_desc_block_sizes, \ + void * input_a_ptr = input_ptr->data_ptr; \ + void * input_b_ptr = ARR_DESC_ELT( \ + ARR_DESC_t *, input_idx, \ + &(arr_desc_inputs_b))->data_ptr; \ + \ + TEST_DO_VALID_BLOCKSIZE( \ + block_size, input_type, input_ptr \ + , \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface( \ + input_a_ptr, input_b_ptr, block_size), \ + ref, ref_arg_interface( \ + input_a_ptr, input_b_ptr, block_size)); \ + \ + compare_interface(block_size, output_type)))); \ + return JTEST_TEST_PASSED; \ + } while (0) + +/** + * Test template that uses a single element. + */ +#define TEST_TEMPLATE_ELT1(arr_desc_elts, \ + elt_type, output_type, \ + fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + compare_interface) \ + do \ + { \ + TEMPLATE_DO_ARR_DESC( \ + elt_idx, elt_type, elt, arr_desc_elts \ + , \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface( \ + elt), \ + ref, ref_arg_interface( \ + elt)); \ + /* Comparison interfaces typically accept */ \ + /* a block_size. Pass a dummy value 1.*/ \ + compare_interface(1, output_type)); \ + return JTEST_TEST_PASSED; \ + } while (0) + +/** + * Test template that iterates over two sets of elements in parallel. + * + * The length of the first set determines the number of iteratsions. + */ +#define TEST_TEMPLATE_ELT2(arr_desc_elts_a, \ + arr_desc_elts_b, \ + elt_a_type, elt_b_type, output_type, \ + fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + compare_interface) \ + do \ + { \ + TEMPLATE_DO_ARR_DESC( \ + elt_a_idx, elt_a_type, elt_a, arr_desc_elts_a \ + , \ + elt_b_type * elt_b = ARR_DESC_ELT( \ + elt_b_type, \ + elt_a_idx, \ + arr_desc_elts_b); \ + \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface( \ + elt_a, elt_b), \ + ref, ref_arg_interface( \ + elt_a, elt_b)); \ + /* Comparison interfaces typically accept */ \ + /* a block_size. Pass a dummy value 1.*/ \ + compare_interface(1, output_type)); \ + return JTEST_TEST_PASSED; \ + } while (0) + +/** + * Test template that uses an element and a block size. + */ +#define TEST_TEMPLATE_ELT1_BLK(arr_desc_elts, \ + arr_desc_block_sizes, \ + elt_type, output_type, \ + fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + compare_interface) \ + do \ + { \ + TEMPLATE_DO_ARR_DESC( \ + block_size_idx, uint32_t, block_size, \ + arr_desc_block_sizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + elt_idx, elt_type, elt, arr_desc_elts \ + , \ + JTEST_DUMP_STRF("Block Size: %d\n", \ + (int)block_size); \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface( \ + elt, block_size), \ + ref, ref_arg_interface( \ + elt, block_size)); \ + compare_interface(block_size, output_type))); \ + return JTEST_TEST_PASSED; \ + } while (0) + +#endif /* _TEST_TEMPLATES_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_templates.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_templates.h new file mode 100644 index 0000000..c6314b5 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_templates.h @@ -0,0 +1,181 @@ +#ifndef _TRANSFORM_TEMPLATES_H_ +#define _TRANSFORM_TEMPLATES_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "test_templates.h" +#include /* memcpy() */ + +/*--------------------------------------------------------------------------------*/ +/* Group Specific Templates */ +/*--------------------------------------------------------------------------------*/ + +/** + * Comparison SNR thresholds for the data types used in transform_tests. + */ +#define TRANSFORM_SNR_THRESHOLD_float32_t 90 +#define TRANSFORM_SNR_THRESHOLD_q31_t 90 +#define TRANSFORM_SNR_THRESHOLD_q15_t 30 + +#define DCT4_TRANSFORM_SNR_THRESHOLD_float32_t 80 +#define DCT4_TRANSFORM_SNR_THRESHOLD_q31_t 75 +#define DCT4_TRANSFORM_SNR_THRESHOLD_q15_t 11 + +/** + * Compare the outputs from the function under test and the reference + * function using SNR. + */ +#define TRANSFORM_SNR_COMPARE_INTERFACE(block_size, \ + output_type) \ + do \ + { \ + TEST_CONVERT_AND_ASSERT_SNR( \ + transform_fft_output_f32_ref, \ + (output_type *) transform_fft_output_ref, \ + transform_fft_output_f32_fut, \ + (output_type *) transform_fft_output_fut, \ + block_size, \ + output_type, \ + TRANSFORM_SNR_THRESHOLD_##output_type \ + ); \ + } while (0) + +/** + * Compare the outputs from the function under test and the reference + * function using SNR. + */ +#define DCT_TRANSFORM_SNR_COMPARE_INTERFACE(block_size, \ + output_type) \ + do \ + { \ + TEST_CONVERT_AND_ASSERT_SNR( \ + transform_fft_output_f32_ref, \ + (output_type *) transform_fft_output_ref, \ + transform_fft_output_f32_fut, \ + (output_type *) transform_fft_output_fut, \ + block_size, \ + output_type, \ + DCT4_TRANSFORM_SNR_THRESHOLD_##output_type \ + ); \ + } while (0) \ + +/** + * Specialization on #TRANSFORM_SNR_COMPARE_INTERFACE() to fix the block_size + * for complex datasets. + */ +#define TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE(block_size, output_type) \ + /* Complex numbers have two components*/ \ + TRANSFORM_SNR_COMPARE_INTERFACE(block_size * 2, output_type ) + +/** + * This macro copys data from the input_ptr into input arrays. + * + * Some functions modify their input data; in order to provide the same data to + * multiple tests, copies must be made so the changes from one function don't + * impact the others. + */ +#define TRANSFORM_COPY_INPUTS(input_ptr, \ + bytes) \ + do \ + { \ + memcpy( \ + transform_fft_input_fut, \ + input_ptr, \ + bytes); \ + memcpy( \ + transform_fft_input_ref, \ + input_ptr, \ + bytes); \ + } while (0) + +/** + * This macro copys data from the input_ptr into input arrays. It also creates + * symmetric input data for rfft inverse. + * + * The 4.534234f just makes the middle entry of the array semi random. It's + * actual value doesn't seem to matter much. + * + * Some functions modify their input data; in order to provide the same data to + * multiple tests, copies must be made so the changes from one function don't + * impact the others. + */ +#define TRANSFORM_PREPARE_INVERSE_INPUTS(input_ptr, \ + fftlen, input_type, bytes) \ + do \ + { \ + uint32_t i; \ + \ + memcpy( \ + transform_fft_input_fut, \ + input_ptr, \ + bytes); \ + \ + ((input_type*)transform_fft_input_fut)[1] = 0; \ + ((input_type*)transform_fft_input_fut)[fftlen + 0] = 0; \ + ((input_type*)transform_fft_input_fut)[fftlen + 1] = 0; \ + for(i=1;i>= 1; \ + *((type*)transform_fft_inplace_input_ref + i) >>= 1;} \ + } while (0) + +/** + * This macro copys data from the input_ptr into the in-place input arrays. + * + * Some functions modify their input data; in order to provide the same data to + * multiple tests, copies must be made so the changes from one function don't + * impact the others. + */ +#define TRANSFORM_PREPARE_INPLACE_INPUTS(input_ptr, \ + bytes) \ + do \ + { \ + memcpy( \ + transform_fft_inplace_input_fut, \ + input_ptr, \ + bytes); \ + memcpy( \ + transform_fft_inplace_input_ref, \ + input_ptr, \ + bytes); \ + } while (0) + + +#endif /* _TRANSFORM_TEMPLATES_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_test_data.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_test_data.h new file mode 100644 index 0000000..bda5e12 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_test_data.h @@ -0,0 +1,48 @@ +#ifndef _TRANSFORM_TEST_DATA_H_ +#define _TRANSFORM_TEST_DATA_H_ + +/*--------------------------------------------------------------------------------*/ +/* Includes */ +/*--------------------------------------------------------------------------------*/ + +#include "arr_desc.h" +#include "arm_math.h" + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +#define TRANSFORM_MAX_FFT_LEN 4096 +#define TRANFORM_BIGGEST_INPUT_TYPE float32_t + +/*--------------------------------------------------------------------------------*/ +/* Variable Declarations */ +/*--------------------------------------------------------------------------------*/ + +/* Lengths are multiplied by 2 to accomodate complex numbers*/ +extern float32_t transform_fft_output_fut[TRANSFORM_MAX_FFT_LEN * 2]; +extern float32_t transform_fft_output_ref[TRANSFORM_MAX_FFT_LEN * 2]; +extern float32_t transform_fft_input_fut[TRANSFORM_MAX_FFT_LEN * 2]; +extern float32_t transform_fft_input_ref[TRANSFORM_MAX_FFT_LEN * 2]; +extern float32_t transform_fft_output_f32_fut[TRANSFORM_MAX_FFT_LEN * 2]; +extern float32_t transform_fft_output_f32_ref[TRANSFORM_MAX_FFT_LEN * 2]; +extern float32_t * transform_fft_inplace_input_fut; +extern float32_t * transform_fft_inplace_input_ref; +extern float32_t transform_fft_f32_inputs[TRANSFORM_MAX_FFT_LEN * 2]; +extern q31_t transform_fft_q31_inputs[TRANSFORM_MAX_FFT_LEN * 2]; +extern q15_t * transform_fft_q15_inputs; +extern q15_t dct4_transform_fft_q15_inputs[TRANSFORM_MAX_FFT_LEN * 2]; + +/* FFT Lengths */ +ARR_DESC_DECLARE(transform_radix2_fftlens); +ARR_DESC_DECLARE(transform_radix4_fftlens); +ARR_DESC_DECLARE(transform_rfft_fftlens); +ARR_DESC_DECLARE(transform_rfft_fast_fftlens); +ARR_DESC_DECLARE(transform_dct_fftlens); + +/* CFFT Structs */ +ARR_DESC_DECLARE(transform_cfft_f32_structs); +ARR_DESC_DECLARE(transform_cfft_q31_structs); +ARR_DESC_DECLARE(transform_cfft_q15_structs); + +#endif /* _TRANSFORM_TEST_DATA_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_test_group.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_test_group.h new file mode 100644 index 0000000..c1c7c9e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_test_group.h @@ -0,0 +1,9 @@ +#ifndef _TRANSFORM_TEST_GROUP_H_ +#define _TRANSFORM_TEST_GROUP_H_ + +/*--------------------------------------------------------------------------------*/ +/* Declare Test Groups */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(transform_tests); + +#endif /* _TRANSFORM_TEST_GROUP_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_tests.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_tests.h new file mode 100644 index 0000000..874c83f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/transform_tests/transform_tests.h @@ -0,0 +1,13 @@ +#ifndef _TRANSFORM_TESTS_H_ +#define _TRANSFORM_TESTS_H_ + +/*--------------------------------------------------------------------------------*/ +/* Test/Group Declarations */ +/*--------------------------------------------------------------------------------*/ +JTEST_DECLARE_GROUP(cfft_tests); +JTEST_DECLARE_GROUP(cfft_family_tests); +JTEST_DECLARE_GROUP(dct4_tests); +JTEST_DECLARE_GROUP(rfft_tests); +JTEST_DECLARE_GROUP(rfft_fast_tests); + +#endif /* _TRANSFORM_TESTS_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/type_abbrev.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/type_abbrev.h new file mode 100644 index 0000000..5909124 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/inc/type_abbrev.h @@ -0,0 +1,37 @@ +#ifndef _TYPE_ABBREV_H_ +#define _TYPE_ABBREV_H_ + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +/** + * Expand the abbreviation for a type into the type itself. + */ +#define TYPE_FROM_ABBREV(abbrev) \ + TYPE_ABBREV_##abbrev \ + +/** + * Expand the type to an abbreviation for that type. + * + * Inverse of #TYPE_FROM_ABBREV(). + * + * @note Should be able to get a type back by writing. + * TYPE_FROM_ABBREV(ABBREV_FROM_TYPE(type)) + */ +#define ABBREV_FROM_TYPE(type) \ + TYPE_SUFFIX_##type + +#define TYPE_ABBREV_f64 float64_t +#define TYPE_ABBREV_f32 float32_t +#define TYPE_ABBREV_q31 q31_t +#define TYPE_ABBREV_q15 q15_t +#define TYPE_ABBREV_q7 q7_t + +#define TYPE_SUFFIX_float64_t f64 +#define TYPE_SUFFIX_float32_t f32 +#define TYPE_SUFFIX_q31_t q31 +#define TYPE_SUFFIX_q15_t q15 +#define TYPE_SUFFIX_q7_t q7 + +#endif /* _TYPE_ABBREV_H_ */ diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/Retarget.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/Retarget.c new file mode 100644 index 0000000..ffac3df --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/Retarget.c @@ -0,0 +1,52 @@ +/*---------------------------------------------------------------------------- + * Name: Retarget.c + * Purpose: 'Retarget' layer for target-dependent low level functions + * Note(s): + *---------------------------------------------------------------------------- + * This file is part of the uVision/ARM development tools. + * This software may only be used under the terms of a valid, current, + * end user licence from KEIL for a compatible version of KEIL software + * development tools. Nothing else gives you the right to use this software. + * + * This software is supplied "AS IS" without warranties of any kind. + * + * Copyright (c) 2011 Keil - An ARM Company. All rights reserved. + *----------------------------------------------------------------------------*/ + +#include +#include +#include "Serial.h" + +#pragma import(__use_no_semihosting_swi) + + + +struct __FILE { int handle; /* Add whatever you need here */ }; +FILE __stdout; +FILE __stdin; + + +int fputc(int c, FILE *f) { + return (SER_PutChar(c)); +} + + +int fgetc(FILE *f) { + return (SER_GetChar()); +} + + +int ferror(FILE *f) { + /* Your implementation of ferror */ + return EOF; +} + + +void _ttywrch(int c) { + SER_PutChar(c); +} + + +void _sys_exit(int return_code) { +label: goto label; /* endless loop */ +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/startup_armv6-m.s b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/startup_armv6-m.s new file mode 100644 index 0000000..fa814eb --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/startup_armv6-m.s @@ -0,0 +1,195 @@ +;/* File: startup_armv6-m.s +; * Purpose: startup file for armv7-m architecture devices. +; * Should be used with ARMCC +; * Version: V2.00 +; * Date: 16 November 2015 +; * +; */ +;/* Copyright (c) 2011 - 2014 ARM LIMITED +; +; All rights reserved. +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions are met: +; - Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; - Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; - Neither the name of ARM nor the names of its contributors may be used +; to endorse or promote products derived from this software without +; specific prior written permission. +; * +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +; ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE +; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +; POSSIBILITY OF SUCH DAMAGE. +; ---------------------------------------------------------------------------*/ +;/* +; //-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +;*/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000C00 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + BKPT #0 + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + BKPT #0 + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + + ALIGN + +; User Initial Stack & Heap + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + +;/* +; __user_setup_stackheap() returns the: +; - heap base in r0 (if the program uses the heap) +; - stack base in sp +; - heap limit in r2 (if the program uses the heap and uses two-region memory). +; */ + EXPORT __user_setup_stackheap + +__user_setup_stackheap PROC + LDR R0, = __initial_sp + MOV SP, R0 + IF Heap_Size > 0 + LDR R2, = __heap_limit + LDR R0, = __heap_base + ELSE + MOV R0, #0 + MOV R2, #0 + ENDIF + BX LR + ENDP + + +;/* +;__user_initial_stackheap() returns the: +; - heap base in r0 +; - stack base in r1, that is, the highest address in the stack region +; - heap limit in r2 +; - stack limit in r3, that is, the lowest address in the stack region. +; */ +; +;/* DEPRICATED +; EXPORT __user_initial_stackheap +; +;__user_initial_stackheap PROC +; LDR R0, = Heap_Mem +; LDR R1, =(Stack_Mem + Stack_Size) +; LDR R2, = (Heap_Mem + Heap_Size) +; LDR R3, = Stack_Mem +; BX LR +; ENDP +; */ + + ALIGN + + ENDIF + + + END diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/startup_armv7-m.s b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/startup_armv7-m.s new file mode 100644 index 0000000..899f2de --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCC/startup_armv7-m.s @@ -0,0 +1,218 @@ +;/* File: startup_armv7-m.s +; * Purpose: startup file for armv7-m architecture devices. +; * Should be used with ARMCC +; * Version: V2.00 +; * Date: 16 November 2015 +; * +; */ +;/* Copyright (c) 2011 - 2014 ARM LIMITED +; +; All rights reserved. +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions are met: +; - Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; - Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; - Neither the name of ARM nor the names of its contributors may be used +; to endorse or promote products derived from this software without +; specific prior written permission. +; * +; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +; ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE +; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +; POSSIBILITY OF SUCH DAMAGE. +; ---------------------------------------------------------------------------*/ +;/* +; //-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +;*/ + + +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x00000400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x00000C00 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + + +; Reset Handler + +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + BKPT #0 + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + BKPT #0 + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + BKPT #0 + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + BKPT #0 + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + BKPT #0 + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + + ALIGN + +; User Initial Stack & Heap + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + +;/* +; __user_setup_stackheap() returns the: +; - heap base in r0 (if the program uses the heap) +; - stack base in sp +; - heap limit in r2 (if the program uses the heap and uses two-region memory). +; */ + EXPORT __user_setup_stackheap + +__user_setup_stackheap PROC + LDR R0, = __initial_sp + MOV SP, R0 + IF Heap_Size > 0 + LDR R2, = __heap_limit + LDR R0, = __heap_base + ELSE + MOV R0, #0 + MOV R2, #0 + ENDIF + BX LR + ENDP + + +;/* +;__user_initial_stackheap() returns the: +; - heap base in r0 +; - stack base in r1, that is, the highest address in the stack region +; - heap limit in r2 +; - stack limit in r3, that is, the lowest address in the stack region. +; */ +; +;/* DEPRICATED +; EXPORT __user_initial_stackheap +; +;__user_initial_stackheap PROC +; LDR R0, = Heap_Mem +; LDR R1, =(Stack_Mem + Stack_Size) +; LDR R2, = (Heap_Mem + Heap_Size) +; LDR R3, = Stack_Mem +; BX LR +; ENDP +; */ + + ALIGN + + ENDIF + + + END diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCLANG/startup_armv6-m.S b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCLANG/startup_armv6-m.S new file mode 100644 index 0000000..2e60478 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCLANG/startup_armv6-m.S @@ -0,0 +1,203 @@ +/* File: startup_armv6-m.S + * Purpose: startup file for armv6-m architecture devices. + * Should be used with ARMCLANG + * Version: V2.00 + * Date: 16 November 2015 + * + */ +/* Copyright (c) 2011 - 2015 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ +/* + ;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +*/ + + + .syntax unified + .arch armv6-m + +/* .eabi_attribute Tag_ABI_align8_preserved,1 www.support.code-red-tech.com/CodeRedWiki/Preserve8 */ +.eabi_attribute 25, 1 /* Tag_ABI_align_preserved */ + + +/* + ; Stack Configuration + ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> + ; +*/ + .equ Stack_Size, 0x00000400 + + .section STACK, "w" + .align 3 + .globl __StackTop + .globl __StackLimit +__StackLimit: + .space Stack_Size +__StackTop: /* formerly known as __initial_sp */ + + +/* + ; Heap Configuration + ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> + ; +*/ + .equ Heap_Size, 0x00000C00 + + .section HEAP, "w" + .align 3 + .globl __HeapBase + .globl __HeapLimit +__HeapBase: + .if Heap_Size + .space Heap_Size + .endif +__HeapLimit: + + + .section RESET, "x" + .align 2 + .globl __Vectors + .globl __Vectors_End + .globl __Vectors_Size +__Vectors: + .long __StackTop /* Top of Stack */ + .long Reset_Handler /* Reset Handler */ + .long NMI_Handler /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ +__Vectors_End: + + .equ __Vectors_Size, __Vectors_End - __Vectors + + + .text + .thumb + .align 2 + + .globl Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function + .thumb_func +Reset_Handler: + bl SystemInit + bl __main + + .globl NMI_Handler + .weak NMI_Handler + .type NMI_Handler, %function + .thumb_func +NMI_Handler: + bkpt #0 + b . + + .globl HardFault_Handler + .weak HardFault_Handler + .type HardFault_Handler, %function + .thumb_func +HardFault_Handler: + bkpt #0 + b . + + .globl SVC_Handler + .weak SVC_Handler + .type SVC_Handler, %function + .thumb_func +SVC_Handler: + bkpt #0 + b . + + .globl PendSV_Handler + .weak PendSV_Handler + .type PendSV_Handler, %function + .thumb_func +PendSV_Handler: + bkpt #0 + b . + + .globl SysTick_Handler + .weak SysTick_Handler + .type SysTick_Handler, %function + .thumb_func +SysTick_Handler: + bkpt #0 + b . + + + .global __use_two_region_memory + +/* + __user_setup_stackheap() returns the: + - heap base in r0 (if the program uses the heap) + - stack base in sp + - heap limit in r2 (if the program uses the heap and uses two-region memory). + */ + .globl __user_setup_stackheap + .type __user_setup_stackheap, %function + .thumb_func +__user_setup_stackheap: + ldr r0, =__StackTop + mov sp, r0 + .if Heap_Size + ldr r0, =__HeapBase + ldr r2, =__HeapLimit + .else + mov r0, #0 + mov r2, #0 + .endif + bx lr + + +/* +__user_initial_stackheap() returns the: + - heap base in r0 + - stack base in r1, that is, the highest address in the stack region + - heap limit in r2 + - stack limit in r3, that is, the lowest address in the stack region. + */ +/* DEPRICATED + .globl __user_initial_stackheap + .type __user_initial_stackheap, %function + .thumb_func +__user_initial_stackheap: + ldr r0, = __HeapBase + ldr r1, = __StackTop + ldr r2, = __HeapLimit + ldr r3, = __StackLimit + bx lr +*/ + + .end diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCLANG/startup_armv7-m.S b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCLANG/startup_armv7-m.S new file mode 100644 index 0000000..93ba4a9 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCLANG/startup_armv7-m.S @@ -0,0 +1,235 @@ +/* File: startup_armv7-m.S + * Purpose: startup file for armv7-m architecture devices. + * Should be used with ARMCLANG + * Version: V2.00 + * Date: 16 November 2015 + * + */ +/* Copyright (c) 2011 - 2015 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ +/* + ;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ +*/ + + + .syntax unified + .arch armv6-m + +/* .eabi_attribute Tag_ABI_align8_preserved,1 www.support.code-red-tech.com/CodeRedWiki/Preserve8 */ +.eabi_attribute 25, 1 /* Tag_ABI_align_preserved */ + + +/* + ; Stack Configuration + ; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> + ; +*/ + .equ Stack_Size, 0x00000400 + + .section STACK, "w" + .align 3 + .globl __StackTop + .globl __StackLimit +__StackLimit: + .space Stack_Size +__StackTop: /* formerly known as __initial_sp */ + + +/* + ; Heap Configuration + ; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> + ; +*/ + .equ Heap_Size, 0x00000C00 + + .section HEAP, "w" + .align 3 + .globl __HeapBase + .globl __HeapLimit +__HeapBase: + .if Heap_Size + .space Heap_Size + .endif +__HeapLimit: + + + .section RESET, "x" + .align 2 + .globl __Vectors + .globl __Vectors_End + .globl __Vectors_Size +__Vectors: + .long __StackTop /* Top of Stack */ + .long Reset_Handler /* Reset Handler */ + .long NMI_Handler /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ +__Vectors_End: + + .equ __Vectors_Size, __Vectors_End - __Vectors + + + .text + .thumb + .align 2 + + .globl Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function + .thumb_func +Reset_Handler: + bl SystemInit + bl __main + + .globl NMI_Handler + .weak NMI_Handler + .type NMI_Handler, %function + .thumb_func +NMI_Handler: + bkpt #0 + b . + + .globl HardFault_Handler + .weak HardFault_Handler + .type HardFault_Handler, %function + .thumb_func +HardFault_Handler: + bkpt #0 + b . + + .globl MemManage_Handler + .weak MemManage_Handler + .type MemManage_Handler, %function + .thumb_func +MemManage_Handler: + bkpt #0 + b . + + .globl BusFault_Handler + .weak BusFault_Handler + .type BusFault_Handler, %function + .thumb_func +BusFault_Handler: + bkpt #0 + b . + + .globl UsageFault_Handler + .weak UsageFault_Handler + .type UsageFault_Handler, %function + .thumb_func +UsageFault_Handler: + bkpt #0 + b . + + .globl SVC_Handler + .weak SVC_Handler + .type SVC_Handler, %function + .thumb_func +SVC_Handler: + bkpt #0 + b . + + .globl DebugMon_Handler + .weak DebugMon_Handler + .type DebugMon_Handler, %function + .thumb_func +DebugMon_Handler: + bkpt #0 + b . + + .globl PendSV_Handler + .weak PendSV_Handler + .type PendSV_Handler, %function + .thumb_func +PendSV_Handler: + bkpt #0 + b . + + .globl SysTick_Handler + .weak SysTick_Handler + .type SysTick_Handler, %function + .thumb_func +SysTick_Handler: + bkpt #0 + b . + + + .global __use_two_region_memory + +/* + __user_setup_stackheap() returns the: + - heap base in r0 (if the program uses the heap) + - stack base in sp + - heap limit in r2 (if the program uses the heap and uses two-region memory). + */ + .globl __user_setup_stackheap + .type __user_setup_stackheap, %function + .thumb_func +__user_setup_stackheap: + ldr r0, =__StackTop + mov sp, r0 + .if Heap_Size + ldr r0, =__HeapBase + ldr r2, =__HeapLimit + .else + mov r0, #0 + mov r2, #0 + .endif + bx lr + + +/* +__user_initial_stackheap() returns the: + - heap base in r0 + - stack base in r1, that is, the highest address in the stack region + - heap limit in r2 + - stack limit in r3, that is, the lowest address in the stack region. + */ +/* DEPRICATED + .globl __user_initial_stackheap + .type __user_initial_stackheap, %function + .thumb_func +__user_initial_stackheap: + ldr r0, = __HeapBase + ldr r1, = __StackTop + ldr r2, = __HeapLimit + ldr r3, = __StackLimit + bx lr +*/ + + .end diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/Retarget.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/Retarget.c new file mode 100644 index 0000000..0ab6c13 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/Retarget.c @@ -0,0 +1,106 @@ +/*---------------------------------------------------------------------------- + * Name: Retarget.c + * Purpose: 'Retarget' layer for target-dependent low level functions + * Note(s): + *---------------------------------------------------------------------------- + * This file is part of the uVision/ARM development tools. + * This software may only be used under the terms of a valid, current, + * end user licence from KEIL for a compatible version of KEIL software + * development tools. Nothing else gives you the right to use this software. + * + * This software is supplied "AS IS" without warranties of any kind. + * + * Copyright (c) 2012 Keil - An ARM Company. All rights reserved. + *----------------------------------------------------------------------------*/ + +#include +#include +#include + +int SER_PutChar (int c) { + + return (c); +} + +int SER_GetChar (void) { + + return (-1); +} + +/*-- GCC - Newlib runtime support --------------------------------------------*/ + +extern int __HeapBase; +extern int __HeapLimit; + +int _open (const char * path, int flags, ...) +{ + return (-1); +} + +int _close (int fd) +{ + return (-1); +} + +int _lseek (int fd, int ptr, int dir) +{ + return (0); +} + +int __attribute__((weak)) _fstat (int fd, struct stat * st) +{ + memset (st, 0, sizeof (* st)); + st->st_mode = S_IFCHR; + return (0); +} + +int _isatty (int fd) +{ + return (1); +} + +int _read (int fd, char * ptr, int len) +{ + char c; + int i; + + for (i = 0; i < len; i++) + { + c = SER_GetChar(); + if (c == 0x0D) break; + *ptr++ = c; + SER_PutChar(c); + } + return (len - i); +} + +int _write (int fd, char * ptr, int len) +{ + int i; + + for (i = 0; i < len; i++) SER_PutChar (*ptr++); + return (i); +} + +caddr_t _sbrk (int incr) +{ + static char * heap; + char * prev_heap; + + if (heap == NULL) + { + heap = (char *)&__HeapBase; + } + + prev_heap = heap; + + if ((heap + incr) > (char *)&__HeapLimit) + { + errno = ENOMEM; + return (caddr_t) -1; + } + + heap += incr; + + return (caddr_t) prev_heap; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/startup_armv6-m.S b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/startup_armv6-m.S new file mode 100644 index 0000000..c928912 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/startup_armv6-m.S @@ -0,0 +1,263 @@ +/* File: startup_armv6-m.S + * Purpose: startup file for armv6-m architecture devices. + * Should be used with GCC for ARM Embedded Processors + * Version: V2.00 + * Date: 16 November 2015 + * + */ +/* Copyright (c) 2011 - 2015 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + + .syntax unified + .arch armv6-m + + .section .stack + .align 3 +#ifdef __STACK_SIZE + .equ Stack_Size, __STACK_SIZE +#else + .equ Stack_Size, 0x00000400 +#endif + .globl __StackTop + .globl __StackLimit +__StackLimit: + .space Stack_Size + .size __StackLimit, . - __StackLimit +__StackTop: + .size __StackTop, . - __StackTop + + .section .heap + .align 3 +#ifdef __HEAP_SIZE + .equ Heap_Size, __HEAP_SIZE +#else + .equ Heap_Size, 0x00000C00 +#endif + .globl __HeapBase + .globl __HeapLimit +__HeapBase: + .if Heap_Size + .space Heap_Size + .endif + .size __HeapBase, . - __HeapBase +__HeapLimit: + .size __HeapLimit, . - __HeapLimit + + .section .vectors + .align 2 + .globl __Vectors +__Vectors: + .long __StackTop /* Top of Stack */ + .long Reset_Handler /* Reset Handler */ + .long NMI_Handler /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + .size __Vectors, . - __Vectors + + .text + .thumb + .thumb_func + .align 1 + .globl Reset_Handler + .type Reset_Handler, %function +Reset_Handler: +/* Firstly it copies data from read only memory to RAM. There are two schemes + * to copy. One can copy more than one sections. Another can only copy + * one section. The former scheme needs more instructions and read-only + * data to implement than the latter. + * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */ + +#ifdef __STARTUP_COPY_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of triplets, each of which specify: + * offset 0: LMA of start of a section to copy from + * offset 4: VMA of start of a section to copy to + * offset 8: size of the section to copy. Must be multiply of 4 + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r4, =__copy_table_start__ + ldr r5, =__copy_table_end__ + +.L_loop0: + cmp r4, r5 + bge .L_loop0_done + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r3, [r4, #8] + +.L_loop0_0: + subs r3, #4 + blt .L_loop0_0_done + ldr r0, [r1, r3] + str r0, [r2, r3] + b .L_loop0_0 + +.L_loop0_0_done: + adds r4, #12 + b .L_loop0 + +.L_loop0_done: +#else +/* Single section scheme. + * + * The ranges of copy from/to are specified by following symbols + * __etext: LMA of start of the section to copy from. Usually end of text + * __data_start__: VMA of start of the section to copy to + * __data_end__: VMA of end of the section to copy to + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__etext + ldr r2, =__data_start__ + ldr r3, =__data_end__ + + subs r3, r2 + ble .L_loop1_done + +.L_loop1: + subs r3, #4 + ldr r0, [r1,r3] + str r0, [r2,r3] + bgt .L_loop1 + +.L_loop1_done: +#endif /*__STARTUP_COPY_MULTIPLE */ + +/* This part of work usually is done in C library startup code. Otherwise, + * define this macro to enable it in this startup. + * + * There are two schemes too. One can clear multiple BSS sections. Another + * can only clear one section. The former is more size expensive than the + * latter. + * + * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former. + * Otherwise efine macro __STARTUP_CLEAR_BSS to choose the later. + */ +#ifdef __STARTUP_CLEAR_BSS_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of tuples specifying: + * offset 0: Start of a BSS section + * offset 4: Size of this BSS section. Must be multiply of 4 + */ + ldr r3, =__zero_table_start__ + ldr r4, =__zero_table_end__ + +.L_loop2: + cmp r3, r4 + bge .L_loop2_done + ldr r1, [r3] + ldr r2, [r3, #4] + movs r0, 0 + +.L_loop2_0: + subs r2, #4 + blt .L_loop2_0_done + str r0, [r1, r2] + b .L_loop2_0 +.L_loop2_0_done: + + adds r3, #8 + b .L_loop2 +.L_loop2_done: +#elif defined (__STARTUP_CLEAR_BSS) +/* Single BSS section scheme. + * + * The BSS section is specified by following symbols + * __bss_start__: start of the BSS section. + * __bss_end__: end of the BSS section. + * + * Both addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__bss_start__ + ldr r2, =__bss_end__ + + movs r0, 0 + + subs r2, r1 + ble .L_loop3_done + +.L_loop3: + subs r2, #4 + str r0, [r1, r2] + bgt .L_loop3 +.L_loop3_done: +#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */ + +#ifndef __NO_SYSTEM_INIT + bl SystemInit +#endif + +#ifndef __START +#define __START _start +#endif + bl __START + + .pool + .size Reset_Handler, . - Reset_Handler + + .align 1 + .thumb_func + .weak Default_Handler + .type Default_Handler, %function +Default_Handler: + bkpt #0 + b . + .size Default_Handler, . - Default_Handler + +/* Macro to define default handlers. Default handler + * will be weak symbol and just dead loops. They can be + * overwritten by other handlers */ + .macro def_irq_handler handler_name + .weak \handler_name + .set \handler_name, Default_Handler + .endm + + def_irq_handler NMI_Handler + def_irq_handler HardFault_Handler + def_irq_handler SVC_Handler + def_irq_handler PendSV_Handler + def_irq_handler SysTick_Handler + + .end diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/startup_armv7-m.S b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/startup_armv7-m.S new file mode 100644 index 0000000..2320877 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/GCC/startup_armv7-m.S @@ -0,0 +1,257 @@ +/* File: startup_armv7-m.S + * Purpose: startup file for armv7-m architecture devices. + * Should be used with GCC for ARM Embedded Processors + * Version: V2.00 + * Date: 16 November 2015 + * + */ +/* Copyright (c) 2011 - 2015 ARM LIMITED + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of ARM nor the names of its contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + * + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + ---------------------------------------------------------------------------*/ + + + .syntax unified + .arch armv7-m + + .section .stack + .align 3 +#ifdef __STACK_SIZE + .equ Stack_Size, __STACK_SIZE +#else + .equ Stack_Size, 0x00000400 +#endif + .globl __StackTop + .globl __StackLimit +__StackLimit: + .space Stack_Size + .size __StackLimit, . - __StackLimit +__StackTop: + .size __StackTop, . - __StackTop + + .section .heap + .align 3 +#ifdef __HEAP_SIZE + .equ Heap_Size, __HEAP_SIZE +#else + .equ Heap_Size, 0x00000C00 +#endif + .globl __HeapBase + .globl __HeapLimit +__HeapBase: + .if Heap_Size + .space Heap_Size + .endif + .size __HeapBase, . - __HeapBase +__HeapLimit: + .size __HeapLimit, . - __HeapLimit + + .section .vectors + .align 2 + .globl __Vectors +__Vectors: + .long __StackTop /* Top of Stack */ + .long Reset_Handler /* Reset Handler */ + .long NMI_Handler /* NMI Handler */ + .long HardFault_Handler /* Hard Fault Handler */ + .long MemManage_Handler /* MPU Fault Handler */ + .long BusFault_Handler /* Bus Fault Handler */ + .long UsageFault_Handler /* Usage Fault Handler */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long 0 /* Reserved */ + .long SVC_Handler /* SVCall Handler */ + .long DebugMon_Handler /* Debug Monitor Handler */ + .long 0 /* Reserved */ + .long PendSV_Handler /* PendSV Handler */ + .long SysTick_Handler /* SysTick Handler */ + + .size __Vectors, . - __Vectors + + .text + .thumb + .thumb_func + .align 2 + .globl Reset_Handler + .type Reset_Handler, %function +Reset_Handler: +/* Firstly it copies data from read only memory to RAM. There are two schemes + * to copy. One can copy more than one sections. Another can only copy + * one section. The former scheme needs more instructions and read-only + * data to implement than the latter. + * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */ + +#ifdef __STARTUP_COPY_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of triplets, each of which specify: + * offset 0: LMA of start of a section to copy from + * offset 4: VMA of start of a section to copy to + * offset 8: size of the section to copy. Must be multiply of 4 + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r4, =__copy_table_start__ + ldr r5, =__copy_table_end__ + +.L_loop0: + cmp r4, r5 + bge .L_loop0_done + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r3, [r4, #8] + +.L_loop0_0: + subs r3, #4 + ittt ge + ldrge r0, [r1, r3] + strge r0, [r2, r3] + bge .L_loop0_0 + + adds r4, #12 + b .L_loop0 + +.L_loop0_done: +#else +/* Single section scheme. + * + * The ranges of copy from/to are specified by following symbols + * __etext: LMA of start of the section to copy from. Usually end of text + * __data_start__: VMA of start of the section to copy to + * __data_end__: VMA of end of the section to copy to + * + * All addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__etext + ldr r2, =__data_start__ + ldr r3, =__data_end__ + +.L_loop1: + cmp r2, r3 + ittt lt + ldrlt r0, [r1], #4 + strlt r0, [r2], #4 + blt .L_loop1 +#endif /*__STARTUP_COPY_MULTIPLE */ + +/* This part of work usually is done in C library startup code. Otherwise, + * define this macro to enable it in this startup. + * + * There are two schemes too. One can clear multiple BSS sections. Another + * can only clear one section. The former is more size expensive than the + * latter. + * + * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former. + * Otherwise efine macro __STARTUP_CLEAR_BSS to choose the later. + */ +#ifdef __STARTUP_CLEAR_BSS_MULTIPLE +/* Multiple sections scheme. + * + * Between symbol address __copy_table_start__ and __copy_table_end__, + * there are array of tuples specifying: + * offset 0: Start of a BSS section + * offset 4: Size of this BSS section. Must be multiply of 4 + */ + ldr r3, =__zero_table_start__ + ldr r4, =__zero_table_end__ + +.L_loop2: + cmp r3, r4 + bge .L_loop2_done + ldr r1, [r3] + ldr r2, [r3, #4] + movs r0, 0 + +.L_loop2_0: + subs r2, #4 + itt ge + strge r0, [r1, r2] + bge .L_loop2_0 + + adds r3, #8 + b .L_loop2 +.L_loop2_done: +#elif defined (__STARTUP_CLEAR_BSS) +/* Single BSS section scheme. + * + * The BSS section is specified by following symbols + * __bss_start__: start of the BSS section. + * __bss_end__: end of the BSS section. + * + * Both addresses must be aligned to 4 bytes boundary. + */ + ldr r1, =__bss_start__ + ldr r2, =__bss_end__ + + movs r0, 0 +.L_loop3: + cmp r1, r2 + itt lt + strlt r0, [r1], #4 + blt .L_loop3 +#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */ + +#ifndef __NO_SYSTEM_INIT + bl SystemInit +#endif + +#ifndef __START +#define __START _start +#endif + bl __START + + .pool + .size Reset_Handler, . - Reset_Handler + + .align 1 + .thumb_func + .weak Default_Handler + .type Default_Handler, %function +Default_Handler: + bkpt #0 + b . + .size Default_Handler, . - Default_Handler + +/* Macro to define default handlers. Default handler + * will be weak symbol and just dead loops. They can be + * overwritten by other handlers */ + .macro def_irq_handler handler_name + .weak \handler_name + .set \handler_name, Default_Handler + .endm + + def_irq_handler NMI_Handler + def_irq_handler HardFault_Handler + def_irq_handler MemManage_Handler + def_irq_handler BusFault_Handler + def_irq_handler UsageFault_Handler + def_irq_handler SVC_Handler + def_irq_handler DebugMon_Handler + def_irq_handler PendSV_Handler + def_irq_handler SysTick_Handler + + .end diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/startup_generic.S b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/startup_generic.S new file mode 100644 index 0000000..1826a78 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/startup_generic.S @@ -0,0 +1,62 @@ + +#if defined (__CC_ARM) + #if (defined (ARM_MATH_CM0)) + #include "ARMCC\startup_armv6-m.s" + #elif (defined (ARM_MATH_CM0P)) + #include "ARMCC\startup_armv6-m.s" + #elif (defined (ARM_MATH_CM3)) + #include "ARMCC\startup_armv7-m.s" + #elif (defined (ARM_MATH_CM4)) + #include "ARMCC\startup_armv7-m.s" + #elif (defined (ARM_MATH_CM7)) + #include "ARMCC\startup_armv7-m.s" + #elif (defined (ARM_MATH_ARMV8MBL)) + #include "ARMCC\startup_armv6-m.s" + #elif (defined (ARM_MATH_ARMV8MML)) + #include "ARMCC\startup_armv7-m.s" + #else + #error "No appropriate startup file found!" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if (defined (ARM_MATH_CM0)) + #include "ARMCLANG\startup_armv6-m.S" + #elif (defined (ARM_MATH_CM0P)) + #include "ARMCLANG\startup_armv6-m.S" + #elif (defined (ARM_MATH_CM3)) + #include "ARMCLANG\startup_armv7-m.S" + #elif (defined (ARM_MATH_CM4)) + #include "ARMCLANG\startup_armv7-m.S" + #elif (defined (ARM_MATH_CM7)) + #include "ARMCLANG\startup_armv7-m.S" + #elif (defined (ARM_MATH_ARMV8MBL)) + #include "ARMCLANG\startup_armv6-m.S" + #elif (defined (ARM_MATH_ARMV8MML)) + #include "ARMCLANG\startup_armv7-m.S" + #else + #error "No appropriate startup file found!" + #endif + +#elif defined (__GNUC__) + #if (defined (ARM_MATH_CM0)) + #include "GCC\startup_armv6-m.S" + #elif (defined (ARM_MATH_CM0P)) + #include "GCC\startup_armv6-m.S" + #elif (defined (ARM_MATH_CM3)) + #include "GCC\startup_armv7-m.S" + #elif (defined (ARM_MATH_CM4)) + #include "GCC\startup_armv7-m.S" + #elif (defined (ARM_MATH_CM7)) + #include "GCC\startup_armv7-m.S" + #elif (defined (ARM_MATH_ARMV8MBL)) + #include "GCC\startup_armv6-m.S" + #elif (defined (ARM_MATH_ARMV8MML)) + #include "GCC\startup_armv7-m.S" + #else + #error "No appropriate startup file found!" + #endif + +#else + #error "Compiler not supported!" +#endif + diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM0.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM0.c new file mode 100644 index 0000000..b272255 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM0.c @@ -0,0 +1,56 @@ +/**************************************************************************//** + * @file system_ARMCM0.c + * @brief CMSIS Device System Source File for + * ARMCM0 Device Series + * @version V5.00 + * @date 07. September 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ARMCM0.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL ( 5000000UL) /* Oscillator frequency */ + +#define SYSTEM_CLOCK (5U * XTAL) + + +/*---------------------------------------------------------------------------- + System Core Clock Variable + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = SYSTEM_CLOCK; + + +/*---------------------------------------------------------------------------- + System Core Clock update function + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ +void SystemInit (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM23.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM23.c new file mode 100644 index 0000000..791ee34 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM23.c @@ -0,0 +1,82 @@ +/**************************************************************************//** + * @file system_ARMCM23.c + * @brief CMSIS Device System Source File for + * ARMCM23 Device Series + * @version V5.00 + * @date 21. October 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined (ARMCM23) + #include "ARMCM23.h" +#elif defined (ARMCM23_TZ) + #include "ARMCM23_TZ.h" + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #include "partition_ARMCM23.h" + #endif +#else + #error device not specified! +#endif + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL ( 5000000UL) /* Oscillator frequency */ + +#define SYSTEM_CLOCK (5U * XTAL) + + +/*---------------------------------------------------------------------------- + Externals + *----------------------------------------------------------------------------*/ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + extern uint32_t __Vectors; +#endif + +/*---------------------------------------------------------------------------- + System Core Clock Variable + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = SYSTEM_CLOCK; + + +/*---------------------------------------------------------------------------- + System Core Clock update function + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ +void SystemInit (void) +{ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + SCB->VTOR = (uint32_t) &__Vectors; +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + TZ_SAU_Setup(); +#endif + + SystemCoreClock = SYSTEM_CLOCK; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM3.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM3.c new file mode 100644 index 0000000..2544c43 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM3.c @@ -0,0 +1,68 @@ +/**************************************************************************//** + * @file system_ARMCM3.c + * @brief CMSIS Device System Source File for + * ARMCM3 Device Series + * @version V5.00 + * @date 07. September 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ARMCM3.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL ( 5000000UL) /* Oscillator frequency */ + +#define SYSTEM_CLOCK (5U * XTAL) + + +/*---------------------------------------------------------------------------- + Externals + *----------------------------------------------------------------------------*/ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + extern uint32_t __Vectors; +#endif + +/*---------------------------------------------------------------------------- + System Core Clock Variable + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = SYSTEM_CLOCK; + + +/*---------------------------------------------------------------------------- + System Core Clock update function + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ +void SystemInit (void) +{ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + SCB->VTOR = (uint32_t) &__Vectors; +#endif + + SystemCoreClock = SYSTEM_CLOCK; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM33.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM33.c new file mode 100644 index 0000000..287119c --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM33.c @@ -0,0 +1,99 @@ +/**************************************************************************//** + * @file system_ARMCM33.c + * @brief CMSIS Device System Source File for + * ARMCM33 Device Series + * @version V5.00 + * @date 02. November 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined (ARMCM33) + #include "ARMCM33.h" +#elif defined (ARMCM33_TZ) + #include "ARMCM33_TZ.h" + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #include "partition_ARMCM33.h" + #endif +#elif defined (ARMCM33_DSP_FP) + #include "ARMCM33_DSP_FP.h" +#elif defined (ARMCM33_DSP_FP_TZ) + #include "ARMCM33_DSP_FP_TZ.h" + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #include "partition_ARMCM33.h" + #endif +#else + #error device not specified! +#endif + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL ( 5000000UL) /* Oscillator frequency */ + +#define SYSTEM_CLOCK (5U * XTAL) + + +/*---------------------------------------------------------------------------- + Externals + *----------------------------------------------------------------------------*/ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + extern uint32_t __Vectors; +#endif + +/*---------------------------------------------------------------------------- + System Core Clock Variable + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = SYSTEM_CLOCK; + + +/*---------------------------------------------------------------------------- + System Core Clock update function + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ +void SystemInit (void) +{ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + SCB->VTOR = (uint32_t) &__Vectors; +#endif + +#if defined (__FPU_USED) && (__FPU_USED == 1U) + SCB->CPACR |= ((3U << 10U*2U) | /* set CP10 Full Access */ + (3U << 11U*2U) ); /* set CP11 Full Access */ +#endif + +#ifdef UNALIGNED_SUPPORT_DISABLE + SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk; +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + TZ_SAU_Setup(); +#endif + + SystemCoreClock = SYSTEM_CLOCK; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM4.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM4.c new file mode 100644 index 0000000..cea212e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM4.c @@ -0,0 +1,83 @@ +/**************************************************************************//** + * @file system_ARMCM4.c + * @brief CMSIS Device System Source File for + * ARMCM4 Device Series + * @version V5.00 + * @date 07. September 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined (ARMCM4) + #include "ARMCM4.h" +#elif defined (ARMCM4_FP) + #include "ARMCM4_FP.h" +#else + #error device not specified! +#endif + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL ( 5000000UL) /* Oscillator frequency */ + +#define SYSTEM_CLOCK (5U * XTAL) + + +/*---------------------------------------------------------------------------- + Externals + *----------------------------------------------------------------------------*/ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + extern uint32_t __Vectors; +#endif + +/*---------------------------------------------------------------------------- + System Core Clock Variable + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = SYSTEM_CLOCK; + + +/*---------------------------------------------------------------------------- + System Core Clock update function + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ +void SystemInit (void) +{ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + SCB->VTOR = (uint32_t) &__Vectors; +#endif + +#if defined (__FPU_USED) && (__FPU_USED == 1U) + SCB->CPACR |= ((3U << 10U*2U) | /* set CP10 Full Access */ + (3U << 11U*2U) ); /* set CP11 Full Access */ +#endif + +#ifdef UNALIGNED_SUPPORT_DISABLE + SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk; +#endif + + SystemCoreClock = SYSTEM_CLOCK; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM7.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM7.c new file mode 100644 index 0000000..6a99c08 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMCM7.c @@ -0,0 +1,85 @@ +/**************************************************************************//** + * @file system_ARMCM7.c + * @brief CMSIS Device System Source File for + * ARMCM7 Device Series + * @version V5.00 + * @date 07. September 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined (ARMCM7) + #include "ARMCM7.h" +#elif defined (ARMCM7_SP) + #include "ARMCM7_SP.h" +#elif defined (ARMCM7_DP) + #include "ARMCM7_DP.h" +#else + #error device not specified! +#endif + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL ( 5000000UL) /* Oscillator frequency */ + +#define SYSTEM_CLOCK (5U * XTAL) + + +/*---------------------------------------------------------------------------- + Externals + *----------------------------------------------------------------------------*/ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + extern uint32_t __Vectors; +#endif + +/*---------------------------------------------------------------------------- + System Core Clock Variable + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = SYSTEM_CLOCK; + + +/*---------------------------------------------------------------------------- + System Core Clock update function + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ +void SystemInit (void) +{ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + SCB->VTOR = (uint32_t) &__Vectors; +#endif + +#if defined (__FPU_USED) && (__FPU_USED == 1U) + SCB->CPACR |= ((3U << 10U*2U) | /* set CP10 Full Access */ + (3U << 11U*2U) ); /* set CP11 Full Access */ +#endif + +#ifdef UNALIGNED_SUPPORT_DISABLE + SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk; +#endif + + SystemCoreClock = SYSTEM_CLOCK; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMSC000.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMSC000.c new file mode 100644 index 0000000..7fda345 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMSC000.c @@ -0,0 +1,56 @@ +/**************************************************************************//** + * @file system_ARMSC000.c + * @brief CMSIS Device System Source File for + * for ARMSC000 Device Series + * @version V5.00 + * @date 07. September 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ARMSC000.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL ( 5000000UL) /* Oscillator frequency */ + +#define SYSTEM_CLOCK (5U * XTAL) + + +/*---------------------------------------------------------------------------- + System Core Clock Variable + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = SYSTEM_CLOCK; + + +/*---------------------------------------------------------------------------- + System Core Clock update function + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ +void SystemInit (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMSC300.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMSC300.c new file mode 100644 index 0000000..3db4ee7 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMSC300.c @@ -0,0 +1,72 @@ +/**************************************************************************//** + * @file system_ARMSC300.c + * @brief CMSIS Device System Source File for + * ARMSC300 Device Series + * @version V5.00 + * @date 07. September 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ARMSC300.h" + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL ( 5000000UL) /* Oscillator frequency */ + +#define SYSTEM_CLOCK (5U * XTAL) + + +/*---------------------------------------------------------------------------- + Externals + *----------------------------------------------------------------------------*/ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + extern uint32_t __Vectors; +#endif + +/*---------------------------------------------------------------------------- + System Core Clock Variable + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = SYSTEM_CLOCK; + + +/*---------------------------------------------------------------------------- + System Core Clock update function + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ +void SystemInit (void) +{ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + SCB->VTOR = (uint32_t) &__Vectors; +#endif + +#ifdef UNALIGNED_SUPPORT_DISABLE + SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk; +#endif + + SystemCoreClock = SYSTEM_CLOCK; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMv8MBL.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMv8MBL.c new file mode 100644 index 0000000..8310b8f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMv8MBL.c @@ -0,0 +1,76 @@ +/**************************************************************************//** + * @file system_ARMv8MBL.c + * @brief CMSIS Device System Source File for + * ARMv8MBL Device Series + * @version V5.00 + * @date 07. September 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ARMv8MBL.h" + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #include "partition_ARMv8MBL.h" +#endif + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL ( 5000000UL) /* Oscillator frequency */ + +#define SYSTEM_CLOCK (5U * XTAL) + + +/*---------------------------------------------------------------------------- + Externals + *----------------------------------------------------------------------------*/ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + extern uint32_t __Vectors; +#endif + +/*---------------------------------------------------------------------------- + System Core Clock Variable + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = SYSTEM_CLOCK; + + +/*---------------------------------------------------------------------------- + System Core Clock update function + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ +void SystemInit (void) +{ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + SCB->VTOR = (uint32_t) &__Vectors; +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + TZ_SAU_Setup(); +#endif + + SystemCoreClock = SYSTEM_CLOCK; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMv8MML.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMv8MML.c new file mode 100644 index 0000000..bd77100 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_ARMv8MML.c @@ -0,0 +1,99 @@ +/**************************************************************************//** + * @file system_ARMv8MML.c + * @brief CMSIS Device System Source File for + * ARMv8MML Device Series + * @version V5.00 + * @date 02. November 2016 + ******************************************************************************/ +/* + * Copyright (c) 2009-2016 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined (ARMv8MML) + #include "ARMv8MML.h" +#elif defined (ARMv8MML_DSP) + #include "ARMv8MML_DSP.h" +#elif defined (ARMv8MML_SP) + #include "ARMv8MML_SP.h" +#elif defined (ARMv8MML_DSP_SP) + #include "ARMv8MML_DSP_SP.h" +#elif defined (ARMv8MML_DP) + #include "ARMv8MML_DP.h" +#elif defined (ARMv8MML_DSP_DP) + #include "ARMv8MML_DSP_DP.h" +#else + #error device not specified! +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #include "partition_ARMv8MML.h" +#endif + +/*---------------------------------------------------------------------------- + Define clocks + *----------------------------------------------------------------------------*/ +#define XTAL ( 5000000UL) /* Oscillator frequency */ + +#define SYSTEM_CLOCK (5U * XTAL) + + +/*---------------------------------------------------------------------------- + Externals + *----------------------------------------------------------------------------*/ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + extern uint32_t __Vectors; +#endif + +/*---------------------------------------------------------------------------- + System Core Clock Variable + *----------------------------------------------------------------------------*/ +uint32_t SystemCoreClock = SYSTEM_CLOCK; + + +/*---------------------------------------------------------------------------- + System Core Clock update function + *----------------------------------------------------------------------------*/ +void SystemCoreClockUpdate (void) +{ + SystemCoreClock = SYSTEM_CLOCK; +} + +/*---------------------------------------------------------------------------- + System initialization function + *----------------------------------------------------------------------------*/ +void SystemInit (void) +{ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + SCB->VTOR = (uint32_t) &__Vectors; +#endif + +#if defined (__FPU_USED) && (__FPU_USED == 1U) + SCB->CPACR |= ((3U << 10U*2U) | /* set CP10 Full Access */ + (3U << 11U*2U) ); /* set CP11 Full Access */ +#endif + +#ifdef UNALIGNED_SUPPORT_DISABLE + SCB->CCR |= SCB_CCR_UNALIGN_TRP_Msk; +#endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + TZ_SAU_Setup(); +#endif + + SystemCoreClock = SYSTEM_CLOCK; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_generic.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_generic.c new file mode 100644 index 0000000..37d82ab --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/system_generic.c @@ -0,0 +1,27 @@ + +#if (defined (ARMCM0)) + #include "system_ARMCM0.c" + +#elif (defined (ARMCM0P)) + #include "system_ARMCM0plus.c" + +#elif (defined (ARMCM3)) + #include "system_ARMCM3.c" + +#elif (defined (ARMCM4) || defined (ARMCM4_FP)) + #include "system_ARMCM4.c" + +#elif (defined (ARMCM7) || defined (ARMCM7_SP) || defined (ARMCM7_DP)) + #include "system_ARMCM7.c" + +#elif defined (ARMv8MBL) + #include "system_ARMv8MBL.c" + +#elif (defined (ARMv8MML) || defined (ARMv8MML_DSP) || \ + defined (ARMv8MML_SP) || defined (ARMv8MML_DSP_SP) || \ + defined (ARMv8MML_DP) || defined (ARMv8MML_DSP_DP) ) + #include "system_ARMv8MML.c" + +#else + #error "No appropriate system file found!" +#endif diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/all_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/all_tests.c new file mode 100644 index 0000000..7b7a8fd --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/all_tests.c @@ -0,0 +1,30 @@ +#include "jtest.h" +#include "basic_math_test_group.h" +#include "complex_math_test_group.h" +#include "controller_test_group.h" +#include "fast_math_test_group.h" +#include "filtering_test_group.h" +#include "matrix_test_group.h" +#include "statistics_test_group.h" +#include "support_test_group.h" +#include "transform_test_group.h" +#include "intrinsics_test_group.h" + +JTEST_DEFINE_GROUP(all_tests) +{ + /* + To skip a test, comment it out + */ + JTEST_GROUP_CALL(basic_math_tests); + JTEST_GROUP_CALL(complex_math_tests); + JTEST_GROUP_CALL(controller_tests); + JTEST_GROUP_CALL(fast_math_tests); + JTEST_GROUP_CALL(filtering_tests); + JTEST_GROUP_CALL(matrix_tests); + JTEST_GROUP_CALL(statistics_tests); + JTEST_GROUP_CALL(support_tests); + JTEST_GROUP_CALL(transform_tests); + JTEST_GROUP_CALL(intrinsics_tests); + + return; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/abs_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/abs_tests.c new file mode 100644 index 0000000..6e6bedb --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/abs_tests.c @@ -0,0 +1,32 @@ +#include "jtest.h" +#include "basic_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "basic_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_ABS_TEST(suffix) \ + BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + abs, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix)) + +JTEST_ARM_ABS_TEST(f32); +JTEST_ARM_ABS_TEST(q31); +JTEST_ARM_ABS_TEST(q15); +JTEST_ARM_ABS_TEST(q7 ); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(abs_tests) +{ + JTEST_TEST_CALL(arm_abs_f32_test); + JTEST_TEST_CALL(arm_abs_q31_test); + JTEST_TEST_CALL(arm_abs_q15_test); + JTEST_TEST_CALL(arm_abs_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/add_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/add_tests.c new file mode 100644 index 0000000..a2d043c --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/add_tests.c @@ -0,0 +1,33 @@ +#include "jtest.h" +#include "basic_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "basic_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_ADD_TEST(suffix) \ + BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \ + add, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + BASIC_MATH_COMPARE_INTERFACE) + +JTEST_ARM_ADD_TEST(f32); +JTEST_ARM_ADD_TEST(q31); +JTEST_ARM_ADD_TEST(q15); +JTEST_ARM_ADD_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(add_tests) +{ + JTEST_TEST_CALL(arm_add_f32_test); + JTEST_TEST_CALL(arm_add_q31_test); + JTEST_TEST_CALL(arm_add_q15_test); + JTEST_TEST_CALL(arm_add_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/basic_math_test_common_data.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/basic_math_test_common_data.c new file mode 100644 index 0000000..86728f9 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/basic_math_test_common_data.c @@ -0,0 +1,101 @@ +#include "basic_math_test_data.h" + +/*--------------------------------------------------------------------------------*/ +/* Input/Output Buffers */ +/*--------------------------------------------------------------------------------*/ + +ARR_DESC_DEFINE(BASIC_MATH_BIGGEST_INPUT_TYPE, + basic_math_output_fut, + BASIC_MATH_MAX_INPUT_ELEMENTS, + CURLY(0)); + +ARR_DESC_DEFINE(BASIC_MATH_BIGGEST_INPUT_TYPE, + basic_math_output_ref, + BASIC_MATH_MAX_INPUT_ELEMENTS, + CURLY(0)); + +BASIC_MATH_BIGGEST_INPUT_TYPE +basic_math_output_f32_ref[BASIC_MATH_MAX_INPUT_ELEMENTS]; + +BASIC_MATH_BIGGEST_INPUT_TYPE +basic_math_output_f32_fut[BASIC_MATH_MAX_INPUT_ELEMENTS]; + +/*--------------------------------------------------------------------------------*/ +/* Block Sizes */ +/*--------------------------------------------------------------------------------*/ + +/* + To change test parameter values add/remove values inside CURLY and update + the preceeding parameter to reflect the number of values inside CURLY. +*/ + +ARR_DESC_DEFINE(uint32_t, + basic_math_block_sizes, + 4, + CURLY( 2, 7, 15, 32)); + +/*--------------------------------------------------------------------------------*/ +/* Numbers */ +/*--------------------------------------------------------------------------------*/ + +/* + To change test parameter values add/remove values inside CURLY and update + the preceeding parameter to reflect the number of values inside CURLY. +*/ + +ARR_DESC_DEFINE(uint32_t, + basic_math_elts, + 4, + CURLY( 0, 1, 0x80000000, 0x7fffffff)); + +ARR_DESC_DEFINE(int8_t, + basic_math_elts2, + 5, + CURLY( 0, 3, -3, -7, 7)); + +ARR_DESC_DEFINE(float32_t, + basic_math_eltsf, + 6, + CURLY( 0.0f, 1.0f, 1.254001, -1.665584, -127.435646, 245.34634267)); + +/*--------------------------------------------------------------------------------*/ +/* Test Data */ +/*--------------------------------------------------------------------------------*/ + +ARR_DESC_DEFINE(float32_t, + basic_math_f_32, + 32, + CURLY( + -0.432565, -1.665584, 0.125332, 0.287676, -1.146471, + 1.190915, 1.189164, -0.037633, 0.327292, 0.174639, + -0.186709, 0.725791, -0.588317, 2.183186, -0.136396, + 0.113931, 1.066768, 0.059281, -0.095648, -0.832349, + 0.294411, -1.336182, 0.714325, 1.623562, -0.691776, + 0.857997, 1.254001, -1.593730, -1.440964, 0.571148, + -0.399886, 0.689997 + )); + +/* Alias the 32 element array with wrappers that end sooner. */ +ARR_DESC_DEFINE_SUBSET(basic_math_f_15, + basic_math_f_32, + 15); + +ARR_DESC_DEFINE_SUBSET(basic_math_f_2, + basic_math_f_32, + 2); + +ARR_DESC_DEFINE(float32_t, + basic_math_zeros, + 32, + CURLY(0)); + +/* Aggregate all float datasets. */ +ARR_DESC_DEFINE(ARR_DESC_t *, + basic_math_f_all, + 4, + CURLY( + &basic_math_zeros, + &basic_math_f_2, + &basic_math_f_15, + &basic_math_f_32 + )); diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/basic_math_test_group.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/basic_math_test_group.c new file mode 100644 index 0000000..7b219fe --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/basic_math_test_group.c @@ -0,0 +1,17 @@ +#include "jtest.h" +#include "basic_math_tests.h" + +JTEST_DEFINE_GROUP(basic_math_tests) +{ + JTEST_GROUP_CALL(abs_tests); + JTEST_GROUP_CALL(add_tests); + JTEST_GROUP_CALL(dot_prod_tests); + JTEST_GROUP_CALL(mult_tests); + JTEST_GROUP_CALL(negate_tests); + JTEST_GROUP_CALL(offset_tests); + JTEST_GROUP_CALL(scale_tests); + JTEST_GROUP_CALL(shift_tests); + JTEST_GROUP_CALL(sub_tests); + + return; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/dot_prod_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/dot_prod_tests.c new file mode 100644 index 0000000..ed758a1 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/dot_prod_tests.c @@ -0,0 +1,33 @@ +#include "jtest.h" +#include "basic_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "basic_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_DOT_PROD_TEST(suffix) \ + BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \ + dot_prod, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + BASIC_MATH_SNR_ELT1_COMPARE_INTERFACE) + +JTEST_ARM_DOT_PROD_TEST(f32); +JTEST_ARM_DOT_PROD_TEST(q31); +JTEST_ARM_DOT_PROD_TEST(q15); +JTEST_ARM_DOT_PROD_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(dot_prod_tests) +{ + JTEST_TEST_CALL(arm_dot_prod_f32_test); + JTEST_TEST_CALL(arm_dot_prod_q31_test); + JTEST_TEST_CALL(arm_dot_prod_q15_test); + JTEST_TEST_CALL(arm_dot_prod_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/mult_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/mult_tests.c new file mode 100644 index 0000000..a94bf68 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/mult_tests.c @@ -0,0 +1,33 @@ +#include "jtest.h" +#include "basic_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "basic_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MULT_TEST(suffix, compare_interface) \ + BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \ + mult, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + compare_interface) + +JTEST_ARM_MULT_TEST(f32, BASIC_MATH_COMPARE_INTERFACE); +JTEST_ARM_MULT_TEST(q31, BASIC_MATH_SNR_COMPARE_INTERFACE); +JTEST_ARM_MULT_TEST(q15, BASIC_MATH_COMPARE_INTERFACE); +JTEST_ARM_MULT_TEST(q7 , BASIC_MATH_COMPARE_INTERFACE); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mult_tests) +{ + JTEST_TEST_CALL(arm_mult_f32_test); + JTEST_TEST_CALL(arm_mult_q31_test); + JTEST_TEST_CALL(arm_mult_q15_test); + JTEST_TEST_CALL(arm_mult_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/negate_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/negate_tests.c new file mode 100644 index 0000000..276cdac --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/negate_tests.c @@ -0,0 +1,32 @@ +#include "jtest.h" +#include "basic_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "basic_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_NEGATE_TEST(suffix) \ + BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + negate, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix)) + +JTEST_ARM_NEGATE_TEST(f32); +JTEST_ARM_NEGATE_TEST(q31); +JTEST_ARM_NEGATE_TEST(q15); +JTEST_ARM_NEGATE_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(negate_tests) +{ + JTEST_TEST_CALL(arm_negate_f32_test); + JTEST_TEST_CALL(arm_negate_q31_test); + JTEST_TEST_CALL(arm_negate_q15_test); + JTEST_TEST_CALL(arm_negate_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/offset_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/offset_tests.c new file mode 100644 index 0000000..4e10f78 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/offset_tests.c @@ -0,0 +1,33 @@ +#include "jtest.h" +#include "basic_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "basic_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_OFFSET_TEST(suffix) \ + BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT1_BLK( \ + offset, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix)) + +JTEST_ARM_OFFSET_TEST(f32); +JTEST_ARM_OFFSET_TEST(q31); +JTEST_ARM_OFFSET_TEST(q15); +JTEST_ARM_OFFSET_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(offset_tests) +{ + JTEST_TEST_CALL(arm_offset_f32_test); + JTEST_TEST_CALL(arm_offset_q31_test); + JTEST_TEST_CALL(arm_offset_q15_test); + JTEST_TEST_CALL(arm_offset_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/scale_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/scale_tests.c new file mode 100644 index 0000000..2839a8f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/scale_tests.c @@ -0,0 +1,52 @@ +#include "jtest.h" +#include "basic_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "basic_math_templates.h" +#include "type_abbrev.h" + + +#define JTEST_ARM_SCALE_TEST(suffix) \ + BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT2_BLK( \ + scale, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), /*elt1_type*/ \ + int8_t, /*elt2_type*/ \ + TYPE_FROM_ABBREV(suffix)) + +/* float32_t defined separately because it has less arguments */ +JTEST_DEFINE_TEST(arm_scale_f32_test, + arm_scale_f32) +{ + TEST_TEMPLATE_BUF1_ELT1_BLK( + basic_math_f_all, + basic_math_eltsf, + basic_math_block_sizes, + float32_t, + float32_t, + float32_t, + arm_scale_f32, + ARM_scale_float_INPUT_INTERFACE, + ref_scale_f32, + REF_scale_float_INPUT_INTERFACE, + BASIC_MATH_COMPARE_INTERFACE); +} + +JTEST_ARM_SCALE_TEST(q31); +JTEST_ARM_SCALE_TEST(q15); +JTEST_ARM_SCALE_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(scale_tests) +{ + JTEST_TEST_CALL(arm_scale_f32_test); + JTEST_TEST_CALL(arm_scale_q31_test); + JTEST_TEST_CALL(arm_scale_q15_test); + JTEST_TEST_CALL(arm_scale_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/shift_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/shift_tests.c new file mode 100644 index 0000000..ed83b63 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/shift_tests.c @@ -0,0 +1,31 @@ +#include "jtest.h" +#include "basic_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "basic_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_SHIFT_TEST(suffix) \ + BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF1_ELT1_BLK( \ + shift, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + int8_t, /*elt_type*/ \ + TYPE_FROM_ABBREV(suffix)) + +JTEST_ARM_SHIFT_TEST(q31); +JTEST_ARM_SHIFT_TEST(q15); +JTEST_ARM_SHIFT_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(shift_tests) +{ + JTEST_TEST_CALL(arm_shift_q31_test); + JTEST_TEST_CALL(arm_shift_q15_test); + JTEST_TEST_CALL(arm_shift_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/sub_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/sub_tests.c new file mode 100644 index 0000000..a486842 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/basic_math_tests/sub_tests.c @@ -0,0 +1,33 @@ +#include "jtest.h" +#include "basic_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "basic_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_SUB_TEST(suffix) \ + BASIC_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \ + sub, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + BASIC_MATH_COMPARE_INTERFACE) + +JTEST_ARM_SUB_TEST(f32); +JTEST_ARM_SUB_TEST(q31); +JTEST_ARM_SUB_TEST(q15); +JTEST_ARM_SUB_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(sub_tests) +{ + JTEST_TEST_CALL(arm_sub_f32_test); + JTEST_TEST_CALL(arm_sub_q31_test); + JTEST_TEST_CALL(arm_sub_q15_test); + JTEST_TEST_CALL(arm_sub_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_conj_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_conj_tests.c new file mode 100644 index 0000000..7fcc0bc --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_conj_tests.c @@ -0,0 +1,31 @@ +#include "jtest.h" +#include "complex_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "complex_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_CMPLX_CONJ_TEST(suffix) \ + COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + cmplx_conj, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + COMPLEX_MATH_SNR_COMPARE_CMPLX_INTERFACE) + +JTEST_ARM_CMPLX_CONJ_TEST(f32); +JTEST_ARM_CMPLX_CONJ_TEST(q31); +JTEST_ARM_CMPLX_CONJ_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(cmplx_conj_tests) +{ + JTEST_TEST_CALL(arm_cmplx_conj_f32_test); + JTEST_TEST_CALL(arm_cmplx_conj_q31_test); + JTEST_TEST_CALL(arm_cmplx_conj_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_dot_prod_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_dot_prod_tests.c new file mode 100644 index 0000000..bcdaf5b --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_dot_prod_tests.c @@ -0,0 +1,31 @@ +#include "jtest.h" +#include "complex_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "complex_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_CMPLX_DOT_PROD_TEST(suffix, comparison_interface) \ + COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \ + cmplx_dot_prod, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + comparison_interface) + +JTEST_ARM_CMPLX_DOT_PROD_TEST(f32, COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE); +JTEST_ARM_CMPLX_DOT_PROD_TEST(q31, COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE); +JTEST_ARM_CMPLX_DOT_PROD_TEST(q15, COMPLEX_MATH_SNR_COMPARE_SPLIT_INTERFACE); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(cmplx_dot_prod_tests) +{ + JTEST_TEST_CALL(arm_cmplx_dot_prod_f32_test); + JTEST_TEST_CALL(arm_cmplx_dot_prod_q31_test); + JTEST_TEST_CALL(arm_cmplx_dot_prod_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mag_squared_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mag_squared_tests.c new file mode 100644 index 0000000..9ca11fc --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mag_squared_tests.c @@ -0,0 +1,31 @@ +#include "jtest.h" +#include "complex_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "complex_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_CMPLX_MAG_SQUARED_TEST(suffix) \ + COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + cmplx_mag_squared, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + COMPLEX_MATH_COMPARE_RE_INTERFACE) + +JTEST_ARM_CMPLX_MAG_SQUARED_TEST(f32); +JTEST_ARM_CMPLX_MAG_SQUARED_TEST(q31); +JTEST_ARM_CMPLX_MAG_SQUARED_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(cmplx_mag_squared_tests) +{ + JTEST_TEST_CALL(arm_cmplx_mag_squared_f32_test); + JTEST_TEST_CALL(arm_cmplx_mag_squared_q31_test); + JTEST_TEST_CALL(arm_cmplx_mag_squared_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mag_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mag_tests.c new file mode 100644 index 0000000..8711957 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mag_tests.c @@ -0,0 +1,31 @@ +#include "jtest.h" +#include "complex_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "complex_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_CMPLX_MAG_TEST(suffix, comparison_interface) \ + COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + cmplx_mag, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + comparison_interface) + +JTEST_ARM_CMPLX_MAG_TEST(f32, COMPLEX_MATH_COMPARE_RE_INTERFACE); +JTEST_ARM_CMPLX_MAG_TEST(q31, COMPLEX_MATH_SNR_COMPARE_RE_INTERFACE); +JTEST_ARM_CMPLX_MAG_TEST(q15, COMPLEX_MATH_SNR_COMPARE_RE_INTERFACE); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(cmplx_mag_tests) +{ + JTEST_TEST_CALL(arm_cmplx_mag_f32_test); + JTEST_TEST_CALL(arm_cmplx_mag_q31_test); + JTEST_TEST_CALL(arm_cmplx_mag_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mult_cmplx_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mult_cmplx_tests.c new file mode 100644 index 0000000..22c5a70 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mult_cmplx_tests.c @@ -0,0 +1,31 @@ +#include "jtest.h" +#include "complex_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "complex_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_CMPLX_MULT_CMPLX_TEST(suffix) \ + COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \ + cmplx_mult_cmplx, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + COMPLEX_MATH_COMPARE_CMPLX_INTERFACE) + +JTEST_ARM_CMPLX_MULT_CMPLX_TEST(f32); +JTEST_ARM_CMPLX_MULT_CMPLX_TEST(q31); +JTEST_ARM_CMPLX_MULT_CMPLX_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(cmplx_mult_cmplx_tests) +{ + JTEST_TEST_CALL(arm_cmplx_mult_cmplx_f32_test); + JTEST_TEST_CALL(arm_cmplx_mult_cmplx_q31_test); + JTEST_TEST_CALL(arm_cmplx_mult_cmplx_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mult_real_test.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mult_real_test.c new file mode 100644 index 0000000..fce7b82 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/cmplx_mult_real_test.c @@ -0,0 +1,31 @@ +#include "jtest.h" +#include "complex_math_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "complex_math_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_CMPLX_MULT_REAL_TEST(suffix, comparison_interface) \ + COMPLEX_MATH_DEFINE_TEST_TEMPLATE_BUF2_BLK( \ + cmplx_mult_real, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + comparison_interface) + +JTEST_ARM_CMPLX_MULT_REAL_TEST(f32, COMPLEX_MATH_COMPARE_CMPLX_INTERFACE); +JTEST_ARM_CMPLX_MULT_REAL_TEST(q31, COMPLEX_MATH_SNR_COMPARE_CMPLX_INTERFACE); +JTEST_ARM_CMPLX_MULT_REAL_TEST(q15, COMPLEX_MATH_COMPARE_CMPLX_INTERFACE); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(cmplx_mult_real_tests) +{ + JTEST_TEST_CALL(arm_cmplx_mult_real_f32_test); + JTEST_TEST_CALL(arm_cmplx_mult_real_q31_test); + JTEST_TEST_CALL(arm_cmplx_mult_real_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/complex_math_test_common_data.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/complex_math_test_common_data.c new file mode 100644 index 0000000..396dc2f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/complex_math_test_common_data.c @@ -0,0 +1,114 @@ +#include "complex_math_test_data.h" + +/*--------------------------------------------------------------------------------*/ +/* Input/Output Buffers */ +/*--------------------------------------------------------------------------------*/ + +ARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE, + complex_math_output_fut_a, + COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/, + CURLY(0)); + +ARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE, + complex_math_output_fut_b, + COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/, + CURLY(0)); + +ARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE, + complex_math_output_ref_a, + COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/, + CURLY(0)); + + +ARR_DESC_DEFINE(COMPLEX_MATH_BIGGEST_INPUT_TYPE, + complex_math_output_ref_b, + COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2 /*Complex data has two parts*/, + CURLY(0)); + + +COMPLEX_MATH_BIGGEST_INPUT_TYPE +complex_math_output_f32_ref_a[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2]; + +COMPLEX_MATH_BIGGEST_INPUT_TYPE +complex_math_output_f32_ref_b[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2]; + +COMPLEX_MATH_BIGGEST_INPUT_TYPE +complex_math_output_f32_fut_a[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2]; + +COMPLEX_MATH_BIGGEST_INPUT_TYPE +complex_math_output_f32_fut_b[COMPLEX_MATH_MAX_INPUT_ELEMENTS * 2]; + +/*--------------------------------------------------------------------------------*/ +/* Block Sizes */ +/*--------------------------------------------------------------------------------*/ + +ARR_DESC_DEFINE(uint32_t, + complex_math_block_sizes, + 4, + CURLY(1, 2, 15, 32)); + +/*--------------------------------------------------------------------------------*/ +/* Test Data */ +/*--------------------------------------------------------------------------------*/ + +ARR_DESC_DEFINE(float32_t, + complex_math_f_32, + 32 * 2 /*Complex data has two parts*/, + CURLY( + -0.432564811528220680 , 0.815622288876143300, + -1.665584378238097000 , 0.711908323500893280, + 0.125332306474830680 , 1.290249754932477000, + 0.287676420358548850 , 0.668600505682040320, + -1.146471350681463700 , 1.190838074243369100, + 1.190915465642998800 , -1.202457114773944000, + 1.189164201652103100 , -0.019789557768770449, + -0.037633276593317645 , -0.156717298831980680, + 0.327292361408654140 , -1.604085562001158500, + 0.174639142820924520 , 0.257304234677489860, + -0.186708577681439360 , -1.056472928081482400, + 0.725790548293302700 , 1.415141485872338600, + -0.588316543014188680 , -0.805090404196879830, + 2.183185818197101100 , 0.528743010962224870, + -0.136395883086595700 , 0.219320672667622370, + 0.113931313520809620 , -0.921901624355539130, + 1.066768211359188800 , -2.170674494305262500, + 0.059281460523605348 , -0.059187824521191180, + -0.095648405483669041 , -1.010633706474247400, + -0.832349463650022490 , 0.614463048895480980, + 0.294410816392640380 , 0.507740785341985520, + -1.336181857937804000 , 1.692429870190521400, + 0.714324551818952160 , 0.591282586924175900, + 1.623562064446270700 , -0.643595202682526120, + -0.691775701702286750 , 0.380337251713910140, + 0.857996672828262640 , -1.009115524340785000, + 1.254001421602532400 , -0.019510669530289293, + -1.593729576447476800 , -0.048220789145312269, + -1.440964431901020000 , 0.000043191841625545, + 0.571147623658177950 , -0.317859451247687890, + -0.399885577715363150 , 1.095003738787492500, + 0.689997375464345140 , -1.873990257640960800 + )); + +ARR_DESC_DEFINE_SUBSET(complex_math_f_15, + complex_math_f_32, + 15 * 2 /*Complex data has two parts*/); + +ARR_DESC_DEFINE_SUBSET(complex_math_f_2, + complex_math_f_32, + 2 * 2 /*Complex data has two parts*/); + +ARR_DESC_DEFINE(float32_t, + complex_math_zeros, + 32 * 2 /*Complex data has two parts*/, + CURLY(0)); + +/* Aggregate all float datasets */ +ARR_DESC_DEFINE(ARR_DESC_t *, + complex_math_f_all, + 4, + CURLY( + &complex_math_zeros, + &complex_math_f_2, + &complex_math_f_15, + &complex_math_f_32 + )); diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/complex_math_test_group.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/complex_math_test_group.c new file mode 100644 index 0000000..38546fb --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/complex_math_tests/complex_math_test_group.c @@ -0,0 +1,14 @@ +#include "jtest.h" +#include "complex_math_tests.h" + +JTEST_DEFINE_GROUP(complex_math_tests) +{ + JTEST_GROUP_CALL(cmplx_conj_tests); + JTEST_GROUP_CALL(cmplx_dot_prod_tests); + JTEST_GROUP_CALL(cmplx_mag_tests); + JTEST_GROUP_CALL(cmplx_mag_squared_tests); + JTEST_GROUP_CALL(cmplx_mult_cmplx_tests); + JTEST_GROUP_CALL(cmplx_mult_real_tests); + + return; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/controller_test_common_data.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/controller_test_common_data.c new file mode 100644 index 0000000..661a487 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/controller_test_common_data.c @@ -0,0 +1,499 @@ +#include "controller_test_data.h" + +/*--------------------------------------------------------------------------------*/ +/* Input/Output Buffers */ +/*--------------------------------------------------------------------------------*/ + +float32_t controller_output_fut[CONTROLLER_MAX_LEN] = {0}; +float32_t controller_output_ref[CONTROLLER_MAX_LEN] = {0}; +float32_t controller_output_f32_fut[CONTROLLER_MAX_LEN] = {0}; +float32_t controller_output_f32_ref[CONTROLLER_MAX_LEN] = {0}; + +const q31_t controller_q31_inputs[CONTROLLER_MAX_LEN] = +{ + 0xC14A5524, 0xCCABDA17, 0xAD6F5B56, 0xFDAFCE3B, 0xA9B226EB, 0x41F6F6A, + 0xA5CE38BF, 0x3A978AFA, 0xBA44B82A, 0x855C0F8, 0x3D060524, 0x93D5E570, + 0x97D7791D, 0xFFE0C38C, 0x26749841, 0xC0A6EE54, 0x218EC386, 0x39FF3726, + 0x8DC1F7CA, 0x702F2CF5, 0xC1142FF1, 0xEC1476AB, 0x15F640DD, 0xE62CCE49, + 0x3805DE7E, 0xF70871FE, 0xCF8BD360, 0x8D19A8A0, 0xD764F821, 0xA58558CF, + 0x8C0CE04D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0xB646AE24, 0x6CE00F5C, + 0xE6D48948, 0xB55BD831, 0x3B72950A, 0x9EB69530, 0x73394127, 0x773FA6F4, + 0x9805A980, 0x838DE587, 0x9CF597F4, 0xA2AD1691, 0xFA81A473, 0x7CDC7D7F, + 0x4A5190D0, 0xED895BB9, 0x8FD60F35, 0x1A21D530, 0xA0EB6DDA, 0xBDE6A516, + 0x2501A3E1, 0x5ED893C8, 0xE1E175B1, 0xACBBB2F3, 0xED350907, 0xDB140D7E, + 0xEEAE272D, 0xBE229841, 0xC18BFB88, 0xA6BB9B80, 0xBCF090E4, 0x24DB166C, + 0xF9AB7E42, 0x62DF28D1, 0xC7004665, 0xE3F56FC6, 0x419E0C75, 0x46BE9F38, + 0x2432B9B2, 0x758D83E0, 0xDCE12926, 0x3F57CB74, 0x1F4458E2, 0xF1DD639, + 0x83A1FB49, 0x173AFC76, 0x86EF7531, 0x48D32F34, 0x7D3E3063, 0x8F2FB549, + 0x5C314C9, 0x18CBEB6D, 0xA6F8B697, 0x447B9E9C, 0x2E32BA33, 0xD074D715, + 0x81ACD746, 0xE55A4E04, 0x4891860F, 0x1DA3EB4F, 0xE0E6A27F, 0x20BFDEB4, + 0xD0B3A25B, 0x40C10544, 0xC15656C, 0x15405EAE, 0x9858E3E1, 0xA36A9C4E, + 0x88BD21F9, 0xAACF7A68, 0x773665E5, 0xCEDFDF66, 0x617A9610, 0x524FC968, + 0xC2D086CD, 0x5F008079, 0x24DCA447, 0x6A4F5599, 0xB706CD4A, 0x1DE70608, + 0xA33A2EE5, 0x137E488E, 0x98061B7B, 0x4079D69D, 0xA4A897D5, 0xC4CEC8F5, + 0xD75F7883, 0x22406802, 0xF1AD70BB, 0x9D4ADD79, 0xBCBC7CE4, 0xB358C0D8, + 0x85792E47, 0xA7ADAC05, 0x3D19EEAB, 0x331AC0AF, 0x33035831, 0x13D93987, + 0xFC542094, 0x845F317E, 0xDDC4BF8B, 0x1379E50C, 0x5C20193F, 0xFDD58298, + 0x9D482B82, 0x4A6BE062, 0xDC8A757B, 0x272917C1, 0x90E1EFBC, 0x355AD882, + 0xE6F8EA35, 0x604555A1, 0x7DFFFBB, 0xF58AE216, 0x9A11B463, 0xD3541BAD, + 0xA1576756, 0x483BED8D, 0x1F05AFCC, 0xCEA63DFB, 0x55B84677, 0xFB2E04F2, + 0x787AF96C, 0x84A12CD3, 0x460A9BD, 0x9DB22DD8, 0x1A8C7F28, 0x861E452E, + 0x932D3F78, 0x7652D852, 0x73357BBA, 0xEBBB0A58, 0x62536AFA, 0x3F6B65EF, + 0x6DC57B58, 0x9EB798CE, 0xE6B0A740, 0xDFF68B47, 0x3247FB8F, 0xFFF3D302, + 0xA9FD3E40, 0x475A43D1, 0x6FF9528A, 0x2018A09D, 0x47E0F9C9, 0x4CF5F6D3, + 0x2807CE34, 0xDD6FD8ED, 0x234045D1, 0x51CEB5F9, 0x25297896, 0x6443A0FE, + 0x8F4449A9, 0xD4C3E1C6, 0xF01D52F1, 0x4E09C820, 0xF18F0810, 0xE1548689, + 0xF9DE5A1F, 0x5286DC23, 0x48AC3A4B, 0xEA0C1BE0, 0xA1B785DB, 0x7086465D, + 0x1CC10929, 0x1E1D716E, 0xED231D4C, 0x2049D108, 0xB8FF9971, 0x949CF8D4, + 0x441F1E8B, 0xC3D95372, 0x69C324B4, 0xA10BFDC9, 0xC781DE78, 0x82476137, + 0xE163DDF, 0x390DEEC2, 0xAF68CE5B, 0x8E680ABD, 0x8223A615, 0x92593380, + 0x7B1465FE, 0x865AE957, 0x930F53EB, 0xED772EF7, 0x10E916B6, 0xE3BCFA68, + 0x2ACB80BB, 0xE51C5590, 0x994714B5, 0xF30984EE, 0x59BBE1B4, 0xB4867DBC, + 0xB91C706C, 0xBC16C218, 0xA8931CD0, 0x129A66AB, 0x13171F4D, 0x62882872, + 0x4B167FD4, 0xE6902F4C, 0xFA794932, 0xD4B152C, 0xB0856EA9, 0x39466D55, + 0x3669E451, 0x8F5B9E8C, 0x877A3C6A, 0x51B956B4, 0x367EAD2A, 0x9D2C662A, + 0x78FB6880, 0x4E6D40B6, 0x4070EFDC, 0x4DF9679C, 0x20306EDB, 0xE381AAE7, + 0xA55DA748, 0x9B8B617B, 0x3E036FAD, 0x84E4C4A7, 0xD5A3F517, 0x669BA988, + 0x98FDDE8C, 0x67BD85CE, 0x34BBB46C, 0x76994800, 0x85B9D8B6, 0x6DFA2FEF, + 0x205DB5C, 0x9F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB98B61, 0xC323DDAC, + 0x31D424B4, 0xF68C0D7E, 0x162FAF9D, 0x7B2A7A99, 0xF9392693, 0xC42D12C0, + 0x8692A73E, 0xD9A1EE80, 0xDD956856, 0x44E7BDAC, 0x8D874532, 0x5F5C9DD0, + 0x5D167858, 0x8559FEA2, 0x9D821476, 0xD9654ED2, 0x594C0DC7, 0x1A87B506, + 0x3F693200, 0x7A651AB5, 0xA0CCBC8A, 0x9F9E662C, 0x78EF631, 0x2A09DA0, + 0xB088C72F, 0x92EE0D42, 0x360DCD5F, 0xF333FE48, 0x8D63CC06, 0x233A8ACB, + 0x706651ED, 0x7AA5C079, 0x262239D1, 0x3EBBEBB6, 0xA25A4F3D, 0x32581A06, + 0x6E6FD780, 0x5773F7C7, 0x75ED1DDC, 0x90DF2D15, 0xBC79A9BC, 0xB7175917, + 0x354E381C, 0x762AADD7, 0xF643DAC1, 0xF3BBF49E, 0xD2FECE7E, 0x6C8140F4, + 0xD7694875, 0x92D30822, 0xC742A7CF, 0xB792ED98, 0x121CFE24, 0xA04E1EE7, + 0x58CE268, 0x215A080, 0x316CB323, 0xFAB14A31, 0xE1C13C03, 0xFD8EF4F1, + 0xF3F446D0, 0x6C6CEA0A, 0xBBFDF9FB, 0x67242969, 0xBE55A4EB, 0x8FF5534, + 0x52F0DF1C, 0x9710ADE3, 0xD40F4A21, 0x7984E8E7, 0x419545EB, 0x993F7880, + 0xAB246B20, 0x408AABC4, 0xCBF6EA49, 0xC0894C55, 0x4CAA6398, 0xA47856E9, + 0xAF2AE47D, 0x22F55D33, 0xF0D37915, 0xD0634C72, 0xD983671, 0x2BCC5AF8, + 0x9A77D48, 0xC11B5CFA, 0xF107CD7E, 0x3A6B3593, 0xE1425F05, 0x6271812A, + 0x5B838310, 0xBD8418CA, 0x10A58792, 0x239F7137, 0xA13D5071, 0x7F9930D4, + 0xA462664F, 0x54180F8E, 0x291585BA, 0xE586B87A, 0x144B2C12, 0x98E425C7, + 0xBAA4B373, 0x18F0D03C, 0x99462AC0, 0xD8B4D2EF, 0x72473895, 0xA6BF5435, + 0xEDAD53B, 0xE0912FA6, 0x5C33F331, 0x3D93CD7, 0x4D03D752, 0x20699929, + 0xB89962F9, 0x36E781E9, 0xF58B642C, 0x5FCA69E3, 0x5960A7F4, 0xAD5AAFD0, + 0xDF18324A, 0x3DB1E5AA, 0x76BA3876, 0x1BC29AF6, 0xBCC18841, 0x73A60174, + 0x625BFF58, 0x67C57724, 0x4458E53C, 0xE157B095, 0x2B370837, 0x83DF6CE3, + 0xDD08EEFA, 0x3F52A7C2, 0x191B4785, 0x60843D82, 0xB0DE11F1, 0x105EA26C, + 0x6E1C7AA2, 0x47AADD14, 0xB6676D03, 0x3B8D4DF6, 0x737A694, 0x409521DC, + 0x744206A, 0xC722023F, 0x2BE4EAD5, 0x63E11D76, 0xCA4A09AB, 0x5CF2D2B9, + 0x31586916, 0xCDFD7D84, 0xB203F634, 0xAD7329D4, 0xC524582F, 0x2E53E6C1, + 0xBB0E019B, 0xB8538C6A, 0x6A2542D, 0x8A6A00E5, 0x119725CC, 0x5406D347, + 0x1B6FFAF1, 0xECCF71F1, 0x981117F2, 0x7167CA76, 0x74F4B880, 0x77A55F47, + 0x59EADB62, 0x4A331D95, 0xBCBBA76F, 0xA45C4D50, 0xC718D5, 0x87CE05D1, + 0x60D47AD5, 0xA5CA9C40, 0xB0061766, 0xE69B39DF, 0xBD5F1320, 0x9930EAD3, + 0xA8B38325, 0x8DD090F, 0x6A6EEF37, 0x2DF16F66, 0xAB514C7E, 0x31109C58, + 0xFD48C7FC, 0x515341CA, 0x77AB8EA6, 0x41328DAF, 0xBAF8D31E, 0xA4B31611, + 0xED37F331, 0x7A832A22, 0xA22591C7, 0x722D1F89, 0x3B19CF18, 0x261B8A4D, + 0xC3F6F6DB, 0xCF8CED61, 0x990FA250, 0xA02E72A9, 0x560DCEA2, 0xB08E67B4, + 0x3674E663, 0x97CC3852, 0xA7EB2EAC, 0xFFDE0AA8, 0xA64719A, 0x23269EDD, + 0x3C0B339E, 0x86284D40, 0x48D82ECB, 0xA4D4CCF8, 0x43631B91, 0x4BF0C248, + 0xB6497B9B, 0x6827BC58, 0xE30B7AF9, 0xA0CCBF26, 0x6C3B7B71, 0xD744B3ED, + 0xFA25D2F6, 0x4CDE642D, 0xD65B8142, 0xA6F9207F, 0xE7A207BE, 0xDB506684, + 0x44DA4780, 0x9175EA0C, 0x156104AF, 0x4155E1B0, 0x6E3A6886, 0x9DBA1EA2, + 0x5423D9C8, 0xCC024E22, 0x758F852A, 0x1DD6395, 0x2D19CBAD, 0xE164F5A1, + 0xC2084602, 0x89C274AD, 0x13CB5562, 0xD7FE2D5B, 0xE07A4EE5, 0x1672BA91, + 0x4F624CCF, 0x2E5EA4A3, 0x28FEEFAF, 0xBDDA6EF4, 0x32AFD40C, 0x99A5FB3B, + 0xDD1D73A3, 0xA342CB3E, 0xA78445F5, 0x53979C3B, 0x427D7943, 0x5221B58C, + 0xA6CE9A5E, 0xFB50ECA4, 0xBB86E36E, 0x60839F6D, 0xC5E1C2F3, 0xA1B7FB04, + 0xFBB65E0C, 0x78B80F5E, 0xFD8D972B, 0x3BF3BA90, 0x2D572D9, 0x2B5BC920, + 0xB6A0DE01, 0xD274D306, 0xC7C6C855, 0x9CAA669B, 0xB04AA641, 0x4D6B1760, + 0x3E17ED79, 0xD23241B0, 0xA4A6F957, 0xCBDE76AF, 0x4E5F9493, 0x4C215DA5, + 0x33A052B, 0x1A4D80C2, 0x40AEEBCA, 0x390D106B, 0xE9E8E018, 0x5AF3D6CF, + 0xE35E1D4, 0xC4FB1C6, 0x14B6299B, 0x8D2E25F0, 0xCCBF932A, 0xC5AC18B6, + 0x2227567D, 0x86B5CE2F, 0x26344534, 0x22C515EC, 0x2442B70D, 0xEC3721C6, + 0x34EF687D, 0x9C06323A, 0xEAF3EA60, 0x60396F52, 0xEAE78AA1, 0xC9D06CBC, + 0x6F95F6C8, 0x584CC258, 0xBA9A27BB, 0x66DF8D47, 0x9D4804EA, 0x57DD9E67, + 0xF89C7895, 0xF5336111, 0x25C122C8, 0x62742114, 0xCFBF6D26, 0xBF9F6482, + 0xE6F02CD9, 0x11083202, 0xC99E2618, 0x7EBC9351, 0x440112F1, 0xC9DFFBC1, + 0x3BF4DC25, 0xB1BA7FA0, 0x61AF9AED, 0x6B1F7D29, 0xAD865294, 0xE3E01129, + 0x7E9E77A5, 0x100435D7, 0x9FE3A71, 0x88597C81, 0x722849FA, 0x31C5A0AF, + 0xFBA178DC, 0x7F102D31, 0x5CA07864, 0x950E6F98, 0x82C34882, 0x5D041F11, + 0x8C613C57, 0xD398CFD1, 0x426F38AD, 0x5599AB1D, 0xFAFA078D, 0xAB25B413, + 0xD94B32CF, 0xB288FE38, 0x2893BB46, 0x9A0B4168, 0xA91BCA94, 0x653A5E8D, + 0x2174EBBE, 0xDEFE6415, 0x30DA429C, 0xD0C5E40C, 0xB4719AA4, 0xD29CE7A6, + 0x905957CD, 0xCD287499, 0x83CA0AA7, 0xA8385832, 0x25A0CA02, 0xC20D47A4, + 0xB562F556, 0x4BC19E4C, 0xD9E215C7, 0x27E838B4, 0xC58612F4, 0xA2827F6F, + 0xC49DCDBA, 0x679B7362, 0x4E495845, 0xCFD2F0D1, 0x395E76A0, 0x375A655E, + 0x92E2058F, 0x73F9F0CA, 0x61EFF3B3, 0x51FFD362, 0xE7410345, 0x7FDA8B3B, + 0xA219E2E8, 0x17ABE543, 0x26557412, 0x4B30084D, 0xA68E191D, 0xFE0D93DF, + 0x73EF127D, 0x4DECDDB1, 0x77FAF45F, 0xD6002898, 0x92DD0A40, 0x157F6DDF, + 0xC2A55F8E, 0x4359F924, 0xFB630C3F, 0x338B6B58, 0xB2945F75, 0x4FA23A0E, + 0x836EB8C0, 0xB3B18FD, 0x86114337, 0x24668ACB, 0x99BB82F0, 0x924C8A47, + 0xBA959701, 0x81155ABF, 0x8C612D71, 0x36074CA7, 0xD1668C41, 0xE35F58C7, + 0x7FC2802D, 0x8E6A7CF3, 0x65B07D07, 0x815F6A6B, 0x791BF0DD, 0x6E47D719, + 0xC24394C7, 0xE84A6EB, 0xF194AFEE, 0x464A2F52, 0x677579FD, 0xEBA775AE, + 0x1F6EEFF, 0x9A795237, 0x78D9D45F, 0x9D0B344D, 0xBBD34AB7, 0x2F85B12A, + 0x16C5C2AD, 0x3990985D, 0x88DF3351, 0x82811AA5, 0x6D351F41, 0x4066A69D, + 0x86B660BF, 0x6EDB4768, 0xDDD78CF0, 0xB5D74F6E, 0xE89E220C, 0x91439687, + 0x947CC9C9, 0x3857E2BD, 0x302F8AE4, 0x1DABE7F8, 0x4832D6C9, 0x37D58FCB, + 0x4EA8A711, 0xCD7BAC98, 0x19DBF8BC, 0xD8DE8DC2, 0xEAFF7E7B, 0xB7629C93, + 0x792C6E19, 0xF7009192, 0xFF88439D, 0x2E196A66, 0xEC71B78C, 0xEAF4BB3A, + 0x7C16225E, 0x668F337, 0xCBEE1608, 0x6D5B5552, 0x345DC590, 0x681209CC, + 0x7B24A819, 0xD08A1416, 0x99888FE3, 0x9FC7288A, 0x24BD8502, 0xEA1D9678, + 0x20EECA0, 0x59BEA057, 0x5ADE91EB, 0xDEA8E49D, 0xFA200E6F, 0x9149C81D, + 0xF2281E93, 0x8A5B0451, 0x67312D58, 0xE3B849F1, 0xD2217960, 0x7CDF59F3, + 0x33C775C0, 0x9EBA8799, 0x7DF9506, 0xB4E96110, 0xB8FCF3E3, 0xDEA059B2, + 0x8229B6EA, 0x316486F6, 0x43919185, 0x6C0D90F3, 0x1C6F3DF8, 0x38DB92A9, + 0x5CD41244, 0x2C9F0A7B, 0xDF4A315F, 0xF7CE9C66, 0x4C800860, 0x318D53E0, + 0xF105C20D, 0xD753E1F2, 0x750810BA, 0xA17ECCA5, 0x2010140, 0x4D884763, + 0xC2BB0DA7, 0xB2D5BA74, 0x141CECD4, 0x887FDFC3, 0xC64B53, 0x2D2A85F6, + 0x15532B45, 0x5D5CBCE1, 0xBEB9A16A, 0xA214611B, 0x9FC5AC5F, 0x11AE5DD7, + 0xA0B9A5A9, 0xFC648AF4, 0x740009AC, 0xED0E0321, 0xB8E6A61, 0x8910C544, + 0xC74F26C8, 0x9525CCF3, 0xB41AEB59, 0xE61984CE, 0x598B2197, 0xA412E59D, + 0xE1976DD4, 0xB29BBE16, 0x88FD9FB0, 0xB04006F3, 0xB45E309, 0xD5CC15F1, + 0xD9DAF630, 0xDC809335, 0x803ED52, 0xB537F5A5, 0xA994F6EB, 0xF5288568, + 0xF66FD264, 0x2EA2B3A6, 0x647619F3, 0xFFB38C7A, 0x1BC03B9, 0xB6BC3061, + 0xBF30596E, 0xBE2AD27B, 0x8AC04220, 0x641979A3, 0x9ECCBB89, 0xA144FBC1, + 0x4E8FAE26, 0x8C5A9D90, 0x299ED467, 0xD7C9C7E3, 0x1D4865ED, 0x76F31C3D, + 0xCEE81CDF, 0xB479195E, 0x6FFB3AE1, 0xDC8A398, 0x300F7364, 0xC7940AFA, + 0x3B85BE3E, 0xD98CC40D, 0xA24A3D89, 0x3A674204, 0x22888A38, 0x2E77F2D, + 0xA2841C9C, 0xCF0689C3, 0x9FE98922, 0x89335017, 0x2D6B69A7, 0xFEDB63F9, + 0x899AF4EF, 0x9F9F9B40, 0xA4BE97E8, 0xA51DAF7A, 0x16AC50D3, 0xA8D7ED6, + 0xED193443, 0x7615EF1B, 0xB0DF6A4E, 0x64FFE794, 0xE3DB2C9A, 0x7435B022, + 0x556E825C, 0x23802AF9, 0xC25098A4, 0xE75A18BB, 0x70B2A7B9, 0x7FB81BF, + 0x63EF910, 0x6C669591, 0x6574DD2B, 0xCF6E379D, 0xD2B3AFAC, 0x1E6A1101, + 0x1DE22385, 0x2338191F, 0xC69704B6, 0xCBABC599, 0x54EB4809, 0x7839BE6D, + 0xD50017DD, 0x39B1A0E1, 0x288D52D3, 0x2D52668C, 0x20D22A68, 0x4E1207D1, + 0x3FCC0EFE, 0x47F3FE64, 0x25177A90, 0xB4BFDD4D, 0xDA8DBDCE, 0x6F7275A8, + 0x6BEAA655, 0xAA1810FC, 0xE4DB593A, 0x8A4D4BC0, 0x2C402E93, 0xF1C0F7F9, + 0x6F0CC577, 0x70412414, 0x752F9DC1, 0xD82E38EA, 0xAC455F7B, 0x4DCD4EDB, + 0x92BC2696, 0xFB03F135, 0x4FCA1F8C, 0xBD5E75F6, 0x502F41B0, 0x3616D3F1, + 0x2E5B8E31, 0x2026EB19, 0x57E783D7, 0x467BBE00, 0x4703ABA3, 0x1F776B9C, + 0xE2570A84, 0xFEC7DB48, 0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6, + 0x99D5D8ED, 0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F, + 0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB, 0x56186AA1, + 0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94, 0xAC18B207, 0x5FC78B3, + 0x7F10621E, 0xA769E6B2, 0xEC9F4A11, 0xCE3F982C, 0x62BA2EF5, 0xA5F239CD, + 0x73D63FED, 0xE36E9F5E, 0x8AC1DA0E, 0x3F3DB3EB, 0x738326EA, 0x35C366B1, + 0xCD476E86, 0x82F6B208, 0xF11A9FC1, 0x426AC396, 0x7E4D1B93, 0x75E4EDB7, + 0xAF3C44A7, 0x51A5EF5C, 0xFAD2463D, 0x8A5639CA, 0xC995AC78, 0xCC4BE4F6, + 0x3AFE7F8D, 0x66993D04, 0x4386FF37, 0xCBC1C6C2, 0x55A8F5EC, 0xE81A9A75, + 0x30A67E1B, 0x4A4A7D0C, 0x20F7F993, 0x1891805, 0x738976AD, 0xD426E7D6, + 0x3C5CEEBF, 0x4499187F, 0xABF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456, + 0x421BCF29, 0xF6740F9C, 0x8916BB8D, 0x3D72AAB, 0x9AD54DD7, 0x7549C6EE, + 0x7317342B, 0xA18546D4, 0x1056BDA7, 0x54BBCCCE, 0x8CE63E46, 0x5D146234, + 0x33BE6C63, 0xB250C4E5, 0x89D72335, 0x87C36BA, 0xB65530CC, 0x2DFAC48C, + 0x1663D16F, 0x59B80AA, 0x950274EA, 0x92532D4A, 0x3CEF802D, 0x492FBDA5, + 0xA63A2574, 0xEF8005C2, 0x94A18651, 0xAF627ABA, 0x6829B238, 0xA698F646, + 0xD2598516, 0x10144D36, 0xD9B1D1B9, 0xAB2ACF05, 0x5395B699, 0xA7851C75, + 0x1806C6F3, 0xAE970306, 0x3284B145, 0x98F4FE8F +}; + +/* The source data is random across the q31_t range. Accessing it by word should + remain random. */ +const q15_t * controller_q15_inputs = (q15_t *) controller_q31_inputs; + +const float32_t controller_f32_inputs[CONTROLLER_MAX_LEN] = +{ + 43.0264275639 , -17.0525215570 , -94.8488973910 , -8.1924989580 , + 7.2830326091 , 66.8368719314 , 33.9778190671 , 117.8652289772 , + -129.6077797465, -14.6420815368 , 18.0239223278 , 20.6760530292 , + 55.0375037651 , 1.8674609862 , -85.6534302408 , -33.5750364909 , + 29.2110949614 , 110.4727049460 , -94.1914619387 , -1.4084169343 , + 83.5181653041 , 47.3073514127 , -13.3420621181 , 30.3389699104 , + 12.1188124277 , 100.9730921941 , -114.0146362390, -77.5823200409 , + 37.2019034618 , 40.0026301128 , -58.3387276630 , -34.9472398600 , + -5.1169678311 , -87.7660091118 , -150.5888601131, 56.0349370503 , + 50.2168884079 , -74.2313236767 , 22.3648603560 , -6.8676387051 , + 74.8957303680 , -90.1292012823 , -55.1436241586 , -66.6732976100 , + -6.7918147615 , 7.7612697081 , 35.7892605979 , -20.0470508830 , + 41.8369017546 , -143.7378056984, -41.9127158600 , -108.3531841158, + -57.1917422289 , -124.2808828105, 38.9316388820 , -77.9212517405 , + 37.1990818377 , -28.9545952748 , -155.6371057564, 45.8088886393 , + 36.2537018275 , -6.5727656016 , -104.2070491921, 45.5583813729 , + -19.7674717059 , -80.4802190947 , -1.4444563441 , -42.2142256438 , + 36.6546339194 , -57.0866498590 , 44.4677067511 , 65.7285753407 , + -103.8158864647, 25.4348723711 , -153.5419639389, 39.3608409474 , + 49.1658103436 , 79.5570602275 , 75.2944095996 , 58.9394700746 , + -53.1018534392 , 33.4172444014 , 35.6224682287 , -64.4353396418 , + -125.8464291251, -47.6072111617 , -26.2177687594 , -12.0061322096 , + -17.7887967585 , -28.2926175090 , -62.0691715749 , 40.5098573604 , + -191.1123732593, 119.6750713043 , 19.6182375803 , -26.7615252921 , + 2.2957847015 , -108.3436451287, -50.5906164995 , -5.6360985100 , + -11.6772204201 , -84.2765293757 , -60.9317810068 , 82.0446350218 , + -70.2048296348 , 72.8738253222 , 60.2450218115 , 114.2741231228 , + 46.8180775285 , 6.9915412654 , -8.9909197429 , -78.9165936808 , + 66.4731535459 , -68.4235455651 , -79.8254597080 , -10.6308477115 , + -62.6161569330 , -55.7744410292 , -11.8408366528 , 98.1034940997 , + 35.8213741877 , -54.4694482732 , 86.9631830044 , -53.0343838122 , + -47.4898642865 , -47.2010929590 , -31.3312639685 , -23.0908245172 , + 12.0258009869 , -5.1098204703 , -9.8420230737 , -107.3328761158, + 44.6810431959 , -17.9083820345 , -60.9753512872 , -7.5915088994 , + 17.2250813329 , 57.9176125648 , 124.3004161362 , -63.1950908493 , + 120.5788885640 , -44.1734238117 , -91.7408095116 , -43.5696066595 , + -49.9560710099 , -167.8513443296, -70.9437505499 , -46.4109705355 , + -64.2264526456 , -13.9995803916 , -100.9548186356, 9.9101010575 , + -50.0615130815 , -55.7590145012 , -60.3195153388 , 61.7913378549 , + -102.0850899209, 53.2360193126 , -25.8997883369 , 75.1445512333 , + -113.8148602310, 17.8027281119 , -19.5006822722 , -44.2169628471 , + 107.5017084384 , -113.7909124666, -43.9735396033 , 7.6880981388 , + 46.7384653508 , 9.9047443751 , 81.8646964362 , 132.3812863877 , + -95.6959050236 , -68.5015813484 , 65.8586404494 , 18.5039353889 , + -30.1786166621 , -90.3098515667 , -22.9356228552 , -20.5778272423 , + -2.2127786675 , -35.4418447703 , -51.8722915974 , -107.9024439078, + -51.5940748232 , -51.7463262677 , 74.2795485984 , 94.2205022462 , + 9.7016384049 , -47.3556083155 , -36.7822314478 , -151.6455525363, + -15.7183814485 , 78.2063383182 , 0.1516414969 , 37.9304181609 , + 20.6185902740 , -22.2164106778 , 6.1160554677 , 2.4061326953 , + -111.6681824598, -60.0858917090 , 75.1698614693 , -76.5787410444 , + 28.3391655715 , -2.4946186443 , -68.0378899682 , 104.0893199171 , + -51.8319647254 , 38.8521710524 , 75.9114239564 , 73.9206172905 , + -103.2533029987, 6.9002718274 , -36.6346436319 , -25.1990926265 , + 1.5852145953 , -50.6438436795 , 21.5018844428 , -151.9305562846, + -51.7326681814 , 21.4475994143 , 42.2564011921 , -74.0520586926 , + 49.7370635809 , -13.2957534126 , 36.6746826778 , -31.7005492589 , + 148.4894964268 , 79.7890632353 , 16.8856024809 , 16.1690460177 , + 39.2665169484 , 117.2461167794 , -37.4827984831 , -47.8387803604 , + -95.7025286193 , 34.3058214285 , -124.9536456028, 56.1640195764 , + 94.3636873606 , 35.3992852810 , -38.3920852159 , -100.5738062016, + -29.7837022314 , 42.9133913996 , -34.2715618187 , -14.3589115627 , + -16.5935468750 , 20.4574192236 , -88.7897972666 , -38.6285080386 , + 53.3203422726 , 98.5991486746 , 122.7305462474 , 67.7902817187 , + 5.1764117389 , 5.0632821624 , 21.9288789574 , -78.3140512638 , + -21.2069682335 , 23.6342010925 , 34.4445769455 , 59.1346766615 , + 28.9978778000 , 39.8121180845 , -17.1650033520 , -56.9174900874 , + 17.8157086148 , -112.8801457350, -122.4019040408, 140.8669393157 , + -65.4664329639 , 40.6952775518 , 32.7260891658 , -43.2565155866 , + 19.3945751928 , -20.1815002000 , -67.6601711640 , -18.1921178207 , + -35.6802153684 , 49.9550290306 , 131.4925251016 , -31.2940938167 , + -5.2848453344 , -109.5580577933, 20.2437599390 , -8.8782958734 , + 54.1836717264 , 7.2555852190 , -3.5698316137 , -51.9236786262 , + 6.7861547980 , -104.4814551670, 45.8458629668 , 70.0890876844 , + 38.3572837740 , 61.8024165129 , 68.0176962024 , -12.8193934080 , + -21.4661610917 , -0.9377108815 , -74.2100679061 , 71.0490808147 , + 91.9813889497 , -14.5797640164 , 3.5036749129 , -138.3605478356, + -48.1501349794 , -16.0636922482 , -12.1334197606 , 15.0562207637 , + -34.0878176054 , 55.1075126157 , 97.3829871877 , 0.2053358099 , + -94.8713267382 , 51.5460954054 , 21.2966946363 , 58.1331025047 , + -23.4599044132 , -19.3315856528 , -8.4497193577 , -1.9594679356 , + -33.1906549336 , -144.6825417978, -57.1218958072 , 35.7353406097 , + 61.4666549819 , 14.6536253128 , 82.1632196866 , -44.6230161723 , + -91.1022589278 , -18.5737673927 , -136.8975612334, 56.9606788003 , + 70.7059960183 , -68.2829345081 , -10.2629800455 , -53.6385325047 , + -68.7928766204 , 88.2444688302 , 83.1412324801 , -102.9206928160, + -68.2329763159 , -69.7552955469 , 108.2132269009 , -28.2582329307 , + 5.6685898328 , -36.0392956840 , 43.3269513128 , -8.6436416796 , + -16.5054886972 , 11.5008791788 , 39.6923606683 , -28.9039554061 , + 13.5938214364 , -23.6296332202 , 49.1171161163 , 53.1636857935 , + -62.9672053166 , -54.2594757384 , 48.3838956696 , 8.0469071555 , + -33.6472086213 , -120.5381752144, 55.0880453111 , 17.8990740563 , + 144.9402232336 , 101.7886229203 , -73.3666393712 , -16.4721379138 , + -12.7447935685 , 101.8245160983 , -49.7026860415 , -15.1227790364 , + 65.7430288442 , -131.8695390036, 10.2750933946 , 90.9752774838 , + -26.5859990591 , -95.6962772568 , 76.2174589344 , 24.8796848060 , + -38.8938223046 , 54.1687774852 , -37.3585968996 , -34.6848570502 , + 33.0151011570 , -55.8345877671 , -3.9009101671 , -31.5024971691 , + -9.6863895491 , 91.8719195957 , -58.9993249744 , -25.6887030614 , + -8.0829472205 , 4.6386491741 , -71.4019697167 , -21.3734669095 , + 86.2079144404 , 79.6823974266 , -0.0910915997 , 44.8067718095 , + 58.7204020766 , 72.6856808976 , -50.3373732478 , -116.1175365534, + -15.0884909384 , 5.4593772059 , -63.6553527905 , 37.3460388205 , + -32.2399421679 , 95.7569350513 , -7.3700141964 , -56.0370832967 , + -41.7377150439 , -42.0042856519 , 12.5134312941 , 93.7845584531 , + -32.4801087157 , -33.3976050318 , -24.2252126001 , -46.3199064467 , + -20.3704610276 , 15.8571376404 , 88.9127217235 , -33.1132582267 , + -1.0005675836 , -28.1780471904 , 150.9349379135 , 38.0600520828 , + 36.4338677563 , -3.3709201641 , 29.7709773016 , 16.5064119077 , + 21.3147729463 , 110.6714300904 , 18.8406036507 , 14.8963298097 , + 50.9975960392 , 16.3991140350 , -194.0805845907, -41.6723945839 , + -74.8991127408 , -6.4587655805 , -0.6883628218 , -49.8709647175 , + 194.2265120473 , 64.3043624521 , 16.0040882780 , 68.4032551772 , + -43.4050313128 , 84.6826289824 , -28.1357565943 , 134.6895584120 , + -7.9746152680 , -95.6692886462 , -48.9444370342 , 79.4479343188 , + -50.5345228122 , 52.4800633307 , -14.7735051703 , -20.1510237050 , + 22.5049816980 , 64.4191999102 , 24.8385648232 , 99.4265041360 , + 62.0189508473 , -28.3892600378 , -109.8842008564, -79.0407483407 , + 18.3408112020 , 49.1650536089 , 31.5419844924 , -36.1160722679 , + -132.9148081329, 10.4053531567 , -129.2463715470, -43.4602207151 , + -24.2420653292 , 91.5388317556 , 21.4762248190 , -44.3810909139 , + 18.4098011282 , -45.8691164539 , -20.9831197962 , 16.2076792914 , + 66.0224147666 , -13.6794615513 , 101.2163279622 , -62.4462618603 , + 22.2040981785 , -52.3208382802 , -24.7909079016 , 58.5150375093 , + 18.8569705105 , -55.6083430939 , 131.0273367422 , -34.5209015065 , + 121.4357296573 , -77.2590299593 , -51.5929566898 , 5.0247131098 , + -23.8451707592 , -4.5912313547 , 31.1387246821 , 61.7019310824 , + 49.1912429744 , -50.5836913031 , -74.8182600630 , -21.6209317022 , + 20.9409464654 , -72.7870824583 , -28.3530746820 , -45.0794425434 , + -13.4910629905 , -62.0158772255 , -34.1421181246 , 44.2844972784 , + 8.4213193211 , 79.9349022793 , 60.0160502260 , 32.2272994080 , + -72.2893887746 , 17.3063698247 , -134.6335742431, 64.6499736261 , + 7.1411921919 , -37.5517577873 , 6.2405670930 , 117.1920927305 , + 128.7420689815 , -3.1556854963 , -13.4100422909 , -11.9336372907 , + -8.6022400553 , -102.0033506666, -78.4696575074 , 15.0765861403 , + -111.5219718576, -13.4162786508 , 38.2437013694 , 61.1637732561 , + -34.4804160003 , 107.4438003830 , -79.4193067813 , -81.1842853968 , + -26.2622970331 , 132.3205425408 , -119.1464268477, 67.3048866598 , + 103.3266736715 , -58.1865815617 , 27.6231908601 , -11.2004371750 , + 26.0340617206 , 12.5696123916 , 0.6442714420 , -30.7393043544 , + 1.5314955897 , 49.9110088250 , -106.1358721920, 51.1608329944 , + -32.8684239794 , -27.7215905745 , -11.6450303367 , -36.7731678028 , + 59.9383486599 , -4.6301990580 , 5.0361682939 , -10.5669407980 , + 124.0908762205 , 35.8305364082 , -123.6216777114, -74.2569079167 , + -56.7651776816 , 16.0736385582 , 23.5030632215 , -110.6764295938, + 44.3086821806 , 9.4452708243 , 5.3300080251 , 39.0483916714 , + 151.4550562868 , 62.8957092621 , -116.8103461233, 5.1129927759 , + -33.2252515135 , -9.4522506046 , 22.7026048372 , -15.5264414569 , + 71.2087620034 , 19.1191568332 , 50.3019546809 , -5.6096922409 , + 22.9344126462 , -7.7591876203 , 31.8949515564 , -58.4253952381 , + 66.4341297173 , -19.0583083044 , 96.7695087855 , 20.4934280047 , + 4.9544603116 , -20.8288135920 , -173.2659655408, -62.4883621640 , + -48.5528422703 , 12.1437504278 , 60.2482234666 , -19.6072312919 , + -34.6320214291 , 129.0089698963 , -50.9042160618 , 98.3952661477 , + -4.7051792479 , -13.1768910826 , 69.5138802139 , 58.5748201565 , + -45.9385652563 , 151.7952104306 , 34.2541941013 , -58.0417838381 , + 28.1480473670 , 46.4006562684 , 97.7001828545 , 4.0855607626 , + -32.6097018162 , 16.8913949959 , 105.7266202978 , -89.3978374651 , + -60.9338593128 , -41.2220734230 , 49.9393070783 , 95.0974764854 , + 49.2498366456 , 58.6214364590 , 34.1113830569 , 45.6634098874 , + -22.5356086770 , -97.1978653617 , 86.5565049535 , 70.6118545777 , + -30.6978082909 , 118.7238621666 , 14.5922386932 , 11.3449652072 , + 65.6007783405 , 82.6369678204 , -52.0390492248 , -47.0160551227 , + -95.5142448634 , 99.7162626888 , -36.5523815090 , -42.8042935534 , + 68.3566199798 , -13.8451547552 , -71.1629911780 , 36.2989433752 , + -32.4867163365 , 112.4079947071 , -75.6295117422 , 47.5276421639 , + 51.8078250755 , -26.8715188457 , -9.6291144797 , 40.1999849640 , + -38.4634033246 , 40.9764960915 , -26.1715730268 , 36.5996396515 , + -26.9924731886 , 53.7879986570 , -83.1658398348 , 23.6381378489 , + 43.8794937753 , -55.4133836419 , 90.0266130838 , 14.1036181982 , + -18.1225736715 , 85.1363181151 , -62.5970846379 , -18.5291947838 , + -25.7341986703 , -49.7061342931 , -59.0442763971 , 50.8960636803 , + -87.6471123430 , -36.7217762531 , 22.5952364054 , 11.1107885650 , + -0.5377327229 , 160.8145792630 , 73.3103441505 , 10.1656872354 , + -50.4554350397 , -57.3478171016 , -15.4201715357 , -26.9135446491 , + -4.9891264771 , -37.0226770057 , -80.9919535641 , 50.4418660876 , + -25.8517575250 , -69.9538258421 , -17.5730160671 , 15.9405836751 , + 113.9545230349 , -46.1040379057 , -94.2458635014 , -69.0338522452 , + 43.5813790265 , 107.1836101171 , -55.1012654323 , -77.1529555887 , + -33.1530320656 , -94.5582659641 , -53.6837586872 , 27.0680381378 , + 93.9385415207 , -61.0955216188 , 18.0530957225 , 7.9150142320 , + -12.1218191587 , 34.0173961457 , 40.0084937565 , 9.8119275580 , + 44.2065861274 , -1.8718514394 , 67.4740024215 , 46.7391150131 , + 207.2404815875 , 45.1635364462 , 43.3580102761 , -44.0244218674 , + 83.2387206007 , -8.6441851856 , 12.3993902588 , -22.5091685270 , + -19.8332981376 , 97.9196509289 , -76.6720306234 , 28.9740705859 , + 121.9415248016 , 9.6656982611 , -51.0996453694 , 37.3704374740 , + 74.7589840907 , -113.4066752631, 120.0029566342 , -105.3786221360, + 81.8152755619 , -13.4979932982 , -21.4680758393 , -85.1088235539 , + -65.3610798409 , -35.0444139470 , -48.0220794487 , -41.6210317362 , + 33.1212995259 , -82.1480936443 , -10.5479715135 , 76.4601917004 , + 42.1983651157 , 92.6104239912 , -42.3536237955 , -24.5644182272 , + 30.4446637772 , -90.2899420489 , 63.6723540422 , 103.0895811428 , + 64.1706769263 , -10.7069812309 , 21.8927240409 , 6.3571071738 , + 57.1457649358 , -52.9866276448 , 66.0981829072 , -29.5372056881 , + -79.2252039810 , -136.2440652798, -57.0106422562 , 86.8203548141 , + 66.4244149837 , 53.3230426111 , -66.1283059222 , -131.0402660353, + 8.0548411081 , 122.9088988100 , 1.2626894208 , -60.5059112373 , + -68.8707203082 , -6.4747987200 , 85.8411327244 , 99.9624156733 , + 90.4197864338 , -35.9630441182 , -22.9158275507 , -17.3660128776 , + 16.7845345761 , 34.7219749782 , -39.3513765878 , 1.0460702756 , + -60.9494500182 , 20.0900333387 , -85.9636743832 , 88.4400782168 , + 15.0729628728 , 61.5499846243 , 11.8579871757 , 107.8617581581 , + -42.9393027864 , -62.8422307621 , -19.0589600542 , 4.0750325807 , + -36.0651825425 , 55.7638724501 , -10.4691736080 , -55.5672537178 , + -61.2061519915 , -21.1885348576 , -131.2535612498, 24.7463552676 , + 22.9426321237 , 14.3038202264 , -138.0926317438, -59.0892900856 , + -162.5416439986, 7.1307658250 , -141.1236672256, -4.7173618068 , + -16.7741532807 , -68.2615451173 , -2.6608701102 , 84.1978109826 , + -11.3446202072 , 59.9630033088 , -1.8994925010 , -37.9301641959 , + -119.4435600954, -11.4587491646 , 12.2423215240 , -7.3169898616 , + -67.0373621128 , 36.0198843055 , 53.9791315249 , -134.5885680695, + -83.8330811965 , -16.6714816463 , -8.8498552035 , -24.0513088196 , + -22.9444328877 , -37.7961441531 , 25.1975736186 , -136.1611637464, + -5.0843464033 , -10.3939554694 , 20.7422826935 , 75.6854136623 , + 46.4179626736 , -57.0052830175 , 7.3457235521 , -51.5504447254 , + -158.4375751701, -200.2426967181, -48.1234996261 , 1.6623945527 , + 21.1746524375 , 99.4092980367 , -2.3206772903 , 45.7989166757 , + 2.0181548348 , -88.0556010969 , -59.1527212096 , 47.3607925077 , + -10.4181140309 , 56.3558125650 , -8.9799125560 , -30.0376711812 , + -36.7132904688 , 35.7785050392 , -13.0763909369 , -2.1855594714 , + 18.1550954005 , -28.6711803575 , -55.4495172398 , -2.8812973198 , + -59.9575059158 , 40.0588875786 , 57.4713686602 , -3.2835144853 , + -36.7193552111 , -64.9415131516 , -166.9555466445, -23.5556853844 , + -54.9408569587 , -35.2310451959 , 21.3345143458 , 65.7590671151 , + 51.2214538168 , 46.1271939944 , -42.2235267919 , 127.2329928299 , + 105.2391778600 , 17.6726845966 , -129.9021148044, 8.7065613044 , + -94.0987112511 , -3.5375742950 , -23.1385452379 , 60.6219530633 , + 92.5445564235 , 48.5111974469 , -52.5699309159 , -60.0634811685 , + 25.9034368684 , 140.0249495491 , 1.5918852392 , 38.0266038291 , + 17.5588710703 , 3.4294066089 , -27.6748782173 , 59.6182974489 , + -35.2924781853 , -38.6198576115 , -13.6119803198 , 7.8375587489 , + 22.7250686519 , -28.3524510951 , -34.4269062817 , 22.6464817325 , + -61.6528147860 , -5.9782002429 , 61.4730771294 , 43.5582379527 , + 55.6862408270 , 87.8745651631 , 46.3401042715 , -19.8780979663 , + 74.1272633369 , 29.8590452377 , -12.8665765140 , 34.2931401219 , + 53.9279617551 , -16.9017895140 , -70.1527553166 , -79.6367897992 , + 109.3728271017 , -129.2214826835, -53.4644539730 , -51.5654458993 , + 17.6062148433 , 3.5090251835 , 74.2615941204 , -109.3431097845, + 40.1403465151 , 28.8714561280 , 94.0868659302 , -19.0047033845 , + -60.0967410050 , -19.0998457619 , -67.2027075128 , 72.0711434846 , + -17.8737851232 , 123.7050551274 , 132.6331504104 , 25.5018761009 , + -36.7817189239 , -29.1580893235 , -6.5848563828 , 90.2868948516 , + -35.7017258498 , -68.5675432955 , -52.4888589786 , 47.1377730021 , + -7.4546621940 , -52.0657517138 , -49.0404829633 , -114.6910280126, + -117.6819819437, -32.7856729408 , 31.8232065591 , 12.1192973039 , + 35.2678513420 , -1.0336778293 , 30.7021249679 , 127.0442906046 , + -84.8457819393 , 28.9862843096 , -47.3524701726 , -126.1094998460, + -2.9700276582 , -2.4956545870 , -53.8624121141 , -85.2114117637 , + 76.9057985618 , 137.1205201755 , -19.0830817212 , 14.3407526579 , + -56.5921994449 , -25.6084873186 , -44.9470801106 , -133.3139496090, + 0.3487447576 , 33.4499716730 , 34.7126257844 , -9.3307383323 , + 27.2996276947 , 10.8765676134 , -91.1032360444 , -90.9584216222 , + 1.6981490570 , 96.8557438791 , 56.7726390913 , -44.3246449237 , + 52.3260643361 , 21.5551140465 , 27.4535327381 , 2.0072717479 , + 7.4823125629 , 77.1185863870 , 16.1372262663 , -10.7206012957 +}; + +const float32_t controller_f32_coeffs[CONTROLLER_MAX_COEFFS_LEN] = +{ + /* S->Kp, S->Ki, S->Kd; */ + 0.0000000000 , -1.0336778293 , 56.7726390913 , + 0.3487447576 , 0.0000000000 , 27.4535327381 , + -29.1580893235, 1.6981490570 , 0.0000000000 , + 0.0000000000 , 0.0000000000 , -2.4956545870 , + 0.0000000000 , 8.7065613044 , 0.0000000000 , + 0.0000000000 , 0.0000000000 , 0.0000000000 , + 18.1550954005 , -5.9782002429 , 2.0072717479 , + 33.1212995259 , -82.1480936443, -10.5479715135, + -23.6296332202, 49.1171161163 , 53.1636857935 , + 7.2830326091 , 66.8368719314 , 33.9778190671 , + 9.4452708243 , 5.3300080251 , 39.0483916714 , + 6.9915412654 , -8.9909197429 , -78.9165936808 +}; + +const q31_t controller_q31_coeffs[CONTROLLER_MAX_COEFFS_LEN] = +{ + 0x00000000, 0xFEF760E4, 0x38C5CBAD, + 0x00594756, 0x00000000, 0x1B741AB9, + 0xE2D78775, 0x01B2B9E6, 0x00000000, + 0x00000000, 0x00000000, 0xFD811CC8, + 0x00000000, 0x08B4E134, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + 0x1227B455, 0xFA0594AB, 0x0201DC90, + 0x211F0D7C, 0xADDA1689, 0xF573B824, + 0xE85ED05B, 0x311DFB52, 0x3529E750, + 0x074874D3, 0x42D63D3D, 0x21FA525A, + 0x0971FD45, 0x05547B68, 0x270C6366, + 0x06FDD5A6, 0xF7025315, 0xB1155A1E +}; + + +const q15_t controller_q15_coeffs[CONTROLLER_MAX_COEFFS_LEN] = +{ + 0x0000, 0xFEF7, 0x38C6, + 0x0059, 0x0000, 0x1B74, + 0xE2D8, 0x01B3, 0x0000, + 0x0000, 0x0000, 0xFD81, + 0x0000, 0x08B5, 0x0000, + 0x0000, 0x0000, 0x0000, + 0x1228, 0xFA06, 0x0202, + 0x211F, 0xADDA, 0xF574, + 0xE85F, 0x311E, 0x352A, + 0x0748, 0x42D6, 0x21FA, + 0x0972, 0x0554, 0x270C, + 0x06FE, 0xF702, 0xB115 +}; diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/controller_test_group.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/controller_test_group.c new file mode 100644 index 0000000..0f9709e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/controller_test_group.c @@ -0,0 +1,13 @@ +#include "jtest.h" +#include "controller_tests.h" + +JTEST_DEFINE_GROUP(controller_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_GROUP_CALL(pid_reset_tests); + JTEST_GROUP_CALL(pid_tests); + JTEST_GROUP_CALL(sin_cos_tests); + return; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/pid_reset_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/pid_reset_tests.c new file mode 100644 index 0000000..a930dbb --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/pid_reset_tests.c @@ -0,0 +1,52 @@ +#include "jtest.h" +#include "arr_desc.h" +#include "arm_math.h" +#include "type_abbrev.h" +#include "test_templates.h" + +/* Bucket of zeros. For comparison with the output of arm_pid_reset_xxx. */ +ARR_DESC_DEFINE(float32_t, zeroes, 3, CURLY(0)); + +/** + * Define a JTEST_TEST_t for the function arm_pid_reset_xxx function having + * suffix. + */ +#define ARM_PID_RESET_TEST(suffix) \ + JTEST_DEFINE_TEST(arm_pid_reset_##suffix##_test, \ + arm_pid_reset_##suffix) \ + { \ + /* Initialise the pid_instance */ \ + arm_pid_instance_##suffix pid_inst = { 0 }; \ + pid_inst.state[0] = (TYPE_FROM_ABBREV(suffix)) 0xffffffff; \ + pid_inst.state[1] = (TYPE_FROM_ABBREV(suffix)) 0xffffffff; \ + pid_inst.state[2] = (TYPE_FROM_ABBREV(suffix)) 0xffffffff; \ + \ + /* Display cycle count and run test */ \ + JTEST_COUNT_CYCLES(arm_pid_reset_##suffix(&pid_inst)); \ + \ + /* Test correctness */ \ + TEST_ASSERT_BUFFERS_EQUAL( \ + pid_inst.state, \ + zeroes.data_ptr, \ + 3 * sizeof(TYPE_FROM_ABBREV(suffix))); \ + \ + return JTEST_TEST_PASSED; \ + } + +ARM_PID_RESET_TEST(f32); +ARM_PID_RESET_TEST(q31); +ARM_PID_RESET_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(pid_reset_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_pid_reset_f32_test); + JTEST_TEST_CALL(arm_pid_reset_q31_test); + JTEST_TEST_CALL(arm_pid_reset_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/pid_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/pid_tests.c new file mode 100644 index 0000000..2e1c56e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/controller_tests/pid_tests.c @@ -0,0 +1,79 @@ +#include "jtest.h" +#include "arr_desc.h" +#include "arm_math.h" +#include "ref.h" +#include "type_abbrev.h" +#include "test_templates.h" +#include "controller_test_data.h" +#include "controller_templates.h" + +/** + * Define a JTEST_TEST_t for the function arm_pid_xxx function having + * suffix. + */ +#define ARM_PID_TEST(suffix,type) \ + JTEST_DEFINE_TEST(arm_pid_##suffix##_test, arm_pid_##suffix) \ + { \ + uint32_t i,j; \ + \ + arm_pid_instance_##suffix fut_pid_inst = { 0 }; \ + arm_pid_instance_##suffix ref_pid_inst = { 0 }; \ + \ + for(i=0;i 0 ? (x) : -(x)) + +/* + Function to test correctness of sin_cos output by comparing it with reference library +*/ +#define COMPARISON_INTERFACE(type, threshold) \ + if ( (ABS((type) sin_val_ref - (type) sin_val_fut) > \ + (type) threshold ) || \ + (ABS((type) cos_val_ref - (type) cos_val_fut) > \ + (type) threshold)) \ + { \ + JTEST_DUMP_STRF("Error: %f %f\n", \ + ABS((type) sin_val_ref - (type) sin_val_fut), \ + ABS((type) cos_val_ref - (type) cos_val_fut)); \ + return JTEST_TEST_FAILED; \ + } + +/* + Sine and cosine test function for float32_t input +*/ +JTEST_DEFINE_TEST(arm_sin_cos_f32_test, arm_sin_cos_f32) +{ + /* Test function for all input degree values */ + TEMPLATE_DO_ARR_DESC( + degree_idx, TYPE_FROM_ABBREV(f32), + degree, arm_sin_cos_degrees_f32 + , + /* Display cycle count and run test */ + JTEST_COUNT_CYCLES( + arm_sin_cos_f32( + degree, + (TYPE_FROM_ABBREV(f32) *) &sin_val_fut, + (TYPE_FROM_ABBREV(f32) *) &cos_val_fut) + ); + ref_sin_cos_f32( + degree, + (TYPE_FROM_ABBREV(f32) *) &sin_val_ref, + (TYPE_FROM_ABBREV(f32) *) &cos_val_ref); + + /* Test correctness */ + COMPARISON_INTERFACE( + TYPE_FROM_ABBREV(f32), + MAX_DELTA_f32)); + + return JTEST_TEST_PASSED; +} + + +/* + Sine and cosine test function for q31_t input +*/ +JTEST_DEFINE_TEST(arm_sin_cos_q31_test, + arm_sin_cos_q31) +{ + /* Test function for all input degree values */ + TEMPLATE_DO_ARR_DESC( + degree_idx, TYPE_FROM_ABBREV(q31), + degree, arm_sin_cos_degrees_q31 + , + /* Display cycle count and run test */ + JTEST_COUNT_CYCLES( + arm_sin_cos_q31( + degree, + (TYPE_FROM_ABBREV(q31) *) &sin_val_fut, + (TYPE_FROM_ABBREV(q31) *) &cos_val_fut) + ); + ref_sin_cos_q31( + degree, + (TYPE_FROM_ABBREV(q31) *) &sin_val_ref, + (TYPE_FROM_ABBREV(q31) *) &cos_val_ref); + + /* Convert q31 numbers to float for comparison purposes. */ + ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &sin_val_fut, &sin_val_fut, 1); + ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &cos_val_fut, &cos_val_fut, 1); + ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &sin_val_ref, &sin_val_ref, 1); + ref_q31_t_to_float((TYPE_FROM_ABBREV(q31) *) &cos_val_ref, &cos_val_ref, 1); + + /* Test correctness */ + COMPARISON_INTERFACE( + TYPE_FROM_ABBREV(f32), + MAX_DELTA_f32)); + + return JTEST_TEST_PASSED; +} + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(sin_cos_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_sin_cos_f32_test); + JTEST_TEST_CALL(arm_sin_cos_q31_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/fast_math_tests/fast_math_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/fast_math_tests/fast_math_tests.c new file mode 100644 index 0000000..50ec433 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/fast_math_tests/fast_math_tests.c @@ -0,0 +1,38 @@ +#include "jtest.h" +#include "ref.h" +#include "arr_desc.h" +#include "fast_math_templates.h" +#include "fast_math_test_data.h" +#include "type_abbrev.h" + +SQRT_TEST_TEMPLATE_ELT1(q31); +SQRT_TEST_TEMPLATE_ELT1(q15); + +SIN_COS_TEST_TEMPLATE_ELT1(f32, float32_t, sin); +SIN_COS_TEST_TEMPLATE_ELT1(q31, q31_t, sin); +SIN_COS_TEST_TEMPLATE_ELT1(q15, q15_t, sin); + +SIN_COS_TEST_TEMPLATE_ELT1(f32, float32_t, cos); +SIN_COS_TEST_TEMPLATE_ELT1(q31, q31_t, cos); +SIN_COS_TEST_TEMPLATE_ELT1(q15, q15_t, cos); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(fast_math_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_sqrt_q31_test); + JTEST_TEST_CALL(arm_sqrt_q15_test); + + JTEST_TEST_CALL(arm_sin_f32_test); + JTEST_TEST_CALL(arm_sin_q31_test); + JTEST_TEST_CALL(arm_sin_q15_test); + + JTEST_TEST_CALL(arm_cos_f32_test); + JTEST_TEST_CALL(arm_cos_q31_test); + JTEST_TEST_CALL(arm_cos_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/fast_math_tests/fast_math_tests_common_data.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/fast_math_tests/fast_math_tests_common_data.c new file mode 100644 index 0000000..cf806e3 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/fast_math_tests/fast_math_tests_common_data.c @@ -0,0 +1,364 @@ +#include "fast_math_test_data.h" + +/*--------------------------------------------------------------------------------*/ +/* Input/Output Buffers */ +/*--------------------------------------------------------------------------------*/ + +float32_t fast_math_output_fut[FAST_MATH_MAX_LEN] = {0}; +float32_t fast_math_output_ref[FAST_MATH_MAX_LEN] = {0}; +float32_t fast_math_output_f32_fut[FAST_MATH_MAX_LEN] = {0}; +float32_t fast_math_output_f32_ref[FAST_MATH_MAX_LEN] = {0}; + +const q31_t fast_math_q31_inputs[FAST_MATH_MAX_LEN] = +{ + 0x414A5524, 0x4CAB5A17, 0x2D6F5B56, 0x7DAF4E3B, 0x29B226EB, 0x41F6F6A , + 0x25CE38BF, 0x3A970AFA, 0x3A44382A, 0x05540F8 , 0x3D060524, 0x13D56570, + 0x17D7791D, 0x7FE0438C, 0x26741841, 0x40A66E54, 0x218E4386, 0x39FF3726, + 0x0DC177CA, 0x702F2CF5, 0x41142FF1, 0x6C1476AB, 0x15F640DD, 0x662C4E49, + 0x38055E7E, 0x770871FE, 0x4F8B5360, 0x0D1928A0, 0x57647821, 0x258558CF, + 0x0C0C604D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0x36462E24, 0x6CE00F5C, + 0x66D40948, 0x355B5831, 0x3B72150A, 0x1EB61530, 0x73394127, 0x773F26F4, + 0x18052980, 0x038D6587, 0x1CF517F4, 0x22AD1691, 0x7A812473, 0x7CDC7D7F, + 0x4A5110D0, 0x6D895BB9, 0x0FD60F35, 0x1A215530, 0x20EB6DDA, 0x3DE62516, + 0x250123E1, 0x5ED813C8, 0x61E175B1, 0x2CBB32F3, 0x6D350907, 0x5B140D7E, + 0x6EAE272D, 0x3E221841, 0x418B7B88, 0x26BB1B80, 0x3CF010E4, 0x24DB166C, + 0x79AB7E42, 0x62DF28D1, 0x47004665, 0x63F56FC6, 0x419E0C75, 0x46BE1F38, + 0x243239B2, 0x758D03E0, 0x5CE12926, 0x3F574B74, 0x1F4458E2, 0x71D5639 , + 0x03A17B49, 0x173A7C76, 0x06EF7531, 0x48D32F34, 0x7D3E3063, 0x0F2F3549, + 0x5C314C9 , 0x18CB6B6D, 0x26F83697, 0x447B1E9C, 0x2E323A33, 0x50745715, + 0x01AC5746, 0x655A4E04, 0x4891060F, 0x1DA36B4F, 0x60E6227F, 0x20BF5EB4, + 0x50B3225B, 0x40C10544, 0x415656C , 0x15405EAE, 0x185863E1, 0x236A1C4E, + 0x08BD21F9, 0x2ACF7A68, 0x773665E5, 0x4EDF5F66, 0x617A1610, 0x524F4968, + 0x42D006CD, 0x5F000079, 0x24DC2447, 0x6A4F5599, 0x37064D4A, 0x1DE70608, + 0x233A2EE5, 0x137E488E, 0x18061B7B, 0x4079569D, 0x24A817D5, 0x44CE48F5, + 0x575F7883, 0x22406802, 0x71AD70BB, 0x1D4A5D79, 0x3CBC7CE4, 0x335840D8, + 0x05792E47, 0x27AD2C05, 0x3D196EAB, 0x331A40AF, 0x33035831, 0x13D93987, + 0x7C542094, 0x045F317E, 0x5DC43F8B, 0x1379650C, 0x5C20193F, 0x7DD50298, + 0x1D482B82, 0x4A6B6062, 0x5C8A757B, 0x272917C1, 0x10E16FBC, 0x355A5882, + 0x66F86A35, 0x604555A1, 0x7DF7FBB , 0x758A6216, 0x1A113463, 0x53541BAD, + 0x21576756, 0x483B6D8D, 0x1F052FCC, 0x4EA63DFB, 0x55B84677, 0x7B2E04F2, + 0x787A796C, 0x04A12CD3, 0x46029BD , 0x1DB22DD8, 0x1A8C7F28, 0x061E452E, + 0x132D3F78, 0x76525852, 0x73357BBA, 0x6BBB0A58, 0x62536AFA, 0x3F6B65EF, + 0x6DC57B58, 0x1EB718CE, 0x66B02740, 0x5FF60B47, 0x32477B8F, 0x7FF35302, + 0x29FD3E40, 0x475A43D1, 0x6FF9528A, 0x2018209D, 0x47E079C9, 0x4CF576D3, + 0x28074E34, 0x5D6F58ED, 0x234045D1, 0x51CE35F9, 0x25297896, 0x644320FE, + 0x0F4449A9, 0x54C361C6, 0x701D52F1, 0x4E094820, 0x718F0810, 0x61540689, + 0x79DE5A1F, 0x52865C23, 0x48AC3A4B, 0x6A0C1BE0, 0x21B705DB, 0x7086465D, + 0x1CC10929, 0x1E1D716E, 0x6D231D4C, 0x20495108, 0x38FF1971, 0x149C78D4, + 0x441F1E8B, 0x43D95372, 0x69C324B4, 0x210B7DC9, 0x47815E78, 0x02476137, + 0x6163DDF , 0x390D6EC2, 0x2F684E5B, 0x0E680ABD, 0x02232615, 0x12593380, + 0x7B1465FE, 0x065A6957, 0x130F53EB, 0x6D772EF7, 0x10E916B6, 0x63BC7A68, + 0x2ACB00BB, 0x651C5590, 0x194714B5, 0x730904EE, 0x59BB61B4, 0x34867DBC, + 0x391C706C, 0x3C164218, 0x28931CD0, 0x129A66AB, 0x13171F4D, 0x62882872, + 0x4B167FD4, 0x66902F4C, 0x7A794932, 0x54B152C , 0x30856EA9, 0x39466D55, + 0x36696451, 0x0F5B1E8C, 0x077A3C6A, 0x51B956B4, 0x367E2D2A, 0x1D2C662A, + 0x78FB6880, 0x4E6D40B6, 0x40706FDC, 0x4DF9679C, 0x20306EDB, 0x63812AE7, + 0x255D2748, 0x1B8B617B, 0x3E036FAD, 0x04E444A7, 0x55A37517, 0x669B2988, + 0x18FD5E8C, 0x67BD05CE, 0x34BB346C, 0x76994800, 0x05B958B6, 0x6DFA2FEF, + 0x2055B5C , 0x1F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB90B61, 0x43235DAC, + 0x31D424B4, 0x768C0D7E, 0x162F2F9D, 0x7B2A7A99, 0x79392693, 0x442D12C0, + 0x0692273E, 0x59A16E80, 0x5D956856, 0x44E73DAC, 0x0D874532, 0x5F5C1DD0, + 0x5D167858, 0x05597EA2, 0x1D821476, 0x59654ED2, 0x594C0DC7, 0x1A873506, + 0x3F693200, 0x7A651AB5, 0x20CC3C8A, 0x1F9E662C, 0x78E7631 , 0x2A01DA0 , + 0x3088472F, 0x12EE0D42, 0x360D4D5F, 0x73337E48, 0x0D634C06, 0x233A0ACB, + 0x706651ED, 0x7AA54079, 0x262239D1, 0x3EBB6BB6, 0x225A4F3D, 0x32581A06, + 0x6E6F5780, 0x577377C7, 0x75ED1DDC, 0x10DF2D15, 0x3C7929BC, 0x37175917, + 0x354E381C, 0x762A2DD7, 0x76435AC1, 0x73BB749E, 0x52FE4E7E, 0x6C8140F4, + 0x57694875, 0x12D30822, 0x474227CF, 0x37926D98, 0x121C7E24, 0x204E1EE7, + 0x58C6268 , 0x2152080 , 0x316C3323, 0x7AB14A31, 0x61C13C03, 0x7D8E74F1, + 0x73F446D0, 0x6C6C6A0A, 0x3BFD79FB, 0x67242969, 0x3E5524EB, 0x0FF5534 , + 0x52F05F1C, 0x17102DE3, 0x540F4A21, 0x798468E7, 0x419545EB, 0x193F7880, + 0x2B246B20, 0x408A2BC4, 0x4BF66A49, 0x40894C55, 0x4CAA6398, 0x247856E9, + 0x2F2A647D, 0x22F55D33, 0x70D37915, 0x50634C72, 0x5983671 , 0x2BCC5AF8, + 0x1A77D48 , 0x411B5CFA, 0x71074D7E, 0x3A6B3593, 0x61425F05, 0x6271012A, + 0x5B830310, 0x3D8418CA, 0x10A50792, 0x239F7137, 0x213D5071, 0x7F9930D4, + 0x2462664F, 0x54180F8E, 0x291505BA, 0x6586387A, 0x144B2C12, 0x18E425C7, + 0x3AA43373, 0x18F0503C, 0x19462AC0, 0x58B452EF, 0x72473895, 0x26BF5435, + 0x6DA553B , 0x60912FA6, 0x5C337331, 0x3D93CD7 , 0x4D035752, 0x20691929, + 0x389962F9, 0x36E701E9, 0x758B642C, 0x5FCA69E3, 0x596027F4, 0x2D5A2FD0, + 0x5F18324A, 0x3DB165AA, 0x76BA3876, 0x1BC21AF6, 0x3CC10841, 0x73A60174, + 0x625B7F58, 0x67C57724, 0x4458653C, 0x61573095, 0x2B370837, 0x03DF6CE3, + 0x5D086EFA, 0x3F5227C2, 0x191B4785, 0x60843D82, 0x30DE11F1, 0x105E226C, + 0x6E1C7AA2, 0x47AA5D14, 0x36676D03, 0x3B8D4DF6, 0x7372694 , 0x409521DC, + 0x744206A , 0x4722023F, 0x2BE46AD5, 0x63E11D76, 0x4A4A09AB, 0x5CF252B9, + 0x31586916, 0x4DFD7D84, 0x32037634, 0x2D7329D4, 0x4524582F, 0x2E5366C1, + 0x3B0E019B, 0x38530C6A, 0x6A2542D , 0x0A6A00E5, 0x119725CC, 0x54065347, + 0x1B6F7AF1, 0x6CCF71F1, 0x181117F2, 0x71674A76, 0x74F43880, 0x77A55F47, + 0x59EA5B62, 0x4A331D95, 0x3CBB276F, 0x245C4D50, 0x4718D5 , 0x07CE05D1, + 0x60D47AD5, 0x25CA1C40, 0x30061766, 0x669B39DF, 0x3D5F1320, 0x19306AD3, + 0x28B30325, 0x0DD090F , 0x6A6E6F37, 0x2DF16F66, 0x2B514C7E, 0x31101C58, + 0x7D4847FC, 0x515341CA, 0x77AB0EA6, 0x41320DAF, 0x3AF8531E, 0x24B31611, + 0x6D377331, 0x7A832A22, 0x222511C7, 0x722D1F89, 0x3B194F18, 0x261B0A4D, + 0x43F676DB, 0x4F8C6D61, 0x190F2250, 0x202E72A9, 0x560D4EA2, 0x308E67B4, + 0x36746663, 0x17CC3852, 0x27EB2EAC, 0x7FDE0AA8, 0x264719A , 0x23261EDD, + 0x3C0B339E, 0x06284D40, 0x48D82ECB, 0x24D44CF8, 0x43631B91, 0x4BF04248, + 0x36497B9B, 0x68273C58, 0x630B7AF9, 0x20CC3F26, 0x6C3B7B71, 0x574433ED, + 0x7A2552F6, 0x4CDE642D, 0x565B0142, 0x26F9207F, 0x67A207BE, 0x5B506684, + 0x44DA4780, 0x11756A0C, 0x156104AF, 0x415561B0, 0x6E3A6886, 0x1DBA1EA2, + 0x542359C8, 0x4C024E22, 0x758F052A, 0x1DD6395 , 0x2D194BAD, 0x616475A1, + 0x42084602, 0x09C274AD, 0x13CB5562, 0x57FE2D5B, 0x607A4EE5, 0x16723A91, + 0x4F624CCF, 0x2E5E24A3, 0x28FE6FAF, 0x3DDA6EF4, 0x32AF540C, 0x19A57B3B, + 0x5D1D73A3, 0x23424B3E, 0x278445F5, 0x53971C3B, 0x427D7943, 0x5221358C, + 0x26CE1A5E, 0x7B506CA4, 0x3B86636E, 0x60831F6D, 0x45E142F3, 0x21B77B04, + 0x7BB65E0C, 0x78B80F5E, 0x7D8D172B, 0x3BF33A90, 0x2D572D9 , 0x2B5B4920, + 0x36A05E01, 0x52745306, 0x47C64855, 0x1CAA669B, 0x304A2641, 0x4D6B1760, + 0x3E176D79, 0x523241B0, 0x24A67957, 0x4BDE76AF, 0x4E5F1493, 0x4C215DA5, + 0x33A052B , 0x1A4D00C2, 0x40AE6BCA, 0x390D106B, 0x69E86018, 0x5AF356CF, + 0x63561D4 , 0x44F31C6 , 0x14B6299B, 0x0D2E25F0, 0x4CBF132A, 0x45AC18B6, + 0x2227567D, 0x06B54E2F, 0x26344534, 0x22C515EC, 0x2442370D, 0x6C3721C6, + 0x34EF687D, 0x1C06323A, 0x6AF36A60, 0x60396F52, 0x6AE70AA1, 0x49D06CBC, + 0x6F9576C8, 0x584C4258, 0x3A9A27BB, 0x66DF0D47, 0x1D4804EA, 0x57DD1E67, + 0x789C7895, 0x75336111, 0x25C122C8, 0x62742114, 0x4FBF6D26, 0x3F9F6482, + 0x66F02CD9, 0x11083202, 0x499E2618, 0x7EBC1351, 0x440112F1, 0x49DF7BC1, + 0x3BF45C25, 0x31BA7FA0, 0x61AF1AED, 0x6B1F7D29, 0x2D865294, 0x63E01129, + 0x7E9E77A5, 0x100435D7, 0x1FE3A71 , 0x08597C81, 0x722849FA, 0x31C520AF, + 0x7BA178DC, 0x7F102D31, 0x5CA07864, 0x150E6F98, 0x02C34882, 0x5D041F11, + 0x0C613C57, 0x53984FD1, 0x426F38AD, 0x55992B1D, 0x7AFA078D, 0x2B253413, + 0x594B32CF, 0x32887E38, 0x28933B46, 0x1A0B4168, 0x291B4A94, 0x653A5E8D, + 0x21746BBE, 0x5EFE6415, 0x30DA429C, 0x50C5640C, 0x34711AA4, 0x529C67A6, + 0x105957CD, 0x4D287499, 0x03CA0AA7, 0x28385832, 0x25A04A02, 0x420D47A4, + 0x35627556, 0x4BC11E4C, 0x59E215C7, 0x27E838B4, 0x458612F4, 0x22827F6F, + 0x449D4DBA, 0x679B7362, 0x4E495845, 0x4FD270D1, 0x395E76A0, 0x375A655E, + 0x12E2058F, 0x73F970CA, 0x61EF73B3, 0x51FF5362, 0x67410345, 0x7FDA0B3B, + 0x221962E8, 0x17AB6543, 0x26557412, 0x4B30084D, 0x268E191D, 0x7E0D13DF, + 0x73EF127D, 0x4DEC5DB1, 0x77FA745F, 0x56002898, 0x12DD0A40, 0x157F6DDF, + 0x42A55F8E, 0x43597924, 0x7B630C3F, 0x338B6B58, 0x32945F75, 0x4FA23A0E, + 0x036E38C0, 0x33B18FD , 0x06114337, 0x24660ACB, 0x19BB02F0, 0x124C0A47, + 0x3A951701, 0x01155ABF, 0x0C612D71, 0x36074CA7, 0x51660C41, 0x635F58C7, + 0x7FC2002D, 0x0E6A7CF3, 0x65B07D07, 0x015F6A6B, 0x791B70DD, 0x6E475719, + 0x424314C7, 0x68426EB , 0x71942FEE, 0x464A2F52, 0x677579FD, 0x6BA775AE, + 0x1F66EFF , 0x1A795237, 0x78D9545F, 0x1D0B344D, 0x3BD34AB7, 0x2F85312A, + 0x16C542AD, 0x3990185D, 0x08DF3351, 0x02811AA5, 0x6D351F41, 0x4066269D, + 0x06B660BF, 0x6EDB4768, 0x5DD70CF0, 0x35D74F6E, 0x689E220C, 0x11431687, + 0x147C49C9, 0x385762BD, 0x302F0AE4, 0x1DAB67F8, 0x483256C9, 0x37D50FCB, + 0x4EA82711, 0x4D7B2C98, 0x19DB78BC, 0x58DE0DC2, 0x6AFF7E7B, 0x37621C93, + 0x792C6E19, 0x77001192, 0x7F88439D, 0x2E196A66, 0x6C71378C, 0x6AF43B3A, + 0x7C16225E, 0x6687337 , 0x4BEE1608, 0x6D5B5552, 0x345D4590, 0x681209CC, + 0x7B242819, 0x508A1416, 0x19880FE3, 0x1FC7288A, 0x24BD0502, 0x6A1D1678, + 0x20E6CA0 , 0x59BE2057, 0x5ADE11EB, 0x5EA8649D, 0x7A200E6F, 0x1149481D, + 0x72281E93, 0x0A5B0451, 0x67312D58, 0x63B849F1, 0x52217960, 0x7CDF59F3, + 0x33C775C0, 0x1EBA0799, 0x7DF1506 , 0x34E96110, 0x38FC73E3, 0x5EA059B2, + 0x022936EA, 0x316406F6, 0x43911185, 0x6C0D10F3, 0x1C6F3DF8, 0x38DB12A9, + 0x5CD41244, 0x2C9F0A7B, 0x5F4A315F, 0x77CE1C66, 0x4C800860, 0x318D53E0, + 0x7105420D, 0x575361F2, 0x750810BA, 0x217E4CA5, 0x2010140 , 0x4D884763, + 0x42BB0DA7, 0x32D53A74, 0x141C6CD4, 0x087F5FC3, 0x464B53 , 0x2D2A05F6, + 0x15532B45, 0x5D5C3CE1, 0x3EB9216A, 0x2214611B, 0x1FC52C5F, 0x11AE5DD7, + 0x20B925A9, 0x7C640AF4, 0x740009AC, 0x6D0E0321, 0x38E6A61 , 0x09104544, + 0x474F26C8, 0x15254CF3, 0x341A6B59, 0x661904CE, 0x598B2197, 0x2412659D, + 0x61976DD4, 0x329B3E16, 0x08FD1FB0, 0x304006F3, 0x3456309 , 0x55CC15F1, + 0x59DA7630, 0x5C801335, 0x0036D52 , 0x353775A5, 0x299476EB, 0x75280568, + 0x766F5264, 0x2EA233A6, 0x647619F3, 0x7FB30C7A, 0x1BC03B9 , 0x36BC3061, + 0x3F30596E, 0x3E2A527B, 0x0AC04220, 0x641979A3, 0x1ECC3B89, 0x21447BC1, + 0x4E8F2E26, 0x0C5A1D90, 0x299E5467, 0x57C947E3, 0x1D4865ED, 0x76F31C3D, + 0x4EE81CDF, 0x3479195E, 0x6FFB3AE1, 0x5C82398 , 0x300F7364, 0x47940AFA, + 0x3B853E3E, 0x598C440D, 0x224A3D89, 0x3A674204, 0x22880A38, 0x2E77F2D , + 0x22841C9C, 0x4F0609C3, 0x1FE90922, 0x09335017, 0x2D6B69A7, 0x7EDB63F9, + 0x099A74EF, 0x1F9F1B40, 0x24BE17E8, 0x251D2F7A, 0x16AC50D3, 0x28D7ED6 , + 0x6D193443, 0x76156F1B, 0x30DF6A4E, 0x64FF6794, 0x63DB2C9A, 0x74353022, + 0x556E025C, 0x23802AF9, 0x425018A4, 0x675A18BB, 0x70B227B9, 0x7FB01BF , + 0x63E7910 , 0x6C661591, 0x65745D2B, 0x4F6E379D, 0x52B32FAC, 0x1E6A1101, + 0x1DE22385, 0x2338191F, 0x469704B6, 0x4BAB4599, 0x54EB4809, 0x78393E6D, + 0x550017DD, 0x39B120E1, 0x288D52D3, 0x2D52668C, 0x20D22A68, 0x4E1207D1, + 0x3FCC0EFE, 0x47F37E64, 0x25177A90, 0x34BF5D4D, 0x5A8D3DCE, 0x6F7275A8, + 0x6BEA2655, 0x2A1810FC, 0x64DB593A, 0x0A4D4BC0, 0x2C402E93, 0x71C077F9, + 0x6F0C4577, 0x70412414, 0x752F1DC1, 0x582E38EA, 0x2C455F7B, 0x4DCD4EDB, + 0x12BC2696, 0x7B037135, 0x4FCA1F8C, 0x3D5E75F6, 0x502F41B0, 0x361653F1, + 0x2E5B0E31, 0x20266B19, 0x57E703D7, 0x467B3E00, 0x47032BA3, 0x1F776B9C, + 0x62570A84, 0x7EC75B48, 0x1BD5012 , 0x7D0A2D5D, 0x7FCC29F2, 0x291304B6, + 0x19D558ED, 0x47551C8 , 0x7D12738F, 0x3ADE0892, 0x5F741997, 0x25D2E2F , + 0x2B9F2269, 0x5C134FED, 0x15E92399, 0x54437F4E, 0x272D32AB, 0x56186AA1, + 0x7E4D355C, 0x234D7836, 0x2A871760, 0x4637A94 , 0x2C183207, 0x5FC78B3 , + 0x7F10621E, 0x276966B2, 0x6C9F4A11, 0x4E3F182C, 0x62BA2EF5, 0x25F239CD, + 0x73D63FED, 0x636E1F5E, 0x0AC15A0E, 0x3F3D33EB, 0x738326EA, 0x35C366B1, + 0x4D476E86, 0x02F63208, 0x711A1FC1, 0x426A4396, 0x7E4D1B93, 0x75E46DB7, + 0x2F3C44A7, 0x51A56F5C, 0x7AD2463D, 0x0A5639CA, 0x49952C78, 0x4C4B64F6, + 0x3AFE7F8D, 0x66993D04, 0x43867F37, 0x4BC146C2, 0x55A875EC, 0x681A1A75, + 0x30A67E1B, 0x4A4A7D0C, 0x20F77993, 0x1891805 , 0x738976AD, 0x542667D6, + 0x3C5C6EBF, 0x4499187F, 0x2BF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456, + 0x421B4F29, 0x76740F9C, 0x09163B8D, 0x3D72AAB , 0x1AD54DD7, 0x754946EE, + 0x7317342B, 0x218546D4, 0x10563DA7, 0x54BB4CCE, 0x0CE63E46, 0x5D146234, + 0x33BE6C63, 0x325044E5, 0x09D72335, 0x07C36BA , 0x365530CC, 0x2DFA448C, + 0x1663516F, 0x59B00AA , 0x150274EA, 0x12532D4A, 0x3CEF002D, 0x492F3DA5, + 0x263A2574, 0x6F8005C2, 0x14A10651, 0x2F627ABA, 0x68293238, 0x26987646, + 0x52590516, 0x10144D36, 0x59B151B9, 0x2B2A4F05, 0x53953699, 0x27851C75, + 0x180646F3, 0x2E970306, 0x32843145, 0x18F4FE8F +}; + +/* The source data is random across the q31_t range. Accessing it by word should + remain random. */ +const q15_t * fast_math_q15_inputs = (q15_t *) fast_math_q31_inputs; + +const float32_t fast_math_f32_inputs[FAST_MATH_MAX_LEN] = +{ + -1.5E-07, 5.0545058, 6.1958757, 0.1884450, 3.3656774, 0.5471223, + -5.0396892, 6.2149808, 0.4206357, 5.9024140, 0.1142128, 4.2966847, + -4.9243615, 3.3560853, 5.5628775, 5.6486144, 3.9328821, 0.8662564, + -1.3684878, 1.1444261, 0.2627620, 0.6719343, 3.8732286, 5.9040643, + -2.2271110, 2.5800587, 6.1848498, 5.9412493, 4.2514839, 6.2096863, + -4.8181437, 2.1155439, 4.1618680, 1.5341357, 1.8567268, 4.2736867, + -3.3165594, 2.5861183, 3.7864876, 4.7156566, 3.6664471, 3.4670146, + -3.6666823, 3.2158594, 0.5189454, 4.5211925, 6.2590334, 2.2276047, + -6.1025991, 2.1768018, 5.5703194, 2.8569321, 2.5976403, 1.3680509, + -0.7895111, 1.9409676, 4.5622487, 4.9189303, 4.3591961, 0.0615894, + -5.2980657, 5.7951829, 4.8440482, 0.2680398, 2.3762136, 4.4254964, + -4.5836656, 1.4091744, 1.6905207, 4.2287795, 3.0001720, 3.9189258, + -1.4856273, 1.1129014, 5.2128031, 4.8187110, 5.8715002, 0.6778860, + -1.1449692, 0.6226340, 3.0772767, 1.2141962, 5.6290528, 0.6225986, + -0.2775005, 3.5015887, 4.8537297, 1.9599772, 1.1245801, 2.1297213, + -1.3203840, 3.2053828, 5.6948550, 3.9516457, 0.6379562, 2.4558128, + -0.3431663, 3.1496534, 2.7125841, 6.2678565, 5.0994494, 3.0514394, + -5.6199810, 0.8642307, 2.4504731, 5.8267510, 5.7647838, 4.4835177, + 3.8851284, 2.1569414, 5.8812331, 0.7839784, 4.5904032, 4.0619375, + 5.2348483, 2.5024810, 4.7112719, 5.2478452, 2.0260784, 3.4699621, + 6.1520498, 3.4514073, 2.0761128, 3.8922546, 2.2659464, 4.7532896, + 2.6006151, 3.0934955, 4.3652005, 6.1118673, 2.0593452, 5.2640727, + 4.6437278, 5.9952549, 0.2005758, 2.2422740, 4.1635768, 1.7687265, + 1.4475395, 4.4681525, 3.9243074, 3.7109036, 4.1496541, 0.2987948, + 2.1914796, 2.8358565, 1.5136507, 4.4927603, 5.3795520, 1.7687650, + 4.5933278, 0.8655898, 5.2572843, 0.8708603, 3.6958286, 2.3006310, + 5.0690197, 3.1653480, 3.0762120, 5.5106597, 2.2188555, 2.8239372, + 6.0540393, 0.2657649, 6.1132775, 1.1888217, 4.1916405, 3.6847088, + 4.2418564, 2.2683684, 3.8973243, 5.0966113, 0.1209983, 0.5269928, + 6.1248595, 4.0925498, 1.4529100, 2.5352096, 0.7666775, 1.6866509, + 1.6200953, 2.0839142, 0.9565145, 2.1865966, 0.7644026, 5.5552975, + 0.5923686, 5.8436176, 2.5071164, 0.2978322, 2.1511962, 4.6242118, + 4.9931353, 3.4237447, 4.3116692, 5.6148598, 0.3442670, 1.9079607, + 0.2902301, 1.2282167, 4.5249352, 4.5349096, 5.5153742, 3.6595342, + 0.4441228, 5.7977751, 5.0288862, 1.7966571, 3.4159368, 6.1875316, + 4.4967379, 5.2714014, 2.7222564, 2.9570223, 3.5230663, 1.6907520, + 4.7062218, 3.1660203, 4.0640250, 1.9336225, 0.8716326, 2.9881129, + 2.2773988, 4.9518627, 4.9027432, 4.2003861, 0.8388295, 0.1354396, + 3.5175829, 1.8901016, 5.9024853, 6.1631993, 1.8008890, 5.0317023, + 5.6304337, 3.7543702, 5.5544410, 5.9296402, 3.4504620, 4.5765894, + 3.6238793, 0.1624673, 2.8056369, 4.0608350, 3.2748147, 2.3393094, + 5.8881908, 5.2121085, 5.3349614, 2.3407017, 3.7270886, 5.4824095, + 5.8653636, 4.2000849, 1.2992148, 4.1082644, 0.4527132, 2.5555406, + 4.1904544, 5.8667713, 5.0953493, 3.0445066, 4.7547955, 2.6203864, + 6.1059115, 6.2076281, 5.4295991, 2.4434288, 2.8572272, 1.5499814, + 4.9286757, 5.5470323, 5.7410198, 3.5078076, 3.7627993, 0.9354200, + 5.6530665, 2.8299063, 1.2922774, 5.6526739, 4.7914663, 5.5448250, + 1.7903950, 4.2300036, 4.1737937, 0.7716694, 2.5592571, 1.7296789, + 4.5029688, 1.7805566, 5.6309835, 5.1935484, 2.4506089, 3.1284165, + 4.3655898, 5.2424950, 3.8304163, 3.6111801, 2.0485834, 2.8678003, + 4.4849099, 5.5568808, 4.5292698, 0.1169475, 4.2397456, 2.7552322, + 2.7509053, 0.7353640, 5.1187960, 2.0411269, 1.5470969, 2.1533307, + 2.3605433, 3.4340988, 3.5306485, 2.4870244, 2.5015301, 3.2381477, + 4.1313862, 5.9747764, 4.5386496, 2.5137752, 5.2268018, 0.8440727, + 0.3799239, 0.5293398, 0.0000000, 2.0371338, 1.8958053, 0.0733938, + 3.3923238, 0.5992443, 0.9205800, 3.9655772, 5.3992694, 6.1212150, + 3.5866836, 6.2633946, 3.4780043, 3.2387210, 2.0777367, 2.7017810, + 3.0901098, 0.4463392, 5.5778300, 0.4061048, 2.7406309, 5.1938664, + 2.4789345, 3.8545764, 5.1436714, 5.5683790, 5.8503469, 1.1987353, + 1.6247202, 5.6414565, 3.7282025, 3.1657206, 3.8503962, 5.1485818, + 3.3419582, 1.2696753, 2.8518968, 2.6886436, 6.0698884, 3.8959208, + 4.3692639, 4.5249277, 2.1796068, 3.2483466, 3.4978155, 0.9832885, + 3.5315023, 4.3655778, 2.6794992, 5.2544420, 4.5954405, 2.2621418, + 2.8539005, 2.4277593, 4.8729535, 4.6135614, 2.7035154, 4.3589760, + 5.9389515, 4.9274787, 4.4332387, 0.6869673, 2.4500066, 3.7127639, + 2.8863700, 0.3162955, 1.4368865, 5.2413645, 0.0982985, 5.4268554, + 0.4905223, 4.2037186, 3.1429204, 1.3696954, 3.5915675, 0.7677371, + 4.2170618, 3.7673071, 0.3517086, 0.3540136, 0.9581898, 0.1232828, + 2.7342886, 5.2290017, 3.8791769, 3.2680695, 5.4278441, 0.6138541, + 5.7054603, 0.6786889, 3.2483864, 0.8994758, 3.5146290, 0.0287746, + 4.8172051, 5.3325973, 5.7605579, 6.2013046, 3.1738449, 1.7053924, + 0.6330341, 3.1909083, 3.6794907, 4.7933610, 0.5212697, 4.1569315, + 3.2482749, 1.0747264, 5.8971330, 3.7101152, 2.7685894, 5.9182512, + 4.1212281, 2.8396586, 5.2759745, 3.3465722, 3.4801751, 4.2729777, + 2.3071222, 1.5035072, 3.6374836, 5.4468120, 2.5558538, 0.7075818, + 2.7887656, 1.8861142, 2.5219880, 5.2361777, 2.5360737, 2.4515477, + 2.2647672, 0.8812504, 1.6344462, 0.5454754, 2.6979830, 1.6165554, + 1.8695956, 2.6694641, 0.7490013, 3.1105972, 4.4384875, 1.5304166, + 4.9327408, 0.4655185, 2.4748426, 0.0213259, 1.3865538, 0.0081717, + 1.1886509, 0.8952537, 1.6843712, 1.0988793, 0.8711572, 3.7629093, + 5.6615138, 5.9022971, 1.3897429, 3.0327137, 2.3625475, 3.2910070, + 1.6642436, 0.4295011, 2.7415239, 1.0923508, 0.1640358, 5.9984205, + 2.7055177, 6.0416507, 4.7903915, 0.0461730, 4.2728088, 4.4356194, + 4.0534637, 3.4702651, 1.3704176, 4.8529200, 1.4327442, 2.3302118, + 5.5978709, 5.3807748, 2.5285646, 1.9981730, 3.8241692, 5.7189253, + 5.7120324, 3.7170973, 2.0896078, 5.3599569, 2.7796679, 5.6822331, + 0.2084724, 3.3453343, 4.5018856, 1.1265867, 2.1144987, 1.1794352, + 2.0227281, 2.5375066, 3.4467437, 0.3062336, 3.4729184, 1.7266910, + 1.5174002, 1.5277262, 0.9686124, 6.0093412, 5.8789338, 5.1441345, + 4.5758041, 1.1046577, 2.2642776, 1.1862024, 0.0075297, 1.9881224, + 4.3958232, 3.9285942, 3.4121603, 2.7585521, 1.8059588, 3.1520171, + 4.7849358, 4.7903511, 3.6194660, 4.6977042, 4.0560129, 0.7742111, + 3.1692252, 2.1819072, 0.5789810, 0.9289656, 1.2451370, 4.2239985, + 2.7112647, 4.3630684, 1.6134250, 0.0613154, 3.3444332, 1.7554715, + 5.9453394, 5.6953510, 2.4673100, 0.1561700, 4.2187618, 5.2600982, + 6.1041123, 0.3577199, 2.8294680, 3.6597688, 4.3142726, 4.5203293, + 4.0843265, 4.5673388, 2.3489542, 3.6541880, 0.7295941, 0.3622530, + 6.1560465, 1.7896003, 3.7383338, 6.0454361, 1.1672793, 1.2129049, + 2.1466132, 5.8615704, 2.4546365, 1.7166712, 0.9547117, 2.4951084, + 2.3544507, 0.8238180, 2.7334414, 0.5749942, 3.8618151, 0.0689837, + 3.6019012, 4.9620190, 1.4788531, 2.8149909, 3.5773830, 0.3857966, + 3.1182750, 4.0357856, 1.3902536, 5.2593808, 6.1014456, 5.3179177, + 3.1792883, 1.7522271, 4.6911344, 1.4886775, 6.0151778, 3.8972087, + 3.7715583, 1.0845061, 0.5676653, 1.6038597, 5.3945577, 5.7244031, + 4.3959286, 4.5564551, 1.4444168, 3.6194506, 5.0933266, 2.5374227, + 6.2105471, 0.5654792, 2.0165320, 3.2132771, 0.3808010, 4.5596317, + 3.4969429, 3.3260664, 5.2149334, 5.3957421, 4.9576149, 1.9970040, + 2.8413032, 4.7263877, 0.6902815, 0.6895316, 1.6957291, 3.2963937, + 6.1113470, 4.4636294, 1.9594738, 1.8312791, 5.3429527, 5.7280497, + 4.0166905, 1.6045389, 0.5571039, 5.2669152, 3.6738954, 5.9571429, + 0.3834561, 3.6734096, 1.7913869, 5.2007946, 1.2000032, 2.7804978, + 2.4718774, 5.1935175, 4.2529065, 1.3044083, 1.9987109, 0.8407592, + 4.2189258, 3.5876427, 1.0666779, 0.9277486, 2.9912971, 5.7057758, + 3.4694180, 0.2069675, 0.3384307, 5.0583614, 2.8360719, 2.4042372, + 4.9614777, 2.2888819, 3.3448533, 4.4714710, 5.4756485, 2.0652177, + 4.0848120, 6.1250762, 0.4773170, 3.6883502, 2.6005256, 1.9423615, + 1.6577182, 4.7674690, 6.2531264, 1.1722630, 4.9080805, 1.2302350, + 6.2351753, 5.0407581, 2.6654950, 4.5795867, 3.1312479, 5.0830358, + 2.2400117, 0.4602021, 3.7133088, 5.7188788, 1.2174673, 2.7166470, + 4.7071094, 0.2462034, 5.9459353, 4.7983010, 3.5111731, 1.1551193, + 3.1287047, 3.2537199, 6.2470131, 5.3711915, 6.0469623, 4.2659122, + 2.5352740, 5.8746469, 3.0126903, 1.4563896, 2.4899651, 4.4301324, + 3.5095299, 4.7540509, 6.2547920, 6.0471349, 3.3619258, 6.0561746, + 0.7264988, 0.3232592, 1.9122808, 3.6454528, 3.3361480, 5.6624574, + 3.3963785, 2.7142142, 3.4096772, 4.4762342, 0.1047703, 5.0323343, + 0.8954125, 3.0063438, 1.6137441, 2.3190715, 4.1579916, 1.0656836, + 1.7516517, 1.2454643, 1.2256706, 2.0535941, 5.5313259, 2.9600203, + 2.5382144, 1.1261446, 6.0879353, 2.5601199, 5.3060708, 3.8662016, + 2.3663172, 5.5114955, 4.9313732, 2.9213939, 5.1143679, 5.6450910, + 2.6969853, 2.1006537, 3.7488443, 5.6673754, 4.4112136, 2.3716204, + 4.6178643, 5.9948046, 3.4105954, 3.3935850, 1.9547595, 0.4475800, + 1.1434170, 0.5842667, 2.9121888, 0.0586379, 5.7492774, 4.0384655, + 0.0089162, 0.1909163, 1.3098570, 2.8586366, 0.7996361, 0.0543350, + 4.5683759, 2.2249794, 4.9036865, 2.7435946, 2.7429546, 0.3092155, + 0.3118464, 0.5723993, 3.7324447, 1.5147758, 5.2864780, 5.3860266, + 6.0545540, 3.0718480, 1.3842492, 1.4213108, 3.3727372, 4.7884765, + 2.1838288, 2.8980046, 4.0169897, 5.7637923, 1.0151904, 4.4964699, + 3.6300404, 2.7224978, 5.5558613, 2.4696170, 1.1245340, 3.9793522, + 3.9207111, 2.0605178, 5.0451799, 6.2799046, 6.1636676, 0.7981966, + 1.4592079, 0.1484872, 3.8166117, 0.6962355, 2.5601436, 5.5548184, + 3.4440198, 2.3185147, 1.3090764, 2.7705283, 6.0079576, 0.7792778, + 2.9578927, 5.3840384, 0.2726304, 4.3456090, 6.1511471, 1.7798247, + 0.8405677, 4.3057392, 5.7142715, 3.8382030, 5.6547587, 1.2153801, + 4.7401894, 2.1756202, 2.6303011, 0.9784166, 5.1459324, 3.9265103, + 4.6405120, 5.0586705, 0.4223724, 5.9739917, 3.1263686, 4.7447217, + 4.6646686, 5.2221411, 0.9833301, 2.8733554, 3.8836400, 5.8570808, + -5.2470141, 5.6261119, 3.6600718, 3.6615062, 5.3716581, 0.2190677, + -5.5632585, 2.5618482, 0.2285950, 4.6881858, 0.9728179, 0.9042027, + -3.8073530, 1.5989503, 2.0367209, 2.5245268, 2.5533189, 2.4265105, + -3.8314979, 1.0486053, 1.1818174, 0.5945707, 2.0306392, 4.8355201, + -1.4710068, 4.6518534, 4.3531065, 5.1778361, 5.2023364, 1.8432851, + -1.9438243, 3.2862931, 2.0439139, 5.2266206, 5.0912323, 3.4997233, + -1.6522518, 4.2761236, 1.4680860, 2.8678051, 2.4163051, 3.3841326, + -6.2310582, 4.7451897, 6.1603795, 1.4751828, 3.3210347, 0.3231823, + -4.7555888, 3.7823504, 5.3857498, 6.2095284, 5.8401232, 2.5730582, + -0.0021455, 3.3984387, 1.3052100, 1.3777994, 2.0471011, 0.6028680, + -4.6968925, 4.7030205, 3.4136510, 2.1245480, 5.2297066, 3.4719134, + -6.0164208, 5.6098372, 2.2399783, 3.4331443, 2.1782657, 3.9131853, + -5.0053405, 4.6864702, 0.7887674, 5.1672539, 0.1580253, 2.6039335, + -4.5955687, 4.9095176, 2.3077255, 4.6801428, 5.6062801, 1.5243220, + -0.8142818, 1.4141432, 2.1992023, 1.8038058, 5.8275790, 0.3224138, + -3.7238350, 1.0235240, 5.2678588, 1.0528164, 3.1554195, 6.2789723, + -2.2330890, 0.2957980, 1.3424690, 2.4996969, 2.0964990, 1.4426353, + -5.8818165, 4.2926017, 6.0451393, 2.7518666, 5.9083095, 0.0366581, + -3.8346722, 5.0333074, 1.4638661, 5.8588735, 4.7957215, 5.1927356, + -3.6031780, 4.9799375, 2.0674268, 1.4040530, 1.9627813, 3.6726693, + -5.2145043, 1.8250297, 2.5293238, 5.4164658, 3.8625225, 6.2278165, + -1.2798778, 5.1975080, 4.2465638, 1.5641957, 2.9894493, 2.5074636, + -3.7663816, 5.0298329, 0.6601666, 5.1612735, 5.2847013, 2.2274284, + -2.7022061, 3.5954850, 4.4034117, 4.6650751, 4.7619266, 2.4449681, + -2.6973871, 6.0088907, 3.6000853, 5.3389611 +}; diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/biquad_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/biquad_tests.c new file mode 100644 index 0000000..3157d1c --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/biquad_tests.c @@ -0,0 +1,244 @@ +#include "jtest.h" +#include "filtering_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "filtering_templates.h" +#include "type_abbrev.h" + +#define BIQUAD_DEFINE_TEST(suffix, instance_name, config_suffix, output_type) \ + JTEST_DEFINE_TEST(arm_biquad_cascade_##config_suffix##_##suffix##_test, \ + arm_biquad_cascade_##config_suffix##_##suffix) \ + { \ + instance_name biquad_inst_fut = { 0 }; \ + instance_name biquad_inst_ref = { 0 }; \ + \ + TEMPLATE_DO_ARR_DESC( \ + blocksize_idx, uint32_t, blockSize, filtering_blocksizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + numstages_idx, uint16_t, numStages, filtering_numstages \ + , \ + /* Initialize the BIQUAD Instances */ \ + arm_biquad_cascade_##config_suffix##_init_##suffix( \ + &biquad_inst_fut, numStages, \ + (output_type*)filtering_coeffs_b_##suffix, \ + (void *) filtering_pState); \ + \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Number of Stages: %d\n", \ + (int)blockSize, \ + (int)numStages); \ + \ + JTEST_COUNT_CYCLES( \ + arm_biquad_cascade_##config_suffix##_##suffix( \ + &biquad_inst_fut, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_fut, \ + blockSize)); \ + \ + arm_biquad_cascade_##config_suffix##_init_##suffix( \ + &biquad_inst_ref, numStages, \ + (output_type*)filtering_coeffs_b_##suffix, \ + (void *) filtering_pState); \ + \ + ref_biquad_cascade_##config_suffix##_##suffix( \ + &biquad_inst_ref, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_ref, \ + blockSize); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + blockSize, \ + output_type))); \ + \ + return JTEST_TEST_PASSED; \ + } + +#define BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(suffix, config_suffix, speed, output_type) \ + JTEST_DEFINE_TEST(arm_biquad_cascade_##config_suffix##speed##_##suffix##_test, \ + arm_biquad_cascade_##config_suffix##speed##_##suffix) \ + { \ + arm_biquad_casd_##config_suffix##_inst_##suffix biquad_inst_fut = { 0 }; \ + arm_biquad_casd_##config_suffix##_inst_##suffix biquad_inst_ref = { 0 }; \ + \ + TEMPLATE_DO_ARR_DESC( \ + blocksize_idx, uint32_t, blockSize, filtering_blocksizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + numstages_idx, uint16_t, numStages, filtering_numstages \ + , \ + TEMPLATE_DO_ARR_DESC( \ + postshifts_idx, uint8_t, postShift, filtering_postshifts \ + , \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Number of Stages: %d\n" \ + "Post Shift: %d\n", \ + (int)blockSize, \ + (int)numStages, \ + (int)postShift); \ + \ + /* Initialize the BIQUAD Instances */ \ + arm_biquad_cascade_##config_suffix##_init_##suffix( \ + &biquad_inst_fut, numStages, \ + (output_type*)filtering_coeffs_b_##suffix, \ + (void *) filtering_pState, postShift); \ + \ + JTEST_COUNT_CYCLES( \ + arm_biquad_cascade_##config_suffix##speed##_##suffix( \ + &biquad_inst_fut, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_fut, \ + blockSize)); \ + \ + arm_biquad_cascade_##config_suffix##_init_##suffix( \ + &biquad_inst_ref, numStages, \ + (output_type*)filtering_coeffs_b_##suffix, \ + (void *) filtering_pState, postShift); \ + \ + ref_biquad_cascade_##config_suffix##speed##_##suffix( \ + &biquad_inst_ref, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_ref, \ + blockSize); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + blockSize, \ + output_type)))); \ + \ + return JTEST_TEST_PASSED; \ + } + + +JTEST_DEFINE_TEST(arm_biquad_cas_df1_32x64_q31_test, + arm_biquad_cas_df1_32x64_q31) +{ + arm_biquad_cas_df1_32x64_ins_q31 biquad_inst_fut = { 0 }; + arm_biquad_cas_df1_32x64_ins_q31 biquad_inst_ref = { 0 }; + + TEMPLATE_DO_ARR_DESC( + blocksize_idx, uint32_t, blockSize, filtering_blocksizes + , + TEMPLATE_DO_ARR_DESC( + numstages_idx, uint16_t, numStages, filtering_numstages + , + TEMPLATE_DO_ARR_DESC( + postshifts_idx, uint8_t, postShift, filtering_postshifts + , + /* Initialize the BIQUAD Instances */ + arm_biquad_cas_df1_32x64_init_q31( + &biquad_inst_fut, numStages, + (q31_t*)filtering_coeffs_b_q31, + (void *) filtering_pState, postShift); + + /* Display test parameter values */ + JTEST_DUMP_STRF("Block Size: %d\n" + "Number of Stages: %d\n", + (int)blockSize, + (int)numStages); + + JTEST_COUNT_CYCLES( + arm_biquad_cas_df1_32x64_q31( + &biquad_inst_fut, + (void *) filtering_q31_inputs, + (void *) filtering_output_fut, + blockSize)); + + arm_biquad_cas_df1_32x64_init_q31( + &biquad_inst_ref, numStages, + (q31_t*)filtering_coeffs_b_q31, + (void *) filtering_pState, postShift); + + ref_biquad_cas_df1_32x64_q31( + &biquad_inst_ref, + (void *) filtering_q31_inputs, + (void *) filtering_output_ref, + blockSize); + + FILTERING_SNR_COMPARE_INTERFACE( + blockSize, + q31_t)))); + + return JTEST_TEST_PASSED; +} + +JTEST_DEFINE_TEST(arm_biquad_cascade_df2T_f64_test, + arm_biquad_cascade_df2T_f64) +{ + arm_biquad_cascade_df2T_instance_f64 biquad_inst_fut = { 0 }; + arm_biquad_cascade_df2T_instance_f64 biquad_inst_ref = { 0 }; + + TEMPLATE_DO_ARR_DESC( + blocksize_idx, uint32_t, blockSize, filtering_blocksizes + , + TEMPLATE_DO_ARR_DESC( + numstages_idx, uint16_t, numStages, filtering_numstages + , + /* Display test parameter values */ + JTEST_DUMP_STRF("Block Size: %d\n" + "Number of Stages: %d\n", + (int)blockSize, + (int)numStages); + + /* Initialize the BIQUAD Instances */ + arm_biquad_cascade_df2T_init_f64( + &biquad_inst_fut, numStages, + (float64_t*)filtering_coeffs_b_f64, + (void *) filtering_pState); + + JTEST_COUNT_CYCLES( + arm_biquad_cascade_df2T_f64( + &biquad_inst_fut, + (void *) filtering_f64_inputs, + (void *) filtering_output_fut, + blockSize)); + + arm_biquad_cascade_df2T_init_f64( + &biquad_inst_ref, numStages, + (float64_t*)filtering_coeffs_b_f64, + (void *) filtering_pState); + + ref_biquad_cascade_df2T_f64( + &biquad_inst_ref, + (void *) filtering_f64_inputs, + (void *) filtering_output_ref, + blockSize); + + FILTERING_DBL_SNR_COMPARE_INTERFACE( + blockSize, + float64_t))); + + return JTEST_TEST_PASSED; +} + + +BIQUAD_DEFINE_TEST(f32,arm_biquad_casd_df1_inst_f32, df1,float32_t); +BIQUAD_DEFINE_TEST(f32,arm_biquad_cascade_df2T_instance_f32,df2T,float32_t); +BIQUAD_DEFINE_TEST(f32,arm_biquad_cascade_stereo_df2T_instance_f32,stereo_df2T,float32_t); +BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q31,df1,,q31_t); +BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q15,df1,,q15_t); +BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q31,df1,_fast,q31_t); +BIQUAD_WITH_POSTSHIFT_DEFINE_TEST(q15,df1,_fast,q15_t); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(biquad_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_biquad_cascade_df1_f32_test); + JTEST_TEST_CALL(arm_biquad_cascade_df2T_f32_test); + JTEST_TEST_CALL(arm_biquad_cascade_stereo_df2T_f32_test); + JTEST_TEST_CALL(arm_biquad_cascade_df2T_f64_test); + JTEST_TEST_CALL(arm_biquad_cascade_df1_q31_test); + JTEST_TEST_CALL(arm_biquad_cascade_df1_q15_test); + JTEST_TEST_CALL(arm_biquad_cascade_df1_fast_q31_test); + JTEST_TEST_CALL(arm_biquad_cascade_df1_fast_q15_test); + JTEST_TEST_CALL(arm_biquad_cas_df1_32x64_q31_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/conv_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/conv_tests.c new file mode 100644 index 0000000..c2fdf0f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/conv_tests.c @@ -0,0 +1,473 @@ +#include "jtest.h" +#include "filtering_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "filtering_templates.h" +#include "type_abbrev.h" + +/*--------------------------------------------------------------------------------*/ +/* Header Stuff */ +/*--------------------------------------------------------------------------------*/ + +#define CONV_MAX_INPUT_ELTS 32 +#define CONV_MAX_OUTPUT_ELTS (CONV_MAX_INPUT_ELTS * 2) + +#define CONV_TEST_VALID_PARTIAL_PARAMS(input_a_len, input_b_len, \ + first_index, num_points) \ + (((((input_a_len) + (input_b_len) - 1)) >= num_points + first_index ) \ + && (num_points > 0)) + +/*--------------------------------------------------------------------------------*/ +/* Input Interfaces */ +/*--------------------------------------------------------------------------------*/ +/* + * General: + * Input interfaces provide inputs to functions inside test templates. They + * ONLY provide the inputs. The output variables should be hard coded. + * + * The input interfaces must have the following format: + * + * ARM_xxx_INPUT_INTERFACE() or + * REF_xxx_INPUT_INTERFACE() + * + * The xxx must be lowercase, and is intended to be the indentifying substring + * in the function's name. Acceptable values are 'sub' or 'add' from the + * functions arm_add_q31. + */ + +#define CONV_arm_conv_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut) + +#define CONV_ref_conv_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref) + +#define CONV_arm_conv_opt_INPUT_INTERFACE( \ + input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*) filtering_output_fut, \ + (void*) filtering_scratch, \ + (void*) filtering_scratch2) + +#define CONV_ref_conv_opt_INPUT_INTERFACE( \ + input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*) filtering_output_ref, \ + (void*) filtering_scratch, \ + (void*) filtering_scratch2) + +#define CONV_arm_conv_fast_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut) + +#define CONV_ref_conv_fast_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref) + +#define CONV_arm_conv_fast_opt_INPUT_INTERFACE( \ + input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*) filtering_output_fut, \ + (void*) filtering_scratch, \ + (void*) filtering_scratch2) + +#define CONV_ref_conv_fast_opt_INPUT_INTERFACE( \ + input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*) filtering_output_ref, \ + (void*) filtering_scratch, \ + (void*) filtering_scratch2) + +#define CONV_arm_conv_partial_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len, \ + first_index, num_points) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*)filtering_output_fut, first_index, num_points) + +#define CONV_ref_conv_partial_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len, \ + first_index, num_points) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*)filtering_output_ref, first_index, num_points) + +#define CONV_arm_conv_partial_fast_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len, \ + first_index, num_points) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*)filtering_output_fut, first_index, num_points) + +#define CONV_ref_conv_partial_fast_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len, \ + first_index, num_points) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*)filtering_output_ref, first_index, num_points) + +#define CONV_arm_conv_partial_opt_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len, \ + first_index, num_points) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*)filtering_output_fut, first_index, num_points, \ + (void*) filtering_scratch, \ + (void*) filtering_scratch2) + +#define CONV_ref_conv_partial_opt_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len, \ + first_index, num_points) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*)filtering_output_ref, first_index, num_points, \ + (void*) filtering_scratch, \ + (void*) filtering_scratch2) + +#define CONV_arm_conv_partial_fast_opt_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len, \ + first_index, num_points) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*)filtering_output_fut, first_index, num_points, \ + (void*) filtering_scratch, \ + (void*) filtering_scratch2) + +#define CONV_ref_conv_partial_fast_opt_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len, \ + first_index, num_points) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*)filtering_output_ref, first_index, num_points, \ + (void*) filtering_scratch, \ + (void*) filtering_scratch2) + +/*--------------------------------------------------------------------------------*/ +/* Convolution Inputs */ +/*--------------------------------------------------------------------------------*/ + +/* The following symbols alias the filtering_q31_inputs array: + * + * - filtering_q15_inputs + * - filtering_q7_inputs + * + * The aliasing conflicts with the instantiation of #ARR_DESC_t structs. + * + * These macro-level aliases allow the #CONV_DEFINE_RAND_INPUT_ARR_DESCS() macro + * to correctly select the filtering_q31_input or filtering_f32_input array, + * within a template, by type_suffix. + * + */ +#define CONV_f32_INPUTS filtering_f32_inputs +#define CONV_q31_INPUTS filtering_q31_inputs +#define CONV_q15_INPUTS filtering_q31_inputs +#define CONV_q7_INPUTS filtering_q31_inputs + +/** + * Defines #ARR_DESC_t objects that wrap existing, type-specific, common + * inputs. + */ +#define CONV_DEFINE_RAND_INPUT_ARR_DESCS(type_suffix) \ + ARR_DESC_DEFINE_USING_ARR( \ + TYPE_FROM_ABBREV(type_suffix), \ + conv_input_rand1_##type_suffix, \ + CONV_##type_suffix##_INPUTS, \ + 0, \ + CONV_MAX_INPUT_ELTS); \ + \ + ARR_DESC_DEFINE_USING_ARR( \ + TYPE_FROM_ABBREV(type_suffix), \ + conv_input_rand2_##type_suffix, \ + CONV_##type_suffix##_INPUTS, \ + 1, \ + CONV_MAX_INPUT_ELTS) /* Note the lacking semicolon */ + +CONV_DEFINE_RAND_INPUT_ARR_DESCS(f32); +CONV_DEFINE_RAND_INPUT_ARR_DESCS(q31); +CONV_DEFINE_RAND_INPUT_ARR_DESCS(q15); +CONV_DEFINE_RAND_INPUT_ARR_DESCS(q7); +ARR_DESC_DEFINE(float32_t, conv_input_zeros, CONV_MAX_INPUT_ELTS, CURLY(0)); + +/** + * Define Input #ARR_DESC_t arrays by type suffix. + * + * Taking inputs in parallel from the 'a' and 'b' arrays yields the following + * test cases (star is convolution): + * + * - zero_array * zero_array + * - zero_array * random_array + * - random_array * zero_array + * - random_array * different_random_arary + */ +#define CONV_DEFINE_ALL_INPUTS(type_suffix) \ + ARR_DESC_DEFINE(ARR_DESC_t *, \ + conv_##type_suffix##_a_inputs, \ + 4, \ + CURLY( \ + &conv_input_zeros, \ + &conv_input_zeros, \ + &conv_input_rand1_##type_suffix, \ + &conv_input_rand1_##type_suffix \ + )); \ + ARR_DESC_DEFINE(ARR_DESC_t *, \ + conv_##type_suffix##_b_inputs, \ + 4, \ + CURLY( \ + &conv_input_zeros, \ + &conv_input_rand1_##type_suffix, \ + &conv_input_zeros, \ + &conv_input_rand2_##type_suffix \ + )) /* Note the lacking semicolon */ + +CONV_DEFINE_ALL_INPUTS(f32); +CONV_DEFINE_ALL_INPUTS(q31); +CONV_DEFINE_ALL_INPUTS(q15); +CONV_DEFINE_ALL_INPUTS(q7); + +/*--------------------------------------------------------------------------------*/ +/* Convolution Lengths */ +/*--------------------------------------------------------------------------------*/ + +/* + * The conv_lens_a and conv_lens_b #ARR_DESC_t objects are accessed in parallel + * to provide convolution-length pairs. Taken in parallel they provide the + * following cases: + * + * - 1 * 1 : Shortest convolution possible. + * - 1 * 2 : Short convolution , one side is degenerate . + * - 17 * 1 : Medium convolution , one side is degenerate . + * - 15 * MAX : Longest convolution , one side is degenerate . + * MAX * MAX : Longest convolution. + */ +ARR_DESC_DEFINE(uint32_t, + conv_lens_a, + 5, + CURLY( + 1, + 1, + 17, + 15, + CONV_MAX_INPUT_ELTS + )); + +ARR_DESC_DEFINE(uint32_t, + conv_lens_b, + 5, + CURLY( + 1, + 2, + 1, + CONV_MAX_INPUT_ELTS, + CONV_MAX_INPUT_ELTS + )); + +/*--------------------------------------------------------------------------------*/ +/* Partial Indexing */ +/*--------------------------------------------------------------------------------*/ + +ARR_DESC_DEFINE(uint32_t, + first_index_arr_desc, + 4, + CURLY( + 0, + 1, + CONV_MAX_INPUT_ELTS / 2, + CONV_MAX_INPUT_ELTS + )); + +ARR_DESC_DEFINE(uint32_t, + num_points_arr_desc, + 3, + CURLY( + 1, + CONV_MAX_OUTPUT_ELTS / 2, + CONV_MAX_OUTPUT_ELTS + )); + +/*--------------------------------------------------------------------------------*/ +/* Convolution Tests */ +/*--------------------------------------------------------------------------------*/ + +#define CONV_TEST_TEMPLATE(fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + suffix, output_type) \ + JTEST_DEFINE_TEST(fut##_tests, fut) \ + { \ + TEMPLATE_DO_ARR_DESC( \ + input_idx, ARR_DESC_t *, input_ptr, conv_##suffix##_a_inputs \ + , \ + void * input_a_ptr = input_ptr->data_ptr; \ + void * input_b_ptr = ARR_DESC_ELT( \ + ARR_DESC_t *, input_idx, \ + &(conv_##suffix##_b_inputs))->data_ptr; \ + \ + TEMPLATE_DO_ARR_DESC( \ + conv_len_idx, uint32_t, conv_len_a, conv_lens_a \ + , \ + uint32_t conv_len_b = ARR_DESC_ELT( \ + uint32_t, conv_len_idx, &(conv_lens_b)); \ + \ + JTEST_DUMP_STRF("Input A Length: %d\n" \ + "Input B Length: %d\n", \ + (int)conv_len_a, \ + (int)conv_len_b); \ + \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface( \ + input_a_ptr, conv_len_a, input_b_ptr, conv_len_b), \ + ref, ref_arg_interface( \ + input_a_ptr, conv_len_a, input_b_ptr, conv_len_b)); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + conv_len_a + conv_len_b - 1, \ + output_type))); \ + \ + return JTEST_TEST_PASSED; \ + } \ + \ + +#define CONV_PARTIAL_TEST_TEMPLATE(fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + suffix, output_type) \ + JTEST_DEFINE_TEST(fut##_tests, fut) \ + { \ + TEMPLATE_DO_ARR_DESC( \ + input_idx, ARR_DESC_t *, input_ptr, conv_##suffix##_a_inputs \ + , \ + void * input_a_ptr = input_ptr->data_ptr; \ + void * input_b_ptr = ARR_DESC_ELT( \ + ARR_DESC_t *, input_idx, \ + &(conv_##suffix##_b_inputs))->data_ptr; \ + TEMPLATE_DO_ARR_DESC( \ + conv_len_idx, uint32_t, conv_len_a, conv_lens_a \ + , \ + uint32_t conv_len_b = ARR_DESC_ELT( \ + uint32_t, conv_len_idx, &(conv_lens_b)); \ + \ + TEMPLATE_DO_ARR_DESC( \ + first_index_idx, uint32_t, first_index, \ + first_index_arr_desc \ + , \ + TEMPLATE_DO_ARR_DESC( \ + num_points_idx, uint32_t, num_points, \ + num_points_arr_desc \ + , \ + if (CONV_TEST_VALID_PARTIAL_PARAMS( \ + conv_len_a, conv_len_b, \ + first_index, num_points)) \ + { \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Input A Length: %d\n" \ + "Input B Length: %d\n" \ + "First Sample Index: %d\n" \ + "Number of Output Points: %d\n", \ + (int)conv_len_a, \ + (int)conv_len_b, \ + (int)first_index, \ + (int)num_points); \ + \ + memset(filtering_output_ref,0, \ + (2*CONV_MAX_INPUT_ELTS)*sizeof(output_type)); \ + memset(filtering_output_fut,0, \ + (2*CONV_MAX_INPUT_ELTS)*sizeof(output_type)); \ + \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface( \ + input_a_ptr, conv_len_a, \ + input_b_ptr, conv_len_b, \ + first_index, num_points), \ + ref, ref_arg_interface( \ + input_a_ptr, conv_len_a, \ + input_b_ptr, conv_len_b, \ + first_index, num_points)); \ + \ + FILTERING_SNR_COMPARE_INTERFACE_OFFSET( \ + first_index, \ + num_points, \ + output_type); \ + } else { \ + /* FUT should return ARM_MATH_ARGUMENT_ERROR*/ \ + /* if first_index and num_points don't make */ \ + /* sense*/ \ + \ + arm_status conv_test_retval; \ + TEST_CALL_FUT( \ + conv_test_retval = fut, \ + fut_arg_interface( \ + input_a_ptr, conv_len_a, \ + input_b_ptr, conv_len_b, \ + first_index, num_points)); \ + \ + if (conv_test_retval != ARM_MATH_ARGUMENT_ERROR) { \ + JTEST_DUMP_STR("FUT failed to raise error."); \ + /* return JTEST_TEST_FAILED; */ \ + } \ + })))); \ + \ + return JTEST_TEST_PASSED; \ + } + +#define CONV_DEFINE_TEST(fn_name, suffix, output_type, test_template) \ + test_template( \ + arm_##fn_name##_##suffix, \ + CONV_arm_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + CONV_ref_##fn_name##_INPUT_INTERFACE, \ + suffix, \ + output_type \ + ) /* Note the lacking semicolon*/ + +/* Tests on functions without partial outputs */ +CONV_DEFINE_TEST(conv , f32, float32_t, CONV_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv , q31, q31_t , CONV_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv , q15, q15_t , CONV_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv , q7 , q7_t , CONV_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_opt , q15, q15_t , CONV_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_opt , q7 , q7_t , CONV_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_fast , q31, q31_t , CONV_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_fast , q15, q15_t , CONV_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_fast_opt , q15, q15_t , CONV_TEST_TEMPLATE); + +/* Tests on functions with partial outputs */ +CONV_DEFINE_TEST(conv_partial , f32, float32_t, CONV_PARTIAL_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_partial , q31, q31_t , CONV_PARTIAL_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_partial , q15, q15_t , CONV_PARTIAL_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_partial , q7 , q7_t , CONV_PARTIAL_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_partial_fast , q31, q31_t , CONV_PARTIAL_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_partial_fast , q15, q15_t , CONV_PARTIAL_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_partial_fast_opt , q15, q15_t , CONV_PARTIAL_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_partial_opt , q15, q15_t , CONV_PARTIAL_TEST_TEMPLATE); +CONV_DEFINE_TEST(conv_partial_opt , q7 , q7_t , CONV_PARTIAL_TEST_TEMPLATE); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(conv_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_conv_f32_tests); + JTEST_TEST_CALL(arm_conv_q31_tests); + JTEST_TEST_CALL(arm_conv_q15_tests); + JTEST_TEST_CALL(arm_conv_q7_tests); + + JTEST_TEST_CALL(arm_conv_opt_q15_tests); + JTEST_TEST_CALL(arm_conv_opt_q7_tests); + + JTEST_TEST_CALL(arm_conv_fast_q31_tests); + JTEST_TEST_CALL(arm_conv_fast_q15_tests); + + JTEST_TEST_CALL(arm_conv_fast_opt_q15_tests); + + JTEST_TEST_CALL(arm_conv_partial_f32_tests); + JTEST_TEST_CALL(arm_conv_partial_q31_tests); + JTEST_TEST_CALL(arm_conv_partial_q15_tests); + JTEST_TEST_CALL(arm_conv_partial_q7_tests); + + JTEST_TEST_CALL(arm_conv_partial_fast_q31_tests); + JTEST_TEST_CALL(arm_conv_partial_fast_q15_tests); + + JTEST_TEST_CALL(arm_conv_partial_fast_opt_q15_tests); + + JTEST_TEST_CALL(arm_conv_partial_opt_q15_tests); + JTEST_TEST_CALL(arm_conv_partial_opt_q7_tests); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/correlate_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/correlate_tests.c new file mode 100644 index 0000000..689b075 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/correlate_tests.c @@ -0,0 +1,310 @@ +#include "jtest.h" +#include "filtering_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "filtering_templates.h" +#include "type_abbrev.h" + +/*--------------------------------------------------------------------------------*/ +/* Header Stuff */ +/*--------------------------------------------------------------------------------*/ + +#define CORRELATE_MAX_INPUT_ELTS 32 +#define CORRELATE_MAX_OUTPUT_ELTS (CORRELATE_MAX_INPUT_ELTS * 2) + +/*--------------------------------------------------------------------------------*/ +/* Input Interfaces */ +/*--------------------------------------------------------------------------------*/ +/* + * General: + * Input interfaces provide inputs to functions inside test templates. They + * ONLY provide the inputs. The output variables should be hard coded. + * + * The input interfaces must have the following format: + * + * ARM_xxx_INPUT_INTERFACE() or + * REF_xxx_INPUT_INTERFACE() + * + * The xxx must be lowercase, and is intended to be the indentifying substring + * in the function's name. Acceptable values are 'sub' or 'add' from the + * functions arm_add_q31. + */ + +#define CORRELATE_arm_correlate_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut) + +#define CORRELATE_ref_correlate_INPUT_INTERFACE(input_a, input_a_len, input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref) + +#define CORRELATE_arm_correlate_opt_INPUT_INTERFACE( \ + input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*) filtering_output_fut, \ + (void*) filtering_scratch) + +#define CORRELATE_arm_correlate_opt_q7_INPUT_INTERFACE( \ + input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*) filtering_output_fut, \ + (void*) filtering_scratch, \ + (void*) filtering_scratch2) + +#define CORRELATE_ref_correlate_opt_INPUT_INTERFACE( \ + input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*) filtering_output_ref, \ + (void*) filtering_scratch) + +#define CORRELATE_ref_correlate_opt_q7_INPUT_INTERFACE( \ + input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*) filtering_output_ref, \ + (void*) filtering_scratch, \ + (void*) filtering_scratch2) + +#define CORRELATE_arm_correlate_fast_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_fut) + +#define CORRELATE_ref_correlate_fast_INPUT_INTERFACE(input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, (void*)filtering_output_ref) + +#define CORRELATE_arm_correlate_fast_opt_INPUT_INTERFACE( \ + input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*) filtering_output_fut, \ + (void*) filtering_scratch) + +#define CORRELATE_ref_correlate_fast_opt_INPUT_INTERFACE( \ + input_a, input_a_len, \ + input_b, input_b_len) \ + PAREN(input_a, input_a_len, input_b, input_b_len, \ + (void*) filtering_output_ref, \ + (void*) filtering_scratch) + +/*--------------------------------------------------------------------------------*/ +/* Convolution Inputs */ +/*--------------------------------------------------------------------------------*/ + +/* The following symbols alias the filtering_q31_inputs array: + * + * - filtering_q15_inputs + * - filtering_q7_inputs + * + * The aliasing conflicts with the instantiation of #ARR_DESC_t structs. + * + * These macro-level aliases allow the #CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS() macro + * to correctly select the filtering_q31_input or filtering_f32_input array, + * within a template, by type_suffix. + * + */ +#define CORRELATE_f32_INPUTS filtering_f32_inputs +#define CORRELATE_q31_INPUTS filtering_q31_inputs +#define CORRELATE_q15_INPUTS filtering_q31_inputs +#define CORRELATE_q7_INPUTS filtering_q31_inputs + +/** + * Defines #ARR_DESC_t objects that wrap existing, type-specific, common + * inputs. + */ +#define CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(type_suffix) \ + ARR_DESC_DEFINE_USING_ARR( \ + TYPE_FROM_ABBREV(type_suffix), \ + correlate_input_rand1_##type_suffix, \ + CORRELATE_##type_suffix##_INPUTS, \ + 0, \ + CORRELATE_MAX_INPUT_ELTS); \ + \ + ARR_DESC_DEFINE_USING_ARR( \ + TYPE_FROM_ABBREV(type_suffix), \ + correlate_input_rand2_##type_suffix, \ + CORRELATE_##type_suffix##_INPUTS, \ + 1, \ + CORRELATE_MAX_INPUT_ELTS) /* Note the lacking semicolon */ + +CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(f32); +CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(q31); +CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(q15); +CORRELATE_DEFINE_RAND_INPUT_ARR_DESCS(q7); +ARR_DESC_DEFINE(float32_t, correlate_input_zeros, CORRELATE_MAX_INPUT_ELTS, CURLY(0)); + +/** + * Define Input #ARR_DESC_t arrays by type suffix. + * + * Taking inputs in parallel from the 'a' and 'b' arrays yields the following + * test cases (star is correlate): + * + * - zero_array * zero_array + * - zero_array * random_array + * - random_array * zero_array + * - random_array * different_random_arary + */ +#define CORRELATE_DEFINE_ALL_INPUTS(type_suffix) \ + ARR_DESC_DEFINE(ARR_DESC_t *, \ + correlate_##type_suffix##_a_inputs, \ + 4, \ + CURLY( \ + &correlate_input_zeros, \ + &correlate_input_zeros, \ + &correlate_input_rand1_##type_suffix, \ + &correlate_input_rand1_##type_suffix \ + )); \ + ARR_DESC_DEFINE(ARR_DESC_t *, \ + correlate_##type_suffix##_b_inputs, \ + 4, \ + CURLY( \ + &correlate_input_zeros, \ + &correlate_input_rand1_##type_suffix, \ + &correlate_input_zeros, \ + &correlate_input_rand2_##type_suffix \ + )) /* Note the lacking semicolon */ + +CORRELATE_DEFINE_ALL_INPUTS(f32); +CORRELATE_DEFINE_ALL_INPUTS(q31); +CORRELATE_DEFINE_ALL_INPUTS(q15); +CORRELATE_DEFINE_ALL_INPUTS(q7); + +/*--------------------------------------------------------------------------------*/ +/* Convolution Lengths */ +/*--------------------------------------------------------------------------------*/ + +/* + * The correlate_lens_a and correlate_lens_b #ARR_DESC_t objects are accessed in parallel + * to provide correlate-length pairs. Taken in parallel they provide the + * following cases: + * + * - 1 * 1 : Shortest correlate possible. + * - 1 * 2 : Short correlate , one side is degenerate. + * - 17 * 1 : Medium correlate, one side is degenerate. + * - 15 * MAX : Longest correlate. + * MAX * MAX : Longest correlate. + */ +ARR_DESC_DEFINE(uint32_t, + correlate_lens_a, + 5, + CURLY( + 1, + 1, + 17, + 15, + CORRELATE_MAX_INPUT_ELTS + )); + +ARR_DESC_DEFINE(uint32_t, + correlate_lens_b, + 5, + CURLY( + 1, + 2, + 1, + CORRELATE_MAX_INPUT_ELTS, + CORRELATE_MAX_INPUT_ELTS + )); + +/*--------------------------------------------------------------------------------*/ +/* Convolution Tests */ +/*--------------------------------------------------------------------------------*/ + +#define CORRELATE_TEST_TEMPLATE(fut, fut_arg_interface, \ + ref, ref_arg_interface, \ + suffix, output_type) \ + JTEST_DEFINE_TEST(fut##_tests, fut) \ + { \ + TEMPLATE_DO_ARR_DESC( \ + input_idx, ARR_DESC_t *, input_ptr, correlate_##suffix##_a_inputs \ + , \ + void * input_a_ptr = input_ptr->data_ptr; \ + void * input_b_ptr = ARR_DESC_ELT( \ + ARR_DESC_t *, input_idx, \ + &(correlate_##suffix##_b_inputs))->data_ptr; \ + \ + TEMPLATE_DO_ARR_DESC( \ + correlate_len_idx, uint32_t, correlate_len_a, correlate_lens_a \ + , \ + uint32_t correlate_len_b = ARR_DESC_ELT( \ + uint32_t, correlate_len_idx, &(correlate_lens_b)); \ + \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Input A Length: %d\n" \ + "Input B Length: %d\n", \ + (int)correlate_len_a, \ + (int)correlate_len_b); \ + \ + memset(filtering_output_ref,0, \ + (2*CORRELATE_MAX_INPUT_ELTS)*sizeof(output_type)); \ + memset(filtering_output_fut,0, \ + (2*CORRELATE_MAX_INPUT_ELTS)*sizeof(output_type)); \ + \ + TEST_CALL_FUT_AND_REF( \ + fut, fut_arg_interface( \ + input_a_ptr, correlate_len_a, input_b_ptr, correlate_len_b), \ + ref, ref_arg_interface( \ + input_a_ptr, correlate_len_a, input_b_ptr, correlate_len_b)); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + correlate_len_a + correlate_len_b - 2, \ + output_type))); \ + \ + return JTEST_TEST_PASSED; \ + } + +#define CORRELATE_DEFINE_TEST(fn_name, suffix, output_type, test_template) \ + test_template( \ + arm_##fn_name##_##suffix, \ + CORRELATE_arm_##fn_name##_INPUT_INTERFACE, \ + ref_##fn_name##_##suffix, \ + CORRELATE_ref_##fn_name##_INPUT_INTERFACE, \ + suffix, \ + output_type \ + ) /* Note the lacking semicolon*/ + +/* Tests on functions without partial outputs */ +CORRELATE_DEFINE_TEST(correlate , f32, float32_t, CORRELATE_TEST_TEMPLATE); +CORRELATE_DEFINE_TEST(correlate , q31, q31_t , CORRELATE_TEST_TEMPLATE); +CORRELATE_DEFINE_TEST(correlate , q15, q15_t , CORRELATE_TEST_TEMPLATE); +CORRELATE_DEFINE_TEST(correlate , q7 , q7_t , CORRELATE_TEST_TEMPLATE); +CORRELATE_DEFINE_TEST(correlate_opt , q15, q15_t , CORRELATE_TEST_TEMPLATE); + +CORRELATE_TEST_TEMPLATE( + arm_correlate_opt_q7, + CORRELATE_arm_correlate_opt_q7_INPUT_INTERFACE, + ref_correlate_opt_q7, + CORRELATE_ref_correlate_opt_q7_INPUT_INTERFACE, + q7, + q7_t + ); + +CORRELATE_DEFINE_TEST(correlate_fast , q31, q31_t , CORRELATE_TEST_TEMPLATE); +CORRELATE_DEFINE_TEST(correlate_fast , q15, q15_t , CORRELATE_TEST_TEMPLATE); +CORRELATE_DEFINE_TEST(correlate_fast_opt , q15, q15_t , CORRELATE_TEST_TEMPLATE); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(correlate_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_correlate_f32_tests); + JTEST_TEST_CALL(arm_correlate_q31_tests); + JTEST_TEST_CALL(arm_correlate_q15_tests); + JTEST_TEST_CALL(arm_correlate_q7_tests); + + JTEST_TEST_CALL(arm_correlate_opt_q15_tests); + JTEST_TEST_CALL(arm_correlate_opt_q7_tests); + + JTEST_TEST_CALL(arm_correlate_fast_q31_tests); + JTEST_TEST_CALL(arm_correlate_fast_q15_tests); + + JTEST_TEST_CALL(arm_correlate_fast_opt_q15_tests); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/filtering_test_common_data.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/filtering_test_common_data.c new file mode 100644 index 0000000..3bd1afb --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/filtering_test_common_data.c @@ -0,0 +1,757 @@ +#include "filtering_test_data.h" + +/*--------------------------------------------------------------------------------*/ +/* Input/Output Buffers */ +/*--------------------------------------------------------------------------------*/ + +//must be max(LMS_MAX_BLOCKSIZE*2, FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_L) +float32_t filtering_output_fut[LMS_MAX_BLOCKSIZE*2] = {0}; +float32_t filtering_output_ref[LMS_MAX_BLOCKSIZE*2] = {0}; +float32_t filtering_output_f32_fut[LMS_MAX_BLOCKSIZE*2] = {0}; +float32_t filtering_output_f32_ref[LMS_MAX_BLOCKSIZE*2] = {0}; +float32_t filtering_input_lms[LMS_MAX_BLOCKSIZE*2] = {0}; +float32_t filtering_pState[LMS_MAX_BLOCKSIZE + FILTERING_MAX_NUMTAPS] = {0}; +float32_t filtering_scratch[FILTERING_MAX_BLOCKSIZE * 3] = {0}; +float32_t filtering_scratch2[FILTERING_MAX_BLOCKSIZE * 3] = {0}; +float32_t filtering_coeffs_lms[FILTERING_MAX_NUMTAPS]; + +const q31_t filtering_q31_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS] = +{ + 0xC14A5524, 0xCCABDA17, 0xAD6F5B56, 0xFDAFCE3B, 0xA9B226EB, + 0x41F6F6A, 0xA5CE38BF, 0x3A978AFA, 0xBA44B82A, 0x855C0F8, + 0x3D060524, 0x93D5E570, 0x97D7791D, 0xFFE0C38C, 0x26749841, + 0xC0A6EE54, 0x218EC386, 0x39FF3726, 0x8DC1F7CA, 0x702F2CF5, + 0xC1142FF1, 0xEC1476AB, 0x15F640DD, 0xE62CCE49, 0x3805DE7E, + 0xF70871FE, 0xCF8BD360, 0x8D19A8A0, 0xD764F821, 0xA58558CF, + 0x8C0CE04D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0xB646AE24, + 0x6CE00F5C, 0xE6D48948, 0xB55BD831, 0x3B72950A, 0x9EB69530, + 0x73394127, 0x773FA6F4, 0x9805A980, 0x838DE587, 0x9CF597F4, + 0xA2AD1691, 0xFA81A473, 0x7CDC7D7F, 0x4A5190D0, 0xED895BB9, + 0x8FD60F35, 0x1A21D530, 0xA0EB6DDA, 0xBDE6A516, 0x2501A3E1, + 0x5ED893C8, 0xE1E175B1, 0xACBBB2F3, 0xED350907, 0xDB140D7E, + 0xEEAE272D, 0xBE229841, 0xC18BFB88, 0xA6BB9B80, 0xBCF090E4, + 0x24DB166C, 0xF9AB7E42, 0x62DF28D1, 0xC7004665, 0xE3F56FC6, + 0x419E0C75, 0x46BE9F38, 0x2432B9B2, 0x758D83E0, 0xDCE12926, + 0x3F57CB74, 0x1F4458E2, 0xF1DD639, 0x83A1FB49, 0x173AFC76, + 0x86EF7531, 0x48D32F34, 0x7D3E3063, 0x8F2FB549, 0x5C314C9, + 0x18CBEB6D, 0xA6F8B697, 0x447B9E9C, 0x2E32BA33, 0xD074D715, + 0x81ACD746, 0xE55A4E04, 0x4891860F, 0x1DA3EB4F, 0xE0E6A27F, + 0x20BFDEB4, 0xD0B3A25B, 0x40C10544, 0xC15656C, 0x15405EAE, + 0x9858E3E1, 0xA36A9C4E, 0x88BD21F9, 0xAACF7A68, 0x773665E5, + 0xCEDFDF66, 0x617A9610, 0x524FC968, 0xC2D086CD, 0x5F008079, + 0x24DCA447, 0x6A4F5599, 0xB706CD4A, 0x1DE70608, 0xA33A2EE5, + 0x137E488E, 0x98061B7B, 0x4079D69D, 0xA4A897D5, 0xC4CEC8F5, + 0xD75F7883, 0x22406802, 0xF1AD70BB, 0x9D4ADD79, 0xBCBC7CE4, + 0xB358C0D8, 0x85792E47, 0xA7ADAC05, 0x3D19EEAB, 0x331AC0AF, + 0x33035831, 0x13D93987, 0xFC542094, 0x845F317E, 0xDDC4BF8B, + 0x1379E50C, 0x5C20193F, 0xFDD58298, 0x9D482B82, 0x4A6BE062, + 0xDC8A757B, 0x272917C1, 0x90E1EFBC, 0x355AD882, 0xE6F8EA35, + 0x604555A1, 0x7DFFFBB, 0xF58AE216, 0x9A11B463, 0xD3541BAD, + 0xA1576756, 0x483BED8D, 0x1F05AFCC, 0xCEA63DFB, 0x55B84677, + 0xFB2E04F2, 0x787AF96C, 0x84A12CD3, 0x460A9BD, 0x9DB22DD8, + 0x1A8C7F28, 0x861E452E, 0x932D3F78, 0x7652D852, 0x73357BBA, + 0xEBBB0A58, 0x62536AFA, 0x3F6B65EF, 0x6DC57B58, 0x9EB798CE, + 0xE6B0A740, 0xDFF68B47, 0x3247FB8F, 0xFFF3D302, 0xA9FD3E40, + 0x475A43D1, 0x6FF9528A, 0x2018A09D, 0x47E0F9C9, 0x4CF5F6D3, + 0x2807CE34, 0xDD6FD8ED, 0x234045D1, 0x51CEB5F9, 0x25297896, + 0x6443A0FE, 0x8F4449A9, 0xD4C3E1C6, 0xF01D52F1, 0x4E09C820, + 0xF18F0810, 0xE1548689, 0xF9DE5A1F, 0x5286DC23, 0x48AC3A4B, + 0xEA0C1BE0, 0xA1B785DB, 0x7086465D, 0x1CC10929, 0x1E1D716E, + 0xED231D4C, 0x2049D108, 0xB8FF9971, 0x949CF8D4, 0x441F1E8B, + 0xC3D95372, 0x69C324B4, 0xA10BFDC9, 0xC781DE78, 0x82476137, + 0xE163DDF, 0x390DEEC2, 0xAF68CE5B, 0x8E680ABD, 0x8223A615, + 0x92593380, 0x7B1465FE, 0x865AE957, 0x930F53EB, 0xED772EF7, + 0x10E916B6, 0xE3BCFA68, 0x2ACB80BB, 0xE51C5590, 0x994714B5, + 0xF30984EE, 0x59BBE1B4, 0xB4867DBC, 0xB91C706C, 0xBC16C218, + 0xA8931CD0, 0x129A66AB, 0x13171F4D, 0x62882872, 0x4B167FD4, + 0xE6902F4C, 0xFA794932, 0xD4B152C, 0xB0856EA9, 0x39466D55, + 0x3669E451, 0x8F5B9E8C, 0x877A3C6A, 0x51B956B4, 0x367EAD2A, + 0x9D2C662A, 0x78FB6880, 0x4E6D40B6, 0x4070EFDC, 0x4DF9679C, + 0x20306EDB, 0xE381AAE7, 0xA55DA748, 0x9B8B617B, 0x3E036FAD, + 0x84E4C4A7, 0xD5A3F517, 0x669BA988, 0x98FDDE8C, 0x67BD85CE, + 0x34BBB46C, 0x76994800, 0x85B9D8B6, 0x6DFA2FEF, 0x205DB5C, + 0x9F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB98B61, 0xC323DDAC, + 0x31D424B4, 0xF68C0D7E, 0x162FAF9D, 0x7B2A7A99, 0xF9392693, + 0xC42D12C0, 0x8692A73E, 0xD9A1EE80, 0xDD956856, 0x44E7BDAC, + 0x8D874532, 0x5F5C9DD0, 0x5D167858, 0x8559FEA2, 0x9D821476, + 0xD9654ED2, 0x594C0DC7, 0x1A87B506, 0x3F693200, 0x7A651AB5, + 0xA0CCBC8A, 0x9F9E662C, 0x78EF631, 0x2A09DA0, 0xB088C72F, + 0x92EE0D42, 0x360DCD5F, 0xF333FE48, 0x8D63CC06, 0x233A8ACB, + 0x706651ED, 0x7AA5C079, 0x262239D1, 0x3EBBEBB6, 0xA25A4F3D, + 0x32581A06, 0x6E6FD780, 0x5773F7C7, 0x75ED1DDC, 0x90DF2D15, + 0xBC79A9BC, 0xB7175917, 0x354E381C, 0x762AADD7, 0xF643DAC1, + 0xF3BBF49E, 0xD2FECE7E, 0x6C8140F4, 0xD7694875, 0x92D30822, + 0xC742A7CF, 0xB792ED98, 0x121CFE24, 0xA04E1EE7, 0x58CE268, + 0x215A080, 0x316CB323, 0xFAB14A31, 0xE1C13C03, 0xFD8EF4F1, + 0xF3F446D0, 0x6C6CEA0A, 0xBBFDF9FB, 0x67242969, 0xBE55A4EB, + 0x8FF5534, 0x52F0DF1C, 0x9710ADE3, 0xD40F4A21, 0x7984E8E7, + 0x419545EB, 0x993F7880, 0xAB246B20, 0x408AABC4, 0xCBF6EA49, + 0xC0894C55, 0x4CAA6398, 0xA47856E9, 0xAF2AE47D, 0x22F55D33, + 0xF0D37915, 0xD0634C72, 0xD983671, 0x2BCC5AF8, 0x9A77D48, + 0xC11B5CFA, 0xF107CD7E, 0x3A6B3593, 0xE1425F05, 0x6271812A, + 0x5B838310, 0xBD8418CA, 0x10A58792, 0x239F7137, 0xA13D5071, + 0x7F9930D4, 0xA462664F, 0x54180F8E, 0x291585BA, 0xE586B87A, + 0x144B2C12, 0x98E425C7, 0xBAA4B373, 0x18F0D03C, 0x99462AC0, + 0xD8B4D2EF, 0x72473895, 0xA6BF5435, 0xEDAD53B, 0xE0912FA6, + 0x5C33F331, 0x3D93CD7, 0x4D03D752, 0x20699929, 0xB89962F9, + 0x36E781E9, 0xF58B642C, 0x5FCA69E3, 0x5960A7F4, 0xAD5AAFD0, + 0xDF18324A, 0x3DB1E5AA, 0x76BA3876, 0x1BC29AF6, 0xBCC18841, + 0x73A60174, 0x625BFF58, 0x67C57724, 0x4458E53C, 0xE157B095, + 0x2B370837, 0x83DF6CE3, 0xDD08EEFA, 0x3F52A7C2, 0x191B4785, + 0x60843D82, 0xB0DE11F1, 0x105EA26C, 0x6E1C7AA2, 0x47AADD14, + 0xB6676D03, 0x3B8D4DF6, 0x737A694, 0x409521DC, 0x744206A, + 0xC722023F, 0x2BE4EAD5, 0x63E11D76, 0xCA4A09AB, 0x5CF2D2B9, + 0x31586916, 0xCDFD7D84, 0xB203F634, 0xAD7329D4, 0xC524582F, + 0x2E53E6C1, 0xBB0E019B, 0xB8538C6A, 0x6A2542D, 0x8A6A00E5, + 0x119725CC, 0x5406D347, 0x1B6FFAF1, 0xECCF71F1, 0x981117F2, + 0x7167CA76, 0x74F4B880, 0x77A55F47, 0x59EADB62, 0x4A331D95, + 0xBCBBA76F, 0xA45C4D50, 0xC718D5, 0x87CE05D1, 0x60D47AD5, + 0xA5CA9C40, 0xB0061766, 0xE69B39DF, 0xBD5F1320, 0x9930EAD3, + 0xA8B38325, 0x8DD090F, 0x6A6EEF37, 0x2DF16F66, 0xAB514C7E, + 0x31109C58, 0xFD48C7FC, 0x515341CA, 0x77AB8EA6, 0x41328DAF, + 0xBAF8D31E, 0xA4B31611, 0xED37F331, 0x7A832A22, 0xA22591C7, + 0x722D1F89, 0x3B19CF18, 0x261B8A4D, 0xC3F6F6DB, 0xCF8CED61, + 0x990FA250, 0xA02E72A9, 0x560DCEA2, 0xB08E67B4, 0x3674E663, + 0x97CC3852, 0xA7EB2EAC, 0xFFDE0AA8, 0xA64719A, 0x23269EDD, + 0x3C0B339E, 0x86284D40, 0x48D82ECB, 0xA4D4CCF8, 0x43631B91, + 0x4BF0C248, 0xB6497B9B, 0x6827BC58, 0xE30B7AF9, 0xA0CCBF26, + 0x6C3B7B71, 0xD744B3ED, 0xFA25D2F6, 0x4CDE642D, 0xD65B8142, + 0xA6F9207F, 0xE7A207BE, 0xDB506684, 0x44DA4780, 0x9175EA0C, + 0x156104AF, 0x4155E1B0, 0x6E3A6886, 0x9DBA1EA2, 0x5423D9C8, + 0xCC024E22, 0x758F852A, 0x1DD6395, 0x2D19CBAD, 0xE164F5A1, + 0xC2084602, 0x89C274AD, 0x13CB5562, 0xD7FE2D5B, 0xE07A4EE5, + 0x1672BA91, 0x4F624CCF, 0x2E5EA4A3, 0x28FEEFAF, 0xBDDA6EF4, + 0x32AFD40C, 0x99A5FB3B, 0xDD1D73A3, 0xA342CB3E, 0xA78445F5, + 0x53979C3B, 0x427D7943, 0x5221B58C, 0xA6CE9A5E, 0xFB50ECA4, + 0xBB86E36E, 0x60839F6D, 0xC5E1C2F3, 0xA1B7FB04, 0xFBB65E0C, + 0x78B80F5E, 0xFD8D972B, 0x3BF3BA90, 0x2D572D9, 0x2B5BC920, + 0xB6A0DE01, 0xD274D306, 0xC7C6C855, 0x9CAA669B, 0xB04AA641, + 0x4D6B1760, 0x3E17ED79, 0xD23241B0, 0xA4A6F957, 0xCBDE76AF, + 0x4E5F9493, 0x4C215DA5, 0x33A052B, 0x1A4D80C2, 0x40AEEBCA, + 0x390D106B, 0xE9E8E018, 0x5AF3D6CF, 0xE35E1D4, 0xC4FB1C6, + 0x14B6299B, 0x8D2E25F0, 0xCCBF932A, 0xC5AC18B6, 0x2227567D, + 0x86B5CE2F, 0x26344534, 0x22C515EC, 0x2442B70D, 0xEC3721C6, + 0x34EF687D, 0x9C06323A, 0xEAF3EA60, 0x60396F52, 0xEAE78AA1, + 0xC9D06CBC, 0x6F95F6C8, 0x584CC258, 0xBA9A27BB, 0x66DF8D47, + 0x9D4804EA, 0x57DD9E67, 0xF89C7895, 0xF5336111, 0x25C122C8, + 0x62742114, 0xCFBF6D26, 0xBF9F6482, 0xE6F02CD9, 0x11083202, + 0xC99E2618, 0x7EBC9351, 0x440112F1, 0xC9DFFBC1, 0x3BF4DC25, + 0xB1BA7FA0, 0x61AF9AED, 0x6B1F7D29, 0xAD865294, 0xE3E01129, + 0x7E9E77A5, 0x100435D7, 0x9FE3A71, 0x88597C81, 0x722849FA, + 0x31C5A0AF, 0xFBA178DC, 0x7F102D31, 0x5CA07864, 0x950E6F98, + 0x82C34882, 0x5D041F11, 0x8C613C57, 0xD398CFD1, 0x426F38AD, + 0x5599AB1D, 0xFAFA078D, 0xAB25B413, 0xD94B32CF, 0xB288FE38, + 0x2893BB46, 0x9A0B4168, 0xA91BCA94, 0x653A5E8D, 0x2174EBBE, + 0xDEFE6415, 0x30DA429C, 0xD0C5E40C, 0xB4719AA4, 0xD29CE7A6, + 0x905957CD, 0xCD287499, 0x83CA0AA7, 0xA8385832, 0x25A0CA02, + 0xC20D47A4, 0xB562F556, 0x4BC19E4C, 0xD9E215C7, 0x27E838B4, + 0xC58612F4, 0xA2827F6F, 0xC49DCDBA, 0x679B7362, 0x4E495845, + 0xCFD2F0D1, 0x395E76A0, 0x375A655E, 0x92E2058F, 0x73F9F0CA, + 0x61EFF3B3, 0x51FFD362, 0xE7410345, 0x7FDA8B3B, 0xA219E2E8, + 0x17ABE543, 0x26557412, 0x4B30084D, 0xA68E191D, 0xFE0D93DF, + 0x73EF127D, 0x4DECDDB1, 0x77FAF45F, 0xD6002898, 0x92DD0A40, + 0x157F6DDF, 0xC2A55F8E, 0x4359F924, 0xFB630C3F, 0x338B6B58, + 0xB2945F75, 0x4FA23A0E, 0x836EB8C0, 0xB3B18FD, 0x86114337, + 0x24668ACB, 0x99BB82F0, 0x924C8A47, 0xBA959701, 0x81155ABF, + 0x8C612D71, 0x36074CA7, 0xD1668C41, 0xE35F58C7, 0x7FC2802D, + 0x8E6A7CF3, 0x65B07D07, 0x815F6A6B, 0x791BF0DD, 0x6E47D719, + 0xC24394C7, 0xE84A6EB, 0xF194AFEE, 0x464A2F52, 0x677579FD, + 0xEBA775AE, 0x1F6EEFF, 0x9A795237, 0x78D9D45F, 0x9D0B344D, + 0xBBD34AB7, 0x2F85B12A, 0x16C5C2AD, 0x3990985D, 0x88DF3351, + 0x82811AA5, 0x6D351F41, 0x4066A69D, 0x86B660BF, 0x6EDB4768, + 0xDDD78CF0, 0xB5D74F6E, 0xE89E220C, 0x91439687, 0x947CC9C9, + 0x3857E2BD, 0x302F8AE4, 0x1DABE7F8, 0x4832D6C9, 0x37D58FCB, + 0x4EA8A711, 0xCD7BAC98, 0x19DBF8BC, 0xD8DE8DC2, 0xEAFF7E7B, + 0xB7629C93, 0x792C6E19, 0xF7009192, 0xFF88439D, 0x2E196A66, + 0xEC71B78C, 0xEAF4BB3A, 0x7C16225E, 0x668F337, 0xCBEE1608, + 0x6D5B5552, 0x345DC590, 0x681209CC, 0x7B24A819, 0xD08A1416, + 0x99888FE3, 0x9FC7288A, 0x24BD8502, 0xEA1D9678, 0x20EECA0, + 0x59BEA057, 0x5ADE91EB, 0xDEA8E49D, 0xFA200E6F, 0x9149C81D, + 0xF2281E93, 0x8A5B0451, 0x67312D58, 0xE3B849F1, 0xD2217960, + 0x7CDF59F3, 0x33C775C0, 0x9EBA8799, 0x7DF9506, 0xB4E96110, + 0xB8FCF3E3, 0xDEA059B2, 0x8229B6EA, 0x316486F6, 0x43919185, + 0x6C0D90F3, 0x1C6F3DF8, 0x38DB92A9, 0x5CD41244, 0x2C9F0A7B, + 0xDF4A315F, 0xF7CE9C66, 0x4C800860, 0x318D53E0, 0xF105C20D, + 0xD753E1F2, 0x750810BA, 0xA17ECCA5, 0x2010140, 0x4D884763, + 0xC2BB0DA7, 0xB2D5BA74, 0x141CECD4, 0x887FDFC3, 0xC64B53, + 0x2D2A85F6, 0x15532B45, 0x5D5CBCE1, 0xBEB9A16A, 0xA214611B, + 0x9FC5AC5F, 0x11AE5DD7, 0xA0B9A5A9, 0xFC648AF4, 0x740009AC, + 0xED0E0321, 0xB8E6A61, 0x8910C544, 0xC74F26C8, 0x9525CCF3, + 0xB41AEB59, 0xE61984CE, 0x598B2197, 0xA412E59D, 0xE1976DD4, + 0xB29BBE16, 0x88FD9FB0, 0xB04006F3, 0xB45E309, 0xD5CC15F1, + 0xD9DAF630, 0xDC809335, 0x803ED52, 0xB537F5A5, 0xA994F6EB, + 0xF5288568, 0xF66FD264, 0x2EA2B3A6, 0x647619F3, 0xFFB38C7A, + 0x1BC03B9, 0xB6BC3061, 0xBF30596E, 0xBE2AD27B, 0x8AC04220, + 0x641979A3, 0x9ECCBB89, 0xA144FBC1, 0x4E8FAE26, 0x8C5A9D90, + 0x299ED467, 0xD7C9C7E3, 0x1D4865ED, 0x76F31C3D, 0xCEE81CDF, + 0xB479195E, 0x6FFB3AE1, 0xDC8A398, 0x300F7364, 0xC7940AFA, + 0x3B85BE3E, 0xD98CC40D, 0xA24A3D89, 0x3A674204, 0x22888A38, + 0x2E77F2D, 0xA2841C9C, 0xCF0689C3, 0x9FE98922, 0x89335017, + 0x2D6B69A7, 0xFEDB63F9, 0x899AF4EF, 0x9F9F9B40, 0xA4BE97E8, + 0xA51DAF7A, 0x16AC50D3, 0xA8D7ED6, 0xED193443, 0x7615EF1B, + 0xB0DF6A4E, 0x64FFE794, 0xE3DB2C9A, 0x7435B022, 0x556E825C, + 0x23802AF9, 0xC25098A4, 0xE75A18BB, 0x70B2A7B9, 0x7FB81BF, + 0x63EF910, 0x6C669591, 0x6574DD2B, 0xCF6E379D, 0xD2B3AFAC, + 0x1E6A1101, 0x1DE22385, 0x2338191F, 0xC69704B6, 0xCBABC599, + 0x54EB4809, 0x7839BE6D, 0xD50017DD, 0x39B1A0E1, 0x288D52D3, + 0x2D52668C, 0x20D22A68, 0x4E1207D1, 0x3FCC0EFE, 0x47F3FE64, + 0x25177A90, 0xB4BFDD4D, 0xDA8DBDCE, 0x6F7275A8, 0x6BEAA655, + 0xAA1810FC, 0xE4DB593A, 0x8A4D4BC0, 0x2C402E93, 0xF1C0F7F9, + 0x6F0CC577, 0x70412414, 0x752F9DC1, 0xD82E38EA, 0xAC455F7B, + 0x4DCD4EDB, 0x92BC2696, 0xFB03F135, 0x4FCA1F8C, 0xBD5E75F6, + 0x502F41B0, 0x3616D3F1, 0x2E5B8E31, 0x2026EB19, 0x57E783D7, + 0x467BBE00, 0x4703ABA3, 0x1F776B9C, 0xE2570A84, 0xFEC7DB48, + 0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6, 0x99D5D8ED, + 0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F, + 0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB, + 0x56186AA1, 0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94, + 0xAC18B207, 0x5FC78B3, 0x7F10621E, 0xA769E6B2, 0xEC9F4A11, + 0xCE3F982C, 0x62BA2EF5, 0xA5F239CD, 0x73D63FED, 0xE36E9F5E, + 0x8AC1DA0E, 0x3F3DB3EB, 0x738326EA, 0x35C366B1, 0xCD476E86, + 0x82F6B208, 0xF11A9FC1, 0x426AC396, 0x7E4D1B93, 0x75E4EDB7, + 0xAF3C44A7, 0x51A5EF5C, 0xFAD2463D, 0x8A5639CA, 0xC995AC78, + 0xCC4BE4F6, 0x3AFE7F8D, 0x66993D04, 0x4386FF37, 0xCBC1C6C2, + 0x55A8F5EC, 0xE81A9A75, 0x30A67E1B, 0x4A4A7D0C, 0x20F7F993, + 0x1891805, 0x738976AD, 0xD426E7D6, 0x3C5CEEBF, 0x4499187F, + 0xABF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456, 0x421BCF29, + 0xF6740F9C, 0x8916BB8D, 0x3D72AAB, 0x9AD54DD7, 0x7549C6EE, + 0x7317342B, 0xA18546D4, 0x1056BDA7, 0x54BBCCCE, 0x8CE63E46, + 0x5D146234, 0x33BE6C63, 0xB250C4E5, 0x89D72335, 0x87C36BA, + 0xB65530CC, 0x2DFAC48C, 0x1663D16F, 0x59B80AA, 0x950274EA, + 0x92532D4A, 0x3CEF802D, 0x492FBDA5, 0xA63A2574, 0xEF8005C2, + 0x94A18651, 0xAF627ABA, 0x6829B238, 0xA698F646, 0xD2598516, + 0x10144D36, 0xD9B1D1B9, 0xAB2ACF05, 0x5395B699, 0xA7851C75, + 0x1806C6F3, 0xAE970306, 0x3284B145, 0x98F4FE8F, 0xECDD35CC, + 0xDDC1EE0E, 0xC4848865, 0x925826BD, 0x4078BE39, 0x68A8561A, + 0x323045DC, 0xA933B37F, 0xBA2AEE2E, 0x4F24F65D, 0x349EE246, + 0xF97B9D0E, 0x46DC5759, 0x4529F425, 0x80D17B42, 0x8E16F709, + 0x1B42206A, 0x4934A526, 0x391BB6DE, 0xB52EF45C, 0x26C30290, + 0xCBA23CAA, 0xA501A8C3, 0xD922C4F8, 0xE8824E53, 0x6F4255DC, + 0x5960B544, 0x58BC69D6, 0xCA936323, 0xFDDF053C, 0xC2E002D6, + 0x7D750755, 0x8A3F9CD1, 0x35F8F6F8, 0xFB7BD154, 0x65CFF94F, + 0x390A58DD, 0xD97C4093, 0x501CA2A3, 0x8EA5DEBC, 0xCA93461F, + 0xE02D984C, 0x126F8517, 0x39FDD887, 0x46241AE9, 0x777E854D, + 0xE2B36349, 0x58E3FA9F, 0x971DEF1E, 0x8E156228, 0xC0E14E9, + 0xA9A01BE6, 0xB318C990, 0x971680D6, 0xA1F359CE, 0x487E23F4, + 0x7DE465B0, 0x4E4C905E, 0x2A652959, 0x116FF167, 0x5C74AAB9, + 0x467BBE00, 0x4703ABA3, 0x1F776B9C, 0xE2570A84, 0xFEC7DB48, + 0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6, 0x99D5D8ED, + 0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F, + 0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB, + 0x56186AA1, 0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94, + 0xAC18B207, 0x5FC78B3, 0x7F10621E, 0xA769E6B2, 0xEC9F4A11, + 0xCE3F982C, 0x62BA2EF5, 0xA5F239CD, 0x4FEFC920, 0x28DF4EB8, + 0x29EBF45A, 0x1E350CF6 + }; + +/* The source data is random across the q31_t range. Accessing it by word should + remain random. */ +const q15_t * filtering_q15_inputs = (q15_t *) filtering_q31_inputs; +const q7_t * filtering_q7_inputs = (q7_t *) filtering_q31_inputs; + +const float32_t filtering_f32_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS] = +{ + 43.0264275639 , -17.0525215570 , -94.8488973910 , -8.1924989580 , 7.2830326091 , 66.8368719314 , 33.9778190671 , 117.8652289772 , + -129.6077797465, -14.6420815368 , 18.0239223278 , 20.6760530292 , 55.0375037651 , 1.8674609862 , -85.6534302408 , -33.5750364909 , + 29.2110949614 , 110.4727049460 , -94.1914619387 , -1.4084169343 , 83.5181653041 , 47.3073514127 , -13.3420621181 , 30.3389699104 , + 12.1188124277 , 100.9730921941 , -114.0146362390, -77.5823200409 , 37.2019034618 , 40.0026301128 , -58.3387276630 , -34.9472398600 , + -5.1169678311 , -87.7660091118 , -150.5888601131, 56.0349370503 , 50.2168884079 , -74.2313236767 , 22.3648603560 , -6.8676387051 , + 74.8957303680 , -90.1292012823 , -55.1436241586 , -66.6732976100 , -6.7918147615 , 7.7612697081 , 35.7892605979 , -20.0470508830 , + 41.8369017546 , -143.7378056984, -41.9127158600 , -108.3531841158, -57.1917422289 , -124.2808828105, 38.9316388820 , -77.9212517405 , + 37.1990818377 , -28.9545952748 , -155.6371057564, 45.8088886393 , 36.2537018275 , -6.5727656016 , -104.2070491921, 45.5583813729 , + -19.7674717059 , -80.4802190947 , -1.4444563441 , -42.2142256438 , 36.6546339194 , -57.0866498590 , 44.4677067511 , 65.7285753407 , + -103.8158864647, 25.4348723711 , -153.5419639389, 39.3608409474 , 49.1658103436 , 79.5570602275 , 75.2944095996 , 58.9394700746 , + -53.1018534392 , 33.4172444014 , 35.6224682287 , -64.4353396418 , -125.8464291251, -47.6072111617 , -26.2177687594 , -12.0061322096 , + -17.7887967585 , -28.2926175090 , -62.0691715749 , 40.5098573604 , -191.1123732593, 119.6750713043 , 19.6182375803 , -26.7615252921 , + 2.2957847015 , -108.3436451287, -50.5906164995 , -5.6360985100 , -11.6772204201 , -84.2765293757 , -60.9317810068 , 82.0446350218 , + -70.2048296348 , 72.8738253222 , 60.2450218115 , 114.2741231228 , 46.8180775285 , 6.9915412654 , -8.9909197429 , -78.9165936808 , + 66.4731535459 , -68.4235455651 , -79.8254597080 , -10.6308477115 , -62.6161569330 , -55.7744410292 , -11.8408366528 , 98.1034940997 , + 35.8213741877 , -54.4694482732 , 86.9631830044 , -53.0343838122 , -47.4898642865 , -47.2010929590 , -31.3312639685 , -23.0908245172 , + 12.0258009869 , -5.1098204703 , -9.8420230737 , -107.3328761158, 44.6810431959 , -17.9083820345 , -60.9753512872 , -7.5915088994 , + 17.2250813329 , 57.9176125648 , 124.3004161362 , -63.1950908493 , 120.5788885640 , -44.1734238117 , -91.7408095116 , -43.5696066595 , + -49.9560710099 , -167.8513443296, -70.9437505499 , -46.4109705355 , -64.2264526456 , -13.9995803916 , -100.9548186356, 9.9101010575 , + -50.0615130815 , -55.7590145012 , -60.3195153388 , 61.7913378549 , -102.0850899209, 53.2360193126 , -25.8997883369 , 75.1445512333 , + -113.8148602310, 17.8027281119 , -19.5006822722 , -44.2169628471 , 107.5017084384 , -113.7909124666, -43.9735396033 , 7.6880981388 , + 46.7384653508 , 9.9047443751 , 81.8646964362 , 132.3812863877 , -95.6959050236 , -68.5015813484 , 65.8586404494 , 18.5039353889 , + -30.1786166621 , -90.3098515667 , -22.9356228552 , -20.5778272423 , -2.2127786675 , -35.4418447703 , -51.8722915974 , -107.9024439078, + -51.5940748232 , -51.7463262677 , 74.2795485984 , 94.2205022462 , 9.7016384049 , -47.3556083155 , -36.7822314478 , -151.6455525363, + -15.7183814485 , 78.2063383182 , 0.1516414969 , 37.9304181609 , 20.6185902740 , -22.2164106778 , 6.1160554677 , 2.4061326953 , + -111.6681824598, -60.0858917090 , 75.1698614693 , -76.5787410444 , 28.3391655715 , -2.4946186443 , -68.0378899682 , 104.0893199171 , + -51.8319647254 , 38.8521710524 , 75.9114239564 , 73.9206172905 , -103.2533029987, 6.9002718274 , -36.6346436319 , -25.1990926265 , + 1.5852145953 , -50.6438436795 , 21.5018844428 , -151.9305562846, -51.7326681814 , 21.4475994143 , 42.2564011921 , -74.0520586926 , + 49.7370635809 , -13.2957534126 , 36.6746826778 , -31.7005492589 , 148.4894964268 , 79.7890632353 , 16.8856024809 , 16.1690460177 , + 39.2665169484 , 117.2461167794 , -37.4827984831 , -47.8387803604 , -95.7025286193 , 34.3058214285 , -124.9536456028, 56.1640195764 , + 94.3636873606 , 35.3992852810 , -38.3920852159 , -100.5738062016, -29.7837022314 , 42.9133913996 , -34.2715618187 , -14.3589115627 , + -16.5935468750 , 20.4574192236 , -88.7897972666 , -38.6285080386 , 53.3203422726 , 98.5991486746 , 122.7305462474 , 67.7902817187 , + 5.1764117389 , 5.0632821624 , 21.9288789574 , -78.3140512638 , -21.2069682335 , 23.6342010925 , 34.4445769455 , 59.1346766615 , + 28.9978778000 , 39.8121180845 , -17.1650033520 , -56.9174900874 , 17.8157086148 , -112.8801457350, -122.4019040408, 140.8669393157 , + -65.4664329639 , 40.6952775518 , 32.7260891658 , -43.2565155866 , 19.3945751928 , -20.1815002000 , -67.6601711640 , -18.1921178207 , + -35.6802153684 , 49.9550290306 , 131.4925251016 , -31.2940938167 , -5.2848453344 , -109.5580577933, 20.2437599390 , -8.8782958734 , + 54.1836717264 , 7.2555852190 , -3.5698316137 , -51.9236786262 , 6.7861547980 , -104.4814551670, 45.8458629668 , 70.0890876844 , + 38.3572837740 , 61.8024165129 , 68.0176962024 , -12.8193934080 , -21.4661610917 , -0.9377108815 , -74.2100679061 , 71.0490808147 , + 91.9813889497 , -14.5797640164 , 3.5036749129 , -138.3605478356, -48.1501349794 , -16.0636922482 , -12.1334197606 , 15.0562207637 , + -34.0878176054 , 55.1075126157 , 97.3829871877 , 0.2053358099 , -94.8713267382 , 51.5460954054 , 21.2966946363 , 58.1331025047 , + -23.4599044132 , -19.3315856528 , -8.4497193577 , -1.9594679356 , -33.1906549336 , -144.6825417978, -57.1218958072 , 35.7353406097 , + 61.4666549819 , 14.6536253128 , 82.1632196866 , -44.6230161723 , -91.1022589278 , -18.5737673927 , -136.8975612334, 56.9606788003 , + 70.7059960183 , -68.2829345081 , -10.2629800455 , -53.6385325047 , -68.7928766204 , 88.2444688302 , 83.1412324801 , -102.9206928160, + -68.2329763159 , -69.7552955469 , 108.2132269009 , -28.2582329307 , 5.6685898328 , -36.0392956840 , 43.3269513128 , -8.6436416796 , + -16.5054886972 , 11.5008791788 , 39.6923606683 , -28.9039554061 , 13.5938214364 , -23.6296332202 , 49.1171161163 , 53.1636857935 , + -62.9672053166 , -54.2594757384 , 48.3838956696 , 8.0469071555 , -33.6472086213 , -120.5381752144, 55.0880453111 , 17.8990740563 , + 144.9402232336 , 101.7886229203 , -73.3666393712 , -16.4721379138 , -12.7447935685 , 101.8245160983 , -49.7026860415 , -15.1227790364 , + 65.7430288442 , -131.8695390036, 10.2750933946 , 90.9752774838 , -26.5859990591 , -95.6962772568 , 76.2174589344 , 24.8796848060 , + -38.8938223046 , 54.1687774852 , -37.3585968996 , -34.6848570502 , 33.0151011570 , -55.8345877671 , -3.9009101671 , -31.5024971691 , + -9.6863895491 , 91.8719195957 , -58.9993249744 , -25.6887030614 , -8.0829472205 , 4.6386491741 , -71.4019697167 , -21.3734669095 , + 86.2079144404 , 79.6823974266 , -0.0910915997 , 44.8067718095 , 58.7204020766 , 72.6856808976 , -50.3373732478 , -116.1175365534, + -15.0884909384 , 5.4593772059 , -63.6553527905 , 37.3460388205 , -32.2399421679 , 95.7569350513 , -7.3700141964 , -56.0370832967 , + -41.7377150439 , -42.0042856519 , 12.5134312941 , 93.7845584531 , -32.4801087157 , -33.3976050318 , -24.2252126001 , -46.3199064467 , + -20.3704610276 , 15.8571376404 , 88.9127217235 , -33.1132582267 , -1.0005675836 , -28.1780471904 , 150.9349379135 , 38.0600520828 , + 36.4338677563 , -3.3709201641 , 29.7709773016 , 16.5064119077 , 21.3147729463 , 110.6714300904 , 18.8406036507 , 14.8963298097 , + 50.9975960392 , 16.3991140350 , -194.0805845907, -41.6723945839 , -74.8991127408 , -6.4587655805 , -0.6883628218 , -49.8709647175 , + 194.2265120473 , 64.3043624521 , 16.0040882780 , 68.4032551772 , -43.4050313128 , 84.6826289824 , -28.1357565943 , 134.6895584120 , + -7.9746152680 , -95.6692886462 , -48.9444370342 , 79.4479343188 , -50.5345228122 , 52.4800633307 , -14.7735051703 , -20.1510237050 , + 22.5049816980 , 64.4191999102 , 24.8385648232 , 99.4265041360 , 62.0189508473 , -28.3892600378 , -109.8842008564, -79.0407483407 , + 18.3408112020 , 49.1650536089 , 31.5419844924 , -36.1160722679 , -132.9148081329, 10.4053531567 , -129.2463715470, -43.4602207151 , + -24.2420653292 , 91.5388317556 , 21.4762248190 , -44.3810909139 , 18.4098011282 , -45.8691164539 , -20.9831197962 , 16.2076792914 , + 66.0224147666 , -13.6794615513 , 101.2163279622 , -62.4462618603 , 22.2040981785 , -52.3208382802 , -24.7909079016 , 58.5150375093 , + 18.8569705105 , -55.6083430939 , 131.0273367422 , -34.5209015065 , 121.4357296573 , -77.2590299593 , -51.5929566898 , 5.0247131098 , + -23.8451707592 , -4.5912313547 , 31.1387246821 , 61.7019310824 , 49.1912429744 , -50.5836913031 , -74.8182600630 , -21.6209317022 , + 20.9409464654 , -72.7870824583 , -28.3530746820 , -45.0794425434 , -13.4910629905 , -62.0158772255 , -34.1421181246 , 44.2844972784 , + 8.4213193211 , 79.9349022793 , 60.0160502260 , 32.2272994080 , -72.2893887746 , 17.3063698247 , -134.6335742431, 64.6499736261 , + 7.1411921919 , -37.5517577873 , 6.2405670930 , 117.1920927305 , 128.7420689815 , -3.1556854963 , -13.4100422909 , -11.9336372907 , + -8.6022400553 , -102.0033506666, -78.4696575074 , 15.0765861403 , -111.5219718576, -13.4162786508 , 38.2437013694 , 61.1637732561 , + -34.4804160003 , 107.4438003830 , -79.4193067813 , -81.1842853968 , -26.2622970331 , 132.3205425408 , -119.1464268477, 67.3048866598 , + 103.3266736715 , -58.1865815617 , 27.6231908601 , -11.2004371750 , 26.0340617206 , 12.5696123916 , 0.6442714420 , -30.7393043544 , + 1.5314955897 , 49.9110088250 , -106.1358721920, 51.1608329944 , -32.8684239794 , -27.7215905745 , -11.6450303367 , -36.7731678028 , + 59.9383486599 , -4.6301990580 , 5.0361682939 , -10.5669407980 , 124.0908762205 , 35.8305364082 , -123.6216777114, -74.2569079167 , + -56.7651776816 , 16.0736385582 , 23.5030632215 , -110.6764295938, 44.3086821806 , 9.4452708243 , 5.3300080251 , 39.0483916714 , + 151.4550562868 , 62.8957092621 , -116.8103461233, 5.1129927759 , -33.2252515135 , -9.4522506046 , 22.7026048372 , -15.5264414569 , + 71.2087620034 , 19.1191568332 , 50.3019546809 , -5.6096922409 , 22.9344126462 , -7.7591876203 , 31.8949515564 , -58.4253952381 , + 66.4341297173 , -19.0583083044 , 96.7695087855 , 20.4934280047 , 4.9544603116 , -20.8288135920 , -173.2659655408, -62.4883621640 , + -48.5528422703 , 12.1437504278 , 60.2482234666 , -19.6072312919 , -34.6320214291 , 129.0089698963 , -50.9042160618 , 98.3952661477 , + -4.7051792479 , -13.1768910826 , 69.5138802139 , 58.5748201565 , -45.9385652563 , 151.7952104306 , 34.2541941013 , -58.0417838381 , + 28.1480473670 , 46.4006562684 , 97.7001828545 , 4.0855607626 , -32.6097018162 , 16.8913949959 , 105.7266202978 , -89.3978374651 , + -60.9338593128 , -41.2220734230 , 49.9393070783 , 95.0974764854 , 49.2498366456 , 58.6214364590 , 34.1113830569 , 45.6634098874 , + -22.5356086770 , -97.1978653617 , 86.5565049535 , 70.6118545777 , -30.6978082909 , 118.7238621666 , 14.5922386932 , 11.3449652072 , + 65.6007783405 , 82.6369678204 , -52.0390492248 , -47.0160551227 , -95.5142448634 , 99.7162626888 , -36.5523815090 , -42.8042935534 , + 68.3566199798 , -13.8451547552 , -71.1629911780 , 36.2989433752 , -32.4867163365 , 112.4079947071 , -75.6295117422 , 47.5276421639 , + 51.8078250755 , -26.8715188457 , -9.6291144797 , 40.1999849640 , -38.4634033246 , 40.9764960915 , -26.1715730268 , 36.5996396515 , + -26.9924731886 , 53.7879986570 , -83.1658398348 , 23.6381378489 , 43.8794937753 , -55.4133836419 , 90.0266130838 , 14.1036181982 , + -18.1225736715 , 85.1363181151 , -62.5970846379 , -18.5291947838 , -25.7341986703 , -49.7061342931 , -59.0442763971 , 50.8960636803 , + -87.6471123430 , -36.7217762531 , 22.5952364054 , 11.1107885650 , -0.5377327229 , 160.8145792630 , 73.3103441505 , 10.1656872354 , + -50.4554350397 , -57.3478171016 , -15.4201715357 , -26.9135446491 , -4.9891264771 , -37.0226770057 , -80.9919535641 , 50.4418660876 , + -25.8517575250 , -69.9538258421 , -17.5730160671 , 15.9405836751 , 113.9545230349 , -46.1040379057 , -94.2458635014 , -69.0338522452 , + 43.5813790265 , 107.1836101171 , -55.1012654323 , -77.1529555887 , -33.1530320656 , -94.5582659641 , -53.6837586872 , 27.0680381378 , + 93.9385415207 , -61.0955216188 , 18.0530957225 , 7.9150142320 , -12.1218191587 , 34.0173961457 , 40.0084937565 , 9.8119275580 , + 44.2065861274 , -1.8718514394 , 67.4740024215 , 46.7391150131 , 207.2404815875 , 45.1635364462 , 43.3580102761 , -44.0244218674 , + 83.2387206007 , -8.6441851856 , 12.3993902588 , -22.5091685270 , -19.8332981376 , 97.9196509289 , -76.6720306234 , 28.9740705859 , + 121.9415248016 , 9.6656982611 , -51.0996453694 , 37.3704374740 , 74.7589840907 , -113.4066752631, 120.0029566342 , -105.3786221360, + 81.8152755619 , -13.4979932982 , -21.4680758393 , -85.1088235539 , -65.3610798409 , -35.0444139470 , -48.0220794487 , -41.6210317362 , + 33.1212995259 , -82.1480936443 , -10.5479715135 , 76.4601917004 , 42.1983651157 , 92.6104239912 , -42.3536237955 , -24.5644182272 , + 30.4446637772 , -90.2899420489 , 63.6723540422 , 103.0895811428 , 64.1706769263 , -10.7069812309 , 21.8927240409 , 6.3571071738 , + 57.1457649358 , -52.9866276448 , 66.0981829072 , -29.5372056881 , -79.2252039810 , -136.2440652798, -57.0106422562 , 86.8203548141 , + 66.4244149837 , 53.3230426111 , -66.1283059222 , -131.0402660353, 8.0548411081 , 122.9088988100 , 1.2626894208 , -60.5059112373 , + -68.8707203082 , -6.4747987200 , 85.8411327244 , 99.9624156733 , 90.4197864338 , -35.9630441182 , -22.9158275507 , -17.3660128776 , + 16.7845345761 , 34.7219749782 , -39.3513765878 , 1.0460702756 , -60.9494500182 , 20.0900333387 , -85.9636743832 , 88.4400782168 , + 15.0729628728 , 61.5499846243 , 11.8579871757 , 107.8617581581 , -42.9393027864 , -62.8422307621 , -19.0589600542 , 4.0750325807 , + -36.0651825425 , 55.7638724501 , -10.4691736080 , -55.5672537178 , -61.2061519915 , -21.1885348576 , -131.2535612498, 24.7463552676 , + 22.9426321237 , 14.3038202264 , -138.0926317438, -59.0892900856 , -162.5416439986, 7.1307658250 , -141.1236672256, -4.7173618068 , + -16.7741532807 , -68.2615451173 , -2.6608701102 , 84.1978109826 , -11.3446202072 , 59.9630033088 , -1.8994925010 , -37.9301641959 , + -119.4435600954, -11.4587491646 , 12.2423215240 , -7.3169898616 , -67.0373621128 , 36.0198843055 , 53.9791315249 , -134.5885680695, + -83.8330811965 , -16.6714816463 , -8.8498552035 , -24.0513088196 , -22.9444328877 , -37.7961441531 , 25.1975736186 , -136.1611637464, + -5.0843464033 , -10.3939554694 , 20.7422826935 , 75.6854136623 , 46.4179626736 , -57.0052830175 , 7.3457235521 , -51.5504447254 , + -158.4375751701, -200.2426967181, -48.1234996261 , 1.6623945527 , 21.1746524375 , 99.4092980367 , -2.3206772903 , 45.7989166757 , + 2.0181548348 , -88.0556010969 , -59.1527212096 , 47.3607925077 , -10.4181140309 , 56.3558125650 , -8.9799125560 , -30.0376711812 , + -36.7132904688 , 35.7785050392 , -13.0763909369 , -2.1855594714 , 18.1550954005 , -28.6711803575 , -55.4495172398 , -2.8812973198 , + -59.9575059158 , 40.0588875786 , 57.4713686602 , -3.2835144853 , -36.7193552111 , -64.9415131516 , -166.9555466445, -23.5556853844 , + -54.9408569587 , -35.2310451959 , 21.3345143458 , 65.7590671151 , 51.2214538168 , 46.1271939944 , -42.2235267919 , 127.2329928299 , + 105.2391778600 , 17.6726845966 , -129.9021148044, 8.7065613044 , -94.0987112511 , -3.5375742950 , -23.1385452379 , 60.6219530633 , + 92.5445564235 , 48.5111974469 , -52.5699309159 , -60.0634811685 , 25.9034368684 , 140.0249495491 , 1.5918852392 , 38.0266038291 , + 17.5588710703 , 3.4294066089 , -27.6748782173 , 59.6182974489 , -35.2924781853 , -38.6198576115 , -13.6119803198 , 7.8375587489 , + 22.7250686519 , -28.3524510951 , -34.4269062817 , 22.6464817325 , -61.6528147860 , -5.9782002429 , 61.4730771294 , 43.5582379527 , + 55.6862408270 , 87.8745651631 , 46.3401042715 , -19.8780979663 , 74.1272633369 , 29.8590452377 , -12.8665765140 , 34.2931401219 , + 53.9279617551 , -16.9017895140 , -70.1527553166 , -79.6367897992 , 109.3728271017 , -129.2214826835, -53.4644539730 , -51.5654458993 , + 17.6062148433 , 3.5090251835 , 74.2615941204 , -109.3431097845, 40.1403465151 , 28.8714561280 , 94.0868659302 , -19.0047033845 , + -60.0967410050 , -19.0998457619 , -67.2027075128 , 72.0711434846 , -17.8737851232 , 123.7050551274 , 132.6331504104 , 25.5018761009 , + -36.7817189239 , -29.1580893235 , -6.5848563828 , 90.2868948516 , -35.7017258498 , -68.5675432955 , -52.4888589786 , 47.1377730021 , + -7.4546621940 , -52.0657517138 , -49.0404829633 , -114.6910280126, -117.6819819437, -32.7856729408 , 31.8232065591 , 12.1192973039 , + 35.2678513420 , -1.0336778293 , 30.7021249679 , 127.0442906046 , -84.8457819393 , 28.9862843096 , -47.3524701726 , -126.1094998460, + -2.9700276582 , -2.4956545870 , -53.8624121141 , -85.2114117637 , 76.9057985618 , 137.1205201755 , -19.0830817212 , 14.3407526579 , + -56.5921994449 , -25.6084873186 , -44.9470801106 , -133.3139496090, 0.3487447576 , 33.4499716730 , 34.7126257844 , -9.3307383323 , + 27.2996276947 , 10.8765676134 , -91.1032360444 , -90.9584216222 , 1.6981490570 , 96.8557438791 , 56.7726390913 , -44.3246449237 , + 52.3260643361 , 21.5551140465 , 27.4535327381 , 2.0072717479 , 7.4823125629 , 77.1185863870 , 16.1372262663 , -10.7206012957 , + 66.8830091413 , 49.3523828287 , 54.0855375598 , 30.8570349345 , -10.9255375390 , 62.3910624674 , 30.9238561381 , 0.3352881853 , + 72.1022806197 , -28.8319885008 , 23.3335288806 , 46.8999035980 , -67.0984424822 , -164.7917209112, 42.5767681360 , -92.4668227688 , + 43.8491734282 , -17.1126540408 , 37.4819594334 , 69.0774409673 , -39.3530526854 , -14.0693747124 , -60.2520781215 , -80.3860105519 , + 32.6689956840 , 15.3393042576 , -18.5529761307 , 97.3942151573 , -4.4462855745 , 13.7614349817 , 158.3358780719 , -44.7258299667 , + -17.7741912819 , 116.5136962268 , -33.6261057820 , 22.8344441288 , -155.1423976144, 5.7070117893 , -22.7906543902 , -45.0633909283 , + -13.9329987929 , -66.0848932507 , 1.1383038109 , 123.8386958483 , 67.6662401589 , 45.9152963554 , -27.4397697462 , 97.9596747354 , + -6.3544655181 , 29.0832146722 , 96.3468162499 , 32.4535976137 , -91.0650399301 , 2.7293262791 , 70.7853483111 , -92.3655274571 , + 69.0359217256 , 83.1530567979 , 35.8375091111 , 7.3393552348 , -95.1770165365 , 76.4905790891 , 55.6253140577 , -29.5315327050 , + -16.5935468750 , 20.4574192236 , -88.7897972666 , -38.6285080386 , 53.3203422726 , 98.5991486746 , 122.7305462474 , 67.7902817187 , + 5.1764117389 , 5.0632821624 , 21.9288789574 , -78.3140512638 , -21.2069682335 , 23.6342010925 , 34.4445769455 , 59.1346766615 , + 28.9978778000 , 39.8121180845 , -17.1650033520 , -56.9174900874 , 17.8157086148 , -112.8801457350, -122.4019040408, 140.8669393157 , + -65.4664329639 , 40.6952775518 , 32.7260891658 , -43.2565155866 , 19.3945751928 , -20.1815002000 , -67.6601711640 , -18.1921178207 , + -35.6802153684 , -19.6571455162 +}; + +const float64_t filtering_f64_inputs[FILTERING_MAX_BLOCKSIZE * FILTERING_MAX_M + FILTERING_MAX_NUMTAPS] = +{ + 43.0264275639 , -17.0525215570 , -94.8488973910 , -8.1924989580 , 7.2830326091 , 66.8368719314 , 33.9778190671 , 117.8652289772 , + -129.6077797465, -14.6420815368 , 18.0239223278 , 20.6760530292 , 55.0375037651 , 1.8674609862 , -85.6534302408 , -33.5750364909 , + 29.2110949614 , 110.4727049460 , -94.1914619387 , -1.4084169343 , 83.5181653041 , 47.3073514127 , -13.3420621181 , 30.3389699104 , + 12.1188124277 , 100.9730921941 , -114.0146362390, -77.5823200409 , 37.2019034618 , 40.0026301128 , -58.3387276630 , -34.9472398600 , + -5.1169678311 , -87.7660091118 , -150.5888601131, 56.0349370503 , 50.2168884079 , -74.2313236767 , 22.3648603560 , -6.8676387051 , + 74.8957303680 , -90.1292012823 , -55.1436241586 , -66.6732976100 , -6.7918147615 , 7.7612697081 , 35.7892605979 , -20.0470508830 , + 41.8369017546 , -143.7378056984, -41.9127158600 , -108.3531841158, -57.1917422289 , -124.2808828105, 38.9316388820 , -77.9212517405 , + 37.1990818377 , -28.9545952748 , -155.6371057564, 45.8088886393 , 36.2537018275 , -6.5727656016 , -104.2070491921, 45.5583813729 , + -19.7674717059 , -80.4802190947 , -1.4444563441 , -42.2142256438 , 36.6546339194 , -57.0866498590 , 44.4677067511 , 65.7285753407 , + -103.8158864647, 25.4348723711 , -153.5419639389, 39.3608409474 , 49.1658103436 , 79.5570602275 , 75.2944095996 , 58.9394700746 , + -53.1018534392 , 33.4172444014 , 35.6224682287 , -64.4353396418 , -125.8464291251, -47.6072111617 , -26.2177687594 , -12.0061322096 , + -17.7887967585 , -28.2926175090 , -62.0691715749 , 40.5098573604 , -191.1123732593, 119.6750713043 , 19.6182375803 , -26.7615252921 , + 2.2957847015 , -108.3436451287, -50.5906164995 , -5.6360985100 , -11.6772204201 , -84.2765293757 , -60.9317810068 , 82.0446350218 , + -70.2048296348 , 72.8738253222 , 60.2450218115 , 114.2741231228 , 46.8180775285 , 6.9915412654 , -8.9909197429 , -78.9165936808 , + 66.4731535459 , -68.4235455651 , -79.8254597080 , -10.6308477115 , -62.6161569330 , -55.7744410292 , -11.8408366528 , 98.1034940997 , + 35.8213741877 , -54.4694482732 , 86.9631830044 , -53.0343838122 , -47.4898642865 , -47.2010929590 , -31.3312639685 , -23.0908245172 , + 12.0258009869 , -5.1098204703 , -9.8420230737 , -107.3328761158, 44.6810431959 , -17.9083820345 , -60.9753512872 , -7.5915088994 , + 17.2250813329 , 57.9176125648 , 124.3004161362 , -63.1950908493 , 120.5788885640 , -44.1734238117 , -91.7408095116 , -43.5696066595 , + -49.9560710099 , -167.8513443296, -70.9437505499 , -46.4109705355 , -64.2264526456 , -13.9995803916 , -100.9548186356, 9.9101010575 , + -50.0615130815 , -55.7590145012 , -60.3195153388 , 61.7913378549 , -102.0850899209, 53.2360193126 , -25.8997883369 , 75.1445512333 , + -113.8148602310, 17.8027281119 , -19.5006822722 , -44.2169628471 , 107.5017084384 , -113.7909124666, -43.9735396033 , 7.6880981388 , + 46.7384653508 , 9.9047443751 , 81.8646964362 , 132.3812863877 , -95.6959050236 , -68.5015813484 , 65.8586404494 , 18.5039353889 , + -30.1786166621 , -90.3098515667 , -22.9356228552 , -20.5778272423 , -2.2127786675 , -35.4418447703 , -51.8722915974 , -107.9024439078, + -51.5940748232 , -51.7463262677 , 74.2795485984 , 94.2205022462 , 9.7016384049 , -47.3556083155 , -36.7822314478 , -151.6455525363, + -15.7183814485 , 78.2063383182 , 0.1516414969 , 37.9304181609 , 20.6185902740 , -22.2164106778 , 6.1160554677 , 2.4061326953 , + -111.6681824598, -60.0858917090 , 75.1698614693 , -76.5787410444 , 28.3391655715 , -2.4946186443 , -68.0378899682 , 104.0893199171 , + -51.8319647254 , 38.8521710524 , 75.9114239564 , 73.9206172905 , -103.2533029987, 6.9002718274 , -36.6346436319 , -25.1990926265 , + 1.5852145953 , -50.6438436795 , 21.5018844428 , -151.9305562846, -51.7326681814 , 21.4475994143 , 42.2564011921 , -74.0520586926 , + 49.7370635809 , -13.2957534126 , 36.6746826778 , -31.7005492589 , 148.4894964268 , 79.7890632353 , 16.8856024809 , 16.1690460177 , + 39.2665169484 , 117.2461167794 , -37.4827984831 , -47.8387803604 , -95.7025286193 , 34.3058214285 , -124.9536456028, 56.1640195764 , + 94.3636873606 , 35.3992852810 , -38.3920852159 , -100.5738062016, -29.7837022314 , 42.9133913996 , -34.2715618187 , -14.3589115627 , + -16.5935468750 , 20.4574192236 , -88.7897972666 , -38.6285080386 , 53.3203422726 , 98.5991486746 , 122.7305462474 , 67.7902817187 , + 5.1764117389 , 5.0632821624 , 21.9288789574 , -78.3140512638 , -21.2069682335 , 23.6342010925 , 34.4445769455 , 59.1346766615 , + 28.9978778000 , 39.8121180845 , -17.1650033520 , -56.9174900874 , 17.8157086148 , -112.8801457350, -122.4019040408, 140.8669393157 , + -65.4664329639 , 40.6952775518 , 32.7260891658 , -43.2565155866 , 19.3945751928 , -20.1815002000 , -67.6601711640 , -18.1921178207 , + -35.6802153684 , 49.9550290306 , 131.4925251016 , -31.2940938167 , -5.2848453344 , -109.5580577933, 20.2437599390 , -8.8782958734 , + 54.1836717264 , 7.2555852190 , -3.5698316137 , -51.9236786262 , 6.7861547980 , -104.4814551670, 45.8458629668 , 70.0890876844 , + 38.3572837740 , 61.8024165129 , 68.0176962024 , -12.8193934080 , -21.4661610917 , -0.9377108815 , -74.2100679061 , 71.0490808147 , + 91.9813889497 , -14.5797640164 , 3.5036749129 , -138.3605478356, -48.1501349794 , -16.0636922482 , -12.1334197606 , 15.0562207637 , + -34.0878176054 , 55.1075126157 , 97.3829871877 , 0.2053358099 , -94.8713267382 , 51.5460954054 , 21.2966946363 , 58.1331025047 , + -23.4599044132 , -19.3315856528 , -8.4497193577 , -1.9594679356 , -33.1906549336 , -144.6825417978, -57.1218958072 , 35.7353406097 , + 61.4666549819 , 14.6536253128 , 82.1632196866 , -44.6230161723 , -91.1022589278 , -18.5737673927 , -136.8975612334, 56.9606788003 , + 70.7059960183 , -68.2829345081 , -10.2629800455 , -53.6385325047 , -68.7928766204 , 88.2444688302 , 83.1412324801 , -102.9206928160, + -68.2329763159 , -69.7552955469 , 108.2132269009 , -28.2582329307 , 5.6685898328 , -36.0392956840 , 43.3269513128 , -8.6436416796 , + -16.5054886972 , 11.5008791788 , 39.6923606683 , -28.9039554061 , 13.5938214364 , -23.6296332202 , 49.1171161163 , 53.1636857935 , + -62.9672053166 , -54.2594757384 , 48.3838956696 , 8.0469071555 , -33.6472086213 , -120.5381752144, 55.0880453111 , 17.8990740563 , + 144.9402232336 , 101.7886229203 , -73.3666393712 , -16.4721379138 , -12.7447935685 , 101.8245160983 , -49.7026860415 , -15.1227790364 , + 65.7430288442 , -131.8695390036, 10.2750933946 , 90.9752774838 , -26.5859990591 , -95.6962772568 , 76.2174589344 , 24.8796848060 , + -38.8938223046 , 54.1687774852 , -37.3585968996 , -34.6848570502 , 33.0151011570 , -55.8345877671 , -3.9009101671 , -31.5024971691 , + -9.6863895491 , 91.8719195957 , -58.9993249744 , -25.6887030614 , -8.0829472205 , 4.6386491741 , -71.4019697167 , -21.3734669095 , + 86.2079144404 , 79.6823974266 , -0.0910915997 , 44.8067718095 , 58.7204020766 , 72.6856808976 , -50.3373732478 , -116.1175365534, + -15.0884909384 , 5.4593772059 , -63.6553527905 , 37.3460388205 , -32.2399421679 , 95.7569350513 , -7.3700141964 , -56.0370832967 , + -41.7377150439 , -42.0042856519 , 12.5134312941 , 93.7845584531 , -32.4801087157 , -33.3976050318 , -24.2252126001 , -46.3199064467 , + -20.3704610276 , 15.8571376404 , 88.9127217235 , -33.1132582267 , -1.0005675836 , -28.1780471904 , 150.9349379135 , 38.0600520828 , + 36.4338677563 , -3.3709201641 , 29.7709773016 , 16.5064119077 , 21.3147729463 , 110.6714300904 , 18.8406036507 , 14.8963298097 , + 50.9975960392 , 16.3991140350 , -194.0805845907, -41.6723945839 , -74.8991127408 , -6.4587655805 , -0.6883628218 , -49.8709647175 , + 194.2265120473 , 64.3043624521 , 16.0040882780 , 68.4032551772 , -43.4050313128 , 84.6826289824 , -28.1357565943 , 134.6895584120 , + -7.9746152680 , -95.6692886462 , -48.9444370342 , 79.4479343188 , -50.5345228122 , 52.4800633307 , -14.7735051703 , -20.1510237050 , + 22.5049816980 , 64.4191999102 , 24.8385648232 , 99.4265041360 , 62.0189508473 , -28.3892600378 , -109.8842008564, -79.0407483407 , + 18.3408112020 , 49.1650536089 , 31.5419844924 , -36.1160722679 , -132.9148081329, 10.4053531567 , -129.2463715470, -43.4602207151 , + -24.2420653292 , 91.5388317556 , 21.4762248190 , -44.3810909139 , 18.4098011282 , -45.8691164539 , -20.9831197962 , 16.2076792914 , + 66.0224147666 , -13.6794615513 , 101.2163279622 , -62.4462618603 , 22.2040981785 , -52.3208382802 , -24.7909079016 , 58.5150375093 , + 18.8569705105 , -55.6083430939 , 131.0273367422 , -34.5209015065 , 121.4357296573 , -77.2590299593 , -51.5929566898 , 5.0247131098 , + -23.8451707592 , -4.5912313547 , 31.1387246821 , 61.7019310824 , 49.1912429744 , -50.5836913031 , -74.8182600630 , -21.6209317022 , + 20.9409464654 , -72.7870824583 , -28.3530746820 , -45.0794425434 , -13.4910629905 , -62.0158772255 , -34.1421181246 , 44.2844972784 , + 8.4213193211 , 79.9349022793 , 60.0160502260 , 32.2272994080 , -72.2893887746 , 17.3063698247 , -134.6335742431, 64.6499736261 , + 7.1411921919 , -37.5517577873 , 6.2405670930 , 117.1920927305 , 128.7420689815 , -3.1556854963 , -13.4100422909 , -11.9336372907 , + -8.6022400553 , -102.0033506666, -78.4696575074 , 15.0765861403 , -111.5219718576, -13.4162786508 , 38.2437013694 , 61.1637732561 , + -34.4804160003 , 107.4438003830 , -79.4193067813 , -81.1842853968 , -26.2622970331 , 132.3205425408 , -119.1464268477, 67.3048866598 , + 103.3266736715 , -58.1865815617 , 27.6231908601 , -11.2004371750 , 26.0340617206 , 12.5696123916 , 0.6442714420 , -30.7393043544 , + 1.5314955897 , 49.9110088250 , -106.1358721920, 51.1608329944 , -32.8684239794 , -27.7215905745 , -11.6450303367 , -36.7731678028 , + 59.9383486599 , -4.6301990580 , 5.0361682939 , -10.5669407980 , 124.0908762205 , 35.8305364082 , -123.6216777114, -74.2569079167 , + -56.7651776816 , 16.0736385582 , 23.5030632215 , -110.6764295938, 44.3086821806 , 9.4452708243 , 5.3300080251 , 39.0483916714 , + 151.4550562868 , 62.8957092621 , -116.8103461233, 5.1129927759 , -33.2252515135 , -9.4522506046 , 22.7026048372 , -15.5264414569 , + 71.2087620034 , 19.1191568332 , 50.3019546809 , -5.6096922409 , 22.9344126462 , -7.7591876203 , 31.8949515564 , -58.4253952381 , + 66.4341297173 , -19.0583083044 , 96.7695087855 , 20.4934280047 , 4.9544603116 , -20.8288135920 , -173.2659655408, -62.4883621640 , + -48.5528422703 , 12.1437504278 , 60.2482234666 , -19.6072312919 , -34.6320214291 , 129.0089698963 , -50.9042160618 , 98.3952661477 , + -4.7051792479 , -13.1768910826 , 69.5138802139 , 58.5748201565 , -45.9385652563 , 151.7952104306 , 34.2541941013 , -58.0417838381 , + 28.1480473670 , 46.4006562684 , 97.7001828545 , 4.0855607626 , -32.6097018162 , 16.8913949959 , 105.7266202978 , -89.3978374651 , + -60.9338593128 , -41.2220734230 , 49.9393070783 , 95.0974764854 , 49.2498366456 , 58.6214364590 , 34.1113830569 , 45.6634098874 , + -22.5356086770 , -97.1978653617 , 86.5565049535 , 70.6118545777 , -30.6978082909 , 118.7238621666 , 14.5922386932 , 11.3449652072 , + 65.6007783405 , 82.6369678204 , -52.0390492248 , -47.0160551227 , -95.5142448634 , 99.7162626888 , -36.5523815090 , -42.8042935534 , + 68.3566199798 , -13.8451547552 , -71.1629911780 , 36.2989433752 , -32.4867163365 , 112.4079947071 , -75.6295117422 , 47.5276421639 , + 51.8078250755 , -26.8715188457 , -9.6291144797 , 40.1999849640 , -38.4634033246 , 40.9764960915 , -26.1715730268 , 36.5996396515 , + -26.9924731886 , 53.7879986570 , -83.1658398348 , 23.6381378489 , 43.8794937753 , -55.4133836419 , 90.0266130838 , 14.1036181982 , + -18.1225736715 , 85.1363181151 , -62.5970846379 , -18.5291947838 , -25.7341986703 , -49.7061342931 , -59.0442763971 , 50.8960636803 , + -87.6471123430 , -36.7217762531 , 22.5952364054 , 11.1107885650 , -0.5377327229 , 160.8145792630 , 73.3103441505 , 10.1656872354 , + -50.4554350397 , -57.3478171016 , -15.4201715357 , -26.9135446491 , -4.9891264771 , -37.0226770057 , -80.9919535641 , 50.4418660876 , + -25.8517575250 , -69.9538258421 , -17.5730160671 , 15.9405836751 , 113.9545230349 , -46.1040379057 , -94.2458635014 , -69.0338522452 , + 43.5813790265 , 107.1836101171 , -55.1012654323 , -77.1529555887 , -33.1530320656 , -94.5582659641 , -53.6837586872 , 27.0680381378 , + 93.9385415207 , -61.0955216188 , 18.0530957225 , 7.9150142320 , -12.1218191587 , 34.0173961457 , 40.0084937565 , 9.8119275580 , + 44.2065861274 , -1.8718514394 , 67.4740024215 , 46.7391150131 , 207.2404815875 , 45.1635364462 , 43.3580102761 , -44.0244218674 , + 83.2387206007 , -8.6441851856 , 12.3993902588 , -22.5091685270 , -19.8332981376 , 97.9196509289 , -76.6720306234 , 28.9740705859 , + 121.9415248016 , 9.6656982611 , -51.0996453694 , 37.3704374740 , 74.7589840907 , -113.4066752631, 120.0029566342 , -105.3786221360, + 81.8152755619 , -13.4979932982 , -21.4680758393 , -85.1088235539 , -65.3610798409 , -35.0444139470 , -48.0220794487 , -41.6210317362 , + 33.1212995259 , -82.1480936443 , -10.5479715135 , 76.4601917004 , 42.1983651157 , 92.6104239912 , -42.3536237955 , -24.5644182272 , + 30.4446637772 , -90.2899420489 , 63.6723540422 , 103.0895811428 , 64.1706769263 , -10.7069812309 , 21.8927240409 , 6.3571071738 , + 57.1457649358 , -52.9866276448 , 66.0981829072 , -29.5372056881 , -79.2252039810 , -136.2440652798, -57.0106422562 , 86.8203548141 , + 66.4244149837 , 53.3230426111 , -66.1283059222 , -131.0402660353, 8.0548411081 , 122.9088988100 , 1.2626894208 , -60.5059112373 , + -68.8707203082 , -6.4747987200 , 85.8411327244 , 99.9624156733 , 90.4197864338 , -35.9630441182 , -22.9158275507 , -17.3660128776 , + 16.7845345761 , 34.7219749782 , -39.3513765878 , 1.0460702756 , -60.9494500182 , 20.0900333387 , -85.9636743832 , 88.4400782168 , + 15.0729628728 , 61.5499846243 , 11.8579871757 , 107.8617581581 , -42.9393027864 , -62.8422307621 , -19.0589600542 , 4.0750325807 , + -36.0651825425 , 55.7638724501 , -10.4691736080 , -55.5672537178 , -61.2061519915 , -21.1885348576 , -131.2535612498, 24.7463552676 , + 22.9426321237 , 14.3038202264 , -138.0926317438, -59.0892900856 , -162.5416439986, 7.1307658250 , -141.1236672256, -4.7173618068 , + -16.7741532807 , -68.2615451173 , -2.6608701102 , 84.1978109826 , -11.3446202072 , 59.9630033088 , -1.8994925010 , -37.9301641959 , + -119.4435600954, -11.4587491646 , 12.2423215240 , -7.3169898616 , -67.0373621128 , 36.0198843055 , 53.9791315249 , -134.5885680695, + -83.8330811965 , -16.6714816463 , -8.8498552035 , -24.0513088196 , -22.9444328877 , -37.7961441531 , 25.1975736186 , -136.1611637464, + -5.0843464033 , -10.3939554694 , 20.7422826935 , 75.6854136623 , 46.4179626736 , -57.0052830175 , 7.3457235521 , -51.5504447254 , + -158.4375751701, -200.2426967181, -48.1234996261 , 1.6623945527 , 21.1746524375 , 99.4092980367 , -2.3206772903 , 45.7989166757 , + 2.0181548348 , -88.0556010969 , -59.1527212096 , 47.3607925077 , -10.4181140309 , 56.3558125650 , -8.9799125560 , -30.0376711812 , + -36.7132904688 , 35.7785050392 , -13.0763909369 , -2.1855594714 , 18.1550954005 , -28.6711803575 , -55.4495172398 , -2.8812973198 , + -59.9575059158 , 40.0588875786 , 57.4713686602 , -3.2835144853 , -36.7193552111 , -64.9415131516 , -166.9555466445, -23.5556853844 , + -54.9408569587 , -35.2310451959 , 21.3345143458 , 65.7590671151 , 51.2214538168 , 46.1271939944 , -42.2235267919 , 127.2329928299 , + 105.2391778600 , 17.6726845966 , -129.9021148044, 8.7065613044 , -94.0987112511 , -3.5375742950 , -23.1385452379 , 60.6219530633 , + 92.5445564235 , 48.5111974469 , -52.5699309159 , -60.0634811685 , 25.9034368684 , 140.0249495491 , 1.5918852392 , 38.0266038291 , + 17.5588710703 , 3.4294066089 , -27.6748782173 , 59.6182974489 , -35.2924781853 , -38.6198576115 , -13.6119803198 , 7.8375587489 , + 22.7250686519 , -28.3524510951 , -34.4269062817 , 22.6464817325 , -61.6528147860 , -5.9782002429 , 61.4730771294 , 43.5582379527 , + 55.6862408270 , 87.8745651631 , 46.3401042715 , -19.8780979663 , 74.1272633369 , 29.8590452377 , -12.8665765140 , 34.2931401219 , + 53.9279617551 , -16.9017895140 , -70.1527553166 , -79.6367897992 , 109.3728271017 , -129.2214826835, -53.4644539730 , -51.5654458993 , + 17.6062148433 , 3.5090251835 , 74.2615941204 , -109.3431097845, 40.1403465151 , 28.8714561280 , 94.0868659302 , -19.0047033845 , + -60.0967410050 , -19.0998457619 , -67.2027075128 , 72.0711434846 , -17.8737851232 , 123.7050551274 , 132.6331504104 , 25.5018761009 , + -36.7817189239 , -29.1580893235 , -6.5848563828 , 90.2868948516 , -35.7017258498 , -68.5675432955 , -52.4888589786 , 47.1377730021 , + -7.4546621940 , -52.0657517138 , -49.0404829633 , -114.6910280126, -117.6819819437, -32.7856729408 , 31.8232065591 , 12.1192973039 , + 35.2678513420 , -1.0336778293 , 30.7021249679 , 127.0442906046 , -84.8457819393 , 28.9862843096 , -47.3524701726 , -126.1094998460, + -2.9700276582 , -2.4956545870 , -53.8624121141 , -85.2114117637 , 76.9057985618 , 137.1205201755 , -19.0830817212 , 14.3407526579 , + -56.5921994449 , -25.6084873186 , -44.9470801106 , -133.3139496090, 0.3487447576 , 33.4499716730 , 34.7126257844 , -9.3307383323 , + 27.2996276947 , 10.8765676134 , -91.1032360444 , -90.9584216222 , 1.6981490570 , 96.8557438791 , 56.7726390913 , -44.3246449237 , + 52.3260643361 , 21.5551140465 , 27.4535327381 , 2.0072717479 , 7.4823125629 , 77.1185863870 , 16.1372262663 , -10.7206012957 , + 66.8830091413 , 49.3523828287 , 54.0855375598 , 30.8570349345 , -10.9255375390 , 62.3910624674 , 30.9238561381 , 0.3352881853 , + 72.1022806197 , -28.8319885008 , 23.3335288806 , 46.8999035980 , -67.0984424822 , -164.7917209112, 42.5767681360 , -92.4668227688 , + 43.8491734282 , -17.1126540408 , 37.4819594334 , 69.0774409673 , -39.3530526854 , -14.0693747124 , -60.2520781215 , -80.3860105519 , + 32.6689956840 , 15.3393042576 , -18.5529761307 , 97.3942151573 , -4.4462855745 , 13.7614349817 , 158.3358780719 , -44.7258299667 , + -17.7741912819 , 116.5136962268 , -33.6261057820 , 22.8344441288 , -155.1423976144, 5.7070117893 , -22.7906543902 , -45.0633909283 , + -13.9329987929 , -66.0848932507 , 1.1383038109 , 123.8386958483 , 67.6662401589 , 45.9152963554 , -27.4397697462 , 97.9596747354 , + -6.3544655181 , 29.0832146722 , 96.3468162499 , 32.4535976137 , -91.0650399301 , 2.7293262791 , 70.7853483111 , -92.3655274571 , + 69.0359217256 , 83.1530567979 , 35.8375091111 , 7.3393552348 , -95.1770165365 , 76.4905790891 , 55.6253140577 , -29.5315327050 , + -16.5935468750 , 20.4574192236 , -88.7897972666 , -38.6285080386 , 53.3203422726 , 98.5991486746 , 122.7305462474 , 67.7902817187 , + 5.1764117389 , 5.0632821624 , 21.9288789574 , -78.3140512638 , -21.2069682335 , 23.6342010925 , 34.4445769455 , 59.1346766615 , + 28.9978778000 , 39.8121180845 , -17.1650033520 , -56.9174900874 , 17.8157086148 , -112.8801457350, -122.4019040408, 140.8669393157 , + -65.4664329639 , 40.6952775518 , 32.7260891658 , -43.2565155866 , 19.3945751928 , -20.1815002000 , -67.6601711640 , -18.1921178207 , + -35.6802153684 , -19.6571455162 +}; + +/*--------------------------------------------------------------------------------*/ +/* Blocksizes */ +/*--------------------------------------------------------------------------------*/ +ARR_DESC_DEFINE(uint32_t, + filtering_blocksizes, + 5, + CURLY( + 1, 7, 14, 32, FILTERING_MAX_BLOCKSIZE)); + +ARR_DESC_DEFINE(uint32_t, + lms_blocksizes, + 3, + CURLY( + 128, 256, LMS_MAX_BLOCKSIZE)); + +ARR_DESC_DEFINE(uint16_t, + filtering_numtaps, + 5, + CURLY( + 4, 6, 14, 32, FILTERING_MAX_NUMTAPS)); + +ARR_DESC_DEFINE(uint16_t, + filtering_numtaps2, + 5, + CURLY( + 6, 12, 18, 24, 30)); + +ARR_DESC_DEFINE(uint16_t, + filtering_numstages, + 3, + CURLY( + 1, 7, FILTERING_MAX_NUMSTAGES)); + +ARR_DESC_DEFINE(uint8_t, + filtering_postshifts, + 3, + CURLY( + 0, 1, FILTERING_MAX_POSTSHIFT)); + +ARR_DESC_DEFINE(uint8_t, + filtering_Ls, + 3, + CURLY( + 1, 2, FILTERING_MAX_L)); + +ARR_DESC_DEFINE(uint8_t, + filtering_Ms, + 6, + CURLY( + 1, 2, 4, 7, 11, FILTERING_MAX_M)); + + +/*--------------------------------------------------------------------------------*/ +/* Coefficient Lists */ +/*--------------------------------------------------------------------------------*/ + +// There must be at least max( FILTERING_MAX_NUMTAPS + 2 , FILTERING_MAX_NUMSTAGES * 6 + 2) coefficients +const float32_t filtering_coeffs_f32[FILTERING_MAX_NUMSTAGES * 6 + 2] = +{ + -13.0572f, 0.0f , -97.4724f, 8.4111f , -7.2193f , -53.7577f, 22.2630f , + -1.0509f , -25.9198f, 26.5207f , -12.6697f, -78.7453f, -0.6540f , 0.3119f , + 13.4595f , -6.7225f , -4.1313f , -38.5974f, 3.2700f , -51.6191f, -22.4314f, + 0.2481f , 32.9779f , -37.6421f, 5.4469f , -7.0023f , 24.3657f , 9.9140f , + 0.2870f , -13.0499f, 29.3333f , -53.1396f, -2.7555f , 0.5377f , 35.3491f , + -3.7134f , 0.8548f , 4.7469f , -10.5865f, -2.7285f , -1.5912f , -13.3502f, + 6.8532f , -8.2304f , -8.1193f , 3.8257f , -2.1703f , 13.5727f , 14.2736f , + -0.9855f , -8.9334f , -13.8883f, 11.8430f , -2.2024f , 0.9795f , 15.6191f , + 5.2121f , 10.8102f , -9.4171f , 6.0411f , -0.9131f , 10.6992f , -3.2634f , + 7.5849f , -4.9305f , -6.0549f , -7.9409f , 1.5827f , 13.3177f , 8.6727f , + -13.2268f , 11.1239f , 0.2481f , 32.9779f , -37.6421f, 5.4469f , -13.8883f, + 11.8430f , -2.2024f , 0.9795f , 15.6191f , 0.2481f , 32.9779f , -37.6421f, + 3.2700f , -51.6191f +}; +const float64_t filtering_coeffs_f64[FILTERING_MAX_NUMSTAGES * 6 + 2] = +{ + -13.0572f, 0.0f , -97.4724f, 8.4111f , -7.2193f , -53.7577f, 22.2630f , + -1.0509f , -25.9198f, 26.5207f , -12.6697f, -78.7453f, -0.6540f , 0.3119f , + 13.4595f , -6.7225f , -4.1313f , -38.5974f, 3.2700f , -51.6191f, -22.4314f, + 0.2481f , 32.9779f , -37.6421f, 5.4469f , -7.0023f , 24.3657f , 9.9140f , + 0.2870f , -13.0499f, 29.3333f , -53.1396f, -2.7555f , 0.5377f , 35.3491f , + -3.7134f , 0.8548f , 4.7469f , -10.5865f, -2.7285f , -1.5912f , -13.3502f, + 6.8532f , -8.2304f , -8.1193f , 3.8257f , -2.1703f , 13.5727f , 14.2736f , + -0.9855f , -8.9334f , -13.8883f, 11.8430f , -2.2024f , 0.9795f , 15.6191f , + 5.2121f , 10.8102f , -9.4171f , 6.0411f , -0.9131f , 10.6992f , -3.2634f , + 7.5849f , -4.9305f , -6.0549f , -7.9409f , 1.5827f , 13.3177f , 8.6727f , + -13.2268f , 11.1239f , 0.2481f , 32.9779f , -37.6421f, 5.4469f , -13.8883f, + 11.8430f , -2.2024f , 0.9795f , 15.6191f , 0.2481f , 32.9779f , -37.6421f, + 3.2700f , -51.6191f +}; + +const float32_t filtering_coeffs_b_f32[FILTERING_MAX_NUMSTAGES * 6 + 2] = +{ + -0.0572f, 0.0f , -0.4724f, 0.4111f , -0.9999f, -0.7577f, 0.2630f , + -0.0509f, -1.0000f, 0.5207f , -0.6697f, -0.7453f, -0.6540f, 0.3119f , + 0.4595f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f, -0.4314f, + 0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f , + 0.2870f , -0.0499f, 0.3333f , -0.1396f, -0.7555f, 0.5377f , 0.3491f , + 0.2369f , -0.5310f, -0.5904f, 0.6263f , 0.0205f , 0.1088f , -0.2926f, + -0.4187f, -0.5094f, 0.4479f , -0.3594f, -0.3102f, 0.6748f , 0.7620f , + 0.0033f , -0.9195f, 0.3192f , -0.1705f, 0.5524f , -0.5025f, 0.4898f , + -0.0119f, -0.3982f, -0.7818f, -0.9186f, -0.0944f, 0.7228f , 0.7014f , + 0.4850f , -0.6814f, 0.4914f , -0.6286f, 0.5130f , -0.8585f, 0.3000f , + 0.6068f , 0.4978f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f, + 0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f , + 0.2369f , -0.5310f +}; + +const float64_t filtering_coeffs_b_f64[FILTERING_MAX_NUMSTAGES * 6 + 2] = +{ + -0.0572f, 0.0f , -0.4724f, 0.4111f , -0.9999f, -0.7577f, 0.2630f , + -0.0509f, -1.0000f, 0.5207f , -0.6697f, -0.7453f, -0.6540f, 0.3119f , + 0.4595f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f, -0.4314f, + 0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f , + 0.2870f , -0.0499f, 0.3333f , -0.1396f, -0.7555f, 0.5377f , 0.3491f , + 0.2369f , -0.5310f, -0.5904f, 0.6263f , 0.0205f , 0.1088f , -0.2926f, + -0.4187f, -0.5094f, 0.4479f , -0.3594f, -0.3102f, 0.6748f , 0.7620f , + 0.0033f , -0.9195f, 0.3192f , -0.1705f, 0.5524f , -0.5025f, 0.4898f , + -0.0119f, -0.3982f, -0.7818f, -0.9186f, -0.0944f, 0.7228f , 0.7014f , + 0.4850f , -0.6814f, 0.4914f , -0.6286f, 0.5130f , -0.8585f, 0.3000f , + 0.6068f , 0.4978f , -0.7225f, -0.1313f, -0.5974f, 0.2700f , -0.6191f, + 0.2481f , 0.9779f , -0.6421f, 0.4469f , -0.0023f, 0.3657f , 0.9140f , + 0.2369f , -0.5310f +}; + +const float32_t *filtering_coeffs_c_f32 = filtering_coeffs_b_f32 + 1; + +const q31_t filtering_coeffs_q31[FILTERING_MAX_NUMSTAGES * 6 + 2] = +{ + 0xEEDA759C, 0x00000000, 0x80000000, 0x0B0BA027, 0xF6850544, 0xB967E3EC, + 0x1D3C4F64, 0xFFFFFFFF, 0xDDF65B14, 0x22D3A62D, 0xEF5CBB89, 0x98979EE0, + 0xFF242597, 0x0068D9E9, 0x11ACC4F3, 0xF72C0F21, 0xFA9326BC, 0xCD506BD5, + 0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0x0053690B, 0x2B4E6639, 0xCE919690, + 0x0727234D, 0xF6CDFB14, 0x1FFF2FCF, 0x0D04DC35, 0x00607E4D, 0xEEDCF04A, + 0x268530EF, 0xBA37B050, 0x7FFFFFFF, 0xEF5CBB89, 0x00000000, 0x2B4E6639, + 0xFF242597, 0x0068D9E9, 0x11ACC4F3, 0xF72C0F21, 0xFA9326BC, 0xCD506BD5, + 0x1D3C4F64, 0xFFFFFFFF, 0xDDF65B14, 0x22D3A62D, 0xEF5CBB89, 0x98979EE0, + 0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0x0053690B, 0x2B4E6639, 0xCE919690, + 0x0727234D, 0xF6CDFB14, 0x1FFF2FCF, 0x0D04DC35, 0x00607E4D, 0xEEDCF04A, + 0xE28B1589, 0x0053690B, 0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0xB967E3EC, + 0x044B50CD, 0xBC36D4BC, 0xE28B1589, 0x0053690B, 0x2B4E6639, 0xCE919690, + 0x1FFF2FCF, 0x0D04DC35, 0x00607E4D, 0xEEDCF04A, 0xFFFFFFFF, 0xDDF65B14, + 0xFF242597, 0x0068D9E9, 0x11ACC4F3, 0xF72C0F21, 0xFA9326BC, 0xCD506BD5, + 0x2B4E6639, 0xCE919690 +}; + +const q31_t *filtering_coeffs_b_q31 = filtering_coeffs_q31 + 1; +const q31_t *filtering_coeffs_c_q31 = filtering_coeffs_q31 + 2; + +//fourth coefficient MUST be zero for arm_biquad_cascade_df1_fast_q15 to work +//every 6th coefficient after that must also be zero +const q15_t filtering_coeffs_q15[FILTERING_MAX_NUMSTAGES * 6 + 4] = +{ + 0xBA37, 0xEEDA, 0x8000, 0x0000, 0x0B0B, 0xF685, 0xB967, + 0x1D3C, 0xFFFF, 0x0000, 0x22D3, 0xEF5C, 0x9897, + 0xFF24, 0x0068, 0x0000, 0xF72C, 0xFA93, 0xCD50, + 0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91, + 0x0727, 0xF6CD, 0x0000, 0x0D04, 0x0060, 0xEEDC, + 0x2685, 0xBA37, 0x0000, 0xDDF6, 0x0000, 0x2B4E, + 0xFF24, 0x0068, 0x0000, 0xF72C, 0xFA93, 0xCD50, + 0x1D3C, 0xFFFF, 0x0000, 0x22D3, 0xEF5C, 0x9897, + 0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91, + 0x0727, 0xF6CD, 0x0000, 0x0D04, 0x0060, 0xEEDC, + 0xE28B, 0x0053, 0x0000, 0xBC36, 0xE28B, 0xB967, + 0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91, + 0x044B, 0xBC36, 0x0000, 0x0053, 0x2B4E, 0xCE91, + 0x0727, 0xF6CD, 0x0000, 0x0D04, 0x0060, 0xEEDC, + 0xE28B, 0x11AC, 0x0000, +}; + +const q15_t *filtering_coeffs_b_q15 = filtering_coeffs_q15 + 2; +const q15_t *filtering_coeffs_c_q15 = filtering_coeffs_q15 + 4; + +const q7_t filtering_coeffs_q7[FILTERING_MAX_NUMSTAGES * 6 + 8] = +{ + 0xEE, 0x00, 0x80, 0x0B, 0xF6, 0xB9, + 0x1D, 0xFF, 0xDD, 0x22, 0xEF, 0x98, + 0xFF, 0x00, 0x11, 0xF7, 0xFA, 0xCD, + 0x04, 0xBC, 0xE2, 0x00, 0x2B, 0xCE, + 0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE, + 0x26, 0xBA, 0x7F, 0x00, 0x80, 0x2B, + 0xFF, 0x00, 0x11, 0xF7, 0xFA, 0xCD, + 0x1D, 0xFF, 0xDD, 0x22, 0xEF, 0x98, + 0x04, 0xBC, 0xE2, 0x00, 0x2B, 0xCE, + 0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE, + 0xE2, 0x00, 0x04, 0xBC, 0xE2, 0xB9, + 0x04, 0xBC, 0xE2, 0x00, 0x2B, 0xCE, + 0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE, + 0x26, 0xBA, 0x7F, 0x00, 0x80, 0x2B, + 0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE, + 0xFA, 0xCD +}; + +const q7_t *filtering_coeffs_b_q7 = filtering_coeffs_q7 + 4; +const q7_t *filtering_coeffs_c_q7 = filtering_coeffs_q7 + 8; + +/*--------------------------------------------------------------------------------*/ +/* Tap Delay Lists */ +/*--------------------------------------------------------------------------------*/ +//const int32_t filtering_tap_delay[FILTERING_MAX_NUMTAPS] = { +// 0xEE, 0x00, 0x10, 0x0B, 0xF6, 0xD9, +// 0x1D, 0xFF, 0xDD, 0x1A, 0xEF, 0xE8, +// 0xFF, 0x00, 0x11, 0xF7, 0xFA, 0xDD, +// 0x04, 0xEC, 0xE2, 0x00, 0x2B, 0xFE, +// 0x07, 0xF6, 0x1F, 0x0D, 0x00, 0xEE, +// 0x20, 0xDF, 0x21 +//}; + +const int32_t filtering_tap_delay[FILTERING_MAX_NUMTAPS] = { + 0x00, 0x01, 0x10, 0x0B, 0x03, 0x05, + 0x1D, 0x21, 0x11, 0x1A, 0x1F, 0x07, + 0x20, 0x01, 0x10, 0x0B, 0x03, 0x05, + 0x1D, 0x21, 0x11, 0x1A, 0x1F, 0x07, + 0x00, 0x01, 0x10, 0x0B, 0x03, 0x05, + 0x1D, 0x21, 0x11 +}; + diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/filtering_test_group.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/filtering_test_group.c new file mode 100644 index 0000000..21ac7fc --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/filtering_test_group.c @@ -0,0 +1,17 @@ +#include "jtest.h" +#include "filtering_tests.h" + +JTEST_DEFINE_GROUP(filtering_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_GROUP_CALL(biquad_tests); + JTEST_GROUP_CALL(conv_tests); + JTEST_GROUP_CALL(correlate_tests); + JTEST_GROUP_CALL(fir_tests); + JTEST_GROUP_CALL(iir_tests); + JTEST_GROUP_CALL(lms_tests); + + return; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/fir_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/fir_tests.c new file mode 100644 index 0000000..40e52b2 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/fir_tests.c @@ -0,0 +1,402 @@ +#include "jtest.h" +#include "filtering_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "filtering_templates.h" +#include "type_abbrev.h" + +#define FIR_DEFINE_TEST(suffix, config_suffix, output_type) \ + JTEST_DEFINE_TEST(arm_fir##config_suffix##_##suffix##_test, \ + arm_fir##config_suffix##_##suffix) \ + { \ + arm_fir_instance_##suffix fir_inst_fut = { 0 }; \ + arm_fir_instance_##suffix fir_inst_ref = { 0 }; \ + \ + TEMPLATE_DO_ARR_DESC( \ + blocksize_idx, uint32_t, blockSize, filtering_blocksizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + numtaps_idx, uint16_t, numTaps, filtering_numtaps \ + , \ + /* Initialize the FIR Instances */ \ + arm_fir_init_##suffix( \ + &fir_inst_fut, numTaps, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, blockSize); \ + \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Number of Taps: %d\n", \ + (int)blockSize, \ + (int)numTaps); \ + \ + JTEST_COUNT_CYCLES( \ + arm_fir##config_suffix##_##suffix( \ + &fir_inst_fut, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_fut, \ + blockSize)); \ + \ + arm_fir_init_##suffix( \ + &fir_inst_ref, numTaps, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, blockSize); \ + \ + ref_fir##config_suffix##_##suffix( \ + &fir_inst_ref, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_ref, \ + blockSize); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + blockSize, \ + output_type))); \ + \ + return JTEST_TEST_PASSED; \ + } + +#define FIR_INTERPOLATE_DEFINE_TEST(suffix, output_type) \ + JTEST_DEFINE_TEST(arm_fir_interpolate_##suffix##_test, \ + arm_fir_interpolate_##suffix) \ + { \ + arm_fir_interpolate_instance_##suffix fir_inst_fut = { 0 }; \ + arm_fir_interpolate_instance_##suffix fir_inst_ref = { 0 }; \ + \ + TEMPLATE_DO_ARR_DESC( \ + blocksize_idx, uint32_t, blockSize, filtering_blocksizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + numtaps_idx, uint16_t, numTaps, filtering_numtaps2 \ + , \ + TEMPLATE_DO_ARR_DESC( \ + L_idx, uint8_t, L, filtering_Ls \ + , \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Number of Taps: %d\n" \ + "Upsample factor: %d\n", \ + (int)blockSize, \ + (int)numTaps, \ + (int)L); \ + \ + /* Initialize the FIR Instances */ \ + arm_fir_interpolate_init_##suffix( \ + &fir_inst_fut, L, numTaps, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, blockSize); \ + \ + JTEST_COUNT_CYCLES( \ + arm_fir_interpolate_##suffix( \ + &fir_inst_fut, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_fut, \ + blockSize)); \ + \ + arm_fir_interpolate_init_##suffix( \ + &fir_inst_ref, L, numTaps, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, blockSize); \ + \ + ref_fir_interpolate_##suffix( \ + &fir_inst_ref, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_ref, \ + blockSize); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + blockSize * (uint32_t)L, \ + output_type)))); \ + \ + return JTEST_TEST_PASSED; \ + } + +#define FIR_DECIMATE_DEFINE_TEST(suffix, config_suffix, output_type) \ + JTEST_DEFINE_TEST(arm_fir_decimate##config_suffix##_##suffix##_test, \ + arm_fir_decimate##config_suffix##_##suffix) \ + { \ + arm_fir_decimate_instance_##suffix fir_inst_fut = { 0 }; \ + arm_fir_decimate_instance_##suffix fir_inst_ref = { 0 }; \ + \ + TEMPLATE_DO_ARR_DESC( \ + blocksize_idx, uint32_t, blockSize, filtering_blocksizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + numtaps_idx, uint16_t, numTaps, filtering_numtaps \ + , \ + TEMPLATE_DO_ARR_DESC( \ + M_idx, uint8_t, M, filtering_Ms \ + , \ + if (blockSize % M == 0) \ + { \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Number of Taps: %d\n" \ + "Decimation Factor: %d\n", \ + (int)blockSize, \ + (int)numTaps, \ + (int)M); \ + \ + /* Initialize the FIR Instances */ \ + arm_fir_decimate_init_##suffix( \ + &fir_inst_fut, numTaps, M, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, blockSize); \ + \ + JTEST_COUNT_CYCLES( \ + arm_fir_decimate##config_suffix##_##suffix( \ + &fir_inst_fut, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_fut, \ + blockSize)); \ + \ + arm_fir_decimate_init_##suffix( \ + &fir_inst_ref, numTaps, M, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, blockSize); \ + \ + ref_fir_decimate##config_suffix##_##suffix( \ + &fir_inst_ref, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_ref, \ + blockSize); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + blockSize / M, \ + output_type); \ + }))); \ + \ + return JTEST_TEST_PASSED; \ + } + +#define FIR_LATTICE_DEFINE_TEST(suffix, output_type) \ + JTEST_DEFINE_TEST(arm_fir_lattice_##suffix##_test, \ + arm_fir_lattice_##suffix) \ + { \ + arm_fir_lattice_instance_##suffix fir_inst_fut = { 0 }; \ + arm_fir_lattice_instance_##suffix fir_inst_ref = { 0 }; \ + \ + TEMPLATE_DO_ARR_DESC( \ + blocksize_idx, uint32_t, blockSize, filtering_blocksizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + numstages_idx, uint16_t, numStages, filtering_numstages \ + , \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Number of Stages: %d\n", \ + (int)blockSize, \ + (int)numStages); \ + \ + /* Initialize the FIR Instances */ \ + arm_fir_lattice_init_##suffix( \ + &fir_inst_fut, numStages, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState); \ + \ + JTEST_COUNT_CYCLES( \ + arm_fir_lattice_##suffix( \ + &fir_inst_fut, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_fut, \ + blockSize)); \ + \ + arm_fir_lattice_init_##suffix( \ + &fir_inst_ref, numStages, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState); \ + \ + ref_fir_lattice_##suffix( \ + &fir_inst_ref, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_ref, \ + blockSize); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + blockSize, \ + output_type))); \ + \ + return JTEST_TEST_PASSED; \ + } + + +#define FIR_SPARSE_DEFINE_TEST(suffix, output_type) \ + JTEST_DEFINE_TEST(arm_fir_sparse_##suffix##_test, \ + arm_fir_sparse_##suffix) \ + { \ + arm_fir_sparse_instance_##suffix fir_inst_fut = { 0 }; \ + arm_fir_sparse_instance_##suffix fir_inst_ref = { 0 }; \ + \ + TEMPLATE_DO_ARR_DESC( \ + blocksize_idx, uint32_t, blockSize, filtering_blocksizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + numtaps_idx, uint16_t, numTaps, filtering_numtaps \ + , \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Number of Taps: %d\n" \ + "Tap Delay: %d\n", \ + (int)blockSize, \ + (int)numTaps, \ + (int)FILTERING_MAX_TAP_DELAY); \ + \ + /* Initialize the FIR Instances */ \ + arm_fir_sparse_init_##suffix( \ + &fir_inst_fut, numTaps, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, \ + (int32_t*)filtering_tap_delay, \ + FILTERING_MAX_TAP_DELAY, blockSize); \ + \ + JTEST_COUNT_CYCLES( \ + arm_fir_sparse_##suffix( \ + &fir_inst_fut, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_fut, \ + (void *) filtering_scratch, \ + blockSize)); \ + \ + arm_fir_sparse_init_##suffix( \ + &fir_inst_ref, numTaps, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, \ + (int32_t*)filtering_tap_delay, \ + FILTERING_MAX_TAP_DELAY, blockSize); \ + \ + ref_fir_sparse_##suffix( \ + &fir_inst_ref, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_ref, \ + (void *) filtering_scratch, \ + blockSize); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + blockSize, \ + output_type))); \ + \ + return JTEST_TEST_PASSED; \ + } + +#define FIR_SPARSE2_DEFINE_TEST(suffix, output_type) \ + JTEST_DEFINE_TEST(arm_fir_sparse_##suffix##_test, \ + arm_fir_sparse_##suffix) \ + { \ + arm_fir_sparse_instance_##suffix fir_inst_fut = { 0 }; \ + arm_fir_sparse_instance_##suffix fir_inst_ref = { 0 }; \ + \ + TEMPLATE_DO_ARR_DESC( \ + blocksize_idx, uint32_t, blockSize, filtering_blocksizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + numtaps_idx, uint16_t, numTaps, filtering_numtaps \ + , \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Number of Taps: %d\n" \ + "Tap Delay: %d\n", \ + (int)blockSize, \ + (int)numTaps, \ + (int)FILTERING_MAX_TAP_DELAY); \ + \ + /* Initialize the FIR Instances */ \ + arm_fir_sparse_init_##suffix( \ + &fir_inst_fut, numTaps, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, \ + (int32_t*)filtering_tap_delay, \ + FILTERING_MAX_TAP_DELAY, blockSize); \ + \ + JTEST_COUNT_CYCLES( \ + arm_fir_sparse_##suffix( \ + &fir_inst_fut, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_fut, \ + (void *) filtering_scratch, \ + (void *) filtering_scratch2, \ + blockSize)); \ + \ + arm_fir_sparse_init_##suffix( \ + &fir_inst_ref, numTaps, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, \ + (int32_t*)filtering_tap_delay, \ + FILTERING_MAX_TAP_DELAY, blockSize); \ + \ + ref_fir_sparse_##suffix( \ + &fir_inst_ref, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_ref, \ + (void *) filtering_scratch, \ + (void *) filtering_scratch2, \ + blockSize); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + blockSize, \ + output_type))); \ + \ + return JTEST_TEST_PASSED; \ + } + +FIR_DEFINE_TEST(f32,,float32_t); +FIR_DEFINE_TEST(q31,,q31_t); +FIR_DEFINE_TEST(q15,,q15_t); +FIR_DEFINE_TEST(q31,_fast,q31_t); +FIR_DEFINE_TEST(q15,_fast,q15_t); +FIR_DEFINE_TEST(q7,,q7_t); + +FIR_LATTICE_DEFINE_TEST(f32,float32_t); +FIR_LATTICE_DEFINE_TEST(q31,q31_t); +FIR_LATTICE_DEFINE_TEST(q15,q15_t); + +FIR_INTERPOLATE_DEFINE_TEST(f32,float32_t); +FIR_INTERPOLATE_DEFINE_TEST(q31,q31_t); +FIR_INTERPOLATE_DEFINE_TEST(q15,q15_t); + +FIR_DECIMATE_DEFINE_TEST(f32,,float32_t); +FIR_DECIMATE_DEFINE_TEST(q31,,q31_t); +FIR_DECIMATE_DEFINE_TEST(q15,,q15_t); +FIR_DECIMATE_DEFINE_TEST(q31,_fast,q31_t); +FIR_DECIMATE_DEFINE_TEST(q15,_fast,q15_t); + +FIR_SPARSE_DEFINE_TEST(f32,float32_t); +FIR_SPARSE_DEFINE_TEST(q31,q31_t); +FIR_SPARSE2_DEFINE_TEST(q15,q15_t); +FIR_SPARSE2_DEFINE_TEST(q7,q7_t); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(fir_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_fir_f32_test); + JTEST_TEST_CALL(arm_fir_q31_test); + JTEST_TEST_CALL(arm_fir_q15_test); + JTEST_TEST_CALL(arm_fir_q7_test); + JTEST_TEST_CALL(arm_fir_fast_q31_test); + JTEST_TEST_CALL(arm_fir_fast_q15_test); + + JTEST_TEST_CALL(arm_fir_lattice_f32_test); + JTEST_TEST_CALL(arm_fir_lattice_q31_test); + JTEST_TEST_CALL(arm_fir_lattice_q15_test); + + JTEST_TEST_CALL(arm_fir_interpolate_f32_test); + JTEST_TEST_CALL(arm_fir_interpolate_q31_test); + JTEST_TEST_CALL(arm_fir_interpolate_q15_test); + + JTEST_TEST_CALL(arm_fir_decimate_f32_test); + JTEST_TEST_CALL(arm_fir_decimate_q31_test); + JTEST_TEST_CALL(arm_fir_decimate_q15_test); + JTEST_TEST_CALL(arm_fir_decimate_fast_q31_test); + JTEST_TEST_CALL(arm_fir_decimate_fast_q15_test); + + JTEST_TEST_CALL(arm_fir_sparse_f32_test); + JTEST_TEST_CALL(arm_fir_sparse_q31_test); + JTEST_TEST_CALL(arm_fir_sparse_q15_test); + JTEST_TEST_CALL(arm_fir_sparse_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/iir_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/iir_tests.c new file mode 100644 index 0000000..8d31c3f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/iir_tests.c @@ -0,0 +1,76 @@ +#include "jtest.h" +#include "filtering_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "filtering_templates.h" +#include "type_abbrev.h" + +#define IIR_DEFINE_TEST(suffix, output_type) \ + JTEST_DEFINE_TEST(arm_iir_lattice_##suffix##_test, \ + arm_iir_lattice_##suffix) \ + { \ + arm_iir_lattice_instance_##suffix iir_inst_fut = { 0 }; \ + arm_iir_lattice_instance_##suffix iir_inst_ref = { 0 }; \ + \ + TEMPLATE_DO_ARR_DESC( \ + blocksize_idx, uint32_t, blockSize, filtering_blocksizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + numstages_idx, uint16_t, numStages, filtering_numstages \ + , \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Number of Stages: %d\n", \ + (int)blockSize, \ + (int)numStages); \ + \ + /* Initialize the IIR Instances */ \ + arm_iir_lattice_init_##suffix( \ + &iir_inst_fut, numStages, (output_type*)filtering_coeffs_b_##suffix, \ + (output_type*)filtering_coeffs_c_##suffix, \ + (void *) filtering_pState, blockSize); \ + \ + JTEST_COUNT_CYCLES( \ + arm_iir_lattice_##suffix( \ + &iir_inst_fut, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_fut, \ + blockSize)); \ + \ + arm_iir_lattice_init_##suffix( \ + &iir_inst_ref, numStages, (output_type*)filtering_coeffs_b_##suffix, \ + (output_type*)filtering_coeffs_c_##suffix, \ + (void *) filtering_pState, blockSize); \ + \ + ref_iir_lattice_##suffix( \ + &iir_inst_ref, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_output_ref, \ + blockSize); \ + \ + FILTERING_SNR_COMPARE_INTERFACE( \ + blockSize, \ + output_type))); \ + \ + return JTEST_TEST_PASSED; \ + } + +IIR_DEFINE_TEST(f32, float32_t); +IIR_DEFINE_TEST(q31, q31_t); +IIR_DEFINE_TEST(q15, q15_t); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(iir_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_iir_lattice_f32_test); + JTEST_TEST_CALL(arm_iir_lattice_q31_test); + JTEST_TEST_CALL(arm_iir_lattice_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/lms_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/lms_tests.c new file mode 100644 index 0000000..06e96b6 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/filtering_tests/lms_tests.c @@ -0,0 +1,219 @@ +#include "jtest.h" +#include "filtering_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "filtering_templates.h" +#include "type_abbrev.h" + +static const float32_t mu_f32 = 0.00854f;//1.0f; +static const float32_t mu2_f32 = 1.0f; +static const q31_t mu_q31 = 0x7fffffff; +static const q15_t mu_q15 = 0x7fff; + +#define LMS_DEFINE_TEST(suffix, config_suffix, output_type, mu) \ + JTEST_DEFINE_TEST(arm_lms##config_suffix##_##suffix##_test, \ + arm_lms##config_suffix##_##suffix) \ + { \ + arm_lms##config_suffix##_instance_##suffix lms_inst_fut = { 0 }; \ + arm_lms##config_suffix##_instance_##suffix lms_inst_ref = { 0 }; \ + arm_fir_instance_##suffix fir_inst = { 0 }; \ + uint32_t i; \ + \ + TEMPLATE_DO_ARR_DESC( \ + blocksize_idx, uint32_t, blockSize, lms_blocksizes \ + , \ + TEMPLATE_DO_ARR_DESC( \ + numtaps_idx, uint16_t, numTaps, filtering_numtaps \ + , \ + /* Initialize the FIR Instances */ \ + arm_fir_init_##suffix( \ + &fir_inst, numTaps, \ + (output_type*)filtering_coeffs_##suffix, \ + (void *) filtering_pState, blockSize); \ + \ + ref_fir_##suffix( \ + &fir_inst, \ + (void *) filtering_##suffix##_inputs, \ + (void *) filtering_input_lms, \ + blockSize); \ + \ + for(i=0;i> 6; \ + } \ + \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Number of Taps: %d\n" \ + "Post Shift: %d\n", \ + (int)blockSize, \ + (int)numTaps, \ + (int)postShift); \ + \ + /* Initialize the LMS Instances */ \ + arm_lms##config_suffix##_init_##suffix( \ + &lms_inst_fut, numTaps, \ + (output_type*)filtering_coeffs_lms, \ + (void *) filtering_pState, mu_##suffix, blockSize, postShift); \ + \ + JTEST_COUNT_CYCLES( \ + arm_lms##config_suffix##_##suffix( \ + &lms_inst_fut, \ + (void *) filtering_output_f32_fut, \ + (void *) filtering_input_lms, \ + (void *) filtering_output_fut, \ + (void *) ((output_type*)filtering_output_fut+blockSize), \ + blockSize)); \ + \ + for(i=0;i= 6010050) +asm(" .global __ARM_use_no_argv\n"); +#endif + + +void debug_init(void) +{ + uint32_t * SHCSR_ptr = (uint32_t *) 0xE000ED24; /* System Handler Control and State Register */ + *SHCSR_ptr |= 0x70000; /* Enable UsageFault, BusFault, and MemManage fault*/ +} + +int main(void) +{ + debug_init(); + + JTEST_INIT(); /* Initialize test framework. */ + + JTEST_GROUP_CALL(all_tests); /* Run all tests. */ + + JTEST_ACT_EXIT_FW(); /* Exit test framework. */ + while (1); /* Never return. */ +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/math_helper.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/math_helper.c new file mode 100644 index 0000000..ef09e40 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/math_helper.c @@ -0,0 +1,491 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010 ARM Limited. All rights reserved. +* +* $Date: 29. November 2010 +* $Revision: V1.0.3 +* +* Project: CMSIS DSP Library +* +* Title: math_helper.c +* +* Description: Definition of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Version 1.0.3 2010/11/29 +* Re-organized the CMSIS folders and updated documentation. +* +* Version 1.0.2 2010/11/11 +* Documentation updated. +* +* Version 1.0.1 2010/10/05 +* Production release and review comments incorporated. +* +* Version 1.0.0 2010/09/20 +* Production release and review comments incorporated. +* +* Version 0.0.7 2010/06/10 +* Misra-C changes done +* -------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- +* Include standard header files +* -------------------------------------------------------------------- */ +#include + +/* ---------------------------------------------------------------------- +* Include project header files +* -------------------------------------------------------------------- */ +#include "math_helper.h" + +/** + * @brief Caluclation of SNR + * @param float* Pointer to the reference buffer + * @param float* Pointer to the test buffer + * @param uint32_t total number of samples + * @return float SNR + * The function Caluclates signal to noise ratio for the reference output + * and test output + */ + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize) +{ + float EnergySignal = 0.0, EnergyError = 0.0; + uint32_t i; + float SNR; + int temp; + int *test; + + for (i = 0; i < buffSize; i++) + { + /* Checking for a NAN value in pRef array */ + test = (int *)(&pRef[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + /* Checking for a NAN value in pTest array */ + test = (int *)(&pTest[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + EnergySignal += pRef[i] * pRef[i]; + EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); + } + + /* Checking for a NAN value in EnergyError */ + test = (int *)(&EnergyError); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + + SNR = 10 * log10f (EnergySignal / EnergyError); + + return (SNR); + +} + + + +double arm_snr_f64(double *pRef, double *pTest, uint32_t buffSize) +{ + double EnergySignal = 0.0, EnergyError = 0.0; + uint32_t i; + double SNR; + int temp; + int *test; + + for (i = 0; i < buffSize; i++) + { + /* Checking for a NAN value in pRef array */ + test = (int *)(&pRef[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + /* Checking for a NAN value in pTest array */ + test = (int *)(&pTest[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + EnergySignal += pRef[i] * pRef[i]; + EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); + } + + /* Checking for a NAN value in EnergyError */ + test = (int *)(&EnergyError); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + + SNR = 10 * log10 (EnergySignal / EnergyError); + + return (SNR); + +} + +/** + * @brief Provide guard bits for Input buffer + * @param q15_t* Pointer to input buffer + * @param uint32_t blockSize + * @param uint32_t guard_bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Converts float to fixed in q12.20 format + * @param uint32_t number of samples in the buffer + * @return none + * The function converts floating point values to fixed point(q12.20) values + */ + +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1048576.0f corresponds to pow(2, 20) */ + pOut[i] = (q31_t) (pIn[i] * 1048576.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 1.0) + { + pOut[i] = 0x000FFFFF; + } + } +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param q15_t* Pointer to Ref buffer + * @param q15_t* Pointer to Test buffer + * @param uint32_t number of samples in the buffer + * @return none + */ + +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param q31_t* Pointer to Ref buffer + * @param q31_t* Pointer to Test buffer + * @param uint32_t number of samples in the buffer + * @return none + */ + +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Provide guard bits for Input buffer + * @param q31_t* Pointer to input buffer + * @param uint32_t blockSize + * @param uint32_t guard_bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q31 (q31_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Provide guard bits for Input buffer + * @param q31_t* Pointer to input buffer + * @param uint32_t blockSize + * @param uint32_t guard_bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q7 (q7_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + + + +/** + * @brief Caluclates number of guard bits + * @param uint32_t number of additions + * @return none + * The function Caluclates the number of guard bits + * depending on the numtaps + */ + +uint32_t arm_calc_guard_bits (uint32_t num_adds) +{ + uint32_t i = 1, j = 0; + + if (num_adds == 1) + { + return (0); + } + + while (i < num_adds) + { + i = i * 2; + j++; + } + + return (j); +} + +/** + * @brief Converts Q15 to floating-point + * @param uint32_t number of samples in the buffer + * @return none + */ + +void arm_apply_guard_bits (float32_t * pIn, + uint32_t numSamples, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + pIn[i] = pIn[i] * arm_calc_2pow(guard_bits); + } +} + +/** + * @brief Calculates pow(2, numShifts) + * @param uint32_t number of shifts + * @return pow(2, numShifts) + */ +uint32_t arm_calc_2pow(uint32_t numShifts) +{ + + uint32_t i, val = 1; + + for (i = 0; i < numShifts; i++) + { + val = val * 2; + } + + return(val); +} + + + +/** + * @brief Converts float to fixed q14 + * @param uint32_t number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q14 (float *pIn, q15_t * pOut, + uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 16384.0f corresponds to pow(2, 14) */ + pOut[i] = (q15_t) (pIn[i] * 16384.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFF; + } + + } + +} + + +/** + * @brief Converts float to fixed q30 format + * @param uint32_t number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q30 (float *pIn, q31_t * pOut, + uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 1073741824.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Converts float to fixed q30 format + * @param uint32_t number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q29 (float *pIn, q31_t * pOut, + uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 536870912.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 4.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + + +/** + * @brief Converts float to fixed q28 format + * @param uint32_t number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q28 (float *pIn, q31_t * pOut, + uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 268435456.0f corresponds to pow(2, 28) */ + pOut[i] = (q31_t) (pIn[i] * 268435456.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 8.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Clip the float values to +/- 1 + * @param pIn input buffer + * @param numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_clip_f32 (float *pIn, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + if (pIn[i] > 1.0f) + { + pIn[i] = 1.0; + } + else if ( pIn[i] < -1.0f) + { + pIn[i] = -1.0; + } + + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_add_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_add_tests.c new file mode 100644 index 0000000..c536899 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_add_tests.c @@ -0,0 +1,31 @@ +#include "jtest.h" +#include "matrix_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "matrix_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MAT_ADD_TEST(suffix) \ + MATRIX_DEFINE_TEST_TEMPLATE_ELT2( \ + mat_add, \ + suffix, \ + MATRIX_TEST_CONFIG_ADDITIVE_OUTPUT, \ + MATRIX_TEST_VALID_ADDITIVE_DIMENSIONS, \ + MATRIX_COMPARE_INTERFACE) + +JTEST_ARM_MAT_ADD_TEST(f32); +JTEST_ARM_MAT_ADD_TEST(q31); +JTEST_ARM_MAT_ADD_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mat_add_tests) +{ + JTEST_TEST_CALL(arm_mat_add_f32_test); + JTEST_TEST_CALL(arm_mat_add_q31_test); + JTEST_TEST_CALL(arm_mat_add_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_cmplx_mult_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_cmplx_mult_tests.c new file mode 100644 index 0000000..50cd57e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_cmplx_mult_tests.c @@ -0,0 +1,59 @@ +#include "jtest.h" +#include "matrix_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "matrix_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MAT_CMPLX_MULT_TEST(suffix, comparison_interface) \ + MATRIX_DEFINE_TEST_TEMPLATE_ELT2( \ + mat_cmplx_mult, \ + suffix, \ + MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT, \ + MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS, \ + comparison_interface) + +JTEST_ARM_MAT_CMPLX_MULT_TEST(f32, MATRIX_SNR_COMPARE_INTERFACE); +JTEST_ARM_MAT_CMPLX_MULT_TEST(q31, MATRIX_COMPARE_INTERFACE); + +/*--------------------------------------------------------------------------------*/ +/* Q15 Uses a Different interface than the others. */ +/*--------------------------------------------------------------------------------*/ + +#define ARM_mat_cmplx_mult_q15_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, \ + (void *) &matrix_output_fut, \ + (q15_t *) matrix_output_scratch) + +JTEST_DEFINE_TEST(arm_mat_cmplx_mult_q15_test, arm_mat_cmplx_mult_q15) +{ + MATRIX_TEST_TEMPLATE_ELT2( + matrix_q15_a_inputs, + matrix_q15_b_inputs, + arm_matrix_instance_q15 * , + arm_matrix_instance_q15, + TYPE_FROM_ABBREV(q15), + arm_mat_cmplx_mult_q15, + ARM_mat_cmplx_mult_q15_INPUT_INTERFACE, + ref_mat_cmplx_mult_q15, + REF_mat_cmplx_mult_INPUT_INTERFACE, + MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT, + MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS, + MATRIX_COMPARE_INTERFACE); +} + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mat_cmplx_mult_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_mat_cmplx_mult_f32_test); + JTEST_TEST_CALL(arm_mat_cmplx_mult_q31_test); + JTEST_TEST_CALL(arm_mat_cmplx_mult_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_init_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_init_tests.c new file mode 100644 index 0000000..7d879ee --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_init_tests.c @@ -0,0 +1,58 @@ +#include "jtest.h" +#include "matrix_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "matrix_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MAT_INIT_TEST(suffix) \ + JTEST_DEFINE_TEST(arm_mat_init_##suffix##_test, \ + arm_mat_init_##suffix) \ + { \ + const uint16_t rows = 4; \ + const uint16_t cols = 2; \ + arm_matrix_instance_##suffix matrix = {0}; \ + /* TYPE_FROM_ABBREV(suffix) data[rows*cols] = {0}; */ \ + TYPE_FROM_ABBREV(suffix) data[4*2] = {0}; \ + \ + arm_mat_init_##suffix(&matrix, \ + rows, \ + cols, \ + data); \ + \ + JTEST_DUMP_STRF("Matrix Dimensions: %dx%d\n", \ + (int)matrix.numRows, \ + (int)matrix.numCols); \ + \ + if ((matrix.numRows == rows) && \ + (matrix.numCols == cols) && \ + (matrix.pData == data)) \ + { \ + return JTEST_TEST_PASSED; \ + } \ + else \ + { \ + return JTEST_TEST_FAILED; \ + } \ + \ + } + +JTEST_ARM_MAT_INIT_TEST(f32); +JTEST_ARM_MAT_INIT_TEST(q31); +JTEST_ARM_MAT_INIT_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mat_init_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_mat_init_f32_test); + JTEST_TEST_CALL(arm_mat_init_q31_test); + JTEST_TEST_CALL(arm_mat_init_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_inverse_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_inverse_tests.c new file mode 100644 index 0000000..372ac1d --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_inverse_tests.c @@ -0,0 +1,92 @@ +#include "jtest.h" +#include "matrix_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "matrix_templates.h" +#include "type_abbrev.h" + +JTEST_DEFINE_TEST(arm_mat_inverse_f32_test, arm_mat_inverse_f32) +{ + TEMPLATE_DO_ARR_DESC( + mat_idx, arm_matrix_instance_f32 *, mat_ptr, matrix_f32_invertible_inputs + , + JTEST_DUMP_STRF("Matrix Dimensions: %dx%d\n", + (int)mat_ptr->numRows, + (int)mat_ptr->numCols); + + if (MATRIX_TEST_VALID_SQUARE_DIMENSIONS(arm_matrix_instance_f32 *, mat_ptr)) + { + MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(arm_matrix_instance_f32 *, mat_ptr); + + /* arm_mat_inverse_f32() modifies its source input. Use the scratch + * buffer to store a copy of the intended input. */ + { + float32_t * original_pdata_ptr = mat_ptr->pData; + + memcpy(matrix_output_scratch, + mat_ptr->pData, + mat_ptr->numRows * mat_ptr->numCols * sizeof(float32_t)); + mat_ptr->pData = (void*) &matrix_output_scratch; + + JTEST_COUNT_CYCLES(arm_mat_inverse_f32(mat_ptr, &matrix_output_fut)); + mat_ptr->pData = original_pdata_ptr; + } + + ref_mat_inverse_f32(mat_ptr, &matrix_output_ref); + + MATRIX_SNR_COMPARE_INTERFACE(arm_matrix_instance_f32, + float32_t); + }); + + return JTEST_TEST_PASSED; +} + +JTEST_DEFINE_TEST(arm_mat_inverse_f64_test, arm_mat_inverse_f64) +{ + TEMPLATE_DO_ARR_DESC( + mat_idx, arm_matrix_instance_f64 *, mat_ptr, matrix_f64_invertible_inputs + , + JTEST_DUMP_STRF("Matrix Dimensions: %dx%d\n", + (int)mat_ptr->numRows, + (int)mat_ptr->numCols); + + if (MATRIX_TEST_VALID_SQUARE_DIMENSIONS(arm_matrix_instance_f64 *, mat_ptr)) + { + MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(arm_matrix_instance_f64 *, mat_ptr); + + /* arm_mat_inverse_f64() modifies its source input. Use the scratch + * buffer to store a copy of the intended input. */ + { + float64_t * original_pdata_ptr = mat_ptr->pData; + + memcpy(matrix_output_scratch, + mat_ptr->pData, + mat_ptr->numRows * mat_ptr->numCols * sizeof(float64_t)); + mat_ptr->pData = (void*) &matrix_output_scratch; + + JTEST_COUNT_CYCLES(arm_mat_inverse_f64(mat_ptr, &matrix_output_fut64)); + mat_ptr->pData = original_pdata_ptr; + } + + ref_mat_inverse_f64(mat_ptr, &matrix_output_ref64); + + MATRIX_DBL_SNR_COMPARE_INTERFACE(arm_matrix_instance_f64); + }); + + return JTEST_TEST_PASSED; +} + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mat_inverse_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_mat_inverse_f32_test); + JTEST_TEST_CALL(arm_mat_inverse_f64_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_mult_fast_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_mult_fast_tests.c new file mode 100644 index 0000000..313aa04 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_mult_fast_tests.c @@ -0,0 +1,57 @@ +#include "jtest.h" +#include "matrix_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "matrix_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MAT_MULT_FAST_TEST(suffix) \ + MATRIX_DEFINE_TEST_TEMPLATE_ELT2( \ + mat_mult_fast, \ + suffix, \ + MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT, \ + MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS, \ + MATRIX_SNR_COMPARE_INTERFACE) + +JTEST_ARM_MAT_MULT_FAST_TEST(q31); + +/*--------------------------------------------------------------------------------*/ +/* Q15 Uses a Different interface than the others. */ +/*--------------------------------------------------------------------------------*/ + +#define ARM_mat_mult_fast_q15_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, \ + (void *) &matrix_output_fut, \ + (q15_t *) matrix_output_scratch) + +JTEST_DEFINE_TEST(arm_mat_mult_fast_q15_test, arm_mat_mult_fast_q15) +{ + MATRIX_TEST_TEMPLATE_ELT2( + matrix_q15_a_inputs, + matrix_q15_b_inputs, + arm_matrix_instance_q15 * , + arm_matrix_instance_q15, + TYPE_FROM_ABBREV(q15), + arm_mat_mult_fast_q15, + ARM_mat_mult_fast_q15_INPUT_INTERFACE, + ref_mat_mult_fast_q15, + REF_mat_mult_fast_INPUT_INTERFACE, + MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT, + MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS, + MATRIX_SNR_COMPARE_INTERFACE); +} + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mat_mult_fast_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_mat_mult_fast_q31_test); + JTEST_TEST_CALL(arm_mat_mult_fast_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_mult_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_mult_tests.c new file mode 100644 index 0000000..c74bdc8 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_mult_tests.c @@ -0,0 +1,59 @@ +#include "jtest.h" +#include "matrix_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "matrix_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MAT_MULT_TEST(suffix) \ + MATRIX_DEFINE_TEST_TEMPLATE_ELT2( \ + mat_mult, \ + suffix, \ + MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT, \ + MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS, \ + MATRIX_COMPARE_INTERFACE) + +JTEST_ARM_MAT_MULT_TEST(f32); +JTEST_ARM_MAT_MULT_TEST(q31); + +/*--------------------------------------------------------------------------------*/ +/* Q15 Uses a Different interface than the others. */ +/*--------------------------------------------------------------------------------*/ + +#define ARM_mat_mult_q15_INPUT_INTERFACE(input_a_ptr, input_b_ptr) \ + PAREN(input_a_ptr, input_b_ptr, \ + (void *) &matrix_output_fut, \ + (q15_t *) matrix_output_scratch) + +JTEST_DEFINE_TEST(arm_mat_mult_q15_test, arm_mat_mult_q15) +{ + MATRIX_TEST_TEMPLATE_ELT2( + matrix_q15_a_inputs, + matrix_q15_b_inputs, + arm_matrix_instance_q15 * , + arm_matrix_instance_q15, + TYPE_FROM_ABBREV(q15), + arm_mat_mult_q15, + ARM_mat_mult_q15_INPUT_INTERFACE, + ref_mat_mult_q15, + REF_mat_mult_INPUT_INTERFACE, + MATRIX_TEST_CONFIG_MULTIPLICATIVE_OUTPUT, + MATRIX_TEST_VALID_MULTIPLICATIVE_DIMENSIONS, + MATRIX_COMPARE_INTERFACE); +} + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mat_mult_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_mat_mult_f32_test); + JTEST_TEST_CALL(arm_mat_mult_q31_test); + JTEST_TEST_CALL(arm_mat_mult_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_scale_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_scale_tests.c new file mode 100644 index 0000000..63fba94 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_scale_tests.c @@ -0,0 +1,90 @@ +#include "jtest.h" +#include "matrix_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "matrix_templates.h" +#include "type_abbrev.h" + +/* This is for the two fixed point cases */ +#define JTEST_ARM_MAT_SCALE_TEST(suffix,type) \ + JTEST_DEFINE_TEST(arm_mat_scale_##suffix##_test, arm_mat_scale_##suffix) \ + { \ + uint32_t i,j; \ + \ + TEMPLATE_DO_ARR_DESC( \ + mat_idx, arm_matrix_instance_##suffix *, \ + mat_ptr, matrix_##suffix##_b_inputs \ + , \ + MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT( \ + arm_matrix_instance_##suffix *, mat_ptr); \ + \ + for(i=0;inumRows, \ + (int)mat_ptr->numCols); \ + \ + JTEST_COUNT_CYCLES( \ + arm_mat_scale_##suffix(mat_ptr, \ + matrix_##suffix##_scale_values[i], \ + matrix_shift_values[j], \ + (arm_matrix_instance_##suffix*) &matrix_output_fut)); \ + \ + ref_mat_scale_##suffix(mat_ptr, \ + matrix_##suffix##_scale_values[i], \ + matrix_shift_values[j], \ + (arm_matrix_instance_##suffix*) &matrix_output_ref); \ + \ + MATRIX_SNR_COMPARE_INTERFACE(arm_matrix_instance_##suffix, \ + type); \ + } \ + }); \ + \ + return JTEST_TEST_PASSED; \ + } + +JTEST_DEFINE_TEST(arm_mat_scale_f32_test, arm_mat_scale_f32) +{ + uint32_t i; + + TEMPLATE_DO_ARR_DESC( + mat_idx, arm_matrix_instance_f32 *, mat_ptr, matrix_f32_b_inputs + , + MATRIX_TEST_CONFIG_SAMESIZE_OUTPUT(arm_matrix_instance_f32 *, mat_ptr); + + for(i=0;inumRows, + (int)mat_ptr->numCols); + JTEST_COUNT_CYCLES(arm_mat_scale_f32(mat_ptr, matrix_f32_scale_values[i], &matrix_output_fut)); + + ref_mat_scale_f32(mat_ptr, matrix_f32_scale_values[i], &matrix_output_ref); + + MATRIX_SNR_COMPARE_INTERFACE(arm_matrix_instance_f32, + float32_t); + }); + + return JTEST_TEST_PASSED; +} + +JTEST_ARM_MAT_SCALE_TEST(q31,q31_t); +JTEST_ARM_MAT_SCALE_TEST(q15,q15_t); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mat_scale_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_mat_scale_f32_test); + JTEST_TEST_CALL(arm_mat_scale_q31_test); + JTEST_TEST_CALL(arm_mat_scale_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_sub_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_sub_tests.c new file mode 100644 index 0000000..245c28e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_sub_tests.c @@ -0,0 +1,34 @@ +#include "jtest.h" +#include "matrix_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "matrix_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MAT_SUB_TEST(suffix) \ + MATRIX_DEFINE_TEST_TEMPLATE_ELT2( \ + mat_sub, \ + suffix, \ + MATRIX_TEST_CONFIG_ADDITIVE_OUTPUT, \ + MATRIX_TEST_VALID_ADDITIVE_DIMENSIONS, \ + MATRIX_COMPARE_INTERFACE) + +JTEST_ARM_MAT_SUB_TEST(f32); +JTEST_ARM_MAT_SUB_TEST(q31); +JTEST_ARM_MAT_SUB_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mat_sub_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_mat_sub_f32_test); + JTEST_TEST_CALL(arm_mat_sub_q31_test); + JTEST_TEST_CALL(arm_mat_sub_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_trans_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_trans_tests.c new file mode 100644 index 0000000..e49c80b --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/mat_trans_tests.c @@ -0,0 +1,33 @@ +#include "jtest.h" +#include "matrix_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "matrix_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MAT_TRANS_TEST(suffix) \ + MATRIX_DEFINE_TEST_TEMPLATE_ELT1( \ + mat_trans, \ + suffix, \ + MATRIX_TEST_CONFIG_TRANSPOSE_OUTPUT, \ + MATRIX_TEST_VALID_DIMENSIONS_ALWAYS) + +JTEST_ARM_MAT_TRANS_TEST(f32); +JTEST_ARM_MAT_TRANS_TEST(q31); +JTEST_ARM_MAT_TRANS_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mat_trans_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_mat_trans_f32_test); + JTEST_TEST_CALL(arm_mat_trans_q31_test); + JTEST_TEST_CALL(arm_mat_trans_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/matrix_test_common_data.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/matrix_test_common_data.c new file mode 100644 index 0000000..033fe10 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/matrix_test_common_data.c @@ -0,0 +1,255 @@ +#include "arm_math.h" +#include "matrix_test_data.h" +#include "type_abbrev.h" + +/*--------------------------------------------------------------------------------*/ +/* Input/Output Buffers */ +/*--------------------------------------------------------------------------------*/ + +MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_fut_data[2*MATRIX_TEST_MAX_ELTS] = {0}; +MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_ref_data[2*MATRIX_TEST_MAX_ELTS] = {0}; +MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_scratch[MATRIX_TEST_MAX_ELTS] = {0}; + +MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_f32_fut[MATRIX_TEST_MAX_ELTS]; +MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_output_f32_ref[MATRIX_TEST_MAX_ELTS]; + +arm_matrix_instance_f32 matrix_output_fut = { + 0, + 0, + (float32_t *) &matrix_output_fut_data +}; + +arm_matrix_instance_f32 matrix_output_ref = { + 0, + 0, + (float32_t *) &matrix_output_ref_data +}; + +arm_matrix_instance_f64 matrix_output_fut64 = { + 0, + 0, + (float64_t *) &matrix_output_fut_data +}; + +arm_matrix_instance_f64 matrix_output_ref64 = { + 0, + 0, + (float64_t *) &matrix_output_ref_data +}; + +/*--------------------------------------------------------------------------------*/ +/* Data Buckets */ +/*--------------------------------------------------------------------------------*/ + +/** + * Pool of random data to base matrix inputs from. + */ +float32_t matrix_f32_100_rand[100] = { + -45.0345569674258, -11.0261163038747, -14.6841428777929, + 0.0345569674258, -11.0261163038747, -14.6841428777929, + -20.3679194392227, 27.5712678608402, -12.1390617339732, + -19.8753669720509, 42.3379642103244, -23.7788252219155, + -23.7517765301667, 40.2716109915281, -25.8308714086167, + 32.1194040197959, 24.4692807074156, -1.32083675968276, + 31.1580458282477, -2.90766514824093, -6.97926086704160, + 10.2843089382083, 30.1014622769739, 44.4787189721646, + -9.60878544118853, -48.4596562348445, -31.1044984967456, + -6.41414114190809, 3.28255887994549, -26.9511839788442, + -31.5183679875864, 21.1215780433683, -47.0779722437854, + -0.913590753192006, -40.3545474831611, -45.6976198342192, + 18.6775433365315, -5.32162505701938, -14.9272896423117, + 34.4308792695389, 40.4880968679893, -27.8253265982760, + 42.8854139478045, -1.07473615999811, -36.8026707393665, + -33.1009970537296, -31.6488844262730, -19.3650527983443, + 43.9001561999887, -30.5235710432951, 47.9748378356085, + -38.2582349144194, 23.0330862855453, -16.2280590178623, + 44.2050590775485, 14.9115474956452, -13.1515403509664, + 0.850865538112700, 37.5942811492984, -27.4078219027601, + -6.11300268738968, -20.3324126781673, -1.13910261964209, + 40.0053846417662, 45.6134540229802, 23.1722385658670, + 12.5618560729690, 1.07715641721097, 5.01563428984222, + -32.9291952852141, -38.8880776559401, -18.1221698074118, + 7.85250610234389, -13.0753218879785, 7.52085950784656, + 14.7745963136307, 28.0227435151377, 31.7627708322262, + 12.2475086001227, -27.2335702183447, -24.1935304087933, + -7.58332402861928, -26.2716420228479, -38.8797244706213, + -44.0220457052844, -4.90762935690551, -41.8874231134215, + 29.4831416883453, 8.70447045314168, -6.43013158961009, + -9.12801538874479, 0.785828466111815, -4.11511718200689, + 28.0252068321138, -26.5220086627594, 4.70088922863450, + 42.9385970968730, 14.4318130193692, -29.2257707266972, + 46.3088539286913 +}; + +float64_t matrix_f64_100_rand[100] = { + -45.0345569674258, -11.0261163038747, -14.6841428777929, + 0.0345569674258, -11.0261163038747, -14.6841428777929, + -20.3679194392227, 27.5712678608402, -12.1390617339732, + -19.8753669720509, 42.3379642103244, -23.7788252219155, + -23.7517765301667, 40.2716109915281, -25.8308714086167, + 32.1194040197959, 24.4692807074156, -1.32083675968276, + 31.1580458282477, -2.90766514824093, -6.97926086704160, + 10.2843089382083, 30.1014622769739, 44.4787189721646, + -9.60878544118853, -48.4596562348445, -31.1044984967456, + -6.41414114190809, 3.28255887994549, -26.9511839788442, + -31.5183679875864, 21.1215780433683, -47.0779722437854, + -0.913590753192006, -40.3545474831611, -45.6976198342192, + 18.6775433365315, -5.32162505701938, -14.9272896423117, + 34.4308792695389, 40.4880968679893, -27.8253265982760, + 42.8854139478045, -1.07473615999811, -36.8026707393665, + -33.1009970537296, -31.6488844262730, -19.3650527983443, + 43.9001561999887, -30.5235710432951, 47.9748378356085, + -38.2582349144194, 23.0330862855453, -16.2280590178623, + 44.2050590775485, 14.9115474956452, -13.1515403509664, + 0.850865538112700, 37.5942811492984, -27.4078219027601, + -6.11300268738968, -20.3324126781673, -1.13910261964209, + 40.0053846417662, 45.6134540229802, 23.1722385658670, + 12.5618560729690, 1.07715641721097, 5.01563428984222, + -32.9291952852141, -38.8880776559401, -18.1221698074118, + 7.85250610234389, -13.0753218879785, 7.52085950784656, + 14.7745963136307, 28.0227435151377, 31.7627708322262, + 12.2475086001227, -27.2335702183447, -24.1935304087933, + -7.58332402861928, -26.2716420228479, -38.8797244706213, + -44.0220457052844, -4.90762935690551, -41.8874231134215, + 29.4831416883453, 8.70447045314168, -6.43013158961009, + -9.12801538874479, 0.785828466111815, -4.11511718200689, + 28.0252068321138, -26.5220086627594, 4.70088922863450, + 42.9385970968730, 14.4318130193692, -29.2257707266972, + 46.3088539286913 +}; + +MATRIX_TEST_BIGGEST_INPUT_TYPE matrix_zeros[MATRIX_TEST_MAX_ELTS] = {0}; + +const float32_t matrix_f32_scale_values[MATRIX_MAX_COEFFS_LEN] = +{ + 43.0264275639 , -17.0525215570 , -94.8488973910 , -8.1924989580 , + 7.2830326091 , 66.8368719314 , 33.9778190671 , 117.8652289772 , + -129.6077797465, -14.6420815368 , 18.0239223278 , 1.0000000000 , + 55.0375037651 , 1.8674609862 , 0.00000000000 , -33.5750364909 +}; + +const q31_t matrix_q31_scale_values[MATRIX_MAX_COEFFS_LEN] = +{ + 0x0201DC90, 0x211F0D7C, 0x80000000, 0xF573B824, + 0xE85ED05B, 0x311DFB52, 0x3529E750, 0x00000000, + 0x7FFFFFFF, 0x21FA525A, 0x0971FD45, 0x05547B68, + 0x270C6366, 0x06FDD5A6, 0xF7025315, 0xB1155A1E +}; + +const q15_t matrix_q15_scale_values[MATRIX_MAX_COEFFS_LEN] = +{ + 0x0201, 0x211F, 0x8000, 0xF573, + 0xE85E, 0x311D, 0x3529, 0x0000, + 0x7FFF, 0x21FA, 0x0971, 0x0554, + 0x270C, 0x06FD, 0xF702, 0xB115 +}; + +const int32_t matrix_shift_values[MATRIX_MAX_SHIFTS_LEN] = +{ + -16, -7, 0, 7, 16 +}; + +/*--------------------------------------------------------------------------------*/ +/* Matrix Definitions */ +/*--------------------------------------------------------------------------------*/ + +/** + * Define matrices by suffix (f32, q31, q15) for use in test cases. + * + * The rand1 and rand2 suffixes get their data from the same pool of random + * data, but their starting points differ by 1 element. + * + * Makes available: + * - matrix_`suffix`_1x1_rand1/2 + * - matrix_`suffix`_1x4_rand1/2 + * - matrix_`suffix`_2x4_rand1/2 + * - matrix_`suffix`_4x4_rand1/2 + */ +#define MATRIX_DEFINE_MATRICES(suffix) \ + arm_matrix_instance_##suffix matrix_##suffix##_1x1_rand1 = \ + {1, 1, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand }; \ + arm_matrix_instance_##suffix matrix_##suffix##_1x1_rand2 = \ + {1, 1, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \ + arm_matrix_instance_##suffix matrix_##suffix##_1x1_zeros = \ + {1, 1, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros}; \ + \ + arm_matrix_instance_##suffix matrix_##suffix##_1x4_rand1 = \ + {1, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand }; \ + arm_matrix_instance_##suffix matrix_##suffix##_1x4_rand2 = \ + {1, 4, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \ + arm_matrix_instance_##suffix matrix_##suffix##_1x4_zeros = \ + {1, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros}; \ + \ + arm_matrix_instance_##suffix matrix_##suffix##_2x4_rand1 = \ + {2, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand }; \ + arm_matrix_instance_##suffix matrix_##suffix##_2x4_rand2 = \ + {2, 4, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \ + arm_matrix_instance_##suffix matrix_##suffix##_2x4_zeros = \ + {2, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros}; \ + \ + arm_matrix_instance_##suffix matrix_##suffix##_4x4_rand1 = \ + {4, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_f32_100_rand }; \ + arm_matrix_instance_##suffix matrix_##suffix##_4x4_rand2 = \ + {4, 4, (TYPE_FROM_ABBREV(suffix) *) (matrix_f32_100_rand+1)}; \ + arm_matrix_instance_##suffix matrix_##suffix##_4x4_zeros = \ + {4, 4, (TYPE_FROM_ABBREV(suffix) *) matrix_zeros} + +MATRIX_DEFINE_MATRICES(f64); +MATRIX_DEFINE_MATRICES(f32); +MATRIX_DEFINE_MATRICES(q31); +MATRIX_DEFINE_MATRICES(q15); + +/*--------------------------------------------------------------------------------*/ +/* Matrix-Input Arrays */ +/*--------------------------------------------------------------------------------*/ + +/* Define Input #ARR_DESC_t by suffix. + * + * Taking inputs in parallel from the 'a' and 'b' arrays yields the following + * test cases: + * - 1x1 multiplication by zero + * - 1x1 multiplication between random numbers + * - 1x1 * 1x4 valid dimension interaction + * - 1x1 * 2x4 invalid dimension interaction + * - 2x4 * 4x4 larger valid dimension interaction + * - 4x4 * 4x4 larger valid dimension interaction + */ +#define MATRIX_DEFINE_INPUTS(suffix) \ + ARR_DESC_DEFINE(arm_matrix_instance_##suffix *, \ + matrix_##suffix##_a_inputs, \ + 6, \ + CURLY( \ + &matrix_##suffix##_1x1_rand1, \ + &matrix_##suffix##_1x1_rand1, \ + &matrix_##suffix##_1x1_rand1, \ + &matrix_##suffix##_1x1_rand1, \ + &matrix_##suffix##_2x4_rand1, \ + &matrix_##suffix##_4x4_rand1 \ + )); \ + \ + ARR_DESC_DEFINE(arm_matrix_instance_##suffix *, \ + matrix_##suffix##_b_inputs, \ + 6, \ + CURLY( \ + &matrix_##suffix##_1x1_zeros, \ + &matrix_##suffix##_1x1_rand2, \ + &matrix_##suffix##_1x4_rand2, \ + &matrix_##suffix##_2x4_rand2, \ + &matrix_##suffix##_4x4_rand2, \ + &matrix_##suffix##_4x4_rand2 \ + )); \ + \ + ARR_DESC_DEFINE(arm_matrix_instance_##suffix *, \ + matrix_##suffix##_invertible_inputs, \ + 4, \ + CURLY( \ + &matrix_##suffix##_1x1_rand1, \ + &matrix_##suffix##_1x1_rand2, \ + &matrix_##suffix##_4x4_rand1, \ + &matrix_##suffix##_4x4_rand2 \ + )) \ + +MATRIX_DEFINE_INPUTS(f64); +MATRIX_DEFINE_INPUTS(f32); +MATRIX_DEFINE_INPUTS(q31); +MATRIX_DEFINE_INPUTS(q15); diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/matrix_test_group.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/matrix_test_group.c new file mode 100644 index 0000000..c87439d --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/matrix_tests/matrix_test_group.c @@ -0,0 +1,19 @@ +#include "jtest.h" +#include "matrix_tests.h" + +JTEST_DEFINE_GROUP(matrix_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_GROUP_CALL(mat_add_tests); + JTEST_GROUP_CALL(mat_cmplx_mult_tests); + JTEST_GROUP_CALL(mat_init_tests); + JTEST_GROUP_CALL(mat_inverse_tests); + JTEST_GROUP_CALL(mat_mult_tests); + JTEST_GROUP_CALL(mat_mult_fast_tests); + JTEST_GROUP_CALL(mat_sub_tests); + JTEST_GROUP_CALL(mat_trans_tests); + JTEST_GROUP_CALL(mat_scale_tests); + return; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/max_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/max_tests.c new file mode 100644 index 0000000..d60973b --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/max_tests.c @@ -0,0 +1,36 @@ +#include "jtest.h" +#include "statistics_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "statistics_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MAX_TEST(suffix) \ + STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + max, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + STATISTICS_COMPARE_INTERFACE) + +JTEST_ARM_MAX_TEST(f32); +JTEST_ARM_MAX_TEST(q31); +JTEST_ARM_MAX_TEST(q15); +JTEST_ARM_MAX_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(max_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_max_f32_test); + JTEST_TEST_CALL(arm_max_q31_test); + JTEST_TEST_CALL(arm_max_q15_test); + JTEST_TEST_CALL(arm_max_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/mean_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/mean_tests.c new file mode 100644 index 0000000..291c10a --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/mean_tests.c @@ -0,0 +1,36 @@ +#include "jtest.h" +#include "statistics_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "statistics_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MEAN_TEST(suffix) \ + STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + mean, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + STATISTICS_COMPARE_INTERFACE) + +JTEST_ARM_MEAN_TEST(f32); +JTEST_ARM_MEAN_TEST(q31); +JTEST_ARM_MEAN_TEST(q15); +JTEST_ARM_MEAN_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(mean_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_mean_f32_test); + JTEST_TEST_CALL(arm_mean_q31_test); + JTEST_TEST_CALL(arm_mean_q15_test); + JTEST_TEST_CALL(arm_mean_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/min_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/min_tests.c new file mode 100644 index 0000000..9d831d0 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/min_tests.c @@ -0,0 +1,36 @@ +#include "jtest.h" +#include "statistics_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "statistics_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_MIN_TEST(suffix) \ + STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + min, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + STATISTICS_COMPARE_INTERFACE) + +JTEST_ARM_MIN_TEST(f32); +JTEST_ARM_MIN_TEST(q31); +JTEST_ARM_MIN_TEST(q15); +JTEST_ARM_MIN_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(min_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_min_f32_test); + JTEST_TEST_CALL(arm_min_q31_test); + JTEST_TEST_CALL(arm_min_q15_test); + JTEST_TEST_CALL(arm_min_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/power_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/power_tests.c new file mode 100644 index 0000000..12c30ea --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/power_tests.c @@ -0,0 +1,36 @@ +#include "jtest.h" +#include "statistics_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "statistics_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_POWER_TEST(suffix, output_type) \ + STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + power, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + STATISTICS_SNR_COMPARE_INTERFACE) + +JTEST_ARM_POWER_TEST(f32, float32_t); +JTEST_ARM_POWER_TEST(q31, q63_t); +JTEST_ARM_POWER_TEST(q15, q63_t); +JTEST_ARM_POWER_TEST(q7, q31_t); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(power_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_power_f32_test); + JTEST_TEST_CALL(arm_power_q31_test); + JTEST_TEST_CALL(arm_power_q15_test); + JTEST_TEST_CALL(arm_power_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/rms_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/rms_tests.c new file mode 100644 index 0000000..d9b1a24 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/rms_tests.c @@ -0,0 +1,34 @@ +#include "jtest.h" +#include "statistics_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "statistics_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_RMS_TEST(suffix) \ + STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + rms, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + STATISTICS_SNR_COMPARE_INTERFACE) + +JTEST_ARM_RMS_TEST(f32); +JTEST_ARM_RMS_TEST(q31); +JTEST_ARM_RMS_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(rms_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_rms_f32_test); + JTEST_TEST_CALL(arm_rms_q31_test); + JTEST_TEST_CALL(arm_rms_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/statistics_test_common_data.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/statistics_test_common_data.c new file mode 100644 index 0000000..ebf4580 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/statistics_test_common_data.c @@ -0,0 +1,94 @@ +#include "statistics_test_data.h" + +/*--------------------------------------------------------------------------------*/ +/* Input/Output Buffers */ +/*--------------------------------------------------------------------------------*/ + + +ARR_DESC_DEFINE(STATISTICS_BIGGEST_INPUT_TYPE, + statistics_output_fut, + STATISTICS_MAX_INPUT_ELEMENTS, + CURLY(0)); + +ARR_DESC_DEFINE(STATISTICS_BIGGEST_INPUT_TYPE, + statistics_output_ref, + STATISTICS_MAX_INPUT_ELEMENTS, + CURLY(0)); + +uint32_t statistics_idx_fut = 0; +uint32_t statistics_idx_ref = 0; + +STATISTICS_BIGGEST_INPUT_TYPE +statistics_output_f32_ref[STATISTICS_MAX_INPUT_ELEMENTS]; + +STATISTICS_BIGGEST_INPUT_TYPE +statistics_output_f32_fut[STATISTICS_MAX_INPUT_ELEMENTS]; + +/*--------------------------------------------------------------------------------*/ +/* Block Sizes */ +/*--------------------------------------------------------------------------------*/ + +/* + To change test parameter values add/remove values inside CURLY and update + the preceeding parameter to reflect the number of values inside CURLY. +*/ + +ARR_DESC_DEFINE(uint32_t, + statistics_block_sizes, + 4, + CURLY(1, 2, 15, 32)); + +/*--------------------------------------------------------------------------------*/ +/* Test Data */ +/*--------------------------------------------------------------------------------*/ + +ARR_DESC_DEFINE(float32_t, + statistics_f_32, + 32, + CURLY( + -0.0865129623056441 , -0.3331168756476194, + 0.0250664612949661 , 0.0575352840717098, + -0.2292942701362928 , 0.2381830931285998, + 0.2378328403304206 , -0.0075266553186635, + 0.0654584722817308 , 0.0349278285641849, + -0.0373417155362879 , 0.1451581096586606, + -0.1176633086028378 , 0.4366371636394202, + -0.0272791766173191 , 0.0227862627041619, + 0.2133536422718378 , 0.0118562921047211, + -0.0191296810967338 , -0.1664698927300045, + 0.0588821632785281 , -0.2672363715875608, + 0.1428649103637904 , 0.3247124128892542, + -0.1383551403404573 , 0.1715993345656525, + 0.2508002843205065 , -0.3187459152894954, + -0.2881928863802040 , 0.1142295247316356, + -0.0799771155430726 , 0.1379994750928690 + )); + + +ARR_DESC_DEFINE_SUBSET(statistics_f_31, + statistics_f_32, + 31); + +ARR_DESC_DEFINE_SUBSET(statistics_f_15, + statistics_f_32, + 15); + +ARR_DESC_DEFINE_SUBSET(statistics_f_2, + statistics_f_32, + 2); + +ARR_DESC_DEFINE(float32_t, + statistics_zeros, + 32, + CURLY(0)); + +/* Aggregate all float datasets */ +ARR_DESC_DEFINE(ARR_DESC_t *, + statistics_f_all, + 4, + CURLY( + &statistics_zeros, + &statistics_f_2, + &statistics_f_15, + &statistics_f_32 + )); diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/statistics_test_group.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/statistics_test_group.c new file mode 100644 index 0000000..6a610a6 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/statistics_test_group.c @@ -0,0 +1,14 @@ +#include "jtest.h" +#include "statistics_tests.h" + +JTEST_DEFINE_GROUP(statistics_tests) +{ + JTEST_GROUP_CALL(max_tests); + JTEST_GROUP_CALL(mean_tests); + JTEST_GROUP_CALL(min_tests); + JTEST_GROUP_CALL(power_tests); + JTEST_GROUP_CALL(rms_tests); + JTEST_GROUP_CALL(std_tests); + JTEST_GROUP_CALL(var_tests); + return; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/std_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/std_tests.c new file mode 100644 index 0000000..b80ed71 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/std_tests.c @@ -0,0 +1,34 @@ +#include "jtest.h" +#include "statistics_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "statistics_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_STD_TEST(suffix) \ + STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + std, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + STATISTICS_SNR_COMPARE_INTERFACE) + +JTEST_ARM_STD_TEST(f32); +JTEST_ARM_STD_TEST(q31); +JTEST_ARM_STD_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(std_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_std_f32_test); + JTEST_TEST_CALL(arm_std_q31_test); + JTEST_TEST_CALL(arm_std_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/var_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/var_tests.c new file mode 100644 index 0000000..3aa7c27 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/statistics_tests/var_tests.c @@ -0,0 +1,34 @@ +#include "jtest.h" +#include "statistics_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "statistics_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_VAR_TEST(suffix) \ + STATISTICS_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + var, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + STATISTICS_SNR_COMPARE_INTERFACE) + +JTEST_ARM_VAR_TEST(f32); +JTEST_ARM_VAR_TEST(q31); +JTEST_ARM_VAR_TEST(q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(var_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_var_f32_test); + JTEST_TEST_CALL(arm_var_q31_test); + JTEST_TEST_CALL(arm_var_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/copy_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/copy_tests.c new file mode 100644 index 0000000..3804f63 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/copy_tests.c @@ -0,0 +1,33 @@ +#include "jtest.h" +#include "support_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "support_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_COPY_TEST(suffix) \ + SUPPORT_DEFINE_TEST_TEMPLATE_BUF1_BLK( \ + copy, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + SUPPORT_COMPARE_INTERFACE) + +JTEST_ARM_COPY_TEST(f32); +JTEST_ARM_COPY_TEST(q31); +JTEST_ARM_COPY_TEST(q15); +JTEST_ARM_COPY_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(copy_tests) +{ + JTEST_TEST_CALL(arm_copy_f32_test); + JTEST_TEST_CALL(arm_copy_q31_test); + JTEST_TEST_CALL(arm_copy_q15_test); + JTEST_TEST_CALL(arm_copy_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/fill_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/fill_tests.c new file mode 100644 index 0000000..fc5892d --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/fill_tests.c @@ -0,0 +1,36 @@ +#include "jtest.h" +#include "support_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "support_templates.h" +#include "type_abbrev.h" + +#define JTEST_ARM_FILL_TEST(suffix) \ + SUPPORT_DEFINE_TEST_TEMPLATE_ELT1_BLK( \ + fill, \ + suffix, \ + TYPE_FROM_ABBREV(suffix), \ + TYPE_FROM_ABBREV(suffix), \ + SUPPORT_COMPARE_INTERFACE) + +JTEST_ARM_FILL_TEST(f32); +JTEST_ARM_FILL_TEST(q31); +JTEST_ARM_FILL_TEST(q15); +JTEST_ARM_FILL_TEST(q7); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(fill_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_fill_f32_test); + JTEST_TEST_CALL(arm_fill_q31_test); + JTEST_TEST_CALL(arm_fill_q15_test); + JTEST_TEST_CALL(arm_fill_q7_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/support_test_common_data.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/support_test_common_data.c new file mode 100644 index 0000000..f4b5911 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/support_test_common_data.c @@ -0,0 +1,85 @@ +#include "arm_math.h" +#include "support_test_data.h" + +#define MAX_INPUT_ELEMENTS 32 +#define BIGGEST_INPUT_TYPE float32_t + +/*--------------------------------------------------------------------------------*/ +/* Input/Output Buffers */ +/*--------------------------------------------------------------------------------*/ + +ARR_DESC_DEFINE(BIGGEST_INPUT_TYPE, + support_output_fut, + MAX_INPUT_ELEMENTS, + CURLY(0)); + +ARR_DESC_DEFINE(BIGGEST_INPUT_TYPE, + support_output_ref, + MAX_INPUT_ELEMENTS, + CURLY(0)); + +/*--------------------------------------------------------------------------------*/ +/* Block Sizes */ +/*--------------------------------------------------------------------------------*/ + +/* + To change test parameter values add/remove values inside CURLY and update + the preceeding parameter to reflect the number of values inside CURLY. +*/ + +ARR_DESC_DEFINE(uint32_t, + support_block_sizes, + 4, + CURLY( 2, 7, 15, 32)); + +/*--------------------------------------------------------------------------------*/ +/* Numbers */ +/*--------------------------------------------------------------------------------*/ + +ARR_DESC_DEFINE(uint32_t, + support_elts, + 4, + CURLY( 0, 1, 0x80000000, 0x7fffffff)); + +/*--------------------------------------------------------------------------------*/ +/* Test Data */ +/*--------------------------------------------------------------------------------*/ + +ARR_DESC_DEFINE(float32_t, + support_f_32, + 32, + CURLY( + 0.24865986 , -0.13364227, -0.27233250 , -7.33488200, + 0.42190653 , 1.17435880 , -0.49824914 , 0.87883663, + 0.63066370 , 1.80275680 , -84.83916000, -2.06773800, + 7.63452500 , 1.01487610 , -0.65785825 , 1.78019030, + -0.34160388, 0.68546050 , -1.81721590 , -0.10340453, + -4.48600340, -1.69763480, -1.26022340 , -1.58457480, + 0.51993870 , 2.83526470 , -0.21502694 , -0.57690346, + -0.22945681, 0.79509383 , 0.07275216 , -2.16279080 + )); + +/* Alias the 32 element array with wrappers that end sooner. */ +ARR_DESC_DEFINE_SUBSET(support_f_15, + support_f_32, + 15); + +ARR_DESC_DEFINE_SUBSET(support_f_2, + support_f_32, + 2); + +ARR_DESC_DEFINE(float32_t, + support_zeros, + 32, + CURLY(0)); + +/* Aggregate all float datasets. */ +ARR_DESC_DEFINE(ARR_DESC_t *, + support_f_all, + 4, + CURLY( + &support_zeros, + &support_f_2, + &support_f_15, + &support_f_32 + )); diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/support_test_group.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/support_test_group.c new file mode 100644 index 0000000..7cc2732 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/support_test_group.c @@ -0,0 +1,10 @@ +#include "jtest.h" +#include "support_tests.h" + +JTEST_DEFINE_GROUP(support_tests) +{ + JTEST_GROUP_CALL(copy_tests); + JTEST_GROUP_CALL(fill_tests); + JTEST_GROUP_CALL(x_to_y_tests); + return; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/x_to_y_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/x_to_y_tests.c new file mode 100644 index 0000000..4667031 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/support_tests/x_to_y_tests.c @@ -0,0 +1,80 @@ +#include "jtest.h" +#include "support_test_data.h" +#include "arr_desc.h" +#include "arm_math.h" /* FUTs */ +#include "ref.h" /* Reference Functions */ +#include "test_templates.h" +#include "support_templates.h" +#include "type_abbrev.h" + +/* Aliases to play nicely with templates. */ +#define arm_f32_to_q31 arm_float_to_q31 +#define arm_f32_to_q15 arm_float_to_q15 +#define arm_f32_to_q7 arm_float_to_q7 +#define arm_q31_to_f32 arm_q31_to_float +#define arm_q15_to_f32 arm_q15_to_float +#define arm_q7_to_f32 arm_q7_to_float +#define ref_f32_to_q31 ref_float_to_q31 +#define ref_f32_to_q15 ref_float_to_q15 +#define ref_f32_to_q7 ref_float_to_q7 +#define ref_q31_to_f32 ref_q31_to_float +#define ref_q15_to_f32 ref_q15_to_float +#define ref_q7_to_f32 ref_q7_to_float + +#define JTEST_ARM_X_TO_Y_TEST(prefix, suffix) \ + JTEST_DEFINE_TEST(arm_##prefix##_to_##suffix##_test, \ + arm_##prefix##_to_##suffix) \ + { \ + TEST_TEMPLATE_BUF1_BLK( \ + support_f_all, \ + support_block_sizes, \ + TYPE_FROM_ABBREV(prefix), \ + TYPE_FROM_ABBREV(suffix), \ + arm_##prefix##_to_##suffix, \ + ARM_x_to_y_INPUT_INTERFACE, \ + ref_##prefix##_to_##suffix, \ + REF_x_to_y_INPUT_INTERFACE, \ + SUPPORT_COMPARE_INTERFACE); \ + } + +JTEST_ARM_X_TO_Y_TEST(f32, q31); +JTEST_ARM_X_TO_Y_TEST(f32, q15); +JTEST_ARM_X_TO_Y_TEST(f32, q7); + +JTEST_ARM_X_TO_Y_TEST(q31, f32); +JTEST_ARM_X_TO_Y_TEST(q31, q15); +JTEST_ARM_X_TO_Y_TEST(q31, q7); + +JTEST_ARM_X_TO_Y_TEST(q15, f32); +JTEST_ARM_X_TO_Y_TEST(q15, q31); +JTEST_ARM_X_TO_Y_TEST(q15, q7); + +JTEST_ARM_X_TO_Y_TEST(q7, f32); +JTEST_ARM_X_TO_Y_TEST(q7, q31); +JTEST_ARM_X_TO_Y_TEST(q7, q15); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group. */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(x_to_y_tests) +{ + /* + To skip a test, comment it out. + */ + JTEST_TEST_CALL(arm_f32_to_q31_test); + JTEST_TEST_CALL(arm_f32_to_q15_test); + JTEST_TEST_CALL(arm_f32_to_q7_test); + + JTEST_TEST_CALL(arm_q31_to_f32_test); + JTEST_TEST_CALL(arm_q31_to_q15_test); + JTEST_TEST_CALL(arm_q31_to_q7_test); + + JTEST_TEST_CALL(arm_q15_to_f32_test); + JTEST_TEST_CALL(arm_q15_to_q31_test); + JTEST_TEST_CALL(arm_q15_to_q7_test); + + JTEST_TEST_CALL(arm_q7_to_f32_test); + JTEST_TEST_CALL(arm_q7_to_q31_test); + JTEST_TEST_CALL(arm_q7_to_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_family_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_family_tests.c new file mode 100644 index 0000000..d3e775e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_family_tests.c @@ -0,0 +1,183 @@ +#include "jtest.h" +#include "ref.h" +#include "arr_desc.h" +#include "transform_templates.h" +#include "transform_test_data.h" +#include "type_abbrev.h" + +/*--------------------------------------------------------------------------------*/ +/* Macros and Defines */ +/*--------------------------------------------------------------------------------*/ + +#define CFFT_FN_NAME(fn_specifier, type_suffix) \ + arm_cfft_##fn_specifier##_##type_suffix \ + +#define CFFT_TEST_NAME(fn_specifier, type_suffix, config_suffix) \ + arm_cfft_##fn_specifier##_##type_suffix##_##config_suffix##_test \ + +/*--------------------------------------------------------------------------------*/ +/* Function Aliases */ +/*--------------------------------------------------------------------------------*/ + +/* These aliases allow expansions in the CFFT_FAMILY_DEFINE_TEST() template to + make sense */ +#define arm_cfft_mag_init_f32 arm_cfft_radix4_init_f32 +#define arm_cfft_mag_init_q31 arm_cfft_radix4_init_q31 +#define arm_cfft_mag_init_q15 arm_cfft_radix4_init_q15 +#define arm_cfft_mag_instance_f32 arm_cfft_radix4_instance_f32 +#define arm_cfft_mag_instance_q31 arm_cfft_radix4_instance_q31 +#define arm_cfft_mag_instance_q15 arm_cfft_radix4_instance_q15 +#define transform_mag_fftlens transform_radix4_fftlens + +/*--------------------------------------------------------------------------------*/ +/* Test Definition */ +/*--------------------------------------------------------------------------------*/ + +/** + * Defines a test for the family of CFFT transforms. + * + * The family of CFFT transforms includes: + * + * - arm_cfft_radix4_xxx + * - arm_cfft_radix2_xxx + * - arm_cfft_mag_xxx + * + * Where xxx can be f32, q31, or q15. + * + * @param fn_specifier Allowed values: radix4, radix2, mag. + * @param type_suffix Allowed values: f32, q31, q15. + * + * @param config_suffix Used to differentiate test names based configuration + * (in this case whether the ifft_flag is set or not.) + + * @param comparison_interface Macro name used to compare reference and fut + * outputs. + * + * @param output_tpe The type of variable contained in the output + * (e.g. float32_t, uint32_t, etc). + * + * @param ifft_flag Determines whether the arm_cfft_instance_xxx is configured + * for an inverse FFT. + */ +#define CFFT_FAMILY_DEFINE_TEST(fn_specifier, \ + type_suffix, \ + config_suffix, /* Delineate between test configs*/ \ + comparison_interface, \ + output_type, \ + ifft_flag) \ + JTEST_DEFINE_TEST(CFFT_TEST_NAME(fn_specifier, type_suffix, \ + config_suffix), \ + CFFT_FN_NAME(fn_specifier, type_suffix)) \ + { \ + arm_cfft_##fn_specifier##_instance_##type_suffix cfft_inst_fut; \ + arm_cfft_##fn_specifier##_instance_##type_suffix cfft_inst_ref; \ + \ + TEMPLATE_DO_ARR_DESC( \ + fftlen_idx, uint16_t, fftlen, transform_##fn_specifier##_fftlens \ + , \ + \ + /* Initialize the cfft instance */ \ + arm_cfft_##fn_specifier##_init_##type_suffix( \ + &cfft_inst_fut, fftlen, ifft_flag, (uint8_t)1); \ + arm_cfft_##fn_specifier##_init_##type_suffix( \ + &cfft_inst_ref, fftlen, ifft_flag, (uint8_t)1); \ + \ + TRANSFORM_PREPARE_INPLACE_INPUTS( \ + transform_fft_##type_suffix##_inputs, \ + fftlen * \ + sizeof(TYPE_FROM_ABBREV(type_suffix)) * \ + 2 /*complex_inputs*/); \ + \ + /* Display parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Inverse-transform flag: %d\n", \ + (int)fftlen, \ + (int)ifft_flag); \ + \ + /* Display cycle count and run test */ \ + JTEST_COUNT_CYCLES( \ + arm_cfft_##fn_specifier##_##type_suffix( \ + &cfft_inst_fut, \ + (void*) transform_fft_inplace_input_fut)); \ + \ + ref_cfft_##fn_specifier##_##type_suffix( \ + &cfft_inst_ref, \ + (void *) transform_fft_inplace_input_ref); \ + \ + /* Test correctness */ \ + comparison_interface( \ + fftlen, \ + output_type)); \ + \ + return JTEST_TEST_PASSED; \ + } + +/** + * Bulk wrapper for all tests instantiated using #CFFT_FAMILY_DEFINE_TEST(). + * + * This macro allows several test definitions to share the same config_suffix + * and ifft_flag settings. + */ +#define CFFT_FAMILY_DEFINE_ALL_TESTS(config_suffix, ifft_flag) \ + /* Radix2 tests*/ \ + CFFT_FAMILY_DEFINE_TEST(radix2, q31, config_suffix, \ + TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE, \ + TYPE_FROM_ABBREV(q31), \ + ifft_flag); \ + CFFT_FAMILY_DEFINE_TEST(radix2, q15, config_suffix, \ + TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE, \ + TYPE_FROM_ABBREV(q15), \ + ifft_flag); \ + /* Radix4 tests*/ \ + CFFT_FAMILY_DEFINE_TEST(radix4, q31, config_suffix, \ + TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE, \ + TYPE_FROM_ABBREV(q31), \ + ifft_flag); \ + CFFT_FAMILY_DEFINE_TEST(radix4, q15, config_suffix, \ + TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE, \ + TYPE_FROM_ABBREV(q15), \ + ifft_flag) + /* /\* Mag tests*\/ \ */ + /* CFFT_FAMILY_DEFINE_TEST(mag, f32, config_suffix, \ */ + /* TRANSFORM_SNR_COMPARE_INTERFACE, \ */ + /* TYPE_FROM_ABBREV(f32), \ */ + /* ifft_flag); \ */ + /* CFFT_FAMILY_DEFINE_TEST(mag, q31, config_suffix, \ */ + /* TRANSFORM_SNR_COMPARE_INTERFACE, \ */ + /* TYPE_FROM_ABBREV(q31), \ */ + /* ifft_flag); \ */ + /* CFFT_FAMILY_DEFINE_TEST(mag, q15, config_suffix, \ */ + /* TRANSFORM_SNR_COMPARE_INTERFACE, \ */ + /* TYPE_FROM_ABBREV(q15), \ */ + /* ifft_flag) */ + +CFFT_FAMILY_DEFINE_ALL_TESTS(forward, 0U); +CFFT_FAMILY_DEFINE_ALL_TESTS(inverse, 1U); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(cfft_family_tests) +{ + /* Forward FFT tests */ + JTEST_TEST_CALL(arm_cfft_radix2_q31_forward_test); + JTEST_TEST_CALL(arm_cfft_radix2_q15_forward_test); + JTEST_TEST_CALL(arm_cfft_radix4_q31_forward_test); + JTEST_TEST_CALL(arm_cfft_radix4_q15_forward_test); + + /* Inverse FFT Tests */ + JTEST_TEST_CALL(arm_cfft_radix2_q31_inverse_test); + JTEST_TEST_CALL(arm_cfft_radix2_q15_inverse_test); + JTEST_TEST_CALL(arm_cfft_radix4_q31_inverse_test); + JTEST_TEST_CALL(arm_cfft_radix4_q15_inverse_test); + + /* Magnitude tests removed from the DSP Library. Keeping them here in case + minds are changed. */ + /* JTEST_TEST_CALL(arm_cfft_mag_f32_forward_test); */ + /* JTEST_TEST_CALL(arm_cfft_mag_q31_forward_test); */ + /* JTEST_TEST_CALL(arm_cfft_mag_q15_forward_test); */ + /* JTEST_TEST_CALL(arm_cfft_mag_f32_inverse_test); */ + /* JTEST_TEST_CALL(arm_cfft_mag_q31_inverse_test); */ + /* JTEST_TEST_CALL(arm_cfft_mag_q15_inverse_test); */ +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c new file mode 100644 index 0000000..f26c6f6 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c @@ -0,0 +1,144 @@ +#include "jtest.h" +#include "ref.h" +#include "arr_desc.h" +#include "transform_templates.h" +#include "transform_test_data.h" + +#define CFFT_SNR_THRESHOLD 120 + +/* + CFFT function test template. Arguments are: inverse-transform flag, function + suffix (q7/q15/q31/f32) and the output type (q7_t, q15_t, q31_t, float32_t) +*/ +#define CFFT_TEST_BODY(ifft_flag, suffix, output_type) \ + do \ + { \ + /* Go through all arm_cfft_instances */ \ + TEMPLATE_DO_ARR_DESC( \ + cfft_inst_idx, const arm_cfft_instance_##suffix *, cfft_inst_ptr, \ + transform_cfft_##suffix##_structs \ + , \ + \ + TRANSFORM_PREPARE_INPLACE_INPUTS( \ + transform_fft_##suffix##_inputs, \ + cfft_inst_ptr->fftLen * \ + sizeof(output_type) * \ + 2 /*complex_inputs*/); \ + \ + /* Display parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Inverse-transform flag: %d\n", \ + (int)cfft_inst_ptr->fftLen, \ + (int)ifft_flag); \ + \ + /* Display cycle count and run test */ \ + JTEST_COUNT_CYCLES( \ + arm_cfft_##suffix(cfft_inst_ptr, \ + (void *) transform_fft_inplace_input_fut, \ + ifft_flag, /* IFFT Flag */ \ + 1)); /* Bitreverse flag */ \ + ref_cfft_##suffix(cfft_inst_ptr, \ + (void *) transform_fft_inplace_input_ref, \ + ifft_flag, /* IFFT Flag */ \ + 1); /* Bitreverse flag */ \ + \ + /* Test correctness */ \ + TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE( \ + cfft_inst_ptr->fftLen, \ + output_type)); \ + \ + return JTEST_TEST_PASSED; \ + } while (0) + + +/* + CFFT function with downshift test template. Arguments are: inverse-transform flag, + function suffix (q7/q15/q31/f32) and the output type (q7_t, q15_t, q31_t, float32_t) +*/ +#define CFFT_DOWNSHIFT_INPUT_TEST_BODY(ifft_flag, suffix, output_type) \ + do \ + { \ + /* Go through all arm_cfft_instances */ \ + TEMPLATE_DO_ARR_DESC( \ + cfft_inst_idx, const arm_cfft_instance_##suffix *, cfft_inst_ptr, \ + transform_cfft_##suffix##_structs \ + , \ + \ + TRANSFORM_PREPARE_INPLACE_INPUTS_DOWNSHIFT( \ + transform_fft_##suffix##_inputs, \ + cfft_inst_ptr->fftLen * \ + sizeof(output_type) * \ + 2 /*complex_inputs*/, output_type); \ + \ + /* Display parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Inverse-transform flag: %d\n", \ + (int)cfft_inst_ptr->fftLen, \ + (int)ifft_flag); \ + \ + /* Display cycle count and run test */ \ + JTEST_COUNT_CYCLES( \ + arm_cfft_##suffix(cfft_inst_ptr, \ + (void *) transform_fft_inplace_input_fut, \ + ifft_flag, /* IFFT Flag */ \ + 1)); /* Bitreverse flag */ \ + ref_cfft_##suffix(cfft_inst_ptr, \ + (void *) transform_fft_inplace_input_ref, \ + ifft_flag, /* IFFT Flag */ \ + 1); /* Bitreverse flag */ \ + \ + /* Test correctness */ \ + TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE( \ + cfft_inst_ptr->fftLen, \ + output_type)); \ + \ + return JTEST_TEST_PASSED; \ + } while (0) + + +/* Test declarations */ +JTEST_DEFINE_TEST(cfft_f32_test, cfft_f32) +{ + CFFT_TEST_BODY((uint8_t) 0, f32, float32_t); +} + +JTEST_DEFINE_TEST(cfft_f32_ifft_test, cfft_f32) +{ + CFFT_TEST_BODY((uint8_t) 1, f32, float32_t); +} + +JTEST_DEFINE_TEST(cfft_q31_test, cfft_q31) +{ + CFFT_TEST_BODY((uint8_t) 0, q31, q31_t); +} + +JTEST_DEFINE_TEST(cfft_q31_ifft_test, cfft_q31) +{ + CFFT_TEST_BODY((uint8_t) 1, q31, q31_t); +} + +JTEST_DEFINE_TEST(cfft_q15_test, cfft_q15) +{ + CFFT_TEST_BODY((uint8_t) 0, q15, q15_t); +} + +JTEST_DEFINE_TEST(cfft_q15_ifft_test, cfft_q15) +{ + CFFT_TEST_BODY((uint8_t) 1, q15, q15_t); +} + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(cfft_tests) +{ + JTEST_TEST_CALL(cfft_f32_test); + JTEST_TEST_CALL(cfft_f32_ifft_test); + + JTEST_TEST_CALL(cfft_q31_test); + JTEST_TEST_CALL(cfft_q31_ifft_test); + + JTEST_TEST_CALL(cfft_q15_test); + JTEST_TEST_CALL(cfft_q15_ifft_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/dct4_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/dct4_tests.c new file mode 100644 index 0000000..aae5a42 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/dct4_tests.c @@ -0,0 +1,197 @@ +#include "jtest.h" +#include "ref.h" +#include "arm_math.h" +#include "arr_desc.h" +#include "transform_templates.h" +#include "transform_test_data.h" +#include "type_abbrev.h" +#include /* sqrtf() */ + +/*--------------------------------------------------------------------------------*/ +/* Aliases to aid macro expansion */ +/*--------------------------------------------------------------------------------*/ +#define ref_sqrt_f32(x) sqrtf(x) + +/*--------------------------------------------------------------------------------*/ +/* Test Definitions */ +/*--------------------------------------------------------------------------------*/ + +/* +DCT function test template. Arguments are: function configuration suffix +(q7/q15/q31/f32) and input type (q7_t/q15_t/q31_t/float32_t) +*/ +#define DCT4_DEFINE_TEST(suffix, input_type) \ + JTEST_DEFINE_TEST(arm_dct4_##suffix##_test, arm_dct4_##suffix) \ + { \ + CONCAT(arm_dct4_instance_,suffix) dct4_inst_fut = {0}; \ + CONCAT(arm_rfft_instance_,suffix) rfft_inst_fut = {0}; \ + CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_fut = {0}; \ + \ + CONCAT(arm_dct4_instance_,suffix) dct4_inst_ref = {0}; \ + CONCAT(arm_rfft_instance_,suffix) rfft_inst_ref = {0}; \ + CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_ref = {0}; \ + \ + /* Go through all dct lengths */ \ + TEMPLATE_DO_ARR_DESC( \ + fftlen_idx, uint16_t, fftlen, transform_dct_fftlens \ + , \ + \ + float32_t normalize_f32 = \ + ref_sqrt_f32((2.0f/(float32_t)fftlen)); \ + input_type normalize; \ + \ + /* Calculate normalized DCT4 value for input_type. */ \ + TEST_CONVERT_FLOAT_TO(&normalize_f32, &normalize, \ + 1, input_type); \ + \ + /* Initialize the DCT4, RFFT, and CFFT instances */ \ + arm_dct4_init_##suffix( \ + &dct4_inst_fut, &rfft_inst_fut, &cfft_inst_fut, \ + fftlen, \ + fftlen/2, \ + normalize); \ + \ + arm_dct4_init_##suffix( \ + &dct4_inst_ref, &rfft_inst_ref, &cfft_inst_ref, \ + fftlen, \ + fftlen/2, \ + normalize); \ + \ + memset( transform_fft_input_fut,0, \ + fftlen*sizeof(input_type)); \ + \ + TRANSFORM_PREPARE_INPLACE_INPUTS( \ + transform_fft_##suffix##_inputs, \ + fftlen * sizeof(input_type)); \ + \ + /* Display parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n", \ + (int)fftlen); \ + \ + /* Input provided as a scratch buffer. Inplace input is \ + * actual input. Display cycle count and run test*/ \ + JTEST_COUNT_CYCLES( \ + arm_dct4_##suffix( \ + &dct4_inst_fut, \ + (void *) transform_fft_input_fut, \ + (void *) transform_fft_inplace_input_fut)); \ + \ + memset( transform_fft_input_ref,0, \ + fftlen*sizeof(input_type)); \ + \ + /* Input provided as a scratch buffer. Inplace input is */ \ + /* actual input. */ \ + ref_dct4_##suffix( \ + &dct4_inst_ref, \ + (void *) transform_fft_input_ref, \ + (void *) transform_fft_inplace_input_ref); \ + \ + /* Test correctness */ \ + DCT_TRANSFORM_SNR_COMPARE_INTERFACE( \ + fftlen, \ + input_type)); \ + \ + return JTEST_TEST_PASSED; \ + } + +/* + DCT function test template for fixed point data. Arguments are: function + suffix (q7/q15/q31/f32), input type (q7_t/q15_t/q31_t/float32_t) and prefix + (dct_4) +*/ +#define DCT4_FIXED_POINT_DEFINE_TEST(suffix, input_type, prefix) \ + JTEST_DEFINE_TEST(arm_dct4_##suffix##_test, arm_dct4_##suffix) \ + { \ + CONCAT(arm_dct4_instance_,suffix) dct4_inst_fut = {0}; \ + CONCAT(arm_rfft_instance_,suffix) rfft_inst_fut = {0}; \ + CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_fut = {0}; \ + \ + CONCAT(arm_dct4_instance_,suffix) dct4_inst_ref = {0}; \ + CONCAT(arm_rfft_instance_,suffix) rfft_inst_ref = {0}; \ + CONCAT(arm_cfft_radix4_instance_,suffix) cfft_inst_ref = {0}; \ + \ + TEMPLATE_DO_ARR_DESC( \ + fftlen_idx, uint16_t, fftlen, transform_dct_fftlens \ + , \ + uint32_t i; \ + float32_t normalize_f32 = \ + ref_sqrt_f32((2.0f/(float32_t)fftlen)); \ + input_type normalize; \ + \ + /* Calculate normalized DCT4 value for input_type. */ \ + TEST_CONVERT_FLOAT_TO(&normalize_f32, &normalize, \ + 1, input_type); \ + \ + /* Initialize the DCT4, RFFT, and CFFT instances */ \ + arm_dct4_init_##suffix( \ + &dct4_inst_fut, &rfft_inst_fut, &cfft_inst_fut, \ + fftlen, \ + fftlen/2, \ + normalize); \ + \ + arm_dct4_init_##suffix( \ + &dct4_inst_ref, &rfft_inst_ref, &cfft_inst_ref, \ + fftlen, \ + fftlen/2, \ + normalize); \ + \ + /* Input samples need to be downscaled by 1 bit to \ + * avoid saturations in the Q31 DCT process, \ + * as the conversion from DCT2 to DCT4 involves \ + * one subtraction. \ + */ \ + for(i=0; i < fftlen; i++) \ + { \ + ((input_type*)transform_fft_inplace_input_fut)[i] = \ + prefix##transform_fft_##suffix##_inputs[i] >> 1; \ + ((input_type*)transform_fft_inplace_input_ref)[i] = \ + prefix##transform_fft_##suffix##_inputs[i] >> 1; \ + } \ + \ + memset( transform_fft_input_fut,0, \ + fftlen*sizeof(input_type)); \ + \ + /* Display test parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n", \ + (int)fftlen); \ + \ + /* Input provided as a scratch buffer. Inplace input is \ + * actual input. */ \ + JTEST_COUNT_CYCLES( \ + arm_dct4_##suffix( \ + &dct4_inst_fut, \ + (void *) transform_fft_input_fut, \ + (void *) transform_fft_inplace_input_fut)); \ + \ + memset( transform_fft_input_ref,0, \ + fftlen*sizeof(input_type)); \ + \ + /* Input provided as a scratch buffer. Inplace input is */ \ + /* actual input. */ \ + ref_dct4_##suffix( \ + &dct4_inst_ref, \ + (void *) transform_fft_input_ref, \ + (void *) transform_fft_inplace_input_ref); \ + \ + /* Test correctness */ \ + DCT_TRANSFORM_SNR_COMPARE_INTERFACE( \ + fftlen, \ + input_type)); \ + \ + return JTEST_TEST_PASSED; \ + } + +DCT4_DEFINE_TEST(f32, float32_t); +DCT4_FIXED_POINT_DEFINE_TEST(q31, q31_t,); +DCT4_FIXED_POINT_DEFINE_TEST(q15, q15_t, dct4_); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(dct4_tests) +{ + JTEST_TEST_CALL(arm_dct4_f32_test); + JTEST_TEST_CALL(arm_dct4_q31_test); + JTEST_TEST_CALL(arm_dct4_q15_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_fast_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_fast_tests.c new file mode 100644 index 0000000..d8a8e17 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_fast_tests.c @@ -0,0 +1,75 @@ +#include "jtest.h" +#include "ref.h" +#include "arr_desc.h" +#include "transform_templates.h" +#include "transform_test_data.h" +#include "type_abbrev.h" + +/* +FFT fast function test template. Arguments are: function configuration suffix +(q7/q15/q31/f32) and inverse-transform flag +*/ +#define RFFT_FAST_DEFINE_TEST(config_suffix, ifft_flag) \ + JTEST_DEFINE_TEST(arm_rfft_fast_f32_##config_suffix##_test, \ + arm_fft_f32) \ + { \ + arm_rfft_fast_instance_f32 rfft_inst_fut = {{0}, 0, 0}; \ + arm_rfft_fast_instance_f32 rfft_inst_ref = {{0}, 0, 0}; \ + \ + /* Go through all FFT lengths */ \ + TEMPLATE_DO_ARR_DESC( \ + fftlen_idx, uint16_t, fftlen, transform_rfft_fast_fftlens \ + , \ + \ + /* Initialize the RFFT and CFFT Instances */ \ + arm_rfft_fast_init_f32( \ + &rfft_inst_fut, fftlen); \ + \ + arm_rfft_fast_init_f32( \ + &rfft_inst_ref, fftlen); \ + \ + TRANSFORM_COPY_INPUTS( \ + transform_fft_f32_inputs, \ + fftlen * \ + sizeof(float32_t)); \ + \ + /* Display parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Inverse-transform flag: %d\n", \ + (int)fftlen, \ + (int)ifft_flag); \ + \ + /* Display cycle count and run test */ \ + JTEST_COUNT_CYCLES( \ + arm_rfft_fast_f32( \ + &rfft_inst_fut, \ + (void *) transform_fft_input_fut, \ + (void *) transform_fft_output_fut, \ + ifft_flag)); \ + \ + ref_rfft_fast_f32( \ + &rfft_inst_ref, \ + (void *) transform_fft_input_ref, \ + (void *) transform_fft_output_ref, \ + ifft_flag); \ + \ + /* Test correctness */ \ + TRANSFORM_SNR_COMPARE_INTERFACE( \ + fftlen, \ + float32_t)); \ + \ + return JTEST_TEST_PASSED; \ + } + +RFFT_FAST_DEFINE_TEST(forward, 0U); +RFFT_FAST_DEFINE_TEST(inverse, 1U); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(rfft_fast_tests) +{ + JTEST_TEST_CALL(arm_rfft_fast_f32_forward_test); + JTEST_TEST_CALL(arm_rfft_fast_f32_inverse_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_tests.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_tests.c new file mode 100644 index 0000000..6fbc8e6 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/rfft_tests.c @@ -0,0 +1,94 @@ +#include "jtest.h" +#include "ref.h" +#include "arr_desc.h" +#include "transform_templates.h" +#include "transform_test_data.h" +#include "type_abbrev.h" + +/* + FFT function test template. Arguments are: function suffix (q7/q15/q31/f32) + function configuration suffix (same as function suffix), inverse-transform flag, + input and output type (both q7_t/q15_t/q31_t/float32_t) +*/ +#define RFFT_DEFINE_TEST(suffix, config_suffix, \ + ifft_flag, input_type, output_type) \ + JTEST_DEFINE_TEST(arm_rfft_##suffix##_##config_suffix##_test, \ + arm_rfft_##suffix) \ + { \ + CONCAT(arm_rfft_instance_, suffix) rfft_inst_fut = {0}; \ + CONCAT(arm_rfft_instance_, suffix) rfft_inst_ref = {0}; \ + \ + /* Go through all arm_rfft lengths */ \ + TEMPLATE_DO_ARR_DESC( \ + fftlen_idx, uint16_t, fftlen, transform_rfft_fftlens \ + , \ + \ + /* Initialize the RFFT and CFFT Instances */ \ + arm_rfft_init_##suffix( \ + &rfft_inst_fut, \ + (uint32_t) fftlen, ifft_flag, 1U); \ + \ + arm_rfft_init_##suffix( \ + &rfft_inst_ref, \ + (uint32_t) fftlen, ifft_flag, 1U); \ + \ + if (ifft_flag) \ + { \ + TRANSFORM_PREPARE_INVERSE_INPUTS( \ + transform_fft_##suffix##_inputs, \ + fftlen, input_type, \ + fftlen * \ + sizeof(input_type)); \ + } \ + else \ + { \ + TRANSFORM_COPY_INPUTS( \ + transform_fft_##suffix##_inputs, \ + fftlen * \ + sizeof(input_type)); \ + } \ + \ + /* Display parameter values */ \ + JTEST_DUMP_STRF("Block Size: %d\n" \ + "Inverse-transform flag: %d\n", \ + (int)fftlen, \ + (int)ifft_flag); \ + \ + /* Display cycle count and run test */ \ + JTEST_COUNT_CYCLES( \ + arm_rfft_##suffix( \ + &rfft_inst_fut, \ + (void *) transform_fft_input_fut, \ + (void *) transform_fft_output_fut)); \ + \ + ref_rfft_##suffix( \ + &rfft_inst_ref, \ + (void *) transform_fft_input_ref, \ + (void *) transform_fft_output_ref); \ + \ + /* Test correctness */ \ + TRANSFORM_SNR_COMPARE_INTERFACE( \ + fftlen, \ + output_type)); \ + \ + return JTEST_TEST_PASSED; \ + } + +RFFT_DEFINE_TEST(q31, forward, 0U, TYPE_FROM_ABBREV(q31), TYPE_FROM_ABBREV(q31)); +RFFT_DEFINE_TEST(q15, forward, 0U, TYPE_FROM_ABBREV(q15), TYPE_FROM_ABBREV(q15)); +//RFFT_DEFINE_TEST(f32, inverse, 1U, TYPE_FROM_ABBREV(f32), TYPE_FROM_ABBREV(f32)); +RFFT_DEFINE_TEST(q31, inverse, 1U, TYPE_FROM_ABBREV(q31), TYPE_FROM_ABBREV(q31)); +RFFT_DEFINE_TEST(q15, inverse, 1U, TYPE_FROM_ABBREV(q15), TYPE_FROM_ABBREV(q15)); + +/*--------------------------------------------------------------------------------*/ +/* Collect all tests in a group */ +/*--------------------------------------------------------------------------------*/ + +JTEST_DEFINE_GROUP(rfft_tests) +{ + JTEST_TEST_CALL(arm_rfft_q31_forward_test); + JTEST_TEST_CALL(arm_rfft_q15_forward_test); + //JTEST_TEST_CALL(arm_rfft_f32_inverse_test); + JTEST_TEST_CALL(arm_rfft_q31_inverse_test); + JTEST_TEST_CALL(arm_rfft_q15_inverse_test); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/transform_test_group.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/transform_test_group.c new file mode 100644 index 0000000..f071068 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/transform_test_group.c @@ -0,0 +1,11 @@ +#include "jtest.h" +#include "transform_tests.h" + +JTEST_DEFINE_GROUP(transform_tests) +{ + JTEST_GROUP_CALL(cfft_tests); + JTEST_GROUP_CALL(cfft_family_tests); + JTEST_GROUP_CALL(rfft_tests); + JTEST_GROUP_CALL(rfft_fast_tests); + JTEST_GROUP_CALL(dct4_tests); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/transform_tests_common_data.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/transform_tests_common_data.c new file mode 100644 index 0000000..98987b3 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/transform_tests_common_data.c @@ -0,0 +1,3311 @@ +#include "transform_test_data.h" +#include "arm_const_structs.h" + +/*--------------------------------------------------------------------------------*/ +/* Input/Output Buffers */ +/*--------------------------------------------------------------------------------*/ + +float32_t transform_fft_output_fut[TRANSFORM_MAX_FFT_LEN * 2] = {0}; +float32_t transform_fft_output_ref[TRANSFORM_MAX_FFT_LEN * 2] = {0}; +float32_t transform_fft_input_fut[TRANSFORM_MAX_FFT_LEN * 2] = {0}; +float32_t transform_fft_input_ref[TRANSFORM_MAX_FFT_LEN * 2] = {0}; +float32_t transform_fft_output_f32_fut[TRANSFORM_MAX_FFT_LEN * 2] = {0}; +float32_t transform_fft_output_f32_ref[TRANSFORM_MAX_FFT_LEN * 2] = {0}; + +/* Some of the transform function modify their inputs in-place, so that they + * become the outputs. */ +float32_t * transform_fft_inplace_input_fut = transform_fft_output_fut; +float32_t * transform_fft_inplace_input_ref = transform_fft_output_ref; + +q31_t transform_fft_q31_inputs[TRANSFORM_MAX_FFT_LEN * 2] = +{ + 0xC14A5524, 0xCCABDA17, 0xAD6F5B56, 0xFDAFCE3B, 0xA9B226EB, + 0x41F6F6A, 0xA5CE38BF, 0x3A978AFA, 0xBA44B82A, 0x855C0F8, + 0x3D060524, 0x93D5E570, 0x97D7791D, 0xFFE0C38C, 0x26749841, + 0xC0A6EE54, 0x218EC386, 0x39FF3726, 0x8DC1F7CA, 0x702F2CF5, + 0xC1142FF1, 0xEC1476AB, 0x15F640DD, 0xE62CCE49, 0x3805DE7E, + 0xF70871FE, 0xCF8BD360, 0x8D19A8A0, 0xD764F821, 0xA58558CF, + 0x8C0CE04D, 0x50A46C19, 0x66D2370D, 0x50FA359A, 0xB646AE24, + 0x6CE00F5C, 0xE6D48948, 0xB55BD831, 0x3B72950A, 0x9EB69530, + 0x73394127, 0x773FA6F4, 0x9805A980, 0x838DE587, 0x9CF597F4, + 0xA2AD1691, 0xFA81A473, 0x7CDC7D7F, 0x4A5190D0, 0xED895BB9, + 0x8FD60F35, 0x1A21D530, 0xA0EB6DDA, 0xBDE6A516, 0x2501A3E1, + 0x5ED893C8, 0xE1E175B1, 0xACBBB2F3, 0xED350907, 0xDB140D7E, + 0xEEAE272D, 0xBE229841, 0xC18BFB88, 0xA6BB9B80, 0xBCF090E4, + 0x24DB166C, 0xF9AB7E42, 0x62DF28D1, 0xC7004665, 0xE3F56FC6, + 0x419E0C75, 0x46BE9F38, 0x2432B9B2, 0x758D83E0, 0xDCE12926, + 0x3F57CB74, 0x1F4458E2, 0xF1DD639, 0x83A1FB49, 0x173AFC76, + 0x86EF7531, 0x48D32F34, 0x7D3E3063, 0x8F2FB549, 0x5C314C9, + 0x18CBEB6D, 0xA6F8B697, 0x447B9E9C, 0x2E32BA33, 0xD074D715, + 0x81ACD746, 0xE55A4E04, 0x4891860F, 0x1DA3EB4F, 0xE0E6A27F, + 0x20BFDEB4, 0xD0B3A25B, 0x40C10544, 0xC15656C, 0x15405EAE, + 0x9858E3E1, 0xA36A9C4E, 0x88BD21F9, 0xAACF7A68, 0x773665E5, + 0xCEDFDF66, 0x617A9610, 0x524FC968, 0xC2D086CD, 0x5F008079, + 0x24DCA447, 0x6A4F5599, 0xB706CD4A, 0x1DE70608, 0xA33A2EE5, + 0x137E488E, 0x98061B7B, 0x4079D69D, 0xA4A897D5, 0xC4CEC8F5, + 0xD75F7883, 0x22406802, 0xF1AD70BB, 0x9D4ADD79, 0xBCBC7CE4, + 0xB358C0D8, 0x85792E47, 0xA7ADAC05, 0x3D19EEAB, 0x331AC0AF, + 0x33035831, 0x13D93987, 0xFC542094, 0x845F317E, 0xDDC4BF8B, + 0x1379E50C, 0x5C20193F, 0xFDD58298, 0x9D482B82, 0x4A6BE062, + 0xDC8A757B, 0x272917C1, 0x90E1EFBC, 0x355AD882, 0xE6F8EA35, + 0x604555A1, 0x7DFFFBB, 0xF58AE216, 0x9A11B463, 0xD3541BAD, + 0xA1576756, 0x483BED8D, 0x1F05AFCC, 0xCEA63DFB, 0x55B84677, + 0xFB2E04F2, 0x787AF96C, 0x84A12CD3, 0x460A9BD, 0x9DB22DD8, + 0x1A8C7F28, 0x861E452E, 0x932D3F78, 0x7652D852, 0x73357BBA, + 0xEBBB0A58, 0x62536AFA, 0x3F6B65EF, 0x6DC57B58, 0x9EB798CE, + 0xE6B0A740, 0xDFF68B47, 0x3247FB8F, 0xFFF3D302, 0xA9FD3E40, + 0x475A43D1, 0x6FF9528A, 0x2018A09D, 0x47E0F9C9, 0x4CF5F6D3, + 0x2807CE34, 0xDD6FD8ED, 0x234045D1, 0x51CEB5F9, 0x25297896, + 0x6443A0FE, 0x8F4449A9, 0xD4C3E1C6, 0xF01D52F1, 0x4E09C820, + 0xF18F0810, 0xE1548689, 0xF9DE5A1F, 0x5286DC23, 0x48AC3A4B, + 0xEA0C1BE0, 0xA1B785DB, 0x7086465D, 0x1CC10929, 0x1E1D716E, + 0xED231D4C, 0x2049D108, 0xB8FF9971, 0x949CF8D4, 0x441F1E8B, + 0xC3D95372, 0x69C324B4, 0xA10BFDC9, 0xC781DE78, 0x82476137, + 0xE163DDF, 0x390DEEC2, 0xAF68CE5B, 0x8E680ABD, 0x8223A615, + 0x92593380, 0x7B1465FE, 0x865AE957, 0x930F53EB, 0xED772EF7, + 0x10E916B6, 0xE3BCFA68, 0x2ACB80BB, 0xE51C5590, 0x994714B5, + 0xF30984EE, 0x59BBE1B4, 0xB4867DBC, 0xB91C706C, 0xBC16C218, + 0xA8931CD0, 0x129A66AB, 0x13171F4D, 0x62882872, 0x4B167FD4, + 0xE6902F4C, 0xFA794932, 0xD4B152C, 0xB0856EA9, 0x39466D55, + 0x3669E451, 0x8F5B9E8C, 0x877A3C6A, 0x51B956B4, 0x367EAD2A, + 0x9D2C662A, 0x78FB6880, 0x4E6D40B6, 0x4070EFDC, 0x4DF9679C, + 0x20306EDB, 0xE381AAE7, 0xA55DA748, 0x9B8B617B, 0x3E036FAD, + 0x84E4C4A7, 0xD5A3F517, 0x669BA988, 0x98FDDE8C, 0x67BD85CE, + 0x34BBB46C, 0x76994800, 0x85B9D8B6, 0x6DFA2FEF, 0x205DB5C, + 0x9F843C4C, 0x72721B52, 0x73EF6B86, 0x5FB98B61, 0xC323DDAC, + 0x31D424B4, 0xF68C0D7E, 0x162FAF9D, 0x7B2A7A99, 0xF9392693, + 0xC42D12C0, 0x8692A73E, 0xD9A1EE80, 0xDD956856, 0x44E7BDAC, + 0x8D874532, 0x5F5C9DD0, 0x5D167858, 0x8559FEA2, 0x9D821476, + 0xD9654ED2, 0x594C0DC7, 0x1A87B506, 0x3F693200, 0x7A651AB5, + 0xA0CCBC8A, 0x9F9E662C, 0x78EF631, 0x2A09DA0, 0xB088C72F, + 0x92EE0D42, 0x360DCD5F, 0xF333FE48, 0x8D63CC06, 0x233A8ACB, + 0x706651ED, 0x7AA5C079, 0x262239D1, 0x3EBBEBB6, 0xA25A4F3D, + 0x32581A06, 0x6E6FD780, 0x5773F7C7, 0x75ED1DDC, 0x90DF2D15, + 0xBC79A9BC, 0xB7175917, 0x354E381C, 0x762AADD7, 0xF643DAC1, + 0xF3BBF49E, 0xD2FECE7E, 0x6C8140F4, 0xD7694875, 0x92D30822, + 0xC742A7CF, 0xB792ED98, 0x121CFE24, 0xA04E1EE7, 0x58CE268, + 0x215A080, 0x316CB323, 0xFAB14A31, 0xE1C13C03, 0xFD8EF4F1, + 0xF3F446D0, 0x6C6CEA0A, 0xBBFDF9FB, 0x67242969, 0xBE55A4EB, + 0x8FF5534, 0x52F0DF1C, 0x9710ADE3, 0xD40F4A21, 0x7984E8E7, + 0x419545EB, 0x993F7880, 0xAB246B20, 0x408AABC4, 0xCBF6EA49, + 0xC0894C55, 0x4CAA6398, 0xA47856E9, 0xAF2AE47D, 0x22F55D33, + 0xF0D37915, 0xD0634C72, 0xD983671, 0x2BCC5AF8, 0x9A77D48, + 0xC11B5CFA, 0xF107CD7E, 0x3A6B3593, 0xE1425F05, 0x6271812A, + 0x5B838310, 0xBD8418CA, 0x10A58792, 0x239F7137, 0xA13D5071, + 0x7F9930D4, 0xA462664F, 0x54180F8E, 0x291585BA, 0xE586B87A, + 0x144B2C12, 0x98E425C7, 0xBAA4B373, 0x18F0D03C, 0x99462AC0, + 0xD8B4D2EF, 0x72473895, 0xA6BF5435, 0xEDAD53B, 0xE0912FA6, + 0x5C33F331, 0x3D93CD7, 0x4D03D752, 0x20699929, 0xB89962F9, + 0x36E781E9, 0xF58B642C, 0x5FCA69E3, 0x5960A7F4, 0xAD5AAFD0, + 0xDF18324A, 0x3DB1E5AA, 0x76BA3876, 0x1BC29AF6, 0xBCC18841, + 0x73A60174, 0x625BFF58, 0x67C57724, 0x4458E53C, 0xE157B095, + 0x2B370837, 0x83DF6CE3, 0xDD08EEFA, 0x3F52A7C2, 0x191B4785, + 0x60843D82, 0xB0DE11F1, 0x105EA26C, 0x6E1C7AA2, 0x47AADD14, + 0xB6676D03, 0x3B8D4DF6, 0x737A694, 0x409521DC, 0x744206A, + 0xC722023F, 0x2BE4EAD5, 0x63E11D76, 0xCA4A09AB, 0x5CF2D2B9, + 0x31586916, 0xCDFD7D84, 0xB203F634, 0xAD7329D4, 0xC524582F, + 0x2E53E6C1, 0xBB0E019B, 0xB8538C6A, 0x6A2542D, 0x8A6A00E5, + 0x119725CC, 0x5406D347, 0x1B6FFAF1, 0xECCF71F1, 0x981117F2, + 0x7167CA76, 0x74F4B880, 0x77A55F47, 0x59EADB62, 0x4A331D95, + 0xBCBBA76F, 0xA45C4D50, 0xC718D5, 0x87CE05D1, 0x60D47AD5, + 0xA5CA9C40, 0xB0061766, 0xE69B39DF, 0xBD5F1320, 0x9930EAD3, + 0xA8B38325, 0x8DD090F, 0x6A6EEF37, 0x2DF16F66, 0xAB514C7E, + 0x31109C58, 0xFD48C7FC, 0x515341CA, 0x77AB8EA6, 0x41328DAF, + 0xBAF8D31E, 0xA4B31611, 0xED37F331, 0x7A832A22, 0xA22591C7, + 0x722D1F89, 0x3B19CF18, 0x261B8A4D, 0xC3F6F6DB, 0xCF8CED61, + 0x990FA250, 0xA02E72A9, 0x560DCEA2, 0xB08E67B4, 0x3674E663, + 0x97CC3852, 0xA7EB2EAC, 0xFFDE0AA8, 0xA64719A, 0x23269EDD, + 0x3C0B339E, 0x86284D40, 0x48D82ECB, 0xA4D4CCF8, 0x43631B91, + 0x4BF0C248, 0xB6497B9B, 0x6827BC58, 0xE30B7AF9, 0xA0CCBF26, + 0x6C3B7B71, 0xD744B3ED, 0xFA25D2F6, 0x4CDE642D, 0xD65B8142, + 0xA6F9207F, 0xE7A207BE, 0xDB506684, 0x44DA4780, 0x9175EA0C, + 0x156104AF, 0x4155E1B0, 0x6E3A6886, 0x9DBA1EA2, 0x5423D9C8, + 0xCC024E22, 0x758F852A, 0x1DD6395, 0x2D19CBAD, 0xE164F5A1, + 0xC2084602, 0x89C274AD, 0x13CB5562, 0xD7FE2D5B, 0xE07A4EE5, + 0x1672BA91, 0x4F624CCF, 0x2E5EA4A3, 0x28FEEFAF, 0xBDDA6EF4, + 0x32AFD40C, 0x99A5FB3B, 0xDD1D73A3, 0xA342CB3E, 0xA78445F5, + 0x53979C3B, 0x427D7943, 0x5221B58C, 0xA6CE9A5E, 0xFB50ECA4, + 0xBB86E36E, 0x60839F6D, 0xC5E1C2F3, 0xA1B7FB04, 0xFBB65E0C, + 0x78B80F5E, 0xFD8D972B, 0x3BF3BA90, 0x2D572D9, 0x2B5BC920, + 0xB6A0DE01, 0xD274D306, 0xC7C6C855, 0x9CAA669B, 0xB04AA641, + 0x4D6B1760, 0x3E17ED79, 0xD23241B0, 0xA4A6F957, 0xCBDE76AF, + 0x4E5F9493, 0x4C215DA5, 0x33A052B, 0x1A4D80C2, 0x40AEEBCA, + 0x390D106B, 0xE9E8E018, 0x5AF3D6CF, 0xE35E1D4, 0xC4FB1C6, + 0x14B6299B, 0x8D2E25F0, 0xCCBF932A, 0xC5AC18B6, 0x2227567D, + 0x86B5CE2F, 0x26344534, 0x22C515EC, 0x2442B70D, 0xEC3721C6, + 0x34EF687D, 0x9C06323A, 0xEAF3EA60, 0x60396F52, 0xEAE78AA1, + 0xC9D06CBC, 0x6F95F6C8, 0x584CC258, 0xBA9A27BB, 0x66DF8D47, + 0x9D4804EA, 0x57DD9E67, 0xF89C7895, 0xF5336111, 0x25C122C8, + 0x62742114, 0xCFBF6D26, 0xBF9F6482, 0xE6F02CD9, 0x11083202, + 0xC99E2618, 0x7EBC9351, 0x440112F1, 0xC9DFFBC1, 0x3BF4DC25, + 0xB1BA7FA0, 0x61AF9AED, 0x6B1F7D29, 0xAD865294, 0xE3E01129, + 0x7E9E77A5, 0x100435D7, 0x9FE3A71, 0x88597C81, 0x722849FA, + 0x31C5A0AF, 0xFBA178DC, 0x7F102D31, 0x5CA07864, 0x950E6F98, + 0x82C34882, 0x5D041F11, 0x8C613C57, 0xD398CFD1, 0x426F38AD, + 0x5599AB1D, 0xFAFA078D, 0xAB25B413, 0xD94B32CF, 0xB288FE38, + 0x2893BB46, 0x9A0B4168, 0xA91BCA94, 0x653A5E8D, 0x2174EBBE, + 0xDEFE6415, 0x30DA429C, 0xD0C5E40C, 0xB4719AA4, 0xD29CE7A6, + 0x905957CD, 0xCD287499, 0x83CA0AA7, 0xA8385832, 0x25A0CA02, + 0xC20D47A4, 0xB562F556, 0x4BC19E4C, 0xD9E215C7, 0x27E838B4, + 0xC58612F4, 0xA2827F6F, 0xC49DCDBA, 0x679B7362, 0x4E495845, + 0xCFD2F0D1, 0x395E76A0, 0x375A655E, 0x92E2058F, 0x73F9F0CA, + 0x61EFF3B3, 0x51FFD362, 0xE7410345, 0x7FDA8B3B, 0xA219E2E8, + 0x17ABE543, 0x26557412, 0x4B30084D, 0xA68E191D, 0xFE0D93DF, + 0x73EF127D, 0x4DECDDB1, 0x77FAF45F, 0xD6002898, 0x92DD0A40, + 0x157F6DDF, 0xC2A55F8E, 0x4359F924, 0xFB630C3F, 0x338B6B58, + 0xB2945F75, 0x4FA23A0E, 0x836EB8C0, 0xB3B18FD, 0x86114337, + 0x24668ACB, 0x99BB82F0, 0x924C8A47, 0xBA959701, 0x81155ABF, + 0x8C612D71, 0x36074CA7, 0xD1668C41, 0xE35F58C7, 0x7FC2802D, + 0x8E6A7CF3, 0x65B07D07, 0x815F6A6B, 0x791BF0DD, 0x6E47D719, + 0xC24394C7, 0xE84A6EB, 0xF194AFEE, 0x464A2F52, 0x677579FD, + 0xEBA775AE, 0x1F6EEFF, 0x9A795237, 0x78D9D45F, 0x9D0B344D, + 0xBBD34AB7, 0x2F85B12A, 0x16C5C2AD, 0x3990985D, 0x88DF3351, + 0x82811AA5, 0x6D351F41, 0x4066A69D, 0x86B660BF, 0x6EDB4768, + 0xDDD78CF0, 0xB5D74F6E, 0xE89E220C, 0x91439687, 0x947CC9C9, + 0x3857E2BD, 0x302F8AE4, 0x1DABE7F8, 0x4832D6C9, 0x37D58FCB, + 0x4EA8A711, 0xCD7BAC98, 0x19DBF8BC, 0xD8DE8DC2, 0xEAFF7E7B, + 0xB7629C93, 0x792C6E19, 0xF7009192, 0xFF88439D, 0x2E196A66, + 0xEC71B78C, 0xEAF4BB3A, 0x7C16225E, 0x668F337, 0xCBEE1608, + 0x6D5B5552, 0x345DC590, 0x681209CC, 0x7B24A819, 0xD08A1416, + 0x99888FE3, 0x9FC7288A, 0x24BD8502, 0xEA1D9678, 0x20EECA0, + 0x59BEA057, 0x5ADE91EB, 0xDEA8E49D, 0xFA200E6F, 0x9149C81D, + 0xF2281E93, 0x8A5B0451, 0x67312D58, 0xE3B849F1, 0xD2217960, + 0x7CDF59F3, 0x33C775C0, 0x9EBA8799, 0x7DF9506, 0xB4E96110, + 0xB8FCF3E3, 0xDEA059B2, 0x8229B6EA, 0x316486F6, 0x43919185, + 0x6C0D90F3, 0x1C6F3DF8, 0x38DB92A9, 0x5CD41244, 0x2C9F0A7B, + 0xDF4A315F, 0xF7CE9C66, 0x4C800860, 0x318D53E0, 0xF105C20D, + 0xD753E1F2, 0x750810BA, 0xA17ECCA5, 0x2010140, 0x4D884763, + 0xC2BB0DA7, 0xB2D5BA74, 0x141CECD4, 0x887FDFC3, 0xC64B53, + 0x2D2A85F6, 0x15532B45, 0x5D5CBCE1, 0xBEB9A16A, 0xA214611B, + 0x9FC5AC5F, 0x11AE5DD7, 0xA0B9A5A9, 0xFC648AF4, 0x740009AC, + 0xED0E0321, 0xB8E6A61, 0x8910C544, 0xC74F26C8, 0x9525CCF3, + 0xB41AEB59, 0xE61984CE, 0x598B2197, 0xA412E59D, 0xE1976DD4, + 0xB29BBE16, 0x88FD9FB0, 0xB04006F3, 0xB45E309, 0xD5CC15F1, + 0xD9DAF630, 0xDC809335, 0x803ED52, 0xB537F5A5, 0xA994F6EB, + 0xF5288568, 0xF66FD264, 0x2EA2B3A6, 0x647619F3, 0xFFB38C7A, + 0x1BC03B9, 0xB6BC3061, 0xBF30596E, 0xBE2AD27B, 0x8AC04220, + 0x641979A3, 0x9ECCBB89, 0xA144FBC1, 0x4E8FAE26, 0x8C5A9D90, + 0x299ED467, 0xD7C9C7E3, 0x1D4865ED, 0x76F31C3D, 0xCEE81CDF, + 0xB479195E, 0x6FFB3AE1, 0xDC8A398, 0x300F7364, 0xC7940AFA, + 0x3B85BE3E, 0xD98CC40D, 0xA24A3D89, 0x3A674204, 0x22888A38, + 0x2E77F2D, 0xA2841C9C, 0xCF0689C3, 0x9FE98922, 0x89335017, + 0x2D6B69A7, 0xFEDB63F9, 0x899AF4EF, 0x9F9F9B40, 0xA4BE97E8, + 0xA51DAF7A, 0x16AC50D3, 0xA8D7ED6, 0xED193443, 0x7615EF1B, + 0xB0DF6A4E, 0x64FFE794, 0xE3DB2C9A, 0x7435B022, 0x556E825C, + 0x23802AF9, 0xC25098A4, 0xE75A18BB, 0x70B2A7B9, 0x7FB81BF, + 0x63EF910, 0x6C669591, 0x6574DD2B, 0xCF6E379D, 0xD2B3AFAC, + 0x1E6A1101, 0x1DE22385, 0x2338191F, 0xC69704B6, 0xCBABC599, + 0x54EB4809, 0x7839BE6D, 0xD50017DD, 0x39B1A0E1, 0x288D52D3, + 0x2D52668C, 0x20D22A68, 0x4E1207D1, 0x3FCC0EFE, 0x47F3FE64, + 0x25177A90, 0xB4BFDD4D, 0xDA8DBDCE, 0x6F7275A8, 0x6BEAA655, + 0xAA1810FC, 0xE4DB593A, 0x8A4D4BC0, 0x2C402E93, 0xF1C0F7F9, + 0x6F0CC577, 0x70412414, 0x752F9DC1, 0xD82E38EA, 0xAC455F7B, + 0x4DCD4EDB, 0x92BC2696, 0xFB03F135, 0x4FCA1F8C, 0xBD5E75F6, + 0x502F41B0, 0x3616D3F1, 0x2E5B8E31, 0x2026EB19, 0x57E783D7, + 0x467BBE00, 0x4703ABA3, 0x1F776B9C, 0xE2570A84, 0xFEC7DB48, + 0x1BD5012, 0xFD0A2D5D, 0x7FCC29F2, 0x291304B6, 0x99D5D8ED, + 0xC7551C8, 0xFD12F38F, 0xBADE8892, 0xDF749997, 0xA5DAE2F, + 0x2B9FA269, 0x5C13CFED, 0x15E9A399, 0x54437F4E, 0xA72DB2AB, + 0x56186AA1, 0xFE4DB55C, 0xA34D7836, 0x2A879760, 0xC63FA94, + 0xAC18B207, 0x5FC78B3, 0x7F10621E, 0xA769E6B2, 0xEC9F4A11, + 0xCE3F982C, 0x62BA2EF5, 0xA5F239CD, 0x73D63FED, 0xE36E9F5E, + 0x8AC1DA0E, 0x3F3DB3EB, 0x738326EA, 0x35C366B1, 0xCD476E86, + 0x82F6B208, 0xF11A9FC1, 0x426AC396, 0x7E4D1B93, 0x75E4EDB7, + 0xAF3C44A7, 0x51A5EF5C, 0xFAD2463D, 0x8A5639CA, 0xC995AC78, + 0xCC4BE4F6, 0x3AFE7F8D, 0x66993D04, 0x4386FF37, 0xCBC1C6C2, + 0x55A8F5EC, 0xE81A9A75, 0x30A67E1B, 0x4A4A7D0C, 0x20F7F993, + 0x1891805, 0x738976AD, 0xD426E7D6, 0x3C5CEEBF, 0x4499187F, + 0xABF17C97, 0x447C317F, 0x68D8419C, 0x7AAB6456, 0x421BCF29, + 0xF6740F9C, 0x8916BB8D, 0x3D72AAB, 0x9AD54DD7, 0x7549C6EE, + 0x7317342B, 0xA18546D4, 0x1056BDA7, 0x54BBCCCE, 0x8CE63E46, + 0x5D146234, 0x33BE6C63, 0xB250C4E5, 0x89D72335, 0x87C36BA, + 0xB65530CC, 0x2DFAC48C, 0x1663D16F, 0x59B80AA, 0x950274EA, + 0x92532D4A, 0x3CEF802D, 0x492FBDA5, 0xA63A2574, 0xEF8005C2, + 0x94A18651, 0xAF627ABA, 0x6829B238, 0xA698F646, 0xD2598516, + 0x10144D36, 0xD9B1D1B9, 0xAB2ACF05, 0x5395B699, 0xA7851C75, + 0x1806C6F3, 0xAE970306, 0x3284B145, 0x98F4FE8F, 0xECDD35CC, + 0xDDC1EE0E, 0xC4848865, 0x925826BD, 0x4078BE39, 0x68A8561A, + 0x323045DC, 0xA933B37F, 0xBA2AEE2E, 0x4F24F65D, 0x349EE246, + 0xF97B9D0E, 0x46DC5759, 0x4529F425, 0x80D17B42, 0x8E16F709, + 0x1B42206A, 0x4934A526, 0x391BB6DE, 0xB52EF45C, 0x26C30290, + 0xCBA23CAA, 0xA501A8C3, 0xD922C4F8, 0xE8824E53, 0x6F4255DC, + 0x5960B544, 0x58BC69D6, 0xCA936323, 0xFDDF053C, 0xC2E002D6, + 0x7D750755, 0x8A3F9CD1, 0x35F8F6F8, 0xFB7BD154, 0x65CFF94F, + 0x390A58DD, 0xD97C4093, 0x501CA2A3, 0x8EA5DEBC, 0xCA93461F, + 0xE02D984C, 0x126F8517, 0x39FDD887, 0x46241AE9, 0x777E854D, + 0xE2B36349, 0x58E3FA9F, 0x971DEF1E, 0x8E156228, 0xC0E14E9, + 0xA9A01BE6, 0xB318C990, 0x971680D6, 0xA1F359CE, 0x487E23F4, + 0x7DE465B0, 0x4E4C905E, 0x2A652959, 0x116FF167, 0x5C74AAB9, + 0x4FEFC920, 0x28DF4EB8, 0x29EBF45A, 0x1E350CF6, 0x7134F224, + 0x22CCF1B6, 0x3890ACCD, 0x9BC304F0, 0x7A37B14E, 0xF3724F9C, + 0xDAC493BE, 0x504692EB, 0x82A56D75, 0x42BC73F0, 0xADA92177, + 0x2D9D9FD2, 0x41D874F, 0xEFCFD8FE, 0x8E83A5A2, 0xB84AF0DA, + 0x65F9B035, 0x6DF4EEE0, 0x7D403714, 0x1CCB8B3A, 0x25B30F14, + 0x5384B044, 0xD21FB429, 0x2C407A2, 0x88622917, 0x92D49C25, + 0x845AA406, 0x532D7675, 0xC0B7713D, 0x30E6933B, 0xD270DE3B, + 0x78771A87, 0x1949A28, 0xAEC00040, 0x10A092F4, 0xBD9D5066, + 0xDE166CB7, 0xE8ECE4D3, 0x867417C9, 0xCF0657E4, 0xD7D550F7, + 0xCD472B6D, 0x8CD0F002, 0xD7D47B7C, 0xA2E5475F, 0x2B66B40, + 0x397A7C9F, 0x6C4BC024, 0x9FDA402, 0xD981917E, 0xA3A6C8E, + 0xC9A42042, 0xCF0D1D5B, 0x1A96C11B, 0x9271030B, 0x4BD5D13C, + 0xCDA08C03, 0x1E4B3256, 0xDBB263E, 0x94B1E758, 0x5CF0232F, + 0xC76F252E, 0x27FF7F55, 0xA55DC287, 0x72886B75, 0x38AA73C2, + 0xA5759CFB, 0xF0A75C8C, 0x7059CBE3, 0x6519FBE2, 0x8C3B4162, + 0x5A19A4DE, 0x9D93E753, 0xA9EDF8B5, 0xD68126CD, 0xEA6A7399, + 0xA73005B4, 0x45BC5168, 0xABD166BA, 0x4D0CC0DF, 0xE1376FF9, + 0x393FB309, 0xE995744E, 0xD5EF71BE, 0x66C2BF35, 0x88D62A85, + 0x14121E08, 0x7006CE98, 0x7F0A7076, 0x7DB9C751, 0xDC7056CD, + 0xC1517CD, 0x65BCE88, 0x1B0F1E71, 0x54C2DA11, 0x101BFDD8, + 0x28096AAD, 0xC365859F, 0xACE13396, 0x7CB432BC, 0xB19EA011, + 0xAD9BC7D2, 0x3AF387B1, 0xCCE30470, 0x5335FC46, 0x40D13C16, + 0xD548B4CC, 0xC476A7BD, 0x66BC0663, 0xB7C6960F, 0x12D1E821, + 0x9A536C48, 0x42641630, 0x740C9A48, 0xF61664E8, 0x3B11E69A, + 0xBD79E1F1, 0x3F930B7D, 0xD98B085D, 0x2151962F, 0xD4D7F80E, + 0x88975123, 0x5302989, 0x12F5CA2B, 0x37C29573, 0xD1D2A3A6, + 0x46DA55DA, 0x2EC8C098, 0x802A42DF, 0xD07A11E5, 0xD5BF4B16, + 0x171BCB96, 0xB5843001, 0x57BDCAA7, 0xDDD36F33, 0x633D0AA0, + 0x313B7064, 0x68BD30CE, 0xC986B6C3, 0x2271824F, 0x9951E552, + 0x15939472, 0xDC668F83, 0x1D98A441, 0xA4A1676, 0x631C444B, + 0x6EB61C7C, 0x8EEE0B5E, 0x23F82C1F, 0x6C4B53C1, 0x41116D6, + 0xEBC1627A, 0xC8839049, 0x7F07A8F6, 0xD1F74661, 0x7D9892DD, + 0xF010EC90, 0x37C8A4F4, 0x6ABA986E, 0x68B1E4F6, 0x8066EE05, + 0x5E964158, 0x88D477A6, 0x776CF1E1, 0xB7AB3B60, 0x183D58C0, + 0xA7E13F2F, 0xDD435AD0, 0xF37DF46E, 0xD3F3F774, 0xB6B24A9A, + 0xC097D9F2, 0x54EE718C, 0x4469BDB, 0x4F20DAC, 0xB4002AD5, + 0x2E7AB56, 0xCDB4B18C, 0xF2ACE62D, 0x54BD40DE, 0x46DCCA2, + 0x5B7F32F9, 0xA8CB257D, 0xB138C149, 0x71474D19, 0x6F71C293, + 0xD88FBC7D, 0x9E0A7F86, 0x14B92605, 0x1CBACDC, 0x29159263, + 0xBB719E18, 0xD41B37EE, 0xA236E27E, 0xE916BAE3, 0xED34D9DA, + 0xFDDE09B6, 0x4FE72C56, 0x16927460, 0x8CFFF9A, 0xA9465741, + 0x2B1CD6E0, 0x6BA277FD, 0xE06F70EC, 0x7CB2715, 0xFEDC13C8, + 0x7049632E, 0xC6448831, 0xF72CA3A, 0x9B2BE231, 0xC16A8438, + 0x948EB7E, 0x64041803, 0x82A43295, 0x226D95CE, 0x84AFC1EE, + 0xB2EF3B82, 0xAC18A45C, 0x74DE3ADE, 0xD0E6FAD4, 0xE10C242E, + 0x797DF7BA, 0x812CD7B8, 0xED45B681, 0x8F6CCDE8, 0xC2376DFF, + 0xCABE35D6, 0xD450395B, 0x13493CE3, 0x870E1BF5, 0x7B0BF341, + 0xEBD572F2, 0xAE22B3F1, 0x7ED22DF8, 0xEFE826ED, 0xF147F4BD, + 0xA12DA6F2, 0xF3871967, 0xE4423B70, 0x298472D9, 0x45E03E3D, + 0x2BE705AC, 0x41E3AE6C, 0xA29DF92C, 0x54B33739, 0x8EA8F7A9, + 0xDEFF7BC9, 0x77D06961, 0x71981BA1, 0xBA5A5647, 0x4A8E0E2E, + 0x9F519F5D, 0x31BBA940, 0x3D3A0532, 0x7090F0AD, 0x8B47D658, + 0x8D198BAF, 0x9ED929B6, 0x323BB81, 0x97210404, 0x7B8790DA, + 0xD8438C25, 0xDFBB1C93, 0x2C3F415B, 0x14738C42, 0xB46C2C7A, + 0xA3627CAB, 0xFC540D08, 0xE8227979, 0x672B87FE, 0xB257C949, + 0x9C2B31FF, 0x97AAACA8, 0xC662B448, 0x5BFEFC7C, 0xC2FDEDDE, + 0xAD306CED, 0x639A2576, 0x9ECC1378, 0xA72D71B3, 0x94E11CDB, + 0x8BF14832, 0x945C1728, 0x49AE595B, 0x526DD500, 0x40A7D344, + 0x8EB1DA34, 0x731E17C5, 0xA7CF41A4, 0xCB068104, 0xC842B8E, + 0x7F5733E1, 0xAC9CB3B, 0x2E3F58C0, 0xFD8BC4F, 0xFFBCBBAA, + 0x620248F9, 0x27AC344D, 0xF2E5958B, 0x773EBC3A, 0xEA6078F7, + 0x6B32D1D7, 0xC00DF984, 0xE73C86AA, 0x712026DB, 0x2CE271FF, + 0x38578573, 0x816605D0, 0x673509A9, 0x8D693AC8, 0x2533C371, + 0x6783E269, 0xC5731F9, 0xF2A8041E, 0xBB3C008F, 0x2B290D9A, + 0x122A4BA4, 0x645A69B, 0xB86CC256, 0x9369B8C3, 0x90CF4CEB, + 0x573005D0, 0x4F7DB793, 0xD6AC972E, 0x178BFB66, 0xC430DCEE, + 0xD1A8138B, 0xBF6EC4C8, 0x693E6FAF, 0x54119B44, 0x9C904669, + 0x4D95F608, 0xDB59E550, 0xD85DDBBC, 0xD15818AE, 0x680778D8, + 0x3B67A234, 0xEBE9DAF3, 0xEB8E049B, 0xDD9E0EB8, 0x5D4FB1FB, + 0xCEA62C1C, 0x948AF719, 0xA7E58E36, 0x800EAD97, 0xCD895A65, + 0x72E63F92, 0xA9A82DD3, 0x8CC07793, 0xE70EBE82, 0x1F69534, + 0xAB727A31, 0x1582EF9, 0x7247F677, 0x5FFD7E2C, 0x950EA9DF, + 0xFF38A172, 0xDD75DB84, 0x3A416207, 0xD6A23DA7, 0x3BBE70D0, + 0x538C25CA, 0x2958DF9, 0xD7B9C83E, 0x61F35964, 0x1E05B36, + 0xDD57CDCF, 0x997335B, 0x3A65762A, 0xC5836CD0, 0x9EF2B7F1, + 0x5094196, 0x6949A654, 0xB7FD3E5D, 0x6070C271, 0x30364C38, + 0xDCAFFFA5, 0xCD4ED281, 0x9865FE7C, 0x75F665AD, 0x6ABADB10, + 0xAB43129, 0x26B7A5B8, 0xA321DDBD, 0x467AD732, 0x153A1AE, + 0xAD6B1842, 0xBE19B6BE, 0xC1E22C82, 0x73372EA5, 0xF9EF4AD7, + 0x24C81977, 0xD8451807, 0xCD10ADC8, 0x8FBD95E2, 0xE0789969, + 0xC77A80F2, 0xF1165BCE, 0x3488C653, 0x16F3E378, 0x8D71B29A, + 0x628EC98A, 0x40963234, 0xF918E028, 0x9A584D33, 0xC174E2FE, + 0x417C5145, 0x1C751175, 0xB21E0C12, 0x30218ECC, 0x9D7731BD, + 0xA07DBA0F, 0xE7504D39, 0x3E37F16B, 0xD3BAB050, 0x6F3DE64, + 0x1998A7BA, 0xA61A6D07, 0x424FBED7, 0xCD6B3236, 0x68E71248, + 0x58CC3DFB, 0x584FA4F5, 0xFFE8E2BD, 0x9F0E3D75, 0x788DD779, + 0x978ED891, 0x7E1BFFC8, 0xB812A1C9, 0x5CCC1A32, 0xF1A47219, + 0xD6BA6E71, 0xAFA86EB5, 0x28D128E2, 0x9EDD53B, 0x9AAB7E9C, + 0x493B76F2, 0x31C5C89, 0xCE5FC3B6, 0x974CC3F5, 0xCBBD90FB, + 0x61DE988E, 0x99B927CB, 0x972EFCCD, 0x2719AD6, 0xE06E4B29, + 0x48215B1, 0x37EDE8E4, 0xABF9F87F, 0x8BC1C626, 0x5B19EC05, + 0x212A2AE1, 0x28446975, 0x20D04126, 0xFC453267, 0x967D9524, + 0xDF1CDF8, 0xFB17DCA3, 0x11E68AC6, 0x3AD7D667, 0xD133EF43, + 0x5EC41DA3, 0x587AA639, 0x17ADAE3, 0x816DF77A, 0x37D0726A, + 0x49DC33D9, 0x6C9737E, 0xA6A2F950, 0xEC5F352C, 0x50D1E06D, + 0xC10009A6, 0x2F70F8BE, 0x382269B1, 0x4C29E7CB, 0xBD474FF3, + 0xD19A4F6, 0xC3CCE458, 0xE09B348, 0xD15A0DC5, 0x1C10D20E, + 0x4AFDED15, 0x3C109DC1, 0xD8C117F5, 0xB501DDF5, 0x39C92B5F, + 0xE76FCA13, 0x76DBAA1B, 0xB0730EBF, 0x67DD1FBC, 0xD8B87AB6, + 0xA826225B, 0xAB2F7089, 0x499FA36D, 0xF26455B, 0xDC79F8EF, + 0x987E765E, 0xA13E60C7, 0x500C7803, 0x492C871D, 0x970DE4EE, + 0xD1423DC1, 0xB66048A3, 0x804895AB, 0xC079A15F, 0x5E6FD682, + 0xE936476E, 0x8DECE38F, 0x76A011D, 0x53575B91, 0xB263D36A, + 0x8F2624C1, 0x26B34937, 0x75A7EC2F, 0xE33ED24, 0xBF1BE7C7, + 0x8D6BA785, 0x1D9FE802, 0xB8F4EC20, 0xD5C714B2, 0xC1326D06, + 0xFCA78B3F, 0xC0065015, 0xA4B9F286, 0x53F92A8B, 0xF4B02DBB, + 0xEC47E64C, 0xA29FFB12, 0xBA94FFB2, 0xB6980EB2, 0x7415C83F, + 0x93F91A24, 0x4C6F7615, 0x34431174, 0xC7D63B4, 0xB1599158, + 0xA3A01FCE, 0xBD477764, 0x6B16EC41, 0x772D8BF5, 0x90F0A785, + 0x8F72672C, 0x7AD22CDC, 0x70824998, 0x1BED16D5, 0x596E84FF, + 0x48B5B4F4, 0xB20D0B81, 0xF00F7AFF, 0x80F618DA, 0xD10AFE11, + 0xA8EA3109, 0x91BA5E43, 0x31345A01, 0xEB0EF0F8, 0xCC6E7FB5, + 0x3348AE52, 0xEBB124D9, 0x447E58B1, 0xF2A3D592, 0x7F3EE5D8, + 0xD3D7B836, 0x9C98DCD4, 0x27F0B7A0, 0xA9655FD9, 0xAB48E5F8, + 0x7F996D8E, 0xAC13B08B, 0x2530AC6D, 0xAA542552, 0xD4E6B42A, + 0x6432AA64, 0xEAC84F76, 0x41D5F959, 0xCDE91DDF, 0xA0AA485A, + 0x6453698, 0x277C18A4, 0x161A497, 0x66FECAE2, 0x1B64683, + 0x948DD228, 0x1F3C5950, 0xFFC271FB, 0x15C4DF12, 0x7C78252B, + 0x9D4EBB89, 0xE6FA1D49, 0x6B032100, 0xB65DD3CC, 0x106BC9B5, + 0xE0223D45, 0xF7779B03, 0x4B0EA0C2, 0x3CB5AAF2, 0x9A458E5F, + 0x524090ED, 0x3BB1F18F, 0xB4DD065E, 0xA8F13E4F, 0xC4949ABB, + 0xD8142D31, 0x99069DE6, 0x989D2A16, 0xC72D929, 0xA2AC5754, + 0x7E29B714, 0x6E25C15F, 0xE8777078, 0x467DDCEA, 0xF94B2ACB, + 0xDF429476, 0x69AE316, 0x363C664D, 0x85D6AA1E, 0xD727E39E, + 0x5AF440A3, 0x2F0BB16D, 0x461D52D, 0x610559B6, 0xC28066D9, + 0x3C13AE61, 0xA965B865, 0x2BCE3D4A, 0x361C4848, 0x46B94657, + 0xF2AE634D, 0xD7FD4B8B, 0x70C175D8, 0x33128DF, 0xB9718A3B, + 0x8EF80C0F, 0xAB12E738, 0x124B8055, 0x43448325, 0x9F05E427, + 0xA0A9F843, 0x57A9A3FA, 0x492EEA32, 0xE73D2B18, 0xF3113C2C, + 0x2BA9B42D, 0xFF0B320, 0x3A18CD71, 0x59804367, 0xC37F9B87, + 0xB8A990, 0xAFE9F267, 0x1892892B, 0x25B9C66D, 0x52D4056E, + 0xCC1508CA, 0xAD213DB2, 0x8B43F743, 0xAA9705AD, 0x9BC756A2, + 0x43F42526, 0x596FEE87, 0x2B8AFF32, 0x46DEDB48, 0xBF06317C, + 0x876D4CF2, 0x16951456, 0x2B051AFD, 0xFD093E9D, 0x2F113180, + 0x77BFC4C0, 0x29200C52, 0x182D384E, 0x54AE29E0, 0xF90961E8, + 0x6072B8F8, 0x3D346F4E, 0x9AA5DBA4, 0xE5E22EC6, 0x392170DA, + 0x40939B9B, 0x65B89151, 0xC54AB94, 0xAD7280BC, 0xA3D4395E, + 0x3B5754D2, 0x9E77A6A2, 0x9A737F56, 0x9B2D432D, 0x8FDDA7E7, + 0x5958516E, 0x7F52CD74, 0xC1761A50, 0x2B80C01F, 0x5AA99F54, + 0x36FAA395, 0x5DB4B3AD, 0x82024C73, 0x988CEFE0, 0xB44498C0, + 0xF9561A4, 0x280470E6, 0x6966F3A0, 0x47E374F4, 0xF00F4CFF, + 0xBC5C4DB2, 0xE287924F, 0x1ED57369, 0x484FE06D, 0xE92E6564, + 0x7429DAD2, 0x1473AF49, 0x9619E0CD, 0xE6EC2B63, 0xF7A983B5, + 0xEC43C28F, 0x4C98EBE7, 0xA61FDF89, 0xA867E5ED, 0x1088A7C, + 0xCF1CEAE8, 0x223AA207, 0x686F4F7B, 0xEBB013E1, 0xDDC01886, + 0x77478D4E, 0x2FFCEAEB, 0xFCA58846, 0x1208668E, 0x32F8252, + 0x65C9F3ED, 0xC7584B2F, 0xF3EB26B2, 0x90890270, 0x5D97ED04, + 0xF5B5B18A, 0xCF415DF9, 0x4CF4683F, 0xE2E3F29F, 0x850E4BEF, + 0xDBABF6E2, 0xBD183286, 0x2F36215C, 0xD8CA1DD3, 0x4309CC6F, + 0x9FA52446, 0xBD94348E, 0x8693D9B6, 0x61E880C2, 0xA1851D5E, + 0xAAB94F80, 0xF8919C00, 0x74D82ECA, 0x4466A1B6, 0xA0A98E8C, + 0x95B6D1D, 0xE5393A4C, 0x5A40CFFB, 0x67013370, 0x571B0FDA, + 0x9E7E805C, 0x15E32653, 0x2CFE7902, 0xA02E0906, 0xA8883783, + 0x7A68B719, 0x3402833A, 0x68BFD324, 0xE0B43DA3, 0xF9DB0F, + 0xC9510610, 0x690D30B, 0xE79AB417, 0xC917E4C0, 0x7B05CE55, + 0xE116EFDB, 0x69E3B158, 0xF91ED58D, 0x1832D16A, 0x91F4EA17, + 0x3D24C408, 0x76A2C6D0, 0x99B19825, 0x2BF52475, 0xAD49289D, + 0x66238CD7, 0xAC1571F5, 0xA2EABC02, 0x889337AE, 0x3219AFFB, + 0x104B8779, 0x810488A8, 0xAC35416A, 0x2C6DEF85, 0x2ED109F5, + 0xCC8C6732, 0x97CD8E90, 0x339F3E81, 0x91486206, 0x2708D41D, + 0x1F2B19A7, 0x51A60303, 0x5E90E440, 0xB63092C8, 0xF1031823, + 0x971A06, 0xB624F6A2, 0x58AC0181, 0xA983D599, 0xA776D877, + 0xB727FE1, 0x55AC01B1, 0x4298EA17, 0x4D6BB9AA, 0x31C55C65, + 0x6A266780, 0x4FD92256, 0x817DB37A, 0x46A14DF1, 0xEC7D9F14, + 0x98D1C1B7, 0x911DF80D, 0xBFBF24E1, 0x9B4DBC6A, 0xE1F71BA4, + 0x9EE5E44A, 0xD1868C4C, 0x6FB45D76, 0x11EC8672, 0x1CED7F0C, + 0x1524A040, 0xA49DE9D3, 0x99FF328A, 0xC392F619, 0x52A856CC, + 0xDB0B0AE6, 0x67F0162E, 0x2C20D410, 0x4E23C4D, 0x828032EA, + 0xC2E7DFFA, 0x908CF524, 0x919F61EE, 0xF001C6F, 0xA81DDF65, + 0x5EC56647, 0x28385ACF, 0xBDD764C0, 0x75C853AB, 0xDF0ADD73, + 0xEEA9C63D, 0x804949F5, 0x658ACD0A, 0xD12F3F50, 0x1FD4F7EE, + 0x7F023D80, 0xD2CB08B5, 0x477EA9A1, 0x872DB719, 0x7B8B6AE9, + 0x84F6AC4, 0x81634EB4, 0xD1A89CF, 0xB3F4F3B9, 0x3A6B024B, + 0xAA2CA2C5, 0x9C902C0C, 0xC40E4135, 0x3C6E612F, 0x11219414, + 0x1F184277, 0x11B6B30C, 0xDD8A6A5A, 0xA0D21C9D, 0x55377022, + 0xD0708FBD, 0x8D761020, 0x54FCFCFC, 0x477801BD, 0xD6919EB8, + 0x9AD29078, 0x36F8D9B8, 0xAE525B8C, 0xCA7ED140, 0x2D8F8B97, + 0xD1B79EAA, 0x2E26FB2A, 0xFB396E32, 0x399129A3, 0x28B55FA1, + 0x2ECB2CF0, 0xDF1CBF7C, 0xDE57A70D, 0x33410B33, 0x7C5759BF, + 0xF534264B, 0x16C8C221, 0x874A3A63, 0xD05808ED, 0x679674BC, + 0x24B060C9, 0x4B162B53, 0xC7D01208, 0xE753DE61, 0xFA9840E4, + 0xA4FEC439, 0x4143E13F, 0x327E9EE8, 0x319D901E, 0xC40FC209, + 0xB1E1FFFC, 0xE737D52B, 0xD074E058, 0xAD8892EE, 0x86B93396, + 0x49C13F4B, 0x60A5721C, 0xD4C4F599, 0x14B38EBB, 0x86BA655, + 0x95F4E0C, 0x4217E99A, 0xD0CA3861, 0xBDD3617B, 0xB0BDBF4D, + 0x99E3389A, 0x8200DCFA, 0xEC22C8AC, 0xBA8DDB32, 0x3F7DDFC8, + 0xC7DDC171, 0x211CF31, 0xCC31A0C7, 0x99A84F32, 0xC9FFD317, + 0x2267733A, 0xFBD05569, 0x306BC05F, 0x6E2685D5, 0x43FBF7D1, + 0x5A2DB2D3, 0xE6491D4B, 0xAD078066, 0x7CAF7AAD, 0x2B1FEBA5, + 0x3418A0EC, 0xC359E9B7, 0xB024E024, 0x58F22A6B, 0x18EEE710, + 0x4755B9C5, 0x528D3273, 0xC8F9255, 0x635E5F9D, 0xABDF5BAD, + 0x8410F054, 0xEA068528, 0x438345EB, 0x56EF340, 0xBD86A7DE, + 0x543A126A, 0x5F259D83, 0x67EDA87A, 0xFF24F98E, 0x684E6504, + 0xE4EB57B, 0xD2D3B758, 0x4474D10F, 0xA94594B7, 0x3E4BEB07, + 0x95C3F257, 0x478B6FA8, 0xBCC7EFD8, 0x1023D258, 0xB4ACD6C0, + 0x36129B10, 0x16D7D9A3, 0xEA63BE7E, 0x25EC12A1, 0x21B95589, + 0x3A673799, 0xB8E04594, 0xAE98693C, 0x9879B8F9, 0x601A3F62, + 0xCF9897C0, 0x87CD1798, 0x629788F1, 0xC1337B31, 0x59D84E67, + 0xF13FA484, 0x5E8C7B3F, 0x7DEDE9F6, 0x9779F496, 0x74C4EE89, + 0xB3D9AC8F, 0x44118EFC, 0xB4FE8E45, 0xC9934560, 0x93D739E8, + 0xCD013773, 0x102411F1, 0x9DB63EFB, 0x63165875, 0xB8B97E98, + 0x6B4223D0, 0x6F34352B, 0xDB038A46, 0xC187163E, 0x17FE20D8, + 0x82A1BC9F, 0xB6860AAF, 0x11D5F9E0, 0x5371E14E, 0x20BC8445, + 0x607589A0, 0x8DDCCF44, 0xCDCD53C2, 0xCBCB32D8, 0xC512E661, + 0x1EB4E6CE, 0x228E99A0, 0x28EE0177, 0x76ED3F3D, 0xA3DA3300, + 0x17C57F91, 0xA1855C6, 0x3531FA3, 0xA93A8241, 0xC45D540C, + 0x365D42EF, 0x2CA39696, 0xE460F7D1, 0xCA32CCB3, 0xA6D9D934, + 0xAD01079C, 0x9B07D89C, 0x226CE0A5, 0x60D67762, 0xD35A4B7B, + 0xFF0A698F, 0xDB73BF89, 0xF41FBA9A, 0xCACDF26D, 0xBF594213, + 0xCD4D3E90, 0xD12F3EB8, 0xE689D238, 0x8CD4C0CA, 0xEB3E841E, + 0xA513EF0F, 0x2DF4B65D, 0x90161625, 0x9C02AC36, 0x208F328D, + 0x12BF5D93, 0x7C8C355C, 0x3CDFCA22, 0x29381080, 0x3FF6CA14, + 0x9F269C74, 0x8A48070B, 0x3BDF51BD, 0x85932156, 0xA7B6F9FF, + 0x80554507, 0x43820D97, 0x59B7214A, 0xFC3ECC27, 0xED39DB19, + 0x2B9BDB43, 0xABD4E298, 0xC2C5953E, 0xD3DB0C09, 0x66EC81DA, + 0x7F41EDE1, 0x5146E8D7, 0x49171DF2, 0xB334BF9A, 0x3AADC9E6, + 0x56E12468, 0xA2D4B032, 0x662B1F49, 0x9C448B1F, 0xA219526C, + 0x56D66A27, 0x41609345, 0x8E685EFA, 0x392DA3A4, 0xDE58C26B, + 0x9C779FC9, 0xCA834F65, 0xA1E34DC4, 0xEC5BE6EA, 0x3737B7AB, + 0x2E9B7D0A, 0x929E96B9, 0xE38B0019, 0xC1E4115B, 0xD8141740, + 0x66977F67, 0x7D4CE4B3, 0x245AB554, 0x26F98B88, 0xEC78F24D, + 0xE1F34C1A, 0x5737AD34, 0xC1A19AC6, 0x3291E363, 0x4E824FF3, + 0xAC42BDF3, 0x7C2DACE8, 0x8D5C97F6, 0xD120875, 0xC4E5C39D, + 0xE22AE85D, 0x290FF39D, 0xD495E52A, 0x95414374, 0xD65757A6, + 0x1E7657F9, 0xF5073D56, 0xC2AA7589, 0xC166A0B3, 0xA0DF8CDE, + 0x4057EAE5, 0xBAC4DD2F, 0xB51F621F, 0xA96F90E3, 0x392B5D6F, + 0xC31E9CA1, 0xCCC02FD3, 0x5181074, 0x7BC15C18, 0xCA9232A4, + 0xD1D104E9, 0x5F0C5D3, 0x4947F6D2, 0x3C923E97, 0x6B486C35, + 0x9C8ADA96, 0x175C4D87, 0x39A1A0FE, 0x417F201B, 0xD080E114, + 0x4847B147, 0xFD634E49, 0xBC0BF4CA, 0xECABB1DF, 0x869B0263, + 0xCD797C28, 0xD2A4683, 0xD50F6A0B, 0x2CA40138, 0x8DA4EB55, + 0x5D198E5A, 0xA98DB40D, 0x96CA0E68, 0xA8D92294, 0xC4813E60, + 0x81CD6B09, 0xEBBEBF80, 0x6777688, 0xCDAF6EC5, 0xEB85653E, + 0x3BB780DD, 0x73718A21, 0x70E8A324, 0x654DE06A, 0x2CB2494A, + 0xFC1DA829, 0x64059A2F, 0x61CE9D0D, 0x5BC51CAB, 0xDF7DE6AE, + 0x1596B477, 0xB0F9EA86, 0x9D87D85B, 0x877620A7, 0x586F3AD6, + 0x96AE645E, 0x65E9D5D7, 0xDB69CEB, 0x2753EF35, 0xC226F633, + 0xBD373F9D, 0xF2A0E198, 0x4372EEC3, 0xA66F7010, 0xD30E1D18, + 0x152C0DFB, 0xEB86FC75, 0xC208FE7E, 0xB36625A4, 0xBBE2DE8, + 0xEC49F9C9, 0xCE724FFE, 0x2D509471, 0xCA6C24B6, 0x1BA93DDF, + 0xEABE9550, 0xB512D359, 0x83F76766, 0xC8267976, 0x7E50802B, + 0xE3EC2199, 0xD3269B8E, 0xC515B0CE, 0xB5752537, 0x70474BD, + 0x7F50EBE, 0xF9FC0B38, 0xD899D19C, 0x317AA41D, 0x6B706374, + 0x66479538, 0x560455A3, 0xD770DD85, 0x55BB61BD, 0x6DE6723A, + 0x3F89034B, 0x9C9650BC, 0xE569992C, 0x7B8F4D95, 0x3FB7C516, + 0x7C28C04B, 0xA12DE6B9, 0x8CFC5AFE, 0xA734A25A, 0xCF1483E8, + 0x1AB22339, 0xAA94F43F, 0x16319A1E, 0x2C9AA4D0, 0xE9D2618, + 0x790B699B, 0x3AD9C3A1, 0x55A778DA, 0x6517152F, 0x2139AB74, + 0x12F762CC, 0x4BE02E6F, 0xE69400F7, 0xDC48DCD0, 0x563DB028, + 0x32299125, 0x7C9145A9, 0xFB88067B, 0xF070F6FF, 0x3D9A42FF, + 0xC5D20DC, 0xF96F7EE1, 0xA9C209A3, 0x9A192F36, 0x3E158AD, + 0x1265DF79, 0x2E49E297, 0x99D3A002, 0xE6AFDDCB, 0x3B56751D, + 0xB248A31F, 0xE6BE0FFD, 0xBBAB635E, 0xB383C45C, 0xA9DC9F2D, + 0x735CE03F, 0x69992E32, 0xD1E6A77, 0xE38A7F46, 0xC1E59620, + 0xFAE7F99A, 0xBDFB440C, 0x9F53F99C, 0x224EA340, 0xAB5D1AF0, + 0x35F3126D, 0x99430549, 0x83E12C62, 0x6403957B, 0x7B119103, + 0xC8382BAB, 0x99A85991, 0x9BF370AF, 0xDFA83CAF, 0xDBEC2CC3, + 0x416D8EBA, 0x774E58FF, 0x29C222F, 0x3DE60561, 0xDF038931, + 0x8297C377, 0x9867C08, 0x58ADEAED, 0xD88F0856, 0x6E4C2A39, + 0x2599DF28, 0xD7A6D06A, 0x433B35BE, 0xDAD3175B, 0xC358D423, + 0x84BF4580, 0xE7D3BE65, 0x9EC8CDBA, 0xCE901946, 0xC4B4D088, + 0x98B1245D, 0xFBB0CC10, 0xE8CB9C76, 0xDE665AF2, 0x28E46D8B, + 0xF7012A56, 0xE29F8C07, 0x8BF87AFB, 0x2907C051, 0x820923CB, + 0xC3E95542, 0x6AB5559E, 0x314BD068, 0x1CEB5637, 0xD1D830D, + 0xC442D6C2, 0x5F6074F4, 0x37F08A2A, 0x21F782BE, 0xF378B1AE, + 0xB7FC74DA, 0x4ACB450F, 0x365F3092, 0xFB0C842C, 0x5DD80554, + 0x741C4F79, 0x290716E0, 0x76E56BA9, 0x10006310, 0x42A183C7, + 0x5F1FB962, 0x8DE2BA39, 0x6176B6D9, 0xFC059A44, 0x9907DE39, + 0x71A5EA7B, 0x42309616, 0x1DDE34DD, 0xF0DFA4BF, 0xF69B5E2F, + 0xD145268, 0x49A3E7B, 0x90508840, 0x861DE564, 0x904730CB, + 0xC844CD6F, 0xD5A2CEB6, 0xCE895F0D, 0x73EEE4D6, 0xEB4565CF, + 0x533ED4ED, 0xF4AAB655, 0x591BC278, 0xBD1D929D, 0x80AD7DA6, + 0x527B3C51, 0x40F627DD, 0xDA420FFD, 0xB9A6F685, 0x5F6D9BC2, + 0x4F67DE58, 0xFB5F87F0, 0x47540936, 0xB2083BC8, 0xAD48DD69, + 0x63F7CA5A, 0x28D5372D, 0x61DA54B0, 0x7DA88170, 0xA2DA7B83, + 0xE1D70E32, 0xA3ADEA46, 0x97026868, 0x60FA4303, 0xA4104416, + 0x3DB4A8CC, 0x72F0F53B, 0xFF270297, 0xD5600E97, 0xD7D25D62, + 0x46DBCAC5, 0xFD61775D, 0x93E100DB, 0xBFE0E0C0, 0x8CE51426, + 0x8216C272, 0xE7300A56, 0x5A61C30E, 0xA7667C78, 0xBD23D39B, + 0xDC425756, 0x7AE9A42B, 0x249E8C42, 0xABB91D5C, 0xBD1334D5, + 0x8BCE967D, 0x5CF89EEA, 0xDB125339, 0x225E3C4C, 0xC5DDA12, + 0xA92903F8, 0xF2F29634, 0xD2AB3419, 0x396DAE59, 0xA02C965E, + 0x450B8DEF, 0x1E4911B2, 0x4F94BA94, 0x6802E7C0, 0x779671B7, + 0xC0B06A93, 0x65BF0119, 0x3D672B7F, 0xE7E68CA, 0xF173FBF, + 0x503C50F4, 0x3D8CA779, 0xD9BC10B2, 0xE6B89F78, 0xFC04B6F2, + 0x74B0E1B4, 0x3BB8594A, 0x5866C0E6, 0x125FBE40, 0x21239465, + 0xC00E2791, 0xD7957B76, 0x331D18CA, 0x87D0C340, 0x8D7347DF, + 0x296D2AA1, 0x8EAA71DF, 0x1D477388, 0x4F666705, 0x211D2B0D, + 0xA41C0741, 0xD8F7CEEC, 0x4C6EDC5E, 0xFE5DC02A, 0xAA83AED3, + 0x9AE501A6, 0xFF82168C, 0xDC638114, 0x4C345BA0, 0xDD7E0F1D, + 0x4C072ABD, 0xFF606768, 0x3CE74279, 0x93DED13D, 0xAB7A9752, + 0xAF27666, 0x784EDE4F, 0x7F4BE8A7, 0x9A45141D, 0x69E507FF, + 0x78BAC3AC, 0xDB2A62AC, 0x52561515, 0xA9DFA9A8, 0xCC51778C, + 0x886CC6A, 0x5246AD23, 0x68A7480, 0xBC267A85, 0x1FF771F4, + 0x5199BC1E, 0xF8CCD05A, 0x7BD65764, 0xC61A33FA, 0xC9F24B8E, + 0xBC0B1D9F, 0xE43E103, 0xBE3D7AAF, 0x39154AD2, 0x941C2098, + 0x1C26174D, 0xC63D21F1, 0xFBC6D732, 0x8C43AE71, 0x1495C044, + 0x9483EE96, 0x909A94F0, 0xC1B02D9E, 0xDF9A2114, 0x2F4883E9, + 0x4806958A, 0x209A2722, 0xFE514205, 0xEB85D85F, 0xC25BED82, + 0xEB2CEABE, 0x8B2A2EDA, 0x68641725, 0x10570304, 0xE53EE68B, + 0xC43FB1C1, 0x8F763232, 0x41ECC1D0, 0xE3E44CBD, 0xA1A68EC0, + 0xDAFA770A, 0x6996A5A8, 0x38407C06, 0x4FAD77B4, 0xE30E2912, + 0x47EE2FD, 0x2CDA167F, 0x88F915F1, 0xF3DF6195, 0x530FBEDE, + 0x2CFC1C0C, 0x47B21171, 0xDEC1A586, 0x2031A43A, 0xDAAD77AD, + 0x8BE637E6, 0xA6AC1EBB, 0x6AB9F2A3, 0xBFB5ED6C, 0x15792C44, + 0xFD3AB89D, 0x27A7E24E, 0x3E76999F, 0x77EE2E6A, 0xE505F3B7, + 0x429839A6, 0x6BEE7B15, 0xF61F0084, 0xFC20752C, 0x4BF79989, + 0xC8B4F8E8, 0x46B33427, 0x9F4BA3E8, 0x41B9354D, 0xEED27E23, + 0xA7FC575F, 0x279180C5, 0x141C3A06, 0x2C2FCEF9, 0x4403AA1F, + 0xD4496B6C, 0x25C33091, 0x452C754, 0x80534A0, 0x80842F72, + 0x3DB756B1, 0xEFD010BD, 0x1DE7F9EA, 0x5F9B1769, 0x55D9839F, + 0xD5B11F46, 0x941D69AE, 0x8C4F3D35, 0xE710E268, 0x2DFBC983, + 0x5D417C19, 0x7C2561F9, 0x25415FCF, 0xF331B119, 0x235B632F, + 0x9B1463A9, 0x8249E513, 0xB6F14826, 0x1005E62C, 0x2B1B4F3E, + 0xEF793550, 0xA90F6AA2, 0x77BFECE6, 0xA6E1C13E, 0xBCB6E143, + 0x2496D0ED, 0xF4A8D5F0, 0x29C27A0C, 0x7D231D55, 0xB8526623, + 0xDDDCB82C, 0x2A18B465, 0xB5FD564D, 0xA9647CB5, 0x4300919B, + 0x9FB2B27A, 0xDB25B0D9, 0xBB5D5711, 0xAA747FC4, 0xAA831194, + 0x9603ED14, 0xAF921A0E, 0xFA1447D7, 0x8B766768, 0xE8F1C89E, + 0xB7985D4, 0x6C5C1AEE, 0x2EA66EF3, 0xD176E7D9, 0x228CD940, + 0xD90C84B4, 0x36253A66, 0xADD7AE4F, 0xF25D5CA5, 0xD34F702F, + 0xA535AA29, 0xFCF10FB, 0x3D075696, 0x63EF7EF3, 0x81554091, + 0xC7EEFC78, 0xE0DCDB21, 0x62EFF001, 0x9ACFD7CD, 0xAEBA43ED, + 0x371BA99B, 0x508B7A31, 0xFF447B05, 0xA239F5D2, 0xA5620A57, + 0xA16B995A, 0xC334401E, 0x535F51AB, 0xAEA26D82, 0x81D72269, + 0x3C0BA1D2, 0x80590850, 0x818A26AA, 0xC43E6B02, 0xF72DFB63, + 0xE7AE3F6A, 0xD31AB683, 0xB99D787A, 0x691FFB53, 0x37EA1E35, + 0xC2C9FFF8, 0x2A13F6D4, 0x4CC79564, 0x6DD5F2DE, 0xC53560B, + 0x5A562B6F, 0x3F2C49F1, 0x6953F4CC, 0x8BA12AF2, 0x98A08428, + 0xA1EF80B3, 0xA977E388, 0x1A3DD9D1, 0x687A3424, 0x2759B568, + 0xC626A765, 0x7887651E, 0xFC9005E1, 0xE84376A4, 0x387BCF66, + 0xF7AA4980, 0xBAEE372C, 0xE89CF460, 0xA275FC1A, 0xA5EF8668, + 0x899F85CE, 0x9CB086A3, 0xF16158AC, 0x4C49EBC0, 0xDCE10FAA, + 0x4B46ABDA, 0x56947FA1, 0xAD4E7245, 0x54C23373, 0x8B0B6C4D, + 0x82590F05, 0x5E292D4C, 0x277B63C5, 0x9D51D8CF, 0x86D379EF, + 0x52CBEF63, 0x7A62AF4C, 0xAC1FA33E, 0x25D454AE, 0x1CDA792D, + 0x17434813, 0x759F50A7, 0xEEB0D38A, 0xB30964A6, 0x941230A0, + 0xA464FA3C, 0x9F8685AF, 0xB9A018F4, 0x8080362, 0x2D565F63, + 0xAB60790A, 0x67252A3C, 0x1715B01D, 0x5384E7F3, 0x79299519, + 0xA9786ABE, 0x1107A1FC, 0xE0D9B037, 0x4DD34883, 0xA7D476E3, + 0x5B194AE9, 0x89E50FB1, 0xA9676565, 0xC77CF621, 0x93612BF2, + 0xE027B80, 0x359C7FBF, 0x39B166FB, 0x1F3B28DF, 0x2848DE70, + 0xFFE261DD, 0xB78D413C, 0xE011DD7B, 0x286F752B, 0x74A8D775, + 0x5E540B67, 0xFAF973F, 0xC0035501, 0xB0F16059, 0x1C981017, + 0xD4871112, 0x9745C0BC, 0x6D85B805, 0xA40253E8, 0x2B0D55CD, + 0x8FF7EDC4, 0x47EB4ECB, 0xC41A2F17, 0x41C9702F, 0x8549DEE0, + 0x865FD46C, 0x64A1F181, 0x24E64D11, 0x13337A33, 0xE8CB0924, + 0x8A2DC003, 0x113C04C7, 0x1CA62E13, 0xC360E708, 0x57DE03AB, + 0x4D8F2BB5, 0x2CE2E2A1, 0x2580C90D, 0xBF162A7C, 0xEB1490A8, + 0xBCABC2A7, 0xFBC4C25C, 0xBC83AB6A, 0x25C47DCB, 0x8FE447A9, + 0x2C0F77CF, 0x6D896845, 0x63CEF5AE, 0xB2FF0326, 0x14D71520, + 0xA1C15C8E, 0xE53550FB, 0x676B299D, 0xC20A5C14, 0xDB3EC54, + 0x359733CE, 0x8A619B1E, 0xCDB53E, 0xD285EED5, 0xA6E0181E, + 0xB81AA3EF, 0x41F8E1A2, 0xE3DEDC6D, 0x4F7CBE5B, 0x24006857, + 0xACB9B719, 0x4E725B2D, 0x8536AF54, 0x329509E7, 0x72E7C0A7, + 0xBA97CC78, 0xD822798F, 0x9DFC6780, 0x63E263CA, 0x7B2397A5, + 0xA42C0C0B, 0x1D5EC588, 0x292F1E7C, 0x2BF5A75, 0xFCD8786B, + 0x14EB1952, 0x84031982, 0xA0800A40, 0x629C9211, 0x3B17F481, + 0x50861D9D, 0x8371A304, 0xB3D21511, 0x720E2C6C, 0x5A07F87E, + 0x868F95BD, 0x8617E7B, 0xD7762105, 0x90707C5A, 0x777473F4, + 0x67737DC4, 0xC4154562, 0x1840CEB3, 0x373635EE, 0x4E6D4EBA, + 0x1736A5EC, 0x4D3E335B, 0x59FDB9A1, 0x9162B39A, 0x3F9E1502, + 0xF661B3DA, 0x77BE0255, 0x65EC8603, 0x21FCA0B, 0x55291C5C, + 0x69F57B1, 0x5DE1E0D6, 0xA6296E1D, 0x595A45F8, 0x90B166DF, + 0x61ABB34E, 0xC6D48B5B, 0xB05EF88F, 0x368B0C6E, 0x94C36250, + 0xB435D440, 0xEFB62847, 0x1473E647, 0x9A101218, 0xC7AA11BF, + 0x80C241E3, 0xAF648F26, 0xDF48753D, 0x7073509A, 0xAB52665F, + 0xD1ECCFC0, 0x7BE293F1, 0x396CA014, 0x84336AB9, 0xF9B7E448, + 0x9566C90E, 0x239F7C25, 0x91A452B3, 0x1E9A4F1C, 0xCCE286F6, + 0xF46520D6, 0x2943A671, 0xAAA30DCF, 0x28D190CE, 0x88E3D0C9, + 0x423944F0, 0x81E6712, 0x2714B6B2, 0xF927748, 0x59A5430F, + 0xCBA530A9, 0x91E12A0E, 0x92598CBE, 0xE61058F5, 0x2604B4B, + 0x4CB7C3A7, 0x43B5812F, 0xFD90660, 0xD73DF50D, 0xAD3AE409, + 0xF74D721B, 0xCC2A88D1, 0xCED79510, 0xE64714DD, 0x3BDF0A8A, + 0xC2C7B689, 0x25B387D8, 0x968DA1A2, 0x8EA5D185, 0xF05F03E1, + 0xFDDC5B50, 0x78AECEF, 0xE32FBBA2, 0xD512F0AD, 0x5410D1B5, + 0xDBFD9FFF, 0xC0F2DD4E, 0xF66F8DBA, 0xF5EBA3C8, 0x65F96FE3, + 0xF7C8962D, 0x8E48A78, 0x255BEDC7, 0xE8FD3698, 0xFD1C4903, + 0xFDE9830, 0xCDBCF434, 0x16540D39, 0x418EF731, 0xB2F80637, + 0xDFCC0C9D, 0xB53DC5BC, 0x5A68B10C, 0xC4DCB3DD, 0x8B3778F4, + 0x7788B194, 0xECBD4903, 0xFD390223, 0x79598BFB, 0xBDECB9D9, + 0x29576BE3, 0x220F82A5, 0xDBB262F6, 0x1876EF0, 0xE2D9C444, + 0x32D5ADEF, 0x5F8739ED, 0xAF427122, 0x171E7D7D, 0xA5468BB4, + 0x94451936, 0x51565032, 0x3CE3CD5, 0xF231F54, 0x98614C6E, + 0xCE18455D, 0x958D2BD2, 0xA5934FE0, 0x3543931E, 0x77D9C2FB, + 0x3D3ED736, 0x6762E077, 0xF1B052A, 0x88AF353B, 0xB2A38925, + 0x8C919686, 0x715EEAAC, 0x34BA46DD, 0xEB486F1C, 0xDF58D7CA, + 0x90B97BE6, 0x37335293, 0x499414CC, 0x7F725BAF, 0x5ABEBF8, + 0xE9344F69, 0x1C110FD, 0xA937AD4C, 0xA7CDD9C0, 0x750FD5FE, + 0x7A7B6D40, 0x41EA948A, 0xA10EE17C, 0x7689C967, 0x9F411C02, + 0x6C40C3FD, 0xA6FFC648, 0xC6D6F914, 0xA100AF92, 0x4CD97ED5, + 0x17D9CCBF, 0x915833F, 0x788D78C0, 0xC81903A3, 0x6DE5BAF0, + 0x3E4D6DCC, 0x98415810, 0xEC23B7AD, 0x822471B0, 0xD2CF5D5A, + 0xA1BACAD5, 0x40843135, 0x430135A, 0xA7655BAD, 0x7A2472BE, + 0xCC3D44CC, 0xD1BC9E10, 0x7C215C92, 0x717FA7DD, 0x7EF7D128, + 0x1BC85798, 0x7C6E19CA, 0xE3FAB7E4, 0xBC884D38, 0x3E220CA, + 0xE7AE4D8, 0xC8EDD021, 0xF3F05D3E, 0xDE302EB8, 0x40CEFF27, + 0x56C0550A, 0x96162C92, 0xC004EA48, 0xE0C29A65, 0x496AE22B, + 0xC7468E6F, 0x8E31BD1F, 0xA53763CF, 0x166CC258, 0x1A2B9CC4, + 0xDBBADE7B, 0xF8D21AC9, 0xB21CA593, 0xB92F0DEE, 0x9A4391F, + 0xCDB4D373, 0xB687B3F5, 0x877BF0A0, 0xFD7395DD, 0x1C56AA87, + 0xCA146BB9, 0x21A2314B, 0x8207A2AC, 0xAA874DC0, 0x4F404E64, + 0xB69FDE48, 0x324FD456, 0x45F19CF, 0xFC7E6D0E, 0xC8A01C04, + 0x76C63378, 0xC526F7B3, 0xFDCD2EEF, 0xFFB2F9B9, 0x2DDE75AF, + 0x5ADF2F86, 0xC9AC84D3, 0x70FF53A0, 0x3FB077C, 0xC2795B30, + 0xF5438170, 0x557D7080, 0xB784684E, 0xCD089E1D, 0x332B71B0, + 0x493C3C2A, 0x1D1DED89, 0x8240E170, 0xA7D17522, 0x48C542AD, + 0xCB357D8F, 0x21E37C1, 0x3B000B34, 0xAAAE4818, 0xCD1EB4B3, + 0x1736CA0E, 0xDDF8EA2B, 0x76E21C4C, 0x6EE99A3C, 0x27F71B20, + 0xF6AE929C, 0x3C9CAF6C, 0x5CA7DA97, 0x8EF033C5, 0x8C7EC36B, + 0x3CB1CFAD, 0x1C5ABBB7, 0xDEF7A78C, 0x9CBC4A73, 0xB3871393, + 0x8C61DF59, 0x54DF941C, 0xCDD23FE8, 0x758EAD7E, 0x49BE795B, + 0xC960C6B, 0xE9B76479, 0xC88843F7, 0x82DC3137, 0xEDEE1A1E, + 0xC6568A7D, 0x42F7F484, 0xA6115655, 0x494779B5, 0xD95FE16A, + 0xB2AB15F4, 0x64C185B3, 0x9A46066E, 0x8BAE077E, 0xBAAE323F, + 0x79A965C6, 0x764B71F0, 0x3654F6D3, 0x96B4B2AB, 0x15C2B523, + 0x720AF416, 0xE6D0F423, 0xFAE44868, 0x6E776BC2, 0x264D41A8, + 0x3FE4BEE, 0x1598B97B, 0x15A70419, 0xA13CD124, 0x751A09E2, + 0xF7F7C12B, 0x718AC211, 0x11D03CD1, 0x2F9247BE, 0x77C210E1, + 0xA2268AAB, 0x2E99F0DD, 0x949D5CC5, 0xA8A309F2, 0x749EC6BE, + 0x5BD5124A, 0x8BF599E9, 0x3919AD4F, 0xA40901C2, 0xA1D4CC03, + 0x6ADCA36F, 0x9D5CCB0F, 0x870E2A58, 0xCEBC6333, 0xB2FA28A4, + 0x579C76A, 0x444849D0, 0x33887308, 0xB3BE3C75, 0x93745501, + 0xC289F137, 0x89739C7, 0x97C73423, 0xD627FB64, 0x6EE36F05, + 0x1F4B4B98, 0xFBB7A8AC, 0x60941E62, 0xC3A8ABDC, 0x4AC5E7C9, + 0x88ACE940, 0x5AA2AE59, 0x9F10C0B7, 0x8F45920B, 0x5FDE21BE, + 0x1D47779A, 0x3ED27D8B, 0x69FF2BB1, 0xCB1409FB, 0xF27F4FFF, + 0xA19E3DDC, 0x206050FD, 0xAD98C2D5, 0x4DA4BC0C, 0x95D9B019, + 0x556ABBFA, 0xBC78B5A, 0xF0F224F8, 0xA9785F8F, 0xED1CE98C, + 0xD368072E, 0xE212ACE5, 0xBB7F76E0, 0xB02F237F, 0x6D85C5AF, + 0x31539988, 0x4312BA19, 0x1D5023A7, 0x7320504B, 0x70563ABD, + 0x2553791A, 0xE9768150, 0xC1B2AF4B, 0x3AF0FD24, 0x3818D0E8, + 0x7F356F58, 0x98A15B0D, 0xAFA943C4, 0xB2B38831, 0x2E411F37, + 0xE3D5AF87, 0x67BEEC5A, 0x825E60CC, 0x1C44D856, 0x1A59493A, + 0x13BAABCF, 0xAEAA4D44, 0x5CFF2A6E, 0xFB47865B, 0xE778E607, + 0x101500E8, 0x2C17E66A, 0xA0B30350, 0xFC649CDF, 0x8B9802D9, + 0xAB87D61A, 0x21F38439, 0xD3D11051, 0x1FDA9955, 0xCB9313B8, + 0x327D1A94, 0x35293099, 0xB803B298, 0x5B8E6883, 0xFA309C3, + 0xDFDA8B2, 0xDF89211F, 0x9918F18E, 0xF0C05CB1, 0x71D8A4B7, + 0xE681031D, 0x537012F6, 0x4DF822F2, 0x34B75C8C, 0x4429F85E, + 0x5D3C4C4D, 0xFB0FC6C7, 0x25F4ECDD, 0xB19D5EFD, 0xD70FD7CF, + 0xD95C45D5, 0xCDAC06B8, 0x9C3B963B, 0xAB2F2A9C, 0x4D3D4F7D, + 0x12692C03, 0xB1AEF97E, 0xF243EFA7, 0x78C4C8DF, 0x182D9C17, + 0x8D2AF450, 0x7596BD9B, 0xE8E7C9C2, 0x86F617F8, 0x1F37A708, + 0x3F648305, 0x27FF6DF6, 0x4D5FF17D, 0xA9541C2D, 0x9773013, + 0x78B2313C, 0x82C0B20F, 0xD36A4F02, 0x8DB2BC4F, 0x9296D8BF, + 0xA983CC7, 0x31AEE908, 0x48CD7E6F, 0x9CB1DD7F, 0xAB89D57, + 0x5156132E, 0x6345AA59, 0x8D2CB12D, 0x94D3AE56, 0xA4E91B27, + 0xEE58338, 0x8620EA15, 0x5454D04E, 0x1142ACF0, 0xCA059044, + 0x31811D8A, 0xD498290, 0xB65F1B67, 0x462745F3, 0xA899191C, + 0xB9C19F48, 0x824659FE, 0x9A257101, 0xC330F34B, 0x42109127, + 0x9DA8504B, 0x6C3A989F, 0x5F426E6C, 0x2B922D32, 0x373C66FD, + 0xAFE3418B, 0xE3788682, 0x83B46626, 0xD0106A4E, 0xFD10B903, + 0xB0F6531C, 0xC65419E0, 0x3963952B, 0xB8799DF9, 0x3EEB8C1D, + 0x5C4D3C08, 0x6DD028A6, 0xA55678A0, 0xB8247141, 0xC1267586, + 0xF6746B19, 0x46C38465, 0x483D24B, 0x99BF79DC, 0x78F778C3, + 0xAFF40193, 0x58872B07, 0x6DA7F4FA, 0x66B5CEA3, 0xDD2D8C79, + 0x2A8D289B, 0xB5789670, 0x66AEFCE3, 0x56FB52B3, 0x20FE3BE1, + 0xCCDFB492, 0xB0F263E8, 0xD0707433, 0x5E58F5DC, 0x4ABEBE63, + 0x8A45CD95, 0x97037830, 0xBDB1F1B5, 0xA1BE2990, 0x57B718FA, + 0xD50EC023, 0x810DD849, 0xE650D43F, 0x3895C77D, 0xE142C382, + 0x35551E5B, 0x3B94330, 0xE92D8A91, 0x50BC837D, 0x61499A8F, + 0x2639B468, 0xF8FF36E1, 0x74956FC6, 0xFF0F4192, 0x6BBA0C53, + 0x5B44FF85, 0xBBE4A1DF, 0x12D6CB14, 0x6C679A10, 0x3C0F554D, + 0xECBADA32, 0x8A99BA10, 0x738C03C4, 0xB8902AC3, 0x7008D470, + 0x49BC2ED9, 0xFBE19B5A, 0xA1E4879A, 0x36129694, 0x94987C3C, + 0xE54B84D8, 0x9CFAEF1E, 0x527127DC, 0xA8FCAE0, 0x8699252C, + 0xDAAD4629, 0xC41F3866, 0x2559C272, 0xB1C25848, 0x3F9B1702, + 0x7C448BF3, 0x8CCEDF5C, 0x3A37F712, 0xFB9E4F83, 0x5754E801, + 0xB38FD367, 0x780F4825, 0x959330C4, 0xF6276BE5, 0xAE3E2018, + 0x182DC907, 0x88E733F9, 0x6FF870A, 0x79EF2D01, 0x3EAC0D6D, + 0x20D4FF88, 0xAE6EB8C1, 0x80810451, 0xC228E035, 0xBD942803, + 0x3F3733F2, 0x9F8F16F6, 0xAAA65031, 0x55E839BC, 0x7EAD3461, + 0x5F5BEE8A, 0x8668BDBA, 0x399366DB, 0x2A54237E, 0x776789E, + 0x7B171AF5, 0x8C9FCB92, 0xD87465F2, 0xFA3CAAB5, 0xBA5B131E, + 0x1FD2D438, 0xDCAA9DA, 0xE1BF0AAA, 0x1EAEA8AE, 0xEB46A646, + 0x989D1EA2, 0x98E8B45F, 0x12A2415B, 0xD107D293, 0x5F54D087, + 0x95AF5C33, 0x2A12BA88, 0x6381D0FF, 0x688EA1E0, 0xACC60CA2, + 0xF19636C6, 0xD4D465E2, 0x2A50DC57, 0xFB595CCF, 0xF5C63674, + 0xB4965626, 0xB903D3D0, 0xD9581548, 0xBBD9E82E, 0xE22BCEF3, + 0x9FE759D, 0x6E8D8F4E, 0x655325D2, 0xE1986814, 0xEA2B93BF, + 0x88085C18, 0xF82BFCB0, 0x3FCF713F, 0xADE03EDC, 0x2D2DDCBC, + 0xEDE2694E, 0xF6DFB11D, 0x5CF35A5A, 0xD38C82D3, 0x52DE32CF, + 0xB88EA70E, 0xF7FB134F, 0xAEC78D1E, 0x58402C66, 0x54CD1763, + 0x78A7EB4, 0x88F49C30, 0xDC17F8C0, 0x9C49A368, 0x926E18EB, + 0x4DD461E1, 0xA6BD8F3C, 0x6D2E4C31, 0x657506D9, 0x445EF83F, + 0x77E28461, 0xF715400F, 0xBB76D1D, 0x9B670CD2, 0xCEB9EB90, + 0x7F297088, 0xD3929A52, 0x9B62909, 0x46474012, 0x3D74DFDF, + 0x46288EF0, 0xF0C51C07, 0xEC642B66, 0x3C76B83C, 0x1E72D08F, + 0x9F95DC1E, 0x106883C5, 0xB6A867BD, 0xA532C423, 0x95076036, + 0xA9DBEA73, 0xA3F8C65D, 0x799CF6BF, 0xA4508346, 0xB37CACB2, + 0xF6A07B5A, 0xA2C24137, 0x2E1D8DEF, 0xD28C26AD, 0xCE745089, + 0x3B7D9638, 0x7189CE82, 0xBC3F7850, 0x5660A9B8, 0x13895B5C, + 0xFA59A643, 0x9B0FF4AF, 0xFD2B4FD3, 0x4C0C4E52, 0x272631DE, + 0xA52FAE47, 0x65850A25, 0xD51ACF2B, 0xD206E6EB, 0x3CDC96EB, + 0xA6FF9E3A, 0xFC601E27, 0x658EF7F0, 0xB45FF508, 0x36A9A571, + 0xCE75E7E9, 0xC4BF9261, 0x3A261099, 0xF1B1CE3E, 0x3D28A165, + 0x3435D2FF, 0x70830AAE, 0x8DFE14F7, 0x3E27CDC1, 0x97BE4BA1, + 0x33F8D0E2, 0x9B2E7BCD, 0x1923B1C, 0xAA248E78, 0xFDA8AEB9, + 0x7825E511, 0xBF20B777, 0x218E4234, 0x7B5D1181, 0xA08988A0, + 0xD9009231, 0xEB15A567, 0x47E045A0, 0x3C515808, 0x35194ACB, + 0xA476304A, 0xEF738BD6, 0xD035FB8C, 0x3B2013F4, 0x4DE60F26, + 0x361431DC, 0x82ECB228, 0xAB22266, 0x4E056EEE, 0x6642D288, + 0x48D851E3, 0xE05D55D9, 0xDC2D6D4F, 0x158F7F48, 0x5D7F7D5A, + 0xC2835158, 0x793509C5, 0x479DF33C, 0xDEF0696A, 0x9FC2BECD, + 0xF4EFC675, 0xF8D1FF02, 0x493D3BD6, 0x7FA1C10F, 0x641B324D, + 0x996DBDDD, 0x24098529, 0x81CCFC35, 0x47F0BE17, 0x5E241815, + 0xF7F62788, 0x261CDAF5, 0x10CBC4B8, 0x5D6C6A7B, 0xD671AE81, + 0xB2C8DCD9, 0xD215CB7E, 0x3403AB1B, 0xA7C5999, 0x4675A50, + 0x369C560C, 0x32C619D9, 0x4FD2E12E, 0xB4A20359, 0x37E93502, + 0x5EC0CE10, 0xB374340, 0xB0DF0419, 0x5960ED4F, 0xF0A7770E, + 0x7F504F30, 0x54A92972, 0x3E9848B8, 0xCD980ABE, 0xDE69D570, + 0xA9FDFFBD, 0x9812C681, 0xDAFCCF4E, 0x2B636CB5, 0xB2B9FF2D, + 0xB9972800, 0x701231C6, 0x2E1108F8, 0x8C323A3E, 0x20A17A77, + 0xF2C6CC7, 0x44C5FD1C, 0x731622D4, 0x9BF0C91E, 0xB61CD1B1, + 0x61FA9CF2, 0x5E460518, 0xF75A1C06, 0x417CCEE2, 0xB45E0FB5, + 0x53DC30E8, 0x500CBD7F, 0xED61DAE3, 0xEFE91818, 0xB56814BA, + 0xD37D84C8, 0xD5DA9ED7, 0x5F40F92, 0xF1507FAD, 0x2CC74A65, + 0x32AA6279, 0x33731317, 0x30E09F03, 0xE1D9C403, 0xC21E638A, + 0xA7394D05, 0x3879F710, 0xDBB52C37, 0xB7780268, 0xE268E178, + 0x9F8072D3, 0x97CC035A, 0xEE65287D, 0xA197441A, 0x21C8AFA4, + 0xB81B50A9, 0xAF6ACC93, 0x7BB55B77, 0x564A0BD4, 0x17F7A6A9, + 0x36627846, 0xDCE746EA, 0xBB9762DE, 0x47B5B8F0, 0xEF5DA4AD, + 0x1922E420, 0x15F9299D, 0x243DAB0D, 0x953C67A3, 0xF3DA71D8, + 0x57122A3E, 0x423A78B, 0xC4A53000, 0xFBE92583, 0x968F3AE, + 0x61629123, 0x792FA07B, 0xBF45729D, 0x99DDD38E, 0xA14565FC, + 0x268E9E3F, 0x7EC9286, 0xCCA1D92A, 0xF06519DA, 0x22396664, + 0xD5DAC24D, 0x71BB4DD5, 0x7D329BB3, 0x401DAB69, 0x19D3E40A, + 0xB6F40F32, 0xE8D1CAF8, 0x5CD5F35D, 0x6F662316, 0xD38D1A6C, + 0xF86E720F, 0xE165D1B9, 0x1BC14E79, 0xC19FB43D, 0x891C013B, + 0x44AED4DC, 0xA7351AAC, 0x5F707A18, 0x3850148, 0x4A425E1, + 0xF7DD6EBD, 0xE0C3FD0E, 0x8266A425, 0x3BA17650, 0x48753ADB, + 0x679FA015, 0x88771712, 0x2174B185, 0x29F9A85A, 0x1560964A, + 0x198E4FCD, 0xD3410A86, 0x9186793D, 0xDAFC5C35, 0x971F4CC8, + 0x1F8F0E8B, 0x11A884F2, 0x66E6D2AC, 0xE85ECDB0, 0x86C76472, + 0xDF3B3320, 0xEEF446A6, 0x834CF19B, 0xECEA602A, 0x46C680AD, + 0x807BA92F, 0x4B3FC42B, 0xEC229845, 0x3FE389C1, 0x63E042D7, + 0x6C855119, 0x7B1ADF33, 0xE1B9CAE0, 0x62C20BAE, 0xEDF0E919, + 0xA50FC7EB, 0x2399262F, 0xD6F88130, 0xE2ADA5DB, 0x7D07BC3C, + 0x36A922F3, 0x7693B84E, 0x3015CD0C, 0x1D1047A7, 0x5D3A75A5, + 0xEE6F1CA9, 0x734BD19F, 0x3308DD73, 0xCEBBC9FA, 0xF79DD5A6, + 0xA41CF168, 0xED762FD8, 0x6642159, 0xA63C5CD6, 0xCB96A282, + 0xA29D9F5C, 0x45CC6CD4, 0x344611EF, 0xC345FE03, 0xC55ADDE0, + 0xB2B8374C, 0x14F730B1, 0x301D9266, 0xA2D98FD8, 0xBC107DF, + 0x59905EE3, 0xDB3560DF, 0x1D49F4F3, 0x785F8E0B, 0x8B116097, + 0x56154F60, 0xE312D829, 0xE0AFAE9B, 0xEAE3692E, 0x95915B8F, + 0x83BEEE75, 0x48C1C92, 0x8166D95E, 0x697FECA8, 0x135DEBF9, + 0xF83E6507, 0x11570809, 0x4862CBDE, 0x820E288D, 0x6CA59B2B, + 0x49DF6AD5, 0x86F41C43, 0xDD128A28, 0x601198A0, 0x3DDD49CB, + 0x95F3ACCE, 0x500CD9D6, 0xF54A50F2, 0x9936957B, 0x7C881875, + 0x743B055D, 0x44FD7934, 0xAF2253BB, 0xA2F4A27C, 0xBA8E1C2B, + 0xCCFA3259, 0x892FC73F, 0x283E74B4, 0x86119027, 0x87961F02, + 0x1D015187, 0xBA83B762, 0x61948B32, 0xAC741667, 0xFA9E0E39, + 0xD440D9CB, 0xED93F9F, 0x5FA97905, 0x2F5F82D8, 0x92EC7646, + 0xC60B3F9, 0xAA28822A, 0x7BA7CD3D, 0x3E41A20B, 0xDE4441A9, + 0xC75E539B, 0xD9D568C2, 0x2DCAE06, 0x7762550, 0x21C2D5EE, + 0x95CB6C94, 0xE31FC800, 0x3C03C172, 0xE166E564, 0x359C5102, + 0x7F717599, 0xBE301B47, 0xB207FA5C, 0x38B8B24B, 0xE6EFF05D, + 0x9F09D305, 0x31A27808, 0xC56D934F, 0xB440BD60, 0x52B1AAC4, + 0x78654045, 0x106A67B8, 0xF2A861E5, 0xC45D72B0, 0xA8FF8296, + 0x97F475A6, 0xDC222733, 0x7A835D7A, 0x45774E9A, 0x9E558C34, + 0x1124605D, 0x1689FED3, 0x70AB9928, 0xADBF8E55, 0x9C09EE27, + 0xF95A8C49, 0x75CD52D7, 0x4FC7275A, 0xA46C29F6, 0x747D788, + 0xA3347E5, 0x5B08AB02, 0x13CDC08C, 0xEDB65176, 0x6B36600A, + 0x26F5AD2A, 0x39949D1, 0xA1C8F6E5, 0xEBF0CEFF, 0xAB60A06B, + 0x10E522E8, 0x80E056D8, 0x1B301392, 0xDC3E0B07, 0xE10174EE, + 0x25DC4733, 0xB4E5A24A, 0x4B569CFE, 0xCCFE9F0D, 0x19BDC038, + 0xF8A0A718, 0x9944E8E0, 0x9591528, 0xBF27BDF1, 0x2C160255, + 0xF9E2F1B, 0xCE4FD96B, 0x703B2A77, 0xDB6EB2A7, 0xBFC2FA6A, + 0x11D00F81, 0x9540FD8D, 0x75849882, 0x183AC87C, 0x91DD1783, + 0xA3A0CC0D, 0x47F1CED1, 0x4DA4EE62, 0x819BA59E, 0xD5DA1DA5, + 0xDC218BF5, 0x899CC3A1, 0x1DECAD82, 0x77E193A5, 0x9F390C10, + 0xF5FCD674, 0x1E43657A, 0x6B61D25E, 0x99B9140E, 0xFEFB9CF9, + 0x6569445D, 0x14C9A2AF, 0x85A33FB1, 0xE4029ADE, 0x4FABD0FB, + 0xDE02379B, 0x65C8311F, 0x3CF60630, 0xC8B179FF, 0x9D83CE64, + 0xFF683C7E, 0x6D796948, 0x249B0AFA, 0xC5A65FDF, 0x252DA26D, + 0xFE92E52E, 0x90D081E5, 0xC5A8E180, 0xEBDB0943, 0xB0E7C78B, + 0xD5A89E4D, 0x684EE280, 0x8AAB613C, 0x6BD1547, 0xD12F7355, + 0x9C5D1363, 0x91E410A4, 0xDC841FBA, 0x703A9371, 0x79F8663, + 0x553650FC, 0x633CA726, 0x20107BD7, 0x2565F252, 0xCDD93830, + 0x3446CF7, 0x92B6B42A, 0xA070B2D1, 0x5E0384D1, 0x7CC5A19C, + 0x6890558F, 0x10D308AA, 0xDFF3016C, 0x1093AA3B, 0x8927683A, + 0x9259502B, 0x2B544B7C, 0x419B1B1A, 0x22D9E939, 0x568ECCEE, + 0x4F3CE09B, 0x8B990521, 0x8D6906A3, 0xC15DEDC4, 0x98384A4A, + 0x8F2F2652, 0xEDB9D614, 0x1D010AC3, 0xA2CDC134, 0xEEE9A9ED, + 0x241DB9A2, 0xE9DB9AE7, 0x7A788F9E, 0xBD0778B7, 0x27373539, + 0x7C6B4A4B, 0x3C7A6B37, 0xDE1C625, 0xC1256E67, 0xB8E69163, + 0xCC05D09B, 0x728A1427, 0xECAC2530, 0x1DD40BC8, 0xEFE42E56, + 0xB4266BE0, 0x9AD3F869, 0xDDFC2F60, 0xEF29B3F7, 0x7C15F90A, + 0x705C2992, 0x99AC7AEA, 0xCF1F09A0, 0xB41F14D9, 0xBF3C252C, + 0xF3483286, 0xD3AC398E, 0xB84BC93D, 0x6B780D11, 0xF682D379, + 0xB8A062C2, 0x9A003A9E, 0xF18F54FC, 0xDE81BB83, 0xE84C5234, + 0x37CB67FA, 0xDB685C6, 0xBF2BF28D, 0x8CDE583, 0x94CCD0BD, + 0x8BCAF516, 0x31BE93C2, 0x3ED4B623, 0xCD23346E, 0x8254E7A0, + 0x6091EF1F, 0x17A42562, 0xC9821677, 0x447B6623, 0x19D9356C, + 0x4A1C1953, 0xD1F3B7F9, 0x99F8388D, 0x62F22304, 0x5EDF1ECA, + 0xB6C9FC2F, 0x42968E22, 0x531BD76E, 0x25E6A95A, 0xA1669784, + 0x8B915BD2, 0xA5E21483, 0x5ABE3226, 0x605C0E15, 0xFDE713CC, + 0xFAC58D3B, 0x44FAF6E8, 0x41E2D699, 0x8EE11E34, 0xB03BE4F6, + 0x75054C0D, 0x1AF2D37, 0xF38E6829, 0xE7F2A519, 0xC9CF2CFF, + 0x996DDE8, 0x395AC493, 0x42AFF184, 0xB380B71C, 0x11AA0B90, + 0x66DC636, 0x56557CA8, 0xCB8CAA43, 0x9EBF806E, 0x63F66159, + 0xA011191D, 0x17B0AED3, 0xB9621251, 0x2B189E3, 0xD45A5D7, + 0x23009D12, 0x5DEB7918, 0xFDFB1FC8, 0x46808A73, 0x91D29330, + 0xF872C15D, 0x7BE90206, 0x257E9FCB, 0x2E52FF67, 0x1852DDF9, + 0x6A2C5C49, 0x6ACF891B, 0x29FFB0E2, 0x76E32CD2, 0x588799, + 0xD71D970E, 0x9B079EC8, 0xEBD25420, 0xDDB60276, 0x761B106F, + 0x871473C4, 0xBC697CE2, 0x5378E0E9, 0x8DAECE28, 0xE5B275FA, + 0x6E6E332, 0x853884E7, 0xD0FFF1A2, 0x722D372, 0xDD5A754D, + 0x87CDDA3C, 0xA9B629C0, 0xAB2E650D, 0x1709413D, 0xDAE63819, + 0xC60DE8CA, 0x9F344BD6, 0x8E651EF9, 0x3B6A8019, 0x95CC1296, + 0xB12DAEAB, 0x8D550156, 0xF14E85AA, 0xD2547469, 0x6336E320, + 0x223B05B9, 0xB88AD493, 0xEE14916F, 0xC78AF1FE, 0x65FC2787, + 0x778FA85F, 0xBA23A57E, 0x957EA954, 0xAE4F9577, 0x47C38D4F, + 0xDB7BCDC9, 0xBA13E42E, 0x46B01094, 0x1A15F5E4, 0x315AB789, + 0x9E44B54F, 0x8C690B2F, 0xDC4954CD, 0xF176F3FF, 0x9B154C06, + 0x112BD6D0, 0xCB120BBC, 0x11101771, 0x1F29A19D, 0xC3F8193A, + 0x805D6739, 0xE3B00ACB, 0x23DD9494, 0x4F88EBA5, 0xE6F32E0E, + 0x4B76F089, 0x43B66BEB, 0xF2420B12, 0x2CFC5E01, 0x1C68D3DC, + 0x30C1BD38, 0xF3A0FCCA, 0x2AF13CD5, 0x13E38185, 0x2DEE2A21, + 0xFC318E26, 0x1954D4B6, 0x3FB86424, 0x24D698F1, 0x4AB76D48, + 0xA9E87BD9, 0xCE1DD2F2, 0xF5904D9F, 0xF614DB18, 0xF83111D, + 0x1FB56EFD, 0x5CBD08D8, 0x2D8D4884, 0xE388C534, 0x413D5BB8, + 0xEB6D14D6, 0xAE54E361, 0xF73D926B, 0x43F27197, 0x7C50A2E5, + 0x10EDBD6C, 0xD151B569, 0x47C50C06, 0x8FD59E74, 0x551C6841, + 0x2EC2B6DC, 0x5CEAB3A9, 0x1E6A1609, 0x3FB07FED, 0xC0D5849A, + 0x6354A21B, 0xEBF18830, 0x2BB3EBBD, 0x9D4DF510, 0xBBBE1103, + 0x918D6DDF, 0x3FEE7A8B, 0x4FC47254, 0xE0E1EA65, 0xF3DDB31A, + 0xADF8DE67, 0xADA31FAF, 0x2BC0B8A2, 0x184B7432, 0xFDB2E733, + 0x236B014, 0x21062C, 0x8FAAD8D7, 0xA1DA7E44, 0x3EF7F42F, + 0xA67AAB82, 0x9238F0D8, 0x42F93C63, 0xEF0F4BA1, 0xE61DC644, + 0x994EF92C, 0x71A58613, 0x371665E5, 0x82E77BA1, 0x2FFA1DAE, + 0xFE19AAA0, 0x95C72A53, 0x6A21395F, 0xC03F853C, 0xBC7B73BC, + 0xED62A949, 0x4F7D3C52, 0xCACFB353, 0xA1629BE9, 0x16255784, + 0xAE465FC4, 0xE7FC2626, 0x5E9B0FC2, 0xD109084D, 0xE30E7B89, + 0x94CD7424, 0x6127AF6E, 0x7D08ED7, 0xFA0B9293, 0x450A112F, + 0xD0D79344, 0xA204F8B0, 0x5F825780, 0xD681148D, 0x71C6AE83, + 0x1DF62587, 0x99ABC8A6, 0xCFEE8131, 0xFCD11719, 0xD0D48B0E, + 0xCC4A710E, 0x7414791C, 0x22167734, 0xD17FE049, 0x5BF15C46, + 0x30B718E0, 0x6E85104E, 0x52F72575, 0xA17F09E1, 0xCDA7B24E, + 0xDAF7D03B, 0x3632D94B, 0xBAF4E9EE, 0x390CD998, 0x168C055E, + 0xBC2D8D0D, 0x35E9F642, 0x89757E1A, 0x2BB98011, 0xC19BCD15, + 0xEEB73587, 0x6A5194EB, 0xC2C1B4BA, 0x3C8F73FC, 0x8F075D29, + 0x42D39406, 0x6674167A, 0xC0904A73, 0x1158FE6B, 0x4CAD2FAD, + 0x9A7EC8A5, 0x651960A6, 0xD0329ECA, 0xF5130525, 0xCC7C40CD, + 0x259AA3D8, 0x9669412D, 0xB92D39A5, 0x29B217D2, 0x27A07E25, + 0x9AFFD359, 0x7E8F5AC9, 0xCF7C0F61, 0x5B4F8D7D, 0x31C4E97E, + 0xBDB9599C, 0xA85BD7E0, 0x87F0BAAB, 0x2852E628, 0x377BD41D, + 0x4B54844, 0xDABF47AE, 0xA1B7AF6B, 0xCCF57165, 0xA90C4348, + 0xDC1CE2FB, 0x42582D37, 0x2892F4E0, 0xB89AC8E9, 0xB2718E40, + 0x93BCCE08, 0x5606C693, 0x1952D10D, 0x96609D8F, 0xEE3BC3C7, + 0x2DFA50E8, 0x5582FD75, 0xBDC2618C, 0xA3D922EE, 0x8F766106, + 0x184ED901, 0xDAABDE09, 0x40CBD4E2, 0x4A9A2A70, 0x9814D393, + 0xE394A090, 0x9EA06A4F, 0x2EC8C8A2, 0xFD2EAFF0, 0x2F6C96B5, + 0xBB17EF37, 0xDA677FE2, 0x2357E330, 0xA8C9DDED, 0x735A7B2C, + 0x41C2B39C, 0x787E099A, 0xFBF8204F, 0xA56A4B69, 0x7DE2860, + 0x34299BB3, 0xD1CAE881, 0x5F452DDC, 0x700904E8, 0xC3B47017, + 0xF7040305, 0x5C42BE94, 0x88AAAE53, 0x9FCAAD72, 0x2774D420, + 0xDD685357, 0x80499592, 0xC5FB26E7, 0x90BA598F, 0x4A13D60A, + 0xC6D5F72, 0x97C35532, 0x6580493F, 0x9D31E266, 0xEF926A38, + 0xF68CF9C6, 0xF770C570, 0xCA18C06A, 0xFA2BB2, 0xFBA375DC, + 0xC2FE76ED, 0xB91611FA, 0x528A8EA5, 0x360A527, 0xF631D04B, + 0xF0C67ECF, 0x4E490A69, 0x19DB46F0, 0x497DFBF4, 0x58E490FC, + 0x24A51378, 0x186BDC14, 0x90E633A3, 0x6D6F8D95, 0x2FDE02DD, + 0x4B2714A6, 0x6FC87FE0, 0x21569667, 0xDCC31F06, 0xC9D9DFD0, + 0x830AA4A4, 0x78FBFE69, 0xDF17CD55, 0x3952AAA7, 0x9A4B5A7D, + 0xB1EBF3EF, 0x4F3BC1C9, 0xDFEEBF40, 0xAB130CC8, 0x1EB84425, + 0x4625E802, 0x20B990D6, 0x4E36869F, 0x5EEC0472, 0x29194460, + 0xCA425ECA, 0xEB0742C, 0x17D07C02, 0xF38BCA14, 0xBC9D555E, + 0xF15822E7, 0x89CF96E0, 0xAA848F9C, 0x90731AC9, 0x86EECBE3, + 0x308F3257, 0x5FF375DC, 0x1E62C041, 0xFDB6A3E7, 0xDFEBED8E, + 0x8FC77E76, 0x6973E542, 0x2AD1616C, 0x99B549C6, 0xD28CF364, + 0x88C87768, 0xECA2CFB, 0xA0D0B060, 0x42DFFD8, 0xAF80A6DE, + 0xFF323760, 0x1CB2DAAA, 0xD11DE4FC, 0xEEBF565A, 0x9C986CAC, + 0xC1C95B3F, 0x6868BF0, 0xF5604930, 0x316DD9EF, 0x1231D331, + 0x95E38E67, 0x7D30C191, 0x354804BA, 0x265EE5E, 0xC6728C70, + 0xD36F32D0, 0xBBEA0ECA, 0xD055ED76, 0x9135E317, 0x8A7B9770, + 0x4D1344B0, 0xE9F29AE3, 0x7BA303B9, 0x2C38AEC, 0x82ABCBA6, + 0x7729F177, 0x71793932, 0x6FE6E38D, 0x1F8416B, 0x147D8310, + 0x6A962FEC, 0xFE2F100E, 0x4FB1D511, 0x3D38AB33, 0x58ADC416, + 0x64B07504, 0x458CC4B4, 0x584BC93E, 0xDE49B6D1, 0x7347876, + 0x4A2C3EB6, 0xDF5DE09C, 0xBFD376DC, 0xC9F451C5, 0x5F793A0, + 0x892952A2, 0x15060767, 0xE1E3B589, 0x4D513C3F, 0xAF3D2CC7, + 0x289DAA2E, 0x8C711417, 0x62E5E006, 0x3BECED98, 0x99E73ACC, + 0xDE156054, 0x1283655B, 0x5123FC41, 0x3DE21841, 0xC032F050, + 0x94B5151F, 0xA5577757, 0xCC0C8DF, 0xBDB52821, 0xD530FAAD, + 0xD070D8FC, 0x46F5BB68, 0xB02DFF88, 0xD4923EA8, 0xC85A5622, + 0x93E834A3, 0x38E84468, 0x79408C75, 0xCCB635, 0xE76BADA2, + 0xC2296DA1, 0x711543BB, 0xF441F4A2, 0xBD18127C, 0x8385BFB9, + 0xD350D4D, 0x90FAF999, 0xABD1A695, 0xFCEE12C7, 0xF428912A, + 0xC9759F80, 0x6DB6491, 0xD1421D30, 0xBC398DC4, 0xB8E0A889, + 0xC854AA72, 0x82CAAF64, 0xBB6A65BC, 0x6DCB2D0B, 0xD215ADB, + 0xF45033DE, 0xC1300029, 0x665C61DF, 0x756D1875, 0xBD2CF722, + 0xC477E3C7, 0xDDD97C9B, 0x89AE48E4, 0x65000FDC, 0x1FD717CD, + 0xBEEA764A, 0x8FC2DCB7, 0xA162EFB3, 0xD4AC2490, 0xCDA9A72A, + 0xBFB4EE17, 0x66C73CBB, 0x6B7CB021, 0xCC5AF099, 0x5389E8B7, + 0x7668286B, 0x31A223BC, 0xA66475FF, 0x9C3DDA93, 0x2F3171FE, + 0xDB89A7DA, 0x1699616B, 0xA380F010, 0xB05D7388, 0xD774EA44, + 0x64D6091C, 0xF23298F8, 0x71C88081, 0xF90C4A04, 0x2FBEEA4F, + 0x2F9178BB, 0xF8723D8A, 0x1C07FCC8, 0x36D24E08, 0xE02A8B61, + 0xFD6312AE, 0xA7DDCE9B, 0xAE45AC52, 0xCA2EC55C, 0xEEC6BE42, + 0x244F3D79, 0x994FB339, 0x8316CC43, 0xE3CEC898, 0x8D37639, + 0x833D21BB, 0x4333A2F7, 0x95F3B0C0, 0x7258174C, 0xBFCF0EF7, + 0x9A7F4883, 0x71F2406B, 0x16B2BA04, 0xE1BCEA70, 0xE3C6798A, + 0x3FBF481C, 0xF5A8D117, 0xB37ED250, 0x49AB5E0D, 0x2793A7EB, + 0x45DF69A7, 0x4EE4B815, 0x98259530, 0xC223CA40, 0xDB7B208A, + 0x4AD3C0F7, 0xE7C33E50, 0x49FD7631, 0xA228021B, 0x2C27FCB2, + 0x5F77BCF4, 0x65D593D4, 0x7C700797, 0x6E67920A, 0xEABAF033, + 0xBFC8B68B, 0x8835B368, 0x90CACC99, 0x6B90E022, 0xF2466D89, + 0x432DED25, 0xEFC94B45, 0x3116C3E, 0x1BBFBC45, 0x8FBC3D21, + 0xFB2039AA, 0x50679156, 0x450F8837, 0x73C7F87D, 0xC27898A7, + 0x7F48E602, 0x5064FCB3, 0x1EB6F58F, 0xE647C845, 0xBC8E84EC, + 0x5C4B8FFC, 0x440A88B7, 0xA490480E, 0x371DC115, 0xE1F236FE, + 0x4D65A2C5, 0xA965B0B7, 0xD05512FB, 0xDFAB9656, 0x191C627C, + 0x56B7FAC3, 0xF304A2E4, 0xC7ED6DF0, 0xD09B8C49, 0x1A1E777B, + 0xE70746BA, 0xEB582E9C, 0xFA6014DD, 0xB3B67784, 0xD3F64D81, + 0x318872EA, 0x4D241611, 0x134DF119, 0x2EA55DFA, 0x71A8D182, + 0x15AFE856, 0xD5CD885A, 0x5EA2B899, 0xF87BC7FC, 0x25DE8D6, + 0x93837315, 0x341C3698, 0x58534F, 0xF10652DF, 0x18C92AA4, + 0x17E969AB, 0xC12D08D, 0x6B0D0FBD, 0x40ACD3E2, 0x8C3AD43C, + 0xFDE55C9D, 0x25A58094, 0xBBCAB168, 0x2F06ECA1, 0x9D23A101, + 0x6F850449, 0x769C743A, 0xB63FD349, 0x3B3C852F, 0x1EC89061, + 0xFE8C7369, 0xA19C0F73, 0xB682F1D3, 0x48DAE3D4, 0x7F9FD390, + 0xEF784A6E, 0xCB23F15, 0x7BEB1E0E, 0xCBE90203, 0x6979F11D, + 0x251C50A4, 0xDAD9C59F, 0x5E4E5BFD, 0xCCD4DF48, 0x72BD66E, + 0xE7FB1B35, 0x75B4B83B, 0x29E9282A, 0x2590317D, 0x7835F9A1, + 0x25D3602C, 0xCFEC2E4F, 0x9CA2B0E7, 0xA4714302, 0x8F3D53C4, + 0xDE00F109, 0xC26D6273, 0x3E8DC623, 0xE3A972E2, 0xF67DF096, + 0x781682A5, 0x6C16F144, 0x49DC8D17, 0xB2EB82EA, 0x3CB93D91, + 0x44D4D3C4, 0x556040F, 0x1406DD74, 0x55FA83ED, 0x91C35357, + 0xF5A1C63, 0xA64E34D0, 0x7DF58C80, 0x62E97E52, 0xFBA1A2FE, + 0x8CB29D60, 0xDC1AEDE5, 0xB260BBF, 0x1AD9C6A6, 0xC60E9788, + 0xAD9DFA42, 0x2E422C17, 0x51CB5E86, 0xEB840466, 0x2666D5D8, + 0x7A0F7C62, 0xDE052A31, 0x6F0330C4, 0x9142D4AD, 0xDC8578C9, + 0x978F3E76, 0xEE43CB4D, 0x14E7EFC7, 0xB50B064B, 0xD7FB2900, + 0x67C4F4A3, 0x4D1193D7, 0x5091FB73, 0x3EB9C846, 0x960BE069, + 0x88250E7E, 0x94503385, 0x1C1F244A, 0xCFD72CE3, 0x8CD5F105, + 0x2B34131F, 0x60D266E2, 0x16BA806A, 0x25C25A42, 0x5FF6C068, + 0xD23A191F, 0x7AB5C53D, 0x9EA37FBB, 0xD1AD4B07, 0x40BCB39C, + 0xF45C8526, 0x80FEF5BF, 0x197D6D43, 0xD56FD4D0, 0xF39E498B, + 0xFB4F6847, 0x84DF289A, 0x2246F5CF, 0xF979B823, 0x42DCD843, + 0x1AB1BB0C, 0xABEC5FCE, 0x6E7EBC1, 0xE013DB54, 0x73BC8A04, + 0x88D0F71E, 0x4D93B6D8, 0x57B0B7CF, 0x99371728, 0x86B129E9, + 0xF4EB3DD2, 0x6956AA9D, 0x4C84AA0, 0xFD22CA10, 0x36E6915F, + 0xC830D7EA, 0x1EE1666, 0x1036A43F, 0x3FC86E7C, 0xF10F9CD2, + 0xEFF5F21B, 0xBF9082E0, 0xDD0DD00C, 0x80524F27, 0xDD5A3222, + 0xEA53B93F, 0x7FDA09AC, 0x89840C97, 0xC3A9BDCF, 0x1EC26899, + 0xEBCAF99C, 0x2EBB3226, 0x936A3254, 0x2E1E1786, 0x57E4CB9C, + 0xE5CDBE5, 0xFBA2458C, 0x48F3D0EF, 0x74FD06AB, 0x96C30795, + 0x14FEF0E9, 0x2F5FBA0C, 0x3CCEA60E, 0x7BA0354A, 0xCD7329FF, + 0xD4169550, 0x5FAA5E66, 0xF0C25CA2, 0xEBCC8065, 0x3F147D8F, + 0x5ED3293E, 0x6457117D, 0xE4CF4B98, 0x11F1E74E, 0xC13F47EC, + 0xBC7E22DC, 0x22512D19, 0x9140ACBB, 0x490D52F, 0x3E2D54C2, + 0x9FCBBC1B, 0x89646A33, 0x9FE4B65F, 0x92CE9ECC, 0xFBD59FB9, + 0xCE95DAD1, 0xBBCDE794, 0x9C0FA1C6, 0xCFD90F8B, 0x494C1770, + 0x21AD2AAE, 0x58EC00A6, 0xB0848A25, 0xEC4FEB5E, 0xFF1517EC, + 0x52871C07, 0x105E05B0, 0x178B1913, 0x18023805, 0xB16BBC6B, + 0xF8522A7F, 0xB17DEC22, 0x3808ACAC, 0xBC5B9043, 0xBEC01BA4, + 0xBC6CDA0B, 0x17906D50, 0x8422829F, 0x51C9AFB9, 0x54F78CEF, + 0x72CEEA16, 0x76A74B94, 0x7EC063E2, 0x51C65B1D, 0xD97ED9B8, + 0xDE89F034, 0xB5AEEFA0, 0xB88D3E9D, 0x9D4C57AE, 0xC8CEA9C1, + 0x941A74D3, 0x8E2FC33, 0xEDCEB551, 0xB91FA3E4, 0x8BA2261F, + 0xE558E0F2, 0xA4E81979, 0xAAE31455, 0x70B62249, 0xD48D1A67, + 0x11767EB6, 0x823DFECA, 0xC815C538, 0x2AB67EE6, 0x22FA86BA, + 0xD7A1F96C, 0xBA96E382, 0xB75B3FB7, 0xCB705FAF, 0xD1B9D3E2, + 0xD4C8DC2F, 0xF954B0A5, 0xDABE493B, 0xCA3FBB37, 0xBBDC387C, + 0xA30C87D6, 0xB5B493D5, 0x584F5615, 0x90FB6370, 0x5544A92D, + 0x980F7FA2, 0xF1459235, 0x130B11BD, 0xC7A44998, 0xFEBCA776, + 0x7943BE84, 0x72C99B04, 0x353F6042, 0x66F5C2F2, 0x9C5B2CC5, + 0x9FF06E41, 0xAC9E5492, 0xFF9A1CC8, 0x4429DE05, 0x97845307, + 0xDBA36668, 0x40BEBB2F, 0x606DBA6A, 0xDE7A4225, 0x9AF7FB71, + 0xE97A0E6C, 0x99C2AA59, 0xE00C525B, 0x5D4F9521, 0x89C5D7BB, + 0x18481C9F, 0xA27A1F59, 0x2A6267A3, 0xC467981A, 0xE04CE94D, + 0xAAB2AC1D, 0x5FD1AC86, 0x8F33E395, 0xE1FBE285, 0x636C2961, + 0xD838584E, 0x2F845D90, 0xAD52A8ED, 0x8F8C841B, 0x829A3861, + 0xAA0FF413, 0xA079F240, 0xB15D507B, 0x93722B10, 0x833AF929, + 0x4FB5B879, 0xEDD3031D, 0xE22CE740, 0x9ADF835A, 0x13A0C7A3, + 0xD5791B98, 0x99D9409F, 0x9F776A0E, 0x8665EC9F, 0x7301EF7C, + 0x9B341035, 0x59EADE7F, 0x242C1ECA, 0x20FD13FD, 0xE22DAF76, + 0x3859E84D, 0x6ED83DA, 0x54ABF391, 0xC43F4740, 0x4661F86, + 0xC6442213, 0x7FEAF294, 0xC0CAC024, 0x38B9FA9C, 0xFFF33259, + 0x1AD86335, 0xB365445F, 0x54B58378, 0xFD7AE96A, 0xE019B245, + 0xCF51C4EC, 0x604D7EE, 0x7B40C023, 0xA5E168B0, 0xD7B8C643, + 0x91C028D3, 0xCB939A6B, 0x169B0123, 0x96FF8CFA, 0xFCB3E126, + 0xB95C01B1, 0x1758BFB6, 0x50F50968, 0xF774D536, 0xC5A8BFE7, + 0xE2496BE, 0x6FB8D434, 0x3F7FEDB9, 0x9BDEE991, 0x1CBD2009, + 0x2CE74DB4, 0x1CB51025, 0xE965ECE6, 0x89100034, 0xA089E8C0, + 0x5860A65B, 0x9C4D349E, 0x54898852, 0xD07C9738, 0xBC677E89, + 0x75B5D0C1, 0xCFD435AF, 0xED550357, 0xAED9301, 0xDCD1734A, + 0xEDCD21D7, 0x69F6A592, 0xEF8009F7, 0x44374358, 0x9405770D, + 0x668AC4FA, 0x50507E61, 0x2DB19DDC, 0xA9BDD137, 0xFB722699, + 0xBC067E88, 0x88740174, 0x717CCEDC, 0x9F7F1E11, 0x389F4CC, + 0xCF4D0018, 0x24588FF1, 0x25C9F951, 0xDA660468, 0x6C09D91C, + 0xC9F788E, 0xDD4DF43F, 0x8B04484A, 0xC7F67DDB, 0xD2939F8B, + 0x96BCFDE5, 0xF6DD10D8, 0x1124A3BC, 0x7C281FBB, 0x5FAFA71B, + 0x58A9C493, 0x4747793C, 0xD3B79E72, 0x357AA675, 0x8E94A74B, + 0x1994025, 0x95D10FB8, 0x5C64AE63, 0x9E37973F, 0xFCE67009, + 0x8480F94E, 0x34DA26F7, 0x126CFB46, 0x206AAA6B, 0xBA0A6200, + 0x8DF3F67F, 0x4936802F, 0x950F62F8, 0x17E64C44, 0xC70E523E, + 0x2F910727, 0xAF7C5BC, 0x9EA24508, 0x1E945729, 0x55E48FBD, + 0x897CB57, 0x8C134FEB, 0x54E68223, 0x91912044, 0x7A461BDB, + 0xCE91309, 0x72135AF, 0xBF94D484, 0xDD752690, 0x32248D12, + 0xEA092355, 0xC24CA220, 0xE8A95D65, 0xE4E2EAE6, 0x664763E9, + 0x71F1AA47, 0x832550FF, 0xFFA73B6B, 0x96F5DFF6, 0x60CB9B66, + 0x75F29F5C, 0xF863AC8F, 0xF16993FC, 0x3503801C, 0x3D1E8B2, + 0x583CDFF6, 0x62AD49F2, 0x8261843F, 0x826EA9B6, 0x5E2EF3, + 0x8D3848EC, 0x7391A581, 0xDFC466FB, 0xB38DCBD1, 0x4145C3C0, + 0x73F322D7, 0x2B55F284, 0x6B19FBA6, 0xD9446AD1, 0x36C330C5, + 0xB71E4B29, 0xF29F504E, 0xB4FA4CFB, 0x290B6941, 0xA2197E21, + 0xF2AAE27F, 0x1A1728B5, 0xAFF5632, 0x6AEE763B, 0x2962A376, + 0x965D67E7, 0x231A8B76, 0xBD3596FC, 0xD4AE3E8D, 0x58D4D740, + 0x4EA3B6DC, 0x5479A7F5, 0x110A4791, 0x9A772A63, 0x728C4794, + 0x6D6A0801, 0x3F89D9E1, 0x326D1BC4, 0x49B3798, 0x5E2B3CA8, + 0x742C385A, 0x89450FE0, 0x24236A74, 0x81AC9891, 0x7BEF3C66, + 0xACECD674, 0x29009073, 0x94D6BDBF, 0xF2C6CDF4, 0xDBC21EE3, + 0xC65C89A4, 0x35DC5337, 0xBA281430, 0x787521B0, 0xADF8317E, + 0xD5739B77, 0x8567F3A2, 0x374E0CAC, 0x5AFFF50F, 0x9654D41, + 0x4A86EDEF, 0xE16C9A62, 0x59D15E49, 0xA69769C8, 0xA9197100, + 0x1E04CB9F, 0xA926CCB8, 0x5047C429, 0xB7E369C, 0x812F5F0A, + 0xA53EA5BA, 0x9AE5C105, 0xD4C7CC5D, 0xC99E02F9, 0x5BCDFE96, + 0xCDBAA854, 0xCF209B89, 0xBE08E9B, 0x5C73AED2, 0xBD959602, + 0x63C309AB, 0xEE289A4, 0xEDA954C9, 0x5C54F616, 0x3BC34487, + 0x47A3C772, 0xAB0084A4, 0x2CFB8D44, 0xF5F8411D, 0x43F6361D, + 0x12B8467F, 0xCDC437A5, 0xAC96A375, 0x7962CD18, 0x5D728EF4, + 0x66B11DEF, 0x73C87A6, 0xA35AEF9A, 0xC84F12F7, 0xB1EDE9B4, + 0x2F6A1752, 0xCF8DA321, 0x2E37F4E0, 0x4985F516, 0x684E49AF, + 0x56287772, 0xF74F95EF, 0xD994FF05, 0xC1D23E99, 0x81214F78, + 0xA5DF2934, 0xC2B686DB, 0xABC54017, 0x6918D067, 0x737A798C, + 0x3904B21C, 0xD4CB6EFF, 0xC256E4F8, 0x38B0CD4D, 0xE2D27089, + 0x75A00DC2, 0xDC1D5E7B, 0xE2295307, 0x2F0A683C, 0xD00AF450, + 0xE45C3252, 0xD86804C8, 0xF9628DB9, 0xEA011DB9, 0x6A67523A, + 0x488B54B3, 0xA292CDEA, 0xB1D1D89A, 0x17415325, 0x3EAD3D80, + 0x5D092525, 0xB5880E29, 0x1104A8AF, 0xBC177790, 0xEC730159, + 0x11B0A1AD, 0xB809FD7C, 0xB23FE31, 0xCCBED7C8, 0x45B7F7BF, + 0x9491B0EB, 0x1B1A90F9, 0xE34F4317, 0xF060A5B3, 0xF795EF1, + 0x8254A941, 0xC6CC30E4, 0x770FC40C, 0x17EC9C1F, 0x20DA83EF, + 0xF9CCBFC9, 0x9D0675AD, 0xACEA7EB3, 0x56326F5C, 0x74D4DF3A, + 0xA8FF9A9, 0x8F55E3E2, 0x5B0D12F1, 0x12DDB28C, 0x95FADBED, + 0x81F48694, 0xABEE8392, 0x90E96B15, 0x2C44972E, 0x4E2D3A4F, + 0xE8D34D14, 0x83C03E59, 0xDC295E2E, 0xDDEA452F, 0xC2A2A33F, + 0x617210DE, 0x69542DB0, 0x1DD96D24, 0x3E3871D0, 0x9DDDAF6C, + 0xBD326CD5, 0xD87CE143, 0xF3C79B3A, 0x7F811CCD, 0xDE1B1502, + 0x8075EA04, 0x9D09F1DC, 0x8CCBD152, 0x669F35C, 0xC9414276, + 0xA2BFFE0E, 0xF8AAE650, 0x190C1AE7, 0x2DBB4A7D, 0x575B247D, + 0x3A599D3E, 0xB09B4DFC, 0xCE4904A0, 0x63C72670, 0x15A3BD05, + 0x799B50CD, 0x19A2718C, 0x4142750D, 0x9013BE74, 0x21288938, + 0x590BD2BB, 0xE4303149, 0x46B308C0, 0xD2BB7D56, 0x1BFB248, + 0x943B2E72, 0xCAB18644, 0xFCC921C4, 0x5308C4D9, 0x9098CEE2, + 0x435B219F, 0x69F1BBE5, 0x155216D4, 0x83F2A4A5, 0xE177744D, + 0x37DF6FDE, 0x9D9EA50A, 0xDFA8D408, 0x6C72E71E, 0xEA617E3E, + 0xDAD6C13B, 0xB83A850D, 0x45F6BEB5, 0x6AFB346D, 0x400B29FB, + 0xBC8E57DE, 0xC6C1081A, 0x4F6A9545, 0xF878303F, 0xB9E519DC, + 0xCCF25FBA, 0xCAE069A5, 0xB79B082E, 0xF70BB7E7, 0xE6A5535C, + 0xB769EA37, 0xE07CCBCE, 0xA9F04406, 0xBB7E5A7A, 0x10C986, + 0x5EB448A0, 0x3B154163, 0xCB832FD3, 0x50100140, 0x6963216B, + 0xEF480040, 0x75B83F45, 0x4A07D8C5, 0xEFDF39B2, 0xDB139034, + 0x5BE9C8C9, 0x1915F818, 0x852ACD9, 0x58BFF825, 0x64AF5C20, + 0x1F13AFAA, 0x8A5A1E9D, 0x57870533, 0x98A418CB, 0xCEBDAD9D, + 0xFA54CB95, 0x707D0BBA, 0x26EE1F10, 0x428CAAC6, 0x33AC77D0, + 0x6879957E, 0x522DCDE5, 0xE29E9579, 0x4AB0C59C, 0xB5FA1395, + 0x4C0BA116, 0x297A0F00, 0x440CD4CD, 0x63BCFEC0, 0xAC14638B, + 0x3C7DF738, 0xC213D3AE, 0x5CA0779D, 0xB49A3458, 0x678D95A9, + 0x281735D2, 0x1911DA83, 0x3A5EA479, 0x2C1090F6, 0x40C0D5E7, + 0x33AD6433, 0x49B076BB, 0xA1C1D333, 0x80474C82, 0xC62FE221, + 0x87F4E57A, 0x4C5C1506, 0xAD5E1E10, 0xE435A8C6, 0x96D7E0E8, + 0x53E54D01, 0x7EECEA8B, 0x699C41E0, 0x181C6479, 0xAE6E687E, + 0x2FD27BB7, 0xDF60DD39, 0xC38A3AC, 0x5AC51EC3, 0x8F1205E1, + 0xBD71109C, 0xCB2CCA62, 0x236D9D16, 0x45ACA6BD, 0xB33BDCE1, + 0xE1D9134F, 0x410F24FB, 0x3BF34DF6, 0xB799F963, 0x1B2D4C07, + 0x8D92C15, 0x9CA0073, 0x76772A47, 0xFBB63B16, 0x78F3C3B7, + 0xF118B4A6, 0x8E86A34A, 0x56693D7E, 0x381EA186, 0xCB9B430D, + 0xAD11DC36, 0x599B3370, 0x7A6B80C0, 0xF2A282DC, 0xF58F96FF, + 0x97AADB3A, 0x5AA06FD, 0x44A43553, 0xBE8097C6, 0x4CF5002D, + 0xBADE20DD, 0xFEC25B7, 0xC8B50C4E, 0xF0C899D4, 0x815F9958, + 0x77772B46, 0x7413F82A, 0x7203A939, 0xF4623F73, 0x35EE625C, + 0x2723BC68, 0x33790B09, 0xA58391E4, 0xA27C7C25, 0xBC032556, + 0x1D812AD4, 0x301BB65D, 0x22FAF223, 0xDCBB79DE, 0x78CE1CBF, + 0x570C796B, 0x17EF8909, 0x8E2C32E5, 0xB54FF82F, 0x7702F70, + 0x1C0A78C2, 0xCB3078DF, 0x7155531A, 0xEAC77450, 0xB9DC2EDF, + 0xA8B6A1A6, 0x57FC52F0, 0x6B5543E4, 0x40679BEA, 0xE46813E7, + 0x65525695, 0x6C9CD43C, 0x5E5BD786, 0x44212626, 0x847A8357, + 0x7E39813D, 0x9FE22F0E, 0x29EC985A, 0xC91CF47C, 0xB31A26AC, + 0xA4C8B43C, 0x8EAB7865, 0xF6F2F67E, 0x3F73A8DC, 0x4FAF5455, + 0xE1253CAD, 0x3001A083, 0x532DEAE4, 0x6A110DF6, 0x585D0FDE, + 0x19071CC0, 0x1A351A69, 0x2FEAD890, 0x33902499, 0xA218C193, + 0x2294A970, 0xB0544EA1, 0xC54B25F0, 0x6C89048C, 0xC8203390, + 0x237F30DA, 0xE8F10E5F, 0x6B57E331, 0x43744B6E, 0x2EEF4BB4, + 0xEBD13AA, 0xA9024B04, 0x22895C31, 0x321C459A, 0xFCEFD3EE, + 0x94772392, 0xA094B3F3, 0xC070FBB2, 0xF30ADCDF, 0x8D294C6E, + 0x89E4C299, 0x47DE058E, 0x841A807E, 0xDEA7608F, 0x3A45D7AE, + 0xFE08A063, 0xF2C65E08, 0x4C653ADB, 0x8E4BED1C, 0xC85C1323, + 0x63DF1750, 0x4EF4B72F, 0x209903A9, 0x3ECCC1C6, 0x4283795A, + 0x205AC943, 0x38B1ABE3, 0x1241AC5D, 0x7C645871, 0x747695BB, + 0x29206570, 0x31BACE6E, 0xFDEEDAC9, 0x4DEFF536, 0xCD6CFDC0, + 0xEB0FAB42, 0x7DFA5EB6, 0x8363D9BA, 0xCFCD2514, 0x69FEB823, + 0x10BDBDCD, 0xE4C27020, 0x56DCF966, 0x9C97BD95, 0xCDAB9269, + 0x8316F55E, 0xC62F7354, 0x5415281A, 0x31EBDCED, 0xCDF7A05D, + 0x5F674F71, 0xF70EE58B, 0x26037964, 0x584174B4, 0xFEA5520C, + 0xD01A8007, 0x7F2772E8, 0xC2FF1456, 0x7B2CA1FB, 0xE938BBD0, + 0xD96CCCF2, 0x9AE8088B, 0xF3A25E6B, 0x3780417E, 0xB9E2917D, + 0x95872990, 0x12D99C68, 0x2FC5DDB0, 0x55437D2B, 0xDB9C14B7, + 0x6BBE6AF9, 0xFBDC9201, 0xDCB32A70, 0x1CABF45D, 0xD8BCBF4F, + 0x271AE6A5, 0xD34B8953, 0x58BBFB3A, 0x537F049A, 0x55B51226, + 0xCD809DC9, 0x846DB4EB, 0xED476D72, 0xEFC8F8AF, 0x6AA3228D, + 0xA363F656, 0x2207127, 0xA1BBE245, 0x2AB58A00, 0x637810C9, + 0x91F61AD, 0x347D333B, 0x1E9598E3, 0x2E7BD8C6, 0x8DCE469F, + 0x73B82620, 0x9257D4E0, 0xD9580F88, 0xE8EF6D53, 0x2D9FAC45, + 0xB56E2C6, 0x9B369045, 0xB50702C6, 0x955D3700, 0x577CC21E, + 0xED02FCBA, 0x73320B99, 0xB55DE16B, 0x7F578129, 0x3F6FD052, + 0xF211A764, 0x9B7F9204, 0xC61EDC01, 0x1363AA4F, 0xEFAF1CF2, + 0xE5AF97EC, 0xEEAD4FB7, 0xF41B649, 0x373087FB, 0xE81355EB, + 0xE04FF410, 0xFD04F4F7, 0xFA269CEE, 0xBE8D7535, 0x5FC007DE, + 0xCF085F76, 0x94D7201F, 0xAF49F41D, 0x8D6E7F, 0x9D63B6ED, + 0x9A2A0877, 0xF06123D9, 0x6624C891, 0x508266E4, 0x6921EAA4, + 0xD6E69A49, 0xCDA0F920, 0xA5870B5E, 0x1A93A2CF, 0xE3A030C6, + 0x6EC03FE5, 0x37FDBDF6, 0xBEFD0BFF, 0x3D3CBD0E, 0x2DDBFD7D, + 0x8B58AE2B, 0xCAD61AF3, 0x624F4677, 0xC402CF5E, 0x431D2CC1, + 0x5C205AE5, 0xFC3B8ED4, 0x501C36DA, 0xBC9217E5, 0x6752573D, + 0x3BE702E, 0x8E06CF12, 0x81494C86, 0xB2DC2F63, 0x792EC845, + 0xC6BDEDB5, 0xB255BA4B, 0x6C66C28D, 0xD1A16904, 0x93ABFF21, + 0x94827FC4, 0x87825689, 0x314D1F33, 0xC0D8B98A, 0xC84AC57D, + 0xEBDB0F92, 0xBA4F473B, 0x61130498, 0xA534064B, 0x3DC04FBD, + 0xD0A701F2, 0xA671765D, 0x17464B7E, 0x4CCCB84, 0xC297BAED, + 0xAAF8C84A, 0x631313F, 0x8E0FD926, 0x1699F616, 0xD9808C9D, + 0x55BF5BC2, 0x27FD10B0, 0xAE975927, 0x92B3F52F, 0x9025C6B3, + 0x95E5E313, 0x4CB83334, 0xE4A1E7B8, 0x74F7D3D5, 0xDDDC42B9, + 0x5A89BEF1, 0xF66A6AE5, 0x33730C23, 0xEB7F079E, 0x742FEF19, + 0x2C68CAC5, 0x2410679F, 0x9D1632DA, 0x458F4AAD, 0x8889E6AE, + 0xA3B48216, 0xC9AF4AEC, 0xA506C8F6, 0xB6AF9E59, 0xC6340436, + 0xA6B294E, 0xF35CF92B, 0xEB3A4113, 0x98070AD1, 0x9E61E01E, + 0x58C2893A, 0xCC1F8C34, 0xCAD665A0, 0xD0414D39, 0x643BDCD8, + 0x8AF801AD, 0x9ADBB106, 0x2BD02351, 0x8F890436, 0x546747D0, + 0x6DC33C48, 0x95FA7FD6, 0x5F12C5A5, 0x5DF2761D, 0x9A9B2F8A, + 0x8C61276B, 0xACCC7F4, 0x37A5829D, 0xF1A0F1, 0xAAED57E0, + 0x180CD2A3, 0xDC393CA7, 0x504E7405, 0x89DE2F7, 0xA4D8C4EA, + 0xD8BECE01, 0xD664017C, 0xF57FA30, 0x6049928D, 0x9832E166, + 0x176AAC31, 0xA793F88A, 0xCFFA8B54, 0xA30DF1EF, 0x3B6C7611, + 0xDEFC961, 0x9BFB79F1, 0x1483D430, 0xC3A77C0C, 0x42AC1FA0, + 0xFA3605B6, 0x9A2EBDF0, 0x684D414E, 0xD9308E10, 0x64D68C19, + 0xA8A9B67B, 0xF5E7B9D4, 0xC7B70ACE, 0xA6EB6DB8, 0x8A22FBE2, + 0x3AFFDDA1, 0xFB61F7D5, 0xE057717B, 0x846D96CB, 0x20A4B400, + 0x574089BB, 0x9F3D2DBD, 0xEEDDDB4B, 0x5E64EA6B, 0x6781DC90, + 0xCFD86A6, 0xA92441CD, 0xAC5DCCD6, 0xE6BB5582, 0x32FA6B3F, + 0x3ABB8A64, 0xA49D2003, 0xA965E430, 0xEC4053BB, 0x95859D40, + 0x2672832, 0xCAC3E608, 0xF8C13A53, 0xB04EC2A3, 0x87F54941, + 0x62A3A924, 0xE0B48702, 0xE8700446, 0x95BD4B11, 0xCFCFDF9A, + 0x19F67E7D, 0x60853AC6, 0x468F963, 0x298066B9, 0xEE53E89A, + 0xFC63E607, 0x6FA101E5, 0x8B2F1F84, 0x24AE7C1C, 0x385008FF, + 0x96E75EB6, 0xF1175277, 0xE5B4A577, 0xB0C97AC, 0xC21CC45A, + 0x5C680DF8, 0xDEB046DC, 0x1487FC03, 0x1D90CE3C, 0x712563BF, + 0x65A26CD9, 0x4D094F62, 0xB5DFE29C, 0xF58B2A62, 0x9420A9DC, + 0xCEC7537F, 0xC46D1FCA, 0xAD5D7B10, 0x68777A24, 0x6C096D2, + 0xD787D72, 0xC7743F50, 0xB3D05F4D, 0x53E0A7E3, 0x9E627C6D, + 0x1AA0959F, 0xD1E00E47, 0x8874BA26, 0xCEAC0958, 0x10F67BBD, + 0x712C6597, 0x3478BD73, 0x4D6F116, 0xD30BC24B, 0xB98C565A, + 0xD7C5B116, 0xA8CDAC4F, 0x4144673, 0x848F37E3, 0xADD946EE, + 0x6F17EAE3, 0xEA0FA265, 0x41DB99E0, 0x6BCFDA5A, 0xB46ECED5, + 0xAF67610E, 0xC7E9DF2C, 0x5CC6F0C6, 0xAB2C2BA, 0x6BCC3881, + 0xE482C243, 0xD8053417, 0xFFDB6E41, 0xF13EEB84, 0xE8292661, + 0xEB9940A6, 0xF0B45F98, 0x1CA82AF4, 0xCCA7771D, 0xDD5F3CFE, + 0x58BD8E91, 0xDF9E3342, 0xA1003957, 0x4621AF52, 0xF926F465, + 0x209925AD, 0xB1C72F09, 0x3FAB8ED, 0xA15C0A17, 0xDBE73D2C, + 0xF917CE51, 0xED047661, 0x7361B752, 0x1AAA57A8, 0x31445667, + 0xFEC0FD81, 0xE3073574, 0x7D36F720, 0xF418181A, 0x1CB8758E, + 0x8E85AFBA, 0x407E9AD9, 0xF724E308, 0xD030D3ED, 0x4610418E, + 0xE799EA4D, 0xF8B68F92, 0xB84B9ACD, 0x4B8168C0, 0x9888977, + 0x216F3B3E, 0x5C49C1DB, 0x759E718D, 0x7C4309FF, 0xBF6DEE2C, + 0xE566F231, 0x774B0A7A, 0xBE55CCFF, 0x3081B8CD, 0x2284369E, + 0x2FDF7473, 0x3AF68AC7, 0x6047E9B8, 0x3743BA0E, 0x691D261, + 0xADC440E1, 0x24150207, 0xFBFE466C, 0xF767E860, 0x8157332E, + 0xFB54D774, 0x1AF34C22, 0x74E05695, 0x2101FD57, 0x2904274C, + 0xA1294E9A, 0xF43CA18F, 0x4FA79EB5, 0xAFD1C9EE, 0x6EB3953F, + 0xDDFCB3AA, 0xDB48F7BA, 0xE1742183, 0x8A78CEBD, 0x225CD669, + 0xD76B771A, 0x3520113, 0x428B2892, 0x3A5CE8DD, 0xAB4AC42C, + 0x2928BE8D, 0xC34E3031, 0x93F0CB9B, 0xB7A6FDB4, 0xEEB2B85E, + 0xC393597B, 0x9D8457EF, 0x91F0F0FA, 0xC54AEA3C, 0xC639521, + 0xB668AFE4, 0xE4CCE3CD, 0x86223A5D, 0x6A51A2EB, 0x4333C505, + 0x3233B8B7, 0x1D01F51E, 0xF0C691A6, 0x699EBC2C, 0x7FEE8DBC, + 0xCC50E42A, 0x7951DB68, 0x8CF01752, 0x33D33841, 0xB46E353A, + 0x700B65B, 0x59ACA844, 0x38631893, 0xC32D0F92, 0x6897EFDD, + 0x3F93BCDD, 0xD50E33C3, 0xD0075F1D, 0xB3CB6096, 0x875896CB, + 0x5DF6651, 0x8E2D197F, 0xCDF68F10, 0xC74018CE, 0x83E6C42A, + 0x994DEA76, 0xF932D8AF, 0x98775C2D, 0xF79CAAE5, 0xF2BEB839, + 0x7318C6DB, 0x3AFD6D85, 0x37F18BDF, 0x10194867, 0xA73B5205, + 0x3F06A1BD, 0xBC8026DF, 0x531CF753, 0xCAFAED74, 0x817C9E70, + 0x32338A3F, 0xA5177C74, 0x9A3C131F, 0x90F9AF0, 0xE9281B62, + 0xEDD87C1E, 0x16577CB0, 0x5E3F7AC3, 0x4E49E1EA, 0x495C1B67, + 0xC282F5FE, 0xF8993B1, 0x47563C68, 0x49FA0716, 0x26A55B80, + 0xDF870F8D, 0xFBB8DDA5, 0x130EA4E3, 0xB0B66F1A, 0xD7B92F0F, + 0x55FD4759, 0x6D11AC86, 0x8AB0B6F8, 0xD8C8C8B0, 0x758DA8A, + 0x9CD589F, 0xB808C0A0, 0xB2C7A3F3, 0xBA40DA44, 0x937532CF, + 0x279CFDB2, 0x545896EA, 0x387A8F38, 0xB2E5F9D0, 0x7566CA0D, + 0x51B45DC4, 0xA93B6EAE, 0x1C22D8D5, 0xEB96BD1D, 0xB8F40750, + 0xCB7DCF85, 0x188F6018, 0x95BA817E, 0xF7C19E4E, 0xAAF97DDA, + 0xE5BD967B, 0x1604352F, 0x3758C3BB, 0xE2FA13D1, 0xE3666F4E, + 0x218059EA, 0x2F4750EA, 0x2F065B46, 0x8FC4F43F, 0x2F45422F, + 0x45928A5E, 0x77055776, 0xBB8103E1, 0x160EFF29, 0xA704F79B, + 0x6655E735, 0x2C19DC79, 0xE407A7CD, 0x9F4AE1F0, 0xBED7DCE5, + 0xA870A304, 0xDC413709, 0x903181E, 0x7C1F6803, 0x44971A01, + 0xF7A81ED1, 0x5DDFB023, 0x2D90CFBB, 0x7F7A432A, 0x35F3F5B0, + 0x7D935FC5, 0x1D99E7BB, 0x8EFC82B0, 0xAB0DEF56, 0x70702FA1, + 0xCF0064DF, 0xDD9DEAA9, 0xF05F927B, 0xB483A6DD, 0x9B7388B8, + 0x2FD82389, 0xAC982F20, 0xC86AD76F, 0x15C6977C, 0xAB10A137, + 0x1433E4A0, 0x2762D44, 0x1CB5399B, 0x310A54D8, 0xD4B8623A, + 0x40FAB5F3, 0xC2D51618, 0xC1F4AF55, 0x17C18E1C, 0x4F37D33F, + 0x2DC9F168, 0xF5BB9754, 0x716FB1F4, 0x7CFB1CE8, 0x1333224D, + 0x344C13B3, 0x7798CB50, 0xB4278C76, 0xD7CC1B03, 0x168B21E5, + 0xF7D77AAB, 0x3B651846, 0x639EB0CD, 0x68EB3E8B, 0xEC82FE45, + 0x622A71DE, 0xAA05B6CB, 0x878B59B1, 0x3E7FB616, 0x1D650408, + 0xF21F8C64, 0x9BF7BF7A, 0xA0874898, 0xFE4E3C6E, 0xFA36122E, + 0x1BCDF4FB, 0xC371B365, 0x8F791BB3, 0x9833AD98, 0xE84887FC, + 0xF8988AB6, 0x180916E2, 0xB587E39C, 0xD5C884C6, 0x27B6BFEB, + 0xD8868D1E, 0x689DA503, 0x936B4EFC, 0xDE0DB3C, 0x7950FDCB, + 0xA61C81C5, 0x9F1C93B2, 0xC983179A, 0x6F847EB0, 0x6F7F899D, + 0xD270412, 0xCC255717, 0x763112A0, 0x8725C96D, 0x48BC2863, + 0x85F13BF0, 0x6D8E0251, 0xB7E66CC3, 0xA4F5829F, 0x8779F381, + 0x16A5E04F, 0x3DF42C14, 0x367F06A3, 0x3BF8666C, 0xC6649CFB, + 0x4DD9808F, 0xB4F9AFD, 0xC2642410, 0x9740E4F6, 0x8FB667BE, + 0x4D4B0D3E, 0xE9B236F7, 0x6E30550C, 0x79DA7B48, 0xE721889D, + 0x79D9B21A, 0xA06B8C2E, 0x997B1696, 0x4383FC27, 0x8B77D293, + 0x6FAE2A9F, 0xB45ED194, 0xF38E2C59, 0xEAA0D05C, 0xA3BC449A, + 0x6EB0BB4B, 0x6B242CFF, 0x7FCA0B8A, 0x47221D33, 0x4E18FE39, + 0xF4691580, 0x6D03D791, 0x3B937AC5, 0x9CB761C3, 0x42812232, + 0xFB987D6C, 0x86AD164E, 0x5D8CED49, 0x22D6D058, 0x42FADF98, + 0x9363A1B3, 0x83C6DB74, 0x7AF44F4E, 0x20086D60, 0x7A37665E, + 0xC4A29C82, 0x330F278B, 0x8750B539, 0xDD2E83D0, 0xB8E002B1, + 0xF2A9323F, 0x91B60885, 0xDE83F01D, 0xACA126, 0x2F0FADA2, + 0xC0E879A6, 0x7C715655, 0x16642BA2, 0x43B9C083, 0x95F6789D, + 0xE6576886, 0x46BEF133, 0x84199FC3, 0xC45BA082, 0x26489AC1, + 0xA4FE268A, 0x633A25B0, 0x4FCD341D, 0x8E7374B3, 0x7F8A3466, + 0xC82B53F7, 0x2E2114DC, 0x59213BE7, 0xE72A2395, 0xAC5F982B, + 0x8F63E9D8, 0xA68BA42E, 0xF0E30E92, 0x580FD13A, 0xB2FCB7EA, + 0xF3E4C077, 0x2C8588B, 0xC31F5E5, 0x104982D9, 0x2C2F03E3, + 0x8F1791C, 0xCE14310F, 0x1696133B, 0x1BC68D6D, 0xFC488B95, + 0xE0E7FC31, 0xBDF0152B, 0x24F78B82, 0x45BD4367, 0xC89AF4B9, + 0x9698650F, 0xFB2E131A, 0x82B7A451, 0x9F6990FE, 0xB6EDE6BB, + 0x68D5D90, 0x51FE559E, 0x9B54ECE, 0xC09D3AB2, 0xD9BA990B, + 0x4CF02BC, 0x70067D7, 0x3568DF20, 0xFF1D7AE4, 0xF1C67DE3, + 0x5ACC7F95, 0x89ED16EB, 0x6EDCDC94, 0xDF367991, 0xF1D48A79, + 0x21AA30FB, 0xADA2B5B3, 0xC40A5761, 0x5769556B, 0x5E1510A2, + 0x5741566A, 0x25B88D83, 0xFD22574E, 0x6E9B2CD2, 0xF5CE960B, + 0x67F938EF, 0x1A1E3672, 0xFBCE5BDB, 0x756BACAB, 0x2F177A71, + 0x31F3EFC6, 0xB8263FBA, 0x9A1F772A, 0x84DC1FB0, 0xC907ED89, + 0xAD3C6092, 0xC225B6C8, 0x37EE4F54, 0x4BDDACF2, 0xB5E944CB, + 0xDC26F39E, 0x3BCE02DC, 0xC01F2632, 0x89AFE3ED, 0x600757F7, + 0x4804A684, 0xC4F3FCB8, 0xEBCAA904, 0xE0069A2E, 0xA2FBD213, + 0xDB736C4, 0xA6930699, 0x71FB43C0, 0xF66C955C, 0xFBD39B5, + 0xC87D1801, 0xE9D2DD1A, 0x78DA23CE, 0xCADBA5C9, 0x77015761, + 0xF5581BDF, 0xDEB4DAA0, 0xAF7E41B0, 0x71347196, 0xF8A29A93, + 0x8DA3BAE6, 0x73396AAD, 0xD4DF7765, 0x326AFF23, 0x27888A0C, + 0xE48AC062, 0xB9F18047, 0xDE9830DA, 0x8EF78C4D, 0xFBC1896E, + 0x9BB566A6, 0xB640ED13, 0x8B0D9D1E, 0xD84B471D, 0x4040EFB4, + 0xF6DF7908, 0xCB8ACF04, 0x253494DD, 0xA85F6D88, 0x1326822, + 0x61EFDFB8, 0x1C78154F, 0xB13866B1, 0x3ABE5DBB, 0xBB5907BF, + 0xA1A57FDF, 0x410549C8, 0xA9A364F4, 0x2A371B73, 0x24AC7296, + 0xA01C035C, 0xE839029C, 0x6E12051E, 0xE6A549FD, 0x345F10FF, + 0x3BB57347, 0xBDBF3A6A, 0x2A41C3C8, 0x6E0232B0, 0xAE66D42E, + 0x3BE90433, 0xE185FBF2, 0x9BCA91FE, 0xF4FFB74E, 0x142B6971, + 0xA75CD7B, 0x9B900DDD, 0xEC56B79, 0x2FE0CD8D, 0x87BE8237, + 0xB38A7226, 0xB5D8B437, 0xAAADC41D, 0x8014E227, 0x38D84DD1, + 0xEDF5294F, 0x862F0F, 0xD69F77F6, 0x409C3B68, 0x2F12B0FC, + 0x32A670B9, 0x5746EE2, 0x96B4901A, 0x57208639, 0xA282A77D, + 0xE9D9F48E, 0x651ADDA6, 0xFF5E974C, 0x37C833C, 0x41F2BD58, + 0xDFE1D009, 0x32222DA6, 0x22201781, 0x64A06BAF, 0x8F188902, + 0xA9C2A07B, 0x617C7DF7, 0x842DA704, 0x40AFDB72, 0x49625110, + 0x72484F13, 0x7340AC89, 0x6C6A2F36, 0x828EF5F9, 0x20344923, + 0x21D3304F, 0xD6EEB7C3, 0x8F99732F, 0xEBA045D5, 0x5C0065D4, + 0xEEB5E899, 0x1B079C47, 0x6198EE3B, 0x946A805F, 0x7C19F966, + 0x75E8F043, 0xFD9880BE, 0x47BF619, 0x9C001ADB, 0x7438184B, + 0xA3787EF2, 0xA461EF4E, 0xEB515D0E, 0x64EFA69D, 0xD41F3145, + 0xD08A900B, 0x495968AC, 0x746639C9, 0x43E85DCB, 0x62E55B3, + 0x6B913D8E, 0x2685D73B, 0xE4F98C19, 0xB404BD4B, 0xFEA327C5, + 0x1E0CC908, 0x71BC53EA, 0x530AAECB, 0xBD2977B, 0xB661A52, + 0x86560EE2, 0x250E2591, 0xDA57D5B3, 0x347D3C22, 0x6CE15221, + 0x6E5288EB, 0xA79875F3, 0xCA89972F, 0x36E93777, 0x257262E1, + 0xD1D4E5A4, 0xF7ED5D52, 0xECE58036, 0x644ACA69, 0xCA36DFB8, + 0x60EAB44D, 0x46FB8AB3, 0x81E6C199, 0xD5AA5C63, 0x4A7CB01D, + 0xFCC109CD, 0xD999C46B, 0x3FA4C688, 0xC95C0FBE, 0xA1E9DD3, + 0xBE9EAEF6, 0x1A3014D7, 0x729A662, 0xDC8178FD, 0x7FCAA1EF, + 0xD4005420, 0x2A904DAD, 0xEE7E52DB, 0x886C0F23, 0x12D49E10, + 0x2B3F3B39, 0x3373A6C6, 0x5D0759F5, 0x8CF5EF25, 0xCE02371C, + 0x2FFEEFDE, 0x5D9CFD69, 0x2B5BB7D0, 0x5A378EA9, 0x5BED8331, + 0x9C1A37CA, 0x702799F, 0x4D37A8EB, 0x370CEDF8, 0x43B95BE0, + 0xA0C1E534, 0x204130B2, 0x8E4995AC, 0xCF1C3C28, 0x3E901F78, + 0xB0F43C57, 0xED4B7492, 0xABD3C5CD, 0xEA95ABC4, 0xE03B739A, + 0x58388E80, 0xFDF22044, 0xF4379C7E, 0x87CFA0C, 0xAE9CA79E, + 0x41DCB004, 0x8F69512D, 0x73ED4756, 0xE215297A, 0xD931A6AD, + 0x59866B3D, 0x61825B1D, 0x4F5099E1, 0x25AE168B, 0x1272D5C6, + 0xBE071035, 0x24314F71, 0x82F4B23F, 0x6C7F3385, 0x36CF0505, + 0xB71C0E3D, 0xE9F881D0, 0x27F0C290, 0xF4BE30D7, 0x88315CE8, + 0x9E04FD20, 0xDE197591, 0xCF0D2FF4, 0x67A4C473, 0x158447BF, + 0xA4B37C88, 0x27918292, 0x5FDE3DF0, 0xE8A93C3D, 0x886287E8, + 0x746E199B, 0x9A894103, 0x7A529374, 0xA195E2AF, 0xAA3EB0C6, + 0xF70788A9, 0xCE2B7F30, 0x9C4724AA, 0x902EB7A8, 0x2CBBB407, + 0x3799651F, 0x9016E9D0, 0xD1C0ABC8, 0xC7684FDD, 0xE4670051, + 0x25B69E83, 0x1CEC9BBF, 0xD066D2B4, 0x2AD4BF14, 0x7AFBD3CF, + 0xCB8E5EFA, 0x63B67572, 0x89F7E3F3, 0x8E8D39E6, 0x60617ECD, + 0x9EECEA31, 0x59E57FAB, 0x807AFCD6, 0xFD0397B8, 0x3C57D963, + 0x9A972CF5, 0xFC47B628, 0x9CCFAA8B, 0x405869C3, 0x3CC128C1, + 0xE154C33E, 0xBE53F87D, 0xD23C7947, 0x4CBEB3BB, 0x1F068FFA, + 0x8A7D350A, 0xB822F33E, 0xFB3BB431, 0x741D2D0F, 0x81FAFE09, + 0x80B8BA3C, 0x30B4BE94, 0x4B2A2909, 0x31740925, 0xE68C0BC9, + 0x8E7F31D4, 0x29DA2599, 0xB9D267C9, 0xEDE811D2, 0x8BC7CBC3, + 0x69DDA8B6, 0x879E1212, 0xF915F0F1, 0xBBCDB1AD, 0x3A01011A, + 0x7CD005C4, 0x475FC718, 0xF03F454B, 0x7457F264, 0xB22D9DFD, + 0x569DE931, 0xB585EFEB, 0x9A183445, 0x9CB353AC, 0xE3AA9817, + 0x32E0722, 0xF0C7595E, 0x316DBD6A, 0x96D0F65C, 0xA6F0ECCE, + 0xCB8A9494, 0x5B077241, 0xD36BBC7, 0x9C4CD0F9, 0x108F5B32, + 0xC43C599A, 0x7B10108A, 0xA4106EE9, 0x3860CF99, 0x87B782C, + 0xF667524C, 0x129929C, 0xEA85C1D5, 0x1A07973E, 0xB9524891, + 0xBC02BD1F, 0xF378D7F, 0xD0BED4D7, 0x5B782DE2, 0x738681A, + 0x4BA1192C, 0x46DF1224, 0x4529AED7, 0x9B1DB01D, 0x810AA334, + 0x661982C8, 0xD3B32F94, 0xF50AC9D6, 0xCE9107C4, 0x203078BF, + 0x6B0F3B2B, 0xCF63520C, 0xACA9E5BF, 0x7FBE448E, 0x51BD1E2F, + 0xDF958295, 0x114A9693, 0x60FCBB39, 0x6669B642, 0xC490D54, + 0xD19C8DBC, 0x14CC7B2A, 0x7106D506, 0xAFDADD98, 0xAF398DF4, + 0x88AC5400, 0x1912BF0A, 0x5389D050, 0x5AF6233, 0xF10842A3, + 0x94DD7008, 0x93812804, 0xD8111DFD, 0xB7C97490, 0x7748A45E, + 0xE70A47A0, 0xC29B718E, 0x55783AEC, 0xA2789E21, 0x97488EBC, + 0xD9222F6A, 0xBF74BDD2, 0x9A983E5C, 0x6CC067D5, 0xBCFDD3B2, + 0xD7A2A5FE, 0x4733F2F5, 0xC7AA3556, 0x1CDB485D, 0x31755CA0, + 0xB9F8E9A7, 0x1346410D, 0x7D885AD7, 0xA30030D8, 0x9813B41C, + 0x8A64EFD4, 0x273F4CED, 0xFEDDC3FD, 0xF34D9687, 0x6B67F2DC, + 0x13F72B5A, 0x96445DDB, 0xAC94658B, 0x8FBF54BC, 0xA7C13389, + 0x95814EA3, 0x7823E5BC, 0x544C27DB, 0xECE6439B, 0xD1141B27, + 0x7A95ACF4, 0x806E58E7, 0xD07B5422, 0xFD0353AE, 0xC1840431, + 0x1DD89E9, 0xA102016D, 0x3730505, 0x1F91E46A, 0x3279C793, + 0xA060010D, 0x9BF86C80, 0xD0C35484, 0x33E81EF7, 0x1C4D3EA7, + 0x6C2A9935, 0xD65E2FB1, 0xBB1CA42E, 0xEA3E3609, 0x7B478C84, + 0x70C1DF93, 0xA872CA92, 0x7C025178, 0xF3B19C7D, 0x6F2BD89B, + 0x1AD7BBDC, 0x39A48FCC, 0xAB5B72E1, 0x821761B9, 0xD2368C1, + 0x20ABB349, 0x29A3F960, 0xFDB18DF1, 0xC4118A52, 0x5E28E88A, + 0x549A3386, 0xD81024CE, 0x82DAD5E0, 0xB20BCD42, 0x9DEA0D36, + 0x49A4992D, 0xAFCB2026, 0xCE7536E8, 0x2C191A65, 0x24FEE0D6, + 0xA769AB6D, 0xF47E292E, 0xCB501191, 0x6DE13907, 0xF1343277, + 0xB32AA746, 0xB055DB9E, 0x87CB8583, 0xA546A4C3, 0xF06F809C, + 0x8FE7A8AA, 0xD0E4037F, 0xD81FCF88, 0xF85830C2, 0x3D6F4840, + 0x5A43700E, 0xCD300C58, 0x3B81C27C, 0x8AF86EA8, 0xF65935FC, + 0x46367D7, 0x7FB75E63, 0xBB28A406, 0x173F982, 0xCB92DD14, + 0xAAA0B1D1, 0x1BCA8892, 0x64D21, 0xFF081A44, 0x8706E93B, + 0xB7DEFAD9, 0x4A6DEF76, 0xDA1670DF, 0x94ABCEBA, 0x465DA4C6, + 0x2484496C, 0x97BB3321, 0xEFB09CB, 0x2988AA2E, 0x2722344E, + 0x5301B744, 0xC5E16C47, 0xF7E05D01, 0xCBE7C20F, 0x4882A6EA, + 0x7168CF40, 0xA98A2747, 0x35F8E15A, 0x5FAF49F9, 0xD2008D24, + 0xCC45A63, 0x858A3255, 0xE4C095B6, 0x7074F7A5, 0x699C98FD, + 0xF0BFE2EA, 0xBDA35C64, 0xE83B891D, 0x7CD09FEA, 0xE8735FDD, + 0xFEA27F06, 0x631D71D3, 0xA08136CD, 0x42395363, 0xDCBA6E41, + 0x1562897, 0x4B1061A9, 0xB4F9640B, 0x38D24E3E, 0x76DF4423, + 0x94B5ED97, 0xFE6AB3B6, 0x6B329B8B, 0x37AFD275, 0xC9ABA12A, + 0xEC9693B, 0xD49B5585, 0xE0C2BEF7, 0x315D40A8, 0x34FBE3A, + 0xEBE81550, 0x569F6FC8, 0x5A9C8404, 0x9DBA0090, 0xFE985DE8, + 0xFF4209AE, 0x89F9E7AF, 0xF841164C, 0x6B4B8F5D, 0x95CB1085, + 0x1990660C, 0x31263B36, 0xCF8F435C, 0xDEBCF88A, 0xD1EE25C2, + 0x53D80B69, 0x9EB8F01C, 0xD682EA3C, 0xEEE79205, 0xA7EFAC65, + 0xE9AA6899, 0x3C1E197E, 0xC8ABE1E9, 0x7BEFE9CA, 0xE792E7D4, + 0xA955D60F, 0x3FE8A02F, 0xC963FDC1, 0xB3D53E43, 0xE28FFC12, + 0x7D5BECCC, 0x18E9F223, 0xBC8B0465, 0x7ED8EEFE, 0xBB90FFEE, + 0x904A9F3A, 0xBC467FF, 0x8AD43A15, 0xF3FC404A, 0x2492D5F4, + 0xBB3F5025, 0xBED0B8BF, 0x467FE6C2, 0x36E55C77, 0x8E2CAC4F, + 0xD12D325F, 0x68A4D268, 0xB1AA0895, 0x755B98FC, 0x2314C4FF, + 0xC3667346, 0x8003B9E8, 0x1185476D, 0x227B69D8, 0x5BADD019, + 0xB06567BF, 0x2B837581, 0x9E11F7, 0x158E67AE, 0x339AA6FC, + 0x8FE50AD9, 0x65902A97, 0x42917220, 0xF9AD39C, 0x2DAAD225, + 0x9673B896, 0xFAE150D6, 0xBEDE3417, 0xD233D722, 0x7E67F33C, + 0x6E150E30, 0xC856792A, 0x28EF69BA, 0xE2AC7866, 0x928D0A4A, + 0x8032C4A9, 0x3D413533, 0xC1BA5CCA, 0xD2BDAC83, 0x94198A14, + 0x3A25972F, 0x253EC030, 0x42D7A1F5, 0x97C28C1C, 0xBE4D0710, + 0x92F31B62, 0x73CA2F55, 0x15FC5417, 0xEF76B1C6, 0x655A963D, + 0xBC17C3FD, 0xD5BED3BC, 0xAB0E4857, 0x38BAD61A, 0x8C17E47F, + 0xE3C27887, 0x45D2A34, 0x6D48333A, 0xF400B767, 0x6ACF41B0, + 0x88DA15A9, 0x3FA0EAB1, 0xAF7B3786, 0x87F182FF, 0x4112A079, + 0x53360864, 0xDB5CE625, 0x630678D7, 0x63E01F17, 0x7BF658F1, + 0xB5E4F1A3, 0xB30E4393, 0x27454C31, 0x8E7E0E2, 0x2151A5F, + 0x2892E2B2, 0x92B53840, 0x1EB3D483, 0xA4273A65, 0xF0CC632, + 0x99AC2694, 0xE0A19111, 0xC7FBA613, 0x46C8F873, 0x88A27741, + 0x7E9A5972, 0xC2E76F79, 0xA5CA8180, 0xA28FF0EE, 0x2A1F7DE1, + 0xCC130B22, 0x50ECFD8A, 0xF5BAA999, 0x5FA2EC9C, 0xC1B5C5C4, + 0x90EC0E5D, 0x9C26620A, 0xA97D2935, 0xE1C08B89, 0xCB574B80, + 0xB3DE8B61, 0x1AF89CA0, 0xFD4A77DC, 0xED9485E1, 0xAF804C92, + 0x6B8EB167, 0xDCC836B6, 0x85A7FFFD, 0xD4E9A94A, 0x77DDCC31, + 0x8897B5F9, 0xA4FA88D3, 0x8ECB3E82, 0xBC175E89, 0x963A073E, + 0x547520C7, 0xEEB81BFB, 0x1D8B1867, 0x78833A4, 0xE40A0CCB, + 0xF8D5452F, 0x954BDCF6, 0xAC228FFA, 0xE6B32DF3, 0x181ED541, + 0xACE26A73, 0xF1C1440D, 0xA1B93EDD, 0xE90FF70A, 0xF6741843, + 0x4DF581AC, 0xBE785B32, 0x751509B5, 0xC30AD864, 0xC18D8A72, + 0x3BF07FD4, 0x827B4CBA, 0x7DD39A4F, 0x2CFEFE25, 0xE071F371, + 0xC0C3F6CB, 0x1FD70F85, 0xFDABDA88, 0x8F308991, 0x4CD794F9, + 0x5D18B022, 0xC13D5FC2, 0xD84337F, 0xED868BB8, 0x9904CD2, + 0x7551499C, 0x124B262, 0x5139C2A5, 0xEF56F59B, 0xE8B87B40, + 0x2F030010, 0x42D2E271, 0x4E344F3F, 0xC87CDFE1, 0x44A615C7, + 0xC32DB543, 0xCFC889E4, 0x60078825, 0x786F5917, 0x2DF9E82, + 0xEE26DA93, 0x48D0C94, 0xE97D5456, 0xF487F2EB, 0x35A47D65, + 0x183DA0CA, 0x1A7E1218, 0x8D2674C5, 0xB38D0910, 0x5D9C871C, + 0x7B463ED1, 0xBBC90FFD, 0x31DED99F, 0x5171DCFA, 0xF9413D0B, + 0x632A00FD, 0x7B6DA34C, 0xA475C597, 0x8E157360, 0x5911736B, + 0xCA19D544, 0xF487D465, 0x6E749BB9, 0x888BFB52, 0x3FDAD497, + 0xDB5D401A, 0x7015A4EC, 0xC1F571, 0xB2D7671A, 0x8203032F, + 0x5A755E9, 0x24F25BF5, 0x4D2AC51B, 0xE5950FA7, 0x20196F5B, + 0x68E90D90, 0x5D24196C, 0x9CFCD1C0, 0x745C0318, 0xEEB977E8, + 0x14AA16D, 0x80662EE1, 0x7BD55DE3, 0x35EE2B08, 0xD3E8051F, + 0x3D0EA4B5, 0xD551399E, 0x8FF94435, 0xDD4E34ED, 0x9139E4A3, + 0xE6AF7E5E, 0xE1ED4EAF, 0x638D2846, 0x7084F7EB, 0xF9705E17, + 0x2E7A89DC, 0x45855252, 0xBA8E51C7, 0x8510425C, 0xA97AF6D, + 0xF0C27DA, 0x9E00CA15, 0x3BCC0651, 0xEEC38CA9, 0x19597B08, + 0x4C68AB5D, 0x16CA41DB, 0x35EFBEF9, 0x1E441529, 0x25131FA1, + 0xC3D8483C, 0xD8650832, 0x60D271E3, 0x47C92A47, 0x9EFBB554, + 0xBF5DBFBF, 0xFF421FA2, 0x3A38F28, 0xAE4EE06B, 0x819945D1, + 0xC43101, 0xA3EE9278, 0x5BAE3EE4, 0x57ACE55E, 0xC3D95551, + 0xC00717B0, 0x38EC1B28, 0x123597, 0x6314F3F7, 0xB3F99DAB, + 0x7226CE1E, 0xE8350DE6, 0xD7C582CA, 0xBB1D38D, 0x54E656FE, + 0x400B60BD, 0x48291A06, 0x97819179, 0x850BF937, 0x93888A87, + 0xF51E684F, 0x4B111E, 0xC6B37E02, 0x6C923547, 0xEF25AF3B, + 0x8C12CE8E, 0x89296F4F, 0x3BE2C3DA, 0x8A29A35B, 0xBBE2E80C, + 0x79D0188D, 0xBD4320BC, 0xAFF4F0A9, 0x7FAE6C37, 0xCCA1777E, + 0xB06D2AE1, 0x26B6398C, 0x5A3E5876, 0xE814DF4E, 0xC43E9677, + 0x4C962CE8, 0x6C274FF8, 0x8B5A1A03, 0x963E1401, 0xD8CE0DF7, + 0x659190E7, 0x3AD63330, 0x894BFEDB, 0xEB4CF73A, 0x3731BC86, + 0x30FE0433, 0x94F5FD2, 0x8417999C, 0x337E86B8, 0xAFE08EF6, + 0x5B5F05DC, 0x8001C95F, 0x8C8092DC, 0x5EBC7995, 0xDCBE88EE, + 0x9C602950, 0xE3376596, 0x5D80E318, 0xAF3AC8C3, 0x8C7EDCC6, + 0x3E795E7, 0xDA8987AB, 0x7B7B4E3C, 0x3239CD40, 0x1B527DED, + 0xC95DEF29, 0xE40D047D, 0xE53C10C5, 0x5BAF528B, 0xA47921F9, + 0x6DCB9B0A, 0x7EA11040, 0xBBEFCCD5, 0x502F33FA, 0xAB5EBE8F, + 0xD59C448, 0x8C34FF3D, 0x4A3255A2, 0x4CFFDCB1, 0x3880A182, + 0x3499DAAF, 0xA1319450, 0xC550CCE5, 0x51026E2C, 0x73C4F05D, + 0x21F5FAAC, 0xE1C31B7D, 0xA390E6E6, 0x7B1582ED, 0xB92B4C3B, + 0x41C1128E, 0xF728F655, 0x3BC8AE16, 0x8A2A4E57, 0x9A8A7DE, + 0x86065598, 0x4328A574, 0xDBDAFC7D, 0x2C5EE98, 0xEAB5CE80, + 0xF7E8F60C, 0x7B4C3C0E, 0xE4A2F720, 0x90330B1D, 0xB6783BF2, + 0x48A8C26B, 0x847F1AAC, 0x351DB247, 0x43E84AC5, 0xAF726AA3, + 0x5CB4C059, 0x2C5784DE, 0xBA1111FB, 0x9F427968, 0xE41D29D1, + 0x2CAA8CA7, 0x764C8B63, 0xBDAA6F10, 0x280277B6, 0xE4A908B6, + 0xA6A9783, 0xD0643B01, 0x44FE52AD, 0x60B04A5, 0x194C190E, + 0xF73DA669, 0x12EE11C8, 0x2C769D96, 0x694787A4, 0x9FB03623, + 0xAC6F837C, 0xFC1E5935, 0x16246787, 0x4F94B817, 0xA3A4281F, + 0x1535252D, 0x13F8F1CB, 0xAAF6A508, 0xB38E10E, 0x7A4B238, + 0xC6A47410, 0xC864256, 0xF3C25E27, 0x94CE51D4, 0xF4ECAEEA, + 0x32684D74, 0x1AC8765, 0xDE6F6313, 0xF8C09409, 0xFB21FD21, + 0x6DB586BA, 0x241894B5, 0x65806E1F, 0x4B9D0DE7, 0x32DDDD16, + 0x3B16F0B0, 0xB56CAAF0, 0xC533ED5C, 0xADE48431, 0xB5893123, + 0xE977699C, 0xB295808B, 0x7A252898, 0xE3748392, 0x687A8ACD, + 0xB792504E, 0xBF4E2D8A, 0xB5EC4376, 0x754D9C34, 0x17BE53CC, + 0xC817A127, 0x732346E2, 0x29593976, 0x41D6AF89, 0x9072FAEC, + 0xC2B22666, 0x16A150DF, 0x4D379A36, 0xE732017F, 0xA6D12516, + 0xEA3DB9B5, 0x6E4C766B, 0xCA0ADEF5, 0x75E98F68, 0xC31687C3, + 0x62F16F66, 0x6486B129, 0xE237231B, 0xC6653007, 0x2BE06DFC, + 0x2BC32DC4, 0x9E3DD054, 0x47AA701E, 0x7741E537, 0xA09F9CD8, + 0x9D40881, 0x4F02F58, 0x6A5F31BB, 0x32BBBD23, 0x4520EB05, + 0x1DBFDD00, 0x6CCEC7D, 0x48CFC70C, 0xB41FBC13, 0x5B377E90, + 0x3B87923D, 0xC09F6D28, 0xC1CF24FB, 0xDD6BE459, 0x8B8BDD37, + 0xF7B103C8, 0xC1611360, 0xA8B8FCC8, 0xC16D4E2, 0x6AD23606, + 0x951A051, 0x6FC3B984, 0x95876867, 0xA0E1A04C, 0x8267F62C, + 0xC4B69588, 0xF53421DF, 0xC348685B, 0x59769E2B, 0x21F0FF90, + 0x2B978BB4, 0x3FDA987B, 0x216F4FFF, 0x95C68589, 0x2286F5D8, + 0x81E2702D, 0x88E2D01F, 0xE6F6B356, 0x2EA0C31, 0xA5E11CAF, + 0xE17DC578, 0x2115A0EA, 0x8DC2B323, 0xEB86957, 0xF3C7BECB, + 0xBCD805EC, 0x1121C3F5, 0xE6DEF224, 0x8EA2EE24, 0x2703D7B7, + 0x24D73574, 0x4068552C, 0xA85F5B6A, 0x65B563E, 0x4050954C, + 0xC7043820, 0x91E4A088, 0x19084C84, 0x7250FB54, 0xC1EC72, + 0x9FDB2412, 0x3B78E4E9, 0x588C2D17, 0x345C3232, 0xBC7CCB29, + 0xCB5F1F0A, 0x24EDD656, 0x7A9F0605, 0xC2EDB0E5, 0x7F01D20D, + 0x8EB211A2, 0x74AC4C1A, 0x37EDEDDB, 0x55B9AFF2, 0x100C4193, + 0x43CDF2C3, 0x9C75E7C1, 0xC43ABEFF, 0xB9704827, 0xDD4E6376, + 0xEA5FA0D3, 0xC6E14A66, 0xCB163673, 0x9515389, 0x5D3D30C5, + 0xD1FF8777, 0xC1347921, 0x21A5BAC, 0xD6CB5F87, 0xC6CE680B, + 0x46D1E5FB, 0x9B98BC15, 0x8D1446D6, 0x184659E7, 0xAAC79D5A, + 0x773E019E, 0xA1B9F814, 0x933D3D0B, 0x11DB7615, 0xC206A22A, + 0xE4EF5BA1, 0xF0EFA194, 0xDE0E6C2B, 0xBE185B42, 0xC28FDE0C, + 0xE416DD8A, 0xC636753F, 0xAFD119E, 0xB0198B17, 0x94C4115C, + 0x76EDF82A, 0x66818700, 0x6F003485, 0x993DFB2B, 0xF5A1F91E, + 0xDAB0080C, 0x7DF290D2, 0x72F65E9B, 0xBC126473, 0xF6050B10, + 0xB7380CA, 0x3352530, 0x9A403054, 0xB12581C1, 0x6F8E0370, + 0xBB5C1ED1, 0xCE738AFF, 0xE9F605DB, 0xA976BFE4, 0x68C9D107, + 0xA2BD1833, 0x545ACCE2, 0x965FBAF, 0x12D998F, 0x2C16B1CD, + 0xB20788BF, 0x96AADE36, 0xDF821415, 0xF1EBD654, 0x33F3C413, + 0xF2F2A6BF, 0x2DFB0ABA, 0x96845EC5, 0xB24622DD, 0xA83EEE5F, + 0x49DF9AF8, 0xB8DCFB8A, 0x16F7643, 0x436EFD30, 0xD90C9F8, + 0x9C10CD4E, 0x600CB15B, 0xE686606A, 0x5EC0502C, 0x23B2DCE5, + 0xDD5DE18D, 0x235A755C, 0xCB58A693, 0xACBEAFDE, 0xCA201FB5, + 0x2AE90380, 0x4F7455EC, 0xCA923312, 0x1BD202DD, 0x2D92B9E3, + 0xA2670F18, 0x831728C, 0x77D33D8C, 0x12400BDA, 0x9508A626, + 0x9253042B, 0x63C70C8C, 0x5496452F, 0x9237D610, 0x10448F3A, + 0x9303C709, 0x660D7EC, 0xDF6750F0, 0xBC4F14F2, 0x8F59720C, + 0xEE5AB051, 0xD5EC1228, 0xCC3E04CE, 0xE9E4D3B9, 0x8676FA58, + 0xF523860E, 0xF87D9BED, 0x4A6D02C9, 0xC5AD6CF0, 0x65F09045, + 0x8C620984, 0xDC40B4CD, 0x4216C291, 0x7A44C04B, 0x1E2B5D31, + 0xA0E77B7D, 0x12076C51, 0x22262FA1, 0x483B54F1, 0x2A7EF465, + 0xD1395E25, 0xB564369F, 0xC94A47A4, 0xFD678BAA, 0xECEE926A, + 0xE41A06AE, 0xE8F293C1, 0x3EB052BE, 0xD0959EF1, 0x93FF1935, + 0x4D65E4F1, 0xE87FC1F9, 0x3BD4BB2B, 0xD5F24F5B, 0x54FF70D4, + 0x968C7B60, 0x44F9BDE4, 0xF4894BDF, 0x3CFDDF7B, 0xD5CC3F10, + 0xD7F952C2, 0xEA3DCB60, 0xEFDAC96A, 0xBBF8F5EB, 0x41526813, + 0x714E3D51, 0x5E15A386, 0x1286AF4F, 0x5E1E5A3E, 0x676C9938, + 0xA716071B, 0x14D79998, 0x5CB794ED, 0xD815EDED, 0xCB1CA55A, + 0x9D6D74FD, 0xBE032C25, 0xF3FE1425, 0xC0CB5217, 0x3931A93F, + 0x82DB8222, 0xD8FF587F, 0x5AD4E8AC, 0xBCF00442, 0x4298A961, + 0x9F8CC3C2, 0x60E2347F, 0x7E090E, 0x691B735, 0x3D4C4D83, + 0x5612B097, 0x7B8DA321, 0x2C28A057, 0xF8FE8901, 0xDA39D0DD, + 0x465CE561, 0xA78756, 0x3B771E01, 0xE638B09, 0x201853B5, + 0xF934D7D2, 0xBD515A83, 0xC1B5C34E, 0x89159FA9, 0x2DDE3EBE, + 0xE27771DB, 0xB5983F05, 0xA3FD869D, 0x8ABA53CB, 0x55C8606C, + 0xDAB769C3, 0x4C4C2EAC, 0x18EE2A56, 0x88452A07, 0x9767C386, + 0x5C0418D6, 0xF79CA785, 0xF291195D, 0x9B0C286F, 0x68460BED, + 0xBF0079E5, 0x9906D932, 0x2F9E5535, 0x2A3C4947, 0xF0E240C3, + 0xE835A264, 0x43F38C0, 0x82DAADD8, 0x313612B1, 0x560D56FB, + 0x61BD734A, 0x58FD6B36, 0x2C45C40B, 0x55F70159, 0xA21A817D, + 0xAAA6FCE, 0x85BFDFB9, 0x1C71DE25, 0x56CB4C2C, 0x50FD91E5, + 0xF2340E88, 0x72BD5702, 0xB4FFBD3A, 0x1B35B171, 0xE94A34BD, + 0xC4C77575, 0x95B10420, 0x2471BC3F, 0xCB429841, 0x6DC5347F, + 0xC93CF782, 0xF1D26B2C, 0xEB2A260F, 0x67C3AE9, 0x34A56A4, + 0xF1F3D01B, 0xD8295F22, 0x7F9E5D4A, 0xE4DB3DEA, 0xE1531DCB, + 0x2C5FF857, 0x73622A7C, 0xC2691F1, 0xBC622B61, 0xE6A08C89, + 0xBA1807D4, 0x43ADBE43, 0xD90D427C, 0xC7A5C24, 0x613ED316, + 0xEC810B10, 0x1049BF74, 0x9A14C123, 0xA7B24E7E, 0x73254165, + 0x2C54081E, 0x14FF25AA, 0x7A12F3B4, 0xB4DF7C56, 0x89BFE8FC, + 0x5D5A04A6, 0xBE007173, 0x829DF863, 0x63E5E57D, 0x58F64C28, + 0x31A38144, 0xE843289B, 0xB48DFAF1, 0x2B335C2A, 0xEC3C96CE, + 0x255543F6, 0x33F17311, 0x3C60C51A, 0xE5D0D660, 0x5E162559, + 0xA2D9416, 0x9DDE4967, 0x28156A65, 0x71650796, 0x74EE54D1, + 0x3E8C19F7, 0x797C1E42, 0x2C536DFD, 0x2F3EED4D, 0x3BFC7C95, + 0x8EAEF87D, 0x18F5B02A, 0xA3532651, 0x24508E13, 0x280B9049, + 0xE4FC61CB, 0x388BA30F, 0xEC180A43, 0xBFDE77A4, 0x98CDB399, + 0xF82B586D, 0x38525AE7, 0x9D857BE8, 0xDD939D18, 0xD5CA6EBA, + 0xB70DDBA, 0xDFF43867, 0xD06AB2D0, 0xD8C78BB, 0x78F6AE4F, + 0x4C9A58CC, 0x9F9AA50E, 0x7D6A3912, 0xD897C7E4, 0x82F5939D, + 0xA4A9FFF5, 0x2CB56FDE, 0x3E082D4B, 0xB829DC58, 0xE4515CEB, + 0xCE585A33, 0x27901244, 0x68860E95, 0xE156A451, 0x9E351FE0, + 0xC69BD757, 0x4B2C4A2B, 0xD5DE5A91, 0x3557B0DE, 0x99E910B0, + 0x975BE470, 0xDB4DE130, 0xE4C6DA1D, 0xC2BC058F, 0x37544906, + 0x12CC200E, 0x54569133, 0x6586FC03, 0xF183C0CF, 0x642583E, + 0xFBE882CD, 0x8A098C35, 0xE8300988, 0xFE835E55, 0xEA74FD24, + 0xF3127AB2, 0xEE8379F2, 0x3F136FD2, 0x472AA942, 0x3BC1A7D7, + 0x5B6A8A98, 0xF039CCF3, 0x5E55425B, 0x3F801B4, 0x44556FB4, + 0xCC966D37, 0x56E32B90, 0x2BCDA2E5, 0xC70F1125, 0x8C2A015C, + 0x3D37FCA7, 0x2118A4EF, 0xCE051A9C, 0xCB84DCB9, 0x8451C9E0, + 0x4BDB1900, 0x8FC71D5D, 0xF61FD749, 0xA696D2E0, 0x6EED502A, + 0xB345CE8B, 0x76FCDA8E, 0xBE4A45F8, 0x8375E9E7, 0x625FF29B, + 0xCEC61240, 0x3876B21D, 0xBA8C8F59, 0x8CD169C6, 0x9F82251F, + 0x2E6EC495, 0x99319E, 0xB0160B46, 0x8B77EDD8, 0x6217902B, + 0x76FA6AD0, 0xB541F2BC, 0x961EA91C, 0x6F554C1F, 0xBD92328D, + 0xA9C077FD, 0x90A5311C, 0xEFE9B1FB, 0x9C84AA8C, 0x812517C3, + 0xFE71D7F4, 0xC4F6A5BF, 0x8B75A262, 0xC726EB36, 0x5F803035, + 0xCECDE2B7, 0xF61152A8, 0x78557ED1, 0x50F3BB55, 0xDD830290, + 0xB125B524, 0xC8683B0D, 0xE5FD573B, 0x48B13066, 0x62AE556E, + 0x5A637C89, 0x498D69F, 0x3F3A5BE5, 0xB98B86D7, 0x20CF4AF4, + 0xA3E55E7D, 0xEE93FC6F, 0xCCA95763, 0x5B3C5706, 0x8342B013, + 0xA0C7BDB9, 0x83D686E4, 0x6934B64, 0x324D75C3, 0x9A100C81, + 0x72E7E9AE, 0xC729A8AC, 0x9E8489E0, 0xFE5BC233, 0x64709AE9, + 0x113437BC, 0x296DEBC0, 0xC4376603, 0x9F0CD7EE, 0x6412AB97, + 0x3EECEFCD, 0x62DCD50, 0x15DFF1, 0xEEFDCF8E, 0x119849C1, + 0xDAAC93FF, 0xD531AF57, 0x82A10F47, 0xD55B7A97, 0x2F3A268B, + 0x4F1CC181, 0xAE01C1AC, 0xF3CF6F61, 0xE8BDAED5, 0x7397FD99, + 0xDD36A03C, 0x9BAED7C3, 0x51404903, 0xB9867B61, 0x3880A4FD, + 0x42B90A49, 0xA94696C1, 0x546DEA1D, 0xEE73A3DE, 0x1A4BAC37, + 0xBC6AF7AE, 0x7DD5B57B, 0xD2F121F, 0xD2BCCA1E, 0xD5DC4753, + 0xA135C08C, 0x78E97831, 0x9B91C00B, 0xFFF2C044, 0x147B797F, + 0x299CFB60, 0x71083BB, 0xB39A6C4F, 0x4814E3E1, 0xBD246AB0, + 0xBCD61250, 0x2D0870, 0xC660435C, 0xCA11681E, 0xADA4C80E, + 0x790C8875, 0x8C4F0D08, 0x48D90C74, 0xE874E9AA, 0xA8013EE8, + 0xB2D23A7A, 0xAF73A16E, 0x2485512C, 0x698E0CB2, 0x2FF566C9, + 0xC1B0C3C6, 0x2BE17C0E, 0xC42C3907, 0xD8A2EA94, 0x8991D24C, + 0x19B939F1, 0xF936F8B3, 0xA72D7EF1, 0x97EED001, 0xBF9C5156, + 0x75F08A67, 0x9AFD5756, 0x5D9D359C, 0xF905B7EC, 0x2B1553E1, + 0x9E0FD4E1, 0x8DC4814C, 0x89F28E6D, 0x14174915, 0x1F3A4217, + 0xA8F367F9, 0x93EE87C5, 0xAD70C6D8, 0xF04D465C, 0xE403D72B, + 0xA686EC0F, 0xCD3A5728, 0xA1BD007, 0x9E21E401, 0xAE8517CF, + 0x6DDB79FC, 0x8CB2C475, 0x6F71544, 0xBEAC91CF, 0x4739DC4E, + 0x6CF4F788, 0x36BAD9AC, 0xF23568D4, 0x250BAB0A, 0x4633384F, + 0x54F6F251, 0x454F9605, 0xCB1A346, 0x632E207F, 0x3017539C, + 0x174A33ED, 0xBDCFD2DE, 0xC17F3D39, 0x17B8A9A2, 0xC267FB51, + 0x9322387D, 0x348760C, 0x3C14D7E0, 0xE4E4254E, 0xCA72AA41, + 0xB6102ED3, 0x6317A3F, 0xD3B6B9F7, 0xA8C71BB7, 0x6E452957, + 0x3F896E32, 0xE38A4A58, 0x9893F432, 0x110A21D4, 0xE835FEBE, + 0x90F51080, 0xD0AC5AF, 0x4FCB9903, 0xFE547785, 0x144B285D, + 0xD0ECC753, 0xAE503BA4, 0x57CEAABC, 0x95713FE6, 0x5B0F4F86, + 0xD94BD751, 0x4017F139, 0xF60F5E1D, 0xB9A63351, 0xF7F94F6A, + 0x7E556ECC, 0xBFDB8642, 0xB70D07D, 0x351BEA77, 0xD1F3CAD, + 0xA3D7EF4D, 0x1EAA28E3, 0x98A2EA79, 0xD8647392, 0x1B896804, + 0x35CA6A08, 0x305258F, 0xE58BD955, 0xABCB6278, 0x87CF1146, + 0x13145966, 0x45BB55CD, 0x818AA368, 0xA027F11F, 0x64C427A3, + 0xEC831B99, 0xF2BD53F9, 0x7FDA7301, 0x35BE80D4, 0x5256E6FB, + 0xC97D33AE, 0x30921709, 0xC2724BEC, 0x78F5436F, 0x4F5749CD, + 0x9007F551, 0x327C31C0, 0x89782D13, 0x119AD125, 0xB1071A01, + 0x63100C70, 0x83120035, 0xA8E2E403, 0x7E213FA3, 0xBF06AAC4, + 0xBA68C4D9, 0x4B568927, 0x1DDD40F, 0x10FC10E8, 0xBBD7230A, + 0x96475640, 0x8C8E6EC1, 0x44A1134A, 0xEF0F40F0, 0x51E2A5E0, + 0x61AE6D65, 0x9DE72FD6, 0xB1711336, 0x90BEB84, 0xD610EFC6, + 0x3D231F91, 0xB5885164, 0x2CB2112C, 0x36F50789, 0x3DEF2AB9, + 0x1D9DC1DA, 0xA37DB070, 0x2AA92EB, 0x2D57ED6E, 0xD6E2C2CD, + 0xB78FC54C, 0x767A565E, 0x1D1F5AAE, 0x89F256DB, 0x716A97D, + 0x1344431D, 0xFAF015FB, 0xFED59649, 0xC479882A, 0xEEFC3D1E, + 0x840AE162, 0xD963A347, 0x75462C25, 0xDA990E07, 0x9A57DE31, + 0x74A35F20, 0x91852CD6, 0x3F16DE14, 0x5FA6A255, 0x47D00F85, + 0x1B4836C9, 0xC73D0290, 0xE301026B, 0x592068D6, 0x7C32A301, + 0x3A3C04C4, 0xB5BD3BAF, 0xB8C3BF60, 0x76723A1B, 0xD05BC35E, + 0x7679021C, 0x6298096, 0x590BA59C, 0xBB30A2F6, 0xE5F6B06C, + 0x21BD2A9E, 0xAC68D7DA, 0xEDA2ED5A, 0xA10E60FA, 0xABDBF569, + 0x17F5868E, 0x82AA8505, 0x384BD8FC, 0x68DC2746, 0x8F029C0D, + 0x3755EB11, 0xAEF4BB79, 0x453B87BA, 0x9926977F, 0x1FA1B806, + 0xC905618, 0x9BFE8E92, 0xF6F68A5A, 0xAA955D92, 0x44F57A4A, + 0x2186E272, 0x62EB01DA, 0x85A2D502, 0xB087955D, 0x26FF2BA0, + 0x8D462C04, 0xE024573B, 0x609CDBD7, 0xA99B9D19, 0xFEEB3F60, + 0x12903A0D, 0x46480C6, 0xDD0BD1B9, 0x6C60C43, 0x5E11A4FE, + 0x935E9E58, 0x8A7F6D33, 0xA505132D, 0xBB2E3E12, 0xF48633F4, + 0xF3BA8CF7, 0xC25D4EDD, 0x788672B8, 0xB2812608, 0xACB3A62, + 0x2EEB679A, 0x443A71B9, 0xC42F4B12, 0xD28B3482, 0x5571FA8A, + 0x5C0B3D55, 0x8B8619C6, 0xF564F10C, 0xD9A7C914, 0xFBD1EF46, + 0xCEABC573, 0xEC609D28, 0x5839413B, 0x5019E901, 0x248FFF30, + 0x7BFFB801, 0x7FD46584, 0x43702812, 0x3A5A0880, 0x7E3E9EDA, + 0xCA4623E3, 0x2FB87A70, 0xFE70D956, 0xCE9EB3E6, 0x9A2CD2F1, + 0x92EFB0C8, 0xC7E23873, 0x53B63A86, 0xB9D93548, 0x3C022B2, + 0xCF4F22A6, 0x981E70BC, 0x4A05F3AB, 0xD763E93B, 0x6EAF767D, + 0x4162629D, 0xD82A25E7, 0x6CDD19A3, 0x13524F68, 0xE5F23FDC, + 0xB37F311F, 0x35FD43B6, 0x36626469, 0x1E409CF6, 0xE4C04F9D, + 0xC1B58001, 0xD131078F, 0x9DE279A, 0x80B62212, 0x526405DD, + 0xC17777C1, 0x7045FCDC, 0x53862AEC, 0x5D583056, 0xEB532222, + 0x5837EA32, 0x719C06A4, 0x43D4F131, 0x577C6DDB, 0x9E5815A7, + 0x8189DDD9, 0x170F154F, 0xEF813B20, 0x4DD83A53, 0xB09A28FD, + 0x8D0DBED5, 0x1836596D, 0xC5BB2696, 0xA69FC859, 0xD6FF5E0D, + 0xCCC65761, 0xC818C6F7, 0x7A25F980, 0xF949133, 0xC515C093, + 0xA8AD04B5, 0x6768AC1C, 0xB5BE2C4A, 0x4F04616F, 0xBD28E4E3, + 0x4CCA6347, 0x5F61C031 +}; + +/* The source data is random across the q31_t range. Accessing it by word should + remain random. */ +q15_t * transform_fft_q15_inputs = (q15_t *) transform_fft_q31_inputs; + +q15_t dct4_transform_fft_q15_inputs[TRANSFORM_MAX_FFT_LEN * 2] = +{ + 0x0000, 0x2d5c, 0x54d5, 0x714b, 0x7f0d, 0x7c51, 0x6972, 0x48e4, + 0x1edf, 0xf0da, 0xc4cb, 0xa06c, 0x8874, 0x8001, 0x882a, 0x9fe2, + 0xc413, 0xf00c, 0x1e16, 0x4839, 0x68fc, 0x7c1f, 0x7f25, 0x71ab, + 0x5570, 0x2e1e, 0x00cf, 0xd367, 0xabc7, 0x8f16, 0x810d, 0x837e, + 0x9619, 0xb672, 0xe057, 0x0e58, 0x3a7c, 0x5f0a, 0x7741, 0x7ffe, + 0x781e, 0x60a7, 0x3ca4, 0x10c2, 0xe2b4, 0xb873, 0x977b, 0x8415, + 0x80c3, 0x8df6, 0xa9f6, 0xd121, 0xfe61, 0x2bd6, 0x539c, 0x7087, + 0x7ed8, 0x7cb1, 0x6a5c, 0x4a38, 0x2072, 0xf277, 0xc63d, 0xa182, + 0x890b, 0x8005, 0x879b, 0x9ed2, 0xc2a6, 0xee70, 0x1c81, 0x46e0, + 0x680c, 0x7bb7, 0x7f53, 0x7268, 0x56a3, 0x2fa0, 0x026f, 0xd4ed, + 0xad02, 0x8fdc, 0x8145, 0x8321, 0x9531, 0xb51f, 0xdec5, 0x0cba, + 0x390a, 0x5df1, 0x76a8, 0x7ff7, 0x78ab, 0x61b5, 0x3e10, 0x125e, + 0xe449, 0xb9cd, 0x986d, 0x847f, 0x8099, 0x8d3c, 0xa8c4, 0xcf9f, + 0xfcc2, 0x2a4f, 0x5260, 0x6fbf, 0x7e9d, 0x7d0c, 0x6b40, 0x4b89, + 0x2203, 0xf414, 0xc7b1, 0xa29c, 0x89a7, 0x800e, 0x8710, 0x9dc5, + 0xc13a, 0xecd5, 0x1aec, 0x4585, 0x6718, 0x7b4a, 0x7f7b, 0x7320, + 0x57d3, 0x3121, 0x040e, 0xd675, 0xae40, 0x90a7, 0x8182, 0x82c8, + 0x944f, 0xb3d0, 0xdd35, 0x0b1d, 0x3795, 0x5cd5, 0x760a, 0x7fec, + 0x7933, 0x62bf, 0x3f7a, 0x13f8, 0xe5df, 0xbb2a, 0x9964, 0x84ef, + 0x8073, 0x8c86, 0xa796, 0xce20, 0xfb23, 0x28c6, 0x5120, 0x6ef2, + 0x7e5e, 0x7d63, 0x6c21, 0x4cd7, 0x2393, 0xf5b2, 0xc927, 0xa3ba, + 0x8a47, 0x801c, 0x868b, 0x9cbd, 0xbfd1, 0xeb3b, 0x1955, 0x4427, + 0x6620, 0x7ad7, 0x7f9d, 0x73d3, 0x5900, 0x329f, 0x05ad, 0xd7ff, + 0xaf81, 0x9176, 0x81c4, 0x8274, 0x9370, 0xb284, 0xdba6, 0x097f, + 0x361d, 0x5bb5, 0x7566, 0x7fda, 0x79b6, 0x63c6, 0x40e2, 0x1592, + 0xe777, 0xbc8a, 0x9a5e, 0x8564, 0x8053, 0x8bd5, 0xa66b, 0xcca2, + 0xf983, 0x273c, 0x4fdd, 0x6e21, 0x7e19, 0x7db3, 0x6cfd, 0x4e21, + 0x2521, 0xf750, 0xca9f, 0xa4dc, 0x8aed, 0x8030, 0x860a, 0x9bb9, + 0xbe6b, 0xe9a1, 0x17bd, 0x42c6, 0x6523, 0x7a60, 0x7fbb, 0x7481, + 0x5a29, 0x341c, 0x074c, 0xd98a, 0xb0c6, 0x924a, 0x820b, 0x8226, + 0x9297, 0xb13b, 0xda18, 0x07e0, 0x34a4, 0x5a92, 0x74bf, 0x7fc4, + 0x7a34, 0x64c8, 0x4247, 0x172b, 0xe90f, 0xbdec, 0x9b5d, 0x85dd, + 0x8038, 0x8b29, 0xa544, 0xcb27, 0xf7e5, 0x25af, 0x4e97, 0x6d4b, + 0x7dcf, 0x7dff, 0x6dd5, 0x4f69, 0x26ae, 0xf8ef, 0xcc1a, 0xa601, + 0x8b97, 0x8049, 0x858f, 0x9ab9, 0xbd08, 0xe809, 0x1625, 0x4162, + 0x6422, 0x79e4, 0x7fd3, 0x752b, 0x5b4e, 0x3596, 0x08eb, 0xdb17, + 0xb20e, 0x9322, 0x8258, 0x81dd, 0x91c1, 0xaff5, 0xd88c, 0x0641, + 0x3328, 0x596a, 0x7412, 0x7fa8, 0x7aad, 0x65c6, 0x43a9, 0x18c3, + 0xeaa8, 0xbf51, 0x9c5f, 0x865c, 0x8023, 0x8a82, 0xa421, 0xc9ad, + 0xf646, 0x2422, 0x4d4d, 0x6c70, 0x7d80, 0x7e46, 0x6ea8, 0x50ad, + 0x2839, 0xfa8e, 0xcd97, 0xa72b, 0x8c46, 0x8067, 0x8518, 0x99bd, + 0xbba7, 0xe671, 0x148b, 0x3ffb, 0x631e, 0x7963, 0x7fe6, 0x75d0, + 0x5c6f, 0x370f, 0x0a89, 0xdca6, 0xb359, 0x93ff, 0x82a9, 0x8199, + 0x90f0, 0xaeb2, 0xd702, 0x04a2, 0x31aa, 0x583f, 0x7360, 0x7f88, + 0x7b21, 0x66c0, 0x4508, 0x1a5a, 0xec42, 0xc0b9, 0x9d66, 0x86e0, + 0x8012, 0x89e0, 0xa302, 0xc836, 0xf4a8, 0x2292, 0x4c01, 0x6b91, + 0x7d2c, 0x7e87, 0x6f76, 0x51ee, 0x29c3, 0xfc2d, 0xcf16, 0xa858, + 0x8cfa, 0x808b, 0x84a7, 0x98c5, 0xba4a, 0xe4da, 0x12f1, 0x3e92, + 0x6215, 0x78dc, 0x7ff4, 0x7670, 0x5d8c, 0x3884, 0x0c27, 0xde36, + 0xb4a7, 0x94e0, 0x8300, 0x815a, 0x9024, 0xad73, 0xd579, 0x0303, + 0x302a, 0x5711, 0x72aa, 0x7f61, 0x7b90, 0x67b5, 0x4664, 0x1bf0, + 0xeddd, 0xc223, 0x9e71, 0x8769, 0x8007, 0x8942, 0xa1e6, 0xc6c2, + 0xf30b, 0x2102, 0x4ab1, 0x6aae, 0x7cd2, 0x7ec3, 0x7040, 0x532b, + 0x2b4b, 0xfdcc, 0xd097, 0xa988, 0x8db3, 0x80b4, 0x843a, 0x97d1, + 0xb8ef, 0xe345, 0x1155, 0x3d27, 0x6108, 0x7851, 0x7ffc, 0x770b, + 0x5ea6, 0x39f8, 0x0dc4, 0xdfc7, 0xb5f8, 0x95c5, 0x835c, 0x8120, + 0x8f5d, 0xac37, 0xd3f2, 0x0164, 0x2ea8, 0x55de, 0x71ef, 0x7f36, + 0x7bfa, 0x68a7, 0x47be, 0x1d85, 0xef79, 0xc390, 0x9f80, 0x87f6, + 0x8001, 0x88a9, 0xa0cf, 0xc54f, 0xf16e, 0x1f70, 0x495e, 0x69c6, + 0x7c74, 0x7efa, 0x7106, 0x5465, 0x2cd1, 0xff6c, 0xd219, 0xaabc, + 0x8e70, 0x80e2, 0x83d3, 0x96e2, 0xb796, 0xe1b1, 0x0fb9, 0x3bb8, + 0x5ff7, 0x77c1, 0x7fff, 0x77a1, 0x5fbc, 0x3b69, 0x0f61, 0xe15a, + 0xb74d, 0x96af, 0x83bd, 0x80ec, 0x8e9a, 0xaaff, 0xd26d, 0xffc5, + 0x2d24, 0x54a8, 0x712f, 0x7f05, 0x7c5f, 0x6994, 0x4914, 0x1f19, + 0xf115, 0xc500, 0xa093, 0x8889, 0x8001, 0x8816, 0x9fbb, 0xc3df, + 0xefd1, 0x1ddc, 0x4808, 0x68da, 0x7c10, 0x7f2c, 0x71c6, 0x559c, + 0x2e55, 0x010a, 0xd39e, 0xabf4, 0x8f32, 0x8115, 0x8371, 0x95f7, + 0xb641, 0xe01e, 0x0e1d, 0x3a48, 0x5ee2, 0x772c, 0x7ffd, 0x7832, + 0x60cd, 0x3cd8, 0x10fd, 0xe2ee, 0xb8a4, 0x979e, 0x8423, 0x80bd, + 0x8ddb, 0xa9ca, 0xd0ea, 0xfe26, 0x2b9f, 0x536f, 0x706b, 0x7ed0, + 0x7cbf, 0x6a7c, 0x4a68, 0x20ab, 0xf2b2, 0xc672, 0xa1aa, 0x8921, + 0x8006, 0x8787, 0x9eab, 0xc272, 0xee36, 0x1c48, 0x46af, 0x67ea, + 0x7ba8, 0x7f59, 0x7282, 0x56cf, 0x2fd7, 0x02aa, 0xd525, 0xad2f, + 0x8ff9, 0x814d, 0x8314, 0x9511, 0xb4ef, 0xde8c, 0x0c80, 0x38d5, + 0x5dc9, 0x7692, 0x7ff6, 0x78bf, 0x61db, 0x3e44, 0x1298, 0xe483, + 0xb9ff, 0x9890, 0x848f, 0x8093, 0x8d22, 0xa899, 0xcf68, 0xfc87, + 0x2a17, 0x5232, 0x6fa2, 0x7e95, 0x7d19, 0x6b61, 0x4bb8, 0x223c, + 0xf44f, 0xc7e6, 0xa2c5, 0x89bd, 0x8010, 0x86fd, 0x9d9f, 0xc107, + 0xec9b, 0x1ab2, 0x4553, 0x66f5, 0x7b3a, 0x7f80, 0x7339, 0x57fe, + 0x3157, 0x0449, 0xd6ad, 0xae6d, 0x90c4, 0x818b, 0x82bc, 0x942f, + 0xb3a0, 0xdcfc, 0x0ae2, 0x375f, 0x5cad, 0x75f3, 0x7fe9, 0x7946, + 0x62e5, 0x3fae, 0x1433, 0xe619, 0xbb5c, 0x9987, 0x84ff, 0x806f, + 0x8c6d, 0xa76b, 0xcde9, 0xfae7, 0x288e, 0x50f2, 0x6ed5, 0x7e54, + 0x7d6e, 0x6c41, 0x4d06, 0x23cc, 0xf5ed, 0xc95c, 0xa3e3, 0x8a5f, + 0x801f, 0x8678, 0x9c98, 0xbf9e, 0xeb00, 0x191b, 0x43f5, 0x65fc, + 0x7ac7, 0x7fa2, 0x73ec, 0x592a, 0x32d6, 0x05e8, 0xd837, 0xafaf, + 0x9194, 0x81ce, 0x8269, 0x9351, 0xb255, 0xdb6d, 0x0944, 0x35e8, + 0x5b8c, 0x754f, 0x7fd8, 0x79c8, 0x63eb, 0x4115, 0x15cc, 0xe7b1, + 0xbcbc, 0x9a82, 0x8575, 0x804f, 0x8bbd, 0xa641, 0xcc6c, 0xf948, + 0x2703, 0x4faf, 0x6e03, 0x7e0f, 0x7dbf, 0x6d1c, 0x4e50, 0x255a, + 0xf78b, 0xcad5, 0xa505, 0x8b05, 0x8033, 0x85f8, 0x9b94, 0xbe39, + 0xe967, 0x1783, 0x4293, 0x64ff, 0x7a4f, 0x7fbf, 0x749a, 0x5a52, + 0x3452, 0x0787, 0xd9c3, 0xb0f4, 0x9268, 0x8216, 0x821b, 0x9278, + 0xb10c, 0xd9e0, 0x07a5, 0x346e, 0x5a68, 0x74a6, 0x7fc0, 0x7a46, + 0x64ec, 0x4279, 0x1765, 0xe949, 0xbe1f, 0x9b81, 0x85ef, 0x8035, + 0x8b11, 0xa51b, 0xcaf1, 0xf7aa, 0x2577, 0x4e68, 0x6d2c, 0x7dc4, + 0x7e0a, 0x6df3, 0x4f97, 0x26e6, 0xf92a, 0xcc50, 0xa62c, 0x8bb0, + 0x804d, 0x857d, 0x9a95, 0xbcd6, 0xe7cf, 0x15ea, 0x412f, 0x63fe, + 0x79d2, 0x7fd6, 0x7543, 0x5b77, 0x35cc, 0x0925, 0xdb50, 0xb23d, + 0x9341, 0x8263, 0x81d3, 0x91a3, 0xafc7, 0xd854, 0x0606, 0x32f2, + 0x5940, 0x73f9, 0x7fa4, 0x7abe, 0x65ea, 0x43db, 0x18fd, 0xeae2, + 0xbf84, 0x9c85, 0x866f, 0x8020, 0x8a6b, 0xa3f8, 0xc978, 0xf60b, + 0x23e9, 0x4d1e, 0x6c51, 0x7d74, 0x7e4f, 0x6ec5, 0x50db, 0x2871, + 0xfac9, 0xcdcd, 0xa755, 0x8c60, 0x806c, 0x8508, 0x9999, 0xbb75, + 0xe637, 0x1451, 0x3fc8, 0x62f8, 0x7950, 0x7fe8, 0x75e7, 0x5c98, + 0x3744, 0x0ac4, 0xdcdf, 0xb388, 0x941e, 0x82b5, 0x8190, 0x90d3, + 0xae85, 0xd6ca, 0x0467, 0x3173, 0x5814, 0x7347, 0x7f82, 0x7b31, + 0x66e3, 0x453a, 0x1a94, 0xec7d, 0xc0ec, 0x9d8c, 0x86f3, 0x8011, + 0x89c9, 0xa2d9, 0xc801, 0xf46d, 0x2259, 0x4bd1, 0x6b71, 0x7d1f, + 0x7e90, 0x6f93, 0x521b, 0x29fb, 0xfc68, 0xcf4c, 0xa883, 0x8d14, + 0x8090, 0x8497, 0x98a2, 0xba18, 0xe4a1, 0x12b6, 0x3e5f, 0x61ef, + 0x78c9, 0x7ff5, 0x7686, 0x5db5, 0x38b9, 0x0c61, 0xde6f, 0xb4d7, + 0x9500, 0x830d, 0x8152, 0x9007, 0xad46, 0xd541, 0x02c8, 0x2ff3, + 0x56e5, 0x7290, 0x7f5c, 0x7ba0, 0x67d8, 0x4696, 0x1c2a, 0xee17, + 0xc257, 0x9e97, 0x877d, 0x8006, 0x892c, 0xa1be, 0xc68d, 0xf2d0, + 0x20c8, 0x4a81, 0x6a8d, 0x7cc5, 0x7ecc, 0x705d, 0x5358, 0x2b82, + 0xfe08, 0xd0ce, 0xa9b4, 0x8dce, 0x80ba, 0x842b, 0x97af, 0xb8bd, + 0xe30b, 0x111b, 0x3cf3, 0x60e1, 0x783d, 0x7ffd, 0x7721, 0x5ece, + 0x3a2d, 0x0dff, 0xe000, 0xb629, 0x95e6, 0x836a, 0x8119, 0x8f41, + 0xac0b, 0xd3bb, 0x0129, 0x2e71, 0x55b2, 0x71d4, 0x7f2f, 0x7c09, + 0x68c9, 0x47ef, 0x1dbf, 0xefb3, 0xc3c4, 0x9fa7, 0x880b, 0x8001, + 0x8894, 0xa0a7, 0xc51b, 0xf133, 0x1f36, 0x492d, 0x69a5, 0x7c66, + 0x7f02, 0x7121, 0x5492, 0x2d08, 0xffa7, 0xd251, 0xaae8, 0x8e8b, + 0x80e9, 0x83c5, 0x96c1, 0xb766, 0xe177, 0x0f7f, 0x3b84, 0x5fd0, + 0x77ac, 0x7fff, 0x77b6, 0x5fe3, 0x3b9d, 0x0f9b, 0xe193, 0xb77d, + 0x96d1, 0x83cc, 0x80e5, 0x8e7e, 0xaad3, 0xd236, 0xff8a, 0x2ced, + 0x547c, 0x7114, 0x7efe, 0x7c6d, 0x69b5, 0x4945, 0x1f52, 0xf150, + 0xc534, 0xa0ba, 0x889e, 0x8001, 0x8801, 0x9f94, 0xc3ab, 0xef97, + 0x1da3, 0x47d7, 0x68b8, 0x7c02, 0x7f33, 0x71e1, 0x55c8, 0x2e8c, + 0x0145, 0xd3d6, 0xac20, 0x8f4e, 0x811c, 0x8363, 0x95d6, 0xb611, + 0xdfe5, 0x0de2, 0x3a13, 0x5eba, 0x7716, 0x7ffd, 0x7847, 0x60f4, + 0x3d0c, 0x1137, 0xe327, 0xb8d5, 0x97c0, 0x8432, 0x80b7, 0x8dc1, + 0xa99f, 0xd0b3, 0xfdeb, 0x2b67, 0x5342, 0x704f, 0x7ec8, 0x7ccc, + 0x6a9d, 0x4a98, 0x20e4, 0xf2ed, 0xc6a6, 0xa1d2, 0x8937, 0x8007, + 0x8773, 0x9e85, 0xc23e, 0xedfb, 0x1c0e, 0x467e, 0x67c7, 0x7b98, + 0x7f5e, 0x729d, 0x56fa, 0x300e, 0x02e5, 0xd55c, 0xad5c, 0x9015, + 0x8156, 0x8307, 0x94f0, 0xb4c0, 0xde53, 0x0c45, 0x38a0, 0x5da1, + 0x767b, 0x7ff5, 0x78d2, 0x6201, 0x3e78, 0x12d3, 0xe4bd, 0xba30, + 0x98b3, 0x849e, 0x808e, 0x8d08, 0xa86e, 0xcf32, 0xfc4c, 0x29df, + 0x5205, 0x6f85, 0x7e8c, 0x7d25, 0x6b81, 0x4be8, 0x2275, 0xf48a, + 0xc81b, 0xa2ed, 0x89d4, 0x8011, 0x86ea, 0x9d7a, 0xc0d3, 0xec60, + 0x1a78, 0x4522, 0x66d2, 0x7b2a, 0x7f85, 0x7353, 0x5829, 0x318e, + 0x0484, 0xd6e5, 0xae9b, 0x90e1, 0x8194, 0x82b0, 0x940f, 0xb371, + 0xdcc3, 0x0aa7, 0x372a, 0x5c84, 0x75dc, 0x7fe7, 0x7959, 0x630a, + 0x3fe1, 0x146d, 0xe653, 0xbb8e, 0x99aa, 0x8510, 0x806a, 0x8c53, + 0xa741, 0xcdb3, 0xfaac, 0x2856, 0x50c4, 0x6eb7, 0x7e4b, 0x7d7a, + 0x6c60, 0x4d35, 0x2404, 0xf628, 0xc992, 0xa40c, 0x8a76, 0x8021, + 0x8666, 0x9c72, 0xbf6b, 0xeac6, 0x18e1, 0x43c2, 0x65d8, 0x7ab6, + 0x7fa6, 0x7405, 0x5955, 0x330c, 0x0623, 0xd86f, 0xafdd, 0x91b2, + 0x81d8, 0x825e, 0x9332, 0xb226, 0xdb34, 0x0909, 0x35b2, 0x5b63, + 0x7537, 0x7fd5, 0x79db, 0x6410, 0x4148, 0x1607, 0xe7eb, 0xbcee, + 0x9aa6, 0x8586, 0x804b, 0x8ba4, 0xa617, 0xcc36, 0xf90d, 0x26cb, + 0x4f80, 0x6de4, 0x7e05, 0x7dca, 0x6d3b, 0x4e7f, 0x2592, 0xf7c6, + 0xcb0b, 0xa52f, 0x8b1d, 0x8037, 0x85e6, 0x9b6f, 0xbe06, 0xe92d, + 0x1749, 0x4261, 0x64db, 0x7a3d, 0x7fc2, 0x74b2, 0x5a7c, 0x3488, + 0x07c2, 0xd9fb, 0xb123, 0x9287, 0x8220, 0x8211, 0x9259, 0xb0de, + 0xd9a7, 0x076a, 0x3438, 0x5a3e, 0x748e, 0x7fbd, 0x7a57, 0x6511, + 0x42ac, 0x179f, 0xe983, 0xbe51, 0x9ba6, 0x8601, 0x8032, 0x8af9, + 0xa4f1, 0xcabb, 0xf76f, 0x253e, 0x4e39, 0x6d0d, 0x7db9, 0x7e14, + 0x6e11, 0x4fc5, 0x271f, 0xf965, 0xcc86, 0xa656, 0x8bc9, 0x8051, + 0x856c, 0x9a70, 0xbca3, 0xe795, 0x15b0, 0x40fc, 0x63d9, 0x79c0, + 0x7fd9, 0x755a, 0x5ba0, 0x3602, 0x0960, 0xdb89, 0xb26c, 0x9360, + 0x826e, 0x81c9, 0x9185, 0xaf99, 0xd81c, 0x05cb, 0x32bb, 0x5916, + 0x73e0, 0x7fa0, 0x7acf, 0x660d, 0x440d, 0x1937, 0xeb1d, 0xbfb7, + 0x9caa, 0x8681, 0x801e, 0x8a53, 0xa3cf, 0xc942, 0xf5d0, 0x23b0, + 0x4cef, 0x6c31, 0x7d69, 0x7e59, 0x6ee3, 0x5108, 0x28a9, 0xfb04, + 0xce04, 0xa780, 0x8c79, 0x8071, 0x84f7, 0x9976, 0xbb43, 0xe5fd, + 0x1416, 0x3f95, 0x62d3, 0x793d, 0x7feb, 0x75fe, 0x5cc0, 0x3779, + 0x0aff, 0xdd18, 0xb3b8, 0x943e, 0x82c2, 0x8186, 0x90b6, 0xae57, + 0xd692, 0x042c, 0x313d, 0x57ea, 0x732d, 0x7f7d, 0x7b41, 0x6706, + 0x456b, 0x1ace, 0xecb7, 0xc120, 0x9db2, 0x8706, 0x800f, 0x89b2, + 0xa2b1, 0xc7cc, 0xf433, 0x2220, 0x4ba1, 0x6b51, 0x7d13, 0x7e99, + 0x6fb0, 0x5248, 0x2a32, 0xfca3, 0xcf83, 0xa8ae, 0x8d2e, 0x8096, + 0x8487, 0x987f, 0xb9e6, 0xe467, 0x127c, 0x3e2b, 0x61c9, 0x78b5, + 0x7ff7, 0x769c, 0x5ddd, 0x38ee, 0x0c9c, 0xdea8, 0xb507, 0x9521, + 0x831a, 0x8149, 0x8feb, 0xad19, 0xd50a, 0x028d, 0x2fbc, 0x56ba, + 0x7275, 0x7f56, 0x7baf, 0x67fa, 0x46c7, 0x1c64, 0xee52, 0xc28b, + 0x9ebe, 0x8791, 0x8005, 0x8916, 0xa196, 0xc658, 0xf295, 0x208f, + 0x4a51, 0x6a6c, 0x7cb8, 0x7ed4, 0x7079, 0x5385, 0x2bba, 0xfe43, + 0xd104, 0xa9df, 0x8de8, 0x80c0, 0x841c, 0x978d, 0xb88c, 0xe2d2, + 0x10e0, 0x3cbf, 0x60bb, 0x7828, 0x7ffe, 0x7736, 0x5ef5, 0x3a61, + 0x0e39, 0xe03a, 0xb659, 0x9608, 0x8377, 0x8111, 0x8f25, 0xabde, + 0xd383, 0x00ee, 0x2e3a, 0x5586, 0x71b9, 0x7f29, 0x7c17, 0x68eb, + 0x4820, 0x1df8, 0xefee, 0xc3f9, 0x9fce, 0x8820, 0x8001, 0x887f, + 0xa080, 0xc4e6, 0xf0f8, 0x1efd, 0x48fd, 0x6983, 0x7c58, 0x7f09, + 0x713d, 0x54be, 0x2d3f, 0xffe2, 0xd288, 0xab15, 0x8ea7, 0x80f0, + 0x83b6, 0x969f, 0xb735, 0xe13e, 0x0f44, 0x3b50, 0x5fa9, 0x7797, + 0x7fff, 0x77cb, 0x600a, 0x3bd2, 0x0fd6, 0xe1cd, 0xb7ae, 0x96f3, + 0x83da, 0x80de, 0x8e63, 0xaaa7, 0xd1ff, 0xff4f, 0x2cb6, 0x5450, + 0x70f8, 0x7ef7, 0x7c7b, 0x69d6, 0x4975, 0x1f8b, 0xf18a, 0xc569, + 0xa0e2, 0x88b4, 0x8002, 0x87ed, 0x9f6d, 0xc377, 0xef5c, 0x1d69, + 0x47a6, 0x6896, 0x7bf3, 0x7f39, 0x71fc, 0x55f4, 0x2ec3, 0x0181, + 0xd40d, 0xac4d, 0x8f6a, 0x8124, 0x8356, 0x95b5, 0xb5e1, 0xdfab, + 0x0da7, 0x39de, 0x5e93, 0x7700, 0x7ffc, 0x785b, 0x611b, 0x3d40, + 0x1172, 0xe361, 0xb906, 0x97e2, 0x8441, 0x80b1, 0x8da6, 0xa973, + 0xd07c, 0xfdb0, 0x2b30, 0x5315, 0x7032, 0x7ebf, 0x7cd9, 0x6abe, + 0x4ac8, 0x211d, 0xf327, 0xc6db, 0xa1fa, 0x894d, 0x8008, 0x875f, + 0x9e5f, 0xc20a, 0xedc1, 0x1bd4, 0x464c, 0x67a4, 0x7b89, 0x7f64, + 0x72b7, 0x5726, 0x3045, 0x0320, 0xd594, 0xad89, 0x9032, 0x815e, + 0x82fa, 0x94d0, 0xb490, 0xde1a, 0x0c0a, 0x386b, 0x5d79, 0x7665, + 0x7ff3, 0x78e6, 0x6227, 0x3eab, 0x130d, 0xe4f7, 0xba62, 0x98d6, + 0x84ae, 0x8088, 0x8cee, 0xa843, 0xcefb, 0xfc10, 0x29a8, 0x51d8, + 0x6f68, 0x7e83, 0x7d32, 0x6ba1, 0x4c18, 0x22ae, 0xf4c5, 0xc850, + 0xa316, 0x89eb, 0x8013, 0x86d7, 0x9d54, 0xc0a0, 0xec26, 0x1a3e, + 0x44f0, 0x66af, 0x7b19, 0x7f8a, 0x736d, 0x5854, 0x31c4, 0x04bf, + 0xd71d, 0xaec9, 0x90ff, 0x819d, 0x82a4, 0x93ef, 0xb342, 0xdc8a, + 0x0a6c, 0x36f5, 0x5c5b, 0x75c5, 0x7fe5, 0x796c, 0x6330, 0x4014, + 0x14a7, 0xe68d, 0xbbc0, 0x99ce, 0x8520, 0x8065, 0x8c3a, 0xa716, + 0xcd7c, 0xfa71, 0x281e, 0x5097, 0x6e99, 0x7e41, 0x7d86, 0x6c80, + 0x4d64, 0x243d, 0xf663, 0xc9c7, 0xa435, 0x8a8d, 0x8024, 0x8653, + 0x9c4d, 0xbf38, 0xea8c, 0x18a7, 0x4390, 0x65b4, 0x7aa5, 0x7fab, + 0x741e, 0x597f, 0x3342, 0x065e, 0xd8a8, 0xb00b, 0x91d0, 0x81e2, + 0x8252, 0x9313, 0xb1f7, 0xdafc, 0x08ce, 0x357c, 0x5b39, 0x751f, + 0x7fd2, 0x79ed, 0x6434, 0x417b, 0x1641, 0xe825, 0xbd20, 0x9aca, + 0x8597, 0x8047, 0x8b8b, 0xa5ed, 0xcc00, 0xf8d2, 0x2693, 0x4f52, + 0x6dc6, 0x7dfa, 0x7dd4, 0x6d5a, 0x4ead, 0x25cb, 0xf801, 0xcb41, + 0xa559, 0x8b35, 0x803a, 0x85d5, 0x9b4b, 0xbdd3, 0xe8f3, 0x170f, + 0x422e, 0x64b6, 0x7a2c, 0x7fc6, 0x74ca, 0x5aa6, 0x34be, 0x07fd, + 0xda34, 0xb151, 0x92a5, 0x822b, 0x8206, 0x923b, 0xb0af, 0xd96f, + 0x072f, 0x3402, 0x5a14, 0x7475, 0x7fb9, 0x7a69, 0x6535, 0x42de, + 0x17da, 0xe9bd, 0xbe84, 0x9bcb, 0x8613, 0x802f, 0x8ae1, 0xa4c8, + 0xca85, 0xf734, 0x2506, 0x4e0a, 0x6cee, 0x7dae, 0x7e1e, 0x6e2f, + 0x4ff3, 0x2757, 0xf9a0, 0xccbc, 0xa680, 0x8be1, 0x8055, 0x855b, + 0x9a4d, 0xbc71, 0xe75a, 0x1576, 0x40c9, 0x63b4, 0x79ad, 0x7fdc, + 0x7572, 0x5bca, 0x3637, 0x099b, 0xdbc1, 0xb29b, 0x9380, 0x827a, + 0x81bf, 0x9168, 0xaf6b, 0xd7e4, 0x0590, 0x3285, 0x58eb, 0x73c7, + 0x7f9b, 0x7adf, 0x6631, 0x443f, 0x1971, 0xeb57, 0xbfea, 0x9ccf, + 0x8694, 0x801b, 0x8a3c, 0xa3a6, 0xc90d, 0xf596, 0x2377, 0x4cc0, + 0x6c12, 0x7d5d, 0x7e62, 0x6f00, 0x5136, 0x28e1, 0xfb3f, 0xce3a, + 0xa7ab, 0x8c93, 0x8076, 0x84e7, 0x9952, 0xbb12, 0xe5c3, 0x13dc, + 0x3f62, 0x62ad, 0x792a, 0x7fed, 0x7615, 0x5ce9, 0x37ae, 0x0b39, + 0xdd50, 0xb3e7, 0x945e, 0x82ce, 0x817d, 0x9099, 0xae2a, 0xd65a, + 0x03f1, 0x3106, 0x57bf, 0x7313, 0x7f78, 0x7b51, 0x6729, 0x459d, + 0x1b08, 0xecf1, 0xc153, 0x9dd8, 0x871a, 0x800d, 0x899c, 0xa288, + 0xc797, 0xf3f8, 0x21e7, 0x4b72, 0x6b31, 0x7d06, 0x7ea2, 0x6fcd, + 0x5276, 0x2a6a, 0xfcde, 0xcfba, 0xa8d9, 0x8d48, 0x809c, 0x8478, + 0x985c, 0xb9b5, 0xe42d, 0x1241, 0x3df7, 0x61a2, 0x78a1, 0x7ff8, + 0x76b3, 0x5e05, 0x3923, 0x0cd7, 0xdee1, 0xb537, 0x9541, 0x8327, + 0x8141, 0x8fce, 0xacec, 0xd4d2, 0x0252, 0x2f86, 0x568e, 0x725b, + 0x7f50, 0x7bbe, 0x681d, 0x46f8, 0x1c9d, 0xee8d, 0xc2bf, 0x9ee4, + 0x87a5, 0x8004, 0x8900, 0xa16f, 0xc623, 0xf25a, 0x2056, 0x4a20, + 0x6a4c, 0x7cab, 0x7edb, 0x7095, 0x53b2, 0x2bf1, 0xfe7e, 0xd13c, + 0xaa0b, 0x8e03, 0x80c7, 0x840d, 0x976b, 0xb85b, 0xe298, 0x10a6, + 0x3c8b, 0x6094, 0x7814, 0x7ffe, 0x774c, 0x5f1d, 0x3a96, 0x0e74, + 0xe073, 0xb689, 0x9629, 0x8385, 0x810a, 0x8f09, 0xabb2, 0xd34c, + 0x00b2, 0x2e03, 0x555a, 0x719e, 0x7f22, 0x7c26, 0x690c, 0x4850, + 0x1e32, 0xf028, 0xc42d, 0x9ff5, 0x8835, 0x8001, 0x886a, 0xa059, + 0xc4b2, 0xf0be, 0x1ec4, 0x48cc, 0x6962, 0x7c4a, 0x7f10, 0x7158, + 0x54ea, 0x2d77, 0x001c, 0xd2bf, 0xab41, 0x8ec2, 0x80f7, 0x83a8, + 0x967d, 0xb705, 0xe105, 0x0f09, 0x3b1b, 0x5f81, 0x7782, 0x7fff, + 0x77e0, 0x6031, 0x3c06, 0x1011, 0xe206, 0xb7df, 0x9715, 0x83e8, + 0x80d7, 0x8e48, 0xaa7b, 0xd1c7, 0xff14, 0x2c7e, 0x5423, 0x70dc, + 0x7eef, 0x7c88, 0x69f8, 0x49a6, 0x1fc5, 0xf1c5, 0xc59d, 0xa10a, + 0x88c9, 0x8002, 0x87d8, 0x9f46, 0xc343, 0xef21, 0x1d30, 0x4775, + 0x6874, 0x7be4, 0x7f40, 0x7217, 0x561f, 0x2efa, 0x01bc, 0xd445, + 0xac7a, 0x8f86, 0x812c, 0x8348, 0x9594, 0xb5b1, 0xdf72, 0x0d6c, + 0x39aa, 0x5e6b, 0x76ea, 0x7ffb, 0x786f, 0x6141, 0x3d74, 0x11ac, + 0xe39b, 0xb938, 0x9805, 0x8451, 0x80ab, 0x8d8b, 0xa947, 0xd045, + 0xfd75, 0x2af8, 0x52e8, 0x7016, 0x7eb7, 0x7ce6, 0x6ade, 0x4af8, + 0x2156, 0xf362, 0xc710, 0xa222, 0x8963, 0x8009, 0x874b, 0x9e38, + 0xc1d6, 0xed86, 0x1b9b, 0x461b, 0x6782, 0x7b79, 0x7f6a, 0x72d1, + 0x5751, 0x307b, 0x035b, 0xd5cc, 0xadb6, 0x904f, 0x8167, 0x82ed, + 0x94b0, 0xb460, 0xdde1, 0x0bcf, 0x3836, 0x5d50, 0x764e, 0x7ff1, + 0x78f9, 0x624d, 0x3edf, 0x1347, 0xe530, 0xba93, 0x98f9, 0x84be, + 0x8083, 0x8cd4, 0xa818, 0xcec5, 0xfbd5, 0x2970, 0x51aa, 0x6f4b, + 0x7e7a, 0x7d3e, 0x6bc1, 0x4c47, 0x22e7, 0xf500, 0xc885, 0xa33e, + 0x8a02, 0x8015, 0x86c4, 0x9d2e, 0xc06d, 0xebeb, 0x1a04, 0x44be, + 0x668b, 0x7b09, 0x7f8f, 0x7386, 0x587f, 0x31fb, 0x04fa, 0xd755, + 0xaef6, 0x911c, 0x81a7, 0x8298, 0x93d0, 0xb312, 0xdc51, 0x0a31, + 0x36bf, 0x5c32, 0x75ad, 0x7fe2, 0x797e, 0x6355, 0x4047, 0x14e2, + 0xe6c7, 0xbbf2, 0x99f2, 0x8531, 0x8060, 0x8c21, 0xa6ec, 0xcd46, + 0xfa36, 0x27e6, 0x5069, 0x6e7b, 0x7e37, 0x7d91, 0x6c9f, 0x4d93, + 0x2476, 0xf69e, 0xc9fd, 0xa45f, 0x8aa5, 0x8027, 0x8641, 0x9c28, + 0xbf05, 0xea51, 0x186d, 0x435e, 0x6590, 0x7a94, 0x7faf, 0x7437, + 0x59a9, 0x3378, 0x0699, 0xd8e0, 0xb039, 0x91ee, 0x81ec, 0x8247, + 0x92f4, 0xb1c8, 0xdac3, 0x0893, 0x3547, 0x5b10, 0x7507, 0x7fce, + 0x79ff, 0x6459, 0x41ad, 0x167b, 0xe85f, 0xbd53, 0x9aee, 0x85a8, + 0x8043, 0x8b73, 0xa5c3, 0xcbca, 0xf897, 0x265a, 0x4f24, 0x6da7, + 0x7df0, 0x7ddf, 0x6d78, 0x4edc, 0x2603, 0xf83c, 0xcb77, 0xa583, + 0x8b4d, 0x803e, 0x85c3, 0x9b26, 0xbda1, 0xe8b8, 0x16d5, 0x41fb, + 0x6492, 0x7a1a, 0x7fc9, 0x74e2, 0x5ad0, 0x34f4, 0x0838, 0xda6c, + 0xb180, 0x92c4, 0x8236, 0x81fc, 0x921d, 0xb081, 0xd937, 0x06f4, + 0x33cc, 0x59ea, 0x745d, 0x7fb5, 0x7a7a, 0x6559, 0x4311, 0x1814, + 0xe9f8, 0xbeb7, 0x9bef, 0x8625, 0x802b, 0x8ac9, 0xa49e, 0xca50, + 0xf6f9, 0x24cd, 0x4ddc, 0x6ccf, 0x7da3, 0x7e28, 0x6e4d, 0x5022, + 0x278f, 0xf9db, 0xccf3, 0xa6aa, 0x8bfa, 0x805a, 0x854a, 0x9a29, + 0xbc3f, 0xe720, 0x153c, 0x4096, 0x638f, 0x799b, 0x7fdf, 0x7589, + 0x5bf3, 0x366d, 0x09d6, 0xdbfa, 0xb2ca, 0x939f, 0x8286, 0x81b5, + 0x914a, 0xaf3d, 0xd7ab, 0x0555, 0x324f, 0x58c1, 0x73ad, 0x7f96, + 0x7af0, 0x6655, 0x4471, 0x19ab, 0xeb91, 0xc01e, 0x9cf5, 0x86a7, + 0x8019, 0x8a25, 0xa37d, 0xc8d8, 0xf55b, 0x233e, 0x4c90, 0x6bf2, + 0x7d51, 0x7e6c, 0x6f1e, 0x5164, 0x2919, 0xfb7a, 0xce71, 0xa7d6, + 0x8cac, 0x807b, 0x84d7, 0x992f, 0xbae0, 0xe589, 0x13a1, 0x3f2e, + 0x6287, 0x7917, 0x7fef, 0x762b, 0x5d12, 0x37e4, 0x0b74, 0xdd89, + 0xb417, 0x947e, 0x82da, 0x8174, 0x907c, 0xadfc, 0xd622, 0x03b6, + 0x30d0, 0x5793, 0x72f9, 0x7f73, 0x7b61, 0x674c, 0x45cf, 0x1b42, + 0xed2c, 0xc187, 0x9dfe, 0x872d, 0x800b, 0x8985, 0xa260, 0xc762, + 0xf3bd, 0x21ae, 0x4b42, 0x6b10, 0x7cfa, 0x7eaa, 0x6fea, 0x52a3, + 0x2aa2, 0xfd1a, 0xcff1, 0xa905, 0x8d63, 0x80a1, 0x8468, 0x983a, + 0xb984, 0xe3f4, 0x1207, 0x3dc4, 0x617c, 0x788e, 0x7ff9, 0x76c9, + 0x5e2d, 0x3958, 0x0d12, 0xdf1a, 0xb567, 0x9562, 0x8334, 0x8139, + 0x8fb2, 0xacbf, 0xd49a, 0x0217, 0x2f4f, 0x5663, 0x7240, 0x7f49, + 0x7bcd, 0x683f, 0x4729, 0x1cd7, 0xeec7, 0xc2f3, 0x9f0b, 0x87b9, + 0x8003, 0x88eb, 0xa147, 0xc5ee, 0xf220, 0x201d, 0x49f0, 0x6a2b, + 0x7c9d, 0x7ee3, 0x70b1, 0x53de, 0x2c29, 0xfeb9, 0xd173, 0xaa37, + 0x8e1e, 0x80cd, 0x83ff, 0x9749, 0xb82a, 0xe25f, 0x106b, 0x3c56, + 0x606d, 0x7800, 0x7fff, 0x7761, 0x5f44, 0x3aca, 0x0eaf, 0xe0ac, + 0xb6ba, 0x964a, 0x8393, 0x8102, 0x8eed, 0xab85, 0xd314, 0x0077, + 0x2dcc, 0x552e, 0x7183, 0x7f1b, 0x7c34, 0x692e, 0x4881, 0x1e6b, + 0xf063, 0xc461, 0xa01c, 0x8849, 0x8001, 0x8855, 0xa031, 0xc47d, + 0xf083, 0x1e8a, 0x489c, 0x6940, 0x7c3c, 0x7f17, 0x7174, 0x5516, + 0x2dae, 0x0057, 0xd2f6, 0xab6d, 0x8ede, 0x80fe, 0x839a, 0x965c, + 0xb6d4, 0xe0cb, 0x0ecf, 0x3ae7, 0x5f5a, 0x776c, 0x7fff, 0x77f4, + 0x6058, 0x3c3a, 0x104b, 0xe240, 0xb810, 0x9736, 0x83f7, 0x80d1, + 0x8e2d, 0xaa4f, 0xd190, 0xfed9, 0x2c47, 0x53f7, 0x70c0, 0x7ee7, + 0x7c96, 0x6a19, 0x49d6, 0x1ffe, 0xf200, 0xc5d2, 0xa131, 0x88df, + 0x8003, 0x87c4, 0x9f20, 0xc30f, 0xeee7, 0x1cf6, 0x4744, 0x6852, + 0x7bd5, 0x7f46, 0x7232, 0x564b, 0x2f31, 0x01f7, 0xd47c, 0xaca7, + 0x8fa3, 0x8134, 0x833b, 0x9574, 0xb581, 0xdf39, 0x0d32, 0x3975, + 0x5e43, 0x76d5, 0x7ffa, 0x7883, 0x6167, 0x3da8, 0x11e7, 0xe3d4, + 0xb969, 0x9827, 0x8460, 0x80a5, 0x8d71, 0xa91c, 0xd00e, 0xfd3a, + 0x2ac0, 0x52bb, 0x6ff9, 0x7eaf, 0x7cf3, 0x6aff, 0x4b28, 0x2190, + 0xf39d, 0xc745, 0xa24a, 0x8979, 0x800b, 0x8738, 0x9e12, 0xc1a3, + 0xed4c, 0x1b61, 0x45e9, 0x675f, 0x7b6a, 0x7f70, 0x72eb, 0x577c, + 0x30b2, 0x0396, 0xd604, 0xade4, 0x906c, 0x8170, 0x82e1, 0x9490, + 0xb430, 0xdda8, 0x0b94, 0x3800, 0x5d28, 0x7638, 0x7ff0, 0x790c, + 0x6273, 0x3f12, 0x1382, 0xe56a, 0xbac5, 0x991c, 0x84ce, 0x807e, + 0x8cba, 0xa7ed, 0xce8e, 0xfb9a, 0x2938, 0x517d, 0x6f2e, 0x7e71, + 0x7d4a, 0x6be1, 0x4c77, 0x2320, 0xf53b, 0xc8bb, 0xa367, 0x8a19, + 0x8018, 0x86b1, 0x9d09, 0xc039, 0xebb1, 0x19ca, 0x448c, 0x6668, + 0x7af9, 0x7f94, 0x73a0, 0x58aa, 0x3231, 0x0535, 0xd78d, 0xaf24, + 0x913a, 0x81b0, 0x828c, 0x93b0, 0xb2e3, 0xdc19, 0x09f6, 0x368a, + 0x5c09, 0x7596, 0x7fe0, 0x7991, 0x637a, 0x407a, 0x151c, 0xe701, + 0xbc24, 0x9a15, 0x8541, 0x805c, 0x8c08, 0xa6c1, 0xcd10, 0xf9fb, + 0x27ae, 0x503b, 0x6e5e, 0x7e2d, 0x7d9d, 0x6cbe, 0x4dc2, 0x24ae, + 0xf6d9, 0xca33, 0xa488, 0x8abd, 0x802a, 0x862f, 0x9c03, 0xbed2, + 0xea17, 0x1833, 0x432c, 0x656c, 0x7a83, 0x7fb3, 0x744f, 0x59d3, + 0x33ae, 0x06d4, 0xd918, 0xb068, 0x920c, 0x81f6, 0x823c, 0x92d5, + 0xb199, 0xda8b, 0x0858, 0x3511, 0x5ae6, 0x74ef, 0x7fcb, 0x7a10, + 0x647e, 0x41e0, 0x16b5, 0xe899, 0xbd85, 0x9b13, 0x85ba, 0x8040, + 0x8b5a, 0xa599, 0xcb94, 0xf85c, 0x2622, 0x4ef5, 0x6d89, 0x7de5, + 0x7dea, 0x6d97, 0x4f0b, 0x263c, 0xf877, 0xcbad, 0xa5ac, 0x8b66, + 0x8041, 0x85b2, 0x9b02, 0xbd6e, 0xe87e, 0x169b, 0x41c9, 0x646d, + 0x7a08, 0x7fcd, 0x74fa, 0x5af9, 0x3529, 0x0873, 0xdaa5, 0xb1af, + 0x92e3, 0x8241, 0x81f1, 0x91fe, 0xb053, 0xd8fe, 0x06b9, 0x3396, + 0x59c0, 0x7444, 0x7fb1, 0x7a8b, 0x657d, 0x4343, 0x184e, 0xea32, + 0xbeea, 0x9c14, 0x8637, 0x8028, 0x8ab2, 0xa475, 0xca1a, 0xf6be, + 0x2494, 0x4dad, 0x6cb0, 0x7d97, 0x7e32, 0x6e6b, 0x5050, 0x27c7, + 0xfa16, 0xcd29, 0xa6d5, 0x8c13, 0x805e, 0x853a, 0x9a05, 0xbc0d, + 0xe6e7, 0x1501, 0x4063, 0x6369, 0x7988, 0x7fe1, 0x75a1, 0x5c1c, + 0x36a2, 0x0a11, 0xdc33, 0xb2f9, 0x93bf, 0x8291, 0x81ac, 0x912c, + 0xaf0f, 0xd773, 0x051a, 0x3218, 0x5896, 0x7394, 0x7f92, 0x7b00, + 0x6678, 0x44a3, 0x19e5, 0xebcc, 0xc051, 0x9d1a, 0x86b9, 0x8017, + 0x8a0e, 0xa354, 0xc8a2, 0xf520, 0x2306, 0x4c61, 0x6bd2, 0x7d45, + 0x7e75, 0x6f3b, 0x5191, 0x2951, 0xfbb5, 0xcea7, 0xa800, 0x8cc6, + 0x8080, 0x84c7, 0x990c, 0xbaae, 0xe550, 0x1367, 0x3efb, 0x6262, + 0x7904, 0x7ff0, 0x7642, 0x5d3a, 0x3819, 0x0baf, 0xddc2, 0xb446, + 0x949e, 0x82e7, 0x816c, 0x905f, 0xadcf, 0xd5ea, 0x037b, 0x3099, + 0x5768, 0x72df, 0x7f6d, 0x7b71, 0x676f, 0x4600, 0x1b7b, 0xed66, + 0xc1ba, 0x9e24, 0x8741, 0x800a, 0x896f, 0xa238, 0xc72d, 0xf382, + 0x2175, 0x4b12, 0x6af0, 0x7ced, 0x7eb3, 0x7006, 0x52d0, 0x2ada, + 0xfd55, 0xd027, 0xa930, 0x8d7d, 0x80a7, 0x8459, 0x9817, 0xb952, + 0xe3ba, 0x11cc, 0x3d90, 0x6156, 0x787a, 0x7ffa, 0x76df, 0x5e55, + 0x398d, 0x0d4d, 0xdf53, 0xb597, 0x9583, 0x8341, 0x8131, 0x8f96, + 0xac92, 0xd463, 0x01dc, 0x2f18, 0x5637, 0x7226, 0x7f43, 0x7bdc, + 0x6861, 0x475a, 0x1d11, 0xef02, 0xc327, 0x9f32, 0x87cd, 0x8003, + 0x88d5, 0xa11f, 0xc5ba, 0xf1e5, 0x1fe4, 0x49c0, 0x6a0a, 0x7c90, + 0x7eeb, 0x70cd, 0x540b, 0x2c60, 0xfef4, 0xd1aa, 0xaa63, 0x8e39, + 0x80d4, 0x83f0, 0x9727, 0xb7f9, 0xe225, 0x1030, 0x3c22, 0x6046, + 0x77eb, 0x7fff, 0x7776, 0x5f6c, 0x3aff, 0x0eea, 0xe0e6, 0xb6ea, + 0x966b, 0x83a1, 0x80fb, 0x8ed1, 0xab59, 0xd2dd, 0x003c, 0x2d95, + 0x5502, 0x7167, 0x7f14, 0x7c42, 0x6950, 0x48b2, 0x1ea4, 0xf09e, + 0xc495, 0xa043, 0x885e, 0x8001, 0x8840, 0xa00a, 0xc449, 0xf048, + 0x1e51, 0x486b, 0x691f, 0x7c2e, 0x7f1e, 0x718f, 0x5543, 0x2de5, + 0x0092, 0xd32e, 0xab9a, 0x8efa, 0x8105, 0x838c, 0x963b, 0xb6a4, + 0xe092, 0x0e94, 0x3ab2, 0x5f32, 0x7757, 0x7fff, 0x7809, 0x607f, + 0x3c6e, 0x1086, 0xe279, 0xb841, 0x9758, 0x8405, 0x80ca, 0x8e12, + 0xaa23, 0xd159, 0xfe9e, 0x2c0f, 0x53ca, 0x70a4, 0x7ee0, 0x7ca3, + 0x6a3a, 0x4a06, 0x2037, 0xf23b, 0xc607, 0xa159, 0x88f5, 0x8004, + 0x87b0, 0x9ef9, 0xc2db, 0xeeac, 0x1cbd, 0x4713, 0x682f, 0x7bc6, + 0x7f4c, 0x724c, 0x5677, 0x2f68, 0x0232, 0xd4b4, 0xacd4, 0x8fbf, + 0x813c, 0x832e, 0x9553, 0xb551, 0xdf00, 0x0cf7, 0x3940, 0x5e1b, + 0x76bf, 0x7ff9, 0x7897, 0x618e, 0x3ddb, 0x1221, 0xe40e, 0xb99a, + 0x984a, 0x846f, 0x809f, 0x8d57, 0xa8f1, 0xcfd7, 0xfcfe, 0x2a88, + 0x528e, 0x6fdd, 0x7ea6, 0x7cff, 0x6b1f, 0x4b58, 0x21c9, 0xf3d8, + 0xc77a, 0xa273, 0x8990, 0x800c, 0x8724, 0x9dec, 0xc16f, 0xed11, + 0x1b27, 0x45b8, 0x673c, 0x7b5a, 0x7f75, 0x7305, 0x57a7, 0x30e9, + 0x03d1, 0xd63c, 0xae11, 0x9089, 0x8179, 0x82d4, 0x9470, 0xb401, + 0xdd6f, 0x0b59, 0x37cb, 0x5cff, 0x7621, 0x7fee, 0x7920, 0x6299, + 0x3f46, 0x13bc, 0xe5a4, 0xbaf7, 0x993f, 0x84de, 0x8079, 0x8ca0, + 0xa7c2, 0xce58, 0xfb5f, 0x2900, 0x514f, 0x6f10, 0x7e67, 0x7d56, + 0x6c00, 0x4ca6, 0x2359, 0xf576, 0xc8f0, 0xa390, 0x8a30, 0x801a, + 0x869e, 0x9ce3, 0xc006, 0xeb77, 0x1991, 0x445a, 0x6644, 0x7ae8, + 0x7f99, 0x73b9, 0x58d4, 0x3268, 0x0570, 0xd7c5, 0xaf52, 0x9157, + 0x81ba, 0x8280, 0x9391, 0xb2b4, 0xdbe0, 0x09bb, 0x3654, 0x5be0, + 0x757f, 0x7fdd, 0x79a3, 0x63a0, 0x40ae, 0x1556, 0xe73b, 0xbc56, + 0x9a39, 0x8552, 0x8058, 0x8bef, 0xa697, 0xccda, 0xf9c0, 0x2775, + 0x500c, 0x6e40, 0x7e23, 0x7da8, 0x6cdd, 0x4df1, 0x24e7, 0xf714, + 0xca68, 0xa4b1, 0x8ad4, 0x802d, 0x861d, 0x9bdf, 0xbea0, 0xe9dd, + 0x17f9, 0x42f9, 0x6548, 0x7a72, 0x7fb7, 0x7468, 0x59fd, 0x33e4, + 0x070f, 0xd950, 0xb096, 0x922a, 0x8200, 0x8231, 0x92b6, 0xb16b, + 0xda52, 0x081d, 0x34db, 0x5abd, 0x74d7, 0x7fc8, 0x7a22, 0x64a2, + 0x4213, 0x16ef, 0xe8d3, 0xbdb8, 0x9b37, 0x85cb, 0x803c, 0x8b42, + 0xa56f, 0xcb5e, 0xf821, 0x25e9, 0x4ec7, 0x6d6a, 0x7dda, 0x7df4, + 0x6db5, 0x4f39, 0x2674, 0xf8b2, 0xcbe3, 0xa5d6, 0x8b7e, 0x8045, + 0x85a0, 0x9ade, 0xbd3c, 0xe844, 0x1660, 0x4196, 0x6448, 0x79f6, + 0x7fd0, 0x7512, 0x5b23, 0x355f, 0x08ae, 0xdadd, 0xb1dd, 0x9302, + 0x824c, 0x81e7, 0x91e0, 0xb024, 0xd8c6, 0x067e, 0x3360, 0x5996, + 0x742b, 0x7fad, 0x7a9c, 0x65a1, 0x4375, 0x1888, 0xea6c, 0xbf1d, + 0x9c39, 0x8649, 0x8026, 0x8a9a, 0xa44c, 0xc9e4, 0xf683, 0x245c, + 0x4d7e, 0x6c90, 0x7d8c, 0x7e3c, 0x6e89, 0x507e, 0x2800, 0xfa51, + 0xcd5f, 0xa6ff, 0x8c2c, 0x8063, 0x8529, 0x99e1, 0xbbdb, 0xe6ad, + 0x14c7, 0x4030, 0x6344, 0x7976, 0x7fe4, 0x75b8, 0x5c45, 0x36d8, + 0x0a4c, 0xdc6c, 0xb328, 0x93de, 0x829d, 0x81a2, 0x910f, 0xaee1, + 0xd73b, 0x04df, 0x31e2, 0x586b, 0x737b, 0x7f8d, 0x7b11, 0x669b, + 0x44d5, 0x1a1f, 0xec06, 0xc084, 0x9d40, 0x86cc, 0x8014, 0x89f7, + 0xa32c, 0xc86d, 0xf4e5, 0x22cd, 0x4c31, 0x6bb2, 0x7d38, 0x7e7e, + 0x6f58, 0x51bf, 0x2989, 0xfbf0, 0xcede, 0xa82b, 0x8ce0, 0x8085, + 0x84b7, 0x98e9, 0xba7c, 0xe516, 0x132d, 0x3ec7, 0x623c, 0x78f0, + 0x7ff2, 0x7659, 0x5d63, 0x384e, 0x0bea, 0xddfb, 0xb476, 0x94bf, + 0x82f3, 0x8163, 0x9042, 0xada2, 0xd5b2, 0x0340, 0x3062, 0x573d, + 0x72c5, 0x7f67, 0x7b80, 0x6792, 0x4632, 0x1bb5, 0xeda1, 0xc1ee, + 0x9e4a, 0x8754, 0x8009, 0x8959, 0xa210, 0xc6f8, 0xf347, 0x213c, + 0x4ae2, 0x6acf, 0x7ce0, 0x7ebb, 0x7023, 0x52fd, 0x2b11, 0xfd90, + 0xd05e, 0xa95b, 0x8d98, 0x80ad, 0x844a, 0x97f5, 0xb921, 0xe380, + 0x1191, 0x3d5c, 0x612f, 0x7866, 0x7ffb, 0x76f4, 0x5e7d, 0x39c2, + 0x0d87, 0xdf8c, 0xb5c7, 0x95a4, 0x834e, 0x8129, 0x8f79, 0xac65, + 0xd42b, 0x01a1, 0x2ee1, 0x560b, 0x720b, 0x7f3d, 0x7beb, 0x6884, + 0x478c, 0x1d4a, 0xef3c, 0xc35b, 0x9f58, 0x87e1, 0x8002, 0x88bf, + 0xa0f7, 0xc585, 0xf1aa, 0x1faa, 0x4990, 0x69e8, 0x7c82, 0x7ef3, + 0x70e9, 0x5438, 0x2c98, 0xff2f, 0xd1e1, 0xaa8f, 0x8e54, 0x80db, + 0x83e2, 0x9705, 0xb7c9, 0xe1ec, 0x0ff6, 0x3bee, 0x601f, 0x77d6, + 0x7fff, 0x778b, 0x5f93, 0x3b33, 0x0f24, 0xe11f, 0xb71b, 0x968d, + 0x83af, 0x80f3, 0x8eb6, 0xab2c, 0xd2a6, 0x0001, 0x2d5d, 0x54d6, + 0x714c, 0x7f0d, 0x7c50, 0x6971, 0x48e3, 0x1ede, 0xf0d9, 0xc4ca, + 0xa06b, 0x8873, 0x8001, 0x882b, 0x9fe3, 0xc415, 0xf00e, 0x1e17, + 0x483a, 0x68fd, 0x7c1f, 0x7f25, 0x71aa, 0x556f, 0x2e1c, 0x00ce, + 0xd365, 0xabc6, 0x8f16, 0x810d, 0x837f, 0x9619, 0xb673, 0xe059, + 0x0e59, 0x3a7e, 0x5f0b, 0x7742, 0x7ffe, 0x781d, 0x60a6, 0x3ca2, + 0x10c0, 0xe2b3, 0xb872, 0x977a, 0x8414, 0x80c4, 0x8df7, 0xa9f7, + 0xd122, 0xfe63, 0x2bd8, 0x539d, 0x7088, 0x7ed8, 0x7cb1, 0x6a5b, + 0x4a36, 0x2070, 0xf275, 0xc63b, 0xa181, 0x890a, 0x8005, 0x879b, + 0x9ed3, 0xc2a7, 0xee72, 0x1c83, 0x46e2, 0x680d, 0x7bb7, 0x7f52, + 0x7267, 0x56a2, 0x2f9f, 0x026d, 0xd4ec, 0xad01, 0x8fdb, 0x8145, + 0x8321, 0x9532, 0xb521, 0xdec7, 0x0cbc, 0x390b, 0x5df3, 0x76a8, + 0x7ff7, 0x78aa, 0x61b4, 0x3e0f, 0x125c, 0xe448, 0xb9cc, 0x986c, + 0x847f, 0x8099, 0x8d3c, 0xa8c5, 0xcfa1, 0xfcc3, 0x2a51, 0x5261, + 0x6fc0, 0x7e9e, 0x7d0c, 0x6b40, 0x4b87, 0x2202, 0xf413, 0xc7af, + 0xa29b, 0x89a6, 0x800e, 0x8711, 0x9dc6, 0xc13c, 0xecd7, 0x1aed, + 0x4586, 0x6719, 0x7b4a, 0x7f7a, 0x731f, 0x57d2, 0x311f, 0x040c, + 0xd674, 0xae3f, 0x90a6, 0x8182, 0x82c8, 0x9450, 0xb3d1, 0xdd36, + 0x0b1e, 0x3796, 0x5cd7, 0x760a, 0x7fec, 0x7933, 0x62be, 0x3f79, + 0x13f7, 0xe5de, 0xbb28, 0x9963, 0x84ee, 0x8074, 0x8c87, 0xa797, + 0xce21, 0xfb24, 0x28c8, 0x5121, 0x6ef3, 0x7e5e, 0x7d62, 0x6c20, + 0x4cd5, 0x2391, 0xf5b1, 0xc925, 0xa3b9, 0x8a47, 0x801c, 0x868b, + 0x9cbe, 0xbfd3, 0xeb3c, 0x1957, 0x4428, 0x6621, 0x7ad8, 0x7f9d, + 0x73d2, 0x58ff, 0x329e, 0x05ab, 0xd7fd, 0xaf80, 0x9175, 0x81c4, + 0x8275, 0x9371, 0xb285, 0xdba7, 0x0980, 0x361f, 0x5bb7, 0x7567, + 0x7fdb, 0x79b6, 0x63c5, 0x40e1, 0x1591, 0xe775, 0xbc88, 0x9a5d, + 0x8563, 0x8053, 0x8bd6, 0xa66d, 0xcca3, 0xf985, 0x273d, 0x4fde, + 0x6e22, 0x7e19, 0x7db3, 0x6cfc, 0x4e20, 0x2520, 0xf74f, 0xca9e, + 0xa4db, 0x8aec, 0x8030, 0x860b, 0x9bba, 0xbe6d, 0xe9a3, 0x17bf, + 0x42c7, 0x6524, 0x7a61, 0x7fbb, 0x7481, 0x5a27, 0x341b, 0x074a, + 0xd989, 0xb0c4, 0x9249, 0x820b, 0x8226, 0x9297, 0xb13c, 0xda1a, + 0x07e2, 0x34a5, 0x5a93, 0x74bf, 0x7fc4, 0x7a34, 0x64c7, 0x4245, + 0x172a, 0xe90d, 0xbdeb, 0x9b5c, 0x85dd, 0x8038, 0x8b2a, 0xa546, + 0xcb28, 0xf7e6, 0x25b1, 0x4e98, 0x6d4c, 0x7dcf, 0x7dff, 0x6dd4, + 0x4f67, 0x26ac, 0xf8ed, 0xcc19, 0xa600, 0x8b97, 0x8049, 0x858f, + 0x9aba, 0xbd09, 0xe80a, 0x1626, 0x4163, 0x6424, 0x79e4, 0x7fd3, + 0x752a, 0x5b4c, 0x3595, 0x08e9, 0xdb16, 0xb20c, 0x9321, 0x8257, + 0x81dd, 0x91c2, 0xaff6, 0xd88e, 0x0643, 0x3329, 0x596c, 0x7412, + 0x7fa9, 0x7aad, 0x65c5, 0x43a7, 0x18c2, 0xeaa6, 0xbf50, 0x9c5e, + 0x865c, 0x8023, 0x8a83, 0xa422, 0xc9af, 0xf648, 0x2423, 0x4d4f, + 0x6c71, 0x7d80, 0x7e46, 0x6ea7, 0x50ac, 0x2838, 0xfa8c, 0xcd95, + 0xa72a, 0x8c46, 0x8067, 0x8518, 0x99be, 0xbba9, 0xe673, 0x148d, + 0x3ffd, 0x631f, 0x7963, 0x7fe6, 0x75cf, 0x5c6e, 0x370d, 0x0a87, + 0xdca4, 0xb357, 0x93fe, 0x82a9, 0x8199, 0x90f1, 0xaeb4, 0xd703, + 0x04a4, 0x31ab, 0x5840, 0x7361, 0x7f88, 0x7b21, 0x66bf, 0x4507, + 0x1a59, 0xec41, 0xc0b7, 0x9d65, 0x86df, 0x8012, 0x89e0, 0xa303, + 0xc838, 0xf4aa, 0x2294, 0x4c02, 0x6b92, 0x7d2c, 0x7e87, 0x6f75, + 0x51ec, 0x29c1, 0xfc2c, 0xcf14, 0xa856, 0x8cfa, 0x808b, 0x84a7, + 0x98c6, 0xba4b, 0xe4dc, 0x12f2, 0x3e94, 0x6216, 0x78dd, 0x7ff4, + 0x766f, 0x5d8b, 0x3883, 0x0c25, 0xde34, 0xb4a6, 0x94df, 0x8300, + 0x815a, 0x9025, 0xad74, 0xd57b, 0x0305, 0x302c, 0x5712, 0x72ab, + 0x7f62, 0x7b90, 0x67b4, 0x4663, 0x1bef, 0xeddb, 0xc222, 0x9e70, + 0x8768, 0x8007, 0x8943, 0xa1e8, 0xc6c3, 0xf30c, 0x2103, 0x4ab2, + 0x6aaf, 0x7cd3, 0x7ec3, 0x703f, 0x532a, 0x2b49, 0xfdcb, 0xd095, + 0xa987, 0x8db2, 0x80b3, 0x843b, 0x97d2, 0xb8f0, 0xe347, 0x1157, + 0x3d28, 0x6109, 0x7852, 0x7ffc, 0x770a, 0x5ea5, 0x39f7, 0x0dc2, + 0xdfc6, 0xb5f7, 0x95c4, 0x835c, 0x8121, 0x8f5d, 0xac39, 0xd3f4, + 0x0165, 0x2eaa, 0x55df, 0x71f0, 0x7f36, 0x7bfa, 0x68a6, 0x47bd, + 0x1d84, 0xef77, 0xc38f, 0x9f7f, 0x87f6, 0x8001, 0x88aa, 0xa0d0, + 0xc551, 0xf16f, 0x1f71, 0x495f, 0x69c7, 0x7c74, 0x7efa, 0x7105, + 0x5464, 0x2ccf, 0xff6a, 0xd218, 0xaabb, 0x8e6f, 0x80e1, 0x83d3, + 0x96e3, 0xb798, 0xe1b2, 0x0fbb, 0x3bba, 0x5ff8, 0x77c1, 0x7fff, + 0x77a0, 0x5fbb, 0x3b68, 0x0f5f, 0xe158, 0xb74b, 0x96ae, 0x83bd, + 0x80ec, 0x8e9a, 0xab00, 0xd26f, 0xffc7, 0x2d26, 0x54aa, 0x7130, + 0x7f06, 0x7c5e, 0x6993, 0x4913, 0x1f17, 0xf113, 0xc4fe, 0xa092, + 0x8889, 0x8001, 0x8816, 0x9fbc, 0xc3e1, 0xefd3, 0x1dde, 0x4809, + 0x68db, 0x7c11, 0x7f2c, 0x71c5, 0x559b, 0x2e53, 0x0109, 0xd39d, + 0xabf3, 0x8f31, 0x8115, 0x8371, 0x95f8, 0xb643, 0xe01f, 0x0e1e, + 0x3a49, 0x5ee3, 0x772c, 0x7ffd, 0x7832, 0x60cc, 0x3cd6, 0x10fb, + 0xe2ec, 0xb8a3, 0x979d, 0x8423, 0x80bd, 0x8ddc, 0xa9cb, 0xd0eb, + 0xfe28, 0x2ba0, 0x5370, 0x706c, 0x7ed0, 0x7cbe, 0x6a7b, 0x4a67, + 0x20aa, 0xf2b0, 0xc670, 0xa1a9, 0x8920, 0x8006, 0x8787, 0x9eac, + 0xc273, 0xee37, 0x1c49, 0x46b0, 0x67eb, 0x7ba8, 0x7f58, 0x7281, + 0x56ce, 0x2fd6, 0x02a8, 0xd523, 0xad2e, 0x8ff8, 0x814d, 0x8314, + 0x9512, 0xb4f1, 0xde8e, 0x0c81, 0x38d6, 0x5dca, 0x7692, 0x7ff6, + 0x78be, 0x61da, 0x3e43, 0x1296, 0xe481, 0xb9fd, 0x988f, 0x848e, + 0x8093, 0x8d22, 0xa89a, 0xcf6a, 0xfc88, 0x2a19, 0x5234, 0x6fa3, + 0x7e95, 0x7d19, 0x6b60, 0x4bb7, 0x223b, 0xf44e, 0xc7e4, 0xa2c3, + 0x89bd, 0x8010, 0x86fe, 0x9da0, 0xc108, 0xec9c, 0x1ab4, 0x4555 +}; + +float32_t transform_fft_f32_inputs[TRANSFORM_MAX_FFT_LEN * 2] = +{ + 43.0264275639, -17.0525215570, -94.8488973910, -8.1924989580, 7.2830326091, 66.8368719314, 33.9778190671, 117.8652289772, + -129.6077797465, -14.6420815368, 18.0239223278, 20.6760530292, 55.0375037651, 1.8674609862, -85.6534302408, -33.5750364909, + 29.2110949614, 110.4727049460, -94.1914619387, -1.4084169343, 83.5181653041, 47.3073514127, -13.3420621181, 30.3389699104, + 12.1188124277, 100.9730921941, -114.0146362390, -77.5823200409, 37.2019034618, 40.0026301128, -58.3387276630, -34.9472398600, + -5.1169678311, -87.7660091118, -150.5888601131, 56.0349370503, 50.2168884079, -74.2313236767, 22.3648603560, -6.8676387051, + 74.8957303680, -90.1292012823, -55.1436241586, -66.6732976100, -6.7918147615, 7.7612697081, 35.7892605979, -20.0470508830, + 41.8369017546, -143.7378056984, -41.9127158600, -108.3531841158, -57.1917422289, -124.2808828105, 38.9316388820, -77.9212517405, + 37.1990818377, -28.9545952748, -155.6371057564, 45.8088886393, 36.2537018275, -6.5727656016, -104.2070491921, 45.5583813729, + -19.7674717059, -80.4802190947, -1.4444563441, -42.2142256438, 36.6546339194, -57.0866498590, 44.4677067511, 65.7285753407, + -103.8158864647, 25.4348723711, -153.5419639389, 39.3608409474, 49.1658103436, 79.5570602275, 75.2944095996, 58.9394700746, + -53.1018534392, 33.4172444014, 35.6224682287, -64.4353396418, -125.8464291251, -47.6072111617, -26.2177687594, -12.0061322096, + -17.7887967585, -28.2926175090, -62.0691715749, 40.5098573604, -191.1123732593, 119.6750713043, 19.6182375803, -26.7615252921, + 2.2957847015, -108.3436451287, -50.5906164995, -5.6360985100, -11.6772204201, -84.2765293757, -60.9317810068, 82.0446350218, + -70.2048296348, 72.8738253222, 60.2450218115, 114.2741231228, 46.8180775285, 6.9915412654, -8.9909197429, -78.9165936808, + 66.4731535459, -68.4235455651, -79.8254597080, -10.6308477115, -62.6161569330, -55.7744410292, -11.8408366528, 98.1034940997, + 35.8213741877, -54.4694482732, 86.9631830044, -53.0343838122, -47.4898642865, -47.2010929590, -31.3312639685, -23.0908245172, + 12.0258009869, -5.1098204703, -9.8420230737, -107.3328761158, 44.6810431959, -17.9083820345, -60.9753512872, -7.5915088994, + 17.2250813329, 57.9176125648, 124.3004161362, -63.1950908493, 120.5788885640, -44.1734238117, -91.7408095116, -43.5696066595, + -49.9560710099, -167.8513443296, -70.9437505499, -46.4109705355, -64.2264526456, -13.9995803916, -100.9548186356, 9.9101010575, + -50.0615130815, -55.7590145012, -60.3195153388, 61.7913378549, -102.0850899209, 53.2360193126, -25.8997883369, 75.1445512333, + -113.8148602310, 17.8027281119, -19.5006822722, -44.2169628471, 107.5017084384, -113.7909124666, -43.9735396033, 7.6880981388, + 46.7384653508, 9.9047443751, 81.8646964362, 132.3812863877, -95.6959050236, -68.5015813484, 65.8586404494, 18.5039353889, + -30.1786166621, -90.3098515667, -22.9356228552, -20.5778272423, -2.2127786675, -35.4418447703, -51.8722915974, -107.9024439078, + -51.5940748232, -51.7463262677, 74.2795485984, 94.2205022462, 9.7016384049, -47.3556083155, -36.7822314478, -151.6455525363, + -15.7183814485, 78.2063383182, 0.1516414969, 37.9304181609, 20.6185902740, -22.2164106778, 6.1160554677, 2.4061326953, + -111.6681824598, -60.0858917090, 75.1698614693, -76.5787410444, 28.3391655715, -2.4946186443, -68.0378899682, 104.0893199171, + -51.8319647254, 38.8521710524, 75.9114239564, 73.9206172905, -103.2533029987, 6.9002718274, -36.6346436319, -25.1990926265, + 1.5852145953, -50.6438436795, 21.5018844428, -151.9305562846, -51.7326681814, 21.4475994143, 42.2564011921, -74.0520586926, + 49.7370635809, -13.2957534126, 36.6746826778, -31.7005492589, 148.4894964268, 79.7890632353, 16.8856024809, 16.1690460177, + 39.2665169484, 117.2461167794, -37.4827984831, -47.8387803604, -95.7025286193, 34.3058214285, -124.9536456028, 56.1640195764, + 94.3636873606, 35.3992852810, -38.3920852159, -100.5738062016, -29.7837022314, 42.9133913996, -34.2715618187, -14.3589115627, + -16.5935468750, 20.4574192236, -88.7897972666, -38.6285080386, 53.3203422726, 98.5991486746, 122.7305462474, 67.7902817187, + 5.1764117389, 5.0632821624, 21.9288789574, -78.3140512638, -21.2069682335, 23.6342010925, 34.4445769455, 59.1346766615, + 28.9978778000, 39.8121180845, -17.1650033520, -56.9174900874, 17.8157086148, -112.8801457350, -122.4019040408, 140.8669393157, + -65.4664329639, 40.6952775518, 32.7260891658, -43.2565155866, 19.3945751928, -20.1815002000, -67.6601711640, -18.1921178207, + -35.6802153684, 49.9550290306, 131.4925251016, -31.2940938167, -5.2848453344, -109.5580577933, 20.2437599390, -8.8782958734, + 54.1836717264, 7.2555852190, -3.5698316137, -51.9236786262, 6.7861547980, -104.4814551670, 45.8458629668, 70.0890876844, + 38.3572837740, 61.8024165129, 68.0176962024, -12.8193934080, -21.4661610917, -0.9377108815, -74.2100679061, 71.0490808147, + 91.9813889497, -14.5797640164, 3.5036749129, -138.3605478356, -48.1501349794, -16.0636922482, -12.1334197606, 15.0562207637, + -34.0878176054, 55.1075126157, 97.3829871877, 0.2053358099, -94.8713267382, 51.5460954054, 21.2966946363, 58.1331025047, + -23.4599044132, -19.3315856528, -8.4497193577, -1.9594679356, -33.1906549336, -144.6825417978, -57.1218958072, 35.7353406097, + 61.4666549819, 14.6536253128, 82.1632196866, -44.6230161723, -91.1022589278, -18.5737673927, -136.8975612334, 56.9606788003, + 70.7059960183, -68.2829345081, -10.2629800455, -53.6385325047, -68.7928766204, 88.2444688302, 83.1412324801, -102.9206928160, + -68.2329763159, -69.7552955469, 108.2132269009, -28.2582329307, 5.6685898328, -36.0392956840, 43.3269513128, -8.6436416796, + -16.5054886972, 11.5008791788, 39.6923606683, -28.9039554061, 13.5938214364, -23.6296332202, 49.1171161163, 53.1636857935, + -62.9672053166, -54.2594757384, 48.3838956696, 8.0469071555, -33.6472086213, -120.5381752144, 55.0880453111, 17.8990740563, + 144.9402232336, 101.7886229203, -73.3666393712, -16.4721379138, -12.7447935685, 101.8245160983, -49.7026860415, -15.1227790364, + 65.7430288442, -131.8695390036, 10.2750933946, 90.9752774838, -26.5859990591, -95.6962772568, 76.2174589344, 24.8796848060, + -38.8938223046, 54.1687774852, -37.3585968996, -34.6848570502, 33.0151011570, -55.8345877671, -3.9009101671, -31.5024971691, + -9.6863895491, 91.8719195957, -58.9993249744, -25.6887030614, -8.0829472205, 4.6386491741, -71.4019697167, -21.3734669095, + 86.2079144404, 79.6823974266, -0.0910915997, 44.8067718095, 58.7204020766, 72.6856808976, -50.3373732478, -116.1175365534, + -15.0884909384, 5.4593772059, -63.6553527905, 37.3460388205, -32.2399421679, 95.7569350513, -7.3700141964, -56.0370832967, + -41.7377150439, -42.0042856519, 12.5134312941, 93.7845584531, -32.4801087157, -33.3976050318, -24.2252126001, -46.3199064467, + -20.3704610276, 15.8571376404, 88.9127217235, -33.1132582267, -1.0005675836, -28.1780471904, 150.9349379135, 38.0600520828, + 36.4338677563, -3.3709201641, 29.7709773016, 16.5064119077, 21.3147729463, 110.6714300904, 18.8406036507, 14.8963298097, + 50.9975960392, 16.3991140350, -194.0805845907, -41.6723945839, -74.8991127408, -6.4587655805, -0.6883628218, -49.8709647175, + 194.2265120473, 64.3043624521, 16.0040882780, 68.4032551772, -43.4050313128, 84.6826289824, -28.1357565943, 134.6895584120, + -7.9746152680, -95.6692886462, -48.9444370342, 79.4479343188, -50.5345228122, 52.4800633307, -14.7735051703, -20.1510237050, + 22.5049816980, 64.4191999102, 24.8385648232, 99.4265041360, 62.0189508473, -28.3892600378, -109.8842008564, -79.0407483407, + 18.3408112020, 49.1650536089, 31.5419844924, -36.1160722679, -132.9148081329, 10.4053531567, -129.2463715470, -43.4602207151, + -24.2420653292, 91.5388317556, 21.4762248190, -44.3810909139, 18.4098011282, -45.8691164539, -20.9831197962, 16.2076792914, + 66.0224147666, -13.6794615513, 101.2163279622, -62.4462618603, 22.2040981785, -52.3208382802, -24.7909079016, 58.5150375093, + 18.8569705105, -55.6083430939, 131.0273367422, -34.5209015065, 121.4357296573, -77.2590299593, -51.5929566898, 5.0247131098, + -23.8451707592, -4.5912313547, 31.1387246821, 61.7019310824, 49.1912429744, -50.5836913031, -74.8182600630, -21.6209317022, + 20.9409464654, -72.7870824583, -28.3530746820, -45.0794425434, -13.4910629905, -62.0158772255, -34.1421181246, 44.2844972784, + 8.4213193211, 79.9349022793, 60.0160502260, 32.2272994080, -72.2893887746, 17.3063698247, -134.6335742431, 64.6499736261, + 7.1411921919, -37.5517577873, 6.2405670930, 117.1920927305, 128.7420689815, -3.1556854963, -13.4100422909, -11.9336372907, + -8.6022400553, -102.0033506666, -78.4696575074, 15.0765861403, -111.5219718576, -13.4162786508, 38.2437013694, 61.1637732561, + -34.4804160003, 107.4438003830, -79.4193067813, -81.1842853968, -26.2622970331, 132.3205425408, -119.1464268477, 67.3048866598, + 103.3266736715, -58.1865815617, 27.6231908601, -11.2004371750, 26.0340617206, 12.5696123916, 0.6442714420, -30.7393043544, + 1.5314955897, 49.9110088250, -106.1358721920, 51.1608329944, -32.8684239794, -27.7215905745, -11.6450303367, -36.7731678028, + 59.9383486599, -4.6301990580, 5.0361682939, -10.5669407980, 124.0908762205, 35.8305364082, -123.6216777114, -74.2569079167, + -56.7651776816, 16.0736385582, 23.5030632215, -110.6764295938, 44.3086821806, 9.4452708243, 5.3300080251, 39.0483916714, + 151.4550562868, 62.8957092621, -116.8103461233, 5.1129927759, -33.2252515135, -9.4522506046, 22.7026048372, -15.5264414569, + 71.2087620034, 19.1191568332, 50.3019546809, -5.6096922409, 22.9344126462, -7.7591876203, 31.8949515564, -58.4253952381, + 66.4341297173, -19.0583083044, 96.7695087855, 20.4934280047, 4.9544603116, -20.8288135920, -173.2659655408, -62.4883621640, + -48.5528422703, 12.1437504278, 60.2482234666, -19.6072312919, -34.6320214291, 129.0089698963, -50.9042160618, 98.3952661477, + -4.7051792479, -13.1768910826, 69.5138802139, 58.5748201565, -45.9385652563, 151.7952104306, 34.2541941013, -58.0417838381, + 28.1480473670, 46.4006562684, 97.7001828545, 4.0855607626, -32.6097018162, 16.8913949959, 105.7266202978, -89.3978374651, + -60.9338593128, -41.2220734230, 49.9393070783, 95.0974764854, 49.2498366456, 58.6214364590, 34.1113830569, 45.6634098874, + -22.5356086770, -97.1978653617, 86.5565049535, 70.6118545777, -30.6978082909, 118.7238621666, 14.5922386932, 11.3449652072, + 65.6007783405, 82.6369678204, -52.0390492248, -47.0160551227, -95.5142448634, 99.7162626888, -36.5523815090, -42.8042935534, + 68.3566199798, -13.8451547552, -71.1629911780, 36.2989433752, -32.4867163365, 112.4079947071, -75.6295117422, 47.5276421639, + 51.8078250755, -26.8715188457, -9.6291144797, 40.1999849640, -38.4634033246, 40.9764960915, -26.1715730268, 36.5996396515, + -26.9924731886, 53.7879986570, -83.1658398348, 23.6381378489, 43.8794937753, -55.4133836419, 90.0266130838, 14.1036181982, + -18.1225736715, 85.1363181151, -62.5970846379, -18.5291947838, -25.7341986703, -49.7061342931, -59.0442763971, 50.8960636803, + -87.6471123430, -36.7217762531, 22.5952364054, 11.1107885650, -0.5377327229, 160.8145792630, 73.3103441505, 10.1656872354, + -50.4554350397, -57.3478171016, -15.4201715357, -26.9135446491, -4.9891264771, -37.0226770057, -80.9919535641, 50.4418660876, + -25.8517575250, -69.9538258421, -17.5730160671, 15.9405836751, 113.9545230349, -46.1040379057, -94.2458635014, -69.0338522452, + 43.5813790265, 107.1836101171, -55.1012654323, -77.1529555887, -33.1530320656, -94.5582659641, -53.6837586872, 27.0680381378, + 93.9385415207, -61.0955216188, 18.0530957225, 7.9150142320, -12.1218191587, 34.0173961457, 40.0084937565, 9.8119275580, + 44.2065861274, -1.8718514394, 67.4740024215, 46.7391150131, 207.2404815875, 45.1635364462, 43.3580102761, -44.0244218674, + 83.2387206007, -8.6441851856, 12.3993902588, -22.5091685270, -19.8332981376, 97.9196509289, -76.6720306234, 28.9740705859, + 121.9415248016, 9.6656982611, -51.0996453694, 37.3704374740, 74.7589840907, -113.4066752631, 120.0029566342, -105.3786221360, + 81.8152755619, -13.4979932982, -21.4680758393, -85.1088235539, -65.3610798409, -35.0444139470, -48.0220794487, -41.6210317362, + 33.1212995259, -82.1480936443, -10.5479715135, 76.4601917004, 42.1983651157, 92.6104239912, -42.3536237955, -24.5644182272, + 30.4446637772, -90.2899420489, 63.6723540422, 103.0895811428, 64.1706769263, -10.7069812309, 21.8927240409, 6.3571071738, + 57.1457649358, -52.9866276448, 66.0981829072, -29.5372056881, -79.2252039810, -136.2440652798, -57.0106422562, 86.8203548141, + 66.4244149837, 53.3230426111, -66.1283059222, -131.0402660353, 8.0548411081, 122.9088988100, 1.2626894208, -60.5059112373, + -68.8707203082, -6.4747987200, 85.8411327244, 99.9624156733, 90.4197864338, -35.9630441182, -22.9158275507, -17.3660128776, + 16.7845345761, 34.7219749782, -39.3513765878, 1.0460702756, -60.9494500182, 20.0900333387, -85.9636743832, 88.4400782168, + 15.0729628728, 61.5499846243, 11.8579871757, 107.8617581581, -42.9393027864, -62.8422307621, -19.0589600542, 4.0750325807, + -36.0651825425, 55.7638724501, -10.4691736080, -55.5672537178, -61.2061519915, -21.1885348576, -131.2535612498, 24.7463552676, + 22.9426321237, 14.3038202264, -138.0926317438, -59.0892900856, -162.5416439986, 7.1307658250, -141.1236672256, -4.7173618068, + -16.7741532807, -68.2615451173, -2.6608701102, 84.1978109826, -11.3446202072, 59.9630033088, -1.8994925010, -37.9301641959, + -119.4435600954, -11.4587491646, 12.2423215240, -7.3169898616, -67.0373621128, 36.0198843055, 53.9791315249, -134.5885680695, + -83.8330811965, -16.6714816463, -8.8498552035, -24.0513088196, -22.9444328877, -37.7961441531, 25.1975736186, -136.1611637464, + -5.0843464033, -10.3939554694, 20.7422826935, 75.6854136623, 46.4179626736, -57.0052830175, 7.3457235521, -51.5504447254, + -158.4375751701, -200.2426967181, -48.1234996261, 1.6623945527, 21.1746524375, 99.4092980367, -2.3206772903, 45.7989166757, + 2.0181548348, -88.0556010969, -59.1527212096, 47.3607925077, -10.4181140309, 56.3558125650, -8.9799125560, -30.0376711812, + -36.7132904688, 35.7785050392, -13.0763909369, -2.1855594714, 18.1550954005, -28.6711803575, -55.4495172398, -2.8812973198, + -59.9575059158, 40.0588875786, 57.4713686602, -3.2835144853, -36.7193552111, -64.9415131516, -166.9555466445, -23.5556853844, + -54.9408569587, -35.2310451959, 21.3345143458, 65.7590671151, 51.2214538168, 46.1271939944, -42.2235267919, 127.2329928299, + 105.2391778600, 17.6726845966, -129.9021148044, 8.7065613044, -94.0987112511, -3.5375742950, -23.1385452379, 60.6219530633, + 92.5445564235, 48.5111974469, -52.5699309159, -60.0634811685, 25.9034368684, 140.0249495491, 1.5918852392, 38.0266038291, + 17.5588710703, 3.4294066089, -27.6748782173, 59.6182974489, -35.2924781853, -38.6198576115, -13.6119803198, 7.8375587489, + 22.7250686519, -28.3524510951, -34.4269062817, 22.6464817325, -61.6528147860, -5.9782002429, 61.4730771294, 43.5582379527, + 55.6862408270, 87.8745651631, 46.3401042715, -19.8780979663, 74.1272633369, 29.8590452377, -12.8665765140, 34.2931401219, + 53.9279617551, -16.9017895140, -70.1527553166, -79.6367897992, 109.3728271017, -129.2214826835, -53.4644539730, -51.5654458993, + 17.6062148433, 3.5090251835, 74.2615941204, -109.3431097845, 40.1403465151, 28.8714561280, 94.0868659302, -19.0047033845, + -60.0967410050, -19.0998457619, -67.2027075128, 72.0711434846, -17.8737851232, 123.7050551274, 132.6331504104, 25.5018761009, + -36.7817189239, -29.1580893235, -6.5848563828, 90.2868948516, -35.7017258498, -68.5675432955, -52.4888589786, 47.1377730021, + -7.4546621940, -52.0657517138, -49.0404829633, -114.6910280126, -117.6819819437, -32.7856729408, 31.8232065591, 12.1192973039, + 35.2678513420, -1.0336778293, 30.7021249679, 127.0442906046, -84.8457819393, 28.9862843096, -47.3524701726, -126.1094998460, + -2.9700276582, -2.4956545870, -53.8624121141, -85.2114117637, 76.9057985618, 137.1205201755, -19.0830817212, 14.3407526579, + -56.5921994449, -25.6084873186, -44.9470801106, -133.3139496090, 0.3487447576, 33.4499716730, 34.7126257844, -9.3307383323, + 27.2996276947, 10.8765676134, -91.1032360444, -90.9584216222, 1.6981490570, 96.8557438791, 56.7726390913, -44.3246449237, + 52.3260643361, 21.5551140465, 27.4535327381, 2.0072717479, 7.4823125629, 77.1185863870, 16.1372262663, -10.7206012957, + 66.8830091413, 49.3523828287, 54.0855375598, 30.8570349345, -10.9255375390, 62.3910624674, 30.9238561381, 0.3352881853, + 72.1022806197, -28.8319885008, 23.3335288806, 46.8999035980, -67.0984424822, -164.7917209112, 42.5767681360, -92.4668227688, + 43.8491734282, -17.1126540408, 37.4819594334, 69.0774409673, -39.3530526854, -14.0693747124, -60.2520781215, -80.3860105519, + 32.6689956840, 15.3393042576, -18.5529761307, 97.3942151573, -4.4462855745, 13.7614349817, 158.3358780719, -44.7258299667, + -17.7741912819, 116.5136962268, -33.6261057820, 22.8344441288, -155.1423976144, 5.7070117893, -22.7906543902, -45.0633909283, + -13.9329987929, -66.0848932507, 1.1383038109, 123.8386958483, 67.6662401589, 45.9152963554, -27.4397697462, 97.9596747354, + -6.3544655181, 29.0832146722, 96.3468162499, 32.4535976137, -91.0650399301, 2.7293262791, 70.7853483111, -92.3655274571, + 69.0359217256, 83.1530567979, 35.8375091111, 7.3393552348, -95.1770165365, 76.4905790891, 55.6253140577, -29.5315327050, + -19.6571455162, -65.5631159968, -16.1022064890, 105.8715375468, -51.8381429466, 120.1887801783, -12.7792505862, 45.9625293061, + 5.2249771246, -44.2522411781, -49.9151046218, 58.9294840166, -39.5237729290, 7.7590557538, -36.9036719322, -13.3726971638, + 54.3809777660, 71.3070336679, -51.0631236639, -10.0694214486, 15.9743446435, -49.4179644909, 118.7626471706, -53.3128484840, + 13.5615377463, -109.8892656203, -42.4445411536, -66.3623671033, -14.8179688320, 76.6614429072, 11.1173310385, -44.0756061917, + -31.6081137549, -112.6622817309, 32.5091400724, 33.0802101919, -57.4339078738, 56.3466203876, -17.0577340891, -95.3692048341, + -67.3434566840, 13.8207460717, 48.9375767823, 7.9881518802, -33.7163627475, 38.5685408163, 12.1465400224, -107.6320581108, + 4.0618423016, -78.4521092994, -86.1605081811, 76.0528521785, -7.4505556232, -32.6671595550, 28.1668313458, -44.3982773094, + -17.6420279051, -31.0505367972, 21.8444018590, 29.2596019459, -15.0890859227, -13.1393295693, 2.8101074170, -17.7888538827, + 32.0378687652, -74.5375953900, 135.2497294704, -28.0677270675, 73.5721900551, -66.6873287357, -25.1872324027, 66.2043845748, + -94.9847220021, 51.0053667797, 125.6199200698, -97.2966230203, -100.0987757765, 38.7851883798, 20.5509402780, 91.2789361356, + -23.6347319001, 53.4814037964, -27.8226699628, -4.2998301656, -49.0060086613, 57.7107938724, 73.8228091191, 39.2104809606, + -27.3049570759, 78.3558930717, -39.1465109393, -59.6714099634, -71.7254332281, 44.0304489875, 62.4610534699, -47.5531388302, + 62.3692165629, 6.4426089142, 9.0422858718, 23.1735394482, -47.2878667545, 44.2020612249, 109.3032846597, 11.6805260558, + -30.4758154602, -82.4704834090, 38.6561095453, -55.4482370852, 8.5232602822, 133.2611664825, 100.1432731096, 22.9595423699, + -100.1659221126, 38.8223174175, 27.7691674207, 126.7418939874, -91.4494781699, 141.2081002115, 39.0632821221, 63.2623914663, + -30.0221078403, -33.5477169622, 29.1082028625, -3.3848571660, 61.5724672364, -34.9602677014, 110.9349405045, 102.6143795477, + -57.9940910047, -35.2709261901, 16.7143230992, -40.5324218543, 53.9355486697, -64.2634715959, -54.9387762268, -42.9168088882, + -57.5562950128, 37.9068250889, -12.1446003699, -60.1702164080, -20.6508515440, -98.5324628329, 101.4072369572, 129.5400369054, + -81.3566359702, 50.6071670655, -120.4768679404, -42.4978466545, -8.7364843153, 49.6150365421, 122.5389217747, -17.0756316445, + -62.3577228096, -45.0934187476, -32.0622747717, -30.5522096168, 28.4509994932, -38.2485520772, -50.1501458954, 33.6999850082, + -53.8053116265, 5.7733509059, -34.6589594313, 126.1617129527, 20.7567771895, 172.0372861812, 89.0892733767, 100.7503861649, + 7.3378103261, 98.5906415363, 32.0129761463, -41.8886119031, 41.2269067119, 68.3876187817, 138.4871996142, 11.3975797943, + 77.7316432733, -158.5764699010, -73.0154932162, 4.7811847147, -23.2377092445, -15.8949240362, -11.9056513173, -152.0900719578, + 18.2632385344, -54.1998869586, -181.7000796389, 48.1068217262, -32.5550981417, -28.0507229974, -31.8419308387, -25.6072993087, + 19.9544408703, 9.3745877673, -83.7112773954, 69.9469812476, 103.7806121094, 7.5661034347, 19.3961679774, -33.6734450687, + 145.2662801261, 84.6823084936, 3.8883005529, 16.9248666945, -16.9581909221, -89.4228081883, 16.2888634344, 11.1954888184, + 2.5472628157, 18.3389344143, -151.4283735338, -34.4147990116, -25.9480238152, -25.5347276158, -64.8106533195, 50.6575131879, + -7.3028646826, -32.2126924117, 18.1267061221, -16.2075818210, -45.6339941841, -33.6697120217, 49.2624187554, 77.8687058107, + 73.6069588809, -40.8028084671, 18.9768190808, -30.7579639537, 42.1813346527, -83.5367163130, -107.9332971302, 7.6029737222, + 26.9032374575, 49.3843590700, -46.3813865337, 9.1625140590, -66.2444573706, -81.6335790942, 38.1352819102, -26.9099106066, + -73.7453409821, 120.4931605467, 10.3564307049, -106.6178964489, 95.7043175624, 33.5246942332, 47.6828732088, 88.3229069791, + -15.5217019654, -19.5431169450, -3.8342503054, 57.2251891575, -48.5444916144, 71.5434047188, 12.4489765266, -11.7576981068, + -55.3127919285, 17.8351394582, -103.4011502717, -4.0445991564, 15.2952711643, 136.5345440142, -63.7492382166, 36.9305043452, + -1.5952862211, 16.2532277000, -8.2697982122, 59.2373828733, -114.7747262875, -10.3140845306, -30.5291082162, -109.5521180147, + 0.0880047356, -26.2704646488, -5.8324862328, 51.9555476050, 179.0193630333, 35.7565163112, -25.6830342083, -38.6240101524, + 7.1156497155, -38.9184661158, -44.0206559654, -61.9671745846, 49.0909411685, 30.5438751442, 61.5412933030, -24.2114612829, + 5.7471838440, -18.0880708776, 71.7203646740, 86.4088528992, -58.7737324960, -57.5055785792, -95.3936802143, 116.1138906258, + 60.1792035622, 56.3771096083, 49.7396983038, 38.3766351111, 69.8500772704, -49.1498577356, 70.3558567877, 8.6780858427, + 34.1723731409, 15.4734742852, 109.0630331552, -121.1548202826, -48.3994829024, 30.5337026074, 24.7828521521, 42.0584760304, + 75.1343090013, 129.5812051166, 48.4270407054, 26.4055953415, 14.0152471956, -95.9222273011, 90.6485095604, -14.3202487407, + -67.2852187582, -166.6666517028, 40.3833373200, -36.1005828038, 95.8066175560, -35.7716615894, -49.1292761932, -129.7066955214, + 103.7802140124, 1.3540192035, -11.7154031368, -33.6798122030, 38.8567068892, -13.4661723261, 27.7129532179, 11.5232210014, + 23.1346883982, -31.8376649712, 43.7429902892, -6.7521035668, 9.2376550661, 49.7442294743, -11.0442544230, 86.0728321584, + 83.9184836462, -16.1275908347, -18.4328902788, 29.0599791766, -119.8140170048, 6.1015865800, 8.3430418870, -26.4676140800, + -54.4170405827, 65.9500246661, -68.2589172652, -67.8087618276, -32.2785464329, 15.5784741177, -40.7911512889, -30.4549351749, + 65.3973162901, -88.7812378733, -100.7984347025, 33.8660362781, -29.6824618124, 43.1980425632, 28.3570049344, -53.0517620662, + 77.8517167497, -197.3149986900, 39.9412966213, 64.7267960844, 9.0985185643, -48.2516330353, -25.2702193655, 43.5324967389, + 25.2174278973, -143.4955124244, 97.6996202090, -6.8156183641, -24.7105412789, -82.1407130477, -84.2647074618, -31.8474816146, + -18.8364319750, -39.5505715225, -54.5495977905, 17.7158231401, -3.7065472234, 57.0344653317, -88.5539921734, 19.3061972587, + -71.7736386745, -41.9757523004, 44.0839025453, 93.6350283513, 23.9985071911, -82.1811236502, -109.4369907962, 63.5407415232, + 8.4092298502, 28.4295805746, 18.6411321700, -5.3460515491, -67.8392754185, 38.2413165851, -48.3890309482, -84.8999016731, + -96.8897430524, -108.9709380233, 12.6763008215, 0.6495692893, 42.5729352890, -45.4201114101, 178.6503517211, 32.3364256219, + -0.5018953239, 85.4524577539, 31.3821199920, -77.2752461536, -22.5276539124, -73.5513316548, 39.4443099153, -85.5453904099, + -92.8231923388, -40.3971881753, -58.4187011919, 43.8859268482, 8.6368900854, 36.7106300359, 46.0279473438, 98.0046308108, + 141.8908992398, 99.5148913015, -117.8125705364, -39.1830583755, -7.7274169732, -48.2601982254, 62.7987036515, -214.3028855312, + -63.1561162569, -16.8220689219, 25.8725009221, 122.4301600524, -14.0054049372, 34.6312211243, -80.1152116439, 19.5089176613, + -55.4531957952, 50.2925094566, -34.9023849044, 96.5932330242, -23.3903984041, 18.8379347047, -142.5109851060, -26.3638740038, + -45.2635268905, 10.4556800933, -67.2064627051, -82.5693793971, -61.2994401437, -60.8623342608, -49.5256808732, -67.5095279686, + 109.7221898389, 30.3565964773, -3.9295411009, -13.3243471006, 31.5325109517, -42.7881917663, -62.3012601651, 12.8902122674, + -72.4707062966, -1.1385459373, 31.9714183017, 25.4392014670, 5.2034169158, 7.4078411122, 3.9210252522, 5.6054243531, + -13.9283618935, 62.6605467523, 106.2229553720, -108.0346097164, 45.8846468124, 63.6694544818, -10.1426865266, -101.2125032732, + 84.7788854892, -74.9877442652, -90.4102888654, 82.3491489235, 13.4299871406, 8.6923780794, 21.7402751068, 1.3078400943, + -5.3323741070, -40.3811284623, -2.8868770078, 160.0268532699, -25.4997503943, -89.7351898498, 47.6695601274, 134.7207474765, + -28.8772848263, 43.7271906311, 7.3228230169, -96.1850462320, 35.8869106751, -11.4777855539, -25.7781856921, 48.9895273966, + 13.8032764481, 14.5942766183, 5.8336013315, 87.6897796695, -13.6765032835, 3.3883927453, -158.3668079137, 42.2382326860, + 21.2461344076, 15.6945936663, 9.6604677279, -9.5678778930, 123.3597739656, 22.1167117074, -74.9824011460, -95.9807585582, + 63.4915942695, 94.2011376357, 9.1392063086, 11.0696792396, -61.7781744244, 32.4342673236, 47.9943613167, -144.1319767603, + -72.7895423040, -51.0997685900, -1.7995707656, -94.9206104086, 72.7211674226, 58.6708314320, -20.8389738301, -21.1038399946, + -16.3313082354, -9.9622712842, 25.1381713884, -43.3630408732, 95.4208180249, 4.9957713162, 139.7419301257, -78.8102530942, + 18.4468841849, -36.6529768792, 32.8656605850, -13.9061010905, 25.3836067009, 29.3018838146, -3.3243716283, 19.1868542168, + -24.3576227747, 35.5704128749, 9.7305659636, -28.0698496733, 80.9991737110, 44.1711909705, 67.2428623477, -51.3139105230, + -84.1430177559, 48.3068887430, 9.0115749848, 14.7342922983, 69.3129475126, 15.3916339055, 19.1526114590, -36.2384578425, + 36.3072041758, -2.7831098993, -79.5517384898, 2.4496975564, 14.7441805304, 168.3353222077, 6.4042017907, -94.1108499663, + -96.4470728057, 93.2974672034, -25.8910707915, -109.8714867373, 19.6739537972, -25.7283734173, -63.5666504767, -13.2751224909, + -6.8369303742, -44.9757631953, 59.5220216584, -36.6656623877, 100.4234528842, 39.7179675926, 100.4793677526, -86.2364278236, + -92.0288292261, -103.2337376347, 44.2981800782, 19.1367051770, 13.8984402872, 58.8220815831, -77.2361735490, -114.4879467592, + 89.1682762205, 51.2266997372, 81.3502982945, -21.5959593928, -11.6326571964, 8.8353642779, -12.3913359429, -23.1216638844, + 0.3575351650, -18.2903762351, 45.8302612836, 80.6428162262, 59.7892572555, 60.1876610526, -145.2533267974, 106.2800108239, + -18.1569484863, 78.3937893751, -85.6984739674, 25.2366777542, 61.5343531109, 140.8219730338, 47.9603484021, -66.9887369929, + -30.6392044667, 52.9963805955, 62.4415105078, -90.2869564132, -24.2283129464, -99.9584280390, -43.1587468514, 34.3760232029, + 89.0356907077, 22.0053768451, -53.9159785951, -25.1650972100, 8.0202661814, -53.6342885367, -7.1736148465, 109.3934027137, + 33.3102237776, -81.7593644113, -31.4758286552, 37.4778685110, -22.7494345710, 2.0108643659, 46.8251888594, 55.2739450714, + 25.5904497373, 80.2180417943, 60.0712983927, 5.1023725171, -55.3981506793, 92.0411889173, -151.8431761496, -17.8889138320, + 13.8369339480, -98.9537744078, -69.4129195296, -9.4399479020, -4.5486917569, 3.8311487140, 17.2656994939, -25.4507802631, + -42.3325354568, -16.6440745458, -133.8308014681, -25.5109360172, -23.1019754685, -113.2804091682, -14.3636580071, 87.9235056149, + 72.6206212879, -58.7137643393, 167.9006741193, 39.5232107063, -6.3630485808, 71.6621087431, -114.1539708322, 101.7815598753, + 27.2475470378, -54.1505303371, 30.1111783717, -11.9959488516, 19.4405070791, -108.4745463396, 71.0642431926, -19.8129431719, + -15.2954756654, 14.3561030921, -16.5356371988, 52.7783287094, 28.8939941206, -17.2842243626, -133.2248386977, -83.3404111930, + -7.0104157691, 22.1756809435, 3.2730114916, -32.2394014930, 20.3115837303, -17.1488805354, -42.1049764681, 64.9096377499, + 7.1989366097, -54.9327048635, 27.4112784568, 12.8647289850, -47.9584681630, 28.1940916618, -77.7181004478, -39.0254847210, + 14.6762624107, 32.0630508538, 73.0143676987, -22.1015540909, 41.9874345585, -2.8858853990, -88.0645760668, -90.5936909394, + -17.7732180284, 118.5661779332, -66.7797486036, 50.5937256974, -21.9300412969, 32.8513839567, 9.2389232325, 7.6133233529, + 11.4306872743, 86.1899246751, -14.8265560191, 14.3516516628, -81.0949021047, -14.0165322751, 6.4193008532, 91.1325356747, + 136.3161040384, -79.8056934391, 48.3720074062, 184.1908593323, -1.2350224948, 104.8017124353, -70.7660168596, 59.8117635799, + 38.9768188797, -92.6445519451, 38.4757633507, -43.8909508451, -68.7430495433, -33.5503051820, -45.7745564558, 23.1582292853, + -53.0556301244, -84.2076950671, -11.0754062672, 59.8325332450, 115.3577555552, 6.0322991520, -27.2020584628, -11.6601684536, + -19.6192551137, 63.6069935939, -90.5530529832, -65.9660360514, -17.4108821433, -32.2870508580, -18.8912458596, -13.0325547618, + 15.6951179243, 52.5832125410, -5.3522907337, -17.8679842370, -29.6421416058, 54.8215269985, -33.6000150970, -17.9637151319, + 38.7672649613, 15.9768537914, -36.5384968894, -25.8899064866, 143.3564174538, -16.7027387067, 112.4635318759, 60.9380860218, + -12.5989262156, 65.1545135722, 68.4448023234, -26.7853957961, 93.3277464713, 103.6052678753, -67.2083365675, 17.5708362440, + 54.8826954360, 18.1508430942, -39.3842844795, 37.1447880280, 57.6547054454, 9.2814912808, 108.2432242472, 32.8556189396, + 94.3226005359, 5.8586602054, -110.9028458371, -51.1302011664, -16.0219070131, -7.0598649579, -176.6996383318, -49.6407750992, + -66.9977026952, -89.9496950726, -53.1942620674, 34.9304683629, 30.7056949448, -64.8309845749, 73.0371656315, -13.2113288868, + -58.9585474923, -49.8700242642, -6.1582020634, -145.9633036671, 46.6807699026, -9.8057958623, 45.5962806826, 17.8413742472, + -45.1844288752, 51.6533061953, -18.3891326987, 86.2944939973, -88.4475541046, 109.7385814010, 80.2606871510, -6.8687112951, + -40.4305300274, -68.8038418728, 98.8182955892, 45.0578128678, -17.9270836619, -58.9964717416, 11.5983932225, 9.3557201268, + 40.2977049475, 138.6920714505, -107.0950700047, -8.5417944988, 76.5742734827, 99.7719961192, 33.2465872494, -130.9955599444, + -29.2255022084, 35.8580665719, 35.2949239487, 47.8913285775, -23.4340430256, -20.2468230117, -129.2315852983, -43.7204390811, + 18.6427890127, -14.5256762331, -114.5390628737, 83.3822028084, -3.5819486705, -30.4441161689, -112.7352247162, -109.1237973030, + -1.2881432609, 102.3673365896, -56.6529958750, -17.8832422128, -83.7875095740, 27.3286576586, 28.2690336934, 11.4666255287, + 52.7806502871, -32.3964403795, -11.7703336362, -26.4802375579, 1.4830249909, -46.7745447418, -179.0106845682, -46.4060214919, + 13.0495006806, -15.7093018033, -23.0652411102, -46.8891647861, -11.2767379154, 54.4284213870, 61.0257369233, 25.9537772478, + 32.1447676269, -55.7565993845, 16.1980837538, 39.7108201653, 57.5494093425, 25.4753658982, -82.6747317912, 32.8120846114, + 94.3963947400, 115.4928024657, -103.8033683890, 0.5505661357, 17.6017067223, 0.3340989298, 11.4554380855, 60.7715773549, + 47.6023333479, 8.7147095957, -12.4689201501, -38.3317139365, -70.8372336044, 19.8454635262, -32.5311981944, 16.6656528545, + -99.4051451760, 52.1836216170, -36.3751695538, -168.5804600081, -12.4503257083, 20.3254098853, -115.3933821008, 99.5221568068, + -65.3861194417, 28.8829913431, 180.5755173101, -52.4724526473, -17.6810674060, -36.4748431538, -0.5256538571, -55.6217233478, + -21.4129350702, -62.6552175024, 43.7806633668, 68.9822663027, -103.7310445758, 24.8680657731, -23.1804371879, -19.6865562980, + 86.1256756588, 43.1915528025, 64.5202069909, 11.9433963783, 59.3956955884, -136.0065807072, 54.2444425795, -28.2438980841, + 27.6881277816, 3.3966585075, -23.2714416081, 56.2708787997, -104.6936674005, -56.2472159428, -66.3373352615, -79.0727896373, + -19.4338276833, -81.4066241391, -7.2994007916, 104.0111560011, 19.2521825910, 39.6171092266, 8.3114594881, -18.6024599138, + -55.8404695603, 28.7502170881, -35.9621183078, -83.4040376758, 100.9786890719, 43.7353110787, 58.0923223162, 158.0571243490, + -89.5270222788, 35.7263973066, -85.7794526924, -44.9442606374, 52.4649663641, -16.2400821703, -137.0501146883, 33.4104950855, + -66.4055049018, 20.4444710408, -58.9392047771, 93.1083108145, 30.4506487034, 110.0306666973, 9.2409143811, -24.4812544449, + 74.6860947628, 40.3769192483, -16.9497053699, 14.5576684325, 52.3350907389, -25.2007169663, -125.4063020221, 62.8691359335, + 12.3811488011, -49.4397264264, -45.2008829472, -45.9893935646, -51.0423101211, -13.5776298651, -117.3962715914, 20.9725891298, + -31.2377986416, -66.8022452921, -52.2545297076, 36.1808304465, 105.2804289847, -29.7408485717, 35.4936891096, -44.1058624503, + -7.4267543746, 45.9626674865, 43.2586644116, -84.9652227215, 52.2598894211, -27.7731305158, 79.4055411705, 134.9211049595, + -77.7683897577, 38.9772600887, -42.4478182670, 35.7767677279, 120.4883485663, 40.9080290988, -52.2908368677, 10.8332681424, + 103.8755744034, -69.4025590672, 63.1667239359, 51.1565115511, 30.4688205979, -7.2886782047, -18.0942283768, 31.5953801065, + -34.9573251248, -43.3238802424, -20.2265574149, -41.4045853426, -156.8022185924, -20.3378496469, 5.4144969666, -49.4467840461, + -27.8246258947, -36.1553394393, -40.4493178373, 13.5989840626, 69.9757376469, -60.0443280971, 3.4638171519, -141.4361514658, + 93.4118114115, -7.3645097888, 2.0470465032, -54.6478723026, 7.3294655198, -6.8416716006, 9.0045502006, 19.8489919128, + -6.4702933570, 16.4343253942, -10.3891055517, 100.4561542312, 29.1536913142, 53.8464057947, -16.7143417688, -153.3024265390, + 45.0496791201, -0.9943534787, -20.6269990550, -50.6212419282, -24.6576988474, 59.6066172704, 10.2122652005, -40.4195486296, + -29.2714128060, 62.6802622802, -47.4202386064, -34.8309723516, 79.5197299960, -20.0749434197, 169.8665850989, 98.4267485076, + 31.7347164541, 37.2604966566, 6.7605021281, -50.6903490963, 6.6127852698, 151.3469256096, -70.3184827662, 164.9601379841, + 92.6205263551, 69.9026079183, -31.0866155998, -34.9956145613, -9.6578985782, -32.6789267529, 80.3319506579, 91.7685176440, + 5.8995239218, -82.0636944263, 29.2086774264, 14.7724289401, 66.8988379781, -24.7460191895, -114.7525174298, -32.9732857706, + -51.4321208184, -66.2382282862, 21.2981329623, 9.1062826547, 125.8754077125, 51.0615189986, -96.7297998983, 64.9965050494, + -71.5111010300, -180.4535252581, -56.1041777677, -3.3591726481, -74.8271358166, -28.4281456554, -70.1818488305, 35.6835607015, + -13.9275123287, -83.1043490068, 22.2289783248, -95.1448030958, -40.5966123003, 11.8470675380, 106.6983680147, 52.7565554571, + -50.5809140712, 62.1951780988, 92.8998044629, -110.2770489118, -5.7088922157, 13.3095896843, -34.0434382314, 41.5967680846, + 7.1406890165, 49.0800572858, -4.8661130870, 50.1732411845, 21.8791360144, -20.6230498949, 33.2629053316, 34.8156585726, + 7.7974775850, 85.5360926916, -19.6603301120, -13.8088176043, 77.2247366741, 81.7615386790, 29.5025756045, -202.4477185665, + -31.0440373761, 119.6975128752, 46.8351618237, -36.0825651455, 52.3228058699, -61.7212902449, -37.0009190140, -111.1411485112, + 119.3548750790, 7.5570310830, 6.2657871086, 49.2259611245, 49.9691348215, -30.7394519018, -60.1418076104, -59.4870457446, + -111.9152565690, 124.6406880479, -47.4604425483, 13.0533325061, -76.5307924698, -60.2632649204, -28.0947702114, 5.4878397959, + -83.0541772262, -3.3172056420, 20.2732863285, 29.4076349749, 47.3392948241, 55.3208777615, -32.1444489144, -23.6019236678, + 61.9602080076, 41.6812616408, 30.8111928268, 21.8108462337, -24.6948175247, 16.1446229981, -15.8735793778, -24.1870889577, + 27.1864566801, -50.6435004599, -145.1098728714, -75.7531085939, -4.9397756888, 74.0940849050, -53.5740454881, 28.4600455809, + -64.1804054310, -56.5695284341, 45.7257738714, 27.3208227413, -87.4969438966, 96.9999840115, 26.5098283187, 75.3671956291, + -39.9875814398, -71.8080566179, -64.7909433975, 112.6208244120, -57.5455840916, -9.0666084922, 36.9334781097, 69.7260235716, + -47.6511701810, 48.9455812098, -19.7303239899, 34.4780933174, -24.8188130996, 1.7918733164, -51.1027083896, -8.0414842387, + -69.6904961677, 91.4021012418, 143.3158713687, 127.8431865361, -76.2463415340, 77.1863865583, -104.8165933906, -82.0491770730, + -4.2452881018, -29.8857354449, 39.4203383204, -78.4428804183, -67.3737881273, 45.7774162557, 43.1510666403, -38.1227007212, + 48.0367915577, -2.2796749550, -147.5309258951, 59.4609063787, -94.5201743634, -90.2713711080, 83.9499629394, -44.4267785769, + 66.2311395310, -19.8654393787, -40.9657871591, -7.6100345494, -153.4687135715, -24.0528389453, -43.0977703429, -32.4544558717, + 27.4626014725, 61.8263048101, 8.4949142219, -120.4489043103, 9.2738852281, 65.3309688121, 44.8133466197, -37.4373241359, + -83.9640842471, 23.4059670119, -93.9143209007, -55.4183425033, -93.7449781980, 74.3227981579, -11.7471950643, 84.3803942002, + -31.4489037424, -1.8363204298, -55.3456417353, -95.1228021775, -55.4637768242, -17.5611590555, 8.6597790424, 19.5417857682, + -17.2507716259, -5.7889755948, 70.5139270183, -26.9177828140, 39.6037632634, 4.0845034879, -59.7156630403, -55.4689095772, + -58.7669735168, 62.5057414231, 50.1807875376, -49.3189045747, 15.4287355682, -8.0824504769, -47.6198199719, 15.7657690255, + 24.1207871994, 27.9173027164, -12.5261250855, -19.0257872712, -82.0154379577, 76.9194034147, -14.6695769647, 1.4844193915, + -7.9956835409, -55.6156194033, 39.9952855598, 51.1083969228, 48.8829532142, 62.7988625371, 51.9432398511, 2.8722062155, + 156.1476408615, 37.5905889544, 54.7112433550, 80.2943943272, -6.5627640190, 88.6335213431, 112.2792767414, 21.0878200837, + 5.8741152139, -19.6667337723, 33.7905147067, -34.2798965801, -26.4594706418, -15.0765526773, 91.5802201722, 85.4145356413, + -36.4818922051, -147.9028534383, -42.1412753623, -27.3632859684, 44.0453194249, -19.1027467398, 14.3157309983, 4.1768734004, + -68.3022440228, 34.2186781120, -10.1854692365, -173.8586421151, 56.7091031998, 2.6538298634, -93.3821299316, 45.9499799668, + -11.8122305624, 26.1216815300, -61.0880687199, 73.1945783047, 28.9339417573, 42.3531539412, -71.3262502743, 85.4828937399, + -66.7918044637, 5.4192940999, -81.2977956585, 88.4998783552, -8.8973642437, 18.0257683389, 0.2933847454, -87.7509230128, + 1.4360726567, 57.2432970677, 103.3736004675, -33.8595106764, 36.4856625370, 87.6767927437, 45.9257522623, -91.4882358338, + -43.9564432991, 36.8048295224, -155.8735354347, 78.5839166200, 21.7365316114, 2.8251251119, -0.5016069183, 50.9050618615, + 14.1865751800, 53.6974572195, -47.3239324031, -62.3187399635, -109.6783459490, 10.6742758459, 3.0633856847, 170.8292829026, + 22.7107314592, -115.6997421721, 179.4541315127, 36.6353212025, -46.8173506792, 104.9377352185, -62.3839485230, 84.2161407106, + 136.1327139029, -1.7544748630, -86.9030562131, 15.4259753671, 2.5663369046, -116.9292434949, 64.2129157660, 78.7964806182, + 49.6087028507, -23.1282134104, -37.4278940992, -67.9769820701, -32.7546299170, 103.2337703853, 59.7504223629, 147.3485484359, + -3.2598723366, 116.2635358555, -4.3105783057, 99.2160004729, 18.7288916095, 78.2186271384, -32.7460615054, 26.6048168237, + 54.4099899967, -126.6518025639, 17.8377885986, -98.5074167624, 83.5842655157, 63.5608049079, 124.1282700584, 25.0506382513, + 9.0974612270, 10.2387616470, 31.1629214422, -24.4182834051, -15.9351308181, -32.8438279677, 8.8571103031, 3.0977533207, + -23.0359569441, -85.1033133185, 1.2922811622, -69.5278720344, 25.7444385081, -92.0141253702, 35.4374183520, 6.7043276497, + -0.7451513477, 6.4338102885, -75.9673321161, -91.6026967981, 34.9987265356, -83.2890589702, -47.9531745920, 142.7844807861, + 114.2435566703, -26.6531368807, -16.5029393959, 14.8125488050, 16.9592532170, 12.9147547847, 59.7887418020, -39.2528866593, + -15.3658342458, -74.4590980998, 74.3475628113, -48.1780064666, -11.0564355396, 70.9519213138, 110.0516331927, 36.4575879060, + 91.1281495181, -103.0201029342, -58.9865587379, -87.3023951029, -25.5889474724, -80.1022425592, 7.1308546919, 42.2966419390, + 28.1034227718, -110.4992975497, 52.3250451635, -22.1535855498, 12.7339036777, 34.0415435152, -39.0750294825, -30.4963132547, + -53.1808531221, 17.7255575164, -10.9535616620, -95.2135221101, 100.4987819707, -68.9493118541, -82.6099501128, -18.0285171027, + -21.9761772415, -27.5932967659, 91.8124465044, 5.8338598129, -7.0338759021, -45.7406241732, 12.9215890948, -0.0753638964, + 44.7159304680, 26.4654167590, -40.1423667648, -8.7426397748, 31.4700501616, -38.5847107897, -17.3446717482, 33.6461097548, + -107.3520493912, 117.4675224001, 40.6606607876, 7.9719714143, 27.8264722603, 38.7179679154, 1.7705195429, 25.5111272928, + -100.4419129176, 12.0673509113, 83.8410184425, 29.5781971450, 8.1040630143, 4.6727315335, 64.7847825199, 82.6216823615, + -15.1627242063, -22.6182310171, 13.1330997407, 49.5724583221, -46.1716475780, 47.7331801575, 49.7204543255, -85.3529225637, + 44.2195291098, 14.5616345667, 25.1355891397, 40.3146174825, 28.9423346884, -75.1582368771, 57.1913980615, -65.6984554165, + -40.7664709143, 66.4827050221, -37.4060644320, 22.4137979914, -40.0020443101, -50.0281409167, 4.8184431368, 62.4290842324, + -40.0926566688, 44.5774651507, -21.1028032780, 15.1185206565, -16.5265077365, 50.9848497205, -1.0692090929, -10.2392281457, + -73.6134935055, -58.7604124292, -78.9611342584, -22.1438277580, 38.5664728303, 39.8041438227, -43.2409994985, -37.9352795857, + -10.0448204868, -23.8371815139, 3.2897249640, -80.2885168342, 37.9525301994, -75.0706497208, 83.5246116221, -72.9921720117, + -8.2686558506, 3.9598212380, -88.0878393938, 14.7857207938, 37.3105932736, -25.5786314639, -14.2401437401, -131.8844485523, + -83.2051874645, -48.7402478144, -47.1392081390, -140.1935235859, -110.9171286805, 5.6067034386, -61.3508997640, -153.0780126325, + 20.9763880517, 36.9388874884, -0.5023108098, 109.2764166186, -64.7679763308, 27.5264562598, 12.7297402644, 135.9094145156, + 28.8725261600, 107.1985003559, -17.0333242428, 14.6472316711, 79.6550390697, 76.3253602754, -42.1106361443, 101.2937610145, + 29.1345513275, -81.3710305821, -51.6367882642, -75.6657420025, 67.6127817208, -143.1235134075, 63.4083371887, 20.2771663953, + -39.6962975349, 35.4904122251, -21.1761177463, 36.6827629732, 30.2533761253, -100.8244394079, 42.0562320416, -117.0985134680, + 86.9313959966, -68.5862263897, 39.2349791859, -62.0712807646, -4.7999897806, 157.2184386950, 40.1651596554, -130.2861272594, + -21.2745075974, 96.2019047346, 130.4626031799, 47.8121736864, 67.8619386636, -88.5169139565, -15.5429762844, 46.7375894206, + -19.9234556464, 74.2075824091, -146.2816301611, -27.5190709903, -105.4977126735, 82.7567139636, -63.4005073458, -97.8585647602, + 70.7163936702, 40.3196085322, -92.6325452663, -65.4906649632, 14.2362768591, -40.1848110012, -27.7039695490, -100.7942890248, + 31.7082105399, -25.9115041943, -37.2685165720, 12.4301141470, -86.2349812607, 85.4288388492, 61.4326022560, -52.6450593109, + -78.4043996861, 32.7052974812, 1.1786814775, 65.3401420354, 8.4364632653, 148.3052078011, -83.0828330696, 106.6354843068, + -4.3121195655, -44.5526178638, -2.9317305696, 109.9935497492, -18.4045116767, 23.1613955078, 15.6972686340, 128.8746575438, + 29.0629973213, -10.2922631539, -26.9225268881, 78.3939184322, -13.9891592847, -14.3955545921, 56.2259353432, -106.9719383698, + -69.4541718556, 83.7959262767, 118.0020136833, -76.6757480506, 53.0531323252, 20.3374814219, -45.9339005486, 46.3861511953, + -82.7185926581, -51.9983813997, -11.1149096121, -15.7796335925, -14.9611867369, -55.5963996752, 3.4778394189, -63.4371998633, + 28.8327087658, 12.5198672129, 87.7380213704, 18.4911159408, 56.8889056171, -21.9589217680, -93.4663445471, 55.1183878788, + 0.6449948853, 28.6533319776, -14.8059318368, 113.5439226734, 54.8995357737, 109.0924325068, 38.7922835723, -0.1180981319, + 157.7915336564, 81.6839158496, 11.8100964756, -22.1691332044, 9.1777753259, -58.6991331163, 121.9143128888, 123.2714985637, + 28.7886850251, -73.5910923730, -128.7124920003, 55.3579340152, -103.0285920820, -68.0360814429, -41.1894325447, 61.1418052767, + 9.1032579737, -114.7074592848, -35.4778656303, -56.5732437789, 87.7236911508, -34.1313499403, 62.2620712971, -52.3364100999, + -108.5676552169, -88.3757117464, -19.3248782556, -10.6333977657, 11.1531439202, 117.9042736262, -59.5405468137, -29.0685166095, + 84.9970950178, -27.4738785887, -49.4301782076, -23.7375836298, 123.1572277910, -30.7874739051, 20.0070113012, 92.6375682898, + -151.2677413660, -64.5993124352, -6.1931938222, 56.2980662344, -51.0667271974, 3.2590148897, 94.2279629570, -81.3680192851, + -58.2441470779, 136.3043204550, -65.1682000377, -11.6204578273, 82.5051730406, -20.7566312389, 12.9732577973, -3.6631681566, + 5.8870959981, -15.0765851320, 82.0878455090, -35.8669226696, 12.3547961199, -187.4160833910, 134.7486191161, 68.4591403436, + -10.0461433931, 59.1539319574, 43.7723616252, 79.1999168985, -24.1914155320, 38.0293798436, 4.5268241580, 32.8861446301, + 26.8134396608, -32.8357678171, 75.5315658240, -98.3994598766, 27.4380255469, -18.2567928813, -53.8692115445, 43.6445077874, + 41.8403964980, 145.5446940894, -45.1527793517, 36.2478163862, -23.4791069949, 12.4999105154, -39.0947731515, -94.0528129824, + 58.3030733328, -45.3491781120, 73.6529605858, 59.5823230864, -47.4741019188, 16.0307838051, 76.0140317071, 35.1546855136, + -5.8237741703, 8.3668861475, 125.3567506875, 55.2422644949, 22.2611352600, -33.7548647520, 22.9568910221, -35.1162490171, + 34.5901055588, -28.0490543019, -15.6322113695, 23.3610785957, 95.0831229094, -54.6273674257, 89.1750392621, 40.0225575612, + -14.4413587278, 97.6869759465, 14.7675464371, -37.4004765161, 119.4568961628, -26.1920161265, -58.0012410134, -28.7350340564, + -4.7796929865, -19.7344028715, -8.6437248253, 103.9809164360, 11.0043740394, -32.6092633210, -80.6443486297, 49.9986715363, + 105.5490975322, 104.0899701063, 59.5660092301, -17.9484147791, -55.4356343687, 5.6176664765, 147.8940936440, 42.5217478147, + -33.7007685862, 76.2702328206, 17.7168869112, 29.8692838033, 47.9156001099, 78.0087519225, -10.9663921228, 108.3826416455, + -12.7724638181, -84.5882451872, 19.6390498449, 50.9452521435, -10.4676220676, -59.5812635820, -165.2174342507, 52.9034909048, + 4.5103428162, 28.6714188830, 151.2376493891, -15.6519597742, 54.5244070834, 40.6356686042, -51.3633558110, 39.9915724858, + 1.7184423265, -4.3510464817, 6.8579282212, -37.7467707598, 37.4199831388, -44.1415061320, 7.9715921178, 80.9137854559, + -93.3883447881, -70.4226479003, -5.9804507221, -12.7588185792, -12.7748179660, -44.8489354744, -27.7084595447, -9.4696608732, + 57.0454576802, -137.5411295173, 34.0807152122, -82.8428997163, 36.3720183240, 117.5741160380, 91.0621096220, 16.9215804561, + 82.5046757105, -16.3941226525, 21.6412310432, 9.9347818503, 94.4637136289, 40.3883996184, -79.0927933462, -74.1126629254, + -1.8463008698, -11.7303452181, 51.4819690412, -40.9029132628, 79.5478142926, 37.3467151745, 119.3061300476, 81.7656373311, + 40.9995493552, -18.8267671804, -109.2814037436, 110.5826225324, 3.9090047179, -12.7311846356, 50.2434808607, -78.9987938122, + -48.9383950748, -23.2509396875, -67.8816298850, 46.0043667633, -79.5062435328, 3.7149881510, 28.8345576966, -2.4062068420, + 111.7203117517, 0.4410205414, -38.3832527193, -61.3416288539, -102.7939248826, 67.9533675166, 58.2475592529, 10.6035422626, + 37.5730234873, 49.4994673002, -82.1647604961, 65.7885201078, 92.2097983704, -37.3226143066, 135.8561958349, -49.4816302910, + 10.8193370693, -8.1591216625, -124.7982308726, -14.8282684728, 90.0927717376, 33.5256881620, -59.8703916309, 21.7176330197, + 2.1782551834, 114.1382737688, -88.1597739240, 6.5361543045, 97.9695862766, -39.4694065867, 11.5962132886, 33.7697466356, + 58.9764174727, -4.3190513332, 45.4357110166, -39.8718237733, 101.6682995218, 16.6389670713, 0.3598261204, -29.7440968058, + -31.6482054502, -43.8553776977, 67.0772865832, -54.5098535835, 30.0974211944, 45.0867818944, 8.8681839790, -27.6698123459, + 32.5238939056, 115.1771763945, 1.0297629680, -0.1277281381, 53.5989816709, -15.6940765735, 214.0039494923, -3.9607957468, + -28.2459062295, -78.4309884274, -45.1615660948, -56.8373512425, -14.9182469466, -46.6359981712, 10.2436473643, 49.6796044695, + -68.2156643693, -73.6736376702, -25.8482309017, 79.6432993680, 39.8430177404, -48.6865340771, -4.9554892261, -10.8103852199, + -163.6398049355, 34.8129987597, 43.1988001177, 4.6425367549, 71.5136740040, 5.7449295065, -129.5178610564, 23.2851316100, + -28.9856348679, 72.2878496468, 65.5641757637, -22.6995529120, 90.6678161988, 31.9503079809, -38.7957396135, -29.8167763909, + -127.0682245355, -114.5912946274, 95.8998971324, 14.6842186073, 38.6817470857, 53.4220170000, 30.9640386035, -8.7681524726, + 93.2374647164, 167.2548470938, -110.0113841742, 60.7832491969, -10.6378768861, -12.9541979766, 50.4311478762, 14.8581364205, + 36.2771855577, 16.0289680028, -27.1211553672, -27.6119525599, -64.3782858077, -30.6836783175, -11.3104575592, 46.6583470371, + 43.2576688462, 106.2483647125, 35.4221002374, 38.7051612461, 55.2640723227, -64.1159659536, 57.0032601941, -44.6269768244, + 53.7789820032, -157.3514759280, 9.5791816275, 6.2806945793, 18.6705185038, 153.1320561669, -5.5671006976, -3.2946321773, + -13.2024369589, -21.6449448269, -22.1412657716, 70.9673800953, -7.9864874901, 41.7239378937, 71.5984356144, 87.1584519164, + 71.0575050315, -38.5112900717, 41.0828370864, -97.7913314993, 24.9443056744, 71.6995496139, -116.3501231153, 67.3823850840, + 94.1851944844, -41.7993332022, 55.6783133892, 47.5180232694, -25.4261377746, -16.5909249978, -16.5035403522, -31.2504616568, + 38.1070466320, 0.3163573698, 36.1965564905, 54.8579811585, -54.0608838266, -112.2426667925, 184.8017345857, 49.4559933628, + 97.2753525540, -127.3976019425, 56.7945066844, 105.9924251837, -9.7156760373, 44.4969751065, -37.0888563276, -26.7522105798, + -40.8300149353, 52.5243354843, -19.8943377495, 51.1416695022, -70.0108248826, 15.6121585850, 32.5217684217, -90.1820508578, + 39.2513383879, -47.3412998909, -31.3055181623, -56.8173595829, -50.8924569276, -7.5435701646, 64.3413557990, 9.7281927789, + 48.9305305599, 56.5372975126, 26.7417330296, 89.0738343693, -48.5280725684, -31.0853481463, -9.6358615936, 51.4311918344, + -33.9718242925, -15.7470007951, 51.2850467492, -51.4187903682, 33.5815172911, -71.5483298410, -74.6635317137, -82.6284293355, + -19.3084129904, -58.4258965628, -7.7220084872, -50.0589600666, -35.4767663181, 113.1079148915, -10.8113655056, 6.6819361958, + -58.5734954218, -83.7627866065, 26.5302830531, -99.8288161852, 70.6577997609, 105.1602805436, -26.9709761883, 16.7715250364, + 100.4598899749, -12.8354110399, 31.2835111044, -28.1999286002, -71.8821977449, -43.8649368179, -24.4752744590, -13.8122643365, + -13.2937561135, 86.7641539982, -45.7159093571, -13.0092431337, 71.1728457692, -47.6143967182, -18.9549445122, -52.6530519413, + -36.3758751689, 95.3593012050, -13.8106918472, -47.9731072201, -42.5698690212, -33.2874699499, 74.6397905712, 13.2248699532, + 10.5705384630, 53.1572412508, 11.5799356215, 40.3743911825, -30.1315085582, -32.5536377528, -63.4740422506, -8.1108698232, + -39.7653559069, -61.9123876789, 30.2050339534, -13.4902607567, -49.0742542298, 88.5722862352, -22.0924973356, -43.2051228512, + 23.1418263846, -52.0531638851, 61.7042537346, 62.2206170738, 89.7321026525, 16.2048654039, -69.2890753423, 14.8548152449, + -44.7911045647, -2.5487807022, -25.2382987671, -73.1162478241, -6.5637044361, -62.4609072239, 50.2645328426, -127.1218373352, + 35.9901816641, -13.2427957988, -19.1139418128, 11.5763910792, 42.0967727508, 93.8373969941, 48.7578089767, 116.6192984420, + 29.2111912926, 58.1960409947, 45.8425638147, 72.1773323399, 83.8891643331, 17.1974768083, -78.1227071776, -76.1533486330, + -37.0312632710, 25.0291081414, -104.8734413579, 19.7434765416, -23.3082565679, -21.2852819234, -25.2235835223, -93.6817252275, + 2.7146982161, -17.4896953310, 71.2109780985, -59.2294931409, -84.0666862918, -65.3056520242, 120.9838686800, 74.4971556879, + -9.5684703908, 64.8377948685, -66.6770366247, 38.8265471508, -79.6623440265, -39.6171150046, 68.0022918215, 64.9078337860, + 19.6121887994, 7.2244101173, -23.1854400590, 30.4614578804, 46.9242283532, -1.0747268647, 49.2189640668, 44.6411673048, + 86.9687811173, 22.6744479392, -48.5360769344, -66.6164589196, 43.6822611836, 0.0803667092, 22.1251605426, 84.5472356977, + 23.3682917569, -119.0004161504, -77.5731290127, -8.1237991059, -9.8574787289, 8.0923731288, 11.6312746189, 48.8042209908, + -91.5385965138, -51.9417178439, -93.4017678039, -7.6902800177, 42.8038592146, 208.1745748115, -40.2269989314, 35.9946432857, + 14.8799963031, 72.5512530025, -33.4277806899, -3.2314305870, -66.9052809329, 99.7368956670, 19.5081727184, -29.1990516772, + 114.5317858084, -154.9703729745, -14.9584650353, 5.6179621219, 28.6224091068, 33.0426197666, 147.4892869040, -67.9739211942, + -71.7894315626, -107.3389637620, -95.5814122043, -16.2209528572, -32.6673756107, -24.6641235582, -96.2759765479, 42.9819639376, + -45.0775031344, 26.9177278735, 87.2353637167, 58.4214280318, -37.6862314706, -27.9660896146, -16.9115875649, -16.1061688951, + -28.9055343700, 58.1888376313, -38.1213943166, -4.7623621285, 33.9409953615, -85.9445074362, 3.1450686264, -88.4878703313, + -50.0848195592, -22.4167501243, 21.0397901669, 11.4240588629, -16.0956576256, 2.8322646297, -77.6952409905, 38.2576382396, + -53.6616605614, -26.4231916298, -26.3358464547, 81.4694985453, -50.3033670023, -8.2053965822, 19.9636273501, -10.4302918812, + 9.6629338686, 26.0903202845, -37.8068628176, 9.2638853986, -9.6752622225, -55.1704616516, -182.0875653530, -116.3887933434, + 8.5457908424, -29.0590636102, -52.1712423322, -84.2194156867, -17.3343644788, -69.9177944994, 98.4410912043, -5.8653773568, + 14.8287039959, -37.2315894188, -15.8744801467, 55.8855979582, 82.6374695897, -10.3491623457, -13.1871637112, -59.8321884846, + -13.6406794918, -90.9144246870, -39.5280425915, -21.9758399218, -21.0648164072, -37.2225695620, 179.7142651659, -1.6184261744, + -48.1631682332, 83.2309613815, 48.6367549372, -30.7160958486, -133.8419652482, 74.7583916606, 97.1026557281, 49.5481525536, + 33.9337592438, -48.6489706540, -74.5656495945, 11.2027589435, 2.2601440520, -26.1480067313, 14.1051697860, 104.3412840234, + -25.6567602627, 57.3314373931, 6.3330980799, -55.2666198655, -25.4971449454, 12.5333375030, 29.8117352747, -92.8414244156, + -143.2454500203, -7.5931354464, 1.8606525257, -9.6143470754, -56.0408726209, -26.0595448033, 37.1855765550, -21.2097936957, + 40.1996970371, -41.3351177032, 34.1834444638, -186.6269086563, -18.3614205839, -37.9357021641, 135.6670379673, 127.6586855975, + 23.6471207301, 73.4502163408, -73.9251876551, 47.5332209105, 50.1140713450, -5.8704801353, 12.9804536200, 46.7639885850, + -36.7458561449, -33.4506904080, 36.4941161678, 3.4199906571, -41.0407898239, -9.8181030415, 4.7245112428, 96.3687030689, + -28.2365241736, -17.4276379002, -65.7706653413, -96.5485126192, 46.4790636261, 32.1379379931, -70.2471563731, 52.3768573029, + 44.4162811009, -74.8951342613, 5.7318009676, -42.1108472837, -131.1371125092, 121.7221178589, 40.1216742680, 6.4128170610, + -32.2753329082, 36.3368525229, -30.2548033001, 72.6541502245, -33.4706909702, 15.8356670629, -50.4602392965, -4.4743341580, + 46.2418862356, 79.9973168669, -111.2430552953, -41.8285332332, 25.3359175319, 83.0841533978, -16.9581589718, -51.9200860092, + 77.9429675613, -100.4955466280, -16.9528387572, -63.4657485782, -14.2913689634, 20.8998480157, -98.7512394038, 175.0497111959, + 47.0357236193, 137.1821799965, 75.4859204931, 102.0896754000, -74.4319389528, 55.8710604661, 138.7844756707, -23.0214452064, + -44.0374225169, -39.5194006283, 17.6585042519, -83.7726310797, -40.9221184784, 66.2446785328, 61.9460848477, -26.5717761182, + 128.9173728445, -90.0154125585, 30.7220887905, 19.6211869212, 91.6137623259, 31.9401330791, -12.2054969481, -173.4012681649, + -37.8843684762, 2.3280971615, 58.8027265021, 39.6103768351, 45.9231885572, -21.2457868614, -56.1950724310, 93.8767608958, + -20.5075317720, 81.2860077414, -82.0982682957, -17.2313104276, -36.3367685204, 146.3298759474, 83.5645188769, -95.7871128855, + -41.4691805243, -4.4610514276, 76.4605569574, -18.7164073238, 60.5960801248, -55.1266248358, -49.3982202577, 163.4790300050, + 138.0264616472, -15.2636421738, 36.7895684788, 83.0702148363, -93.3437893057, 32.5989066039, -49.2049731278, 117.1479217209, + -35.4644848480, -44.5015630679, 31.3859706395, 5.8693717755, 17.3746859058, 9.9311131323, 6.1022018377, -121.9841205723, + 48.0645606148, -103.1127755426, 20.0433058006, -134.2922130039, 28.5016581997, 101.8535712259, 76.4518488086, -9.2802004844, + 78.1358057662, 3.3099138954, 69.8587685844, 110.6444273503, -59.6931547724, -51.7268303246, 64.0193271761, -15.1660919639, + 78.7207187414, -51.4776928138, 30.8703273062, 67.4488362333, -95.4561768870, -100.0161430296, 198.1825455394, 131.1359211305, + 3.8645077188, -19.1178912788, 30.3260202103, -19.7430200798, 12.7734912557, 74.1885333495, -67.8364659684, -80.8926661663, + 12.2720397333, -22.8440467871, -42.1377912025, 22.2591508655, -94.9559790816, 116.4053256024, 52.9759527067, 108.1630429012, + -82.6415576638, 107.0506710689, -32.4925050747, -134.7178668343, 125.0907581204, -33.0460380391, -37.8115604172, 13.4036941541, + 27.9798939995, -59.6965877877, 54.1339455110, 32.0538788400, 24.4020907468, -74.2815166253, 8.4464964158, -20.3601523468, + 28.5216426135, 54.3051140070, 91.5671757124, 44.5687804478, -50.8430812549, -15.1985800847, 72.6230011188, -63.3817304557, + 31.1651064018, 50.5057736622, -111.8897385947, -2.9491865484, 80.1135762676, -14.0696654619, 52.3521392147, 88.3353740728, + 87.0542702718, 44.9528879964, 24.2675410208, -47.3556425676, 23.6195853690, 61.7358141399, -39.8446197794, -28.6054825449, + -36.0836012134, -73.9089369029, 95.5989535672, 7.9458092374, 21.8693430561, -10.5751898940, -16.1045252653, 44.4127909167, + 18.0851707496, -46.7345019239, -92.6347568314, -15.6603448228, 39.6519674060, 29.9629332247, -24.9622443586, -47.2975561701, + -17.7780218654, 71.7346558516, 1.8999680118, -98.4624329314, 98.2614298645, 15.6787428700, 45.4912030123, 28.2495734475, + 65.7419427030, -99.5295634165, 27.2786047010, 77.8875001753, 16.3977450032, 10.2037888065, 60.8912178592, 82.1708628016, + 48.2506800969, -26.2756011209, -57.2019501999, -91.8180165526, -47.2336309942, -42.1121454516, 68.7279348832, 92.7832491188, + 17.6280339107, 6.7251426316, 25.0819097881, -59.7146158445, -65.8513175770, -41.0602910259, 4.5838916831, 38.8846775235, + 19.3473841098, -105.1434354654, -13.7765844991, 24.1616037866, 93.0893862826, -107.6082978084, -58.7977319447, 58.0759414185, + -89.7901093790, 16.1918835625, -37.2172665357, 123.6960140670, 114.2205895053, 8.7980887529, 22.1354877733, 52.2713979482, + 22.2246402930, 36.6257130653, 74.2884386832, 39.9288008601, 113.0416245079, 26.8047584467, 58.7266876251, -6.4680422666, + -26.7509331673, -38.6312732122, -145.0208923168, -35.9684264419, -117.5381191845, 29.8488196638, -51.1247043830, 112.6915937071, + 31.5277658506, -24.1454178026, 24.0572867542, -15.3632719912, -44.2556311042, 58.2449714174, -76.1363396817, 46.3749067777, + 3.4852275006, -104.6231553696, 30.1977700745, 7.0441446610, -10.0102536523, 120.6615291011, 188.0249410917, 44.3295887206, + -39.4106227621, -42.4924838463, -28.9316859978, 103.0113316106, 51.7061135184, -18.2169052015, 21.6066648209, 50.1453569033, + 12.7421867528, -8.1356008640, 75.2454422748, 64.8694058804, -161.7997182567, -17.1915039219, -41.2383269408, 0.8946812357, + 55.0533498639, 46.8242610223, -5.3780848566, -46.8156157192, 64.2205137708, -25.1479872711, -54.8298550608, 73.6823422266, + 41.9888520352, -83.9419623261, -41.0305214865, -47.4087035362, 33.2268582543, -38.7414663450, -104.9255474057, 38.2157988361, + -22.3790617016, -31.5426215850, 14.8891733573, -64.9019662116, -44.3044057867, -92.3281371013, 63.6669819235, -18.2425819417, + -49.5109487403, -64.0201431562, -70.3061633619, -147.3930233046, 128.8254864954, 7.6978217230, -56.3987238261, 95.5962971177, + 24.9319849141, -1.8305826630, 63.7414243665, -49.9852779582, -25.7389331291, 25.2700519583, 170.5603890165, 9.5266276922, + 13.5399442827, 0.7663023156, 144.5140143737, 75.6602313295, 44.5345480965, 35.8927901197, 59.9952333199, 64.3016125781, + 59.7518716703, 15.8739554628, 57.5686758914, 58.5866845774, 43.8356058096, 7.1335337346, 27.6439212874, -30.0398764928, + 6.2065364457, -79.6476847939, -80.1779260414, -52.2408711631, 9.9023027662, 10.3789070887, -46.6717275791, 57.2822267955, + 73.5763019279, -71.4639042142, -52.0323289026, -80.3692311543, 8.8431925427, -40.3750957204, 12.8573997402, -112.0129690473, + -67.5403575455, -4.9929337525, 131.9313839610, -108.2934624601, 17.2672219445, 48.9942839871, -90.7089806183, 114.9850344553, + 31.5988734490, 59.7636253519, -33.9764105756, 20.7915341567, 94.3558278877, 4.9570378129, 75.5601876581, 33.8799007373, + -90.7302419365, 1.0494275291, -33.5814817284, -50.4328011162, -52.6438122254, 10.3630633870, -90.7790260582, -60.4947106306, + 56.5127910083, 32.1019449106, -8.8885657127, 22.6481300860, -74.6992587301, -137.1086103933, -35.3402671515, 52.0032440119, + 14.9769109018, -23.0406615521, -41.8971596726, -77.3413472134, -46.9910623823, -107.4957490524, -86.8794002198, 52.2329975546, + 72.9424340427, -74.3244971184, 85.7023745145, 60.8778950641, -31.5903542844, -78.0533202133, -73.1733800101, 53.2034137779, + 83.0498994257, 30.2580271740, -56.1035163750, 16.6579677161, 0.2073439761, -5.7906867906, -66.8711603748, 74.0261467640, + -62.2989478643, 107.8399681550, 160.1626153730, -27.1263316346, -79.7784413411, -10.8403444789, -37.3887634955, 5.9808867714, + -10.1978150670, -53.9468869673, -38.2970373675, 16.3168988370, -1.0483342304, -63.6173233903, 87.0866029730, 26.3862156999, + -21.4053546455, -7.8216446996, 90.5994689064, 44.6928873902, -146.7075228500, -62.8122471300, -121.7119840134, -32.8992273432, + -11.9106565965, -104.6076313473, 127.3823687195, 2.4852952522, 8.9975686284, 45.5738431227, 16.8209391951, 26.7216521497, + -54.8776022226, -68.4194899925, 20.3925320149, 4.3453071650, 49.9988757708, -8.6636385971, 0.1191776713, -64.1528259747, + 16.0849193094, -24.1120788064, 40.7655203071, -23.7853262362, 91.6933164270, -54.3376676772, 69.7309190298, 113.1324293560, + 16.9278536871, 123.2439408123, 5.9934209089, -45.6409119369, 17.1842607385, 83.6522464227, -174.5484916836, -4.9414325022, + 52.8768375216, 15.6132102239, 41.1192572000, -81.3594721245, 28.8255333085, -2.0603766865, 6.4061712949, 82.1547586637, + -36.3679383103, -1.0390408940, -13.8483417281, 37.2231178393, -2.5777964710, -157.8382079085, -60.7910508762, 48.7258486830, + 33.1256641954, -54.6346845809, 88.2192196002, 39.9956402036, 3.2010617529, 88.1693658284, 11.7277451767, 32.7636165636, + -68.1591305748, 43.2699890762, 107.2828531104, -36.8225650893, 1.4407313695, 53.5742622795, 103.7597203839, -96.8481119045, + -70.2987605549, -55.2783713624, -6.9864094662, -40.3280834509, 16.8072891922, 24.3756993403, -84.6501745052, -45.3961429485, + -53.9237387431, 29.1708008262, 1.0498758638, 34.2610169651, -9.7905112911, -35.2443111357, 99.4574100554, -82.7243314274, + -12.3112078341, -13.4935295204, -65.0441169373, -1.5707942158, -8.0237289199, 49.5507868185, -13.4811149250, -3.9030733772, + -75.6220602476, -74.1596322041, -5.7789561939, 73.6177769297, -98.9485291892, 117.7192585235, -79.3791252579, 11.3447373614, + -24.5743979438, 33.7169431880, 39.8633765496, -149.5617929692, 141.9104918620, -55.0577810810, 37.2052313138, 6.4852281207, + -51.9122252169, -31.2592720321, -69.3547398856, -78.1122747852, 66.6338044220, 8.6865150501, -67.8354186666, -202.1226264943, + -31.1645341579, 18.2037364021, -64.8577486822, 32.5502423750, 26.0251882844, 5.0986012605, -47.2026094332, -13.9009556603, + 59.4152148554, 101.0702523560, -35.6013874662, 22.1677959258, -26.0857605492, 14.4754773923, -0.6780897798, -25.6530120006, + -25.4546641639, 35.7707567857, 24.5314489446, 20.0344481593, -18.3207572649, -9.7912924757, -11.9552594910, 106.8966283008, + 80.2653334386, -3.6056009570, 77.5441202535, 37.7136483336, -2.3165569778, -15.1111584239, -21.3047579337, 63.3629898072, + 15.4217847395, -48.6546027271, 33.3996963722, -87.5423526700, -18.8955709453, -85.0736444599, -55.2290313813, 37.6993014695, + -1.9420172920, 143.1251237972, -55.5771775185, -41.0289639463, -82.6515627688, 48.5420105013, 10.2288031648, -56.3379070490, + 20.0143954586, -84.8968512309, 127.0283241701, -79.6996444881, -52.6134879057, 22.0561680431, 60.7355377150, 15.4017379435, + -103.3924328801, 54.8459420743, -75.9157921311, -18.5478645340, -120.2337715192, 19.3119533190, 14.2354651926, 49.2411155276, + 178.0946722971, -75.1044338856, -17.7857687140, -44.5847020456, -90.1973261616, 21.4416495288, 51.9825060227, -66.7420817203, + 7.5764658958, -70.5144035274, -58.0645913437, -108.7601823595, 11.3207059592, -71.0204300166, -71.9141786835, -41.1119761277, + -63.1487461134, -7.1948924612, 37.4257273157, -0.3096640281, 22.3859391424, 37.4791977942, 4.7298794262, -33.2974745191, + 31.2867641674, -32.5753321154, 66.5419169580, -60.5202504180, 17.4192217276, -50.5317834280, 95.8748766870, -31.5464032969, + 44.7045552306, 64.5521928874, -23.1461700992, 118.1095509083, 35.1065388893, -27.9857316442, 8.2912382315, 39.7446781812, + 3.3485245256, 56.6810611812, -22.8994983441, 80.3970810489, 22.3086957726, 128.6454657339, 22.4798757743, 49.8362059423, + 22.4019441476, 27.1059712406, 11.4540686475, -10.0764491110, 28.4803668412, 94.7776130875, -36.8737987939, -88.8666428850, + 141.5495956917, -46.9343244046, -58.9586661150, 23.3890221338, 72.3692845286, -27.6356117882, -41.8318324842, 70.9559999727, + -8.0897813375, -78.2950183802, 87.8658917396, -70.5715383399, 22.1972033651, 47.8069266963, 131.7707915958, -23.8938128672, + -33.2047798206, -40.7583820499, 27.0405050078, 19.6445061622, -19.3891108700, -136.1942182249, 8.5255159178, -42.8234719503, + -70.4814202849, -41.0662321022, -9.3910777305, 136.7254609331, -6.7391967243, -68.4796734994, -27.6933664361, 118.5680907562, + 7.1623426945, 6.8386734240, 75.2481710418, 33.2280590090, 50.6011222647, -2.6551190091, -54.6429379954, -15.6441827245, + 34.8192824650, 41.1519964665, -95.5213521044, -7.1466152035, -23.1705143065, 21.8243235569, -26.6493944983, 44.3948925119, + -0.2695887637, -115.9753822388, 10.0551835964, 41.6343978371, 17.7354401036, 3.3862359071, -107.5692389700, 110.8538665943, + -77.0898864044, -18.5513096154, 87.7377015326, -89.7201205553, -21.4828890020, 12.6716787713, 71.2019960218, 37.7530110511, + -111.0886809644, 28.0083327042, 11.6412229475, -14.9061811373, 78.9633564364, -17.2424064978, 78.6411356878, 31.5888916445, + -52.2057754767, -51.8187552856, 12.8069170133, -44.4192811197, -29.6758641711, -39.2862559158, 90.7444415817, 9.9897923810, + -33.0089291278, -79.7506824464, 51.5840713006, -15.3414477161, 55.8773639416, 10.4014931469, -12.0825624913, 30.2487218486, + 13.4626458507, -41.6078761320, -99.0036616160, 97.2413199943, 16.2571104823, -106.6994082721, -42.5507290539, -30.6273488892, + -65.9180047092, -61.6996048814, 57.0455325157, 103.2653865169, 116.3758447306, -74.5041275207, -0.1164162789, -14.3978018054, + 38.0218224919, 127.8971402721, 5.4463615012, 78.8192543895, -25.6140607422, -9.2485898035, -48.8769533605, 34.5460968716, + -75.8820751325, 93.8969485430, -38.5976860109, 7.9177115766, -80.5122708885, 21.2658351542, 67.4252739338, 2.3783155124, + 83.9115322121, -75.0252790111, 37.9405478207, 14.4346316538, -109.9157163206, 108.9078208323, 15.7162891141, -82.1261022291, + -76.1782289525, 74.4747265412, -46.6029184986, -41.2456137340, -80.3895294383, -8.4118305522, -0.1933892651, -145.1576077775, + -15.4312649597, 39.2200199533, -13.6364330998, -25.8182203562, 48.1591475229, 125.4840761759, 15.9990051973, 76.3197750584, + -191.2988456723, 38.9117045838, -115.8653769258, 81.9245653626, -10.1602378212, 54.8635932256, -62.0258658391, 83.1033610875, + -4.8490223558, -54.6097329099, -10.9477363598, 33.0862207616, 52.7148056029, 35.4875411655, 49.1104822038, 55.9764111036, + 19.3458408685, 89.0606670761, -85.0457542002, -78.1726308870, 93.6580344148, -26.7125037520, 15.0835782513, 45.3860435621, + 12.4384130680, 70.5409358400, 9.8929034782, -23.4934005067, 40.6776169075, -65.7911681154, -167.1217168499, -19.4434798044, + 12.5047333259, -106.4886582913, -22.0096224479, -51.4306080664, 70.4101816964, 0.0684774882, -76.2887185579, 75.2064469835, + -63.0584107912, 78.4585282303, -20.2508456707, -55.6679838569, 27.4321350947, 84.1834097135, -10.3659243385, -48.4070302399, + 92.8062051508, -25.5124355326, -84.0473681678, 71.0714983360, 25.6083325312, -45.0808082818, -155.1967735998, 10.6420814804, + 151.0278845436, -44.2955308501, 29.5425559978, -113.6663161729, -36.5169042517, -72.3071551232, -26.8471044056, 15.6848246843, + -34.5750914935, -198.1775254215, 25.4131251136, -21.2604011481, -1.0414028296, -46.7191360308, 2.7446655943, 54.9295292750, + 92.4228624473, 54.8526054625, -58.0708705172, -17.5872514429, -107.1263606314, 3.8705217560, 8.9778481619, -6.0018700075, + 93.9938778953, 20.8072064757, 24.1862680085, -36.6869801034, 80.8573435056, 5.0571862502, 4.9644714449, 47.8862765669, + 35.1164783949, -43.2306708209, -70.4784884015, -22.9691864018, -13.9209248410, -47.9058355842, 69.2014224885, 36.4205028832, + -41.7969907806, 19.3910242176, 46.8411651043, -101.1964790621, 1.7651827600, 2.7058301870, -23.9427647032, -29.9388425668, + -85.3458953742, -28.9877302845, -56.3025916174, -20.8442568667, 52.2658233674, 16.2060641337, 4.4319659648, 114.0813888914, + -28.7002125175, 49.5308227691, -30.0766397744, -61.6828255791, -49.3247835301, -26.4413883089, 5.0971297500, -28.0554103014, + 42.0857897882, -47.9552784036, -42.7903198462, 87.8376670399, -140.5238322306, 101.5731331285, 52.2212327660, -22.4010751415, + 14.4300378085, -51.6886150508, 6.6829221172, 115.9640673493, 0.8066647921, 79.2442610587, -18.0322597688, -93.1043520771, + -72.1150120989, 87.2886742511, -25.4133998112, -7.4831361426, 33.0287073819, -23.1984191566, -23.8078728472, 59.7504642008, + -0.6923320155, -12.4892802407, 38.4436035475, 100.2867176437, -99.6305730687, -108.5810851604, 9.7451186318, -43.0333845061, + -101.8397764566, -50.5229450341, -23.5177624889, -64.5537003712, 174.8259413987, 80.6820828046, 156.0492701171, -28.0432391315, + 54.5458337882, -9.7039186394, 0.3967891057, 37.2171179706, 53.0918819026, 95.5734474731, -0.1572821866, 35.9295265728, + 52.6110638216, 65.4681244336, -58.8893064188, 33.3094740223, 23.7248112965, -86.1001662411, -124.2990486005, -53.0143407367, + 60.7137702328, 16.7099000008, -16.8984625777, 92.9154007512, 19.0020902188, -60.8943449371, 19.8803437206, -45.4933609435, + -37.9759751454, 38.9546342412, 112.6564725638, -20.6282048911, -82.6461566213, 33.1634895891, -14.6466202774, 70.8258934983, + 22.7763755890, -23.8551537513, 38.0027621248, 13.1891619540, -0.2512849813, -22.0294650280, -3.6017925014, -80.9408522816, + 2.1581228675, 35.0316749727, 1.4313916959, 7.6662501879, 95.6789578890, -25.3147779279, -11.1001968711, 133.3263412000, + 57.3919237887, -114.5247973399, 97.7159374781, -25.1589170064, -28.2795559691, -78.0626694271, -25.2625001068, 59.6669532190, + -24.8854138846, 15.9627092698, 52.0951356726, -49.4931272094, 32.2981549802, -45.2155042278, -117.7954359551, 71.9214384433, + -12.0100960200, -85.8922139632, 44.5277402755, 45.7283733108, 153.5133743833, -12.2908386291, -16.7857892861, -34.6184196532, + -56.8327470259, -5.4780874150, -38.8725168650, 4.6060525978, 20.3207039309, -3.0993047411, 10.1132085358, -37.8257661018, + -5.5665784625, -69.5263241776, -38.3990002707, 55.5634953442, 34.1515898646, 25.6046582443, 49.9096070185, 23.8082590350, + -59.5259871997, 53.0128767406, -14.6534382681, 25.3901141454, -20.2689398092, 112.6721308068, -44.3928586231, -46.9200544069, + -102.6597110918, -35.1087345365, -16.4476118027, -56.5493022087, -19.8752899545, 112.5790185345, 13.1594262867, -98.3712667207, + 84.7454129819, -32.0001239970, 33.2615003229, -70.2186017880, 129.5580075545, 14.3022334321, 53.5329352657, 165.1115533783, + 42.9337492453, 3.3467665656, 5.6916538476, 30.9878624742, 43.0083773411, 83.1082949362, -68.6733601131, 129.7158774740, + 0.9829430504, -73.5779156249, -0.2190628113, -66.4832285128, -18.1621332482, 59.5591274811, -47.9030207223, -33.0134331016, + 8.2663047608, 13.5843595697, -124.6750162116, -119.5553229429, 6.7914845141, 17.7380901732, -133.7630184698, 33.7185572623, + -31.1975924142, -55.1798482215, -72.6025491416, -65.3245960982, -8.7224630378, 27.6488501343, -79.6246723592, -12.1515699989, + 84.6626846949, -53.8044373764, -47.3237819756, 58.7153917563, 23.8284036126, 18.5922606945, -41.5094930442, 7.4798082503, + -117.3348631592, 28.0374584580, 17.7205965437, 37.6075060837, 10.5295050958, -10.2113391455, -25.4289536763, 80.7158011723, + 134.2497737713, 107.8649950212, -8.7918461736, -99.0628159937, -28.4975407702, -2.4658161692, -1.0354059017, 3.5152634039, + 34.3665501560, -87.6859371958, 33.3653060530, -45.7175591636, -65.4175088722, -39.9650581770, -57.8964432706, -74.5229831900, + 38.4192570282, -93.0015200930, 102.6189889638, -15.2156059788, 8.6020521359, -40.6649198594, 19.2140495475, 68.7122869639, + 43.8544891050, 31.8559705108, -56.5147934081, -76.4182242061, -20.7528009745, 122.9729619714, 19.3412487106, 119.2231188878, + -61.6916564137, 19.7466881922, 1.9628648319, -30.1476626231, 26.0368611826, -25.8750640673, 126.2461067518, -38.3759348959, + -21.1488548859, 9.5896772329, 60.6570721102, -27.1555851824, -82.6629073502, 104.2859535395, -17.1669088713, -104.6106452933, + -45.0398334945, 43.2080892320, -87.3425077484, 0.2033770682, -25.6876572199, 79.3659499889, 29.0973624285, -23.8554325099, + 25.8594825320, -65.7761031112, -3.5831773610, -7.5912426740, 98.1472561219, 13.1498139916, -13.6564623410, 56.9471294530, + 3.7663518315, -75.6123083481, 44.5806865445, -17.4609911479, -55.6387091480, 44.2177387420, 34.3752520512, 91.9930112408, + -102.4716789145, -40.4480770016, -14.7542706842, 80.9321121716, -67.9012532377, 74.2022584642, -39.2995936367, 95.8528505885, + 107.5716319470, 8.1259867727, 114.9534060173, 96.1080490303, -30.6405288182, 27.3131447051, -22.5066083621, -7.9447818944, + 25.6505787602, -67.1523588791, 65.7872616460, -3.3285011027, -1.1041085569, 74.8921702514, -25.1084011697, -9.7589516985, + 126.3993857146, -70.7299876677, -22.4069284847, 15.4150555050, 6.0494312782, 14.7172132463, -36.2348351724, -63.4858079910, + 8.2207526905, -101.4967633400, 12.1832438786, 49.7125534112, -99.3127122046, 49.9528617888, -7.3125598688, -22.6006580462, + -31.8424104370, 18.8121241410, -89.2005207726, -89.5613310067, 37.7746014303, -33.8940703850, 98.1050260145, 132.6754622940, + 91.4832076657, 48.9724771421, -52.3241324047, 73.9850811745, -139.5294058433, -14.1985477071, 10.6320943394, 32.9842589505, + -117.2355637537, -149.0942826923, 118.8257377105, 78.6561766800, 1.8467003036, 76.7457523519, 35.0575934280, 35.0405067972, + 46.3433191288, 51.5391456892, 43.1210412216, 21.6828221089, -24.7058117089, -83.9863281328, 7.1502359525, -66.4432335170, + -11.8942947461, 27.6420249691, 101.5285396899, -168.7093966612, 38.1892453170, 55.9668521894, 64.4854368465, -32.3167099392, + -37.5824582463, -25.5064561372, 107.2513163415, 9.6344685960, -44.9269370404, 10.4288908869, 46.7640176210, 33.7300219820, + 19.9212664361, 70.0213390428, -62.5237740415, -81.5465118244, -44.0793815204, 92.2566857417, -51.2000490212, 6.0091571611, + 30.8037109068, -44.7595662927, -69.6108606342, 64.6862483343, 33.1742048387, 55.9059849044, 66.4985799238, -48.2816133661, + -22.7185185172, -114.1511261421, 147.5147842854, 9.9781895463, 8.0732325157, -35.8047978931, 75.9079000901, -6.3144641143, + 13.1307658403, 17.7593379387, -68.0746602967, 81.4962779846, -21.2130737883, 4.1881456029, -53.3976620104, 73.0143978370, + -131.1048524173, -34.4396004841, -48.7367342675, 97.0896245872, -153.8743591626, 146.4347629539, -23.2984615872, 62.8412359714, + 12.5390587557, -3.5600971161, -6.8863206565, -43.5270424219, 32.9707655033, -103.0889331877, -64.0535042805, 106.9215904598, + -46.9078727795, -18.2192480137, -8.6225312780, -75.0230233110, 33.5402016456, 63.6373276750, -35.3286634556, -9.7322691960, + -104.9070709198, -44.8063768563, -10.2396474262, -141.5682333490, -41.9856066191, -64.5568181205, -105.7644577258, -34.3266130311, + 18.7442551407, -6.1736131415, -25.1300038952, 45.1470563965, 74.1676313724, -21.5064254542, 70.6267797692, 54.4904113618, + -35.0016926163, -36.8626539144, -36.1085281705, 126.4456731006, -53.4352000664, -42.3833008015, 80.0205785607, -5.8395042605, + -3.7163929006, 99.0418697430, 67.5450923850, -71.2740732169, -57.7639750215, 28.3495782004, -14.9114371149, 68.2395578146, + 19.9391412722, 0.3981730821, -67.6429500835, 99.3355729015, 16.5267218873, -63.2226829304, -18.9357631878, -2.8614372915, + 181.1332468568, 34.7347222636, -16.1060495743, -2.8148621786, -45.8170675798, 43.3943251920, 28.6117124005, -33.2361768688, + -38.5248849741, 49.6677439095, -220.2210251040, 39.4305879349, 66.5483442468, -53.8217192052, 67.6757901350, 33.4240885070, + 85.1809128375, 14.6803329701, -35.7116442076, -45.9462851452, 142.0722968061, 7.3538820438, -74.1993826074, -47.7693348567, + -3.3338017336, 41.8589920225, -27.7802513358, 81.0798842587, -35.2219569758, -22.2714108513, 20.5772883573, 68.4758687172, + 51.7089964364, 25.7997568352, -75.1742154071, 50.1290455164, 14.2169709710, 115.3455403147, 3.0734091132, -24.0080167664, + -30.0430862767, -85.1846499745, 19.4251899965, 66.7660313085, 10.4964191964, 191.8810766140, 44.1684279713, 75.7858859863, + 19.2241630741, -16.1074277656, 30.9051369625, -103.4147225746, -9.9194221597, -13.0669809072, -14.3302540445, 49.1519159556, + -27.2523237365, 127.6868804216, -85.5747904513, -40.1209192492, 178.0522707351, -73.6864713410, -36.6342055327, -99.8126854419, + -41.0696248653, 42.1245867015, -4.3161823048, -13.2747008746, 119.6002869940, -17.1335931288, 62.5993425061, 28.9992320778, + -4.5368180858, 1.2779053761, 27.7084888678, 34.8899603537, -30.6048794059, -93.8465401416, 3.3778313360, 13.8864217937, + -62.3784185879, 27.6165516418, 6.1885364328, -45.2772604479, -56.8928574665, -7.8629078173, 47.5072063672, -47.7279779449, + 116.3659358841, -108.7063603401, 6.8435296791, -4.2310899521, -48.8520623760, -42.6788172675, 28.7598264712, -45.5725981159, + 5.3364646966, -8.8259790870, 53.5478850699, -93.0251963014, 37.5833785601, -5.7207089841, -36.3899380994, 21.9593949993, + 27.8919793663, 50.0242670536, 38.7060750441, 13.4383538753, 24.3284938604, -66.6706972814, -75.0556788531, 46.8080800007, + -76.7685518979, -110.1823907916, 117.3556114385, -11.8794346783, -100.5931552045, -81.1814329321, -11.1946927034, 65.9117165560, + -35.0871947675, 68.9890931402, -10.8170265109, -76.6397320929, 40.0628004769, -13.8876229441, -47.6413458333, -82.9301597006, + 35.3601089866, -27.9439892787, 93.1557477015, -43.0973522277, -28.5635146727, -12.8419650369, -19.2552737753, -104.4730738934, + 51.2133027222, -80.4713372457, 82.8904666296, -32.8693411980, -55.1514350588, -32.3215790447, 15.3586714150, 56.6281953096, + -4.1845768663, -21.6039139687, 37.2300232632, 41.1966104813, -18.1197213904, -43.3281929812, -39.4358705806, -68.0037577582, + 102.7052778200, 1.1074295163, 148.3224324741, -139.1640107475, -33.1782275394, -49.4813361135, 33.6935341991, 57.7540768190, + -50.1484966873, 25.5452659987, -58.4535765464, -124.3028152080, 46.5749355946, 88.3984919306, 18.6343901041, 27.7237147347, + 7.4621558601, -45.2696342528, 6.2181991419, -124.4793150492, -34.3600196858, -17.2893599431, 10.3880081085, -34.6584762030, + 80.4621681009, 42.6698890316, 41.0028635312, 40.4584805162, 12.2993857558, -2.3438124814, -49.4434262439, 67.7382058590, + -172.5728037457, 78.5681808033, 93.0200717559, -34.3893038739, 25.4332764674, -0.3084790746, -47.0942986345, 67.8054627172, + 122.2738316110, -84.4716788862, -15.1596922578, 73.4104827953, -26.5231401219, 53.5433793756, 121.1802722337, -24.9087077008, + 65.6955157778, -100.0325133938, -5.4645525511, 38.8338919462, 38.6764256003, 7.4857563167, -84.0517801108, -38.0837770598, + -35.8795970303, 42.8800471728, 166.4026567891, -45.2596493921, 88.1539836076, -84.1569136898, -44.8705239205, -112.3135915515, + 76.9816499152, 53.5768624176, -106.3408650991, -17.9979586956, 81.7718580719, 144.1648782825, 45.2239065385, -50.2094826104, + -14.6605194110, 57.1970152560, -23.4826391767, -27.1562674435, 110.9001894435, 20.1915788307, 12.1467090660, 16.7983072789, + -34.1257273005, 129.1575417206, 71.4391384766, 32.9596044485, -41.1052127849, -48.0458686558, 0.8731114023, -34.4439480200, + 29.9076993320, 68.5240097999, 78.8047480081, 10.3252970915, 0.3515809390, 73.8823954039, 44.2008862678, 72.6737200450, + -13.3069689810, -25.8971947295, 16.9120909673, 53.2843809510, 49.1074875555, -68.1235965933, 13.6903318056, -14.7046510890, + 1.6746416299, -108.5007545621, -83.0295464360, -3.7524687555, -14.4088682542, -138.1935697707, -19.3679003715, 38.9142288940, + 15.4764570005, -2.9192486908, 43.9598275111, -34.5312517096, 35.8385011650, 4.4981476232, -1.4454488029, 71.1184852411, + 41.7476890934, 37.3368072067, 57.4916368307, -32.2735282446, -27.5080391474, 95.6899861001, 3.3351685514, -111.9822940053, + -12.5463248694, 39.8668835259, -14.9822708781, 66.9305141224, -197.7731587893, 27.4387742251, -25.6710982597, 13.5207634746, + 50.2848552534, -30.0418256053, -14.1615451430, 68.0658302876, -62.0642327357, 4.6615575342, -26.7572433532, 11.5079596851, + -57.9473530742, -26.1405191819, 70.4111692091, -95.7407842078, 11.2517762488, 100.2275069926, 85.3653529140, -24.6494053691, + 123.2413542720, 21.3040690490, -192.3747625981, 215.7057282840, -29.9835524152, -44.6302014167, -66.7559203920, 25.3479943282, + 126.6443711753, -36.7355336011, 29.0095532019, -73.2298015066, -5.8223869363, 11.9451128557, -17.3486371102, 50.0400958000, + 74.7145985867, -5.6976135921, -73.1829497279, -41.0455578170, -3.6001825808, 87.1662509692, -39.1602156793, -41.5727119025, + -18.2071856447, -3.5383471563, 28.3732842092, -39.9931298054, -100.6902365532, 130.2869328357, 3.2473773399, 16.8387727072, + 62.0055283576, 97.3165730637, -40.8530624130, -12.0491532592, 88.5164060609, 71.9344891420, -69.7440181255, -51.2866033193, + -18.4687017548, 55.7346964760, 4.4872782938, -6.8942183136, 8.4263132246, 18.9149616636, 58.8710265459, -17.7415034047, + 5.2927869482, -20.1947447871, -36.6005304743, -67.2193634013, -72.8315856033, 139.7216799221, -2.1966369437, 83.5189402317, + 56.0625496338, 57.0100118287, -9.0542670182, 58.3126231383, -27.9316577822, -125.8146267036, 77.1179593561, 99.1690581411, + 7.9703321651, 77.3501770612, 32.2815633360, -22.9643212257, -19.8653554993, 55.4837678464, 10.8929872542, -1.2452363726, + 83.8477026208, -88.9116003335, -44.6537617432, 11.0099195187, -33.7736999447, 44.2766753802, -27.9436876110, 16.3088473703, + 45.6564921145, 18.9199921114, 77.9125802822, 11.2795611793, 42.8571148149, 32.4846418196, -2.4014655924, 38.0598657284, + 86.5222537258, -3.1333316838, 11.9141807475, -2.4712869557, 47.8938116812, 35.4899843246, 42.7527497689, -31.3225362175, + -6.6842304948, -133.5691427053, -58.7043550030, 73.3503470631, -21.8739658759, 70.3809855428, 54.6113598087, 9.7384709498, + -141.2343505501, 27.9788413890, -11.7574685128, 43.1029141674, -52.0045609619, -83.4803133516, -57.2548505744, 52.8114424452, + -30.3458066567, 39.2081027670, -49.8609769923, 68.8871987820, 45.2005862545, 21.6377482234, -9.7576398020, 6.4878505019, + 32.1853134925, -25.1448500950, -67.2234044003, 103.2446765175, 80.2584971166, -68.8710032588, -4.2141933840, 23.7223935599, + -35.1939439880, 63.5237841071, -34.7833780059, 74.4175406287, 83.0373073374, -28.9674699605, -55.2233708526, 64.2239365944, + 6.0025041292, -22.2149197781, 29.1954442931, -35.5058495139, -76.9452133862, 34.6912996871, -51.1833830895, -49.5201882461, + -7.6144484864, 116.8549382108, -51.5005710672, -20.6783396225, -97.1232859994, -6.8466290384, 59.0410141864, -58.4613374526, + 74.8248237895, 75.2714612487, 23.1797286361, -2.7866665487, 56.4240759131, 60.2417537402, -73.0762506733, -136.8520754748, + 27.3836498800, -29.4294016791, 58.2863141991, -15.7937240880, 12.9792729458, -28.5369095369, -179.3559659693, -99.4879434608, + -61.2402838269, -24.4763496292, -22.6643525306, 24.4590321501, 98.4299041736, -4.5624798871, -59.3191765161, 139.6951240672, + 27.1672202072, -70.9192843433, -18.1408458038, -71.0174628677, -94.0725395768, 36.1985844031, -3.4636448040, -39.1453082944, + 40.5244522827, -70.0489070024, -63.9181488122, -4.7099187837, -33.0844286599, 31.8161456785, 10.7843286816, 10.6387816259, + -76.2043252282, 57.0254136124, 151.4166547223, -50.6728456416, -82.4408455004, -55.4932097322, 15.9101565878, 15.2777050730, + 25.0235583008, 44.4425994137, 36.1343164402, -24.3058262644, 17.6630395266, -62.6364549232, -40.1045046999, -3.8451609954, + -107.1141779059, -50.7347331775, 90.5704587068, -59.5674315899, -23.9371281478, -59.3738147851, -29.5056040676, 26.2990433281, + -33.2953407976, -92.2663237623, -25.5442696217, -81.4532880743, 42.7268859073, 75.7986045911, -31.6772573595, 86.8684653590, + -61.5786934151, 32.6176822340, -23.2321244436, 64.9301578846, -6.9691761031, -51.6553861957, -35.7877314260, -41.7444743167, + 108.3757802905, -29.4164640263, -18.4714648512, -82.4131988957, -52.9499171074, -35.7687451877, -80.5212521683, 40.1558185933, + 80.9139882507, 0.4170638335, -52.4487435334, -69.0227900586, 55.0806458770, 120.0318572894, -11.5435935376, -19.2791170530, + -3.0257623065, 99.3958103659, -19.4539047939, -54.6600691116, 0.3603986276, 9.7863628822, -6.2358897021, -17.1143829423, + 7.9650683489, -27.0465697723, -45.9436029022, -36.3352947671, 138.6511673472, 47.8115852675, -10.9612291181, 3.6500932948, + -19.3477824988, 28.7386285394, 36.0065971791, -43.0822654618, -43.9342369010, -32.1210042559, -70.4441432492, -94.9421856551, + -120.0449164046, -65.9803176675, -55.4329926958, -19.2914305328, -89.4078846739, -30.1962221428, 61.2293835442, 93.7229961578, + -8.3020564344, -6.8386266801, 21.4975406760, -15.0903918291, 94.1044891682, -57.6380884034, 16.2327931770, 1.7957525957, + 74.7073719610, 26.8908104028, 76.5155513347, -9.6822139478, -8.0655893270, -48.1277441855, 9.8408952157, -58.8121626519, + -80.9751650730, -48.3302191201, -27.8207839032, -46.1625778067, -33.5567739103, -109.4477338693, -168.5366005131, 156.7874587017, + 8.5940307118, -21.7826451231, 12.4113841726, 86.7850811554, -77.1019195511, 32.3109085681, 86.8849726762, -41.2571797820, + 19.6006773321, 31.2507123002, 41.8106047980, 101.5445768198, 51.5335715773, -185.1354355374, -11.0825031251, -20.9631685642, + 111.1640505949, 162.0618916128, 3.4498453592, 44.3198102843, 0.3505982148, 21.3783009799, 24.6853218910, -20.3399016930, + 59.5923416012, 79.4334110932, -78.7723219668, -47.0670061218, -128.3114982420, 92.4340029556, 69.1584534808, 114.9437583487, + -64.6124706594, -10.2486262273, -1.6622261589, 50.9747480555, -8.1203432808, 32.4414442459, 84.9091411511, -17.9846748341, + -14.7172591486, -27.4203006303, 167.1594042893, -25.3372000386, -27.9888042652, -3.6956600039, 117.9111608126, -25.4132038904, + -42.2923300579, -95.1602974120, 19.2625367900, -15.8766055664, -8.8117613783, 1.1964763941, -111.4791843369, 81.5745053342, + 8.7527287102, 34.5972180603, 83.9461794412, 50.2350993915, -19.7720255327, 53.8516694944, -104.4119088056, 30.4513918056, + -62.7649123620, -29.9513577664, 7.5719075796, 61.4944149393, 70.5737863978, -40.0358428522, -17.3629194898, -10.7304848224, + -60.1358805635, 46.5402792333, -77.1330673251, -86.7606311649, 22.2000151841, -33.7006112473, -139.9917432329, 138.1567785372, + 18.7396823616, 28.7669927272, 28.4680008506, 7.6199316893, 121.9175024680, 32.1111318802, -58.2808504609, -30.6563801124, + 44.2365370915, -83.4728239003, 64.0531120026, 128.0019381122, -40.3205961091, -62.8035436979, -15.6689887241, -6.6975189783, + -46.1591606362, -42.4253060115, -71.6473279718, -75.5337463898, 87.5058573621, -66.6145644703, 87.4635891068, 123.2852237793, + -0.9887550633, -9.6307226422, -67.4478350330, -86.5892204275, -79.0537798176, -107.7863332665, -8.8330234138, 38.9605563706, + 15.3133829507, -54.4231514572, 26.7406100788, 48.7962706395, 27.1443310148, -2.7894277223, 7.1469114703, -57.1657209995, + -90.4215183139, 76.7797176290, -19.2239853483, -26.6041739391, 139.0298606143, -36.8837362822, -57.7952841108, -135.9897057237, + 4.3453829113, -5.1660378716, -58.7046205842, 58.4176557979, -120.5866252228, 34.2409281832, 105.6219016158, -28.5323871865, + 11.0598518159, -26.3069115094, 87.6681723683, 70.9393661419, 54.7982850455, 4.0477327154, -89.5568838538, -32.8993562613, + -45.6708773935, -52.9428269719, 14.4126898406, 39.2142079784, -92.9447367684, -23.6977408094, 8.2507547267, 77.1071852874, + 24.1675316234, -159.7349628761, -13.9551749672, -67.9761692092, -30.0410317845, -24.6060572570, 52.6662467162, 53.1957816963, + 16.7992222346, 51.7621999618, -9.2959681635, -22.0395789118, 63.9887836127, -15.4794522124, -59.9041019732, 0.5489176194, + 78.6395685166, 134.5366929272, -6.8712023878, -25.4182816023, -94.3014920612, -120.7349462621, 15.0267811895, 64.1156824538, + 72.0730568718, 36.1969392849, 37.8409183719, 23.2904067106, -65.2310984397, -174.2644489990, -19.2228520790, 27.4717232382, + -59.1645079992, -37.9473607579, 49.8799507321, -79.0510884528, -28.3803465367, 20.3721781567, -0.4261835910, -35.8489167205, + 105.4583901558, 59.5722685004, -61.0197468314, 31.9348090719, -71.9443219028, 58.1935525762, 24.2368907755, 11.3281193558, + 73.7442066031, -58.2463274873, 62.2364089748, -22.1662416753, 80.8054311590, 1.1123457543, 65.0742762981, 34.9247990206, + 104.0897515469, -17.1726872127, -55.1967923359, -17.3070263921, -113.2466807440, -34.0273063199, 6.0065175641, -73.2050951521, + -46.9298900117, 42.5522795079, 89.6038769626, -13.3758161339, 20.0379230047, 44.3053936382, 38.7871513797, -96.5643124661, + -164.2750976118, -37.6742328774, -20.7444978754, -57.5075374112, -82.3747950875, -148.0525559565, 23.1385046849, 6.3810748790, + 26.2079771260, -76.0359611120, 49.8590173195, -55.6975098542, 63.1577456002, 131.5982420723, 46.7778921481, -60.9806982634, + 71.7495044841, 4.3127212188, -17.6552774593, -32.8038637189, -77.8751385740, -38.0621029989, -10.6340276560, 16.6596173712, + -67.3032141305, -8.7994716202, 50.9412272541, 49.9717453353, -43.5703597564, -49.6853674924, -95.7205166501, 40.8765465419, + 14.2287448407, -27.0614166095, 38.0714114583, -35.8412172130, -78.5197707657, -25.6825367235, -0.3120778923, -13.1591053910, + -13.3423425539, -88.8689993653, -141.9490353220, 15.3348435554, -1.2351271212, -12.5689032236, 63.2692606259, 92.6940600989, + 30.9761753348, -14.6354581107, 50.0664499041, 22.2230304376, -128.4011635209, 26.1869851104, 8.3304256738, -46.1344839419, + 68.3461812478, 143.4759863425, 163.6742650341, 55.1856555010, -60.1365810845, 74.3895957960, 40.2227984754, -11.7394255168, + 55.5453683738, 15.9202002202, -113.1213822368, -85.7280046039, -39.7263088573, -2.5339105246, 41.0492866970, 45.3079876954, + -99.6701239491, -29.6980232319, 18.5340063985, 51.1922973890, -79.7372970167, -13.2393250851, 14.7419728226, -4.8211133780, + -35.5172595564, 99.3966537203, 20.0590181900, -12.1081446475, -61.9594867060, -72.2256752476, -13.2936631274, 128.5345002108, + -71.9401693778, 31.6533870911, 50.8594991278, 25.1808453324, -33.5538293275, -42.3935228996, -20.8053274690, 16.2131527996, + 118.9172555234, 89.5930952748, -65.8274795934, 47.3384633282, 122.5406901256, -66.7549348343, -54.9185037426, -68.6601805746, + 34.4675543582, 104.9323617738, -57.0880010038, -43.1248502597, -2.0601370211, 44.1682882967, -89.1023577428, -35.5506312941, + -10.5170036504, 9.6779403375, 78.9291026934, -31.5855420521, 92.7949646880, 31.3559964123, 12.3617000392, 69.2326522660, + 3.9119449943, -36.5330788106, -44.5936841393, 45.7052258609, 10.6224387668, -24.1159570162, -21.0651270325, -84.0415379963, + -130.5857682422, 13.6064059568, -33.6699927959, -26.0082360265, 29.6219265142, -47.8318612795, 19.0742065634, -52.3410098996, + 32.2488186667, 8.7112925773, 68.7336792115, 23.7944448682, 99.9050365463, 8.6093548114, 59.7174217811, 23.0796589837, + -113.0722961466, 3.5971633707, -6.7890993972, 30.6764504710, -41.1295367209, -24.9164165484, 99.2386401122, 113.8333026527, + -38.9562599796, -55.4108562109, -94.4601804558, -31.7511549793, 200.3462283262, 12.7517487160, -42.3353937717, -51.1991446233, + 78.8520856510, 20.4131030912, 21.8102532347, -51.7944815361, -21.2191019005, 33.8300001131, 135.8377663961, -31.0221091170, + 65.7730407411, 82.5117419278, 27.7816244812, -10.6724454248, 26.6179164033, 64.9214169340, 44.6475686302, -29.0683019634, + 2.0965746914, -10.0085359932, -29.9021362947, -38.5046703557, -23.5486473509, -44.4560504617, 7.4417079380, 47.2393973843, + 37.7344798725, -13.6323296763, -28.2713540400, -12.2494841889, -113.6616109440, -4.4061813255, -84.4155850685, 18.2000114801, + -37.4375420019, -15.0025190330, 33.1826857536, -7.7672966949, -41.8570537108, -61.9447815201, -20.5430470077, 42.1225812423, + -4.9372231166, 80.1718433860, -21.7502429381, -107.1994683407, 39.0450370860, -13.9605768571, 57.8271065756, 100.7288025395, + 106.0257089013, -94.5099462535, -52.2425831475, 3.4251117300, 37.1163293092, 20.3088713026, 27.9957748777, 55.5881357120, + -49.9425573612, -74.3122437274, -45.4384442770, 28.0519415044, -57.3995353506, -34.0343398092, 39.4842857378, -29.4934441942, + -42.2931922612, 75.5085698437, -9.1579964746, -88.0001960638, 32.2921191297, 130.2295801645, -77.3690707106, -26.5699179687, + -98.7746128367, 15.1111986863, 84.2856839075, -91.3321816766, 75.0539365102, -22.9577135979, -58.2687890669, -16.4158023440, + -143.1190919220, 45.6864012367, -148.7549620241, -87.1075640764, -26.5968533502, -69.7944158144, -34.2978456494, 35.0769663698, + 4.1465107386, 69.0864439105, 22.4789950234, -48.0182401768, -14.5783104039, -61.0550243844, -4.2380948973, -194.8804104528, + 123.0819765947, 48.2017401505, 78.9508457466, -99.9736614294, 32.8340209984, -1.0245301508, -17.0041736706, 35.4641249127, + -33.3575407148, 192.9072183682, -42.9604868802, -51.0374996711, 77.1464797096, 66.0548981845, -61.4282764621, -114.3126571027, + 21.1118181552, 85.5335633765, 27.8488718530, -62.6421354515, -57.3557048619, 41.6670106942, 16.8928119140, -40.2432649132, + 0.6390713008, -10.1237727904, 52.7534146685, 2.9801643945, -11.3804175086, 119.2039503951, 46.6809821778, 84.8768259311, + 29.9865105951, 57.8288066379, 107.2625212828, 28.1456885969, -120.3755566725, -17.3802551503, -40.0564653651, 56.8407045846, + 1.6793816918, -109.5072716396, -52.8897837730, 85.9453300669, -20.0298903469, 52.5871200627, 13.0362762617, 92.2325099999, + -6.5198193020, -83.9036654607, 58.5211535567, 81.1131330707, 57.7324249784, 126.0368845782, -79.8586002513, -127.7584493863, + 64.8736188900, -10.6521288269, -0.9851623286, -92.3945133485, 7.5244215841, 40.5886593287, 18.6445609457, 19.1117310556, + 26.5640714899, 22.8091685027, 94.3470412324, 61.6764800801, 10.8760679684, -7.9240673383, 12.5919458396, 85.0254983280, + -15.7186492832, 30.3331627482, -136.2555384486, 14.2342767573, -52.2232864172, -49.0105238845, 16.4028777072, 13.1934114315, + 67.2005286948, -11.5431941527, -126.8761059118, 28.4325197274, -5.2730565073, -154.2913406142, 83.8362133106, -13.0557850235, + -24.0425722731, -9.3049739156, -91.4408491189, 38.7967852392, -54.4364475655, -50.1728478153, -91.7628978624, -92.4046791871, + 72.6594194204, 36.9149973552, -89.5520370642, -73.4541912166, -83.1026853287, 55.8083893384, -11.3360468605, 8.0892870502, + 21.3963536134, -27.2804196146, -86.1680209134, 11.1581691823, -68.2490961721, 63.5960852067, -40.1782672381, -50.7929323122, + 2.4820154810, 35.6921504427, -75.6795637705, 8.6054661804, -31.1168448045, 109.0955889455, -76.2488069978, 5.0199927782, + 37.8749455521, 5.6982241556, 27.3294929004, -120.2473221866, 7.8826650171, 111.0369524326, -43.8497436507, -66.7312430666, + 97.7440071817, 49.1570048378, -117.8025876335, 168.0477524482, -55.9600221068, 11.1068434425, 14.0513599858, -47.4087780504, + 100.4504374216, 6.1074714956, 53.7678384486, 24.4635321166, -6.0835375669, -64.3592936645, -25.7780083698, -83.3530662624, + -124.9544432106, 37.5615380015, -19.2986773913, -110.0015552689, 121.7589202263, 4.3256928319, -101.6571157133, 85.6785418597, + 16.0474362836, -31.9024530060, -52.6323741801, -3.4440544641, 77.7351607744, -10.1741553840, 48.3997106271, 1.5020725442, + -0.2257709330, 68.9623795901, 9.4286729097, -27.6379770488, -3.9912724152, 44.9954087833, -18.7057514605, -14.7638693232, + -1.7397189655, 68.2217569488, 63.3439223434, 38.9512814941, -25.6642624084, 54.1881119719, -92.4999870174, -11.5788876807, + 69.0279357511, 55.8205676574, -101.8852049100, 30.7429453237, -58.7382928803, 89.3969596003, -44.8903243228, 2.0422419096, + 41.1330103123, -88.6692130110, 25.4298182542, 0.8899898304, -53.5428328048, -11.5755725623, -28.6132997670, -13.0337245663, + 52.8092078154, 0.0517964686, -138.4959804685, 31.6788581756, -16.6154597478, 156.3340569922, 93.3010192905, 32.6407669098, + 112.1297440517, -35.7144834638, 6.5534121327, 128.2382195529, 56.9609192462, -52.8328776011, -65.7950928061, -13.3541979410, + 34.2814367341, 26.0764152312, 52.6477198183, -121.6672795964, 53.8959085384, -64.8464505733, -6.6989481273, -164.9991018529, + -12.9977296783, 92.2198340788, -58.9488062177, -17.3136354080, -15.0065268104, 82.2346850297, -52.0081326057, -31.8754548129, + -36.3987954967, 53.0154983421, 27.4015508471, 32.8268124997, 113.6916804444, 27.8095494681, -55.1665416696, -16.4156645469, + -42.1439424759, 38.5634363918, -64.9312441199, 8.3884871895, 32.9516167667, -0.9395063314, 58.4852381959, 101.7397916741, + -104.2729685077, -14.9331020781, 64.4379817410, -5.6149495442, -69.4590669042, 128.5957740501, 61.9917796337, 0.5819416032, + -69.7790071374, -1.0381159167, 20.1469541660, 13.3351412916, -104.5227876095, 77.5294242919, 38.0641940199, -56.7585742367, + -9.1765854459, 40.3713276531, 72.6358559436, -14.4449566608, 40.7675499413, -93.5568526062, 55.8238199978, -57.5895140577, + -82.1737195067, 14.7561780278, -155.1331660454, -3.4741158421, -90.9790829737, -67.6576031648, 58.4505812875, -127.2647404391, + -52.6551154593, 21.5600272148, 77.4232312163, -100.1093952602, 50.2042564606, 11.9885332900, 34.2641380301, -51.6644779651, + -14.4960161445, 67.8496081597, 25.8195812544, -38.8690931971, -116.1556251224, -68.6610388123, 64.4060064748, -4.5039590319, + 45.4866635009, 60.6472857766, 121.0539185194, 4.8340889914, -37.3668396220, -52.4747123096, 7.6362446201, -39.8862759852, + 8.0139163506, -19.7768070929, 55.9705429761, -77.6639159836, -9.0747973730, 87.1299271010, -56.0307413158, 22.0261066362, + -21.4877846313, 73.7508019333, 90.2727567859, -31.8064851485, 35.5698971534, -123.1337229178, -115.6888113061, 40.8859379019, + -45.9826093754, -55.6481101801, -131.3553753176, 30.0527360996, 21.6632646479, 98.0105924807, -39.4117175619, -101.5958309784, + 2.4560883180, 47.0714688572, -30.5516644873, -123.2193558202, -81.2276105808, -35.2333787774, 131.7553150138, 74.1337100485, + -111.0162621392, -50.1520236082, -176.7180780270, 43.6099370000, -99.0730647751, 100.6783161314, 1.5420581129, 2.5889162904, + 97.2407277690, 5.5204254866, 72.0939017458, -100.0077732933, 30.1572971400, 19.1994437619, -83.8095901131, -67.5983524523, + 75.2270686194, 80.9252084407, 42.4611462166, -75.6376932185, -7.5820680566, -47.2137370820, 13.3547714942, -49.2227272764, + -101.2311839023, -89.9953284490, -59.5627585772, 3.5045401284, 87.8927289585, -45.7826497344, 10.7894222301, -34.2218214372, + 19.0101005894, -79.7412295513, -40.7129535835, 34.9745871635, 98.5275860299, -16.5088968676, 66.3460699225, -133.5365249144, + -41.4407293928, -15.3419046733, 88.7195803357, 5.1871004832, -98.0467809656, -14.1239743026, -1.3510821103, -38.6189020004, + 114.8822422747, 65.5094003215, 88.0532368083, -59.2540330178, 92.9429540023, 21.9133947331, -50.7728654894, -36.7011682133, + -16.9217654808, -110.7749962658, 16.6126865137, 116.3641432033, 51.7192473353, 9.8619033750, 57.3047648863, -21.0275512361, + 66.8618463429, 68.4016463402, 13.1978892272, 36.9294559769, 79.3415169994, -74.4235076906, -105.9928928366, 3.5485737877, + 35.3701917014, 11.0155135724, -42.5279468110, 57.9138782373, 32.4492657117, -2.5260836533, 8.2835364235, -45.2229140182, + 29.4655763679, 20.5830184405, -92.7731928028, -88.2155574314, -13.0181590718, -67.4752432987, 12.2964799268, -134.7795554776, + 132.5177768161, 86.4796490878, -170.6768976365, -53.7059277336, 23.6295211743, 100.0865623366, 134.6726479190, -17.6813528616, + -67.3925719582, -12.1986138778, -58.6920640259, -46.1769630250, 14.0012237071, 105.2386807000, 47.5923010830, -13.0446195549, + 21.4905427079, 89.4924853541, -1.6294776664, 7.0507819885, 88.9962812504, -14.3836298512, -14.5755536250, -158.3719830729, + -71.0421641105, 9.1510759791, 3.8541666430, 46.8853635172, -115.4505016964, 112.1915084832, 60.0579773251, -19.3568210670, + 134.6457467896, -127.7704101409, 96.1687814173, 139.4223376055, -16.4889074247, 8.7407981479, -31.8653460842, -86.1989364296, + 6.3138143769, 29.9691806857, 10.0215115097, 21.7539979367, -10.0119096873, -32.7662562735, -46.7114278488, -32.0468371287, + -104.9863919627, 164.6868132811, 14.2837511902, 103.8122395985, -38.3195610630, -66.2071289114, -42.7348265210, 8.1247796770, + -44.7642634909, -99.5977533202, -62.5669299697, -154.4713244845, -54.2004565831, -21.0505396466, -7.2304668445, -63.1457522254, + 121.1292664630, -41.2451342849, -100.3661302819, -79.7893865863, 2.9782522632, 28.1233518579, -45.4712133921, 102.1080223649, + 64.1668281113, -103.7410276784, 106.7427715753, 79.6231477604, 20.5960195618, 42.6351844699, -8.0432553021, -20.9274320455, + 44.7322739383, -58.6239231825, 21.5430765926, -32.7159508398, 56.5825012360, -99.4275633192, -102.9101109727, -83.9315736318, + 25.8630456141, -52.7504372152, 29.5673565938, 48.9111232224, 41.5578130085, -14.3606917295, -2.2040972437, 94.4661907548, + 132.7457583187, 55.3945646514, -16.7731026022, -46.5710214158, -29.3542289267, -14.2923094674, 23.0425873685, -15.5814746488, + 22.3570974017, -42.0180359242, -20.3430155274, -68.6338886669, -64.8088612108, -24.2988048174, -23.5299375491, 98.0364255786, + 3.9778504115, 65.6849914578, -1.5168129555, -4.8287346639, 142.1453945317, 78.2378704371, -57.3720730586, -19.4585389336, + 76.2735042603, -43.9459949675, 6.9426433355, -43.1451402122, -18.0751403348, -34.1054109171, 55.1204864738, 115.4516445351, + 6.5333541873, 62.4906581904, 29.9692177776, -33.2287635647, -18.9268908378, -63.0926292852, -111.6323734820, -10.8864814281, + 14.4649132510, -25.6871888082, -33.4308400890, 23.9756688469, 52.4567038054, 12.8701945894, -20.5116135858, -17.4241576687, + -11.8606594870, 16.8816614097, -18.7270784248, -6.2425768906, 48.5175154819, 1.7426978337, -99.3023967479, 38.5650914417, + -61.0127172140, 42.7784858845, -7.2257854969, 2.2847466905, -99.0066793854, 60.4060120207, 48.8064141188, -72.4258965295, + -50.7390478551, 95.1299230407, 56.4763356354, 35.4471698843, 60.4632441624, -95.6600449901, 55.9445226564, -28.1942324306, + 26.9826142327, -71.4404566440, 15.9270065277, -86.7110877229, -80.6677402549, 0.5529947734, -39.4989884635, 35.7914768080, + -22.6398243670, -33.2598314085, -25.7467291233, 16.6863716736, 80.3468995127, -22.5068845945, 23.6096621616, -99.4288845571, + 29.0662266127, 3.1265642936, 133.4725188269, 10.5889496669, 78.4289320034, 46.4143031925, 97.1026760967, -60.1768585008, + 75.4045199491, 14.1399143092, -87.6608741602, 96.8571208381, 36.1952990642, 119.9462706822, 51.7941617293, -10.8814477399, + 66.0010885597, 68.6769630212, 70.6032262575, -78.6614013388, -52.6711668148, 29.9772317807, -67.0938602216, -42.3207515671, + -0.0486165038, -15.4758823937, 56.6129710458, -54.2575866392, 111.9253009797, -47.5236184222, -95.6434531533, 24.9411667600, + 35.5636297407, -11.3487509511, 99.6377899302, 16.0125061627, -35.8881400079, 111.1220549938, -2.9395719970, -41.6388550114, + -33.4638181727, 109.8808145106, 28.1021441950, 118.2701610217, 51.8151816796, -19.5803207598, -89.9262515893, -26.6044307189, + 40.7320823989, -19.2602062235, 62.2560193625, 85.9346547334, 49.7871555519, -20.0313162309, -8.1831982988, 69.5820284092, + 49.2993116756, 34.9185452172, 74.7523126024, 145.1939754190, 7.4232669832, -4.5344572697, 34.0472547752, 41.4294110612, + -123.0758971920, -43.7705297332, 121.2820069260, 0.5435048718, 77.7764299214, 59.6928983371, -27.6522675298, -7.1273383508, + 26.7210269180, 4.4630452796, -81.8607570684, -26.3402136551, -95.7197230242, -7.3219091557, -82.4289458596, 77.4381232638, + 65.4006110025, 36.5844708644, 66.3796224839, -11.0118557858, 61.4481921771, 8.0694380153, 59.4652425227, -24.3765004167, + 4.9649042432, -28.5624154309, -78.5623599502, 17.8514494843, -20.9756518143, -10.1916814040, 11.5732283207, 57.9552418906, + -45.7612949110, -20.9482951666, 36.8160063004, -45.0567155877, 63.7098701462, 6.5938197429, 46.9692949757, -83.3299455774, + -88.7653437148, 118.8655843800, 93.1921951705, -18.1354337452, -40.1074391033, 44.0852297241, -41.1588703642, -105.1428083912, + -7.1420535313, 66.5491789931, 28.7643638361, -71.3690563573, 50.9039393300, 93.8257368698, 22.3478174946, -109.6001863096, + 64.0649017243, -29.4574274496, -44.5473845748, -132.8280128599, -52.8587533053, 80.0084510351, 21.4678106815, 48.4383573310, + 56.6158184924, -72.0365616804, 12.9911383411, 162.8295288963, 55.8780535954, 73.1821757559, -100.6826313435, 23.4262138290, + -0.5753332881, -21.5175209047, -138.1106268547, -80.7925993001, -28.1663114958, 0.9831816192, 30.7923417673, -51.9827613979, + -10.8794388756, 54.1022652480, 11.1686073161, -44.0592484786, 21.6987012718, -42.2412255611, -3.4936004646, -51.6421714543, + 15.8711886614, -40.0043968804, -6.1590232957, -65.9457642489, 59.0569838977, 7.4295907490, -12.6833895574, -72.2928299923, + -199.7835511043, -71.1580901042, -12.8895530614, 13.8448156167, 27.4808788351, -46.2542221592, -3.5153348434, -176.2019445127, + -48.6783165219, 70.2296726615, 111.7340160335, -60.7655899218, -138.1081385724, -35.3974788626, -65.7355628000, 57.9555341829, + 13.4670930872, -79.3318328665, 36.5016341422, 27.5574278118, -35.4004898428, -79.3903940148, 243.2421421265, -8.0268453199, + 44.0174931524, 68.8734465340, -80.7502038529, 1.3409036386, -86.0777878831, 37.1475406267, 18.1068167023, -56.9153447361, + -19.5224115764, -78.8474074897, -20.0747255852, 4.5850719720, -191.0686482737, 23.5318026769, -32.6675253287, 27.3087304829, + 31.4351407465, 19.6192337929, -11.8866458644, -48.4661089981, -3.1226120347, 20.0138411382, 29.8813799560, 67.9558437137, + 38.7174108080, -13.3022284820, 27.1121047281, -26.2954327750, 120.9542179193, 11.0555865630, -34.5895364072, 73.4542523467, + -26.6956937208, -108.0235037857, -35.7355716826, -69.8443555160, 33.3578766421, 26.3683815560, 97.2883332520, 133.5510498515, + 35.5415284008, -16.0495119378, -19.5483270675, 93.9985201088, 27.7795159179, -13.1059263368, 34.2311271533, 47.1466381795, + -36.4147469783, 10.4833119779, -5.2292656110, -25.0113244760, -14.0549947152, 199.8348526048, -43.2547698686, 98.4817969474, + 37.0586206693, 33.2121561269, -24.7170470026, -37.1349105091, -30.9578044903, -7.4114930133, -34.4807046142, -27.7773696385, + 29.2740921831, -61.0686554741, -32.4612619459, 6.7160769792, 3.1089599122, 12.2545595923, 62.6999428463, 30.5969686709, + 11.1423411573, -57.6502489731, 60.2408835918, -67.7203861906, -44.4518971003, -5.1109945114, 5.6528645074, -43.3456968092, + 117.8609487802, -24.2034537544, -78.4496201847, 44.5294780988, 85.1475013837, 15.5247701555, 89.7512668950, 54.3013774517, + -186.8510627600, -51.0482727175, -9.0267702018, 48.0681416363, -32.9759681266, -42.4456615266, 36.2738833817, 14.1610476535, + -99.8207994579, -11.5142692827, 50.1825860327, 0.3917737329, 63.3500370315, 111.2878444719, 91.6392406660, 17.6584451589, + -50.7899615175, 12.4221556654, -86.5413087906, 48.0563389410, 29.1384649619, 83.5027000186, 7.5729436929, 22.2136423571, + -60.2741473997, -170.4857658702, 17.0186844162, 136.3581532664, 31.5065683845, -96.2326886411, 72.4014182257, 26.1414887396, + -57.2844089463, -43.9781986370, -95.6611720182, -133.8830434822, 33.4938269182, -23.9156927559, 35.5520154186, -93.2468099373, + -6.2162527113, 4.5642492223, -57.5722591446, 71.8064120226, 45.1768685505, -9.5130102236, 110.5798720279, -41.5641619544, + 0.1835509076, -49.9128593949, 98.0154257393, -46.9365276597, -66.0935141873, 73.1727792846, 41.3353795661, -27.9960128980, + -44.2412816343, 46.9707404231, 12.3575979804, -122.9770710291, -11.9552135499, 31.4591712664, -14.1931325058, -6.8614191170, + -16.9763787814, 36.1520894392, 75.7352320923, -99.5121191729, 17.8024156510, 72.7923924404, 38.2259409765, 1.9325379601, + -11.1978607868, 98.2703853998, -38.0288299607, -41.7008273041, 80.4517499854, -116.8258848759, 30.7289872645, -101.9012423077, + 93.9831977796, 101.4530665010, 9.2763209169, 116.4425755502, 2.9739225298, 45.5019124654, -64.2956140887, 105.7408745662, + -11.3657606620, 6.3069096678, 122.8709609828, -6.3248578668, -60.1760116205, -35.9544630869, -68.0834090495, -34.8224305999, + -31.5069839788, 21.2614258718, -23.5546199906, -128.0293305211, -182.3893947839, -120.7110714918, -65.8822590864, -63.8215221762, + 56.7670203795, -61.2037205962, 3.8122259155, 1.0275735300, -64.6391642695, 75.8652993596, 115.4068637021, 46.8849792653, + -39.5505124775, 33.1187321149, 25.3372286880, -18.5375942960, 30.3953994229, 21.8836680766, 13.9924166006, -109.7038947262, + -24.2899011732, -52.7497505668, 35.3698361783, 34.1056231420, -13.8686663216, -1.7062295227, -97.5362177027, 74.6544677369, + -78.3935767846, 35.6517853160, 51.3830818724, -93.7778131463, 81.6700292143, 126.8070312922, -28.4470816468, -71.2638167545, + -55.2884800428, 9.0861240716, -128.9083303383, -16.3800803508, 34.5467745617, 28.9315662137, 84.3386694814, -1.7523953786, + 69.7727914393, 44.6546611575, 90.9897326057, 121.8059195607, 28.9429876729, -14.8591127934, 29.2818722570, -84.6318423838, + 11.3290830564, 40.7084140001, -50.5878424847, 68.2992258419, -24.7150040711, 41.8365599450, 104.0111319954, 70.6981835472, + 56.4709262168, -20.5343182666, -16.1886023808, 101.3482649415, 108.5356887852, 24.5240870510, -146.5152615985, -24.0194234128, + 18.0331846295, -5.1522407439, 4.9573388243, -34.7877468646, 39.3333900199, 31.8580232326, 111.7915751739, 15.3919610203, + 17.5179415363, -22.2065299595, 31.9496951848, -18.7368015481, -78.3621490938, 45.9954796476, 77.7231064126, 21.7258618723, + 23.3527631711, -136.8686653828, -22.5773174812, 33.6615614603, 4.8540113479, 3.9088571058, -54.7099788715, 85.8089519875, + -86.1460475251, -0.1247811474, -146.1793416666, 124.6659345147, -60.7858975441, 10.3154193265, -29.5514280889, 9.4667237048, + -7.9550953683, 37.5451209024, -27.1735194003, 46.8842847809, 41.9179936640, -23.3158010522, 157.3009890625, 113.2843306932, + -104.1727731788, 123.3854503767, -5.2055501860, 27.9879059133, -13.4163698144, 52.2833141248, -129.0969704337, 46.8881212895, + 131.1080768010, -19.0213767099, 155.5021671973, 20.3698150937, 37.2314029160, 40.8492644144, -35.6880906860, -31.7697839101, + -24.3255617048, -26.5610341544, 11.6187963194, -51.4990517524, 39.7825587179, -54.6696763219, -3.8497258220, -70.2342476864, + 4.9081928390, -71.4654689380, 30.7344594349, 32.7496322701, -90.9126087838, -38.3652430128, 92.4042844207, 47.8082836295, + 145.6802813070, -18.7426859824, 17.6059584845, 36.4864322344, -18.7252161480, 0.9615718128, -100.1282552629, -42.4349083923, + -14.3562238984, -46.8134065357, 39.6360915881, 22.7361846189, -3.2257803075, 37.2350125538, 115.6400099866, -12.7275184486, + -96.1855573652, -10.0276483356, 57.6455407419, 77.4560348751, -22.1178137498, -35.6022362191, -68.4831367839, 2.8390215747, + -52.0573070842, -93.4720169324, -28.9154032611, -76.6074307649, -9.9420438435, -6.1893105222, 29.9369590932, 74.7852614650, + -1.6201087045, -17.3703711090, -98.9790496449, 26.7869734481, 17.1602014711, -15.6928367417, -7.8035969135, 89.7887008279, + -70.6197502665, -8.2854282454, 59.3778733341, 73.2639493915, 25.8370203675, 59.1628124401, -24.8471900591, -25.8194366580, + -6.0751044137, -57.7489484697, 88.6706386657, -84.8771863224, -89.4840617668, 10.9763517990, -54.8378810910, 41.3410088555, + 66.6125927808, -14.1311991812, 29.3005546497, 96.5047091289, -3.3614374997, -25.8108903749, 206.5074424684, -61.4084159691, + -62.4923495769, -13.1959183651, -59.3730978039, -12.7173171637, 16.2427076425, 43.4296534191, -21.7657996669, -28.1531280594, + -69.0302418588, -86.4107750374, 17.1949881709, -41.3078350297, -57.6504646238, -5.0909583836, -8.1631298822, 1.3096980446, + -2.2508953688, 35.1942051704, -3.9027768036, -91.2713667132, 63.6694073039, 41.4248931898, 9.8384382954, -96.0978983961, + 66.1755919288, -36.7372549691, 10.2307178666, 80.7031291631, -38.2719834734, 39.2035878064, -43.1259903655, 93.4819414373, + 89.7247077937, 78.9891448344, 95.0983537363, 36.5774514331, 8.9972120390, -8.5755002664, -102.1337133375, 76.9830915294, + -46.7790015335, 51.0714648600, 29.5170917782, 23.9334813635, 5.2749838346, -15.9842728433, -1.3574532545, -70.2729088611, + -15.8039920242, 15.5313565190, -18.1312003682, -8.0084433716, -27.8087982433, 51.7334750530, 19.3370491919, 29.2520159480, + -68.6735151718, 8.0558008798, -40.2210320066, -40.9920576136, 7.8678303082, -72.3041306508, -10.2175986624, -35.1356797035, + 201.1586117629, 56.4352966867, 46.7221688254, -11.9012413099, -18.9833303926, -86.5023414408, -23.4675063576, -55.5806400666, + 153.4955981228, -10.1092363214, 88.4029573110, -65.9117133686, -5.4919562765, 24.5837979674, -33.5408574701, -4.0004157187, + 56.9848893304, -105.2177018084, 3.4948685307, -19.8452050090, -7.2453079498, 102.6389582052, -8.3246123264, -73.0861922381, + 0.9626940760, -28.3612950785, -11.1533678981, 44.2899763978, -62.6677448146, 22.3906970985, -13.3484872677, 67.0703918899, + 42.4772156970, -18.5244182335, 37.4759091463, 31.3496965213, -61.4436264287, 52.0955155439, 59.1486887940, 170.4906735140, + 46.0617455116, 40.1470772024, -107.3976903570, -105.4116725861, 56.8825181023, 58.5916397550, -58.1729962485, -60.5270235223, + -39.2885519005, 9.5965348817, -25.4354894441, -14.0981625889, -52.7234757042, -83.9105208881, 72.1797338834, -134.9219073856, + 9.6103094318, 9.6768962656, 26.7360474274, 41.7881752284, -15.3952839007, -0.1363655901, -47.0864221556, -8.2427253205, + -57.7373834528, -55.9508702650, -78.5284244100, 0.1655492302, 62.9160705153, 64.1068291282, -2.9136214436, -105.7842253662, + -45.8767944713, -51.7074257000, -98.8568902926, 64.1232083599, 71.1116077196, -30.6630666091, -58.6840707262, -15.9383894413, + -78.6620829271, 60.7529890099, 154.2357488637, 41.3625348402, 120.2872442705, -51.3125389772, 16.7881412988, -70.4938171347, + -79.4147805796, 23.5182282020, -81.0963234264, -59.2244948022, 28.9135530940, 92.5951342446, -96.6396527065, -26.4777264554, + 121.3094449527, -34.5951012470, -127.8255512216, -92.7699064191, -58.4398020189, -117.7542292595, 31.0434596629, 21.5299289765, + -99.9447239591, -16.0626333679, 6.0199864189, 82.4757175357, 22.5970205481, 73.5485760950, 35.7980568403, 72.6857884103, + 28.8479981590, -67.5538339177, 43.4071338656, -25.1893024527, 4.6130159403, -65.2605921685, -91.8752363625, 22.5520067301, + -109.9093500045, 33.9399454761, -13.9115156368, -3.1879928935, 1.3920042271, 43.3324348308, -33.3718525809, -15.9282931008, + 0.7677944075, 78.1072718708, -1.1063828562, -10.5413152425, 37.1290958861, 13.6823396336, -3.4014039018, 89.5388534365, + 37.7089705536, 64.0323076524, 44.7808982777, -13.5604762388, 7.5118173888, 115.2300447558, -9.1561273300, -41.5332100116, + -17.0088418256, 71.2713927804, 68.0422816650, 54.9551164038, 106.8830646917, -6.8316822423, -66.7609967606, -23.3894825625, + -67.4182747661, -28.3219951260, -15.9451114055, -29.7266619746, 16.7419712545, -20.5565859019, -165.5656221846, 116.3242135199, + 64.2626611081, -8.1360214710, -94.2273608282, -62.9983557391, 64.1759043922, 36.5449254036, -51.5697599431, -5.0466305585, + -73.2700815931, 48.7300029897, -35.5929303432, -90.4816448914, 16.8187764590, -27.9347950060, 80.7045416696, -83.6514663068, + -58.4556594913, 3.2348973759, 52.8657910284, 85.7278577109, 37.4138218732, 82.0512145755, 76.4606241856, -109.2162517858, + 96.6683439683, 90.7633843052, -53.1586977972, 34.4033331064, 44.2090456506, 80.1151111552, 2.7514790758, -64.2623287852, + 126.1409018754, -30.2423240636, -156.0079941574, -2.8027393737, 64.2513542782, 69.8534581189, -73.4708875363, 20.2217494242, + 0.5864357659, -104.6195300646, -42.8322649072, 26.3037603855, -40.7129474708, -33.9844594811, -26.3521525879, 109.6645932255, + -106.9356716414, 49.2118962107, 11.7512591870, 68.8969247665, 113.4583578600, -83.3347276867, -36.2485402256, 85.9855241461, + 104.0814868325, 33.5770186573, -1.9661285608, -132.5696804701, 27.6753215958, 21.1243350017, -28.0882593661, 35.2778527631, + 18.9175154387, 83.6190957901, -71.4962755318, 138.3285404575, 97.9134306607, -56.8042150595, -143.3089544841, -2.7340225658, + 17.5776154385, -148.2352087417, 124.9211804787, 59.4231271286, 10.5947124378, 68.5288310273, -67.2703544731, -23.7935515786, + 38.8787769309, 34.5294359419, -73.4536038751, 2.7126504728, 49.6972438051, 62.7223593643, 49.8175933904, -110.1534126143, + -14.6702420578, -84.0773525862, -92.6188033620, -5.5698102323, -47.9128909478, 46.7196485027, -53.6444016449, 98.5014752828, + -94.7519348776, 14.1323076055, -89.2719075396, 47.0296071172, 41.3919626390, -39.1489616034, -135.6499693540, -10.9475781700, + 92.7496269052, 37.4205820588, -51.7237524182, 49.9460461012, 87.5396720347, 32.8710569742, -32.8731769330, -83.4249720632, + 34.5762125072, 13.6808877416, -26.3766683600, -67.8728489559, -29.6073750328, -47.8030427727, -149.0587954245, -119.5774481626, + 35.2806694964, -24.3695409777, 48.7160766560, 8.8288204812, -89.3855803242, 3.1835611015, 51.9474587643, -41.8502161006, + -34.1035165420, 94.0854499359, -84.2224914514, 59.1627371631, -103.1905795588, -18.6082417651, 36.3103092592, 63.1937125568, + -111.1986222065, -32.0863426915, -56.7330383564, 32.5073363806, -7.1087996309, -68.2226145792, -157.6532604957, 45.2078386315, + -2.8603211008, 33.3371110420, 37.7846637198, -18.6405663742, -91.0982111740, 23.2221097945, -24.3522827840, 78.9413600618, + 62.8360928143, -19.9242767252, 56.5032728402, -5.5496240010, 8.6994906960, 83.5527376759, -21.2346885874, 64.0836232315, + 22.9623722574, -87.9578765280, 1.3523030640, 176.4067098705, 67.9036978634, 7.2537723049, -122.2309062335, -63.8632909466, + -38.4903796734, -16.2974411834, 2.3970826418, 64.3700072918, -67.9197915888, -116.4026668750, 67.5231031500, 34.6374455493, + 4.1311157296, -2.9105015532, 70.8086558293, 39.2725441796, 33.8256743917, -3.5843642097, 116.7643833804, 20.1092238787, + -25.9766854190, -51.9950492522, 3.5926636209, -58.7583611171, 3.2768807331, -83.5901878329, 68.7090363388, 31.4832422043, + 72.9380572718, -165.9742811160, 33.9362033271, -10.9519428632, 13.0808211304, 15.6672709051, 31.7224492437, -24.1934977704, + -111.0830116867, 11.6282084172, -66.2259706857, -1.9963673172, 30.0622960183, 53.3456859503, -37.0919419160, 67.5944964290, + 18.5935153812, 48.9664966150, 67.3157768914, -160.7111991618, -25.1223842933, -47.4479071245, -16.7582679230, -13.6039270052, + 1.7293472100, -24.1741877419, -76.9727398203, -56.3783736939, -66.9556303947, -54.3511473684, 30.2542211582, -66.8893229449, + -73.2990092912, 239.3981985262, -64.2850340511, 89.9092075497, -15.3525489059, 53.3827372899, -14.3319916122, -115.0721596412, + -50.4530123160, 44.0976786926, 52.2019557554, 72.6630207131, 27.5803572747, 33.4737730840, -170.7640086205, 152.9204474548, + -44.5872734278, -41.0667502536, 26.6175854758, -13.0179143239, 40.8518134705, 23.2781614140, 22.8861340709, 165.4158655103, + 45.0461105030, -17.0077443894, -2.3871329828, -86.8854944700, -38.5465304439, 51.8040803063, -92.8924802068, -113.2325293603, + 51.3604041632, -18.3429725256, -42.5989033884, -38.9445115750, -85.8273183104, -56.4224331649, 17.4997720376, 89.3766578841, + 23.9239370283, 82.3838988229, 47.4013397563, -28.0666334287, 77.6218433875, -52.2133433307, 89.2938264737, 43.2058195424, + 49.4518987655, -5.6570623864, 19.8577713391, -33.2615393471, 73.6654400011, 27.5602339563, -47.1471825605, -34.0693505588, + 111.0944675938, 57.0173259682, -63.4190502251, 46.5969999331, 49.3458328432, -41.3853156260, 39.2494112424, 40.7148228670, + -20.3911372187, 31.8352000294, -0.9980198147, 22.2804091174, 54.0978218332, -82.3683192993, 85.9892355872, -58.3154306688, + -104.2068911293, 91.0603181519, 32.9518095573, 20.8407188930, 34.7499759595, 81.9688480501, -63.1013763435, 0.0064684915, + -24.5056101811, 69.9306176471, -27.5369930597, -39.0144381716, -14.4923929902, -54.3182594365, -130.3292318388, -48.8158919788, + 53.2734036714, -104.1048090944, -70.0965204183, 3.6382745923, 83.6579656965, 23.1622465812, 126.4691310854, 102.9799547579, + 70.8617976147, -8.1455978101, -28.4590640876, 108.1156467676, -1.9738076313, -75.4909376542, 57.5780163484, 45.3155422582, + -38.1742907476, -52.1803902400, -59.7016262432, -23.3823853194, -45.5457749841, -10.5523915014, -110.6271933849, -32.0113288878, + -86.9215548382, 87.4068451718, 70.9885834348, 25.1206930472, 30.7108505789, 115.6076847444, -40.5697084903, -56.6781054555, + -31.4854227803, -31.9552555012, 25.7938108182, 25.4540472201, 76.7058033375, 2.3905659773, -5.9779298940, -152.8056710400, + -51.7485397077, 28.1462240336, 33.9693389366, -71.9881317816, -105.0496130632, 64.2276458511, 96.2519735406, 48.6822690044, + -19.6594071488, 24.8884631741, -33.0716823639, -69.5612618256, -25.2898319495, 98.8036926982, -24.3703282453, 53.1789051370, + 86.5743876344, 18.0109802577, 68.3663740236, 112.3369755598, -45.4492280850, -151.6437874688, -38.2167192413, 24.2163999975, + -66.3294468430, -150.1009914497, -29.4992082835, -92.1308610284, -1.2762556067, 23.1500238372, 69.3063510487, -69.0471660018, + 42.5150200276, 120.6653379806, -152.6729845687, 48.9591377076, 2.7191539126, 0.2888762146, -3.0784673164, 32.5853754582, + -81.3351116851, 25.2072127071, -36.3659441163, -28.6250561447, 95.3073017008, -75.7486406052, 65.1012680265, -64.6031857772, + 56.1240652498, -10.8517181129, -3.7575141784, 42.9554134355, 32.9784965739, -25.0327158003, -147.2361479829, -122.4898965848, + -64.6526214445, 57.1527521244, 25.3983254376, -74.5887309421, 105.2278400890, 118.4451948788, -10.9195498541, -45.2849091353, + 79.1200975888, -60.8806018590, -12.2957628012, -10.2289743666, 77.2465842566, -19.1618580885, -50.3947630673, 130.5843172047, + 20.1829697245, -24.4247513916, 71.3800655588, -30.9467657000, 1.5373397590, 53.9054414421, -87.7905799212, 58.1774557931, + -154.0660955458, 119.2331706772, 7.0800339615, -83.0564977313, -99.0630549412, 64.4241699198, 27.5103964537, 36.9348345670, + -10.4954521840, -23.2759360131, -167.1583158447, -50.1929188975, -17.1065117999, -86.3978192131, 8.3733101608, -19.6093068970, + 37.0486109491, 45.4922144870, 176.0647013511, -14.1950922727, 16.7968812286, -84.3138225875, -53.2207464331, -14.8171496969, + 65.2824157581, 93.3387940939, -46.2740703075, 92.8129768305, -57.1890439907, 27.2969064938, -67.1547095718, 132.0520323271, + -80.7686358272, 31.4140691769, -52.8148627904, -54.8739580131, -149.8514804755, 56.0153122854, -71.3742949563, 36.6095599948, + 42.3294500451, 1.2055515804, -109.4906983981, -71.9482696076, -21.4390953534, 98.8949510272, 74.3069855376, -35.1569830360, + -34.9626381657, 64.2761847423, 64.7596378221, -28.4775450749, 20.1459803277, -26.5247867780, -32.4734659348, -27.8310906478, + 50.7956581065, 36.0746451268, 22.7531905225, -13.9681530928, 49.5451440618, -13.8510794385, 19.4999565108, 56.8774616945, + -11.9205397259, -71.7174333027, 138.8034243907, -37.8252215401, -38.5743154556, -22.5072374207, 12.6209402643, 69.3207345010, + 70.3534390616, 71.5844311614, 4.0715727994, 25.4390606947, -51.0777668722, 138.3617611366, -34.2478029347, -58.8492260984, + -108.6623124843, 58.3034938571, -36.9304647333, 116.5902412201, -24.4020501110, -74.7544840602, 67.7889120207, -9.1455389450, + -46.4456521441, 83.2551857934, -113.9346066504, 46.2851467498, -17.4102217179, 41.6989724702, -23.8829078702, 76.1395799790, + -27.1608730178, -133.8787483532, -59.9242635982, 120.5266415560, 124.9797395465, 35.5722660007, -20.2412573812, 20.5492611902, + -111.8745990845, 41.7389321101, 44.5758622786, 54.2189628306, -44.4745944890, -75.9761098966, 104.0472151578, 113.7219003284, + 33.0330354214, -6.0923562541, -14.8744671800, 62.5024055272, 3.7922184446, 1.1256712478, -30.2126827228, -83.4988699637, + -103.7060854897, -65.4982917403, 30.8897494352, 66.1124672663, 65.0983461952, -52.5486436649, -4.5556524541, -26.5924272500, + -94.1546367179, -0.3559369287, -45.0649519841, -68.1274094478, -7.0521865275, -5.6612786174, -12.5790011432, 51.2524661231, + -3.6515125298, 92.9598974936, -21.0468658542, -40.8243392179, -7.4342227950, 11.1119231703, 37.3371820746, 21.3179018153, + 50.2932980480, -24.1611515405, -41.7851721122, -24.8691439055, -28.3180388219, 121.1894536511, 15.7968116384, 17.9498027226, + -55.3386005430, -80.6689826830, 31.9394747713, -28.1978017432, -1.5538441529, -4.0360096323, 73.9611531119, 17.7253526010, + -24.8578563772, 18.4583438017, 75.2580204243, -13.6139802015, 24.6918362443, -63.0552815767, -4.0312608443, -14.8879121339, + -2.8237511683, -81.5024576341, -4.2344562157, 107.1587476255, -131.2910041645, -25.6467586377, 0.4733397655, 62.8634326464, + 63.1852609425, 16.5913941858, -96.6896044528, 81.2969911064, 18.2956425408, -81.6677471269, -39.2708721333, -34.3080597347, + 22.5610412882, 57.2574226391, 77.9308780964, -39.9342842346, 58.5581960994, -5.7939281526, 104.9927182940, -99.3837066580, + 25.9917768621, -32.1605915683, -30.4589523848, 64.8295771021, -28.2183758982, -37.9771330859, -178.0772548046, 84.2925125233, + 45.4981954662, 49.2815212900, -45.1224250038, -5.9322404186, -6.1309915876, 76.9070873365, -11.5475730308, 18.2569564924, + -124.4953563688, 53.8646820493, -40.0231506068, -74.3908746450, -63.2011642999, -18.9826189881, 69.7917580387, -34.8403308318, + -36.4625632706, 17.1934091336, -20.8063613141, -1.9067935434, 5.2259139474, 60.8368210348, 81.3087550974, -42.6679999668, + -95.5963552311, -115.2609753741, 11.1809831183, -48.3640194531, 75.1073797772, 30.8228127170, -15.0904157375, 11.0538529673, + 107.4505154927, -66.3486660110, -32.0311111189, 38.4346222125, 8.9422998706, -57.6098106212, 15.9132097612, -132.1845158340, + 36.1916704283, -10.5055186124, -87.5658217149, 107.8931306399, 96.0334082800, 53.7264664477, -72.0623965686, -1.9038197721, + 26.1152808779, 119.6235796272, 48.3325601149, 117.6457486801, 28.0275495741, -11.7030018715, 52.9236279862, 100.1176831736, + -83.2423151898, 7.5280868233, -15.3686195277, -5.3432329923, -27.9181052724, -64.4492860287, 129.7502751613, -82.3246020383, + 37.3256155504, 34.7298938660, -57.0561320806, -44.9581455455, 93.3481469867, -54.3803550243, 26.4501204966, 18.8116878139, + -74.4902220818, 15.4659232518, -49.1948332727, 34.0006040345, 56.7177639954, -28.8367897421, 83.8692564278, 35.6745892475, + -45.7509262432, 30.3970223242, 106.1786129556, -35.7843870107, 7.1339227808, 13.0894885560, 56.4666438735, -23.8687514544, + -111.5694112759, -58.7858061292, -61.2783887765, 44.1738302093, 54.7407844064, 14.3538652267, 108.5956394164, -22.3846808158, + 2.5449431771, 70.3512724427, 29.5403015688, -0.7212818796, 143.3497258886, -17.2553350633, -99.7681623907, 42.6913312311, + 35.7338157369, -54.6728371746, -38.0299088541, 10.1471440532, -124.7095236710, -190.8743243033, 139.7543496645, -42.2528776639, + 39.0975372290, 27.8686903911, 22.7337255980, 42.7990612235, -41.6771094483, -23.0843729437, 49.7020046877, 11.0018909876, + -16.5079644797, -158.2821637063, 42.1950179525, -30.4282660128, 67.9797563487, -53.8121334664, 52.8306609341, -5.2861803454, + 59.3808475761, 158.1836295178, -26.8953096767, 78.8646320997, -113.9365510474, -37.1949934282, 53.6970193167, -9.6523467804, + 7.7358952669, -74.6220593088, 107.4394203873, 17.2364088475, -36.5357935724, -23.9301386540, 17.8174243490, 14.1204969615, + -8.2599377000, 4.2743586584, -46.4363395746, -63.5670279031, 9.6872641411, 21.0630349930, 108.9834586896, -124.7597975398, + 29.4251821664, 23.8313097730, -40.8359610210, 91.9520219869, 95.7936525792, -109.5783337883, -60.1100153384, -19.9591228893, +}; + +/*--------------------------------------------------------------------------------*/ +/* FFT Lengths */ +/*--------------------------------------------------------------------------------*/ + +/* + To change test parameter values add/remove values inside CURLY and update + the preceeding parameter to reflect the number of values inside CURLY. +*/ + +ARR_DESC_DEFINE(uint16_t, + transform_radix2_fftlens, + 7, + CURLY( + 16, 32, 64, 128, 256, + 512, 1024/*, 2048 , 4096 */)); + +ARR_DESC_DEFINE(uint16_t, + transform_radix4_fftlens, + 4, + CURLY( + 16, 64, 256, 1024/* , 4096 */)); + +ARR_DESC_DEFINE(uint16_t, + transform_rfft_fftlens, + 6, + CURLY( + 32, 64, 128, 256, + 512, 1024/*, 2048 , 4096, 8192*/)); + +ARR_DESC_DEFINE(uint16_t, + transform_dct_fftlens, + 3, + CURLY( + 128, 512, 2048/*, 8192*/)); + +ARR_DESC_DEFINE(uint16_t, + transform_rfft_fast_fftlens, + 7, + CURLY( + 32, 64, 128, 256, + 512, 1024, 2048)); + +/*--------------------------------------------------------------------------------*/ +/* CFFT_F32 Structs */ +/*--------------------------------------------------------------------------------*/ + +/* Uses radix2 lengths */ +ARR_DESC_DEFINE(const arm_cfft_instance_f32 *, + transform_cfft_f32_structs, + 5, + CURLY( + &arm_cfft_sR_f32_len16, + &arm_cfft_sR_f32_len32, + &arm_cfft_sR_f32_len64, + &arm_cfft_sR_f32_len128, + &arm_cfft_sR_f32_len256/*, + &arm_cfft_sR_f32_len512, */ + /* &arm_cfft_sR_f32_len1024, */ + /* &arm_cfft_sR_f32_len2048, */ + /* &arm_cfft_sR_f32_len4096 */ + )); + +/*--------------------------------------------------------------------------------*/ +/* CFFT_Q31 Structs */ +/*--------------------------------------------------------------------------------*/ + +/* Uses radix2 lengths */ +ARR_DESC_DEFINE(const arm_cfft_instance_q31 *, + transform_cfft_q31_structs, + 5, + CURLY( + &arm_cfft_sR_q31_len16, + &arm_cfft_sR_q31_len32, + &arm_cfft_sR_q31_len64, + &arm_cfft_sR_q31_len128, + &arm_cfft_sR_q31_len256/*, + &arm_cfft_sR_q31_len512, */ + /* &arm_cfft_sR_q31_len1024, */ + /* &arm_cfft_sR_q31_len2048, */ + /* &arm_cfft_sR_q31_len4096 */ + )); + +/*--------------------------------------------------------------------------------*/ +/* CFFT_q15 Structs */ +/*--------------------------------------------------------------------------------*/ + +/* Uses radix2 lengths */ +ARR_DESC_DEFINE(const arm_cfft_instance_q15 *, + transform_cfft_q15_structs, + 5, + CURLY( + &arm_cfft_sR_q15_len16, + &arm_cfft_sR_q15_len32, + &arm_cfft_sR_q15_len64, + &arm_cfft_sR_q15_len128, + &arm_cfft_sR_q15_len256/*, + &arm_cfft_sR_q15_len512, */ + /* &arm_cfft_sR_q15_len1024, */ + /* &arm_cfft_sR_q15_len2048, */ + /* &arm_cfft_sR_q15_len4096 */ + )); diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM23_config.txt b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM23_config.txt new file mode 100644 index 0000000..eeb9c59 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM23_config.txt @@ -0,0 +1,163 @@ +# Parameters: +# instance.parameter=value #(type, mode) default = 'def value' : description : [min..max] +#---------------------------------------------------------------------------------------------- +cpu0.semihosting-enable=0 # (bool , init-time) default = '1' : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false. +cpu0.NUM_IDAU_REGION=0x0 # (int , init-time) default = '0xA' : +cpu0.SECEXT=0 # (bool , init-time) default = '1' : Whether the ARMv8-M Security Extensions are included +fvp_mps2.platform_type=0x0 # (int , init-time) default = '0x0' : 0:MPS2 ; 1:IoT Kit ; 2:Castor : [0x0..0x2] +fvp_mps2.extra_psram=0 # (bool , init-time) default = '0' : Increases PSRAM to 32Mb +fvp_mps2.DISABLE_GATING=1 # (bool , init-time) default = '0' : Disable Memory gating logic +fvp_mps2.NUM_IDAU_REGION=0x0 # (int , init-time) default = '0xA' : +fvp_mps2.UART2.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART2.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART2.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART2.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART2.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART2.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.UART1.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART1.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART1.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART1.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART1.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART1.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.mps2_visualisation.rate_limit-enable=1 # (bool , init-time) default = '1' : Rate limit simulation. +fvp_mps2.mps2_visualisation.disable-visualisation=0 # (bool , init-time) default = '0' : Enable/disable visualisation +fvp_mps2.mps2_visualisation.window_title="CLCD %cpu%" # (string, init-time) default = 'CLCD %cpu%' : Window title (%cpu% is replaced by cpu_name) +fvp_mps2.mps2_visualisation.idler.delay_ms=0x32 # (int , init-time) default = '0x32' : Determines the period, in milliseconds of real time, between gui_callback() calls. +fvp_mps2.telnetterminal0.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal0.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal0.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal0.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal0.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.telnetterminal1.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal1.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal1.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal1.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal1.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.telnetterminal2.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal2.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal2.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal2.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal2.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.PSRAM_M7.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.PSRAM_M7.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.PSRAM_M7.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.UART0.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART0.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART0.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART0.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART0.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART0.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.cmsdk_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.s32k_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.secure_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.nonsecure_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.PSRAM.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.PSRAM.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.PSRAM.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram2.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.ssram2.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram2.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram1.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.ssram1.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram1.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.stub.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram0.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram0.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram0.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram1.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram1.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram1.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram2.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram2.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram2.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram3.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram3.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram3.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.sys_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.sys_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu0core_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu0dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu1core_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cpu1core_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu1dbg_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cpu1dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.crypto_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.crypto_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cordio_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cordio_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.dbg_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram0_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram0_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram1_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram1_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram2_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram2_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram3_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram3_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.smsc_91c111.enabled=0 # (bool , init-time) default = '0' : Host interface connection enabled +fvp_mps2.smsc_91c111.mac_address="00:02:f7:ef:5d:a2" # (string, init-time) default = '00:02:f7:ef:5d:a2' : Host/model MAC address +fvp_mps2.smsc_91c111.promiscuous=1 # (bool , init-time) default = '1' : Put host into promiscuous mode +fvp_mps2.hostbridge.interfaceName="ARM0" # (string, init-time) default = 'ARM0' : Host Interface +fvp_mps2.hostbridge.userNetworking=0 # (bool , init-time) default = '0' : Enable user-mode networking +fvp_mps2.hostbridge.userNetSubnet="172.20.51.0/24" # (string, init-time) default = '172.20.51.0/24' : Virtual subnet for user-mode networking +fvp_mps2.hostbridge.userNetPorts="" # (string, init-time) default = '' : Listening ports to expose in user-mode networking +fvp_mps2.secure_control_register_block.FLASH_BLOCK_CFG=0x3 # (int , init-time) default = '0x3' : Flash Block size configuration : [0x0..0x31] +fvp_mps2.secure_control_register_block.SRAM_BLOCK_CFG=0x3 # (int , init-time) default = '0x3' : SRAM Block size configuration : [0x0..0x31] +fvp_mps2.secure_control_register_block.FLASH_WATERMARK_SUPPORTED=1 # (bool , init-time) default = '1' : Flash Watermark supported +fvp_mps2.secure_control_register_block.SRAM_WATERMARK_SUPPORTED=1 # (bool , init-time) default = '1' : SRAM Watermark supported +fvp_mps2.exclusive_monitor_psram.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_psram.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_psram.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_psram.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_psram.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_psram.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_psram.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_zbtsram1.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_zbtsram1.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_zbtsram1.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_zbtsram1.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_zbtsram1.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_zbtsram1.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_zbtsram1.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_zbtsram2.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_zbtsram2.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_zbtsram2.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_zbtsram2.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_zbtsram2.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_zbtsram2.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_zbtsram2.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_iotss_internal_sram.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_iotss_internal_sram.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_iotss_internal_sram.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_iotss_internal_sram.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_iotss_internal_sram.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_iotss_internal_sram.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_iotss_internal_sram.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.dma0_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma0_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma1_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma1_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma2_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma2_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma3_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma3_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma0.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma0.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma0.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma0.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma1.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma1.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma1.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma1.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma2.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma2.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma2.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma2.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma3.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma3.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma3.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma3.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.iotss_cpuidentity.debugger_master_id=0xFFFFFFFF # (int , init-time) default = '0xFFFFFFFF' : : [0x0..0xFFFFFFFF] +#---------------------------------------------------------------------------------------------- diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_DSP_FP_config.txt b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_DSP_FP_config.txt new file mode 100644 index 0000000..4438b2e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_DSP_FP_config.txt @@ -0,0 +1,183 @@ +# Parameters: +# instance.parameter=value #(type, mode) default = 'def value' : description : [min..max] +#---------------------------------------------------------------------------------------------- +cpu0.FPU=1 # (bool , init-time) default = '1' : Set whether the model has VFP support +cpu0.DSP=1 # (bool , init-time) default = '1' : Set whether the model has the DSP extension +cpu0.semihosting-enable=0 # (bool , init-time) default = '1' : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false. +cpu0.MPU_S=0x8 # (int , init-time) default = '0x8' : Number of regions in the Secure MPU. If Security Extentions are absent, this is ignored : [0x0..0x10] +cpu0.MPU_NS=0x8 # (int , init-time) default = '0x8' : Number of regions in the Non-Secure MPU. If Security Extentions are absent, this is the total number of MPU regions : [0x0..0x10] +cpu0.ITM=0 # (bool , init-time) default = '1' : Level of instrumentation trace supported. false : No ITM trace included, true: ITM trace included +cpu0.IRQLVL=0x3 # (int , init-time) default = '0x3' : Number of bits of interrupt priority : [0x3..0x8] +cpu0.BIGENDINIT=0 # (bool , init-time) default = '0' : Initialize processor to big endian mode +cpu0.INITSVTOR=0x00000000 # (int , init-time) default = '0x10000000' : Secure vector-table offset at reset : [0x0..0xFFFFFF80] +cpu0.INITNSVTOR=0x0 # (int , init-time) default = '0x0' : Non-Secure vector-table offset at reset : [0x0..0xFFFFFF80] +cpu0.SAU=0x0 # (int , init-time) default = '0x4' : Number of SAU regions (0 => no SAU) : [0x0..0x8] +cpu0.SAU_CTRL.ENABLE=0 # (bool , init-time) default = '0' : Enable SAU at reset +cpu0.SAU_CTRL.ALLNS=0 # (bool , init-time) default = '0' : At reset, the SAU treats entire memory space as NS when the SAU is disabled if this is set +cpu0.NUM_IDAU_REGION=0x0 # (int , init-time) default = '0xA' : +cpu0.LOCK_SAU=0 # (bool , init-time) default = '0' : Lock down of SAU registers write +cpu0.LOCK_S_MPU=0 # (bool , init-time) default = '0' : Lock down of Secure MPU registers write +cpu0.LOCK_NS_MPU=0 # (bool , init-time) default = '0' : Lock down of Non-Secure MPU registers write +cpu0.CPIF=1 # (bool , init-time) default = '1' : Specifies whether the external coprocessor interface is included +cpu0.SECEXT=0 # (bool , init-time) default = '1' : Whether the ARMv8-M Security Extensions are included +fvp_mps2.DISABLE_GATING=1 # (bool , init-time) default = '0' : Disable Memory gating logic +fvp_mps2.NUM_IDAU_REGION=0x0 # (int , init-time) default = '0xA' : +fvp_mps2.SCC_ID.Variant=0x0 # (int , init-time) default = '0x0' : SCC_ID[23:20], X in the FGPA version 'rXpY' : [0x0..0xF] +fvp_mps2.SCC_ID.Revision=0x1 # (int , init-time) default = '0x1' : SCC_ID[3:0], Y in the FGPA version 'rXpY' : [0x0..0xF] +fvp_mps2.platform_type=0x0 # (int , init-time) default = '0x0' : 0:MPS2 ; 1:IoT Kit ; 2:Castor : [0x0..0x2] +fvp_mps2.extra_psram=0 # (bool , init-time) default = '0' : Increases PSRAM to 32Mb +fvp_mps2.UART2.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART2.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART2.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART2.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART2.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART2.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.UART1.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART1.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART1.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART1.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART1.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART1.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.mps2_visualisation.rate_limit-enable=1 # (bool , init-time) default = '1' : Rate limit simulation. +fvp_mps2.mps2_visualisation.disable-visualisation=0 # (bool , init-time) default = '0' : Enable/disable visualisation +fvp_mps2.mps2_visualisation.window_title="CLCD %cpu%" # (string, init-time) default = 'CLCD %cpu%' : Window title (%cpu% is replaced by cpu_name) +fvp_mps2.mps2_visualisation.idler.delay_ms=0x32 # (int , init-time) default = '0x32' : Determines the period, in milliseconds of real time, between gui_callback() calls. +fvp_mps2.telnetterminal0.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal0.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal0.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal0.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal0.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.telnetterminal1.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal1.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal1.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal1.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal1.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.telnetterminal2.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal2.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal2.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal2.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal2.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.PSRAM_M7.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.PSRAM_M7.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.PSRAM_M7.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.UART0.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART0.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART0.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART0.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART0.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART0.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.cmsdk_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.s32k_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.secure_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.nonsecure_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.PSRAM.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.PSRAM.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.PSRAM.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram2.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.ssram2.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram2.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram1.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.ssram1.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram1.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.stub.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram0.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram0.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram0.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram1.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram1.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram1.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram2.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram2.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram2.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram3.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram3.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram3.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.sys_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.sys_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu0core_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu0dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu1core_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cpu1core_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu1dbg_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cpu1dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.crypto_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.crypto_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cordio_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cordio_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.dbg_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram0_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram0_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram1_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram1_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram2_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram2_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram3_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram3_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.smsc_91c111.enabled=0 # (bool , init-time) default = '0' : Host interface connection enabled +fvp_mps2.smsc_91c111.mac_address="00:02:f7:ef:5d:a2" # (string, init-time) default = '00:02:f7:ef:5d:a2' : Host/model MAC address +fvp_mps2.smsc_91c111.promiscuous=1 # (bool , init-time) default = '1' : Put host into promiscuous mode +fvp_mps2.hostbridge.interfaceName="ARM0" # (string, init-time) default = 'ARM0' : Host Interface +fvp_mps2.hostbridge.userNetworking=0 # (bool , init-time) default = '0' : Enable user-mode networking +fvp_mps2.hostbridge.userNetSubnet="172.20.51.0/24" # (string, init-time) default = '172.20.51.0/24' : Virtual subnet for user-mode networking +fvp_mps2.hostbridge.userNetPorts="" # (string, init-time) default = '' : Listening ports to expose in user-mode networking +fvp_mps2.secure_control_register_block.FLASH_BLOCK_CFG=0x3 # (int , init-time) default = '0x3' : Flash Block size configuration : [0x0..0x31] +fvp_mps2.secure_control_register_block.SRAM_BLOCK_CFG=0x3 # (int , init-time) default = '0x3' : SRAM Block size configuration : [0x0..0x31] +fvp_mps2.secure_control_register_block.FLASH_WATERMARK_SUPPORTED=1 # (bool , init-time) default = '1' : Flash Watermark supported +fvp_mps2.secure_control_register_block.SRAM_WATERMARK_SUPPORTED=1 # (bool , init-time) default = '1' : SRAM Watermark supported +fvp_mps2.exclusive_monitor_psram.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_psram.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_psram.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_psram.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_psram.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_psram.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_psram.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_zbtsram1.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_zbtsram1.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_zbtsram1.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_zbtsram1.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_zbtsram1.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_zbtsram1.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_zbtsram1.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_zbtsram2.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_zbtsram2.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_zbtsram2.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_zbtsram2.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_zbtsram2.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_zbtsram2.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_zbtsram2.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_iotss_internal_sram.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_iotss_internal_sram.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_iotss_internal_sram.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_iotss_internal_sram.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_iotss_internal_sram.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_iotss_internal_sram.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_iotss_internal_sram.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.dma0_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma0_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma1_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma1_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma2_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma2_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma3_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma3_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma0.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma0.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma0.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma0.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma1.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma1.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma1.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma1.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma2.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma2.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma2.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma2.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma3.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma3.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma3.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma3.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.iotss_systemcontrol.cpu0wait=0 # (bool , init-time) default = '0' : Whether to hold cpu1 in reset at boot +fvp_mps2.iotss_systemcontrol.cpu1wait=1 # (bool , init-time) default = '1' : Whether to hold cpu1 in reset at boot +fvp_mps2.iotss_cpuidentity.debugger_master_id=0xFFFFFFFF # (int , init-time) default = '0xFFFFFFFF' : : [0x0..0xFFFFFFFF] +#---------------------------------------------------------------------------------------------- diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_DSP_config.txt b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_DSP_config.txt new file mode 100644 index 0000000..cb9fd3d --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_DSP_config.txt @@ -0,0 +1,183 @@ +# Parameters: +# instance.parameter=value #(type, mode) default = 'def value' : description : [min..max] +#---------------------------------------------------------------------------------------------- +cpu0.FPU=0 # (bool , init-time) default = '1' : Set whether the model has VFP support +cpu0.DSP=1 # (bool , init-time) default = '1' : Set whether the model has the DSP extension +cpu0.semihosting-enable=0 # (bool , init-time) default = '1' : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false. +cpu0.MPU_S=0x8 # (int , init-time) default = '0x8' : Number of regions in the Secure MPU. If Security Extentions are absent, this is ignored : [0x0..0x10] +cpu0.MPU_NS=0x8 # (int , init-time) default = '0x8' : Number of regions in the Non-Secure MPU. If Security Extentions are absent, this is the total number of MPU regions : [0x0..0x10] +cpu0.ITM=0 # (bool , init-time) default = '1' : Level of instrumentation trace supported. false : No ITM trace included, true: ITM trace included +cpu0.IRQLVL=0x3 # (int , init-time) default = '0x3' : Number of bits of interrupt priority : [0x3..0x8] +cpu0.BIGENDINIT=0 # (bool , init-time) default = '0' : Initialize processor to big endian mode +cpu0.INITSVTOR=0x00000000 # (int , init-time) default = '0x10000000' : Secure vector-table offset at reset : [0x0..0xFFFFFF80] +cpu0.INITNSVTOR=0x0 # (int , init-time) default = '0x0' : Non-Secure vector-table offset at reset : [0x0..0xFFFFFF80] +cpu0.SAU=0x0 # (int , init-time) default = '0x4' : Number of SAU regions (0 => no SAU) : [0x0..0x8] +cpu0.SAU_CTRL.ENABLE=0 # (bool , init-time) default = '0' : Enable SAU at reset +cpu0.SAU_CTRL.ALLNS=0 # (bool , init-time) default = '0' : At reset, the SAU treats entire memory space as NS when the SAU is disabled if this is set +cpu0.NUM_IDAU_REGION=0x0 # (int , init-time) default = '0xA' : +cpu0.LOCK_SAU=0 # (bool , init-time) default = '0' : Lock down of SAU registers write +cpu0.LOCK_S_MPU=0 # (bool , init-time) default = '0' : Lock down of Secure MPU registers write +cpu0.LOCK_NS_MPU=0 # (bool , init-time) default = '0' : Lock down of Non-Secure MPU registers write +cpu0.CPIF=1 # (bool , init-time) default = '1' : Specifies whether the external coprocessor interface is included +cpu0.SECEXT=0 # (bool , init-time) default = '1' : Whether the ARMv8-M Security Extensions are included +fvp_mps2.DISABLE_GATING=1 # (bool , init-time) default = '0' : Disable Memory gating logic +fvp_mps2.NUM_IDAU_REGION=0x0 # (int , init-time) default = '0xA' : +fvp_mps2.SCC_ID.Variant=0x0 # (int , init-time) default = '0x0' : SCC_ID[23:20], X in the FGPA version 'rXpY' : [0x0..0xF] +fvp_mps2.SCC_ID.Revision=0x1 # (int , init-time) default = '0x1' : SCC_ID[3:0], Y in the FGPA version 'rXpY' : [0x0..0xF] +fvp_mps2.platform_type=0x0 # (int , init-time) default = '0x0' : 0:MPS2 ; 1:IoT Kit ; 2:Castor : [0x0..0x2] +fvp_mps2.extra_psram=0 # (bool , init-time) default = '0' : Increases PSRAM to 32Mb +fvp_mps2.UART2.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART2.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART2.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART2.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART2.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART2.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.UART1.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART1.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART1.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART1.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART1.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART1.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.mps2_visualisation.rate_limit-enable=1 # (bool , init-time) default = '1' : Rate limit simulation. +fvp_mps2.mps2_visualisation.disable-visualisation=0 # (bool , init-time) default = '0' : Enable/disable visualisation +fvp_mps2.mps2_visualisation.window_title="CLCD %cpu%" # (string, init-time) default = 'CLCD %cpu%' : Window title (%cpu% is replaced by cpu_name) +fvp_mps2.mps2_visualisation.idler.delay_ms=0x32 # (int , init-time) default = '0x32' : Determines the period, in milliseconds of real time, between gui_callback() calls. +fvp_mps2.telnetterminal0.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal0.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal0.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal0.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal0.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.telnetterminal1.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal1.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal1.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal1.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal1.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.telnetterminal2.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal2.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal2.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal2.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal2.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.PSRAM_M7.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.PSRAM_M7.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.PSRAM_M7.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.UART0.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART0.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART0.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART0.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART0.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART0.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.cmsdk_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.s32k_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.secure_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.nonsecure_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.PSRAM.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.PSRAM.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.PSRAM.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram2.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.ssram2.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram2.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram1.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.ssram1.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram1.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.stub.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram0.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram0.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram0.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram1.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram1.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram1.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram2.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram2.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram2.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram3.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram3.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram3.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.sys_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.sys_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu0core_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu0dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu1core_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cpu1core_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu1dbg_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cpu1dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.crypto_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.crypto_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cordio_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cordio_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.dbg_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram0_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram0_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram1_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram1_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram2_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram2_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram3_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram3_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.smsc_91c111.enabled=0 # (bool , init-time) default = '0' : Host interface connection enabled +fvp_mps2.smsc_91c111.mac_address="00:02:f7:ef:5d:a2" # (string, init-time) default = '00:02:f7:ef:5d:a2' : Host/model MAC address +fvp_mps2.smsc_91c111.promiscuous=1 # (bool , init-time) default = '1' : Put host into promiscuous mode +fvp_mps2.hostbridge.interfaceName="ARM0" # (string, init-time) default = 'ARM0' : Host Interface +fvp_mps2.hostbridge.userNetworking=0 # (bool , init-time) default = '0' : Enable user-mode networking +fvp_mps2.hostbridge.userNetSubnet="172.20.51.0/24" # (string, init-time) default = '172.20.51.0/24' : Virtual subnet for user-mode networking +fvp_mps2.hostbridge.userNetPorts="" # (string, init-time) default = '' : Listening ports to expose in user-mode networking +fvp_mps2.secure_control_register_block.FLASH_BLOCK_CFG=0x3 # (int , init-time) default = '0x3' : Flash Block size configuration : [0x0..0x31] +fvp_mps2.secure_control_register_block.SRAM_BLOCK_CFG=0x3 # (int , init-time) default = '0x3' : SRAM Block size configuration : [0x0..0x31] +fvp_mps2.secure_control_register_block.FLASH_WATERMARK_SUPPORTED=1 # (bool , init-time) default = '1' : Flash Watermark supported +fvp_mps2.secure_control_register_block.SRAM_WATERMARK_SUPPORTED=1 # (bool , init-time) default = '1' : SRAM Watermark supported +fvp_mps2.exclusive_monitor_psram.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_psram.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_psram.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_psram.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_psram.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_psram.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_psram.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_zbtsram1.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_zbtsram1.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_zbtsram1.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_zbtsram1.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_zbtsram1.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_zbtsram1.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_zbtsram1.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_zbtsram2.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_zbtsram2.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_zbtsram2.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_zbtsram2.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_zbtsram2.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_zbtsram2.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_zbtsram2.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_iotss_internal_sram.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_iotss_internal_sram.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_iotss_internal_sram.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_iotss_internal_sram.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_iotss_internal_sram.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_iotss_internal_sram.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_iotss_internal_sram.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.dma0_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma0_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma1_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma1_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma2_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma2_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma3_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma3_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma0.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma0.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma0.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma0.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma1.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma1.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma1.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma1.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma2.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma2.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma2.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma2.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma3.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma3.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma3.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma3.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.iotss_systemcontrol.cpu0wait=0 # (bool , init-time) default = '0' : Whether to hold cpu1 in reset at boot +fvp_mps2.iotss_systemcontrol.cpu1wait=1 # (bool , init-time) default = '1' : Whether to hold cpu1 in reset at boot +fvp_mps2.iotss_cpuidentity.debugger_master_id=0xFFFFFFFF # (int , init-time) default = '0xFFFFFFFF' : : [0x0..0xFFFFFFFF] +#---------------------------------------------------------------------------------------------- diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_FP_config.txt b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_FP_config.txt new file mode 100644 index 0000000..6812151 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_FP_config.txt @@ -0,0 +1,183 @@ +# Parameters: +# instance.parameter=value #(type, mode) default = 'def value' : description : [min..max] +#---------------------------------------------------------------------------------------------- +cpu0.FPU=1 # (bool , init-time) default = '1' : Set whether the model has VFP support +cpu0.DSP=0 # (bool , init-time) default = '1' : Set whether the model has the DSP extension +cpu0.semihosting-enable=0 # (bool , init-time) default = '1' : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false. +cpu0.MPU_S=0x8 # (int , init-time) default = '0x8' : Number of regions in the Secure MPU. If Security Extentions are absent, this is ignored : [0x0..0x10] +cpu0.MPU_NS=0x8 # (int , init-time) default = '0x8' : Number of regions in the Non-Secure MPU. If Security Extentions are absent, this is the total number of MPU regions : [0x0..0x10] +cpu0.ITM=0 # (bool , init-time) default = '1' : Level of instrumentation trace supported. false : No ITM trace included, true: ITM trace included +cpu0.IRQLVL=0x3 # (int , init-time) default = '0x3' : Number of bits of interrupt priority : [0x3..0x8] +cpu0.BIGENDINIT=0 # (bool , init-time) default = '0' : Initialize processor to big endian mode +cpu0.INITSVTOR=0x00000000 # (int , init-time) default = '0x10000000' : Secure vector-table offset at reset : [0x0..0xFFFFFF80] +cpu0.INITNSVTOR=0x0 # (int , init-time) default = '0x0' : Non-Secure vector-table offset at reset : [0x0..0xFFFFFF80] +cpu0.SAU=0x0 # (int , init-time) default = '0x4' : Number of SAU regions (0 => no SAU) : [0x0..0x8] +cpu0.SAU_CTRL.ENABLE=0 # (bool , init-time) default = '0' : Enable SAU at reset +cpu0.SAU_CTRL.ALLNS=0 # (bool , init-time) default = '0' : At reset, the SAU treats entire memory space as NS when the SAU is disabled if this is set +cpu0.NUM_IDAU_REGION=0x0 # (int , init-time) default = '0xA' : +cpu0.LOCK_SAU=0 # (bool , init-time) default = '0' : Lock down of SAU registers write +cpu0.LOCK_S_MPU=0 # (bool , init-time) default = '0' : Lock down of Secure MPU registers write +cpu0.LOCK_NS_MPU=0 # (bool , init-time) default = '0' : Lock down of Non-Secure MPU registers write +cpu0.CPIF=1 # (bool , init-time) default = '1' : Specifies whether the external coprocessor interface is included +cpu0.SECEXT=0 # (bool , init-time) default = '1' : Whether the ARMv8-M Security Extensions are included +fvp_mps2.DISABLE_GATING=1 # (bool , init-time) default = '0' : Disable Memory gating logic +fvp_mps2.NUM_IDAU_REGION=0x0 # (int , init-time) default = '0xA' : +fvp_mps2.SCC_ID.Variant=0x0 # (int , init-time) default = '0x0' : SCC_ID[23:20], X in the FGPA version 'rXpY' : [0x0..0xF] +fvp_mps2.SCC_ID.Revision=0x1 # (int , init-time) default = '0x1' : SCC_ID[3:0], Y in the FGPA version 'rXpY' : [0x0..0xF] +fvp_mps2.platform_type=0x0 # (int , init-time) default = '0x0' : 0:MPS2 ; 1:IoT Kit ; 2:Castor : [0x0..0x2] +fvp_mps2.extra_psram=0 # (bool , init-time) default = '0' : Increases PSRAM to 32Mb +fvp_mps2.UART2.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART2.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART2.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART2.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART2.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART2.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.UART1.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART1.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART1.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART1.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART1.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART1.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.mps2_visualisation.rate_limit-enable=1 # (bool , init-time) default = '1' : Rate limit simulation. +fvp_mps2.mps2_visualisation.disable-visualisation=0 # (bool , init-time) default = '0' : Enable/disable visualisation +fvp_mps2.mps2_visualisation.window_title="CLCD %cpu%" # (string, init-time) default = 'CLCD %cpu%' : Window title (%cpu% is replaced by cpu_name) +fvp_mps2.mps2_visualisation.idler.delay_ms=0x32 # (int , init-time) default = '0x32' : Determines the period, in milliseconds of real time, between gui_callback() calls. +fvp_mps2.telnetterminal0.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal0.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal0.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal0.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal0.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.telnetterminal1.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal1.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal1.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal1.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal1.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.telnetterminal2.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal2.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal2.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal2.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal2.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.PSRAM_M7.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.PSRAM_M7.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.PSRAM_M7.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.UART0.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART0.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART0.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART0.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART0.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART0.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.cmsdk_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.s32k_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.secure_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.nonsecure_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.PSRAM.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.PSRAM.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.PSRAM.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram2.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.ssram2.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram2.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram1.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.ssram1.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram1.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.stub.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram0.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram0.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram0.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram1.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram1.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram1.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram2.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram2.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram2.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram3.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram3.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram3.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.sys_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.sys_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu0core_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu0dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu1core_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cpu1core_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu1dbg_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cpu1dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.crypto_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.crypto_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cordio_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cordio_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.dbg_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram0_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram0_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram1_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram1_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram2_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram2_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram3_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram3_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.smsc_91c111.enabled=0 # (bool , init-time) default = '0' : Host interface connection enabled +fvp_mps2.smsc_91c111.mac_address="00:02:f7:ef:5d:a2" # (string, init-time) default = '00:02:f7:ef:5d:a2' : Host/model MAC address +fvp_mps2.smsc_91c111.promiscuous=1 # (bool , init-time) default = '1' : Put host into promiscuous mode +fvp_mps2.hostbridge.interfaceName="ARM0" # (string, init-time) default = 'ARM0' : Host Interface +fvp_mps2.hostbridge.userNetworking=0 # (bool , init-time) default = '0' : Enable user-mode networking +fvp_mps2.hostbridge.userNetSubnet="172.20.51.0/24" # (string, init-time) default = '172.20.51.0/24' : Virtual subnet for user-mode networking +fvp_mps2.hostbridge.userNetPorts="" # (string, init-time) default = '' : Listening ports to expose in user-mode networking +fvp_mps2.secure_control_register_block.FLASH_BLOCK_CFG=0x3 # (int , init-time) default = '0x3' : Flash Block size configuration : [0x0..0x31] +fvp_mps2.secure_control_register_block.SRAM_BLOCK_CFG=0x3 # (int , init-time) default = '0x3' : SRAM Block size configuration : [0x0..0x31] +fvp_mps2.secure_control_register_block.FLASH_WATERMARK_SUPPORTED=1 # (bool , init-time) default = '1' : Flash Watermark supported +fvp_mps2.secure_control_register_block.SRAM_WATERMARK_SUPPORTED=1 # (bool , init-time) default = '1' : SRAM Watermark supported +fvp_mps2.exclusive_monitor_psram.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_psram.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_psram.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_psram.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_psram.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_psram.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_psram.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_zbtsram1.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_zbtsram1.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_zbtsram1.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_zbtsram1.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_zbtsram1.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_zbtsram1.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_zbtsram1.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_zbtsram2.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_zbtsram2.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_zbtsram2.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_zbtsram2.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_zbtsram2.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_zbtsram2.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_zbtsram2.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_iotss_internal_sram.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_iotss_internal_sram.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_iotss_internal_sram.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_iotss_internal_sram.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_iotss_internal_sram.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_iotss_internal_sram.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_iotss_internal_sram.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.dma0_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma0_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma1_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma1_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma2_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma2_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma3_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma3_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma0.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma0.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma0.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma0.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma1.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma1.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma1.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma1.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma2.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma2.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma2.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma2.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma3.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma3.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma3.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma3.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.iotss_systemcontrol.cpu0wait=0 # (bool , init-time) default = '0' : Whether to hold cpu1 in reset at boot +fvp_mps2.iotss_systemcontrol.cpu1wait=1 # (bool , init-time) default = '1' : Whether to hold cpu1 in reset at boot +fvp_mps2.iotss_cpuidentity.debugger_master_id=0xFFFFFFFF # (int , init-time) default = '0xFFFFFFFF' : : [0x0..0xFFFFFFFF] +#---------------------------------------------------------------------------------------------- diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_config.txt b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_config.txt new file mode 100644 index 0000000..a2d1052 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_FVP/ARMCM33_config.txt @@ -0,0 +1,183 @@ +# Parameters: +# instance.parameter=value #(type, mode) default = 'def value' : description : [min..max] +#---------------------------------------------------------------------------------------------- +cpu0.FPU=0 # (bool , init-time) default = '1' : Set whether the model has VFP support +cpu0.DSP=0 # (bool , init-time) default = '1' : Set whether the model has the DSP extension +cpu0.semihosting-enable=0 # (bool , init-time) default = '1' : Enable semihosting SVC traps. Applications that do not use semihosting must set this parameter to false. +cpu0.MPU_S=0x8 # (int , init-time) default = '0x8' : Number of regions in the Secure MPU. If Security Extentions are absent, this is ignored : [0x0..0x10] +cpu0.MPU_NS=0x8 # (int , init-time) default = '0x8' : Number of regions in the Non-Secure MPU. If Security Extentions are absent, this is the total number of MPU regions : [0x0..0x10] +cpu0.ITM=0 # (bool , init-time) default = '1' : Level of instrumentation trace supported. false : No ITM trace included, true: ITM trace included +cpu0.IRQLVL=0x3 # (int , init-time) default = '0x3' : Number of bits of interrupt priority : [0x3..0x8] +cpu0.BIGENDINIT=0 # (bool , init-time) default = '0' : Initialize processor to big endian mode +cpu0.INITSVTOR=0x00000000 # (int , init-time) default = '0x10000000' : Secure vector-table offset at reset : [0x0..0xFFFFFF80] +cpu0.INITNSVTOR=0x0 # (int , init-time) default = '0x0' : Non-Secure vector-table offset at reset : [0x0..0xFFFFFF80] +cpu0.SAU=0x0 # (int , init-time) default = '0x4' : Number of SAU regions (0 => no SAU) : [0x0..0x8] +cpu0.SAU_CTRL.ENABLE=0 # (bool , init-time) default = '0' : Enable SAU at reset +cpu0.SAU_CTRL.ALLNS=0 # (bool , init-time) default = '0' : At reset, the SAU treats entire memory space as NS when the SAU is disabled if this is set +cpu0.NUM_IDAU_REGION=0x0 # (int , init-time) default = '0xA' : +cpu0.LOCK_SAU=0 # (bool , init-time) default = '0' : Lock down of SAU registers write +cpu0.LOCK_S_MPU=0 # (bool , init-time) default = '0' : Lock down of Secure MPU registers write +cpu0.LOCK_NS_MPU=0 # (bool , init-time) default = '0' : Lock down of Non-Secure MPU registers write +cpu0.CPIF=1 # (bool , init-time) default = '1' : Specifies whether the external coprocessor interface is included +cpu0.SECEXT=0 # (bool , init-time) default = '1' : Whether the ARMv8-M Security Extensions are included +fvp_mps2.DISABLE_GATING=1 # (bool , init-time) default = '0' : Disable Memory gating logic +fvp_mps2.NUM_IDAU_REGION=0x0 # (int , init-time) default = '0xA' : +fvp_mps2.SCC_ID.Variant=0x0 # (int , init-time) default = '0x0' : SCC_ID[23:20], X in the FGPA version 'rXpY' : [0x0..0xF] +fvp_mps2.SCC_ID.Revision=0x1 # (int , init-time) default = '0x1' : SCC_ID[3:0], Y in the FGPA version 'rXpY' : [0x0..0xF] +fvp_mps2.platform_type=0x0 # (int , init-time) default = '0x0' : 0:MPS2 ; 1:IoT Kit ; 2:Castor : [0x0..0x2] +fvp_mps2.extra_psram=0 # (bool , init-time) default = '0' : Increases PSRAM to 32Mb +fvp_mps2.UART2.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART2.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART2.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART2.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART2.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART2.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.UART1.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART1.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART1.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART1.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART1.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART1.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.mps2_visualisation.rate_limit-enable=1 # (bool , init-time) default = '1' : Rate limit simulation. +fvp_mps2.mps2_visualisation.disable-visualisation=0 # (bool , init-time) default = '0' : Enable/disable visualisation +fvp_mps2.mps2_visualisation.window_title="CLCD %cpu%" # (string, init-time) default = 'CLCD %cpu%' : Window title (%cpu% is replaced by cpu_name) +fvp_mps2.mps2_visualisation.idler.delay_ms=0x32 # (int , init-time) default = '0x32' : Determines the period, in milliseconds of real time, between gui_callback() calls. +fvp_mps2.telnetterminal0.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal0.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal0.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal0.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal0.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.telnetterminal1.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal1.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal1.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal1.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal1.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.telnetterminal2.mode="telnet" # (string, init-time) default = 'telnet' : Terminal initialisation mode +fvp_mps2.telnetterminal2.start_telnet=1 # (bool , init-time) default = '1' : Start telnet if nothing connected +fvp_mps2.telnetterminal2.start_port=0x1388 # (int , init-time) default = '0x1388' : Telnet TCP Port Number : [0x0..0xFFFFFFFF] +fvp_mps2.telnetterminal2.quiet=0 # (bool , init-time) default = '0' : Avoid output on stdout/stderr +fvp_mps2.telnetterminal2.terminal_command="" # (string, init-time) default = '' : Commandline to launch a terminal application and connect to the opened TCP port. Keywords %port and %title will be replaced with the opened port number and component name respectively. An empty string (default behaviour) will launch xterm (Linux) or telnet.exe (Windows) +fvp_mps2.PSRAM_M7.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.PSRAM_M7.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.PSRAM_M7.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.UART0.out_file="" # (string, init-time) default = '' : Output file to hold data written by the UART (use '-' to send all output to stdout) +fvp_mps2.UART0.in_file="" # (string, init-time) default = '' : Input file for data to be read by the UART +fvp_mps2.UART0.unbuffered_output=0 # (bool , init-time) default = '0' : Unbuffered output +fvp_mps2.UART0.in_file_escape_sequence="##" # (string, init-time) default = '##' : Input file escape sequence +fvp_mps2.UART0.shutdown_on_eot=0 # (bool , init-time) default = '0' : Shutdown simulation when a EOT (ASCII 4) char is transmitted (useful for regression tests when semihosting is not available) +fvp_mps2.UART0.shutdown_tag="" # (string, run-time ) default = '' : Shutdown simulation when a string is transmitted +fvp_mps2.cmsdk_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.s32k_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.secure_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.nonsecure_watchdog.simhalt=0 # (bool , run-time ) default = '0' : Halt on reset. +fvp_mps2.PSRAM.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.PSRAM.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.PSRAM.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram2.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.ssram2.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram2.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram1.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.ssram1.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.ssram1.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.stub.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram0.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram0.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram0.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram1.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram1.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram1.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram2.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram2.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram2.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram3.size=0x100000000 # (int , init-time) default = '0x100000000' : Memory Size +fvp_mps2.iotss_internal_sram3.fill1=0xDFDFDFCF # (int , init-time) default = '0xDFDFDFCF' : Fill pattern 1, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.iotss_internal_sram3.fill2=0xCFDFDFDF # (int , init-time) default = '0xCFDFDFDF' : Fill pattern 2, initialise memory at start of simulation with alternating fill1, fill2 pattern +fvp_mps2.sys_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.sys_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu0core_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu0dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu1core_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cpu1core_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cpu1dbg_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cpu1dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.crypto_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.crypto_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.cordio_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.cordio_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.dbg_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.dbg_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram0_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram0_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram1_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram1_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram2_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram2_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.ram3_ppu.use_active_signal=0 # (bool , init-time) default = '0' : Use device-active signal +fvp_mps2.ram3_ppu.revision="r0p0" # (string, init-time) default = 'r0p0' : Revision +fvp_mps2.smsc_91c111.enabled=0 # (bool , init-time) default = '0' : Host interface connection enabled +fvp_mps2.smsc_91c111.mac_address="00:02:f7:ef:5d:a2" # (string, init-time) default = '00:02:f7:ef:5d:a2' : Host/model MAC address +fvp_mps2.smsc_91c111.promiscuous=1 # (bool , init-time) default = '1' : Put host into promiscuous mode +fvp_mps2.hostbridge.interfaceName="ARM0" # (string, init-time) default = 'ARM0' : Host Interface +fvp_mps2.hostbridge.userNetworking=0 # (bool , init-time) default = '0' : Enable user-mode networking +fvp_mps2.hostbridge.userNetSubnet="172.20.51.0/24" # (string, init-time) default = '172.20.51.0/24' : Virtual subnet for user-mode networking +fvp_mps2.hostbridge.userNetPorts="" # (string, init-time) default = '' : Listening ports to expose in user-mode networking +fvp_mps2.secure_control_register_block.FLASH_BLOCK_CFG=0x3 # (int , init-time) default = '0x3' : Flash Block size configuration : [0x0..0x31] +fvp_mps2.secure_control_register_block.SRAM_BLOCK_CFG=0x3 # (int , init-time) default = '0x3' : SRAM Block size configuration : [0x0..0x31] +fvp_mps2.secure_control_register_block.FLASH_WATERMARK_SUPPORTED=1 # (bool , init-time) default = '1' : Flash Watermark supported +fvp_mps2.secure_control_register_block.SRAM_WATERMARK_SUPPORTED=1 # (bool , init-time) default = '1' : SRAM Watermark supported +fvp_mps2.exclusive_monitor_psram.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_psram.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_psram.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_psram.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_psram.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_psram.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_psram.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_zbtsram1.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_zbtsram1.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_zbtsram1.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_zbtsram1.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_zbtsram1.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_zbtsram1.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_zbtsram1.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_zbtsram2.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_zbtsram2.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_zbtsram2.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_zbtsram2.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_zbtsram2.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_zbtsram2.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_zbtsram2.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.exclusive_monitor_iotss_internal_sram.enable_component=1 # (bool , init-time) default = '1' : Enable component +fvp_mps2.exclusive_monitor_iotss_internal_sram.number_of_monitors=0x8 # (int , init-time) default = '0x8' : Number of monitors : [0x1..0xFFFFFFFF] +fvp_mps2.exclusive_monitor_iotss_internal_sram.log2_granule_size=0x0 # (int , init-time) default = '0x0' : log2 of address granule size : [0x0..0xB] +fvp_mps2.exclusive_monitor_iotss_internal_sram.monitor_non_excl_stores=0 # (bool , init-time) default = '0' : Monitor non-exclusive stores from the same master +fvp_mps2.exclusive_monitor_iotss_internal_sram.match_secure_state=1 # (bool , init-time) default = '1' : Treat the secure state like an address bit +fvp_mps2.exclusive_monitor_iotss_internal_sram.shareability_domain=0x3 # (int , init-time) default = '0x3' : Maximum shareability domain of interest, transactions outside of the domain will pass through un-monitored (0-non-shared, 1-inner, 2-outer, 3-system) : [0x0..0x3] +fvp_mps2.exclusive_monitor_iotss_internal_sram.apply_access_width_criteria_to_non_excl_stores=1 # (bool , init-time) default = '1' : Apply the given exclusive store width matching criteria to non-exclusive stores +fvp_mps2.dma0_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma0_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma1_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma1_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma2_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma2_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma3_securitymodifier.behaviour_ns_to_s=0x0 # (int , init-time) default = '0x0' : Behaviour for NS transactions to S space : 0:block 1:transmit 2:convert to S +fvp_mps2.dma3_securitymodifier.behaviour_s_to_ns=0x0 # (int , init-time) default = '0x0' : Behaviour for S transactions to NS space : 0:block 1:transmit 2:convert to NS +fvp_mps2.dma0.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma0.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma0.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma0.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma1.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma1.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma1.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma1.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma2.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma2.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma2.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma2.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.dma3.fifo_size=0x10 # (int , init-time) default = '0x10' : Channel FIFO size in bytes +fvp_mps2.dma3.max_transfer=0x100 # (int , init-time) default = '0x100' : Largest atomic transfer +fvp_mps2.dma3.generate_clear=0 # (bool , init-time) default = '0' : Generate clear response +fvp_mps2.dma3.activate_delay=0x0 # (int , init-time) default = '0x0' : request delay +fvp_mps2.iotss_systemcontrol.cpu0wait=0 # (bool , init-time) default = '0' : Whether to hold cpu1 in reset at boot +fvp_mps2.iotss_systemcontrol.cpu1wait=1 # (bool , init-time) default = '1' : Whether to hold cpu1 in reset at boot +fvp_mps2.iotss_cpuidentity.debugger_master_id=0xFFFFFFFF # (int , init-time) default = '0xFFFFFFFF' : : [0x0..0xFFFFFFFF] +#---------------------------------------------------------------------------------------------- diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_MPS2/HowTo.txt b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_MPS2/HowTo.txt new file mode 100644 index 0000000..865ac15 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/DspLibTest_MPS2/HowTo.txt @@ -0,0 +1,29 @@ + +Used board: + MPS2+. + +Used BIOS: + mbb_v121.ebf ; use this for ULINKpro + mbb_v220.ebf ; CMSIS-DAP + +Used Images: + AN382\an382_v3.txt ; Cortex-M0 + AN385\an385_v3.txt ; Cortex-M3 + AN386\an386_v3.txt ; Cortex-M4 + AN500\an500_v1.txt ; Cortex-M7 + AN505\an505_v2.txt ; Cortex-M33 (IoT Kit) + AN519\an519_v1.txt ; Cortex-M23 (IoT Kit) + +Used Debugger: + IoT Kit: + ULINKpro, JTAG, 25MHz, HW Reset + other: + ULINKpro, JTAG, 25MHz, Autodetect + +Memory Settings: + IoT Kit: + ROM: 0x10000000 + RAM: 0x38000000 + other: + ROM: 0x00000000 + RAM: 0x20000000 \ No newline at end of file diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/HowTo.txt b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/HowTo.txt new file mode 100644 index 0000000..39147ab --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/HowTo.txt @@ -0,0 +1,144 @@ +HowTo DSP_Lib_TestSuite 16.12.2016 +======================================= + +This file describes the folder structure, content, prerequisites and instructions to validate the +build of the CMSIS-DSP library. This is done by processing input data sets using the DSP Library +functions executing on a target simulator or hardware. The output data sets are then compared +with the reference data set produced by unoptimized DSP functions and a Signal to Noise Ratio (SNR) +is computed. If the SNR is below a defined threshold the test is considered "passed". + + +Folder structure +---------------- + .\DSP_Lib_TestSuite Batch files for building the reference libraries and running the tests. + .\DSP_Lib_TestSuite\Common + .\DSP_Lib_TestSuite\Common\inc DSP_Lib test include files + .\DSP_Lib_TestSuite\Common\JTest JTEST Test Framework + INI files for uVision + .\DSP_Lib_TestSuite\Common\platform ARM/GCC device startup/system files + .\DSP_Lib_TestSuite\Common\src DSP_Lib test source files + .\DSP_Lib_TestSuite\DspLibTest_FVP ARM/GCC DSP_Lib test projects for Fixed Virtual Platforms + .\DSP_Lib_TestSuite\DspLibTest_MPS2 ARM/GCC DSP_Lib test projects for MPS2 + .\DSP_Lib_TestSuite\DspLibTest_Simulator ARM/GCC DSP_Lib test projects for uVision simulator + .\DSP_Lib_TestSuite\RefLibs ARM/GCC DSP_Lib reference libraries (and projects) + + + +Prerequisites +-------------- + - Python (running on Windows). Tested with ActivePython 2.7.8.10. + - Keil MDK-ARM (tested with MDK-ARM 5.22: http://www2.keil.com/mdk5) + - ULINKpro debug adapter (http://www2.keil.com/mdk5/ulink) + - MPS2 (Cortex-M Prototyping System:https://www.arm.com/products/tools/development-boards/versatile-express/cortex-m-prototyping-system.php) + - CMSIS 5.0.0 (https://github.com/ARM-software/CMSIS_5/releases/tag/5.0.0) + + +Setup +------ + - Copy DSP_Lib_TestSuite to the CMSIS installation/pack folder. + ... + .\Keil_v5\ARM\PACK\ARM\CMSIS\DSP_Lib + .\Keil_v5\ARM\PACK\ARM\CMSIS\DSP_Lib_TestSuite <- location of DSP_Lib_TestSuite + .\Keil_v5\ARM\PACK\ARM\CMSIS\Include + ... + + - remove 'read-only' tag from folder ./CMSIS/Lib + (required for rebuild of the DSP_Lib libraries) + + - open a Windows command window in folder .\CMSIS\DSP_Lib_TestSuite. + + + +How to run the tests +--------------------- + +a) build the DSP_Lib libraries: + - batch file: buildDspLibs.bat + Note: only require if the DSP_Lib source code got updated or the desired configuration is missing + buildDspLibs.bat overwrites the prebuild libraries in .\CMSIS\Lib. + Log files of the build process are generated in folder .\CMSIS\DSP_Lib/[ARM|GCC] + - run: buildDspLibs.bat in a Windows command window in folder ./CMSIS/DSP_Lib_TestSuite + buildDspLibs ARM -> builds the ARMCC libraries + buildDspLibs GCC -> builds the GCC libraries + +b) build the reference libraries: + - batch file: buildRefLibs.bat + + Log files of the build process are generated in folder .\CMSIS\DSP_Lib_TestSuite\RefLibs/[ARM|GCC] + - run: buildRefLibs.bat in a Windows command window in folder .\CMSIS\DSP_Lib_TestSuite + buildRefLibs ARM -> builds the ARMCC reference libraries + buildRefLibs GCC -> builds the GCC reference libraries + +c) running an individual test using uVision (MDK-ARM): + - batch file: runTest.bat + - run: runTest.bat in a Windows command window in folder .\CMSIS\DSP_Lib_TestSuite + runTest -> prints usage information + e.g. runTest ARM cortexM4lf Simulator -> runs the test for toolchain ARM, Cortex-M4 littel endian with FPU, uVision Simulator. + + Tests running on MPS2 requires additional steps to setup. See section 'MPS2'. + +d) parsing the test output log file + - script: parseLog.py + - run: parseLog.py python script in a Windows command window in folder .\CMSIS\DSP_Lib_TestSuite + command line options should match the invocation of the runTest executed before. + e.g: runTest ARM cortexM4lf Simulator -> python parseLog.py ARM cortexM4lf Simulator + + - check the test log + depending on your test parameters change into the required folder + .\DSP_Lib_TestSuite\DspLibTest_[FVP|MPS2|Simulator]\[ARM|GCC]\Logs + the folder will contain the following files (e.g. for a 'runTest') : + DspLibTest_Simulator.log raw result of the last test run. + DspLibTest_Simulator_cortexM4lf.log raw result of a cortexM4lf test run + DspLibTest_Simulator_cortexM4lf_build.log build result of cortexM4lf test + DspLibTest_Simulator_cortexM4lf_parsed.log parsed log of raw result of a cortexM4lf test run + DspLibTest_Simulator_cortexM4lf_time.log log how long the test took (some tests e.g. M0 take really a long time!). + 'runTest' produces files of the format: DspLibTest__... + + +Differences between the tests for FVP, MPS2, Simulator +------------------------------------------------------ + - all tests are identical except for: + 'Simulator' uses uVision with uVision simulator and generates also code coverage information + can be used for little/big endian tests + ! do not use 'Simulator' for M7 with FPU -> no uVision simulation available. + ! do not use 'Simulator' for ARMv8-M devices -> no uVision simulation available. + 'MPS2' uses uVision with ULINKpro debugger and MPS2. No code coverage information is generated. + can be used for little endian only (because of the lack of MPS2 FPGA images). + 'FVP' uses uVision with Models debugger. No code coverage information is generated. + can be used for little/big endian tests. + ! config files must be prepared. + ! uVision target for big endianess are not yet prepared. + + +Setup 'MPS2' +------------- + - load the appropriate FPGA image to the MPS2 board matching the CPU of the test builds prior to running the test + - check if ULINKpro can connect with the configured debug connection (JTAG or SWD) as this must + match the protocol implemented in the FPGA image. + + +How to select tests for "run all tests" +---------------------------------------- + - edit .\CMSIS\DSP_Lib_TestSuite\Common\src\all_tests.c + comment out all unwanted test groups. + e.g. // JTEST_GROUP_CALL(complex_math_tests); + + - edit .\CMSIS\DSP_Lib_TestSuite\Common\src\/_group.c + comment out all unwanted sub test groups. + e.g. file .\DSP_Lib_TestSuite\Common\src\basic_math_tests\basic_math_test_group.c -> // JTEST_GROUP_CALL(abs_tests); + + - edit .\CMSIS\DSP_Lib_TestSuite\Common\src\/_tests.c + comment out all unwanted tests. + e.g. file .\DSP_Lib_TestSuite\Common\src\basic_math_tests\abs_tests.c -> // JTEST_TEST_CALL(arm_abs_f32_test); + + +Notes +----- + - How to use ARM Clang (ARM Compiler 6): + in uVision 'Options for Target' tab you can select which compiler to use + by default uVision uses ARMCC V5 for Cortex-M devices and ARMCLANG V6 only for ARMv8M. + Only ARMv8M cores have been tested using ARMCLANG + + - test data used for the tests is used as provided by DSP Concepts. + + - some tests run for a very long time before they finish. This is expected + diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/inc/ref.h b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/inc/ref.h new file mode 100644 index 0000000..4ab5c3c --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/inc/ref.h @@ -0,0 +1,1396 @@ + +#ifndef _REF_H +#define _REF_H + +#include +#include +#include "arm_math.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +#ifndef PI +#define PI 3.14159265358979f +#endif + + /** + * @brief 8-bit fractional data type in 1.7 format. + */ +// typedef int8_t q7_t; + + /** + * @brief 16-bit fractional data type in 1.15 format. + */ +// typedef int16_t q15_t; + + /** + * @brief 32-bit fractional data type in 1.31 format. + */ +// typedef int32_t q31_t; + + /** + * @brief 64-bit fractional data type in 1.63 format. + */ +// typedef int64_t q63_t; + + /** + * @brief 32-bit floating-point type definition. + */ +// typedef float float32_t; + + /** + * @brief 64-bit floating-point type definition. + */ +// typedef double float64_t; + + + /** + * @brief Error status returned by some functions in the library. + */ + + typedef enum + { + REF_Q7 = 0, + REF_Q15, + REF_Q31, + REF_F32, + } dataType; + + +#define FLT_MAX 3.40282347e+38F +#define DBL_MAX 1.79769313486231571e+308 + +#define FLT_MIN 1.175494351e-38F +#define DBL_MIN 2.22507385850720138e-308 + +#define SCHAR_MIN (-128) + /* mimimum value for an object of type signed char */ +#define SCHAR_MAX 127 + /* maximum value for an object of type signed char */ +#define UCHAR_MAX 255 + /* maximum value for an object of type unsigned char */ +#define SHRT_MIN (-0x8000) + /* minimum value for an object of type short int */ +#define SHRT_MAX 0x7fff + /* maximum value for an object of type short int */ +#define USHRT_MAX 65535 + /* maximum value for an object of type unsigned short int */ +#define INT_MIN (~0x7fffffff) /* -2147483648 and 0x80000000 are unsigned */ + /* minimum value for an object of type int */ +#define INT_MAX 0x7fffffff + /* maximum value for an object of type int */ +#define UINT_MAX 0xffffffffU + /* maximum value for an object of type unsigned int */ +#define LONG_MIN (~0x7fffffffL) + /* minimum value for an object of type long int */ +#define LONG_MAX 0x7fffffffL + /* maximum value for an object of type long int */ +#define ULONG_MAX 0xffffffffUL + /* maximum value for an object of type unsigned long int */ + + /* + * Ref Lib Global Variables + */ +extern float32_t scratchArray[]; +extern arm_cfft_instance_f32 ref_cfft_sR_f32_len8192; + + /* + * Ref Lib Functions + */ + + /* + * Helper Functions + */ +q31_t ref_sat_n(q31_t num, uint32_t bits); + +q31_t ref_sat_q31(q63_t num); + +q15_t ref_sat_q15(q31_t num); + +q7_t ref_sat_q7(q15_t num); + +float32_t ref_pow(float32_t a, uint32_t b); + +extern float32_t tempMatrixArray[]; + +float32_t ref_detrm(float32_t *pSrc, float32_t *temp, uint32_t size); + +void ref_cofact(float32_t *pSrc, float32_t *pDst, float32_t *temp, uint32_t size); + +float64_t ref_detrm64(float64_t *pSrc, float64_t *temp, uint32_t size); + +void ref_cofact64(float64_t *pSrc, float64_t *pDst, float64_t *temp, uint32_t size); + + /* + * Basic Math Functions + */ +void ref_abs_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_abs_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_abs_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_abs_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + +void ref_add_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + +void ref_add_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + +void ref_add_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + +void ref_add_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + +void ref_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t blockSize, + float32_t * result); + +void ref_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t blockSize, + q63_t * result); + +void ref_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t blockSize, + q63_t * result); + +void ref_dot_prod_q7( + q7_t * pSrcA, + q7_t * pSrcB, + uint32_t blockSize, + q31_t * result); + +void ref_mult_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + +void ref_mult_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + +void ref_mult_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + +void ref_mult_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + +void ref_negate_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_negate_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_negate_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_negate_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + +void ref_offset_f32( + float32_t * pSrc, + float32_t offset, + float32_t * pDst, + uint32_t blockSize); + +void ref_offset_q31( + q31_t * pSrc, + q31_t offset, + q31_t * pDst, + uint32_t blockSize); + +void ref_offset_q15( + q15_t * pSrc, + q15_t offset, + q15_t * pDst, + uint32_t blockSize); + +void ref_offset_q7( + q7_t * pSrc, + q7_t offset, + q7_t * pDst, + uint32_t blockSize); + +void ref_scale_f32( + float32_t * pSrc, + float32_t scale, + float32_t * pDst, + uint32_t blockSize); + +void ref_scale_q31( + q31_t * pSrc, + q31_t scaleFract, + int8_t shift, + q31_t * pDst, + uint32_t blockSize); + +void ref_scale_q15( + q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize); + +void ref_scale_q7( + q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize); + +void ref_shift_q31( + q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize); + +void ref_shift_q15( + q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize); + +void ref_shift_q7( + q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize); + +void ref_sub_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + +void ref_sub_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + +void ref_sub_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + +void ref_sub_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + /* + * Complex Math Functions + */ +void ref_cmplx_conj_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + +void ref_cmplx_conj_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + +void ref_cmplx_conj_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + +void ref_cmplx_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t numSamples, + float32_t * realResult, + float32_t * imagResult); + +void ref_cmplx_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t numSamples, + q63_t * realResult, + q63_t * imagResult); + +void ref_cmplx_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t numSamples, + q31_t * realResult, + q31_t * imagResult); + +void ref_cmplx_mag_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + +void ref_cmplx_mag_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + +void ref_cmplx_mag_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + +void ref_cmplx_mag_squared_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + +void ref_cmplx_mag_squared_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + +void ref_cmplx_mag_squared_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + +void ref_cmplx_mult_cmplx_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t numSamples); + +void ref_cmplx_mult_cmplx_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t numSamples); + +void ref_cmplx_mult_cmplx_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t numSamples); + +void ref_cmplx_mult_real_f32( + float32_t * pSrcCmplx, + float32_t * pSrcReal, + float32_t * pCmplxDst, + uint32_t numSamples); + +void ref_cmplx_mult_real_q31( + q31_t * pSrcCmplx, + q31_t * pSrcReal, + q31_t * pCmplxDst, + uint32_t numSamples); + +void ref_cmplx_mult_real_q15( + q15_t * pSrcCmplx, + q15_t * pSrcReal, + q15_t * pCmplxDst, + uint32_t numSamples); + + /* + * Controller Functions + */ +void ref_sin_cos_f32( + float32_t theta, + float32_t * pSinVal, + float32_t * pCosVal); + +void ref_sin_cos_q31( + q31_t theta, + q31_t * pSinVal, + q31_t * pCosVal); + +float32_t ref_pid_f32( + arm_pid_instance_f32 * S, + float32_t in); + +q31_t ref_pid_q31( + arm_pid_instance_q31 * S, + q31_t in); + +q15_t ref_pid_q15( + arm_pid_instance_q15 * S, + q15_t in); + + /* + * Fast Math Functions + */ +#define ref_sin_f32(a) sinf(a) + +q31_t ref_sin_q31(q31_t x); + +q15_t ref_sin_q15(q15_t x); + +#define ref_cos_f32(a) cosf(a) + +q31_t ref_cos_q31(q31_t x); + +q15_t ref_cos_q15(q15_t x); + +arm_status ref_sqrt_q31(q31_t in, q31_t * pOut); + +arm_status ref_sqrt_q15(q15_t in, q15_t * pOut); + + /* + * Filtering Functions + */ +void ref_biquad_cascade_df2T_f32( + const arm_biquad_cascade_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_biquad_cascade_stereo_df2T_f32( + const arm_biquad_cascade_stereo_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_biquad_cascade_df2T_f64( + const arm_biquad_cascade_df2T_instance_f64 * S, + float64_t * pSrc, + float64_t * pDst, + uint32_t blockSize); + +void ref_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_conv_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + +arm_status ref_conv_partial_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + +void ref_conv_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + +void ref_conv_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + +arm_status ref_conv_partial_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + +arm_status ref_conv_partial_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + +void ref_conv_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + +#define ref_conv_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ + pScratch1, pScratch2) \ + ref_conv_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst) + +void ref_conv_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + +void ref_conv_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + +arm_status ref_conv_partial_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + +#define ref_conv_partial_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ + firstIndex, numPoints, \ + pScratch1, pScratch2) \ + ref_conv_partial_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ + firstIndex, numPoints) + +arm_status ref_conv_partial_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + +arm_status ref_conv_partial_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + +void ref_conv_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + +#define ref_conv_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ + pScratch1, pScratch2) \ + ref_conv_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst) + +arm_status ref_conv_partial_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + +#define ref_conv_partial_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ + firstIndex, numPoints, \ + pScratch1, pScratch2) \ + ref_conv_partial_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ + firstIndex, numPoints) + +void ref_correlate_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + +void ref_correlate_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + +void ref_correlate_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + +void ref_correlate_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + +#define ref_correlate_opt_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ + pScratch1) \ + ref_correlate_q15(pSrcA, srcALen, pSrcB, srcBLen, pDst) + +void ref_correlate_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + +void ref_correlate_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + +void ref_correlate_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + +#define ref_correlate_opt_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst, \ + pScratch1, pScratch2) \ + ref_correlate_q7(pSrcA, srcALen, pSrcB, srcBLen, pDst) + +void ref_fir_f32( + const arm_fir_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_fir_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_fir_fast_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_fir_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_fir_fast_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_fir_q7( + const arm_fir_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + +void ref_fir_decimate_f32( + const arm_fir_decimate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_fir_decimate_fast_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize); + +void ref_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize); + +void ref_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + +void ref_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + q7_t *pSrc, + q7_t *pDst, + q7_t *pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + +void ref_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_lms_f32( + const arm_lms_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + +void ref_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + +void ref_lms_q31( + const arm_lms_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + +void ref_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + +void ref_lms_q15( + const arm_lms_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + +void ref_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + +void ref_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /* + * Matrix Functions + */ +arm_status ref_mat_cmplx_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + +arm_status ref_mat_cmplx_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + +arm_status ref_mat_cmplx_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + +arm_status ref_mat_inverse_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst); + +arm_status ref_mat_inverse_f64( + const arm_matrix_instance_f64 * pSrc, + arm_matrix_instance_f64 * pDst); + +arm_status ref_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + +arm_status ref_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + +/* Alias for testing purposes*/ +#define ref_mat_mult_fast_q31 ref_mat_mult_q31 + +arm_status ref_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + +/* Alias for testing purposes*/ +#define ref_mat_mult_fast_q15 ref_mat_mult_q15 + +arm_status ref_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst); + +arm_status ref_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scale, + int32_t shift, + arm_matrix_instance_q31 * pDst); + +arm_status ref_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scale, + int32_t shift, + arm_matrix_instance_q15 * pDst); + +arm_status ref_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + +arm_status ref_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + +arm_status ref_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + +arm_status ref_mat_trans_f64( + const arm_matrix_instance_f64 * pSrc, + arm_matrix_instance_f64 * pDst); + +arm_status ref_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst); + +arm_status ref_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst); + +arm_status ref_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst); + +arm_status ref_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + +arm_status ref_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + +arm_status ref_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + /* + * Statistics Functions + */ +void ref_max_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + +void ref_max_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + +void ref_max_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + +void ref_max_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex); + +void ref_mean_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + +void ref_mean_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + +void ref_mean_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + +void ref_mean_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult); + +void ref_min_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + +void ref_min_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + +void ref_min_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + +void ref_min_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex); + +void ref_power_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + +void ref_power_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + +void ref_power_q15( + q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + +void ref_power_q7( + q7_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + +void ref_rms_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + +void ref_rms_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + +void ref_rms_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + +void ref_std_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + +void ref_std_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + +void ref_std_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + +void ref_var_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + +void ref_var_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + +void ref_var_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + /* + * Support Functions + */ +void ref_copy_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_copy_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_copy_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_copy_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + +void ref_fill_f32( + float32_t value, + float32_t * pDst, + uint32_t blockSize); + +void ref_fill_q31( + q31_t value, + q31_t * pDst, + uint32_t blockSize); + +void ref_fill_q15( + q15_t value, + q15_t * pDst, + uint32_t blockSize); + +void ref_fill_q7( + q7_t value, + q7_t * pDst, + uint32_t blockSize); + +void ref_q31_to_q15( + q31_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_q31_to_q7( + q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + +void ref_q15_to_q31( + q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_q15_to_q7( + q15_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + +void ref_q7_to_q31( + q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_q7_to_q15( + q7_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_q63_to_float( + q63_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_q31_to_float( + q31_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_q15_to_float( + q15_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_q7_to_float( + q7_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +void ref_float_to_q31( + float32_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + +void ref_float_to_q15( + float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +void ref_float_to_q7( + float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /* + * Transform Functions + */ +void ref_cfft_f32( + const arm_cfft_instance_f32 * S, + float32_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +void ref_cfft_q31( + const arm_cfft_instance_q31 * S, + q31_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +void ref_cfft_q15( + const arm_cfft_instance_q15 * S, + q15_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +void ref_cfft_radix2_f32( + const arm_cfft_radix2_instance_f32 * S, + float32_t * pSrc); + +void ref_cfft_radix2_q31( + const arm_cfft_radix2_instance_q31 * S, + q31_t * pSrc); + +void ref_cfft_radix2_q15( + const arm_cfft_radix2_instance_q15 * S, + q15_t * pSrc); + +void ref_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc); + +void ref_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc); + +void ref_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc); + +void ref_rfft_f32( + arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst); + +void ref_rfft_fast_f32( + arm_rfft_fast_instance_f32 * S, + float32_t * p, float32_t * pOut, + uint8_t ifftFlag); + +void ref_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst); + +void ref_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst); + +void ref_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer); + +void ref_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer); + +void ref_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer); + + /* + * Intrinsics + */ +q31_t ref__QADD8(q31_t x, q31_t y); +q31_t ref__QSUB8(q31_t x, q31_t y); +q31_t ref__QADD16(q31_t x, q31_t y); +q31_t ref__SHADD16(q31_t x, q31_t y); +q31_t ref__QSUB16(q31_t x, q31_t y); +q31_t ref__SHSUB16(q31_t x, q31_t y); +q31_t ref__QASX(q31_t x, q31_t y); +q31_t ref__SHASX(q31_t x, q31_t y); +q31_t ref__QSAX(q31_t x, q31_t y); +q31_t ref__SHSAX(q31_t x, q31_t y); +q31_t ref__SMUSDX(q31_t x, q31_t y); +q31_t ref__SMUADX(q31_t x, q31_t y); +q31_t ref__QADD(q31_t x, q31_t y); +q31_t ref__QSUB(q31_t x, q31_t y); +q31_t ref__SMLAD(q31_t x, q31_t y, q31_t sum); +q31_t ref__SMLADX(q31_t x, q31_t y, q31_t sum); +q31_t ref__SMLSDX(q31_t x, q31_t y, q31_t sum); +q63_t ref__SMLALD(q31_t x, q31_t y, q63_t sum); +q63_t ref__SMLALDX(q31_t x, q31_t y, q63_t sum); +q31_t ref__SMUAD(q31_t x, q31_t y); +q31_t ref__SMUSD(q31_t x, q31_t y); +q31_t ref__SXTB16(q31_t x); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/abs.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/abs.c new file mode 100644 index 0000000..baca23f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/abs.c @@ -0,0 +1,53 @@ +#include "ref.h" + +void ref_abs_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + + for(i=0;i> 14; //16.48 + } + *result = sum; +} + +void ref_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t blockSize, + q63_t * result) +{ + uint32_t i; + q63_t sum = 0.0f; + + for(i=0;i> 32; + temp = temp << 1; + pDst[i] = ref_sat_q31(temp); + } +} + +void ref_mult_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + q31_t temp; + + for(i=0;i> 15; //this comment is for JD, this is specifically 15 and not 16 like the q31 case might imply. This is because CMSIS DSP lib does it this way. No other reason. + pDst[i] = ref_sat_q15(temp); + } +} + +void ref_mult_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + q15_t temp; + + for(i=0;i> 7; + pDst[i] = ref_sat_q7(temp); + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/negate.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/negate.c new file mode 100644 index 0000000..192da1b --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/negate.c @@ -0,0 +1,53 @@ +#include "ref.h" + +void ref_negate_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + + for(i=0;i> 32; + if (sign) + pDst[i] = temp >> -kShift; + else + pDst[i] = ref_sat_q31( (q63_t)temp << kShift ); + } +} + +void ref_scale_q15( + q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + int8_t kShift = 15 - shift; /* Shift to apply after scaling */ + + for(i=0;i> kShift); + } +} + +void ref_scale_q7( + q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + int8_t kShift = 7 - shift; /* Shift to apply after scaling */ + + for(i=0;i> kShift); + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/shift.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/shift.c new file mode 100644 index 0000000..3bc53ad --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/shift.c @@ -0,0 +1,73 @@ +#include "ref.h" + +void ref_shift_q31( + q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + + if (shiftBits < 0) + { + for(i=0;i> -shiftBits; + } + } +} + +void ref_shift_q15( + q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + + if (shiftBits < 0) + { + for(i=0;i> -shiftBits; + } + } +} + +void ref_shift_q7( + q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + + if (shiftBits < 0) + { + for(i=0;i> -shiftBits; + } + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/sub.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/sub.c new file mode 100644 index 0000000..da89e95 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/BasicMathFunctions/sub.c @@ -0,0 +1,57 @@ +#include "ref.h" + +void ref_sub_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + + for(i=0;i> 14) - (((q63_t)pSrcA[i+1] * pSrcB[i+1]) >> 14); + sumi += (((q63_t)pSrcA[i] * pSrcB[i+1]) >> 14) + (((q63_t)pSrcA[i+1] * pSrcB[i] ) >> 14); + } + + *realResult = sumr; + *imagResult = sumi; +} + +void ref_cmplx_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t numSamples, + q31_t * realResult, + q31_t * imagResult) +{ + q63_t sumr, sumi; + uint32_t i; + + sumr = 0; + sumi = 0; + + for(i=0;i> 6); + *imagResult = (q31_t)(sumi >> 6); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mag.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mag.c new file mode 100644 index 0000000..b5ac28d --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mag.c @@ -0,0 +1,49 @@ +#include "ref.h" + +void ref_cmplx_mag_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples) +{ + uint32_t i; + + for(i=0;i> 33); + acc1 = (q31_t)(((q63_t)pSrc[i+1] * pSrc[i+1]) >> 33); + out = acc0 + acc1; + *pDst++ = (q31_t)(sqrtf((float)out / 2147483648.0f) * 2147483648.0f); + } +} + +void ref_cmplx_mag_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples) +{ + uint32_t i; + q31_t acc0,acc1; + q15_t out; + + for(i=0;i> 17); + *pDst++ = (q15_t)(sqrtf((float)out / 32768.0f) * 32768.0f); + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mag_squared.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mag_squared.c new file mode 100644 index 0000000..aec7bd5 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mag_squared.c @@ -0,0 +1,46 @@ +#include "ref.h" + +void ref_cmplx_mag_squared_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples) +{ + uint32_t i; + + for(i=0;i> 33); + acc1 = (q31_t)(((q63_t)pSrc[i+1] * pSrc[i+1]) >> 33); + *pDst++ = acc0 + acc1; + } +} + +void ref_cmplx_mag_squared_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples) +{ + uint32_t i; + q31_t acc0,acc1; + + for(i=0;i> 17); + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mult_cmplx.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mult_cmplx.c new file mode 100644 index 0000000..c7a5409 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mult_cmplx.c @@ -0,0 +1,56 @@ +#include "ref.h" + +void ref_cmplx_mult_cmplx_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t numSamples) +{ + uint32_t i; + + for(i=0;i> 33; + mul2 = ((q63_t)pSrcA[i+1] * pSrcB[i+1]) >> 33; + mul3 = ((q63_t)pSrcA[i] * pSrcB[i+1]) >> 33; + mul4 = ((q63_t)pSrcA[i+1] * pSrcB[i]) >> 33; + pDst[i] = mul1 - mul2; + pDst[i+1] = mul3 + mul4; + } +} + +void ref_cmplx_mult_cmplx_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t numSamples) +{ + uint32_t i; + q31_t mul1, mul2, mul3, mul4; + + for(i=0;i> 17; + mul2 = ((q31_t)pSrcA[i+1] * pSrcB[i+1]) >> 17; + mul3 = ((q31_t)pSrcA[i] * pSrcB[i+1]) >> 17; + mul4 = ((q31_t)pSrcA[i+1] * pSrcB[i]) >> 17; + pDst[i] = mul1 - mul2; + pDst[i+1] = mul3 + mul4; + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mult_real.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mult_real.c new file mode 100644 index 0000000..dc4928e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ComplexMathFunctions/cmplx_mult_real.c @@ -0,0 +1,52 @@ +#include "ref.h" + +void ref_cmplx_mult_real_f32( + float32_t * pSrcCmplx, + float32_t * pSrcReal, + float32_t * pCmplxDst, + uint32_t numSamples) +{ + uint32_t i; + + for(i=0;i> 32; + tempI = ((q63_t) pSrcCmplx[2*i+1] * pSrcReal[i]) >> 32; + pCmplxDst[2*i+0] = ref_sat_n(tempR, 31) << 1; + pCmplxDst[2*i+1] = ref_sat_n(tempI, 31) << 1; + } +} + +void ref_cmplx_mult_real_q15( + q15_t * pSrcCmplx, + q15_t * pSrcReal, + q15_t * pCmplxDst, + uint32_t numSamples) +{ + uint32_t i; + q31_t tempR, tempI; + + for(i=0;i> 15; + tempI = ((q31_t) pSrcCmplx[2*i+1] * pSrcReal[i]) >> 15; + pCmplxDst[2*i+0] = ref_sat_q15(tempR); + pCmplxDst[2*i+1] = ref_sat_q15(tempI); + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ControllerFunctions/pid.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ControllerFunctions/pid.c new file mode 100644 index 0000000..51aa633 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ControllerFunctions/pid.c @@ -0,0 +1,97 @@ +#include "ref.h" + +float32_t ref_pid_f32( + arm_pid_instance_f32 * S, + float32_t in) +{ + float32_t out; + + /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ + out = S->state[2] + S->A0 * in + S->A1 * S->state[0] + S->A2 * S->state[1]; + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); +} + +q31_t ref_pid_q31( + arm_pid_instance_q31 * S, + q31_t in) +{ + q63_t acc; + q31_t out; + + /* acc = A0 * x[n] */ + acc = (q63_t) S->A0 * in; + + /* acc += A1 * x[n-1] */ + acc += (q63_t) S->A1 * S->state[0]; + + /* acc += A2 * x[n-2] */ + acc += (q63_t) S->A2 * S->state[1]; + + /* convert output to 1.31 format to add y[n-1] */ + out = (q31_t) (acc >> 31U); + + /* out += y[n-1] */ + out += S->state[2]; + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); +} + +q15_t ref_pid_q15( + arm_pid_instance_q15 * S, + q15_t in) +{ + q63_t acc; + q15_t out; + q15_t A1, A2; + +#if defined (ARM_MATH_DSP) + +#ifndef ARM_MATH_BIG_ENDIAN + A2 = S->A1 >> 16; + A1 = (q15_t)S->A1; +#else + A1 = S->A1 >> 16; + A2 = (q15_t)S->A1; +#endif + +#else + + A1 = S->A1; + A2 = S->A2; + +#endif + + /* acc = A0 * x[n] */ + acc = ((q31_t) S->A0) * in; + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc += (q31_t) A1 * S->state[0]; + acc += (q31_t) A2 * S->state[1]; + + /* acc += y[n-1] */ + acc += (q31_t) S->state[2] << 15; + + /* saturate the output */ + out = ref_sat_q15(acc >> 15); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ControllerFunctions/sin_cos.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ControllerFunctions/sin_cos.c new file mode 100644 index 0000000..22c91a0 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/ControllerFunctions/sin_cos.c @@ -0,0 +1,21 @@ +#include "ref.h" + +void ref_sin_cos_f32( + float32_t theta, + float32_t * pSinVal, + float32_t * pCosVal) +{ + //theta is given in degrees + *pSinVal = sinf(theta * 6.28318530717959f / 360.0f); + *pCosVal = cosf(theta * 6.28318530717959f / 360.0f); +} + +void ref_sin_cos_q31( + q31_t theta, + q31_t * pSinVal, + q31_t * pCosVal) +{ + //theta is given in the range [-1,1) to represent [-pi,pi) + *pSinVal = (q31_t)(sinf((float32_t)theta * 3.14159265358979f / 2147483648.0f) * 2147483648.0f); + *pCosVal = (q31_t)(cosf((float32_t)theta * 3.14159265358979f / 2147483648.0f) * 2147483648.0f); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/cos.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/cos.c new file mode 100644 index 0000000..ab6c98e --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/cos.c @@ -0,0 +1,11 @@ +#include "ref.h" + +q31_t ref_cos_q31(q31_t x) +{ + return (q31_t)(cosf((float32_t)x * 6.28318530717959f / 2147483648.0f) * 2147483648.0f); +} + +q15_t ref_cos_q15(q15_t x) +{ + return (q15_t)(cosf((float32_t)x * 6.28318530717959f / 32768.0f) * 32768.0f); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/sin.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/sin.c new file mode 100644 index 0000000..3f303a5 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/sin.c @@ -0,0 +1,11 @@ +#include "ref.h" + +q31_t ref_sin_q31(q31_t x) +{ + return (q31_t)(sinf((float32_t)x * 6.28318530717959f / 2147483648.0f) * 2147483648.0f); +} + +q15_t ref_sin_q15(q15_t x) +{ + return (q15_t)(sinf((float32_t)x * 6.28318530717959f / 32768.0f) * 32768.0f); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/sqrt.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/sqrt.c new file mode 100644 index 0000000..9dc34af --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FastMathFunctions/sqrt.c @@ -0,0 +1,15 @@ +#include "ref.h" + +arm_status ref_sqrt_q31(q31_t in, q31_t * pOut) +{ + *pOut = (q31_t)(sqrtf((float32_t)in / 2147483648.0f) * 2147483648.0f); + + return ARM_MATH_SUCCESS; +} + +arm_status ref_sqrt_q15(q15_t in, q15_t * pOut) +{ + *pOut = (q15_t)(sqrtf((float32_t)in / 32768.0f) * 32768.0f); + + return ARM_MATH_SUCCESS; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/biquad.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/biquad.c new file mode 100644 index 0000000..1fe7c54 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/biquad.c @@ -0,0 +1,713 @@ +#include "ref.h" + +void ref_biquad_cascade_df2T_f32( + const arm_biquad_cascade_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* source pointer */ + float32_t *pOut = pDst; /* destination pointer */ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ + float32_t acc; /* accumulator */ + float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ + float32_t Xn; /* temporary input */ + float32_t d1, d2; /* state variables */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /*Reading the state values */ + d1 = pState[0]; + d2 = pState[1]; + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* y[n] = b0 * x[n] + d1 */ + acc = (b0 * Xn) + d1; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1 = (b1 * Xn + a1 * acc) + d2; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2 = (b2 * Xn) + (a2 * acc); + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1; + *pState++ = d2; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); +} + + +void ref_biquad_cascade_stereo_df2T_f32( + const arm_biquad_cascade_stereo_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* source pointer */ + float32_t *pOut = pDst; /* destination pointer */ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ + float32_t acc1a, acc1b; /* accumulator */ + float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ + float32_t Xn1a, Xn1b; /* temporary input */ + float32_t d1a, d2a, d1b, d2b; /* state variables */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /*Reading the state values */ + d1a = pState[0]; + d2a = pState[1]; + d1b = pState[2]; + d2b = pState[3]; + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn1a = *pIn++; //Channel a + Xn1b = *pIn++; //Channel b + + /* y[n] = b0 * x[n] + d1 */ + acc1a = (b0 * Xn1a) + d1a; + acc1b = (b0 * Xn1b) + d1b; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc1a; + *pOut++ = acc1b; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a; + d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2a = (b2 * Xn1a) + (a2 * acc1a); + d2b = (b2 * Xn1b) + (a2 * acc1b); + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1a; + *pState++ = d2a; + *pState++ = d1b; + *pState++ = d2b; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); + +} + +void ref_biquad_cascade_df2T_f64( + const arm_biquad_cascade_df2T_instance_f64 * S, + float64_t * pSrc, + float64_t * pDst, + uint32_t blockSize) +{ + float64_t *pIn = pSrc; /* source pointer */ + float64_t *pOut = pDst; /* destination pointer */ + float64_t *pState = S->pState; /* State pointer */ + float64_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ + float64_t acc; /* accumulator */ + float64_t b0, b1, b2, a1, a2; /* Filter coefficients */ + float64_t Xn; /* temporary input */ + float64_t d1, d2; /* state variables */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /*Reading the state values */ + d1 = pState[0]; + d2 = pState[1]; + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* y[n] = b0 * x[n] + d1 */ + acc = (b0 * Xn) + d1; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1 = (b1 * Xn + a1 * acc) + d2; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2 = (b2 * Xn) + (a2 * acc); + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1; + *pState++ = d2; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); +} + +void ref_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* source pointer */ + float32_t *pOut = pDst; /* destination pointer */ + float32_t *pState = S->pState; /* pState pointer */ + float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ + float32_t acc; /* Simulates the accumulator */ + float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ + float32_t Xn1, Xn2, Yn1, Yn2; /* Filter pState variables */ + float32_t Xn; /* temporary input */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the pState values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* The variables acc holds the output value that is computed: + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = acc; + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent numStages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset the output pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); +} + +void ref_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* input pointer initialization */ + q31_t *pOut = pDst; /* output pointer initialization */ + q63_t *pState = S->pState; /* state pointer initialization */ + q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ + q63_t acc; /* accumulator */ + q31_t Xn1, Xn2; /* Input Filter state variables */ + q63_t Yn1, Yn2; /* Output Filter state variables */ + q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q31_t Xn; /* temporary input */ + int32_t shift = (int32_t) S->postShift + 1; /* Shift to be applied to the output */ + uint32_t sample, stage = S->numStages; /* loop counters */ + q31_t acc_l, acc_h; /* temporary output */ + uint32_t uShift = ((uint32_t) S->postShift + 1U); + uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + acc = (q63_t)Xn*b0 + (q63_t)Xn1*b1 + (q63_t)Xn2*b2; + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn1, a1); + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn2, a2); + + /* Every time after the output is computed state should be updated. */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + + /* The result is converted to 1.63, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the output in the destination buffer in 1.31 format. */ + *pOut++ = acc_h; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage output is given as input to the second stage. */ + pIn = pDst; + + /* Reset to destination buffer working pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = (q63_t) Xn1; + *pState++ = (q63_t) Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); +} + +void ref_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q63_t acc; /* accumulator */ + uint32_t uShift = ((uint32_t) S->postShift + 1U); + uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ + q31_t *pIn = pSrc; /* input pointer initialization */ + q31_t *pOut = pDst; /* output pointer initialization */ + q31_t *pState = S->pState; /* pState pointer initialization */ + q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ + q31_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q31_t Xn; /* temporary input */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* The variables acc holds the output value that is computed: + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn; + + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn2; + + /* The result is converted to 1.31 */ + acc = acc >> lShift; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = (q31_t) acc; + + /* Store the output in the destination buffer. */ + *pOut++ = (q31_t) acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); +} + + +void ref_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t acc = 0; /* accumulator */ + q31_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q31_t *pIn = pSrc; /* input pointer initialization */ + q31_t *pOut = pDst; /* output pointer initialization */ + q31_t *pState = S->pState; /* pState pointer initialization */ + q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ + q31_t Xn; /* temporary input */ + int32_t shift = (int32_t) S->postShift + 1; /* Shift to be applied to the output */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + mult_32x32_keep32_R(acc, b0, Xn); + multAcc_32x32_keep32_R(acc, b1, Xn1); + multAcc_32x32_keep32_R(acc, b2, Xn2); + multAcc_32x32_keep32_R(acc, a1, Yn1); + multAcc_32x32_keep32_R(acc, a2, Yn2); + + /* The result is converted to 1.31 */ + acc <<= shift; + + /* Every time after the output is computed state should be updated. */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = acc; + + /* Store the output in the destination buffer. */ + *pOut++ = acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); +} + +void ref_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pIn = pSrc; /* Source pointer */ + q15_t *pOut = pDst; /* Destination pointer */ + q15_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q15_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q15_t Xn; /* temporary input */ + q31_t acc; /* Accumulator */ + int32_t shift = (15 - (int32_t) S->postShift); /* Post shift */ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + uint32_t sample, stage = (uint32_t) S->numStages; /* Stage loop counter */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + pCoeffs++; // skip the 0 coefficient + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + acc = (q31_t)b0*Xn + (q31_t)b1*Xn1 + (q31_t)b2*Xn2 + (q31_t)a1*Yn1 + (q31_t)a2*Yn2; + + /* The result is converted to 1.15 */ + acc = ref_sat_q15(acc >> shift); + + /* Every time after the output is computed state should be updated. */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = (q15_t) acc; + + /* Store the output in the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); +} + +void ref_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pIn = pSrc; /* Source pointer */ + q15_t *pOut = pDst; /* Destination pointer */ + q15_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q15_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q15_t Xn; /* temporary input */ + q63_t acc; /* Accumulator */ + int32_t shift = (15 - (int32_t) S->postShift); /* Post shift */ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + uint32_t sample, stage = (uint32_t) S->numStages; /* Stage loop counter */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + pCoeffs++; // skip the 0 coefficient + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + acc = (q31_t)b0*Xn + (q31_t)b1*Xn1 + (q31_t)b2*Xn2 + (q31_t)a1*Yn1 + (q31_t)a2*Yn2; + + /* The result is converted to 1.15 */ + acc = ref_sat_q15(acc >> shift); + + /* Every time after the output is computed state should be updated. */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = (q15_t) acc; + + /* Store the output in the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/conv.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/conv.c new file mode 100644 index 0000000..dc1b103 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/conv.c @@ -0,0 +1,350 @@ +#include "ref.h" + +void ref_conv_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst) +{ + float32_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + + /* Loop to calculate convolution for output length number of times */ + for (i = 0; i < srcALen + srcBLen - 1; i++) + { + /* Initialize sum with zero to carry out MAC operations */ + sum = 0.0f; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if ((i - j < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += pSrcB[i - j] * pSrcA[j]; + } + } + /* Store the output in the destination buffer */ + pDst[i] = sum; + } +} + +arm_status ref_conv_partial_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + ref_conv_f32(pSrcA,srcALen,pSrcB,srcBLen,pDst); + + return ARM_MATH_SUCCESS; +} + +void ref_conv_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + q63_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < srcALen + srcBLen - 1; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if ((i - j < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += (q63_t) pSrcA[j] * (pSrcB[i - j]); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q31_t)(sum >> 31U); + } +} + +void ref_conv_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + q31_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < srcALen + srcBLen - 1; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if ((i - j < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum = (q31_t) ((((q63_t)sum << 32) + + ((q63_t)pSrcA[j] * pSrcB[i - j])) >> 32); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q31_t)(sum << 1U); + } +} + +arm_status ref_conv_partial_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + ref_conv_q31(pSrcA,srcALen,pSrcB,srcBLen,pDst); + + return ARM_MATH_SUCCESS; +} + +arm_status ref_conv_partial_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + ref_conv_fast_q31(pSrcA,srcALen,pSrcB,srcBLen,pDst); + + return ARM_MATH_SUCCESS; +} + +void ref_conv_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ + q63_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < srcALen + srcBLen - 1; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if ((i - j < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += (q31_t)pSrcA[j] * pSrcB[i - j]; + } + } + + /* Store the output in the destination buffer */ + pDst[i] = ref_sat_q15(sum >> 15U); + } +} + +arm_status ref_conv_partial_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2) +{ + q31_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < srcALen + srcBLen - 1; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if ((i - j < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += (q31_t)pSrcA[j] * pSrcB[i - j]; + } + } + + /* Store the output in the destination buffer */ + pDst[i] = ref_sat_q15(sum >> 15U); + } + + return ARM_MATH_SUCCESS; +} + +void ref_conv_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ + q31_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < srcALen + srcBLen - 1; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if ((i - j < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += (q31_t)pSrcA[j] * pSrcB[i - j]; + } + } + + /* Store the output in the destination buffer */ + pDst[i] = sum >> 15U; + } +} + +void ref_conv_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2) +{ + q31_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < srcALen + srcBLen - 1; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if ((i - j < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += (q31_t)pSrcA[j] * pSrcB[i - j]; + } + } + + /* Store the output in the destination buffer */ + pDst[i] = ref_sat_q15(sum >> 15U); + } +} + +arm_status ref_conv_partial_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + ref_conv_q15(pSrcA,srcALen,pSrcB,srcBLen,pDst); + + return ARM_MATH_SUCCESS; +} + +arm_status ref_conv_partial_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + ref_conv_fast_q15(pSrcA,srcALen,pSrcB,srcBLen,pDst); + + return ARM_MATH_SUCCESS; +} + + +void ref_conv_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst) +{ + q31_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < srcALen + srcBLen - 1; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if ((i - j < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += (q15_t)pSrcA[j] * pSrcB[i - j]; + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q7_t)ref_sat_q7(sum >> 7); + } +} + +arm_status ref_conv_partial_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + ref_conv_q7(pSrcA,srcALen,pSrcB,srcBLen,pDst); + + return ARM_MATH_SUCCESS; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/correlate.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/correlate.c new file mode 100644 index 0000000..ff1d95b --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/correlate.c @@ -0,0 +1,513 @@ +#include "ref.h" + +void ref_correlate_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst) +{ + float32_t *pIn1 = pSrcA; /* inputA pointer */ + float32_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + float32_t sum; /* Accumulator */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* The algorithm implementation is based on the lengths of the inputs. + * srcB is always made to slide across srcA. + * So srcBLen is always considered as shorter or equal to srcALen + * But CORR(x, y) is reverse of CORR(y, x) + * So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer + * and a variable, inv is set to 1 + * If lengths are not equal then zero pad has to be done to make the two + * inputs of same length. But to improve the performance, we include zeroes + * in the output instead of zero padding either of the the inputs + * If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the + * starting of the output buffer + * If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the + * ending of the output buffer + * Once the zero padding is done the remaining of the output is calcualted + * using convolution but with the shorter signal time shifted. + */ + + /* Calculate the length of the remaining sequence */ + tot = srcALen + srcBLen - 2U; + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + /* Initialise the pointer after zero padding */ + pDst += srcALen - srcBLen; + } + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + srcALen - 1U; + + /* Initialisation of the pointer after zero padding */ + pDst += tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0.0f; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((i - j < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += pIn1[j] * pIn2[-((int32_t)i - j)]; + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = sum; + else + *pDst++ = sum; + } +} + +void ref_correlate_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + q31_t *pIn1 = pSrcA; /* inputA pointer */ + q31_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + q63_t sum; /* Accumulators */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2U); + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1U); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate correlation for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to correlation equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q63_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = (q31_t)(sum >> 31U); + else + *pDst++ = (q31_t)(sum >> 31U); + } +} + +void ref_correlate_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + q31_t *pIn1 = pSrcA; /* inputA pointer */ + q31_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + q63_t sum; /* Accumulators */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2U); + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1U); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate correlation for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to correlation equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) pIn1[j] * pIn2[-((int32_t) i - j)])) >> 32); + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = (q31_t)(sum << 1U); + else + *pDst++ = (q31_t)(sum << 1U); + } +} + +void ref_correlate_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ + q15_t *pIn1 = pSrcA; /* inputA pointer */ + q15_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + q63_t sum; /* Accumulators */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2U); + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1U); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = (q15_t) ref_sat_q15(sum >> 15U); + else + *pDst++ = (q15_t) ref_sat_q15(sum >> 15U); + } +} + +void ref_correlate_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ + q15_t *pIn1 = pSrcA; /* inputA pointer */ + q15_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + q63_t sum; /* Accumulators */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2U); + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1U); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = (q15_t)(sum >> 15U); + else + *pDst++ = (q15_t)(sum >> 15U); + } +} + +void ref_correlate_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch) +{ + q15_t *pIn1 = pSrcA; /* inputA pointer */ + q15_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + q31_t sum; /* Accumulators */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2U); + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1U); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = (q15_t) ref_sat_q15(sum >> 15U); + else + *pDst++ = (q15_t) ref_sat_q15(sum >> 15U); + } +} + +void ref_correlate_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst) +{ + q7_t *pIn1 = pSrcA; /* inputA pointer */ + q7_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + q31_t sum; /* Accumulator */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2U); + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1U); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q15_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = (q7_t) __SSAT((sum >> 7U), 8U); + else + *pDst++ = (q7_t) __SSAT((sum >> 7U), 8U); + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir.c new file mode 100644 index 0000000..3e72b87 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir.c @@ -0,0 +1,325 @@ +#include "ref.h" + +void ref_fir_f32( + const arm_fir_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i; /* Loop counters */ + float32_t acc; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + while (blockSize > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0.0f; + + for(i=0;ipState; + + /* Copy data */ + for(i=0;ipState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i; /* Loop counters */ + q63_t acc; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + while (blockSize > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0.0f; + + for(i=0;i> 31); + + /* Advance state pointer by 1 for the next sample */ + pState++; + + blockSize--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the starting of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy data */ + for(i=0;ipState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i; /* Loop counters */ + q31_t acc; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + while (blockSize > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0.0f; + + for(i=0;i> 32); + } + + /* The result is store in the destination buffer. */ + *pDst++ = (q31_t)(acc << 1); + + /* Advance state pointer by 1 for the next sample */ + pState++; + + blockSize--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the starting of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy data */ + for(i=0;ipState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i; /* Loop counters */ + q63_t acc; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + while (blockSize > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0.0f; + + for(i=0;i> 15); + + /* Advance state pointer by 1 for the next sample */ + pState++; + + blockSize--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the starting of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy data */ + for(i=0;ipState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i; /* Loop counters */ + q31_t acc; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + while (blockSize > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0.0f; + + for(i=0;i> 15); + + /* Advance state pointer by 1 for the next sample */ + pState++; + + blockSize--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the starting of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy data */ + for(i=0;ipState; /* State pointer */ + q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q7_t *pStateCurnt; /* Points to the current sample of the state */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i; /* Loop counters */ + q31_t acc; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + while (blockSize > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0.0f; + + for(i=0;i> 7); + + /* Advance state pointer by 1 for the next sample */ + pState++; + + blockSize--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the starting of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy data */ + for(i=0;ipState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t sum0; /* Accumulator */ + float32_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, blkCnt; /* Loop counters */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + numTaps - 1U; + + /* Total number of output samples to be computed */ + blkCnt = blockSize / S->M; + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + } while (--i); + + /* Set accumulator to zero */ + sum0 = 0.0f; + + for(i=0;iM; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = sum0; + + /* Decrement the loop counter */ + blkCnt--; + } + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy numTaps number of values */ + i = numTaps - 1U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + +void ref_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q63_t sum0; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt; /* Loop counters */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + numTaps - 1U; + + /* Total number of output samples to be computed */ + blkCnt = blockSize / S->M; + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + sum0 = 0; + + for(i=0;iM; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum0 >> 31); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = numTaps - 1U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + +void ref_fir_decimate_fast_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q31_t sum0; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt; /* Loop counters */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + numTaps - 1U; + + /* Total number of output samples to be computed */ + blkCnt = blockSize / S->M; + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + sum0 = 0; + + for(i=0;i> 32); + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum0 << 1); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = numTaps - 1U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + +void ref_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q63_t sum0; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt; /* Loop counters */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + numTaps - 1U; + + /* Total number of output samples to be computed */ + blkCnt = blockSize / S->M; + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + sum0 = 0; + + for(i=0;iM; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = ref_sat_q15(sum0 >> 15); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = numTaps - 1U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + +void ref_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q31_t sum0; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt; /* Loop counters */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + numTaps - 1U; + + /* Total number of output samples to be computed */ + blkCnt = blockSize / S->M; + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + sum0 = 0; + + for(i=0;iM; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = ref_sat_q15(sum0 >> 15); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = numTaps - 1U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_interpolate.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_interpolate.c new file mode 100644 index 0000000..8abb089 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_interpolate.c @@ -0,0 +1,291 @@ +#include "ref.h" + +void ref_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + float32_t sum; /* Accumulator */ + uint32_t i, blkCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + phaseLen - 1; + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Loop over the Interpolation factor. */ + i = S->L; + + while (i > 0U) + { + /* Set accumulator to zero */ + sum = 0.0f; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + i - 1; + + /* Loop over the polyPhase length */ + tapCnt = phaseLen; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + sum += *ptr1++ * *ptr2; + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = sum; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = phaseLen - 1U; + + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +} + +void ref_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + + /* Run the below code for Cortex-M0 */ + + q63_t sum; /* Accumulator */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (q31_t)phaseLen - 1; + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Loop over the Interpolation factor. */ + i = S->L; + + while (i > 0U) + { + /* Set accumulator to zero */ + sum = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + i - 1; + + tapCnt = phaseLen; + + while (tapCnt > 0U) + { + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *ptr1++; + + /* Perform the multiply-accumulate */ + sum += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t)(sum >> 31); + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = phaseLen - 1U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +} + +void ref_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + q63_t sum; /* Accumulator */ + q15_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt, tapCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + phaseLen - 1; + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Loop over the Interpolation factor. */ + i = S->L; + + while (i > 0U) + { + /* Set accumulator to zero */ + sum = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + i - 1; + + /* Loop over the polyPhase length */ + tapCnt = (uint32_t)phaseLen; + + while (tapCnt > 0U) + { + /* Read the coefficient */ + c0 = *ptr2; + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *ptr1++; + + /* Perform the multiply-accumulate */ + sum += (q31_t) x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Store the result after converting to 1.15 format in the destination buffer */ + *pDst++ = ref_sat_q15(sum >> 15); + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (uint32_t) phaseLen - 1U; + + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_lattice.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_lattice.c new file mode 100644 index 0000000..6466106 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_lattice.c @@ -0,0 +1,241 @@ +#include "ref.h" + +void ref_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *px; /* temporary state pointer */ + float32_t *pk; /* temporary coefficient pointer */ + float32_t fcurr, fnext, gcurr, gnext; /* temporary variables */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* f0(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize coeff pointer */ + pk = pCoeffs; + + /* Initialize state pointer */ + px = pState; + + /* read g0(n-1) from state buffer */ + gcurr = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext = fcurr + ((*pk) * gcurr); + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext = (fcurr * (*pk++)) + gcurr; + + /* save f0(n) in state buffer */ + *px++ = fcurr; + + /* f1(n) is saved in fcurr + for next stage processing */ + fcurr = fnext; + + stageCnt = (numStages - 1U); + + /* stage loop */ + while (stageCnt > 0U) + { + /* read g2(n) from state buffer */ + gcurr = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext = fcurr + ((*pk) * gcurr); + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext = (fcurr * (*pk++)) + gcurr; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr = fnext; + + stageCnt--; + } + + /* y(n) = fN(n) */ + *pDst++ = fcurr; + + blkCnt--; + } +} + +void ref_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *px; /* temporary state pointer */ + q31_t *pk; /* temporary coefficient pointer */ + q31_t fcurr, fnext, gcurr, gnext; /* temporary variables */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* f0(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize coeff pointer */ + pk = pCoeffs; + + /* Initialize state pointer */ + px = pState; + + /* read g0(n-1) from state buffer */ + gcurr = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr; + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr; + /* save g1(n) in state buffer */ + *px++ = fcurr; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr = fnext; + + stageCnt = (numStages - 1U); + + /* stage loop */ + while (stageCnt > 0U) + { + /* read g2(n) from state buffer */ + gcurr = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr; + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr = fnext; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = fcurr; + + blkCnt--; + + } +} + +void ref_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *px; /* temporary state pointer */ + q15_t *pk; /* temporary coefficient pointer */ + q31_t fcurnt, fnext, gcurnt, gnext; /* temporary variables */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* f0(n) = x(n) */ + fcurnt = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g0(n-1) from state buffer */ + gcurnt = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext = ((gcurnt * (*pk)) >> 15U) + fcurnt; + fnext = ref_sat_q15(fnext); + + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext = ((fcurnt * (*pk++)) >> 15U) + gcurnt; + gnext = ref_sat_q15(gnext); + + /* save f0(n) in state buffer */ + *px++ = (q15_t) fcurnt; + + /* f1(n) is saved in fcurnt + for next stage processing */ + fcurnt = fnext; + + stageCnt = (numStages - 1U); + + /* stage loop */ + while (stageCnt > 0U) + { + /* read g1(n-1) from state buffer */ + gcurnt = *px; + + /* save g0(n-1) in state buffer */ + *px++ = (q15_t) gnext; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext = ((gcurnt * (*pk)) >> 15U) + fcurnt; + fnext = ref_sat_q15(fnext); + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext = ((fcurnt * (*pk++)) >> 15U) + gcurnt; + gnext = ref_sat_q15(gnext); + + + /* f1(n) is saved in fcurnt + for next stage processing */ + fcurnt = fnext; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = ref_sat_q15(fcurnt); + + + blkCnt--; + + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_sparse.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_sparse.c new file mode 100644 index 0000000..0638313 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/fir_sparse.c @@ -0,0 +1,485 @@ +#include "ref.h" + +void ref_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *px; /* Scratch buffer pointer */ + float32_t *py = pState; /* Temporary pointers for state buffer */ + float32_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + float32_t *pOut; /* Destination pointer */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + float32_t coeff = *pCoeffs++; /* Read the first coefficient value */ + + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1, + (int32_t *) pSrc, 1, blockSize); + + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer */ + px = pb; + + /* Working pointer for destination buffer */ + pOut = pDst; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiplications and store in destination buffer */ + *pOut++ = *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1U; + + while (tapCnt > 0U) + { + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer */ + px = pb; + + /* Working pointer for destination buffer */ + pOut = pDst; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pOut++ += *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } +} + +void ref_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *px; /* Scratch buffer pointer */ + q31_t *py = pState; /* Temporary pointers for state buffer */ + q31_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + q31_t *pOut; /* Destination pointer */ + q63_t out; /* Temporary output variable */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Filter order */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + q31_t coeff = *pCoeffs++; /* Read the first coefficient value */ + q31_t in; + + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1, + (int32_t *) pSrc, 1, blockSize); + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pOut = pDst; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiplications and store in the destination buffer */ + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1U; + + while (tapCnt > 0U) + { + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pOut = pDst; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Working output pointer is updated */ + pOut = pDst; + + /* Output is converted into 1.31 format. */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + in = *pOut << 1; + *pOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +void ref_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pIn = pSrc; /* Working pointer for input */ + q15_t *pOut = pDst; /* Working pointer for output */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *px; /* Temporary pointers for scratch buffer */ + q15_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + q15_t *py = pState; /* Temporary pointers for state buffer */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Filter order */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + q15_t coeff = *pCoeffs++; /* Read the first coefficient value */ + q31_t *pScr2 = pScratchOut; /* Working pointer for pScratchOut */ + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_q15(py, delaySize, &S->stateIndex, 1, pIn, 1, blockSize); + + /* Loop over the number of taps. */ + tapCnt = numTaps; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1U; + + while (tapCnt > 0U) + { + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pScratchOut++ += (q31_t) * px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* All the output values are in pScratchOut buffer. + Convert them into 1.15 format, saturate and store in the destination buffer. */ + /* Loop over the blockSize. */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16); + blkCnt--; + } +} + +void ref_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + q7_t *pSrc, + q7_t *pDst, + q7_t *pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize) +{ + q7_t *pState = S->pState; /* State pointer */ + q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q7_t *px; /* Scratch buffer pointer */ + q7_t *py = pState; /* Temporary pointers for state buffer */ + q7_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + q7_t *pOut = pDst; /* Destination pointer */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Filter order */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + q7_t coeff = *pCoeffs++; /* Read the coefficient value */ + q31_t *pScr2 = pScratchOut; /* Working pointer for scratch buffer of output values */ + q31_t in; + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1, + blockSize); + + /* Loop over the number of taps. */ + tapCnt = numTaps; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 1U; + + while (tapCnt > 0U) + { + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* All the output values are in pScratchOut buffer. + Convert them into 1.15 format, saturate and store in the destination buffer. */ + /* Loop over the blockSize. */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/iir_lattice.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/iir_lattice.c new file mode 100644 index 0000000..ab37d5f --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/iir_lattice.c @@ -0,0 +1,271 @@ +#include "ref.h" + +void ref_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t fcurr, fnext = 0, gcurr, gnext; /* Temporary variables for lattice stages */ + float32_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* temporary variables for counts */ + float32_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + float32_t *pState; /* State pointer */ + float32_t *pStateCurnt; /* State current pointer */ + + blkCnt = blockSize; + pState = &S->pState[0]; + + /* Sample processing */ + while (blkCnt > 0U) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0.0f; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + /* Process sample for numStages */ + tapCnt = numStages; + + while (tapCnt > 0U) + { + gcurr = *px1++; + /* Process sample for last taps */ + fnext = fcurr - (*pk) * gcurr; + gnext = fnext * (*pk++) + gcurr; + + /* Output samples for last taps */ + acc += gnext * (*pv++); + *px2++ = gnext; + fcurr = fnext; + + /* Decrementing loop counter */ + tapCnt--; + } + + /* y(n) += g0(n) * v0 */ + acc += fnext * (*pv); + + *px2++ = fnext; + + /* write out into pDst */ + *pDst++ = acc; + + /* Advance the state pointer by 1 to process the next group of samples */ + pState = pState + 1U; + blkCnt--; + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + tapCnt = numStages; + + /* Copy the data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +void ref_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t fcurr, fnext = 0, gcurr = 0, gnext; /* Temporary variables for lattice stages */ + q63_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ + q31_t *px1, *px2, *pk, *pv; /* Temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + q31_t *pState; /* State pointer */ + q31_t *pStateCurnt; /* State current pointer */ + + blkCnt = blockSize; + pState = &S->pState[0]; + + /* Sample processing */ + while (blkCnt > 0U) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + tapCnt = numStages; + + while (tapCnt > 0U) + { + gcurr = *px1++; + /* Process sample */ + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = + ref_sat_q31(((q63_t) fcurr - + ((q31_t) (((q63_t) gcurr * (*pk)) >> 31)))); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = + ref_sat_q31(((q63_t) gcurr + + ((q31_t) (((q63_t) fnext * (*pk++)) >> 31)))); + /* Output samples */ + /* y(n) += gN(n) * vN */ + acc += ((q63_t) gnext * *pv++); + /* write gN-1(n-1) into state for next sample processing */ + *px2++ = gnext; + /* Update f values for next coefficient processing */ + fcurr = fnext; + + tapCnt--; + } + + /* y(n) += g0(n) * v0 */ + acc += (q63_t) fnext *(*pv++); + + *px2++ = fnext; + + /* write out into pDst */ + *pDst++ = (q31_t) (acc >> 31U); + + /* Advance the state pointer by 1 to process the next group of samples */ + pState = pState + 1U; + blkCnt--; + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + tapCnt = numStages; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +void ref_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q31_t fcurr, fnext = 0, gcurr = 0, gnext; /* Temporary variables for lattice stages */ + uint32_t stgCnt; /* Temporary variables for counts */ + q63_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ + q15_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + q15_t *pState; /* State pointer */ + q15_t *pStateCurnt; /* State current pointer */ + q15_t out; /* Temporary variable for output */ + + blkCnt = blockSize; + pState = &S->pState[0]; + + /* Sample processing */ + while (blkCnt > 0U) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + tapCnt = numStages; + + while (tapCnt > 0U) + { + gcurr = *px1++; + /* Process sample */ + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = fcurr - ((gcurr * (*pk)) >> 15); + fnext = ref_sat_q15(fnext); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = ((fnext * (*pk++)) >> 15) + gcurr; + gnext = ref_sat_q15(gnext); + /* Output samples */ + /* y(n) += gN(n) * vN */ + acc += (q31_t) ((gnext * (*pv++))); + /* write gN(n) into state for next sample processing */ + *px2++ = (q15_t) gnext; + /* Update f values for next coefficient processing */ + fcurr = fnext; + + tapCnt--; + } + + /* y(n) += g0(n) * v0 */ + acc += (q31_t) ((fnext * (*pv++))); + + out = ref_sat_q15(acc >> 15); + *px2++ = (q15_t) fnext; + + /* write out into pDst */ + *pDst++ = out; + + /* Advance the state pointer by 1 to process the next group of samples */ + pState = pState + 1U; + blkCnt--; + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + stgCnt = numStages; + + /* copy data */ + while (stgCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + stgCnt--; + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/lms.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/lms.c new file mode 100644 index 0000000..fee99f9 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/FilteringFunctions/lms.c @@ -0,0 +1,695 @@ +#include "ref.h" + +void ref_lms_f32( + const arm_lms_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, blkCnt; /* Loop counters */ + float32_t sum, e, d; /* accumulator, error, reference data sample */ + float32_t w = 0.0f; /* weight factor */ + + e = 0.0f; + d = 0.0f; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[numTaps - 1U]); + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + sum = 0.0f; + + for(i=0;ipState[i] = pState[i]; + } +} + +void ref_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, blkCnt; /* Loop counters */ + float32_t energy; /* Energy of the input */ + float32_t sum, e, d; /* accumulator, error, reference data sample */ + float32_t w, x0, in; /* weight factor, temporary variable to hold input sample and state */ + + /* Initializations of error, difference, Coefficient update */ + e = 0.0f; + d = 0.0f; + w = 0.0f; + + energy = S->energy; + x0 = S->x0; + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[numTaps - 1U]); + + for(blkCnt = blockSize; blkCnt > 0U; blkCnt--) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy -= x0 * x0; + energy += in * in; + + /* Set the accumulator to zero */ + sum = 0.0f; + + for(i=0;ienergy = energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + * start of the state buffer. This prepares the state buffer for the + * next function call. */ + for(i=0;ipState[i] = pState[i]; + } +} + +void ref_lms_q31( + const arm_lms_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t mu = S->mu; /* Adaptive factor */ + q31_t *px; /* Temporary pointer for state */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q63_t acc; /* Accumulator */ + q31_t e = 0; /* error of data sample */ + q31_t alpha; /* Intermediate constant for taps update */ + q31_t coef; /* Temporary variable for coef */ + q31_t acc_l, acc_h; /* temporary input */ + uint32_t uShift = (uint32_t)S->postShift + 1; + uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + for(blkCnt = blockSize; blkCnt > 0U; blkCnt--) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += (q63_t)(*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.31 format */ + /* Store the result from accumulator into the destination buffer. */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + acc = (uint32_t)acc_l >> lShift | acc_h << uShift; + + *pOut++ = (q31_t)acc; + + /* Compute and store error */ + e = *pRef++ - (q31_t)acc; + + *pErr++ = (q31_t)e; + + /* Weighting factor for the LMS version */ + alpha = (q31_t)(((q63_t)e * mu) >> 31); + + /* Initialize pState pointer */ + /* Advance state pointer by 1 for the next sample */ + px = pState++; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + coef = (q31_t)(((q63_t) alpha * (*px++)) >> 32); + *pb = ref_sat_q31((q63_t)*pb + (coef << 1)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + } + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + start of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Copy (numTaps - 1U) samples */ + tapCnt = numTaps - 1; + + /* Copy the data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +void ref_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + q31_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q63_t energy; /* Energy of the input */ + q63_t acc; /* Accumulator */ + q31_t e = 0, d = 0; /* error, reference data sample */ + q31_t w = 0, in; /* weight factor and state */ + q31_t x0; /* temporary variable to hold input sample */ + q63_t errorXmu; /* Temporary variables to store error and mu product and reciprocal of energy */ + q31_t coef; /* Temporary variable for coef */ + q31_t acc_l, acc_h; /* temporary input */ + uint32_t uShift = ((uint32_t) S->postShift + 1U); + uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ + + energy = S->energy; + x0 = S->x0; + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + for(blkCnt = blockSize; blkCnt > 0U; blkCnt--) + { + + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy = (q31_t)((((q63_t)energy << 32) - (((q63_t)x0 * x0) << 1)) >> 32) & 0xffffffff; + energy = (q31_t)(((((q63_t)in * in) << 1) + ((q63_t)energy << 32)) >> 32) & 0xffffffff; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.31 format */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + acc = (uint32_t)acc_l >> lShift | acc_h << uShift; + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q31_t)acc; + + /* Compute and store error */ + d = *pRef++; + e = d - (q31_t)acc; + *pErr++ = e; + + /* Calculation of product of (e * mu) */ + errorXmu = (q63_t)e * mu; + + /* Weighting factor for the normalized version */ + w = ref_sat_q31(errorXmu / (energy + DELTA_Q31)); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + /* coef is in 2.30 format */ + coef = (q31_t)(((q63_t)w * (*px++)) >> 32); + /* get coef in 1.31 format by left shifting */ + *pb = ref_sat_q31((q63_t)*pb + (coef << 1U)); + /* update coefficient buffer to next coefficient */ + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Read the sample from state buffer */ + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState++; + } + + /* Save energy and x0 values for the next frame */ + S->energy = (q31_t)energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + start of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop for (numTaps - 1U) samples copy */ + tapCnt = numTaps - 1; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +void ref_lms_q15( + const arm_lms_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t mu = S->mu; /* Adaptive factor */ + q15_t *px; /* Temporary pointer for state */ + q15_t *pb; /* Temporary pointer for coefficient buffer */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q63_t acc; /* Accumulator */ + q15_t e = 0; /* error of data sample */ + q15_t alpha; /* Intermediate constant for taps update */ + q31_t coef; /* Teporary variable for coefficient */ + q31_t acc_l, acc_h; + int32_t lShift = 15 - (int32_t)S->postShift; /* Post shift */ + int32_t uShift = 32 - lShift; + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + for(blkCnt = blockSize; blkCnt > 0U; blkCnt--) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += (q63_t)((q31_t)(*px++) * (*pb++)); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc = (uint32_t)acc_l >> lShift | acc_h << uShift; + + /* Converting the result to 1.15 format and saturate the output */ + acc = ref_sat_q15(acc); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q15_t)acc; + + /* Compute and store error */ + e = *pRef++ - (q15_t)acc; + + *pErr++ = (q15_t)e; + + /* Compute alpha i.e. intermediate constant for taps update */ + alpha = (q15_t)(((q31_t)e * mu) >> 15); + + /* Initialize pState pointer */ + /* Advance state pointer by 1 for the next sample */ + px = pState++; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) ref_sat_q15(coef); + + /* Decrement the loop counter */ + tapCnt--; + } + } + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + start of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Copy (numTaps - 1U) samples */ + tapCnt = numTaps - 1; + + /* Copy the data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +void ref_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + q15_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q31_t energy; /* Energy of the input */ + q63_t acc; /* Accumulator */ + q15_t e = 0, d = 0; /* error, reference data sample */ + q15_t w = 0, in; /* weight factor and state */ + q15_t x0; /* temporary variable to hold input sample */ + q15_t errorXmu, oneByEnergy; /* Temporary variables to store error and mu product and reciprocal of energy */ + //q31_t errorXmu; /* Temporary variables to store error and mu product and reciprocal of energy */ + q15_t postShift; /* Post shift to be applied to weight after reciprocal calculation */ + q31_t coef; /* Teporary variable for coefficient */ + q31_t acc_l, acc_h; + int32_t lShift = 15 - (int32_t)S->postShift; /* Post shift */ + int32_t uShift = 32 - lShift; + + energy = S->energy; + x0 = S->x0; + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + for(blkCnt = blockSize; blkCnt > 0U; blkCnt--) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy -= (((q31_t)x0 * x0) >> 15) & 0xffff; + energy += (((q31_t)in * in) >> 15) & 0xffff; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += (q31_t)*px++ * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Converting the result to 1.15 format and saturate the output */ + acc = ref_sat_q15(acc); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* Compute and store error */ + d = *pRef++; + e = d - (q15_t) acc; + *pErr++ = e; + +#if 0 + /* Calculation of e * mu value */ + errorXmu = (q31_t) e * mu; + + /* Calculation of (e * mu) /energy value */ + acc = errorXmu / (energy + DELTA_Q15); +#endif + + /* Calculation of 1/energy */ + postShift = arm_recip_q15((q15_t) energy + DELTA_Q15, + &oneByEnergy, S->recipTable); + + /* Calculation of e * mu value */ + errorXmu = (q15_t) (((q31_t) e * mu) >> 15); + + /* Calculation of (e * mu) * (1/energy) value */ + acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift)); + + /* Weighting factor for the normalized version */ + w = ref_sat_q15((q31_t)acc); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + coef = *pb + (((q31_t)w * (*px++)) >> 15); + *pb++ = ref_sat_q15(coef); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Read the sample from state buffer */ + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1U; + } + + /* Save energy and x0 values for the next frame */ + S->energy = (q15_t)energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* copy (numTaps - 1U) data */ + tapCnt = numTaps - 1; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/HelperFunctions/mat_helper.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/HelperFunctions/mat_helper.c new file mode 100644 index 0000000..0174ccf --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/HelperFunctions/mat_helper.c @@ -0,0 +1,193 @@ +#include "ref.h" + +float32_t ref_detrm(float32_t *pSrc, float32_t *temp, uint32_t size) +{ + float32_t s = 1, det = 0; + int i, j, m, n, c; + + if ( size == 1 ) + { + return ( pSrc[ 0 ] ); + } + else + { + det = 0; + + for ( c = 0;c < size;c++ ) + { + m = 0; + n = 0; + + for ( i = 0;i < size;i++ ) + { + for ( j = 0;j < size;j++ ) + { + temp[ i*size + j ] = 0; + + if ( i != 0 && j != c ) + { + temp[ m*(size-1) + n ] = pSrc[ i*size + j ]; + + if ( n < ( size - 2 ) ) + { + n++; + } + else + { + n = 0; + m++; + } + } + } + } + + det += s * ( pSrc[ c ] * ref_detrm( temp, temp + size*size, size - 1 ) ); + s = -s; + } + } + + return ( det ); +} + + +void ref_cofact(float32_t *pSrc, float32_t *pDst, float32_t *temp, uint32_t size) +{ + int p, q, m, n, i, j; + + if (size == 1) + { + pDst[0] = 1; + return; + } + + for ( q = 0;q < size;q++ ) + { + for ( p = 0;p < size;p++ ) + { + m = 0; + n = 0; + + for ( i = 0;i < size;i++ ) + { + for ( j = 0;j < size;j++ ) + { + temp[ i*size + j ] = 0; + + if ( i != q && j != p ) + { + temp[ m*(size-1) + n ] = pSrc[ i*size + j ]; + + if ( n < ( size - 2 ) ) + { + n++; + } + else + { + n = 0; + m++; + } + } + } + } + + pDst[ q*size + p ] = ref_pow( -1, q + p ) * ref_detrm( temp, temp + (size-1)*(size-1), size - 1 ); + } + } +} + + + +float64_t ref_detrm64(float64_t *pSrc, float64_t *temp, uint32_t size) +{ + float64_t s = 1, det = 0; + int i, j, m, n, c; + + if ( size == 1 ) + { + return ( pSrc[ 0 ] ); + } + else + { + det = 0; + + for ( c = 0;c < size;c++ ) + { + m = 0; + n = 0; + + for ( i = 0;i < size;i++ ) + { + for ( j = 0;j < size;j++ ) + { + temp[ i*size + j ] = 0; + + if ( i != 0 && j != c ) + { + temp[ m*(size-1) + n ] = pSrc[ i*size + j ]; + + if ( n < ( size - 2 ) ) + { + n++; + } + else + { + n = 0; + m++; + } + } + } + } + + det += s * ( pSrc[ c ] * ref_detrm64( temp, temp + size*size, size - 1 ) ); + s = -s; + } + } + + return ( det ); +} + + +void ref_cofact64(float64_t *pSrc, float64_t *pDst, float64_t *temp, uint32_t size) +{ + int p, q, m, n, i, j; + + if (size == 1) + { + pDst[0] = 1; + return; + } + + for ( q = 0;q < size;q++ ) + { + for ( p = 0;p < size;p++ ) + { + m = 0; + n = 0; + + for ( i = 0;i < size;i++ ) + { + for ( j = 0;j < size;j++ ) + { + temp[ i*size + j ] = 0; + + if ( i != q && j != p ) + { + temp[ m*(size-1) + n ] = pSrc[ i*size + j ]; + + if ( n < ( size - 2 ) ) + { + n++; + } + else + { + n = 0; + m++; + } + } + } + } + + pDst[ q*size + p ] = ref_pow( -1, q + p ) * ref_detrm64( temp, temp + (size-1)*(size-1), size - 1 ); + } + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/HelperFunctions/ref_helper.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/HelperFunctions/ref_helper.c new file mode 100644 index 0000000..57ecf1b --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/HelperFunctions/ref_helper.c @@ -0,0 +1,103 @@ +#include "ref.h" + +float32_t scratchArray[8192*2]; + +arm_cfft_instance_f32 ref_cfft_sR_f32_len8192 = { 8192, 0, 0, 0 }; + +q31_t ref_sat_n(q31_t num, uint32_t bits) +{ + int32_t posMax, negMin; + uint32_t i; + + posMax = 1; + for (i = 0; i < (bits - 1); i++) + { + posMax = posMax * 2; + } + + if (num > 0) + { + posMax = (posMax - 1); + + if (num > posMax) + { + num = posMax; + } + } + else + { + negMin = -posMax; + + if (num < negMin) + { + num = negMin; + } + } + return (num); +} + +q31_t ref_sat_q31(q63_t num) +{ + if (num > (q63_t)INT_MAX) + { + return INT_MAX; + } + else if (num < (q63_t)0xffffffff80000000ll) + { + return INT_MIN; + } + else + { + return (q31_t)num; + } +} + +q15_t ref_sat_q15(q31_t num) +{ + if (num > (q31_t)SHRT_MAX) + { + return SHRT_MAX; + } + else if (num < (q31_t)0xffff8000) + { + return SHRT_MIN; + } + else + { + return (q15_t)num; + } +} + +q7_t ref_sat_q7(q15_t num) +{ + if (num > (q15_t)SCHAR_MAX) + { + return SCHAR_MAX; + } + else if (num < (q15_t)0xff80) + { + return SCHAR_MIN; + } + else + { + return (q7_t)num; + } +} + +float32_t ref_pow(float32_t a, uint32_t b) +{ + uint32_t i; + float32_t r = a; + + for(i=1;i> 24) + ((y << 16) >> 24))), 8); + t = ref_sat_n(((q31_t) (((x << 8) >> 24) + ((y << 8) >> 24))), 8); + u = ref_sat_n(((q31_t) ((x >> 24) + (y >> 24))), 8); + + sum = + (((q31_t) u << 24) & 0xFF000000) | (((q31_t) t << 16) & 0x00FF0000) | + (((q31_t) s << 8) & 0x0000FF00) | (r & 0x000000FF); + + return sum; + +} + +q31_t ref__QSUB8(q31_t x, q31_t y) +{ + q31_t sum; + q31_t r, s, t, u; + + r = (q7_t) x; + s = (q7_t) y; + + r = ref_sat_n((r - s), 8); + s = ref_sat_n(((q31_t) (((x << 16) >> 24) - ((y << 16) >> 24))), 8) << 8; + t = ref_sat_n(((q31_t) (((x << 8) >> 24) - ((y << 8) >> 24))), 8) << 16; + u = ref_sat_n(((q31_t) ((x >> 24) - (y >> 24))), 8) << 24; + + sum = (u & 0xFF000000) | (t & 0x00FF0000) | (s & 0x0000FF00) | (r & 0x000000FF); + + return sum; +} + +q31_t ref__QADD16(q31_t x, q31_t y) +{ + q31_t sum; + q31_t r, s; + + r = (q15_t) x; + s = (q15_t) y; + + r = ref_sat_q15(r + s); + s = (q31_t)ref_sat_q15(((q31_t) ((x >> 16) + (y >> 16)))) << 16; + + sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return sum; + +} + +q31_t ref__SHADD16(q31_t x, q31_t y) +{ + q31_t sum; + q31_t r, s; + + r = (q15_t) x; + s = (q15_t) y; + + r = (r + s) >> 1; + s = ((q31_t) (((x >> 16) + (y >> 16)) >> 1) << 16); + + sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return sum; + +} + +q31_t ref__QSUB16(q31_t x, q31_t y) +{ + q31_t sum; + q31_t r, s; + + r = (q15_t) x; + s = (q15_t) y; + + r = ref_sat_q15(r - s); + s = (q31_t)ref_sat_q15(((q31_t) ((x >> 16) - (y >> 16)))) << 16; + + sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return sum; +} + +q31_t ref__SHSUB16(q31_t x, q31_t y) +{ + q31_t diff; + q31_t r, s; + + r = (q15_t) x; + s = (q15_t) y; + + r = ((r >> 1) - (s >> 1)); + s = (((x >> 17) - (y >> 17)) << 16); + + diff = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return diff; +} + +q31_t ref__QASX(q31_t x, q31_t y) +{ + q31_t sum = 0; + q31_t xL, xH, yL, yH; + + // extract bottom halfword and sign extend + xL = (q15_t)(x & 0xffff); + // extract bottom halfword and sign extend + yL = (q15_t)(y & 0xffff); + // extract top halfword and sign extend + xH = (q15_t)(x >> 16); + // extract top halfword and sign extend + yH = (q15_t)(y >> 16); + + sum = (((q31_t)ref_sat_q15(xH + yL )) << 16) | + (((q31_t)ref_sat_q15(xL - yH )) & 0xffff); + + return sum; +} + +q31_t ref__SHASX(q31_t x, q31_t y) +{ + q31_t sum; + q31_t r, s; + + r = (q15_t) x; + s = (q15_t) y; + + r = (r - (y >> 16)) / 2; + s = (((x >> 16) + s) << 15); + + sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return sum; +} + +q31_t ref__QSAX(q31_t x, q31_t y) +{ + q31_t sum = 0; + q31_t xL, xH, yL, yH; + + // extract bottom halfword and sign extend + xL = (q15_t)(x & 0xffff); + // extract bottom halfword and sign extend + yL = (q15_t)(y & 0xffff); + // extract top halfword and sign extend + xH = (q15_t)(x >> 16); + // extract top halfword and sign extend + yH = (q15_t)(y >> 16); + + sum = (((q31_t)ref_sat_q15(xH - yL )) << 16) | + (((q31_t)ref_sat_q15(xL + yH )) & 0xffff); + + return sum; +} + +q31_t ref__SHSAX(q31_t x, q31_t y) +{ + q31_t sum; + q31_t r, s; + + r = (q15_t) x; + s = (q15_t) y; + + r = (r + (y >> 16)) / 2; + s = (((x >> 16) - s) << 15); + + sum = (s & 0xFFFF0000) | (r & 0x0000FFFF); + + return sum; +} + +q31_t ref__SMUSDX(q31_t x, q31_t y) +{ + return ((q31_t) (((q15_t) x * (q15_t) (y >> 16)) - ((q15_t) (x >> 16) * (q15_t) y))); +} + +q31_t ref__SMUADX(q31_t x, q31_t y) +{ + return ((q31_t) (((q15_t) x * (q15_t) (y >> 16)) + ((q15_t) (x >> 16) * (q15_t) y))); +} + +q31_t ref__QADD(q31_t x, q31_t y) +{ + return ref_sat_q31((q63_t) x + y); +} + +q31_t ref__QSUB(q31_t x, q31_t y) +{ + return ref_sat_q31((q63_t) x - y); +} + +q31_t ref__SMLAD(q31_t x, q31_t y, q31_t sum) +{ + return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); +} + +q31_t ref__SMLADX(q31_t x, q31_t y, q31_t sum) +{ + return (sum + ((q15_t) (x >> 16) * (q15_t) (y)) + ((q15_t) x * (q15_t) (y >> 16))); +} + +q31_t ref__SMLSDX(q31_t x, q31_t y, q31_t sum) +{ + return (sum - ((q15_t) (x >> 16) * (q15_t) (y)) + ((q15_t) x * (q15_t) (y >> 16))); +} + +q63_t ref__SMLALD(q31_t x, q31_t y, q63_t sum) +{ + return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); +} + +q63_t ref__SMLALDX(q31_t x, q31_t y, q63_t sum) +{ + return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); +} + +q31_t ref__SMUAD(q31_t x, q31_t y) +{ + return (((x >> 16) * (y >> 16)) + (((x << 16) >> 16) * ((y << 16) >> 16))); +} + +q31_t ref__SMUSD(q31_t x, q31_t y) +{ + return (-((x >> 16) * (y >> 16)) + (((x << 16) >> 16) * ((y << 16) >> 16))); +} + +q31_t ref__SXTB16(q31_t x) +{ + return ((((x << 24) >> 24) & 0x0000FFFF) | (((x << 8) >> 8) & 0xFFFF0000)); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_add.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_add.c new file mode 100644 index 0000000..a6e0067 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_add.c @@ -0,0 +1,58 @@ +#include "ref.h" + +arm_status ref_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + uint32_t i; + uint32_t numSamples; /* total number of elements in the matrix */ + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + + for(i=0;ipData[i] = pSrcA->pData[i] + pSrcB->pData[i]; + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + uint32_t i; + uint32_t numSamples; /* total number of elements in the matrix */ + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + + for(i=0;ipData[i] = ref_sat_q31( (q63_t)pSrcA->pData[i] + pSrcB->pData[i]); + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst) +{ + uint32_t i; + uint32_t numSamples; /* total number of elements in the matrix */ + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + + for(i=0;ipData[i] = ref_sat_q15( (q31_t)pSrcA->pData[i] + pSrcB->pData[i]); + } + + return ARM_MATH_SUCCESS; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_cmplx_mult.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_cmplx_mult.c new file mode 100644 index 0000000..9364619 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_cmplx_mult.c @@ -0,0 +1,118 @@ +#include "ref.h" + +arm_status ref_mat_cmplx_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + uint32_t r,c,i,outR,outC,innerSize; + float32_t sumR,sumI; + float32_t a0,b0,c0,d0; + + outR = pSrcA->numRows; + outC = pSrcB->numCols; + innerSize = pSrcA->numCols; + + for(r=0;rpData[2*(r*innerSize + i) + 0]; + b0 = pSrcA->pData[2*(r*innerSize + i) + 1]; + c0 = pSrcB->pData[2*(i*outC + c) + 0]; + d0 = pSrcB->pData[2*(i*outC + c) + 1]; + + sumR += a0 * c0 - b0 * d0; + sumI += b0 * c0 + a0 * d0; + } + + pDst->pData[2*(r*outC + c) + 0] = sumR; + pDst->pData[2*(r*outC + c) + 1] = sumI; + } + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_cmplx_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + uint32_t r,c,i,outR,outC,innerSize; + q63_t sumR,sumI; + q31_t a0,b0,c0,d0; + + outR = pSrcA->numRows; + outC = pSrcB->numCols; + innerSize = pSrcA->numCols; + + for(r=0;rpData[2*(r*innerSize + i) + 0]; + b0 = pSrcA->pData[2*(r*innerSize + i) + 1]; + c0 = pSrcB->pData[2*(i*outC + c) + 0]; + d0 = pSrcB->pData[2*(i*outC + c) + 1]; + + sumR += (q63_t)a0 * c0 - (q63_t)b0 * d0; + sumI += (q63_t)b0 * c0 + (q63_t)a0 * d0; + } + + pDst->pData[2*(r*outC + c) + 0] = ref_sat_q31(sumR >> 31); + pDst->pData[2*(r*outC + c) + 1] = ref_sat_q31(sumI >> 31); + } + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_cmplx_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst) +{ + uint32_t r,c,i,outR,outC,innerSize; + q63_t sumR,sumI; + q15_t a0,b0,c0,d0; + + outR = pSrcA->numRows; + outC = pSrcB->numCols; + innerSize = pSrcA->numCols; + + for(r=0;rpData[2*(r*innerSize + i) + 0]; + b0 = pSrcA->pData[2*(r*innerSize + i) + 1]; + c0 = pSrcB->pData[2*(i*outC + c) + 0]; + d0 = pSrcB->pData[2*(i*outC + c) + 1]; + + sumR += (q31_t)a0 * c0 - (q31_t)b0 * d0; + sumI += (q31_t)b0 * c0 + (q31_t)a0 * d0; + } + + pDst->pData[2*(r*outC + c) + 0] = ref_sat_q15(sumR >> 15); + pDst->pData[2*(r*outC + c) + 1] = ref_sat_q15(sumI >> 15); + } + } + + return ARM_MATH_SUCCESS; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_inverse.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_inverse.c new file mode 100644 index 0000000..74d3ccc --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_inverse.c @@ -0,0 +1,57 @@ +#include "ref.h" + +arm_status ref_mat_inverse_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst) +{ + float32_t det; + uint32_t i, size; + arm_matrix_instance_f32 tmp; + + tmp.numCols = pSrc->numCols; + tmp.numRows = pSrc->numRows; + tmp.pData = scratchArray; + + det = ref_detrm(pSrc->pData,scratchArray,pSrc->numCols); + + size = pSrc->numCols * pSrc->numCols; + + ref_cofact(pSrc->pData,scratchArray,scratchArray + size,pSrc->numCols); + + ref_mat_trans_f32(&tmp,pDst); + + for(i=0;ipData[i] /= det; + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_inverse_f64( + const arm_matrix_instance_f64 * pSrc, + arm_matrix_instance_f64 * pDst) +{ + float64_t det; + uint32_t i, size; + arm_matrix_instance_f64 tmp; + + tmp.numCols = pSrc->numCols; + tmp.numRows = pSrc->numRows; + tmp.pData = (float64_t*)scratchArray; + + det = ref_detrm64(pSrc->pData,(float64_t*)scratchArray,pSrc->numCols); + + size = pSrc->numCols * pSrc->numCols; + + ref_cofact64(pSrc->pData,(float64_t*)scratchArray,(float64_t*)scratchArray + size,pSrc->numCols); + + ref_mat_trans_f64(&tmp,pDst); + + for(i=0;ipData[i] /= det; + } + + return ARM_MATH_SUCCESS; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_mult.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_mult.c new file mode 100644 index 0000000..e9ef432 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_mult.c @@ -0,0 +1,91 @@ +#include "ref.h" + +arm_status ref_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + uint32_t r,c,i,outR,outC,innerSize; + float32_t sum; + + outR = pSrcA->numRows; + outC = pSrcB->numCols; + innerSize = pSrcA->numCols; + + for(r=0;rpData[r*innerSize + i] * pSrcB->pData[i*outC + c]; + } + + pDst->pData[r*outC + c] = sum; + } + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + uint32_t r,c,i,outR,outC,innerSize; + q63_t sum; + + outR = pSrcA->numRows; + outC = pSrcB->numCols; + innerSize = pSrcA->numCols; + + for(r=0;rpData[r*innerSize + i]) * pSrcB->pData[i*outC + c]; + } + + pDst->pData[r*outC + c] = ref_sat_q31(sum >> 31); + } + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst) +{ + uint32_t r,c,i,outR,outC,innerSize; + q63_t sum; + + outR = pSrcA->numRows; + outC = pSrcB->numCols; + innerSize = pSrcA->numCols; + + for(r=0;rpData[r*innerSize + i]) * pSrcB->pData[i*outC + c]; + } + + pDst->pData[r*outC + c] = ref_sat_q15(sum >> 15); + } + } + + return ARM_MATH_SUCCESS; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_scale.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_scale.c new file mode 100644 index 0000000..d426ad6 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_scale.c @@ -0,0 +1,64 @@ +#include "ref.h" + +arm_status ref_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst) +{ + uint32_t i; + uint32_t numSamples; /* total number of elements in the matrix */ + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; + + for(i=0;ipData[i] = pSrc->pData[i] * scale; + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scale, + int32_t shift, + arm_matrix_instance_q31 * pDst) +{ + uint32_t i; + uint32_t numSamples; /* total number of elements in the matrix */ + int32_t totShift = shift + 1; + q31_t tmp; + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; + + for(i=0;ipData[i] * scale) >> 32; + pDst->pData[i] = ref_sat_q31((q63_t)tmp << totShift ); + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scale, + int32_t shift, + arm_matrix_instance_q15 * pDst) +{ + uint32_t i; + uint32_t numSamples; /* total number of elements in the matrix */ + int32_t totShift = 15 - shift; + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; + + for(i=0;ipData[i] = ref_sat_q15( ((q31_t)pSrc->pData[i] * scale) >> totShift); + } + + return ARM_MATH_SUCCESS; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_sub.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_sub.c new file mode 100644 index 0000000..bbd23f0 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_sub.c @@ -0,0 +1,58 @@ +#include "ref.h" + +arm_status ref_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + uint32_t i; + uint32_t numSamples; /* total number of elements in the matrix */ + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + + for(i=0;ipData[i] = pSrcA->pData[i] - pSrcB->pData[i]; + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + uint32_t i; + uint32_t numSamples; /* total number of elements in the matrix */ + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + + for(i=0;ipData[i] = ref_sat_q31( (q63_t)pSrcA->pData[i] - pSrcB->pData[i]); + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst) +{ + uint32_t i; + uint32_t numSamples; /* total number of elements in the matrix */ + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + + for(i=0;ipData[i] = ref_sat_q15( (q31_t)pSrcA->pData[i] - pSrcB->pData[i]); + } + + return ARM_MATH_SUCCESS; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_trans.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_trans.c new file mode 100644 index 0000000..8cb9a8d --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/MatrixFunctions/mat_trans.c @@ -0,0 +1,77 @@ +#include "ref.h" + +arm_status ref_mat_trans_f64( + const arm_matrix_instance_f64 * pSrc, + arm_matrix_instance_f64 * pDst) +{ + uint64_t r,c; + uint64_t numR = pSrc->numRows; + uint64_t numC = pSrc->numCols; + + for(r=0;rpData[c*numR + r] = pSrc->pData[r*numC + c]; + } + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst) +{ + uint32_t r,c; + uint32_t numR = pSrc->numRows; + uint32_t numC = pSrc->numCols; + + for(r=0;rpData[c*numR + r] = pSrc->pData[r*numC + c]; + } + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst) +{ + uint32_t r,c; + uint32_t numR = pSrc->numRows; + uint32_t numC = pSrc->numCols; + + for(r=0;rpData[c*numR + r] = pSrc->pData[r*numC + c]; + } + } + + return ARM_MATH_SUCCESS; +} + +arm_status ref_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst) +{ + uint32_t r,c; + uint32_t numR = pSrc->numRows; + uint32_t numC = pSrc->numCols; + + for(r=0;rpData[c*numR + r] = pSrc->pData[r*numC + c]; + } + } + + return ARM_MATH_SUCCESS; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/max.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/max.c new file mode 100644 index 0000000..02b4127 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/max.c @@ -0,0 +1,85 @@ +#include "ref.h" + +void ref_max_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex) +{ + uint32_t i, ind=0; + float32_t max=-FLT_MAX; + + for(i=0;i pSrc[i]) + { + min = pSrc[i]; + ind = i; + } + } + *pResult = min; + *pIndex = ind; +} + +void ref_min_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex) +{ + uint32_t i, ind=0; + q31_t min=INT_MAX; + + for(i=0;i pSrc[i]) + { + min = pSrc[i]; + ind = i; + } + } + *pResult = min; + *pIndex = ind; +} + +void ref_min_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex) +{ + uint32_t i, ind=0; + q15_t min=SHRT_MAX; + + for(i=0;i pSrc[i]) + { + min = pSrc[i]; + ind = i; + } + } + *pResult = min; + *pIndex = ind; +} + +void ref_min_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex) +{ + uint32_t i, ind=0; + q7_t min=SCHAR_MAX; + + for(i=0;i pSrc[i]) + { + min = pSrc[i]; + ind = i; + } + } + *pResult = min; + *pIndex = ind; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/power.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/power.c new file mode 100644 index 0000000..8202e04 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/power.c @@ -0,0 +1,61 @@ +#include "ref.h" + +void ref_power_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + uint32_t i; + float32_t sumsq=0; + + for(i=0;i> 14; + } + *pResult = sumsq; +} + +void ref_power_q15( + q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult) +{ + uint32_t i; + q63_t sumsq=0; + + for(i=0;i> 31; + tmp2 = ref_sat_q31(tmp1); + + /* GCC M0 problem: __aeabi_f2iz(QNAN) returns not 0 */ + help_float = (sqrtf((float)tmp2 / 2147483648.0f) * 2147483648.0f); + /* Checking for a NAN value in help_float */ + if (((*((int *)(&help_float))) & 0x7FC00000) == 0x7FC00000) { + help_float = 0; + } + *pResult = (q31_t)(help_float); + +// *pResult = (q31_t)(sqrtf((float)tmp2 / 2147483648.0f) * 2147483648.0f); +} + +void ref_rms_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult) +{ + uint32_t i; + q63_t sumsq=0; + q31_t tmp1; + q15_t tmp2; + + for(i=0;i> 15; + tmp2 = ref_sat_q15(tmp1); + *pResult = (q15_t)(sqrtf((float)tmp2 / 32768.0f) * 32768.0f); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/std.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/std.c new file mode 100644 index 0000000..c0c1ba3 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/std.c @@ -0,0 +1,74 @@ +#include "ref.h" + +void ref_std_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + uint32_t i; + float32_t sum=0, sumsq=0; + + if (blockSize == 1) + { + *pResult = 0; + return; + } + + for(i=0;i> 8; + sum += in; + sumsq += (q63_t)in * in; + } + sumsq /= (q63_t)(blockSize - 1); + sum = sum * sum / (q63_t)(blockSize * (blockSize - 1)); + *pResult = (q31_t)(sqrtf((float)( (sumsq - sum) >> 15) / 2147483648.0f ) * 2147483648.0f); +} + +void ref_std_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult) +{ + uint32_t i; + q31_t sum=0; + q63_t sumsq=0; + + if (blockSize == 1) + { + *pResult = 0; + return; + } + + for(i=0;i> 15) / 32768.0f ) * 32768.0f); +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/var.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/var.c new file mode 100644 index 0000000..f5da3a6 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/StatisticsFunctions/var.c @@ -0,0 +1,70 @@ +#include "ref.h" + +void ref_var_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + uint32_t i; + float32_t sum=0, sumsq=0; + + if (blockSize == 1) + { + *pResult = 0; + return; + } + + for(i=0;i> 8; + sum += in; + sumsq += (q63_t)in * in; + } + *pResult = (sumsq - sum * sum / (q31_t)blockSize) / ((q31_t)blockSize - 1) >> 15; +} + +void ref_var_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult) +{ + uint32_t i; + q31_t sum=0; + q63_t sumsq=0; + + if (blockSize == 1) + { + *pResult = 0; + return; + } + + for(i=0;i> 15; +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/SupportFunctions/copy.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/SupportFunctions/copy.c new file mode 100644 index 0000000..08089f5 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/SupportFunctions/copy.c @@ -0,0 +1,53 @@ +#include "ref.h" + +void ref_copy_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + + for(i=0;i> 16; + } +} + +void ref_q31_to_q7( + q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + + for(i=0;i> 24; + } +} + +void ref_q15_to_q31( + q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + + for(i=0;i> 8; + } +} + +void ref_q7_to_q31( + q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + + for(i=0;i 0.0f ? 0.5f : -0.5f; //round + pDst[i] = ref_sat_q31((q63_t)in); //cast and saturate + } +} + +void ref_float_to_q15( + float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + float32_t in; + + for(i=0;i 0.0f ? 0.5f : -0.5f; + pDst[i] = ref_sat_q15((q31_t)in); + } +} + +void ref_float_to_q7( + float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t i; + float32_t in; + + for(i=0;i 0.0f ? 0.5f : -0.5f; + pDst[i] = ref_sat_q7((q15_t)in); + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/bitreversal.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/bitreversal.c new file mode 100644 index 0000000..4751821 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/bitreversal.c @@ -0,0 +1,30 @@ +#include "ref.h" + + +;/* +;* @brief In-place bit reversal function. +;* @param[in, out] *pSrc points to the in-place buffer of unknown 32-bit data type. +;* @param[in] bitRevLen bit reversal table length +;* @param[in] *pBitRevTab points to bit reversal table. +;* @return none. +;*/ +void arm_bitreversal_32(uint32_t *pSrc, uint32_t bitRevLen, uint32_t *pBitRevTab) +{ + uint32_t a,b,i,tmp; + + for(i=0; ifftLen; + int32_t dir = (ifftFlag) ? -1 : 1; + + // decrement pointer since the original version used fortran style indexing. + data--; + + n = N << 1; + j = 1; + for (i = 1; i < n; i += 2) { + if (j > i) { + tempr = data[j]; data[j] = data[i]; data[i] = tempr; + tempr = data[j+1]; data[j+1] = data[i+1]; data[i+1] = tempr; + } + m = n >> 1; + while (m >= 2 && j > m) { + j -= m; + m >>= 1; + } + j += m; + } + mmax = 2; + while (n > mmax) { + istep = 2*mmax; + theta = -6.283185307179586f/(dir*mmax); + wtemp = sinf(0.5f*theta); + wpr = -2.0f*wtemp*wtemp; + wpi = sinf(theta); + wr = 1.0f; + wi = 0.0f; + for (m = 1; m < mmax; m += 2) { + for (i = m; i <= n; i += istep) { + j =i + mmax; + tempr = wr*data[j] - wi*data[j+1]; + tempi = wr*data[j+1] + wi*data[j]; + data[j] = data[i] - tempr; + data[j+1] = data[i+1] - tempi; + data[i] += tempr; + data[i+1] += tempi; + } + wr = (wtemp = wr)*wpr - wi*wpi + wr; + wi = wi*wpr + wtemp*wpi + wi; + } + mmax = istep; + } + + // Inverse transform is scaled by 1/N + if (ifftFlag) + { + data++; + for(i = 0; i<2*N; i++) + { + data[i] /= N; + } + } +} + +void ref_cfft_q31( + const arm_cfft_instance_q31 * S, + q31_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + uint32_t i; + float32_t *fSrc = (float32_t*)p1; + + for(i=0;ifftLen*2;i++) + { + //read the q31 data, cast to float, scale down for float + fSrc[i] = (float32_t)p1[i] / 2147483648.0f; + } + + switch(S->fftLen) + { + case 16: + ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, ifftFlag, bitReverseFlag); + break; + + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, ifftFlag, bitReverseFlag); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, ifftFlag, bitReverseFlag); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, ifftFlag, bitReverseFlag); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, ifftFlag, bitReverseFlag); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, ifftFlag, bitReverseFlag); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, ifftFlag, bitReverseFlag); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, ifftFlag, bitReverseFlag); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, ifftFlag, bitReverseFlag); + break; + } + + if (ifftFlag) + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q31, cast to q31 + p1[i] = (q31_t)( fSrc[i] * 2147483648.0f ); + } + } + else + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q31, cast to q31 + p1[i] = (q31_t)( fSrc[i] * 2147483648.0f / (float32_t)S->fftLen); + } + } +} + +void ref_cfft_q15( + const arm_cfft_instance_q15 * S, + q15_t * pSrc, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + uint32_t i; + float32_t *fSrc = (float32_t*)pSrc; + + for(i=0;ifftLen*2;i++) + { + //read the q15 data, cast to float, scale down for float, place in temporary buffer + scratchArray[i] = (float32_t)pSrc[i] / 32768.0f; + } + + for(i=0;ifftLen*2;i++) + { + //copy from temp buffer to final buffer + fSrc[i] = scratchArray[i]; + } + + switch(S->fftLen) + { + case 16: + ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, ifftFlag, bitReverseFlag); + break; + + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, ifftFlag, bitReverseFlag); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, ifftFlag, bitReverseFlag); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, ifftFlag, bitReverseFlag); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, ifftFlag, bitReverseFlag); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, ifftFlag, bitReverseFlag); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, ifftFlag, bitReverseFlag); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, ifftFlag, bitReverseFlag); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, ifftFlag, bitReverseFlag); + break; + } + + if (ifftFlag) + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q15, cast to q15 + pSrc[i] = (q15_t)( fSrc[i] * 32768.0f ); + } + } + else + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q15, cast to q15 + pSrc[i] = (q15_t)( fSrc[i] * 32768.0f / (float32_t)S->fftLen); + } + } +} + +void ref_cfft_radix2_f32( + const arm_cfft_radix2_instance_f32 * S, + float32_t * pSrc) +{ + switch(S->fftLen) + { + case 16: + ref_cfft_f32(&arm_cfft_sR_f32_len16, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + } +} + +void ref_cfft_radix2_q31( + const arm_cfft_radix2_instance_q31 * S, + q31_t * pSrc) +{ + uint32_t i; + float32_t *fSrc = (float32_t*)pSrc; + + for(i=0;ifftLen*2;i++) + { + //read the q31 data, cast to float, scale down for float + fSrc[i] = (float32_t)pSrc[i] / 2147483648.0f; + } + + switch(S->fftLen) + { + case 16: + ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + } + + if (S->ifftFlag) + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q31, cast to q31 + pSrc[i] = (q31_t)( fSrc[i] * 2147483648.0f ); + } + } + else + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q31, cast to q31 + pSrc[i] = (q31_t)( fSrc[i] * 2147483648.0f / (float32_t)S->fftLen); + } + } +} + +void ref_cfft_radix2_q15( + const arm_cfft_radix2_instance_q15 * S, + q15_t * pSrc) +{ + uint32_t i; + float32_t *fSrc = (float32_t*)pSrc; + + for(i=0;ifftLen*2;i++) + { + //read the q15 data, cast to float, scale down for float, place in temporary buffer + scratchArray[i] = (float32_t)pSrc[i] / 32768.0f; + } + + for(i=0;ifftLen*2;i++) + { + //copy from temp buffer to final buffer + fSrc[i] = scratchArray[i]; + } + + switch(S->fftLen) + { + case 16: + ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + } + + if (S->ifftFlag) + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q15, cast to q15 + pSrc[i] = (q15_t)( fSrc[i] * 32768.0f ); + } + } + else + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q15, cast to q15 + pSrc[i] = (q15_t)( fSrc[i] * 32768.0f / (float32_t)S->fftLen); + } + } +} + +void ref_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc) +{ + switch(S->fftLen) + { + case 16: + ref_cfft_f32(&arm_cfft_sR_f32_len16, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, pSrc, S->ifftFlag, S->bitReverseFlag); + break; + } +} + +void ref_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc) +{ + uint32_t i; + float32_t *fSrc = (float32_t*)pSrc; + + for(i=0;ifftLen*2;i++) + { + //read the q31 data, cast to float, scale down for float + fSrc[i] = (float32_t)pSrc[i] / 2147483648.0f; + } + + switch(S->fftLen) + { + case 16: + ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + } + + if (S->ifftFlag) + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q31, cast to q31 + pSrc[i] = (q31_t)( fSrc[i] * 2147483648.0f ); + } + } + else + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q31, cast to q31 + pSrc[i] = (q31_t)( fSrc[i] * 2147483648.0f / (float32_t)S->fftLen); + } + } +} + +void ref_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc) +{ + uint32_t i; + float32_t *fSrc = (float32_t*)pSrc; + + for(i=0;ifftLen*2;i++) + { + //read the q15 data, cast to float, scale down for float, place in temporary buffer + scratchArray[i] = (float32_t)pSrc[i] / 32768.0f; + } + + for(i=0;ifftLen*2;i++) + { + //copy from temp buffer to final buffer + fSrc[i] = scratchArray[i]; + } + + switch(S->fftLen) + { + case 16: + ref_cfft_f32(&arm_cfft_sR_f32_len16, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, fSrc, S->ifftFlag, S->bitReverseFlag); + break; + } + + if (S->ifftFlag) + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q15, cast to q15 + pSrc[i] = (q15_t)( fSrc[i] * 32768.0f ); + } + } + else + { + for(i=0;ifftLen*2;i++) + { + //read the float data, scale up for q15, cast to q15 + pSrc[i] = (q15_t)( fSrc[i] * 32768.0f / (float32_t)S->fftLen); + } + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/dct4.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/dct4.c new file mode 100644 index 0000000..9c1f207 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/dct4.c @@ -0,0 +1,89 @@ +#include "ref.h" + +void ref_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer) +{ + uint32_t n,k; + float32_t sum; + float32_t pi_by_N = 3.14159265358979f / (float32_t)S->N; + float32_t tmp; + float32_t normalize = sqrtf(2.0f / (float32_t)S->N); + + for(k=0;kN;k++) + { + sum=0.0f; + tmp = ((float32_t)k + 0.5f)*pi_by_N; + for(n=0;nN;n++) + { + sum += pInlineBuffer[n] * cosf(tmp * ((float32_t)n + 0.5f)); + } + scratchArray[k] = normalize * sum; + } + + for(k=0;kN;k++) + { + pInlineBuffer[k] = scratchArray[k]; + } +} + +void ref_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer) +{ + arm_dct4_instance_f32 SS; + float32_t *fSrc = (float32_t*)pInlineBuffer; + uint32_t i; + + SS.N = S->N; + + for(i=0;iN;i++) + { + //read the q31 data, cast to float, scale down for float + fSrc[i] = (float32_t)pInlineBuffer[i] / 2147483648.0f; + } + + ref_dct4_f32(&SS,(float32_t*)0,fSrc); + + for(i=0;iN;i++) + { + fSrc[i] = fSrc[i] * 2147483648.0f / (float32_t)S->N ; + fSrc[i] += (fSrc[i] > 0) ? 0.5f : -0.5f; + pInlineBuffer[i] = (q31_t)fSrc[i]; + } +} + +void ref_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer) +{ + arm_dct4_instance_f32 SS; + float32_t *fSrc = (float32_t*)pInlineBuffer; + uint32_t i; + + SS.N = S->N; + + for(i=0;iN;i++) + { + //read the q15 data, cast to float, scale down for float, place in temporary buffer + scratchArray[i] = (float32_t)pInlineBuffer[i] / 32768.0f; + } + + for(i=0;iN;i++) + { + //copy from temp buffer to final buffer + fSrc[i] = scratchArray[i]; + } + + ref_dct4_f32(&SS,(float32_t*)0,fSrc); + + for(i=0;iN;i++) + { + fSrc[i] = fSrc[i] * 32768.0f / (float32_t)S->N; + fSrc[i] += (fSrc[i] > 0) ? 0.5f : -0.5f; + pInlineBuffer[i] = (q15_t)fSrc[i]; + } +} diff --git a/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/rfft.c b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/rfft.c new file mode 100644 index 0000000..79738f0 --- /dev/null +++ b/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/RefLibs/src/TransformFunctions/rfft.c @@ -0,0 +1,302 @@ +#include "ref.h" +#include "arm_const_structs.h" + +void ref_rfft_f32( + arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst) +{ + uint32_t i; + + if (S->ifftFlagR) + { + for(i=0;ifftLenReal*2;i++) + { + pDst[i] = pSrc[i]; + } + } + else + { + for(i=0;ifftLenReal;i++) + { + pDst[2*i+0] = pSrc[i]; + pDst[2*i+1] = 0.0f; + } + } + + switch(S->fftLenReal) + { + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, pDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, pDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, pDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 8192: + ref_cfft_f32(&ref_cfft_sR_f32_len8192, pDst, S->ifftFlagR, S->bitReverseFlagR); + break; + } + + if (S->ifftFlagR) + { + //throw away the imaginary part which should be all zeros + for(i=0;ifftLenReal;i++) + { + pDst[i] = pDst[2*i]; + } + } +} + +void ref_rfft_fast_f32( + arm_rfft_fast_instance_f32 * S, + float32_t * p, float32_t * pOut, + uint8_t ifftFlag) +{ + uint32_t i,j; + + if (ifftFlag) + { + for(i=0;ifftLenRFFT;i++) + { + pOut[i] = p[i]; + } + //unpack first sample's complex part into middle sample's real part + pOut[S->fftLenRFFT] = pOut[1]; + pOut[S->fftLenRFFT+1] = 0; + pOut[1] = 0; + j=4; + for(i = S->fftLenRFFT / 2 + 1;i < S->fftLenRFFT;i++) + { + pOut[2*i+0] = p[2*i+0 - j]; + pOut[2*i+1] = -p[2*i+1 - j]; + j+=4; + } + } + else + { + for(i=0;ifftLenRFFT;i++) + { + pOut[2*i+0] = p[i]; + pOut[2*i+1] = 0.0f; + } + } + + switch(S->fftLenRFFT) + { + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, pOut, ifftFlag, 1); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, pOut, ifftFlag, 1); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, pOut, ifftFlag, 1); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, pOut, ifftFlag, 1); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, pOut, ifftFlag, 1); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, pOut, ifftFlag, 1); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, pOut, ifftFlag, 1); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, pOut, ifftFlag, 1); + break; + } + + if (ifftFlag) + { + //throw away the imaginary part which should be all zeros + for(i=0;ifftLenRFFT;i++) + { + pOut[i] = pOut[2*i]; + } + } + else + { + //pack last sample's real part into first sample's complex part + pOut[1] = pOut[S->fftLenRFFT]; + } +} + +void ref_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst) +{ + uint32_t i; + float32_t *fDst = (float32_t*)pDst; + + if (S->ifftFlagR) + { + for(i=0;ifftLenReal*2;i++) + { + fDst[i] = (float32_t)pSrc[i] / 2147483648.0f; + } + } + else + { + for(i=0;ifftLenReal;i++) + { + fDst[2*i+0] = (float32_t)pSrc[i] / 2147483648.0f; + fDst[2*i+1] = 0.0f; + } + } + + switch(S->fftLenReal) + { + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 8192: + ref_cfft_f32(&ref_cfft_sR_f32_len8192, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + } + + if (S->ifftFlagR) + { + //throw away the imaginary part which should be all zeros + for(i=0;ifftLenReal;i++) + { + //read the float data, scale up for q31, cast to q31 + pDst[i] = (q31_t)( fDst[2*i] * 2147483648.0f); + } + } + else + { + for(i=0;ifftLenReal;i++) + { + //read the float data, scale up for q31, cast to q31 + pDst[i] = (q31_t)( fDst[i] * 2147483648.0f / (float32_t)S->fftLenReal); + } + } +} + +void ref_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst) +{ + uint32_t i; + float32_t *fDst = (float32_t*)pDst; + + + if (S->ifftFlagR) + { + for(i=0;ifftLenReal*2;i++) + { + fDst[i] = (float32_t)pSrc[i] / 32768.0f; + } + } + else + { + for(i=0;ifftLenReal;i++) + { + //read the q15 data, cast to float, scale down for float + fDst[2*i+0] = (float32_t)pSrc[i] / 32768.0f; + fDst[2*i+1] = 0.0f; + } + } + + switch(S->fftLenReal) + { + case 32: + ref_cfft_f32(&arm_cfft_sR_f32_len32, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 64: + ref_cfft_f32(&arm_cfft_sR_f32_len64, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 128: + ref_cfft_f32(&arm_cfft_sR_f32_len128, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 256: + ref_cfft_f32(&arm_cfft_sR_f32_len256, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 512: + ref_cfft_f32(&arm_cfft_sR_f32_len512, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 1024: + ref_cfft_f32(&arm_cfft_sR_f32_len1024, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 2048: + ref_cfft_f32(&arm_cfft_sR_f32_len2048, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 4096: + ref_cfft_f32(&arm_cfft_sR_f32_len4096, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + + case 8192: + ref_cfft_f32(&ref_cfft_sR_f32_len8192, fDst, S->ifftFlagR, S->bitReverseFlagR); + break; + } + + if (S->ifftFlagR) + { + //throw away the imaginary part which should be all zeros + for(i=0;ifftLenReal;i++) + { + pDst[i] = (q15_t)( fDst[2*i] * 32768.0f); + } + } + else + { + for(i=0;ifftLenReal;i++) + { + pDst[i] = (q15_t)( fDst[i] * 32768.0f / (float32_t)S->fftLenReal); + } + } +} diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/Abstract.txt new file mode 100644 index 0000000..7ac021f --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_class_marks_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/arm_class_marks_example_f32.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/arm_class_marks_example_f32.c new file mode 100644 index 0000000..e6842de --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_class_marks_example/arm_class_marks_example_f32.c @@ -0,0 +1,211 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_class_marks_example_f32.c +* +* Description: Example code to calculate Minimum, Maximum +* Mean, std and variance of marks obtained in a class +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup ClassMarks Class Marks Example + * + * \par Description: + * \par + * Demonstrates the use the Maximum, Minimum, Mean, Standard Deviation, Variance + * and Matrix functions to calculate statistical values of marks obtained in a class. + * + * \note This example also demonstrates the usage of static initialization. + * + * \par Variables Description: + * \par + * \li \c testMarks_f32 points to the marks scored by 20 students in 4 subjects + * \li \c max_marks Maximum of all marks + * \li \c min_marks Minimum of all marks + * \li \c mean Mean of all marks + * \li \c var Variance of the marks + * \li \c std Standard deviation of the marks + * \li \c numStudents Total number of students in the class + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_mat_init_f32() + * - arm_mat_mult_f32() + * - arm_max_f32() + * - arm_min_f32() + * - arm_mean_f32() + * - arm_std_f32() + * - arm_var_f32() + * + * Refer + * \link arm_class_marks_example_f32.c \endlink + * + */ + + +/** \example arm_class_marks_example_f32.c + */ +#include "arm_math.h" + +#define USE_STATIC_INIT + + /* ---------------------------------------------------------------------- +** Global defines +** ------------------------------------------------------------------- */ + +#define TEST_LENGTH_SAMPLES (20*4) + +/* ---------------------------------------------------------------------- +** List of Marks scored by 20 students for 4 subjects +** ------------------------------------------------------------------- */ +const float32_t testMarks_f32[TEST_LENGTH_SAMPLES] = +{ + 42.000000, 37.000000, 81.000000, 28.000000, + 83.000000, 72.000000, 36.000000, 38.000000, + 32.000000, 51.000000, 63.000000, 64.000000, + 97.000000, 82.000000, 95.000000, 90.000000, + 66.000000, 51.000000, 54.000000, 42.000000, + 67.000000, 56.000000, 45.000000, 57.000000, + 67.000000, 69.000000, 35.000000, 52.000000, + 29.000000, 81.000000, 58.000000, 47.000000, + 38.000000, 76.000000, 100.000000, 29.000000, + 33.000000, 47.000000, 29.000000, 50.000000, + 34.000000, 41.000000, 61.000000, 46.000000, + 52.000000, 50.000000, 48.000000, 36.000000, + 47.000000, 55.000000, 44.000000, 40.000000, + 100.000000, 94.000000, 84.000000, 37.000000, + 32.000000, 71.000000, 47.000000, 77.000000, + 31.000000, 50.000000, 49.000000, 35.000000, + 63.000000, 67.000000, 40.000000, 31.000000, + 29.000000, 68.000000, 61.000000, 38.000000, + 31.000000, 28.000000, 28.000000, 76.000000, + 55.000000, 33.000000, 29.000000, 39.000000 +}; + + +/* ---------------------------------------------------------------------- +* Number of subjects X 1 +* ------------------------------------------------------------------- */ +const float32_t testUnity_f32[4] = +{ + 1.000, 1.000, 1.000, 1.000 +}; + + +/* ---------------------------------------------------------------------- +** f32 Output buffer +** ------------------------------------------------------------------- */ +static float32_t testOutput[TEST_LENGTH_SAMPLES]; + + +/* ------------------------------------------------------------------ +* Global defines +*------------------------------------------------------------------- */ +#define NUMSTUDENTS 20 +#define NUMSUBJECTS 4 + +/* ------------------------------------------------------------------ +* Global variables +*------------------------------------------------------------------- */ + + uint32_t numStudents = 20; + uint32_t numSubjects = 4; +float32_t max_marks, min_marks, mean, std, var; + uint32_t student_num; + +/* ---------------------------------------------------------------------------------- +* Main f32 test function. It returns maximum marks secured and student number +* ------------------------------------------------------------------------------- */ + +int32_t main() +{ + +#ifndef USE_STATIC_INIT + + arm_matrix_instance_f32 srcA; + arm_matrix_instance_f32 srcB; + arm_matrix_instance_f32 dstC; + + /* Input and output matrices initializations */ + arm_mat_init_f32(&srcA, numStudents, numSubjects, (float32_t *)testMarks_f32); + arm_mat_init_f32(&srcB, numSubjects, 1, (float32_t *)testUnity_f32); + arm_mat_init_f32(&dstC, numStudents, 1, testOutput); + +#else + + /* Static Initializations of Input and output matrix sizes and array */ + arm_matrix_instance_f32 srcA = {NUMSTUDENTS, NUMSUBJECTS, (float32_t *)testMarks_f32}; + arm_matrix_instance_f32 srcB = {NUMSUBJECTS, 1, (float32_t *)testUnity_f32}; + arm_matrix_instance_f32 dstC = {NUMSTUDENTS, 1, testOutput}; + +#endif + + + /* ---------------------------------------------------------------------- + *Call the Matrix multiplication process function + * ------------------------------------------------------------------- */ + arm_mat_mult_f32(&srcA, &srcB, &dstC); + + /* ---------------------------------------------------------------------- + ** Call the Max function to calculate max marks among numStudents + ** ------------------------------------------------------------------- */ + arm_max_f32(testOutput, numStudents, &max_marks, &student_num); + + /* ---------------------------------------------------------------------- + ** Call the Min function to calculate min marks among numStudents + ** ------------------------------------------------------------------- */ + arm_min_f32(testOutput, numStudents, &min_marks, &student_num); + + /* ---------------------------------------------------------------------- + ** Call the Mean function to calculate mean + ** ------------------------------------------------------------------- */ + arm_mean_f32(testOutput, numStudents, &mean); + + /* ---------------------------------------------------------------------- + ** Call the std function to calculate standard deviation + ** ------------------------------------------------------------------- */ + arm_std_f32(testOutput, numStudents, &std); + + /* ---------------------------------------------------------------------- + ** Call the var function to calculate variance + ** ------------------------------------------------------------------- */ + arm_var_f32(testOutput, numStudents, &var); + + while (1); /* main function does not return */ +} diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/Abstract.txt new file mode 100644 index 0000000..7ef79e2 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_convolution_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/arm_convolution_example_f32.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/arm_convolution_example_f32.c new file mode 100644 index 0000000..e4665fe --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/arm_convolution_example_f32.c @@ -0,0 +1,247 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_convolution_example_f32.c +* +* Description: Example code demonstrating Convolution of two input signals using fft. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup ConvolutionExample Convolution Example + * + * \par Description: + * \par + * Demonstrates the convolution theorem with the use of the Complex FFT, Complex-by-Complex + * Multiplication, and Support Functions. + * + * \par Algorithm: + * \par + * The convolution theorem states that convolution in the time domain corresponds to + * multiplication in the frequency domain. Therefore, the Fourier transform of the convoution of + * two signals is equal to the product of their individual Fourier transforms. + * The Fourier transform of a signal can be evaluated efficiently using the Fast Fourier Transform (FFT). + * \par + * Two input signals, a[n] and b[n], with lengths \c n1 and \c n2 respectively, + * are zero padded so that their lengths become \c N, which is greater than or equal to (n1+n2-1) + * and is a power of 4 as FFT implementation is radix-4. + * The convolution of a[n] and b[n] is obtained by taking the FFT of the input + * signals, multiplying the Fourier transforms of the two signals, and taking the inverse FFT of + * the multiplied result. + * \par + * This is denoted by the following equations: + *
 A[k] = FFT(a[n],N)
+ * B[k] = FFT(b[n],N)
+ * conv(a[n], b[n]) = IFFT(A[k] * B[k], N)
+ * where A[k] and B[k] are the N-point FFTs of the signals a[n] + * and b[n] respectively. + * The length of the convolved signal is (n1+n2-1). + * + * \par Block Diagram: + * \par + * \image html Convolution.gif + * + * \par Variables Description: + * \par + * \li \c testInputA_f32 points to the first input sequence + * \li \c srcALen length of the first input sequence + * \li \c testInputB_f32 points to the second input sequence + * \li \c srcBLen length of the second input sequence + * \li \c outLen length of convolution output sequence, (srcALen + srcBLen - 1) + * \li \c AxB points to the output array where the product of individual FFTs of inputs is stored. + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_fill_f32() + * - arm_copy_f32() + * - arm_cfft_radix4_init_f32() + * - arm_cfft_radix4_f32() + * - arm_cmplx_mult_cmplx_f32() + * + * Refer + * \link arm_convolution_example_f32.c \endlink + * + */ + + +/** \example arm_convolution_example_f32.c + */ + +#include "arm_math.h" +#include "math_helper.h" + +/* ---------------------------------------------------------------------- +* Defines each of the tests performed +* ------------------------------------------------------------------- */ +#define MAX_BLOCKSIZE 128 +#define DELTA (0.000001f) +#define SNR_THRESHOLD 90 + +/* ---------------------------------------------------------------------- +* Declare I/O buffers +* ------------------------------------------------------------------- */ +float32_t Ak[MAX_BLOCKSIZE]; /* Input A */ +float32_t Bk[MAX_BLOCKSIZE]; /* Input B */ +float32_t AxB[MAX_BLOCKSIZE * 2]; /* Output */ + +/* ---------------------------------------------------------------------- +* Test input data for Floating point Convolution example for 32-blockSize +* Generated by the MATLAB randn() function +* ------------------------------------------------------------------- */ +float32_t testInputA_f32[64] = +{ + -0.808920, 1.357369, 1.180861, -0.504544, 1.762637, -0.703285, + 1.696966, 0.620571, -0.151093, -0.100235, -0.872382, -0.403579, + -0.860749, -0.382648, -1.052338, 0.128113, -0.646269, 1.093377, + -2.209198, 0.471706, 0.408901, 1.266242, 0.598252, 1.176827, + -0.203421, 0.213596, -0.851964, -0.466958, 0.021841, -0.698938, + -0.604107, 0.461778, -0.318219, 0.942520, 0.577585, 0.417619, + 0.614665, 0.563679, -1.295073, -0.764437, 0.952194, -0.859222, + -0.618554, -2.268542, -1.210592, 1.655853, -2.627219, -0.994249, + -1.374704, 0.343799, 0.025619, 1.227481, -0.708031, 0.069355, + -1.845228, -1.570886, 1.010668, -1.802084, 1.630088, 1.286090, + -0.161050, -0.940794, 0.367961, 0.291907 + +}; + +float32_t testInputB_f32[64] = +{ + 0.933724, 0.046881, 1.316470, 0.438345, 0.332682, 2.094885, + 0.512081, 0.035546, 0.050894, -2.320371, 0.168711, -1.830493, + -0.444834, -1.003242, -0.531494, -1.365600, -0.155420, -0.757692, + -0.431880, -0.380021, 0.096243, -0.695835, 0.558850, -1.648962, + 0.020369, -0.363630, 0.887146, 0.845503, -0.252864, -0.330397, + 1.269131, -1.109295, -1.027876, 0.135940, 0.116721, -0.293399, + -1.349799, 0.166078, -0.802201, 0.369367, -0.964568, -2.266011, + 0.465178, 0.651222, -0.325426, 0.320245, -0.784178, -0.579456, + 0.093374, 0.604778, -0.048225, 0.376297, -0.394412, 0.578182, + -1.218141, -1.387326, 0.692462, -0.631297, 0.153137, -0.638952, + 0.635474, -0.970468, 1.334057, -0.111370 +}; + +const float testRefOutput_f32[127] = +{ + -0.818943, 1.229484, -0.533664, 1.016604, 0.341875, -1.963656, + 5.171476, 3.478033, 7.616361, 6.648384, 0.479069, 1.792012, + -1.295591, -7.447818, 0.315830, -10.657445, -2.483469, -6.524236, + -7.380591, -3.739005, -8.388957, 0.184147, -1.554888, 3.786508, + -1.684421, 5.400610, -1.578126, 7.403361, 8.315999, 2.080267, + 11.077776, 2.749673, 7.138962, 2.748762, 0.660363, 0.981552, + 1.442275, 0.552721, -2.576892, 4.703989, 0.989156, 8.759344, + -0.564825, -3.994680, 0.954710, -5.014144, 6.592329, 1.599488, + -13.979146, -0.391891, -4.453369, -2.311242, -2.948764, 1.761415, + -0.138322, 10.433007, -2.309103, 4.297153, 8.535523, 3.209462, + 8.695819, 5.569919, 2.514304, 5.582029, 2.060199, 0.642280, + 7.024616, 1.686615, -6.481756, 1.343084, -3.526451, 1.099073, + -2.965764, -0.173723, -4.111484, 6.528384, -6.965658, 1.726291, + 1.535172, 11.023435, 2.338401, -4.690188, 1.298210, 3.943885, + 8.407885, 5.168365, 0.684131, 1.559181, 1.859998, 2.852417, + 8.574070, -6.369078, 6.023458, 11.837963, -6.027632, 4.469678, + -6.799093, -2.674048, 6.250367, -6.809971, -3.459360, 9.112410, + -2.711621, -1.336678, 1.564249, -1.564297, -1.296760, 8.904013, + -3.230109, 6.878013, -7.819823, 3.369909, -1.657410, -2.007358, + -4.112825, 1.370685, -3.420525, -6.276605, 3.244873, -3.352638, + 1.545372, 0.902211, 0.197489, -1.408732, 0.523390, 0.348440, 0 +}; + + +/* ---------------------------------------------------------------------- +* Declare Global variables +* ------------------------------------------------------------------- */ +uint32_t srcALen = 64; /* Length of Input A */ +uint32_t srcBLen = 64; /* Length of Input B */ +uint32_t outLen; /* Length of convolution output */ +float32_t snr; /* output SNR */ + +int32_t main(void) +{ + arm_status status; /* Status of the example */ + arm_cfft_radix4_instance_f32 cfft_instance; /* CFFT Structure instance */ + + /* CFFT Structure instance pointer */ + arm_cfft_radix4_instance_f32 *cfft_instance_ptr = + (arm_cfft_radix4_instance_f32*) &cfft_instance; + + /* output length of convolution */ + outLen = srcALen + srcBLen - 1; + + /* Initialise the fft input buffers with all zeros */ + arm_fill_f32(0.0, Ak, MAX_BLOCKSIZE); + arm_fill_f32(0.0, Bk, MAX_BLOCKSIZE); + + /* Copy the input values to the fft input buffers */ + arm_copy_f32(testInputA_f32, Ak, MAX_BLOCKSIZE/2); + arm_copy_f32(testInputB_f32, Bk, MAX_BLOCKSIZE/2); + + /* Initialize the CFFT function to compute 64 point fft */ + status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 0, 1); + + /* Transform input a[n] from time domain to frequency domain A[k] */ + arm_cfft_radix4_f32(cfft_instance_ptr, Ak); + /* Transform input b[n] from time domain to frequency domain B[k] */ + arm_cfft_radix4_f32(cfft_instance_ptr, Bk); + + /* Complex Multiplication of the two input buffers in frequency domain */ + arm_cmplx_mult_cmplx_f32(Ak, Bk, AxB, MAX_BLOCKSIZE/2); + + /* Initialize the CIFFT function to compute 64 point ifft */ + status = arm_cfft_radix4_init_f32(cfft_instance_ptr, 64, 1, 1); + + /* Transform the multiplication output from frequency domain to time domain, + that gives the convolved output */ + arm_cfft_radix4_f32(cfft_instance_ptr, AxB); + + /* SNR Calculation */ + snr = arm_snr_f32((float32_t *)testRefOutput_f32, AxB, srcALen + srcBLen - 1); + + /* Compare the SNR with threshold to test whether the + computed output is matched with the reference output values. */ + if ( snr > SNR_THRESHOLD) + { + status = ARM_MATH_SUCCESS; + } + + if ( status != ARM_MATH_SUCCESS) + { + while (1); + } + + while (1); /* main function does not return */ +} + + /** \endlink */ diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/math_helper.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/math_helper.c new file mode 100644 index 0000000..f615e6f --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/math_helper.c @@ -0,0 +1,466 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 b +* +* Project: CMSIS DSP Library +* +* Title: math_helper.c +* +* Description: Definition of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- +* Include standard header files +* -------------------------------------------------------------------- */ +#include + +/* ---------------------------------------------------------------------- +* Include project header files +* -------------------------------------------------------------------- */ +#include "math_helper.h" + +/** + * @brief Caluclation of SNR + * @param[in] pRef Pointer to the reference buffer + * @param[in] pTest Pointer to the test buffer + * @param[in] buffSize total number of samples + * @return SNR + * The function Caluclates signal to noise ratio for the reference output + * and test output + */ + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize) +{ + float EnergySignal = 0.0, EnergyError = 0.0; + uint32_t i; + float SNR; + int temp; + int *test; + + for (i = 0; i < buffSize; i++) + { + /* Checking for a NAN value in pRef array */ + test = (int *)(&pRef[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + /* Checking for a NAN value in pTest array */ + test = (int *)(&pTest[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + EnergySignal += pRef[i] * pRef[i]; + EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); + } + + /* Checking for a NAN value in EnergyError */ + test = (int *)(&EnergyError); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + + SNR = 10 * log10 (EnergySignal / EnergyError); + + return (SNR); + +} + + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Converts float to fixed in q12.20 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to outputbuffer + * @param[in] numSamples number of samples in the input buffer + * @return none + * The function converts floating point values to fixed point(q12.20) values + */ + +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1048576.0f corresponds to pow(2, 20) */ + pOut[i] = (q31_t) (pIn[i] * 1048576.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 1.0) + { + pOut[i] = 0x000FFFFF; + } + } +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q31 (q31_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q7 (q7_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + + + +/** + * @brief Caluclates number of guard bits + * @param[in] num_adds number of additions + * @return guard bits + * The function Caluclates the number of guard bits + * depending on the numtaps + */ + +uint32_t arm_calc_guard_bits (uint32_t num_adds) +{ + uint32_t i = 1, j = 0; + + if (num_adds == 1) + { + return (0); + } + + while (i < num_adds) + { + i = i * 2; + j++; + } + + return (j); +} + +/** + * @brief Apply guard bits to buffer + * @param[in,out] pIn pointer to input buffer + * @param[in] numSamples number of samples in the input buffer + * @param[in] guard_bits guard bits + * @return none + */ + +void arm_apply_guard_bits (float32_t *pIn, + uint32_t numSamples, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + pIn[i] = pIn[i] * arm_calc_2pow(guard_bits); + } +} + +/** + * @brief Calculates pow(2, numShifts) + * @param[in] numShifts number of shifts + * @return pow(2, numShifts) + */ +uint32_t arm_calc_2pow(uint32_t numShifts) +{ + + uint32_t i, val = 1; + + for (i = 0; i < numShifts; i++) + { + val = val * 2; + } + + return(val); +} + + + +/** + * @brief Converts float to fixed q14 + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 16384.0f corresponds to pow(2, 14) */ + pOut[i] = (q15_t) (pIn[i] * 16384.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFF; + } + + } + +} + + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 1073741824.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 536870912.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 4.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + + +/** + * @brief Converts float to fixed q28 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 268435456.0f corresponds to pow(2, 28) */ + pOut[i] = (q31_t) (pIn[i] * 268435456.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 8.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Clip the float values to +/- 1 + * @param[in,out] pIn input buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_clip_f32 (float *pIn, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + if (pIn[i] > 1.0f) + { + pIn[i] = 1.0; + } + else if ( pIn[i] < -1.0f) + { + pIn[i] = -1.0; + } + + } +} + + + + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/math_helper.h b/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/math_helper.h new file mode 100644 index 0000000..5a18734 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_convolution_example/math_helper.h @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* +* Title: math_helper.h +* +* Description: Prototypes of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +#ifndef MATH_HELPER_H +#define MATH_HELPER_H + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize); +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples); +void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples); +void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_clip_f32(float *pIn, uint32_t numSamples); +uint32_t arm_calc_guard_bits(uint32_t num_adds); +void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits); +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples); +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples); +uint32_t arm_calc_2pow(uint32_t guard_bits); +#endif + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/Abstract.txt new file mode 100644 index 0000000..f889251 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_dotproduct_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/arm_dotproduct_example_f32.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/arm_dotproduct_example_f32.c new file mode 100644 index 0000000..5a05071 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_dotproduct_example/arm_dotproduct_example_f32.c @@ -0,0 +1,178 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_dotproduct_example_f32.c +* +* Description: Example code computing dot product of two vectors. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup DotproductExample Dot Product Example + * + * \par Description: + * \par + * Demonstrates the use of the Multiply and Add functions to perform the dot product. + * The dot product of two vectors is obtained by multiplying corresponding elements + * and summing the products. + + * \par Algorithm: + * \par + * The two input vectors \c A and \c B with length \c n, are multiplied element-by-element + * and then added to obtain dot product. + * \par + * This is denoted by the following equation: + *
  dotProduct = A[0] * B[0] + A[1] * B[1] + ... + A[n-1] * B[n-1]
+ * + * \par Block Diagram: + * \par + * \image html dotProduct.gif + * + * \par Variables Description: + * \par + * \li \c srcA_buf_f32 points to first input vector + * \li \c srcB_buf_f32 points to second input vector + * \li \c testOutput stores dot product of the two input vectors. + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_mult_f32() + * - arm_add_f32() + * + * Refer + * \link arm_dotproduct_example_f32.c \endlink + * + */ + + +/** \example arm_dotproduct_example_f32.c + */ + +#include +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +* Defines each of the tests performed +* ------------------------------------------------------------------- */ +#define MAX_BLOCKSIZE 32 +#define DELTA (0.000001f) + +/* ---------------------------------------------------------------------- +* Test input data for Floating point Dot Product example for 32-blockSize +* Generated by the MATLAB randn() function +* ------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- +** Test input data of srcA for blockSize 32 +** ------------------------------------------------------------------- */ +float32_t srcA_buf_f32[MAX_BLOCKSIZE] = +{ + -0.4325648115282207, -1.6655843782380970, 0.1253323064748307, + 0.2876764203585489, -1.1464713506814637, 1.1909154656429988, + 1.1891642016521031, -0.0376332765933176, 0.3272923614086541, + 0.1746391428209245, -0.1867085776814394, 0.7257905482933027, + -0.5883165430141887, 2.1831858181971011, -0.1363958830865957, + 0.1139313135208096, 1.0667682113591888, 0.0592814605236053, + -0.0956484054836690, -0.8323494636500225, 0.2944108163926404, + -1.3361818579378040, 0.7143245518189522, 1.6235620644462707, + -0.6917757017022868, 0.8579966728282626, 1.2540014216025324, + -1.5937295764474768, -1.4409644319010200, 0.5711476236581780, + -0.3998855777153632, 0.6899973754643451 +}; + +/* ---------------------------------------------------------------------- +** Test input data of srcB for blockSize 32 +** ------------------------------------------------------------------- */ +float32_t srcB_buf_f32[MAX_BLOCKSIZE] = +{ + 1.7491401329284098, 0.1325982188803279, 0.3252281811989881, + -0.7938091410349637, 0.3149236145048914, -0.5272704888029532, + 0.9322666565031119, 1.1646643544607362, -2.0456694357357357, + -0.6443728590041911, 1.7410657940825480, 0.4867684246821860, + 1.0488288293660140, 1.4885752747099299, 1.2705014969484090, + -1.8561241921210170, 2.1343209047321410, 1.4358467535865909, + -0.9173023332875400, -1.1060770780029008, 0.8105708062681296, + 0.6985430696369063, -0.4015827425012831, 1.2687512030669628, + -0.7836083053674872, 0.2132664971465569, 0.7878984786088954, + 0.8966819356782295, -0.1869172943544062, 1.0131816724341454, + 0.2484350696132857, 0.0596083377937976 +}; + +/* Reference dot product output */ +float32_t refDotProdOut = 5.9273644806352142; + +/* ---------------------------------------------------------------------- +* Declare Global variables +* ------------------------------------------------------------------- */ +float32_t multOutput[MAX_BLOCKSIZE]; /* Intermediate output */ +float32_t testOutput; /* Final ouput */ + +arm_status status; /* Status of the example */ + +int32_t main(void) +{ + uint32_t i; /* Loop counter */ + float32_t diff; /* Difference between reference and test outputs */ + + /* Multiplication of two input buffers */ + arm_mult_f32(srcA_buf_f32, srcB_buf_f32, multOutput, MAX_BLOCKSIZE); + + /* Accumulate the multiplication output values to + get the dot product of the two inputs */ + for(i=0; i< MAX_BLOCKSIZE; i++) + { + arm_add_f32(&testOutput, &multOutput[i], &testOutput, 1); + } + + /* absolute value of difference between ref and test */ + diff = fabsf(refDotProdOut - testOutput); + + /* Comparison of dot product value with reference */ + if (diff > DELTA) + { + status = ARM_MATH_TEST_FAILURE; + } + + if ( status == ARM_MATH_TEST_FAILURE) + { + while (1); + } + + while (1); /* main function does not return */ +} + + /** \endlink */ diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/Abstract.txt new file mode 100644 index 0000000..37bea21 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_fft_bin_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_data.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_data.c new file mode 100644 index 0000000..10f3e12 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_data.c @@ -0,0 +1,308 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_fft_bin_data.c +* +* Description: Data file used for example code +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +Test Input signal contains 10KHz signal + Uniformly distributed white noise +** ------------------------------------------------------------------- */ + +float32_t testInput_f32_10khz[2048] = +{ +-0.865129623056441, 0.000000000000000, -2.655020678073846, 0.000000000000000, 0.600664612949661, 0.000000000000000, 0.080378093886515, 0.000000000000000, +-2.899160484012034, 0.000000000000000, 2.563004262857762, 0.000000000000000, 3.078328403304206, 0.000000000000000, 0.105906778385130, 0.000000000000000, +0.048366940168201, 0.000000000000000, -0.145696461188734, 0.000000000000000, -0.023417155362879, 0.000000000000000, 2.127729174988954, 0.000000000000000, +-1.176633086028377, 0.000000000000000, 3.690223557991855, 0.000000000000000, -0.622791766173194, 0.000000000000000, 0.722837373872203, 0.000000000000000, +2.739754205367484, 0.000000000000000, -0.062610410524552, 0.000000000000000, -0.891296810967338, 0.000000000000000, -1.845872258871811, 0.000000000000000, +1.195039415434387, 0.000000000000000, -2.177388969045026, 0.000000000000000, 1.078649103637905, 0.000000000000000, 2.570976050490193, 0.000000000000000, +-1.383551403404574, 0.000000000000000, 2.392141424058873, 0.000000000000000, 2.858002843205065, 0.000000000000000, -3.682433899725536, 0.000000000000000, +-3.488146646451150, 0.000000000000000, 1.323468578888120, 0.000000000000000, -0.099771155430726, 0.000000000000000, 1.561168082500454, 0.000000000000000, +1.025026795103179, 0.000000000000000, 0.928841900171200, 0.000000000000000, 2.930499509864950, 0.000000000000000, 2.013349089766430, 0.000000000000000, +2.381676148486737, 0.000000000000000, -3.081062307950236, 0.000000000000000, -0.389579115537544, 0.000000000000000, 0.181540149166620, 0.000000000000000, +-2.601953341353208, 0.000000000000000, 0.333435137783218, 0.000000000000000, -2.812945856162965, 0.000000000000000, 2.649109640172910, 0.000000000000000, +-1.003963025744654, 0.000000000000000, 1.552460768755035, 0.000000000000000, 0.088641345335247, 0.000000000000000, -2.519951327113426, 0.000000000000000, +-4.341348988610527, 0.000000000000000, 0.557772429359965, 0.000000000000000, -1.671267412948494, 0.000000000000000, 0.733951350960387, 0.000000000000000, +0.409263788034864, 0.000000000000000, 3.566033071952806, 0.000000000000000, 1.882565173848352, 0.000000000000000, -1.106017073793287, 0.000000000000000, +0.154456720778718, 0.000000000000000, -2.513205795512153, 0.000000000000000, 0.310978660939421, 0.000000000000000, 0.579706500111723, 0.000000000000000, +0.000086383683251, 0.000000000000000, -1.311866980897721, 0.000000000000000, 1.840007477574986, 0.000000000000000, -3.253005768451345, 0.000000000000000, +1.462584328739432, 0.000000000000000, 1.610103610851738, 0.000000000000000, 0.761914676858907, 0.000000000000000, 0.974541361089834, 0.000000000000000, +0.686845845885983, 0.000000000000000, 1.849153122025191, 0.000000000000000, 0.787800410401453, 0.000000000000000, -1.187438909666279, 0.000000000000000, +-0.754937911044720, 0.000000000000000, 0.084373858395232, 0.000000000000000, -2.600269011710521, 0.000000000000000, -0.962982842142644, 0.000000000000000, +-0.369328108540868, 0.000000000000000, 0.810791418361879, 0.000000000000000, 3.587016488699641, 0.000000000000000, -0.520776145083723, 0.000000000000000, +0.640249919627884, 0.000000000000000, 1.103122489464969, 0.000000000000000, 2.231779881455556, 0.000000000000000, -1.308035392685241, 0.000000000000000, +0.424070304330106, 0.000000000000000, -0.200383932651189, 0.000000000000000, -2.365526783356541, 0.000000000000000, -0.989114757436628, 0.000000000000000, +2.770807688959777, 0.000000000000000, -0.444172737462307, 0.000000000000000, 0.079760979374078, 0.000000000000000, -0.005199118412183, 0.000000000000000, +-0.664712668309527, 0.000000000000000, -0.624171857561896, 0.000000000000000, 0.537306979007338, 0.000000000000000, -2.575955675497642, 0.000000000000000, +1.562363235756780, 0.000000000000000, 1.814069369848895, 0.000000000000000, -1.293428583392509, 0.000000000000000, -1.026188449495686, 0.000000000000000, +-2.981771815588717, 0.000000000000000, -4.223468103075124, 0.000000000000000, 2.672674782004045, 0.000000000000000, -0.856096801117735, 0.000000000000000, +0.048517345512563, 0.000000000000000, -0.026860721136222, 0.000000000000000, 0.392932277758187, 0.000000000000000, -1.331740855093099, 0.000000000000000, +-1.894292129477081, 0.000000000000000, -1.425006468460681, 0.000000000000000, -2.721772427617057, 0.000000000000000, -1.616831100216806, 0.000000000000000, +3.551177651488947, 0.000000000000000, -0.069685667896087, 0.000000000000000, -3.134634907409102, 0.000000000000000, -0.263627598944639, 0.000000000000000, +-1.650469945991350, 0.000000000000000, -2.203580339374399, 0.000000000000000, -0.872203246123242, 0.000000000000000, 1.230782812607287, 0.000000000000000, +0.257288860093291, 0.000000000000000, 1.989083106173137, 0.000000000000000, -1.985638729453261, 0.000000000000000, -1.416185105842892, 0.000000000000000, +-1.131097688325772, 0.000000000000000, -2.245130805416057, 0.000000000000000, -1.938873996219074, 0.000000000000000, 2.043608361562645, 0.000000000000000, +-0.583727989880841, 0.000000000000000, -1.785266378212929, 0.000000000000000, 1.961457586224753, 0.000000000000000, 1.139400099963223, 0.000000000000000, +-1.979519343363991, 0.000000000000000, 2.003023322818429, 0.000000000000000, 0.229004069076829, 0.000000000000000, 3.452808862193135, 0.000000000000000, +2.882273808365857, 0.000000000000000, -1.549450501844438, 0.000000000000000, -3.283872089931876, 0.000000000000000, -0.327025884099064, 0.000000000000000, +-0.054979977136430, 0.000000000000000, -1.192280531479012, 0.000000000000000, 0.645539328365578, 0.000000000000000, 2.300832863404618, 0.000000000000000, +-1.092951789535240, 0.000000000000000, -1.017368249363773, 0.000000000000000, -0.142673056169787, 0.000000000000000, 0.831073544881250, 0.000000000000000, +-2.314612531587064, 0.000000000000000, -2.221456299106321, 0.000000000000000, 0.460261143885226, 0.000000000000000, 0.050585301888595, 0.000000000000000, +0.364373329183988, 0.000000000000000, -1.685956552069538, 0.000000000000000, 0.050664512351055, 0.000000000000000, -0.193355783902718, 0.000000000000000, +-0.158660446046828, 0.000000000000000, 2.394156453841953, 0.000000000000000, -1.562965718554525, 0.000000000000000, -2.199750600869900, 0.000000000000000, +1.544984022381773, 0.000000000000000, -1.988307216807315, 0.000000000000000, -0.628240722541046, 0.000000000000000, -1.436235771505429, 0.000000000000000, +1.677013691147313, 0.000000000000000, 1.600741781678228, 0.000000000000000, -0.757380959134706, 0.000000000000000, -4.784797439515566, 0.000000000000000, +0.265121462834569, 0.000000000000000, 3.862029485934378, 0.000000000000000, 2.386823577249430, 0.000000000000000, -3.655779745436893, 0.000000000000000, +-0.763541621368016, 0.000000000000000, -1.182140388432962, 0.000000000000000, -1.349106114858063, 0.000000000000000, -2.287533624396759, 0.000000000000000, +-0.028603745188423, 0.000000000000000, -1.353580755934427, 0.000000000000000, 0.461602380352937, 0.000000000000000, -0.059599055078928, 0.000000000000000, +-0.929946734342228, 0.000000000000000, 0.065773089295561, 0.000000000000000, 1.106565863102982, 0.000000000000000, 4.719295086373593, 0.000000000000000, +-2.108377703544395, 0.000000000000000, -2.226393620240159, 0.000000000000000, 1.375668397437521, 0.000000000000000, -0.960772428525443, 0.000000000000000, +-2.156313465390571, 0.000000000000000, 1.126060012375311, 0.000000000000000, 2.756485137030720, 0.000000000000000, 0.739639690862600, 0.000000000000000, +3.914769510295006, 0.000000000000000, 1.685232785586675, 0.000000000000000, 4.079058040970612, 0.000000000000000, -1.174598301660513, 0.000000000000000, +-2.885776587275580, 0.000000000000000, -0.241073635188767, 0.000000000000000, 3.080489872502403, 0.000000000000000, -2.051244183999421, 0.000000000000000, +0.664330486845139, 0.000000000000000, -1.697798999370016, 0.000000000000000, 1.452369423649782, 0.000000000000000, -1.523532831019280, 0.000000000000000, +0.171981186587481, 0.000000000000000, -4.685274721583927, 0.000000000000000, -1.336175835319380, 0.000000000000000, 1.419070770428945, 0.000000000000000, +-0.035791601713475, 0.000000000000000, 2.291937971632081, 0.000000000000000, -1.962559313450293, 0.000000000000000, -4.831595589339301, 0.000000000000000, +-1.857055284000925, 0.000000000000000, 2.606271522635512, 0.000000000000000, -0.576447978738030, 0.000000000000000, 0.082299166967720, 0.000000000000000, +1.888399453494614, 0.000000000000000, -3.564705298046079, 0.000000000000000, -0.939357831083889, 0.000000000000000, -1.903578203697778, 0.000000000000000, +-2.642492215447250, 0.000000000000000, -0.182990405251017, 0.000000000000000, 3.742026478011174, 0.000000000000000, 0.104295803798333, 0.000000000000000, +1.848678195370347, 0.000000000000000, -1.887384346896369, 0.000000000000000, 0.365048973046045, 0.000000000000000, -0.889638010354219, 0.000000000000000, +1.173877118428863, 0.000000000000000, -1.178562827540109, 0.000000000000000, 0.610271645685184, 0.000000000000000, 1.831284815697871, 0.000000000000000, +0.449575390102283, 0.000000000000000, 1.597171905253443, 0.000000000000000, 3.918574971904773, 0.000000000000000, 0.868104027970404, 0.000000000000000, +0.582643134746494, 0.000000000000000, 2.321256382353331, 0.000000000000000, -0.238118642223180, 0.000000000000000, -2.890287868054370, 0.000000000000000, +0.970995414625622, 0.000000000000000, 0.666137930891283, 0.000000000000000, -0.202435718709502, 0.000000000000000, 2.057930200518194, 0.000000000000000, +3.120583443719949, 0.000000000000000, -0.863945271701041, 0.000000000000000, 0.906848893874630, 0.000000000000000, -1.434124930222570, 0.000000000000000, +0.754659384848783, 0.000000000000000, -5.224154442713778, 0.000000000000000, 2.330229744098967, 0.000000000000000, 1.113946320164698, 0.000000000000000, +0.523324920322840, 0.000000000000000, 1.750740911548348, 0.000000000000000, -0.899333972913577, 0.000000000000000, 0.228705845203506, 0.000000000000000, +-1.934782624767648, 0.000000000000000, -3.508386237231303, 0.000000000000000, -2.107108523073510, 0.000000000000000, 0.380587645474815, 0.000000000000000, +-0.476200877183279, 0.000000000000000, -2.172086712642198, 0.000000000000000, 1.795372535780299, 0.000000000000000, -2.100318983391055, 0.000000000000000, +-0.022571122461405, 0.000000000000000, 0.674514020010955, 0.000000000000000, -0.148872569390857, 0.000000000000000, 0.298175890592737, 0.000000000000000, +-1.134244492493590, 0.000000000000000, -3.146848422289455, 0.000000000000000, -1.357950199087602, 0.000000000000000, 0.667362732020878, 0.000000000000000, +-3.119397998316724, 0.000000000000000, -1.189341126297637, 0.000000000000000, -1.532744386856668, 0.000000000000000, -1.672972484202534, 0.000000000000000, +-2.042283373871558, 0.000000000000000, -1.479481547595924, 0.000000000000000, -0.002668662875396, 0.000000000000000, 0.262737760129546, 0.000000000000000, +2.734456080621830, 0.000000000000000, -0.671945925075102, 0.000000000000000, -3.735078262179111, 0.000000000000000, -0.161705013319883, 0.000000000000000, +0.748963512361001, 0.000000000000000, 1.128046374367600, 0.000000000000000, 0.649651335592966, 0.000000000000000, 1.880020215025867, 0.000000000000000, +-1.095632293842306, 0.000000000000000, 1.197764876160487, 0.000000000000000, 0.323646656252985, 0.000000000000000, -1.655502751114502, 0.000000000000000, +3.666399062961496, 0.000000000000000, -0.334060899735197, 0.000000000000000, -2.119056978738397, 0.000000000000000, 3.721375117275012, 0.000000000000000, +0.044874186872307, 0.000000000000000, -2.733053897593234, 0.000000000000000, 1.590700278891042, 0.000000000000000, 3.215711772781902, 0.000000000000000, +-1.792085012843801, 0.000000000000000, -0.405797188885475, 0.000000000000000, -0.628080020080892, 0.000000000000000, -1.831815840843960, 0.000000000000000, +2.973656862522834, 0.000000000000000, -0.212032655138417, 0.000000000000000, 0.372437389437234, 0.000000000000000, -1.614030579023492, 0.000000000000000, +-0.704900996358698, 0.000000000000000, 1.123700273452105, 0.000000000000000, -0.136371848130819, 0.000000000000000, 3.020284357635585, 0.000000000000000, +-0.550211350877649, 0.000000000000000, 5.101256236381711, 0.000000000000000, 3.367051512192333, 0.000000000000000, -4.385131946669234, 0.000000000000000, +-3.967303337694391, 0.000000000000000, -0.965894936640022, 0.000000000000000, 0.328366945264681, 0.000000000000000, 0.199041562924914, 0.000000000000000, +1.067681999025495, 0.000000000000000, -1.939516091697170, 0.000000000000000, -1.092980954328824, 0.000000000000000, 0.273786079368066, 0.000000000000000, +-0.040928322190265, 0.000000000000000, -0.118368078577437, 0.000000000000000, 1.766589628899997, 0.000000000000000, 1.738321311635393, 0.000000000000000, +-2.895012794321649, 0.000000000000000, 1.213521771395142, 0.000000000000000, 0.922971726633985, 0.000000000000000, 1.091516563636489, 0.000000000000000, +3.226378465469620, 0.000000000000000, 1.149169778666974, 0.000000000000000, -1.695986327709386, 0.000000000000000, -0.974803077355813, 0.000000000000000, +-4.898035507513607, 0.000000000000000, 1.622719302889447, 0.000000000000000, 0.583891313586579, 0.000000000000000, -1.677182424094957, 0.000000000000000, +-1.915633132814685, 0.000000000000000, -1.980150370851616, 0.000000000000000, 0.604538269404190, 0.000000000000000, 0.939862406149365, 0.000000000000000, +-1.266939874246416, 0.000000000000000, -1.494771249200063, 0.000000000000000, 0.278042784093988, 0.000000000000000, 0.326627416008916, 0.000000000000000, +-1.914530157643303, 0.000000000000000, 1.908947721862196, 0.000000000000000, 0.531819285694044, 0.000000000000000, 3.056856632319658, 0.000000000000000, +-0.389241827774643, 0.000000000000000, -2.418606606780420, 0.000000000000000, 0.915299238878703, 0.000000000000000, -0.098774174295283, 0.000000000000000, +-0.906199428444304, 0.000000000000000, 0.316716451217743, 0.000000000000000, -4.367700643578311, 0.000000000000000, 1.491687997515293, 0.000000000000000, +-1.962381126288365, 0.000000000000000, -0.700829196527045, 0.000000000000000, 3.028958963615630, 0.000000000000000, -2.313461067462598, 0.000000000000000, +-1.431933239886712, 0.000000000000000, -0.831153039725342, 0.000000000000000, 3.939495598250743, 0.000000000000000, 0.342974753984771, 0.000000000000000, +-2.768330763002974, 0.000000000000000, -2.744010370019008, 0.000000000000000, 3.821352685212561, 0.000000000000000, 4.551065271455856, 0.000000000000000, +3.270136437041298, 0.000000000000000, -3.188028411950982, 0.000000000000000, -0.777075012417436, 0.000000000000000, 0.097110650265216, 0.000000000000000, +1.221216137608812, 0.000000000000000, -1.325824244541822, 0.000000000000000, -2.655296734084113, 0.000000000000000, -1.074792144885704, 0.000000000000000, +2.770401584439407, 0.000000000000000, 5.240270645610543, 0.000000000000000, 0.108576672208892, 0.000000000000000, -1.209394350650142, 0.000000000000000, +1.403344353838785, 0.000000000000000, -0.299032904177277, 0.000000000000000, 4.074959450638227, 0.000000000000000, 1.718727473952107, 0.000000000000000, +-3.061349227080806, 0.000000000000000, -1.158596888541269, 0.000000000000000, 3.381858904662625, 0.000000000000000, 0.957339964054052, 0.000000000000000, +0.179900074904899, 0.000000000000000, -3.909641902506081, 0.000000000000000, 0.805717289408649, 0.000000000000000, 2.047413793928261, 0.000000000000000, +-1.273580225826614, 0.000000000000000, -2.681359186869971, 0.000000000000000, -0.721241345822093, 0.000000000000000, -1.613090681569475, 0.000000000000000, +0.463138804815955, 0.000000000000000, 0.377223507800954, 0.000000000000000, 2.046550684968141, 0.000000000000000, 0.178508732797712, 0.000000000000000, +-0.477815330358845, 0.000000000000000, 3.763355908332053, 0.000000000000000, 1.300430303035163, 0.000000000000000, -0.214625793857725, 0.000000000000000, +1.343267891864081, 0.000000000000000, -0.340007682433245, 0.000000000000000, 2.062703194680005, 0.000000000000000, 0.042032160234235, 0.000000000000000, +0.643732569732250, 0.000000000000000, -1.913502543857589, 0.000000000000000, 3.771340762937158, 0.000000000000000, 1.050024807363386, 0.000000000000000, +-4.440489488592649, 0.000000000000000, 0.444904302066643, 0.000000000000000, 2.898702265650048, 0.000000000000000, 1.953232980548558, 0.000000000000000, +2.761564952735079, 0.000000000000000, 1.963537633260397, 0.000000000000000, -2.168858472916215, 0.000000000000000, -4.116235357699841, 0.000000000000000, +4.183678271896528, 0.000000000000000, 0.600422284944681, 0.000000000000000, -0.659352647255126, 0.000000000000000, -0.993127338218109, 0.000000000000000, +-2.463571314945747, 0.000000000000000, 0.937720951545881, 0.000000000000000, -3.098957308429730, 0.000000000000000, -2.354719140045463, 0.000000000000000, +-0.417285119323949, 0.000000000000000, 2.187974075975947, 0.000000000000000, 1.101468905172585, 0.000000000000000, -3.185800678152109, 0.000000000000000, +2.357534709345083, 0.000000000000000, 0.246645606729407, 0.000000000000000, 4.440905650784504, 0.000000000000000, -2.236807716637866, 0.000000000000000, +-2.171481518317550, 0.000000000000000, -2.029571795072690, 0.000000000000000, 0.135599790431348, 0.000000000000000, -1.277965265520191, 0.000000000000000, +-1.927976233157507, 0.000000000000000, -5.434492783745394, 0.000000000000000, -2.026375829312657, 0.000000000000000, 1.009666016819321, 0.000000000000000, +0.238549782367247, 0.000000000000000, -0.516403923971309, 0.000000000000000, -0.933977817429352, 0.000000000000000, 0.155803015935614, 0.000000000000000, +-0.396194809997929, 0.000000000000000, -0.915178100253214, 0.000000000000000, 0.666329367985015, 0.000000000000000, -1.517991149945785, 0.000000000000000, +0.458266744144822, 0.000000000000000, -1.242845974381418, 0.000000000000000, 0.057914823556477, 0.000000000000000, 0.994101307476875, 0.000000000000000, +-2.387209849199325, 0.000000000000000, 0.459297048883826, 0.000000000000000, 0.227711405683905, 0.000000000000000, 0.030255073506117, 0.000000000000000, +-1.323361608181337, 0.000000000000000, -4.650244457426706, 0.000000000000000, 0.062908579526021, 0.000000000000000, 3.462831028244432, 0.000000000000000, +1.303608183314856, 0.000000000000000, -1.430415193881612, 0.000000000000000, -1.672886118942142, 0.000000000000000, 0.992890699210099, 0.000000000000000, +-0.160814531784247, 0.000000000000000, -1.238132939350430, 0.000000000000000, -0.589223271459376, 0.000000000000000, 2.326363810561534, 0.000000000000000, +-4.433789496230785, 0.000000000000000, 1.664686987538929, 0.000000000000000, -2.366128834617921, 0.000000000000000, 1.212421570743837, 0.000000000000000, +-4.847914267690055, 0.000000000000000, 0.228485221404712, 0.000000000000000, 0.466139765470957, 0.000000000000000, -1.344202776943546, 0.000000000000000, +-1.012053673330574, 0.000000000000000, -2.844980626424742, 0.000000000000000, -1.552703722026340, 0.000000000000000, -1.448830983885038, 0.000000000000000, +0.127010756753980, 0.000000000000000, -1.667188263752299, 0.000000000000000, 3.424818052085100, 0.000000000000000, 0.956291135453840, 0.000000000000000, +-3.725533331754662, 0.000000000000000, -1.584534272368832, 0.000000000000000, -1.654148210472472, 0.000000000000000, 0.701610500675698, 0.000000000000000, +0.164954538683927, 0.000000000000000, -0.739260064712987, 0.000000000000000, -2.167324026090101, 0.000000000000000, -0.310240491909496, 0.000000000000000, +-2.281790349106906, 0.000000000000000, 1.719655331305361, 0.000000000000000, -2.997005923606441, 0.000000000000000, -1.999301431556852, 0.000000000000000, +-0.292229010068828, 0.000000000000000, 1.172317994855851, 0.000000000000000, 0.196734885241533, 0.000000000000000, 2.981365193477068, 0.000000000000000, +2.637726016926352, 0.000000000000000, 1.434045125217982, 0.000000000000000, 0.883627180451827, 0.000000000000000, -1.434040761445747, 0.000000000000000, +-1.528891971086553, 0.000000000000000, -3.306913135367542, 0.000000000000000, -0.399059265470646, 0.000000000000000, -0.265674394285178, 0.000000000000000, +3.502591252855384, 0.000000000000000, 0.830301156604454, 0.000000000000000, -0.220021317046083, 0.000000000000000, -0.090553770476646, 0.000000000000000, +0.771863477047951, 0.000000000000000, 1.351209629105760, 0.000000000000000, 3.773699756201963, 0.000000000000000, 0.472600118752329, 0.000000000000000, +2.332825668012222, 0.000000000000000, 1.853747950314528, 0.000000000000000, 0.759515251766178, 0.000000000000000, 1.327112776215496, 0.000000000000000, +2.518730296237868, 0.000000000000000, 0.764450208786353, 0.000000000000000, -0.278275349491296, 0.000000000000000, -0.041559465082020, 0.000000000000000, +1.387166083167787, 0.000000000000000, 2.612996769598122, 0.000000000000000, -0.385404831721799, 0.000000000000000, 2.005630016170309, 0.000000000000000, +-0.950500047307998, 0.000000000000000, -1.166884021392492, 0.000000000000000, 1.432973552928162, 0.000000000000000, 2.540370505384567, 0.000000000000000, +-1.140505295054501, 0.000000000000000, -3.673358835201185, 0.000000000000000, -0.450691288038056, 0.000000000000000, 1.601024294408014, 0.000000000000000, +0.773213556014045, 0.000000000000000, 2.973873693246168, 0.000000000000000, -1.361548406382279, 0.000000000000000, 1.409136332424815, 0.000000000000000, +-0.963382518314713, 0.000000000000000, -2.031268227368161, 0.000000000000000, 0.983309972085586, 0.000000000000000, -3.461412488471631, 0.000000000000000, +-2.601124929406039, 0.000000000000000, -0.533896239766343, 0.000000000000000, -2.627129008866350, 0.000000000000000, 0.622111169161305, 0.000000000000000, +-1.160926365580422, 0.000000000000000, -2.406196188132628, 0.000000000000000, -1.076870362758737, 0.000000000000000, -1.791866820937175, 0.000000000000000, +-0.749453071522325, 0.000000000000000, -5.324156615990973, 0.000000000000000, -1.038698022238289, 0.000000000000000, -2.106629944730630, 0.000000000000000, +0.659295598564773, 0.000000000000000, 0.520940881580988, 0.000000000000000, -0.055649203928700, 0.000000000000000, 0.292096765423137, 0.000000000000000, +-4.663743901790872, 0.000000000000000, -0.125066503391666, 0.000000000000000, -2.452620252445380, 0.000000000000000, -0.712128227397468, 0.000000000000000, +-0.048938037970968, 0.000000000000000, -1.821520226003361, 0.000000000000000, 0.810106421304257, 0.000000000000000, -0.196636623956257, 0.000000000000000, +-0.701769836763804, 0.000000000000000, 2.460345045649201, 0.000000000000000, 3.506597671641116, 0.000000000000000, -2.711322611972225, 0.000000000000000, +-0.658079876600542, 0.000000000000000, -2.040082099646173, 0.000000000000000, 2.201668355395807, 0.000000000000000, 1.181507395879711, 0.000000000000000, +-1.640739552179682, 0.000000000000000, -1.613393726467190, 0.000000000000000, -1.156741241731352, 0.000000000000000, 2.527773464519963, 0.000000000000000, +-0.497040638009502, 0.000000000000000, -0.975817112895589, 0.000000000000000, -2.866830755546166, 0.000000000000000, 1.120214498507878, 0.000000000000000, +5.986771654661698, 0.000000000000000, 0.398219252656757, 0.000000000000000, -3.545606013198135, 0.000000000000000, 0.312398099396191, 0.000000000000000, +-2.265327979531788, 0.000000000000000, 0.792121001107366, 0.000000000000000, -3.736145137670100, 0.000000000000000, 0.762228883650802, 0.000000000000000, +2.283545661214646, 0.000000000000000, 3.780020629583529, 0.000000000000000, 3.117260228608810, 0.000000000000000, -2.011159255609613, 0.000000000000000, +0.279107700476072, 0.000000000000000, 2.003369134246936, 0.000000000000000, -1.448171234480257, 0.000000000000000, 0.584697150310140, 0.000000000000000, +0.919508663636197, 0.000000000000000, -3.071349141675388, 0.000000000000000, -1.555923649263667, 0.000000000000000, 2.232497079438850, 0.000000000000000, +-0.012662139119883, 0.000000000000000, 0.372825540734715, 0.000000000000000, 2.378543590847629, 0.000000000000000, 1.459053407813062, 0.000000000000000, +-0.967913907390927, 0.000000000000000, 1.322825200678212, 0.000000000000000, -1.033775820061824, 0.000000000000000, -1.813629552693142, 0.000000000000000, +4.794348161661486, 0.000000000000000, 0.655279811518676, 0.000000000000000, -2.224590138589720, 0.000000000000000, 0.595329481295766, 0.000000000000000, +3.364055988866225, 0.000000000000000, 1.863416422998127, 0.000000000000000, 1.930305751828105, 0.000000000000000, -0.284467053432545, 0.000000000000000, +-0.923374905878938, 0.000000000000000, 1.922988234041399, 0.000000000000000, 0.310482143432719, 0.000000000000000, 0.332122302397134, 0.000000000000000, +-1.659487472408966, 0.000000000000000, -1.865943507877961, 0.000000000000000, -0.186775297569864, 0.000000000000000, -1.700543850628361, 0.000000000000000, +0.497157959366735, 0.000000000000000, -0.471244843957418, 0.000000000000000, -0.432013753969948, 0.000000000000000, -4.000189880113231, 0.000000000000000, +-0.415335170016467, 0.000000000000000, 0.317311950972859, 0.000000000000000, 0.038393428927595, 0.000000000000000, 0.177219909465206, 0.000000000000000, +0.531650958095143, 0.000000000000000, -2.711644985175806, 0.000000000000000, 0.328744077805156, 0.000000000000000, -0.938417707547928, 0.000000000000000, +0.970379584897379, 0.000000000000000, 1.873649473917137, 0.000000000000000, 0.177938226987023, 0.000000000000000, 0.155609346302393, 0.000000000000000, +-1.276504241867208, 0.000000000000000, -0.463725075928807, 0.000000000000000, -0.064748250389500, 0.000000000000000, -1.725568534062385, 0.000000000000000, +-0.139066584804067, 0.000000000000000, 1.975514554117767, 0.000000000000000, -0.807063199499478, 0.000000000000000, -0.326926659682788, 0.000000000000000, +1.445727032487938, 0.000000000000000, -0.597151107739100, 0.000000000000000, 2.732557531709386, 0.000000000000000, -2.907130934109188, 0.000000000000000, +-1.461264832679981, 0.000000000000000, -1.708588604968163, 0.000000000000000, 3.652851925431363, 0.000000000000000, 0.682050868282879, 0.000000000000000, +-0.281312579963294, 0.000000000000000, 0.554966483307825, 0.000000000000000, -0.981341739340932, 0.000000000000000, 1.279543331141603, 0.000000000000000, +0.036589747826856, 0.000000000000000, 2.312073745896073, 0.000000000000000, 1.754682200732425, 0.000000000000000, -0.957515875428627, 0.000000000000000, +-0.833596942819695, 0.000000000000000, 0.437054368791033, 0.000000000000000, -0.898819399360279, 0.000000000000000, -0.296050580896839, 0.000000000000000, +-0.785144257649601, 0.000000000000000, -2.541503089003311, 0.000000000000000, 2.225075846758761, 0.000000000000000, -1.587290487902002, 0.000000000000000, +-1.421404172056462, 0.000000000000000, -3.015149802293631, 0.000000000000000, 1.780874288867949, 0.000000000000000, -0.865812740882613, 0.000000000000000, +-2.845327531197112, 0.000000000000000, 1.445225867774367, 0.000000000000000, 2.183733236584647, 0.000000000000000, 1.163371072749080, 0.000000000000000, +0.883547693520409, 0.000000000000000, -1.224093106684675, 0.000000000000000, -1.854501116331044, 0.000000000000000, 1.783082089255796, 0.000000000000000, +2.301508706196191, 0.000000000000000, -0.539901944139077, 0.000000000000000, 1.962315832319967, 0.000000000000000, -0.060709041870503, 0.000000000000000, +-1.353139923300238, 0.000000000000000, -1.482887537805234, 0.000000000000000, 1.273732601967176, 0.000000000000000, -3.456609915556321, 0.000000000000000, +-3.752320586540873, 0.000000000000000, 3.536356614978951, 0.000000000000000, 0.206035952043233, 0.000000000000000, 5.933966913773842, 0.000000000000000, +-0.486633898075490, 0.000000000000000, -0.329595089863342, 0.000000000000000, 1.496414153905337, 0.000000000000000, 0.137868749388880, 0.000000000000000, +-0.437192030996792, 0.000000000000000, 2.682750615210656, 0.000000000000000, -2.440234892848570, 0.000000000000000, 1.433910252426186, 0.000000000000000, +-0.415051506104074, 0.000000000000000, 1.982003013708649, 0.000000000000000, 1.345796609972435, 0.000000000000000, -2.335949513404370, 0.000000000000000, +1.065988867433025, 0.000000000000000, 2.741844905000464, 0.000000000000000, -1.754047930934362, 0.000000000000000, 0.229252730015575, 0.000000000000000, +-0.679791016408669, 0.000000000000000, -2.274097820043743, 0.000000000000000, 0.149802252231876, 0.000000000000000, -0.139697151364830, 0.000000000000000, +-2.773367420505435, 0.000000000000000, -4.403400246165611, 0.000000000000000, -1.468974515184135, 0.000000000000000, 0.664990623095844, 0.000000000000000, +-3.446979775557143, 0.000000000000000, 1.850006428987618, 0.000000000000000, -1.550866747921936, 0.000000000000000, -3.632874882935257, 0.000000000000000, +0.828039662992464, 0.000000000000000, 2.794055182632816, 0.000000000000000, -0.593995716682633, 0.000000000000000, 0.142788156054200, 0.000000000000000, +0.552461945119668, 0.000000000000000, 0.842127129738758, 0.000000000000000, 1.414335509600077, 0.000000000000000, -0.311559241382430, 0.000000000000000, +1.510590844695250, 0.000000000000000, 1.692217183824300, 0.000000000000000, 0.613760285711957, 0.000000000000000, 0.065233463207770, 0.000000000000000, +-2.571912893711505, 0.000000000000000, -1.707001531141341, 0.000000000000000, 0.673884968382041, 0.000000000000000, 0.889863883420103, 0.000000000000000, +-2.395635435233346, 0.000000000000000, 1.129247296359819, 0.000000000000000, 0.569074704779735, 0.000000000000000, 6.139436017480722, 0.000000000000000, +0.822158309259017, 0.000000000000000, -3.289872016222589, 0.000000000000000, 0.417612988384414, 0.000000000000000, 1.493982103868165, 0.000000000000000, +-0.415353391377005, 0.000000000000000, 0.288670764933155, 0.000000000000000, -1.895650228872272, 0.000000000000000, -0.139631694475020, 0.000000000000000, +1.445103299005436, 0.000000000000000, 2.877182243683429, 0.000000000000000, 1.192428490172580, 0.000000000000000, -5.964591921763842, 0.000000000000000, +0.570859795882959, 0.000000000000000, 2.328333316356666, 0.000000000000000, 0.333755014930026, 0.000000000000000, 1.221901577771909, 0.000000000000000, +0.943358697415568, 0.000000000000000, 2.793063983613067, 0.000000000000000, 3.163005066073616, 0.000000000000000, 2.098300664513867, 0.000000000000000, +-3.915313164333447, 0.000000000000000, -2.475766769064539, 0.000000000000000, 1.720472044894277, 0.000000000000000, -1.273591949275665, 0.000000000000000, +-1.213451272938616, 0.000000000000000, 0.697439404325690, 0.000000000000000, -0.309902287574293, 0.000000000000000, 2.622575852162781, 0.000000000000000, +-2.075881936219060, 0.000000000000000, 0.777847545691770, 0.000000000000000, -3.967947986440650, 0.000000000000000, -3.066503371806472, 0.000000000000000, +1.193780625937845, 0.000000000000000, 0.214246579281311, 0.000000000000000, -2.610681491162162, 0.000000000000000, -1.261224183972745, 0.000000000000000, +-1.165071748544285, 0.000000000000000, -1.116548474834374, 0.000000000000000, 0.847202164846982, 0.000000000000000, -3.474301529532390, 0.000000000000000, +0.020799541946476, 0.000000000000000, -3.868995473288166, 0.000000000000000, 1.757979409638067, 0.000000000000000, 0.868115130183109, 0.000000000000000, +0.910167436737958, 0.000000000000000, -1.878855115563720, 0.000000000000000, 1.710357104174161, 0.000000000000000, -1.468933980990902, 0.000000000000000, +1.799544171601169, 0.000000000000000, -4.922332880027887, 0.000000000000000, 0.219424548939720, 0.000000000000000, -0.971671113451924, 0.000000000000000, +-0.940533475616266, 0.000000000000000, 0.122510114412152, 0.000000000000000, -1.373686254916911, 0.000000000000000, 1.760348103896323, 0.000000000000000, +0.391745067829643, 0.000000000000000, 2.521958505327354, 0.000000000000000, -1.300693516405092, 0.000000000000000, -0.538251788309178, 0.000000000000000, +0.797184135810173, 0.000000000000000, 2.908800548982588, 0.000000000000000, 1.590902251655215, 0.000000000000000, -1.070323714487264, 0.000000000000000, +-3.349764443340999, 0.000000000000000, -1.190563529731447, 0.000000000000000, 1.363369471291963, 0.000000000000000, -1.814270299924576, 0.000000000000000, +-0.023381588315711, 0.000000000000000, 1.719182048679569, 0.000000000000000, 0.839917213252626, 0.000000000000000, 1.006099633839122, 0.000000000000000, +0.812462674381527, 0.000000000000000, 1.755814336346739, 0.000000000000000, 2.546848681206319, 0.000000000000000, -1.555300208869455, 0.000000000000000, +1.017053811631167, 0.000000000000000, 0.996591039170903, 0.000000000000000, -1.228047247924881, 0.000000000000000, 4.809462271463009, 0.000000000000000, +2.318113116151685, 0.000000000000000, -1.206932520679733, 0.000000000000000, 1.273757685623312, 0.000000000000000, 0.724335352481802, 0.000000000000000, +1.519876652073198, 0.000000000000000, -2.749670314714158, 0.000000000000000, 3.424042481847581, 0.000000000000000, -3.714668360421517, 0.000000000000000, +1.612834197004014, 0.000000000000000, -2.038234723985566, 0.000000000000000, 1.470938786562152, 0.000000000000000, 2.111634918450302, 0.000000000000000, +1.030376670151787, 0.000000000000000, -0.420877189003829, 0.000000000000000, -1.502024800532894, 0.000000000000000, 0.452310749163804, 0.000000000000000, +-1.606059382300987, 0.000000000000000, -4.006159967834147, 0.000000000000000, -2.152801208196508, 0.000000000000000, 1.671674089372579, 0.000000000000000, +1.714536333564101, 0.000000000000000, -1.011518543005344, 0.000000000000000, -0.576410282180584, 0.000000000000000, 0.733689809480836, 0.000000000000000, +1.004245602717974, 0.000000000000000, 1.010090391888449, 0.000000000000000, 3.811459513385621, 0.000000000000000, -5.230621089271954, 0.000000000000000, +0.678044861034399, 0.000000000000000, 1.255935859598107, 0.000000000000000, 1.674521701615288, 0.000000000000000, -1.656695216761705, 0.000000000000000, +1.169286028869693, 0.000000000000000, 0.524915416191998, 0.000000000000000, 2.397642885039520, 0.000000000000000, 2.108711400616072, 0.000000000000000, +2.037618211018084, 0.000000000000000, -0.623664553406925, 0.000000000000000, 2.984106170984409, 0.000000000000000, 1.132182737400932, 0.000000000000000, +-2.859274340352130, 0.000000000000000, -0.975550071398723, 0.000000000000000, -1.359935119997407, 0.000000000000000, -2.963308211050121, 0.000000000000000, +-0.228726662781163, 0.000000000000000, -1.411110379682043, 0.000000000000000, 0.741553355734225, 0.000000000000000, 0.497554254758309, 0.000000000000000, +2.371907950598855, 0.000000000000000, 1.063465168988748, 0.000000000000000, -0.641082692081488, 0.000000000000000, -0.855439878540726, 0.000000000000000, +0.578321738578726, 0.000000000000000, 3.005809768796194, 0.000000000000000, 1.961458699064065, 0.000000000000000, -3.206261663772745, 0.000000000000000, +-0.364431989095434, 0.000000000000000, -0.263182496622273, 0.000000000000000, 1.843464680631139, 0.000000000000000, -0.419107530229249, 0.000000000000000, +1.662335873298487, 0.000000000000000, -0.853687563304005, 0.000000000000000, -2.584133404357169, 0.000000000000000, 3.466839568922895, 0.000000000000000, +0.881671345091973, 0.000000000000000, 0.454620014206908, 0.000000000000000, -1.737245187402739, 0.000000000000000, 2.162713238369243, 0.000000000000000, +-3.868539002714486, 0.000000000000000, 2.014114855933826, 0.000000000000000, -0.703233831811006, 0.000000000000000, -3.410319935997574, 0.000000000000000, +-1.851235811006584, 0.000000000000000, 0.909783907894036, 0.000000000000000, 0.091884002136728, 0.000000000000000, -2.688294201131650, 0.000000000000000, +-0.906134178460955, 0.000000000000000, 3.475054609035133, 0.000000000000000, -0.573927964170323, 0.000000000000000, -0.429542937515399, 0.000000000000000, +0.991348618739939, 0.000000000000000, 1.974804904926325, 0.000000000000000, 0.975783450796698, 0.000000000000000, -3.057119549071503, 0.000000000000000, +-3.899429237481194, 0.000000000000000, 0.362439009175350, 0.000000000000000, -1.124461670265618, 0.000000000000000, 1.806000360163583, 0.000000000000000, +-2.768333362600288, 0.000000000000000, 0.244387897900379, 0.000000000000000, 0.908767296720926, 0.000000000000000, 1.254669374391882, 0.000000000000000, +-1.420441929463686, 0.000000000000000, -0.875658895966293, 0.000000000000000, 0.183824603376167, 0.000000000000000, -3.361653917011686, 0.000000000000000, +-0.796615630227952, 0.000000000000000, -1.660226542658673, 0.000000000000000, 1.654439358307226, 0.000000000000000, 2.782812946709771, 0.000000000000000, +1.418064412811531, 0.000000000000000, -0.819645647243761, 0.000000000000000, 0.807724772592699, 0.000000000000000, -0.941967976379298, 0.000000000000000, +-2.312768306047469, 0.000000000000000, 0.872426936477443, 0.000000000000000, 0.919528961530845, 0.000000000000000, -2.084904575264847, 0.000000000000000, +-1.972464868459322, 0.000000000000000, -1.050687203338466, 0.000000000000000, 1.659579707007902, 0.000000000000000, -1.820640014705855, 0.000000000000000, +-1.195078061671045, 0.000000000000000, -1.639773173762048, 0.000000000000000, 1.616744338157063, 0.000000000000000, 4.019216096811563, 0.000000000000000, +3.461021102549681, 0.000000000000000, 1.642352734361484, 0.000000000000000, -0.046354693720813, 0.000000000000000, -0.041936252359677, 0.000000000000000, +-2.393307519480551, 0.000000000000000, -0.341471634615121, 0.000000000000000, -0.392073595257017, 0.000000000000000, -0.219299018372730, 0.000000000000000, +-2.016391579662071, 0.000000000000000, -0.653096251969787, 0.000000000000000, 1.466353155666821, 0.000000000000000, -2.872058864320412, 0.000000000000000, +-2.157180779503830, 0.000000000000000, 0.723257479841560, 0.000000000000000, 3.769951308104384, 0.000000000000000, -1.923392042420024, 0.000000000000000, +0.644899359942840, 0.000000000000000, -2.090226891621437, 0.000000000000000, -0.277043982890403, 0.000000000000000, -0.528271428321112, 0.000000000000000, +2.518120645960652, 0.000000000000000, 1.040820431111488, 0.000000000000000, -4.560583754742486, 0.000000000000000, -0.226899614918836, 0.000000000000000, +1.713331231108959, 0.000000000000000, -3.293941019163642, 0.000000000000000, -1.113331444648290, 0.000000000000000, -1.032308423149906, 0.000000000000000, +1.593774272982443, 0.000000000000000, -1.246840475090529, 0.000000000000000, -0.190344684920137, 0.000000000000000, -1.719386356896355, 0.000000000000000, +-2.827721754659679, 0.000000000000000, -0.092438285279020, 0.000000000000000, -0.565844430675246, 0.000000000000000, -1.077916121691716, 0.000000000000000, +-1.208665809504693, 0.000000000000000, -2.996014266381254, 0.000000000000000, 2.888573323402423, 0.000000000000000, 2.829507048720695, 0.000000000000000, +-0.859177034120755, 0.000000000000000, -1.969302377743254, 0.000000000000000, 0.777437674525362, 0.000000000000000, -0.124910190157646, 0.000000000000000, +0.129875493115290, 0.000000000000000, -4.192139262163992, 0.000000000000000, 3.023496047962126, 0.000000000000000, 1.149775163736637, 0.000000000000000, +2.038151304801731, 0.000000000000000, 3.016122489841263, 0.000000000000000, -4.829481812137012, 0.000000000000000, -1.668436615909279, 0.000000000000000, +0.958586784636918, 0.000000000000000, 1.550652410058678, 0.000000000000000, -1.456305257976716, 0.000000000000000, -0.079588392344731, 0.000000000000000, +-2.453213599392345, 0.000000000000000, 0.296795909127105, 0.000000000000000, -0.253426616607643, 0.000000000000000, 1.418937160028195, 0.000000000000000, +-1.672949529066915, 0.000000000000000, -1.620990298572947, 0.000000000000000, -1.085103073196045, 0.000000000000000, 0.738606361195386, 0.000000000000000, +-2.097831202853255, 0.000000000000000, 2.711952282071310, 0.000000000000000, 1.498539238246888, 0.000000000000000, 1.317457282535915, 0.000000000000000, +-0.302765938349717, 0.000000000000000, -0.044623707947201, 0.000000000000000, 2.337405215062395, 0.000000000000000, -3.980689173859100, 0.000000000000000, + + +}; + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_example_f32.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_example_f32.c new file mode 100644 index 0000000..91d15b5 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_fft_bin_example/arm_fft_bin_example_f32.c @@ -0,0 +1,158 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_fft_bin_example_f32.c +* +* Description: Example code demonstrating calculation of Max energy bin of +* frequency domain of input signal. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup FrequencyBin Frequency Bin Example + * + * \par Description + * \par + * Demonstrates the calculation of the maximum energy bin in the frequency + * domain of the input signal with the use of Complex FFT, Complex + * Magnitude, and Maximum functions. + * + * \par Algorithm: + * \par + * The input test signal contains a 10 kHz signal with uniformly distributed white noise. + * Calculating the FFT of the input signal will give us the maximum energy of the + * bin corresponding to the input frequency of 10 kHz. + * + * \par Block Diagram: + * \image html FFTBin.gif "Block Diagram" + * \par + * The figure below shows the time domain signal of 10 kHz signal with + * uniformly distributed white noise, and the next figure shows the input + * in the frequency domain. The bin with maximum energy corresponds to 10 kHz signal. + * \par + * \image html FFTBinInput.gif "Input signal in Time domain" + * \image html FFTBinOutput.gif "Input signal in Frequency domain" + * + * \par Variables Description: + * \par + * \li \c testInput_f32_10khz points to the input data + * \li \c testOutput points to the output data + * \li \c fftSize length of FFT + * \li \c ifftFlag flag for the selection of CFFT/CIFFT + * \li \c doBitReverse Flag for selection of normal order or bit reversed order + * \li \c refIndex reference index value at which maximum energy of bin ocuurs + * \li \c testIndex calculated index value at which maximum energy of bin ocuurs + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_cfft_f32() + * - arm_cmplx_mag_f32() + * - arm_max_f32() + * + * Refer + * \link arm_fft_bin_example_f32.c \endlink + * + */ + + +/** \example arm_fft_bin_example_f32.c + */ + + +#include "arm_math.h" +#include "arm_const_structs.h" + +#define TEST_LENGTH_SAMPLES 2048 + +/* ------------------------------------------------------------------- +* External Input and Output buffer Declarations for FFT Bin Example +* ------------------------------------------------------------------- */ +extern float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES]; +static float32_t testOutput[TEST_LENGTH_SAMPLES/2]; + +/* ------------------------------------------------------------------ +* Global variables for FFT Bin Example +* ------------------------------------------------------------------- */ +uint32_t fftSize = 1024; +uint32_t ifftFlag = 0; +uint32_t doBitReverse = 1; + +/* Reference index at which max energy of bin ocuurs */ +uint32_t refIndex = 213, testIndex = 0; + +/* ---------------------------------------------------------------------- +* Max magnitude FFT Bin test +* ------------------------------------------------------------------- */ + +int32_t main(void) +{ + + arm_status status; + float32_t maxValue; + + status = ARM_MATH_SUCCESS; + + /* Process the data through the CFFT/CIFFT module */ + arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput_f32_10khz, ifftFlag, doBitReverse); + + /* Process the data through the Complex Magnitude Module for + calculating the magnitude at each bin */ + arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, fftSize); + + /* Calculates maxValue and returns corresponding BIN value */ + arm_max_f32(testOutput, fftSize, &maxValue, &testIndex); + + if (testIndex != refIndex) + { + status = ARM_MATH_TEST_FAILURE; + } + + /* ---------------------------------------------------------------------- + ** Loop here if the signals fail the PASS check. + ** This denotes a test failure + ** ------------------------------------------------------------------- */ + + if ( status != ARM_MATH_SUCCESS) + { + while (1); + } + + while (1); /* main function does not return */ +} + + /** \endlink */ diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/Abstract.txt new file mode 100644 index 0000000..9189b7c --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_fir_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/arm_fir_data.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/arm_fir_data.c new file mode 100644 index 0000000..3a95fc5 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/arm_fir_data.c @@ -0,0 +1,134 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_fir_data.c +* +* Description: Data file used for example code +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +** Test input signal contains 1000Hz + 15000 Hz +** ------------------------------------------------------------------- */ + +float32_t testInput_f32_1kHz_15kHz[320] = +{ ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, +-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, +-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, +-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, ++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, +-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f, +-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f, +-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f, ++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f, ++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f, ++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f, +}; + +float32_t refOutput[320] = +{ ++0.0000000000f, -0.0010797829f, -0.0007681386f, -0.0001982932f, +0.0000644313f, +0.0020854271f, +0.0036891871f, +0.0015855941f, +-0.0026280805f, -0.0075907658f, -0.0119390538f, -0.0086665968f, +0.0088981202f, +0.0430539279f, +0.0974468742f, +0.1740405600f, ++0.2681416601f, +0.3747720089f, +0.4893362230f, +0.6024154672f, +0.7058740791f, +0.7968348987f, +0.8715901940f, +0.9277881093f, ++0.9682182661f, +0.9934674267f, +1.0012052245f, +0.9925859371f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, -0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f, ++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f, +-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f, +-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f, +-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f, ++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f, ++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f +}; + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/arm_fir_example_f32.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/arm_fir_example_f32.c new file mode 100644 index 0000000..3dd9f5a --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/arm_fir_example_f32.c @@ -0,0 +1,233 @@ +/* ---------------------------------------------------------------------- + * Copyright (C) 2010-2012 ARM Limited. All rights reserved. + * +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library + * Title: arm_fir_example_f32.c + * + * Description: Example code demonstrating how an FIR filter can be used + * as a low pass filter. + * + * Target Processor: Cortex-M4/Cortex-M3 + * +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup FIRLPF FIR Lowpass Filter Example + * + * \par Description: + * \par + * Removes high frequency signal components from the input using an FIR lowpass filter. + * The example demonstrates how to configure an FIR filter and then pass data through + * it in a block-by-block fashion. + * \image html FIRLPF_signalflow.gif + * + * \par Algorithm: + * \par + * The input signal is a sum of two sine waves: 1 kHz and 15 kHz. + * This is processed by an FIR lowpass filter with cutoff frequency 6 kHz. + * The lowpass filter eliminates the 15 kHz signal leaving only the 1 kHz sine wave at the output. + * \par + * The lowpass filter was designed using MATLAB with a sample rate of 48 kHz and + * a length of 29 points. + * The MATLAB code to generate the filter coefficients is shown below: + *
+ *     h = fir1(28, 6/24);
+ * 
+ * The first argument is the "order" of the filter and is always one less than the desired length. + * The second argument is the normalized cutoff frequency. This is in the range 0 (DC) to 1.0 (Nyquist). + * A 6 kHz cutoff with a Nyquist frequency of 24 kHz lies at a normalized frequency of 6/24 = 0.25. + * The CMSIS FIR filter function requires the coefficients to be in time reversed order. + *
+ *     fliplr(h)
+ * 
+ * The resulting filter coefficients and are shown below. + * Note that the filter is symmetric (a property of linear phase FIR filters) + * and the point of symmetry is sample 14. Thus the filter will have a delay of + * 14 samples for all frequencies. + * \par + * \image html FIRLPF_coeffs.gif + * \par + * The frequency response of the filter is shown next. + * The passband gain of the filter is 1.0 and it reaches 0.5 at the cutoff frequency 6 kHz. + * \par + * \image html FIRLPF_response.gif + * \par + * The input signal is shown below. + * The left hand side shows the signal in the time domain while the right hand side is a frequency domain representation. + * The two sine wave components can be clearly seen. + * \par + * \image html FIRLPF_input.gif + * \par + * The output of the filter is shown below. The 15 kHz component has been eliminated. + * \par + * \image html FIRLPF_output.gif + * + * \par Variables Description: + * \par + * \li \c testInput_f32_1kHz_15kHz points to the input data + * \li \c refOutput points to the reference output data + * \li \c testOutput points to the test output data + * \li \c firStateF32 points to state buffer + * \li \c firCoeffs32 points to coefficient buffer + * \li \c blockSize number of samples processed at a time + * \li \c numBlocks number of frames + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_fir_init_f32() + * - arm_fir_f32() + * + * Refer + * \link arm_fir_example_f32.c \endlink + * + */ + + +/** \example arm_fir_example_f32.c + */ + +/* ---------------------------------------------------------------------- +** Include Files +** ------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "math_helper.h" + +/* ---------------------------------------------------------------------- +** Macro Defines +** ------------------------------------------------------------------- */ + +#define TEST_LENGTH_SAMPLES 320 +#define SNR_THRESHOLD_F32 140.0f +#define BLOCK_SIZE 32 +#define NUM_TAPS 29 + +/* ------------------------------------------------------------------- + * The input signal and reference output (computed with MATLAB) + * are defined externally in arm_fir_lpf_data.c. + * ------------------------------------------------------------------- */ + +extern float32_t testInput_f32_1kHz_15kHz[TEST_LENGTH_SAMPLES]; +extern float32_t refOutput[TEST_LENGTH_SAMPLES]; + +/* ------------------------------------------------------------------- + * Declare Test output buffer + * ------------------------------------------------------------------- */ + +static float32_t testOutput[TEST_LENGTH_SAMPLES]; + +/* ------------------------------------------------------------------- + * Declare State buffer of size (numTaps + blockSize - 1) + * ------------------------------------------------------------------- */ + +static float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1]; + +/* ---------------------------------------------------------------------- +** FIR Coefficients buffer generated using fir1() MATLAB function. +** fir1(28, 6/24) +** ------------------------------------------------------------------- */ + +const float32_t firCoeffs32[NUM_TAPS] = { + -0.0018225230f, -0.0015879294f, +0.0000000000f, +0.0036977508f, +0.0080754303f, +0.0085302217f, -0.0000000000f, -0.0173976984f, + -0.0341458607f, -0.0333591565f, +0.0000000000f, +0.0676308395f, +0.1522061835f, +0.2229246956f, +0.2504960933f, +0.2229246956f, + +0.1522061835f, +0.0676308395f, +0.0000000000f, -0.0333591565f, -0.0341458607f, -0.0173976984f, -0.0000000000f, +0.0085302217f, + +0.0080754303f, +0.0036977508f, +0.0000000000f, -0.0015879294f, -0.0018225230f +}; + +/* ------------------------------------------------------------------ + * Global variables for FIR LPF Example + * ------------------------------------------------------------------- */ + +uint32_t blockSize = BLOCK_SIZE; +uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE; + +float32_t snr; + +/* ---------------------------------------------------------------------- + * FIR LPF Example + * ------------------------------------------------------------------- */ + +int32_t main(void) +{ + uint32_t i; + arm_fir_instance_f32 S; + arm_status status; + float32_t *inputF32, *outputF32; + + /* Initialize input and output buffer pointers */ + inputF32 = &testInput_f32_1kHz_15kHz[0]; + outputF32 = &testOutput[0]; + + /* Call FIR init function to initialize the instance structure. */ + arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], blockSize); + + /* ---------------------------------------------------------------------- + ** Call the FIR process function for every blockSize samples + ** ------------------------------------------------------------------- */ + + for(i=0; i < numBlocks; i++) + { + arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize); + } + + /* ---------------------------------------------------------------------- + ** Compare the generated output against the reference output computed + ** in MATLAB. + ** ------------------------------------------------------------------- */ + + snr = arm_snr_f32(&refOutput[0], &testOutput[0], TEST_LENGTH_SAMPLES); + + if (snr < SNR_THRESHOLD_F32) + { + status = ARM_MATH_TEST_FAILURE; + } + else + { + status = ARM_MATH_SUCCESS; + } + + /* ---------------------------------------------------------------------- + ** Loop here if the signal does not match the reference output. + ** ------------------------------------------------------------------- */ + + if ( status != ARM_MATH_SUCCESS) + { + while (1); + } + + while (1); /* main function does not return */ +} + +/** \endlink */ diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/math_helper.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/math_helper.c new file mode 100644 index 0000000..f615e6f --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/math_helper.c @@ -0,0 +1,466 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 b +* +* Project: CMSIS DSP Library +* +* Title: math_helper.c +* +* Description: Definition of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- +* Include standard header files +* -------------------------------------------------------------------- */ +#include + +/* ---------------------------------------------------------------------- +* Include project header files +* -------------------------------------------------------------------- */ +#include "math_helper.h" + +/** + * @brief Caluclation of SNR + * @param[in] pRef Pointer to the reference buffer + * @param[in] pTest Pointer to the test buffer + * @param[in] buffSize total number of samples + * @return SNR + * The function Caluclates signal to noise ratio for the reference output + * and test output + */ + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize) +{ + float EnergySignal = 0.0, EnergyError = 0.0; + uint32_t i; + float SNR; + int temp; + int *test; + + for (i = 0; i < buffSize; i++) + { + /* Checking for a NAN value in pRef array */ + test = (int *)(&pRef[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + /* Checking for a NAN value in pTest array */ + test = (int *)(&pTest[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + EnergySignal += pRef[i] * pRef[i]; + EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); + } + + /* Checking for a NAN value in EnergyError */ + test = (int *)(&EnergyError); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + + SNR = 10 * log10 (EnergySignal / EnergyError); + + return (SNR); + +} + + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Converts float to fixed in q12.20 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to outputbuffer + * @param[in] numSamples number of samples in the input buffer + * @return none + * The function converts floating point values to fixed point(q12.20) values + */ + +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1048576.0f corresponds to pow(2, 20) */ + pOut[i] = (q31_t) (pIn[i] * 1048576.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 1.0) + { + pOut[i] = 0x000FFFFF; + } + } +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q31 (q31_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q7 (q7_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + + + +/** + * @brief Caluclates number of guard bits + * @param[in] num_adds number of additions + * @return guard bits + * The function Caluclates the number of guard bits + * depending on the numtaps + */ + +uint32_t arm_calc_guard_bits (uint32_t num_adds) +{ + uint32_t i = 1, j = 0; + + if (num_adds == 1) + { + return (0); + } + + while (i < num_adds) + { + i = i * 2; + j++; + } + + return (j); +} + +/** + * @brief Apply guard bits to buffer + * @param[in,out] pIn pointer to input buffer + * @param[in] numSamples number of samples in the input buffer + * @param[in] guard_bits guard bits + * @return none + */ + +void arm_apply_guard_bits (float32_t *pIn, + uint32_t numSamples, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + pIn[i] = pIn[i] * arm_calc_2pow(guard_bits); + } +} + +/** + * @brief Calculates pow(2, numShifts) + * @param[in] numShifts number of shifts + * @return pow(2, numShifts) + */ +uint32_t arm_calc_2pow(uint32_t numShifts) +{ + + uint32_t i, val = 1; + + for (i = 0; i < numShifts; i++) + { + val = val * 2; + } + + return(val); +} + + + +/** + * @brief Converts float to fixed q14 + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 16384.0f corresponds to pow(2, 14) */ + pOut[i] = (q15_t) (pIn[i] * 16384.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFF; + } + + } + +} + + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 1073741824.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 536870912.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 4.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + + +/** + * @brief Converts float to fixed q28 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 268435456.0f corresponds to pow(2, 28) */ + pOut[i] = (q31_t) (pIn[i] * 268435456.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 8.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Clip the float values to +/- 1 + * @param[in,out] pIn input buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_clip_f32 (float *pIn, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + if (pIn[i] > 1.0f) + { + pIn[i] = 1.0; + } + else if ( pIn[i] < -1.0f) + { + pIn[i] = -1.0; + } + + } +} + + + + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/math_helper.h b/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/math_helper.h new file mode 100644 index 0000000..5a18734 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_fir_example/math_helper.h @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* +* Title: math_helper.h +* +* Description: Prototypes of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +#ifndef MATH_HELPER_H +#define MATH_HELPER_H + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize); +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples); +void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples); +void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_clip_f32(float *pIn, uint32_t numSamples); +uint32_t arm_calc_guard_bits(uint32_t num_adds); +void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits); +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples); +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples); +uint32_t arm_calc_2pow(uint32_t guard_bits); +#endif + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/Abstract.txt new file mode 100644 index 0000000..c2452b6 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_graphic_equalizer_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_data.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_data.c new file mode 100644 index 0000000..b6ab8c9 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_data.c @@ -0,0 +1,134 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_graphic_equalizer_data.c +* +* Description: Data file used for example code +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +#include "arm_math.h" + +float32_t testRefOutput_f32[320] = { + +0.000000000000000000, 0.001898396760225296, 0.004215449094772339, 0.007432077080011368, 0.010948467999696732, 0.015026375651359558, 0.019191544502973557, 0.023574527353048325, +0.027919445186853409, 0.032277785241603851, 0.036551639437675476, 0.040732793509960175, 0.044799156486988068, 0.048710610717535019, 0.052476800978183746, 0.056059073656797409, +0.059482168406248093, 0.062726479023694992, 0.065821025520563126, 0.068763464689254761, 0.071577839553356171, 0.074270240962505341, 0.076856281608343124, 0.079344697296619415, +0.081745062023401260, 0.084067162126302719, 0.086318407207727432, 0.088509257882833481, 0.090647127479314804, 0.092742368578910828, 0.094802625477313995, 0.096837285906076431, +0.098853722214698792, 0.100859899073839190, 0.102862443774938580, 0.104867763817310330, 0.106881409883499150, 0.108908228576183320, 0.110952425748109820, 0.113017357885837550, +0.115105822682380680, 0.117219865322113040, 0.119361080229282380, 0.121530555188655850, 0.123729091137647630, 0.125957202166318890, 0.128215309232473370, 0.130503740161657330, +0.132822841405868530, 0.135173004120588300, 0.137554679065942760, 0.139968376606702800, 0.142414685338735580, 0.144894234836101530, 0.147407654672861100, 0.149955596774816510, +0.152538605034351350, 0.155157200992107390, 0.157811731100082400, 0.160502441227436070, 0.163229387253522870, 0.165992442518472670, 0.168791320174932480, 0.171625509858131410, +0.174494370818138120, 0.177397061139345170, 0.180332608520984650, 0.183299910277128220, 0.186297744512557980, 0.189324837177991870, 0.192379791289567950, 0.195461250841617580, +0.198567759245634080, 0.201697919517755510, 0.204850304871797560, 0.208023533225059510, 0.211216274648904800, 0.214427210390567780, 0.217655111104249950, 0.220898788422346120, +0.224157124757766720, 0.227429077029228210, 0.230713658034801480, 0.234009962528944020, 0.237317133694887160, 0.240634419023990630, 0.243961080908775330, 0.247296508401632310, +0.250640105456113820, 0.253991369158029560, 0.257349837571382520, 0.260715119540691380, 0.264086868613958360, 0.267464816570281980, 0.270848698914051060, 0.274238351732492450, +0.277633611112833020, 0.281034380197525020, 0.284440591931343080, 0.287852220237255100, 0.291269283741712570, 0.294691801071166990, 0.298119872808456420, 0.301553562283515930, +0.304993014782667160, 0.308438356965780260, 0.311889752745628360, 0.315347377210855480, 0.318811416625976560, 0.322282072156667710, 0.325759567320346830, 0.329244095832109450, +0.332735907286405560, 0.336235217750072480, 0.339742250740528110, 0.343257248401641850, 0.346780419349670410, 0.350311983376741410, 0.353852160274982450, 0.357401121407747270, +0.360959105193614960, 0.364526227116584780, 0.368102725595235820, 0.371688675135374070, 0.375284302979707720, 0.378889638930559160, 0.382504884153604510, 0.386130042374134060, +0.389765247702598570, 0.393410529941320420, 0.397065933793783190, 0.400731507688760760, 0.404407206922769550, 0.408093083649873730, 0.411789052188396450, 0.415495119988918300, +0.419211201369762420, 0.422937240451574330, 0.426673140376806260, 0.430418811738491060, 0.434174135327339170, 0.437938995659351350, 0.441713258624076840, 0.445496778935194020, +0.449289388954639430, 0.453090950846672060, 0.456901267170906070, 0.460720170289278030, 0.464547459036111830, 0.468382950872182850, 0.472226426005363460, 0.476077698171138760, +0.479936532676219940, 0.483802750706672670, 0.487676106393337250, 0.491556398570537570, 0.495443399995565410, 0.499336875975131990, 0.503236617892980580, 0.507142387330532070, +0.511053957045078280, 0.514971107244491580, 0.518893606960773470, 0.522821225225925450, 0.526753749698400500, 0.530690938234329220, 0.534632585942745210, 0.538578454405069350, +0.542528338730335240, 0.546481993049383160, 0.550439231097698210, 0.554399792104959490, 0.558363504707813260, 0.562330115586519240, 0.566299438476562500, 0.570271246135234830, +0.574245333671569820, 0.578221492469310760, 0.582199502736330030, 0.586179181933403020, 0.590160276740789410, 0.594142623245716090, 0.598125983029603960, 0.602110169827938080, +0.606094967573881150, 0.610080175101757050, 0.614065583795309070, 0.618050977587699890, 0.622036151587963100, 0.626020893454551700, 0.630004994571208950, 0.633988231420516970, +0.637970402836799620, 0.641951277852058410, 0.645930647850036620, 0.649908289313316350, 0.653883971273899080, 0.657857488840818410, 0.661828581243753430, 0.665797054767608640, +0.669762641191482540, 0.673725124448537830, 0.677684243768453600, 0.681639779359102250, 0.685591462999582290, 0.689539063721895220, 0.693482317030429840, 0.697420965880155560, +0.701354760676622390, 0.705283410847187040, 0.709206689149141310, 0.713124278932809830, 0.717035952955484390, 0.720941375941038130, 0.724840316921472550, 0.728732451796531680, +0.732617516070604320, 0.736495196819305420, 0.740365199744701390, 0.744227230548858640, 0.748080968856811520, 0.751926124095916750, 0.755762357264757160, 0.759589381515979770, +0.763406842947006230, 0.767214450985193250, 0.771011855453252790, 0.774798732250928880, 0.778574761003255840, 0.782339565455913540, 0.786092851310968400, 0.789834223687648770, +0.793563373386859890, 0.797279909253120420, 0.800983514636754990, 0.804673787206411360, 0.808350402861833570, 0.812012966722249980, 0.815661124885082240, 0.819294504821300510, +0.822912722826004030, 0.826515413820743560, 0.830102190375328060, 0.833672653883695600, 0.837226435542106630, 0.840763118118047710, 0.844282336533069610, 0.847783654928207400, +0.851266715675592420, 0.854731071740388870, 0.858176350593566890, 0.861602116376161580, 0.865007970482110980, 0.868393491953611370, 0.871758259832859040, 0.875101849436759950, +0.878423850983381270, 0.881723806262016300, 0.885001312941312790, 0.888255912810564040, 0.891487173736095430, 0.894694659858942030, 0.897877920418977740, 0.901036512106657030, +0.904169965535402300, 0.907277844846248630, 0.910359673202037810, 0.913415014743804930, 0.916443370282649990, 0.919444311410188670, 0.922417331486940380, 0.925361987203359600, +0.928277771919965740, 0.931164238601922990, 0.934020876884460450, 0.936847217381000520, 0.939642757177352910, 0.942407000809907910, 0.945139460265636440, 0.947839632630348210, +0.950507018715143200, 0.953141096979379650, 0.955741371959447860, 0.958307322114706040, 0.960838429629802700, 0.963334184139966960, 0.965794049203395840, 0.968217510730028150, +0.970604017376899720, 0.972953058779239650, 0.975264083594083790, 0.977536566555500030, 0.979769956320524220, 0.981963708996772770, 0.984117280691862110, 0.986230112612247470, +0.988301653414964680, 0.990331344306468960, 0.992318630218505860, 0.994262944906950000, 0.996163722127676010, 0.998020399361848830, 0.999832402914762500, 1.001599155366420700, +1.003320086747407900, 1.004994612187147100, 1.006622135639190700, 1.008202098309993700, 1.009733878076076500, 1.011216927319765100, 1.012650609016418500, 1.014034371823072400, +1.015367589890956900, 1.016649682074785200, 1.017880033701658200, 1.019058048725128200, 1.020183108747005500, 1.021254621446132700, 1.022271949797868700, 1.023234523832798000, + +}; +/* ---------------------------------------------------------------------- +** Test input - logarithmic chirp signal +** ------------------------------------------------------------------- */ + +float32_t testInput_f32[320] = + { + 0.000000000000000061, 0.002622410992047861, 0.005253663973466970, 0.007893770384930297, 0.010542741395035495, 0.013200587895525877, 0.015867320496454066, 0.018542949521290073, +0.021227485001971542, 0.023920936673895138, 0.026623313970853074, 0.029334626019908643, 0.032054881636210709, 0.034784089317753723, 0.037522257240071598, 0.040269393250875855, +0.043025504864628375, 0.045790599257054837, 0.048564683259595690, 0.051347763353792118, 0.054139845665610427, 0.056940935959702531, 0.059751039633601337, 0.062570161711849828, +0.065398306840066575, 0.068235479278943648, 0.071081682898178900, 0.073936921170339814, 0.076801197164660218, 0.079674513540768196, 0.082556872542344922, 0.085448275990715375, +0.088348725278367082, 0.091258221362398390, 0.094176764757897533, 0.097104355531246703, 0.100040993293358240, 0.102986677192832010, 0.105941405909045980, 0.108905177645166230, +0.111877990121087980, 0.114859840566297130, 0.117850725712659680, 0.120850641787131110, 0.123859584504392860, 0.126877549059407400, 0.129904530119898690, 0.132940521818751430, +0.135985517746334080, 0.139039510942737950, 0.142102493889940090, 0.145174458503884160, 0.148255396126476810, 0.151345297517508140, 0.154444152846483080, 0.157551951684374300, +0.160668682995289720, 0.163794335128054890, 0.166928895807713030, 0.170072352126936720, 0.173224690537355760, 0.176385896840798810, 0.179555956180445340, 0.182734853031894270, +0.185922571194139130, 0.189119093780459800, 0.192324403209221870, 0.195538481194587030, 0.198761308737133020, 0.201992866114384050, 0.205233132871247170, 0.208482087810360570, +0.211739708982344370, 0.215005973675965020, 0.218280858408200220, 0.221564338914212730, 0.224856390137231970, 0.228156986218334190, 0.231466100486134670, 0.234783705446379690, +0.238109772771442410, 0.241444273289723230, 0.244787176974952890, 0.248138452935395580, 0.251498069402956710, 0.254865993722190930, 0.258242192339209860, 0.261626630790492030, +0.265019273691591620, 0.268420084725748410, 0.271829026632395280, 0.275246061195565440, 0.278671149232197430, 0.282104250580339830, 0.285545324087251580, 0.288994327597401960, +0.292451217940364990, 0.295915950918612280, 0.299388481295203350, 0.302868762781368150, 0.306356748023990040, 0.309852388592980640, 0.313355634968552230, 0.316866436528383590, +0.320384741534681720, 0.323910497121136620, 0.327443649279772870, 0.330984142847692230, 0.334531921493712690, 0.338086927704900790, 0.341649102772995210, 0.345218386780727190, +0.348794718588032520, 0.352378035818156910, 0.355968274843654950, 0.359565370772282730, 0.363169257432780890, 0.366779867360555120, 0.370397131783246010, 0.374020980606193880, +0.377651342397795690, 0.381288144374756830, 0.384931312387234990, 0.388580770903877330, 0.392236442996751310, 0.395898250326170650, 0.399566113125414350, 0.403239950185338420, +0.406919678838884410, 0.410605214945482130, 0.414296472875345100, 0.417993365493664670, 0.421695804144698540, 0.425403698635752780, 0.429116957221065130, 0.432835486585582130, +0.436559191828633180, 0.440287976447505720, 0.444021742320914510, 0.447760389692375140, 0.451503817153472210, 0.455251921627031540, 0.459004598350192470, 0.462761740857380200, +0.466523240963184150, 0.470288988745136360, 0.474058872526396560, 0.477832778858340690, 0.481610592503056990, 0.485392196415748600, 0.489177471727042850, 0.492966297725213780, +0.496758551838309250, 0.500554109616195060, 0.504352844712508190, 0.508154628866524960, 0.511959331884944910, 0.515766821623591440, 0.519576963969030530, 0.523389622820107150, +0.527204660069405030, 0.531021935584629400, 0.534841307189911630, 0.538662630647041900, 0.542485759636628150, 0.546310545739186690, 0.550136838416161340, 0.553964484990880020, +0.557793330629441700, 0.561623218321546380, 0.565453988861259300, 0.569285480827721570, 0.573117530565801950, 0.576949972166696630, 0.580782637448476910, 0.584615355936589420, +0.588447954844309340, 0.592280259053150400, 0.596112091093235260, 0.599943271123626440, 0.603773616912622660, 0.607602943818024150, 0.611431064767369080, 0.615257790238142090, +0.619082928237961740, 0.622906284284749700, 0.626727661386881850, 0.630546860023327600, 0.634363678123782030, 0.638177911048790960, 0.641989351569874020, 0.645797789849653410, +0.649603013421986450, 0.653404807172108140, 0.657202953316791350, 0.660997231384523490, 0.664787418195706640, 0.668573287842887610, 0.672354611671016960, 0.676131158257749170, +0.679902693393781730, 0.683668980063242500, 0.687429778424128110, 0.691184845788802130, 0.694933936604551380, 0.698676802434213370, 0.702413191936877570, 0.706142850848662460, +0.709865521963579990, 0.713580945114492330, 0.717288857154159800, 0.720988991936399870, 0.724681080297347790, 0.728364850036839040, 0.732040025899910680, 0.735706329558433620, +0.739363479592880620, 0.743011191474238440, 0.746649177546067850, 0.750277147006723990, 0.753894805891742180, 0.757501857056394940, 0.761098000158428880, 0.764682931640995540, +0.768256344715771980, 0.771817929346292900, 0.775367372231492210, 0.778904356789468790, 0.782428563141483460, 0.785939668096195860, 0.789437345134148760, 0.792921264392515420, +0.796391092650110770, 0.799846493312681210, 0.803287126398485760, 0.806712648524170680, 0.810122712890953390, 0.813516969271127150, 0.816895063994893090, 0.820256639937531280, +0.823601336506926020, 0.826928789631450890, 0.830238631748229430, 0.833530491791779850, 0.836803995183058700, 0.840058763818912760, 0.843294416061954100, 0.846510566730867220, +0.849706827091166740, 0.852882804846411770, 0.856038104129895340, 0.859172325496819990, 0.862285065916973510, 0.865375918767918860, 0.868444473828712590, 0.871490317274166260, +0.874513031669661770, 0.877512195966544280, 0.880487385498096800, 0.883438171976119850, 0.886364123488128100, 0.889264804495180530, 0.892139775830360640, 0.894988594697921020, +0.897810814673113080, 0.900605985702712770, 0.903373654106265470, 0.906113362578062300, 0.908824650189867690, 0.911507052394417540, 0.914160101029702910, 0.916783324324059180, +0.919376246902079860, 0.921938389791372770, 0.924469270430179120, 0.926968402675872660, 0.929435296814361430, 0.931869459570409790, 0.934270394118903560, 0.936637600097074200, +0.938970573617708970, 0.941268807283364040, 0.943531790201601380, 0.945759008001275100, 0.947949942849885320, 0.950104073472023970, 0.952220875168933280, 0.954299819839202090, +0.956340376000621160, 0.958342008813221960, 0.960304180103520260, 0.962226348389994210, 0.964107968909812760, 0.965948493646846980, 0.967747371360983650, 0.969504047618768740, +0.971217964825405680, 0.972888562258134030, 0.974515276101013520, 0.976097539481141750, 0.977634782506330400, 0.979126432304266880, 0.980571913063189360, 0.981970646074102120, +0.983322049774557390, 0.984625539794035220, 0.985880529000944810, 0.987086427551279730, 0.988242642938953360, 0.989348580047844540, 0.990403641205582440, 0.991407226239099710, +0.992358732531984260, 0.993257555083659870, 0.994103086570423680, 0.994894717408374870, 0.995631835818261310, 0.996313827892278070, 0.996940077662846650, 0.997509967173408010, + + }; diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_example_q31.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_example_q31.c new file mode 100644 index 0000000..c263d18 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/arm_graphic_equalizer_example_q31.c @@ -0,0 +1,411 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_graphic_equalizer_example_q31.c +* +* Description: Example showing an audio graphic equalizer constructed +* out of Biquad filters. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup GEQ5Band Graphic Audio Equalizer Example + * + * \par Description: + * \par + * This example demonstrates how a 5-band graphic equalizer can be constructed + * using the Biquad cascade functions. + * A graphic equalizer is used in audio applications to vary the tonal quality + * of the audio. + * + * \par Block Diagram: + * \par + * The design is based on a cascade of 5 filter sections. + * \image html GEQ_signalflow.gif + * Each filter section is 4th order and consists of a cascade of two Biquads. + * Each filter has a nominal gain of 0 dB (1.0 in linear units) and + * boosts or cuts signals within a specific frequency range. + * The edge frequencies between the 5 bands are 100, 500, 2000, and 6000 Hz. + * Each band has an adjustable boost or cut in the range of +/- 9 dB. + * For example, the band that extends from 500 to 2000 Hz has the response shown below: + * \par + * \image html GEQ_bandresponse.gif + * \par + * With 1 dB steps, each filter has a total of 19 different settings. + * The filter coefficients for all possible 19 settings were precomputed + * in MATLAB and stored in a table. With 5 different tables, there are + * a total of 5 x 19 = 95 different 4th order filters. + * All 95 responses are shown below: + * \par + * \image html GEQ_allbandresponse.gif + * \par + * Each 4th order filter has 10 coefficents for a grand total of 950 different filter + * coefficients that must be tabulated. The input and output data is in Q31 format. + * For better noise performance, the two low frequency bands are implemented using the high + * precision 32x64-bit Biquad filters. The remaining 3 high frequency bands use standard + * 32x32-bit Biquad filters. The input signal used in the example is a logarithmic chirp. + * \par + * \image html GEQ_inputchirp.gif + * \par + * The array bandGains specifies the gain in dB to apply in each band. + * For example, if bandGains={0, -3, 6, 4, -6}; then the output signal will be: + * \par + * \image html GEQ_outputchirp.gif + * \par + * \note The output chirp signal follows the gain or boost of each band. + * \par + * + * \par Variables Description: + * \par + * \li \c testInput_f32 points to the input data + * \li \c testRefOutput_f32 points to the reference output data + * \li \c testOutput points to the test output data + * \li \c inputQ31 temporary input buffer + * \li \c outputQ31 temporary output buffer + * \li \c biquadStateBand1Q31 points to state buffer for band1 + * \li \c biquadStateBand2Q31 points to state buffer for band2 + * \li \c biquadStateBand3Q31 points to state buffer for band3 + * \li \c biquadStateBand4Q31 points to state buffer for band4 + * \li \c biquadStateBand5Q31 points to state buffer for band5 + * \li \c coeffTable points to coefficient buffer for all bands + * \li \c gainDB gain buffer which has gains applied for all the bands + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_biquad_cas_df1_32x64_init_q31() + * - arm_biquad_cas_df1_32x64_q31() + * - arm_biquad_cascade_df1_init_q31() + * - arm_biquad_cascade_df1_q31() + * - arm_scale_q31() + * - arm_scale_f32() + * - arm_float_to_q31() + * - arm_q31_to_float() + * + * Refer + * \link arm_graphic_equalizer_example_q31.c \endlink + * + */ + + +/** \example arm_graphic_equalizer_example_q31.c + */ + + +#include "arm_math.h" +#include "math_helper.h" + +/* Length of the overall data in the test */ +#define TESTLENGTH 320 + +/* Block size for the underlying processing */ +#define BLOCKSIZE 32 + +/* Total number of blocks to run */ +#define NUMBLOCKS (TESTLENGTH/BLOCKSIZE) + +/* Number of 2nd order Biquad stages per filter */ +#define NUMSTAGES 2 + +#define SNR_THRESHOLD_F32 98 + +/* ------------------------------------------------------------------- + * External Declarations for Input and Output buffers + * ------------------------------------------------------------------- */ + +extern float32_t testInput_f32[TESTLENGTH]; +static float32_t testOutput[TESTLENGTH]; + +extern float32_t testRefOutput_f32[TESTLENGTH]; + +/* ---------------------------------------------------------------------- +** Q31 state buffers for Band1, Band2, Band3, Band4, Band5 +** ------------------------------------------------------------------- */ + +static q63_t biquadStateBand1Q31[4 * 2]; +static q63_t biquadStateBand2Q31[4 * 2]; +static q31_t biquadStateBand3Q31[4 * 2]; +static q31_t biquadStateBand4Q31[4 * 2]; +static q31_t biquadStateBand5Q31[4 * 2]; + +/* ---------------------------------------------------------------------- +** Q31 input and output buffers +** ------------------------------------------------------------------- */ + +q31_t inputQ31[BLOCKSIZE]; +q31_t outputQ31[BLOCKSIZE]; + +/* ---------------------------------------------------------------------- +** Entire coefficient table. There are 10 coefficients per 4th order Biquad +** cascade filter. The first 10 coefficients correspond to the -9 dB gain +** setting of band 1; the next 10 coefficient correspond to the -8 dB gain +** setting of band 1; and so on. There are 10*19=190 coefficients in total +** for band 1 (gains = -9, -8, -7, ..., 9). After this come the 190 coefficients +** for band 2. +** +** The coefficients are in Q29 format and require a postShift of 2. +** ------------------------------------------------------------------- */ + +const q31_t coeffTable[950] = { + + /* Band 1, -9 dB gain */ + 535576962, -1071153923, 535576962, 1073741824, -536870912, 535576962, -1063501998, 527979313, 1060865294, -524146981, + /* Band 1, -8 dB gain */ + 535723226, -1071446451, 535723226, 1073741824, -536870912, 535723226, -1063568947, 527903217, 1061230578, -524503778, + 535868593, -1071737186, 535868593, 1073741824, -536870912, 535868593, -1063627467, 527819780, 1061585502, -524850686, + 536013181, -1072026363, 536013181, 1073741824, -536870912, 536013181, -1063677598, 527728935, 1061930361, -525187972, + 536157109, -1072314217, 536157109, 1073741824, -536870912, 536157109, -1063719372, 527630607, 1062265438, -525515897, + 536300492, -1072600983, 536300492, 1073741824, -536870912, 536300492, -1063752815, 527524720, 1062591011, -525834716, + 536443447, -1072886894, 536443447, 1073741824, -536870912, 536443447, -1063777945, 527411186, 1062907350, -526144676, + 536586091, -1073172183, 536586091, 1073741824, -536870912, 536586091, -1063794775, 527289917, 1063214717, -526446017, + 536728541, -1073457082, 536728541, 1073741824, -536870912, 536728541, -1063803308, 527160815, 1063513366, -526738975, + 536870912, -1073741824, 536870912, 1073741824, -536870912, 536870912, -1063803543, 527023777, 1063803543, -527023777, + 537013321, -1074026642, 537013321, 1073741824, -536870912, 537013321, -1063795470, 526878696, 1064085490, -527300648, + 537155884, -1074311768, 537155884, 1073741824, -536870912, 537155884, -1063779073, 526725455, 1064359439, -527569803, + 537298718, -1074597435, 537298718, 1073741824, -536870912, 537298718, -1063754328, 526563934, 1064625617, -527831454, + 537441939, -1074883878, 537441939, 1073741824, -536870912, 537441939, -1063721205, 526394005, 1064884245, -528085806, + 537585666, -1075171331, 537585666, 1073741824, -536870912, 537585666, -1063679666, 526215534, 1065135536, -528333059, + 537730015, -1075460030, 537730015, 1073741824, -536870912, 537730015, -1063629666, 526028380, 1065379699, -528573409, + 537875106, -1075750212, 537875106, 1073741824, -536870912, 537875106, -1063571152, 525832396, 1065616936, -528807045, + 538021057, -1076042114, 538021057, 1073741824, -536870912, 538021057, -1063504065, 525627429, 1065847444, -529034151, + 538167989, -1076335977, 538167989, 1073741824, -536870912, 538167989, -1063428338, 525413317, 1066071412, -529254907, + + /* Band 2, -9 dB gain */ + 531784976, -1055497692, 523873415, 1066213307, -529420241, 531784976, -1040357886, 509828014, 1028908252, -494627367, + /* Band 2, -8 dB gain */ + 532357636, -1056601982, 524400080, 1066115844, -529326645, 532357636, -1040623406, 509562600, 1030462237, -496062122, + 532927392, -1057707729, 524931110, 1066024274, -529239070, 532927392, -1040848253, 509262081, 1031969246, -497457090, + 533494678, -1058816094, 525467240, 1065939047, -529157961, 533494678, -1041032161, 508925950, 1033429976, -498812573, + 534059929, -1059928204, 526009170, 1065860582, -529083734, 534059929, -1041174868, 508553717, 1034845124, -500128887, + 534623580, -1061045148, 526557561, 1065789260, -529016764, 534623580, -1041276126, 508144920, 1036215393, -501406373, + 535186068, -1062167969, 527113032, 1065725420, -528957385, 535186068, -1041335703, 507699125, 1037541500, -502645399, + 535747827, -1063297666, 527676151, 1065669351, -528905879, 535747827, -1041353386, 507215934, 1038824183, -503846368, + 536309295, -1064435183, 528247436, 1065621289, -528862476, 536309295, -1041328990, 506694984, 1040064203, -505009724, + 536870912, -1065581413, 528827349, 1065581413, -528827349, 536870912, -1041262354, 506135953, 1041262354, -506135953, + 537433117, -1066737194, 529416295, 1065549847, -528800610, 537433117, -1041153346, 505538564, 1042419457, -507225588, + 537996352, -1067903307, 530014622, 1065526651, -528782316, 537996352, -1041001864, 504902578, 1043536370, -508279208, + 538561061, -1069080480, 530622620, 1065511830, -528772462, 538561061, -1040807833, 504227800, 1044613981, -509297437, + 539127690, -1070269387, 531240527, 1065505333, -528770987, 539127690, -1040571205, 503514074, 1045653211, -510280946, + 539696690, -1071470656, 531868525, 1065507054, -528777778, 539696690, -1040291951, 502761277, 1046655011, -511230450, + 540268512, -1072684867, 532506750, 1065516837, -528792672, 540268512, -1039970063, 501969320, 1047620358, -512146700, + 540843613, -1073912567, 533155297, 1065534483, -528815459, 540843613, -1039605542, 501138139, 1048550251, -513030484, + 541422451, -1075154268, 533814224, 1065559750, -528845892, 541422451, -1039198394, 500267687, 1049445708, -513882621, + 542005489, -1076410460, 534483561, 1065592362, -528883686, 542005489, -1038748624, 499357932, 1050307760, -514703956, + 518903861, -1001986830, 486725277, 1037235801, -502367695, 518903861, -945834422, 446371043, 902366163, -400700571, + 520899989, -1005630916, 488289126, 1036926846, -502147311, 520899989, -946490935, 445581846, 907921945, -404936158, + 522893209, -1009290002, 489869792, 1036650484, -501961419, 522893209, -947006359, 444685310, 913306106, -409075225, + 524884763, -1012968199, 491470256, 1036407567, -501810737, 524884763, -947377809, 443679533, 918521018, -413116221, + 526875910, -1016669649, 493093518, 1036198712, -501695739, 526875910, -947602324, 442562672, 923569247, -417057897, + 528867927, -1020398503, 494742575, 1036024293, -501616651, 528867927, -947676875, 441332970, 928453558, -420899319, + 530862111, -1024158905, 496420407, 1035884447, -501573457, 530862111, -947598385, 439988777, 933176909, -424639872, + 532859778, -1027954970, 498129955, 1035779077, -501565907, 532859778, -947363742, 438528571, 937742446, -428279254, + 534862260, -1031790763, 499874098, 1035707863, -501593525, 534862260, -946969823, 436950987, 942153486, -431817474, + 536870912, -1035670279, 501655630, 1035670279, -501655630, 536870912, -946413508, 435254839, 946413508, -435254839, + 538887107, -1039597419, 503477238, 1035665609, -501751354, 538887107, -945691703, 433439146, 950526127, -438591937, + 540912240, -1043575967, 505341475, 1035692963, -501879659, 540912240, -944801359, 431503152, 954495080, -441829621, + 542947726, -1047609569, 507250741, 1035751307, -502039364, 542947726, -943739490, 429446349, 958324201, -444968987, + 544995000, -1051701717, 509207261, 1035839473, -502229165, 544995000, -942503190, 427268492, 962017400, -448011351, + 547055523, -1055855728, 511213065, 1035956193, -502447657, 547055523, -941089647, 424969617, 965578640, -450958226, + 549130774, -1060074734, 513269973, 1036100110, -502693359, 549130774, -939496155, 422550049, 969011913, -453811298, + 551222259, -1064361672, 515379585, 1036269804, -502964731, 551222259, -937720119, 420010407, 972321228, -456572401, + 553331507, -1068719280, 517543273, 1036463810, -503260192, 553331507, -935759057, 417351601, 975510582, -459243495, + 555460072, -1073150100, 519762181, 1036680633, -503578144, 555460072, -933610600, 414574832, 978583948, -461826644, + 494084017, -851422604, 404056273, 930151631, -423619864, 494084017, -673714108, 339502486, 561843007, -265801750, + 498713542, -859177141, 406587077, 929211656, -423786402, 498713542, -673274906, 338185129, 573719128, -272222942, + 503369016, -867012190, 409148384, 928362985, -424054784, 503369016, -672533059, 336693984, 585290277, -278599028, + 508052536, -874935599, 411746438, 927604291, -424422151, 508052536, -671478538, 335026905, 596558312, -284920289, + 512766286, -882955583, 414387826, 926933782, -424885216, 512766286, -670100998, 333182045, 607525792, -291177811, + 517512534, -891080712, 417079474, 926349262, -425440318, 517512534, -668389789, 331157902, 618195914, -297363485, + 522293635, -899319903, 419828635, 925848177, -426083491, 522293635, -666333963, 328953368, 628572440, -303470012, + 527112032, -907682405, 422642886, 925427679, -426810526, 527112032, -663922286, 326567785, 638659631, -309490882, + 531970251, -916177781, 425530105, 925084675, -427617023, 531970251, -661143261, 324000998, 648462180, -315420352, + 536870912, -924815881, 428498454, 924815881, -428498454, 536870912, -657985147, 321253420, 657985147, -321253420, + 541816719, -933606817, 431556352, 924617870, -429450209, 541816719, -654435997, 318326093, 667233900, -326985786, + 546810467, -942560921, 434712438, 924487114, -430467639, 546810467, -650483688, 315220754, 676214053, -332613816, + 551855042, -951688708, 437975532, 924420027, -431546101, 551855042, -646115970, 311939896, 684931422, -338134495, + 556953421, -961000826, 441354588, 924413001, -432680993, 556953421, -641320513, 308486839, 693391970, -343545389, + 562108672, -970508005, 444858642, 924462435, -433867780, 562108672, -636084967, 304865786, 701601770, -348844597, + 567323959, -980220994, 448496743, 924564764, -435102022, 567323959, -630397020, 301081886, 709566963, -354030710, + 572602539, -990150500, 452277894, 924716482, -436379394, 572602539, -624244471, 297141281, 717293726, -359102767, + 577947763, -1000307125, 456210977, 924914158, -437695705, 577947763, -617615296, 293051155, 724788245, -364060214, + 583363084, -1010701292, 460304674, 925154455, -439046908, 583363084, -610497723, 288819761, 732056685, -368902865, + 387379495, -506912469, 196933274, 840112184, -347208270, 387379495, 506912469, 196933274, -840112184, -347208270, + 401658082, -532275898, 207149427, 833765363, -343175316, 401658082, 532275898, 207149427, -833765363, -343175316, + 416472483, -558722695, 217902617, 827270154, -339107319, 416472483, 558722695, 217902617, -827270154, -339107319, + 431841949, -586290861, 229212798, 820624988, -335007540, 431841949, 586290861, 229212798, -820624988, -335007540, + 447786335, -615019650, 241100489, 813828443, -330879528, 447786335, 615019650, 241100489, -813828443, -330879528, + 464326111, -644949597, 253586805, 806879270, -326727141, 464326111, 644949597, 253586805, -806879270, -326727141, + 481482377, -676122557, 266693475, 799776409, -322554559, 481482377, 676122557, 266693475, -799776409, -322554559, + 499276882, -708581728, 280442865, 792519013, -318366296, 499276882, 708581728, 280442865, -792519013, -318366296, + 517732032, -742371685, 294857996, 785106465, -314167221, 517732032, 742371685, 294857996, -785106465, -314167221, + 536870912, -777538408, 309962566, 777538408, -309962566, 536870912, 777538408, 309962566, -777538408, -309962566, + 556717294, -814129313, 325780968, 769814766, -305757943, 556717294, 814129313, 325780968, -769814766, -305757943, + 577295658, -852193284, 342338310, 761935777, -301559360, 577295658, 852193284, 342338310, -761935777, -301559360, + 598631206, -891780698, 359660433, 753902014, -297373230, 598631206, 891780698, 359660433, -753902014, -297373230, + 620749877, -932943463, 377773927, 745714425, -293206383, 620749877, 932943463, 377773927, -745714425, -293206383, + 643678365, -975735041, 396706151, 737374355, -289066077, 643678365, 975735041, 396706151, -737374355, -289066077, + 667444134, -1020210487, 416485252, 728883588, -284960004, 667444134, 1020210487, 416485252, -728883588, -284960004, + 692075438, -1066426476, 437140179, 720244375, -280896294, 692075438, 1066426476, 437140179, -720244375, -280896294, + 717601336, -1114441339, 458700704, 711459472, -276883515, 717601336, 1114441339, 458700704, -711459472, -276883515, + 744051710, -1164315096, 481197437, 702532174, -272930673, 744051710, 1164315096, 481197437, -702532174, -272930673 + +}; + +/* ---------------------------------------------------------------------- +** Desired gains, in dB, per band +** ------------------------------------------------------------------- */ + +int gainDB[5] = {0, -3, 6, 4, -6}; + +float32_t snr; + + +/* ---------------------------------------------------------------------- + * Graphic equalizer Example + * ------------------------------------------------------------------- */ + +int32_t main(void) +{ + float32_t *inputF32, *outputF32; + arm_biquad_cas_df1_32x64_ins_q31 S1; + arm_biquad_cas_df1_32x64_ins_q31 S2; + arm_biquad_casd_df1_inst_q31 S3; + arm_biquad_casd_df1_inst_q31 S4; + arm_biquad_casd_df1_inst_q31 S5; + int i; + int32_t status; + + inputF32 = &testInput_f32[0]; + outputF32 = &testOutput[0]; + + /* Initialize the state and coefficient buffers for all Biquad sections */ + + arm_biquad_cas_df1_32x64_init_q31(&S1, NUMSTAGES, + (q31_t *) &coeffTable[190*0 + 10*(gainDB[0] + 9)], + &biquadStateBand1Q31[0], 2); + + arm_biquad_cas_df1_32x64_init_q31(&S2, NUMSTAGES, + (q31_t *) &coeffTable[190*1 + 10*(gainDB[1] + 9)], + &biquadStateBand2Q31[0], 2); + + arm_biquad_cascade_df1_init_q31(&S3, NUMSTAGES, + (q31_t *) &coeffTable[190*2 + 10*(gainDB[2] + 9)], + &biquadStateBand3Q31[0], 2); + + arm_biquad_cascade_df1_init_q31(&S4, NUMSTAGES, + (q31_t *) &coeffTable[190*3 + 10*(gainDB[3] + 9)], + &biquadStateBand4Q31[0], 2); + + arm_biquad_cascade_df1_init_q31(&S5, NUMSTAGES, + (q31_t *) &coeffTable[190*4 + 10*(gainDB[4] + 9)], + &biquadStateBand5Q31[0], 2); + + + /* Call the process functions and needs to change filter coefficients + for varying the gain of each band */ + + for(i=0; i < NUMBLOCKS; i++) + { + + /* ---------------------------------------------------------------------- + ** Convert block of input data from float to Q31 + ** ------------------------------------------------------------------- */ + + arm_float_to_q31(inputF32 + (i*BLOCKSIZE), inputQ31, BLOCKSIZE); + + /* ---------------------------------------------------------------------- + ** Scale down by 1/8. This provides additional headroom so that the + ** graphic EQ can apply gain. + ** ------------------------------------------------------------------- */ + + arm_scale_q31(inputQ31, 0x7FFFFFFF, -3, inputQ31, BLOCKSIZE); + + /* ---------------------------------------------------------------------- + ** Call the Q31 Biquad Cascade DF1 32x64 process function for band1, band2 + ** ------------------------------------------------------------------- */ + + arm_biquad_cas_df1_32x64_q31(&S1, inputQ31, outputQ31, BLOCKSIZE); + arm_biquad_cas_df1_32x64_q31(&S2, outputQ31, outputQ31, BLOCKSIZE); + + /* ---------------------------------------------------------------------- + ** Call the Q31 Biquad Cascade DF1 process function for band3, band4, band5 + ** ------------------------------------------------------------------- */ + + arm_biquad_cascade_df1_q31(&S3, outputQ31, outputQ31, BLOCKSIZE); + arm_biquad_cascade_df1_q31(&S4, outputQ31, outputQ31, BLOCKSIZE); + arm_biquad_cascade_df1_q31(&S5, outputQ31, outputQ31, BLOCKSIZE); + + /* ---------------------------------------------------------------------- + ** Convert Q31 result back to float + ** ------------------------------------------------------------------- */ + + arm_q31_to_float(outputQ31, outputF32 + (i * BLOCKSIZE), BLOCKSIZE); + + /* ---------------------------------------------------------------------- + ** Scale back up + ** ------------------------------------------------------------------- */ + + arm_scale_f32(outputF32 + (i * BLOCKSIZE), 8.0f, outputF32 + (i * BLOCKSIZE), BLOCKSIZE); + }; + + snr = arm_snr_f32(testRefOutput_f32, testOutput, TESTLENGTH); + + if (snr < SNR_THRESHOLD_F32) + { + status = ARM_MATH_TEST_FAILURE; + } + else + { + status = ARM_MATH_SUCCESS; + } + + /* ---------------------------------------------------------------------- + ** Loop here if the signal does not match the reference output. + ** ------------------------------------------------------------------- */ + + if ( status != ARM_MATH_SUCCESS) + { + while (1); + } + + while (1); /* main function does not return */ +} + +/** \endlink */ + + + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.c new file mode 100644 index 0000000..f615e6f --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.c @@ -0,0 +1,466 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 b +* +* Project: CMSIS DSP Library +* +* Title: math_helper.c +* +* Description: Definition of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- +* Include standard header files +* -------------------------------------------------------------------- */ +#include + +/* ---------------------------------------------------------------------- +* Include project header files +* -------------------------------------------------------------------- */ +#include "math_helper.h" + +/** + * @brief Caluclation of SNR + * @param[in] pRef Pointer to the reference buffer + * @param[in] pTest Pointer to the test buffer + * @param[in] buffSize total number of samples + * @return SNR + * The function Caluclates signal to noise ratio for the reference output + * and test output + */ + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize) +{ + float EnergySignal = 0.0, EnergyError = 0.0; + uint32_t i; + float SNR; + int temp; + int *test; + + for (i = 0; i < buffSize; i++) + { + /* Checking for a NAN value in pRef array */ + test = (int *)(&pRef[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + /* Checking for a NAN value in pTest array */ + test = (int *)(&pTest[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + EnergySignal += pRef[i] * pRef[i]; + EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); + } + + /* Checking for a NAN value in EnergyError */ + test = (int *)(&EnergyError); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + + SNR = 10 * log10 (EnergySignal / EnergyError); + + return (SNR); + +} + + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Converts float to fixed in q12.20 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to outputbuffer + * @param[in] numSamples number of samples in the input buffer + * @return none + * The function converts floating point values to fixed point(q12.20) values + */ + +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1048576.0f corresponds to pow(2, 20) */ + pOut[i] = (q31_t) (pIn[i] * 1048576.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 1.0) + { + pOut[i] = 0x000FFFFF; + } + } +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q31 (q31_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q7 (q7_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + + + +/** + * @brief Caluclates number of guard bits + * @param[in] num_adds number of additions + * @return guard bits + * The function Caluclates the number of guard bits + * depending on the numtaps + */ + +uint32_t arm_calc_guard_bits (uint32_t num_adds) +{ + uint32_t i = 1, j = 0; + + if (num_adds == 1) + { + return (0); + } + + while (i < num_adds) + { + i = i * 2; + j++; + } + + return (j); +} + +/** + * @brief Apply guard bits to buffer + * @param[in,out] pIn pointer to input buffer + * @param[in] numSamples number of samples in the input buffer + * @param[in] guard_bits guard bits + * @return none + */ + +void arm_apply_guard_bits (float32_t *pIn, + uint32_t numSamples, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + pIn[i] = pIn[i] * arm_calc_2pow(guard_bits); + } +} + +/** + * @brief Calculates pow(2, numShifts) + * @param[in] numShifts number of shifts + * @return pow(2, numShifts) + */ +uint32_t arm_calc_2pow(uint32_t numShifts) +{ + + uint32_t i, val = 1; + + for (i = 0; i < numShifts; i++) + { + val = val * 2; + } + + return(val); +} + + + +/** + * @brief Converts float to fixed q14 + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 16384.0f corresponds to pow(2, 14) */ + pOut[i] = (q15_t) (pIn[i] * 16384.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFF; + } + + } + +} + + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 1073741824.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 536870912.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 4.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + + +/** + * @brief Converts float to fixed q28 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 268435456.0f corresponds to pow(2, 28) */ + pOut[i] = (q31_t) (pIn[i] * 268435456.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 8.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Clip the float values to +/- 1 + * @param[in,out] pIn input buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_clip_f32 (float *pIn, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + if (pIn[i] > 1.0f) + { + pIn[i] = 1.0; + } + else if ( pIn[i] < -1.0f) + { + pIn[i] = -1.0; + } + + } +} + + + + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.h b/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.h new file mode 100644 index 0000000..5a18734 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_graphic_equalizer_example/math_helper.h @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* +* Title: math_helper.h +* +* Description: Prototypes of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +#ifndef MATH_HELPER_H +#define MATH_HELPER_H + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize); +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples); +void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples); +void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_clip_f32(float *pIn, uint32_t numSamples); +uint32_t arm_calc_guard_bits(uint32_t num_adds); +void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits); +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples); +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples); +uint32_t arm_calc_2pow(uint32_t guard_bits); +#endif + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/Abstract.txt new file mode 100644 index 0000000..9062c48 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_linear_interp_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_data.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_data.c new file mode 100644 index 0000000..309326e --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_data.c @@ -0,0 +1,23616 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_linear_interp_data.c +* +* Description: Data file used for example. Generation method described +* below +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- +* Table generated from following MATLAB Command +* x = -pi: 0.00005 : (2*pi - 0.00005); +* y = sin(x); +* where pi value is 3.141592653589793 +* --------------------------------------------------------------------*/ + +float arm_linear_interep_table[188495] = { + + +-0.000000000000000122, -0.000049999999979173, -0.000099999999833667, -0.000149999999437717, -0.000199999998666767, -0.000249999997395817, -0.000299999995500311, -0.000349999992854362, +-0.000399999989333412, -0.000449999984812462, -0.000499999979166956, -0.000549999972271007, -0.000599999964000057, -0.000649999954229107, -0.000699999942833602, -0.000749999929687653, +-0.000799999914666704, -0.000849999897645755, -0.000899999878500250, -0.000949999857104302, -0.000999999833333354, -0.001049999807062851, -0.001099999778166904, -0.001149999746520957, +-0.001199999712000011, -0.001249999674479510, -0.001299999633833566, -0.001349999589937622, -0.001399999542666680, -0.001449999491896183, -0.001499999437500243, -0.001549999379354304, +-0.001599999317333367, -0.001649999251312876, -0.001699999181166942, -0.001749999106771011, -0.001799999028000082, -0.001849998944729599, -0.001899998856833675, -0.001949998764187754, +-0.001999998666666836, -0.002049998564146365, -0.002099998456500453, -0.002149998343604546, -0.002199998225334087, -0.002249998101563188, -0.002299997972167294, -0.002349997837021405, +-0.002399997696000966, -0.002449997548980088, -0.002499997395834216, -0.002549997236438351, -0.002599997070667937, -0.002649996898397086, -0.002699996719501243, -0.002749996533855408, +-0.002799996341335026, -0.002849996141814208, -0.002899995935168401, -0.002949995721272604, -0.002999995500002261, -0.003049995271231486, -0.003099995034835722, -0.003149994790690415, +-0.003199994538669677, -0.003249994278648952, -0.003299994010503243, -0.003349993734107991, -0.003399993449337312, -0.003449993156066649, -0.003499992854171003, -0.003549992543525819, +-0.003599992224005209, -0.003649991895484619, -0.003699991557839049, -0.003749991210943944, -0.003799990854673418, -0.003849990488902914, -0.003899990113507434, -0.003949989728362423, +-0.003999989333341993, -0.004049988928321590, -0.004099988513176658, -0.004149988087781312, -0.004199987652010995, -0.004249987205740709, -0.004299986748845899, -0.004349986281200678, +-0.004399985802680492, -0.004449985313160341, -0.004499984812515671, -0.004549984300620594, -0.004599983777350557, -0.004649983242580561, -0.004699982696186050, -0.004749982138041138, +-0.004799981568021272, -0.004849980986001451, -0.004899980391857122, -0.004949979785462398, -0.004999979166692725, -0.005049978535423547, -0.005099977891528979, -0.005149977234884466, +-0.005199976565365011, -0.005249975882846058, -0.005299975187201721, -0.005349974478307446, -0.005399973756038235, -0.005449973020269535, -0.005499972270875456, -0.005549971507731448, +-0.005599970730712511, -0.005649969939694091, -0.005699969134550302, -0.005749968315156590, -0.005799967481387958, -0.005849966633119851, -0.005899965770226383, -0.005949964892583000, +-0.005999964000064706, -0.006049963092546945, -0.006099962169903833, -0.006149961232010816, -0.006199960278743339, -0.006249959309975518, -0.006299958325582797, -0.006349957325440182, +-0.006399956309423117, -0.006449955277405718, -0.006499954229263430, -0.006549953164871257, -0.006599952084104644, -0.006649950986837708, -0.006699949872945895, -0.006749948742304206, +-0.006799947594788089, -0.006849946430271660, -0.006899945248630365, -0.006949944049739206, -0.006999942833473632, -0.007049941599707755, -0.007099940348317025, -0.007149939079176889, +-0.007199937792161461, -0.007249936487146187, -0.007299935164006074, -0.007349933822616566, -0.007399932462851779, -0.007449931084587162, -0.007499929687697716, -0.007549928272058891, +-0.007599926837544801, -0.007649925384030893, -0.007699923911392173, -0.007749922419504085, -0.007799920908240749, -0.007849919377477610, -0.007899917827089672, -0.007949916256952384, +-0.007999914666939863, -0.008049913056927554, -0.008099911426790906, -0.008149909776404035, -0.008199908105642390, -0.008249906414380975, -0.008299904702495238, -0.008349902969859295, +-0.008399901216348595, -0.008449899441838141, -0.008499897646203384, -0.008549895829318437, -0.008599893991058752, -0.008649892131299332, -0.008699890249915625, -0.008749888346781748, +-0.008799886421773151, -0.008849884474764837, -0.008899882505632256, -0.008949880514249525, -0.008999878500492093, -0.009049876464234965, -0.009099874405353590, -0.009149872323722084, +-0.009199870219215898, -0.009249868091710479, -0.009299865941079948, -0.009349863767199750, -0.009399861569944894, -0.009449859349190827, -0.009499857104811669, -0.009549854836682867, +-0.009599852544679429, -0.009649850228676803, -0.009699847888549109, -0.009749845524171793, -0.009799843135419864, -0.009849840722168771, -0.009899838284292632, -0.009949835821666898, +-0.009999833334166574, -0.010049830821667110, -0.010099828284042626, -0.010149825721168572, -0.010199823132920397, -0.010249820519172219, -0.010299817879799491, -0.010349815214677217, +-0.010399812523680850, -0.010449809806684508, -0.010499807063563642, -0.010549804294193258, -0.010599801498448806, -0.010649798676204407, -0.010699795827335511, -0.010749792951717126, +-0.010799790049224703, -0.010849787119732359, -0.010899784163115548, -0.010949781179249277, -0.010999778168008997, -0.011049775129268828, -0.011099772062904221, -0.011149768968790628, +-0.011199765846802169, -0.011249762696814294, -0.011299759518702013, -0.011349756312340777, -0.011399753077604706, -0.011449749814369253, -0.011499746522509425, -0.011549743201900674, +-0.011599739852417123, -0.011649736473934221, -0.011699733066326979, -0.011749729629470847, -0.011799726163239948, -0.011849722667509732, -0.011899719142155211, -0.011949715587051834, +-0.011999712002073726, -0.012049708387096337, -0.012099704741995123, -0.012149701066644201, -0.012199697360919026, -0.012249693624694609, -0.012299689857846402, -0.012349686060248525, +-0.012399682231776434, -0.012449678372305137, -0.012499674481710089, -0.012549670559865410, -0.012599666606646555, -0.012649662621928532, -0.012699658605586799, -0.012749654557495473, +-0.012799650477530011, -0.012849646365565424, -0.012899642221477166, -0.012949638045139357, -0.012999633836427452, -0.013049629595216463, -0.013099625321381845, -0.013149621014797719, +-0.013199616675339540, -0.013249612302882765, -0.013299607897301514, -0.013349603458471243, -0.013399598986266964, -0.013449594480564131, -0.013499589941236869, -0.013549585368160630, +-0.013599580761210430, -0.013649576120261721, -0.013699571445188626, -0.013749566735866605, -0.013799561992170667, -0.013849557213976266, -0.013899552401157530, -0.013949547553589911, +-0.013999542671148425, -0.014049537753708525, -0.014099532801144338, -0.014149527813331319, -0.014199522790144923, -0.014249517731459277, -0.014299512637149837, -0.014349507507091614, +-0.014399502341160067, -0.014449497139229321, -0.014499491901174831, -0.014549486626871612, -0.014599481316195120, -0.014649475969019481, -0.014699470585220153, -0.014749465164672147, +-0.014799459707250922, -0.014849454212830605, -0.014899448681286651, -0.014949443112494076, -0.014999437506328338, -0.015049431862663561, -0.015099426181375206, -0.015149420462338728, +-0.015199414705428255, -0.015249408910519246, -0.015299403077486715, -0.015349397206206119, -0.015399391296551587, -0.015449385348398575, -0.015499379361622101, -0.015549373336097624, +-0.015599367271699268, -0.015649361168302494, -0.015699355025782315, -0.015749348844014195, -0.015799342622872262, -0.015849336362231969, -0.015899330061968333, -0.015949323721956819, +-0.015999317342071551, -0.016049310922187990, -0.016099304462181149, -0.016149297961926493, -0.016199291421298147, -0.016249284840171574, -0.016299278218422232, -0.016349271555924253, +-0.016399264852553091, -0.016449258108183769, -0.016499251322691748, -0.016549244495951149, -0.016599237627837445, -0.016649230718225643, -0.016699223766991209, -0.016749216774008271, +-0.016799209739152290, -0.016849202662298290, -0.016899195543321723, -0.016949188382096723, -0.016999181178498753, -0.017049173932402829, -0.017099166643684417, -0.017149159312217641, +-0.017199151937877969, -0.017249144520540861, -0.017299137060080447, -0.017349129556372193, -0.017399122009291113, -0.017449114418712670, -0.017499106784510998, -0.017549099106561560, +-0.017599091384739373, -0.017649083618919904, -0.017699075808977279, -0.017749067954786969, -0.017799060056223986, -0.017849052113163795, -0.017899044125480532, -0.017949036093049660, +-0.017999028015746196, -0.018049019893445605, -0.018099011726022022, -0.018149003513350907, -0.018198995255307732, -0.018248986951766622, -0.018298978602603044, -0.018348970207692019, +-0.018398961766909014, -0.018448953280128161, -0.018498944747224924, -0.018548936168074327, -0.018598927542551831, -0.018648918870531574, -0.018698910151889018, -0.018748901386499189, +-0.018798892574237547, -0.018848883714978233, -0.018898874808596710, -0.018948865854967998, -0.018998856853967565, -0.019048847805469546, -0.019098838709349409, -0.019148829565482174, +-0.019198820373743309, -0.019248811134006949, -0.019298801846148562, -0.019348792510043615, -0.019398783125566241, -0.019448773692591910, -0.019498764210995646, -0.019548754680652914, +-0.019598745101437852, -0.019648735473225928, -0.019698725795892161, -0.019748716069312028, -0.019798706293359659, -0.019848696467910525, -0.019898686592839651, -0.019948676668022504, +-0.019998666693333219, -0.020048656668647271, -0.020098646593839677, -0.020148636468785914, -0.020198626293360115, -0.020248616067437750, -0.020298605790894288, -0.020348595463603868, +-0.020398585085441959, -0.020448574656283587, -0.020498564176004225, -0.020548553644478006, -0.020598543061580404, -0.020648532427186443, -0.020698521741171597, -0.020748511003410002, +-0.020798500213777129, -0.020848489372148005, -0.020898478478398104, -0.020948467532401559, -0.020998456534033847, -0.021048445483169996, -0.021098434379685473, -0.021148423223454418, +-0.021198412014352307, -0.021248400752254610, -0.021298389437035468, -0.021348378068570352, -0.021398366646734290, -0.021448355171402755, -0.021498343642449892, -0.021548332059751166, +-0.021598320423181612, -0.021648308732616698, -0.021698296987930570, -0.021748285188998701, -0.021798273335696117, -0.021848261427898294, -0.021898249465479372, -0.021948237448314829, +-0.021998225376279691, -0.022048213249249434, -0.022098201067098200, -0.022148188829701463, -0.022198176536934698, -0.022248164188672048, -0.022298151784788989, -0.022348139325160547, +-0.022398126809662203, -0.022448114238168098, -0.022498101610553708, -0.022548088926694063, -0.022598076186464637, -0.022648063389739580, -0.022698050536394364, -0.022748037626304021, +-0.022798024659344031, -0.022848011635388531, -0.022897998554313004, -0.022947985415992481, -0.022997972220302438, -0.023047958967117019, -0.023097945656311705, -0.023147932287761526, +-0.023197918861341957, -0.023247905376927152, -0.023297891834392580, -0.023347878233613725, -0.023397864574464730, -0.023447850856821072, -0.023497837080557787, -0.023547823245550353, +-0.023597809351672917, -0.023647795398800960, -0.023697781386809513, -0.023747767315574056, -0.023797753184968740, -0.023847738994869038, -0.023897724745149989, -0.023947710435687070, +-0.023997696066354435, -0.024047681637027557, -0.024097667147581475, -0.024147652597891669, -0.024197637987832289, -0.024247623317278814, -0.024297608586106724, -0.024347593794190169, +-0.024397578941404627, -0.024447564027625143, -0.024497549052727188, -0.024547534016584920, -0.024597518919073816, -0.024647503760068912, -0.024697488539445693, -0.024747473257078312, +-0.024797457912842245, -0.024847442506612534, -0.024897427038264662, -0.024947411507672778, -0.024997395914712364, -0.025047380259258463, -0.025097364541186551, -0.025147348760370787, +-0.025197332916686650, -0.025247317010009623, -0.025297301040213861, -0.025347285007174848, -0.025397268910767622, -0.025447252750867667, -0.025497236527349136, -0.025547220240087511, +-0.025597203888957840, -0.025647187473835601, -0.025697170994594950, -0.025747154451111372, -0.025797137843259908, -0.025847121170916042, -0.025897104433953929, -0.025947087632249056, +-0.025997070765676464, -0.026047053834111638, -0.026097036837428735, -0.026147019775503239, -0.026197002648210635, -0.026246985455425084, -0.026296968197022069, -0.026346950872876633, +-0.026396933482864263, -0.026446916026859116, -0.026496898504736681, -0.026546880916371998, -0.026596863261640555, -0.026646845540416509, -0.026696827752575352, -0.026746809897992125, +-0.026796791976542320, -0.026846773988100085, -0.026896755932540921, -0.026946737809739864, -0.026996719619572406, -0.027046701361912708, -0.027096683036636253, -0.027146664643618094, +-0.027196646182733715, -0.027246627653857276, -0.027296609056864270, -0.027346590391630184, -0.027396571658029178, -0.027446552855936744, -0.027496533985227927, -0.027546515045778219, +-0.027596496037461778, -0.027646476960154098, -0.027696457813730226, -0.027746438598065654, -0.027796419313034542, -0.027846399958512381, -0.027896380534374220, -0.027946361040495551, +-0.027996341476750536, -0.028046321843014668, -0.028096302139162994, -0.028146282365071010, -0.028196262520612875, -0.028246242605664086, -0.028296222620100130, -0.028346202563795178, +-0.028396182436624718, -0.028446162238463801, -0.028496141969187923, -0.028546121628671248, -0.028596101216789266, -0.028646080733417033, -0.028696060178430041, -0.028746039551702456, +-0.028796018853109770, -0.028845998082527038, -0.028895977239829753, -0.028945956324892084, -0.028995935337589523, -0.029045914277797125, -0.029095893145390381, -0.029145871940243463, +-0.029195850662231865, -0.029245829311231087, -0.029295807887115288, -0.029345786389759970, -0.029395764819040188, -0.029445743174831437, -0.029495721457007882, -0.029545699665445027, +-0.029595677800017921, -0.029645655860602062, -0.029695633847071624, -0.029745611759302099, -0.029795589597168545, -0.029845567360546461, -0.029895545049310013, -0.029945522663334705, +-0.029995500202495588, -0.030045477666668166, -0.030095455055726604, -0.030145432369546407, -0.030195409608002627, -0.030245386770970769, -0.030295363858325000, -0.030345340869940819, +-0.030395317805693732, -0.030445294665457905, -0.030495271449108841, -0.030545248156521602, -0.030595224787571682, -0.030645201342133260, -0.030695177820081833, -0.030745154221292460, +-0.030795130545640648, -0.030845106793000565, -0.030895082963247715, -0.030945059056257156, -0.030995035071904393, -0.031045011010063600, -0.031094986870610280, -0.031144962653419490, +-0.031194938358366741, -0.031244913985326202, -0.031294889534173378, -0.031344865004783770, -0.031394840397031561, -0.031444815710792245, -0.031494790945940897, -0.031544766102353010, +-0.031594741179902762, -0.031644716178465669, -0.031694691097916783, -0.031744665938131605, -0.031794640698984328, -0.031844615380350445, -0.031894589982105023, -0.031944564504123571, +-0.031994538946280265, -0.032044513308450616, -0.032094487590509674, -0.032144461792332962, -0.032194435913794651, -0.032244409954770251, -0.032294383915135269, -0.032344357794763884, +-0.032394331593531604, -0.032444305311313495, -0.032494278947985067, -0.032544252503420502, -0.032594225977495297, -0.032644199370084531, -0.032694172681063713, -0.032744145910307020, +-0.032794119057689960, -0.032844092123087601, -0.032894065106375457, -0.032944038007427706, -0.032994010826119857, -0.033043983562326990, -0.033093956215924598, -0.033143928786786875, +-0.033193901274789335, -0.033243873679807037, -0.033293846001715498, -0.033343818240388901, -0.033393790395702755, -0.033443762467532584, -0.033493734455752558, -0.033543706360238200, +-0.033593678180864575, -0.033643649917507193, -0.033693621570040251, -0.033743593138339245, -0.033793564622279268, -0.033843536021735815, -0.033893507336583077, -0.033943478566696578, +-0.033993449711951375, -0.034043420772222999, -0.034093391747385619, -0.034143362637314767, -0.034193333441885507, -0.034243304160973355, -0.034293274794452495, -0.034343245342198452, +-0.034393215804086739, -0.034443186179991543, -0.034493156469788386, -0.034543126673352333, -0.034593096790558907, -0.034643066821282299, -0.034693036765398019, -0.034743006622781153, +-0.034792976393307209, -0.034842946076850380, -0.034892915673286187, -0.034942885182489711, -0.034992854604336460, -0.035042823938700625, -0.035092793185457737, -0.035142762344482860, +-0.035192731415651525, -0.035242700398837916, -0.035292669293917563, -0.035342638100765975, -0.035392606819257343, -0.035442575449267197, -0.035492543990670616, -0.035542512443343117, +-0.035592480807158891, -0.035642449081993467, -0.035692417267721918, -0.035742385364219767, -0.035792353371361212, -0.035842321289021775, -0.035892289117076537, -0.035942256855401013, +-0.035992224503869408, -0.036042192062357238, -0.036092159530739590, -0.036142126908891986, -0.036192094196688625, -0.036242061394005022, -0.036292028500716271, -0.036341995516697888, +-0.036391962441824077, -0.036441929275970356, -0.036491896019012260, -0.036541862670823974, -0.036591829231281035, -0.036641795700258523, -0.036691762077631966, -0.036741728363275557, +-0.036791694557064832, -0.036841660658874870, -0.036891626668581194, -0.036941592586058017, -0.036991558411180854, -0.037041524143824792, -0.037091489783865367, -0.037141455331176770, +-0.037191420785634539, -0.037241386147113753, -0.037291351415489948, -0.037341316590637316, -0.037391281672431401, -0.037441246660747718, -0.037491211555460480, -0.037541176356445209, +-0.037591141063576999, -0.037641105676731380, -0.037691070195782550, -0.037741034620606045, -0.037790998951076960, -0.037840963187070815, -0.037890927328461818, -0.037940891375125504, +-0.037990855326936968, -0.038040819183771730, -0.038090782945504005, -0.038140746612009321, -0.038190710183162765, -0.038240673658839881, -0.038290637038914874, -0.038340600323263266, +-0.038390563511760609, -0.038440526604281093, -0.038490489600700263, -0.038540452500893212, -0.038590415304735469, -0.038640378012101247, -0.038690340622866082, -0.038740303136905060, +-0.038790265554093727, -0.038840227874306285, -0.038890190097418273, -0.038940152223304790, -0.038990114251841367, -0.039040076182902214, -0.039090038016362870, -0.039139999752098434, +-0.039189961389984436, -0.039239922929895095, -0.039289884371705948, -0.039339845715292532, -0.039389806960529065, -0.039439768107291072, -0.039489729155453658, -0.039539690104892368, +-0.039589650955481413, -0.039639611707096324, -0.039689572359612207, -0.039739532912904607, -0.039789493366847728, -0.039839453721317121, -0.039889413976187872, -0.039939374131335532, +-0.039989334186634320, -0.040039294141959766, -0.040089253997186977, -0.040139213752191497, -0.040189173406847543, -0.040239132961030655, -0.040289092414616375, -0.040339051767478921, +-0.040389011019493840, -0.040438970170536229, -0.040488929220481633, -0.040538888169204278, -0.040588847016579700, -0.040638805762483000, -0.040688764406789736, -0.040738722949374112, +-0.040788681390111679, -0.040838639728877552, -0.040888597965547259, -0.040938556099995034, -0.040988514132096414, -0.041038472061726512, -0.041088429888760873, -0.041138387613073715, +-0.041188345234540590, -0.041238302753036603, -0.041288260168437299, -0.041338217480616897, -0.041388174689450961, -0.041438131794815029, -0.041488088796583319, -0.041538045694631390, +-0.041588002488834347, -0.041637959179067742, -0.041687915765205794, -0.041737872247124060, -0.041787828624697640, -0.041837784897802099, -0.041887741066311650, -0.041937697130101842, +-0.041987653089047797, -0.042037608943025065, -0.042087564691907858, -0.042137520335571749, -0.042187475873891836, -0.042237431306743671, -0.042287386634001493, -0.042337341855540847, +-0.042387296971237283, -0.042437251980965041, -0.042487206884599664, -0.042537161682016274, -0.042587116373090421, -0.042637070957696331, -0.042687025435709569, -0.042736979807005242, +-0.042786934071458907, -0.042836888228944790, -0.042886842279338457, -0.042936796222515020, -0.042986750058350030, -0.043036703786717728, -0.043086657407493664, -0.043136610920552952, +-0.043186564325771164, -0.043236517623022518, -0.043286470812182579, -0.043336423893126905, -0.043386376865729728, -0.043436329729866607, -0.043486282485412663, -0.043536235132243459, +-0.043586187670233222, -0.043636140099257516, -0.043686092419191462, -0.043736044629910618, -0.043785996731289217, -0.043835948723202824, -0.043885900605526565, -0.043935852378135992, +-0.043985804040905345, -0.044035755593710195, -0.044085707036425649, -0.044135658368927279, -0.044185609591089324, -0.044235560702787342, -0.044285511703896455, -0.044335462594292240, +-0.044385413373848923, -0.044435364042442069, -0.044485314599947250, -0.044535265046238698, -0.044585215381191985, -0.044635165604682239, -0.044685115716585018, -0.044735065716774568, +-0.044785015605126446, -0.044834965381515789, -0.044884915045818166, -0.044934864597907805, -0.044984814037660290, -0.045034763364950735, -0.045084712579654712, -0.045134661681646468, +-0.045184610670801574, -0.045234559546995151, -0.045284508310102771, -0.045334456959998673, -0.045384405496558436, -0.045434353919657632, -0.045484302229170492, -0.045534250424972604, +-0.045584198506939087, -0.045634146474945521, -0.045684094328866137, -0.045734042068576522, -0.045783989693951803, -0.045833937204867552, -0.045883884601198015, -0.045933831882818764, +-0.045983779049604941, -0.046033726101432110, -0.046083673038174518, -0.046133619859707743, -0.046183566565906921, -0.046233513156647622, -0.046283459631804101, -0.046333405991251929, +-0.046383352234866684, -0.046433298362522614, -0.046483244374095303, -0.046533190269459880, -0.046583136048491923, -0.046633081711065685, -0.046683027257056739, -0.046732972686340225, +-0.046782917998791723, -0.046832863194285486, -0.046882808272697092, -0.046932753233901670, -0.046982698077774818, -0.047032642804190769, -0.047082587413025116, -0.047132531904152994, +-0.047182476277449988, -0.047232420532790344, -0.047282364670049655, -0.047332308689103049, -0.047382252589826118, -0.047432196372093109, -0.047482140035779608, -0.047532083580761206, +-0.047582027006912150, -0.047631970314108020, -0.047681913502223970, -0.047731856571135579, -0.047781799520717101, -0.047831742350844128, -0.047881685061391802, -0.047931627652235700, +-0.047981570123250085, -0.048031512474310548, -0.048081454705292230, -0.048131396816070718, -0.048181338806520271, -0.048231280676516476, -0.048281222425934481, -0.048331164054649871, +-0.048381105562536907, -0.048431046949471181, -0.048480988215328286, -0.048530929359982468, -0.048580870383309334, -0.048630811285184018, -0.048680752065482120, -0.048730692724077894, +-0.048780633260846945, -0.048830573675664408, -0.048880513968405877, -0.048930454138945624, -0.048980394187159236, -0.049030334112921854, -0.049080273916109085, -0.049130213596595189, +-0.049180153154255758, -0.049230092588965949, -0.049280031900601345, -0.049329971089036223, -0.049379910154146167, -0.049429849095806784, -0.049479787913892334, -0.049529726608278417, +-0.049579665178840181, -0.049629603625453225, -0.049679541947991818, -0.049729480146331551, -0.049779418220347586, -0.049829356169915524, -0.049879293994909625, -0.049929231695205488, +-0.049979169270678275, -0.050029106721203580, -0.050079044046655675, -0.050128981246910162, -0.050178918321842195, -0.050228855271327380, -0.050278792095239978, -0.050328728793455596, +-0.050378665365849389, -0.050428601812296969, -0.050478538132672598, -0.050528474326851883, -0.050578410394710421, -0.050628346336122496, -0.050678282150963705, -0.050728217839109205, +-0.050778153400434602, -0.050828088834814177, -0.050878024142123529, -0.050927959322237815, -0.050977894375032654, -0.051027829300382306, -0.051077764098162393, -0.051127698768248062, +-0.051177633310514933, -0.051227567724837275, -0.051277502011090700, -0.051327436169150371, -0.051377370198891888, -0.051427304100189544, -0.051477237872918934, -0.051527171516955676, +-0.051577105032174046, -0.051627038418449650, -0.051676971675657664, -0.051726904803673687, -0.051776837802372008, -0.051826770671628226, -0.051876703411317525, -0.051926636021315510, +-0.051976568501496463, -0.052026500851735991, -0.052076433071909262, -0.052126365161891904, -0.052176297121558184, -0.052226228950783722, -0.052276160649443688, -0.052326092217413696, +-0.052376023654568026, -0.052425954960782298, -0.052475886135932133, -0.052525817179891805, -0.052575748092536935, -0.052625678873742691, -0.052675609523384695, -0.052725540041337234, +-0.052775470427475921, -0.052825400681675933, -0.052875330803812882, -0.052925260793761066, -0.052975190651396095, -0.053025120376593154, -0.053075049969227850, -0.053124979429174476, +-0.053174908756308654, -0.053224837950505567, -0.053274767011640821, -0.053324695939588718, -0.053374624734224871, -0.053424553395424908, -0.053474481923063123, -0.053524410317015131, +-0.053574338577156107, -0.053624266703361685, -0.053674194695506154, -0.053724122553465134, -0.053774050277113808, -0.053823977866327796, -0.053873905320981401, -0.053923832640950242, +-0.053973759826109496, -0.054023686876334805, -0.054073613791500441, -0.054123540571482054, -0.054173467216154805, -0.054223393725394337, -0.054273320099074943, -0.054323246337072244, +-0.054373172439261881, -0.054423098405518136, -0.054473024235716642, -0.054522949929732598, -0.054572875487441615, -0.054622800908718003, -0.054672726193437382, -0.054722651341474957, +-0.054772576352706340, -0.054822501227005840, -0.054872425964249086, -0.054922350564311266, -0.054972275027068015, -0.055022199352393636, -0.055072123540163755, -0.055122047590253562, +-0.055171971502538698, -0.055221895276893460, -0.055271818913193486, -0.055321742411313962, -0.055371665771130528, -0.055421588992517486, -0.055471512075350470, -0.055521435019505121, +-0.055571357824855741, -0.055621280491277958, -0.055671203018646982, -0.055721125406838441, -0.055771047655726637, -0.055820969765187224, -0.055870891735095379, -0.055920813565326750, +-0.055970735255755640, -0.056020656806257701, -0.056070578216708113, -0.056120499486982521, -0.056170420616955243, -0.056220341606501911, -0.056270262455497724, -0.056320183163818323, +-0.056370103731338023, -0.056420024157932465, -0.056469944443477291, -0.056519864587846809, -0.056569784590916668, -0.056619704452562064, -0.056669624172658639, -0.056719543751080716, +-0.056769463187703935, -0.056819382482403487, -0.056869301635055033, -0.056919220645532884, -0.056969139513712679, -0.057019058239469622, -0.057068976822679369, -0.057118895263216229, +-0.057168813560955850, -0.057218731715773435, -0.057268649727544640, -0.057318567596143774, -0.057368485321446491, -0.057418402903328433, -0.057468320341663930, -0.057518237636328622, +-0.057568154787197720, -0.057618071794146873, -0.057667988657050410, -0.057717905375783973, -0.057767821950222766, -0.057817738380242456, -0.057867654665717354, -0.057917570806523114, +-0.057967486802534947, -0.058017402653628508, -0.058067318359678120, -0.058117233920559432, -0.058167149336147660, -0.058217064606318460, -0.058266979730946154, -0.058316894709906399, +-0.058366809543074410, -0.058416724230325838, -0.058466638771535011, -0.058516553166577591, -0.058566467415329226, -0.058616381517664254, -0.058666295473458328, -0.058716209282586661, +-0.058766122944924913, -0.058816036460347415, -0.058865949828729829, -0.058915863049947365, -0.058965776123875685, -0.059015689050389127, -0.059065601829363344, -0.059115514460673556, +-0.059165426944195423, -0.059215339279803283, -0.059265251467372798, -0.059315163506779178, -0.059365075397898093, -0.059414987140603878, -0.059464898734772197, -0.059514810180278710, +-0.059564721476997755, -0.059614632624804993, -0.059664543623575657, -0.059714454473185401, -0.059764365173508562, -0.059814275724420815, -0.059864186125797379, -0.059914096377513916, +-0.059964006479444776, -0.060013916431465614, -0.060063826233451661, -0.060113735885278588, -0.060163645386820737, -0.060213554737953763, -0.060263463938552905, -0.060313372988493832, +-0.060363281887650888, -0.060413190635899734, -0.060463099233116047, -0.060513007679174169, -0.060562915973949770, -0.060612824117318082, -0.060662732109154779, -0.060712639949334200, +-0.060762547637732020, -0.060812455174223477, -0.060862362558684234, -0.060912269790988648, -0.060962176871012380, -0.061012083798630670, -0.061061990573719201, -0.061111897196152308, +-0.061161803665805668, -0.061211709982554520, -0.061261616146274546, -0.061311522156840083, -0.061361428014126820, -0.061411333718009983, -0.061461239268365254, -0.061511144665066991, +-0.061561049907990856, -0.061610954997012544, -0.061660859932006401, -0.061710764712848115, -0.061760669339412912, -0.061810573811576473, -0.061860478129213164, -0.061910382292198654, +-0.061960286300408195, -0.062010190153717455, -0.062060093852000807, -0.062109997395133919, -0.062159900782992036, -0.062209804015450842, -0.062259707092384702, -0.062309610013669289, +-0.062359512779179851, -0.062409415388792078, -0.062459317842380319, -0.062509220139820271, -0.062559122280987617, -0.062609024265756708, -0.062658926094003239, -0.062708827765602451, +-0.062758729280430040, -0.062808630638360369, -0.062858531839269122, -0.062908432883031537, -0.062958333769523311, -0.063008234498618809, -0.063058135070193727, -0.063108035484123304, +-0.063157935740283236, -0.063207835838547888, -0.063257735778792956, -0.063307635560893666, -0.063357535184725741, -0.063407434650163547, -0.063457333957082751, -0.063507233105359065, +-0.063557132094866853, -0.063607030925481811, -0.063656929597079193, -0.063706828109534694, -0.063756726462722679, -0.063806624656518859, -0.063856522690798473, -0.063906420565437216, +-0.063956318280309468, -0.064006215835290925, -0.064056113230256839, -0.064106010465082922, -0.064155907539643522, -0.064205804453814366, -0.064255701207470692, -0.064305597800488210, +-0.064355494232741298, -0.064405390504105639, -0.064455286614456500, -0.064505182563669605, -0.064555078351619291, -0.064604973978181296, -0.064654869443231303, -0.064704764746643703, +-0.064754659888294180, -0.064804554868058001, -0.064854449685810889, -0.064904344341427209, -0.064954238834782671, -0.065004133165752528, -0.065054027334212505, -0.065103921340036966, +-0.065153815183101621, -0.065203708863281737, -0.065253602380453024, -0.065303495734489861, -0.065353388925267972, -0.065403281952663039, -0.065453174816549470, -0.065503067516802946, +-0.065552960053298776, -0.065602852425912628, -0.065652744634518923, -0.065702636678993342, -0.065752528559211182, -0.065802420275048137, -0.065852311826378601, -0.065902203213078284, +-0.065952094435022451, -0.066001985492086829, -0.066051876384145808, -0.066101767111075085, -0.066151657672749956, -0.066201548069046129, -0.066251438299837970, -0.066301328365001230, +-0.066351218264411163, -0.066401107997943493, -0.066450997565472611, -0.066500886966874243, -0.066550776202024098, -0.066600665270796555, -0.066650554173067367, -0.066700442908711785, +-0.066750331477605535, -0.066800219879623021, -0.066850108114639956, -0.066899996182531618, -0.066949884083173733, -0.066999771816440706, -0.067049659382208235, -0.067099546780351613, +-0.067149434010746578, -0.067199321073267509, -0.067249207967790145, -0.067299094694189751, -0.067348981252342066, -0.067398867642121496, -0.067448753863403738, -0.067498639916064113, +-0.067548525799978318, -0.067598411515020773, -0.067648297061067189, -0.067698182437993318, -0.067748067645673551, -0.067797952683983601, -0.067847837552798773, -0.067897722251994794, +-0.067947606781446068, -0.067997491141028335, -0.068047375330616861, -0.068097259350087397, -0.068147143199314336, -0.068197026878173431, -0.068246910386539947, -0.068296793724289637, +-0.068346676891296892, -0.068396559887437453, -0.068446442712587069, -0.068496325366620134, -0.068546207849412372, -0.068596090160839104, -0.068645972300776043, -0.068695854269097620, +-0.068745736065679547, -0.068795617690397146, -0.068845499143126140, -0.068895380423740937, -0.068945261532117288, -0.068995142468130488, -0.069045023231656275, -0.069094903822569068, +-0.069144784240744592, -0.069194664486058155, -0.069244544558385496, -0.069294424457601034, -0.069344304183580521, -0.069394183736199239, -0.069444063115332938, -0.069493942320856039, +-0.069543821352644294, -0.069593700210573428, -0.069643578894517874, -0.069693457404353371, -0.069743335739955226, -0.069793213901199178, -0.069843091887959660, -0.069892969700112398, +-0.069942847337532726, -0.069992724800096370, -0.070042602087677777, -0.070092479200152658, -0.070142356137396347, -0.070192232899284598, -0.070242109485691817, -0.070291985896493756, +-0.070341862131565736, -0.070391738190783509, -0.070441614074021483, -0.070491489781155436, -0.070541365312061094, -0.070591240666612903, -0.070641115844686603, -0.070690990846157514, +-0.070740865670901404, -0.070790740318792678, -0.070840614789707101, -0.070890489083519984, -0.070940363200107090, -0.070990237139342854, -0.071040110901103015, -0.071089984485262894, +-0.071139857891698272, -0.071189731120283539, -0.071239604170894505, -0.071289477043406435, -0.071339349737695137, -0.071389222253635004, -0.071439094591101829, -0.071488966749971350, +-0.071538838730118015, -0.071588710531417590, -0.071638582153745384, -0.071688453596977161, -0.071738324860987371, -0.071788195945651764, -0.071838066850845664, -0.071887937576444835, +-0.071937808122323726, -0.071987678488358103, -0.072037548674423274, -0.072087418680395018, -0.072137288506147770, -0.072187158151557310, -0.072237027616498944, -0.072286896900848469, +-0.072336766004480288, -0.072386634927270210, -0.072436503669093530, -0.072486372229826040, -0.072536240609342176, -0.072586108807517716, -0.072635976824228413, -0.072685844659348742, +-0.072735712312754441, -0.072785579784320875, -0.072835447073923795, -0.072885314181437663, -0.072935181106738231, -0.072985047849700863, -0.073034914410201310, -0.073084780788114020, +-0.073134646983314788, -0.073184512995678935, -0.073234378825082241, -0.073284244471399168, -0.073334109934505468, -0.073383975214276503, -0.073433840310588042, -0.073483705223314544, +-0.073533569952331776, -0.073583434497515518, -0.073633298858740245, -0.073683163035881710, -0.073733027028815276, -0.073782890837416723, -0.073832754461560485, -0.073882617901122369, +-0.073932481155977711, -0.073982344226002292, -0.074032207111070572, -0.074082069811058332, -0.074131932325840921, -0.074181794655294106, -0.074231656799292375, -0.074281518757711509, +-0.074331380530426830, -0.074381242117314159, -0.074431103518247929, -0.074480964733103935, -0.074530825761757985, -0.074580686604084512, -0.074630547259959337, -0.074680407729257797, +-0.074730268011855672, -0.074780128107627436, -0.074829988016448870, -0.074879847738195351, -0.074929707272742646, -0.074979566619965229, -0.075029425779738895, -0.075079284751938993, +-0.075129143536441331, -0.075179002133120371, -0.075228860541851891, -0.075278718762511271, -0.075328576794974303, -0.075378434639115435, -0.075428292294810489, -0.075478149761934815, +-0.075528007040364192, -0.075577864129973124, -0.075627721030637390, -0.075677577742232813, -0.075727434264633825, -0.075777290597716263, -0.075827146741355475, -0.075877002695427256, +-0.075926858459806096, -0.075976714034367787, -0.076026569418987694, -0.076076424613541610, -0.076126279617904039, -0.076176134431950759, -0.076225989055557150, -0.076275843488599004, +-0.076325697730950798, -0.076375551782488366, -0.076425405643087044, -0.076475259312622654, -0.076525112790969671, -0.076574966078003903, -0.076624819173601172, -0.076674672077635939, +-0.076724524789984039, -0.076774377310520822, -0.076824229639122096, -0.076874081775662365, -0.076923933720017421, -0.076973785472062642, -0.077023637031673850, -0.077073488398725520, +-0.077123339573093461, -0.077173190554653062, -0.077223041343280133, -0.077272891938849148, -0.077322742341235942, -0.077372592550315866, -0.077422442565964769, -0.077472292388057112, +-0.077522142016468731, -0.077571991451075434, -0.077621840691751709, -0.077671689738373392, -0.077721538590815847, -0.077771387248954896, -0.077821235712665041, -0.077871083981822090, +-0.077920932056301434, -0.077970779935978882, -0.078020627620728950, -0.078070475110427445, -0.078120322404949746, -0.078170169504171688, -0.078220016407967760, -0.078269863116213798, +-0.078319709628785178, -0.078369555945557723, -0.078419402066405935, -0.078469247991205637, -0.078519093719832234, -0.078568939252161518, -0.078618784588068036, -0.078668629727427580, +-0.078718474670115987, -0.078768319416007773, -0.078818163964978760, -0.078868008316904326, -0.078917852471660319, -0.078967696429121242, -0.079017540189162933, -0.079067383751660766, +-0.079117227116490579, -0.079167070283526875, -0.079216913252645516, -0.079266756023721852, -0.079316598596631746, -0.079366440971249716, -0.079416283147451569, -0.079466125125113155, +-0.079515966904108989, -0.079565808484314909, -0.079615649865606306, -0.079665491047859027, -0.079715332030947578, -0.079765172814747792, -0.079815013399135076, -0.079864853783985265, +-0.079914693969172876, -0.079964533954573758, -0.080014373740063302, -0.080064213325517358, -0.080114052710810443, -0.080163891895818393, -0.080213730880416598, -0.080263569664480935, +-0.080313408247885895, -0.080363246630507340, -0.080413084812220675, -0.080462922792901737, -0.080512760572425041, -0.080562598150666451, -0.080612435527501802, -0.080662272702805626, +-0.080712109676453772, -0.080761946448321645, -0.080811783018285080, -0.080861619386218636, -0.080911455551998121, -0.080961291515498982, -0.081011127276597053, -0.081060962835166867, +-0.081110798191084271, -0.081160633344224672, -0.081210468294463947, -0.081260303041676599, -0.081310137585738490, -0.081359971926525040, -0.081409806063912113, -0.081459639997774225, +-0.081509473727987225, -0.081559307254426547, -0.081609140576968053, -0.081658973695486248, -0.081708806609857021, -0.081758639319956222, -0.081808471825658369, -0.081858304126839351, +-0.081908136223374561, -0.081957968115139876, -0.082007799802009840, -0.082057631283860288, -0.082107462560566669, -0.082157293632004830, -0.082207124498049317, -0.082256955158575992, +-0.082306785613460276, -0.082356615862578045, -0.082406445905803830, -0.082456275743013493, -0.082506105374082914, -0.082555934798886635, -0.082605764017300506, -0.082655593029199975, +-0.082705421834460904, -0.082755250432957839, -0.082805078824566655, -0.082854907009162759, -0.082904734986622042, -0.082954562756819047, -0.083004390319629640, -0.083054217674929265, +-0.083104044822593787, -0.083153871762497750, -0.083203698494517031, -0.083253525018527078, -0.083303351334403752, -0.083353177442021600, -0.083403003341256499, -0.083452829031983894, +-0.083502654514079663, -0.083552479787418352, -0.083602304851875850, -0.083652129707328007, -0.083701954353649410, -0.083751778790715936, -0.083801603018403004, -0.083851427036586504, +-0.083901250845141009, -0.083951074443942370, -0.084000897832866059, -0.084050721011787927, -0.084100543980582573, -0.084150366739125848, -0.084200189287293198, -0.084250011624960527, +-0.084299833752002382, -0.084349655668294651, -0.084399477373712783, -0.084449298868132669, -0.084499120151428866, -0.084548941223477253, -0.084598762084153289, -0.084648582733332867, +-0.084698403170890543, -0.084748223396702210, -0.084798043410643759, -0.084847863212589761, -0.084897682802416108, -0.084947502179998247, -0.084997321345212068, -0.085047140297932144, +-0.085096959038034381, -0.085146777565394210, -0.085196595879887538, -0.085246413981388935, -0.085296231869774294, -0.085346049544919075, -0.085395867006699169, -0.085445684254989163, +-0.085495501289664946, -0.085545318110602411, -0.085595134717676144, -0.085644951110762035, -0.085694767289735560, -0.085744583254472595, -0.085794399004847741, -0.085844214540736888, +-0.085894029862015484, -0.085943844968559460, -0.085993659860243390, -0.086043474536943151, -0.086093288998534245, -0.086143103244892549, -0.086192917275892650, -0.086242731091410452, +-0.086292544691321443, -0.086342358075501502, -0.086392171243825228, -0.086441984196168525, -0.086491796932406870, -0.086541609452416152, -0.086591421756070971, -0.086641233843247234, +-0.086691045713820872, -0.086740857367666430, -0.086790668804659854, -0.086840480024676606, -0.086890291027592603, -0.086940101813282433, -0.086989912381622000, -0.087039722732486793, +-0.087089532865752717, -0.087139342781294371, -0.087189152478987661, -0.087238961958708075, -0.087288771220331532, -0.087338580263732604, -0.087388389088787238, -0.087438197695370895, +-0.087488006083359507, -0.087537814252627646, -0.087587622203051260, -0.087637429934506253, -0.087687237446867239, -0.087737044740010137, -0.087786851813810407, -0.087836658668143996, +-0.087886465302885491, -0.087936271717910838, -0.087986077913095498, -0.088035883888315403, -0.088085689643445153, -0.088135495178360682, -0.088185300492937477, -0.088235105587051457, +-0.088284910460577223, -0.088334715113390735, -0.088384519545367440, -0.088434323756383298, -0.088484127746312896, -0.088533931515032194, -0.088583735062417082, -0.088633538388342203, +-0.088683341492683476, -0.088733144375316403, -0.088782947036116902, -0.088832749474959588, -0.088882551691720407, -0.088932353686274848, -0.088982155458498843, -0.089031957008267007, +-0.089081758335455272, -0.089131559439939154, -0.089181360321594572, -0.089231160980296154, -0.089280961415919832, -0.089330761628341096, -0.089380561617435905, -0.089430361383078874, +-0.089480160925145935, -0.089529960243512591, -0.089579759338054787, -0.089629558208647153, -0.089679356855165607, -0.089729155277486122, -0.089778953475483314, -0.089828751449033115, +-0.089878549198011026, -0.089928346722293023, -0.089978144021753706, -0.090027941096269021, -0.090077737945714498, -0.090127534569966056, -0.090177330968898350, -0.090227127142387301, +-0.090276923090308450, -0.090326718812537732, -0.090376514308949760, -0.090426309579420522, -0.090476104623825493, -0.090525899442040647, -0.090575694033940626, -0.090625488399401349, +-0.090675282538298804, -0.090725076450507619, -0.090774870135903726, -0.090824663594362670, -0.090874456825760383, -0.090924249829971521, -0.090974042606872044, -0.091023835156337454, +-0.091073627478243713, -0.091123419572465461, -0.091173211438878660, -0.091223003077358839, -0.091272794487781944, -0.091322585670022619, -0.091372376623956836, -0.091422167349460112, +-0.091471957846408408, -0.091521748114676379, -0.091571538154139959, -0.091621327964675148, -0.091671117546156575, -0.091720906898460214, -0.091770696021461567, -0.091820484915036638, +-0.091870273579060052, -0.091920062013407786, -0.091969850217955354, -0.092019638192578745, -0.092069425937152602, -0.092119213451552884, -0.092169000735655135, -0.092218787789335330, +-0.092268574612468124, -0.092318361204929464, -0.092368147566594908, -0.092417933697340429, -0.092467719597040671, -0.092517505265571606, -0.092567290702808780, -0.092617075908628180, +-0.092666860882904434, -0.092716645625513544, -0.092766430136331485, -0.092816214415232912, -0.092865998462093799, -0.092915782276789677, -0.092965565859196561, -0.093015349209189080, +-0.093065132326643221, -0.093114915211434529, -0.093164697863439005, -0.093214480282531278, -0.093264262468587364, -0.093314044421482792, -0.093363826141093550, -0.093413607627294296, +-0.093463388879961029, -0.093513169898969725, -0.093562950684195054, -0.093612731235513016, -0.093662511552799144, -0.093712291635929437, -0.093762071484778553, -0.093811851099222493, +-0.093861630479136815, -0.093911409624397493, -0.093961188534879211, -0.094010967210457944, -0.094060745651009275, -0.094110523856409167, -0.094160301826532330, -0.094210079561254725, +-0.094259857060451924, -0.094309634323999914, -0.094359411351773378, -0.094409188143648320, -0.094458964699500297, -0.094508741019205297, -0.094558517102638004, -0.094608292949674419, +-0.094658068560190545, -0.094707843934061051, -0.094757619071161953, -0.094807393971368809, -0.094857168634557607, -0.094906943060603058, -0.094956717249381151, -0.095006491200767443, +-0.095056264914637950, -0.095106038390867356, -0.095155811629331663, -0.095205584629906442, -0.095255357392467710, -0.095305129916890136, -0.095354902203049735, -0.095404674250822080, +-0.095454446060083187, -0.095504217630707725, -0.095553988962571723, -0.095603760055550754, -0.095653530909520820, -0.095703301524356618, -0.095753071899934178, -0.095802842036129487, +-0.095852611932817244, -0.095902381589873478, -0.095952151007173761, -0.096001920184594094, -0.096051689122009204, -0.096101457819295077, -0.096151226276327315, -0.096200994492981917, +-0.096250762469133597, -0.096300530204658383, -0.096350297699431819, -0.096400064953329978, -0.096449831966227514, -0.096499598738000486, -0.096549365268524895, -0.096599131557675438, +-0.096648897605328174, -0.096698663411358646, -0.096748428975642911, -0.096798194298055668, -0.096847959378472931, -0.096897724216770301, -0.096947488812823793, -0.096997253166508118, +-0.097047017277699321, -0.097096781146272987, -0.097146544772105131, -0.097196308155070479, -0.097246071295045047, -0.097295834191904434, -0.097345596845524685, -0.097395359255780509, +-0.097445121422547923, -0.097494883345702540, -0.097544645025120391, -0.097594406460676186, -0.097644167652245956, -0.097693928599705757, -0.097743689302930301, -0.097793449761795617, +-0.097843209976177306, -0.097892969945951411, -0.097942729670992656, -0.097992489151177073, -0.098042248386380260, -0.098092007376478274, -0.098141766121345828, -0.098191524620858978, +-0.098241282874893296, -0.098291040883324854, -0.098340798646028377, -0.098390556162879894, -0.098440313433755033, -0.098490070458529824, -0.098539827237078992, -0.098589583769278594, +-0.098639340055004243, -0.098689096094131970, -0.098738851886536527, -0.098788607432093958, -0.098838362730680307, -0.098888117782170298, -0.098937872586440004, -0.098987627143365023, +-0.099037381452821427, -0.099087135514683927, -0.099136889328828595, -0.099186642895131030, -0.099236396213467304, -0.099286149283712141, -0.099335902105741614, -0.099385654679431334, +-0.099435407004657347, -0.099485159081294405, -0.099534910909218566, -0.099584662488305900, -0.099634413818431120, -0.099684164899470323, -0.099733915731299097, -0.099783666313793540, +-0.099833416646828363, -0.099883166730279652, -0.099932916564023019, -0.099982666147934537, -0.100032415481888940, -0.100082164565762330, -0.100131913399430280, -0.100181661982768900, +-0.100231410315652930, -0.100281158397958430, -0.100330906229561020, -0.100380653810336800, -0.100430401140160510, -0.100480148218908200, -0.100529895046455530, -0.100579641622678570, +-0.100629387947452050, -0.100679134020652070, -0.100728879842154700, -0.100778625411834670, -0.100828370729568100, -0.100878115795230590, -0.100927860608698240, -0.100977605169845790, +-0.101027349478549330, -0.101077093534684480, -0.101126837338127360, -0.101176580888752700, -0.101226324186436580, -0.101276067231054660, -0.101325810022483000, -0.101375552560596400, +-0.101425294845270890, -0.101475036876382150, -0.101524778653806270, -0.101574520177418000, -0.101624261447093430, -0.101674002462708630, -0.101723743224138390, -0.101773483731258800, +-0.101823223983945500, -0.101872963982074590, -0.101922703725520810, -0.101972443214160280, -0.102022182447868630, -0.102071921426521980, -0.102121660149995090, -0.102171398618164040, +-0.102221136830904490, -0.102270874788092550, -0.102320612489602970, -0.102370349935311870, -0.102420087125094890, -0.102469824058828120, -0.102519560736386360, -0.102569297157645710, +-0.102619033322482250, -0.102668769230770760, -0.102718504882387360, -0.102768240277207680, -0.102817975415107860, -0.102867710295962640, -0.102917444919648160, -0.102967179286040060, +-0.103016913395014450, -0.103066647246446120, -0.103116380840211170, -0.103166114176185280, -0.103215847254244530, -0.103265580074263730, -0.103315312636118970, -0.103365044939685930, +-0.103414776984840720, -0.103464508771458140, -0.103514240299414280, -0.103563971568584810, -0.103613702578845860, -0.103663433330072220, -0.103713163822139990, -0.103762894054925280, +-0.103812624028302910, -0.103862353742148970, -0.103912083196339160, -0.103961812390749570, -0.104011541325255020, -0.104061269999731600, -0.104110998414055010, -0.104160726568101370, +-0.104210454461745470, -0.104260182094863430, -0.104309909467330940, -0.104359636579024130, -0.104409363429817770, -0.104459090019588000, -0.104508816348210510, -0.104558542415561420, +-0.104608268221515530, -0.104657993765948980, -0.104707719048737880, -0.104757444069757040, -0.104807168828882590, -0.104856893325990230, -0.104906617560956070, -0.104956341533654920, +-0.105006065243962910, -0.105055788691755750, -0.105105511876909560, -0.105155234799299140, -0.105204957458800640, -0.105254679855289730, -0.105304401988642590, -0.105354123858733980, +-0.105403845465440070, -0.105453566808636550, -0.105503287888199540, -0.105553008704003890, -0.105602729255925700, -0.105652449543841150, -0.105702169567625020, -0.105751889327153460, +-0.105801608822302190, -0.105851328052947320, -0.105901047018963700, -0.105950765720227480, -0.106000484156614320, -0.106050202328000400, -0.106099920234260540, -0.106149637875270870, +-0.106199355250907110, -0.106249072361045400, -0.106298789205560570, -0.106348505784328760, -0.106398222097225700, -0.106447938144127520, -0.106497653924909050, -0.106547369439446440, +-0.106597084687615420, -0.106646799669292120, -0.106696514384351390, -0.106746228832669360, -0.106795943014122210, -0.106845656928584750, -0.106895370575933170, -0.106945083956043140, +-0.106994797068790850, -0.107044509914051120, -0.107094222491700130, -0.107143934801613580, -0.107193646843667630, -0.107243358617737110, -0.107293070123698210, -0.107342781361426620, +-0.107392492330798530, -0.107442203031688760, -0.107491913463973490, -0.107541623627528430, -0.107591333522229770, -0.107641043147952320, -0.107690752504572260, -0.107740461591965760, +-0.107790170410007670, -0.107839878958574160, -0.107889587237540940, -0.107939295246784210, -0.107989002986178780, -0.108038710455600860, -0.108088417654926150, -0.108138124584030840, +-0.108187831242789790, -0.108237537631079140, -0.108287243748774660, -0.108336949595752520, -0.108386655171887540, -0.108436360477055950, -0.108486065511133430, -0.108535770273996220, +-0.108585474765519120, -0.108635178985578340, -0.108684882934050060, -0.108734586610809120, -0.108784290015731710, -0.108833993148693590, -0.108883696009570920, -0.108933398598238570, +-0.108983100914572720, -0.109032802958449120, -0.109082504729743970, -0.109132206228332100, -0.109181907454089720, -0.109231608406892570, -0.109281309086616830, -0.109331009493137380, +-0.109380709626330420, -0.109430409486071680, -0.109480109072237350, -0.109529808384702320, -0.109579507423342760, -0.109629206188034430, -0.109678904678653530, -0.109728602895074930, +-0.109778300837174810, -0.109827998504829380, -0.109877695897913520, -0.109927393016303430, -0.109977089859874840, -0.110026786428503970, -0.110076482722065700, -0.110126178740436220, +-0.110175874483491300, -0.110225569951107120, -0.110275265143158580, -0.110324960059521890, -0.110374654700072780, -0.110424349064687480, -0.110474043153240870, -0.110523736965609160, +-0.110573430501668540, -0.110623123761293910, -0.110672816744361450, -0.110722509450746960, -0.110772201880326650, -0.110821894032975390, -0.110871585908569380, -0.110921277506984410, +-0.110970968828096710, -0.111020659871781110, -0.111070350637913890, -0.111120041126370780, -0.111169731337028010, -0.111219421269760480, -0.111269110924444390, -0.111318800300955510, +-0.111368489399170090, -0.111418178218962990, -0.111467866760210450, -0.111517555022788250, -0.111567243006572600, -0.111616930711438400, -0.111666618137261860, -0.111716305283919240, +-0.111765992151285400, -0.111815678739236590, -0.111865365047648570, -0.111915051076397580, -0.111964736825358540, -0.112014422294407640, -0.112064107483420690, -0.112113792392273910, +-0.112163477020842210, -0.112213161369001820, -0.112262845436628520, -0.112312529223598560, -0.112362212729786830, -0.112411895955069560, -0.112461578899322550, -0.112511261562422040, +-0.112560943944242940, -0.112610626044661470, -0.112660307863553450, -0.112709989400795090, -0.112759670656261320, -0.112809351629828370, -0.112859032321372480, -0.112908712730768570, +-0.112958392857892890, -0.113008072702621210, -0.113057752264829790, -0.113107431544393550, -0.113157110541188740, -0.113206789255091160, -0.113256467685977020, -0.113306145833721300, +-0.113355823698200200, -0.113405501279289540, -0.113455178576865570, -0.113504855590803210, -0.113554532320978730, -0.113604208767268340, -0.113653884929546990, -0.113703560807690940, +-0.113753236401575970, -0.113802911711078360, -0.113852586736073030, -0.113902261476436230, -0.113951935932043780, -0.114001610102771930, -0.114051283988495610, -0.114100957589091080, +-0.114150630904434160, -0.114200303934401100, -0.114249976678866840, -0.114299649137707640, -0.114349321310799320, -0.114398993198018130, -0.114448664799239030, -0.114498336114338270, +-0.114548007143191650, -0.114597677885675460, -0.114647348341664640, -0.114697018511035450, -0.114746688393664140, -0.114796357989425680, -0.114846027298196330, -0.114895696319851900, +-0.114945365054268680, -0.114995033501321610, -0.115044701660886940, -0.115094369532840520, -0.115144037117058630, -0.115193704413416200, -0.115243371421789500, -0.115293038142054380, +-0.115342704574087100, -0.115392370717762640, -0.115442036572957220, -0.115491702139546720, -0.115541367417407420, -0.115591032406414250, -0.115640697106443490, -0.115690361517371440, +-0.115740025639073050, -0.115789689471424580, -0.115839353014301900, -0.115889016267581270, -0.115938679231137670, -0.115988341904847360, -0.116038004288586200, -0.116087666382230480, +-0.116137328185655130, -0.116186989698736480, -0.116236650921350340, -0.116286311853373030, -0.116335972494679490, -0.116385632845146010, -0.116435292904648460, -0.116484952673063120, +-0.116534612150264960, -0.116584271336130270, -0.116633930230535320, -0.116683588833355130, -0.116733247144465950, -0.116782905163743660, -0.116832562891064560, -0.116882220326303590, +-0.116931877469337090, -0.116981534320040880, -0.117031190878291280, -0.117080847143963260, -0.117130503116933130, -0.117180158797076740, -0.117229814184270390, -0.117279469278389060, +-0.117329124079309070, -0.117378778586906260, -0.117428432801056940, -0.117478086721636110, -0.117527740348520050, -0.117577393681584650, -0.117627046720706200, -0.117676699465759700, +-0.117726351916621450, -0.117776004073167750, -0.117825655935273610, -0.117875307502815330, -0.117924958775668780, -0.117974609753710270, -0.118024260436814800, -0.118073910824858670, +-0.118123560917717770, -0.118173210715268410, -0.118222860217385580, -0.118272509423945600, -0.118322158334824350, -0.118371806949898140, -0.118421455269041960, -0.118471103292132160, +-0.118520751019044610, -0.118570398449655600, -0.118620045583840160, -0.118669692421474610, -0.118719338962435280, -0.118768985206597150, -0.118818631153836550, -0.118868276804029380, +-0.118917922157051960, -0.118967567212779290, -0.119017211971087710, -0.119066856431853090, -0.119116500594951780, -0.119166144460258780, -0.119215788027650400, -0.119265431297002570, +-0.119315074268191590, -0.119364716941092490, -0.119414359315581590, -0.119464001391534800, -0.119513643168828440, -0.119563284647337540, -0.119612925826938430, -0.119662566707507440, +-0.119712207288919580, -0.119761847571051220, -0.119811487553778240, -0.119861127236976980, -0.119910766620522450, -0.119960405704291020, -0.120010044488158570, -0.120059682972001450, +-0.120109321155694670, -0.120158959039114610, -0.120208596622137130, -0.120258233904638610, -0.120307870886494070, -0.120357507567579850, -0.120407143947771860, -0.120456780026946440, +-0.120506415804978630, -0.120556051281744790, -0.120605686457120830, -0.120655321330983080, -0.120704955903206600, -0.120754590173667710, -0.120804224142242800, -0.120853857808806880, +-0.120903491173236330, -0.120953124235407040, -0.121002756995195390, -0.121052389452476390, -0.121102021607126420, -0.121151653459021420, -0.121201285008037700, -0.121250916254050340, +-0.121300547196935680, -0.121350177836569660, -0.121399808172828640, -0.121449438205587650, -0.121499067934723070, -0.121548697360110810, -0.121598326481627260, -0.121647955299147440, +-0.121697583812547750, -0.121747212021704530, -0.121796839926492840, -0.121846467526789060, -0.121896094822469090, -0.121945721813409350, -0.121995348499484850, -0.122044974880571980, +-0.122094600956546660, -0.122144226727285300, -0.122193852192662920, -0.122243477352555920, -0.122293102206840210, -0.122342726755392190, -0.122392350998086930, -0.122441974934800770, +-0.122491598565409680, -0.122541221889790040, -0.122590844907816910, -0.122640467619366660, -0.122690090024315680, -0.122739712122539040, -0.122789333913913110, -0.122838955398313850, +-0.122888576575617640, -0.122938197445699550, -0.122987818008435970, -0.123037438263702840, -0.123087058211376550, -0.123136677851332190, -0.123186297183446130, -0.123235916207594320, +-0.123285534923653170, -0.123335153331497730, -0.123384771431004420, -0.123434389222049160, -0.123484006704508390, -0.123533623878257160, -0.123583240743171850, -0.123632857299128460, +-0.123682473546003370, -0.123732089483671630, -0.123781705112009700, -0.123831320430893930, -0.123880935440199420, -0.123930550139802560, -0.123980164529579340, -0.124029778609406140, +-0.124079392379158060, -0.124129005838711490, -0.124178618987942410, -0.124228231826727240, -0.124277844354941030, -0.124327456572460210, -0.124377068479160760, -0.124426680074919070, +-0.124476291359610230, -0.124525902333110690, -0.124575512995296820, -0.124625123346043710, -0.124674733385227820, -0.124724343112725080, -0.124773952528411920, -0.124823561632163450, +-0.124873170423856070, -0.124922778903365760, -0.124972387070568940, -0.125021994925340720, -0.125071602467557520, -0.125121209697095310, -0.125170816613830500, -0.125220423217638240, +-0.125270029508394890, -0.125319635485976490, -0.125369241150259410, -0.125418846501118810, -0.125468451538431110, -0.125518056262072240, -0.125567660671918710, -0.125617264767845570, +-0.125666868549729280, -0.125716472017446230, -0.125766075170871570, -0.125815678009881750, -0.125865280534352700, -0.125914882744160910, -0.125964484639181470, -0.126014086219290810, +-0.126063687484364940, -0.126113288434280300, -0.126162889068911990, -0.126212489388136450, -0.126262089391829670, -0.126311689079868140, -0.126361288452126940, -0.126410887508482530, +-0.126460486248810870, -0.126510084672988470, -0.126559682780890390, -0.126609280572393120, -0.126658878047372640, -0.126708475205705410, -0.126758072047266550, -0.126807668571932510, +-0.126857264779579730, -0.126906860670083360, -0.126956456243319830, -0.127006051499165160, -0.127055646437495810, -0.127105241058186910, -0.127154835361114880, -0.127204429346155780, +-0.127254023013186060, -0.127303616362080820, -0.127353209392716550, -0.127402802104969240, -0.127452394498715400, -0.127501986573830110, -0.127551578330189850, -0.127601169767671080, +-0.127650760886148960, -0.127700351685499920, -0.127749942165600040, -0.127799532326325710, -0.127849122167552120, -0.127898711689155730, -0.127948300891012560, -0.127997889772999060, +-0.128047478334990390, -0.128097066576863040, -0.128146654498493050, -0.128196242099756830, -0.128245829380529560, -0.128295416340687750, -0.128345002980107370, -0.128394589298664930, +-0.128444175296235590, -0.128493760972695800, -0.128543346327921610, -0.128592931361789480, -0.128642516074174600, -0.128692100464953410, -0.128741684534002420, -0.128791268281196800, +-0.128840851706412990, -0.128890434809527050, -0.128940017590415460, -0.128989600048953410, -0.129039182185017340, -0.129088763998483290, -0.129138345489227810, -0.129187926657126000, +-0.129237507502054400, -0.129287088023889000, -0.129336668222506330, -0.129386248097781570, -0.129435827649591190, -0.129485406877811210, -0.129534985782318170, -0.129584564362987240, +-0.129634142619694890, -0.129683720552317170, -0.129733298160730590, -0.129782875444810320, -0.129832452404432890, -0.129882029039474740, -0.129931605349811100, -0.129981181335318440, +-0.130030756995872830, -0.130080332331350750, -0.130129907341627410, -0.130179482026579310, -0.130229056386082480, -0.130278630420013470, -0.130328204128247440, -0.130377777510660900, +-0.130427350567129920, -0.130476923297530990, -0.130526495701739330, -0.130576067779631410, -0.130625639531083780, -0.130675210955971590, -0.130724782054171400, -0.130774352825559240, +-0.130823923270011630, -0.130873493387403780, -0.130923063177612210, -0.130972632640512980, -0.131022201775982590, -0.131071770583896270, -0.131121339064130510, -0.131170907216561410, +-0.131220475041065490, -0.131270042537517920, -0.131319609705795260, -0.131369176545773570, -0.131418743057329400, -0.131468309240337890, -0.131517875094675660, -0.131567440620218690, +-0.131617005816843600, -0.131666570684425530, -0.131716135222841040, -0.131765699431966670, -0.131815263311677590, -0.131864826861850360, -0.131914390082361050, -0.131963952973086220, +-0.132013515533901060, -0.132063077764682120, -0.132112639665305480, -0.132162201235647670, -0.132211762475583940, -0.132261323384990780, -0.132310883963744320, -0.132360444211721110, +-0.132410004128796330, -0.132459563714846550, -0.132509122969748290, -0.132558681893376770, -0.132608240485608570, -0.132657798746319750, -0.132707356675386440, -0.132756914272685180, +-0.132806471538091220, -0.132856028471481040, -0.132905585072731260, -0.132955141341717040, -0.133004697278315010, -0.133054252882401220, -0.133103808153852230, -0.133153363092543280, +-0.133202917698350940, -0.133252471971151280, -0.133302025910820880, -0.133351579517235000, -0.133401132790270160, -0.133450685729802480, -0.133500238335708540, -0.133549790607863570, +-0.133599342546144110, -0.133648894150426720, -0.133698445420586680, -0.133747996356500500, -0.133797546958044360, -0.133847097225094770, -0.133896647157527000, -0.133946196755217630, +-0.133995746018042760, -0.134045294945878940, -0.134094843538601460, -0.134144391796086890, -0.134193939718211310, -0.134243487304851330, -0.134293034555882210, -0.134342581471180500, +-0.134392128050622310, -0.134441674294084270, -0.134491220201441580, -0.134540765772570870, -0.134590311007348220, -0.134639855905650250, -0.134689400467352170, -0.134738944692330610, +-0.134788488580462130, -0.134838032131621990, -0.134887575345686770, -0.134937118222532600, -0.134986660762036080, -0.135036202964072480, -0.135085744828518340, -0.135135286355249880, +-0.135184827544143630, -0.135234368395074860, -0.135283908907920160, -0.135333449082555710, -0.135382988918858080, -0.135432528416702530, -0.135482067575965650, -0.135531606396524030, +-0.135581144878252980, -0.135630683021029070, -0.135680220824728440, -0.135729758289227260, -0.135779295414402120, -0.135828832200128310, -0.135878368646282420, -0.135927904752741050, +-0.135977440519379460, -0.136026975946074300, -0.136076511032701660, -0.136126045779138200, -0.136175580185259220, -0.136225114250941250, -0.136274647976060510, -0.136324181360493570, +-0.136373714404115750, -0.136423247106803650, -0.136472779468433420, -0.136522311488881690, -0.136571843168023730, -0.136621374505736190, -0.136670905501895620, -0.136720436156377360, +-0.136769966469058010, -0.136819496439813750, -0.136869026068521190, -0.136918555355055620, -0.136968084299293660, -0.137017612901111500, -0.137067141160385740, -0.137116669076991690, +-0.137166196650805950, -0.137215723881704720, -0.137265250769564640, -0.137314777314260980, -0.137364303515670390, -0.137413829373669030, -0.137463354888133550, -0.137512880058939220, +-0.137562404885962690, -0.137611929369080180, -0.137661453508168250, -0.137710977303102280, -0.137760500753758840, -0.137810023860014590, -0.137859546621744850, -0.137909069038826240, +-0.137958591111134980, -0.138008112838547640, -0.138057634220939610, -0.138107155258187480, -0.138156675950167480, -0.138206196296756210, -0.138255716297829010, -0.138305235953262520, +-0.138354755262932950, -0.138404274226716920, -0.138453792844489780, -0.138503311116128150, -0.138552829041508670, -0.138602346620506690, -0.138651863852998850, -0.138701380738861350, +-0.138750897277970820, -0.138800413470202640, -0.138849929315433380, -0.138899444813539330, -0.138948959964397100, -0.138998474767882020, -0.139047989223870770, -0.139097503332239550, +-0.139147017092865010, -0.139196530505622470, -0.139246043570388610, -0.139295556287039630, -0.139345068655452240, -0.139394580675501700, -0.139444092347064730, -0.139493603670017510, +-0.139543114644236720, -0.139592625269597730, -0.139642135545977150, -0.139691645473251690, -0.139741155051296670, -0.139790664279988760, -0.139840173159204190, -0.139889681688819630, +-0.139939189868710400, -0.139988697698753220, -0.140038205178824320, -0.140087712308800290, -0.140137219088556590, -0.140186725517969820, -0.140236231596916230, -0.140285737325272520, +-0.140335242702914000, -0.140384747729717400, -0.140434252405558930, -0.140483756730315270, -0.140533260703861770, -0.140582764326075110, -0.140632267596831530, -0.140681770516007750, +-0.140731273083479070, -0.140780775299122250, -0.140830277162813900, -0.140879778674429440, -0.140929279833845510, -0.140978780640938380, -0.141028281095584770, -0.141077781197659980, +-0.141127280947040770, -0.141176780343603340, -0.141226279387224400, -0.141275778077779330, -0.141325276415144810, -0.141374774399197070, -0.141424272029812860, -0.141473769306867560, +-0.141523266230237780, -0.141572762799800300, -0.141622259015430490, -0.141671754877005010, -0.141721250384400140, -0.141770745537492610, -0.141820240336157750, -0.141869734780272320, +-0.141919228869712530, -0.141968722604355110, -0.142018215984075440, -0.142067709008750240, -0.142117201678255760, -0.142166693992468700, -0.142216185951264510, -0.142265677554519830, +-0.142315168802110950, -0.142364659693914600, -0.142414150229806140, -0.142463640409662310, -0.142513130233359400, -0.142562619700774080, -0.142612108811781800, -0.142661597566259210, +-0.142711085964083080, -0.142760574005128820, -0.142810061689273100, -0.142859549016392220, -0.142909035986362930, -0.142958522599060610, -0.143008008854361960, -0.143057494752143300, +-0.143106980292281360, -0.143156465474651500, -0.143205950299130500, -0.143255434765594600, -0.143304918873920580, -0.143354402623983800, -0.143403886015661040, -0.143453369048828550, +-0.143502851723363080, -0.143552334039140030, -0.143601815996036160, -0.143651297593927750, -0.143700778832691530, -0.143750259712202900, -0.143799740232338660, -0.143849220392975490, +-0.143898700193988820, -0.143948179635255410, -0.143997658716651540, -0.144047137438054000, -0.144096615799338130, -0.144146093800380760, -0.144195571441058130, -0.144245048721247020, +-0.144294525640822850, -0.144344002199662370, -0.144393478397641880, -0.144442954234638130, -0.144492429710526560, -0.144541904825183890, -0.144591379578486940, -0.144640853970311070, +-0.144690328000533080, -0.144739801669029280, -0.144789274975676400, -0.144838747920349900, -0.144888220502926520, -0.144937692723282580, -0.144987164581294880, -0.145036636076838810, +-0.145086107209791150, -0.145135577980028210, -0.145185048387426800, -0.145234518431862300, -0.145283988113211500, -0.145333457431350730, -0.145382926386156800, -0.145432394977505070, +-0.145481863205272370, -0.145531331069335000, -0.145580798569569740, -0.145630265705852050, -0.145679732478058710, -0.145729198886066470, -0.145778664929750780, -0.145828130608988440, +-0.145877595923655760, -0.145927060873629550, -0.145976525458785260, -0.146025989678999630, -0.146075453534149020, -0.146124917024110230, -0.146174380148758720, -0.146223842907971250, +-0.146273305301624160, -0.146322767329594230, -0.146372228991756980, -0.146421690287989150, -0.146471151218167530, -0.146520611782167580, -0.146570071979866130, -0.146619531811139460, +-0.146668991275864000, -0.146718450373916480, -0.146767909105172400, -0.146817367469508550, -0.146866825466801710, -0.146916283096927360, -0.146965740359762310, -0.147015197255182940, +-0.147064653783065990, -0.147114109943286970, -0.147163565735722670, -0.147213021160249450, -0.147262476216744130, -0.147311930905082180, -0.147361385225140390, -0.147410839176795150, +-0.147460292759923230, -0.147509745974400170, -0.147559198820102740, -0.147608651296907730, -0.147658103404690650, -0.147707555143328340, -0.147757006512697130, -0.147806457512673850, +-0.147855908143133980, -0.147905358403954330, -0.147954808295011290, -0.148004257816181680, -0.148053706967340960, -0.148103155748365990, -0.148152604159133140, -0.148202052199519210, +-0.148251499869399730, -0.148300947168651470, -0.148350394097150840, -0.148399840654774680, -0.148449286841398490, -0.148498732656899060, -0.148548178101152810, -0.148597623174036550, +-0.148647067875425810, -0.148696512205197360, -0.148745956163228110, -0.148795399749393510, -0.148844842963570420, -0.148894285805635210, -0.148943728275464730, -0.148993170372934500, +-0.149042612097921330, -0.149092053450301630, -0.149141494429952250, -0.149190935036748680, -0.149240375270567800, -0.149289815131285950, -0.149339254618780000, -0.149388693732925510, +-0.149438132473599240, -0.149487570840678120, -0.149537008834037620, -0.149586446453554590, -0.149635883699105440, -0.149685320570566580, -0.149734757067814860, -0.149784193190725830, +-0.149833628939176290, -0.149883064313043130, -0.149932499312201870, -0.149981933936529370, -0.150031368185902010, -0.150080802060196690, -0.150130235559288920, -0.150179668683055570, +-0.150229101431373020, -0.150278533804118180, -0.150327965801166560, -0.150377397422395030, -0.150426828667680010, -0.150476259536898360, -0.150525690029925610, -0.150575120146638620, +-0.150624549886914290, -0.150673979250628140, -0.150723408237657060, -0.150772836847877430, -0.150822265081166170, -0.150871692937398800, -0.150921120416452200, -0.150970547518202800, +-0.151019974242527470, -0.151069400589301740, -0.151118826558402530, -0.151168252149706280, -0.151217677363089800, -0.151267102198428700, -0.151316526655599860, -0.151365950734479670, +-0.151415374434945070, -0.151464797756871580, -0.151514220700136090, -0.151563643264615080, -0.151613065450185380, -0.151662487256722570, -0.151711908684103560, -0.151761329732205210, +-0.151810750400903080, -0.151860170690074100, -0.151909590599594690, -0.151959010129341710, -0.152008429279190810, -0.152057848049018810, -0.152107266438702200, -0.152156684448117860, +-0.152206102077141360, -0.152255519325649620, -0.152304936193519090, -0.152354352680626640, -0.152403768786847860, -0.152453184512059690, -0.152502599856138980, -0.152552014818961330, +-0.152601429400403640, -0.152650843600342370, -0.152700257418654450, -0.152749670855215430, -0.152799083909902270, -0.152848496582591360, -0.152897908873159650, -0.152947320781482740, +-0.152996732307437540, -0.153046143450900480, -0.153095554211748530, -0.153144964589857240, -0.153194374585103540, -0.153243784197363900, -0.153293193426515260, -0.153342602272433180, +-0.153392010734994590, -0.153441418814075970, -0.153490826509554260, -0.153540233821305020, -0.153589640749205230, -0.153639047293131740, -0.153688453452960230, -0.153737859228567560, +-0.153787264619830250, -0.153836669626625210, -0.153886074248828050, -0.153935478486315720, -0.153984882338964710, -0.154034285806651900, -0.154083688889252970, -0.154133091586644790, +-0.154182493898703890, -0.154231895825307190, -0.154281297366330340, -0.154330698521650210, -0.154380099291143350, -0.154429499674686670, -0.154478899672155810, -0.154528299283427710, +-0.154577698508378850, -0.154627097346886180, -0.154676495798825340, -0.154725893864073260, -0.154775291542506880, -0.154824688834001830, -0.154874085738435060, -0.154923482255683060, +-0.154972878385622820, -0.155022274128129940, -0.155071669483081350, -0.155121064450353620, -0.155170459029823630, -0.155219853221367080, -0.155269247024860890, -0.155318640440181590, +-0.155368033467206120, -0.155417426105810140, -0.155466818355870590, -0.155516210217264420, -0.155565601689867300, -0.155614992773556170, -0.155664383468207550, -0.155713773773698410, +-0.155763163689904420, -0.155812553216702510, -0.155861942353969190, -0.155911331101581480, -0.155960719459415000, -0.156010107427346720, -0.156059495005253180, -0.156108882193011330, +-0.156158268990496840, -0.156207655397586690, -0.156257041414157390, -0.156306427040085900, -0.156355812275247950, -0.156405197119520440, -0.156454581572779940, -0.156503965634903430, +-0.156553349305766560, -0.156602732585246350, -0.156652115473219690, -0.156701497969562340, -0.156750880074151250, -0.156800261786862930, -0.156849643107574430, -0.156899024036161380, +-0.156948404572500750, -0.156997784716469110, -0.157047164467943450, -0.157096543826799440, -0.157145922792914060, -0.157195301366163890, -0.157244679546425900, -0.157294057333575790, +-0.157343434727490520, -0.157392811728046670, -0.157442188335121220, -0.157491564548589870, -0.157540940368329580, -0.157590315794216980, -0.157639690826129000, -0.157689065463941370, +-0.157738439707531070, -0.157787813556775100, -0.157837187011549170, -0.157886560071730270, -0.157935932737194970, -0.157985305007820290, -0.158034676883481880, -0.158084048364056820, +-0.158133419449421610, -0.158182790139453300, -0.158232160434027550, -0.158281530333021420, -0.158330899836311460, -0.158380268943774720, -0.158429637655286840, -0.158479005970724840, +-0.158528373889965800, -0.158577741412885390, -0.158627108539360600, -0.158676475269268060, -0.158725841602484760, -0.158775207538886440, -0.158824573078350070, -0.158873938220752270, +-0.158923302965970070, -0.158972667313879180, -0.159022031264356630, -0.159071394817279000, -0.159120757972523310, -0.159170120729965280, -0.159219483089481970, -0.159268845050949930, +-0.159318206614246230, -0.159367567779246570, -0.159416928545827980, -0.159466288913867080, -0.159515648883240910, -0.159565008453825150, -0.159614367625496880, -0.159663726398133140, +-0.159713084771609640, -0.159762442745803420, -0.159811800320591110, -0.159861157495849730, -0.159910514271455030, -0.159959870647284040, -0.160009226623213350, -0.160058582199120060, +-0.160107937374879860, -0.160157292150369810, -0.160206646525466540, -0.160256000500047100, -0.160305354073987190, -0.160354707247163940, -0.160404060019454310, -0.160453412390734130, +-0.160502764360880400, -0.160552115929769780, -0.160601467097278850, -0.160650817863284700, -0.160700168227663060, -0.160749518190291010, -0.160798867751045600, -0.160848216909802580, +-0.160897565666439010, -0.160946914020831560, -0.160996261972857210, -0.161045609522391800, -0.161094956669312370, -0.161144303413495530, -0.161193649754818370, -0.161242995693156670, +-0.161292341228387450, -0.161341686360387400, -0.161391031089033580, -0.161440375414201730, -0.161489719335768940, -0.161539062853612280, -0.161588405967607540, -0.161637748677631780, +-0.161687090983561650, -0.161736432885274230, -0.161785774382645300, -0.161835115475551930, -0.161884456163870760, -0.161933796447478880, -0.161983136326252110, -0.162032475800067470, +-0.162081814868801630, -0.162131153532331710, -0.162180491790533450, -0.162229829643284000, -0.162279167090459950, -0.162328504131938420, -0.162377840767595180, -0.162427176997307350, +-0.162476512820951570, -0.162525848238404960, -0.162575183249543290, -0.162624517854243640, -0.162673852052383160, -0.162723185843837600, -0.162772519228484100, -0.162821852206199270, +-0.162871184776860270, -0.162920516940342850, -0.162969848696524140, -0.163019180045280820, -0.163068510986489970, -0.163117841520027420, -0.163167171645770270, -0.163216501363595200, +-0.163265830673379300, -0.163315159574998370, -0.163364488068329570, -0.163413816153249960, -0.163463143829635390, -0.163512471097362940, -0.163561797956309350, -0.163611124406351230, +-0.163660450447365740, -0.163709776079228710, -0.163759101301817230, -0.163808426115008430, -0.163857750518678120, -0.163907074512703450, -0.163956398096961080, -0.164005721271328150, +-0.164055044035680500, -0.164104366389895230, -0.164153688333849020, -0.164203009867419060, -0.164252330990481120, -0.164301651702912360, -0.164350972004589480, -0.164400291895389600, +-0.164449611375188540, -0.164498930443863460, -0.164548249101291480, -0.164597567347348460, -0.164646885181911510, -0.164696202604857370, -0.164745519616063120, -0.164794836215404670, +-0.164844152402759130, -0.164893468178003180, -0.164942783541014020, -0.164992098491667460, -0.165041413029840630, -0.165090727155410290, -0.165140040868253570, -0.165189354168246320, +-0.165238667055265660, -0.165287979529188330, -0.165337291589891520, -0.165386603237251020, -0.165435914471144030, -0.165485225291447240, -0.165534535698037830, -0.165583845690791630, +-0.165633155269585830, -0.165682464434297570, -0.165731773184802730, -0.165781081520978420, -0.165830389442701450, -0.165879696949848910, -0.165929004042296710, -0.165978310719922000, +-0.166027616982601520, -0.166076922830212410, -0.166126228262630570, -0.166175533279733170, -0.166224837881396910, -0.166274142067499020, -0.166323445837915310, -0.166372749192523010, +-0.166422052131199260, -0.166471354653819960, -0.166520656760262260, -0.166569958450402900, -0.166619259724119120, -0.166668560581286730, -0.166717861021782930, -0.166767161045484500, +-0.166816460652268600, -0.166865759842011100, -0.166915058614589190, -0.166964356969879660, -0.167013654907759660, -0.167062952428105090, -0.167112249530793150, -0.167161546215700560, +-0.167210842482704570, -0.167260138331681020, -0.167309433762507120, -0.167358728775059670, -0.167408023369215790, -0.167457317544851440, -0.167506611301843800, -0.167555904640070060, +-0.167605197559406120, -0.167654490059729180, -0.167703782140916020, -0.167753073802843850, -0.167802365045388540, -0.167851655868427350, -0.167900946271836990, -0.167950236255494710, +-0.167999525819276410, -0.168048814963059290, -0.168098103686720120, -0.168147391990136150, -0.168196679873183240, -0.168245967335738660, -0.168295254377679140, -0.168344540998881910, +-0.168393827199222910, -0.168443112978579330, -0.168492398336828000, -0.168541683273846080, -0.168590967789509520, -0.168640251883695550, -0.168689535556281380, -0.168738818807142920, +-0.168788101636157430, -0.168837384043201700, -0.168886666028152920, -0.168935947590887060, -0.168985228731281300, -0.169034509449212500, -0.169083789744557840, -0.169133069617193290, +-0.169182349066996060, -0.169231628093842960, -0.169280906697611230, -0.169330184878176780, -0.169379462635416870, -0.169428739969208740, -0.169478016879428340, -0.169527293365952870, +-0.169576569428659200, -0.169625845067424510, -0.169675120282124810, -0.169724395072637290, -0.169773669438838760, -0.169822943380606520, -0.169872216897816480, -0.169921489990345900, +-0.169970762658071570, -0.170020034900870810, -0.170069306718619500, -0.170118578111194930, -0.170167849078473900, -0.170217119620333700, -0.170266389736650260, -0.170315659427300870, +-0.170364928692162300, -0.170414197531111870, -0.170463465944025480, -0.170512733930780450, -0.170562001491254000, -0.170611268625322140, -0.170660535332862070, -0.170709801613750680, +-0.170759067467865230, -0.170808332895081680, -0.170857597895277270, -0.170906862468328900, -0.170956126614113770, -0.171005390332507920, -0.171054653623388590, -0.171103916486632620, +-0.171153178922117290, -0.171202440929718590, -0.171251702509313790, -0.171300963660779710, -0.171350224383993670, -0.171399484678831650, -0.171448744545170890, -0.171498003982888280, +-0.171547262991861100, -0.171596521571965310, -0.171645779723078230, -0.171695037445077160, -0.171744294737838030, -0.171793551601238160, -0.171842808035154420, -0.171892064039464110, +-0.171941319614043190, -0.171990574758768970, -0.172039829473518310, -0.172089083758168530, -0.172138337612595590, -0.172187591036676800, -0.172236844030289050, -0.172286096593309620, +-0.172335348725614510, -0.172384600427081040, -0.172433851697586490, -0.172483102537006850, -0.172532352945219490, -0.172581602922101260, -0.172630852467529430, -0.172680101581380030, +-0.172729350263530400, -0.172778598513857380, -0.172827846332238300, -0.172877093718549170, -0.172926340672667290, -0.172975587194469590, -0.173024833283833330, -0.173074078940634590, +-0.173123324164750620, -0.173172568956058340, -0.173221813314435090, -0.173271057239756860, -0.173320300731900970, -0.173369543790744350, -0.173418786416164320, -0.173468028608036840, +-0.173517270366239320, -0.173566511690649070, -0.173615752581142090, -0.173664993037595750, -0.173714233059886900, -0.173763472647892910, -0.173812711801489800, -0.173861950520554920, +-0.173911188804965170, -0.173960426654597880, -0.174009664069329080, -0.174058901049036100, -0.174108137593595890, -0.174157373702885780, -0.174206609376781780, -0.174255844615161280, +-0.174305079417901160, -0.174354313784878760, -0.174403547715970160, -0.174452781211052680, -0.174502014270003250, -0.174551246892699240, -0.174600479079016660, -0.174649710828832880, +-0.174698942142025250, -0.174748173018469840, -0.174797403458043980, -0.174846633460624650, -0.174895863026089140, -0.174945092154313560, -0.174994320845175220, -0.175043549098551100, +-0.175092776914318540, -0.175142004292353600, -0.175191231232533630, -0.175240457734735620, -0.175289683798836890, -0.175338909424713500, -0.175388134612242840, -0.175437359361302280, +-0.175486583671767890, -0.175535807543517050, -0.175585030976426660, -0.175634253970374160, -0.175683476525235580, -0.175732698640888310, -0.175781920317209290, -0.175831141554075920, +-0.175880362351364230, -0.175929582708951650, -0.175978802626715110, -0.176028022104532000, -0.176077241142278410, -0.176126459739831710, -0.176175677897068870, -0.176224895613867260, +-0.176274112890102970, -0.176323329725653400, -0.176372546120395520, -0.176421762074206710, -0.176470977586963030, -0.176520192658541940, -0.176569407288820780, -0.176618621477675680, +-0.176667835224984030, -0.176717048530622780, -0.176766261394469350, -0.176815473816399840, -0.176864685796291640, -0.176913897334021710, -0.176963108429467500, -0.177012319082505060, +-0.177061529293011830, -0.177110739060864770, -0.177159948385941320, -0.177209157268117530, -0.177258365707270880, -0.177307573703278740, -0.177356781256017230, -0.177405988365363750, +-0.177455195031195310, -0.177504401253388870, -0.177553607031821880, -0.177602812366370460, -0.177652017256911960, -0.177701221703323890, -0.177750425705482330, -0.177799629263264670, +-0.177848832376547970, -0.177898035045209620, -0.177947237269125730, -0.177996439048173780, -0.178045640382230700, -0.178094841271173950, -0.178144041714879690, -0.178193241713225310, +-0.178242441266087820, -0.178291640373344690, -0.178340839034872000, -0.178390037250547220, -0.178439235020247780, -0.178488432343849810, -0.178537629221230760, -0.178586825652267630, +-0.178636021636837890, -0.178685217174817670, -0.178734412266084390, -0.178783606910515090, -0.178832801107987190, -0.178881994858376860, -0.178931188161561530, -0.178980381017418260, +-0.179029573425824460, -0.179078765386656290, -0.179127956899791190, -0.179177147965106230, -0.179226338582478800, -0.179275528751785120, -0.179324718472902600, -0.179373907745708300, +-0.179423096570079650, -0.179472284945892820, -0.179521472873025280, -0.179570660351354520, -0.179619847380756650, -0.179669033961109170, -0.179718220092289080, -0.179767405774173910, +-0.179816591006639770, -0.179865775789564140, -0.179914960122824100, -0.179964144006297090, -0.180013327439859290, -0.180062510423388140, -0.180111692956760740, -0.180160875039854530, +-0.180210056672545720, -0.180259237854711730, -0.180308418586230120, -0.180357598866977000, -0.180406778696829890, -0.180455958075665860, -0.180505137003362350, -0.180554315479795560, +-0.180603493504842980, -0.180652671078381650, -0.180701848200289120, -0.180751024870441510, -0.180800201088716330, -0.180849376854990640, -0.180898552169141970, -0.180947727031046470, +-0.180996901440581640, -0.181046075397624600, -0.181095248902052780, -0.181144421953742390, -0.181193594552570950, -0.181242766698415550, -0.181291938391153620, -0.181341109630661440, +-0.181390280416816490, -0.181439450749496270, -0.181488620628576990, -0.181537790053936170, -0.181586959025450860, -0.181636127542998570, -0.181685295606455550, -0.181734463215699280, +-0.181783630370606850, -0.181832797071055790, -0.181881963316922300, -0.181931129108083900, -0.181980294444417680, -0.182029459325801170, -0.182078623752110540, -0.182127787723223380, +-0.182176951239016750, -0.182226114299368160, -0.182275276904153880, -0.182324439053251380, -0.182373600746537800, -0.182422761983890620, -0.182471922765186150, -0.182521083090301850, +-0.182570242959115250, -0.182619402371502650, -0.182668561327341520, -0.182717719826509000, -0.182766877868882600, -0.182816035454338580, -0.182865192582754470, -0.182914349254007370, +-0.182963505467974850, -0.183012661224533140, -0.183061816523559740, -0.183110971364931820, -0.183160125748526910, -0.183209279674221260, -0.183258433141892390, -0.183307586151417870, +-0.183356738702673970, -0.183405890795538210, -0.183455042429887720, -0.183504193605600080, -0.183553344322551490, -0.183602494580619560, -0.183651644379681400, -0.183700793719614540, +-0.183749942600295290, -0.183799091021601160, -0.183848238983409300, -0.183897386485597310, -0.183946533528041380, -0.183995680110619150, -0.184044826233207700, -0.184093971895684600, +-0.184143117097926160, -0.184192261839809940, -0.184241406121213040, -0.184290549942013080, -0.184339693302086300, -0.184388836201310270, -0.184437978639562600, -0.184487120616719570, +-0.184536262132658700, -0.184585403187257190, -0.184634543780392620, -0.184683683911941260, -0.184732823581780670, -0.184781962789788030, -0.184831101535840920, -0.184880239819815610, +-0.184929377641589700, -0.184978515001040340, -0.185027651898045150, -0.185076788332480400, -0.185125924304223670, -0.185175059813152100, -0.185224194859143350, -0.185273329442073670, +-0.185322463561820670, -0.185371597218261520, -0.185420730411273800, -0.185469863140733800, -0.185518995406519170, -0.185568127208507460, -0.185617258546575010, -0.185666389420599430, +-0.185715519830457860, -0.185764649776027940, -0.185813779257185950, -0.185862908273809500, -0.185912036825775780, -0.185961164912962440, -0.186010292535245730, -0.186059419692503280, +-0.186108546384612270, -0.186157672611450360, -0.186206798372893810, -0.186255923668820270, -0.186305048499107370, -0.186354172863631400, -0.186403296762269990, -0.186452420194900350, +-0.186501543161400110, -0.186550665661645550, -0.186599787695514360, -0.186648909262883660, -0.186698030363631140, -0.186747150997633120, -0.186796271164767210, -0.186845390864910620, +-0.186894510097941000, -0.186943628863734670, -0.186992747162169240, -0.187041864993121980, -0.187090982356470450, -0.187140099252091070, -0.187189215679861410, -0.187238331639658750, +-0.187287447131360670, -0.187336562154843540, -0.187385676709984990, -0.187434790796662700, -0.187483904414752990, -0.187533017564133540, -0.187582130244681510, -0.187631242456274630, +-0.187680354198789170, -0.187729465472102870, -0.187778576276092870, -0.187827686610636870, -0.187876796475611230, -0.187925905870893580, -0.187975014796361200, -0.188024123251891690, +-0.188073231237361440, -0.188122338752648110, -0.188171445797628960, -0.188220552372181600, -0.188269658476182430, -0.188318764109509120, -0.188367869272038880, -0.188416973963649430, +-0.188466078184217100, -0.188515181933619570, -0.188564285211734520, -0.188613388018438330, -0.188662490353608660, -0.188711592217122780, -0.188760693608858330, -0.188809794528691730, +-0.188858894976500660, -0.188907994952162320, -0.188957094455554450, -0.189006193486553400, -0.189055292045036850, -0.189104390130882090, -0.189153487743966790, -0.189202584884167330, +-0.189251681551361410, -0.189300777745426720, -0.189349873466239630, -0.189398968713677900, -0.189448063487618720, -0.189497157787939820, -0.189546251614517600, -0.189595344967229740, +-0.189644437845953530, -0.189693530250566650, -0.189742622180945510, -0.189791713636967810, -0.189840804618510830, -0.189889895125452260, -0.189938985157668550, -0.189988074715037340, +-0.190037163797435990, -0.190086252404742110, -0.190135340536832200, -0.190184428193583940, -0.190233515374874600, -0.190282602080581900, -0.190331688310582280, -0.190380774064753430, +-0.190429859342973070, -0.190478944145117620, -0.190528028471064840, -0.190577112320691970, -0.190626195693876760, -0.190675278590495630, -0.190724361010426280, -0.190773442953546060, +-0.190822524419732630, -0.190871605408862500, -0.190920685920813320, -0.190969765955462440, -0.191018845512687580, -0.191067924592365160, -0.191117003194372940, -0.191166081318588640, +-0.191215158964888720, -0.191264236133150880, -0.191313312823252450, -0.191362389035070750, -0.191411464768483530, -0.191460540023367180, -0.191509614799599490, -0.191558689097058200, +-0.191607762915619760, -0.191656836255161890, -0.191705909115561960, -0.191754981496697670, -0.191804053398445500, -0.191853124820683200, -0.191902195763288070, -0.191951266226137920, +-0.192000336209109140, -0.192049405712079540, -0.192098474734926420, -0.192147543277527530, -0.192196611339759350, -0.192245678921499660, -0.192294746022626200, -0.192343812643015450, +-0.192392878782545160, -0.192441944441092670, -0.192491009618535740, -0.192540074314750870, -0.192589138529615820, -0.192638202263007900, -0.192687265514804920, -0.192736328284883350, +-0.192785390573120940, -0.192834452379395090, -0.192883513703583500, -0.192932574545562730, -0.192981634905210500, -0.193030694782404200, -0.193079754177021580, -0.193128813088939140, +-0.193177871518034670, -0.193226929464185540, -0.193275986927269490, -0.193325043907163070, -0.193374100403744030, -0.193423156416890170, -0.193472211946477980, -0.193521266992385250, +-0.193570321554489390, -0.193619375632668120, -0.193668429226798000, -0.193717482336756790, -0.193766534962421880, -0.193815587103671080, -0.193864638760380880, -0.193913689932429080, +-0.193962740619693040, -0.194011790822050580, -0.194060840539378220, -0.194109889771553770, -0.194158938518455000, -0.194207986779958490, -0.194257034555941980, -0.194306081846282900, +-0.194355128650858610, -0.194404174969546930, -0.194453220802224380, -0.194502266148768780, -0.194551311009057950, -0.194600355382968410, -0.194649399270377970, -0.194698442671164040, +-0.194747485585204440, -0.194796528012375710, -0.194845569952555640, -0.194894611405621640, -0.194943652371451560, -0.194992692849921910, -0.195041732840910500, -0.195090772344294780, +-0.195139811359952590, -0.195188849887760390, -0.195237887927596110, -0.195286925479337510, -0.195335962542861170, -0.195384999118044940, -0.195434035204766210, -0.195483070802902810, +-0.195532105912331310, -0.195581140532929550, -0.195630174664574910, -0.195679208307145300, -0.195728241460517230, -0.195777274124568550, -0.195826306299176660, -0.195875337984219470, +-0.195924369179573510, -0.195973399885116610, -0.196022430100726200, -0.196071459826280160, -0.196120489061655050, -0.196169517806728700, -0.196218546061378560, -0.196267573825482490, +-0.196316601098917050, -0.196365627881560120, -0.196414654173289540, -0.196463679973981900, -0.196512705283515030, -0.196561730101766420, -0.196610754428613920, -0.196659778263934100, +-0.196708801607604840, -0.196757824459503570, -0.196806846819508160, -0.196855868687495220, -0.196904890063342610, -0.196953910946927770, -0.197002931338128570, -0.197051951236821620, +-0.197100970642884790, -0.197149989556195980, -0.197199007976631730, -0.197248025904070010, -0.197297043338388180, -0.197346060279464190, -0.197395076727174630, -0.197444092681397340, +-0.197493108142009850, -0.197542123108890020, -0.197591137581914460, -0.197640151560961040, -0.197689165045907250, -0.197738178036630960, -0.197787190533008810, -0.197836202534918680, +-0.197885214042238050, -0.197934225054844810, -0.197983235572615570, -0.198032245595428260, -0.198081255123160330, -0.198130264155689680, -0.198179272692892950, -0.198228280734648040, +-0.198277288280832850, -0.198326295331324010, -0.198375301885999440, -0.198424307944736590, -0.198473313507413430, -0.198522318573906560, -0.198571323144093870, -0.198620327217852890, +-0.198669330795061520, -0.198718333875596370, -0.198767336459335420, -0.198816338546156100, -0.198865340135936370, -0.198914341228552870, -0.198963341823883500, -0.199012341921805810, +-0.199061341522197680, -0.199110340624935740, -0.199159339229897980, -0.199208337336961860, -0.199257334946005310, -0.199306332056905010, -0.199355328669538890, -0.199404324783784860, +-0.199453320399519600, -0.199502315516621040, -0.199551310134966690, -0.199600304254434480, -0.199649297874901100, -0.199698290996244480, -0.199747283618342100, -0.199796275741071980, +-0.199845267364310710, -0.199894258487936290, -0.199943249111826200, -0.199992239235858430, -0.200041228859909660, -0.200090217983857790, -0.200139206607580810, -0.200188194730955370, +-0.200237182353859460, -0.200286169476170590, -0.200335156097766730, -0.200384142218524550, -0.200433127838322010, -0.200482112957036630, -0.200531097574546430, -0.200580081690728050, +-0.200629065305459460, -0.200678048418618190, -0.200727031030082270, -0.200776013139728320, -0.200824994747434320, -0.200873975853077870, -0.200922956456536880, -0.200971936557688080, +-0.201020916156409430, -0.201069895252578510, -0.201118873846073270, -0.201167851936770420, -0.201216829524547920, -0.201265806609283810, -0.201314783190854720, -0.201363759269138690, +-0.201412734844013260, -0.201461709915356420, -0.201510684483044880, -0.201559658546956620, -0.201608632106969220, -0.201657605162960690, -0.201706577714807680, -0.201755549762388240, +-0.201804521305579940, -0.201853492344260750, -0.201902462878307400, -0.201951432907597900, -0.202000402432009810, -0.202049371451421160, -0.202098339965708640, -0.202147307974750280, +-0.202196275478423640, -0.202245242476606750, -0.202294208969176300, -0.202343174956010340, -0.202392140436986890, -0.202441105411982650, -0.202490069880875640, -0.202539033843543460, +-0.202587997299864130, -0.202636960249714370, -0.202685922692972200, -0.202734884629515220, -0.202783846059221480, -0.202832806981967710, -0.202881767397631890, -0.202930727306091660, +-0.202979686707225050, -0.203028645600908770, -0.203077603987020900, -0.203126561865439450, -0.203175519236041160, -0.203224476098704060, -0.203273432453305790, -0.203322388299724350, +-0.203371343637836520, -0.203420298467520330, -0.203469252788653380, -0.203518206601113750, -0.203567159904778170, -0.203616112699524680, -0.203665064985230900, -0.203714016761774920, +-0.203762968029033460, -0.203811918786884570, -0.203860869035205870, -0.203909818773875460, -0.203958768002770050, -0.204007716721767710, -0.204056664930746090, -0.204105612629583240, +-0.204154559818155920, -0.204203506496342220, -0.204252452664020170, -0.204301398321066560, -0.204350343467359450, -0.204399288102776490, -0.204448232227195740, -0.204497175840493980, +-0.204546118942549260, -0.204595061533239280, -0.204644003612442060, -0.204692945180034390, -0.204741886235894370, -0.204790826779899630, -0.204839766811928250, -0.204888706331857020, +-0.204937645339564020, -0.204986583834927350, -0.205035521817823780, -0.205084459288131400, -0.205133396245727910, -0.205182332690490880, -0.205231268622298480, -0.205280204041027480, +-0.205329138946555970, -0.205378073338762010, -0.205427007217522470, -0.205475940582715400, -0.205524873434218490, -0.205573805771909810, -0.205622737595666180, -0.205671668905365730, +-0.205720599700886100, -0.205769529982105400, -0.205818459748900450, -0.205867389001149340, -0.205916317738729760, -0.205965245961519800, -0.206014173669396310, -0.206063100862237390, +-0.206112027539921170, -0.206160953702324400, -0.206209879349325280, -0.206258804480801440, -0.206307729096631060, -0.206356653196690890, -0.206405576780859110, -0.206454499849013370, +-0.206503422401031810, -0.206552344436791270, -0.206601265956169870, -0.206650186959045300, -0.206699107445295710, -0.206748027414797920, -0.206796946867430030, -0.206845865803069790, +-0.206894784221595320, -0.206943702122883460, -0.206992619506812360, -0.207041536373259670, -0.207090452722103610, -0.207139368553220990, -0.207188283866489910, -0.207237198661788580, +-0.207286112938993820, -0.207335026697983760, -0.207383939938636160, -0.207432852660829110, -0.207481764864439530, -0.207530676549345510, -0.207579587715424810, -0.207628498362555590, +-0.207677408490614670, -0.207726318099480220, -0.207775227189029990, -0.207824135759142130, -0.207873043809693490, -0.207921951340562240, -0.207970858351626570, -0.208019764842763300, +-0.208068670813850610, -0.208117576264766240, -0.208166481195387940, -0.208215385605593880, -0.208264289495260910, -0.208313192864267220, -0.208362095712490980, -0.208410998039809060, +-0.208459899846099670, -0.208508801131240510, -0.208557701895109780, -0.208606602137584360, -0.208655501858542450, -0.208704401057861750, -0.208753299735420530, -0.208802197891095610, +-0.208851095524765190, -0.208899992636307010, -0.208948889225599320, -0.208997785292518940, -0.209046680836944110, -0.209095575858753020, -0.209144470357822550, -0.209193364334030910, +-0.209242257787255860, -0.209291150717375580, -0.209340043124267020, -0.209388935007808340, -0.209437826367877310, -0.209486717204352160, -0.209535607517109780, -0.209584497306028380, +-0.209633386570985740, -0.209682275311860070, -0.209731163528528270, -0.209780051220868570, -0.209828938388758740, -0.209877825032077000, -0.209926711150700250, -0.209975596744506720, +-0.210024481813374210, -0.210073366357180940, -0.210122250375803820, -0.210171133869121060, -0.210220016837010890, -0.210268899279350270, -0.210317781196017380, -0.210366662586890050, +-0.210415543451846490, -0.210464423790763630, -0.210513303603519750, -0.210562182889992570, -0.210611061650060380, -0.210659939883600100, -0.210708817590489980, -0.210757694770607800, +-0.210806571423831830, -0.210855447550038990, -0.210904323149107540, -0.210953198220915710, -0.211002072765340440, -0.211050946782260000, -0.211099820271552190, -0.211148693233095260, +-0.211197565666766170, -0.211246437572443190, -0.211295308950004090, -0.211344179799327150, -0.211393050120289330, -0.211441919912768870, -0.211490789176643630, -0.211539657911791860, +-0.211588526118090480, -0.211637393795417790, -0.211686260943651640, -0.211735127562670270, -0.211783993652350620, -0.211832859212571000, -0.211881724243209250, -0.211930588744143610, +-0.211979452715251070, -0.212028316156409880, -0.212077179067498340, -0.212126041448393420, -0.212174903298973400, -0.212223764619116130, -0.212272625408699870, -0.212321485667601620, +-0.212370345395699660, -0.212419204592871810, -0.212468063258996390, -0.212516921393950400, -0.212565778997612090, -0.212614636069859340, -0.212663492610570440, -0.212712348619622380, +-0.212761204096893420, -0.212810059042261470, -0.212858913455604790, -0.212907767336800420, -0.212956620685726600, -0.213005473502261260, -0.213054325786282640, -0.213103177537667800, +-0.213152028756294990, -0.213200879442042580, -0.213249729594787500, -0.213298579214408120, -0.213347428300782270, -0.213396276853788290, -0.213445124873303190, -0.213493972359205280, +-0.213542819311372420, -0.213591665729682970, -0.213640511614013930, -0.213689356964243570, -0.213738201780249850, -0.213787046061911040, -0.213835889809104200, -0.213884733021707630, +-0.213933575699599670, -0.213982417842657310, -0.214031259450758930, -0.214080100523782400, -0.214128941061606040, -0.214177781064106900, -0.214226620531163310, -0.214275459462653170, +-0.214324297858454800, -0.214373135718445270, -0.214421973042502880, -0.214470809830505590, -0.214519646082331680, -0.214568481797858230, -0.214617316976963600, -0.214666151619525620, +-0.214714985725422750, -0.214763819294531950, -0.214812652326731630, -0.214861484821899650, -0.214910316779914400, -0.214959148200652930, -0.215007979083993610, -0.215056809429814750, +-0.215105639237993420, -0.215154468508408030, -0.215203297240936430, -0.215252125435457050, -0.215300953091846910, -0.215349780209984380, -0.215398606789747430, -0.215447432831014360, +-0.215496258333662290, -0.215545083297569580, -0.215593907722614160, -0.215642731608674390, -0.215691554955627360, -0.215740377763351480, -0.215789200031724610, -0.215838021760625190, +-0.215886842949930300, -0.215935663599518270, -0.215984483709267090, -0.216033303279055150, -0.216082122308759510, -0.216130940798258560, -0.216179758747430700, -0.216228576156153010, +-0.216277393024303880, -0.216326209351761250, -0.216375025138403540, -0.216423840384107840, -0.216472655088752520, -0.216521469252215580, -0.216570282874375410, -0.216619095955109090, +-0.216667908494295010, -0.216716720491811180, -0.216765531947535980, -0.216814342861346520, -0.216863153233121190, -0.216911963062738440, -0.216960772350075330, -0.217009581095010280, +-0.217058389297421270, -0.217107196957186750, -0.217156004074183780, -0.217204810648290810, -0.217253616679385810, -0.217302422167347210, -0.217351227112052130, -0.217400031513378940, +-0.217448835371205710, -0.217497638685410830, -0.217546441455871400, -0.217595243682465860, -0.217644045365072230, -0.217692846503568900, -0.217741647097833060, -0.217790447147743070, +-0.217839246653176940, -0.217888045614013180, -0.217936844030128830, -0.217985641901402400, -0.218034439227712290, -0.218083236008935640, -0.218132032244950900, -0.218180827935636090, +-0.218229623080869630, -0.218278417680528690, -0.218327211734491710, -0.218376005242636670, -0.218424798204842090, -0.218473590620985060, -0.218522382490944050, -0.218571173814597090, +-0.218619964591822650, -0.218668754822497840, -0.218717544506501160, -0.218766333643711040, -0.218815122234004650, -0.218863910277260460, -0.218912697773356480, -0.218961484722170780, +-0.219010271123581790, -0.219059056977466690, -0.219107842283703950, -0.219156627042172040, -0.219205411252748120, -0.219254194915310670, -0.219302978029737750, -0.219351760595907800, +-0.219400542613698010, -0.219449324082986900, -0.219498105003652440, -0.219546885375573180, -0.219595665198626250, -0.219644444472690160, -0.219693223197642980, -0.219742001373363170, +-0.219790778999727900, -0.219839556076615710, -0.219888332603905030, -0.219937108581473110, -0.219985884009198410, -0.220034658886959030, -0.220083433214633390, -0.220132206992098760, +-0.220180980219233600, -0.220229752895916010, -0.220278525022024470, -0.220327296597436160, -0.220376067622029630, -0.220424838095682920, -0.220473608018274540, -0.220522377389681720, +-0.220571146209782960, -0.220619914478456330, -0.220668682195580330, -0.220717449361032210, -0.220766215974690480, -0.220814982036433180, -0.220863747546138880, -0.220912512503684770, +-0.220961276908949370, -0.221010040761811240, -0.221058804062147530, -0.221107566809836840, -0.221156329004757230, -0.221205090646787230, -0.221253851735804090, -0.221302612271686290, +-0.221351372254311980, -0.221400131683559650, -0.221448890559306580, -0.221497648881431250, -0.221546406649811840, -0.221595163864326820, -0.221643920524853460, -0.221692676631270320, +-0.221741432183455910, -0.221790187181287480, -0.221838941624643570, -0.221887695513402320, -0.221936448847441850, -0.221985201626640680, -0.222033953850876040, -0.222082705520026540, +-0.222131456633970710, -0.222180207192585830, -0.222228957195750390, -0.222277706643342590, -0.222326455535240940, -0.222375203871322730, -0.222423951651466500, -0.222472698875550380, +-0.222521445543452960, -0.222570191655051490, -0.222618937210224550, -0.222667682208850250, -0.222716426650807180, -0.222765170535972640, -0.222813913864225140, -0.222862656635443300, +-0.222911398849504390, -0.222960140506286990, -0.223008881605669200, -0.223057622147529670, -0.223106362131745640, -0.223155101558195730, -0.223203840426758030, -0.223252578737311190, +-0.223301316489732480, -0.223350053683900460, -0.223398790319693290, -0.223447526396989590, -0.223496261915666660, -0.223544996875603060, -0.223593731276676950, -0.223642465118766980, +-0.223691198401750390, -0.223739931125505800, -0.223788663289911400, -0.223837394894845780, -0.223886125940186230, -0.223934856425811350, -0.223983586351599790, -0.224032315717428790, +-0.224081044523177040, -0.224129772768722670, -0.224178500453944300, -0.224227227578719240, -0.224275954142926110, -0.224324680146443110, -0.224373405589148840, -0.224422130470920610, +-0.224470854791637060, -0.224519578551176350, -0.224568301749417170, -0.224617024386236760, -0.224665746461513830, -0.224714467975126950, -0.224763188926953460, -0.224811909316872010, +-0.224860629144760770, -0.224909348410498390, -0.224958067113962240, -0.225006785255030900, -0.225055502833582580, -0.225104219849495970, -0.225152936302648350, -0.225201652192918410, +-0.225250367520184320, -0.225299082284324740, -0.225347796485217050, -0.225396510122739840, -0.225445223196771380, -0.225493935707190260, -0.225542647653873910, -0.225591359036700910, +-0.225640069855549520, -0.225688780110298390, -0.225737489800824890, -0.225786198927007660, -0.225834907488725340, -0.225883615485855340, -0.225932322918276310, -0.225981029785866460, +-0.226029736088504490, -0.226078441826067710, -0.226127146998434860, -0.226175851605484120, -0.226224555647094180, -0.226273259123142450, -0.226321962033507550, -0.226370664378067740, +-0.226419366156701720, -0.226468067369286820, -0.226516768015701780, -0.226565468095824810, -0.226614167609534590, -0.226662866556708560, -0.226711564937225330, -0.226760262750963200, +-0.226808959997800820, -0.226857656677615650, -0.226906352790286310, -0.226955048335691520, -0.227003743313708680, -0.227052437724216490, -0.227101131567093190, -0.227149824842217520, +-0.227198517549466850, -0.227247209688719860, -0.227295901259854880, -0.227344592262750560, -0.227393282697284320, -0.227441972563334870, -0.227490661860780510, -0.227539350589499920, +-0.227588038749370530, -0.227636726340271020, -0.227685413362080150, -0.227734099814675290, -0.227782785697935200, -0.227831471011738150, -0.227880155755962850, -0.227928839930486710, +-0.227977523535188490, -0.228026206569946460, -0.228074889034639350, -0.228123570929144560, -0.228172252253340870, -0.228220933007106550, -0.228269613190320330, -0.228318292802859620, +-0.228366971844603190, -0.228415650315429320, -0.228464328215216780, -0.228513005543842990, -0.228561682301186670, -0.228610358487126130, -0.228659034101540150, -0.228707709144306160, +-0.228756383615302870, -0.228805057514409080, -0.228853730841502210, -0.228902403596461000, -0.228951075779163770, -0.228999747389489310, -0.229048418427315020, -0.229097088892519700, +-0.229145758784981670, -0.229194428104579660, -0.229243096851191150, -0.229291765024694890, -0.229340432624969250, -0.229389099651892940, -0.229437766105343440, -0.229486431985199520, +-0.229535097291339560, -0.229583762023642250, -0.229632426181985120, -0.229681089766246900, -0.229729752776305970, -0.229778415212041120, -0.229827077073329780, -0.229875738360050740, +-0.229924399072082790, -0.229973059209303390, -0.230021718771591360, -0.230070377758825050, -0.230119036170883200, -0.230167694007643340, -0.230216351268984270, -0.230265007954784270, +-0.230313664064922210, -0.230362319599275560, -0.230410974557723110, -0.230459628940143210, -0.230508282746414690, -0.230556935976415020, -0.230605588630023030, -0.230654240707117490, +-0.230702892207575890, -0.230751543131277080, -0.230800193478099410, -0.230848843247921710, -0.230897492440621440, -0.230946141056077440, -0.230994789094168100, -0.231043436554772220, +-0.231092083437767330, -0.231140729743032210, -0.231189375470445270, -0.231238020619885330, -0.231286665191229900, -0.231335309184357800, -0.231383952599147430, -0.231432595435477620, +-0.231481237693225870, -0.231529879372271040, -0.231578520472491530, -0.231627160993766120, -0.231675800935972400, -0.231724440298989170, -0.231773079082695260, -0.231821717286968240, +-0.231870354911686890, -0.231918991956729690, -0.231967628421975440, -0.232016264307301680, -0.232064899612587250, -0.232113534337710590, -0.232162168482550500, -0.232210802046984580, +-0.232259435030891640, -0.232308067434150110, -0.232356699256638850, -0.232405330498235420, -0.232453961158818670, -0.232502591238267000, -0.232551220736459290, -0.232599849653273070, +-0.232648477988587260, -0.232697105742280250, -0.232745732914230900, -0.232794359504316790, -0.232842985512416780, -0.232891610938409740, -0.232940235782173240, -0.232988860043586150, +-0.233037483722526920, -0.233086106818874400, -0.233134729332506170, -0.233183351263301140, -0.233231972611137710, -0.233280593375894800, -0.233329213557449950, -0.233377833155682110, +-0.233426452170469640, -0.233475070601691510, -0.233523688449225250, -0.233572305712949760, -0.233620922392743960, -0.233669538488485430, -0.233718154000053020, -0.233766768927325260, +-0.233815383270180980, -0.233863997028497830, -0.233912610202154670, -0.233961222791029990, -0.234009834795002700, -0.234058446213950390, -0.234107057047751950, -0.234155667296285870, +-0.234204276959431050, -0.234252886037065120, -0.234301494529066960, -0.234350102435315070, -0.234398709755688360, -0.234447316490064450, -0.234495922638322220, -0.234544528200340220, +-0.234593133175997310, -0.234641737565171150, -0.234690341367740610, -0.234738944583584690, -0.234787547212580970, -0.234836149254608360, -0.234884750709545400, -0.234933351577270990, +-0.234981951857662770, -0.235030551550599650, -0.235079150655960160, -0.235127749173623250, -0.235176347103466520, -0.235224944445368900, -0.235273541199208960, -0.235322137364865570, +-0.235370732942216420, -0.235419327931140430, -0.235467922331516530, -0.235516516143222420, -0.235565109366137030, -0.235613702000138840, -0.235662294045106410, -0.235710885500918680, +-0.235759476367453290, -0.235808066644589230, -0.235856656332205400, -0.235905245430179540, -0.235953833938390530, -0.236002421856716970, -0.236051009185037770, -0.236099595923230600, +-0.236148182071174470, -0.236196767628747860, -0.236245352595829770, -0.236293936972297860, -0.236342520758031140, -0.236391103952908080, -0.236439686556807720, -0.236488268569607700, +-0.236536849991187010, -0.236585430821424610, -0.236634011060198210, -0.236682590707386810, -0.236731169762868900, -0.236779748226523510, -0.236828326098228320, -0.236876903377862320, +-0.236925480065304060, -0.236974056160432520, -0.237022631663125400, -0.237071206573261720, -0.237119780890720030, -0.237168354615379300, -0.237216927747117250, -0.237265500285812890, +-0.237314072231344790, -0.237362643583591940, -0.237411214342432040, -0.237459784507744100, -0.237508354079406710, -0.237556923057298860, -0.237605491441298280, -0.237654059231283940, +-0.237702626427134910, -0.237751193028728880, -0.237799759035944860, -0.237848324448661470, -0.237896889266757670, -0.237945453490111230, -0.237994017118601160, -0.238042580152106030, +-0.238091142590504870, -0.238139704433675460, -0.238188265681496760, -0.238236826333847410, -0.238285386390606420, -0.238333945851651550, -0.238382504716861790, -0.238431062986116220, +-0.238479620659292540, -0.238528177736269830, -0.238576734216926660, -0.238625290101142080, -0.238673845388793880, -0.238722400079761030, -0.238770954173922190, -0.238819507671156390, +-0.238868060571341410, -0.238916612874356280, -0.238965164580079600, -0.239013715688390440, -0.239062266199166570, -0.239110816112287020, -0.239159365427630440, -0.239207914145075890, +-0.239256462264501090, -0.239305009785785170, -0.239353556708806700, -0.239402103033444780, -0.239450648759577170, -0.239499193887082930, -0.239547738415841150, -0.239596282345729610, +-0.239644825676627340, -0.239693368408413020, -0.239741910540965690, -0.239790452074163160, -0.239838993007884500, -0.239887533342008350, -0.239936073076413820, -0.239984612210978670, +-0.240033150745581960, -0.240081688680102410, -0.240130226014419050, -0.240178762748409710, -0.240227298881953430, -0.240275834414928950, -0.240324369347215290, -0.240372903678690270, +-0.240421437409233000, -0.240469970538722130, -0.240518503067036760, -0.240567034994054710, -0.240615566319655080, -0.240664097043716970, -0.240712627166118160, -0.240761156686737810, +-0.240809685605454540, -0.240858213922147510, -0.240906741636694510, -0.240955268748974660, -0.241003795258866640, -0.241052321166249560, -0.241100846471001220, -0.241149371173000780, +-0.241197895272126930, -0.241246418768258750, -0.241294941661274100, -0.241343463951052110, -0.241391985637471880, -0.241440506720411260, -0.241489027199749350, -0.241537547075364900, +-0.241586066347137000, -0.241634585014943500, -0.241683103078663560, -0.241731620538175850, -0.241780137393359520, -0.241828653644092400, -0.241877169290253660, -0.241925684331721990, +-0.241974198768376560, -0.242022712600095170, -0.242071225826757020, -0.242119738448240810, -0.242168250464425670, -0.242216761875189480, -0.242265272680411370, -0.242313782879970100, +-0.242362292473744800, -0.242410801461613340, -0.242459309843454870, -0.242507817619148550, -0.242556324788572280, -0.242604831351605180, -0.242653337308125990, -0.242701842658013920, +-0.242750347401146790, -0.242798851537403800, -0.242847355066663660, -0.242895857988805590, -0.242944360303707420, -0.242992862011248370, -0.243041363111307170, -0.243089863603762970, +-0.243138363488493690, -0.243186862765378510, -0.243235361434296170, -0.243283859495125850, -0.243332356947745470, -0.243380853792034170, -0.243429350027870750, -0.243477845655134390, +-0.243526340673702960, -0.243574835083455700, -0.243623328884271790, -0.243671822076029110, -0.243720314658606880, -0.243768806631883880, -0.243817297995739280, -0.243865788750050990, +-0.243914278894698240, -0.243962768429559800, -0.244011257354514870, -0.244059745669441360, -0.244108233374218500, -0.244156720468725050, -0.244205206952840200, -0.244253692826441940, +-0.244302178089409430, -0.244350662741621930, -0.244399146782957290, -0.244447630213294830, -0.244496113032513280, -0.244544595240491880, -0.244593076837108570, -0.244641557822242560, +-0.244690038195772650, -0.244738517957578060, -0.244786997107536760, -0.244835475645527990, -0.244883953571430500, -0.244932430885123560, -0.244980907586485140, -0.245029383675394420, +-0.245077859151730250, -0.245126334015371870, -0.245174808266197230, -0.245223281904085540, -0.245271754928915680, -0.245320227340566850, -0.245368699138917010, -0.245417170323845440, +-0.245465640895231370, -0.245514110852952770, -0.245562580196888870, -0.245611048926918540, -0.245659517042921020, -0.245707984544774270, -0.245756451432357550, -0.245804917705549740, +-0.245853383364230020, -0.245901848408276450, -0.245950312837568240, -0.245998776651984250, -0.246047239851403730, -0.246095702435704690, -0.246144164404766410, -0.246192625758467700, +-0.246241086496687880, -0.246289546619304880, -0.246338006126198050, -0.246386465017246180, -0.246434923292328580, -0.246483380951323240, -0.246531837994109470, -0.246580294420566530, +-0.246628750230572400, -0.246677205424006420, -0.246725660000747420, -0.246774113960674670, -0.246822567303666250, -0.246871020029601370, -0.246919472138358960, -0.246967923629818310, +-0.247016374503857410, -0.247064824760355600, -0.247113274399191700, -0.247161723420245030, -0.247210171823393670, -0.247258619608516830, -0.247307066775493910, -0.247355513324202860, +-0.247403959254523050, -0.247452404566333330, -0.247500849259512600, -0.247549293333940180, -0.247597736789494090, -0.247646179626053680, -0.247694621843498250, -0.247743063441705800, +-0.247791504420555720, -0.247839944779926880, -0.247888384519698610, -0.247936823639748920, -0.247985262139957200, -0.248033700020202750, -0.248082137280363600, -0.248130573920319120, +-0.248179009939948210, -0.248227445339129770, -0.248275880117743150, -0.248324314275666400, -0.248372747812778880, -0.248421180728959880, -0.248469613024087540, -0.248518044698041150, +-0.248566475750699650, -0.248614906181942400, -0.248663335991647440, -0.248711765179694150, -0.248760193745961420, -0.248808621690328660, -0.248857049012673910, -0.248905475712876550, +-0.248953901790815500, -0.249002327246370110, -0.249050752079418490, -0.249099176289839960, -0.249147599877513950, -0.249196022842318510, -0.249244445184133000, -0.249292866902836360, +-0.249341287998307570, -0.249389708470425990, -0.249438128319069720, -0.249486547544118110, -0.249534966145450590, -0.249583384122945200, -0.249631801476481370, -0.249680218205938030, +-0.249728634311194550, -0.249777049792129090, -0.249825464648620960, -0.249873878880549210, -0.249922292487793190, -0.249970705470230980, -0.250019117827742050, -0.250067529560205280, +-0.250115940667500150, -0.250164351149504690, -0.250212761006098410, -0.250261170237160660, -0.250309578842569490, -0.250357986822204450, -0.250406394175944400, -0.250454800903668340, +-0.250503207005255750, -0.250551612480584720, -0.250600017329534630, -0.250648421551984910, -0.250696825147813720, -0.250745228116900480, -0.250793630459124170, -0.250842032174364240, +-0.250890433262498770, -0.250938833723407200, -0.250987233556969000, -0.251035632763062290, -0.251084031341566480, -0.251132429292360630, -0.251180826615323650, -0.251229223310335090, +-0.251277619377273000, -0.251326014816016910, -0.251374409626446140, -0.251422803808438950, -0.251471197361874790, -0.251519590286632570, -0.251567982582591830, -0.251616374249630740, +-0.251664765287628660, -0.251713155696464690, -0.251761545476018260, -0.251809934626167580, -0.251858323146792020, -0.251906711037770630, -0.251955098298982940, -0.252003484930307050, +-0.252051870931622460, -0.252100256302808580, -0.252148641043743680, -0.252197025154307140, -0.252245408634378050, -0.252293791483835460, -0.252342173702558790, -0.252390555290426310, +-0.252438936247317390, -0.252487316573111580, -0.252535696267687020, -0.252584075330923250, -0.252632453762699270, -0.252680831562894610, -0.252729208731387430, -0.252777585268057270, +-0.252825961172783110, -0.252874336445444440, -0.252922711085919520, -0.252971085094087830, -0.253019458469828480, -0.253067831213020840, -0.253116203323543230, -0.253164574801275080, +-0.253212945646095980, -0.253261315857884030, -0.253309685436518830, -0.253358054381879360, -0.253406422693845220, -0.253454790372294620, -0.253503157417106990, -0.253551523828161480, +-0.253599889605337640, -0.253648254748513600, -0.253696619257568920, -0.253744983132382750, -0.253793346372834520, -0.253841708978802430, -0.253890070950166140, -0.253938432286805070, +-0.253986792988597500, -0.254035153055422960, -0.254083512487160550, -0.254131871283689300, -0.254180229444888880, -0.254228586970637380, -0.254276943860814450, -0.254325300115299640, +-0.254373655733971080, -0.254422010716708390, -0.254470365063390660, -0.254518718773897480, -0.254567071848107060, -0.254615424285899010, -0.254663776087152350, -0.254712127251746630, +-0.254760477779560230, -0.254808827670472640, -0.254857176924362940, -0.254905525541110790, -0.254953873520594340, -0.255002220862693200, -0.255050567567286950, -0.255098913634253910, +-0.255147259063473520, -0.255195603854824980, -0.255243948008187450, -0.255292291523440520, -0.255340634400462340, -0.255388976639132630, -0.255437318239330910, -0.255485659200935470, +-0.255533999523825880, -0.255582339207881260, -0.255630678252981250, -0.255679016659004110, -0.255727354425829450, -0.255775691553336350, -0.255824028041404530, -0.255872363889912140, +-0.255920699098738880, -0.255969033667763860, -0.256017367596866660, -0.256065700885925620, -0.256114033534820370, -0.256162365543430410, -0.256210696911634170, -0.256259027639311130, +-0.256307357726340560, -0.256355687172601990, -0.256404015977973800, -0.256452344142335530, -0.256500671665566450, -0.256548998547546090, -0.256597324788152840, -0.256645650387266220, +-0.256693975344765510, -0.256742299660530300, -0.256790623334438920, -0.256838946366370950, -0.256887268756206040, -0.256935590503822590, -0.256983911609100110, -0.257032232071917830, +-0.257080551892155010, -0.257128871069691230, -0.257177189604404830, -0.257225507496175450, -0.257273824744882810, -0.257322141350405100, -0.257370457312622040, -0.257418772631412830, +-0.257467087306657180, -0.257515401338233310, -0.257563714726020960, -0.257612027469899360, -0.257660339569748100, -0.257708651025445550, -0.257756961836871360, -0.257805272003904800, +-0.257853581526425460, -0.257901890404311770, -0.257950198637443340, -0.257998506225699810, -0.258046813168959610, -0.258095119467102400, -0.258143425120007370, -0.258191730127553750, +-0.258240034489621300, -0.258288338206088260, -0.258336641276834420, -0.258384943701739420, -0.258433245480681580, -0.258481546613540670, -0.258529847100195890, -0.258578146940526890, +-0.258626446134412100, -0.258674744681731240, -0.258723042582363500, -0.258771339836188550, -0.258819636443084870, -0.258867932402932040, -0.258916227715609400, -0.258964522380996650, +-0.259012816398972170, -0.259061109769415600, -0.259109402492206710, -0.259157694567223870, -0.259205985994346800, -0.259254276773454810, -0.259302566904427490, -0.259350856387143340, +-0.259399145221482110, -0.259447433407322960, -0.259495720944545650, -0.259544007833028610, -0.259592294072651550, -0.259640579663293790, -0.259688864604834980, -0.259737148897153600, +-0.259785432540129370, -0.259833715533641930, -0.259881997877569830, -0.259930279571792660, -0.259978560616189850, -0.260026841010640610, -0.260075120755024700, -0.260123399849220560, +-0.260171678293107940, -0.260219956086566560, -0.260268233229474840, -0.260316509721712550, -0.260364785563158950, -0.260413060753693860, -0.260461335293195650, -0.260509609181544140, +-0.260557882418618600, -0.260606155004298790, -0.260654426938463140, -0.260702698220991400, -0.260750968851762970, -0.260799238830657530, -0.260847508157553530, -0.260895776832330780, +-0.260944044854869050, -0.260992312225046710, -0.261040578942743630, -0.261088845007839130, -0.261137110420212480, -0.261185375179743500, -0.261233639286310660, -0.261281902739793680, +-0.261330165540072430, -0.261378427687025290, -0.261426689180532080, -0.261474950020472160, -0.261523210206725310, -0.261571469739170000, -0.261619728617686010, -0.261667986842152700, +-0.261716244412449890, -0.261764501328455970, -0.261812757590050850, -0.261861013197113800, -0.261909268149524700, -0.261957522447161920, -0.262005776089905380, -0.262054029077634810, +-0.262102281410228790, -0.262150533087567030, -0.262198784109528900, -0.262247034475994290, -0.262295284186841670, -0.262343533241950810, -0.262391781641201140, -0.262440029384472420, +-0.262488276471643240, -0.262536522902593330, -0.262584768677202100, -0.262633013795349420, -0.262681258256913740, -0.262729502061774920, -0.262777745209812790, -0.262825987700905870, +-0.262874229534934000, -0.262922470711776550, -0.262970711231312880, -0.263018951093422880, -0.263067190297985090, -0.263115428844879320, -0.263163666733985390, -0.263211903965181850, +-0.263260140538348620, -0.263308376453364970, -0.263356611710110820, -0.263404846308464720, -0.263453080248306550, -0.263501313529515610, -0.263549546151971850, -0.263597778115553790, +-0.263646009420141270, -0.263694240065613760, -0.263742470051851030, -0.263790699378731730, -0.263838928046135680, -0.263887156053942750, -0.263935383402031490, -0.263983610090281760, +-0.264031836118573000, -0.264080061486784650, -0.264128286194796610, -0.264176510242487390, -0.264224733629736920, -0.264272956356425060, -0.264321178422430300, -0.264369399827632690, +-0.264417620571911540, -0.264465840655146780, -0.264514060077216950, -0.264562278838001990, -0.264610496937381760, -0.264658714375234860, -0.264706931151441170, -0.264755147265880180, +-0.264803362718431300, -0.264851577508974480, -0.264899791637388250, -0.264948005103552540, -0.264996217907347230, -0.265044430048650970, -0.265092641527343630, -0.265140852343304700, +-0.265189062496414050, -0.265237271986550340, -0.265285480813593430, -0.265333688977422820, -0.265381896477918430, -0.265430103314958870, -0.265478309488423990, -0.265526514998193410, +-0.265574719844146930, -0.265622924026163280, -0.265671127544122250, -0.265719330397903850, -0.265767532587386720, -0.265815734112450740, -0.265863934972975450, -0.265912135168840270, +-0.265960334699925250, -0.266008533566108930, -0.266056731767271240, -0.266104929303292210, -0.266153126174050400, -0.266201322379425730, -0.266249517919297850, -0.266297712793546530, +-0.266345907002050520, -0.266394100544689760, -0.266442293421343730, -0.266490485631892370, -0.266538677176214430, -0.266586868054189740, -0.266635058265697940, -0.266683247810618860, +-0.266731436688831260, -0.266779624900215060, -0.266827812444650260, -0.266875999322015440, -0.266924185532190660, -0.266972371075055450, -0.267020555950489680, -0.267068740158372120, +-0.267116923698582700, -0.267165106571000950, -0.267213288775506930, -0.267261470311979220, -0.267309651180297810, -0.267357831380342300, -0.267406010911992620, -0.267454189775127530, +-0.267502367969626900, -0.267550545495370830, -0.267598722352237970, -0.267646898540108260, -0.267695074058861340, -0.267743248908376750, -0.267791423088534430, -0.267839596599213140, +-0.267887769440292860, -0.267935941611653570, -0.267984113113173990, -0.268032283944734160, -0.268080454106213560, -0.268128623597492340, -0.268176792418449050, -0.268224960568963830, +-0.268273128048916230, -0.268321294858186180, -0.268369460996652490, -0.268417626464195150, -0.268465791260693750, -0.268513955386028290, -0.268562118840077520, -0.268610281622721440, +-0.268658443733840120, -0.268706605173312240, -0.268754765941017830, -0.268802926036836530, -0.268851085460647900, -0.268899244212331970, -0.268947402291767500, -0.268995559698834540, +-0.269043716433413130, -0.269091872495381970, -0.269140027884621160, -0.269188182601010240, -0.269236336644429360, -0.269284490014757130, -0.269332642711873740, -0.269380794735658680, +-0.269428946085992100, -0.269477096762752720, -0.269525246765820630, -0.269573396095075360, -0.269621544750397070, -0.269669692731664470, -0.269717840038757650, -0.269765986671556660, +-0.269814132629940310, -0.269862277913788580, -0.269910422522981140, -0.269958566457398130, -0.270006709716918260, -0.270054852301421570, -0.270102994210787820, -0.270151135444896940, +-0.270199276003627810, -0.270247415886860520, -0.270295555094474670, -0.270343693626350360, -0.270391831482366400, -0.270439968662402890, -0.270488105166339870, -0.270536240994056100, +-0.270584376145431790, -0.270632510620346490, -0.270680644418679950, -0.270728777540312220, -0.270776909985122160, -0.270825041752989770, -0.270873172843795200, -0.270921303257417310, +-0.270969432993736100, -0.271017562052631390, -0.271065690433983150, -0.271113818137670270, -0.271161945163572840, -0.271210071511570560, -0.271258197181543480, -0.271306322173370530, +-0.271354446486931740, -0.271402570122106890, -0.271450693078776010, -0.271498815356817970, -0.271546936956112870, -0.271595057876540870, -0.271643178117980830, -0.271691297680312800, +-0.271739416563416550, -0.271787534767171770, -0.271835652291458560, -0.271883769136155810, -0.271931885301143590, -0.271980000786302130, -0.272028115591510240, -0.272076229716648020, +-0.272124343161595280, -0.272172455926232070, -0.272220568010437310, -0.272268679414091110, -0.272316790137073270, -0.272364900179263850, -0.272413009540541710, -0.272461118220787110, +-0.272509226219879660, -0.272557333537699620, -0.272605440174125800, -0.272653546129038360, -0.272701651402317500, -0.272749755993842050, -0.272797859903492260, -0.272845963131147780, +-0.272894065676688890, -0.272942167539994340, -0.272990268720944400, -0.273038369219418760, -0.273086469035297650, -0.273134568168459930, -0.273182666618785820, -0.273230764386155010, +-0.273278861470447720, -0.273326957871542870, -0.273375053589320570, -0.273423148623661130, -0.273471242974443360, -0.273519336641547480, -0.273567429624853250, -0.273615521924240490, +-0.273663613539589290, -0.273711704470778690, -0.273759794717688800, -0.273807884280199860, -0.273855973158190770, -0.273904061351541770, -0.273952148860132580, -0.274000235683843460, +-0.274048321822553340, -0.274096407276142370, -0.274144492044490430, -0.274192576127477660, -0.274240659524983050, -0.274288742236886760, -0.274336824263068660, -0.274384905603408890, +-0.274432986257786450, -0.274481066226081540, -0.274529145508174370, -0.274577224103943920, -0.274625302013270400, -0.274673379236033630, -0.274721455772113430, -0.274769531621390010, +-0.274817606783742340, -0.274865681259050640, -0.274913755047195170, -0.274961828148054870, -0.275009900561510030, -0.275057972287440390, -0.275106043325726300, -0.275154113676246650, +-0.275202183338881750, -0.275250252313511360, -0.275298320600015740, -0.275346388198273890, -0.275394455108166130, -0.275442521329572200, -0.275490586862372380, -0.275538651706445700, +-0.275586715861672380, -0.275634779327932680, -0.275682842105105630, -0.275730904193071450, -0.275778965591710000, -0.275827026300901610, -0.275875086320525150, -0.275923145650461050, +-0.275971204290589080, -0.276019262240789490, -0.276067319500941320, -0.276115376070924900, -0.276163431950619990, -0.276211487139906950, -0.276259541638664730, -0.276307595446773690, +-0.276355648564114100, -0.276403700990564940, -0.276451752726006530, -0.276499803770318740, -0.276547854123381450, -0.276595903785074930, -0.276643952755278260, -0.276692001033871650, +-0.276740048620735530, -0.276788095515748790, -0.276836141718791890, -0.276884187229744560, -0.276932232048487270, -0.276980276174898900, -0.277028319608859870, -0.277076362350250070, +-0.277124404398949750, -0.277172445754838010, -0.277220486417795120, -0.277268526387701050, -0.277316565664436080, -0.277364604247879290, -0.277412642137910950, -0.277460679334411490, +-0.277508715837259830, -0.277556751646336420, -0.277604786761521170, -0.277652821182693910, -0.277700854909735010, -0.277748887942523560, -0.277796920280939890, -0.277844951924864360, +-0.277892982874176020, -0.277941013128755240, -0.277989042688481900, -0.278037071553236370, -0.278085099722897740, -0.278133127197346400, -0.278181153976462650, -0.278229180060125540, +-0.278277205448215550, -0.278325230140612500, -0.278373254137196380, -0.278421277437847560, -0.278469300042445130, -0.278517321950869420, -0.278565343163000860, -0.278613363678718530, +-0.278661383497902760, -0.278709402620433530, -0.278757421046191220, -0.278805438775054980, -0.278853455806905070, -0.278901472141621590, -0.278949487779084790, -0.278997502719173900, +-0.279045516961769210, -0.279093530506750790, -0.279141543353998880, -0.279189555503392750, -0.279237566954812720, -0.279285577708139220, -0.279333587763251290, -0.279381597120029410, +-0.279429605778353570, -0.279477613738103700, -0.279525620999160230, -0.279573627561402250, -0.279621633424710250, -0.279669638588964540, -0.279717643054044340, -0.279765646819830020, +-0.279813649886201610, -0.279861652253039440, -0.279909653920222770, -0.279957654887631970, -0.280005655155146970, -0.280053654722648320, -0.280101653590015100, -0.280149651757127690, +-0.280197649223866200, -0.280245645990111040, -0.280293642055741310, -0.280341637420637450, -0.280389632084679930, -0.280437626047747910, -0.280485619309721880, -0.280533611870481760, +-0.280581603729907590, -0.280629594887879860, -0.280677585344277670, -0.280725575098981550, -0.280773564151871930, -0.280821552502827980, -0.280869540151730160, -0.280917527098458460, +-0.280965513342893380, -0.281013498884914060, -0.281061483724401040, -0.281109467861234700, -0.281157451295294290, -0.281205434026460200, -0.281253416054612570, -0.281301397379631450, +-0.281349378001397200, -0.281397357919789090, -0.281445337134687560, -0.281493315645973130, -0.281541293453525020, -0.281589270557223600, -0.281637246956949080, -0.281685222652581830, +-0.281733197644001120, -0.281781171931087430, -0.281829145513720740, -0.281877118391781700, -0.281925090565149360, -0.281973062033704310, -0.282021032797326650, -0.282069002855896810, +-0.282116972209294050, -0.282164940857398850, -0.282212908800091700, -0.282260876037251860, -0.282308842568759880, -0.282356808394495730, -0.282404773514339570, -0.282452737928171940, +-0.282500701635871990, -0.282548664637320310, -0.282596626932397400, -0.282644588520982510, -0.282692549402956130, -0.282740509578198350, -0.282788469046589770, -0.282836427808009610, +-0.282884385862338330, -0.282932343209456090, -0.282980299849243440, -0.283028255781579590, -0.283076211006345110, -0.283124165523420070, -0.283172119332685100, -0.283220072434019370, +-0.283268024827303510, -0.283315976512417970, -0.283363927489242050, -0.283411877757656310, -0.283459827317540940, -0.283507776168776370, -0.283555724311241930, -0.283603671744818210, +-0.283651618469385300, -0.283699564484823750, -0.283747509791012880, -0.283795454387833270, -0.283843398275164970, -0.283891341452888630, -0.283939283920883470, -0.283987225679030120, +-0.284035166727209190, -0.284083107065299880, -0.284131046693182790, -0.284178985610738070, -0.284226923817845870, -0.284274861314386840, -0.284322798100240190, -0.284370734175286580, +-0.284418669539406530, -0.284466604192479430, -0.284514538134385760, -0.284562471365005790, -0.284610403884220040, -0.284658335691907850, -0.284706266787949860, -0.284754197172226160, +-0.284802126844617420, -0.284850055805002940, -0.284897984053263280, -0.284945911589278680, -0.284993838412929750, -0.285041764524095800, -0.285089689922657430, -0.285137614608495240, +-0.285185538581488600, -0.285233461841518100, -0.285281384388463950, -0.285329306222206370, -0.285377227342625940, -0.285425147749601980, -0.285473067443015200, -0.285520986422746150, +-0.285568904688674190, -0.285616822240680020, -0.285664739078643760, -0.285712655202446100, -0.285760570611966360, -0.285808485307085190, -0.285856399287682810, -0.285904312553639850, +-0.285952225104835700, -0.286000136941150950, -0.286048048062465920, -0.286095958468661150, -0.286143868159616070, -0.286191777135211320, -0.286239685395327570, -0.286287592939844130, +-0.286335499768641750, -0.286383405881600610, -0.286431311278601390, -0.286479215959523470, -0.286527119924247510, -0.286575023172653710, -0.286622925704622830, -0.286670827520034140, +-0.286718728618768460, -0.286766629000705930, -0.286814528665727260, -0.286862427613711830, -0.286910325844540350, -0.286958223358093460, -0.287006120154250590, -0.287054016232892390, +-0.287101911593899200, -0.287149806237151200, -0.287197700162529160, -0.287245593369912400, -0.287293485859181690, -0.287341377630217610, -0.287389268682899710, -0.287437159017108650, +-0.287485048632724730, -0.287532937529628550, -0.287580825707699610, -0.287628713166818650, -0.287676599906865840, -0.287724485927721980, -0.287772371229266520, -0.287820255811380100, +-0.287868139673943040, -0.287916022816836090, -0.287963905239938590, -0.288011786943131400, -0.288059667926295120, -0.288107548189309230, -0.288155427732054490, -0.288203306554411230, +-0.288251184656259650, -0.288299062037480570, -0.288346938697953360, -0.288394814637558840, -0.288442689856177710, -0.288490564353689420, -0.288538438129974710, -0.288586311184913900, +-0.288634183518387770, -0.288682055130275730, -0.288729926020458550, -0.288777796188816550, -0.288825665635230490, -0.288873534359579850, -0.288921402361745410, -0.288969269641607410, +-0.289017136199046680, -0.289065002033942700, -0.289112867146176180, -0.289160731535627940, -0.289208595202177450, -0.289256458145705440, -0.289304320366092330, -0.289352181863218820, +-0.289400042636964390, -0.289447902687209930, -0.289495762013835700, -0.289543620616722450, -0.289591478495749730, -0.289639335650798360, -0.289687192081748590, -0.289735047788481300, +-0.289782902770875980, -0.289830757028813390, -0.289878610562174290, -0.289926463370838270, -0.289974315454686100, -0.290022166813598160, -0.290070017447454750, -0.290117867356136760, +-0.290165716539523670, -0.290213564997496290, -0.290261412729935440, -0.290309259736720620, -0.290357106017732620, -0.290404951572851900, -0.290452796401959200, -0.290500640504934070, +-0.290548483881657380, -0.290596326532009450, -0.290644168455871150, -0.290692009653121970, -0.290739850123642780, -0.290787689867314010, -0.290835528884016370, -0.290883367173629560, +-0.290931204736034290, -0.290979041571111430, -0.291026877678740530, -0.291074713058802450, -0.291122547711177570, -0.291170381635746320, -0.291218214832389580, -0.291266047300986870, +-0.291313879041419030, -0.291361710053566920, -0.291409540337310090, -0.291457369892529410, -0.291505198719105350, -0.291553026816918690, -0.291600854185849020, -0.291648680825777220, +-0.291696506736584150, -0.291744331918149410, -0.291792156370353830, -0.291839980093077880, -0.291887803086201940, -0.291935625349606930, -0.291983446883172400, -0.292031267686779280, +-0.292079087760308440, -0.292126907103639420, -0.292174725716653150, -0.292222543599230110, -0.292270360751251070, -0.292318177172595730, -0.292365992863144910, -0.292413807822779150, +-0.292461622051379320, -0.292509435548824970, -0.292557248314997020, -0.292605060349775960, -0.292652871653042710, -0.292700682224676820, -0.292748492064559220, -0.292796301172570830, +-0.292844109548591250, -0.292891917192501410, -0.292939724104181790, -0.292987530283512820, -0.293035335730375490, -0.293083140444649340, -0.293130944426215400, -0.293178747674954500, +-0.293226550190746280, -0.293274351973471740, -0.293322153023011290, -0.293369953339245870, -0.293417752922055190, -0.293465551771320050, -0.293513349886921070, -0.293561147268739160, +-0.293608943916653930, -0.293656739830546350, -0.293704535010296920, -0.293752329455786610, -0.293800123166895020, -0.293847916143503090, -0.293895708385491840, -0.293943499892740880, +-0.293991290665131190, -0.294039080702543250, -0.294086870004857610, -0.294134658571955250, -0.294182446403715770, -0.294230233500020200, -0.294278019860749470, -0.294325805485783240, +-0.294373590375002550, -0.294421374528287870, -0.294469157945520140, -0.294516940626579130, -0.294564722571345750, -0.294612503779701000, -0.294660284251524520, -0.294708063986697410, +-0.294755842985100100, -0.294803621246613130, -0.294851398771117600, -0.294899175558493150, -0.294946951608620720, -0.294994726921381340, -0.295042501496654790, -0.295090275334321920, +-0.295138048434263330, -0.295185820796360130, -0.295233592420491910, -0.295281363306539700, -0.295329133454384110, -0.295376902863906050, -0.295424671534985360, -0.295472439467503010, +-0.295520206661339550, -0.295567973116375950, -0.295615738832492040, -0.295663503809568740, -0.295711268047487150, -0.295759031546126930, -0.295806794305369160, -0.295854556325094390, +-0.295902317605183260, -0.295950078145516720, -0.295997837945974560, -0.296045597006437840, -0.296093355326787540, -0.296141112906903430, -0.296188869746666530, -0.296236625845957450, +-0.296284381204657220, -0.296332135822645610, -0.296379889699803670, -0.296427642836012030, -0.296475395231151680, -0.296523146885102450, -0.296570897797745310, -0.296618647968960980, +-0.296666397398630380, -0.296714146086633430, -0.296761894032851080, -0.296809641237164410, -0.296857387699453250, -0.296905133419598620, -0.296952878397481130, -0.297000622632981880, +-0.297048366125980620, -0.297096108876358460, -0.297143850883996030, -0.297191592148774440, -0.297239332670573400, -0.297287072449274050, -0.297334811484756990, -0.297382549776903370, +-0.297430287325592900, -0.297478024130706730, -0.297525760192125950, -0.297573495509730330, -0.297621230083400970, -0.297668963913018500, -0.297716696998463700, -0.297764429339617500, +-0.297812160936359870, -0.297859891788571810, -0.297907621896134400, -0.297955351258927580, -0.298003079876832330, -0.298050807749729420, -0.298098534877499880, -0.298146261260023640, +-0.298193986897181680, -0.298241711788854780, -0.298289435934924020, -0.298337159335269280, -0.298384881989771590, -0.298432603898311720, -0.298480325060770770, -0.298528045477028550, +-0.298575765146966270, -0.298623484070464960, -0.298671202247404510, -0.298718919677666060, -0.298766636361130320, -0.298814352297678000, -0.298862067487190240, -0.298909781929546870, +-0.298957495624629030, -0.299005208572317880, -0.299052920772493290, -0.299100632225036410, -0.299148342929827950, -0.299196052886749000, -0.299243762095679540, -0.299291470556500680, +-0.299339178269093120, -0.299386885233338060, -0.299434591449115380, -0.299482296916306180, -0.299530001634791270, -0.299577705604451740, -0.299625408825167580, -0.299673111296819840, +-0.299720813019289770, -0.299768513992457300, -0.299816214216203470, -0.299863913690409100, -0.299911612414955400, -0.299959310389722230, -0.300007007614590810, -0.300054704089441850, +-0.300102399814156600, -0.300150094788614870, -0.300197789012697950, -0.300245482486286520, -0.300293175209261800, -0.300340867181503710, -0.300388558402893470, -0.300436248873312270, +-0.300483938592640050, -0.300531627560757960, -0.300579315777546760, -0.300627003242887330, -0.300674689956660800, -0.300722375918747060, -0.300770061129027490, -0.300817745587383110, +-0.300865429293693980, -0.300913112247841230, -0.300960794449705750, -0.301008475899168680, -0.301056156596110010, -0.301103836540410950, -0.301151515731952310, -0.301199194170615250, +-0.301246871856279850, -0.301294548788827220, -0.301342224968138230, -0.301389900394094130, -0.301437575066574810, -0.301485248985461580, -0.301532922150635650, -0.301580594561977000, +-0.301628266219366890, -0.301675937122686030, -0.301723607271815410, -0.301771276666636170, -0.301818945307028300, -0.301866613192873060, -0.301914280324051710, -0.301961946700444240, +-0.302009612321931910, -0.302057277188395590, -0.302104941299716430, -0.302152604655774540, -0.302200267256451100, -0.302247929101627070, -0.302295590191183570, -0.302343250525000660, +-0.302390910102959650, -0.302438568924941420, -0.302486226990827110, -0.302533884300496820, -0.302581540853831880, -0.302629196650713470, -0.302676851691021650, -0.302724505974637680, +-0.302772159501442430, -0.302819812271317270, -0.302867464284142130, -0.302915115539798270, -0.302962766038166690, -0.303010415779128630, -0.303058064762564080, -0.303105712988354370, +-0.303153360456380360, -0.303201007166523370, -0.303248653118663450, -0.303296298312681900, -0.303343942748460050, -0.303391586425877880, -0.303439229344816760, -0.303486871505157570, +-0.303534512906781240, -0.303582153549569020, -0.303629793433400960, -0.303677432558158430, -0.303725070923722750, -0.303772708529974010, -0.303820345376793480, -0.303867981464062020, +-0.303915616791661130, -0.303963251359470720, -0.304010885167372180, -0.304058518215246430, -0.304106150502974790, -0.304153782030437360, -0.304201412797515500, -0.304249042804090100, +-0.304296672050042520, -0.304344300535252850, -0.304391928259602370, -0.304439555222972560, -0.304487181425243390, -0.304534806866296300, -0.304582431546012170, -0.304630055464271960, +-0.304677678620957070, -0.304725301015947530, -0.304772922649124760, -0.304820543520370080, -0.304868163629563590, -0.304915782976586780, -0.304963401561320460, -0.305011019383646050, +-0.305058636443443660, -0.305106252740594720, -0.305153868274980530, -0.305201483046481260, -0.305249097054978320, -0.305296710300352600, -0.305344322782485080, -0.305391934501257230, +-0.305439545456549110, -0.305487155648242080, -0.305534765076217630, -0.305582373740355850, -0.305629981640538120, -0.305677588776645410, -0.305725195148559170, -0.305772800756159540, +-0.305820405599327880, -0.305868009677945250, -0.305915612991892960, -0.305963215541051270, -0.306010817325301500, -0.306058418344524740, -0.306106018598602310, -0.306153618087414430, +-0.306201216810842450, -0.306248814768767920, -0.306296411961070880, -0.306344008387632870, -0.306391604048334760, -0.306439198943057710, -0.306486793071683080, -0.306534386434091030, +-0.306581979030162990, -0.306629570859780430, -0.306677161922823570, -0.306724752219173780, -0.306772341748712100, -0.306819930511319950, -0.306867518506877600, -0.306915105735266420, +-0.306962692196367510, -0.307010277890062300, -0.307057862816230930, -0.307105446974754950, -0.307153030365515330, -0.307200612988393570, -0.307248194843269820, -0.307295775930025610, +-0.307343356248542420, -0.307390935798700360, -0.307438514580380960, -0.307486092593465320, -0.307533669837834420, -0.307581246313369750, -0.307628822019951560, -0.307676396957461300, +-0.307723971125780480, -0.307771544524789330, -0.307819117154369270, -0.307866689014401450, -0.307914260104767360, -0.307961830425347140, -0.308009399976022390, -0.308056968756674540, +-0.308104536767183860, -0.308152104007431820, -0.308199670477299510, -0.308247236176668050, -0.308294801105418960, -0.308342365263432390, -0.308389928650589900, -0.308437491266773060, +-0.308485053111862030, -0.308532614185738350, -0.308580174488283180, -0.308627734019377930, -0.308675292778902990, -0.308722850766739780, -0.308770407982769500, -0.308817964426873590, +-0.308865520098932310, -0.308913074998827250, -0.308960629126439510, -0.309008182481650630, -0.309055735064340860, -0.309103286874391760, -0.309150837911684850, -0.309198388176100460, +-0.309245937667520070, -0.309293486385824820, -0.309341034330895880, -0.309388581502614780, -0.309436127900861780, -0.309483673525518480, -0.309531218376466410, -0.309578762453585900, +-0.309626305756758420, -0.309673848285865250, -0.309721390040787860, -0.309768931021406570, -0.309816471227602920, -0.309864010659258120, -0.309911549316253700, -0.309959087198469980, +-0.310006624305788570, -0.310054160638090600, -0.310101696195257630, -0.310149230977170010, -0.310196764983709290, -0.310244298214757130, -0.310291830670193720, -0.310339362349900780, +-0.310386893253759450, -0.310434423381651340, -0.310481952733456690, -0.310529481309057160, -0.310577009108333970, -0.310624536131168640, -0.310672062377441550, -0.310719587847034300, +-0.310767112539828080, -0.310814636455704560, -0.310862159594543940, -0.310909681956227980, -0.310957203540638220, -0.311004724347655030, -0.311052244377160000, -0.311099763629034410, +-0.311147282103159390, -0.311194799799416610, -0.311242316717686370, -0.311289832857850330, -0.311337348219790140, -0.311384862803386180, -0.311432376608520080, -0.311479889635073000, +-0.311527401882926660, -0.311574913351961360, -0.311622424042058750, -0.311669933953100110, -0.311717443084967070, -0.311764951437540020, -0.311812459010700540, -0.311859965804329900, +-0.311907471818309800, -0.311954977052520620, -0.312002481506843950, -0.312049985181161560, -0.312097488075353760, -0.312144990189302200, -0.312192491522888190, -0.312239992075992960, +-0.312287491848498190, -0.312334990840284210, -0.312382489051232840, -0.312429986481225610, -0.312477483130143010, -0.312524978997866690, -0.312572474084277910, -0.312619968389258370, +-0.312667461912688520, -0.312714954654449980, -0.312762446614424090, -0.312809937792492440, -0.312857428188535570, -0.312904917802435180, -0.312952406634072420, -0.312999894683329060, +-0.313047381950085580, -0.313094868434223630, -0.313142354135624970, -0.313189839054169970, -0.313237323189740350, -0.313284806542217460, -0.313332289111482980, -0.313379770897417310, +-0.313427251899902230, -0.313474732118819040, -0.313522211554049410, -0.313569690205473870, -0.313617168072974070, -0.313664645156431390, -0.313712121455727470, -0.313759596970742850, +-0.313807071701359240, -0.313854545647458400, -0.313902018808920710, -0.313949491185628040, -0.313996962777461590, -0.314044433584302730, -0.314091903606033230, -0.314139372842533570, +-0.314186841293685460, -0.314234308959370660, -0.314281775839469700, -0.314329241933864250, -0.314376707242435720, -0.314424171765065820, -0.314471635501635090, -0.314519098452025300, +-0.314566560616117710, -0.314614021993794180, -0.314661482584935150, -0.314708942389422430, -0.314756401407137340, -0.314803859637961700, -0.314851317081775940, -0.314898773738461920, +-0.314946229607901420, -0.314993684689974850, -0.315041138984564100, -0.315088592491550520, -0.315136045210815450, -0.315183497142240700, -0.315230948285706750, -0.315278398641095470, +-0.315325848208288570, -0.315373296987166650, -0.315420744977611520, -0.315468192179504450, -0.315515638592727410, -0.315563084217160780, -0.315610529052686490, -0.315657973099185860, +-0.315705416356540700, -0.315752858824631610, -0.315800300503340350, -0.315847741392548340, -0.315895181492137410, -0.315942620801988090, -0.315990059321982260, -0.316037497052001680, +-0.316084933991926890, -0.316132370141639810, -0.316179805501021820, -0.316227240069954670, -0.316274673848319090, -0.316322106835996760, -0.316369539032869180, -0.316416970438818170, +-0.316464401053724310, -0.316511830877469480, -0.316559259909935050, -0.316606688151002900, -0.316654115600553570, -0.316701542258469030, -0.316748968124630990, -0.316796393198920110, +-0.316843817481218260, -0.316891240971406860, -0.316938663669367400, -0.316986085574981650, -0.317033506688130300, -0.317080927008695170, -0.317128346536558140, -0.317175765271599800, +-0.317223183213702080, -0.317270600362746400, -0.317318016718614650, -0.317365432281187410, -0.317412847050346610, -0.317460261025973690, -0.317507674207950510, -0.317555086596157720, +-0.317602498190477260, -0.317649908990790540, -0.317697318996979450, -0.317744728208924630, -0.317792136626508070, -0.317839544249611530, -0.317886951078115710, -0.317934357111902490, +-0.317981762350853400, -0.318029166794849940, -0.318076570443773910, -0.318123973297506080, -0.318171375355928320, -0.318218776618922510, -0.318266177086369400, -0.318313576758150810, +-0.318360975634148220, -0.318408373714243690, -0.318455770998317790, -0.318503167486252460, -0.318550563177929180, -0.318597958073229990, -0.318645352172035430, -0.318692745474227490, +-0.318740137979687700, -0.318787529688297930, -0.318834920599939010, -0.318882310714492690, -0.318929700031841070, -0.318977088551864800, -0.319024476274445800, -0.319071863199465570, +-0.319119249326806130, -0.319166634656348150, -0.319214019187973540, -0.319261402921563910, -0.319308785857001230, -0.319356167994166110, -0.319403549332940630, -0.319450929873206220, +-0.319498309614844930, -0.319545688557737460, -0.319593066701765740, -0.319640444046811800, -0.319687820592756300, -0.319735196339481280, -0.319782571286868270, -0.319829945434798810, +-0.319877318783154900, -0.319924691331817280, -0.319972063080667950, -0.320019434029588880, -0.320066804178460780, -0.320114173527165700, -0.320161542075585170, -0.320208909823601170, +-0.320256276771094530, -0.320303642917947160, -0.320351008264040730, -0.320398372809257150, -0.320445736553477250, -0.320493099496583000, -0.320540461638456010, -0.320587822978978250, +-0.320635183518030550, -0.320682543255494890, -0.320729902191253300, -0.320777260325186500, -0.320824617657176570, -0.320871974187105110, -0.320919329914853670, -0.320966684840304380, +-0.321014038963337910, -0.321061392283836400, -0.321108744801681780, -0.321156096516754860, -0.321203447428937750, -0.321250797538112030, -0.321298146844159690, -0.321345495346961610, +-0.321392843046399760, -0.321440189942356180, -0.321487536034711750, -0.321534881323348510, -0.321582225808148050, -0.321629569488992020, -0.321676912365762460, -0.321724254438340240, +-0.321771595706607350, -0.321818936170445880, -0.321866275829736700, -0.321913614684361800, -0.321960952734202890, -0.322008289979141990, -0.322055626419059940, -0.322102962053838810, +-0.322150296883360330, -0.322197630907506470, -0.322244964126158160, -0.322292296539197440, -0.322339628146505960, -0.322386958947965820, -0.322434288943457880, -0.322481618132864190, +-0.322528946516066890, -0.322576274092946810, -0.322623600863386040, -0.322670926827266280, -0.322718251984469180, -0.322765576334876900, -0.322812899878370250, -0.322860222614831380, +-0.322907544544142330, -0.322954865666183980, -0.323002185980838520, -0.323049505487987550, -0.323096824187513290, -0.323144142079296480, -0.323191459163219340, -0.323238775439163570, +-0.323286090907011270, -0.323333405566643360, -0.323380719417941890, -0.323428032460788660, -0.323475344695065730, -0.323522656120654010, -0.323569966737435710, -0.323617276545292880, +-0.323664585544106430, -0.323711893733758530, -0.323759201114130870, -0.323806507685105600, -0.323853813446563720, -0.323901118398387260, -0.323948422540458030, -0.323995725872658120, +-0.324043028394868540, -0.324090330106971360, -0.324137631008848350, -0.324184931100381660, -0.324232230381452270, -0.324279528851942280, -0.324326826511733890, -0.324374123360707980, +-0.324421419398746800, -0.324468714625732070, -0.324516009041545540, -0.324563302646069420, -0.324610595439184630, -0.324657887420773340, -0.324705178590717740, -0.324752468948898750, +-0.324799758495198650, -0.324847047229499140, -0.324894335151682420, -0.324941622261629430, -0.324988908559222410, -0.325036194044343090, -0.325083478716873710, -0.325130762576695260, +-0.325178045623689850, -0.325225327857739330, -0.325272609278725920, -0.325319889886530600, -0.325367169681035520, -0.325414448662122930, -0.325461726829673840, -0.325509004183570370, +-0.325556280723694410, -0.325603556449927780, -0.325650831362152670, -0.325698105460250020, -0.325745378744102140, -0.325792651213591240, -0.325839922868598310, -0.325887193709005540, +-0.325934463734694810, -0.325981732945548330, -0.326029001341447080, -0.326076268922273320, -0.326123535687908920, -0.326170801638236090, -0.326218066773135810, -0.326265331092490400, +-0.326312594596181670, -0.326359857284091840, -0.326407119156101930, -0.326454380212094280, -0.326501640451951070, -0.326548899875553360, -0.326596158482783390, -0.326643416273523000, +-0.326690673247654500, -0.326737929405058910, -0.326785184745618460, -0.326832439269215120, -0.326879692975731050, -0.326926945865047340, -0.326974197937046240, -0.327021449191609690, +-0.327068699628619900, -0.327115949247957950, -0.327163198049506110, -0.327210446033146750, -0.327257693198760800, -0.327304939546230630, -0.327352185075438170, -0.327399429786265180, +-0.327446673678594040, -0.327493916752305820, -0.327541159007282810, -0.327588400443407310, -0.327635641060560370, -0.327682880858624350, -0.327730119837481130, -0.327777357997013020, +-0.327824595337101120, -0.327871831857627690, -0.327919067558474720, -0.327966302439524520, -0.328013536500658060, -0.328060769741757850, -0.328108002162705640, -0.328155233763383900, +-0.328202464543673630, -0.328249694503457200, -0.328296923642616980, -0.328344151961034000, -0.328391379458590650, -0.328438606135168840, -0.328485831990650510, -0.328533057024918030, +-0.328580281237852550, -0.328627504629336260, -0.328674727199251670, -0.328721948947479860, -0.328769169873903200, -0.328816389978403570, -0.328863609260863390, -0.328910827721163810, +-0.328958045359187100, -0.329005262174815290, -0.329052478167930760, -0.329099693338414660, -0.329146907686149240, -0.329194121211016600, -0.329241333912899060, -0.329288545791677770, +-0.329335756847235150, -0.329382967079453530, -0.329430176488214040, -0.329477385073399130, -0.329524592834890770, -0.329571799772571340, -0.329619005886322040, -0.329666211176025180, +-0.329713415641562760, -0.329760619282817250, -0.329807822099669800, -0.329855024092002790, -0.329902225259698200, -0.329949425602638460, -0.329996625120704710, -0.330043823813779450, +-0.330091021681745030, -0.330138218724482620, -0.330185414941874700, -0.330232610333803240, -0.330279804900150240, -0.330326998640798120, -0.330374191555628140, -0.330421383644522610, +-0.330468574907364090, -0.330515765344033710, -0.330562954954413960, -0.330610143738386760, -0.330657331695834610, -0.330704518826638760, -0.330751705130681580, -0.330798890607845120, +-0.330846075258011910, -0.330893259081063040, -0.330940442076881060, -0.330987624245347940, -0.331034805586346240, -0.331081986099757030, -0.331129165785462920, -0.331176344643346280, +-0.331223522673288360, -0.331270699875171660, -0.331317876248878150, -0.331365051794289990, -0.331412226511289650, -0.331459400399758300, -0.331506573459578460, -0.331553745690632560, +-0.331600917092801930, -0.331648087665968980, -0.331695257410015760, -0.331742426324824920, -0.331789594410277500, -0.331836761666256140, -0.331883928092642890, -0.331931093689320220, +-0.331978258456169410, -0.332025422393072980, -0.332072585499912920, -0.332119747776571880, -0.332166909222931020, -0.332214069838872860, -0.332261229624280010, -0.332308388579033610, +-0.332355546703016260, -0.332402703996110050, -0.332449860458197520, -0.332497016089159880, -0.332544170888879720, -0.332591324857239130, -0.332638477994120660, -0.332685630299405570, +-0.332732781772976380, -0.332779932414715260, -0.332827082224504740, -0.332874231202226030, -0.332921379347761840, -0.332968526660994520, -0.333015673141805520, -0.333062818790077380, +-0.333109963605692120, -0.333157107588531950, -0.333204250738479480, -0.333251393055415960, -0.333298534539223920, -0.333345675189785970, -0.333392815006983420, -0.333439953990698870, +-0.333487092140814400, -0.333534229457212620, -0.333581365939774830, -0.333628501588383640, -0.333675636402921190, -0.333722770383270080, -0.333769903529311630, -0.333817035840928420, +-0.333864167318002610, -0.333911297960416800, -0.333958427768052350, -0.334005556740791800, -0.334052684878517800, -0.334099812181111620, -0.334146938648455960, -0.334194064280432970, +-0.334241189076924790, -0.334288313037814030, -0.334335436162982110, -0.334382558452311570, -0.334429679905685120, -0.334476800522983950, -0.334523920304090840, -0.334571039248887920, +-0.334618157357257860, -0.334665274629081910, -0.334712391064242830, -0.334759506662623160, -0.334806621424104330, -0.334853735348568940, -0.334900848435899180, -0.334947960685977320, +-0.334995072098686010, -0.335042182673906560, -0.335089292411521690, -0.335136401311413980, -0.335183509373464860, -0.335230616597556930, -0.335277722983572500, -0.335324828531394170, +-0.335371933240903360, -0.335419037111982680, -0.335466140144514480, -0.335513242338381260, -0.335560343693464600, -0.335607444209647000, -0.335654543886810870, -0.335701642724838710, +-0.335748740723612100, -0.335795837883013590, -0.335842934202925940, -0.335890029683230510, -0.335937124323810010, -0.335984218124546760, -0.336031311085322910, -0.336078403206021170, +-0.336125494486523070, -0.336172584926711200, -0.336219674526468280, -0.336266763285675730, -0.336313851204216310, -0.336360938281972280, -0.336408024518826290, -0.336455109914659820, +-0.336502194469355590, -0.336549278182795900, -0.336596361054863400, -0.336643443085439530, -0.336690524274407150, -0.336737604621648370, -0.336784684127046040, -0.336831762790481600, +-0.336878840611837760, -0.336925917590997210, -0.336972993727841450, -0.337020069022253180, -0.337067143474114760, -0.337114217083308520, -0.337161289849717110, -0.337208361773222050, +-0.337255432853706130, -0.337302503091051980, -0.337349572485141190, -0.337396641035856480, -0.337443708743080160, -0.337490775606694990, -0.337537841626582460, -0.337584906802625320, +-0.337631971134706390, -0.337679034622707040, -0.337726097266510090, -0.337773159065997970, -0.337820220021052890, -0.337867280131557700, -0.337914339397393900, -0.337961397818444250, +-0.338008455394591510, -0.338055512125717270, -0.338102568011704190, -0.338149623052434680, -0.338196677247791570, -0.338243730597656330, -0.338290783101911800, -0.338337834760440270, +-0.338384885573124570, -0.338431935539846240, -0.338478984660488090, -0.338526032934932440, -0.338573080363062160, -0.338620126944758790, -0.338667172679905040, -0.338714217568383820, +-0.338761261610076640, -0.338808304804866290, -0.338855347152635160, -0.338902388653265660, -0.338949429306640630, -0.338996469112641640, -0.339043508071151410, -0.339090546182052870, +-0.339137583445227540, -0.339184619860558260, -0.339231655427927440, -0.339278690147217840, -0.339325724018311130, -0.339372757041090160, -0.339419789215437250, -0.339466820541235280, +-0.339513851018365840, -0.339560880646711800, -0.339607909426155540, -0.339654937356579920, -0.339701964437866540, -0.339748990669898280, -0.339796016052557880, -0.339843040585727120, +-0.339890064269288690, -0.339937087103125150, -0.339984109087119290, -0.340031130221152720, -0.340078150505108310, -0.340125169938868600, -0.340172188522316340, -0.340219206255333200, +-0.340266223137802030, -0.340313239169605260, -0.340360254350625890, -0.340407268680745390, -0.340454282159846800, -0.340501294787812880, -0.340548306564525280, -0.340595317489866930, +-0.340642327563720320, -0.340689336785967860, -0.340736345156492480, -0.340783352675175840, -0.340830359341900810, -0.340877365156550320, -0.340924370119005950, -0.340971374229150690, +-0.341018377486866970, -0.341065379892037720, -0.341112381444544640, -0.341159382144270550, -0.341206381991098100, -0.341253380984910040, -0.341300379125588080, -0.341347376413015270, +-0.341394372847073910, -0.341441368427647110, -0.341488363154616450, -0.341535357027864920, -0.341582350047275330, -0.341629342212729500, -0.341676333524110310, -0.341723323981300290, +-0.341770313584181970, -0.341817302332638300, -0.341864290226550900, -0.341911277265802840, -0.341958263450276970, -0.342005248779855000, -0.342052233254419910, -0.342099216873854250, +-0.342146199638040990, -0.342193181546861790, -0.342240162600199630, -0.342287142797937090, -0.342334122139957120, -0.342381100626141410, -0.342428078256372950, -0.342475055030534270, +-0.342522030948508360, -0.342569006010176980, -0.342615980215423110, -0.342662953564129680, -0.342709926056178450, -0.342756897691452400, -0.342803868469834130, -0.342850838391206610, +-0.342897807455451560, -0.342944775662451960, -0.342991743012090460, -0.343038709504250030, -0.343085675138812380, -0.343132639915660560, -0.343179603834677100, -0.343226566895745100, +-0.343273529098746260, -0.343320490443563550, -0.343367450930080090, -0.343414410558177560, -0.343461369327739020, -0.343508327238647050, -0.343555284290784250, -0.343602240484033650, +-0.343649195818277020, -0.343696150293397450, -0.343743103909277870, -0.343790056665800150, -0.343837008562847270, -0.343883959600301880, -0.343930909778047020, -0.343977859095964460, +-0.344024807553937220, -0.344071755151847960, -0.344118701889579770, -0.344165647767014420, -0.344212592784034880, -0.344259536940523910, -0.344306480236364510, -0.344353422671438480, +-0.344400364245628920, -0.344447304958818870, -0.344494244810890080, -0.344541183801725710, -0.344588121931208410, -0.344635059199220770, -0.344681995605645940, -0.344728931150365680, +-0.344775865833263080, -0.344822799654221250, -0.344869732613121980, -0.344916664709848390, -0.344963595944283160, -0.345010526316309350, -0.345057455825808770, -0.345104384472664620, +-0.345151312256759430, -0.345198239177976430, -0.345245165236197420, -0.345292090431305490, -0.345339014763183290, -0.345385938231713980, -0.345432860836779430, -0.345479782578262730, +-0.345526703456047020, -0.345573623470014080, -0.345620542620047100, -0.345667460906028790, -0.345714378327842240, -0.345761294885369270, -0.345808210578493090, -0.345855125407096400, +-0.345902039371062340, -0.345948952470272740, -0.345995864704610740, -0.346042776073959110, -0.346089686578200940, -0.346136596217218100, -0.346183504990893840, -0.346230412899111160, +-0.346277319941752090, -0.346324226118699730, -0.346371131429836780, -0.346418035875045990, -0.346464939454210530, -0.346511842167212310, -0.346558744013934490, -0.346605644994260220, +-0.346652545108071420, -0.346699444355251240, -0.346746342735682500, -0.346793240249248290, -0.346840136895830540, -0.346887032675312460, -0.346933927587576800, -0.346980821632506760, +-0.347027714809984230, -0.347074607119892410, -0.347121498562114110, -0.347168389136532420, -0.347215278843029380, -0.347262167681488150, -0.347309055651791930, -0.347355942753822590, +-0.347402828987463440, -0.347449714352597190, -0.347496598849106720, -0.347543482476875110, -0.347590365235784400, -0.347637247125717750, -0.347684128146558410, -0.347731008298188370, +-0.347777887580490770, -0.347824765993348440, -0.347871643536644630, -0.347918520210261320, -0.347965396014081660, -0.348012270947988980, -0.348059145011865190, -0.348106018205593500, +-0.348152890529056790, -0.348199761982137870, -0.348246632564719940, -0.348293502276684990, -0.348340371117916330, -0.348387239088297160, -0.348434106187709420, -0.348480972416036480, +-0.348527837773161100, -0.348574702258966530, -0.348621565873334760, -0.348668428616149110, -0.348715290487292380, -0.348762151486647850, -0.348809011614097500, -0.348855870869524630, +-0.348902729252812070, -0.348949586763843130, -0.348996443402499800, -0.349043299168665330, -0.349090154062223100, -0.349137008083055030, -0.349183861231044390, -0.349230713506074150, +-0.349277564908027140, -0.349324415436786610, -0.349371265092234650, -0.349418113874254480, -0.349464961782729460, -0.349511808817541620, -0.349558654978574300, -0.349605500265710300, +-0.349652344678832990, -0.349699188217824360, -0.349746030882567780, -0.349792872672946120, -0.349839713588842750, -0.349886553630139600, -0.349933392796720090, -0.349980231088467150, +-0.350027068505263990, -0.350073905046992760, -0.350120740713536770, -0.350167575504779340, -0.350214409420602560, -0.350261242460889740, -0.350308074625523820, -0.350354905914387730, +-0.350401736327364770, -0.350448565864337090, -0.350495394525187960, -0.350542222309800760, -0.350589049218057610, -0.350635875249841860, -0.350682700405036350, -0.350729524683524580, +-0.350776348085188540, -0.350823170609911640, -0.350869992257577200, -0.350916813028067380, -0.350963632921265530, -0.351010451937054660, -0.351057270075317560, -0.351104087335937790, +-0.351150903718797310, -0.351197719223779630, -0.351244533850768040, -0.351291347599644700, -0.351338160470292980, -0.351384972462595870, -0.351431783576436730, -0.351478593811697770, +-0.351525403168262250, -0.351572211646013270, -0.351619019244834190, -0.351665825964607100, -0.351712631805215450, -0.351759436766542260, -0.351806240848470900, -0.351853044050883470, +-0.351899846373663450, -0.351946647816694210, -0.351993448379857960, -0.352040248063038130, -0.352087046866117640, -0.352133844788979520, -0.352180641831507210, -0.352227437993582910, +-0.352274233275090000, -0.352321027675911890, -0.352367821195930800, -0.352414613835030200, -0.352461405593093020, -0.352508196470002750, -0.352554986465641600, -0.352601775579892970, +-0.352648563812639930, -0.352695351163765880, -0.352742137633152990, -0.352788923220684780, -0.352835707926244300, -0.352882491749714920, -0.352929274690978960, -0.352976056749919720, +-0.353022837926420810, -0.353069618220364420, -0.353116397631633940, -0.353163176160112450, -0.353209953805683490, -0.353256730568229150, -0.353303506447633030, -0.353350281443778170, +-0.353397055556547990, -0.353443828785824750, -0.353490601131492000, -0.353537372593432650, -0.353584143171530360, -0.353630912865667280, -0.353677681675726880, -0.353724449601592720, +-0.353771216643147040, -0.353817982800273320, -0.353864748072854620, -0.353911512460774010, -0.353958275963915100, -0.354005038582160040, -0.354051800315392410, -0.354098561163495700, +-0.354145321126352160, -0.354192080203845350, -0.354238838395858290, -0.354285595702274580, -0.354332352122976420, -0.354379107657847410, -0.354425862306770640, -0.354472616069629650, +-0.354519368946306700, -0.354566120936685270, -0.354612872040648560, -0.354659622258080120, -0.354706371588862200, -0.354753120032878340, -0.354799867590012090, -0.354846614260145740, +-0.354893360043162910, -0.354940104938946620, -0.354986848947380140, -0.355033592068346890, -0.355080334301729250, -0.355127075647410810, -0.355173816105275040, -0.355220555675204390, +-0.355267294357082260, -0.355314032150791990, -0.355360769056217000, -0.355407505073239650, -0.355454240201743600, -0.355500974441611880, -0.355547707792728210, -0.355594440254974830, +-0.355641171828235350, -0.355687902512392910, -0.355734632307331160, -0.355781361212932410, -0.355828089229080270, -0.355874816355658260, -0.355921542592548880, -0.355968267939635600, +-0.356014992396801620, -0.356061715963930600, -0.356108438640904910, -0.356155160427608090, -0.356201881323923390, -0.356248601329734400, -0.356295320444923460, -0.356342038669374250, +-0.356388756002969930, -0.356435472445594150, -0.356482187997129220, -0.356528902657458900, -0.356575616426466680, -0.356622329304035040, -0.356669041290047560, -0.356715752384387460, +-0.356762462586938000, -0.356809171897582820, -0.356855880316204240, -0.356902587842686030, -0.356949294476911700, -0.356996000218763760, -0.357042705068125800, -0.357089409024881070, +-0.357136112088913270, -0.357182814260104730, -0.357229515538339200, -0.357276215923499840, -0.357322915415470340, -0.357369614014133200, -0.357416311719371990, -0.357463008531069990, +-0.357509704449110900, -0.357556399473377140, -0.357603093603752360, -0.357649786840120280, -0.357696479182363300, -0.357743170630365150, -0.357789861184009070, -0.357836550843178340, +-0.357883239607756640, -0.357929927477626420, -0.357976614452671370, -0.358023300532775200, -0.358069985717820390, -0.358116670007690600, -0.358163353402269120, -0.358210035901439680, +-0.358256717505084750, -0.358303398213088040, -0.358350078025332810, -0.358396756941702810, -0.358443434962080480, -0.358490112086349570, -0.358536788314393400, -0.358583463646095670, +-0.358630138081338870, -0.358676811620006700, -0.358723484261982920, -0.358770156007150070, -0.358816826855391740, -0.358863496806591410, -0.358910165860632730, -0.358956834017398200, +-0.359003501276771610, -0.359050167638636290, -0.359096833102875930, -0.359143497669373090, -0.359190161338011520, -0.359236824108674520, -0.359283485981245880, -0.359330146955608110, +-0.359376807031644980, -0.359423466209240210, -0.359470124488276420, -0.359516781868637280, -0.359563438350206210, -0.359610093932866530, -0.359656748616501990, -0.359703402400995240, +-0.359750055286229940, -0.359796707272089900, -0.359843358358457710, -0.359890008545217130, -0.359936657832251540, -0.359983306219444690, -0.360029953706679170, -0.360076600293838760, +-0.360123245980806860, -0.360169890767467250, -0.360216534653702460, -0.360263177639396410, -0.360309819724432380, -0.360356460908694220, -0.360403101192064480, -0.360449740574426970, +-0.360496379055665560, -0.360543016635662790, -0.360589653314302430, -0.360636289091468000, -0.360682923967042820, -0.360729557940910720, -0.360776191012954330, -0.360822823183057470, +-0.360869454451103970, -0.360916084816976460, -0.360962714280558650, -0.361009342841734140, -0.361055970500386620, -0.361102597256398760, -0.361149223109654470, -0.361195848060037460, +-0.361242472107430490, -0.361289095251717260, -0.361335717492781370, -0.361382338830506130, -0.361428959264775470, -0.361475578795472040, -0.361522197422479600, -0.361568815145682120, +-0.361615431964962210, -0.361662047880203670, -0.361708662891290060, -0.361755276998105170, -0.361801890200531660, -0.361848502498453460, -0.361895113891753990, -0.361941724380317130, +-0.361988333964025580, -0.362034942642763150, -0.362081550416413430, -0.362128157284860200, -0.362174763247986140, -0.362221368305675250, -0.362267972457811280, -0.362314575704277000, +-0.362361178044956270, -0.362407779479732630, -0.362454380008489510, -0.362500979631110830, -0.362547578347479300, -0.362594176157478850, -0.362640773060993350, -0.362687369057905550, +-0.362733964148099270, -0.362780558331458110, -0.362827151607865940, -0.362873743977205510, -0.362920335439360700, -0.362966925994215090, -0.363013515641652520, -0.363060104381555780, +-0.363106692213808810, -0.363153279138295040, -0.363199865154898550, -0.363246450263501940, -0.363293034463989200, -0.363339617756244350, -0.363386200140150000, -0.363432781615590120, +-0.363479362182448310, -0.363525941840608100, -0.363572520589953490, -0.363619098430367100, -0.363665675361733000, -0.363712251383935090, -0.363758826496856150, -0.363805400700380200, +-0.363851973994390680, -0.363898546378771670, -0.363945117853405890, -0.363991688418177250, -0.364038258072969860, -0.364084826817666410, -0.364131394652150890, -0.364177961576306890, +-0.364224527590018000, -0.364271092693168150, -0.364317656885640220, -0.364364220167318060, -0.364410782538085840, -0.364457343997826260, -0.364503904546423290, -0.364550464183760530, +-0.364597022909722070, -0.364643580724190560, -0.364690137627050210, -0.364736693618184450, -0.364783248697477360, -0.364829802864811760, -0.364876356120071690, -0.364922908463140680, +-0.364969459893902840, -0.365016010412240910, -0.365062560018038940, -0.365109108711181020, -0.365155656491549910, -0.365202203359029640, -0.365248749313503870, -0.365295294354856250, +-0.365341838482970750, -0.365388381697730300, -0.365434923999018890, -0.365481465386720550, -0.365528005860718150, -0.365574545420895740, -0.365621084067137000, -0.365667621799325880, +-0.365714158617345350, -0.365760694521079450, -0.365807229510411780, -0.365853763585226420, -0.365900296745406250, -0.365946828990835360, -0.365993360321397400, -0.366039890736976460, +-0.366086420237455360, -0.366132948822718180, -0.366179476492649090, -0.366226003247130890, -0.366272529086047680, -0.366319054009283110, -0.366365578016721370, -0.366412101108245240, +-0.366458623283738900, -0.366505144543085970, -0.366551664886170580, -0.366598184312875610, -0.366644702823085200, -0.366691220416683060, -0.366737737093553230, -0.366784252853578690, +-0.366830767696643470, -0.366877281622631780, -0.366923794631426440, -0.366970306722911640, -0.367016817896971050, -0.367063328153488470, -0.367109837492347930, -0.367156345913432380, +-0.367202853416626010, -0.367249360001812910, -0.367295865668875950, -0.367342370417699350, -0.367388874248166850, -0.367435377160162560, -0.367481879153569450, -0.367528380228271560, +-0.367574880384152760, -0.367621379621097200, -0.367667877938987750, -0.367714375337708620, -0.367760871817143560, -0.367807367377176730, -0.367853862017691050, -0.367900355738570720, +-0.367946848539699890, -0.367993340420961550, -0.368039831382239890, -0.368086321423418570, -0.368132810544381520, -0.368179298745012820, -0.368225786025195510, -0.368272272384813690, +-0.368318757823751620, -0.368365242341892220, -0.368411725939119750, -0.368458208615317920, -0.368504690370371040, -0.368551171204161980, -0.368597651116575000, -0.368644130107493860, +-0.368690608176802880, -0.368737085324384930, -0.368783561550124260, -0.368830036853904700, -0.368876511235610440, -0.368922984695124470, -0.368969457232331100, -0.369015928847114480, +-0.369062399539357600, -0.369108869308944710, -0.369155338155759680, -0.369201806079686720, -0.369248273080608810, -0.369294739158410270, -0.369341204312974790, -0.369387668544186810, +-0.369434131851929190, -0.369480594236086260, -0.369527055696541820, -0.369573516233180190, -0.369619975845884300, -0.369666434534538510, -0.369712892299027040, -0.369759349139232920, +-0.369805805055040460, -0.369852260046333480, -0.369898714112995800, -0.369945167254911830, -0.369991619471964460, -0.370038070764038050, -0.370084521131016920, -0.370130970572784050, +-0.370177419089223750, -0.370223866680219890, -0.370270313345656740, -0.370316759085417500, -0.370363203899386260, -0.370409647787447060, -0.370456090749484160, -0.370502532785380590, +-0.370548973895020730, -0.370595414078288390, -0.370641853335067940, -0.370688291665242480, -0.370734729068696260, -0.370781165545313650, -0.370827601094977700, -0.370874035717572710, +-0.370920469412982680, -0.370966902181091460, -0.371013334021783440, -0.371059764934941580, -0.371106194920450380, -0.371152623978194100, -0.371199052108055820, -0.371245479309919910, +-0.371291905583670310, -0.371338330929191380, -0.371384755346366220, -0.371431178835079150, -0.371477601395214130, -0.371524023026655490, -0.371570443729286440, -0.371616863502991220, +-0.371663282347653890, -0.371709700263158750, -0.371756117249388950, -0.371802533306228870, -0.371848948433562810, -0.371895362631274040, -0.371941775899246820, -0.371988188237365180, +-0.372034599645513440, -0.372081010123574860, -0.372127419671433700, -0.372173828288974000, -0.372220235976080170, -0.372266642732635320, -0.372313048558523870, -0.372359453453629750, +-0.372405857417837490, -0.372452260451030140, -0.372498662553092110, -0.372545063723907890, -0.372591463963360570, -0.372637863271334580, -0.372684261647713900, -0.372730659092382620, +-0.372777055605225120, -0.372823451186124530, -0.372869845834965300, -0.372916239551631890, -0.372962632336007460, -0.373009024187976490, -0.373055415107422910, -0.373101805094231240, +-0.373148194148284600, -0.373194582269467500, -0.373240969457664000, -0.373287355712758400, -0.373333741034634070, -0.373380125423175340, -0.373426508878266280, -0.373472891399791400, +-0.373519272987633880, -0.373565653641678150, -0.373612033361808700, -0.373658412147908790, -0.373704789999862840, -0.373751166917554890, -0.373797542900869030, -0.373843917949689740, +-0.373890292063900230, -0.373936665243385040, -0.373983037488028520, -0.374029408797714070, -0.374075779172326040, -0.374122148611748580, -0.374168517115866130, -0.374214884684562040, +-0.374261251317720700, -0.374307617015226250, -0.374353981776963110, -0.374400345602814650, -0.374446708492665370, -0.374493070446399230, -0.374539431463900900, -0.374585791545053560, +-0.374632150689741710, -0.374678508897849930, -0.374724866169261430, -0.374771222503860800, -0.374817577901532140, -0.374863932362159870, -0.374910285885627410, -0.374956638471819200, +-0.375002990120619440, -0.375049340831912600, -0.375095690605581960, -0.375142039441512140, -0.375188387339587200, -0.375234734299691730, -0.375281080321708980, -0.375327425405523550, +-0.375373769551019980, -0.375420112758081510, -0.375466455026592820, -0.375512796356437970, -0.375559136747501130, -0.375605476199666890, -0.375651814712818500, -0.375698152286840610, +-0.375744488921617710, -0.375790824617033230, -0.375837159372971630, -0.375883493189317190, -0.375929826065954380, -0.375976158002766630, -0.376022488999638470, -0.376068819056454060, +-0.376115148173098050, -0.376161476349453740, -0.376207803585405790, -0.376254129880838280, -0.376300455235635880, -0.376346779649681880, -0.376393103122861010, -0.376439425655057720, +-0.376485747246155520, -0.376532067896038880, -0.376578387604592110, -0.376624706371699370, -0.376671024197245300, -0.376717341081113210, -0.376763657023187810, -0.376809972023353700, +-0.376856286081494190, -0.376902599197493970, -0.376948911371237260, -0.376995222602608700, -0.377041532891491670, -0.377087842237770810, -0.377134150641330770, -0.377180458102054920, +-0.377226764619827900, -0.377273070194533990, -0.377319374826057430, -0.377365678514282820, -0.377411981259093590, -0.377458283060374430, -0.377504583918009950, -0.377550883831883620, +-0.377597182801880090, -0.377643480827883570, -0.377689777909778810, -0.377736074047449130, -0.377782369240779290, -0.377828663489653550, -0.377874956793956550, -0.377921249153571730, +-0.377967540568383830, -0.378013831038277020, -0.378060120563136090, -0.378106409142844440, -0.378152696777286750, -0.378198983466347730, -0.378245269209910860, -0.378291554007860800, +-0.378337837860081850, -0.378384120766458330, -0.378430402726874890, -0.378476683741215070, -0.378522963809363510, -0.378569242931204970, -0.378615521106622890, -0.378661798335502060, +-0.378708074617726650, -0.378754349953181520, -0.378800624341750100, -0.378846897783317090, -0.378893170277766870, -0.378939441824984120, -0.378985712424852350, -0.379031982077256360, +-0.379078250782080350, -0.379124518539209140, -0.379170785348526220, -0.379217051209916330, -0.379263316123264250, -0.379309580088453450, -0.379355843105368680, -0.379402105173894330, +-0.379448366293915100, -0.379494626465314570, -0.379540885687977450, -0.379587143961788160, -0.379633401286631370, -0.379679657662390700, -0.379725913088950870, -0.379772167566196250, +-0.379818421094011650, -0.379864673672280610, -0.379910925300887830, -0.379957175979718180, -0.380003425708655140, -0.380049674487583590, -0.380095922316387780, -0.380142169194952250, +-0.380188415123161650, -0.380234660100899620, -0.380280904128050930, -0.380327147204500390, -0.380373389330131590, -0.380419630504829350, -0.380465870728477980, -0.380512110000962360, +-0.380558348322166060, -0.380604585691973860, -0.380650822110270240, -0.380697057576939950, -0.380743292091866580, -0.380789525654935010, -0.380835758266029610, -0.380881989925035250, +-0.380928220631835510, -0.380974450386315220, -0.381020679188359190, -0.381066907037851070, -0.381113133934675660, -0.381159359878717410, -0.381205584869860780, -0.381251808907990600, +-0.381298031992990500, -0.381344254124745260, -0.381390475303139850, -0.381436695528057870, -0.381482914799384070, -0.381529133117003040, -0.381575350480799600, -0.381621566890657290, +-0.381667782346461150, -0.381713996848095540, -0.381760210395445330, -0.381806422988394180, -0.381852634626826950, -0.381898845310628180, -0.381945055039682680, -0.381991263813874160, +-0.382037471633087430, -0.382083678497207480, -0.382129884406117950, -0.382176089359703650, -0.382222293357849130, -0.382268496400439310, -0.382314698487357830, -0.382360899618489570, +-0.382407099793719120, -0.382453299012931290, -0.382499497276009850, -0.382545694582839600, -0.382591890933305150, -0.382638086327291400, -0.382684280764682030, -0.382730474245361940, +-0.382776666769216070, -0.382822858336128110, -0.382869048945983000, -0.382915238598665280, -0.382961427294059460, -0.383007615032050500, -0.383053801812522080, -0.383099987635359180, +-0.383146172500446690, -0.383192356407668360, -0.383238539356909160, -0.383284721348053580, -0.383330902380986660, -0.383377082455592040, -0.383423261571754710, -0.383469439729359210, +-0.383515616928290560, -0.383561793168432420, -0.383607968449669820, -0.383654142771887310, -0.383700316134969850, -0.383746488538801170, -0.383792659983266280, -0.383838830468250130, +-0.383884999993636510, -0.383931168559310420, -0.383977336165156390, -0.384023502811058960, -0.384069668496903270, -0.384115833222572980, -0.384161996987953060, -0.384208159792928610, +-0.384254321637383320, -0.384300482521202250, -0.384346642444269910, -0.384392801406471470, -0.384438959407690570, -0.384485116447812250, -0.384531272526721150, -0.384577427644302310, +-0.384623581800439480, -0.384669734995017660, -0.384715887227921550, -0.384762038499036120, -0.384808188808245130, -0.384854338155433740, -0.384900486540486860, -0.384946633963288430, +-0.384992780423723370, -0.385038925921676320, -0.385085070457032440, -0.385131214029675430, -0.385177356639490380, -0.385223498286361930, -0.385269638970175190, -0.385315778690813900, +-0.385361917448163170, -0.385408055242107640, -0.385454192072532400, -0.385500327939321320, -0.385546462842359330, -0.385592596781531630, -0.385638729756722030, -0.385684861767815630, +-0.385730992814697030, -0.385777122897250970, -0.385823252015362550, -0.385869380168915530, -0.385915507357795060, -0.385961633581886290, -0.386007758841072970, -0.386053883135240310, +-0.386100006464272890, -0.386146128828055880, -0.386192250226473130, -0.386238370659409750, -0.386284490126750480, -0.386330608628380370, -0.386376726164183340, -0.386422842734044480, +-0.386468958337848500, -0.386515072975480540, -0.386561186646824540, -0.386607299351765520, -0.386653411090188690, -0.386699521861977870, -0.386745631667018310, -0.386791740505194660, +-0.386837848376391620, -0.386883955280494410, -0.386930061217386880, -0.386976166186954180, -0.387022270189081530, -0.387068373223652730, -0.387114475290553040, -0.387160576389667170, +-0.387206676520880260, -0.387252775684076230, -0.387298873879140250, -0.387344971105957110, -0.387391067364411980, -0.387437162654388710, -0.387483256975772570, -0.387529350328448260, +-0.387575442712301040, -0.387621534127214780, -0.387667624573074630, -0.387713714049765900, -0.387759802557172460, -0.387805890095179460, -0.387851976663671830, -0.387898062262534590, +-0.387944146891651800, -0.387990230550908640, -0.388036313240189950, -0.388082394959380850, -0.388128475708365340, -0.388174555487028670, -0.388220634295255610, -0.388266712132931350, +-0.388312788999939930, -0.388358864896166500, -0.388404939821496320, -0.388451013775813430, -0.388497086759002960, -0.388543158770949800, -0.388589229811538710, -0.388635299880654980, +-0.388681368978182620, -0.388727437104006810, -0.388773504258012770, -0.388819570440084640, -0.388865635650107510, -0.388911699887966370, -0.388957763153546350, -0.389003825446731510, +-0.389049886767407090, -0.389095947115457970, -0.389142006490769410, -0.389188064893225380, -0.389234122322711210, -0.389280178779111750, -0.389326234262312280, -0.389372288772196760, +-0.389418342308650520, -0.389464394871558870, -0.389510446460805790, -0.389556497076276600, -0.389602546717856160, -0.389648595385429400, -0.389694643078881520, -0.389740689798096620, +-0.389786735542960010, -0.389832780313357000, -0.389878824109171570, -0.389924866930289100, -0.389970908776594460, -0.390016949647973010, -0.390062989544308740, -0.390109028465486950, +-0.390155066411393080, -0.390201103381911050, -0.390247139376926340, -0.390293174396323720, -0.390339208439988210, -0.390385241507805070, -0.390431273599658460, -0.390477304715433570, +-0.390523334855015890, -0.390569364018289460, -0.390615392205139630, -0.390661419415451290, -0.390707445649109860, -0.390753470905999380, -0.390799495186005210, -0.390845518489012280, +-0.390891540814906010, -0.390937562163570450, -0.390983582534891020, -0.391029601928752580, -0.391075620345040620, -0.391121637783639120, -0.391167654244433560, -0.391213669727309310, +-0.391259684232150410, -0.391305697758842330, -0.391351710307270010, -0.391397721877318420, -0.391443732468872930, -0.391489742081817690, -0.391535750716038080, -0.391581758371419510, +-0.391627765047846190, -0.391673770745203380, -0.391719775463376220, -0.391765779202249980, -0.391811781961708900, -0.391857783741638320, -0.391903784541923320, -0.391949784362449320, +-0.391995783203100360, -0.392041781063761970, -0.392087777944319150, -0.392133773844657310, -0.392179768764660600, -0.392225762704214440, -0.392271755663204320, -0.392317747641514390, +-0.392363738639030070, -0.392409728655636450, -0.392455717691218450, -0.392501705745661620, -0.392547692818850100, -0.392593678910669320, -0.392639664021004810, -0.392685648149740660, +-0.392731631296762470, -0.392777613461955170, -0.392823594645204220, -0.392869574846393840, -0.392915554065409620, -0.392961532302136870, -0.393007509556459860, -0.393053485828264100, +-0.393099461117434660, -0.393145435423856550, -0.393191408747415210, -0.393237381087995000, -0.393283352445481290, -0.393329322819759630, -0.393375292210714270, -0.393421260618230680, +-0.393467228042193920, -0.393513194482489500, -0.393559159939001700, -0.393605124411615990, -0.393651087900217470, -0.393697050404691610, -0.393743011924922730, -0.393788972460796360, +-0.393834932012197490, -0.393880890579011770, -0.393926848161123390, -0.393972804758417890, -0.394018760370780760, -0.394064714998096370, -0.394110668640250130, -0.394156621297127250, +-0.394202572968612830, -0.394248523654592400, -0.394294473354950210, -0.394340422069571870, -0.394386369798342850, -0.394432316541147520, -0.394478262297871420, -0.394524207068399630, +-0.394570150852617760, -0.394616093650410060, -0.394662035461662180, -0.394707976286259200, -0.394753916124086670, -0.394799854975028900, -0.394845792838971590, -0.394891729715799720, +-0.394937665605398950, -0.394983600507653630, -0.395029534422449310, -0.395075467349671530, -0.395121399289204700, -0.395167330240934370, -0.395213260204745680, -0.395259189180524270, +-0.395305117168154470, -0.395351044167521930, -0.395396970178511720, -0.395442895201009500, -0.395488819234899700, -0.395534742280067800, -0.395580664336399050, -0.395626585403779040, +-0.395672505482092150, -0.395718424571224030, -0.395764342671060200, -0.395810259781485150, -0.395856175902384420, -0.395902091033643270, -0.395948005175146890, -0.395993918326780940, +-0.396039830488429720, -0.396085741659979010, -0.396131651841314270, -0.396177561032320050, -0.396223469232881880, -0.396269376442885070, -0.396315282662215220, -0.396361187890756750, +-0.396407092128395310, -0.396452995375016160, -0.396498897630504940, -0.396544798894746030, -0.396590699167625130, -0.396636598449027490, -0.396682496738838760, -0.396728394036943380, +-0.396774290343227030, -0.396820185657575320, -0.396866079979872780, -0.396911973310005000, -0.396957865647857340, -0.397003756993314970, -0.397049647346263630, -0.397095536706587760, +-0.397141425074173100, -0.397187312448905210, -0.397233198830668650, -0.397279084219349150, -0.397324968614831910, -0.397370852017002620, -0.397416734425745820, -0.397462615840947160, +-0.397508496262492020, -0.397554375690265970, -0.397600254124153620, -0.397646131564040610, -0.397692008009812300, -0.397737883461354360, -0.397783757918551310, -0.397829631381288850, +-0.397875503849452750, -0.397921375322927480, -0.397967245801598760, -0.398013115285351940, -0.398058983774072670, -0.398104851267645610, -0.398150717765956400, -0.398196583268890400, +-0.398242447776333330, -0.398288311288169770, -0.398334173804285370, -0.398380035324565620, -0.398425895848896150, -0.398471755377161510, -0.398517613909247500, -0.398563471445039840, +-0.398609327984423110, -0.398655183527283070, -0.398701038073505100, -0.398746891622974500, -0.398792744175577090, -0.398838595731197400, -0.398884446289721200, -0.398930295851034340, +-0.398976144415021330, -0.399021991981567900, -0.399067838550559550, -0.399113684121881970, -0.399159528695419820, -0.399205372271058790, -0.399251214848684370, -0.399297056428182310, +-0.399342897009437200, -0.399388736592334870, -0.399434575176760680, -0.399480412762600430, -0.399526249349738790, -0.399572084938061510, -0.399617919527454400, -0.399663753117802110, +-0.399709585708990460, -0.399755417300904800, -0.399801247893430630, -0.399847077486453760, -0.399892906079858720, -0.399938733673531500, -0.399984560267357790, -0.400030385861222300, +-0.400076210455010850, -0.400122034048608850, -0.400167856641902190, -0.400213678234775490, -0.400259498827114590, -0.400305318418804900, -0.400351137009732350, -0.400396954599781580, +-0.400442771188838420, -0.400488586776788280, -0.400534401363517150, -0.400580214948909550, -0.400626027532851430, -0.400671839115228630, -0.400717649695925880, -0.400763459274828980, +-0.400809267851823410, -0.400855075426795100, -0.400900881999628700, -0.400946687570210070, -0.400992492138424750, -0.401038295704158610, -0.401084098267296300, -0.401129899827723730, +-0.401175700385326460, -0.401221499939990290, -0.401267298491600030, -0.401313096040041450, -0.401358892585200580, -0.401404688126962060, -0.401450482665211830, -0.401496276199835410, +-0.401542068730718240, -0.401587860257746340, -0.401633650780804430, -0.401679440299778310, -0.401725228814554080, -0.401771016325016330, -0.401816802831051030, -0.401862588332543740, +-0.401908372829380360, -0.401954156321445650, -0.401999938808625560, -0.402045720290805600, -0.402091500767871760, -0.402137280239708790, -0.402183058706202580, -0.402228836167238760, +-0.402274612622703250, -0.402320388072480770, -0.402366162516457350, -0.402411935954518910, -0.402457708386550210, -0.402503479812437280, -0.402549250232065610, -0.402595019645320850, +-0.402640788052088970, -0.402686555452254680, -0.402732321845703960, -0.402778087232322890, -0.402823851611996190, -0.402869614984609880, -0.402915377350049510, -0.402961138708201110, +-0.403006899058949430, -0.403052658402180520, -0.403098416737780410, -0.403144174065633800, -0.403189930385626780, -0.403235685697644900, -0.403281440001573840, -0.403327193297299600, +-0.403372945584706930, -0.403418696863681920, -0.403464447134110560, -0.403510196395877710, -0.403555944648869350, -0.403601691892971130, -0.403647438128069080, -0.403693183354048020, +-0.403738927570793990, -0.403784670778192690, -0.403830412976130090, -0.403876154164491070, -0.403921894343161610, -0.403967633512027470, -0.404013371670974620, -0.404059108819887990, +-0.404104844958653510, -0.404150580087157370, -0.404196314205284400, -0.404242047312920570, -0.404287779409951700, -0.404333510496263320, -0.404379240571741630, -0.404424969636271390, +-0.404470697689738700, -0.404516424732029760, -0.404562150763029260, -0.404607875782623420, -0.404653599790697930, -0.404699322787138770, -0.404745044771830930, -0.404790765744660500, +-0.404836485705513170, -0.404882204654274990, -0.404927922590830880, -0.404973639515066990, -0.405019355426869010, -0.405065070326123040, -0.405110784212713960, -0.405156497086527960, +-0.405202208947451130, -0.405247919795368340, -0.405293629630165740, -0.405339338451729090, -0.405385046259944090, -0.405430753054696890, -0.405476458835872410, -0.405522163603356740, +-0.405567867357036150, -0.405613570096795380, -0.405659271822520760, -0.405704972534097930, -0.405750672231413090, -0.405796370914351170, -0.405842068582798310, -0.405887765236640660, +-0.405933460875763210, -0.405979155500052090, -0.406024849109393130, -0.406070541703672020, -0.406116233282774960, -0.406161923846586890, -0.406207613394994060, -0.406253301927882560, +-0.406298989445137430, -0.406344675946644810, -0.406390361432290510, -0.406436045901960700, -0.406481729355540390, -0.406527411792915740, -0.406573093213972560, -0.406618773618597050, +-0.406664453006674200, -0.406710131378090260, -0.406755808732730930, -0.406801485070482530, -0.406847160391229980, -0.406892834694859540, -0.406938507981257410, -0.406984180250308640, +-0.407029851501899350, -0.407075521735915490, -0.407121190952242810, -0.407166859150767560, -0.407212526331374780, -0.407258192493950620, -0.407303857638381450, -0.407349521764552190, +-0.407395184872349160, -0.407440846961658170, -0.407486508032365410, -0.407532168084356050, -0.407577827117516220, -0.407623485131731800, -0.407669142126889150, -0.407714798102873200, +-0.407760453059570260, -0.407806106996866150, -0.407851759914647230, -0.407897411812798480, -0.407943062691206170, -0.407988712549756660, -0.408034361388334930, -0.408080009206827350, +-0.408125656005119690, -0.408171301783098290, -0.408216946540648270, -0.408262590277655880, -0.408308232994006980, -0.408353874689587950, -0.408399515364283820, -0.408445155017980900, +-0.408490793650565060, -0.408536431261922680, -0.408582067851938790, -0.408627703420499750, -0.408673337967491830, -0.408718971492800180, -0.408764603996311090, -0.408810235477910510, +-0.408855865937484300, -0.408901495374918880, -0.408947123790099290, -0.408992751182911900, -0.409038377553243020, -0.409084002900977790, -0.409129627226002600, -0.409175250528203300, +-0.409220872807466270, -0.409266494063676710, -0.409312114296720870, -0.409357733506484740, -0.409403351692854690, -0.409448968855715860, -0.409494584994954610, -0.409540200110456890, +-0.409585814202109100, -0.409631427269796340, -0.409677039313405040, -0.409722650332821510, -0.409768260327930960, -0.409813869298619790, -0.409859477244773900, -0.409905084166279350, +-0.409950690063022480, -0.409996294934888480, -0.410041898781763780, -0.410087501603534690, -0.410133103400086460, -0.410178704171305470, -0.410224303917077760, -0.410269902637289630, +-0.410315500331826340, -0.410361097000574330, -0.410406692643419610, -0.410452287260248520, -0.410497880850946300, -0.410543473415399370, -0.410589064953493790, -0.410634655465115960, +-0.410680244950151040, -0.410725833408485560, -0.410771420840005840, -0.410817007244597240, -0.410862592622146080, -0.410908176972538450, -0.410953760295660770, -0.410999342591398250, +-0.411044923859637420, -0.411090504100264260, -0.411136083313165260, -0.411181661498225660, -0.411227238655331890, -0.411272814784370060, -0.411318389885226510, -0.411363963957786630, +-0.411409537001936890, -0.411455109017563660, -0.411500680004552260, -0.411546249962789160, -0.411591818892160400, -0.411637386792552130, -0.411682953663850830, -0.411728519505941690, +-0.411774084318711260, -0.411819648102046020, -0.411865210855831280, -0.411910772579953510, -0.411956333274298760, -0.412001892938753670, -0.412047451573203380, -0.412093009177534440, +-0.412138565751633050, -0.412184121295385620, -0.412229675808677480, -0.412275229291395100, -0.412320781743424680, -0.412366333164652770, -0.412411883554964550, -0.412457432914246640, +-0.412502981242385550, -0.412548528539266660, -0.412594074804776390, -0.412639620038800950, -0.412685164241226420, -0.412730707411939460, -0.412776249550825260, -0.412821790657770470, +-0.412867330732661570, -0.412912869775383990, -0.412958407785824210, -0.413003944763868420, -0.413049480709403170, -0.413095015622313820, -0.413140549502486910, -0.413186082349808640, +-0.413231614164165590, -0.413277144945443040, -0.413322674693527680, -0.413368203408305600, -0.413413731089663450, -0.413459257737486600, -0.413504783351661520, -0.413550307932074920, +-0.413595831478612170, -0.413641353991159810, -0.413686875469604090, -0.413732395913831600, -0.413777915323727650, -0.413823433699178960, -0.413868951040071710, -0.413914467346292450, +-0.413959982617726600, -0.414005496854260800, -0.414051010055781320, -0.414096522222174630, -0.414142033353326330, -0.414187543449122840, -0.414233052509450970, -0.414278560534196040, +-0.414324067523244740, -0.414369573476483230, -0.414415078393797760, -0.414460582275075100, -0.414506085120200480, -0.414551586929060690, -0.414597087701542360, -0.414642587437530850, +-0.414688086136912880, -0.414733583799574760, -0.414779080425403010, -0.414824576014283190, -0.414870070566101920, -0.414915564080745480, -0.414961056558100560, -0.415006547998052530, +-0.415052038400488210, -0.415097527765293740, -0.415143016092355880, -0.415188503381560050, -0.415233989632792950, -0.415279474845941350, -0.415324959020890620, -0.415370442157527440, +-0.415415924255738260, -0.415461405315409200, -0.415506885336427050, -0.415552364318677260, -0.415597842262046550, -0.415643319166421670, -0.415688795031688100, -0.415734269857732490, +-0.415779743644441260, -0.415825216391701060, -0.415870688099397420, -0.415916158767417050, -0.415961628395646650, -0.416007096983971870, -0.416052564532279230, -0.416098031040455290, +-0.416143496508386220, -0.416188960935958810, -0.416234424323058570, -0.416279886669572330, -0.416325347975386730, -0.416370808240387360, -0.416416267464460980, -0.416461725647493950, +-0.416507182789372990, -0.416552638889983670, -0.416598093949212770, -0.416643547966946640, -0.416689000943071990, -0.416734452877474460, -0.416779903770040820, -0.416825353620657420, +-0.416870802429211040, -0.416916250195587200, -0.416961696919672780, -0.417007142601354520, -0.417052587240518020, -0.417098030837049990, -0.417143473390836960, -0.417188914901765180, +-0.417234355369721530, -0.417279794794591650, -0.417325233176262190, -0.417370670514620120, -0.417416106809550940, -0.417461542060941490, -0.417506976268678220, -0.417552409432647880, +-0.417597841552736100, -0.417643272628829780, -0.417688702660815200, -0.417734131648579310, -0.417779559592007690, -0.417824986490987150, -0.417870412345404170, -0.417915837155145520, +-0.417961260920096890, -0.418006683640145150, -0.418052105315177060, -0.418097525945078320, -0.418142945529735800, -0.418188364069035870, -0.418233781562865000, -0.418279198011110130, +-0.418324613413656840, -0.418370027770392060, -0.418415441081202600, -0.418460853345974100, -0.418506264564593500, -0.418551674736947210, -0.418597083862922160, -0.418642491942403940, +-0.418687898975279580, -0.418733304961435790, -0.418778709900758380, -0.418824113793134220, -0.418869516638449730, -0.418914918436591450, -0.418960319187446310, -0.419005718890899990, +-0.419051117546839320, -0.419096515155151280, -0.419141911715721520, -0.419187307228437000, -0.419232701693184220, -0.419278095109850090, -0.419323487478320320, -0.419368878798481840, +-0.419414269070221170, -0.419459658293425190, -0.419505046467979700, -0.419550433593771530, -0.419595819670687380, -0.419641204698613990, -0.419686588677437240, -0.419731971607044010, +-0.419777353487321260, -0.419822734318154700, -0.419868114099431310, -0.419913492831037630, -0.419958870512860240, -0.420004247144786070, -0.420049622726700820, -0.420094997258491590, +-0.420140370740045230, -0.420185743171247570, -0.420231114551985530, -0.420276484882145750, -0.420321854161615100, -0.420367222390279460, -0.420412589568025740, -0.420457955694740540, +-0.420503320770310830, -0.420548684794622480, -0.420594047767562370, -0.420639409689017140, -0.420684770558873820, -0.420730130377018170, -0.420775489143337180, -0.420820846857717870, +-0.420866203520046000, -0.420911559130208670, -0.420956913688092460, -0.421002267193584300, -0.421047619646570110, -0.421092971046936880, -0.421138321394571250, -0.421183670689360190, +-0.421229018931189520, -0.421274366119946340, -0.421319712255517230, -0.421365057337789230, -0.421410401366648200, -0.421455744341981190, -0.421501086263675160, -0.421546427131616050, +-0.421591766945690890, -0.421637105705786270, -0.421682443411788950, -0.421727780063585860, -0.421773115661062960, -0.421818450204107240, -0.421863783692605850, -0.421909116126444550, +-0.421954447505510480, -0.421999777829690280, -0.422045107098871000, -0.422090435312938610, -0.422135762471780080, -0.422181088575282190, -0.422226413623331960, -0.422271737615815320, +-0.422317060552619310, -0.422362382433630670, -0.422407703258736440, -0.422453023027822620, -0.422498341740776160, -0.422543659397484280, -0.422588975997832850, -0.422634291541709010, +-0.422679606028999400, -0.422724919459590790, -0.422770231833370260, -0.422815543150223790, -0.422860853410038430, -0.422906162612701360, -0.422951470758098470, -0.422996777846116890, +-0.423042083876643380, -0.423087388849565090, -0.423132692764767890, -0.423177995622138980, -0.423223297421565060, -0.423268598162933330, -0.423313897846129660, -0.423359196471041310, +-0.423404494037554920, -0.423449790545557700, -0.423495085994935570, -0.423540380385575790, -0.423585673717365440, -0.423630965990190460, -0.423676257203938140, -0.423721547358495100, +-0.423766836453748630, -0.423812124489584720, -0.423857411465890400, -0.423902697382552600, -0.423947982239458510, -0.423993266036494010, -0.424038548773546300, -0.424083830450502300, +-0.424129111067249100, -0.424174390623672680, -0.424219669119660300, -0.424264946555099160, -0.424310222929875300, -0.424355498243875810, -0.424400772496987600, -0.424446045689097500, +-0.424491317820092640, -0.424536588889859070, -0.424581858898284090, -0.424627127845254800, -0.424672395730657350, -0.424717662554378870, -0.424762928316306240, -0.424808193016326660, +-0.424853456654326220, -0.424898719230192180, -0.424943980743811290, -0.424989241195070870, -0.425034500583856940, -0.425079758910056780, -0.425125016173557190, -0.425170272374245480, +-0.425215527512007700, -0.425260781586731080, -0.425306034598302910, -0.425351286546609250, -0.425396537431537380, -0.425441787252974160, -0.425487036010806510, -0.425532283704921630, +-0.425577530335205680, -0.425622775901545850, -0.425668020403829510, -0.425713263841942690, -0.425758506215772770, -0.425803747525206560, -0.425848987770131360, -0.425894226950433270, +-0.425939465065999670, -0.425984702116717350, -0.426029938102473750, -0.426075173023154840, -0.426120406878648050, -0.426165639668840190, -0.426210871393618680, -0.426256102052869570, +-0.426301331646480150, -0.426346560174337860, -0.426391787636328790, -0.426437014032340190, -0.426482239362259100, -0.426527463625972820, -0.426572686823367460, -0.426617908954330380, +-0.426663130018748560, -0.426708350016509250, -0.426753568947498720, -0.426798786811604270, -0.426844003608712830, -0.426889219338711770, -0.426934434001487280, -0.426979647596926690, +-0.427024860124917420, -0.427070071585345550, -0.427115281978098500, -0.427160491303063270, -0.427205699560126830, -0.427250906749176540, -0.427296112870098550, -0.427341317922780290, +-0.427386521907109130, -0.427431724822971320, -0.427476926670254110, -0.427522127448844660, -0.427567327158630270, -0.427612525799497160, -0.427657723371332680, -0.427702919874023980, +-0.427748115307458320, -0.427793309671521960, -0.427838502966102370, -0.427883695191086540, -0.427928886346361840, -0.427974076431814510, -0.428019265447331990, -0.428064453392801750, +-0.428109640268109940, -0.428154826073144030, -0.428200010807791080, -0.428245194471938100, -0.428290377065472520, -0.428335558588280600, -0.428380739040249760, -0.428425918421267480, +-0.428471096731220020, -0.428516273969994810, -0.428561450137478930, -0.428606625233559860, -0.428651799258123740, -0.428696972211058180, -0.428742144092250200, -0.428787314901587220, +-0.428832484638955570, -0.428877653304242710, -0.428922820897335690, -0.428967987418122090, -0.429013152866488060, -0.429058317242321130, -0.429103480545508840, -0.429148642775937450, +-0.429193803933494490, -0.429238964018066940, -0.429284123029542440, -0.429329280967807200, -0.429374437832748810, -0.429419593624254250, -0.429464748342211160, -0.429509901986505790, +-0.429555054557025640, -0.429600206053657900, -0.429645356476289990, -0.429690505824808330, -0.429735654099100420, -0.429780801299053720, -0.429825947424554660, -0.429871092475490710, +-0.429916236451749030, -0.429961379353216770, -0.430006521179781440, -0.430051661931329430, -0.430096801607748270, -0.430141940208925490, -0.430187077734747460, -0.430232214185101770, +-0.430277349559875510, -0.430322483858956270, -0.430367617082230420, -0.430412749229585560, -0.430457880300908810, -0.430503010296087730, -0.430548139215008780, -0.430593267057559460, +-0.430638393823626950, -0.430683519513098860, -0.430728644125861590, -0.430773767661802700, -0.430818890120809820, -0.430864011502769260, -0.430909131807568730, -0.430954251035095330, +-0.430999369185236290, -0.431044486257879280, -0.431089602252910600, -0.431134717170217950, -0.431179831009688930, -0.431224943771209900, -0.431270055454668510, -0.431315166059951960, +-0.431360275586947890, -0.431405384035542790, -0.431450491405624190, -0.431495597697079790, -0.431540702909795960, -0.431585807043660400, -0.431630910098560310, -0.431676012074382940, +-0.431721112971015950, -0.431766212788345760, -0.431811311526260070, -0.431856409184646520, -0.431901505763391480, -0.431946601262382710, -0.431991695681507410, -0.432036789020653340, +-0.432081881279706810, -0.432126972458555640, -0.432172062557087010, -0.432217151575188640, -0.432262239512747000, -0.432307326369649750, -0.432352412145784180, -0.432397496841037950, +-0.432442580455297650, -0.432487662988450820, -0.432532744440385310, -0.432577824810987500, -0.432622904100145090, -0.432667982307745500, -0.432713059433675880, -0.432758135477824050, +-0.432803210440076470, -0.432848284320320850, -0.432893357118444950, -0.432938428834335250, -0.432983499467879510, -0.433028569018964970, -0.433073637487479400, -0.433118704873309390, +-0.433163771176342580, -0.433208836396466350, -0.433253900533568440, -0.433298963587535340, -0.433344025558254850, -0.433389086445614360, -0.433434146249501500, -0.433479204969802860, +-0.433524262606406200, -0.433569319159199330, -0.433614374628068730, -0.433659429012902220, -0.433704482313587100, -0.433749534530011190, -0.433794585662061030, -0.433839635709624470, +-0.433884684672588780, -0.433929732550841770, -0.433974779344270030, -0.434019825052761320, -0.434064869676203060, -0.434109913214483060, -0.434154955667487850, -0.434199997035105260, +-0.434245037317223080, -0.434290076513727920, -0.434335114624507520, -0.434380151649449380, -0.434425187588440840, -0.434470222441369740, -0.434515256208122700, -0.434560288888587500, +-0.434605320482651940, -0.434650350990202720, -0.434695380411127650, -0.434740408745314060, -0.434785435992649900, -0.434830462153021740, -0.434875487226317410, -0.434920511212424420, +-0.434965534111230460, -0.435010555922622330, -0.435055576646487810, -0.435100596282714300, -0.435145614831189740, -0.435190632291800720, -0.435235648664435150, -0.435280663948980850, +-0.435325678145324470, -0.435370691253353930, -0.435415703272956640, -0.435460714204020050, -0.435505724046432120, -0.435550732800079500, -0.435595740464850000, -0.435640747040631600, +-0.435685752527310900, -0.435730756924775810, -0.435775760232913870, -0.435820762451612890, -0.435865763580759620, -0.435910763620241950, -0.435955762569947340, -0.436000760429763770, +-0.436045757199577830, -0.436090752879277570, -0.436135747468750390, -0.436180740967884230, -0.436225733376565840, -0.436270724694683140, -0.436315714922124010, -0.436360704058775140, +-0.436405692104524570, -0.436450679059259770, -0.436495664922868620, -0.436540649695237980, -0.436585633376255670, -0.436630615965809320, -0.436675597463786760, -0.436720577870074840, +-0.436765557184561500, -0.436810535407134220, -0.436855512537681070, -0.436900488576088710, -0.436945463522245110, -0.436990437376038270, -0.437035410137354920, -0.437080381806083000, +-0.437125352382110200, -0.437170321865324010, -0.437215290255612400, -0.437260257552862130, -0.437305223756961290, -0.437350188867797750, -0.437395152885258320, -0.437440115809231030, +-0.437485077639603430, -0.437530038376263590, -0.437574998019098220, -0.437619956567995350, -0.437664914022842580, -0.437709870383527930, -0.437754825649938230, -0.437799779821961440, +-0.437844732899485220, -0.437889684882397550, -0.437934635770585280, -0.437979585563936400, -0.438024534262339000, -0.438069481865679840, -0.438114428373846950, -0.438159373786728030, +-0.438204318104210680, -0.438249261326182860, -0.438294203452531560, -0.438339144483144760, -0.438384084417910440, -0.438429023256715570, -0.438473960999448080, -0.438518897645995720, +-0.438563833196246530, -0.438608767650087330, -0.438653701007406250, -0.438698633268090890, -0.438743564432029330, -0.438788494499108510, -0.438833423469216390, -0.438878351342240740, +-0.438923278118069640, -0.438968203796589910, -0.439013128377689690, -0.439058051861257010, -0.439102974247178870, -0.439147895535343220, -0.439192815725637900, -0.439237734817950860, +-0.439282652812169160, -0.439327569708180820, -0.439372485505873490, -0.439417400205135420, -0.439462313805853430, -0.439507226307915610, -0.439552137711209770, -0.439597048015623990, +-0.439641957221045150, -0.439686865327361450, -0.439731772334460980, -0.439776678242230710, -0.439821583050558680, -0.439866486759332760, -0.439911389368440600, -0.439956290877770330, +-0.440001191287208990, -0.440046090596644620, -0.440090988805965480, -0.440135885915058420, -0.440180781923811660, -0.440225676832112940, -0.440270570639850420, -0.440315463346911130, +-0.440360354953183100, -0.440405245458554250, -0.440450134862912620, -0.440495023166145310, -0.440539910368140440, -0.440584796468785790, -0.440629681467969550, -0.440674565365578700, +-0.440719448161501380, -0.440764329855625910, -0.440809210447839220, -0.440854089938029440, -0.440898968326084490, -0.440943845611892150, -0.440988721795340540, -0.441033596876316710, +-0.441078470854708920, -0.441123343730405350, -0.441168215503293050, -0.441213086173260160, -0.441257955740194550, -0.441302824203984480, -0.441347691564516980, -0.441392557821680190, +-0.441437422975362040, -0.441482287025450730, -0.441527149971833290, -0.441572011814397980, -0.441616872553032670, -0.441661732187625560, -0.441706590718063670, -0.441751448144235390, +-0.441796304466028860, -0.441841159683331150, -0.441886013796030540, -0.441930866804014890, -0.441975718707172500, -0.442020569505390370, -0.442065419198556850, -0.442110267786559820, +-0.442155115269287470, -0.442199961646626890, -0.442244806918466460, -0.442289651084694040, -0.442334494145197880, -0.442379336099865070, -0.442424176948583880, -0.442469016691242720, +-0.442513855327728580, -0.442558692857929810, -0.442603529281734300, -0.442648364599029950, -0.442693198809705090, -0.442738031913646910, -0.442782863910743560, -0.442827694800883460, +-0.442872524583953760, -0.442917353259842770, -0.442962180828438360, -0.443007007289628880, -0.443051832643301500, -0.443096656889344580, -0.443141480027645970, -0.443186302058094060, +-0.443231122980575990, -0.443275942794980120, -0.443320761501194430, -0.443365579099107180, -0.443410395588605620, -0.443455210969578070, -0.443500025241912900, -0.443544838405497240, +-0.443589650460219480, -0.443634461405967630, -0.443679271242629570, -0.443724079970093780, -0.443768887588247400, -0.443813694096978790, -0.443858499496176280, -0.443903303785727230, +-0.443948106965519840, -0.443992909035442200, -0.444037709995382720, -0.444082509845228510, -0.444127308584868100, -0.444172106214189790, -0.444216902733080790, -0.444261698141429520, +-0.444306492439124010, -0.444351285626052310, -0.444396077702102770, -0.444440868667162650, -0.444485658521120370, -0.444530447263864310, -0.444575234895281720, -0.444620021415261080, +-0.444664806823690360, -0.444709591120458050, -0.444754374305451390, -0.444799156378558710, -0.444843937339668210, -0.444888717188668240, -0.444933495925446070, -0.444978273549890170, +-0.445023050061888580, -0.445067825461329780, -0.445112599748101020, -0.445157372922090730, -0.445202144983187440, -0.445246915931278350, -0.445291685766252000, -0.445336454487996470, +-0.445381222096399740, -0.445425988591350410, -0.445470753972735670, -0.445515518240444050, -0.445560281394364040, -0.445605043434382900, -0.445649804360389200, -0.445694564172270940, +-0.445739322869916690, -0.445784080453213770, -0.445828836922050610, -0.445873592276315340, -0.445918346515896510, -0.445963099640681430, -0.446007851650558620, -0.446052602545416120, +-0.446097352325142580, -0.446142100989625200, -0.446186848538752570, -0.446231594972413270, -0.446276340290494570, -0.446321084492884990, -0.446365827579472680, -0.446410569550145850, +-0.446455310404792970, -0.446500050143301460, -0.446544788765559750, -0.446589526271456540, -0.446634262660879080, -0.446678997933715960, -0.446723732089855330, -0.446768465129185830, +-0.446813197051594720, -0.446857927856970650, -0.446902657545202090, -0.446947386116176570, -0.446992113569782520, -0.447036839905908200, -0.447081565124441800, -0.447126289225271920, +-0.447171012208285870, -0.447215734073372280, -0.447260454820419760, -0.447305174449315720, -0.447349892959948760, -0.447394610352207070, -0.447439326625979240, -0.447484041781152640, +-0.447528755817616030, -0.447573468735257440, -0.447618180533965630, -0.447662891213627960, -0.447707600774133070, -0.447752309215369180, -0.447797016537224920, -0.447841722739587720, +-0.447886427822346170, -0.447931131785389010, -0.447975834628603580, -0.448020536351878550, -0.448065236955102250, -0.448109936438162770, -0.448154634800948910, -0.448199332043348050, +-0.448244028165248830, -0.448288723166540000, -0.448333417047108940, -0.448378109806844280, -0.448422801445634400, -0.448467491963367940, -0.448512181359932320, -0.448556869635216240, +-0.448601556789107960, -0.448646242821496230, -0.448690927732268490, -0.448735611521313420, -0.448780294188519340, -0.448824975733774890, -0.448869656156967610, -0.448914335457986200, +-0.448959013636719360, -0.449003690693054570, -0.449048366626880580, -0.449093041438085650, -0.449137715126558530, -0.449182387692186710, -0.449227059134858940, -0.449271729454463480, +-0.449316398650889130, -0.449361066724023370, -0.449405733673754970, -0.449450399499972230, -0.449495064202563850, -0.449539727781417490, -0.449584390236421720, -0.449629051567465410, +-0.449673711774436100, -0.449718370857222490, -0.449763028815712950, -0.449807685649795840, -0.449852341359359920, -0.449896995944292720, -0.449941649404483060, -0.449986301739819680, +-0.450030952950190130, -0.450075603035483160, -0.450120251995587250, -0.450164899830391100, -0.450209546539782290, -0.450254192123649590, -0.450298836581881410, -0.450343479914366570, +-0.450388122120992610, -0.450432763201648380, -0.450477403156222200, -0.450522041984602940, -0.450566679686678130, -0.450611316262336690, -0.450655951711467330, -0.450700586033957680, +-0.450745219229696570, -0.450789851298572410, -0.450834482240473620, -0.450879112055289020, -0.450923740742906250, -0.450968368303214130, -0.451012994736101460, -0.451057620041455940, +-0.451102244219166340, -0.451146867269121180, -0.451191489191209220, -0.451236109985318160, -0.451280729651336750, -0.451325348189153600, -0.451369965598657440, -0.451414581879735990, +-0.451459197032278050, -0.451503811056172160, -0.451548423951307120, -0.451593035717570590, -0.451637646354851540, -0.451682255863038730, -0.451726864242019910, -0.451771471491683900, +-0.451816077611919220, -0.451860682602614750, -0.451905286463658130, -0.451949889194938340, -0.451994490796343850, -0.452039091267763480, -0.452083690609084990, -0.452128288820197290, +-0.452172885900988920, -0.452217481851348630, -0.452262076671164300, -0.452306670360324790, -0.452351262918718970, -0.452395854346234580, -0.452440444642760620, -0.452485033808185500, +-0.452529621842397810, -0.452574208745286420, -0.452618794516739200, -0.452663379156644900, -0.452707962664892600, -0.452752545041369970, -0.452797126285966020, -0.452841706398569240, +-0.452886285379068550, -0.452930863227351820, -0.452975439943307860, -0.453020015526825360, -0.453064589977793200, -0.453109163296099130, -0.453153735481632180, -0.453198306534280890, +-0.453242876453934240, -0.453287445240480040, -0.453332012893807150, -0.453376579413804660, -0.453421144800360330, -0.453465709053363140, -0.453510272172701680, -0.453554834158264530, +-0.453599395009940680, -0.453643954727617980, -0.453688513311185370, -0.453733070760531820, -0.453777627075545250, -0.453822182256114650, -0.453866736302128540, -0.453911289213476010, +-0.453955840990044880, -0.454000391631724120, -0.454044941138402380, -0.454089489509968690, -0.454134036746310870, -0.454178582847317940, -0.454223127812878600, -0.454267671642881840, +-0.454312214337215470, -0.454356755895768570, -0.454401296318430180, -0.454445835605088170, -0.454490373755631500, -0.454534910769949010, -0.454579446647929540, -0.454623981389461140, +-0.454668514994432730, -0.454713047462733060, -0.454757578794251160, -0.454802108988874910, -0.454846638046493390, -0.454891165966995250, -0.454935692750269630, -0.454980218396204390, +-0.455024742904688580, -0.455069266275611280, -0.455113788508860470, -0.455158309604325180, -0.455202829561894120, -0.455247348381455970, -0.455291866062899840, -0.455336382606113640, +-0.455380898010986520, -0.455425412277407520, -0.455469925405264600, -0.455514437394446860, -0.455558948244843050, -0.455603457956342270, -0.455647966528832440, -0.455692473962202690, +-0.455736980256341740, -0.455781485411138780, -0.455825989426481670, -0.455870492302259570, -0.455914994038361280, -0.455959494634675890, -0.456003994091091380, -0.456048492407496840, +-0.456092989583781530, -0.456137485619833300, -0.456181980515541370, -0.456226474270794490, -0.456270966885481410, -0.456315458359491330, -0.456359948692712240, -0.456404437885033210, +-0.456448925936343510, -0.456493412846531110, -0.456537898615485160, -0.456582383243094470, -0.456626866729248240, -0.456671349073834440, -0.456715830276742230, -0.456760310337860850, +-0.456804789257078350, -0.456849267034283860, -0.456893743669366190, -0.456938219162214110, -0.456982693512716920, -0.457027166720762660, -0.457071638786240410, -0.457116109709039490, +-0.457160579489047870, -0.457205048126154810, -0.457249515620249130, -0.457293981971220060, -0.457338447178955660, -0.457382911243345120, -0.457427374164277310, -0.457471835941641480, +-0.457516296575325660, -0.457560756065219070, -0.457605214411210600, -0.457649671613189480, -0.457694127671043840, -0.457738582584662820, -0.457783036353935750, -0.457827488978750700, +-0.457871940458996930, -0.457916390794563310, -0.457960839985338760, -0.458005288031212430, -0.458049734932072520, -0.458094180687808270, -0.458138625298308950, -0.458183068763462710, +-0.458227511083158730, -0.458271952257286060, -0.458316392285733840, -0.458360831168390270, -0.458405268905144600, -0.458449705495885820, -0.458494140940503110, -0.458538575238884640, +-0.458583008390919760, -0.458627440396497390, -0.458671871255506790, -0.458716300967836110, -0.458760729533374660, -0.458805156952011790, -0.458849583223635670, -0.458894008348135540, +-0.458938432325400440, -0.458982855155319220, -0.459027276837781270, -0.459071697372674730, -0.459116116759888950, -0.459160534999313310, -0.459204952090835890, -0.459249368034346070, +-0.459293782829732880, -0.459338196476885620, -0.459382608975692440, -0.459427020326042770, -0.459471430527825960, -0.459515839580930120, -0.459560247485244710, -0.459604654240658720, +-0.459649059847061060, -0.459693464304341160, -0.459737867612387160, -0.459782269771088550, -0.459826670780334620, -0.459871070640013650, -0.459915469350014980, -0.459959866910227670, +-0.460004263320541060, -0.460048658580843370, -0.460093052691024070, -0.460137445650972140, -0.460181837460576950, -0.460226228119726850, -0.460270617628311120, -0.460315005986218880, +-0.460359393193339460, -0.460403779249561220, -0.460448164154773520, -0.460492547908865790, -0.460536930511726340, -0.460581311963244480, -0.460625692263309410, -0.460670071411810100, +-0.460714449408635980, -0.460758826253675370, -0.460803201946817680, -0.460847576487952380, -0.460891949876967740, -0.460936322113753240, -0.460980693198197900, -0.461025063130191260, +-0.461069431909621570, -0.461113799536378320, -0.461158166010350530, -0.461202531331427690, -0.461246895499498210, -0.461291258514451410, -0.461335620376176540, -0.461379981084562960, +-0.461424340639499050, -0.461468699040874290, -0.461513056288578140, -0.461557412382499030, -0.461601767322526340, -0.461646121108549250, -0.461690473740457240, -0.461734825218138630, +-0.461779175541482960, -0.461823524710379410, -0.461867872724717410, -0.461912219584385330, -0.461956565289272700, -0.462000909839268610, -0.462045253234262710, -0.462089595474143240, +-0.462133936558799810, -0.462178276488121930, -0.462222615261997980, -0.462266952880317440, -0.462311289342969560, -0.462355624649843480, -0.462399958800828680, -0.462444291795813590, +-0.462488623634687790, -0.462532954317340820, -0.462577283843661090, -0.462621612213538150, -0.462665939426861180, -0.462710265483519730, -0.462754590383402220, -0.462798914126398230, +-0.462843236712397020, -0.462887558141288010, -0.462931878412959800, -0.462976197527301850, -0.463020515484203420, -0.463064832283554110, -0.463109147925242270, -0.463153462409157610, +-0.463197775735189670, -0.463242087903226910, -0.463286398913158930, -0.463330708764874980, -0.463375017458264200, -0.463419324993216310, -0.463463631369619710, -0.463507936587364000, +-0.463552240646338880, -0.463596543546432700, -0.463640845287535240, -0.463685145869535630, -0.463729445292323570, -0.463773743555787490, -0.463818040659817020, -0.463862336604301480, +-0.463906631389130520, -0.463950925014192550, -0.463995217479377280, -0.464039508784573950, -0.464083798929672280, -0.464128087914560670, -0.464172375739128900, -0.464216662403266530, +-0.464260947906862120, -0.464305232249805360, -0.464349515431985550, -0.464393797453292290, -0.464438078313614170, -0.464482358012840820, -0.464526636550861630, -0.464570913927566160, +-0.464615190142843080, -0.464659465196582020, -0.464703739088672300, -0.464748011819003600, -0.464792283387464480, -0.464836553793944670, -0.464880823038333830, -0.464925091120520610, +-0.464969358040394630, -0.465013623797845220, -0.465057888392761800, -0.465102151825034000, -0.465146414094550490, -0.465190675201200890, -0.465234935144875020, -0.465279193925461410, +-0.465323451542849820, -0.465367707996929610, -0.465411963287590490, -0.465456217414721100, -0.465500470378211180, -0.465544722177950070, -0.465588972813827550, -0.465633222285732230, +-0.465677470593553800, -0.465721717737181740, -0.465765963716505750, -0.465810208531414470, -0.465854452181797660, -0.465898694667545080, -0.465942935988545410, -0.465987176144688430, +-0.466031415135863440, -0.466075652961959960, -0.466119889622867770, -0.466164125118475380, -0.466208359448672730, -0.466252592613349560, -0.466296824612394520, -0.466341055445697430, +-0.466385285113147700, -0.466429513614635140, -0.466473740950048400, -0.466517967119277340, -0.466562192122211340, -0.466606415958740250, -0.466650638628752720, -0.466694860132138570, +-0.466739080468787320, -0.466783299638588720, -0.466827517641431490, -0.466871734477205480, -0.466915950145800560, -0.466960164647105320, -0.467004377981009690, -0.467048590147403130, +-0.467092801146175460, -0.467137010977215380, -0.467181219640412810, -0.467225427135657180, -0.467269633462838340, -0.467313838621845060, -0.467358042612567190, -0.467402245434894230, +-0.467446447088716020, -0.467490647573921280, -0.467534846890399920, -0.467579045038041870, -0.467623242016735830, -0.467667437826371660, -0.467711632466838890, -0.467755825938027000, +-0.467800018239826030, -0.467844209372124560, -0.467888399334812580, -0.467932588127779990, -0.467976775750915560, -0.468020962204109160, -0.468065147487250370, -0.468109331600229110, +-0.468153514542934080, -0.468197696315255320, -0.468241876917082300, -0.468286056348305000, -0.468330234608812120, -0.468374411698493700, -0.468418587617239260, -0.468462762364938720, +-0.468506935941480850, -0.468551108346755670, -0.468595279580653110, -0.468639449643061980, -0.468683618533872190, -0.468727786252973400, -0.468771952800255130, -0.468816118175607310, +-0.468860282378918860, -0.468904445410079700, -0.468948607268979800, -0.468992767955508040, -0.469036927469554330, -0.469081085811008270, -0.469125242979759940, -0.469169398975698090, +-0.469213553798712710, -0.469257707448693880, -0.469301859925530360, -0.469346011229112180, -0.469390161359329040, -0.469434310316070410, -0.469478458099226450, -0.469522604708685950, +-0.469566750144338960, -0.469610894406075450, -0.469655037493784290, -0.469699179407355560, -0.469743320146678910, -0.469787459711644320, -0.469831598102140700, -0.469875735318058100, +-0.469919871359286150, -0.469964006225714880, -0.470008139917233230, -0.470052272433731270, -0.470096403775098590, -0.470140533941225290, -0.470184662932000290, -0.470228790747313610, +-0.470272917387055340, -0.470317042851114360, -0.470361167139380810, -0.470405290251744320, -0.470449412188094660, -0.470493532948321800, -0.470537652532314780, -0.470581770939963560, +-0.470625888171158360, -0.470670004225787970, -0.470714119103742670, -0.470758232804912020, -0.470802345329186190, -0.470846456676454080, -0.470890566846605850, -0.470934675839531190, +-0.470978783655120250, -0.471022890293261940, -0.471066995753846420, -0.471111100036763430, -0.471155203141903070, -0.471199305069154250, -0.471243405818407230, -0.471287505389552110, +-0.471331603782477790, -0.471375700997074430, -0.471419797033231890, -0.471463891890839810, -0.471507985569788400, -0.471552078069966680, -0.471596169391264700, -0.471640259533572690, +-0.471684348496779700, -0.471728436280775820, -0.471772522885450800, -0.471816608310694940, -0.471860692556397120, -0.471904775622447540, -0.471948857508736500, -0.471992938215152870, +-0.472037017741586850, -0.472081096087928360, -0.472125173254067110, -0.472169249239893280, -0.472213324045295980, -0.472257397670165390, -0.472301470114391660, -0.472345541377863830, +-0.472389611460472200, -0.472433680362106530, -0.472477748082657080, -0.472521814622012810, -0.472565879980064050, -0.472609944156700550, -0.472654007151812610, -0.472698068965289260, +-0.472742129597020720, -0.472786189046896900, -0.472830247314807940, -0.472874304400642990, -0.472918360304292300, -0.472962415025646070, -0.473006468564593440, -0.473050520921024620, +-0.473094572094829520, -0.473138622085897960, -0.473182670894120250, -0.473226718519385470, -0.473270764961583930, -0.473314810220605840, -0.473358854296340340, -0.473402897188677670, +-0.473446938897507770, -0.473490979422720950, -0.473535018764206280, -0.473579056921854040, -0.473623093895554180, -0.473667129685196920, -0.473711164290671500, -0.473755197711868190, +-0.473799229948676850, -0.473843261000987840, -0.473887290868690250, -0.473931319551674450, -0.473975347049830800, -0.474019373363048340, -0.474063398491217420, -0.474107422434228040, +-0.474151445191970500, -0.474195466764333940, -0.474239487151208730, -0.474283506352484780, -0.474327524368052480, -0.474371541197800950, -0.474415556841620620, -0.474459571299401360, +-0.474503584571033530, -0.474547596656406390, -0.474591607555410240, -0.474635617267935520, -0.474679625793871300, -0.474723633133108060, -0.474767639285535670, -0.474811644251044220, +-0.474855648029524070, -0.474899650620864420, -0.474943652024955590, -0.474987652241688040, -0.475031651270950980, -0.475075649112634830, -0.475119645766629520, -0.475163641232825450, +-0.475207635511111950, -0.475251628601379320, -0.475295620503517650, -0.475339611217417300, -0.475383600742967540, -0.475427589080058780, -0.475471576228580990, -0.475515562188424720, +-0.475559546959479110, -0.475603530541634680, -0.475647512934781800, -0.475691494138809730, -0.475735474153608950, -0.475779452979069430, -0.475823430615081310, -0.475867407061535020, +-0.475911382318319810, -0.475955356385326160, -0.475999329262444480, -0.476043300949564100, -0.476087271446575480, -0.476131240753368660, -0.476175208869834170, -0.476219175795861260, +-0.476263141531340360, -0.476307106076161610, -0.476351069430215550, -0.476395031593391360, -0.476438992565579640, -0.476482952346670430, -0.476526910936554190, -0.476570868335120300, +-0.476614824542259290, -0.476658779557861570, -0.476702733381816510, -0.476746686014014600, -0.476790637454345970, -0.476834587702701150, -0.476878536758969520, -0.476922484623041490, +-0.476966431294807260, -0.477010376774157360, -0.477054321060981110, -0.477098264155169090, -0.477142206056611340, -0.477186146765198550, -0.477230086280819920, -0.477274024603366150, +-0.477317961732727670, -0.477361897668793890, -0.477405832411455400, -0.477449765960602290, -0.477493698316124760, -0.477537629477913450, -0.477581559445857620, -0.477625488219847850, +-0.477669415799774840, -0.477713342185527860, -0.477757267376997470, -0.477801191374074010, -0.477845114176647880, -0.477889035784608620, -0.477932956197846760, -0.477976875416252500, +-0.478020793439716480, -0.478064710268128020, -0.478108625901377820, -0.478152540339356060, -0.478196453581953340, -0.478240365629059080, -0.478284276480563930, -0.478328186136358470, +-0.478372094596332180, -0.478416001860375580, -0.478459907928379060, -0.478503812800232740, -0.478547716475827280, -0.478591618955052090, -0.478635520237797930, -0.478679420323955330, +-0.478723319213413770, -0.478767216906063940, -0.478811113401796050, -0.478855008700500740, -0.478898902802067540, -0.478942795706387090, -0.478986687413349650, -0.479030577922845920, +-0.479074467234765320, -0.479118355348998550, -0.479162242265435860, -0.479206127983968000, -0.479250012504484400, -0.479293895826875820, -0.479337777951032830, -0.479381658876845030, +-0.479425538604203120, -0.479469417132997340, -0.479513294463117970, -0.479557170594455790, -0.479601045526900300, -0.479644919260342200, -0.479688791794672160, -0.479732663129779800, +-0.479776533265555750, -0.479820402201890370, -0.479864269938674370, -0.479908136475797330, -0.479952001813149950, -0.479995865950622940, -0.480039728888105870, -0.480083590625489500, +-0.480127451162664090, -0.480171310499520110, -0.480215168635948260, -0.480259025571838080, -0.480302881307080320, -0.480346735841565730, -0.480390589175183960, -0.480434441307825700, +-0.480478292239381320, -0.480522141969741190, -0.480565990498796110, -0.480609837826435680, -0.480653683952551090, -0.480697528877031820, -0.480741372599768790, -0.480785215120652310, +-0.480829056439572740, -0.480872896556421010, -0.480916735471086600, -0.480960573183460360, -0.481004409693433050, -0.481048245000894330, -0.481092079105735040, -0.481135912007845500, +-0.481179743707116250, -0.481223574203437980, -0.481267403496700390, -0.481311231586794290, -0.481355058473610490, -0.481398884157038690, -0.481442708636969640, -0.481486531913293820, +-0.481530353985902100, -0.481574174854684070, -0.481617994519530630, -0.481661812980332560, -0.481705630236979600, -0.481749446289362560, -0.481793261137371920, -0.481837074780898100, +-0.481880887219831970, -0.481924698454063270, -0.481968508483482770, -0.482012317307981440, -0.482056124927448930, -0.482099931341776090, -0.482143736550853410, -0.482187540554571410, +-0.482231343352820920, -0.482275144945491730, -0.482318945332474600, -0.482362744513660570, -0.482406542488939270, -0.482450339258201580, -0.482494134821338070, -0.482537929178239620, +-0.482581722328795980, -0.482625514272898020, -0.482669305010436640, -0.482713094541301620, -0.482756882865383820, -0.482800669982573870, -0.482844455892762260, -0.482888240595839850, +-0.482932024091696440, -0.482975806380223030, -0.483019587461310460, -0.483063367334848560, -0.483107146000728180, -0.483150923458839980, -0.483194699709074470, -0.483238474751322590, +-0.483282248585474140, -0.483326021211420430, -0.483369792629051330, -0.483413562838257700, -0.483457331838930190, -0.483501099630959390, -0.483544866214236150, -0.483588631588650400, +-0.483632395754093060, -0.483676158710455160, -0.483719920457626410, -0.483763680995497880, -0.483807440323960170, -0.483851198442903860, -0.483894955352219940, -0.483938711051798200, +-0.483982465541529740, -0.484026218821305480, -0.484069970891015280, -0.484113721750550120, -0.484157471399800700, -0.484201219838657990, -0.484244967067011810, -0.484288713084753240, +-0.484332457891773320, -0.484376201487961790, -0.484419943873209800, -0.484463685047407940, -0.484507425010446860, -0.484551163762217630, -0.484594901302610070, -0.484638637631515270, +-0.484682372748824250, -0.484726106654426950, -0.484769839348214330, -0.484813570830077150, -0.484857301099906050, -0.484901030157592060, -0.484944758003025110, -0.484988484636096670, +-0.485032210056696610, -0.485075934264716010, -0.485119657260045630, -0.485163379042576060, -0.485207099612198430, -0.485250818968802730, -0.485294537112279930, -0.485338254042521180, +-0.485381969759416390, -0.485425684262856700, -0.485469397552732770, -0.485513109628935400, -0.485556820491355570, -0.485600530139883360, -0.485644238574409800, -0.485687945794826050, +-0.485731651801022070, -0.485775356592888900, -0.485819060170317400, -0.485862762533198600, -0.485906463681422480, -0.485950163614880250, -0.485993862333462980, -0.486037559837060650, +-0.486081256125564460, -0.486124951198865120, -0.486168645056853370, -0.486212337699420400, -0.486256029126456210, -0.486299719337851990, -0.486343408333498820, -0.486387096113286730, +-0.486430782677106930, -0.486474468024850120, -0.486518152156407200, -0.486561835071669280, -0.486605516770526330, -0.486649197252869650, -0.486692876518590330, -0.486736554567578470, +-0.486780231399725150, -0.486823907014921340, -0.486867581413058080, -0.486911254594025510, -0.486954926557714830, -0.486998597304017180, -0.487042266832822650, -0.487085935144022490, +-0.487129602237507450, -0.487173268113168410, -0.487216932770896620, -0.487260596210582100, -0.487304258432116060, -0.487347919435389800, -0.487391579220293360, -0.487435237786717930, +-0.487478895134554390, -0.487522551263693650, -0.487566206174026960, -0.487609859865444310, -0.487653512337837440, -0.487697163591096330, -0.487740813625112350, -0.487784462439776360, +-0.487828110034979220, -0.487871756410612150, -0.487915401566565320, -0.487959045502730000, -0.488002688218997450, -0.488046329715257740, -0.488089969991402250, -0.488133609047321840, +-0.488177246882907420, -0.488220883498050260, -0.488264518892640500, -0.488308153066569440, -0.488351786019728400, -0.488395417752007450, -0.488439048263297980, -0.488482677553490950, +-0.488526305622477560, -0.488569932470148020, -0.488613558096393670, -0.488657182501105790, -0.488700805684174570, -0.488744427645491360, -0.488788048384947050, -0.488831667902432650, +-0.488875286197839490, -0.488918903271057640, -0.488962519121978580, -0.489006133750493620, -0.489049747156492960, -0.489093359339867860, -0.489136970300509450, -0.489180580038308550, +-0.489224188553156640, -0.489267795844943840, -0.489311401913561540, -0.489355006758901090, -0.489398610380852810, -0.489442212779307990, -0.489485813954157580, -0.489529413905293090, +-0.489573012632604660, -0.489616610135983680, -0.489660206415321540, -0.489703801470508570, -0.489747395301436020, -0.489790987907995020, -0.489834579290076570, -0.489878169447572010, +-0.489921758380371660, -0.489965346088366950, -0.490008932571449230, -0.490052517829508820, -0.490096101862437070, -0.490139684670125090, -0.490183266252463890, -0.490226846609344900, +-0.490270425740658430, -0.490314003646296290, -0.490357580326148730, -0.490401155780107230, -0.490444730008062880, -0.490488303009906650, -0.490531874785530060, -0.490575445334823390, +-0.490619014657678100, -0.490662582753985720, -0.490706149623636460, -0.490749715266521780, -0.490793279682532890, -0.490836842871560760, -0.490880404833496930, -0.490923965568231650, +-0.490967525075656500, -0.491011083355662900, -0.491054640408141230, -0.491098196232982950, -0.491141750830079220, -0.491185304199321440, -0.491228856340600040, -0.491272407253806500, +-0.491315956938832290, -0.491359505395567830, -0.491403052623904660, -0.491446598623733800, -0.491490143394946450, -0.491533686937434100, -0.491577229251087210, -0.491620770335797210, +-0.491664310191455680, -0.491707848817952990, -0.491751386215180660, -0.491794922383029850, -0.491838457321391750, -0.491881991030157950, -0.491925523509218750, -0.491969054758465700, +-0.492012584777790420, -0.492056113567083340, -0.492099641126235940, -0.492143167455139420, -0.492186692553685410, -0.492230216421764230, -0.492273739059267520, -0.492317260466086930, +-0.492360780642112690, -0.492404299587236580, -0.492447817301349680, -0.492491333784343230, -0.492534849036108830, -0.492578363056536960, -0.492621875845519200, -0.492665387402947070, +-0.492708897728711130, -0.492752406822702940, -0.492795914684813710, -0.492839421314934690, -0.492882926712957530, -0.492926430878772640, -0.492969933812272110, -0.493013435513346310, +-0.493056935981886930, -0.493100435217785240, -0.493143933220932420, -0.493187429991220170, -0.493230925528538980, -0.493274419832780480, -0.493317912903836250, -0.493361404741596900, +-0.493404895345954050, -0.493448384716798970, -0.493491872854022910, -0.493535359757517500, -0.493578845427173400, -0.493622329862882130, -0.493665813064535440, -0.493709295032023820, +-0.493752775765238960, -0.493796255264072170, -0.493839733528415150, -0.493883210558158370, -0.493926686353193590, -0.493970160913412450, -0.494013634238705530, -0.494057106328964550, +-0.494100577184080790, -0.494144046803945640, -0.494187515188450670, -0.494230982337486580, -0.494274448250945020, -0.494317912928717740, -0.494361376370695270, -0.494404838576769370, +-0.494448299546831340, -0.494491759280772600, -0.494535217778484860, -0.494578675039858640, -0.494622131064785810, -0.494665585853157950, -0.494709039404865770, -0.494752491719801010, +-0.494795942797855050, -0.494839392638919570, -0.494882841242885230, -0.494926288609643770, -0.494969734739087010, -0.495013179631105530, -0.495056623285591080, -0.495100065702435090, +-0.495143506881528920, -0.495186946822764370, -0.495230385526032050, -0.495273822991223800, -0.495317259218231390, -0.495360694206945400, -0.495404127957257690, -0.495447560469059690, +-0.495490991742242760, -0.495534421776698760, -0.495577850572318290, -0.495621278128993590, -0.495664704446615310, -0.495708129525075260, -0.495751553364264910, -0.495794975964075680, +-0.495838397324399380, -0.495881817445126660, -0.495925236326149430, -0.495968653967359560, -0.496012070368647580, -0.496055485529905470, -0.496098899451024640, -0.496142312131896520, +-0.496185723572413080, -0.496229133772464910, -0.496272542731943880, -0.496315950450741890, -0.496359356928749660, -0.496402762165859050, -0.496446166161961520, -0.496489568916948950, +-0.496532970430712040, -0.496576370703142760, -0.496619769734132910, -0.496663167523573260, -0.496706564071355720, -0.496749959377371710, -0.496793353441512820, -0.496836746263670970, +-0.496880137843736860, -0.496923528181602350, -0.496966917277159470, -0.497010305130298870, -0.497053691740912520, -0.497097077108891950, -0.497140461234128690, -0.497183844116514670, +-0.497227225755940640, -0.497270606152298900, -0.497313985305480320, -0.497357363215376710, -0.497400739881879770, -0.497444115304880920, -0.497487489484272180, -0.497530862419944320, +-0.497574234111789360, -0.497617604559699170, -0.497660973763564550, -0.497704341723277540, -0.497747708438729620, -0.497791073909812480, -0.497834438136418030, -0.497877801118437100, +-0.497921162855761660, -0.497964523348283730, -0.498007882595894070, -0.498051240598484710, -0.498094597355947240, -0.498137952868173690, -0.498181307135054870, -0.498224660156482760, +-0.498268011932349380, -0.498311362462545590, -0.498354711746963440, -0.498398059785494450, -0.498441406578030380, -0.498484752124463140, -0.498528096424683600, -0.498571439478583840, +-0.498614781286055910, -0.498658121846990600, -0.498701461161280000, -0.498744799228815710, -0.498788136049489460, -0.498831471623193250, -0.498874805949817980, -0.498918139029255690, +-0.498961470861398420, -0.499004801446137130, -0.499048130783363800, -0.499091458872970130, -0.499134785714848260, -0.499178111308889010, -0.499221435654984450, -0.499264758753026730, +-0.499308080602906710, -0.499351401204516490, -0.499394720557747750, -0.499438038662492260, -0.499481355518642030, -0.499524671126088000, -0.499567985484722310, -0.499611298594437040, +-0.499654610455123160, -0.499697921066672710, -0.499741230428977500, -0.499784538541929220, -0.499827845405419970, -0.499871151019340710, -0.499914455383583920, -0.499957758498040640, +-0.500001060362602940, -0.500044360977162650, -0.500087660341611450, -0.500130958455841430, -0.500174255319743690, -0.500217550933210300, -0.500260845296133350, -0.500304138408403930, +-0.500347430269914240, -0.500390720880555920, -0.500434010240220830, -0.500477298348801060, -0.500520585206187580, -0.500563870812272830, -0.500607155166948650, -0.500650438270106250, +-0.500693720121637710, -0.500737000721434900, -0.500780280069389900, -0.500823558165393920, -0.500866835009339040, -0.500910110601117450, -0.500953384940620140, -0.500996658027739410, +-0.501039929862367010, -0.501083200444394810, -0.501126469773715000, -0.501169737850218570, -0.501213004673797920, -0.501256270244345050, -0.501299534561751140, -0.501342797625908390, +-0.501386059436708660, -0.501429319994043720, -0.501472579297805980, -0.501515837347886300, -0.501559094144177100, -0.501602349686570470, -0.501645603974957610, -0.501688857009230830, +-0.501732108789281760, -0.501775359315002940, -0.501818608586285240, -0.501861856603021070, -0.501905103365102630, -0.501948348872421010, -0.501991593124868630, -0.502034836122337120, +-0.502078077864718590, -0.502121318351905320, -0.502164557583788310, -0.502207795560259850, -0.502251032281212370, -0.502294267746536850, -0.502337501956125700, -0.502380734909870790, +-0.502423966607664090, -0.502467197049397800, -0.502510426234963110, -0.502553654164252790, -0.502596880837157920, -0.502640106253570920, -0.502683330413383640, -0.502726553316487970, +-0.502769774962776310, -0.502812995352139860, -0.502856214484470930, -0.502899432359661840, -0.502942648977603770, -0.502985864338189040, -0.503029078441309730, -0.503072291286857600, +-0.503115502874725280, -0.503158713204803760, -0.503201922276985460, -0.503245130091162670, -0.503288336647226720, -0.503331541945069900, -0.503374745984584320, -0.503417948765662150, +-0.503461150288194830, -0.503504350552074540, -0.503547549557193830, -0.503590747303443780, -0.503633943790716910, -0.503677139018905210, -0.503720332987900640, -0.503763525697595640, +-0.503806717147881390, -0.503849907338650320, -0.503893096269794950, -0.503936283941206490, -0.503979470352777240, -0.504022655504399290, -0.504065839395964720, -0.504109022027365960, +-0.504152203398494310, -0.504195383509242090, -0.504238562359501820, -0.504281739949164700, -0.504324916278123260, -0.504368091346269590, -0.504411265153495990, -0.504454437699693890, +-0.504497608984755710, -0.504540779008573860, -0.504583947771039760, -0.504627115272045730, -0.504670281511483850, -0.504713446489246320, -0.504756610205225550, -0.504799772659312860, +-0.504842933851400780, -0.504886093781381720, -0.504929252449147100, -0.504972409854589240, -0.505015565997600450, -0.505058720878072690, -0.505101874495898610, -0.505145026850969290, +-0.505188177943177940, -0.505231327772415750, -0.505274476338575140, -0.505317623641548420, -0.505360769681227560, -0.505403914457505210, -0.505447057970272670, -0.505490200219422590, +-0.505533341204847280, -0.505576480926438250, -0.505619619384088060, -0.505662756577688780, -0.505705892507132600, -0.505749027172312180, -0.505792160573118710, -0.505835292709444830, +-0.505878423581183070, -0.505921553188224960, -0.505964681530462920, -0.506007808607789160, -0.506050934420096300, -0.506094058967275770, -0.506137182249220000, -0.506180304265821720, +-0.506223425016972260, -0.506266544502564250, -0.506309662722489890, -0.506352779676641380, -0.506395895364911250, -0.506439009787191030, -0.506482122943373250, -0.506525234833350660, +-0.506568345457014460, -0.506611454814257510, -0.506654562904971790, -0.506697669729049840, -0.506740775286383950, -0.506783879576865770, -0.506826982600387940, -0.506870084356843000, +-0.506913184846122470, -0.506956284068118990, -0.506999382022724880, -0.507042478709832540, -0.507085574129333750, -0.507128668281120910, -0.507171761165086890, -0.507214852781122990, +-0.507257943129121980, -0.507301032208976150, -0.507344120020577720, -0.507387206563819420, -0.507430291838592670, -0.507473375844790240, -0.507516458582304650, -0.507559540051027660, +-0.507602620250851790, -0.507645699181669240, -0.507688776843372550, -0.507731853235854350, -0.507774928359006060, -0.507818002212720890, -0.507861074796890240, -0.507904146111407000, +-0.507947216156163340, -0.507990284931051580, -0.508033352435964590, -0.508076418670793780, -0.508119483635431910, -0.508162547329771840, -0.508205609753704880, -0.508248670907124000, +-0.508291730789921400, -0.508334789401989400, -0.508377846743220840, -0.508420902813507380, -0.508463957612741550, -0.508507011140816310, -0.508550063397623100, -0.508593114383054770, +-0.508636164097003520, -0.508679212539362440, -0.508722259710022830, -0.508765305608877560, -0.508808350235819380, -0.508851393590740050, -0.508894435673532210, -0.508937476484088270, +-0.508980516022300660, -0.509023554288062010, -0.509066591281264190, -0.509109627001799960, -0.509152661449561950, -0.509195694624441920, -0.509238726526332730, -0.509281757155126580, +-0.509324786510716220, -0.509367814592994070, -0.509410841401852110, -0.509453866937183530, -0.509496891198879750, -0.509539914186833750, -0.509582935900938060, -0.509625956341084980, +-0.509668975507167390, -0.509711993399076910, -0.509755010016706530, -0.509798025359949000, -0.509841039428696070, -0.509884052222840390, -0.509927063742274700, -0.509970073986891310, +-0.510013082956583210, -0.510056090651241910, -0.510099097070760400, -0.510142102215031530, -0.510185106083947070, -0.510228108677399870, -0.510271109995282250, -0.510314110037486950, +-0.510357108803906830, -0.510400106294433440, -0.510443102508960190, -0.510486097447378830, -0.510529091109582220, -0.510572083495462900, -0.510615074604913400, -0.510658064437826460, +-0.510701052994094070, -0.510744040273609090, -0.510787026276264380, -0.510830011001951690, -0.510872994450563890, -0.510915976621993730, -0.510958957516133520, -0.511001937132876450, +-0.511044915472114060, -0.511087892533739320, -0.511130868317645310, -0.511173842823723800, -0.511216816051867640, -0.511259788001969360, -0.511302758673922050, -0.511345728067617470, +-0.511388696182948580, -0.511431663019808360, -0.511474628578088450, -0.511517592857682170, -0.511560555858481810, -0.511603517580380030, -0.511646478023269900, -0.511689437187043180, +-0.511732395071592850, -0.511775351676811870, -0.511818307002592230, -0.511861261048826680, -0.511904213815408070, -0.511947165302228950, -0.511990115509182280, -0.512033064436159920, +-0.512076012083055310, -0.512118958449760300, -0.512161903536167860, -0.512204847342170640, -0.512247789867661290, -0.512290731112532870, -0.512333671076677270, -0.512376609759987560, +-0.512419547162356600, -0.512462483283676380, -0.512505418123839980, -0.512548351682740040, -0.512591283960269210, -0.512634214956320670, -0.512677144670786070, -0.512720073103558600, +-0.512763000254531360, -0.512805926123596320, -0.512848850710646340, -0.512891774015574290, -0.512934696038273240, -0.512977616778634960, -0.513020536236552750, -0.513063454411919470, +-0.513106371304627330, -0.513149286914569070, -0.513192201241637780, -0.513235114285725880, -0.513278026046726570, -0.513320936524531810, -0.513363845719034710, -0.513406753630128440, +-0.513449660257704890, -0.513492565601657120, -0.513535469661878020, -0.513578372438260210, -0.513621273930696790, -0.513664174139079830, -0.513707073063302540, -0.513749970703257790, +-0.513792867058837870, -0.513835762129935760, -0.513878655916444220, -0.513921548418256320, -0.513964439635264280, -0.514007329567361170, -0.514050218214440080, -0.514093105576392980, +-0.514135991653113190, -0.514178876444493450, -0.514221759950426520, -0.514264642170805590, -0.514307523105522520, -0.514350402754470860, -0.514393281117543450, -0.514436158194632400, +-0.514479033985631110, -0.514521908490432110, -0.514564781708928390, -0.514607653641013020, -0.514650524286578200, -0.514693393645517470, -0.514736261717722910, -0.514779128503087600, +-0.514821994001504520, -0.514864858212866430, -0.514907721137066620, -0.514950582773997080, -0.514993443123551110, -0.515036302185621910, -0.515079159960101560, -0.515122016446883380, +-0.515164871645860110, -0.515207725556924620, -0.515250578179970220, -0.515293429514888990, -0.515336279561574240, -0.515379128319919060, -0.515421975789815750, -0.515464821971157510, +-0.515507666863837200, -0.515550510467748140, -0.515593352782782400, -0.515636193808833300, -0.515679033545794030, -0.515721871993556790, -0.515764709152015000, -0.515807545021061300, +-0.515850379600588770, -0.515893212890490730, -0.515936044890659250, -0.515978875600987650, -0.516021705021369240, -0.516064533151696200, -0.516107359991861750, -0.516150185541758950, +-0.516193009801280690, -0.516235832770320370, -0.516278654448769970, -0.516321474836523020, -0.516364293933472720, -0.516407111739511260, -0.516449928254532060, -0.516492743478428110, +-0.516535557411092580, -0.516578370052417800, -0.516621181402297180, -0.516663991460623920, -0.516706800227290210, -0.516749607702189580, -0.516792413885215020, -0.516835218776259260, +-0.516878022375215960, -0.516920824681977200, -0.516963625696436390, -0.517006425418486850, -0.517049223848020880, -0.517092020984931900, -0.517134816829112780, -0.517177611380456700, +-0.517220404638856880, -0.517263196604205720, -0.517305987276396980, -0.517348776655322860, -0.517391564740876770, -0.517434351532951810, -0.517477137031440940, -0.517519921236237690, +-0.517562704147234150, -0.517605485764323860, -0.517648266087400330, -0.517691045116355660, -0.517733822851083380, -0.517776599291476570, -0.517819374437428310, -0.517862148288831920, +-0.517904920845579820, -0.517947692107565420, -0.517990462074682250, -0.518033230746822390, -0.518075998123879500, -0.518118764205746650, -0.518161528992317270, -0.518204292483483650, +-0.518247054679139340, -0.518289815579177750, -0.518332575183491300, -0.518375333491973290, -0.518418090504517040, -0.518460846221015510, -0.518503600641362250, -0.518546353765449660, +-0.518589105593171170, -0.518631856124420310, -0.518674605359089380, -0.518717353297071910, -0.518760099938261110, -0.518802845282550160, -0.518845589329832270, -0.518888332080000180, +-0.518931073532947210, -0.518973813688566990, -0.519016552546751720, -0.519059290107395150, -0.519102026370390380, -0.519144761335630920, -0.519187495003009200, -0.519230227372418640, +-0.519272958443752990, -0.519315688216904550, -0.519358416691766860, -0.519401143868233110, -0.519443869746196500, -0.519486594325550670, -0.519529317606187920, -0.519572039588001910, +-0.519614760270886160, -0.519657479654733080, -0.519700197739436320, -0.519742914524889080, -0.519785630010984660, -0.519828344197616370, -0.519871057084676960, -0.519913768672060290, +-0.519956478959658800, -0.519999187947365990, -0.520041895635075300, -0.520084602022679920, -0.520127307110073380, -0.520170010897148210, -0.520212713383797930, -0.520255414569916420, +-0.520298114455395870, -0.520340813040130020, -0.520383510324012200, -0.520426206306935480, -0.520468900988793730, -0.520511594369479360, -0.520554286448886020, -0.520596977226907230, +-0.520639666703435760, -0.520682354878365010, -0.520725041751588400, -0.520767727322999590, -0.520810411592491080, -0.520853094559956540, -0.520895776225289600, -0.520938456588382890, +-0.520981135649130070, -0.521023813407424320, -0.521066489863159070, -0.521109165016228060, -0.521151838866523610, -0.521194511413939690, -0.521237182658369820, -0.521279852599706550, +-0.521322521237843730, -0.521365188572674660, -0.521407854604092560, -0.521450519331991160, -0.521493182756263110, -0.521535844876802050, -0.521578505693501840, -0.521621165206255010, +-0.521663823414955210, -0.521706480319495850, -0.521749135919770680, -0.521791790215672350, -0.521834443207094490, -0.521877094893930860, -0.521919745276074100, -0.521962394353418070, +-0.522005042125855970, -0.522047688593281320, -0.522090333755587890, -0.522132977612668080, -0.522175620164415990, -0.522218261410725140, -0.522260901351488280, -0.522303539986599170, +-0.522346177315951230, -0.522388813339437760, -0.522431448056952740, -0.522474081468388700, -0.522516713573639820, -0.522559344372598770, -0.522601973865159270, -0.522644602051214990, +-0.522687228930659110, -0.522729854503385600, -0.522772478769287010, -0.522815101728257290, -0.522857723380190100, -0.522900343724978290, -0.522942962762515620, -0.522985580492695610, +-0.523028196915411580, -0.523070812030557390, -0.523113425838025780, -0.523156038337710740, -0.523198649529505900, -0.523241259413304020, -0.523283867988999060, -0.523326475256484350, +-0.523369081215653950, -0.523411685866400410, -0.523454289208617580, -0.523496891242199560, -0.523539491967038860, -0.523582091383029360, -0.523624689490064690, -0.523667286288038270, +-0.523709881776844080, -0.523752475956374750, -0.523795068826524270, -0.523837660387186490, -0.523880250638254160, -0.523922839579621160, -0.523965427211181110, -0.524008013532827550, +-0.524050598544454240, -0.524093182245954140, -0.524135764637221340, -0.524178345718148920, -0.524220925488630530, -0.524263503948559810, -0.524306081097830390, -0.524348656936336030, +-0.524391231463969820, -0.524433804680625390, -0.524476376586196950, -0.524518947180577120, -0.524561516463659890, -0.524604084435338900, -0.524646651095507680, -0.524689216444060300, +-0.524731780480889420, -0.524774343205889120, -0.524816904618953250, -0.524859464719974910, -0.524902023508847740, -0.524944580985465590, -0.524987137149722340, -0.525029692001510950, +-0.525072245540725290, -0.525114797767259330, -0.525157348681006050, -0.525199898281859420, -0.525242446569712970, -0.525284993544460450, -0.525327539205995840, -0.525370083554212000, +-0.525412626589002900, -0.525455168310262730, -0.525497708717884150, -0.525540247811761340, -0.525582785591787950, -0.525625322057857500, -0.525667857209864200, -0.525710391047700790, +-0.525752923571261470, -0.525795454780440210, -0.525837984675129990, -0.525880513255224780, -0.525923040520618220, -0.525965566471204520, -0.526008091106876410, -0.526050614427528210, +-0.526093136433053780, -0.526135657123346090, -0.526178176498299340, -0.526220694557807180, -0.526263211301763230, -0.526305726730061600, -0.526348240842595240, -0.526390753639258360, +-0.526433265119944930, -0.526475775284548030, -0.526518284132961640, -0.526560791665079520, -0.526603297880795520, -0.526645802780003500, -0.526688306362596670, -0.526730808628469440, +-0.526773309577514890, -0.526815809209627010, -0.526858307524699530, -0.526900804522626440, -0.526943300203301600, -0.526985794566618200, -0.527028287612470230, -0.527070779340751970, +-0.527113269751356420, -0.527155758844177650, -0.527198246619109410, -0.527240733076045690, -0.527283218214880440, -0.527325702035506770, -0.527368184537818860, -0.527410665721710910, +-0.527453145587075790, -0.527495624133807910, -0.527538101361801020, -0.527580577270949090, -0.527623051861145440, -0.527665525132284150, -0.527707997084259530, -0.527750467716964430, +-0.527792937030293170, -0.527835405024139500, -0.527877871698397390, -0.527920337052961040, -0.527962801087723310, -0.528005263802578730, -0.528047725197421270, -0.528090185272144240, +-0.528132644026641620, -0.528175101460807370, -0.528217557574535480, -0.528260012367720020, -0.528302465840254200, -0.528344917992032200, -0.528387368822948230, -0.528429818332895480, +-0.528472266521768150, -0.528514713389460210, -0.528557158935865860, -0.528599603160878280, -0.528642046064391580, -0.528684487646300270, -0.528726927906497220, -0.528769366844876960, +-0.528811804461333250, -0.528854240755760040, -0.528896675728051550, -0.528939109378101070, -0.528981541705802800, -0.529023972711051060, -0.529066402393738920, -0.529108830753760920, +-0.529151257791010690, -0.529193683505382430, -0.529236107896770340, -0.529278530965067500, -0.529320952710168770, -0.529363373131967350, -0.529405792230357440, -0.529448210005233010, +-0.529490626456488030, -0.529533041584016930, -0.529575455387712890, -0.529617867867470120, -0.529660279023183130, -0.529702688854745030, -0.529745097362050220, -0.529787504544992680, +-0.529829910403466280, -0.529872314937365640, -0.529914718146583750, -0.529957120031015030, -0.529999520590553890, -0.530041919825093630, -0.530084317734528580, -0.530126714318752690, +-0.530169109577660390, -0.530211503511144990, -0.530253896119100790, -0.530296287401422210, -0.530338677358002550, -0.530381065988736240, -0.530423453293517260, -0.530465839272239560, +-0.530508223924797680, -0.530550607251084940, -0.530592989250995630, -0.530635369924424170, -0.530677749271263990, -0.530720127291409380, -0.530762503984754440, -0.530804879351193360, +-0.530847253390620330, -0.530889626102928890, -0.530931997488013340, -0.530974367545768100, -0.531016736276086590, -0.531059103678863330, -0.531101469753992310, -0.531143834501367930, +-0.531186197920883510, -0.531228560012433680, -0.531270920775912870, -0.531313280211214380, -0.531355638318232630, -0.531397995096861810, -0.531440350546996010, -0.531482704668529650, +-0.531525057461356250, -0.531567408925370130, -0.531609759060465930, -0.531652107866536830, -0.531694455343477590, -0.531736801491182190, -0.531779146309544810, -0.531821489798459890, +-0.531863831957820830, -0.531906172787522610, -0.531948512287458650, -0.531990850457523260, -0.532033187297610840, -0.532075522807615500, -0.532117856987431640, -0.532160189836952790, +-0.532202521356073490, -0.532244851544688260, -0.532287180402690520, -0.532329507929974800, -0.532371834126435290, -0.532414158991966200, -0.532456482526462160, -0.532498804729816480, +-0.532541125601923790, -0.532583445142678750, -0.532625763351974650, -0.532668080229706130, -0.532710395775767400, -0.532752709990053090, -0.532795022872456610, -0.532837334422872620, +-0.532879644641195640, -0.532921953527319080, -0.532964261081137810, -0.533006567302545810, -0.533048872191437370, -0.533091175747707150, -0.533133477971248550, -0.533175778861956330, +-0.533218078419725020, -0.533260376644448140, -0.533302673536020230, -0.533344969094335710, -0.533387263319288870, -0.533429556210774150, -0.533471847768685170, -0.533514137992916580, +-0.533556426883363020, -0.533598714439917910, -0.533641000662476110, -0.533683285550931920, -0.533725569105179760, -0.533767851325113290, -0.533810132210627230, -0.533852411761616240, +-0.533894689977973740, -0.533936966859594580, -0.533979242406373070, -0.534021516618203410, -0.534063789494980350, -0.534106061036597410, -0.534148331242949250, -0.534190600113930710, +-0.534232867649435340, -0.534275133849357760, -0.534317398713592300, -0.534359662242033460, -0.534401924434575680, -0.534444185291112820, -0.534486444811539840, -0.534528702995750390, +-0.534570959843639230, -0.534613215355100650, -0.534655469530028960, -0.534697722368319030, -0.534739973869864380, -0.534782224034559770, -0.534824472862300060, -0.534866720352978780, +-0.534908966506490670, -0.534951211322730160, -0.534993454801591550, -0.535035696942969820, -0.535077937746758380, -0.535120177212852100, -0.535162415341145730, -0.535204652131533010, +-0.535246887583908590, -0.535289121698167000, -0.535331354474202990, -0.535373585911910200, -0.535415816011183380, -0.535458044771917500, -0.535500272194006090, -0.535542498277344010, +-0.535584723021825690, -0.535626946427345540, -0.535669168493798420, -0.535711389221077970, -0.535753608609079060, -0.535795826657696540, -0.535838043366824060, -0.535880258736356470, +-0.535922472766188210, -0.535964685456213790, -0.536006896806327960, -0.536049106816424590, -0.536091315486398880, -0.536133522816144460, -0.536175728805556200, -0.536217933454528620, +-0.536260136762956250, -0.536302338730733850, -0.536344539357755280, -0.536386738643915280, -0.536428936589108950, -0.536471133193229810, -0.536513328456172830, -0.536555522377832550, +-0.536597714958103490, -0.536639906196880510, -0.536682096094057370, -0.536724284649529040, -0.536766471863190260, -0.536808657734935020, -0.536850842264658180, -0.536893025452254150, +-0.536935207297617900, -0.536977387800643300, -0.537019566961225210, -0.537061744779258610, -0.537103921254637350, -0.537146096387256190, -0.537188270177009760, -0.537230442623792710, +-0.537272613727499900, -0.537314783488025190, -0.537356951905263560, -0.537399118979109970, -0.537441284709458070, -0.537483449096203050, -0.537525612139239330, -0.537567773838461660, +-0.537609934193764900, -0.537652093205042920, -0.537694250872190690, -0.537736407195103290, -0.537778562173674480, -0.537820715807799220, -0.537862868097372160, -0.537905019042288270, +-0.537947168642441520, -0.537989316897726890, -0.538031463808039230, -0.538073609373272640, -0.538115753593321980, -0.538157896468081990, -0.538200037997447200, -0.538242178181312700, +-0.538284317019572360, -0.538326454512121240, -0.538368590658854340, -0.538410725459665620, -0.538452858914450160, -0.538494991023102390, -0.538537121785517270, -0.538579251201589670, +-0.538621379271213560, -0.538663505994284470, -0.538705631370696160, -0.538747755400343700, -0.538789878083121950, -0.538831999418925460, -0.538874119407649400, -0.538916238049187650, +-0.538958355343435280, -0.539000471290287390, -0.539042585889638050, -0.539084699141382130, -0.539126811045414490, -0.539168921601629770, -0.539211030809923280, -0.539253138670188650, +-0.539295245182321300, -0.539337350346216220, -0.539379454161767250, -0.539421556628869810, -0.539463657747418330, -0.539505757517308230, -0.539547855938433240, -0.539589953010688680, +-0.539632048733969640, -0.539674143108169970, -0.539716236133185090, -0.539758327808909530, -0.539800418135238160, -0.539842507112066160, -0.539884594739287520, -0.539926681016797310, +-0.539968765944490840, -0.540010849522262080, -0.540052931750006240, -0.540095012627617940, -0.540137092154992170, -0.540179170332024120, -0.540221247158607750, -0.540263322634638170, +-0.540305396760010770, -0.540347469534619430, -0.540389540958359450, -0.540431611031125580, -0.540473679752813020, -0.540515747123315960, -0.540557813142529490, -0.540599877810348910, +-0.540641941126668300, -0.540684003091382760, -0.540726063704387250, -0.540768122965576530, -0.540810180874845890, -0.540852237432089430, -0.540894292637202460, -0.540936346490080040, +-0.540978398990616390, -0.541020450138706700, -0.541062499934245930, -0.541104548377128960, -0.541146595467250970, -0.541188641204506050, -0.541230685588789950, -0.541272728619996870, +-0.541314770298021770, -0.541356810622759870, -0.541398849594105890, -0.541440887211955160, -0.541482923476201970, -0.541524958386741310, -0.541566991943468690, -0.541609024146278210, +-0.541651054995065160, -0.541693084489724420, -0.541735112630151060, -0.541777139416240280, -0.541819164847886280, -0.541861188924984360, -0.541903211647429830, -0.541945233015116880, +-0.541987253027940820, -0.542029271685796730, -0.542071288988579700, -0.542113304936184150, -0.542155319528505380, -0.542197332765438690, -0.542239344646878170, -0.542281355172719360, +-0.542323364342857220, -0.542365372157186610, -0.542407378615602950, -0.542449383718000440, -0.542491387464274500, -0.542533389854320540, -0.542575390888032640, -0.542617390565306220, +-0.542659388886036490, -0.542701385850118180, -0.542743381457446720, -0.542785375707916520, -0.542827368601422890, -0.542869360137861130, -0.542911350317125670, -0.542953339139111810, +-0.542995326603714630, -0.543037312710829450, -0.543079297460350660, -0.543121280852173590, -0.543163262886193770, -0.543205243562305370, -0.543247222880403830, -0.543289200840384230, +-0.543331177442141660, -0.543373152685571510, -0.543415126570568120, -0.543457099097026890, -0.543499070264843340, -0.543541040073911690, -0.543583008524127440, -0.543624975615385700, +-0.543666941347581530, -0.543708905720610370, -0.543750868734366510, -0.543792830388745930, -0.543834790683642820, -0.543876749618952830, -0.543918707194570920, -0.543960663410392180, +-0.544002618266312240, -0.544044571762225320, -0.544086523898027030, -0.544128474673612810, -0.544170424088877060, -0.544212372143715100, -0.544254318838022330, -0.544296264171693740, +-0.544338208144624860, -0.544380150756710090, -0.544422092007844970, -0.544464031897924920, -0.544505970426844450, -0.544547907594499110, -0.544589843400783980, -0.544631777845594580, +-0.544673710928825330, -0.544715642650371870, -0.544757573010129610, -0.544799502007993100, -0.544841429643857840, -0.544883355917618940, -0.544925280829171800, -0.544967204378411730, +-0.545009126565233260, -0.545051047389531920, -0.545092966851203450, -0.545134884950142170, -0.545176801686243610, -0.545218717059403170, -0.545260631069515830, -0.545302543716477240, +-0.545344455000182030, -0.545386364920525610, -0.545428273477403750, -0.545470180670710740, -0.545512086500342330, -0.545553990966193610, -0.545595894068160450, -0.545637795806137030, +-0.545679696180019210, -0.545721595189702420, -0.545763492835081410, -0.545805389116051590, -0.545847284032508260, -0.545889177584346850, -0.545931069771462770, -0.545972960593750670, +-0.546014850051106170, -0.546056738143424920, -0.546098624870601350, -0.546140510232531300, -0.546182394229110080, -0.546224276860232780, -0.546266158125795150, -0.546308038025691720, +-0.546349916559818570, -0.546391793728070340, -0.546433669530342560, -0.546475543966530640, -0.546517417036529900, -0.546559288740235850, -0.546601159077543360, -0.546643028048347860, +-0.546684895652545190, -0.546726761890030000, -0.546768626760697820, -0.546810490264444060, -0.546852352401164140, -0.546894213170753600, -0.546936072573107280, -0.546977930608120720, +-0.547019787275689670, -0.547061642575708880, -0.547103496508073880, -0.547145349072680200, -0.547187200269423470, -0.547229050098198440, -0.547270898558900760, -0.547312745651426180, +-0.547354591375669330, -0.547396435731526080, -0.547438278718891720, -0.547480120337661690, -0.547521960587731620, -0.547563799468996360, -0.547605636981351560, -0.547647473124693080, +-0.547689307898915570, -0.547731141303914760, -0.547772973339586080, -0.547814804005825050, -0.547856633302527320, -0.547898461229587630, -0.547940287786902180, -0.547982112974365610, +-0.548023936791873780, -0.548065759239321990, -0.548107580316606000, -0.548149400023621340, -0.548191218360262740, -0.548233035326426200, -0.548274850922007340, -0.548316665146901140, +-0.548358478001003120, -0.548400289484208940, -0.548442099596414100, -0.548483908337514370, -0.548525715707404490, -0.548567521705980220, -0.548609326333137640, -0.548651129588771380, +-0.548692931472777200, -0.548734731985050740, -0.548776531125487850, -0.548818328893983300, -0.548860125290432820, -0.548901920314732390, -0.548943713966776880, -0.548985506246462030, +-0.549027297153683480, -0.549069086688336650, -0.549110874850317400, -0.549152661639520700, -0.549194447055842310, -0.549236231099178180, -0.549278013769423090, -0.549319795066472990, +-0.549361574990223310, -0.549403353540569790, -0.549445130717408190, -0.549486906520633480, -0.549528680950141400, -0.549570454005828050, -0.549612225687588160, -0.549653995995317720, +-0.549695764928912370, -0.549737532488267950, -0.549779298673279240, -0.549821063483842300, -0.549862826919853110, -0.549904588981206530, -0.549946349667798430, -0.549988108979524440, +-0.550029866916280200, -0.550071623477961680, -0.550113378664463640, -0.550155132475682260, -0.550196884911513310, -0.550238635971851850, -0.550280385656593870, -0.550322133965634790, +-0.550363880898870450, -0.550405626456196730, -0.550447370637508700, -0.550489113442702460, -0.550530854871673190, -0.550572594924316650, -0.550614333600528690, -0.550656070900204960, +-0.550697806823241320, -0.550739541369532850, -0.550781274538975520, -0.550823006331465410, -0.550864736746897400, -0.550906465785167440, -0.550948193446171410, -0.550989919729804930, +-0.551031644635963990, -0.551073368164543550, -0.551115090315439700, -0.551156811088548420, -0.551198530483764880, -0.551240248500984850, -0.551281965140104410, -0.551323680401019310, +-0.551365394283624630, -0.551407106787816460, -0.551448817913490870, -0.551490527660542960, -0.551532236028868580, -0.551573943018363710, -0.551615648628924090, -0.551657352860445590, +-0.551699055712823290, -0.551740757185953390, -0.551782457279732070, -0.551824155994054100, -0.551865853328815880, -0.551907549283912950, -0.551949243859241050, -0.551990937054696600, +-0.552032628870174350, -0.552074319305570490, -0.552116008360781230, -0.552157696035701530, -0.552199382330227690, -0.552241067244255370, -0.552282750777680740, -0.552324432930398790, +-0.552366113702305820, -0.552407793093298020, -0.552449471103270250, -0.552491147732118830, -0.552532822979739490, -0.552574496846028220, -0.552616169330880980, -0.552657840434192970, +-0.552699510155860390, -0.552741178495779420, -0.552782845453845040, -0.552824511029953560, -0.552866175224000940, -0.552907838035882730, -0.552949499465495320, -0.552991159512733810, +-0.553032818177494830, -0.553074475459673360, -0.553116131359165820, -0.553157785875867840, -0.553199439009675390, -0.553241090760484780, -0.553282741128190980, -0.553324390112690410, +-0.553366037713879160, -0.553407683931652520, -0.553449328765906690, -0.553490972216537420, -0.553532614283440800, -0.553574254966513020, -0.553615894265649280, -0.553657532180745650, +-0.553699168711698660, -0.553740803858403410, -0.553782437620756070, -0.553824069998652750, -0.553865700991989510, -0.553907330600661660, -0.553948958824565520, -0.553990585663597380, +-0.554032211117652440, -0.554073835186626900, -0.554115457870416720, -0.554157079168917990, -0.554198699082026900, -0.554240317609638660, -0.554281934751649660, -0.554323550507956230, +-0.554365164878453440, -0.554406777863037830, -0.554448389461605240, -0.554489999674051770, -0.554531608500273610, -0.554573215940165950, -0.554614821993625440, -0.554656426660548150, +-0.554698029940829400, -0.554739631834365590, -0.554781232341052700, -0.554822831460787150, -0.554864429193464130, -0.554906025538979940, -0.554947620497231120, -0.554989214068112970, +-0.555030806251521680, -0.555072397047353340, -0.555113986455504140, -0.555155574475870270, -0.555197161108347050, -0.555238746352830990, -0.555280330209218410, -0.555321912677404720, +-0.555363493757286110, -0.555405073448758890, -0.555446651751718920, -0.555488228666062730, -0.555529804191685520, -0.555571378328484240, -0.555612951076354110, -0.555654522435191640, +-0.555696092404892820, -0.555737660985353820, -0.555779228176470960, -0.555820793978139660, -0.555862358390256440, -0.555903921412717720, -0.555945483045418800, -0.555987043288256100, +-0.556028602141125820, -0.556070159603924140, -0.556111715676547270, -0.556153270358890840, -0.556194823650851270, -0.556236375552324970, -0.556277926063207360, -0.556319475183394860, +-0.556361022912783780, -0.556402569251270410, -0.556444114198750390, -0.556485657755119930, -0.556527199920275770, -0.556568740694113330, -0.556610280076528910, -0.556651818067418810, +-0.556693354666679130, -0.556734889874206500, -0.556776423689896330, -0.556817956113645040, -0.556859487145349160, -0.556901016784904330, -0.556942545032206860, -0.556984071887153040, +-0.557025597349639080, -0.557067121419561380, -0.557108644096815600, -0.557150165381298250, -0.557191685272905860, -0.557233203771533850, -0.557274720877078740, -0.557316236589436960, +-0.557357750908504920, -0.557399263834178040, -0.557440775366353170, -0.557482285504926620, -0.557523794249794040, -0.557565301600851940, -0.557606807557996520, -0.557648312121124200, +-0.557689815290131400, -0.557731317064913750, -0.557772817445367770, -0.557814316431390120, -0.557855814022876320, -0.557897310219722890, -0.557938805021826360, -0.557980298429082700, +-0.558021790441388670, -0.558063281058639780, -0.558104770280733130, -0.558146258107564130, -0.558187744539029530, -0.558229229575025520, -0.558270713215448520, -0.558312195460194950, +-0.558353676309160660, -0.558395155762242080, -0.558436633819336060, -0.558478110480338130, -0.558519585745144820, -0.558561059613652540, -0.558602532085757720, -0.558644003161356870, +-0.558685472840345640, -0.558726941122620670, -0.558768408008078810, -0.558809873496615590, -0.558851337588127550, -0.558892800282511320, -0.558934261579663310, -0.558975721479479380, +-0.559017179981856070, -0.559058637086690240, -0.559100092793877510, -0.559141547103314430, -0.559183000014897510, -0.559224451528523180, -0.559265901644087960, -0.559307350361487710, +-0.559348797680619070, -0.559390243601378680, -0.559431688123662510, -0.559473131247366970, -0.559514572972388710, -0.559556013298623920, -0.559597452225969460, -0.559638889754321080, +-0.559680325883575860, -0.559721760613629440, -0.559763193944378570, -0.559804625875719660, -0.559846056407549360, -0.559887485539764200, -0.559928913272259910, -0.559970339604933360, +-0.560011764537681310, -0.560053188070399610, -0.560094610202984790, -0.560136030935333480, -0.560177450267342110, -0.560218868198907540, -0.560260284729925400, -0.560301699860292550, +-0.560343113589905740, -0.560384525918660840, -0.560425936846454590, -0.560467346373183520, -0.560508754498744160, -0.560550161223033140, -0.560591566545946440, -0.560632970467381140, +-0.560674372987233110, -0.560715774105399190, -0.560757173821775700, -0.560798572136259390, -0.560839969048746890, -0.560881364559134180, -0.560922758667318110, -0.560964151373195440, +-0.561005542676662030, -0.561046932577614840, -0.561088321075950190, -0.561129708171564820, -0.561171093864355600, -0.561212478154218150, -0.561253861041049570, -0.561295242524746720, +-0.561336622605205340, -0.561378001282322400, -0.561419378555994550, -0.561460754426118540, -0.561502128892590320, -0.561543501955306780, -0.561584873614164870, -0.561626243869060350, +-0.561667612719890190, -0.561708980166551130, -0.561750346208939490, -0.561791710846952450, -0.561833074080485660, -0.561874435909436310, -0.561915796333701150, -0.561957155353176140, +-0.561998512967758270, -0.562039869177344050, -0.562081223981830250, -0.562122577381113710, -0.562163929375090410, -0.562205279963657540, -0.562246629146711200, -0.562287976924148340, +-0.562329323295865380, -0.562370668261759190, -0.562412011821726730, -0.562453353975663870, -0.562494694723467580, -0.562536034065034940, -0.562577372000261810, -0.562618708529045390, +-0.562660043651282080, -0.562701377366868650, -0.562742709675702170, -0.562784040577678500, -0.562825370072694840, -0.562866698160648050, -0.562908024841434210, -0.562949350114950180, +-0.562990673981092930, -0.563031996439759210, -0.563073317490845220, -0.563114637134247920, -0.563155955369864400, -0.563197272197590640, -0.563238587617323700, -0.563279901628960240, +-0.563321214232397120, -0.563362525427531290, -0.563403835214258740, -0.563445143592476660, -0.563486450562082020, -0.563527756122970900, -0.563569060275040390, -0.563610363018187230, +-0.563651664352308290, -0.563692964277300420, -0.563734262793059830, -0.563775559899483470, -0.563816855596468660, -0.563858149883911360, -0.563899442761708670, -0.563940734229757430, +-0.563982024287954630, -0.564023312936196450, -0.564064600174379980, -0.564105886002402410, -0.564147170420159720, -0.564188453427549090, -0.564229735024467380, -0.564271015210811240, +-0.564312293986477980, -0.564353571351363660, -0.564394847305365380, -0.564436121848380320, -0.564477394980304580, -0.564518666701035450, -0.564559937010469580, -0.564601205908503930, +-0.564642473395035480, -0.564683739469960640, -0.564725004133176720, -0.564766267384580020, -0.564807529224067520, -0.564848789651536290, -0.564890048666883080, -0.564931306270005100, +-0.564972562460798520, -0.565013817239160550, -0.565055070604988270, -0.565096322558178100, -0.565137573098627000, -0.565178822226232060, -0.565220069940890020, -0.565261316242498200, +-0.565302561130952670, -0.565343804606150860, -0.565385046667989830, -0.565426287316365790, -0.565467526551176050, -0.565508764372317450, -0.565550000779687310, -0.565591235773181930, +-0.565632469352698290, -0.565673701518134010, -0.565714932269384960, -0.565756161606348670, -0.565797389528922000, -0.565838616037001810, -0.565879841130485390, -0.565921064809269070, +-0.565962287073250030, -0.566003507922325680, -0.566044727356392220, -0.566085945375346960, -0.566127161979086750, -0.566168377167508670, -0.566209590940510040, -0.566250803297987050, +-0.566292014239837100, -0.566333223765957410, -0.566374431876244370, -0.566415638570595180, -0.566456843848906930, -0.566498047711076920, -0.566539250157001350, -0.566580451186577740, +-0.566621650799703390, -0.566662848996274500, -0.566704045776188490, -0.566745241139342440, -0.566786435085633200, -0.566827627614958200, -0.566868818727213840, -0.566910008422297440, +-0.566951196700106410, -0.566992383560536940, -0.567033569003486560, -0.567074753028852240, -0.567115935636531070, -0.567157116826420450, -0.567198296598416580, -0.567239474952417440, +-0.567280651888319110, -0.567321827406019220, -0.567363001505414850, -0.567404174186402880, -0.567445345448880810, -0.567486515292745080, -0.567527683717893080, -0.567568850724222250, +-0.567610016311628770, -0.567651180480010400, -0.567692343229264100, -0.567733504559286840, -0.567774664469976150, -0.567815822961228570, -0.567856980032941380, -0.567898135685012130, +-0.567939289917337110, -0.567980442729813850, -0.568021594122339550, -0.568062744094811610, -0.568103892647126460, -0.568145039779181520, -0.568186185490874410, -0.568227329782101440, +-0.568268472652760150, -0.568309614102747720, -0.568350754131961230, -0.568391892740298220, -0.568433029927655100, -0.568474165693929390, -0.568515300039018620, -0.568556432962819320, +-0.568597564465228800, -0.568638694546144460, -0.568679823205463400, -0.568720950443083130, -0.568762076258900070, -0.568803200652811870, -0.568844323624716040, -0.568885445174509010, +-0.568926565302088410, -0.568967684007351430, -0.569008801290195490, -0.569049917150517230, -0.569091031588214170, -0.569132144603183950, -0.569173256195323000, -0.569214366364528820, +-0.569255475110698740, -0.569296582433730050, -0.569337688333520160, -0.569378792809965840, -0.569419895862964380, -0.569460997492413630, -0.569502097698210030, -0.569543196480251200, +-0.569584293838434340, -0.569625389772656750, -0.569666484282816080, -0.569707577368808730, -0.569748669030532890, -0.569789759267885000, -0.569830848080762680, -0.569871935469063340, +-0.569913021432684070, -0.569954105971522630, -0.569995189085475530, -0.570036270774440520, -0.570077351038315140, -0.570118429876996120, -0.570159507290380900, -0.570200583278366980, +-0.570241657840851570, -0.570282730977732410, -0.570323802688906030, -0.570364872974270190, -0.570405941833722510, -0.570447009267159630, -0.570488075274479200, -0.570529139855578520, +-0.570570203010355440, -0.570611264738706490, -0.570652325040529320, -0.570693383915721770, -0.570734441364180390, -0.570775497385802800, -0.570816551980486530, -0.570857605148128890, +-0.570898656888627620, -0.570939707201879370, -0.570980756087781760, -0.571021803546232780, -0.571062849577128830, -0.571103894180367670, -0.571144937355846930, -0.571185979103463690, +-0.571227019423115930, -0.571268058314700290, -0.571309095778114510, -0.571350131813256330, -0.571391166420022520, -0.571432199598310710, -0.571473231348018420, -0.571514261669043400, +-0.571555290561282400, -0.571596318024633180, -0.571637344058993580, -0.571678368664260140, -0.571719391840330830, -0.571760413587103060, -0.571801433904474240, -0.571842452792342140, +-0.571883470250603600, -0.571924486279156370, -0.571965500877898330, -0.572006514046726200, -0.572047525785537640, -0.572088536094230380, -0.572129544972701740, -0.572170552420849690, +-0.572211558438570740, -0.572252563025763330, -0.572293566182324190, -0.572334567908151070, -0.572375568203141620, -0.572416567067193240, -0.572457564500203690, -0.572498560502069930, +-0.572539555072689830, -0.572580548211961140, -0.572621539919780710, -0.572662530196046520, -0.572703519040655860, -0.572744506453506500, -0.572785492434496170, -0.572826476983521850, +-0.572867460100481280, -0.572908441785272340, -0.572949422037792090, -0.572990400857938180, -0.573031378245608350, -0.573072354200700350, -0.573113328723111160, -0.573154301812738630, +-0.573195273469480630, -0.573236243693234230, -0.573277212483897070, -0.573318179841367010, -0.573359145765541480, -0.573400110256318430, -0.573441073313594730, -0.573482034937268240, +-0.573522995127237150, -0.573563953883398200, -0.573604911205649380, -0.573645867093888210, -0.573686821548012430, -0.573727774567920010, -0.573768726153507710, -0.573809676304673940, +-0.573850625021315670, -0.573891572303330880, -0.573932518150617080, -0.573973462563072020, -0.574014405540593690, -0.574055347083078930, -0.574096287190425820, -0.574137225862532350, +-0.574178163099295480, -0.574219098900613180, -0.574260033266383090, -0.574300966196502950, -0.574341897690870740, -0.574382827749383540, -0.574423756371939100, -0.574464683558435720, +-0.574505609308770260, -0.574546533622840800, -0.574587456500544990, -0.574628377941780900, -0.574669297946445500, -0.574710216514436880, -0.574751133645653110, -0.574792049339991060, +-0.574832963597348920, -0.574873876417624330, -0.574914787800715140, -0.574955697746519220, -0.574996606254933870, -0.575037513325856840, -0.575078418959186430, -0.575119323154819620, +-0.575160225912654590, -0.575201127232588870, -0.575242027114520440, -0.575282925558347260, -0.575323822563966300, -0.575364718131275880, -0.575405612260174060, -0.575446504950557820, +-0.575487396202325250, -0.575528286015374310, -0.575569174389602980, -0.575610061324908330, -0.575650946821188450, -0.575691830878341640, -0.575732713496264870, -0.575773594674856340, +-0.575814474414013900, -0.575855352713635190, -0.575896229573618410, -0.575937104993860750, -0.575977978974260400, -0.576018851514715320, -0.576059722615122840, -0.576100592275381020, +-0.576141460495387720, -0.576182327275040820, -0.576223192614238490, -0.576264056512877710, -0.576304918970857230, -0.576345779988074010, -0.576386639564426370, -0.576427497699812160, +-0.576468354394129250, -0.576509209647275700, -0.576550063459148830, -0.576590915829646830, -0.576631766758667790, -0.576672616246109100, -0.576713464291868870, -0.576754310895844840, +-0.576795156057935190, -0.576835999778037900, -0.576876842056050280, -0.576917682891870620, -0.576958522285397010, -0.576999360236526870, -0.577040196745158160, -0.577081031811189080, +-0.577121865434517820, -0.577162697615041460, -0.577203528352658310, -0.577244357647266780, -0.577285185498763950, -0.577326011907048130, -0.577366836872017400, -0.577407660393569500, +-0.577448482471602740, -0.577489303106014540, -0.577530122296702970, -0.577570940043566570, -0.577611756346502410, -0.577652571205408800, -0.577693384620183830, -0.577734196590725340, +-0.577775007116931750, -0.577815816198700370, -0.577856623835929280, -0.577897430028517120, -0.577938234776360970, -0.577979038079359240, -0.578019839937410020, -0.578060640350411380, +-0.578101439318260860, -0.578142236840856860, -0.578183032918097470, -0.578223827549880220, -0.578264620736103300, -0.578305412476664890, -0.578346202771462980, -0.578386991620395860, +-0.578427779023360960, -0.578468564980256560, -0.578509349490981210, -0.578550132555432080, -0.578590914173507500, -0.578631694345105750, -0.578672473070124820, -0.578713250348462990, +-0.578754026180017590, -0.578794800564687570, -0.578835573502370250, -0.578876344992963920, -0.578917115036366780, -0.578957883632476800, -0.578998650781192500, -0.579039416482411200, +-0.579080180736031290, -0.579120943541951430, -0.579161704900068800, -0.579202464810281810, -0.579243223272488780, -0.579283980286587670, -0.579324735852476900, -0.579365489970053990, +-0.579406242639217360, -0.579446993859865420, -0.579487743631895700, -0.579528491955206610, -0.579569238829696240, -0.579609984255263220, -0.579650728231804860, -0.579691470759219670, +-0.579732211837406200, -0.579772951466261730, -0.579813689645684920, -0.579854426375573940, -0.579895161655826890, -0.579935895486342280, -0.579976627867017540, -0.580017358797751290, +-0.580058088278441960, -0.580098816308987080, -0.580139542889285040, -0.580180268019234280, -0.580220991698732760, -0.580261713927679220, -0.580302434705970980, -0.580343154033506670, +-0.580383871910184810, -0.580424588335902940, -0.580465303310559570, -0.580506016834053010, -0.580546728906281670, -0.580587439527143200, -0.580628148696536120, -0.580668856414359060, +-0.580709562680509440, -0.580750267494885900, -0.580790970857386730, -0.580831672767910150, -0.580872373226354770, -0.580913072232618120, -0.580953769786598630, -0.580994465888195260, +-0.581035160537305310, -0.581075853733827420, -0.581116545477659900, -0.581157235768701040, -0.581197924606849380, -0.581238611992002660, -0.581279297924059750, -0.581319982402918160, +-0.581360665428476640, -0.581401347000633510, -0.581442027119286940, -0.581482705784335700, -0.581523382995677300, -0.581564058753210490, -0.581604733056833910, -0.581645405906445090, +-0.581686077301942770, -0.581726747243225260, -0.581767415730190860, -0.581808082762738320, -0.581848748340765280, -0.581889412464170250, -0.581930075132852110, -0.581970736346708370, +-0.582011396105637790, -0.582052054409538780, -0.582092711258309970, -0.582133366651849000, -0.582174020590054630, -0.582214673072825590, -0.582255324100059420, -0.582295973671655090, +-0.582336621787510780, -0.582377268447524800, -0.582417913651596120, -0.582458557399622270, -0.582499199691501990, -0.582539840527134150, -0.582580479906416260, -0.582621117829247190, +-0.582661754295525360, -0.582702389305149170, -0.582743022858017270, -0.582783654954027510, -0.582824285593078640, -0.582864914775069410, -0.582905542499897460, -0.582946168767461750, +-0.582986793577660590, -0.583027416930392840, -0.583068038825556020, -0.583108659263049330, -0.583149278242771190, -0.583189895764619550, -0.583230511828493170, -0.583271126434290580, +-0.583311739581910070, -0.583352351271250620, -0.583392961502209870, -0.583433570274686790, -0.583474177588580110, -0.583514783443787710, -0.583555387840208220, -0.583595990777740380, +-0.583636592256282500, -0.583677192275733450, -0.583717790835991070, -0.583758387936954670, -0.583798983578521890, -0.583839577760591590, -0.583880170483062400, -0.583920761745832850, +-0.583961351548801690, -0.584001939891866770, -0.584042526774927070, -0.584083112197881340, -0.584123696160627540, -0.584164278663064420, -0.584204859705090620, -0.584245439286604660, +-0.584286017407505520, -0.584326594067690940, -0.584367169267059890, -0.584407743005511350, -0.584448315282942940, -0.584488886099253870, -0.584529455454342540, -0.584570023348107930, +-0.584610589780447890, -0.584651154751261390, -0.584691718260447300, -0.584732280307903700, -0.584772840893529210, -0.584813400017222820, -0.584853957678882820, -0.584894513878408300, +-0.584935068615697110, -0.584975621890648220, -0.585016173703160720, -0.585056724053132360, -0.585097272940462210, -0.585137820365048910, -0.585178366326791100, -0.585218910825587630, +-0.585259453861336600, -0.585299995433937290, -0.585340535543287580, -0.585381074189286530, -0.585421611371832800, -0.585462147090825110, -0.585502681346162350, -0.585543214137742570, +-0.585583745465464660, -0.585624275329227780, -0.585664803728929930, -0.585705330664470060, -0.585745856135746810, -0.585786380142658940, -0.585826902685105510, -0.585867423762984400, +-0.585907943376194780, -0.585948461524635640, -0.585988978208204950, -0.586029493426801880, -0.586070007180325090, -0.586110519468673540, -0.586151030291745420, -0.586191539649439710, +-0.586232047541655590, -0.586272553968290810, -0.586313058929244790, -0.586353562424416050, -0.586394064453703460, -0.586434565017005970, -0.586475064114221790, -0.586515561745249990, +-0.586556057909989550, -0.586596552608338650, -0.586637045840196380, -0.586677537605461490, -0.586718027904032710, -0.586758516735809250, -0.586799004100689190, -0.586839489998571610, +-0.586879974429355580, -0.586920457392939300, -0.586960938889221960, -0.587001418918102200, -0.587041897479479210, -0.587082374573251190, -0.587122850199317200, -0.587163324357576450, +-0.587203797047927020, -0.587244268270268100, -0.587284738024498430, -0.587325206310516990, -0.587365673128222960, -0.587406138477514330, -0.587446602358290380, -0.587487064770450210, +-0.587527525713892110, -0.587567985188515160, -0.587608443194218230, -0.587648899730900180, -0.587689354798460300, -0.587729808396796560, -0.587770260525808720, -0.587810711185394960, +-0.587851160375454260, -0.587891608095885810, -0.587932054346588240, -0.587972499127460970, -0.588012942438402080, -0.588053384279310750, -0.588093824650086420, -0.588134263550627150, +-0.588174700980832130, -0.588215136940600460, -0.588255571429830870, -0.588296004448422780, -0.588336435996274280, -0.588376866073284650, -0.588417294679353330, -0.588457721814378390, +-0.588498147478259010, -0.588538571670894410, -0.588578994392183750, -0.588619415642025130, -0.588659835420318080, -0.588700253726961660, -0.588740670561854420, -0.588781085924895420, +-0.588821499815983640, -0.588861912235018160, -0.588902323181898280, -0.588942732656522190, -0.588983140658789320, -0.589023547188598950, -0.589063952245849400, -0.589104355830439850, +-0.589144757942269500, -0.589185158581237210, -0.589225557747242500, -0.589265955440183340, -0.589306351659959480, -0.589346746406470000, -0.589387139679613310, -0.589427531479288720, +-0.589467921805395420, -0.589508310657832600, -0.589548698036498560, -0.589589083941292950, -0.589629468372114830, -0.589669851328862850, -0.589710232811436090, -0.589750612819733840, +-0.589790991353654980, -0.589831368413099020, -0.589871743997964380, -0.589912118108150250, -0.589952490743556270, -0.589992861904080620, -0.590033231589622950, -0.590073599800082120, +-0.590113966535357300, -0.590154331795347930, -0.590194695579952300, -0.590235057889070380, -0.590275418722600360, -0.590315778080441890, -0.590356135962493920, -0.590396492368655660, +-0.590436847298826510, -0.590477200752904880, -0.590517552730790210, -0.590557903232382110, -0.590598252257578780, -0.590638599806279860, -0.590678945878384540, -0.590719290473791680, +-0.590759633592401130, -0.590799975234110990, -0.590840315398820980, -0.590880654086430530, -0.590920991296838060, -0.590961327029943200, -0.591001661285644910, -0.591041994063842950, +-0.591082325364435500, -0.591122655187322320, -0.591162983532402930, -0.591203310399575630, -0.591243635788740060, -0.591283959699795410, -0.591324282132640880, -0.591364603087175980, +-0.591404922563299240, -0.591445240560910190, -0.591485557079908350, -0.591525872120192250, -0.591566185681661530, -0.591606497764215370, -0.591646808367752850, -0.591687117492173840, +-0.591727425137376530, -0.591767731303260660, -0.591808035989725870, -0.591848339196670680, -0.591888640923994620, -0.591928941171596890, -0.591969239939377220, -0.592009537227234040, +-0.592049833035067090, -0.592090127362775890, -0.592130420210258970, -0.592170711577416080, -0.592211001464146290, -0.592251289870349140, -0.592291576795924040, -0.592331862240769610, +-0.592372146204785620, -0.592412428687871580, -0.592452709689926140, -0.592492989210848810, -0.592533267250539120, -0.592573543808896260, -0.592613818885819880, -0.592654092481208480, +-0.592694364594962390, -0.592734635226979890, -0.592774904377160960, -0.592815172045404570, -0.592855438231610350, -0.592895702935677950, -0.592935966157505880, -0.592976227896993890, +-0.593016488154041730, -0.593056746928547930, -0.593097004220412230, -0.593137260029534150, -0.593177514355812780, -0.593217767199148090, -0.593258018559438600, -0.593298268436584060, +-0.593338516830484220, -0.593378763741037710, -0.593419009168144270, -0.593459253111703330, -0.593499495571614630, -0.593539736547776810, -0.593579976040089610, -0.593620214048452890, +-0.593660450572765290, -0.593700685612926550, -0.593740919168836090, -0.593781151240393210, -0.593821381827498000, -0.593861610930048860, -0.593901838547945760, -0.593942064681088340, +-0.593982289329375470, -0.594022512492706880, -0.594062734170981990, -0.594102954364100320, -0.594143173071961520, -0.594183390294464430, -0.594223606031508920, -0.594263820282994850, +-0.594304033048820730, -0.594344244328886550, -0.594384454123091820, -0.594424662431336180, -0.594464869253518600, -0.594505074589538940, -0.594545278439296830, -0.594585480802691250, +-0.594625681679621930, -0.594665881069988410, -0.594706078973690100, -0.594746275390627080, -0.594786470320697980, -0.594826663763802670, -0.594866855719841100, -0.594907046188712040, +-0.594947235170315340, -0.594987422664550510, -0.595027608671317210, -0.595067793190515170, -0.595107976222043260, -0.595148157765801880, -0.595188337821689670, -0.595228516389606610, +-0.595268693469452330, -0.595308869061126230, -0.595349043164528410, -0.595389215779557610, -0.595429386906113690, -0.595469556544096720, -0.595509724693405460, -0.595549891353939990, +-0.595590056525599710, -0.595630220208284270, -0.595670382401893630, -0.595710543106326760, -0.595750702321483530, -0.595790860047263780, -0.595831016283566610, -0.595871171030291860, +-0.595911324287339280, -0.595951476054608630, -0.595991626331998980, -0.596031775119410300, -0.596071922416742560, -0.596112068223894510, -0.596152212540766450, -0.596192355367257790, +-0.596232496703268280, -0.596272636548697780, -0.596312774903445360, -0.596352911767411120, -0.596393047140494900, -0.596433181022595680, -0.596473313413613540, -0.596513444313448100, +-0.596553573721999020, -0.596593701639166360, -0.596633828064849100, -0.596673952998947650, -0.596714076441360990, -0.596754198391989070, -0.596794318850731640, -0.596834437817488460, +-0.596874555292159600, -0.596914671274643930, -0.596954785764841620, -0.596994898762652660, -0.597035010267976120, -0.597075120280711970, -0.597115228800760180, -0.597155335828020160, +-0.597195441362392220, -0.597235545403775330, -0.597275647952069550, -0.597315749007175100, -0.597355848568990820, -0.597395946637417020, -0.597436043212353220, -0.597476138293699720, +-0.597516231881355610, -0.597556323975220850, -0.597596414575195630, -0.597636503681178930, -0.597676591293071050, -0.597716677410771720, -0.597756762034180710, -0.597796845163198090, +-0.597836926797723050, -0.597877006937655660, -0.597917085582896140, -0.597957162733343540, -0.597997238388898070, -0.598037312549459470, -0.598077385214927480, -0.598117456385202530, +-0.598157526060183580, -0.598197594239770700, -0.598237660923864320, -0.598277726112363410, -0.598317789805168140, -0.598357852002178390, -0.598397912703294340, -0.598437971908415190, +-0.598478029617441120, -0.598518085830272330, -0.598558140546808000, -0.598598193766948230, -0.598638245490593080, -0.598678295717642310, -0.598718344447996100, -0.598758391681553650, +-0.598798437418215260, -0.598838481657881120, -0.598878524400450420, -0.598918565645823460, -0.598958605393900000, -0.598998643644580110, -0.599038680397763980, -0.599078715653350690, +-0.599118749411240990, -0.599158781671334180, -0.599198812433530350, -0.599238841697729450, -0.599278869463831470, -0.599318895731736580, -0.599358920501344210, -0.599398943772554540, +-0.599438965545267880, -0.599478985819383410, -0.599519004594801450, -0.599559021871421960, -0.599599037649145020, -0.599639051927870700, -0.599679064707498540, -0.599719075987928620, +-0.599759085769061450, -0.599799094050796120, -0.599839100833033050, -0.599879106115672300, -0.599919109898614080, -0.599959112181757790, -0.599999112965003740, -0.600039112248252240, +-0.600079110031402570, -0.600119106314355170, -0.600159101097009870, -0.600199094379267000, -0.600239086161026610, -0.600279076442188250, -0.600319065222652100, -0.600359052502318800, +-0.600399038281087320, -0.600439022558858390, -0.600479005335531890, -0.600518986611007780, -0.600558966385186690, -0.600598944657967700, -0.600638921429251460, -0.600678896698938150, +-0.600718870466927290, -0.600758842733119300, -0.600798813497414150, -0.600838782759712360, -0.600878750519913350, -0.600918716777917310, -0.600958681533624860, -0.600998644786935430, +-0.601038606537749320, -0.601078566785966720, -0.601118525531487700, -0.601158482774212690, -0.601198438514041200, -0.601238392750873540, -0.601278345484610230, -0.601318296715150800, +-0.601358246442395550, -0.601398194666244670, -0.601438141386598350, -0.601478086603357000, -0.601518030316420150, -0.601557972525688540, -0.601597913231061600, -0.601637852432439950, +-0.601677790129723560, -0.601717726322812840, -0.601757661011607990, -0.601797594196008760, -0.601837525875915550, -0.601877456051228780, -0.601917384721848080, -0.601957311887673980, +-0.601997237548606570, -0.602037161704546020, -0.602077084355392870, -0.602117005501046740, -0.602156925141408060, -0.602196843276377460, -0.602236759905854350, -0.602276675029739360, +-0.602316588647932690, -0.602356500760334980, -0.602396411366845520, -0.602436320467365170, -0.602476228061794240, -0.602516134150032470, -0.602556038731980380, -0.602595941807538060, +-0.602635843376606030, -0.602675743439084700, -0.602715641994873600, -0.602755539043873470, -0.602795434585984840, -0.602835328621107220, -0.602875221149141380, -0.602915112169987390, +-0.602955001683545650, -0.602994889689716820, -0.603034776188400290, -0.603074661179496930, -0.603114544662907260, -0.603154426638530810, -0.603194307106268310, -0.603234186066020080, +-0.603274063517686640, -0.603313939461167850, -0.603353813896364110, -0.603393686823176180, -0.603433558241503690, -0.603473428151247380, -0.603513296552307340, -0.603553163444584210, +-0.603593028827978490, -0.603632892702389840, -0.603672755067718890, -0.603712615923866490, -0.603752475270732170, -0.603792333108216670, -0.603832189436220300, -0.603872044254643470, +-0.603911897563386920, -0.603951749362350300, -0.603991599651434560, -0.604031448430539570, -0.604071295699565860, -0.604111141458414050, -0.604150985706984220, -0.604190828445177350, +-0.604230669672893070, -0.604270509390032130, -0.604310347596495270, -0.604350184292182120, -0.604390019476993560, -0.604429853150829980, -0.604469685313591800, -0.604509515965179660, +-0.604549345105493410, -0.604589172734433800, -0.604628998851901580, -0.604668823457796600, -0.604708646552019500, -0.604748468134470700, -0.604788288205051260, -0.604828106763660610, +-0.604867923810199710, -0.604907739344569430, -0.604947553366669390, -0.604987365876400450, -0.605027176873663140, -0.605066986358357870, -0.605106794330385500, -0.605146600789645770, +-0.605186405736039550, -0.605226209169467680, -0.605266011089829910, -0.605305811497027110, -0.605345610390959800, -0.605385407771528490, -0.605425203638634060, -0.605464997992176120, +-0.605504790832055770, -0.605544582158173860, -0.605584371970430020, -0.605624160268725340, -0.605663947052960230, -0.605703732323035540, -0.605743516078851240, -0.605783298320308080, +-0.605823079047307140, -0.605862858259748060, -0.605902635957531910, -0.605942412140559110, -0.605982186808730280, -0.606021959961946300, -0.606061731600107120, -0.606101501723113610, +-0.606141270330866730, -0.606181037423266340, -0.606220803000213300, -0.606260567061608250, -0.606300329607351810, -0.606340090637344840, -0.606379850151487320, -0.606419608149680540, +-0.606459364631824370, -0.606499119597819880, -0.606538873047567480, -0.606578624980967930, -0.606618375397922180, -0.606658124298330100, -0.606697871682092770, -0.606737617549111040, +-0.606777361899284990, -0.606817104732515490, -0.606856846048703270, -0.606896585847748970, -0.606936324129553450, -0.606976060894016790, -0.607015796141040060, -0.607055529870524140, +-0.607095262082368970, -0.607134992776475760, -0.607174721952745020, -0.607214449611077840, -0.607254175751374190, -0.607293900373535030, -0.607333623477461560, -0.607373345063053630, +-0.607413065130212430, -0.607452783678838480, -0.607492500708832540, -0.607532216220095790, -0.607571930212528090, -0.607611642686030520, -0.607651353640504270, -0.607691063075849300, +-0.607730770991966600, -0.607770477388757000, -0.607810182266121270, -0.607849885623960360, -0.607889587462174360, -0.607929287780664800, -0.607968986579331740, -0.608008683858076050, +-0.608048379616798810, -0.608088073855400530, -0.608127766573782420, -0.608167457771844560, -0.608207147449488120, -0.608246835606614080, -0.608286522243122520, -0.608326207358914850, +-0.608365890953891490, -0.608405573027953510, -0.608445253581001880, -0.608484932612936790, -0.608524610123659440, -0.608564286113070900, -0.608603960581071140, -0.608643633527561680, +-0.608683304952442940, -0.608722974855616110, -0.608762643236982150, -0.608802310096441150, -0.608841975433894840, -0.608881639249243210, -0.608921301542387440, -0.608960962313228380, +-0.609000621561667010, -0.609040279287604400, -0.609079935490940750, -0.609119590171577240, -0.609159243329415070, -0.609198894964354530, -0.609238545076296710, -0.609278193665142460, +-0.609317840730792870, -0.609357486273148900, -0.609397130292110960, -0.609436772787580130, -0.609476413759457710, -0.609516053207643900, -0.609555691132040000, -0.609595327532546860, +-0.609634962409065780, -0.609674595761496960, -0.609714227589741590, -0.609753857893700960, -0.609793486673275490, -0.609833113928366140, -0.609872739658874120, -0.609912363864700160, +-0.609951986545745670, -0.609991607701910970, -0.610031227333097110, -0.610070845439205640, -0.610110462020136630, -0.610150077075791500, -0.610189690606071090, -0.610229302610876600, +-0.610268913090109110, -0.610308522043669030, -0.610348129471458000, -0.610387735373376210, -0.610427339749325170, -0.610466942599205750, -0.610506543922918920, -0.610546143720366200, +-0.610585741991447660, -0.610625338736064840, -0.610664933954119030, -0.610704527645510530, -0.610744119810140650, -0.610783710447910470, -0.610823299558721060, -0.610862887142473720, +-0.610902473199068870, -0.610942057728407820, -0.610981640730391960, -0.611021222204921610, -0.611060802151898290, -0.611100380571222850, -0.611139957462796920, -0.611179532826520710, +-0.611219106662295620, -0.611258678970023170, -0.611298249749603670, -0.611337819000938530, -0.611377386723928830, -0.611416952918475640, -0.611456517584480500, -0.611496080721843690, +-0.611535642330466640, -0.611575202410250870, -0.611614760961096680, -0.611654317982905700, -0.611693873475578800, -0.611733427439017370, -0.611772979873122620, -0.611812530777795070, +-0.611852080152936240, -0.611891627998447430, -0.611931174314229390, -0.611970719100183300, -0.612010262356210370, -0.612049804082212210, -0.612089344278089250, -0.612128882943742790, +-0.612168420079074570, -0.612207955683984890, -0.612247489758375400, -0.612287022302147150, -0.612326553315201250, -0.612366082797439430, -0.612405610748762100, -0.612445137169070560, +-0.612484662058266680, -0.612524185416250750, -0.612563707242924300, -0.612603227538188740, -0.612642746301944930, -0.612682263534094720, -0.612721779234538410, -0.612761293403178090, +-0.612800806039914160, -0.612840317144648260, -0.612879826717281470, -0.612919334757715210, -0.612958841265850870, -0.612998346241589110, -0.613037849684831550, -0.613077351595479600, +-0.613116851973434020, -0.613156350818596210, -0.613195848130867580, -0.613235343910149330, -0.613274838156343090, -0.613314330869349390, -0.613353822049069960, -0.613393311695406230, +-0.613432799808258820, -0.613472286387529490, -0.613511771433119410, -0.613551254944930240, -0.613590736922862590, -0.613630217366818110, -0.613669696276698430, -0.613709173652404180, +-0.613748649493837010, -0.613788123800898200, -0.613827596573489060, -0.613867067811511240, -0.613906537514865460, -0.613946005683453370, -0.613985472317176480, -0.614024937415935670, +-0.614064400979632550, -0.614103863008168330, -0.614143323501444520, -0.614182782459362750, -0.614222239881823670, -0.614261695768728910, -0.614301150119980320, -0.614340602935478540, +-0.614380054215125200, -0.614419503958821830, -0.614458952166469950, -0.614498398837970310, -0.614537843973224750, -0.614577287572134920, -0.614616729634601460, -0.614656170160526210, +-0.614695609149810580, -0.614735046602355890, -0.614774482518063990, -0.614813916896835400, -0.614853349738572090, -0.614892781043175800, -0.614932210810547160, -0.614971639040588050, +-0.615011065733199750, -0.615050490888283900, -0.615089914505742020, -0.615129336585475080, -0.615168757127385170, -0.615208176131373020, -0.615247593597340490, -0.615287009525188890, +-0.615326423914819730, -0.615365836766134990, -0.615405248079035180, -0.615444657853422280, -0.615484066089198150, -0.615523472786263400, -0.615562877944520030, -0.615602281563869540, +-0.615641683644213230, -0.615681084185453090, -0.615720483187489950, -0.615759880650225470, -0.615799276573561820, -0.615838670957399530, -0.615878063801640560, -0.615917455106186450, +-0.615956844870938940, -0.615996233095799100, -0.616035619780668680, -0.616075004925449530, -0.616114388530042520, -0.616153770594349500, -0.616193151118272110, -0.616232530101711750, +-0.616271907544570510, -0.616311283446749130, -0.616350657808149570, -0.616390030628673700, -0.616429401908222370, -0.616468771646697560, -0.616508139844000770, -0.616547506500033650, +-0.616586871614698160, -0.616626235187895170, -0.616665597219526520, -0.616704957709494180, -0.616744316657699240, -0.616783674064043440, -0.616823029928428410, -0.616862384250756230, +-0.616901737030927650, -0.616941088268844750, -0.616980437964409600, -0.617019786117522840, -0.617059132728086770, -0.617098477796002800, -0.617137821321172560, -0.617177163303498140, +-0.617216503742880510, -0.617255842639221620, -0.617295179992423560, -0.617334515802387070, -0.617373850069014350, -0.617413182792206920, -0.617452513971866620, -0.617491843607895330, +-0.617531171700194110, -0.617570498248665390, -0.617609823253210010, -0.617649146713730060, -0.617688468630127270, -0.617727789002303300, -0.617767107830160090, -0.617806425113598960, +-0.617845740852521640, -0.617885055046830330, -0.617924367696426110, -0.617963678801210840, -0.618002988361086470, -0.618042296375954650, -0.618081602845717340, -0.618120907770275730, +-0.618160211149531900, -0.618199512983387820, -0.618238813271744570, -0.618278112014504440, -0.618317409211568860, -0.618356704862840220, -0.618395998968219400, -0.618435291527608680, +-0.618474582540910030, -0.618513872008024550, -0.618553159928854400, -0.618592446303301350, -0.618631731131267130, -0.618671014412654040, -0.618710296147362950, -0.618749576335296260, +-0.618788854976355830, -0.618828132070443070, -0.618867407617459840, -0.618906681617308110, -0.618945954069889730, -0.618985224975106770, -0.619024494332860440, -0.619063762143052920, +-0.619103028405586290, -0.619142293120361730, -0.619181556287281440, -0.619220817906247280, -0.619260077977161430, -0.619299336499924970, -0.619338593474440200, -0.619377848900609320, +-0.619417102778333510, -0.619456355107514840, -0.619495605888055300, -0.619534855119856840, -0.619574102802821550, -0.619613348936850610, -0.619652593521846320, -0.619691836557710870, +-0.619731078044345570, -0.619770317981652500, -0.619809556369533610, -0.619848793207890880, -0.619888028496626500, -0.619927262235641650, -0.619966494424839090, -0.620005725064119880, +-0.620044954153386450, -0.620084181692540540, -0.620123407681484220, -0.620162632120119680, -0.620201855008348240, -0.620241076346072170, -0.620280296133193800, -0.620319514369614300, +-0.620358731055235980, -0.620397946189960800, -0.620437159773690850, -0.620476371806328310, -0.620515582287774480, -0.620554791217931780, -0.620593998596702390, -0.620633204423987620, +-0.620672408699689870, -0.620711611423711120, -0.620750812595953660, -0.620790012216318800, -0.620829210284708940, -0.620868406801026400, -0.620907601765172570, -0.620946795177049650, +-0.620985987036559720, -0.621025177343604850, -0.621064366098087460, -0.621103553299908740, -0.621142738948971100, -0.621181923045176940, -0.621221105588427690, -0.621260286578625640, +-0.621299466015672990, -0.621338643899471580, -0.621377820229923940, -0.621416995006931370, -0.621456168230396620, -0.621495339900221210, -0.621534510016307330, -0.621573678578557280, +-0.621612845586873020, -0.621652011041156860, -0.621691174941310430, -0.621730337287236150, -0.621769498078836300, -0.621808657316012310, -0.621847814998666700, -0.621886971126701550, +-0.621926125700019040, -0.621965278718521470, -0.622004430182110380, -0.622043580090688280, -0.622082728444157460, -0.622121875242419580, -0.622161020485377030, -0.622200164172931780, +-0.622239306304986580, -0.622278446881442740, -0.622317585902202760, -0.622356723367169300, -0.622395859276243520, -0.622434993629328190, -0.622474126426325270, -0.622513257667137170, +-0.622552387351666180, -0.622591515479813840, -0.622630642051482770, -0.622669767066575510, -0.622708890524993340, -0.622748012426639130, -0.622787132771414730, -0.622826251559222550, +-0.622865368789965120, -0.622904484463543850, -0.622943598579861370, -0.622982711138820310, -0.623021822140322090, -0.623060931584269340, -0.623100039470564250, -0.623139145799109340, +-0.623178250569806360, -0.623217353782557600, -0.623256455437265930, -0.623295555533832760, -0.623334654072160600, -0.623373751052151870, -0.623412846473708760, -0.623451940336733900, +-0.623491032641128820, -0.623530123386796140, -0.623569212573638510, -0.623608300201557550, -0.623647386270455790, -0.623686470780235540, -0.623725553730799190, -0.623764635122049270, +-0.623803714953887420, -0.623842793226216610, -0.623881869938938460, -0.623920945091955610, -0.623960018685170480, -0.623999090718485250, -0.624038161191802660, -0.624077230105024360, +-0.624116297458052970, -0.624155363250791130, -0.624194427483140580, -0.624233490155003960, -0.624272551266283560, -0.624311610816881800, -0.624350668806701430, -0.624389725235643960, +-0.624428780103612250, -0.624467833410508820, -0.624506885156235540, -0.624545935340695020, -0.624584983963789700, -0.624624031025422300, -0.624663076525494350, -0.624702120463908830, +-0.624741162840568350, -0.624780203655374570, -0.624819242908230320, -0.624858280599037920, -0.624897316727699770, -0.624936351294118730, -0.624975384298196550, -0.625014415739835740, +-0.625053445618939390, -0.625092473935409010, -0.625131500689147470, -0.625170525880057170, -0.625209549508040530, -0.625248571573000400, -0.625287592074838420, -0.625326611013457550, +-0.625365628388760530, -0.625404644200649010, -0.625443658449025830, -0.625482671133793630, -0.625521682254855050, -0.625560691812111940, -0.625599699805467040, -0.625638706234823210, +-0.625677711100082410, -0.625716714401147180, -0.625755716137920250, -0.625794716310304030, -0.625833714918201390, -0.625872711961514060, -0.625911707440144900, -0.625950701353996890, +-0.625989693702971860, -0.626028684486972460, -0.626067673705901440, -0.626106661359661200, -0.626145647448154600, -0.626184631971283600, -0.626223614928951290, -0.626262596321059740, +-0.626301576147511590, -0.626340554408209570, -0.626379531103056110, -0.626418506231954160, -0.626457479794805590, -0.626496451791513360, -0.626535422221980330, -0.626574391086108460, +-0.626613358383800500, -0.626652324114959190, -0.626691288279487170, -0.626730250877287180, -0.626769211908261180, -0.626808171372312260, -0.626847129269343160, -0.626886085599255960, +-0.626925040361953510, -0.626963993557338450, -0.627002945185313740, -0.627041895245781360, -0.627080843738644260, -0.627119790663805300, -0.627158736021166560, -0.627197679810631010, +-0.627236622032101290, -0.627275562685480010, -0.627314501770670050, -0.627353439287573590, -0.627392375236093590, -0.627431309616132920, -0.627470242427593640, -0.627509173670378730, +-0.627548103344390930, -0.627587031449532870, -0.627625957985707530, -0.627664882952816970, -0.627703806350764170, -0.627742728179452310, -0.627781648438783150, -0.627820567128659970, +-0.627859484248985300, -0.627898399799662330, -0.627937313780593030, -0.627976226191680360, -0.628015137032827520, -0.628054046303936460, -0.628092954004910390, -0.628131860135651810, +-0.628170764696063590, -0.628209667686048910, -0.628248569105509640, -0.628287468954348950, -0.628326367232469930, -0.628365263939774650, -0.628404159076166200, -0.628443052641547430, +-0.628481944635820860, -0.628520835058889890, -0.628559723910656510, -0.628598611191024110, -0.628637496899894900, -0.628676381037171940, -0.628715263602757980, -0.628754144596555880, +-0.628793024018468700, -0.628831901868398770, -0.628870778146248920, -0.628909652851922570, -0.628948525985321690, -0.628987397546349580, -0.629026267534908870, -0.629065135950902520, +-0.629104002794233730, -0.629142868064804570, -0.629181731762518240, -0.629220593887277910, -0.629259454438985680, -0.629298313417544940, -0.629337170822858340, -0.629376026654829170, +-0.629414880913359620, -0.629453733598352770, -0.629492584709712030, -0.629531434247339480, -0.629570282211138310, -0.629609128601011480, -0.629647973416861740, -0.629686816658592500, +-0.629725658326105830, -0.629764498419305040, -0.629803336938093320, -0.629842173882372960, -0.629881009252047150, -0.629919843047018760, -0.629958675267190850, -0.629997505912466500, +-0.630036334982748140, -0.630075162477938930, -0.630113988397942080, -0.630152812742660000, -0.630191635511995860, -0.630230456705852540, -0.630269276324133540, -0.630308094366740960, +-0.630346910833578190, -0.630385725724548430, -0.630424539039553980, -0.630463350778498240, -0.630502160941284200, -0.630540969527814580, -0.630579776537993020, -0.630618581971721600, +-0.630657385828903850, -0.630696188109442830, -0.630734988813241080, -0.630773787940201780, -0.630812585490228120, -0.630851381463222950, -0.630890175859089570, -0.630928968677730520, +-0.630967759919049410, -0.631006549582948550, -0.631045337669331240, -0.631084124178100670, -0.631122909109159690, -0.631161692462411830, -0.631200474237759380, -0.631239254435105760, +-0.631278033054354370, -0.631316810095407630, -0.631355585558168730, -0.631394359442540850, -0.631433131748427190, -0.631471902475731040, -0.631510671624354700, -0.631549439194201700, +-0.631588205185175440, -0.631626969597178340, -0.631665732430113810, -0.631704493683885040, -0.631743253358395320, -0.631782011453547070, -0.631820767969243800, -0.631859522905389050, +-0.631898276261885110, -0.631937028038635380, -0.631975778235543180, -0.632014526852511470, -0.632053273889443880, -0.632092019346242710, -0.632130763222811480, -0.632169505519053710, +-0.632208246234871820, -0.632246985370169320, -0.632285722924849300, -0.632324458898815060, -0.632363193291969990, -0.632401926104216530, -0.632440657335458620, -0.632479386985598800, +-0.632518115054540480, -0.632556841542186830, -0.632595566448441170, -0.632634289773206790, -0.632673011516386440, -0.632711731677883530, -0.632750450257601680, -0.632789167255443320, +-0.632827882671312070, -0.632866596505111120, -0.632905308756743670, -0.632944019426113340, -0.632982728513122540, -0.633021436017674910, -0.633060141939674080, -0.633098846279022460, +-0.633137549035623800, -0.633176250209381290, -0.633214949800198550, -0.633253647807977990, -0.633292344232623260, -0.633331039074038090, -0.633369732332125010, -0.633408424006787540, +-0.633447114097929090, -0.633485802605452840, -0.633524489529262320, -0.633563174869260390, -0.633601858625350460, -0.633640540797436150, -0.633679221385420210, -0.633717900389206170, +-0.633756577808697430, -0.633795253643797300, -0.633833927894409290, -0.633872600560436150, -0.633911271641781400, -0.633949941138349020, -0.633988609050041290, -0.634027275376762070, +-0.634065940118414660, -0.634104603274902810, -0.634143264846129040, -0.634181924831997090, -0.634220583232410710, -0.634259240047272520, -0.634297895276486280, -0.634336548919955280, +-0.634375200977582930, -0.634413851449272760, -0.634452500334927840, -0.634491147634451580, -0.634529793347747730, -0.634568437474719140, -0.634607080015269440, -0.634645720969301940, +-0.634684360336720270, -0.634722998117427940, -0.634761634311327820, -0.634800268918323970, -0.634838901938319160, -0.634877533371217000, -0.634916163216921010, -0.634954791475334620, +-0.634993418146361680, -0.635032043229904810, -0.635070666725867760, -0.635109288634154500, -0.635147908954667550, -0.635186527687310990, -0.635225144831988000, -0.635263760388602110, +-0.635302374357057160, -0.635340986737256030, -0.635379597529102450, -0.635418206732500050, -0.635456814347351910, -0.635495420373561770, -0.635534024811033050, -0.635572627659669600, +-0.635611228919374160, -0.635649828590050700, -0.635688426671603080, -0.635727023163934040, -0.635765618066947420, -0.635804211380546660, -0.635842803104635480, -0.635881393239117630, +-0.635919981783895860, -0.635958568738874240, -0.635997154103956520, -0.636035737879045550, -0.636074320064045300, -0.636112900658859170, -0.636151479663390810, -0.636190057077544060, +-0.636228632901221890, -0.636267207134328160, -0.636305779776766720, -0.636344350828440430, -0.636382920289253360, -0.636421488159108930, -0.636460054437911090, -0.636498619125562830, +-0.636537182221967980, -0.636575743727030520, -0.636614303640653410, -0.636652861962740510, -0.636691418693195450, -0.636729973831921870, -0.636768527378823720, -0.636807079333803870, +-0.636845629696766280, -0.636884178467615030, -0.636922725646252960, -0.636961271232584060, -0.636999815226511950, -0.637038357627940370, -0.637076898436773290, -0.637115437652913450, +-0.637153975276265490, -0.637192511306732270, -0.637231045744217740, -0.637269578588625540, -0.637308109839859420, -0.637346639497823330, -0.637385167562420360, -0.637423694033554480, +-0.637462218911129750, -0.637500742195049040, -0.637539263885216530, -0.637577783981535860, -0.637616302483910660, -0.637654819392245110, -0.637693334706442180, -0.637731848426405850, +-0.637770360552040280, -0.637808871083248460, -0.637847380019934460, -0.637885887362002020, -0.637924393109355230, -0.637962897261897030, -0.638001399819531630, -0.638039900782163110, +-0.638078400149694520, -0.638116897922029860, -0.638155394099072960, -0.638193888680727570, -0.638232381666897890, -0.638270873057486750, -0.638309362852398590, -0.638347851051537240, +-0.638386337654806010, -0.638424822662108980, -0.638463306073349780, -0.638501787888432370, -0.638540268107260830, -0.638578746729738240, -0.638617223755768790, -0.638655699185256660, +-0.638694173018104940, -0.638732645254217800, -0.638771115893499000, -0.638809584935852710, -0.638848052381182250, -0.638886518229391580, -0.638924982480384870, -0.638963445134065560, +-0.639001906190337480, -0.639040365649104710, -0.639078823510271010, -0.639117279773740550, -0.639155734439416650, -0.639194187507203360, -0.639232638977004890, -0.639271088848724520, +-0.639309537122266460, -0.639347983797534550, -0.639386428874432640, -0.639424872352865050, -0.639463314232734840, -0.639501754513946750, -0.639540193196403980, -0.639578630280010610, +-0.639617065764670810, -0.639655499650288230, -0.639693931936767270, -0.639732362624011230, -0.639770791711924190, -0.639809219200410560, -0.639847645089373530, -0.639886069378717390, +-0.639924492068346010, -0.639962913158163450, -0.640001332648073910, -0.640039750537980790, -0.640078166827788180, -0.640116581517400580, -0.640154994606721210, -0.640193406095654230, +-0.640231815984103840, -0.640270224271974220, -0.640308630959168680, -0.640347036045591620, -0.640385439531147240, -0.640423841415738940, -0.640462241699271130, -0.640500640381647560, +-0.640539037462772520, -0.640577432942550100, -0.640615826820883920, -0.640654219097678060, -0.640692609772837040, -0.640730998846264050, -0.640769386317863730, -0.640807772187539810, +-0.640846156455196490, -0.640884539120738170, -0.640922920184068160, -0.640961299645090850, -0.640999677503710560, -0.641038053759830810, -0.641076428413355880, -0.641114801464189870, +-0.641153172912237170, -0.641191542757401310, -0.641229910999586480, -0.641268277638697310, -0.641306642674637000, -0.641345006107310160, -0.641383367936620870, -0.641421728162473000, +-0.641460086784771290, -0.641498443803418920, -0.641536799218320520, -0.641575153029380400, -0.641613505236502070, -0.641651855839590060, -0.641690204838548330, -0.641728552233281070, +-0.641766898023692800, -0.641805242209686930, -0.641843584791168320, -0.641881925768040370, -0.641920265140207720, -0.641958602907574340, -0.641996939070044400, -0.642035273627522440, +-0.642073606579912080, -0.642111937927117630, -0.642150267669043600, -0.642188595805593730, -0.642226922336672220, -0.642265247262183480, -0.642303570582031580, -0.642341892296121150, +-0.642380212404355610, -0.642418530906639470, -0.642456847802877480, -0.642495163092972940, -0.642533476776830590, -0.642571788854354400, -0.642610099325449210, -0.642648408190018340, +-0.642686715447966520, -0.642725021099198160, -0.642763325143617000, -0.642801627581127580, -0.642839928411633950, -0.642878227635040540, -0.642916525251251980, -0.642954821260171670, +-0.642993115661704360, -0.643031408455754570, -0.643069699642225930, -0.643107989221023080, -0.643146277192050200, -0.643184563555211700, -0.643222848310411990, -0.643261131457554920, +-0.643299412996545360, -0.643337692927286930, -0.643375971249684260, -0.643414247963641660, -0.643452523069063420, -0.643490796565854280, -0.643529068453917770, -0.643567338733158520, +-0.643605607403481380, -0.643643874464789880, -0.643682139916988530, -0.643720403759981960, -0.643758665993674370, -0.643796926617970500, -0.643835185632773870, -0.643873443037989320, +-0.643911698833521510, -0.643949953019274160, -0.643988205595151910, -0.644026456561059060, -0.644064705916900460, -0.644102953662579750, -0.644141199798001660, -0.644179444323070950, +-0.644217687237691240, -0.644255928541767390, -0.644294168235203690, -0.644332406317904450, -0.644370642789774630, -0.644408877650717860, -0.644447110900638890, -0.644485342539442560, +-0.644523572567032410, -0.644561800983313390, -0.644600027788189920, -0.644638252981566300, -0.644676476563347370, -0.644714698533436990, -0.644752918891739800, -0.644791137638160650, +-0.644829354772603390, -0.644867570294972660, -0.644905784205173080, -0.644943996503109300, -0.644982207188685260, -0.645020416261805620, -0.645058623722375320, -0.645096829570298120, +-0.645135033805478870, -0.645173236427821980, -0.645211437437232080, -0.645249636833613920, -0.645287834616871230, -0.645326030786909090, -0.645364225343632140, -0.645402418286944220, +-0.645440609616750430, -0.645478799332954930, -0.645516987435462490, -0.645555173924178050, -0.645593358799005150, -0.645631542059849290, -0.645669723706614240, -0.645707903739204840, +-0.645746082157525710, -0.645784258961481390, -0.645822434150976730, -0.645860607725915690, -0.645898779686203020, -0.645936950031743900, -0.645975118762441960, -0.646013285878202170, +-0.646051451378929280, -0.646089615264527680, -0.646127777534902470, -0.646165938189957380, -0.646204097229597600, -0.646242254653727750, -0.646280410462252040, -0.646318564655075200, +-0.646356717232101970, -0.646394868193237330, -0.646433017538385220, -0.646471165267450520, -0.646509311380338180, -0.646547455876952280, -0.646585598757197790, -0.646623740020979220, +-0.646661879668201320, -0.646700017698769170, -0.646738154112586510, -0.646776288909558520, -0.646814422089590060, -0.646852553652585320, -0.646890683598449150, -0.646928811927086290, +-0.646966938638401380, -0.647005063732299380, -0.647043187208684480, -0.647081309067461640, -0.647119429308535830, -0.647157547931811130, -0.647195664937192490, -0.647233780324584670, +-0.647271894093892850, -0.647310006245020890, -0.647348116777873960, -0.647386225692357040, -0.647424332988374210, -0.647462438665830530, -0.647500542724630870, -0.647538645164679740, +-0.647576745985882330, -0.647614845188142720, -0.647652942771366090, -0.647691038735457410, -0.647729133080320760, -0.647767225805861320, -0.647805316911983730, -0.647843406398592950, +-0.647881494265593940, -0.647919580512890780, -0.647957665140389110, -0.647995748147992880, -0.648033829535607400, -0.648071909303137180, -0.648109987450487310, -0.648148063977562750, +-0.648186138884267680, -0.648224212170507300, -0.648262283836186780, -0.648300353881210100, -0.648338422305482550, -0.648376489108908990, -0.648414554291394270, -0.648452617852843470, +-0.648490679793160660, -0.648528740112251260, -0.648566798810020330, -0.648604855886372070, -0.648642911341211660, -0.648680965174443960, -0.648719017385974260, -0.648757067975706650, +-0.648795116943546300, -0.648833164289398520, -0.648871210013167500, -0.648909254114758530, -0.648947296594076350, -0.648985337451025930, -0.649023376685512470, -0.649061414297440350, +-0.649099450286714560, -0.649137484653240620, -0.649175517396922470, -0.649213548517665660, -0.649251578015374920, -0.649289605889955210, -0.649327632141311840, -0.649365656769349100, +-0.649403679773972180, -0.649441701155086480, -0.649479720912596090, -0.649517739046406420, -0.649555755556422420, -0.649593770442549290, -0.649631783704691550, -0.649669795342754150, +-0.649707805356642740, -0.649745813746261500, -0.649783820511515620, -0.649821825652310280, -0.649859829168550340, -0.649897831060141210, -0.649935831326987070, -0.649973829968993440, +-0.650011826986065520, -0.650049822378107710, -0.650087816145025420, -0.650125808286723510, -0.650163798803107040, -0.650201787694081430, -0.650239774959551100, -0.650277760599421660, +-0.650315744613597420, -0.650353727001983790, -0.650391707764485850, -0.650429686901008770, -0.650467664411457650, -0.650505640295737100, -0.650543614553752430, -0.650581587185409150, +-0.650619558190611460, -0.650657527569264870, -0.650695495321274580, -0.650733461446545420, -0.650771425944983050, -0.650809388816491640, -0.650847350060976940, -0.650885309678344020, +-0.650923267668497620, -0.650961224031343040, -0.650999178766785370, -0.651037131874730110, -0.651075083355081570, -0.651113033207745500, -0.651150981432627060, -0.651188928029630910, +-0.651226872998662330, -0.651264816339626630, -0.651302758052428880, -0.651340698136974590, -0.651378636593168300, -0.651416573420915300, -0.651454508620121220, -0.651492442190690580, +-0.651530374132528790, -0.651568304445541040, -0.651606233129632620, -0.651644160184708940, -0.651682085610674420, -0.651720009407434800, -0.651757931574895370, -0.651795852112960870, +-0.651833771021536720, -0.651871688300528220, -0.651909603949840650, -0.651947517969378890, -0.651985430359048320, -0.652023341118754480, -0.652061250248402000, -0.652099157747896290, +-0.652137063617142740, -0.652174967856046560, -0.652212870464513260, -0.652250771442447470, -0.652288670789754720, -0.652326568506340630, -0.652364464592109840, -0.652402359046967860, +-0.652440251870819890, -0.652478143063571440, -0.652516032625127920, -0.652553920555393960, -0.652591806854275540, -0.652629691521677270, -0.652667574557504790, -0.652705455961663290, +-0.652743335734058180, -0.652781213874595200, -0.652819090383178760, -0.652856965259714480, -0.652894838504108230, -0.652932710116264640, -0.652970580096089100, -0.653008448443487270, +-0.653046315158364200, -0.653084180240625760, -0.653122043690176460, -0.653159905506922040, -0.653197765690768260, -0.653235624241619740, -0.653273481159382110, -0.653311336443960780, +-0.653349190095261490, -0.653387042113188880, -0.653424892497648570, -0.653462741248546530, -0.653500588365787170, -0.653538433849276350, -0.653576277698919460, -0.653614119914621930, +-0.653651960496289370, -0.653689799443826660, -0.653727636757139410, -0.653765472436133370, -0.653803306480713280, -0.653841138890784990, -0.653878969666253810, -0.653916798807025250, +-0.653954626313005050, -0.653992452184097850, -0.654030276420209940, -0.654068099021245960, -0.654105919987111760, -0.654143739317712750, -0.654181557012954440, -0.654219373072742580, +-0.654257187496981810, -0.654295000285578190, -0.654332811438437360, -0.654370620955464170, -0.654408428836564470, -0.654446235081643680, -0.654484039690607310, -0.654521842663361110, +-0.654559643999810040, -0.654597443699859840, -0.654635241763416360, -0.654673038190384470, -0.654710832980670010, -0.654748626134178390, -0.654786417650815240, -0.654824207530486310, +-0.654861995773096670, -0.654899782378552290, -0.654937567346758120, -0.654975350677620030, -0.655013132371043530, -0.655050912426934250, -0.655088690845198050, -0.655126467625739780, +-0.655164242768465300, -0.655202016273280560, -0.655239788140090430, -0.655277558368800860, -0.655315326959317380, -0.655353093911545610, -0.655390859225391420, -0.655428622900759650, +-0.655466384937556490, -0.655504145335687570, -0.655541904095058080, -0.655579661215573760, -0.655617416697140240, -0.655655170539663600, -0.655692922743048690, -0.655730673307201360, +-0.655768422232027800, -0.655806169517432870, -0.655843915163322410, -0.655881659169602170, -0.655919401536177890, -0.655957142262955430, -0.655994881349839630, -0.656032618796736800, +-0.656070354603552670, -0.656108088770192330, -0.656145821296561740, -0.656183552182566630, -0.656221281428112650, -0.656259009033105740, -0.656296734997451110, -0.656334459321054830, +-0.656372182003822190, -0.656409903045659050, -0.656447622446471150, -0.656485340206164110, -0.656523056324644140, -0.656560770801816180, -0.656598483637586330, -0.656636194831860530, +-0.656673904384543980, -0.656711612295542650, -0.656749318564762260, -0.656787023192108580, -0.656824726177487660, -0.656862427520804590, -0.656900127221965560, -0.656937825280876410, +-0.656975521697442440, -0.657013216471569630, -0.657050909603163810, -0.657088601092131070, -0.657126290938376490, -0.657163979141806130, -0.657201665702326190, -0.657239350619841730, +-0.657277033894258840, -0.657314715525483480, -0.657352395513421280, -0.657390073857978430, -0.657427750559060000, -0.657465425616572290, -0.657503099030421370, -0.657540770800512210, +-0.657578440926751330, -0.657616109409044140, -0.657653776247296820, -0.657691441441415340, -0.657729104991304990, -0.657766766896871750, -0.657804427158022010, -0.657842085774660860, +-0.657879742746694470, -0.657917398074028830, -0.657955051756569990, -0.657992703794223030, -0.658030354186894480, -0.658068002934490300, -0.658105650036915790, -0.658143295494077240, +-0.658180939305880290, -0.658218581472231110, -0.658256221993035790, -0.658293860868199630, -0.658331498097628700, -0.658369133681229400, -0.658406767618907040, -0.658444399910567690, +-0.658482030556117310, -0.658519659555461880, -0.658557286908507570, -0.658594912615159790, -0.658632536675325060, -0.658670159088908580, -0.658707779855816740, -0.658745398975955520, +-0.658783016449230760, -0.658820632275548770, -0.658858246454814830, -0.658895858986935370, -0.658933469871816560, -0.658971079109363700, -0.659008686699483200, -0.659046292642080920, +-0.659083896937062930, -0.659121499584335520, -0.659159100583804110, -0.659196699935374890, -0.659234297638954250, -0.659271893694447500, -0.659309488101761040, -0.659347080860800960, +-0.659384671971473440, -0.659422261433683880, -0.659459849247338690, -0.659497435412344180, -0.659535019928605750, -0.659572602796029810, -0.659610184014522320, -0.659647763583989350, +-0.659685341504337440, -0.659722917775471760, -0.659760492397298730, -0.659798065369724850, -0.659835636692655440, -0.659873206365997000, -0.659910774389655510, -0.659948340763537140, +-0.659985905487548210, -0.660023468561594110, -0.660061029985581470, -0.660098589759416490, -0.660136147883004790, -0.660173704356252670, -0.660211259179066200, -0.660248812351352020, +-0.660286363873015420, -0.660323913743963040, -0.660361461964101060, -0.660399008533335220, -0.660436553451571710, -0.660474096718716930, -0.660511638334676850, -0.660549178299358110, +-0.660586716612665990, -0.660624253274507130, -0.660661788284787940, -0.660699321643413940, -0.660736853350291640, -0.660774383405327240, -0.660811911808426800, -0.660849438559496960, +-0.660886963658443240, -0.660924487105172380, -0.660962008899590000, -0.660999529041602640, -0.661037047531116360, -0.661074564368037580, -0.661112079552272580, -0.661149593083727120, +-0.661187104962307700, -0.661224615187920860, -0.661262123760472110, -0.661299630679868080, -0.661337135946014950, -0.661374639558818920, -0.661412141518186720, -0.661449641824023770, +-0.661487140476236800, -0.661524637474732220, -0.661562132819415780, -0.661599626510193990, -0.661637118546973160, -0.661674608929659790, -0.661712097658159640, -0.661749584732379210, +-0.661787070152225150, -0.661824553917603090, -0.661862036028419640, -0.661899516484581120, -0.661936995285993810, -0.661974472432564240, -0.662011947924198260, -0.662049421760802390, +-0.662086893942283370, -0.662124364468546720, -0.662161833339499180, -0.662199300555046940, -0.662236766115096630, -0.662274230019554650, -0.662311692268326760, -0.662349152861319570, +-0.662386611798439940, -0.662424069079593390, -0.662461524704686670, -0.662498978673626170, -0.662536430986318540, -0.662573881642669500, -0.662611330642585820, -0.662648777985974100, +-0.662686223672740100, -0.662723667702790450, -0.662761110076031780, -0.662798550792370270, -0.662835989851712660, -0.662873427253964810, -0.662910862999033350, -0.662948297086825120, +-0.662985729517245770, -0.663023160290202140, -0.663060589405600530, -0.663098016863347570, -0.663135442663349780, -0.663172866805513130, -0.663210289289744680, -0.663247710115950070, +-0.663285129284036270, -0.663322546793909560, -0.663359962645476590, -0.663397376838643970, -0.663434789373317570, -0.663472200249404230, -0.663509609466810700, -0.663547017025442830, +-0.663584422925207360, -0.663621827166010920, -0.663659229747759930, -0.663696630670361110, -0.663734029933720440, -0.663771427537744650, -0.663808823482340600, -0.663846217767414260, +-0.663883610392872360, -0.663921001358621310, -0.663958390664568190, -0.663995778310618730, -0.664033164296679910, -0.664070548622658350, -0.664107931288460240, -0.664145312293992210, +-0.664182691639160990, -0.664220069323873010, -0.664257445348035100, -0.664294819711553350, -0.664332192414334500, -0.664369563456285510, -0.664406932837312230, -0.664444300557321730, +-0.664481666616220430, -0.664519031013914960, -0.664556393750312170, -0.664593754825318130, -0.664631114238839690, -0.664668471990783830, -0.664705828081056490, -0.664743182509564430, +-0.664780535276214610, -0.664817886380913660, -0.664855235823567650, -0.664892583604083650, -0.664929929722368420, -0.664967274178328130, -0.665004616971869520, -0.665041958102899460, +-0.665079297571324560, -0.665116635377051680, -0.665153971519986900, -0.665191306000037170, -0.665228638817109470, -0.665265969971109870, -0.665303299461945330, -0.665340627289522590, +-0.665377953453748280, -0.665415277954529370, -0.665452600791772040, -0.665489921965383480, -0.665527241475269760, -0.665564559321337960, -0.665601875503494700, -0.665639190021646730, +-0.665676502875701240, -0.665713814065564070, -0.665751123591142410, -0.665788431452343340, -0.665825737649072710, -0.665863042181237820, -0.665900345048745400, -0.665937646251501980, +-0.665974945789414850, -0.666012243662389980, -0.666049539870334550, -0.666086834413155530, -0.666124127290759200, -0.666161418503052440, -0.666198708049942190, -0.666235995931335530, +-0.666273282147138550, -0.666310566697258300, -0.666347849581601980, -0.666385130800075780, -0.666422410352586650, -0.666459688239041560, -0.666496964459347250, -0.666534239013410800, +-0.666571511901138500, -0.666608783122437320, -0.666646052677214660, -0.666683320565376380, -0.666720586786829880, -0.666757851341481910, -0.666795114229239320, -0.666832375450009280, +-0.666869635003698000, -0.666906892890212880, -0.666944149109460200, -0.666981403661347170, -0.667018656545780740, -0.667055907762667540, -0.667093157311914870, -0.667130405193429140, +-0.667167651407117200, -0.667204895952886570, -0.667242138830643430, -0.667279380040294860, -0.667316619581747820, -0.667353857454909270, -0.667391093659686410, -0.667428328195985520, +-0.667465561063713800, -0.667502792262778420, -0.667540021793085800, -0.667577249654543130, -0.667614475847057240, -0.667651700370535670, -0.667688923224884380, -0.667726144410010770, +-0.667763363925822250, -0.667800581772224900, -0.667837797949126120, -0.667875012456432880, -0.667912225294052030, -0.667949436461890980, -0.667986645959856020, -0.668023853787854450, +-0.668061059945793570, -0.668098264433579780, -0.668135467251120160, -0.668172668398322010, -0.668209867875092180, -0.668247065681337960, -0.668284261816965760, -0.668321456281882890, +-0.668358649075996740, -0.668395840199213610, -0.668433029651440910, -0.668470217432585610, -0.668507403542555110, -0.668544587981255820, -0.668581770748595040, -0.668618951844480170, +-0.668656131268817510, -0.668693309021514580, -0.668730485102478340, -0.668767659511615990, -0.668804832248834690, -0.668842003314041090, -0.668879172707142370, -0.668916340428046150, +-0.668953506476658740, -0.668990670852887440, -0.669027833556639640, -0.669064994587822090, -0.669102153946342540, -0.669139311632107160, -0.669176467645023920, -0.669213621984999120, +-0.669250774651940270, -0.669287925645754460, -0.669325074966348850, -0.669362222613630990, -0.669399368587507150, -0.669436512887884860, -0.669473655514671640, -0.669510796467774010, +-0.669547935747099250, -0.669585073352554790, -0.669622209284047590, -0.669659343541485260, -0.669696476124774120, -0.669733607033821900, -0.669770736268536000, -0.669807863828822850, +-0.669844989714590060, -0.669882113925744820, -0.669919236462194640, -0.669956357323845950, -0.669993476510606480, -0.670030594022383630, -0.670067709859083930, -0.670104824020614890, +-0.670141936506883920, -0.670179047317798090, -0.670216156453264930, -0.670253263913191070, -0.670290369697484010, -0.670327473806051290, -0.670364576238799750, -0.670401676995636690, +-0.670438776076469290, -0.670475873481205080, -0.670512969209751560, -0.670550063262015270, -0.670587155637903720, -0.670624246337324650, -0.670661335360184680, -0.670698422706391460, +-0.670735508375852050, -0.670772592368474200, -0.670809674684164530, -0.670846755322830780, -0.670883834284380360, -0.670920911568720140, -0.670957987175757500, -0.670995061105399970, +-0.671032133357554850, -0.671069203932129540, -0.671106272829031130, -0.671143340048166890, -0.671180405589444580, -0.671217469452771050, -0.671254531638053820, -0.671291592145200180, +-0.671328650974117650, -0.671365708124713860, -0.671402763596895320, -0.671439817390570350, -0.671476869505645450, -0.671513919942028360, -0.671550968699626490, -0.671588015778347150, +-0.671625061178098170, -0.671662104898786190, -0.671699146940318850, -0.671736187302604090, -0.671773225985548450, -0.671810262989059880, -0.671847298313045570, -0.671884331957413040, +-0.671921363922069910, -0.671958394206923160, -0.671995422811880290, -0.672032449736849280, -0.672069474981736860, -0.672106498546450770, -0.672143520430898310, -0.672180540634987440, +-0.672217559158624910, -0.672254576001718450, -0.672291591164175920, -0.672328604645904050, -0.672365616446810700, -0.672402626566803270, -0.672439635005789290, -0.672476641763676500, +-0.672513646840371850, -0.672550650235783090, -0.672587651949818070, -0.672624651982383530, -0.672661650333387320, -0.672698647002736960, -0.672735641990340080, -0.672772635296104430, +-0.672809626919936840, -0.672846616861745070, -0.672883605121437300, -0.672920591698920050, -0.672957576594101270, -0.672994559806888600, -0.673031541337189900, -0.673068521184912010, +-0.673105499349962780, -0.673142475832250180, -0.673179450631681050, -0.673216423748163260, -0.673253395181604430, -0.673290364931912190, -0.673327332998994280, -0.673364299382757660, +-0.673401264083110410, -0.673438227099960260, -0.673475188433214190, -0.673512148082780260, -0.673549106048565880, -0.673586062330478690, -0.673623016928426740, -0.673659969842316910, +-0.673696921072057480, -0.673733870617555410, -0.673770818478718670, -0.673807764655454890, -0.673844709147671690, -0.673881651955277050, -0.673918593078177920, -0.673955532516282370, +-0.673992470269498270, -0.674029406337732670, -0.674066340720893550, -0.674103273418888650, -0.674140204431625480, -0.674177133759012230, -0.674214061400955740, -0.674250987357364110, +-0.674287911628145280, -0.674324834213206440, -0.674361755112455440, -0.674398674325800140, -0.674435591853148390, -0.674472507694407360, -0.674509421849485150, -0.674546334318289590, +-0.674583245100727870, -0.674620154196708070, -0.674657061606137920, -0.674693967328925170, -0.674730871364977670, -0.674767773714202820, -0.674804674376508370, -0.674841573351802730, +-0.674878470639992730, -0.674915366240986580, -0.674952260154692010, -0.674989152381016750, -0.675026042919869010, -0.675062931771155840, -0.675099818934785210, -0.675136704410665530, +-0.675173588198703660, -0.675210470298807870, -0.675247350710885820, -0.675284229434845900, -0.675321106470594960, -0.675357981818041190, -0.675394855477092880, -0.675431727447657120, +-0.675468597729641960, -0.675505466322955380, -0.675542333227505120, -0.675579198443199360, -0.675616061969945170, -0.675652923807650960, -0.675689783956224700, -0.675726642415573680, +-0.675763499185606080, -0.675800354266229640, -0.675837207657352450, -0.675874059358882450, -0.675910909370727060, -0.675947757692794690, -0.675984604324992520, -0.676021449267228960, +-0.676058292519411740, -0.676095134081448720, -0.676131973953248310, -0.676168812134717580, -0.676205648625764820, -0.676242483426298220, -0.676279316536225080, -0.676316147955453810, +-0.676352977683892020, -0.676389805721447800, -0.676426632068029440, -0.676463456723544130, -0.676500279687900160, -0.676537100961005940, -0.676573920542768550, -0.676610738433096380, +-0.676647554631897300, -0.676684369139079700, -0.676721181954550890, -0.676757993078219040, -0.676794802509992690, -0.676831610249778890, -0.676868416297486060, -0.676905220653022170, +-0.676942023316295270, -0.676978824287213680, -0.677015623565684680, -0.677052421151616570, -0.677089217044917870, -0.677126011245495650, -0.677162803753258440, -0.677199594568114290, +-0.677236383689971080, -0.677273171118737190, -0.677309956854320160, -0.677346740896628500, -0.677383523245569720, -0.677420303901052120, -0.677457082862983670, -0.677493860131272550, +-0.677530635705827170, -0.677567409586554810, -0.677604181773364010, -0.677640952266163050, -0.677677721064859240, -0.677714488169361310, -0.677751253579577110, -0.677788017295414710, +-0.677824779316782640, -0.677861539643588310, -0.677898298275740220, -0.677935055213146560, -0.677971810455714970, -0.678008564003353850, -0.678045315855971390, -0.678082066013475870, +-0.678118814475774930, -0.678155561242776980, -0.678192306314390430, -0.678229049690522780, -0.678265791371082450, -0.678302531355977620, -0.678339269645116590, -0.678376006238407660, +-0.678412741135758330, -0.678449474337077250, -0.678486205842272700, -0.678522935651252430, -0.678559663763924740, -0.678596390180197910, -0.678633114899980020, -0.678669837923179810, +-0.678706559249704580, -0.678743278879463060, -0.678779996812363560, -0.678816713048313810, -0.678853427587222220, -0.678890140428997090, -0.678926851573546930, -0.678963561020779370, +-0.679000268770602820, -0.679036974822926020, -0.679073679177656380, -0.679110381834702630, -0.679147082793972840, -0.679183782055375330, -0.679220479618818710, -0.679257175484210610, +-0.679293869651459550, -0.679330562120474160, -0.679367252891161950, -0.679403941963431680, -0.679440629337191520, -0.679477315012349870, -0.679513998988815150, -0.679550681266495200, +-0.679587361845298890, -0.679624040725133720, -0.679660717905908540, -0.679697393387531550, -0.679734067169911030, -0.679770739252955720, -0.679807409636573270, -0.679844078320672280, +-0.679880745305161400, -0.679917410589948370, -0.679954074174941690, -0.679990736060049890, -0.680027396245181270, -0.680064054730244560, -0.680100711515147280, -0.680137366599798290, +-0.680174019984106090, -0.680210671667978660, -0.680247321651324510, -0.680283969934051940, -0.680320616516069900, -0.680357261397285920, -0.680393904577608840, -0.680430546056947310, +-0.680467185835209150, -0.680503823912302910, -0.680540460288137190, -0.680577094962620310, -0.680613727935660990, -0.680650359207166990, -0.680686988777047140, -0.680723616645210190, +-0.680760242811563780, -0.680796867276016850, -0.680833490038477710, -0.680870111098854870, -0.680906730457057070, -0.680943348112992060, -0.680979964066568800, -0.681016578317695800, +-0.681053190866281130, -0.681089801712233430, -0.681126410855461330, -0.681163018295873450, -0.681199624033377750, -0.681236228067882870, -0.681272830399297870, -0.681309431027530390, +-0.681346029952489380, -0.681382627174083270, -0.681419222692220660, -0.681455816506810200, -0.681492408617759950, -0.681528999024978650, -0.681565587728375170, -0.681602174727857450, +-0.681638760023334230, -0.681675343614714160, -0.681711925501905740, -0.681748505684817820, -0.681785084163358260, -0.681821660937436350, -0.681858236006959940, -0.681894809371838000, +-0.681931381031979030, -0.681967950987291570, -0.682004519237684570, -0.682041085783065880, -0.682077650623344580, -0.682114213758429400, -0.682150775188228420, -0.682187334912650490, +-0.682223892931604240, -0.682260449244998180, -0.682297003852741390, -0.682333556754741720, -0.682370107950908240, -0.682406657441149810, -0.682443205225374380, -0.682479751303490810, +-0.682516295675408060, -0.682552838341034750, -0.682589379300279080, -0.682625918553049990, -0.682662456099256460, -0.682698991938806340, -0.682735526071608810, -0.682772058497572500, +-0.682808589216606030, -0.682845118228618380, -0.682881645533517600, -0.682918171131212780, -0.682954695021612770, -0.682991217204625740, -0.683027737680160670, -0.683064256448126180, +-0.683100773508431120, -0.683137288860984460, -0.683173802505694260, -0.683210314442469490, -0.683246824671219330, -0.683283333191851750, -0.683319840004275920, -0.683356345108400380, +-0.683392848504134290, -0.683429350191385840, -0.683465850170064000, -0.683502348440077840, -0.683538845001335440, -0.683575339853745970, -0.683611832997218170, -0.683648324431660790, +-0.683684814156982900, -0.683721302173092570, -0.683757788479899100, -0.683794273077311440, -0.683830755965237790, -0.683867237143587210, -0.683903716612268560, -0.683940194371190690, +-0.683976670420262560, -0.684013144759392460, -0.684049617388489910, -0.684086088307462870, -0.684122557516220640, -0.684159025014672070, -0.684195490802725900, -0.684231954880291320, +-0.684268417247276490, -0.684304877903590740, -0.684341336849143000, -0.684377794083841580, -0.684414249607595780, -0.684450703420314330, -0.684487155521906090, -0.684523605912280230, +-0.684560054591345170, -0.684596501559009860, -0.684632946815183720, -0.684669390359774810, -0.684705832192692430, -0.684742272313845430, -0.684778710723143110, -0.684815147420493760, +-0.684851582405806460, -0.684888015678990600, -0.684924447239954270, -0.684960877088606980, -0.684997305224857360, -0.685033731648614590, -0.685070156359787630, -0.685106579358285120, +-0.685143000644016120, -0.685179420216889930, -0.685215838076814850, -0.685252254223700170, -0.685288668657454970, -0.685325081377987980, -0.685361492385208600, -0.685397901679025260, +-0.685434309259347120, -0.685470715126083490, -0.685507119279142760, -0.685543521718434250, -0.685579922443867010, -0.685616321455350230, -0.685652718752792320, -0.685689114336102580, +-0.685725508205190400, -0.685761900359964090, -0.685798290800333050, -0.685834679526206360, -0.685871066537492970, -0.685907451834102180, -0.685943835415942390, -0.685980217282923020, +-0.686016597434953470, -0.686052975871942140, -0.686089352593798330, -0.686125727600431110, -0.686162100891749670, -0.686198472467663190, -0.686234842328080300, -0.686271210472910510, +-0.686307576902062460, -0.686343941615445540, -0.686380304612968620, -0.686416665894540980, -0.686453025460072030, -0.686489383309470180, -0.686525739442644830, -0.686562093859505510, +-0.686598446559960610, -0.686634797543919650, -0.686671146811291600, -0.686707494361985750, -0.686743840195911500, -0.686780184312977270, -0.686816526713092570, -0.686852867396166910, +-0.686889206362108820, -0.686925543610827690, -0.686961879142232610, -0.686998212956233200, -0.687034545052737980, -0.687070875431656350, -0.687107204092897830, -0.687143531036371050, +-0.687179856261985410, -0.687216179769650100, -0.687252501559274420, -0.687288821630767770, -0.687325139984038770, -0.687361456618996840, -0.687397771535551590, -0.687434084733611670, +-0.687470396213086480, -0.687506705973885300, -0.687543014015917440, -0.687579320339092300, -0.687615624943318520, -0.687651927828506040, -0.687688228994563390, -0.687724528441400200, +-0.687760826168925640, -0.687797122177049030, -0.687833416465679970, -0.687869709034726990, -0.687905999884099840, -0.687942289013707910, -0.687978576423459940, -0.688014862113265570, +-0.688051146083034080, -0.688087428332674670, -0.688123708862097060, -0.688159987671209780, -0.688196264759922570, -0.688232540128145050, -0.688268813775785860, -0.688305085702754620, +-0.688341355908960620, -0.688377624394313600, -0.688413891158722090, -0.688450156202096040, -0.688486419524344750, -0.688522681125377180, -0.688558941005102950, -0.688595199163431260, +-0.688631455600271610, -0.688667710315533640, -0.688703963309126090, -0.688740214580958690, -0.688776464130941070, -0.688812711958981860, -0.688848958064990910, -0.688885202448877630, +-0.688921445110551200, -0.688957686049921580, -0.688993925266897510, -0.689030162761388510, -0.689066398533304430, -0.689102632582554110, -0.689138864909047080, -0.689175095512692960, +-0.689211324393401490, -0.689247551551081310, -0.689283776985642250, -0.689320000696994060, -0.689356222685045590, -0.689392442949706590, -0.689428661490886440, -0.689464878308494570, +-0.689501093402440920, -0.689537306772634140, -0.689573518418984180, -0.689609728341400660, -0.689645936539792560, -0.689682143014069600, -0.689718347764141320, -0.689754550789917100, +-0.689790752091306910, -0.689826951668219390, -0.689863149520564930, -0.689899345648252280, -0.689935540051191180, -0.689971732729291240, -0.690007923682462000, -0.690044112910613290, +-0.690080300413653980, -0.690116486191493910, -0.690152670244042920, -0.690188852571209990, -0.690225033172904840, -0.690261212049037120, -0.690297389199516440, -0.690333564624252550, +-0.690369738323154510, -0.690405910296132070, -0.690442080543095190, -0.690478249063952720, -0.690514415858614730, -0.690550580926990620, -0.690586744268990360, -0.690622905884523020, +-0.690659065773498340, -0.690695223935826390, -0.690731380371415900, -0.690767535080177080, -0.690803688062019420, -0.690839839316852560, -0.690875988844586340, -0.690912136645129960, +-0.690948282718393150, -0.690984427064285980, -0.691020569682717410, -0.691056710573597410, -0.691092849736835600, -0.691128987172341720, -0.691165122880025630, -0.691201256859796500, +-0.691237389111564180, -0.691273519635238640, -0.691309648430729060, -0.691345775497945400, -0.691381900836797290, -0.691418024447194690, -0.691454146329046780, -0.691490266482263420, +-0.691526384906754780, -0.691562501602429820, -0.691598616569198630, -0.691634729806970830, -0.691670841315656260, -0.691706951095164890, -0.691743059145405900, -0.691779165466289150, +-0.691815270057724920, -0.691851372919622070, -0.691887474051890880, -0.691923573454441000, -0.691959671127182150, -0.691995767070024530, -0.692031861282877080, -0.692067953765650220, +-0.692104044518253360, -0.692140133540596230, -0.692176220832588780, -0.692212306394140890, -0.692248390225162490, -0.692284472325562780, -0.692320552695251830, -0.692356631334139940, +-0.692392708242136060, -0.692428783419150480, -0.692464856865092850, -0.692500928579873110, -0.692536998563401450, -0.692573066815586950, -0.692609133336339780, -0.692645198125570020, +-0.692681261183186960, -0.692717322509100790, -0.692753382103221350, -0.692789439965458720, -0.692825496095722190, -0.692861550493921950, -0.692897603159968070, -0.692933654093769950, +-0.692969703295237550, -0.693005750764281060, -0.693041796500810100, -0.693077840504734980, -0.693113882775964970, -0.693149923314410280, -0.693185962119981070, -0.693221999192586650, +-0.693258034532137190, -0.693294068138542660, -0.693330100011712910, -0.693366130151558350, -0.693402158557988040, -0.693438185230912390, -0.693474210170241580, -0.693510233375884910, +-0.693546254847752670, -0.693582274585754830, -0.693618292589801570, -0.693654308859802280, -0.693690323395667270, -0.693726336197306730, -0.693762347264629930, -0.693798356597547410, +-0.693834364195968890, -0.693870370059804560, -0.693906374188964500, -0.693942376583358330, -0.693978377242896130, -0.694014376167488290, -0.694050373357044230, -0.694086368811474230, +-0.694122362530688370, -0.694158354514596510, -0.694194344763109150, -0.694230333276135590, -0.694266320053586460, -0.694302305095371270, -0.694338288401400330, -0.694374269971583580, +-0.694410249805831210, -0.694446227904053530, -0.694482204266160030, -0.694518178892060910, -0.694554151781666800, -0.694590122934886870, -0.694626092351631640, -0.694662060031811300, +-0.694698025975335700, -0.694733990182115350, -0.694769952652059760, -0.694805913385079240, -0.694841872381084300, -0.694877829639984230, -0.694913785161689780, -0.694949738946110780, +-0.694985690993157770, -0.695021641302740130, -0.695057589874768510, -0.695093536709153190, -0.695129481805803700, -0.695165425164630420, -0.695201366785543670, -0.695237306668453510, +-0.695273244813270350, -0.695309181219903820, -0.695345115888264310, -0.695381048818262350, -0.695416980009807450, -0.695452909462810130, -0.695488837177180460, -0.695524763152828740, +-0.695560687389665370, -0.695596609887600080, -0.695632530646543180, -0.695668449666405290, -0.695704366947095920, -0.695740282488525710, -0.695776196290604720, -0.695812108353243590, +-0.695848018676351820, -0.695883927259840050, -0.695919834103618800, -0.695955739207597680, -0.695991642571687220, -0.696027544195797490, -0.696063444079839110, -0.696099342223722270, +-0.696135238627356820, -0.696171133290653280, -0.696207026213522260, -0.696242917395873300, -0.696278806837617110, -0.696314694538663790, -0.696350580498923840, -0.696386464718307780, +-0.696422347196725130, -0.696458227934086960, -0.696494106930302890, -0.696529984185283670, -0.696565859698939360, -0.696601733471180480, -0.696637605501917560, -0.696673475791060310, +-0.696709344338519390, -0.696745211144205400, -0.696781076208027980, -0.696816939529897980, -0.696852801109725580, -0.696888660947421300, -0.696924519042895540, -0.696960375396058260, +-0.696996230006819980, -0.697032082875091440, -0.697067934000782370, -0.697103783383803520, -0.697139631024065180, -0.697175476921478080, -0.697211321075951960, -0.697247163487397570, +-0.697283004155725530, -0.697318843080845690, -0.697354680262668780, -0.697390515701105220, -0.697426349396065290, -0.697462181347459740, -0.697498011555198530, -0.697533840019192270, +-0.697569666739351720, -0.697605491715586610, -0.697641314947807900, -0.697677136435925770, -0.697712956179850960, -0.697748774179493990, -0.697784590434764710, -0.697820404945574290, +-0.697856217711832590, -0.697892028733450350, -0.697927838010338090, -0.697963645542406090, -0.697999451329565420, -0.698035255371725730, -0.698071057668797960, -0.698106858220692850, +-0.698142657027320150, -0.698178454088590920, -0.698214249404415570, -0.698250042974704610, -0.698285834799368790, -0.698321624878318170, -0.698357413211463380, -0.698393199798715390, +-0.698428984639984150, -0.698464767735180400, -0.698500549084214770, -0.698536328686997780, -0.698572106543440150, -0.698607882653452080, -0.698643657016944530, -0.698679429633827560, +-0.698715200504012040, -0.698750969627408570, -0.698786737003927570, -0.698822502633480000, -0.698858266515975930, -0.698894028651326330, -0.698929789039441810, -0.698965547680232560, +-0.699001304573609320, -0.699037059719482930, -0.699072813117763920, -0.699108564768363140, -0.699144314671190650, -0.699180062826157300, -0.699215809233174170, -0.699251553892151320, +-0.699287296802999390, -0.699323037965629330, -0.699358777379952000, -0.699394515045877350, -0.699430250963316460, -0.699465985132180170, -0.699501717552378670, -0.699537448223822910, +-0.699573177146423530, -0.699608904320091150, -0.699644629744736850, -0.699680353420270680, -0.699716075346603520, -0.699751795523646640, -0.699787513951309890, -0.699823230629504360, +-0.699858945558140770, -0.699894658737129750, -0.699930370166382380, -0.699966079845808940, -0.700001787775320410, -0.700037493954827280, -0.700073198384240310, -0.700108901063470350, +-0.700144601992428120, -0.700180301171024700, -0.700215998599170280, -0.700251694276775800, -0.700287388203752470, -0.700323080380010340, -0.700358770805460500, -0.700394459480013660, +-0.700430146403580700, -0.700465831576072780, -0.700501514997399880, -0.700537196667473160, -0.700572876586203820, -0.700608554753502030, -0.700644231169278760, -0.700679905833444970, +-0.700715578745911730, -0.700751249906589210, -0.700786919315388610, -0.700822586972220880, -0.700858252876996550, -0.700893917029626450, -0.700929579430021650, -0.700965240078092800, +-0.701000898973751290, -0.701036556116907180, -0.701072211507471680, -0.701107865145355950, -0.701143517030470180, -0.701179167162725660, -0.701214815542033240, -0.701250462168303780, +-0.701286107041448450, -0.701321750161377650, -0.701357391528002360, -0.701393031141233970, -0.701428669000982660, -0.701464305107159620, -0.701499939459675930, -0.701535572058442640, +-0.701571202903370050, -0.701606831994369570, -0.701642459331352280, -0.701678084914228560, -0.701713708742909500, -0.701749330817306280, -0.701784951137329750, -0.701820569702891080, +-0.701856186513900690, -0.701891801570269870, -0.701927414871909790, -0.701963026418730980, -0.701998636210644510, -0.702034244247561560, -0.702069850529392860, -0.702105455056049930, +-0.702141057827442960, -0.702176658843483790, -0.702212258104082610, -0.702247855609150710, -0.702283451358599260, -0.702319045352339130, -0.702354637590281720, -0.702390228072337420, +-0.702425816798417530, -0.702461403768433360, -0.702496988982295510, -0.702532572439915070, -0.702568154141203220, -0.702603734086071020, -0.702639312274429770, -0.702674888706189880, +-0.702710463381262860, -0.702746036299559900, -0.702781607460991610, -0.702817176865469300, -0.702852744512904030, -0.702888310403207210, -0.702923874536289350, -0.702959436912061750, +-0.702994997530435820, -0.703030556391322170, -0.703066113494632110, -0.703101668840276810, -0.703137222428167230, -0.703172774258215010, -0.703208324330330430, -0.703243872644425120, +-0.703279419200410480, -0.703314963998196930, -0.703350507037695970, -0.703386048318818680, -0.703421587841476350, -0.703457125605580380, -0.703492661611041180, -0.703528195857770380, +-0.703563728345679480, -0.703599259074678910, -0.703634788044680160, -0.703670315255594430, -0.703705840707333220, -0.703741364399807170, -0.703776886332927560, -0.703812406506606150, +-0.703847924920753430, -0.703883441575280930, -0.703918956470099720, -0.703954469605121200, -0.703989980980256780, -0.704025490595417080, -0.704060998450513730, -0.704096504545458140, +-0.704132008880160920, -0.704167511454533710, -0.704203012268487800, -0.704238511321934270, -0.704274008614784840, -0.704309504146950040, -0.704344997918341820, -0.704380489928870810, +-0.704415980178448530, -0.704451468666986270, -0.704486955394395430, -0.704522440360587420, -0.704557923565473090, -0.704593405008963840, -0.704628884690971510, -0.704664362611406640, +-0.704699838770180830, -0.704735313167205390, -0.704770785802391720, -0.704806256675651330, -0.704841725786895080, -0.704877193136034360, -0.704912658722981140, -0.704948122547645940, +-0.704983584609940370, -0.705019044909775850, -0.705054503447064000, -0.705089960221715660, -0.705125415233642360, -0.705160868482755830, -0.705196319968966810, -0.705231769692187040, +-0.705267217652327800, -0.705302663849300520, -0.705338108283017020, -0.705373550953387830, -0.705408991860324800, -0.705444431003739550, -0.705479868383542930, -0.705515303999646570, +-0.705550737851962100, -0.705586169940400690, -0.705621600264874190, -0.705657028825293350, -0.705692455621569900, -0.705727880653615690, -0.705763303921341460, -0.705798725424658930, +-0.705834145163479640, -0.705869563137715320, -0.705904979347276810, -0.705940393792075740, -0.705975806472024070, -0.706011217387032540, -0.706046626537013000, -0.706082033921876850, +-0.706117439541535610, -0.706152843395901120, -0.706188245484884240, -0.706223645808396690, -0.706259044366350340, -0.706294441158656030, -0.706329836185225710, -0.706365229445970690, +-0.706400620940802690, -0.706436010669633460, -0.706471398632373850, -0.706506784828936030, -0.706542169259230970, -0.706577551923170510, -0.706612932820666170, -0.706648311951629470, +-0.706683689315972250, -0.706719064913605590, -0.706754438744441220, -0.706789810808391090, -0.706825181105366070, -0.706860549635278220, -0.706895916398038840, -0.706931281393559760, +-0.706966644621752740, -0.707002006082528830, -0.707037365775799900, -0.707072723701477890, -0.707108079859473770, -0.707143434249699390, -0.707178786872066480, -0.707214137726486890, +-0.707249486812871590, -0.707284834131132630, -0.707320179681181880, -0.707355523462930400, -0.707390865476290150, -0.707426205721172650, -0.707461544197489630, -0.707496880905153170, +-0.707532215844074110, -0.707567549014164520, -0.707602880415336370, -0.707638210047500720, -0.707673537910569530, -0.707708864004454540, -0.707744188329067380, -0.707779510884319900, +-0.707814831670123490, -0.707850150686390010, -0.707885467933031420, -0.707920783409958900, -0.707956097117084400, -0.707991409054319680, -0.708026719221576670, -0.708062027618766580, +-0.708097334245801460, -0.708132639102593280, -0.708167942189053210, -0.708203243505093230, -0.708238543050625170, -0.708273840825560770, -0.708309136829812110, -0.708344431063290260, +-0.708379723525907280, -0.708415014217575360, -0.708450303138205670, -0.708485590287710190, -0.708520875666000640, -0.708556159272988980, -0.708591441108587180, -0.708626721172706530, +-0.708661999465259320, -0.708697275986156840, -0.708732550735311160, -0.708767823712634140, -0.708803094918037500, -0.708838364351433440, -0.708873632012733120, -0.708908897901848860, +-0.708944162018692590, -0.708979424363175630, -0.709014684935210030, -0.709049943734707750, -0.709085200761580660, -0.709120456015740810, -0.709155709497099610, -0.709190961205569010, +-0.709226211141061440, -0.709261459303487940, -0.709296705692760820, -0.709331950308791930, -0.709367193151493550, -0.709402434220776760, -0.709437673516553960, -0.709472911038737330, +-0.709508146787237950, -0.709543380761968320, -0.709578612962840300, -0.709613843389765630, -0.709649072042656700, -0.709684298921424820, -0.709719524025982150, -0.709754747356240890, +-0.709789968912112550, -0.709825188693509300, -0.709860406700343120, -0.709895622932525840, -0.709930837389969870, -0.709966050072586510, -0.710001260980288260, -0.710036470112986540, +-0.710071677470593740, -0.710106883053021720, -0.710142086860182430, -0.710177288891988170, -0.710212489148350560, -0.710247687629181670, -0.710282884334393790, -0.710318079263898450, +-0.710353272417607930, -0.710388463795434190, -0.710423653397289300, -0.710458841223085560, -0.710494027272734470, -0.710529211546148340, -0.710564394043239340, -0.710599574763919220, +-0.710634753708100030, -0.710669930875694080, -0.710705106266613540, -0.710740279880769820, -0.710775451718075550, -0.710810621778442900, -0.710845790061783500, -0.710880956568009540, +-0.710916121297033190, -0.710951284248766520, -0.710986445423121950, -0.711021604820010870, -0.711056762439345900, -0.711091918281039350, -0.711127072345002610, -0.711162224631148200, +-0.711197375139388300, -0.711232523869634870, -0.711267670821800540, -0.711302815995796700, -0.711337959391535770, -0.711373101008930250, -0.711408240847891780, -0.711443378908332540, +-0.711478515190165030, -0.711513649693301440, -0.711548782417653400, -0.711583913363133420, -0.711619042529654020, -0.711654169917126600, -0.711689295525463890, -0.711724419354577750, +-0.711759541404380800, -0.711794661674785110, -0.711829780165702530, -0.711864896877045460, -0.711900011808726530, -0.711935124960657250, -0.711970236332750140, -0.712005345924917380, +-0.712040453737071370, -0.712075559769124510, -0.712110664020988440, -0.712145766492575990, -0.712180867183798800, -0.712215966094569500, -0.712251063224800250, -0.712286158574403250, +-0.712321252143291340, -0.712356343931375810, -0.712391433938569520, -0.712426522164784970, -0.712461608609933790, -0.712496693273928620, -0.712531776156681620, -0.712566857258105200, +-0.712601936578111990, -0.712637014116613620, -0.712672089873522710, -0.712707163848751880, -0.712742236042212870, -0.712777306453818320, -0.712812375083480390, -0.712847441931111940, +-0.712882506996624480, -0.712917570279930750, -0.712952631780943370, -0.712987691499574190, -0.713022749435735740, -0.713057805589340510, -0.713092859960300700, -0.713127912548529030, +-0.713162963353937250, -0.713198012376438100, -0.713233059615944190, -0.713268105072367380, -0.713303148745620290, -0.713338190635615320, -0.713373230742264890, -0.713408269065481710, +-0.713443305605177440, -0.713478340361265010, -0.713513373333657050, -0.713548404522265310, -0.713583433927002520, -0.713618461547781190, -0.713653487384513950, -0.713688511437112760, +-0.713723533705490350, -0.713758554189559250, -0.713793572889231620, -0.713828589804419880, -0.713863604935036870, -0.713898618280994770, -0.713933629842206320, -0.713968639618583590, +-0.714003647610039200, -0.714038653816486120, -0.714073658237835970, -0.714108660874001710, -0.714143661724895850, -0.714178660790430800, -0.714213658070519400, -0.714248653565073610, +-0.714283647274006390, -0.714318639197229820, -0.714353629334656630, -0.714388617686199320, -0.714423604251770540, -0.714458589031283120, -0.714493572024648800, -0.714528553231780550, +-0.714563532652591200, -0.714598510286992840, -0.714633486134898080, -0.714668460196219660, -0.714703432470870090, -0.714738402958762230, -0.714773371659808030, -0.714808338573920450, +-0.714843303701012340, -0.714878267040995660, -0.714913228593783370, -0.714948188359287860, -0.714983146337422330, -0.715018102528098500, -0.715053056931229450, -0.715088009546728130, +-0.715122960374506400, -0.715157909414477320, -0.715192856666553520, -0.715227802130647410, -0.715262745806672260, -0.715297687694539830, -0.715332627794163290, -0.715367566105455490, +-0.715402502628328390, -0.715437437362695050, -0.715472370308468110, -0.715507301465560190, -0.715542230833884460, -0.715577158413352790, -0.715612084203878230, -0.715647008205373640, +-0.715681930417751410, -0.715716850840924290, -0.715751769474805010, -0.715786686319306640, -0.715821601374341250, -0.715856514639821810, -0.715891426115661370, -0.715926335801772120, +-0.715961243698067020, -0.715996149804458910, -0.716031054120860320, -0.716065956647184310, -0.716100857383343280, -0.716135756329250080, -0.716170653484817680, -0.716205548849958460, +-0.716240442424585290, -0.716275334208611000, -0.716310224201948450, -0.716345112404510600, -0.716379998816209730, -0.716414883436959030, -0.716449766266670900, -0.716484647305258400, +-0.716519526552634290, -0.716554404008711290, -0.716589279673402580, -0.716624153546620460, -0.716659025628277880, -0.716693895918288030, -0.716728764416563190, -0.716763631123016330, +-0.716798496037560520, -0.716833359160108370, -0.716868220490573190, -0.716903080028867160, -0.716937937774903440, -0.716972793728595130, -0.717007647889854600, -0.717042500258594840, +-0.717077350834728900, -0.717112199618169850, -0.717147046608830110, -0.717181891806622620, -0.717216735211460790, -0.717251576823256800, -0.717286416641923830, -0.717321254667374840, +-0.717356090899522790, -0.717390925338280640, -0.717425757983561010, -0.717460588835276970, -0.717495417893341700, -0.717530245157667610, -0.717565070628167990, -0.717599894304755680, +-0.717634716187343540, -0.717669536275844950, -0.717704354570172230, -0.717739171070238550, -0.717773985775957300, -0.717808798687240790, -0.717843609804002300, -0.717878419126154800, +-0.717913226653611570, -0.717948032386284910, -0.717982836324088210, -0.718017638466934670, -0.718052438814736790, -0.718087237367407760, -0.718122034124860640, -0.718156829087008510, +-0.718191622253764540, -0.718226413625041250, -0.718261203200751930, -0.718295990980809870, -0.718330776965127480, -0.718365561153618270, -0.718400343546195090, -0.718435124142771110, +-0.718469902943259520, -0.718504679947572940, -0.718539455155624900, -0.718574228567328000, -0.718609000182595440, -0.718643770001340500, -0.718678538023476030, -0.718713304248915550, +-0.718748068677571570, -0.718782831309357380, -0.718817592144186390, -0.718852351181971110, -0.718887108422624930, -0.718921863866061050, -0.718956617512192420, -0.718991369360932660, +-0.719026119412194080, -0.719060867665890280, -0.719095614121934570, -0.719130358780239560, -0.719165101640718560, -0.719199842703284850, -0.719234581967851950, -0.719269319434332250, +-0.719304055102639170, -0.719338788972686330, -0.719373521044386120, -0.719408251317652070, -0.719442979792397570, -0.719477706468535480, -0.719512431345979530, -0.719547154424642120, +-0.719581875704436880, -0.719616595185277210, -0.719651312867075840, -0.719686028749745970, -0.719720742833201200, -0.719755455117354610, -0.719790165602119610, -0.719824874287408930, +-0.719859581173136310, -0.719894286259214480, -0.719928989545556950, -0.719963691032076800, -0.719998390718687540, -0.720033088605302680, -0.720067784691834740, -0.720102478978197350, +-0.720137171464304000, -0.720171862150067450, -0.720206551035401210, -0.720241238120218670, -0.720275923404433030, -0.720310606887957890, -0.720345288570705790, -0.720379968452590670, +-0.720414646533525830, -0.720449322813424110, -0.720483997292199030, -0.720518669969763880, -0.720553340846032510, -0.720588009920917430, -0.720622677194332370, -0.720657342666190860, +-0.720692006336405620, -0.720726668204890510, -0.720761328271558700, -0.720795986536323490, -0.720830642999098710, -0.720865297659797010, -0.720899950518332000, -0.720934601574617420, +-0.720969250828566110, -0.721003898280091590, -0.721038543929107380, -0.721073187775526760, -0.721107829819263470, -0.721142470060230470, -0.721177108498341160, -0.721211745133509390, +-0.721246379965647890, -0.721281012994670510, -0.721315644220490660, -0.721350273643021960, -0.721384901262177140, -0.721419527077870270, -0.721454151090014760, -0.721488773298523570, +-0.721523393703310530, -0.721558012304288840, -0.721592629101372230, -0.721627244094474430, -0.721661857283508180, -0.721696468668387210, -0.721731078249025380, -0.721765686025335640, +-0.721800291997231610, -0.721834896164626820, -0.721869498527434870, -0.721904099085569410, -0.721938697838943490, -0.721973294787471080, -0.722007889931065130, -0.722042483269639380, +-0.722077074803107570, -0.722111664531382870, -0.722146252454379580, -0.722180838572010100, -0.722215422884188610, -0.722250005390828950, -0.722284586091843980, -0.722319164987147430, +-0.722353742076653040, -0.722388317360274200, -0.722422890837924990, -0.722457462509518140, -0.722492032374967730, -0.722526600434187590, -0.722561166687090580, -0.722595731133590550, +-0.722630293773601330, -0.722664854607036670, -0.722699413633809410, -0.722733970853833840, -0.722768526267023480, -0.722803079873291620, -0.722837631672551990, -0.722872181664718340, +-0.722906729849704170, -0.722941276227423550, -0.722975820797789330, -0.723010363560715570, -0.723044904516116360, -0.723079443663904420, -0.723113981003993930, -0.723148516536298520, +-0.723183050260731710, -0.723217582177207770, -0.723252112285639350, -0.723286640585940830, -0.723321167078025960, -0.723355691761807810, -0.723390214637200430, -0.723424735704117580, +-0.723459254962473210, -0.723493772412180380, -0.723528288053153060, -0.723562801885305310, -0.723597313908550310, -0.723631824122802030, -0.723666332527974190, -0.723700839123980530, +-0.723735343910735020, -0.723769846888150940, -0.723804348056142130, -0.723838847414622900, -0.723873344963506080, -0.723907840702705970, -0.723942334632136310, -0.723976826751710710, +-0.724011317061343470, -0.724045805560947550, -0.724080292250437460, -0.724114777129726270, -0.724149260198728160, -0.724183741457356980, -0.724218220905526340, -0.724252698543150550, +-0.724287174370142670, -0.724321648386416770, -0.724356120591887140, -0.724390590986466850, -0.724425059570070200, -0.724459526342610790, -0.724493991304002600, -0.724528454454159700, +-0.724562915792995480, -0.724597375320423900, -0.724631833036359140, -0.724666288940714500, -0.724700743033404260, -0.724735195314341940, -0.724769645783442160, -0.724804094440617890, +-0.724838541285783400, -0.724872986318852770, -0.724907429539739410, -0.724941870948357490, -0.724976310544620860, -0.725010748328443590, -0.725045184299739630, -0.725079618458422390, +-0.725114050804406160, -0.725148481337605010, -0.725182910057932450, -0.725217336965302660, -0.725251762059629490, -0.725286185340826780, -0.725320606808809050, -0.725355026463489480, +-0.725389444304782360, -0.725423860332601870, -0.725458274546861510, -0.725492686947475370, -0.725527097534357620, -0.725561506307422330, -0.725595913266583010, -0.725630318411753960, +-0.725664721742849350, -0.725699123259782590, -0.725733522962468180, -0.725767920850819760, -0.725802316924751610, -0.725836711184178030, -0.725871103629012420, -0.725905494259168950, +-0.725939883074562140, -0.725974270075105180, -0.726008655260712680, -0.726043038631298380, -0.726077420186776570, -0.726111799927061650, -0.726146177852066700, -0.726180553961706780, +-0.726214928255895060, -0.726249300734546080, -0.726283671397573770, -0.726318040244892440, -0.726352407276416150, -0.726386772492058630, -0.726421135891734180, -0.726455497475357200, +-0.726489857242841100, -0.726524215194100380, -0.726558571329049220, -0.726592925647601470, -0.726627278149671870, -0.726661628835173710, -0.726695977704021390, -0.726730324756129530, +-0.726764669991411540, -0.726799013409781920, -0.726833355011154650, -0.726867694795444440, -0.726902032762564600, -0.726936368912429630, -0.726970703244954050, -0.727005035760051490, +-0.727039366457636340, -0.727073695337622670, -0.727108022399924890, -0.727142347644457290, -0.727176671071133600, -0.727210992679868110, -0.727245312470575440, -0.727279630443169340, +-0.727313946597563990, -0.727348260933673880, -0.727382573451413110, -0.727416884150696160, -0.727451193031436680, -0.727485500093549290, -0.727519805336948490, -0.727554108761547800, +-0.727588410367261850, -0.727622710154004810, -0.727657008121691320, -0.727691304270235100, -0.727725598599550550, -0.727759891109552300, -0.727794181800154090, -0.727828470671270320, +-0.727862757722815500, -0.727897042954703700, -0.727931326366849650, -0.727965607959166870, -0.727999887731570210, -0.728034165683974050, -0.728068441816292160, -0.728102716128439240, +-0.728136988620329490, -0.728171259291877200, -0.728205528142997220, -0.728239795173603040, -0.728274060383609640, -0.728308323772930870, -0.728342585341481220, -0.728376845089175000, +-0.728411103015926820, -0.728445359121651200, -0.728479613406261880, -0.728513865869673370, -0.728548116511800630, -0.728582365332557380, -0.728616612331858040, -0.728650857509617220, +-0.728685100865749340, -0.728719342400168890, -0.728753582112789840, -0.728787820003526820, -0.728822056072294560, -0.728856290319006890, -0.728890522743578460, -0.728924753345923770, +-0.728958982125957440, -0.728993209083593330, -0.729027434218746270, -0.729061657531330900, -0.729095879021261160, -0.729130098688451690, -0.729164316532816880, -0.729198532554271360, +-0.729232746752729750, -0.729266959128106020, -0.729301169680314890, -0.729335378409271100, -0.729369585314888490, -0.729403790397082140, -0.729437993655766110, -0.729472195090855260, +-0.729506394702264080, -0.729540592489906660, -0.729574788453698050, -0.729608982593552220, -0.729643174909383910, -0.729677365401107720, -0.729711554068637970, -0.729745740911889710, +-0.729779925930776900, -0.729814109125214160, -0.729848290495116460, -0.729882470040397750, -0.729916647760972870, -0.729950823656756340, -0.729984997727662790, -0.730019169973606940, +-0.730053340394502980, -0.730087508990265640, -0.730121675760809890, -0.730155840706049550, -0.730190003825899710, -0.730224165120274770, -0.730258324589089680, -0.730292482232258620, +-0.730326638049696330, -0.730360792041317650, -0.730394944207036770, -0.730429094546768410, -0.730463243060427430, -0.730497389747928330, -0.730531534609186070, -0.730565677644114620, +-0.730599818852629030, -0.730633958234644170, -0.730668095790074080, -0.730702231518833730, -0.730736365420837860, -0.730770497496001090, -0.730804627744238380, -0.730838756165463790, +-0.730872882759592280, -0.730907007526538920, -0.730941130466217670, -0.730975251578543590, -0.731009370863431430, -0.731043488320796130, -0.731077603950551770, -0.731111717752613410, +-0.731145829726896120, -0.731179939873313980, -0.731214048191781930, -0.731248154682214710, -0.731282259344527170, -0.731316362178634270, -0.731350463184450180, -0.731384562361889980, +-0.731418659710868500, -0.731452755231300270, -0.731486848923100010, -0.731520940786182680, -0.731555030820463030, -0.731589119025855990, -0.731623205402275990, -0.731657289949638190, +-0.731691372667856890, -0.731725453556847150, -0.731759532616523820, -0.731793609846801640, -0.731827685247595780, -0.731861758818820320, -0.731895830560390540, -0.731929900472221510, +-0.731963968554227300, -0.731998034806323190, -0.732032099228424050, -0.732066161820444710, -0.732100222582300120, -0.732134281513904810, -0.732168338615173720, -0.732202393886022040, +-0.732236447326364170, -0.732270498936115180, -0.732304548715189910, -0.732338596663503650, -0.732372642780970470, -0.732406687067505780, -0.732440729523024640, -0.732474770147441330, +-0.732508808940671050, -0.732542845902628860, -0.732576881033229600, -0.732610914332388340, -0.732644945800019490, -0.732678975436038330, -0.732713003240359930, -0.732747029212898800, +-0.732781053353570130, -0.732815075662288870, -0.732849096138969760, -0.732883114783528300, -0.732917131595878790, -0.732951146575936410, -0.732985159723616440, -0.733019171038833290, +-0.733053180521502260, -0.733087188171538170, -0.733121193988856560, -0.733155197973371480, -0.733189200124998550, -0.733223200443652860, -0.733257198929248900, -0.733291195581701970, +-0.733325190400927030, -0.733359183386839030, -0.733393174539353490, -0.733427163858384580, -0.733461151343847930, -0.733495136995658600, -0.733529120813731120, -0.733563102797980870, +-0.733597082948322820, -0.733631061264672150, -0.733665037746944030, -0.733699012395053090, -0.733732985208914830, -0.733766956188443900, -0.733800925333555560, -0.733834892644164900, +-0.733868858120186980, -0.733902821761537210, -0.733936783568130190, -0.733970743539881120, -0.734004701676705510, -0.734038657978517860, -0.734072612445233470, -0.734106565076767640, +-0.734140515873035420, -0.734174464833952100, -0.734208411959432430, -0.734242357249391690, -0.734276300703745390, -0.734310242322408050, -0.734344182105295060, -0.734378120052321610, +-0.734412056163403100, -0.734445990438454270, -0.734479922877390390, -0.734513853480126990, -0.734547782246578800, -0.734581709176660990, -0.734615634270288980, -0.734649557527377820, +-0.734683478947843140, -0.734717398531599450, -0.734751316278562270, -0.734785232188647110, -0.734819146261768590, -0.734853058497842100, -0.734886968896783070, -0.734920877458506540, +-0.734954784182928140, -0.734988689069962400, -0.735022592119525030, -0.735056493331531560, -0.735090392705896490, -0.735124290242535450, -0.735158185941363620, -0.735192079802296620, +-0.735225971825249180, -0.735259862010136820, -0.735293750356875050, -0.735327636865378610, -0.735361521535563110, -0.735395404367343850, -0.735429285360636010, -0.735463164515355210, +-0.735497041831416290, -0.735530917308734770, -0.735564790947226270, -0.735598662746805410, -0.735632532707387930, -0.735666400828889120, -0.735700267111224270, -0.735734131554309110, +-0.735767994158058380, -0.735801854922387810, -0.735835713847212360, -0.735869570932447650, -0.735903426178009080, -0.735937279583811830, -0.735971131149771750, -0.736004980875803570, +-0.736038828761822810, -0.736072674807745410, -0.736106519013485890, -0.736140361378960220, -0.736174201904083560, -0.736208040588771430, -0.736241877432939450, -0.736275712436502580, +-0.736309545599376340, -0.736343376921476560, -0.736377206402717980, -0.736411034043016440, -0.736444859842287360, -0.736478683800446340, -0.736512505917408360, -0.736546326193089130, +-0.736580144627404400, -0.736613961220268900, -0.736647775971598580, -0.736681588881308860, -0.736715399949315120, -0.736749209175533220, -0.736783016559877880, -0.736816822102265070, +-0.736850625802610510, -0.736884427660829180, -0.736918227676836680, -0.736952025850548530, -0.736985822181880470, -0.737019616670748110, -0.737053409317066420, -0.737087200120751130, +-0.737120989081718190, -0.737154776199882460, -0.737188561475159760, -0.737222344907465740, -0.737256126496716120, -0.737289906242825870, -0.737323684145710920, -0.737357460205287030, +-0.737391234421469140, -0.737425006794173220, -0.737458777323314770, -0.737492546008809310, -0.737526312850572800, -0.737560077848520290, -0.737593841002567530, -0.737627602312630470, +-0.737661361778624180, -0.737695119400464390, -0.737728875178066850, -0.737762629111347050, -0.737796381200221060, -0.737830131444603850, -0.737863879844411490, -0.737897626399559140, +-0.737931371109962870, -0.737965113975538100, -0.737998854996200440, -0.738032594171866060, -0.738066331502449820, -0.738100066987867900, -0.738133800628036020, -0.738167532422869250, +-0.738201262372283780, -0.738234990476195120, -0.738268716734518990, -0.738302441147171250, -0.738336163714067180, -0.738369884435122750, -0.738403603310253900, -0.738437320339375700, +-0.738471035522404230, -0.738504748859255210, -0.738538460349844610, -0.738572169994087480, -0.738605877791900010, -0.738639583743198050, -0.738673287847896880, -0.738706990105912450, +-0.738740690517160630, -0.738774389081557010, -0.738808085799017800, -0.738841780669458050, -0.738875473692793830, -0.738909164868941200, -0.738942854197815360, -0.738976541679332470, +-0.739010227313408150, -0.739043911099958260, -0.739077593038898860, -0.739111273130145240, -0.739144951373613690, -0.739178627769219500, -0.739212302316878840, -0.739245975016507240, +-0.739279645868020860, -0.739313314871335560, -0.739346982026366620, -0.739380647333030330, -0.739414310791242760, -0.739447972400919080, -0.739481632161975380, -0.739515290074327700, +-0.739548946137891680, -0.739582600352583720, -0.739616252718318990, -0.739649903235013450, -0.739683551902583610, -0.739717198720944550, -0.739750843690012430, -0.739784486809703210, +-0.739818128079932860, -0.739851767500617430, -0.739885405071672330, -0.739919040793013960, -0.739952674664557720, -0.739986306686219790, -0.740019936857916120, -0.740053565179562560, +-0.740087191651075390, -0.740120816272369920, -0.740154439043362420, -0.740188059963969190, -0.740221679034105410, -0.740255296253687580, -0.740288911622631330, -0.740322525140852950, +-0.740356136808268510, -0.740389746624793400, -0.740423354590343920, -0.740456960704836350, -0.740490564968186100, -0.740524167380309460, -0.740557767941122380, -0.740591366650541150, +-0.740624963508481280, -0.740658558514858960, -0.740692151669590570, -0.740725742972591420, -0.740759332423778010, -0.740792920023066180, -0.740826505770372120, -0.740860089665612120, +-0.740893671708701460, -0.740927251899556770, -0.740960830238094230, -0.740994406724229230, -0.741027981357878280, -0.741061554138957360, -0.741095125067382510, -0.741128694143070140, +-0.741162261365935880, -0.741195826735896120, -0.741229390252866600, -0.741262951916763500, -0.741296511727503100, -0.741330069685001370, -0.741363625789174810, -0.741397180039938820, +-0.741430732437210030, -0.741464282980904500, -0.741497831670938080, -0.741531378507227060, -0.741564923489687610, -0.741598466618235810, -0.741632007892788160, -0.741665547313260290, +-0.741699084879568480, -0.741732620591629250, -0.741766154449358120, -0.741799686452671690, -0.741833216601486050, -0.741866744895717580, -0.741900271335282020, -0.741933795920095670, +-0.741967318650075260, -0.742000839525136180, -0.742034358545195060, -0.742067875710167970, -0.742101391019971300, -0.742134904474521350, -0.742168416073733850, -0.742201925817525420, +-0.742235433705812350, -0.742268939738510490, -0.742302443915536130, -0.742335946236805770, -0.742369446702235480, -0.742402945311742000, -0.742436442065240840, -0.742469936962648510, +-0.742503430003881640, -0.742536921188855840, -0.742570410517487840, -0.742603897989693730, -0.742637383605390220, -0.742670867364493060, -0.742704349266918530, -0.742737829312583590, +-0.742771307501403630, -0.742804783833295510, -0.742838258308175400, -0.742871730925959710, -0.742905201686564930, -0.742938670589906810, -0.742972137635902090, -0.743005602824467260, +-0.743039066155518180, -0.743072527628971360, -0.743105987244743300, -0.743139445002750200, -0.743172900902908880, -0.743206354945134870, -0.743239807129345340, -0.743273257455456140, +-0.743306705923383550, -0.743340152533044310, -0.743373597284354700, -0.743407040177231470, -0.743440481211590230, -0.743473920387347720, -0.743507357704420890, -0.743540793162725260, +-0.743574226762177660, -0.743607658502694500, -0.743641088384192180, -0.743674516406587440, -0.743707942569796220, -0.743741366873734930, -0.743774789318320640, -0.743808209903469190, +-0.743841628629097080, -0.743875045495120850, -0.743908460501457420, -0.743941873648022560, -0.743975284934732860, -0.744008694361505410, -0.744042101928255820, -0.744075507634901050, +-0.744108911481357490, -0.744142313467541670, -0.744175713593370200, -0.744209111858759380, -0.744242508263625700, -0.744275902807886030, -0.744309295491456300, -0.744342686314253270, +-0.744376075276193650, -0.744409462377193740, -0.744442847617170500, -0.744476230996039880, -0.744509612513718720, -0.744542992170123650, -0.744576369965170960, -0.744609745898777260, +-0.744643119970859300, -0.744676492181333800, -0.744709862530116730, -0.744743231017125030, -0.744776597642275550, -0.744809962405484250, -0.744843325306668080, -0.744876686345743670, +-0.744910045522627410, -0.744943402837236370, -0.744976758289486510, -0.745010111879294780, -0.745043463606578140, -0.745076813471252430, -0.745110161473234720, -0.745143507612441640, +-0.745176851888789790, -0.745210194302196150, -0.745243534852576660, -0.745276873539848510, -0.745310210363928080, -0.745343545324732020, -0.745376878422177150, -0.745410209656180100, +-0.745443539026657720, -0.745476866533526290, -0.745510192176702670, -0.745543515956103910, -0.745576837871645970, -0.745610157923245920, -0.745643476110820600, -0.745676792434286530, +-0.745710106893560760, -0.745743419488559490, -0.745776730219199660, -0.745810039085398220, -0.745843346087071370, -0.745876651224136270, -0.745909954496509540, -0.745943255904108150, +-0.745976555446848270, -0.746009853124647070, -0.746043148937421520, -0.746076442885087900, -0.746109734967563050, -0.746143025184763940, -0.746176313536607180, -0.746209600023010070, +-0.746242884643888550, -0.746276167399159810, -0.746309448288741020, -0.746342727312548250, -0.746376004470498790, -0.746409279762509150, -0.746442553188496390, -0.746475824748377480, +-0.746509094442068810, -0.746542362269487340, -0.746575628230550240, -0.746608892325173910, -0.746642154553275210, -0.746675414914771180, -0.746708673409578920, -0.746741930037614690, +-0.746775184798795570, -0.746808437693038840, -0.746841688720260690, -0.746874937880378290, -0.746908185173308590, -0.746941430598968450, -0.746974674157275030, -0.747007915848144630, +-0.747041155671494430, -0.747074393627241480, -0.747107629715302420, -0.747140863935594310, -0.747174096288034000, -0.747207326772538430, -0.747240555389024900, -0.747273782137409580, +-0.747307007017610100, -0.747340230029542860, -0.747373451173125040, -0.747406670448273690, -0.747439887854905560, -0.747473103392937930, -0.747506317062287430, -0.747539528862871010, +-0.747572738794606060, -0.747605946857409000, -0.747639153051197100, -0.747672357375887330, -0.747705559831396640, -0.747738760417642310, -0.747771959134540860, -0.747805155982009360, +-0.747838350959965430, -0.747871544068325230, -0.747904735307006190, -0.747937924675925350, -0.747971112175000010, -0.748004297804146570, -0.748037481563282310, -0.748070663452324760, +-0.748103843471190190, -0.748137021619796010, -0.748170197898059270, -0.748203372305897170, -0.748236544843226770, -0.748269715509964680, -0.748302884306028430, -0.748336051231335290, +-0.748369216285801660, -0.748402379469344960, -0.748435540781882350, -0.748468700223330900, -0.748501857793608010, -0.748535013492630070, -0.748568167320314730, -0.748601319276579140, +-0.748634469361340040, -0.748667617574514720, -0.748700763916020470, -0.748733908385774470, -0.748767050983693450, -0.748800191709694810, -0.748833330563695940, -0.748866467545613590, +-0.748899602655364930, -0.748932735892867350, -0.748965867258037930, -0.748998996750794070, -0.749032124371052490, -0.749065250118730490, -0.749098373993745680, -0.749131495996014810, +-0.749164616125455040, -0.749197734381983780, -0.749230850765518100, -0.749263965275975720, -0.749297077913273050, -0.749330188677328040, -0.749363297568057200, -0.749396404585378150, +-0.749429509729208080, -0.749462612999464260, -0.749495714396064220, -0.749528813918924560, -0.749561911567962920, -0.749595007343096700, -0.749628101244242730, -0.749661193271318420, +-0.749694283424241270, -0.749727371702928360, -0.749760458107297300, -0.749793542637264720, -0.749826625292748460, -0.749859706073665810, -0.749892784979933610, -0.749925862011469490, +-0.749958937168190620, -0.749992010450014850, -0.750025081856858680, -0.750058151388639740, -0.750091219045275760, -0.750124284826683470, -0.750157348732780500, -0.750190410763484140, +-0.750223470918711670, -0.750256529198380930, -0.750289585602408550, -0.750322640130712150, -0.750355692783209460, -0.750388743559817220, -0.750421792460453150, -0.750454839485034660, +-0.750487884633478930, -0.750520927905703910, -0.750553969301626210, -0.750587008821163910, -0.750620046464233860, -0.750653082230753550, -0.750686116120640730, -0.750719148133812460, +-0.750752178270186700, -0.750785206529680060, -0.750818232912210610, -0.750851257417695650, -0.750884280046052450, -0.750917300797198430, -0.750950319671051190, -0.750983336667528150, +-0.751016351786547020, -0.751049365028024880, -0.751082376391879250, -0.751115385878027840, -0.751148393486387730, -0.751181399216876770, -0.751214403069412230, -0.751247405043911960, +-0.751280405140292820, -0.751313403358472740, -0.751346399698369470, -0.751379394159899850, -0.751412386742981830, -0.751445377447532700, -0.751478366273470310, -0.751511353220712160, +-0.751544338289175330, -0.751577321478777760, -0.751610302789437080, -0.751643282221070460, -0.751676259773595530, -0.751709235446930020, -0.751742209240991330, -0.751775181155697410, +-0.751808151190965330, -0.751841119346712940, -0.751874085622857850, -0.751907050019317460, -0.751940012536009280, -0.751972973172851170, -0.752005931929760840, -0.752038888806655480, +-0.752071843803452820, -0.752104796920070930, -0.752137748156426640, -0.752170697512438040, -0.752203644988022720, -0.752236590583098220, -0.752269534297582590, -0.752302476131392780, +-0.752335416084446870, -0.752368354156662590, -0.752401290347957220, -0.752434224658248610, -0.752467157087454490, -0.752500087635492370, -0.752533016302280310, -0.752565943087735610, +-0.752598867991776110, -0.752631791014319320, -0.752664712155282970, -0.752697631414584900, -0.752730548792142740, -0.752763464287874440, -0.752796377901697290, -0.752829289633529020, +-0.752862199483287920, -0.752895107450891050, -0.752928013536256380, -0.752960917739301740, -0.752993820059944750, -0.753026720498103490, -0.753059619053695120, -0.753092515726637710, +-0.753125410516849450, -0.753158303424247280, -0.753191194448749270, -0.753224083590273370, -0.753256970848737440, -0.753289856224058860, -0.753322739716155710, -0.753355621324945930, +-0.753388501050346830, -0.753421378892276450, -0.753454254850652650, -0.753487128925393160, -0.753520001116416150, -0.753552871423638910, -0.753585739846979520, -0.753618606386355920, +-0.753651471041685620, -0.753684333812886690, -0.753717194699876750, -0.753750053702573970, -0.753782910820896320, -0.753815766054761080, -0.753848619404086540, -0.753881470868790540, +-0.753914320448790700, -0.753947168144005090, -0.753980013954351440, -0.754012857879748140, -0.754045699920112390, -0.754078540075362350, -0.754111378345416310, -0.754144214730191440, +-0.754177049229606160, -0.754209881843578180, -0.754242712572025460, -0.754275541414866300, -0.754308368372017980, -0.754341193443398780, -0.754374016628926890, -0.754406837928519590, +-0.754439657342095280, -0.754472474869571700, -0.754505290510867120, -0.754538104265899510, -0.754570916134586380, -0.754603726116846120, -0.754636534212596350, -0.754669340421755260, +-0.754702144744240800, -0.754734947179971030, -0.754767747728864120, -0.754800546390837600, -0.754833343165809630, -0.754866138053698620, -0.754898931054422070, -0.754931722167898060, +-0.754964511394044860, -0.754997298732780320, -0.755030084184022840, -0.755062867747689830, -0.755095649423699670, -0.755128429211970760, -0.755161207112420410, -0.755193983124966990, +-0.755226757249528700, -0.755259529486023710, -0.755292299834369740, -0.755325068294484980, -0.755357834866287710, -0.755390599549695670, -0.755423362344627150, -0.755456123251000200, +-0.755488882268732900, -0.755521639397743750, -0.755554394637950160, -0.755587147989270620, -0.755619899451623560, -0.755652649024926350, -0.755685396709097510, -0.755718142504055330, +-0.755750886409717660, -0.755783628426003110, -0.755816368552829190, -0.755849106790114300, -0.755881843137776950, -0.755914577595734770, -0.755947310163906150, -0.755980040842209160, +-0.756012769630562410, -0.756045496528883530, -0.756078221537090810, -0.756110944655102870, -0.756143665882837210, -0.756176385220212350, -0.756209102667146690, -0.756241818223558180, +-0.756274531889365440, -0.756307243664485980, -0.756339953548838540, -0.756372661542341510, -0.756405367644912510, -0.756438071856470050, -0.756470774176932430, -0.756503474606217810, +-0.756536173144244820, -0.756568869790931190, -0.756601564546195650, -0.756634257409955930, -0.756666948382130560, -0.756699637462637800, -0.756732324651395950, -0.756765009948323520, +-0.756797693353338240, -0.756830374866358850, -0.756863054487303840, -0.756895732216090740, -0.756928408052638390, -0.756961081996865070, -0.756993754048689070, -0.757026424208028900, +-0.757059092474802410, -0.757091758848928100, -0.757124423330324810, -0.757157085918910070, -0.757189746614602700, -0.757222405417320890, -0.757255062326983470, -0.757287717343507970, +-0.757320370466813220, -0.757353021696817840, -0.757385671033439680, -0.757418318476597240, -0.757450964026209150, -0.757483607682193470, -0.757516249444469160, -0.757548889312953940, +-0.757581527287566450, -0.757614163368225510, -0.757646797554848870, -0.757679429847355150, -0.757712060245662840, -0.757744688749690480, -0.757777315359356660, -0.757809940074579250, +-0.757842562895276960, -0.757875183821368650, -0.757907802852771930, -0.757940419989405870, -0.757973035231188640, -0.758005648578039090, -0.758038260029875290, -0.758070869586615740, +-0.758103477248179280, -0.758136083014483870, -0.758168686885448250, -0.758201288860990920, -0.758233888941030390, -0.758266487125485390, -0.758299083414273880, -0.758331677807314700, +-0.758364270304526580, -0.758396860905827470, -0.758429449611136340, -0.758462036420371470, -0.758494621333451470, -0.758527204350295300, -0.758559785470820810, -0.758592364694947060, +-0.758624942022592230, -0.758657517453675050, -0.758690090988114020, -0.758722662625827770, -0.758755232366735140, -0.758787800210754090, -0.758820366157803680, -0.758852930207802530, +-0.758885492360668820, -0.758918052616321390, -0.758950610974678750, -0.758983167435659630, -0.759015721999182880, -0.759048274665166560, -0.759080825433529500, -0.759113374304190680, +-0.759145921277068150, -0.759178466352080860, -0.759211009529147330, -0.759243550808186620, -0.759276090189116790, -0.759308627671856580, -0.759341163256325280, -0.759373696942440720, +-0.759406228730121760, -0.759438758619287450, -0.759471286609856080, -0.759503812701746940, -0.759536336894877760, -0.759568859189167940, -0.759601379584536220, -0.759633898080900650, +-0.759666414678180520, -0.759698929376294240, -0.759731442175160530, -0.759763953074698680, -0.759796462074826650, -0.759828969175463610, -0.759861474376527960, -0.759893977677938650, +-0.759926479079614300, -0.759958978581473880, -0.759991476183436210, -0.760023971885419590, -0.760056465687343090, -0.760088957589125650, -0.760121447590685450, -0.760153935691941780, +-0.760186421892813270, -0.760218906193218640, -0.760251388593077060, -0.760283869092306720, -0.760316347690826680, -0.760348824388556110, -0.760381299185413080, -0.760413772081316890, +-0.760446243076186250, -0.760478712169940340, -0.760511179362497240, -0.760543644653776330, -0.760576108043696460, -0.760608569532176150, -0.760641029119134340, -0.760673486804489980, +-0.760705942588161930, -0.760738396470069360, -0.760770848450130430, -0.760803298528264450, -0.760835746704390360, -0.760868192978426780, -0.760900637350292670, -0.760933079819906990, +-0.760965520387188450, -0.760997959052056580, -0.761030395814429440, -0.761062830674226310, -0.761095263631366480, -0.761127694685768130, -0.761160123837350540, -0.761192551086032680, +-0.761224976431733700, -0.761257399874372020, -0.761289821413866810, -0.761322241050137350, -0.761354658783101930, -0.761387074612679960, -0.761419488538790270, -0.761451900561351810, +-0.761484310680283990, -0.761516718895505100, -0.761549125206934300, -0.761581529614490990, -0.761613932118093690, -0.761646332717661470, -0.761678731413113490, -0.761711128204368590, +-0.761743523091346190, -0.761775916073964670, -0.761808307152143650, -0.761840696325801650, -0.761873083594857840, -0.761905468959231390, -0.761937852418841270, -0.761970233973606750, +-0.762002613623446350, -0.762034991368279350, -0.762067367208025260, -0.762099741142602480, -0.762132113171930300, -0.762164483295927900, -0.762196851514514220, -0.762229217827608770, +-0.762261582235129960, -0.762293944736997080, -0.762326305333129730, -0.762358664023446320, -0.762391020807866250, -0.762423375686308690, -0.762455728658692930, -0.762488079724937600, +-0.762520428884961960, -0.762552776138685550, -0.762585121486026970, -0.762617464926905630, -0.762649806461240590, -0.762682146088951020, -0.762714483809956320, -0.762746819624175230, +-0.762779153531527030, -0.762811485531931230, -0.762843815625306450, -0.762876143811572090, -0.762908470090647440, -0.762940794462451550, -0.762973116926904060, -0.763005437483923350, +-0.763037756133429170, -0.763070072875340790, -0.763102387709576950, -0.763134700636057260, -0.763167011654700690, -0.763199320765426960, -0.763231627968154580, -0.763263933262803170, +-0.763296236649292140, -0.763328538127540310, -0.763360837697467210, -0.763393135358991890, -0.763425431112033760, -0.763457724956512320, -0.763490016892346300, -0.763522306919455220, +-0.763554595037758690, -0.763586881247175440, -0.763619165547624880, -0.763651447939026510, -0.763683728421299390, -0.763716006994363370, -0.763748283658136960, -0.763780558412540110, +-0.763812831257491660, -0.763845102192911130, -0.763877371218717790, -0.763909638334831050, -0.763941903541170530, -0.763974166837654840, -0.764006428224203840, -0.764038687700737020, +-0.764070945267173230, -0.764103200923432090, -0.764135454669432890, -0.764167706505095130, -0.764199956430338330, -0.764232204445081330, -0.764264450549243860, -0.764296694742745530, +-0.764328937025505200, -0.764361177397442580, -0.764393415858476870, -0.764425652408528000, -0.764457887047514720, -0.764490119775356750, -0.764522350591973710, -0.764554579497284560, +-0.764586806491208910, -0.764619031573666290, -0.764651254744576070, -0.764683476003858000, -0.764715695351430910, -0.764747912787214550, -0.764780128311128850, -0.764812341923092440, +-0.764844553623025170, -0.764876763410846540, -0.764908971286475950, -0.764941177249833350, -0.764973381300837360, -0.765005583439408050, -0.765037783665465040, -0.765069981978927280, +-0.765102178379714500, -0.765134372867746330, -0.765166565442942480, -0.765198756105221920, -0.765230944854504490, -0.765263131690710030, -0.765295316613757490, -0.765327499623566500, +-0.765359680720056890, -0.765391859903148060, -0.765424037172759860, -0.765456212528811240, -0.765488385971222150, -0.765520557499912320, -0.765552727114800820, -0.765584894815807600, +-0.765617060602852060, -0.765649224475853820, -0.765681386434732940, -0.765713546479408150, -0.765745704609799960, -0.765777860825827110, -0.765810015127409540, -0.765842167514466990, +-0.765874317986919070, -0.765906466544685640, -0.765938613187685750, -0.765970757915839240, -0.766002900729066290, -0.766035041627285640, -0.766067180610417450, -0.766099317678381350, +-0.766131452831096960, -0.766163586068484110, -0.766195717390462110, -0.766227846796950770, -0.766259974287870180, -0.766292099863139290, -0.766324223522678150, -0.766356345266406390, +-0.766388465094244190, -0.766420583006110490, -0.766452699001925360, -0.766484813081608760, -0.766516925245079750, -0.766549035492258500, -0.766581143823064640, -0.766613250237418000, +-0.766645354735238430, -0.766677457316445210, -0.766709557980958410, -0.766741656728697870, -0.766773753559582990, -0.766805848473533720, -0.766837941470469800, -0.766870032550311050, +-0.766902121712977560, -0.766934208958388370, -0.766966294286463680, -0.766998377697123650, -0.767030459190287230, -0.767062538765874820, -0.767094616423805940, -0.767126692164000870, +-0.767158765986378780, -0.767190837890859730, -0.767222907877363910, -0.767254975945810600, -0.767287042096119750, -0.767319106328211320, -0.767351168642005140, -0.767383229037421290, +-0.767415287514379150, -0.767447344072798690, -0.767479398712600290, -0.767511451433703030, -0.767543502236027080, -0.767575551119492490, -0.767607598084018910, -0.767639643129526710, +-0.767671686255935070, -0.767703727463164620, -0.767735766751134420, -0.767767804119764860, -0.767799839568975790, -0.767831873098687060, -0.767863904708819050, -0.767895934399290820, +-0.767927962170022900, -0.767959988020935350, -0.767992011951947550, -0.768024033962979690, -0.768056054053951720, -0.768088072224783590, -0.768120088475395590, -0.768152102805707120, +-0.768184115215638450, -0.768216125705109660, -0.768248134274040370, -0.768280140922350640, -0.768312145649960640, -0.768344148456790550, -0.768376149342759770, -0.768408148307788700, +-0.768440145351797390, -0.768472140474705580, -0.768504133676433330, -0.768536124956900820, -0.768568114316027890, -0.768600101753735050, -0.768632087269941700, -0.768664070864568010, +-0.768696052537534480, -0.768728032288760630, -0.768760010118166530, -0.768791986025672560, -0.768823960011198570, -0.768855932074664960, -0.768887902215991240, -0.768919870435098020, +-0.768951836731904810, -0.768983801106332130, -0.769015763558299810, -0.769047724087728150, -0.769079682694537530, -0.769111639378647350, -0.769143594139978020, -0.769175546978450030, +-0.769207497893982910, -0.769239446886497040, -0.769271393955912600, -0.769303339102149540, -0.769335282325128600, -0.769367223624769060, -0.769399163000991430, -0.769431100453716210, +-0.769463035982863030, -0.769494969588352170, -0.769526901270103920, -0.769558831028038680, -0.769590758862076060, -0.769622684772136580, -0.769654608758140730, -0.769686530820007930, +-0.769718450957658900, -0.769750369171013800, -0.769782285459992720, -0.769814199824516150, -0.769846112264503830, -0.769878022779876270, -0.769909931370553970, -0.769941838036456440, +-0.769973742777504410, -0.770005645593617950, -0.770037546484717450, -0.770069445450723310, -0.770101342491555260, -0.770133237607133920, -0.770165130797379800, -0.770197022062212520, +-0.770228911401552590, -0.770260798815320500, -0.770292684303436670, -0.770324567865820820, -0.770356449502393570, -0.770388329213075540, -0.770420206997786350, -0.770452082856446620, +-0.770483956788976740, -0.770515828795296900, -0.770547698875327810, -0.770579567028989110, -0.770611433256201630, -0.770643297556885760, -0.770675159930961360, -0.770707020378349150, +-0.770738878898969300, -0.770770735492742330, -0.770802590159588740, -0.770834442899428370, -0.770866293712182180, -0.770898142597770120, -0.770929989556112580, -0.770961834587130080, +-0.770993677690742900, -0.771025518866871980, -0.771057358115436850, -0.771089195436358340, -0.771121030829557190, -0.771152864294953220, -0.771184695832466960, -0.771216525442019020, +-0.771248353123529800, -0.771280178876919910, -0.771312002702109420, -0.771343824599018730, -0.771375644567568910, -0.771407462607679670, -0.771439278719271760, -0.771471092902265680, +-0.771502905156582040, -0.771534715482140920, -0.771566523878863040, -0.771598330346669140, -0.771630134885479050, -0.771661937495213720, -0.771693738175793560, -0.771725536927138970, +-0.771757333749170880, -0.771789128641809150, -0.771820921604974620, -0.771852712638588010, -0.771884501742569400, -0.771916288916839500, -0.771948074161318940, -0.771979857475928120, +-0.772011638860587990, -0.772043418315218390, -0.772075195839740270, -0.772106971434074470, -0.772138745098141070, -0.772170516831860660, -0.772202286635154000, -0.772234054507941910, +-0.772265820450144470, -0.772297584461682400, -0.772329346542476650, -0.772361106692447290, -0.772392864911515150, -0.772424621199600760, -0.772456375556624940, -0.772488127982508430, +-0.772519878477171300, -0.772551627040534480, -0.772583373672518950, -0.772615118373044530, -0.772646861142032400, -0.772678601979403190, -0.772710340885077400, -0.772742077858976080, +-0.772773812901019320, -0.772805546011128160, -0.772837277189223020, -0.772869006435224600, -0.772900733749053660, -0.772932459130630910, -0.772964182579877310, -0.772995904096712930, +-0.773027623681058820, -0.773059341332835940, -0.773091057051964350, -0.773122770838365230, -0.773154482691959080, -0.773186192612666860, -0.773217900600409290, -0.773249606655106780, +-0.773281310776680160, -0.773313012965050620, -0.773344713220138310, -0.773376411541864210, -0.773408107930149020, -0.773439802384913830, -0.773471494906078920, -0.773503185493565230, +-0.773534874147293830, -0.773566560867185000, -0.773598245653159710, -0.773629928505138900, -0.773661609423043180, -0.773693288406793860, -0.773724965456310980, -0.773756640571515610, +-0.773788313752328930, -0.773819984998671220, -0.773851654310463540, -0.773883321687626750, -0.773914987130081670, -0.773946650637749260, -0.773978312210550130, -0.774009971848405140, +-0.774041629551235450, -0.774073285318961470, -0.774104939151504360, -0.774136591048784740, -0.774168241010724010, -0.774199889037242350, -0.774231535128261040, -0.774263179283701140, +-0.774294821503482940, -0.774326461787527840, -0.774358100135756460, -0.774389736548089850, -0.774421371024449190, -0.774453003564754880, -0.774484634168927990, -0.774516262836889790, +-0.774547889568560690, -0.774579514363861850, -0.774611137222714240, -0.774642758145038800, -0.774674377130756710, -0.774705994179788360, -0.774737609292055370, -0.774769222467478040, +-0.774800833705977740, -0.774832443007475220, -0.774864050371891660, -0.774895655799148320, -0.774927259289165500, -0.774958860841864490, -0.774990460457166690, -0.775022058134992360, +-0.775053653875263040, -0.775085247677899440, -0.775116839542822730, -0.775148429469954330, -0.775180017459214500, -0.775211603510524540, -0.775243187623805950, -0.775274769798979140, +-0.775306350035965260, -0.775337928334685620, -0.775369504695061500, -0.775401079117013170, -0.775432651600462260, -0.775464222145329950, -0.775495790751536850, -0.775527357419004250, +-0.775558922147653320, -0.775590484937405010, -0.775622045788180730, -0.775653604699901080, -0.775685161672487470, -0.775716716705861180, -0.775748269799942940, -0.775779820954653920, +-0.775811370169915300, -0.775842917445648370, -0.775874462781774410, -0.775906006178213930, -0.775937547634888540, -0.775969087151719530, -0.776000624728627410, -0.776032160365533800, +-0.776063694062359870, -0.776095225819026900, -0.776126755635455630, -0.776158283511567460, -0.776189809447283770, -0.776221333442525420, -0.776252855497213680, -0.776284375611269840, +-0.776315893784614960, -0.776347410017170670, -0.776378924308857580, -0.776410436659597190, -0.776441947069311020, -0.776473455537919690, -0.776504962065344690, -0.776536466651507330, +-0.776567969296328760, -0.776599469999730510, -0.776630968761633400, -0.776662465581959060, -0.776693960460628330, -0.776725453397562720, -0.776756944392683390, -0.776788433445911750, +-0.776819920557169310, -0.776851405726376790, -0.776882888953455810, -0.776914370238327770, -0.776945849580913620, -0.776977326981134750, -0.777008802438912680, -0.777040275954168580, +-0.777071747526824060, -0.777103217156799860, -0.777134684844017600, -0.777166150588398890, -0.777197614389864680, -0.777229076248336260, -0.777260536163735250, -0.777291994135983160, +-0.777323450165000820, -0.777354904250709740, -0.777386356393031770, -0.777417806591887640, -0.777449254847198960, -0.777480701158887230, -0.777512145526873640, -0.777543587951080030, +-0.777575028431427120, -0.777606466967836750, -0.777637903560230330, -0.777669338208529020, -0.777700770912654220, -0.777732201672527660, -0.777763630488070400, -0.777795057359204510, +-0.777826482285850610, -0.777857905267930860, -0.777889326305366000, -0.777920745398077870, -0.777952162545987870, -0.777983577749017390, -0.778014991007088370, -0.778046402320121460, +-0.778077811688038580, -0.778109219110761470, -0.778140624588211090, -0.778172028120309060, -0.778203429706977090, -0.778234829348136480, -0.778266227043708960, -0.778297622793615700, +-0.778329016597778420, -0.778360408456118870, -0.778391798368557990, -0.778423186335017500, -0.778454572355419150, -0.778485956429684430, -0.778517338557734970, -0.778548718739491940, +-0.778580096974877400, -0.778611473263812410, -0.778642847606218710, -0.778674220002017800, -0.778705590451131410, -0.778736958953481270, -0.778768325508988560, -0.778799690117574880, +-0.778831052779162420, -0.778862413493671910, -0.778893772261025410, -0.778925129081144530, -0.778956483953950780, -0.778987836879366120, -0.779019187857311610, -0.779050536887709090, +-0.779081883970480500, -0.779113229105546920, -0.779144572292830300, -0.779175913532252240, -0.779207252823734710, -0.779238590167198760, -0.779269925562566250, -0.779301259009759330, +-0.779332590508698850, -0.779363920059306990, -0.779395247661505360, -0.779426573315215480, -0.779457897020359610, -0.779489218776858620, -0.779520538584634550, -0.779551856443609470, +-0.779583172353704450, -0.779614486314841540, -0.779645798326942360, -0.779677108389928650, -0.779708416503722580, -0.779739722668245090, -0.779771026883418590, -0.779802329149164250, +-0.779833629465404020, -0.779864927832059850, -0.779896224249053250, -0.779927518716306500, -0.779958811233740560, -0.779990101801277590, -0.780021390418839670, -0.780052677086348070, +-0.780083961803724630, -0.780115244570891430, -0.780146525387769960, -0.780177804254282630, -0.780209081170350370, -0.780240356135895490, -0.780271629150840030, -0.780302900215105180, +-0.780334169328612990, -0.780365436491285420, -0.780396701703044650, -0.780427964963811730, -0.780459226273508940, -0.780490485632058360, -0.780521743039381270, -0.780552998495399830, +-0.780584252000036010, -0.780615503553211410, -0.780646753154848330, -0.780678000804868160, -0.780709246503192960, -0.780740490249744900, -0.780771732044445390, -0.780802971887216480, +-0.780834209777980240, -0.780865445716658390, -0.780896679703173220, -0.780927911737446130, -0.780959141819399180, -0.780990369948954770, -0.781021596126034060, -0.781052820350559340, +-0.781084042622452570, -0.781115262941636020, -0.781146481308031100, -0.781177697721559870, -0.781208912182144720, -0.781240124689706940, -0.781271335244168920, -0.781302543845452610, +-0.781333750493479860, -0.781364955188173060, -0.781396157929453490, -0.781427358717243670, -0.781458557551465650, -0.781489754432040940, -0.781520949358891940, -0.781552142331940480, +-0.781583333351108630, -0.781614522416318790, -0.781645709527492350, -0.781676894684551930, -0.781708077887419030, -0.781739259136015830, -0.781770438430264610, -0.781801615770087220, +-0.781832791155406050, -0.781863964586142710, -0.781895136062219390, -0.781926305583558470, -0.781957473150081570, -0.781988638761710990, -0.782019802418368880, -0.782050964119977100, +-0.782082123866458370, -0.782113281657733860, -0.782144437493726310, -0.782175591374357880, -0.782206743299550200, -0.782237893269225660, -0.782269041283306320, -0.782300187341714690, +-0.782331331444372390, -0.782362473591201700, -0.782393613782125130, -0.782424752017064180, -0.782455888295941480, -0.782487022618678970, -0.782518154985198940, -0.782549285395423790, +-0.782580413849275120, -0.782611540346675460, -0.782642664887547190, -0.782673787471811930, -0.782704908099392300, -0.782736026770210370, -0.782767143484188410, -0.782798258241248820, +-0.782829371041313230, -0.782860481884304350, -0.782891590770144470, -0.782922697698755330, -0.782953802670059540, -0.782984905683979160, -0.783016006740436810, -0.783047105839354110, +-0.783078202980653780, -0.783109298164258120, -0.783140391390088950, -0.783171482658068800, -0.783202571968119930, -0.783233659320164640, -0.783264744714125550, -0.783295828149924270, +-0.783326909627483410, -0.783357989146725610, -0.783389066707572470, -0.783420142309946720, -0.783451215953770540, -0.783482287638966430, -0.783513357365456800, -0.783544425133163580, +-0.783575490942009510, -0.783606554791916430, -0.783637616682806960, -0.783668676614603490, -0.783699734587228300, -0.783730790600604020, -0.783761844654652600, -0.783792896749296420, +-0.783823946884458440, -0.783854995060060180, -0.783886041276024460, -0.783917085532273680, -0.783948127828730130, -0.783979168165316650, -0.784010206541954860, -0.784041242958567590, +-0.784072277415077460, -0.784103309911406420, -0.784134340447477100, -0.784165369023211880, -0.784196395638533490, -0.784227420293363900, -0.784258442987625810, -0.784289463721241750, +-0.784320482494133890, -0.784351499306224720, -0.784382514157436870, -0.784413527047692740, -0.784444537976914940, -0.784475546945025640, -0.784506553951947460, -0.784537558997603130, +-0.784568562081914720, -0.784599563204804840, -0.784630562366196100, -0.784661559566010910, -0.784692554804172100, -0.784723548080601630, -0.784754539395222220, -0.784785528747956820, +-0.784816516138727270, -0.784847501567456530, -0.784878485034066880, -0.784909466538481480, -0.784940446080621970, -0.784971423660411500, -0.785002399277772600, -0.785033372932627540, +-0.785064344624899050, -0.785095314354509630, -0.785126282121381910, -0.785157247925438840, -0.785188211766602250, -0.785219173644795210, -0.785250133559940560, -0.785281091511960240, +-0.785312047500777210, -0.785343001526314090, -0.785373953588493380, -0.785404903687238140, -0.785435851822470330, -0.785466797994113230, -0.785497742202088790, -0.785528684446319960, +-0.785559624726729470, -0.785590563043239930, -0.785621499395774300, -0.785652433784254530, -0.785683366208603800, -0.785714296668744820, -0.785745225164599880, -0.785776151696091940, +-0.785807076263143500, -0.785837998865677400, -0.785868919503616590, -0.785899838176883250, -0.785930754885400320, -0.785961669629090750, -0.785992582407876730, -0.786023493221681190, +-0.786054402070426980, -0.786085308954037050, -0.786116213872433580, -0.786147116825539500, -0.786178017813278010, -0.786208916835571150, -0.786239813892341990, -0.786270708983513260, +-0.786301602109007790, -0.786332493268748660, -0.786363382462657910, -0.786394269690658840, -0.786425154952674180, -0.786456038248626530, -0.786486919578438750, -0.786517798942033550, +-0.786548676339334010, -0.786579551770262950, -0.786610425234742780, -0.786641296732696560, -0.786672166264047350, -0.786703033828717420, -0.786733899426629970, -0.786764763057707710, +-0.786795624721873920, -0.786826484419050680, -0.786857342149161370, -0.786888197912128830, -0.786919051707875570, -0.786949903536324660, -0.786980753397399040, -0.787011601291021550, +-0.787042447217115250, -0.787073291175602650, -0.787104133166406710, -0.787134973189450800, -0.787165811244657120, -0.787196647331949050, -0.787227481451249210, -0.787258313602480770, +-0.787289143785566800, -0.787319972000429580, -0.787350798246992830, -0.787381622525178740, -0.787412444834910690, -0.787443265176111410, -0.787474083548704070, -0.787504899952611750, +-0.787535714387756940, -0.787566526854062810, -0.787597337351452650, -0.787628145879848860, -0.787658952439174610, -0.787689757029353180, -0.787720559650307180, -0.787751360301960140, +-0.787782158984234430, -0.787812955697053340, -0.787843750440340050, -0.787874543214017180, -0.787905334018008000, -0.787936122852235350, -0.787966909716622750, -0.787997694611092590, +-0.788028477535568150, -0.788059258489972940, -0.788090037474229230, -0.788120814488260320, -0.788151589531989490, -0.788182362605339690, -0.788213133708234200, -0.788243902840595640, +-0.788274670002347300, -0.788305435193412560, -0.788336198413713940, -0.788366959663174830, -0.788397718941718400, -0.788428476249267600, -0.788459231585745820, -0.788489984951075810, +-0.788520736345181050, -0.788551485767984170, -0.788582233219408680, -0.788612978699377520, -0.788643722207813870, -0.788674463744641230, -0.788705203309782220, -0.788735940903160130, +-0.788766676524698450, -0.788797410174319920, -0.788828141851947720, -0.788858871557505230, -0.788889599290915510, -0.788920325052102190, -0.788951048840987660, -0.788981770657495530, +-0.789012490501549310, -0.789043208373071630, -0.789073924271985750, -0.789104638198215190, -0.789135350151683350, -0.789166060132312720, -0.789196768140027040, -0.789227474174749700, +-0.789258178236403320, -0.789288880324911620, -0.789319580440197680, -0.789350278582184760, -0.789380974750796380, -0.789411668945955380, -0.789442361167585150, -0.789473051415609310, +-0.789503739689950580, -0.789534425990532470, -0.789565110317278270, -0.789595792670111370, -0.789626473048955280, -0.789657151453732610, -0.789687827884367200, -0.789718502340782450, +-0.789749174822901080, -0.789779845330646930, -0.789810513863943080, -0.789841180422713230, -0.789871845006880120, -0.789902507616367380, -0.789933168251098720, -0.789963826910996870, +-0.789994483595985340, -0.790025138305987750, -0.790055791040927160, -0.790086441800727510, -0.790117090585311430, -0.790147737394602650, -0.790178382228524660, -0.790209025087000640, +-0.790239665969953880, -0.790270304877308090, -0.790300941808986470, -0.790331576764912840, -0.790362209745009920, -0.790392840749201800, -0.790423469777411290, -0.790454096829562030, +-0.790484721905577610, -0.790515345005381450, -0.790545966128897050, -0.790576585276047570, -0.790607202446756530, -0.790637817640947870, -0.790668430858544320, -0.790699042099469730, +-0.790729651363647480, -0.790760258651001190, -0.790790863961454480, -0.790821467294930300, -0.790852068651352490, -0.790882668030644780, -0.790913265432730110, -0.790943860857532320, +-0.790974454304974820, -0.791005045774981540, -0.791035635267475330, -0.791066222782380040, -0.791096808319619370, -0.791127391879116510, -0.791157973460795190, -0.791188553064578910, +-0.791219130690391180, -0.791249706338155940, -0.791280280007796270, -0.791310851699235760, -0.791341421412398380, -0.791371989147207300, -0.791402554903586130, -0.791433118681458600, +-0.791463680480748330, -0.791494240301379050, -0.791524798143274030, -0.791555354006356900, -0.791585907890551720, -0.791616459795781440, -0.791647009721970000, -0.791677557669041130, +-0.791708103636918570, -0.791738647625525480, -0.791769189634785820, -0.791799729664623310, -0.791830267714961340, -0.791860803785723650, -0.791891337876833970, -0.791921869988216010, +-0.791952400119793510, -0.791982928271489860, -0.792013454443228900, -0.792043978634934480, -0.792074500846529860, -0.792105021077939010, -0.792135539329085650, -0.792166055599893390, +-0.792196569890286310, -0.792227082200187450, -0.792257592529521220, -0.792288100878210780, -0.792318607246179970, -0.792349111633352750, -0.792379614039652740, -0.792410114465003870, +-0.792440612909329540, -0.792471109372553610, -0.792501603854600220, -0.792532096355392570, -0.792562586874854590, -0.792593075412910240, -0.792623561969483140, -0.792654046544497450, +-0.792684529137876350, -0.792715009749543900, -0.792745488379424270, -0.792775965027440630, -0.792806439693517050, -0.792836912377577360, -0.792867383079545630, -0.792897851799345240, +-0.792928318536900270, -0.792958783292134650, -0.792989246064971900, -0.793019706855335960, -0.793050165663150790, -0.793080622488340210, -0.793111077330828310, -0.793141530190538460, +-0.793171981067394840, -0.793202429961321510, -0.793232876872241750, -0.793263321800079860, -0.793293764744759770, -0.793324205706205100, -0.793354644684340250, -0.793385081679088610, +-0.793415516690374130, -0.793445949718121210, -0.793476380762253130, -0.793506809822694060, -0.793537236899368060, -0.793567661992199080, -0.793598085101110850, -0.793628506226027320, +-0.793658925366872770, -0.793689342523570710, -0.793719757696045190, -0.793750170884220290, -0.793780582088020050, -0.793810991307368650, -0.793841398542189380, -0.793871803792406630, +-0.793902207057944790, -0.793932608338727030, -0.793963007634677750, -0.793993404945721020, -0.794023800271780660, -0.794054193612781180, -0.794084584968645870, -0.794114974339299450, +-0.794145361724665320, -0.794175747124667760, -0.794206130539230730, -0.794236511968278490, -0.794266891411735230, -0.794297268869524450, -0.794327644341570550, -0.794358017827797690, +-0.794388389328129610, -0.794418758842490580, -0.794449126370804560, -0.794479491912995830, -0.794509855468988560, -0.794540217038706480, -0.794570576622073750, -0.794600934219014900, +-0.794631289829453410, -0.794661643453313690, -0.794691995090519910, -0.794722344740996340, -0.794752692404666730, -0.794783038081455340, -0.794813381771286690, -0.794843723474084270, +-0.794874063189772500, -0.794904400918275630, -0.794934736659517640, -0.794965070413423240, -0.794995402179915820, -0.795025731958919900, -0.795056059750359980, -0.795086385554159560, +-0.795116709370243150, -0.795147031198535030, -0.795177351038959260, -0.795207668891440460, -0.795237984755902240, -0.795268298632269000, -0.795298610520465350, -0.795328920420414810, +-0.795359228332041980, -0.795389534255271150, -0.795419838190026710, -0.795450140136232390, -0.795480440093812800, -0.795510738062692350, -0.795541034042794750, -0.795571328034044510, +-0.795601620036366030, -0.795631910049683480, -0.795662198073921470, -0.795692484109003620, -0.795722768154854650, -0.795753050211398970, -0.795783330278560410, -0.795813608356263470, +-0.795843884444432550, -0.795874158542991930, -0.795904430651866220, -0.795934700770979160, -0.795964968900255590, -0.795995235039619220, -0.796025499188994900, -0.796055761348306800, +-0.796086021517479310, -0.796116279696436950, -0.796146535885103760, -0.796176790083404140, -0.796207042291262820, -0.796237292508603640, -0.796267540735351220, -0.796297786971429940, +-0.796328031216764210, -0.796358273471278740, -0.796388513734897160, -0.796418752007544420, -0.796448988289145120, -0.796479222579623000, -0.796509454878902790, -0.796539685186908990, +-0.796569913503566210, -0.796600139828798400, -0.796630364162530190, -0.796660586504686410, -0.796690806855190890, -0.796721025213968370, -0.796751241580943240, -0.796781455956040000, +-0.796811668339183380, -0.796841878730297330, -0.796872087129306680, -0.796902293536135950, -0.796932497950709310, -0.796962700372951360, -0.796992900802786730, -0.797023099240139810, +-0.797053295684935330, -0.797083490137097450, -0.797113682596551130, -0.797143873063220210, -0.797174061537029740, -0.797204248017904020, -0.797234432505767750, -0.797264615000545680, +-0.797294795502161760, -0.797324974010540810, -0.797355150525607790, -0.797385325047286540, -0.797415497575502010, -0.797445668110178700, -0.797475836651241330, -0.797506003198614530, +-0.797536167752222580, -0.797566330311990090, -0.797596490877842010, -0.797626649449702520, -0.797656806027496450, -0.797686960611148300, -0.797717113200583030, -0.797747263795724690, +-0.797777412396498130, -0.797807559002828400, -0.797837703614639460, -0.797867846231856360, -0.797897986854403500, -0.797928125482205820, -0.797958262115187940, -0.797988396753274270, +-0.798018529396389510, -0.798048660044458740, -0.798078788697406120, -0.798108915355156380, -0.798139040017634470, -0.798169162684764900, -0.798199283356472720, -0.798229402032682110, +-0.798259518713317910, -0.798289633398305170, -0.798319746087568170, -0.798349856781031760, -0.798379965478620670, -0.798410072180260060, -0.798440176885873880, -0.798470279595387300, +-0.798500380308725280, -0.798530479025811980, -0.798560575746572580, -0.798590670470931690, -0.798620763198814140, -0.798650853930144900, -0.798680942664848350, -0.798711029402849440, +-0.798741114144073120, -0.798771196888443890, -0.798801277635886600, -0.798831356386326070, -0.798861433139687160, -0.798891507895895030, -0.798921580654873730, -0.798951651416548890, +-0.798981720180844570, -0.799011786947685930, -0.799041851716997820, -0.799071914488705070, -0.799101975262732860, -0.799132034039005460, -0.799162090817447930, -0.799192145597985460, +-0.799222198380542430, -0.799252249165043780, -0.799282297951414590, -0.799312344739579570, -0.799342389529464010, -0.799372432320992200, -0.799402473114089300, -0.799432511908680480, +-0.799462548704690130, -0.799492583502043440, -0.799522616300665230, -0.799552647100480800, -0.799582675901414520, -0.799612702703391460, -0.799642727506336910, -0.799672750310175370, +-0.799702771114831900, -0.799732789920231560, -0.799762806726299180, -0.799792821532960050, -0.799822834340138570, -0.799852845147760010, -0.799882853955749650, -0.799912860764031900, +-0.799942865572531910, -0.799972868381174870, -0.800002869189885610, -0.800032867998589410, -0.800062864807210780, -0.800092859615675000, -0.800122852423907460, -0.800152843231832330, +-0.800182832039375240, -0.800212818846461000, -0.800242803653014920, -0.800272786458961720, -0.800302767264226440, -0.800332746068734500, -0.800362722872410500, -0.800392697675179620, +-0.800422670476967020, -0.800452641277697770, -0.800482610077297150, -0.800512576875689770, -0.800542541672800920, -0.800572504468556100, -0.800602465262879590, -0.800632424055697010, +-0.800662380846933310, -0.800692335636513760, -0.800722288424363550, -0.800752239210407280, -0.800782187994570790, -0.800812134776778590, -0.800842079556955970, -0.800872022335028190, +-0.800901963110920320, -0.800931901884557870, -0.800961838655865450, -0.800991773424768240, -0.801021706191192060, -0.801051636955061210, -0.801081565716301400, -0.801111492474837590, +-0.801141417230595070, -0.801171339983499210, -0.801201260733474860, -0.801231179480447200, -0.801261096224341940, -0.801291010965083710, -0.801320923702597890, -0.801350834436809880, +-0.801380743167644960, -0.801410649895027860, -0.801440554618884190, -0.801470457339139350, -0.801500358055718180, -0.801530256768546170, -0.801560153477548390, -0.801590048182650340, +-0.801619940883777300, -0.801649831580854230, -0.801679720273806520, -0.801709606962559880, -0.801739491647038840, -0.801769374327169220, -0.801799255002876080, -0.801829133674084700, +-0.801859010340720930, -0.801888885002709270, -0.801918757659975450, -0.801948628312444960, -0.801978496960042640, -0.802008363602694010, -0.802038228240324560, -0.802068090872859800, +-0.802097951500224560, -0.802127810122344350, -0.802157666739145010, -0.802187521350551160, -0.802217373956488510, -0.802247224556882470, -0.802277073151658300, -0.802306919740741750, +-0.802336764324057650, -0.802366606901531610, -0.802396447473089360, -0.802426286038655730, -0.802456122598156350, -0.802485957151516600, -0.802515789698662110, -0.802545620239518250, +-0.802575448774010210, -0.802605275302063710, -0.802635099823603810, -0.802664922338556130, -0.802694742846846170, -0.802724561348399420, -0.802754377843141410, -0.802784192330997290, +-0.802814004811892580, -0.802843815285753220, -0.802873623752504040, -0.802903430212070780, -0.802933234664378940, -0.802963037109354020, -0.802992837546921740, -0.803022635977007180, +-0.803052432399535940, -0.803082226814433970, -0.803112019221626120, -0.803141809621038320, -0.803171598012595860, -0.803201384396224680, -0.803231168771849860, -0.803260951139397110, +-0.803290731498792150, -0.803320509849960170, -0.803350286192826890, -0.803380060527317920, -0.803409832853358760, -0.803439603170875370, -0.803469371479792580, -0.803499137780036450, +-0.803528902071532710, -0.803558664354206530, -0.803588424627983630, -0.803618182892789630, -0.803647939148550260, -0.803677693395191130, -0.803707445632637630, -0.803737195860815490, +-0.803766944079650660, -0.803796690289068310, -0.803826434488994050, -0.803856176679353720, -0.803885916860073270, -0.803915655031077760, -0.803945391192293140, -0.803975125343645350, +-0.804004857485059340, -0.804034587616461290, -0.804064315737776700, -0.804094041848931410, -0.804123765949851130, -0.804153488040461270, -0.804183208120687780, -0.804212926190456370, +-0.804242642249692440, -0.804272356298321940, -0.804302068336270600, -0.804331778363463920, -0.804361486379828180, -0.804391192385288440, -0.804420896379770990, -0.804450598363200990, +-0.804480298335504610, -0.804509996296607350, -0.804539692246435180, -0.804569386184914030, -0.804599078111969180, -0.804628768027526590, -0.804658455931512310, -0.804688141823851620, +-0.804717825704470700, -0.804747507573295050, -0.804777187430250730, -0.804806865275263790, -0.804836541108259310, -0.804866214929163440, -0.804895886737902360, -0.804925556534401340, +-0.804955224318586350, -0.804984890090383320, -0.805014553849718320, -0.805044215596516730, -0.805073875330704510, -0.805103533052207940, -0.805133188760952300, -0.805162842456863650, +-0.805192494139867820, -0.805222143809890880, -0.805251791466858770, -0.805281437110697000, -0.805311080741331510, -0.805340722358688700, -0.805370361962693740, -0.805399999553272910, +-0.805429635130352040, -0.805459268693857090, -0.805488900243714220, -0.805518529779848950, -0.805548157302187540, -0.805577782810655510, -0.805607406305178910, -0.805637027785683910, +-0.805666647252096360, -0.805696264704342300, -0.805725880142347470, -0.805755493566037930, -0.805785104975339840, -0.805814714370178710, -0.805844321750480930, -0.805873927116172230, +-0.805903530467178770, -0.805933131803426630, -0.805962731124841510, -0.805992328431349600, -0.806021923722877070, -0.806051516999349400, -0.806081108260693010, -0.806110697506833950, +-0.806140284737698280, -0.806169869953211600, -0.806199453153300330, -0.806229034337890730, -0.806258613506908190, -0.806288190660279120, -0.806317765797929690, -0.806347338919785720, +-0.806376910025773720, -0.806406479115819200, -0.806436046189848430, -0.806465611247787820, -0.806495174289562860, -0.806524735315100050, -0.806554294324325350, -0.806583851317165030, +-0.806613406293545280, -0.806642959253391690, -0.806672510196630780, -0.806702059123188820, -0.806731606032991430, -0.806761150925965010, -0.806790693802035830, -0.806820234661130060, +-0.806849773503173440, -0.806879310328092460, -0.806908845135813510, -0.806938377926262110, -0.806967908699364740, -0.806997437455047590, -0.807026964193236940, -0.807056488913859060, +-0.807086011616839680, -0.807115532302105310, -0.807145050969582440, -0.807174567619196590, -0.807204082250874370, -0.807233594864541940, -0.807263105460125470, -0.807292614037551590, +-0.807322120596745800, -0.807351625137635030, -0.807381127660144910, -0.807410628164202060, -0.807440126649732530, -0.807469623116662700, -0.807499117564919210, -0.807528609994427550, +-0.807558100405114330, -0.807587588796906180, -0.807617075169728800, -0.807646559523508720, -0.807676041858172210, -0.807705522173645550, -0.807735000469855470, -0.807764476746727580, +-0.807793951004188490, -0.807823423242164830, -0.807852893460582310, -0.807882361659367550, -0.807911827838446840, -0.807941291997746890, -0.807970754137193440, -0.808000214256713090, +-0.808029672356232460, -0.808059128435677400, -0.808088582494974510, -0.808118034534050180, -0.808147484552830810, -0.808176932551242900, -0.808206378529212510, -0.808235822486666030, +-0.808265264423530420, -0.808294704339731270, -0.808324142235195330, -0.808353578109849090, -0.808383011963618950, -0.808412443796431510, -0.808441873608212620, -0.808471301398889120, +-0.808500727168387720, -0.808530150916634050, -0.808559572643555160, -0.808588992349077220, -0.808618410033127180, -0.808647825695630760, -0.808677239336514810, -0.808706650955706040, +-0.808736060553130410, -0.808765468128714530, -0.808794873682385010, -0.808824277214068350, -0.808853678723691180, -0.808883078211179660, -0.808912475676460410, -0.808941871119460140, +-0.808971264540105040, -0.809000655938321710, -0.809030045314036880, -0.809059432667176730, -0.809088817997668410, -0.809118201305437770, -0.809147582590411860, -0.809176961852516640, +-0.809206339091679160, -0.809235714307825820, -0.809265087500883110, -0.809294458670777980, -0.809323827817436500, -0.809353194940785390, -0.809382560040751490, -0.809411923117261070, +-0.809441284170240750, -0.809470643199617260, -0.809500000205317090, -0.809529355187267320, -0.809558708145393770, -0.809588059079623500, -0.809617407989883350, -0.809646754876099380, +-0.809676099738198540, -0.809705442576107550, -0.809734783389753130, -0.809764122179061460, -0.809793458943959490, -0.809822793684374150, -0.809852126400231630, -0.809881457091458760, +-0.809910785757982250, -0.809940112399728740, -0.809969437016625160, -0.809998759608597800, -0.810028080175573590, -0.810057398717479390, -0.810086715234241360, -0.810116029725786670, +-0.810145342192041820, -0.810174652632933650, -0.810203961048389100, -0.810233267438334350, -0.810262571802696450, -0.810291874141402470, -0.810321174454378460, -0.810350472741551480, +-0.810379769002848360, -0.810409063238196170, -0.810438355447520960, -0.810467645630749800, -0.810496933787809960, -0.810526219918627390, -0.810555504023129370, -0.810584786101242520, +-0.810614066152893660, -0.810643344178009980, -0.810672620176517640, -0.810701894148343820, -0.810731166093415450, -0.810760436011658920, -0.810789703903001310, -0.810818969767369450, +-0.810848233604690160, -0.810877495414890510, -0.810906755197896900, -0.810936012953636600, -0.810965268682036110, -0.810994522383022390, -0.811023774056522370, -0.811053023702462910, +-0.811082271320771150, -0.811111516911373510, -0.811140760474197030, -0.811170002009168890, -0.811199241516215470, -0.811228478995263960, -0.811257714446241280, -0.811286947869074290, +-0.811316179263690260, -0.811345408630015470, -0.811374635967977210, -0.811403861277502520, -0.811433084558517930, -0.811462305810950690, -0.811491525034727660, -0.811520742229776100, +-0.811549957396022430, -0.811579170533393790, -0.811608381641817590, -0.811637590721220100, -0.811666797771528610, -0.811696002792670180, -0.811725205784571750, -0.811754406747160600, +-0.811783605680363120, -0.811812802584106600, -0.811841997458318420, -0.811871190302924870, -0.811900381117853450, -0.811929569903031000, -0.811958756658384680, -0.811987941383841670, +-0.812017124079328580, -0.812046304744772800, -0.812075483380101380, -0.812104659985240950, -0.812133834560119010, -0.812163007104662380, -0.812192177618798470, -0.812221346102453890, +-0.812250512555556030, -0.812279676978032050, -0.812308839369808690, -0.812337999730813220, -0.812367158060972700, -0.812396314360214310, -0.812425468628465320, -0.812454620865652570, +-0.812483771071703110, -0.812512919246544560, -0.812542065390103430, -0.812571209502307210, -0.812600351583082860, -0.812629491632357650, -0.812658629650058970, -0.812687765636113560, +-0.812716899590448900, -0.812746031512991740, -0.812775161403669570, -0.812804289262409440, -0.812833415089138530, -0.812862538883784350, -0.812891660646273720, -0.812920780376533700, +-0.812949898074492140, -0.812979013740075640, -0.813008127373211490, -0.813037238973827070, -0.813066348541849450, -0.813095456077206350, -0.813124561579824270, -0.813153665049630820, +-0.813182766486553520, -0.813211865890518970, -0.813240963261454790, -0.813270058599288140, -0.813299151903946640, -0.813328243175357010, -0.813357332413446880, -0.813386419618143510, +-0.813415504789373970, -0.813444587927065530, -0.813473669031145710, -0.813502748101541660, -0.813531825138181120, -0.813560900140990580, -0.813589973109897890, -0.813619044044830540, +-0.813648112945715370, -0.813677179812479780, -0.813706244645051370, -0.813735307443357200, -0.813764368207325120, -0.813793426936881840, -0.813822483631955310, -0.813851538292472250, +-0.813880590918360400, -0.813909641509547030, -0.813938690065959540, -0.813967736587525640, -0.813996781074172060, -0.814025823525826530, -0.814054863942416770, -0.814083902323869620, +-0.814112938670112580, -0.814141972981073270, -0.814171005256679070, -0.814200035496857600, -0.814229063701535690, -0.814258089870641190, -0.814287114004101810, -0.814316136101844280, +-0.814345156163796440, -0.814374174189885670, -0.814403190180039480, -0.814432204134185600, -0.814461216052250970, -0.814490225934163540, -0.814519233779850250, -0.814548239589238940, +-0.814577243362257010, -0.814606245098831950, -0.814635244798891490, -0.814664242462362690, -0.814693238089173380, -0.814722231679251170, -0.814751223232523030, -0.814780212748916990, +-0.814809200228360340, -0.814838185670780700, -0.814867169076105790, -0.814896150444262780, -0.814925129775179390, -0.814954107068783350, -0.814983082325001940, -0.815012055543762660, +-0.815041026724993340, -0.815069995868621720, -0.815098962974574850, -0.815127928042780560, -0.815156891073166690, -0.815185852065660300, -0.815214811020189330, -0.815243767936681300, +-0.815272722815063910, -0.815301675655264900, -0.815330626457211440, -0.815359575220831470, -0.815388521946052820, -0.815417466632802570, -0.815446409281008640, -0.815475349890598780, +-0.815504288461500470, -0.815533224993641670, -0.815562159486949660, -0.815591091941352380, -0.815620022356777220, -0.815648950733151910, -0.815677877070404290, -0.815706801368461960, +-0.815735723627252880, -0.815764643846704330, -0.815793562026744020, -0.815822478167300140, -0.815851392268299720, -0.815880304329670960, -0.815909214351341340, -0.815938122333238700, +-0.815967028275291110, -0.815995932177425500, -0.816024834039570270, -0.816053733861653030, -0.816082631643601290, -0.816111527385342980, -0.816140421086805850, -0.816169312747917930, +-0.816198202368606410, -0.816227089948799440, -0.816255975488424990, -0.816284858987410320, -0.816313740445683500, -0.816342619863172360, -0.816371497239804730, -0.816400372575508460, +-0.816429245870211150, -0.816458117123840640, -0.816486986336325100, -0.816515853507591930, -0.816544718637569060, -0.816573581726184330, -0.816602442773365690, -0.816631301779041310, +-0.816660158743138240, -0.816689013665584880, -0.816717866546309180, -0.816746717385238630, -0.816775566182301290, -0.816804412937425010, -0.816833257650537940, -0.816862100321567470, +-0.816890940950441790, -0.816919779537088940, -0.816948616081436430, -0.816977450583412310, -0.817006283042944650, -0.817035113459961270, -0.817063941834390350, -0.817092768166159390, +-0.817121592455196440, -0.817150414701429680, -0.817179234904786720, -0.817208053065195730, -0.817236869182584540, -0.817265683256881200, -0.817294495288013900, -0.817323305275910130, +-0.817352113220498280, -0.817380919121705960, -0.817409722979461240, -0.817438524793692390, -0.817467324564327140, -0.817496122291293760, -0.817524917974519870, -0.817553711613933750, +-0.817582503209463570, -0.817611292761036830, -0.817640080268581930, -0.817668865732026680, -0.817697649151299390, -0.817726430526328320, -0.817755209857040750, -0.817783987143365200, +-0.817812762385229930, -0.817841535582562560, -0.817870306735291370, -0.817899075843344310, -0.817927842906649880, -0.817956607925135580, -0.817985370898729800, -0.818014131827360820, +-0.818042890710956260, -0.818071647549444390, -0.818100402342753500, -0.818129155090811630, -0.818157905793546970, -0.818186654450887450, -0.818215401062761250, -0.818244145629096750, +-0.818272888149821690, -0.818301628624864330, -0.818330367054152960, -0.818359103437615750, -0.818387837775180980, -0.818416570066776260, -0.818445300312330200, -0.818474028511771200, +-0.818502754665026750, -0.818531478772025480, -0.818560200832695540, -0.818588920846965330, -0.818617638814762570, -0.818646354736015660, -0.818675068610653200, -0.818703780438602810, +-0.818732490219792890, -0.818761197954151810, -0.818789903641607750, -0.818818607282089110, -0.818847308875523710, -0.818876008421840050, -0.818904705920966650, -0.818933401372831220, +-0.818962094777362370, -0.818990786134488170, -0.819019475444137000, -0.819048162706237480, -0.819076847920717220, -0.819105531087505170, -0.819134212206528930, -0.819162891277717240, +-0.819191568300998260, -0.819220243276300500, -0.819248916203552220, -0.819277587082681500, -0.819306255913616830, -0.819334922696286720, -0.819363587430618990, -0.819392250116542380, +-0.819420910753985150, -0.819449569342875610, -0.819478225883142340, -0.819506880374713420, -0.819535532817517120, -0.819564183211482390, -0.819592831556536840, -0.819621477852609300, +-0.819650122099627950, -0.819678764297521620, -0.819707404446218150, -0.819736042545646140, -0.819764678595734320, -0.819793312596410530, -0.819821944547603380, -0.819850574449241480, +-0.819879202301253110, -0.819907828103566880, -0.819936451856110970, -0.819965073558813870, -0.819993693211604310, -0.820022310814410350, -0.820050926367160480, -0.820079539869783440, +-0.820108151322207490, -0.820136760724361480, -0.820165368076173240, -0.820193973377571610, -0.820222576628485190, -0.820251177828842160, -0.820279776978571240, -0.820308374077600820, +-0.820336969125859740, -0.820365562123275940, -0.820394153069778250, -0.820422741965295520, -0.820451328809755580, -0.820479913603087360, -0.820508496345219380, -0.820537077036080030, +-0.820565655675598360, -0.820594232263702320, -0.820622806800320630, -0.820651379285382230, -0.820679949718815080, -0.820708518100548120, -0.820737084430509740, -0.820765648708628780, +-0.820794210934833960, -0.820822771109053220, -0.820851329231215950, -0.820879885301250000, -0.820908439319084420, -0.820936991284647700, -0.820965541197868460, -0.820994089058675660, +-0.821022634866997450, -0.821051178622762560, -0.821079720325900040, -0.821108259976337960, -0.821136797574005150, -0.821165333118830440, -0.821193866610742340, -0.821222398049669790, +-0.821250927435541070, -0.821279454768285010, -0.821307980047830570, -0.821336503274106010, -0.821365024447040070, -0.821393543566561580, -0.821422060632599480, -0.821450575645082060, +-0.821479088603938150, -0.821507599509096800, -0.821536108360486180, -0.821564615158035250, -0.821593119901672830, -0.821621622591327540, -0.821650123226928540, -0.821678621808403900, +-0.821707118335682770, -0.821735612808694120, -0.821764105227366090, -0.821792595591627870, -0.821821083901408180, -0.821849570156635730, -0.821878054357239600, -0.821906536503148040, +-0.821935016594290250, -0.821963494630595040, -0.821991970611990920, -0.822020444538406950, -0.822048916409771730, -0.822077386226014560, -0.822105853987063600, -0.822134319692848110, +-0.822162783343297070, -0.822191244938338730, -0.822219704477902270, -0.822248161961916630, -0.822276617390310550, -0.822305070763013180, -0.822333522079952810, -0.822361971341058710, +-0.822390418546259940, -0.822418863695484890, -0.822447306788662620, -0.822475747825722190, -0.822504186806592320, -0.822532623731202170, -0.822561058599480250, -0.822589491411355960, +-0.822617922166757780, -0.822646350865614660, -0.822674777507855670, -0.822703202093409750, -0.822731624622206170, -0.822760045094173220, -0.822788463509240060, -0.822816879867336090, +-0.822845294168389700, -0.822873706412330040, -0.822902116599086080, -0.822930524728586850, -0.822958930800761550, -0.822987334815538650, -0.823015736772847450, -0.823044136672617220, +-0.823072534514776350, -0.823100930299254130, -0.823129324025979600, -0.823157715694881940, -0.823186105305889870, -0.823214492858932450, -0.823242878353939060, -0.823271261790838200, +-0.823299643169559170, -0.823328022490031120, -0.823356399752183000, -0.823384774955944090, -0.823413148101243000, -0.823441519188009010, -0.823469888216171510, -0.823498255185659000, +-0.823526620096400990, -0.823554982948326300, -0.823583343741364100, -0.823611702475443910, -0.823640059150494210, -0.823668413766444620, -0.823696766323223640, -0.823725116820760880, +-0.823753465258985180, -0.823781811637825930, -0.823810155957212410, -0.823838498217073110, -0.823866838417337650, -0.823895176557935430, -0.823923512638794930, -0.823951846659845670, +-0.823980178621016800, -0.824008508522237500, -0.824036836363437160, -0.824065162144544390, -0.824093485865488810, -0.824121807526199790, -0.824150127126605960, -0.824178444666636810, +-0.824206760146221520, -0.824235073565289690, -0.824263384923769830, -0.824291694221591540, -0.824320001458684230, -0.824348306634976710, -0.824376609750398390, -0.824404910804878540, +-0.824433209798346440, -0.824461506730731600, -0.824489801601962610, -0.824518094411969330, -0.824546385160680910, -0.824574673848026300, -0.824602960473935000, -0.824631245038336290, +-0.824659527541159560, -0.824687807982334210, -0.824716086361789060, -0.824744362679453720, -0.824772636935257710, -0.824800909129129840, -0.824829179260999750, -0.824857447330796690, +-0.824885713338450290, -0.824913977283889270, -0.824942239167043350, -0.824970498987842140, -0.824998756746214370, -0.825027012442089650, -0.825055266075397480, -0.825083517646067240, +-0.825111767154028340, -0.825140014599209710, -0.825168259981541200, -0.825196503300952180, -0.825224744557371710, -0.825252983750729310, -0.825281220880954570, -0.825309455947976670, +-0.825337688951725430, -0.825365919892129710, -0.825394148769119430, -0.825422375582623440, -0.825450600332571670, -0.825478823018893300, -0.825507043641517950, -0.825535262200375100, +-0.825563478695394040, -0.825591693126504160, -0.825619905493635290, -0.825648115796716490, -0.825676324035677260, -0.825704530210447320, -0.825732734320956060, -0.825760936367133210, +-0.825789136348907830, -0.825817334266209510, -0.825845530118968110, -0.825873723907112670, -0.825901915630572910, -0.825930105289278350, -0.825958292883158810, -0.825986478412143230, +-0.826014661876161460, -0.826042843275143320, -0.826071022609017880, -0.826099199877714850, -0.826127375081163740, -0.826155548219294270, -0.826183719292036160, -0.826211888299318460, +-0.826240055241071140, -0.826268220117223780, -0.826296382927705800, -0.826324543672446680, -0.826352702351376370, -0.826380858964424150, -0.826409013511520190, -0.826437165992593310, +-0.826465316407573590, -0.826493464756390850, -0.826521611038974150, -0.826549755255253430, -0.826577897405158300, -0.826606037488618720, -0.826634175505563840, -0.826662311455923390, +-0.826690445339627540, -0.826718577156605240, -0.826746706906786530, -0.826774834590101040, -0.826802960206478480, -0.826831083755848790, -0.826859205238141160, -0.826887324653285400, +-0.826915442001211700, -0.826943557281849100, -0.826971670495127540, -0.826999781640976870, -0.827027890719326810, -0.827055997730107180, -0.827084102673247390, -0.827112205548677480, +-0.827140306356326850, -0.827168405096125550, -0.827196501768003080, -0.827224596371889500, -0.827252688907714640, -0.827280779375407670, -0.827308867774898870, -0.827336954106118180, +-0.827365038368994780, -0.827393120563458930, -0.827421200689440140, -0.827449278746868360, -0.827477354735673630, -0.827505428655785360, -0.827533500507133370, -0.827561570289648050, +-0.827589638003258350, -0.827617703647894780, -0.827645767223486820, -0.827673828729964640, -0.827701888167257760, -0.827729945535296110, -0.827758000834009850, -0.827786054063328280, +-0.827814105223181660, -0.827842154313499720, -0.827870201334212520, -0.827898246285249880, -0.827926289166541540, -0.827954329978017320, -0.827982368719607620, -0.828010405391241820, +-0.828038439992849870, -0.828066472524361830, -0.828094502985707640, -0.828122531376817460, -0.828150557697620690, -0.828178581948047610, -0.828206604128028270, -0.828234624237492060, +-0.828262642276369480, -0.828290658244590140, -0.828318672142084430, -0.828346683968781860, -0.828374693724612590, -0.828402701409506780, -0.828430707023393940, -0.828458710566204350, +-0.828486712037868060, -0.828514711438314900, -0.828542708767475160, -0.828570704025278550, -0.828598697211655130, -0.828626688326535190, -0.828654677369848210, -0.828682664341524710, +-0.828710649241494400, -0.828738632069687560, -0.828766612826034250, -0.828794591510464310, -0.828822568122908110, -0.828850542663295160, -0.828878515131555970, -0.828906485527620470, +-0.828934453851418730, -0.828962420102881010, -0.828990384281937160, -0.829018346388517240, -0.829046306422551730, -0.829074264383970250, -0.829102220272703080, -0.829130174088680280, +-0.829158125831832130, -0.829186075502088890, -0.829214023099380300, -0.829241968623636530, -0.829269912074788170, -0.829297853452764630, -0.829325792757496630, -0.829353729988914100, +-0.829381665146947440, -0.829409598231526490, -0.829437529242581410, -0.829465458180042800, -0.829493385043840290, -0.829521309833904370, -0.829549232550165110, -0.829577153192552870, +-0.829605071760997960, -0.829632988255430080, -0.829660902675779740, -0.829688815021977330, -0.829716725293952680, -0.829744633491636300, -0.829772539614958230, -0.829800443663848860, +-0.829828345638238600, -0.829856245538057260, -0.829884143363235350, -0.829912039113703260, -0.829939932789390820, -0.829967824390228540, -0.829995713916146790, -0.830023601367075870, +-0.830051486742945820, -0.830079370043686930, -0.830107251269230020, -0.830135130419504600, -0.830163007494441390, -0.830190882493970770, -0.830218755418022810, -0.830246626266528230, +-0.830274495039416860, -0.830302361736619310, -0.830330226358066080, -0.830358088903686900, -0.830385949373412590, -0.830413807767173440, -0.830441664084899720, -0.830469518326522160, +-0.830497370491970480, -0.830525220581175730, -0.830553068594067520, -0.830580914530576810, -0.830608758390633750, -0.830636600174168740, -0.830664439881112490, -0.830692277511394960, +-0.830720113064946640, -0.830747946541698370, -0.830775777941579970, -0.830803607264522070, -0.830831434510455270, -0.830859259679309740, -0.830887082771016420, -0.830914903785505030, +-0.830942722722706420, -0.830970539582551290, -0.830998354364969600, -0.831026167069891960, -0.831053977697248980, -0.831081786246971270, -0.831109592718988770, -0.831137397113232310, +-0.831165199429632630, -0.831192999668119770, -0.831220797828624350, -0.831248593911076970, -0.831276387915408030, -0.831304179841548360, -0.831331969689428130, -0.831359757458977830, +-0.831387543150128530, -0.831415326762810050, -0.831443108296953230, -0.831470887752488670, -0.831498665129346890, -0.831526440427458600, -0.831554213646754080, -0.831581984787164270, +-0.831609753848619130, -0.831637520831049800, -0.831665285734386470, -0.831693048558560080, -0.831720809303501230, -0.831748567969140100, -0.831776324555407620, -0.831804079062234520, +-0.831831831489551090, -0.831859581837287920, -0.831887330105375860, -0.831915076293745500, -0.831942820402327700, -0.831970562431052500, -0.831998302379851060, -0.832026040248654010, +-0.832053776037391610, -0.832081509745994820, -0.832109241374394240, -0.832136970922520700, -0.832164698390304600, -0.832192423777676770, -0.832220147084568040, -0.832247868310908800, +-0.832275587456629770, -0.832303304521661900, -0.832331019505935690, -0.832358732409382180, -0.832386443231931560, -0.832414151973514870, -0.832441858634063060, -0.832469563213506400, +-0.832497265711775740, -0.832524966128802000, -0.832552664464515810, -0.832580360718848220, -0.832608054891729400, -0.832635746983090510, -0.832663436992862490, -0.832691124920975630, +-0.832718810767360980, -0.832746494531949380, -0.832774176214671650, -0.832801855815458290, -0.832829533334240260, -0.832857208770948710, -0.832884882125513810, -0.832912553397866740, +-0.832940222587938320, -0.832967889695659270, -0.832995554720960760, -0.833023217663773190, -0.833050878524027590, -0.833078537301654930, -0.833106193996585700, -0.833133848608751060, +-0.833161501138081740, -0.833189151584508680, -0.833216799947963050, -0.833244446228375120, -0.833272090425676290, -0.833299732539797060, -0.833327372570668360, -0.833355010518221360, +-0.833382646382386790, -0.833410280163095820, -0.833437911860279050, -0.833465541473867310, -0.833493169003792110, -0.833520794449983620, -0.833548417812373210, -0.833576039090891730, +-0.833603658285470230, -0.833631275396039760, -0.833658890422530830, -0.833686503364874710, -0.833714114223002570, -0.833741722996844900, -0.833769329686332990, -0.833796934291397670, +-0.833824536811970330, -0.833852137247981350, -0.833879735599362020, -0.833907331866043600, -0.833934926047956600, -0.833962518145032420, -0.833990108157201760, -0.834017696084395910, +-0.834045281926546030, -0.834072865683582740, -0.834100447355437310, -0.834128026942040910, -0.834155604443324260, -0.834183179859218640, -0.834210753189654990, -0.834238324434564580, +-0.834265893593878480, -0.834293460667527410, -0.834321025655442750, -0.834348588557555780, -0.834376149373797000, -0.834403708104097920, -0.834431264748389580, -0.834458819306603260, +-0.834486371778669690, -0.834513922164520140, -0.834541470464086110, -0.834569016677298100, -0.834596560804087620, -0.834624102844385710, -0.834651642798123540, -0.834679180665232500, +-0.834706716445643200, -0.834734250139287150, -0.834761781746095720, -0.834789311265999650, -0.834816838698930310, -0.834844364044818770, -0.834871887303596400, -0.834899408475194500, +-0.834926927559543900, -0.834954444556576190, -0.834981959466222110, -0.835009472288413160, -0.835036983023080490, -0.835064491670155400, -0.835091998229569370, -0.835119502701253010, +-0.835147005085137950, -0.835174505381155560, -0.835202003589236690, -0.835229499709312820, -0.835256993741315230, -0.835284485685175100, -0.835311975540824040, -0.835339463308192860, +-0.835366948987212980, -0.835394432577815870, -0.835421914079932600, -0.835449393493494450, -0.835476870818432800, -0.835504346054679160, -0.835531819202164570, -0.835559290260820320, +-0.835586759230578120, -0.835614226111368820, -0.835641690903123900, -0.835669153605774760, -0.835696614219252680, -0.835724072743489480, -0.835751529178415660, -0.835778983523963180, +-0.835806435780063420, -0.835833885946647310, -0.835861334023646490, -0.835888780010992320, -0.835916223908616200, -0.835943665716449850, -0.835971105434423990, -0.835998543062470350, +-0.836025978600520750, -0.836053412048505810, -0.836080843406357350, -0.836108272674006890, -0.836135699851385920, -0.836163124938425480, -0.836190547935057200, -0.836217968841212800, +-0.836245387656823210, -0.836272804381820170, -0.836300219016135160, -0.836327631559699580, -0.836355042012445150, -0.836382450374302920, -0.836409856645204510, -0.836437260825081740, +-0.836464662913865450, -0.836492062911487700, -0.836519460817879650, -0.836546856632973010, -0.836574250356699410, -0.836601641988990010, -0.836629031529776750, -0.836656418978990680, +-0.836683804336563530, -0.836711187602426800, -0.836738568776512200, -0.836765947858751360, -0.836793324849075540, -0.836820699747416240, -0.836848072553705520, -0.836875443267874330, +-0.836902811889854600, -0.836930178419577840, -0.836957542856975540, -0.836984905201979660, -0.837012265454521340, -0.837039623614532320, -0.837066979681944430, -0.837094333656688950, +-0.837121685538697590, -0.837149035327901970, -0.837176383024234030, -0.837203728627624930, -0.837231072138006520, -0.837258413555310610, -0.837285752879468490, -0.837313090110411880, +-0.837340425248072620, -0.837367758292382300, -0.837395089243272770, -0.837422418100675410, -0.837449744864521950, -0.837477069534744320, -0.837504392111273810, -0.837531712594042240, +-0.837559030982981460, -0.837586347278023060, -0.837613661479099100, -0.837640973586140760, -0.837668283599079850, -0.837695591517848560, -0.837722897342378150, -0.837750201072600340, +-0.837777502708447090, -0.837804802249850320, -0.837832099696741330, -0.837859395049052050, -0.837886688306714530, -0.837913979469660060, -0.837941268537820690, -0.837968555511128140, +-0.837995840389514140, -0.838023123172910830, -0.838050403861249400, -0.838077682454462010, -0.838104958952480610, -0.838132233355236680, -0.838159505662662060, -0.838186775874688710, +-0.838214043991248440, -0.838241310012273310, -0.838268573937694610, -0.838295835767444820, -0.838323095501455120, -0.838350353139657670, -0.838377608681984300, -0.838404862128367070, +-0.838432113478737810, -0.838459362733028010, -0.838486609891169850, -0.838513854953095380, -0.838541097918735990, -0.838568338788023950, -0.838595577560890980, -0.838622814237269140, +-0.838650048817090490, -0.838677281300286400, -0.838704511686789170, -0.838731739976530940, -0.838758966169443120, -0.838786190265457860, -0.838813412264507010, -0.838840632166523050, +-0.838867849971437150, -0.838895065679181710, -0.838922279289688770, -0.838949490802889940, -0.838976700218717400, -0.839003907537103080, -0.839031112757978930, -0.839058315881277330, +-0.839085516906929670, -0.839112715834868240, -0.839139912665025190, -0.839167107397332130, -0.839194300031721350, -0.839221490568124890, -0.839248679006474600, -0.839275865346702840, +-0.839303049588741250, -0.839330231732522190, -0.839357411777977400, -0.839384589725039040, -0.839411765573639170, -0.839438939323709940, -0.839466110975183640, -0.839493280527991770, +-0.839520447982066600, -0.839547613337340740, -0.839574776593745460, -0.839601937751213280, -0.839629096809676350, -0.839656253769066610, -0.839683408629316450, -0.839710561390357490, +-0.839737712052122220, -0.839764860614542810, -0.839792007077551080, -0.839819151441079330, -0.839846293705059700, -0.839873433869424590, -0.839900571934105610, -0.839927707899035260, +-0.839954841764145810, -0.839981973529369100, -0.840009103194637400, -0.840036230759882980, -0.840063356225037920, -0.840090479590034690, -0.840117600854805140, -0.840144720019281530, +-0.840171837083396380, -0.840198952047081280, -0.840226064910268970, -0.840253175672891370, -0.840280284334880890, -0.840307390896170010, -0.840334495356690250, -0.840361597716374310, +-0.840388697975154700, -0.840415796132963020, -0.840442892189731890, -0.840469986145393590, -0.840497077999880490, -0.840524167753124440, -0.840551255405058040, -0.840578340955613680, +-0.840605424404723190, -0.840632505752319180, -0.840659584998333930, -0.840686662142699710, -0.840713737185349030, -0.840740810126213820, -0.840767880965226590, -0.840794949702319940, +-0.840822016337425590, -0.840849080870476160, -0.840876143301404140, -0.840903203630141700, -0.840930261856621560, -0.840957317980775440, -0.840984372002536280, -0.841011423921836030, +-0.841038473738607180, -0.841065521452782020, -0.841092567064293250, -0.841119610573073160, -0.841146651979053920, -0.841173691282168010, -0.841200728482348060, -0.841227763579526000, +-0.841254796573634670, -0.841281827464606340, -0.841308856252373390, -0.841335882936868560, -0.841362907518023670, -0.841389929995771670, -0.841416950370045050, -0.841443968640775750, +-0.841470984807896620, -0.841497998871339910, -0.841525010831038260, -0.841552020686924360, -0.841579028438930180, -0.841606034086988640, -0.841633037631031700, -0.841660039070992290, +-0.841687038406802700, -0.841714035638395530, -0.841741030765703280, -0.841768023788658670, -0.841795014707194090, -0.841822003521241590, -0.841848990230734230, -0.841875974835604280, +-0.841902957335784460, -0.841929937731207280, -0.841956916021805450, -0.841983892207511020, -0.842010866288257160, -0.842037838263975940, -0.842064808134600050, -0.842091775900062120, +-0.842118741560294870, -0.842145705115230680, -0.842172666564802500, -0.842199625908942370, -0.842226583147583470, -0.842253538280657850, -0.842280491308098340, -0.842307442229837670, +-0.842334391045808430, -0.842361337755943350, -0.842388282360174710, -0.842415224858435670, -0.842442165250658290, -0.842469103536775510, -0.842496039716719940, -0.842522973790424290, +-0.842549905757821180, -0.842576835618843560, -0.842603763373423580, -0.842630689021494520, -0.842657612562988430, -0.842684533997838270, -0.842711453325976860, -0.842738370547336800, +-0.842765285661850830, -0.842792198669451880, -0.842819109570072110, -0.842846018363644920, -0.842872925050102360, -0.842899829629377480, -0.842926732101403120, -0.842953632466111880, +-0.842980530723436820, -0.843007426873310100, -0.843034320915665210, -0.843061212850434120, -0.843088102677550080, -0.843114990396945820, -0.843141876008553950, -0.843168759512307520, +-0.843195640908139370, -0.843222520195981980, -0.843249397375768430, -0.843276272447431200, -0.843303145410903230, -0.843330016266117370, -0.843356885013006540, -0.843383751651503480, +-0.843410616181541340, -0.843437478603052520, -0.843464338915969840, -0.843491197120226350, -0.843518053215754790, -0.843544907202488200, -0.843571759080359310, -0.843598608849301160, +-0.843625456509246360, -0.843652302060128090, -0.843679145501878950, -0.843705986834431760, -0.843732826057719710, -0.843759663171675610, -0.843786498176232410, -0.843813331071323060, +-0.843840161856880160, -0.843866990532837200, -0.843893817099126480, -0.843920641555681250, -0.843947463902434250, -0.843974284139318740, -0.844001102266267790, -0.844027918283213770, +-0.844054732190090200, -0.844081543986829550, -0.844108353673365120, -0.844135161249629730, -0.844161966715556430, -0.844188770071078290, -0.844215571316128340, -0.844242370450639320, +-0.844269167474544610, -0.844295962387776710, -0.844322755190268890, -0.844349545881954210, -0.844376334462765720, -0.844403120932636360, -0.844429905291499420, -0.844456687539287380, +-0.844483467675933960, -0.844510245701371680, -0.844537021615533680, -0.844563795418353250, -0.844590567109763210, -0.844617336689697070, -0.844644104158087330, -0.844670869514867580, +-0.844697632759970340, -0.844724393893329100, -0.844751152914876900, -0.844777909824546700, -0.844804664622271880, -0.844831417307985500, -0.844858167881620380, -0.844884916343110140, +-0.844911662692387270, -0.844938406929385270, -0.844965149054037300, -0.844991889066276540, -0.845018626966035910, -0.845045362753249040, -0.845072096427848640, -0.845098827989767880, +-0.845125557438940020, -0.845152284775298250, -0.845179009998775820, -0.845205733109305800, -0.845232454106821680, -0.845259172991256190, -0.845285889762543040, -0.845312604420614950, +-0.845339316965405320, -0.845366027396847410, -0.845392735714874390, -0.845419441919419530, -0.845446146010416340, -0.845472847987797650, -0.845499547851496950, -0.845526245601447180, +-0.845552941237581730, -0.845579634759834000, -0.845606326168137130, -0.845633015462424750, -0.845659702642629570, -0.845686387708685320, -0.845713070660524920, -0.845739751498081780, +-0.845766430221289390, -0.845793106830080800, -0.845819781324389510, -0.845846453704149010, -0.845873123969292040, -0.845899792119752640, -0.845926458155463410, -0.845953122076358090, +-0.845979783882369940, -0.846006443573432350, -0.846033101149478610, -0.846059756610442410, -0.846086409956256610, -0.846113061186854920, -0.846139710302170390, -0.846166357302136630, +-0.846193002186686920, -0.846219644955754750, -0.846246285609273620, -0.846272924147176590, -0.846299560569397480, -0.846326194875869240, -0.846352827066525590, -0.846379457141299810, +-0.846406085100125270, -0.846432710942935710, -0.846459334669664500, -0.846485956280244700, -0.846512575774610370, -0.846539193152694210, -0.846565808414430190, -0.846592421559751560, +-0.846619032588591950, -0.846645641500884950, -0.846672248296563620, -0.846698852975561910, -0.846725455537812870, -0.846752055983250100, -0.846778654311807210, -0.846805250523417710, +-0.846831844618015190, -0.846858436595533170, -0.846885026455904800, -0.846911614199064130, -0.846938199824944230, -0.846964783333478800, -0.846991364724601460, -0.847017943998245700, +-0.847044521154345030, -0.847071096192833270, -0.847097669113643590, -0.847124239916709930, -0.847150808601965450, -0.847177375169343990, -0.847203939618779160, -0.847230501950204330, +-0.847257062163553560, -0.847283620258759810, -0.847310176235757330, -0.847336730094479180, -0.847363281834859210, -0.847389831456831000, -0.847416378960328180, -0.847442924345284450, +-0.847469467611633660, -0.847496008759308970, -0.847522547788244540, -0.847549084698373420, -0.847575619489629560, -0.847602152161946790, -0.847628682715258490, -0.847655211149498600, +-0.847681737464600850, -0.847708261660498510, -0.847734783737125850, -0.847761303694415820, -0.847787821532302700, -0.847814337250719970, -0.847840850849601370, -0.847867362328880940, +-0.847893871688491840, -0.847920378928368250, -0.847946884048443540, -0.847973387048651550, -0.847999887928926110, -0.848026386689201050, -0.848052883329409870, -0.848079377849486840, +-0.848105870249365120, -0.848132360528978890, -0.848158848688261520, -0.848185334727147190, -0.848211818645569380, -0.848238300443462050, -0.848264780120759230, -0.848291257677394110, +-0.848317733113301160, -0.848344206428413680, -0.848370677622665600, -0.848397146695990980, -0.848423613648323420, -0.848450078479596750, -0.848476541189745140, -0.848503001778702080, +-0.848529460246401520, -0.848555916592777290, -0.848582370817763110, -0.848608822921293140, -0.848635272903300990, -0.848661720763720710, -0.848688166502486350, -0.848714610119531420, +-0.848741051614790190, -0.848767490988196040, -0.848793928239683140, -0.848820363369185430, -0.848846796376636850, -0.848873227261971450, -0.848899656025122850, -0.848926082666025210, +-0.848952507184612240, -0.848978929580818000, -0.849005349854576320, -0.849031768005821360, -0.849058184034486960, -0.849084597940507390, -0.849111009723816030, -0.849137419384347390, +-0.849163826922034960, -0.849190232336813010, -0.849216635628615490, -0.849243036797376340, -0.849269435843029610, -0.849295832765509460, -0.849322227564749840, -0.849348620240684250, +-0.849375010793247290, -0.849401399222372680, -0.849427785527994690, -0.849454169710047170, -0.849480551768464380, -0.849506931703180150, -0.849533309514128640, -0.849559685201243700, +-0.849586058764459580, -0.849612430203710360, -0.849638799518929950, -0.849665166710052660, -0.849691531777012620, -0.849717894719743460, -0.849744255538179890, -0.849770614232255420, +-0.849796970801904420, -0.849823325247060950, -0.849849677567659170, -0.849876027763633470, -0.849902375834917460, -0.849928721781445740, -0.849955065603152040, -0.849981407299970630, +-0.850007746871835670, -0.850034084318681330, -0.850060419640441770, -0.850086752837051480, -0.850113083908444090, -0.850139412854554080, -0.850165739675315390, -0.850192064370662410, +-0.850218386940529200, -0.850244707384850030, -0.850271025703559060, -0.850297341896590900, -0.850323655963878930, -0.850349967905358220, -0.850376277720962360, -0.850402585410625740, +-0.850428890974282650, -0.850455194411867340, -0.850481495723314330, -0.850507794908557320, -0.850534091967531050, -0.850560386900169330, -0.850586679706406560, -0.850612970386177230, +-0.850639258939415390, -0.850665545366055430, -0.850691829666031850, -0.850718111839278370, -0.850744391885729920, -0.850770669805320230, -0.850796945597983910, -0.850823219263655230, +-0.850849490802268460, -0.850875760213757990, -0.850902027498058320, -0.850928292655103610, -0.850954555684828030, -0.850980816587165960, -0.851007075362051780, -0.851033332009420000, +-0.851059586529204880, -0.851085838921341040, -0.851112089185762310, -0.851138337322403630, -0.851164583331198930, -0.851190827212082720, -0.851217068964989390, -0.851243308589853420, +-0.851269546086609210, -0.851295781455191360, -0.851322014695533810, -0.851348245807571510, -0.851374474791238290, -0.851400701646468970, -0.851426926373197830, -0.851453148971359370, +-0.851479369440888310, -0.851505587781718590, -0.851531803993785030, -0.851558018077021810, -0.851584230031363630, -0.851610439856744780, -0.851636647553099760, -0.851662853120363270, +-0.851689056558469830, -0.851715257867353470, -0.851741457046949260, -0.851767654097191130, -0.851793849018013920, -0.851820041809352000, -0.851846232471140000, -0.851872421003312510, +-0.851898607405804030, -0.851924791678548950, -0.851950973821482100, -0.851977153834537540, -0.852003331717650080, -0.852029507470754340, -0.852055681093784820, -0.852081852586676350, +-0.852108021949362970, -0.852134189181779860, -0.852160354283860940, -0.852186517255541180, -0.852212678096755050, -0.852238836807437390, -0.852264993387522480, -0.852291147836945370, +-0.852317300155640220, -0.852343450343541980, -0.852369598400584900, -0.852395744326703840, -0.852421888121833390, -0.852448029785908280, -0.852474169318863110, -0.852500306720632710, +-0.852526441991151460, -0.852552575130353980, -0.852578706138174990, -0.852604835014549310, -0.852630961759411440, -0.852657086372696220, -0.852683208854338570, -0.852709329204272560, +-0.852735447422433570, -0.852761563508755650, -0.852787677463173850, -0.852813789285622900, -0.852839898976037400, -0.852866006534352180, -0.852892111960502300, -0.852918215254421690, +-0.852944316416045960, -0.852970415445309050, -0.852996512342146240, -0.853022607106492030, -0.853048699738281350, -0.853074790237449250, -0.853100878603929800, -0.853126964837658490, +-0.853153048938569470, -0.853179130906597800, -0.853205210741678320, -0.853231288443745850, -0.853257364012735220, -0.853283437448581370, -0.853309508751218580, -0.853335577920582460, +-0.853361644956607050, -0.853387709859227410, -0.853413772628378700, -0.853439833263995420, -0.853465891766012620, -0.853491948134365350, -0.853518002368987890, -0.853544054469815740, +-0.853570104436783160, -0.853596152269825330, -0.853622197968877170, -0.853648241533873420, -0.853674282964749340, -0.853700322261439330, -0.853726359423878760, -0.853752394452002130, +-0.853778427345744380, -0.853804458105040690, -0.853830486729825750, -0.853856513220034640, -0.853882537575602510, -0.853908559796463740, -0.853934579882553830, -0.853960597833807180, +-0.853986613650159150, -0.854012627331544480, -0.854038638877898330, -0.854064648289155740, -0.854090655565251320, -0.854116660706120580, -0.854142663711697890, -0.854168664581918420, +-0.854194663316717450, -0.854220659916029800, -0.854246654379790420, -0.854272646707934790, -0.854298636900397200, -0.854324624957113250, -0.854350610878017450, -0.854376594663045270, +-0.854402576312131460, -0.854428555825211270, -0.854454533202219760, -0.854480508443092090, -0.854506481547762880, -0.854532452516167720, -0.854558421348241230, -0.854584388043918670, +-0.854610352603135110, -0.854636315025825710, -0.854662275311925730, -0.854688233461369910, -0.854714189474093610, -0.854740143350031680, -0.854766095089119380, -0.854792044691291890, +-0.854817992156484240, -0.854843937484631610, -0.854869880675669380, -0.854895821729532160, -0.854921760646155660, -0.854947697425474500, -0.854973632067424160, -0.854999564571939710, +-0.855025494938956410, -0.855051423168409320, -0.855077349260233820, -0.855103273214364860, -0.855129195030737810, -0.855155114709287620, -0.855181032249949680, -0.855206947652659030, +-0.855232860917351180, -0.855258772043961280, -0.855284681032424280, -0.855310587882675780, -0.855336492594650610, -0.855362395168284160, -0.855388295603511710, -0.855414193900268630, +-0.855440090058489980, -0.855465984078111360, -0.855491875959067620, -0.855517765701294230, -0.855543653304726370, -0.855569538769299310, -0.855595422094948430, -0.855621303281608900, +-0.855647182329216440, -0.855673059237705870, -0.855698934007012690, -0.855724806637072070, -0.855750677127819380, -0.855776545479190130, -0.855802411691119370, -0.855828275763542590, +-0.855854137696395400, -0.855879997489612630, -0.855905855143130110, -0.855931710656882670, -0.855957564030806030, -0.855983415264835350, -0.856009264358906230, -0.856035111312953960, +-0.856060956126914130, -0.856086798800721690, -0.856112639334312480, -0.856138477727621420, -0.856164313980584120, -0.856190148093136090, -0.856215980065212710, -0.856241809896749580, +-0.856267637587681650, -0.856293463137944970, -0.856319286547474360, -0.856345107816205430, -0.856370926944073910, -0.856396743931014950, -0.856422558776964160, -0.856448371481857150, +-0.856474182045629080, -0.856499990468215680, -0.856525796749552200, -0.856551600889574160, -0.856577402888217150, -0.856603202745416570, -0.856629000461108010, -0.856654796035227210, +-0.856680589467709310, -0.856706380758489820, -0.856732169907504340, -0.856757956914688480, -0.856783741779977740, -0.856809524503307610, -0.856835305084613810, -0.856861083523831610, +-0.856886859820896960, -0.856912633975744910, -0.856938405988311280, -0.856964175858531570, -0.856989943586341510, -0.857015709171676470, -0.857041472614472500, -0.857067233914664550, +-0.857092993072188780, -0.857118750086980240, -0.857144504958974980, -0.857170257688108280, -0.857196008274316080, -0.857221756717533980, -0.857247503017697370, -0.857273247174742070, +-0.857298989188603590, -0.857324729059217530, -0.857350466786519720, -0.857376202370445650, -0.857401935810931160, -0.857427667107912070, -0.857453396261323550, -0.857479123271101760, +-0.857504848137181860, -0.857530570859500020, -0.857556291437991610, -0.857582009872592480, -0.857607726163238330, -0.857633440309865210, -0.857659152312408080, -0.857684862170803420, +-0.857710569884986400, -0.857736275454892840, -0.857761978880458690, -0.857787680161619550, -0.857813379298311470, -0.857839076290469630, -0.857864771138030390, -0.857890463840929040, +-0.857916154399101520, -0.857941842812483530, -0.857967529081010930, -0.857993213204619630, -0.858018895183245480, -0.858044575016823850, -0.858070252705290910, -0.858095928248582270, +-0.858121601646633760, -0.858147272899381200, -0.858172942006760420, -0.858198608968707370, -0.858224273785158090, -0.858249936456047970, -0.858275596981312840, -0.858301255360888750, +-0.858326911594711530, -0.858352565682717010, -0.858378217624841120, -0.858403867421019820, -0.858429515071188700, -0.858455160575283930, -0.858480803933241110, -0.858506445144996300, +-0.858532084210485320, -0.858557721129644120, -0.858583355902408640, -0.858608988528715030, -0.858634619008498690, -0.858660247341695990, -0.858685873528242550, -0.858711497568074410, +-0.858737119461127410, -0.858762739207337700, -0.858788356806641340, -0.858813972258973930, -0.858839585564271760, -0.858865196722470410, -0.858890805733506070, -0.858916412597314660, +-0.858942017313832350, -0.858967619882994860, -0.858993220304738680, -0.859018818578999090, -0.859044414705712690, -0.859070008684815090, -0.859095600516242450, -0.859121190199930830, +-0.859146777735816270, -0.859172363123834710, -0.859197946363922440, -0.859223527456015160, -0.859249106400049150, -0.859274683195960230, -0.859300257843684690, -0.859325830343158350, +-0.859351400694317590, -0.859376968897098470, -0.859402534951436700, -0.859428098857268790, -0.859453660614530430, -0.859479220223157920, -0.859504777683087420, -0.859530332994254850, +-0.859555886156596620, -0.859581437170048760, -0.859606986034547100, -0.859632532750028270, -0.859658077316427850, -0.859683619733682240, -0.859709160001727590, -0.859734698120499960, +-0.859760234089935630, -0.859785767909970970, -0.859811299580541920, -0.859836829101584320, -0.859862356473034660, -0.859887881694829210, -0.859913404766903920, -0.859938925689195170, +-0.859964444461639330, -0.859989961084172250, -0.860015475556730300, -0.860040987879249540, -0.860066498051666350, -0.860092006073916890, -0.860117511945937440, -0.860143015667664160, +-0.860168517239033540, -0.860194016659981520, -0.860219513930444490, -0.860245009050358610, -0.860270502019660150, -0.860295992838285510, -0.860321481506170830, -0.860346968023252610, +-0.860372452389466800, -0.860397934604750110, -0.860423414669038380, -0.860448892582267980, -0.860474368344375520, -0.860499841955297050, -0.860525313414968960, -0.860550782723327860, +-0.860576249880309560, -0.860601714885850800, -0.860627177739887620, -0.860652638442356510, -0.860678096993193640, -0.860703553392335730, -0.860729007639718820, -0.860754459735279640, +-0.860779909678954120, -0.860805357470678990, -0.860830803110390290, -0.860856246598024620, -0.860881687933518270, -0.860907127116807720, -0.860932564147829480, -0.860957999026519700, +-0.860983431752815220, -0.861008862326651860, -0.861034290747966340, -0.861059717016695040, -0.861085141132774570, -0.861110563096141090, -0.861135982906731550, -0.861161400564481870, +-0.861186816069328790, -0.861212229421208560, -0.861237640620057700, -0.861263049665812690, -0.861288456558410130, -0.861313861297786310, -0.861339263883878160, -0.861364664316621840, +-0.861390062595953740, -0.861415458721810360, -0.861440852694128290, -0.861466244512844150, -0.861491634177894430, -0.861517021689215850, -0.861542407046744450, -0.861567790250417300, +-0.861593171300170440, -0.861618550195940580, -0.861643926937664450, -0.861669301525278430, -0.861694673958719130, -0.861720044237923480, -0.861745412362827420, -0.861770778333368010, +-0.861796142149481530, -0.861821503811104670, -0.861846863318174060, -0.861872220670626190, -0.861897575868398100, -0.861922928911425860, -0.861948279799646390, -0.861973628532996190, +-0.861998975111411770, -0.862024319534829940, -0.862049661803187320, -0.862075001916420610, -0.862100339874466550, -0.862125675677261390, -0.862151009324742310, -0.862176340816845470, +-0.862201670153507790, -0.862226997334666010, -0.862252322360256620, -0.862277645230216440, -0.862302965944482410, -0.862328284502990710, -0.862353600905678590, -0.862378915152482220, +-0.862404227243338430, -0.862429537178184270, -0.862454844956956120, -0.862480150579591150, -0.862505454046025630, -0.862530755356196610, -0.862556054510040470, -0.862581351507494270, +-0.862606646348494600, -0.862631939032978410, -0.862657229560882310, -0.862682517932143340, -0.862707804146697900, -0.862733088204483240, -0.862758370105435550, -0.862783649849491960, +-0.862808927436589210, -0.862834202866664120, -0.862859476139653860, -0.862884747255494580, -0.862910016214123670, -0.862935283015477510, -0.862960547659493150, -0.862985810146107420, +-0.863011070475257270, -0.863036328646879290, -0.863061584660910760, -0.863086838517288070, -0.863112090215948480, -0.863137339756828490, -0.863162587139865050, -0.863187832364995190, +-0.863213075432155860, -0.863238316341283670, -0.863263555092316000, -0.863288791685189240, -0.863314026119840650, -0.863339258396206840, -0.863364488514224870, -0.863389716473831670, +-0.863414942274964180, -0.863440165917559570, -0.863465387401554320, -0.863490606726885820, -0.863515823893490580, -0.863541038901305740, -0.863566251750268350, -0.863591462440315260, +-0.863616670971383620, -0.863641877343410470, -0.863667081556332430, -0.863692283610086880, -0.863717483504610420, -0.863742681239840220, -0.863767876815713320, -0.863793070232166780, +-0.863818261489137540, -0.863843450586562870, -0.863868637524379590, -0.863893822302524430, -0.863919004920934760, -0.863944185379547540, -0.863969363678299910, -0.863994539817128810, +-0.864019713795971640, -0.864044885614765000, -0.864070055273446270, -0.864095222771952280, -0.864120388110220180, -0.864145551288187150, -0.864170712305790120, -0.864195871162966480, +-0.864221027859653270, -0.864246182395787320, -0.864271334771306020, -0.864296484986146310, -0.864321633040245340, -0.864346778933540280, -0.864371922665968300, -0.864397064237466650, +-0.864422203647972180, -0.864447340897422480, -0.864472475985754050, -0.864497608912904610, -0.864522739678811100, -0.864547868283410680, -0.864572994726640620, -0.864598119008438300, +-0.864623241128740450, -0.864648361087484660, -0.864673478884607880, -0.864698594520047270, -0.864723707993740210, -0.864748819305623970, -0.864773928455635610, -0.864799035443712620, +-0.864824140269791930, -0.864849242933811050, -0.864874343435706790, -0.864899441775416670, -0.864924537952878050, -0.864949631968027990, -0.864974723820804090, -0.864999813511143190, +-0.865024901038983000, -0.865049986404260340, -0.865075069606912610, -0.865100150646877290, -0.865125229524091540, -0.865150306238492760, -0.865175380790018430, -0.865200453178605500, +-0.865225523404191570, -0.865250591466713570, -0.865275657366109120, -0.865300721102315600, -0.865325782675270270, -0.865350842084910420, -0.865375899331173760, -0.865400954413997230, +-0.865426007333318200, -0.865451058089074080, -0.865476106681202450, -0.865501153109640380, -0.865526197374325570, -0.865551239475195410, -0.865576279412186960, -0.865601317185238030, +-0.865626352794285570, -0.865651386239267180, -0.865676417520120370, -0.865701446636782500, -0.865726473589191080, -0.865751498377283710, -0.865776521000997330, -0.865801541460269770, +-0.865826559755038190, -0.865851575885240310, -0.865876589850813390, -0.865901601651695050, -0.865926611287822890, -0.865951618759134070, -0.865976624065566300, -0.866001627207056870, +-0.866026628183543260, -0.866051626994963190, -0.866076623641253930, -0.866101618122353200, -0.866126610438198610, -0.866151600588727310, -0.866176588573877140, -0.866201574393585360, +-0.866226558047789700, -0.866251539536427530, -0.866276518859436570, -0.866301496016754210, -0.866326471008318500, -0.866351443834066260, -0.866376414493935650, -0.866401382987863840, +-0.866426349315788550, -0.866451313477647370, -0.866476275473377910, -0.866501235302918000, -0.866526192966204810, -0.866551148463176270, -0.866576101793769760, -0.866601052957922890, +-0.866626001955573380, -0.866650948786658940, -0.866675893451117170, -0.866700835948885810, -0.866725776279902100, -0.866750714444104230, -0.866775650441429350, -0.866800584271815280, +-0.866825515935199850, -0.866850445431520570, -0.866875372760715250, -0.866900297922721610, -0.866925220917477260, -0.866950141744919690, -0.866975060404986730, -0.866999976897616100, +-0.867024891222745510, -0.867049803380312790, -0.867074713370255660, -0.867099621192511600, -0.867124526847018680, -0.867149430333714280, -0.867174331652536210, -0.867199230803422430, +-0.867224127786310530, -0.867249022601138230, -0.867273915247843700, -0.867298805726364090, -0.867323694036637670, -0.867348580178601950, -0.867373464152194630, -0.867398345957353660, +-0.867423225594016860, -0.867448103062122280, -0.867472978361607080, -0.867497851492409770, -0.867522722454467600, -0.867547591247718520, -0.867572457872100580, -0.867597322327551380, +-0.867622184614008970, -0.867647044731411300, -0.867671902679695850, -0.867696758458800790, -0.867721612068663610, -0.867746463509222470, -0.867771312780415080, -0.867796159882179400, +-0.867821004814453460, -0.867845847577175090, -0.867870688170281900, -0.867895526593712270, -0.867920362847403590, -0.867945196931294020, -0.867970028845321370, -0.867994858589423710, +-0.868019686163539190, -0.868044511567605090, -0.868069334801560010, -0.868094155865341440, -0.868118974758887330, -0.868143791482135940, -0.868168606035024990, -0.868193418417492540, +-0.868218228629476730, -0.868243036670915180, -0.868267842541746270, -0.868292646241907500, -0.868317447771337130, -0.868342247129973100, -0.868367044317753470, -0.868391839334616170, +-0.868416632180499580, -0.868441422855341430, -0.868466211359079420, -0.868490997691651940, -0.868515781852996940, -0.868540563843052560, -0.868565343661756640, -0.868590121309047670, +-0.868614896784863140, -0.868639670089141670, -0.868664441221820630, -0.868689210182838620, -0.868713976972133590, -0.868738741589643590, -0.868763504035306780, -0.868788264309061310, +-0.868813022410845020, -0.868837778340596500, -0.868862532098253150, -0.868887283683753560, -0.868912033097035800, -0.868936780338037900, -0.868961525406698240, -0.868986268302954560, +-0.869011009026745440, -0.869035747578008610, -0.869060483956682450, -0.869085218162705010, -0.869109950196014560, -0.869134680056549150, -0.869159407744247380, -0.869184133259046750, +-0.869208856600886090, -0.869233577769703000, -0.869258296765436090, -0.869283013588023290, -0.869307728237403100, -0.869332440713513450, -0.869357151016293070, -0.869381859145679450, +-0.869406565101611520, -0.869431268884026890, -0.869455970492864050, -0.869480669928061390, -0.869505367189556950, -0.869530062277289350, -0.869554755191196400, -0.869579445931216830, +-0.869604134497288350, -0.869628820889349560, -0.869653505107338630, -0.869678187151194050, -0.869702867020853980, -0.869727544716256910, -0.869752220237340890, -0.869776893584044420, +-0.869801564756305550, -0.869826233754062650, -0.869850900577254340, -0.869875565225818660, -0.869900227699694330, -0.869924887998819170, -0.869949546123132130, -0.869974202072570920, +-0.869998855847074150, -0.870023507446580300, -0.870048156871027660, -0.870072804120354700, -0.870097449194499940, -0.870122092093401190, -0.870146732816997610, -0.870171371365226930, +-0.870196007738027740, -0.870220641935338660, -0.870245273957097830, -0.870269903803243870, -0.870294531473715490, -0.870319156968450410, -0.870343780287387680, -0.870368401430465340, +-0.870393020397622010, -0.870417637188796060, -0.870442251803925980, -0.870466864242950610, -0.870491474505807770, -0.870516082592436510, -0.870540688502774770, -0.870565292236761380, +-0.870589893794334710, -0.870614493175433380, -0.870639090379995760, -0.870663685407960690, -0.870688278259266090, -0.870712868933851030, -0.870737457431653650, -0.870762043752612570, +-0.870786627896666390, -0.870811209863753710, -0.870835789653812920, -0.870860367266782840, -0.870884942702601970, -0.870909515961208470, -0.870934087042541160, -0.870958655946538650, +-0.870983222673139430, -0.871007787222282230, -0.871032349593905740, -0.871056909787948250, -0.871081467804348590, -0.871106023643045120, -0.871130577303976580, -0.871155128787081570, +-0.871179678092298680, -0.871204225219566750, -0.871228770168824380, -0.871253312940009850, -0.871277853533062310, -0.871302391947919920, -0.871326928184521510, -0.871351462242805800, +-0.871375994122711380, -0.871400523824177210, -0.871425051347141540, -0.871449576691543440, -0.871474099857321270, -0.871498620844413760, -0.871523139652759740, -0.871547656282297800, +-0.871572170732966780, -0.871596683004705610, -0.871621193097452450, -0.871645701011146470, -0.871670206745726150, -0.871694710301130220, -0.871719211677297490, -0.871743710874166800, +-0.871768207891676750, -0.871792702729766500, -0.871817195388374210, -0.871841685867439150, -0.871866174166899710, -0.871890660286694820, -0.871915144226763310, -0.871939625987043890, +-0.871964105567475610, -0.871988582967996860, -0.872013058188546910, -0.872037531229064020, -0.872062002089487360, -0.872086470769755650, -0.872110937269807820, -0.872135401589582580, +-0.872159863729019100, -0.872184323688055760, -0.872208781466631830, -0.872233237064685700, -0.872257690482156510, -0.872282141718983110, -0.872306590775104310, -0.872331037650458940, +-0.872355482344986390, -0.872379924858625030, -0.872404365191313590, -0.872428803342991330, -0.872453239313596970, -0.872477673103069670, -0.872502104711348040, -0.872526534138371450, +-0.872550961384078280, -0.872575386448407820, -0.872599809331298880, -0.872624230032690300, -0.872648648552521110, -0.872673064890730380, -0.872697479047256920, -0.872721891022040010, +-0.872746300815018140, -0.872770708426130800, -0.872795113855316380, -0.872819517102514260, -0.872843918167663380, -0.872868317050702560, -0.872892713751571290, -0.872917108270207960, +-0.872941500606552070, -0.872965890760542210, -0.872990278732117650, -0.873014664521217340, -0.873039048127780440, -0.873063429551745980, -0.873087808793053030, -0.873112185851640410, +-0.873136560727447500, -0.873160933420413010, -0.873185303930476220, -0.873209672257576060, -0.873234038401651810, -0.873258402362642410, -0.873282764140487220, -0.873307123735124980, +-0.873331481146495060, -0.873355836374536290, -0.873380189419187940, -0.873404540280389050, -0.873428888958078800, -0.873453235452196550, -0.873477579762681030, -0.873501921889471840, +-0.873526261832507590, -0.873550599591727650, -0.873574935167071190, -0.873599268558477360, -0.873623599765885440, -0.873647928789234810, -0.873672255628463960, -0.873696580283512820, +-0.873720902754320020, -0.873745223040824910, -0.873769541142966680, -0.873793857060684690, -0.873818170793917990, -0.873842482342606200, -0.873866791706688130, -0.873891098886102840, +-0.873915403880789810, -0.873939706690688320, -0.873964007315737530, -0.873988305755876720, -0.874012602011045360, -0.874036896081182290, -0.874061187966227230, -0.874085477666118880, +-0.874109765180796860, -0.874134050510200540, -0.874158333654268980, -0.874182614612941670, -0.874206893386157980, -0.874231169973856860, -0.874255444375978020, -0.874279716592460400, +-0.874303986623243490, -0.874328254468266560, -0.874352520127469000, -0.874376783600790410, -0.874401044888169610, -0.874425303989546320, -0.874449560904859700, -0.874473815634049130, +-0.874498068177054000, -0.874522318533813680, -0.874546566704267560, -0.874570812688355350, -0.874595056486015760, -0.874619298097188860, -0.874643537521813450, -0.874667774759829150, +-0.874692009811175450, -0.874716242675791730, -0.874740473353617490, -0.874764701844592100, -0.874788928148654830, -0.874813152265745520, -0.874837374195803100, -0.874861593938767170, +-0.874885811494577340, -0.874910026863172870, -0.874934240044493610, -0.874958451038478580, -0.874982659845067510, -0.875006866464199670, -0.875031070895814670, -0.875055273139851990, +-0.875079473196251120, -0.875103671064951570, -0.875127866745893050, -0.875152060239014600, -0.875176251544256270, -0.875200440661557110, -0.875224627590856840, -0.875248812332094950, +-0.875272994885211040, -0.875297175250144720, -0.875321353426835590, -0.875345529415223140, -0.875369703215246650, -0.875393874826845830, -0.875418044249960390, -0.875442211484529830, +-0.875466376530493750, -0.875490539387791870, -0.875514700056363560, -0.875538858536148660, -0.875563014827086320, -0.875587168929116480, -0.875611320842178740, -0.875635470566212710, +-0.875659618101158000, -0.875683763446954420, -0.875707906603541250, -0.875732047570858540, -0.875756186348845560, -0.875780322937442010, -0.875804457336587630, -0.875828589546222220, +-0.875852719566285520, -0.875876847396716780, -0.875900973037456070, -0.875925096488442860, -0.875949217749616760, -0.875973336820917710, -0.875997453702285320, -0.876021568393659190, +-0.876045680894979470, -0.876069791206185330, -0.876093899327216820, -0.876118005258013420, -0.876142108998515080, -0.876166210548661390, -0.876190309908392200, -0.876214407077647190, +-0.876238502056366440, -0.876262594844489100, -0.876286685441955650, -0.876310773848705150, -0.876334860064677760, -0.876358944089813190, -0.876383025924051260, -0.876407105567332030, +-0.876431183019594880, -0.876455258280779860, -0.876479331350826560, -0.876503402229674930, -0.876527470917264680, -0.876551537413535860, -0.876575601718428190, -0.876599663831881700, +-0.876623723753835900, -0.876647781484230950, -0.876671837023006330, -0.876695890370102090, -0.876719941525458180, -0.876743990489014410, -0.876768037260710840, -0.876792081840487070, +-0.876816124228283260, -0.876840164424038890, -0.876864202427694140, -0.876888238239188820, -0.876912271858462990, -0.876936303285456350, -0.876960332520109300, -0.876984359562361200, +-0.877008384412152340, -0.877032407069422320, -0.877056427534111280, -0.877080445806159180, -0.877104461885506060, -0.877128475772091630, -0.877152487465856390, -0.877176496966739610, +-0.877200504274681770, -0.877224509389622490, -0.877248512311502030, -0.877272513040260220, -0.877296511575837100, -0.877320507918172950, -0.877344502067207270, -0.877368494022880640, +-0.877392483785132460, -0.877416471353903100, -0.877440456729132620, -0.877464439910760950, -0.877488420898728140, -0.877512399692974570, -0.877536376293439720, -0.877560350700064220, +-0.877584322912787650, -0.877608292931550180, -0.877632260756291970, -0.877656226386953180, -0.877680189823473840, -0.877704151065794140, -0.877728110113853880, -0.877752066967593560, +-0.877776021626952900, -0.877799974091872160, -0.877823924362291510, -0.877847872438151100, -0.877871818319391100, -0.877895762005951430, -0.877919703497772490, -0.877943642794794200, +-0.877967579896956730, -0.877991514804200230, -0.878015447516464990, -0.878039378033691250, -0.878063306355819200, -0.878087232482788640, -0.878111156414540180, -0.878135078151013770, +-0.878158997692149560, -0.878182915037887810, -0.878206830188168810, -0.878230743142933030, -0.878254653902120100, -0.878278562465670710, -0.878302468833524810, -0.878326373005622660, +-0.878350274981904540, -0.878374174762310830, -0.878398072346781690, -0.878421967735257490, -0.878445860927678180, -0.878469751923984470, -0.878493640724116180, -0.878517527328013800, +-0.878541411735617510, -0.878565293946867780, -0.878589173961704770, -0.878613051780069100, -0.878636927401900470, -0.878660800827139820, -0.878684672055726980, -0.878708541087602430, +-0.878732407922706460, -0.878756272560979550, -0.878780135002362180, -0.878803995246794200, -0.878827853294216530, -0.878851709144568890, -0.878875562797792110, -0.878899414253826340, +-0.878923263512612070, -0.878947110574089590, -0.878970955438199590, -0.878994798104882010, -0.879018638574077580, -0.879042476845726450, -0.879066312919769000, -0.879090146796145830, +-0.879113978474797330, -0.879137807955663870, -0.879161635238686070, -0.879185460323804180, -0.879209283210958480, -0.879233103900089460, -0.879256922391137730, -0.879280738684043770, +-0.879304552778747860, -0.879328364675190930, -0.879352174373312700, -0.879375981873054320, -0.879399787174355850, -0.879423590277157770, -0.879447391181400810, -0.879471189887025330, +-0.879494986393971940, -0.879518780702181260, -0.879542572811593430, -0.879566362722149280, -0.879590150433789190, -0.879613935946453540, -0.879637719260083160, -0.879661500374618430, +-0.879685279290000180, -0.879709056006168550, -0.879732830523064500, -0.879756602840628180, -0.879780372958800290, -0.879804140877521460, -0.879827906596732270, -0.879851670116373330, +-0.879875431436385470, -0.879899190556708840, -0.879922947477284390, -0.879946702198052380, -0.879970454718953630, -0.879994205039928650, -0.880017953160918240, -0.880041699081862920, +-0.880065442802703600, -0.880089184323380460, -0.880112923643834530, -0.880136660764006100, -0.880160395683835970, -0.880184128403264990, -0.880207858922233520, -0.880231587240682730, +-0.880255313358552780, -0.880279037275784710, -0.880302758992318800, -0.880326478508095980, -0.880350195823057070, -0.880373910937142570, -0.880397623850293300, -0.880421334562450310, +-0.880445043073553650, -0.880468749383544580, -0.880492453492363490, -0.880516155399951210, -0.880539855106248550, -0.880563552611196340, -0.880587247914735190, -0.880610941016806150, +-0.880634631917349700, -0.880658320616306440, -0.880682007113617440, -0.880705691409223500, -0.880729373503065240, -0.880753053395083580, -0.880776731085219480, -0.880800406573413300, +-0.880824079859606310, -0.880847750943739020, -0.880871419825752230, -0.880895086505587010, -0.880918750983183950, -0.880942413258484100, -0.880966073331428400, -0.880989731201957340, +-0.881013386870012070, -0.881037040335533210, -0.881060691598461680, -0.881084340658738530, -0.881107987516304370, -0.881131632171100580, -0.881155274623067530, -0.881178914872146390, +-0.881202552918277760, -0.881226188761402800, -0.881249822401462430, -0.881273453838397390, -0.881297083072148710, -0.881320710102657670, -0.881344334929864530, -0.881367957553710780, +-0.881391577974136920, -0.881415196191084100, -0.881438812204493380, -0.881462426014305580, -0.881486037620461740, -0.881509647022902910, -0.881533254221569810, -0.881556859216403810, +-0.881580462007345520, -0.881604062594335990, -0.881627660977316260, -0.881651257156227500, -0.881674851131010740, -0.881698442901606590, -0.881722032467956550, -0.881745619830001330, +-0.881769204987681960, -0.881792787940939630, -0.881816368689715360, -0.881839947233950090, -0.881863523573585220, -0.881887097708561220, -0.881910669638819810, -0.881934239364301490, +-0.881957806884947510, -0.881981372200699170, -0.882004935311497260, -0.882028496217283080, -0.882052054917997760, -0.882075611413582370, -0.882099165703977840, -0.882122717789125210, +-0.882146267668965980, -0.882169815343440970, -0.882193360812491440, -0.882216904076058680, -0.882240445134083510, -0.882263983986507410, -0.882287520633271090, -0.882311055074316060, +-0.882334587309583360, -0.882358117339014150, -0.882381645162549690, -0.882405170780131360, -0.882428694191699890, -0.882452215397196760, -0.882475734396563020, -0.882499251189739930, +-0.882522765776668660, -0.882546278157290480, -0.882569788331546870, -0.882593296299378550, -0.882616802060727230, -0.882640305615533640, -0.882663806963739360, -0.882687306105285450, +-0.882710803040113400, -0.882734297768164260, -0.882757790289379620, -0.882781280603700310, -0.882804768711067940, -0.882828254611423450, -0.882851738304708420, -0.882875219790863920, +-0.882898699069831430, -0.882922176141552220, -0.882945651005967780, -0.882969123663018940, -0.882992594112647520, -0.883016062354794460, -0.883039528389401140, -0.883062992216409160, +-0.883086453835759570, -0.883109913247394070, -0.883133370451253620, -0.883156825447279910, -0.883180278235414010, -0.883203728815597280, -0.883227177187771330, -0.883250623351877430, +-0.883274067307856960, -0.883297509055651520, -0.883320948595202160, -0.883344385926450480, -0.883367821049337750, -0.883391253963805470, -0.883414684669795000, -0.883438113167247850, +-0.883461539456105620, -0.883484963536309340, -0.883508385407800860, -0.883531805070521200, -0.883555222524412100, -0.883578637769414920, -0.883602050805471050, -0.883625461632522090, +-0.883648870250509750, -0.883672276659374980, -0.883695680859059700, -0.883719082849505070, -0.883742482630652690, -0.883765880202444070, -0.883789275564820900, -0.883812668717724350, +-0.883836059661096460, -0.883859448394878180, -0.883882834919011540, -0.883906219233437480, -0.883929601338097950, -0.883952981232934420, -0.883976358917888390, -0.883999734392901690, +-0.884023107657915470, -0.884046478712871790, -0.884069847557711560, -0.884093214192376740, -0.884116578616808920, -0.884139940830949600, -0.884163300834740480, -0.884186658628123290, +-0.884210014211039290, -0.884233367583430410, -0.884256718745237920, -0.884280067696403550, -0.884303414436869110, -0.884326758966576200, -0.884350101285466210, -0.884373441393481290, +-0.884396779290562600, -0.884420114976652070, -0.884443448451691090, -0.884466779715621490, -0.884490108768384960, -0.884513435609923130, -0.884536760240177910, -0.884560082659090590, +-0.884583402866603310, -0.884606720862657350, -0.884630036647194420, -0.884653350220156560, -0.884676661581485280, -0.884699970731122280, -0.884723277669009600, -0.884746582395088630, +-0.884769884909301310, -0.884793185211589010, -0.884816483301893890, -0.884839779180157440, -0.884863072846321600, -0.884886364300328300, -0.884909653542118810, -0.884932940571635520, +-0.884956225388819570, -0.884979507993613020, -0.885002788385957810, -0.885026066565795520, -0.885049342533068220, -0.885072616287717610, -0.885095887829685290, -0.885119157158913540, +-0.885142424275343620, -0.885165689178917690, -0.885188951869577470, -0.885212212347264880, -0.885235470611921870, -0.885258726663490260, -0.885281980501911650, -0.885305232127128310, +-0.885328481539081720, -0.885351728737713950, -0.885374973722966810, -0.885398216494782230, -0.885421457053102270, -0.885444695397868520, -0.885467931529023260, -0.885491165446507860, +-0.885514397150264700, -0.885537626640235390, -0.885560853916362080, -0.885584078978586710, -0.885607301826851320, -0.885630522461097410, -0.885653740881267360, -0.885676957087302870, +-0.885700171079145890, -0.885723382856738570, -0.885746592420022740, -0.885769799768940440, -0.885793004903433820, -0.885816207823444720, -0.885839408528914960, -0.885862607019786590, +-0.885885803296001750, -0.885908997357502390, -0.885932189204230450, -0.885955378836128400, -0.885978566253137640, -0.886001751455200550, -0.886024934442259050, -0.886048115214255080, +-0.886071293771130920, -0.886094470112828490, -0.886117644239289850, -0.886140816150457370, -0.886163985846272540, -0.886187153326678080, -0.886210318591615480, -0.886233481641027110, +-0.886256642474854920, -0.886279801093041280, -0.886302957495528230, -0.886326111682257610, -0.886349263653171900, -0.886372413408212930, -0.886395560947322860, -0.886418706270443830, +-0.886441849377518130, -0.886464990268487680, -0.886488128943295100, -0.886511265401881960, -0.886534399644190780, -0.886557531670163490, -0.886580661479742350, -0.886603789072869520, +-0.886626914449487270, -0.886650037609537640, -0.886673158552963250, -0.886696277279705680, -0.886719393789707540, -0.886742508082910890, -0.886765620159257860, -0.886788730018690850, +-0.886811837661151900, -0.886834943086583620, -0.886858046294927820, -0.886881147286127100, -0.886904246060123300, -0.886927342616858900, -0.886950436956276070, -0.886973529078317170, +-0.886996618982924480, -0.887019706670040490, -0.887042792139607020, -0.887065875391566670, -0.887088956425861500, -0.887112035242433980, -0.887135111841226290, -0.887158186222180900, +-0.887181258385239980, -0.887204328330346130, -0.887227396057441500, -0.887250461566468140, -0.887273524857368550, -0.887296585930085310, -0.887319644784560490, -0.887342701420736570, +-0.887365755838556150, -0.887388808037961050, -0.887411858018894220, -0.887434905781297580, -0.887457951325113630, -0.887480994650284740, -0.887504035756753410, -0.887527074644462010, +-0.887550111313353040, -0.887573145763368650, -0.887596177994451670, -0.887619208006543920, -0.887642235799588230, -0.887665261373526970, -0.887688284728302520, -0.887711305863857490, +-0.887734324780134140, -0.887757341477075080, -0.887780355954622460, -0.887803368212718990, -0.887826378251307060, -0.887849386070329260, -0.887872391669727980, -0.887895395049445810, +-0.887918396209425030, -0.887941395149608460, -0.887964391869938250, -0.887987386370357010, -0.888010378650807340, -0.888033368711231620, -0.888056356551572560, -0.888079342171772870, +-0.888102325571774490, -0.888125306751520570, -0.888148285710953170, -0.888171262450015100, -0.888194236968648850, -0.888217209266796930, -0.888240179344402250, -0.888263147201406980, +-0.888286112837753940, -0.888309076253385510, -0.888332037448244290, -0.888354996422273110, -0.888377953175414350, -0.888400907707610710, -0.888423860018805020, -0.888446810108939440, +-0.888469757977957130, -0.888492703625800130, -0.888515647052411370, -0.888538588257733570, -0.888561527241709230, -0.888584464004281150, -0.888607398545392060, -0.888630330864984440, +-0.888653260963000790, -0.888676188839384040, -0.888699114494076790, -0.888722037927021760, -0.888744959138161650, -0.888767878127439290, -0.888790794894797180, -0.888813709440178120, +-0.888836621763524630, -0.888859531864779620, -0.888882439743885810, -0.888905345400785810, -0.888928248835422540, -0.888951150047738840, -0.888974049037676960, -0.888996945805180290, +-0.889019840350190990, -0.889042732672651990, -0.889065622772506340, -0.889088510649696520, -0.889111396304165690, -0.889134279735856130, -0.889157160944711090, -0.889180039930672960, +-0.889202916693684680, -0.889225791233689170, -0.889248663550629040, -0.889271533644447440, -0.889294401515087100, -0.889317267162490600, -0.889340130586601110, -0.889362991787361110, +-0.889385850764713550, -0.889408707518601460, -0.889431562048967560, -0.889454414355754790, -0.889477264438906180, -0.889500112298364230, -0.889522957934072100, -0.889545801345972500, +-0.889568642534008360, -0.889591481498122500, -0.889614318238258090, -0.889637152754358060, -0.889659985046364900, -0.889682815114221980, -0.889705642957871800, -0.889728468577257510, +-0.889751291972322170, -0.889774113143008470, -0.889796932089259580, -0.889819748811018440, -0.889842563308227860, -0.889865375580831010, -0.889888185628770480, -0.889910993451989540, +-0.889933799050431130, -0.889956602424038180, -0.889979403572753740, -0.890002202496521070, -0.890024999195282770, -0.890047793668981790, -0.890070585917561390, -0.890093375940964490, +-0.890116163739134160, -0.890138949312013430, -0.890161732659545460, -0.890184513781673070, -0.890207292678339530, -0.890230069349487560, -0.890252843795060420, -0.890275616015001160, +-0.890298386009252930, -0.890321153777758670, -0.890343919320461750, -0.890366682637304780, -0.890389443728231370, -0.890412202593184100, -0.890434959232106360, -0.890457713644941200, +-0.890480465831631760, -0.890503215792121440, -0.890525963526352720, -0.890548709034269410, -0.890571452315814140, -0.890594193370930150, -0.890616932199560730, -0.890639668801648910, +-0.890662403177138070, -0.890685135325971270, -0.890707865248091530, -0.890730592943442260, -0.890753318411966370, -0.890776041653607130, -0.890798762668307820, -0.890821481456011590, +-0.890844198016661700, -0.890866912350201430, -0.890889624456573710, -0.890912334335722140, -0.890935041987589550, -0.890957747412119420, -0.890980450609254790, -0.891003151578939170, +-0.891025850321115700, -0.891048546835727540, -0.891071241122718180, -0.891093933182030450, -0.891116623013607940, -0.891139310617393930, -0.891161995993331570, -0.891184679141364230, +-0.891207360061435420, -0.891230038753488050, -0.891252715217465740, -0.891275389453311420, -0.891298061460968570, -0.891320731240380690, -0.891343398791490940, -0.891366064114242910, +-0.891388727208579420, -0.891411388074444420, -0.891434046711780730, -0.891456703120531820, -0.891479357300641320, -0.891502009252052360, -0.891524658974708340, -0.891547306468552850, +-0.891569951733528930, -0.891592594769580420, -0.891615235576650120, -0.891637874154681760, -0.891660510503618720, -0.891683144623404370, -0.891705776513982200, -0.891728406175295810, +-0.891751033607288130, -0.891773658809903110, -0.891796281783083790, -0.891818902526773650, -0.891841521040916410, -0.891864137325455220, -0.891886751380333910, -0.891909363205495630, +-0.891931972800884100, -0.891954580166442360, -0.891977185302114230, -0.891999788207843090, -0.892022388883572550, -0.892044987329245980, -0.892067583544807200, -0.892090177530199260, +-0.892112769285365980, -0.892135358810250630, -0.892157946104796930, -0.892180531168948350, -0.892203114002648400, -0.892225694605840670, -0.892248272978468980, -0.892270849120476490, +-0.892293423031806810, -0.892315994712403420, -0.892338564162210130, -0.892361131381170460, -0.892383696369227870, -0.892406259126326320, -0.892428819652408940, -0.892451377947419690, +-0.892473934011301710, -0.892496487843999040, -0.892519039445455080, -0.892541588815613520, -0.892564135954417970, -0.892586680861812250, -0.892609223537739640, -0.892631763982144280, +-0.892654302194969220, -0.892676838176158390, -0.892699371925655520, -0.892721903443404190, -0.892744432729348340, -0.892766959783431120, -0.892789484605596820, -0.892812007195788460, +-0.892834527553950210, -0.892857045680025550, -0.892879561573958420, -0.892902075235692210, -0.892924586665171160, -0.892947095862338340, -0.892969602827138000, -0.892992107559513530, +-0.893014610059408740, -0.893037110326767360, -0.893059608361533310, -0.893082104163650190, -0.893104597733061940, -0.893127089069712170, -0.893149578173544680, -0.893172065044503190, +-0.893194549682531540, -0.893217032087573410, -0.893239512259572770, -0.893261990198473520, -0.893284465904219170, -0.893306939376753760, -0.893329410616020780, -0.893351879621964380, +-0.893374346394528280, -0.893396810933656190, -0.893419273239292160, -0.893441733311380220, -0.893464191149863640, -0.893486646754686810, -0.893509100125793100, -0.893531551263126780, +-0.893554000166631450, -0.893576446836251260, -0.893598891271929820, -0.893621333473611390, -0.893643773441239690, -0.893666211174758310, -0.893688646674111300, -0.893711079939242810, +-0.893733510970096570, -0.893755939766616600, -0.893778366328746960, -0.893800790656431140, -0.893823212749613630, -0.893845632608237790, -0.893868050232248020, -0.893890465621588030, +-0.893912878776201850, -0.893935289696033530, -0.893957698381027120, -0.893980104831126330, -0.894002509046275430, -0.894024911026418120, -0.894047310771498460, -0.894069708281460600, +-0.894092103556248460, -0.894114496595806220, -0.894136887400077570, -0.894159275969006790, -0.894181662302537820, -0.894204046400614570, -0.894226428263181220, -0.894248807890181800, +-0.894271185281560350, -0.894293560437261160, -0.894315933357227810, -0.894338304041404910, -0.894360672489736050, -0.894383038702165400, -0.894405402678637220, -0.894427764419095550, +-0.894450123923484550, -0.894472481191748270, -0.894494836223830750, -0.894517189019676250, -0.894539539579228600, -0.894561887902432070, -0.894584233989230810, -0.894606577839568980, +-0.894628919453390960, -0.894651258830640340, -0.894673595971261840, -0.894695930875199160, -0.894718263542396700, -0.894740593972798480, -0.894762922166348900, -0.894785248122991870, +-0.894807571842672010, -0.894829893325333030, -0.894852212570919400, -0.894874529579375190, -0.894896844350644540, -0.894919156884671830, -0.894941467181401220, -0.894963775240776970, +-0.894986081062743470, -0.895008384647244750, -0.895030685994224860, -0.895052985103628300, -0.895075281975399210, -0.895097576609481970, -0.895119869005820750, -0.895142159164360130, +-0.895164447085043840, -0.895186732767816680, -0.895209016212622500, -0.895231297419405660, -0.895253576388110650, -0.895275853118681740, -0.895298127611063200, -0.895320399865199510, +-0.895342669881034610, -0.895364937658513220, -0.895387203197579360, -0.895409466498177430, -0.895431727560251910, -0.895453986383746960, -0.895476242968607280, -0.895498497314776820, +-0.895520749422200280, -0.895542999290821710, -0.895565246920585700, -0.895587492311436420, -0.895609735463318570, -0.895631976376176310, -0.895654215049954240, -0.895676451484596510, +-0.895698685680047850, -0.895720917636252280, -0.895743147353154410, -0.895765374830698620, -0.895787600068829400, -0.895809823067491240, -0.895832043826628730, -0.895854262346185810, +-0.895876478626107530, -0.895898692666337810, -0.895920904466821380, -0.895943114027502710, -0.895965321348326180, -0.895987526429236620, -0.896009729270178080, -0.896031929871095370, +-0.896054128231932530, -0.896076324352634510, -0.896098518233145680, -0.896120709873410410, -0.896142899273373540, -0.896165086432979540, -0.896187271352172580, -0.896209454030897690, +-0.896231634469099040, -0.896253812666721220, -0.896275988623708830, -0.896298162340006590, -0.896320333815558870, -0.896342503050310490, -0.896364670044205840, -0.896386834797189390, +-0.896408997309205870, -0.896431157580199760, -0.896453315610115880, -0.896475471398898600, -0.896497624946492880, -0.896519776252842850, -0.896541925317893670, -0.896564072141589400, +-0.896586216723875060, -0.896608359064695050, -0.896630499163994180, -0.896652637021717050, -0.896674772637808590, -0.896696906012212970, -0.896719037144875330, -0.896741166035739830, +-0.896763292684751410, -0.896785417091854780, -0.896807539256994630, -0.896829659180115810, -0.896851776861162690, -0.896873892300080190, -0.896896005496812920, -0.896918116451305590, +-0.896940225163502910, -0.896962331633349710, -0.896984435860790690, -0.897006537845770780, -0.897028637588234260, -0.897050735088126380, -0.897072830345391540, -0.897094923359974540, +-0.897117014131820320, -0.897139102660873490, -0.897161188947078970, -0.897183272990381590, -0.897205354790725830, -0.897227434348056960, -0.897249511662319250, -0.897271586733457750, +-0.897293659561417380, -0.897315730146142740, -0.897337798487579000, -0.897359864585670630, -0.897381928440362690, -0.897403990051599880, -0.897426049419327020, -0.897448106543488940, +-0.897470161424030800, -0.897492214060897080, -0.897514264454033040, -0.897536312603383290, -0.897558358508892760, -0.897580402170506280, -0.897602443588168760, -0.897624482761825050, +-0.897646519691420290, -0.897668554376899300, -0.897690586818206790, -0.897712617015287930, -0.897734644968087410, -0.897756670676550290, -0.897778694140621390, -0.897800715360245860, +-0.897822734335368520, -0.897844751065934530, -0.897866765551888490, -0.897888777793175660, -0.897910787789740760, -0.897932795541528830, -0.897954801048485020, -0.897976804310554160, +-0.897998805327681170, -0.898020804099811550, -0.898042800626889570, -0.898064794908860820, -0.898086786945670010, -0.898108776737262080, -0.898130764283582290, -0.898152749584575580, +-0.898174732640187210, -0.898196713450361780, -0.898218692015044670, -0.898240668334180810, -0.898262642407715140, -0.898284614235592920, -0.898306583817759190, -0.898328551154158990, +-0.898350516244737610, -0.898372479089439730, -0.898394439688210870, -0.898416398040995710, -0.898438354147739540, -0.898460308008387500, -0.898482259622884640, -0.898504208991176220, +-0.898526156113207410, -0.898548100988923240, -0.898570043618268530, -0.898591984001188780, -0.898613922137629140, -0.898635858027534650, -0.898657791670850470, -0.898679723067521970, +-0.898701652217494100, -0.898723579120712210, -0.898745503777121150, -0.898767426186666380, -0.898789346349293080, -0.898811264264946400, -0.898833179933571480, -0.898855093355113930, +-0.898877004529518350, -0.898898913456730450, -0.898920820136695160, -0.898942724569357750, -0.898964626754663600, -0.898986526692557740, -0.899008424382985890, -0.899030319825892770, +-0.899052213021223960, -0.899074103968924510, -0.899095992668939800, -0.899117879121215100, -0.899139763325695670, -0.899161645282326890, -0.899183524991054140, -0.899205402451822340, +-0.899227277664577330, -0.899249150629263800, -0.899271021345827480, -0.899292889814213630, -0.899314756034367500, -0.899336620006234600, -0.899358481729760180, -0.899380341204889520, +-0.899402198431568100, -0.899424053409740960, -0.899445906139353820, -0.899467756620351830, -0.899489604852680370, -0.899511450836285250, -0.899533294571111200, -0.899555136057104130, +-0.899576975294208990, -0.899598812282371480, -0.899620647021536990, -0.899642479511650770, -0.899664309752658430, -0.899686137744505450, -0.899707963487136890, -0.899729786980498770, +-0.899751608224535810, -0.899773427219193960, -0.899795243964418570, -0.899817058460154920, -0.899838870706348710, -0.899860680702945560, -0.899882488449890610, -0.899904293947129340, +-0.899926097194607260, -0.899947898192270060, -0.899969696940063010, -0.899991493437931720, -0.900013287685821890, -0.900035079683678680, -0.900056869431447910, -0.900078656929074850, +-0.900100442176505090, -0.900122225173684230, -0.900144005920557880, -0.900165784417071400, -0.900187560663170740, -0.900209334658800930, -0.900231106403908020, -0.900252875898437170, +-0.900274643142334070, -0.900296408135544350, -0.900318170878013690, -0.900339931369687710, -0.900361689610511770, -0.900383445600431820, -0.900405199339393000, -0.900426950827341250, +-0.900448700064222060, -0.900470447049981140, -0.900492191784564080, -0.900513934267916820, -0.900535674499984400, -0.900557412480713080, -0.900579148210048030, -0.900600881687935060, +-0.900622612914320000, -0.900644341889148330, -0.900666068612365760, -0.900687793083918220, -0.900709515303751100, -0.900731235271810320, -0.900752952988041260, -0.900774668452389850, +-0.900796381664801690, -0.900818092625222610, -0.900839801333598530, -0.900861507789874730, -0.900883211993997350, -0.900904913945911770, -0.900926613645563920, -0.900948311092899520, +-0.900970006287864280, -0.900991699230404120, -0.901013389920464870, -0.901035078357991900, -0.901056764542931490, -0.901078448475229000, -0.901100130154830370, -0.901121809581681310, +-0.901143486755727860, -0.901165161676915630, -0.901186834345190760, -0.901208504760498740, -0.901230172922785180, -0.901251838831996330, -0.901273502488077800, -0.901295163890975640, +-0.901316823040635430, -0.901338479937003450, -0.901360134580024950, -0.901381786969646440, -0.901403437105813170, -0.901425084988471400, -0.901446730617566860, -0.901468373993045470, +-0.901490015114853270, -0.901511653982936090, -0.901533290597239630, -0.901554924957710170, -0.901576557064293180, -0.901598186916934720, -0.901619814515580930, -0.901641439860177530, +-0.901663062950670780, -0.901684683787006060, -0.901706302369129960, -0.901727918696987760, -0.901749532770525940, -0.901771144589690210, -0.901792754154426610, -0.901814361464681080, +-0.901835966520399880, -0.901857569321528610, -0.901879169868013530, -0.901900768159800360, -0.901922364196835360, -0.901943957979064350, -0.901965549506433480, -0.901987138778888700, +-0.902008725796376360, -0.902030310558841970, -0.902051893066231900, -0.902073473318491970, -0.902095051315568440, -0.902116627057407250, -0.902138200543954440, -0.902159771775156270, +-0.902181340750958570, -0.902202907471307710, -0.902224471936149300, -0.902246034145429810, -0.902267594099095180, -0.902289151797091570, -0.902310707239365130, -0.902332260425862120, +-0.902353811356528260, -0.902375360031310030, -0.902396906450153140, -0.902418450613004080, -0.902439992519808890, -0.902461532170513720, -0.902483069565064630, -0.902504604703408210, +-0.902526137585490160, -0.902547668211256650, -0.902569196580653930, -0.902590722693628170, -0.902612246550125620, -0.902633768150092550, -0.902655287493475230, -0.902676804580219370, +-0.902698319410271790, -0.902719831983578190, -0.902741342300085070, -0.902762850359738580, -0.902784356162484980, -0.902805859708270430, -0.902827360997041420, -0.902848860028743870, +-0.902870356803324280, -0.902891851320728690, -0.902913343580903470, -0.902934833583794780, -0.902956321329349110, -0.902977806817512830, -0.902999290048231870, -0.903020771021452840, +-0.903042249737121660, -0.903063726195184820, -0.903085200395588710, -0.903106672338279680, -0.903128142023203910, -0.903149609450307870, -0.903171074619537720, -0.903192537530840060, +-0.903213998184160930, -0.903235456579446700, -0.903256912716643880, -0.903278366595698820, -0.903299818216557800, -0.903321267579167420, -0.903342714683473710, -0.903364159529423390, +-0.903385602116962390, -0.903407042446037530, -0.903428480516594970, -0.903449916328581290, -0.903471349881942890, -0.903492781176626010, -0.903514210212577380, -0.903535636989742930, +-0.903557061508069470, -0.903578483767503380, -0.903599903767991040, -0.903621321509478940, -0.903642736991913780, -0.903664150215241600, -0.903685561179409120, -0.903706969884362610, +-0.903728376330048650, -0.903749780516413860, -0.903771182443404490, -0.903792582110967360, -0.903813979519048630, -0.903835374667595230, -0.903856767556553090, -0.903878158185869030, +-0.903899546555489540, -0.903920932665361330, -0.903942316515430670, -0.903963698105644480, -0.903985077435948800, -0.904006454506290580, -0.904027829316616070, -0.904049201866871990, +-0.904070572157004930, -0.904091940186961480, -0.904113305956688150, -0.904134669466131750, -0.904156030715238420, -0.904177389703955230, -0.904198746432228420, -0.904220100900004710, +-0.904241453107230700, -0.904262803053853090, -0.904284150739818720, -0.904305496165073720, -0.904326839329565260, -0.904348180233239480, -0.904369518876043220, -0.904390855257923070, +-0.904412189378825950, -0.904433521238698250, -0.904454850837487000, -0.904476178175138370, -0.904497503251599500, -0.904518826066816770, -0.904540146620736900, -0.904561464913306580, +-0.904582780944472750, -0.904604094714181910, -0.904625406222380970, -0.904646715469016430, -0.904668022454035210, -0.904689327177383820, -0.904710629639009060, -0.904731929838857640, +-0.904753227776876500, -0.904774523453012570, -0.904795816867212000, -0.904817108019422060, -0.904838396909589230, -0.904859683537660440, -0.904880967903582410, -0.904902250007301960, +-0.904923529848765780, -0.904944807427921160, -0.904966082744714130, -0.904987355799092170, -0.905008626591001670, -0.905029895120389670, -0.905051161387202760, -0.905072425391388100, +-0.905093687132892400, -0.905114946611662470, -0.905136203827645260, -0.905157458780787350, -0.905178711471035790, -0.905199961898337510, -0.905221210062639340, -0.905242455963888080, +-0.905263699602030900, -0.905284940977014290, -0.905306180088785490, -0.905327416937291020, -0.905348651522478120, -0.905369883844293510, -0.905391113902684120, -0.905412341697597100, +-0.905433567228979270, -0.905454790496777460, -0.905476011500938820, -0.905497230241409930, -0.905518446718137970, -0.905539660931069970, -0.905560872880152750, -0.905582082565333460, +-0.905603289986558920, -0.905624495143776300, -0.905645698036932180, -0.905666898665973940, -0.905688097030848400, -0.905709293131502500, -0.905730486967883500, -0.905751678539938430, +-0.905772867847614020, -0.905794054890857630, -0.905815239669615860, -0.905836422183836090, -0.905857602433465140, -0.905878780418450270, -0.905899956138738420, -0.905921129594276840, +-0.905942300785012480, -0.905963469710892140, -0.905984636371863110, -0.906005800767872520, -0.906026962898867420, -0.906048122764794960, -0.906069280365602300, -0.906090435701236370, +-0.906111588771644440, -0.906132739576773430, -0.906153888116570490, -0.906175034390982900, -0.906196178399957700, -0.906217320143442030, -0.906238459621383160, -0.906259596833728140, +-0.906280731780424230, -0.906301864461418250, -0.906322994876657680, -0.906344123026089580, -0.906365248909661190, -0.906386372527319910, -0.906407493879012430, -0.906428612964686460, +-0.906449729784288840, -0.906470844337766810, -0.906491956625067650, -0.906513066646138620, -0.906534174400926870, -0.906555279889380010, -0.906576383111444620, -0.906597484067068530, +-0.906618582756198550, -0.906639679178782080, -0.906660773334766470, -0.906681865224098880, -0.906702954846726580, -0.906724042202597170, -0.906745127291657460, -0.906766210113855050, +-0.906787290669136990, -0.906808368957450760, -0.906829444978743520, -0.906850518732962630, -0.906871590220055700, -0.906892659439969550, -0.906913726392652000, -0.906934791078049970, +-0.906955853496110850, -0.906976913646782230, -0.906997971530011270, -0.907019027145745340, -0.907040080493932030, -0.907061131574518400, -0.907082180387452140, -0.907103226932680200, +-0.907124271210150160, -0.907145313219809510, -0.907166352961605530, -0.907187390435485690, -0.907208425641397480, -0.907229458579288270, -0.907250489249105230, -0.907271517650796060, +-0.907292543784308010, -0.907313567649588590, -0.907334589246585280, -0.907355608575245550, -0.907376625635516800, -0.907397640427346610, -0.907418652950682140, -0.907439663205470980, +-0.907460671191660740, -0.907481676909198790, -0.907502680358032610, -0.907523681538109920, -0.907544680449377860, -0.907565677091784260, -0.907586671465276380, -0.907607663569801710, +-0.907628653405307960, -0.907649640971742610, -0.907670626269053260, -0.907691609297187170, -0.907712590056092280, -0.907733568545715630, -0.907754544766005140, -0.907775518716908310, +-0.907796490398372620, -0.907817459810345780, -0.907838426952775390, -0.907859391825608820, -0.907880354428793890, -0.907901314762277980, -0.907922272826008680, -0.907943228619933820, +-0.907964182144000760, -0.907985133398157340, -0.908006082382351250, -0.908027029096529770, -0.908047973540640820, -0.908068915714631890, -0.908089855618450570, -0.908110793252044580, +-0.908131728615361730, -0.908152661708349630, -0.908173592530955750, -0.908194521083128150, -0.908215447364813970, -0.908236371375961140, -0.908257293116517480, -0.908278212586430490, +-0.908299129785647970, -0.908320044714117870, -0.908340957371787440, -0.908361867758604840, -0.908382775874517430, -0.908403681719472940, -0.908424585293419410, -0.908445486596304310, +-0.908466385628075470, -0.908487282388680930, -0.908508176878068170, -0.908529069096184690, -0.908549959042978640, -0.908570846718397610, -0.908591732122389530, -0.908612615254902110, +-0.908633496115883400, -0.908654374705280650, -0.908675251023042250, -0.908696125069115460, -0.908716996843448420, -0.908737866345988850, -0.908758733576684570, -0.908779598535483510, +-0.908800461222333600, -0.908821321637182430, -0.908842179779978050, -0.908863035650668060, -0.908883889249200600, -0.908904740575523280, -0.908925589629584140, -0.908946436411331220, +-0.908967280920712000, -0.908988123157674850, -0.909008963122167170, -0.909029800814136980, -0.909050636233532440, -0.909071469380301140, -0.909092300254391360, -0.909113128855750910, +-0.909133955184327490, -0.909154779240069270, -0.909175601022924050, -0.909196420532839780, -0.909217237769764370, -0.909238052733646000, -0.909258865424432350, -0.909279675842071810, +-0.909300483986511980, -0.909321289857700890, -0.909342093455586700, -0.909362894780117110, -0.909383693831240400, -0.909404490608904270, -0.909425285113057090, -0.909446077343646580, +-0.909466867300621100, -0.909487654983928140, -0.909508440393516300, -0.909529223529333190, -0.909550004391327160, -0.909570782979446050, -0.909591559293638000, -0.909612333333850940, +-0.909633105100033260, -0.909653874592132650, -0.909674641810097380, -0.909695406753875500, -0.909716169423415270, -0.909736929818664500, -0.909757687939571350, -0.909778443786084080, +-0.909799197358150510, -0.909819948655719140, -0.909840697678737760, -0.909861444427154780, -0.909882188900918100, -0.909902931099976000, -0.909923671024276510, -0.909944408673767910, +-0.909965144048398230, -0.909985877148115740, -0.910006607972868480, -0.910027336522604810, -0.910048062797272680, -0.910068786796820460, -0.910089508521196300, -0.910110227970348350, +-0.910130945144224770, -0.910151660042773920, -0.910172372665943970, -0.910193083013682850, -0.910213791085939250, -0.910234496882661000, -0.910255200403796700, -0.910275901649294280, +-0.910296600619102110, -0.910317297313168460, -0.910337991731441590, -0.910358683873869650, -0.910379373740401120, -0.910400061330984060, -0.910420746645566940, -0.910441429684097800, +-0.910462110446525250, -0.910482788932797330, -0.910503465142862510, -0.910524139076668960, -0.910544810734165160, -0.910565480115299140, -0.910586147220019630, -0.910606812048274760, +-0.910627474600012700, -0.910648134875182040, -0.910668792873730930, -0.910689448595608080, -0.910710102040761300, -0.910730753209139540, -0.910751402100690720, -0.910772048715363550, +-0.910792693053106060, -0.910813335113866970, -0.910833974897594540, -0.910854612404237150, -0.910875247633743170, -0.910895880586061190, -0.910916511261139370, -0.910937139658926420, +-0.910957765779370490, -0.910978389622420280, -0.910999011188024070, -0.911019630476130220, -0.911040247486687440, -0.911060862219643890, -0.911081474674948380, -0.911102084852548950, +-0.911122692752394550, -0.911143298374433200, -0.911163901718613720, -0.911184502784884390, -0.911205101573194010, -0.911225698083490630, -0.911246292315723180, -0.911266884269839930, +-0.911287473945789460, -0.911308061343520270, -0.911328646462981060, -0.911349229304120100, -0.911369809866886200, -0.911390388151227640, -0.911410964157093220, -0.911431537884431320, +-0.911452109333190540, -0.911472678503319590, -0.911493245394766840, -0.911513810007481110, -0.911534372341410770, -0.911554932396504540, -0.911575490172710890, -0.911596045669978540, +-0.911616598888256080, -0.911637149827492220, -0.911657698487635340, -0.911678244868634360, -0.911698788970437660, -0.911719330792994050, -0.911739870336252030, -0.911760407600160530, +-0.911780942584667800, -0.911801475289722770, -0.911822005715274160, -0.911842533861270450, -0.911863059727660460, -0.911883583314392680, -0.911904104621416020, -0.911924623648679100, +-0.911945140396130730, -0.911965654863719280, -0.911986167051393900, -0.912006676959102980, -0.912027184586795440, -0.912047689934419870, -0.912068193001925210, -0.912088693789259830, +-0.912109192296372990, -0.912129688523212970, -0.912150182469728790, -0.912170674135869160, -0.912191163521582920, -0.912211650626818640, -0.912232135451525370, -0.912252617995651720, +-0.912273098259146380, -0.912293576241958500, -0.912314051944036470, -0.912334525365329550, -0.912354996505786110, -0.912375465365355300, -0.912395931943985720, -0.912416396241626520, +-0.912436858258226070, -0.912457317993733640, -0.912477775448097830, -0.912498230621267670, -0.912518683513191880, -0.912539134123819370, -0.912559582453099090, -0.912580028500979750, +-0.912600472267410370, -0.912620913752339890, -0.912641352955717020, -0.912661789877490910, -0.912682224517610270, -0.912702656876024030, -0.912723086952681120, -0.912743514747530570, +-0.912763940260521210, -0.912784363491601860, -0.912804784440721770, -0.912825203107829660, -0.912845619492874570, -0.912866033595805430, -0.912886445416571270, -0.912906854955120810, +-0.912927262211403410, -0.912947667185367680, -0.912968069876962880, -0.912988470286137940, -0.913008868412841790, -0.913029264257023470, -0.913049657818632010, -0.913070049097616350, +-0.913090438093925540, -0.913110824807508830, -0.913131209238314810, -0.913151591386292870, -0.913171971251391930, -0.913192348833561150, -0.913212724132749450, -0.913233097148905880, +-0.913253467881979590, -0.913273836331919720, -0.913294202498675210, -0.913314566382195210, -0.913334927982428660, -0.913355287299324910, -0.913375644332832910, -0.913395999082901920, +-0.913416351549480750, -0.913436701732518790, -0.913457049631965060, -0.913477395247768720, -0.913497738579878930, -0.913518079628244720, -0.913538418392815350, -0.913558754873539990, +-0.913579089070367670, -0.913599420983247650, -0.913619750612129080, -0.913640077956961010, -0.913660403017692910, -0.913680725794273730, -0.913701046286652830, -0.913721364494779140, +-0.913741680418602260, -0.913761994058071010, -0.913782305413134770, -0.913802614483742780, -0.913822921269844430, -0.913843225771388550, -0.913863527988324710, -0.913883827920602080, +-0.913904125568169800, -0.913924420930977250, -0.913944714008973700, -0.913965004802108290, -0.913985293310330400, -0.914005579533589300, -0.914025863471834120, -0.914046145125014480, +-0.914066424493079290, -0.914086701575978160, -0.914106976373660230, -0.914127248886074880, -0.914147519113171380, -0.914167787054899090, -0.914188052711207400, -0.914208316082045560, +-0.914228577167362830, -0.914248835967108710, -0.914269092481232450, -0.914289346709683650, -0.914309598652411350, -0.914329848309365030, -0.914350095680494190, -0.914370340765747970, +-0.914390583565075970, -0.914410824078427440, -0.914431062305752000, -0.914451298246998780, -0.914471531902117380, -0.914491763271057080, -0.914511992353767460, -0.914532219150197780, +-0.914552443660297640, -0.914572665884016310, -0.914592885821303380, -0.914613103472108220, -0.914633318836380330, -0.914653531914069060, -0.914673742705124030, -0.914693951209494700, +-0.914714157427130360, -0.914734361357980700, -0.914754563001995090, -0.914774762359123140, -0.914794959429314210, -0.914815154212517910, -0.914835346708683720, -0.914855536917761230, +-0.914875724839699700, -0.914895910474449070, -0.914916093821958600, -0.914936274882177880, -0.914956453655056400, -0.914976630140543980, -0.914996804338589760, -0.915016976249143690, +-0.915037145872155120, -0.915057313207573770, -0.915077478255349020, -0.915097641015430670, -0.915117801487768220, -0.915137959672311150, -0.915158115569009280, -0.915178269177812090, +-0.915198420498669170, -0.915218569531530250, -0.915238716276345010, -0.915258860733062840, -0.915279002901633550, -0.915299142782006750, -0.915319280374132130, -0.915339415677959290, +-0.915359548693437940, -0.915379679420517570, -0.915399807859148210, -0.915419934009279230, -0.915440057870860470, -0.915460179443841390, -0.915480298728172050, -0.915500415723801920, +-0.915520530430680710, -0.915540642848758250, -0.915560752977984120, -0.915580860818308140, -0.915600966369680020, -0.915621069632049480, -0.915641170605366210, -0.915661269289580030, +-0.915681365684640650, -0.915701459790498000, -0.915721551607101560, -0.915741641134401260, -0.915761728372346820, -0.915781813320888150, -0.915801895979974970, -0.915821976349556980, +-0.915842054429584000, -0.915862130220006070, -0.915882203720772560, -0.915902274931833740, -0.915922343853139200, -0.915942410484638760, -0.915962474826282350, -0.915982536878019670, +-0.916002596639800770, -0.916022654111575240, -0.916042709293293120, -0.916062762184904230, -0.916082812786358500, -0.916102861097605640, -0.916122907118595680, -0.916142950849278440, +-0.916162992289603850, -0.916183031439521730, -0.916203068298982130, -0.916223102867934740, -0.916243135146329600, -0.916263165134116650, -0.916283192831245820, -0.916303218237666920, +-0.916323241353330100, -0.916343262178185180, -0.916363280712181980, -0.916383296955270770, -0.916403310907401130, -0.916423322568523320, -0.916443331938587070, -0.916463339017542620, +-0.916483343805339800, -0.916503346301928650, -0.916523346507258970, -0.916543344421281160, -0.916563340043944800, -0.916583333375200260, -0.916603324414997140, -0.916623313163285940, +-0.916643299620016340, -0.916663283785138620, -0.916683265658602480, -0.916703245240358400, -0.916723222530356100, -0.916743197528545720, -0.916763170234877410, -0.916783140649301110, +-0.916803108771767070, -0.916823074602225120, -0.916843038140625620, -0.916862999386918290, -0.916882958341053710, -0.916902915002981600, -0.916922869372652330, -0.916942821450015710, +-0.916962771235022120, -0.916982718727621600, -0.917002663927764420, -0.917022606835400380, -0.917042547450479970, -0.917062485772953020, -0.917082421802770000, -0.917102355539880840, +-0.917122286984235920, -0.917142216135785170, -0.917162142994478960, -0.917182067560267320, -0.917201989833100530, -0.917221909812928730, -0.917241827499702180, -0.917261742893371150, +-0.917281655993885670, -0.917301566801196120, -0.917321475315252540, -0.917341381536005310, -0.917361285463404670, -0.917381187097400800, -0.917401086437943940, -0.917420983484984460, +-0.917440878238472310, -0.917460770698358190, -0.917480660864592010, -0.917500548737124280, -0.917520434315905130, -0.917540317600884950, -0.917560198592013880, -0.917580077289242290, +-0.917599953692520680, -0.917619827801798960, -0.917639699617027850, -0.917659569138157380, -0.917679436365138050, -0.917699301297920100, -0.917719163936453920, -0.917739024280689760, +-0.917758882330578230, -0.917778738086069250, -0.917798591547113630, -0.917818442713661420, -0.917838291585663100, -0.917858138163069050, -0.917877982445829740, -0.917897824433895340, +-0.917917664127216540, -0.917937501525743490, -0.917957336629426690, -0.917977169438216610, -0.917996999952063520, -0.918016828170918010, -0.918036654094730230, -0.918056477723451000, +-0.918076299057030590, -0.918096118095419360, -0.918115934838567790, -0.918135749286426490, -0.918155561438945830, -0.918175371296076180, -0.918195178857768140, -0.918214984123972180, +-0.918234787094638680, -0.918254587769718360, -0.918274386149161350, -0.918294182232918590, -0.918313976020940230, -0.918333767513177080, -0.918353556709579410, -0.918373343610097810, +-0.918393128214682890, -0.918412910523285220, -0.918432690535855190, -0.918452468252343390, -0.918472243672700530, -0.918492016796876980, -0.918511787624823440, -0.918531556156490400, +-0.918551322391828570, -0.918571086330788320, -0.918590847973320360, -0.918610607319375270, -0.918630364368903770, -0.918650119121856230, -0.918669871578183470, -0.918689621737835970, +-0.918709369600764550, -0.918729115166919690, -0.918748858436251870, -0.918768599408712030, -0.918788338084250640, -0.918808074462818420, -0.918827808544366080, -0.918847540328844190, +-0.918867269816203370, -0.918886997006394420, -0.918906721899367950, -0.918926444495074770, -0.918946164793465360, -0.918965882794490650, -0.918985598498101130, -0.919005311904247720, +-0.919025023012880920, -0.919044731823951740, -0.919064438337410470, -0.919084142553208360, -0.919103844471295670, -0.919123544091623560, -0.919143241414142500, -0.919162936438803310, +-0.919182629165556930, -0.919202319594353830, -0.919222007725144950, -0.919241693557880990, -0.919261377092512990, -0.919281058328991320, -0.919300737267267240, -0.919320413907291130, +-0.919340088249014030, -0.919359760292386750, -0.919379430037360110, -0.919399097483884710, -0.919418762631911800, -0.919438425481391760, -0.919458086032275860, -0.919477744284514560, +-0.919497400238059150, -0.919517053892860090, -0.919536705248868320, -0.919556354306034880, -0.919576001064310480, -0.919595645523646250, -0.919615287683992700, -0.919634927545301070, +-0.919654565107521970, -0.919674200370606650, -0.919693833334505720, -0.919713463999170200, -0.919733092364551030, -0.919752718430599250, -0.919772342197265450, -0.919791963664501000, +-0.919811582832256500, -0.919831199700483100, -0.919850814269131730, -0.919870426538153320, -0.919890036507498790, -0.919909644177119180, -0.919929249546965530, -0.919948852616988670, +-0.919968453387139840, -0.919988051857369650, -0.920007648027629470, -0.920027241897870110, -0.920046833468042720, -0.920066422738098130, -0.920086009707987600, -0.920105594377661930, +-0.920125176747072390, -0.920144756816169810, -0.920164334584905430, -0.920183910053230190, -0.920203483221095130, -0.920223054088451400, -0.920242622655250030, -0.920262188921442070, +-0.920281752886978670, -0.920301314551810970, -0.920320873915889790, -0.920340430979166620, -0.920359985741592280, -0.920379538203118020, -0.920399088363694770, -0.920418636223274020, +-0.920438181781806470, -0.920457725039243610, -0.920477265995536360, -0.920496804650635990, -0.920516341004493530, -0.920535875057060360, -0.920555406808287400, -0.920574936258126030, +-0.920594463406527170, -0.920613988253442320, -0.920633510798822270, -0.920653031042618640, -0.920672548984782350, -0.920692064625264760, -0.920711577964016930, -0.920731089000990210, +-0.920750597736135770, -0.920770104169404750, -0.920789608300748520, -0.920809110130118240, -0.920828609657465270, -0.920848106882740660, -0.920867601805895890, -0.920887094426882100, +-0.920906584745650570, -0.920926072762152550, -0.920945558476339410, -0.920965041888162190, -0.920984522997572610, -0.921004001804521580, -0.921023478308960590, -0.921042952510840780, +-0.921062424410113770, -0.921081894006730570, -0.921101361300642800, -0.921120826291801590, -0.921140288980158100, -0.921159749365664140, -0.921179207448270640, -0.921198663227929200, +-0.921218116704591080, -0.921237567878207760, -0.921257016748730400, -0.921276463316110570, -0.921295907580299440, -0.921315349541248720, -0.921334789198909540, -0.921354226553233400, +-0.921373661604171670, -0.921393094351675820, -0.921412524795697240, -0.921431952936187290, -0.921451378773097460, -0.921470802306379340, -0.921490223535984090, -0.921509642461863290, +-0.921529059083968430, -0.921548473402250880, -0.921567885416662120, -0.921587295127153650, -0.921606702533677050, -0.921626107636183580, -0.921645510434624840, -0.921664910928952310, +-0.921684309119117580, -0.921703705005072040, -0.921723098586767260, -0.921742489864154750, -0.921761878837185970, -0.921781265505812520, -0.921800649869985890, -0.921820031929657670, +-0.921839411684779340, -0.921858789135302390, -0.921878164281178640, -0.921897537122359450, -0.921916907658796300, -0.921936275890441030, -0.921955641817244990, -0.921975005439159780, +-0.921994366756137110, -0.922013725768128570, -0.922033082475085640, -0.922052436876960150, -0.922071788973703340, -0.922091138765267270, -0.922110486251603190, -0.922129831432663030, +-0.922149174308398270, -0.922168514878760500, -0.922187853143701440, -0.922207189103172900, -0.922226522757126240, -0.922245854105513300, -0.922265183148285760, -0.922284509885395230, +-0.922303834316793520, -0.922323156442432010, -0.922342476262262840, -0.922361793776237280, -0.922381108984307360, -0.922400421886424680, -0.922419732482540940, -0.922439040772607740, +-0.922458346756577120, -0.922477650434400550, -0.922496951806029860, -0.922516250871416750, -0.922535547630513040, -0.922554842083270430, -0.922574134229640850, -0.922593424069575780, +-0.922612711603027270, -0.922631996829946900, -0.922651279750286600, -0.922670560363998080, -0.922689838671033050, -0.922709114671343640, -0.922728388364881250, -0.922747659751598000, +-0.922766928831445510, -0.922786195604375800, -0.922805460070340480, -0.922824722229291570, -0.922843982081180900, -0.922863239625960290, -0.922882494863581430, -0.922901747793996470, +-0.922920998417157130, -0.922940246733015220, -0.922959492741522780, -0.922978736442631620, -0.922997977836293450, -0.923017216922460530, -0.923036453701084560, -0.923055688172117360, +-0.923074920335510970, -0.923094150191217210, -0.923113377739188220, -0.923132602979375720, -0.923151825911731730, -0.923171046536208070, -0.923190264852756900, -0.923209480861330030, +-0.923228694561879500, -0.923247905954357240, -0.923267115038715170, -0.923286321814905330, -0.923305526282879650, -0.923324728442590170, -0.923343928293988920, -0.923363125837027840, +-0.923382321071658960, -0.923401513997834100, -0.923420704615505630, -0.923439892924625470, -0.923459078925145450, -0.923478262617017710, -0.923497444000194400, -0.923516623074627450, +-0.923535799840268900, -0.923554974297070900, -0.923574146444985370, -0.923593316283964680, -0.923612483813960440, -0.923631649034925230, -0.923650811946810760, -0.923669972549569280, +-0.923689130843152850, -0.923708286827513710, -0.923727440502603690, -0.923746591868375160, -0.923765740924780140, -0.923784887671770800, -0.923804032109299180, -0.923823174237317520, +-0.923842314055777880, -0.923861451564632510, -0.923880586763833560, -0.923899719653332950, -0.923918850233083290, -0.923937978503036270, -0.923957104463144500, -0.923976228113359780, +-0.923995349453634710, -0.924014468483921100, -0.924033585204171340, -0.924052699614337670, -0.924071811714372250, -0.924090921504227230, -0.924110028983854970, -0.924129134153207630, +-0.924148237012237470, -0.924167337560896640, -0.924186435799137620, -0.924205531726912440, -0.924224625344173270, -0.924243716650872790, -0.924262805646962840, -0.924281892332395990, +-0.924300976707124300, -0.924320058771100240, -0.924339138524275960, -0.924358215966603950, -0.924377291098036350, -0.924396363918525530, -0.924415434428023760, -0.924434502626483410, +-0.924453568513856850, -0.924472632090096340, -0.924491693355154240, -0.924510752308982940, -0.924529808951534690, -0.924548863282762090, -0.924567915302617060, -0.924586965011052530, +-0.924606012408020430, -0.924625057493473350, -0.924644100267363540, -0.924663140729643510, -0.924682178880265710, -0.924701214719182430, -0.924720248246346130, -0.924739279461709080, +-0.924758308365223990, -0.924777334956843000, -0.924796359236518820, -0.924815381204203590, -0.924834400859850030, -0.924853418203410380, -0.924872433234837250, -0.924891445954083010, +-0.924910456361100140, -0.924929464455841120, -0.924948470238258440, -0.924967473708304680, -0.924986474865932110, -0.925005473711093540, -0.925024470243741010, -0.925043464463827570, +-0.925062456371305240, -0.925081445966126960, -0.925100433248244980, -0.925119418217611900, -0.925138400874180310, -0.925157381217902700, -0.925176359248731650, -0.925195334966619650, +-0.925214308371519300, -0.925233279463383300, -0.925252248242164010, -0.925271214707814150, -0.925290178860286190, -0.925309140699532850, -0.925328100225506600, -0.925347057438160260, +-0.925366012337446090, -0.925384964923317010, -0.925403915195725400, -0.925422863154624080, -0.925441808799965630, -0.925460752131702540, -0.925479693149787730, -0.925498631854173470, +-0.925517568244812790, -0.925536502321658180, -0.925555434084662340, -0.925574363533777870, -0.925593290668957460, -0.925612215490153820, -0.925631137997319780, -0.925650058190407690, +-0.925668976069370600, -0.925687891634160990, -0.925706804884731780, -0.925725715821035360, -0.925744624443024850, -0.925763530750652760, -0.925782434743871670, -0.925801336422634620, +-0.925820235786894210, -0.925839132836603240, -0.925858027571714310, -0.925876919992180470, -0.925895810097954190, -0.925914697888988500, -0.925933583365236010, -0.925952466526649640, +-0.925971347373181990, -0.925990225904786080, -0.926009102121414520, -0.926027976023020230, -0.926046847609556020, -0.926065716880974720, -0.926084583837229030, -0.926103448478271970, +-0.926122310804056270, -0.926141170814534730, -0.926160028509660390, -0.926178883889385850, -0.926197736953664250, -0.926216587702448080, -0.926235436135690700, -0.926254282253344500, +-0.926273126055362720, -0.926291967541698070, -0.926310806712303590, -0.926329643567131990, -0.926348478106136410, -0.926367310329269440, -0.926386140236484360, -0.926404967827733850, +-0.926423793102971070, -0.926442616062148620, -0.926461436705219740, -0.926480255032137160, -0.926499071042854120, -0.926517884737323330, -0.926536696115497720, -0.926555505177330430, +-0.926574311922774400, -0.926593116351782650, -0.926611918464307900, -0.926630718260303630, -0.926649515739722320, -0.926668310902517440, -0.926687103748641610, -0.926705894278048060, +-0.926724682490689840, -0.926743468386519890, -0.926762251965491220, -0.926781033227557010, -0.926799812172670050, -0.926818588800783720, -0.926837363111850830, -0.926856135105824650, +-0.926874904782658100, -0.926893672142304230, -0.926912437184716160, -0.926931199909846960, -0.926949960317649870, -0.926968718408077820, -0.926987474181084070, -0.927006227636621550, +-0.927024978774643520, -0.927043727595102900, -0.927062474097953060, -0.927081218283147050, -0.927099960150638000, -0.927118699700378970, -0.927137436932323310, -0.927156171846423960, +-0.927174904442634280, -0.927193634720907210, -0.927212362681196110, -0.927231088323454130, -0.927249811647634430, -0.927268532653690250, -0.927287251341574640, -0.927305967711240960, +-0.927324681762642270, -0.927343393495732030, -0.927362102910463170, -0.927380810006789180, -0.927399514784662980, -0.927418217244038170, -0.927436917384867780, -0.927455615207105070, +-0.927474310710703300, -0.927493003895615730, -0.927511694761795740, -0.927530383309196460, -0.927549069537771160, -0.927567753447473330, -0.927586435038256000, -0.927605114310072640, +-0.927623791262876530, -0.927642465896620920, -0.927661138211259060, -0.927679808206744450, -0.927698475883030340, -0.927717141240069880, -0.927735804277816770, -0.927754464996223940, +-0.927773123395245090, -0.927791779474833380, -0.927810433234942280, -0.927829084675525050, -0.927847733796535180, -0.927866380597925810, -0.927885025079650650, -0.927903667241662840, +-0.927922307083915990, -0.927940944606363230, -0.927959579808958160, -0.927978212691654150, -0.927996843254404570, -0.928015471497163010, -0.928034097419882630, -0.928052721022517010, +-0.928071342305019640, -0.928089961267343890, -0.928108577909443230, -0.928127192231271160, -0.928145804232781040, -0.928164413913926570, -0.928183021274660900, -0.928201626314937740, +-0.928220229034710460, -0.928238829433932770, -0.928257427512557800, -0.928276023270539370, -0.928294616707830870, -0.928313207824385870, -0.928331796620157750, -0.928350383095100320, +-0.928368967249166730, -0.928387549082310800, -0.928406128594486120, -0.928424705785645950, -0.928443280655744110, -0.928461853204733960, -0.928480423432569310, -0.928498991339203440, +-0.928517556924590260, -0.928536120188683030, -0.928554681131435690, -0.928573239752801480, -0.928591796052734230, -0.928610350031187530, -0.928628901688114850, -0.928647451023470020, +-0.928665998037206510, -0.928684542729278030, -0.928703085099638170, -0.928721625148240640, -0.928740162875039020, -0.928758698279987030, -0.928777231363038250, -0.928795762124146500, +-0.928814290563265140, -0.928832816680348230, -0.928851340475349120, -0.928869861948221850, -0.928888381098919800, -0.928906897927396780, -0.928925412433606600, -0.928943924617502860, +-0.928962434479039260, -0.928980942018169610, -0.928999447234847620, -0.929017950129026990, -0.929036450700661430, -0.929054948949704860, -0.929073444876110880, -0.929091938479833290, +-0.929110429760825810, -0.929128918719042350, -0.929147405354436520, -0.929165889666962120, -0.929184371656573190, -0.929202851323223110, -0.929221328666866020, -0.929239803687455620, +-0.929258276384945630, -0.929276746759289950, -0.929295214810442530, -0.929313680538356950, -0.929332143942987240, -0.929350605024287120, -0.929369063782210510, -0.929387520216711230, +-0.929405974327743190, -0.929424426115260100, -0.929442875579216120, -0.929461322719564830, -0.929479767536260270, -0.929498210029256370, -0.929516650198506820, -0.929535088043965670, +-0.929553523565586850, -0.929571956763324270, -0.929590387637131640, -0.929608816186963120, -0.929627242412772500, -0.929645666314513950, -0.929664087892141060, -0.929682507145608070, +-0.929700924074868710, -0.929719338679877110, -0.929737750960587080, -0.929756160916952790, -0.929774568548928040, -0.929792973856466860, -0.929811376839523200, -0.929829777498051180, +-0.929848175832004630, -0.929866571841337810, -0.929884965526004410, -0.929903356885958600, -0.929921745921154510, -0.929940132631545960, -0.929958517017087090, -0.929976899077731960, +-0.929995278813434580, -0.930013656224148890, -0.930032031309829250, -0.930050404070429380, -0.930068774505903640, -0.930087142616205840, -0.930105508401290250, -0.930123871861110780, +-0.930142232995621710, -0.930160591804777060, -0.930178948288530980, -0.930197302446837400, -0.930215654279650690, -0.930234003786924890, -0.930252350968613920, -0.930270695824672260, +-0.930289038355053720, -0.930307378559712570, -0.930325716438602960, -0.930344051991679240, -0.930362385218895140, -0.930380716120205340, -0.930399044695563560, -0.930417370944924270, +-0.930435694868241400, -0.930454016465469440, -0.930472335736562410, -0.930490652681474570, -0.930508967300159970, -0.930527279592573090, -0.930545589558667950, -0.930563897198398830, +-0.930582202511719970, -0.930600505498585640, -0.930618806158950100, -0.930637104492767490, -0.930655400499992070, -0.930673694180578100, -0.930691985534480070, -0.930710274561651900, +-0.930728561262048170, -0.930746845635622930, -0.930765127682330770, -0.930783407402125620, -0.930801684794961950, -0.930819959860794130, -0.930838232599576430, -0.930856503011263100, +-0.930874771095808520, -0.930893036853166930, -0.930911300283292940, -0.930929561386140580, -0.930947820161664330, -0.930966076609818450, -0.930984330730557530, -0.931002582523835720, +-0.931020831989607500, -0.931039079127827130, -0.931057323938449090, -0.931075566421427750, -0.931093806576717480, -0.931112044404272640, -0.931130279904047730, -0.931148513075997220, +-0.931166743920075260, -0.931184972436236550, -0.931203198624435350, -0.931221422484626250, -0.931239644016763510, -0.931257863220801730, -0.931276080096695160, -0.931294294644398500, +-0.931312506863866020, -0.931330716755052410, -0.931348924317911940, -0.931367129552399090, -0.931385332458468550, -0.931403533036074590, -0.931421731285171810, -0.931439927205714670, +-0.931458120797657770, -0.931476312060955490, -0.931494500995562520, -0.931512687601433240, -0.931530871878522350, -0.931549053826784100, -0.931567233446173320, -0.931585410736644470, +-0.931603585698152050, -0.931621758330650640, -0.931639928634094950, -0.931658096608439350, -0.931676262253638530, -0.931694425569646990, -0.931712586556419530, -0.931730745213910530, +-0.931748901542074680, -0.931767055540866580, -0.931785207210240830, -0.931803356550152010, -0.931821503560554820, -0.931839648241403970, -0.931857790592653830, -0.931875930614259330, +-0.931894068306174940, -0.931912203668355480, -0.931930336700755420, -0.931948467403329590, -0.931966595776032580, -0.931984721818819080, -0.932002845531643700, -0.932020966914461240, +-0.932039085967226400, -0.932057202689893890, -0.932075317082418310, -0.932093429144754350, -0.932111538876856940, -0.932129646278680670, -0.932147751350180240, -0.932165854091310480, +-0.932183954502026070, -0.932202052582281730, -0.932220148332032370, -0.932238241751232490, -0.932256332839837110, -0.932274421597800830, -0.932292508025078570, -0.932310592121624930, +-0.932328673887394930, -0.932346753322343180, -0.932364830426424600, -0.932382905199593880, -0.932400977641805960, -0.932419047753015540, -0.932437115533177540, -0.932455180982246780, +-0.932473244100178070, -0.932491304886926220, -0.932509363342446050, -0.932527419466692600, -0.932545473259620450, -0.932563524721184640, -0.932581573851340110, -0.932599620650041650, +-0.932617665117243980, -0.932635707252902350, -0.932653747056971350, -0.932671784529406020, -0.932689819670161180, -0.932707852479191860, -0.932725882956452760, -0.932743911101899140, +-0.932761936915485590, -0.932779960397167260, -0.932797981546899080, -0.932816000364635860, -0.932834016850332740, -0.932852031003944540, -0.932870042825426180, -0.932888052314732820, +-0.932906059471819260, -0.932924064296640540, -0.932942066789151810, -0.932960066949307780, -0.932978064777063580, -0.932996060272374250, -0.933014053435194720, -0.933032044265480140, +-0.933050032763185430, -0.933068018928265520, -0.933086002760675770, -0.933103984260370890, -0.933121963427306020, -0.933139940261436320, -0.933157914762716700, -0.933175886931102430, +-0.933193856766548310, -0.933211824269009620, -0.933229789438441260, -0.933247752274798500, -0.933265712778036380, -0.933283670948109930, -0.933301626784974300, -0.933319580288584750, +-0.933337531458896090, -0.933355480295863680, -0.933373426799442460, -0.933391370969587800, -0.933409312806254610, -0.933427252309398270, -0.933445189478973700, -0.933463124314936170, +-0.933481056817240810, -0.933498986985842880, -0.933516914820697430, -0.933534840321759710, -0.933552763488984860, -0.933570684322328150, -0.933588602821744720, -0.933606518987189720, +-0.933624432818618510, -0.933642344315986140, -0.933660253479247970, -0.933678160308359150, -0.933696064803274940, -0.933713966963950480, -0.933731866790341260, -0.933749764282402190, +-0.933767659440088880, -0.933785552263356360, -0.933803442752159980, -0.933821330906454920, -0.933839216726196630, -0.933857100211340160, -0.933874981361841110, -0.933892860177654490, +-0.933910736658735700, -0.933928610805040190, -0.933946482616523020, -0.933964352093139770, -0.933982219234845590, -0.934000084041595850, -0.934017946513345910, -0.934035806650051040, +-0.934053664451666710, -0.934071519918148300, -0.934089373049450940, -0.934107223845530240, -0.934125072306341450, -0.934142918431840050, -0.934160762221981190, -0.934178603676720560, +-0.934196442796013330, -0.934214279579815180, -0.934232114028081150, -0.934249946140766950, -0.934267775917827840, -0.934285603359219170, -0.934303428464896670, -0.934321251234815460, +-0.934339071668931260, -0.934356889767199330, -0.934374705529575130, -0.934392518956014160, -0.934410330046472000, -0.934428138800903920, -0.934445945219265490, -0.934463749301512210, +-0.934481551047599560, -0.934499350457483000, -0.934517147531118250, -0.934534942268460340, -0.934552734669465310, -0.934570524734088300, -0.934588312462285130, -0.934606097854011050, +-0.934623880909221770, -0.934641661627872770, -0.934659440009919630, -0.934677216055317950, -0.934694989764023100, -0.934712761135990890, -0.934730530171176690, -0.934748296869536200, +-0.934766061231025010, -0.934783823255598610, -0.934801582943212690, -0.934819340293822850, -0.934837095307384570, -0.934854847983853540, -0.934872598323185480, -0.934890346325335850, +-0.934908091990260370, -0.934925835317914730, -0.934943576308254420, -0.934961314961235250, -0.934979051276812800, -0.934996785254942560, -0.935014516895580570, -0.935032246198682080, +-0.935049973164203130, -0.935067697792099200, -0.935085420082325980, -0.935103140034839300, -0.935120857649594740, -0.935138572926548010, -0.935156285865654800, -0.935173996466870940, +-0.935191704730152120, -0.935209410655453930, -0.935227114242732300, -0.935244815491942830, -0.935262514403041420, -0.935280210975983680, -0.935297905210725420, -0.935315597107222340, +-0.935333286665430360, -0.935350973885305080, -0.935368658766802420, -0.935386341309878080, -0.935404021514487870, -0.935421699380587610, -0.935439374908133110, -0.935457048097080190, +-0.935474718947384650, -0.935492387459002320, -0.935510053631888990, -0.935527717466000610, -0.935545378961292860, -0.935563038117721680, -0.935580694935242870, -0.935598349413812370, +-0.935616001553385980, -0.935633651353919630, -0.935651298815369010, -0.935668943937690290, -0.935686586720839260, -0.935704227164771640, -0.935721865269443450, -0.935739501034810630, +-0.935757134460829090, -0.935774765547454650, -0.935792394294643340, -0.935810020702350980, -0.935827644770533710, -0.935845266499147230, -0.935862885888147590, -0.935880502937490700, +-0.935898117647132600, -0.935915730017029210, -0.935933340047136460, -0.935950947737410390, -0.935968553087807020, -0.935986156098282060, -0.936003756768791880, -0.936021355099292300, +-0.936038951089739340, -0.936056544740089040, -0.936074136050297210, -0.936091725020320230, -0.936109311650113800, -0.936126895939634160, -0.936144477888837260, -0.936162057497679110, +-0.936179634766115880, -0.936197209694103580, -0.936214782281598160, -0.936232352528555970, -0.936249920434932710, -0.936267486000684770, -0.936285049225768050, -0.936302610110138710, +-0.936320168653752780, -0.936337724856566630, -0.936355278718535970, -0.936372830239617260, -0.936390379419766440, -0.936407926258939540, -0.936425470757093040, -0.936443012914182640, +-0.936460552730164820, -0.936478090204995620, -0.936495625338631290, -0.936513158131027760, -0.936530688582141390, -0.936548216691928230, -0.936565742460344630, -0.936583265887346530, +-0.936600786972890400, -0.936618305716932280, -0.936635822119428420, -0.936653336180334860, -0.936670847899608080, -0.936688357277204120, -0.936705864313079340, -0.936723369007189890, +-0.936740871359492020, -0.936758371369942000, -0.936775869038495970, -0.936793364365110290, -0.936810857349741230, -0.936828347992345050, -0.936845836292877880, -0.936863322251296200, +-0.936880805867556180, -0.936898287141614270, -0.936915766073426530, -0.936933242662949420, -0.936950716910139090, -0.936968188814952140, -0.936985658377344600, -0.937003125597272950, +-0.937020590474693440, -0.937038053009562550, -0.937055513201836440, -0.937072971051471690, -0.937090426558424450, -0.937107879722651080, -0.937125330544108070, -0.937142779022751670, +-0.937160225158538360, -0.937177668951424400, -0.937195110401366380, -0.937212549508320560, -0.937229986272243410, -0.937247420693091190, -0.937264852770820500, -0.937282282505387590, +-0.937299709896749160, -0.937317134944861240, -0.937334557649680660, -0.937351978011163540, -0.937369396029266610, -0.937386811703946000, -0.937404225035158520, -0.937421636022860440, +-0.937439044667008230, -0.937456450967558470, -0.937473854924467550, -0.937491256537692050, -0.937508655807188340, -0.937526052732913010, -0.937543447314822530, -0.937560839552873500, +-0.937578229447022290, -0.937595616997225600, -0.937613002203439790, -0.937630385065621460, -0.937647765583727200, -0.937665143757713590, -0.937682519587537010, -0.937699893073154270, +-0.937717264214521620, -0.937734633011595990, -0.937751999464333630, -0.937769363572691360, -0.937786725336625550, -0.937804084756093110, -0.937821441831050430, -0.937838796561454080, +-0.937856148947260770, -0.937873498988426980, -0.937890846684909630, -0.937908192036664980, -0.937925535043649950, -0.937942875705821020, -0.937960214023135010, -0.937977549995548390, +-0.937994883623017970, -0.938012214905500240, -0.938029543842952010, -0.938046870435329970, -0.938064194682590720, -0.938081516584690860, -0.938098836141587400, -0.938116153353236730, +-0.938133468219595760, -0.938150780740621080, -0.938168090916269510, -0.938185398746497650, -0.938202704231262290, -0.938220007370520140, -0.938237308164228010, -0.938254606612342610, +-0.938271902714820750, -0.938289196471619010, -0.938306487882694330, -0.938323776948003510, -0.938341063667503140, -0.938358348041150260, -0.938375630068901350, -0.938392909750713430, +-0.938410187086543220, -0.938427462076347530, -0.938444734720083160, -0.938462005017707050, -0.938479272969175880, -0.938496538574446590, -0.938513801833475880, -0.938531062746220670, +-0.938548321312637770, -0.938565577532684100, -0.938582831406316600, -0.938600082933491840, -0.938617332114166980, -0.938634578948298710, -0.938651823435844080, -0.938669065576759780, +-0.938686305371002950, -0.938703542818530300, -0.938720777919298750, -0.938738010673265340, -0.938755241080386880, -0.938772469140620290, -0.938789694853922500, -0.938806918220250530, +-0.938824139239561210, -0.938841357911811670, -0.938858574236958620, -0.938875788214959210, -0.938892999845770240, -0.938910209129348750, -0.938927416065651780, -0.938944620654636350, +-0.938961822896259290, -0.938979022790477740, -0.938996220337248500, -0.939013415536528840, -0.939030608388275570, -0.939047798892445830, -0.939064987048996550, -0.939082172857884870, +-0.939099356319067600, -0.939116537432502120, -0.939133716198145120, -0.939150892615953970, -0.939168066685885590, -0.939185238407897030, -0.939202407781945410, -0.939219574807987680, +-0.939236739485981080, -0.939253901815882530, -0.939271061797649300, -0.939288219431238410, -0.939305374716607020, -0.939322527653712050, -0.939339678242510970, -0.939356826482960480, +-0.939373972375018070, -0.939391115918640660, -0.939408257113785510, -0.939425395960409640, -0.939442532458470430, -0.939459666607924680, -0.939476798408729890, -0.939493927860843070, +-0.939511054964221490, -0.939528179718822300, -0.939545302124602520, -0.939562422181519640, -0.939579539889530580, -0.939596655248592820, -0.939613768258663270, -0.939630878919699320, +-0.939647987231658210, -0.939665093194497090, -0.939682196808173330, -0.939699298072643960, -0.939716396987866460, -0.939733493553797870, -0.939750587770395550, -0.939767679637616870, +-0.939784769155418860, -0.939801856323759120, -0.939818941142594570, -0.939836023611882680, -0.939853103731580710, -0.939870181501646140, -0.939887256922036010, -0.939904329992707680, +-0.939921400713618630, -0.939938469084726000, -0.939955535105987280, -0.939972598777359610, -0.939989660098800580, -0.940006719070267230, -0.940023775691717240, -0.940040829963107670, +-0.940057881884396210, -0.940074931455539890, -0.940091978676496300, -0.940109023547222700, -0.940126066067676680, -0.940143106237815380, -0.940160144057596400, -0.940177179526976880, +-0.940194212645914630, -0.940211243414366680, -0.940228271832290740, -0.940245297899644170, -0.940262321616384230, -0.940279342982468510, -0.940296361997854380, -0.940313378662499530, +-0.940330392976361010, -0.940347404939396720, -0.940364414551563720, -0.940381421812819810, -0.940398426723122350, -0.940415429282428830, -0.940432429490696610, -0.940449427347883390, +-0.940466422853946660, -0.940483416008843780, -0.940500406812532440, -0.940517395264970020, -0.940534381366114110, -0.940551365115922300, -0.940568346514352170, -0.940585325561360990, +-0.940602302256906550, -0.940619276600946350, -0.940636248593438080, -0.940653218234339010, -0.940670185523607040, -0.940687150461199440, -0.940704113047074130, -0.940721073281188480, +-0.940738031163500190, -0.940754986693966730, -0.940771939872545810, -0.940788890699195020, -0.940805839173872170, -0.940822785296534510, -0.940839729067140080, -0.940856670485646250, +-0.940873609552010710, -0.940890546266191170, -0.940907480628145330, -0.940924412637830660, -0.940941342295204990, -0.940958269600226100, -0.940975194552851390, -0.940992117153038770, +-0.941009037400745820, -0.941025955295930250, -0.941042870838549870, -0.941059784028562270, -0.941076694865925160, -0.941093603350596440, -0.941110509482533500, -0.941127413261694470, +-0.941144314688036830, -0.941161213761518510, -0.941178110482096990, -0.941195004849730400, -0.941211896864376120, -0.941228786525992180, -0.941245673834536280, -0.941262558789966120, +-0.941279441392239620, -0.941296321641314490, -0.941313199537148650, -0.941330075079699680, -0.941346948268925620, -0.941363819104784170, -0.941380687587233140, -0.941397553716230350, +-0.941414417491733820, -0.941431278913701040, -0.941448137982090260, -0.941464994696859070, -0.941481849057965390, -0.941498701065367040, -0.941515550719022040, -0.941532398018887990, +-0.941549242964923150, -0.941566085557085100, -0.941582925795331870, -0.941599763679621280, -0.941616599209911250, -0.941633432386159820, -0.941650263208324790, -0.941667091676364090, +-0.941683917790235640, -0.941700741549897360, -0.941717562955307290, -0.941734382006423340, -0.941751198703203340, -0.941768013045605420, -0.941784825033587400, -0.941801634667107420, +-0.941818441946123190, -0.941835246870593060, -0.941852049440474630, -0.941868849655726150, -0.941885647516305550, -0.941902443022170850, -0.941919236173280110, -0.941936026969591110, +-0.941952815411062240, -0.941969601497651190, -0.941986385229316210, -0.942003166606015130, -0.942019945627706300, -0.942036722294347540, -0.942053496605896990, -0.942070268562312570, +-0.942087038163552660, -0.942103805409575060, -0.942120570300338020, -0.942137332835799480, -0.942154093015917680, -0.942170850840650550, -0.942187606309956350, -0.942204359423793100, +-0.942221110182119070, -0.942237858584892170, -0.942254604632070670, -0.942271348323612590, -0.942288089659476190, -0.942304828639619510, -0.942321565264000790, -0.942338299532578190, +-0.942355031445309850, -0.942371761002153920, -0.942388488203068530, -0.942405213048011950, -0.942421935536942310, -0.942438655669817880, -0.942455373446596800, -0.942472088867237320, +-0.942488801931697600, -0.942505512639935870, -0.942522220991910300, -0.942538926987579240, -0.942555630626900840, -0.942572331909833360, -0.942589030836335050, -0.942605727406364170, +-0.942622421619879080, -0.942639113476837820, -0.942655802977198750, -0.942672490120920250, -0.942689174907960450, -0.942705857338277720, -0.942722537411830430, -0.942739215128576720, +-0.942755890488475080, -0.942772563491483530, -0.942789234137560770, -0.942805902426664730, -0.942822568358754110, -0.942839231933786940, -0.942855893151721800, -0.942872552012516850, +-0.942889208516130560, -0.942905862662521190, -0.942922514451647210, -0.942939163883466990, -0.942955810957938790, -0.942972455675021080, -0.942989098034672240, -0.943005738036850730, +-0.943022375681514700, -0.943039010968622860, -0.943055643898133460, -0.943072274470004970, -0.943088902684195760, -0.943105528540664320, -0.943122152039369000, -0.943138773180268400, +-0.943155391963320770, -0.943172008388484810, -0.943188622455718660, -0.943205234164981030, -0.943221843516230280, -0.943238450509425010, -0.943255055144523460, -0.943271657421484440, +-0.943288257340266220, -0.943304854900827270, -0.943321450103126290, -0.943338042947121650, -0.943354633432771930, -0.943371221560035610, -0.943387807328871290, -0.943404390739237320, +-0.943420971791092410, -0.943437550484395150, -0.943454126819103900, -0.943470700795177360, -0.943487272412574240, -0.943503841671252670, -0.943520408571171700, -0.943536973112289680, +-0.943553535294565200, -0.943570095117956860, -0.943586652582423250, -0.943603207687923160, -0.943619760434414870, -0.943636310821857280, -0.943652858850208890, -0.943669404519428380, +-0.943685947829474240, -0.943702488780305380, -0.943719027371880180, -0.943735563604157560, -0.943752097477095870, -0.943768628990654060, -0.943785158144790580, -0.943801684939464370, +-0.943818209374633790, -0.943834731450257760, -0.943851251166294760, -0.943867768522703820, -0.943884283519443310, -0.943900796156472270, -0.943917306433749050, -0.943933814351232690, +-0.943950319908881790, -0.943966823106655030, -0.943983323944511230, -0.943999822422409100, -0.944016318540307540, -0.944032812298165050, -0.944049303695940530, -0.944065792733592810, +-0.944082279411080580, -0.944098763728362660, -0.944115245685397840, -0.944131725282144840, -0.944148202518562680, -0.944164677394609850, -0.944181149910245380, -0.944197620065428070, +-0.944214087860116740, -0.944230553294270080, -0.944247016367847140, -0.944263477080806600, -0.944279935433107400, -0.944296391424708340, -0.944312845055568340, -0.944329296325646220, +-0.944345745234900780, -0.944362191783291060, -0.944378635970775760, -0.944395077797314020, -0.944411517262864430, -0.944427954367386250, -0.944444389110837950, -0.944460821493178890, +-0.944477251514367570, -0.944493679174363330, -0.944510104473124780, -0.944526527410610940, -0.944542947986780850, -0.944559366201593310, -0.944575782055007470, -0.944592195546982150, +-0.944608606677476260, -0.944625015446448950, -0.944641421853859020, -0.944657825899665520, -0.944674227583827570, -0.944690626906303900, -0.944707023867053850, -0.944723418466036140, +-0.944739810703209890, -0.944756200578534040, -0.944772588091967850, -0.944788973243470000, -0.944805356032999870, -0.944821736460516260, -0.944838114525978320, -0.944854490229345090, +-0.944870863570575700, -0.944887234549629080, -0.944903603166464490, -0.944919969421040730, -0.944936333313317170, -0.944952694843252840, -0.944969054010806550, -0.944985410815937790, +-0.945001765258605460, -0.945018117338768730, -0.945034467056386610, -0.945050814411418470, -0.945067159403823240, -0.945083502033560060, -0.945099842300588190, -0.945116180204866650, +-0.945132515746354710, -0.945148848925011500, -0.945165179740796170, -0.945181508193667860, -0.945197834283585720, -0.945214158010509120, -0.945230479374396970, -0.945246798375208750, +-0.945263115012903610, -0.945279429287440460, -0.945295741198778900, -0.945312050746877960, -0.945328357931696890, -0.945344662753194840, -0.945360965211331280, -0.945377265306065140, +-0.945393563037356000, -0.945409858405162780, -0.945426151409445080, -0.945442442050161920, -0.945458730327272680, -0.945475016240736600, -0.945491299790512940, -0.945507580976561070, +-0.945523859798840350, -0.945540136257309820, -0.945556410351929060, -0.945572682082657100, -0.945588951449453650, -0.945605218452277740, -0.945621483091088730, -0.945637745365846110, +-0.945654005276509110, -0.945670262823037120, -0.945686518005389280, -0.945702770823525380, -0.945719021277404370, -0.945735269366985930, -0.945751515092229320, -0.945767758453093910, +-0.945783999449539060, -0.945800238081524250, -0.945816474349008730, -0.945832708251952200, -0.945848939790313810, -0.945865168964053040, -0.945881395773129350, -0.945897620217502340, +-0.945913842297131160, -0.945930062011975270, -0.945946279361994380, -0.945962494347147740, -0.945978706967394830, -0.945994917222695240, -0.946011125113008330, -0.946027330638293470, +-0.946043533798510470, -0.946059734593618470, -0.946075933023577290, -0.946092129088346170, -0.946108322787884810, -0.946124514122152590, -0.946140703091109090, -0.946156889694713790, +-0.946173073932926380, -0.946189255805706120, -0.946205435313012930, -0.946221612454805960, -0.946237787231045120, -0.946253959641689790, -0.946270129686699430, -0.946286297366033870, +-0.946302462679652460, -0.946318625627515010, -0.946334786209580890, -0.946350944425809910, -0.946367100276161440, -0.946383253760595400, -0.946399404879071040, -0.946415553631548280, +-0.946431700017986600, -0.946447844038345700, -0.946463985692585160, -0.946480124980664690, -0.946496261902543770, -0.946512396458182410, -0.946528528647539890, -0.946544658470576120, +-0.946560785927250680, -0.946576911017523280, -0.946593033741353730, -0.946609154098701390, -0.946625272089526290, -0.946641387713788030, -0.946657500971446190, -0.946673611862460680, +-0.946689720386791110, -0.946705826544397280, -0.946721930335238880, -0.946738031759275510, -0.946754130816467310, -0.946770227506773530, -0.946786321830154430, -0.946802413786569260, +-0.946818503375978280, -0.946834590598340960, -0.946850675453617120, -0.946866757941766670, -0.946882838062749310, -0.946898915816524860, -0.946914991203053000, -0.946931064222293890, +-0.946947134874206900, -0.946963203158752150, -0.946979269075889360, -0.946995332625578560, -0.947011393807779210, -0.947027452622451580, -0.947043509069555140, -0.947059563149050040, +-0.947075614860895980, -0.947091664205052860, -0.947107711181480630, -0.947123755790139190, -0.947139798030988240, -0.947155837903987830, -0.947171875409097860, -0.947187910546278160, +-0.947203943315488630, -0.947219973716689420, -0.947236001749840130, -0.947252027414900890, -0.947268050711831620, -0.947284071640592140, -0.947300090201142480, -0.947316106393442660, +-0.947332120217452500, -0.947348131673132030, -0.947364140760441400, -0.947380147479340180, -0.947396151829788760, -0.947412153811746930, -0.947428153425174720, -0.947444150670032070, +-0.947460145546279110, -0.947476138053875760, -0.947492128192782060, -0.947508115962958030, -0.947524101364363710, -0.947540084396959250, -0.947556065060704440, -0.947572043355559450, +-0.947588019281484390, -0.947603992838439320, -0.947619964026384260, -0.947635932845279360, -0.947651899295084420, -0.947667863375759920, -0.947683825087265670, -0.947699784429561930, +-0.947715741402608720, -0.947731696006366090, -0.947747648240794270, -0.947763598105853310, -0.947779545601503350, -0.947795490727704530, -0.947811433484416990, -0.947827373871600880, +-0.947843311889216330, -0.947859247537223500, -0.947875180815582640, -0.947891111724253670, -0.947907040263197050, -0.947922966432372730, -0.947938890231741050, -0.947954811661262050, +-0.947970730720896100, -0.947986647410603340, -0.948002561730344030, -0.948018473680078190, -0.948034383259766190, -0.948050290469368170, -0.948066195308844620, -0.948082097778155440, +-0.948097997877261010, -0.948113895606121580, -0.948129790964697520, -0.948145683952948850, -0.948161574570836050, -0.948177462818319380, -0.948193348695358870, -0.948209232201915220, +-0.948225113337948230, -0.948240992103418610, -0.948256868498286500, -0.948272742522512260, -0.948288614176056030, -0.948304483458878410, -0.948320350370939420, -0.948336214912199770, +-0.948352077082619370, -0.948367936882158920, -0.948383794310778570, -0.948399649368438790, -0.948415502055099720, -0.948431352370722070, -0.948447200315265970, -0.948463045888691900, +-0.948478889090960230, -0.948494729922031320, -0.948510568381865650, -0.948526404470423360, -0.948542238187665250, -0.948558069533551480, -0.948573898508042520, -0.948589725111098850, +-0.948605549342680820, -0.948621371202748920, -0.948637190691263730, -0.948653007808185400, -0.948668822553474620, -0.948684634927091760, -0.948700444928997300, -0.948716252559151710, +-0.948732057817515570, -0.948747860704049260, -0.948763661218713250, -0.948779459361468120, -0.948795255132274360, -0.948811048531092440, -0.948826839557882940, -0.948842628212606340, +-0.948858414495223010, -0.948874198405693870, -0.948889979943979060, -0.948905759110039380, -0.948921535903835320, -0.948937310325327470, -0.948953082374476180, -0.948968852051242370, +-0.948984619355586200, -0.949000384287468690, -0.949016146846850090, -0.949031907033691220, -0.949047664847952550, -0.949063420289594780, -0.949079173358578280, -0.949094924054864060, +-0.949110672378412400, -0.949126418329184100, -0.949142161907139740, -0.949157903112240020, -0.949173641944445530, -0.949189378403716870, -0.949205112490014820, -0.949220844203299880, +-0.949236573543532970, -0.949252300510674550, -0.949268025104685440, -0.949283747325526230, -0.949299467173157720, -0.949315184647540390, -0.949330899748635270, -0.949346612476402730, +-0.949362322830803800, -0.949378030811798950, -0.949393736419349210, -0.949409439653414950, -0.949425140513957210, -0.949440839000936450, -0.949456535114313720, -0.949472228854049690, +-0.949487920220104980, -0.949503609212440590, -0.949519295831017130, -0.949534980075795400, -0.949550661946736210, -0.949566341443800370, -0.949582018566948680, -0.949597693316141970, +-0.949613365691341030, -0.949629035692506670, -0.949644703319599710, -0.949660368572580960, -0.949676031451411330, -0.949691691956051630, -0.949707350086462680, -0.949723005842605380, +-0.949738659224440450, -0.949754310231929020, -0.949769958865031790, -0.949785605123709690, -0.949801249007923510, -0.949816890517634180, -0.949832529652802740, -0.949848166413389870, +-0.949863800799356620, -0.949879432810663780, -0.949895062447272510, -0.949910689709143500, -0.949926314596237780, -0.949941937108516270, -0.949957557245940000, -0.949973175008469670, +-0.949988790396066540, -0.950004403408691410, -0.950020014046305320, -0.950035622308869070, -0.950051228196343800, -0.950066831708690440, -0.950082432845870130, -0.950098031607843670, +-0.950113627994572110, -0.950129222006016460, -0.950144813642137760, -0.950160402902897050, -0.950175989788255350, -0.950191574298173690, -0.950207156432613000, -0.950222736191534520, +-0.950238313574899180, -0.950253888582668020, -0.950269461214802160, -0.950285031471262640, -0.950300599352010500, -0.950316164857006980, -0.950331727986212900, -0.950347288739589620, +-0.950362847117098060, -0.950378403118699480, -0.950393956744354780, -0.950409507994025240, -0.950425056867671870, -0.950440603365255930, -0.950456147486738460, -0.950471689232080590, +-0.950487228601243570, -0.950502765594188340, -0.950518300210876350, -0.950533832451268430, -0.950549362315326160, -0.950564889803010350, -0.950580414914282360, -0.950595937649103220, +-0.950611458007434410, -0.950626975989236840, -0.950642491594471890, -0.950658004823100590, -0.950673515675084400, -0.950689024150384370, -0.950704530248961840, -0.950720033970777980, +-0.950735535315794020, -0.950751034283971230, -0.950766530875270740, -0.950782025089654040, -0.950797516927082250, -0.950813006387516650, -0.950828493470918580, -0.950843978177249300, +-0.950859460506469970, -0.950874940458542040, -0.950890418033426780, -0.950905893231085430, -0.950921366051479370, -0.950936836494569950, -0.950952304560318320, -0.950967770248686060, +-0.950983233559634320, -0.950998694493124460, -0.951014153049117850, -0.951029609227575960, -0.951045063028460040, -0.951060514451731340, -0.951075963497351460, -0.951091410165281650, +-0.951106854455483370, -0.951122296367917790, -0.951137735902546690, -0.951153173059331000, -0.951168607838232540, -0.951184040239212550, -0.951199470262232500, -0.951214897907253660, +-0.951230323174237610, -0.951245746063145830, -0.951261166573939550, -0.951276584706580500, -0.951292000461029910, -0.951307413837249260, -0.951322824835200250, -0.951338233454844030, +-0.951353639696142280, -0.951369043559056490, -0.951384445043547910, -0.951399844149578340, -0.951415240877109160, -0.951430635226101940, -0.951446027196518050, -0.951461416788319080, +-0.951476804001466610, -0.951492188835922130, -0.951507571291647090, -0.951522951368603210, -0.951538329066751950, -0.951553704386054910, -0.951569077326473440, -0.951584447887969480, +-0.951599816070504260, -0.951615181874039600, -0.951630545298536860, -0.951645906343957850, -0.951661265010264160, -0.951676621297417150, -0.951691975205378630, -0.951707326734110180, +-0.951722675883573510, -0.951738022653729980, -0.951753367044541500, -0.951768709055969550, -0.951784048687975950, -0.951799385940522050, -0.951814720813569770, -0.951830053307080700, +-0.951845383421016540, -0.951860711155338770, -0.951876036510009400, -0.951891359484989820, -0.951906680080241930, -0.951921998295727210, -0.951937314131407590, -0.951952627587244750, +-0.951967938663200290, -0.951983247359235900, -0.951998553675313500, -0.952013857611394680, -0.952029159167441130, -0.952044458343414780, -0.952059755139277210, -0.952075049554990340, +-0.952090341590515750, -0.952105631245815490, -0.952120918520850900, -0.952136203415584250, -0.952151485929976890, -0.952166766063990980, -0.952182043817588090, -0.952197319190730030, +-0.952212592183378730, -0.952227862795495980, -0.952243131027043500, -0.952258396877983300, -0.952273660348277100, -0.952288921437886680, -0.952304180146773980, -0.952319436474900800, +-0.952334690422229070, -0.952349941988720470, -0.952365191174337270, -0.952380437979040930, -0.952395682402793490, -0.952410924445556860, -0.952426164107292970, -0.952441401387963630, +-0.952456636287530860, -0.952471868805956360, -0.952487098943202270, -0.952502326699230410, -0.952517552074002790, -0.952532775067481240, -0.952547995679627780, -0.952563213910404330, +-0.952578429759772800, -0.952593643227695350, -0.952608854314133560, -0.952624063019049780, -0.952639269342405840, -0.952654473284163750, -0.952669674844285330, -0.952684874022732830, +-0.952700070819468170, -0.952715265234453270, -0.952730457267650270, -0.952745646919021080, -0.952760834188527750, -0.952776019076132410, -0.952791201581796980, -0.952806381705483480, +-0.952821559447154080, -0.952836734806770890, -0.952851907784295740, -0.952867078379690870, -0.952882246592918310, -0.952897412423940100, -0.952912575872718380, -0.952927736939215180, +-0.952942895623392740, -0.952958051925212880, -0.952973205844638070, -0.952988357381630120, -0.953003506536151400, -0.953018653308163820, -0.953033797697629640, -0.953048939704510990, +-0.953064079328769910, -0.953079216570368650, -0.953094351429269460, -0.953109483905434260, -0.953124613998825420, -0.953139741709405080, -0.953154867037135370, -0.953169989981978330, +-0.953185110543896540, -0.953200228722851930, -0.953215344518806630, -0.953230457931723120, -0.953245568961563320, -0.953260677608289700, -0.953275783871864290, -0.953290887752249460, +-0.953305989249407460, -0.953321088363300430, -0.953336185093890730, -0.953351279441140620, -0.953366371405012130, -0.953381460985467830, -0.953396548182469880, -0.953411632995980530, +-0.953426715425962130, -0.953441795472376950, -0.953456873135187230, -0.953471948414355340, -0.953487021309843640, -0.953502091821614380, -0.953517159949629820, -0.953532225693852430, +-0.953547289054244460, -0.953562350030768170, -0.953577408623386140, -0.953592464832060500, -0.953607518656753750, -0.953622570097428120, -0.953637619154046210, -0.953652665826570160, +-0.953667710114962430, -0.953682752019185510, -0.953697791539201640, -0.953712828674973310, -0.953727863426462870, -0.953742895793632810, -0.953757925776445580, -0.953772953374863340, +-0.953787978588848890, -0.953803001418364490, -0.953818021863372500, -0.953833039923835610, -0.953848055599715970, -0.953863068890976270, -0.953878079797578770, -0.953893088319486160, +-0.953908094456660800, -0.953923098209065290, -0.953938099576661980, -0.953953098559413460, -0.953968095157282090, -0.953983089370230570, -0.953998081198221270, -0.954013070641216880, +-0.954028057699179640, -0.954043042372072380, -0.954058024659857450, -0.954073004562497550, -0.954087982079955150, -0.954102957212192630, -0.954117929959172880, -0.954132900320858180, +-0.954147868297211430, -0.954162833888194780, -0.954177797093771150, -0.954192757913903010, -0.954207716348553060, -0.954222672397683660, -0.954237626061257730, -0.954252577339237630, +-0.954267526231586170, -0.954282472738265720, -0.954297416859239300, -0.954312358594469170, -0.954327297943918350, -0.954342234907549100, -0.954357169485324340, -0.954372101677206650, +-0.954387031483158730, -0.954401958903143170, -0.954416883937122760, -0.954431806585060110, -0.954446726846918000, -0.954461644722659040, -0.954476560212245920, -0.954491473315641440, +-0.954506384032808300, -0.954521292363709200, -0.954536198308306830, -0.954551101866564000, -0.954566003038443410, -0.954580901823907760, -0.954595798222919960, -0.954610692235442590, +-0.954625583861438480, -0.954640473100870410, -0.954655359953701210, -0.954670244419893570, -0.954685126499410290, -0.954700006192214290, -0.954714883498268270, -0.954729758417534930, +-0.954744630949977300, -0.954759501095558070, -0.954774368854240050, -0.954789234225986160, -0.954804097210759100, -0.954818957808521880, -0.954833816019237220, -0.954848671842868040, +-0.954863525279377230, -0.954878376328727520, -0.954893224990881920, -0.954908071265803240, -0.954922915153454400, -0.954937756653798210, -0.954952595766797700, -0.954967432492415670, +-0.954982266830615050, -0.954997098781358860, -0.955011928344609800, -0.955026755520331010, -0.955041580308485180, -0.955056402709035580, -0.955071222721944890, -0.955086040347176150, +-0.955100855584692270, -0.955115668434456390, -0.955130478896431100, -0.955145286970579880, -0.955160092656865300, -0.955174895955250510, -0.955189696865698430, -0.955204495388172200, +-0.955219291522634630, -0.955234085269048960, -0.955248876627377900, -0.955263665597584800, -0.955278452179632480, -0.955293236373484070, -0.955308018179102600, -0.955322797596451000, +-0.955337574625492400, -0.955352349266189950, -0.955367121518506560, -0.955381891382405370, -0.955396658857849520, -0.955411423944801940, -0.955426186643225870, -0.955440946953084240, +-0.955455704874340280, -0.955470460406957050, -0.955485213550897770, -0.955499964306125270, -0.955514712672603020, -0.955529458650293930, -0.955544202239161260, -0.955558943439167920, +-0.955573682250277390, -0.955588418672452590, -0.955603152705656770, -0.955617884349853060, -0.955632613605004620, -0.955647340471074690, -0.955662064948026300, -0.955676787035822930, +-0.955691506734427380, -0.955706224043803230, -0.955720938963913410, -0.955735651494721280, -0.955750361636189980, -0.955765069388282870, -0.955779774750963100, -0.955794477724193790, +-0.955809178307938320, -0.955823876502159940, -0.955838572306821900, -0.955853265721887340, -0.955867956747319610, -0.955882645383082100, -0.955897331629137930, -0.955912015485450350, +-0.955926696951982850, -0.955941376028698550, -0.955956052715560830, -0.955970727012532940, -0.955985398919578230, -0.956000068436660080, -0.956014735563741720, -0.956029400300786540, +-0.956044062647757880, -0.956058722604618990, -0.956073380171333360, -0.956088035347864240, -0.956102688134175090, -0.956117338530229070, -0.956131986535989850, -0.956146632151420590, +-0.956161275376484880, -0.956175916211145840, -0.956190554655367060, -0.956205190709111920, -0.956219824372343760, -0.956234455645026070, -0.956249084527122210, -0.956263711018595640, +-0.956278335119409850, -0.956292956829528200, -0.956307576148914150, -0.956322193077531190, -0.956336807615342680, -0.956351419762312190, -0.956366029518403100, -0.956380636883578990, +-0.956395241857803220, -0.956409844441039490, -0.956424444633250940, -0.956439042434401480, -0.956453637844454250, -0.956468230863373070, -0.956482821491121290, -0.956497409727662400, +-0.956511995572960070, -0.956526579026977570, -0.956541160089678820, -0.956555738761027060, -0.956570315040986000, -0.956584888929519090, -0.956599460426590050, -0.956614029532162350, +-0.956628596246199560, -0.956643160568665160, -0.956657722499523080, -0.956672282038736440, -0.956686839186269290, -0.956701393942084980, -0.956715946306147200, -0.956730496278419550, +-0.956745043858865610, -0.956759589047449180, -0.956774131844133620, -0.956788672248882870, -0.956803210261660380, -0.956817745882429850, -0.956832279111154980, -0.956846809947799470, +-0.956861338392326790, -0.956875864444700850, -0.956890388104885250, -0.956904909372843780, -0.956919428248539820, -0.956933944731937490, -0.956948458823000170, -0.956962970521691770, +-0.956977479827975870, -0.956991986741816400, -0.957006491263176830, -0.957020993392021070, -0.957035493128312820, -0.957049990472015890, -0.957064485423093970, -0.957078977981510870, +-0.957093468147230290, -0.957107955920216020, -0.957122441300431890, -0.957136924287841580, -0.957151404882409020, -0.957165883084097890, -0.957180358892872230, -0.957194832308695510, +-0.957209303331531760, -0.957223771961344670, -0.957238238198098280, -0.957252702041756160, -0.957267163492282470, -0.957281622549640670, -0.957296079213795000, -0.957310533484708960, +-0.957324985362346670, -0.957339434846671940, -0.957353881937648590, -0.957368326635240630, -0.957382768939411650, -0.957397208850125910, -0.957411646367347100, -0.957426081491039250, +-0.957440514221166050, -0.957454944557691650, -0.957469372500579840, -0.957483798049794670, -0.957498221205300040, -0.957512641967059760, -0.957527060335037870, -0.957541476309198390, +-0.957555889889505240, -0.957570301075922340, -0.957584709868413600, -0.957599116266943160, -0.957613520271474950, -0.957627921881972880, -0.957642321098401080, -0.957656717920723490, +-0.957671112348904010, -0.957685504382906780, -0.957699894022695840, -0.957714281268235100, -0.957728666119488700, -0.957743048576420560, -0.957757428638994930, -0.957771806307175620, +-0.957786181580926880, -0.957800554460212620, -0.957814924944996980, -0.957829293035244110, -0.957843658730917920, -0.957858022031982560, -0.957872382938402270, -0.957886741450140860, +-0.957901097567162680, -0.957915451289431790, -0.957929802616912300, -0.957944151549568250, -0.957958498087363770, -0.957972842230263130, -0.957987183978230350, -0.958001523331229570, +-0.958015860289225030, -0.958030194852180880, -0.958044527020061150, -0.958058856792830090, -0.958073184170451950, -0.958087509152890870, -0.958101831740110990, -0.958116151932076550, +-0.958130469728751710, -0.958144785130100710, -0.958159098136087680, -0.958173408746677000, -0.958187716961832690, -0.958202022781519220, -0.958216326205700630, -0.958230627234341270, +-0.958244925867405280, -0.958259222104857030, -0.958273515946660660, -0.958287807392780520, -0.958302096443180870, -0.958316383097825960, -0.958330667356680150, -0.958344949219707590, +-0.958359228686872730, -0.958373505758139730, -0.958387780433473060, -0.958402052712836850, -0.958416322596195580, -0.958430590083513500, -0.958444855174754970, -0.958459117869884140, +-0.958473378168865690, -0.958487636071663650, -0.958501891578242730, -0.958516144688566940, -0.958530395402600770, -0.958544643720308680, -0.958558889641654920, -0.958573133166603970, +-0.958587374295120200, -0.958601613027167950, -0.958615849362711710, -0.958630083301715840, -0.958644314844144700, -0.958658543989962860, -0.958672770739134590, -0.958686995091624470, +-0.958701217047396750, -0.958715436606416120, -0.958729653768646830, -0.958743868534053360, -0.958758080902600280, -0.958772290874251980, -0.958786498448973010, -0.958800703626727760, +-0.958814906407480790, -0.958829106791196480, -0.958843304777839410, -0.958857500367374050, -0.958871693559765090, -0.958885884354976680, -0.958900072752973730, -0.958914258753720490, +-0.958928442357181670, -0.958942623563321720, -0.958956802372105230, -0.958970978783496690, -0.958985152797460770, -0.958999324413961960, -0.959013493632964840, -0.959027660454433880, +-0.959041824878333890, -0.959055986904629340, -0.959070146533284820, -0.959084303764264900, -0.959098458597534180, -0.959112611033057340, -0.959126761070798970, -0.959140908710723770, +-0.959155053952796210, -0.959169196796981090, -0.959183337243242900, -0.959197475291546420, -0.959211610941856250, -0.959225744194137090, -0.959239875048353400, -0.959254003504470210, +-0.959268129562451890, -0.959282253222263350, -0.959296374483869060, -0.959310493347233950, -0.959324609812322590, -0.959338723879099690, -0.959352835547529930, -0.959366944817578120, +-0.959381051689208950, -0.959395156162387130, -0.959409258237077460, -0.959423357913244620, -0.959437455190853440, -0.959451550069868600, -0.959465642550254790, -0.959479732631976940, +-0.959493820314999860, -0.959507905599288000, -0.959521988484806520, -0.959536068971520110, -0.959550147059393450, -0.959564222748391480, -0.959578296038478880, -0.959592366929620580, +-0.959606435421781370, -0.959620501514926060, -0.959634565209019570, -0.959648626504026600, -0.959662685399912060, -0.959676741896640760, -0.959690795994177610, -0.959704847692487650, +-0.959718896991535340, -0.959732943891285940, -0.959746988391704140, -0.959761030492754850, -0.959775070194403000, -0.959789107496613390, -0.959803142399351160, -0.959817174902581010, +-0.959831205006267840, -0.959845232710376810, -0.959859258014872600, -0.959873280919720240, -0.959887301424884650, -0.959901319530330980, -0.959915335236023790, -0.959929348541928460, +-0.959943359448009680, -0.959957367954232480, -0.959971374060561880, -0.959985377766962800, -0.959999379073400270, -0.960013377979839320, -0.960027374486244980, -0.960041368592582160, +-0.960055360298816000, -0.960069349604911300, -0.960083336510833330, -0.960097321016546880, -0.960111303122017310, -0.960125282827209330, -0.960139260132088280, -0.960153235036618980, +-0.960167207540766680, -0.960181177644496180, -0.960195145347772950, -0.960209110650561800, -0.960223073552827770, -0.960237034054536200, -0.960250992155651910, -0.960264947856140250, +-0.960278901155966150, -0.960292852055094850, -0.960306800553491380, -0.960320746651120990, -0.960334690347948610, -0.960348631643939580, -0.960362570539058940, -0.960376507033271930, +-0.960390441126543590, -0.960404372818839170, -0.960418302110123800, -0.960432229000362740, -0.960446153489521000, -0.960460075577563970, -0.960473995264456650, -0.960487912550164410, +-0.960501827434652510, -0.960515739917885860, -0.960529649999829930, -0.960543557680449860, -0.960557462959710890, -0.960571365837578290, -0.960585266314017310, -0.960599164388993070, +-0.960613060062470940, -0.960626953334416170, -0.960640844204794120, -0.960654732673569820, -0.960668618740708750, -0.960682502406176140, -0.960696383669937260, -0.960710262531957350, +-0.960724138992201880, -0.960738013050636110, -0.960751884707225170, -0.960765753961934640, -0.960779620814729670, -0.960793485265575730, -0.960807347314437950, -0.960821206961281820, +-0.960835064206072680, -0.960848919048776010, -0.960862771489356840, -0.960876621527780860, -0.960890469164013330, -0.960904314398019600, -0.960918157229765040, -0.960931997659215220, +-0.960945835686335290, -0.960959671311090840, -0.960973504533447100, -0.960987335353369660, -0.961001163770823900, -0.961014989785775260, -0.961028813398189130, -0.961042634608030970, +-0.961056453415266130, -0.961070269819860210, -0.961084083821778680, -0.961097895420986890, -0.961111704617450440, -0.961125511411134560, -0.961139315802005070, -0.961153117790027210, +-0.961166917375166570, -0.961180714557388630, -0.961194509336658950, -0.961208301712942910, -0.961222091686206200, -0.961235879256414180, -0.961249664423532550, -0.961263447187526650, +-0.961277227548362200, -0.961291005506004660, -0.961304781060419720, -0.961318554211572640, -0.961332324959429330, -0.961346093303955150, -0.961359859245115690, -0.961373622782876640, +-0.961387383917203580, -0.961401142648061980, -0.961414898975417540, -0.961428652899235850, -0.961442404419482480, -0.961456153536123240, -0.961469900249123490, -0.961483644558449040, +-0.961497386464065460, -0.961511125965938460, -0.961524863064033620, -0.961538597758316630, -0.961552330048753070, -0.961566059935308750, -0.961579787417949250, -0.961593512496640380, +-0.961607235171347610, -0.961620955442036850, -0.961634673308673690, -0.961648388771223720, -0.961662101829652950, -0.961675812483926750, -0.961689520734011150, -0.961703226579871730, +-0.961716930021474180, -0.961730631058784420, -0.961744329691768040, -0.961758025920390720, -0.961771719744618500, -0.961785411164416850, -0.961799100179751790, -0.961812786790588900, +-0.961826470996894000, -0.961840152798633000, -0.961853832195771590, -0.961867509188275570, -0.961881183776110870, -0.961894855959243290, -0.961908525737638300, -0.961922193111262260, +-0.961935858080080530, -0.961949520644059250, -0.961963180803164120, -0.961976838557361160, -0.961990493906615950, -0.962004146850894640, -0.962017797390162910, -0.962031445524386690, +-0.962045091253531770, -0.962058734577564300, -0.962072375496449860, -0.962086014010154480, -0.962099650118644070, -0.962113283821884660, -0.962126915119841940, -0.962140544012481950, +-0.962154170499770590, -0.962167794581673790, -0.962181416258157560, -0.962195035529187730, -0.962208652394730300, -0.962222266854751320, -0.962235878909216580, -0.962249488558092110, +-0.962263095801344060, -0.962276700638938220, -0.962290303070840620, -0.962303903097017190, -0.962317500717434160, -0.962331095932057230, -0.962344688740852660, -0.962358279143786350, +-0.962371867140824340, -0.962385452731932540, -0.962399035917077320, -0.962412616696224350, -0.962426195069339910, -0.962439771036390000, -0.962453344597340550, -0.962466915752157930, +-0.962480484500807810, -0.962494050843256680, -0.962507614779470220, -0.962521176309414920, -0.962534735433056450, -0.962548292150361310, -0.962561846461295390, -0.962575398365824950, +-0.962588947863915910, -0.962602494955534520, -0.962616039640646900, -0.962629581919219210, -0.962643121791217470, -0.962656659256608040, -0.962670194315356830, -0.962683726967430320, +-0.962697257212794310, -0.962710785051415270, -0.962724310483259240, -0.962737833508292450, -0.962751354126481050, -0.962764872337791290, -0.962778388142189410, -0.962791901539641450, +-0.962805412530113760, -0.962818921113572480, -0.962832427289983970, -0.962845931059314370, -0.962859432421530050, -0.962872931376597020, -0.962886427924481760, -0.962899922065150290, +-0.962913413798569210, -0.962926903124704410, -0.962940390043522500, -0.962953874554989490, -0.962967356659071850, -0.962980836355735840, -0.962994313644947700, -0.963007788526673790, +-0.963021261000880370, -0.963034731067533900, -0.963048198726600520, -0.963061663978046710, -0.963075126821838600, -0.963088587257942890, -0.963102045286325480, -0.963115500906953190, +-0.963128954119791940, -0.963142404924808400, -0.963155853321968850, -0.963169299311239730, -0.963182742892587210, -0.963196184065977960, -0.963209622831378120, -0.963223059188754390, +-0.963236493138072910, -0.963249924679300260, -0.963263353812402800, -0.963276780537346890, -0.963290204854099000, -0.963303626762625600, -0.963317046262893270, -0.963330463354868160, +-0.963343878038517070, -0.963357290313806120, -0.963370700180702030, -0.963384107639171150, -0.963397512689180060, -0.963410915330695120, -0.963424315563682910, -0.963437713388109910, +-0.963451108803942690, -0.963464501811147620, -0.963477892409691390, -0.963491280599540370, -0.963504666380661120, -0.963518049753020240, -0.963531430716584200, -0.963544809271319690, +-0.963558185417193070, -0.963571559154170920, -0.963584930482219940, -0.963598299401306700, -0.963611665911397570, -0.963625030012459470, -0.963638391704458640, -0.963651750987361890, +-0.963665107861135680, -0.963678462325746830, -0.963691814381161690, -0.963705164027347180, -0.963718511264269660, -0.963731856091895820, -0.963745198510192360, -0.963758538519125960, +-0.963771876118663220, -0.963785211308770820, -0.963798544089415340, -0.963811874460563490, -0.963825202422181950, -0.963838527974237410, -0.963851851116696580, -0.963865171849526030, +-0.963878490172692670, -0.963891806086162980, -0.963905119589903880, -0.963918430683881830, -0.963931739368063870, -0.963945045642416450, -0.963958349506906510, -0.963971650961500610, +-0.963984950006165690, -0.963998246640868190, -0.964011540865575280, -0.964024832680253410, -0.964038122084869500, -0.964051409079390240, -0.964064693663782560, -0.964077975838013130, +-0.964091255602048670, -0.964104532955856190, -0.964117807899402270, -0.964131080432653830, -0.964144350555577790, -0.964157618268140840, -0.964170883570309780, -0.964184146462051530, +-0.964197406943332890, -0.964210665014120780, -0.964223920674382010, -0.964237173924083480, -0.964250424763191890, -0.964263673191674390, -0.964276919209497540, -0.964290162816628600, +-0.964303404013034050, -0.964316642798681120, -0.964329879173536630, -0.964343113137567260, -0.964356344690740270, -0.964369573833022240, -0.964382800564380420, -0.964396024884781600, +-0.964409246794192710, -0.964422466292580660, -0.964435683379912480, -0.964448898056155080, -0.964462110321275380, -0.964475320175240510, -0.964488527618017290, -0.964501732649572730, +-0.964514935269873860, -0.964528135478887600, -0.964541333276581090, -0.964554528662921130, -0.964567721637874960, -0.964580912201409510, -0.964594100353491690, -0.964607286094088750, +-0.964620469423167370, -0.964633650340695040, -0.964646828846638440, -0.964660004940964820, -0.964673178623641210, -0.964686349894634640, -0.964699518753912130, -0.964712685201440930, +-0.964725849237187960, -0.964739010861120350, -0.964752170073205240, -0.964765326873409770, -0.964778481261700850, -0.964791633238045840, -0.964804782802411660, -0.964817929954765560, +-0.964831074695074560, -0.964844217023306030, -0.964857356939426870, -0.964870494443404340, -0.964883629535205570, -0.964896762214797700, -0.964909892482147980, -0.964923020337223440, +-0.964936145779991430, -0.964949268810419090, -0.964962389428473570, -0.964975507634121990, -0.964988623427331600, -0.965001736808069780, -0.965014847776303530, -0.965027956332000230, +-0.965041062475127000, -0.965054166205651100, -0.965067267523539880, -0.965080366428760380, -0.965093462921279950, -0.965106557001065960, -0.965119648668085530, -0.965132737922306030, +-0.965145824763694590, -0.965158909192218690, -0.965171991207845470, -0.965185070810542280, -0.965198148000276370, -0.965211222777015100, -0.965224295140725830, -0.965237365091375810, +-0.965250432628932290, -0.965263497753362840, -0.965276560464634500, -0.965289620762714850, -0.965302678647571020, -0.965315734119170710, -0.965328787177480940, -0.965341837822469180, +-0.965354886054102800, -0.965367931872349370, -0.965380975277176030, -0.965394016268550150, -0.965407054846439290, -0.965420091010810830, -0.965433124761632120, -0.965446156098870630, +-0.965459185022493730, -0.965472211532468760, -0.965485235628763430, -0.965498257311344980, -0.965511276580180770, -0.965524293435238490, -0.965537307876485400, -0.965550319903889060, +-0.965563329517416970, -0.965576336717036470, -0.965589341502715250, -0.965602343874420570, -0.965615343832120110, -0.965628341375781240, -0.965641336505371540, -0.965654329220858480, +-0.965667319522209630, -0.965680307409392480, -0.965693292882374490, -0.965706275941123350, -0.965719256585606420, -0.965732234815791510, -0.965745210631645870, -0.965758184033137290, +-0.965771155020233140, -0.965784123592901220, -0.965797089751108890, -0.965810053494823960, -0.965823014824013780, -0.965835973738646160, -0.965848930238688560, -0.965861884324108690, +-0.965874835994874000, -0.965887785250952310, -0.965900732092311090, -0.965913676518918020, -0.965926618530740910, -0.965939558127747120, -0.965952495309904460, -0.965965430077180610, +-0.965978362429543160, -0.965991292366959800, -0.966004219889398220, -0.966017144996826000, -0.966030067689211070, -0.966042987966520770, -0.966055905828723250, -0.966068821275785750, +-0.966081734307676300, -0.966094644924362480, -0.966107553125812090, -0.966120458911992830, -0.966133362282872390, -0.966146263238418460, -0.966159161778599060, -0.966172057903381680, +-0.966184951612734100, -0.966197842906624140, -0.966210731785019590, -0.966223618247888270, -0.966236502295197860, -0.966249383926916170, -0.966262263143011000, -0.966275139943450270, +-0.966288014328201660, -0.966300886297232990, -0.966313755850512050, -0.966326622988006870, -0.966339487709685030, -0.966352350015514450, -0.966365209905463040, -0.966378067379498610, +-0.966390922437588950, -0.966403775079702100, -0.966416625305805630, -0.966429473115867800, -0.966442318509856180, -0.966455161487738800, -0.966468002049483580, -0.966480840195058200, +-0.966493675924430810, -0.966506509237569200, -0.966519340134441410, -0.966532168615015120, -0.966544994679258470, -0.966557818327139380, -0.966570639558625770, -0.966583458373685420, +-0.966596274772286490, -0.966609088754396880, -0.966621900319984630, -0.966634709469017530, -0.966647516201463720, -0.966660320517291010, -0.966673122416467630, -0.966685921898961410, +-0.966698718964740360, -0.966711513613772500, -0.966724305846025870, -0.966737095661468480, -0.966749883060068370, -0.966762668041793560, -0.966775450606611960, -0.966788230754491940, +-0.966801008485401180, -0.966813783799307940, -0.966826556696180230, -0.966839327175986200, -0.966852095238693750, -0.966864860884271150, -0.966877624112686410, -0.966890384923907550, +-0.966903143317902720, -0.966915899294640060, -0.966928652854087690, -0.966941403996213640, -0.966954152720986060, -0.966966899028373180, -0.966979642918343040, -0.966992384390863660, +-0.967005123445903500, -0.967017860083430380, -0.967030594303412650, -0.967043326105818450, -0.967056055490616020, -0.967068782457773280, -0.967081507007258700, -0.967094229139040310, +-0.967106948853086460, -0.967119666149365060, -0.967132381027844600, -0.967145093488493200, -0.967157803531279110, -0.967170511156170360, -0.967183216363135420, -0.967195919152142540, +-0.967208619523159620, -0.967221317476155360, -0.967234013011097680, -0.967246706127955050, -0.967259396826695590, -0.967272085107287790, -0.967284770969699560, -0.967297454413899580, +-0.967310135439855890, -0.967322814047536840, -0.967335490236910790, -0.967348164007945990, -0.967360835360610790, -0.967373504294873570, -0.967386170810702440, -0.967398834908066000, +-0.967411496586932370, -0.967424155847270150, -0.967436812689047470, -0.967449467112232670, -0.967462119116794360, -0.967474768702700660, -0.967487415869920040, -0.967500060618420870, +-0.967512702948171600, -0.967525342859140600, -0.967537980351296230, -0.967550615424606740, -0.967563248079040930, -0.967575878314566930, -0.967588506131153210, -0.967601131528768140, +-0.967613754507380410, -0.967626375066958140, -0.967638993207470040, -0.967651608928884470, -0.967664222231169880, -0.967676833114294640, -0.967689441578227340, -0.967702047622936550, +-0.967714651248390510, -0.967727252454557930, -0.967739851241407160, -0.967752447608906770, -0.967765041557025250, -0.967777633085731170, -0.967790222194993000, -0.967802808884779320, +-0.967815393155058490, -0.967827975005799310, -0.967840554436970040, -0.967853131448539570, -0.967865706040476170, -0.967878278212748520, -0.967890847965325100, -0.967903415298174700, +-0.967915980211265680, -0.967928542704566740, -0.967941102778046350, -0.967953660431673300, -0.967966215665416070, -0.967978768479243360, -0.967991318873123730, -0.968003866847025660, +-0.968016412400918070, -0.968028955534769310, -0.968041496248548290, -0.968054034542223500, -0.968066570415763610, -0.968079103869137310, -0.968091634902313200, -0.968104163515260070, +-0.968116689707946510, -0.968129213480341200, -0.968141734832412840, -0.968154253764130220, -0.968166770275461940, -0.968179284366376680, -0.968191796036843240, -0.968204305286830320, +-0.968216812116306610, -0.968229316525241020, -0.968241818513601920, -0.968254318081358420, -0.968266815228479020, -0.968279309954932720, -0.968291802260688010, -0.968304292145713900, +-0.968316779609978970, -0.968329264653452150, -0.968341747276102120, -0.968354227477897790, -0.968366705258807860, -0.968379180618801130, -0.968391653557846510, -0.968404124075912700, +-0.968416592172968600, -0.968429057848983030, -0.968441521103924790, -0.968453981937762780, -0.968466440350465810, -0.968478896342002790, -0.968491349912342430, -0.968503801061453730, +-0.968516249789305620, -0.968528696095866670, -0.968541139981106140, -0.968553581444992710, -0.968566020487495400, -0.968578457108583040, -0.968590891308224510, -0.968603323086388630, +-0.968615752443044540, -0.968628179378161150, -0.968640603891707250, -0.968653025983651770, -0.968665445653963840, -0.968677862902612150, -0.968690277729565950, -0.968702690134793930, +-0.968715100118265340, -0.968727507679948860, -0.968739912819813640, -0.968752315537828700, -0.968764715833962950, -0.968777113708185420, -0.968789509160465020, -0.968801902190771000, +-0.968814292799072050, -0.968826680985337530, -0.968839066749536130, -0.968851450091637200, -0.968863831011609560, -0.968876209509422440, -0.968888585585044760, -0.968900959238445660, +-0.968913330469594050, -0.968925699278459170, -0.968938065665010060, -0.968950429629215740, -0.968962791171045450, -0.968975150290468100, -0.968987506987452840, -0.968999861261968910, +-0.969012213113985220, -0.969024562543471020, -0.969036909550395560, -0.969049254134727640, -0.969061596296436730, -0.969073936035491750, -0.969086273351861930, -0.969098608245516410, +-0.969110940716424450, -0.969123270764554960, -0.969135598389877510, -0.969147923592360900, -0.969160246371974620, -0.969172566728687570, -0.969184884662469330, -0.969197200173288700, +-0.969209513261115040, -0.969221823925917710, -0.969234132167665740, -0.969246437986328590, -0.969258741381875180, -0.969271042354274970, -0.969283340903497100, -0.969295637029511050, +-0.969307930732285720, -0.969320222011790690, -0.969332510867994990, -0.969344797300868090, -0.969357081310379230, -0.969369362896497560, -0.969381642059192530, -0.969393918798433510, +-0.969406193114189520, -0.969418465006430140, -0.969430734475124510, -0.969443001520242210, -0.969455266141752260, -0.969467528339624240, -0.969479788113827400, -0.969492045464330990, +-0.969504300391104580, -0.969516552894117310, -0.969528802973338650, -0.969541050628738080, -0.969553295860284830, -0.969565538667948370, -0.969577779051698060, -0.969590017011503270, +-0.969602252547333450, -0.969614485659157980, -0.969626716346946420, -0.969638944610667910, -0.969651170450292140, -0.969663393865788370, -0.969675614857126170, -0.969687833424274890, +-0.969700049567204130, -0.969712263285883220, -0.969724474580281550, -0.969736683450368790, -0.969748889896114190, -0.969761093917487550, -0.969773295514458010, -0.969785494686995380, +-0.969797691435068890, -0.969809885758648240, -0.969822077657702790, -0.969834267132202220, -0.969846454182116010, -0.969858638807413630, -0.969870821008064650, -0.969883000784038660, +-0.969895178135305120, -0.969907353061833620, -0.969919525563593730, -0.969931695640555150, -0.969943863292687110, -0.969956028519959660, -0.969968191322342020, -0.969980351699803900, +-0.969992509652314870, -0.970004665179844630, -0.970016818282362750, -0.970028968959838700, -0.970041117212242290, -0.970053263039543090, -0.970065406441710800, -0.970077547418714880, +-0.970089685970525140, -0.970101822097111270, -0.970113955798442730, -0.970126087074489330, -0.970138215925220760, -0.970150342350606600, -0.970162466350616650, -0.970174587925220380, +-0.970186707074387810, -0.970198823798088420, -0.970210938096291890, -0.970223049968968130, -0.970235159416086730, -0.970247266437617380, -0.970259371033529880, -0.970271473203793920, +-0.970283572948379300, -0.970295670267255830, -0.970307765160393080, -0.970319857627760960, -0.970331947669329180, -0.970344035285067630, -0.970356120474945790, -0.970368203238933800, +-0.970380283577001230, -0.970392361489118120, -0.970404436975253910, -0.970416510035378650, -0.970428580669462140, -0.970440648877474170, -0.970452714659384650, -0.970464778015163290, +-0.970476838944779980, -0.970488897448204550, -0.970500953525406880, -0.970513007176356800, -0.970525058401024320, -0.970537107199379130, -0.970549153571391150, -0.970561197517030290, +-0.970573239036266470, -0.970585278129069470, -0.970597314795409340, -0.970609349035255970, -0.970621380848579180, -0.970633410235348880, -0.970645437195535090, -0.970657461729107720, +-0.970669483836036790, -0.970681503516292010, -0.970693520769843500, -0.970705535596661280, -0.970717547996715170, -0.970729557969975180, -0.970741565516411220, -0.970753570635993430, +-0.970765573328691730, -0.970777573594476140, -0.970789571433316460, -0.970801566845182930, -0.970813559830045470, -0.970825550387874210, -0.970837538518638970, -0.970849524222309970, +-0.970861507498857020, -0.970873488348250380, -0.970885466770460060, -0.970897442765455980, -0.970909416333208370, -0.970921387473687280, -0.970933356186862610, -0.970945322472704600, +-0.970957286331183280, -0.970969247762268670, -0.970981206765931030, -0.970993163342140360, -0.971005117490866710, -0.971017069212080310, -0.971029018505751300, -0.971040965371849700, +-0.971052909810345640, -0.971064851821209380, -0.971076791404410940, -0.971088728559920570, -0.971100663287708390, -0.971112595587744430, -0.971124525459999060, -0.971136452904442390, +-0.971148377921044580, -0.971160300509775860, -0.971172220670606380, -0.971184138403506260, -0.971196053708445860, -0.971207966585395430, -0.971219877034324890, -0.971231785055204800, +-0.971243690648005200, -0.971255593812696330, -0.971267494549248540, -0.971279392857631980, -0.971291288737816890, -0.971303182189773630, -0.971315073213472440, -0.971326961808883560, +-0.971338847975977250, -0.971350731714723860, -0.971362613025093640, -0.971374491907056830, -0.971386368360583790, -0.971398242385644870, -0.971410113982210440, -0.971421983150250520, +-0.971433849889735800, -0.971445714200636410, -0.971457576082922710, -0.971469435536565060, -0.971481292561533930, -0.971493147157799440, -0.971504999325332190, -0.971516849064102290, +-0.971528696374080350, -0.971540541255236700, -0.971552383707541710, -0.971564223730965740, -0.971576061325479130, -0.971587896491052480, -0.971599729227656030, -0.971611559535260240, +-0.971623387413835580, -0.971635212863352530, -0.971647035883781320, -0.971658856475092650, -0.971670674637256760, -0.971682490370244230, -0.971694303674025320, -0.971706114548570810, +-0.971717922993850960, -0.971729729009836340, -0.971741532596497310, -0.971753333753804570, -0.971765132481728470, -0.971776928780239470, -0.971788722649308160, -0.971800514088905110, +-0.971812303099000680, -0.971824089679565570, -0.971835873830570240, -0.971847655551985160, -0.971859434843781010, -0.971871211705928270, -0.971882986138397520, -0.971894758141159220, +-0.971906527714184070, -0.971918294857442520, -0.971930059570905390, -0.971941821854543030, -0.971953581708326130, -0.971965339132225160, -0.971977094126211030, -0.971988846690253980, +-0.972000596824324940, -0.972012344528394360, -0.972024089802433040, -0.972035832646411360, -0.972047573060300100, -0.972059311044069950, -0.972071046597691610, -0.972082779721135440, +-0.972094510414372560, -0.972106238677373220, -0.972117964510108350, -0.972129687912548610, -0.972141408884664600, -0.972153127426427120, -0.972164843537806740, -0.972176557218774270, +-0.972188268469300400, -0.972199977289355920, -0.972211683678911420, -0.972223387637937810, -0.972235089166405660, -0.972246788264285900, -0.972258484931548980, -0.972270179168166050, +-0.972281870974107450, -0.972293560349344330, -0.972305247293847260, -0.972316931807587160, -0.972328613890534600, -0.972340293542660610, -0.972351970763935760, -0.972363645554331080, +-0.972375317913817260, -0.972386987842365210, -0.972398655339945630, -0.972410320406529420, -0.972421983042087380, -0.972433643246590430, -0.972445301020009370, -0.972456956362314990, +-0.972468609273478330, -0.972480259753469970, -0.972491907802261140, -0.972503553419822420, -0.972515196606124950, -0.972526837361139320, -0.972538475684836760, -0.972550111577187960, +-0.972561745038163840, -0.972573376067735310, -0.972585004665873500, -0.972596630832549100, -0.972608254567733140, -0.972619875871396530, -0.972631494743510180, -0.972643111184045120, +-0.972654725192972250, -0.972666336770262710, -0.972677945915887190, -0.972689552629816820, -0.972701156912022640, -0.972712758762475540, -0.972724358181146440, -0.972735955168006590, +-0.972747549723026790, -0.972759141846178070, -0.972770731537431540, -0.972782318796758250, -0.972793903624129100, -0.972805486019515220, -0.972817065982887530, -0.972828643514217270, +-0.972840218613475360, -0.972851791280632930, -0.972863361515661110, -0.972874929318530700, -0.972886494689213070, -0.972898057627679220, -0.972909618133900200, -0.972921176207847130, +-0.972932731849491140, -0.972944285058803260, -0.972955835835754730, -0.972967384180316590, -0.972978930092459950, -0.972990473572156070, -0.973002014619375970, -0.973013553234090780, +-0.973025089416271750, -0.973036623165890010, -0.973048154482916710, -0.973059683367323070, -0.973071209819080130, -0.973082733838159240, -0.973094255424531430, -0.973105774578168050, +-0.973117291299040230, -0.973128805587119230, -0.973140317442376060, -0.973151826864782300, -0.973163333854308750, -0.973174838410927000, -0.973186340534608170, -0.973197840225323520, +-0.973209337483044170, -0.973220832307741480, -0.973232324699386700, -0.973243814657951180, -0.973255302183406170, -0.973266787275722800, -0.973278269934872430, -0.973289750160826530, +-0.973301227953556230, -0.973312703313032770, -0.973324176239227620, -0.973335646732111930, -0.973347114791657250, -0.973358580417834630, -0.973370043610615740, -0.973381504369971620, +-0.973392962695873830, -0.973404418588293520, -0.973415872047202260, -0.973427323072571180, -0.973438771664371980, -0.973450217822575680, -0.973461661547153970, -0.973473102838078090, +-0.973484541695319390, -0.973495978118849360, -0.973507412108639450, -0.973518843664661020, -0.973530272786885310, -0.973541699475284130, -0.973553123729828500, -0.973564545550490210, +-0.973575964937240410, -0.973587381890050900, -0.973598796408892800, -0.973610208493737690, -0.973621618144557170, -0.973633025361322570, -0.973644430144005260, -0.973655832492577030, +-0.973667232407009250, -0.973678629887273270, -0.973690024933340780, -0.973701417545183250, -0.973712807722772130, -0.973724195466079020, -0.973735580775075380, -0.973746963649732790, +-0.973758344090022820, -0.973769722095917060, -0.973781097667386850, -0.973792470804404010, -0.973803841506939990, -0.973815209774966270, -0.973826575608454650, -0.973837939007376470, +-0.973849299971703550, -0.973860658501407240, -0.973872014596459450, -0.973883368256831530, -0.973894719482495170, -0.973906068273422080, -0.973917414629583810, -0.973928758550951960, +-0.973940100037498200, -0.973951439089194240, -0.973962775706011750, -0.973974109887922210, -0.973985441634897420, -0.973996770946909060, -0.974008097823928720, -0.974019422265928190, +-0.974030744272879060, -0.974042063844753110, -0.974053380981521940, -0.974064695683157340, -0.974076007949631010, -0.974087317780914730, -0.974098625176980090, -0.974109930137798900, +-0.974121232663342830, -0.974132532753583800, -0.974143830408493280, -0.974155125628043290, -0.974166418412205530, -0.974177708760951670, -0.974188996674253520, -0.974200282152082870, +-0.974211565194411540, -0.974222845801211320, -0.974234123972453900, -0.974245399708111190, -0.974256673008155110, -0.974267943872557220, -0.974279212301289550, -0.974290478294323800, +-0.974301741851631880, -0.974313002973185570, -0.974324261658956800, -0.974335517908917260, -0.974346771723039070, -0.974358023101293820, -0.974369272043653640, -0.974380518550090220, +-0.974391762620575590, -0.974403004255081420, -0.974414243453579740, -0.974425480216042580, -0.974436714542441630, -0.974447946432748900, -0.974459175886936310, -0.974470402904975770, +-0.974481627486839310, -0.974492849632498710, -0.974504069341925900, -0.974515286615093120, -0.974526501451971950, -0.974537713852534630, -0.974548923816752950, -0.974560131344598960, +-0.974571336436044660, -0.974582539091062070, -0.974593739309623120, -0.974604937091699820, -0.974616132437264080, -0.974627325346288150, -0.974638515818743830, -0.974649703854603260, +-0.974660889453838440, -0.974672072616421300, -0.974683253342324090, -0.974694431631518700, -0.974705607483977170, -0.974716780899671730, -0.974727951878574310, -0.974739120420656910, +-0.974750286525891800, -0.974761450194250980, -0.974772611425706590, -0.974783770220230550, -0.974794926577795100, -0.974806080498372360, -0.974817231981934480, -0.974828381028453480, +-0.974839527637901490, -0.974850671810250760, -0.974861813545473300, -0.974872952843541250, -0.974884089704426860, -0.974895224128102370, -0.974906356114539690, -0.974917485663711170, +-0.974928612775588840, -0.974939737450145060, -0.974950859687351960, -0.974961979487181660, -0.974973096849606420, -0.974984211774598490, -0.974995324262129870, -0.975006434312173150, +-0.975017541924700250, -0.975028647099683510, -0.975039749837095070, -0.975050850136907400, -0.975061947999092520, -0.975073043423622780, -0.975084136410470430, -0.975095226959607710, +-0.975106315071006980, -0.975117400744640370, -0.975128483980480350, -0.975139564778499170, -0.975150643138668950, -0.975161719060962160, -0.975172792545351160, -0.975183863591808090, +-0.975194932200305400, -0.975205998370815340, -0.975217062103310270, -0.975228123397762660, -0.975239182254144630, -0.975250238672428660, -0.975261292652587100, -0.975272344194592300, +-0.975283393298416730, -0.975294439964032530, -0.975305484191412390, -0.975316525980528430, -0.975327565331353230, -0.975338602243859040, -0.975349636718018330, -0.975360668753803670, +-0.975371698351187200, -0.975382725510141600, -0.975393750230639010, -0.975404772512652230, -0.975415792356153390, -0.975426809761115180, -0.975437824727509840, -0.975448837255309950, +-0.975459847344487980, -0.975470854995016510, -0.975481860206867780, -0.975492862980014470, -0.975503863314428950, -0.975514861210083790, -0.975525856666951460, -0.975536849685004540, +-0.975547840264215370, -0.975558828404556650, -0.975569814106000970, -0.975580797368520660, -0.975591778192088420, -0.975602756576676610, -0.975613732522258030, -0.975624706028805130, +-0.975635677096290400, -0.975646645724686510, -0.975657611913965940, -0.975668575664101370, -0.975679536975065380, -0.975690495846830540, -0.975701452279369550, -0.975712406272654760, +-0.975723357826659090, -0.975734306941354990, -0.975745253616715160, -0.975756197852712060, -0.975767139649318600, -0.975778079006507260, -0.975789015924250710, -0.975799950402521650, +-0.975810882441292660, -0.975821812040536530, -0.975832739200225840, -0.975843663920333280, -0.975854586200831540, -0.975865506041693420, -0.975876423442891380, -0.975887338404398450, +-0.975898250926187090, -0.975909161008230220, -0.975920068650500290, -0.975930973852970230, -0.975941876615612710, -0.975952776938400660, -0.975963674821306530, -0.975974570264303230, +-0.975985463267363460, -0.975996353830460130, -0.976007241953565920, -0.976018127636653520, -0.976029010879695850, -0.976039891682665580, -0.976050770045535750, -0.976061645968278820, +-0.976072519450867810, -0.976083390493275530, -0.976094259095474870, -0.976105125257438420, -0.976115988979139200, -0.976126850260550020, -0.976137709101643770, -0.976148565502393150, +-0.976159419462771180, -0.976170270982750550, -0.976181120062304400, -0.976191966701405400, -0.976202810900026470, -0.976213652658140530, -0.976224491975720370, -0.976235328852739110, +-0.976246163289169470, -0.976256995284984440, -0.976267824840156840, -0.976278651954659790, -0.976289476628465990, -0.976300298861548680, -0.976311118653880430, -0.976321936005434490, +-0.976332750916183660, -0.976343563386101070, -0.976354373415159400, -0.976365181003331920, -0.976375986150591400, -0.976386788856910990, -0.976397589122263600, -0.976408386946622240, +-0.976419182329959830, -0.976429975272249510, -0.976440765773464390, -0.976451553833577180, -0.976462339452561110, -0.976473122630389210, -0.976483903367034610, -0.976494681662470110, +-0.976505457516668950, -0.976516230929604160, -0.976527001901248750, -0.976537770431575860, -0.976548536520558620, -0.976559300168169940, -0.976570061374383070, -0.976580820139171020, +-0.976591576462506940, -0.976602330344363830, -0.976613081784715060, -0.976623830783533430, -0.976634577340792290, -0.976645321456464770, -0.976656063130523780, -0.976666802362942790, +-0.976677539153694710, -0.976688273502752890, -0.976699005410090250, -0.976709734875680140, -0.976720461899495680, -0.976731186481510140, -0.976741908621696520, -0.976752628320028290, +-0.976763345576478370, -0.976774060391020100, -0.976784772763626740, -0.976795482694271410, -0.976806190182927250, -0.976816895229567830, -0.976827597834166060, -0.976838297996695300, +-0.976848995717128800, -0.976859690995439790, -0.976870383831601630, -0.976881074225587450, -0.976891762177370620, -0.976902447686924250, -0.976913130754221930, -0.976923811379236670, +-0.976934489561941950, -0.976945165302311010, -0.976955838600317210, -0.976966509455933660, -0.976977177869133960, -0.976987843839891230, -0.976998507368178950, -0.977009168453970340, +-0.977019827097238890, -0.977030483297957830, -0.977041137056100630, -0.977051788371640530, -0.977062437244551000, -0.977073083674805280, -0.977083727662376940, -0.977094369207239240, +-0.977105008309365640, -0.977115644968729490, -0.977126279185304260, -0.977136910959063300, -0.977147540289980080, -0.977158167178028060, -0.977168791623180490, -0.977179413625411050, +-0.977190033184693110, -0.977200650301000010, -0.977211264974305330, -0.977221877204582420, -0.977232486991804870, -0.977243094335946140, -0.977253699236979580, -0.977264301694878880, +-0.977274901709617280, -0.977285499281168590, -0.977296094409506040, -0.977306687094603330, -0.977317277336433810, -0.977327865134971160, -0.977338450490188860, -0.977349033402060360, +-0.977359613870559360, -0.977370191895659320, -0.977380767477333710, -0.977391340615556330, -0.977401911310300520, -0.977412479561539870, -0.977423045369248070, -0.977433608733398680, +-0.977444169653965300, -0.977454728130921380, -0.977465284164240720, -0.977475837753896790, -0.977486388899863390, -0.977496937602113980, -0.977507483860622140, -0.977518027675361670, +-0.977528569046306140, -0.977539107973429130, -0.977549644456704340, -0.977560178496105550, -0.977570710091606120, -0.977581239243180080, -0.977591765950800880, -0.977602290214442340, +-0.977612812034078020, -0.977623331409681610, -0.977633848341226910, -0.977644362828687610, -0.977654874872037390, -0.977665384471250070, -0.977675891626299200, -0.977686396337158590, +-0.977696898603802040, -0.977707398426203240, -0.977717895804335880, -0.977728390738173860, -0.977738883227690870, -0.977749373272860600, -0.977759860873656960, -0.977770346030053530, +-0.977780828742024430, -0.977791309009543140, -0.977801786832583560, -0.977812262211119610, -0.977822735145124970, -0.977833205634573430, -0.977843673679438920, -0.977854139279695220, +-0.977864602435316250, -0.977875063146275700, -0.977885521412547480, -0.977895977234105480, -0.977906430610923530, -0.977916881542975510, -0.977927330030235350, -0.977937776072676730, +-0.977948219670273790, -0.977958660823000200, -0.977969099530830000, -0.977979535793737090, -0.977989969611695380, -0.978000400984678660, -0.978010829912660860, -0.978021256395616210, +-0.978031680433518180, -0.978042102026341120, -0.978052521174058720, -0.978062937876645110, -0.978073352134074090, -0.978083763946319680, -0.978094173313355800, -0.978104580235156670, +-0.978114984711695890, -0.978125386742947800, -0.978135786328886090, -0.978146183469485120, -0.978156578164718570, -0.978166970414560580, -0.978177360218985160, -0.978187747577966340, +-0.978198132491478130, -0.978208514959494680, -0.978218894981989880, -0.978229272558937770, -0.978239647690312570, -0.978250020376088210, -0.978260390616238930, -0.978270758410738520, +-0.978281123759561220, -0.978291486662681180, -0.978301847120072400, -0.978312205131709020, -0.978322560697565070, -0.978332913817614780, -0.978343264491832180, -0.978353612720191500, +-0.978363958502666660, -0.978374301839232020, -0.978384642729861590, -0.978394981174529500, -0.978405317173210000, -0.978415650725877220, -0.978425981832505290, -0.978436310493068450, +-0.978446636707540840, -0.978456960475896590, -0.978467281798109930, -0.978477600674155120, -0.978487917104006180, -0.978498231087637560, -0.978508542625023400, -0.978518851716137840, +-0.978529158360955110, -0.978539462559449570, -0.978549764311595240, -0.978560063617366580, -0.978570360476737840, -0.978580654889683150, -0.978590946856176760, -0.978601236376193010, +-0.978611523449706260, -0.978621808076690640, -0.978632090257120500, -0.978642369990970100, -0.978652647278213880, -0.978662922118825880, -0.978673194512780680, -0.978683464460052500, +-0.978693731960615710, -0.978703997014444440, -0.978714259621513260, -0.978724519781796420, -0.978734777495268380, -0.978745032761903280, -0.978755285581675570, -0.978765535954559730, +-0.978775783880530100, -0.978786029359560940, -0.978796272391626700, -0.978806512976701740, -0.978816751114760520, -0.978826986805777510, -0.978837220049726950, -0.978847450846583310, +-0.978857679196321160, -0.978867905098914750, -0.978878128554338530, -0.978888349562566980, -0.978898568123574670, -0.978908784237335850, -0.978918997903825080, -0.978929209123016840, +-0.978939417894885590, -0.978949624219405790, -0.978959828096551910, -0.978970029526298520, -0.978980228508619990, -0.978990425043490880, -0.979000619130885760, -0.979010810770779010, +-0.979020999963145290, -0.979031186707959080, -0.979041371005194950, -0.979051552854827260, -0.979061732256830800, -0.979071909211179920, -0.979082083717849330, -0.979092255776813580, +-0.979102425388047150, -0.979112592551524610, -0.979122757267220640, -0.979132919535109720, -0.979143079355166530, -0.979153236727365650, -0.979163391651681760, -0.979173544128089320, +-0.979183694156562920, -0.979193841737077460, -0.979203986869607300, -0.979214129554127120, -0.979224269790611720, -0.979234407579035570, -0.979244542919373460, -0.979254675811599970, +-0.979264806255689790, -0.979274934251617600, -0.979285059799358090, -0.979295182898885950, -0.979305303550175750, -0.979315421753202410, -0.979325537507940380, -0.979335650814364690, +-0.979345761672449690, -0.979355870082170400, -0.979365976043501400, -0.979376079556417480, -0.979386180620893440, -0.979396279236903760, -0.979406375404423550, -0.979416469123427280, +-0.979426560393889870, -0.979436649215786100, -0.979446735589090680, -0.979456819513778500, -0.979466900989824140, -0.979476980017202630, -0.979487056595888640, -0.979497130725856980, +-0.979507202407082560, -0.979517271639540050, -0.979527338423204390, -0.979537402758050350, -0.979547464644052850, -0.979557524081186680, -0.979567581069426760, -0.979577635608747780, +-0.979587687699124740, -0.979597737340532570, -0.979607784532945950, -0.979617829276340000, -0.979627871570689310, -0.979637911415969010, -0.979647948812154000, -0.979657983759219090, +-0.979668016257139170, -0.979678046305889170, -0.979688073905444100, -0.979698099055778870, -0.979708121756868390, -0.979718142008687680, -0.979728159811211530, -0.979738175164414970, +-0.979748188068273020, -0.979758198522760580, -0.979768206527852570, -0.979778212083524110, -0.979788215189750120, -0.979798215846505620, -0.979808214053765610, -0.979818209811504910, +-0.979828203119698870, -0.979838193978322170, -0.979848182387350050, -0.979858168346757540, -0.979868151856519540, -0.979878132916611080, -0.979888111527007500, -0.979898087687683490, +-0.979908061398614310, -0.979918032659774840, -0.979928001471140450, -0.979937967832686050, -0.979947931744386660, -0.979957893206217510, -0.979967852218153520, -0.979977808780170050, +-0.979987762892241990, -0.979997714554344480, -0.980007663766452760, -0.980017610528541860, -0.980027554840586900, -0.980037496702563020, -0.980047436114445450, -0.980057373076209330, +-0.980067307587829670, -0.980077239649281840, -0.980087169260540850, -0.980097096421581940, -0.980107021132380350, -0.980116943392911220, -0.980126863203149570, -0.980136780563070960, +-0.980146695472650320, -0.980156607931862880, -0.980166517940683990, -0.980176425499088790, -0.980186330607052510, -0.980196233264550410, -0.980206133471557830, -0.980216031228049790, +-0.980225926534001760, -0.980235819389388750, -0.980245709794186350, -0.980255597748369680, -0.980265483251913980, -0.980275366304794500, -0.980285246906986710, -0.980295125058465720, +-0.980305000759207010, -0.980314874009185710, -0.980324744808377280, -0.980334613156756960, -0.980344479054300110, -0.980354342500982080, -0.980364203496778220, -0.980374062041663770, +-0.980383918135614210, -0.980393771778604870, -0.980403622970611120, -0.980413471711608200, -0.980423318001571680, -0.980433161840476910, -0.980443003228299140, -0.980452842165013940, +-0.980462678650596660, -0.980472512685022670, -0.980482344268267300, -0.980492173400306140, -0.980502000081114540, -0.980511824310667970, -0.980521646088941770, -0.980531465415911520, +-0.980541282291552570, -0.980551096715840400, -0.980560908688750570, -0.980570718210258430, -0.980580525280339450, -0.980590329898969220, -0.980600132066123060, -0.980609931781776690, +-0.980619729045905440, -0.980629523858484900, -0.980639316219490520, -0.980649106128897770, -0.980658893586682350, -0.980668678592819700, -0.980678461147285410, -0.980688241250054830, +-0.980698018901103750, -0.980707794100407540, -0.980717566847941870, -0.980727337143682320, -0.980737104987604470, -0.980746870379683780, -0.980756633319895930, -0.980766393808216510, +-0.980776151844621080, -0.980785907429085340, -0.980795660561584740, -0.980805411242095080, -0.980815159470591840, -0.980824905247050680, -0.980834648571447310, -0.980844389443757290, +-0.980854127863956200, -0.980863863832019960, -0.980873597347924010, -0.980883328411644050, -0.980893057023155770, -0.980902783182434850, -0.980912506889456860, -0.980922228144197830, +-0.980931946946632990, -0.980941663296738490, -0.980951377194489660, -0.980961088639862530, -0.980970797632832570, -0.980980504173375790, -0.980990208261467540, -0.980999909897083850, +-0.981009609080200410, -0.981019305810793000, -0.981029000088837200, -0.981038691914308920, -0.981048381287183970, -0.981058068207438130, -0.981067752675046980, -0.981077434689986540, +-0.981087114252232500, -0.981096791361760650, -0.981106466018546790, -0.981116138222566820, -0.981125807973796450, -0.981135475272211570, -0.981145140117788080, -0.981154802510501690, +-0.981164462450328290, -0.981174119937243790, -0.981183774971223890, -0.981193427552244590, -0.981203077680281700, -0.981212725355311230, -0.981222370577308880, -0.981232013346250540, +-0.981241653662112250, -0.981251291524869780, -0.981260926934499070, -0.981270559890976110, -0.981280190394276720, -0.981289818444376790, -0.981299444041252360, -0.981309067184879420, +-0.981318687875233690, -0.981328306112291270, -0.981337921896028090, -0.981347535226420040, -0.981357146103443270, -0.981366754527073560, -0.981376360497287050, -0.981385964014059530, +-0.981395565077367140, -0.981405163687185890, -0.981414759843491690, -0.981424353546260560, -0.981433944795468530, -0.981443533591091710, -0.981453119933106020, -0.981462703821487590, +-0.981472285256212330, -0.981481864237256360, -0.981491440764595710, -0.981501014838206510, -0.981510586458064770, -0.981520155624146520, -0.981529722336427990, -0.981539286594884990, +-0.981548848399493970, -0.981558407750230730, -0.981567964647071410, -0.981577519089992250, -0.981587071078969250, -0.981596620613978570, -0.981606167694996420, -0.981615712321998850, +-0.981625254494961850, -0.981634794213861910, -0.981644331478674800, -0.981653866289377010, -0.981663398645944430, -0.981672928548353420, -0.981682455996580110, -0.981691980990600620, +-0.981701503530391210, -0.981711023615927990, -0.981720541247187330, -0.981730056424145240, -0.981739569146777960, -0.981749079415061840, -0.981758587228973020, -0.981768092588487630, +-0.981777595493582120, -0.981787095944232520, -0.981796593940415300, -0.981806089482106460, -0.981815582569282470, -0.981825073201919580, -0.981834561379993920, -0.981844047103481940, +-0.981853530372359780, -0.981863011186603800, -0.981872489546190330, -0.981881965451095520, -0.981891438901295930, -0.981900909896767700, -0.981910378437487190, -0.981919844523430730, +-0.981929308154574690, -0.981938769330895410, -0.981948228052369140, -0.981957684318972230, -0.981967138130681260, -0.981976589487472350, -0.981986038389321970, -0.981995484836206580, +-0.982004928828102420, -0.982014370364985960, -0.982023809446833430, -0.982033246073621520, -0.982042680245326480, -0.982052111961924770, -0.982061541223392730, -0.982070968029706840, +-0.982080392380843550, -0.982089814276779330, -0.982099233717490420, -0.982108650702953610, -0.982118065233145040, -0.982127477308041400, -0.982136886927619020, -0.982146294091854390, +-0.982155698800724060, -0.982165101054204510, -0.982174500852272200, -0.982183898194903590, -0.982193293082075260, -0.982202685513763660, -0.982212075489945490, -0.982221463010596980, +-0.982230848075694830, -0.982240230685215600, -0.982249610839135870, -0.982258988537431990, -0.982268363780080640, -0.982277736567058410, -0.982287106898341870, -0.982296474773907580, +-0.982305840193732020, -0.982315203157791970, -0.982324563666063800, -0.982333921718524290, -0.982343277315149920, -0.982352630455917470, -0.982361981140803310, -0.982371329369784330, +-0.982380675142836890, -0.982390018459937900, -0.982399359321063700, -0.982408697726191220, -0.982418033675297010, -0.982427367168357660, -0.982436698205349850, -0.982446026786250370, +-0.982455352911035810, -0.982464676579682950, -0.982473997792168260, -0.982483316548468650, -0.982492632848560700, -0.982501946692421190, -0.982511258080026820, -0.982520567011354370, +-0.982529873486380430, -0.982539177505081800, -0.982548479067435250, -0.982557778173417500, -0.982567074823005320, -0.982576369016175400, -0.982585660752904650, -0.982594950033169660, +-0.982604236856947310, -0.982613521224214410, -0.982622803134947650, -0.982632082589123930, -0.982641359586719940, -0.982650634127712590, -0.982659906212078770, -0.982669175839794960, +-0.982678443010838400, -0.982687707725185660, -0.982696969982813640, -0.982706229783699260, -0.982715487127819200, -0.982724742015150590, -0.982733994445669890, -0.982743244419354460, +-0.982752491936180750, -0.982761736996125790, -0.982770979599166590, -0.982780219745279850, -0.982789457434442680, -0.982798692666631780, -0.982807925441824160, -0.982817155759996730, +-0.982826383621126400, -0.982835609025190180, -0.982844831972164880, -0.982854052462027510, -0.982863270494754970, -0.982872486070324290, -0.982881699188712380, -0.982890909849896240, +-0.982900118053852800, -0.982909323800559060, -0.982918527089992170, -0.982927727922128790, -0.982936926296946070, -0.982946122214421130, -0.982955315674530870, -0.982964506677252330, +-0.982973695222562500, -0.982982881310438430, -0.982992064940857110, -0.983001246113795690, -0.983010424829231180, -0.983019601087140480, -0.983028774887500960, -0.983037946230289390, +-0.983047115115482930, -0.983056281543058690, -0.983065445512993800, -0.983074607025265390, -0.983083766079850260, -0.983092922676725880, -0.983102076815869030, -0.983111228497257180, +-0.983120377720867130, -0.983129524486676120, -0.983138668794661390, -0.983147810644799950, -0.983156950037068930, -0.983166086971445590, -0.983175221447907030, -0.983184353466430410, +-0.983193483026992940, -0.983202610129571770, -0.983211734774144030, -0.983220856960686950, -0.983229976689177660, -0.983239093959593520, -0.983248208771911660, -0.983257321126109310, +-0.983266431022163600, -0.983275538460051780, -0.983284643439751190, -0.983293745961238860, -0.983302846024492360, -0.983311943629488590, -0.983321038776205030, -0.983330131464618780, +-0.983339221694707330, -0.983348309466447800, -0.983357394779817430, -0.983366477634793680, -0.983375558031353680, -0.983384635969474670, -0.983393711449134230, -0.983402784470309490, +-0.983411855032977790, -0.983420923137116380, -0.983429988782702710, -0.983439051969714040, -0.983448112698127820, -0.983457170967921290, -0.983466226779071690, -0.983475280131556720, +-0.983484331025353490, -0.983493379460439350, -0.983502425436791780, -0.983511468954388230, -0.983520510013205950, -0.983529548613222500, -0.983538584754415020, -0.983547618436761200, +-0.983556649660238260, -0.983565678424823790, -0.983574704730495020, -0.983583728577229530, -0.983592749965004680, -0.983601768893798020, -0.983610785363586930, -0.983619799374348850, +-0.983628810926061250, -0.983637820018701700, -0.983646826652247560, -0.983655830826676290, -0.983664832541965460, -0.983673831798092650, -0.983682828595035200, -0.983691822932770690, +-0.983700814811276580, -0.983709804230530450, -0.983718791190509870, -0.983727775691192190, -0.983736757732555200, -0.983745737314576260, -0.983754714437232950, -0.983763689100502940, +-0.983772661304363690, -0.983781631048792680, -0.983790598333767700, -0.983799563159266200, -0.983808525525265760, -0.983817485431744080, -0.983826442878678600, -0.983835397866047010, +-0.983844350393827010, -0.983853300461996040, -0.983862248070531910, -0.983871193219412080, -0.983880135908614340, -0.983889076138116270, -0.983898013907895440, -0.983906949217929540, +-0.983915882068196360, -0.983924812458673470, -0.983933740389338450, -0.983942665860169210, -0.983951588871143200, -0.983960509422238340, -0.983969427513432080, -0.983978343144702340, +-0.983987256316026790, -0.983996167027382910, -0.984005075278748810, -0.984013981070101850, -0.984022884401420050, -0.984031785272680980, -0.984040683683862550, -0.984049579634942330, +-0.984058473125898230, -0.984067364156707810, -0.984076252727349110, -0.984085138837799690, -0.984094022488037460, -0.984102903678040210, -0.984111782407785630, -0.984120658677251630, +-0.984129532486415990, -0.984138403835256530, -0.984147272723751020, -0.984156139151877380, -0.984165003119613410, -0.984173864626936900, -0.984182723673825640, -0.984191580260257660, +-0.984200434386210740, -0.984209286051662690, -0.984218135256591520, -0.984226982000974910, -0.984235826284790890, -0.984244668108017250, -0.984253507470632010, -0.984262344372612950, +-0.984271178813938110, -0.984280010794585270, -0.984288840314532340, -0.984297667373757460, -0.984306491972238300, -0.984315314109952880, -0.984324133786879220, -0.984332951002995230, +-0.984341765758278920, -0.984350578052708090, -0.984359387886260980, -0.984368195258915280, -0.984377000170649110, -0.984385802621440380, -0.984394602611267210, -0.984403400140107520, +-0.984412195207939320, -0.984420987814740630, -0.984429777960489470, -0.984438565645163850, -0.984447350868741910, -0.984456133631201550, -0.984464913932520780, -0.984473691772677850, +-0.984482467151650550, -0.984491240069417240, -0.984500010525955700, -0.984508778521244190, -0.984517544055260710, -0.984526307127983390, -0.984535067739390370, -0.984543825889459550, +-0.984552581578169270, -0.984561334805497460, -0.984570085571422340, -0.984578833875922040, -0.984587579718974590, -0.984596323100558220, -0.984605064020651070, -0.984613802479231250, +-0.984622538476276900, -0.984631272011766260, -0.984640003085677340, -0.984648731697988500, -0.984657457848677750, -0.984666181537723450, -0.984674902765103720, -0.984683621530796580, +-0.984692337834780610, -0.984701051677033590, -0.984709763057533990, -0.984718471976260060, -0.984727178433189910, -0.984735882428301790, -0.984744583961573940, -0.984753283032984710, +-0.984761979642512220, -0.984770673790134720, -0.984779365475830670, -0.984788054699578090, -0.984796741461355540, -0.984805425761140940, -0.984814107598912860, -0.984822786974649530, +-0.984831463888329210, -0.984840138339930230, -0.984848810329430950, -0.984857479856809600, -0.984866146922044550, -0.984874811525114140, -0.984883473665996710, -0.984892133344670630, +-0.984900790561114130, -0.984909445315305780, -0.984918097607223710, -0.984926747436846380, -0.984935394804152260, -0.984944039709119590, -0.984952682151726820, -0.984961322131952420, +-0.984969959649774630, -0.984978594705172020, -0.984987227298122820, -0.984995857428605740, -0.985004485096598770, -0.985013110302080830, -0.985021733045029930, -0.985030353325424770, +-0.985038971143243790, -0.985047586498465240, -0.985056199391067810, -0.985064809821029840, -0.985073417788329910, -0.985082023292946360, -0.985090626334857890, -0.985099226914042720, +-0.985107825030479560, -0.985116420684146730, -0.985125013875022940, -0.985133604603086630, -0.985142192868316280, -0.985150778670690450, -0.985159362010187610, -0.985167942886786440, +-0.985176521300465400, -0.985185097251203070, -0.985193670738978010, -0.985202241763768690, -0.985210810325553910, -0.985219376424312010, -0.985227940060021680, -0.985236501232661490, +-0.985245059942210010, -0.985253616188645930, -0.985262169971947820, -0.985270721292094250, -0.985279270149063910, -0.985287816542835370, -0.985296360473387310, -0.985304901940698310, +-0.985313440944747040, -0.985321977485512310, -0.985330511562972470, -0.985339043177106520, -0.985347572327892830, -0.985356099015310180, -0.985364623239337380, -0.985373144999952990, +-0.985381664297135810, -0.985390181130864300, -0.985398695501117470, -0.985407207407873910, -0.985415716851112290, -0.985424223830811300, -0.985432728346949840, -0.985441230399506600, +-0.985449729988460250, -0.985458227113789500, -0.985466721775473230, -0.985475213973490140, -0.985483703707819130, -0.985492190978438760, -0.985500675785327960, -0.985509158128465400, +-0.985517638007829990, -0.985526115423400410, -0.985534590375155670, -0.985543062863074360, -0.985551532887135480, -0.985560000447317730, -0.985568465543599890, -0.985576928175960990, +-0.985585388344379810, -0.985593846048835040, -0.985602301289305700, -0.985610754065770590, -0.985619204378208600, -0.985627652226598650, -0.985636097610919530, -0.985644540531150250, +-0.985652980987269500, -0.985661418979256410, -0.985669854507089660, -0.985678287570748380, -0.985686718170211250, -0.985695146305457400, -0.985703571976465630, -0.985711995183215060, +-0.985720415925684380, -0.985728834203852710, -0.985737250017698960, -0.985745663367202150, -0.985754074252341070, -0.985762482673094850, -0.985770888629442400, -0.985779292121362730, +-0.985787693148834850, -0.985796091711837800, -0.985804487810350460, -0.985812881444351860, -0.985821272613821130, -0.985829661318737170, -0.985838047559079000, -0.985846431334825860, +-0.985854812645956540, -0.985863191492450160, -0.985871567874285870, -0.985879941791442670, -0.985888313243899580, -0.985896682231635730, -0.985905048754630140, -0.985913412812862040, +-0.985921774406310240, -0.985930133534954070, -0.985938490198772670, -0.985946844397744940, -0.985955196131850120, -0.985963545401067230, -0.985971892205375620, -0.985980236544754200, +-0.985988578419182190, -0.985996917828638740, -0.986005254773102970, -0.986013589252554110, -0.986021921266971300, -0.986030250816333660, -0.986038577900620330, -0.986046902519810640, +-0.986055224673883620, -0.986063544362818620, -0.986071861586594770, -0.986080176345191180, -0.986088488638587220, -0.986096798466762010, -0.986105105829694790, -0.986113410727364800, +-0.986121713159751280, -0.986130013126833570, -0.986138310628590700, -0.986146605665002120, -0.986154898236047070, -0.986163188341704690, -0.986171475981954430, -0.986179761156775300, +-0.986188043866147000, -0.986196324110048430, -0.986204601888459150, -0.986212877201358310, -0.986221150048725240, -0.986229420430539410, -0.986237688346779940, -0.986245953797426300, +-0.986254216782457730, -0.986262477301853570, -0.986270735355593290, -0.986278990943656230, -0.986287244066021530, -0.986295494722668860, -0.986303742913577360, -0.986311988638726600, +-0.986320231898095810, -0.986328472691664460, -0.986336711019411890, -0.986344946881317690, -0.986353180277360960, -0.986361411207521300, -0.986369639671778150, -0.986377865670110880, +-0.986386089202498930, -0.986394310268921880, -0.986402528869358970, -0.986410745003789670, -0.986418958672193540, -0.986427169874550040, -0.986435378610838630, -0.986443584881038780, +-0.986451788685129950, -0.986459990023091590, -0.986468188894903400, -0.986476385300544600, -0.986484579239994890, -0.986492770713233710, -0.986500959720240660, -0.986509146260995170, +-0.986517330335476840, -0.986525511943665110, -0.986533691085539680, -0.986541867761079990, -0.986550041970265750, -0.986558213713076280, -0.986566382989491290, -0.986574549799490330, +-0.986582714143052990, -0.986590876020158940, -0.986599035430787640, -0.986607192374918780, -0.986615346852531830, -0.986623498863606670, -0.986631648408122670, -0.986639795486059620, +-0.986647940097396980, -0.986656082242114540, -0.986664221920191880, -0.986672359131608670, -0.986680493876344600, -0.986688626154379360, -0.986696755965692400, -0.986704883310263630, +-0.986713008188072620, -0.986721130599099160, -0.986729250543322830, -0.986737368020723320, -0.986745483031280510, -0.986753595574973890, -0.986761705651783340, -0.986769813261688440, +-0.986777918404669110, -0.986786021080704900, -0.986794121289775730, -0.986802219031861160, -0.986810314306941220, -0.986818407114995240, -0.986826497456003480, -0.986834585329945280, +-0.986842670736800760, -0.986850753676549510, -0.986858834149171420, -0.986866912154646170, -0.986874987692953680, -0.986883060764073620, -0.986891131367986010, -0.986899199504670640, +-0.986907265174107210, -0.986915328376275600, -0.986923389111155620, -0.986931447378727290, -0.986939503178970170, -0.986947556511864500, -0.986955607377389740, -0.986963655775526140, +-0.986971701706253260, -0.986979745169551230, -0.986987786165399730, -0.986995824693778890, -0.987003860754668390, -0.987011894348048260, -0.987019925473898390, -0.987027954132198790, +-0.987035980322929160, -0.987044004046069730, -0.987052025301600190, -0.987060044089500650, -0.987068060409750920, -0.987076074262331130, -0.987084085647221050, -0.987092094564400830, +-0.987100101013850370, -0.987108104995549680, -0.987116106509478670, -0.987124105555617360, -0.987132102133945870, -0.987140096244444100, -0.987148087887092180, -0.987156077061869920, +-0.987164063768757540, -0.987172048007734950, -0.987180029778782280, -0.987188009081879430, -0.987195985917006640, -0.987203960284143920, -0.987211932183271300, -0.987219901614368790, +-0.987227868577416510, -0.987235833072394600, -0.987243795099283170, -0.987251754658062140, -0.987259711748711740, -0.987267666371212100, -0.987275618525543350, -0.987283568211685500, +-0.987291515429618680, -0.987299460179323130, -0.987307402460778860, -0.987315342273966220, -0.987323279618865120, -0.987331214495455800, -0.987339146903718490, -0.987347076843633320, +-0.987355004315180420, -0.987362929318340130, -0.987370851853092370, -0.987378771919417590, -0.987386689517295800, -0.987394604646707360, -0.987402517307632400, -0.987410427500051040, +-0.987418335223943730, -0.987426240479290510, -0.987434143266071710, -0.987442043584267570, -0.987449941433858340, -0.987457836814824130, -0.987465729727145520, -0.987473620170802420, +-0.987481508145775400, -0.987489393652044580, -0.987497276689590200, -0.987505157258392720, -0.987513035358432270, -0.987520910989689300, -0.987528784152143960, -0.987536654845776800, +-0.987544523070567840, -0.987552388826497650, -0.987560252113546590, -0.987568112931694770, -0.987575971280922670, -0.987583827161210740, -0.987591680572539100, -0.987599531514888330, +-0.987607379988238780, -0.987615225992570790, -0.987623069527864610, -0.987630910594100910, -0.987638749191259820, -0.987646585319321920, -0.987654418978267450, -0.987662250168077070, +-0.987670078888730930, -0.987677905140209700, -0.987685728922493730, -0.987693550235563380, -0.987701369079399210, -0.987709185453981560, -0.987716999359290910, -0.987724810795307830, +-0.987732619762012650, -0.987740426259385960, -0.987748230287408320, -0.987756031846059980, -0.987763830935321610, -0.987771627555173560, -0.987779421705596520, -0.987787213386570940, +-0.987795002598077290, -0.987802789340096240, -0.987810573612608160, -0.987818355415593600, -0.987826134749033140, -0.987833911612907340, -0.987841686007196800, -0.987849457931882060, +-0.987857227386943700, -0.987864994372362190, -0.987872758888118210, -0.987880520934192430, -0.987888280510565210, -0.987896037617217450, -0.987903792254129390, -0.987911544421282040, +-0.987919294118655760, -0.987927041346231220, -0.987934786103989100, -0.987942528391909990, -0.987950268209974560, -0.987958005558163490, -0.987965740436457350, -0.987973472844836940, +-0.987981202783282830, -0.987988930251775700, -0.987996655250296230, -0.988004377778825100, -0.988012097837343120, -0.988019815425830840, -0.988027530544269060, -0.988035243192638360, +-0.988042953370919630, -0.988050661079093450, -0.988058366317140720, -0.988066069085042020, -0.988073769382778130, -0.988081467210329740, -0.988089162567677870, -0.988096855454802970, +-0.988104545871685950, -0.988112233818307590, -0.988119919294648600, -0.988127602300689860, -0.988135282836412050, -0.988142960901796100, -0.988150636496822780, -0.988158309621472770, +-0.988165980275727110, -0.988173648459566350, -0.988181314172971610, -0.988188977415923490, -0.988196638188402980, -0.988204296490390880, -0.988211952321867980, -0.988219605682815190, +-0.988227256573213420, -0.988234904993043560, -0.988242550942286300, -0.988250194420922770, -0.988257835428933750, -0.988265473966300160, -0.988273110033002890, -0.988280743629022850, +-0.988288374754340840, -0.988296003408937970, -0.988303629592795050, -0.988311253305893200, -0.988318874548213100, -0.988326493319735770, -0.988334109620442320, -0.988341723450313570, +-0.988349334809330400, -0.988356943697473960, -0.988364550114725240, -0.988372154061065040, -0.988379755536474500, -0.988387354540934630, -0.988394951074426320, -0.988402545136930600, +-0.988410136728428590, -0.988417725848901200, -0.988425312498329430, -0.988432896676694430, -0.988440478383977190, -0.988448057620158750, -0.988455634385220220, -0.988463208679142610, +-0.988470780501906840, -0.988478349853494250, -0.988485916733885750, -0.988493481143062460, -0.988501043081005500, -0.988508602547695900, -0.988516159543114780, -0.988523714067243260, +-0.988531266120062480, -0.988538815701553550, -0.988546362811697500, -0.988553907450475670, -0.988561449617868960, -0.988568989313858610, -0.988576526538425870, -0.988584061291551850, +-0.988591593573217580, -0.988599123383404390, -0.988606650722093310, -0.988614175589265680, -0.988621697984902630, -0.988629217908985280, -0.988636735361494880, -0.988644250342412660, +-0.988651762851719850, -0.988659272889397590, -0.988666780455427110, -0.988674285549789760, -0.988681788172466660, -0.988689288323439050, -0.988696786002688290, -0.988704281210195600, +-0.988711773945942120, -0.988719264209909190, -0.988726752002078160, -0.988734237322430260, -0.988741720170946750, -0.988749200547608950, -0.988756678452398120, -0.988764153885295590, +-0.988771626846282730, -0.988779097335340750, -0.988786565352451020, -0.988794030897594880, -0.988801493970753680, -0.988808954571908760, -0.988816412701041480, -0.988823868358133070, +-0.988831321543165110, -0.988838772256118710, -0.988846220496975460, -0.988853666265716690, -0.988861109562323760, -0.988868550386778010, -0.988875988739060910, -0.988883424619153790, +-0.988890858027038130, -0.988898288962695380, -0.988905717426106780, -0.988913143417254000, -0.988920566936118410, -0.988927987982681220, -0.988935406556924250, -0.988942822658828600, +-0.988950236288375970, -0.988957647445547820, -0.988965056130325480, -0.988972462342690430, -0.988979866082624340, -0.988987267350108560, -0.988994666145124550, -0.989002062467653990, +-0.989009456317678230, -0.989016847695178720, -0.989024236600137270, -0.989031623032535110, -0.989039006992353920, -0.989046388479575160, -0.989053767494180500, -0.989061144036151420, +-0.989068518105469470, -0.989075889702116240, -0.989083258826073290, -0.989090625477322180, -0.989097989655844390, -0.989105351361621810, -0.989112710594635790, -0.989120067354867900, +-0.989127421642299940, -0.989134773456913470, -0.989142122798689960, -0.989149469667611190, -0.989156814063658740, -0.989164155986814290, -0.989171495437059400, -0.989178832414375760, +-0.989186166918745060, -0.989193498950148960, -0.989200828508569160, -0.989208155593987230, -0.989215480206384950, -0.989222802345743890, -0.989230122012045850, -0.989237439205272520, +-0.989244753925405670, -0.989252066172426780, -0.989259375946317850, -0.989266683247060460, -0.989273988074636400, -0.989281290429027240, -0.989288590310214990, -0.989295887718181110, +-0.989303182652907620, -0.989310475114376200, -0.989317765102568520, -0.989325052617466500, -0.989332337659051820, -0.989339620227306260, -0.989346900322211730, -0.989354177943749800, +-0.989361453091902600, -0.989368725766651690, -0.989375995967978980, -0.989383263695866270, -0.989390528950295330, -0.989397791731248200, -0.989405052038706430, -0.989412309872652160, +-0.989419565233067070, -0.989426818119933160, -0.989434068533232010, -0.989441316472945860, -0.989448561939056390, -0.989455804931545500, -0.989463045450395100, -0.989470283495587080, +-0.989477519067103240, -0.989484752164925820, -0.989491982789036380, -0.989499210939416950, -0.989506436616049640, -0.989513659818916150, -0.989520880547998470, -0.989528098803278630, +-0.989535314584738530, -0.989542527892360190, -0.989549738726125510, -0.989556947086016490, -0.989564152972015050, -0.989571356384103320, -0.989578557322263070, -0.989585755786476560, +-0.989592951776725570, -0.989600145292992230, -0.989607336335258550, -0.989614524903506540, -0.989621710997718230, -0.989628894617875510, -0.989636075763960730, -0.989643254435955580, +-0.989650430633842500, -0.989657604357603190, -0.989664775607219880, -0.989671944382674700, -0.989679110683949650, -0.989686274511026750, -0.989693435863888250, -0.989700594742516150, +-0.989707751146892580, -0.989714905076999550, -0.989722056532819310, -0.989729205514333970, -0.989736352021525550, -0.989743496054376280, -0.989750637612868190, -0.989757776696983620, +-0.989764913306704460, -0.989772047442013190, -0.989779179102891700, -0.989786308289322350, -0.989793435001287140, -0.989800559238768420, -0.989807681001748210, -0.989814800290208850, +-0.989821917104132480, -0.989829031443501320, -0.989836143308297610, -0.989843252698503480, -0.989850359614101280, -0.989857464055073240, -0.989864566021401380, -0.989871665513068270, +-0.989878762530055910, -0.989885857072346550, -0.989892949139922760, -0.989900038732766440, -0.989907125850860050, -0.989914210494185820, -0.989921292662726100, -0.989928372356463250, +-0.989935449575379380, -0.989942524319456840, -0.989949596588677980, -0.989956666383025260, -0.989963733702480810, -0.989970798547026960, -0.989977860916646190, -0.989984920811320720, +-0.989991978231033020, -0.989999033175765320, -0.990006085645499970, -0.990013135640219530, -0.990020183159906140, -0.990027228204542480, -0.990034270774110550, -0.990041310868593040, +-0.990048348487972190, -0.990055383632230560, -0.990062416301350390, -0.990069446495314250, -0.990076474214104390, -0.990083499457703460, -0.990090522226093730, -0.990097542519257750, +-0.990104560337177860, -0.990111575679836540, -0.990118588547216350, -0.990125598939299630, -0.990132606856068960, -0.990139612297506690, -0.990146615263595490, -0.990153615754317710, +-0.990160613769655920, -0.990167609309592470, -0.990174602374110150, -0.990181592963191300, -0.990188581076818400, -0.990195566714974110, -0.990202549877640890, -0.990209530564801210, +-0.990216508776437850, -0.990223484512533170, -0.990230457773069730, -0.990237428558030210, -0.990244396867397070, -0.990251362701152880, -0.990258326059280440, -0.990265286941762080, +-0.990272245348580490, -0.990279201279718360, -0.990286154735158130, -0.990293105714882600, -0.990300054218874240, -0.990307000247115820, -0.990313943799589810, -0.990320884876279120, +-0.990327823477165970, -0.990334759602233490, -0.990341693251463930, -0.990348624424840280, -0.990355553122344910, -0.990362479343960820, -0.990369403089670470, -0.990376324359456550, +-0.990383243153301950, -0.990390159471189140, -0.990397073313101010, -0.990403984679020130, -0.990410893568929310, -0.990417799982811210, -0.990424703920648630, -0.990431605382424360, +-0.990438504368120980, -0.990445400877721370, -0.990452294911208340, -0.990459186468564460, -0.990466075549772730, -0.990472962154815730, -0.990479846283676360, -0.990486727936337300, +-0.990493607112781560, -0.990500483812991720, -0.990507358036950670, -0.990514229784641210, -0.990521099056046130, -0.990527965851148440, -0.990534830169930710, -0.990541692012375960, +-0.990548551378466980, -0.990555408268186670, -0.990562262681517700, -0.990569114618443210, -0.990575964078945880, -0.990582811063008720, -0.990589655570614400, -0.990596497601746060, +-0.990603337156386380, -0.990610174234518360, -0.990617008836124910, -0.990623840961189050, -0.990630670609693450, -0.990637497781621250, -0.990644322476955330, -0.990651144695678500, +-0.990657964437773870, -0.990664781703224360, -0.990671596492012860, -0.990678408804122390, -0.990685218639535960, -0.990692025998236360, -0.990698830880206720, -0.990705633285430040, +-0.990712433213889240, -0.990719230665567440, -0.990726025640447430, -0.990732818138512440, -0.990739608159745490, -0.990746395704129370, -0.990753180771647310, -0.990759963362282340, +-0.990766743476017450, -0.990773521112835680, -0.990780296272720020, -0.990787068955653720, -0.990793839161619780, -0.990800606890601230, -0.990807372142581080, -0.990814134917542550, +-0.990820895215468680, -0.990827653036342570, -0.990834408380147360, -0.990841161246866160, -0.990847911636482000, -0.990854659548978000, -0.990861404984337390, -0.990868147942543410, +-0.990874888423578850, -0.990881626427427160, -0.990888361954071480, -0.990895095003494820, -0.990901825575680410, -0.990908553670611480, -0.990915279288271170, -0.990922002428642590, +-0.990928723091709100, -0.990935441277453700, -0.990942156985859750, -0.990948870216910360, -0.990955580970588890, -0.990962289246878350, -0.990968995045762190, -0.990975698367223550, +-0.990982399211245650, -0.990989097577811620, -0.990995793466905030, -0.991002486878508890, -0.991009177812606450, -0.991015866269181140, -0.991022552248216230, -0.991029235749694810, +-0.991035916773600370, -0.991042595319916120, -0.991049271388625420, -0.991055944979711610, -0.991062616093157820, -0.991069284728947510, -0.991075950887064020, -0.991082614567490580, +-0.991089275770210660, -0.991095934495207500, -0.991102590742464540, -0.991109244511965140, -0.991115895803692640, -0.991122544617630390, -0.991129190953761730, -0.991135834812070130, +-0.991142476192538810, -0.991149115095151470, -0.991155751519891330, -0.991162385466741740, -0.991169016935686260, -0.991175645926708150, -0.991182272439790960, -0.991188896474918150, +-0.991195518032073060, -0.991202137111239170, -0.991208753712399910, -0.991215367835538760, -0.991221979480639280, -0.991228588647684710, -0.991235195336658830, -0.991241799547544880, +-0.991248401280326430, -0.991255000534986940, -0.991261597311509980, -0.991268191609879110, -0.991274783430077690, -0.991281372772089280, -0.991287959635897440, -0.991294544021485760, +-0.991301125928837680, -0.991307705357936770, -0.991314282308766730, -0.991320856781310880, -0.991327428775552800, -0.991333998291476280, -0.991340565329064670, -0.991347129888301760, +-0.991353691969171000, -0.991360251571655970, -0.991366808695740230, -0.991373363341407580, -0.991379915508641570, -0.991386465197425680, -0.991393012407743580, -0.991399557139579060, +-0.991406099392915570, -0.991412639167736920, -0.991419176464026550, -0.991425711281768370, -0.991432243620945840, -0.991438773481542750, -0.991445300863542660, -0.991451825766929360, +-0.991458348191686540, -0.991464868137797770, -0.991471385605246840, -0.991477900594017410, -0.991484413104093300, -0.991490923135458170, -0.991497430688095700, -0.991503935761989590, +-0.991510438357123820, -0.991516938473481770, -0.991523436111047430, -0.991529931269804490, -0.991536423949736840, -0.991542914150827960, -0.991549401873061950, -0.991555887116422290, +-0.991562369880892970, -0.991568850166457790, -0.991575327973100440, -0.991581803300804810, -0.991588276149554580, -0.991594746519333660, -0.991601214410125940, -0.991607679821915220, +-0.991614142754685180, -0.991620603208419830, -0.991627061183103060, -0.991633516678718570, -0.991639969695250260, -0.991646420232682010, -0.991652868290997750, -0.991659313870181360, +-0.991665756970216640, -0.991672197591087600, -0.991678635732777920, -0.991685071395271730, -0.991691504578552930, -0.991697935282605300, -0.991704363507412870, -0.991710789252959410, +-0.991717212519229170, -0.991723633306205720, -0.991730051613873290, -0.991736467442215660, -0.991742880791216970, -0.991749291660861010, -0.991755700051131780, -0.991762105962013420, +-0.991768509393489710, -0.991774910345544770, -0.991781308818162510, -0.991787704811326940, -0.991794098325022190, -0.991800489359232150, -0.991806877913940950, -0.991813263989132500, +-0.991819647584790910, -0.991826028700900200, -0.991832407337444380, -0.991838783494407570, -0.991845157171773790, -0.991851528369527170, -0.991857897087651710, -0.991864263326131420, +-0.991870627084950550, -0.991876988364093100, -0.991883347163543210, -0.991889703483284980, -0.991896057323302440, -0.991902408683579710, -0.991908757564101020, -0.991915103964850390, +-0.991921447885812050, -0.991927789326970120, -0.991934128288308630, -0.991940464769811900, -0.991946798771463860, -0.991953130293248940, -0.991959459335151170, -0.991965785897154780, +-0.991972109979244010, -0.991978431581402860, -0.991984750703615580, -0.991991067345866510, -0.991997381508139760, -0.992003693190419590, -0.992010002392690100, -0.992016309114935660, +-0.992022613357140370, -0.992028915119288700, -0.992035214401364660, -0.992041511203352490, -0.992047805525236640, -0.992054097367001340, -0.992060386728630730, -0.992066673610109140, +-0.992072958011420810, -0.992079239932550210, -0.992085519373481440, -0.992091796334198860, -0.992098070814686820, -0.992104342814929650, -0.992110612334911490, -0.992116879374616900, +-0.992123143934030120, -0.992129406013135480, -0.992135665611917240, -0.992141922730359950, -0.992148177368447740, -0.992154429526165170, -0.992160679203496490, -0.992166926400426140, +-0.992173171116938480, -0.992179413353017850, -0.992185653108648700, -0.992191890383815390, -0.992198125178502370, -0.992204357492694090, -0.992210587326374900, -0.992216814679529270, +-0.992223039552141530, -0.992229261944196250, -0.992235481855677780, -0.992241699286570580, -0.992247914236859210, -0.992254126706528020, -0.992260336695561460, -0.992266544203944110, +-0.992272749231660420, -0.992278951778694850, -0.992285151845031850, -0.992291349430656000, -0.992297544535551750, -0.992303737159703660, -0.992309927303096310, -0.992316114965714040, +-0.992322300147541530, -0.992328482848563230, -0.992334663068763720, -0.992340840808127570, -0.992347016066639330, -0.992353188844283580, -0.992359359141044890, -0.992365526956907720, +-0.992371692291856730, -0.992377855145876510, -0.992384015518951720, -0.992390173411066830, -0.992396328822206520, -0.992402481752355350, -0.992408632201498000, -0.992414780169619150, +-0.992420925656703260, -0.992427068662735110, -0.992433209187699280, -0.992439347231580450, -0.992445482794363180, -0.992451615876032260, -0.992457746476572260, -0.992463874595967850, +-0.992470000234203840, -0.992476123391264790, -0.992482244067135480, -0.992488362261800480, -0.992494477975244700, -0.992500591207452600, -0.992506701958409070, -0.992512810228098790, +-0.992518916016506550, -0.992525019323616920, -0.992531120149414800, -0.992537218493884770, -0.992543314357011820, -0.992549407738780530, -0.992555498639175800, -0.992561587058182200, +-0.992567672995784740, -0.992573756451967990, -0.992579837426716960, -0.992585915920016220, -0.992591991931850770, -0.992598065462205410, -0.992604136511064720, -0.992610205078413800, +-0.992616271164237340, -0.992622334768520240, -0.992628395891247180, -0.992634454532403290, -0.992640510691973120, -0.992646564369941810, -0.992652615566294030, -0.992658664281014680, +-0.992664710514088670, -0.992670754265501000, -0.992676795535236360, -0.992682834323279640, -0.992688870629615970, -0.992694904454230030, -0.992700935797106940, -0.992706964658231380, +-0.992712991037588590, -0.992719014935163120, -0.992725036350940230, -0.992731055284904680, -0.992737071737041620, -0.992743085707335720, -0.992749097195772200, -0.992755106202335870, +-0.992761112727011840, -0.992767116769785020, -0.992773118330640410, -0.992779117409563040, -0.992785114006537790, -0.992791108121549800, -0.992797099754584080, -0.992803088905625520, +-0.992809075574659360, -0.992815059761670390, -0.992821041466643850, -0.992827020689564630, -0.992832997430417970, -0.992838971689188780, -0.992844943465862050, -0.992850912760423030, +-0.992856879572856730, -0.992862843903148270, -0.992868805751282670, -0.992874765117245150, -0.992880722001020620, -0.992886676402594310, -0.992892628321951240, -0.992898577759076640, +-0.992904524713955630, -0.992910469186573330, -0.992916411176914760, -0.992922350684965260, -0.992928287710709840, -0.992934222254133750, -0.992940154315221980, -0.992946083893960000, +-0.992952010990332700, -0.992957935604325330, -0.992963857735923220, -0.992969777385111390, -0.992975694551875180, -0.992981609236199710, -0.992987521438070230, -0.992993431157471960, +-0.992999338394390030, -0.993005243148809780, -0.993011145420716450, -0.993017045210095260, -0.993022942516931460, -0.993028837341210280, -0.993034729682917060, -0.993040619542037040, +-0.993046506918555340, -0.993052391812457520, -0.993058274223728610, -0.993064154152354050, -0.993070031598319190, -0.993075906561609160, -0.993081779042209290, -0.993087649040105160, +-0.993093516555281770, -0.993099381587724590, -0.993105244137418960, -0.993111104204350340, -0.993116961788503840, -0.993122816889864920, -0.993128669508419050, -0.993134519644151450, +-0.993140367297047580, -0.993146212467092780, -0.993152055154272410, -0.993157895358572020, -0.993163733079976740, -0.993169568318472250, -0.993175401074043780, -0.993181231346676800, +-0.993187059136356740, -0.993192884443069080, -0.993198707266799150, -0.993204527607532530, -0.993210345465254550, -0.993216160839950680, -0.993221973731606480, -0.993227784140207290, +-0.993233592065738580, -0.993239397508186020, -0.993245200467534840, -0.993251000943770720, -0.993256798936879130, -0.993262594446845500, -0.993268387473655420, -0.993274178017294340, +-0.993279966077747820, -0.993285751655001440, -0.993291534749040640, -0.993297315359851000, -0.993303093487418080, -0.993308869131727330, -0.993314642292764560, -0.993320412970515100, +-0.993326181164964630, -0.993331946876098710, -0.993337710103902930, -0.993343470848362830, -0.993349229109464100, -0.993354984887192320, -0.993360738181533030, -0.993366488992471930, +-0.993372237319994580, -0.993377983164086650, -0.993383726524733720, -0.993389467401921470, -0.993395205795635560, -0.993400941705861680, -0.993406675132585510, -0.993412406075792510, +-0.993418134535468570, -0.993423860511599250, -0.993429584004170360, -0.993435305013167460, -0.993441023538576330, -0.993446739580382650, -0.993452453138572000, -0.993458164213130380, +-0.993463872804043250, -0.993469578911296500, -0.993475282534875710, -0.993480983674766780, -0.993486682330955380, -0.993492378503427310, -0.993498072192168240, -0.993503763397163950, +-0.993509452118400360, -0.993515138355863140, -0.993520822109537960, -0.993526503379410840, -0.993532182165467350, -0.993537858467693490, -0.993543532286074950, -0.993549203620597620, +-0.993554872471247300, -0.993560538838009770, -0.993566202720870820, -0.993571864119816460, -0.993577523034832380, -0.993583179465904460, -0.993588833413018730, -0.993594484876160760, +-0.993600133855316650, -0.993605780350472310, -0.993611424361613320, -0.993617065888725890, -0.993622704931795830, -0.993628341490808920, -0.993633975565751170, -0.993639607156608480, +-0.993645236263366760, -0.993650862886012010, -0.993656487024530130, -0.993662108678906920, -0.993667727849128600, -0.993673344535180750, -0.993678958737049700, -0.993684570454721140, +-0.993690179688181300, -0.993695786437415850, -0.993701390702411040, -0.993706992483152750, -0.993712591779627010, -0.993718188591819710, -0.993723782919716970, -0.993729374763304700, +-0.993734964122569120, -0.993740550997496030, -0.993746135388071660, -0.993751717294281800, -0.993757296716112790, -0.993762873653550540, -0.993768448106581050, -0.993774020075190450, +-0.993779589559364740, -0.993785156559090170, -0.993790721074352620, -0.993796283105138340, -0.993801842651433230, -0.993807399713223630, -0.993812954290495540, -0.993818506383234990, +-0.993824055991428200, -0.993829603115061300, -0.993835147754120410, -0.993840689908591650, -0.993846229578461030, -0.993851766763715010, -0.993857301464339480, -0.993862833680320690, +-0.993868363411644860, -0.993873890658298120, -0.993879415420266590, -0.993884937697536610, -0.993890457490094300, -0.993895974797925800, -0.993901489621017320, -0.993907001959355110, +-0.993912511812925500, -0.993918019181714520, -0.993923524065708500, -0.993929026464893670, -0.993934526379256390, -0.993940023808782660, -0.993945518753458930, -0.993951011213271340, +-0.993956501188206330, -0.993961988678249920, -0.993967473683388670, -0.993972956203608700, -0.993978436238896370, -0.993983913789237890, -0.993989388854619630, -0.993994861435027910, +-0.994000331530449090, -0.994005799140869390, -0.994011264266275170, -0.994016726906652880, -0.994022187061988640, -0.994027644732269010, -0.994033099917480230, -0.994038552617608760, +-0.994044002832640940, -0.994049450562563000, -0.994054895807361500, -0.994060338567022810, -0.994065778841533130, -0.994071216630879160, -0.994076651935047020, -0.994082084754023380, +-0.994087515087794360, -0.994092942936346760, -0.994098368299666690, -0.994103791177740610, -0.994109211570555210, -0.994114629478096700, -0.994120044900351660, -0.994125457837306440, +-0.994130868288947590, -0.994136276255261690, -0.994141681736234960, -0.994147084731854090, -0.994152485242105530, -0.994157883266975630, -0.994163278806451170, -0.994168671860518380, +-0.994174062429164060, -0.994179450512374440, -0.994184836110136310, -0.994190219222436000, -0.994195599849260200, -0.994200977990595370, -0.994206353646428180, -0.994211726816745080, +-0.994217097501532530, -0.994222465700777440, -0.994227831414466020, -0.994233194642585080, -0.994238555385121180, -0.994243913642060880, -0.994249269413390760, -0.994254622699097480, +-0.994259973499167620, -0.994265321813587840, -0.994270667642344840, -0.994276010985425060, -0.994281351842815300, -0.994286690214502220, -0.994292026100472290, -0.994297359500712410, +-0.994302690415209020, -0.994308018843949040, -0.994313344786918910, -0.994318668244105420, -0.994323989215495360, -0.994329307701075190, -0.994334623700831810, -0.994339937214751890, +-0.994345248242822110, -0.994350556785029260, -0.994355862841360020, -0.994361166411801060, -0.994366467496339170, -0.994371766094961140, -0.994377062207653650, -0.994382355834403600, +-0.994387646975197660, -0.994392935630022510, -0.994398221798865060, -0.994403505481712080, -0.994408786678550370, -0.994414065389366610, -0.994419341614147690, -0.994424615352880510, +-0.994429886605551760, -0.994435155372148220, -0.994440421652656780, -0.994445685447064350, -0.994450946755357720, -0.994456205577523790, -0.994461461913549230, -0.994466715763421050, +-0.994471967127126040, -0.994477216004651220, -0.994482462395983260, -0.994487706301109160, -0.994492947720015840, -0.994498186652690070, -0.994503423099118880, -0.994508657059289150, +-0.994513888533187780, -0.994519117520801690, -0.994524344022117760, -0.994529568037123000, -0.994534789565804320, -0.994540008608148730, -0.994545225164143010, -0.994550439233774290, +-0.994555650817029460, -0.994560859913895530, -0.994566066524359420, -0.994571270648408110, -0.994576472286028750, -0.994581671437208100, -0.994586868101933310, -0.994592062280191260, +-0.994597253971969190, -0.994602443177253880, -0.994607629896032570, -0.994612814128292060, -0.994617995874019560, -0.994623175133202090, -0.994628351905826660, -0.994633526191880390, +-0.994638697991350300, -0.994643867304223490, -0.994649034130487000, -0.994654198470127810, -0.994659360323133290, -0.994664519689490320, -0.994669676569185920, -0.994674830962207550, +-0.994679982868541980, -0.994685132288176450, -0.994690279221098090, -0.994695423667294020, -0.994700565626751350, -0.994705705099457440, -0.994710842085399060, -0.994715976584563680, +-0.994721108596938410, -0.994726238122510260, -0.994731365161266590, -0.994736489713194500, -0.994741611778281240, -0.994746731356513810, -0.994751848447879670, -0.994756963052365830, +-0.994762075169959630, -0.994767184800648190, -0.994772291944418850, -0.994777396601258750, -0.994782498771155210, -0.994787598454095370, -0.994792695650066560, -0.994797790359055910, +-0.994802882581050980, -0.994807972316038680, -0.994813059564006560, -0.994818144324941640, -0.994823226598831490, -0.994828306385663220, -0.994833383685424290, -0.994838458498101820, +-0.994843530823683150, -0.994848600662155750, -0.994853668013506720, -0.994858732877723640, -0.994863795254793740, -0.994868855144704240, -0.994873912547442730, -0.994878967462996310, +-0.994884019891352560, -0.994889069832498700, -0.994894117286422300, -0.994899162253110480, -0.994904204732550810, -0.994909244724730520, -0.994914282229637290, -0.994919317247258240, +-0.994924349777580930, -0.994929379820592710, -0.994934407376281140, -0.994939432444633450, -0.994944455025637220, -0.994949475119279780, -0.994954492725548810, -0.994959507844431430, +-0.994964520475915440, -0.994969530619988050, -0.994974538276636840, -0.994979543445849380, -0.994984546127613000, -0.994989546321915160, -0.994994544028743540, -0.994999539248085600, +-0.995004531979928770, -0.995009522224260650, -0.995014509981068660, -0.995019495250340390, -0.995024478032063510, -0.995029458326225250, -0.995034436132813500, -0.995039411451815630, +-0.995044384283219170, -0.995049354627011720, -0.995054322483180930, -0.995059287851714380, -0.995064250732599630, -0.995069211125824140, -0.995074169031375690, -0.995079124449241850, +-0.995084077379410180, -0.995089027821868250, -0.995093975776603860, -0.995098921243604440, -0.995103864222857680, -0.995108804714351370, -0.995113742718073070, -0.995118678234010350, +-0.995123611262150880, -0.995128541802482450, -0.995133469854992620, -0.995138395419669200, -0.995143318496499730, -0.995148239085472010, -0.995153157186573600, -0.995158072799792400, +-0.995162985925115980, -0.995167896562532020, -0.995172804712028400, -0.995177710373592820, -0.995182613547212940, -0.995187514232876440, -0.995192412430571220, -0.995197308140284950, +-0.995202201362005430, -0.995207092095720340, -0.995211980341417560, -0.995216866099084880, -0.995221749368710000, -0.995226630150280680, -0.995231508443784940, -0.995236384249210350, +-0.995241257566544690, -0.995246128395776090, -0.995250996736891990, -0.995255862589880520, -0.995260725954729360, -0.995265586831426300, -0.995270445219959330, -0.995275301120316370, +-0.995280154532484970, -0.995285005456453260, -0.995289853892209030, -0.995294699839740170, -0.995299543299034580, -0.995304384270080170, -0.995309222752864710, -0.995314058747376220, +-0.995318892253602590, -0.995323723271531850, -0.995328551801151650, -0.995333377842450130, -0.995338201395415180, -0.995343022460034590, -0.995347841036296590, -0.995352657124188970, +-0.995357470723699620, -0.995362281834816680, -0.995367090457528030, -0.995371896591821680, -0.995376700237685540, -0.995381501395107620, -0.995386300064076020, -0.995391096244578550, +-0.995395889936603440, -0.995400681140138580, -0.995405469855172090, -0.995410256081691870, -0.995415039819686040, -0.995419821069142510, -0.995424599830049490, -0.995429376102395010, +-0.995434149886167070, -0.995438921181353690, -0.995443689987943080, -0.995448456305923270, -0.995453220135282260, -0.995457981476008170, -0.995462740328089240, -0.995467496691513350, +-0.995472250566268760, -0.995477001952343570, -0.995481750849725790, -0.995486497258403770, -0.995491241178365400, -0.995495982609598930, -0.995500721552092570, -0.995505458005834340, +-0.995510191970812470, -0.995514923447015200, -0.995519652434430520, -0.995524378933046790, -0.995529102942852020, -0.995533824463834540, -0.995538543495982590, -0.995543260039284170, +-0.995547974093727640, -0.995552685659301110, -0.995557394735992920, -0.995562101323791300, -0.995566805422684390, -0.995571507032660400, -0.995576206153707680, -0.995580902785814460, +-0.995585596928969090, -0.995590288583159570, -0.995594977748374350, -0.995599664424601680, -0.995604348611830000, -0.995609030310047330, -0.995613709519242000, -0.995618386239402580, +-0.995623060470517070, -0.995627732212573950, -0.995632401465561420, -0.995637068229468070, -0.995641732504281900, -0.995646394289991470, -0.995651053586585010, -0.995655710394050870, +-0.995660364712377510, -0.995665016541553260, -0.995669665881566470, -0.995674312732405480, -0.995678957094058740, -0.995683598966514590, -0.995688238349761390, -0.995692875243787690, +-0.995697509648581720, -0.995702141564132060, -0.995706770990427040, -0.995711397927455000, -0.995716022375204620, -0.995720644333664030, -0.995725263802821890, -0.995729880782666550, +-0.995734495273186580, -0.995739107274370320, -0.995743716786206320, -0.995748323808683060, -0.995752928341788970, -0.995757530385512510, -0.995762129939842260, -0.995766727004766650, +-0.995771321580274260, -0.995775913666353650, -0.995780503262993170, -0.995785090370181370, -0.995789674987906940, -0.995794257116158320, -0.995798836754923980, -0.995803413904192580, +-0.995807988563952700, -0.995812560734192780, -0.995817130414901500, -0.995821697606067420, -0.995826262307679010, -0.995830824519725040, -0.995835384242193980, -0.995839941475074370, +-0.995844496218355020, -0.995849048472024380, -0.995853598236071110, -0.995858145510483910, -0.995862690295251320, -0.995867232590361920, -0.995871772395804490, -0.995876309711567710, +-0.995880844537640030, -0.995885376874010350, -0.995889906720667130, -0.995894434077599260, -0.995898958944795190, -0.995903481322243820, -0.995908001209933720, -0.995912518607853570, +-0.995917033515992140, -0.995921545934338130, -0.995926055862880300, -0.995930563301607230, -0.995935068250507820, -0.995939570709570730, -0.995944070678784770, -0.995948568158138590, +-0.995953063147621000, -0.995957555647220660, -0.995962045656926590, -0.995966533176727230, -0.995971018206611710, -0.995975500746568490, -0.995979980796586670, -0.995984458356654830, +-0.995988933426761760, -0.995993406006896450, -0.995997876097047600, -0.996002343697204080, -0.996006808807354700, -0.996011271427488350, -0.996015731557593710, -0.996020189197659780, +-0.996024644347675460, -0.996029097007629430, -0.996033547177510690, -0.996037994857308040, -0.996042440047010480, -0.996046882746606800, -0.996051322956085890, -0.996055760675436660, +-0.996060195904648000, -0.996064628643708930, -0.996069058892608330, -0.996073486651334990, -0.996077911919877930, -0.996082334698226160, -0.996086754986368450, -0.996091172784293930, +-0.996095588091991500, -0.996100000909450060, -0.996104411236658600, -0.996108819073606160, -0.996113224420281610, -0.996117627276674080, -0.996122027642772470, -0.996126425518565670, +-0.996130820904042920, -0.996135213799193120, -0.996139604204005270, -0.996143992118468380, -0.996148377542571570, -0.996152760476303740, -0.996157140919654130, -0.996161518872611510, +-0.996165894335165230, -0.996170267307304070, -0.996174637789017380, -0.996179005780294060, -0.996183371281123220, -0.996187734291493880, -0.996192094811395260, -0.996196452840816480, +-0.996200808379746450, -0.996205161428174500, -0.996209511986089540, -0.996213860053480890, -0.996218205630337470, -0.996222548716648730, -0.996226889312403440, -0.996231227417591070, +-0.996235563032200510, -0.996239896156221110, -0.996244226789641970, -0.996248554932452230, -0.996252880584641120, -0.996257203746197750, -0.996261524417111470, -0.996265842597371390, +-0.996270158286966630, -0.996274471485886440, -0.996278782194120140, -0.996283090411656860, -0.996287396138485940, -0.996291699374596380, -0.996296000119977650, -0.996300298374618980, +-0.996304594138509470, -0.996308887411638590, -0.996313178193995340, -0.996317466485569290, -0.996321752286349450, -0.996326035596325270, -0.996330316415486080, -0.996334594743821020, +-0.996338870581319420, -0.996343143927970740, -0.996347414783764210, -0.996351683148689050, -0.996355949022734720, -0.996360212405890570, -0.996364473298145930, -0.996368731699490030, +-0.996372987609912220, -0.996377241029402060, -0.996381491957948780, -0.996385740395541730, -0.996389986342170350, -0.996394229797823990, -0.996398470762492110, -0.996402709236164030, +-0.996406945218829110, -0.996411178710476910, -0.996415409711096770, -0.996419638220678030, -0.996423864239210260, -0.996428087766682790, -0.996432308803085200, -0.996436527348406710, +-0.996440743402637000, -0.996444956965765290, -0.996449168037781270, -0.996453376618674390, -0.996457582708433990, -0.996461786307049740, -0.996465987414510870, -0.996470186030807170, +-0.996474382155927870, -0.996478575789862760, -0.996482766932601070, -0.996486955584132580, -0.996491141744446640, -0.996495325413532920, -0.996499506591380760, -0.996503685277979940, +-0.996507861473319820, -0.996512035177390180, -0.996516206390180350, -0.996520375111680010, -0.996524541341878730, -0.996528705080766190, -0.996532866328331710, -0.996537025084565210, +-0.996541181349456130, -0.996545335122994040, -0.996549486405168610, -0.996553635195969510, -0.996557781495386320, -0.996561925303408700, -0.996566066620026230, -0.996570205445228560, +-0.996574341779005390, -0.996578475621346490, -0.996582606972241210, -0.996586735831679560, -0.996590862199650980, -0.996594986076145380, -0.996599107461152210, -0.996603226354661250, +-0.996607342756662300, -0.996611456667144900, -0.996615568086098860, -0.996619677013513950, -0.996623783449379850, -0.996627887393686350, -0.996631988846423010, -0.996636087807579840, +-0.996640184277146290, -0.996644278255112370, -0.996648369741467750, -0.996652458736202230, -0.996656545239305470, -0.996660629250767480, -0.996664710770577830, -0.996668789798726420, +-0.996672866335203020, -0.996676940379997430, -0.996681011933099550, -0.996685080994499150, -0.996689147564186030, -0.996693211642150080, -0.996697273228380980, -0.996701332322868840, +-0.996705388925603230, -0.996709443036574270, -0.996713494655771640, -0.996717543783185330, -0.996721590418805040, -0.996725634562620870, -0.996729676214622610, -0.996733715374800160, +-0.996737752043143410, -0.996741786219642270, -0.996745817904286620, -0.996749847097066490, -0.996753873797971760, -0.996757898006992330, -0.996761919724118210, -0.996765938949339180, +-0.996769955682645370, -0.996773969924026560, -0.996777981673472980, -0.996781990930974420, -0.996785997696520760, -0.996790001970102260, -0.996794003751708680, -0.996798003041330040, +-0.996801999838956450, -0.996805994144577930, -0.996809985958184370, -0.996813975279765780, -0.996817962109312280, -0.996821946446813880, -0.996825928292260690, -0.996829907645642610, +-0.996833884506949760, -0.996837858876172270, -0.996841830753300020, -0.996845800138323250, -0.996849767031231960, -0.996853731432016280, -0.996857693340666320, -0.996861652757172090, +-0.996865609681523710, -0.996869564113711300, -0.996873516053724980, -0.996877465501554870, -0.996881412457191090, -0.996885356920623860, -0.996889298891843080, -0.996893238370839210, +-0.996897175357602140, -0.996901109852122210, -0.996905041854389440, -0.996908971364394160, -0.996912898382126380, -0.996916822907576330, -0.996920744940734240, -0.996924664481590340, +-0.996928581530134750, -0.996932496086357700, -0.996936408150249420, -0.996940317721800030, -0.996944224800999980, -0.996948129387839280, -0.996952031482308270, -0.996955931084397280, +-0.996959828194096340, -0.996963722811395890, -0.996967614936286160, -0.996971504568757270, -0.996975391708799790, -0.996979276356403710, -0.996983158511559500, -0.996987038174257380, +-0.996990915344487580, -0.996994790022240560, -0.996998662207506550, -0.997002531900275990, -0.997006399100539010, -0.997010263808286060, -0.997014126023507360, -0.997017985746193490, +-0.997021842976334560, -0.997025697713921020, -0.997029549958943220, -0.997033399711391600, -0.997037246971256510, -0.997041091738528280, -0.997044934013197270, -0.997048773795253920, +-0.997052611084688680, -0.997056445881491890, -0.997060278185654010, -0.997064107997165490, -0.997067935316016560, -0.997071760142197890, -0.997075582475699830, -0.997079402316512820, +-0.997083219664627210, -0.997087034520033670, -0.997090846882722430, -0.997094656752684160, -0.997098464129909210, -0.997102269014388030, -0.997106071406111290, -0.997109871305069340, +-0.997113668711252730, -0.997117463624651920, -0.997121256045257480, -0.997125045973059840, -0.997128833408049700, -0.997132618350217380, -0.997136400799553460, -0.997140180756048710, +-0.997143958219693370, -0.997147733190478110, -0.997151505668393610, -0.997155275653430430, -0.997159043145578900, -0.997162808144829830, -0.997166570651173760, -0.997170330664601150, +-0.997174088185102780, -0.997177843212669220, -0.997181595747291040, -0.997185345788958900, -0.997189093337663370, -0.997192838393395120, -0.997196580956144720, -0.997200321025902950, +-0.997204058602660260, -0.997207793686407550, -0.997211526277135270, -0.997215256374834210, -0.997218983979495040, -0.997222709091108330, -0.997226431709664960, -0.997230151835155400, +-0.997233869467570530, -0.997237584606900930, -0.997241297253137370, -0.997245007406270640, -0.997248715066291310, -0.997252420233190270, -0.997256122906958200, -0.997259823087585760, +-0.997263520775063750, -0.997267215969382950, -0.997270908670534140, -0.997274598878508000, -0.997278286593295430, -0.997281971814887090, -0.997285654543273890, -0.997289334778446500, +-0.997293012520395820, -0.997296687769112510, -0.997300360524587590, -0.997304030786811730, -0.997307698555775720, -0.997311363831470570, -0.997315026613886930, -0.997318686903015840, +-0.997322344698847950, -0.997326000001374170, -0.997329652810585500, -0.997333303126472610, -0.997336950949026410, -0.997340596278238010, -0.997344239114097970, -0.997347879456597420, +-0.997351517305727020, -0.997355152661478010, -0.997358785523841050, -0.997362415892807050, -0.997366043768367130, -0.997369669150512060, -0.997373292039232750, -0.997376912434520310, +-0.997380530336365530, -0.997384145744759530, -0.997387758659693090, -0.997391369081157220, -0.997394977009142920, -0.997398582443641210, -0.997402185384643090, -0.997405785832139460, +-0.997409383786121320, -0.997412979246579790, -0.997416572213505770, -0.997420162686890380, -0.997423750666724510, -0.997427336152999280, -0.997430919145705810, -0.997434499644834880, +-0.997438077650377840, -0.997441653162325580, -0.997445226180669110, -0.997448796705399650, -0.997452364736508110, -0.997455930273985820, -0.997459493317823580, -0.997463053868012590, +-0.997466611924544000, -0.997470167487408910, -0.997473720556598440, -0.997477271132103600, -0.997480819213915510, -0.997484364802025510, -0.997487907896424500, -0.997491448497103810, +-0.997494986604054450, -0.997498522217267650, -0.997502055336734530, -0.997505585962446210, -0.997509114094394020, -0.997512639732568980, -0.997516162876962320, -0.997519683527565370, +-0.997523201684369140, -0.997526717347364870, -0.997530230516543880, -0.997533741191897310, -0.997537249373416370, -0.997540755061092300, -0.997544258254916330, -0.997547758954879680, +-0.997551257160973700, -0.997554752873189510, -0.997558246091518550, -0.997561736815951840, -0.997565225046480930, -0.997568710783096830, -0.997572194025791000, -0.997575674774554670, +-0.997579153029379160, -0.997582628790255830, -0.997586102057175910, -0.997589572830130720, -0.997593041109111510, -0.997596506894109840, -0.997599970185116810, -0.997603430982123900, +-0.997606889285122420, -0.997610345094103620, -0.997613798409059060, -0.997617249229979960, -0.997620697556857780, -0.997624143389683860, -0.997627586728449530, -0.997631027573146260, +-0.997634465923765370, -0.997637901780298430, -0.997641335142736560, -0.997644766011071550, -0.997648194385294510, -0.997651620265397000, -0.997655043651370480, -0.997658464543206280, +-0.997661882940895970, -0.997665298844431000, -0.997668712253802710, -0.997672123169002670, -0.997675531590022310, -0.997678937516853100, -0.997682340949486600, -0.997685741887914150, +-0.997689140332127410, -0.997692536282117850, -0.997695929737876910, -0.997699320699396150, -0.997702709166667150, -0.997706095139681340, -0.997709478618430180, -0.997712859602905460, +-0.997716238093098620, -0.997719614089001010, -0.997722987590604520, -0.997726358597900490, -0.997729727110880590, -0.997733093129536400, -0.997736456653859460, -0.997739817683841350, +-0.997743176219473730, -0.997746532260748160, -0.997749885807656220, -0.997753236860189570, -0.997756585418339890, -0.997759931482098740, -0.997763275051457680, -0.997766616126408600, +-0.997769954706942850, -0.997773290793052210, -0.997776624384728360, -0.997779955481962970, -0.997783284084747700, -0.997786610193074130, -0.997789933806934150, -0.997793254926319320, +-0.997796573551221310, -0.997799889681631800, -0.997803203317542690, -0.997806514458945530, -0.997809823105832110, -0.997813129258194100, -0.997816432916023290, -0.997819734079311350, +-0.997823032748050180, -0.997826328922231330, -0.997829622601846600, -0.997832913786887990, -0.997836202477346950, -0.997839488673215480, -0.997842772374485270, -0.997846053581148080, +-0.997849332293195830, -0.997852608510620190, -0.997855882233413150, -0.997859153461566280, -0.997862422195071600, -0.997865688433920760, -0.997868952178105780, -0.997872213427618450, +-0.997875472182450540, -0.997878728442593950, -0.997881982208040470, -0.997885233478782220, -0.997888482254810750, -0.997891728536118070, -0.997894972322696080, -0.997898213614536680, +-0.997901452411631750, -0.997904688713973200, -0.997907922521552910, -0.997911153834362800, -0.997914382652394850, -0.997917608975640970, -0.997920832804092940, -0.997924054137742990, +-0.997927272976582790, -0.997930489320604460, -0.997933703169799900, -0.997936914524161000, -0.997940123383679880, -0.997943329748348430, -0.997946533618158770, -0.997949734993102690, +-0.997952933873172190, -0.997956130258359500, -0.997959324148656400, -0.997962515544055020, -0.997965704444547350, -0.997968890850125410, -0.997972074760781200, -0.997975256176506840, +-0.997978435097294450, -0.997981611523135800, -0.997984785454023250, -0.997987956889948680, -0.997991125830904210, -0.997994292276881970, -0.997997456227873950, -0.998000617683872270, +-0.998003776644869060, -0.998006933110856420, -0.998010087081826480, -0.998013238557771350, -0.998016387538683050, -0.998019534024553790, -0.998022678015375700, -0.998025819511141000, +-0.998028958511841590, -0.998032095017469920, -0.998035229028018000, -0.998038360543477940, -0.998041489563841980, -0.998044616089102330, -0.998047740119251130, -0.998050861654280590, +-0.998053980694182940, -0.998057097238950310, -0.998060211288574920, -0.998063322843048990, -0.998066431902364770, -0.998069538466514470, -0.998072642535490330, -0.998075744109284570, +-0.998078843187889420, -0.998081939771297220, -0.998085033859500200, -0.998088125452490480, -0.998091214550260620, -0.998094301152802510, -0.998097385260108830, -0.998100466872171580, +-0.998103545988983210, -0.998106622610535950, -0.998109696736822150, -0.998112768367834140, -0.998115837503564140, -0.998118904144004620, -0.998121968289147790, -0.998125029938986110, +-0.998128089093511690, -0.998131145752717220, -0.998134199916594800, -0.998137251585136890, -0.998140300758335930, -0.998143347436184160, -0.998146391618673910, -0.998149433305797860, +-0.998152472497548130, -0.998155509193917270, -0.998158543394897620, -0.998161575100481540, -0.998164604310661560, -0.998167631025430160, -0.998170655244779550, -0.998173676968702410, +-0.998176696197191070, -0.998179712930237990, -0.998182727167835520, -0.998185738909976310, -0.998188748156652820, -0.998191754907857390, -0.998194759163582580, -0.998197760923820840, +-0.998200760188564740, -0.998203756957806720, -0.998206751231539350, -0.998209743009755070, -0.998212732292446340, -0.998215719079605930, -0.998218703371226090, -0.998221685167299590, +-0.998224664467818880, -0.998227641272776520, -0.998230615582164970, -0.998233587395976900, -0.998236556714204970, -0.998239523536841530, -0.998242487863879370, -0.998245449695310930, +-0.998248409031128880, -0.998251365871325790, -0.998254320215894330, -0.998257272064827060, -0.998260221418116540, -0.998263168275755560, -0.998266112637736570, -0.998269054504052340, +-0.998271993874695560, -0.998274930749658670, -0.998277865128934460, -0.998280797012515710, -0.998283726400394870, -0.998286653292564720, -0.998289577689017940, -0.998292499589747200, +-0.998295418994745280, -0.998298335904004740, -0.998301250317518480, -0.998304162235278960, -0.998307071657279050, -0.998309978583511560, -0.998312883013969030, -0.998315784948644370, +-0.998318684387530130, -0.998321581330619210, -0.998324475777904400, -0.998327367729378360, -0.998330257185033990, -0.998333144144863850, -0.998336028608860950, -0.998338910577017960, +-0.998341790049327660, -0.998344667025782840, -0.998347541506376390, -0.998350413491101100, -0.998353282979949850, -0.998356149972915330, -0.998359014469990420, -0.998361876471168030, +-0.998364735976440820, -0.998367592985801910, -0.998370447499243970, -0.998373299516759900, -0.998376149038342600, -0.998378996063984840, -0.998381840593679740, -0.998384682627419970, +-0.998387522165198440, -0.998390359207008140, -0.998393193752841970, -0.998396025802692820, -0.998398855356553590, -0.998401682414417180, -0.998404506976276580, -0.998407329042124810, +-0.998410148611954540, -0.998412965685759100, -0.998415780263531170, -0.998418592345263760, -0.998421401930949860, -0.998424209020582490, -0.998427013614154530, -0.998429815711659120, +-0.998432615313089130, -0.998435412418437580, -0.998438207027697590, -0.998440999140862040, -0.998443788757923940, -0.998446575878876420, -0.998449360503712470, -0.998452142632425100, +-0.998454922265007320, -0.998457699401452240, -0.998460474041752980, -0.998463246185902540, -0.998466015833893940, -0.998468782985720280, -0.998471547641374800, -0.998474309800850280, +-0.998477069464140050, -0.998479826631237240, -0.998482581302134740, -0.998485333476825780, -0.998488083155303570, -0.998490830337561140, -0.998493575023591600, -0.998496317213388160, +-0.998499056906943850, -0.998501794104251990, -0.998504528805305600, -0.998507261010097900, -0.998509990718622010, -0.998512717930871150, -0.998515442646838560, -0.998518164866517340, +-0.998520884589900630, -0.998523601816981850, -0.998526316547753920, -0.998529028782210280, -0.998531738520344050, -0.998534445762148560, -0.998537150507616820, -0.998539852756742290, +-0.998542552509518070, -0.998545249765937500, -0.998547944525993820, -0.998550636789680260, -0.998553326556990140, -0.998556013827916700, -0.998558698602453170, -0.998561380880592870, +-0.998564060662329170, -0.998566737947655380, -0.998569412736564630, -0.998572085029050480, -0.998574754825106050, -0.998577422124724670, -0.998580086927899790, -0.998582749234624760, +-0.998585409044892790, -0.998588066358697350, -0.998590721176031650, -0.998593373496889150, -0.998596023321263290, -0.998598670649147310, -0.998601315480534770, -0.998603957815418770, +-0.998606597653793000, -0.998609234995650690, -0.998611869840985380, -0.998614502189790310, -0.998617132042058930, -0.998619759397784800, -0.998622384256961260, -0.998625006619581760, +-0.998627626485639740, -0.998630243855128660, -0.998632858728041970, -0.998635471104373120, -0.998638080984115660, -0.998640688367262940, -0.998643293253808520, -0.998645895643745840, +-0.998648495537068360, -0.998651092933769750, -0.998653687833843340, -0.998656280237282810, -0.998658870144081500, -0.998661457554232970, -0.998664042467730880, -0.998666624884568700, +-0.998669204804739860, -0.998671782228238050, -0.998674357155056810, -0.998676929585189720, -0.998679499518630220, -0.998682066955371980, -0.998684631895408680, -0.998687194338733650, +-0.998689754285340680, -0.998692311735223440, -0.998694866688375260, -0.998697419144790040, -0.998699969104461240, -0.998702516567382400, -0.998705061533547430, -0.998707604002949670, +-0.998710143975583000, -0.998712681451440990, -0.998715216430517190, -0.998717748912805400, -0.998720278898299170, -0.998722806386992400, -0.998725331378878420, -0.998727853873951240, +-0.998730373872204420, -0.998732891373631640, -0.998735406378226550, -0.998737918885983070, -0.998740428896894740, -0.998742936410955350, -0.998745441428158690, -0.998747943948498310, +-0.998750443971968100, -0.998752941498561750, -0.998755436528273140, -0.998757929061095840, -0.998760419097023840, -0.998762906636050720, -0.998765391678170360, -0.998767874223376430, +-0.998770354271662940, -0.998772831823023450, -0.998775306877451970, -0.998777779434942170, -0.998780249495487940, -0.998782717059083060, -0.998785182125721430, -0.998787644695396830, +-0.998790104768103150, -0.998792562343834180, -0.998795017422583810, -0.998797470004345820, -0.998799920089114220, -0.998802367676882910, -0.998804812767645540, -0.998807255361396250, +-0.998809695458128700, -0.998812133057837000, -0.998814568160514950, -0.998817000766156540, -0.998819430874755550, -0.998821858486306000, -0.998824283600801780, -0.998826706218236880, +-0.998829126338605210, -0.998831543961900660, -0.998833959088117340, -0.998836371717249150, -0.998838781849289980, -0.998841189484233840, -0.998843594622074730, -0.998845997262806650, +-0.998848397406423620, -0.998850795052919520, -0.998853190202288470, -0.998855582854524470, -0.998857973009621420, -0.998860360667573550, -0.998862745828374640, -0.998865128492019030, +-0.998867508658500490, -0.998869886327813260, -0.998872261499951230, -0.998874634174908630, -0.998877004352679340, -0.998879372033257610, -0.998881737216637420, -0.998884099902812910, +-0.998886460091778170, -0.998888817783527230, -0.998891172978054300, -0.998893525675353390, -0.998895875875418730, -0.998898223578244320, -0.998900568783824380, -0.998902911492153050, +-0.998905251703224310, -0.998907589417032620, -0.998909924633571870, -0.998912257352836290, -0.998914587574820100, -0.998916915299517430, -0.998919240526922380, -0.998921563257029410, +-0.998923883489832410, -0.998926201225325720, -0.998928516463503560, -0.998930829204360050, -0.998933139447889530, -0.998935447194086110, -0.998937752442944140, -0.998940055194457720, +-0.998942355448621200, -0.998944653205428800, -0.998946948464874750, -0.998949241226953390, -0.998951531491658830, -0.998953819258985520, -0.998956104528927580, -0.998958387301479460, +-0.998960667576635260, -0.998962945354389450, -0.998965220634736360, -0.998967493417670100, -0.998969763703185240, -0.998972031491275890, -0.998974296781936390, -0.998976559575161290, +-0.998978819870944720, -0.998981077669281130, -0.998983332970164730, -0.998985585773590090, -0.998987836079551550, -0.998990083888043330, -0.998992329199059890, -0.998994572012595670, +-0.998996812328645010, -0.998999050147202360, -0.999001285468262060, -0.999003518291818550, -0.999005748617866170, -0.999007976446399490, -0.999010201777412840, -0.999012424610900780, +-0.999014644946857540, -0.999016862785277790, -0.999019078126155760, -0.999021290969486110, -0.999023501315263300, -0.999025709163481550, -0.999027914514135640, -0.999030117367220030, +-0.999032317722729050, -0.999034515580657260, -0.999036710940999110, -0.999038903803749270, -0.999041094168902190, -0.999043282036452320, -0.999045467406394330, -0.999047650278722550, +-0.999049830653431780, -0.999052008530516340, -0.999054183909970920, -0.999056356791789950, -0.999058527175968210, -0.999060695062500060, -0.999062860451380260, -0.999065023342603280, +-0.999067183736163770, -0.999069341632056180, -0.999071497030275310, -0.999073649930815710, -0.999075800333672050, -0.999077948238838780, -0.999080093646310670, -0.999082236556082300, +-0.999084376968148450, -0.999086514882503550, -0.999088650299142400, -0.999090783218059660, -0.999092913639249900, -0.999095041562707900, -0.999097166988428210, -0.999099289916405730, +-0.999101410346634910, -0.999103528279110640, -0.999105643713827480, -0.999107756650780330, -0.999109867089963740, -0.999111975031372390, -0.999114080475001280, -0.999116183420844850, +-0.999118283868897890, -0.999120381819155300, -0.999122477271611850, -0.999124570226262110, -0.999126660683100960, -0.999128748642123090, -0.999130834103323480, -0.999132917066696710, +-0.999134997532237670, -0.999137075499941130, -0.999139150969801880, -0.999141223941814700, -0.999143294415974600, -0.999145362392276140, -0.999147427870714310, -0.999149490851284020, +-0.999151551333979930, -0.999153609318796930, -0.999155664805729930, -0.999157717794773690, -0.999159768285923230, -0.999161816279173330, -0.999163861774518990, -0.999165904771954880, +-0.999167945271476010, -0.999169983273077380, -0.999172018776753660, -0.999174051782499960, -0.999176082290311070, -0.999178110300182110, -0.999180135812107740, -0.999182158826083080, +-0.999184179342103020, -0.999186197360162560, -0.999188212880256610, -0.999190225902380050, -0.999192236426527990, -0.999194244452695330, -0.999196249980876970, -0.999198253011068130, +-0.999200253543263580, -0.999202251577458340, -0.999204247113647530, -0.999206240151826130, -0.999208230691989160, -0.999210218734131520, -0.999212204278248420, -0.999214187324334760, +-0.999216167872385540, -0.999218145922395990, -0.999220121474361120, -0.999222094528275930, -0.999224065084135530, -0.999226033141934810, -0.999227998701669230, -0.999229961763333450, +-0.999231922326922930, -0.999233880392432550, -0.999235835959857430, -0.999237789029192690, -0.999239739600433550, -0.999241687673575020, -0.999243633248612320, -0.999245576325540560, +-0.999247516904354760, -0.999249454985050240, -0.999251390567622020, -0.999253323652065430, -0.999255254238375470, -0.999257182326547370, -0.999259107916576240, -0.999261031008457420, +-0.999262951602186030, -0.999264869697757300, -0.999266785295166330, -0.999268698394408460, -0.999270608995478820, -0.999272517098372610, -0.999274422703085090, -0.999276325809611570, +-0.999278226417947280, -0.999280124528087340, -0.999282020140027090, -0.999283913253761870, -0.999285803869286780, -0.999287691986597280, -0.999289577605688480, -0.999291460726555720, +-0.999293341349194340, -0.999295219473599560, -0.999297095099766830, -0.999298968227691260, -0.999300838857368310, -0.999302706988793310, -0.999304572621961480, -0.999306435756868280, +-0.999308296393508930, -0.999310154531878880, -0.999312010171973350, -0.999313863313787910, -0.999315713957317770, -0.999317562102558400, -0.999319407749505010, -0.999321250898153160, +-0.999323091548498190, -0.999324929700535550, -0.999326765354260460, -0.999328598509668600, -0.999330429166755190, -0.999332257325515670, -0.999334082985945500, -0.999335906148040130, +-0.999337726811795000, -0.999339544977205560, -0.999341360644267260, -0.999343173812975550, -0.999344984483325980, -0.999346792655313900, -0.999348598328934750, -0.999350401504184190, +-0.999352202181057690, -0.999354000359550580, -0.999355796039658520, -0.999357589221376960, -0.999359379904701360, -0.999361168089627380, -0.999362953776150480, -0.999364736964266200, +-0.999366517653970110, -0.999368295845257660, -0.999370071538124520, -0.999371844732566130, -0.999373615428578170, -0.999375383626156190, -0.999377149325295750, -0.999378912525992420, +-0.999380673228241760, -0.999382431432039530, -0.999384187137381090, -0.999385940344262310, -0.999387691052678660, -0.999389439262625690, -0.999391184974099180, -0.999392928187094690, +-0.999394668901607890, -0.999396407117634440, -0.999398142835170030, -0.999399876054210100, -0.999401606774750650, -0.999403334996787130, -0.999405060720315210, -0.999406783945330670, +-0.999408504671829180, -0.999410222899806410, -0.999411938629258150, -0.999413651860179940, -0.999415362592567690, -0.999417070826416950, -0.999418776561723620, -0.999420479798483250, +-0.999422180536691850, -0.999423878776344870, -0.999425574517438190, -0.999427267759967600, -0.999428958503928880, -0.999430646749317700, -0.999432332496129950, -0.999434015744361300, +-0.999435696494007650, -0.999437374745064780, -0.999439050497528460, -0.999440723751394590, -0.999442394506658840, -0.999444062763317100, -0.999445728521365150, -0.999447391780798890, +-0.999449052541614200, -0.999450710803806870, -0.999452366567372800, -0.999454019832307860, -0.999455670598607740, -0.999457318866268540, -0.999458964635285940, -0.999460607905656050, +-0.999462248677374540, -0.999463886950437420, -0.999465522724840680, -0.999467156000580000, -0.999468786777651500, -0.999470415056051050, -0.999472040835774570, -0.999473664116817930, +-0.999475284899177140, -0.999476903182848210, -0.999478518967826910, -0.999480132254109480, -0.999481743041691570, -0.999483351330569310, -0.999484957120738700, -0.999486560412195750, +-0.999488161204936330, -0.999489759498956580, -0.999491355294252370, -0.999492948590819830, -0.999494539388654850, -0.999496127687753530, -0.999497713488111890, -0.999499296789726040, +-0.999500877592591870, -0.999502455896705500, -0.999504031702063030, -0.999505605008660480, -0.999507175816493950, -0.999508744125559460, -0.999510309935853100, -0.999511873247371010, +-0.999513434060109170, -0.999514992374063720, -0.999516548189230860, -0.999518101505606600, -0.999519652323187070, -0.999521200641968480, -0.999522746461946830, -0.999524289783118250, +-0.999525830605479060, -0.999527368929025270, -0.999528904753753000, -0.999530438079658580, -0.999531968906737900, -0.999533497234987410, -0.999535023064403230, -0.999536546394981350, +-0.999538067226718230, -0.999539585559609870, -0.999541101393652600, -0.999542614728842540, -0.999544125565175910, -0.999545633902649060, -0.999547139741258080, -0.999548643080999220, +-0.999550143921868810, -0.999551642263862950, -0.999553138106978100, -0.999554631451210260, -0.999556122296555990, -0.999557610643011300, -0.999559096490572620, -0.999560579839236300, +-0.999562060688998440, -0.999563539039855400, -0.999565014891803600, -0.999566488244839180, -0.999567959098958570, -0.999569427454158000, -0.999570893310434030, -0.999572356667782660, +-0.999573817526200450, -0.999575275885683730, -0.999576731746228850, -0.999578185107832030, -0.999579635970489820, -0.999581084334198570, -0.999582530198954490, -0.999583973564754150, +-0.999585414431593880, -0.999586852799470020, -0.999588288668379120, -0.999589722038317420, -0.999591152909281470, -0.999592581281267600, -0.999594007154272270, -0.999595430528292030, +-0.999596851403323110, -0.999598269779362060, -0.999599685656405330, -0.999601099034449380, -0.999602509913490760, -0.999603918293525790, -0.999605324174551060, -0.999606727556563100, +-0.999608128439558150, -0.999609526823532990, -0.999610922708484060, -0.999612316094407700, -0.999613706981300590, -0.999615095369159270, -0.999616481257980190, -0.999617864647759920, +-0.999619245538494900, -0.999620623930181810, -0.999621999822817190, -0.999623373216397600, -0.999624744110919510, -0.999626112506379560, -0.999627478402774330, -0.999628841800100480, +-0.999630202698354450, -0.999631561097532930, -0.999632916997632570, -0.999634270398649830, -0.999635621300581480, -0.999636969703423970, -0.999638315607174200, -0.999639659011828500, +-0.999640999917383750, -0.999642338323836420, -0.999643674231183280, -0.999645007639420990, -0.999646338548546120, -0.999647666958555450, -0.999648992869445530, -0.999650316281213260, +-0.999651637193855080, -0.999652955607367890, -0.999654271521748240, -0.999655584936993020, -0.999656895853098800, -0.999658204270062250, -0.999659510187880240, -0.999660813606549460, +-0.999662114526066680, -0.999663412946428580, -0.999664708867632030, -0.999666002289673620, -0.999667293212550210, -0.999668581636258600, -0.999669867560795460, -0.999671150986157660, +-0.999672431912342120, -0.999673710339345380, -0.999674986267164440, -0.999676259695795990, -0.999677530625236900, -0.999678799055483960, -0.999680064986533940, -0.999681328418383860, +-0.999682589351030490, -0.999683847784470610, -0.999685103718701120, -0.999686357153718900, -0.999687608089520730, -0.999688856526103510, -0.999690102463464240, -0.999691345901599690, +-0.999692586840506770, -0.999693825280182360, -0.999695061220623350, -0.999696294661826750, -0.999697525603789440, -0.999698754046508320, -0.999699979989980280, -0.999701203434202210, +-0.999702424379171230, -0.999703642824884220, -0.999704858771337970, -0.999706072218529700, -0.999707283166456180, -0.999708491615114550, -0.999709697564501560, -0.999710901014614350, +-0.999712101965450020, -0.999713300417005240, -0.999714496369277340, -0.999715689822263220, -0.999716880775959770, -0.999718069230364210, -0.999719255185473440, -0.999720438641284570, +-0.999721619597794490, -0.999722798055000420, -0.999723974012899360, -0.999725147471488440, -0.999726318430764540, -0.999727486890724990, -0.999728652851366580, -0.999729816312686540, +-0.999730977274682080, -0.999732135737350090, -0.999733291700687810, -0.999734445164692230, -0.999735596129360580, -0.999736744594689860, -0.999737890560677410, -0.999739034027320230, +-0.999740174994615320, -0.999741313462560120, -0.999742449431151540, -0.999743582900386900, -0.999744713870263310, -0.999745842340777900, -0.999746968311927890, -0.999748091783710490, +-0.999749212756122830, -0.999750331229162130, -0.999751447202825600, -0.999752560677110490, -0.999753671652013900, -0.999754780127533270, -0.999755886103665500, -0.999756989580408150, +-0.999758090557758330, -0.999759189035713260, -0.999760285014270170, -0.999761378493426500, -0.999762469473179260, -0.999763557953525890, -0.999764643934463630, -0.999765727415989680, +-0.999766808398101500, -0.999767886880796320, -0.999768962864071350, -0.999770036347924050, -0.999771107332351530, -0.999772175817351340, -0.999773241802920710, -0.999774305289056970, +-0.999775366275757470, -0.999776424763019530, -0.999777480750840610, -0.999778534239217920, -0.999779585228148800, -0.999780633717630930, -0.999781679707661300, -0.999782723198237580, +-0.999783764189356990, -0.999784802681016990, -0.999785838673215020, -0.999786872165948410, -0.999787903159214620, -0.999788931653011080, -0.999789957647335250, -0.999790981142184560, +-0.999792002137556370, -0.999793020633448100, -0.999794036629857330, -0.999795050126781490, -0.999796061124218040, -0.999797069622164410, -0.999798075620618180, -0.999799079119576660, +-0.999800080119037430, -0.999801078618998140, -0.999802074619456030, -0.999803068120408760, -0.999804059121853770, -0.999805047623788750, -0.999806033626211010, -0.999807017129118240, +-0.999807998132507980, -0.999808976636377580, -0.999809952640724810, -0.999810926145547230, -0.999811897150842290, -0.999812865656607540, -0.999813831662840660, -0.999814795169539310, +-0.999815756176700820, -0.999816714684322980, -0.999817670692403460, -0.999818624200939590, -0.999819575209929260, -0.999820523719370020, -0.999821469729259450, -0.999822413239595200, +-0.999823354250374830, -0.999824292761596230, -0.999825228773256750, -0.999826162285354260, -0.999827093297886440, -0.999828021810850840, -0.999828947824245140, -0.999829871338067110, +-0.999830792352314310, -0.999831710866984640, -0.999832626882075640, -0.999833540397585100, -0.999834451413510790, -0.999835359929850180, -0.999836265946601240, -0.999837169463761670, +-0.999838070481329220, -0.999838968999301470, -0.999839865017676410, -0.999840758536451600, -0.999841649555624930, -0.999842538075194190, -0.999843424095157030, -0.999844307615511350, +-0.999845188636254930, -0.999846067157385440, -0.999846943178900880, -0.999847816700798920, -0.999848687723077440, -0.999849556245734240, -0.999850422268767080, -0.999851285792173970, +-0.999852146815952580, -0.999853005340100800, -0.999853861364616510, -0.999854714889497620, -0.999855565914742010, -0.999856414440347340, -0.999857260466311740, -0.999858103992632860, +-0.999858945019308830, -0.999859783546337420, -0.999860619573716520, -0.999861453101444140, -0.999862284129518050, -0.999863112657936370, -0.999863938686696760, -0.999864762215797340, +-0.999865583245236110, -0.999866401775010850, -0.999867217805119560, -0.999868031335560240, -0.999868842366330890, -0.999869650897429410, -0.999870456928853790, -0.999871260460602040, +-0.999872061492672160, -0.999872860025062040, -0.999873656057769900, -0.999874449590793520, -0.999875240624131020, -0.999876029157780510, -0.999876815191739880, -0.999877598726007120, +-0.999878379760580470, -0.999879158295457810, -0.999879934330637270, -0.999880707866116940, -0.999881478901894830, -0.999882247437969050, -0.999883013474337610, -0.999883777010998620, +-0.999884538047950190, -0.999885296585190430, -0.999886052622717350, -0.999886806160529270, -0.999887557198624100, -0.999888305737000050, -0.999889051775655240, -0.999889795314587880, +-0.999890536353795880, -0.999891274893277670, -0.999892010933031260, -0.999892744473054760, -0.999893475513346400, -0.999894204053904390, -0.999894930094726850, -0.999895653635812010, +-0.999896374677157970, -0.999897093218763080, -0.999897809260625440, -0.999898522802743160, -0.999899233845114700, -0.999899942387738160, -0.999900648430611770, -0.999901351973733640, +-0.999902053017102220, -0.999902751560715730, -0.999903447604572280, -0.999904141148670210, -0.999904832193007740, -0.999905520737583320, -0.999906206782394950, -0.999906890327441180, +-0.999907571372720130, -0.999908249918230130, -0.999908925963969630, -0.999909599509936740, -0.999910270556129800, -0.999910939102547250, -0.999911605149187310, -0.999912268696048320, +-0.999912929743128730, -0.999913588290426870, -0.999914244337940960, -0.999914897885669450, -0.999915548933610680, -0.999916197481763080, -0.999916843530124890, -0.999917487078694660, +-0.999918128127470720, -0.999918766676451520, -0.999919402725635290, -0.999920036275020570, -0.999920667324605830, -0.999921295874389380, -0.999921921924369680, -0.999922545474545180, +-0.999923166524914420, -0.999923785075475640, -0.999924401126227380, -0.999925014677168100, -0.999925625728296350, -0.999926234279610580, -0.999926840331109120, -0.999927443882790650, +-0.999928044934653480, -0.999928643486696300, -0.999929239538917440, -0.999929833091315450, -0.999930424143888890, -0.999931012696636310, -0.999931598749556280, -0.999932182302647130, +-0.999932763355907530, -0.999933341909336030, -0.999933917962931180, -0.999934491516691560, -0.999935062570615710, -0.999935631124702300, -0.999936197178949660, -0.999936760733356580, +-0.999937321787921610, -0.999937880342643300, -0.999938436397520340, -0.999938989952551260, -0.999939541007734740, -0.999940089563069350, -0.999940635618553620, -0.999941179174186460, +-0.999941720229966300, -0.999942258785891820, -0.999942794841961690, -0.999943328398174680, -0.999943859454529240, -0.999944388011024140, -0.999944914067658170, -0.999945437624429780, +-0.999945958681337840, -0.999946477238381040, -0.999946993295558140, -0.999947506852867600, -0.999948017910308410, -0.999948526467879020, -0.999949032525578430, -0.999949536083405310, +-0.999950037141358220, -0.999950535699436150, -0.999951031757637670, -0.999951525315961650, -0.999952016374406780, -0.999952504932971830, -0.999952990991655690, -0.999953474550457130, +-0.999953955609374720, -0.999954434168407570, -0.999954910227554230, -0.999955383786813700, -0.999955854846184660, -0.999956323405665980, -0.999956789465256570, -0.999957253024955080, +-0.999957714084760530, -0.999958172644671680, -0.999958628704687440, -0.999959082264806560, -0.999959533325027960, -0.999959981885350510, -0.999960427945773220, -0.999960871506294760, +-0.999961312566914230, -0.999961751127630310, -0.999962187188441990, -0.999962620749348270, -0.999963051810348060, -0.999963480371440120, -0.999963906432623560, -0.999964329993897170, +-0.999964751055259950, -0.999965169616710890, -0.999965585678248890, -0.999965999239872950, -0.999966410301581950, -0.999966818863375020, -0.999967224925250920, -0.999967628487208880, +-0.999968029549247680, -0.999968428111366440, -0.999968824173564140, -0.999969217735839800, -0.999969608798192410, -0.999969997360620980, -0.999970383423124500, -0.999970766985702090, +-0.999971148048352850, -0.999971526611075690, -0.999971902673869710, -0.999972276236733900, -0.999972647299667510, -0.999973015862669400, -0.999973381925738810, -0.999973745488874850, +-0.999974106552076410, -0.999974465115342710, -0.999974821178672870, -0.999975174742065990, -0.999975525805521180, -0.999975874369037570, -0.999976220432614250, -0.999976563996250340, +-0.999976905059945080, -0.999977243623697550, -0.999977579687506890, -0.999977913251372310, -0.999978244315292920, -0.999978572879267950, -0.999978898943296500, -0.999979222507377810, +-0.999979543571511090, -0.999979862135695450, -0.999980178199930240, -0.999980491764214550, -0.999980802828547620, -0.999981111392928670, -0.999981417457357020, -0.999981721021831800, +-0.999982022086352230, -0.999982320650917630, -0.999982616715527240, -0.999982910280180270, -0.999983201344876060, -0.999983489909613830, -0.999983775974392920, -0.999984059539212540, +-0.999984340604071930, -0.999984619168970630, -0.999984895233907660, -0.999985168798882550, -0.999985439863894430, -0.999985708428942740, -0.999985974494026710, -0.999986238059145880, +-0.999986499124299380, -0.999986757689486640, -0.999987013754707000, -0.999987267319959790, -0.999987518385244470, -0.999987766950560350, -0.999988013015906780, -0.999988256581283210, +-0.999988497646689070, -0.999988736212123590, -0.999988972277586320, -0.999989205843076490, -0.999989436908593770, -0.999989665474137480, -0.999989891539706970, -0.999990115105301780, +-0.999990336170921260, -0.999990554736564840, -0.999990770802232090, -0.999990984367922440, -0.999991195433635350, -0.999991403999370140, -0.999991610065126600, -0.999991813630903950, +-0.999992014696701740, -0.999992213262519520, -0.999992409328356760, -0.999992602894212990, -0.999992793960087670, -0.999992982525980460, -0.999993168591890690, -0.999993352157818040, +-0.999993533223762050, -0.999993711789722180, -0.999993887855698090, -0.999994061421689230, -0.999994232487695140, -0.999994401053715620, -0.999994567119749990, -0.999994730685798030, +-0.999994891751859180, -0.999995050317933120, -0.999995206384019400, -0.999995359950117680, -0.999995511016227630, -0.999995659582348710, -0.999995805648480670, -0.999995949214623090, +-0.999996090280775740, -0.999996228846938060, -0.999996364913109840, -0.999996498479290730, -0.999996629545480410, -0.999996758111678430, -0.999996884177884570, -0.999997007744098500, +-0.999997128810319990, -0.999997247376548600, -0.999997363442784120, -0.999997477009026190, -0.999997588075274610, -0.999997696641529040, -0.999997802707789150, -0.999997906274054830, +-0.999998007340325730, -0.999998105906601650, -0.999998201972882250, -0.999998295539167410, -0.999998386605456810, -0.999998475171750220, -0.999998561238047420, -0.999998644804348300, +-0.999998725870652530, -0.999998804436959880, -0.999998880503270350, -0.999998954069583500, -0.999999025135899330, -0.999999093702217620, -0.999999159768538040, -0.999999223334860690, +-0.999999284401185240, -0.999999342967511580, -0.999999399033839610, -0.999999452600169090, -0.999999503666499920, -0.999999552232832100, -0.999999598299165290, -0.999999641865499500, +-0.999999682931834610, -0.999999721498170510, -0.999999757564507100, -0.999999791130844360, -0.999999822197182090, -0.999999850763520270, -0.999999876829858910, -0.999999900396197680, +-0.999999921462536800, -0.999999940028876160, -0.999999956095215640, -0.999999969661555240, -0.999999980727894870, -0.999999989294234610, -0.999999995360574270, -0.999999998926914050, +-0.999999999993253730, -0.999999998559593540, -0.999999994625933250, -0.999999988192273090, -0.999999979258612840, -0.999999967824952710, -0.999999953891292590, -0.999999937457632600, +-0.999999918523972850, -0.999999897090313230, -0.999999873156653950, -0.999999846722994910, -0.999999817789336220, -0.999999786355678100, -0.999999752422020440, -0.999999715988363350, +-0.999999677054707050, -0.999999635621051540, -0.999999591687396940, -0.999999545253743350, -0.999999496320091000, -0.999999444886439770, -0.999999390952790000, -0.999999334519141690, +-0.999999275585495170, -0.999999214151850340, -0.999999150218207510, -0.999999083784566810, -0.999999014850928350, -0.999998943417292450, -0.999998869483659130, -0.999998793050028700, +-0.999998714116401180, -0.999998632682777000, -0.999998548749156170, -0.999998462315538910, -0.999998373381925540, -0.999998281948316300, -0.999998188014711300, -0.999998091581110860, +-0.999997992647515100, -0.999997891213924460, -0.999997787280339060, -0.999997680846759220, -0.999997571913185170, -0.999997460479617130, -0.999997346546055540, -0.999997230112500520, +-0.999997111178952400, -0.999996989745411510, -0.999996865811878190, -0.999996739378352760, -0.999996610444835340, -0.999996479011326490, -0.999996345077826420, -0.999996208644335470, +-0.999996069710853970, -0.999995928277382370, -0.999995784343920890, -0.999995637910470080, -0.999995488977030060, -0.999995337543601260, -0.999995183610184250, -0.999995027176779240, +-0.999994868243386570, -0.999994706810006790, -0.999994542876640360, -0.999994376443287370, -0.999994207509948610, -0.999994036076624290, -0.999993862143314760, -0.999993685710020670, +-0.999993506776742370, -0.999993325343480290, -0.999993141410234990, -0.999992954977006690, -0.999992766043796060, -0.999992574610603540, -0.999992380677429570, -0.999992184244274610, +-0.999991985311139310, -0.999991783878023900, -0.999991579944929150, -0.999991373511855300, -0.999991164578803100, -0.999990953145773020, -0.999990739212765600, -0.999990522779781290, +-0.999990303846820640, -0.999990082413884210, -0.999989858480972550, -0.999989632048086330, -0.999989403115225990, -0.999989171682392210, -0.999988937749585420, -0.999988701316806280, +-0.999988462384055480, -0.999988220951333440, -0.999987977018640840, -0.999987730585978340, -0.999987481653346500, -0.999987230220745980, -0.999986976288177340, -0.999986719855641360, +-0.999986460923138480, -0.999986199490669470, -0.999985935558234900, -0.999985669125835640, -0.999985400193472040, -0.999985128761145090, -0.999984854828855240, -0.999984578396603260, +-0.999984299464389830, -0.999984018032215700, -0.999983734100081460, -0.999983447667987970, -0.999983158735935800, -0.999982867303925720, -0.999982573371958510, -0.999982276940034830, +-0.999981978008155470, -0.999981676576321200, -0.999981372644532680, -0.999981066212790700, -0.999980757281096140, -0.999980445849449670, -0.999980131917852070, -0.999979815486304210, +-0.999979496554806670, -0.999979175123360540, -0.999978851191966390, -0.999978524760625100, -0.999978195829337560, -0.999977864398104430, -0.999977530466926720, -0.999977194035805210, +-0.999976855104740660, -0.999976513673733970, -0.999976169742786030, -0.999975823311897600, -0.999975474381069710, -0.999975122950303110, -0.999974769019598700, -0.999974412588957250, +-0.999974053658379880, -0.999973692227867360, -0.999973328297420690, -0.999972961867040540, -0.999972592936728130, -0.999972221506484130, -0.999971847576309640, -0.999971471146205550, +-0.999971092216172750, -0.999970710786212250, -0.999970326856324920, -0.999969940426511770, -0.999969551496773800, -0.999969160067111900, -0.999968766137527170, -0.999968369708020500, +-0.999967970778592900, -0.999967569349245360, -0.999967165419978990, -0.999966758990794570, -0.999966350061693320, -0.999965938632676240, -0.999965524703744220, -0.999965108274898480, +-0.999964689346139910, -0.999964267917469620, -0.999963843988888710, -0.999963417560398080, -0.999962988631999060, -0.999962557203692430, -0.999962123275479510, -0.999961686847361200, +-0.999961247919338710, -0.999960806491413170, -0.999960362563585560, -0.999959916135857000, -0.999959467208228700, -0.999959015780701680, -0.999958561853277140, -0.999958105425956200, +-0.999957646498740080, -0.999957185071629780, -0.999956721144626530, -0.999956254717731420, -0.999955785790945680, -0.999955314364270540, -0.999954840437707100, -0.999954364011256480, +-0.999953885084920000, -0.999953403658698890, -0.999952919732594150, -0.999952433306607210, -0.999951944380739090, -0.999951452954991220, -0.999950959029364590, -0.999950462603860670, +-0.999949963678480550, -0.999949462253225560, -0.999948958328096830, -0.999948451903095780, -0.999947942978223540, -0.999947431553481540, -0.999946917628870890, -0.999946401204392930, +-0.999945882280048990, -0.999945360855840400, -0.999944836931768390, -0.999944310507834170, -0.999943781584039290, -0.999943250160384990, -0.999942716236872480, -0.999942179813503200, +-0.999941640890278480, -0.999941099467199670, -0.999940555544268080, -0.999940009121485060, -0.999939460198852050, -0.999938908776370480, -0.999938354854041590, -0.999937798431866810, +-0.999937239509847480, -0.999936678087985030, -0.999936114166281030, -0.999935547744736590, -0.999934978823353360, -0.999934407402132690, -0.999933833481076010, -0.999933257060184770, +-0.999932678139460300, -0.999932096718904150, -0.999931512798517770, -0.999930926378302610, -0.999930337458260210, -0.999929746038391910, -0.999929152118699260, -0.999928555699183710, +-0.999927956779846800, -0.999927355360689880, -0.999926751441714720, -0.999926145022922650, -0.999925536104315120, -0.999924924685893890, -0.999924310767660310, -0.999923694349615920, +-0.999923075431762290, -0.999922454014100960, -0.999921830096633490, -0.999921203679361550, -0.999920574762286460, -0.999919943345410010, -0.999919309428733750, -0.999918673012259120, +-0.999918034095987780, -0.999917392679921520, -0.999916748764061670, -0.999916102348409890, -0.999915453432967950, -0.999914802017737410, -0.999914148102719720, -0.999913491687916770, +-0.999912832773330100, -0.999912171358961270, -0.999911507444812050, -0.999910841030884120, -0.999910172117179030, -0.999909500703698550, -0.999908826790444240, -0.999908150377417980, +-0.999907471464621220, -0.999906790052055850, -0.999906106139723530, -0.999905419727625810, -0.999904730815764700, -0.999904039404141740, -0.999903345492758610, -0.999902649081617190, +-0.999901950170719030, -0.999901248760066140, -0.999900544849660070, -0.999899838439502590, -0.999899129529595590, -0.999898418119940740, -0.999897704210539810, -0.999896987801394690, +-0.999896268892507050, -0.999895547483878660, -0.999894823575511520, -0.999894097167407290, -0.999893368259567870, -0.999892636851994920, -0.999891902944690440, -0.999891166537656200, +-0.999890427630894090, -0.999889686224405880, -0.999888942318193360, -0.999888195912258640, -0.999887447006603370, -0.999886695601229450, -0.999885941696138760, -0.999885185291333300, +-0.999884426386814850, -0.999883664982585300, -0.999882901078646640, -0.999882134675000640, -0.999881365771649430, -0.999880594368594780, -0.999879820465838560, -0.999879044063382790, +-0.999878265161229460, -0.999877483759380570, -0.999876699857837780, -0.999875913456603320, -0.999875124555679170, -0.999874333155067130, -0.999873539254769180, -0.999872742854787440, +-0.999871943955123910, -0.999871142555780470, -0.999870338656759120, -0.999869532258061970, -0.999868723359691010, -0.999867911961648260, -0.999867098063935700, -0.999866281666555450, +-0.999865462769509380, -0.999864641372799730, -0.999863817476428500, -0.999862991080397670, -0.999862162184709360, -0.999861330789365680, -0.999860496894368620, -0.999859660499720420, +-0.999858821605422940, -0.999857980211478540, -0.999857136317889080, -0.999856289924656800, -0.999855441031783810, -0.999854589639272210, -0.999853735747124220, -0.999852879355341840, +-0.999852020463927180, -0.999851159072882580, -0.999850295182210020, -0.999849428791911740, -0.999848559901989840, -0.999847688512446650, -0.999846814623284170, -0.999845938234504630, +-0.999845059346110340, -0.999844177958103320, -0.999843294070485890, -0.999842407683260160, -0.999841518796428460, -0.999840627409993020, -0.999839733523955940, -0.999838837138319560, +-0.999837938253086090, -0.999837036868257760, -0.999836132983836780, -0.999835226599825600, -0.999834317716226220, -0.999833406333041070, -0.999832492450272500, -0.999831576067922610, +-0.999830657185993840, -0.999829735804488420, -0.999828811923408560, -0.999827885542756810, -0.999826956662535290, -0.999826025282746330, -0.999825091403392370, -0.999824155024475640, +-0.999823216145998560, -0.999822274767963480, -0.999821330890372620, -0.999820384513228520, -0.999819435636533420, -0.999818484260289630, -0.999817530384499720, -0.999816574009166010, +-0.999815615134290850, -0.999814653759876660, -0.999813689885925780, -0.999812723512440770, -0.999811754639423840, -0.999810783266877670, -0.999809809394804460, -0.999808833023206670, +-0.999807854152086840, -0.999806872781447420, -0.999805888911290740, -0.999804902541619470, -0.999803913672435820, -0.999802922303742460, -0.999801928435541720, -0.999800932067836160, +-0.999799933200628320, -0.999798931833920660, -0.999797927967715610, -0.999796921602015830, -0.999795912736823670, -0.999794901372141780, -0.999793887507972600, -0.999792871144318700, +-0.999791852281182610, -0.999790830918566910, -0.999789807056474130, -0.999788780694906840, -0.999787751833867590, -0.999786720473359040, -0.999785686613383630, -0.999784650253943920, +-0.999783611395042680, -0.999782570036682360, -0.999781526178865730, -0.999780479821595120, -0.999779430964873430, -0.999778379608703190, -0.999777325753086870, -0.999776269398027330, +-0.999775210543527030, -0.999774149189588850, -0.999773085336215120, -0.999772018983408840, -0.999770950131172450, -0.999769878779508630, -0.999768804928420130, -0.999767728577909740, +-0.999766649727979910, -0.999765568378633510, -0.999764484529873100, -0.999763398181701570, -0.999762309334121470, -0.999761217987135690, -0.999760124140746780, -0.999759027794957620, +-0.999757928949770890, -0.999756827605189360, -0.999755723761215690, -0.999754617417852760, -0.999753508575103260, -0.999752397232969940, -0.999751283391455690, -0.999750167050563300, +-0.999749048210295420, -0.999747926870654830, -0.999746803031644540, -0.999745676693267190, -0.999744547855525690, -0.999743416518422800, -0.999742282681961410, -0.999741146346144300, +-0.999740007510974250, -0.999738866176454240, -0.999737722342587070, -0.999736576009375600, -0.999735427176822730, -0.999734275844931240, -0.999733122013704010, -0.999731965683144040, +-0.999730806853254110, -0.999729645524037200, -0.999728481695496220, -0.999727315367633930, -0.999726146540453440, -0.999724975213957530, -0.999723801388149200, -0.999722625063031440, +-0.999721446238607040, -0.999720264914878980, -0.999719081091850370, -0.999717894769524000, -0.999716705947902850, -0.999715514626990040, -0.999714320806788350, -0.999713124487300870, +-0.999711925668530620, -0.999710724350480580, -0.999709520533153650, -0.999708314216552930, -0.999707105400681530, -0.999705894085542220, -0.999704680271138240, -0.999703463957472670, +-0.999702245144548310, -0.999701023832368360, -0.999699800020935840, -0.999698573710253830, -0.999697344900325360, -0.999696113591153620, -0.999694879782741520, -0.999693643475092260, +-0.999692404668208860, -0.999691163362094400, -0.999689919556752130, -0.999688673252185020, -0.999687424448396200, -0.999686173145388880, -0.999684919343166060, -0.999683663041731060, +-0.999682404241086790, -0.999681142941236560, -0.999679879142183370, -0.999678612843930670, -0.999677344046481230, -0.999676072749838610, -0.999674798954005680, -0.999673522658985790, +-0.999672243864782150, -0.999670962571397870, -0.999669678778836170, -0.999668392487100270, -0.999667103696193380, -0.999665812406118850, -0.999664518616879660, -0.999663222328479150, +-0.999661923540920650, -0.999660622254207380, -0.999659318468342440, -0.999658012183329280, -0.999656703399171120, -0.999655392115871180, -0.999654078333432670, -0.999652762051859050, +-0.999651443271153520, -0.999650121991319420, -0.999648798212359970, -0.999647471934278500, -0.999646143157078340, -0.999644811880762930, -0.999643478105335380, -0.999642141830799140, +-0.999640803057157630, -0.999639461784414100, -0.999638118012571850, -0.999636771741634340, -0.999635422971604900, -0.999634071702486860, -0.999632717934283650, -0.999631361666998730, +-0.999630002900635310, -0.999628641635196940, -0.999627277870686950, -0.999625911607108790, -0.999624542844465780, -0.999623171582761480, -0.999621797821999230, -0.999620421562182560, +-0.999619042803314710, -0.999617661545399330, -0.999616277788439760, -0.999614891532439540, -0.999613502777402020, -0.999612111523330850, -0.999610717770229360, -0.999609321518101000, +-0.999607922766949430, -0.999606521516777980, -0.999605117767590310, -0.999603711519389760, -0.999602302772179980, -0.999600891525964430, -0.999599477780746650, -0.999598061536530190, +-0.999596642793318610, -0.999595221551115350, -0.999593797809924080, -0.999592371569748340, -0.999590942830591580, -0.999589511592457570, -0.999588077855349750, -0.999586641619271690, +-0.999585202884227030, -0.999583761650219450, -0.999582317917252380, -0.999580871685329500, -0.999579422954454460, -0.999577971724630920, -0.999576517995862450, -0.999575061768152580, +-0.999573603041505110, -0.999572141815923690, -0.999570678091411870, -0.999569211867973430, -0.999567743145611810, -0.999566271924330900, -0.999564798204134350, -0.999563321985025840, +-0.999561843267008920, -0.999560362050087470, -0.999558878334265040, -0.999557392119545530, -0.999555903405932370, -0.999554412193429550, -0.999552918482040750, -0.999551422271769630, +-0.999549923562619960, -0.999548422354595400, -0.999546918647699840, -0.999545412441936950, -0.999543903737310610, -0.999542392533824490, -0.999540878831482350, -0.999539362630287980, +-0.999537843930245250, -0.999536322731357950, -0.999534799033629740, -0.999533272837064610, -0.999531744141666230, -0.999530212947438600, -0.999528679254385380, -0.999527143062510450, +-0.999525604371817700, -0.999524063182310910, -0.999522519493993960, -0.999520973306870730, -0.999519424620945010, -0.999517873436220780, -0.999516319752701940, -0.999514763570392150, +-0.999513204889295510, -0.999511643709415920, -0.999510080030757140, -0.999508513853323290, -0.999506945177118020, -0.999505374002145450, -0.999503800328409350, -0.999502224155913830, +-0.999500645484662780, -0.999499064314660070, -0.999497480645909710, -0.999495894478415690, -0.999494305812181900, -0.999492714647212340, -0.999491120983511010, -0.999489524821081890, +-0.999487926159928870, -0.999486325000056080, -0.999484721341467490, -0.999483115184167100, -0.999481506528158930, -0.999479895373447060, -0.999478281720035390, -0.999476665567927910, +-0.999475046917128850, -0.999473425767642200, -0.999471802119472060, -0.999470175972622330, -0.999468547327097110, -0.999466916182900620, -0.999465282540036750, -0.999463646398509710, +-0.999462007758323610, -0.999460366619482340, -0.999458722981990340, -0.999457076845851390, -0.999455428211069810, -0.999453777077649710, -0.999452123445595090, -0.999450467314910160, +-0.999448808685599150, -0.999447147557666060, -0.999445483931115100, -0.999443817805950370, -0.999442149182176220, -0.999440478059796520, -0.999438804438815830, -0.999437128319238030, +-0.999435449701067350, -0.999433768584308100, -0.999432084968964520, -0.999430398855040590, -0.999428710242540760, -0.999427019131469140, -0.999425325521829940, -0.999423629413627390, +-0.999421930806865810, -0.999420229701549420, -0.999418526097682450, -0.999416819995269210, -0.999415111394313830, -0.999413400294820730, -0.999411686696794140, -0.999409970600238280, +-0.999408252005157480, -0.999406530911556180, -0.999404807319438370, -0.999403081228808720, -0.999401352639671230, -0.999399621552030440, -0.999397887965890570, -0.999396151881255970, +-0.999394413298131060, -0.999392672216520060, -0.999390928636427310, -0.999389182557857360, -0.999387433980814420, -0.999385682905302830, -0.999383929331327030, -0.999382173258891560, +-0.999380414688000540, -0.999378653618658410, -0.999376890050869830, -0.999375123984638900, -0.999373355419970190, -0.999371584356868130, -0.999369810795337040, -0.999368034735381380, +-0.999366256177005810, -0.999364475120214420, -0.999362691565012010, -0.999360905511402780, -0.999359116959391280, -0.999357325908981960, -0.999355532360179380, -0.999353736312987960, +-0.999351937767412160, -0.999350136723456520, -0.999348333181125590, -0.999346527140423820, -0.999344718601355760, -0.999342907563925850, -0.999341094028138640, -0.999339277993998800, +-0.999337459461510650, -0.999335638430678960, -0.999333814901508080, -0.999331988874002760, -0.999330160348167350, -0.999328329324006610, -0.999326495801525110, -0.999324659780727260, +-0.999322821261617760, -0.999320980244201240, -0.999319136728482270, -0.999317290714465510, -0.999315442202155510, -0.999313591191556830, -0.999311737682674230, -0.999309881675512270, +-0.999308023170075610, -0.999306162166368920, -0.999304298664396850, -0.999302432664163960, -0.999300564165675030, -0.999298693168934600, -0.999296819673947570, -0.999294943680718360, +-0.999293065189251870, -0.999291184199552760, -0.999289300711625690, -0.999287414725475220, -0.999285526241106340, -0.999283635258523590, -0.999281741777731880, -0.999279845798735630, +-0.999277947321539850, -0.999276046346149190, -0.999274142872568440, -0.999272236900802360, -0.999270328430855610, -0.999268417462733090, -0.999266503996439570, -0.999264588031979710, +-0.999262669569358390, -0.999260748608580500, -0.999258825149650590, -0.999256899192573660, -0.999254970737354590, -0.999253039783997930, -0.999251106332508800, -0.999249170382891850, +-0.999247231935151970, -0.999245290989294040, -0.999243347545322850, -0.999241401603243260, -0.999239453163060290, -0.999237502224778580, -0.999235548788403150, -0.999233592853938870, +-0.999231634421390510, -0.999229673490763190, -0.999227710062061570, -0.999225744135290750, -0.999223775710455510, -0.999221804787560950, -0.999219831366611740, -0.999217855447613100, +-0.999215877030569690, -0.999213896115486610, -0.999211912702368870, -0.999209926791221340, -0.999207938382048910, -0.999205947474856690, -0.999203954069649570, -0.999201958166432540, +-0.999199959765210700, -0.999197958865988940, -0.999195955468772270, -0.999193949573565670, -0.999191941180374240, -0.999189930289202890, -0.999187916900056820, -0.999185901012940910, +-0.999183882627860290, -0.999181861744819930, -0.999179838363824850, -0.999177812484880250, -0.999175784107991130, -0.999173753233162490, -0.999171719860399540, -0.999169683989707180, +-0.999167645621090730, -0.999165604754555070, -0.999163561390105540, -0.999161515527747010, -0.999159467167484610, -0.999157416309323640, -0.999155362953269120, -0.999153307099326260, +-0.999151248747500050, -0.999149187897795720, -0.999147124550218370, -0.999145058704773330, -0.999142990361465590, -0.999140919520300370, -0.999138846181282900, -0.999136770344418170, +-0.999134692009711610, -0.999132611177168340, -0.999130527846793570, -0.999128442018592410, -0.999126353692570190, -0.999124262868732020, -0.999122169547083330, -0.999120073727629120, +-0.999117975410374730, -0.999115874595325360, -0.999113771282486350, -0.999111665471862920, -0.999109557163460280, -0.999107446357283880, -0.999105333053338710, -0.999103217251630320, +-0.999101098952163810, -0.999098978154944530, -0.999096854859977900, -0.999094729067269150, -0.999092600776823490, -0.999090469988646370, -0.999088336702743000, -0.999086200919118930, +-0.999084062637779270, -0.999081921858729460, -0.999079778581974830, -0.999077632807520710, -0.999075484535372650, -0.999073333765535750, -0.999071180498015580, -0.999069024732817450, +-0.999066866469946690, -0.999064705709408860, -0.999062542451209290, -0.999060376695353300, -0.999058208441846340, -0.999056037690693950, -0.999053864441901360, -0.999051688695474120, +-0.999049510451417770, -0.999047329709737530, -0.999045146470439070, -0.999042960733527610, -0.999040772499008910, -0.999038581766888200, -0.999036388537171030, -0.999034192809862830, +-0.999031994584969270, -0.999029793862495570, -0.999027590642447500, -0.999025384924830510, -0.999023176709649910, -0.999020965996911480, -0.999018752786620560, -0.999016537078782800, +-0.999014318873403750, -0.999012098170488750, -0.999009874970043680, -0.999007649272073750, -0.999005421076584850, -0.999003190383582320, -0.999000957193071800, -0.998998721505058970, +-0.998996483319549270, -0.998994242636548350, -0.998991999456061870, -0.998989753778095400, -0.998987505602654480, -0.998985254929744880, -0.998983001759372050, -0.998980746091541860, +-0.998978487926259650, -0.998976227263531300, -0.998973964103362370, -0.998971698445758500, -0.998969430290725380, -0.998967159638268760, -0.998964886488394210, -0.998962610841107380, +-0.998960332696414150, -0.998958052054319980, -0.998955768914830730, -0.998953483277951970, -0.998951195143689570, -0.998948904512049210, -0.998946611383036640, -0.998944315756657430, +-0.998942017632917460, -0.998939717011822490, -0.998937413893378200, -0.998935108277590360, -0.998932800164464730, -0.998930489554007090, -0.998928176446223340, -0.998925860841119010, +-0.998923542738700100, -0.998921222138972280, -0.998918899041941530, -0.998916573447613420, -0.998914245355993930, -0.998911914767088850, -0.998909581680903940, -0.998907246097445080, +-0.998904908016718050, -0.998902567438728850, -0.998900224363483140, -0.998897878790986900, -0.998895530721246040, -0.998893180154266200, -0.998890827090053500, -0.998888471528613820, +-0.998886113469952820, -0.998883752914076610, -0.998881389860991060, -0.998879024310701970, -0.998876656263215310, -0.998874285718536980, -0.998871912676672970, -0.998869537137629270, +-0.998867159101411660, -0.998864778568026130, -0.998862395537478690, -0.998860010009775200, -0.998857621984921670, -0.998855231462924210, -0.998852838443788580, -0.998850442927520900, +-0.998848044914127040, -0.998845644403613120, -0.998843241395985130, -0.998840835891248950, -0.998838427889410800, -0.998836017390476450, -0.998833604394452120, -0.998831188901343810, +-0.998828770911157520, -0.998826350423899220, -0.998823927439575040, -0.998821501958191190, -0.998819073979753450, -0.998816643504268130, -0.998814210531741130, -0.998811775062178550, +-0.998809337095586610, -0.998806896631971310, -0.998804453671338850, -0.998802008213695140, -0.998799560259046480, -0.998797109807398890, -0.998794656858758460, -0.998792201413131520, +-0.998789743470523960, -0.998787283030942110, -0.998784820094392070, -0.998782354660879950, -0.998779886730411960, -0.998777416302994210, -0.998774943378632930, -0.998772467957334320, +-0.998769990039104600, -0.998767509623949780, -0.998765026711876280, -0.998762541302890110, -0.998760053396997690, -0.998757562994205150, -0.998755070094518580, -0.998752574697944430, +-0.998750076804488800, -0.998747576414158010, -0.998745073526958290, -0.998742568142895860, -0.998740060261977040, -0.998737549884208040, -0.998735037009595210, -0.998732521638144740, +-0.998730003769862980, -0.998727483404756140, -0.998724960542830660, -0.998722435184092760, -0.998719907328548870, -0.998717376976205110, -0.998714844127067900, -0.998712308781143590, +-0.998709770938438600, -0.998707230598959050, -0.998704687762711480, -0.998702142429702230, -0.998699594599937620, -0.998697044273423980, -0.998694491450167750, -0.998691936130175260, +-0.998689378313452950, -0.998686818000007250, -0.998684255189844490, -0.998681689882971010, -0.998679122079393360, -0.998676551779117960, -0.998673978982151040, -0.998671403688499270, +-0.998668825898168970, -0.998666245611166680, -0.998663662827498740, -0.998661077547171590, -0.998658489770191780, -0.998655899496565750, -0.998653306726299930, -0.998650711459400870, +-0.998648113695875030, -0.998645513435728940, -0.998642910678969040, -0.998640305425601780, -0.998637697675633930, -0.998635087429071700, -0.998632474685921760, -0.998629859446190760, +-0.998627241709884930, -0.998624621477011140, -0.998621998747575730, -0.998619373521585360, -0.998616745799046470, -0.998614115579965820, -0.998611482864349860, -0.998608847652205140, +-0.998606209943538330, -0.998603569738356070, -0.998600927036664810, -0.998598281838471210, -0.998595634143781940, -0.998592983952603650, -0.998590331264942790, -0.998587676080806120, +-0.998585018400200310, -0.998582358223131910, -0.998579695549607680, -0.998577030379634190, -0.998574362713218090, -0.998571692550366040, -0.998569019891084820, -0.998566344735381080, +-0.998563667083261500, -0.998560986934732610, -0.998558304289801410, -0.998555619148474350, -0.998552931510758300, -0.998550241376659820, -0.998547548746185900, -0.998544853619342980, +-0.998542155996137940, -0.998539455876577550, -0.998536753260668600, -0.998534048148417620, -0.998531340539831610, -0.998528630434917130, -0.998525917833681160, -0.998523202736130490, +-0.998520485142271650, -0.998517765052111650, -0.998515042465657250, -0.998512317382915350, -0.998509589803892480, -0.998506859728595760, -0.998504127157031850, -0.998501392089207630, +-0.998498654525129870, -0.998495914464805570, -0.998493171908241380, -0.998490426855444310, -0.998487679306421240, -0.998484929261178930, -0.998482176719724280, -0.998479421682064160, +-0.998476664148205460, -0.998473904118155180, -0.998471141591920070, -0.998468376569507270, -0.998465609050923300, -0.998462839036175500, -0.998460066525270530, -0.998457291518215380, +-0.998454514015016950, -0.998451734015682320, -0.998448951520218290, -0.998446166528631940, -0.998443379040930170, -0.998440589057119960, -0.998437796577208210, -0.998435001601202020, +-0.998432204129108380, -0.998429404160934180, -0.998426601696686400, -0.998423796736372160, -0.998420989279998450, -0.998418179327572260, -0.998415366879100710, -0.998412551934590550, +-0.998409734494049130, -0.998406914557483430, -0.998404092124900330, -0.998401267196307060, -0.998398439771710610, -0.998395609851118080, -0.998392777434536470, -0.998389942521973000, +-0.998387105113434650, -0.998384265208928530, -0.998381422808461650, -0.998378577912041320, -0.998375730519674540, -0.998372880631368420, -0.998370028247130060, -0.998367173366966680, +-0.998364315990885380, -0.998361456118893260, -0.998358593750997450, -0.998355728887205250, -0.998352861527523670, -0.998349991671960040, -0.998347119320521340, -0.998344244473214790, +-0.998341367130047730, -0.998338487291027140, -0.998335604956160470, -0.998332720125454710, -0.998329832798917180, -0.998326942976555000, -0.998324050658375480, -0.998321155844385970, +-0.998318258534593440, -0.998315358729005230, -0.998312456427628780, -0.998309551630471080, -0.998306644337539460, -0.998303734548841360, -0.998300822264383770, -0.998297907484174240, +-0.998294990208219880, -0.998292070436528120, -0.998289148169106080, -0.998286223405961290, -0.998283296147100870, -0.998280366392532150, -0.998277434142262670, -0.998274499396299530, +-0.998271562154650070, -0.998268622417321730, -0.998265680184321940, -0.998262735455657910, -0.998259788231336990, -0.998256838511366600, -0.998253886295754180, -0.998250931584506950, +-0.998247974377632460, -0.998245014675138040, -0.998242052477031020, -0.998239087783318930, -0.998236120594009120, -0.998233150909108910, -0.998230178728625960, -0.998227204052567480, +-0.998224226880941030, -0.998221247213754050, -0.998218265051013850, -0.998215280392728000, -0.998212293238904040, -0.998209303589549290, -0.998206311444671310, -0.998203316804277540, +-0.998200319668375410, -0.998197320036972590, -0.998194317910076400, -0.998191313287694500, -0.998188306169834230, -0.998185296556503230, -0.998182284447708960, -0.998179269843458950, +-0.998176252743760870, -0.998173233148622050, -0.998170211058050260, -0.998167186472052830, -0.998164159390637520, -0.998161129813811780, -0.998158097741583260, -0.998155063173959410, +-0.998152026110948000, -0.998148986552556460, -0.998145944498792460, -0.998142899949663540, -0.998139852905177480, -0.998136803365341720, -0.998133751330164020, -0.998130696799651830, +-0.998127639773813020, -0.998124580252655050, -0.998121518236185670, -0.998118453724412440, -0.998115386717343120, -0.998112317214985280, -0.998109245217346670, -0.998106170724434970, +-0.998103093736257830, -0.998100014252822910, -0.998096932274137980, -0.998093847800210820, -0.998090760831048970, -0.998087671366660210, -0.998084579407052200, -0.998081484952232810, +-0.998078388002209720, -0.998075288556990680, -0.998072186616583370, -0.998069082180995660, -0.998065975250235220, -0.998062865824309810, -0.998059753903227210, -0.998056639486995300, +-0.998053522575621740, -0.998050403169114420, -0.998047281267481100, -0.998044156870729450, -0.998041029978867570, -0.998037900591903000, -0.998034768709843760, -0.998031634332697480, +-0.998028497460472290, -0.998025358093175720, -0.998022216230815770, -0.998019071873400330, -0.998015925020937170, -0.998012775673434270, -0.998009623830899420, -0.998006469493340380, +-0.998003312660765250, -0.998000153333181930, -0.997996991510598060, -0.997993827193021880, -0.997990660380461030, -0.997987491072923500, -0.997984319270417310, -0.997981144972950320, +-0.997977968180530420, -0.997974788893165600, -0.997971607110863860, -0.997968422833633070, -0.997965236061481240, -0.997962046794416360, -0.997958855032446300, -0.997955660775579180, +-0.997952464023822760, -0.997949264777185260, -0.997946063035674680, -0.997942858799298890, -0.997939652068065900, -0.997936442841983800, -0.997933231121060690, -0.997930016905304360, +-0.997926800194723020, -0.997923580989324770, -0.997920359289117490, -0.997917135094109290, -0.997913908404308380, -0.997910679219722540, -0.997907447540360090, -0.997904213366229030, +-0.997900976697337460, -0.997897737533693370, -0.997894495875304990, -0.997891251722180290, -0.997888005074327510, -0.997884755931754740, -0.997881504294470090, -0.997878250162481660, +-0.997874993535797670, -0.997871734414426110, -0.997868472798375210, -0.997865208687653160, -0.997861942082268080, -0.997858672982228190, -0.997855401387541590, -0.997852127298216480, +-0.997848850714260990, -0.997845571635683440, -0.997842290062491920, -0.997839005994694770, -0.997835719432299980, -0.997832430375315990, -0.997829138823750910, -0.997825844777612940, +-0.997822548236910410, -0.997819249201651440, -0.997815947671844450, -0.997812643647497440, -0.997809337128618970, -0.997806028115217130, -0.997802716607300130, -0.997799402604876430, +-0.997796086107954230, -0.997792767116541750, -0.997789445630647310, -0.997786121650279360, -0.997782795175446100, -0.997779466206155760, -0.997776134742416890, -0.997772800784237580, +-0.997769464331626280, -0.997766125384591420, -0.997762783943141110, -0.997759440007283890, -0.997756093577028100, -0.997752744652382060, -0.997749393233354210, -0.997746039319952760, +-0.997742682912186260, -0.997739324010063160, -0.997735962613591650, -0.997732598722780200, -0.997729232337637330, -0.997725863458171380, -0.997722492084390680, -0.997719118216303770, +-0.997715741853919200, -0.997712362997245080, -0.997708981646290180, -0.997705597801062830, -0.997702211461571450, -0.997698822627824500, -0.997695431299830630, -0.997692037477598050, +-0.997688641161135430, -0.997685242350451200, -0.997681841045553910, -0.997678437246451890, -0.997675030953153910, -0.997671622165668290, -0.997668210884003590, -0.997664797108168470, +-0.997661380838171240, -0.997657962074020580, -0.997654540815725130, -0.997651117063293240, -0.997647690816733550, -0.997644262076054610, -0.997640830841264980, -0.997637397112373430, +-0.997633960889388270, -0.997630522172318180, -0.997627080961171920, -0.997623637255957820, -0.997620191056684760, -0.997616742363361060, -0.997613291175995620, -0.997609837494596970, +-0.997606381319173670, -0.997602922649734380, -0.997599461486287860, -0.997595997828842670, -0.997592531677407470, -0.997589063031991020, -0.997585591892601760, -0.997582118259248580, +-0.997578642131940140, -0.997575163510685090, -0.997571682395492100, -0.997568198786369930, -0.997564712683327360, -0.997561224086372820, -0.997557732995515310, -0.997554239410763490, +-0.997550743332126120, -0.997547244759611760, -0.997543743693229400, -0.997540240132987590, -0.997536734078895200, -0.997533225530961020, -0.997529714489193810, -0.997526200953602230, +-0.997522684924195160, -0.997519166400981370, -0.997515645383969750, -0.997512121873168960, -0.997508595868587870, -0.997505067370235250, -0.997501536378120000, -0.997498002892250880, +-0.997494466912636770, -0.997490928439286550, -0.997487387472209000, -0.997483844011412880, -0.997480298056907190, -0.997476749608700810, -0.997473198666802510, -0.997469645231221280, +-0.997466089301965900, -0.997462530879045240, -0.997458969962468300, -0.997455406552243960, -0.997451840648381110, -0.997448272250888610, -0.997444701359775480, -0.997441127975050470, +-0.997437552096722800, -0.997433973724801140, -0.997430392859294580, -0.997426809500212120, -0.997423223647562530, -0.997419635301354910, -0.997416044461598260, -0.997412451128301460, +-0.997408855301473500, -0.997405256981123370, -0.997401656167260180, -0.997398052859892800, -0.997394447059030350, -0.997390838764681710, -0.997387227976856080, -0.997383614695562250, +-0.997379998920809420, -0.997376380652606590, -0.997372759890962860, -0.997369136635887220, -0.997365510887388780, -0.997361882645476430, -0.997358251910159480, -0.997354618681446920, +-0.997350982959347760, -0.997347344743871100, -0.997343704035026150, -0.997340060832821900, -0.997336415137267560, -0.997332766948372140, -0.997329116266144730, -0.997325463090594670, +-0.997321807421730820, -0.997318149259562530, -0.997314488604098880, -0.997310825455348990, -0.997307159813321960, -0.997303491678027120, -0.997299821049473570, -0.997296147927670410, +-0.997292472312626970, -0.997288794204352240, -0.997285113602855540, -0.997281430508146110, -0.997277744920233020, -0.997274056839125620, -0.997270366264833120, -0.997266673197364620, +-0.997262977636729550, -0.997259279582936920, -0.997255579035996150, -0.997251875995916470, -0.997248170462707080, -0.997244462436377210, -0.997240751916936170, -0.997237038904393300, +-0.997233323398757920, -0.997229605400039130, -0.997225884908246260, -0.997222161923388750, -0.997218436445475920, -0.997214708474516880, -0.997210978010521170, -0.997207245053497890, +-0.997203509603456610, -0.997199771660406520, -0.997196031224356960, -0.997192288295317360, -0.997188542873297060, -0.997184794958305360, -0.997181044550351730, -0.997177291649445350, +-0.997173536255595900, -0.997169778368812600, -0.997166017989104760, -0.997162255116481930, -0.997158489750953450, -0.997154721892528740, -0.997150951541217250, -0.997147178697028400, +-0.997143403359971540, -0.997139625530056200, -0.997135845207291820, -0.997132062391687720, -0.997128277083253580, -0.997124489281998700, -0.997120698987932650, -0.997116906201064860, +-0.997113110921404750, -0.997109313148961900, -0.997105512883745710, -0.997101710125765760, -0.997097904875031580, -0.997094097131552610, -0.997090286895338410, -0.997086474166398510, +-0.997082658944742350, -0.997078841230379600, -0.997075021023319690, -0.997071198323572270, -0.997067373131146910, -0.997063545446053020, -0.997059715268300280, -0.997055882597898350, +-0.997052047434856650, -0.997048209779184850, -0.997044369630892490, -0.997040526989989240, -0.997036681856484640, -0.997032834230388350, -0.997028984111709930, -0.997025131500459130, +-0.997021276396645510, -0.997017418800278610, -0.997013558711368210, -0.997009696129923960, -0.997005831055955420, -0.997001963489472340, -0.996998093430484290, -0.996994220879001030, +-0.996990345835032210, -0.996986468298587500, -0.996982588269676670, -0.996978705748309380, -0.996974820734495280, -0.996970933228244150, -0.996967043229565750, -0.996963150738469640, +-0.996959255754965800, -0.996955358279063670, -0.996951458310773140, -0.996947555850104080, -0.996943650897066050, -0.996939743451668910, -0.996935833513922450, -0.996931921083836330, +-0.996928006161420520, -0.996924088746684590, -0.996920168839638520, -0.996916246440291980, -0.996912321548654830, -0.996908394164736870, -0.996904464288547840, -0.996900531920097750, +-0.996896597059396370, -0.996892659706453470, -0.996888719861278920, -0.996884777523882490, -0.996880832694274190, -0.996876885372463770, -0.996872935558461130, -0.996868983252276240, +-0.996865028453918780, -0.996861071163398840, -0.996857111380726190, -0.996853149105910830, -0.996849184338962520, -0.996845217079891270, -0.996841247328706940, -0.996837275085419530, +-0.996833300350038920, -0.996829323122575000, -0.996825343403037860, -0.996821361191437380, -0.996817376487783460, -0.996813389292086070, -0.996809399604355220, -0.996805407424600890, +-0.996801412752832960, -0.996797415589061650, -0.996793415933296730, -0.996789413785548200, -0.996785409145826250, -0.996781402014140670, -0.996777392390501670, -0.996773380274919130, +-0.996769365667403260, -0.996765348567963840, -0.996761328976611070, -0.996757306893355070, -0.996753282318205700, -0.996749255251173190, -0.996745225692267530, -0.996741193641498710, +-0.996737159098877060, -0.996733122064412450, -0.996729082538114990, -0.996725040519994890, -0.996720996010062140, -0.996716949008326970, -0.996712899514799360, -0.996708847529489520, +-0.996704793052407560, -0.996700736083563580, -0.996696676622967790, -0.996692614670630310, -0.996688550226561330, -0.996684483290770970, -0.996680413863269330, -0.996676341944066730, +-0.996672267533173280, -0.996668190630599080, -0.996664111236354460, -0.996660029350449620, -0.996655944972894670, -0.996651858103699830, -0.996647768742875310, -0.996643676890431430, +-0.996639582546378300, -0.996635485710726240, -0.996631386383485470, -0.996627284564666320, -0.996623180254278870, -0.996619073452333470, -0.996614964158840430, -0.996610852373809860, +-0.996606738097252310, -0.996602621329177870, -0.996598502069596880, -0.996594380318519550, -0.996590256075956420, -0.996586129341917480, -0.996582000116413290, -0.996577868399454170, +-0.996573734191050330, -0.996569597491212100, -0.996565458299949910, -0.996561316617274100, -0.996557172443194970, -0.996553025777722980, -0.996548876620868330, -0.996544724972641570, +-0.996540570833052920, -0.996536414202112920, -0.996532255079831900, -0.996528093466220180, -0.996523929361288200, -0.996519762765046500, -0.996515593677505310, -0.996511422098675160, +-0.996507248028566380, -0.996503071467189640, -0.996498892414555030, -0.996494710870673320, -0.996490526835554840, -0.996486340309210020, -0.996482151291649300, -0.996477959782883230, +-0.996473765782922350, -0.996469569291776880, -0.996465370309457700, -0.996461168835974910, -0.996456964871339280, -0.996452758415561250, -0.996448549468651250, -0.996444338030619940, +-0.996440124101477750, -0.996435907681235360, -0.996431688769903070, -0.996427467367491660, -0.996423243474011460, -0.996419017089473220, -0.996414788213887510, -0.996410556847264760, +-0.996406322989615510, -0.996402086640950650, -0.996397847801280490, -0.996393606470615700, -0.996389362648966830, -0.996385116336344630, -0.996380867532759670, -0.996376616238222490, +-0.996372362452743740, -0.996368106176334200, -0.996363847409004300, -0.996359586150764810, -0.996355322401626280, -0.996351056161599580, -0.996346787430695160, -0.996342516208923780, +-0.996338242496296100, -0.996333966292822890, -0.996329687598514700, -0.996325406413382300, -0.996321122737436340, -0.996316836570687590, -0.996312547913146830, -0.996308256764824600, +-0.996303963125731770, -0.996299666995879020, -0.996295368375277210, -0.996291067263936790, -0.996286763661868860, -0.996282457569083960, -0.996278148985592860, -0.996273837911406450, +-0.996269524346535480, -0.996265208290990630, -0.996260889744782880, -0.996256568707922780, -0.996252245180421330, -0.996247919162289160, -0.996243590653537290, -0.996239259654176480, +-0.996234926164217380, -0.996230590183671110, -0.996226251712548310, -0.996221910750859860, -0.996217567298616660, -0.996213221355829460, -0.996208872922509260, -0.996204521998666940, +-0.996200168584313260, -0.996195812679459220, -0.996191454284115600, -0.996187093398293370, -0.996182730022003300, -0.996178364155256510, -0.996173995798063760, -0.996169624950436040, +-0.996165251612384340, -0.996160875783919430, -0.996156497465052300, -0.996152116655793950, -0.996147733356155360, -0.996143347566147420, -0.996138959285781000, -0.996134568515067320, +-0.996130175254017150, -0.996125779502641580, -0.996121381260951620, -0.996116980528958030, -0.996112577306672130, -0.996108171594104810, -0.996103763391266940, -0.996099352698169740, +-0.996094939514824200, -0.996090523841241190, -0.996086105677431940, -0.996081685023407440, -0.996077261879178670, -0.996072836244756840, -0.996068408120152850, -0.996063977505377900, +-0.996059544400442860, -0.996055108805359080, -0.996050670720137530, -0.996046230144789320, -0.996041787079325450, -0.996037341523757220, -0.996032893478095540, -0.996028442942351710, +-0.996023989916536730, -0.996019534400661710, -0.996015076394737960, -0.996010615898776490, -0.996006152912788490, -0.996001687436785080, -0.995997219470777460, -0.995992749014776750, +-0.995988276068794250, -0.995983800632840980, -0.995979322706928240, -0.995974842291067250, -0.995970359385269120, -0.995965873989545060, -0.995961386103906390, -0.995956895728364100, +-0.995952402862929740, -0.995947907507614310, -0.995943409662429110, -0.995938909327385380, -0.995934406502494320, -0.995929901187767360, -0.995925393383215620, -0.995920883088850300, +-0.995916370304682830, -0.995911855030724440, -0.995907337266986440, -0.995902817013480160, -0.995898294270216700, -0.995893769037207610, -0.995889241314463990, -0.995884711101997390, +-0.995880178399818900, -0.995875643207939980, -0.995871105526372040, -0.995866565355126300, -0.995862022694214090, -0.995857477543646840, -0.995852929903435990, -0.995848379773592750, +-0.995843827154128450, -0.995839272045054740, -0.995834714446382830, -0.995830154358124050, -0.995825591780289950, -0.995821026712891850, -0.995816459155941190, -0.995811889109449400, +-0.995807316573427910, -0.995802741547888060, -0.995798164032841380, -0.995793584028299320, -0.995789001534273300, -0.995784416550774760, -0.995779829077815150, -0.995775239115406000, +-0.995770646663558750, -0.995766051722284830, -0.995761454291595900, -0.995756854371503300, -0.995752251962018440, -0.995747647063153110, -0.995743039674918620, -0.995738429797326410, +-0.995733817430388250, -0.995729202574115570, -0.995724585228519810, -0.995719965393612630, -0.995715343069405460, -0.995710718255910070, -0.995706090953137780, -0.995701461161100250, +-0.995696828879809150, -0.995692194109275900, -0.995687556849512160, -0.995682917100529590, -0.995678274862339730, -0.995673630134954140, -0.995668982918384460, -0.995664333212642470, +-0.995659681017739500, -0.995655026333687300, -0.995650369160497650, -0.995645709498181990, -0.995641047346752070, -0.995636382706219570, -0.995631715576596130, -0.995627045957893420, +-0.995622373850122980, -0.995617699253296680, -0.995613022167426090, -0.995608342592523070, -0.995603660528599050, -0.995598975975665930, -0.995594288933735360, -0.995589599402819100, +-0.995584907382928820, -0.995580212874076280, -0.995575515876273240, -0.995570816389531380, -0.995566114413862450, -0.995561409949278220, -0.995556702995790580, -0.995551993553411060, +-0.995547281622151560, -0.995542567202023940, -0.995537850293039870, -0.995533130895211120, -0.995528409008549660, -0.995523684633067060, -0.995518957768775300, -0.995514228415686150, +-0.995509496573811380, -0.995504762243162980, -0.995500025423752600, -0.995495286115592130, -0.995490544318693440, -0.995485800033068520, -0.995481053258728930, -0.995476303995686870, +-0.995471552243953890, -0.995466798003542100, -0.995462041274463360, -0.995457282056729450, -0.995452520350352370, -0.995447756155343980, -0.995442989471716280, -0.995438220299481040, +-0.995433448638650240, -0.995428674489235780, -0.995423897851249630, -0.995419118724703790, -0.995414337109610140, -0.995409553005980660, -0.995404766413827360, -0.995399977333161990, +-0.995395185763996770, -0.995390391706343580, -0.995385595160214410, -0.995380796125621250, -0.995375994602576090, -0.995371190591091030, -0.995366384091177950, -0.995361575102848840, +-0.995356763626115800, -0.995351949660990940, -0.995347133207486130, -0.995342314265613480, -0.995337492835385080, -0.995332668916812930, -0.995327842509909130, -0.995323013614685670, +-0.995318182231154760, -0.995313348359328390, -0.995308511999218550, -0.995303673150837560, -0.995298831814197320, -0.995293987989310010, -0.995289141676187650, -0.995284292874842550, +-0.995279441585286690, -0.995274587807532200, -0.995269731541591260, -0.995264872787476000, -0.995260011545198500, -0.995255147814771090, -0.995250281596205770, -0.995245412889514620, +-0.995240541694710100, -0.995235668011804190, -0.995230791840808980, -0.995225913181736920, -0.995221032034600110, -0.995216148399410640, -0.995211262276180840, -0.995206373664922820, +-0.995201482565648890, -0.995196588978371270, -0.995191692903102280, -0.995186794339853910, -0.995181893288638600, -0.995176989749468550, -0.995172083722356100, -0.995167175207313350, +-0.995162264204352720, -0.995157350713486320, -0.995152434734726700, -0.995147516268085840, -0.995142595313576290, -0.995137671871210270, -0.995132745940999990, -0.995127817522957980, +-0.995122886617096250, -0.995117953223427440, -0.995113017341963670, -0.995108078972717360, -0.995103138115700950, -0.995098194770926540, -0.995093248938406780, -0.995088300618153900, +-0.995083349810180100, -0.995078396514498140, -0.995073440731120030, -0.995068482460058410, -0.995063521701325500, -0.995058558454933850, -0.995053592720895770, -0.995048624499223820, +-0.995043653789930200, -0.995038680593027470, -0.995033704908528050, -0.995028726736444380, -0.995023746076788780, -0.995018762929573920, -0.995013777294812110, -0.995008789172515900, +-0.995003798562697720, -0.994998805465370010, -0.994993809880545310, -0.994988811808236060, -0.994983811248454810, -0.994978808201213980, -0.994973802666526240, -0.994968794644403910, +-0.994963784134859640, -0.994958771137905870, -0.994953755653555150, -0.994948737681820130, -0.994943717222713130, -0.994938694276246930, -0.994933668842434060, -0.994928640921286860, +-0.994923610512818190, -0.994918577617040390, -0.994913542233966220, -0.994908504363608230, -0.994903464005978840, -0.994898421161090950, -0.994893375828956870, -0.994888328009589480, +-0.994883277703001110, -0.994878224909204740, -0.994873169628212590, -0.994868111860037650, -0.994863051604692460, -0.994857988862189570, -0.994852923632541740, -0.994847855915761640, +-0.994842785711861800, -0.994837713020855110, -0.994832637842754110, -0.994827560177571460, -0.994822480025319920, -0.994817397386012160, -0.994812312259660940, -0.994807224646279020, +-0.994802134545878960, -0.994797041958473520, -0.994791946884075570, -0.994786849322697670, -0.994781749274352700, -0.994776646739053310, -0.994771541716812370, -0.994766434207642550, +-0.994761324211556610, -0.994756211728567430, -0.994751096758687670, -0.994745979301930090, -0.994740859358307690, -0.994735736927833130, -0.994730612010519160, -0.994725484606378770, +-0.994720354715424530, -0.994715222337669510, -0.994710087473126390, -0.994704950121808040, -0.994699810283727340, -0.994694667958897160, -0.994689523147330170, -0.994684375849039460, +-0.994679226064037800, -0.994674073792338190, -0.994668919033953270, -0.994663761788896040, -0.994658602057179490, -0.994653439838816380, -0.994648275133819700, -0.994643107942202230, +-0.994637938263977060, -0.994632766099157070, -0.994627591447755140, -0.994622414309784260, -0.994617234685257310, -0.994612052574187390, -0.994606867976587150, -0.994601680892469920, +-0.994596491321848350, -0.994591299264735660, -0.994586104721144610, -0.994580907691088310, -0.994575708174579850, -0.994570506171632010, -0.994565301682257990, -0.994560094706470670, +-0.994554885244283150, -0.994549673295708310, -0.994544458860759480, -0.994539241939449310, -0.994534022531791130, -0.994528800637797920, -0.994523576257482670, -0.994518349390858480, +-0.994513120037938350, -0.994507888198735480, -0.994502653873262870, -0.994497417061533720, -0.994492177763560910, -0.994486935979357780, -0.994481691708937190, -0.994476444952312470, +-0.994471195709496490, -0.994465943980502700, -0.994460689765343960, -0.994455433064033500, -0.994450173876584410, -0.994444912203010010, -0.994439648043323190, -0.994434381397537370, +-0.994429112265665550, -0.994423840647720940, -0.994418566543716740, -0.994413289953666070, -0.994408010877582240, -0.994402729315478350, -0.994397445267367620, -0.994392158733263360, +-0.994386869713178690, -0.994381578207126800, -0.994376284215120920, -0.994370987737174360, -0.994365688773300450, -0.994360387323512170, -0.994355083387822970, -0.994349776966246050, +-0.994344468058794730, -0.994339156665482230, -0.994333842786321860, -0.994328526421326850, -0.994323207570510510, -0.994317886233886170, -0.994312562411467040, -0.994307236103266660, +-0.994301907309298130, -0.994296576029574770, -0.994291242264109920, -0.994285906012917110, -0.994280567276009440, -0.994275226053400460, -0.994269882345103270, -0.994264536151131530, +-0.994259187471498330, -0.994253836306217220, -0.994248482655301520, -0.994243126518764560, -0.994237767896619880, -0.994232406788880700, -0.994227043195560540, -0.994221677116672750, +-0.994216308552230750, -0.994210937502247980, -0.994205563966737870, -0.994200187945713960, -0.994194809439189480, -0.994189428447177950, -0.994184044969692930, -0.994178659006747730, +-0.994173270558355910, -0.994167879624530900, -0.994162486205286240, -0.994157090300635260, -0.994151691910591720, -0.994146291035168830, -0.994140887674380250, -0.994135481828239410, +-0.994130073496759860, -0.994124662679955250, -0.994119249377838910, -0.994113833590424380, -0.994108415317725310, -0.994102994559755260, -0.994097571316527650, -0.994092145588056140, +-0.994086717374354280, -0.994081286675435600, -0.994075853491313670, -0.994070417822002230, -0.994064979667514610, -0.994059539027864590, -0.994054095903065700, -0.994048650293131720, +-0.994043202198075960, -0.994037751617912190, -0.994032298552654070, -0.994026843002315250, -0.994021384966909280, -0.994015924446449930, -0.994010461440950620, -0.994004995950425240, +-0.993999527974887440, -0.993994057514350770, -0.993988584568828880, -0.993983109138335540, -0.993977631222884520, -0.993972150822489350, -0.993966667937163820, -0.993961182566921670, +-0.993955694711776470, -0.993950204371742090, -0.993944711546832280, -0.993939216237060500, -0.993933718442440830, -0.993928218162986820, -0.993922715398712240, -0.993917210149630970, +-0.993911702415756550, -0.993906192197102970, -0.993900679493683880, -0.993895164305513060, -0.993889646632604370, -0.993884126474971490, -0.993878603832628380, -0.993873078705588720, +-0.993867551093866370, -0.993862020997475120, -0.993856488416428930, -0.993850953350741360, -0.993845415800426510, -0.993839875765498150, -0.993834333245969930, -0.993828788241856050, +-0.993823240753170080, -0.993817690779926100, -0.993812138322137880, -0.993806583379819310, -0.993801025952984250, -0.993795466041646700, -0.993789903645820430, -0.993784338765519410, +-0.993778771400757430, -0.993773201551548690, -0.993767629217906840, -0.993762054399846000, -0.993756477097380020, -0.993750897310522800, -0.993745315039288310, -0.993739730283690560, +-0.993734143043743520, -0.993728553319461080, -0.993722961110857340, -0.993717366417946060, -0.993711769240741450, -0.993706169579257390, -0.993700567433507990, -0.993694962803507110, +-0.993689355689268860, -0.993683746090807120, -0.993678134008136090, -0.993672519441269660, -0.993666902390222040, -0.993661282855007100, -0.993655660835638940, -0.993650036332131670, +-0.993644409344499270, -0.993638779872755950, -0.993633147916915590, -0.993627513476992300, -0.993621876553000270, -0.993616237144953620, -0.993610595252866320, -0.993604950876752600, +-0.993599304016626440, -0.993593654672502050, -0.993588002844393410, -0.993582348532314860, -0.993576691736280490, -0.993571032456304290, -0.993565370692400580, -0.993559706444583470, +-0.993554039712867040, -0.993548370497265520, -0.993542698797793000, -0.993537024614463800, -0.993531347947292030, -0.993525668796292010, -0.993519987161477600, -0.993514303042863370, +-0.993508616440463400, -0.993502927354291800, -0.993497235784362890, -0.993491541730690990, -0.993485845193290080, -0.993480146172174730, -0.993474444667358900, -0.993468740678856930, +-0.993463034206683250, -0.993457325250851840, -0.993451613811377250, -0.993445899888273480, -0.993440183481555050, -0.993434464591236190, -0.993428743217331100, -0.993423019359854220, +-0.993417293018819760, -0.993411564194242040, -0.993405832886135380, -0.993400099094514210, -0.993394362819392750, -0.993388624060785430, -0.993382882818706460, -0.993377139093170380, +-0.993371392884191410, -0.993365644191783970, -0.993359893015962390, -0.993354139356741220, -0.993348383214134540, -0.993342624588156920, -0.993336863478822770, -0.993331099886146540, +-0.993325333810142430, -0.993319565250824990, -0.993313794208208760, -0.993308020682307950, -0.993302244673137100, -0.993296466180710660, -0.993290685205043040, -0.993284901746148700, +-0.993279115804042160, -0.993273327378737750, -0.993267536470250010, -0.993261743078593500, -0.993255947203782630, -0.993250148845831850, -0.993244348004755810, -0.993238544680568710, +-0.993232738873285450, -0.993226930582920220, -0.993221119809487680, -0.993215306553002390, -0.993209490813478760, -0.993203672590931450, -0.993197851885374900, -0.993192028696823770, +-0.993186203025292590, -0.993180374870795910, -0.993174544233348280, -0.993168711112964230, -0.993162875509658430, -0.993157037423445520, -0.993151196854339950, -0.993145353802356360, +-0.993139508267509410, -0.993133660249813750, -0.993127809749283830, -0.993121956765934510, -0.993116101299780120, -0.993110243350835640, -0.993104382919115510, -0.993098520004634390, +-0.993092654607407030, -0.993086786727447990, -0.993080916364772030, -0.993075043519393690, -0.993069168191327840, -0.993063290380589050, -0.993057410087191950, -0.993051527311151430, +-0.993045642052482020, -0.993039754311198510, -0.993033864087315640, -0.993027971380848080, -0.993022076191810710, -0.993016178520218060, -0.993010278366084910, -0.993004375729426130, +-0.992998470610256370, -0.992992563008590510, -0.992986652924443210, -0.992980740357829240, -0.992974825308763460, -0.992968907777260550, -0.992962987763335470, -0.992957065267002890, +-0.992951140288277580, -0.992945212827174520, -0.992939282883708360, -0.992933350457893990, -0.992927415549746280, -0.992921478159280000, -0.992915538286510020, -0.992909595931451340, +-0.992903651094118490, -0.992897703774526570, -0.992891753972690360, -0.992885801688624840, -0.992879846922344770, -0.992873889673865140, -0.992867929943200720, -0.992861967730366500, +-0.992856003035377350, -0.992850035858248160, -0.992844066198993900, -0.992838094057629570, -0.992832119434169820, -0.992826142328629980, -0.992820162741024580, -0.992814180671368950, +-0.992808196119677740, -0.992802209085966170, -0.992796219570248990, -0.992790227572541210, -0.992784233092858020, -0.992778236131214080, -0.992772236687624600, -0.992766234762104570, +-0.992760230354668980, -0.992754223465332710, -0.992748214094110960, -0.992742202241018720, -0.992736187906070880, -0.992730171089282630, -0.992724151790668970, -0.992718130010244780, +-0.992712105748025490, -0.992706079004025740, -0.992700049778260870, -0.992694018070745860, -0.992687983881495930, -0.992681947210525830, -0.992675908057851000, -0.992669866423486420, +-0.992663822307447100, -0.992657775709748220, -0.992651726630404910, -0.992645675069432350, -0.992639621026845550, -0.992633564502659720, -0.992627505496889940, -0.992621444009551430, +-0.992615380040659300, -0.992609313590228750, -0.992603244658274870, -0.992597173244812890, -0.992591099349858010, -0.992585022973425320, -0.992578944115530050, -0.992572862776187500, +-0.992566778955412790, -0.992560692653221110, -0.992554603869627680, -0.992548512604647830, -0.992542418858296640, -0.992536322630589330, -0.992530223921541330, -0.992524122731167750, +-0.992518019059483780, -0.992511912906504870, -0.992505804272246110, -0.992499693156722820, -0.992493579559950320, -0.992487463481943940, -0.992481344922718890, -0.992475223882290370, +-0.992469100360673820, -0.992462974357884550, -0.992456845873937900, -0.992450714908849060, -0.992444581462633480, -0.992438445535306470, -0.992432307126883240, -0.992426166237379340, +-0.992420022866809970, -0.992413877015190570, -0.992407728682536460, -0.992401577868863070, -0.992395424574185720, -0.992389268798519740, -0.992383110541880660, -0.992376949804283810, +-0.992370786585744510, -0.992364620886278410, -0.992358452705900620, -0.992352282044626670, -0.992346108902472100, -0.992339933279452250, -0.992333755175582530, -0.992327574590878500, +-0.992321391525355370, -0.992315205979028890, -0.992309017951914400, -0.992302827444027310, -0.992296634455383190, -0.992290438985997450, -0.992284241035885640, -0.992278040605063190, +-0.992271837693545770, -0.992265632301348570, -0.992259424428487470, -0.992253214074977690, -0.992247001240834870, -0.992240785926074560, -0.992234568130712310, -0.992228347854763660, +-0.992222125098244150, -0.992215899861169310, -0.992209672143554710, -0.992203441945415880, -0.992197209266768580, -0.992190974107628130, -0.992184736468010200, -0.992178496347930540, +-0.992172253747404590, -0.992166008666448110, -0.992159761105076530, -0.992153511063305520, -0.992147258541150710, -0.992141003538627890, -0.992134746055752470, -0.992128486092540120, +-0.992122223649006710, -0.992115958725167670, -0.992109691321038660, -0.992103421436635550, -0.992097149071973770, -0.992090874227069210, -0.992084596901937400, -0.992078317096594110, +-0.992072034811054990, -0.992065750045335810, -0.992059462799452340, -0.992053173073420110, -0.992046880867255010, -0.992040586180972680, -0.992034289014588900, -0.992027989368119420, +-0.992021687241579910, -0.992015382634986230, -0.992009075548354050, -0.992002765981699230, -0.991996453935037440, -0.991990139408384540, -0.991983822401756310, -0.991977502915168510, +-0.991971180948637010, -0.991964856502177470, -0.991958529575805880, -0.991952200169537890, -0.991945868283389380, -0.991939533917376210, -0.991933197071514280, -0.991926857745819350, +-0.991920515940307170, -0.991914171654993850, -0.991907824889894930, -0.991901475645026620, -0.991895123920404460, -0.991888769716044670, -0.991882413031962780, -0.991876053868175010, +-0.991869692224697010, -0.991863328101544760, -0.991856961498734260, -0.991850592416281370, -0.991844220854201990, -0.991837846812511970, -0.991831470291227420, -0.991825091290364110, +-0.991818709809938140, -0.991812325849965370, -0.991805939410461800, -0.991799550491443420, -0.991793159092926090, -0.991786765214925920, -0.991780368857458790, -0.991773970020540800, +-0.991767568704187810, -0.991761164908415930, -0.991754758633241250, -0.991748349878679550, -0.991741938644747020, -0.991735524931459560, -0.991729108738833350, -0.991722690066884400, +-0.991716268915628700, -0.991709845285082330, -0.991703419175261280, -0.991696990586181770, -0.991690559517859780, -0.991684125970311300, -0.991677689943552650, -0.991671251437599710, +-0.991664810452468570, -0.991658366988175440, -0.991651921044736430, -0.991645472622167620, -0.991639021720485130, -0.991632568339705030, -0.991626112479843560, -0.991619654140916800, +-0.991613193322940960, -0.991606730025932030, -0.991600264249906330, -0.991593795994879960, -0.991587325260869120, -0.991580852047890040, -0.991574376355958690, -0.991567898185091500, +-0.991561417535304470, -0.991554934406614020, -0.991548448799036140, -0.991541960712587160, -0.991535470147283270, -0.991528977103140700, -0.991522481580175640, -0.991515983578404430, +-0.991509483097843370, -0.991502980138508460, -0.991496474700416130, -0.991489966783582590, -0.991483456388024260, -0.991476943513757150, -0.991470428160797780, -0.991463910329162260, +-0.991457390018867010, -0.991450867229928260, -0.991444341962362310, -0.991437814216185600, -0.991431283991414340, -0.991424751288064840, -0.991418216106153440, -0.991411678445696440, +-0.991405138306710400, -0.991398595689211400, -0.991392050593215890, -0.991385503018740400, -0.991378952965801030, -0.991372400434414320, -0.991365845424596600, -0.991359287936364300, +-0.991352727969733730, -0.991346165524721320, -0.991339600601343630, -0.991333033199616850, -0.991326463319557430, -0.991319890961181890, -0.991313316124506680, -0.991306738809548120, +-0.991300159016322740, -0.991293576744846970, -0.991286991995137260, -0.991280404767210020, -0.991273815061081810, -0.991267222876769050, -0.991260628214288290, -0.991254031073655840, +-0.991247431454888470, -0.991240829358002400, -0.991234224783014260, -0.991227617729940610, -0.991221008198797880, -0.991214396189602610, -0.991207781702371450, -0.991201164737120720, +-0.991194545293867190, -0.991187923372627180, -0.991181298973417450, -0.991174672096254430, -0.991168042741154780, -0.991161410908135030, -0.991154776597211630, -0.991148139808401440, +-0.991141500541720790, -0.991134858797186440, -0.991128214574814930, -0.991121567874622910, -0.991114918696626930, -0.991108267040843650, -0.991101612907289710, -0.991094956295981770, +-0.991088297206936470, -0.991081635640170380, -0.991074971595700130, -0.991068305073542600, -0.991061636073714220, -0.991054964596231770, -0.991048290641111880, -0.991041614208371340, +-0.991034935298026660, -0.991028253910094750, -0.991021570044592130, -0.991014883701535560, -0.991008194880941830, -0.991001503582827570, -0.990994809807209660, -0.990988113554104650, +-0.990981414823529310, -0.990974713615500490, -0.990968009930034870, -0.990961303767149300, -0.990954595126860350, -0.990947884009184990, -0.990941170414139980, -0.990934454341741880, +-0.990927735792007770, -0.990921014764954310, -0.990914291260598270, -0.990907565278956510, -0.990900836820045820, -0.990894105883883050, -0.990887372470485080, -0.990880636579868580, +-0.990873898212050520, -0.990867157367047780, -0.990860414044877120, -0.990853668245555430, -0.990846919969099460, -0.990840169215526310, -0.990833415984852750, -0.990826660277095540, +-0.990819902092271780, -0.990813141430398230, -0.990806378291491870, -0.990799612675569490, -0.990792844582648160, -0.990786074012744660, -0.990779300965875960, -0.990772525442059070, +-0.990765747441310740, -0.990758966963648180, -0.990752184009088150, -0.990745398577647650, -0.990738610669343660, -0.990731820284193150, -0.990725027422213130, -0.990718232083420470, +-0.990711434267832260, -0.990704633975465490, -0.990697831206337140, -0.990691025960464210, -0.990684218237863680, -0.990677408038552640, -0.990670595362547980, -0.990663780209866900, +-0.990656962580526490, -0.990650142474543530, -0.990643319891935210, -0.990636494832718650, -0.990629667296910820, -0.990622837284528820, -0.990616004795589760, -0.990609169830110710, +-0.990602332388108690, -0.990595492469600880, -0.990588650074604280, -0.990581805203136100, -0.990574957855213320, -0.990568108030853270, -0.990561255730072920, -0.990554400952889380, +-0.990547543699319850, -0.990540683969381440, -0.990533821763091350, -0.990526957080466790, -0.990520089921524740, -0.990513220286282530, -0.990506348174757130, -0.990499473586965990, +-0.990492596522926090, -0.990485716982654860, -0.990478834966169170, -0.990471950473486460, -0.990465063504623820, -0.990458174059598570, -0.990451282138427920, -0.990444387741128970, +-0.990437490867719150, -0.990430591518215550, -0.990423689692635500, -0.990416785390996090, -0.990409878613314860, -0.990402969359608920, -0.990396057629895580, -0.990389143424192040, +-0.990382226742515640, -0.990375307584883680, -0.990368385951313490, -0.990361461841822280, -0.990354535256427470, -0.990347606195146280, -0.990340674657996130, -0.990333740644994240, +-0.990326804156158040, -0.990319865191504830, -0.990312923751051840, -0.990305979834816720, -0.990299033442816560, -0.990292084575068790, -0.990285133231590840, -0.990278179412400040, +-0.990271223117513810, -0.990264264346949590, -0.990257303100724570, -0.990250339378856430, -0.990243373181362350, -0.990236404508259890, -0.990229433359566370, -0.990222459735299320, +-0.990215483635476070, -0.990208505060114150, -0.990201524009230890, -0.990194540482843940, -0.990187554480970620, -0.990180566003628360, -0.990173575050834700, -0.990166581622607070, +-0.990159585718963010, -0.990152587339920070, -0.990145586485495550, -0.990138583155707130, -0.990131577350572220, -0.990124569070108370, -0.990117558314333120, -0.990110545083263900, +-0.990103529376918370, -0.990096511195314060, -0.990089490538468400, -0.990082467406399050, -0.990075441799123550, -0.990068413716659430, -0.990061383159024260, -0.990054350126235660, +-0.990047314618311190, -0.990040276635268390, -0.990033236177124910, -0.990026193243898400, -0.990019147835606290, -0.990012099952266470, -0.990005049593896240, -0.989997996760513480, +-0.989990941452135730, -0.989983883668780650, -0.989976823410465780, -0.989969760677208880, -0.989962695469027600, -0.989955627785939600, -0.989948557627962410, -0.989941484995114030, +-0.989934409887411770, -0.989927332304873510, -0.989920252247517010, -0.989913169715359810, -0.989906084708419680, -0.989898997226714370, -0.989891907270261550, -0.989884814839078970, +-0.989877719933184300, -0.989870622552595390, -0.989863522697329910, -0.989856420367405620, -0.989849315562840280, -0.989842208283651660, -0.989835098529857520, -0.989827986301475620, +-0.989820871598523830, -0.989813754421019710, -0.989806634768981340, -0.989799512642426380, -0.989792388041372590, -0.989785260965837850, -0.989778131415839920, -0.989770999391396680, +-0.989763864892525880, -0.989756727919245520, -0.989749588471573350, -0.989742446549527140, -0.989735302153124770, -0.989728155282384340, -0.989721005937323370, -0.989713854117959870, +-0.989706699824311810, -0.989699543056396960, -0.989692383814233300, -0.989685222097838600, -0.989678057907230850, -0.989670891242428020, -0.989663722103448000, -0.989656550490308540, +-0.989649376403027750, -0.989642199841623600, -0.989635020806113870, -0.989627839296516650, -0.989620655312849820, -0.989613468855131240, -0.989606279923379130, -0.989599088517611250, +-0.989591894637845690, -0.989584698284100340, -0.989577499456393280, -0.989570298154742510, -0.989563094379165900, -0.989555888129681650, -0.989548679406307640, -0.989541468209061970, +-0.989534254537962510, -0.989527038393027580, -0.989519819774274940, -0.989512598681722810, -0.989505375115389160, -0.989498149075291990, -0.989490920561449610, -0.989483689573879780, +-0.989476456112600820, -0.989469220177630620, -0.989461981768987480, -0.989454740886689390, -0.989447497530754340, -0.989440251701200650, -0.989433003398046300, -0.989425752621309380, +-0.989418499371008120, -0.989411243647160710, -0.989403985449785030, -0.989396724778899510, -0.989389461634522130, -0.989382196016671100, -0.989374927925364520, -0.989367657360620710, +-0.989360384322457760, -0.989353108810893780, -0.989345830825947070, -0.989338550367635850, -0.989331267435978100, -0.989323982030992250, -0.989316694152696520, -0.989309403801108990, +-0.989302110976247980, -0.989294815678131600, -0.989287517906778270, -0.989280217662206200, -0.989272914944433480, -0.989265609753478550, -0.989258302089359500, -0.989250991952094760, +-0.989243679341702540, -0.989236364258201050, -0.989229046701608830, -0.989221726671943860, -0.989214404169224570, -0.989207079193469290, -0.989199751744696320, -0.989192421822923880, +-0.989185089428170520, -0.989177754560454430, -0.989170417219793820, -0.989163077406207350, -0.989155735119713000, -0.989148390360329420, -0.989141043128074830, -0.989133693422967750, +-0.989126341245026300, -0.989118986594269000, -0.989111629470714290, -0.989104269874380490, -0.989096907805286030, -0.989089543263449330, -0.989082176248888720, -0.989074806761622630, +-0.989067434801669590, -0.989060060369047920, -0.989052683463776170, -0.989045304085872660, -0.989037922235355920, -0.989030537912244270, -0.989023151116556360, -0.989015761848310640, +-0.989008370107525400, -0.989000975894219310, -0.988993579208410690, -0.988986180050118180, -0.988978778419360330, -0.988971374316155340, -0.988963967740522090, -0.988956558692478780, +-0.988949147172044190, -0.988941733179236620, -0.988934316714074830, -0.988926897776577160, -0.988919476366762250, -0.988912052484648640, -0.988904626130254980, -0.988897197303599710, +-0.988889766004701460, -0.988882332233578800, -0.988874895990250250, -0.988867457274734460, -0.988860016087050100, -0.988852572427215690, -0.988845126295249790, -0.988837677691171150, +-0.988830226614998200, -0.988822773066749820, -0.988815317046444430, -0.988807858554100800, -0.988800397589737480, -0.988792934153373220, -0.988785468245026560, -0.988777999864716260, +-0.988770529012460990, -0.988763055688279380, -0.988755579892190100, -0.988748101624211890, -0.988740620884363430, -0.988733137672663350, -0.988725651989130540, -0.988718163833783530, +-0.988710673206641080, -0.988703180107721960, -0.988695684537045040, -0.988688186494628750, -0.988680685980492080, -0.988673182994653570, -0.988665677537132190, -0.988658169607946610, +-0.988650659207115700, -0.988643146334658000, -0.988635630990592480, -0.988628113174937930, -0.988620592887713090, -0.988613070128936730, -0.988605544898627730, -0.988598017196804730, +-0.988590487023486840, -0.988582954378692700, -0.988575419262441190, -0.988567881674751070, -0.988560341615641320, -0.988552799085130610, -0.988545254083238010, -0.988537706609982300, +-0.988530156665382240, -0.988522604249456820, -0.988515049362224900, -0.988507492003705250, -0.988499932173916960, -0.988492369872878920, -0.988484805100609880, -0.988477237857128820, +-0.988469668142454630, -0.988462095956606280, -0.988454521299602760, -0.988446944171462950, -0.988439364572205710, -0.988431782501850040, -0.988424197960414920, -0.988416610947919330, +-0.988409021464382250, -0.988401429509822570, -0.988393835084259380, -0.988386238187711540, -0.988378638820198160, -0.988371036981738120, -0.988363432672350490, -0.988355825892054280, +-0.988348216640868580, -0.988340604918812260, -0.988332990725904410, -0.988325374062164140, -0.988317754927610430, -0.988310133322262360, -0.988302509246138940, -0.988294882699259250, +-0.988287253681642270, -0.988279622193307230, -0.988271988234273090, -0.988264351804559070, -0.988256712904184040, -0.988249071533167320, -0.988241427691527900, -0.988233781379284970, +-0.988226132596457530, -0.988218481343064780, -0.988210827619125820, -0.988203171424659740, -0.988195512759685760, -0.988187851624223070, -0.988180188018290660, -0.988172521941907860, +-0.988164853395093750, -0.988157182377867430, -0.988149508890248220, -0.988141832932255220, -0.988134154503907620, -0.988126473605224650, -0.988118790236225400, -0.988111104396929290, +-0.988103416087355410, -0.988095725307522990, -0.988088032057451220, -0.988080336337159420, -0.988072638146666790, -0.988064937485992440, -0.988057234355155910, -0.988049528754176180, +-0.988041820683072670, -0.988034110141864600, -0.988026397130571280, -0.988018681649211920, -0.988010963697805940, -0.988003243276372460, -0.987995520384930880, -0.987987795023500540, +-0.987980067192100740, -0.987972336890750700, -0.987964604119469850, -0.987956868878277490, -0.987949131167192960, -0.987941390986235680, -0.987933648335424740, -0.987925903214779800, +-0.987918155624320060, -0.987910405564065060, -0.987902653034033910, -0.987894898034246130, -0.987887140564721160, -0.987879380625478310, -0.987871618216537020, -0.987863853337916710, +-0.987856085989636700, -0.987848316171716530, -0.987840543884175530, -0.987832769127033220, -0.987824991900309040, -0.987817212204022300, -0.987809430038192550, -0.987801645402839100, +-0.987793858297981720, -0.987786068723639610, -0.987778276679832310, -0.987770482166579370, -0.987762685183900200, -0.987754885731814360, -0.987747083810341260, -0.987739279419500460, +-0.987731472559311490, -0.987723663229793770, -0.987715851430966960, -0.987708037162850490, -0.987700220425463900, -0.987692401218826840, -0.987684579542958740, -0.987676755397879140, +-0.987668928783607680, -0.987661099700163910, -0.987653268147567380, -0.987645434125837720, -0.987637597634994480, -0.987629758675057200, -0.987621917246045530, -0.987614073347979130, +-0.987606226980877410, -0.987598378144760260, -0.987590526839647100, -0.987582673065557580, -0.987574816822511470, -0.987566958110528300, -0.987559096929627730, -0.987551233279829410, +-0.987543367161152990, -0.987535498573618110, -0.987527627517244540, -0.987519753992051940, -0.987511877998059950, -0.987503999535288220, -0.987496118603756520, -0.987488235203484390, +-0.987480349334491910, -0.987472460996798420, -0.987464570190423770, -0.987456676915387740, -0.987448781171709980, -0.987440882959410240, -0.987432982278508400, -0.987425079129024000, +-0.987417173510977020, -0.987409265424387010, -0.987401354869273830, -0.987393441845657250, -0.987385526353557140, -0.987377608392993160, -0.987369687963985280, -0.987361765066553040, +-0.987353839700716440, -0.987345911866495230, -0.987337981563909170, -0.987330048792978250, -0.987322113553722240, -0.987314175846160880, -0.987306235670314060, -0.987298293026201760, +-0.987290347913843620, -0.987282400333259650, -0.987274450284469700, -0.987266497767493530, -0.987258542782351260, -0.987250585329062510, -0.987242625407647400, -0.987234663018125680, +-0.987226698160517220, -0.987218730834842130, -0.987210761041120160, -0.987202788779371400, -0.987194814049615510, -0.987186836851872700, -0.987178857186162720, -0.987170875052505560, +-0.987162890450921320, -0.987154903381429750, -0.987146913844051070, -0.987138921838805030, -0.987130927365711620, -0.987122930424790930, -0.987114931016062960, -0.987106929139547670, +-0.987098924795264950, -0.987090917983235010, -0.987082908703477810, -0.987074896956013250, -0.987066882740861520, -0.987058866058042490, -0.987050846907576380, -0.987042825289483170, +-0.987034801203782840, -0.987026774650495490, -0.987018745629641310, -0.987010714141240090, -0.987002680185312230, -0.986994643761877620, -0.986986604870956350, -0.986978563512568740, +-0.986970519686734550, -0.986962473393474090, -0.986954424632807470, -0.986946373404754880, -0.986938319709336210, -0.986930263546571870, -0.986922204916481750, -0.986914143819086150, +-0.986906080254405180, -0.986898014222459150, -0.986889945723267940, -0.986881874756851960, -0.986873801323231210, -0.986865725422426010, -0.986857647054456440, -0.986849566219342720, +-0.986841482917105160, -0.986833397147763860, -0.986825308911339130, -0.986817218207851070, -0.986809125037319990, -0.986801029399766110, -0.986792931295209620, -0.986784830723670850, +-0.986776727685170000, -0.986768622179727270, -0.986760514207362990, -0.986752403768097470, -0.986744290861950920, -0.986736175488943660, -0.986728057649095990, -0.986719937342428130, +-0.986711814568960510, -0.986703689328713220, -0.986695561621706800, -0.986687431447961450, -0.986679298807497500, -0.986671163700335250, -0.986663026126495150, -0.986654886085997610, +-0.986646743578862620, -0.986638598605110940, -0.986630451164762780, -0.986622301257838340, -0.986614148884358280, -0.986605994044342790, -0.986597836737812320, -0.986589676964787280, +-0.986581514725288100, -0.986573350019334990, -0.986565182846948610, -0.986557013208149260, -0.986548841102957370, -0.986540666531393380, -0.986532489493477720, -0.986524309989230800, +-0.986516128018673170, -0.986507943581825140, -0.986499756678707370, -0.986491567309340180, -0.986483375473743980, -0.986475181171939440, -0.986466984403946870, -0.986458785169786910, +-0.986450583469479890, -0.986442379303046460, -0.986434172670507150, -0.986425963571882390, -0.986417752007192620, -0.986409537976458580, -0.986401321479700610, -0.986393102516939350, +-0.986384881088195440, -0.986376657193489210, -0.986368430832841430, -0.986360202006272500, -0.986351970713803090, -0.986343736955453740, -0.986335500731244990, -0.986327262041197580, +-0.986319020885331970, -0.986310777263668890, -0.986302531176228790, -0.986294282623032430, -0.986286031604100330, -0.986277778119453160, -0.986269522169111460, -0.986261263753096080, +-0.986253002871427360, -0.986244739524126280, -0.986236473711213370, -0.986228205432709280, -0.986219934688634560, -0.986211661479010070, -0.986203385803856470, -0.986195107663194290, +-0.986186827057044410, -0.986178543985427480, -0.986170258448364260, -0.986161970445875280, -0.986153679977981420, -0.986145387044703340, -0.986137091646061780, -0.986128793782077520, +-0.986120493452771310, -0.986112190658163800, -0.986103885398275760, -0.986095577673128170, -0.986087267482741560, -0.986078954827136700, -0.986070639706334570, -0.986062322120355830, +-0.986054002069221220, -0.986045679552951640, -0.986037354571567830, -0.986029027125090660, -0.986020697213540910, -0.986012364836939440, -0.986004029995307120, -0.985995692688664600, +-0.985987352917032880, -0.985979010680432920, -0.985970665978885270, -0.985962318812411030, -0.985953969181030950, -0.985945617084765910, -0.985937262523636890, -0.985928905497664760, +-0.985920546006870290, -0.985912184051274450, -0.985903819630898240, -0.985895452745762400, -0.985887083395887930, -0.985878711581295810, -0.985870337302006900, -0.985861960558042090, +-0.985853581349422360, -0.985845199676168790, -0.985836815538302160, -0.985828428935843440, -0.985820039868813720, -0.985811648337233890, -0.985803254341124920, -0.985794857880507800, +-0.985786458955403620, -0.985778057565833250, -0.985769653711817680, -0.985761247393378000, -0.985752838610535200, -0.985744427363310360, -0.985736013651724470, -0.985727597475798410, +-0.985719178835553490, -0.985710757731010580, -0.985702334162190770, -0.985693908129115060, -0.985685479631804640, -0.985677048670280500, -0.985668615244563840, -0.985660179354675540, +-0.985651741000636790, -0.985643300182468710, -0.985634856900192370, -0.985626411153828990, -0.985617962943399430, -0.985609512268925010, -0.985601059130426840, -0.985592603527926100, +-0.985584145461443680, -0.985575684931001010, -0.985567221936619050, -0.985558756478319140, -0.985550288556122260, -0.985541818170049710, -0.985533345320122600, -0.985524870006362130, +-0.985516392228789400, -0.985507911987425820, -0.985499429282292390, -0.985490944113410320, -0.985482456480801020, -0.985473966384485480, -0.985465473824485130, -0.985456978800821060, +-0.985448481313514480, -0.985439981362586700, -0.985431478948059050, -0.985422974069952720, -0.985414466728288920, -0.985405956923088850, -0.985397444654373960, -0.985388929922165540, +-0.985380412726484690, -0.985371893067352840, -0.985363370944791210, -0.985354846358821200, -0.985346319309464040, -0.985337789796741140, -0.985329257820673820, -0.985320723381283290, +-0.985312186478590870, -0.985303647112618090, -0.985295105283386150, -0.985286560990916490, -0.985278014235230310, -0.985269465016349270, -0.985260913334294440, -0.985252359189087380, +-0.985243802580749390, -0.985235243509301920, -0.985226681974766370, -0.985218117977164080, -0.985209551516516460, -0.985200982592844940, -0.985192411206171070, -0.985183837356516160, +-0.985175261043901520, -0.985166682268348910, -0.985158101029879440, -0.985149517328514860, -0.985140931164276370, -0.985132342537185620, -0.985123751447264050, -0.985115157894532970, +-0.985106561879014130, -0.985097963400728750, -0.985089362459698580, -0.985080759055944940, -0.985072153189489490, -0.985063544860353520, -0.985054934068558820, -0.985046320814126690, +-0.985037705097078780, -0.985029086917436620, -0.985020466275221770, -0.985011843170455760, -0.985003217603160120, -0.984994589573356390, -0.984985959081066230, -0.984977326126311170, +-0.984968690709112750, -0.984960052829492730, -0.984951412487472420, -0.984942769683073700, -0.984934124416318000, -0.984925476687227070, -0.984916826495822350, -0.984908173842125590, +-0.984899518726158440, -0.984890861147942440, -0.984882201107499240, -0.984873538604850610, -0.984864873640018180, -0.984856206213023500, -0.984847536323888330, -0.984838863972634320, +-0.984830189159283110, -0.984821511883856470, -0.984812832146376050, -0.984804149946863490, -0.984795465285340570, -0.984786778161829020, -0.984778088576350520, -0.984769396528926810, +-0.984760702019579660, -0.984752005048330710, -0.984743305615201740, -0.984734603720214490, -0.984725899363390720, -0.984717192544752210, -0.984708483264320700, -0.984699771522118070, +-0.984691057318165970, -0.984682340652486170, -0.984673621525100630, -0.984664899936030900, -0.984656175885299080, -0.984647449372926700, -0.984638720398935630, -0.984629988963347970, +-0.984621255066185140, -0.984612518707469350, -0.984603779887222140, -0.984595038605465490, -0.984586294862221270, -0.984577548657511350, -0.984568799991357490, -0.984560048863781680, +-0.984551295274805670, -0.984542539224451560, -0.984533780712741000, -0.984525019739695970, -0.984516256305338460, -0.984507490409690320, -0.984498722052773330, -0.984489951234609690, +-0.984481177955221050, -0.984472402214629510, -0.984463624012857030, -0.984454843349925390, -0.984446060225856790, -0.984437274640672880, -0.984428486594395860, -0.984419696087047600, +-0.984410903118650090, -0.984402107689225310, -0.984393309798795360, -0.984384509447382090, -0.984375706635007510, -0.984366901361693690, -0.984358093627462630, -0.984349283432336300, +-0.984340470776336800, -0.984331655659485990, -0.984322838081806210, -0.984314018043319190, -0.984305195544047270, -0.984296370584012310, -0.984287543163236410, -0.984278713281741660, +-0.984269880939550150, -0.984261046136683860, -0.984252208873165000, -0.984243369149015670, -0.984234526964257840, -0.984225682318913720, -0.984216835213005400, -0.984207985646555090, +-0.984199133619584670, -0.984190279132116430, -0.984181422184172590, -0.984172562775775140, -0.984163700906946270, -0.984154836577708190, -0.984145969788082890, -0.984137100538092780, +-0.984128228827759970, -0.984119354657106430, -0.984110478026154590, -0.984101598934926550, -0.984092717383444620, -0.984083833371730780, -0.984074946899807350, -0.984066057967696530, +-0.984057166575420640, -0.984048272723001770, -0.984039376410462350, -0.984030477637824360, -0.984021576405110230, -0.984012672712342160, -0.984003766559542360, -0.983994857946733140, +-0.983985946873936920, -0.983977033341175700, -0.983968117348471890, -0.983959198895847820, -0.983950277983325790, -0.983941354610928020, -0.983932428778676820, -0.983923500486594600, +-0.983914569734703590, -0.983905636523026320, -0.983896700851584760, -0.983887762720401570, -0.983878822129498840, -0.983869879078899220, -0.983860933568624810, -0.983851985598698130, +-0.983843035169141400, -0.983834082279977150, -0.983825126931227590, -0.983816169122915360, -0.983807208855062560, -0.983798246127691840, -0.983789280940825520, -0.983780313294486010, +-0.983771343188695640, -0.983762370623476930, -0.983753395598852220, -0.983744418114844140, -0.983735438171475020, -0.983726455768767270, -0.983717470906743330, -0.983708483585425730, +-0.983699493804837010, -0.983690501564999490, -0.983681506865935700, -0.983672509707668170, -0.983663510090219350, -0.983654508013611760, -0.983645503477867940, -0.983636496483010330, +-0.983627487029061440, -0.983618475116043940, -0.983609460743980150, -0.983600443912892700, -0.983591424622804240, -0.983582402873737220, -0.983573378665714040, -0.983564351998757580, +-0.983555322872890160, -0.983546291288134420, -0.983537257244513020, -0.983528220742048380, -0.983519181780763250, -0.983510140360680190, -0.983501096481821710, -0.983492050144210590, +-0.983483001347869260, -0.983473950092820460, -0.983464896379086740, -0.983455840206690860, -0.983446781575655240, -0.983437720486002860, -0.983428656937756050, -0.983419590930937670, +-0.983410522465570260, -0.983401451541676570, -0.983392378159279160, -0.983383302318400880, -0.983374224019064380, -0.983365143261292320, -0.983356060045107340, -0.983346974370532200, +-0.983337886237589660, -0.983328795646302490, -0.983319702596693210, -0.983310607088784700, -0.983301509122599730, -0.983292408698160920, -0.983283305815491170, -0.983274200474613000, +-0.983265092675549510, -0.983255982418323130, -0.983246869702956940, -0.983237754529473480, -0.983228636897895750, -0.983219516808246260, -0.983210394260548020, -0.983201269254823870, +-0.983192141791096490, -0.983183011869388830, -0.983173879489723570, -0.983164744652123670, -0.983155607356611890, -0.983146467603211010, -0.983137325391943980, -0.983128180722833810, +-0.983119033595903020, -0.983109884011174720, -0.983100731968671650, -0.983091577468416800, -0.983082420510432930, -0.983073261094743130, -0.983064099221370060, -0.983054934890336800, +-0.983045768101666220, -0.983036598855381190, -0.983027427151504600, -0.983018252990059520, -0.983009076371068820, -0.982999897294555390, -0.982990715760542310, -0.982981531769052340, +-0.982972345320108580, -0.982963156413733890, -0.982953965049951470, -0.982944771228783990, -0.982935574950254630, -0.982926376214386280, -0.982917175021202130, -0.982907971370724940, +-0.982898765262977810, -0.982889556697983830, -0.982880345675765880, -0.982871132196347140, -0.982861916259750500, -0.982852697865999160, -0.982843477015115980, -0.982834253707124180, +-0.982825027942046630, -0.982815799719906620, -0.982806569040727160, -0.982797335904531220, -0.982788100311341890, -0.982778862261182380, -0.982769621754075670, -0.982760378790044960, +-0.982751133369113240, -0.982741885491303700, -0.982732635156639440, -0.982723382365143670, -0.982714127116839360, -0.982704869411749730, -0.982695609249897960, -0.982686346631307160, +-0.982677081556000530, -0.982667814024001160, -0.982658544035332260, -0.982649271590016920, -0.982639996688078550, -0.982630719329540050, -0.982621439514424820, -0.982612157242755970, +-0.982602872514556800, -0.982593585329850420, -0.982584295688660010, -0.982575003591008910, -0.982565709036920310, -0.982556412026417410, -0.982547112559523540, -0.982537810636261780, +-0.982528506256655660, -0.982519199420728070, -0.982509890128502650, -0.982500578380002490, -0.982491264175250790, -0.982481947514270980, -0.982472628397086270, -0.982463306823720070, +-0.982453982794195490, -0.982444656308536060, -0.982435327366764870, -0.982425995968905450, -0.982416662114981020, -0.982407325805015000, -0.982397987039030580, -0.982388645817051210, +-0.982379302139100300, -0.982369956005201050, -0.982360607415376900, -0.982351256369651260, -0.982341902868047570, -0.982332546910589020, -0.982323188497299050, -0.982313827628201190, +-0.982304464303318750, -0.982295098522675160, -0.982285730286293850, -0.982276359594198120, -0.982266986446411640, -0.982257610842957600, -0.982248232783859530, -0.982238852269140870, +-0.982229469298825150, -0.982220083872935690, -0.982210695991496020, -0.982201305654529570, -0.982191912862059980, -0.982182517614110460, -0.982173119910704770, -0.982163719751866230, +-0.982154317137618470, -0.982144912067984820, -0.982135504542988920, -0.982126094562654210, -0.982116682127004310, -0.982107267236062790, -0.982097849889852940, -0.982088430088398520, +-0.982079007831723080, -0.982069583119850150, -0.982060155952803160, -0.982050726330605860, -0.982041294253281680, -0.982031859720854270, -0.982022422733347280, -0.982012983290784240, +-0.982003541393188570, -0.981994097040584270, -0.981984650232994530, -0.981975200970443330, -0.981965749252953990, -0.981956295080550380, -0.981946838453256030, -0.981937379371094600, +-0.981927917834089610, -0.981918453842264950, -0.981908987395644030, -0.981899518494250720, -0.981890047138108570, -0.981880573327241320, -0.981871097061672750, -0.981861618341426270, +-0.981852137166525860, -0.981842653536995070, -0.981833167452857650, -0.981823678914137240, -0.981814187920857730, -0.981804694473042750, -0.981795198570715950, -0.981785700213901210, +-0.981776199402622280, -0.981766696136902710, -0.981757190416766570, -0.981747682242237300, -0.981738171613338870, -0.981728658530095060, -0.981719142992529600, -0.981709625000666160, +-0.981700104554528830, -0.981690581654141140, -0.981681056299526960, -0.981671528490710270, -0.981661998227714610, -0.981652465510564070, -0.981642930339282290, -0.981633392713893270, +-0.981623852634420760, -0.981614310100888510, -0.981604765113320620, -0.981595217671740740, -0.981585667776172840, -0.981576115426640810, -0.981566560623168380, -0.981557003365779670, +-0.981547443654498310, -0.981537881489348510, -0.981528316870353910, -0.981518749797538500, -0.981509180270926260, -0.981499608290541060, -0.981490033856406760, -0.981480456968547470, +-0.981470877626987040, -0.981461295831749460, -0.981451711582858490, -0.981442124880338330, -0.981432535724212960, -0.981422944114506040, -0.981413350051241970, -0.981403753534444420, +-0.981394154564137480, -0.981384553140345120, -0.981374949263091430, -0.981365342932400410, -0.981355734148295910, -0.981346122910802140, -0.981336509219943090, -0.981326893075742830, +-0.981317274478225140, -0.981307653427414440, -0.981298029923334590, -0.981288403966009580, -0.981278775555463610, -0.981269144691720660, -0.981259511374804940, -0.981249875604740420, +-0.981240237381551080, -0.981230596705261360, -0.981220953575895010, -0.981211307993476330, -0.981201659958029330, -0.981192009469578190, -0.981182356528147000, -0.981172701133759980, +-0.981163043286441220, -0.981153382986214790, -0.981143720233104920, -0.981134055027135800, -0.981124387368331520, -0.981114717256716170, -0.981105044692314190, -0.981095369675149430, +-0.981085692205246440, -0.981076012282629080, -0.981066329907321680, -0.981056645079348530, -0.981046957798733740, -0.981037268065501510, -0.981027575879676260, -0.981017881241281970, +-0.981008184150342970, -0.980998484606883440, -0.980988782610927810, -0.980979078162500180, -0.980969371261624870, -0.980959661908326170, -0.980949950102628310, -0.980940235844555470, +-0.980930519134132100, -0.980920799971382480, -0.980911078356330850, -0.980901354289001490, -0.980891627769418740, -0.980881898797606900, -0.980872167373590400, -0.980862433497393440, +-0.980852697169040330, -0.980842958388555510, -0.980833217155963390, -0.980823473471288180, -0.980813727334554190, -0.980803978745785950, -0.980794227705007790, -0.980784474212244020, +-0.980774718267519050, -0.980764959870857430, -0.980755199022283250, -0.980745435721821160, -0.980735669969495350, -0.980725901765330480, -0.980716131109350850, -0.980706358001580900, +-0.980696582442045050, -0.980686804430767720, -0.980677023967773340, -0.980667241053086450, -0.980657455686731460, -0.980647667868732810, -0.980637877599115030, -0.980628084877902540, +-0.980618289705119880, -0.980608492080791370, -0.980598692004941760, -0.980588889477595370, -0.980579084498776730, -0.980569277068510380, -0.980559467186820970, -0.980549654853732690, +-0.980539840069270420, -0.980530022833458470, -0.980520203146321490, -0.980510381007884010, -0.980500556418170580, -0.980490729377205830, -0.980480899885014080, -0.980471067941620200, +-0.980461233547048620, -0.980451396701323970, -0.980441557404470920, -0.980431715656513880, -0.980421871457477500, -0.980412024807386540, -0.980402175706265420, -0.980392324154139020, +-0.980382470151031640, -0.980372613696968150, -0.980362754791973100, -0.980352893436071240, -0.980343029629287100, -0.980333163371645330, -0.980323294663170810, -0.980313423503887840, +-0.980303549893821510, -0.980293673832996150, -0.980283795321436720, -0.980273914359167780, -0.980264030946214060, -0.980254145082600110, -0.980244256768351030, -0.980234366003491120, +-0.980224472788045480, -0.980214577122038520, -0.980204679005495130, -0.980194778438440050, -0.980184875420898050, -0.980174969952893880, -0.980165062034452310, -0.980155151665597970, +-0.980145238846355850, -0.980135323576750590, -0.980125405856806960, -0.980115485686549940, -0.980105563066004160, -0.980095637995194500, -0.980085710474145610, -0.980075780502882580, +-0.980065848081430050, -0.980055913209813000, -0.980045975888055980, -0.980036036116184170, -0.980026093894222240, -0.980016149222195040, -0.980006202100127450, -0.979996252528044450, +-0.979986300505970800, -0.979976346033931360, -0.979966389111951000, -0.979956429740054700, -0.979946467918267340, -0.979936503646613890, -0.979926536925119110, -0.979916567753807980, +-0.979906596132705480, -0.979896622061836360, -0.979886645541225840, -0.979876666570898560, -0.979866685150879710, -0.979856701281194180, -0.979846714961866820, -0.979836726192922720, +-0.979826734974386770, -0.979816741306284040, -0.979806745188639420, -0.979796746621477980, -0.979786745604824590, -0.979776742138704360, -0.979766736223142360, -0.979756727858163370, +-0.979746717043792680, -0.979736703780055170, -0.979726688066975940, -0.979716669904579950, -0.979706649292892200, -0.979696626231937980, -0.979686600721742070, -0.979676572762329780, +-0.979666542353725970, -0.979656509495955840, -0.979646474189044380, -0.979636436433016790, -0.979626396227898040, -0.979616353573713460, -0.979606308470487800, -0.979596260918246480, +-0.979586210917014480, -0.979576158466817000, -0.979566103567679040, -0.979556046219625890, -0.979545986422682650, -0.979535924176874300, -0.979525859482226260, -0.979515792338763510, +-0.979505722746511380, -0.979495650705494820, -0.979485576215739280, -0.979475499277269730, -0.979465419890111380, -0.979455338054289530, -0.979445253769829380, -0.979435167036756040, +-0.979425077855094810, -0.979414986224870780, -0.979404892146109370, -0.979394795618835690, -0.979384696643075150, -0.979374595218852730, -0.979364491346193860, -0.979354385025123730, +-0.979344276255667780, -0.979334165037850980, -0.979324051371698760, -0.979313935257236530, -0.979303816694489400, -0.979293695683482790, -0.979283572224241890, -0.979273446316792030, +-0.979263317961158620, -0.979253187157366870, -0.979243053905442080, -0.979232918205409810, -0.979222780057295130, -0.979212639461123580, -0.979202496416920360, -0.979192350924711020, +-0.979182202984520630, -0.979172052596374850, -0.979161899760298880, -0.979151744476318250, -0.979141586744458170, -0.979131426564744170, -0.979121263937201560, -0.979111098861855880, +-0.979100931338732330, -0.979090761367856550, -0.979080588949253870, -0.979070414082949590, -0.979060236768969470, -0.979050057007338600, -0.979039874798082630, -0.979029690141226980, +-0.979019503036797190, -0.979009313484818570, -0.978999121485316650, -0.978988927038316860, -0.978978730143844840, -0.978968530801926030, -0.978958329012585840, -0.978948124775849800, +-0.978937918091743580, -0.978927708960292460, -0.978917497381522010, -0.978907283355457960, -0.978897066882125520, -0.978886847961550570, -0.978876626593758400, -0.978866402778774790, +-0.978856176516625040, -0.978845947807334920, -0.978835716650929940, -0.978825483047435660, -0.978815246996877610, -0.978805008499281540, -0.978794767554672870, -0.978784524163077370, +-0.978774278324520460, -0.978764030039028010, -0.978753779306625330, -0.978743526127338280, -0.978733270501192300, -0.978723012428213250, -0.978712751908426660, -0.978702488941858180, +-0.978692223528533470, -0.978681955668478150, -0.978671685361718110, -0.978661412608278660, -0.978651137408185770, -0.978640859761465090, -0.978630579668142150, -0.978620297128242830, +-0.978610012141792770, -0.978599724708817620, -0.978589434829343240, -0.978579142503395170, -0.978568847730999390, -0.978558550512181440, -0.978548250846967060, -0.978537948735382020, +-0.978527644177452190, -0.978517337173203220, -0.978507027722660960, -0.978496715825851070, -0.978486401482799420, -0.978476084693531760, -0.978465765458073840, -0.978455443776451550, +-0.978445119648690630, -0.978434793074816960, -0.978424464054856280, -0.978414132588834470, -0.978403798676777290, -0.978393462318710600, -0.978383123514660280, -0.978372782264652190, +-0.978362438568712080, -0.978352092426865940, -0.978341743839139410, -0.978331392805558700, -0.978321039326149440, -0.978310683400937630, -0.978300325029949010, -0.978289964213209680, +-0.978279600950745400, -0.978269235242582020, -0.978258867088745760, -0.978248496489262150, -0.978238123444157390, -0.978227747953457350, -0.978217370017187890, -0.978206989635375000, +-0.978196606808044660, -0.978186221535222720, -0.978175833816935290, -0.978165443653208340, -0.978155051044067750, -0.978144655989539480, -0.978134258489649630, -0.978123858544424070, +-0.978113456153888890, -0.978103051318070070, -0.978092644036993590, -0.978082234310685530, -0.978071822139171880, -0.978061407522478720, -0.978050990460632040, -0.978040570953657820, +-0.978030149001582250, -0.978019724604431210, -0.978009297762230890, -0.977998868475007390, -0.977988436742786680, -0.977978002565594860, -0.977967565943458130, -0.977957126876402350, +-0.977946685364453840, -0.977936241407638570, -0.977925795005982760, -0.977915346159512370, -0.977904894868253720, -0.977894441132232780, -0.977883984951475660, -0.977873526326008660, +-0.977863065255857870, -0.977852601741049380, -0.977842135781609390, -0.977831667377564000, -0.977821196528939510, -0.977810723235762010, -0.977800247498057830, -0.977789769315852820, +-0.977779288689173520, -0.977768805618045910, -0.977758320102496410, -0.977747832142551010, -0.977737341738236120, -0.977726848889577730, -0.977716353596602360, -0.977705855859336000, +-0.977695355677805080, -0.977684853052035780, -0.977674347982054210, -0.977663840467886900, -0.977653330509559940, -0.977642818107099740, -0.977632303260532410, -0.977621785969884360, +-0.977611266235181800, -0.977600744056451140, -0.977590219433718600, -0.977579692367010480, -0.977569162856353090, -0.977558630901772860, -0.977548096503296100, -0.977537559660949020, +-0.977527020374758030, -0.977516478644749550, -0.977505934470949800, -0.977495387853385300, -0.977484838792082260, -0.977474287287067200, -0.977463733338366340, -0.977453176946006200, +-0.977442618110013100, -0.977432056830413450, -0.977421493107233700, -0.977410926940500140, -0.977400358330239310, -0.977389787276477630, -0.977379213779241420, -0.977368637838557210, +-0.977358059454451420, -0.977347478626950370, -0.977336895356080700, -0.977326309641868840, -0.977315721484341200, -0.977305130883524110, -0.977294537839444310, -0.977283942352128230, +-0.977273344421602190, -0.977262744047892820, -0.977252141231026660, -0.977241535971030030, -0.977230928267929570, -0.977220318121751810, -0.977209705532523290, -0.977199090500270540, +-0.977188473025019990, -0.977177853106798280, -0.977167230745631940, -0.977156605941547520, -0.977145978694571540, -0.977135349004730760, -0.977124716872051490, -0.977114082296560380, +-0.977103445278284190, -0.977092805817249330, -0.977082163913482460, -0.977071519567010220, -0.977060872777859020, -0.977050223546055860, -0.977039571871627040, -0.977028917754599210, +-0.977018261194999240, -0.977007602192853540, -0.976996940748188770, -0.976986276861031790, -0.976975610531409020, -0.976964941759347230, -0.976954270544873160, -0.976943596888013350, +-0.976932920788794570, -0.976922242247243440, -0.976911561263386740, -0.976900877837251100, -0.976890191968863400, -0.976879503658250050, -0.976868812905438030, -0.976858119710454000, +-0.976847424073324590, -0.976836725994076670, -0.976826025472737000, -0.976815322509332120, -0.976804617103888990, -0.976793909256434390, -0.976783198966994950, -0.976772486235597540, +-0.976761771062268910, -0.976751053447035830, -0.976740333389925160, -0.976729610890963660, -0.976718885950178080, -0.976708158567595410, -0.976697428743242170, -0.976686696477145460, +-0.976675961769331910, -0.976665224619828630, -0.976654485028662140, -0.976643742995859540, -0.976632998521447470, -0.976622251605453020, -0.976611502247902830, -0.976600750448824000, +-0.976589996208243160, -0.976579239526187410, -0.976568480402683630, -0.976557718837758550, -0.976546954831439160, -0.976536188383752450, -0.976525419494725270, -0.976514648164384490, +-0.976503874392757100, -0.976493098179870070, -0.976482319525750260, -0.976471538430424670, -0.976460754893920260, -0.976449968916263900, -0.976439180497482680, -0.976428389637603370, +-0.976417596336653260, -0.976406800594659010, -0.976396002411647920, -0.976385201787646650, -0.976374398722682500, -0.976363593216782340, -0.976352785269973160, -0.976341974882282030, +-0.976331162053735930, -0.976320346784362080, -0.976309529074187220, -0.976298708923238560, -0.976287886331543060, -0.976277061299127950, -0.976266233826020180, -0.976255403912246860, +-0.976244571557834950, -0.976233736762811670, -0.976222899527203980, -0.976212059851039090, -0.976201217734343980, -0.976190373177145960, -0.976179526179471900, -0.976168676741349000, +-0.976157824862804450, -0.976146970543865340, -0.976136113784558890, -0.976125254584912060, -0.976114392944952170, -0.976103528864706190, -0.976092662344201440, -0.976081793383465010, +-0.976070921982524210, -0.976060048141405900, -0.976049171860137620, -0.976038293138746350, -0.976027411977259400, -0.976016528375703960, -0.976005642334107140, -0.975994753852496230, +-0.975983862930898450, -0.975972969569340880, -0.975962073767851050, -0.975951175526455940, -0.975940274845182860, -0.975929371724059250, -0.975918466163112060, -0.975907558162368850, +-0.975896647721856580, -0.975885734841602790, -0.975874819521634680, -0.975863901761979460, -0.975852981562664530, -0.975842058923717110, -0.975831133845164620, -0.975820206327034260, +-0.975809276369353330, -0.975798343972149260, -0.975787409135449260, -0.975776471859280850, -0.975765532143671120, -0.975754589988647720, -0.975743645394237750, -0.975732698360468720, +-0.975721748887367850, -0.975710796974962660, -0.975699842623280470, -0.975688885832348700, -0.975677926602194770, -0.975666964932845880, -0.975656000824329680, -0.975645034276673480, +-0.975634065289904710, -0.975623093864050660, -0.975612119999138990, -0.975601143695197020, -0.975590164952252150, -0.975579183770331810, -0.975568200149463660, -0.975557214089674880, +-0.975546225590993130, -0.975535234653445830, -0.975524241277060390, -0.975513245461864350, -0.975502247207885140, -0.975491246515150510, -0.975480243383687550, -0.975469237813524130, +-0.975458229804687550, -0.975447219357205460, -0.975436206471105180, -0.975425191146414460, -0.975414173383160830, -0.975403153181371720, -0.975392130541074650, -0.975381105462297390, +-0.975370077945067250, -0.975359047989411980, -0.975348015595359110, -0.975336980762936180, -0.975325943492170720, -0.975314903783090490, -0.975303861635723020, -0.975292817050095850, +-0.975281770026236620, -0.975270720564172970, -0.975259668663932540, -0.975248614325543000, -0.975237557549031850, -0.975226498334426760, -0.975215436681755590, -0.975204372591045640, +-0.975193306062324900, -0.975182237095620800, -0.975171165690961180, -0.975160091848373600, -0.975149015567885800, -0.975137936849525430, -0.975126855693320250, -0.975115772099298010, +-0.975104686067486240, -0.975093597597912810, -0.975082506690605370, -0.975071413345591550, -0.975060317562899350, -0.975049219342556280, -0.975038118684590120, -0.975027015589028820, +-0.975015910055899830, -0.975004802085231210, -0.974993691677050410, -0.974982578831385500, -0.974971463548264140, -0.974960345827714070, -0.974949225669763160, -0.974938103074439290, +-0.974926978041769980, -0.974915850571783320, -0.974904720664507060, -0.974893588319968970, -0.974882453538196800, -0.974871316319218640, -0.974860176663062130, -0.974849034569755250, +-0.974837890039325750, -0.974826743071801390, -0.974815593667210380, -0.974804441825580240, -0.974793287546939060, -0.974782130831314710, -0.974770971678734940, -0.974759810089227740, +-0.974748646062821080, -0.974737479599542820, -0.974726310699420840, -0.974715139362483000, -0.974703965588757380, -0.974692789378271860, -0.974681610731054300, -0.974670429647132800, +-0.974659246126535210, -0.974648060169289510, -0.974636871775423570, -0.974625680944965490, -0.974614487677943230, -0.974603291974384780, -0.974592093834318110, -0.974580893257771200, +-0.974569690244771910, -0.974558484795348570, -0.974547276909528910, -0.974536066587341150, -0.974524853828813150, -0.974513638633973110, -0.974502421002848900, -0.974491200935468700, +-0.974479978431860410, -0.974468753492052200, -0.974457526116072170, -0.974446296303948300, -0.974435064055708570, -0.974423829371381390, -0.974412592250994410, -0.974401352694576170, +-0.974390110702154420, -0.974378866273757360, -0.974367619409413190, -0.974356370109149990, -0.974345118372995870, -0.974333864200978890, -0.974322607593127280, -0.974311348549469210, +-0.974300087070032680, -0.974288823154846000, -0.974277556803937240, -0.974266288017334610, -0.974255016795066210, -0.974243743137160330, -0.974232467043645080, -0.974221188514548640, +-0.974209907549899220, -0.974198624149725020, -0.974187338314054350, -0.974176050042915190, -0.974164759336336060, -0.974153466194344950, -0.974142170616970060, -0.974130872604239920, +-0.974119572156182500, -0.974108269272826230, -0.974096963954199200, -0.974085656200329940, -0.974074346011246320, -0.974063033386976970, -0.974051718327550000, -0.974040400832993700, +-0.974029080903336400, -0.974017758538606500, -0.974006433738832110, -0.973995106504041640, -0.973983776834263400, -0.973972444729525820, -0.973961110189856980, -0.973949773215285420, +-0.973938433805839440, -0.973927091961547360, -0.973915747682437600, -0.973904400968538360, -0.973893051819878290, -0.973881700236485460, -0.973870346218388420, -0.973858989765615470, +-0.973847630878195150, -0.973836269556155650, -0.973824905799525520, -0.973813539608333170, -0.973802170982606910, -0.973790799922375270, -0.973779426427666570, -0.973768050498509340, +-0.973756672134932000, -0.973745291336962860, -0.973733908104630670, -0.973722522437963640, -0.973711134336990300, -0.973699743801739070, -0.973688350832238480, -0.973676955428517180, +-0.973665557590603250, -0.973654157318525670, -0.973642754612312530, -0.973631349471992590, -0.973619941897594150, -0.973608531889145980, -0.973597119446676480, -0.973585704570214090, +-0.973574287259787560, -0.973562867515425200, -0.973551445337155760, -0.973540020725007670, -0.973528593679009460, -0.973517164199189880, -0.973505732285577350, -0.973494297938200530, +-0.973482861157087820, -0.973471421942268100, -0.973459980293769790, -0.973448536211621530, -0.973437089695851960, -0.973425640746489520, -0.973414189363563160, -0.973402735547101220, +-0.973391279297132540, -0.973379820613685550, -0.973368359496789130, -0.973356895946471680, -0.973345429962762080, -0.973333961545688850, -0.973322490695280760, -0.973311017411566450, +-0.973299541694574550, -0.973288063544333840, -0.973276582960872940, -0.973265099944220500, -0.973253614494405510, -0.973242126611456370, -0.973230636295401850, -0.973219143546270820, +-0.973207648364091900, -0.973196150748893980, -0.973184650700705480, -0.973173148219555470, -0.973161643305472610, -0.973150135958485650, -0.973138626178623230, -0.973127113965914450, +-0.973115599320387710, -0.973104082242072010, -0.973092562730996090, -0.973081040787188820, -0.973069516410678960, -0.973057989601495250, -0.973046460359666580, -0.973034928685221790, +-0.973023394578189650, -0.973011858038599020, -0.973000319066478770, -0.972988777661857650, -0.972977233824764750, -0.972965687555228610, -0.972954138853278310, -0.972942587718942600, +-0.972931034152250570, -0.972919478153230770, -0.972907919721912480, -0.972896358858324260, -0.972884795562495190, -0.972873229834454010, -0.972861661674229940, -0.972850091081851610, +-0.972838518057348000, -0.972826942600748200, -0.972815364712081080, -0.972803784391375380, -0.972792201638660430, -0.972780616453964740, -0.972769028837317640, -0.972757438788747990, +-0.972745846308284760, -0.972734251395956820, -0.972722654051793260, -0.972711054275823160, -0.972699452068075400, -0.972687847428578940, -0.972676240357362890, -0.972664630854456310, +-0.972653018919888090, -0.972641404553687310, -0.972629787755883050, -0.972618168526504290, -0.972606546865580120, -0.972594922773139640, -0.972583296249211800, -0.972571667293825710, +-0.972560035907010460, -0.972548402088795120, -0.972536765839208780, -0.972525127158280540, -0.972513486046039490, -0.972501842502514700, -0.972490196527735380, -0.972478548121730400, +-0.972466897284529170, -0.972455244016160680, -0.972443588316654120, -0.972431930186038570, -0.972420269624343140, -0.972408606631597120, -0.972396941207829490, -0.972385273353069570, +-0.972373603067346440, -0.972361930350689300, -0.972350255203127340, -0.972338577624689780, -0.972326897615405810, -0.972315215175304500, -0.972303530304415080, -0.972291843002767050, +-0.972280153270389190, -0.972268461107311130, -0.972256766513561850, -0.972245069489170670, -0.972233370034166770, -0.972221668148579470, -0.972209963832437960, -0.972198257085771680, +-0.972186547908609590, -0.972174836300981230, -0.972163122262915790, -0.972151405794442480, -0.972139686895590720, -0.972127965566389700, -0.972116241806868730, -0.972104515617057240, +-0.972092786996984430, -0.972081055946679710, -0.972069322466172170, -0.972057586555491460, -0.972045848214666770, -0.972034107443727420, -0.972022364242702940, -0.972010618611622410, +-0.971998870550515370, -0.971987120059411120, -0.971975367138339100, -0.971963611787328710, -0.971951854006409270, -0.971940093795610080, -0.971928331154960800, -0.971916566084490620, +-0.971904798584229070, -0.971893028654205460, -0.971881256294449440, -0.971869481504990080, -0.971857704285857160, -0.971845924637079860, -0.971834142558687830, -0.971822358050710380, +-0.971810571113177040, -0.971798781746117330, -0.971786989949560700, -0.971775195723536540, -0.971763399068074300, -0.971751599983203710, -0.971739798468954090, -0.971727994525354970, +-0.971716188152435770, -0.971704379350226240, -0.971692568118755710, -0.971680754458053690, -0.971668938368149830, -0.971657119849073660, -0.971645298900854600, -0.971633475523522420, +-0.971621649717106520, -0.971609821481636440, -0.971597990817141820, -0.971586157723652200, -0.971574322201197330, -0.971562484249806510, -0.971550643869509510, -0.971538801060335850, +-0.971526955822315300, -0.971515108155477260, -0.971503258059851600, -0.971491405535467640, -0.971479550582355240, -0.971467693200543940, -0.971455833390063360, -0.971443971150943280, +-0.971432106483213210, -0.971420239386902920, -0.971408369862042040, -0.971396497908660230, -0.971384623526787120, -0.971372746716452460, -0.971360867477686020, -0.971348985810517320, +-0.971337101714976230, -0.971325215191092380, -0.971313326238895440, -0.971301434858415250, -0.971289541049681350, -0.971277644812723720, -0.971265746147571880, -0.971253845054255830, +-0.971241941532804960, -0.971230035583249380, -0.971218127205618620, -0.971206216399942650, -0.971194303166251100, -0.971182387504573750, -0.971170469414940450, -0.971158548897381070, +-0.971146625951925250, -0.971134700578602850, -0.971122772777443630, -0.971110842548477570, -0.971098909891734420, -0.971086974807243930, -0.971075037295036080, -0.971063097355140510, +-0.971051154987587320, -0.971039210192406130, -0.971027262969627050, -0.971015313319279700, -0.971003361241394190, -0.970991406736000150, -0.970979449803127670, -0.970967490442806500, +-0.970955528655066740, -0.970943564439938010, -0.970931597797450530, -0.970919628727633930, -0.970907657230518310, -0.970895683306133410, -0.970883706954509430, -0.970871728175676240, +-0.970859746969663600, -0.970847763336501690, -0.970835777276220280, -0.970823788788849450, -0.970811797874419180, -0.970799804532959440, -0.970787808764500100, -0.970775810569071360, +-0.970763809946703080, -0.970751806897425240, -0.970739801421267810, -0.970727793518261000, -0.970715783188434540, -0.970703770431818770, -0.970691755248443530, -0.970679737638338920, +-0.970667717601534920, -0.970655695138061710, -0.970643670247949180, -0.970631642931227500, -0.970619613187926780, -0.970607581018076870, -0.970595546421708200, -0.970583509398850520, +-0.970571469949534140, -0.970559428073789030, -0.970547383771645400, -0.970535337043133330, -0.970523287888282900, -0.970511236307124210, -0.970499182299687460, -0.970487125866002720, +-0.970475067006100200, -0.970463005720009990, -0.970450942007762270, -0.970438875869387260, -0.970426807304915040, -0.970414736314375690, -0.970402662897799640, -0.970390587055216860, +-0.970378508786657550, -0.970366428092152120, -0.970354344971730450, -0.970342259425423070, -0.970330171453259950, -0.970318081055271510, -0.970305988231487730, -0.970293892981939130, +-0.970281795306655590, -0.970269695205667750, -0.970257592679005580, -0.970245487726699500, -0.970233380348779590, -0.970221270545276400, -0.970209158316219900, -0.970197043661640500, +-0.970184926581568520, -0.970172807076034260, -0.970160685145067920, -0.970148560788699930, -0.970136434006960480, -0.970124304799879990, -0.970112173167488770, -0.970100039109817010, +-0.970087902626895260, -0.970075763718753700, -0.970063622385422760, -0.970051478626932750, -0.970039332443313970, -0.970027183834596960, -0.970015032800811920, -0.970002879341989370, +-0.969990723458159620, -0.969978565149352990, -0.969966404415600000, -0.969954241256930970, -0.969942075673376420, -0.969929907664966560, -0.969917737231732020, -0.969905564373703120, +-0.969893389090910270, -0.969881211383384010, -0.969869031251154650, -0.969856848694252700, -0.969844663712708720, -0.969832476306553000, -0.969820286475816080, -0.969808094220528600, +-0.969795899540720760, -0.969783702436423200, -0.969771502907666340, -0.969759300954480820, -0.969747096576896950, -0.969734889774945370, -0.969722680548656510, -0.969710468898061120, +-0.969698254823189390, -0.969686038324072070, -0.969673819400739600, -0.969661598053222720, -0.969649374281551730, -0.969637148085757290, -0.969624919465870150, -0.969612688421920500, +-0.969600454953939320, -0.969588219061956910, -0.969575980746003930, -0.969563740006111010, -0.969551496842308790, -0.969539251254627700, -0.969527003243098710, -0.969514752807752010, +-0.969502499948618480, -0.969490244665728750, -0.969477986959113360, -0.969465726828802940, -0.969453464274828370, -0.969441199297220060, -0.969428931896008760, -0.969416662071225010, +-0.969404389822899780, -0.969392115151063490, -0.969379838055746900, -0.969367558536980760, -0.969355276594795700, -0.969342992229222490, -0.969330705440291760, -0.969318416228034270, +-0.969306124592480670, -0.969293830533661920, -0.969281534051608440, -0.969269235146351220, -0.969256933817920880, -0.969244630066348200, -0.969232323891664030, -0.969220015293898900, +-0.969207704273083780, -0.969195390829249550, -0.969183074962426620, -0.969170756672646180, -0.969158435959938780, -0.969146112824335160, -0.969133787265866410, -0.969121459284563170, +-0.969109128880456310, -0.969096796053576570, -0.969084460803954940, -0.969072123131622050, -0.969059783036608890, -0.969047440518946200, -0.969035095578665070, -0.969022748215796040, +-0.969010398430370290, -0.968998046222418470, -0.968985691591971570, -0.968973334539060320, -0.968960975063715810, -0.968948613165968920, -0.968936248845850390, -0.968923882103391310, +-0.968911512938622430, -0.968899141351574960, -0.968886767342279520, -0.968874390910767100, -0.968862012057068790, -0.968849630781215440, -0.968837247083238040, -0.968824860963167440, +-0.968812472421034740, -0.968800081456870910, -0.968787688070706810, -0.968775292262573530, -0.968762894032501930, -0.968750493380523210, -0.968738090306668130, -0.968725684810967990, +-0.968713276893453430, -0.968700866554155880, -0.968688453793106090, -0.968676038610335130, -0.968663621005874110, -0.968651200979753990, -0.968638778532005970, -0.968626353662660920, +-0.968613926371750030, -0.968601496659304280, -0.968589064525354760, -0.968576629969932660, -0.968564192993068950, -0.968551753594794730, -0.968539311775141190, -0.968526867534139300, +-0.968514420871820380, -0.968501971788215290, -0.968489520283355220, -0.968477066357271490, -0.968464610009994950, -0.968452151241557040, -0.968439690051988710, -0.968427226441321070, +-0.968414760409585410, -0.968402291956812820, -0.968389821083034510, -0.968377347788281660, -0.968364872072585480, -0.968352393935977160, -0.968339913378487680, -0.968327430400148570, +-0.968314945000990800, -0.968302457181045790, -0.968289966940344530, -0.968277474278918420, -0.968264979196798550, -0.968252481694016230, -0.968239981770602780, -0.968227479426589380, +-0.968214974662007230, -0.968202467476887650, -0.968189957871261830, -0.968177445845161300, -0.968164931398616920, -0.968152414531660340, -0.968139895244322760, -0.968127373536635360, +-0.968114849408629690, -0.968102322860336710, -0.968089793891788060, -0.968077262503014730, -0.968064728694048470, -0.968052192464920250, -0.968039653815661590, -0.968027112746303820, +-0.968014569256878230, -0.968002023347416250, -0.967989475017949190, -0.967976924268508450, -0.967964371099125480, -0.967951815509831450, -0.967939257500657900, -0.967926697071636260, +-0.967914134222797820, -0.967901568954174120, -0.967889001265796470, -0.967876431157696280, -0.967863858629904980, -0.967851283682454210, -0.967838706315375050, -0.967826126528699260, +-0.967813544322458030, -0.967800959696683010, -0.967788372651405490, -0.967775783186657250, -0.967763191302469350, -0.967750596998873560, -0.967738000275901290, -0.967725401133583960, +-0.967712799571953220, -0.967700195591040370, -0.967687589190877160, -0.967674980371494910, -0.967662369132925140, -0.967649755475199490, -0.967637139398349500, -0.967624520902406580, +-0.967611899987402490, -0.967599276653368530, -0.967586650900336460, -0.967574022728337700, -0.967561392137404000, -0.967548759127566660, -0.967536123698857550, -0.967523485851307980, +-0.967510845584949820, -0.967498202899814470, -0.967485557795933700, -0.967472910273339040, -0.967460260332062120, -0.967447607972134360, -0.967434953193587740, -0.967422295996453680, +-0.967409636380763940, -0.967396974346550140, -0.967384309893843830, -0.967371643022676750, -0.967358973733080550, -0.967346302025086980, -0.967333627898727570, -0.967320951354034180, +-0.967308272391038340, -0.967295591009771800, -0.967282907210266330, -0.967270220992553660, -0.967257532356665340, -0.967244841302633220, -0.967232147830488940, -0.967219451940264370, +-0.967206753631991160, -0.967194052905701150, -0.967181349761425890, -0.967168644199197240, -0.967155936219047050, -0.967143225821006870, -0.967130513005108880, -0.967117797771384400, +-0.967105080119865510, -0.967092360050583850, -0.967079637563571400, -0.967066912658859800, -0.967054185336480910, -0.967041455596466590, -0.967028723438848600, -0.967015988863658800, +-0.967003251870929060, -0.966990512460691230, -0.966977770632977070, -0.966965026387818450, -0.966952279725247330, -0.966939530645295480, -0.966926779147994740, -0.966914025233377110, +-0.966901268901474430, -0.966888510152318580, -0.966875748985941420, -0.966862985402374920, -0.966850219401650950, -0.966837450983801470, -0.966824680148858250, -0.966811906896853480, +-0.966799131227818800, -0.966786353141786400, -0.966773572638788050, -0.966760789718855820, -0.966748004382021580, -0.966735216628317300, -0.966722426457775060, -0.966709633870426740, +-0.966696838866304200, -0.966684041445439730, -0.966671241607865110, -0.966658439353612400, -0.966645634682713580, -0.966632827595200640, -0.966620018091105650, -0.966607206170460590, +-0.966594391833297540, -0.966581575079648480, -0.966568755909545610, -0.966555934323020670, -0.966543110320105980, -0.966530283900833510, -0.966517455065235340, -0.966504623813343570, +-0.966491790145190270, -0.966478954060807420, -0.966466115560227210, -0.966453274643481630, -0.966440431310602980, -0.966427585561623110, -0.966414737396574460, -0.966401886815488780, +-0.966389033818398580, -0.966376178405335630, -0.966363320576332230, -0.966350460331420690, -0.966337597670632880, -0.966324732594001090, -0.966311865101557420, -0.966298995193334180, +-0.966286122869363440, -0.966273248129677410, -0.966260370974308170, -0.966247491403288140, -0.966234609416649180, -0.966221725014423940, -0.966208838196644160, -0.966195948963342490, +-0.966183057314550790, -0.966170163250301580, -0.966157266770626850, -0.966144367875559020, -0.966131466565130160, -0.966118562839372810, -0.966105656698318940, -0.966092748142000860, +-0.966079837170451090, -0.966066923783701510, -0.966054007981784870, -0.966041089764733020, -0.966028169132578500, -0.966015246085353610, -0.966002320623090550, -0.965989392745821740, +-0.965976462453579380, -0.965963529746395880, -0.965950594624303660, -0.965937657087334810, -0.965924717135521860, -0.965911774768897110, -0.965898829987492990, -0.965885882791341800, +-0.965872933180475850, -0.965859981154927550, -0.965847026714729330, -0.965834069859913490, -0.965821110590512570, -0.965808148906558860, -0.965795184808084680, -0.965782218295122670, +-0.965769249367705030, -0.965756278025864280, -0.965743304269632840, -0.965730328099043130, -0.965717349514127580, -0.965704368514918700, -0.965691385101448920, -0.965678399273750650, +-0.965665411031856320, -0.965652420375798570, -0.965639427305609700, -0.965626431821322240, -0.965613433922968720, -0.965600433610581680, -0.965587430884193520, -0.965574425743836780, +-0.965561418189544000, -0.965548408221347580, -0.965535395839280270, -0.965522381043374400, -0.965509363833662590, -0.965496344210177380, -0.965483322172951300, -0.965470297722016870, +-0.965457270857406740, -0.965444241579153430, -0.965431209887289590, -0.965418175781847630, -0.965405139262860200, -0.965392100330359940, -0.965379058984379590, -0.965366015224951360, +-0.965352969052108320, -0.965339920465882680, -0.965326869466307300, -0.965313816053414710, -0.965300760227237650, -0.965287701987808670, -0.965274641335160390, -0.965261578269325570, +-0.965248512790336740, -0.965235444898226660, -0.965222374593027950, -0.965209301874773380, -0.965196226743495480, -0.965183149199227100, -0.965170069242000770, -0.965156986871849250, +-0.965143902088805290, -0.965130814892901650, -0.965117725284170840, -0.965104633262645840, -0.965091538828359070, -0.965078441981343630, -0.965065342721632020, -0.965052241049257020, +-0.965039136964251590, -0.965026030466648140, -0.965012921556479660, -0.964999810233778900, -0.964986696498578600, -0.964973580350911520, -0.964960461790810630, -0.964947340818308460, +-0.964934217433437990, -0.964921091636231850, -0.964907963426723140, -0.964894832804944480, -0.964881699770928750, -0.964868564324708690, -0.964855426466317280, -0.964842286195787270, +-0.964829143513151630, -0.964815998418443010, -0.964802850911694490, -0.964789700992938810, -0.964776548662208850, -0.964763393919537580, -0.964750236764957750, -0.964737077198502440, +-0.964723915220204290, -0.964710750830096500, -0.964697584028211710, -0.964684414814583110, -0.964671243189243350, -0.964658069152225520, -0.964644892703562460, -0.964631713843287280, +-0.964618532571432710, -0.964605348888031950, -0.964592162793117660, -0.964578974286723010, -0.964565783368880990, -0.964552590039624460, -0.964539394298986390, -0.964526196146999970, +-0.964512995583697960, -0.964499792609113450, -0.964486587223279510, -0.964473379426229130, -0.964460169217995270, -0.964446956598611020, -0.964433741568109350, -0.964420524126523240, +-0.964407304273885990, -0.964394082010230360, -0.964380857335589540, -0.964367630249996610, -0.964354400753484660, -0.964341168846086560, -0.964327934527835720, -0.964314697798764890, +-0.964301458658907370, -0.964288217108296150, -0.964274973146964530, -0.964261726774945260, -0.964248477992271870, -0.964235226798977220, -0.964221973195094510, -0.964208717180656820, +-0.964195458755697340, -0.964182197920249280, -0.964168934674345720, -0.964155669018019750, -0.964142400951304660, -0.964129130474233540, -0.964115857586839600, -0.964102582289156130, +-0.964089304581216110, -0.964076024463052850, -0.964062741934699430, -0.964049456996189270, -0.964036169647555450, -0.964022879888831170, -0.964009587720049630, -0.963996293141244240, +-0.963982996152448090, -0.963969696753694370, -0.963956394945016500, -0.963943090726447680, -0.963929784098021100, -0.963916475059769960, -0.963903163611727790, -0.963889849753927550, +-0.963876533486402790, -0.963863214809186690, -0.963849893722312560, -0.963836570225813590, -0.963823244319723330, -0.963809916004074840, -0.963796585278901660, -0.963783252144236990, +-0.963769916600114240, -0.963756578646566610, -0.963743238283627510, -0.963729895511330370, -0.963716550329708490, -0.963703202738795280, -0.963689852738623950, -0.963676500329228140, +-0.963663145510640920, -0.963649788282895940, -0.963636428646026500, -0.963623066600065910, -0.963609702145047710, -0.963596335281005300, -0.963582966007972000, -0.963569594325981220, +-0.963556220235066490, -0.963542843735261330, -0.963529464826598850, -0.963516083509112890, -0.963502699782836650, -0.963489313647803660, -0.963475925104047450, -0.963462534151601320, +-0.963449140790498930, -0.963435745020773560, -0.963422346842458980, -0.963408946255588480, -0.963395543260195720, -0.963382137856313880, -0.963368730043976940, -0.963355319823217980, +-0.963341907194070870, -0.963328492156568910, -0.963315074710745730, -0.963301654856634770, -0.963288232594269880, -0.963274807923684250, -0.963261380844911640, -0.963247951357985580, +-0.963234519462939700, -0.963221085159807420, -0.963207648448622500, -0.963194209329418350, -0.963180767802228830, -0.963167323867087250, -0.963153877524027480, -0.963140428773082920, +-0.963126977614287340, -0.963113524047674360, -0.963100068073277530, -0.963086609691130580, -0.963073148901266940, -0.963059685703720580, -0.963046220098525030, -0.963032752085713820, +-0.963019281665320800, -0.963005808837379520, -0.962992333601923710, -0.962978855958987130, -0.962965375908603430, -0.962951893450806230, -0.962938408585629290, -0.962924921313106470, +-0.962911431633271200, -0.962897939546157320, -0.962884445051798710, -0.962870948150228890, -0.962857448841481720, -0.962843947125590960, -0.962830443002590350, -0.962816936472513650, +-0.962803427535394500, -0.962789916191266860, -0.962776402440164490, -0.962762886282121030, -0.962749367717170350, -0.962735846745346290, -0.962722323366682620, -0.962708797581213080, +-0.962695269388971540, -0.962681738789991860, -0.962668205784307900, -0.962654670371953290, -0.962641132552962130, -0.962627592327368050, -0.962614049695205030, -0.962600504656506930, +-0.962586957211307490, -0.962573407359640700, -0.962559855101540410, -0.962546300437040480, -0.962532743366174780, -0.962519183888977280, -0.962505622005481730, -0.962492057715722100, +-0.962478491019732370, -0.962464921917546510, -0.962451350409198270, -0.962437776494721620, -0.962424200174150530, -0.962410621447518990, -0.962397040314860840, -0.962383456776210180, +-0.962369870831600750, -0.962356282481066750, -0.962342691724642040, -0.962329098562360490, -0.962315502994256280, -0.962301905020363280, -0.962288304640715570, -0.962274701855347140, +-0.962261096664291830, -0.962247489067583840, -0.962233879065257150, -0.962220266657345720, -0.962206651843883650, -0.962193034624904910, -0.962179415000443680, -0.962165792970533840, +-0.962152168535209570, -0.962138541694504750, -0.962124912448453770, -0.962111280797090300, -0.962097646740448730, -0.962084010278563050, -0.962070371411467340, -0.962056730139195790, +-0.962043086461782270, -0.962029440379261080, -0.962015791891666310, -0.962002140999032030, -0.961988487701392450, -0.961974831998781640, -0.961961173891233700, -0.961947513378782930, +-0.961933850461463290, -0.961920185139308990, -0.961906517412354330, -0.961892847280633290, -0.961879174744180170, -0.961865499803029160, -0.961851822457214340, -0.961838142706769930, +-0.961824460551730210, -0.961810775992129270, -0.961797089028001540, -0.961783399659380980, -0.961769707886302010, -0.961756013708798600, -0.961742317126905280, -0.961728618140656130, +-0.961714916750085580, -0.961701212955227590, -0.961687506756116580, -0.961673798152786750, -0.961660087145272510, -0.961646373733608060, -0.961632657917827700, -0.961618939697965640, +-0.961605219074056270, -0.961591496046133810, -0.961577770614232550, -0.961564042778386920, -0.961550312538631210, -0.961536579894999740, -0.961522844847526810, -0.961509107396246730, +-0.961495367541193910, -0.961481625282402660, -0.961467880619907290, -0.961454133553742320, -0.961440384083941950, -0.961426632210540700, -0.961412877933572770, -0.961399121253072700, +-0.961385362169074780, -0.961371600681613540, -0.961357836790723290, -0.961344070496438440, -0.961330301798793310, -0.961316530697822520, -0.961302757193560400, -0.961288981286041340, +-0.961275202975299890, -0.961261422261370350, -0.961247639144287350, -0.961233853624085200, -0.961220065700798430, -0.961206275374461460, -0.961192482645108930, -0.961178687512775020, +-0.961164889977494500, -0.961151090039301660, -0.961137287698231260, -0.961123482954317490, -0.961109675807595100, -0.961095866258098400, -0.961082054305862240, -0.961068239950920720, +-0.961054423193308800, -0.961040604033060690, -0.961026782470211120, -0.961012958504794510, -0.960999132136845620, -0.960985303366398870, -0.960971472193488770, -0.960957638618150200, +-0.960943802640417340, -0.960929964260325060, -0.960916123477907780, -0.960902280293200350, -0.960888434706237080, -0.960874586717052840, -0.960860736325682030, -0.960846883532159410, +-0.960833028336519620, -0.960819170738797190, -0.960805310739026860, -0.960791448337243280, -0.960777583533481080, -0.960763716327774910, -0.960749846720159400, -0.960735974710669400, +-0.960722100299339350, -0.960708223486203990, -0.960694344271298300, -0.960680462654656560, -0.960666578636313770, -0.960652692216304450, -0.960638803394663450, -0.960624912171425430, +-0.960611018546625120, -0.960597122520297160, -0.960583224092476540, -0.960569323263197880, -0.960555420032495830, -0.960541514400405250, -0.960527606366960880, -0.960513695932197490, +-0.960499783096149920, -0.960485867858852820, -0.960471950220341150, -0.960458030180649460, -0.960444107739812810, -0.960430182897865860, -0.960416255654843450, -0.960402326010780350, +-0.960388393965711520, -0.960374459519671710, -0.960360522672695670, -0.960346583424818380, -0.960332641776074580, -0.960318697726499250, -0.960304751276127020, -0.960290802424993100, +-0.960276851173132110, -0.960262897520579030, -0.960248941467368610, -0.960234983013535940, -0.960221022159115760, -0.960207058904143040, -0.960193093248652540, -0.960179125192679560, +-0.960165154736258520, -0.960151181879424720, -0.960137206622213020, -0.960123228964658180, -0.960109248906795390, -0.960095266448659390, -0.960081281590285270, -0.960067294331707900, +-0.960053304672962350, -0.960039312614083480, -0.960025318155106390, -0.960011321296065920, -0.959997322036997280, -0.959983320377935210, -0.959969316318914910, -0.959955309859971240, +-0.959941301001139390, -0.959927289742454230, -0.959913276083950830, -0.959899260025664280, -0.959885241567629670, -0.959871220709881840, -0.959857197452455900, -0.959843171795387030, +-0.959829143738710310, -0.959815113282460720, -0.959801080426673230, -0.959787045171383140, -0.959773007516625310, -0.959758967462435160, -0.959744925008847450, -0.959730880155897470, +-0.959716832903620310, -0.959702783252051050, -0.959688731201224780, -0.959674676751176790, -0.959660619901941960, -0.959646560653555800, -0.959632499006052960, -0.959618434959469080, +-0.959604368513839010, -0.959590299669198070, -0.959576228425581430, -0.959562154783024090, -0.959548078741561560, -0.959534000301228600, -0.959519919462060830, -0.959505836224093130, +-0.959491750587360910, -0.959477662551899260, -0.959463572117743580, -0.959449479284928850, -0.959435384053490490, -0.959421286423463580, -0.959407186394883540, -0.959393083967785440, +-0.959378979142204710, -0.959364871918176540, -0.959350762295736240, -0.959336650274918880, -0.959322535855759990, -0.959308419038294780, -0.959294299822558430, -0.959280178208586460, +-0.959266054196413860, -0.959251927786076260, -0.959237798977608860, -0.959223667771046950, -0.959209534166425850, -0.959195398163780850, -0.959181259763147390, -0.959167118964560860, +-0.959152975768056470, -0.959138830173669740, -0.959124682181435760, -0.959110531791390160, -0.959096379003568260, -0.959082223818005450, -0.959068066234736950, -0.959053906253798380, +-0.959039743875224950, -0.959025579099052280, -0.959011411925315580, -0.958997242354050370, -0.958983070385292070, -0.958968896019076090, -0.958954719255437850, -0.958940540094412870, +-0.958926358536036470, -0.958912174580344170, -0.958897988227371600, -0.958883799477153850, -0.958869608329726670, -0.958855414785125480, -0.958841218843385800, -0.958827020504543050, +-0.958812819768632750, -0.958798616635690330, -0.958784411105751410, -0.958770203178851420, -0.958755992855026110, -0.958741780134310550, -0.958727565016740720, -0.958713347502351930, +-0.958699127591179700, -0.958684905283259780, -0.958670680578627590, -0.958656453477318650, -0.958642223979368490, -0.958627992084812970, -0.958613757793687290, -0.958599521106027310, +-0.958585282021868430, -0.958571040541246530, -0.958556796664196800, -0.958542550390755310, -0.958528301720957270, -0.958514050654838520, -0.958499797192434720, -0.958485541333781390, +-0.958471283078914160, -0.958457022427868790, -0.958442759380680690, -0.958428493937385830, -0.958414226098019740, -0.958399955862618060, -0.958385683231216530, -0.958371408203850810, +-0.958357130780556510, -0.958342850961369400, -0.958328568746325220, -0.958314284135459490, -0.958299997128808200, -0.958285707726406750, -0.958271415928291130, -0.958257121734496950, +-0.958242825145059980, -0.958228526160015970, -0.958214224779400660, -0.958199921003249690, -0.958185614831599030, -0.958171306264484210, -0.958156995301941210, -0.958142681944005760, +-0.958128366190713510, -0.958114048042100430, -0.958099727498202160, -0.958085404559054670, -0.958071079224693480, -0.958056751495154790, -0.958042421370474130, -0.958028088850687460, +-0.958013753935830550, -0.957999416625939240, -0.957985076921049390, -0.957970734821196880, -0.957956390326417440, -0.957942043436747160, -0.957927694152221680, -0.957913342472876960, +-0.957898988398748870, -0.957884631929873390, -0.957870273066286250, -0.957855911808023430, -0.957841548155121010, -0.957827182107614530, -0.957812813665540160, -0.957798442828933670, +-0.957784069597831240, -0.957769693972268520, -0.957755315952281580, -0.957740935537906290, -0.957726552729178840, -0.957712167526134860, -0.957697779928810560, -0.957683389937241670, +-0.957668997551464400, -0.957654602771514600, -0.957640205597428350, -0.957625806029241520, -0.957611404066990300, -0.957596999710710440, -0.957582592960438130, -0.957568183816209340, +-0.957553772278060040, -0.957539358346026330, -0.957524942020144270, -0.957510523300449830, -0.957496102186979000, -0.957481678679768080, -0.957467252778852810, -0.957452824484269490, +-0.957438393796054110, -0.957423960714242740, -0.957409525238871460, -0.957395087369976470, -0.957380647107593630, -0.957366204451759240, -0.957351759402509270, -0.957337311959879920, +-0.957322862123907270, -0.957308409894627510, -0.957293955272076720, -0.957279498256290990, -0.957265038847306630, -0.957250577045159590, -0.957236112849886190, -0.957221646261522400, +-0.957207177280104520, -0.957192705905668740, -0.957178232138251150, -0.957163755977888050, -0.957149277424615530, -0.957134796478469770, -0.957120313139487090, -0.957105827407703560, +-0.957091339283155480, -0.957076848765879060, -0.957062355855910600, -0.957047860553286060, -0.957033362858042080, -0.957018862770214530, -0.957004360289839930, -0.956989855416954360, +-0.956975348151594130, -0.956960838493795650, -0.956946326443594900, -0.956931812001028500, -0.956917295166132440, -0.956902775938943240, -0.956888254319497090, -0.956873730307830290, +-0.956859203903979160, -0.956844675107980100, -0.956830143919869200, -0.956815610339683100, -0.956801074367457760, -0.956786536003229940, -0.956771995247035710, -0.956757452098911500, +-0.956742906558893600, -0.956728358627018550, -0.956713808303322530, -0.956699255587841970, -0.956684700480613270, -0.956670142981672860, -0.956655583091057030, -0.956641020808802310, +-0.956626456134945010, -0.956611889069521550, -0.956597319612568440, -0.956582747764122000, -0.956568173524218750, -0.956553596892894880, -0.956539017870187250, -0.956524436456131940, +-0.956509852650765600, -0.956495266454124530, -0.956480677866245350, -0.956466086887164500, -0.956451493516918380, -0.956436897755543520, -0.956422299603076560, -0.956407699059553700, +-0.956393096125011550, -0.956378490799486890, -0.956363883083015790, -0.956349272975635100, -0.956334660477381140, -0.956320045588290650, -0.956305428308399930, -0.956290808637745740, +-0.956276186576364370, -0.956261562124292700, -0.956246935281567010, -0.956232306048224070, -0.956217674424300280, -0.956203040409832390, -0.956188404004856830, -0.956173765209410330, +-0.956159124023529320, -0.956144480447250640, -0.956129834480610620, -0.956115186123646100, -0.956100535376393610, -0.956085882238889680, -0.956071226711171170, -0.956056568793274500, +-0.956041908485236510, -0.956027245787093640, -0.956012580698882840, -0.955997913220640430, -0.955983243352403260, -0.955968571094207960, -0.955953896446091300, -0.955939219408089790, +-0.955924539980240410, -0.955909858162579450, -0.955895173955144010, -0.955880487357970600, -0.955865798371095980, -0.955851106994556890, -0.955836413228389970, -0.955821717072631970, +-0.955807018527319750, -0.955792317592490060, -0.955777614268179420, -0.955762908554424920, -0.955748200451262960, -0.955733489958730640, -0.955718777076864590, -0.955704061805701550, +-0.955689344145278400, -0.955674624095631860, -0.955659901656798700, -0.955645176828815890, -0.955630449611720060, -0.955615720005548170, -0.955600988010336880, -0.955586253626123260, +-0.955571516852943840, -0.955556777690835800, -0.955542036139835680, -0.955527292199980560, -0.955512545871307180, -0.955497797153852410, -0.955483046047653220, -0.955468292552746350, +-0.955453536669168770, -0.955438778396957340, -0.955424017736148930, -0.955409254686780510, -0.955394489248889030, -0.955379721422511260, -0.955364951207684170, -0.955350178604444710, +-0.955335403612829760, -0.955320626232876390, -0.955305846464621470, -0.955291064308101840, -0.955276279763354610, -0.955261492830416610, -0.955246703509324950, -0.955231911800116460, +-0.955217117702828240, -0.955202321217497260, -0.955187522344160490, -0.955172721082854890, -0.955157917433617440, -0.955143111396485220, -0.955128302971495200, -0.955113492158684460, +-0.955098678958089970, -0.955083863369748820, -0.955069045393697970, -0.955054225029974500, -0.955039402278615500, -0.955024577139658050, -0.955009749613139000, -0.954994919699095780, +-0.954980087397565120, -0.954965252708584230, -0.954950415632190300, -0.954935576168420290, -0.954920734317311280, -0.954905890078900480, -0.954891043453224950, -0.954876194440321790, +-0.954861343040228290, -0.954846489252981320, -0.954831633078618070, -0.954816774517175840, -0.954801913568691600, -0.954787050233202650, -0.954772184510746080, -0.954757316401358970, +-0.954742445905078620, -0.954727573021942110, -0.954712697751986750, -0.954697820095249510, -0.954682940051767790, -0.954668057621578800, -0.954653172804719620, -0.954638285601227430, +-0.954623396011139550, -0.954608504034493270, -0.954593609671325670, -0.954578712921674070, -0.954563813785575640, -0.954548912263067710, -0.954534008354187450, -0.954519102058972280, +-0.954504193377459290, -0.954489282309685770, -0.954474368855689040, -0.954459453015506500, -0.954444534789175240, -0.954429614176732780, -0.954414691178216090, -0.954399765793662810, +-0.954384838023110030, -0.954369907866595260, -0.954354975324155590, -0.954340040395828540, -0.954325103081651420, -0.954310163381661410, -0.954295221295896170, -0.954280276824392760, +-0.954265329967188710, -0.954250380724321330, -0.954235429095828040, -0.954220475081746120, -0.954205518682113010, -0.954190559896966110, -0.954175598726342940, -0.954160635170280600, +-0.954145669228816720, -0.954130700901988700, -0.954115730189833870, -0.954100757092389730, -0.954085781609693820, -0.954070803741783320, -0.954055823488695890, -0.954040840850468810, +-0.954025855827139610, -0.954010868418745830, -0.953995878625324870, -0.953980886446914260, -0.953965891883551410, -0.953950894935273850, -0.953935895602119000, -0.953920893884124490, +-0.953905889781327620, -0.953890883293766150, -0.953875874421477370, -0.953860863164499030, -0.953845849522868440, -0.953830833496623230, -0.953815815085800930, -0.953800794290439180, +-0.953785771110575390, -0.953770745546247190, -0.953755717597492000, -0.953740687264347690, -0.953725654546851540, -0.953710619445041320, -0.953695581958954540, -0.953680542088628850, +-0.953665499834101760, -0.953650455195410810, -0.953635408172593960, -0.953620358765688400, -0.953605306974732000, -0.953590252799762280, -0.953575196240817100, -0.953560137297933760, +-0.953545075971150120, -0.953530012260503820, -0.953514946166032500, -0.953499877687773780, -0.953484806825765420, -0.953469733580044940, -0.953454657950650210, -0.953439579937618740, +-0.953424499540988510, -0.953409416760796820, -0.953394331597081650, -0.953379244049880730, -0.953364154119231590, -0.953349061805172200, -0.953333967107740100, -0.953318870026973020, +-0.953303770562908830, -0.953288668715585260, -0.953273564485039860, -0.953258457871310690, -0.953243348874435290, -0.953228237494451620, -0.953213123731397220, -0.953198007585310150, +-0.953182889056227940, -0.953167768144188690, -0.953152644849229790, -0.953137519171389450, -0.953122391110705180, -0.953107260667214960, -0.953092127840956760, -0.953076992631967990, +-0.953061855040286950, -0.953046715065951180, -0.953031572708998630, -0.953016427969467060, -0.953001280847394550, -0.952986131342818730, -0.952970979455777690, -0.952955825186309170, +-0.952940668534451140, -0.952925509500241350, -0.952910348083717770, -0.952895184284918370, -0.952880018103881010, -0.952864849540643540, -0.952849678595244050, -0.952834505267720290, +-0.952819329558110330, -0.952804151466452030, -0.952788970992783260, -0.952773788137142200, -0.952758602899566490, -0.952743415280094430, -0.952728225278763770, -0.952713032895612600, +-0.952697838130678760, -0.952682640984000460, -0.952667441455615440, -0.952652239545561890, -0.952637035253877660, -0.952621828580600960, -0.952606619525769640, -0.952591408089421780, +-0.952576194271595340, -0.952560978072328420, -0.952545759491659090, -0.952530538529625330, -0.952515315186265200, -0.952500089461616790, -0.952484861355718300, -0.952469630868607480, +-0.952454398000322720, -0.952439162750901900, -0.952423925120383210, -0.952408685108804610, -0.952393442716204410, -0.952378197942620460, -0.952362950788091190, -0.952347701252654440, +-0.952332449336348530, -0.952317195039211310, -0.952301938361281300, -0.952286679302596360, -0.952271417863194690, -0.952256154043114480, -0.952240887842394020, -0.952225619261071190, +-0.952210348299184380, -0.952195074956771690, -0.952179799233871300, -0.952164521130521410, -0.952149240646760210, -0.952133957782625990, -0.952118672538156740, -0.952103384913390860, +-0.952088094908366540, -0.952072802523121990, -0.952057507757695380, -0.952042210612125130, -0.952026911086449210, -0.952011609180706150, -0.951996304894933920, -0.951980998229171040, +-0.951965689183455590, -0.951950377757825980, -0.951935063952320410, -0.951919747766977190, -0.951904429201834600, -0.951889108256930850, -0.951873784932304460, -0.951858459227993500, +-0.951843131144036400, -0.951827800680471460, -0.951812467837337190, -0.951797132614671580, -0.951781795012513250, -0.951766455030900290, -0.951751112669871340, -0.951735767929464460, +-0.951720420809718300, -0.951705071310671060, -0.951689719432361140, -0.951674365174826840, -0.951659008538106700, -0.951643649522239010, -0.951628288127262190, -0.951612924353214650, +-0.951597558200134920, -0.951582189668061070, -0.951566818757031860, -0.951551445467085700, -0.951536069798260780, -0.951520691750595840, -0.951505311324128970, -0.951489928518899020, +-0.951474543334944080, -0.951459155772302890, -0.951443765831013750, -0.951428373511115310, -0.951412978812645750, -0.951397581735643930, -0.951382182280148040, -0.951366780446196820, +-0.951351376233828480, -0.951335969643081870, -0.951320560673995170, -0.951305149326607150, -0.951289735600956200, -0.951274319497081080, -0.951258901015019980, -0.951243480154811640, +-0.951228056916494700, -0.951212631300107580, -0.951197203305688910, -0.951181772933277100, -0.951166340182911020, -0.951150905054628960, -0.951135467548469780, -0.951120027664471790, +-0.951104585402673840, -0.951089140763114350, -0.951073693745832060, -0.951058244350865500, -0.951042792578253420, -0.951027338428034220, -0.951011881900246770, -0.950996422994929590, +-0.950980961712121320, -0.950965498051860700, -0.950950032014186260, -0.950934563599136860, -0.950919092806750910, -0.950903619637067380, -0.950888144090124680, -0.950872666165961670, +-0.950857185864616980, -0.950841703186129370, -0.950826218130537360, -0.950810730697880020, -0.950795240888195670, -0.950779748701523380, -0.950764254137901550, -0.950748757197369180, +-0.950733257879964880, -0.950717756185727510, -0.950702252114695720, -0.950686745666908250, -0.950671236842403950, -0.950655725641221580, -0.950640212063399880, -0.950624696108977600, +-0.950609177777993590, -0.950593657070486710, -0.950578133986495600, -0.950562608526059230, -0.950547080689216340, -0.950531550476005680, -0.950516017886466220, -0.950500482920636600, +-0.950484945578555900, -0.950469405860262740, -0.950453863765796210, -0.950438319295194840, -0.950422772448497820, -0.950407223225743780, -0.950391671626971690, -0.950376117652220410, +-0.950360561301528910, -0.950345002574935930, -0.950329441472480440, -0.950313877994201420, -0.950298312140137710, -0.950282743910328190, -0.950267173304811810, -0.950251600323627540, +-0.950236024966814140, -0.950220447234410790, -0.950204867126456240, -0.950189284642989570, -0.950173699784049750, -0.950158112549675640, -0.950142522939906200, -0.950126930954780510, +-0.950111336594337440, -0.950095739858616060, -0.950080140747655340, -0.950064539261494260, -0.950048935400171770, -0.950033329163727070, -0.950017720552198910, -0.950002109565626470, +-0.949986496204048850, -0.949970880467505000, -0.949955262356033890, -0.949939641869674610, -0.949924019008466240, -0.949908393772447850, -0.949892766161658410, -0.949877136176137120, +-0.949861503815922940, -0.949845869081055060, -0.949830231971572460, -0.949814592487514320, -0.949798950628919720, -0.949783306395827640, -0.949767659788277370, -0.949752010806307890, +-0.949736359449958490, -0.949720705719268140, -0.949705049614275930, -0.949689391135021270, -0.949673730281543000, -0.949658067053880450, -0.949642401452072680, -0.949626733476159000, +-0.949611063126178490, -0.949595390402170230, -0.949579715304173510, -0.949564037832227650, -0.949548357986371490, -0.949532675766644570, -0.949516991173085860, -0.949501304205734860, +-0.949485614864630350, -0.949469923149812050, -0.949454229061318710, -0.949438532599189980, -0.949422833763464810, -0.949407132554182630, -0.949391428971382510, -0.949375723015103870, +-0.949360014685386000, -0.949344303982267990, -0.949328590905789360, -0.949312875455989080, -0.949297157632906670, -0.949281437436581440, -0.949265714867052580, -0.949249989924359380, +-0.949234262608541270, -0.949218532919637430, -0.949202800857687380, -0.949187066422730210, -0.949171329614805440, -0.949155590433952260, -0.949139848880210190, -0.949124104953618430, +-0.949108358654216500, -0.949092609982043590, -0.949076858937139220, -0.949061105519542700, -0.949045349729293330, -0.949029591566430740, -0.949013831030994020, -0.948998068123022790, +-0.948982302842556360, -0.948966535189634250, -0.948950765164295770, -0.948934992766580330, -0.948919217996527450, -0.948903440854176550, -0.948887661339566920, -0.948871879452738320, +-0.948856095193729930, -0.948840308562581280, -0.948824519559331890, -0.948808728184021180, -0.948792934436688660, -0.948777138317373870, -0.948761339826116100, -0.948745538962954990, +-0.948729735727930180, -0.948713930121080850, -0.948698122142446860, -0.948682311792067520, -0.948666499069982350, -0.948650683976230980, -0.948634866510852940, -0.948619046673887630, +-0.948603224465374820, -0.948587399885353790, -0.948571572933864400, -0.948555743610945970, -0.948539911916638330, -0.948524077850980700, -0.948508241414013130, -0.948492402605774720, +-0.948476561426305430, -0.948460717875644680, -0.948444871953832200, -0.948429023660907530, -0.948413172996910190, -0.948397319961880040, -0.948381464555856590, -0.948365606778879490, +-0.948349746630988260, -0.948333884112222750, -0.948318019222622490, -0.948302151962227340, -0.948286282331076590, -0.948270410329210220, -0.948254535956667870, -0.948238659213489150, +-0.948222780099713720, -0.948206898615381430, -0.948191014760531800, -0.948175128535204800, -0.948159239939439850, -0.948143348973276790, -0.948127455636755380, -0.948111559929915360, +-0.948095661852796370, -0.948079761405438260, -0.948063858587880780, -0.948047953400163680, -0.948032045842326700, -0.948016135914409470, -0.948000223616452090, -0.947984308948493950, +-0.947968391910575250, -0.947952472502735400, -0.947936550725014480, -0.947920626577452020, -0.947904700060088200, -0.947888771172962440, -0.947872839916114930, -0.947856906289585190, +-0.947840970293413300, -0.947825031927638890, -0.947809091192301940, -0.947793148087442190, -0.947777202613099610, -0.947761254769314170, -0.947745304556125380, -0.947729351973573440, +-0.947713397021698100, -0.947697439700539320, -0.947681480010136860, -0.947665517950530780, -0.947649553521760830, -0.947633586723866990, -0.947617617556889220, -0.947601646020867490, +-0.947585672115841550, -0.947569695841851470, -0.947553717198937000, -0.947537736187138440, -0.947521752806495420, -0.947505767057048140, -0.947489778938836240, -0.947473788451900110, +-0.947457795596279410, -0.947441800372014090, -0.947425802779144450, -0.947409802817710260, -0.947393800487751570, -0.947377795789308360, -0.947361788722420720, -0.947345779287128490, +-0.947329767483471970, -0.947313753311490920, -0.947297736771225530, -0.947281717862715760, -0.947265696586001680, -0.947249672941123390, -0.947233646928120950, -0.947217618547034350, +-0.947201587797903750, -0.947185554680769150, -0.947169519195670720, -0.947153481342648320, -0.947137441121742360, -0.947121398532992820, -0.947105353576439660, -0.947089306252123290, +-0.947073256560083450, -0.947057204500360680, -0.947041150072994720, -0.947025093278025980, -0.947009034115494530, -0.946992972585440460, -0.946976908687903850, -0.946960842422925110, +-0.946944773790544200, -0.946928702790801440, -0.946912629423736880, -0.946896553689390740, -0.946880475587803190, -0.946864395119014430, -0.946848312283064760, -0.946832227079994260, +-0.946816139509843220, -0.946800049572651740, -0.946783957268460320, -0.946767862597308830, -0.946751765559237790, -0.946735666154287280, -0.946719564382497600, -0.946703460243909060, +-0.946687353738561830, -0.946671244866496230, -0.946655133627752550, -0.946639020022370990, -0.946622904050391960, -0.946606785711855530, -0.946590665006802220, -0.946574541935272240, +-0.946558416497305990, -0.946542288692943550, -0.946526158522225550, -0.946510025985191960, -0.946493891081883420, -0.946477753812340120, -0.946461614176602460, -0.946445472174710760, +-0.946429327806705410, -0.946413181072626730, -0.946397031972515010, -0.946380880506410780, -0.946364726674354340, -0.946348570476386100, -0.946332411912546470, -0.946316250982875750, +-0.946300087687414360, -0.946283922026202930, -0.946267753999281540, -0.946251583606690820, -0.946235410848471070, -0.946219235724662930, -0.946203058235306590, -0.946186878380442580, +-0.946170696160111400, -0.946154511574353490, -0.946138324623209350, -0.946122135306719400, -0.946105943624924060, -0.946089749577863850, -0.946073553165579400, -0.946057354388110890, +-0.946041153245499090, -0.946024949737784390, -0.946008743865007330, -0.945992535627208310, -0.945976325024428080, -0.945960112056706940, -0.945943896724085630, -0.945927679026604570, +-0.945911458964304290, -0.945895236537225290, -0.945879011745408230, -0.945862784588893610, -0.945846555067722080, -0.945830323181934160, -0.945814088931570480, -0.945797852316671570, +-0.945781613337277950, -0.945765371993430360, -0.945749128285169330, -0.945732882212535490, -0.945716633775569360, -0.945700382974311690, -0.945684129808803120, -0.945667874279084160, +-0.945651616385195570, -0.945635356127177970, -0.945619093505071890, -0.945602828518918080, -0.945586561168757280, -0.945570291454630010, -0.945554019376577020, -0.945537744934639050, +-0.945521468128856620, -0.945505188959270490, -0.945488907425921510, -0.945472623528850200, -0.945456337268097300, -0.945440048643703570, -0.945423757655709850, -0.945407464304156560, +-0.945391168589084670, -0.945374870510534930, -0.945358570068547950, -0.945342267263164500, -0.945325962094425540, -0.945309654562371480, -0.945293344667043400, -0.945277032408481930, +-0.945260717786727930, -0.945244400801822040, -0.945228081453805210, -0.945211759742718090, -0.945195435668601760, -0.945179109231496620, -0.945162780431443860, -0.945146449268484120, +-0.945130115742658150, -0.945113779854007020, -0.945097441602571360, -0.945081100988392260, -0.945064758011510240, -0.945048412671966380, -0.945032064969801410, -0.945015714905056430, +-0.944999362477772050, -0.944983007687989370, -0.944966650535749020, -0.944950291021092180, -0.944933929144059490, -0.944917564904692140, -0.944901198303030650, -0.944884829339116330, +-0.944868458012989910, -0.944852084324692250, -0.944835708274264550, -0.944819329861747440, -0.944802949087182100, -0.944786565950609390, -0.944770180452070170, -0.944753792591605520, +-0.944737402369256520, -0.944721009785063900, -0.944704614839068760, -0.944688217531312050, -0.944671817861834960, -0.944655415830678140, -0.944639011437882870, -0.944622604683490020, +-0.944606195567540770, -0.944589784090075880, -0.944573370251136630, -0.944556954050763900, -0.944540535488998860, -0.944524114565882480, -0.944507691281455730, -0.944491265635759800, +-0.944474837628835660, -0.944458407260724500, -0.944441974531467280, -0.944425539441105190, -0.944409101989679090, -0.944392662177230390, -0.944376220003799950, -0.944359775469429060, +-0.944343328574158590, -0.944326879318029940, -0.944310427701083980, -0.944293973723361990, -0.944277517384905060, -0.944261058685754380, -0.944244597625951030, -0.944228134205536200, +-0.944211668424551060, -0.944195200283036610, -0.944178729781034340, -0.944162256918585130, -0.944145781695730270, -0.944129304112511060, -0.944112824168968470, -0.944096341865143910, +-0.944079857201078450, -0.944063370176813410, -0.944046880792389850, -0.944030389047849080, -0.944013894943232510, -0.943997398478581000, -0.943980899653936170, -0.943964398469338880, +-0.943947894924830780, -0.943931389020452930, -0.943914880756246520, -0.943898370132252970, -0.943881857148513470, -0.943865341805069310, -0.943848824101961800, -0.943832304039232240, +-0.943815781616921920, -0.943799256835072150, -0.943782729693724230, -0.943766200192919570, -0.943749668332699240, -0.943733134113104890, -0.943716597534177580, -0.943700058595958960, +-0.943683517298489980, -0.943666973641812400, -0.943650427625967180, -0.943633879250996070, -0.943617328516940250, -0.943600775423841020, -0.943584219971739910, -0.943567662160678220, +-0.943551101990697360, -0.943534539461838740, -0.943517974574143880, -0.943501407327653970, -0.943484837722410540, -0.943468265758455100, -0.943451691435828970, -0.943435114754573530, +-0.943418535714730440, -0.943401954316340880, -0.943385370559446490, -0.943368784444088670, -0.943352195970308950, -0.943335605138148630, -0.943319011947649440, -0.943302416398852590, +-0.943285818491799710, -0.943269218226532310, -0.943252615603091930, -0.943236010621519960, -0.943219403281857940, -0.943202793584147380, -0.943186181528429920, -0.943169567114746980, +-0.943152950343140060, -0.943136331213650920, -0.943119709726320750, -0.943103085881191520, -0.943086459678304400, -0.943069831117701260, -0.943053200199423400, -0.943036566923512680, +-0.943019931290010490, -0.943003293298958490, -0.942986652950398190, -0.942970010244371330, -0.942953365180919430, -0.942936717760084140, -0.942920067981906970, -0.942903415846429670, +-0.942886761353693870, -0.942870104503741090, -0.942853445296613080, -0.942836783732351470, -0.942820119810997890, -0.942803453532593980, -0.942786784897181600, -0.942770113904802140, +-0.942753440555497370, -0.942736764849309020, -0.942720086786278830, -0.942703406366448230, -0.942686723589859280, -0.942670038456553510, -0.942653350966572660, -0.942636661119958360, +-0.942619968916752480, -0.942603274356996530, -0.942586577440732600, -0.942569878168002080, -0.942553176538846960, -0.942536472553308860, -0.942519766211429520, -0.942503057513250810, +-0.942486346458814460, -0.942469633048162340, -0.942452917281335960, -0.942436199158377400, -0.942419478679328290, -0.942402755844230500, -0.942386030653125870, -0.942369303106056160, +-0.942352573203063090, -0.942335840944188650, -0.942319106329474690, -0.942302369358962830, -0.942285630032695170, -0.942268888350713320, -0.942252144313059260, -0.942235397919774950, +-0.942218649170902030, -0.942201898066482580, -0.942185144606558330, -0.942168388791171150, -0.942151630620363110, -0.942134870094175960, -0.942118107212651660, -0.942101341975832060, +-0.942084574383759140, -0.942067804436474750, -0.942051032134020860, -0.942034257476439320, -0.942017480463772320, -0.942000701096061380, -0.941983919373348910, -0.941967135295676440, +-0.941950348863086370, -0.941933560075620240, -0.941916768933320330, -0.941899975436228390, -0.941883179584386500, -0.941866381377836740, -0.941849580816620960, -0.941832777900781350, +-0.941815972630359650, -0.941799165005398060, -0.941782355025938540, -0.941765542692023280, -0.941748728003694020, -0.941731910960993070, -0.941715091563962160, -0.941698269812643710, +-0.941681445707079460, -0.941664619247311600, -0.941647790433382200, -0.941630959265333360, -0.941614125743207130, -0.941597289867045610, -0.941580451636890750, -0.941563611052784850, +-0.941546768114769890, -0.941529922822888050, -0.941513075177181300, -0.941496225177691940, -0.941479372824462040, -0.941462518117533680, -0.941445661056949050, -0.941428801642750220, +-0.941411939874979400, -0.941395075753678760, -0.941378209278890490, -0.941361340450656560, -0.941344469269019380, -0.941327595734020920, -0.941310719845703580, -0.941293841604109450, +-0.941276961009280710, -0.941260078061259440, -0.941243192760088050, -0.941226305105808740, -0.941209415098463680, -0.941192522738094950, -0.941175628024744970, -0.941158730958455920, +-0.941141831539270000, -0.941124929767229610, -0.941108025642376830, -0.941091119164754080, -0.941074210334403420, -0.941057299151367270, -0.941040385615687810, -0.941023469727407580, +-0.941006551486568420, -0.940989630893213080, -0.940972707947383520, -0.940955782649122390, -0.940938854998471630, -0.940921924995473780, -0.940904992640171020, -0.940888057932605990, +-0.940871120872820650, -0.940854181460857640, -0.940837239696759030, -0.940820295580567350, -0.940803349112324990, -0.940786400292074170, -0.940769449119857490, -0.940752495595717050, +-0.940735539719695480, -0.940718581491834960, -0.940701620912178130, -0.940684657980767060, -0.940667692697644500, -0.940650725062852630, -0.940633755076434100, -0.940616782738430970, +-0.940599808048885990, -0.940582831007841460, -0.940565851615339900, -0.940548869871423610, -0.940531885776135220, -0.940514899329517150, -0.940497910531611800, -0.940480919382461590, +-0.940463925882109140, -0.940446930030596980, -0.940429931827967300, -0.940412931274262950, -0.940395928369526240, -0.940378923113799670, -0.940361915507125780, -0.940344905549547190, +-0.940327893241106220, -0.940310878581845590, -0.940293861571807720, -0.940276842211035360, -0.940259820499570690, -0.940242796437456560, -0.940225770024735400, -0.940208741261449820, +-0.940191710147642470, -0.940174676683355750, -0.940157640868632290, -0.940140602703514850, -0.940123562188045820, -0.940106519322267960, -0.940089474106223790, -0.940072426539955820, +-0.940055376623507020, -0.940038324356919590, -0.940021269740236360, -0.940004212773499990, -0.939987153456753100, -0.939970091790038320, -0.939953027773398290, -0.939935961406875740, +-0.939918892690513320, -0.939901821624353540, -0.939884748208439260, -0.939867672442813110, -0.939850594327517830, -0.939833513862595950, -0.939816431048090430, -0.939799345884043790, +-0.939782258370498670, -0.939765168507498030, -0.939748076295084390, -0.939730981733300720, -0.939713884822189430, -0.939696785561793480, -0.939679683952155510, -0.939662579993318480, +-0.939645473685324810, -0.939628365028217560, -0.939611254022039380, -0.939594140666833110, -0.939577024962641390, -0.939559906909507300, -0.939542786507473250, -0.939525663756582310, +-0.939508538656877220, -0.939491411208400740, -0.939474281411195710, -0.939457149265304990, -0.939440014770771550, -0.939422877927637900, -0.939405738735947130, -0.939388597195741970, +-0.939371453307065400, -0.939354307069960040, -0.939337158484469080, -0.939320007550635160, -0.939302854268501240, -0.939285698638110070, -0.939268540659504820, -0.939251380332728150, +-0.939234217657823000, -0.939217052634832350, -0.939199885263799050, -0.939182715544765960, -0.939165543477776250, -0.939148369062872580, -0.939131192300098010, -0.939114013189495390, +-0.939096831731107810, -0.939079647924978110, -0.939062461771149270, -0.939045273269664360, -0.939028082420566230, -0.939010889223897970, -0.938993693679702310, -0.938976495788022560, +-0.938959295548901560, -0.938942092962382290, -0.938924888028507710, -0.938907680747321120, -0.938890471118865140, -0.938873259143183090, -0.938856044820317810, -0.938838828150312500, +-0.938821609133210000, -0.938804387769053620, -0.938787164057886090, -0.938769937999750840, -0.938752709594690590, -0.938735478842748660, -0.938718245743968010, -0.938701010298391810, +-0.938683772506063050, -0.938666532367024800, -0.938649289881320240, -0.938632045048992450, -0.938614797870084620, -0.938597548344639710, -0.938580296472701030, -0.938563042254311530, +-0.938545785689514410, -0.938528526778352860, -0.938511265520870050, -0.938494001917108970, -0.938476735967112900, -0.938459467670925030, -0.938442197028588550, -0.938424924040146440, +-0.938407648705642080, -0.938390371025118690, -0.938373090998619210, -0.938355808626187170, -0.938338523907865430, -0.938321236843697500, -0.938303947433726470, -0.938286655677995630, +-0.938269361576547940, -0.938252065129427050, -0.938234766336675910, -0.938217465198337930, -0.938200161714456190, -0.938182855885074110, -0.938165547710234860, -0.938148237189981750, +-0.938130924324358070, -0.938113609113407130, -0.938096291557172000, -0.938078971655696310, -0.938061649409023040, -0.938044324817195680, -0.938026997880257670, -0.938009668598251970, +-0.937992336971222200, -0.937975002999211550, -0.937957666682263440, -0.937940328020421150, -0.937922987013728000, -0.937905643662227400, -0.937888297965962740, -0.937870949924977330, +-0.937853599539314460, -0.937836246809017670, -0.937818891734130240, -0.937801534314695480, -0.937784174550757130, -0.937766812442358160, -0.937749447989542180, -0.937732081192352520, +-0.937714712050832790, -0.937697340565026180, -0.937679966734976220, -0.937662590560726540, -0.937645212042320100, -0.937627831179800860, -0.937610447973211910, -0.937593062422596880, +-0.937575674527999170, -0.937558284289462310, -0.937540891707029700, -0.937523496780744870, -0.937506099510651340, -0.937488699896792620, -0.937471297939212020, -0.937453893637953170, +-0.937436486993059590, -0.937419078004574910, -0.937401666672542430, -0.937384252997005900, -0.937366836978008600, -0.937349418615594290, -0.937331997909806370, -0.937314574860688480, +-0.937297149468284240, -0.937279721732636960, -0.937262291653790490, -0.937244859231788240, -0.937227424466673950, -0.937209987358491040, -0.937192547907283120, -0.937175106113093850, +-0.937157661975966840, -0.937140215495945620, -0.937122766673073930, -0.937105315507395290, -0.937087861998953440, -0.937070406147791800, -0.937052947953954220, -0.937035487417484210, +-0.937018024538425530, -0.937000559316821800, -0.936983091752716660, -0.936965621846153840, -0.936948149597176870, -0.936930675005829610, -0.936913198072155560, -0.936895718796198600, +-0.936878237178002340, -0.936860753217610530, -0.936843266915066700, -0.936825778270414800, -0.936808287283698470, -0.936790793954961340, -0.936773298284247270, -0.936755800271599990, +-0.936738299917063140, -0.936720797220680690, -0.936703292182496040, -0.936685784802553380, -0.936668275080896010, -0.936650763017568110, -0.936633248612613320, -0.936615731866075270, +-0.936598212777998040, -0.936580691348425140, -0.936563167577400660, -0.936545641464968210, -0.936528113011171670, -0.936510582216054770, -0.936493049079661470, -0.936475513602035510, +-0.936457975783220880, -0.936440435623261180, -0.936422893122200510, -0.936405348280082480, -0.936387801096951190, -0.936370251572850250, -0.936352699707823870, -0.936335145501915660, +-0.936317588955169590, -0.936300030067629520, -0.936282468839339300, -0.936264905270343010, -0.936247339360684490, -0.936229771110407620, -0.936212200519556230, -0.936194627588174400, +-0.936177052316305990, -0.936159474703994960, -0.936141894751285180, -0.936124312458220810, -0.936106727824845500, -0.936089140851203430, -0.936071551537338560, -0.936053959883294760, +-0.936036365889115980, -0.936018769554846420, -0.936001170880529920, -0.935983569866210450, -0.935965966511932090, -0.935948360817738690, -0.935930752783674550, -0.935913142409783520, +-0.935895529696109560, -0.935877914642696760, -0.935860297249589300, -0.935842677516830920, -0.935825055444466040, -0.935807431032538380, -0.935789804281092150, -0.935772175190171420, +-0.935754543759820370, -0.935736909990082850, -0.935719273881003070, -0.935701635432625080, -0.935683994644993080, -0.935666351518151030, -0.935648706052143120, -0.935631058247013430, +-0.935613408102806130, -0.935595755619565210, -0.935578100797334940, -0.935560443636159530, -0.935542784136082940, -0.935525122297149460, -0.935507458119403060, -0.935489791602888030, +-0.935472122747648570, -0.935454451553728750, -0.935436778021172870, -0.935419102150024990, -0.935401423940329320, -0.935383743392130260, -0.935366060505471660, -0.935348375280398050, +-0.935330687716953380, -0.935312997815182070, -0.935295305575128190, -0.935277610996836150, -0.935259914080350030, -0.935242214825714010, -0.935224513232972620, -0.935206809302169930, +-0.935189103033350120, -0.935171394426557610, -0.935153683481836700, -0.935135970199231450, -0.935118254578786390, -0.935100536620545600, -0.935082816324553480, -0.935065093690854330, +-0.935047368719492460, -0.935029641410512150, -0.935011911763957810, -0.934994179779873540, -0.934976445458303940, -0.934958708799293210, -0.934940969802885770, -0.934923228469125790, +-0.934905484798057800, -0.934887738789726090, -0.934869990444174960, -0.934852239761448930, -0.934834486741592310, -0.934816731384649380, -0.934798973690664670, -0.934781213659682590, +-0.934763451291747430, -0.934745686586903710, -0.934727919545195630, -0.934710150166667920, -0.934692378451364660, -0.934674604399330590, -0.934656828010610010, -0.934639049285247330, +-0.934621268223286950, -0.934603484824773510, -0.934585699089751310, -0.934567911018264860, -0.934550120610358580, -0.934532327866077090, -0.934514532785464700, -0.934496735368566030, +-0.934478935615425610, -0.934461133526087620, -0.934443329100597020, -0.934425522338998000, -0.934407713241335200, -0.934389901807653130, -0.934372088037996210, -0.934354271932409160, +-0.934336453490936410, -0.934318632713622590, -0.934300809600512090, -0.934282984151649560, -0.934265156367079630, -0.934247326246846810, -0.934229493790995740, -0.934211658999570820, +-0.934193821872616790, -0.934175982410178190, -0.934158140612299630, -0.934140296479025740, -0.934122450010401060, -0.934104601206470320, -0.934086750067278040, -0.934068896592868960, +-0.934051040783287490, -0.934033182638578600, -0.934015322158786580, -0.933997459343956390, -0.933979594194132460, -0.933961726709359620, -0.933943856889682400, -0.933925984735145650, +-0.933908110245793790, -0.933890233421671770, -0.933872354262824110, -0.933854472769295560, -0.933836588941130860, -0.933818702778374750, -0.933800814281071760, -0.933782923449266720, +-0.933765030283004500, -0.933747134782329510, -0.933729236947286930, -0.933711336777921060, -0.933693434274276980, -0.933675529436399200, -0.933657622264332690, -0.933639712758122080, +-0.933621800917812220, -0.933603886743447850, -0.933585970235073730, -0.933568051392734690, -0.933550130216475590, -0.933532206706341070, -0.933514280862376090, -0.933496352684625390, +-0.933478422173133930, -0.933460489327946230, -0.933442554149107370, -0.933424616636662100, -0.933406676790655250, -0.933388734611131920, -0.933370790098136500, -0.933352843251714300, +-0.933334894071909840, -0.933316942558768290, -0.933298988712334300, -0.933281032532652820, -0.933263074019768820, -0.933245113173727160, -0.933227149994572570, -0.933209184482350240, +-0.933191216637104910, -0.933173246458881560, -0.933155273947725020, -0.933137299103680370, -0.933119321926792480, -0.933101342417106290, -0.933083360574666680, -0.933065376399518590, +-0.933047389891707210, -0.933029401051277300, -0.933011409878273910, -0.932993416372742020, -0.932975420534726600, -0.932957422364272480, -0.932939421861424980, -0.932921419026228830, +-0.932903413858729210, -0.932885406358970990, -0.932867396526999240, -0.932849384362859020, -0.932831369866595430, -0.932813353038253300, -0.932795333877877830, -0.932777312385513980, +-0.932759288561206930, -0.932741262405001550, -0.932723233916943010, -0.932705203097076500, -0.932687169945446980, -0.932669134462099540, -0.932651096647079130, -0.932633056500431160, +-0.932615014022200370, -0.932596969212432180, -0.932578922071171550, -0.932560872598463540, -0.932542820794353360, -0.932524766658886280, -0.932506710192107070, -0.932488651394061230, +-0.932470590264793620, -0.932452526804349760, -0.932434461012774380, -0.932416392890112910, -0.932398322436410520, -0.932380249651712290, -0.932362174536063400, -0.932344097089509050, +-0.932326017312094520, -0.932307935203864900, -0.932289850764865480, -0.932271763995141440, -0.932253674894737980, -0.932235583463700280, -0.932217489702073740, -0.932199393609903340, +-0.932181295187234580, -0.932163194434112440, -0.932145091350582430, -0.932126985936689630, -0.932108878192479450, -0.932090768117996960, -0.932072655713287680, -0.932054540978396680, +-0.932036423913369380, -0.932018304518250960, -0.932000182793086720, -0.931982058737922170, -0.931963932352802390, -0.931945803637772800, -0.931927672592878680, -0.931909539218165440, +-0.931891403513678270, -0.931873265479462700, -0.931855125115563900, -0.931836982422027280, -0.931818837398898150, -0.931800690046222010, -0.931782540364044180, -0.931764388352409930, +-0.931746234011364690, -0.931728077340953980, -0.931709918341222960, -0.931691757012217180, -0.931673593353981920, -0.931655427366562820, -0.931637259050005050, -0.931619088404354150, +-0.931600915429655620, -0.931582740125954770, -0.931564562493297000, -0.931546382531727830, -0.931528200241292790, -0.931510015622037170, -0.931491828674006590, -0.931473639397246370, +-0.931455447791802120, -0.931437253857719140, -0.931419057595043180, -0.931400859003819410, -0.931382658084093600, -0.931364454835911130, -0.931346249259317530, -0.931328041354358200, +-0.931309831121078900, -0.931291618559524910, -0.931273403669741980, -0.931255186451775520, -0.931236966905671040, -0.931218745031474170, -0.931200520829230440, -0.931182294298985470, +-0.931164065440784670, -0.931145834254673790, -0.931127600740698220, -0.931109364898903720, -0.931091126729335810, -0.931072886232040100, -0.931054643407062120, -0.931036398254447620, +-0.931018150774241990, -0.930999900966491100, -0.930981648831240350, -0.930963394368535590, -0.930945137578422340, -0.930926878460946240, -0.930908617016152800, -0.930890353244087860, +-0.930872087144797190, -0.930853818718326180, -0.930835547964720680, -0.930817274884026320, -0.930798999476288750, -0.930780721741553570, -0.930762441679866770, -0.930744159291273740, +-0.930725874575820460, -0.930707587533552320, -0.930689298164515290, -0.930671006468755000, -0.930652712446317310, -0.930634416097247620, -0.930616117421592120, -0.930597816419396100, +-0.930579513090705750, -0.930561207435566470, -0.930542899454024240, -0.930524589146124680, -0.930506276511913640, -0.930487961551437090, -0.930469644264740440, -0.930451324651869860, +-0.930433002712870880, -0.930414678447789360, -0.930396351856671130, -0.930378022939562180, -0.930359691696508010, -0.930341358127554700, -0.930323022232747880, -0.930304684012133620, +-0.930286343465757560, -0.930268000593665770, -0.930249655395903870, -0.930231307872517840, -0.930212958023553530, -0.930194605849056890, -0.930176251349073670, -0.930157894523649830, +-0.930139535372831340, -0.930121173896663930, -0.930102810095193580, -0.930084443968466230, -0.930066075516527760, -0.930047704739424110, -0.930029331637201250, -0.930010956209905040, +-0.929992578457581430, -0.929974198380276280, -0.929955815978035780, -0.929937431250905670, -0.929919044198932010, -0.929900654822160670, -0.929882263120637820, -0.929863869094409100, +-0.929845472743520920, -0.929827074068019010, -0.929808673067949340, -0.929790269743357990, -0.929771864094291020, -0.929753456120794410, -0.929735045822914110, -0.929716633200696200, +-0.929698218254186750, -0.929679800983431730, -0.929661381388477200, -0.929642959469369260, -0.929624535226153850, -0.929606108658877160, -0.929587679767585160, -0.929569248552324030, +-0.929550815013139630, -0.929532379150078360, -0.929513940963186070, -0.929495500452508950, -0.929477057618092960, -0.929458612459984510, -0.929440164978229340, -0.929421715172873860, +-0.929403263043964150, -0.929384808591546150, -0.929366351815666290, -0.929347892716370420, -0.929329431293704930, -0.929310967547715690, -0.929292501478449220, -0.929274033085951360, +-0.929255562370268520, -0.929237089331446780, -0.929218613969532200, -0.929200136284571210, -0.929181656276609870, -0.929163173945694250, -0.929144689291870880, -0.929126202315185610, +-0.929107713015684960, -0.929089221393414990, -0.929070727448422010, -0.929052231180752090, -0.929033732590451630, -0.929015231677566940, -0.928996728442144090, -0.928978222884229380, +-0.928959715003869200, -0.928941204801109750, -0.928922692275997220, -0.928904177428578000, -0.928885660258898290, -0.928867140767004500, -0.928848618952942790, -0.928830094816759600, +-0.928811568358501090, -0.928793039578213690, -0.928774508475943670, -0.928755975051737460, -0.928737439305641230, -0.928718901237701510, -0.928700360847964480, -0.928681818136476540, +-0.928663273103284000, -0.928644725748433260, -0.928626176071970840, -0.928607624073942930, -0.928589069754395920, -0.928570513113376240, -0.928551954150930390, -0.928533392867104460, +-0.928514829261945170, -0.928496263335498840, -0.928477695087811860, -0.928459124518930530, -0.928440551628901490, -0.928421976417770910, -0.928403398885585540, -0.928384819032391670, +-0.928366236858235720, -0.928347652363164190, -0.928329065547223500, -0.928310476410460160, -0.928291884952920590, -0.928273291174651400, -0.928254695075698910, -0.928236096656109730, +-0.928217495915930280, -0.928198892855207070, -0.928180287473986620, -0.928161679772315560, -0.928143069750240190, -0.928124457407807250, -0.928105842745063030, -0.928087225762054380, +-0.928068606458827490, -0.928049984835429220, -0.928031360891905850, -0.928012734628304250, -0.927994106044670590, -0.927975475141051830, -0.927956841917494390, -0.927938206374044780, +-0.927919568510749640, -0.927900928327655580, -0.927882285824809250, -0.927863641002257160, -0.927844993860046040, -0.927826344398222420, -0.927807692616832940, -0.927789038515924090, +-0.927770382095542860, -0.927751723355735520, -0.927733062296548950, -0.927714398918029650, -0.927695733220224470, -0.927677065203179830, -0.927658394866942680, -0.927639722211559440, +-0.927621047237076950, -0.927602369943541730, -0.927583690331000630, -0.927565008399500290, -0.927546324149087440, -0.927527637579808830, -0.927508948691711080, -0.927490257484841040, +-0.927471563959245240, -0.927452868114970630, -0.927434169952063850, -0.927415469470571630, -0.927396766670540610, -0.927378061552017850, -0.927359354115049880, -0.927340644359683550, +-0.927321932285965490, -0.927303217893942770, -0.927284501183661790, -0.927265782155169750, -0.927247060808513160, -0.927228337143738980, -0.927209611160893840, -0.927190882860024820, +-0.927172152241178550, -0.927153419304401760, -0.927134684049741640, -0.927115946477244600, -0.927097206586957930, -0.927078464378928050, -0.927059719853202120, -0.927040973009826800, +-0.927022223848849140, -0.927003472370315880, -0.926984718574273890, -0.926965962460770120, -0.926947204029851530, -0.926928443281564870, -0.926909680215957100, -0.926890914833075170, +-0.926872147132965950, -0.926853377115676280, -0.926834604781253240, -0.926815830129743670, -0.926797053161194540, -0.926778273875652700, -0.926759492273165230, -0.926740708353779090, +-0.926721922117541120, -0.926703133564498400, -0.926684342694697680, -0.926665549508186360, -0.926646754005010950, -0.926627956185218760, -0.926609156048856630, -0.926590353595971640, +-0.926571548826610750, -0.926552741740821030, -0.926533932338649450, -0.926515120620143070, -0.926496306585348760, -0.926477490234313810, -0.926458671567085060, -0.926439850583709700, +-0.926421027284234590, -0.926402201668707010, -0.926383373737173940, -0.926364543489682330, -0.926345710926279490, -0.926326876047012250, -0.926308038851927920, -0.926289199341073450, +-0.926270357514496050, -0.926251513372242650, -0.926232666914360570, -0.926213818140896760, -0.926194967051898410, -0.926176113647412700, -0.926157257927486600, -0.926138399892167400, +-0.926119539541502280, -0.926100676875538210, -0.926081811894322480, -0.926062944597902280, -0.926044074986324680, -0.926025203059636760, -0.926006328817885920, -0.925987452261119340, +-0.925968573389384100, -0.925949692202727380, -0.925930808701196480, -0.925911922884838590, -0.925893034753700770, -0.925874144307830440, -0.925855251547274770, -0.925836356472080960, +-0.925817459082296180, -0.925798559377967840, -0.925779657359143030, -0.925760753025869130, -0.925741846378193340, -0.925722937416162960, -0.925704026139825160, -0.925685112549227470, +-0.925666196644416850, -0.925647278425440700, -0.925628357892346430, -0.925609435045181230, -0.925590509883992500, -0.925571582408827420, -0.925552652619733520, -0.925533720516757860, +-0.925514786099947970, -0.925495849369351030, -0.925476910325014560, -0.925457968966985730, -0.925439025295312080, -0.925420079310040780, -0.925401131011219350, -0.925382180398894970, +-0.925363227473115280, -0.925344272233927460, -0.925325314681379020, -0.925306354815517150, -0.925287392636389480, -0.925268428144043310, -0.925249461338526040, -0.925230492219885290, +-0.925211520788168150, -0.925192547043422240, -0.925173570985694970, -0.925154592615033740, -0.925135611931486080, -0.925116628935099380, -0.925097643625921060, -0.925078656003998740, +-0.925059666069379730, -0.925040673822111530, -0.925021679262241660, -0.925002682389817530, -0.924983683204886780, -0.924964681707496790, -0.924945677897695110, -0.924926671775529230, +-0.924907663341046680, -0.924888652594294870, -0.924869639535321530, -0.924850624164174070, -0.924831606480900130, -0.924812586485547090, -0.924793564178162610, -0.924774539558794180, +-0.924755512627489450, -0.924736483384295930, -0.924717451829261240, -0.924698417962432790, -0.924679381783858450, -0.924660343293585480, -0.924641302491661770, -0.924622259378134800, +-0.924603213953052230, -0.924584166216461560, -0.924565116168410530, -0.924546063808946550, -0.924527009138117580, -0.924507952155971040, -0.924488892862554530, -0.924469831257915930, +-0.924450767342102630, -0.924431701115162490, -0.924412632577143010, -0.924393561728092060, -0.924374488568057150, -0.924355413097086130, -0.924336335315226410, -0.924317255222525950, +-0.924298172819032260, -0.924279088104793310, -0.924260001079856510, -0.924240911744269810, -0.924221820098080630, -0.924202726141337140, -0.924183629874086640, -0.924164531296377210, +-0.924145430408256360, -0.924126327209771950, -0.924107221700971700, -0.924088113881903370, -0.924069003752614910, -0.924049891313153850, -0.924030776563568020, -0.924011659503905290, +-0.923992540134213500, -0.923973418454540170, -0.923954294464933490, -0.923935168165440860, -0.923916039556110570, -0.923896908636989920, -0.923877775408127210, -0.923858639869569950, +-0.923839502021366110, -0.923820361863563530, -0.923801219396210070, -0.923782074619353470, -0.923762927533041790, -0.923743778137322670, -0.923724626432244180, -0.923705472417854170, +-0.923686316094200380, -0.923667157461330880, -0.923647996519293410, -0.923628833268136050, -0.923609667707906530, -0.923590499838652930, -0.923571329660422990, -0.923552157173264780, +-0.923532982377226030, -0.923513805272355050, -0.923494625858699350, -0.923475444136307330, -0.923456260105226520, -0.923437073765505100, -0.923417885117190920, -0.923398694160332160, +-0.923379500894976560, -0.923360305321172300, -0.923341107438967250, -0.923321907248409350, -0.923302704749546790, -0.923283499942427310, -0.923264292827099320, -0.923245083403610440, +-0.923225871672008870, -0.923206657632342660, -0.923187441284659790, -0.923168222629008330, -0.923149001665436340, -0.923129778393991680, -0.923110552814722760, -0.923091324927677430, +-0.923072094732903750, -0.923052862230449800, -0.923033627420363770, -0.923014390302693610, -0.922995150877487510, -0.922975909144793550, -0.922956665104659680, -0.922937418757134310, +-0.922918170102265290, -0.922898919140100920, -0.922879665870689260, -0.922860410294078390, -0.922841152410316500, -0.922821892219451770, -0.922802629721532260, -0.922783364916606170, +-0.922764097804721680, -0.922744828385926970, -0.922725556660270230, -0.922706282627799520, -0.922687006288563150, -0.922667727642609290, -0.922648446689986020, -0.922629163430741750, +-0.922609877864924430, -0.922590589992582480, -0.922571299813764070, -0.922552007328517390, -0.922532712536890730, -0.922513415438932170, -0.922494116034690230, -0.922474814324212970, +-0.922455510307548690, -0.922436203984745460, -0.922416895355851920, -0.922397584420916020, -0.922378271179986280, -0.922358955633110770, -0.922339637780337900, -0.922320317621715960, +-0.922300995157293250, -0.922281670387117950, -0.922262343311238570, -0.922243013929703200, -0.922223682242560460, -0.922204348249858310, -0.922185011951645370, -0.922165673347970060, +-0.922146332438880450, -0.922126989224425040, -0.922107643704652040, -0.922088295879610050, -0.922068945749347280, -0.922049593313912230, -0.922030238573353090, -0.922010881527718370, +-0.921991522177056490, -0.921972160521415840, -0.921952796560844610, -0.921933430295391540, -0.921914061725104820, -0.921894690850033060, -0.921875317670224460, -0.921855942185727750, +-0.921836564396590900, -0.921817184302862860, -0.921797801904591820, -0.921778417201826180, -0.921759030194614580, -0.921739640883005310, -0.921720249267047100, -0.921700855346788140, +-0.921681459122277060, -0.921662060593562370, -0.921642659760692480, -0.921623256623716030, -0.921603851182681400, -0.921584443437637010, -0.921565033388631720, -0.921545621035713690, +-0.921526206378931790, -0.921506789418334190, -0.921487370153969750, -0.921467948585886760, -0.921448524714133970, -0.921429098538759870, -0.921409670059813000, -0.921390239277341980, +-0.921370806191395220, -0.921351370802021670, -0.921331933109269530, -0.921312493113187640, -0.921293050813824510, -0.921273606211228780, -0.921254159305448960, -0.921234710096533790, +-0.921215258584531790, -0.921195804769491810, -0.921176348651462140, -0.921156890230491740, -0.921137429506628910, -0.921117966479922720, -0.921098501150421470, -0.921079033518174110, +-0.921059563583229050, -0.921040091345635140, -0.921020616805440890, -0.921001139962695170, -0.920981660817446590, -0.920962179369743890, -0.920942695619635820, -0.920923209567170890, +-0.920903721212397940, -0.920884230555365720, -0.920864737596122970, -0.920845242334718210, -0.920825744771200600, -0.920806244905618350, -0.920786742738020750, -0.920767238268456080, +-0.920747731496973530, -0.920728222423621400, -0.920708711048448980, -0.920689197371504560, -0.920669681392837220, -0.920650163112495700, -0.920630642530528840, -0.920611119646985280, +-0.920591594461913850, -0.920572066975363530, -0.920552537187383060, -0.920533005098021270, -0.920513470707326810, -0.920493934015348850, -0.920474395022136020, -0.920454853727737170, +-0.920435310132201150, -0.920415764235576920, -0.920396216037913220, -0.920376665539259120, -0.920357112739663140, -0.920337557639174570, -0.920318000237841940, -0.920298440535714520, +-0.920278878532840850, -0.920259314229269990, -0.920239747625050790, -0.920220178720232320, -0.920200607514863430, -0.920181034008992870, -0.920161458202669920, -0.920141880095943220, +-0.920122299688861830, -0.920102716981474720, -0.920083131973830740, -0.920063544665978950, -0.920043955057968430, -0.920024363149847810, -0.920004768941666500, -0.919985172433473110, +-0.919965573625316950, -0.919945972517246640, -0.919926369109311580, -0.919906763401560520, -0.919887155394042530, -0.919867545086806680, -0.919847932479902040, -0.919828317573377460, +-0.919808700367282020, -0.919789080861665000, -0.919769459056575140, -0.919749834952061750, -0.919730208548173780, -0.919710579844960300, -0.919690948842470160, -0.919671315540752880, +-0.919651679939857190, -0.919632042039832400, -0.919612401840727340, -0.919592759342591440, -0.919573114545473520, -0.919553467449423010, -0.919533818054488640, -0.919514166360719810, +-0.919494512368165480, -0.919474856076874960, -0.919455197486897300, -0.919435536598281590, -0.919415873411077110, -0.919396207925332830, -0.919376540141098150, -0.919356870058422040, +-0.919337197677353780, -0.919317522997942560, -0.919297846020237560, -0.919278166744287750, -0.919258485170142750, -0.919238801297851400, -0.919219115127463130, -0.919199426659027100, +-0.919179735892592390, -0.919160042828208400, -0.919140347465924320, -0.919120649805789340, -0.919100949847852840, -0.919081247592163810, -0.919061543038771740, -0.919041836187725720, +-0.919022127039075150, -0.919002415592869440, -0.918982701849157420, -0.918962985807988850, -0.918943267469412680, -0.918923546833478540, -0.918903823900235280, -0.918884098669732640, +-0.918864371142019690, -0.918844641317145830, -0.918824909195160360, -0.918805174776112680, -0.918785438060051860, -0.918765699047027650, -0.918745957737089110, -0.918726214130285770, +-0.918706468226666790, -0.918686720026281600, -0.918666969529179700, -0.918647216735410390, -0.918627461645022960, -0.918607704258066930, -0.918587944574591590, -0.918568182594646450, +-0.918548418318280820, -0.918528651745544100, -0.918508882876485910, -0.918489111711155330, -0.918469338249602090, -0.918449562491875480, -0.918429784438024920, -0.918410004088099920, +-0.918390221442149990, -0.918370436500224430, -0.918350649262372750, -0.918330859728644480, -0.918311067899089120, -0.918291273773755970, -0.918271477352694760, -0.918251678635954690, +-0.918231877623585490, -0.918212074315636780, -0.918192268712157640, -0.918172460813198030, -0.918152650618807130, -0.918132838129034680, -0.918113023343930080, -0.918093206263542960, +-0.918073386887922730, -0.918053565217119120, -0.918033741251181650, -0.918013914990159720, -0.917994086434103070, -0.917974255583061230, -0.917954422437083580, -0.917934586996220100, +-0.917914749260519970, -0.917894909230033140, -0.917875066904808910, -0.917855222284897020, -0.917835375370347100, -0.917815526161208760, -0.917795674657531650, -0.917775820859365150, +-0.917755964766759360, -0.917736106379763440, -0.917716245698427470, -0.917696382722800740, -0.917676517452933100, -0.917656649888874080, -0.917636780030673620, -0.917616907878381020, +-0.917597033432046240, -0.917577156691718800, -0.917557277657448660, -0.917537396329285100, -0.917517512707278220, -0.917497626791477510, -0.917477738581932710, -0.917457848078693460, +-0.917437955281809710, -0.917418060191331100, -0.917398162807307240, -0.917378263129788100, -0.917358361158823190, -0.917338456894462470, -0.917318550336755580, -0.917298641485752240, +-0.917278730341502310, -0.917258816904055640, -0.917238901173461850, -0.917218983149770910, -0.917199062833032430, -0.917179140223296390, -0.917159215320612290, -0.917139288125030430, +-0.917119358636600100, -0.917099426855371490, -0.917079492781394330, -0.917059556414718370, -0.917039617755393550, -0.917019676803469630, -0.916999733558996670, -0.916979788022024290, +-0.916959840192602460, -0.916939890070780920, -0.916919937656609840, -0.916899982950138750, -0.916880025951417820, -0.916860066660496690, -0.916840105077425530, -0.916820141202254080, +-0.916800175035032310, -0.916780206575809940, -0.916760235824637280, -0.916740262781563840, -0.916720287446639910, -0.916700309819915130, -0.916680329901439660, -0.916660347691263260, +-0.916640363189436090, -0.916620376396007910, -0.916600387311028890, -0.916580395934548870, -0.916560402266617840, -0.916540406307285840, -0.916520408056602730, -0.916500407514618700, +-0.916480404681383700, -0.916460399556947580, -0.916440392141360530, -0.916420382434672500, -0.916400370436933450, -0.916380356148193580, -0.916360339568502600, -0.916340320697911050, +-0.916320299536468540, -0.916300276084225370, -0.916280250341231390, -0.916260222307536900, -0.916240191983191730, -0.916220159368246080, -0.916200124462750120, -0.916180087266753820, +-0.916160047780307350, -0.916140006003460680, -0.916119961936264100, -0.916099915578767580, -0.916079866931021280, -0.916059815993075180, -0.916039762764979670, -0.916019707246784720, +-0.915999649438540620, -0.915979589340297220, -0.915959526952104920, -0.915939462274013790, -0.915919395306074020, -0.915899326048335680, -0.915879254500849170, -0.915859180663664450, +-0.915839104536831820, -0.915819026120401340, -0.915798945414423300, -0.915778862418948010, -0.915758777134025430, -0.915738689559706050, -0.915718599696039750, -0.915698507543077130, +-0.915678413100868170, -0.915658316369463270, -0.915638217348912490, -0.915618116039266130, -0.915598012440574480, -0.915577906552887950, -0.915557798376256500, -0.915537687910730650, +-0.915517575156360450, -0.915497460113196440, -0.915477342781288780, -0.915457223160687780, -0.915437101251443620, -0.915416977053606700, -0.915396850567227420, -0.915376721792355960, +-0.915356590729042740, -0.915336457377337930, -0.915316321737292160, -0.915296183808955500, -0.915276043592378350, -0.915255901087611120, -0.915235756294704220, -0.915215609213707810, +-0.915195459844672430, -0.915175308187648360, -0.915155154242686120, -0.915134998009835780, -0.915114839489148180, -0.915094678680673400, -0.915074515584461960, -0.915054350200564140, +-0.915034182529030460, -0.915014012569911330, -0.914993840323257150, -0.914973665789118430, -0.914953488967545470, -0.914933309858588890, -0.914913128462299000, -0.914892944778726290, +-0.914872758807921180, -0.914852570549934300, -0.914832380004815810, -0.914812187172616590, -0.914791992053386680, -0.914771794647176950, -0.914751594954037570, -0.914731392974019400, +-0.914711188707172610, -0.914690982153547940, -0.914670773313195680, -0.914650562186166580, -0.914630348772511040, -0.914610133072279560, -0.914589915085522900, -0.914569694812291330, +-0.914549472252635720, -0.914529247406606240, -0.914509020274253740, -0.914488790855628620, -0.914468559150781510, -0.914448325159763040, -0.914428088882623840, -0.914407850319414290, +-0.914387609470185160, -0.914367366334986940, -0.914347120913870490, -0.914326873206886100, -0.914306623214084510, -0.914286370935516350, -0.914266116371232450, -0.914245859521283010, +-0.914225600385719090, -0.914205338964591110, -0.914185075257949680, -0.914164809265845760, -0.914144540988329650, -0.914124270425452300, -0.914103997577264240, -0.914083722443816190, +-0.914063445025158790, -0.914043165321342890, -0.914022883332418990, -0.914002599058437950, -0.913982312499450280, -0.913962023655507050, -0.913941732526658560, -0.913921439112955870, +-0.913901143414449390, -0.913880845431190300, -0.913860545163228900, -0.913840242610616250, -0.913819937773402870, -0.913799630651639830, -0.913779321245377530, -0.913759009554666930, +-0.913738695579559000, -0.913718379320104130, -0.913698060776353520, -0.913677739948357550, -0.913657416836167410, -0.913637091439833520, -0.913616763759407150, -0.913596433794938710, +-0.913576101546479170, -0.913555767014079480, -0.913535430197790270, -0.913515091097662490, -0.913494749713747110, -0.913474406046094760, -0.913454060094756380, -0.913433711859782840, +-0.913413361341225190, -0.913393008539133970, -0.913372653453560220, -0.913352296084554930, -0.913331936432168810, -0.913311574496452840, -0.913291210277457970, -0.913270843775235150, +-0.913250474989835140, -0.913230103921308990, -0.913209730569707560, -0.913189354935081800, -0.913168977017482560, -0.913148596816961030, -0.913128214333567940, -0.913107829567354370, +-0.913087442518371150, -0.913067053186669360, -0.913046661572299970, -0.913026267675313920, -0.913005871495762070, -0.912985473033695700, -0.912965072289165570, -0.912944669262222730, +-0.912924263952918260, -0.912903856361303110, -0.912883446487428360, -0.912863034331344970, -0.912842619893104110, -0.912822203172756530, -0.912801784170353510, -0.912781362885946020, +-0.912760939319585130, -0.912740513471321900, -0.912720085341207410, -0.912699654929292610, -0.912679222235628810, -0.912658787260266830, -0.912638350003257990, -0.912617910464653240, +-0.912597468644503750, -0.912577024542860490, -0.912556578159774650, -0.912536129495297500, -0.912515678549479900, -0.912495225322373150, -0.912474769814028310, -0.912454312024496670, +-0.912433851953829090, -0.912413389602077070, -0.912392924969291360, -0.912372458055523470, -0.912351988860824360, -0.912331517385245430, -0.912311043628837530, -0.912290567591652170, +-0.912270089273740200, -0.912249608675153260, -0.912229125795942060, -0.912208640636158250, -0.912188153195852670, -0.912167663475076830, -0.912147171473881690, -0.912126677192318660, +-0.912106180630439020, -0.912085681788293860, -0.912065180665934560, -0.912044677263412320, -0.912024171580778310, -0.912003663618083940, -0.911983153375380380, -0.911962640852718830, +-0.911942126050150900, -0.911921608967727450, -0.911901089605500090, -0.911880567963520020, -0.911860044041838510, -0.911839517840506870, -0.911818989359576390, -0.911798458599098470, +-0.911777925559124510, -0.911757390239705590, -0.911736852640893210, -0.911716312762738790, -0.911695770605293500, -0.911675226168608850, -0.911654679452736040, -0.911634130457726680, +-0.911613579183631840, -0.911593025630503150, -0.911572469798391900, -0.911551911687349500, -0.911531351297427240, -0.911510788628676630, -0.911490223681149070, -0.911469656454895970, +-0.911449086949968620, -0.911428515166418650, -0.911407941104297350, -0.911387364763656230, -0.911366786144546690, -0.911346205247020260, -0.911325622071128110, -0.911305036616921970, +-0.911284448884453370, -0.911263858873773590, -0.911243266584934150, -0.911222672017986570, -0.911202075172982240, -0.911181476049972790, -0.911160874649009630, -0.911140270970144270, +-0.911119665013428340, -0.911099056778913010, -0.911078446266650240, -0.911057833476691340, -0.911037218409087800, -0.911016601063891260, -0.910995981441153240, -0.910975359540925120, +-0.910954735363258770, -0.910934108908205480, -0.910913480175816970, -0.910892849166144660, -0.910872215879240280, -0.910851580315155450, -0.910830942473941470, -0.910810302355650410, +-0.910789659960333340, -0.910769015288042330, -0.910748368338828660, -0.910727719112744080, -0.910707067609840220, -0.910686413830168680, -0.910665757773781110, -0.910645099440729240, +-0.910624438831064480, -0.910603775944838660, -0.910583110782103410, -0.910562443342910480, -0.910541773627311260, -0.910521101635357710, -0.910500427367101350, -0.910479750822593910, +-0.910459072001887250, -0.910438390905032760, -0.910417707532082400, -0.910397021883087690, -0.910376333958100470, -0.910355643757172370, -0.910334951280355240, -0.910314256527700590, +-0.910293559499260500, -0.910272860195086350, -0.910252158615230120, -0.910231454759743430, -0.910210748628678230, -0.910190040222086050, -0.910169329540018830, -0.910148616582528210, +-0.910127901349666150, -0.910107183841484260, -0.910086464058034390, -0.910065741999368400, -0.910045017665538030, -0.910024291056595210, -0.910003562172591480, -0.909982831013579020, +-0.909962097579609440, -0.909941361870734600, -0.909920623887006340, -0.909899883628476620, -0.909879141095197070, -0.909858396287219760, -0.909837649204596310, -0.909816899847378900, +-0.909796148215619160, -0.909775394309369050, -0.909754638128680520, -0.909733879673605310, -0.909713118944195380, -0.909692355940502790, -0.909671590662579190, -0.909650823110476630, +-0.909630053284247060, -0.909609281183942240, -0.909588506809614450, -0.909567730161315200, -0.909546951239096680, -0.909526170043010730, -0.909505386573109530, -0.909484600829444600, +-0.909463812812068450, -0.909443022521032480, -0.909422229956389220, -0.909401435118190270, -0.909380638006487720, -0.909359838621333520, -0.909339036962779850, -0.909318233030878440, +-0.909297426825681600, -0.909276618347241270, -0.909255807595609090, -0.909234994570837560, -0.909214179272978650, -0.909193361702083980, -0.909172541858206170, -0.909151719741396970, +-0.909130895351708550, -0.909110068689192640, -0.909089239753901770, -0.909068408545887770, -0.909047575065202730, -0.909026739311898590, -0.909005901286027870, -0.908985060987642310, +-0.908964218416794090, -0.908943373573535160, -0.908922526457918050, -0.908901677069994470, -0.908880825409816850, -0.908859971477436910, -0.908839115272907170, -0.908818256796279810, +-0.908797396047606450, -0.908776533026939840, -0.908755667734331920, -0.908734800169834880, -0.908713930333500560, -0.908693058225381710, -0.908672183845530060, -0.908651307193998110, +-0.908630428270837620, -0.908609547076101200, -0.908588663609841030, -0.908567777872109070, -0.908546889862957620, -0.908525999582439070, -0.908505107030605500, -0.908484212207509190, +-0.908463315113202110, -0.908442415747736990, -0.908421514111165780, -0.908400610203540900, -0.908379704024914190, -0.908358795575338500, -0.908337884854865770, -0.908316971863548090, +-0.908296056601438200, -0.908275139068588140, -0.908254219265050340, -0.908233297190876750, -0.908212372846120110, -0.908191446230832480, -0.908170517345066260, -0.908149586188873650, +-0.908128652762307140, -0.908107717065419040, -0.908086779098261740, -0.908065838860887210, -0.908044896353348290, -0.908023951575697040, -0.908003004527985990, -0.907982055210267310, +-0.907961103622593630, -0.907940149765017130, -0.907919193637590110, -0.907898235240365390, -0.907877274573394950, -0.907856311636731310, -0.907835346430426850, -0.907814378954534100, +-0.907793409209105450, -0.907772437194193200, -0.907751462909849760, -0.907730486356127740, -0.907709507533079660, -0.907688526440757700, -0.907667543079214270, -0.907646557448502200, +-0.907625569548673680, -0.907604579379781230, -0.907583586941877240, -0.907562592235014340, -0.907541595259245050, -0.907520596014621540, -0.907499594501196770, -0.907478590719023040, +-0.907457584668152740, -0.907436576348638390, -0.907415565760532730, -0.907394552903888150, -0.907373537778757180, -0.907352520385192210, -0.907331500723246090, -0.907310478792971220, +-0.907289454594420230, -0.907268428127645300, -0.907247399392699600, -0.907226368389635330, -0.907205335118505210, -0.907184299579361530, -0.907163261772257260, -0.907142221697244790, +-0.907121179354376640, -0.907100134743705770, -0.907079087865284570, -0.907058038719165570, -0.907036987305401280, -0.907015933624044760, -0.906994877675148410, -0.906973819458764870, +-0.906952758974946540, -0.906931696223746590, -0.906910631205217310, -0.906889563919411560, -0.906868494366381620, -0.906847422546180670, -0.906826348458861120, -0.906805272104475700, +-0.906784193483077040, -0.906763112594717980, -0.906742029439451150, -0.906720944017329170, -0.906699856328404770, -0.906678766372730820, -0.906657674150360030, -0.906636579661344810, +-0.906615482905738350, -0.906594383883593260, -0.906573282594962060, -0.906552179039897600, -0.906531073218452830, -0.906509965130680270, -0.906488854776632990, -0.906467742156363280, +-0.906446627269924420, -0.906425510117368940, -0.906404390698749780, -0.906383269014119360, -0.906362145063531080, -0.906341018847037330, -0.906319890364691070, -0.906298759616544940, +-0.906277626602651990, -0.906256491323065070, -0.906235353777836710, -0.906214213967020180, -0.906193071890668000, -0.906171927548833240, -0.906150780941568530, -0.906129632068926940, +-0.906108480930961300, -0.906087327527724470, -0.906066171859269190, -0.906045013925648620, -0.906023853726915410, -0.906002691263122720, -0.905981526534323070, -0.905960359540569750, +-0.905939190281915610, -0.905918018758413380, -0.905896844970116020, -0.905875668917076720, -0.905854490599348190, -0.905833310016983310, -0.905812127170035340, -0.905790942058557040, +-0.905769754682601350, -0.905748565042221120, -0.905727373137469650, -0.905706178968399780, -0.905684982535064460, -0.905663783837516450, -0.905642582875809230, -0.905621379649995450, +-0.905600174160128280, -0.905578966406260570, -0.905557756388445490, -0.905536544106736120, -0.905515329561185300, -0.905494112751846100, -0.905472893678771710, -0.905451672342015070, +-0.905430448741629370, -0.905409222877667230, -0.905387994750182280, -0.905366764359227360, -0.905345531704855320, -0.905324296787119560, -0.905303059606073160, -0.905281820161769060, +-0.905260578454260220, -0.905239334483600170, -0.905218088249841850, -0.905196839753038220, -0.905175588993242240, -0.905154335970507540, -0.905133080684887070, -0.905111823136433790, +-0.905090563325200770, -0.905069301251241630, -0.905048036914609110, -0.905026770315356610, -0.905005501453536980, -0.904984230329203720, -0.904962956942409910, -0.904941681293208510, +-0.904920403381653140, -0.904899123207796750, -0.904877840771692530, -0.904856556073393550, -0.904835269112953310, -0.904813979890424890, -0.904792688405861580, -0.904771394659316330, +-0.904750098650842880, -0.904728800380494080, -0.904707499848323330, -0.904686197054383580, -0.904664891998728570, -0.904643584681411260, -0.904622275102485050, -0.904600963262003010, +-0.904579649160018650, -0.904558332796585260, -0.904537014171755800, -0.904515693285584010, -0.904494370138123060, -0.904473044729426020, -0.904451717059546300, -0.904430387128537410, +-0.904409054936452630, -0.904387720483345150, -0.904366383769268260, -0.904345044794275470, -0.904323703558420180, -0.904302360061755570, -0.904281014304334940, -0.904259666286211910, +-0.904238316007439650, -0.904216963468071680, -0.904195608668161180, -0.904174251607761770, -0.904152892286926750, -0.904131530705709290, -0.904110166864163120, -0.904088800762341660, +-0.904067432400298080, -0.904046061778085890, -0.904024688895758600, -0.904003313753369620, -0.903981936350972350, -0.903960556688620080, -0.903939174766366650, -0.903917790584265250, +-0.903896404142369270, -0.903875015440732230, -0.903853624479407760, -0.903832231258449250, -0.903810835777910220, -0.903789438037843840, -0.903768038038304080, -0.903746635779344220, +-0.903725231261017780, -0.903703824483378050, -0.903682415446478980, -0.903661004150373870, -0.903639590595116000, -0.903618174780759340, -0.903596756707357280, -0.903575336374963340, +-0.903553913783630920, -0.903532488933413870, -0.903511061824365580, -0.903489632456539680, -0.903468200829989470, -0.903446766944768890, -0.903425330800931460, -0.903403892398530690, +-0.903382451737620000, -0.903361008818253430, -0.903339563640484290, -0.903318116204366190, -0.903296666509952660, -0.903275214557297650, -0.903253760346454550, -0.903232303877476990, +-0.903210845150418720, -0.903189384165333450, -0.903167920922274710, -0.903146455421295900, -0.903124987662451200, -0.903103517645794000, -0.903082045371378040, -0.903060570839256730, +-0.903039094049484240, -0.903017615002113970, -0.902996133697199670, -0.902974650134794830, -0.902953164314953540, -0.902931676237729410, -0.902910185903176070, -0.902888693311347020, +-0.902867198462296460, -0.902845701356078000, -0.902824201992744930, -0.902802700372351660, -0.902781196494951590, -0.902759690360598550, -0.902738181969346080, -0.902716671321248440, +-0.902695158416359060, -0.902673643254731760, -0.902652125836420070, -0.902630606161478390, -0.902609084229960220, -0.902587560041919200, -0.902566033597409170, -0.902544504896484300, +-0.902522973939198110, -0.902501440725604450, -0.902479905255757050, -0.902458367529710090, -0.902436827547517200, -0.902415285309232210, -0.902393740814908860, -0.902372194064601230, +-0.902350645058363270, -0.902329093796248370, -0.902307540278311060, -0.902285984504604840, -0.902264426475183680, -0.902242866190101190, -0.902221303649411780, -0.902199738853169180, +-0.902178171801427120, -0.902156602494239460, -0.902135030931660590, -0.902113457113744020, -0.902091881040543830, -0.902070302712113750, -0.902048722128508170, -0.902027139289780730, +-0.902005554195985490, -0.901983966847176080, -0.901962377243407000, -0.901940785384731990, -0.901919191271204790, -0.901897594902879800, -0.901875996279810850, -0.901854395402051920, +-0.901832792269656850, -0.901811186882679920, -0.901789579241175090, -0.901767969345196210, -0.901746357194797230, -0.901724742790032670, -0.901703126130956160, -0.901681507217621860, +-0.901659886050083630, -0.901638262628395750, -0.901616636952612290, -0.901595009022787330, -0.901573378838974480, -0.901551746401228480, -0.901530111709603180, -0.901508474764152300, +-0.901486835564930480, -0.901465194111991550, -0.901443550405389590, -0.901421904445178670, -0.901400256231413070, -0.901378605764146860, -0.901356953043434220, -0.901335298069328880, +-0.901313640841885590, -0.901291981361158180, -0.901270319627200720, -0.901248655640067400, -0.901226989399812610, -0.901205320906490300, -0.901183650160154670, -0.901161977160859770, +-0.901140301908660120, -0.901118624403609680, -0.901096944645762510, -0.901075262635173120, -0.901053578371895700, -0.901031891855984200, -0.901010203087492910, -0.900988512066476120, +-0.900966818792988230, -0.900945123267083200, -0.900923425488815210, -0.900901725458238770, -0.900880023175408160, -0.900858318640377350, -0.900836611853200630, -0.900814902813932620, +-0.900793191522627270, -0.900771477979338990, -0.900749762184121730, -0.900728044137030340, -0.900706323838118880, -0.900684601287441540, -0.900662876485052500, -0.900641149431006480, +-0.900619420125357560, -0.900597688568159920, -0.900575954759468280, -0.900554218699336720, -0.900532480387819630, -0.900510739824971100, -0.900488997010845950, -0.900467251945498370, +-0.900445504628982650, -0.900423755061352860, -0.900402003242663950, -0.900380249172969990, -0.900358492852325500, -0.900336734280784530, -0.900314973458401950, -0.900293210385231910, +-0.900271445061328830, -0.900249677486746890, -0.900227907661541040, -0.900206135585765450, -0.900184361259474210, -0.900162584682722370, -0.900140805855564000, -0.900119024778053610, +-0.900097241450245500, -0.900075455872194510, -0.900053668043954810, -0.900031877965581040, -0.900010085637127260, -0.899988291058648530, -0.899966494230199030, -0.899944695151833400, +-0.899922893823605690, -0.899901090245571080, -0.899879284417783640, -0.899857476340298000, -0.899835666013168560, -0.899813853436450040, -0.899792038610196960, -0.899770221534463620, +-0.899748402209304850, -0.899726580634775060, -0.899704756810928870, -0.899682930737820570, -0.899661102415505120, -0.899639271844037030, -0.899617439023470580, -0.899595603953860510, +-0.899573766635261450, -0.899551927067728130, -0.899530085251314950, -0.899508241186076310, -0.899486394872067270, -0.899464546309342360, -0.899442695497955970, -0.899420842437962610, +-0.899398987129417460, -0.899377129572374810, -0.899355269766889290, -0.899333407713015400, -0.899311543410808210, -0.899289676860322130, -0.899267808061611660, -0.899245937014731990, +-0.899224063719737400, -0.899202188176682630, -0.899180310385622180, -0.899158430346611140, -0.899136548059704110, -0.899114663524955620, -0.899092776742420270, -0.899070887712153270, +-0.899048996434208990, -0.899027102908642180, -0.899005207135507470, -0.898983309114860020, -0.898961408846754130, -0.898939506331244860, -0.898917601568386520, -0.898895694558234480, +-0.898873785300843050, -0.898851873796267080, -0.898829960044561620, -0.898808044045781300, -0.898786125799980740, -0.898764205307214790, -0.898742282567538410, -0.898720357581006430, +-0.898698430347673490, -0.898676500867594320, -0.898654569140824090, -0.898632635167417430, -0.898610698947429180, -0.898588760480913960, -0.898566819767927070, -0.898544876808523130, +-0.898522931602756980, -0.898500984150683250, -0.898479034452357330, -0.898457082507833850, -0.898435128317167430, -0.898413171880413360, -0.898391213197626380, -0.898369252268861440, +-0.898347289094173050, -0.898325323673616730, -0.898303356007247090, -0.898281386095118980, -0.898259413937287250, -0.898237439533807190, -0.898215462884733530, -0.898193483990121220, +-0.898171502850025010, -0.898149519464500280, -0.898127533833601670, -0.898105545957384340, -0.898083555835902820, -0.898061563469212620, -0.898039568857368580, -0.898017572000425420, +-0.897995572898438450, -0.897973571551462620, -0.897951567959552890, -0.897929562122763980, -0.897907554041151300, -0.897885543714769810, -0.897863531143674450, -0.897841516327920090, +-0.897819499267562100, -0.897797479962655460, -0.897775458413255010, -0.897753434619415810, -0.897731408581193160, -0.897709380298642000, -0.897687349771817300, -0.897665317000774120, +-0.897643281985567860, -0.897621244726253380, -0.897599205222885830, -0.897577163475519970, -0.897555119484211520, -0.897533073249015210, -0.897511024769986010, -0.897488974047179420, +-0.897466921080650400, -0.897444865870454130, -0.897422808416645460, -0.897400748719279990, -0.897378686778412590, -0.897356622594098540, -0.897334556166392680, -0.897312487495350640, +-0.897290416581027480, -0.897268343423478170, -0.897246268022757860, -0.897224190378922090, -0.897202110492025810, -0.897180028362124180, -0.897157943989272400, -0.897135857373525860, +-0.897113768514939740, -0.897091677413568990, -0.897069584069469240, -0.897047488482695550, -0.897025390653303110, -0.897003290581347090, -0.896981188266883000, -0.896959083709965800, +-0.896936976910651000, -0.896914867868993660, -0.896892756585049190, -0.896870643058872870, -0.896848527290520000, -0.896826409280045530, -0.896804289027505310, -0.896782166532954280, +-0.896760041796447970, -0.896737914818041220, -0.896715785597789970, -0.896693654135749200, -0.896671520431974180, -0.896649384486520430, -0.896627246299443350, -0.896605105870798000, +-0.896582963200639790, -0.896560818289024450, -0.896538671136006940, -0.896516521741642760, -0.896494370105987090, -0.896472216229095790, -0.896450060111023790, -0.896427901751826740, +-0.896405741151559800, -0.896383578310278590, -0.896361413228038420, -0.896339245904894780, -0.896317076340902850, -0.896294904536118380, -0.896272730490596640, -0.896250554204393150, +-0.896228375677562970, -0.896206194910162070, -0.896184011902245730, -0.896161826653869120, -0.896139639165088210, -0.896117449435958170, -0.896095257466534510, -0.896073063256872530, +-0.896050866807028060, -0.896028668117056390, -0.896006467187013040, -0.895984264016953410, -0.895962058606933230, -0.895939850957008010, -0.895917641067233040, -0.895895428937663830, +-0.895873214568356220, -0.895850997959365620, -0.895828779110747540, -0.895806558022557260, -0.895784334694850860, -0.895762109127683500, -0.895739881321110820, -0.895717651275188540, +-0.895695418989972070, -0.895673184465517140, -0.895650947701879030, -0.895628708699113820, -0.895606467457276790, -0.895584223976423570, -0.895561978256609550, -0.895539730297890910, +-0.895517480100322840, -0.895495227663961060, -0.895472972988861080, -0.895450716075078870, -0.895428456922669810, -0.895406195531689650, -0.895383931902193790, -0.895361666034238280, +-0.895339397927878640, -0.895317127583170280, -0.895294855000169370, -0.895272580178931190, -0.895250303119511700, -0.895228023821966200, -0.895205742286350750, -0.895183458512721080, +-0.895161172501132700, -0.895138884251641230, -0.895116593764302640, -0.895094301039172650, -0.895072006076306880, -0.895049708875760960, -0.895027409437590960, -0.895005107761852380, +-0.894982803848601070, -0.894960497697892540, -0.894938189309782970, -0.894915878684327870, -0.894893565821582970, -0.894871250721604230, -0.894848933384447490, -0.894826613810168370, +-0.894804291998822500, -0.894781967950466160, -0.894759641665154760, -0.894737313142944360, -0.894714982383890470, -0.894692649388049380, -0.894670314155476600, -0.894647976686227970, +-0.894625636980359350, -0.894603295037926790, -0.894580950858985920, -0.894558604443592700, -0.894536255791802850, -0.894513904903672440, -0.894491551779257320, -0.894469196418613330, +-0.894446838821796210, -0.894424478988862130, -0.894402116919866820, -0.894379752614866020, -0.894357386073916130, -0.894335017297072650, -0.894312646284391780, -0.894290273035928900, +-0.894267897551740740, -0.894245519831882720, -0.894223139876410890, -0.894200757685381100, -0.894178373258849520, -0.894155986596872010, -0.894133597699504620, -0.894111206566802990, +-0.894088813198823500, -0.894066417595622000, -0.894044019757254560, -0.894021619683776800, -0.893999217375245130, -0.893976812831715480, -0.893954406053243610, -0.893931997039885800, +-0.893909585791698100, -0.893887172308736490, -0.893864756591056690, -0.893842338638715210, -0.893819918451767890, -0.893797496030270700, -0.893775071374279690, -0.893752644483851060, +-0.893730215359040960, -0.893707783999905250, -0.893685350406499880, -0.893662914578881360, -0.893640476517105540, -0.893618036221228600, -0.893595593691306260, -0.893573148927395140, +-0.893550701929551220, -0.893528252697830320, -0.893505801232288950, -0.893483347532983090, -0.893460891599968890, -0.893438433433302310, -0.893415973033039770, -0.893393510399237310, +-0.893371045531951010, -0.893348578431237050, -0.893326109097151710, -0.893303637529751170, -0.893281163729091500, -0.893258687695228760, -0.893236209428219460, -0.893213728928119680, +-0.893191246194985580, -0.893168761228873120, -0.893146274029838930, -0.893123784597939060, -0.893101292933229820, -0.893078799035767150, -0.893056302905607560, -0.893033804542807340, +-0.893011303947422340, -0.892988801119509290, -0.892966296059124250, -0.892943788766323410, -0.892921279241162940, -0.892898767483699560, -0.892876253493989140, -0.892853737272088170, +-0.892831218818052610, -0.892808698131939190, -0.892786175213803990, -0.892763650063703510, -0.892741122681693590, -0.892718593067831080, -0.892696061222172040, -0.892673527144772880, +-0.892650990835689770, -0.892628452294979220, -0.892605911522697750, -0.892583368518901190, -0.892560823283646390, -0.892538275816989520, -0.892515726118987110, -0.892493174189694980, +-0.892470620029170210, -0.892448063637468980, -0.892425505014647460, -0.892402944160762050, -0.892380381075869480, -0.892357815760025820, -0.892335248213287800, -0.892312678435711380, +-0.892290106427353510, -0.892267532188270260, -0.892244955718518360, -0.892222377018153770, -0.892199796087233430, -0.892177212925813530, -0.892154627533950470, -0.892132039911701090, +-0.892109450059121570, -0.892086857976268410, -0.892064263663197910, -0.892041667119967020, -0.892019068346631920, -0.891996467343249110, -0.891973864109874890, -0.891951258646566330, +-0.891928650953379590, -0.891906041030371190, -0.891883428877597530, -0.891860814495115450, -0.891838197882981350, -0.891815579041251750, -0.891792957969983040, -0.891770334669232060, +-0.891747709139055320, -0.891725081379509120, -0.891702451390650300, -0.891679819172535470, -0.891657184725221040, -0.891634548048763410, -0.891611909143219750, -0.891589268008646130, +-0.891566624645099500, -0.891543979052636050, -0.891521331231312830, -0.891498681181186360, -0.891476028902313030, -0.891453374394749590, -0.891430717658552860, -0.891408058693779260, +-0.891385397500485620, -0.891362734078728240, -0.891340068428564280, -0.891317400550050040, -0.891294730443242370, -0.891272058108197650, -0.891249383544973070, -0.891226706753624920, +-0.891204027734209920, -0.891181346486784930, -0.891158663011406670, -0.891135977308131650, -0.891113289377016500, -0.891090599218118400, -0.891067906831493840, -0.891045212217199340, +-0.891022515375291760, -0.890999816305828030, -0.890977115008864780, -0.890954411484458750, -0.890931705732666450, -0.890908997753545150, -0.890886287547151380, -0.890863575113541860, +-0.890840860452773110, -0.890818143564902520, -0.890795424449986490, -0.890772703108081760, -0.890749979539245400, -0.890727253743534230, -0.890704525721004780, -0.890681795471713890, +-0.890659062995718730, -0.890636328293075820, -0.890613591363842220, -0.890590852208074320, -0.890568110825829540, -0.890545367217164490, -0.890522621382136000, -0.890499873320800830, +-0.890477123033216130, -0.890454370519438540, -0.890431615779525120, -0.890408858813532490, -0.890386099621517820, -0.890363338203537970, -0.890340574559649540, -0.890317808689909840, +-0.890295040594375700, -0.890272270273103960, -0.890249497726151250, -0.890226722953575080, -0.890203945955432060, -0.890181166731779160, -0.890158385282673210, -0.890135601608171510, +-0.890112815708330670, -0.890090027583207990, -0.890067237232859850, -0.890044444657343890, -0.890021649856716830, -0.889998852831035640, -0.889976053580357140, -0.889953252104738750, +-0.889930448404237180, -0.889907642478909410, -0.889884834328812380, -0.889862023954003490, -0.889839211354539580, -0.889816396530477390, -0.889793579481874430, -0.889770760208787540, +-0.889747938711273670, -0.889725114989389780, -0.889702289043193370, -0.889679460872741190, -0.889656630478090400, -0.889633797859297750, -0.889610963016420840, -0.889588125949516530, +-0.889565286658641980, -0.889542445143853940, -0.889519601405209910, -0.889496755442766960, -0.889473907256582150, -0.889451056846712330, -0.889428204213215110, -0.889405349356147350, +-0.889382492275565980, -0.889359632971528650, -0.889336771444092180, -0.889313907693313870, -0.889291041719250550, -0.889268173521959750, -0.889245303101498630, -0.889222430457924150, +-0.889199555591293490, -0.889176678501664040, -0.889153799189092990, -0.889130917653637390, -0.889108033895354310, -0.889085147914301270, -0.889062259710535430, -0.889039369284113980, +-0.889016476635093870, -0.888993581763532830, -0.888970684669487700, -0.888947785353015770, -0.888924883814174560, -0.888901980053021120, -0.888879074069612640, -0.888856165864006400, +-0.888833255436259910, -0.888810342786430340, -0.888787427914574880, -0.888764510820750590, -0.888741591505015300, -0.888718669967425990, -0.888695746208039930, -0.888672820226914410, +-0.888649892024107050, -0.888626961599674910, -0.888604028953675410, -0.888581094086165590, -0.888558156997203200, -0.888535217686845510, -0.888512276155149490, -0.888489332402173090, +-0.888466386427973260, -0.888443438232607520, -0.888420487816133030, -0.888397535178607420, -0.888374580320087980, -0.888351623240632100, -0.888328663940296970, -0.888305702419140420, +-0.888282738677219630, -0.888259772714591890, -0.888236804531314590, -0.888213834127445480, -0.888190861503041830, -0.888167886658160930, -0.888144909592860190, -0.888121930307197330, +-0.888098948801229640, -0.888075965075014630, -0.888052979128609480, -0.888029990962072020, -0.888007000575459670, -0.887984007968829590, -0.887961013142239630, -0.887938016095747300, +-0.887915016829409760, -0.887892015343284550, -0.887869011637429480, -0.887846005711901980, -0.887822997566759310, -0.887799987202058990, -0.887776974617858980, -0.887753959814216450, +-0.887730942791189140, -0.887707923548834100, -0.887684902087209630, -0.887661878406372780, -0.887638852506381300, -0.887615824387292470, -0.887592794049164250, -0.887569761492054020, +-0.887546726716019310, -0.887523689721117840, -0.887500650507407230, -0.887477609074945000, -0.887454565423788530, -0.887431519553995800, -0.887408471465624290, -0.887385421158731650, +-0.887362368633375250, -0.887339313889613070, -0.887316256927502710, -0.887293197747101580, -0.887270136348467410, -0.887247072731657930, -0.887224006896730870, -0.887200938843743850, +-0.887177868572754160, -0.887154796083819970, -0.887131721376998920, -0.887108644452348270, -0.887085565309926330, -0.887062483949790370, -0.887039400371998240, -0.887016314576607350, +-0.886993226563675960, -0.886970136333261490, -0.886947043885421670, -0.886923949220214000, -0.886900852337696670, -0.886877753237927280, -0.886854651920963470, -0.886831548386862730, +-0.886808442635683370, -0.886785334667482990, -0.886762224482319230, -0.886739112080249690, -0.886715997461332560, -0.886692880625625460, -0.886669761573186220, -0.886646640304072250, +-0.886623516818341950, -0.886600391116052820, -0.886577263197262600, -0.886554133062029350, -0.886531000710410800, -0.886507866142464680, -0.886484729358248740, -0.886461590357821240, +-0.886438449141239700, -0.886415305708562080, -0.886392160059845890, -0.886369012195149630, -0.886345862114530700, -0.886322709818047280, -0.886299555305756770, -0.886276398577717560, +-0.886253239633987500, -0.886230078474624210, -0.886206915099685520, -0.886183749509229850, -0.886160581703314690, -0.886137411681997890, -0.886114239445337850, -0.886091064993392070, +-0.886067888326218740, -0.886044709443875480, -0.886021528346420670, -0.885998345033911950, -0.885975159506407480, -0.885951971763964790, -0.885928781806642470, -0.885905589634498170, +-0.885882395247589830, -0.885859198645975400, -0.885835999829713060, -0.885812798798860770, -0.885789595553476580, -0.885766390093618130, -0.885743182419343910, -0.885719972530711660, +-0.885696760427779340, -0.885673546110605340, -0.885650329579247500, -0.885627110833763780, -0.885603889874212010, -0.885580666700650830, -0.885557441313137960, -0.885534213711731470, +-0.885510983896489300, -0.885487751867469860, -0.885464517624731000, -0.885441281168330870, -0.885418042498327230, -0.885394801614778790, -0.885371558517743410, -0.885348313207279030, +-0.885325065683443710, -0.885301815946295870, -0.885278563995893550, -0.885255309832294610, -0.885232053455557550, -0.885208794865740440, -0.885185534062901350, -0.885162271047098100, +-0.885139005818389450, -0.885115738376833330, -0.885092468722487810, -0.885069196855410970, -0.885045922775661300, -0.885022646483296760, -0.884999367978375640, -0.884976087260956000, +-0.884952804331096240, -0.884929519188854430, -0.884906231834288960, -0.884882942267457560, -0.884859650488419190, -0.884836356497231580, -0.884813060293953010, -0.884789761878641670, +-0.884766461251356160, -0.884743158412154450, -0.884719853361094710, -0.884696546098235450, -0.884673236623634840, -0.884649924937351170, -0.884626611039442510, -0.884603294929967480, +-0.884579976608984240, -0.884556656076550980, -0.884533333332725990, -0.884510008377567770, -0.884486681211134610, -0.884463351833484680, -0.884440020244676160, -0.884416686444767900, +-0.884393350433817840, -0.884370012211884380, -0.884346671779025820, -0.884323329135300650, -0.884299984280767170, -0.884276637215483550, -0.884253287939508640, -0.884229936452900380, +-0.884206582755717290, -0.884183226848017530, -0.884159868729859970, -0.884136508401302760, -0.884113145862404190, -0.884089781113222670, -0.884066414153816820, -0.884043044984244910, +-0.884019673604565460, -0.883996300014836530, -0.883972924215117080, -0.883949546205465400, -0.883926165985939760, -0.883902783556598570, -0.883879398917500670, -0.883856012068704120, +-0.883832623010267440, -0.883809231742249460, -0.883785838264708250, -0.883762442577702530, -0.883739044681290500, -0.883715644575531090, -0.883692242260482490, -0.883668837736203310, +-0.883645431002751840, -0.883622022060187030, -0.883598610908567170, -0.883575197547950770, -0.883551781978396120, -0.883528364199962280, -0.883504944212707530, -0.883481522016690390, +-0.883458097611969250, -0.883434670998603070, -0.883411242176650240, -0.883387811146169270, -0.883364377907218560, -0.883340942459857060, -0.883317504804143280, -0.883294064940135510, +-0.883270622867892820, -0.883247178587473590, -0.883223732098936340, -0.883200283402339580, -0.883176832497742370, -0.883153379385203000, -0.883129924064780300, -0.883106466536532460, +-0.883083006800518660, -0.883059544856797380, -0.883036080705427270, -0.883012614346466720, -0.882989145779974890, -0.882965675006010200, -0.882942202024631250, -0.882918726835896560, +-0.882895249439865300, -0.882871769836595990, -0.882848288026147010, -0.882824804008577440, -0.882801317783945990, -0.882777829352311190, -0.882754338713731550, -0.882730845868266330, +-0.882707350815973960, -0.882683853556913260, -0.882660354091142630, -0.882636852418721470, -0.882613348539708080, -0.882589842454161280, -0.882566334162139810, -0.882542823663702620, +-0.882519310958908340, -0.882495796047815810, -0.882472278930483630, -0.882448759606970890, -0.882425238077336300, -0.882401714341638390, -0.882378188399936430, -0.882354660252288920, +-0.882331129898754840, -0.882307597339392680, -0.882284062574261730, -0.882260525603420720, -0.882236986426928270, -0.882213445044843230, -0.882189901457224760, -0.882166355664131490, +-0.882142807665622470, -0.882119257461756120, -0.882095705052591830, -0.882072150438188320, -0.882048593618604330, -0.882025034593898800, -0.882001473364130820, -0.881977909929359090, +-0.881954344289642700, -0.881930776445040140, -0.881907206395610930, -0.881883634141413690, -0.881860059682507140, -0.881836483018950680, -0.881812904150802930, -0.881789323078122970, +-0.881765739800969510, -0.881742154319401950, -0.881718566633478920, -0.881694976743259470, -0.881671384648802460, -0.881647790350167160, -0.881624193847412310, -0.881600595140597080, +-0.881576994229780090, -0.881553391115020850, -0.881529785796378080, -0.881506178273910870, -0.881482568547678040, -0.881458956617738990, -0.881435342484152560, -0.881411726146977600, +-0.881388107606273510, -0.881364486862099120, -0.881340863914513490, -0.881317238763575480, -0.881293611409344590, -0.881269981851879770, -0.881246350091239860, -0.881222716127483930, +-0.881199079960671480, -0.881175441590861250, -0.881151801018112410, -0.881128158242483920, -0.881104513264035270, -0.881080866082825210, -0.881057216698913130, -0.881033565112357640, +-0.881009911323218600, -0.880986255331554720, -0.880962597137424970, -0.880938936740888970, -0.880915274142005660, -0.880891609340834100, -0.880867942337433260, -0.880844273131862860, +-0.880820601724181750, -0.880796928114449210, -0.880773252302724070, -0.880749574289065970, -0.880725894073533970, -0.880702211656187230, -0.880678527037084820, -0.880654840216286260, +-0.880631151193850600, -0.880607459969837030, -0.880583766544304590, -0.880560070917313030, -0.880536373088921190, -0.880512673059188230, -0.880488970828173900, -0.880465266395937030, +-0.880441559762537020, -0.880417850928032930, -0.880394139892484380, -0.880370426655950560, -0.880346711218490620, -0.880322993580163640, -0.880299273741029450, -0.880275551701147130, +-0.880251827460575840, -0.880228101019374760, -0.880204372377603740, -0.880180641535321720, -0.880156908492588100, -0.880133173249461940, -0.880109435806003200, -0.880085696162270730, +-0.880061954318324120, -0.880038210274222350, -0.880014464030025260, -0.879990715585792120, -0.879966964941581890, -0.879943212097454410, -0.879919457053468970, -0.879895699809684850, +-0.879871940366161340, -0.879848178722958170, -0.879824414880134520, -0.879800648837749890, -0.879776880595863340, -0.879753110154534830, -0.879729337513823540, -0.879705562673788970, +-0.879681785634490180, -0.879658006395987240, -0.879634224958339210, -0.879610441321605710, -0.879586655485845800, -0.879562867451119450, -0.879539077217486030, -0.879515284785004630, +-0.879491490153735290, -0.879467693323737200, -0.879443894295069860, -0.879420093067792560, -0.879396289641965260, -0.879372484017647230, -0.879348676194897980, -0.879324866173776920, +-0.879301053954343770, -0.879277239536658040, -0.879253422920779240, -0.879229604106766650, -0.879205783094680230, -0.879181959884579370, -0.879158134476523690, -0.879134306870572370, +-0.879110477066785580, -0.879086645065222490, -0.879062810865942620, -0.879038974469005920, -0.879015135874471890, -0.878991295082399930, -0.878967452092849430, -0.878943606905880690, +-0.878919759521552770, -0.878895909939925610, -0.878872058161058400, -0.878848204185011190, -0.878824348011843500, -0.878800489641615060, -0.878776629074385030, -0.878752766310213710, +-0.878728901349160480, -0.878705034191284980, -0.878681164836646710, -0.878657293285305620, -0.878633419537321440, -0.878609543592753670, -0.878585665451661830, -0.878561785114105990, +-0.878537902580145750, -0.878514017849840510, -0.878490130923250460, -0.878466241800435090, -0.878442350481454140, -0.878418456966367000, -0.878394561255233960, -0.878370663348114640, +-0.878346763245068550, -0.878322860946155300, -0.878298956451435190, -0.878275049760967710, -0.878251140874812600, -0.878227229793029360, -0.878203316515678290, -0.878179401042818890, +-0.878155483374511100, -0.878131563510814230, -0.878107641451788770, -0.878083717197494230, -0.878059790747990120, -0.878035862103336730, -0.878011931263593780, -0.877987998228820900, +-0.877964062999077920, -0.877940125574424910, -0.877916185954921600, -0.877892244140627830, -0.877868300131603220, -0.877844353927908160, -0.877820405529602170, -0.877796454936745070, +-0.877772502149396730, -0.877748547167617300, -0.877724589991466520, -0.877700630621004340, -0.877676669056290270, -0.877652705297384710, -0.877628739344347490, -0.877604771197238120, +-0.877580800856117120, -0.877556828321044090, -0.877532853592079000, -0.877508876669281460, -0.877484897552712080, -0.877460916242430390, -0.877436932738496430, -0.877412947040969840, +-0.877388959149911220, -0.877364969065380200, -0.877340976787436720, -0.877316982316140530, -0.877292985651552120, -0.877268986793731330, -0.877244985742737900, -0.877220982498632010, +-0.877196977061473700, -0.877172969431323060, -0.877148959608239800, -0.877124947592284210, -0.877100933383516360, -0.877076916981996190, -0.877052898387783440, -0.877028877600938730, +-0.877004854621521780, -0.876980829449592770, -0.876956802085211320, -0.876932772528438260, -0.876908740779333120, -0.876884706837956270, -0.876860670704367350, -0.876836632378626970, +-0.876812591860794970, -0.876788549150931520, -0.876764504249096580, -0.876740457155350540, -0.876716407869753240, -0.876692356392365090, -0.876668302723245700, -0.876644246862455790, +-0.876620188810055320, -0.876596128566104140, -0.876572066130662850, -0.876548001503791420, -0.876523934685550010, -0.876499865675998470, -0.876475794475197520, -0.876451721083207120, +-0.876427645500087340, -0.876403567725898340, -0.876379487760700520, -0.876355405604554050, -0.876331321257519000, -0.876307234719655550, -0.876283145991024190, -0.876259055071684890, +-0.876234961961698030, -0.876210866661123470, -0.876186769170022030, -0.876162669488453670, -0.876138567616478350, -0.876114463554156900, -0.876090357301549270, -0.876066248858715760, +-0.876042138225716300, -0.876018025402611870, -0.875993910389462280, -0.875969793186327950, -0.875945673793268930, -0.875921552210345960, -0.875897428437619090, -0.875873302475148610, +-0.875849174322994690, -0.875825043981217970, -0.875800911449878820, -0.875776776729037200, -0.875752639818753510, -0.875728500719088480, -0.875704359430102160, -0.875680215951854750, +-0.875656070284406950, -0.875631922427819060, -0.875607772382151260, -0.875583620147463940, -0.875559465723817710, -0.875535309111272750, -0.875511150309889690, -0.875486989319728350, +-0.875462826140849910, -0.875438660773314340, -0.875414493217182120, -0.875390323472513440, -0.875366151539369140, -0.875341977417809500, -0.875317801107894920, -0.875293622609685680, +-0.875269441923242520, -0.875245259048625710, -0.875221073985895880, -0.875196886735113090, -0.875172697296338290, -0.875148505669631760, -0.875124311855053680, -0.875100115852665120, +-0.875075917662526240, -0.875051717284697660, -0.875027514719239450, -0.875003309966212670, -0.874979103025677720, -0.874954893897694870, -0.874930682582324650, -0.874906469079627990, +-0.874882253389665080, -0.874858035512496520, -0.874833815448182730, -0.874809593196784530, -0.874785368758362440, -0.874761142132976950, -0.874736913320688260, -0.874712682321557630, +-0.874688449135645250, -0.874664213763011510, -0.874639976203717360, -0.874615736457823420, -0.874591494525390090, -0.874567250406477760, -0.874543004101147600, -0.874518755609459910, +-0.874494504931475400, -0.874470252067254260, -0.874445997016857770, -0.874421739780346320, -0.874397480357780530, -0.874373218749220800, -0.874348954954728200, -0.874324688974363220, +-0.874300420808186600, -0.874276150456258620, -0.874251877918640450, -0.874227603195392720, -0.874203326286575710, -0.874179047192250590, -0.874154765912477760, -0.874130482447318170, +-0.874106196796832100, -0.874081908961080730, -0.874057618940124570, -0.874033326734024450, -0.874009032342840770, -0.873984735766634710, -0.873960437005466770, -0.873936136059397790, +-0.873911832928488170, -0.873887527612799310, -0.873863220112391590, -0.873838910427325750, -0.873814598557662410, -0.873790284503462970, -0.873765968264787700, -0.873741649841697220, +-0.873717329234252940, -0.873693006442515240, -0.873668681466545080, -0.873644354306403080, -0.873620024962150300, -0.873595693433847460, -0.873571359721555530, -0.873547023825334780, +-0.873522685745246830, -0.873498345481352080, -0.873474003033711590, -0.873449658402385750, -0.873425311587436080, -0.873400962588923080, -0.873376611406907590, -0.873352258041450450, +-0.873327902492612940, -0.873303544760455570, -0.873279184845039300, -0.873254822746424960, -0.873230458464673730, -0.873206091999846330, -0.873181723352003610, -0.873157352521206740, +-0.873132979507516340, -0.873108604310993690, -0.873084226931699180, -0.873059847369694440, -0.873035465625039970, -0.873011081697796950, -0.872986695588025880, -0.872962307295788390, +-0.872937916821145080, -0.872913524164157020, -0.872889129324884830, -0.872864732303390120, -0.872840333099733630, -0.872815931713976200, -0.872791528146178770, -0.872767122396402750, +-0.872742714464708860, -0.872718304351158050, -0.872693892055811720, -0.872669477578730590, -0.872645060919975730, -0.872620642079608100, -0.872596221057688970, -0.872571797854279410, +-0.872547372469440250, -0.872522944903232570, -0.872498515155717640, -0.872474083226956410, -0.872449649117010060, -0.872425212825939320, -0.872400774353805700, -0.872376333700670250, +-0.872351890866593930, -0.872327445851637680, -0.872302998655862920, -0.872278549279330790, -0.872254097722102050, -0.872229643984238300, -0.872205188065800390, -0.872180729966849590, +-0.872156269687446640, -0.872131807227653270, -0.872107342587530420, -0.872082875767139170, -0.872058406766540560, -0.872033935585796120, -0.872009462224966890, -0.871984986684113950, +-0.871960508963298350, -0.871936029062581720, -0.871911546982024890, -0.871887062721689370, -0.871862576281635880, -0.871838087661926160, -0.871813596862621280, -0.871789103883782280, +-0.871764608725470460, -0.871740111387747210, -0.871715611870673810, -0.871691110174311110, -0.871666606298720730, -0.871642100243963940, -0.871617592010101920, -0.871593081597195730, +-0.871568569005306990, -0.871544054234496880, -0.871519537284826560, -0.871495018156357220, -0.871470496849150570, -0.871445973363267680, -0.871421447698769840, -0.871396919855718100, +-0.871372389834174420, -0.871347857634199640, -0.871323323255855260, -0.871298786699202350, -0.871274247964302750, -0.871249707051217400, -0.871225163960007710, -0.871200618690735280, +-0.871176071243461190, -0.871151521618247050, -0.871126969815153920, -0.871102415834243530, -0.871077859675577050, -0.871053301339215990, -0.871028740825221410, -0.871004178133655160, +-0.870979613264578620, -0.870955046218052860, -0.870930476994139390, -0.870905905592899930, -0.870881332014395660, -0.870856756258688080, -0.870832178325838480, -0.870807598215908580, +-0.870783015928959680, -0.870758431465052940, -0.870733844824250420, -0.870709256006613310, -0.870684665012203100, -0.870660071841080960, -0.870635476493308860, -0.870610878968947950, +-0.870586279268059980, -0.870561677390706110, -0.870537073336948190, -0.870512467106847600, -0.870487858700465860, -0.870463248117864350, -0.870438635359104820, -0.870414020424248760, +-0.870389403313357570, -0.870364784026492640, -0.870340162563716050, -0.870315538925089060, -0.870290913110672970, -0.870266285120529840, -0.870241654954720940, -0.870217022613308020, +-0.870192388096352240, -0.870167751403915670, -0.870143112536059800, -0.870118471492846160, -0.870093828274336010, -0.870069182880591650, -0.870044535311674250, -0.870019885567645530, +-0.869995233648566790, -0.869970579554500300, -0.869945923285507350, -0.869921264841649560, -0.869896604222988420, -0.869871941429586020, -0.869847276461503730, -0.869822609318803170, +-0.869797940001545980, -0.869773268509794080, -0.869748594843609110, -0.869723919003052350, -0.869699240988185960, -0.869674560799071570, -0.869649878435770800, -0.869625193898345030, +-0.869600507186856550, -0.869575818301366770, -0.869551127241937500, -0.869526434008630060, -0.869501738601506920, -0.869477041020629280, -0.869452341266059080, -0.869427639337857940, +-0.869402935236087800, -0.869378228960810300, -0.869353520512087250, -0.869328809889980290, -0.869304097094551360, -0.869279382125862310, -0.869254664983974520, -0.869229945668950400, +-0.869205224180851220, -0.869180500519739160, -0.869155774685675510, -0.869131046678722760, -0.869106316498942320, -0.869081584146396020, -0.869056849621145600, -0.869032112923253330, +-0.869007374052780720, -0.868982633009789730, -0.868957889794341850, -0.868933144406499600, -0.868908396846324370, -0.868883647113878220, -0.868858895209222660, -0.868834141132420080, +-0.868809384883532210, -0.868784626462620670, -0.868759865869747740, -0.868735103104975150, -0.868710338168364850, -0.868685571059978460, -0.868660801779878260, -0.868636030328126200, +-0.868611256704784010, -0.868586480909913420, -0.868561702943576930, -0.868536922805836050, -0.868512140496752960, -0.868487356016389270, -0.868462569364807480, -0.868437780542069220, +-0.868412989548236540, -0.868388196383371060, -0.868363401047535400, -0.868338603540791290, -0.868313803863200560, -0.868289002014825170, -0.868264197995727400, -0.868239391805969210, +-0.868214583445612310, -0.868189772914719220, -0.868164960213351660, -0.868140145341571690, -0.868115328299441160, -0.868090509087022450, -0.868065687704377530, -0.868040864151568450, +-0.868016038428656930, -0.867991210535705490, -0.867966380472776080, -0.867941548239930750, -0.867916713837231240, -0.867891877264740260, -0.867867038522519450, -0.867842197610631190, +-0.867817354529137110, -0.867792509278099920, -0.867767661857581470, -0.867742812267643600, -0.867717960508349040, -0.867693106579759400, -0.867668250481937080, -0.867643392214943910, +-0.867618531778842520, -0.867593669173694740, -0.867568804399562850, -0.867543937456508710, -0.867519068344594910, -0.867494197063883420, -0.867469323614436520, -0.867444447996316040, +-0.867419570209584710, -0.867394690254304380, -0.867369808130537320, -0.867344923838345610, -0.867320037377791730, -0.867295148748937760, -0.867270257951845760, -0.867245364986578340, +-0.867220469853197450, -0.867195572551765380, -0.867170673082344190, -0.867145771444996490, -0.867120867639784470, -0.867095961666770170, -0.867071053526015770, -0.867046143217584000, +-0.867021230741536920, -0.866996316097936700, -0.866971399286845410, -0.866946480308325880, -0.866921559162440180, -0.866896635849250590, -0.866871710368819160, -0.866846782721208630, +-0.866821852906481280, -0.866796920924698950, -0.866771986775924600, -0.866747050460220270, -0.866722111977648370, -0.866697171328270840, -0.866672228512150640, -0.866647283529349940, +-0.866622336379931020, -0.866597387063956060, -0.866572435581487780, -0.866547481932588460, -0.866522526117320390, -0.866497568135745740, -0.866472607987927470, -0.866447645673927740, +-0.866422681193808830, -0.866397714547632920, -0.866372745735463080, -0.866347774757361360, -0.866322801613390150, -0.866297826303611630, -0.866272848828088860, -0.866247869186884010, +-0.866222887380059260, -0.866197903407677440, -0.866172917269800950, -0.866147928966492060, -0.866122938497813190, -0.866097945863827160, -0.866072951064596360, -0.866047954100183090, +-0.866022954970649740, -0.865997953676059250, -0.865972950216473800, -0.865947944591956010, -0.865922936802568160, -0.865897926848373190, -0.865872914729433400, -0.865847900445811390, +-0.865822883997569240, -0.865797865384770220, -0.865772844607476610, -0.865747821665750480, -0.865722796559655120, -0.865697769289252790, -0.865672739854606020, -0.865647708255777190, +-0.865622674492829260, -0.865597638565824720, -0.865572600474825980, -0.865547560219895540, -0.865522517801096460, -0.865497473218491130, -0.865472426472142060, -0.865447377562111760, +-0.865422326488463180, -0.865397273251258810, -0.865372217850561180, -0.865347160286432880, -0.865322100558936880, -0.865297038668135570, -0.865271974614091550, -0.865246908396867690, +-0.865221840016526690, -0.865196769473130960, -0.865171696766743210, -0.865146621897426420, -0.865121544865242950, -0.865096465670255780, -0.865071384312527060, -0.865046300792120190, +-0.865021215109097570, -0.864996127263521930, -0.864971037255455770, -0.864945945084962140, -0.864920850752103790, -0.864895754256943210, -0.864870655599543010, -0.864845554779966500, +-0.864820451798275940, -0.864795346654534390, -0.864770239348804150, -0.864745129881148600, -0.864720018251630250, -0.864694904460311610, -0.864669788507255950, -0.864644670392525790, +-0.864619550116183970, -0.864594427678292980, -0.864569303078916220, -0.864544176318116200, -0.864519047395955640, -0.864493916312497390, -0.864468783067804500, -0.864443647661939600, +-0.864418510094965730, -0.864393370366945190, -0.864368228477941590, -0.864343084428017330, -0.864317938217235350, -0.864292789845658380, -0.864267639313349600, -0.864242486620371730, +-0.864217331766787390, -0.864192174752660080, -0.864167015578052200, -0.864141854243026810, -0.864116690747646520, -0.864091525091974840, -0.864066357276074280, -0.864041187300007780, +-0.864016015163838190, -0.863990840867628670, -0.863965664411442180, -0.863940485795341440, -0.863915305019389290, -0.863890122083649130, -0.863864936988183670, -0.863839749733055770, +-0.863814560318328370, -0.863789368744064760, -0.863764175010327650, -0.863738979117180010, -0.863713781064685100, -0.863688580852905790, -0.863663378481904890, -0.863638173951745470, +-0.863612967262490700, -0.863587758414203540, -0.863562547406947050, -0.863537334240783940, -0.863512118915777730, -0.863486901431991250, -0.863461681789487460, -0.863436459988329300, +-0.863411236028580160, -0.863386009910302900, -0.863360781633560670, -0.863335551198416320, -0.863310318604933240, -0.863285083853174370, -0.863259846943202570, -0.863234607875081330, +-0.863209366648873600, -0.863184123264642560, -0.863158877722450920, -0.863133630022362320, -0.863108380164439580, -0.863083128148745880, -0.863057873975344170, -0.863032617644298060, +-0.863007359155670390, -0.862982098509524230, -0.862956835705922630, -0.862931570744929210, -0.862906303626606920, -0.862881034351018820, -0.862855762918227850, -0.862830489328297760, +-0.862805213581291470, -0.862779935677272070, -0.862754655616302600, -0.862729373398446800, -0.862704089023767500, -0.862678802492327760, -0.862653513804191310, -0.862628222959420990, +-0.862602929958080190, -0.862577634800231750, -0.862552337485939510, -0.862527038015266420, -0.862501736388275760, -0.862476432605030490, -0.862451126665594310, -0.862425818570030420, +-0.862400508318401980, -0.862375195910771940, -0.862349881347204250, -0.862324564627761750, -0.862299245752507940, -0.862273924721505770, -0.862248601534818970, -0.862223276192510710, +-0.862197948694644060, -0.862172619041282730, -0.862147287232489790, -0.862121953268328740, -0.862096617148862430, -0.862071278874154910, -0.862045938444269240, -0.862020595859268600, +-0.861995251119216380, -0.861969904224176190, -0.861944555174211200, -0.861919203969384930, -0.861893850609760310, -0.861868495095401310, -0.861843137426371090, -0.861817777602733040, +-0.861792415624550330, -0.861767051491886820, -0.861741685204805650, -0.861716316763370130, -0.861690946167643860, -0.861665573417690340, -0.861640198513572870, -0.861614821455354730, +-0.861589442243099750, -0.861564060876871100, -0.861538677356732290, -0.861513291682746600, -0.861487903854977870, -0.861462513873489490, -0.861437121738344750, -0.861411727449607030, +-0.861386331007340080, -0.861360932411607380, -0.861335531662472450, -0.861310128759998350, -0.861284723704249130, -0.861259316495288200, -0.861233907133178930, -0.861208495617984630, +-0.861183081949769450, -0.861157666128596460, -0.861132248154529050, -0.861106828027631280, -0.861081405747966430, -0.861055981315598130, -0.861030554730589650, -0.861005125993004940, +-0.860979695102907390, -0.860954262060360740, -0.860928826865428040, -0.860903389518173580, -0.860877950018660740, -0.860852508366952930, -0.860827064563113640, -0.860801618607206830, +-0.860776170499296110, -0.860750720239444880, -0.860725267827716630, -0.860699813264175440, -0.860674356548884690, -0.860648897681907890, -0.860623436663309090, -0.860597973493151590, +-0.860572508171499220, -0.860547040698415370, -0.860521571073964210, -0.860496099298209030, -0.860470625371213550, -0.860445149293041390, -0.860419671063756500, -0.860394190683422490, +-0.860368708152102980, -0.860343223469861470, -0.860317736636762140, -0.860292247652868490, -0.860266756518244250, -0.860241263232952800, -0.860215767797058440, -0.860190270210624660, +-0.860164770473714980, -0.860139268586393670, -0.860113764548724120, -0.860088258360770190, -0.860062750022595360, -0.860037239534263920, -0.860011726895839380, -0.859986212107385460, +-0.859960695168965890, -0.859935176080644740, -0.859909654842485600, -0.859884131454552340, -0.859858605916908660, -0.859833078229618520, -0.859807548392745760, -0.859782016406354210, +-0.859756482270507270, -0.859730945985269450, -0.859705407550704130, -0.859679866966875150, -0.859654324233846800, -0.859628779351682470, -0.859603232320446330, -0.859577683140201780, +-0.859552131811013310, -0.859526578332944550, -0.859501022706059330, -0.859475464930421260, -0.859449905006094860, -0.859424342933143630, -0.859398778711631510, -0.859373212341622230, +-0.859347643823180190, -0.859322073156368990, -0.859296500341252710, -0.859270925377894850, -0.859245348266359900, -0.859219769006711600, -0.859194187599014000, -0.859168604043330510, +-0.859143018339725840, -0.859117430488263610, -0.859091840489007550, -0.859066248342022170, -0.859040654047371180, -0.859015057605118540, -0.858989459015327970, -0.858963858278063990, +-0.858938255393390420, -0.858912650361371210, -0.858887043182070100, -0.858861433855551580, -0.858835822381879610, -0.858810208761118020, -0.858784592993330540, -0.858758975078582010, +-0.858733355016935930, -0.858707732808456470, -0.858682108453207470, -0.858656481951253440, -0.858630853302658200, -0.858605222507485610, -0.858579589565800160, -0.858553954477665800, +-0.858528317243146490, -0.858502677862306160, -0.858477036335209440, -0.858451392661920050, -0.858425746842502170, -0.858400098877019730, -0.858374448765537260, -0.858348796508118680, +-0.858323142104828070, -0.858297485555729490, -0.858271826860887320, -0.858246166020365630, -0.858220503034228480, -0.858194837902539920, -0.858169170625364350, -0.858143501202766060, +-0.858117829634808650, -0.858092155921556850, -0.858066480063074730, -0.858040802059426460, -0.858015121910675860, -0.857989439616887780, -0.857963755178126060, -0.857938068594454980, +-0.857912379865938380, -0.857886688992641200, -0.857860995974627280, -0.857835300811960800, -0.857809603504705920, -0.857783904052927150, -0.857758202456688770, -0.857732498716054730, +-0.857706792831089300, -0.857681084801857120, -0.857655374628422230, -0.857629662310848810, -0.857603947849201130, -0.857578231243543710, -0.857552512493940820, -0.857526791600456420, +-0.857501068563155110, -0.857475343382101300, -0.857449616057359030, -0.857423886588992490, -0.857398154977066510, -0.857372421221645140, -0.857346685322792680, -0.857320947280573400, +-0.857295207095051800, -0.857269464766292290, -0.857243720294359140, -0.857217973679316400, -0.857192224921229040, -0.857166474020161000, -0.857140720976176770, -0.857114965789340650, +-0.857089208459717260, -0.857063448987370860, -0.857037687372365520, -0.857011923614766300, -0.856986157714637260, -0.856960389672042800, -0.856934619487047190, -0.856908847159715160, +-0.856883072690111100, -0.856857296078299300, -0.856831517324344150, -0.856805736428310260, -0.856779953390262140, -0.856754168210264070, -0.856728380888380440, -0.856702591424676090, +-0.856676799819215180, -0.856651006072062350, -0.856625210183281640, -0.856599412152938220, -0.856573611981096270, -0.856547809667820070, -0.856522005213174680, -0.856496198617224150, +-0.856470389880033100, -0.856444579001665930, -0.856418765982187470, -0.856392950821662110, -0.856367133520154370, -0.856341314077728620, -0.856315492494449830, -0.856289668770382150, +-0.856263842905590430, -0.856238014900138960, -0.856212184754092550, -0.856186352467515730, -0.856160518040472880, -0.856134681473028740, -0.856108842765248010, -0.856083001917195110, +-0.856057158928934530, -0.856031313800531320, -0.856005466532049790, -0.855979617123554640, -0.855953765575110160, -0.855927911886781520, -0.855902056058633120, -0.855876198090729570, +-0.855850337983135260, -0.855824475735915470, -0.855798611349134370, -0.855772744822856700, -0.855746876157146950, -0.855721005352070410, -0.855695132407691130, -0.855669257324074170, +-0.855643380101283820, -0.855617500739385140, -0.855591619238442850, -0.855565735598521450, -0.855539849819685450, -0.855513961902000130, -0.855488071845529880, -0.855462179650339220, +-0.855436285316493290, -0.855410388844056620, -0.855384490233094040, -0.855358589483670050, -0.855332686595849820, -0.855306781569697750, -0.855280874405278890, -0.855254965102657420, +-0.855229053661898940, -0.855203140083067750, -0.855177224366228780, -0.855151306511446440, -0.855125386518786110, -0.855099464388312190, -0.855073540120089740, -0.855047613714183140, +-0.855021685170657800, -0.854995754489578320, -0.854969821671009100, -0.854943886715015530, -0.854917949621662340, -0.854892010391014150, -0.854866069023135890, -0.854840125518092520, +-0.854814179875948990, -0.854788232096769800, -0.854762282180620000, -0.854736330127564670, -0.854710375937668410, -0.854684419610996390, -0.854658461147612900, -0.854632500547583660, +-0.854606537810973070, -0.854580572937846170, -0.854554605928267600, -0.854528636782302730, -0.854502665500016300, -0.854476692081472920, -0.854450716526738100, -0.854424738835876440, +-0.854398759008953010, -0.854372777046032320, -0.854346792947180080, -0.854320806712460690, -0.854294818341939430, -0.854268827835680810, -0.854242835193750440, -0.854216840416212930, +-0.854190843503133230, -0.854164844454576300, -0.854138843270607520, -0.854112839951291500, -0.854086834496693430, -0.854060826906878120, -0.854034817181910990, -0.854008805321856750, +-0.853982791326780450, -0.853956775196746950, -0.853930756931821740, -0.853904736532069770, -0.853878713997555660, -0.853852689328344900, -0.853826662524502570, -0.853800633586093480, +-0.853774602513182600, -0.853748569305835430, -0.853722533964116790, -0.853696496488091870, -0.853670456877825500, -0.853644415133383290, -0.853618371254829870, -0.853592325242230610, +-0.853566277095650360, -0.853540226815154620, -0.853514174400808230, -0.853488119852676470, -0.853462063170824180, -0.853436004355316970, -0.853409943406219780, -0.853383880323597350, +-0.853357815107515630, -0.853331747758039330, -0.853305678275233630, -0.853279606659163470, -0.853253532909894590, -0.853227457027491810, -0.853201379012020420, -0.853175298863545370, +-0.853149216582132270, -0.853123132167846190, -0.853097045620752280, -0.853070956940915390, -0.853044866128401470, -0.853018773183275350, -0.852992678105602310, -0.852966580895447300, +-0.852940481552876160, -0.852914380077953730, -0.852888276470745170, -0.852862170731316090, -0.852836062859731680, -0.852809952856056990, -0.852783840720357290, -0.852757726452698210, +-0.852731610053144800, -0.852705491521762340, -0.852679370858615890, -0.852653248063771300, -0.852627123137293610, -0.852600996079248000, -0.852574866889699750, -0.852548735568714580, +-0.852522602116357550, -0.852496466532694060, -0.852470328817789060, -0.852444188971708590, -0.852418046994517620, -0.852391902886281530, -0.852365756647065380, -0.852339608276935110, +-0.852313457775955910, -0.852287305144192710, -0.852261150381711570, -0.852234993488577450, -0.852208834464855960, -0.852182673310612150, -0.852156510025911750, -0.852130344610820160, +-0.852104177065402760, -0.852078007389724610, -0.852051835583851780, -0.852025661647849210, -0.851999485581782620, -0.851973307385716970, -0.851947127059718420, -0.851920944603851930, +-0.851894760018183090, -0.851868573302777210, -0.851842384457700000, -0.851816193483016960, -0.851790000378793160, -0.851763805145094530, -0.851737607781986480, -0.851711408289534290, +-0.851685206667803450, -0.851659002916859810, -0.851632797036768640, -0.851606589027595450, -0.851580378889405630, -0.851554166622265130, -0.851527952226239120, -0.851501735701393200, +-0.851475517047792780, -0.851449296265503810, -0.851423073354591550, -0.851396848315121630, -0.851370621147159330, -0.851344391850770820, -0.851318160426021150, -0.851291926872976060, +-0.851265691191701260, -0.851239453382262260, -0.851213213444724560, -0.851186971379153670, -0.851160727185615530, -0.851134480864175650, -0.851108232414899520, -0.851081981837852550, +-0.851055729133100900, -0.851029474300709850, -0.851003217340745240, -0.850976958253272240, -0.850950697038357130, -0.850924433696065300, -0.850898168226462360, -0.850871900629613820, +-0.850845630905585630, -0.850819359054443500, -0.850793085076252620, -0.850766808971079370, -0.850740530738989030, -0.850714250380047440, -0.850687967894319890, -0.850661683281872750, +-0.850635396542771320, -0.850609107677081420, -0.850582816684868570, -0.850556523566198820, -0.850530228321137890, -0.850503930949751300, -0.850477631452104640, -0.850451329828264210, +-0.850425026078295400, -0.850398720202264040, -0.850372412200235630, -0.850346102072276340, -0.850319789818451910, -0.850293475438828050, -0.850267158933470160, -0.850240840302444620, +-0.850214519545817060, -0.850188196663652860, -0.850161871656018530, -0.850135544522979460, -0.850109215264601480, -0.850082883880950320, -0.850056550372092050, -0.850030214738092480, +-0.850003876979017470, -0.849977537094932400, -0.849951195085903780, -0.849924850951997100, -0.849898504693278320, -0.849872156309813160, -0.849845805801667690, -0.849819453168907830, +-0.849793098411599220, -0.849766741529807800, -0.849740382523599620, -0.849714021393040530, -0.849687658138196130, -0.849661292759132820, -0.849634925255916330, -0.849608555628612480, +-0.849582183877287010, -0.849555810002006310, -0.849529434002836090, -0.849503055879842320, -0.849476675633090590, -0.849450293262647430, -0.849423908768578650, -0.849397522150949990, +-0.849371133409827280, -0.849344742545277030, -0.849318349557364850, -0.849291954446156900, -0.849265557211718810, -0.849239157854116970, -0.849212756373417310, -0.849186352769685460, +-0.849159947042988030, -0.849133539193390740, -0.849107129220959660, -0.849080717125760390, -0.849054302907859660, -0.849027886567323090, -0.849001468104216840, -0.848975047518606640, +-0.848948624810559100, -0.848922199980140070, -0.848895773027415480, -0.848869343952451170, -0.848842912755313760, -0.848816479436069080, -0.848790043994783310, -0.848763606431522040, +-0.848737166746352020, -0.848710724939339190, -0.848684281010549380, -0.848657834960048760, -0.848631386787903730, -0.848604936494180230, -0.848578484078944210, -0.848552029542262170, +-0.848525572884200050, -0.848499114104824040, -0.848472653204199960, -0.848446190182394530, -0.848419725039473600, -0.848393257775503340, -0.848366788390549800, -0.848340316884679480, +-0.848313843257958330, -0.848287367510452530, -0.848260889642228120, -0.848234409653351730, -0.848207927543889300, -0.848181443313907100, -0.848154956963470990, -0.848128468492647780, +-0.848101977901503430, -0.848075485190103780, -0.848048990358515780, -0.848022493406805240, -0.847995994335038470, -0.847969493143281410, -0.847942989831600990, -0.847916484400062950, +-0.847889976848733800, -0.847863467177679460, -0.847836955386966680, -0.847810441476661510, -0.847783925446830230, -0.847757407297538900, -0.847730887028854350, -0.847704364640842530, +-0.847677840133569730, -0.847651313507102210, -0.847624784761506600, -0.847598253896848950, -0.847571720913195550, -0.847545185810613000, -0.847518648589167590, -0.847492109248925480, +-0.847465567789952860, -0.847439024212316540, -0.847412478516082700, -0.847385930701317620, -0.847359380768087480, -0.847332828716459210, -0.847306274546498760, -0.847279718258272750, +-0.847253159851847130, -0.847226599327288830, -0.847200036684664040, -0.847173471924039250, -0.847146905045480400, -0.847120336049054570, -0.847093764934828020, -0.847067191702866710, +-0.847040616353237690, -0.847014038886007010, -0.846987459301241420, -0.846960877599006840, -0.846934293779370350, -0.846907707842398110, -0.846881119788156500, -0.846854529616712040, +-0.846827937328131330, -0.846801342922480880, -0.846774746399826970, -0.846748147760236100, -0.846721547003775000, -0.846694944130510050, -0.846668339140507760, -0.846641732033834420, +-0.846615122810556840, -0.846588511470741660, -0.846561898014455030, -0.846535282441763460, -0.846508664752734010, -0.846482044947432840, -0.846455423025926250, -0.846428798988281380, +-0.846402172834564540, -0.846375544564842320, -0.846348914179180900, -0.846322281677647560, -0.846295647060308460, -0.846269010327230120, -0.846242371478479140, -0.846215730514122470, +-0.846189087434226490, -0.846162442238857730, -0.846135794928082660, -0.846109145501968250, -0.846082493960581110, -0.846055840303987730, -0.846029184532254400, -0.846002526645448390, +-0.845975866643636110, -0.845949204526883940, -0.845922540295258930, -0.845895873948827590, -0.845869205487656540, -0.845842534911812270, -0.845815862221361960, -0.845789187416371880, +-0.845762510496908870, -0.845735831463039430, -0.845709150314830630, -0.845682467052348840, -0.845655781675661020, -0.845629094184833340, -0.845602404579933300, -0.845575712861027280, +-0.845549019028181800, -0.845522323081463690, -0.845495625020940000, -0.845468924846677240, -0.845442222558741910, -0.845415518157201170, -0.845388811642121760, -0.845362103013570290, +-0.845335392271613360, -0.845308679416318150, -0.845281964447751170, -0.845255247365979350, -0.845228528171069190, -0.845201806863087990, -0.845175083442102130, -0.845148357908178660, +-0.845121630261384090, -0.845094900501785600, -0.845068168629449890, -0.845041434644443810, -0.845014698546833750, -0.844987960336687330, -0.844961220014071030, -0.844934477579051600, +-0.844907733031695750, -0.844880986372070760, -0.844854237600243470, -0.844827486716280160, -0.844800733720248440, -0.844773978612214930, -0.844747221392246450, -0.844720462060409630, +-0.844693700616771960, -0.844666937061399950, -0.844640171394360650, -0.844613403615720790, -0.844586633725547540, -0.844559861723907730, -0.844533087610868320, -0.844506311386495790, +-0.844479533050857880, -0.844452752604021080, -0.844425970046052350, -0.844399185377018520, -0.844372398596986980, -0.844345609706024460, -0.844318818704197670, -0.844292025591574010, +-0.844265230368220320, -0.844238433034203540, -0.844211633589590390, -0.844184832034448500, -0.844158028368844460, -0.844131222592845450, -0.844104414706517980, -0.844077604709929870, +-0.844050792603147640, -0.844023978386238550, -0.843997162059269110, -0.843970343622307160, -0.843943523075419310, -0.843916700418672620, -0.843889875652133910, -0.843863048775870820, +-0.843836219789950050, -0.843809388694438440, -0.843782555489403730, -0.843755720174912520, -0.843728882751032080, -0.843702043217829270, -0.843675201575371460, -0.843648357823725710, +-0.843621511962958980, -0.843594663993138320, -0.843567813914331220, -0.843540961726604640, -0.843514107430025530, -0.843487251024661040, -0.843460392510578580, -0.843433531887845090, +-0.843406669156527840, -0.843379804316693680, -0.843352937368410330, -0.843326068311744500, -0.843299197146763380, -0.843272323873534460, -0.843245448492124680, -0.843218571002601340, +-0.843191691405031250, -0.843164809699482260, -0.843137925886021210, -0.843111039964715370, -0.843084151935631580, -0.843057261798837780, -0.843030369554400800, -0.843003475202387940, +-0.842976578742866020, -0.842949680175902990, -0.842922779501565690, -0.842895876719921610, -0.842868971831037370, -0.842842064834981140, -0.842815155731819640, -0.842788244521620270, +-0.842761331204450070, -0.842734415780376670, -0.842707498249467330, -0.842680578611789020, -0.842653656867409450, -0.842626733016395790, -0.842599807058815320, -0.842572878994734990, +-0.842545948824222850, -0.842519016547345730, -0.842492082164171040, -0.842465145674766050, -0.842438207079198250, -0.842411266377535050, -0.842384323569843610, -0.842357378656191200, +-0.842330431636645560, -0.842303482511273850, -0.842276531280143460, -0.842249577943321450, -0.842222622500875760, -0.842195664952873460, -0.842168705299381810, -0.842141743540468670, +-0.842114779676201080, -0.842087813706646650, -0.842060845631872330, -0.842033875451946190, -0.842006903166935380, -0.841979928776907300, -0.841952952281929120, -0.841925973682068900, +-0.841898992977393680, -0.841872010167970970, -0.841845025253867950, -0.841818038235152670, -0.841791049111892290, -0.841764057884154320, -0.841737064552005920, -0.841710069115515160, +-0.841683071574749090, -0.841656071929775210, -0.841629070180661350, -0.841602066327474920, -0.841575060370283180, -0.841548052309153640, -0.841521042144154130, -0.841494029875352050, +-0.841467015502815000, -0.841439999026610040, -0.841412980446805350, -0.841385959763468190, -0.841358936976666190, -0.841331912086466630, -0.841304885092937440, -0.841277855996146130, +-0.841250824796160090, -0.841223791493046820, -0.841196756086874280, -0.841169718577709840, -0.841142678965621120, -0.841115637250675400, -0.841088593432940960, -0.841061547512484960, +-0.841034499489374810, -0.841007449363678660, -0.840980397135463910, -0.840953342804798280, -0.840926286371748930, -0.840899227836384040, -0.840872167198771230, -0.840845104458977980, +-0.840818039617071690, -0.840790972673120530, -0.840763903627191890, -0.840736832479353600, -0.840709759229672950, -0.840682683878218100, -0.840655606425056550, -0.840628526870256020, +-0.840601445213883910, -0.840574361456008500, -0.840547275596697060, -0.840520187636017320, -0.840493097574037230, -0.840466005410824500, -0.840438911146446750, -0.840411814780971380, +-0.840384716314466760, -0.840357615747000410, -0.840330513078639930, -0.840303408309453050, -0.840276301439507820, -0.840249192468871750, -0.840222081397612790, -0.840194968225798420, +-0.840167852953496830, -0.840140735580775620, -0.840113616107702520, -0.840086494534345140, -0.840059370860771870, -0.840032245087050100, -0.840005117213247440, -0.839977987239432290, +-0.839950855165672140, -0.839923720992034940, -0.839896584718588080, -0.839869446345400060, -0.839842305872538390, -0.839815163300071000, -0.839788018628065400, -0.839760871856590100, +-0.839733722985712470, -0.839706572015500700, -0.839679418946022160, -0.839652263777345250, -0.839625106509537810, -0.839597947142667560, -0.839570785676802210, -0.839543622112010060, +-0.839516456448358930, -0.839489288685916430, -0.839462118824750860, -0.839434946864930140, -0.839407772806521900, -0.839380596649594080, -0.839353418394214960, -0.839326238040452370, +-0.839299055588374140, -0.839271871038048010, -0.839244684389542470, -0.839217495642925250, -0.839190304798264290, -0.839163111855627200, -0.839135916815082710, -0.839108719676698310, +-0.839081520440542180, -0.839054319106682040, -0.839027115675186290, -0.838999910146122850, -0.838972702519559580, -0.838945492795564180, -0.838918280974205510, -0.838891067055550940, +-0.838863851039668540, -0.838836632926626800, -0.838809412716493450, -0.838782190409336550, -0.838754966005223920, -0.838727739504224190, -0.838700510906405070, -0.838673280211834630, +-0.838646047420580800, -0.838618812532712090, -0.838591575548296330, -0.838564336467401690, -0.838537095290095900, -0.838509852016447680, -0.838482606646524740, -0.838455359180395380, +-0.838428109618127190, -0.838400857959789140, -0.838373604205448930, -0.838346348355174410, -0.838319090409034300, -0.838291830367096540, -0.838264568229429070, -0.838237303996099970, +-0.838210037667177940, -0.838182769242730720, -0.838155498722826690, -0.838128226107533570, -0.838100951396920090, -0.838073674591054310, -0.838046395690004390, -0.838019114693838160, +-0.837991831602624360, -0.837964546416431030, -0.837937259135326350, -0.837909969759378260, -0.837882678288655480, -0.837855384723225960, -0.837828089063157870, -0.837800791308519700, +-0.837773491459379520, -0.837746189515805710, -0.837718885477866100, -0.837691579345629540, -0.837664271119164080, -0.837636960798537890, -0.837609648383819130, -0.837582333875076410, +-0.837555017272377910, -0.837527698575791790, -0.837500377785386220, -0.837473054901230030, -0.837445729923391060, -0.837418402851937920, -0.837391073686938440, -0.837363742428461450, +-0.837336409076575250, -0.837309073631347990, -0.837281736092847730, -0.837254396461143410, -0.837227054736303100, -0.837199710918394960, -0.837172365007487710, -0.837145017003649630, +-0.837117666906948890, -0.837090314717453880, -0.837062960435233210, -0.837035604060355260, -0.837008245592888220, -0.836980885032900250, -0.836953522380460390, -0.836926157635636820, +-0.836898790798497720, -0.836871421869111450, -0.836844050847546870, -0.836816677733872140, -0.836789302528155750, -0.836761925230465780, -0.836734545840871370, -0.836707164359440480, +-0.836679780786241500, -0.836652395121343260, -0.836625007364814040, -0.836597617516722350, -0.836570225577136340, -0.836542831546125080, -0.836515435423756730, -0.836488037210099680, +-0.836460636905222430, -0.836433234509193710, -0.836405830022081910, -0.836378423443955630, -0.836351014774883050, -0.836323604014933110, -0.836296191164174090, -0.836268776222674700, +-0.836241359190503130, -0.836213940067728420, -0.836186518854418750, -0.836159095550642610, -0.836131670156469050, -0.836104242671966260, -0.836076813097202830, -0.836049381432247050, +-0.836021947677168200, -0.835994511832034440, -0.835967073896914380, -0.835939633871876420, -0.835912191756989610, -0.835884747552322340, -0.835857301257943110, -0.835829852873920530, +-0.835802402400323440, -0.835774949837220450, -0.835747495184679940, -0.835720038442770540, -0.835692579611561290, -0.835665118691120590, -0.835637655681516820, -0.835610190582819270, +-0.835582723395096090, -0.835555254118416140, -0.835527782752847890, -0.835500309298460310, -0.835472833755322000, -0.835445356123501680, -0.835417876403067640, -0.835390394594089150, +-0.835362910696634710, -0.835335424710773040, -0.835307936636572550, -0.835280446474102380, -0.835252954223431150, -0.835225459884627490, -0.835197963457759980, -0.835170464942897820, +-0.835142964340109480, -0.835115461649463710, -0.835087956871029100, -0.835060450004874830, -0.835032941051069400, -0.835005430009681300, -0.834977916880780050, -0.834950401664433910, +-0.834922884360711710, -0.834895364969682090, -0.834867843491414300, -0.834840319925976960, -0.834812794273438800, -0.834785266533868420, -0.834757736707335110, -0.834730204793907470, +-0.834702670793654230, -0.834675134706644120, -0.834647596532946510, -0.834620056272629810, -0.834592513925762950, -0.834564969492414650, -0.834537422972654100, -0.834509874366550000, +-0.834482323674170970, -0.834454770895586400, -0.834427216030864890, -0.834399659080075300, -0.834372100043286320, -0.834344538920567480, -0.834316975711987150, -0.834289410417614400, +-0.834261843037517940, -0.834234273571767050, -0.834206702020430460, -0.834179128383577220, -0.834151552661275830, -0.834123974853595800, -0.834096394960605950, -0.834068812982375010, +-0.834041228918971810, -0.834013642770465750, -0.833986054536925540, -0.833958464218420130, -0.833930871815018680, -0.833903277326790040, -0.833875680753803250, -0.833848082096127040, +-0.833820481353830800, -0.833792878526983360, -0.833765273615653780, -0.833737666619910670, -0.833710057539823750, -0.833682446375461630, -0.833654833126893480, -0.833627217794187910, +-0.833599600377414540, -0.833571980876642190, -0.833544359291939930, -0.833516735623376470, -0.833489109871021430, -0.833461482034943630, -0.833433852115212150, -0.833406220111895690, +-0.833378586025063980, -0.833350949854785860, -0.833323311601130160, -0.833295671264166260, -0.833268028843963340, -0.833240384340590220, -0.833212737754115970, -0.833185089084610090, +-0.833157438332141510, -0.833129785496779300, -0.833102130578592500, -0.833074473577650520, -0.833046814494022290, -0.833019153327777100, -0.832991490078983880, -0.832963824747712020, +-0.832936157334030700, -0.832908487838008970, -0.832880816259715660, -0.832853142599220720, -0.832825466856592870, -0.832797789031901050, -0.832770109125215100, -0.832742427136603740, +-0.832714743066136460, -0.832687056913882010, -0.832659368679910080, -0.832631678364289860, -0.832603985967090400, -0.832576291488380750, -0.832548594928230630, -0.832520896286708890, +-0.832493195563885010, -0.832465492759827950, -0.832437787874607320, -0.832410080908292270, -0.832382371860951990, -0.832354660732655520, -0.832326947523472690, -0.832299232233472460, +-0.832271514862723880, -0.832243795411296780, -0.832216073879260220, -0.832188350266683470, -0.832160624573635600, -0.832132896800186430, -0.832105166946405020, -0.832077435012360640, +-0.832049700998122480, -0.832021964903760240, -0.831994226729343200, -0.831966486474940430, -0.831938744140621300, -0.831910999726455550, -0.831883253232512330, -0.831855504658860930, +-0.831827754005570630, -0.831800001272711030, -0.831772246460351530, -0.831744489568561170, -0.831716730597409800, -0.831688969546966580, -0.831661206417300900, -0.831633441208482040, +-0.831605673920579820, -0.831577904553663430, -0.831550133107802240, -0.831522359583065530, -0.831494583979523030, -0.831466806297244230, -0.831439026536298310, -0.831411244696754650, +-0.831383460778683080, -0.831355674782152780, -0.831327886707233450, -0.831300096553994060, -0.831272304322504760, -0.831244510012834610, -0.831216713625053230, -0.831188915159229770, +-0.831161114615434290, -0.831133311993736080, -0.831105507294204290, -0.831077700516908990, -0.831049891661919450, -0.831022080729305170, -0.830994267719135430, -0.830966452631480280, +-0.830938635466409000, -0.830910816223991100, -0.830882994904295960, -0.830855171507393630, -0.830827346033353290, -0.830799518482244650, -0.830771688854136880, -0.830743857149100150, +-0.830716023367203740, -0.830688187508517360, -0.830660349573110300, -0.830632509561052500, -0.830604667472413460, -0.830576823307262570, -0.830548977065669770, -0.830521128747704670, +-0.830493278353436670, -0.830465425882935150, -0.830437571336270390, -0.830409714713511770, -0.830381856014728690, -0.830353995239990870, -0.830326132389368250, -0.830298267462930340, +-0.830270400460746740, -0.830242531382886840, -0.830214660229420920, -0.830186787000418260, -0.830158911695948800, -0.830131034316081710, -0.830103154860887260, -0.830075273330434960, +-0.830047389724794190, -0.830019504044035240, -0.829991616288227490, -0.829963726457440760, -0.829935834551744470, -0.829907940571208760, -0.829880044515903250, -0.829852146385897660, +-0.829824246181261380, -0.829796343902064800, -0.829768439548377310, -0.829740533120268740, -0.829712624617808590, -0.829684714041067140, -0.829656801390113880, -0.829628886665018660, +-0.829600969865850970, -0.829573050992681080, -0.829545130045578500, -0.829517207024613180, -0.829489281929854600, -0.829461354761373060, -0.829433425519238040, -0.829405494203519390, +-0.829377560814287040, -0.829349625351610940, -0.829321687815560700, -0.829293748206206050, -0.829265806523617250, -0.829237862767863930, -0.829209916939016020, -0.829181969037142920, +-0.829154019062315230, -0.829126067014602560, -0.829098112894074650, -0.829070156700801200, -0.829042198434852610, -0.829014238096298590, -0.828986275685208880, -0.828958311201653310, +-0.828930344645702140, -0.828902376017425220, -0.828874405316892050, -0.828846432544173120, -0.828818457699338040, -0.828790480782456870, -0.828762501793599230, -0.828734520732835600, +-0.828706537600235720, -0.828678552395869410, -0.828650565119806500, -0.828622575772117510, -0.828594584352872030, -0.828566590862140020, -0.828538595299991300, -0.828510597666496370, +-0.828482597961724960, -0.828454596185747130, -0.828426592338632470, -0.828398586420451500, -0.828370578431274150, -0.828342568371170150, -0.828314556240209890, -0.828286542038463300, +-0.828258525766000340, -0.828230507422890840, -0.828202487009205290, -0.828174464525013530, -0.828146439970385620, -0.828118413345391380, -0.828090384650101320, -0.828062353884585270, +-0.828034321048913390, -0.828006286143155410, -0.827978249167382050, -0.827950210121662920, -0.827922169006068410, -0.827894125820668240, -0.827866080565532900, -0.827838033240732350, +-0.827809983846336530, -0.827781932382416040, -0.827753878849040610, -0.827725823246280520, -0.827697765574205710, -0.827669705832886680, -0.827641644022393370, -0.827613580142795960, +-0.827585514194164370, -0.827557446176569230, -0.827529376090080370, -0.827501303934768170, -0.827473229710702470, -0.827445153417953990, -0.827417075056592570, -0.827388994626688470, +-0.827360912128311640, -0.827332827561532700, -0.827304740926421810, -0.827276652223049020, -0.827248561451484290, -0.827220468611798430, -0.827192373704061510, -0.827164276728343360, +-0.827136177684714700, -0.827108076573245590, -0.827079973394006410, -0.827051868147066880, -0.827023760832498070, -0.826995651450369800, -0.826967540000752450, -0.826939426483715880, +-0.826911310899331120, -0.826883193247668010, -0.826855073528796950, -0.826826951742787970, -0.826798827889711820, -0.826770701969638640, -0.826742573982638620, -0.826714443928782020, +-0.826686311808139560, -0.826658177620781310, -0.826630041366777310, -0.826601903046198520, -0.826573762659114860, -0.826545620205596960, -0.826517475685714650, -0.826489329099538870, +-0.826461180447139900, -0.826433029728587900, -0.826404876943953040, -0.826376722093306260, -0.826348565176717730, -0.826320406194257730, -0.826292245145996530, -0.826264082032004850, +-0.826235916852353090, -0.826207749607111520, -0.826179580296350300, -0.826151408920140270, -0.826123235478551820, -0.826095059971655110, -0.826066882399520860, -0.826038702762219470, +-0.826010521059821310, -0.825982337292396670, -0.825954151460016380, -0.825925963562750720, -0.825897773600670070, -0.825869581573844820, -0.825841387482345920, -0.825813191326243420, +-0.825784993105608050, -0.825756792820509840, -0.825728590471019990, -0.825700386057208640, -0.825672179579146290, -0.825643971036903350, -0.825615760430550630, -0.825587547760158520, +-0.825559333025797540, -0.825531116227538050, -0.825502897365450910, -0.825474676439606590, -0.825446453450075390, -0.825418228396928130, -0.825390001280235430, -0.825361772100067670, +-0.825333540856495350, -0.825305307549589310, -0.825277072179420030, -0.825248834746058040, -0.825220595249573810, -0.825192353690038290, -0.825164110067521880, -0.825135864382095190, +-0.825107616633828590, -0.825079366822793150, -0.825051114949059360, -0.825022861012697730, -0.824994605013778750, -0.824966346952373470, -0.824938086828552410, -0.824909824642385820, +-0.824881560393944890, -0.824853294083300100, -0.824825025710522080, -0.824796755275681190, -0.824768482778848730, -0.824740208220094970, -0.824711931599490740, -0.824683652917106550, +-0.824655372173013320, -0.824627089367281680, -0.824598804499982350, -0.824570517571185820, -0.824542228580963150, -0.824513937529384950, -0.824485644416521830, -0.824457349242444510, +-0.824429052007223940, -0.824400752710930830, -0.824372451353635460, -0.824344147935409330, -0.824315842456322830, -0.824287534916446680, -0.824259225315851380, -0.824230913654608320, +-0.824202599932787990, -0.824174284150461230, -0.824145966307698430, -0.824117646404570970, -0.824089324441149350, -0.824061000417504520, -0.824032674333706860, -0.824004346189827760, +-0.823976015985937840, -0.823947683722107920, -0.823919349398408500, -0.823891013014910970, -0.823862674571685830, -0.823834334068803800, -0.823805991506336150, -0.823777646884353620, +-0.823749300202926920, -0.823720951462126760, -0.823692600662024430, -0.823664247802690540, -0.823635892884196140, -0.823607535906611730, -0.823579176870008700, -0.823550815774457770, +-0.823522452620029770, -0.823494087406795310, -0.823465720134826000, -0.823437350804192340, -0.823408979414965270, -0.823380605967215520, -0.823352230461014580, -0.823323852896433060, +-0.823295473273541800, -0.823267091592411630, -0.823238707853114040, -0.823210322055719650, -0.823181934200299280, -0.823153544286924220, -0.823125152315665410, -0.823096758286593570, +-0.823068362199779750, -0.823039964055295110, -0.823011563853210730, -0.822983161593597300, -0.822954757276525780, -0.822926350902067560, -0.822897942470293580, -0.822869531981274660, +-0.822841119435081650, -0.822812704831786150, -0.822784288171458880, -0.822755869454170790, -0.822727448679992920, -0.822699025848996570, -0.822670600961252660, -0.822642174016832040, +-0.822613745015806200, -0.822585313958246080, -0.822556880844222630, -0.822528445673806670, -0.822500008447069940, -0.822471569164083150, -0.822443127824917460, -0.822414684429643610, +-0.822386238978333410, -0.822357791471057590, -0.822329341907887200, -0.822300890288893300, -0.822272436614147400, -0.822243980883720420, -0.822215523097683420, -0.822187063256107460, +-0.822158601359064050, -0.822130137406624110, -0.822101671398858700, -0.822073203335839220, -0.822044733217636820, -0.822016261044322460, -0.821987786815967290, -0.821959310532642930, +-0.821930832194420310, -0.821902351801370500, -0.821873869353564660, -0.821845384851074390, -0.821816898293970640, -0.821788409682324580, -0.821759919016207260, -0.821731426295690400, +-0.821702931520845060, -0.821674434691742280, -0.821645935808453240, -0.821617434871049660, -0.821588931879602360, -0.821560426834182840, -0.821531919734861950, -0.821503410581711500, +-0.821474899374802560, -0.821446386114206060, -0.821417870799993950, -0.821389353432237180, -0.821360834011006900, -0.821332312536374290, -0.821303789008411280, -0.821275263427188710, +-0.821246735792777960, -0.821218206105250090, -0.821189674364677050, -0.821161140571129770, -0.821132604724679640, -0.821104066825397830, -0.821075526873356050, -0.821046984868625370, +-0.821018440811277280, -0.820989894701382950, -0.820961346539013980, -0.820932796324241760, -0.820904244057137240, -0.820875689737772360, -0.820847133366218170, -0.820818574942546290, +-0.820790014466827640, -0.820761451939134300, -0.820732887359537310, -0.820704320728107950, -0.820675752044917720, -0.820647181310038220, -0.820618608523540850, -0.820590033685496990, +-0.820561456795977700, -0.820532877855055130, -0.820504296862800240, -0.820475713819284750, -0.820447128724579590, -0.820418541578756930, -0.820389952381887940, -0.820361361134043790, +-0.820332767835296410, -0.820304172485717190, -0.820275575085377520, -0.820246975634348670, -0.820218374132702710, -0.820189770580510680, -0.820161164977844300, -0.820132557324774750, +-0.820103947621374060, -0.820075335867713530, -0.820046722063864530, -0.820018106209898570, -0.819989488305887580, -0.819960868351902960, -0.819932246348016090, -0.819903622294298360, +-0.819874996190821830, -0.819846368037657760, -0.819817737834877770, -0.819789105582553250, -0.819760471280756240, -0.819731834929557920, -0.819703196529029900, -0.819674556079244110, +-0.819645913580271830, -0.819617269032184900, -0.819588622435054480, -0.819559973788952730, -0.819531323093951160, -0.819502670350121140, -0.819474015557534300, -0.819445358716262670, +-0.819416699826377550, -0.819388038887950750, -0.819359375901053570, -0.819330710865758260, -0.819302043782136110, -0.819273374650258850, -0.819244703470197950, -0.819216030242025490, +-0.819187354965812960, -0.819158677641631860, -0.819129998269554240, -0.819101316849651710, -0.819072633381995760, -0.819043947866658130, -0.819015260303710750, -0.818986570693225340, +-0.818957879035273400, -0.818929185329926530, -0.818900489577257030, -0.818871791777336160, -0.818843091930235970, -0.818814390036027740, -0.818785686094783750, -0.818756980106575490, +-0.818728272071474920, -0.818699561989553400, -0.818670849860883120, -0.818642135685535790, -0.818613419463582900, -0.818584701195096630, -0.818555980880148580, -0.818527258518810700, +-0.818498534111154360, -0.818469807657251970, -0.818441079157175010, -0.818412348610995430, -0.818383616018784620, -0.818354881380615070, -0.818326144696558400, -0.818297405966686210, +-0.818268665191070330, -0.818239922369783050, -0.818211177502895960, -0.818182430590481010, -0.818153681632609600, -0.818124930629354320, -0.818096177580786680, -0.818067422486978390, +-0.818038665348001740, -0.818009906163928440, -0.817981144934830320, -0.817952381660779220, -0.817923616341847290, -0.817894848978106380, -0.817866079569628310, -0.817837308116484810, +-0.817808534618748360, -0.817779759076490480, -0.817750981489783200, -0.817722201858698260, -0.817693420183308040, -0.817664636463684370, -0.817635850699898970, -0.817607062892023780, +-0.817578273040131090, -0.817549481144292820, -0.817520687204580820, -0.817491891221066800, -0.817463093193823380, -0.817434293122922150, -0.817405491008434960, -0.817376686850434410, +-0.817347880648992000, -0.817319072404179890, -0.817290262116069920, -0.817261449784734580, -0.817232635410245490, -0.817203818992674910, -0.817175000532094460, -0.817146180028576860, +-0.817117357482193720, -0.817088532893017190, -0.817059706261119120, -0.817030877586572000, -0.817002046869447770, -0.816973214109818380, -0.816944379307755650, -0.816915542463332200, +-0.816886703576619970, -0.816857862647690670, -0.816829019676617030, -0.816800174663470770, -0.816771327608324160, -0.816742478511248930, -0.816713627372317790, -0.816684774191602570, +-0.816655918969175440, -0.816627061705108130, -0.816598202399473560, -0.816569341052343470, -0.816540477663790010, -0.816511612233885020, -0.816482744762701330, -0.816453875250310770, +-0.816425003696785500, -0.816396130102197470, -0.816367254466619400, -0.816338376790123220, -0.816309497072780780, -0.816280615314664890, -0.816251731515847510, -0.816222845676400690, +-0.816193957796396590, -0.816165067875907810, -0.816136175915006310, -0.816107281913764470, -0.816078385872254120, -0.816049487790548090, -0.816020587668718320, -0.815991685506837090, +-0.815962781304976350, -0.815933875063208910, -0.815904966781606840, -0.815876056460242300, -0.815847144099187460, -0.815818229698514920, -0.815789313258296840, -0.815760394778605510, +-0.815731474259512870, -0.815702551701091850, -0.815673627103414400, -0.815644700466552690, -0.815615771790579420, -0.815586841075566780, -0.815557908321587030, -0.815528973528712230, +-0.815500036697015210, -0.815471097826568130, -0.815442156917443370, -0.815413213969712890, -0.815384268983449730, -0.815355321958725730, -0.815326372895613600, -0.815297421794185180, +-0.815268468654513520, -0.815239513476670560, -0.815210556260728910, -0.815181597006760630, -0.815152635714838650, -0.815123672385035030, -0.815094707017421930, -0.815065739612072400, +-0.815036770169058510, -0.815007798688452630, -0.814978825170327050, -0.814949849614754700, -0.814920872021807630, -0.814891892391558350, -0.814862910724079240, -0.814833927019443020, +-0.814804941277721960, -0.814775953498988570, -0.814746963683315120, -0.814717971830774430, -0.814688977941438800, -0.814659982015380810, -0.814630984052672540, -0.814601984053387020, +-0.814572982017596650, -0.814543977945373480, -0.814514971836790670, -0.814485963691920390, -0.814456953510835250, -0.814427941293607520, -0.814398927040310030, -0.814369910751015390, +-0.814340892425795880, -0.814311872064723890, -0.814282849667872570, -0.814253825235313980, -0.814224798767120950, -0.814195770263365540, -0.814166739724121010, -0.814137707149459660, +-0.814108672539454070, -0.814079635894176530, -0.814050597213700100, -0.814021556498097270, -0.813992513747440190, -0.813963468961802160, -0.813934422141255440, -0.813905373285872650, +-0.813876322395726160, -0.813847269470889150, -0.813818214511433880, -0.813789157517433190, -0.813760098488959360, -0.813731037426085440, -0.813701974328884030, -0.813672909197427520, +-0.813643842031788630, -0.813614772832040420, -0.813585701598255160, -0.813556628330505680, -0.813527553028864370, -0.813498475693404500, -0.813469396324198350, -0.813440314921318740, +-0.813411231484838180, -0.813382146014829720, -0.813353058511365860, -0.813323968974519080, -0.813294877404362680, -0.813265783800969140, -0.813236688164411080, -0.813207590494761100, +-0.813178490792092370, -0.813149389056477380, -0.813120285287988960, -0.813091179486699510, -0.813062071652682410, -0.813032961786010140, -0.813003849886755450, -0.812974735954990920, +-0.812945619990789740, -0.812916501994224490, -0.812887381965368140, -0.812858259904292950, -0.812829135811072410, -0.812800009685778920, -0.812770881528485310, -0.812741751339264630, +-0.812712619118189710, -0.812683484865333150, -0.812654348580767570, -0.812625210264566470, -0.812596069916802330, -0.812566927537548000, -0.812537783126876080, -0.812508636684859950, +-0.812479488211572340, -0.812450337707085860, -0.812421185171473330, -0.812392030604808140, -0.812362874007162890, -0.812333715378610320, -0.812304554719223360, -0.812275392029075170, +-0.812246227308238590, -0.812217060556786110, -0.812187891774791230, -0.812158720962326660, -0.812129548119465250, -0.812100373246279710, -0.812071196342843530, -0.812042017409229320, +-0.812012836445510140, -0.811983653451758600, -0.811954468428048080, -0.811925281374451520, -0.811896092291041650, -0.811866901177891400, -0.811837708035074050, -0.811808512862662530, +-0.811779315660729580, -0.811750116429348250, -0.811720915168591790, -0.811691711878533060, -0.811662506559245100, -0.811633299210800520, -0.811604089833273030, -0.811574878426735260, +-0.811545664991260130, -0.811516449526921040, -0.811487232033790810, -0.811458012511942490, -0.811428790961448930, -0.811399567382383610, -0.811370341774819370, -0.811341114138829260, +-0.811311884474486210, -0.811282652781863620, -0.811253419061034430, -0.811224183312071580, -0.811194945535048120, -0.811165705730037550, -0.811136463897112690, -0.811107220036346720, +-0.811077974147812460, -0.811048726231583420, -0.811019476287732630, -0.810990224316332940, -0.810960970317457840, -0.810931714291180380, -0.810902456237573620, -0.810873196156710500, +-0.810843934048664620, -0.810814669913508810, -0.810785403751316470, -0.810756135562160310, -0.810726865346114050, -0.810697593103250620, -0.810668318833643210, -0.810639042537364850, +-0.810609764214488940, -0.810580483865088740, -0.810551201489237320, -0.810521917087007710, -0.810492630658473430, -0.810463342203707750, -0.810434051722783270, -0.810404759215774040, +-0.810375464682752900, -0.810346168123793010, -0.810316869538967530, -0.810287568928350080, -0.810258266292013700, -0.810228961630031770, -0.810199654942477030, -0.810170346229423520, +-0.810141035490944070, -0.810111722727112180, -0.810082407938000570, -0.810053091123683180, -0.810023772284233170, -0.809994451419723700, -0.809965128530227840, -0.809935803615819410, +-0.809906476676571450, -0.809877147712557030, -0.809847816723849980, -0.809818483710523450, -0.809789148672650730, -0.809759811610304860, -0.809730472523559670, -0.809701131412488340, +-0.809671788277164240, -0.809642443117660320, -0.809613095934050620, -0.809583746726408090, -0.809554395494806230, -0.809525042239318090, -0.809495686960017720, -0.809466329656978070, +-0.809436970330272510, -0.809407608979974440, -0.809378245606157450, -0.809348880208894950, -0.809319512788260200, -0.809290143344326360, -0.809260771877167500, -0.809231398386856650, +-0.809202022873467100, -0.809172645337072780, -0.809143265777746760, -0.809113884195562630, -0.809084500590593560, -0.809055114962913490, -0.809025727312595590, -0.808996337639713350, +-0.808966945944340040, -0.808937552226549620, -0.808908156486415340, -0.808878758724010720, -0.808849358939408790, -0.808819957132683840, -0.808790553303909030, -0.808761147453157750, +-0.808731739580503370, -0.808702329686019850, -0.808672917769780560, -0.808643503831858680, -0.808614087872328360, -0.808584669891262760, -0.808555249888735620, -0.808525827864819970, +-0.808496403819589980, -0.808466977753119040, -0.808437549665480650, -0.808408119556748180, -0.808378687426995590, -0.808349253276296360, -0.808319817104723890, -0.808290378912351670, +-0.808260938699253860, -0.808231496465503520, -0.808202052211174580, -0.808172605936340220, -0.808143157641074580, -0.808113707325451070, -0.808084254989542950, -0.808054800633424500, +-0.808025344257169100, -0.807995885860850360, -0.807966425444541560, -0.807936963008316970, -0.807907498552249970, -0.807878032076414290, -0.807848563580883190, -0.807819093065731080, +-0.807789620531031090, -0.807760145976857080, -0.807730669403282530, -0.807701190810381500, -0.807671710198227480, -0.807642227566894190, -0.807612742916455020, -0.807583256246984350, +-0.807553767558555460, -0.807524276851242170, -0.807494784125117990, -0.807465289380257080, -0.807435792616732930, -0.807406293834619040, -0.807376793033989680, -0.807347290214918360, +-0.807317785377478780, -0.807288278521744560, -0.807258769647789750, -0.807229258755688180, -0.807199745845513350, -0.807170230917338970, -0.807140713971239210, -0.807111195007287670, +-0.807081674025558190, -0.807052151026124260, -0.807022626009060160, -0.806993098974439490, -0.806963569922336200, -0.806934038852823550, -0.806904505765976170, -0.806874970661867530, +-0.806845433540571140, -0.806815894402161500, -0.806786353246712110, -0.806756810074296780, -0.806727264884989250, -0.806697717678863780, -0.806668168455993980, -0.806638617216453800, +-0.806609063960316730, -0.806579508687657380, -0.806549951398549240, -0.806520392093066140, -0.806490830771281920, -0.806461267433270850, -0.806431702079106530, -0.806402134708863020, +-0.806372565322613920, -0.806342993920433630, -0.806313420502395850, -0.806283845068574310, -0.806254267619043400, -0.806224688153876820, -0.806195106673148420, -0.806165523176932130, +-0.806135937665302230, -0.806106350138332540, -0.806076760596096900, -0.806047169038669130, -0.806017575466123740, -0.805987979878534320, -0.805958382275975050, -0.805928782658519530, +-0.805899181026242360, -0.805869577379217160, -0.805839971717517980, -0.805810364041218750, -0.805780754350393760, -0.805751142645116940, -0.805721528925462000, -0.805691913191503460, +-0.805662295443315140, -0.805632675680971080, -0.805603053904545120, -0.805573430114111750, -0.805543804309744820, -0.805514176491518350, -0.805484546659506200, -0.805454914813782950, +-0.805425280954422340, -0.805395645081498630, -0.805366007195085550, -0.805336367295257590, -0.805306725382088810, -0.805277081455653240, -0.805247435516024730, -0.805217787563277780, +-0.805188137597486420, -0.805158485618724720, -0.805128831627066500, -0.805099175622586480, -0.805069517605358610, -0.805039857575456600, -0.805010195532955160, -0.804980531477928360, +-0.804950865410450130, -0.804921197330594530, -0.804891527238436160, -0.804861855134048950, -0.804832181017507200, -0.804802504888884720, -0.804772826748256230, -0.804743146595695570, +-0.804713464431277110, -0.804683780255074810, -0.804654094067163150, -0.804624405867616410, -0.804594715656508640, -0.804565023433913670, -0.804535329199906560, -0.804505632954561120, +-0.804475934697951310, -0.804446234430151840, -0.804416532151236870, -0.804386827861280570, -0.804357121560356880, -0.804327413248540730, -0.804297702925905970, -0.804267990592527070, +-0.804238276248477880, -0.804208559893833220, -0.804178841528667140, -0.804149121153054040, -0.804119398767067730, -0.804089674370783380, -0.804059947964274710, -0.804030219547616220, +-0.804000489120881840, -0.803970756684146640, -0.803941022237484430, -0.803911285780969490, -0.803881547314676540, -0.803851806838679740, -0.803822064353053370, -0.803792319857871700, +-0.803762573353209440, -0.803732824839140660, -0.803703074315739950, -0.803673321783081150, -0.803643567241239420, -0.803613810690288810, -0.803584052130303590, -0.803554291561357940, +-0.803524528983526890, -0.803494764396884500, -0.803464997801505270, -0.803435229197463130, -0.803405458584833370, -0.803375685963689800, -0.803345911334107150, -0.803316134696159370, +-0.803286356049921490, -0.803256575395467800, -0.803226792732872340, -0.803197008062210170, -0.803167221383555560, -0.803137432696982790, -0.803107642002566240, -0.803077849300380840, +-0.803048054590500770, -0.803018257873000630, -0.802988459147954580, -0.802958658415437570, -0.802928855675524080, -0.802899050928288280, -0.802869244173804670, -0.802839435412148190, +-0.802809624643393120, -0.802779811867614050, -0.802749997084885040, -0.802720180295281470, -0.802690361498877400, -0.802660540695747100, -0.802630717885965740, -0.802600893069607580, +-0.802571066246747230, -0.802541237417458860, -0.802511406581817740, -0.802481573739898150, -0.802451738891774570, -0.802421902037521280, -0.802392063177213680, -0.802362222310925800, +-0.802332379438732370, -0.802302534560707770, -0.802272687676927050, -0.802242838787464720, -0.802212987892395150, -0.802183134991792950, -0.802153280085733170, -0.802123423174290200, +-0.802093564257538310, -0.802063703335552880, -0.802033840408408080, -0.802003975476178740, -0.801974108538939250, -0.801944239596764640, -0.801914368649729540, -0.801884495697908540, +-0.801854620741375920, -0.801824743780207070, -0.801794864814476370, -0.801764983844258540, -0.801735100869627960, -0.801705215890659790, -0.801675328907428650, -0.801645439920009250, +-0.801615548928475970, -0.801585655932903980, -0.801555760933368000, -0.801525863929942290, -0.801495964922702140, -0.801466063911722150, -0.801436160897076920, -0.801406255878841070, +-0.801376348857089860, -0.801346439831897790, -0.801316528803339480, -0.801286615771489740, -0.801256700736423740, -0.801226783698215870, -0.801196864656941070, -0.801166943612673930, +-0.801137020565489630, -0.801107095515462770, -0.801077168462668190, -0.801047239407180480, -0.801017308349074810, -0.800987375288426010, -0.800957440225308680, -0.800927503159797440, +-0.800897564091967880, -0.800867623021894290, -0.800837679949651380, -0.800807734875314540, -0.800777787798958360, -0.800747838720657690, -0.800717887640487240, -0.800687934558522270, +-0.800657979474837520, -0.800628022389507700, -0.800598063302607740, -0.800568102214212820, -0.800538139124397530, -0.800508174033236930, -0.800478206940805740, -0.800448237847179220, +-0.800418266752432110, -0.800388293656639330, -0.800358318559875600, -0.800328341462216320, -0.800298362363736190, -0.800268381264509830, -0.800238398164612840, -0.800208413064119830, +-0.800178425963105840, -0.800148436861645500, -0.800118445759814280, -0.800088452657686910, -0.800058457555338550, -0.800028460452843700, -0.799998461350277970, -0.799968460247716060, +-0.799938457145233040, -0.799908452042903620, -0.799878444940803290, -0.799848435839006890, -0.799818424737589350, -0.799788411636625510, -0.799758396536190960, -0.799728379436360330, +-0.799698360337208540, -0.799668339238811090, -0.799638316141242810, -0.799608291044578760, -0.799578263948893750, -0.799548234854263300, -0.799518203760762210, -0.799488170668465670, +-0.799458135577448380, -0.799428098487786070, -0.799398059399553550, -0.799368018312825780, -0.799337975227677800, -0.799307930144185110, -0.799277883062422530, -0.799247833982465350, +-0.799217782904388270, -0.799187729828267020, -0.799157674754176430, -0.799127617682191650, -0.799097558612387520, -0.799067497544839860, -0.799037434479623390, -0.799007369416813050, +-0.798977302356484560, -0.798947233298712870, -0.798917162243573010, -0.798887089191140040, -0.798857014141489570, -0.798826937094696650, -0.798796858050836330, -0.798766777009983550, +-0.798736693972214250, -0.798706608937603040, -0.798676521906225400, -0.798646432878156180, -0.798616341853471080, -0.798586248832245270, -0.798556153814553690, -0.798526056800471510, +-0.798495957790074540, -0.798465856783437510, -0.798435753780635690, -0.798405648781744800, -0.798375541786839670, -0.798345432795995680, -0.798315321809287880, -0.798285208826792100, +-0.798255093848583290, -0.798224976874736700, -0.798194857905327400, -0.798164736940431220, -0.798134613980123200, -0.798104489024478610, -0.798074362073572630, -0.798044233127480960, +-0.798014102186278660, -0.797983969250041230, -0.797953834318843480, -0.797923697392761480, -0.797893558471870160, -0.797863417556244790, -0.797833274645961100, -0.797803129741094240, +-0.797772982841719490, -0.797742833947912010, -0.797712683059747850, -0.797682530177301840, -0.797652375300649590, -0.797622218429866030, -0.797592059565027320, -0.797561898706208420, +-0.797531735853484690, -0.797501571006931420, -0.797471404166624540, -0.797441235332639110, -0.797411064505050620, -0.797380891683934110, -0.797350716869365650, -0.797320540061420500, +-0.797290361260173610, -0.797260180465701240, -0.797229997678078340, -0.797199812897380400, -0.797169626123682700, -0.797139437357061160, -0.797109246597591080, -0.797079053845347830, +-0.797048859100406790, -0.797018662362843800, -0.796988463632734120, -0.796958262910153260, -0.796928060195176590, -0.796897855487879950, -0.796867648788338710, -0.796837440096628380, +-0.796807229412824110, -0.796777016737002080, -0.796746802069237430, -0.796716585409605880, -0.796686366758182610, -0.796656146115043650, -0.796625923480264290, -0.796595698853919900, +-0.796565472236086420, -0.796535243626839360, -0.796505013026254200, -0.796474780434406230, -0.796444545851371590, -0.796414309277225560, -0.796384070712043760, -0.796353830155901440, +-0.796323587608874890, -0.796293343071039380, -0.796263096542470520, -0.796232848023243680, -0.796202597513434920, -0.796172345013119730, -0.796142090522373610, -0.796111834041271950, +-0.796081575569891120, -0.796051315108306290, -0.796021052656592840, -0.795990788214827050, -0.795960521783084410, -0.795930253361440300, -0.795899982949970440, -0.795869710548750780, +-0.795839436157856910, -0.795809159777364330, -0.795778881407348760, -0.795748601047886140, -0.795718318699051960, -0.795688034360922170, -0.795657748033571920, -0.795627459717077600, +-0.795597169411514590, -0.795566877116958620, -0.795536582833485270, -0.795506286561170730, -0.795475988300090360, -0.795445688050319900, -0.795415385811935380, -0.795385081585012530, +-0.795354775369626840, -0.795324467165854030, -0.795294156973770260, -0.795263844793451140, -0.795233530624972370, -0.795203214468409470, -0.795172896323838920, -0.795142576191335990, +-0.795112254070976740, -0.795081929962836550, -0.795051603866991810, -0.795021275783518000, -0.794990945712491070, -0.794960613653986510, -0.794930279608080600, -0.794899943574849050, +-0.794869605554367700, -0.794839265546712030, -0.794808923551958420, -0.794778579570182500, -0.794748233601459960, -0.794717885645866980, -0.794687535703479390, -0.794657183774372890, +-0.794626829858623210, -0.794596473956306730, -0.794566116067499050, -0.794535756192276010, -0.794505394330713320, -0.794475030482887480, -0.794444664648874090, -0.794414296828748980, +-0.794383927022587870, -0.794353555230467250, -0.794323181452462720, -0.794292805688650240, -0.794262427939105400, -0.794232048203904810, -0.794201666483124180, -0.794171282776839020, +-0.794140897085125920, -0.794110509408060610, -0.794080119745719020, -0.794049728098176870, -0.794019334465510650, -0.793988938847796090, -0.793958541245109230, -0.793928141657525790, +-0.793897740085122150, -0.793867336527974250, -0.793836930986157930, -0.793806523459749000, -0.793776113948824080, -0.793745702453458880, -0.793715288973729450, -0.793684873509711510, +-0.793654456061481660, -0.793624036629115630, -0.793593615212689230, -0.793563191812279190, -0.793532766427961000, -0.793502339059811050, -0.793471909707904820, -0.793441478372319150, +-0.793411045053129870, -0.793380609750412910, -0.793350172464244110, -0.793319733194700280, -0.793289291941856930, -0.793258848705790550, -0.793228403486576640, -0.793197956284292020, +-0.793167507099012510, -0.793137055930814290, -0.793106602779773180, -0.793076147645965680, -0.793045690529467940, -0.793015231430355680, -0.792984770348705630, -0.792954307284593600, +-0.792923842238095870, -0.792893375209288150, -0.792862906198247400, -0.792832435205049310, -0.792801962229770170, -0.792771487272485810, -0.792741010333272930, -0.792710531412207600, +-0.792680050509366070, -0.792649567624823970, -0.792619082758658330, -0.792588595910944880, -0.792558107081760000, -0.792527616271179620, -0.792497123479280360, -0.792466628706138380, +-0.792436131951829830, -0.792405633216430650, -0.792375132500017680, -0.792344629802666840, -0.792314125124454200, -0.792283618465456470, -0.792253109825749700, -0.792222599205410160, +-0.792192086604513900, -0.792161572023137640, -0.792131055461357540, -0.792100536919249750, -0.792070016396890340, -0.792039493894356130, -0.792008969411723160, -0.791978442949067830, +-0.791947914506466180, -0.791917384083994920, -0.791886851681730230, -0.791856317299748370, -0.791825780938125500, -0.791795242596938450, -0.791764702276263280, -0.791734159976176020, +-0.791703615696753740, -0.791673069438072360, -0.791642521200208280, -0.791611970983237660, -0.791581418787237420, -0.791550864612283630, -0.791520308458452670, -0.791489750325820580, +-0.791459190214464540, -0.791428628124460350, -0.791398064055884750, -0.791367498008813560, -0.791336929983324060, -0.791306359979492170, -0.791275787997394290, -0.791245214037106790, +-0.791214638098706510, -0.791184060182269610, -0.791153480287872250, -0.791122898415591580, -0.791092314565503550, -0.791061728737684770, -0.791031140932211390, -0.791000551149160460, +-0.790969959388608030, -0.790939365650630830, -0.790908769935305010, -0.790878172242707400, -0.790847572572914380, -0.790816970926002450, -0.790786367302047880, -0.790755761701127600, +-0.790725154123317900, -0.790694544568695370, -0.790663933037336180, -0.790633319529317370, -0.790602704044715330, -0.790572086583606560, -0.790541467146067210, -0.790510845732174560, +-0.790480222342004660, -0.790449596975634110, -0.790418969633139730, -0.790388340314597930, -0.790357709020085290, -0.790327075749678090, -0.790296440503453490, -0.790265803281487880, +-0.790235164083857630, -0.790204522910639250, -0.790173879761909780, -0.790143234637745720, -0.790112587538223550, -0.790081938463419560, -0.790051287413411020, -0.790020634388274300, +-0.789989979388086020, -0.789959322412922440, -0.789928663462860840, -0.789898002537977590, -0.789867339638349100, -0.789836674764052500, -0.789806007915164310, -0.789775339091761010, +-0.789744668293919090, -0.789713995521715730, -0.789683320775227400, -0.789652644054530840, -0.789621965359702300, -0.789591284690819300, -0.789560602047957970, -0.789529917431195050, +-0.789499230840607140, -0.789468542276271500, -0.789437851738264420, -0.789407159226662710, -0.789376464741542880, -0.789345768282982090, -0.789315069851056930, -0.789284369445843790, +-0.789253667067420060, -0.789222962715862120, -0.789192256391246790, -0.789161548093650470, -0.789130837823150630, -0.789100125579823670, -0.789069411363746420, -0.789038695174995360, +-0.789007977013647780, -0.788977256879780380, -0.788946534773469770, -0.788915810694792550, -0.788885084643826010, -0.788854356620646850, -0.788823626625331790, -0.788792894657957430, +-0.788762160718600950, -0.788731424807339150, -0.788700686924248550, -0.788669947069406520, -0.788639205242889660, -0.788608461444774700, -0.788577715675138350, -0.788546967934057990, +-0.788516218221610110, -0.788485466537871770, -0.788454712882919460, -0.788423957256830680, -0.788393199659682020, -0.788362440091550320, -0.788331678552512290, -0.788300915042645320, +-0.788270149562026010, -0.788239382110731410, -0.788208612688838020, -0.788177841296423430, -0.788147067933564150, -0.788116292600337220, -0.788085515296819360, -0.788054736023087950, +-0.788023954779219720, -0.787993171565291250, -0.787962386381380160, -0.787931599227563170, -0.787900810103917100, -0.787870019010518790, -0.787839225947445710, -0.787808430914774480, +-0.787777633912582260, -0.787746834940945660, -0.787716033999942280, -0.787685231089648720, -0.787654426210142140, -0.787623619361499160, -0.787592810543797480, -0.787561999757113830, +-0.787531187001525020, -0.787500372277108120, -0.787469555583940490, -0.787438736922098980, -0.787407916291660400, -0.787377093692702260, -0.787346269125301370, -0.787315442589534790, +-0.787284614085479340, -0.787253783613212740, -0.787222951172811490, -0.787192116764353080, -0.787161280387914000, -0.787130442043571970, -0.787099601731403810, -0.787068759451486690, +-0.787037915203897430, -0.787007068988713530, -0.786976220806012150, -0.786945370655870110, -0.786914518538364360, -0.786883664453572610, -0.786852808401571680, -0.786821950382438520, +-0.786791090396250610, -0.786760228443085130, -0.786729364523019000, -0.786698498636129170, -0.786667630782493470, -0.786636760962188600, -0.786605889175291840, -0.786575015421880130, +-0.786544139702031080, -0.786513262015821720, -0.786482382363329240, -0.786451500744630550, -0.786420617159803270, -0.786389731608924560, -0.786358844092071460, -0.786327954609321030, +-0.786297063160750880, -0.786266169746438150, -0.786235274366460010, -0.786204377020893410, -0.786173477709816050, -0.786142576433305100, -0.786111673191437380, -0.786080767984290830, +-0.786049860811942280, -0.786018951674469110, -0.785988040571948270, -0.785957127504457560, -0.785926212472074170, -0.785895295474875130, -0.785864376512937610, -0.785833455586339440, +-0.785802532695157650, -0.785771607839469420, -0.785740681019352020, -0.785709752234883150, -0.785678821486139880, -0.785647888773199580, -0.785616954096139190, -0.785586017455036870, +-0.785555078849969330, -0.785524138281013970, -0.785493195748248390, -0.785462251251749950, -0.785431304791595840, -0.785400356367863210, -0.785369405980629880, -0.785338453629973120, +-0.785307499315970210, -0.785276543038698200, -0.785245584798235250, -0.785214624594658180, -0.785183662428044720, -0.785152698298471670, -0.785121732206017220, -0.785090764150758510, +-0.785059794132772830, -0.785028822152137320, -0.784997848208930150, -0.784966872303228260, -0.784935894435108920, -0.784904914604650170, -0.784873932811929190, -0.784842949057023230, +-0.784811963340009690, -0.784780975660966610, -0.784749986019970920, -0.784718994417100360, -0.784688000852432070, -0.784657005326043990, -0.784626007838013400, -0.784595008388417890, +-0.784564006977334530, -0.784533003604841350, -0.784501998271015740, -0.784470990975935090, -0.784439981719676770, -0.784408970502318610, -0.784377957323938220, -0.784346942184612760, +-0.784315925084419830, -0.784284906023437260, -0.784253885001742420, -0.784222862019412600, -0.784191837076525950, -0.784160810173159750, -0.784129781309391370, -0.784098750485298420, +-0.784067717700958730, -0.784036682956449900, -0.784005646251849210, -0.783974607587234250, -0.783943566962682970, -0.783912524378272750, -0.783881479834081300, -0.783850433330185890, +-0.783819384866664580, -0.783788334443594860, -0.783757282061054330, -0.783726227719120260, -0.783695171417870930, -0.783664113157383600, -0.783633052937735890, -0.783601990759005720, +-0.783570926621270480, -0.783539860524608000, -0.783508792469095660, -0.783477722454811510, -0.783446650481833150, -0.783415576550238080, -0.783384500660103790, -0.783353422811508660, +-0.783322343004529850, -0.783291261239245200, -0.783260177515732070, -0.783229091834068860, -0.783198004194332940, -0.783166914596601930, -0.783135823040953420, -0.783104729527465570, +-0.783073634056215990, -0.783042536627281960, -0.783011437240741850, -0.782980335896673150, -0.782949232595153700, -0.782918127336260870, -0.782887020120072940, -0.782855910946667510, +-0.782824799816122300, -0.782793686728514790, -0.782762571683923270, -0.782731454682425440, -0.782700335724098920, -0.782669214809021300, -0.782638091937270960, -0.782606967108925300, +-0.782575840324062360, -0.782544711582759400, -0.782513580885095040, -0.782482448231146650, -0.782451313620991850, -0.782420177054709120, -0.782389038532375960, -0.782357898054070080, +-0.782326755619869310, -0.782295611229851810, -0.782264464884095400, -0.782233316582677810, -0.782202166325676520, -0.782171014113170250, -0.782139859945236380, -0.782108703821952860, +-0.782077545743397270, -0.782046385709648130, -0.782015223720783030, -0.781984059776879900, -0.781952893878016250, -0.781921726024270790, -0.781890556215720900, -0.781859384452444630, +-0.781828210734519690, -0.781797035062024470, -0.781765857435036570, -0.781734677853633820, -0.781703496317894710, -0.781672312827896840, -0.781641127383718160, -0.781609939985436370, +-0.781578750633129980, -0.781547559326876810, -0.781516366066754680, -0.781485170852841300, -0.781453973685215300, -0.781422774563954480, -0.781391573489136570, -0.781360370460839610, +-0.781329165479141880, -0.781297958544121320, -0.781266749655855740, -0.781235538814423090, -0.781204326019901860, -0.781173111272369880, -0.781141894571904750, -0.781110675918585180, +-0.781079455312488900, -0.781048232753694060, -0.781017008242278380, -0.780985781778320340, -0.780954553361897900, -0.780923322993089090, -0.780892090671971740, -0.780860856398624350, +-0.780829620173124850, -0.780798381995551290, -0.780767141865981510, -0.780735899784494200, -0.780704655751167100, -0.780673409766078350, -0.780642161829305790, -0.780610911940928130, +-0.780579660101023200, -0.780548406309668820, -0.780517150566943710, -0.780485892872925690, -0.780454633227692930, -0.780423371631323360, -0.780392108083895700, -0.780360842585487660, +-0.780329575136177510, -0.780298305736043200, -0.780267034385163430, -0.780235761083616030, -0.780204485831479280, -0.780173208628830990, -0.780141929475749900, -0.780110648372314030, +-0.780079365318601560, -0.780048080314690420, -0.780016793360659320, -0.779985504456586210, -0.779954213602549460, -0.779922920798626800, -0.779891626044897150, -0.779860329341438340, +-0.779829030688328540, -0.779797730085646460, -0.779766427533469920, -0.779735123031877420, -0.779703816580946780, -0.779672508180756950, -0.779641197831385860, -0.779609885532911660, +-0.779578571285412520, -0.779547255088967270, -0.779515936943653840, -0.779484616849550620, -0.779453294806735530, -0.779421970815287410, -0.779390644875284530, -0.779359316986804940, +-0.779327987149926790, -0.779296655364728920, -0.779265321631289480, -0.779233985949686400, -0.779202648319998640, -0.779171308742304340, -0.779139967216681660, -0.779108623743208880, +-0.779077278321964720, -0.779045930953027430, -0.779014581636475300, -0.778983230372386480, -0.778951877160839800, -0.778920522001913420, -0.778889164895685830, -0.778857805842234960, +-0.778826444841639880, -0.778795081893978610, -0.778763716999329780, -0.778732350157771310, -0.778700981369382150, -0.778669610634240670, -0.778638237952424930, -0.778606863324013740, +-0.778575486749085390, -0.778544108227718470, -0.778512727759990810, -0.778481345345981790, -0.778449960985769240, -0.778418574679431870, -0.778387186427047850, -0.778355796228696000, +-0.778324404084454800, -0.778293009994402540, -0.778261613958617480, -0.778230215977178560, -0.778198816050164280, -0.778167414177652890, -0.778136010359722570, -0.778104604596452700, +-0.778073196887921200, -0.778041787234206470, -0.778010375635387440, -0.777978962091542600, -0.777947546602750340, -0.777916129169088920, -0.777884709790637400, -0.777853288467474150, +-0.777821865199677660, -0.777790439987326330, -0.777759012830499090, -0.777727583729274310, -0.777696152683730600, -0.777664719693946240, -0.777633284760000270, -0.777601847881971180, +-0.777570409059937460, -0.777538968293977390, -0.777507525584170240, -0.777476080930594280, -0.777444634333328110, -0.777413185792450000, -0.777381735308039220, -0.777350282880174160, +-0.777318828508933190, -0.777287372194395250, -0.777255913936638950, -0.777224453735742890, -0.777192991591785450, -0.777161527504845790, -0.777130061475002300, -0.777098593502333570, +-0.777067123586918210, -0.777035651728835260, -0.777004177928163120, -0.776972702184980710, -0.776941224499366090, -0.776909744871398740, -0.776878263301157060, -0.776846779788719740, +-0.776815294334165190, -0.776783806937572650, -0.776752317599020530, -0.776720826318587410, -0.776689333096352460, -0.776657837932394290, -0.776626340826791380, -0.776594841779622460, +-0.776563340790966670, -0.776531837860902520, -0.776500332989508710, -0.776468826176863970, -0.776437317423047220, -0.776405806728137300, -0.776374294092212920, -0.776342779515352470, +-0.776311262997635310, -0.776279744539140060, -0.776248224139945320, -0.776216701800129920, -0.776185177519772900, -0.776153651298952970, -0.776122123137748640, -0.776090593036239400, +-0.776059060994503500, -0.776027527012620010, -0.775995991090667530, -0.775964453228725200, -0.775932913426871760, -0.775901371685186140, -0.775869828003746710, -0.775838282382632970, +-0.775806734821923640, -0.775775185321697420, -0.775743633882032930, -0.775712080503009660, -0.775680525184706200, -0.775648967927201390, -0.775617408730573940, -0.775585847594903120, +-0.775554284520267870, -0.775522719506746780, -0.775491152554418580, -0.775459583663362870, -0.775428012833658140, -0.775396440065383220, -0.775364865358617370, -0.775333288713439320, +-0.775301710129928210, -0.775270129608162440, -0.775238547148221600, -0.775206962750184410, -0.775175376414129810, -0.775143788140136510, -0.775112197928284010, -0.775080605778651010, +-0.775049011691316570, -0.775017415666359180, -0.774985817703858660, -0.774954217803893510, -0.774922615966542880, -0.774891012191885390, -0.774859406480000620, -0.774827798830967420, +-0.774796189244864380, -0.774764577721771210, -0.774732964261766520, -0.774701348864929470, -0.774669731531338780, -0.774638112261073930, -0.774606491054213860, -0.774574867910837630, +-0.774543242831023940, -0.774511615814852390, -0.774479986862401710, -0.774448355973751170, -0.774416723148979470, -0.774385088388166220, -0.774353451691390250, -0.774321813058730600, +-0.774290172490266220, -0.774258529986076690, -0.774226885546240750, -0.774195239170837320, -0.774163590859946240, -0.774131940613645990, -0.774100288432015950, -0.774068634315134950, +-0.774036978263082600, -0.774005320275937820, -0.773973660353779680, -0.773941998496687210, -0.773910334704740020, -0.773878668978016940, -0.773847001316597230, -0.773815331720559610, +-0.773783660189984120, -0.773751986724949380, -0.773720311325534650, -0.773688633991818970, -0.773656954723881850, -0.773625273521802440, -0.773593590385659560, -0.773561905315532930, +-0.773530218311501590, -0.773498529373644720, -0.773466838502041230, -0.773435145696770850, -0.773403450957912630, -0.773371754285545940, -0.773340055679749390, -0.773308355140603030, +-0.773276652668185790, -0.773244948262577060, -0.773213241923855540, -0.773181533652101180, -0.773149823447393030, -0.773118111309810230, -0.773086397239431950, -0.773054681236338030, +-0.773022963300607380, -0.772991243432319170, -0.772959521631552680, -0.772927797898387730, -0.772896072232903240, -0.772864344635178280, -0.772832615105292660, -0.772800883643325550, +-0.772769150249356330, -0.772737414923463820, -0.772705677665728170, -0.772673938476228230, -0.772642197355043470, -0.772610454302252950, -0.772578709317936600, -0.772546962402173460, +-0.772515213555042930, -0.772483462776624050, -0.772451710066996760, -0.772419955426240310, -0.772388198854433880, -0.772356440351656740, -0.772324679917988700, -0.772292917553508930, +-0.772261153258296700, -0.772229387032431820, -0.772197618875993470, -0.772165848789061030, -0.772134076771713750, -0.772102302824031580, -0.772070526946093570, -0.772038749137979320, +-0.772006969399767870, -0.771975187731539280, -0.771943404133372810, -0.771911618605347740, -0.771879831147543330, -0.771848041760039630, -0.771816250442915910, -0.771784457196251440, +-0.771752662020125600, -0.771720864914618440, -0.771689065879809010, -0.771657264915776690, -0.771625462022601520, -0.771593657200362770, -0.771561850449139720, -0.771530041769011850, +-0.771498231160059110, -0.771466418622360760, -0.771434604155996410, -0.771402787761045320, -0.771370969437587430, -0.771339149185702230, -0.771307327005469110, -0.771275502896967450, +-0.771243676860277170, -0.771211848895477780, -0.771180019002648760, -0.771148187181869500, -0.771116353433219940, -0.771084517756779550, -0.771052680152627850, -0.771020840620844190, +-0.770988999161508650, -0.770957155774700700, -0.770925310460499500, -0.770893463218985330, -0.770861614050237560, -0.770829762954335700, -0.770797909931359100, -0.770766054981388060, +-0.770734198104501940, -0.770702339300780250, -0.770670478570302460, -0.770638615913148750, -0.770606751329398490, -0.770574884819131390, -0.770543016382426730, -0.770511146019364880, +-0.770479273730025120, -0.770447399514487150, -0.770415523372830480, -0.770383645305135260, -0.770351765311480970, -0.770319883391946900, -0.770287999546613420, -0.770256113775559910, +-0.770224226078866200, -0.770192336456611560, -0.770160444908876470, -0.770128551435740220, -0.770096656037282500, -0.770064758713582930, -0.770032859464721780, -0.770000958290778410, +-0.769969055191832670, -0.769937150167964050, -0.769905243219252800, -0.769873334345778430, -0.769841423547620750, -0.769809510824859270, -0.769777596177574240, -0.769745679605845280, +-0.769713761109751760, -0.769681840689374170, -0.769649918344791910, -0.769617994076085000, -0.769586067883332610, -0.769554139766615460, -0.769522209726013040, -0.769490277761604950, +-0.769458343873470900, -0.769426408061691380, -0.769394470326345780, -0.769362530667513920, -0.769330589085275520, -0.769298645579711060, -0.769266700150899820, -0.769234752798921840, +-0.769202803523856730, -0.769170852325784970, -0.769138899204785950, -0.769106944160939500, -0.769074987194325880, -0.769043028305024910, -0.769011067493116210, -0.768979104758679700, +-0.768947140101795660, -0.768915173522543790, -0.768883205021003930, -0.768851234597255790, -0.768819262251379860, -0.768787287983455860, -0.768755311793563490, -0.768723333681782690, +-0.768691353648193740, -0.768659371692876460, -0.768627387815910780, -0.768595402017376310, -0.768563414297353640, -0.768531424655922390, -0.768499433093162600, -0.768467439609153870, +-0.768435444203976910, -0.768403446877711340, -0.768371447630436850, -0.768339446462234070, -0.768307443373182570, -0.768275438363362540, -0.768243431432853670, -0.768211422581736470, +-0.768179411810090640, -0.768147399117996340, -0.768115384505533290, -0.768083367972781980, -0.768051349519822350, -0.768019329146734320, -0.767987306853597620, -0.767955282640493060, +-0.767923256507500150, -0.767891228454699150, -0.767859198482169880, -0.767827166589992840, -0.767795132778247850, -0.767763097047014730, -0.767731059396374200, -0.767699019826405980, +-0.767666978337190220, -0.767634934928806740, -0.767602889601336270, -0.767570842354858510, -0.767538793189453620, -0.767506742105201530, -0.767474689102182860, -0.767442634180477420, +-0.767410577340165490, -0.767378518581326660, -0.767346457904041990, -0.767314395308391070, -0.767282330794454290, -0.767250264362311250, -0.767218196012042890, -0.767186125743729020, +-0.767154053557449590, -0.767121979453285310, -0.767089903431316110, -0.767057825491622050, -0.767025745634283270, -0.766993663859380280, -0.766961580166993230, -0.766929494557202160, +-0.766897407030087130, -0.766865317585728850, -0.766833226224207240, -0.766801132945602590, -0.766769037749994830, -0.766736940637464780, -0.766704841608092380, -0.766672740661957790, +-0.766640637799141160, -0.766608533019723200, -0.766576426323783870, -0.766544317711403520, -0.766512207182662110, -0.766480094737640340, -0.766447980376418480, -0.766415864099076360, +-0.766383745905694800, -0.766351625796353850, -0.766319503771133890, -0.766287379830114970, -0.766255253973377790, -0.766223126201002410, -0.766190996513069320, -0.766158864909658450, +-0.766126731390850630, -0.766094595956726130, -0.766062458607364990, -0.766030319342847490, -0.765998178163254440, -0.765966035068666010, -0.765933890059162460, -0.765901743134823840, +-0.765869594295731200, -0.765837443541964590, -0.765805290873604050, -0.765773136290730630, -0.765740979793424260, -0.765708821381765550, -0.765676661055834430, -0.765644498815711950, +-0.765612334661478270, -0.765580168593213760, -0.765548000610998480, -0.765515830714913470, -0.765483658905039000, -0.765451485181455340, -0.765419309544242640, -0.765387131993481960, +-0.765354952529253450, -0.765322771151637490, -0.765290587860714470, -0.765258402656565200, -0.765226215539269840, -0.765194026508908780, -0.765161835565562940, -0.765129642709312390, +-0.765097447940237820, -0.765065251258419290, -0.765033052663937950, -0.765000852156874080, -0.764968649737307940, -0.764936445405319910, -0.764904239160991150, -0.764872031004401710, +-0.764839820935632190, -0.764807608954762850, -0.764775395061874750, -0.764743179257048160, -0.764710961540363670, -0.764678741911901440, -0.764646520371742630, -0.764614296919967630, +-0.764582071556656470, -0.764549844281890540, -0.764517615095749890, -0.764485383998315230, -0.764453150989666930, -0.764420916069885940, -0.764388679239052630, -0.764356440497247710, +-0.764324199844551360, -0.764291957281044710, -0.764259712806808270, -0.764227466421922520, -0.764195218126467850, -0.764162967920525400, -0.764130715804175580, -0.764098461777498850, +-0.764066205840575720, -0.764033947993487450, -0.764001688236314200, -0.763969426569136800, -0.763937162992035510, -0.763904897505091610, -0.763872630108385580, -0.763840360801997580, +-0.763808089586008990, -0.763775816460500080, -0.763743541425551790, -0.763711264481244270, -0.763678985627658790, -0.763646704864875960, -0.763614422192976370, -0.763582137612040410, +-0.763549851122149350, -0.763517562723383780, -0.763485272415824200, -0.763452980199551210, -0.763420686074645970, -0.763388390041189080, -0.763356092099261250, -0.763323792248942870, +-0.763291490490315310, -0.763259186823458950, -0.763226881248454390, -0.763194573765382910, -0.763162264374325110, -0.763129953075361470, -0.763097639868572710, -0.763065324754040210, +-0.763033007731844350, -0.763000688802065950, -0.762968367964785620, -0.762936045220084620, -0.762903720568043450, -0.762871394008743040, -0.762839065542263770, -0.762806735168687240, +-0.762774402888093840, -0.762742068700564380, -0.762709732606179470, -0.762677394605020600, -0.762645054697168150, -0.762612712882702830, -0.762580369161705910, -0.762548023534258210, +-0.762515676000440350, -0.762483326560333130, -0.762450975214017830, -0.762418621961575060, -0.762386266803085740, -0.762353909738630490, -0.762321550768290670, -0.762289189892147110, +-0.762256827110280530, -0.762224462422771530, -0.762192095829701710, -0.762159727331151670, -0.762127356927202240, -0.762094984617934120, -0.762062610403428930, -0.762030234283767150, +-0.761997856259029830, -0.761965476329297560, -0.761933094494651850, -0.761900710755173520, -0.761868325110943050, -0.761835937562042040, -0.761803548108551110, -0.761771156750551400, +-0.761738763488123530, -0.761706368321349080, -0.761673971250308560, -0.761641572275083220, -0.761609171395753680, -0.761576768612401420, -0.761544363925107270, -0.761511957333952270, +-0.761479548839017030, -0.761447138440383140, -0.761414726138131550, -0.761382311932343070, -0.761349895823098530, -0.761317477810479540, -0.761285057894566800, -0.761252636075441250, +-0.761220212353184270, -0.761187786727876790, -0.761155359199599870, -0.761122929768434320, -0.761090498434461640, -0.761058065197762760, -0.761025630058418720, -0.760993193016510250, +-0.760960754072119160, -0.760928313225326170, -0.760895870476212430, -0.760863425824858660, -0.760830979271346690, -0.760798530815757210, -0.760766080458171400, -0.760733628198670080, +-0.760701174037335060, -0.760668717974247070, -0.760636260009487030, -0.760603800143136550, -0.760571338375276570, -0.760538874705988350, -0.760506409135352610, -0.760473941663451060, +-0.760441472290364740, -0.760409001016174700, -0.760376527840961880, -0.760344052764807990, -0.760311575787794070, -0.760279096910001170, -0.760246616131510230, -0.760214133452402960, +-0.760181648872760410, -0.760149162392663840, -0.760116674012193960, -0.760084183731432720, -0.760051691550461040, -0.760019197469359750, -0.759986701488210900, -0.759954203607095200, +-0.759921703826093920, -0.759889202145288210, -0.759856698564759790, -0.759824193084589590, -0.759791685704858890, -0.759759176425648720, -0.759726665247040910, -0.759694152169116400, +-0.759661637191956450, -0.759629120315642230, -0.759596601540255430, -0.759564080865877230, -0.759531558292588670, -0.759499033820471010, -0.759466507449606090, -0.759433979180074940, +-0.759401449011958720, -0.759368916945338590, -0.759336382980296490, -0.759303847116913460, -0.759271309355270540, -0.759238769695449680, -0.759206228137531800, -0.759173684681598290, +-0.759141139327730310, -0.759108592076009890, -0.759076042926517980, -0.759043491879335840, -0.759010938934544740, -0.758978384092226620, -0.758945827352462520, -0.758913268715333820, +-0.758880708180921680, -0.758848145749308150, -0.758815581420574150, -0.758783015194801180, -0.758750447072070400, -0.758717877052463850, -0.758685305136062470, -0.758652731322947640, +-0.758620155613201290, -0.758587578006904570, -0.758554998504138880, -0.758522417104985360, -0.758489833809526060, -0.758457248617842250, -0.758424661530015310, -0.758392072546126390, +-0.758359481666257660, -0.758326888890490160, -0.758294294218905480, -0.758261697651584690, -0.758229099188610030, -0.758196498830062570, -0.758163896576023900, -0.758131292426575180, +-0.758098686381798450, -0.758066078441775200, -0.758033468606586270, -0.758000856876314020, -0.757968243251039730, -0.757935627730844660, -0.757903010315810310, -0.757870391006018720, +-0.757837769801551260, -0.757805146702489220, -0.757772521708914070, -0.757739894820907980, -0.757707266038552100, -0.757674635361928030, -0.757642002791117040, -0.757609368326201400, +-0.757576731967262380, -0.757544093714381470, -0.757511453567640050, -0.757478811527120270, -0.757446167592903400, -0.757413521765071260, -0.757380874043704910, -0.757348224428886720, +-0.757315572920697950, -0.757282919519220000, -0.757250264224535010, -0.757217607036724360, -0.757184947955869660, -0.757152286982052390, -0.757119624115354610, -0.757086959355857790, +-0.757054292703643550, -0.757021624158793260, -0.756988953721389300, -0.756956281391512940, -0.756923607169245780, -0.756890931054669420, -0.756858253047866030, -0.756825573148916850, +-0.756792891357903950, -0.756760207674908370, -0.756727522100012600, -0.756694834633298120, -0.756662145274846100, -0.756629454024739130, -0.756596760883058490, -0.756564065849886000, +-0.756531368925303040, -0.756498670109391870, -0.756465969402234100, -0.756433266803911320, -0.756400562314505140, -0.756367855934097830, -0.756335147662770990, -0.756302437500606110, +-0.756269725447684890, -0.756237011504089730, -0.756204295669901990, -0.756171577945203510, -0.756138858330075880, -0.756106136824601260, -0.756073413428861360, -0.756040688142937570, +-0.756007960966912470, -0.755975231900867350, -0.755942500944884130, -0.755909768099044530, -0.755877033363430710, -0.755844296738124250, -0.755811558223207220, -0.755778817818760880, +-0.755746075524867830, -0.755713331341609560, -0.755680585269067890, -0.755647837307324540, -0.755615087456461890, -0.755582335716561530, -0.755549582087705400, -0.755516826569974880, +-0.755484069163452680, -0.755451309868220290, -0.755418548684359310, -0.755385785611952240, -0.755353020651080680, -0.755320253801826660, -0.755287485064271680, -0.755254714438498230, +-0.755221941924588020, -0.755189167522622990, -0.755156391232684740, -0.755123613054855760, -0.755090832989217860, -0.755058051035852770, -0.755025267194842310, -0.754992481466268960, +-0.754959693850214440, -0.754926904346760570, -0.754894112955989180, -0.754861319677982980, -0.754828524512823230, -0.754795727460592310, -0.754762928521371830, -0.754730127695244170, +-0.754697324982291360, -0.754664520382594790, -0.754631713896237290, -0.754598905523300440, -0.754566095263866420, -0.754533283118016820, -0.754500469085834350, -0.754467653167400610, +-0.754434835362797870, -0.754402015672107630, -0.754369194095412700, -0.754336370632794790, -0.754303545284335960, -0.754270718050117920, -0.754237888930223480, -0.754205057924734130, +-0.754172225033732270, -0.754139390257299590, -0.754106553595518700, -0.754073715048471430, -0.754040874616239480, -0.754008032298905780, -0.753975188096551950, -0.753942342009260140, +-0.753909494037112160, -0.753876644180190740, -0.753843792438577690, -0.753810938812355170, -0.753778083301605120, -0.753745225906410020, -0.753712366626851930, -0.753679505463012880, +-0.753646642414974810, -0.753613777482820320, -0.753580910666631460, -0.753548041966490390, -0.753515171382478920, -0.753482298914679770, -0.753449424563174870, -0.753416548328046050, +-0.753383670209376240, -0.753350790207247160, -0.753317908321741170, -0.753285024552940220, -0.753252138900926900, -0.753219251365783160, -0.753186361947591370, -0.753153470646433450, +-0.753120577462392030, -0.753087682395549240, -0.753054785445987250, -0.753021886613787990, -0.752988985899034290, -0.752956083301808080, -0.752923178822191730, -0.752890272460267070, +-0.752857364216117150, -0.752824454089823680, -0.752791542081469260, -0.752758628191135480, -0.752725712418905510, -0.752692794764861280, -0.752659875229084730, -0.752626953811658890, +-0.752594030512665490, -0.752561105332187120, -0.752528178270305710, -0.752495249327104100, -0.752462318502664430, -0.752429385797068860, -0.752396451210399660, -0.752363514742739550, +-0.752330576394170670, -0.752297636164775300, -0.752264694054635590, -0.752231750063834470, -0.752198804192453880, -0.752165856440576430, -0.752132906808283930, -0.752099955295659430, +-0.752067001902785080, -0.752034046629743050, -0.752001089476616040, -0.751968130443486320, -0.751935169530436380, -0.751902206737548150, -0.751869242064904690, -0.751836275512588140, +-0.751803307080680880, -0.751770336769265080, -0.751737364578423770, -0.751704390508239010, -0.751671414558793270, -0.751638436730168720, -0.751605457022448410, -0.751572475435714370, +-0.751539491970049210, -0.751506506625534980, -0.751473519402254820, -0.751440530300290790, -0.751407539319725260, -0.751374546460641060, -0.751341551723120560, -0.751308555107246150, +-0.751275556613100080, -0.751242556240765410, -0.751209553990324300, -0.751176549861859330, -0.751143543855452680, -0.751110535971187600, -0.751077526209146030, -0.751044514569410680, +-0.751011501052063710, -0.750978485657188390, -0.750945468384866750, -0.750912449235181520, -0.750879428208214850, -0.750846405304049780, -0.750813380522768910, -0.750780353864454190, +-0.750747325329188860, -0.750714294917055210, -0.750681262628135840, -0.750648228462513110, -0.750615192420269970, -0.750582154501489020, -0.750549114706252520, -0.750516073034642960, +-0.750483029486743500, -0.750449984062636520, -0.750416936762404620, -0.750383887586129950, -0.750350836533896000, -0.750317783605784940, -0.750284728801879350, -0.750251672122261630, +-0.750218613567015140, -0.750185553136222040, -0.750152490829965050, -0.750119426648326540, -0.750086360591389780, -0.750053292659237150, -0.750020222851950910, -0.749987151169614450, +-0.749954077612310140, -0.749921002180120590, -0.749887924873128280, -0.749854845691416360, -0.749821764635067440, -0.749788681704164130, -0.749755596898788680, -0.749722510219024580, +-0.749689421664954340, -0.749656331236660420, -0.749623238934225330, -0.749590144757732560, -0.749557048707264360, -0.749523950782903570, -0.749490850984732560, -0.749457749312834820, +-0.749424645767292620, -0.749391540348188560, -0.749358433055605900, -0.749325323889627140, -0.749292212850335090, -0.749259099937812260, -0.749225985152141890, -0.749192868493406610, +-0.749159749961689210, -0.749126629557072100, -0.749093507279638640, -0.749060383129471430, -0.749027257106653410, -0.748994129211266850, -0.748960999443395230, -0.748927867803121150, +-0.748894734290527330, -0.748861598905696480, -0.748828461648711860, -0.748795322519656080, -0.748762181518611850, -0.748729038645662200, -0.748695893900890200, -0.748662747284378320, +-0.748629598796209380, -0.748596448436466670, -0.748563296205232880, -0.748530142102590830, -0.748496986128623030, -0.748463828283413180, -0.748430668567043770, -0.748397506979597620, +-0.748364343521157440, -0.748331178191806720, -0.748298010991627960, -0.748264841920704300, -0.748231670979118140, -0.748198498166953160, -0.748165323484291880, -0.748132146931217320, +-0.748098968507812100, -0.748065788214159810, -0.748032606050343050, -0.747999422016444430, -0.747966236112547530, -0.747933048338734970, -0.747899858695089900, -0.747866667181694920, +-0.747833473798633520, -0.747800278545988410, -0.747767081423842630, -0.747733882432278900, -0.747700681571380700, -0.747667478841230750, -0.747634274241912200, -0.747601067773507650, +-0.747567859436100710, -0.747534649229774080, -0.747501437154610810, -0.747468223210693730, -0.747435007398106420, -0.747401789716931500, -0.747368570167251890, -0.747335348749151080, +-0.747302125462711910, -0.747268900308017400, -0.747235673285150390, -0.747202444394194480, -0.747169213635232480, -0.747135981008347440, -0.747102746513622180, -0.747069510151140310, +-0.747036271920984650, -0.747003031823238350, -0.746969789857984120, -0.746936546025305680, -0.746903300325286070, -0.746870052758008110, -0.746836803323554620, -0.746803552022009540, +-0.746770298853455470, -0.746737043817975450, -0.746703786915653090, -0.746670528146571200, -0.746637267510813050, -0.746604005008461470, -0.746570740639600160, -0.746537474404311950, +-0.746504206302680110, -0.746470936334787450, -0.746437664500717690, -0.746404390800553870, -0.746371115234378930, -0.746337837802276030, -0.746304558504328750, -0.746271277340620150, +-0.746237994311233280, -0.746204709416251170, -0.746171422655757640, -0.746138134029835420, -0.746104843538567990, -0.746071551182038050, -0.746038256960329660, -0.746004960873525520, +-0.745971662921708690, -0.745938363104962980, -0.745905061423371430, -0.745871757877017210, -0.745838452465983350, -0.745805145190353570, -0.745771836050210910, -0.745738525045638760, +-0.745705212176719920, -0.745671897443538350, -0.745638580846177070, -0.745605262384719360, -0.745571942059248150, -0.745538619869847370, -0.745505295816600080, -0.745471969899589530, +-0.745438642118898760, -0.745405312474611730, -0.745371980966811340, -0.745338647595580770, -0.745305312361003840, -0.745271975263163580, -0.745238636302143490, -0.745205295478026500, +-0.745171952790896540, -0.745138608240836660, -0.745105261827930240, -0.745071913552260430, -0.745038563413911170, -0.745005211412965500, -0.744971857549506680, -0.744938501823617980, +-0.744905144235383340, -0.744871784784885800, -0.744838423472208970, -0.744805060297435540, -0.744771695260649900, -0.744738328361934990, -0.744704959601373950, -0.744671588979050840, +-0.744638216495048690, -0.744604842149451110, -0.744571465942341030, -0.744538087873802600, -0.744504707943918990, -0.744471326152773560, -0.744437942500449590, -0.744404556987031010, +-0.744371169612601080, -0.744337780377243190, -0.744304389281040480, -0.744270996324077230, -0.744237601506436360, -0.744204204828201600, -0.744170806289455980, -0.744137405890283650, +-0.744104003630767790, -0.744070599510991640, -0.744037193531039250, -0.744003785690994010, -0.743970375990939180, -0.743936964430958140, -0.743903551011135030, -0.743870135731553030, +-0.743836718592295610, -0.743803299593446150, -0.743769878735088710, -0.743736456017306650, -0.743703031440183350, -0.743669605003802190, -0.743636176708247440, -0.743602746553602150, +-0.743569314539950010, -0.743535880667374300, -0.743502444935959180, -0.743469007345787910, -0.743435567896944090, -0.743402126589511210, -0.743368683423573100, -0.743335238399213450, +-0.743301791516515320, -0.743268342775563080, -0.743234892176439900, -0.743201439719229580, -0.743167985404015300, -0.743134529230881300, -0.743101071199911090, -0.743067611311188150, +-0.743034149564795960, -0.743000685960818590, -0.742967220499339610, -0.742933753180442520, -0.742900284004210710, -0.742866812970728540, -0.742833340080079290, -0.742799865332346650, +-0.742766388727614140, -0.742732910265966000, -0.742699429947485500, -0.742665947772256140, -0.742632463740362180, -0.742598977851887110, -0.742565490106914640, -0.742532000505528030, +-0.742498509047811780, -0.742465015733849270, -0.742431520563724190, -0.742398023537520050, -0.742364524655321210, -0.742331023917210950, -0.742297521323273090, -0.742264016873591230, +-0.742230510568249620, -0.742197002407331660, -0.742163492390921280, -0.742129980519101840, -0.742096466791957620, -0.742062951209572440, -0.742029433772029570, -0.741995914479413270, +-0.741962393331807250, -0.741928870329295220, -0.741895345471960790, -0.741861818759888210, -0.741828290193161210, -0.741794759771863380, -0.741761227496078310, -0.741727693365890620, +-0.741694157381383560, -0.741660619542641180, -0.741627079849746960, -0.741593538302785290, -0.741559994901839770, -0.741526449646994320, -0.741492902538332330, -0.741459353575938510, +-0.741425802759896220, -0.741392250090289530, -0.741358695567201800, -0.741325139190717740, -0.741291580960920740, -0.741258020877894610, -0.741224458941723620, -0.741190895152491480, +-0.741157329510282130, -0.741123762015179150, -0.741090192667267060, -0.741056621466629540, -0.741023048413350430, -0.740989473507513320, -0.740955896749202920, -0.740922318138502730, +-0.740888737675496900, -0.740855155360268690, -0.740821571192903040, -0.740787985173483430, -0.740754397302093800, -0.740720807578818090, -0.740687216003740430, -0.740653622576944780, +-0.740620027298514840, -0.740586430168535090, -0.740552831187089260, -0.740519230354261370, -0.740485627670135040, -0.740452023134794970, -0.740418416748324870, -0.740384808510808680, +-0.740351198422330330, -0.740317586482974190, -0.740283972692823980, -0.740250357051963960, -0.740216739560477730, -0.740183120218449900, -0.740149499025964270, -0.740115875983104910, +-0.740082251089955620, -0.740048624346600900, -0.740014995753124680, -0.739981365309610780, -0.739947733016143580, -0.739914098872807120, -0.739880462879685340, -0.739846825036862280, +-0.739813185344422310, -0.739779543802449480, -0.739745900411027720, -0.739712255170240860, -0.739678608080173830, -0.739644959140910110, -0.739611308352533970, -0.739577655715129460, +-0.739544001228780950, -0.739510344893572480, -0.739476686709588100, -0.739443026676911860, -0.739409364795628240, -0.739375701065821180, -0.739342035487574600, -0.739308368060973220, +-0.739274698786100970, -0.739241027663041890, -0.739207354691880040, -0.739173679872700000, -0.739140003205585930, -0.739106324690621760, -0.739072644327891440, -0.739038962117479770, +-0.739005278059470690, -0.738971592153948590, -0.738937904400997050, -0.738904214800701120, -0.738870523353144630, -0.738836830058411830, -0.738803134916586670, -0.738769437927753960, +-0.738735739091997630, -0.738702038409401960, -0.738668335880050990, -0.738634631504029420, -0.738600925281421180, -0.738567217212310450, -0.738533507296781910, -0.738499795534919620, +-0.738466081926807850, -0.738432366472530520, -0.738398649172172680, -0.738364930025818160, -0.738331209033551320, -0.738297486195456100, -0.738263761511617540, -0.738230034982119590, +-0.738196306607046490, -0.738162576386482420, -0.738128844320512070, -0.738095110409219710, -0.738061374652689620, -0.738027637051005710, -0.737993897604252940, -0.737960156312515550, +-0.737926413175877370, -0.737892668194423560, -0.737858921368238050, -0.737825172697405220, -0.737791422182009100, -0.737757669822134750, -0.737723915617866320, -0.737690159569288070, +-0.737656401676484050, -0.737622641939539300, -0.737588880358538090, -0.737555116933564570, -0.737521351664703010, -0.737487584552038330, -0.737453815595654700, -0.737420044795636500, +-0.737386272152068090, -0.737352497665034080, -0.737318721334618840, -0.737284943160906540, -0.737251163143982200, -0.737217381283930000, -0.737183597580834180, -0.737149812034779250, +-0.737116024645849910, -0.737082235414130650, -0.737048444339705840, -0.737014651422659430, -0.736980856663076890, -0.736947060061042160, -0.736913261616639730, -0.736879461329953860, +-0.736845659201069590, -0.736811855230071200, -0.736778049417043170, -0.736744241762069760, -0.736710432265236030, -0.736676620926626220, -0.736642807746324850, -0.736608992724416160, +-0.736575175860985310, -0.736541357156116570, -0.736507536609893990, -0.736473714222402930, -0.736439889993727670, -0.736406063923952580, -0.736372236013162040, -0.736338406261441310, +-0.736304574668874450, -0.736270741235546260, -0.736236905961540790, -0.736203068846943420, -0.736169229891838420, -0.736135389096310270, -0.736101546460443350, -0.736067701984322920, +-0.736033855668033250, -0.736000007511658950, -0.735966157515284270, -0.735932305678994480, -0.735898452002873960, -0.735864596487006970, -0.735830739131478890, -0.735796879936373880, +-0.735763018901776640, -0.735729156027771670, -0.735695291314444000, -0.735661424761878120, -0.735627556370158750, -0.735593686139370150, -0.735559814069597580, -0.735525940160925540, +-0.735492064413438620, -0.735458186827221310, -0.735424307402358760, -0.735390426138935460, -0.735356543037036130, -0.735322658096745130, -0.735288771318147740, -0.735254882701328330, +-0.735220992246371610, -0.735187099953362620, -0.735153205822385860, -0.735119309853526140, -0.735085412046867840, -0.735051512402496220, -0.735017610920496000, -0.734983707600951550, +-0.734949802443947700, -0.734915895449569480, -0.734881986617901720, -0.734848075949028790, -0.734814163443035520, -0.734780249100007050, -0.734746332920028000, -0.734712414903183060, +-0.734678495049556850, -0.734644573359234720, -0.734610649832301180, -0.734576724468840590, -0.734542797268938560, -0.734508868232679580, -0.734474937360148350, -0.734441004651429470, +-0.734407070106608440, -0.734373133725769730, -0.734339195508998180, -0.734305255456378370, -0.734271313567995690, -0.734237369843934730, -0.734203424284280310, -0.734169476889117050, +-0.734135527658530410, -0.734101576592604890, -0.734067623691425530, -0.734033668955076820, -0.733999712383644140, -0.733965753977212200, -0.733931793735865920, -0.733897831659689800, +-0.733863867748769440, -0.733829902003189430, -0.733795934423034370, -0.733761965008389750, -0.733727993759340170, -0.733694020675970670, -0.733660045758365850, -0.733626069006611090, +-0.733592090420791320, -0.733558110000991250, -0.733524127747295580, -0.733490143659789820, -0.733456157738558880, -0.733422169983687370, -0.733388180395260210, -0.733354188973362910, +-0.733320195718080160, -0.733286200629496900, -0.733252203707697840, -0.733218204952768570, -0.733184204364793810, -0.733150201943858270, -0.733116197690047430, -0.733082191603446120, +-0.733048183684139380, -0.733014173932211800, -0.732980162347749100, -0.732946148930836090, -0.732912133681557610, -0.732878116599998570, -0.732844097686244480, -0.732810076940380140, +-0.732776054362490600, -0.732742029952660690, -0.732708003710976000, -0.732673975637521240, -0.732639945732381670, -0.732605913995641790, -0.732571880427387520, -0.732537845027703470, +-0.732503807796674570, -0.732469768734386410, -0.732435727840923810, -0.732401685116371940, -0.732367640560815490, -0.732333594174340410, -0.732299545957031170, -0.732265495908973160, +-0.732231444030251090, -0.732197390320950660, -0.732163334781156800, -0.732129277410954570, -0.732095218210428890, -0.732061157179665470, -0.732027094318749130, -0.731993029627765020, +-0.731958963106798090, -0.731924894755934030, -0.731890824575257780, -0.731856752564854380, -0.731822678724808770, -0.731788603055206880, -0.731754525556133520, -0.731720446227673400, +-0.731686365069912580, -0.731652282082935760, -0.731618197266828310, -0.731584110621675050, -0.731550022147561820, -0.731515931844573420, -0.731481839712795350, -0.731447745752312310, +-0.731413649963210230, -0.731379552345573950, -0.731345452899488820, -0.731311351625039910, -0.731277248522312680, -0.731243143591392530, -0.731209036832364380, -0.731174928245313380, +-0.731140817830325360, -0.731106705587485360, -0.731072591516878310, -0.731038475618589920, -0.731004357892705460, -0.730970238339310190, -0.730936116958488810, -0.730901993750327610, +-0.730867868714911270, -0.730833741852325410, -0.730799613162654850, -0.730765482645985510, -0.730731350302402440, -0.730697216131991120, -0.730663080134836380, -0.730628942311024270, +-0.730594802660639810, -0.730560661183768280, -0.730526517880494830, -0.730492372750905390, -0.730458225795085010, -0.730424077013118840, -0.730389926405092700, -0.730355773971091750, +-0.730321619711201350, -0.730287463625506670, -0.730253305714093640, -0.730219145977047290, -0.730184984414453010, -0.730150821026396060, -0.730116655812962370, -0.730082488774236980, +-0.730048319910305390, -0.730014149221252740, -0.729979976707164970, -0.729945802368127340, -0.729911626204225120, -0.729877448215543570, -0.729843268402168620, -0.729809086764185540, +-0.729774903301679490, -0.729740718014736500, -0.729706530903441620, -0.729672341967880440, -0.729638151208138130, -0.729603958624300830, -0.729569764216453590, -0.729535567984681890, +-0.729501369929070890, -0.729467170049706850, -0.729432968346674930, -0.729398764820060500, -0.729364559469948940, -0.729330352296426290, -0.729296143299577700, -0.729261932479488780, +-0.729227719836244680, -0.729193505369931660, -0.729159289080634760, -0.729125070968439810, -0.729090851033431740, -0.729056629275696920, -0.729022405695320510, -0.728988180292387770, +-0.728953953066984850, -0.728919724019197020, -0.728885493149110000, -0.728851260456808920, -0.728817025942379960, -0.728782789605908370, -0.728748551447479960, -0.728714311467179690, +-0.728680069665094130, -0.728645826041308230, -0.728611580595907920, -0.728577333328978230, -0.728543084240605540, -0.728508833330875130, -0.728474580599872690, -0.728440326047683500, +-0.728406069674393700, -0.728371811480088780, -0.728337551464854020, -0.728303289628775770, -0.728269025971939210, -0.728234760494430140, -0.728200493196333840, -0.728166224077736570, +-0.728131953138723700, -0.728097680379381050, -0.728063405799793890, -0.728029129400048490, -0.727994851180230330, -0.727960571140425010, -0.727926289280717900, -0.727892005601195380, +-0.727857720101942830, -0.727823432783046060, -0.727789143644590350, -0.727754852686662070, -0.727720559909346700, -0.727686265312729620, -0.727651968896897210, -0.727617670661934830, +-0.727583370607928330, -0.727549068734962940, -0.727514765043125400, -0.727480459532500840, -0.727446152203175100, -0.727411843055233760, -0.727377532088762990, -0.727343219303848490, +-0.727308904700575960, -0.727274588279030800, -0.727240270039299470, -0.727205949981467590, -0.727171628105620750, -0.727137304411844540, -0.727102978900225240, -0.727068651570848660, +-0.727034322423800510, -0.726999991459166050, -0.726965658677032000, -0.726931324077483950, -0.726896987660607060, -0.726862649426488150, -0.726828309375212480, -0.726793967506866200, +-0.726759623821534580, -0.726725278319304220, -0.726690931000260720, -0.726656581864489890, -0.726622230912077230, -0.726587878143109320, -0.726553523557671780, -0.726519167155850410, +-0.726484808937730710, -0.726450448903399490, -0.726416087052942030, -0.726381723386444240, -0.726347357903992070, -0.726312990605671670, -0.726278621491568850, -0.726244250561769110, +-0.726209877816359040, -0.726175503255424350, -0.726141126879050860, -0.726106748687324280, -0.726072368680331090, -0.726037986858157010, -0.726003603220887970, -0.725969217768609560, +-0.725934830501408500, -0.725900441419370270, -0.725866050522581020, -0.725831657811126350, -0.725797263285092750, -0.725762866944566040, -0.725728468789632150, -0.725694068820376790, +-0.725659667036886560, -0.725625263439247160, -0.725590858027544310, -0.725556450801864590, -0.725522041762293850, -0.725487630908917880, -0.725453218241822520, -0.725418803761094470, +-0.725384387466819440, -0.725349969359083470, -0.725315549437972160, -0.725281127703572340, -0.725246704155969700, -0.725212278795250300, -0.725177851621499950, -0.725143422634805250, +-0.725108991835251900, -0.725074559222926180, -0.725040124797913690, -0.725005688560301230, -0.724971250510174530, -0.724936810647619390, -0.724902368972722530, -0.724867925485569780, +-0.724833480186247160, -0.724799033074840620, -0.724764584151436740, -0.724730133416121360, -0.724695680868980840, -0.724661226510100680, -0.724626770339567680, -0.724592312357467790, +-0.724557852563887160, -0.724523390958911720, -0.724488927542627950, -0.724454462315121890, -0.724419995276479600, -0.724385526426787110, -0.724351055766131120, -0.724316583294597470, +-0.724282109012272410, -0.724247632919241660, -0.724213155015592250, -0.724178675301409890, -0.724144193776780520, -0.724109710441790950, -0.724075225296527240, -0.724040738341075300, +-0.724006249575521290, -0.723971758999951920, -0.723937266614453230, -0.723902772419111380, -0.723868276414012190, -0.723833778599242690, -0.723799278974888830, -0.723764777541036630, +-0.723730274297772150, -0.723695769245182420, -0.723661262383353150, -0.723626753712370840, -0.723592243232321300, -0.723557730943291460, -0.723523216845367250, -0.723488700938634710, +-0.723454183223180670, -0.723419663699091280, -0.723385142366452680, -0.723350619225350930, -0.723316094275872960, -0.723281567518104680, -0.723247038952132600, -0.723212508578042420, +-0.723177976395921520, -0.723143442405855490, -0.723108906607930920, -0.723074369002233870, -0.723039829588851050, -0.723005288367868700, -0.722970745339373110, -0.722936200503450420, +-0.722901653860187570, -0.722867105409670470, -0.722832555151985410, -0.722798003087219200, -0.722763449215457990, -0.722728893536788150, -0.722694336051295740, -0.722659776759067900, +-0.722625215660190560, -0.722590652754750210, -0.722556088042832780, -0.722521521524525650, -0.722486953199914520, -0.722452383069086100, -0.722417811132126440, -0.722383237389122580, +-0.722348661840160560, -0.722314084485326970, -0.722279505324707750, -0.722244924358390160, -0.722210341586460250, -0.722175757009004380, -0.722141170626108940, -0.722106582437860740, +-0.722071992444346280, -0.722037400645651360, -0.722002807041863370, -0.721968211633068240, -0.721933614419352660, -0.721899015400802810, -0.721864414577505610, -0.721829811949547430, +-0.721795207517014650, -0.721760601279993640, -0.721725993238571340, -0.721691383392834120, -0.721656771742868460, -0.721622158288760530, -0.721587543030597470, -0.721552925968465650, +-0.721518307102451460, -0.721483686432641160, -0.721449063959122010, -0.721414439681980160, -0.721379813601301880, -0.721345185717174430, -0.721310556029684080, -0.721275924538917200, +-0.721241291244960280, -0.721206656147900470, -0.721172019247823930, -0.721137380544817350, -0.721102740038967130, -0.721068097730360290, -0.721033453619083110, -0.720998807705222510, +-0.720964159988864430, -0.720929510470096350, -0.720894859149004310, -0.720860206025675240, -0.720825551100195420, -0.720790894372651980, -0.720756235843131310, -0.720721575511719670, +-0.720686913378504430, -0.720652249443571980, -0.720617583707008790, -0.720582916168901470, -0.720548246829337050, -0.720513575688402130, -0.720478902746183090, -0.720444228002766640, +-0.720409551458239930, -0.720374873112689220, -0.720340192966201440, -0.720305511018862870, -0.720270827270760750, -0.720236141721981580, -0.720201454372612180, -0.720166765222738700, +-0.720132074272448630, -0.720097381521828450, -0.720062686970964430, -0.720027990619944050, -0.719993292468853690, -0.719958592517780050, -0.719923890766809630, -0.719889187216029900, +-0.719854481865527030, -0.719819774715388050, -0.719785065765699340, -0.719750355016548270, -0.719715642468021330, -0.719680928120205230, -0.719646211973186460, -0.719611494027052600, +-0.719576774281889930, -0.719542052737785260, -0.719507329394825310, -0.719472604253097230, -0.719437877312687600, -0.719403148573683370, -0.719368418036170910, -0.719333685700237810, +-0.719298951565970460, -0.719264215633455330, -0.719229477902780020, -0.719194738374031030, -0.719159997047295160, -0.719125253922659020, -0.719090509000209990, -0.719055762280034760, +-0.719021013762220160, -0.718986263446852680, -0.718951511334019800, -0.718916757423808230, -0.718882001716304670, -0.718847244211595850, -0.718812484909769230, -0.718777723810911430, +-0.718742960915109250, -0.718708196222449410, -0.718673429733019290, -0.718638661446905800, -0.718603891364195220, -0.718569119484975150, -0.718534345809332400, -0.718499570337353680, +-0.718464793069125810, -0.718430014004736270, -0.718395233144271670, -0.718360450487819050, -0.718325666035464880, -0.718290879787296890, -0.718256091743401770, -0.718221301903866350, +-0.718186510268777330, -0.718151716838222430, -0.718116921612288240, -0.718082124591061690, -0.718047325774629600, -0.718012525163079340, -0.717977722756497960, -0.717942918554971830, +-0.717908112558588770, -0.717873304767435490, -0.717838495181598810, -0.717803683801165660, -0.717768870626223630, -0.717734055656859440, -0.717699238893160010, -0.717664420335212270, +-0.717629599983103720, -0.717594777836921270, -0.717559953896751760, -0.717525128162682100, -0.717490300634799900, -0.717455471313191980, -0.717420640197945380, -0.717385807289146920, +-0.717350972586884180, -0.717316136091244120, -0.717281297802313640, -0.717246457720179590, -0.717211615844929650, -0.717176772176650770, -0.717141926715429650, -0.717107079461353990, +-0.717072230414510630, -0.717037379574986700, -0.717002526942868920, -0.716967672518245340, -0.716932816301202420, -0.716897958291827450, -0.716863098490207350, -0.716828236896429830, +-0.716793373510581700, -0.716758508332750010, -0.716723641363021910, -0.716688772601485000, -0.716653902048226100, -0.716619029703332470, -0.716584155566890920, -0.716549279638989290, +-0.716514401919714490, -0.716479522409153360, -0.716444641107393700, -0.716409758014522560, -0.716374873130626980, -0.716339986455793780, -0.716305097990111110, -0.716270207733665560, +-0.716235315686544530, -0.716200421848834920, -0.716165526220624570, -0.716130628802000400, -0.716095729593049680, -0.716060828593859220, -0.716025925804517070, -0.715991021225110160, +-0.715956114855725630, -0.715921206696450430, -0.715886296747372700, -0.715851385008579140, -0.715816471480156810, -0.715781556162193630, -0.715746639054776530, -0.715711720157992780, +-0.715676799471929530, -0.715641876996674590, -0.715606952732314780, -0.715572026678937820, -0.715537098836630300, -0.715502169205480490, -0.715467237785575190, -0.715432304577001800, +-0.715397369579847340, -0.715362432794199750, -0.715327494220146080, -0.715292553857773680, -0.715257611707169620, -0.715222667768421800, -0.715187722041617400, -0.715152774526843340, +-0.715117825224187540, -0.715082874133737280, -0.715047921255579810, -0.715012966589802180, -0.714978010136492540, -0.714943051895737810, -0.714908091867625490, -0.714873130052242620, +-0.714838166449677240, -0.714803201060016490, -0.714768233883347650, -0.714733264919757970, -0.714698294169335390, -0.714663321632167060, -0.714628347308340460, -0.714593371197942750, +-0.714558393301061860, -0.714523413617784930, -0.714488432148199570, -0.714453448892392820, -0.714418463850452710, -0.714383477022466410, -0.714348488408521170, -0.714313498008705030, +-0.714278505823105040, -0.714243511851808900, -0.714208516094903540, -0.714173518552477350, -0.714138519224617240, -0.714103518111410930, -0.714068515212945450, -0.714033510529309080, +-0.713998504060588850, -0.713963495806872350, -0.713928485768246860, -0.713893473944800410, -0.713858460336620370, -0.713823444943794130, -0.713788427766408830, -0.713753408804552960, +-0.713718388058313450, -0.713683365527777780, -0.713648341213033890, -0.713613315114169260, -0.713578287231271260, -0.713543257564427270, -0.713508226113725440, -0.713473192879253040, +-0.713438157861097650, -0.713403121059346560, -0.713368082474087890, -0.713333042105409150, -0.713297999953397710, -0.713262956018141050, -0.713227910299727320, -0.713192862798243680, +-0.713157813513777940, -0.713122762446417370, -0.713087709596250230, -0.713052654963363790, -0.713017598547845410, -0.712982540349783370, -0.712947480369264920, -0.712912418606377880, +-0.712877355061209420, -0.712842289733847780, -0.712807222624380570, -0.712772153732895260, -0.712737083059479250, -0.712702010604220780, -0.712666936367207350, -0.712631860348526550, +-0.712596782548265860, -0.712561702966513440, -0.712526621603356780, -0.712491538458883580, -0.712456453533181210, -0.712421366826338050, -0.712386278338441370, -0.712351188069579200, +-0.712316096019838580, -0.712281002189308010, -0.712245906578075070, -0.712210809186226920, -0.712175710013852160, -0.712140609061038040, -0.712105506327872510, -0.712070401814442810, +-0.712035295520837440, -0.712000187447143770, -0.711965077593449850, -0.711929965959842700, -0.711894852546411050, -0.711859737353242260, -0.711824620380424040, -0.711789501628044110, +-0.711754381096190600, -0.711719258784951240, -0.711684134694413610, -0.711649008824665420, -0.711613881175795050, -0.711578751747889870, -0.711543620541037590, -0.711508487555326590, +-0.711473352790844230, -0.711438216247678670, -0.711403077925917170, -0.711367937825648220, -0.711332795946959530, -0.711297652289938800, -0.711262506854673630, -0.711227359641252500, +-0.711192210649763010, -0.711157059880292990, -0.711121907332930010, -0.711086753007762580, -0.711051596904878180, -0.711016439024364840, -0.710981279366310170, -0.710946117930802530, +-0.710910954717929530, -0.710875789727778980, -0.710840622960439150, -0.710805454415997850, -0.710770284094542900, -0.710735111996161910, -0.710699938120943450, -0.710664762468975140, +-0.710629585040344900, -0.710594405835140440, -0.710559224853450240, -0.710524042095362020, -0.710488857560963690, -0.710453671250342870, -0.710418483163588130, -0.710383293300787310, +-0.710348101662028110, -0.710312908247398460, -0.710277713056986840, -0.710242516090880960, -0.710207317349168310, -0.710172116831937930, -0.710136914539277080, -0.710101710471274020, +-0.710066504628016350, -0.710031297009592670, -0.709996087616090790, -0.709960876447598750, -0.709925663504204160, -0.709890448785995720, -0.709855232293061240, -0.709820014025488550, +-0.709784793983365580, -0.709749572166780920, -0.709714348575822380, -0.709679123210577910, -0.709643896071135320, -0.709608667157583310, -0.709573436470009700, -0.709538204008502430, +-0.709502969773149310, -0.709467733764039150, -0.709432495981259570, -0.709397256424898480, -0.709362015095044600, -0.709326771991785730, -0.709291527115209820, -0.709256280465404790, +-0.709221032042459450, -0.709185781846461420, -0.709150529877499050, -0.709115276135659940, -0.709080020621033040, -0.709044763333706030, -0.709009504273767190, -0.708974243441304110, +-0.708938980836405830, -0.708903716459160170, -0.708868450309655170, -0.708833182387978660, -0.708797912694219660, -0.708762641228465770, -0.708727367990804940, -0.708692092981326070, +-0.708656816200117000, -0.708621537647265760, -0.708586257322860400, -0.708550975226989730, -0.708515691359741680, -0.708480405721204410, -0.708445118311465730, -0.708409829130614680, +-0.708374538178738970, -0.708339245455926860, -0.708303950962266390, -0.708268654697846390, -0.708233356662754670, -0.708198056857079590, -0.708162755280909110, -0.708127451934332020, +-0.708092146817436260, -0.708056839930309880, -0.708021531273041680, -0.707986220845719720, -0.707950908648432130, -0.707915594681266970, -0.707880278944313050, -0.707844961437658630, +-0.707809642161391750, -0.707774321115600350, -0.707738998300373460, -0.707703673715799120, -0.707668347361965600, -0.707633019238960940, -0.707597689346874060, -0.707562357685792900, +-0.707527024255805830, -0.707491689057000880, -0.707456352089467110, -0.707421013353292330, -0.707385672848565130, -0.707350330575373440, -0.707314986533806200, -0.707279640723951440, +-0.707244293145897320, -0.707208943799732760, -0.707173592685545800, -0.707138239803424940, -0.707102885153458200, -0.707067528735734420, -0.707032170550341950, -0.706996810597368960, +-0.706961448876903710, -0.706926085389035120, -0.706890720133851240, -0.706855353111440650, -0.706819984321891410, -0.706784613765292450, -0.706749241441731900, -0.706713867351298370, +-0.706678491494079800, -0.706643113870165320, -0.706607734479642980, -0.706572353322601040, -0.706536970399128660, -0.706501585709313650, -0.706466199253244830, -0.706430811031010130, +-0.706395421042698700, -0.706360029288398810, -0.706324635768198710, -0.706289240482186780, -0.706253843430452060, -0.706218444613082810, -0.706183044030167300, -0.706147641681794000, +-0.706112237568051750, -0.706076831689029020, -0.706041424044814180, -0.706006014635495500, -0.705970603461162140, -0.705935190521902230, -0.705899775817803940, -0.705864359348956640, +-0.705828941115448360, -0.705793521117367820, -0.705758099354803050, -0.705722675827843430, -0.705687250536577100, -0.705651823481092680, -0.705616394661478300, -0.705580964077823340, +-0.705545531730215950, -0.705510097618744610, -0.705474661743497820, -0.705439224104564720, -0.705403784702033580, -0.705368343535992870, -0.705332900606530980, -0.705297455913737270, +-0.705262009457699790, -0.705226561238507350, -0.705191111256248230, -0.705155659511011670, -0.705120206002885830, -0.705084750731959310, -0.705049293698321140, -0.705013834902059710, +-0.704978374343263820, -0.704942912022021530, -0.704907447938422300, -0.704871982092554530, -0.704836514484506790, -0.704801045114367360, -0.704765573982225720, -0.704730101088170140, +-0.704694626432289310, -0.704659150014671610, -0.704623671835406310, -0.704588191894581770, -0.704552710192286820, -0.704517226728609840, -0.704481741503640070, -0.704446254517465900, +-0.704410765770175810, -0.704375275261859170, -0.704339782992604250, -0.704304288962499860, -0.704268793171634490, -0.704233295620097510, -0.704197796307977190, -0.704162295235362450, +-0.704126792402341550, -0.704091287809004100, -0.704055781455438350, -0.704020273341733230, -0.703984763467977110, -0.703949251834259270, -0.703913738440668400, -0.703878223287293210, +-0.703842706374222080, -0.703807187701544600, -0.703771667269349030, -0.703736145077724080, -0.703700621126759020, -0.703665095416542430, -0.703629567947163030, -0.703594038718709400, +-0.703558507731271150, -0.703522974984936430, -0.703487440479794390, -0.703451904215933400, -0.703416366193443050, -0.703380826412411730, -0.703345284872928240, -0.703309741575081300, +-0.703274196518960390, -0.703238649704653880, -0.703203101132250820, -0.703167550801839680, -0.703131998713509950, -0.703096444867350230, -0.703060889263449120, -0.703025331901896090, +-0.702989772782779630, -0.702954211906188900, -0.702918649272212150, -0.702883084880939310, -0.702847518732458540, -0.702811950826859100, -0.702776381164229470, -0.702740809744659130, +-0.702705236568236800, -0.702669661635051400, -0.702634084945191530, -0.702598506498746780, -0.702562926295805750, -0.702527344336457360, -0.702491760620790330, -0.702456175148894250, +-0.702420587920857710, -0.702384998936769640, -0.702349408196718760, -0.702313815700794760, -0.702278221449086140, -0.702242625441681700, -0.702207027678671050, -0.702171428160142770, +-0.702135826886185920, -0.702100223856889190, -0.702064619072342190, -0.702029012532633720, -0.701993404237852610, -0.701957794188087790, -0.701922182383428740, -0.701886568823964270, +-0.701850953509783330, -0.701815336440974710, -0.701779717617628140, -0.701744097039832200, -0.701708474707675940, -0.701672850621248290, -0.701637224780638840, -0.701601597185936290, +-0.701565967837229460, -0.701530336734607960, -0.701494703878160710, -0.701459069267976630, -0.701423432904144550, -0.701387794786754170, -0.701352154915894420, -0.701316513291654230, +-0.701280869914122420, -0.701245224783388800, -0.701209577899542080, -0.701173929262671410, -0.701138278872865620, -0.701102626730214510, -0.701066972834806680, -0.701031317186731510, +-0.700995659786077810, -0.700960000632935180, -0.700924339727392540, -0.700888677069538720, -0.700853012659463650, -0.700817346497255910, -0.700781678583004890, -0.700746008916799280, +-0.700710337498729020, -0.700674664328882920, -0.700638989407350140, -0.700603312734219610, -0.700567634309581020, -0.700531954133523430, -0.700496272206135970, -0.700460588527507480, +-0.700424903097727760, -0.700389215916885850, -0.700353526985070920, -0.700317836302371880, -0.700282143868878440, -0.700246449684679750, -0.700210753749864970, -0.700175056064522900, +-0.700139356628743490, -0.700103655442615770, -0.700067952506228550, -0.700032247819671770, -0.699996541383034470, -0.699960833196405670, -0.699925123259874550, -0.699889411573530910, +-0.699853698137463680, -0.699817982951762340, -0.699782266016515610, -0.699746547331813630, -0.699710826897745220, -0.699675104714399750, -0.699639380781866160, -0.699603655100234480, +-0.699567927669593750, -0.699532198490033120, -0.699496467561641630, -0.699460734884509330, -0.699425000458725240, -0.699389264284378200, -0.699353526361558450, -0.699317786690354830, +-0.699282045270856800, -0.699246302103153190, -0.699210557187334270, -0.699174810523488950, -0.699139062111706620, -0.699103311952076200, -0.699067560044687950, -0.699031806389630810, +-0.698996050986994020, -0.698960293836866860, -0.698924534939339260, -0.698888774294500360, -0.698853011902439540, -0.698817247763245830, -0.698781481877009390, -0.698745714243819150, +-0.698709944863764370, -0.698674173736934970, -0.698638400863420220, -0.698602626243309490, -0.698566849876691710, -0.698531071763657250, -0.698495291904295160, -0.698459510298694800, +-0.698423726946945320, -0.698387941849136770, -0.698352155005358520, -0.698316366415699830, -0.698280576080249850, -0.698244783999098730, -0.698208990172335730, -0.698173194600050230, +-0.698137397282331370, -0.698101598219269430, -0.698065797410953430, -0.698029994857472640, -0.697994190558917200, -0.697958384515376280, -0.697922576726939360, -0.697886767193695690, +-0.697850955915735430, -0.697815142893147830, -0.697779328126022280, -0.697743511614448140, -0.697707693358515570, -0.697671873358313710, -0.697636051613932270, -0.697600228125460300, +-0.697564402892988040, -0.697528575916604780, -0.697492747196400200, -0.697456916732463350, -0.697421084524884490, -0.697385250573753000, -0.697349414879158250, -0.697313577441189820, +-0.697277738259937660, -0.697241897335491130, -0.697206054667939610, -0.697170210257373250, -0.697134364103881410, -0.697098516207553590, -0.697062666568479150, -0.697026815186748470, +-0.696990962062450590, -0.696955107195675440, -0.696919250586512160, -0.696883392235051020, -0.696847532141381510, -0.696811670305593100, -0.696775806727775170, -0.696739941408018090, +-0.696704074346411130, -0.696668205543043980, -0.696632334998006030, -0.696596462711387530, -0.696560588683277970, -0.696524712913766500, -0.696488835402943600, -0.696452956150898640, +-0.696417075157721220, -0.696381192423500940, -0.696345307948327830, -0.696309421732291600, -0.696273533775481730, -0.696237644077987720, -0.696201752639899920, -0.696165859461307710, +-0.696129964542300920, -0.696094067882968790, -0.696058169483401820, -0.696022269343689490, -0.695986367463921510, -0.695950463844187240, -0.695914558484577170, -0.695878651385180680, +-0.695842742546087250, -0.695806831967387350, -0.695770919649170260, -0.695735005591525900, -0.695699089794543760, -0.695663172258314200, -0.695627252982926600, -0.695591331968471000, +-0.695555409215036670, -0.695519484722714190, -0.695483558491593050, -0.695447630521762950, -0.695411700813313380, -0.695375769366334940, -0.695339836180917100, -0.695303901257149690, +-0.695267964595122080, -0.695232026194924970, -0.695196086056647840, -0.695160144180380520, -0.695124200566212380, -0.695088255214234120, -0.695052308124535220, -0.695016359297205290, +-0.694980408732334690, -0.694944456430013120, -0.694908502390330420, -0.694872546613376050, -0.694836589099240730, -0.694800629848013940, -0.694764668859785610, -0.694728706134645210, +-0.694692741672683360, -0.694656775473989740, -0.694620807538654070, -0.694584837866766060, -0.694548866458416400, -0.694512893313694480, -0.694476918432690330, -0.694440941815493650, +-0.694404963462194820, -0.694368983372883660, -0.694333001547649650, -0.694297017986583500, -0.694261032689774900, -0.694225045657313580, -0.694189056889289340, -0.694153066385792880, +-0.694117074146913590, -0.694081080172741730, -0.694045084463366880, -0.694009087018879530, -0.693973087839369620, -0.693937086924926840, -0.693901084275641120, -0.693865079891602950, +-0.693829073772902040, -0.693793065919628530, -0.693757056331872010, -0.693721045009723200, -0.693685031953271690, -0.693649017162607300, -0.693613000637820720, -0.693576982379001670, +-0.693540962386240190, -0.693504940659625870, -0.693468917199249630, -0.693432892005201080, -0.693396865077570260, -0.693360836416446970, -0.693324806021921810, -0.693288773894084830, +-0.693252740033025730, -0.693216704438834540, -0.693180667111601980, -0.693144628051417630, -0.693108587258371770, -0.693072544732554200, -0.693036500474055520, -0.693000454482965540, +-0.692964406759374100, -0.692928357303371990, -0.692892306115049040, -0.692856253194495290, -0.692820198541800550, -0.692784142157055640, -0.692748084040350490, -0.692712024191775020, +-0.692675962611419170, -0.692639899299373750, -0.692603834255728580, -0.692567767480573800, -0.692531698973999350, -0.692495628736095940, -0.692459556766953480, -0.692423483066662130, +-0.692387407635311700, -0.692351330472993130, -0.692315251579796120, -0.692279170955811150, -0.692243088601127820, -0.692207004515837170, -0.692170918700028890, -0.692134831153793040, +-0.692098741877220420, -0.692062650870401090, -0.692026558133424950, -0.691990463666382170, -0.691954367469363560, -0.691918269542459050, -0.691882169885758790, -0.691846068499352820, +-0.691809965383332060, -0.691773860537786330, -0.691737753962805900, -0.691701645658480910, -0.691665535624901960, -0.691629423862159310, -0.691593310370343000, -0.691557195149543170, +-0.691521078199850650, -0.691484959521355360, -0.691448839114147450, -0.691412716978317740, -0.691376593113956160, -0.691340467521153190, -0.691304340199998760, -0.691268211150583680, +-0.691232080372998100, -0.691195947867332410, -0.691159813633676510, -0.691123677672121350, -0.691087539982756960, -0.691051400565673820, -0.691015259420961760, -0.690979116548711910, +-0.690942971949014330, -0.690906825621959260, -0.690870677567636760, -0.690834527786137960, -0.690798376277552810, -0.690762223041971430, -0.690726068079484780, -0.690689911390182990, +-0.690653752974156430, -0.690617592831495150, -0.690581430962290190, -0.690545267366631690, -0.690509102044609910, -0.690472934996315240, -0.690436766221838360, -0.690400595721269660, +-0.690364423494699510, -0.690328249542217940, -0.690292073863916110, -0.690255896459884060, -0.690219717330212260, -0.690183536474990870, -0.690147353894310920, -0.690111169588262570, +-0.690074983556936310, -0.690038795800422380, -0.690002606318811610, -0.689966415112194480, -0.689930222180660910, -0.689894027524302070, -0.689857831143208200, -0.689821633037469790, +-0.689785433207176890, -0.689749231652420860, -0.689713028373291630, -0.689676823369879900, -0.689640616642275830, -0.689604408190570450, -0.689568198014854030, -0.689531986115217150, +-0.689495772491750090, -0.689459557144543770, -0.689423340073688660, -0.689387121279275150, -0.689350900761393490, -0.689314678520134950, -0.689278454555589670, -0.689242228867847920, +-0.689206001457000950, -0.689169772323139030, -0.689133541466352640, -0.689097308886732040, -0.689061074584368600, -0.689024838559352370, -0.688988600811774040, -0.688952361341723880, +-0.688916120149293150, -0.688879877234572220, -0.688843632597651470, -0.688807386238621370, -0.688771138157573180, -0.688734888354597060, -0.688698636829783720, -0.688662383583223510, +-0.688626128615007600, -0.688589871925226470, -0.688553613513970260, -0.688517353381330350, -0.688481091527397120, -0.688444827952261030, -0.688408562656012690, -0.688372295638743140, +-0.688336026900542960, -0.688299756441502650, -0.688263484261712690, -0.688227210361264220, -0.688190934740247840, -0.688154657398754140, -0.688118378336873390, -0.688082097554697070, +-0.688045815052315430, -0.688009530829819300, -0.687973244887299050, -0.687936957224845940, -0.687900667842550550, -0.687864376740503050, -0.687828083918795020, -0.687791789377516730, +-0.687755493116758990, -0.687719195136612170, -0.687682895437167760, -0.687646594018516020, -0.687610290880747880, -0.687573986023953590, -0.687537679448224750, -0.687501371153651620, +-0.687465061140325130, -0.687428749408335650, -0.687392435957774550, -0.687356120788732540, -0.687319803901300100, -0.687283485295567820, -0.687247164971627190, -0.687210842929568580, +-0.687174519169482910, -0.687138193691460670, -0.687101866495593240, -0.687065537581971090, -0.687029206950684810, -0.686992874601825900, -0.686956540535484720, -0.686920204751752190, +-0.686883867250718820, -0.686847528032476170, -0.686811187097114640, -0.686774844444725140, -0.686738500075398270, -0.686702153989225410, -0.686665806186297130, -0.686629456666704390, +-0.686593105430537750, -0.686556752477888610, -0.686520397808847550, -0.686484041423505500, -0.686447683321953050, -0.686411323504281800, -0.686374961970582120, -0.686338598720944710, +-0.686302233755461290, -0.686265867074222100, -0.686229498677318310, -0.686193128564840490, -0.686156756736880150, -0.686120383193527860, -0.686084007934874670, -0.686047630961011070, +-0.686011252272028860, -0.685974871868018420, -0.685938489749070790, -0.685902105915276560, -0.685865720366727550, -0.685829333103514130, -0.685792944125727330, -0.685756553433457980, +-0.685720161026797450, -0.685683766905836660, -0.685647371070665980, -0.685610973521377230, -0.685574574258061120, -0.685538173280808570, -0.685501770589710180, -0.685465366184857760, +-0.685428960066341910, -0.685392552234253550, -0.685356142688683610, -0.685319731429723580, -0.685283318457464260, -0.685246903771996710, -0.685210487373411500, -0.685174069261800360, +-0.685137649437254080, -0.685101227899863720, -0.685064804649719860, -0.685028379686914430, -0.684991953011538040, -0.684955524623681700, -0.684919094523436240, -0.684882662710893380, +-0.684846229186143800, -0.684809793949278430, -0.684773357000388880, -0.684736918339565960, -0.684700477966900700, -0.684664035882483810, -0.684627592086407330, -0.684591146578761740, +-0.684554699359638420, -0.684518250429127950, -0.684481799787322150, -0.684445347434311960, -0.684408893370188290, -0.684372437595042070, -0.684335980108965130, -0.684299520912048260, +-0.684263060004382530, -0.684226597386058840, -0.684190133057169030, -0.684153667017803780, -0.684117199268054140, -0.684080729808011820, -0.684044258637767630, -0.684007785757412830, +-0.683971311167038240, -0.683934834866735670, -0.683898356856595950, -0.683861877136710430, -0.683825395707169940, -0.683788912568066180, -0.683752427719490190, -0.683715941161533110, +-0.683679452894285890, -0.683642962917840320, -0.683606471232287350, -0.683569977837718220, -0.683533482734223760, -0.683496985921896010, -0.683460487400825770, -0.683423987171103970, +-0.683387485232822560, -0.683350981586072330, -0.683314476230944770, -0.683277969167530590, -0.683241460395921930, -0.683204949916209500, -0.683168437728484790, -0.683131923832838610, +-0.683095408229362990, -0.683058890918148750, -0.683022371899287380, -0.682985851172869700, -0.682949328738987840, -0.682912804597732510, -0.682876278749195210, -0.682839751193466960, +-0.682803221930639580, -0.682766690960804220, -0.682730158284051700, -0.682693623900474170, -0.682657087810162540, -0.682620550013208320, -0.682584010509702300, -0.682547469299736530, +-0.682510926383402160, -0.682474381760790450, -0.682437835431992430, -0.682401287397100260, -0.682364737656204760, -0.682328186209397500, -0.682291633056769320, -0.682255078198412470, +-0.682218521634417980, -0.682181963364877130, -0.682145403389881060, -0.682108841709521800, -0.682072278323890390, -0.682035713233078320, -0.681999146437176630, -0.681962577936277460, +-0.681926007730471740, -0.681889435819850730, -0.681852862204506470, -0.681816286884530110, -0.681779709860012910, -0.681743131131046230, -0.681706550697721900, -0.681669968560131290, +-0.681633384718365760, -0.681596799172516480, -0.681560211922675460, -0.681523622968933870, -0.681487032311383300, -0.681450439950114780, -0.681413845885220580, -0.681377250116791620, +-0.681340652644919720, -0.681304053469695690, -0.681267452591211910, -0.681230850009559520, -0.681194245724829670, -0.681157639737114520, -0.681121032046505310, -0.681084422653093440, +-0.681047811556970250, -0.681011198758227910, -0.680974584256957450, -0.680937968053250580, -0.680901350147198550, -0.680864730538893290, -0.680828109228426400, -0.680791486215889140, +-0.680754861501372770, -0.680718235084969650, -0.680681606966770940, -0.680644977146868340, -0.680608345625352770, -0.680571712402316730, -0.680535077477851470, -0.680498440852048030, +-0.680461802524998990, -0.680425162496795410, -0.680388520767528870, -0.680351877337290740, -0.680315232206173180, -0.680278585374267550, -0.680241936841665560, -0.680205286608458250, +-0.680168634674738200, -0.680131981040596470, -0.680095325706124850, -0.680058668671414510, -0.680022009936557930, -0.679985349501646240, -0.679948687366771170, -0.679912023532024070, +-0.679875357997497320, -0.679838690763282070, -0.679802021829470140, -0.679765351196152780, -0.679728678863422480, -0.679692004831370380, -0.679655329100087970, -0.679618651669667620, +-0.679581972540200590, -0.679545291711778580, -0.679508609184493070, -0.679471924958436340, -0.679435239033699840, -0.679398551410375200, -0.679361862088553870, -0.679325171068328240, +-0.679288478349789670, -0.679251783933029870, -0.679215087818140330, -0.679178390005213410, -0.679141690494340480, -0.679104989285613360, -0.679068286379123310, -0.679031581774963030, +-0.678994875473223680, -0.678958167473996950, -0.678921457777375000, -0.678884746383449420, -0.678848033292312030, -0.678811318504054180, -0.678774602018768380, -0.678737883836546100, +-0.678701163957479150, -0.678664442381658910, -0.678627719109177850, -0.678590994140127580, -0.678554267474599680, -0.678517539112685970, -0.678480809054478610, -0.678444077300069280, +-0.678407343849549700, -0.678370608703011470, -0.678333871860547170, -0.678297133322248060, -0.678260393088205740, -0.678223651158512910, -0.678186907533260830, -0.678150162212541540, +-0.678113415196446410, -0.678076666485068260, -0.678039916078498340, -0.678003163976828580, -0.677966410180150690, -0.677929654688557040, -0.677892897502139210, -0.677856138620989260, +-0.677819378045198540, -0.677782615774859760, -0.677745851810064410, -0.677709086150904420, -0.677672318797471360, -0.677635549749857850, -0.677598779008155570, -0.677562006572455910, +-0.677525232442851570, -0.677488456619434130, -0.677451679102295650, -0.677414899891527480, -0.677378118987222550, -0.677341336389472250, -0.677304552098368600, -0.677267766114003300, +-0.677230978436468840, -0.677194189065856930, -0.677157398002259600, -0.677120605245768450, -0.677083810796476060, -0.677047014654474260, -0.677010216819854850, -0.676973417292709550, +-0.676936616073131050, -0.676899813161210950, -0.676863008557041400, -0.676826202260713990, -0.676789394272321320, -0.676752584591955310, -0.676715773219707440, -0.676678960155670420, +-0.676642145399936060, -0.676605328952596290, -0.676568510813742920, -0.676531690983468550, -0.676494869461864990, -0.676458046249024280, -0.676421221345038130, -0.676384394749999230, +-0.676347566463999290, -0.676310736487130470, -0.676273904819484460, -0.676237071461154080, -0.676200236412231040, -0.676163399672807360, -0.676126561242974770, -0.676089721122826170, +-0.676052879312453280, -0.676016035811947910, -0.675979190621402770, -0.675942343740909560, -0.675905495170560530, -0.675868644910447510, -0.675831792960663200, -0.675794939321299300, +-0.675758083992448080, -0.675721226974201450, -0.675684368266651900, -0.675647507869891580, -0.675610645784012420, -0.675573782009106340, -0.675536916545266040, -0.675500049392583570, +-0.675463180551150840, -0.675426310021060020, -0.675389437802403680, -0.675352563895273650, -0.675315688299761960, -0.675278811015961430, -0.675241932043963770, -0.675205051383861330, +-0.675168169035745950, -0.675131284999710420, -0.675094399275846690, -0.675057511864247010, -0.675020622765003190, -0.674983731978208160, -0.674946839503953730, -0.674909945342332280, +-0.674873049493435630, -0.674836151957356690, -0.674799252734187390, -0.674762351824019890, -0.674725449226946220, -0.674688544943059300, -0.674651638972450950, -0.674614731315213540, +-0.674577821971438900, -0.674540910941220150, -0.674503998224649020, -0.674467083821817640, -0.674430167732818830, -0.674393249957744630, -0.674356330496687310, -0.674319409349738770, +-0.674282486516992070, -0.674245561998539240, -0.674208635794472430, -0.674171707904883680, -0.674134778329866010, -0.674097847069511370, -0.674060914123912220, -0.674023979493160400, +-0.673987043177348920, -0.673950105176569840, -0.673913165490915510, -0.673876224120477870, -0.673839281065350070, -0.673802336325624030, -0.673765389901391900, -0.673728441792746600, +-0.673691491999780180, -0.673654540522585000, -0.673617587361253210, -0.673580632515877740, -0.673543675986550630, -0.673506717773364460, -0.673469757876411060, -0.673432796295783560, +-0.673395833031574240, -0.673358868083875240, -0.673321901452778700, -0.673284933138377780, -0.673247963140764520, -0.673210991460031380, -0.673174018096270420, -0.673137043049574670, +-0.673100066320036380, -0.673063087907747600, -0.673026107812801480, -0.672989126035289930, -0.672952142575305670, -0.672915157432940720, -0.672878170608288250, -0.672841182101440280, +-0.672804191912489410, -0.672767200041527680, -0.672730206488648340, -0.672693211253943430, -0.672656214337505440, -0.672619215739426730, -0.672582215459800240, -0.672545213498718210, +-0.672508209856273130, -0.672471204532557150, -0.672434197527663650, -0.672397188841684530, -0.672360178474712080, -0.672323166426839650, -0.672286152698159170, -0.672249137288763340, +-0.672212120198744320, -0.672175101428195370, -0.672138080977208730, -0.672101058845876790, -0.672064035034291910, -0.672027009542547350, -0.671989982370735150, -0.671952953518948020, +-0.671915922987278200, -0.671878890775818860, -0.671841856884662360, -0.671804821313901180, -0.671767784063627580, -0.671730745133934830, -0.671693704524915390, -0.671656662236661540, +-0.671619618269265750, -0.671582572622821170, -0.671545525297420290, -0.671508476293155130, -0.671471425610119190, -0.671434373248404710, -0.671397319208104190, -0.671360263489310220, +-0.671323206092115820, -0.671286147016613380, -0.671249086262895590, -0.671212023831054720, -0.671174959721184130, -0.671137893933376200, -0.671100826467723510, -0.671063757324318440, +-0.671026686503254250, -0.670989614004623420, -0.670952539828518550, -0.670915463975031880, -0.670878386444257010, -0.670841307236286100, -0.670804226351211730, -0.670767143789126940, +-0.670730059550124440, -0.670692973634296700, -0.670655886041736200, -0.670618796772536330, -0.670581705826789440, -0.670544613204588360, -0.670507518906025330, -0.670470422931193850, +-0.670433325280186400, -0.670396225953095560, -0.670359124950013820, -0.670322022271034660, -0.670284917916250440, -0.670247811885753890, -0.670210704179637460, -0.670173594797994650, +-0.670136483740917830, -0.670099371008499480, -0.670062256600832960, -0.670025140518010880, -0.669988022760125920, -0.669950903327270590, -0.669913782219538230, -0.669876659437021570, +-0.669839534979813190, -0.669802408848005680, -0.669765281041692420, -0.669728151560965990, -0.669691020405919210, -0.669653887576644460, -0.669616753073235430, -0.669579616895784490, +-0.669542479044384460, -0.669505339519127940, -0.669468198320108400, -0.669431055447418320, -0.669393910901150630, -0.669356764681397820, -0.669319616788253470, -0.669282467221810060, +-0.669245315982160190, -0.669208163069397340, -0.669171008483613990, -0.669133852224903180, -0.669096694293357500, -0.669059534689070310, -0.669022373412134330, -0.668985210462642370, +-0.668948045840687120, -0.668910879546361970, -0.668873711579759720, -0.668836541940973190, -0.668799370630094980, -0.668762197647218670, -0.668725022992436750, -0.668687846665842360, +-0.668650668667528090, -0.668613488997587440, -0.668576307656112980, -0.668539124643197540, -0.668501939958934590, -0.668464753603416730, -0.668427565576736990, -0.668390375878988090, +-0.668353184510263490, -0.668315991470656010, -0.668278796760258480, -0.668241600379163690, -0.668204402327465250, -0.668167202605255750, -0.668130001212628220, -0.668092798149675370, +-0.668055593416490900, -0.668018387013167400, -0.667981178939797910, -0.667943969196475250, -0.667906757783292890, -0.667869544700343650, -0.667832329947720240, -0.667795113525516350, +-0.667757895433824690, -0.667720675672738300, -0.667683454242349870, -0.667646231142753120, -0.667609006374040750, -0.667571779936305900, -0.667534551829641280, -0.667497322054140700, +-0.667460090609896640, -0.667422857497002480, -0.667385622715550800, -0.667348386265635420, -0.667311148147349040, -0.667273908360784820, -0.667236666906035450, -0.667199423783194740, +-0.667162178992355530, -0.667124932533610600, -0.667087684407053570, -0.667050434612777350, -0.667013183150874990, -0.666975930021439400, -0.666938675224564290, -0.666901418760342590, +-0.666864160628867220, -0.666826900830231220, -0.666789639364528290, -0.666752376231851130, -0.666715111432293120, -0.666677844965947060, -0.666640576832906670, -0.666603307033264760, +-0.666566035567114690, -0.666528762434549170, -0.666491487635662020, -0.666454211170546260, -0.666416933039294830, -0.666379653242000880, -0.666342371778757990, -0.666305088649659320, +-0.666267803854797450, -0.666230517394266530, -0.666193229268159270, -0.666155939476568930, -0.666118648019588420, -0.666081354897311570, -0.666044060109831420, -0.666006763657240990, +-0.665969465539633430, -0.665932165757102460, -0.665894864309741210, -0.665857561197642720, -0.665820256420899930, -0.665782949979606960, -0.665745641873856540, -0.665708332103742030, +-0.665671020669356350, -0.665633707570793430, -0.665596392808146310, -0.665559076381507800, -0.665521758290971930, -0.665484438536631750, -0.665447117118580400, -0.665409794036910920, +-0.665372469291717340, -0.665335142883092480, -0.665297814811129930, -0.665260485075922390, -0.665223153677564020, -0.665185820616147730, -0.665148485891766890, -0.665111149504514550, +-0.665073811454484630, -0.665036471741770160, -0.664999130366464630, -0.664961787328660850, -0.664924442628452850, -0.664887096265933900, -0.664849748241196800, -0.664812398554335720, +-0.664775047205443560, -0.664737694194613820, -0.664700339521939520, -0.664662983187514710, -0.664625625191432420, -0.664588265533786030, -0.664550904214668670, -0.664513541234174500, +-0.664476176592396330, -0.664438810289427750, -0.664401442325361800, -0.664364072700292630, -0.664326701414313270, -0.664289328467517090, -0.664251953859997360, -0.664214577591847990, +-0.664177199663162240, -0.664139820074033490, -0.664102438824554890, -0.664065055914820460, -0.664027671344923350, -0.663990285114956840, -0.663952897225014830, -0.663915507675190590, +-0.663878116465577710, -0.663840723596269110, -0.663803329067359060, -0.663765932878940700, -0.663728535031107400, -0.663691135523952540, -0.663653734357570140, -0.663616331532053460, +-0.663578927047495880, -0.663541520903990660, -0.663504113101632040, -0.663466703640513080, -0.663429292520727350, -0.663391879742368020, -0.663354465305529440, -0.663317049210304540, +-0.663279631456786810, -0.663242212045070280, -0.663204790975248320, -0.663167368247414290, -0.663129943861661460, -0.663092517818084200, -0.663055090116775550, -0.663017660757829310, +-0.662980229741338520, -0.662942797067397450, -0.662905362736099460, -0.662867926747538030, -0.662830489101806420, -0.662793049798998890, -0.662755608839208810, -0.662718166222529660, +-0.662680721949054810, -0.662643276018878510, -0.662605828432093920, -0.662568379188794520, -0.662530928289074450, -0.662493475733027080, -0.662456021520746010, -0.662418565652324600, +-0.662381108127857000, -0.662343648947436690, -0.662306188111157270, -0.662268725619112100, -0.662231261471395330, -0.662193795668100550, -0.662156328209321130, -0.662118859095150670, +-0.662081388325683310, -0.662043915901012530, -0.662006441821232030, -0.661968966086434960, -0.661931488696715920, -0.661894009652168050, -0.661856528952885270, -0.661819046598960740, +-0.661781562590489040, -0.661744076927563320, -0.661706589610277060, -0.661669100638724750, -0.661631610012999640, -0.661594117733195540, -0.661556623799405720, -0.661519128211724760, +-0.661481630970246040, -0.661444132075063140, -0.661406631526269550, -0.661369129323959860, -0.661331625468227210, -0.661294119959165540, -0.661256612796868200, -0.661219103981429690, +-0.661181593512943480, -0.661144081391503160, -0.661106567617202430, -0.661069052190135560, -0.661031535110396030, -0.660994016378077420, -0.660956495993274000, -0.660918973956079460, +-0.660881450266587400, -0.660843924924891410, -0.660806397931085860, -0.660768869285264350, -0.660731338987520790, -0.660693807037948440, -0.660656273436641910, -0.660618738183694650, +-0.660581201279200610, -0.660543662723253270, -0.660506122515947090, -0.660468580657375570, -0.660431037147632630, -0.660393491986811740, -0.660355945175007400, -0.660318396712313290, +-0.660280846598822800, -0.660243294834630510, -0.660205741419830130, -0.660168186354515240, -0.660130629638779550, -0.660093071272717660, -0.660055511256423140, -0.660017949589989830, +-0.659980386273511300, -0.659942821307082040, -0.659905254690795860, -0.659867686424746470, -0.659830116509027560, -0.659792544943733740, -0.659754971728958470, -0.659717396864795800, +-0.659679820351339320, -0.659642242188683610, -0.659604662376922280, -0.659567080916149020, -0.659529497806458310, -0.659491913047943860, -0.659454326640699700, -0.659416738584819310, +-0.659379148880397500, -0.659341557527527770, -0.659303964526304130, -0.659266369876820300, -0.659228773579170870, -0.659191175633449420, -0.659153576039750110, -0.659115974798166530, +-0.659078371908793260, -0.659040767371724120, -0.659003161187053040, -0.658965553354873830, -0.658927943875280970, -0.658890332748368280, -0.658852719974229670, -0.658815105552959080, +-0.658777489484650980, -0.658739871769399080, -0.658702252407297300, -0.658664631398440230, -0.658627008742921460, -0.658589384440835260, -0.658551758492275210, -0.658514130897336130, +-0.658476501656111710, -0.658438870768696120, -0.658401238235182930, -0.658363604055666960, -0.658325968230242030, -0.658288330759002170, -0.658250691642041090, -0.658213050879453700, +-0.658175408471333600, -0.658137764417775050, -0.658100118718871750, -0.658062471374718520, -0.658024822385409050, -0.657987171751037160, -0.657949519471697770, -0.657911865547484490, +-0.657874209978491550, -0.657836552764812790, -0.657798893906543000, -0.657761233403776010, -0.657723571256605850, -0.657685907465126450, -0.657648242029432620, -0.657610574949618280, +-0.657572906225777350, -0.657535235858003890, -0.657497563846392690, -0.657459890191037570, -0.657422214892032670, -0.657384537949471940, -0.657346859363450280, -0.657309179134061390, +-0.657271497261399220, -0.657233813745558670, -0.657196128586633570, -0.657158441784718050, -0.657120753339906270, -0.657083063252292820, -0.657045371521971730, -0.657007678149037270, +-0.656969983133583240, -0.656932286475704560, -0.656894588175495180, -0.656856888233049330, -0.656819186648460950, -0.656781483421824960, -0.656743778553235180, -0.656706072042785970, +-0.656668363890571370, -0.656630654096686080, -0.656592942661224140, -0.656555229584279920, -0.656517514865947230, -0.656479798506321100, -0.656442080505495460, -0.656404360863564350, +-0.656366639580622580, -0.656328916656764290, -0.656291192092083750, -0.656253465886674770, -0.656215738040632490, -0.656178008554050950, -0.656140277427024300, -0.656102544659646680, +-0.656064810252013020, -0.656027074204217240, -0.655989336516353940, -0.655951597188516810, -0.655913856220801120, -0.655876113613300780, -0.655838369366110060, -0.655800623479323220, +-0.655762875953035060, -0.655725126787339740, -0.655687375982331290, -0.655649623538104740, -0.655611869454754140, -0.655574113732373840, -0.655536356371057890, -0.655498597370901440, +-0.655460836731998510, -0.655423074454443370, -0.655385310538330270, -0.655347544983754250, -0.655309777790809460, -0.655272008959590040, -0.655234238490190360, -0.655196466382705460, +-0.655158692637229370, -0.655120917253856460, -0.655083140232680990, -0.655045361573798000, -0.655007581277301630, -0.654969799343285920, -0.654932015771846120, -0.654894230563076270, +-0.654856443717070860, -0.654818655233923910, -0.654780865113730680, -0.654743073356585330, -0.654705279962582320, -0.654667484931815700, -0.654629688264380730, -0.654591889960371540, +-0.654554090019882630, -0.654516288443008240, -0.654478485229843420, -0.654440680380482310, -0.654402873895019500, -0.654365065773549250, -0.654327256016166590, -0.654289444622965900, +-0.654251631594041210, -0.654213816929487770, -0.654176000629399730, -0.654138182693871810, -0.654100363122998020, -0.654062541916873630, -0.654024719075593010, -0.653986894599250410, +-0.653949068487940430, -0.653911240741757990, -0.653873411360797460, -0.653835580345153430, -0.653797747694920160, -0.653759913410192790, -0.653722077491065590, -0.653684239937633250, +-0.653646400749990030, -0.653608559928231080, -0.653570717472450770, -0.653532873382743680, -0.653495027659203980, -0.653457180301927120, -0.653419331311007270, -0.653381480686538780, +-0.653343628428616930, -0.653305774537335960, -0.653267919012790690, -0.653230061855075150, -0.653192203064284830, -0.653154342640513970, -0.653116480583857300, -0.653078616894409160, +-0.653040751572264710, -0.653002884617518430, -0.652965016030264910, -0.652927145810598520, -0.652889273958614620, -0.652851400474407480, -0.652813525358071910, -0.652775648609702160, +-0.652737770229393610, -0.652699890217240620, -0.652662008573337560, -0.652624125297779910, -0.652586240390661930, -0.652548353852078210, -0.652510465682123450, -0.652472575880892800, +-0.652434684448480630, -0.652396791384981860, -0.652358896690490740, -0.652321000365102650, -0.652283102408912070, -0.652245202822013810, -0.652207301604502130, -0.652169398756472620, +-0.652131494278019530, -0.652093588169237790, -0.652055680430221660, -0.652017771061066730, -0.651979860061867370, -0.651941947432717940, -0.651904033173714040, -0.651866117284950140, +-0.651828199766520840, -0.651790280618520730, -0.651752359841045180, -0.651714437434188890, -0.651676513398046330, -0.651638587732712220, -0.651600660438282020, -0.651562731514850220, +-0.651524800962511420, -0.651486868781360420, -0.651448934971492590, -0.651410999533002300, -0.651373062465984590, -0.651335123770533930, -0.651297183446745700, -0.651259241494714590, +-0.651221297914535420, -0.651183352706302570, -0.651145405870111720, -0.651107457406057350, -0.651069507314233960, -0.651031555594737130, -0.650993602247661450, -0.650955647273101850, +-0.650917690671152680, -0.650879732441909660, -0.650841772585467270, -0.650803811101920540, -0.650765847991363830, -0.650727883253892860, -0.650689916889602200, -0.650651948898586800, +-0.650613979280941110, -0.650576008036760970, -0.650538035166140620, -0.650500060669175320, -0.650462084545959440, -0.650424106796588690, -0.650386127421157760, -0.650348146419761020, +-0.650310163792494400, -0.650272179539452270, -0.650234193660729760, -0.650196206156421370, -0.650158217026622910, -0.650120226271428850, -0.650082233890934110, -0.650044239885233630, +-0.650006244254422770, -0.649968246998596340, -0.649930248117849270, -0.649892247612276260, -0.649854245481973010, -0.649816241727034120, -0.649778236347554610, -0.649740229343629180, +-0.649702220715353440, -0.649664210462822190, -0.649626198586130130, -0.649588185085372860, -0.649550169960645190, -0.649512153212042030, -0.649474134839658210, -0.649436114843589430, +-0.649398093223930270, -0.649360069980775890, -0.649322045114220980, -0.649284018624361360, -0.649245990511291620, -0.649207960775106900, -0.649169929415902010, -0.649131896433772560, +-0.649093861828813460, -0.649055825601119630, -0.649017787750786000, -0.648979748277908160, -0.648941707182580930, -0.648903664464899110, -0.648865620124958520, -0.648827574162853860, +-0.648789526578680160, -0.648751477372532470, -0.648713426544506260, -0.648675374094696670, -0.648637320023198520, -0.648599264330106730, -0.648561207015517120, -0.648523148079524490, +-0.648485087522224110, -0.648447025343710570, -0.648408961544079790, -0.648370896123426580, -0.648332829081846200, -0.648294760419433460, -0.648256690136284060, -0.648218618232492940, +-0.648180544708155340, -0.648142469563365960, -0.648104392798220740, -0.648066314412814590, -0.648028234407242330, -0.647990152781599770, -0.647952069535981940, -0.647913984670483780, +-0.647875898185200420, -0.647837810080227670, -0.647799720355660360, -0.647761629011593730, -0.647723536048122720, -0.647685441465343130, -0.647647345263349990, -0.647609247442238580, +-0.647571148002103580, -0.647533046943041150, -0.647494944265145980, -0.647456839968513550, -0.647418734053238690, -0.647380626519417300, -0.647342517367144320, -0.647304406596514670, +-0.647266294207624380, -0.647228180200568380, -0.647190064575441930, -0.647151947332340050, -0.647113828471358570, -0.647075707992592510, -0.647037585896137140, -0.646999462182087480, +-0.646961336850539580, -0.646923209901588250, -0.646885081335328960, -0.646846951151856640, -0.646808819351267220, -0.646770685933655830, -0.646732550899117630, -0.646694414247747760, +-0.646656275979642260, -0.646618136094895930, -0.646579994593604050, -0.646541851475862410, -0.646503706741766270, -0.646465560391410790, -0.646427412424890990, -0.646389262842303140, +-0.646351111643742040, -0.646312958829303290, -0.646274804399081690, -0.646236648353173400, -0.646198490691673570, -0.646160331414677440, -0.646122170522280160, -0.646084008014577770, +-0.646045843891665420, -0.646007678153638460, -0.645969510800591950, -0.645931341832622020, -0.645893171249823710, -0.645854999052292490, -0.645816825240123400, -0.645778649813412600, +-0.645740472772255210, -0.645702294116746290, -0.645664113846981860, -0.645625931963057290, -0.645587748465067830, -0.645549563353108650, -0.645511376627275980, -0.645473188287664760, +-0.645434998334370680, -0.645396806767488670, -0.645358613587114990, -0.645320418793344790, -0.645282222386273640, -0.645244024365996480, -0.645205824732609680, -0.645167623486208260, +-0.645129420626887720, -0.645091216154743410, -0.645053010069871370, -0.645014802372366750, -0.644976593062324800, -0.644938382139841780, -0.644900169605012730, -0.644861955457933230, +-0.644823739698698550, -0.644785522327404940, -0.644747303344147430, -0.644709082749021610, -0.644670860542122860, -0.644632636723547310, -0.644594411293390010, -0.644556184251746880, +-0.644517955598712830, -0.644479725334384250, -0.644441493458856370, -0.644403259972224700, -0.644365024874584580, -0.644326788166032280, -0.644288549846662950, -0.644250309916571950, +-0.644212068375855430, -0.644173825224608860, -0.644135580462927630, -0.644097334090907190, -0.644059086108643710, -0.644020836516232540, -0.643982585313769280, -0.643944332501349190, +-0.643906078079068630, -0.643867822047022860, -0.643829564405307480, -0.643791305154017950, -0.643753044293250420, -0.643714781823100380, -0.643676517743663300, -0.643638252055034550, +-0.643599984757310620, -0.643561715850586640, -0.643523445334958090, -0.643485173210521230, -0.643446899477371440, -0.643408624135604400, -0.643370347185315490, -0.643332068626601080, +-0.643293788459556430, -0.643255506684277330, -0.643217223300859060, -0.643178938309398210, -0.643140651709989910, -0.643102363502729980, -0.643064073687713900, -0.643025782265037930, +-0.642987489234797430, -0.642949194597088320, -0.642910898352005770, -0.642872600499646450, -0.642834301040105530, -0.642795999973478800, -0.642757697299861870, -0.642719393019350990, +-0.642681087132041640, -0.642642779638029180, -0.642604470537410100, -0.642566159830279870, -0.642527847516734310, -0.642489533596868670, -0.642451218070779650, -0.642412900938562510, +-0.642374582200313180, -0.642336261856127020, -0.642297939906100510, -0.642259616350329130, -0.642221291188908800, -0.642182964421934900, -0.642144636049503890, -0.642106306071711260, +-0.642067974488652940, -0.642029641300424280, -0.641991306507121880, -0.641952970108841230, -0.641914632105677780, -0.641876292497728150, -0.641837951285087690, -0.641799608467852440, +-0.641761264046117770, -0.641722918019980380, -0.641684570389535640, -0.641646221154879460, -0.641607870316107330, -0.641569517873315950, -0.641531163826600690, -0.641492808176057580, +-0.641454450921782100, -0.641416092063870850, -0.641377731602419400, -0.641339369537523570, -0.641301005869278960, -0.641262640597782260, -0.641224273723128960, -0.641185905245414520, +-0.641147535164735770, -0.641109163481188070, -0.641070790194867570, -0.641032415305869630, -0.640994038814291070, -0.640955660720227470, -0.640917281023774650, -0.640878899725028320, +-0.640840516824085050, -0.640802132321040440, -0.640763746215990640, -0.640725358509031010, -0.640686969200258360, -0.640648578289768290, -0.640610185777656830, -0.640571791664019450, +-0.640533395948952980, -0.640494998632553100, -0.640456599714915640, -0.640418199196136410, -0.640379797076311870, -0.640341393355537970, -0.640302988033910280, -0.640264581111525400, +-0.640226172588479030, -0.640187762464867300, -0.640149350740785720, -0.640110937416331180, -0.640072522491599290, -0.640034105966686080, -0.639995687841687260, -0.639957268116699620, +-0.639918846791818760, -0.639880423867140840, -0.639841999342761420, -0.639803573218777450, -0.639765145495284400, -0.639726716172378640, -0.639688285250155640, -0.639649852728712330, +-0.639611418608144410, -0.639572982888547580, -0.639534545570018540, -0.639496106652653330, -0.639457666136547640, -0.639419224021797630, -0.639380780308499760, -0.639342334996749970, +-0.639303888086644400, -0.639265439578278750, -0.639226989471749830, -0.639188537767153450, -0.639150084464585650, -0.639111629564142470, -0.639073173065920370, -0.639034714970015410, +-0.638996255276523710, -0.638957793985540980, -0.638919331097164140, -0.638880866611488910, -0.638842400528611190, -0.638803932848627910, -0.638765463571634660, -0.638726992697727810, +-0.638688520227003180, -0.638650046159557560, -0.638611570495486780, -0.638573093234887090, -0.638534614377854410, -0.638496133924485450, -0.638457651874876130, -0.638419168229122810, +-0.638380682987321090, -0.638342196149568110, -0.638303707715959570, -0.638265217686591720, -0.638226726061560610, -0.638188232840962930, -0.638149738024894720, -0.638111241613451790, +-0.638072743606731160, -0.638034244004828550, -0.637995742807840440, -0.637957240015862630, -0.637918735628992040, -0.637880229647324490, -0.637841722070956570, -0.637803212899983870, +-0.637764702134503540, -0.637726189774611370, -0.637687675820403870, -0.637649160271976710, -0.637610643129427060, -0.637572124392850830, -0.637533604062344160, -0.637495082138003210, +-0.637456558619924900, -0.637418033508205250, -0.637379506802940420, -0.637340978504226550, -0.637302448612160570, -0.637263917126838500, -0.637225384048356160, -0.637186849376810800, +-0.637148313112298360, -0.637109775254915080, -0.637071235804757000, -0.637032694761921260, -0.636994152126503680, -0.636955607898600730, -0.636917062078308450, -0.636878514665723870, +-0.636839965660943030, -0.636801415064062180, -0.636762862875177580, -0.636724309094386040, -0.636685753721783820, -0.636647196757467170, -0.636608638201532130, -0.636570078054075950, +-0.636531516315194560, -0.636492952984983980, -0.636454388063541380, -0.636415821550962770, -0.636377253447344640, -0.636338683752783130, -0.636300112467375170, -0.636261539591216900, +-0.636222965124404790, -0.636184389067034890, -0.636145811419204450, -0.636107232181009510, -0.636068651352546420, -0.636030068933911340, -0.635991484925201410, -0.635952899326512890, +-0.635914312137942030, -0.635875723359584980, -0.635837132991539100, -0.635798541033900320, -0.635759947486764900, -0.635721352350229860, -0.635682755624391470, -0.635644157309346200, +-0.635605557405190200, -0.635566955912020730, -0.635528352829933810, -0.635489748159025920, -0.635451141899393450, -0.635412534051133400, -0.635373924614342060, -0.635335313589115880, +-0.635296700975551020, -0.635258086773744850, -0.635219470983793390, -0.635180853605793240, -0.635142234639840650, -0.635103614086032890, -0.635064991944465970, -0.635026368215236610, +-0.634987742898441070, -0.634949115994176360, -0.634910487502538980, -0.634871857423625060, -0.634833225757531760, -0.634794592504355440, -0.634755957664192570, -0.634717321237139530, +-0.634678683223293460, -0.634640043622750840, -0.634601402435607920, -0.634562759661961300, -0.634524115301908000, -0.634485469355544510, -0.634446821822967300, -0.634408172704272740, +-0.634369521999557980, -0.634330869708919500, -0.634292215832453880, -0.634253560370257260, -0.634214903322427250, -0.634176244689059860, -0.634137584470251590, -0.634098922666099570, +-0.634060259276700400, -0.634021594302150440, -0.633982927742546280, -0.633944259597985060, -0.633905589868563270, -0.633866918554377380, -0.633828245655523980, -0.633789571172100220, +-0.633750895104202570, -0.633712217451927740, -0.633673538215371870, -0.633634857394632660, -0.633596174989806250, -0.633557491000989350, -0.633518805428278430, -0.633480118271770860, +-0.633441429531562910, -0.633402739207751140, -0.633364047300432830, -0.633325353809704340, -0.633286658735662590, -0.633247962078403730, -0.633209263838025340, -0.633170564014623900, +-0.633131862608295900, -0.633093159619138040, -0.633054455047247440, -0.633015748892720830, -0.632977041155654900, -0.632938331836145900, -0.632899620934291420, -0.632860908450187940, +-0.632822194383932280, -0.632783478735620690, -0.632744761505350750, -0.632706042693218840, -0.632667322299321540, -0.632628600323756340, -0.632589876766619600, -0.632551151628008120, +-0.632512424908018400, -0.632473696606748010, -0.632434966724293450, -0.632396235260751390, -0.632357502216218450, -0.632318767590791970, -0.632280031384568670, -0.632241293597645360, +-0.632202554230118400, -0.632163813282085370, -0.632125070753642880, -0.632086326644887620, -0.632047580955916290, -0.632008833686826250, -0.631970084837714220, -0.631931334408676880, +-0.631892582399810940, -0.631853828811213880, -0.631815073642982280, -0.631776316895212630, -0.631737558568002510, -0.631698798661448510, -0.631660037175647450, -0.631621274110696020, +-0.631582509466691700, -0.631543743243731190, -0.631504975441911200, -0.631466206061328530, -0.631427435102080660, -0.631388662564264180, -0.631349888447976130, -0.631311112753312980, +-0.631272335480372320, -0.631233556629250850, -0.631194776200045490, -0.631155994192852840, -0.631117210607770600, -0.631078425444895340, -0.631039638704323560, -0.631000850386153170, +-0.630962060490480540, -0.630923269017402810, -0.630884475967016580, -0.630845681339419540, -0.630806885134708170, -0.630768087352979730, -0.630729287994330590, -0.630690487058858660, +-0.630651684546660540, -0.630612880457833150, -0.630574074792473180, -0.630535267550678460, -0.630496458732545560, -0.630457648338171420, -0.630418836367652840, -0.630380022821087630, +-0.630341207698572270, -0.630302391000203580, -0.630263572726079250, -0.630224752876295870, -0.630185931450950810, -0.630147108450140440, -0.630108283873962670, -0.630069457722514210, +-0.630030629995892100, -0.629991800694193140, -0.629952969817514920, -0.629914137365954250, -0.629875303339608280, -0.629836467738573820, -0.629797630562948350, -0.629758791812828900, +-0.629719951488312500, -0.629681109589495860, -0.629642266116476780, -0.629603421069352080, -0.629564574448218670, -0.629525726253173600, -0.629486876484314560, -0.629448025141738370, +-0.629409172225541710, -0.629370317735822420, -0.629331461672677390, -0.629292604036203680, -0.629253744826498210, -0.629214884043658660, -0.629176021687781860, -0.629137157758965060, +-0.629098292257304960, -0.629059425182899590, -0.629020556535845540, -0.628981686316240070, -0.628942814524180220, -0.628903941159763560, -0.628865066223087020, -0.628826189714247860, +-0.628787311633342890, -0.628748431980469920, -0.628709550755725880, -0.628670667959207670, -0.628631783591013130, -0.628592897651239160, -0.628554010139982910, -0.628515121057341310, +-0.628476230403412270, -0.628437338178292610, -0.628398444382079590, -0.628359549014870120, -0.628320652076762130, -0.628281753567852540, -0.628242853488238500, -0.628203951838017030, +-0.628165048617286060, -0.628126143826142400, -0.628087237464683420, -0.628048329533006040, -0.628009420031208080, -0.627970508959386660, -0.627931596317638620, -0.627892682106061860, +-0.627853766324753430, -0.627814848973810570, -0.627775930053330320, -0.627737009563410500, -0.627698087504148240, -0.627659163875640690, -0.627620238677984890, -0.627581311911278860, +-0.627542383575619530, -0.627503453671104270, -0.627464522197830110, -0.627425589155894860, -0.627386654545395660, -0.627347718366429890, -0.627308780619094340, -0.627269841303487290, +-0.627230900419705640, -0.627191957967846440, -0.627153013948007600, -0.627114068360286270, -0.627075121204779710, -0.627036172481585050, -0.626997222190800340, -0.626958270332522490, +-0.626919316906848990, -0.626880361913876860, -0.626841405353704250, -0.626802447226428080, -0.626763487532145720, -0.626724526270954320, -0.626685563442952010, -0.626646599048235720, +-0.626607633086903040, -0.626568665559050890, -0.626529696464777300, -0.626490725804179640, -0.626451753577355050, -0.626412779784400800, -0.626373804425414900, -0.626334827500494520, +-0.626295849009736670, -0.626256868953239620, -0.626217887331100400, -0.626178904143416370, -0.626139919390284790, -0.626100933071803810, -0.626061945188070460, -0.626022955739182210, +-0.625983964725236210, -0.625944972146330710, -0.625905978002562760, -0.625866982294029820, -0.625827985020829150, -0.625788986183058780, -0.625749985780816090, -0.625710983814198320, +-0.625671980283302730, -0.625632975188227580, -0.625593968529070010, -0.625554960305927170, -0.625515950518897190, -0.625476939168077450, -0.625437926253565310, -0.625398911775458030, +-0.625359895733853750, -0.625320878128849730, -0.625281858960543560, -0.625242838229032480, -0.625203815934414540, -0.625164792076787100, -0.625125766656247640, -0.625086739672893410, +-0.625047711126822780, -0.625008681018132780, -0.624969649346921120, -0.624930616113284930, -0.624891581317322590, -0.624852544959131340, -0.624813507038808340, -0.624774467556451940, +-0.624735426512159300, -0.624696383906028220, -0.624657339738155740, -0.624618294008640220, -0.624579246717579030, -0.624540197865069760, -0.624501147451209550, -0.624462095476096880, +-0.624423041939829000, -0.624383986842503510, -0.624344930184217660, -0.624305871965069810, -0.624266812185157340, -0.624227750844577820, -0.624188687943428630, -0.624149623481807910, +-0.624110557459813250, -0.624071489877542240, -0.624032420735092020, -0.623993350032561180, -0.623954277770046970, -0.623915203947646770, -0.623876128565458820, -0.623837051623580610, +-0.623797973122109720, -0.623758893061143520, -0.623719811440780480, -0.623680728261117980, -0.623641643522253600, -0.623602557224284700, -0.623563469367309780, -0.623524379951426290, +-0.623485288976731720, -0.623446196443323660, -0.623407102351300480, -0.623368006700759420, -0.623328909491798420, -0.623289810724514840, -0.623250710399007040, -0.623211608515372490, +-0.623172505073708580, -0.623133400074113660, -0.623094293516685330, -0.623055185401521270, -0.623016075728718870, -0.622976964498376580, -0.622937851710591910, -0.622898737365462640, +-0.622859621463086150, -0.622820504003561040, -0.622781384986984540, -0.622742264413454700, -0.622703142283068780, -0.622664018595925350, -0.622624893352121900, -0.622585766551756240, +-0.622546638194925730, -0.622507508281729070, -0.622468376812263640, -0.622429243786626780, -0.622390109204917330, -0.622350973067232530, -0.622311835373670300, -0.622272696124328120, +-0.622233555319304580, -0.622194412958697150, -0.622155269042603650, -0.622116123571121670, -0.622076976544349680, -0.622037827962385270, -0.621998677825326250, -0.621959526133270320, +-0.621920372886315740, -0.621881218084560430, -0.621842061728101970, -0.621802903817037960, -0.621763744351467080, -0.621724583331486840, -0.621685420757194800, -0.621646256628689550, +-0.621607090946068700, -0.621567923709430150, -0.621528754918871380, -0.621489584574490990, -0.621450412676386790, -0.621411239224656460, -0.621372064219397720, -0.621332887660709150, +-0.621293709548688340, -0.621254529883433330, -0.621215348665041580, -0.621176165893611910, -0.621136981569241690, -0.621097795692029160, -0.621058608262071710, -0.621019419279468020, +-0.620980228744315910, -0.620941036656713190, -0.620901843016757440, -0.620862647824547590, -0.620823451080181000, -0.620784252783755490, -0.620745052935369630, -0.620705851535121140, +-0.620666648583108050, -0.620627444079428050, -0.620588238024179730, -0.620549030417460790, -0.620509821259369380, -0.620470610550002970, -0.620431398289460480, -0.620392184477839390, +-0.620352969115237850, -0.620313752201753550, -0.620274533737485310, -0.620235313722530600, -0.620196092156987680, -0.620156869040954130, -0.620117644374528880, -0.620078418157809400, +-0.620039190390893500, -0.619999961073880110, -0.619960730206866710, -0.619921497789951540, -0.619882263823232190, -0.619843028306807600, -0.619803791240775450, -0.619764552625233780, +-0.619725312460280400, -0.619686070746014120, -0.619646827482532640, -0.619607582669934100, -0.619568336308316200, -0.619529088397777870, -0.619489838938416800, -0.619450587930331140, +-0.619411335373618700, -0.619372081268378170, -0.619332825614707480, -0.619293568412704440, -0.619254309662467750, -0.619215049364095330, -0.619175787517685210, -0.619136524123335420, +-0.619097259181144550, -0.619057992691210530, -0.619018724653631610, -0.618979455068505490, -0.618940183935931090, -0.618900911256006210, -0.618861637028829010, -0.618822361254497410, +-0.618783083933110320, -0.618743805064765450, -0.618704524649561050, -0.618665242687595040, -0.618625959178966230, -0.618586674123772550, -0.618547387522112140, -0.618508099374083020, +-0.618468809679783900, -0.618429518439312820, -0.618390225652767580, -0.618350931320247100, -0.618311635441849190, -0.618272338017672340, -0.618233039047814240, -0.618193738532373920, +-0.618154436471449300, -0.618115132865138530, -0.618075827713539530, -0.618036521016751440, -0.617997212774871960, -0.617957902987999460, -0.617918591656231860, -0.617879278779668080, +-0.617839964358406160, -0.617800648392544340, -0.617761330882180550, -0.617722011827413710, -0.617682691228341850, -0.617643369085063010, -0.617604045397675990, -0.617564720166278950, +-0.617525393390970010, -0.617486065071847330, -0.617446735209009830, -0.617407403802555430, -0.617368070852582610, -0.617328736359189170, -0.617289400322474260, -0.617250062742535910, +-0.617210723619472380, -0.617171382953381590, -0.617132040744362790, -0.617092696992513900, -0.617053351697933180, -0.617014004860718890, -0.616974656480969830, -0.616935306558784150, +-0.616895955094259760, -0.616856602087495930, -0.616817247538590570, -0.616777891447642170, -0.616738533814748520, -0.616699174640009010, -0.616659813923521540, -0.616620451665384590, +-0.616581087865696100, -0.616541722524555300, -0.616502355642060130, -0.616462987218309060, -0.616423617253400220, -0.616384245747432670, -0.616344872700504420, -0.616305498112714070, +-0.616266121984159640, -0.616226744314940290, -0.616187365105154040, -0.616147984354899370, -0.616108602064274310, -0.616069218233378240, -0.616029832862309060, -0.615990445951164920, +-0.615951057500044970, -0.615911667509047470, -0.615872275978270770, -0.615832882907813130, -0.615793488297773470, -0.615754092148250170, -0.615714694459341680, -0.615675295231146060, +-0.615635894463762550, -0.615596492157289290, -0.615557088311824760, -0.615517682927467220, -0.615478276004315820, -0.615438867542468680, -0.615399457542024520, -0.615360046003081250, +-0.615320632925738130, -0.615281218310093530, -0.615241802156245580, -0.615202384464293430, -0.615162965234335330, -0.615123544466469770, -0.615084122160795000, -0.615044698317410380, +-0.615005272936413940, -0.614965846017904270, -0.614926417561979740, -0.614886987568739380, -0.614847556038281670, -0.614808122970704970, -0.614768688366107760, -0.614729252224589070, +-0.614689814546247270, -0.614650375331180940, -0.614610934579488340, -0.614571492291268730, -0.614532048466620350, -0.614492603105641580, -0.614453156208431550, -0.614413707775088750, +-0.614374257805711640, -0.614334806300398490, -0.614295353259248670, -0.614255898682360520, -0.614216442569832650, -0.614176984921763310, -0.614137525738251750, -0.614098065019396460, +-0.614058602765296000, -0.614019138976048760, -0.613979673651753880, -0.613940206792509930, -0.613900738398415410, -0.613861268469568680, -0.613821797006069200, -0.613782324008015130, +-0.613742849475504950, -0.613703373408638010, -0.613663895807512570, -0.613624416672227450, -0.613584936002881000, -0.613545453799572480, -0.613505970062400370, -0.613466484791463260, +-0.613426997986859620, -0.613387509648688820, -0.613348019777049340, -0.613308528372039750, -0.613269035433758440, -0.613229540962304980, -0.613190044957777620, -0.613150547420275080, +-0.613111048349895940, -0.613071547746739440, -0.613032045610904190, -0.612992541942488760, -0.612953036741591520, -0.612913530008312170, -0.612874021742748960, -0.612834511945000380, +-0.612795000615165790, -0.612755487753343760, -0.612715973359633010, -0.612676457434131900, -0.612636939976940130, -0.612597420988155950, -0.612557900467878170, -0.612518378416205380, +-0.612478854833236940, -0.612439329719071330, -0.612399803073807370, -0.612360274897543630, -0.612320745190379600, -0.612281213952413640, -0.612241681183744670, -0.612202146884471050, +-0.612162611054692500, -0.612123073694507470, -0.612083534804014340, -0.612043994383312700, -0.612004452432501120, -0.611964908951678320, -0.611925363940942990, -0.611885817400394600, +-0.611846269330131640, -0.611806719730253020, -0.611767168600857230, -0.611727615942043950, -0.611688061753911550, -0.611648506036558960, -0.611608948790084870, -0.611569390014588650, +-0.611529829710169000, -0.611490267876924840, -0.611450704514954540, -0.611411139624357890, -0.611371573205233390, -0.611332005257679610, -0.611292435781796150, -0.611252864777681590, +-0.611213292245434970, -0.611173718185154650, -0.611134142596940430, -0.611094565480890810, -0.611054986837104910, -0.611015406665681100, -0.610975824966719090, -0.610936241740317580, +-0.610896656986575360, -0.610857070705591250, -0.610817482897464850, -0.610777893562294620, -0.610738302700179700, -0.610698710311218700, -0.610659116395511290, -0.610619520953156080, +-0.610579923984252090, -0.610540325488897920, -0.610500725467193250, -0.610461123919236790, -0.610421520845127130, -0.610381916244964070, -0.610342310118846210, -0.610302702466872570, +-0.610263093289141860, -0.610223482585753650, -0.610183870356806880, -0.610144256602400350, -0.610104641322632870, -0.610065024517604030, -0.610025406187412740, -0.609985786332157940, +-0.609946164951938320, -0.609906542046853570, -0.609866917617002510, -0.609827291662484170, -0.609787664183397250, -0.609748035179841440, -0.609708404651915670, -0.609668772599718410, +-0.609629139023349700, -0.609589503922908120, -0.609549867298492700, -0.609510229150202250, -0.609470589478136700, -0.609430948282394520, -0.609391305563075080, -0.609351661320277070, +-0.609312015554100080, -0.609272368264643260, -0.609232719452005410, -0.609193069116285350, -0.609153417257583100, -0.609113763875997250, -0.609074108971626950, -0.609034452544571110, +-0.608994794594929440, -0.608955135122800750, -0.608915474128283950, -0.608875811611478750, -0.608836147572484050, -0.608796482011398910, -0.608756814928322340, -0.608717146323354050, +-0.608677476196592850, -0.608637804548137980, -0.608598131378088270, -0.608558456686543510, -0.608518780473602640, -0.608479102739364900, -0.608439423483928990, -0.608399742707394830, +-0.608360060409861350, -0.608320376591427790, -0.608280691252192860, -0.608241004392256590, -0.608201316011717790, -0.608161626110675260, -0.608121934689229150, -0.608082241747478160, +-0.608042547285521540, -0.608002851303458210, -0.607963153801388100, -0.607923454779410120, -0.607883754237623530, -0.607844052176127140, -0.607804348595021080, -0.607764643494404070, +-0.607724936874375450, -0.607685228735034170, -0.607645519076480120, -0.607605807898812240, -0.607566095202130010, -0.607526380986532000, -0.607486665252118470, -0.607446947998988350, +-0.607407229227240770, -0.607367508936974780, -0.607327787128290390, -0.607288063801286530, -0.607248338956062120, -0.607208612592717190, -0.607168884711350780, -0.607129155312062130, +-0.607089424394950280, -0.607049691960115270, -0.607009958007655890, -0.606970222537671740, -0.606930485550261630, -0.606890747045525700, -0.606851007023562870, -0.606811265484472510, +-0.606771522428353640, -0.606731777855306300, -0.606692031765429520, -0.606652284158822660, -0.606612535035584770, -0.606572784395815860, -0.606533032239615080, -0.606493278567081240, +-0.606453523378314600, -0.606413766673414180, -0.606374008452479350, -0.606334248715609150, -0.606294487462903600, -0.606254724694461840, -0.606214960410383360, -0.606175194610767080, +-0.606135427295713240, -0.606095658465320760, -0.606055888119689130, -0.606016116258917380, -0.605976342883105760, -0.605936567992353290, -0.605896791586759350, -0.605857013666423080, +-0.605817234231444730, -0.605777453281923120, -0.605737670817957710, -0.605697886839648310, -0.605658101347094300, -0.605618314340395040, -0.605578525819649550, -0.605538735784958200, +-0.605498944236420030, -0.605459151174134400, -0.605419356598200560, -0.605379560508718770, -0.605339762905787950, -0.605299963789507790, -0.605260163159977330, -0.605220361017296930, +-0.605180557361565510, -0.605140752192882770, -0.605100945511347740, -0.605061137317060680, -0.605021327610120840, -0.604981516390627690, -0.604941703658680390, -0.604901889414379060, +-0.604862073657823180, -0.604822256389111690, -0.604782437608344830, -0.604742617315621960, -0.604702795511042560, -0.604662972194705770, -0.604623147366711970, -0.604583321027160280, +-0.604543493176150300, -0.604503663813781180, -0.604463832940153270, -0.604424000555365830, -0.604384166659518330, -0.604344331252710030, -0.604304494335041410, -0.604264655906611380, +-0.604224815967519760, -0.604184974517865790, -0.604145131557749740, -0.604105287087270850, -0.604065441106528380, -0.604025593615622690, -0.603985744614652930, -0.603945894103718910, +-0.603906042082919760, -0.603866188552355740, -0.603826333512126450, -0.603786476962331230, -0.603746618903069470, -0.603706759334441510, -0.603666898256546620, -0.603627035669484500, +-0.603587171573354510, -0.603547305968256900, -0.603507438854291030, -0.603467570231556620, -0.603427700100152790, -0.603387828460180130, -0.603347955311737900, -0.603308080654925470, +-0.603268204489843200, -0.603228326816590330, -0.603188447635266690, -0.603148566945971630, -0.603108684748805410, -0.603068801043867510, -0.603028915831257620, -0.602989029111075100, +-0.602949140883420330, -0.602909251148392780, -0.602869359906092030, -0.602829467156617560, -0.602789572900069740, -0.602749677136548030, -0.602709779866152150, -0.602669881088981450, +-0.602629980805136300, -0.602590079014716280, -0.602550175717820770, -0.602510270914550120, -0.602470364605003810, -0.602430456789281530, -0.602390547467482770, -0.602350636639708000, +-0.602310724306056700, -0.602270810466628450, -0.602230895121522950, -0.602190978270840560, -0.602151059914680650, -0.602111140053143150, -0.602071218686327400, -0.602031295814334010, +-0.601991371437262330, -0.601951445555212290, -0.601911518168283250, -0.601871589276575800, -0.601831658880189300, -0.601791726979223670, -0.601751793573778390, -0.601711858663954050, +-0.601671922249849890, -0.601631984331565730, -0.601592044909201930, -0.601552103982857970, -0.601512161552633760, -0.601472217618628790, -0.601432272180943640, -0.601392325239677890, +-0.601352376794931250, -0.601312426846803310, -0.601272475395394630, -0.601232522440804830, -0.601192567983133700, -0.601152612022480830, -0.601112654558946690, -0.601072695592630990, +-0.601032735123633530, -0.600992773152053910, -0.600952809677992580, -0.600912844701549380, -0.600872878222823650, -0.600832910241916100, -0.600792940758926310, -0.600752969773954090, +-0.600712997287099150, -0.600673023298462060, -0.600633047808142310, -0.600593070816240030, -0.600553092322854810, -0.600513112328087020, -0.600473130832036570, -0.600433147834803280, +-0.600393163336486730, -0.600353177337187740, -0.600313189837005660, -0.600273200836040740, -0.600233210334392360, -0.600193218332161330, -0.600153224829447220, -0.600113229826349740, +-0.600073233322969580, -0.600033235319406330, -0.599993235815759920, -0.599953234812130140, -0.599913232308617590, -0.599873228305321970, -0.599833222802343300, -0.599793215799781180, +-0.599753207297736290, -0.599713197296308560, -0.599673185795597700, -0.599633172795703610, -0.599593158296726880, -0.599553142298767330, -0.599513124801924870, -0.599473105806299200, +-0.599433085311991240, -0.599393063319100470, -0.599353039827727030, -0.599313014837970730, -0.599272988349932150, -0.599232960363711210, -0.599192930879407390, -0.599152899897121730, +-0.599112867416953690, -0.599072833439003530, -0.599032797963370940, -0.598992760990156750, -0.598952722519460630, -0.598912682551382640, -0.598872641086022670, -0.598832598123481440, +-0.598792553663858750, -0.598752507707254630, -0.598712460253768790, -0.598672411303502350, -0.598632360856554690, -0.598592308913026280, -0.598552255473016710, -0.598512200536626790, +-0.598472144103956440, -0.598432086175105350, -0.598392026750174330, -0.598351965829263310, -0.598311903412472420, -0.598271839499901370, -0.598231774091651070, -0.598191707187821330, +-0.598151638788512300, -0.598111568893823890, -0.598071497503856800, -0.598031424618711060, -0.597991350238486710, -0.597951274363283660, -0.597911196993202830, -0.597871118128343930, +-0.597831037768807310, -0.597790955914692670, -0.597750872566101040, -0.597710787723132130, -0.597670701385885960, -0.597630613554463450, -0.597590524228964410, -0.597550433409488990, +-0.597510341096137100, -0.597470247289009770, -0.597430151988206810, -0.597390055193828480, -0.597349956905974700, -0.597309857124746270, -0.597269755850243330, -0.597229653082565930, +-0.597189548821814080, -0.597149443068088590, -0.597109335821489620, -0.597069227082117290, -0.597029116850071540, -0.596989005125453280, -0.596948891908362530, -0.596908777198899230, +-0.596868660997164400, -0.596828543303257850, -0.596788424117279950, -0.596748303439330610, -0.596708181269510970, -0.596668057607920740, -0.596627932454660390, -0.596587805809829950, +-0.596547677673530230, -0.596507548045861480, -0.596467416926923730, -0.596427284316817020, -0.596387150215642590, -0.596347014623500260, -0.596306877540490390, -0.596266738966712890, +-0.596226598902269030, -0.596186457347258610, -0.596146314301782000, -0.596106169765939330, -0.596066023739831530, -0.596025876223558740, -0.595985727217220760, -0.595945576720918970, +-0.595905424734753160, -0.595865271258823830, -0.595825116293230980, -0.595784959838075670, -0.595744801893457910, -0.595704642459478180, -0.595664481536236520, -0.595624319123833960, +-0.595584155222370630, -0.595543989831947010, -0.595503822952662910, -0.595463654584619690, -0.595423484727917280, -0.595383313382656150, -0.595343140548936440, -0.595302966226859190, +-0.595262790416524630, -0.595222613118032600, -0.595182434331484430, -0.595142254056980180, -0.595102072294620310, -0.595061889044504970, -0.595021704306735180, -0.594981518081411090, +-0.594941330368633280, -0.594901141168501790, -0.594860950481117760, -0.594820758306581430, -0.594780564644993180, -0.594740369496453040, -0.594700172861062470, -0.594659974738921400, +-0.594619775130130420, -0.594579574034789670, -0.594539371453000290, -0.594499167384862530, -0.594458961830476530, -0.594418754789943330, -0.594378546263363390, -0.594338336250836980, +-0.594298124752464460, -0.594257911768346970, -0.594217697298584650, -0.594177481343278190, -0.594137263902527520, -0.594097044976434230, -0.594056824565098120, -0.594016602668620110, +-0.593976379287100120, -0.593936154420639630, -0.593895928069338770, -0.593855700233298030, -0.593815470912617660, -0.593775240107399020, -0.593735007817742240, -0.593694774043748040, +-0.593654538785516440, -0.593614302043148910, -0.593574063816745600, -0.593533824106406760, -0.593493582912233750, -0.593453340234326720, -0.593413096072786360, -0.593372850427712930, +-0.593332603299207780, -0.593292354687371070, -0.593252104592303490, -0.593211853014105280, -0.593171599952877720, -0.593131345408721260, -0.593091089381736380, -0.593050831872023450, +-0.593010572879683840, -0.592970312404817790, -0.592930050447525890, -0.592889787007908510, -0.592849522086067120, -0.592809255682101850, -0.592768987796113090, -0.592728718428202180, +-0.592688447578469500, -0.592648175247015740, -0.592607901433941150, -0.592567626139347210, -0.592527349363334180, -0.592487071106002740, -0.592446791367453260, -0.592406510147787220, +-0.592366227447104880, -0.592325943265506920, -0.592285657603093820, -0.592245370459966840, -0.592205081836226550, -0.592164791731973450, -0.592124500147308110, -0.592084207082331890, +-0.592043912537145060, -0.592003616511848070, -0.591963319006542530, -0.591923020021328570, -0.591882719556307110, -0.591842417611578520, -0.591802114187244150, -0.591761809283404610, +-0.591721502900160460, -0.591681195037612300, -0.591640885695861370, -0.591600574875008390, -0.591560262575153820, -0.591519948796398350, -0.591479633538843250, -0.591439316802589210, +-0.591398998587736810, -0.591358678894386540, -0.591318357722639850, -0.591278035072597350, -0.591237710944359510, -0.591197385338027570, -0.591157058253702240, -0.591116729691484320, +-0.591076399651474180, -0.591036068133773410, -0.590995735138482360, -0.590955400665702070, -0.590915064715532900, -0.590874727288076440, -0.590834388383433160, -0.590794048001703990, +-0.590753706142989170, -0.590713362807390620, -0.590673017995008490, -0.590632671705943910, -0.590592323940297260, -0.590551974698170220, -0.590511623979663170, -0.590471271784877130, +-0.590430918113912570, -0.590390562966870980, -0.590350206343853050, -0.590309848244959250, -0.590269488670291160, -0.590229127619949280, -0.590188765094034730, -0.590148401092647770, +-0.590108035615890200, -0.590067668663862620, -0.590027300236665830, -0.589986930334400420, -0.589946558957167970, -0.589906186105069290, -0.589865811778204960, -0.589825435976675800, +-0.589785058700583510, -0.589744679950028550, -0.589704299725111740, -0.589663918025933990, -0.589623534852596660, -0.589583150205200580, -0.589542764083846320, -0.589502376488635460, +-0.589461987419668600, -0.589421596877046870, -0.589381204860870760, -0.589340811371241950, -0.589300416408261140, -0.589260019972029260, -0.589219622062647000, -0.589179222680216050, +-0.589138821824837010, -0.589098419496610900, -0.589058015695638430, -0.589017610422021280, -0.588977203675860150, -0.588936795457255970, -0.588896385766309430, -0.588855974603122220, +-0.588815561967795160, -0.588775147860428840, -0.588734732281124940, -0.588694315229984280, -0.588653896707107770, -0.588613476712596230, -0.588573055246551350, -0.588532632309073820, +-0.588492207900264690, -0.588451782020224630, -0.588411354669055590, -0.588370925846858130, -0.588330495553733290, -0.588290063789781880, -0.588249630555105710, -0.588209195849805470, +-0.588168759673982190, -0.588128322027736680, -0.588087882911170650, -0.588047442324384990, -0.588007000267480760, -0.587966556740558640, -0.587926111743720450, -0.587885665277066980, +-0.587845217340699060, -0.587804767934718360, -0.587764317059225830, -0.587723864714322360, -0.587683410900109000, -0.587642955616687450, -0.587602498864158500, -0.587562040642623300, +-0.587521580952182650, -0.587481119792938490, -0.587440657164991390, -0.587400193068442710, -0.587359727503393160, -0.587319260469944760, -0.587278791968198100, -0.587238321998254430, +-0.587197850560214670, -0.587157377654180630, -0.587116903280253120, -0.587076427438533060, -0.587035950129122240, -0.586995471352121490, -0.586954991107632160, -0.586914509395754960, +-0.586874026216591790, -0.586833541570243590, -0.586793055456811600, -0.586752567876396510, -0.586712078829100480, -0.586671588315024200, -0.586631096334268910, -0.586590602886935540, +-0.586550107973126010, -0.586509611592941240, -0.586469113746482470, -0.586428614433850410, -0.586388113655147310, -0.586347611410473980, -0.586307107699931110, -0.586266602523620950, +-0.586226095881644200, -0.586185587774102230, -0.586145078201095960, -0.586104567162727300, -0.586064054659097280, -0.586023540690307150, -0.585983025256457730, -0.585942508357651160, +-0.585901989993988240, -0.585861470165570440, -0.585820948872498580, -0.585780426114874690, -0.585739901892799790, -0.585699376206375020, -0.585658849055701540, -0.585618320440881250, +-0.585577790362015180, -0.585537258819204260, -0.585496725812550630, -0.585456191342155100, -0.585415655408119130, -0.585375118010543650, -0.585334579149530800, -0.585294038825181380, +-0.585253497037596990, -0.585212953786878430, -0.585172409073127840, -0.585131862896446140, -0.585091315256934920, -0.585050766154694980, -0.585010215589828570, -0.584969663562436510, +-0.584929110072620380, -0.584888555120481100, -0.584847998706120810, -0.584807440829640420, -0.584766881491141530, -0.584726320690725050, -0.584685758428493130, -0.584645194704546790, +-0.584604629518987170, -0.584564062871916200, -0.584523494763435240, -0.584482925193645420, -0.584442354162648000, -0.584401781670545020, -0.584361207717437600, -0.584320632303427120, +-0.584280055428614720, -0.584239477093102530, -0.584198897296991700, -0.584158316040383600, -0.584117733323379350, -0.584077149146081110, -0.584036563508590010, -0.583995976411007530, +-0.583955387853434700, -0.583914797835973780, -0.583874206358725890, -0.583833613421792070, -0.583793019025274700, -0.583752423169274670, -0.583711825853893580, -0.583671227079232580, +-0.583630626845393910, -0.583590025152478600, -0.583549422000588350, -0.583508817389824070, -0.583468211320288140, -0.583427603792081690, -0.583386994805306200, -0.583346384360062920, +-0.583305772456453990, -0.583265159094580650, -0.583224544274544400, -0.583183927996446470, -0.583143310260389120, -0.583102691066473390, -0.583062070414800630, -0.583021448305472980, +-0.582980824738591810, -0.582940199714258480, -0.582899573232574350, -0.582858945293641680, -0.582818315897561610, -0.582777685044435720, -0.582737052734365270, -0.582696418967452610, +-0.582655783743798890, -0.582615147063505700, -0.582574508926674170, -0.582533869333406900, -0.582493228283804900, -0.582452585777969770, -0.582411941816002860, -0.582371296398006440, +-0.582330649524081760, -0.582290001194330500, -0.582249351408853810, -0.582208700167754170, -0.582168047471132820, -0.582127393319090910, -0.582086737711730920, -0.582046080649154090, +-0.582005422131462000, -0.581964762158756030, -0.581924100731138540, -0.581883437848710770, -0.581842773511574430, -0.581802107719830760, -0.581761440473582140, -0.581720771772930020, +-0.581680101617975900, -0.581639430008821230, -0.581598756945568280, -0.581558082428318520, -0.581517406457173420, -0.581476729032234570, -0.581436050153604220, -0.581395369821383730, +-0.581354688035674470, -0.581314004796578910, -0.581273320104198190, -0.581232633958634230, -0.581191946359988390, -0.581151257308363030, -0.581110566803859530, -0.581069874846579570, +-0.581029181436624520, -0.580988486574096960, -0.580947790259098150, -0.580907092491729890, -0.580866393272093550, -0.580825692600291490, -0.580784990476425290, -0.580744286900596540, +-0.580703581872906830, -0.580662875393458400, -0.580622167462352850, -0.580581458079691530, -0.580540747245576920, -0.580500034960110490, -0.580459321223393830, -0.580418606035528640, +-0.580377889396617270, -0.580337171306761100, -0.580296451766062040, -0.580255730774621560, -0.580215008332542030, -0.580174284439925030, -0.580133559096872250, -0.580092832303485300, +-0.580052104059866620, -0.580011374366117600, -0.579970643222340150, -0.579929910628635860, -0.579889176585107080, -0.579848441091855290, -0.579807704148982080, -0.579766965756590040, +-0.579726225914780510, -0.579685484623655430, -0.579644741883316270, -0.579603997693865610, -0.579563252055405040, -0.579522504968036260, -0.579481756431860840, -0.579441006446981490, +-0.579400255013499570, -0.579359502131516990, -0.579318747801135240, -0.579277992022457110, -0.579237234795583980, -0.579196476120617640, -0.579155715997659910, -0.579114954426813160, +-0.579074191408178950, -0.579033426941859440, -0.578992661027955880, -0.578951893666571070, -0.578911124857806490, -0.578870354601763730, -0.578829582898545470, -0.578788809748253310, +-0.578748035150989050, -0.578707259106854390, -0.578666481615951910, -0.578625702678383200, -0.578584922294250290, -0.578544140463654770, -0.578503357186699100, -0.578462572463485200, +-0.578421786294114780, -0.578380998678689530, -0.578340209617312140, -0.578299419110084310, -0.578258627157107850, -0.578217833758484460, -0.578177038914316820, -0.578136242624706640, +-0.578095444889755510, -0.578054645709566110, -0.578013845084240030, -0.577973043013879420, -0.577932239498585850, -0.577891434538462030, -0.577850628133609550, -0.577809820284130530, +-0.577769010990126670, -0.577728200251700570, -0.577687388068954030, -0.577646574441988970, -0.577605759370907080, -0.577564942855811280, -0.577524124896803050, -0.577483305493984410, +-0.577442484647457290, -0.577401662357324260, -0.577360838623687030, -0.577320013446647410, -0.577279186826308190, -0.577238358762770850, -0.577197529256137650, -0.577156698306510400, +-0.577115865913991670, -0.577075032078683270, -0.577034196800687240, -0.576993360080105380, -0.576952521917040500, -0.576911682311594290, -0.576870841263869010, -0.576829998773966120, +-0.576789154841988560, -0.576748309468038230, -0.576707462652217060, -0.576666614394626960, -0.576625764695370640, -0.576584913554549880, -0.576544060972266850, -0.576503206948623340, +-0.576462351483722050, -0.576421494577665010, -0.576380636230553800, -0.576339776442491460, -0.576298915213579570, -0.576258052543920480, -0.576217188433615800, -0.576176322882768540, +-0.576135455891480520, -0.576094587459853870, -0.576053717587990290, -0.576012846275992920, -0.575971973523963340, -0.575931099332003820, -0.575890223700216250, -0.575849346628703460, +-0.575808468117567250, -0.575767588166909980, -0.575726706776833240, -0.575685823947440170, -0.575644939678832570, -0.575604053971112250, -0.575563166824382130, -0.575522278238744130, +-0.575481388214300390, -0.575440496751152830, -0.575399603849404360, -0.575358709509156910, -0.575317813730512720, -0.575276916513573600, -0.575236017858442470, -0.575195117765221480, +-0.575154216234012530, -0.575113313264917770, -0.575072408858040010, -0.575031503013481270, -0.574990595731343810, -0.574949687011729440, -0.574908776854741290, -0.574867865260481170, +-0.574826952229051000, -0.574786037760553810, -0.574745121855091520, -0.574704204512766490, -0.574663285733680530, -0.574622365517936660, -0.574581443865637030, -0.574540520776883670, +-0.574499596251778710, -0.574458670290425080, -0.574417742892924800, -0.574376814059380130, -0.574335883789893090, -0.574294952084566710, -0.574254018943502920, -0.574213084366804070, +-0.574172148354572200, -0.574131210906910330, -0.574090272023920380, -0.574049331705704380, -0.574008389952365470, -0.573967446764005460, -0.573926502140726940, -0.573885556082631810, +-0.573844608589823110, -0.573803659662402990, -0.573762709300473570, -0.573721757504137120, -0.573680804273496660, -0.573639849608654110, -0.573598893509711940, -0.573557935976772180, +-0.573516977009937980, -0.573476016609311360, -0.573435054774994680, -0.573394091507089980, -0.573353126805700390, -0.573312160670928050, -0.573271193102875220, -0.573230224101644040, +-0.573189253667337750, -0.573148281800058280, -0.573107308499907760, -0.573066333766989340, -0.573025357601405050, -0.572984380003257350, -0.572943400972648400, -0.572902420509681320, +-0.572861438614458150, -0.572820455287081360, -0.572779470527653100, -0.572738484336276500, -0.572697496713053810, -0.572656507658087180, -0.572615517171479070, -0.572574525253332520, +-0.572533531903749560, -0.572492537122832880, -0.572451540910684400, -0.572410543267407480, -0.572369544193104150, -0.572328543687876670, -0.572287541751828170, -0.572246538385060790, +-0.572205533587677120, -0.572164527359779180, -0.572123519701470350, -0.572082510612852760, -0.572041500094028770, -0.572000488145100740, -0.571959474766171820, -0.571918459957344250, +-0.571877443718720510, -0.571836426050402750, -0.571795406952494420, -0.571754386425097460, -0.571713364468314560, -0.571672341082247960, -0.571631316267000700, -0.571590290022675250, +-0.571549262349373750, -0.571508233247199460, -0.571467202716254510, -0.571426170756641590, -0.571385137368462860, -0.571344102551821780, -0.571303066306820260, -0.571262028633561130, +-0.571220989532146620, -0.571179949002679990, -0.571138907045263490, -0.571097863659999700, -0.571056818846990890, -0.571015772606340290, -0.570974724938150380, -0.570933675842523640, +-0.570892625319562420, -0.570851573369369870, -0.570810519992048460, -0.570769465187700780, -0.570728408956428960, -0.570687351298336590, -0.570646292213525810, -0.570605231702098870, +-0.570564169764159250, -0.570523106399809300, -0.570482041609151500, -0.570440975392288220, -0.570399907749322920, -0.570358838680357750, -0.570317768185495620, -0.570276696264838680, +-0.570235622918490280, -0.570194548146552900, -0.570153471949129020, -0.570112394326321210, -0.570071315278232850, -0.570030234804966060, -0.569989152906623770, -0.569948069583308130, +-0.569906984835122810, -0.569865898662169970, -0.569824811064551960, -0.569783722042372380, -0.569742631595733460, -0.569701539724738030, -0.569660446429488320, -0.569619351710087820, +-0.569578255566638990, -0.569537157999244540, -0.569496059008006710, -0.569454958593029190, -0.569413856754414250, -0.569372753492264790, -0.569331648806682970, -0.569290542697772350, +-0.569249435165635420, -0.569208326210374980, -0.569167215832093290, -0.569126104030893920, -0.569084990806879240, -0.569043876160151840, -0.569002760090814960, -0.568961642598971310, +-0.568920523684723570, -0.568879403348174110, -0.568838281589426400, -0.568797158408583140, -0.568756033805746910, -0.568714907781020300, -0.568673780334506660, -0.568632651466308700, +-0.568591521176529000, -0.568550389465270260, -0.568509256332635830, -0.568468121778728190, -0.568426985803650360, -0.568385848407504720, -0.568344709590394740, -0.568303569352422990, +-0.568262427693692400, -0.568221284614305320, -0.568180140114365350, -0.568138994193975070, -0.568097846853236940, -0.568056698092254560, -0.568015547911130400, -0.567974396309967490, +-0.567933243288868070, -0.567892088847935960, -0.567850932987273740, -0.567809775706984100, -0.567768617007169630, -0.567727456887934020, -0.567686295349379750, -0.567645132391609740, +-0.567603968014726460, -0.567562802218833710, -0.567521635004033960, -0.567480466370430150, -0.567439296318124730, -0.567398124847221520, -0.567356951957822990, -0.567315777650031610, +-0.567274601923951180, -0.567233424779684300, -0.567192246217333880, -0.567151066237002400, -0.567109884838793650, -0.567068702022810230, -0.567027517789155060, -0.566986332137930700, +-0.566945145069240870, -0.566903956583188150, -0.566862766679875560, -0.566821575359405690, -0.566780382621882240, -0.566739188467407900, -0.566697992896085580, -0.566656795908017760, +-0.566615597503308480, -0.566574397682060190, -0.566533196444375500, -0.566491993790358190, -0.566450789720110870, -0.566409584233736550, -0.566368377331337940, -0.566327169013018830, +-0.566285959278881700, -0.566244748129029700, -0.566203535563565510, -0.566162321582592830, -0.566121106186214250, -0.566079889374533020, -0.566038671147651610, -0.565997451505673930, +-0.565956230448702690, -0.565915007976840800, -0.565873784090191070, -0.565832558788857190, -0.565791332072941970, -0.565750103942547990, -0.565708874397779170, -0.565667643438738100, +-0.565626411065527910, -0.565585177278251420, -0.565543942077012310, -0.565502705461913390, -0.565461467433057590, -0.565420227990547920, -0.565378987134487860, -0.565337744864980450, +-0.565296501182128710, -0.565255256086035330, -0.565214009576804120, -0.565172761654537890, -0.565131512319339780, -0.565090261571312480, -0.565049009410559910, -0.565007755837184880, +-0.564966500851290410, -0.564925244452979310, -0.564883986642355510, -0.564842727419521680, -0.564801466784580760, -0.564760204737636550, -0.564718941278791740, -0.564677676408149590, +-0.564636410125812890, -0.564595142431885580, -0.564553873326470330, -0.564512602809670420, -0.564471330881588630, -0.564430057542328890, -0.564388782791994110, -0.564347506630687220, +-0.564306229058511240, -0.564264950075570090, -0.564223669681966580, -0.564182387877803840, -0.564141104663184790, -0.564099820038213350, -0.564058534002992330, -0.564017246557624640, +-0.563975957702214200, -0.563934667436863930, -0.563893375761676860, -0.563852082676756130, -0.563810788182205420, -0.563769492278127780, -0.563728194964626450, -0.563686896241804240, +-0.563645596109765170, -0.563604294568612050, -0.563562991618448250, -0.563521687259376680, -0.563480381491501150, -0.563439074314924680, -0.563397765729750530, -0.563356455736081620, +-0.563315144334021860, -0.563273831523674380, -0.563232517305141790, -0.563191201678528430, -0.563149884643937000, -0.563108566201470870, -0.563067246351232950, -0.563025925093327270, +-0.562984602427856750, -0.562943278354924750, -0.562901952874634180, -0.562860625987089190, -0.562819297692392470, -0.562777967990647610, -0.562736636881957520, -0.562695304366426120, +-0.562653970444156440, -0.562612635115251840, -0.562571298379815340, -0.562529960237950880, -0.562488620689761580, -0.562447279735350690, -0.562405937374821360, -0.562364593608277400, +-0.562323248435822040, -0.562281901857558110, -0.562240553873589840, -0.562199204484020280, -0.562157853688952550, -0.562116501488489910, -0.562075147882736380, -0.562033792871795000, +-0.561992436455769130, -0.561951078634761680, -0.561909719408877020, -0.561868358778218060, -0.561826996742888160, -0.561785633302990470, -0.561744268458629010, -0.561702902209906820, +-0.561661534556927470, -0.561620165499793880, -0.561578795038610300, -0.561537423173479660, -0.561496049904505080, -0.561454675231790820, -0.561413299155439800, -0.561371921675555610, +-0.561330542792241150, -0.561289162505600790, -0.561247780815737450, -0.561206397722754710, -0.561165013226755600, -0.561123627327844380, -0.561082240026124060, -0.561040851321698120, +-0.560999461214669590, -0.560958069705142950, -0.560916676793220990, -0.560875282479007420, -0.560833886762605260, -0.560792489644118760, -0.560751091123650960, -0.560709691201305200, +-0.560668289877185530, -0.560626887151395080, -0.560585483024037430, -0.560544077495215730, -0.560502670565034220, -0.560461262233595940, -0.560419852501004570, -0.560378441367363260, +-0.560337028832776140, -0.560295614897346470, -0.560254199561177720, -0.560212782824373150, -0.560171364687036990, -0.560129945149272390, -0.560088524211182940, -0.560047101872871880, +-0.560005678134443350, -0.559964252996000610, -0.559922826457647020, -0.559881398519486590, -0.559839969181622710, -0.559798538444158830, -0.559757106307198330, -0.559715672770845440, +-0.559674237835203310, -0.559632801500375530, -0.559591363766465570, -0.559549924633577440, -0.559508484101814420, -0.559467042171280290, -0.559425598842078210, -0.559384154114312530, +-0.559342707988086390, -0.559301260463503480, -0.559259811540667060, -0.559218361219681490, -0.559176909500650020, -0.559135456383676230, -0.559094001868863490, -0.559052545956316150, +-0.559011088646137360, -0.558969629938430470, -0.558928169833299960, -0.558886708330848970, -0.558845245431181190, -0.558803781134399990, -0.558762315440609610, -0.558720848349913530, +-0.558679379862415340, -0.558637909978218270, -0.558596438697426810, -0.558554966020144320, -0.558513491946474370, -0.558472016476520230, -0.558430539610386580, -0.558389061348176450, +-0.558347581689993770, -0.558306100635941660, -0.558264618186124720, -0.558223134340646300, -0.558181649099609540, -0.558140162463119150, -0.558098674431278250, -0.558057185004190770, +-0.558015694181959840, -0.557974201964690160, -0.557932708352484990, -0.557891213345447890, -0.557849716943682570, -0.557808219147293170, -0.557766719956383270, -0.557725219371056680, +-0.557683717391416530, -0.557642214017567530, -0.557600709249613020, -0.557559203087656610, -0.557517695531801970, -0.557476186582153370, -0.557434676238814380, -0.557393164501888250, +-0.557351651371479570, -0.557310136847691820, -0.557268620930628680, -0.557227103620393740, -0.557185584917091250, -0.557144064820824900, -0.557102543331698400, -0.557061020449815090, +-0.557019496175279680, -0.556977970508195420, -0.556936443448666330, -0.556894914996795660, -0.556853385152688230, -0.556811853916447270, -0.556770321288176610, -0.556728787267979810, +-0.556687251855961460, -0.556645715052224930, -0.556604176856874130, -0.556562637270012540, -0.556521096291744730, -0.556479553922174070, -0.556438010161404260, -0.556396465009539760, +-0.556354918466684170, -0.556313370532941280, -0.556271821208414450, -0.556230270493208610, -0.556188718387427010, -0.556147164891173550, -0.556105610004551940, -0.556064053727666540, +-0.556022496060621150, -0.555980937003519360, -0.555939376556464970, -0.555897814719562570, -0.555856251492915510, -0.555814686876627830, -0.555773120870803110, -0.555731553475545930, +-0.555689984690959870, -0.555648414517148530, -0.555606842954216470, -0.555565270002267300, -0.555523695661404910, -0.555482119931733020, -0.555440542813356200, -0.555398964306377920, +-0.555357384410902320, -0.555315803127032770, -0.555274220454874180, -0.555232636394530020, -0.555191050946104330, -0.555149464109700560, -0.555107875885423540, -0.555066286273376840, +-0.555024695273664380, -0.554983102886389860, -0.554941509111657850, -0.554899913949572170, -0.554858317400236280, -0.554816719463754990, -0.554775120140231890, -0.554733519429771120, +-0.554691917332476030, -0.554650313848451540, -0.554608708977801230, -0.554567102720629260, -0.554525495077039080, -0.554483886047135610, -0.554442275631022330, -0.554400663828803380, +-0.554359050640582440, -0.554317436066464220, -0.554275820106552410, -0.554234202760951030, -0.554192584029763790, -0.554150963913095480, -0.554109342411049810, -0.554067719523730350, +-0.554026095251241910, -0.553984469593688300, -0.553942842551173540, -0.553901214123801220, -0.553859584311676370, -0.553817953114902450, -0.553776320533583610, -0.553734686567823650, +-0.553693051217727380, -0.553651414483398500, -0.553609776364941020, -0.553568136862458760, -0.553526495976056520, -0.553484853705838000, -0.553443210051907440, -0.553401565014368440, +-0.553359918593325780, -0.553318270788883520, -0.553276621601145440, -0.553234971030215460, -0.553193319076198510, -0.553151665739198160, -0.553110011019318340, -0.553068354916663840, +-0.553026697431338480, -0.552985038563446380, -0.552943378313091260, -0.552901716680378130, -0.552860053665410580, -0.552818389268293080, -0.552776723489129100, -0.552735056328023780, +-0.552693387785080700, -0.552651717860404230, -0.552610046554098070, -0.552568373866267230, -0.552526699797015410, -0.552485024346446750, -0.552443347514665280, -0.552401669301775810, +-0.552359989707882140, -0.552318308733088070, -0.552276626377498640, -0.552234942641217640, -0.552193257524349330, -0.552151571026997410, -0.552109883149267010, -0.552068193891261830, +-0.552026503253086220, -0.551984811234844000, -0.551943117836640180, -0.551901423058578480, -0.551859726900763240, -0.551818029363298270, -0.551776330446288600, -0.551734630149838150, +-0.551692928474051160, -0.551651225419031330, -0.551609520984883920, -0.551567815171712720, -0.551526107979621650, -0.551484399408715520, -0.551442689459098580, -0.551400978130874740, +-0.551359265424148260, -0.551317551339023830, -0.551275835875605580, -0.551234119033997770, -0.551192400814304320, -0.551150681216630130, -0.551108960241079360, -0.551067237887756130, +-0.551025514156764370, -0.550983789048209330, -0.550942062562194690, -0.550900334698824930, -0.550858605458203980, -0.550816874840436950, -0.550775142845627670, -0.550733409473880500, +-0.550691674725299450, -0.550649938599989670, -0.550608201098054970, -0.550566462219599370, -0.550524721964728010, -0.550482980333544920, -0.550441237326154240, -0.550399492942660220, +-0.550357747183167770, -0.550316000047781030, -0.550274251536604250, -0.550232501649741360, -0.550190750387297700, -0.550148997749377200, -0.550107243736084110, -0.550065488347522560, +-0.550023731583797690, -0.549981973445013540, -0.549940213931274350, -0.549898453042684370, -0.549856690779348510, -0.549814927141371030, -0.549773162128855740, -0.549731395741907990, +-0.549689627980631810, -0.549647858845131450, -0.549606088335511170, -0.549564316451875980, -0.549522543194330030, -0.549480768562977670, -0.549438992557923060, -0.549397215179271310, +-0.549355436427126590, -0.549313656301593120, -0.549271874802775280, -0.549230091930778100, -0.549188307685705700, -0.549146522067662460, -0.549104735076752610, -0.549062946713081310, +-0.549021156976752580, -0.548979365867870660, -0.548937573386540700, -0.548895779532866720, -0.548853984306953310, -0.548812187708904610, -0.548770389738825860, -0.548728590396820980, +-0.548686789682994780, -0.548644987597451170, -0.548603184140295410, -0.548561379311631850, -0.548519573111564630, -0.548477765540198230, -0.548435956597637770, -0.548394146283987420, +-0.548352334599351730, -0.548310521543834860, -0.548268707117541940, -0.548226891320577340, -0.548185074153045070, -0.548143255615050620, -0.548101435706697890, -0.548059614428091590, +-0.548017791779335960, -0.547975967760536140, -0.547934142371796500, -0.547892315613221380, -0.547850487484915270, -0.547808657986983190, -0.547766827119529510, -0.547724994882658690, +-0.547683161276475090, -0.547641326301083860, -0.547599489956589470, -0.547557652243096270, -0.547515813160708520, -0.547473972709531690, -0.547432130889669800, -0.547390287701227770, +-0.547348443144309530, -0.547306597219020530, -0.547264749925465140, -0.547222901263747400, -0.547181051233972870, -0.547139199836245700, -0.547097347070670480, -0.547055492937351560, +-0.547013637436394200, -0.546971780567902850, -0.546929922331982010, -0.546888062728736020, -0.546846201758270150, -0.546804339420688850, -0.546762475716096710, -0.546720610644597980, +-0.546678744206298140, -0.546636876401301430, -0.546595007229712440, -0.546553136691635630, -0.546511264787176380, -0.546469391516438920, -0.546427516879527620, -0.546385640876547950, +-0.546343763507604050, -0.546301884772800840, -0.546260004672242560, -0.546218123206034580, -0.546176240374281360, -0.546134356177087500, -0.546092470614557350, -0.546050583686796490, +-0.546008695393909060, -0.545966805735999980, -0.545924914713173500, -0.545883022325535090, -0.545841128573189120, -0.545799233456240260, -0.545757336974793010, -0.545715439128952820, +-0.545673539918823950, -0.545631639344510980, -0.545589737406119160, -0.545547834103753070, -0.545505929437517410, -0.545464023407516540, -0.545422116013855930, -0.545380207256640050, +-0.545338297135973700, -0.545296385651961150, -0.545254472804708070, -0.545212558594318830, -0.545170643020898130, -0.545128726084550430, -0.545086807785381430, -0.545044888123495270, +-0.545002967098996980, -0.544961044711990810, -0.544919120962582440, -0.544877195850876350, -0.544835269376977130, -0.544793341540989460, -0.544751412343018830, -0.544709481783169580, +-0.544667549861546310, -0.544625616578254480, -0.544583681933398680, -0.544541745927083600, -0.544499808559413930, -0.544457869830494930, -0.544415929740431400, -0.544373988289327930, +-0.544332045477289190, -0.544290101304420680, -0.544248155770826970, -0.544206208876612750, -0.544164260621882720, -0.544122311006742470, -0.544080360031296340, -0.544038407695649370, +-0.543996453999906040, -0.543954498944171800, -0.543912542528551480, -0.543870584753149310, -0.543828625618071100, -0.543786665123421330, -0.543744703269304910, -0.543702740055826310, +-0.543660775483091330, -0.543618809551204340, -0.543576842260270250, -0.543534873610393770, -0.543492903601680570, -0.543450932234235020, -0.543408959508162040, -0.543366985423566430, +-0.543325009980553660, -0.543283033179228440, -0.543241055019695550, -0.543199075502059700, -0.543157094626426470, -0.543115112392900560, -0.543073128801586540, -0.543031143852589990, +-0.542989157546015620, -0.542947169881968340, -0.542905180860552840, -0.542863190481874590, -0.542821198746038510, -0.542779205653149410, -0.542737211203311860, -0.542695215396631790, +-0.542653218233213550, -0.542611219713162280, -0.542569219836582570, -0.542527218603580330, -0.542485216014259920, -0.542443212068726480, -0.542401206767084590, -0.542359200109440160, +-0.542317192095897680, -0.542275182726561830, -0.542233172001538420, -0.542191159920932140, -0.542149146484847800, -0.542107131693390420, -0.542065115546665480, -0.542023098044777660, +-0.541981079187832230, -0.541939058975933750, -0.541897037409187930, -0.541855014487699460, -0.541812990211573590, -0.541770964580914780, -0.541728937595828960, -0.541686909256420710, +-0.541644879562795280, -0.541602848515057240, -0.541560816113312530, -0.541518782357665710, -0.541476747248221920, -0.541434710785085980, -0.541392672968363580, -0.541350633798159400, +-0.541308593274578360, -0.541266551397726280, -0.541224508167707730, -0.541182463584627960, -0.541140417648591550, -0.541098370359704540, -0.541056321718071610, -0.541014271723797900, +-0.540972220376988110, -0.540930167677748150, -0.540888113626182720, -0.540846058222397060, -0.540804001466495880, -0.540761943358585070, -0.540719883898769460, -0.540677823087154060, +-0.540635760923843690, -0.540593697408944360, -0.540551632542560780, -0.540509566324797740, -0.540467498755761170, -0.540425429835555860, -0.540383359564286960, -0.540341287942059270, +-0.540299214968978700, -0.540257140645150180, -0.540215064970678730, -0.540172987945669260, -0.540130909570227800, -0.540088829844458940, -0.540046748768468030, -0.540004666342359880, +-0.539962582566240520, -0.539920497440214640, -0.539878410964387490, -0.539836323138863980, -0.539794233963749930, -0.539752143439150460, -0.539710051565170160, -0.539667958341915170, +-0.539625863769490180, -0.539583767848000550, -0.539541670577551200, -0.539499571958248050, -0.539457471990195890, -0.539415370673500090, -0.539373268008265570, -0.539331163994598130, +-0.539289058632602790, -0.539246951922384920, -0.539204843864049210, -0.539162734457701800, -0.539120623703447490, -0.539078511601391640, -0.539036398151639170, -0.538994283354296110, +-0.538952167209467260, -0.538910049717258090, -0.538867930877773290, -0.538825810691119120, -0.538783689157400380, -0.538741566276722090, -0.538699442049190290, -0.538657316474909780, +-0.538615189553986130, -0.538573061286524050, -0.538530931672629660, -0.538488800712407900, -0.538446668405964220, -0.538404534753403440, -0.538362399754831800, -0.538320263410354110, +-0.538278125720075720, -0.538235986684101660, -0.538193846302537970, -0.538151704575489780, -0.538109561503062220, -0.538067417085360430, -0.538025271322490450, -0.537983124214557300, +-0.537940975761666000, -0.537898825963922580, -0.537856674821432180, -0.537814522334300050, -0.537772368502631220, -0.537730213326531810, -0.537688056806106870, -0.537645898941461860, +-0.537603739732701700, -0.537561579179932520, -0.537519417283259470, -0.537477254042787900, -0.537435089458622730, -0.537392923530870200, -0.537350756259635460, -0.537308587645023760, +-0.537266417687140230, -0.537224246386091010, -0.537182073741981240, -0.537139899754915830, -0.537097724425001030, -0.537055547752341990, -0.537013369737044060, -0.536971190379212370, +-0.536929009678952960, -0.536886827636371190, -0.536844644251572190, -0.536802459524661320, -0.536760273455744620, -0.536718086044927320, -0.536675897292314690, -0.536633707198011960, +-0.536591515762125380, -0.536549322984759990, -0.536507128866021370, -0.536464933406014420, -0.536422736604845630, -0.536380538462619900, -0.536338338979442500, -0.536296138155419650, +-0.536253935990656410, -0.536211732485258330, -0.536169527639330570, -0.536127321452979370, -0.536085113926309860, -0.536042905059427640, -0.536000694852437620, -0.535958483305446380, +-0.535916270418558830, -0.535874056191880670, -0.535831840625516920, -0.535789623719574060, -0.535747405474157110, -0.535705185889371550, -0.535662964965322730, -0.535620742702116900, +-0.535578519099859100, -0.535536294158655110, -0.535494067878609980, -0.535451840259830060, -0.535409611302420490, -0.535367381006486620, -0.535325149372134600, -0.535282916399469680, +-0.535240682088597540, -0.535198446439623220, -0.535156209452653300, -0.535113971127792690, -0.535071731465147300, -0.535029490464822180, -0.534987248126923660, -0.534945004451557020, +-0.534902759438827920, -0.534860513088841530, -0.534818265401704180, -0.534776016377521150, -0.534733766016398220, -0.534691514318440420, -0.534649261283754120, -0.534607006912444780, +-0.534564751204617550, -0.534522494160378780, -0.534480235779833720, -0.534437976063088180, -0.534395715010247300, -0.534353452621417420, -0.534311188896704040, -0.534268923836212610, +-0.534226657440048490, -0.534184389708318160, -0.534142120641126760, -0.534099850238580090, -0.534057578500783500, -0.534015305427843260, -0.533973031019864820, -0.533930755276953770, +-0.533888478199215370, -0.533846199786756290, -0.533803920039681580, -0.533761638958096810, -0.533719356542108230, -0.533677072791821310, -0.533634787707341740, -0.533592501288774780, +-0.533550213536226890, -0.533507924449803550, -0.533465634029610340, -0.533423342275752720, -0.533381049188337180, -0.533338754767468840, -0.533296459013253730, -0.533254161925797110, +-0.533211863505205440, -0.533169563751584090, -0.533127262665038850, -0.533084960245675090, -0.533042656493599280, -0.533000351408916770, -0.532958044991733490, -0.532915737242154690, +-0.532873428160286930, -0.532831117746235590, -0.532788806000106030, -0.532746492922004930, -0.532704178512037550, -0.532661862770309690, -0.532619545696926820, -0.532577227291995410, +-0.532534907555621050, -0.532492586487909310, -0.532450264088965790, -0.532407940358897050, -0.532365615297808350, -0.532323288905805600, -0.532280961182994280, -0.532238632129480970, +-0.532196301745371030, -0.532153970030770360, -0.532111636985784450, -0.532069302610519770, -0.532026966905081890, -0.531984629869576060, -0.531942291504109210, -0.531899951808786460, +-0.531857610783713960, -0.531815268428997070, -0.531772924744742360, -0.531730579731055310, -0.531688233388041720, -0.531645885715807290, -0.531603536714458480, -0.531561186384100880, +-0.531518834724840290, -0.531476481736782190, -0.531434127420033380, -0.531391771774699100, -0.531349414800885490, -0.531307056498697920, -0.531264696868243070, -0.531222335909626530, +-0.531179973622953770, -0.531137610008331480, -0.531095245065865140, -0.531052878795660650, -0.531010511197823610, -0.530968142272460700, -0.530925772019677390, -0.530883400439579600, +-0.530841027532273020, -0.530798653297864240, -0.530756277736458840, -0.530713900848162720, -0.530671522633081480, -0.530629143091321810, -0.530586762222989170, -0.530544380028189820, +-0.530501996507029010, -0.530459611659613640, -0.530417225486049190, -0.530374837986441360, -0.530332449160896720, -0.530290059009521090, -0.530247667532420250, -0.530205274729699920, +-0.530162880601466660, -0.530120485147826280, -0.530078088368884700, -0.530035690264747390, -0.529993290835521380, -0.529950890081312130, -0.529908488002225560, -0.529866084598367480, +-0.529823679869844580, -0.529781273816762430, -0.529738866439227070, -0.529696457737344200, -0.529654047711220600, -0.529611636360961870, -0.529569223686674030, -0.529526809688462770, +-0.529484394366434800, -0.529441977720695900, -0.529399559751351670, -0.529357140458508900, -0.529314719842273300, -0.529272297902750880, -0.529229874640047340, -0.529187450054269480, +-0.529145024145523110, -0.529102596913914040, -0.529060168359548170, -0.529017738482532200, -0.528975307282971930, -0.528932874760973390, -0.528890440916642280, -0.528848005750085500, +-0.528805569261408650, -0.528763131450717850, -0.528720692318118910, -0.528678251863718530, -0.528635810087622620, -0.528593366989936750, -0.528550922570767860, -0.528508476830221620, +-0.528466029768404180, -0.528423581385421340, -0.528381131681379900, -0.528338680656385670, -0.528296228310544680, -0.528253774643962840, -0.528211319656746840, -0.528168863349002590, +-0.528126405720836130, -0.528083946772353370, -0.528041486503661010, -0.527999024914865060, -0.527956562006071440, -0.527914097777386070, -0.527871632228915870, -0.527829165360766520, +-0.527786697173043940, -0.527744227665854940, -0.527701756839305420, -0.527659284693501540, -0.527616811228548980, -0.527574336444554870, -0.527531860341624800, -0.527489382919865140, +-0.527446904179381670, -0.527404424120281320, -0.527361942742669900, -0.527319460046653530, -0.527276976032338250, -0.527234490699830860, -0.527192004049237270, -0.527149516080663630, +-0.527107026794215840, -0.527064536190000930, -0.527022044268124600, -0.526979551028693200, -0.526937056471812440, -0.526894560597589550, -0.526852063406130220, -0.526809564897540270, +-0.526767065071926940, -0.526724563929395820, -0.526682061470053360, -0.526639557694005280, -0.526597052601358810, -0.526554546192219640, -0.526512038466694140, -0.526469529424888120, +-0.526427019066908700, -0.526384507392861690, -0.526341994402853340, -0.526299480096989790, -0.526256964475377840, -0.526214447538123410, -0.526171929285332960, -0.526129409717112310, +-0.526086888833568470, -0.526044366634807470, -0.526001843120935120, -0.525959318292058550, -0.525916792148283680, -0.525874264689716760, -0.525831735916463930, -0.525789205828632090, +-0.525746674426327170, -0.525704141709655630, -0.525661607678723390, -0.525619072333637470, -0.525576535674503910, -0.525533997701428950, -0.525491458414518610, -0.525448917813880030, +-0.525406375899619140, -0.525363832671842280, -0.525321288130655590, -0.525278742276165890, -0.525236195108479410, -0.525193646627702180, -0.525151096833941010, -0.525108545727302260, +-0.525065993307892050, -0.525023439575816540, -0.524980884531182750, -0.524938328174096800, -0.524895770504664960, -0.524853211522993360, -0.524810651229189130, -0.524768089623358300, +-0.524725526705607130, -0.524682962476041850, -0.524640396934769600, -0.524597830081896200, -0.524555261917528330, -0.524512692441771900, -0.524470121654734170, -0.524427549556521040, +-0.524384976147238780, -0.524342401426994400, -0.524299825395893930, -0.524257248054044060, -0.524214669401550590, -0.524172089438520780, -0.524129508165060880, -0.524086925581277120, +-0.524044341687275650, -0.524001756483163720, -0.523959169969047460, -0.523916582145033230, -0.523873993011227170, -0.523831402567736410, -0.523788810814667330, -0.523746217752126150, +-0.523703623380219030, -0.523661027699053210, -0.523618430708734820, -0.523575832409370330, -0.523533232801066010, -0.523490631883928860, -0.523448029658065140, -0.523405426123580990, +-0.523362821280583650, -0.523320215129179370, -0.523277607669474400, -0.523234998901575100, -0.523192388825588610, -0.523149777441621280, -0.523107164749779360, -0.523064550750169220, +-0.523021935442898100, -0.522979318828072140, -0.522936700905797910, -0.522894081676181450, -0.522851461139330230, -0.522808839295350380, -0.522766216144348370, -0.522723591686430460, +-0.522680965921703990, -0.522638338850275110, -0.522595710472249950, -0.522553080787735880, -0.522510449796839140, -0.522467817499666310, -0.522425183896323530, -0.522382548986918160, +-0.522339912771556450, -0.522297275250344860, -0.522254636423389870, -0.522211996290798510, -0.522169354852677240, -0.522126712109132530, -0.522084068060270750, -0.522041422706199130, +-0.521998776047023940, -0.521956128082851860, -0.521913478813789020, -0.521870828239942910, -0.521828176361419650, -0.521785523178325610, -0.521742868690768140, -0.521700212898853600, +-0.521657555802688360, -0.521614897402378990, -0.521572237698032740, -0.521529576689755750, -0.521486914377654930, -0.521444250761836540, -0.521401585842407700, -0.521358919619475000, +-0.521316252093145030, -0.521273583263524020, -0.521230913130719450, -0.521188241694837570, -0.521145568955985070, -0.521102894914268310, -0.521060219569794650, -0.521017542922670550, +-0.520974864973002490, -0.520932185720896830, -0.520889505166461260, -0.520846823309801810, -0.520804140151024940, -0.520761455690238020, -0.520718769927547620, -0.520676082863060220, +-0.520633394496882170, -0.520590704829121180, -0.520548013859883250, -0.520505321589275430, -0.520462628017403840, -0.520419933144376070, -0.520377236970298470, -0.520334539495277750, +-0.520291840719420360, -0.520249140642833670, -0.520206439265624150, -0.520163736587898610, -0.520121032609763280, -0.520078327331325860, -0.520035620752692500, -0.519992912873969760, +-0.519950203695265010, -0.519907493216684950, -0.519864781438336030, -0.519822068360324740, -0.519779353982758760, -0.519736638305744350, -0.519693921329388300, -0.519651203053797080, +-0.519608483479078290, -0.519565762605338270, -0.519523040432683820, -0.519480316961221430, -0.519437592191058560, -0.519394866122301790, -0.519352138755057810, -0.519309410089433100, +-0.519266680125535230, -0.519223948863470790, -0.519181216303345900, -0.519138482445268500, -0.519095747289344820, -0.519053010835681780, -0.519010273084385850, -0.518967534035564610, +-0.518924793689324540, -0.518882052045772530, -0.518839309105014970, -0.518796564867159530, -0.518753819332312570, -0.518711072500581240, -0.518668324372071670, -0.518625574946891770, +-0.518582824225148010, -0.518540072206947090, -0.518497318892395590, -0.518454564281601190, -0.518411808374670380, -0.518369051171710060, -0.518326292672826710, -0.518283532878128120, +-0.518240771787720540, -0.518198009401710790, -0.518155245720206330, -0.518112480743313730, -0.518069714471139920, -0.518026946903791470, -0.517984178041376090, -0.517941407884000230, +-0.517898636431770810, -0.517855863684794420, -0.517813089643178850, -0.517770314307030470, -0.517727537676456300, -0.517684759751562920, -0.517641980532458020, -0.517599200019248200, +-0.517556418212040350, -0.517513635110941060, -0.517470850716058140, -0.517428065027498050, -0.517385278045367380, -0.517342489769773930, -0.517299700200824160, -0.517256909338625230, +-0.517214117183283690, -0.517171323734907150, -0.517128528993602400, -0.517085732959476240, -0.517042935632635370, -0.517000137013187590, -0.516957337101239480, -0.516914535896897950, +-0.516871733400269710, -0.516828929611462540, -0.516786124530583150, -0.516743318157738330, -0.516700510493034780, -0.516657701536580420, -0.516614891288481810, -0.516572079748845560, +-0.516529266917779560, -0.516486452795390290, -0.516443637381785000, -0.516400820677070160, -0.516358002681353680, -0.516315183394742140, -0.516272362817342790, -0.516229540949261990, +-0.516186717790607760, -0.516143893341486800, -0.516101067602006030, -0.516058240572272230, -0.516015412252393220, -0.515972582642475700, -0.515929751742626670, -0.515886919552952960, +-0.515844086073562250, -0.515801251304561340, -0.515758415246056920, -0.515715577898156920, -0.515672739260967910, -0.515629899334597020, -0.515587058119151060, -0.515544215614737840, +-0.515501371821464050, -0.515458526739436820, -0.515415680368762950, -0.515372832709550250, -0.515329983761905420, -0.515287133525935580, -0.515244282001747660, -0.515201429189449330, +-0.515158575089147420, -0.515115719700949160, -0.515072863024961140, -0.515030005061291370, -0.514987145810046560, -0.514944285271333960, -0.514901423445260240, -0.514858560331933330, +-0.514815695931459930, -0.514772830243947040, -0.514729963269502380, -0.514687095008232840, -0.514644225460245570, -0.514601354625647380, -0.514558482504546060, -0.514515609097048630, +-0.514472734403262240, -0.514429858423293580, -0.514386981157250570, -0.514344102605240220, -0.514301222767369560, -0.514258341643745400, -0.514215459234475870, -0.514172575539667660, +-0.514129690559428030, -0.514086804293863770, -0.514043916743082920, -0.514001027907192260, -0.513958137786298620, -0.513915246380510000, -0.513872353689933340, -0.513829459714675750, +-0.513786564454844050, -0.513743667910546490, -0.513700770081889630, -0.513657870968980860, -0.513614970571927070, -0.513572068890836290, -0.513529165925815210, -0.513486261676971310, +-0.513443356144411280, -0.513400449328243360, -0.513357541228574240, -0.513314631845511290, -0.513271721179161420, -0.513228809229632540, -0.513185895997031680, -0.513142981481465750, +-0.513100065683042670, -0.513057148601869460, -0.513014230238053370, -0.512971310591701310, -0.512928389662921420, -0.512885467451820510, -0.512842543958505930, -0.512799619183084590, +-0.512756693125664630, -0.512713765786352860, -0.512670837165256740, -0.512627907262483080, -0.512584976078140130, -0.512542043612334690, -0.512499109865174220, -0.512456174836765420, +-0.512413238527216760, -0.512370300936634830, -0.512327362065127300, -0.512284421912800880, -0.512241480479763810, -0.512198537766123010, -0.512155593771985610, -0.512112648497459520, +-0.512069701942651780, -0.512026754107669850, -0.511983804992620530, -0.511940854597612180, -0.511897902922751720, -0.511854949968146400, -0.511811995733903460, -0.511769040220130810, +-0.511726083426935600, -0.511683125354425170, -0.511640166002706560, -0.511597205371887910, -0.511554243462076230, -0.511511280273378890, -0.511468315805903020, -0.511425350059756760, +-0.511382383035047130, -0.511339414731881160, -0.511296445150366980, -0.511253474290611740, -0.511210502152722900, -0.511167528736807260, -0.511124554042973300, -0.511081578071327920, +-0.511038600821978490, -0.510995622295032260, -0.510952642490597460, -0.510909661408780910, -0.510866679049690300, -0.510823695413432530, -0.510780710500115980, -0.510737724309847540, +-0.510694736842734920, -0.510651748098885030, -0.510608758078406110, -0.510565766781405310, -0.510522774207989750, -0.510479780358267580, -0.510436785232345920, -0.510393788830332480, +-0.510350791152334060, -0.510307792198459010, -0.510264791968814580, -0.510221790463508130, -0.510178787682646790, -0.510135783626338820, -0.510092778294691460, -0.510049771687812180, +-0.510006763805808010, -0.509963754648787400, -0.509920744216857400, -0.509877732510125470, -0.509834719528698850, -0.509791705272685800, -0.509748689742193560, -0.509705672937329160, +-0.509662654858200950, -0.509619635504916180, -0.509576614877582210, -0.509533592976306400, -0.509490569801197000, -0.509447545352361030, -0.509404519629906400, -0.509361492633939930, +-0.509318464364570180, -0.509275434821904290, -0.509232404006049740, -0.509189371917113890, -0.509146338555204970, -0.509103303920430130, -0.509060268012897050, -0.509017230832713000, +-0.508974192379986200, -0.508931152654823920, -0.508888111657333830, -0.508845069387622970, -0.508802025845799810, -0.508758981031971700, -0.508715934946245670, -0.508672887588730190, +-0.508629838959532510, -0.508586789058760200, -0.508543737886520630, -0.508500685442922040, -0.508457631728071680, -0.508414576742077350, -0.508371520485046080, -0.508328462957086450, +-0.508285404158305700, -0.508242344088811420, -0.508199282748710850, -0.508156220138112460, -0.508113156257123610, -0.508070091105851770, -0.508027024684404420, -0.507983956992889780, +-0.507940888031415240, -0.507897817800088250, -0.507854746299016950, -0.507811673528308800, -0.507768599488071510, -0.507725524178412320, -0.507682447599439700, -0.507639369751261000, +-0.507596290633983930, -0.507553210247715600, -0.507510128592564720, -0.507467045668638540, -0.507423961476044630, -0.507380876014890570, -0.507337789285284610, -0.507294701287334230, +-0.507251612021146990, -0.507208521486830490, -0.507165429684492960, -0.507122336614241890, -0.507079242276184620, -0.507036146670429620, -0.506993049797084260, -0.506949951656256230, +-0.506906852248052990, -0.506863751572583010, -0.506820649629953550, -0.506777546420272620, -0.506734441943647360, -0.506691336200186360, -0.506648229189996970, -0.506605120913187100, +-0.506562011369864010, -0.506518900560136260, -0.506475788484111340, -0.506432675141896940, -0.506389560533600400, -0.506346444659330320, -0.506303327519194160, -0.506260209113299720, +-0.506217089441754360, -0.506173968504666670, -0.506130846302144000, -0.506087722834293820, -0.506044598101224820, -0.506001472103044250, -0.505958344839860020, -0.505915216311779600, +-0.505872086518911470, -0.505828955461363080, -0.505785823139242360, -0.505742689552656670, -0.505699554701714680, -0.505656418586523770, -0.505613281207191730, -0.505570142563826260, +-0.505527002656535720, -0.505483861485427680, -0.505440719050610050, -0.505397575352190210, -0.505354430390276830, -0.505311284164977280, -0.505268136676399250, -0.505224987924651200, +-0.505181837909840730, -0.505138686632075620, -0.505095534091463460, -0.505052380288112720, -0.505009225222131210, -0.504966068893626500, -0.504922911302706280, -0.504879752449479140, +-0.504836592334052650, -0.504793430956534730, -0.504750268317032740, -0.504707104415655580, -0.504663939252510630, -0.504620772827705790, -0.504577605141348640, -0.504534436193547870, +-0.504491265984410960, -0.504448094514045600, -0.504404921782560360, -0.504361747790062710, -0.504318572536660790, -0.504275396022462070, -0.504232218247575140, -0.504189039212107780, +-0.504145858916167810, -0.504102677359862690, -0.504059494543301460, -0.504016310466591340, -0.503973125129840490, -0.503929938533156370, -0.503886750676647900, -0.503843561560422540, +-0.503800371184588200, -0.503757179549252590, -0.503713986654524490, -0.503670792500511280, -0.503627597087320860, -0.503584400415061690, -0.503541202483841600, -0.503498003293768480, +-0.503454802844950030, -0.503411601137494840, -0.503368398171510690, -0.503325193947105620, -0.503281988464387100, -0.503238781723464030, -0.503195573724444010, -0.503152364467435050, +-0.503109153952544740, -0.503065942179881990, -0.503022729149554370, -0.502979514861669920, -0.502936299316336320, -0.502893082513662270, -0.502849864453755680, -0.502806645136724240, +-0.502763424562675980, -0.502720202731719470, -0.502676979643962410, -0.502633755299512490, -0.502590529698478730, -0.502547302840968490, -0.502504074727090020, -0.502460845356951010, +-0.502417614730660270, -0.502374382848325470, -0.502331149710054770, -0.502287915315955740, -0.502244679666137390, -0.502201442760707330, -0.502158204599773560, -0.502114965183444010, +-0.502071724511827360, -0.502028482585031410, -0.501985239403164310, -0.501941994966333630, -0.501898749274648390, -0.501855502328216300, -0.501812254127145030, -0.501769004671543510, +-0.501725753961519530, -0.501682501997181120, -0.501639248778636080, -0.501595994305993330, -0.501552738579360560, -0.501509481598846010, -0.501466223364557260, -0.501422963876603460, +-0.501379703135092170, -0.501336441140131650, -0.501293177891829590, -0.501249913390295010, -0.501206647635635720, -0.501163380627959730, -0.501120112367374970, -0.501076842853990230, +-0.501033572087913440, -0.500990300069252270, -0.500947026798115760, -0.500903752274611700, -0.500860476498848240, -0.500817199470933280, -0.500773921190975630, -0.500730641659083210, +-0.500687360875364140, -0.500644078839926340, -0.500600795552878620, -0.500557511014328990, -0.500514225224385600, -0.500470938183156240, -0.500427649890749950, -0.500384360347274510, +-0.500341069552838190, -0.500297777507548780, -0.500254484211515300, -0.500211189664845680, -0.500167893867648040, -0.500124596820030300, -0.500081298522101480, -0.500037998973969280, +-0.499994698175741830, -0.499951396127527980, -0.499908092829435660, -0.499864788281573050, -0.499821482484048120, -0.499778175436969900, -0.499734867140446180, -0.499691557594585330, +-0.499648246799495210, -0.499604934755284840, -0.499561621462062120, -0.499518306919935370, -0.499474991129012450, -0.499431674089402480, -0.499388355801213270, -0.499345036264553180, +-0.499301715479530170, -0.499258393446253170, -0.499215070164830240, -0.499171745635369260, -0.499128419857979290, -0.499085092832768250, -0.499041764559844500, -0.498998435039315960, +-0.498955104271291690, -0.498911772255879680, -0.498868438993188220, -0.498825104483325290, -0.498781768726400010, -0.498738431722520250, -0.498695093471794470, -0.498651753974330540, +-0.498608413230237580, -0.498565071239623630, -0.498521728002597030, -0.498478383519265660, -0.498435037789738740, -0.498391690814124270, -0.498348342592530140, -0.498304993125065540, +-0.498261642411838460, -0.498218290452957290, -0.498174937248530010, -0.498131582798665760, -0.498088227103472560, -0.498044870163058760, -0.498001511977532450, -0.497958152547002710, +-0.497914791871577610, -0.497871429951365520, -0.497828066786474450, -0.497784702377013670, -0.497741336723091070, -0.497697969824815120, -0.497654601682293920, -0.497611232295636530, +-0.497567861664951090, -0.497524489790345640, -0.497481116671929350, -0.497437742309810190, -0.497394366704096760, -0.497350989854897010, -0.497307611762320130, -0.497264232426474270, +-0.497220851847467840, -0.497177470025408850, -0.497134086960406560, -0.497090702652569110, -0.497047317102004840, -0.497003930308821950, -0.496960542273129580, -0.496917152995035860, +-0.496873762474649260, -0.496830370712077920, -0.496786977707430970, -0.496743583460816600, -0.496700187972343280, -0.496656791242119090, -0.496613393270253280, -0.496569994056854040, +-0.496526593602029440, -0.496483191905888690, -0.496439788968539960, -0.496396384790091790, -0.496352979370652260, -0.496309572710330660, -0.496266164809235130, -0.496222755667474260, +-0.496179345285156000, -0.496135933662389840, -0.496092520799283840, -0.496049106695946480, -0.496005691352486010, -0.495962274769011720, -0.495918856945631700, -0.495875437882454580, +-0.495832017579588450, -0.495788596037142650, -0.495745173255225380, -0.495701749233944830, -0.495658323973410250, -0.495614897473729830, -0.495571469735012200, -0.495528040757365510, +-0.495484610540899100, -0.495441179085721160, -0.495397746391940290, -0.495354312459664660, -0.495310877289003640, -0.495267440880065410, -0.495224003232958620, -0.495180564347791400, +-0.495137124224673150, -0.495093682863712080, -0.495050240265016870, -0.495006796428695610, -0.494963351354857750, -0.494919905043611550, -0.494876457495065150, -0.494833008709328000, +-0.494789558686508370, -0.494746107426714820, -0.494702654930055610, -0.494659201196640200, -0.494615746226576720, -0.494572290019973880, -0.494528832576939970, -0.494485373897584350, +-0.494441913982015260, -0.494398452830341400, -0.494354990442671060, -0.494311526819113610, -0.494268061959777350, -0.494224595864770910, -0.494181128534202600, -0.494137659968181870, +-0.494094190166816990, -0.494050719130216590, -0.494007246858489070, -0.493963773351743800, -0.493920298610089070, -0.493876822633633250, -0.493833345422485690, -0.493789866976754870, +-0.493746387296549290, -0.493702906381977390, -0.493659424233148620, -0.493615940850171300, -0.493572456233154100, -0.493528970382205390, -0.493485483297434640, -0.493441994978950140, +-0.493398505426860700, -0.493355014641274630, -0.493311522622301380, -0.493268029370049320, -0.493224534884627200, -0.493181039166143310, -0.493137542214707240, -0.493094044030427340, +-0.493050544613411910, -0.493007043963770540, -0.492963542081611530, -0.492920038967043670, -0.492876534620175330, -0.492833029041116030, -0.492789522229974190, -0.492746014186858540, +-0.492702504911877450, -0.492658994405140490, -0.492615482666756030, -0.492571969696832870, -0.492528455495479410, -0.492484940062805190, -0.492441423398918610, -0.492397905503928480, +-0.492354386377943210, -0.492310866021072380, -0.492267344433424350, -0.492223821615107580, -0.492180297566231660, -0.492136772286904940, -0.492093245777236340, -0.492049718037334270, +-0.492006189067308250, -0.491962658867266760, -0.491919127437318580, -0.491875594777572260, -0.491832060888137300, -0.491788525769122240, -0.491744989420635830, -0.491701451842786570, +-0.491657913035684010, -0.491614372999436720, -0.491570831734153500, -0.491527289239942820, -0.491483745516914320, -0.491440200565176400, -0.491396654384837650, -0.491353106976007590, +-0.491309558338794810, -0.491266008473308150, -0.491222457379656030, -0.491178905057948150, -0.491135351508293070, -0.491091796730799560, -0.491048240725576180, -0.491004683492732570, +-0.490961125032377320, -0.490917565344619170, -0.490874004429566800, -0.490830442287329750, -0.490786878918016590, -0.490743314321736290, -0.490699748498597270, -0.490656181448709260, +-0.490612613172180800, -0.490569043669120850, -0.490525472939637890, -0.490481900983841590, -0.490438327801840600, -0.490394753393743330, -0.490351177759659640, -0.490307600899697940, +-0.490264022813967300, -0.490220443502576150, -0.490176862965634340, -0.490133281203250340, -0.490089698215533160, -0.490046114002591350, -0.490002528564534580, -0.489958941901471550, +-0.489915354013511160, -0.489871764900761950, -0.489828174563333770, -0.489784583001335150, -0.489740990214875050, -0.489697396204062110, -0.489653800969006070, -0.489610204509815460, +-0.489566606826599030, -0.489523007919466460, -0.489479407788526330, -0.489435806433887730, -0.489392203855659180, -0.489348600053950530, -0.489304995028870370, -0.489261388780527720, +-0.489217781309031260, -0.489174172614490700, -0.489130562697014710, -0.489086951556712280, -0.489043339193692140, -0.488999725608063980, -0.488956110799936560, -0.488912494769418840, +-0.488868877516619500, -0.488825259041648360, -0.488781639344614050, -0.488738018425625250, -0.488694396284791830, -0.488650772922222420, -0.488607148338026040, -0.488563522532311450, +-0.488519895505188370, -0.488476267256765630, -0.488432637787152180, -0.488389007096456720, -0.488345375184789150, -0.488301742052258180, -0.488258107698972820, -0.488214472125041820, +-0.488170835330575040, -0.488127197315681160, -0.488083558080469270, -0.488039917625048110, -0.487996275949527550, -0.487952633054016320, -0.487908988938623440, -0.487865343603457740, +-0.487821697048629100, -0.487778049274246170, -0.487734400280417760, -0.487690750067253710, -0.487647098634862770, -0.487603445983354140, -0.487559792112836510, -0.487516137023419730, +-0.487472480715212650, -0.487428823188324370, -0.487385164442863620, -0.487341504478940310, -0.487297843296663310, -0.487254180896141700, -0.487210517277484210, -0.487166852440800820, +-0.487123186386200340, -0.487079519113791830, -0.487035850623684210, -0.486992180915987280, -0.486948509990809960, -0.486904837848260940, -0.486861164488450180, -0.486817489911486550, +-0.486773814117479220, -0.486730137106536950, -0.486686458878769710, -0.486642779434286350, -0.486599098773196010, -0.486555416895607550, -0.486511733801630930, -0.486468049491374950, +-0.486424363964948870, -0.486380677222461530, -0.486336989264022860, -0.486293300089741700, -0.486249609699727300, -0.486205918094088470, -0.486162225272935290, -0.486118531236376490, +-0.486074835984521000, -0.486031139517478780, -0.485987441835358750, -0.485943742938270080, -0.485900042826321710, -0.485856341499623590, -0.485812638958284580, -0.485768935202414040, +-0.485725230232120770, -0.485681524047514750, -0.485637816648704980, -0.485594108035800660, -0.485550398208910660, -0.485506687168145050, -0.485462974913612730, -0.485419261445423020, +-0.485375546763684720, -0.485331830868507950, -0.485288113760001580, -0.485244395438274580, -0.485200675903436960, -0.485156955155597650, -0.485113233194865930, -0.485069510021350790, +-0.485025785635162240, -0.484982060036409200, -0.484938333225201020, -0.484894605201646620, -0.484850875965856130, -0.484807145517938410, -0.484763413858002870, -0.484719680986158360, +-0.484675946902515090, -0.484632211607181900, -0.484588475100268200, -0.484544737381882920, -0.484500998452136180, -0.484457258311136950, -0.484413516958994590, -0.484369774395818020, +-0.484326030621717420, -0.484282285636801760, -0.484238539441180000, -0.484194792034962240, -0.484151043418257540, -0.484107293591175210, -0.484063542553824280, -0.484019790306314810, +-0.483976036848755950, -0.483932282181256950, -0.483888526303926870, -0.483844769216875860, -0.483801010920212940, -0.483757251414047520, -0.483713490698488510, -0.483669728773646220, +-0.483625965639629560, -0.483582201296548050, -0.483538435744510610, -0.483494668983627470, -0.483450901014007670, -0.483407131835760230, -0.483363361448995330, -0.483319589853822060, +-0.483275817050349780, -0.483232043038687550, -0.483188267818945640, -0.483144491391233060, -0.483100713755659270, -0.483056934912333260, -0.483013154861365310, -0.482969373602864520, +-0.482925591136940220, -0.482881807463701630, -0.482838022583258860, -0.482794236495721060, -0.482750449201197640, -0.482706660699797730, -0.482662870991631580, -0.482619080076808200, +-0.482575287955436800, -0.482531494627627510, -0.482487700093489510, -0.482443904353132220, -0.482400107406664840, -0.482356309254197540, -0.482312509895839510, -0.482268709331700180, +-0.482224907561888680, -0.482181104586515310, -0.482137300405689140, -0.482093495019519760, -0.482049688428116240, -0.482005880631588890, -0.481962071630046840, -0.481918261423599610, +-0.481874450012356350, -0.481830637396427400, -0.481786823575921790, -0.481743008550949090, -0.481699192321618560, -0.481655374888040390, -0.481611556250323810, -0.481567736408577920, +-0.481523915362913110, -0.481480093113438480, -0.481436269660263650, -0.481392445003497700, -0.481348619143251110, -0.481304792079632890, -0.481260963812752740, -0.481217134342719790, +-0.481173303669644390, -0.481129471793635740, -0.481085638714803370, -0.481041804433256560, -0.480997968949105630, -0.480954132262459750, -0.480910294373428530, -0.480866455282121190, +-0.480822614988648140, -0.480778773493118540, -0.480734930795641560, -0.480691086896327720, -0.480647241795286120, -0.480603395492626430, -0.480559547988457850, -0.480515699282890780, +-0.480471849376034490, -0.480427998267998590, -0.480384145958892230, -0.480340292448825980, -0.480296437737908980, -0.480252581826250860, -0.480208724713960920, -0.480164866401149530, +-0.480121006887925970, -0.480077146174399950, -0.480033284260680590, -0.479989421146878480, -0.479945556833102800, -0.479901691319462810, -0.479857824606069020, -0.479813956693030620, +-0.479770087580457420, -0.479726217268458540, -0.479682345757144520, -0.479638473046624600, -0.479594599137008530, -0.479550724028405590, -0.479506847720926220, -0.479462970214679710, +-0.479419091509775800, -0.479375211606323790, -0.479331330504434110, -0.479287448204216090, -0.479243564705779500, -0.479199680009233580, -0.479155794114688840, -0.479111907022254590, +-0.479068018732040250, -0.479024129244156220, -0.478980238558711860, -0.478936346675816860, -0.478892453595580690, -0.478848559318113710, -0.478804663843525380, -0.478760767171925390, +-0.478716869303423050, -0.478672970238128940, -0.478629069976152450, -0.478585168517603240, -0.478541265862590710, -0.478497362011225450, -0.478453456963616740, -0.478409550719874400, +-0.478365643280107830, -0.478321734644427510, -0.478277824812942840, -0.478233913785763630, -0.478190001562999230, -0.478146088144760230, -0.478102173531156030, -0.478058257722295990, +-0.478014340718290690, -0.477970422519249540, -0.477926503125282290, -0.477882582536498460, -0.477838660753008520, -0.477794737774921980, -0.477750813602348560, -0.477706888235397700, +-0.477662961674180040, -0.477619033918804950, -0.477575104969382270, -0.477531174826021480, -0.477487243488833150, -0.477443310957926640, -0.477399377233411910, -0.477355442315398340, +-0.477311506203996540, -0.477267568899315990, -0.477223630401466090, -0.477179690710557550, -0.477135749826699760, -0.477091807750002590, -0.477047864480575570, -0.477003920018529200, +-0.476959974363973080, -0.476916027517017000, -0.476872079477770490, -0.476828130246344130, -0.476784179822847490, -0.476740228207390370, -0.476696275400082300, -0.476652321401033920, +-0.476608366210354740, -0.476564409828154620, -0.476520452254543150, -0.476476493489630890, -0.476432533533527440, -0.476388572386342250, -0.476344610048185960, -0.476300646519168200, +-0.476256681799398840, -0.476212715888987340, -0.476168748788044440, -0.476124780496679720, -0.476080811015002990, -0.476036840343123880, -0.475992868481153080, -0.475948895429200050, +-0.475904921187374820, -0.475860945755786910, -0.475816969134547020, -0.475772991323764660, -0.475729012323549860, -0.475685032134012140, -0.475641050755262200, -0.475597068187409660, +-0.475553084430564430, -0.475509099484836160, -0.475465113350335480, -0.475421126027172010, -0.475377137515455350, -0.475333147815296230, -0.475289156926804290, -0.475245164850089390, +-0.475201171585261210, -0.475157177132430500, -0.475113181491706840, -0.475069184663200250, -0.475025186647020260, -0.474981187443277720, -0.474937187052082210, -0.474893185473543760, +-0.474849182707771930, -0.474805178754877490, -0.474761173614970170, -0.474717167288159880, -0.474673159774556320, -0.474629151074270230, -0.474585141187411240, -0.474541130114089050, +-0.474497117854414400, -0.474453104408496970, -0.474409089776446750, -0.474365073958373410, -0.474321056954387810, -0.474277038764599530, -0.474233019389118720, -0.474188998828054930, +-0.474144977081519040, -0.474100954149620670, -0.474056930032469960, -0.474012904730176540, -0.473968878242851220, -0.473924850570603680, -0.473880821713544060, -0.473836791671782000, +-0.473792760445428340, -0.473748728034592780, -0.473704694439385010, -0.473660659659915880, -0.473616623696295090, -0.473572586548632770, -0.473528548217038600, -0.473484508701623400, +-0.473440468002497010, -0.473396426119769400, -0.473352383053550320, -0.473308338803950680, -0.473264293371080220, -0.473220246755049030, -0.473176198955966800, -0.473132149973944480, +-0.473088099809091780, -0.473044048461518820, -0.472999995931335350, -0.472955942218652340, -0.472911887323579420, -0.472867831246226390, -0.472823773986704170, -0.472779715545122550, +-0.472735655921591610, -0.472691595116221110, -0.472647533129122050, -0.472603469960404200, -0.472559405610177620, -0.472515340078552120, -0.472471273365638710, -0.472427205471547100, +-0.472383136396387460, -0.472339066140269600, -0.472294994703304490, -0.472250922085601880, -0.472206848287271940, -0.472162773308424490, -0.472118697149170540, -0.472074619809619790, +-0.472030541289882530, -0.471986461590068520, -0.471942380710288770, -0.471898298650653030, -0.471854215411271150, -0.471810130992254160, -0.471766045393711810, -0.471721958615754390, +-0.471677870658491650, -0.471633781522034610, -0.471589691206493130, -0.471545599711977400, -0.471501507038597330, -0.471457413186463840, -0.471413318155686820, -0.471369221946376540, +-0.471325124558642780, -0.471281025992596640, -0.471236926248347900, -0.471192825326006870, -0.471148723225683350, -0.471104619947488420, -0.471060515491531940, -0.471016409857923810, +-0.470972303046775010, -0.470928195058195500, -0.470884085892295470, -0.470839975549184830, -0.470795864028974660, -0.470751751331774830, -0.470707637457695620, -0.470663522406846890, +-0.470619406179339780, -0.470575288775284150, -0.470531170194790290, -0.470487050437968120, -0.470442929504928720, -0.470398807395781990, -0.470354684110638300, -0.470310559649607440, +-0.470266434012800550, -0.470222307200327650, -0.470178179212298540, -0.470134050048824360, -0.470089919710015120, -0.470045788195981030, -0.470001655506832090, -0.469957521642679400, +-0.469913386603632910, -0.469869250389802980, -0.469825113001299480, -0.469780974438233630, -0.469736834700715310, -0.469692693788854920, -0.469648551702762430, -0.469604408442548920, +-0.469560264008324400, -0.469516118400199240, -0.469471971618283360, -0.469427823662687930, -0.469383674533522980, -0.469339524230898810, -0.469295372754925500, -0.469251220105714070, +-0.469207066283374660, -0.469162911288017130, -0.469118755119752760, -0.469074597778691480, -0.469030439264943700, -0.468986279578619440, -0.468942118719829880, -0.468897956688685060, +-0.468853793485295270, -0.468809629109770640, -0.468765463562222370, -0.468721296842760370, -0.468677128951495160, -0.468632959888536760, -0.468588789653996310, -0.468544618247983930, +-0.468500445670609940, -0.468456271921984520, -0.468412097002218750, -0.468367920911422760, -0.468323743649706580, -0.468279565217181450, -0.468235385613957390, -0.468191204840144870, +-0.468147022895853970, -0.468102839781195880, -0.468058655496280670, -0.468014470041218820, -0.467970283416120460, -0.467926095621096720, -0.467881906656257780, -0.467837716521714080, +-0.467793525217575670, -0.467749332743953860, -0.467705139100958680, -0.467660944288700700, -0.467616748307289940, -0.467572551156837710, -0.467528352837454090, -0.467484153349249200, +-0.467439952692334350, -0.467395750866819560, -0.467351547872815460, -0.467307343710432030, -0.467263138379780670, -0.467218931880971470, -0.467174724214114930, -0.467130515379321210, +-0.467086305376701590, -0.467042094206366170, -0.466997881868425560, -0.466953668362989790, -0.466909453690170280, -0.466865237850077160, -0.466821020842820960, -0.466776802668511740, +-0.466732583327260970, -0.466688362819178690, -0.466644141144375520, -0.466599918302961660, -0.466555694295048340, -0.466511469120745760, -0.466467242780164160, -0.466423015273414840, +-0.466378786600608000, -0.466334556761854150, -0.466290325757263540, -0.466246093586947520, -0.466201860251016230, -0.466157625749580360, -0.466113390082749990, -0.466069153250636530, +-0.466024915253350160, -0.465980676091001520, -0.465936435763700860, -0.465892194271559420, -0.465847951614687560, -0.465803707793195800, -0.465759462807194320, -0.465715216656794660, +-0.465670969342106890, -0.465626720863241360, -0.465582471220309380, -0.465538220413421240, -0.465493968442687530, -0.465449715308218550, -0.465405461010125640, -0.465361205548519120, +-0.465316948923509550, -0.465272691135207190, -0.465228432183723560, -0.465184172069168790, -0.465139910791653620, -0.465095648351288250, -0.465051384748184190, -0.465007119982451640, +-0.464962854054201350, -0.464918586963543490, -0.464874318710589540, -0.464830049295449800, -0.464785778718234570, -0.464741506979055250, -0.464697234078022160, -0.464652960015246030, +-0.464608684790837060, -0.464564408404906810, -0.464520130857565550, -0.464475852148923900, -0.464431572279092260, -0.464387291248182120, -0.464343009056303710, -0.464298725703567780, +-0.464254441190084630, -0.464210155515965780, -0.464165868681321590, -0.464121580686262690, -0.464077291530899440, -0.464033001215343350, -0.463988709739704740, -0.463944417104094010, +-0.463900123308622630, -0.463855828353400890, -0.463811532238539600, -0.463767234964149120, -0.463722936530340910, -0.463678636937225390, -0.463634336184913230, -0.463590034273514860, +-0.463545731203141850, -0.463501426973904450, -0.463457121585913510, -0.463412815039279340, -0.463368507334113560, -0.463324198470526470, -0.463279888448628940, -0.463235577268531260, +-0.463191264930345070, -0.463146951434180660, -0.463102636780148900, -0.463058320968360190, -0.463014003998926000, -0.462969685871956860, -0.462925366587563060, -0.462881046145856290, +-0.462836724546946850, -0.462792401790945660, -0.462748077877963020, -0.462703752808110600, -0.462659426581498830, -0.462615099198238460, -0.462570770658439930, -0.462526440962214900, +-0.462482110109673770, -0.462437778100927340, -0.462393444936086080, -0.462349110615261630, -0.462304775138564330, -0.462260438506105150, -0.462216100717994460, -0.462171761774343940, +-0.462127421675263990, -0.462083080420865100, -0.462038738011258940, -0.461994394446555880, -0.461950049726866820, -0.461905703852302290, -0.461861356822973910, -0.461817008638992110, +-0.461772659300467790, -0.461728308807511420, -0.461683957160234640, -0.461639604358748010, -0.461595250403162400, -0.461550895293588230, -0.461506539030137220, -0.461462181612919850, +-0.461417823042047040, -0.461373463317629300, -0.461329102439778260, -0.461284740408604450, -0.461240377224218460, -0.461196012886731840, -0.461151647396255250, -0.461107280752899530, +-0.461062912956775210, -0.461018544007993970, -0.460974173906666400, -0.460929802652903400, -0.460885430246815500, -0.460841056688514440, -0.460796681978110690, -0.460752306115715270, +-0.460707929101438650, -0.460663550935392630, -0.460619171617687730, -0.460574791148434910, -0.460530409527744710, -0.460486026755728920, -0.460441642832498000, -0.460397257758163040, +-0.460352871532834500, -0.460308484156624120, -0.460264095629642600, -0.460219705952000460, -0.460175315123809440, -0.460130923145180060, -0.460086530016223460, -0.460042135737050110, +-0.459997740307771800, -0.459953343728499160, -0.459908945999343180, -0.459864547120414410, -0.459820147091824670, -0.459775745913684530, -0.459731343586105070, -0.459686940109196860, +-0.459642535483071660, -0.459598129707840140, -0.459553722783613340, -0.459509314710501770, -0.459464905488617350, -0.459420495118070650, -0.459376083598972310, -0.459331670931434180, +-0.459287257115566840, -0.459242842151481370, -0.459198426039288400, -0.459154008779099790, -0.459109590371026110, -0.459065170815178500, -0.459020750111667540, -0.458976328260605080, +-0.458931905262101870, -0.458887481116268810, -0.458843055823216720, -0.458798629383057380, -0.458754201795901430, -0.458709773061860000, -0.458665343181043740, -0.458620912153564490, +-0.458576479979532990, -0.458532046659059890, -0.458487612192257090, -0.458443176579235220, -0.458398739820105430, -0.458354301914978390, -0.458309862863966020, -0.458265422667178960, +-0.458220981324728330, -0.458176538836724880, -0.458132095203280460, -0.458087650424505830, -0.458043204500512060, -0.457998757431409890, -0.457954309217311170, -0.457909859858326720, +-0.457865409354567650, -0.457820957706144620, -0.457776504913169620, -0.457732050975753310, -0.457687595894006540, -0.457643139668041100, -0.457598682297967850, -0.457554223783897930, +-0.457509764125942020, -0.457465303324212090, -0.457420841378818890, -0.457376378289873650, -0.457331914057487020, -0.457287448681771010, -0.457242982162836380, -0.457198514500794300, +-0.457154045695755520, -0.457109575747832010, -0.457065104657134570, -0.457020632423774390, -0.456976159047862260, -0.456931684529510050, -0.456887208868828660, -0.456842732065929290, +-0.456798254120922680, -0.456753775033920780, -0.456709294805034470, -0.456664813434374540, -0.456620330922053010, -0.456575847268180570, -0.456531362472868570, -0.456486876536227770, +-0.456442389458370120, -0.456397901239406540, -0.456353411879448220, -0.456308921378605960, -0.456264429736991770, -0.456219936954716520, -0.456175443031891450, -0.456130947968627350, +-0.456086451765036260, -0.456041954421229080, -0.455997455937317000, -0.455952956313410870, -0.455908455549622780, -0.455863953646063520, -0.455819450602843960, -0.455774946420076210, +-0.455730441097871090, -0.455685934636339880, -0.455641427035593400, -0.455596918295743780, -0.455552408416901810, -0.455507897399178910, -0.455463385242685810, -0.455418871947534660, +-0.455374357513836310, -0.455329841941702060, -0.455285325231242880, -0.455240807382570720, -0.455196288395796570, -0.455151768271031650, -0.455107247008386950, -0.455062724607974530, +-0.455018201069905310, -0.454973676394290150, -0.454929150581241230, -0.454884623630869460, -0.454840095543286080, -0.454795566318602070, -0.454751035956929560, -0.454706504458379460, +-0.454661971823063060, -0.454617438051091390, -0.454572903142576480, -0.454528367097629340, -0.454483829916361270, -0.454439291598883240, -0.454394752145307390, -0.454350211555744620, +-0.454305669830306350, -0.454261126969103480, -0.454216582972248260, -0.454172037839851490, -0.454127491572024700, -0.454082944168878730, -0.454038395630525840, -0.453993845957076920, +-0.453949295148643020, -0.453904743205336250, -0.453860190127267640, -0.453815635914548600, -0.453771080567289990, -0.453726524085604150, -0.453681966469601960, -0.453637407719394870, +-0.453592847835093850, -0.453548286816811090, -0.453503724664657600, -0.453459161378744870, -0.453414596959183790, -0.453370031406086620, -0.453325464719564420, -0.453280896899728500, +-0.453236327946689940, -0.453191757860560980, -0.453147186641452650, -0.453102614289475900, -0.453058040804743050, -0.453013466187365100, -0.452968890437453480, -0.452924313555119200, +-0.452879735540474560, -0.452835156393630590, -0.452790576114698750, -0.452745994703790010, -0.452701412161016730, -0.452656828486489910, -0.452612243680320990, -0.452567657742621090, +-0.452523070673502450, -0.452478482473076150, -0.452433893141453600, -0.452389302678745940, -0.452344711085065410, -0.452300118360523140, -0.452255524505230160, -0.452210929519298750, +-0.452166333402840010, -0.452121736155965460, -0.452077137778786160, -0.452032538271414430, -0.451987937633961330, -0.451943335866538400, -0.451898732969256700, -0.451854128942228590, +-0.451809523785565210, -0.451764917499377970, -0.451720310083778000, -0.451675701538877710, -0.451631091864788170, -0.451586481061620860, -0.451541869129486960, -0.451497256068498830, +-0.451452641878767550, -0.451408026560404240, -0.451363410113521270, -0.451318792538229760, -0.451274173834641250, -0.451229554002866960, -0.451184933043019150, -0.451140310955209010, +-0.451095687739548110, -0.451051063396147590, -0.451006437925119800, -0.450961811326575920, -0.450917183600627490, -0.450872554747385750, -0.450827924766962980, -0.450783293659470450, +-0.450738661425019620, -0.450694028063721770, -0.450649393575689280, -0.450604757961033280, -0.450560121219865330, -0.450515483352296740, -0.450470844358439870, -0.450426204238405850, +-0.450381562992305920, -0.450336920620252430, -0.450292277122356700, -0.450247632498730290, -0.450202986749484390, -0.450158339874731360, -0.450113691874582560, -0.450069042749149490, +-0.450024392498543420, -0.449979741122876750, -0.449935088622260780, -0.449890434996807030, -0.449845780246626860, -0.449801124371832620, -0.449756467372535500, -0.449711809248847290, +-0.449667150000879150, -0.449622489628743460, -0.449577828132551650, -0.449533165512414790, -0.449488501768445460, -0.449443836900754850, -0.449399170909454690, -0.449354503794656130, +-0.449309835556471750, -0.449265166195012830, -0.449220495710390910, -0.449175824102717390, -0.449131151372104740, -0.449086477518664150, -0.449041802542507420, -0.448997126443745790, +-0.448952449222491720, -0.448907770878856530, -0.448863091412951890, -0.448818410824889160, -0.448773729114780750, -0.448729046282738080, -0.448684362328872320, -0.448639677253296120, +-0.448594991056120720, -0.448550303737457800, -0.448505615297418780, -0.448460925736116070, -0.448416235053661070, -0.448371543250165480, -0.448326850325740660, -0.448282156280499060, +-0.448237461114552090, -0.448192764828011460, -0.448148067420988560, -0.448103368893595870, -0.448058669245944730, -0.448013968478146950, -0.447969266590313830, -0.447924563582557940, +-0.447879859454990650, -0.447835154207723740, -0.447790447840868520, -0.447745740354537570, -0.447701031748842290, -0.447656322023893990, -0.447611611179805360, -0.447566899216687630, +-0.447522186134652670, -0.447477471933811880, -0.447432756614277780, -0.447388040176161790, -0.447343322619575710, -0.447298603944630890, -0.447253884151440020, -0.447209163240114390, +-0.447164441210765870, -0.447119718063505870, -0.447074993798446950, -0.447030268415700540, -0.446985541915378480, -0.446940814297592140, -0.446896085562454190, -0.446851355710076000, +-0.446806624740569040, -0.446761892654045870, -0.446717159450618020, -0.446672425130397290, -0.446627689693495030, -0.446582953140024000, -0.446538215470095590, -0.446493476683821610, +-0.446448736781313580, -0.446403995762684080, -0.446359253628044570, -0.446314510377506970, -0.446269766011182680, -0.446225020529184340, -0.446180273931623460, -0.446135526218611910, +-0.446090777390261150, -0.446046027446683870, -0.446001276387991470, -0.445956524214295550, -0.445911770925708660, -0.445867016522342340, -0.445822261004308500, -0.445777504371718590, +-0.445732746624685370, -0.445687987763320250, -0.445643227787735130, -0.445598466698041600, -0.445553704494352280, -0.445508941176778640, -0.445464176745432710, -0.445419411200425940, +-0.445374644541871030, -0.445329876769879510, -0.445285107884563270, -0.445240337886033900, -0.445195566774404080, -0.445150794549785340, -0.445106021212289200, -0.445061246762028410, +-0.445016471199114530, -0.444971694523659420, -0.444926916735774720, -0.444882137835573120, -0.444837357823166190, -0.444792576698665840, -0.444747794462183650, -0.444703011113832370, +-0.444658226653723570, -0.444613441081969210, -0.444568654398680820, -0.444523866603971250, -0.444479077697951970, -0.444434287680735010, -0.444389496552431930, -0.444344704313155480, +-0.444299910963017300, -0.444255116502129340, -0.444210320930603200, -0.444165524248551660, -0.444120726456086250, -0.444075927553318710, -0.444031127540361670, -0.443986326417326880, +-0.443941524184326250, -0.443896720841471360, -0.443851916388875170, -0.443807110826649090, -0.443762304154905310, -0.443717496373755290, -0.443672687483312010, -0.443627877483686980, +-0.443583066374992230, -0.443538254157339440, -0.443493440830841410, -0.443448626395609780, -0.443403810851756620, -0.443358994199393450, -0.443314176438633250, -0.443269357569587630, +-0.443224537592368180, -0.443179716507087760, -0.443134894313858110, -0.443090071012791190, -0.443045246603998690, -0.443000421087593520, -0.442955594463687260, -0.442910766732391990, +-0.442865937893819450, -0.442821107948082440, -0.442776276895292640, -0.442731444735562200, -0.442686611469002730, -0.442641777095727110, -0.442596941615847060, -0.442552105029474670, +-0.442507267336721580, -0.442462428537700740, -0.442417588632523840, -0.442372747621302580, -0.442327905504149800, -0.442283062281177310, -0.442238217952497130, -0.442193372518221050, +-0.442148525978461880, -0.442103678333331420, -0.442058829582941790, -0.442013979727404640, -0.441969128766832970, -0.441924276701338490, -0.441879423531033320, -0.441834569256029150, +-0.441789713876439010, -0.441744857392374570, -0.441699999803947970, -0.441655141111270970, -0.441610281314456510, -0.441565420413616350, -0.441520558408862670, -0.441475695300307170, +-0.441430831088062800, -0.441385965772241430, -0.441341099352954680, -0.441296231830315630, -0.441251363204435980, -0.441206493475427900, -0.441161622643403200, -0.441116750708474840, +-0.441071877670754620, -0.441027003530354680, -0.440982128287386870, -0.440937251941964090, -0.440892374494198210, -0.440847495944201420, -0.440802616292085450, -0.440757735537963380, +-0.440712853681946900, -0.440667970724148370, -0.440623086664679480, -0.440578201503653230, -0.440533315241181500, -0.440488427877376130, -0.440443539412350040, -0.440398649846215130, +-0.440353759179083590, -0.440308867411067230, -0.440263974542279110, -0.440219080572831100, -0.440174185502835320, -0.440129289332403690, -0.440084392061649290, -0.440039493690683850, +-0.439994594219619730, -0.439949693648568670, -0.439904791977643820, -0.439859889206956960, -0.439814985336620390, -0.439770080366745920, -0.439725174297446730, -0.439680267128834510, +-0.439635358861021290, -0.439590449494120070, -0.439545539028242730, -0.439500627463501490, -0.439455714800008330, -0.439410801037876280, -0.439365886177217170, -0.439320970218143430, +-0.439276053160766790, -0.439231135005200450, -0.439186215751556310, -0.439141295399946560, -0.439096373950483230, -0.439051451403279340, -0.439006527758446840, -0.438961603016097990, +-0.438916677176344750, -0.438871750239300200, -0.438826822205076290, -0.438781893073784960, -0.438736962845539260, -0.438692031520451160, -0.438647099098632980, -0.438602165580196600, +-0.438557230965255280, -0.438512295253920880, -0.438467358446305690, -0.438422420542521730, -0.438377481542682130, -0.438332541446898820, -0.438287600255284180, -0.438242657967950090, +-0.438197714585009780, -0.438152770106575220, -0.438107824532758650, -0.438062877863672210, -0.438017930099428910, -0.437972981240140840, -0.437928031285920280, -0.437883080236879220, +-0.437838128093130880, -0.437793174854787250, -0.437748220521960270, -0.437703265094763150, -0.437658308573307840, -0.437613350957706760, -0.437568392248071920, -0.437523432444516470, +-0.437478471547152470, -0.437433509556092280, -0.437388546471447930, -0.437343582293332590, -0.437298617021858290, -0.437253650657137450, -0.437208683199282130, -0.437163714648405420, +-0.437118745004619500, -0.437073774268036670, -0.437028802438769020, -0.436983829516929770, -0.436938855502630950, -0.436893880395984590, -0.436848904197103930, -0.436803926906101040, +-0.436758948523088280, -0.436713969048177770, -0.436668988481482720, -0.436624006823115200, -0.436579024073187720, -0.436534040231812190, -0.436489055299102040, -0.436444069275169210, +-0.436399082160126180, -0.436354093954085090, -0.436309104657159160, -0.436264114269460490, -0.436219122791101480, -0.436174130222194310, -0.436129136562852180, -0.436084141813187220, +-0.436039145973311500, -0.435994149043338330, -0.435949151023379830, -0.435904151913548370, -0.435859151713956170, -0.435814150424716500, -0.435769148045941470, -0.435724144577743500, +-0.435679140020234830, -0.435634134373528710, -0.435589127637737220, -0.435544119812972920, -0.435499110899347950, -0.435454100896975560, -0.435409089805967930, -0.435364077626437580, +-0.435319064358496650, -0.435274050002258440, -0.435229034557835130, -0.435184018025339240, -0.435139000404882850, -0.435093981696579420, -0.435048961900540990, -0.435003941016879780, +-0.434958919045709100, -0.434913895987141140, -0.434868871841288420, -0.434823846608263180, -0.434778820288178660, -0.434733792881147110, -0.434688764387281050, -0.434643734806692720, +-0.434598704139495420, -0.434553672385801390, -0.434508639545723160, -0.434463605619372970, -0.434418570606864120, -0.434373534508308850, -0.434328497323819780, -0.434283459053509010, +-0.434238419697490050, -0.434193379255874980, -0.434148337728776150, -0.434103295116306800, -0.434058251418579230, -0.434013206635706030, -0.433968160767799430, -0.433923113814972840, +-0.433878065777338400, -0.433833016655008840, -0.433787966448096360, -0.433742915156714310, -0.433697862780975050, -0.433652809320991100, -0.433607754776874690, -0.433562699148739290, +-0.433517642436697210, -0.433472584640860970, -0.433427525761342860, -0.433382465798256400, -0.433337404751713730, -0.433292342621827140, -0.433247279408710110, -0.433202215112474860, +-0.433157149733234100, -0.433112083271100070, -0.433067015726186220, -0.433021947098604810, -0.432976877388468570, -0.432931806595889700, -0.432886734720981770, -0.432841661763856970, +-0.432796587724627980, -0.432751512603407160, -0.432706436400307930, -0.432661359115442680, -0.432616280748923940, -0.432571201300864130, -0.432526120771376750, -0.432481039160574070, +-0.432435956468568360, -0.432390872695473160, -0.432345787841400760, -0.432300701906463970, -0.432255614890774960, -0.432210526794447330, -0.432165437617593350, -0.432120347360325840, +-0.432075256022756980, -0.432030163605000460, -0.431985070107168470, -0.431939975529373850, -0.431894879871728870, -0.431849783134347130, -0.431804685317340900, -0.431759586420822910, +-0.431714486444905620, -0.431669385389702510, -0.431624283255325920, -0.431579180041888610, -0.431534075749502980, -0.431488970378282490, -0.431443863928339670, -0.431398756399786750, +-0.431353647792737330, -0.431308538107303800, -0.431263427343598900, -0.431218315501735060, -0.431173202581825840, -0.431128088583983600, -0.431082973508321140, -0.431037857354950820, +-0.430992740123986310, -0.430947621815539920, -0.430902502429724440, -0.430857381966652350, -0.430812260426437220, -0.430767137809191400, -0.430722014115027750, -0.430676889344058680, +-0.430631763496397760, -0.430586636572157460, -0.430541508571450130, -0.430496379494389460, -0.430451249341087860, -0.430406118111658080, -0.430360985806212630, -0.430315852424865140, +-0.430270717967727980, -0.430225582434914040, -0.430180445826535750, -0.430135308142706780, -0.430090169383539500, -0.430045029549146810, -0.429999888639641110, -0.429954746655136110, +-0.429909603595744260, -0.429864459461578420, -0.429819314252750990, -0.429774167969375680, -0.429729020611564980, -0.429683872179431270, -0.429638722673088340, -0.429593572092648590, +-0.429548420438224890, -0.429503267709929750, -0.429458113907876860, -0.429412959032178630, -0.429367803082948090, -0.429322646060297570, -0.429277487964340840, -0.429232328795190410, +-0.429187168552959190, -0.429142007237759580, -0.429096844849705390, -0.429051681388909090, -0.429006516855483580, -0.428961351249541380, -0.428916184571196180, -0.428871016820560560, +-0.428825847997747370, -0.428780678102869180, -0.428735507136039700, -0.428690335097371420, -0.428645161986976890, -0.428599987804969880, -0.428554812551462940, -0.428509636226568900, +-0.428464458830400410, -0.428419280363071200, -0.428374100824693740, -0.428328920215381050, -0.428283738535245650, -0.428238555784401290, -0.428193371962960530, -0.428148187071036410, +-0.428103001108741390, -0.428057814076189260, -0.428012625973492540, -0.427967436800764320, -0.427922246558117110, -0.427877055245664660, -0.427831862863519600, -0.427786669411794440, +-0.427741474890603050, -0.427696279300057940, -0.427651082640272180, -0.427605884911358260, -0.427560686113430070, -0.427515486246600130, -0.427470285310981470, -0.427425083306686720, +-0.427379880233829670, -0.427334676092522900, -0.427289470882879440, -0.427244264605011910, -0.427199057259034120, -0.427153848845058690, -0.427108639363198650, -0.427063428813566570, +-0.427018217196276360, -0.426973004511440600, -0.426927790759171920, -0.426882575939584120, -0.426837360052789940, -0.426792143098902340, -0.426746925078034020, -0.426701705990298720, +-0.426656485835809170, -0.426611264614678460, -0.426566042327019170, -0.426520818972945140, -0.426475594552569060, -0.426430369066004010, -0.426385142513362680, -0.426339914894758860, +-0.426294686210305250, -0.426249456460114920, -0.426204225644300550, -0.426158993762976000, -0.426113760816253960, -0.426068526804247170, -0.426023291727069430, -0.425978055584833480, +-0.425932818377652340, -0.425887580105638820, -0.425842340768906700, -0.425797100367568790, -0.425751858901738060, -0.425706616371527350, -0.425661372777050410, -0.425616128118420090, +-0.425570882395749470, -0.425525635609151240, -0.425480387758739310, -0.425435138844626410, -0.425389888866925640, -0.425344637825749770, -0.425299385721212670, -0.425254132553427140, +-0.425208878322506310, -0.425163623028562860, -0.425118366671710710, -0.425073109252062710, -0.425027850769731490, -0.424982591224831060, -0.424937330617474180, -0.424892068947773930, +-0.424846806215843140, -0.424801542421795690, -0.424756277565744410, -0.424711011647802450, -0.424665744668082550, -0.424620476626698660, -0.424575207523763600, -0.424529937359390540, +-0.424484666133692230, -0.424439393846782640, -0.424394120498774560, -0.424348846089781240, -0.424303570619915360, -0.424258294089290940, -0.424213016498020790, -0.424167737846217700, +-0.424122458133995680, -0.424077177361467490, -0.424031895528746370, -0.423986612635945110, -0.423941328683177740, -0.423896043670557050, -0.423850757598196240, -0.423805470466208090, +-0.423760182274706740, -0.423714893023804880, -0.423669602713615810, -0.423624311344252320, -0.423579018915828500, -0.423533725428457080, -0.423488430882251350, -0.423443135277324130, +-0.423397838613789490, -0.423352540891760280, -0.423307242111349290, -0.423261942272670610, -0.423216641375837090, -0.423171339420961910, -0.423126036408158050, -0.423080732337539460, +-0.423035427209219050, -0.422990121023310070, -0.422944813779925380, -0.422899505479179040, -0.422854196121183970, -0.422808885706053410, -0.422763574233900210, -0.422718261704838450, +-0.422672948118981100, -0.422627633476441330, -0.422582317777332130, -0.422537001021767500, -0.422491683209860360, -0.422446364341724000, -0.422401044417471390, -0.422355723437216500, +-0.422310401401072340, -0.422265078309151780, -0.422219754161568930, -0.422174428958436650, -0.422129102699868360, -0.422083775385976860, -0.422038447016876370, -0.421993117592679710, +-0.421947787113500280, -0.421902455579451000, -0.421857122990645980, -0.421811789347198150, -0.421766454649220800, -0.421721118896826950, -0.421675782090130740, -0.421630444229245000, +-0.421585105314283230, -0.421539765345358200, -0.421494424322584220, -0.421449082246074190, -0.421403739115941030, -0.421358394932298930, -0.421313049695260840, -0.421267703404940130, +-0.421222356061449750, -0.421177007664903900, -0.421131658215415540, -0.421086307713097960, -0.421040956158064310, -0.420995603550428590, -0.420950249890303880, -0.420904895177803610, +-0.420859539413040660, -0.420814182596129240, -0.420768824727182360, -0.420723465806313420, -0.420678105833635460, -0.420632744809262600, -0.420587382733307870, -0.420542019605884330, +-0.420496655427106130, -0.420451290197086270, -0.420405923915938170, -0.420360556583774860, -0.420315188200710620, -0.420269818766858320, -0.420224448282331520, -0.420179076747243200, +-0.420133704161707590, -0.420088330525837720, -0.420042955839747050, -0.419997580103548540, -0.419952203317356500, -0.419906825481284000, -0.419861446595444390, -0.419816066659950750, +-0.419770685674917320, -0.419725303640457240, -0.419679920556683460, -0.419634536423710290, -0.419589151241650800, -0.419543765010618410, -0.419498377730726240, -0.419452989402088470, +-0.419407600024818250, -0.419362209599029030, -0.419316818124833900, -0.419271425602347150, -0.419226032031681790, -0.419180637412951360, -0.419135241746268930, -0.419089845031748790, +-0.419044447269504070, -0.418999048459648190, -0.418953648602294340, -0.418908247697556750, -0.418862845745548550, -0.418817442746383220, -0.418772038700173880, -0.418726633607034830, +-0.418681227467079200, -0.418635820280420120, -0.418590412047171900, -0.418545002767447600, -0.418499592441360870, -0.418454181069024710, -0.418408768650553490, -0.418363355186060380, +-0.418317940675658860, -0.418272525119462110, -0.418227108517584380, -0.418181690870138960, -0.418136272177239250, -0.418090852438998520, -0.418045431655531040, -0.418000009826949960, +-0.417954586953368900, -0.417909163034900940, -0.417863738071660440, -0.417818312063760630, -0.417772885011314650, -0.417727456914436860, -0.417682027773240430, -0.417636597587838890, +-0.417591166358345480, -0.417545734084874550, -0.417500300767539300, -0.417454866406453300, -0.417409431001729720, -0.417363994553482940, -0.417318557061826250, -0.417273118526873100, +-0.417227678948736750, -0.417182238327531650, -0.417136796663370890, -0.417091353956368200, -0.417045910206636730, -0.417000465414290810, -0.416955019579443810, -0.416909572702208800, +-0.416864124782700300, -0.416818675821031490, -0.416773225817315960, -0.416727774771666950, -0.416682322684198970, -0.416636869555025100, -0.416591415384259140, -0.416545960172014170, +-0.416500503918404760, -0.416455046623544050, -0.416409588287545760, -0.416364128910523050, -0.416318668492590470, -0.416273207033861170, -0.416227744534448880, -0.416182280994466800, +-0.416136816414029500, -0.416091350793250050, -0.416045884132242310, -0.416000416431119400, -0.415954947689995910, -0.415909477908984970, -0.415864007088199980, -0.415818535227755410, +-0.415773062327764450, -0.415727588388340840, -0.415682113409597880, -0.415636637391650020, -0.415591160334610580, -0.415545682238593230, -0.415500203103711270, -0.415454722930079230, +-0.415409241717810350, -0.415363759467018370, -0.415318276177816580, -0.415272791850319570, -0.415227306484640510, -0.415181820080893220, -0.415136332639190920, -0.415090844159648250, +-0.415045354642378460, -0.414999864087494900, -0.414954372495112020, -0.414908879865343250, -0.414863386198302260, -0.414817891494102420, -0.414772395752858290, -0.414726898974683120, +-0.414681401159690710, -0.414635902307994410, -0.414590402419708740, -0.414544901494947050, -0.414499399533823140, -0.414453896536450320, -0.414408392502943150, -0.414362887433415040, +-0.414317381327979680, -0.414271874186750430, -0.414226366009841920, -0.414180856797367550, -0.414135346549440560, -0.414089835266175650, -0.414044322947686120, -0.413998809594085800, +-0.413953295205488070, -0.413907779782007490, -0.413862263323757470, -0.413816745830851760, -0.413771227303403820, -0.413725707741528230, -0.413680187145338330, -0.413634665514947990, +-0.413589142850470550, -0.413543619152020650, -0.413498094419711750, -0.413452568653657590, -0.413407041853971590, -0.413361514020768430, -0.413315985154161460, -0.413270455254264530, +-0.413224924321191070, -0.413179392355055690, -0.413133859355971800, -0.413088325324052870, -0.413042790259413590, -0.412997254162167260, -0.412951717032427830, -0.412906178870308730, +-0.412860639675924510, -0.412815099449388770, -0.412769558190815230, -0.412724015900317430, -0.412678472578009990, -0.412632928224006320, -0.412587382838420390, -0.412541836421365550, +-0.412496288972956540, -0.412450740493306820, -0.412405190982530260, -0.412359640440740300, -0.412314088868051650, -0.412268536264577770, -0.412222982630432170, -0.412177427965729480, +-0.412131872270583230, -0.412086315545107270, -0.412040757789415180, -0.411995199003621580, -0.411949639187839940, -0.411904078342184290, -0.411858516466767970, -0.411812953561705770, +-0.411767389627111180, -0.411721824663098150, -0.411676258669780140, -0.411630691647271900, -0.411585123595686890, -0.411539554515139130, -0.411493984405742030, -0.411448413267610390, +-0.411402841100857730, -0.411357267905597570, -0.411311693681944590, -0.411266118430012430, -0.411220542149914940, -0.411174964841765690, -0.411129386505679480, -0.411083807141769790, +-0.411038226750150560, -0.410992645330935320, -0.410947062884238930, -0.410901479410174850, -0.410855894908857100, -0.410810309380399200, -0.410764722824915940, -0.410719135242520850, +-0.410673546633327950, -0.410627956997450750, -0.410582366335004110, -0.410536774646101500, -0.410491181930856600, -0.410445588189384090, -0.410399993421797670, -0.410354397628211240, +-0.410308800808738380, -0.410263202963493940, -0.410217604092591500, -0.410172004196145080, -0.410126403274268190, -0.410080801327075750, -0.410035198354681270, -0.409989594357198840, +-0.409943989334741970, -0.409898383287425560, -0.409852776215363150, -0.409807168118668850, -0.409761558997456200, -0.409715948851840040, -0.409670337681934060, -0.409624725487852230, +-0.409579112269708110, -0.409533498027616680, -0.409487882761691510, -0.409442266472046180, -0.409396649158795590, -0.409351030822053430, -0.409305411461933670, -0.409259791078549980, +-0.409214169672017180, -0.409168547242449000, -0.409122923789959460, -0.409077299314662190, -0.409031673816672050, -0.408986047296102720, -0.408940419753068330, -0.408894791187682460, +-0.408849161600060020, -0.408803530990314630, -0.408757899358560440, -0.408712266704911120, -0.408666633029481530, -0.408620998332385350, -0.408575362613736280, -0.408529725873649220, +-0.408484088112237800, -0.408438449329616200, -0.408392809525898070, -0.408347168701198300, -0.408301526855630590, -0.408255883989309120, -0.408210240102347520, -0.408164595194860700, +-0.408118949266962410, -0.408073302318766710, -0.408027654350387400, -0.407982005361939350, -0.407936355353536230, -0.407890704325292290, -0.407845052277321150, -0.407799399209737790, +-0.407753745122655940, -0.407708090016189350, -0.407662433890452920, -0.407616776745560410, -0.407571118581625920, -0.407525459398763280, -0.407479799197087320, -0.407434137976711960, +-0.407388475737751170, -0.407342812480318840, -0.407297148204529890, -0.407251482910498010, -0.407205816598337490, -0.407160149268161960, -0.407114480920086510, -0.407068811554224860, +-0.407023141170691160, -0.406977469769599200, -0.406931797351064000, -0.406886123915199290, -0.406840449462119280, -0.406794773991937700, -0.406749097504769620, -0.406703420000728790, +-0.406657741479929000, -0.406612061942485280, -0.406566381388511420, -0.406520699818121560, -0.406475017231429590, -0.406429333628550440, -0.406383649009598000, -0.406337963374686420, +-0.406292276723929480, -0.406246589057442320, -0.406200900375338620, -0.406155210677732750, -0.406109519964738430, -0.406063828236470690, -0.406018135493043390, -0.405972441734570700, +-0.405926746961166600, -0.405881051172945980, -0.405835354370022720, -0.405789656552510700, -0.405743957720524910, -0.405698257874179240, -0.405652557013587930, -0.405606855138864850, +-0.405561152250125010, -0.405515448347482270, -0.405469743431050970, -0.405424037500944860, -0.405378330557279070, -0.405332622600167450, -0.405286913629724240, -0.405241203646063420, +-0.405195492649299940, -0.405149780639547760, -0.405104067616921080, -0.405058353581533860, -0.405012638533501170, -0.404966922472936860, -0.404921205399954850, -0.404875487314670270, +-0.404829768217196910, -0.404784048107649170, -0.404738326986140870, -0.404692604852787190, -0.404646881707701970, -0.404601157550999570, -0.404555432382793840, -0.404509706203199980, +-0.404463979012331830, -0.404418250810303750, -0.404372521597229640, -0.404326791373224580, -0.404281060138402590, -0.404235327892877920, -0.404189594636764570, -0.404143860370177580, +-0.404098125093230950, -0.404052388806038660, -0.404006651508715730, -0.403960913201376230, -0.403915173884134450, -0.403869433557104310, -0.403823692220400930, -0.403777949874138400, +-0.403732206518430950, -0.403686462153392600, -0.403640716779138540, -0.403594970395782630, -0.403549223003439320, -0.403503474602222520, -0.403457725192247480, -0.403411974773628110, +-0.403366223346478760, -0.403320470910913500, -0.403274717467047460, -0.403228963014994610, -0.403183207554869360, -0.403137451086785730, -0.403091693610858840, -0.403045935127202660, +-0.403000175635931320, -0.402954415137159900, -0.402908653631002480, -0.402862891117573400, -0.402817127596986680, -0.402771363069357570, -0.402725597534800030, -0.402679830993428520, +-0.402634063445357020, -0.402588294890700750, -0.402542525329573740, -0.402496754762090460, -0.402450983188364860, -0.402405210608512200, -0.402359437022646540, -0.402313662430882240, +-0.402267886833333420, -0.402222110230115280, -0.402176332621341840, -0.402130554007127160, -0.402084774387586550, -0.402038993762833970, -0.401993212132983950, -0.401947429498150430, +-0.401901645858448790, -0.401855861213992970, -0.401810075564897560, -0.401764288911276580, -0.401718501253245210, -0.401672712590917640, -0.401626922924408270, -0.401581132253831190, +-0.401535340579301680, -0.401489547900933770, -0.401443754218842040, -0.401397959533140560, -0.401352163843944510, -0.401306367151368140, -0.401260569455525350, -0.401214770756531610, +-0.401168971054500890, -0.401123170349547810, -0.401077368641786340, -0.401031565931331880, -0.400985762218298510, -0.400939957502800700, -0.400894151784952630, -0.400848345064869550, +-0.400802537342665630, -0.400756728618455400, -0.400710918892352890, -0.400665108164473480, -0.400619296434931380, -0.400573483703840940, -0.400527669971316450, -0.400481855237473150, +-0.400436039502425290, -0.400390222766287270, -0.400344405029173290, -0.400298586291198690, -0.400252766552477660, -0.400206945813124270, -0.400161124073253940, -0.400115301332980790, +-0.400069477592419400, -0.400023652851683900, -0.399977827110889690, -0.399932000370150920, -0.399886172629582150, -0.399840343889297510, -0.399794514149412420, -0.399748683410041050, +-0.399702851671297990, -0.399657018933297410, -0.399611185196154680, -0.399565350459983930, -0.399519514724899880, -0.399473677991016570, -0.399427840258449520, -0.399382001527312850, +-0.399336161797720750, -0.399290321069788680, -0.399244479343630830, -0.399198636619361720, -0.399152792897095650, -0.399106948176948030, -0.399061102459033030, -0.399015255743465250, +-0.398969408030358910, -0.398923559319829480, -0.398877709611991150, -0.398831858906958550, -0.398786007204845860, -0.398740154505768610, -0.398694300809840970, -0.398648446117177540, +-0.398602590427892640, -0.398556733742101600, -0.398510876059918810, -0.398465017381458340, -0.398419157706835780, -0.398373297036165310, -0.398327435369561610, -0.398281572707138930, +-0.398235709049012730, -0.398189844395297200, -0.398143978746107070, -0.398098112101556660, -0.398052244461761300, -0.398006375826835350, -0.397960506196893490, -0.397914635572049920, +-0.397868763952420210, -0.397822891338118540, -0.397777017729259660, -0.397731143125957860, -0.397685267528328560, -0.397639390936486150, -0.397593513350544770, -0.397547634770620110, +-0.397501755196826290, -0.397455874629278120, -0.397409993068089830, -0.397364110513377000, -0.397318226965253870, -0.397272342423835190, -0.397226456889235250, -0.397180570361569560, +-0.397134682840952440, -0.397088794327498610, -0.397042904821322370, -0.396997014322539310, -0.396951122831263710, -0.396905230347610270, -0.396859336871693390, -0.396813442403628590, +-0.396767546943530110, -0.396721650491512810, -0.396675753047690980, -0.396629854612180200, -0.396583955185094760, -0.396538054766549020, -0.396492153356658550, -0.396446250955537650, +-0.396400347563301170, -0.396354443180063410, -0.396308537805940000, -0.396262631441045180, -0.396216724085493800, -0.396170815739400160, -0.396124906402879950, -0.396078996076047460, +-0.396033084759017500, -0.395987172451904350, -0.395941259154823750, -0.395895344867889960, -0.395849429591217830, -0.395803513324921700, -0.395757596069117200, -0.395711677823918750, +-0.395665758589440640, -0.395619838365798560, -0.395573917153106910, -0.395527994951480440, -0.395482071761033560, -0.395436147581881950, -0.395390222414139960, -0.395344296257922390, +-0.395298369113343650, -0.395252440980519480, -0.395206511859564120, -0.395160581750592540, -0.395114650653719090, -0.395068718569059400, -0.395022785496727920, -0.394976851436839470, +-0.394930916389508500, -0.394884980354850650, -0.394839043332980310, -0.394793105324012020, -0.394747166328061340, -0.394701226345242740, -0.394655285375671070, -0.394609343419460800, +-0.394563400476727550, -0.394517456547585800, -0.394471511632150440, -0.394425565730535890, -0.394379618842857830, -0.394333670969230670, -0.394287722109769370, -0.394241772264588400, +-0.394195821433803330, -0.394149869617528790, -0.394103916815879530, -0.394057963028970060, -0.394012008256916120, -0.393966052499832130, -0.393920095757833040, -0.393874138031033270, +-0.393828179319548550, -0.393782219623493410, -0.393736258942982360, -0.393690297278130990, -0.393644334629053900, -0.393598370995866030, -0.393552406378681770, -0.393506440777616930, +-0.393460474192785960, -0.393414506624303830, -0.393368538072285000, -0.393322568536845220, -0.393276598018099060, -0.393230626516161360, -0.393184654031146720, -0.393138680563170860, +-0.393092706112348310, -0.393046730678793920, -0.393000754262622380, -0.392954776863949310, -0.392908798482889340, -0.392862819119556950, -0.392816838774067920, -0.392770857446536780, +-0.392724875137078490, -0.392678891845807620, -0.392632907572839920, -0.392586922318289950, -0.392540936082272700, -0.392494948864902660, -0.392448960666295700, -0.392402971486566330, +-0.392356981325829520, -0.392310990184199850, -0.392264998061793100, -0.392219004958723860, -0.392173010875107090, -0.392127015811057410, -0.392081019766690630, -0.392035022742121260, +-0.391989024737463940, -0.391943025752834460, -0.391897025788347400, -0.391851024844117820, -0.391805022920260200, -0.391759020016890500, -0.391713016134123240, -0.391667011272073430, +-0.391621005430855650, -0.391574998610585810, -0.391528990811378430, -0.391482982033348580, -0.391436972276610890, -0.391390961541281220, -0.391344949827474090, -0.391298937135304560, +-0.391252923464887330, -0.391206908816338180, -0.391160893189771760, -0.391114876585302700, -0.391068859003046890, -0.391022840443118860, -0.390976820905633790, -0.390930800390706270, +-0.390884778898452080, -0.390838756428986020, -0.390792732982423010, -0.390746708558877830, -0.390700683158466230, -0.390654656781302960, -0.390608629427503020, -0.390562601097181110, +-0.390516571790453070, -0.390470541507433650, -0.390424510248237820, -0.390378478012980370, -0.390332444801777090, -0.390286410614742730, -0.390240375451992360, -0.390194339313640610, +-0.390148302199803400, -0.390102264110595450, -0.390056225046131470, -0.390010185006527290, -0.389964143991897660, -0.389918102002357660, -0.389872059038022020, -0.389826015099006610, +-0.389779970185426210, -0.389733924297395840, -0.389687877435030310, -0.389641829598445400, -0.389595780787755970, -0.389549731003077100, -0.389503680244523480, -0.389457628512211110, +-0.389411575806254630, -0.389365522126769170, -0.389319467473869530, -0.389273411847671670, -0.389227355248290220, -0.389181297675840030, -0.389135239130436960, -0.389089179612195800, +-0.389043119121231740, -0.388997057657659410, -0.388950995221594880, -0.388904931813152830, -0.388858867432448460, -0.388812802079596560, -0.388766735754712990, -0.388720668457912640, +-0.388674600189310600, -0.388628530949021610, -0.388582460737161790, -0.388536389553845730, -0.388490317399188770, -0.388444244273305540, -0.388398170176312170, -0.388352095108323300, +-0.388306019069453830, -0.388259942059819730, -0.388213864079535790, -0.388167785128717140, -0.388121705207478680, -0.388075624315936340, -0.388029542454204900, -0.387983459622399660, +-0.387937375820635310, -0.387891291049027980, -0.387845205307692400, -0.387799118596743760, -0.387753030916296980, -0.387706942266468010, -0.387660852647371710, -0.387614762059123210, +-0.387568670501837460, -0.387522577975630440, -0.387476484480616950, -0.387430390016912260, -0.387384294584631190, -0.387338198183889760, -0.387292100814802860, -0.387246002477485310, +-0.387199903172053160, -0.387153802898621220, -0.387107701657304850, -0.387061599448218720, -0.387015496271479080, -0.386969392127200660, -0.386923287015498770, -0.386877180936488260, +-0.386831073890285150, -0.386784965877004390, -0.386738856896761240, -0.386692746949670540, -0.386646636035848370, -0.386600524155409630, -0.386554411308469570, -0.386508297495143040, +-0.386462182715546170, -0.386416066969793910, -0.386369950258001030, -0.386323832580283690, -0.386277713936756750, -0.386231594327535510, -0.386185473752734930, -0.386139352212471030, +-0.386093229706858780, -0.386047106236013460, -0.386000981800049940, -0.385954856399084390, -0.385908730033231730, -0.385862602702607190, -0.385816474407325750, -0.385770345147503520, +-0.385724214923255480, -0.385678083734696860, -0.385631951581942630, -0.385585818465108920, -0.385539684384310690, -0.385493549339662840, -0.385447413331281520, -0.385401276359281620, +-0.385355138423778610, -0.385308999524887290, -0.385262859662723890, -0.385216718837403330, -0.385170577049041010, -0.385124434297751780, -0.385078290583651950, -0.385032145906856360, +-0.384986000267480370, -0.384939853665638990, -0.384893706101448410, -0.384847557575023540, -0.384801408086479780, -0.384755257635932100, -0.384709106223496690, -0.384662953849288500, +-0.384616800513422510, -0.384570646216014940, -0.384524490957180780, -0.384478334737035350, -0.384432177555693700, -0.384386019413272000, -0.384339860309885260, -0.384293700245648910, +-0.384247539220677840, -0.384201377235088350, -0.384155214288995410, -0.384109050382514470, -0.384062885515760450, -0.384016719688849650, -0.383970552901897020, -0.383924385155018030, +-0.383878216448327700, -0.383832046781942220, -0.383785876155976590, -0.383739704570546290, -0.383693532025766340, -0.383647358521752910, -0.383601184058621150, -0.383555008636486010, +-0.383508832255463730, -0.383462654915669390, -0.383416476617218390, -0.383370297360225820, -0.383324117144807910, -0.383277935971079680, -0.383231753839156640, -0.383185570749153770, +-0.383139386701187410, -0.383093201695372590, -0.383047015731824760, -0.383000828810658940, -0.382954640931991550, -0.382908452095937490, -0.382862262302612280, -0.382816071552131040, +-0.382769879844610030, -0.382723687180164360, -0.382677493558909010, -0.382631298980960320, -0.382585103446433430, -0.382538906955443790, -0.382492709508106430, -0.382446511104537700, +-0.382400311744852730, -0.382354111429166980, -0.382307910157595520, -0.382261707930254710, -0.382215504747259630, -0.382169300608725780, -0.382123095514768250, -0.382076889465503390, +-0.382030682461046320, -0.381984474501512570, -0.381938265587017210, -0.381892055717676590, -0.381845844893605850, -0.381799633114920050, -0.381753420381735600, -0.381707206694167580, +-0.381660992052331560, -0.381614776456342670, -0.381568559906317220, -0.381522342402370370, -0.381476123944617720, -0.381429904533174270, -0.381383684168156490, -0.381337462849679560, +-0.381291240577858900, -0.381245017352809750, -0.381198793174648500, -0.381152568043490240, -0.381106341959450530, -0.381060114922644580, -0.381013886933188770, -0.380967657991198250, +-0.380921428096788530, -0.380875197250074900, -0.380828965451173620, -0.380782732700199970, -0.380736498997269080, -0.380690264342497360, -0.380644028735999950, -0.380597792177892470, +-0.380551554668290100, -0.380505316207309260, -0.380459076795065130, -0.380412836431673340, -0.380366595117249020, -0.380320352851908570, -0.380274109635767300, -0.380227865468940770, +-0.380181620351544130, -0.380135374283693870, -0.380089127265505140, -0.380042879297093630, -0.379996630378574510, -0.379950380510064190, -0.379904129691677970, -0.379857877923530980, +-0.379811625205739690, -0.379765371538419380, -0.379719116921685640, -0.379672861355653650, -0.379626604840439970, -0.379580347376159750, -0.379534088962928670, -0.379487829600861970, +-0.379441569290076050, -0.379395308030686270, -0.379349045822808210, -0.379302782666557090, -0.379256518562049450, -0.379210253509400520, -0.379163987508725930, -0.379117720560140980, +-0.379071452663762130, -0.379025183819704680, -0.378978914028083810, -0.378932643289016100, -0.378886371602616790, -0.378840098969001560, -0.378793825388285600, -0.378747550860585540, +-0.378701275386016610, -0.378654998964694510, -0.378608721596734420, -0.378562443282253020, -0.378516164021365450, -0.378469883814187500, -0.378423602660834470, -0.378377320561422810, +-0.378331037516067840, -0.378284753524885280, -0.378238468587990430, -0.378192182705499810, -0.378145895877528730, -0.378099608104192520, -0.378053319385607660, -0.378007029721889540, +-0.377960739113153870, -0.377914447559515860, -0.377868155061092230, -0.377821861617998130, -0.377775567230349440, -0.377729271898261390, -0.377682975621850600, -0.377636678401232330, +-0.377590380236522420, -0.377544081127836110, -0.377497781075290030, -0.377451480078999480, -0.377405178139080200, -0.377358875255647600, -0.377312571428818240, -0.377266266658707440, +-0.377219960945430920, -0.377173654289104150, -0.377127346689843660, -0.377081038147764720, -0.377034728662982880, -0.376988418235614580, -0.376942106865775230, -0.376895794553580630, +-0.376849481299146080, -0.376803167102588320, -0.376756851964022590, -0.376710535883564730, -0.376664218861330170, -0.376617900897435410, -0.376571581991995920, -0.376525262145127490, +-0.376478941356945480, -0.376432619627566520, -0.376386296957106070, -0.376339973345679810, -0.376293648793403210, -0.376247323300392960, -0.376200996866764340, -0.376154669492632820, +-0.376108341178115040, -0.376062011923326440, -0.376015681728382790, -0.375969350593399530, -0.375923018518493300, -0.375876685503779510, -0.375830351549374050, -0.375784016655392240, +-0.375737680821950860, -0.375691344049165210, -0.375645006337151250, -0.375598667686024350, -0.375552328095901220, -0.375505987566897240, -0.375459646099128300, -0.375413303692709810, +-0.375366960347758460, -0.375320616064389770, -0.375274270842719080, -0.375227924682863150, -0.375181577584937420, -0.375135229549057700, -0.375088880575339570, -0.375042530663899590, +-0.374996179814853280, -0.374949828028316560, -0.374903475304404820, -0.374857121643234810, -0.374810767044922000, -0.374764411509582280, -0.374718055037331130, -0.374671697628285230, +-0.374625339282560090, -0.374578980000271620, -0.374532619781535290, -0.374486258626467780, -0.374439896535184670, -0.374393533507801800, -0.374347169544434700, -0.374300804645200100, +-0.374254438810213470, -0.374208072039590280, -0.374161704333447360, -0.374115335691900200, -0.374068966115064680, -0.374022595603056400, -0.373976224155991970, -0.373929851773986970, +-0.373883478457157360, -0.373837104205618660, -0.373790729019487620, -0.373744352898879690, -0.373697975843910960, -0.373651597854696820, -0.373605218931354120, -0.373558839073998390, +-0.373512458282745540, -0.373466076557711140, -0.373419693899011970, -0.373373310306763570, -0.373326925781081450, -0.373280540322082470, -0.373234153929882070, -0.373187766604596350, +-0.373141378346340760, -0.373094989155232200, -0.373048599031386100, -0.373002207974918510, -0.372955815985945020, -0.372909423064582410, -0.372863029210946220, -0.372816634425152450, +-0.372770238707316680, -0.372723842057555770, -0.372677444475985160, -0.372631045962721010, -0.372584646517878810, -0.372538246141575440, -0.372491844833926440, -0.372445442595047420, +-0.372399039425055200, -0.372352635324065370, -0.372306230292193950, -0.372259824329556570, -0.372213417436270010, -0.372167009612449920, -0.372120600858212300, -0.372074191173672800, +-0.372027780558948200, -0.371981369014154130, -0.371934956539406670, -0.371888543134821390, -0.371842128800515200, -0.371795713536603620, -0.371749297343202830, -0.371702880220428360, +-0.371656462168397090, -0.371610043187224680, -0.371563623277026740, -0.371517202437920140, -0.371470780670020540, -0.371424357973443970, -0.371377934348306130, -0.371331509794723850, +-0.371285084312812820, -0.371238657902689060, -0.371192230564468260, -0.371145802298267270, -0.371099373104201770, -0.371052942982387890, -0.371006511932941150, -0.370960079955978630, +-0.370913647051615890, -0.370867213219969020, -0.370820778461153690, -0.370774342775286810, -0.370727906162484130, -0.370681468622861670, -0.370635030156535090, -0.370588590763621380, +-0.370542150444236160, -0.370495709198495170, -0.370449267026515370, -0.370402823928412340, -0.370356379904302260, -0.370309934954300810, -0.370263489078524970, -0.370217042277090400, +-0.370170594550113200, -0.370124145897709140, -0.370077696319995100, -0.370031245817086800, -0.369984794389100420, -0.369938342036151610, -0.369891888758357380, -0.369845434555833410, +-0.369798979428695880, -0.369752523377060490, -0.369706066401044200, -0.369659608500762740, -0.369613149676331850, -0.369566689927868450, -0.369520229255488390, -0.369473767659307730, +-0.369427305139442270, -0.369380841696008930, -0.369334377329123500, -0.369287912038902100, -0.369241445825460530, -0.369194978688915710, -0.369148510629383530, -0.369102041646980020, +-0.369055571741820960, -0.369009100914023450, -0.368962629163703150, -0.368916156490976310, -0.368869682895958670, -0.368823208378767200, -0.368776732939517680, -0.368730256578325980, +-0.368683779295309040, -0.368637301090582630, -0.368590821964262960, -0.368544341916465850, -0.368497860947308300, -0.368451379056906060, -0.368404896245375420, -0.368358412512832130, +-0.368311927859393150, -0.368265442285174440, -0.368218955790292070, -0.368172468374861890, -0.368125980039000990, -0.368079490782825090, -0.368033000606450500, -0.367986509509993010, +-0.367940017493569640, -0.367893524557296240, -0.367847030701288990, -0.367800535925663810, -0.367754040230537650, -0.367707543616026420, -0.367661046082245920, -0.367614547629313170, +-0.367568048257344130, -0.367521547966454920, -0.367475046756761400, -0.367428544628380700, -0.367382041581428680, -0.367335537616021500, -0.367289032732275090, -0.367242526930306510, +-0.367196020210231620, -0.367149512572166660, -0.367103004016227530, -0.367056494542531310, -0.367009984151193790, -0.366963472842331380, -0.366916960616059830, -0.366870447472496310, +-0.366823933411756680, -0.366777418433956840, -0.366730902539213810, -0.366684385727643500, -0.366637867999362270, -0.366591349354485950, -0.366544829793131690, -0.366498309315415330, +-0.366451787921453220, -0.366405265611361220, -0.366358742385256450, -0.366312218243254830, -0.366265693185472640, -0.366219167212025850, -0.366172640323031540, -0.366126112518605610, +-0.366079583798864410, -0.366033054163923840, -0.365986523613901050, -0.365939992148911990, -0.365893459769072500, -0.365846926474499730, -0.365800392265309690, -0.365753857141618680, +-0.365707321103542590, -0.365660784151198630, -0.365614246284702680, -0.365567707504171170, -0.365521167809719940, -0.365474627201466230, -0.365428085679525890, -0.365381543244015390, +-0.365334999895050580, -0.365288455632748750, -0.365241910457225700, -0.365195364368597950, -0.365148817366981350, -0.365102269452493080, -0.365055720625249160, -0.365009170885365550, +-0.364962620232959390, -0.364916068668146690, -0.364869516191043850, -0.364822962801766790, -0.364776408500432690, -0.364729853287157620, -0.364683297162057940, -0.364636740125249550, +-0.364590182176849740, -0.364543623316974490, -0.364497063545740130, -0.364450502863262750, -0.364403941269659530, -0.364357378765046420, -0.364310815349539910, -0.364264251023255880, +-0.364217685786311700, -0.364171119638823260, -0.364124552580907090, -0.364077984612679040, -0.364031415734256510, -0.363984845945755420, -0.363938275247291780, -0.363891703638982880, +-0.363845131120944740, -0.363798557693293720, -0.363751983356145950, -0.363705408109618600, -0.363658831953827750, -0.363612254888889820, -0.363565676914920810, -0.363519098032038020, +-0.363472518240357530, -0.363425937539995750, -0.363379355931068680, -0.363332773413693630, -0.363286189987986620, -0.363239605654064210, -0.363193020412042320, -0.363146434262038300, +-0.363099847204168210, -0.363053259238548090, -0.363006670365295210, -0.362960080584525670, -0.362913489896355910, -0.362866898300902020, -0.362820305798281340, -0.362773712388609840, +-0.362727118072004080, -0.362680522848580100, -0.362633926718455290, -0.362587329681745560, -0.362540731738567600, -0.362494132889037370, -0.362447533133272160, -0.362400932471388220, +-0.362354330903501890, -0.362307728429729300, -0.362261125050187820, -0.362214520764993550, -0.362167915574262530, -0.362121309478112160, -0.362074702476658520, -0.362028094570018110, +-0.361981485758307080, -0.361934876041642710, -0.361888265420141130, -0.361841653893918920, -0.361795041463092160, -0.361748428127778240, -0.361701813888093250, -0.361655198744153690, +-0.361608582696075710, -0.361561965743976700, -0.361515347887972790, -0.361468729128180510, -0.361422109464715980, -0.361375488897696610, -0.361328867427238460, -0.361282245053458180, +-0.361235621776471890, -0.361188997596396940, -0.361142372513349520, -0.361095746527445750, -0.361049119638803040, -0.361002491847537470, -0.360955863153765710, -0.360909233557603900, +-0.360862603059169400, -0.360815971658578370, -0.360769339355947460, -0.360722706151392740, -0.360676072045031660, -0.360629437036980470, -0.360582801127355630, -0.360536164316273390, +-0.360489526603851140, -0.360442887990205070, -0.360396248475451820, -0.360349608059707500, -0.360302966743089590, -0.360256324525714270, -0.360209681407697710, -0.360163037389157340, +-0.360116392470209430, -0.360069746650970470, -0.360023099931556790, -0.359976452312085750, -0.359929803792673590, -0.359883154373436930, -0.359836504054491910, -0.359789852835956100, +-0.359743200717945690, -0.359696547700577180, -0.359649893783966950, -0.359603238968232430, -0.359556583253489770, -0.359509926639855650, -0.359463269127446310, -0.359416610716379200, +-0.359369951406770580, -0.359323291198736630, -0.359276630092394910, -0.359229968087861620, -0.359183305185253380, -0.359136641384686430, -0.359089976686278340, -0.359043311090145310, +-0.358996644596404010, -0.358949977205170630, -0.358903308916562800, -0.358856639730696650, -0.358809969647688910, -0.358763298667655830, -0.358716626790714920, -0.358669954016982430, +-0.358623280346575090, -0.358576605779609090, -0.358529930316202010, -0.358483253956470130, -0.358436576700530090, -0.358389898548498180, -0.358343219500491970, -0.358296539556627660, +-0.358249858717021640, -0.358203176981791380, -0.358156494351053180, -0.358109810824923710, -0.358063126403519340, -0.358016441086957520, -0.357969754875354650, -0.357923067768827370, +-0.357876379767491980, -0.357829690871466100, -0.357783001080865970, -0.357736310395808330, -0.357689618816409540, -0.357642926342787050, -0.357596232975057330, -0.357549538713336950, +-0.357502843557742370, -0.357456147508391050, -0.357409450565399360, -0.357362752728883630, -0.357316053998961490, -0.357269354375749140, -0.357222653859363470, -0.357175952449920680, +-0.357129250147538490, -0.357082546952333160, -0.357035842864421420, -0.356989137883919730, -0.356942432010945550, -0.356895725245615300, -0.356849017588045770, -0.356802309038353250, +-0.356755599596655370, -0.356708889263068480, -0.356662178037709390, -0.356615465920694430, -0.356568752912141240, -0.356522039012166170, -0.356475324220885570, -0.356428608538417070, +-0.356381891964877070, -0.356335174500382320, -0.356288456145049230, -0.356241736898995410, -0.356195016762337280, -0.356148295735191580, -0.356101573817674710, -0.356054851009904310, +-0.356008127311996820, -0.355961402724069010, -0.355914677246237270, -0.355867950878619220, -0.355821223621331340, -0.355774495474490420, -0.355727766438212800, -0.355681036512616180, +-0.355634305697816950, -0.355587573993931590, -0.355540841401077670, -0.355494107919371690, -0.355447373548930410, -0.355400638289870290, -0.355353902142309000, -0.355307165106362950, +-0.355260427182148950, -0.355213688369783510, -0.355166948669384250, -0.355120208081067650, -0.355073466604950480, -0.355026724241149230, -0.354979980989781620, -0.354933236850964010, +-0.354886491824813350, -0.354839745911446070, -0.354792999110979780, -0.354746251423531000, -0.354699502849216640, -0.354652753388153050, -0.354606003040458030, -0.354559251806247980, +-0.354512499685639420, -0.354465746678749970, -0.354418992785696220, -0.354372238006594950, -0.354325482341562690, -0.354278725790717120, -0.354231968354174700, -0.354185210032052440, +-0.354138450824466710, -0.354091690731535240, -0.354044929753374540, -0.353998167890101520, -0.353951405141832710, -0.353904641508685780, -0.353857876990777250, -0.353811111588223980, +-0.353764345301142590, -0.353717578129650710, -0.353670810073864860, -0.353624041133901610, -0.353577271309878700, -0.353530500601912550, -0.353483729010120210, -0.353436956534618040, +-0.353390183175523950, -0.353343408932954410, -0.353296633807026360, -0.353249857797856280, -0.353203080905562020, -0.353156303130259970, -0.353109524472067230, -0.353062744931100240, +-0.353015964507476800, -0.352969183201313490, -0.352922401012727200, -0.352875617941834470, -0.352828833988753140, -0.352782049153599670, -0.352735263436490700, -0.352688476837544010, +-0.352641689356876120, -0.352594900994604000, -0.352548111750844160, -0.352501321625714510, -0.352454530619331570, -0.352407738731812250, -0.352360945963273220, -0.352314152313832230, +-0.352267357783605850, -0.352220562372711040, -0.352173766081264440, -0.352126968909383890, -0.352080170857185850, -0.352033371924787400, -0.351986572112305110, -0.351939771419856830, +-0.351892969847559080, -0.351846167395528930, -0.351799364063882900, -0.351752559852738960, -0.351705754762213550, -0.351658948792423380, -0.351612141943486220, -0.351565334215518720, +-0.351518525608637890, -0.351471716122960350, -0.351424905758603910, -0.351378094515685190, -0.351331282394321260, -0.351284469394628710, -0.351237655516725370, -0.351190840760727930, +-0.351144025126753360, -0.351097208614918330, -0.351050391225340710, -0.351003572958137060, -0.350956753813424500, -0.350909933791319680, -0.350863112891940390, -0.350816291115403360, +-0.350769468461825160, -0.350722644931323710, -0.350675820524015640, -0.350628995240018000, -0.350582169079447500, -0.350535342042421980, -0.350488514129058070, -0.350441685339472950, +-0.350394855673783150, -0.350348025132106610, -0.350301193714560030, -0.350254361421260480, -0.350207528252324600, -0.350160694207870330, -0.350113859288014310, -0.350067023492873610, +-0.350020186822564970, -0.349973349277206250, -0.349926510856914170, -0.349879671561805440, -0.349832831391997890, -0.349785990347608320, -0.349739148428753750, -0.349692305635550870, +-0.349645461968117630, -0.349598617426570780, -0.349551772011027380, -0.349504925721604130, -0.349458078558418930, -0.349411230521588620, -0.349364381611230180, -0.349317531827460390, +-0.349270681170397170, -0.349223829640157250, -0.349176977236857760, -0.349130123960615430, -0.349083269811548190, -0.349036414789772760, -0.348989558895405890, -0.348942702128565540, +-0.348895844489368450, -0.348848985977931740, -0.348802126594372150, -0.348755266338807660, -0.348708405211354990, -0.348661543212131280, -0.348614680341253370, -0.348567816598839120, +-0.348520951985005320, -0.348474086499869160, -0.348427220143547380, -0.348380352916157990, -0.348333484817817670, -0.348286615848643680, -0.348239746008752680, -0.348192875298262760, +-0.348146003717290650, -0.348099131265953540, -0.348052257944368170, -0.348005383752652610, -0.347958508690923540, -0.347911632759297820, -0.347864755957893400, -0.347817878286827140, +-0.347770999746216170, -0.347724120336177220, -0.347677240056828430, -0.347630358908286590, -0.347583476890668760, -0.347536594004091870, -0.347489710248673920, -0.347442825624531710, +-0.347395940131782380, -0.347349053770542810, -0.347302166540931050, -0.347255278443063860, -0.347208389477058450, -0.347161499643031670, -0.347114608941101580, -0.347067717371384920, +-0.347020824933998550, -0.346973931629060540, -0.346927037456687740, -0.346880142416997330, -0.346833246510106110, -0.346786349736132260, -0.346739452095192470, -0.346692553587404080, +-0.346645654212883900, -0.346598753971750000, -0.346551852864119160, -0.346504950890108740, -0.346458048049835540, -0.346411144343417580, -0.346364239770971800, -0.346317334332615410, +-0.346270428028465300, -0.346223520858639500, -0.346176612823254900, -0.346129703922428370, -0.346082794156277960, -0.346035883524920600, -0.345988972028473510, -0.345942059667053600, +-0.345895146440778960, -0.345848232349766420, -0.345801317394133280, -0.345754401573996510, -0.345707484889474060, -0.345660567340682960, -0.345613648927740440, -0.345566729650763350, +-0.345519809509869880, -0.345472888505176880, -0.345425966636801640, -0.345379043904861130, -0.345332120309473360, -0.345285195850755290, -0.345238270528824280, -0.345191344343797110, +-0.345144417295792040, -0.345097489384925960, -0.345050560611315670, -0.345003630975079410, -0.344956700476334090, -0.344909769115197050, -0.344862836891785150, -0.344815903806216520, +-0.344768969858608220, -0.344722035049077450, -0.344675099377741160, -0.344628162844717530, -0.344581225450123540, -0.344534287194076470, -0.344487348076693230, -0.344440408098092070, +-0.344393467258389870, -0.344346525557704060, -0.344299582996151430, -0.344252639573850330, -0.344205695290917600, -0.344158750147470220, -0.344111804143626410, -0.344064857279503030, +-0.344017909555217550, -0.343970960970886860, -0.343924011526629210, -0.343877061222561510, -0.343830110058801150, -0.343783158035465160, -0.343736205152671610, -0.343689251410537580, +-0.343642296809180460, -0.343595341348717110, -0.343548385029265880, -0.343501427850943670, -0.343454469813867850, -0.343407510918155520, -0.343360551163924780, -0.343313590551292620, +-0.343266629080376140, -0.343219666751293510, -0.343172703564161630, -0.343125739519098080, -0.343078774616219720, -0.343031808855644830, -0.342984842237490430, -0.342937874761873930, +-0.342890906428912350, -0.342843937238723860, -0.342796967191425610, -0.342749996287134870, -0.342703024525968740, -0.342656051908045490, -0.342609078433482090, -0.342562104102396010, +-0.342515128914904270, -0.342468152871125090, -0.342421175971175500, -0.342374198215172620, -0.342327219603234590, -0.342280240135478590, -0.342233259812021960, -0.342186278632981730, +-0.342139296598476250, -0.342092313708622530, -0.342045329963538040, -0.341998345363339780, -0.341951359908146070, -0.341904373598073960, -0.341857386433240930, -0.341810398413764040, +-0.341763409539761530, -0.341716419811350540, -0.341669429228648460, -0.341622437791772370, -0.341575445500840680, -0.341528452355970290, -0.341481458357278830, -0.341434463504883270, +-0.341387467798902000, -0.341340471239452050, -0.341293473826650540, -0.341246475560615710, -0.341199476441464700, -0.341152476469315010, -0.341105475644283730, -0.341058473966489140, +-0.341011471436048370, -0.340964468053078950, -0.340917463817697940, -0.340870458730023640, -0.340823452790173230, -0.340776445998264180, -0.340729438354413610, -0.340682429858739870, +-0.340635420511360030, -0.340588410312391680, -0.340541399261951820, -0.340494387360158910, -0.340447374607130040, -0.340400361002982320, -0.340353346547834110, -0.340306331241802540, +-0.340259315085005120, -0.340212298077559040, -0.340165280219582590, -0.340118261511192950, -0.340071241952507650, -0.340024221543643870, -0.339977200284719890, -0.339930178175852970, +-0.339883155217160560, -0.339836131408759850, -0.339789106750769230, -0.339742081243305850, -0.339695054886487270, -0.339648027680430680, -0.339600999625254360, -0.339553970721075570, +-0.339506940968011480, -0.339459910366180400, -0.339412878915699550, -0.339365846616686510, -0.339318813469258460, -0.339271779473533760, -0.339224744629629590, -0.339177708937663640, +-0.339130672397752910, -0.339083635010015980, -0.339036596774569930, -0.338989557691532440, -0.338942517761020580, -0.338895476983152870, -0.338848435358046430, -0.338801392885818950, +-0.338754349566587560, -0.338707305400470730, -0.338660260387585570, -0.338613214528049820, -0.338566167821980570, -0.338519120269496380, -0.338472071870714320, -0.338425022625751750, +-0.338377972534726960, -0.338330921597757290, -0.338283869814960280, -0.338236817186453210, -0.338189763712354490, -0.338142709392781350, -0.338095654227851480, -0.338048598217682020, +-0.338001541362391470, -0.337954483662097130, -0.337907425116916520, -0.337860365726966980, -0.337813305492366880, -0.337766244413233550, -0.337719182489684630, -0.337672119721837300, +-0.337625056109810140, -0.337577991653720270, -0.337530926353685030, -0.337483860209822910, -0.337436793222251170, -0.337389725391087360, -0.337342656716448920, -0.337295587198454150, +-0.337248516837220510, -0.337201445632865530, -0.337154373585506480, -0.337107300695261960, -0.337060226962249190, -0.337013152386585860, -0.336966076968389210, -0.336919000707777800, +-0.336871923604868890, -0.336824845659780160, -0.336777766872628890, -0.336730687243533670, -0.336683606772611670, -0.336636525459980240, -0.336589443305757960, -0.336542360310062020, +-0.336495276473010250, -0.336448191794719800, -0.336401106275309340, -0.336354019914896050, -0.336306932713597790, -0.336259844671531750, -0.336212755788816490, -0.336165666065569360, +-0.336118575501908050, -0.336071484097949900, -0.336024391853813440, -0.335977298769616020, -0.335930204845475370, -0.335883110081508730, -0.335836014477834790, -0.335788918034570780, +-0.335741820751834120, -0.335694722629743260, -0.335647623668415610, -0.335600523867968900, -0.335553423228520440, -0.335506321750188910, -0.335459219433091540, -0.335412116277346070, +-0.335365012283069970, -0.335317907450381700, -0.335270801779398660, -0.335223695270238650, -0.335176587923018960, -0.335129479737858280, -0.335082370714873850, -0.335035260854183500, +-0.334988150155904550, -0.334941038620155670, -0.334893926247054220, -0.334846813036717930, -0.334799698989264150, -0.334752584104811570, -0.334705468383477530, -0.334658351825379450, +-0.334611234430635840, -0.334564116199364160, -0.334516997131682200, -0.334469877227707320, -0.334422756487558200, -0.334375634911352190, -0.334328512499207030, -0.334281389251240240, +-0.334234265167570320, -0.334187140248314810, -0.334140014493591430, -0.334092887903517600, -0.334045760478211940, -0.333998632217791860, -0.333951503122375260, -0.333904373192079440, +-0.333857242427023140, -0.333810110827323700, -0.333762978393098600, -0.333715845124466450, -0.333668711021544660, -0.333621576084451140, -0.333574440313303240, -0.333527303708219700, +-0.333480166269317870, -0.333433027996715590, -0.333385888890530340, -0.333338748950880780, -0.333291608177884390, -0.333244466571658960, -0.333197324132321950, -0.333150180859992040, +-0.333103036754786640, -0.333055891816823710, -0.333008746046220610, -0.332961599443096060, -0.332914452007567530, -0.332867303739752430, -0.332820154639769440, -0.332773004707736130, +-0.332725853943770300, -0.332678702347989410, -0.332631549920512190, -0.332584396661456120, -0.332537242570938970, -0.332490087649078390, -0.332442931895992940, -0.332395775311800200, +-0.332348617896618010, -0.332301459650563900, -0.332254300573756490, -0.332207140666313410, -0.332159979928352390, -0.332112818359991070, -0.332065655961348070, -0.332018492732540970, +-0.331971328673687620, -0.331924163784905520, -0.331876998066313430, -0.331829831518028860, -0.331782664140169270, -0.331735495932853510, -0.331688326896198930, -0.331641157030323540, +-0.331593986335344870, -0.331546814811381650, -0.331499642458551400, -0.331452469276972030, -0.331405295266761050, -0.331358120428037250, -0.331310944760918210, -0.331263768265521730, +-0.331216590941965480, -0.331169412790368100, -0.331122233810847270, -0.331075054003520770, -0.331027873368506310, -0.330980691905922500, -0.330933509615887020, -0.330886326498517290, +-0.330839142553932210, -0.330791957782249240, -0.330744772183586390, -0.330697585758061240, -0.330650398505792480, -0.330603210426897720, -0.330556021521494990, -0.330508831789701750, +-0.330461641231636850, -0.330414449847417860, -0.330367257637162740, -0.330320064600989060, -0.330272870739015620, -0.330225676051360000, -0.330178480538140200, -0.330131284199473800, +-0.330084087035479590, -0.330036889046275150, -0.329989690231978110, -0.329942490592707250, -0.329895290128580150, -0.329848088839714840, -0.329800886726228870, -0.329753683788241100, +-0.329706480025869110, -0.329659275439230960, -0.329612070028444170, -0.329564863793627650, -0.329517656734898970, -0.329470448852376090, -0.329423240146176740, -0.329376030616419680, +-0.329328820263222520, -0.329281609086703340, -0.329234397086979710, -0.329187184264170540, -0.329139970618393400, -0.329092756149765850, -0.329045540858406930, -0.328998324744434080, +-0.328951107807965440, -0.328903890049118630, -0.328856671468012450, -0.328809452064764640, -0.328762231839493210, -0.328715010792315800, -0.328667788923351250, -0.328620566232717180, +-0.328573342720531790, -0.328526118386912540, -0.328478893231978490, -0.328431667255847160, -0.328384440458636680, -0.328337212840464630, -0.328289984401450020, -0.328242755141710420, +-0.328195525061363960, -0.328148294160528260, -0.328101062439322240, -0.328053829897863580, -0.328006596536269900, -0.327959362354660170, -0.327912127353152010, -0.327864891531863540, +-0.327817654890912470, -0.327770417430417630, -0.327723179150496760, -0.327675940051267930, -0.327628700132848840, -0.327581459395358430, -0.327534217838914340, -0.327486975463634760, +-0.327439732269637240, -0.327392488257040870, -0.327345243425963270, -0.327297997776522580, -0.327250751308836460, -0.327203504023023840, -0.327156255919202500, -0.327109006997490130, +-0.327061757258005630, -0.327014506700866740, -0.326967255326191530, -0.326920003134097860, -0.326872750124704510, -0.326825496298129350, -0.326778241654490430, -0.326730986193905500, +-0.326683729916493470, -0.326636472822372180, -0.326589214911659650, -0.326541956184473740, -0.326494696640933280, -0.326447436281156130, -0.326400175105260370, -0.326352913113363790, +-0.326305650305585280, -0.326258386682042660, -0.326211122242853700, -0.326163856988137320, -0.326116590918011320, -0.326069324032593810, -0.326022056332002600, -0.325974787816356640, +-0.325927518485773730, -0.325880248340371990, -0.325832977380269280, -0.325785705605584510, -0.325738433016435460, -0.325691159612940320, -0.325643885395216880, -0.325596610363384160, +-0.325549334517559910, -0.325502057857862290, -0.325454780384409170, -0.325407502097319450, -0.325360222996711020, -0.325312943082702030, -0.325265662355410210, -0.325218380814954740, +-0.325171098461453260, -0.325123815295023600, -0.325076531315784840, -0.325029246523854790, -0.324981960919351610, -0.324934674502393050, -0.324887387273098290, -0.324840099231585020, +-0.324792810377971530, -0.324745520712375610, -0.324698230234916290, -0.324650938945711340, -0.324603646844879130, -0.324556353932537340, -0.324509060208805100, -0.324461765673800200, +-0.324414470327640870, -0.324367174170444970, -0.324319877202331520, -0.324272579423418420, -0.324225280833823400, -0.324177981433665660, -0.324130681223062930, -0.324083380202133510, +-0.324036078370995180, -0.323988775729767140, -0.323941472278567120, -0.323894168017513420, -0.323846862946723880, -0.323799557066317630, -0.323752250376412480, -0.323704942877126700, +-0.323657634568578100, -0.323610325450885860, -0.323563015524167830, -0.323515704788542250, -0.323468393244127020, -0.323421080891041160, -0.323373767729402630, -0.323326453759329280, +-0.323279138980940180, -0.323231823394353250, -0.323184506999686760, -0.323137189797058580, -0.323089871786587880, -0.323042552968392460, -0.322995233342590670, -0.322947912909300360, +-0.322900591668640710, -0.322853269620729580, -0.322805946765685250, -0.322758623103625690, -0.322711298634669960, -0.322663973358935980, -0.322616647276542050, -0.322569320387606110, +-0.322521992692247240, -0.322474664190583460, -0.322427334882732560, -0.322380004768813730, -0.322332673848944930, -0.322285342123244390, -0.322238009591830130, -0.322190676254821230, +-0.322143342112335640, -0.322096007164491720, -0.322048671411407360, -0.322001334853201760, -0.321953997489992760, -0.321906659321898820, -0.321859320349037800, -0.321811980571528880, +-0.321764639989490010, -0.321717298603039550, -0.321669956412295450, -0.321622613417376860, -0.321575269618401720, -0.321527925015488440, -0.321480579608754870, -0.321433233398320310, +-0.321385886384302650, -0.321338538566819880, -0.321291189945991150, -0.321243840521934500, -0.321196490294768210, -0.321149139264610250, -0.321101787431579910, -0.321054434795795100, +-0.321007081357374160, -0.320959727116435110, -0.320912372073097200, -0.320865016227478320, -0.320817659579696930, -0.320770302129870950, -0.320722943878119670, -0.320675584824560990, +-0.320628224969313370, -0.320580864312494720, -0.320533502854224380, -0.320486140594620270, -0.320438777533800400, -0.320391413671884010, -0.320344049008989050, -0.320296683545234000, +-0.320249317280736800, -0.320201950215616700, -0.320154582349991780, -0.320107213683980370, -0.320059844217700560, -0.320012473951271530, -0.319965102884811280, -0.319917731018438290, +-0.319870358352270570, -0.319822984886427350, -0.319775610621026720, -0.319728235556187010, -0.319680859692026310, -0.319633483028663900, -0.319586105566217750, -0.319538727304805930, +-0.319491348244547720, -0.319443968385561110, -0.319396587727964590, -0.319349206271876180, -0.319301824017415190, -0.319254440964699630, -0.319207057113848000, -0.319159672464978280, +-0.319112287018209760, -0.319064900773660560, -0.319017513731449150, -0.318970125891693490, -0.318922737254512920, -0.318875347820025520, -0.318827957588349810, -0.318780566559603680, +-0.318733174733906610, -0.318685782111376600, -0.318638388692132180, -0.318590994476291300, -0.318543599463973370, -0.318496203655296460, -0.318448807050378590, -0.318401409649339160, +-0.318354011452296190, -0.318306612459368200, -0.318259212670673250, -0.318211812086330700, -0.318164410706458620, -0.318117008531175470, -0.318069605560599430, -0.318022201794849800, +-0.317974797234044650, -0.317927391878302490, -0.317879985727741400, -0.317832578782480830, -0.317785171042638810, -0.317737762508333800, -0.317690353179684030, -0.317642943056808790, +-0.317595532139826160, -0.317548120428854270, -0.317500707924012530, -0.317453294625419050, -0.317405880533192300, -0.317358465647450410, -0.317311049968312770, -0.317263633495897530, +-0.317216216230323260, -0.317168798171707960, -0.317121379320171090, -0.317073959675830800, -0.317026539238805580, -0.316979118009213580, -0.316931695987174240, -0.316884273172805650, +-0.316836849566226380, -0.316789425167554590, -0.316741999976909610, -0.316694573994409640, -0.316647147220172840, -0.316599719654318600, -0.316552291296964990, -0.316504862148230700, +-0.316457432208233860, -0.316410001477093860, -0.316362569954928790, -0.316315137641857370, -0.316267704537997630, -0.316220270643469080, -0.316172835958389850, -0.316125400482878520, +-0.316077964217053250, -0.316030527161033530, -0.315983089314937520, -0.315935650678883740, -0.315888211252990380, -0.315840771037376960, -0.315793330032161590, -0.315745888237462520, +-0.315698445653399110, -0.315651002280089580, -0.315603558117652560, -0.315556113166206240, -0.315508667425870030, -0.315461220896762150, -0.315413773579001240, -0.315366325472705430, +-0.315318876577994290, -0.315271426894985940, -0.315223976423799010, -0.315176525164551690, -0.315129073117363550, -0.315081620282352650, -0.315034166659637740, -0.314986712249337000, +-0.314939257051569890, -0.314891801066454650, -0.314844344294109900, -0.314796886734653840, -0.314749428388206020, -0.314701969254884640, -0.314654509334807870, -0.314607048628095300, +-0.314559587134865040, -0.314512124855235890, -0.314464661789325920, -0.314417197937254810, -0.314369733299140640, -0.314322267875102150, -0.314274801665257560, -0.314227334669726410, +-0.314179866888626920, -0.314132398322077790, -0.314084928970197190, -0.314037458833104740, -0.313989987910918590, -0.313942516203757520, -0.313895043711739710, -0.313847570434984680, +-0.313800096373610780, -0.313752621527736200, -0.313705145897480500, -0.313657669482961920, -0.313610192284299150, -0.313562714301610480, -0.313515235535015480, -0.313467755984632390, +-0.313420275650579890, -0.313372794532976280, -0.313325312631941080, -0.313277829947592680, -0.313230346480049600, -0.313182862229430310, -0.313135377195854270, -0.313087891379439760, +-0.313040404780305540, -0.312992917398569880, -0.312945429234352370, -0.312897940287771290, -0.312850450558944890, -0.312802960047992800, -0.312755468755033350, -0.312707976680185180, +-0.312660483823566700, -0.312612990185297370, -0.312565495765495640, -0.312518000564280090, -0.312470504581769170, -0.312423007818082410, -0.312375510273338100, -0.312328011947655030, +-0.312280512841151490, -0.312233012953947120, -0.312185512286160200, -0.312138010837909540, -0.312090508609313370, -0.312043005600491360, -0.311995501811561880, -0.311947997242643600, +-0.311900491893854940, -0.311852985765315450, -0.311805478857143490, -0.311757971169457470, -0.311710462702376900, -0.311662953456020130, -0.311615443430506070, -0.311567932625952890, +-0.311520421042480340, -0.311472908680206720, -0.311425395539250860, -0.311377881619731070, -0.311330366921767020, -0.311282851445477020, -0.311235335190979900, -0.311187818158394030, +-0.311140300347839020, -0.311092781759433280, -0.311045262393295610, -0.310997742249544300, -0.310950221328299080, -0.310902699629678310, -0.310855177153800400, -0.310807653900784910, +-0.310760129870750360, -0.310712605063815430, -0.310665079480098580, -0.310617553119719450, -0.310570025982796430, -0.310522498069448370, -0.310474969379793630, -0.310427439913951890, +-0.310379909672041540, -0.310332378654181400, -0.310284846860489900, -0.310237314291086750, -0.310189780946090290, -0.310142246825619360, -0.310094711929792380, -0.310047176258729070, +-0.309999639812547800, -0.309952102591367070, -0.309904564595306460, -0.309857025824484430, -0.309809486279019830, -0.309761945959031120, -0.309714404864637920, -0.309666862995958750, +-0.309619320353112400, -0.309571776936217350, -0.309524232745393260, -0.309476687780758600, -0.309429142042432210, -0.309381595530532570, -0.309334048245179350, -0.309286500186491010, +-0.309238951354586400, -0.309191401749584040, -0.309143851371603550, -0.309096300220763450, -0.309048748297182150, -0.309001195600979440, -0.308953642132273720, -0.308906087891183900, +-0.308858532877828440, -0.308810977092327080, -0.308763420534798270, -0.308715863205360870, -0.308668305104133460, -0.308620746231235640, -0.308573186586786010, -0.308525626170903400, +-0.308478064983706280, -0.308430503025314440, -0.308382940295846340, -0.308335376795420890, -0.308287812524156550, -0.308240247482173100, -0.308192681669589070, -0.308145115086523310, +-0.308097547733094390, -0.308049979609421990, -0.308002410715624620, -0.307954841051820800, -0.307907270618130340, -0.307859699414671670, -0.307812127441563780, -0.307764554698925110, +-0.307716981186875460, -0.307669406905533400, -0.307621831855017850, -0.307574256035447250, -0.307526679446941450, -0.307479102089618930, -0.307431523963598690, -0.307383945068999190, +-0.307336365405940280, -0.307288784974540430, -0.307241203774918650, -0.307193621807193400, -0.307146039071484520, -0.307098455567910540, -0.307050871296590030, -0.307003286257642730, +-0.306955700451187250, -0.306908113877342510, -0.306860526536227030, -0.306812938427960700, -0.306765349552661990, -0.306717759910449920, -0.306670169501443050, -0.306622578325761120, +-0.306574986383522820, -0.306527393674846990, -0.306479800199852270, -0.306432205958658500, -0.306384610951384200, -0.306337015178148380, -0.306289418639069560, -0.306241821334267640, +-0.306194223263861200, -0.306146624427968750, -0.306099024826710140, -0.306051424460204000, -0.306003823328569290, -0.305956221431924640, -0.305908618770389770, -0.305861015344083440, +-0.305813411153124490, -0.305765806197631660, -0.305718200477724690, -0.305670593993522250, -0.305622986745143320, -0.305575378732706520, -0.305527769956331630, -0.305480160416137400, +-0.305432550112242680, -0.305384939044766210, -0.305337327213827840, -0.305289714619546130, -0.305242101262040100, -0.305194487141428440, -0.305146872257830990, -0.305099256611366330, +-0.305051640202153080, -0.305004023030311210, -0.304956405095959280, -0.304908786399216310, -0.304861166940200930, -0.304813546719033100, -0.304765925735831390, -0.304718303990714870, +-0.304670681483802160, -0.304623058215213180, -0.304575434185066500, -0.304527809393481290, -0.304480183840576120, -0.304432557526470910, -0.304384930451284340, -0.304337302615135420, +-0.304289674018142780, -0.304242044660426430, -0.304194414542104940, -0.304146783663297000, -0.304099152024122580, -0.304051519624700230, -0.304003886465149030, -0.303956252545587780, +-0.303908617866136270, -0.303860982426913230, -0.303813346228037740, -0.303765709269628430, -0.303718071551805300, -0.303670433074687000, -0.303622793838392580, -0.303575153843040790, +-0.303527513088751530, -0.303479871575643490, -0.303432229303835730, -0.303384586273447000, -0.303336942484597250, -0.303289297937405110, -0.303241652631989320, -0.303194006568469840, +-0.303146359746965300, -0.303098712167594870, -0.303051063830477310, -0.303003414735732450, -0.302955764883479030, -0.302908114273836240, -0.302860462906922700, -0.302812810782858490, +-0.302765157901762230, -0.302717504263753050, -0.302669849868949680, -0.302622194717472150, -0.302574538809439080, -0.302526882144969700, -0.302479224724182700, -0.302431566547198050, +-0.302383907614134470, -0.302336247925111160, -0.302288587480246780, -0.302240926279661310, -0.302193264323473600, -0.302145601611802260, -0.302097938144767380, -0.302050273922487620, +-0.302002608945082180, -0.301954943212669800, -0.301907276725370490, -0.301859609483302980, -0.301811941486586470, -0.301764272735339620, -0.301716603229682580, -0.301668932969734020, +-0.301621261955613120, -0.301573590187438620, -0.301525917665330550, -0.301478244389407730, -0.301430570359789320, -0.301382895576594030, -0.301335220039941900, -0.301287543749951760, +-0.301239866706742300, -0.301192188910433640, -0.301144510361144480, -0.301096831058994040, -0.301049151004101120, -0.301001470196585740, -0.300953788636566690, -0.300906106324163150, +-0.300858423259493910, -0.300810739442679050, -0.300763054873837370, -0.300715369553088030, -0.300667683480549840, -0.300619996656342870, -0.300572309080585910, -0.300524620753398140, +-0.300476931674898470, -0.300429241845206860, -0.300381551264442100, -0.300333859932723100, -0.300286167850169870, -0.300238475016901150, -0.300190781433036350, -0.300143087098694080, +-0.300095392013994540, -0.300047696179056580, -0.299999999593999310, -0.299952302258941650, -0.299904604174003660, -0.299856905339304150, -0.299809205754962340, -0.299761505421097140, +-0.299713804337828570, -0.299666102505275530, -0.299618399923557210, -0.299570696592792450, -0.299522992513101380, -0.299475287684602850, -0.299427582107415660, -0.299379875781659980, +-0.299332168707454550, -0.299284460884918720, -0.299236752314171350, -0.299189042995332440, -0.299141332928521020, -0.299093622113856210, -0.299045910551456910, -0.298998198241443300, +-0.298950485183934190, -0.298902771379048800, -0.298855056826906160, -0.298807341527626220, -0.298759625481327950, -0.298711908688130630, -0.298664191148153120, -0.298616472861515550, +-0.298568753828336810, -0.298521034048736140, -0.298473313522832520, -0.298425592250746000, -0.298377870232595490, -0.298330147468499900, -0.298282423958579400, -0.298234699702952800, +-0.298186974701739440, -0.298139248955058220, -0.298091522463029330, -0.298043795225771620, -0.297996067243404440, -0.297948338516046630, -0.297900609043818430, -0.297852878826838700, +-0.297805147865226770, -0.297757416159101560, -0.297709683708583190, -0.297661950513790690, -0.297614216574843220, -0.297566481891859860, -0.297518746464960680, -0.297471010294264650, +-0.297423273379890660, -0.297375535721958910, -0.297327797320588340, -0.297280058175898250, -0.297232318288007610, -0.297184577657036600, -0.297136836283104110, -0.297089094166329560, +-0.297041351306831850, -0.296993607704731210, -0.296945863360146500, -0.296898118273197180, -0.296850372444002090, -0.296802625872681520, -0.296754878559354400, -0.296707130504140050, +-0.296659381707157500, -0.296611632168526870, -0.296563881888367190, -0.296516130866797340, -0.296468379103937640, -0.296420626599906980, -0.296372873354824710, -0.296325119368809900, +-0.296277364641982680, -0.296229609174462060, -0.296181852966367400, -0.296134096017817650, -0.296086338328933160, -0.296038579899832790, -0.295990820730635980, -0.295943060821461660, +-0.295895300172430150, -0.295847538783660380, -0.295799776655271740, -0.295752013787383250, -0.295704250180115150, -0.295656485833586450, -0.295608720747916500, -0.295560954923224370, +-0.295513188359630200, -0.295465421057253150, -0.295417653016212030, -0.295369884236627240, -0.295322114718617800, -0.295274344462303000, -0.295226573467801960, -0.295178801735234860, +-0.295131029264720790, -0.295083256056379140, -0.295035482110328930, -0.294987707426690450, -0.294939932005582660, -0.294892155847125080, -0.294844378951436670, -0.294796601318637720, +-0.294748822948847300, -0.294701043842184820, -0.294653263998769290, -0.294605483418721060, -0.294557702102159090, -0.294509920049202400, -0.294462137259971390, -0.294414353734585020, +-0.294366569473162810, -0.294318784475823710, -0.294270998742688080, -0.294223212273874930, -0.294175425069503780, -0.294127637129693640, -0.294079848454564810, -0.294032059044236350, +-0.293984268898827780, -0.293936478018458070, -0.293888686403247670, -0.293840894053315480, -0.293793100968781080, -0.293745307149763490, -0.293697512596383050, -0.293649717308758880, +-0.293601921287009960, -0.293554124531256620, -0.293506327041618050, -0.293458528818213600, -0.293410729861162460, -0.293362930170584850, -0.293315129746599960, -0.293267328589327250, +-0.293219526698885740, -0.293171724075395880, -0.293123920718976750, -0.293076116629747750, -0.293028311807828070, -0.292980506253337990, -0.292932699966396700, -0.292884892947123670, +-0.292837085195637950, -0.292789276712059900, -0.292741467496508700, -0.292693657549103430, -0.292645846869964420, -0.292598035459210810, -0.292550223316962070, -0.292502410443337360, +-0.292454596838457090, -0.292406782502440290, -0.292358967435406570, -0.292311151637474950, -0.292263335108765900, -0.292215517849398530, -0.292167699859492370, -0.292119881139166480, +-0.292072061688541380, -0.292024241507736090, -0.291976420596870180, -0.291928598956062820, -0.291880776585434430, -0.291832953485104020, -0.291785129655191270, -0.291737305095815250, +-0.291689479807096420, -0.291641653789153850, -0.291593827042106790, -0.291545999566075520, -0.291498171361179280, -0.291450342427537590, -0.291402512765269630, -0.291354682374495800, +-0.291306851255335290, -0.291259019407907660, -0.291211186832332050, -0.291163353528728910, -0.291115519497217310, -0.291067684737917000, -0.291019849250947040, -0.290972013036427830, +-0.290924176094478630, -0.290876338425218980, -0.290828500028768030, -0.290780660905246290, -0.290732821054772880, -0.290684980477467050, -0.290637139173449130, -0.290589297142838380, +-0.290541454385754410, -0.290493610902316350, -0.290445766692644660, -0.290397921756858580, -0.290350076095077740, -0.290302229707421260, -0.290254382594009600, -0.290206534754962000, +-0.290158686190398090, -0.290110836900436990, -0.290062986885199270, -0.290015136144804060, -0.289967284679371000, -0.289919432489019300, -0.289871579573869440, -0.289823725934040650, +-0.289775871569652120, -0.289728016480824360, -0.289680160667676550, -0.289632304130328310, -0.289584446868898890, -0.289536588883508810, -0.289488730174277230, -0.289440870741323850, +-0.289393010584767800, -0.289345149704729740, -0.289297288101328760, -0.289249425774684540, -0.289201562724916370, -0.289153698952144710, -0.289105834456488800, -0.289057969238068260, +-0.289010103297002440, -0.288962236633411750, -0.288914369247415480, -0.288866501139133260, -0.288818632308684380, -0.288770762756189350, -0.288722892481767410, -0.288675021485537810, +-0.288627149767621110, -0.288579277328136540, -0.288531404167203740, -0.288483530284942000, -0.288435655681471890, -0.288387780356912590, -0.288339904311383900, -0.288292027545004990, +-0.288244150057896440, -0.288196271850177540, -0.288148392921967920, -0.288100513273386930, -0.288052632904555070, -0.288004751815591600, -0.287956870006616290, -0.287908987477748350, +-0.287861104229108380, -0.287813220260815680, -0.287765335572989440, -0.287717450165750340, -0.287669564039217620, -0.287621677193510950, -0.287573789628749690, -0.287525901345054350, +-0.287478012342544280, -0.287430122621339160, -0.287382232181558340, -0.287334341023322340, -0.287286449146750500, -0.287238556551962560, -0.287190663239077770, -0.287142769208216740, +-0.287094874459498830, -0.287046978993043660, -0.286999082808970680, -0.286951185907400430, -0.286903288288452190, -0.286855389952245300, -0.286807490898900340, -0.286759591128536660, +-0.286711690641274000, -0.286663789437231750, -0.286615887516530390, -0.286567984879289310, -0.286520081525628300, -0.286472177455666670, -0.286424272669524970, -0.286376367167322620, +-0.286328460949179350, -0.286280554015214520, -0.286232646365548680, -0.286184738000301250, -0.286136828919592020, -0.286088919123540230, -0.286041008612266610, -0.285993097385890460, +-0.285945185444531120, -0.285897272788309230, -0.285849359417344180, -0.285801445331755780, -0.285753530531663300, -0.285705615017187390, -0.285657698788447490, -0.285609781845563290, +-0.285561864188654260, -0.285513945817840950, -0.285466026733242840, -0.285418106934979600, -0.285370186423170690, -0.285322265197936740, -0.285274343259397160, -0.285226420607671670, +-0.285178497242879690, -0.285130573165141950, -0.285082648374577750, -0.285034722871306930, -0.284986796655448900, -0.284938869727124290, -0.284890942086452490, -0.284843013733552920, +-0.284795084668546250, -0.284747154891551830, -0.284699224402689580, -0.284651293202078830, -0.284603361289840210, -0.284555428666093240, -0.284507495330957700, -0.284459561284553020, +-0.284411626526999810, -0.284363691058417580, -0.284315754878926070, -0.284267817988644760, -0.284219880387694360, -0.284171942076194230, -0.284124003054264270, -0.284076063322023900, +-0.284028122879593730, -0.283980181727093330, -0.283932239864642000, -0.283884297292360480, -0.283836354010368270, -0.283788410018785130, -0.283740465317730560, -0.283692519907325250, +-0.283644573787688650, -0.283596626958940610, -0.283548679421200540, -0.283500731174589240, -0.283452782219226100, -0.283404832555231020, -0.283356882182723420, -0.283308931101824040, +-0.283260979312652320, -0.283213026815328170, -0.283165073609971010, -0.283117119696701610, -0.283069165075639400, -0.283021209746903870, -0.282973253710615710, -0.282925296966894450, +-0.282877339515859920, -0.282829381357631640, -0.282781422492330290, -0.282733462920075450, -0.282685502640986910, -0.282637541655184180, -0.282589579962788050, -0.282541617563917940, +-0.282493654458693790, -0.282445690647235070, -0.282397726129662570, -0.282349760906095760, -0.282301794976654590, -0.282253828341458400, -0.282205861000628170, -0.282157892954283230, +-0.282109924202543550, -0.282061954745528640, -0.282013984583359300, -0.281966013716154980, -0.281918042144035210, -0.281870069867120760, -0.281822096885531110, -0.281774123199386270, +-0.281726148808805640, -0.281678173713910070, -0.281630197914819080, -0.281582221411652620, -0.281534244204530160, -0.281486266293572480, -0.281438287678899170, -0.281390308360630170, +-0.281342328338884950, -0.281294347613784300, -0.281246366185447790, -0.281198384053995390, -0.281150401219546600, -0.281102417682222220, -0.281054433442141820, -0.281006448499424910, +-0.280958462854192290, -0.280910476506563530, -0.280862489456658540, -0.280814501704596930, -0.280766513250499450, -0.280718524094485720, -0.280670534236675710, -0.280622543677188920, +-0.280574552416146210, -0.280526560453667080, -0.280478567789871570, -0.280430574424879180, -0.280382580358810810, -0.280334585591785980, -0.280286590123924710, -0.280238593955346560, +-0.280190597086172280, -0.280142599516521540, -0.280094601246513920, -0.280046602276270150, -0.279998602605909920, -0.279950602235553180, -0.279902601165319450, -0.279854599395329700, +-0.279806596925703480, -0.279758593756560700, -0.279710589888021060, -0.279662585320205330, -0.279614580053233200, -0.279566574087224570, -0.279518567422299080, -0.279470560058577620, +-0.279422551996179710, -0.279374543235225480, -0.279326533775834440, -0.279278523618127490, -0.279230512762224210, -0.279182501208244280, -0.279134488956308490, -0.279086476006536470, +-0.279038462359048280, -0.278990448013963500, -0.278942432971403030, -0.278894417231486450, -0.278846400794333870, -0.278798383660064820, -0.278750365828800250, -0.278702347300659790, +-0.278654328075763400, -0.278606308154230820, -0.278558287536182890, -0.278510266221739240, -0.278462244211019890, -0.278414221504144580, -0.278366198101234090, -0.278318174002408100, +-0.278270149207786700, -0.278222123717489440, -0.278174097531637350, -0.278126070650350050, -0.278078043073747120, -0.278030014801949440, -0.277981985835076830, -0.277933956173249170, +-0.277885925816586220, -0.277837894765208930, -0.277789863019236860, -0.277741830578790090, -0.277693797443988370, -0.277645763614952580, -0.277597729091802410, -0.277549693874657890, +-0.277501657963638680, -0.277453621358865750, -0.277405584060458840, -0.277357546068537910, -0.277309507383222690, -0.277261468004634140, -0.277213427932891940, -0.277165387168115670, +-0.277117345710426450, -0.277069303559943800, -0.277021260716787950, -0.276973217181078480, -0.276925172952936390, -0.276877128032481380, -0.276829082419833560, -0.276781036115112620, +-0.276732989118439470, -0.276684941429933880, -0.276636893049715950, -0.276588843977905340, -0.276540794214623020, -0.276492743759988780, -0.276444692614122630, -0.276396640777144320, +-0.276348588249174850, -0.276300535030333920, -0.276252481120741190, -0.276204426520517740, -0.276156371229783150, -0.276108315248657700, -0.276060258577261020, -0.276012201215714130, +-0.275964143164136700, -0.275916084422648920, -0.275868024991370530, -0.275819964870422480, -0.275771904059924520, -0.275723842559996820, -0.275675780370759070, -0.275627717492332280, +-0.275579653924836190, -0.275531589668391030, -0.275483524723116380, -0.275435459089133420, -0.275387392766561770, -0.275339325755521670, -0.275291258056132800, -0.275243189668516240, +-0.275195120592791660, -0.275147050829078920, -0.275098980377498910, -0.275050909238171490, -0.275002837411216780, -0.274954764896754580, -0.274906691694905890, -0.274858617805790460, +-0.274810543229528470, -0.274762467966239710, -0.274714392016045190, -0.274666315379064720, -0.274618238055418410, -0.274570160045226110, -0.274522081348608840, -0.274474001965686390, +-0.274425921896578880, -0.274377841141406180, -0.274329759700289330, -0.274281677573348040, -0.274233594760702140, -0.274185511262472650, -0.274137427078779420, -0.274089342209742630, +-0.274041256655482010, -0.273993170416118700, -0.273945083491772490, -0.273896995882563500, -0.273848907588611690, -0.273800818610037970, -0.273752728946962230, -0.273704638599504670, +-0.273656547567785070, -0.273608455851924500, -0.273560363452042820, -0.273512270368260260, -0.273464176600696550, -0.273416082149472880, -0.273367987014708990, -0.273319891196524670, +-0.273271794695041090, -0.273223697510378010, -0.273175599642655640, -0.273127501091993910, -0.273079401858513810, -0.273031301942335210, -0.272983201343578400, -0.272935100062363100, +-0.272886998098810510, -0.272838895453040410, -0.272790792125173100, -0.272742688115328370, -0.272694583423627350, -0.272646478050189880, -0.272598371995136150, -0.272550265258586110, +-0.272502157840660840, -0.272454049741480190, -0.272405940961163940, -0.272357831499833340, -0.272309721357608110, -0.272261610534608570, -0.272213499030954600, -0.272165386846767280, +-0.272117273982166510, -0.272069160437272580, -0.272021046212205300, -0.271972931307085830, -0.271924815722034030, -0.271876699457170190, -0.271828582512614160, -0.271780464888487120, +-0.271732346584908910, -0.271684227601999840, -0.271636107939879800, -0.271587987598669870, -0.271539866578490000, -0.271491744879460480, -0.271443622501701120, -0.271395499445333140, +-0.271347375710476460, -0.271299251297250850, -0.271251126205777630, -0.271203000436176510, -0.271154873988567910, -0.271106746863071730, -0.271058619059809050, -0.271010490578899870, +-0.270962361420464480, -0.270914231584622690, -0.270866101071495780, -0.270817969881203660, -0.270769838013866560, -0.270721705469604450, -0.270673572248538550, -0.270625438350788670, +-0.270577303776475210, -0.270529168525718070, -0.270481032598638430, -0.270432895995356190, -0.270384758715991270, -0.270336620760664950, -0.270288482129497020, -0.270240342822607890, +-0.270192202840117470, -0.270144062182147040, -0.270095920848816400, -0.270047778840245940, -0.269999636156555640, -0.269951492797866620, -0.269903348764298940, -0.269855204055972850, +-0.269807058673008360, -0.269758912615526590, -0.269710765883647560, -0.269662618477491680, -0.269614470397178730, -0.269566321642830060, -0.269518172214565640, -0.269470022112505310, +-0.269421871336770370, -0.269373719887480770, -0.269325567764756800, -0.269277414968718540, -0.269229261499487170, -0.269181107357182650, -0.269132952541925370, -0.269084797053835260, +-0.269036640893033590, -0.268988484059640260, -0.268940326553775810, -0.268892168375560070, -0.268844009525114340, -0.268795850002558620, -0.268747689808013220, -0.268699528941598210, +-0.268651367403434760, -0.268603205193642950, -0.268555042312343120, -0.268506878759655230, -0.268458714535700580, -0.268410549640599130, -0.268362384074470880, -0.268314217837437140, +-0.268266050929617810, -0.268217883351133330, -0.268169715102103800, -0.268121546182650330, -0.268073376592893040, -0.268025206332952290, -0.267977035402948090, -0.267928863803001740, +-0.267880691533233240, -0.267832518593763000, -0.267784344984711040, -0.267736170706198650, -0.267687995758345790, -0.267639820141273020, -0.267591643855100200, -0.267543466899948730, +-0.267495289275938570, -0.267447110983189800, -0.267398932021823690, -0.267350752391960210, -0.267302572093719830, -0.267254391127222660, -0.267206209492589890, -0.267158027189941580, +-0.267109844219398260, -0.267061660581079830, -0.267013476275107740, -0.266965291301601960, -0.266917105660682890, -0.266868919352470700, -0.266820732377086590, -0.266772544734650670, +-0.266724356425283360, -0.266676167449104770, -0.266627977806236200, -0.266579787496797670, -0.266531596520909190, -0.266483404878692210, -0.266435212570266700, -0.266387019595753170, +-0.266338825955271640, -0.266290631648943510, -0.266242436676888740, -0.266194241039227950, -0.266146044736081060, -0.266097847767569510, -0.266049650133813380, -0.266001451834933070, +-0.265953252871048760, -0.265905053242281700, -0.265856852948752000, -0.265808651990580180, -0.265760450367886310, -0.265712248080791750, -0.265664045129416600, -0.265615841513880850, +-0.265567637234305930, -0.265519432290811930, -0.265471226683519360, -0.265423020412548280, -0.265374813478020110, -0.265326605880054860, -0.265278397618773140, -0.265230188694294990, +-0.265181979106741740, -0.265133768856233630, -0.265085557942891010, -0.265037346366834130, -0.264989134128184310, -0.264940921227061640, -0.264892707663586640, -0.264844493437879470, +-0.264796278550061490, -0.264748063000252830, -0.264699846788574000, -0.264651629915145130, -0.264603412380087550, -0.264555194183521520, -0.264506975325567050, -0.264458755806345590, +-0.264410535625977220, -0.264362314784582500, -0.264314093282281560, -0.264265871119195860, -0.264217648295445470, -0.264169424811150910, -0.264121200666432410, -0.264072975861411320, +-0.264024750396207820, -0.263976524270942370, -0.263928297485735260, -0.263880070040707790, -0.263831841935980140, -0.263783613171672930, -0.263735383747906230, -0.263687153664801500, +-0.263638922922478870, -0.263590691521058520, -0.263542459460661900, -0.263494226741409100, -0.263445993363420730, -0.263397759326816970, -0.263349524631719180, -0.263301289278247640, +-0.263253053266522870, -0.263204816596665000, -0.263156579268795540, -0.263108341283034670, -0.263060102639502910, -0.263011863338320440, -0.262963623379608770, -0.262915382763488080, +-0.262867141490078890, -0.262818899559501440, -0.262770656971877130, -0.262722413727326190, -0.262674169825968810, -0.262625925267926390, -0.262577680053319220, -0.262529434182267820, +-0.262481187654892370, -0.262432940471314440, -0.262384692631654150, -0.262336444136032080, -0.262288194984568510, -0.262239945177384860, -0.262191694714601350, -0.262143443596338620, +-0.262095191822716840, -0.262046939393857540, -0.261998686309880880, -0.261950432570907500, -0.261902178177057580, -0.261853923128452680, -0.261805667425212940, -0.261757411067459090, +-0.261709154055311200, -0.261660896388890900, -0.261612638068318360, -0.261564379093713770, -0.261516119465198700, -0.261467859182893340, -0.261419598246918290, -0.261371336657393820, +-0.261323074414441470, -0.261274811518181440, -0.261226547968734350, -0.261178283766220430, -0.261130018910761260, -0.261081753402477080, -0.261033487241488500, -0.260985220427915720, +-0.260936952961880350, -0.260888684843502640, -0.260840416072903150, -0.260792146650202230, -0.260743876575521390, -0.260695605848980830, -0.260647334470700820, -0.260599062440802940, +-0.260550789759407380, -0.260502516426634800, -0.260454242442605570, -0.260405967807441130, -0.260357692521261790, -0.260309416584188210, -0.260261139996340650, -0.260212862757840670, +-0.260164584868808560, -0.260116306329364940, -0.260068027139630180, -0.260019747299725710, -0.259971466809771960, -0.259923185669889480, -0.259874903880198630, -0.259826621440820920, +-0.259778338351876690, -0.259730054613486190, -0.259681770225770990, -0.259633485188851320, -0.259585199502847970, -0.259536913167881190, -0.259488626184072530, -0.259440338551542300, +-0.259392050270411290, -0.259343761340799670, -0.259295471762829080, -0.259247181536619850, -0.259198890662292620, -0.259150599139967740, -0.259102306969766830, -0.259054014151810120, +-0.259005720686218350, -0.258957426573111880, -0.258909131812612270, -0.258860836404839870, -0.258812540349914910, -0.258764243647959020, -0.258715946299092500, -0.258667648303436190, +-0.258619349661110280, -0.258571050372236430, -0.258522750436934960, -0.258474449855326580, -0.258426148627531660, -0.258377846753671810, -0.258329544233867390, -0.258281241068239080, +-0.258232937256907210, -0.258184632799993430, -0.258136327697618070, -0.258088021949901940, -0.258039715556965250, -0.257991408518929770, -0.257943100835915710, -0.257894792508043920, +-0.257846483535434710, -0.257798173918209750, -0.257749863656489330, -0.257701552750393860, -0.257653241200044900, -0.257604929005562810, -0.257556616167068430, -0.257508302684682110, +-0.257459988558525420, -0.257411673788718760, -0.257363358375382930, -0.257315042318638280, -0.257266725618606470, -0.257218408275407820, -0.257170090289163160, -0.257121771659992840, +-0.257073452388018540, -0.257025132473360560, -0.256976811916139800, -0.256928490716476550, -0.256880168874492500, -0.256831846390308040, -0.256783523264043520, -0.256735199495820690, +-0.256686875085759770, -0.256638550033981730, -0.256590224340606850, -0.256541898005756830, -0.256493571029552060, -0.256445243412113390, -0.256396915153561170, -0.256348586254017130, +-0.256300256713601570, -0.256251926532435390, -0.256203595710638940, -0.256155264248333960, -0.256106932145640840, -0.256058599402680330, -0.256010266019572940, -0.255961931996440300, +-0.255913597333402850, -0.255865262030580910, -0.255816926088096310, -0.255768589506069400, -0.255720252284620970, -0.255671914423871490, -0.255623575923942690, -0.255575236784954920, +-0.255526897007029070, -0.255478556590285510, -0.255430215534846070, -0.255381873840831000, -0.255333531508361300, -0.255285188537557330, -0.255236844928540820, -0.255188500681432170, +-0.255140155796352300, -0.255091810273421650, -0.255043464112761850, -0.254995117314493370, -0.254946769878737160, -0.254898421805613560, -0.254850073095244320, -0.254801723747749900, +-0.254753373763250750, -0.254705023141868600, -0.254656671883723930, -0.254608319988937510, -0.254559967457629930, -0.254511614289922810, -0.254463260485936650, -0.254414906045792370, +-0.254366550969610360, -0.254318195257512420, -0.254269838909619020, -0.254221481926050990, -0.254173124306928840, -0.254124766052374330, -0.254076407162507840, -0.254028047637450400, +-0.253979687477322410, -0.253931326682245610, -0.253882965252340440, -0.253834603187727490, -0.253786240488528440, -0.253737877154863790, -0.253689513186854450, -0.253641148584620950, +-0.253592783348284940, -0.253544417477966970, -0.253496050973788020, -0.253447683835868460, -0.253399316064330140, -0.253350947659293500, -0.253302578620879510, -0.253254208949208640, +-0.253205838644402710, -0.253157467706582150, -0.253109096135867910, -0.253060723932380550, -0.253012351096241760, -0.252963977627572110, -0.252915603526492060, -0.252867228793123460, +-0.252818853427586810, -0.252770477430002970, -0.252722100800492570, -0.252673723539177330, -0.252625345646177780, -0.252576967121614810, -0.252528587965609060, -0.252480208178282260, +-0.252431827759754920, -0.252383446710148010, -0.252335065029582030, -0.252286682718178890, -0.252238299776058990, -0.252189916203343360, -0.252141532000152490, -0.252093147166608240, +-0.252044761702831130, -0.251996375608941670, -0.251947988885061700, -0.251899601531311750, -0.251851213547812810, -0.251802824934685370, -0.251754435692051360, -0.251706045820031200, +-0.251657655318745950, -0.251609264188316140, -0.251560872428863600, -0.251512480040508910, -0.251464087023372970, -0.251415693377576410, -0.251367299103241020, -0.251318904200487410, +-0.251270508669436510, -0.251222112510208930, -0.251173715722926520, -0.251125318307709790, -0.251076920264679760, -0.251028521593957000, -0.250980122295663410, -0.250931722369919450, +-0.250883321816845810, -0.250834920636564260, -0.250786518829195390, -0.250738116394860270, -0.250689713333679400, -0.250641309645774690, -0.250592905331266710, -0.250544500390276480, +-0.250496094822924560, -0.250447688629332810, -0.250399281809621840, -0.250350874363912680, -0.250302466292325890, -0.250254057594983370, -0.250205648272005750, -0.250157238323513940, +-0.250108827749628670, -0.250060416550471680, -0.250012004726163690, -0.249963592276825300, -0.249915179202578300, -0.249866765503543390, -0.249818351179841550, -0.249769936231593410, +-0.249721520658920840, -0.249673104461944490, -0.249624687640785350, -0.249576270195564110, -0.249527852126402580, -0.249479433433421440, -0.249431014116741710, -0.249382594176484010, +-0.249334173612770270, -0.249285752425721100, -0.249237330615457530, -0.249188908182100210, -0.249140485125771060, -0.249092061446590680, -0.249043637144679720, -0.248995212220160110, +-0.248946786673152450, -0.248898360503777840, -0.248849933712156880, -0.248801506298411550, -0.248753078262662440, -0.248704649605030610, -0.248656220325636750, -0.248607790424602760, +-0.248559359902049300, -0.248510928758097440, -0.248462496992867820, -0.248414064606482410, -0.248365631599061800, -0.248317197970727150, -0.248268763721599060, -0.248220328851799480, +-0.248171893361449100, -0.248123457250668980, -0.248075020519579780, -0.248026583168303450, -0.247978145196960680, -0.247929706605672100, -0.247881267394559710, -0.247832827563744110, +-0.247784387113346470, -0.247735946043487420, -0.247687504354288960, -0.247639062045871720, -0.247590619118356840, -0.247542175571864950, -0.247493731406518090, -0.247445286622436870, +-0.247396841219742450, -0.247348395198555500, -0.247299948558997980, -0.247251501301190580, -0.247203053425254450, -0.247154604931310250, -0.247106155819479980, -0.247057706089884280, +-0.247009255742643930, -0.246960804777880850, -0.246912353195715750, -0.246863900996269790, -0.246815448179663640, -0.246766994746019290, -0.246718540695457460, -0.246670086028099260, +-0.246621630744065430, -0.246573174843477960, -0.246524718326457560, -0.246476261193125350, -0.246427803443602040, -0.246379345078009680, -0.246330886096468940, -0.246282426499101010, +-0.246233966286026560, -0.246185505457367640, -0.246137044013244930, -0.246088581953779200, -0.246040119279092450, -0.245991655989305390, -0.245943192084539190, -0.245894727564914590, +-0.245846262430553600, -0.245797796681576950, -0.245749330318105810, -0.245700863340260920, -0.245652395748164280, -0.245603927541936660, -0.245555458721699230, -0.245506989287572720, +-0.245458519239679180, -0.245410048578139330, -0.245361577303074340, -0.245313105414605020, -0.245264632912853330, -0.245216159797940060, -0.245167686069986400, -0.245119211729113110, +-0.245070736775442190, -0.245022261209094460, -0.244973785030190630, -0.244925308238852750, -0.244876830835201620, -0.244828352819358410, -0.244779874191443900, -0.244731394951580110, +-0.244682915099887850, -0.244634434636488320, -0.244585953561502230, -0.244537471875051700, -0.244488989577257510, -0.244440506668240850, -0.244392023148122470, -0.244343539017024460, +-0.244295054275067620, -0.244246568922373150, -0.244198082959061810, -0.244149596385255680, -0.244101109201075580, -0.244052621406642300, -0.244004133002077850, -0.243955643987503110, +-0.243907154363039220, -0.243858664128807050, -0.243810173284928630, -0.243761681831524770, -0.243713189768716730, -0.243664697096625250, -0.243616203815372500, -0.243567709925079200, +-0.243519215425866660, -0.243470720317855630, -0.243422224601168250, -0.243373728275925270, -0.243325231342248010, -0.243276733800257220, -0.243228235650075040, -0.243179736891822260, +-0.243131237525619710, -0.243082737551589490, -0.243034236969852440, -0.242985735780529790, -0.242937233983742370, -0.242888731579612300, -0.242840228568260370, -0.242791724949807910, +-0.242743220724375680, -0.242694715892085850, -0.242646210453059230, -0.242597704407417070, -0.242549197755280220, -0.242500690496770810, -0.242452182632009680, -0.242403674161118100, +-0.242355165084216890, -0.242306655401428210, -0.242258145112872860, -0.242209634218671750, -0.242161122718946960, -0.242112610613819390, -0.242064097903410270, -0.242015584587840500, +-0.241967070667232190, -0.241918556141706180, -0.241870041011383820, -0.241821525276385900, -0.241773008936834590, -0.241724491992850790, -0.241675974444555740, -0.241627456292070300, +-0.241578937535516680, -0.241530418175015720, -0.241481898210688720, -0.241433377642656520, -0.241384856471041300, -0.241336334695963970, -0.241287812317545790, -0.241239289335907630, +-0.241190765751171710, -0.241142241563458870, -0.241093716772889960, -0.241045191379587210, -0.240996665383671510, -0.240948138785264110, -0.240899611584485950, -0.240851083781459200, +-0.240802555376304710, -0.240754026369143860, -0.240705496760097500, -0.240656966549287840, -0.240608435736835740, -0.240559904322862560, -0.240511372307489200, -0.240462839690837840, +-0.240414306473029390, -0.240365772654185160, -0.240317238234426050, -0.240268703213874310, -0.240220167592650800, -0.240171631370876440, -0.240123094548673420, -0.240074557126162660, +-0.240026019103465520, -0.239977480480702910, -0.239928941257997020, -0.239880401435468770, -0.239831861013239530, -0.239783319991430180, -0.239734778370162990, -0.239686236149558860, +-0.239637693329739110, -0.239589149910824720, -0.239540605892937880, -0.239492061276199510, -0.239443516060731030, -0.239394970246653290, -0.239346423834088550, -0.239297876823157780, +-0.239249329213981870, -0.239200781006683070, -0.239152232201382320, -0.239103682798200990, -0.239055132797260010, -0.239006582198681650, -0.238958031002586810, -0.238909479209096910, +-0.238860926818332870, -0.238812373830416950, -0.238763820245470100, -0.238715266063613710, -0.238666711284968690, -0.238618155909657350, -0.238569599937800610, -0.238521043369519880, +-0.238472486204936110, -0.238423928444171540, -0.238375370087347160, -0.238326811134584370, -0.238278251586004100, -0.238229691441728620, -0.238181130701878930, -0.238132569366575980, +-0.238084007435942050, -0.238035444910098090, -0.237986881789165520, -0.237938318073265320, -0.237889753762519750, -0.237841188857049800, -0.237792623356976870, -0.237744057262421950, +-0.237695490573507310, -0.237646923290353970, -0.237598355413083300, -0.237549786941816300, -0.237501217876675300, -0.237452648217781230, -0.237404077965255560, -0.237355507119219240, +-0.237306935679794610, -0.237258363647102620, -0.237209791021264300, -0.237161217802401900, -0.237112643990636500, -0.237064069586089470, -0.237015494588881850, -0.236966918999135910, +-0.236918342816972660, -0.236869766042513590, -0.236821188675879650, -0.236772610717193160, -0.236724032166575170, -0.236675453024147080, -0.236626873290029930, -0.236578292964346040, +-0.236529712047216400, -0.236481130538762490, -0.236432548439105330, -0.236383965748367230, -0.236335382466669190, -0.236286798594132290, -0.236238214130878810, -0.236189629077029810, +-0.236141043432706730, -0.236092457198030600, -0.236043870373123770, -0.235995282958107260, -0.235946694953102530, -0.235898106358230640, -0.235849517173613910, -0.235800927399373420, +-0.235752337035630590, -0.235703746082506470, -0.235655154540123420, -0.235606562408602500, -0.235557969688065170, -0.235509376378632480, -0.235460782480426790, -0.235412187993569140, +-0.235363592918180600, -0.235314997254383480, -0.235266401002298900, -0.235217804162048290, -0.235169206733752740, -0.235120608717534620, -0.235072010113514970, -0.235023410921815310, +-0.234974811142556670, -0.234926210775861430, -0.234877609821850690, -0.234829008280645900, -0.234780406152368170, -0.234731803437139840, -0.234683200135082040, -0.234634596246316220, +-0.234585991770963450, -0.234537386709146170, -0.234488781060985390, -0.234440174826602680, -0.234391568006119100, -0.234342960599657040, -0.234294352607337550, -0.234245744029281780, +-0.234197134865612060, -0.234148525116449510, -0.234099914781915660, -0.234051303862131580, -0.234002692357219650, -0.233954080267301020, -0.233905467592497200, -0.233856854332929240, +-0.233808240488719590, -0.233759626059989340, -0.233711011046860040, -0.233662395449452780, -0.233613779267889950, -0.233565162502292670, -0.233516545152782500, -0.233467927219480510, +-0.233419308702509150, -0.233370689601989530, -0.233322069918042750, -0.233273449650791190, -0.233224828800356050, -0.233176207366858820, -0.233127585350420640, -0.233078962751163940, +-0.233030339569209820, -0.232981715804679860, -0.232933091457695170, -0.232884466528378190, -0.232835841016850040, -0.232787214923232290, -0.232738588247646070, -0.232689960990213800, +-0.232641333151056650, -0.232592704730296140, -0.232544075728053470, -0.232495446144451000, -0.232446815979609950, -0.232398185233651410, -0.232349553906697870, -0.232300921998870400, +-0.232252289510290640, -0.232203656441079740, -0.232155022791360130, -0.232106388561252960, -0.232057753750879810, -0.232009118360361840, -0.231960482389821530, -0.231911845839379990, +-0.231863208709158860, -0.231814570999279240, -0.231765932709863650, -0.231717293841033230, -0.231668654392909570, -0.231620014365613830, -0.231571373759268510, -0.231522732573994750, +-0.231474090809914130, -0.231425448467147880, -0.231376805545818440, -0.231328162046046980, -0.231279517967954680, -0.231230873311664030, -0.231182228077296190, -0.231133582264972770, +-0.231084935874814960, -0.231036288906945250, -0.230987641361484840, -0.230938993238555300, -0.230890344538277840, -0.230841695260774970, -0.230793045406167850, -0.230744394974578130, +-0.230695743966126960, -0.230647092380936890, -0.230598440219129090, -0.230549787480825190, -0.230501134166146370, -0.230452480275215170, -0.230403825808152750, -0.230355170765080330, +-0.230306515146120440, -0.230257858951394250, -0.230209202181023420, -0.230160544835129130, -0.230111886913833940, -0.230063228417259010, -0.230014569345526030, -0.229965909698756160, +-0.229917249477071980, -0.229868588680594650, -0.229819927309445870, -0.229771265363746840, -0.229722602843620060, -0.229673939749186790, -0.229625276080568680, -0.229576611837886910, +-0.229527947021264080, -0.229479281630821370, -0.229430615666680020, -0.229381949128962560, -0.229333282017790240, -0.229284614333284700, -0.229235946075567220, -0.229187277244760290, +-0.229138607840985160, -0.229089937864363520, -0.229041267315016590, -0.228992596193066940, -0.228943924498635790, -0.228895252231844840, -0.228846579392815300, -0.228797905981669770, +-0.228749231998529480, -0.228700557443516080, -0.228651882316750880, -0.228603206618356400, -0.228554530348453910, -0.228505853507164650, -0.228457176094611190, -0.228408498110914790, +-0.228359819556197140, -0.228311140430579510, -0.228262460734184490, -0.228213780467133280, -0.228165099629547650, -0.228116418221548820, -0.228067736243259380, -0.228019053694800610, +-0.227970370576294180, -0.227921686887861410, -0.227873002629624840, -0.227824317801705780, -0.227775632404225940, -0.227726946437306570, -0.227678259901070240, -0.227629572795638310, +-0.227580885121132420, -0.227532196877673870, -0.227483508065385280, -0.227434818684387920, -0.227386128734803100, -0.227337438216753370, -0.227288747130360040, -0.227240055475744830, +-0.227191363253029080, -0.227142670462335330, -0.227093977103784930, -0.227045283177499560, -0.226996588683600560, -0.226947893622210520, -0.226899197993450760, -0.226850501797442980, +-0.226801805034308520, -0.226753107704170010, -0.226704409807148700, -0.226655711343366370, -0.226607012312944330, -0.226558312716005210, -0.226509612552670270, -0.226460911823060910, +-0.226412210527299680, -0.226363508665507920, -0.226314806237807390, -0.226266103244319420, -0.226217399685166630, -0.226168695560470310, -0.226119990870352280, -0.226071285614933840, +-0.226022579794337620, -0.225973873408684940, -0.225925166458097570, -0.225876458942696870, -0.225827750862605450, -0.225779042217944650, -0.225730333008836240, -0.225681623235401560, +-0.225632912897763270, -0.225584201996042680, -0.225535490530361180, -0.225486778500841370, -0.225438065907604600, -0.225389352750772680, -0.225340639030466940, -0.225291924746810030, +-0.225243209899923330, -0.225194494489928590, -0.225145778516947200, -0.225097061981101770, -0.225048344882513710, -0.224999627221304760, -0.224950908997596320, -0.224902190211511060, +-0.224853470863170310, -0.224804750952695860, -0.224756030480209150, -0.224707309445832750, -0.224658587849688090, -0.224609865691896980, -0.224561142972580760, -0.224512419691862110, +-0.224463695849862420, -0.224414971446703050, -0.224366246482506660, -0.224317520957394710, -0.224268794871488930, -0.224220068224910720, -0.224171341017782770, -0.224122613250226480, +-0.224073884922363660, -0.224025156034315690, -0.223976426586205260, -0.223927696578153780, -0.223878966010283040, -0.223830234882714450, -0.223781503195570720, -0.223732770948973230, +-0.223684038143043800, -0.223635304777903860, -0.223586570853676090, -0.223537836370481860, -0.223489101328442630, -0.223440365727681080, -0.223391629568318620, -0.223342892850477090, +-0.223294155574277900, -0.223245417739843720, -0.223196679347296030, -0.223147940396756620, -0.223099200888346950, -0.223050460822189680, -0.223001720198406280, -0.222952979017118580, +-0.222904237278447990, -0.222855494982517250, -0.222806752129447750, -0.222758008719361380, -0.222709264752379570, -0.222660520228625040, -0.222611775148219170, -0.222563029511283460, +-0.222514283317940600, -0.222465536568312030, -0.222416789262519620, -0.222368041400684810, -0.222319292982930320, -0.222270544009377600, -0.222221794480148530, -0.222173044395364530, +-0.222124293755148360, -0.222075542559621450, -0.222026790808905670, -0.221978038503122500, -0.221929285642394670, -0.221880532226843620, -0.221831778256591230, -0.221783023731758950, +-0.221734268652469590, -0.221685513018844510, -0.221636756831005250, -0.221588000089074500, -0.221539242793173770, -0.221490484943424940, -0.221441726539949450, -0.221392967582870080, +-0.221344208072308280, -0.221295448008385990, -0.221246687391224630, -0.221197926220946970, -0.221149164497674520, -0.221100402221529160, -0.221051639392632340, -0.221002876011106850, +-0.220954112077074190, -0.220905347590656250, -0.220856582551974490, -0.220807816961151730, -0.220759050818309400, -0.220710284123569470, -0.220661516877053400, -0.220612749078883950, +-0.220563980729182620, -0.220515211828070930, -0.220466442375671650, -0.220417672372106240, -0.220368901817496660, -0.220320130711964380, -0.220271359055632220, -0.220222586848621640, +-0.220173814091054630, -0.220125040783052620, -0.220076266924738470, -0.220027492516233630, -0.219978717557660080, -0.219929942049139270, -0.219881165990794050, -0.219832389382745940, +-0.219783612225116830, -0.219734834518028280, -0.219686056261603040, -0.219637277455962680, -0.219588498101228710, -0.219539718197523910, -0.219490937744969810, -0.219442156743688390, +-0.219393375193801120, -0.219344593095430830, -0.219295810448699090, -0.219247027253727830, -0.219198243510638550, -0.219149459219554090, -0.219100674380595990, -0.219051888993886220, +-0.219003103059546260, -0.218954316577699010, -0.218905529548465950, -0.218856741971969050, -0.218807953848329910, -0.218759165177671270, -0.218710375960114750, -0.218661586195781830, +-0.218612795884795400, -0.218564005027276960, -0.218515213623348530, -0.218466421673131630, -0.218417629176749090, -0.218368836134322510, -0.218320042545973810, -0.218271248411824580, +-0.218222453731997670, -0.218173658506614600, -0.218124862735797400, -0.218076066419667620, -0.218027269558348110, -0.217978472151960400, -0.217929674200626530, -0.217880875704468040, +-0.217832076663607790, -0.217783277078167360, -0.217734476948268720, -0.217685676274033460, -0.217636875055584430, -0.217588073293043220, -0.217539270986531420, -0.217490468136171840, +-0.217441664742086120, -0.217392860804396210, -0.217344056323223730, -0.217295251298691540, -0.217246445730921220, -0.217197639620034800, -0.217148832966153840, -0.217100025769401210, +-0.217051218029898550, -0.217002409747767830, -0.216953600923130650, -0.216904791556109890, -0.216855981646827150, -0.216807171195404490, -0.216758360201963430, -0.216709548666626920, +-0.216660736589516540, -0.216611923970753910, -0.216563110810461870, -0.216514297108762050, -0.216465482865776490, -0.216416668081626800, -0.216367852756435890, -0.216319036890325310, +-0.216270220483417150, -0.216221403535833020, -0.216172586047695820, -0.216123768019127140, -0.216074949450249050, -0.216026130341183150, -0.215977310692052340, -0.215928490502978270, +-0.215879669774082960, -0.215830848505488060, -0.215782026697316470, -0.215733204349689790, -0.215684381462729700, -0.215635558036559070, -0.215586734071299550, -0.215537909567073190, +-0.215489084524001620, -0.215440258942207780, -0.215391432821813310, -0.215342606162940240, -0.215293778965710200, -0.215244951230246170, -0.215196122956669760, -0.215147294145103060, +-0.215098464795667660, -0.215049634908486550, -0.215000804483681330, -0.214951973521374130, -0.214903142021686560, -0.214854309984741560, -0.214805477410660780, -0.214756644299565870, +-0.214707810651579790, -0.214658976466824190, -0.214610141745421120, -0.214561306487492300, -0.214512470693160620, -0.214463634362547780, -0.214414797495775860, -0.214365960092966490, +-0.214317122154242670, -0.214268283679726030, -0.214219444669538680, -0.214170605123802320, -0.214121765042639860, -0.214072924426172980, -0.214024083274523800, -0.213975241587813950, +-0.213926399366166450, -0.213877556609702950, -0.213828713318545580, -0.213779869492815970, -0.213731025132637110, -0.213682180238130710, -0.213633334809418430, -0.213584488846623230, +-0.213535642349866800, -0.213486795319271280, -0.213437947754958330, -0.213389099657050970, -0.213340251025670840, -0.213291401860940060, -0.213242552162980380, -0.213193701931914730, +-0.213144851167864830, -0.213095999870952820, -0.213047148041300340, -0.212998295679030450, -0.212949442784264810, -0.212900589357125580, -0.212851735397734440, -0.212802880906214380, +-0.212754025882687130, -0.212705170327274370, -0.212656314240099120, -0.212607457621283110, -0.212558600470948430, -0.212509742789216830, -0.212460884576211290, -0.212412025832053540, +-0.212363166556865740, -0.212314306750769570, -0.212265446413888090, -0.212216585546342980, -0.212167724148256410, -0.212118862219750100, -0.212069999760947060, -0.212021136771969020, +-0.211972273252938160, -0.211923409203976150, -0.211874544625206080, -0.211825679516749630, -0.211776813878728540, -0.211727947711265880, -0.211679081014483320, -0.211630213788503080, +-0.211581346033446860, -0.211532477749437700, -0.211483608936597370, -0.211434739595047990, -0.211385869724911360, -0.211336999326310480, -0.211288128399367090, -0.211239256944203370, +-0.211190384960941090, -0.211141512449703280, -0.211092639410611680, -0.211043765843788510, -0.210994891749355460, -0.210946017127435630, -0.210897141978150740, -0.210848266301623010, +-0.210799390097974190, -0.210750513367327310, -0.210701636109804140, -0.210652758325526460, -0.210603880014617330, -0.210555001177198470, -0.210506121813392150, -0.210457241923320050, +-0.210408361507105290, -0.210359480564869640, -0.210310599096735270, -0.210261717102823990, -0.210212834583258850, -0.210163951538161610, -0.210115067967654500, -0.210066183871859270, +-0.210017299250899010, -0.209968414104895530, -0.209919528433971020, -0.209870642238247220, -0.209821755517847260, -0.209772868272892930, -0.209723980503505990, -0.209675092209809510, +-0.209626203391925340, -0.209577314049975620, -0.209528424184082210, -0.209479533794368150, -0.209430642880955280, -0.209381751443965790, -0.209332859483521480, -0.209283966999745470, +-0.209235073992759530, -0.209186180462685920, -0.209137286409646410, -0.209088391833764130, -0.209039496735160840, -0.208990601113958840, -0.208941704970279890, -0.208892808304247140, +-0.208843911115982330, -0.208795013405607330, -0.208746115173245230, -0.208697216419017840, -0.208648317143047410, -0.208599417345455730, -0.208550517026365980, -0.208501616185899910, +-0.208452714824179820, -0.208403812941327480, -0.208354910537466080, -0.208306007612717360, -0.208257104167203670, -0.208208200201046740, -0.208159295714369780, -0.208110390707294560, +-0.208061485179943360, -0.208012579132438010, -0.207963672564901670, -0.207914765477456130, -0.207865857870223240, -0.207816949743326150, -0.207768041096886680, -0.207719131931027120, +-0.207670222245869280, -0.207621312041536330, -0.207572401318150110, -0.207523490075832870, -0.207474578314706480, -0.207425666034894070, -0.207376753236517470, -0.207327839919699030, +-0.207278926084560530, -0.207230011731225160, -0.207181096859814760, -0.207132181470451620, -0.207083265563257600, -0.207034349138355830, -0.206985432195868210, -0.206936514735916980, +-0.206887596758624060, -0.206838678264112560, -0.206789759252504370, -0.206740839723921350, -0.206691919678486660, -0.206642999116322200, -0.206594078037550200, -0.206545156442292600, +-0.206496234330672520, -0.206447311702811890, -0.206398388558832940, -0.206349464898857610, -0.206300540723009050, -0.206251616031409120, -0.206202690824180160, -0.206153765101444040, +-0.206104838863323950, -0.206055912109941760, -0.206006984841419770, -0.205958057057879920, -0.205909128759445340, -0.205860199946237940, -0.205811270618379590, -0.205762340775993540, +-0.205713410419201600, -0.205664479548126140, -0.205615548162889040, -0.205566616263613530, -0.205517683850421460, -0.205468750923435190, -0.205419817482776600, -0.205370883528568910, +-0.205321949060934010, -0.205273014079994240, -0.205224078585871490, -0.205175142578688990, -0.205126206058568630, -0.205077269025632750, -0.205028331480003270, -0.204979393421803380, +-0.204930454851155020, -0.204881515768180090, -0.204832576173001800, -0.204783636065742070, -0.204734695446523260, -0.204685754315467260, -0.204636812672697320, -0.204587870518335320, +-0.204538927852503690, -0.204489984675324280, -0.204441040986920340, -0.204392096787413820, -0.204343152076927050, -0.204294206855581940, -0.204245261123501780, -0.204196314880808440, +-0.204147368127624320, -0.204098420864071370, -0.204049473090272770, -0.204000524806350500, -0.203951576012426920, -0.203902626708623970, -0.203853676895064890, -0.203804726571871600, +-0.203755775739166090, -0.203706824397071550, -0.203657872545709940, -0.203608920185203680, -0.203559967315674660, -0.203511013937246160, -0.203462060050040140, -0.203413105654178940, +-0.203364150749784590, -0.203315195336980250, -0.203266239415887950, -0.203217282986630030, -0.203168326049328500, -0.203119368604106560, -0.203070410651086220, -0.203021452190389830, +-0.202972493222139390, -0.202923533746458130, -0.202874573763468070, -0.202825613273291130, -0.202776652276050570, -0.202727690771868420, -0.202678728760867010, -0.202629766243168360, +-0.202580803218895710, -0.202531839688171070, -0.202482875651116830, -0.202433911107854970, -0.202384946058508740, -0.202335980503200170, -0.202287014442051630, -0.202238047875185150, +-0.202189080802723960, -0.202140113224790090, -0.202091145141505920, -0.202042176552993450, -0.201993207459375960, -0.201944237860775480, -0.201895267757313950, -0.201846297149114700, +-0.201797326036299710, -0.201748354418991390, -0.201699382297311770, -0.201650409671384120, -0.201601436541330450, -0.201552462907273160, -0.201503488769334300, -0.201454514127637150, +-0.201405538982303730, -0.201356563333456450, -0.201307587181217330, -0.201258610525709670, -0.201209633367055500, -0.201160655705377220, -0.201111677540796870, -0.201062698873437780, +-0.201013719703421940, -0.200964740030871360, -0.200915759855909370, -0.200866779178657970, -0.200817797999239630, -0.200768816317776350, -0.200719834134391480, -0.200670851449207020, +-0.200621868262345400, -0.200572884573928720, -0.200523900384080240, -0.200474915692922030, -0.200425930500576500, -0.200376944807165720, -0.200327958612813020, -0.200278971917640440, +-0.200229984721770390, -0.200180997025324990, -0.200132008828427490, -0.200083020131200000, -0.200034030933764930, -0.199985041236244360, -0.199936051038761640, -0.199887060341438770, +-0.199838069144397830, -0.199789077447762140, -0.199740085251653770, -0.199691092556195160, -0.199642099361508420, -0.199593105667716850, -0.199544111474942500, -0.199495116783307890, +-0.199446121592935070, -0.199397125903947340, -0.199348129716466820, -0.199299133030615970, -0.199250135846516850, -0.199201138164292830, -0.199152139984065970, -0.199103141305958740, +-0.199054142130093260, -0.199005142456592820, -0.198956142285579530, -0.198907141617175460, -0.198858140451503990, -0.198809138788687140, -0.198760136628847450, -0.198711133972106990, +-0.198662130818589130, -0.198613127168415950, -0.198564123021709920, -0.198515118378593170, -0.198466113239189060, -0.198417107603619660, -0.198368101472007510, -0.198319094844474660, +-0.198270087721144490, -0.198221080102139120, -0.198172071987581050, -0.198123063377592360, -0.198074054272296430, -0.198025044671815390, -0.197976034576271300, -0.197927023985787570, +-0.197878012900486260, -0.197829001320489920, -0.197779989245920630, -0.197730976676901820, -0.197681963613555580, -0.197632950056004400, -0.197583936004370440, -0.197534921458777050, +-0.197485906419346380, -0.197436890886200920, -0.197387874859462800, -0.197338858339255440, -0.197289841325700930, -0.197240823818921830, -0.197191805819040220, -0.197142787326179540, +-0.197093768340461880, -0.197044748862009820, -0.196995728890945440, -0.196946708427392150, -0.196897687471472130, -0.196848666023307420, -0.196799644083021500, -0.196750621650736480, +-0.196701598726574890, -0.196652575310658860, -0.196603551403111840, -0.196554527004055930, -0.196505502113613730, -0.196456476731907300, -0.196407450859060140, -0.196358424495194360, +-0.196309397640432510, -0.196260370294896710, -0.196211342458710440, -0.196162314131995810, -0.196113285314875400, -0.196064256007471350, -0.196015226209907080, -0.195966195922304740, +-0.195917165144786490, -0.195868133877475760, -0.195819102120494660, -0.195770069873965860, -0.195721037138011420, -0.195672003912754830, -0.195622970198318230, -0.195573935994824200, +-0.195524901302394890, -0.195475866121153780, -0.195426830451222970, -0.195377794292725120, -0.195328757645782340, -0.195279720510518090, -0.195230682887054560, -0.195181644775514310, +-0.195132606176019520, -0.195083567088693620, -0.195034527513658850, -0.194985487451037300, -0.194936446900952460, -0.194887405863526510, -0.194838364338882050, -0.194789322327141250, +-0.194740279828427560, -0.194691236842863190, -0.194642193370570700, -0.194593149411672330, -0.194544104966291490, -0.194495060034550390, -0.194446014616571660, -0.194396968712477440, +-0.194347922322391260, -0.194298875446435260, -0.194249828084732040, -0.194200780237403860, -0.194151731904574130, -0.194102683086365110, -0.194053633782898920, -0.194004583994299070, +-0.193955533720687770, -0.193906482962187650, -0.193857431718920890, -0.193808379991010970, -0.193759327778580100, -0.193710275081750930, -0.193661221900645610, -0.193612168235387680, +-0.193563114086099330, -0.193514059452903200, -0.193465004335921480, -0.193415948735277700, -0.193366892651094020, -0.193317836083493150, -0.193268779032597200, -0.193219721498529780, +-0.193170663481413040, -0.193121604981369650, -0.193072545998521810, -0.193023486532993030, -0.192974426584905550, -0.192925366154381550, -0.192876305241544590, -0.192827243846516870, +-0.192778181969421010, -0.192729119610379280, -0.192680056769515190, -0.192630993446950950, -0.192581929642809240, -0.192532865357212260, -0.192483800590283530, -0.192434735342145340, +-0.192385669612920280, -0.192336603402730620, -0.192287536711699900, -0.192238469539950330, -0.192189401887604580, -0.192140333754784900, -0.192091265141614790, -0.192042196048216540, +-0.191993126474712370, -0.191944056421225830, -0.191894985887879120, -0.191845914874794960, -0.191796843382095600, -0.191747771409904540, -0.191698698958344040, -0.191649626027536820, +-0.191600552617605090, -0.191551478728672400, -0.191502404360861020, -0.191453329514293640, -0.191404254189092520, -0.191355178385381160, -0.191306102103281860, -0.191257025342917330, +-0.191207948104409780, -0.191158870387882820, -0.191109792193458670, -0.191060713521259580, -0.191011634371409170, -0.190962554744029650, -0.190913474639243770, -0.190864394057173760, +-0.190815312997943190, -0.190766231461674350, -0.190717149448489910, -0.190668066958512180, -0.190618983991864720, -0.190569900548669820, -0.190520816629050130, -0.190471732233127970, +-0.190422647361026930, -0.190373562012869260, -0.190324476188777710, -0.190275389888874490, -0.190226303113283260, -0.190177215862126270, -0.190128128135526240, -0.190079039933605450, +-0.190029951256487500, -0.189980862104294660, -0.189931772477149240, -0.189882682375174830, -0.189833591798493710, -0.189784500747228610, -0.189735409221501810, -0.189686317221436950, +-0.189637224747156270, -0.189588131798782530, -0.189539038376438040, -0.189489944480246390, -0.189440850110329880, -0.189391755266811230, -0.189342659949812750, -0.189293564159458080, +-0.189244467895869490, -0.189195371159169730, -0.189146273949481110, -0.189097176266927240, -0.189048078111630410, -0.188998979483712970, -0.188949880383298520, -0.188900780810509340, +-0.188851680765468240, -0.188802580248297490, -0.188753479259120730, -0.188704377798060260, -0.188655275865238860, -0.188606173460778820, -0.188557070584803810, -0.188507967237436100, +-0.188458863418798470, -0.188409759129013250, -0.188360654368204070, -0.188311549136493260, -0.188262443434003580, -0.188213337260857340, -0.188164230617178210, -0.188115123503088480, +-0.188066015918710530, -0.188016907864167970, -0.187967799339583130, -0.187918690345078800, -0.187869580880777320, -0.187820470946802290, -0.187771360543276120, -0.187722249670321530, +-0.187673138328060870, -0.187624026516617830, -0.187574914236114690, -0.187525801486674280, -0.187476688268418930, -0.187427574581472300, -0.187378460425956740, -0.187329345801995010, +-0.187280230709709480, -0.187231115149223830, -0.187181999120660390, -0.187132882624141930, -0.187083765659790850, -0.187034648227730780, -0.186985530328084070, -0.186936411960973130, +-0.186887293126521580, -0.186838173824851820, -0.186789054056086590, -0.186739933820348310, -0.186690813117760650, -0.186641691948445930, -0.186592570312526990, -0.186543448210126170, +-0.186494325641367200, -0.186445202606372370, -0.186396079105264570, -0.186346955138166130, -0.186297830705200730, -0.186248705806490750, -0.186199580442159040, -0.186150454612327900, +-0.186101328317121090, -0.186052201556660940, -0.186003074331069860, -0.185953946640471520, -0.185904818484988330, -0.185855689864743070, -0.185806560779858160, -0.185757431230457290, +-0.185708301216662850, -0.185659170738597640, -0.185610039796384070, -0.185560908390145830, -0.185511776520005330, -0.185462644186085410, -0.185413511388508400, -0.185364378127398090, +-0.185315244402876810, -0.185266110215067420, -0.185216975564092310, -0.185167840450075200, -0.185118704873138500, -0.185069568833404610, -0.185020432330997210, -0.184971295366038760, +-0.184922157938652050, -0.184873020048959500, -0.184823881697084860, -0.184774742883150520, -0.184725603607279300, -0.184676463869593630, -0.184627323670217250, -0.184578183009272560, +-0.184529041886882430, -0.184479900303169240, -0.184430758258256750, -0.184381615752267330, -0.184332472785323910, -0.184283329357548850, -0.184234185469065920, -0.184185041119997510, +-0.184135896310466060, -0.184086751040595300, -0.184037605310507700, -0.183988459120326050, -0.183939312470172810, -0.183890165360171750, -0.183841017790445260, -0.183791869761116250, +-0.183742721272307120, -0.183693572324141600, -0.183644422916742180, -0.183595273050231680, -0.183546122724732560, -0.183496971940368600, -0.183447820697262180, -0.183398668995536220, +-0.183349516835313140, -0.183300364216716720, -0.183251211139869390, -0.183202057604894030, -0.183152903611913080, -0.183103749161050320, -0.183054594252428180, -0.183005438886169100, +-0.182956283062396890, -0.182907126781233940, -0.182857970042803210, -0.182808812847227110, -0.182759655194629390, -0.182710497085132570, -0.182661338518859460, -0.182612179495932610, +-0.182563020016475730, -0.182513860080611300, -0.182464699688462210, -0.182415538840150940, -0.182366377535801260, -0.182317215775535640, -0.182268053559477010, -0.182218890887747760, +-0.182169727760471740, -0.182120564177771390, -0.182071400139769220, -0.182022235646588980, -0.181973070698353140, -0.181923905295184620, -0.181874739437205890, -0.181825573124540780, +-0.181776406357311710, -0.181727239135641650, -0.181678071459653030, -0.181628903329469680, -0.181579734745214080, -0.181530565707009120, -0.181481396214977330, -0.181432226269242460, +-0.181383055869927060, -0.181333885017154000, -0.181284713711045790, -0.181235541951726250, -0.181186369739317840, -0.181137197073943070, -0.181088023955725740, -0.181038850384788370, +-0.180989676361253850, -0.180940501885244710, -0.180891326956884760, -0.180842151576296490, -0.180792975743602840, -0.180743799458926300, -0.180694622722390700, -0.180645445534118570, +-0.180596267894232800, -0.180547089802855940, -0.180497911260111780, -0.180448732266122850, -0.180399552821012080, -0.180350372924902000, -0.180301192577916440, -0.180252011780177880, +-0.180202830531809270, -0.180153648832933190, -0.180104466683673390, -0.180055284084152440, -0.180006101034492850, -0.179956917534818430, -0.179907733585251720, -0.179858549185915680, +-0.179809364336932810, -0.179760179038427000, -0.179710993290520730, -0.179661807093336980, -0.179612620446998270, -0.179563433351628440, -0.179514245807350040, -0.179465057814286010, +-0.179415869372558910, -0.179366680482292570, -0.179317491143609510, -0.179268301356632740, -0.179219111121484780, -0.179169920438289470, -0.179120729307169380, -0.179071537728247020, +-0.179022345701646240, -0.178973153227489610, -0.178923960305900100, -0.178874766937000250, -0.178825573120913910, -0.178776378857763650, -0.178727184147672440, -0.178677988990762810, +-0.178628793387158670, -0.178579597336982530, -0.178530400840357430, -0.178481203897405850, -0.178432006508251720, -0.178382808673017560, -0.178333610391826380, -0.178284411664800750, +-0.178235212492064530, -0.178186012873740280, -0.178136812809950560, -0.178087612300819210, -0.178038411346468860, -0.177989209947022500, -0.177940008102602630, -0.177890805813333220, +-0.177841603079336770, -0.177792399900736340, -0.177743196277654450, -0.177693992210215010, -0.177644787698540580, -0.177595582742754190, -0.177546377342978400, -0.177497171499337110, +-0.177447965211952910, -0.177398758480948770, -0.177349551306447310, -0.177300343688572390, -0.177251135627446630, -0.177201927123192600, -0.177152718175934170, -0.177103508785793950, +-0.177054298952894980, -0.177005088677359810, -0.176955877959312340, -0.176906666798875210, -0.176857455196171380, -0.176808243151323490, -0.176759030664455420, -0.176709817735689780, +-0.176660604365149600, -0.176611390552957460, -0.176562176299237290, -0.176512961604111670, -0.176463746467703660, -0.176414530890135840, -0.176365314871532120, -0.176316098412015120, +-0.176266881511707880, -0.176217664170733010, -0.176168446389214390, -0.176119228167274680, -0.176070009505036460, -0.176020790402623640, -0.175971570860158830, -0.175922350877765120, +-0.175873130455565070, -0.175823909593682660, -0.175774688292240470, -0.175725466551361540, -0.175676244371168520, -0.175627021751785320, -0.175577798693334590, -0.175528575195939340, +-0.175479351259722220, -0.175430126884807160, -0.175380902071316790, -0.175331676819374140, -0.175282451129101870, -0.175233225000623940, -0.175183998434062900, -0.175134771429541450, +-0.175085543987183540, -0.175036316107111730, -0.174987087789449130, -0.174937859034318380, -0.174888629841843450, -0.174839400212146890, -0.174790170145351860, -0.174740939641580970, +-0.174691708700958180, -0.174642477323606080, -0.174593245509647830, -0.174544013259205990, -0.174494780572404580, -0.174445547449366220, -0.174396313890213980, -0.174347079895070510, +-0.174297845464059800, -0.174248610597304450, -0.174199375294927160, -0.174150139557051860, -0.174100903383801210, -0.174051666775298290, -0.174002429731665800, -0.173953192253027630, +-0.173903954339506510, -0.173854715991225480, -0.173805477208307250, -0.173756237990875750, -0.173706998339053680, -0.173657758252964090, -0.173608517732729640, -0.173559276778474380, +-0.173510035390320920, -0.173460793568392360, -0.173411551312811360, -0.173362308623701940, -0.173313065501186750, -0.173263821945388890, -0.173214577956431050, -0.173165333534437190, +-0.173116088679530020, -0.173066843391832180, -0.173017597671467650, -0.172968351518559130, -0.172919104933229730, -0.172869857915602170, -0.172820610465800360, -0.172771362583947040, +-0.172722114270165290, -0.172672865524577830, -0.172623616347308660, -0.172574366738480450, -0.172525116698216300, -0.172475866226638940, -0.172426615323872350, -0.172377363990039220, +-0.172328112225262680, -0.172278860029665410, -0.172229607403371430, -0.172180354346503440, -0.172131100859184120, -0.172081846941537500, -0.172032592593686250, -0.171983337815753530, +-0.171934082607862030, -0.171884826970135740, -0.171835570902697380, -0.171786314405670100, -0.171737057479176610, -0.171687800123340920, -0.171638542338285710, -0.171589284124134160, +-0.171540025481008940, -0.171490766409034100, -0.171441506908332380, -0.171392246979026860, -0.171342986621240280, -0.171293725835096670, -0.171244464620718770, -0.171195202978229240, +-0.171145940907752180, -0.171096678409410230, -0.171047415483326610, -0.170998152129623990, -0.170948888348426450, -0.170899624139856680, -0.170850359504037850, -0.170801094441092680, +-0.170751828951145210, -0.170702563034318160, -0.170653296690734730, -0.170604029920517600, -0.170554762723790830, -0.170505495100677170, -0.170456227051299760, -0.170406958575781340, +-0.170357689674245970, -0.170308420346816400, -0.170259150593615290, -0.170209880414766780, -0.170160609810393550, -0.170111338780618820, -0.170062067325565280, -0.170012795445357020, +-0.169963523140116760, -0.169914250409967720, -0.169864977255032580, -0.169815703675435470, -0.169766429671299070, -0.169717155242746610, -0.169667880389900830, -0.169618605112885790, +-0.169569329411824200, -0.169520053286839330, -0.169470776738053890, -0.169421499765591930, -0.169372222369576190, -0.169322944550129940, -0.169273666307375860, -0.169224387641438070, +-0.169175108552439310, -0.169125829040502360, -0.169076549105751230, -0.169027268748308760, -0.168977987968298100, -0.168928706765842070, -0.168879425141064660, -0.168830143094088720, +-0.168780860625037420, -0.168731577734033520, -0.168682294421201110, -0.168633010686662980, -0.168583726530542320, -0.168534441952961880, -0.168485156954045810, -0.168435871533916840, +-0.168386585692698180, -0.168337299430512620, -0.168288012747484260, -0.168238725643735850, -0.168189438119390190, -0.168140150174571370, -0.168090861809402190, -0.168041573024005850, +-0.167992283818505140, -0.167942994193024160, -0.167893704147685700, -0.167844413682612960, -0.167795122797928770, -0.167745831493757190, -0.167696539770221030, -0.167647247627443540, +-0.167597955065547500, -0.167548662084656990, -0.167499368684894820, -0.167450074866384250, -0.167400780629248040, -0.167351485973610330, -0.167302190899593890, -0.167252895407321550, +-0.167203599496917400, -0.167154303168504240, -0.167105006422205330, -0.167055709258143480, -0.167006411676442780, -0.166957113677226070, -0.166907815260616540, -0.166858516426737070, +-0.166809217175711730, -0.166759917507663340, -0.166710617422715170, -0.166661316920990010, -0.166612016002612020, -0.166562714667703950, -0.166513412916389130, -0.166464110748790310, +-0.166414808165031680, -0.166365505165236020, -0.166316201749526580, -0.166266897918026210, -0.166217593670859030, -0.166168289008147870, -0.166118983930015560, -0.166069678436586210, +-0.166020372527982660, -0.165971066204328190, -0.165921759465745610, -0.165872452312359090, -0.165823144744291410, -0.165773836761665900, -0.165724528364605330, -0.165675219553233890, +-0.165625910327674400, -0.165576600688050140, -0.165527290634483930, -0.165477980167099940, -0.165428669286021010, -0.165379357991370380, -0.165330046283270940, -0.165280734161846830, +-0.165231421627220850, -0.165182108679515910, -0.165132795318856110, -0.165083481545364340, -0.165034167359163850, -0.164984852760377530, -0.164935537749129500, -0.164886222325542620, +-0.164836906489740200, -0.164787590241845060, -0.164738273581981400, -0.164688956510272020, -0.164639639026840280, -0.164590321131808990, -0.164541002825302350, -0.164491684107443190, +-0.164442364978354850, -0.164393045438160130, -0.164343725486983230, -0.164294405124947030, -0.164245084352174390, -0.164195763168789450, -0.164146441574915120, -0.164097119570674690, +-0.164047797156191000, -0.163998474331588260, -0.163949151096989350, -0.163899827452517580, -0.163850503398295770, -0.163801178934448150, -0.163751854061097570, -0.163702528778367380, +-0.163653203086380400, -0.163603876985260880, -0.163554550475131650, -0.163505223556116050, -0.163455896228336950, -0.163406568491918560, -0.163357240346983730, -0.163307911793655390, +-0.163258582832057690, -0.163209253462313520, -0.163159923684546240, -0.163110593498878690, -0.163061262905435100, -0.163011931904338350, -0.162962600495711790, -0.162913268679678290, +-0.162863936456362050, -0.162814603825885950, -0.162765270788373360, -0.162715937343947150, -0.162666603492731540, -0.162617269234849400, -0.162567934570424120, -0.162518599499578530, +-0.162469264022436920, -0.162419928139122120, -0.162370591849757500, -0.162321255154465970, -0.162271918053371740, -0.162222580546597720, -0.162173242634266800, -0.162123904316503230, +-0.162074565593429890, -0.162025226465170120, -0.161975886931846860, -0.161926546993584330, -0.161877206650505420, -0.161827865902733490, -0.161778524750391480, -0.161729183193603580, +-0.161679841232492710, -0.161630498867182250, -0.161581156097795110, -0.161531812924455510, -0.161482469347286380, -0.161433125366411080, -0.161383780981952520, -0.161334436194034950, +-0.161285091002781290, -0.161235745408314450, -0.161186399410758710, -0.161137053010236950, -0.161087706206872570, -0.161038359000788500, -0.160989011392108940, -0.160939663380956890, +-0.160890314967455650, -0.160840966151728190, -0.160791616933898760, -0.160742267314090280, -0.160692917292426130, -0.160643566869029250, -0.160594216044023910, -0.160544864817533020, +-0.160495513189679940, -0.160446161160587690, -0.160396808730380420, -0.160347455899181170, -0.160298102667112840, -0.160248749034299670, -0.160199395000864640, -0.160150040566931110, +-0.160100685732622070, -0.160051330498061720, -0.160001974863373060, -0.159952618828679450, -0.159903262394103880, -0.159853905559770580, -0.159804548325802510, -0.159755190692323080, +-0.159705832659455200, -0.159656474227323240, -0.159607115396050050, -0.159557756165759070, -0.159508396536573280, -0.159459036508616920, -0.159409676082012980, -0.159360315256884850, +-0.159310954033355490, -0.159261592411549190, -0.159212230391588910, -0.159162867973597600, -0.159113505157699560, -0.159064141944017770, -0.159014778332675630, -0.158965414323796100, +-0.158916049917503470, -0.158866685113920710, -0.158817319913171250, -0.158767954315378050, -0.158718588320665380, -0.158669221929156250, -0.158619855140974100, -0.158570487956241820, +-0.158521120375083780, -0.158471752397622960, -0.158422384023982730, -0.158373015254286130, -0.158323646088657400, -0.158274276527219570, -0.158224906570095610, -0.158175536217409820, +-0.158126165469285210, -0.158076794325845150, -0.158027422787212680, -0.157978050853512100, -0.157928678524866390, -0.157879305801398970, -0.157829932683232870, -0.157780559170492360, +-0.157731185263300460, -0.157681810961780610, -0.157632436266055780, -0.157583061176250290, -0.157533685692487160, -0.157484309814889780, -0.157434933543581230, -0.157385556878685770, +-0.157336179820326410, -0.157286802368626190, -0.157237424523709370, -0.157188046285699020, -0.157138667654718540, -0.157089288630890940, -0.157039909214340580, -0.156990529405190430, +-0.156941149203563950, -0.156891768609584180, -0.156842387623375410, -0.156793006245060680, -0.156743624474763420, -0.156694242312606670, -0.156644859758714760, -0.156595476813210700, +-0.156546093476217920, -0.156496709747859510, -0.156447325628259750, -0.156397941117541660, -0.156348556215828300, -0.156299170923243970, -0.156249785239911730, -0.156200399165955020, +-0.156151012701496870, -0.156101625846661620, -0.156052238601572300, -0.156002850966352410, -0.155953462941124940, -0.155904074526014260, -0.155854685721143390, -0.155805296526635800, +-0.155755906942614510, -0.155706516969203930, -0.155657126606527030, -0.155607735854707330, -0.155558344713867840, -0.155508953184132940, -0.155459561265625660, -0.155410168958469460, +-0.155360776262787410, -0.155311383178703850, -0.155261989706341840, -0.155212595845824420, -0.155163201597275950, -0.155113806960819470, -0.155064411936578470, -0.155015016524676000, +-0.154965620725236420, -0.154916224538382800, -0.154866827964238620, -0.154817431002926940, -0.154768033654572120, -0.154718635919297190, -0.154669237797225690, -0.154619839288480660, +-0.154570440393186460, -0.154521041111466170, -0.154471641443443270, -0.154422241389240820, -0.154372840948983210, -0.154323440122793500, -0.154274038910794780, -0.154224637313111370, +-0.154175235329866350, -0.154125832961183260, -0.154076430207185170, -0.154027027067996420, -0.153977623543740120, -0.153928219634539730, -0.153878815340518370, -0.153829410661800420, +-0.153780005598508930, -0.153730600150767420, -0.153681194318699000, -0.153631788102428000, -0.153582381502077560, -0.153532974517771150, -0.153483567149631850, -0.153434159397784100, +-0.153384751262350930, -0.153335342743455450, -0.153285933841222080, -0.153236524555773830, -0.153187114887234300, -0.153137704835726530, -0.153088294401374920, -0.153038883584302590, +-0.152989472384633060, -0.152940060802489420, -0.152890648837996050, -0.152841236491276070, -0.152791823762452980, -0.152742410651649900, -0.152692997158991230, -0.152643583284600070, +-0.152594169028599960, -0.152544754391113980, -0.152495339372266530, -0.152445923972180760, -0.152396508190980190, -0.152347092028787880, -0.152297675485728280, -0.152248258561924530, +-0.152198841257499660, -0.152149423572578130, -0.152100005507283060, -0.152050587061737960, -0.152001168236065960, -0.151951749030391460, -0.151902329444837610, -0.151852909479527930, +-0.151803489134585550, -0.151754068410134860, -0.151704647306299010, -0.151655225823201570, -0.151605803960965600, -0.151556381719715550, -0.151506959099574540, -0.151457536100666150, +-0.151408112723113500, -0.151358688967040970, -0.151309264832571730, -0.151259840319828890, -0.151210415428936900, -0.151160990160018850, -0.151111564513198350, -0.151062138488598480, +-0.151012712086343730, -0.150963285306557170, -0.150913858149362400, -0.150864430614882560, -0.150815002703242080, -0.150765574414564090, -0.150716145748972160, -0.150666716706589430, +-0.150617287287540340, -0.150567857491948040, -0.150518427319936090, -0.150468996771627640, -0.150419565847147140, -0.150370134546617710, -0.150320702870162530, -0.150271270817906010, +-0.150221838389971300, -0.150172405586482010, -0.150122972407561280, -0.150073538853333550, -0.150024104923921990, -0.149974670619450130, -0.149925235940041170, -0.149875800885819560, +-0.149826365456908470, -0.149776929653431450, -0.149727493475511650, -0.149678056923273570, -0.149628619996840350, -0.149579182696335580, -0.149529745021882400, -0.149480306973605310, +-0.149430868551627460, -0.149381429756071990, -0.149331990587063400, -0.149282551044724790, -0.149233111129179840, -0.149183670840551670, -0.149134230178964770, -0.149084789144542260, +-0.149035347737407810, -0.148985905957684540, -0.148936463805496940, -0.148887021280968200, -0.148837578384221870, -0.148788135115381190, -0.148738691474570610, -0.148689247461913280, +-0.148639803077532830, -0.148590358321552460, -0.148540913194096620, -0.148491467695288480, -0.148442021825251680, -0.148392575584109400, -0.148343128971986120, -0.148293681989005000, +-0.148244234635289240, -0.148194786910963360, -0.148145338816150500, -0.148095890350974260, -0.148046441515557880, -0.147996992310025830, -0.147947542734501310, -0.147898092789107930, +-0.147848642473968890, -0.147799191789208670, -0.147749740734950450, -0.147700289311317900, -0.147650837518434190, -0.147601385356423840, -0.147551932825409990, -0.147502479925516320, +-0.147453026656866020, -0.147403573019583590, -0.147354119013792250, -0.147304664639615140, -0.147255209897176800, -0.147205754786600470, -0.147156299308009750, -0.147106843461527830, +-0.147057387247279240, -0.147007930665387170, -0.146958473715975290, -0.146909016399166790, -0.146859558715086160, -0.146810100663856660, -0.146760642245601900, -0.146711183460445090, +-0.146661724308510770, -0.146612264789922150, -0.146562804904802860, -0.146513344653276120, -0.146463884035466420, -0.146414423051497070, -0.146364961701491190, -0.146315499985573330, +-0.146266037903866750, -0.146216575456495080, -0.146167112643581510, -0.146117649465250600, -0.146068185921625570, -0.146018722012830090, -0.145969257738987330, -0.145919793100221910, +-0.145870328096656980, -0.145820862728416240, -0.145771396995622890, -0.145721930898401490, -0.145672464436875290, -0.145622997611167900, -0.145573530421402590, -0.145524062867703860, +-0.145474594950195020, -0.145425126668999680, -0.145375658024241070, -0.145326189016043740, -0.145276719644530980, -0.145227249909825970, -0.145177779812053260, -0.145128309351336110, +-0.145078838527798180, -0.145029367341562710, -0.144979895792754280, -0.144930423881496070, -0.144880951607911840, -0.144831478972124780, -0.144782005974259470, -0.144732532614439140, +-0.144683058892787490, -0.144633584809427730, -0.144584110364484460, -0.144534635558080910, -0.144485160390340760, -0.144435684861387280, -0.144386208971345050, -0.144336732720337260, +-0.144287256108487220, -0.144237779135919480, -0.144188301802757300, -0.144138824109124350, -0.144089346055143900, -0.144039867640940510, -0.143990388866637480, -0.143940909732358460, +-0.143891430238226730, -0.143841950384366870, -0.143792470170902130, -0.143742989597956230, -0.143693508665652390, -0.143644027374115250, -0.143594545723468000, -0.143545063713834410, +-0.143495581345337710, -0.143446098618102510, -0.143396615532252080, -0.143347132087909640, -0.143297648285199810, -0.143248164124245870, -0.143198679605171520, -0.143149194728100030, +-0.143099709493156010, -0.143050223900462680, -0.143000737950143810, -0.142951251642322670, -0.142901764977123810, -0.142852277954670560, -0.142802790575086630, -0.142753302838495240, +-0.142703814745021060, -0.142654326294787360, -0.142604837487917800, -0.142555348324535730, -0.142505858804765740, -0.142456368928731090, -0.142406878696555080, -0.142357388108362320, +-0.142307897164276080, -0.142258405864420100, -0.142208914208917650, -0.142159422197893380, -0.142109929831470560, -0.142060437109772900, -0.142010944032923690, -0.141961450601047590, +-0.141911956814267850, -0.141862462672708220, -0.141812968176491970, -0.141763473325743770, -0.141713978120586890, -0.141664482561145060, -0.141614986647541570, -0.141565490379901040, +-0.141515993758346810, -0.141466496783002600, -0.141416999453991690, -0.141367501771438750, -0.141318003735467020, -0.141268505346199860, -0.141219006603761880, -0.141169507508276370, +-0.141120008059867100, -0.141070508258657360, -0.141021008104771810, -0.140971507598333710, -0.140922006739466870, -0.140872505528294560, -0.140823003964941430, -0.140773502049530790, +-0.140723999782186390, -0.140674497163031570, -0.140624994192190910, -0.140575490869787790, -0.140525987195945950, -0.140476483170788670, -0.140426978794440660, -0.140377474067025170, +-0.140327968988665590, -0.140278463559486500, -0.140228957779611250, -0.140179451649163620, -0.140129945168266910, -0.140080438337045780, -0.140030931155623570, -0.139981423624124020, +-0.139931915742670470, -0.139882407511387560, -0.139832898930398660, -0.139783389999827480, -0.139733880719797390, -0.139684371090433050, -0.139634861111857800, -0.139585350784195370, +-0.139535840107569140, -0.139486329082103730, -0.139436817707922520, -0.139387305985148810, -0.139337793913907270, -0.139288281494321260, -0.139238768726514530, -0.139189255610610460, +-0.139139742146733690, -0.139090228335007530, -0.139040714175555830, -0.138991199668501900, -0.138941684813970430, -0.138892169612084730, -0.138842654062968580, -0.138793138166745380, +-0.138743621923539780, -0.138694105333475120, -0.138644588396675210, -0.138595071113263360, -0.138545553483364280, -0.138496035507101320, -0.138446517184598270, -0.138396998515978500, +-0.138347479501366670, -0.138297960140886130, -0.138248440434660250, -0.138198920382813730, -0.138149399985469910, -0.138099879242752550, -0.138050358154785090, -0.138000836721692170, +-0.137951314943597140, -0.137901792820623810, -0.137852270352895600, -0.137802747540537120, -0.137753224383671800, -0.137703700882423400, -0.137654177036915320, -0.137604652847272220, +-0.137555128313617490, -0.137505603436074960, -0.137456078214767960, -0.137406552649821210, -0.137357026741358080, -0.137307500489501970, -0.137257973894377520, -0.137208446956108120, +-0.137158919674817640, -0.137109392050629390, -0.137059864083668100, -0.137010335774057190, -0.136960807121920410, -0.136911278127381160, -0.136861748790564170, -0.136812219111592800, +-0.136762689090590920, -0.136713158727681830, -0.136663628022990310, -0.136614096976639700, -0.136564565588753880, -0.136515033859456180, -0.136465501788871320, -0.136415969377122750, +-0.136366436624333790, -0.136316903530629170, -0.136267370096132300, -0.136217836320967010, -0.136168302205256690, -0.136118767749126040, -0.136069232952698490, -0.136019697816097850, +-0.135970162339447530, -0.135920626522872230, -0.135871090366495360, -0.135821553870440790, -0.135772017034831880, -0.135722479859793380, -0.135672942345448660, -0.135623404491921590, +-0.135573866299335570, -0.135524327767815340, -0.135474788897484270, -0.135425249688465810, -0.135375710140884650, -0.135326170254864210, -0.135276630030528370, -0.135227089468000490, +-0.135177548567405330, -0.135128007328866290, -0.135078465752507260, -0.135028923838451610, -0.134979381586824070, -0.134929838997748100, -0.134880296071347520, -0.134830752807745790, +-0.134781209207067570, -0.134731665269436360, -0.134682120994975980, -0.134632576383809850, -0.134583031436062730, -0.134533486151858030, -0.134483940531319620, -0.134434394574570900, +-0.134384848281736660, -0.134335301652940280, -0.134285754688305200, -0.134236207387956190, -0.134186659752016660, -0.134137111780610470, -0.134087563473861080, -0.134038014831893200, +-0.133988465854830290, -0.133938916542796220, -0.133889366895914410, -0.133839816914309630, -0.133790266598105310, -0.133740715947425310, -0.133691164962393080, -0.133641613643133400, +-0.133592061989769670, -0.133542510002425780, -0.133492957681225180, -0.133443405026292650, -0.133393852037751590, -0.133344298715725450, -0.133294745060339000, -0.133245191071715700, +-0.133195636749979420, -0.133146082095253610, -0.133096527107663040, -0.133046971787331130, -0.132997416134381820, -0.132947860148938500, -0.132898303831126000, -0.132848747181067710, +-0.132799190198887580, -0.132749632884709010, -0.132700075238656820, -0.132650517260854420, -0.132600958951425730, -0.132551400310494230, -0.132501841338184660, -0.132452282034620480, +-0.132402722399925150, -0.132353162434223460, -0.132303602137638840, -0.132254041510295240, -0.132204480552316090, -0.132154919263826190, -0.132105357644948990, -0.132055795695808390, +-0.132006233416527840, -0.131956670807232170, -0.131907107868044830, -0.131857544599089690, -0.131807981000490270, -0.131758417072371350, -0.131708852814856360, -0.131659288228069240, +-0.131609723312133470, -0.131560158067173830, -0.131510592493313820, -0.131461026590677290, -0.131411460359387780, -0.131361893799570060, -0.131312326911347590, -0.131262759694843860, +-0.131213192150183680, -0.131163624277490510, -0.131114056076888280, -0.131064487548500470, -0.131014918692451910, -0.130965349508866010, -0.130915779997866770, -0.130866210159577640, +-0.130816639994123410, -0.130767069501627560, -0.130717498682214080, -0.130667927536006370, -0.130618356063129330, -0.130568784263706360, -0.130519212137861440, -0.130469639685718060, +-0.130420066907401020, -0.130370493803033780, -0.130320920372739900, -0.130271346616644160, -0.130221772534870020, -0.130172198127541490, -0.130122623394782010, -0.130073048336716400, +-0.130023472953468190, -0.129973897245161290, -0.129924321211919190, -0.129874744853866740, -0.129825168171127440, -0.129775591163825200, -0.129726013832083540, -0.129676436176027310, +-0.129626858195779960, -0.129577279891465470, -0.129527701263207370, -0.129478122311130430, -0.129428543035358200, -0.129378963436014150, -0.129329383513223150, -0.129279803267108690, +-0.129230222697794720, -0.129180641805404760, -0.129131060590063600, -0.129081479051894820, -0.129031897191022340, -0.128982315007569680, -0.128932732501661680, -0.128883149673421820, +-0.128833566522974120, -0.128783983050442030, -0.128734399255950450, -0.128684815139622850, -0.128635230701583230, -0.128585645941955070, -0.128536060860863250, -0.128486475458431280, +-0.128436889734783120, -0.128387303690042310, -0.128337717324333660, -0.128288130637780720, -0.128238543630507020, -0.128188956302637410, -0.128139368654295400, -0.128089780685604950, +-0.128040192396689620, -0.127990603787674270, -0.127941014858682390, -0.127891425609837990, -0.127841836041264560, -0.127792246153086990, -0.127742655945428800, -0.127693065418413990, +-0.127643474572166070, -0.127593883406809880, -0.127544291922469020, -0.127494700119267390, -0.127445107997328610, -0.127395515556777470, -0.127345922797737540, -0.127296329720332390, +-0.127246736324686830, -0.127197142610924440, -0.127147548579169180, -0.127097954229544650, -0.127048359562175640, -0.126998764577185730, -0.126949169274698900, -0.126899573654838730, +-0.126849977717730070, -0.126800381463496450, -0.126750784892261880, -0.126701188004149900, -0.126651590799285400, -0.126601993277791920, -0.126552395439793460, -0.126502797285413580, +-0.126453198814777120, -0.126403600028007680, -0.126354000925228800, -0.126304401506565360, -0.126254801772140910, -0.126205201722079470, -0.126155601356504580, -0.126106000675541120, +-0.126056399679312650, -0.126006798367943210, -0.125957196741556310, -0.125907594800276860, -0.125857992544228410, -0.125808389973535000, -0.125758787088320170, -0.125709183888708830, +-0.125659580374824500, -0.125609976546791240, -0.125560372404732580, -0.125510767948773440, -0.125461163179037380, -0.125411558095647970, -0.125361952698730100, -0.125312346988407370, +-0.125262740964803750, -0.125213134628042840, -0.125163527978249560, -0.125113921015547440, -0.125064313740060500, -0.125014706151912350, -0.124965098251227880, -0.124915490038130670, +-0.124865881512744720, -0.124816272675193630, -0.124766663525602310, -0.124717054064094320, -0.124667444290793700, -0.124617834205824020, -0.124568223809310210, -0.124518613101375820, +-0.124469002082144910, -0.124419390751741060, -0.124369779110289170, -0.124320167157912820, -0.124270554894735620, -0.124220942320882470, -0.124171329436476980, -0.124121716241643160, +-0.124072102736504600, -0.124022488921186220, -0.123972874795811640, -0.123923260360504860, -0.123873645615389480, -0.123824030560590420, -0.123774415196231310, -0.123724799522436150, +-0.123675183539328550, -0.123625567247033430, -0.123575950645674390, -0.123526333735375480, -0.123476716516260300, -0.123427098988453750, -0.123377481152079470, -0.123327863007261030, +-0.123278244554123400, -0.123228625792790130, -0.123179006723385320, -0.123129387346032540, -0.123079767660856740, -0.123030147667981510, -0.122980527367530910, -0.122930906759628560, +-0.122881285844399380, -0.122831664621966980, -0.122782043092455430, -0.122732421255988320, -0.122682799112690600, -0.122633176662685890, -0.122583553906098240, -0.122533930843051250, +-0.122484307473669880, -0.122434683798077750, -0.122385059816398470, -0.122335435528756980, -0.122285810935276880, -0.122236186036082270, -0.122186560831296750, -0.122136935321045280, +-0.122087309505451460, -0.122037683384639370, -0.121988056958732630, -0.121938430227856190, -0.121888803192133670, -0.121839175851689140, -0.121789548206646240, -0.121739920257129920, +-0.121690292003263770, -0.121640663445171910, -0.121591034582977940, -0.121541405416806830, -0.121491775946782220, -0.121442146173028150, -0.121392516095668280, -0.121342885714827560, +-0.121293255030629630, -0.121243624043198120, -0.121193992752657990, -0.121144361159132880, -0.121094729262746860, -0.121045097063623580, -0.120995464561888010, -0.120945831757663750, +-0.120896198651074940, -0.120846565242245170, -0.120796931531299450, -0.120747297518361390, -0.120697663203555090, -0.120648028587004190, -0.120598393668833650, -0.120548758449167130, +-0.120499122928128710, -0.120449487105842050, -0.120399850982432120, -0.120350214558022560, -0.120300577832737010, -0.120250940806700470, -0.120201303480036560, -0.120151665852869400, +-0.120102027925322650, -0.120052389697521260, -0.120002751169588890, -0.119953112341649650, -0.119903473213827190, -0.119853833786246480, -0.119804194059031190, -0.119754554032305410, +-0.119704913706192810, -0.119655273080818360, -0.119605632156305740, -0.119555990932779020, -0.119506349410361900, -0.119456707589179340, -0.119407065469355010, -0.119357423051012570, +-0.119307780334277020, -0.119258137319272030, -0.119208494006121680, -0.119158850394949670, -0.119109206485880960, -0.119059562279039230, -0.119009917774548610, -0.118960272972532750, +-0.118910627873116640, -0.118860982476423970, -0.118811336782578840, -0.118761690791704930, -0.118712044503927240, -0.118662397919369430, -0.118612751038155620, -0.118563103860409500, +-0.118513456386256060, -0.118463808615818980, -0.118414160549221940, -0.118364512186589930, -0.118314863528046640, -0.118265214573716210, -0.118215565323722280, -0.118165915778189880, +-0.118116265937242710, -0.118066615801004860, -0.118016965369600030, -0.117967314643153230, -0.117917663621788140, -0.117868012305628910, -0.117818360694799190, -0.117768708789424010, +-0.117719056589627060, -0.117669404095532460, -0.117619751307263920, -0.117570098224946450, -0.117520444848703720, -0.117470791178659880, -0.117421137214938620, -0.117371482957664960, +-0.117321828406962610, -0.117272173562955220, -0.117222518425767850, -0.117172862995524190, -0.117123207272348360, -0.117073551256364080, -0.117023894947696360, -0.116974238346468900, +-0.116924581452805850, -0.116874924266830910, -0.116825266788669090, -0.116775609018444100, -0.116725950956280090, -0.116676292602300770, -0.116626633956631160, -0.116576975019394960, +-0.116527315790716320, -0.116477656270718950, -0.116427996459527880, -0.116378336357266830, -0.116328675964059480, -0.116279015280030900, -0.116229354305304760, -0.116179693040005250, +-0.116130031484256060, -0.116080369638182250, -0.116030707501907500, -0.115981045075555980, -0.115931382359251410, -0.115881719353118820, -0.115832056057281930, -0.115782392471864910, +-0.115732728596991460, -0.115683064432786640, -0.115633399979374150, -0.115583735236878160, -0.115534070205422400, -0.115484404885131900, -0.115434739276130390, -0.115385073378541580, +-0.115335407192490540, -0.115285740718100980, -0.115236073955497060, -0.115186406904802520, -0.115136739566142400, -0.115087071939640430, -0.115037404025420800, -0.114987735823607200, +-0.114938067334324700, -0.114888398557697040, -0.114838729493848380, -0.114789060142902450, -0.114739390504984330, -0.114689720580217720, -0.114640050368726810, -0.114590379870635330, +-0.114540709086068340, -0.114491038015149580, -0.114441366658003220, -0.114391695014753020, -0.114342023085524010, -0.114292350870439940, -0.114242678369624570, -0.114193005583202920, +-0.114143332511298770, -0.114093659154036280, -0.114043985511539210, -0.113994311583932630, -0.113944637371340250, -0.113894962873886270, -0.113845288091694460, -0.113795613024889870, +-0.113745937673596240, -0.113696262037937770, -0.113646586118038200, -0.113596909914022600, -0.113547233426014750, -0.113497556654138800, -0.113447879598518510, -0.113398202259278980, +-0.113348524636543920, -0.113298846730437120, -0.113249168541083650, -0.113199490068607260, -0.113149811313132130, -0.113100132274782050, -0.113050452953682070, -0.113000773349955950, +-0.112951093463727910, -0.112901413295121700, -0.112851732844262380, -0.112802052111273740, -0.112752371096279960, -0.112702689799404810, -0.112653008220773380, -0.112603326360509450, +-0.112553644218737180, -0.112503961795580370, -0.112454279091164090, -0.112404596105612110, -0.112354912839048210, -0.112305229291597460, -0.112255545463383640, -0.112205861354530950, +-0.112156176965163180, -0.112106492295405400, -0.112056807345381380, -0.112007122115215350, -0.111957436605031090, -0.111907750814953660, -0.111858064745106860, -0.111808378395614890, +-0.111758691766601540, -0.111709004858191890, -0.111659317670509750, -0.111609630203679300, -0.111559942457824340, -0.111510254433069960, -0.111460566129539950, -0.111410877547358080, +-0.111361188686649460, -0.111311499547537860, -0.111261810130147520, -0.111212120434602210, -0.111162430461027040, -0.111112740209545800, -0.111063049680282700, -0.111013358873361540, +-0.110963667788907430, -0.110913976427044130, -0.110864284787895910, -0.110814592871586530, -0.110764900678241100, -0.110715208207983430, -0.110665515460937740, -0.110615822437227810, +-0.110566129136978770, -0.110516435560314420, -0.110466741707358970, -0.110417047578236230, -0.110367353173071290, -0.110317658491987990, -0.110267963535110110, -0.110218268302562730, +-0.110168572794469700, -0.110118877010955240, -0.110069180952143140, -0.110019484618158540, -0.109969788009125210, -0.109920091125167430, -0.109870393966408980, -0.109820696532974970, +-0.109770998824989220, -0.109721300842575990, -0.109671602585859050, -0.109621904054963550, -0.109572205250013290, -0.109522506171132520, -0.109472806818445040, -0.109423107192075990, +-0.109373407292149170, -0.109323707118788390, -0.109274006672118770, -0.109224305952264150, -0.109174604959348760, -0.109124903693496420, -0.109075202154832250, -0.109025500343480090, +-0.108975798259564170, -0.108926095903208310, -0.108876393274537660, -0.108826690373676020, -0.108776987200747670, -0.108727283755876400, -0.108677580039187360, -0.108627876050804370, +-0.108578171790851690, -0.108528467259453140, -0.108478762456733870, -0.108429057382817680, -0.108379352037828420, -0.108329646421891200, -0.108279940535129890, -0.108230234377668710, +-0.108180527949631510, -0.108130821251143430, -0.108081114282328310, -0.108031407043310380, -0.107981699534213510, -0.107931991755162830, -0.107882283706282150, -0.107832575387695780, +-0.107782866799527530, -0.107733157941902550, -0.107683448814944680, -0.107633739418778180, -0.107584029753526910, -0.107534319819315980, -0.107484609616269270, -0.107434899144511030, +-0.107385188404165100, -0.107335477395356630, -0.107285766118209490, -0.107236054572847480, -0.107186342759395770, -0.107136630677978210, -0.107086918328719070, -0.107037205711742190, +-0.106987492827172740, -0.106937779675134560, -0.106888066255751940, -0.106838352569148700, -0.106788638615450020, -0.106738924394779750, -0.106689209907262160, -0.106639495153021110, +-0.106589780132181760, -0.106540064844867970, -0.106490349291204020, -0.106440633471313730, -0.106390917385322320, -0.106341201033353610, -0.106291484415531460, -0.106241767531981040, +-0.106192050382826200, -0.106142332968191230, -0.106092615288199990, -0.106042897342977660, -0.105993179132648070, -0.105943460657335540, -0.105893741917163910, -0.105844022912258390, +-0.105794303642742800, -0.105744584108741440, -0.105694864310378180, -0.105645144247778210, -0.105595423921065380, -0.105545703330363990, -0.105495982475797900, -0.105446261357492290, +-0.105396539975571020, -0.105346818330157980, -0.105297096421378330, -0.105247374249355930, -0.105197651814215090, -0.105147929116079690, -0.105098206155074900, -0.105048482931324600, +-0.104998759444953100, -0.104949035696084240, -0.104899311684843250, -0.104849587411353970, -0.104799862875740740, -0.104750138078127400, -0.104700413018639150, -0.104650687697399870, +-0.104600962114533870, -0.104551236270165030, -0.104501510164418540, -0.104451783797418280, -0.104402057169288100, -0.104352330280153230, -0.104302603130137530, -0.104252875719365340, +-0.104203148047960490, -0.104153420116048240, -0.104103691923752420, -0.104053963471197390, -0.104004234758506980, -0.103954505785806450, -0.103904776553219640, -0.103855047060870900, +-0.103805317308884090, -0.103755587297384450, -0.103705857026495820, -0.103656126496342550, -0.103606395707048530, -0.103556664658738960, -0.103506933351537720, -0.103457201785569160, +-0.103407469960957150, -0.103357737877826900, -0.103308005536302320, -0.103258272936507270, -0.103208540078566990, -0.103158806962605350, -0.103109073588746700, -0.103059339957114910, +-0.103009606067835230, -0.102959871921031520, -0.102910137516828150, -0.102860402855348980, -0.102810667936719240, -0.102760932761062840, -0.102711197328504100, -0.102661461639166940, +-0.102611725693176560, -0.102561989490656850, -0.102512253031732180, -0.102462516316526450, -0.102412779345164850, -0.102363042117771310, -0.102313304634469720, -0.102263566895385310, +-0.102213828900641980, -0.102164090650364090, -0.102114352144675530, -0.102064613383701530, -0.102014874367565980, -0.101965135096393270, -0.101915395570307250, -0.101865655789433210, +-0.101815915753895020, -0.101766175463817040, -0.101716434919323180, -0.101666694120538680, -0.101616953067587430, -0.101567211760593810, -0.101517470199681710, -0.101467728384976390, +-0.101417986316601750, -0.101368243994681680, -0.101318501419341470, -0.101268758590704990, -0.101219015508896610, -0.101169272174040260, -0.101119528586261160, -0.101069784745683250, +-0.101020040652430880, -0.100970296306627960, -0.100920551708399740, -0.100870806857870140, -0.100821061755163520, -0.100771316400403810, -0.100721570793716260, -0.100671824935224770, +-0.100622078825053710, -0.100572332463327030, -0.100522585850169950, -0.100472838985706410, -0.100423091870060770, -0.100373344503356960, -0.100323596885720230, -0.100273849017274500, +-0.100224100898143720, -0.100174352528453120, -0.100124603908326640, -0.100074855037888650, -0.100025105917263090, -0.099975356546575203, -0.099925606925948915, -0.099875857055508624, +-0.099826106935378231, -0.099776356565683025, -0.099726605946546920, -0.099676855078094304, -0.099627103960449118, -0.099577352593736609, -0.099527600978080707, -0.099477849113605812, +-0.099428097000435853, -0.099378344638696089, -0.099328592028510465, -0.099278839170002922, -0.099229086063298721, -0.099179332708521806, -0.099129579105796561, -0.099079825255246917, +-0.099030071156998162, -0.098980316811174224, -0.098930562217899504, -0.098880807377297916, -0.098831052289494764, -0.098781296954613990, -0.098731541372779966, -0.098681785544116635, +-0.098632029468749299, -0.098582273146801888, -0.098532516578398788, -0.098482759763663955, -0.098433002702722663, -0.098383245395698871, -0.098333487842716519, -0.098283730043900883, +-0.098233971999375932, -0.098184213709266041, -0.098134455173695193, -0.098084696392788634, -0.098034937366670336, -0.097985178095464698, -0.097935418579295663, -0.097885658818288535, +-0.097835898812567254, -0.097786138562256222, -0.097736378067479410, -0.097686617328362091, -0.097636856345028236, -0.097587095117602232, -0.097537333646208049, -0.097487571930970976, +-0.097437809972014969, -0.097388047769463998, -0.097338285323443352, -0.097288522634076988, -0.097238759701489333, -0.097188996525804316, -0.097139233107147255, -0.097089469445642118, +-0.097039705541413307, -0.096989941394584792, -0.096940177005281861, -0.096890412373628484, -0.096840647499749077, -0.096790882383767610, -0.096741117025809384, -0.096691351425998356, +-0.096641585584458956, -0.096591819501315151, -0.096542053176692233, -0.096492286610714198, -0.096442519803505433, -0.096392752755189923, -0.096342985465892983, -0.096293217935738570, +-0.096243450164850683, -0.096193682153354609, -0.096143913901374320, -0.096094145409034257, -0.096044376676458376, -0.095994607703772009, -0.095944838491099110, -0.095895069038564124, +-0.095845299346291032, -0.095795529414405112, -0.095745759243030387, -0.095695988832291259, -0.095646218182311712, -0.095596447293217063, -0.095546676165131295, -0.095496904798178836, +-0.095447133192483685, -0.095397361348171131, -0.095347589265365171, -0.095297816944189803, -0.095248044384770331, -0.095198271587230751, -0.095148498551695493, -0.095098725278288540, +-0.095048951767135223, -0.094999178018359526, -0.094949404032085891, -0.094899629808438288, -0.094849855347542061, -0.094800080649521196, -0.094750305714500133, -0.094700530542602857, +-0.094650755133954698, -0.094600979488679640, -0.094551203606902154, -0.094501427488746209, -0.094451651134337136, -0.094401874543798933, -0.094352097717255598, -0.094302320654832475, +-0.094252543356653534, -0.094202765822843246, -0.094152988053525608, -0.094103210048825922, -0.094053431808868229, -0.094003653333776943, -0.093953874623676090, -0.093904095678690985, +-0.093854316498945656, -0.093804537084564515, -0.093754757435671604, -0.093704977552392238, -0.093655197434850429, -0.093605417083170619, -0.093555636497476835, -0.093505855677894406, +-0.093456074624547317, -0.093406293337560065, -0.093356511817056620, -0.093306730063162341, -0.093256948076001239, -0.093207165855697327, -0.093157383402375948, -0.093107600716161101, +-0.093057817797177256, -0.093008034645548424, -0.092958251261399949, -0.092908467644855844, -0.092858683796040564, -0.092808899715078136, -0.092759115402093903, -0.092709330857211877, +-0.092659546080556529, -0.092609761072251884, -0.092559975832423258, -0.092510190361194705, -0.092460404658690681, -0.092410618725035185, -0.092360832560353601, -0.092311046164769928, +-0.092261259538408205, -0.092211472681393764, -0.092161685593850642, -0.092111898275903312, -0.092062110727675797, -0.092012322949293443, -0.091962534940880289, -0.091912746702560791, +-0.091862958234458975, -0.091813169536700212, -0.091763380609408529, -0.091713591452708396, -0.091663802066723837, -0.091614012451580226, -0.091564222607401574, -0.091514432534312365, +-0.091464642232436638, -0.091414851701899738, -0.091365060942825718, -0.091315269955338604, -0.091265478739563755, -0.091215687295625208, -0.091165895623647436, -0.091116103723754491, +-0.091066311596071731, -0.091016519240723182, -0.090966726657833341, -0.090916933847526249, -0.090867140809927249, -0.090817347545160410, -0.090767554053350200, -0.090717760334620659, +-0.090667966389097160, -0.090618172216903742, -0.090568377818164902, -0.090518583193004667, -0.090468788341548423, -0.090418993263920208, -0.090369197960244063, -0.090319402430645360, +-0.090269606675248165, -0.090219810694176950, -0.090170014487555752, -0.090120218055509974, -0.090070421398163653, -0.090020624515641273, -0.089970827408066889, -0.089921030075565872, +-0.089871232518262290, -0.089821434736280625, -0.089771636729744933, -0.089721838498780584, -0.089672040043511647, -0.089622241364062605, -0.089572442460557511, -0.089522643333121765, +-0.089472843981879407, -0.089423044406954935, -0.089373244608472416, -0.089323444586557221, -0.089273644341333419, -0.089223843872925063, -0.089174043181457552, -0.089124242267054912, +-0.089074441129841683, -0.089024639769941905, -0.088974838187480962, -0.088925036382582923, -0.088875234355372298, -0.088825432105973143, -0.088775629634510855, -0.088725826941109490, +-0.088676024025893557, -0.088626220888987126, -0.088576417530515580, -0.088526613950602989, -0.088476810149373863, -0.088427006126952284, -0.088377201883463610, -0.088327397419031950, +-0.088277592733781343, -0.088227787827837204, -0.088177982701323585, -0.088128177354365012, -0.088078371787085566, -0.088028565999610620, -0.087978759992064254, -0.087928953764571008, +-0.087879147317254921, -0.087829340650241408, -0.087779533763654549, -0.087729726657618856, -0.087679919332258396, -0.087630111787698584, -0.087580304024063499, -0.087530496041477640, +-0.087480687840065116, -0.087430879419951299, -0.087381070781260298, -0.087331261924116166, -0.087281452848644331, -0.087231643554968846, -0.087181834043214265, -0.087132024313504669, +-0.087082214365965430, -0.087032404200720670, -0.086982593817894902, -0.086932783217612206, -0.086882972399997982, -0.086833161365176340, -0.086783350113271790, -0.086733538644408414, +-0.086683726958711654, -0.086633915056305563, -0.086584102937314680, -0.086534290601863101, -0.086484478050076252, -0.086434665282078188, -0.086384852297993475, -0.086335039097946181, +-0.086285225682061734, -0.086235412050464227, -0.086185598203277744, -0.086135784140627697, -0.086085969862638209, -0.086036155369433778, -0.085986340661138527, -0.085936525737877870, +-0.085886710599775887, -0.085836895246957146, -0.085787079679545700, -0.085737263897667018, -0.085687447901445168, -0.085637631691004704, -0.085587815266469705, -0.085537998627965614, +-0.085488181775616540, -0.085438364709546993, -0.085388547429881112, -0.085338729936744295, -0.085288912230260652, -0.085239094310554278, -0.085189276177750628, -0.085139457831973769, +-0.085089639273348283, -0.085039820501998251, -0.084990001518049099, -0.084940182321624952, -0.084890362912850362, -0.084840543291849396, -0.084790723458747538, -0.084740903413668855, +-0.084691083156737929, -0.084641262688078839, -0.084591442007817041, -0.084541621116076632, -0.084491800012982177, -0.084441978698657771, -0.084392157173228871, -0.084342335436819571, +-0.084292513489553994, -0.084242691331557581, -0.084192868962954429, -0.084143046383869116, -0.084093223594425739, -0.084043400594749740, -0.083993577384965240, -0.083943753965196807, +-0.083893930335568537, -0.083844106496205884, -0.083794282447232971, -0.083744458188774351, -0.083694633720954134, -0.083644809043897789, -0.083594984157729410, -0.083545159062573579, +-0.083495333758554405, -0.083445508245797342, -0.083395682524426501, -0.083345856594566017, -0.083296030456341333, -0.083246204109876570, -0.083196377555296297, -0.083146550792724636, +-0.083096723822287041, -0.083046896644107637, -0.082997069258311004, -0.082947241665021237, -0.082897413864363820, -0.082847585856462860, -0.082797757641442940, -0.082747929219428182, +-0.082698100590544055, -0.082648271754914668, -0.082598442712664588, -0.082548613463917980, -0.082498784008800272, -0.082448954347435599, -0.082399124479948543, -0.082349294406463242, +-0.082299464127105135, -0.082249633641998374, -0.082199802951267095, -0.082149972055036741, -0.082100140953431461, -0.082050309646575822, -0.082000478134593963, -0.081950646417611364, +-0.081900814495752150, -0.081850982369140887, -0.081801150037901726, -0.081751317502160151, -0.081701484762040269, -0.081651651817666676, -0.081601818669163509, -0.081551985316656236, +-0.081502151760269009, -0.081452318000126395, -0.081402484036352543, -0.081352649869072924, -0.081302815498411687, -0.081252980924492957, -0.081203146147442229, -0.081153311167383627, +-0.081103475984441759, -0.081053640598740748, -0.081003805010406077, -0.080953969219561897, -0.080904133226332803, -0.080854297030842917, -0.080804460633217737, -0.080754624033581413, +-0.080704787232058525, -0.080654950228773226, -0.080605113023850983, -0.080555275617415975, -0.080505438009592770, -0.080455600200505531, -0.080405762190279728, -0.080355923979039526, +-0.080306085566909061, -0.080256246954013830, -0.080206408140477983, -0.080156569126426117, -0.080106729911982380, -0.080056890497272271, -0.080007050882419925, -0.079957211067549966, +-0.079907371052786530, -0.079857530838255100, -0.079807690424079855, -0.079757849810385376, -0.079708008997295826, -0.079658167984936704, -0.079608326773432159, -0.079558485362906800, +-0.079508643753484792, -0.079458801945291604, -0.079408959938451415, -0.079359117733088833, -0.079309275329328008, -0.079259432727294438, -0.079209589927112287, -0.079159746928905719, +-0.079109903732800219, -0.079060060338919977, -0.079010216747389561, -0.078960372958333178, -0.078910528971876295, -0.078860684788143107, -0.078810840407258193, -0.078760995829345731, +-0.078711151054531234, -0.078661306082938851, -0.078611460914693204, -0.078561615549918459, -0.078511769988740127, -0.078461924231282371, -0.078412078277669786, -0.078362232128026579, +-0.078312385782478233, -0.078262539241148926, -0.078212692504162823, -0.078162845571645420, -0.078112998443720924, -0.078063151120513916, -0.078013303602148601, -0.077963455888750463, +-0.077913607980443680, -0.077863759877352876, -0.077813911579602241, -0.077764063087317259, -0.077714214400622136, -0.077664365519641454, -0.077614516444499432, -0.077564667175321553, +-0.077514817712232009, -0.077464968055355424, -0.077415118204815975, -0.077365268160739173, -0.077315417923249197, -0.077265567492470238, -0.077215716868527809, -0.077165866051546073, +-0.077116015041649680, -0.077066163838962809, -0.077016312443610971, -0.076966460855718344, -0.076916609075409578, -0.076866757102808839, -0.076816904938041650, -0.076767052581232190, +-0.076717200032505109, -0.076667347291984586, -0.076617494359796132, -0.076567641236063938, -0.076517787920912655, -0.076467934414466449, -0.076418080716850856, -0.076368226828190056, +-0.076318372748608254, -0.076268518478230948, -0.076218664017182358, -0.076168809365587106, -0.076118954523569385, -0.076069099491254732, -0.076019244268767314, -0.075969388856231793, +-0.075919533253772362, -0.075869677461514531, -0.075819821479582508, -0.075769965308100928, -0.075720108947193998, -0.075670252396987242, -0.075620395657604852, -0.075570538729171480, +-0.075520681611811302, -0.075470824305649872, -0.075420966810811382, -0.075371109127420469, -0.075321251255601351, -0.075271393195479541, -0.075221534947179244, -0.075171676510824681, +-0.075121817886541362, -0.075071959074453493, -0.075022100074685724, -0.074972240887362276, -0.074922381512608660, -0.074872521950549081, -0.074822662201308218, -0.074772802265010235, +-0.074722942141780699, -0.074673081831743815, -0.074623221335024220, -0.074573360651746134, -0.074523499782035083, -0.074473638726015284, -0.074423777483811390, -0.074373916055547606, +-0.074324054441349471, -0.074274192641341205, -0.074224330655647014, -0.074174468484392436, -0.074124606127701692, -0.074074743585699432, -0.074024880858509876, -0.073975017946258548, +-0.073925154849069682, -0.073875291567067930, -0.073825428100377510, -0.073775564449123948, -0.073725700613431491, -0.073675836593424776, -0.073625972389228023, -0.073576108000966783, +-0.073526243428765278, -0.073476378672748172, -0.073426513733039656, -0.073376648609765310, -0.073326783303049342, -0.073276917813015971, -0.073227052139790749, -0.073177186283497897, +-0.073127320244262092, -0.073077454022207528, -0.073027587617459769, -0.072977721030143050, -0.072927854260382022, -0.072877987308300932, -0.072828120174025290, -0.072778252857679374, +-0.072728385359387804, -0.072678517679274843, -0.072628649817466029, -0.072578781774085582, -0.072528913549258181, -0.072479045143108059, -0.072429176555760769, -0.072379307787340530, +-0.072329438837972021, -0.072279569707779476, -0.072229700396888460, -0.072179830905423181, -0.072129961233507886, -0.072080091381268127, -0.072030221348828138, -0.071980351136312598, +-0.071930480743845740, -0.071880610171553130, -0.071830739419558975, -0.071780868487987995, -0.071730997376964381, -0.071681126086613728, -0.071631254617060255, -0.071581382968428642, +-0.071531511140843135, -0.071481639134429287, -0.071431766949311346, -0.071381894585613989, -0.071332022043461452, -0.071282149322979299, -0.071232276424291779, -0.071182403347523127, +-0.071132530092798907, -0.071082656660243354, -0.071032783049981160, -0.070982909262136573, -0.070933035296835159, -0.070883161154201138, -0.070833286834359230, -0.070783412337433654, +-0.070733537663550006, -0.070683662812832504, -0.070633787785405841, -0.070583912581394265, -0.070534037200923355, -0.070484161644117346, -0.070434285911100944, -0.070384410001998368, +-0.070334533916935227, -0.070284657656035740, -0.070234781219424169, -0.070184904607226095, -0.070135027819565751, -0.070085150856567843, -0.070035273718356605, -0.069985396405057645, +-0.069935518916795170, -0.069885641253693911, -0.069835763415878105, -0.069785885403473330, -0.069736007216603849, -0.069686128855394353, -0.069636250319969076, -0.069586371610453626, +-0.069536492726972252, -0.069486613669649630, -0.069436734438610051, -0.069386855033979067, -0.069336975455880939, -0.069287095704440388, -0.069237215779781647, -0.069187335682030310, +-0.069137455411310625, -0.069087574967746868, -0.069037694351464618, -0.068987813562588138, -0.068937932601242105, -0.068888051467550809, -0.068838170161639831, -0.068788288683633431, +-0.068738407033656301, -0.068688525211832704, -0.068638643218288248, -0.068588761053147179, -0.068538878716534204, -0.068488996208573599, -0.068439113529390944, -0.068389230679110499, +-0.068339347657856986, -0.068289464465754651, -0.068239581102929103, -0.068189697569504604, -0.068139813865605414, -0.068089929991357129, -0.068040045946884037, -0.067990161732310817, +-0.067940277347761743, -0.067890392793362425, -0.067840508069237124, -0.067790623175510559, -0.067740738112306992, -0.067690852879752017, -0.067640967477969910, -0.067591081907085390, +-0.067541196167222720, -0.067491310258507506, -0.067441424181064011, -0.067391537935016954, -0.067341651520490611, -0.067291764937610590, -0.067241878186501153, -0.067191991267286574, +-0.067142104180092449, -0.067092216925043080, -0.067042329502263159, -0.066992441911876977, -0.066942554154010139, -0.066892666228786909, -0.066842778136332007, -0.066792889876769734, +-0.066743001450225659, -0.066693112856824097, -0.066643224096689740, -0.066593335169946893, -0.066543446076721136, -0.066493556817136770, -0.066443667391318517, -0.066393777799390652, +-0.066343888041478782, -0.066293998117707184, -0.066244108028200160, -0.066194217773083305, -0.066144327352480908, -0.066094436766517689, -0.066044546015317937, -0.065994655099007260, +-0.065944764017709948, -0.065894872771550733, -0.065844981360653879, -0.065795089785145033, -0.065745198045148445, -0.065695306140788862, -0.065645414072190586, -0.065595521839479212, +-0.065545629442779030, -0.065495736882214772, -0.065445844157910729, -0.065395951269992522, -0.065346058218584441, -0.065296165003811205, -0.065246271625797117, -0.065196378084667786, +-0.065146484380547529, -0.065096590513560607, -0.065046696483832642, -0.064996802291487951, -0.064946907936651241, -0.064897013419446828, -0.064847118740000320, -0.064797223898436021, +-0.064747328894878664, -0.064697433729452539, -0.064647538402283267, -0.064597642913495151, -0.064547747263212926, -0.064497851451560895, -0.064447955478664679, -0.064398059344648567, +-0.064348163049637322, -0.064298266593755204, -0.064248369977127878, -0.064198473199879619, -0.064148576262134743, -0.064098679164018860, -0.064048781905656285, -0.063998884487171753, +-0.063948986908689567, -0.063899089170335363, -0.063849191272233430, -0.063799293214508529, -0.063749394997284936, -0.063699496620688301, -0.063649598084842940, -0.063599699389873560, +-0.063549800535904505, -0.063499901523061397, -0.063450002351468526, -0.063400103021250639, -0.063350203532532068, -0.063300303885438419, -0.063250404080094025, -0.063200504116623160, +-0.063150603995151489, -0.063100703715803313, -0.063050803278703368, -0.063000902683975971, -0.062951001931746770, -0.062901101022140055, -0.062851199955280587, -0.062801298731292685, +-0.062751397350301968, -0.062701495812432770, -0.062651594117809822, -0.062601692266557443, -0.062551790258801282, -0.062501888094665656, -0.062451985774275298, -0.062402083297754533, +-0.062352180665229004, -0.062302277876823027, -0.062252374932661350, -0.062202471832868297, -0.062152568577569504, -0.062102665166889288, -0.062052761600951974, -0.062002857879883196, +-0.061952954003807272, -0.061903049972848963, -0.061853145787132580, -0.061803241446783785, -0.061753336951926883, -0.061703432302686635, -0.061653527499187365, -0.061603622541554721, +-0.061553717429913023, -0.061503812164387030, -0.061453906745101060, -0.061404001172180769, -0.061354095445750476, -0.061304189565934947, -0.061254283532858493, -0.061204377346646778, +-0.061154471007424119, -0.061104564515314840, -0.061054657870444597, -0.061004751072937700, -0.060954844122918933, -0.060904937020512612, -0.060855029765844386, -0.060805122359038587, +-0.060755214800219989, -0.060705307089512904, -0.060655399227042994, -0.060605491212934591, -0.060555583047312456, -0.060505674730300926, -0.060455766262025645, -0.060405857642610951, +-0.060355948872181618, -0.060306039950861964, -0.060256130878777653, -0.060206221656053015, -0.060156312282812381, -0.060106402759181408, -0.060056493085284435, -0.060006583261246221, +-0.059956673287191106, -0.059906763163244760, -0.059856852889531499, -0.059806942466176106, -0.059757031893302913, -0.059707121171037582, -0.059657210299504451, -0.059607299278828296, +-0.059557388109133448, -0.059507476790545570, -0.059457565323189007, -0.059407653707188528, -0.059357741942668470, -0.059307830029754496, -0.059257917968570953, -0.059208005759242170, +-0.059158093401893819, -0.059108180896650230, -0.059058268243636192, -0.059008355442976036, -0.058958442494795441, -0.058908529399218736, -0.058858616156370704, -0.058808702766375689, +-0.058758789229359371, -0.058708875545446071, -0.058658961714760580, -0.058609047737427249, -0.058559133613571734, -0.058509219343318389, -0.058459304926791994, -0.058409390364116895, +-0.058359475655418769, -0.058309560800821947, -0.058259645800451225, -0.058209730654430941, -0.058159815362886780, -0.058109899925943079, -0.058059984343724183, -0.058010068616355770, +-0.057960152743962184, -0.057910236726668222, -0.057860320564598215, -0.057810404257877861, -0.057760487806631490, -0.057710571210983899, -0.057660654471059440, -0.057610737586983783, +-0.057560820558881287, -0.057510903386876741, -0.057460986071094490, -0.057411068611660218, -0.057361151008698277, -0.057311233262333450, -0.057261315372690108, -0.057211397339893909, +-0.057161479164069225, -0.057111560845340401, -0.057061642383833114, -0.057011723779671723, -0.056961805032981018, -0.056911886143885364, -0.056861967112510431, -0.056812047938980585, +-0.056762128623420616, -0.056712209165954888, -0.056662289566709073, -0.056612369825807543, -0.056562449943375080, -0.056512529919536050, -0.056462609754416145, -0.056412689448139708, +-0.056362769000831550, -0.056312848412616030, -0.056262927683618826, -0.056213006813964309, -0.056163085803776831, -0.056113164653182078, -0.056063243362304414, -0.056013321931268643, +-0.055963400360199124, -0.055913478649221547, -0.055863556798460272, -0.055813634808040108, -0.055763712678085414, -0.055713790408721875, -0.055663868000073870, -0.055613945452266188, +-0.055564022765423202, -0.055514099939670596, -0.055464176975132749, -0.055414253871934452, -0.055364330630200083, -0.055314407250055327, -0.055264483731624556, -0.055214560075032573, +-0.055164636280403752, -0.055114712347863776, -0.055064788277537025, -0.055014864069547857, -0.054964939724021972, -0.054915015241083741, -0.054865090620857968, -0.054815165863469031, +-0.054765240969042617, -0.054715315937703103, -0.054665390769575294, -0.054615465464783568, -0.054565540023453624, -0.054515614445709834, -0.054465688731677002, -0.054415762881479500, +-0.054365836895243040, -0.054315910773091988, -0.054265984515151161, -0.054216058121544924, -0.054166131592398990, -0.054116204927837724, -0.054066278127985506, -0.054016351192968035, +-0.053966424122909681, -0.053916496917935271, -0.053866569578169175, -0.053816642103737100, -0.053766714494763418, -0.053716786751372946, -0.053666858873690070, -0.053616930861840488, +-0.053567002715948574, -0.053517074436139157, -0.053467146022536612, -0.053417217475266648, -0.053367288794453634, -0.053317359980222405, -0.053267431032697328, -0.053217501952004115, +-0.053167572738267152, -0.053117643391610812, -0.053067713912160808, -0.053017784300041511, -0.052967854555377766, -0.052917924678293933, -0.052867994668915730, -0.052818064527367550, +-0.052768134253774197, -0.052718203848260071, -0.052668273310950885, -0.052618342641971010, -0.052568411841445277, -0.052518480909498066, -0.052468549846255104, -0.052418618651840769, +-0.052368687326379885, -0.052318755869996833, -0.052268824282817344, -0.052218892564965785, -0.052168960716566563, -0.052119028737745376, -0.052069096628626611, -0.052019164389335112, +-0.051969232019995260, -0.051919299520732771, -0.051869366891672028, -0.051819434132937874, -0.051769501244654688, -0.051719568226948190, -0.051669635079942773, -0.051619701803763268, +-0.051569768398534069, -0.051519834864380887, -0.051469901201428123, -0.051419967409800607, -0.051370033489622720, -0.051320099441020200, -0.051270165264117429, -0.051220230959039249, +-0.051170296525910042, -0.051120361964855539, -0.051070427276000134, -0.051020492459468214, -0.050970557515385512, -0.050920622443876414, -0.050870687245065757, -0.050820751919077936, +-0.050770816466038683, -0.050720880886072392, -0.050670945179303893, -0.050621009345857587, -0.050571073385859207, -0.050521137299433139, -0.050471201086704227, -0.050421264747796873, +-0.050371328282836796, -0.050321391691948401, -0.050271454975256528, -0.050221518132885570, -0.050171581164961267, -0.050121644071608004, -0.050071706852950190, -0.050021769509113558, +-0.049971832040222493, -0.049921894446401854, -0.049871956727776029, -0.049822018884470763, -0.049772080916610451, -0.049722142824319929, -0.049672204607723612, -0.049622266266947226, +-0.049572327802115172, -0.049522389213352301, -0.049472450500783006, -0.049422511664533035, -0.049372572704726787, -0.049322633621489108, -0.049272694414944397, -0.049222755085218395, +-0.049172815632435501, -0.049122876056720131, -0.049072936358198010, -0.049022996536993553, -0.048973056593231604, -0.048923116527036563, -0.048873176338534184, -0.048823236027848854, +-0.048773295595105438, -0.048723355040428344, -0.048673414363943304, -0.048623473565774726, -0.048573532646047461, -0.048523591604885931, -0.048473650442415854, -0.048423709158761659, +-0.048373767754048190, -0.048323826228399855, -0.048273884581942400, -0.048223942814800233, -0.048174000927098205, -0.048124058918960738, -0.048074116790513564, -0.048024174541881098, +-0.047974232173187754, -0.047924289684559272, -0.047874347076120066, -0.047824404347994988, -0.047774461500308459, -0.047724518533186225, -0.047674575446752687, -0.047624632241132711, +-0.047574688916450718, -0.047524745472832440, -0.047474801910402299, -0.047424858229285154, -0.047374914429605418, -0.047324970511488845, -0.047275026475059843, -0.047225082320443271, +-0.047175138047763555, -0.047125193657146437, -0.047075249148716330, -0.047025304522597663, -0.046975359778916176, -0.046925414917796282, -0.046875469939362861, -0.046825524843740321, +-0.046775579631054408, -0.046725634301429543, -0.046675688854990599, -0.046625743291861990, -0.046575797612169463, -0.046525851816037439, -0.046475905903590790, -0.046425959874953932, +-0.046376013730252616, -0.046326067469611265, -0.046276121093154751, -0.046226174601007489, -0.046176227993295231, -0.046126281270142400, -0.046076334431673430, -0.046026387478014061, +-0.045976440409288728, -0.045926493225622290, -0.045876545927139183, -0.045826598513965144, -0.045776650986224618, -0.045726703344042462, -0.045676755587543104, -0.045626807716852298, +-0.045576859732094473, -0.045526911633394500, -0.045476963420876808, -0.045427015094667143, -0.045377066654889948, -0.045327118101670082, -0.045277169435131978, -0.045227220655401391, +-0.045177271762602757, -0.045127322756860502, -0.045077373638300375, -0.045027424407046823, -0.044977475063224706, -0.044927525606958459, -0.044877576038373841, -0.044827626357595282, +-0.044777676564747661, -0.044727726659955398, -0.044677776643344269, -0.044627826515038695, -0.044577876275163554, -0.044527925923843276, -0.044477975461203634, -0.044428024887369050, +-0.044378074202464403, -0.044328123406614128, -0.044278172499943987, -0.044228221482578413, -0.044178270354642286, -0.044128319116260042, -0.044078367767557448, -0.044028416308658926, +-0.043978464739688923, -0.043928513060773201, -0.043878561272036203, -0.043828609373602792, -0.043778657365597419, -0.043728705248145844, -0.043678753021372509, -0.043628800685402293, +-0.043578848240359624, -0.043528895686370285, -0.043478943023558703, -0.043428990252049771, -0.043379037371967910, -0.043329084383438903, -0.043279131286587183, -0.043229178081537638, +-0.043179224768414702, -0.043129271347344150, -0.043079317818450417, -0.043029364181857946, -0.042979410437692510, -0.042929456586078552, -0.042879502627140943, -0.042829548561004141, +-0.042779594387793912, -0.042729640107634692, -0.042679685720651374, -0.042629731226968400, -0.042579776626711537, -0.042529821920005234, -0.042479867106974378, -0.042429912187743411, +-0.042379957162438107, -0.042330002031182909, -0.042280046794102702, -0.042230091451321942, -0.042180136002966391, -0.042130180449160504, -0.042080224790028722, -0.042030269025696815, +-0.041980313156289244, -0.041930357181930888, -0.041880401102746191, -0.041830444918860940, -0.041780488630399577, -0.041730532237486989, -0.041680575740247632, -0.041630619138807272, +-0.041580662433290366, -0.041530705623821808, -0.041480748710526039, -0.041430791693528847, -0.041380834572954668, -0.041330877348928409, -0.041280920021574505, -0.041230962591018751, +-0.041181005057385589, -0.041131047420799920, -0.041081089681386178, -0.041031131839270166, -0.040981173894576318, -0.040931215847429092, -0.040881257697954275, -0.040831299446276309, +-0.040781341092520094, -0.040731382636810080, -0.040681424079272062, -0.040631465420030481, -0.040581506659210231, -0.040531547796935775, -0.040481588833332895, -0.040431629768526038, +-0.040381670602640106, -0.040331711335799561, -0.040281751968130178, -0.040231792499756412, -0.040181832930803164, -0.040131873261394897, -0.040081913491657385, -0.040031953621715091, +-0.039981993651692471, -0.039932033581715307, -0.039882073411908060, -0.039832113142395632, -0.039782152773302472, -0.039732192304754381, -0.039682231736875802, -0.039632271069791648, +-0.039582310303626377, -0.039532349438505768, -0.039482388474554285, -0.039432427411896828, -0.039382466250657867, -0.039332504990963177, -0.039282543632937234, -0.039232582176704923, +-0.039182620622390717, -0.039132658970120401, -0.039082697220018434, -0.039032735372209290, -0.038982773426818745, -0.038932811383971262, -0.038882849243791762, -0.038832887006404686, +-0.038782924671935837, -0.038732962240509677, -0.038682999712251115, -0.038633037087284612, -0.038583074365735957, -0.038533111547729613, -0.038483148633390495, -0.038433185622843057, +-0.038383222516213102, -0.038333259313625086, -0.038283296015203923, -0.038233332621074083, -0.038183369131361347, -0.038133405546190192, -0.038083441865685082, -0.038033478089971810, +-0.037983514219174841, -0.037933550253419088, -0.037883586192829014, -0.037833622037530414, -0.037783657787647765, -0.037733693443305967, -0.037683729004629497, -0.037633764471744144, +-0.037583799844774383, -0.037533835123845123, -0.037483870309080826, -0.037433905400607301, -0.037383940398549018, -0.037333975303030877, -0.037284010114177354, -0.037234044832114253, +-0.037184079456966036, -0.037134113988857617, -0.037084148427913480, -0.037034182774259405, -0.036984217028019878, -0.036934251189319367, -0.036884285258283668, -0.036834319235037258, +-0.036784353119705050, -0.036734386912411515, -0.036684420613282455, -0.036634454222442346, -0.036584487740016103, -0.036534521166128195, -0.036484554500904424, -0.036434587744469268, +-0.036384620896947648, -0.036334653958464025, -0.036284686929144216, -0.036234719809112692, -0.036184752598494359, -0.036134785297413707, -0.036084817905996540, -0.036034850424367319, +-0.035984882852650536, -0.035934915190971986, -0.035884947439456145, -0.035834979598227942, -0.035785011667411840, -0.035735043647133653, -0.035685075537517860, -0.035635107338689381, +-0.035585139050772686, -0.035535170673893585, -0.035485202208176560, -0.035435233653746533, -0.035385265010727973, -0.035335296279246690, -0.035285327459427175, -0.035235358551394341, +-0.035185389555272659, -0.035135420471187957, -0.035085451299264700, -0.035035482039627364, -0.034985512692401778, -0.034935543257712399, -0.034885573735684169, -0.034835604126441565, +-0.034785634430110388, -0.034735664646815122, -0.034685694776680702, -0.034635724819831598, -0.034585754776393626, -0.034535784646491263, -0.034485814430249444, -0.034435844127792645, +-0.034385873739246675, -0.034335903264736026, -0.034285932704385617, -0.034235962058319927, -0.034185991326664784, -0.034136020509544659, -0.034086049607084480, -0.034036078619408737, +-0.033986107546643239, -0.033936136388912477, -0.033886165146340928, -0.033836193819054408, -0.033786222407177401, -0.033736250910834840, -0.033686279330151211, -0.033636307665252323, +-0.033586335916262672, -0.033536364083307180, -0.033486392166510330, -0.033436420165997946, -0.033386448081894511, -0.033336475914324953, -0.033286503663413763, -0.033236531329286757, +-0.033186558912068426, -0.033136586411883696, -0.033086613828857053, -0.033036641163114326, -0.032986668414779992, -0.032936695583978541, -0.032886722670835804, -0.032836749675476250, +-0.032786776598024828, -0.032736803438606014, -0.032686830197345640, -0.032636856874368195, -0.032586883469798600, -0.032536909983761353, -0.032486936416382277, -0.032436962767785862, +-0.032386989038097037, -0.032337015227440299, -0.032287041335941465, -0.032237067363725030, -0.032187093310915925, -0.032137119177638639, -0.032087144964019002, -0.032037170670181504, +-0.031987196296250631, -0.031937221842352218, -0.031887247308610742, -0.031837272695151159, -0.031787298002097938, -0.031737323229576925, -0.031687348377712601, -0.031637373446629903, +-0.031587398436453334, -0.031537423347308705, -0.031487448179320525, -0.031437472932613716, -0.031387497607312791, -0.031337522203543557, -0.031287546721430526, -0.031237571161098619, +-0.031187595522672348, -0.031137619806277529, -0.031087644012038659, -0.031037668140080237, -0.030987692190528087, -0.030937716163506709, -0.030887740059141040, -0.030837763877555574, +-0.030787787618876145, -0.030737811283227248, -0.030687834870733819, -0.030637858381520361, -0.030587881815712703, -0.030537905173435336, -0.030487928454813209, -0.030437951659970819, +-0.030387974789033989, -0.030337997842127224, -0.030288020819375466, -0.030238043720903211, -0.030188066546836291, -0.030138089297299202, -0.030088111972416894, -0.030038134572313861, +-0.029988157097115935, -0.029938179546947614, -0.029888201921933404, -0.029838224222199131, -0.029788246447869298, -0.029738268599068848, -0.029688290675922283, -0.029638312678555434, +-0.029588334607092807, -0.029538356461659341, -0.029488378242379539, -0.029438399949379235, -0.029388421582782934, -0.029338443142715578, -0.029288464629301670, -0.029238486042667045, +-0.029188507382936203, -0.029138528650234096, -0.029088549844685219, -0.029038570966415416, -0.028988592015549181, -0.028938612992211024, -0.028888633896526780, -0.028838654728620950, +-0.028788675488618482, -0.028738696176643885, -0.028688716792822987, -0.028638737337280298, -0.028588757810140770, -0.028538778211528899, -0.028488798541570527, -0.028438818800390162, +-0.028388838988112744, -0.028338859104862790, -0.028288879150766128, -0.028238899125947271, -0.028188919030531168, -0.028138938864642318, -0.028088958628406571, -0.028038978321948422, +-0.027988997945392387, -0.027939017498864301, -0.027889036982488669, -0.027839056396390446, -0.027789075740694134, -0.027739095015525583, -0.027689114221009292, -0.027639133357270213, +-0.027589152424432859, -0.027539171422623070, -0.027489190351965349, -0.027439209212584654, -0.027389228004605491, -0.027339246728153702, -0.027289265383353797, -0.027239283970330725, +-0.027189302489209005, -0.027139320940114467, -0.027089339323171632, -0.027039357638505446, -0.026989375886240421, -0.026939394066502403, -0.026889412179415897, -0.026839430225105418, +-0.026789448203696806, -0.026739466115314577, -0.026689483960083679, -0.026639501738128631, -0.026589519449575268, -0.026539537094548111, -0.026489554673172107, -0.026439572185571775, +-0.026389589631872955, -0.026339607012200162, -0.026289624326678352, -0.026239641575432036, -0.026189658758587062, -0.026139675876267938, -0.026089692928599625, -0.026039709915706640, +-0.025989726837714819, -0.025939743694748683, -0.025889760486932745, -0.025839777214392848, -0.025789793877253508, -0.025739810475639682, -0.025689827009675890, -0.025639843479487973, +-0.025589859885200444, -0.025539876226938270, -0.025489892504825959, -0.025439908718989358, -0.025389924869552990, -0.025339940956641806, -0.025289956980380328, -0.025239972940894403, +-0.025189988838308544, -0.025140004672747712, -0.025090020444336423, -0.025040036153200530, -0.024990051799464546, -0.024940067383252988, -0.024890082904691704, -0.024840098363905216, +-0.024790113761018480, -0.024740129096156017, -0.024690144369443674, -0.024640159581005971, -0.024590174730967869, -0.024540189819453884, -0.024490204846589869, -0.024440219812500344, +-0.024390234717310270, -0.024340249561144164, -0.024290264344127878, -0.024240279066385931, -0.024190293728043284, -0.024140308329224463, -0.024090322870055313, -0.024040337350660357, +-0.023990351771164112, -0.023940366131692432, -0.023890380432369837, -0.023840394673321292, -0.023790408854671315, -0.023740422976545758, -0.023690437039069145, -0.023640451042366440, +-0.023590464986562164, -0.023540478871782171, -0.023490492698150980, -0.023440506465793553, -0.023390520174834419, -0.023340533825399429, -0.023290547417613106, -0.023240560951600410, +-0.023190574427485872, -0.023140587845395338, -0.023090601205453337, -0.023040614507784832, -0.022990627752514349, -0.022940640939767738, -0.022890654069669527, -0.022840667142344236, +-0.022790680157917718, -0.022740693116514502, -0.022690706018259555, -0.022640718863277398, -0.022590731651693886, -0.022540744383633547, -0.022490757059221343, -0.022440769678581808, +-0.022390782241840788, -0.022340794749122816, -0.022290807200552855, -0.022240819596255432, -0.022190831936356407, -0.022140844220980300, -0.022090856450252081, -0.022040868624296280, +-0.021990880743238749, -0.021940892807204019, -0.021890904816316611, -0.021840916770702382, -0.021790928670485866, -0.021740940515792024, -0.021690952306745389, -0.021640964043471819, +-0.021590975726095838, -0.021540987354742417, -0.021490998929536084, -0.021441010450602697, -0.021391021918066782, -0.021341033332053314, -0.021291044692686820, -0.021241056000093156, +-0.021191067254396855, -0.021141078455722884, -0.021091089604195774, -0.021041100699941383, -0.020991111743084240, -0.020941122733748874, -0.020891133672061146, -0.020841144558145581, +-0.020791155392127156, -0.020741166174130399, -0.020691176904281173, -0.020641187582704001, -0.020591198209523862, -0.020541208784865282, -0.020491219308854124, -0.020441229781614920, +-0.020391240203272640, -0.020341250573951818, -0.020291260893778310, -0.020241271162876651, -0.020191281381371814, -0.020141291549388329, -0.020091301667052062, -0.020041311734487539, +-0.019991321751819734, -0.019941331719173186, -0.019891341636673748, -0.019841351504445957, -0.019791361322614345, -0.019741371091304773, -0.019691380810641774, -0.019641390480750320, +-0.019591400101754950, -0.019541409673781519, -0.019491419196954567, -0.019441428671399068, -0.019391438097239550, -0.019341447474601883, -0.019291456803610597, -0.019241466084390670, +-0.019191475317066633, -0.019141484501764349, -0.019091493638608358, -0.019041502727723630, -0.018991511769234703, -0.018941520763267439, -0.018891529709946373, -0.018841538609396039, +-0.018791547461742303, -0.018741556267109698, -0.018691565025623205, -0.018641573737407352, -0.018591582402588010, -0.018541591021289713, -0.018491599593637435, -0.018441608119755717, +-0.018391616599770424, -0.018341625033806087, -0.018291633421987689, -0.018241641764439761, -0.018191650061288176, -0.018141658312657464, -0.018091666518672604, -0.018041674679458136, +-0.017991682795139925, -0.017941690865842509, -0.017891698891690420, -0.017841706872809528, -0.017791714809324368, -0.017741722701359919, -0.017691730549040725, -0.017641738352492643, +-0.017591746111840219, -0.017541753827208427, -0.017491761498721808, -0.017441769126506232, -0.017391776710686230, -0.017341784251386785, -0.017291791748732438, -0.017241799202849052, +-0.017191806613861171, -0.017141813981893773, -0.017091821307071396, -0.017041828589519911, -0.016991835829363852, -0.016941843026727764, -0.016891850181737507, -0.016841857294517627, +-0.016791864365193105, -0.016741871393888476, -0.016691878380729611, -0.016641885325841054, -0.016591892229347781, -0.016541899091374334, -0.016491905912046585, -0.016441912691489070, +-0.016391919429826773, -0.016341926127184235, -0.016291932783687322, -0.016241939399460580, -0.016191945974628988, -0.016141952509317090, -0.016091959003650753, -0.016041965457754517, +-0.015991971871753368, -0.015941978245771846, -0.015891984579935823, -0.015841990874369837, -0.015791997129198432, -0.015742003344547475, -0.015692009520541512, -0.015642015657305525, +-0.015592021754964054, -0.015542027813642972, -0.015492033833466822, -0.015442039814560587, -0.015392045757048809, -0.015342051661057361, -0.015292057526710782, -0.015242063354134061, +-0.015192069143451736, -0.015142074894789683, -0.015092080608272444, -0.015042086284025001, -0.014992091922171899, -0.014942097522839011, -0.014892103086150882, -0.014842108612232048, +-0.014792114101208387, -0.014742119553204442, -0.014692124968345198, -0.014642130346755197, -0.014592135688560314, -0.014542140993885093, -0.014492146262854519, -0.014442151495593135, +-0.014392156692226815, -0.014342161852880104, -0.014292166977677989, -0.014242172066745013, -0.014192177120207049, -0.014142182138188644, -0.014092187120814784, -0.014042192068210011, +-0.013992196980500202, -0.013942201857809901, -0.013892206700263652, -0.013842211507987328, -0.013792216281105477, -0.013742221019743085, -0.013692225724024697, -0.013642230394076187, +-0.013592235030022102, -0.013542239631987430, -0.013492244200096714, -0.013442248734475831, -0.013392253235249328, -0.013342257702542191, -0.013292262136478966, -0.013242266537185529, +-0.013192270904786427, -0.013142275239406646, -0.013092279541170733, -0.013042283810204567, -0.012992288046632690, -0.012942292250580094, -0.012892296422171321, -0.012842300561532254, +-0.012792304668787434, -0.012742308744061409, -0.012692312787480056, -0.012642316799167920, -0.012592320779249993, -0.012542324727850820, -0.012492328645096279, -0.012442332531110916, +-0.012392336386019722, -0.012342340209947242, -0.012292344003019358, -0.012242347765360612, -0.012192351497095997, -0.012142355198350059, -0.012092358869248677, -0.012042362509916400, +-0.011992366120478215, -0.011942369701058671, -0.011892373251783646, -0.011842376772777687, -0.011792380264165344, -0.011742383726072494, -0.011692387158623684, -0.011642390561943907, +-0.011592393936157710, -0.011542397281390971, -0.011492400597768239, -0.011442403885414506, -0.011392407144454319, -0.011342410375013557, -0.011292413577216770, -0.011242416751188949, +-0.011192419897054643, -0.011142423014939730, -0.011092426104968760, -0.011042429167266726, -0.010992432201958174, -0.010942435209168985, -0.010892438189023709, -0.010842441141646892, +-0.010792444067164416, -0.010742446965700833, -0.010692449837381129, -0.010642452682329858, -0.010592455500672900, -0.010542458292534803, -0.010492461058040558, -0.010442463797314719, +-0.010392466510483164, -0.010342469197670442, -0.010292471859001548, -0.010242474494601028, -0.010192477104594769, -0.010142479689107316, -0.010092482248263663, -0.010042484782188360, +-0.009992487291007291, -0.009942489774845003, -0.009892492233826490, -0.009842494668076303, -0.009792497077720322, -0.009742499462883100, -0.009692501823689184, -0.009642504160264459, +-0.009592506472733473, -0.009542508761221220, -0.009492511025852251, -0.009442513266752450, -0.009392515484046364, -0.009342517677858991, -0.009292519848314879, -0.009242521995539911, +-0.009192524119658639, -0.009142526220796057, -0.009092528299076714, -0.009042530354626495, -0.008992532387569949, -0.008942534398032073, -0.008892536386137417, -0.008842538352011865, +-0.008792540295779966, -0.008742542217566273, -0.008692544117496667, -0.008642545995695701, -0.008592547852288371, -0.008542549687399228, -0.008492551501154154, -0.008442553293677700, +-0.008392555065094865, -0.008342556815530196, -0.008292558545109581, -0.008242560253957568, -0.008192561942199155, -0.008142563609958894, -0.008092565257362667, -0.008042566884535028, +-0.007992568491600970, -0.007942570078685048, -0.007892571645913145, -0.007842573193409811, -0.007792574721299603, -0.007742576229708400, -0.007692577718760757, -0.007642579188581669, +-0.007592580639295690, -0.007542582071028704, -0.007492583483905262, -0.007442584878050361, -0.007392586253588554, -0.007342587610645725, -0.007292588949346428, -0.007242590269815658, +-0.007192591572177969, -0.007142592856559244, -0.007092594123084038, -0.007042595371877345, -0.006992596603063722, -0.006942597816769049, -0.006892599013117883, -0.006842600192234775, +-0.006792601354245611, -0.006742602499274943, -0.006692603627447769, -0.006642604738888642, -0.006592605833723447, -0.006542606912076737, -0.006492607974073510, -0.006442609019838320, +-0.006392610049497051, -0.006342611063174256, -0.006292612060994934, -0.006242613043083638, -0.006192614009566253, -0.006142614960567333, -0.006092615896211876, -0.006042616816624435, +-0.005992617721930896, -0.005942618612255812, -0.005892619487724183, -0.005842620348460561, -0.005792621194590831, -0.005742622026239549, -0.005692622843531267, -0.005642623646591872, +-0.005592624435545919, -0.005542625210518404, -0.005492625971633882, -0.005442626719018240, -0.005392627452796030, -0.005342628173092252, -0.005292628880031459, -0.005242629573739539, +-0.005192630254341044, -0.005142630921960973, -0.005092631576723882, -0.005042632218755655, -0.004992632848180848, -0.004942633465124459, -0.004892634069711042, -0.004842634662066484, +-0.004792635242315340, -0.004742635810582162, -0.004692636366992840, -0.004642636911671927, -0.004592637444744421, -0.004542637966334878, -0.004492638476569184, -0.004442638975571894, +-0.004392639463468006, -0.004342639940382076, -0.004292640406439990, -0.004242640861766302, -0.004192641306486013, -0.004142641740723677, -0.004092642164605180, -0.004042642578255077, +-0.003992642981798369, -0.003942643375359608, -0.003892643759064683, -0.003842644133038149, -0.003792644497404561, -0.003742644852289805, -0.003692645197818437, -0.003642645534115456, +-0.003592645861305418, -0.003542646179514209, -0.003492646488866384, -0.003442646789486943, -0.003392647081500441, -0.003342647365032765, -0.003292647640208471, -0.003242647907152558, +-0.003192648165989581, -0.003142648416845428, -0.003092648659844654, -0.003042648895112258, -0.002992649122772795, -0.002942649342952154, -0.002892649555774890, -0.002842649761366002, +-0.002792649959850045, -0.002742650151352907, -0.002692650335999144, -0.002642650513913312, -0.002592650685221296, -0.002542650850047655, -0.002492651008517386, -0.002442651160755045, +-0.002392651306886521, -0.002342651447036368, -0.002292651581329587, -0.002242651709890733, -0.002192651832845693, -0.002142651950319024, -0.002092652062435725, -0.002042652169320352, +-0.001992652271098793, -0.001942652367895603, -0.001892652459835782, -0.001842652547043885, -0.001792652629645802, -0.001742652707766087, -0.001692652781529296, -0.001642652851061317, +-0.001592652916486706, -0.001542652977930462, -0.001492653035517143, -0.001442653089372634, -0.001392653139621493, -0.001342653186388719, -0.001292653229798869, -0.001242653269977829, +-0.001192653307050155, -0.001142653341140849, -0.001092653372374465, -0.001042653400876892, -0.000992653426772685, -0.000942653450186845, -0.000892653471243927, -0.000842653490069820, +-0.000792653506789079, -0.000742653521526259, -0.000692653534407251, -0.000642653545556608, -0.000592653555099331, -0.000542653563159977, -0.000492653569864433, -0.000442653575337254, +-0.000392653579703442, -0.000342653583087552, -0.000292653585615472, -0.000242653587411758, -0.000192653588601410, -0.000142653589308984, -0.000092653589660368, -0.000042653589780118, +0.000007346410206766, 0.000057346410175728, 0.000107346410000880, 0.000157346409557666, 0.000207346408721530, 0.000257346407366583, 0.000307346405368271, 0.000357346402601593, +0.000407346398941993, 0.000457346394263583, 0.000507346388441806, 0.000557346381351664, 0.000607346372868600, 0.000657346362866726, 0.000707346351221486, 0.000757346337807880, +0.000807346322501352, 0.000857346305176015, 0.000907346285707312, 0.000957346263970243, 0.001007346239840252, 0.001057346213191452, 0.001107346183899286, 0.001157346151838755, +0.001207346116885302, 0.001257346078913040, 0.001307346037797413, 0.001357345993413865, 0.001407345945636508, 0.001457345894340786, 0.001507345839401699, 0.001557345780694692, +0.001607345718093876, 0.001657345651474696, 0.001707345580712151, 0.001757345505681687, 0.001807345426257415, 0.001857345342314780, 0.001907345253728781, 0.001957345160374863, +0.002007345062127138, 0.002057344958861051, 0.002107344850451600, 0.002157344736774233, 0.002207344617703058, 0.002257344493113523, 0.002307344362881071, 0.002357344226879813, +0.002407344084985194, 0.002457343937072216, 0.002507343783016322, 0.002557343622691624, 0.002607343455973567, 0.002657343282737152, 0.002707343102857823, 0.002757342916209691, +0.002807342722668203, 0.002857342522108357, 0.002907342314405600, 0.002957342099434042, 0.003007341877069129, 0.003057341647185862, 0.003107341409659684, 0.003157341164364709, +0.003207340911176381, 0.003257340649970145, 0.003307340380620113, 0.003357340103001730, 0.003407339816989997, 0.003457339522460358, 0.003507339219286927, 0.003557338907345147, +0.003607338586510021, 0.003657338256656991, 0.003707337917660173, 0.003757337569395009, 0.003807337211736501, 0.003857336844560094, 0.003907336467739902, 0.003957336081151368, +0.004007335684669494, 0.004057335278169725, 0.004107334861526173, 0.004157334434614284, 0.004207333997309060, 0.004257333549485944, 0.004307333091019050, 0.004357332621783824, +0.004407332141655711, 0.004457331650508822, 0.004507331148218605, 0.004557330634660059, 0.004607330109708632, 0.004657329573238434, 0.004707329025124913, 0.004757328465243070, +0.004807327893468349, 0.004857327309674865, 0.004907326713738062, 0.004957326105532942, 0.005007325484934952, 0.005057324851818203, 0.005107324206058143, 0.005157323547529772, +0.005207322876108536, 0.005257322191668548, 0.005307321494085256, 0.005357320783234103, 0.005407320058989205, 0.005457319321226006, 0.005507318569819510, 0.005557317804645160, +0.005607317025577073, 0.005657316232490692, 0.005707315425261022, 0.005757314603763507, 0.005807313767872260, 0.005857312917462730, 0.005907312052409917, 0.005957311172589269, +0.006007310277874899, 0.006057309368142251, 0.006107308443266332, 0.006157307503122585, 0.006207306547585126, 0.006257305576529399, 0.006307304589830853, 0.006357303587363602, +0.006407302569003091, 0.006457301534624325, 0.006507300484102748, 0.006557299417312476, 0.006607298334128956, 0.006657297234427190, 0.006707296118082624, 0.006757294984969375, +0.006807293834962888, 0.006857292667938166, 0.006907291483770657, 0.006957290282334475, 0.007007289063505067, 0.007057287827157437, 0.007107286573167031, 0.007157285301407965, +0.007207284011755685, 0.007257282704085639, 0.007307281378271943, 0.007357280034190043, 0.007407278671714943, 0.007457277290722091, 0.007507275891085601, 0.007557274472680921, +0.007607273035383055, 0.007657271579067451, 0.007707270103608224, 0.007757268608880821, 0.007807267094760247, 0.007857265561121950, 0.007907264007840044, 0.007957262434789978, +0.008007260841846756, 0.008057259228885828, 0.008107257595781304, 0.008157255942408639, 0.008207254268642833, 0.008257252574359336, 0.008307250859432264, 0.008357249123737063, +0.008407247367149184, 0.008457245589542743, 0.008507243790793187, 0.008557241970775523, 0.008607240129365198, 0.008657238266436327, 0.008707236381864362, 0.008757234475524305, +0.008807232547291606, 0.008857230597040383, 0.008907228624646083, 0.008957226629983710, 0.009007224612928716, 0.009057222573355216, 0.009107220511138658, 0.009157218426154051, +0.009207216318276841, 0.009257214187381147, 0.009307212033342416, 0.009357209856036100, 0.009407207655336316, 0.009457205431118511, 0.009507203183257693, 0.009557200911629312, +0.009607198616107484, 0.009657196296567659, 0.009707193952884843, 0.009757191584934488, 0.009807189192590708, 0.009857186775728957, 0.009907184334224238, 0.009957181867952003, +0.010007179376786367, 0.010057176860602784, 0.010107174319276260, 0.010157171752682244, 0.010207169160694854, 0.010257166543189540, 0.010307163900041756, 0.010357161231125615, +0.010407158536316574, 0.010457155815489635, 0.010507153068520252, 0.010557150295282541, 0.010607147495651954, 0.010657144669503498, 0.010707141816712626, 0.010757138937153455, +0.010807136030701436, 0.010857133097231577, 0.010907130136619330, 0.010957127148738812, 0.011007124133465478, 0.011057121090674332, 0.011107118020240829, 0.011157114922039087, +0.011207111795944556, 0.011257108641832247, 0.011307105459577610, 0.011357102249054764, 0.011407099010139164, 0.011457095742706260, 0.011507092446630172, 0.011557089121786353, +0.011607085768049813, 0.011657082385296001, 0.011707078973399039, 0.011757075532234380, 0.011807072061677032, 0.011857068561602449, 0.011907065031884750, 0.011957061472399387, +0.012007057883021371, 0.012057054263626155, 0.012107050614087858, 0.012157046934281936, 0.012207043224083397, 0.012257039483367692, 0.012307035712008946, 0.012357031909882609, +0.012407028076864139, 0.012457024212827652, 0.012507020317648606, 0.012557016391202009, 0.012607012433363315, 0.012657008444006645, 0.012707004423007455, 0.012757000370240754, +0.012806996285581995, 0.012856992168905302, 0.012906988020086128, 0.012956983838999486, 0.013006979625520826, 0.013056975379524275, 0.013106971100885283, 0.013156966789478865, +0.013206962445180475, 0.013256958067864233, 0.013306953657405597, 0.013356949213680020, 0.013406944736561626, 0.013456940225925871, 0.013506935681647764, 0.013556931103602763, +0.013606926491664990, 0.013656921845709900, 0.013706917165612507, 0.013756912451248264, 0.013806907702491296, 0.013856902919217059, 0.013906898101300564, 0.013956893248617269, +0.014006888361041296, 0.014056883438448102, 0.014106878480712700, 0.014156873487710546, 0.014206868459315763, 0.014256863395403810, 0.014306858295850142, 0.014356853160528885, +0.014406847989315495, 0.014456842782084983, 0.014506837538712810, 0.014556832259073098, 0.014606826943041308, 0.014656821590492449, 0.014706816201301980, 0.014756810775344026, +0.014806805312494044, 0.014856799812627051, 0.014906794275618501, 0.014956788701342523, 0.015006783089674571, 0.015056777440489662, 0.015106771753663255, 0.015156766029069473, +0.015206760266583777, 0.015256754466081180, 0.015306748627437141, 0.015356742750525785, 0.015406736835222574, 0.015456730881402963, 0.015506724888941083, 0.015556718857712390, +0.015606712787591900, 0.015656706678455069, 0.015706700530176032, 0.015756694342630242, 0.015806688115692715, 0.015856681849238913, 0.015906675543142960, 0.015956669197280320, +0.016006662811526007, 0.016056656385755482, 0.016106649919842873, 0.016156643413663636, 0.016206636867092790, 0.016256630280005797, 0.016306623652276787, 0.016356616983781214, +0.016406610274394547, 0.016456603523990906, 0.016506596732445759, 0.016556589899634117, 0.016606583025431446, 0.016656576109711874, 0.016706569152350862, 0.016756562153223426, +0.016806555112205031, 0.016856548029169801, 0.016906540903993204, 0.016956533736550251, 0.017006526526716411, 0.017056519274365810, 0.017106511979373910, 0.017156504641615729, +0.017206497260966732, 0.017256489837301048, 0.017306482370494140, 0.017356474860421470, 0.017406467306957166, 0.017456459709976696, 0.017506452069355076, 0.017556444384967770, +0.017606436656688911, 0.017656428884393959, 0.017706421067957934, 0.017756413207256301, 0.017806405302163191, 0.017856397352554065, 0.017906389358303951, 0.017956381319288305, +0.018006373235381259, 0.018056365106458284, 0.018106356932394395, 0.018156348713065058, 0.018206340448344405, 0.018256332138107900, 0.018306323782230564, 0.018356315380587865, +0.018406306933053930, 0.018456298439504231, 0.018506289899814229, 0.018556281313858058, 0.018606272681511184, 0.018656264002648627, 0.018706255277145856, 0.018756246504877002, +0.018806237685717531, 0.018856228819542468, 0.018906219906227276, 0.018956210945646090, 0.019006201937674376, 0.019056192882187156, 0.019106183779059899, 0.019156174628166739, +0.019206165429383144, 0.019256156182584132, 0.019306146887645176, 0.019356137544440408, 0.019406128152845297, 0.019456118712735310, 0.019506109223984578, 0.019556099686468577, +0.019606090100062326, 0.019656080464641294, 0.019706070780079618, 0.019756061046252764, 0.019806051263035755, 0.019856041430304065, 0.019906031547931826, 0.019956021615794507, +0.020006011633767137, 0.020056001601725180, 0.020105991519542774, 0.020155981387095390, 0.020205971204258055, 0.020255960970906234, 0.020305950686914067, 0.020355940352157022, +0.020405929966510569, 0.020455919529848852, 0.020505909042047330, 0.020555898502981042, 0.020605887912525447, 0.020655877270554689, 0.020705866576944239, 0.020755855831569123, +0.020805845034304809, 0.020855834185025440, 0.020905823283606486, 0.020955812329922975, 0.021005801323850375, 0.021055790265262827, 0.021105779154035803, 0.021155767990044334, +0.021205756773163886, 0.021255745503268607, 0.021305734180233959, 0.021355722803935422, 0.021405711374247134, 0.021455699891044566, 0.021505688354202749, 0.021555676763597157, +0.021605665119101929, 0.021655653420592537, 0.021705641667944010, 0.021755629861031824, 0.021805617999730121, 0.021855606083914372, 0.021905594113459607, 0.021955582088241301, +0.022005570008133593, 0.022055557873011965, 0.022105545682751439, 0.022155533437227495, 0.022205521136314271, 0.022255508779887245, 0.022305496367821448, 0.022355483899992354, +0.022405471376274109, 0.022455458796542180, 0.022505446160672050, 0.022555433468537861, 0.022605420720015090, 0.022655407914978765, 0.022705395053304368, 0.022755382134866033, +0.022805369159539249, 0.022855356127199036, 0.022905343037720880, 0.022955329890978923, 0.023005316686848642, 0.023055303425205068, 0.023105290105923677, 0.023155276728878620, +0.023205263293945372, 0.023255249800998964, 0.023305236249914874, 0.023355222640567250, 0.023405208972831573, 0.023455195246583314, 0.023505181461696622, 0.023555167618046980, +0.023605153715509416, 0.023655139753959414, 0.023705125733271118, 0.023755111653320005, 0.023805097513981115, 0.023855083315129925, 0.023905069056640586, 0.023955054738388569, +0.024005040360248919, 0.024055025922097111, 0.024105011423807294, 0.024154996865254946, 0.024204982246315107, 0.024254967566863260, 0.024304952826773547, 0.024354938025921452, +0.024404923164182458, 0.024454908241430710, 0.024504893257541693, 0.024554878212390441, 0.024604863105852439, 0.024654847937801833, 0.024704832708114109, 0.024754817416664302, +0.024804802063327899, 0.024854786647979042, 0.024904771170493223, 0.024954755630745472, 0.025004740028611278, 0.025054724363964789, 0.025104708636681492, 0.025154692846636420, +0.025204676993705061, 0.025254661077761566, 0.025304645098681418, 0.025354629056339659, 0.025404612950611770, 0.025454596781371904, 0.025504580548495547, 0.025554564251858179, +0.025604547891333960, 0.025654531466798372, 0.025704514978126453, 0.025754498425193690, 0.025804481807874240, 0.025854465126043585, 0.025904448379576766, 0.025954431568349270, +0.026004414692235252, 0.026054397751110195, 0.026104380744849144, 0.026154363673327588, 0.026204346536419676, 0.026254329334000900, 0.026304312065946300, 0.026354294732131363, +0.026404277332430247, 0.026454259866718434, 0.026504242334871420, 0.026554224736763353, 0.026604207072269726, 0.026654189341265580, 0.026704171543626403, 0.026754153679226355, +0.026804135747940924, 0.026854117749645152, 0.026904099684214530, 0.026954081551523217, 0.027004063351446696, 0.027054045083860022, 0.027104026748638675, 0.027154008345656819, +0.027203989874789940, 0.027253971335913087, 0.027303952728901751, 0.027353934053630090, 0.027403915309973593, 0.027453896497807748, 0.027503877617006723, 0.027553858667446002, +0.027603839649000633, 0.027653820561546111, 0.027703801404956593, 0.027753782179107570, 0.027803762883874095, 0.027853743519131655, 0.027903724084754410, 0.027953704580617859, +0.028003685006597043, 0.028053665362567461, 0.028103645648403269, 0.028153625863979966, 0.028203606009172596, 0.028253586083856655, 0.028303566087906306, 0.028353546021197041, +0.028403525883604355, 0.028453505675002412, 0.028503485395266703, 0.028553465044272280, 0.028603444621894639, 0.028653424128007941, 0.028703403562487687, 0.028753382925208921, +0.028803362216047141, 0.028853341434876514, 0.028903320581572533, 0.028953299656010248, 0.029003278658065158, 0.029053257587611431, 0.029103236444524557, 0.029153215228679592, +0.029203193939952035, 0.029253172578216049, 0.029303151143347129, 0.029353129635220333, 0.029403108053711158, 0.029453086398693769, 0.029503064670043662, 0.029553042867636336, +0.029603020991345961, 0.029652999041048032, 0.029702977016617609, 0.029752954917930185, 0.029802932744859928, 0.029852910497282344, 0.029902888175072480, 0.029952865778105839, +0.030002843306256591, 0.030052820759400235, 0.030102798137411828, 0.030152775440166868, 0.030202752667539527, 0.030252729819405303, 0.030302706895639252, 0.030352683896116880, +0.030402660820712357, 0.030452637669301178, 0.030502614441758853, 0.030552591137959544, 0.030602567757778761, 0.030652544301091555, 0.030702520767773432, 0.030752497157698566, +0.030802473470742456, 0.030852449706780163, 0.030902425865687186, 0.030952401947337706, 0.031002377951607218, 0.031052353878370784, 0.031102329727503913, 0.031152305498880772, +0.031202281192376866, 0.031252256807867258, 0.031302232345227450, 0.031352207804331622, 0.031402183185055270, 0.031452158487273903, 0.031502133710861698, 0.031552108855694164, +0.031602083921646353, 0.031652058908593773, 0.031702033816410603, 0.031752008644972352, 0.031801983394154076, 0.031851958063831287, 0.031901932653878161, 0.031951907164170200, +0.032001881594582476, 0.032051855944990486, 0.032101830215268419, 0.032151804405291771, 0.032201778514935615, 0.032251752544075453, 0.032301726492585468, 0.032351700360341164, +0.032401674147217611, 0.032451647853090321, 0.032501621477833462, 0.032551595021322551, 0.032601568483433097, 0.032651541864039277, 0.032701515163016601, 0.032751488380240140, +0.032801461515585398, 0.032851434568926564, 0.032901407540139142, 0.032951380429098197, 0.033001353235679251, 0.033051325959756475, 0.033101298601205378, 0.033151271159901040, +0.033201243635718969, 0.033251216028533349, 0.033301188338219684, 0.033351160564653044, 0.033401132707708954, 0.033451104767261583, 0.033501076743186455, 0.033551048635359078, +0.033601020443653630, 0.033650992167945634, 0.033700963808110163, 0.033750935364022717, 0.033800906835557497, 0.033850878222590003, 0.033900849524995322, 0.033950820742648956, +0.034000791875425096, 0.034050762923199251, 0.034100733885846501, 0.034150704763242362, 0.034200675555261018, 0.034250646261777984, 0.034300616882668333, 0.034350587417807589, +0.034400557867069928, 0.034450528230330874, 0.034500498507465942, 0.034550468698349317, 0.034600438802856522, 0.034650408820862635, 0.034700378752243168, 0.034750348596872302, +0.034800318354625576, 0.034850288025378047, 0.034900257609005246, 0.034950227105381357, 0.035000196514381895, 0.035050165835881948, 0.035100135069757024, 0.035150104215881321, +0.035200073274130363, 0.035250042244379214, 0.035300011126503404, 0.035349979920377125, 0.035399948625875900, 0.035449917242875238, 0.035499885771249351, 0.035549854210873741, +0.035599822561623494, 0.035649790823374140, 0.035699758995999864, 0.035749727079376188, 0.035799695073378199, 0.035849662977881412, 0.035899630792760026, 0.035949598517889557, +0.035999566153145098, 0.036049533698402164, 0.036099501153534955, 0.036149468518418992, 0.036199435792929363, 0.036249402976941583, 0.036299370070329851, 0.036349337072969695, +0.036399303984736196, 0.036449270805504877, 0.036499237535149942, 0.036549204173546915, 0.036599170720571318, 0.036649137176097350, 0.036699103540000541, 0.036749069812155970, +0.036799035992439173, 0.036849002080724343, 0.036898968076887001, 0.036948933980802241, 0.036998899792345594, 0.037048865511391249, 0.037098831137814745, 0.037148796671491159, +0.037198762112296030, 0.037248727460103548, 0.037298692714789250, 0.037348657876228215, 0.037398622944295981, 0.037448587918866752, 0.037498552799816044, 0.037548517587019402, +0.037598482280351023, 0.037648446879686437, 0.037698411384900737, 0.037748375795869447, 0.037798340112466779, 0.037848304334568261, 0.037898268462048981, 0.037948232494784469, +0.037998196432648935, 0.038048160275517912, 0.038098124023266490, 0.038148087675770194, 0.038198051232903242, 0.038248014694541158, 0.038297978060559040, 0.038347941330832420, +0.038397904505235503, 0.038447867583643824, 0.038497830565932915, 0.038547793451976994, 0.038597756241651585, 0.038647718934831786, 0.038697681531393135, 0.038747644031209838, +0.038797606434157424, 0.038847568740110999, 0.038897530948946095, 0.038947493060536922, 0.038997455074759012, 0.039047416991487470, 0.039097378810597820, 0.039147340531964288, +0.039197302155462403, 0.039247263680967259, 0.039297225108354407, 0.039347186437498044, 0.039397147668273715, 0.039447108800556512, 0.039497069834221986, 0.039547030769144342, +0.039596991605199118, 0.039646952342261864, 0.039696912980206778, 0.039746873518909417, 0.039796833958244869, 0.039846794298088677, 0.039896754538315059, 0.039946714678799553, +0.039996674719417265, 0.040046634660043733, 0.040096594500553161, 0.040146554240821114, 0.040196513880722679, 0.040246473420133398, 0.040296432858927492, 0.040346392196980503, +0.040396351434167539, 0.040446310570364137, 0.040496269605444515, 0.040546228539284218, 0.040596187371758789, 0.040646146102742454, 0.040696104732110758, 0.040746063259738792, +0.040796021685502115, 0.040845980009274939, 0.040895938230932814, 0.040945896350350841, 0.040995854367404570, 0.041045812281968228, 0.041095770093917343, 0.041145727803127044, +0.041195685409472861, 0.041245642912829027, 0.041295600313071078, 0.041345557610074135, 0.041395514803713743, 0.041445471893864112, 0.041495428880400809, 0.041545385763199376, +0.041595342542134033, 0.041645299217080337, 0.041695255787913388, 0.041745212254508744, 0.041795168616740631, 0.041845124874484593, 0.041895081027615744, 0.041945037076009634, +0.041994993019540489, 0.042044948858083860, 0.042094904591514860, 0.042144860219709042, 0.042194815742540630, 0.042244771159885175, 0.042294726471617798, 0.042344681677614043, +0.042394636777748143, 0.042444591771895655, 0.042494546659932124, 0.042544501441731788, 0.042594456117170200, 0.042644410686122465, 0.042694365148464149, 0.042744319504069483, +0.042794273752814013, 0.042844227894572859, 0.042894181929221578, 0.042944135856634397, 0.042994089676686879, 0.043044043389254140, 0.043093996994211729, 0.043143950491433887, +0.043193903880796164, 0.043243857162173688, 0.043293810335442010, 0.043343763400475362, 0.043393716357149302, 0.043443669205338958, 0.043493621944919882, 0.043543574575766304, +0.043593527097753798, 0.043643479510757907, 0.043693431814652885, 0.043743384009314275, 0.043793336094617205, 0.043843288070437240, 0.043893239936648613, 0.043943191693126889, +0.043993143339747180, 0.044043094876385060, 0.044093046302914753, 0.044142997619211838, 0.044192948825151422, 0.044242899920609084, 0.044292850905459050, 0.044342801779576890, +0.044392752542837727, 0.044442703195117124, 0.044492653736289314, 0.044542604166229877, 0.044592554484814369, 0.044642504691917037, 0.044692454787413440, 0.044742404771178704, +0.044792354643088401, 0.044842304403016765, 0.044892254050839374, 0.044942203586431341, 0.044992153009668252, 0.045042102320424326, 0.045092051518575156, 0.045142000603995848, +0.045191949576561988, 0.045241898436147801, 0.045291847182628880, 0.045341795815880333, 0.045391744335777744, 0.045441692742195346, 0.045491641035008724, 0.045541589214093438, +0.045591537279323732, 0.045641485230575186, 0.045691433067722928, 0.045741380790642536, 0.045791328399208242, 0.045841275893295626, 0.045891223272779821, 0.045941170537536401, +0.045991117687439617, 0.046041064722365035, 0.046091011642187790, 0.046140958446783460, 0.046190905136026292, 0.046240851709791857, 0.046290798167955297, 0.046340744510392183, +0.046390690736976763, 0.046440636847584621, 0.046490582842090886, 0.046540528720371135, 0.046590474482299617, 0.046640420127751915, 0.046690365656603609, 0.046740311068728939, +0.046790256364003496, 0.046840201542302409, 0.046890146603501263, 0.046940091547474312, 0.046990036374097127, 0.047039981083244850, 0.047089925674793066, 0.047139870148616023, +0.047189814504589311, 0.047239758742588053, 0.047289702862487848, 0.047339646864162942, 0.047389590747488913, 0.047439534512340918, 0.047489478158594521, 0.047539421686123989, +0.047589365094804902, 0.047639308384512843, 0.047689251555122075, 0.047739194606508176, 0.047789137538546286, 0.047839080351112000, 0.047889023044079569, 0.047938965617324580, +0.047988908070722182, 0.048038850404147952, 0.048088792617476152, 0.048138734710582373, 0.048188676683341758, 0.048238618535629892, 0.048288560267321035, 0.048338501878290779, +0.048388443368414268, 0.048438384737567092, 0.048488325985623512, 0.048538267112459121, 0.048588208117949498, 0.048638149001968917, 0.048688089764392962, 0.048738030405096777, +0.048787970923955967, 0.048837911320844786, 0.048887851595638819, 0.048937791748213229, 0.048987731778443601, 0.049037671686204203, 0.049087611471370626, 0.049137551133818021, +0.049187490673421978, 0.049237430090056766, 0.049287369383597977, 0.049337308553920767, 0.049387247600900727, 0.049437186524412126, 0.049487125324330562, 0.049537064000531178, +0.049587002552889586, 0.049636940981280041, 0.049686879285578141, 0.049736817465659486, 0.049786755521398343, 0.049836693452670312, 0.049886631259350549, 0.049936568941314652, +0.049986506498436889, 0.050036443930592860, 0.050086381237657719, 0.050136318419507067, 0.050186255476015185, 0.050236192407057650, 0.050286129212509648, 0.050336065892246755, +0.050386002446143260, 0.050435938874074757, 0.050485875175916406, 0.050535811351543815, 0.050585747400831250, 0.050635683323654312, 0.050685619119888614, 0.050735554789408423, +0.050785490332089352, 0.050835425747806542, 0.050885361036435622, 0.050935296197850852, 0.050985231231927844, 0.051035166138541754, 0.051085100917568189, 0.051135035568881437, +0.051184970092357090, 0.051234904487870318, 0.051284838755296734, 0.051334772894510605, 0.051384706905387545, 0.051434640787802716, 0.051484574541631731, 0.051534508166748864, +0.051584441663029730, 0.051634375030349934, 0.051684308268583758, 0.051734241377606807, 0.051784174357294252, 0.051834107207521712, 0.051884039928163456, 0.051933972519095095, +0.051983904980191807, 0.052033837311329205, 0.052083769512381563, 0.052133701583224494, 0.052183633523733175, 0.052233565333783212, 0.052283497013248900, 0.052333428562005839, +0.052383359979929205, 0.052433291266894617, 0.052483222422776359, 0.052533153447450041, 0.052583084340791286, 0.052633015102674381, 0.052682945732974933, 0.052732876231568117, +0.052782806598329561, 0.052832736833133540, 0.052882666935855679, 0.052932596906371150, 0.052982526744555572, 0.053032456450283240, 0.053082386023429760, 0.053132315463870317, +0.053182244771480529, 0.053232173946134685, 0.053282102987708406, 0.053332031896076867, 0.053381960671115697, 0.053431889312699175, 0.053481817820702937, 0.053531746195002151, +0.053581674435472446, 0.053631602541988108, 0.053681530514424765, 0.053731458352658037, 0.053781386056562221, 0.053831313626012942, 0.053881241060885376, 0.053931168361055153, +0.053981095526396565, 0.054031022556785241, 0.054080949452096357, 0.054130876212205546, 0.054180802836987098, 0.054230729326316639, 0.054280655680069366, 0.054330581898120893, +0.054380507980345522, 0.054430433926618879, 0.054480359736816149, 0.054530285410812972, 0.054580210948483629, 0.054630136349703762, 0.054680061614348997, 0.054729986742293638, +0.054779911733413310, 0.054829836587583204, 0.054879761304678948, 0.054929685884574850, 0.054979610327146530, 0.055029534632269186, 0.055079458799818452, 0.055129382829668623, +0.055179306721695340, 0.055229230475773793, 0.055279154091779609, 0.055329077569587097, 0.055379000909071892, 0.055428924110109190, 0.055478847172574612, 0.055528770096342474, +0.055578692881288416, 0.055628615527288067, 0.055678538034215734, 0.055728460401947059, 0.055778382630357233, 0.055828304719321889, 0.055878226668715343, 0.055928148478413230, +0.055978070148290746, 0.056027991678223532, 0.056077913068085891, 0.056127834317753471, 0.056177755427101468, 0.056227676396005517, 0.056277597224339927, 0.056327517911980346, +0.056377438458801978, 0.056427358864680449, 0.056477279129490084, 0.056527199253106515, 0.056577119235404955, 0.056627039076261036, 0.056676958775549076, 0.056726878333144722, +0.056776797748923614, 0.056826717022760063, 0.056876636154529731, 0.056926555144107799, 0.056976473991369923, 0.057026392696190427, 0.057076311258444944, 0.057126229678008678, +0.057176147954757291, 0.057226066088565085, 0.057275984079307708, 0.057325901926860379, 0.057375819631098737, 0.057425737191897107, 0.057475654609131129, 0.057525571882676013, +0.057575489012407409, 0.057625405998199646, 0.057675322839928364, 0.057725239537469220, 0.057775156090696535, 0.057825072499485958, 0.057874988763712699, 0.057924904883252408, +0.057974820857979420, 0.058024736687769370, 0.058074652372497489, 0.058124567912039411, 0.058174483306269474, 0.058224398555063332, 0.058274313658296190, 0.058324228615843708, +0.058374143427580211, 0.058424058093381352, 0.058473972613122351, 0.058523886986678861, 0.058573801213925213, 0.058623715294737061, 0.058673629228990061, 0.058723543016558549, +0.058773456657318174, 0.058823370151144166, 0.058873283497912168, 0.058923196697496523, 0.058973109749772878, 0.059023022654616467, 0.059072935411902942, 0.059122848021506635, +0.059172760483303208, 0.059222672797167877, 0.059272584962976306, 0.059322496980602830, 0.059372408849923120, 0.059422320570812377, 0.059472232143146279, 0.059522143566799163, +0.059572054841646682, 0.059621965967564507, 0.059671876944426980, 0.059721787772109756, 0.059771698450488062, 0.059821608979437564, 0.059871519358832608, 0.059921429588548847, +0.059971339668461514, 0.060021249598446270, 0.060071159378377467, 0.060121069008130759, 0.060170978487581385, 0.060220887816605000, 0.060270796995075961, 0.060320706022869923, +0.060370614899862118, 0.060420523625928230, 0.060470432200942580, 0.060520340624780851, 0.060570248897318275, 0.060620157018430515, 0.060670064987991920, 0.060719972805878167, +0.060769880471964917, 0.060819787986126528, 0.060869695348238669, 0.060919602558176571, 0.060969509615815910, 0.061019416521031038, 0.061069323273697615, 0.061119229873690888, +0.061169136320886532, 0.061219042615158883, 0.061268948756383640, 0.061318854744436012, 0.061368760579191703, 0.061418666260525043, 0.061468571788311714, 0.061518477162426963, +0.061568382382746457, 0.061618287449144556, 0.061668192361496933, 0.061718097119679273, 0.061768001723565925, 0.061817906173032580, 0.061867810467954462, 0.061917714608207261, +0.061967618593665334, 0.062017522424204365, 0.062067426099699584, 0.062117329620026682, 0.062167232985060009, 0.062217136194675254, 0.062267039248747665, 0.062316942147152915, +0.062366844889765370, 0.062416747476460713, 0.062466649907114188, 0.062516552181601473, 0.062566454299796945, 0.062616356261576273, 0.062666258066815167, 0.062716159715387965, +0.062766061207170362, 0.062815962542037598, 0.062865863719865384, 0.062915764740528068, 0.062965665603901336, 0.063015566309860438, 0.063065466858281058, 0.063115367249037588, +0.063165267482005683, 0.063215167557060623, 0.063265067474078077, 0.063314967232932423, 0.063364866833499345, 0.063414766275654108, 0.063464665559272396, 0.063514564684228586, +0.063564463650398348, 0.063614362457656962, 0.063664261105880110, 0.063714159594942157, 0.063764057924718814, 0.063813956095085764, 0.063863854105917384, 0.063913751957089357, +0.063963649648476964, 0.064013547179955888, 0.064063444551400492, 0.064113341762686502, 0.064163238813689141, 0.064213135704284136, 0.064263032434345849, 0.064312929003749963, +0.064362825412371774, 0.064412721660086963, 0.064462617746769896, 0.064512513672296296, 0.064562409436541401, 0.064612305039380924, 0.064662200480689255, 0.064712095760342078, +0.064761990878215103, 0.064811885834182709, 0.064861780628120591, 0.064911675259904031, 0.064961569729408725, 0.065011464036509051, 0.065061358181080720, 0.065111252162998998, +0.065161145982139582, 0.065211039638376850, 0.065260933131586527, 0.065310826461643878, 0.065360719628424602, 0.065410612631803075, 0.065460505471655023, 0.065510398147855711, +0.065560290660280837, 0.065610183008804793, 0.065660075193303302, 0.065709967213652062, 0.065759859069725465, 0.065809750761399208, 0.065859642288548584, 0.065909533651049290, +0.065959424848775733, 0.066009315881603609, 0.066059206749408184, 0.066109097452065196, 0.066158987989449011, 0.066208878361435367, 0.066258768567899529, 0.066308658608717208, +0.066358548483762783, 0.066408438192912006, 0.066458327736040129, 0.066508217113022877, 0.066558106323734628, 0.066607995368051121, 0.066657884245848079, 0.066707772956999867, +0.066757661501382237, 0.066807549878870442, 0.066857438089340221, 0.066907326132665965, 0.066957214008723384, 0.067007101717387774, 0.067056989258534844, 0.067106876632039014, +0.067156763837775982, 0.067206650875621041, 0.067256537745449915, 0.067306424447136998, 0.067356310980558026, 0.067406197345588281, 0.067456083542103487, 0.067505969569978022, +0.067555855429087652, 0.067605741119307644, 0.067655626640513708, 0.067705511992580278, 0.067755397175383064, 0.067805282188797805, 0.067855167032698893, 0.067905051706962066, +0.067954936211462605, 0.068004820546076247, 0.068054704710677399, 0.068104588705141786, 0.068154472529344701, 0.068204356183161882, 0.068254239666467723, 0.068304122979137960, +0.068354006121047903, 0.068403889092073275, 0.068453771892088469, 0.068503654520969237, 0.068553536978590873, 0.068603419264829102, 0.068653301379558357, 0.068703183322654335, +0.068753065093992816, 0.068802946693448178, 0.068852828120896187, 0.068902709376212123, 0.068952590459271726, 0.069002471369949400, 0.069052352108120912, 0.069102232673661529, +0.069152113066447016, 0.069201993286351779, 0.069251873333251557, 0.069301753207021644, 0.069351632907537791, 0.069401512434674420, 0.069451391788307268, 0.069501270968311643, +0.069551149974563270, 0.069601028806936582, 0.069650907465307332, 0.069700785949551244, 0.069750664259542752, 0.069800542395157608, 0.069850420356271092, 0.069900298142758985, +0.069950175754495678, 0.070000053191356937, 0.070049930453218057, 0.070099807539954803, 0.070149684451441582, 0.070199561187554146, 0.070249437748167817, 0.070299314133158333, +0.070349190342400114, 0.070399066375768926, 0.070448942233140077, 0.070498817914389306, 0.070548693419391045, 0.070598568748021062, 0.070648443900154650, 0.070698318875667562, +0.070748193674434245, 0.070798068296330452, 0.070847942741231920, 0.070897817009013084, 0.070947691099549709, 0.070997565012717118, 0.071047438748391048, 0.071097312306445934, +0.071147185686757541, 0.071197058889201192, 0.071246931913652625, 0.071296804759986301, 0.071346677428077959, 0.071396549917802921, 0.071446422229036952, 0.071496294361654486, +0.071546166315531276, 0.071596038090542657, 0.071645909686564396, 0.071695781103470899, 0.071745652341137958, 0.071795523399441341, 0.071845394278255453, 0.071895264977456089, +0.071945135496918555, 0.071995005836518633, 0.072044875996130756, 0.072094745975630689, 0.072144615774893756, 0.072194485393795721, 0.072244354832211033, 0.072294224090015458, +0.072344093167084317, 0.072393962063293391, 0.072443830778517113, 0.072493699312631263, 0.072543567665511163, 0.072593435837032594, 0.072643303827069974, 0.072693171635499113, +0.072743039262195761, 0.072792906707034366, 0.072842773969890709, 0.072892641050640111, 0.072942507949158353, 0.072992374665319881, 0.073042241199000477, 0.073092107550075461, +0.073141973718420628, 0.073191839703910425, 0.073241705506420604, 0.073291571125826530, 0.073341436562003981, 0.073391301814827378, 0.073441166884172529, 0.073491031769914769, +0.073540896471929865, 0.073590760990092277, 0.073640625324277800, 0.073690489474362186, 0.073740353440219911, 0.073790217221726753, 0.073840080818758050, 0.073889944231189594, +0.073939807458895820, 0.073989670501752536, 0.074039533359635090, 0.074089396032419236, 0.074139258519979448, 0.074189120822191520, 0.074238982938930789, 0.074288844870073048, +0.074338706615492745, 0.074388568175065686, 0.074438429548667195, 0.074488290736173079, 0.074538151737457786, 0.074588012552397123, 0.074637873180866426, 0.074687733622741490, +0.074737593877896774, 0.074787453946208074, 0.074837313827551169, 0.074887173521800562, 0.074937033028832006, 0.074986892348520864, 0.075036751480742944, 0.075086610425372693, +0.075136469182285934, 0.075186327751357987, 0.075236186132464661, 0.075286044325480431, 0.075335902330281090, 0.075385760146742004, 0.075435617774738950, 0.075485475214146405, +0.075535332464840177, 0.075585189526695615, 0.075635046399588526, 0.075684903083393387, 0.075734759577985977, 0.075784615883242118, 0.075834471999036271, 0.075884327925244244, +0.075934183661741400, 0.075984039208403534, 0.076033894565105134, 0.076083749731721995, 0.076133604708129479, 0.076183459494203395, 0.076233314089818233, 0.076283168494849771, +0.076333022709173387, 0.076382876732664903, 0.076432730565198767, 0.076482584206650814, 0.076532437656896407, 0.076582290915811341, 0.076632143983270104, 0.076681996859148505, +0.076731849543322364, 0.076781702035666144, 0.076831554336055680, 0.076881406444366321, 0.076931258360473903, 0.076981110084252888, 0.077030961615579097, 0.077080812954327907, +0.077130664100375113, 0.077180515053595231, 0.077230365813864055, 0.077280216381056963, 0.077330066755049789, 0.077379916935716983, 0.077429766922934393, 0.077479616716577396, +0.077529466316521786, 0.077579315722642067, 0.077629164934814074, 0.077679013952913156, 0.077728862776815150, 0.077778711406394543, 0.077828559841527159, 0.077878408082088818, +0.077928256127954010, 0.077978103978998570, 0.078027951635097861, 0.078077799096127720, 0.078127646361962635, 0.078177493432478443, 0.078227340307550505, 0.078277186987054673, +0.078327033470865420, 0.078376879758858584, 0.078426725850909554, 0.078476571746894153, 0.078526417446686869, 0.078576262950163553, 0.078626108257199581, 0.078675953367670776, +0.078725798281451639, 0.078775642998418008, 0.078825487518445717, 0.078875331841409269, 0.078925175967184485, 0.078975019895646759, 0.079024863626671937, 0.079074707160134511, +0.079124550495910301, 0.079174393633874726, 0.079224236573903609, 0.079274079315871465, 0.079323921859654117, 0.079373764205126957, 0.079423606352165846, 0.079473448300645261, +0.079523290050441064, 0.079573131601428634, 0.079622972953483820, 0.079672814106481138, 0.079722655060296410, 0.079772495814805500, 0.079822336369882896, 0.079872176725404462, +0.079922016881245575, 0.079971856837282099, 0.080021696593388522, 0.080071536149440722, 0.080121375505314077, 0.080171214660884421, 0.080221053616026300, 0.080270892370615549, +0.080320730924527559, 0.080370569277638179, 0.080420407429821941, 0.080470245380954694, 0.080520083130911815, 0.080569920679569182, 0.080619758026801311, 0.080669595172484024, +0.080719432116493212, 0.080769268858703364, 0.080819105398990357, 0.080868941737229569, 0.080918777873296877, 0.080968613807066811, 0.081018449538415194, 0.081068285067217458, +0.081118120393349452, 0.081167955516685708, 0.081217790437102061, 0.081267625154473944, 0.081317459668677219, 0.081367293979586391, 0.081417128087077323, 0.081466961991025447, +0.081516795691306598, 0.081566629187795323, 0.081616462480367483, 0.081666295568898470, 0.081716128453264175, 0.081765961133339116, 0.081815793608999141, 0.081865625880120127, +0.081915457946576620, 0.081965289808244454, 0.082015121464999077, 0.082064952916716324, 0.082114784163270754, 0.082164615204538216, 0.082214446040394157, 0.082264276670714412, +0.082314107095373540, 0.082363937314247390, 0.082413767327211410, 0.082463597134141448, 0.082513426734912049, 0.082563256129399076, 0.082613085317477977, 0.082662914299024601, +0.082712743073913492, 0.082762571642020527, 0.082812400003221584, 0.082862228157391193, 0.082912056104405232, 0.082961883844139134, 0.083011711376468761, 0.083061538701268672, +0.083111365818414731, 0.083161192727782385, 0.083211019429247496, 0.083260845922684623, 0.083310672207969616, 0.083360498284977949, 0.083410324153585472, 0.083460149813666729, +0.083509975265097625, 0.083559800507753579, 0.083609625541510482, 0.083659450366242866, 0.083709274981826634, 0.083759099388137651, 0.083808923585050488, 0.083858747572441009, +0.083908571350184646, 0.083958394918157320, 0.084008218276233559, 0.084058041424289243, 0.084107864362199830, 0.084157687089841199, 0.084207509607087908, 0.084257331913815833, +0.084307154009900437, 0.084356975895217609, 0.084406797569641881, 0.084456619033049171, 0.084506440285314899, 0.084556261326314983, 0.084606082155923967, 0.084655902774017744, +0.084705723180471773, 0.084755543375161918, 0.084805363357962779, 0.084855183128750220, 0.084905002687400158, 0.084954822033787139, 0.085004641167787068, 0.085054460089275391, +0.085104278798128014, 0.085154097294219480, 0.085203915577425723, 0.085253733647622162, 0.085303551504684716, 0.085353369148487956, 0.085403186578907761, 0.085453003795819604, +0.085502820799099377, 0.085552637588621666, 0.085602454164262348, 0.085652270525896898, 0.085702086673401220, 0.085751902606649888, 0.085801718325518792, 0.085851533829883836, +0.085901349119619608, 0.085951164194602012, 0.086000979054706495, 0.086050793699808989, 0.086100608129784040, 0.086150422344507580, 0.086200236343855055, 0.086250050127702399, +0.086299863695924156, 0.086349677048396259, 0.086399490184994182, 0.086449303105593817, 0.086499115810069735, 0.086548928298297884, 0.086598740570153709, 0.086648552625513117, +0.086698364464250707, 0.086748176086242385, 0.086797987491364054, 0.086847798679490329, 0.086897609650497101, 0.086947420404259845, 0.086997230940654480, 0.087047041259555605, +0.087096851360839111, 0.087146661244380502, 0.087196470910055682, 0.087246280357739237, 0.087296089587307099, 0.087345898598634730, 0.087395707391598049, 0.087445515966071669, +0.087495324321931495, 0.087545132459053016, 0.087594940377312150, 0.087644748076583484, 0.087694555556742937, 0.087744362817666469, 0.087794169859228624, 0.087843976681305377, +0.087893783283772176, 0.087943589666504965, 0.087993395829378332, 0.088043201772268209, 0.088093007495050085, 0.088142812997599893, 0.088192618279792218, 0.088242423341502993, +0.088292228182607721, 0.088342032802982307, 0.088391837202501378, 0.088441641381040853, 0.088491445338476221, 0.088541249074683429, 0.088591052589537062, 0.088640855882913067, +0.088690658954686932, 0.088740461804734591, 0.088790264432930657, 0.088840066839151063, 0.088889869023271742, 0.088939670985167307, 0.088989472724713692, 0.089039274241786398, +0.089089075536261358, 0.089138876608013187, 0.089188677456917817, 0.089238478082850764, 0.089288278485687961, 0.089338078665304008, 0.089387878621574865, 0.089437678354376021, +0.089487477863583437, 0.089537277149071698, 0.089587076210716779, 0.089636875048394168, 0.089686673661979813, 0.089736472051348326, 0.089786270216375655, 0.089836068156937759, +0.089885865872909240, 0.089935663364166071, 0.089985460630583741, 0.090035257672038196, 0.090085054488404065, 0.090134851079557293, 0.090184647445373398, 0.090234443585728324, +0.090284239500496716, 0.090334035189554490, 0.090383830652777178, 0.090433625890040739, 0.090483420901219788, 0.090533215686190285, 0.090583010244827747, 0.090632804577008119, +0.090682598682606044, 0.090732392561497469, 0.090782186213558352, 0.090831979638663338, 0.090881772836688371, 0.090931565807508968, 0.090981358551001090, 0.091031151067039379, +0.091080943355499794, 0.091130735416257838, 0.091180527249189500, 0.091230318854169393, 0.091280110231073491, 0.091329901379777312, 0.091379692300156815, 0.091429482992086655, +0.091479273455442781, 0.091529063690100734, 0.091578853695936463, 0.091628643472824622, 0.091678433020641159, 0.091728222339261617, 0.091778011428561970, 0.091827800288416847, +0.091877588918702222, 0.091927377319294068, 0.091977165490067042, 0.092026953430897090, 0.092076741141659743, 0.092126528622231002, 0.092176315872485495, 0.092226102892299197, +0.092275889681547638, 0.092325676240106805, 0.092375462567851327, 0.092425248664657206, 0.092475034530399958, 0.092524820164955557, 0.092574605568198673, 0.092624390740005266, +0.092674175680250895, 0.092723960388811519, 0.092773744865561808, 0.092823529110377723, 0.092873313123135265, 0.092923096903709076, 0.092972880451975159, 0.093022663767809030, +0.093072446851086690, 0.093122229701682782, 0.093172012319473307, 0.093221794704333796, 0.093271576856140237, 0.093321358774767299, 0.093371140460090971, 0.093420921911986782, +0.093470703130330735, 0.093520484114997485, 0.093570264865863020, 0.093620045382802899, 0.093669825665693110, 0.093719605714408322, 0.093769385528824509, 0.093819165108817673, +0.093868944454262485, 0.093918723565034931, 0.093968502441010571, 0.094018281082065405, 0.094068059488074077, 0.094117837658912615, 0.094167615594456550, 0.094217393294581897, +0.094267170759163313, 0.094316947988076813, 0.094366724981197928, 0.094416501738402672, 0.094466278259565731, 0.094516054544563091, 0.094565830593270311, 0.094615606405563407, +0.094665381981317034, 0.094715157320407209, 0.094764932422709933, 0.094814707288099875, 0.094864481916453067, 0.094914256307645037, 0.094964030461551815, 0.095013804378048086, +0.095063578057009823, 0.095113351498312640, 0.095163124701832497, 0.095212897667444119, 0.095262670395023494, 0.095312442884446180, 0.095362215135588208, 0.095411987148324259, +0.095461758922530338, 0.095511530458082028, 0.095561301754855332, 0.095611072812724934, 0.095660843631566850, 0.095710614211256664, 0.095760384551670394, 0.095810154652682708, +0.095859924514169637, 0.095909694136007195, 0.095959463518070082, 0.096009232660234298, 0.096059001562375443, 0.096108770224369519, 0.096158538646091238, 0.096208306827416601, +0.096258074768221208, 0.096307842468381061, 0.096357609927770871, 0.096407377146266654, 0.096457144123743982, 0.096506910860078912, 0.096556677355146114, 0.096606443608821618, +0.096656209620981023, 0.096705975391500332, 0.096755740920254268, 0.096805506207118863, 0.096855271251970118, 0.096905036054682758, 0.096954800615132813, 0.097004564933195855, +0.097054329008747942, 0.097104092841663756, 0.097153856431819341, 0.097203619779090283, 0.097253382883352613, 0.097303145744481054, 0.097352908362351623, 0.097402670736839919, +0.097452432867821986, 0.097502194755172536, 0.097551956398767584, 0.097601717798482743, 0.097651478954194057, 0.097701239865776224, 0.097751000533105301, 0.097800760956057317, +0.097850521134506985, 0.097900281068330347, 0.097950040757403017, 0.097999800201601012, 0.098049559400799083, 0.098099318354873233, 0.098149077063699103, 0.098198835527152722, +0.098248593745108803, 0.098298351717443402, 0.098348109444032134, 0.098397866924751012, 0.098447624159474806, 0.098497381148079516, 0.098547137890440784, 0.098596894386434653, +0.098646650635935834, 0.098696406638820400, 0.098746162394963949, 0.098795917904242525, 0.098845673166530867, 0.098895428181705033, 0.098945182949641067, 0.098994937470213692, +0.099044691743298982, 0.099094445768772535, 0.099144199546510423, 0.099193953076387370, 0.099243706358279435, 0.099293459392062244, 0.099343212177611828, 0.099392964714802953, +0.099442717003511663, 0.099492469043613571, 0.099542220834984763, 0.099591972377499949, 0.099641723671035201, 0.099691474715466161, 0.099741225510668857, 0.099790976056518058, +0.099840726352889819, 0.099890476399660214, 0.099940226196703966, 0.099989975743897147, 0.100039725041115400, 0.100089474088234780, 0.100139222885130020, 0.100188971431677220, +0.100238719727751990, 0.100288467773230390, 0.100338215567987190, 0.100387963111898450, 0.100437710404839800, 0.100487457446687310, 0.100537204237315740, 0.100586950776601170, +0.100636697064419200, 0.100686443100645950, 0.100736188885156130, 0.100785934417825860, 0.100835679698531190, 0.100885424727146870, 0.100935169503549000, 0.100984914027613200, +0.101034658299215550, 0.101084402318230820, 0.101134146084535080, 0.101183889598003980, 0.101233632858513600, 0.101283375865938690, 0.101333118620155340, 0.101382861121039200, +0.101432603368466340, 0.101482345362311540, 0.101532087102450870, 0.101581828588759980, 0.101631569821114970, 0.101681310799390580, 0.101731051523462930, 0.101780791993208080, +0.101830532208500820, 0.101880272169217220, 0.101930011875232930, 0.101979751326424060, 0.102029490522665380, 0.102079229463832970, 0.102128968149802480, 0.102178706580450020, +0.102228444755650350, 0.102278182675279560, 0.102327920339213310, 0.102377657747327720, 0.102427394899497540, 0.102477131795598860, 0.102526868435507360, 0.102576604819099120, +0.102626340946248940, 0.102676076816832900, 0.102725812430726660, 0.102775547787806340, 0.102825282887946720, 0.102875017731023880, 0.102924752316913930, 0.102974486645491680, +0.103024220716633200, 0.103073954530214160, 0.103123688086110680, 0.103173421384197550, 0.103223154424350860, 0.103272887206446280, 0.103322619730359930, 0.103372351995966570, +0.103422084003142360, 0.103471815751762920, 0.103521547241704380, 0.103571278472841550, 0.103621009445050510, 0.103670740158206940, 0.103720470612186980, 0.103770200806865390, +0.103819930742118300, 0.103869660417821820, 0.103919389833850750, 0.103969118990081210, 0.104018847886388880, 0.104068576522649850, 0.104118304898738950, 0.104168033014532290, +0.104217760869905540, 0.104267488464734840, 0.104317215798894970, 0.104366942872262060, 0.104416669684711790, 0.104466396236120290, 0.104516122526362370, 0.104565848555314130, +0.104615574322851280, 0.104665299828849920, 0.104715025073184880, 0.104764750055732270, 0.104814474776368240, 0.104864199234967560, 0.104913923431406400, 0.104963647365560420, +0.105013371037305780, 0.105063094446517260, 0.105112817593071010, 0.105162540476842700, 0.105212263097708490, 0.105261985455543190, 0.105311707550222910, 0.105361429381623360, +0.105411150949620700, 0.105460872254089700, 0.105510593294906530, 0.105560314071946880, 0.105610034585086870, 0.105659754834201360, 0.105709474819166440, 0.105759194539857840, +0.105808913996151690, 0.105858633187922810, 0.105908352115047360, 0.105958070777401460, 0.106007789174859950, 0.106057507307298970, 0.106107225174594210, 0.106156942776621840, +0.106206660113256660, 0.106256377184374850, 0.106306093989852080, 0.106355810529564510, 0.106405526803386980, 0.106455242811195640, 0.106504958552866190, 0.106554674028274790, +0.106604389237296250, 0.106654104179806750, 0.106703818855681980, 0.106753533264798110, 0.106803247407029960, 0.106852961282253690, 0.106902674890345470, 0.106952388231180110, +0.107002101304633790, 0.107051814110582210, 0.107101526648901530, 0.107151238919466610, 0.107200950922153580, 0.107250662656838180, 0.107300374123396550, 0.107350085321703550, +0.107399796251635340, 0.107449506913067640, 0.107499217305876610, 0.107548927429937100, 0.107598637285125270, 0.107648346871316840, 0.107698056188388000, 0.107747765236213570, +0.107797474014669730, 0.107847182523632640, 0.107896890762977150, 0.107946598732579450, 0.107996306432315240, 0.108046013862060700, 0.108095721021690700, 0.108145427911081380, +0.108195134530108500, 0.108244840878648220, 0.108294546956575410, 0.108344252763766220, 0.108393958300096390, 0.108443663565442120, 0.108493368559678250, 0.108543073282680950, +0.108592777734325980, 0.108642481914489500, 0.108692185823046360, 0.108741889459872770, 0.108791592824844460, 0.108841295917837600, 0.108890998738727070, 0.108940701287389030, +0.108990403563699680, 0.109040105567533890, 0.109089807298767840, 0.109139508757277250, 0.109189209942938350, 0.109238910855625980, 0.109288611495216320, 0.109338311861585140, +0.109388011954608620, 0.109437711774161630, 0.109487411320120370, 0.109537110592360570, 0.109586809590758440, 0.109636508315188840, 0.109686206765527970, 0.109735904941651590, +0.109785602843435890, 0.109835300470755720, 0.109884997823487320, 0.109934694901506850, 0.109984391704689220, 0.110034088232910610, 0.110083784486046780, 0.110133480463973910, +0.110183176166566920, 0.110232871593701970, 0.110282566745254860, 0.110332261621101770, 0.110381956221117570, 0.110431650545178490, 0.110481344593160280, 0.110531038364939160, +0.110580731860390000, 0.110630425079389000, 0.110680118021811950, 0.110729810687535040, 0.110779503076433170, 0.110829195188382520, 0.110878887023259350, 0.110928578580938510, +0.110978269861296220, 0.111027960864208260, 0.111077651589550840, 0.111127342037198850, 0.111177032207028500, 0.111226722098915570, 0.111276411712736280, 0.111326101048365520, +0.111375790105679500, 0.111425478884554010, 0.111475167384865260, 0.111524855606488160, 0.111574543549298910, 0.111624231213173300, 0.111673918597987570, 0.111723605703616590, +0.111773292529936600, 0.111822979076823810, 0.111872665344153150, 0.111922351331800810, 0.111972037039642610, 0.112021722467554740, 0.112071407615412120, 0.112121092483090990, +0.112170777070467130, 0.112220461377416770, 0.112270145403814820, 0.112319829149537490, 0.112369512614460600, 0.112419195798460370, 0.112468878701411700, 0.112518561323190840, +0.112568243663673570, 0.112617925722736140, 0.112667607500253450, 0.112717288996101740, 0.112766970210156820, 0.112816651142294900, 0.112866331792390930, 0.112916012160321110, +0.112965692245961720, 0.113015372049187640, 0.113065051569875130, 0.113114730807900010, 0.113164409763138490, 0.113214088435465500, 0.113263766824757310, 0.113313444930889680, +0.113363122753738890, 0.113412800293179850, 0.113462477549088810, 0.113512154521341570, 0.113561831209814390, 0.113611507614382200, 0.113661183734921230, 0.113710859571307300, +0.113760535123416680, 0.113810210391124250, 0.113859885374306320, 0.113909560072839100, 0.113959234486597550, 0.114008908615457910, 0.114058582459296010, 0.114108256017988070, +0.114157929291409070, 0.114207602279435240, 0.114257274981942410, 0.114306947398806830, 0.114356619529903430, 0.114406291375108490, 0.114455962934297830, 0.114505634207347690, +0.114555305194133030, 0.114604975894530100, 0.114654646308414740, 0.114704316435663200, 0.114753986276150440, 0.114803655829752700, 0.114853325096346270, 0.114902994075806080, +0.114952662768008400, 0.115002331172829070, 0.115051999290144360, 0.115101667119829190, 0.115151334661759880, 0.115201001915812220, 0.115250668881862490, 0.115300335559785650, +0.115350001949457980, 0.115399668050755300, 0.115449333863553880, 0.115498999387728700, 0.115548664623156020, 0.115598329569711670, 0.115647994227271940, 0.115697658595711790, +0.115747322674907490, 0.115796986464734880, 0.115846649965070240, 0.115896313175788550, 0.115945976096766060, 0.115995638727879090, 0.116045301069002570, 0.116094963120012790, +0.116144624880785610, 0.116194286351197320, 0.116243947531122850, 0.116293608420438520, 0.116343269019020190, 0.116392929326744110, 0.116442589343485270, 0.116492249069119950, +0.116541908503524010, 0.116591567646573750, 0.116641226498144110, 0.116690885058111410, 0.116740543326351500, 0.116790201302740690, 0.116839858987153920, 0.116889516379467500, +0.116939173479557730, 0.116988830287299590, 0.117038486802569370, 0.117088143025242940, 0.117137798955196590, 0.117187454592305300, 0.117237109936445370, 0.117286764987492670, +0.117336419745323510, 0.117386074209812840, 0.117435728380837000, 0.117485382258271830, 0.117535035841993650, 0.117584689131877430, 0.117634342127799500, 0.117683994829635710, +0.117733647237262370, 0.117783299350554480, 0.117832951169388330, 0.117882602693640260, 0.117932253923185220, 0.117981904857899560, 0.118031555497659130, 0.118081205842340260, +0.118130855891817930, 0.118180505645968460, 0.118230155104667740, 0.118279804267792050, 0.118329453135216420, 0.118379101706817160, 0.118428749982470150, 0.118478397962051690, +0.118528045645436800, 0.118577693032501800, 0.118627340123122570, 0.118676986917175420, 0.118726633414535380, 0.118776279615078740, 0.118825925518681850, 0.118875571125219700, +0.118925216434568620, 0.118974861446604500, 0.119024506161203680, 0.119074150578241140, 0.119123794697593220, 0.119173438519135820, 0.119223082042745270, 0.119272725268296580, +0.119322368195666060, 0.119372010824729630, 0.119421653155363610, 0.119471295187443020, 0.119520936920844190, 0.119570578355443020, 0.119620219491115840, 0.119669860327737670, +0.119719500865184850, 0.119769141103333280, 0.119818781042059300, 0.119868420681237920, 0.119918060020745500, 0.119967699060458360, 0.120017337800251530, 0.120066976240001360, +0.120116614379583750, 0.120166252218875040, 0.120215889757750270, 0.120265526996085770, 0.120315163933757450, 0.120364800570641670, 0.120414436906613440, 0.120464072941549120, +0.120513708675324610, 0.120563344107816270, 0.120612979238899150, 0.120662614068449550, 0.120712248596343440, 0.120761882822457150, 0.120811516746665700, 0.120861150368845450, +0.120910783688872790, 0.120960416706622710, 0.121010049421971590, 0.121059681834795350, 0.121109313944970350, 0.121158945752371610, 0.121208577256875530, 0.121258208458358000, +0.121307839356695370, 0.121357469951762720, 0.121407100243436390, 0.121456730231592310, 0.121506359916106840, 0.121555989296855040, 0.121605618373713250, 0.121655247146557440, +0.121704875615263930, 0.121754503779707800, 0.121804131639765400, 0.121853759195313130, 0.121903386446226020, 0.121953013392380430, 0.122002640033652310, 0.122052266369918030, +0.122101892401052650, 0.122151518126932530, 0.122201143547433620, 0.122250768662432300, 0.122300393471803600, 0.122350017975423940, 0.122399642173169220, 0.122449266064915840, +0.122498889650538840, 0.122548512929914630, 0.122598135902919140, 0.122647758569428740, 0.122697380929318510, 0.122747002982464830, 0.122796624728743640, 0.122846246168031330, +0.122895867300202950, 0.122945488125134920, 0.122995108642703600, 0.123044728852784070, 0.123094348755252730, 0.123143968349985510, 0.123193587636858810, 0.123243206615747700, +0.123292825286528560, 0.123342443649077370, 0.123392061703270510, 0.123441679448983060, 0.123491296886091410, 0.123540914014471510, 0.123590530833999760, 0.123640147344551250, +0.123689763546002390, 0.123739379438229100, 0.123788995021107810, 0.123838610294513580, 0.123888225258322840, 0.123937839912411970, 0.123987454256656070, 0.124037068290931520, +0.124086682015114300, 0.124136295429080820, 0.124185908532706170, 0.124235521325866740, 0.124285133808438500, 0.124334745980297880, 0.124384357841319950, 0.124433969391381110, +0.124483580630357370, 0.124533191558125100, 0.124582802174559430, 0.124632412479536740, 0.124682022472933020, 0.124731632154624680, 0.124781241524486830, 0.124830850582395870, +0.124880459328228240, 0.124930067761859000, 0.124979675883164600, 0.125029283692021010, 0.125078891188304650, 0.125128498371890630, 0.125178105242655350, 0.125227711800474820, +0.125277318045225430, 0.125326923976782330, 0.125376529595021910, 0.125426134899820160, 0.125475739891053510, 0.125525344568597070, 0.125574948932327290, 0.125624552982120140, +0.125674156717852010, 0.125723760139398070, 0.125773363246634740, 0.125822966039438430, 0.125872568517684270, 0.125922170681248670, 0.125971772530007660, 0.126021374063837680, +0.126070975282613800, 0.126120576186212470, 0.126170176774509730, 0.126219777047381960, 0.126269377004704310, 0.126318976646353250, 0.126368575972204720, 0.126418174982135200, +0.126467773676019770, 0.126517372053734950, 0.126566970115156690, 0.126616567860161430, 0.126666165288624320, 0.126715762400421790, 0.126765359195429860, 0.126814955673524990, +0.126864551834582260, 0.126914147678478170, 0.126963743205089160, 0.127013338414290330, 0.127062933305958160, 0.127112527879968660, 0.127162122136198260, 0.127211716074522140, +0.127261309694816720, 0.127310902996958020, 0.127360495980822520, 0.127410088646285340, 0.127459680993222910, 0.127509273021511300, 0.127558864731026960, 0.127608456121645010, +0.127658047193241890, 0.127707637945693670, 0.127757228378876820, 0.127806818492666420, 0.127856408286939010, 0.127905997761570990, 0.127955586916437550, 0.128005175751415150, +0.128054764266379790, 0.128104352461207970, 0.128153940335774850, 0.128203527889956840, 0.128253115123630020, 0.128302702036670880, 0.128352288628954540, 0.128401874900357450, +0.128451460850755680, 0.128501046480025720, 0.128550631788042690, 0.128600216774683060, 0.128649801439822910, 0.128699385783338700, 0.128748969805105580, 0.128798553505000050, +0.128848136882898560, 0.128897719938676270, 0.128947302672209720, 0.128996885083374900, 0.129046467172048290, 0.129096048938105080, 0.129145630381421740, 0.129195211501874350, +0.129244792299339360, 0.129294372773691930, 0.129343952924808600, 0.129393532752565380, 0.129443112256838740, 0.129492691437503920, 0.129542270294437320, 0.129591848827515090, +0.129641427036613660, 0.129691004921608230, 0.129740582482375270, 0.129790159718790880, 0.129839736630731510, 0.129889313218072370, 0.129938889480689930, 0.129988465418460740, +0.130038041031259930, 0.130087616318964010, 0.130137191281449040, 0.130186765918591550, 0.130236340230266700, 0.130285914216351000, 0.130335487876720500, 0.130385061211251760, +0.130434634219819880, 0.130484206902301450, 0.130533779258572490, 0.130583351288509510, 0.130632922991987730, 0.130682494368883630, 0.130732065419073310, 0.130781636142433240, +0.130831206538838670, 0.130880776608166080, 0.130930346350291970, 0.130979915765091550, 0.131029484852441370, 0.131079053612217440, 0.131128622044296340, 0.131178190148553250, +0.131227757924864690, 0.131277325373106710, 0.131326892493155850, 0.131376459284887340, 0.131426025748177690, 0.131475591882902950, 0.131525157688939690, 0.131574723166163090, +0.131624288314449690, 0.131673853133675550, 0.131723417623717250, 0.131772981784449930, 0.131822545615750190, 0.131872109117494500, 0.131921672289558090, 0.131971235131817520, +0.132020797644148870, 0.132070359826428650, 0.132119921678532090, 0.132169483200335720, 0.132219044391715640, 0.132268605252548410, 0.132318165782709220, 0.132367725982074610, +0.132417285850520680, 0.132466845387924000, 0.132516404594159750, 0.132565963469104490, 0.132615522012634300, 0.132665080224625780, 0.132714638104954100, 0.132764195653495810, +0.132813752870127500, 0.132863309754724350, 0.132912866307162950, 0.132962422527319350, 0.133011978415070150, 0.133061533970290580, 0.133111089192857160, 0.133160644082646020, +0.133210198639533710, 0.133259752863395450, 0.133309306754107820, 0.133358860311546920, 0.133408413535589330, 0.133457966426110240, 0.133507518982986240, 0.133557071206093450, +0.133606623095308410, 0.133656174650506360, 0.133705725871563900, 0.133755276758357110, 0.133804827310762600, 0.133854377528655530, 0.133903927411912570, 0.133953476960410180, +0.134003026174023680, 0.134052575052629630, 0.134102123596104130, 0.134151671804323750, 0.134201219677163780, 0.134250767214500740, 0.134300314416210760, 0.134349861282170470, +0.134399407812255070, 0.134448954006341160, 0.134498499864304870, 0.134548045386022750, 0.134597590571370110, 0.134647135420223470, 0.134696679932458980, 0.134746224107953260, +0.134795767946581520, 0.134845311448220350, 0.134894854612746360, 0.134944397440034780, 0.134993939929962230, 0.135043482082404800, 0.135093023897239120, 0.135142565374340440, +0.135192106513585350, 0.135241647314850000, 0.135291187778010940, 0.135340727902943490, 0.135390267689524220, 0.135439807137629290, 0.135489346247135290, 0.135538885017917470, +0.135588423449852450, 0.135637961542816350, 0.135687499296685780, 0.135737036711336050, 0.135786573786643720, 0.135836110522485400, 0.135885646918736340, 0.135935182975273180, +0.135984718691972070, 0.136034254068709590, 0.136083789105361040, 0.136133323801803010, 0.136182858157911670, 0.136232392173563640, 0.136281925848634190, 0.136331459182999910, +0.136380992176536990, 0.136430524829122020, 0.136480057140630300, 0.136529589110938460, 0.136579120739922620, 0.136628652027459440, 0.136678182973424180, 0.136727713577693450, +0.136777243840143450, 0.136826773760650780, 0.136876303339090730, 0.136925832575339940, 0.136975361469274970, 0.137024890020771200, 0.137074418229705170, 0.137123946095953130, +0.137173473619391640, 0.137223000799896020, 0.137272527637342910, 0.137322054131608470, 0.137371580282569350, 0.137421106090100830, 0.137470631554079570, 0.137520156674381690, +0.137569681450883880, 0.137619205883461440, 0.137668729971990980, 0.137718253716348660, 0.137767777116411190, 0.137817300172053820, 0.137866822883153190, 0.137916345249585960, +0.137965867271227420, 0.138015388947954200, 0.138064910279642520, 0.138114431266169010, 0.138163951907408960, 0.138213472203239040, 0.138262992153535460, 0.138312511758174830, +0.138362031017032460, 0.138411549929985030, 0.138461068496908730, 0.138510586717680180, 0.138560104592174740, 0.138609622120269030, 0.138659139301839260, 0.138708656136762090, +0.138758172624912860, 0.138807688766168170, 0.138857204560404710, 0.138906720007497790, 0.138956235107324080, 0.139005749859759780, 0.139055264264681510, 0.139104778321964690, +0.139154292031485910, 0.139203805393121380, 0.139253318406747790, 0.139302831072240480, 0.139352343389476080, 0.139401855358330830, 0.139451366978681350, 0.139500878250403050, +0.139550389173372540, 0.139599899747466060, 0.139649409972560260, 0.139698919848530500, 0.139748429375253450, 0.139797938552605750, 0.139847447380462790, 0.139896955858701180, +0.139946463987197180, 0.139995971765827480, 0.140045479194467410, 0.140094986272993630, 0.140144493001282400, 0.140193999379210370, 0.140243505406652900, 0.140293011083486690, +0.140342516409587920, 0.140392021384833310, 0.140441526009098210, 0.140491030282259290, 0.140540534204192800, 0.140590037774775380, 0.140639540993882480, 0.140689043861390690, +0.140738546377176310, 0.140788048541115980, 0.140837550353085120, 0.140887051812960380, 0.140936552920618440, 0.140986053675934670, 0.141035554078785790, 0.141085054129048010, +0.141134553826598010, 0.141184053171311220, 0.141233552163064300, 0.141283050801733480, 0.141332549087195470, 0.141382047019325660, 0.141431544598000720, 0.141481041823096950, +0.141530538694490980, 0.141580035212058250, 0.141629531375675410, 0.141679027185218740, 0.141728522640564960, 0.141778017741589430, 0.141827512488168860, 0.141877006880179930, +0.141926500917498060, 0.141975994599999930, 0.142025487927561810, 0.142074980900060430, 0.142124473517371150, 0.142173965779370660, 0.142223457685935280, 0.142272949236941700, +0.142322440432265300, 0.142371931271782800, 0.142421421755370450, 0.142470911882905000, 0.142520401654261860, 0.142569891069317670, 0.142619380127948780, 0.142668868830031880, +0.142718357175442350, 0.142767845164056940, 0.142817332795752370, 0.142866820070403990, 0.142916306987888600, 0.142965793548082420, 0.143015279750862200, 0.143064765596103340, +0.143114251083682590, 0.143163736213476170, 0.143213220985360880, 0.143262705399212100, 0.143312189454906540, 0.143361673152320510, 0.143411156491330740, 0.143460639471812620, +0.143510122093642920, 0.143559604356697930, 0.143609086260854340, 0.143658567805987620, 0.143708048991974450, 0.143757529818691190, 0.143807010286014530, 0.143856490393819900, +0.143905970141984060, 0.143955449530383720, 0.144004928558894320, 0.144054407227392600, 0.144103885535754870, 0.144153363483857850, 0.144202841071576990, 0.144252318298789010, +0.144301795165370260, 0.144351271671197460, 0.144400747816146040, 0.144450223600092740, 0.144499699022913870, 0.144549174084486230, 0.144598648784685170, 0.144648123123387510, +0.144697597100469560, 0.144747070715808030, 0.144796543969278410, 0.144846016860757400, 0.144895489390121810, 0.144944961557247040, 0.144994433362009870, 0.145043904804286610, +0.145093375883954050, 0.145142846600887610, 0.145192316954964040, 0.145241786946059690, 0.145291256574051290, 0.145340725838814330, 0.145390194740225550, 0.145439663278161270, +0.145489131452498280, 0.145538599263112020, 0.145588066709879280, 0.145637533792676350, 0.145687000511380030, 0.145736466865865780, 0.145785932856010350, 0.145835398481690550, +0.145884863742781780, 0.145934328639160890, 0.145983793170704150, 0.146033257337288360, 0.146082721138789010, 0.146132184575082870, 0.146181647646046240, 0.146231110351555920, +0.146280572691487420, 0.146330034665717450, 0.146379496274122420, 0.146428957516579080, 0.146478418392962910, 0.146527878903150690, 0.146577339047018810, 0.146626798824443960, +0.146676258235301730, 0.146725717279468810, 0.146775175956822050, 0.146824634267236910, 0.146874092210590200, 0.146923549786758260, 0.146973006995617860, 0.147022463837044510, +0.147071920310915010, 0.147121376417105710, 0.147170832155493400, 0.147220287525953590, 0.147269742528363030, 0.147319197162598140, 0.147368651428535670, 0.147418105326051150, +0.147467558855021390, 0.147517012015322690, 0.147566464806831920, 0.147615917229424550, 0.147665369282977380, 0.147714820967366790, 0.147764272282469580, 0.147813723228161280, +0.147863173804318630, 0.147912624010818510, 0.147962073847536370, 0.148011523314349080, 0.148060972411132950, 0.148110421137764850, 0.148159869494120240, 0.148209317480075960, +0.148258765095508390, 0.148308212340294370, 0.148357659214309350, 0.148407105717430180, 0.148456551849533270, 0.148505997610495400, 0.148555443000192110, 0.148604888018500190, +0.148654332665296070, 0.148703776940456560, 0.148753220843857140, 0.148802664375374700, 0.148852107534886040, 0.148901550322266650, 0.148950992737393400, 0.149000434780142660, +0.149049876450391280, 0.149099317748014740, 0.149148758672889930, 0.149198199224893220, 0.149247639403901460, 0.149297079209790160, 0.149346518642436170, 0.149395957701715880, +0.149445396387506120, 0.149494834699682420, 0.149544272638121640, 0.149593710202700210, 0.149643147393294930, 0.149692584209781320, 0.149742020652036260, 0.149791456719936600, +0.149840892413357850, 0.149890327732176860, 0.149939762676270070, 0.149989197245514290, 0.150038631439785100, 0.150088065258959320, 0.150137498702913370, 0.150186931771524150, +0.150236364464667120, 0.150285796782219210, 0.150335228724056770, 0.150384660290056730, 0.150434091480094590, 0.150483522294047210, 0.150532952731791040, 0.150582382793202910, +0.150631812478158410, 0.150681241786534360, 0.150730670718207200, 0.150780099273053830, 0.150829527450949740, 0.150878955251771860, 0.150928382675397020, 0.150977809721700770, +0.151027236390560010, 0.151076662681851160, 0.151126088595451100, 0.151175514131235370, 0.151224939289080850, 0.151274364068863960, 0.151323788470461630, 0.151373212493749380, +0.151422636138604130, 0.151472059404902240, 0.151521482292520660, 0.151570904801334950, 0.151620326931221960, 0.151669748682058150, 0.151719170053720430, 0.151768591046084340, +0.151818011659026750, 0.151867431892424600, 0.151916851746153410, 0.151966271220090100, 0.152015690314111110, 0.152065109028093340, 0.152114527361912330, 0.152163945315445030, +0.152213362888567880, 0.152262780081157730, 0.152312196893090200, 0.152361613324242170, 0.152411029374490140, 0.152460445043710920, 0.152509860331780210, 0.152559275238574820, +0.152608689763971240, 0.152658103907846370, 0.152707517670075820, 0.152756931050536450, 0.152806344049105200, 0.152855756665657650, 0.152905168900070720, 0.152954580752220880, +0.153003992221984990, 0.153053403309238720, 0.153102814013858920, 0.153152224335722090, 0.153201634274705120, 0.153251043830683640, 0.153300453003534560, 0.153349861793134340, +0.153399270199359890, 0.153448678222086850, 0.153498085861192100, 0.153547493116552140, 0.153596899988043880, 0.153646306475542950, 0.153695712578926220, 0.153745118298070690, +0.153794523632851900, 0.153843928583146800, 0.153893333148831880, 0.153942737329784090, 0.153992141125878970, 0.154041544536993540, 0.154090947563004230, 0.154140350203788000, +0.154189752459220450, 0.154239154329178510, 0.154288555813538700, 0.154337956912177910, 0.154387357624971830, 0.154436757951797320, 0.154486157892530950, 0.154535557447049580, +0.154584956615228920, 0.154634355396945840, 0.154683753792076880, 0.154733151800498990, 0.154782549422087770, 0.154831946656720180, 0.154881343504273160, 0.154930739964622340, +0.154980136037644660, 0.155029531723216650, 0.155078927021215260, 0.155128321931516100, 0.155177716453996140, 0.155227110588531890, 0.155276504335000310, 0.155325897693277010, +0.155375290663238990, 0.155424683244762720, 0.155474075437725210, 0.155523467242002030, 0.155572858657470230, 0.155622249684006260, 0.155671640321487090, 0.155721030569788390, +0.155770420428787110, 0.155819809898360250, 0.155869198978383390, 0.155918587668733540, 0.155967975969287240, 0.156017363879921410, 0.156066751400511770, 0.156116138530935230, +0.156165525271068330, 0.156214911620788070, 0.156264297579970100, 0.156313683148491370, 0.156363068326228430, 0.156412453113058260, 0.156461837508856530, 0.156511221513500190, +0.156560605126865810, 0.156609988348830360, 0.156659371179269510, 0.156708753618060190, 0.156758135665079460, 0.156807517320202950, 0.156856898583307650, 0.156906279454270080, +0.156955659932967260, 0.157005040019274870, 0.157054419713069850, 0.157103799014228800, 0.157153177922628700, 0.157202556438145210, 0.157251934560655310, 0.157301312290035580, +0.157350689626163030, 0.157400066568913280, 0.157449443118163390, 0.157498819273789890, 0.157548195035669770, 0.157597570403678750, 0.157646945377693780, 0.157696319957591450, +0.157745694143248770, 0.157795067934541400, 0.157844441331346370, 0.157893814333540690, 0.157943186941000010, 0.157992559153601360, 0.158041930971221320, 0.158091302393736920, +0.158140673421023780, 0.158190044052958970, 0.158239414289419070, 0.158288784130281050, 0.158338153575420660, 0.158387522624714870, 0.158436891278040250, 0.158486259535273870, +0.158535627396291400, 0.158584994860969860, 0.158634361929185810, 0.158683728600816340, 0.158733094875737060, 0.158782460753825070, 0.158831826234957370, 0.158881191319009660, +0.158930556005858980, 0.158979920295381880, 0.159029284187455430, 0.159078647681955340, 0.159128010778758660, 0.159177373477741910, 0.159226735778782190, 0.159276097681755160, +0.159325459186537900, 0.159374820293007010, 0.159424181001039500, 0.159473541310511090, 0.159522901221298840, 0.159572260733279320, 0.159621619846329610, 0.159670978560325390, +0.159720336875143730, 0.159769694790661660, 0.159819052306754920, 0.159868409423300550, 0.159917766140175170, 0.159967122457255810, 0.160016478374418180, 0.160065833891539390, +0.160115189008495970, 0.160164543725165060, 0.160213898041422330, 0.160263251957144860, 0.160312605472209270, 0.160361958586492580, 0.160411311299870570, 0.160460663612220280, +0.160510015523418340, 0.160559367033341780, 0.160608718141866390, 0.160658068848869180, 0.160707419154227260, 0.160756769057816330, 0.160806118559513490, 0.160855467659195370, +0.160904816356738980, 0.160954164652020140, 0.161003512544915880, 0.161052860035302840, 0.161102207123058090, 0.161151553808057370, 0.161200900090177790, 0.161250245969295960, +0.161299591445288940, 0.161348936518032500, 0.161398281187403710, 0.161447625453279230, 0.161496969315536140, 0.161546312774050150, 0.161595655828698420, 0.161644998479357540, +0.161694340725904580, 0.161743682568215340, 0.161793024006166910, 0.161842365039636340, 0.161891705668499420, 0.161941045892633250, 0.161990385711914460, 0.162039725126220140, +0.162089064135426060, 0.162138402739409330, 0.162187740938046610, 0.162237078731214960, 0.162286416118790160, 0.162335753100649320, 0.162385089676669120, 0.162434425846726630, +0.162483761610697640, 0.162533096968459220, 0.162582431919888080, 0.162631766464861300, 0.162681100603254660, 0.162730434334945270, 0.162779767659810230, 0.162829100577725340, +0.162878433088567700, 0.162927765192213970, 0.162977096888541260, 0.163026428177425380, 0.163075759058743410, 0.163125089532372060, 0.163174419598188430, 0.163223749256068310, +0.163273078505888790, 0.163322407347526590, 0.163371735780858840, 0.163421063805761270, 0.163470391422111060, 0.163519718629784870, 0.163569045428659830, 0.163618371818611720, +0.163667697799517700, 0.163717023371254850, 0.163766348533699040, 0.163815673286727330, 0.163864997630216420, 0.163914321564043480, 0.163963645088084310, 0.164012968202216000, +0.164062290906315300, 0.164111613200259270, 0.164160935083923790, 0.164210256557185990, 0.164259577619922520, 0.164308898272010560, 0.164358218513325910, 0.164407538343745720, +0.164456857763146700, 0.164506176771405940, 0.164555495368399330, 0.164604813554003970, 0.164654131328096560, 0.164703448690554280, 0.164752765641252940, 0.164802082180069670, +0.164851398306881640, 0.164900714021564670, 0.164950029323995940, 0.164999344214052100, 0.165048658691610370, 0.165097972756546560, 0.165147286408737800, 0.165196599648060800, +0.165245912474392770, 0.165295224887609530, 0.165344536887588210, 0.165393848474205550, 0.165443159647338690, 0.165492470406863520, 0.165541780752657160, 0.165591090684596350, +0.165640400202558270, 0.165689709306418740, 0.165739017996054920, 0.165788326271344020, 0.165837634132161850, 0.165886941578385600, 0.165936248609891980, 0.165985555226558200, +0.166034861428260070, 0.166084167214874820, 0.166133472586279110, 0.166182777542350200, 0.166232082082963860, 0.166281386207997340, 0.166330689917327380, 0.166379993210831110, +0.166429296088384420, 0.166478598549864490, 0.166527900595148050, 0.166577202224112320, 0.166626503436633130, 0.166675804232587680, 0.166725104611853160, 0.166774404574305450, +0.166823704119821730, 0.166873003248278750, 0.166922301959553680, 0.166971600253522450, 0.167020898130062180, 0.167070195589049700, 0.167119492630362160, 0.167168789253875430, +0.167218085459466730, 0.167267381247012850, 0.167316676616390940, 0.167365971567476870, 0.167415266100147900, 0.167464560214280770, 0.167513853909752650, 0.167563147186439500, +0.167612440044218440, 0.167661732482966290, 0.167711024502560260, 0.167760316102876230, 0.167809607283791410, 0.167858898045183000, 0.167908188386926890, 0.167957478308900340, +0.168006767810980090, 0.168056056893043340, 0.168105345554966030, 0.168154633796625350, 0.168203921617898100, 0.168253209018661450, 0.168302495998791380, 0.168351782558165050, +0.168401068696659250, 0.168450354414151240, 0.168499639710516870, 0.168548924585633450, 0.168598209039377670, 0.168647493071626830, 0.168696776682256830, 0.168746059871144880, +0.168795342638168200, 0.168844624983202740, 0.168893906906125740, 0.168943188406813940, 0.168992469485144630, 0.169041750140993680, 0.169091030374238370, 0.169140310184755500, +0.169189589572422280, 0.169238868537114650, 0.169288147078709840, 0.169337425197084670, 0.169386702892116350, 0.169435980163680860, 0.169485257011655430, 0.169534533435916850, +0.169583809436342350, 0.169633085012807910, 0.169682360165190750, 0.169731634893368150, 0.169780909197216000, 0.169830183076611600, 0.169879456531431720, 0.169928729561553640, +0.169978002166853300, 0.170027274347207960, 0.170076546102494420, 0.170125817432589980, 0.170175088337370550, 0.170224358816713380, 0.170273628870495320, 0.170322898498593640, +0.170372167700884260, 0.170421436477244480, 0.170470704827551080, 0.170519972751681380, 0.170569240249511310, 0.170618507320918130, 0.170667773965779120, 0.170717040183970240, +0.170766305975368770, 0.170815571339851510, 0.170864836277295790, 0.170914100787577520, 0.170963364870574010, 0.171012628526162060, 0.171061891754219010, 0.171111154554620780, +0.171160416927244650, 0.171209678871967500, 0.171258940388666570, 0.171308201477217870, 0.171357462137498670, 0.171406722369385810, 0.171455982172756570, 0.171505241547486950, +0.171554500493454220, 0.171603759010535230, 0.171653017098607280, 0.171702274757546370, 0.171751531987229760, 0.171800788787534770, 0.171850045158337350, 0.171899301099514850, +0.171948556610944050, 0.171997811692502330, 0.172047066344065640, 0.172096320565511270, 0.172145574356716100, 0.172194827717557450, 0.172244080647911270, 0.172293333147654910, +0.172342585216665210, 0.172391836854819490, 0.172441088061993740, 0.172490338838065250, 0.172539589182910930, 0.172588839096408070, 0.172638088578432660, 0.172687337628862040, +0.172736586247573540, 0.172785834434443120, 0.172835082189348090, 0.172884329512165370, 0.172933576402772270, 0.172982822861044800, 0.173032068886860260, 0.173081314480095530, +0.173130559640627980, 0.173179804368333580, 0.173229048663089690, 0.173278292524773170, 0.173327535953261340, 0.173376778948430230, 0.173426021510157180, 0.173475263638319080, +0.173524505332793260, 0.173573746593455760, 0.173622987420183870, 0.173672227812854930, 0.173721467771345010, 0.173770707295531400, 0.173819946385291050, 0.173869185040501250, +0.173918423261038070, 0.173967661046778830, 0.174016898397600400, 0.174066135313380190, 0.174115371793994220, 0.174164607839319810, 0.174213843449233850, 0.174263078623613760, +0.174312313362335520, 0.174361547665276480, 0.174410781532313600, 0.174460014963324190, 0.174509247958184290, 0.174558480516771310, 0.174607712638962100, 0.174656944324634050, +0.174706175573663190, 0.174755406385926900, 0.174804636761302530, 0.174853866699666160, 0.174903096200895090, 0.174952325264866290, 0.175001553891457110, 0.175050782080543620, +0.175100009832003160, 0.175149237145712680, 0.175198464021549540, 0.175247690459389820, 0.175296916459110860, 0.175346142020589600, 0.175395367143703430, 0.175444591828328420, +0.175493816074341920, 0.175543039881620870, 0.175592263250042680, 0.175641486179483390, 0.175690708669820370, 0.175739930720931030, 0.175789152332691410, 0.175838373504978910, +0.175887594237670470, 0.175936814530643500, 0.175986034383774050, 0.176035253796939520, 0.176084472770016850, 0.176133691302883450, 0.176182909395415370, 0.176232127047490030, +0.176281344258984340, 0.176330561029775760, 0.176379777359740310, 0.176428993248755440, 0.176478208696698090, 0.176527423703445650, 0.176576638268874210, 0.176625852392861160, +0.176675066075283940, 0.176724279316018610, 0.176773492114942590, 0.176822704471932820, 0.176871916386866720, 0.176921127859620410, 0.176970338890071300, 0.177019549478096310, +0.177068759623572910, 0.177117969326377160, 0.177167178586386480, 0.177216387403477870, 0.177265595777528710, 0.177314803708415130, 0.177364011196014530, 0.177413218240203920, +0.177462424840860690, 0.177511630997860990, 0.177560836711082170, 0.177610041980401730, 0.177659246805695730, 0.177708451186841620, 0.177757655123716380, 0.177806858616197440, +0.177856061664160900, 0.177905264267484240, 0.177954466426044370, 0.178003668139718820, 0.178052869408383630, 0.178102070231916290, 0.178151270610193760, 0.178200470543093490, +0.178249670030491610, 0.178298869072265580, 0.178348067668292340, 0.178397265818449390, 0.178446463522612810, 0.178495660780660120, 0.178544857592468240, 0.178594053957914670, +0.178643249876875520, 0.178692445349228230, 0.178741640374850300, 0.178790834953617810, 0.178840029085408220, 0.178889222770098580, 0.178938416007566330, 0.178987608797687580, +0.179036801140339820, 0.179085993035400040, 0.179135184482745740, 0.179184375482253020, 0.179233566033799360, 0.179282756137261800, 0.179331945792517770, 0.179381134999443470, +0.179430323757916290, 0.179479512067813350, 0.179528699929012020, 0.179577887341388520, 0.179627074304820310, 0.179676260819184840, 0.179725446884358290, 0.179774632500218130, +0.179823817666641380, 0.179873002383505510, 0.179922186650686710, 0.179971370468062440, 0.180020553835509740, 0.180069736752906110, 0.180118919220127680, 0.180168101237051990, +0.180217282803556010, 0.180266463919517260, 0.180315644584811920, 0.180364824799317480, 0.180414004562910960, 0.180463183875469890, 0.180512362736870410, 0.180561541146990020, +0.180610719105706200, 0.180659896612895170, 0.180709073668434390, 0.180758250272200940, 0.180807426424072270, 0.180856602123924630, 0.180905777371635460, 0.180954952167081850, +0.181004126510141310, 0.181053300400690010, 0.181102473838605450, 0.181151646823764720, 0.181200819356045290, 0.181249991435323390, 0.181299163061476530, 0.181348334234381740, +0.181397504953916540, 0.181446675219957170, 0.181495845032381090, 0.181545014391065410, 0.181594183295887610, 0.181643351746723940, 0.181692519743451880, 0.181741687285948940, +0.181790854374091370, 0.181840021007756670, 0.181889187186821900, 0.181938352911164610, 0.181987518180661000, 0.182036682995188580, 0.182085847354624460, 0.182135011258846150, +0.182184174707729910, 0.182233337701153190, 0.182282500238993140, 0.182331662321127300, 0.182380823947431850, 0.182429985117784330, 0.182479145832061870, 0.182528306090141950, +0.182577465891900850, 0.182626625237216090, 0.182675784125965190, 0.182724942558024410, 0.182774100533271260, 0.182823258051582870, 0.182872415112836750, 0.182921571716909180, +0.182970727863677660, 0.183019883553019320, 0.183069038784811730, 0.183118193558931110, 0.183167347875254990, 0.183216501733660500, 0.183265655134025180, 0.183314808076225300, +0.183363960560138400, 0.183413112585641610, 0.183462264152612440, 0.183511415260927210, 0.183560565910463440, 0.183609716101098660, 0.183658865832709180, 0.183708015105172540, +0.183757163918365830, 0.183806312272166680, 0.183855460166451300, 0.183904607601097250, 0.183953754575981730, 0.184002901090982220, 0.184052047145975030, 0.184101192740837720, +0.184150337875447430, 0.184199482549681740, 0.184248626763416910, 0.184297770516530510, 0.184346913808899670, 0.184396056640401980, 0.184445199010913750, 0.184494340920312470, +0.184543482368475810, 0.184592623355280010, 0.184641763880602630, 0.184690903944320860, 0.184740043546312240, 0.184789182686453090, 0.184838321364621000, 0.184887459580693080, +0.184936597334546950, 0.184985734626058910, 0.185034871455106530, 0.185084007821566950, 0.185133143725317810, 0.185182279166235360, 0.185231414144197220, 0.185280548659080560, +0.185329682710762940, 0.185378816299120670, 0.185427949424031370, 0.185477082085372220, 0.185526214283020770, 0.185575346016853350, 0.185624477286747580, 0.185673608092581040, +0.185722738434230070, 0.185771868311572250, 0.185820997724484740, 0.185870126672845170, 0.185919255156529850, 0.185968383175416390, 0.186017510729382000, 0.186066637818304240, +0.186115764442059460, 0.186164890600525270, 0.186214016293578840, 0.186263141521097800, 0.186312266282958490, 0.186361390579038530, 0.186410514409215050, 0.186459637773365740, +0.186508760671366900, 0.186557883103096180, 0.186607005068431170, 0.186656126567248200, 0.186705247599424940, 0.186754368164838540, 0.186803488263366650, 0.186852607894885610, +0.186901727059273080, 0.186950845756406190, 0.186999963986162640, 0.187049081748418750, 0.187098199043052170, 0.187147315869940050, 0.187196432228960100, 0.187245548119988640, +0.187294663542903310, 0.187343778497581300, 0.187392892983900300, 0.187442007001736630, 0.187491120550967920, 0.187540233631471880, 0.187589346243124790, 0.187638458385804340, +0.187687570059387770, 0.187736681263752670, 0.187785791998775460, 0.187834902264333780, 0.187884012060304810, 0.187933121386566260, 0.187982230242994490, 0.188031338629467110, +0.188080446545861400, 0.188129553992055030, 0.188178660967924320, 0.188227767473346940, 0.188276873508200160, 0.188325979072361650, 0.188375084165707720, 0.188424188788116090, +0.188473292939464020, 0.188522396619629110, 0.188571499828487810, 0.188620602565917730, 0.188669704831796600, 0.188718806626000770, 0.188767907948407920, 0.188817008798895290, +0.188866109177340590, 0.188915209083620170, 0.188964308517611730, 0.189013407479192510, 0.189062505968240230, 0.189111603984631230, 0.189160701528243210, 0.189209798598953480, +0.189258895196639660, 0.189307991321178150, 0.189357086972446690, 0.189406182150322510, 0.189455276854683300, 0.189504371085405470, 0.189553464842366710, 0.189602558125444710, +0.189651650934515890, 0.189700743269457960, 0.189749835130148150, 0.189798926516464180, 0.189848017428282470, 0.189897107865480720, 0.189946197827936200, 0.189995287315526620, +0.190044376328128400, 0.190093464865619200, 0.190142552927876380, 0.190191640514777600, 0.190240727626199290, 0.190289814262019130, 0.190338900422114460, 0.190387986106362980, +0.190437071314641080, 0.190486156046826500, 0.190535240302796980, 0.190584324082428920, 0.190633407385600060, 0.190682490212187670, 0.190731572562069490, 0.190780654435121960, +0.190829735831222760, 0.190878816750249260, 0.190927897192079120, 0.190976977156588820, 0.191026056643656070, 0.191075135653158170, 0.191124214184972880, 0.191173292238976610, +0.191222369815047120, 0.191271446913061720, 0.191320523532898110, 0.191369599674432760, 0.191418675337543420, 0.191467750522107820, 0.191516825228002420, 0.191565899455104940, +0.191614973203292740, 0.191664046472443510, 0.191713119262433730, 0.191762191573141170, 0.191811263404443130, 0.191860334756217360, 0.191909405628340330, 0.191958476020689770, +0.192007545933143010, 0.192056615365577860, 0.192105684317870700, 0.192154752789899350, 0.192203820781541110, 0.192252888292673760, 0.192301955323173730, 0.192351021872918830, +0.192400087941786370, 0.192449153529654140, 0.192498218636398570, 0.192547283261897460, 0.192596347406028600, 0.192645411068668420, 0.192694474249694710, 0.192743536948984800, +0.192792599166416500, 0.192841660901866270, 0.192890722155211890, 0.192939782926330680, 0.192988843215100490, 0.193037903021397730, 0.193086962345100200, 0.193136021186085280, +0.193185079544230750, 0.193234137419413060, 0.193283194811510050, 0.193332251720399060, 0.193381308145957860, 0.193430364088062970, 0.193479419546592150, 0.193528474521423220, +0.193577529012432660, 0.193626583019498310, 0.193675636542497480, 0.193724689581307980, 0.193773742135806340, 0.193822794205870340, 0.193871845791377370, 0.193920896892205210, +0.193969947508230350, 0.194018997639330640, 0.194068047285383460, 0.194117096446266570, 0.194166145121856510, 0.194215193312031080, 0.194264241016667670, 0.194313288235644090, +0.194362334968836870, 0.194411381216123810, 0.194460426977382720, 0.194509472252490130, 0.194558517041323880, 0.194607561343761310, 0.194656605159680280, 0.194705648488957300, +0.194754691331470190, 0.194803733687096360, 0.194852775555713650, 0.194901816937198550, 0.194950857831428900, 0.194999898238282120, 0.195048938157636020, 0.195097977589367140, +0.195147016533353340, 0.195196054989471960, 0.195245092957600900, 0.195294130437616680, 0.195343167429397110, 0.195392203932819640, 0.195441239947762080, 0.195490275474101000, +0.195539310511714220, 0.195588345060479620, 0.195637379120273710, 0.195686412690974340, 0.195735445772458940, 0.195784478364605390, 0.195833510467290170, 0.195882542080391190, +0.195931573203785870, 0.195980603837352020, 0.196029633980966260, 0.196078663634506410, 0.196127692797849890, 0.196176721470874560, 0.196225749653457020, 0.196274777345475080, +0.196323804546806200, 0.196372831257328270, 0.196421857476917790, 0.196470883205452700, 0.196519908442810810, 0.196568933188868730, 0.196617957443504300, 0.196666981206595010, +0.196716004478018680, 0.196765027257651910, 0.196814049545372540, 0.196863071341058100, 0.196912092644586370, 0.196961113455834000, 0.197010133774678850, 0.197059153600998350, +0.197108172934670390, 0.197157191775571590, 0.197206210123579810, 0.197255227978572510, 0.197304245340427540, 0.197353262209021550, 0.197402278584232400, 0.197451294465937980, +0.197500309854014900, 0.197549324748341030, 0.197598339148793850, 0.197647353055251270, 0.197696366467589870, 0.197745379385687560, 0.197794391809421790, 0.197843403738670490, +0.197892415173310220, 0.197941426113218940, 0.197990436558274090, 0.198039446508353560, 0.198088455963333990, 0.198137464923093280, 0.198186473387508920, 0.198235481356458800, +0.198284488829819560, 0.198333495807469060, 0.198382502289285310, 0.198431508275144830, 0.198480513764925590, 0.198529518758505050, 0.198578523255761170, 0.198627527256570540, +0.198676530760811100, 0.198725533768360300, 0.198774536279096140, 0.198823538292895170, 0.198872539809635400, 0.198921540829194250, 0.198970541351449680, 0.199019541376278340, +0.199068540903558130, 0.199117539933166580, 0.199166538464981590, 0.199215536498879850, 0.199264534034739260, 0.199313531072437320, 0.199362527611852000, 0.199411523652859940, +0.199460519195339050, 0.199509514239167300, 0.199558508784221320, 0.199607502830379090, 0.199656496377518090, 0.199705489425516300, 0.199754481974250330, 0.199803474023598160, +0.199852465573437300, 0.199901456623645720, 0.199950447174100070, 0.199999437224678310, 0.200048426775257940, 0.200097415825716940, 0.200146404375931980, 0.200195392425780990, +0.200244379975141520, 0.200293367023891560, 0.200342353571907720, 0.200391339619067990, 0.200440325165250370, 0.200489310210331480, 0.200538294754189330, 0.200587278796701430, +0.200636262337745790, 0.200685245377199060, 0.200734227914939200, 0.200783209950843780, 0.200832191484790760, 0.200881172516656830, 0.200930153046319980, 0.200979133073657720, +0.201028112598548080, 0.201077091620867730, 0.201126070140494630, 0.201175048157306390, 0.201224025671180940, 0.201273002681994990, 0.201321979189626550, 0.201370955193953590, +0.201419930694852780, 0.201468905692202190, 0.201517880185879290, 0.201566854175762170, 0.201615827661727450, 0.201664800643653160, 0.201713773121416890, 0.201762745094896580, +0.201811716563969010, 0.201860687528512130, 0.201909657988403550, 0.201958627943521260, 0.202007597393741970, 0.202056566338943640, 0.202105534779003950, 0.202154502713800840, +0.202203470143211020, 0.202252437067112540, 0.202301403485382970, 0.202350369397900330, 0.202399334804541310, 0.202448299705183970, 0.202497264099706310, 0.202546227987985050, +0.202595191369898230, 0.202644154245323420, 0.202693116614138690, 0.202742078476220690, 0.202791039831447530, 0.202840000679696760, 0.202888961020846410, 0.202937920854773250, +0.202986880181355270, 0.203035839000470090, 0.203084797311995750, 0.203133755115808970, 0.203182712411787810, 0.203231669199809870, 0.203280625479753200, 0.203329581251494530, +0.203378536514911890, 0.203427491269883350, 0.203476445516285660, 0.203525399253996850, 0.203574352482894540, 0.203623305202856790, 0.203672257413760330, 0.203721209115483220, +0.203770160307903100, 0.203819110990898030, 0.203868061164344720, 0.203917010828121280, 0.203965959982105290, 0.204014908626174860, 0.204063856760206720, 0.204112804384078920, +0.204161751497669130, 0.204210698100855380, 0.204259644193514440, 0.204308589775524410, 0.204357534846763330, 0.204406479407107990, 0.204455423456436440, 0.204504366994626350, +0.204553310021555750, 0.204602252537101460, 0.204651194541141530, 0.204700136033553610, 0.204749077014215800, 0.204798017483004860, 0.204846957439798860, 0.204895896884475490, +0.204944835816912780, 0.204993774236987590, 0.205042712144577920, 0.205091649539561490, 0.205140586421816370, 0.205189522791219350, 0.205238458647648530, 0.205287393990982000, +0.205336328821096540, 0.205385263137870260, 0.205434196941180810, 0.205483130230906310, 0.205532063006923560, 0.205580995269110640, 0.205629927017345250, 0.205678858251505480, +0.205727788971468100, 0.205776719177111270, 0.205825648868312620, 0.205874578044950300, 0.205923506706901100, 0.205972434854043150, 0.206021362486254080, 0.206070289603412060, +0.206119216205393860, 0.206168142292077640, 0.206217067863341070, 0.206265992919062250, 0.206314917459118010, 0.206363841483386490, 0.206412764991745800, 0.206461687984072740, +0.206510610460245490, 0.206559532420141690, 0.206608453863639520, 0.206657374790615770, 0.206706295200948580, 0.206755215094515640, 0.206804134471195110, 0.206853053330863820, +0.206901971673399880, 0.206950889498681010, 0.206999806806585360, 0.207048723596989750, 0.207097639869772340, 0.207146555624810820, 0.207195470861983370, 0.207244385581166780, +0.207293299782239230, 0.207342213465078890, 0.207391126629562550, 0.207440039275568420, 0.207488951402974160, 0.207537863011658000, 0.207586774101496700, 0.207635684672368510, +0.207684594724151070, 0.207733504256722600, 0.207782413269959910, 0.207831321763741220, 0.207880229737944210, 0.207929137192447070, 0.207978044127126640, 0.208026950541861100, +0.208075856436528210, 0.208124761811006090, 0.208173666665171620, 0.208222570998903010, 0.208271474812078390, 0.208320378104574650, 0.208369280876269960, 0.208418183127042080, +0.208467084856769180, 0.208515986065328120, 0.208564886752597100, 0.208613786918453860, 0.208662686562776590, 0.208711585685442180, 0.208760484286328790, 0.208809382365314180, +0.208858279922276570, 0.208907176957092820, 0.208956073469641120, 0.209004969459799270, 0.209053864927445400, 0.209102759872456440, 0.209151654294710580, 0.209200548194085570, +0.209249441570459630, 0.209298334423709650, 0.209347226753713870, 0.209396118560350420, 0.209445009843496260, 0.209493900603029550, 0.209542790838828100, 0.209591680550770130, +0.209640569738732490, 0.209689458402593450, 0.209738346542230750, 0.209787234157522620, 0.209836121248345970, 0.209885007814579030, 0.209933893856099560, 0.209982779372785780, +0.210031664364514650, 0.210080548831164340, 0.210129432772612650, 0.210178316188737810, 0.210227199079416750, 0.210276081444527700, 0.210324963283948900, 0.210373844597557230, +0.210422725385230940, 0.210471605646847860, 0.210520485382286180, 0.210569364591422860, 0.210618243274136140, 0.210667121430303810, 0.210715999059804090, 0.210764876162513960, +0.210813752738311630, 0.210862628787074930, 0.210911504308682080, 0.210960379303010040, 0.211009253769937040, 0.211058127709340900, 0.211107001121099900, 0.211155874005090950, +0.211204746361192320, 0.211253618189282260, 0.211302489489237720, 0.211351360260936950, 0.211400230504257800, 0.211449100219078480, 0.211497969405275990, 0.211546838062728560, +0.211595706191314040, 0.211644573790910700, 0.211693440861395490, 0.211742307402646680, 0.211791173414542090, 0.211840038896960010, 0.211888903849777400, 0.211937768272872530, +0.211986632166123230, 0.212035495529407810, 0.212084358362603200, 0.212133220665587680, 0.212182082438239550, 0.212230943680435800, 0.212279804392054660, 0.212328664572974030, +0.212377524223072180, 0.212426383342226080, 0.212475241930314000, 0.212524099987213830, 0.212572957512803830, 0.212621814506961020, 0.212670670969563690, 0.212719526900489650, +0.212768382299617250, 0.212817237166823440, 0.212866091501986540, 0.212914945304984420, 0.212963798575695390, 0.213012651313996410, 0.213061503519765800, 0.213110355192881430, +0.213159206333221610, 0.213208056940663330, 0.213256907015084930, 0.213305756556364660, 0.213354605564379600, 0.213403454039008010, 0.213452301980127800, 0.213501149387617250, +0.213549996261353400, 0.213598842601214560, 0.213647688407078620, 0.213696533678823880, 0.213745378416327380, 0.213794222619467430, 0.213843066288121940, 0.213891909422169210, +0.213940752021486270, 0.213989594085951450, 0.214038435615442640, 0.214087276609838170, 0.214136117069015090, 0.214184956992851700, 0.214233796381226360, 0.214282635234016080, +0.214331473551099240, 0.214380311332353720, 0.214429148577657820, 0.214477985286888630, 0.214526821459924490, 0.214575657096643310, 0.214624492196923390, 0.214673326760641820, +0.214722160787676920, 0.214770994277906630, 0.214819827231209290, 0.214868659647461930, 0.214917491526542940, 0.214966322868330230, 0.215015153672702130, 0.215063983939535710, +0.215112813668709320, 0.215161642860101370, 0.215210471513588820, 0.215259299629050130, 0.215308127206363190, 0.215356954245406380, 0.215405780746056740, 0.215454606708192640, +0.215503432131692010, 0.215552257016433240, 0.215601081362293420, 0.215649905169150860, 0.215698728436883560, 0.215747551165369870, 0.215796373354486870, 0.215845195004112920, +0.215894016114126010, 0.215942836684404480, 0.215991656714825430, 0.216040476205267230, 0.216089295155607850, 0.216138113565725650, 0.216186931435497750, 0.216235748764802500, +0.216284565553518330, 0.216333381801522310, 0.216382197508692810, 0.216431012674907860, 0.216479827300045780, 0.216528641383983700, 0.216577454926600050, 0.216626267927772730, +0.216675080387380180, 0.216723892305299480, 0.216772703681409080, 0.216821514515586900, 0.216870324807711370, 0.216919134557659630, 0.216967943765310010, 0.217016752430540550, +0.217065560553229620, 0.217114368133254380, 0.217163175170493220, 0.217211981664824550, 0.217260787616125490, 0.217309593024274470, 0.217358397889149430, 0.217407202210628870, +0.217456005988589860, 0.217504809222910820, 0.217553611913469780, 0.217602414060145130, 0.217651215662814030, 0.217700016721354860, 0.217748817235645680, 0.217797617205564870, +0.217846416630989580, 0.217895215511798270, 0.217944013847868910, 0.217992811639079940, 0.218041608885308520, 0.218090405586433080, 0.218139201742332060, 0.218187997352882580, +0.218236792417963120, 0.218285586937451700, 0.218334380911226730, 0.218383174339165380, 0.218431967221146080, 0.218480759557046850, 0.218529551346746180, 0.218578342590121180, +0.218627133287050360, 0.218675923437411680, 0.218724713041083620, 0.218773502097943360, 0.218822290607869310, 0.218871078570739560, 0.218919865986432570, 0.218968652854825450, +0.219017439175796720, 0.219066224949224790, 0.219115010174986890, 0.219163794852961470, 0.219212578983026540, 0.219261362565060620, 0.219310145598940850, 0.219358928084545710, +0.219407710021753270, 0.219456491410441960, 0.219505272250489020, 0.219554052541772880, 0.219602832284171600, 0.219651611477563680, 0.219700390121826320, 0.219749168216837960, +0.219797945762476690, 0.219846722758620970, 0.219895499205148030, 0.219944275101936340, 0.219993050448863970, 0.220041825245809400, 0.220090599492649810, 0.220139373189263740, +0.220188146335529690, 0.220236918931324830, 0.220285690976527640, 0.220334462471016260, 0.220383233414669140, 0.220432003807363520, 0.220480773648977890, 0.220529542939390310, +0.220578311678479300, 0.220627079866122090, 0.220675847502197180, 0.220724614586582660, 0.220773381119157040, 0.220822147099797500, 0.220870912528382620, 0.220919677404790460, +0.220968441728899540, 0.221017205500587070, 0.221065968719731580, 0.221114731386211630, 0.221163493499904410, 0.221212255060688450, 0.221261016068441840, 0.221309776523043120, +0.221358536424369560, 0.221407295772299640, 0.221456054566711470, 0.221504812807483600, 0.221553570494493280, 0.221602327627619030, 0.221651084206738960, 0.221699840231731620, +0.221748595702474210, 0.221797350618845340, 0.221846104980723100, 0.221894858787986010, 0.221943612040511360, 0.221992364738177680, 0.222041116880863500, 0.222089868468446110, +0.222138619500804050, 0.222187369977815440, 0.222236119899358820, 0.222284869265311490, 0.222333618075551990, 0.222382366329958420, 0.222431114028409400, 0.222479861170782140, +0.222528607756955240, 0.222577353786806790, 0.222626099260215430, 0.222674844177058350, 0.222723588537214190, 0.222772332340561040, 0.222821075586977500, 0.222869818276340840, +0.222918560408529640, 0.222967301983422040, 0.223016043000896610, 0.223064783460830640, 0.223113523363102690, 0.223162262707591400, 0.223211001494174000, 0.223259739722729110, +0.223308477393134860, 0.223357214505269850, 0.223405951059011370, 0.223454687054238020, 0.223503422490827970, 0.223552157368659770, 0.223600891687610740, 0.223649625447559510, +0.223698358648384190, 0.223747091289963400, 0.223795823372174460, 0.223844554894895960, 0.223893285858006080, 0.223942016261383440, 0.223990746104905300, 0.224039475388450290, +0.224088204111897030, 0.224136932275122820, 0.224185659878006290, 0.224234386920425600, 0.224283113402259400, 0.224331839323384960, 0.224380564683680920, 0.224429289483025480, +0.224478013721297250, 0.224526737398373560, 0.224575460514133020, 0.224624183068453830, 0.224672905061214600, 0.224721626492292690, 0.224770347361566700, 0.224819067668914850, +0.224867787414215760, 0.224916506597346770, 0.224965225218186540, 0.225013943276613640, 0.225062660772505470, 0.225111377705740660, 0.225160094076197390, 0.225208809883754300, +0.225257525128288780, 0.225306239809679430, 0.225354953927804500, 0.225403667482542590, 0.225452380473771110, 0.225501092901368660, 0.225549804765213470, 0.225598516065184220, +0.225647226801158260, 0.225695936973014210, 0.225744646580630310, 0.225793355623885250, 0.225842064102656340, 0.225890772016822280, 0.225939479366261300, 0.225988186150852060, +0.226036892370471890, 0.226085598024999530, 0.226134303114313600, 0.226183007638291470, 0.226231711596811800, 0.226280414989752880, 0.226329117816993330, 0.226377820078410590, +0.226426521773883280, 0.226475222903289640, 0.226523923466508400, 0.226572623463416940, 0.226621322893893890, 0.226670021757817560, 0.226718720055066570, 0.226767417785518370, +0.226816114949051630, 0.226864811545544610, 0.226913507574875970, 0.226962203036923130, 0.227010897931564810, 0.227059592258679670, 0.227108286018145090, 0.227156979209839820, +0.227205671833642100, 0.227254363889430630, 0.227303055377082790, 0.227351746296477340, 0.227400436647492520, 0.227449126430007060, 0.227497815643898320, 0.227546504289045050, +0.227595192365325520, 0.227643879872618470, 0.227692566810801240, 0.227741253179752630, 0.227789938979350880, 0.227838624209474700, 0.227887308870001550, 0.227935992960810100, +0.227984676481779110, 0.228033359432786020, 0.228082041813709500, 0.228130723624427880, 0.228179404864819910, 0.228228085534762980, 0.228276765634135820, 0.228325445162816780, +0.228374124120684530, 0.228422802507616540, 0.228471480323491540, 0.228520157568187860, 0.228568834241584200, 0.228617510343558040, 0.228666185873988100, 0.228714860832752690, +0.228763535219730560, 0.228812209034799150, 0.228860882277837240, 0.228909554948723530, 0.228958227047335510, 0.229006898573551940, 0.229055569527251120, 0.229104239908311800, +0.229152909716611420, 0.229201578952028810, 0.229250247614442240, 0.229298915703730480, 0.229347583219771000, 0.229396250162442560, 0.229444916531623490, 0.229493582327192550, +0.229542247549027250, 0.229590912197006340, 0.229639576271008120, 0.229688239770911410, 0.229736902696593640, 0.229785565047933630, 0.229834226824809720, 0.229882888027100660, +0.229931548654683960, 0.229980208707438380, 0.230028868185242710, 0.230077527087974440, 0.230126185415512360, 0.230174843167734790, 0.230223500344520580, 0.230272156945747150, +0.230320812971293360, 0.230369468421037530, 0.230418123294858450, 0.230466777592633650, 0.230515431314241880, 0.230564084459561560, 0.230612737028471430, 0.230661389020849040, +0.230710040436573170, 0.230758691275522200, 0.230807341537574960, 0.230855991222608910, 0.230904640330502900, 0.230953288861135700, 0.231001936814384860, 0.231050584190129170, +0.231099230988247030, 0.231147877208617240, 0.231196522851117300, 0.231245167915626080, 0.231293812402021960, 0.231342456310183710, 0.231391099639988880, 0.231439742391316320, +0.231488384564044410, 0.231537026158051940, 0.231585667173216490, 0.231634307609416890, 0.231682947466531510, 0.231731586744439190, 0.231780225443017460, 0.231828863562145190, +0.231877501101701190, 0.231926138061562980, 0.231974774441609440, 0.232023410241718960, 0.232072045461770400, 0.232120680101641270, 0.232169314161210480, 0.232217947640356360, +0.232266580538957820, 0.232315212856892410, 0.232363844594038970, 0.232412475750275900, 0.232461106325482090, 0.232509736319535060, 0.232558365732313700, 0.232606994563696430, +0.232655622813562110, 0.232704250481788280, 0.232752877568253860, 0.232801504072837200, 0.232850129995417240, 0.232898755335871540, 0.232947380094078920, 0.232996004269918290, +0.233044627863267210, 0.233093250874004590, 0.233141873302008810, 0.233190495147158810, 0.233239116409332120, 0.233287737088407640, 0.233336357184263820, 0.233384976696779540, +0.233433595625832380, 0.233482213971301230, 0.233530831733064550, 0.233579448911001240, 0.233628065504988850, 0.233676681514906310, 0.233725296940632040, 0.233773911782044990, +0.233822526039022730, 0.233871139711444130, 0.233919752799188140, 0.233968365302132330, 0.234016977220155600, 0.234065588553136420, 0.234114199300953730, 0.234162809463485080, +0.234211419040609410, 0.234260028032205190, 0.234308636438151360, 0.234357244258325490, 0.234405851492606510, 0.234454458140872870, 0.234503064203003570, 0.234551669678876140, +0.234600274568369540, 0.234648878871362270, 0.234697482587733240, 0.234746085717360050, 0.234794688260121650, 0.234843290215896980, 0.234891891584563640, 0.234940492366000560, +0.234989092560086270, 0.235037692166699670, 0.235086291185718390, 0.235134889617021420, 0.235183487460487200, 0.235232084715994690, 0.235280681383421560, 0.235329277462646700, +0.235377872953548670, 0.235426467856006380, 0.235475062169897470, 0.235523655895100940, 0.235572249031495230, 0.235620841578959350, 0.235669433537370940, 0.235718024906608950, +0.235766615686552330, 0.235815205877078720, 0.235863795478067100, 0.235912384489396000, 0.235960972910944370, 0.236009560742589890, 0.236058147984211490, 0.236106734635687710, +0.236155320696897540, 0.236203906167718640, 0.236252491048029980, 0.236301075337710080, 0.236349659036637900, 0.236398242144691180, 0.236446824661748850, 0.236495406587689440, +0.236543987922391950, 0.236592568665734080, 0.236641148817594770, 0.236689728377852600, 0.236738307346386510, 0.236786885723074240, 0.236835463507794770, 0.236884040700427070, +0.236932617300848800, 0.236981193308939020, 0.237029768724576260, 0.237078343547639490, 0.237126917778006460, 0.237175491415556110, 0.237224064460167030, 0.237272636911718240, +0.237321208770087390, 0.237369780035153550, 0.237418350706795260, 0.237466920784891510, 0.237515490269320030, 0.237564059159959850, 0.237612627456689480, 0.237661195159387990, +0.237709762267933080, 0.237758328782203790, 0.237806894702079080, 0.237855460027436710, 0.237904024758155700, 0.237952588894114610, 0.238001152435192490, 0.238049715381267040, +0.238098277732217340, 0.238146839487921920, 0.238195400648259840, 0.238243961213108810, 0.238292521182347890, 0.238341080555855680, 0.238389639333511180, 0.238438197515192160, +0.238486755100777630, 0.238535312090146220, 0.238583868483176980, 0.238632424279747620, 0.238680979479737210, 0.238729534083024770, 0.238778088089488080, 0.238826641499006150, +0.238875194311457650, 0.238923746526721550, 0.238972298144675690, 0.239020849165199060, 0.239069399588170330, 0.239117949413468510, 0.239166498640971390, 0.239215047270558030, +0.239263595302107060, 0.239312142735497530, 0.239360689570607190, 0.239409235807315160, 0.239457781445500010, 0.239506326485040860, 0.239554870925815460, 0.239603414767702860, +0.239651958010581730, 0.239700500654331160, 0.239749042698828880, 0.239797584143954020, 0.239846124989585600, 0.239894665235601460, 0.239943204881880650, 0.239991743928301830, +0.240040282374744090, 0.240088820221085190, 0.240137357467204240, 0.240185894112979910, 0.240234430158291300, 0.240282965603016150, 0.240331500447033580, 0.240380034690222290, +0.240428568332461320, 0.240477101373628520, 0.240525633813602950, 0.240574165652263310, 0.240622696889488650, 0.240671227525156850, 0.240719757559146990, 0.240768286991338150, +0.240816815821608160, 0.240865344049836120, 0.240913871675900730, 0.240962398699681110, 0.241010925121055040, 0.241059450939901660, 0.241107976156099660, 0.241156500769528160, +0.241205024780064950, 0.241253548187589210, 0.241302070991979560, 0.241350593193115190, 0.241399114790873920, 0.241447635785134840, 0.241496156175776660, 0.241544675962678560, +0.241593195145718310, 0.241641713724775080, 0.241690231699728000, 0.241738749070454890, 0.241787265836834940, 0.241835781998746810, 0.241884297556069630, 0.241932812508681320, +0.241981326856460950, 0.242029840599287280, 0.242078353737039430, 0.242126866269595260, 0.242175378196833930, 0.242223889518634160, 0.242272400234875090, 0.242320910345434600, +0.242369419850191840, 0.242417928749025490, 0.242466437041814780, 0.242514944728437540, 0.242563451808772950, 0.242611958282700160, 0.242660464150097010, 0.242708969410842750, +0.242757474064816040, 0.242805978111896080, 0.242854481551960740, 0.242902984384889190, 0.242951486610560180, 0.242999988228852880, 0.243048489239645200, 0.243096989642816290, +0.243145489438244910, 0.243193988625810240, 0.243242487205390160, 0.243290985176863840, 0.243339482540110090, 0.243387979295008050, 0.243436475441435620, 0.243484970979272020, +0.243533465908396000, 0.243581960228686720, 0.243630453940022110, 0.243678947042281380, 0.243727439535343730, 0.243775931419087020, 0.243824422693390500, 0.243872913358132910, +0.243921403413193490, 0.243969892858450110, 0.244018381693781980, 0.244066869919067920, 0.244115357534187120, 0.244163844539017490, 0.244212330933438250, 0.244260816717328190, +0.244309301890566520, 0.244357786453031130, 0.244406270404601310, 0.244454753745155800, 0.244503236474573840, 0.244551718592733360, 0.244600200099513580, 0.244648680994793750, +0.244697161278451760, 0.244745640950366880, 0.244794120010417890, 0.244842598458484020, 0.244891076294443260, 0.244939553518174790, 0.244988030129557420, 0.245036506128470420, +0.245084981514791720, 0.245133456288400580, 0.245181930449175800, 0.245230403996996610, 0.245278876931740970, 0.245327349253288170, 0.245375820961516970, 0.245424292056306640, +0.245472762537535170, 0.245521232405081810, 0.245569701658825770, 0.245618170298645050, 0.245666638324418900, 0.245715105736026170, 0.245763572533346100, 0.245812038716256680, +0.245860504284637150, 0.245908969238366360, 0.245957433577323580, 0.246005897301386780, 0.246054360410435240, 0.246102822904347790, 0.246151284783003740, 0.246199746046281030, +0.246248206694058950, 0.246296666726216360, 0.246345126142632540, 0.246393584943185470, 0.246442043127754420, 0.246490500696218280, 0.246538957648456320, 0.246587413984346530, +0.246635869703768220, 0.246684324806600630, 0.246732779292721830, 0.246781233162011090, 0.246829686414347240, 0.246878139049609620, 0.246926591067676200, 0.246975042468426330, +0.247023493251738830, 0.247071943417493060, 0.247120392965566980, 0.247168841895839900, 0.247217290208190750, 0.247265737902498780, 0.247314184978642050, 0.247362631436499860, +0.247411077275951070, 0.247459522496875060, 0.247507967099149770, 0.247556411082654580, 0.247604854447268790, 0.247653297192870440, 0.247701739319338840, 0.247750180826552900, +0.247798621714391900, 0.247847061982733960, 0.247895501631458350, 0.247943940660444010, 0.247992379069570220, 0.248040816858715040, 0.248089254027757860, 0.248137690576577500, +0.248186126505053370, 0.248234561813063500, 0.248282996500487210, 0.248331430567203440, 0.248379864013091510, 0.248428296838029500, 0.248476729041896740, 0.248525160624572610, +0.248573591585935120, 0.248622021925863660, 0.248670451644237150, 0.248718880740934960, 0.248767309215835090, 0.248815737068816990, 0.248864164299759520, 0.248912590908542090, +0.248961016895042740, 0.249009442259140850, 0.249057867000715360, 0.249106291119645630, 0.249154714615809740, 0.249203137489087070, 0.249251559739356560, 0.249299981366497560, +0.249348402370388190, 0.249396822750907830, 0.249445242507935820, 0.249493661641350280, 0.249542080151030580, 0.249590498036855680, 0.249638915298704990, 0.249687331936456560, +0.249735747949989790, 0.249784163339183680, 0.249832578103917570, 0.249880992244069590, 0.249929405759519140, 0.249977818650145150, 0.250026230915827040, 0.250074642556442960, +0.250123053571872260, 0.250171463961993910, 0.250219873726687360, 0.250268282865830690, 0.250316691379303290, 0.250365099266984190, 0.250413506528752720, 0.250461913164487130, +0.250510319174066690, 0.250558724557370880, 0.250607129314277870, 0.250655533444667070, 0.250703936948417360, 0.250752339825408290, 0.250800742075517890, 0.250849143698625650, +0.250897544694610560, 0.250945945063352050, 0.250994344804728260, 0.251042743918618580, 0.251091142404902050, 0.251139540263458080, 0.251187937494164850, 0.251236334096901770, +0.251284730071547830, 0.251333125417982530, 0.251381520136084000, 0.251429914225731630, 0.251478307686804900, 0.251526700519182020, 0.251575092722742370, 0.251623484297364970, +0.251671875242929280, 0.251720265559313480, 0.251768655246397020, 0.251817044304058930, 0.251865432732178710, 0.251913820530634380, 0.251962207699305550, 0.252010594238071210, +0.252058980146810770, 0.252107365425402520, 0.252155750073725820, 0.252204134091659700, 0.252252517479083730, 0.252300900235876040, 0.252349282361916060, 0.252397663857083340, +0.252446044721256040, 0.252494424954313570, 0.252542804556135090, 0.252591183526599980, 0.252639561865586500, 0.252687939572974140, 0.252736316648641930, 0.252784693092469370, +0.252833068904334600, 0.252881444084117170, 0.252929818631696170, 0.252978192546951030, 0.253026565829759960, 0.253074938480002510, 0.253123310497557650, 0.253171681882304990, +0.253220052634122730, 0.253268422752890300, 0.253316792238486800, 0.253365161090791770, 0.253413529309683420, 0.253461896895041230, 0.253510263846744690, 0.253558630164672120, +0.253606995848702940, 0.253655360898716260, 0.253703725314591680, 0.253752089096207280, 0.253800452243442720, 0.253848814756176990, 0.253897176634289620, 0.253945537877658940, +0.253993898486164380, 0.254042258459685090, 0.254090617798100600, 0.254138976501289080, 0.254187334569130170, 0.254235692001502920, 0.254284048798286870, 0.254332404959360210, +0.254380760484602620, 0.254429115373893510, 0.254477469627111210, 0.254525823244135200, 0.254574176224844630, 0.254622528569119100, 0.254670880276836760, 0.254719231347877270, +0.254767581782119670, 0.254815931579443600, 0.254864280739727220, 0.254912629262850130, 0.254960977148691480, 0.255009324397130810, 0.255057671008046440, 0.255106016981317850, +0.255154362316824260, 0.255202707014445140, 0.255251051074058820, 0.255299394495544950, 0.255347737278782960, 0.255396079423651220, 0.255444420930029280, 0.255492761797796230, +0.255541102026831780, 0.255589441617014130, 0.255637780568222840, 0.255686118880337150, 0.255734456553236570, 0.255782793586799400, 0.255831129980905290, 0.255879465735433300, +0.255927800850263120, 0.255976135325272970, 0.256024469160342550, 0.256072802355350900, 0.256121134910177680, 0.256169466824701210, 0.256217798098801020, 0.256266128732356820, +0.256314458725246890, 0.256362788077350750, 0.256411116788547670, 0.256459444858717240, 0.256507772287737750, 0.256556099075488820, 0.256604425221849670, 0.256652750726699850, +0.256701075589917780, 0.256749399811382950, 0.256797723390974670, 0.256846046328572500, 0.256894368624054790, 0.256942690277301160, 0.256991011288190800, 0.257039331656603360, +0.257087651382417130, 0.257135970465511790, 0.257184288905766500, 0.257232606703060920, 0.257280923857273410, 0.257329240368283580, 0.257377556235971080, 0.257425871460214280, +0.257474186040892780, 0.257522499977885840, 0.257570813271073060, 0.257619125920332810, 0.257667437925544750, 0.257715749286588140, 0.257764060003342510, 0.257812370075686360, +0.257860679503499280, 0.257908988286660480, 0.257957296425049610, 0.258005603918545100, 0.258053910767026610, 0.258102216970373330, 0.258150522528464930, 0.258198827441179780, +0.258247131708397530, 0.258295435329997940, 0.258343738305859330, 0.258392040635861350, 0.258440342319883280, 0.258488643357804750, 0.258536943749504200, 0.258585243494861340, +0.258633542593755320, 0.258681841046065900, 0.258730138851671400, 0.258778436010451580, 0.258826732522285720, 0.258875028387053400, 0.258923323604633100, 0.258971618174904490, +0.259019912097746830, 0.259068205373039820, 0.259116498000661890, 0.259164789980492690, 0.259213081312411940, 0.259261371996298060, 0.259309662032030760, 0.259357951419489310, +0.259406240158553400, 0.259454528249101420, 0.259502815691013190, 0.259551102484167910, 0.259599388628445280, 0.259647674123723750, 0.259695958969883010, 0.259744243166802390, +0.259792526714361650, 0.259840809612439110, 0.259889091860914520, 0.259937373459667280, 0.259985654408576960, 0.260033934707522120, 0.260082214356382400, 0.260130493355037180, +0.260178771703366170, 0.260227049401247750, 0.260275326448561770, 0.260323602845187850, 0.260371878591004520, 0.260420153685891500, 0.260468428129728090, 0.260516701922394010, +0.260564975063767800, 0.260613247553729110, 0.260661519392157310, 0.260709790578932120, 0.260758061113932070, 0.260806330997036820, 0.260854600228125790, 0.260902868807078640, +0.260951136733773960, 0.260999404008091350, 0.261047670629910300, 0.261095936599110460, 0.261144201915570360, 0.261192466579169780, 0.261240730589788420, 0.261288993947304870, +0.261337256651598790, 0.261385518702549560, 0.261433780100036980, 0.261482040843939500, 0.261530300934136930, 0.261578560370508640, 0.261626819152934340, 0.261675077281292580, +0.261723334755463110, 0.261771591575325310, 0.261819847740758950, 0.261868103251642560, 0.261916358107855910, 0.261964612309278370, 0.262012865855789700, 0.262061118747268450, +0.262109370983594440, 0.262157622564647420, 0.262205873490305890, 0.262254123760449650, 0.262302373374958150, 0.262350622333711150, 0.262398870636587120, 0.262447118283465950, +0.262495365274226950, 0.262543611608750000, 0.262591857286913590, 0.262640102308597520, 0.262688346673681180, 0.262736590382044440, 0.262784833433565790, 0.262833075828125040, +0.262881317565601620, 0.262929558645875310, 0.262977799068824680, 0.263026038834329570, 0.263074277942269790, 0.263122516392523880, 0.263170754184971660, 0.263218991319492560, +0.263267227795966450, 0.263315463614271830, 0.263363698774288500, 0.263411933275895960, 0.263460167118974020, 0.263508400303401220, 0.263556632829057450, 0.263604864695822060, +0.263653095903574940, 0.263701326452194680, 0.263749556341561050, 0.263797785571553590, 0.263846014142052050, 0.263894242052935100, 0.263942469304082490, 0.263990695895373770, +0.264038921826688700, 0.264087147097905870, 0.264135371708905220, 0.264183595659566510, 0.264231818949768440, 0.264280041579390780, 0.264328263548313070, 0.264376484856415070, +0.264424705503575500, 0.264472925489674100, 0.264521144814590440, 0.264569363478204310, 0.264617581480394330, 0.264665798821040410, 0.264714015500021990, 0.264762231517219000, +0.264810446872509990, 0.264858661565774810, 0.264906875596893020, 0.264955088965744490, 0.265003301672207760, 0.265051513716162810, 0.265099725097489470, 0.265147935816066440, +0.265196145871773540, 0.265244355264490250, 0.265292563994096510, 0.265340772060470960, 0.265388979463493490, 0.265437186203043520, 0.265485392279001030, 0.265533597691244680, +0.265581802439654290, 0.265630006524109400, 0.265678209944489930, 0.265726412700674490, 0.265774614792543050, 0.265822816219975060, 0.265871016982850430, 0.265919217081047880, +0.265967416514447220, 0.266015615282928500, 0.266063813386370310, 0.266112010824652580, 0.266160207597654800, 0.266208403705256950, 0.266256599147337680, 0.266304793923776870, +0.266352988034454120, 0.266401181479249290, 0.266449374258041110, 0.266497566370709480, 0.266545757817133910, 0.266593948597194430, 0.266642138710769640, 0.266690328157739460, +0.266738516937983510, 0.266786705051381630, 0.266834892497812610, 0.266883079277156320, 0.266931265389292400, 0.266979450834100680, 0.267027635611459920, 0.267075819721250110, +0.267124003163351110, 0.267172185937641750, 0.267220368044001840, 0.267268549482311100, 0.267316730252449340, 0.267364910354295380, 0.267413089787729100, 0.267461268552630140, +0.267509446648878440, 0.267557624076352640, 0.267605800834932790, 0.267653976924498490, 0.267702152344929610, 0.267750327096104970, 0.267798501177904490, 0.267846674590207780, +0.267894847332894810, 0.267943019405844250, 0.267991190808936190, 0.268039361542050550, 0.268087531605066100, 0.268135700997862820, 0.268183869720320270, 0.268232037772318470, +0.268280205153736180, 0.268328371864453350, 0.268376537904349620, 0.268424703273304920, 0.268472867971198070, 0.268521031997909050, 0.268569195353317470, 0.268617358037303300, +0.268665520049745310, 0.268713681390523540, 0.268761842059517530, 0.268810002056607380, 0.268858161381671790, 0.268906320034590750, 0.268954478015244410, 0.269002635323511430, +0.269050791959271840, 0.269098947922405240, 0.269147103212791730, 0.269195257830310060, 0.269243411774840240, 0.269291565046261840, 0.269339717644455020, 0.269387869569298440, +0.269436020820672200, 0.269484171398455870, 0.269532321302529580, 0.269580470532772070, 0.269628619089063330, 0.269676766971283120, 0.269724914179311330, 0.269773060713026870, +0.269821206572309790, 0.269869351757040080, 0.269917496267096600, 0.269965640102359350, 0.270013783262707970, 0.270061925748022620, 0.270110067558182010, 0.270158208693066230, +0.270206349152554930, 0.270254488936528150, 0.270302628044864770, 0.270350766477444770, 0.270398904234147920, 0.270447041314854200, 0.270495177719442430, 0.270543313447792750, +0.270591448499784780, 0.270639582875298600, 0.270687716574213030, 0.270735849596408170, 0.270783981941763730, 0.270832113610159690, 0.270880244601474970, 0.270928374915589690, +0.270976504552383870, 0.271024633511736330, 0.271072761793527240, 0.271120889397636230, 0.271169016323943410, 0.271217142572327650, 0.271265268142668990, 0.271313393034847190, +0.271361517248742360, 0.271409640784233300, 0.271457763641200110, 0.271505885819522510, 0.271554007319080640, 0.271602128139753320, 0.271650248281420700, 0.271698367743962440, +0.271746486527258690, 0.271794604631188260, 0.271842722055631370, 0.271890838800468100, 0.271938954865577290, 0.271987070250839070, 0.272035184956133210, 0.272083298981339820, +0.272131412326337750, 0.272179524991007120, 0.272227636975227730, 0.272275748278879630, 0.272323858901841740, 0.272371968843994230, 0.272420078105216730, 0.272468186685389520, +0.272516294584391420, 0.272564401802102560, 0.272612508338402730, 0.272660614193172000, 0.272708719366289320, 0.272756823857634890, 0.272804927667088800, 0.272853030794529940, +0.272901133239838500, 0.272949235002894250, 0.272997336083577350, 0.273045436481766710, 0.273093536197342450, 0.273141635230184310, 0.273189733580172570, 0.273237831247186040, +0.273285928231104920, 0.273334024531808990, 0.273382120149178400, 0.273430215083092120, 0.273478309333430310, 0.273526402900072680, 0.273574495782899500, 0.273622587981789680, +0.273670679496623380, 0.273718770327280370, 0.273766860473640850, 0.273814949935583750, 0.273863038712989280, 0.273911126805737650, 0.273959214213707780, 0.274007300936779830, +0.274055386974833670, 0.274103472327749450, 0.274151556995406160, 0.274199640977683960, 0.274247724274462650, 0.274295806885622440, 0.274343888811042270, 0.274391970050602450, +0.274440050604182640, 0.274488130471663150, 0.274536209652922910, 0.274584288147842190, 0.274632365956300690, 0.274680443078178740, 0.274728519513355200, 0.274776595261710390, +0.274824670323124580, 0.274872744697476580, 0.274920818384646770, 0.274968891384514860, 0.275016963696961210, 0.275065035321864710, 0.275113106259105620, 0.275161176508563750, +0.275209246070119370, 0.275257314943651410, 0.275305383129040240, 0.275353450626165560, 0.275401517434907710, 0.275449583555145590, 0.275497648986759550, 0.275545713729629380, +0.275593777783635360, 0.275641841148656470, 0.275689903824572980, 0.275737965811265140, 0.275786027108612000, 0.275834087716493760, 0.275882147634790300, 0.275930206863381880, +0.275978265402147540, 0.276026323250967540, 0.276074380409721710, 0.276122436878290360, 0.276170492656552520, 0.276218547744388420, 0.276266602141677970, 0.276314655848301450, +0.276362708864137830, 0.276410761189067430, 0.276458812822970190, 0.276506863765726310, 0.276554914017214830, 0.276602963577316060, 0.276651012445910340, 0.276699060622876640, +0.276747108108095270, 0.276795154901446180, 0.276843201002809570, 0.276891246412064580, 0.276939291129091440, 0.276987335153770110, 0.277035378485980870, 0.277083421125602750, +0.277131463072516020, 0.277179504326600710, 0.277227544887737040, 0.277275584755804050, 0.277323623930682110, 0.277371662412251140, 0.277419700200391420, 0.277467737294982030, +0.277515773695903300, 0.277563809403035100, 0.277611844416257860, 0.277659878735450560, 0.277707912360493530, 0.277755945291267180, 0.277803977527650510, 0.277852009069523950, +0.277900039916767320, 0.277948070069261030, 0.277996099526884140, 0.278044128289517020, 0.278092156357039600, 0.278140183729332140, 0.278188210406273840, 0.278236236387745030, +0.278284261673625580, 0.278332286263795970, 0.278380310158135140, 0.278428333356523620, 0.278476355858841170, 0.278524377664968350, 0.278572398774784070, 0.278620419188168880, +0.278668438905003040, 0.278716457925165640, 0.278764476248537120, 0.278812493874997400, 0.278860510804426860, 0.278908527036704660, 0.278956542571711100, 0.279004557409326230, +0.279052571549430360, 0.279100584991902660, 0.279148597736623480, 0.279196609783472770, 0.279244621132331010, 0.279292631783077280, 0.279340641735591920, 0.279388650989755020, +0.279436659545446890, 0.279484667402546630, 0.279532674560934780, 0.279580681020491660, 0.279628686781096370, 0.279676691842629390, 0.279724696204970650, 0.279772699868000630, +0.279820702831598430, 0.279868705095644490, 0.279916706660018780, 0.279964707524601670, 0.280012707689272440, 0.280060707153911400, 0.280108705918398590, 0.280156703982614500, +0.280204701346438160, 0.280252698009750060, 0.280300693972430240, 0.280348689234359130, 0.280396683795415880, 0.280444677655480870, 0.280492670814434190, 0.280540663272156270, +0.280588655028526260, 0.280636646083424590, 0.280684636436731750, 0.280732626088326890, 0.280780615038090490, 0.280828603285902530, 0.280876590831643460, 0.280924577675192520, +0.280972563816430150, 0.281020549255236340, 0.281068533991491560, 0.281116518025075090, 0.281164501355867290, 0.281212483983748210, 0.281260465908598380, 0.281308447130296960, +0.281356427648724430, 0.281404407463760780, 0.281452386575286590, 0.281500364983180980, 0.281548342687324480, 0.281596319687597520, 0.281644295983879360, 0.281692271576050480, +0.281740246463990870, 0.281788220647581080, 0.281836194126700360, 0.281884166901229080, 0.281932138971047460, 0.281980110336035870, 0.282028080996073570, 0.282076050951041100, +0.282124020200818500, 0.282171988745286260, 0.282219956584323640, 0.282267923717811120, 0.282315890145628800, 0.282363855867657170, 0.282411820883775420, 0.282459785193864220, +0.282507748797803940, 0.282555711695473830, 0.282603673886754450, 0.282651635371525930, 0.282699596149668720, 0.282747556221062070, 0.282795515585586580, 0.282843474243122280, +0.282891432193549670, 0.282939389436748120, 0.282987345972598060, 0.283035301800979690, 0.283083256921773440, 0.283131211334858630, 0.283179165040115810, 0.283227118037425060, +0.283275070326666930, 0.283323021907720740, 0.283370972780466970, 0.283418922944785770, 0.283466872400557680, 0.283514821147661970, 0.283562769185979220, 0.283610716515389990, +0.283658663135773540, 0.283706609047010390, 0.283754554248980770, 0.283802498741565160, 0.283850442524642920, 0.283898385598094550, 0.283946327961800190, 0.283994269615640450, +0.284042210559494630, 0.284090150793243290, 0.284138090316766510, 0.284186029129945010, 0.284233967232657980, 0.284281904624786030, 0.284329841306209310, 0.284377777276808410, +0.284425712536462650, 0.284473647085052570, 0.284521580922458880, 0.284569514048560730, 0.284617446463238830, 0.284665378166373330, 0.284713309157844820, 0.284761239437532570, +0.284809169005317280, 0.284857097861078990, 0.284905026004698410, 0.284952953436054870, 0.285000880155028950, 0.285048806161500800, 0.285096731455351030, 0.285144656036459050, +0.285192579904705420, 0.285240503059970340, 0.285288425502134460, 0.285336347231077040, 0.285384268246678790, 0.285432188548820240, 0.285480108137380840, 0.285528027012241170, +0.285575945173281440, 0.285623862620382250, 0.285671779353422970, 0.285719695372284250, 0.285767610676846310, 0.285815525266989780, 0.285863439142593990, 0.285911352303539590, +0.285959264749706840, 0.286007176480976290, 0.286055087497227470, 0.286102997798340860, 0.286150907384196740, 0.286198816254675860, 0.286246724409657430, 0.286294631849022260, +0.286342538572650910, 0.286390444580422730, 0.286438349872218500, 0.286486254447918360, 0.286534158307403090, 0.286582061450551930, 0.286629963877245600, 0.286677865587364410, +0.286725766580788970, 0.286773666857398690, 0.286821566417074180, 0.286869465259695810, 0.286917363385144230, 0.286965260793298760, 0.287013157484040160, 0.287061053457248690, +0.287108948712805010, 0.287156843250588490, 0.287204737070479890, 0.287252630172359470, 0.287300522556107830, 0.287348414221604510, 0.287396305168730160, 0.287444195397365430, +0.287492084907389810, 0.287539973698684000, 0.287587861771128270, 0.287635749124603270, 0.287683635758988480, 0.287731521674164600, 0.287779406870011910, 0.287827291346411160, +0.287875175103241730, 0.287923058140384380, 0.287970940457719370, 0.288018822055127410, 0.288066702932487980, 0.288114583089681800, 0.288162462526589170, 0.288210341243090810, +0.288258219239066190, 0.288306096514395980, 0.288353973068960990, 0.288401848902640650, 0.288449724015315660, 0.288497598406866400, 0.288545472077173510, 0.288593345026116550, +0.288641217253576220, 0.288689088759432830, 0.288736959543567150, 0.288784829605858660, 0.288832698946188130, 0.288880567564435810, 0.288928435460482470, 0.288976302634207650, +0.289024169085492060, 0.289072034814216060, 0.289119899820260430, 0.289167764103504590, 0.289215627663829360, 0.289263490501115440, 0.289311352615242380, 0.289359214006090990, +0.289407074673541490, 0.289454934617474790, 0.289502793837770330, 0.289550652334308820, 0.289598510106970740, 0.289646367155636800, 0.289694223480186530, 0.289742079080500650, +0.289789933956459630, 0.289837788107944140, 0.289885641534833820, 0.289933494237009370, 0.289981346214351180, 0.290029197466740050, 0.290077047994055480, 0.290124897796178340, +0.290172746872988880, 0.290220595224368050, 0.290268442850195260, 0.290316289750351400, 0.290364135924717210, 0.290411981373172310, 0.290459826095597400, 0.290507670091872950, +0.290555513361879740, 0.290603355905497300, 0.290651197722606500, 0.290699038813087730, 0.290746879176821740, 0.290794718813688120, 0.290842557723567760, 0.290890395906340970, +0.290938233361888620, 0.290986070090090250, 0.291033906090826740, 0.291081741363978410, 0.291129575909426170, 0.291177409727049590, 0.291225242816729510, 0.291273075178346720, +0.291320906811780800, 0.291368737716912630, 0.291416567893622580, 0.291464397341791580, 0.291512226061299120, 0.291560054052026120, 0.291607881313853010, 0.291655707846660620, +0.291703533650328470, 0.291751358724737560, 0.291799183069768210, 0.291847006685301340, 0.291894829571216540, 0.291942651727394640, 0.291990473153716120, 0.292038293850061860, +0.292086113816311440, 0.292133933052345700, 0.292181751558045600, 0.292229569333290640, 0.292277386377961800, 0.292325202691939510, 0.292373018275104590, 0.292420833127336740, +0.292468647248516790, 0.292516460638525210, 0.292564273297242940, 0.292612085224549510, 0.292659896420325920, 0.292707706884452520, 0.292755516616810320, 0.292803325617278950, +0.292851133885739190, 0.292898941422071620, 0.292946748226157130, 0.292994554297875350, 0.293042359637107170, 0.293090164243733520, 0.293137968117634040, 0.293185771258689660, +0.293233573666780820, 0.293281375341788500, 0.293329176283592290, 0.293376976492073120, 0.293424775967111530, 0.293472574708588450, 0.293520372716383480, 0.293568169990377600, +0.293615966530451300, 0.293663762336485450, 0.293711557408359860, 0.293759351745955300, 0.293807145349152370, 0.293854938217832040, 0.293902730351873920, 0.293950521751158990, +0.293998312415567730, 0.294046102344981130, 0.294093891539278840, 0.294141679998341790, 0.294189467722051010, 0.294237254710286110, 0.294285040962928120, 0.294332826479857480, +0.294380611260955220, 0.294428395306100990, 0.294476178615175830, 0.294523961188060180, 0.294571743024635010, 0.294619524124780100, 0.294667304488376410, 0.294715084115304390, +0.294762863005445130, 0.294810641158678280, 0.294858418574884820, 0.294906195253945350, 0.294953971195740790, 0.295001746400150870, 0.295049520867056550, 0.295097294596338930, +0.295145067587877620, 0.295192839841553590, 0.295240611357247500, 0.295288382134840320, 0.295336152174211770, 0.295383921475242780, 0.295431690037814050, 0.295479457861806460, +0.295527224947099880, 0.295574991293575170, 0.295622756901113000, 0.295670521769594350, 0.295718285898899040, 0.295766049288907930, 0.295813811939501740, 0.295861573850561440, +0.295909335021966760, 0.295957095453598770, 0.296004855145338470, 0.296052614097065570, 0.296100372308661150, 0.296148129780005820, 0.296195886510980610, 0.296243642501465180, +0.296291397751340720, 0.296339152260487740, 0.296386906028787310, 0.296434659056119150, 0.296482411342364360, 0.296530162887403580, 0.296577913691117800, 0.296625663753386780, +0.296673413074091620, 0.296721161653112960, 0.296768909490331800, 0.296816656585627950, 0.296864402938882390, 0.296912148549975890, 0.296959893418789420, 0.297007637545202820, +0.297055380929097110, 0.297103123570353400, 0.297150865468851390, 0.297198606624472280, 0.297246347037096630, 0.297294086706605510, 0.297341825632878750, 0.297389563815797450, +0.297437301255242260, 0.297485037951094210, 0.297532773903233180, 0.297580509111540160, 0.297628243575895900, 0.297675977296181450, 0.297723710272276620, 0.297771442504062570, +0.297819173991419880, 0.297866904734229660, 0.297914634732371730, 0.297962363985727290, 0.298010092494177310, 0.298057820257601690, 0.298105547275881510, 0.298153273548897480, +0.298200999076530690, 0.298248723858660970, 0.298296447895169400, 0.298344171185936760, 0.298391893730844130, 0.298439615529771270, 0.298487336582599460, 0.298535056889209230, +0.298582776449481830, 0.298630495263297050, 0.298678213330536070, 0.298725930651079500, 0.298773647224808540, 0.298821363051603060, 0.298869078131344170, 0.298916792463913010, +0.298964506049189390, 0.299012218887054590, 0.299059930977389200, 0.299107642320074420, 0.299155352914990070, 0.299203062762017360, 0.299250771861036990, 0.299298480211930170, +0.299346187814576670, 0.299393894668857690, 0.299441600774653980, 0.299489306131846710, 0.299537010740315750, 0.299584714599942290, 0.299632417710607000, 0.299680120072191140, +0.299727821684574510, 0.299775522547638340, 0.299823222661263770, 0.299870922025330720, 0.299918620639720410, 0.299966318504313490, 0.300014015618991210, 0.300061711983633520, +0.300109407598121490, 0.300157102462335960, 0.300204796576158120, 0.300252489939467850, 0.300300182552146360, 0.300347874414074400, 0.300395565525133190, 0.300443255885202600, +0.300490945494163940, 0.300538634351897870, 0.300586322458285650, 0.300634009813207200, 0.300681696416543740, 0.300729382268176030, 0.300777067367985260, 0.300824751715851440, +0.300872435311655690, 0.300920118155279360, 0.300967800246602250, 0.301015481585505620, 0.301063162171870350, 0.301110842005577530, 0.301158521086507200, 0.301206199414540630, +0.301253876989558520, 0.301301553811442140, 0.301349229880071400, 0.301396905195327640, 0.301444579757091600, 0.301492253565244560, 0.301539926619666440, 0.301587598920238510, +0.301635270466841580, 0.301682941259356910, 0.301730611297664490, 0.301778280581645460, 0.301825949111181210, 0.301873616886151660, 0.301921283906438080, 0.301968950171921270, +0.302016615682482500, 0.302064280438001760, 0.302111944438360370, 0.302159607683439080, 0.302207270173119210, 0.302254931907280700, 0.302302592885804910, 0.302350253108572610, +0.302397912575465110, 0.302445571286362400, 0.302493229241145800, 0.302540886439696070, 0.302588542881894570, 0.302636198567621310, 0.302683853496757530, 0.302731507669184550, +0.302779161084782370, 0.302826813743432290, 0.302874465645015130, 0.302922116789412330, 0.302969767176503760, 0.303017416806170730, 0.303065065678294220, 0.303112713792755450, +0.303160361149434450, 0.303208007748212600, 0.303255653588970660, 0.303303298671590060, 0.303350942995950780, 0.303398586561934140, 0.303446229369421060, 0.303493871418292820, +0.303541512708429440, 0.303589153239712310, 0.303636793012022290, 0.303684432025240700, 0.303732070279247650, 0.303779707773924380, 0.303827344509152280, 0.303874980484811370, +0.303922615700783050, 0.303970250156948170, 0.304017883853188060, 0.304065516789382870, 0.304113148965413860, 0.304160780381162010, 0.304208411036508590, 0.304256040931333740, +0.304303670065518780, 0.304351298438944650, 0.304398926051492660, 0.304446552903043010, 0.304494178993476920, 0.304541804322675410, 0.304589428890519760, 0.304637052696890180, +0.304684675741667970, 0.304732298024734450, 0.304779919545969780, 0.304827540305255270, 0.304875160302471970, 0.304922779537501190, 0.304970398010223020, 0.305018015720518840, +0.305065632668269640, 0.305113248853356780, 0.305160864275660360, 0.305208478935061810, 0.305256092831442060, 0.305303705964682480, 0.305351318334663220, 0.305398929941265660, +0.305446540784370780, 0.305494150863859950, 0.305541760179613320, 0.305589368731512320, 0.305636976519438330, 0.305684583543271440, 0.305732189802893130, 0.305779795298184330, +0.305827400029026420, 0.305875003995299650, 0.305922607196885350, 0.305970209633664500, 0.306017811305518580, 0.306065412212327690, 0.306113012353973310, 0.306160611730336370, +0.306208210341298300, 0.306255808186739360, 0.306303405266540820, 0.306351001580583810, 0.306398597128749730, 0.306446191910918650, 0.306493785926972180, 0.306541379176791640, +0.306588971660257230, 0.306636563377250370, 0.306684154327652110, 0.306731744511343940, 0.306779333928205940, 0.306826922578119610, 0.306874510460965980, 0.306922097576626470, +0.306969683924981310, 0.307017269505911960, 0.307064854319299420, 0.307112438365025160, 0.307160021642969350, 0.307207604153013570, 0.307255185895038700, 0.307302766868926320, +0.307350347074556610, 0.307397926511811030, 0.307445505180570620, 0.307493083080716880, 0.307540660212130000, 0.307588236574691480, 0.307635812168282790, 0.307683386992784190, +0.307730961048077070, 0.307778534334042560, 0.307826106850562110, 0.307873678597516020, 0.307921249574785670, 0.307968819782252270, 0.308016389219797180, 0.308063957887300730, +0.308111525784644400, 0.308159092911709230, 0.308206659268376760, 0.308254224854527190, 0.308301789670042070, 0.308349353714802490, 0.308396916988689930, 0.308444479491584710, +0.308492041223368210, 0.308539602183922070, 0.308587162373126560, 0.308634721790863040, 0.308682280437012790, 0.308729838311457230, 0.308777395414076670, 0.308824951744752610, +0.308872507303366130, 0.308920062089798890, 0.308967616103930980, 0.309015169345644100, 0.309062721814819250, 0.309110273511338070, 0.309157824435080720, 0.309205374585928890, +0.309252923963763580, 0.309300472568466380, 0.309348020399917540, 0.309395567457998680, 0.309443113742591370, 0.309490659253575770, 0.309538203990833590, 0.309585747954245870, +0.309633291143694200, 0.309680833559058900, 0.309728375200221510, 0.309775916067063170, 0.309823456159465490, 0.309870995477308730, 0.309918534020474480, 0.309966071788843890, +0.310013608782298500, 0.310061145000718740, 0.310108680443986100, 0.310156215111981710, 0.310203749004587250, 0.310251282121683010, 0.310298814463150550, 0.310346346028871010, +0.310393876818726100, 0.310441406832596020, 0.310488936070362430, 0.310536464531906970, 0.310583992217109860, 0.310631519125852850, 0.310679045258016980, 0.310726570613483910, +0.310774095192134060, 0.310821618993848910, 0.310869142018509740, 0.310916664265998120, 0.310964185736194390, 0.311011706428980240, 0.311059226344236830, 0.311106745481845750, +0.311154263841687430, 0.311201781423643410, 0.311249298227594890, 0.311296814253423650, 0.311344329501009880, 0.311391843970235280, 0.311439357660981580, 0.311486870573128960, +0.311534382706559200, 0.311581894061153500, 0.311629404636793510, 0.311676914433359540, 0.311724423450733310, 0.311771931688796020, 0.311819439147429270, 0.311866945826513590, +0.311914451725930460, 0.311961956845561270, 0.312009461185287550, 0.312056964744989780, 0.312104467524549620, 0.312151969523848270, 0.312199470742767440, 0.312246971181187490, +0.312294470838990090, 0.312341969716056990, 0.312389467812268510, 0.312436965127506350, 0.312484461661651840, 0.312531957414586500, 0.312579452386190890, 0.312626946576346710, +0.312674439984935100, 0.312721932611837780, 0.312769424456935290, 0.312816915520109210, 0.312864405801240810, 0.312911895300211850, 0.312959384016902710, 0.313006871951195090, +0.313054359102970300, 0.313101845472110060, 0.313149331058494800, 0.313196815862006210, 0.313244299882525950, 0.313291783119934550, 0.313339265574113680, 0.313386747244944700, +0.313434228132309200, 0.313481708236087730, 0.313529187556161990, 0.313576666092413300, 0.313624143844723370, 0.313671620812972620, 0.313719096997042870, 0.313766572396815320, +0.313814047012171800, 0.313861520842992740, 0.313908993889159880, 0.313956466150554560, 0.314003937627058420, 0.314051408318552050, 0.314098878224917220, 0.314146347346035140, +0.314193815681787610, 0.314241283232055080, 0.314288749996719410, 0.314336215975662250, 0.314383681168764140, 0.314431145575906850, 0.314478609196971680, 0.314526072031840410, +0.314573534080393510, 0.314620995342512810, 0.314668455818079620, 0.314715915506975700, 0.314763374409081590, 0.314810832524278990, 0.314858289852449350, 0.314905746393474410, +0.314953202147234660, 0.315000657113611910, 0.315048111292487550, 0.315095564683743280, 0.315143017287259740, 0.315190469102918590, 0.315237920130601760, 0.315285370370189670, +0.315332819821564140, 0.315380268484606600, 0.315427716359198750, 0.315475163445221250, 0.315522609742555800, 0.315570055251083840, 0.315617499970687170, 0.315664943901246330, +0.315712387042643150, 0.315759829394758940, 0.315807270957475630, 0.315854711730673700, 0.315902151714235020, 0.315949590908040920, 0.315997029311973270, 0.316044466925912650, +0.316091903749740830, 0.316139339783339690, 0.316186775026589820, 0.316234209479372970, 0.316281643141570590, 0.316329076013064540, 0.316376508093735350, 0.316423939383464910, +0.316471369882134650, 0.316518799589626370, 0.316566228505820670, 0.316613656630599370, 0.316661083963843960, 0.316708510505436250, 0.316755936255256830, 0.316803361213187580, +0.316850785379109930, 0.316898208752905750, 0.316945631334455640, 0.316993053123641400, 0.317040474120344530, 0.317087894324446950, 0.317135313735829210, 0.317182732354373110, +0.317230150179960650, 0.317277567212472410, 0.317324983451790220, 0.317372398897795620, 0.317419813550370410, 0.317467227409395260, 0.317514640474751970, 0.317562052746322150, +0.317609464223987610, 0.317656874907629010, 0.317704284797128200, 0.317751693892366680, 0.317799102193226320, 0.317846509699587830, 0.317893916411333020, 0.317941322328343430, +0.317988727450501000, 0.318036131777686300, 0.318083535309781230, 0.318130938046667810, 0.318178339988226590, 0.318225741134339490, 0.318273141484888110, 0.318320541039754270, +0.318367939798818610, 0.318415337761963180, 0.318462734929069350, 0.318510131300019090, 0.318557526874693130, 0.318604921652973330, 0.318652315634741220, 0.318699708819878750, +0.318747101208266600, 0.318794492799786670, 0.318841883594320530, 0.318889273591750070, 0.318936662791956040, 0.318984051194820320, 0.319031438800224940, 0.319078825608050510, +0.319126211618179000, 0.319173596830492010, 0.319220981244871420, 0.319268364861197970, 0.319315747679353610, 0.319363129699219870, 0.319410510920678680, 0.319457891343610860, +0.319505270967898270, 0.319552649793422520, 0.319600027820065580, 0.319647405047708170, 0.319694781476232200, 0.319742157105519290, 0.319789531935451400, 0.319836905965909250, +0.319884279196774870, 0.319931651627930190, 0.319979023259255980, 0.320026394090634210, 0.320073764121946440, 0.320121133353074680, 0.320168501783899660, 0.320215869414303410, +0.320263236244167470, 0.320310602273373880, 0.320357967501803340, 0.320405331929337900, 0.320452695555859090, 0.320500058381249010, 0.320547420405388360, 0.320594781628159130, +0.320642142049442970, 0.320689501669121860, 0.320736860487076560, 0.320784218503189170, 0.320831575717341170, 0.320878932129414710, 0.320926287739290440, 0.320973642546850460, +0.321020996551976800, 0.321068349754550290, 0.321115702154452840, 0.321163053751566120, 0.321210404545772210, 0.321257754536951880, 0.321305103724987160, 0.321352452109759710, +0.321399799691151510, 0.321447146469043380, 0.321494492443317400, 0.321541837613855190, 0.321589181980538820, 0.321636525543249060, 0.321683868301868010, 0.321731210256277270, +0.321778551406358910, 0.321825891751993780, 0.321873231293063890, 0.321920570029451350, 0.321967907961036970, 0.322015245087702850, 0.322062581409330580, 0.322109916925802320, +0.322157251636998820, 0.322204585542802180, 0.322251918643094050, 0.322299250937756580, 0.322346582426670580, 0.322393913109718100, 0.322441242986780840, 0.322488572057740900, +0.322535900322479090, 0.322583227780877560, 0.322630554432817910, 0.322677880278182340, 0.322725205316851670, 0.322772529548707940, 0.322819852973633300, 0.322867175591508630, +0.322914497402216010, 0.322961818405637200, 0.323009138601654200, 0.323056457990147930, 0.323103776571000530, 0.323151094344093730, 0.323198411309309600, 0.323245727466528960, +0.323293042815634090, 0.323340357356506570, 0.323387671089028550, 0.323434984013080960, 0.323482296128545900, 0.323529607435305120, 0.323576917933240730, 0.323624227622233640, +0.323671536502165960, 0.323718844572919440, 0.323766151834376240, 0.323813458286417220, 0.323860763928924600, 0.323908068761780410, 0.323955372784865690, 0.324002675998062540, +0.324049978401252660, 0.324097279994318310, 0.324144580777140310, 0.324191880749600870, 0.324239179911581690, 0.324286478262965030, 0.324333775803631710, 0.324381072533463990, +0.324428368452343570, 0.324475663560152620, 0.324522957856772150, 0.324570251342084230, 0.324617544015970700, 0.324664835878313740, 0.324712126928994320, 0.324759417167894530, +0.324806706594896580, 0.324853995209881510, 0.324901283012731410, 0.324948570003328110, 0.324995856181553850, 0.325043141547289470, 0.325090426100417270, 0.325137709840818970, +0.325184992768376870, 0.325232274882971790, 0.325279556184486120, 0.325326836672801490, 0.325374116347800220, 0.325421395209363200, 0.325468673257372720, 0.325515950491710560, +0.325563226912258970, 0.325610502518898840, 0.325657777311512460, 0.325705051289982120, 0.325752324454188670, 0.325799596804014440, 0.325846868339341180, 0.325894139060051210, +0.325941408966025470, 0.325988678057146150, 0.326035946333295190, 0.326083213794354790, 0.326130480440205930, 0.326177746270730870, 0.326225011285811380, 0.326272275485329890, +0.326319538869167200, 0.326366801437205700, 0.326414063189327200, 0.326461324125413950, 0.326508584245347010, 0.326555843549008570, 0.326603102036280960, 0.326650359707045150, +0.326697616561183460, 0.326744872598577710, 0.326792127819110210, 0.326839382222661960, 0.326886635809115260, 0.326933888578351980, 0.326981140530254400, 0.327028391664703540, +0.327075641981581730, 0.327122891480770780, 0.327170140162153010, 0.327217388025609510, 0.327264635071022550, 0.327311881298273930, 0.327359126707246100, 0.327406371297820020, +0.327453615069877970, 0.327500858023301920, 0.327548100157974140, 0.327595341473775670, 0.327642581970588880, 0.327689821648296020, 0.327737060506778200, 0.327784298545917730, +0.327831535765596540, 0.327878772165696890, 0.327926007746099920, 0.327973242506687910, 0.328020476447342780, 0.328067709567946900, 0.328114941868381360, 0.328162173348528430, +0.328209404008270030, 0.328256633847488600, 0.328303862866065170, 0.328351091063882050, 0.328398318440821180, 0.328445544996764980, 0.328492770731594500, 0.328539995645192040, +0.328587219737440040, 0.328634443008219590, 0.328681665457413010, 0.328728887084902280, 0.328776107890569770, 0.328823327874296520, 0.328870547035965020, 0.328917765375457080, +0.328964982892655190, 0.329012199587440380, 0.329059415459695140, 0.329106630509301330, 0.329153844736141340, 0.329201058140096310, 0.329248270721048670, 0.329295482478880350, +0.329342693413473770, 0.329389903524709980, 0.329437112812471460, 0.329484321276640570, 0.329531528917098470, 0.329578735733727530, 0.329625941726409740, 0.329673146895027580, +0.329720351239462080, 0.329767554759595680, 0.329814757455310470, 0.329861959326488710, 0.329909160373011660, 0.329956360594761740, 0.330003559991620900, 0.330050758563471550, +0.330097956310194900, 0.330145153231673370, 0.330192349327788960, 0.330239544598424080, 0.330286739043459900, 0.330333932662778940, 0.330381125456263080, 0.330428317423794860, +0.330475508565255430, 0.330522698880527210, 0.330569888369492690, 0.330617077032032970, 0.330664264868030630, 0.330711451877367610, 0.330758638059926340, 0.330805823415588120, +0.330853007944235280, 0.330900191645749960, 0.330947374520014550, 0.330994556566910290, 0.331041737786319680, 0.331088918178124690, 0.331136097742207810, 0.331183276478450310, +0.331230454386734540, 0.331277631466942720, 0.331324807718957230, 0.331371983142659250, 0.331419157737931350, 0.331466331504655990, 0.331513504442714320, 0.331560676551988950, +0.331607847832361860, 0.331655018283715570, 0.331702187905931310, 0.331749356698891610, 0.331796524662478500, 0.331843691796574520, 0.331890858101060840, 0.331938023575820080, +0.331985188220734200, 0.332032352035685820, 0.332079515020556100, 0.332126677175227590, 0.332173838499582430, 0.332220998993503050, 0.332268158656870820, 0.332315317489568110, +0.332362475491477570, 0.332409632662480410, 0.332456789002459170, 0.332503944511296000, 0.332551099188873320, 0.332598253035072510, 0.332645406049776050, 0.332692558232866090, +0.332739709584225160, 0.332786860103734540, 0.332834009791276750, 0.332881158646733900, 0.332928306669988630, 0.332975453860922140, 0.333022600219417040, 0.333069745745355470, +0.333116890438619920, 0.333164034299091690, 0.333211177326653400, 0.333258319521187620, 0.333305460882575570, 0.333352601410699890, 0.333399741105442740, 0.333446879966686590, +0.333494017994312890, 0.333541155188204100, 0.333588291548242430, 0.333635427074310490, 0.333682561766289520, 0.333729695624062130, 0.333776828647510570, 0.333823960836517280, +0.333871092190963730, 0.333918222710732400, 0.333965352395705520, 0.334012481245765710, 0.334059609260794250, 0.334106736440673790, 0.334153862785286470, 0.334200988294514940, +0.334248112968240470, 0.334295236806345760, 0.334342359808713350, 0.334389481975224670, 0.334436603305762250, 0.334483723800208300, 0.334530843458445530, 0.334577962280355190, +0.334625080265819940, 0.334672197414721980, 0.334719313726943970, 0.334766429202367210, 0.334813543840874420, 0.334860657642347740, 0.334907770606669870, 0.334954882733722150, +0.335001994023387210, 0.335049104475547310, 0.335096214090085050, 0.335143322866881810, 0.335190430805820280, 0.335237537906783120, 0.335284644169651650, 0.335331749594308610, +0.335378854180636180, 0.335425957928517040, 0.335473060837832570, 0.335520162908465480, 0.335567264140297920, 0.335614364533212690, 0.335661464087091080, 0.335708562801815820, +0.335755660677269200, 0.335802757713333790, 0.335849853909891080, 0.335896949266823790, 0.335944043784014050, 0.335991137461344620, 0.336038230298697000, 0.336085322295953730, +0.336132413452997600, 0.336179503769710060, 0.336226593245973700, 0.336273681881670890, 0.336320769676684280, 0.336367856630895360, 0.336414942744186760, 0.336462028016440820, +0.336509112447540230, 0.336556196037366420, 0.336603278785802150, 0.336650360692729630, 0.336697441758031680, 0.336744521981589660, 0.336791601363286400, 0.336838679903004090, +0.336885757600625500, 0.336932834456032120, 0.336979910469106640, 0.337026985639731380, 0.337074059967789110, 0.337121133453161250, 0.337168206095730560, 0.337215277895379750, +0.337262348851990360, 0.337309418965445030, 0.337356488235626200, 0.337403556662416610, 0.337450624245697660, 0.337497690985352150, 0.337544756881262400, 0.337591821933311220, +0.337638886141380050, 0.337685949505351630, 0.337733012025108410, 0.337780073700533030, 0.337827134531507030, 0.337874194517913230, 0.337921253659633940, 0.337968311956551910, +0.338015369408548700, 0.338062426015507070, 0.338109481777309760, 0.338156536693838380, 0.338203590764975640, 0.338250643990603890, 0.338297696370605970, 0.338344747904863410, +0.338391798593258960, 0.338438848435675010, 0.338485897431994360, 0.338532945582098570, 0.338579992885870430, 0.338627039343192270, 0.338674084953946910, 0.338721129718015990, +0.338768173635282170, 0.338815216705627980, 0.338862258928936120, 0.338909300305088200, 0.338956340833967080, 0.339003380515455480, 0.339050419349435030, 0.339097457335788500, +0.339144494474398320, 0.339191530765147350, 0.339238566207917150, 0.339285600802590510, 0.339332634549049880, 0.339379667447178070, 0.339426699496856720, 0.339473730697968550, +0.339520761050396080, 0.339567790554022140, 0.339614819208728320, 0.339661847014397440, 0.339708873970911930, 0.339755900078154650, 0.339802925336007200, 0.339849949744352450, +0.339896973303072840, 0.339943996012051160, 0.339991017871169140, 0.340038038880309530, 0.340085059039355260, 0.340132078348187930, 0.340179096806690400, 0.340226114414745100, +0.340273131172234950, 0.340320147079041570, 0.340367162135047810, 0.340414176340136150, 0.340461189694189480, 0.340508202197089380, 0.340555213848718790, 0.340602224648960170, +0.340649234597696420, 0.340696243694809160, 0.340743251940181290, 0.340790259333695280, 0.340837265875234050, 0.340884271564679210, 0.340931276401913730, 0.340978280386820430, +0.341025283519281070, 0.341072285799178480, 0.341119287226395170, 0.341166287800814040, 0.341213287522316780, 0.341260286390786320, 0.341307284406105140, 0.341354281568156170, +0.341401277876821060, 0.341448273331982800, 0.341495267933523810, 0.341542261681327060, 0.341589254575274280, 0.341636246615248330, 0.341683237801131800, 0.341730228132807570, +0.341777217610157340, 0.341824206233064090, 0.341871194001410750, 0.341918180915078970, 0.341965166973951800, 0.342012152177911640, 0.342059136526841560, 0.342106120020623180, +0.342153102659139560, 0.342200084442273120, 0.342247065369906960, 0.342294045441922660, 0.342341024658203260, 0.342388003018631320, 0.342434980523089790, 0.342481957171460350, +0.342528932963626020, 0.342575907899469400, 0.342622881978873420, 0.342669855201719780, 0.342716827567891570, 0.342763799077271670, 0.342810769729741840, 0.342857739525185110, +0.342904708463483980, 0.342951676544521580, 0.342998643768179510, 0.343045610134340820, 0.343092575642888140, 0.343139540293704470, 0.343186504086671450, 0.343233467021672230, +0.343280429098589300, 0.343327390317305750, 0.343374350677703330, 0.343421310179664980, 0.343468268823073410, 0.343515226607811530, 0.343562183533761170, 0.343609139600805360, +0.343656094808826750, 0.343703049157708270, 0.343750002647331740, 0.343796955277580250, 0.343843907048336730, 0.343890857959483100, 0.343937808010902290, 0.343984757202476950, +0.344031705534090130, 0.344078653005623620, 0.344125599616960490, 0.344172545367983360, 0.344219490258575290, 0.344266434288618080, 0.344313377457994780, 0.344360319766588040, +0.344407261214280950, 0.344454201800955260, 0.344501141526494030, 0.344548080390780000, 0.344595018393696160, 0.344641955535124390, 0.344688891814947660, 0.344735827233049190, +0.344782761789310720, 0.344829695483615310, 0.344876628315845700, 0.344923560285884890, 0.344970491393614800, 0.345017421638918460, 0.345064351021678590, 0.345111279541778280, +0.345158207199099290, 0.345205133993524820, 0.345252059924937520, 0.345298984993220480, 0.345345909198255590, 0.345392832539925860, 0.345439755018114080, 0.345486676632703330, +0.345533597383575470, 0.345580517270613670, 0.345627436293700910, 0.345674354452719210, 0.345721271747551570, 0.345768188178080800, 0.345815103744189940, 0.345862018445760920, +0.345908932282676830, 0.345955845254820430, 0.346002757362074860, 0.346049668604321960, 0.346096578981444860, 0.346143488493326320, 0.346190397139849500, 0.346237304920896270, +0.346284211836349780, 0.346331117886092720, 0.346378023070008310, 0.346424927387978420, 0.346471830839886250, 0.346518733425614460, 0.346565635145046290, 0.346612535998063580, +0.346659435984549510, 0.346706335104387310, 0.346753233357458830, 0.346800130743647290, 0.346847027262835450, 0.346893922914906390, 0.346940817699742170, 0.346987711617225860, +0.347034604667240290, 0.347081496849668600, 0.347128388164392790, 0.347175278611295990, 0.347222168190260970, 0.347269056901170990, 0.347315944743907920, 0.347362831718355030, +0.347409717824395000, 0.347456603061911170, 0.347503487430785350, 0.347550370930900850, 0.347597253562140830, 0.347644135324387200, 0.347691016217523300, 0.347737896241431870, +0.347784775395996060, 0.347831653681097920, 0.347878531096620650, 0.347925407642447060, 0.347972283318460360, 0.348019158124542540, 0.348066032060576850, 0.348112905126446050, +0.348159777322033400, 0.348206648647220900, 0.348253519101891730, 0.348300388685928830, 0.348347257399215350, 0.348394125241633320, 0.348440992213065960, 0.348487858313396510, +0.348534723542507090, 0.348581587900280760, 0.348628451386600540, 0.348675314001349550, 0.348722175744409890, 0.348769036615664770, 0.348815896614997070, 0.348862755742290030, +0.348909613997425700, 0.348956471380287350, 0.349003327890757830, 0.349050183528720360, 0.349097038294057030, 0.349143892186651150, 0.349190745206385490, 0.349237597353143360, +0.349284448626806850, 0.349331299027259230, 0.349378148554383820, 0.349424997208062580, 0.349471844988178850, 0.349518691894615490, 0.349565537927255810, 0.349612383085981910, +0.349659227370677010, 0.349706070781224070, 0.349752913317506350, 0.349799754979405960, 0.349846595766806160, 0.349893435679589860, 0.349940274717640390, 0.349987112880839830, +0.350033950169071520, 0.350080786582218310, 0.350127622120163520, 0.350174456782789300, 0.350221290569978920, 0.350268123481615290, 0.350314955517581790, 0.350361786677760470, +0.350408616962034740, 0.350455446370287800, 0.350502274902401880, 0.350549102558260270, 0.350595929337745920, 0.350642755240742120, 0.350689580267131040, 0.350736404416795990, +0.350783227689619950, 0.350830050085486290, 0.350876871604277050, 0.350923692245875610, 0.350970512010164940, 0.351017330897028470, 0.351064148906348180, 0.351110966038007570, +0.351157782291889540, 0.351204597667877430, 0.351251412165853430, 0.351298225785700910, 0.351345038527303260, 0.351391850390542600, 0.351438661375302270, 0.351485471481465310, +0.351532280708915070, 0.351579089057533770, 0.351625896527204660, 0.351672703117810900, 0.351719508829235750, 0.351766313661361410, 0.351813117614071300, 0.351859920687248360, +0.351906722880776070, 0.351953524194536570, 0.352000324628413240, 0.352047124182289060, 0.352093922856047570, 0.352140720649570800, 0.352187517562742250, 0.352234313595445270, +0.352281108747562130, 0.352327903018976260, 0.352374696409570590, 0.352421488919228590, 0.352468280547832470, 0.352515071295265600, 0.352561861161411080, 0.352608650146152340, +0.352655438249371570, 0.352702225470952200, 0.352749011810777220, 0.352795797268730170, 0.352842581844693190, 0.352889365538549770, 0.352936148350182940, 0.352982930279476140, +0.353029711326311610, 0.353076491490572800, 0.353123270772142780, 0.353170049170905000, 0.353216826686741650, 0.353263603319536210, 0.353310379069172230, 0.353357153935531850, +0.353403927918498620, 0.353450701017955560, 0.353497473233786160, 0.353544244565872630, 0.353591015014098560, 0.353637784578346880, 0.353684553258501230, 0.353731321054443710, +0.353778087966057920, 0.353824853993226880, 0.353871619135834150, 0.353918383393761970, 0.353965146766893830, 0.354011909255112780, 0.354058670858302390, 0.354105431576344940, +0.354152191409123910, 0.354198950356522770, 0.354245708418423840, 0.354292465594710670, 0.354339221885266340, 0.354385977289974340, 0.354432731808717040, 0.354479485441377860, +0.354526238187839960, 0.354572990047986920, 0.354619741021700960, 0.354666491108865670, 0.354713240309364130, 0.354759988623079890, 0.354806736049895320, 0.354853482589693850, +0.354900228242358730, 0.354946973007773390, 0.354993716885820270, 0.355040459876382830, 0.355087201979344620, 0.355133943194588020, 0.355180683521996610, 0.355227422961453430, +0.355274161512842130, 0.355320899176044980, 0.355367635950945620, 0.355414371837427130, 0.355461106835373190, 0.355507840944666030, 0.355554574165189260, 0.355601306496826090, +0.355648037939460040, 0.355694768492973430, 0.355741498157249980, 0.355788226932172770, 0.355834954817625390, 0.355881681813490220, 0.355928407919650800, 0.355975133135990830, +0.356021857462392620, 0.356068580898739720, 0.356115303444915380, 0.356162025100803190, 0.356208745866285590, 0.356255465741246060, 0.356302184725567850, 0.356348902819134670, +0.356395620021828730, 0.356442336333533780, 0.356489051754133040, 0.356535766283510020, 0.356582479921547180, 0.356629192668128150, 0.356675904523136130, 0.356722615486454790, +0.356769325557966480, 0.356816034737554850, 0.356862743025103120, 0.356909450420494930, 0.356956156923612770, 0.357002862534340160, 0.357049567252560820, 0.357096271078157170, +0.357142974011012860, 0.357189676051011040, 0.357236377198035530, 0.357283077451968580, 0.357329776812694010, 0.357376475280094970, 0.357423172854055120, 0.357469869534456970, +0.357516565321184140, 0.357563260214119880, 0.357609954213147900, 0.357656647318150610, 0.357703339529011730, 0.357750030845614460, 0.357796721267842570, 0.357843410795578410, +0.357890099428705750, 0.357936787167108250, 0.357983474010668380, 0.358030159959269840, 0.358076845012795850, 0.358123529171130220, 0.358170212434155310, 0.358216894801754890, +0.358263576273812220, 0.358310256850211010, 0.358356936530833780, 0.358403615315564190, 0.358450293204285560, 0.358496970196881650, 0.358543646293234820, 0.358590321493228950, +0.358636995796747240, 0.358683669203673450, 0.358730341713890120, 0.358777013327280900, 0.358823684043729550, 0.358870353863118610, 0.358917022785331720, 0.358963690810252310, +0.359010357937764090, 0.359057024167749590, 0.359103689500092530, 0.359150353934676200, 0.359197017471384440, 0.359243680110099660, 0.359290341850705740, 0.359337002693085940, +0.359383662637124070, 0.359430321682702610, 0.359476979829705390, 0.359523637078015660, 0.359570293427517280, 0.359616948878092760, 0.359663603429625830, 0.359710257081999940, +0.359756909835098780, 0.359803561688804950, 0.359850212643002210, 0.359896862697574370, 0.359943511852403920, 0.359990160107374720, 0.360036807462370160, 0.360083453917273920, +0.360130099471968670, 0.360176744126338160, 0.360223387880265810, 0.360270030733635390, 0.360316672686329500, 0.360363313738231880, 0.360409953889226030, 0.360456593139195650, +0.360503231488023430, 0.360549868935593100, 0.360596505481788120, 0.360643141126492260, 0.360689775869588170, 0.360736409710959600, 0.360783042650490440, 0.360829674688063260, +0.360876305823561890, 0.360922936056869760, 0.360969565387870730, 0.361016193816447340, 0.361062821342483460, 0.361109447965862530, 0.361156073686468400, 0.361202698504183680, +0.361249322418892240, 0.361295945430477440, 0.361342567538823210, 0.361389188743812150, 0.361435809045328130, 0.361482428443254570, 0.361529046937475400, 0.361575664527873150, +0.361622281214331760, 0.361668896996735050, 0.361715511874965700, 0.361762125848907600, 0.361808738918444120, 0.361855351083459230, 0.361901962343835590, 0.361948572699457020, +0.361995182150207040, 0.362041790695969480, 0.362088398336627040, 0.362135005072063590, 0.362181610902162670, 0.362228215826808090, 0.362274819845882610, 0.362321422959270060, +0.362368025166853960, 0.362414626468518190, 0.362461226864145390, 0.362507826353619610, 0.362554424936824660, 0.362601022613643190, 0.362647619383959230, 0.362694215247656160, +0.362740810204618010, 0.362787404254727390, 0.362833997397868260, 0.362880589633924170, 0.362927180962778980, 0.362973771384315470, 0.363020360898417490, 0.363066949504968650, +0.363113537203852810, 0.363160123994952730, 0.363206709878152290, 0.363253294853335130, 0.363299878920385180, 0.363346462079185080, 0.363393044329618780, 0.363439625671569950, +0.363486206104922440, 0.363532785629558990, 0.363579364245363580, 0.363625941952220140, 0.363672518750011500, 0.363719094638621510, 0.363765669617933770, 0.363812243687832330, +0.363858816848199820, 0.363905389098920280, 0.363951960439877260, 0.363998530870954800, 0.364045100392035580, 0.364091669003003600, 0.364138236703742400, 0.364184803494136070, +0.364231369374067300, 0.364277934343420150, 0.364324498402078150, 0.364371061549925270, 0.364417623786844390, 0.364464185112719390, 0.364510745527434340, 0.364557305030872080, +0.364603863622916520, 0.364650421303451270, 0.364696978072360400, 0.364743533929526690, 0.364790088874834160, 0.364836642908166360, 0.364883196029407390, 0.364929748238440040, +0.364976299535148260, 0.365022849919415800, 0.365069399391126590, 0.365115947950163440, 0.365162495596410450, 0.365209042329751270, 0.365255588150069810, 0.365302133057249010, +0.365348677051172910, 0.365395220131725480, 0.365441762298789610, 0.365488303552249320, 0.365534843891988310, 0.365581383317890580, 0.365627921829838940, 0.365674459427717540, +0.365720996111409960, 0.365767531880800360, 0.365814066735771440, 0.365860600676207400, 0.365907133701991850, 0.365953665813008920, 0.366000197009141380, 0.366046727290273320, +0.366093256656288450, 0.366139785107070900, 0.366186312642503400, 0.366232839262470190, 0.366279364966854810, 0.366325889755541480, 0.366372413628413000, 0.366418936585353520, +0.366465458626247080, 0.366511979750976550, 0.366558499959426130, 0.366605019251479420, 0.366651537627020570, 0.366698055085932510, 0.366744571628099260, 0.366791087253404650, +0.366837601961732650, 0.366884115752966310, 0.366930628626989610, 0.366977140583686410, 0.367023651622940710, 0.367070161744635470, 0.367116670948654860, 0.367163179234882560, +0.367209686603202750, 0.367256193053498270, 0.367302698585653340, 0.367349203199552050, 0.367395706895077330, 0.367442209672113380, 0.367488711530543910, 0.367535212470253000, +0.367581712491123700, 0.367628211593040160, 0.367674709775886010, 0.367721207039545580, 0.367767703383901630, 0.367814198808838480, 0.367860693314239820, 0.367907186899989860, +0.367953679565971530, 0.368000171312068970, 0.368046662138165950, 0.368093152044146720, 0.368139641029894220, 0.368186129095292580, 0.368232616240226070, 0.368279102464577570, +0.368325587768231320, 0.368372072151071150, 0.368418555612981150, 0.368465038153844350, 0.368511519773545020, 0.368558000471966850, 0.368604480248994060, 0.368650959104509680, +0.368697437038397910, 0.368743914050542580, 0.368790390140827820, 0.368836865309136670, 0.368883339555353410, 0.368929812879361770, 0.368976285281045980, 0.369022756760289120, +0.369069227316975330, 0.369115696950988950, 0.369162165662212830, 0.369208633450531340, 0.369255100315828260, 0.369301566257987820, 0.369348031276893090, 0.369394495372428240, +0.369440958544477230, 0.369487420792924180, 0.369533882117652150, 0.369580342518545430, 0.369626801995487860, 0.369673260548363690, 0.369719718177055960, 0.369766174881448920, +0.369812630661426500, 0.369859085516872850, 0.369905539447671130, 0.369951992453705520, 0.369998444534859920, 0.370044895691018620, 0.370091345922064720, 0.370137795227882430, +0.370184243608356060, 0.370230691063368640, 0.370277137592804560, 0.370323583196547570, 0.370370027874482090, 0.370416471626491050, 0.370462914452458880, 0.370509356352269450, +0.370555797325807010, 0.370602237372954670, 0.370648676493596730, 0.370695114687617120, 0.370741551954900110, 0.370787988295328830, 0.370834423708787550, 0.370880858195160260, +0.370927291754331200, 0.370973724386183530, 0.371020156090601520, 0.371066586867469520, 0.371113016716670690, 0.371159445638089280, 0.371205873631609230, 0.371252300697114960, +0.371298726834489500, 0.371345152043617230, 0.371391576324382080, 0.371437999676668410, 0.371484422100359310, 0.371530843595339170, 0.371577264161491950, 0.371623683798701920, +0.371670102506852280, 0.371716520285827410, 0.371762937135511230, 0.371809353055788160, 0.371855768046541250, 0.371902182107654910, 0.371948595239013520, 0.371995007440500290, +0.372041418711999470, 0.372087829053395160, 0.372134238464571660, 0.372180646945412140, 0.372227054495801070, 0.372273461115622320, 0.372319866804760310, 0.372366271563098210, +0.372412675390520480, 0.372459078286911050, 0.372505480252154300, 0.372551881286133480, 0.372598281388732970, 0.372644680559836680, 0.372691078799329170, 0.372737476107093510, +0.372783872483014200, 0.372830267926975210, 0.372876662438860920, 0.372923056018554580, 0.372969448665940620, 0.373015840380903410, 0.373062231163326210, 0.373108621013093440, +0.373155009930089100, 0.373201397914197650, 0.373247784965302310, 0.373294171083287500, 0.373340556268037300, 0.373386940519436050, 0.373433323837367100, 0.373479706221714780, +0.373526087672363230, 0.373572468189196870, 0.373618847772098920, 0.373665226420953900, 0.373711604135645750, 0.373757980916059050, 0.373804356762076910, 0.373850731673583960, +0.373897105650464520, 0.373943478692601970, 0.373989850799880730, 0.374036221972184780, 0.374082592209398770, 0.374128961511405840, 0.374175329878090490, 0.374221697309336850, +0.374268063805029360, 0.374314429365051270, 0.374360793989287120, 0.374407157677621010, 0.374453520429937400, 0.374499882246119580, 0.374546243126052060, 0.374592603069618950, +0.374638962076704720, 0.374685320147192690, 0.374731677280967350, 0.374778033477913220, 0.374824388737913570, 0.374870743060853000, 0.374917096446615530, 0.374963448895085760, +0.375009800406146950, 0.375056150979683640, 0.375102500615579980, 0.375148849313720440, 0.375195197073988350, 0.375241543896268290, 0.375287889780444420, 0.375334234726401150, +0.375380578734021920, 0.375426921803191260, 0.375473263933793320, 0.375519605125712590, 0.375565945378832420, 0.375612284693037420, 0.375658623068212070, 0.375704960504239790, +0.375751297001005120, 0.375797632558392210, 0.375843967176285600, 0.375890300854568700, 0.375936633593126010, 0.375982965391841730, 0.376029296250600500, 0.376075626169285580, +0.376121955147781570, 0.376168283185972730, 0.376214610283743590, 0.376260936440977470, 0.376307261657559010, 0.376353585933372430, 0.376399909268302300, 0.376446231662231960, +0.376492553115046040, 0.376538873626628750, 0.376585193196864680, 0.376631511825637200, 0.376677829512830960, 0.376724146258330560, 0.376770462062019420, 0.376816776923782070, +0.376863090843502780, 0.376909403821066190, 0.376955715856355680, 0.377002026949255890, 0.377048337099651020, 0.377094646307425730, 0.377140954572463380, 0.377187261894648680, +0.377233568273865780, 0.377279873709999440, 0.377326178202932960, 0.377372481752551060, 0.377418784358737940, 0.377465086021378240, 0.377511386740355450, 0.377557686515554160, +0.377603985346859130, 0.377650283234153670, 0.377696580177322550, 0.377742876176249910, 0.377789171230820560, 0.377835465340917830, 0.377881758506426410, 0.377928050727230680, +0.377974342003215170, 0.378020632334263420, 0.378066921720260070, 0.378113210161089400, 0.378159497656636150, 0.378205784206783750, 0.378252069811416850, 0.378298354470419820, +0.378344638183677310, 0.378390920951072740, 0.378437202772490930, 0.378483483647816530, 0.378529763576932960, 0.378576042559724990, 0.378622320596076920, 0.378668597685873460, +0.378714873828998160, 0.378761149025335590, 0.378807423274770180, 0.378853696577186590, 0.378899968932468410, 0.378946240340500280, 0.378992510801166530, 0.379038780314351900, +0.379085048879939930, 0.379131316497815400, 0.379177583167862490, 0.379223848889966080, 0.379270113664009590, 0.379316377489877900, 0.379362640367455210, 0.379408902296626330, +0.379455163277274800, 0.379501423309285320, 0.379547682392542720, 0.379593940526930520, 0.379640197712333430, 0.379686453948635870, 0.379732709235722610, 0.379778963573477120, +0.379825216961784280, 0.379871469400528350, 0.379917720889594190, 0.379963971428865290, 0.380010221018226460, 0.380056469657562120, 0.380102717346756940, 0.380148964085694600, +0.380195209874259870, 0.380241454712337110, 0.380287698599811100, 0.380333941536565470, 0.380380183522484930, 0.380426424557454400, 0.380472664641357320, 0.380518903774078650, +0.380565141955502730, 0.380611379185514300, 0.380657615463997070, 0.380703850790835740, 0.380750085165914850, 0.380796318589119110, 0.380842551060332210, 0.380888782579438870, +0.380935013146323610, 0.380981242760871250, 0.381027471422965340, 0.381073699132490780, 0.381119925889331970, 0.381166151693373700, 0.381212376544499690, 0.381258600442594740, +0.381304823387543680, 0.381351045379230150, 0.381397266417539020, 0.381443486502354710, 0.381489705633562100, 0.381535923811044840, 0.381582141034687740, 0.381628357304375330, +0.381674572619992380, 0.381720786981422640, 0.381767000388550880, 0.381813212841261630, 0.381859424339439810, 0.381905634882968970, 0.381951844471734080, 0.381998053105619520, +0.382044260784510310, 0.382090467508289950, 0.382136673276843530, 0.382182878090055740, 0.382229081947810410, 0.382275284849992350, 0.382321486796486090, 0.382367687787176500, +0.382413887821947300, 0.382460086900683340, 0.382506285023269220, 0.382552482189589760, 0.382598678399528710, 0.382644873652970950, 0.382691067949801010, 0.382737261289903820, +0.382783453673163020, 0.382829645099463660, 0.382875835568690150, 0.382922025080727420, 0.382968213635459300, 0.383014401232770580, 0.383060587872545880, 0.383106773554670100, +0.383152958279027010, 0.383199142045501540, 0.383245324853978610, 0.383291506704341920, 0.383337687596476460, 0.383383867530266820, 0.383430046505597920, 0.383476224522353530, +0.383522401580418500, 0.383568577679677500, 0.383614752820015450, 0.383660927001316150, 0.383707100223464490, 0.383753272486345110, 0.383799443789842930, 0.383845614133841770, +0.383891783518226560, 0.383937951942881880, 0.383984119407692730, 0.384030285912542850, 0.384076451457317280, 0.384122616041901010, 0.384168779666177800, 0.384214942330032620, +0.384261104033350060, 0.384307264776015180, 0.384353424557911720, 0.384399583378924660, 0.384445741238938710, 0.384491898137838740, 0.384538054075508670, 0.384584209051833440, +0.384630363066697730, 0.384676516119986490, 0.384722668211583570, 0.384768819341373970, 0.384814969509242270, 0.384861118715073610, 0.384907266958751770, 0.384953414240161720, +0.384999560559188550, 0.385045705915716070, 0.385091850309629340, 0.385137993740812920, 0.385184136209151980, 0.385230277714530330, 0.385276418256832900, 0.385322557835944490, +0.385368696451750090, 0.385414834104133520, 0.385460970792979860, 0.385507106518173770, 0.385553241279600330, 0.385599375077143370, 0.385645507910688020, 0.385691639780118830, +0.385737770685321000, 0.385783900626178290, 0.385830029602575900, 0.385876157614398360, 0.385922284661530890, 0.385968410743857290, 0.386014535861262610, 0.386060660013632040, +0.386106783200849460, 0.386152905422799840, 0.386199026679368010, 0.386245146970438990, 0.386291266295896720, 0.386337384655626280, 0.386383502049512330, 0.386429618477440120, +0.386475733939293410, 0.386521848434957350, 0.386567961964316700, 0.386614074527256490, 0.386660186123660770, 0.386706296753414560, 0.386752406416402570, 0.386798515112510010, +0.386844622841620740, 0.386890729603619920, 0.386936835398392690, 0.386982940225822910, 0.387029044085795860, 0.387075146978196170, 0.387121248902909000, 0.387167349859818320, +0.387213449848809230, 0.387259548869766550, 0.387305646922575410, 0.387351744007119750, 0.387397840123284710, 0.387443935270955050, 0.387490029450016040, 0.387536122660351480, +0.387582214901846630, 0.387628306174386210, 0.387674396477855450, 0.387720485812138360, 0.387766574177119960, 0.387812661572685570, 0.387858747998719170, 0.387904833455105850, +0.387950917941730420, 0.387997001458478150, 0.388043084005232960, 0.388089165581880000, 0.388135246188304190, 0.388181325824390690, 0.388227404490023410, 0.388273482185087670, +0.388319558909468180, 0.388365634663050240, 0.388411709445717790, 0.388457783257356030, 0.388503856097849880, 0.388549927967084430, 0.388595998864943840, 0.388642068791313190, +0.388688137746077740, 0.388734205729121600, 0.388780272740329950, 0.388826338779587610, 0.388872403846779790, 0.388918467941790580, 0.388964531064505240, 0.389010593214808520, +0.389056654392585740, 0.389102714597720890, 0.389148773830099270, 0.389194832089605760, 0.389240889376125550, 0.389286945689542700, 0.389333001029742440, 0.389379055396609770, +0.389425108790029780, 0.389471161209886670, 0.389517212656065650, 0.389563263128451580, 0.389609312626929770, 0.389655361151384270, 0.389701408701700390, 0.389747455277763390, +0.389793500879457300, 0.389839545506667500, 0.389885589159278840, 0.389931631837176610, 0.389977673540244870, 0.390023714268368960, 0.390069754021433730, 0.390115792799324570, +0.390161830601925500, 0.390207867429121890, 0.390253903280798560, 0.390299938156840940, 0.390345972057133010, 0.390392004981560180, 0.390438036930007340, 0.390484067902359790, +0.390530097898501680, 0.390576126918318280, 0.390622154961695060, 0.390668182028515940, 0.390714208118666470, 0.390760233232031410, 0.390806257368496170, 0.390852280527944910, +0.390898302710262990, 0.390944323915335230, 0.390990344143047120, 0.391036363393282740, 0.391082381665927400, 0.391128398960866150, 0.391174415277984360, 0.391220430617166050, +0.391266444978296660, 0.391312458361261220, 0.391358470765944990, 0.391404482192232170, 0.391450492640008200, 0.391496502109158320, 0.391542510599566850, 0.391588518111119050, +0.391634524643700020, 0.391680530197195060, 0.391726534771488330, 0.391772538366465310, 0.391818540982010910, 0.391864542618010630, 0.391910543274348490, 0.391956542950910040, +0.392002541647580250, 0.392048539364244500, 0.392094536100786980, 0.392140531857093130, 0.392186526633047980, 0.392232520428536900, 0.392278513243444090, 0.392324505077654980, +0.392370495931054660, 0.392416485803528500, 0.392462474694960710, 0.392508462605236700, 0.392554449534242010, 0.392600435481860740, 0.392646420447978370, 0.392692404432479990, +0.392738387435250970, 0.392784369456175560, 0.392830350495139260, 0.392876330552027090, 0.392922309626724530, 0.392968287719115740, 0.393014264829086250, 0.393060240956521090, +0.393106216101305690, 0.393152190263324430, 0.393198163442462610, 0.393244135638605440, 0.393290106851638340, 0.393336077081445520, 0.393382046327912570, 0.393428014590924860, +0.393473981870366750, 0.393519948166123620, 0.393565913478080680, 0.393611877806123330, 0.393657841150135910, 0.393703803510003840, 0.393749764885612310, 0.393795725276846750, +0.393841684683591490, 0.393887643105731990, 0.393933600543153410, 0.393979556995741220, 0.394025512463379690, 0.394071466945954460, 0.394117420443350520, 0.394163372955453450, +0.394209324482147520, 0.394255275023318310, 0.394301224578851250, 0.394347173148630770, 0.394393120732542400, 0.394439067330471180, 0.394485012942302700, 0.394530957567921280, +0.394576901207212450, 0.394622843860061410, 0.394668785526353650, 0.394714726205973530, 0.394760665898806600, 0.394806604604737930, 0.394852542323653240, 0.394898479055436790, +0.394944414799974110, 0.394990349557150400, 0.395036283326851200, 0.395082216108960880, 0.395128147903365090, 0.395174078709948860, 0.395220008528597840, 0.395265937359196460, +0.395311865201630200, 0.395357792055784640, 0.395403717921544220, 0.395449642798794520, 0.395495566687420750, 0.395541489587308390, 0.395587411498341980, 0.395633332420406990, +0.395679252353388690, 0.395725171297172660, 0.395771089251643280, 0.395817006216686200, 0.395862922192186550, 0.395908837178030050, 0.395954751174101060, 0.396000664180285180, +0.396046576196467660, 0.396092487222534040, 0.396138397258368860, 0.396184306303857650, 0.396230214358886110, 0.396276121423338620, 0.396322027497100830, 0.396367932580057980, +0.396413836672095680, 0.396459739773098400, 0.396505641882951730, 0.396551543001541000, 0.396597443128751780, 0.396643342264468570, 0.396689240408577000, 0.396735137560962350, +0.396781033721510250, 0.396826928890105180, 0.396872823066632740, 0.396918716250978300, 0.396964608443027440, 0.397010499642664660, 0.397056389849775590, 0.397102279064246000, +0.397148167285960310, 0.397194054514804160, 0.397239940750662930, 0.397285825993422210, 0.397331710242966540, 0.397377593499181610, 0.397423475761952690, 0.397469357031165480, +0.397515237306704460, 0.397561116588455330, 0.397606994876303410, 0.397652872170134450, 0.397698748469832890, 0.397744623775284470, 0.397790498086374460, 0.397836371402988610, +0.397882243725011460, 0.397928115052328670, 0.397973985384825980, 0.398019854722387990, 0.398065723064900290, 0.398111590412248360, 0.398157456764317800, 0.398203322120993190, +0.398249186482160290, 0.398295049847704420, 0.398340912217511390, 0.398386773591465570, 0.398432633969452890, 0.398478493351358600, 0.398524351737068520, 0.398570209126467120, +0.398616065519440180, 0.398661920915873100, 0.398707775315651600, 0.398753628718660270, 0.398799481124784920, 0.398845332533910800, 0.398891182945923790, 0.398937032360708380, +0.398982880778150420, 0.399028728198135670, 0.399074574620548680, 0.399120420045275260, 0.399166264472200770, 0.399212107901211030, 0.399257950332190640, 0.399303791765025340, +0.399349632199600570, 0.399395471635802140, 0.399441310073514630, 0.399487147512623820, 0.399532983953015170, 0.399578819394574460, 0.399624653837186260, 0.399670487280736510, +0.399716319725110460, 0.399762151170194040, 0.399807981615871830, 0.399853811062029660, 0.399899639508553400, 0.399945466955327620, 0.399991293402238160, 0.400037118849170480, +0.400082943296010410, 0.400128766742642580, 0.400174589188952820, 0.400220410634826610, 0.400266231080149750, 0.400312050524806950, 0.400357868968683970, 0.400403686411666350, +0.400449502853639890, 0.400495318294489310, 0.400541132734100410, 0.400586946172358680, 0.400632758609149990, 0.400678570044359030, 0.400724380477871620, 0.400770189909573640, +0.400815998339349780, 0.400861805767085970, 0.400907612192667630, 0.400953417615980630, 0.400999222036909740, 0.401045025455340760, 0.401090827871159180, 0.401136629284250980, +0.401182429694500800, 0.401228229101794560, 0.401274027506017710, 0.401319824907056260, 0.401365621304794750, 0.401411416699119280, 0.401457211089915220, 0.401503004477068550, +0.401548796860463910, 0.401594588239987340, 0.401640378615524260, 0.401686167986960660, 0.401731956354181240, 0.401777743717071980, 0.401823530075518690, 0.401869315429406180, +0.401915099778620390, 0.401960883123046840, 0.402006665462571520, 0.402052446797079130, 0.402098227126455600, 0.402144006450586510, 0.402189784769357790, 0.402235562082654260, +0.402281338390361790, 0.402327113692365960, 0.402372887988552750, 0.402418661278806930, 0.402464433563014480, 0.402510204841060870, 0.402555975112832250, 0.402601744378213220, +0.402647512637089870, 0.402693279889348110, 0.402739046134872770, 0.402784811373549770, 0.402830575605264810, 0.402876338829903760, 0.402922101047351490, 0.402967862257493980, +0.403013622460216770, 0.403059381655405950, 0.403105139842946210, 0.403150897022723660, 0.403196653194623890, 0.403242408358532870, 0.403288162514335410, 0.403333915661917560, +0.403379667801164970, 0.403425418931963540, 0.403471169054198220, 0.403516918167754920, 0.403562666272519740, 0.403608413368377490, 0.403654159455214270, 0.403699904532915600, +0.403745648601367580, 0.403791391660455020, 0.403837133710063970, 0.403882874750080110, 0.403928614780389440, 0.403974353800876870, 0.404020091811428390, 0.404065828811929710, +0.404111564802266840, 0.404157299782324670, 0.404203033751989240, 0.404248766711146180, 0.404294498659681640, 0.404340229597480500, 0.404385959524428740, 0.404431688440412500, +0.404477416345316590, 0.404523143239027220, 0.404568869121429920, 0.404614593992410900, 0.404660317851854970, 0.404706040699648220, 0.404751762535676410, 0.404797483359825570, +0.404843203171980640, 0.404888921972027690, 0.404934639759852440, 0.404980356535340980, 0.405026072298378230, 0.405071787048850330, 0.405117500786642940, 0.405163213511642200, +0.405208925223733030, 0.405254635922801530, 0.405300345608733460, 0.405346054281414900, 0.405391761940730840, 0.405437468586567370, 0.405483174218810580, 0.405528878837345510, +0.405574582442058240, 0.405620285032834480, 0.405665986609560440, 0.405711687172121030, 0.405757386720402350, 0.405803085254290260, 0.405848782773670870, 0.405894479278429090, +0.405940174768451120, 0.405985869243622680, 0.406031562703830010, 0.406077255148958040, 0.406122946578892920, 0.406168636993520400, 0.406214326392726750, 0.406260014776396840, +0.406305702144416910, 0.406351388496673130, 0.406397073833050460, 0.406442758153435110, 0.406488441457712850, 0.406534123745769920, 0.406579805017491250, 0.406625485272763100, +0.406671164511471170, 0.406716842733501840, 0.406762519938739910, 0.406808196127071700, 0.406853871298383020, 0.406899545452560070, 0.406945218589487840, 0.406990890709052530, +0.407036561811140060, 0.407082231895636580, 0.407127900962427070, 0.407173569011397840, 0.407219236042435100, 0.407264902055423820, 0.407310567050250320, 0.407356231026800410, +0.407401893984960290, 0.407447555924615070, 0.407493216845650930, 0.407538876747953750, 0.407584535631409840, 0.407630193495904130, 0.407675850341322920, 0.407721506167552150, +0.407767160974477960, 0.407812814761985500, 0.407858467529960970, 0.407904119278290290, 0.407949770006859720, 0.407995419715554310, 0.408041068404260350, 0.408086716072863730, +0.408132362721250750, 0.408178008349306400, 0.408223652956917090, 0.408269296543968980, 0.408314939110347270, 0.408360580655938220, 0.408406221180627750, 0.408451860684302060, +0.408497499166846360, 0.408543136628146900, 0.408588773068089610, 0.408634408486560740, 0.408680042883445500, 0.408725676258630100, 0.408771308612000560, 0.408816939943443150, +0.408862570252842950, 0.408908199540086390, 0.408953827805059290, 0.408999455047648010, 0.409045081267737700, 0.409090706465214670, 0.409136330639965300, 0.409181953791874720, +0.409227575920829200, 0.409273197026714770, 0.409318817109417750, 0.409364436168823340, 0.409410054204817800, 0.409455671217287100, 0.409501287206117610, 0.409546902171194550, +0.409592516112404210, 0.409638129029632590, 0.409683740922766050, 0.409729351791689730, 0.409774961636290070, 0.409820570456452980, 0.409866178252064840, 0.409911785023010900, +0.409957390769177480, 0.410002995490450990, 0.410048599186716600, 0.410094201857860720, 0.410139803503769330, 0.410185404124328860, 0.410231003719424450, 0.410276602288942530, +0.410322199832769070, 0.410367796350790570, 0.410413391842892160, 0.410458986308960270, 0.410504579748880940, 0.410550172162540530, 0.410595763549824300, 0.410641353910618680, +0.410686943244809640, 0.410732531552283620, 0.410778118832925920, 0.410823705086622910, 0.410869290313261030, 0.410914874512725570, 0.410960457684902860, 0.411006039829679040, +0.411051620946940530, 0.411097201036572550, 0.411142780098461560, 0.411188358132493600, 0.411233935138555220, 0.411279511116531550, 0.411325086066309080, 0.411370659987773950, +0.411416232880812530, 0.411461804745310130, 0.411507375581153250, 0.411552945388227900, 0.411598514166420570, 0.411644081915616580, 0.411689648635702400, 0.411735214326564070, +0.411780778988088130, 0.411826342620159820, 0.411871905222665700, 0.411917466795492180, 0.411963027338524580, 0.412008586851649430, 0.412054145334752820, 0.412099702787721230, +0.412145259210439980, 0.412190814602795610, 0.412236368964674190, 0.412281922295962280, 0.412327474596545120, 0.412373025866309250, 0.412418576105140880, 0.412464125312926420, +0.412509673489551250, 0.412555220634901960, 0.412600766748864530, 0.412646311831325660, 0.412691855882170560, 0.412737398901285860, 0.412782940888558050, 0.412828481843872440, +0.412874021767115680, 0.412919560658173870, 0.412965098516933530, 0.413010635343280030, 0.413056171137099970, 0.413101705898279490, 0.413147239626705130, 0.413192772322262260, +0.413238303984837460, 0.413283834614316890, 0.413329364210587190, 0.413374892773533620, 0.413420420303042880, 0.413465946799001060, 0.413511472261294750, 0.413556996689809390, +0.413602520084431490, 0.413648042445047710, 0.413693563771543480, 0.413739084063805270, 0.413784603321719400, 0.413830121545172400, 0.413875638734049700, 0.413921154888237890, +0.413966670007623220, 0.414012184092092230, 0.414057697141530400, 0.414103209155824380, 0.414148720134860260, 0.414194230078524790, 0.414239738986703300, 0.414285246859282530, +0.414330753696148580, 0.414376259497188200, 0.414421764262286720, 0.414467267991330880, 0.414512770684206830, 0.414558272340801230, 0.414603772960999590, 0.414649272544688530, +0.414694771091754680, 0.414740268602083460, 0.414785765075561640, 0.414831260512075360, 0.414876754911511330, 0.414922248273755010, 0.414967740598693120, 0.415013231886211810, +0.415058722136197880, 0.415104211348536700, 0.415149699523114980, 0.415195186659819080, 0.415240672758535550, 0.415286157819149960, 0.415331641841548970, 0.415377124825618890, +0.415422606771246370, 0.415468087678317000, 0.415513567546717310, 0.415559046376334170, 0.415604524167053010, 0.415650000918760530, 0.415695476631343040, 0.415740951304687300, +0.415786424938678730, 0.415831897533204100, 0.415877369088149760, 0.415922839603402370, 0.415968309078847520, 0.416013777514371850, 0.416059244909861740, 0.416104711265203930, +0.416150176580283970, 0.416195640854988560, 0.416241104089204010, 0.416286566282817130, 0.416332027435713400, 0.416377487547779650, 0.416422946618902560, 0.416468404648967670, +0.416513861637861800, 0.416559317585471320, 0.416604772491682870, 0.416650226356382160, 0.416695679179455820, 0.416741130960790300, 0.416786581700272380, 0.416832031397787570, +0.416877480053222730, 0.416922927666464160, 0.416968374237398690, 0.417013819765911840, 0.417059264251890440, 0.417104707695220960, 0.417150150095790040, 0.417195591453483340, +0.417241031768187720, 0.417286471039789890, 0.417331909268175430, 0.417377346453231270, 0.417422782594843720, 0.417468217692899600, 0.417513651747284550, 0.417559084757885390, +0.417604516724588480, 0.417649947647280690, 0.417695377525847620, 0.417740806360176130, 0.417786234150152650, 0.417831660895663930, 0.417877086596595670, 0.417922511252834690, +0.417967934864267480, 0.418013357430780770, 0.418058778952260290, 0.418104199428592890, 0.418149618859664950, 0.418195037245363390, 0.418240454585573850, 0.418285870880183150, +0.418331286129078160, 0.418376700332144580, 0.418422113489269280, 0.418467525600338620, 0.418512936665239590, 0.418558346683857830, 0.418603755656080160, 0.418649163581793160, +0.418694570460883600, 0.418739976293237230, 0.418785381078740910, 0.418830784817281140, 0.418876187508744830, 0.418921589153017640, 0.418966989749986470, 0.419012389299537880, +0.419057787801558670, 0.419103185255934540, 0.419148581662552530, 0.419193977021299400, 0.419239371332060960, 0.419284764594724140, 0.419330156809175350, 0.419375547975301580, +0.419420938092988530, 0.419466327162123120, 0.419511715182591950, 0.419557102154281880, 0.419602488077078620, 0.419647872950869140, 0.419693256775539980, 0.419738639550978120, +0.419784021277069210, 0.419829401953700280, 0.419874781580757810, 0.419920160158128830, 0.419965537685699050, 0.420010914163355400, 0.420056289590984840, 0.420101663968473200, +0.420147037295707400, 0.420192409572573980, 0.420237780798959960, 0.420283150974751110, 0.420328520099834350, 0.420373888174096270, 0.420419255197423900, 0.420464621169702960, +0.420509986090820520, 0.420555349960663070, 0.420600712779117650, 0.420646074546070060, 0.420691435261407290, 0.420736794925015920, 0.420782153536783000, 0.420827511096594220, +0.420872867604336730, 0.420918223059897070, 0.420963577463162210, 0.421008930814018020, 0.421054283112351550, 0.421099634358049700, 0.421144984550998410, 0.421190333691084660, +0.421235681778195040, 0.421281028812216630, 0.421326374793035250, 0.421371719720537940, 0.421417063594611340, 0.421462406415142490, 0.421507748182017190, 0.421553088895122550, +0.421598428554345150, 0.421643767159572140, 0.421689104710689270, 0.421734441207583630, 0.421779776650141880, 0.421825111038251150, 0.421870444371797160, 0.421915776650667150, +0.421961107874748000, 0.422006438043925740, 0.422051767158087400, 0.422097095217119630, 0.422142422220909470, 0.422187748169342900, 0.422233073062306950, 0.422278396899688320, +0.422323719681374110, 0.422369041407250180, 0.422414362077203680, 0.422459681691121250, 0.422505000248890040, 0.422550317750395870, 0.422595634195525980, 0.422640949584166980, +0.422686263916205950, 0.422731577191528930, 0.422776889410022950, 0.422822200571575100, 0.422867510676071420, 0.422912819723398950, 0.422958127713444380, 0.423003434646094910, +0.423048740521236480, 0.423094045338756220, 0.423139349098540780, 0.423184651800477430, 0.423229953444452020, 0.423275254030351710, 0.423320553558063310, 0.423365852027473900, +0.423411149438469410, 0.423456445790937110, 0.423501741084763680, 0.423547035319836280, 0.423592328496040950, 0.423637620613264760, 0.423682911671394940, 0.423728201670317380, +0.423773490609919370, 0.423818778490087640, 0.423864065310709300, 0.423909351071670440, 0.423954635772858250, 0.423999919414159380, 0.424045201995461200, 0.424090483516649570, +0.424135763977611710, 0.424181043378234480, 0.424226321718405020, 0.424271598998009370, 0.424316875216934670, 0.424362150375067860, 0.424407424472296010, 0.424452697508505230, +0.424497969483582700, 0.424543240397415260, 0.424588510249890140, 0.424633779040893280, 0.424679046770312040, 0.424724313438033520, 0.424769579043943860, 0.424814843587930260, +0.424860107069879530, 0.424905369489678940, 0.424950630847214520, 0.424995891142373520, 0.425041150375042810, 0.425086408545109600, 0.425131665652459970, 0.425176921696981180, +0.425222176678560100, 0.425267430597083940, 0.425312683452438830, 0.425357935244512040, 0.425403185973190380, 0.425448435638361160, 0.425493684239910460, 0.425538931777725560, +0.425584178251693700, 0.425629423661701030, 0.425674668007634760, 0.425719911289381860, 0.425765153506829530, 0.425810394659863980, 0.425855634748372400, 0.425900873772241730, +0.425946111731359320, 0.425991348625611170, 0.426036584454884680, 0.426081819219066740, 0.426127052918044650, 0.426172285551704500, 0.426217517119933660, 0.426262747622619060, +0.426307977059647960, 0.426353205430906490, 0.426398432736282030, 0.426443658975661890, 0.426488884148932210, 0.426534108255980320, 0.426579331296693120, 0.426624553270958050, +0.426669774178661140, 0.426714994019689820, 0.426760212793931000, 0.426805430501272120, 0.426850647141599200, 0.426895862714799680, 0.426941077220760470, 0.426986290659368990, +0.427031503030511410, 0.427076714334075010, 0.427121924569946910, 0.427167133738014350, 0.427212341838163530, 0.427257548870281890, 0.427302754834256390, 0.427347959729974360, +0.427393163557322100, 0.427438366316186870, 0.427483568006456150, 0.427528768628016090, 0.427573968180754100, 0.427619166664557240, 0.427664364079312850, 0.427709560424907100, +0.427754755701227510, 0.427799949908161000, 0.427845143045595010, 0.427890335113415790, 0.427935526111510700, 0.427980716039766840, 0.428025904898071520, 0.428071092686311110, +0.428116279404372910, 0.428161465052144030, 0.428206649629511940, 0.428251833136362780, 0.428297015572584040, 0.428342196938063140, 0.428387377232686380, 0.428432556456341150, +0.428477734608914530, 0.428522911690293990, 0.428568087700365810, 0.428613262639017330, 0.428658436506135780, 0.428703609301608450, 0.428748781025321770, 0.428793951677163110, +0.428839121257019560, 0.428884289764778600, 0.428929457200326550, 0.428974623563550820, 0.429019788854338560, 0.429064953072577250, 0.429110116218153090, 0.429155278290953680, +0.429200439290866490, 0.429245599217777770, 0.429290758071575070, 0.429335915852145480, 0.429381072559376460, 0.429426228193154400, 0.429471382753366770, 0.429516536239900660, +0.429561688652643660, 0.429606839991481970, 0.429651990256303180, 0.429697139446994500, 0.429742287563443290, 0.429787434605535980, 0.429832580573160090, 0.429877725466202790, +0.429922869284551530, 0.429968012028092710, 0.430013153696713830, 0.430058294290302510, 0.430103433808744990, 0.430148572251928930, 0.430193709619741460, 0.430238845912070120, +0.430283981128801230, 0.430329115269822370, 0.430374248335020800, 0.430419380324283950, 0.430464511237498240, 0.430509641074551250, 0.430554769835330200, 0.430599897519722610, +0.430645024127614850, 0.430690149658894570, 0.430735274113448920, 0.430780397491165420, 0.430825519791930620, 0.430870641015631940, 0.430915761162156690, 0.430960880231392450, +0.431005998223225610, 0.431051115137543740, 0.431096230974234500, 0.431141345733184300, 0.431186459414280690, 0.431231572017410970, 0.431276683542462740, 0.431321793989322360, +0.431366903357877470, 0.431412011648015400, 0.431457118859623620, 0.431502224992588720, 0.431547330046798240, 0.431592434022139370, 0.431637536918499880, 0.431682638735766120, +0.431727739473825810, 0.431772839132566090, 0.431817937711874710, 0.431863035211638050, 0.431908131631743850, 0.431953226972079720, 0.431998321232532070, 0.432043414412988660, +0.432088506513336690, 0.432133597533463860, 0.432178687473256660, 0.432223776332602730, 0.432268864111389320, 0.432313950809504190, 0.432359036426833760, 0.432404120963265800, +0.432449204418687510, 0.432494286792986570, 0.432539368086049540, 0.432584448297764050, 0.432629527428017470, 0.432674605476697500, 0.432719682443690580, 0.432764758328884500, +0.432809833132166870, 0.432854906853424260, 0.432899979492544440, 0.432945051049414610, 0.432990121523922580, 0.433035190915954830, 0.433080259225399110, 0.433125326452142740, +0.433170392596073480, 0.433215457657077810, 0.433260521635043530, 0.433305584529857900, 0.433350646341408740, 0.433395707069582580, 0.433440766714267120, 0.433485825275349730, +0.433530882752718230, 0.433575939146259080, 0.433620994455860110, 0.433666048681408620, 0.433711101822792430, 0.433756153879898080, 0.433801204852613360, 0.433846254740826000, +0.433891303544422620, 0.433936351263291000, 0.433981397897318490, 0.434026443446392850, 0.434071487910400730, 0.434116531289229890, 0.434161573582767750, 0.434206614790902060, +0.434251654913519410, 0.434296693950507630, 0.434341731901754120, 0.434386768767146660, 0.434431804546571930, 0.434476839239917640, 0.434521872847071280, 0.434566905367920640, +0.434611936802352330, 0.434656967150254150, 0.434701996411513970, 0.434747024586018440, 0.434792051673655310, 0.434837077674312010, 0.434882102587876460, 0.434927126414235250, +0.434972149153276260, 0.435017170804886890, 0.435062191368954960, 0.435107210845367130, 0.435152229234011310, 0.435197246534774930, 0.435242262747545790, 0.435287277872210670, +0.435332291908657300, 0.435377304856773170, 0.435422316716446210, 0.435467327487563060, 0.435512337170011590, 0.435557345763679720, 0.435602353268454030, 0.435647359684222470, +0.435692365010872500, 0.435737369248292040, 0.435782372396367750, 0.435827374454987540, 0.435872375424038890, 0.435917375303409680, 0.435962374092986660, 0.436007371792657690, +0.436052368402310260, 0.436097363921832350, 0.436142358351110650, 0.436187351690032980, 0.436232343938486980, 0.436277335096360520, 0.436322325163540300, 0.436367314139914310, +0.436412302025370400, 0.436457288819795340, 0.436502274523077110, 0.436547259135103120, 0.436592242655761410, 0.436637225084938680, 0.436682206422522920, 0.436727186668401660, +0.436772165822462750, 0.436817143884593080, 0.436862120854680570, 0.436907096732612740, 0.436952071518277580, 0.436997045211561800, 0.437042017812353410, 0.437086989320540020, +0.437131959736009550, 0.437176929058648740, 0.437221897288345650, 0.437266864424987800, 0.437311830468463170, 0.437356795418658570, 0.437401759275462040, 0.437446722038761450, +0.437491683708443660, 0.437536644284396700, 0.437581603766508060, 0.437626562154665890, 0.437671519448756870, 0.437716475648669060, 0.437761430754290030, 0.437806384765507870, +0.437851337682209350, 0.437896289504282440, 0.437941240231614850, 0.437986189864094540, 0.438031138401608340, 0.438076085844044340, 0.438121032191290120, 0.438165977443233660, +0.438210921599761940, 0.438255864660762830, 0.438300806626124530, 0.438345747495733800, 0.438390687269478660, 0.438435625947246830, 0.438480563528926340, 0.438525500014404050, +0.438570435403567990, 0.438615369696305820, 0.438660302892505680, 0.438705234992054330, 0.438750165994839900, 0.438795095900750110, 0.438840024709672930, 0.438884952421495280, +0.438929879036105310, 0.438974804553390610, 0.439019728973239260, 0.439064652295538260, 0.439109574520175570, 0.439154495647039340, 0.439199415676016500, 0.439244334606995130, +0.439289252439862890, 0.439334169174507960, 0.439379084810817170, 0.439423999348678710, 0.439468912787980230, 0.439513825128609870, 0.439558736370454510, 0.439603646513402340, +0.439648555557341060, 0.439693463502158820, 0.439738370347742490, 0.439783276093980210, 0.439828180740759740, 0.439873084287969280, 0.439917986735495650, 0.439962888083227090, +0.440007788331051310, 0.440052687478856400, 0.440097585526529440, 0.440142482473958490, 0.440187378321031720, 0.440232273067636130, 0.440277166713659850, 0.440322059258990650, +0.440366950703516720, 0.440411841047125000, 0.440456730289703670, 0.440501618431140500, 0.440546505471323730, 0.440591391410140250, 0.440636276247478310, 0.440681159983225660, +0.440726042617270550, 0.440770924149499920, 0.440815804579801960, 0.440860683908064540, 0.440905562134175750, 0.440950439258022690, 0.440995315279493540, 0.441040190198476460, +0.441085064014858530, 0.441129936728527900, 0.441174808339372500, 0.441219678847280420, 0.441264548252138790, 0.441309416553835760, 0.441354283752259210, 0.441399149847297330, +0.441444014838837160, 0.441488878726767010, 0.441533741510974630, 0.441578603191348280, 0.441623463767775060, 0.441668323240143160, 0.441713181608340440, 0.441758038872255180, +0.441802895031774390, 0.441847750086786450, 0.441892604037179450, 0.441937456882840580, 0.441982308623658060, 0.442027159259519740, 0.442072008790313940, 0.442116857215927750, +0.442161704536249370, 0.442206550751166770, 0.442251395860568160, 0.442296239864340690, 0.442341082762372610, 0.442385924554551830, 0.442430765240766630, 0.442475604820904090, +0.442520443294852570, 0.442565280662499950, 0.442610116923734530, 0.442654952078443350, 0.442699786126514890, 0.442744619067837300, 0.442789450902297770, 0.442834281629784610, +0.442879111250185750, 0.442923939763389560, 0.442968767169283070, 0.443013593467754650, 0.443058418658692280, 0.443103242741984260, 0.443148065717517750, 0.443192887585181050, +0.443237708344862150, 0.443282527996449350, 0.443327346539829860, 0.443372163974891990, 0.443416980301523660, 0.443461795519613340, 0.443506609629048140, 0.443551422629716360, +0.443596234521506090, 0.443641045304305590, 0.443685854978002110, 0.443730663542483970, 0.443775470997639590, 0.443820277343356110, 0.443865082579521950, 0.443909886706025050, +0.443954689722753870, 0.443999491629595570, 0.444044292426438500, 0.444089092113170770, 0.444133890689680620, 0.444178688155855430, 0.444223484511583440, 0.444268279756752820, +0.444313073891251850, 0.444357866914967810, 0.444402658827789070, 0.444447449629603750, 0.444492239320300130, 0.444537027899765570, 0.444581815367888430, 0.444626601724557150, +0.444671386969658970, 0.444716171103082260, 0.444760954124715220, 0.444805736034446120, 0.444850516832162310, 0.444895296517752230, 0.444940075091103890, 0.444984852552105740, +0.445029628900645070, 0.445074404136610370, 0.445119178259889610, 0.445163951270371280, 0.445208723167942740, 0.445253493952492360, 0.445298263623908230, 0.445343032182078880, +0.445387799626891510, 0.445432565958234660, 0.445477331175996800, 0.445522095280065260, 0.445566858270328380, 0.445611620146674440, 0.445656380908991790, 0.445701140557167810, +0.445745899091091020, 0.445790656510649420, 0.445835412815731640, 0.445880168006224880, 0.445924922082017670, 0.445969675042998230, 0.446014426889054960, 0.446059177620075240, +0.446103927235947550, 0.446148675736560090, 0.446193423121801320, 0.446238169391558580, 0.446282914545720390, 0.446327658584174950, 0.446372401506810790, 0.446417143313515170, +0.446461884004176750, 0.446506623578683980, 0.446551362036924250, 0.446596099378786140, 0.446640835604157740, 0.446685570712927690, 0.446730304704983320, 0.446775037580213140, +0.446819769338505420, 0.446864499979748640, 0.446909229503830220, 0.446953957910638740, 0.446998685200062360, 0.447043411371989610, 0.447088136426308010, 0.447132860362906060, +0.447177583181671940, 0.447222304882494260, 0.447267025465260430, 0.447311744929859030, 0.447356463276178620, 0.447401180504106710, 0.447445896613531850, 0.447490611604342230, +0.447535325476426490, 0.447580038229672020, 0.447624749863967500, 0.447669460379201080, 0.447714169775261410, 0.447758878052035900, 0.447803585209413210, 0.447848291247281540, +0.447892996165529580, 0.447937699964044640, 0.447982402642715550, 0.448027104201430440, 0.448071804640077900, 0.448116503958545520, 0.448161202156721840, 0.448205899234495610, +0.448250595191754140, 0.448295290028386250, 0.448339983744280140, 0.448384676339324440, 0.448429367813406700, 0.448474058166415500, 0.448518747398239160, 0.448563435508766320, +0.448608122497884510, 0.448652808365482440, 0.448697493111448300, 0.448742176735670850, 0.448786859238037520, 0.448831540618437110, 0.448876220876757770, 0.448920900012888310, +0.448965578026716220, 0.449010254918130180, 0.449054930687018520, 0.449099605333269870, 0.449144278856771880, 0.449188951257413150, 0.449233622535082420, 0.449278292689667290, +0.449322961721056400, 0.449367629629138120, 0.449412296413801150, 0.449456962074933020, 0.449501626612422540, 0.449546290026157980, 0.449590952316028080, 0.449635613481920380, +0.449680273523723640, 0.449724932441326270, 0.449769590234616930, 0.449814246903483210, 0.449858902447813900, 0.449903556867497330, 0.449948210162422260, 0.449992862332476260, +0.450037513377548100, 0.450082163297526590, 0.450126812092299270, 0.450171459761754880, 0.450216106305781850, 0.450260751724268990, 0.450305396017103790, 0.450350039184175150, +0.450394681225371410, 0.450439322140581360, 0.450483961929692590, 0.450528600592593920, 0.450573238129173770, 0.450617874539320900, 0.450662509822922940, 0.450707143979868720, +0.450751777010046650, 0.450796408913345490, 0.450841039689652940, 0.450885669338857820, 0.450930297860848930, 0.450974925255513860, 0.451019551522741480, 0.451064176662420210, +0.451108800674438930, 0.451153423558685210, 0.451198045315047980, 0.451242665943415610, 0.451287285443676970, 0.451331903815719690, 0.451376521059432710, 0.451421137174704390, +0.451465752161423650, 0.451510366019478140, 0.451554978748756660, 0.451599590349147760, 0.451644200820540300, 0.451688810162821920, 0.451733418375881550, 0.451778025459607990, +0.451822631413889010, 0.451867236238613410, 0.451911839933669730, 0.451956442498946900, 0.452001043934332490, 0.452045644239715490, 0.452090243414984440, 0.452134841460028080, +0.452179438374734290, 0.452224034158991870, 0.452268628812689420, 0.452313222335715750, 0.452357814727958610, 0.452402405989306980, 0.452446996119649280, 0.452491585118874550, +0.452536172986870430, 0.452580759723525850, 0.452625345328729390, 0.452669929802369970, 0.452714513144335360, 0.452759095354514420, 0.452803676432796180, 0.452848256379068340, +0.452892835193219820, 0.452937412875139220, 0.452981989424715510, 0.453026564841836450, 0.453071139126390960, 0.453115712278267580, 0.453160284297355390, 0.453204855183542030, +0.453249424936716550, 0.453293993556767530, 0.453338561043583890, 0.453383127397053500, 0.453427692617065230, 0.453472256703507770, 0.453516819656270050, 0.453561381475239890, +0.453605942160306250, 0.453650501711358180, 0.453695060128283480, 0.453739617410971070, 0.453784173559309670, 0.453828728573188230, 0.453873282452494530, 0.453917835197117650, +0.453962386806946230, 0.454006937281869190, 0.454051486621774410, 0.454096034826550920, 0.454140581896087300, 0.454185127830272710, 0.454229672628994830, 0.454274216292142820, +0.454318758819605210, 0.454363300211271140, 0.454407840467028420, 0.454452379586766100, 0.454496917570373250, 0.454541454417737630, 0.454585990128748450, 0.454630524703294290, +0.454675058141264190, 0.454719590442546060, 0.454764121607028950, 0.454808651634601550, 0.454853180525152890, 0.454897708278570900, 0.454942234894744610, 0.454986760373562780, +0.455031284714914440, 0.455075807918687460, 0.455120329984770980, 0.455164850913053700, 0.455209370703424650, 0.455253889355771770, 0.455298406869984180, 0.455342923245950600, +0.455387438483560110, 0.455431952582700580, 0.455476465543261210, 0.455520977365131030, 0.455565488048198080, 0.455609997592351320, 0.455654505997479640, 0.455699013263472060, +0.455743519390216570, 0.455788024377602240, 0.455832528225517900, 0.455877030933852620, 0.455921532502494340, 0.455966032931332250, 0.456010532220255120, 0.456055030369151960, +0.456099527377910930, 0.456144023246421000, 0.456188517974571050, 0.456233011562250210, 0.456277504009346410, 0.456321995315748910, 0.456366485481346780, 0.456410974506028020, +0.456455462389681820, 0.456499949132196990, 0.456544434733462730, 0.456588919193366920, 0.456633402511798850, 0.456677884688647230, 0.456722365723801320, 0.456766845617149090, +0.456811324368579800, 0.456855801977982150, 0.456900278445245390, 0.456944753770257510, 0.456989227952907810, 0.457033700993084990, 0.457078172890678370, 0.457122643645575870, +0.457167113257666790, 0.457211581726840290, 0.457256049052984450, 0.457300515235988530, 0.457344980275741280, 0.457389444172132010, 0.457433906925048710, 0.457478368534380620, +0.457522829000016620, 0.457567288321845960, 0.457611746499756670, 0.457656203533638060, 0.457700659423378900, 0.457745114168868480, 0.457789567769994910, 0.457834020226647380, +0.457878471538714800, 0.457922921706086510, 0.457967370728650460, 0.458011818606295970, 0.458056265338912360, 0.458100710926387660, 0.458145155368611220, 0.458189598665471880, +0.458234040816858920, 0.458278481822660510, 0.458322921682765840, 0.458367360397063940, 0.458411797965443960, 0.458456234387794090, 0.458500669664003660, 0.458545103793961570, +0.458589536777557090, 0.458633968614678420, 0.458678399305214760, 0.458722828849055130, 0.458767257246088860, 0.458811684496204020, 0.458856110599289990, 0.458900535555235630, +0.458944959363930370, 0.458989382025262290, 0.459033803539120820, 0.459078223905395160, 0.459122643123973610, 0.459167061194745370, 0.459211478117599550, 0.459255893892425380, +0.459300308519111130, 0.459344721997546060, 0.459389134327619240, 0.459433545509219940, 0.459477955542236360, 0.459522364426557920, 0.459566772162073590, 0.459611178748672690, +0.459655584186243470, 0.459699988474675300, 0.459744391613857160, 0.459788793603678410, 0.459833194444027260, 0.459877594134793180, 0.459921992675865480, 0.459966390067132410, +0.460010786308483350, 0.460055181399807330, 0.460099575340993770, 0.460143968131930870, 0.460188359772508050, 0.460232750262614340, 0.460277139602139120, 0.460321527790970690, +0.460365914828998410, 0.460410300716111330, 0.460454685452198920, 0.460499069037149430, 0.460543451470852240, 0.460587832753196420, 0.460632212884071410, 0.460676591863365460, +0.460720969690968040, 0.460765346366768640, 0.460809721890655390, 0.460854096262517890, 0.460898469482245170, 0.460942841549726650, 0.460987212464850580, 0.461031582227506560, +0.461075950837583510, 0.461120318294971020, 0.461164684599557340, 0.461209049751231950, 0.461253413749883930, 0.461297776595402780, 0.461342138287676780, 0.461386498826595440, +0.461430858212047880, 0.461475216443923530, 0.461519573522110760, 0.461563929446499040, 0.461608284216977530, 0.461652637833435690, 0.461696990295761830, 0.461741341603845560, +0.461785691757576280, 0.461830040756842360, 0.461874388601533400, 0.461918735291538430, 0.461963080826747030, 0.462007425207047520, 0.462051768432329420, 0.462096110502481950, +0.462140451417394570, 0.462184791176955710, 0.462229129781054790, 0.462273467229581130, 0.462317803522424130, 0.462362138659472290, 0.462406472640615070, 0.462450805465741690, +0.462495137134741660, 0.462539467647503420, 0.462583797003916500, 0.462628125203870480, 0.462672452247253730, 0.462716778133955840, 0.462761102863866070, 0.462805426436873890, +0.462849748852867780, 0.462894070111737280, 0.462938390213371580, 0.462982709157660320, 0.463027026944491940, 0.463071343573755900, 0.463115659045341580, 0.463159973359138500, +0.463204286515035040, 0.463248598512920880, 0.463292909352685240, 0.463337219034217760, 0.463381527557406800, 0.463425834922142010, 0.463470141128313030, 0.463514446175808340, +0.463558750064517470, 0.463603052794329780, 0.463647354365134820, 0.463691654776821120, 0.463735954029278250, 0.463780252122395490, 0.463824549056062520, 0.463868844830167770, +0.463913139444600890, 0.463957432899251180, 0.464001725194008290, 0.464046016328760690, 0.464090306303398040, 0.464134595117809630, 0.464178882771885130, 0.464223169265512990, +0.464267454598582980, 0.464311738770984690, 0.464356021782606710, 0.464400303633338620, 0.464444584323069790, 0.464488863851689910, 0.464533142219087480, 0.464577419425152180, +0.464621695469773330, 0.464665970352840630, 0.464710244074242610, 0.464754516633869020, 0.464798788031609070, 0.464843058267352620, 0.464887327340988090, 0.464931595252405240, +0.464975862001493380, 0.465020127588142260, 0.465064392012240480, 0.465108655273677670, 0.465152917372343270, 0.465197178308126960, 0.465241438080917280, 0.465285696690603990, +0.465329954137076900, 0.465374210420224530, 0.465418465539936600, 0.465462719496102520, 0.465506972288612040, 0.465551223917353760, 0.465595474382217380, 0.465639723683092310, +0.465683971819868370, 0.465728218792434090, 0.465772464600679230, 0.465816709244493250, 0.465860952723765880, 0.465905195038385730, 0.465949436188242580, 0.465993676173225850, +0.466037914993225330, 0.466082152648129630, 0.466126389137828560, 0.466170624462211860, 0.466214858621168240, 0.466259091614587510, 0.466303323442358970, 0.466347554104372560, +0.466391783600516860, 0.466436011930681740, 0.466480239094756550, 0.466524465092631180, 0.466568689924194260, 0.466612913589335600, 0.466657136087944620, 0.466701357419911260, +0.466745577585124080, 0.466789796583472970, 0.466834014414847340, 0.466878231079137060, 0.466922446576230830, 0.466966660906018520, 0.467010874068389930, 0.467055086063233700, +0.467099296890439830, 0.467143506549897670, 0.467187715041497200, 0.467231922365127010, 0.467276128520677010, 0.467320333508036700, 0.467364537327095930, 0.467408739977743400, +0.467452941459869100, 0.467497141773362380, 0.467541340918113220, 0.467585538894010330, 0.467629735700943570, 0.467673931338802470, 0.467718125807476960, 0.467762319106855730, +0.467806511236828700, 0.467850702197285420, 0.467894891988115740, 0.467939080609208410, 0.467983268060453430, 0.468027454341740650, 0.468071639452958880, 0.468115823393997990, +0.468160006164747510, 0.468204187765097420, 0.468248368194936480, 0.468292547454154660, 0.468336725542641390, 0.468380902460286740, 0.468425078206979480, 0.468469252782609480, +0.468513426187066370, 0.468557598420240030, 0.468601769482019370, 0.468645939372294260, 0.468690108090954290, 0.468734275637889440, 0.468778442012988570, 0.468822607216141550, +0.468866771247238360, 0.468910934106167910, 0.468955095792820130, 0.468999256307084560, 0.469043415648851270, 0.469087573818009030, 0.469131730814447920, 0.469175886638057430, +0.469220041288727630, 0.469264194766347340, 0.469308347070806540, 0.469352498201994870, 0.469396648159802370, 0.469440796944117830, 0.469484944554831360, 0.469529090991832490, +0.469573236255011240, 0.469617380344256540, 0.469661523259458420, 0.469705665000506870, 0.469749805567290730, 0.469793944959700120, 0.469838083177624650, 0.469882220220954330, +0.469926356089578110, 0.469970490783385930, 0.470014624302267590, 0.470058756646113070, 0.470102887814811240, 0.470147017808252190, 0.470191146626325660, 0.470235274268921590, +0.470279400735928940, 0.470323526027237810, 0.470367650142737900, 0.470411773082319180, 0.470455894845870690, 0.470500015433282460, 0.470544134844444570, 0.470588253079245960, +0.470632370137576690, 0.470676486019326550, 0.470720600724385540, 0.470764714252642660, 0.470808826603987980, 0.470852937778311220, 0.470897047775502560, 0.470941156595450830, +0.470985264238046260, 0.471029370703178460, 0.471073475990737680, 0.471117580100612830, 0.471161683032694010, 0.471205784786870970, 0.471249885363033860, 0.471293984761071650, +0.471338082980874480, 0.471382180022332120, 0.471426275885334700, 0.471470370569771200, 0.471514464075531770, 0.471558556402506550, 0.471602647550584560, 0.471646737519655910, +0.471690826309610460, 0.471734913920338340, 0.471779000351728540, 0.471823085603671260, 0.471867169676056240, 0.471911252568773700, 0.471955334281712600, 0.471999414814763210, +0.472043494167815270, 0.472087572340758990, 0.472131649333483390, 0.472175725145878630, 0.472219799777834570, 0.472263873229241460, 0.472307945499988220, 0.472352016589965120, +0.472396086499062400, 0.472440155227169030, 0.472484222774175290, 0.472528289139971030, 0.472572354324446390, 0.472616418327490460, 0.472660481148993510, 0.472704542788845380, +0.472748603246936290, 0.472792662523155270, 0.472836720617392570, 0.472880777529538110, 0.472924833259482090, 0.472968887807113600, 0.473012941172322900, 0.473056993354999840, +0.473101044355034640, 0.473145094172316480, 0.473189142806735570, 0.473233190258182220, 0.473277236526545520, 0.473321281611715660, 0.473365325513582680, 0.473409368232036720, +0.473453409766966930, 0.473497450118263660, 0.473541489285816740, 0.473585527269516530, 0.473629564069252050, 0.473673599684913740, 0.473717634116391340, 0.473761667363575280, +0.473805699426354700, 0.473849730304619850, 0.473893759998260670, 0.473937788507167450, 0.473981815831229390, 0.474025841970336810, 0.474069866924379580, 0.474113890693248110, +0.474157913276831540, 0.474201934675020140, 0.474245954887704320, 0.474289973914773230, 0.474333991756117180, 0.474378008411626200, 0.474422023881190540, 0.474466038164699460, +0.474510051262043260, 0.474554063173111940, 0.474598073897795850, 0.474642083435984190, 0.474686091787567320, 0.474730098952435230, 0.474774104930478280, 0.474818109721585670, +0.474862113325647820, 0.474906115742554650, 0.474950116972196580, 0.474994117014462810, 0.475038115869243830, 0.475082113536429870, 0.475126110015910260, 0.475170105307575360, +0.475214099411315210, 0.475258092327020210, 0.475302084054579580, 0.475346074593883780, 0.475390063944822750, 0.475434052107286950, 0.475478039081165650, 0.475522024866349200, +0.475566009462727760, 0.475609992870191680, 0.475653975088630170, 0.475697956117933750, 0.475741935957992470, 0.475785914608696680, 0.475829892069935760, 0.475873868341600110, +0.475917843423580180, 0.475961817315765260, 0.476005790018045770, 0.476049761530311810, 0.476093731852453850, 0.476137700984361150, 0.476181668925924170, 0.476225635677033080, +0.476269601237578280, 0.476313565607449090, 0.476357528786535980, 0.476401490774728990, 0.476445451571918750, 0.476489411177994430, 0.476533369592846650, 0.476577326816365390, +0.476621282848441190, 0.476665237688963410, 0.476709191337822580, 0.476753143794909070, 0.476797095060112420, 0.476841045133322980, 0.476884994014430910, 0.476928941703326780, +0.476972888199899860, 0.477016833504040780, 0.477060777615639590, 0.477104720534586800, 0.477148662260771850, 0.477192602794085260, 0.477236542134417190, 0.477280480281658090, +0.477324417235697460, 0.477368352996425770, 0.477412287563733160, 0.477456220937510280, 0.477500153117646430, 0.477544084104032150, 0.477588013896557750, 0.477631942495113650, +0.477675869899589320, 0.477719796109875310, 0.477763721125862180, 0.477807644947439380, 0.477851567574497430, 0.477895489006926630, 0.477939409244617470, 0.477983328287459370, +0.478027246135342980, 0.478071162788158480, 0.478115078245796410, 0.478158992508146310, 0.478202905575098700, 0.478246817446543850, 0.478290728122372330, 0.478334637602473630, +0.478378545886738280, 0.478422452975056590, 0.478466358867319200, 0.478510263563415470, 0.478554167063236110, 0.478598069366671710, 0.478641970473611730, 0.478685870383946830, +0.478729769097567260, 0.478773666614363710, 0.478817562934225560, 0.478861458057043500, 0.478905351982707780, 0.478949244711109060, 0.478993136242136910, 0.479037026575681870, +0.479080915711634250, 0.479124803649884750, 0.479168690390322840, 0.479212575932839220, 0.479256460277324160, 0.479300343423668340, 0.479344225371761250, 0.479388106121493630, +0.479431985672756130, 0.479475864025438240, 0.479519741179430690, 0.479563617134623810, 0.479607491890908290, 0.479651365448173660, 0.479695237806310570, 0.479739108965209440, +0.479782978924760910, 0.479826847684854510, 0.479870715245381000, 0.479914581606230740, 0.479958446767294380, 0.480002310728461560, 0.480046173489622920, 0.480090035050668830, +0.480133895411490100, 0.480177754571976200, 0.480221612532017890, 0.480265469291505600, 0.480309324850330010, 0.480353179208380720, 0.480397032365548480, 0.480440884321724050, +0.480484735076797010, 0.480528584630658120, 0.480572432983197790, 0.480616280134306790, 0.480660126083874650, 0.480703970831792230, 0.480747814377949890, 0.480791656722238390, +0.480835497864547380, 0.480879337804767600, 0.480923176542789490, 0.480967014078503790, 0.481010850411800190, 0.481054685542569470, 0.481098519470702040, 0.481142352196088700, +0.481186183718619100, 0.481230014038184000, 0.481273843154674310, 0.481317671067979570, 0.481361497777990700, 0.481405323284598060, 0.481449147587692470, 0.481492970687163680, +0.481536792582902440, 0.481580613274799230, 0.481624432762744860, 0.481668251046629030, 0.481712068126342540, 0.481755884001775940, 0.481799698672819960, 0.481843512139364380, +0.481887324401300000, 0.481931135458517290, 0.481974945310907180, 0.482018753958359300, 0.482062561400764530, 0.482106367638013730, 0.482150172669996660, 0.482193976496604120, +0.482237779117726690, 0.482281580533255150, 0.482325380743079290, 0.482369179747089980, 0.482412977545177760, 0.482456774137233420, 0.482500569523146790, 0.482544363702808730, +0.482588156676109710, 0.482631948442940770, 0.482675739003191550, 0.482719528356752970, 0.482763316503515560, 0.482807103443370240, 0.482850889176206780, 0.482894673701916130, +0.482938457020389120, 0.482982239131515670, 0.483026020035186520, 0.483069799731292380, 0.483113578219724120, 0.483157355500371530, 0.483201131573125550, 0.483244906437876760, +0.483288680094516090, 0.483332452542933280, 0.483376223783019370, 0.483419993814664940, 0.483463762637760860, 0.483507530252197000, 0.483551296657864340, 0.483595061854653400, +0.483638825842455210, 0.483682588621159590, 0.483726350190657460, 0.483770110550839460, 0.483813869701596620, 0.483857627642818640, 0.483901384374396670, 0.483945139896221570, +0.483988894208183250, 0.484032647310172700, 0.484076399202080510, 0.484120149883797760, 0.484163899355214200, 0.484207647616220930, 0.484251394666708520, 0.484295140506568020, +0.484338885135689230, 0.484382628553963300, 0.484426370761280760, 0.484470111757532680, 0.484513851542608950, 0.484557590116400590, 0.484601327478798250, 0.484645063629693010, +0.484688798568974680, 0.484732532296534350, 0.484776264812263100, 0.484819996116050810, 0.484863726207788500, 0.484907455087366880, 0.484951182754677020, 0.484994909209608800, +0.485038634452053310, 0.485082358481901290, 0.485126081299043720, 0.485169802903370530, 0.485213523294772850, 0.485257242473141390, 0.485300960438367180, 0.485344677190340190, +0.485388392728951510, 0.485432107054091900, 0.485475820165652330, 0.485519532063522830, 0.485563242747594550, 0.485606952217758510, 0.485650660473904710, 0.485694367515924260, +0.485738073343707940, 0.485781777957146780, 0.485825481356130790, 0.485869183540551090, 0.485912884510298460, 0.485956584265263950, 0.486000282805337640, 0.486043980130410610, +0.486087676240373630, 0.486131371135117840, 0.486175064814533260, 0.486218757278510990, 0.486262448526941840, 0.486306138559716940, 0.486349827376726330, 0.486393514977861150, +0.486437201363012160, 0.486480886532070560, 0.486524570484926370, 0.486568253221470740, 0.486611934741594860, 0.486655615045188780, 0.486699294132143630, 0.486742972002350280, +0.486786648655699870, 0.486830324092082490, 0.486873998311389280, 0.486917671313511050, 0.486961343098339050, 0.487005013665763260, 0.487048683015675000, 0.487092351147965010, +0.487136018062524490, 0.487179683759243590, 0.487223348238013440, 0.487267011498724980, 0.487310673541269330, 0.487354334365536600, 0.487397993971418090, 0.487441652358804930, +0.487485309527587280, 0.487528965477656340, 0.487572620208902960, 0.487616273721218460, 0.487659926014492870, 0.487703577088617500, 0.487747226943483160, 0.487790875578981150, +0.487834522995001520, 0.487878169191435620, 0.487921814168174320, 0.487965457925108810, 0.488009100462129310, 0.488052741779127050, 0.488096381875992970, 0.488140020752618310, +0.488183658408893160, 0.488227294844708890, 0.488270930059956810, 0.488314564054526950, 0.488358196828310720, 0.488401828381199000, 0.488445458713083090, 0.488489087823853140, +0.488532715713400510, 0.488576342381616070, 0.488619967828391120, 0.488663592053615870, 0.488707215057181680, 0.488750836838979460, 0.488794457398900480, 0.488838076736835050, +0.488881694852674350, 0.488925311746309430, 0.488968927417631650, 0.489012541866531150, 0.489056155092899290, 0.489099767096627390, 0.489143377877605760, 0.489186987435725640, +0.489230595770878070, 0.489274202882954420, 0.489317808771844830, 0.489361413437440720, 0.489405016879633110, 0.489448619098313330, 0.489492220093371620, 0.489535819864699350, +0.489579418412187550, 0.489623015735727530, 0.489666611835209650, 0.489710206710525230, 0.489753800361565240, 0.489797392788221210, 0.489840983990383280, 0.489884573967942880, +0.489928162720791040, 0.489971750248819230, 0.490015336551917590, 0.490058921629977660, 0.490102505482890800, 0.490146088110547270, 0.490189669512838540, 0.490233249689655650, +0.490276828640890010, 0.490320406366431930, 0.490363982866172780, 0.490407558140003700, 0.490451132187816110, 0.490494705009500320, 0.490538276604947750, 0.490581846974049500, +0.490625416116697020, 0.490668984032780590, 0.490712550722191720, 0.490756116184821510, 0.490799680420561320, 0.490843243429301580, 0.490886805210933750, 0.490930365765349260, +0.490973925092438530, 0.491017483192092930, 0.491061040064203650, 0.491104595708662110, 0.491148150125358730, 0.491191703314184990, 0.491235255275031980, 0.491278806007791170, +0.491322355512353040, 0.491365903788608950, 0.491409450836450160, 0.491452996655768080, 0.491496541246453140, 0.491540084608396880, 0.491583626741490360, 0.491627167645625200, +0.491670707320691740, 0.491714245766581460, 0.491757782983185950, 0.491801318970395640, 0.491844853728102050, 0.491888387256196270, 0.491931919554569940, 0.491975450623113430, +0.492018980461718270, 0.492062509070275660, 0.492106036448677180, 0.492149562596813190, 0.492193087514575360, 0.492236611201854750, 0.492280133658543060, 0.492323654884530560, +0.492367174879708990, 0.492410693643969500, 0.492454211177203620, 0.492497727479301820, 0.492541242550155740, 0.492584756389656540, 0.492628268997695800, 0.492671780374164040, +0.492715290518952800, 0.492758799431953720, 0.492802307113057280, 0.492845813562155070, 0.492889318779138330, 0.492932822763898660, 0.492976325516326590, 0.493019827036313640, +0.493063327323751190, 0.493106826378530760, 0.493150324200542890, 0.493193820789679220, 0.493237316145831000, 0.493280810268889870, 0.493324303158746310, 0.493367794815292030, +0.493411285238418260, 0.493454774428016610, 0.493498262383977700, 0.493541749106193080, 0.493585234594554500, 0.493628718848952490, 0.493672201869278630, 0.493715683655424290, +0.493759164207281110, 0.493802643524739630, 0.493846121607691530, 0.493889598456028140, 0.493933074069641150, 0.493976548448421090, 0.494020021592259660, 0.494063493501048170, +0.494106964174678360, 0.494150433613040730, 0.494193901816027010, 0.494237368783528530, 0.494280834515437030, 0.494324299011643040, 0.494367762272038320, 0.494411224296514570, +0.494454685084962380, 0.494498144637273480, 0.494541602953339210, 0.494585060033051300, 0.494628515876300410, 0.494671970482978170, 0.494715423852976070, 0.494758875986185730, +0.494802326882497870, 0.494845776541804170, 0.494889224963996010, 0.494932672148965190, 0.494976118096602300, 0.495019562806799100, 0.495063006279447050, 0.495106448514437800, +0.495149889511662060, 0.495193329271011620, 0.495236767792378240, 0.495280205075652570, 0.495323641120726350, 0.495367075927491070, 0.495410509495838420, 0.495453941825659160, +0.495497372916845040, 0.495540802769287470, 0.495584231382878330, 0.495627658757508190, 0.495671084893068880, 0.495714509789451860, 0.495757933446549000, 0.495801355864250890, +0.495844777042449390, 0.495888196981035980, 0.495931615679902400, 0.495975033138939430, 0.496018449358038900, 0.496061864337092210, 0.496105278075991250, 0.496148690574626740, +0.496192101832890480, 0.496235511850674380, 0.496278920627869100, 0.496322328164366500, 0.496365734460058050, 0.496409139514835730, 0.496452543328590120, 0.496495945901213150, +0.496539347232596350, 0.496582747322631520, 0.496626146171209480, 0.496669543778222090, 0.496712940143560770, 0.496756335267117540, 0.496799729148783060, 0.496843121788449300, +0.496886513186007680, 0.496929903341350230, 0.496973292254367590, 0.497016679924951690, 0.497060066352994550, 0.497103451538386810, 0.497146835481020450, 0.497190218180787010, +0.497233599637578410, 0.497276979851285380, 0.497320358821799920, 0.497363736549013610, 0.497407113032818320, 0.497450488273104840, 0.497493862269765160, 0.497537235022690870, +0.497580606531773830, 0.497623976796904840, 0.497667345817976000, 0.497710713594878730, 0.497754080127505110, 0.497797445415745890, 0.497840809459493050, 0.497884172258638570, +0.497927533813073250, 0.497970894122689130, 0.498014253187377740, 0.498057611007031160, 0.498100967581540100, 0.498144322910796690, 0.498187676994692410, 0.498231029833119340, +0.498274381425968360, 0.498317731773131380, 0.498361080874500100, 0.498404428729966430, 0.498447775339421360, 0.498491120702756860, 0.498534464819864580, 0.498577807690636480, +0.498621149314963490, 0.498664489692737580, 0.498707828823850510, 0.498751166708194250, 0.498794503345659670, 0.498837838736138790, 0.498881172879523770, 0.498924505775705410, +0.498967837424575730, 0.499011167826026560, 0.499054496979949800, 0.499097824886236390, 0.499141151544778450, 0.499184476955467640, 0.499227801118195980, 0.499271124032854450, +0.499314445699335140, 0.499357766117529690, 0.499401085287330240, 0.499444403208627650, 0.499487719881314070, 0.499531035305281200, 0.499574349480421120, 0.499617662406624750, +0.499660974083784290, 0.499704284511791720, 0.499747593690538060, 0.499790901619915460, 0.499834208299815560, 0.499877513730130560, 0.499920817910751380, 0.499964120841570160, +0.500007422522478650, 0.500050722953368940, 0.500094022134132010, 0.500137320064660050, 0.500180616744844820, 0.500223912174578400, 0.500267206353751880, 0.500310499282257240, +0.500353790959986440, 0.500397081386831480, 0.500440370562683420, 0.500483658487434480, 0.500526945160976840, 0.500570230583201380, 0.500613514754000400, 0.500656797673265540, +0.500700079340889110, 0.500743359756762100, 0.500786638920776680, 0.500829916832824740, 0.500873193492798350, 0.500916468900588500, 0.500959743056087590, 0.501003015959187280, +0.501046287609779870, 0.501089558007756230, 0.501132827153008780, 0.501176095045429260, 0.501219361684909880, 0.501262627071341730, 0.501305891204616990, 0.501349154084627550, +0.501392415711265580, 0.501435676084422190, 0.501478935203989560, 0.501522193069860120, 0.501565449681924620, 0.501608705040075710, 0.501651959144204910, 0.501695211994204530, +0.501738463589965880, 0.501781713931380930, 0.501824963018341790, 0.501868210850740630, 0.501911457428468540, 0.501954702751417850, 0.501997946819480400, 0.502041189632548400, +0.502084431190513050, 0.502127671493266650, 0.502170910540701070, 0.502214148332708610, 0.502257384869180370, 0.502300620150008650, 0.502343854175085760, 0.502387086944302900, +0.502430318457552370, 0.502473548714725940, 0.502516777715716010, 0.502560005460413910, 0.502603231948711590, 0.502646457180501380, 0.502689681155675250, 0.502732903874124610, +0.502776125335741670, 0.502819345540418520, 0.502862564488047340, 0.502905782178519330, 0.502948998611726930, 0.502992213787561980, 0.503035427705916800, 0.503078640366682820, +0.503121851769752100, 0.503165061915017200, 0.503208270802369300, 0.503251478431700710, 0.503294684802903400, 0.503337889915869810, 0.503381093770491010, 0.503424296366659530, +0.503467497704267350, 0.503510697783206780, 0.503553896603369020, 0.503597094164646600, 0.503640290466931480, 0.503683485510115880, 0.503726679294091320, 0.503769871818749990, +0.503813063083983990, 0.503856253089685730, 0.503899441835746420, 0.503942629322058580, 0.503985815548514520, 0.504029000515005430, 0.504072184221423970, 0.504115366667661990, +0.504158547853612030, 0.504201727779165280, 0.504244906444214160, 0.504288083848650870, 0.504331259992367720, 0.504374434875256020, 0.504417608497208180, 0.504460780858116410, +0.504503951957873010, 0.504547121796369400, 0.504590290373498010, 0.504633457689150800, 0.504676623743220420, 0.504719788535598070, 0.504762952066176160, 0.504806114334847010, +0.504849275341502810, 0.504892435086035210, 0.504935593568336390, 0.504978750788299010, 0.505021906745814380, 0.505065061440775010, 0.505108214873072890, 0.505151367042600660, +0.505194517949249630, 0.505237667592912330, 0.505280815973480960, 0.505323963090847820, 0.505367108944904330, 0.505410253535543140, 0.505453396862656330, 0.505496538926136440, +0.505539679725874770, 0.505582819261763850, 0.505625957533695990, 0.505669094541563500, 0.505712230285258020, 0.505755364764671870, 0.505798497979697670, 0.505841629930226970, +0.505884760616152060, 0.505927890037365380, 0.505971018193759230, 0.506014145085225240, 0.506057270711655850, 0.506100395072943240, 0.506143518168980070, 0.506186639999657740, +0.506229760564868790, 0.506272879864505530, 0.506315997898460380, 0.506359114666624750, 0.506402230168891410, 0.506445344405152540, 0.506488457375300680, 0.506531569079227250, +0.506574679516825000, 0.506617788687986350, 0.506660896592602830, 0.506704003230567080, 0.506747108601771300, 0.506790212706108250, 0.506833315543469110, 0.506876417113746870, +0.506919517416833500, 0.506962616452621640, 0.507005714221002930, 0.507048810721869910, 0.507091905955114890, 0.507134999920630490, 0.507178092618308260, 0.507221184048040730, +0.507264274209720200, 0.507307363103239430, 0.507350450728489830, 0.507393537085364170, 0.507436622173754630, 0.507479705993553960, 0.507522788544653600, 0.507565869826946180, +0.507608949840324560, 0.507652028584680170, 0.507695106059905750, 0.507738182265893510, 0.507781257202536310, 0.507824330869725450, 0.507867403267353800, 0.507910474395313670, +0.507953544253497700, 0.507996612841797530, 0.508039680160105810, 0.508082746208314840, 0.508125810986317480, 0.508168874494005160, 0.508211936731270630, 0.508254997698006310, +0.508298057394104830, 0.508341115819457840, 0.508384172973957990, 0.508427228857498250, 0.508470283469969920, 0.508513336811265980, 0.508556388881278630, 0.508599439679900730, +0.508642489207023820, 0.508685537462540640, 0.508728584446343720, 0.508771630158325720, 0.508814674598378150, 0.508857717766393990, 0.508900759662265450, 0.508943800285885480, +0.508986839637145640, 0.509029877715938660, 0.509072914522156970, 0.509115950055693430, 0.509158984316439580, 0.509202017304288270, 0.509245049019132260, 0.509288079460863300, +0.509331108629374140, 0.509374136524557210, 0.509417163146305360, 0.509460188494510140, 0.509503212569064500, 0.509546235369860880, 0.509589256896791910, 0.509632277149749570, +0.509675296128626500, 0.509718313833315120, 0.509761330263708400, 0.509804345419697880, 0.509847359301176640, 0.509890371908036880, 0.509933383240171570, 0.509976393297472460, +0.510019402079832430, 0.510062409587144220, 0.510105415819299580, 0.510148420776191490, 0.510191424457712260, 0.510234426863754860, 0.510277427994211050, 0.510320427848973580, +0.510363426427935200, 0.510406423730988550, 0.510449419758025380, 0.510492414508938790, 0.510535407983621070, 0.510578400181965210, 0.510621391103863060, 0.510664380749207390, +0.510707369117890720, 0.510750356209806020, 0.510793342024845170, 0.510836326562900790, 0.510879309823865760, 0.510922291807632710, 0.510965272514093630, 0.511008251943141260, +0.511051230094668680, 0.511094206968567780, 0.511137182564731170, 0.511180156883051740, 0.511223129923422230, 0.511266101685734500, 0.511309072169881640, 0.511352041375755960, +0.511395009303250660, 0.511437975952257370, 0.511480941322669190, 0.511523905414378640, 0.511566868227278700, 0.511609829761261240, 0.511652790016219220, 0.511695748992045170, +0.511738706688632080, 0.511781663105871920, 0.511824618243657660, 0.511867572101882160, 0.511910524680437300, 0.511953475979216250, 0.511996425998111460, 0.512039374737016000, +0.512082322195821620, 0.512125268374421520, 0.512168213272708230, 0.512211156890574840, 0.512254099227913100, 0.512297040284616200, 0.512339980060576570, 0.512382918555687520, +0.512425855769840680, 0.512468791702929250, 0.512511726354845880, 0.512554659725483530, 0.512597591814734080, 0.512640522622490710, 0.512683452148646520, 0.512726380393093150, +0.512769307355723900, 0.512812233036431420, 0.512855157435108680, 0.512898080551647760, 0.512941002385941540, 0.512983922937882860, 0.513026842207364720, 0.513069760194279080, +0.513112676898519030, 0.513155592319977320, 0.513198506458547030, 0.513241419314120150, 0.513284330886589650, 0.513327241175848270, 0.513370150181789220, 0.513413057904304470, +0.513455964343287000, 0.513498869498629660, 0.513541773370225550, 0.513584675957966530, 0.513627577261745900, 0.513670477281456650, 0.513713376016990850, 0.513756273468241710, +0.513799169635101750, 0.513842064517464280, 0.513884958115221280, 0.513927850428265940, 0.513970741456490910, 0.514013631199789380, 0.514056519658053430, 0.514099406831176160, +0.514142292719050430, 0.514185177321569320, 0.514228060638624920, 0.514270942670110310, 0.514313823415918360, 0.514356702875942260, 0.514399581050074000, 0.514442457938206750, +0.514485333540233740, 0.514528207856047140, 0.514571080885539820, 0.514613952628604990, 0.514656823085135610, 0.514699692255023660, 0.514742560138162660, 0.514785426734445160, +0.514828292043764460, 0.514871156066012640, 0.514914018801083010, 0.514956880248868320, 0.514999740409261770, 0.515042599282155460, 0.515085456867442780, 0.515128313165016280, +0.515171168174769490, 0.515214021896594380, 0.515256874330384250, 0.515299725476032310, 0.515342575333430640, 0.515385423902472550, 0.515428271183050900, 0.515471117175058890, +0.515513961878388720, 0.515556805292933680, 0.515599647418586660, 0.515642488255240950, 0.515685327802788530, 0.515728166061122820, 0.515771003030136680, 0.515813838709723420, +0.515856673099775230, 0.515899506200185320, 0.515942338010846660, 0.515985168531652550, 0.516027997762495080, 0.516070825703267680, 0.516113652353863530, 0.516156477714174940, +0.516199301784095010, 0.516242124563517040, 0.516284946052333990, 0.516327766250438190, 0.516370585157723050, 0.516413402774081430, 0.516456219099406640, 0.516499034133591000, +0.516541847876527680, 0.516584660328109790, 0.516627471488230740, 0.516670281356782500, 0.516713089933658500, 0.516755897218751930, 0.516798703211955870, 0.516841507913162750, +0.516884311322265870, 0.516927113439158090, 0.516969914263733070, 0.517012713795882760, 0.517055512035500710, 0.517098308982480330, 0.517141104636713700, 0.517183898998094360, +0.517226692066515280, 0.517269483841869770, 0.517312274324050250, 0.517355063512950020, 0.517397851408462060, 0.517440638010480010, 0.517483423318895850, 0.517526207333603220, +0.517568990054494970, 0.517611771481464760, 0.517654551614404660, 0.517697330453208200, 0.517740107997768370, 0.517782884247978690, 0.517825659203731360, 0.517868432864920010, +0.517911205231437850, 0.517953976303177300, 0.517996746080031880, 0.518039514561894570, 0.518082281748658780, 0.518125047640217050, 0.518167812236462580, 0.518210575537288660, +0.518253337542588620, 0.518296098252254870, 0.518338857666180820, 0.518381615784259680, 0.518424372606384960, 0.518467128132448770, 0.518509882362344850, 0.518552635295966290, +0.518595386933206390, 0.518638137273957690, 0.518680886318113710, 0.518723634065567870, 0.518766380516212490, 0.518809125669941200, 0.518851869526647190, 0.518894612086223780, +0.518937353348563500, 0.518980093313559760, 0.519022831981105880, 0.519065569351095270, 0.519108305423420350, 0.519151040197974640, 0.519193773674651360, 0.519236505853344020, +0.519279236733945050, 0.519321966316347970, 0.519364694600445990, 0.519407421586132620, 0.519450147273300410, 0.519492871661842770, 0.519535594751652900, 0.519578316542624540, +0.519621037034649900, 0.519663756227622730, 0.519706474121436560, 0.519749190715983690, 0.519791906011157990, 0.519834620006852430, 0.519877332702960770, 0.519920044099375420, +0.519962754195989920, 0.520005462992697560, 0.520048170489391890, 0.520090876685965430, 0.520133581582311710, 0.520176285178324150, 0.520218987473896170, 0.520261688468920400, +0.520304388163290390, 0.520347086556899430, 0.520389783649641060, 0.520432479441407910, 0.520475173932093530, 0.520517867121591650, 0.520560559009794700, 0.520603249596596320, +0.520645938881889810, 0.520688626865568830, 0.520731313547526000, 0.520773998927654750, 0.520816683005848600, 0.520859365782001090, 0.520902047256004860, 0.520944727427753440, +0.520987406297140130, 0.521030083864058800, 0.521072760128401870, 0.521115435090062970, 0.521158108748935530, 0.521200781104913190, 0.521243452157888590, 0.521286121907755250, +0.521328790354407050, 0.521371457497736390, 0.521414123337637150, 0.521456787874002630, 0.521499451106726570, 0.521542113035701420, 0.521584773660821010, 0.521627432981978670, +0.521670090999068140, 0.521712747711981950, 0.521755403120613970, 0.521798057224857390, 0.521840710024606080, 0.521883361519752680, 0.521926011710190820, 0.521968660595813930, +0.522011308176515750, 0.522053954452188940, 0.522096599422727240, 0.522139243088024510, 0.522181885447973170, 0.522224526502467200, 0.522267166251399790, 0.522309804694665040, +0.522352441832155230, 0.522395077663764360, 0.522437712189385840, 0.522480345408913420, 0.522522977322239730, 0.522565607929258550, 0.522608237229863380, 0.522650865223947990, +0.522693491911405130, 0.522736117292128430, 0.522778741366011550, 0.522821364132948110, 0.522863985592830980, 0.522906605745553810, 0.522949224591010120, 0.522991842129093780, +0.523034458359697420, 0.523077073282714910, 0.523119686898040110, 0.523162299205565780, 0.523204910205185670, 0.523247519896793190, 0.523290128280282430, 0.523332735355545810, +0.523375341122477520, 0.523417945580970770, 0.523460548730919630, 0.523503150572216640, 0.523545751104755760, 0.523588350328430540, 0.523630948243134830, 0.523673544848761390, +0.523716140145204070, 0.523758734132356410, 0.523801326810112270, 0.523843918178364510, 0.523886508237006890, 0.523929096985933370, 0.523971684425036720, 0.524014270554210900, +0.524056855373349450, 0.524099438882346110, 0.524142021081093870, 0.524184601969486570, 0.524227181547417760, 0.524269759814781410, 0.524312336771470270, 0.524354912417378300, +0.524397486752398940, 0.524440059776426380, 0.524482631489353260, 0.524525201891073430, 0.524567770981480770, 0.524610338760469030, 0.524652905227930950, 0.524695470383760740, +0.524738034227852150, 0.524780596760098140, 0.524823157980392590, 0.524865717888629240, 0.524908276484701840, 0.524950833768503490, 0.524993389739928040, 0.525035944398869030, +0.525078497745220640, 0.525121049778875530, 0.525163600499727880, 0.525206149907671120, 0.525248698002599430, 0.525291244784405700, 0.525333790252983770, 0.525376334408227400, +0.525418877250030560, 0.525461418778286120, 0.525503958992888150, 0.525546497893730310, 0.525589035480706570, 0.525631571753709890, 0.525674106712634260, 0.525716640357373750, +0.525759172687821240, 0.525801703703870800, 0.525844233405416080, 0.525886761792351170, 0.525929288864569020, 0.525971814621963630, 0.526014339064428740, 0.526056862191858320, +0.526099384004145350, 0.526141904501184030, 0.526184423682867890, 0.526226941549091000, 0.526269458099746460, 0.526311973334728230, 0.526354487253930080, 0.526396999857246080, +0.526439511144569220, 0.526482021115793560, 0.526524529770813320, 0.526567037109521240, 0.526609543131811630, 0.526652047837578240, 0.526694551226715050, 0.526737053299115020, +0.526779554054672470, 0.526822053493280930, 0.526864551614834700, 0.526907048419226750, 0.526949543906351180, 0.526992038076101620, 0.527034530928372490, 0.527077022463056540, +0.527119512680048090, 0.527162001579240870, 0.527204489160529090, 0.527246975423805610, 0.527289460368964740, 0.527331943995900550, 0.527374426304506150, 0.527416907294675610, +0.527459386966302900, 0.527501865319282110, 0.527544342353506220, 0.527586818068869420, 0.527629292465265690, 0.527671765542589100, 0.527714237300732640, 0.527756707739590600, +0.527799176859056860, 0.527841644659025500, 0.527884111139389710, 0.527926576300043580, 0.527969040140881090, 0.528011502661796310, 0.528053963862682330, 0.528096423743433570, +0.528138882303944010, 0.528181339544106950, 0.528223795463816590, 0.528266250062966680, 0.528308703341451520, 0.528351155299164210, 0.528393605935999040, 0.528436055251849780, +0.528478503246610830, 0.528520949920175290, 0.528563395272437230, 0.528605839303290860, 0.528648282012630140, 0.528690723400348390, 0.528733163466339810, 0.528775602210498350, +0.528818039632718230, 0.528860475732892630, 0.528902910510915870, 0.528945343966681800, 0.528987776100084740, 0.529030206911017880, 0.529072636399375520, 0.529115064565051970, +0.529157491407940330, 0.529199916927935000, 0.529242341124929850, 0.529284763998819300, 0.529327185549496430, 0.529369605776855550, 0.529412024680790630, 0.529454442261196090, +0.529496858517965020, 0.529539273450991830, 0.529581687060170500, 0.529624099345395230, 0.529666510306559420, 0.529708919943557290, 0.529751328256282910, 0.529793735244630580, +0.529836140908493510, 0.529878545247766010, 0.529920948262342590, 0.529963349952116470, 0.530005750316981940, 0.530048149356833090, 0.530090547071564110, 0.530132943461068540, +0.530175338525240460, 0.530217732263974170, 0.530260124677163880, 0.530302515764702890, 0.530344905526485500, 0.530387293962406030, 0.530429681072358550, 0.530472066856236600, +0.530514451313934490, 0.530556834445346180, 0.530599216250366210, 0.530641596728887780, 0.530683975880805400, 0.530726353706013400, 0.530768730204405180, 0.530811105375875170, +0.530853479220317340, 0.530895851737626210, 0.530938222927695100, 0.530980592790418430, 0.531022961325690270, 0.531065328533405050, 0.531107694413456180, 0.531150058965737970, +0.531192422190144730, 0.531234784086570770, 0.531277144654909490, 0.531319503895055330, 0.531361861806902370, 0.531404218390345240, 0.531446573645277140, 0.531488927571592610, +0.531531280169185720, 0.531573631437951000, 0.531615981377781880, 0.531658329988572760, 0.531700677270218190, 0.531743023222611580, 0.531785367845647450, 0.531827711139219780, +0.531870053103223330, 0.531912393737551280, 0.531954733042098280, 0.531997071016758530, 0.532039407661426320, 0.532081742975995420, 0.532124076960360020, 0.532166409614414420, +0.532208740938053260, 0.532251070931169750, 0.532293399593658620, 0.532335726925413980, 0.532378052926330450, 0.532420377596301450, 0.532462700935221410, 0.532505022942984960, +0.532547343619485640, 0.532589662964617960, 0.532631980978276130, 0.532674297660354790, 0.532716613010747240, 0.532758927029348130, 0.532801239716051760, 0.532843551070752650, +0.532885861093344350, 0.532928169783721260, 0.532970477141777920, 0.533012783167408630, 0.533055087860507040, 0.533097391220967780, 0.533139693248684930, 0.533181993943553370, +0.533224293305466280, 0.533266591334318530, 0.533308888030004760, 0.533351183392418270, 0.533393477421453930, 0.533435770117005830, 0.533478061478968700, 0.533520351507236090, +0.533562640201702520, 0.533604927562262410, 0.533647213588810290, 0.533689498281239790, 0.533731781639445570, 0.533774063663321920, 0.533816344352763370, 0.533858623707663680, +0.533900901727917490, 0.533943178413418870, 0.533985453764062810, 0.534027727779742720, 0.534070000460353240, 0.534112271805789240, 0.534154541815944130, 0.534196810490712660, +0.534239077829989250, 0.534281343833668430, 0.534323608501643840, 0.534365871833810350, 0.534408133830062030, 0.534450394490293860, 0.534492653814399370, 0.534534911802273080, +0.534577168453809650, 0.534619423768903700, 0.534661677747448660, 0.534703930389339610, 0.534746181694470630, 0.534788431662736490, 0.534830680294031020, 0.534872927588248780, +0.534915173545284280, 0.534957418165032280, 0.534999661447386200, 0.535041903392241110, 0.535084143999491560, 0.535126383269031280, 0.535168621200755030, 0.535210857794557240, +0.535253093050332750, 0.535295326967975100, 0.535337559547379050, 0.535379790788439220, 0.535422020691050270, 0.535464249255105830, 0.535506476480500760, 0.535548702367129590, +0.535590926914886970, 0.535633150123666750, 0.535675371993363570, 0.535717592523871970, 0.535759811715086690, 0.535802029566901590, 0.535844246079211440, 0.535886461251911080, +0.535928675084894060, 0.535970887578055440, 0.536013098731289660, 0.536055308544491350, 0.536097517017554480, 0.536139724150373810, 0.536181929942843860, 0.536224134394859500, +0.536266337506314360, 0.536308539277103310, 0.536350739707120990, 0.536392938796262260, 0.536435136544420770, 0.536477332951491360, 0.536519528017368690, 0.536561721741947490, +0.536603914125121760, 0.536646105166786120, 0.536688294866835670, 0.536730483225164030, 0.536772670241666190, 0.536814855916236790, 0.536857040248770460, 0.536899223239161280, +0.536941404887304020, 0.536983585193093190, 0.537025764156423780, 0.537067941777189640, 0.537110118055285630, 0.537152292990606290, 0.537194466583046590, 0.537236638832500390, +0.537278809738862660, 0.537320979302027820, 0.537363147521890850, 0.537405314398345710, 0.537447479931287280, 0.537489644120610180, 0.537531806966209280, 0.537573968467978560, +0.537616128625812870, 0.537658287439607200, 0.537700444909255500, 0.537742601034652660, 0.537784755815693290, 0.537826909252272500, 0.537869061344283920, 0.537911212091622850, +0.537953361494183600, 0.537995509551861370, 0.538037656264550020, 0.538079801632144530, 0.538121945654539520, 0.538164088331630100, 0.538206229663310000, 0.538248369649474310, +0.538290508290017680, 0.538332645584835290, 0.538374781533820790, 0.538416916136869370, 0.538459049393876010, 0.538501181304734680, 0.538543311869340350, 0.538585441087587770, +0.538627568959372030, 0.538669695484586870, 0.538711820663127620, 0.538753944494888670, 0.538796066979765340, 0.538838188117651380, 0.538880307908442100, 0.538922426352031910, +0.538964543448316010, 0.539006659197188490, 0.539048773598544310, 0.539090886652278110, 0.539132998358285100, 0.539175108716459240, 0.539217217726695620, 0.539259325388889320, +0.539301431702934320, 0.539343536668725700, 0.539385640286158320, 0.539427742555127150, 0.539469843475526290, 0.539511943047250810, 0.539554041270195460, 0.539596138144255330, +0.539638233669324620, 0.539680327845298180, 0.539722420672070990, 0.539764512149538130, 0.539806602277593690, 0.539848691056132650, 0.539890778485049850, 0.539932864564240500, +0.539974949293598680, 0.540017032673019480, 0.540059114702397980, 0.540101195381628370, 0.540143274710605750, 0.540185352689225070, 0.540227429317381210, 0.540269504594968470, +0.540311578521882050, 0.540353651098016590, 0.540395722323267380, 0.540437792197528520, 0.540479860720695200, 0.540521927892662180, 0.540563993713324640, 0.540606058182576900, +0.540648121300313920, 0.540690183066430690, 0.540732243480822380, 0.540774302543382990, 0.540816360254007920, 0.540858416612591930, 0.540900471619030320, 0.540942525273217180, +0.540984577575047590, 0.541026628524417070, 0.541068678121219500, 0.541110726365350290, 0.541152773256704300, 0.541194818795176610, 0.541236862980661650, 0.541278905813054490, +0.541320947292250000, 0.541362987418143590, 0.541405026190629360, 0.541447063609602490, 0.541489099674957950, 0.541531134386591170, 0.541573167744396010, 0.541615199748267990, +0.541657230398101990, 0.541699259693793290, 0.541741287635236100, 0.541783314222325620, 0.541825339454957260, 0.541867363333025210, 0.541909385856424790, 0.541951407025050850, +0.541993426838798700, 0.542035445297562650, 0.542077462401238000, 0.542119478149719720, 0.542161492542903130, 0.542203505580682310, 0.542245517262952890, 0.542287527589609630, +0.542329536560547830, 0.542371544175661910, 0.542413550434847070, 0.542455555337998390, 0.542497558885011280, 0.542539561075779720, 0.542581561910199350, 0.542623561388165480, +0.542665559509572290, 0.542707556274315220, 0.542749551682289330, 0.542791545733389840, 0.542833538427511140, 0.542875529764548560, 0.542917519744397170, 0.542959508366952390, +0.543001495632108420, 0.543043481539760790, 0.543085466089804350, 0.543127449282134630, 0.543169431116645950, 0.543211411593233720, 0.543253390711792910, 0.543295368472219040, +0.543337344874406440, 0.543379319918250280, 0.543421293603645990, 0.543463265930488770, 0.543505236898673030, 0.543547206508094180, 0.543589174758647760, 0.543631141650227970, +0.543673107182730320, 0.543715071356049910, 0.543757034170082250, 0.543798995624721560, 0.543840955719863350, 0.543882914455402820, 0.543924871831235390, 0.543966827847255360, +0.544008782503358270, 0.544050735799439190, 0.544092687735393770, 0.544134638311116080, 0.544176587526501890, 0.544218535381446270, 0.544260481875844640, 0.544302427009591420, +0.544344370782582130, 0.544386313194712310, 0.544428254245876380, 0.544470193935969740, 0.544512132264887700, 0.544554069232525580, 0.544596004838778010, 0.544637939083540410, +0.544679871966707860, 0.544721803488176120, 0.544763733647839480, 0.544805662445593470, 0.544847589881333420, 0.544889515954954610, 0.544931440666351690, 0.544973364015420180, +0.545015286002055290, 0.545057206626152540, 0.545099125887606450, 0.545141043786312450, 0.545182960322166290, 0.545224875495062270, 0.545266789304896140, 0.545308701751562990, +0.545350612834958450, 0.545392522554977060, 0.545434430911514330, 0.545476337904465590, 0.545518243533726240, 0.545560147799191040, 0.545602050700755400, 0.545643952238314630, +0.545685852411764370, 0.545727751220999150, 0.545769648665914490, 0.545811544746405700, 0.545853439462368420, 0.545895332813697290, 0.545937224800287720, 0.545979115422035480, +0.546021004678835080, 0.546062892570582160, 0.546104779097172030, 0.546146664258500230, 0.546188548054461490, 0.546230430484951460, 0.546272311549865220, 0.546314191249098640, +0.546356069582546120, 0.546397946550103540, 0.546439822151666090, 0.546481696387129400, 0.546523569256388120, 0.546565440759337880, 0.546607310895874000, 0.546649179665892330, +0.546691047069287280, 0.546732913105954620, 0.546774777775789640, 0.546816641078688210, 0.546858503014544750, 0.546900363583255000, 0.546942222784714720, 0.546984080618818420, +0.547025937085462100, 0.547067792184540820, 0.547109645915950460, 0.547151498279585650, 0.547193349275342020, 0.547235198903115010, 0.547277047162800460, 0.547318894054292900, +0.547360739577488100, 0.547402583732281340, 0.547444426518568620, 0.547486267936244440, 0.547528107985204570, 0.547569946665344420, 0.547611783976559850, 0.547653619918745390, +0.547695454491796910, 0.547737287695610140, 0.547779119530079740, 0.547820949995101560, 0.547862779090571020, 0.547904606816383980, 0.547946433172434970, 0.547988258158619850, +0.548030081774834140, 0.548071904020973610, 0.548113724896932890, 0.548155544402607940, 0.548197362537894080, 0.548239179302687170, 0.548280994696881960, 0.548322808720374310, +0.548364621373059520, 0.548406432654833690, 0.548448242565591330, 0.548490051105228300, 0.548531858273640590, 0.548573664070722830, 0.548615468496370990, 0.548657271550480390, +0.548699073232947090, 0.548740873543665630, 0.548782672482531990, 0.548824470049441680, 0.548866266244290580, 0.548908061066973430, 0.548949854517386200, 0.548991646595424320, +0.549033437300983640, 0.549075226633959020, 0.549117014594246330, 0.549158801181741100, 0.549200586396339170, 0.549242370237935430, 0.549284152706425830, 0.549325933801705800, +0.549367713523671420, 0.549409491872217210, 0.549451268847239380, 0.549493044448633780, 0.549534818676295170, 0.549576591530119400, 0.549618363010002220, 0.549660133115839610, +0.549701901847526210, 0.549743669204957990, 0.549785435188030690, 0.549827199796640190, 0.549868963030681220, 0.549910724890049880, 0.549952485374641810, 0.549994244484352750, +0.550036002219077780, 0.550077758578712880, 0.550119513563153470, 0.550161267172295740, 0.550203019406034440, 0.550244770264265550, 0.550286519746885140, 0.550328267853788080, +0.550370014584870340, 0.550411759940027560, 0.550453503919155710, 0.550495246522149760, 0.550536987748905690, 0.550578727599319140, 0.550620466073286190, 0.550662203170701690, +0.550703938891461630, 0.550745673235461750, 0.550787406202598030, 0.550829137792765540, 0.550870868005860050, 0.550912596841777510, 0.550954324300413800, 0.550996050381663880, +0.551037775085423950, 0.551079498411589870, 0.551121220360056620, 0.551162940930720380, 0.551204660123476800, 0.551246377938221950, 0.551288094374850710, 0.551329809433259270, +0.551371523113343360, 0.551413235414998980, 0.551454946338121090, 0.551496655882605880, 0.551538364048348990, 0.551580070835246630, 0.551621776243193750, 0.551663480272086340, +0.551705182921820250, 0.551746884192291560, 0.551788584083395370, 0.551830282595027640, 0.551871979727084240, 0.551913675479461240, 0.551955369852053620, 0.551997062844757690, +0.552038754457469420, 0.552080444690083880, 0.552122133542497280, 0.552163821014605370, 0.552205507106304230, 0.552247191817488940, 0.552288875148055690, 0.552330557097900240, +0.552372237666918680, 0.552413916855006290, 0.552455594662059070, 0.552497271087972860, 0.552538946132643870, 0.552580619795967070, 0.552622292077838750, 0.552663962978154680, +0.552705632496811150, 0.552747300633703140, 0.552788967388726850, 0.552830632761778570, 0.552872296752753290, 0.552913959361547300, 0.552955620588056360, 0.552997280432176770, +0.553038938893803620, 0.553080595972833100, 0.553122251669161070, 0.553163905982683830, 0.553205558913296370, 0.553247210460895090, 0.553288860625375860, 0.553330509406634750, +0.553372156804566970, 0.553413802819068820, 0.553455447450036160, 0.553497090697365300, 0.553538732560951320, 0.553580373040690520, 0.553622012136479100, 0.553663649848212370, +0.553705286175786400, 0.553746921119097290, 0.553788554678041220, 0.553830186852513400, 0.553871817642410220, 0.553913447047627350, 0.553955075068061300, 0.553996701703607150, +0.554038326954161330, 0.554079950819619580, 0.554121573299878430, 0.554163194394832860, 0.554204814104379380, 0.554246432428413870, 0.554288049366832620, 0.554329664919530950, +0.554371279086405040, 0.554412891867351320, 0.554454503262264970, 0.554496113271042420, 0.554537721893579530, 0.554579329129772700, 0.554620934979517250, 0.554662539442709490, +0.554704142519245270, 0.554745744209021120, 0.554787344511932230, 0.554828943427874920, 0.554870540956745370, 0.554912137098439780, 0.554953731852853460, 0.554995325219882820, +0.555036917199423940, 0.555078507791373020, 0.555120096995625590, 0.555161684812077730, 0.555203271240625850, 0.555244856281166040, 0.555286439933593830, 0.555328022197805420, +0.555369603073697320, 0.555411182561164950, 0.555452760660104520, 0.555494337370412210, 0.555535912691984430, 0.555577486624716510, 0.555619059168504850, 0.555660630323245640, +0.555702200088835090, 0.555743768465168710, 0.555785335452142930, 0.555826901049653820, 0.555868465257597810, 0.555910028075870310, 0.555951589504367740, 0.555993149542986180, +0.556034708191622040, 0.556076265450170860, 0.556117821318528940, 0.556159375796592910, 0.556200928884257980, 0.556242480581420780, 0.556284030887977400, 0.556325579803824240, +0.556367127328856850, 0.556408673462971630, 0.556450218206064660, 0.556491761558032590, 0.556533303518770730, 0.556574844088175590, 0.556616383266143270, 0.556657921052570500, +0.556699457447352500, 0.556740992450385770, 0.556782526061566640, 0.556824058280791620, 0.556865589107956030, 0.556907118542956490, 0.556948646585689430, 0.556990173236050490, +0.557031698493936080, 0.557073222359242390, 0.557114744831866070, 0.557156265911702530, 0.557197785598648300, 0.557239303892599570, 0.557280820793452980, 0.557322336301103950, +0.557363850415449110, 0.557405363136384670, 0.557446874463807140, 0.557488384397612060, 0.557529892937696060, 0.557571400083955340, 0.557612905836286420, 0.557654410194584840, +0.557695913158747340, 0.557737414728670000, 0.557778914904249470, 0.557820413685381270, 0.557861911071962150, 0.557903407063888520, 0.557944901661056040, 0.557986394863361320, +0.558027886670700580, 0.558069377082970550, 0.558110866100066660, 0.558152353721885540, 0.558193839948323610, 0.558235324779277510, 0.558276808214642650, 0.558318290254315790, +0.558359770898193110, 0.558401250146171480, 0.558442727998146320, 0.558484204454014370, 0.558525679513671940, 0.558567153177015660, 0.558608625443941080, 0.558650096314344920, +0.558691565788123960, 0.558733033865173700, 0.558774500545390800, 0.558815965828671770, 0.558857429714913030, 0.558898892204010460, 0.558940353295860670, 0.558981812990359870, +0.559023271287405030, 0.559064728186891570, 0.559106183688716340, 0.559147637792775650, 0.559189090498966260, 0.559230541807183680, 0.559271991717324890, 0.559313440229285970, +0.559354887342963900, 0.559396333058254200, 0.559437777375053740, 0.559479220293259140, 0.559520661812766160, 0.559562101933471560, 0.559603540655271630, 0.559644977978063230, +0.559686413901742010, 0.559727848426204820, 0.559769281551347970, 0.559810713277068220, 0.559852143603261410, 0.559893572529824190, 0.559935000056653090, 0.559976426183644740, +0.560017850910695110, 0.560059274237700740, 0.560100696164558260, 0.560142116691164430, 0.560183535817414870, 0.560224953543206450, 0.560266369868436030, 0.560307784792999360, +0.560349198316793200, 0.560390610439714050, 0.560432021161658800, 0.560473430482523070, 0.560514838402203730, 0.560556244920597300, 0.560597650037600650, 0.560639053753109520, +0.560680456067020770, 0.560721856979230830, 0.560763256489636650, 0.560804654598134000, 0.560846051304619620, 0.560887446608990260, 0.560928840511142560, 0.560970233010972370, +0.561011624108376570, 0.561053013803251790, 0.561094402095494770, 0.561135788985001490, 0.561177174471668590, 0.561218558555393270, 0.561259941236071040, 0.561301322513599100, +0.561342702387873760, 0.561384080858791990, 0.561425457926249760, 0.561466833590143820, 0.561508207850370810, 0.561549580706827700, 0.561590952159410240, 0.561632322208015400, +0.561673690852539710, 0.561715058092880250, 0.561756423928932660, 0.561797788360594020, 0.561839151387760970, 0.561880513010330370, 0.561921873228198200, 0.561963232041261310, +0.562004589449416670, 0.562045945452560260, 0.562087300050588930, 0.562128653243399330, 0.562170005030888540, 0.562211355412952310, 0.562252704389487710, 0.562294051960391280, +0.562335398125560220, 0.562376742884890260, 0.562418086238278380, 0.562459428185621340, 0.562500768726816090, 0.562542107861758510, 0.562583445590345680, 0.562624781912474230, +0.562666116828041240, 0.562707450336942580, 0.562748782439075220, 0.562790113134336360, 0.562831442422621730, 0.562872770303828650, 0.562914096777853530, 0.562955421844593570, +0.562996745503944740, 0.563038067755804010, 0.563079388600068120, 0.563120708036634050, 0.563162026065397890, 0.563203342686256710, 0.563244657899107160, 0.563285971703846310, +0.563327284100370140, 0.563368595088575840, 0.563409904668359940, 0.563451212839619740, 0.563492519602251110, 0.563533824956151230, 0.563575128901216750, 0.563616431437344740, +0.563657732564431410, 0.563699032282373610, 0.563740330591068650, 0.563781627490412610, 0.563822922980302340, 0.563864217060634830, 0.563905509731307150, 0.563946800992215390, +0.563988090843256520, 0.564029379284327500, 0.564070666315325320, 0.564111951936146160, 0.564153236146687110, 0.564194518946845030, 0.564235800336516880, 0.564277080315598980, +0.564318358883988400, 0.564359636041581900, 0.564400911788276560, 0.564442186123968680, 0.564483459048555350, 0.564524730561933640, 0.564566000663999870, 0.564607269354651000, +0.564648536633784000, 0.564689802501295970, 0.564731066957083190, 0.564772330001042660, 0.564813591633071320, 0.564854851853066280, 0.564896110660923820, 0.564937368056541160, +0.564978624039815020, 0.565019878610642620, 0.565061131768920260, 0.565102383514545000, 0.565143633847413730, 0.565184882767423850, 0.565226130274471330, 0.565267376368453590, +0.565308621049267710, 0.565349864316809890, 0.565391106170977430, 0.565432346611667190, 0.565473585638776480, 0.565514823252201370, 0.565556059451839290, 0.565597294237586980, +0.565638527609341860, 0.565679759567000010, 0.565720990110458730, 0.565762219239615120, 0.565803446954366240, 0.565844673254608300, 0.565885898140238820, 0.565927121611154550, +0.565968343667252790, 0.566009564308429860, 0.566050783534582940, 0.566092001345609550, 0.566133217741405680, 0.566174432721868850, 0.566215646286895910, 0.566256858436384180, +0.566298069170229960, 0.566339278488330540, 0.566380486390583030, 0.566421692876884600, 0.566462897947131560, 0.566504101601221330, 0.566545303839050770, 0.566586504660517300, +0.566627704065517320, 0.566668902053947930, 0.566710098625706430, 0.566751293780690000, 0.566792487518794960, 0.566833679839918720, 0.566874870743958260, 0.566916060230810980, +0.566957248300373200, 0.566998434952542210, 0.567039620187215650, 0.567080804004289620, 0.567121986403661520, 0.567163167385228540, 0.567204346948887990, 0.567245525094536180, +0.567286701822070530, 0.567327877131388100, 0.567369051022386440, 0.567410223494961730, 0.567451394549011500, 0.567492564184432840, 0.567533732401123040, 0.567574899198978520, +0.567616064577896820, 0.567657228537774890, 0.567698391078510280, 0.567739552199999390, 0.567780711902139630, 0.567821870184828330, 0.567863027047962100, 0.567904182491438260, +0.567945336515154000, 0.567986489119006730, 0.568027640302892880, 0.568068790066709850, 0.568109938410354950, 0.568151085333725490, 0.568192230836717990, 0.568233374919229980, +0.568274517581158430, 0.568315658822401090, 0.568356798642854160, 0.568397937042415150, 0.568439074020981370, 0.568480209578450250, 0.568521343714718300, 0.568562476429682940, +0.568603607723241810, 0.568644737595291220, 0.568685866045728790, 0.568726993074451740, 0.568768118681357570, 0.568809242866342710, 0.568850365629304800, 0.568891486970140910, +0.568932606888748690, 0.568973725385024550, 0.569014842458866130, 0.569055958110170620, 0.569097072338835550, 0.569138185144757450, 0.569179296527833940, 0.569220406487962130, +0.569261515025039630, 0.569302622138963100, 0.569343727829629940, 0.569384832096937470, 0.569425934940783310, 0.569467036361063880, 0.569508136357676830, 0.569549234930519900, +0.569590332079489500, 0.569631427804483280, 0.569672522105398430, 0.569713614982132690, 0.569754706434582590, 0.569795796462645670, 0.569836885066219210, 0.569877972245200980, +0.569919057999487390, 0.569960142328976180, 0.570001225233564670, 0.570042306713150370, 0.570083386767630040, 0.570124465396901200, 0.570165542600861160, 0.570206618379407670, +0.570247692732437250, 0.570288765659847650, 0.570329837161536400, 0.570370907237400250, 0.570411975887336830, 0.570453043111243450, 0.570494108909017860, 0.570535173280556700, +0.570576236225757480, 0.570617297744517750, 0.570658357836735020, 0.570699416502306160, 0.570740473741128680, 0.570781529553100130, 0.570822583938118020, 0.570863636896079110, +0.570904688426881140, 0.570945738530421410, 0.570986787206597680, 0.571027834455306690, 0.571068880276446090, 0.571109924669913620, 0.571150967635605910, 0.571192009173420940, +0.571233049283255800, 0.571274087965008450, 0.571315125218575530, 0.571356161043854890, 0.571397195440743740, 0.571438228409139940, 0.571479259948940220, 0.571520290060042460, +0.571561318742343840, 0.571602345995742330, 0.571643371820134690, 0.571684396215418560, 0.571725419181491330, 0.571766440718251000, 0.571807460825594190, 0.571848479503418770, +0.571889496751622480, 0.571930512570102080, 0.571971526958755420, 0.572012539917479910, 0.572053551446173540, 0.572094561544732820, 0.572135570213055720, 0.572176577451039670, +0.572217583258582520, 0.572258587635581020, 0.572299590581933140, 0.572340592097536290, 0.572381592182288230, 0.572422590836085930, 0.572463588058827130, 0.572504583850409250, +0.572545578210730380, 0.572586571139687250, 0.572627562637177620, 0.572668552703099020, 0.572709541337349530, 0.572750528539825780, 0.572791514310425630, 0.572832498649047170, +0.572873481555587040, 0.572914463029943200, 0.572955443072013180, 0.572996421681694960, 0.573037398858885380, 0.573078374603482210, 0.573119348915383190, 0.573160321794486060, +0.573201293240687800, 0.573242263253886280, 0.573283231833979220, 0.573324198980864290, 0.573365164694438660, 0.573406128974599970, 0.573447091821245980, 0.573488053234274760, +0.573529013213582850, 0.573569971759068540, 0.573610928870629590, 0.573651884548163070, 0.573692838791566740, 0.573733791600738340, 0.573774742975575850, 0.573815692915976120, +0.573856641421837120, 0.573897588493056500, 0.573938534129532330, 0.573979478331161470, 0.574020421097841900, 0.574061362429471260, 0.574102302325947610, 0.574143240787167830, +0.574184177813029880, 0.574225113403431520, 0.574266047558270820, 0.574306980277444530, 0.574347911560850850, 0.574388841408387750, 0.574429769819952200, 0.574470696795442160, +0.574511622334755500, 0.574552546437790080, 0.574593469104442870, 0.574634390334612060, 0.574675310128195280, 0.574716228485090520, 0.574757145405194850, 0.574798060888406350, +0.574838974934622660, 0.574879887543741970, 0.574920798715661150, 0.574961708450278270, 0.575002616747491200, 0.575043523607197900, 0.575084429029295460, 0.575125333013681960, +0.575166235560255150, 0.575207136668913100, 0.575248036339552790, 0.575288934572072420, 0.575329831366370060, 0.575370726722342800, 0.575411620639888710, 0.575452513118905550, +0.575493404159291510, 0.575534293760943560, 0.575575181923759890, 0.575616068647638260, 0.575656953932476840, 0.575697837778172630, 0.575738720184623910, 0.575779601151728330, +0.575820480679384070, 0.575861358767488340, 0.575902235415939100, 0.575943110624634320, 0.575983984393472200, 0.576024856722349600, 0.576065727611165030, 0.576106597059816370, +0.576147465068200910, 0.576188331636216860, 0.576229196763761830, 0.576270060450734260, 0.576310922697031210, 0.576351783502550790, 0.576392642867190940, 0.576433500790849870, +0.576474357273424660, 0.576515212314813510, 0.576556065914914370, 0.576596918073625450, 0.576637768790843830, 0.576678618066467810, 0.576719465900395250, 0.576760312292524450, +0.576801157242752380, 0.576842000750977470, 0.576882842817098010, 0.576923683441010970, 0.576964522622614770, 0.577005360361807270, 0.577046196658486670, 0.577087031512550250, +0.577127864923896230, 0.577168696892422560, 0.577209527418027560, 0.577250356500608300, 0.577291184140063200, 0.577332010336290110, 0.577372835089187460, 0.577413658398652220, +0.577454480264582900, 0.577495300686877380, 0.577536119665433940, 0.577576937200149910, 0.577617753290923460, 0.577658567937653020, 0.577699381140235780, 0.577740192898570150, +0.577781003212553990, 0.577821812082085720, 0.577862619507062520, 0.577903425487382720, 0.577944230022944480, 0.577985033113645910, 0.578025834759384520, 0.578066634960058390, +0.578107433715565830, 0.578148231025804930, 0.578189026890673090, 0.578229821310068730, 0.578270614283889820, 0.578311405812034770, 0.578352195894400790, 0.578392984530886280, +0.578433771721389430, 0.578474557465808450, 0.578515341764040620, 0.578556124615984600, 0.578596906021538570, 0.578637685980599840, 0.578678464493066920, 0.578719241558837920, +0.578760017177811110, 0.578800791349883940, 0.578841564074954800, 0.578882335352921660, 0.578923105183683170, 0.578963873567136410, 0.579004640503180120, 0.579045405991712170, +0.579086170032630960, 0.579126932625834150, 0.579167693771219900, 0.579208453468686430, 0.579249211718132150, 0.579289968519454580, 0.579330723872552020, 0.579371477777323010, +0.579412230233664950, 0.579452981241476260, 0.579493730800655140, 0.579534478911100100, 0.579575225572708570, 0.579615970785378850, 0.579656714549009240, 0.579697456863498270, +0.579738197728743240, 0.579778937144642680, 0.579819675111094780, 0.579860411627998170, 0.579901146695250060, 0.579941880312749070, 0.579982612480393510, 0.580023343198081690, +0.580064072465711120, 0.580104800283180340, 0.580145526650387990, 0.580186251567231470, 0.580226975033609320, 0.580267697049419720, 0.580308417614561310, 0.580349136728931400, +0.580389854392428630, 0.580430570604951290, 0.580471285366397920, 0.580511998676665810, 0.580552710535653830, 0.580593420943260050, 0.580634129899383120, 0.580674837403920450, +0.580715543456770790, 0.580756248057832100, 0.580796951207003250, 0.580837652904181660, 0.580878353149265950, 0.580919051942154320, 0.580959749282745410, 0.581000445170936850, +0.581041139606627070, 0.581081832589714910, 0.581122524120097680, 0.581163214197674250, 0.581203902822342800, 0.581244589994001860, 0.581285275712549070, 0.581325959977883170, +0.581366642789902350, 0.581407324148505270, 0.581448004053589540, 0.581488682505053810, 0.581529359502796380, 0.581570035046715890, 0.581610709136709870, 0.581651381772677170, +0.581692052954515980, 0.581732722682125060, 0.581773390955401930, 0.581814057774245440, 0.581854723138554020, 0.581895387048225520, 0.581936049503158470, 0.581976710503251390, +0.582017370048402820, 0.582058028138510490, 0.582098684773473040, 0.582139339953189010, 0.582179993677556910, 0.582220645946474490, 0.582261296759840400, 0.582301946117553040, +0.582342594019511270, 0.582383240465612630, 0.582423885455755850, 0.582464528989839360, 0.582505171067762010, 0.582545811689421320, 0.582586450854716050, 0.582627088563545060, +0.582667724815805980, 0.582708359611397550, 0.582748992950218200, 0.582789624832166790, 0.582830255257140940, 0.582870884225039520, 0.582911511735760830, 0.582952137789203630, +0.582992762385265870, 0.583033385523846090, 0.583074007204842930, 0.583114627428155120, 0.583155246193680310, 0.583195863501317470, 0.583236479350964900, 0.583277093742521570, +0.583317706675885010, 0.583358318150954290, 0.583398928167628170, 0.583439536725804290, 0.583480143825381600, 0.583520749466258540, 0.583561353648333950, 0.583601956371505690, +0.583642557635672410, 0.583683157440732850, 0.583723755786585750, 0.583764352673128760, 0.583804948100261070, 0.583845542067880970, 0.583886134575887230, 0.583926725624178020, +0.583967315212651880, 0.584007903341207450, 0.584048490009743570, 0.584089075218158120, 0.584129658966350050, 0.584170241254217790, 0.584210822081660310, 0.584251401448575460, +0.584291979354861990, 0.584332555800419100, 0.584373130785144300, 0.584413704308936690, 0.584454276371694890, 0.584494846973317770, 0.584535416113703080, 0.584575983792749890, +0.584616550010356840, 0.584657114766422680, 0.584697678060845380, 0.584738239893523800, 0.584778800264356800, 0.584819359173243010, 0.584859916620080520, 0.584900472604768300, +0.584941027127204750, 0.584981580187289070, 0.585022131784919130, 0.585062681919993890, 0.585103230592412200, 0.585143777802072050, 0.585184323548872510, 0.585224867832712210, +0.585265410653490030, 0.585305952011104020, 0.585346491905453070, 0.585387030336435910, 0.585427567303951620, 0.585468102807897960, 0.585508636848174110, 0.585549169424678610, +0.585589700537310520, 0.585630230185967830, 0.585670758370549600, 0.585711285090954490, 0.585751810347081460, 0.585792334138828590, 0.585832856466094950, 0.585873377328779420, +0.585913896726780180, 0.585954414659996090, 0.585994931128326010, 0.586035446131669020, 0.586075959669922990, 0.586116471742987090, 0.586156982350759970, 0.586197491493140820, +0.586237999170027500, 0.586278505381319200, 0.586319010126914670, 0.586359513406713000, 0.586400015220612140, 0.586440515568511290, 0.586481014450309090, 0.586521511865904840, +0.586562007815196300, 0.586602502298082750, 0.586642995314463070, 0.586683486864236100, 0.586723976947300160, 0.586764465563554330, 0.586804952712897570, 0.586845438395228070, +0.586885922610445030, 0.586926405358447200, 0.586966886639133770, 0.587007366452402590, 0.587047844798153080, 0.587088321676284000, 0.587128797086694520, 0.587169271029282620, +0.587209743503947500, 0.587250214510588010, 0.587290684049103450, 0.587331152119391800, 0.587371618721352130, 0.587412083854883530, 0.587452547519885070, 0.587493009716254950, +0.587533470443892150, 0.587573929702696170, 0.587614387492564890, 0.587654843813397720, 0.587695298665093510, 0.587735752047551240, 0.587776203960669320, 0.587816654404346940, +0.587857103378482850, 0.587897550882976460, 0.587937996917725750, 0.587978441482630010, 0.588018884577588220, 0.588059326202499570, 0.588099766357262240, 0.588140205041775550, +0.588180642255938250, 0.588221077999649730, 0.588261512272808210, 0.588301945075312860, 0.588342376407063110, 0.588382806267956910, 0.588423234657893810, 0.588463661576772550, +0.588504087024492530, 0.588544511000951950, 0.588584933506050010, 0.588625354539685790, 0.588665774101758580, 0.588706192192166580, 0.588746608810808980, 0.588787023957584980, +0.588827437632393760, 0.588867849835133520, 0.588908260565703780, 0.588948669824003290, 0.588989077609931470, 0.589029483923386610, 0.589069888764268130, 0.589110292132475230, +0.589150694027906210, 0.589191094450460470, 0.589231493400037000, 0.589271890876535200, 0.589312286879853260, 0.589352681409890610, 0.589393074466546210, 0.589433466049719580, +0.589473856159308920, 0.589514244795213530, 0.589554631957332600, 0.589595017645565430, 0.589635401859810340, 0.589675784599966720, 0.589716165865933780, 0.589756545657610600, +0.589796923974895800, 0.589837300817688700, 0.589877676185888270, 0.589918050079394130, 0.589958422498104370, 0.589998793441918630, 0.590039162910736330, 0.590079530904455640, +0.590119897422976210, 0.590160262466197020, 0.590200626034017460, 0.590240988126336070, 0.590281348743052160, 0.590321707884064910, 0.590362065549273620, 0.590402421738576930, +0.590442776451874260, 0.590483129689064470, 0.590523481450047290, 0.590563831734721160, 0.590604180542985360, 0.590644527874739090, 0.590684873729881880, 0.590725218108312020, +0.590765561009929270, 0.590805902434632930, 0.590846242382321420, 0.590886580852894360, 0.590926917846250840, 0.590967253362290390, 0.591007587400911530, 0.591047919962013560, +0.591088251045495780, 0.591128580651257840, 0.591168908779198030, 0.591209235429216000, 0.591249560601210810, 0.591289884295082110, 0.591330206510728430, 0.591370527248049060, +0.591410846506943530, 0.591451164287311150, 0.591491480589050540, 0.591531795412061130, 0.591572108756242780, 0.591612420621493660, 0.591652731007713540, 0.591693039914801490, +0.591733347342657370, 0.591773653291179370, 0.591813957760267350, 0.591854260749820390, 0.591894562259738130, 0.591934862289919090, 0.591975160840262920, 0.592015457910668900, +0.592055753501036450, 0.592096047611264440, 0.592136340241252170, 0.592176631390899040, 0.592216921060104820, 0.592257209248767900, 0.592297495956787930, 0.592337781184064220, +0.592378064930496380, 0.592418347195983070, 0.592458627980423810, 0.592498907283718460, 0.592539185105765420, 0.592579461446464340, 0.592619736305714740, 0.592660009683416140, +0.592700281579467080, 0.592740551993767410, 0.592780820926216310, 0.592821088376713550, 0.592861354345157630, 0.592901618831448430, 0.592941881835485020, 0.592982143357167370, +0.593022403396394000, 0.593062661953064670, 0.593102919027078680, 0.593143174618335660, 0.593183428726734460, 0.593223681352174630, 0.593263932494555890, 0.593304182153777000, +0.593344430329737720, 0.593384677022337330, 0.593424922231475580, 0.593465165957051230, 0.593505408198963910, 0.593545648957113040, 0.593585888231398460, 0.593626126021718830, +0.593666362327973870, 0.593706597150062910, 0.593746830487885900, 0.593787062341341490, 0.593827292710329300, 0.593867521594748980, 0.593907748994500160, 0.593947974909481700, +0.593988199339593240, 0.594028422284734630, 0.594068643744804610, 0.594108863719702950, 0.594149082209329160, 0.594189299213583100, 0.594229514732363300, 0.594269728765569830, +0.594309941313102000, 0.594350152374859660, 0.594390361950741570, 0.594430570040647590, 0.594470776644477120, 0.594510981762130130, 0.594551185393505380, 0.594591387538502600, +0.594631588197021330, 0.594671787368961540, 0.594711985054221850, 0.594752181252702240, 0.594792375964302460, 0.594832569188921470, 0.594872760926459020, 0.594912951176814640, +0.594953139939888300, 0.594993327215578740, 0.595033513003785820, 0.595073697304409180, 0.595113880117348560, 0.595154061442502940, 0.595194241279772160, 0.595234419629055770, +0.595274596490253720, 0.595314771863264870, 0.595354945747988970, 0.595395118144325770, 0.595435289052175130, 0.595475458471435900, 0.595515626402008060, 0.595555792843791120, +0.595595957796685060, 0.595636121260588740, 0.595676283235402120, 0.595716443721025170, 0.595756602717356640, 0.595796760224296730, 0.595836916241744950, 0.595877070769601170, +0.595917223807764350, 0.595957375356134470, 0.595997525414611150, 0.596037673983094370, 0.596077821061483100, 0.596117966649677200, 0.596158110747576410, 0.596198253355080810, +0.596238394472089040, 0.596278534098501400, 0.596318672234217420, 0.596358808879137060, 0.596398944033159410, 0.596439077696184320, 0.596479209868111980, 0.596519340548841150, +0.596559469738272010, 0.596599597436304200, 0.596639723642837790, 0.596679848357771660, 0.596719971581005870, 0.596760093312440290, 0.596800213551974770, 0.596840332299508280, +0.596880449554941020, 0.596920565318172720, 0.596960679589103260, 0.597000792367631710, 0.597040903653658250, 0.597081013447082530, 0.597121121747804630, 0.597161228555723620, +0.597201333870739480, 0.597241437692752290, 0.597281540021661230, 0.597321640857366280, 0.597361740199767290, 0.597401838048764340, 0.597441934404256300, 0.597482029266143580, +0.597522122634325690, 0.597562214508702840, 0.597602304889174100, 0.597642393775639660, 0.597682481167999160, 0.597722567066152900, 0.597762651469999850, 0.597802734379440090, +0.597842815794373590, 0.597882895714700320, 0.597922974140319470, 0.597963051071131240, 0.598003126507035350, 0.598043200447932020, 0.598083272893720320, 0.598123343844300440, +0.598163413299572570, 0.598203481259435790, 0.598243547723790290, 0.598283612692535940, 0.598323676165572920, 0.598363738142800310, 0.598403798624118410, 0.598443857609427090, +0.598483915098626310, 0.598523971091615480, 0.598564025588294690, 0.598604078588563900, 0.598644130092323200, 0.598684180099471890, 0.598724228609910040, 0.598764275623537730, +0.598804321140254950, 0.598844365159961090, 0.598884407682556350, 0.598924448707940930, 0.598964488236014000, 0.599004526266675890, 0.599044562799826430, 0.599084597835365830, +0.599124631373193490, 0.599164663413209620, 0.599204693955313950, 0.599244722999407010, 0.599284750545387880, 0.599324776593156860, 0.599364801142613920, 0.599404824193659370, +0.599444845746192280, 0.599484865800113180, 0.599524884355321920, 0.599564901411718810, 0.599604916969203040, 0.599644931027674910, 0.599684943587034950, 0.599724954647182230, +0.599764964208017060, 0.599804972269439520, 0.599844978831349910, 0.599884983893647530, 0.599924987456232680, 0.599964989519005340, 0.600004990081865920, 0.600044989144713600, +0.600084986707448810, 0.600124982769971620, 0.600164977332182330, 0.600204970393980240, 0.600244961955265670, 0.600284952015938680, 0.600324940575899690, 0.600364927635048010, +0.600404913193284040, 0.600444897250507760, 0.600484879806619580, 0.600524860861518790, 0.600564840415105940, 0.600604818467281310, 0.600644795017944320, 0.600684770066995280, +0.600724743614334370, 0.600764715659861890, 0.600804686203477380, 0.600844655245081020, 0.600884622784573110, 0.600924588821853960, 0.600964553356822970, 0.601004516389380680, +0.601044477919427060, 0.601084437946862500, 0.601124396471586550, 0.601164353493499730, 0.601204309012501880, 0.601244263028493650, 0.601284215541374460, 0.601324166551044700, +0.601364116057404810, 0.601404064060354400, 0.601444010559793680, 0.601483955555623060, 0.601523899047742840, 0.601563841036052540, 0.601603781520452690, 0.601643720500843250, +0.601683657977124970, 0.601723593949197170, 0.601763528416960460, 0.601803461380314820, 0.601843392839160880, 0.601883322793398180, 0.601923251242927120, 0.601963178187648000, +0.602003103627461230, 0.602043027562266350, 0.602082949991963880, 0.602122870916454330, 0.602162790335637350, 0.602202708249413470, 0.602242624657682630, 0.602282539560345720, +0.602322452957302020, 0.602362364848452290, 0.602402275233696600, 0.602442184112935600, 0.602482091486068680, 0.602521997352996610, 0.602561901713619560, 0.602601804567838070, +0.602641705915551770, 0.602681605756661190, 0.602721504091066510, 0.602761400918668590, 0.602801296239366620, 0.602841190053061580, 0.602881082359653760, 0.602920973159043030, +0.602960862451129790, 0.603000750235814450, 0.603040636512997550, 0.603080521282578720, 0.603120404544458480, 0.603160286298537350, 0.603200166544715870, 0.603240045282893540, +0.603279922512971130, 0.603319798234848940, 0.603359672448427590, 0.603399545153606720, 0.603439416350286970, 0.603479286038368650, 0.603519154217752480, 0.603559020888338130, +0.603598886050026100, 0.603638749702717030, 0.603678611846311330, 0.603718472480708760, 0.603758331605810050, 0.603798189221515850, 0.603838045327725780, 0.603877899924340600, +0.603917753011260720, 0.603957604588386760, 0.603997454655618490, 0.604037303212856540, 0.604077150260001310, 0.604116995796953550, 0.604156839823613010, 0.604196682339880330, +0.604236523345656030, 0.604276362840840740, 0.604316200825334100, 0.604356037299037090, 0.604395872261849880, 0.604435705713673330, 0.604475537654407310, 0.604515368083952340, +0.604555197002209280, 0.604595024409077860, 0.604634850304458960, 0.604674674688252870, 0.604714497560360550, 0.604754318920681540, 0.604794138769116700, 0.604833957105566640, +0.604873773929931910, 0.604913589242112470, 0.604953403042009060, 0.604993215329522100, 0.605033026104552450, 0.605072835366999960, 0.605112643116765270, 0.605152449353749010, +0.605192254077852040, 0.605232057288974110, 0.605271858987015960, 0.605311659171878460, 0.605351457843461560, 0.605391255001666020, 0.605431050646392240, 0.605470844777541320, +0.605510637395012870, 0.605550428498707770, 0.605590218088526640, 0.605630006164370350, 0.605669792726138630, 0.605709577773732470, 0.605749361307052370, 0.605789143325999310, +0.605828923830472930, 0.605868702820374190, 0.605908480295603850, 0.605948256256062520, 0.605988030701650300, 0.606027803632267940, 0.606067575047816050, 0.606107344948195630, +0.606147113333306510, 0.606186880203049560, 0.606226645557325750, 0.606266409396035040, 0.606306171719078190, 0.606345932526356050, 0.606385691817769360, 0.606425449593218090, +0.606465205852603220, 0.606504960595825260, 0.606544713822785300, 0.606584465533383190, 0.606624215727520010, 0.606663964405096180, 0.606703711566012880, 0.606743457210169870, +0.606783201337468210, 0.606822943947808670, 0.606862685041091980, 0.606902424617218330, 0.606942162676088580, 0.606981899217603700, 0.607021634241663780, 0.607061367748169770, +0.607101099737022420, 0.607140830208122590, 0.607180559161370370, 0.607220286596666710, 0.607260012513912370, 0.607299736913008310, 0.607339459793854620, 0.607379181156352250, +0.607418901000401860, 0.607458619325904610, 0.607498336132760500, 0.607538051420870580, 0.607577765190135510, 0.607617477440456350, 0.607657188171733090, 0.607696897383866900, +0.607736605076758860, 0.607776311250308950, 0.607816015904418250, 0.607855719038987500, 0.607895420653917770, 0.607935120749109160, 0.607974819324462850, 0.608014516379879360, +0.608054211915259990, 0.608093905930504720, 0.608133598425514620, 0.608173289400190660, 0.608212978854433710, 0.608252666788144050, 0.608292353201222660, 0.608332038093570390, +0.608371721465088440, 0.608411403315676780, 0.608451083645236700, 0.608490762453669180, 0.608530439740874400, 0.608570115506753550, 0.608609789751207390, 0.608649462474137090, +0.608689133675442860, 0.608728803355025770, 0.608768471512786570, 0.608808138148626670, 0.608847803262446030, 0.608887466854145850, 0.608927128923626990, 0.608966789470790750, +0.609006448495537090, 0.609046105997767430, 0.609085761977382400, 0.609125416434283310, 0.609165069368370340, 0.609204720779544790, 0.609244370667707310, 0.609284019032759310, +0.609323665874600960, 0.609363311193133360, 0.609402954988257920, 0.609442597259874600, 0.609482238007884920, 0.609521877232189650, 0.609561514932689950, 0.609601151109286140, +0.609640785761879520, 0.609680418890370830, 0.609720050494661490, 0.609759680574651690, 0.609799309130242720, 0.609838936161335440, 0.609878561667831160, 0.609918185649630070, +0.609957808106633690, 0.609997429038742660, 0.610037048445858380, 0.610076666327881160, 0.610116282684712300, 0.610155897516253100, 0.610195510822403750, 0.610235122603065670, +0.610274732858139820, 0.610314341587527400, 0.610353948791128810, 0.610393554468845360, 0.610433158620578010, 0.610472761246228180, 0.610512362345696060, 0.610551961918882950, +0.610591559965690030, 0.610631156486018510, 0.610670751479768790, 0.610710344946842180, 0.610749936887139630, 0.610789527300562680, 0.610829116187011520, 0.610868703546387560, +0.610908289378592210, 0.610947873683525880, 0.610987456461089760, 0.611027037711185050, 0.611066617433713040, 0.611106195628574160, 0.611145772295669800, 0.611185347434900940, +0.611224921046169210, 0.611264493129374700, 0.611304063684419030, 0.611343632711203180, 0.611383200209628550, 0.611422766179595680, 0.611462330621005750, 0.611501893533760050, +0.611541454917760020, 0.611581014772905940, 0.611620573099099340, 0.611660129896241410, 0.611699685164233340, 0.611739238902975770, 0.611778791112370100, 0.611818341792317870, +0.611857890942719360, 0.611897438563476110, 0.611936984654489310, 0.611976529215660480, 0.612016072246889810, 0.612055613748079040, 0.612095153719129260, 0.612134692159941980, +0.612174229070417520, 0.612213764450457500, 0.612253298299963110, 0.612292830618835770, 0.612332361406976110, 0.612371890664285430, 0.612411418390665040, 0.612450944586016570, +0.612490469250240310, 0.612529992383237800, 0.612569513984910770, 0.612609034055159540, 0.612648552593885840, 0.612688069600990650, 0.612727585076375590, 0.612767099019941310, +0.612806611431589320, 0.612846122311220710, 0.612885631658737220, 0.612925139474039150, 0.612964645757028360, 0.613004150507605930, 0.613043653725673490, 0.613083155411131560, +0.613122655563881790, 0.613162154183825250, 0.613201651270863790, 0.613241146824897830, 0.613280640845829010, 0.613320133333558950, 0.613359624287988070, 0.613399113709018230, +0.613438601596550610, 0.613478087950486860, 0.613517572770727490, 0.613557056057174250, 0.613596537809728340, 0.613636018028291490, 0.613675496712764110, 0.613714973863048070, +0.613754449479044560, 0.613793923560655320, 0.613833396107780980, 0.613872867120323070, 0.613912336598183010, 0.613951804541262410, 0.613991270949461930, 0.614030735822683420, +0.614070199160828280, 0.614109660963797380, 0.614149121231492230, 0.614188579963814370, 0.614228037160665430, 0.614267492821945930, 0.614306946947557830, 0.614346399537402220, +0.614385850591381070, 0.614425300109394890, 0.614464748091345550, 0.614504194537134230, 0.614543639446662790, 0.614583082819831980, 0.614622524656543430, 0.614661964956698560, +0.614701403720199100, 0.614740840946945810, 0.614780276636840430, 0.614819710789784260, 0.614859143405679260, 0.614898574484426090, 0.614938004025926350, 0.614977432030082040, +0.615016858496793770, 0.615056283425963410, 0.615095706817492260, 0.615135128671282280, 0.615174548987234120, 0.615213967765249500, 0.615253385005230080, 0.615292800707077480, +0.615332214870692450, 0.615371627495976960, 0.615411038582832410, 0.615450448131160680, 0.615489856140862380, 0.615529262611839490, 0.615568667543993420, 0.615608070937226030, +0.615647472791438060, 0.615686873106531470, 0.615726271882408030, 0.615765669118968570, 0.615805064816114970, 0.615844458973748730, 0.615883851591771610, 0.615923242670084580, +0.615962632208589380, 0.616002020207187640, 0.616041406665781110, 0.616080791584270870, 0.616120174962558550, 0.616159556800545790, 0.616198937098134560, 0.616238315855225590, +0.616277693071720760, 0.616317068747521790, 0.616356442882530550, 0.616395815476647680, 0.616435186529775470, 0.616474556041815450, 0.616513924012668800, 0.616553290442237390, +0.616592655330422620, 0.616632018677126690, 0.616671380482250340, 0.616710740745695430, 0.616750099467363810, 0.616789456647157230, 0.616828812284976660, 0.616868166380723950, +0.616907518934300960, 0.616946869945609540, 0.616986219414550560, 0.617025567341025980, 0.617064913724937550, 0.617104258566187110, 0.617143601864675760, 0.617182943620305350, +0.617222283832977610, 0.617261622502594420, 0.617300959629056960, 0.617340295212267080, 0.617379629252126750, 0.617418961748537050, 0.617458292701399850, 0.617497622110616980, +0.617536949976090430, 0.617576276297721160, 0.617615601075411140, 0.617654924309062210, 0.617694245998576250, 0.617733566143854330, 0.617772884744798520, 0.617812201801310470, +0.617851517313292240, 0.617890831280644930, 0.617930143703270480, 0.617969454581070780, 0.618008763913947660, 0.618048071701802430, 0.618087377944536830, 0.618126682642053280, +0.618165985794252640, 0.618205287401037080, 0.618244587462308150, 0.618283885977968240, 0.618323182947918220, 0.618362478372060260, 0.618401772250296130, 0.618441064582527900, +0.618480355368656640, 0.618519644608584440, 0.618558932302213260, 0.618598218449444960, 0.618637503050180840, 0.618676786104322970, 0.618716067611773110, 0.618755347572433450, +0.618794625986205050, 0.618833902852990110, 0.618873178172690720, 0.618912451945208050, 0.618951724170444310, 0.618990994848301220, 0.619030263978680990, 0.619069531561484700, +0.619108797596614640, 0.619148062083972550, 0.619187325023460740, 0.619226586414980180, 0.619265846258433170, 0.619305104553721560, 0.619344361300747550, 0.619383616499412320, +0.619422870149617940, 0.619462122251266400, 0.619501372804259990, 0.619540621808499780, 0.619579869263887970, 0.619619115170326860, 0.619658359527717640, 0.619697602335962490, +0.619736843594963280, 0.619776083304622420, 0.619815321464840970, 0.619854558075521140, 0.619893793136565010, 0.619933026647874750, 0.619972258609351570, 0.620011489020897640, +0.620050717882415060, 0.620089945193806000, 0.620129170954971780, 0.620168395165814680, 0.620207617826236460, 0.620246838936139630, 0.620286058495425400, 0.620325276503995940, +0.620364492961753330, 0.620403707868599770, 0.620442921224436670, 0.620482133029166220, 0.620521343282690820, 0.620560551984911670, 0.620599759135731180, 0.620638964735051200, +0.620678168782774260, 0.620717371278801560, 0.620756572223035370, 0.620795771615377800, 0.620834969455731130, 0.620874165743996680, 0.620913360480076840, 0.620952553663873590, +0.620991745295289220, 0.621030935374225270, 0.621070123900583910, 0.621109310874267240, 0.621148496295177650, 0.621187680163216460, 0.621226862478286180, 0.621266043240289000, +0.621305222449126340, 0.621344400104700600, 0.621383576206913980, 0.621422750755668660, 0.621461923750866170, 0.621501095192408810, 0.621540265080198770, 0.621579433414138350, +0.621618600194129070, 0.621657765420073340, 0.621696929091873020, 0.621736091209430850, 0.621775251772648140, 0.621814410781427180, 0.621853568235670280, 0.621892724135279850, +0.621931878480157190, 0.621971031270204810, 0.622010182505325250, 0.622049332185419910, 0.622088480310391210, 0.622127626880141230, 0.622166771894572590, 0.622205915353586710, +0.622245057257086010, 0.622284197604972670, 0.622323336397149210, 0.622362473633517040, 0.622401609313978700, 0.622440743438436250, 0.622479876006792440, 0.622519007018948470, +0.622558136474807070, 0.622597264374270210, 0.622636390717240640, 0.622675515503619770, 0.622714638733310010, 0.622753760406213660, 0.622792880522233360, 0.622831999081270400, +0.622871116083227540, 0.622910231528007170, 0.622949345415510950, 0.622988457745641270, 0.623027568518300550, 0.623066677733391190, 0.623105785390814740, 0.623144891490473920, +0.623183996032270810, 0.623223099016108060, 0.623262200441887290, 0.623301300309510920, 0.623340398618881350, 0.623379495369901120, 0.623418590562471840, 0.623457684196496050, +0.623496776271876050, 0.623535866788514470, 0.623574955746312830, 0.623614043145173880, 0.623653128985000140, 0.623692213265693130, 0.623731295987155710, 0.623770377149290070, +0.623809456751998730, 0.623848534795183430, 0.623887611278746810, 0.623926686202591170, 0.623965759566619150, 0.624004831370732480, 0.624043901614833580, 0.624082970298824980, +0.624122037422609300, 0.624161102986088290, 0.624200166989164360, 0.624239229431740040, 0.624278290313718070, 0.624317349634999960, 0.624356407395488590, 0.624395463595086350, +0.624434518233695330, 0.624473571311217830, 0.624512622827556490, 0.624551672782613920, 0.624590721176291890, 0.624629768008492900, 0.624668813279119610, 0.624707856988074630, +0.624746899135259600, 0.624785939720577390, 0.624824978743930280, 0.624864016205221140, 0.624903052104351600, 0.624942086441224400, 0.624981119215741950, 0.625020150427807120, +0.625059180077321530, 0.625098208164187930, 0.625137234688309170, 0.625176259649587120, 0.625215283047924290, 0.625254304883223310, 0.625293325155386830, 0.625332343864316800, +0.625371361009915860, 0.625410376592086540, 0.625449390610731570, 0.625488403065752820, 0.625527413957053020, 0.625566423284534710, 0.625605431048100740, 0.625644437247652840, +0.625683441883093770, 0.625722444954326160, 0.625761446461252760, 0.625800446403775410, 0.625839444781796870, 0.625878441595219770, 0.625917436843946960, 0.625956430527880190, +0.625995422646922320, 0.626034413200976300, 0.626073402189943780, 0.626112389613727840, 0.626151375472230990, 0.626190359765355970, 0.626229342493004660, 0.626268323655080010, +0.626307303251484540, 0.626346281282121220, 0.626385257746891910, 0.626424232645699350, 0.626463205978446180, 0.626502177745035470, 0.626541147945368860, 0.626580116579349420, +0.626619083646879680, 0.626658049147862610, 0.626697013082200050, 0.626735975449794980, 0.626774936250550250, 0.626813895484367830, 0.626852853151150800, 0.626891809250801460, +0.626930763783223100, 0.626969716748317360, 0.627008668145987440, 0.627047617976135840, 0.627086566238665430, 0.627125512933478290, 0.627164458060477490, 0.627203401619565450, +0.627242343610645240, 0.627281284033618820, 0.627320222888389290, 0.627359160174859150, 0.627398095892931380, 0.627437030042508060, 0.627475962623492260, 0.627514893635786830, +0.627553823079293750, 0.627592750953916200, 0.627631677259556820, 0.627670601996118460, 0.627709525163503310, 0.627748446761614340, 0.627787366790354300, 0.627826285249626140, +0.627865202139331950, 0.627904117459374800, 0.627943031209657220, 0.627981943390082510, 0.628020854000552630, 0.628059763040970550, 0.628098670511239020, 0.628137576411261220, +0.628176480740939120, 0.628215383500175810, 0.628254284688874120, 0.628293184306937040, 0.628332082354266520, 0.628370978830765870, 0.628409873736338160, 0.628448767070885370, +0.628487658834310790, 0.628526549026516950, 0.628565437647407020, 0.628604324696883320, 0.628643210174848700, 0.628682094081206010, 0.628720976415858560, 0.628759857178708190, +0.628798736369658330, 0.628837613988611490, 0.628876490035470970, 0.628915364510138960, 0.628954237412518550, 0.628993108742512460, 0.629031978500024010, 0.629070846684955160, +0.629109713297209330, 0.629148578336689470, 0.629187441803297890, 0.629226303696937660, 0.629265164017511760, 0.629304022764923140, 0.629342879939074230, 0.629381735539868090, +0.629420589567207590, 0.629459442020996020, 0.629498292901135460, 0.629537142207529100, 0.629575989940080020, 0.629614836098691180, 0.629653680683264990, 0.629692523693704540, +0.629731365129912900, 0.629770204991793040, 0.629809043279247470, 0.629847879992179170, 0.629886715130491550, 0.629925548694086790, 0.629964380682868200, 0.630003211096738620, +0.630042039935601370, 0.630080867199358740, 0.630119692887913920, 0.630158517001169760, 0.630197339539029790, 0.630236160501395970, 0.630274979888171830, 0.630313797699260330, +0.630352613934564540, 0.630391428593986890, 0.630430241677430780, 0.630469053184798960, 0.630507863115994940, 0.630546671470920810, 0.630585478249480080, 0.630624283451575950, +0.630663087077110830, 0.630701889125987900, 0.630740689598110360, 0.630779488493381390, 0.630818285811703290, 0.630857081552979590, 0.630895875717113140, 0.630934668304007350, +0.630973459313564520, 0.631012248745688060, 0.631051036600280950, 0.631089822877246580, 0.631128607576487370, 0.631167390697906620, 0.631206172241407400, 0.631244952206893030, +0.631283730594266010, 0.631322507403429660, 0.631361282634287040, 0.631400056286741560, 0.631438828360695540, 0.631477598856052480, 0.631516367772715800, 0.631555135110587810, +0.631593900869572010, 0.631632665049571500, 0.631671427650489560, 0.631710188672228830, 0.631748948114692510, 0.631787705977783890, 0.631826462261406370, 0.631865216965462270, +0.631903970089855220, 0.631942721634488170, 0.631981471599264770, 0.632020219984087190, 0.632058966788859200, 0.632097712013483750, 0.632136455657864360, 0.632175197721903450, +0.632213938205504530, 0.632252677108571250, 0.632291414431005780, 0.632330150172711880, 0.632368884333592510, 0.632407616913551300, 0.632446347912490770, 0.632485077330314230, +0.632523805166925080, 0.632562531422226850, 0.632601256096121830, 0.632639979188513670, 0.632678700699305650, 0.632717420628401190, 0.632756138975702820, 0.632794855741114050, +0.632833570924538180, 0.632872284525878740, 0.632910996545038240, 0.632949706981920320, 0.632988415836428400, 0.633027123108465100, 0.633065828797934050, 0.633104532904738340, +0.633143235428781700, 0.633181936369966560, 0.633220635728196650, 0.633259333503375150, 0.633298029695405610, 0.633336724304190630, 0.633375417329633980, 0.633414108771638620, +0.633452798630108390, 0.633491486904945830, 0.633530173596054570, 0.633568858703337900, 0.633607542226699350, 0.633646224166041660, 0.633684904521268470, 0.633723583292282950, +0.633762260478988760, 0.633800936081288620, 0.633839610099086180, 0.633878282532285060, 0.633916953380787800, 0.633955622644498230, 0.633994290323319550, 0.634032956417155510, +0.634071620925908740, 0.634110283849482980, 0.634148945187781420, 0.634187604940707920, 0.634226263108164990, 0.634264919690056490, 0.634303574686285620, 0.634342228096756220, +0.634380879921370820, 0.634419530160033270, 0.634458178812646880, 0.634496825879115380, 0.634535471359341520, 0.634574115253228930, 0.634612757560681360, 0.634651398281601660, +0.634690037415893360, 0.634728674963460080, 0.634767310924205350, 0.634805945298032030, 0.634844578084843960, 0.634883209284544340, 0.634921838897037020, 0.634960466922224740, +0.634999093360011370, 0.635037718210300190, 0.635076341472995190, 0.635114963147998870, 0.635153583235215200, 0.635192201734547490, 0.635230818645899700, 0.635269433969174570, +0.635308047704275740, 0.635346659851107170, 0.635385270409571600, 0.635423879379572900, 0.635462486761014470, 0.635501092553800160, 0.635539696757832840, 0.635578299373016240, +0.635616900399253780, 0.635655499836449530, 0.635694097684506240, 0.635732693943327650, 0.635771288612817290, 0.635809881692879000, 0.635848473183415750, 0.635887063084331290, +0.635925651395529260, 0.635964238116913380, 0.636002823248386530, 0.636041406789852660, 0.636079988741215630, 0.636118569102378180, 0.636157147873244400, 0.636195725053717690, +0.636234300643702120, 0.636272874643100340, 0.636311447051816410, 0.636350017869753870, 0.636388587096816670, 0.636427154732907670, 0.636465720777930730, 0.636504285231789480, +0.636542848094387880, 0.636581409365628790, 0.636619969045416180, 0.636658527133653670, 0.636697083630245240, 0.636735638535093740, 0.636774191848103020, 0.636812743569176940, +0.636851293698219360, 0.636889842235133120, 0.636928389179822310, 0.636966934532190890, 0.637005478292141710, 0.637044020459578970, 0.637082561034406080, 0.637121100016527110, +0.637159637405845140, 0.637198173202264020, 0.637236707405687500, 0.637275240016019540, 0.637313771033163110, 0.637352300457022290, 0.637390828287500710, 0.637429354524502330, +0.637467879167930350, 0.637506402217688510, 0.637544923673680760, 0.637583443535811090, 0.637621961803982450, 0.637660478478098810, 0.637698993558064480, 0.637737507043782180, +0.637776018935156230, 0.637814529232090140, 0.637853037934488110, 0.637891545042253090, 0.637930050555289290, 0.637968554473500320, 0.638007056796790260, 0.638045557525062310, +0.638084056658220430, 0.638122554196168370, 0.638161050138810300, 0.638199544486049210, 0.638238037237789380, 0.638276528393934340, 0.638315017954388390, 0.638353505919054490, +0.638391992287836940, 0.638430477060639600, 0.638468960237365880, 0.638507441817919630, 0.638545921802204820, 0.638584400190125520, 0.638622876981584930, 0.638661352176487120, +0.638699825774735940, 0.638738297776235590, 0.638776768180889130, 0.638815236988600650, 0.638853704199274230, 0.638892169812813830, 0.638930633829122630, 0.638969096248104830, +0.639007557069664280, 0.639046016293705280, 0.639084473920130790, 0.639122929948845230, 0.639161384379752230, 0.639199837212756190, 0.639238288447760210, 0.639276738084668450, +0.639315186123385230, 0.639353632563813720, 0.639392077405858130, 0.639430520649422300, 0.639468962294410530, 0.639507402340726010, 0.639545840788272920, 0.639584277636955360, +0.639622712886677380, 0.639661146537342300, 0.639699578588854290, 0.639738009041117440, 0.639776437894035820, 0.639814865147512850, 0.639853290801452590, 0.639891714855759240, +0.639930137310336880, 0.639968558165088800, 0.640006977419919300, 0.640045395074732790, 0.640083811129432470, 0.640122225583922510, 0.640160638438107110, 0.640199049691890340, +0.640237459345175730, 0.640275867397867350, 0.640314273849869390, 0.640352678701086030, 0.640391081951420690, 0.640429483600777560, 0.640467883649060710, 0.640506282096174660, +0.640544678942022380, 0.640583074186508510, 0.640621467829536880, 0.640659859871012040, 0.640698250310837050, 0.640736639148916540, 0.640775026385154820, 0.640813412019455080, +0.640851796051721820, 0.640890178481859140, 0.640928559309771330, 0.640966938535361800, 0.641005316158534840, 0.641043692179194660, 0.641082066597245650, 0.641120439412591000, +0.641158810625135360, 0.641197180234782560, 0.641235548241437250, 0.641273914645002720, 0.641312279445383380, 0.641350642642483430, 0.641389004236207150, 0.641427364226457960, +0.641465722613140390, 0.641504079396158940, 0.641542434575416820, 0.641580788150818760, 0.641619140122268620, 0.641657490489671020, 0.641695839252929280, 0.641734186411948020, +0.641772531966631310, 0.641810875916883570, 0.641849218262608320, 0.641887559003709970, 0.641925898140092820, 0.641964235671661170, 0.642002571598318640, 0.642040905919969650, +0.642079238636518390, 0.642117569747869490, 0.642155899253926240, 0.642194227154593180, 0.642232553449774590, 0.642270878139375000, 0.642309201223297820, 0.642347522701447680, +0.642385842573729100, 0.642424160840045500, 0.642462477500301610, 0.642500792554401400, 0.642539106002249620, 0.642577417843749670, 0.642615728078806290, 0.642654036707323460, +0.642692343729205920, 0.642730649144357290, 0.642768952952681880, 0.642807255154084210, 0.642845555748468690, 0.642883854735738950, 0.642922152115799510, 0.642960447888554780, +0.642998742053909170, 0.643037034611766420, 0.643075325562031170, 0.643113614904607830, 0.643151902639400140, 0.643190188766312730, 0.643228473285249790, 0.643266756196116060, +0.643305037498815070, 0.643343317193251550, 0.643381595279329700, 0.643419871756954140, 0.643458146626028630, 0.643496419886457780, 0.643534691538145800, 0.643572961580997420, +0.643611230014916380, 0.643649496839807210, 0.643687762055574320, 0.643726025662122340, 0.643764287659355010, 0.643802548047176960, 0.643840806825492830, 0.643879063994206360, +0.643917319553222180, 0.643955573502444810, 0.643993825841778780, 0.644032076571127820, 0.644070325690396680, 0.644108573199489780, 0.644146819098311730, 0.644185063386766400, +0.644223306064758310, 0.644261547132191970, 0.644299786588972130, 0.644338024435002430, 0.644376260670187720, 0.644414495294432290, 0.644452728307641000, 0.644490959709717590, +0.644529189500566810, 0.644567417680092960, 0.644605644248200990, 0.644643869204794440, 0.644682092549778370, 0.644720314283057320, 0.644758534404535230, 0.644796752914116640, +0.644834969811706290, 0.644873185097208920, 0.644911398770528050, 0.644949610831568880, 0.644987821280235570, 0.645026030116433110, 0.645064237340065130, 0.645102442951036690, +0.645140646949252110, 0.645178849334616220, 0.645217050107032790, 0.645255249266406870, 0.645293446812642780, 0.645331642745645360, 0.645369837065318590, 0.645408029771567190, +0.645446220864296040, 0.645484410343408980, 0.645522598208810860, 0.645560784460406320, 0.645598969098100220, 0.645637152121796290, 0.645675333531399390, 0.645713513326814260, +0.645751691507945650, 0.645789868074697520, 0.645828043026974720, 0.645866216364681670, 0.645904388087723550, 0.645942558196004100, 0.645980726689428300, 0.646018893567900650, +0.646057058831326030, 0.646095222479608490, 0.646133384512652900, 0.646171544930364220, 0.646209703732646300, 0.646247860919404000, 0.646286016490542180, 0.646324170445965680, +0.646362322785578370, 0.646400473509285310, 0.646438622616991030, 0.646476770108600500, 0.646514915984017670, 0.646553060243147630, 0.646591202885894890, 0.646629343912164530, +0.646667483321860530, 0.646705621114887720, 0.646743757291150860, 0.646781891850555010, 0.646820024793004040, 0.646858156118403030, 0.646896285826656590, 0.646934413917669810, +0.646972540391346660, 0.647010665247592100, 0.647048788486311200, 0.647086910107408150, 0.647125030110787700, 0.647163148496354700, 0.647201265264014220, 0.647239380413670130, +0.647277493945227710, 0.647315605858591490, 0.647353716153666550, 0.647391824830357070, 0.647429931888567900, 0.647468037328204020, 0.647506141149170380, 0.647544243351371060, +0.647582343934711040, 0.647620442899095260, 0.647658540244428590, 0.647696635970615330, 0.647734730077560440, 0.647772822565169100, 0.647810913433345400, 0.647849002681994300, +0.647887090311020760, 0.647925176320329870, 0.647963260709825680, 0.648001343479413290, 0.648039424628997550, 0.648077504158483640, 0.648115582067775640, 0.648153658356778630, +0.648191733025397450, 0.648229806073537420, 0.648267877501102370, 0.648305947307997730, 0.648344015494128120, 0.648382082059398850, 0.648420147003714090, 0.648458210326978920, +0.648496272029098650, 0.648534332109977240, 0.648572390569520100, 0.648610447407631850, 0.648648502624217920, 0.648686556219182360, 0.648724608192430500, 0.648762658543867050, +0.648800707273397230, 0.648838754380925420, 0.648876799866356600, 0.648914843729595850, 0.648952885970548340, 0.648990926589118280, 0.649028965585210840, 0.649067002958731100, +0.649105038709584140, 0.649143072837674250, 0.649181105342906630, 0.649219136225186570, 0.649257165484418360, 0.649295193120507320, 0.649333219133358170, 0.649371243522876450, +0.649409266288966220, 0.649447287431532790, 0.649485306950481120, 0.649523324845716620, 0.649561341117143360, 0.649599355764666760, 0.649637368788191890, 0.649675380187623830, +0.649713389962866980, 0.649751398113826650, 0.649789404640407910, 0.649827409542515940, 0.649865412820055170, 0.649903414472930760, 0.649941414501047920, 0.649979412904311830, +0.650017409682626780, 0.650055404835898300, 0.650093398364031680, 0.650131390266931230, 0.650169380544502240, 0.650207369196649790, 0.650245356223279280, 0.650283341624295020, +0.650321325399602520, 0.650359307549106540, 0.650397288072712800, 0.650435266970325390, 0.650473244241849820, 0.650511219887191180, 0.650549193906254760, 0.650587166298945090, +0.650625137065167450, 0.650663106204827040, 0.650701073717829150, 0.650739039604078200, 0.650777003863479700, 0.650814966495939060, 0.650852927501360590, 0.650890886879649910, +0.650928844630711880, 0.650966800754452120, 0.651004755250775060, 0.651042708119586090, 0.651080659360790400, 0.651118608974293300, 0.651156556959999410, 0.651194503317814140, +0.651232448047642580, 0.651270391149390230, 0.651308332622961620, 0.651346272468262160, 0.651384210685197030, 0.651422147273671650, 0.651460082233590530, 0.651498015564859310, +0.651535947267383290, 0.651573877341067200, 0.651611805785816230, 0.651649732601535910, 0.651687657788131540, 0.651725581345507730, 0.651763503273569910, 0.651801423572223370, +0.651839342241373520, 0.651877259280925100, 0.651915174690783420, 0.651953088470853870, 0.651991000621041980, 0.652028911141252170, 0.652066820031390050, 0.652104727291360930, +0.652142632921070440, 0.652180536920422880, 0.652218439289323990, 0.652256340027679070, 0.652294239135393640, 0.652332136612372220, 0.652370032458520430, 0.652407926673744030, +0.652445819257947420, 0.652483710211036130, 0.652521599532915660, 0.652559487223491660, 0.652597373282668420, 0.652635257710351800, 0.652673140506447090, 0.652711021670859810, +0.652748901203494600, 0.652786779104257200, 0.652824655373052900, 0.652862530009787220, 0.652900403014364920, 0.652938274386691610, 0.652976144126672600, 0.653014012234213510, +0.653051878709219100, 0.653089743551594990, 0.653127606761246930, 0.653165468338079420, 0.653203328281998340, 0.653241186592908860, 0.653279043270716730, 0.653316898315326690, +0.653354751726644480, 0.653392603504575290, 0.653430453649024970, 0.653468302159898150, 0.653506149037100580, 0.653543994280537670, 0.653581837890115040, 0.653619679865737550, +0.653657520207310830, 0.653695358914740290, 0.653733195987931780, 0.653771031426789830, 0.653808865231220390, 0.653846697401129110, 0.653884527936420710, 0.653922356837000950, +0.653960184102775340, 0.653998009733649630, 0.654035833729528560, 0.654073656090317980, 0.654111476815923080, 0.654149295906249930, 0.654187113361203280, 0.654224929180688750, +0.654262743364611880, 0.654300555912878500, 0.654338366825393480, 0.654376176102062450, 0.654413983742791030, 0.654451789747484970, 0.654489594116049120, 0.654527396848389230, +0.654565197944411150, 0.654602997404019840, 0.654640795227121040, 0.654678591413620170, 0.654716385963423190, 0.654754178876434940, 0.654791970152561190, 0.654829759791707540, +0.654867547793779870, 0.654905334158682910, 0.654943118886322730, 0.654980901976604630, 0.655018683429434700, 0.655056463244717670, 0.655094241422359500, 0.655132017962265830, +0.655169792864342290, 0.655207566128494070, 0.655245337754626790, 0.655283107742646200, 0.655320876092458260, 0.655358642803967720, 0.655396407877080640, 0.655434171311702900, +0.655471933107739320, 0.655509693265095890, 0.655547451783678240, 0.655585208663392320, 0.655622963904143100, 0.655660717505836320, 0.655698469468377840, 0.655736219791673510, +0.655773968475628300, 0.655811715520148280, 0.655849460925138850, 0.655887204690506100, 0.655924946816154990, 0.655962687301991590, 0.656000426147921420, 0.656038163353850460, +0.656075898919683880, 0.656113632845327530, 0.656151365130687390, 0.656189095775668530, 0.656226824780176910, 0.656264552144118160, 0.656302277867398480, 0.656340001949922700, +0.656377724391596920, 0.656415445192326860, 0.656453164352018610, 0.656490881870576910, 0.656528597747908170, 0.656566311983917910, 0.656604024578512190, 0.656641735531595990, +0.656679444843075500, 0.656717152512856450, 0.656754858540844810, 0.656792562926945770, 0.656830265671065280, 0.656867966773109440, 0.656905666232983300, 0.656943364050593060, +0.656981060225844350, 0.657018754758643350, 0.657056447648895150, 0.657094138896505810, 0.657131828501381190, 0.657169516463427250, 0.657207202782549290, 0.657244887458653170, +0.657282570491644960, 0.657320251881430620, 0.657357931627915230, 0.657395609731005190, 0.657433286190605930, 0.657470961006623940, 0.657508634178964100, 0.657546305707532810, +0.657583975592235690, 0.657621643832978940, 0.657659310429667740, 0.657696975382208280, 0.657734638690506750, 0.657772300354468210, 0.657809960373998970, 0.657847618749004880, +0.657885275479392020, 0.657922930565065570, 0.657960584005931940, 0.657998235801896760, 0.658035885952866330, 0.658073534458745830, 0.658111181319441570, 0.658148826534859290, +0.658186470104905390, 0.658224112029484830, 0.658261752308504030, 0.658299390941868960, 0.658337027929485560, 0.658374663271259370, 0.658412296967096580, 0.658449929016903250, +0.658487559420584900, 0.658525188178047500, 0.658562815289197250, 0.658600440753940310, 0.658638064572181770, 0.658675686743828260, 0.658713307268785410, 0.658750926146959740, +0.658788543378256320, 0.658826158962581570, 0.658863772899841440, 0.658901385189942120, 0.658938995832789140, 0.658976604828288570, 0.659014212176346480, 0.659051817876869280, +0.659089421929762160, 0.659127024334931530, 0.659164625092283570, 0.659202224201723810, 0.659239821663158420, 0.659277417476493600, 0.659315011641635420, 0.659352604158489400, +0.659390195026961940, 0.659427784246959030, 0.659465371818386830, 0.659502957741150970, 0.659540542015157770, 0.659578124640313180, 0.659615705616523500, 0.659653284943694350, +0.659690862621731930, 0.659728438650542430, 0.659766013030032020, 0.659803585760106340, 0.659841156840671680, 0.659878726271634570, 0.659916294052900200, 0.659953860184375070, +0.659991424665965280, 0.660028987497577320, 0.660066548679116630, 0.660104108210489480, 0.660141666091601960, 0.660179222322360810, 0.660216776902671110, 0.660254329832439590, +0.660291881111572110, 0.660329430739975410, 0.660366978717554680, 0.660404525044216540, 0.660442069719867190, 0.660479612744412910, 0.660517154117759240, 0.660554693839812690, +0.660592231910479440, 0.660629768329665910, 0.660667303097277610, 0.660704836213221180, 0.660742367677402910, 0.660779897489728320, 0.660817425650104040, 0.660854952158436260, +0.660892477014631390, 0.660930000218594940, 0.660967521770233550, 0.661005041669453290, 0.661042559916160790, 0.661080076510261570, 0.661117591451662160, 0.661155104740268840, +0.661192616375988030, 0.661230126358725360, 0.661267634688387340, 0.661305141364880170, 0.661342646388110580, 0.661380149757984090, 0.661417651474407120, 0.661455151537286400, +0.661492649946527460, 0.661530146702036910, 0.661567641803720960, 0.661605135251486230, 0.661642627045238350, 0.661680117184883950, 0.661717605670329220, 0.661755092501480790, +0.661792577678244290, 0.661830061200526340, 0.661867543068233370, 0.661905023281271650, 0.661942501839547280, 0.661979978742966440, 0.662017453991435740, 0.662054927584861840, +0.662092399523150130, 0.662129869806207470, 0.662167338433940600, 0.662204805406254930, 0.662242270723057190, 0.662279734384253800, 0.662317196389751510, 0.662354656739455820, +0.662392115433273480, 0.662429572471110890, 0.662467027852874700, 0.662504481578470640, 0.662541933647805230, 0.662579384060785090, 0.662616832817316870, 0.662654279917306190, +0.662691725360659790, 0.662729169147284080, 0.662766611277085800, 0.662804051749970700, 0.662841490565845400, 0.662878927724616320, 0.662916363226190410, 0.662953797070473190, +0.662991229257371420, 0.663028659786791930, 0.663066088658640580, 0.663103515872823900, 0.663140941429248400, 0.663178365327820930, 0.663215787568447230, 0.663253208151034060, +0.663290627075487800, 0.663328044341715330, 0.663365459949622480, 0.663402873899115900, 0.663440286190102200, 0.663477696822488140, 0.663515105796179450, 0.663552513111082990, +0.663589918767105270, 0.663627322764153040, 0.663664725102132260, 0.663702125780949560, 0.663739524800512020, 0.663776922160725260, 0.663814317861496140, 0.663851711902731290, +0.663889104284337450, 0.663926495006220590, 0.663963884068287440, 0.664001271470444520, 0.664038657212598920, 0.664076041294656140, 0.664113423716523380, 0.664150804478107040, +0.664188183579314080, 0.664225561020050260, 0.664262936800222530, 0.664300310919737510, 0.664337683378501960, 0.664375054176421950, 0.664412423313404330, 0.664449790789355950, +0.664487156604182670, 0.664524520757791670, 0.664561883250089250, 0.664599244080982480, 0.664636603250377210, 0.664673960758180530, 0.664711316604298940, 0.664748670788639310, +0.664786023311107700, 0.664823374171611080, 0.664860723370055970, 0.664898070906349450, 0.664935416780397360, 0.664972760992106780, 0.665010103541384230, 0.665047444428136790, +0.665084783652270420, 0.665122121213692070, 0.665159457112308730, 0.665196791348026450, 0.665234123920752210, 0.665271454830392630, 0.665308784076854790, 0.665346111660044540, +0.665383437579869170, 0.665420761836235110, 0.665458084429049520, 0.665495405358218270, 0.665532724623648650, 0.665570042225247180, 0.665607358162920940, 0.665644672436575880, +0.665681985046119310, 0.665719295991457630, 0.665756605272498140, 0.665793912889146800, 0.665831218841310580, 0.665868523128896330, 0.665905825751811230, 0.665943126709961140, +0.665980426003253250, 0.666017723631594620, 0.666055019594891330, 0.666092313893050570, 0.666129606525978970, 0.666166897493583600, 0.666204186795770760, 0.666241474432447410, +0.666278760403520410, 0.666316044708896830, 0.666353327348482850, 0.666390608322185440, 0.666427887629911670, 0.666465165271568400, 0.666502441247061930, 0.666539715556299320, +0.666576988199187430, 0.666614259175633330, 0.666651528485543430, 0.666688796128824590, 0.666726062105384100, 0.666763326415128140, 0.666800589057963800, 0.666837850033798030, +0.666875109342538020, 0.666912366984089840, 0.666949622958360800, 0.666986877265257630, 0.667024129904687620, 0.667061380876557090, 0.667098630180772870, 0.667135877817242260, +0.667173123785872240, 0.667210368086569080, 0.667247610719239990, 0.667284851683791810, 0.667322090980131840, 0.667359328608166380, 0.667396564567802610, 0.667433798858947710, +0.667471031481507990, 0.667508262435390740, 0.667545491720502810, 0.667582719336751510, 0.667619945284043000, 0.667657169562284710, 0.667694392171383380, 0.667731613111246510, +0.667768832381780310, 0.667806049982891950, 0.667843265914488390, 0.667880480176477050, 0.667917692768764340, 0.667954903691257210, 0.667992112943862850, 0.668029320526488670, +0.668066526439040740, 0.668103730681426480, 0.668140933253552950, 0.668178134155327340, 0.668215333386656170, 0.668252530947446630, 0.668289726837606010, 0.668326921057040830, +0.668364113605658390, 0.668401304483365540, 0.668438493690069800, 0.668475681225677580, 0.668512867090096050, 0.668550051283232420, 0.668587233804993960, 0.668624414655287100, +0.668661593834019240, 0.668698771341097340, 0.668735947176428920, 0.668773121339920170, 0.668810293831478720, 0.668847464651011530, 0.668884633798426000, 0.668921801273628550, +0.668958967076526580, 0.668996131207027500, 0.669033293665037830, 0.669070454450464870, 0.669107613563215800, 0.669144771003198020, 0.669181926770317960, 0.669219080864483120, +0.669256233285600580, 0.669293384033577740, 0.669330533108321140, 0.669367680509738160, 0.669404826237736120, 0.669441970292222190, 0.669479112673103120, 0.669516253380286200, +0.669553392413678620, 0.669590529773188000, 0.669627665458720660, 0.669664799470184090, 0.669701931807485940, 0.669739062470532610, 0.669776191459231620, 0.669813318773490150, +0.669850444413215730, 0.669887568378314870, 0.669924690668695090, 0.669961811284263580, 0.669998930224927850, 0.670036047490594420, 0.670073163081170930, 0.670110276996564560, +0.670147389236682820, 0.670184499801432240, 0.670221608690720450, 0.670258715904454630, 0.670295821442542290, 0.670332925304890080, 0.670370027491405620, 0.670407128001996420, +0.670444226836569010, 0.670481323995031130, 0.670518419477289850, 0.670555513283252800, 0.670592605412826730, 0.670629695865919140, 0.670666784642437340, 0.670703871742288850, +0.670740957165380400, 0.670778040911619520, 0.670815122980913610, 0.670852203373170090, 0.670889282088295790, 0.670926359126198360, 0.670963434486784970, 0.671000508169963260, +0.671037580175640080, 0.671074650503722840, 0.671111719154119050, 0.671148786126736230, 0.671185851421481130, 0.671222915038261370, 0.671259976976984700, 0.671297037237557850, +0.671334095819888230, 0.671371152723883480, 0.671408207949451220, 0.671445261496497970, 0.671482313364931690, 0.671519363554659580, 0.671556412065589360, 0.671593458897627780, +0.671630504050682590, 0.671667547524661180, 0.671704589319471190, 0.671741629435019360, 0.671778667871213540, 0.671815704627960920, 0.671852739705169450, 0.671889773102745890, +0.671926804820597750, 0.671963834858632980, 0.672000863216758340, 0.672037889894881450, 0.672074914892909940, 0.672111938210751440, 0.672148959848312690, 0.672185979805501650, +0.672222998082225520, 0.672260014678392360, 0.672297029593908800, 0.672334042828682590, 0.672371054382621350, 0.672408064255632820, 0.672445072447623750, 0.672482078958501980, +0.672519083788175040, 0.672556086936550780, 0.672593088403535930, 0.672630088189038360, 0.672667086292965900, 0.672704082715225300, 0.672741077455724650, 0.672778070514371220, +0.672815061891072990, 0.672852051585736800, 0.672889039598270400, 0.672926025928581420, 0.672963010576577700, 0.672999993542166110, 0.673036974825254600, 0.673073954425750580, +0.673110932343562120, 0.673147908578595850, 0.673184883130759970, 0.673221855999961760, 0.673258827186109300, 0.673295796689109330, 0.673332764508870030, 0.673369730645298700, +0.673406695098303420, 0.673443657867791030, 0.673480618953669620, 0.673517578355846910, 0.673554536074229880, 0.673591492108726600, 0.673628446459244580, 0.673665399125691680, +0.673702350107975080, 0.673739299406002520, 0.673776247019681640, 0.673813192948920610, 0.673850137193626190, 0.673887079753706430, 0.673924020629069090, 0.673960959819621900, +0.673997897325272040, 0.674034833145927380, 0.674071767281495650, 0.674108699731884920, 0.674145630497002050, 0.674182559576755100, 0.674219486971052050, 0.674256412679799970, +0.674293336702906920, 0.674330259040280430, 0.674367179691828690, 0.674404098657458650, 0.674441015937078390, 0.674477931530595540, 0.674514845437918180, 0.674551757658953480, +0.674588668193609300, 0.674625577041793490, 0.674662484203414010, 0.674699389678378060, 0.674736293466593580, 0.674773195567968440, 0.674810095982410600, 0.674846994709827120, +0.674883891750126310, 0.674920787103216010, 0.674957680769003420, 0.674994572747396600, 0.675031463038303300, 0.675068351641631810, 0.675105238557288990, 0.675142123785183120, +0.675179007325221960, 0.675215889177313680, 0.675252769341365240, 0.675289647817284840, 0.675326524604980440, 0.675363399704359990, 0.675400273115330680, 0.675437144837800820, +0.675474014871678020, 0.675510883216870470, 0.675547749873285360, 0.675584614840830990, 0.675621478119415310, 0.675658339708945730, 0.675695199609330220, 0.675732057820476630, +0.675768914342293360, 0.675805769174687490, 0.675842622317567090, 0.675879473770840120, 0.675916323534414890, 0.675953171608198460, 0.675990017992099120, 0.676026862686024740, +0.676063705689883500, 0.676100547003582800, 0.676137386627030600, 0.676174224560134980, 0.676211060802804020, 0.676247895354945230, 0.676284728216466680, 0.676321559387276230, +0.676358388867282280, 0.676395216656392020, 0.676432042754513630, 0.676468867161555630, 0.676505689877424990, 0.676542510902030210, 0.676579330235279050, 0.676616147877080020, +0.676652963827340190, 0.676689778085967970, 0.676726590652871440, 0.676763401527958660, 0.676800210711136940, 0.676837018202314900, 0.676873824001400170, 0.676910628108301270, +0.676947430522925390, 0.676984231245181030, 0.677021030274976070, 0.677057827612218780, 0.677094623256816690, 0.677131417208677980, 0.677168209467711170, 0.677205000033823450, +0.677241788906923100, 0.677278576086918440, 0.677315361573717630, 0.677352145367228100, 0.677388927467358130, 0.677425707874015900, 0.677462486587109720, 0.677499263606547000, +0.677536038932236130, 0.677572812564085190, 0.677609584502002480, 0.677646354745895520, 0.677683123295672600, 0.677719890151242010, 0.677756655312511840, 0.677793418779389920, +0.677830180551784340, 0.677866940629603620, 0.677903699012755160, 0.677940455701147580, 0.677977210694688860, 0.678013963993287390, 0.678050715596850710, 0.678087465505287200, +0.678124213718505060, 0.678160960236412700, 0.678197705058917630, 0.678234448185928260, 0.678271189617352780, 0.678307929353099690, 0.678344667393076420, 0.678381403737191470, +0.678418138385353030, 0.678454871337469510, 0.678491602593448540, 0.678528332153198630, 0.678565060016627860, 0.678601786183644750, 0.678638510654156810, 0.678675233428072570, +0.678711954505300640, 0.678748673885748440, 0.678785391569324600, 0.678822107555937300, 0.678858821845495060, 0.678895534437905400, 0.678932245333076940, 0.678968954530917770, +0.679005662031336720, 0.679042367834240990, 0.679079071939539420, 0.679115774347140210, 0.679152475056951870, 0.679189174068882020, 0.679225871382839190, 0.679262566998731780, +0.679299260916468190, 0.679335953135956180, 0.679372643657104260, 0.679409332479821050, 0.679446019604014180, 0.679482705029592290, 0.679519388756463560, 0.679556070784536730, +0.679592751113719420, 0.679629429743920270, 0.679666106675047450, 0.679702781907009830, 0.679739455439714810, 0.679776127273071130, 0.679812797406987190, 0.679849465841371630, +0.679886132576131950, 0.679922797611177020, 0.679959460946415130, 0.679996122581754790, 0.680032782517103970, 0.680069440752371080, 0.680106097287464960, 0.680142752122293250, +0.680179405256764680, 0.680216056690787660, 0.680252706424270710, 0.680289354457121800, 0.680326000789249320, 0.680362645420562020, 0.680399288350968300, 0.680435929580376130, +0.680472569108694140, 0.680509206935830610, 0.680545843061694520, 0.680582477486193380, 0.680619110209236160, 0.680655741230731030, 0.680692370550586960, 0.680728998168711690, +0.680765624085013840, 0.680802248299402280, 0.680838870811784850, 0.680875491622070060, 0.680912110730166660, 0.680948728135983390, 0.680985343839427880, 0.681021957840408980, +0.681058570138835200, 0.681095180734615390, 0.681131789627657190, 0.681168396817869670, 0.681205002305161010, 0.681241606089440290, 0.681278208170615130, 0.681314808548594500, +0.681351407223286800, 0.681388004194600990, 0.681424599462444820, 0.681461193026727140, 0.681497784887356460, 0.681534375044241640, 0.681570963497290520, 0.681607550246412060, +0.681644135291515020, 0.681680718632507340, 0.681717300269297890, 0.681753880201795060, 0.681790458429908040, 0.681827034953544460, 0.681863609772613290, 0.681900182887023030, +0.681936754296682770, 0.681973324001500240, 0.682009892001384400, 0.682046458296243770, 0.682083022885987320, 0.682119585770523120, 0.682156146949759900, 0.682192706423606190, +0.682229264191971160, 0.682265820254762680, 0.682302374611889580, 0.682338927263260840, 0.682375478208784520, 0.682412027448369480, 0.682448574981924350, 0.682485120809358190, +0.682521664930578860, 0.682558207345495330, 0.682594748054016320, 0.682631287056050700, 0.682667824351506640, 0.682704359940292990, 0.682740893822318400, 0.682777425997491920, +0.682813956465721520, 0.682850485226916270, 0.682887012280984810, 0.682923537627836200, 0.682960061267378290, 0.682996583199520280, 0.683033103424171230, 0.683069621941238990, +0.683106138750632750, 0.683142653852261140, 0.683179167246033110, 0.683215678931856970, 0.683252188909641680, 0.683288697179295750, 0.683325203740728580, 0.683361708593847930, +0.683398211738563080, 0.683434713174782660, 0.683471212902415860, 0.683507710921370640, 0.683544207231556180, 0.683580701832881220, 0.683617194725254730, 0.683653685908585000, +0.683690175382781100, 0.683726663147751660, 0.683763149203405970, 0.683799633549652010, 0.683836116186399060, 0.683872597113556080, 0.683909076331031260, 0.683945553838733790, +0.683982029636572400, 0.684018503724456270, 0.684054976102293600, 0.684091446769993450, 0.684127915727464790, 0.684164382974616570, 0.684200848511356980, 0.684237312337595440, +0.684273774453240560, 0.684310234858201530, 0.684346693552386530, 0.684383150535704980, 0.684419605808065380, 0.684456059369377150, 0.684492511219548460, 0.684528961358488510, +0.684565409786106470, 0.684601856502310540, 0.684638301507010110, 0.684674744800113810, 0.684711186381530950, 0.684747626251169810, 0.684784064408939570, 0.684820500854749330, +0.684856935588508020, 0.684893368610124060, 0.684929799919506750, 0.684966229516564830, 0.685002657401207800, 0.685039083573343750, 0.685075508032881860, 0.685111930779731430, +0.685148351813801290, 0.685184771135000090, 0.685221188743236900, 0.685257604638421000, 0.685294018820460930, 0.685330431289265630, 0.685366842044744410, 0.685403251086806330, +0.685439658415359810, 0.685476064030314140, 0.685512467931578270, 0.685548870119061630, 0.685585270592672490, 0.685621669352320050, 0.685658066397913600, 0.685694461729362210, +0.685730855346574410, 0.685767247249459370, 0.685803637437926270, 0.685840025911884420, 0.685876412671242220, 0.685912797715908850, 0.685949181045793940, 0.685985562660805680, +0.686021942560853580, 0.686058320745846610, 0.686094697215694050, 0.686131071970304540, 0.686167445009587370, 0.686203816333451510, 0.686240185941806470, 0.686276553834560650, +0.686312920011623360, 0.686349284472903890, 0.686385647218311520, 0.686422008247754680, 0.686458367561142760, 0.686494725158384940, 0.686531081039390760, 0.686567435204068380, +0.686603787652327550, 0.686640138384077230, 0.686676487399226820, 0.686712834697684850, 0.686749180279360830, 0.686785524144164160, 0.686821866292003480, 0.686858206722787970, +0.686894545436427030, 0.686930882432830070, 0.686967217711905500, 0.687003551273563050, 0.687039883117711580, 0.687076213244260710, 0.687112541653119080, 0.687148868344195970, +0.687185193317400800, 0.687221516572642970, 0.687257838109830990, 0.687294157928874380, 0.687330476029682450, 0.687366792412164580, 0.687403107076229420, 0.687439420021786600, +0.687475731248745390, 0.687512040757014660, 0.687548348546503710, 0.687584654617122040, 0.687620958968778950, 0.687657261601383190, 0.687693562514844150, 0.687729861709071360, +0.687766159183974100, 0.687802454939461240, 0.687838748975442280, 0.687875041291826310, 0.687911331888523160, 0.687947620765441250, 0.687983907922490420, 0.688020193359579760, +0.688056477076618880, 0.688092759073516640, 0.688129039350182330, 0.688165317906525800, 0.688201594742455680, 0.688237869857881600, 0.688274143252712860, 0.688310414926858960, +0.688346684880228770, 0.688382953112731900, 0.688419219624277660, 0.688455484414775660, 0.688491747484134550, 0.688528008832264170, 0.688564268459073700, 0.688600526364473000, +0.688636782548370570, 0.688673037010676170, 0.688709289751299190, 0.688745540770149380, 0.688781790067135360, 0.688818037642166870, 0.688854283495153210, 0.688890527626004220, +0.688926770034628540, 0.688963010720936020, 0.688999249684836280, 0.689035486926238060, 0.689071722445051100, 0.689107956241184930, 0.689144188314549040, 0.689180418665052530, +0.689216647292604900, 0.689252874197115670, 0.689289099378494470, 0.689325322836650270, 0.689361544571492790, 0.689397764582931450, 0.689433982870875980, 0.689470199435235240, +0.689506414275919080, 0.689542627392836780, 0.689578838785898320, 0.689615048455012420, 0.689651256400088840, 0.689687462621037530, 0.689723667117767110, 0.689759869890187670, +0.689796070938208490, 0.689832270261739430, 0.689868467860689450, 0.689904663734968170, 0.689940857884485340, 0.689977050309150690, 0.690013241008872960, 0.690049429983562220, +0.690085617233128000, 0.690121802757479920, 0.690157986556527050, 0.690194168630179240, 0.690230348978346010, 0.690266527600937210, 0.690302704497861800, 0.690338879669029630, +0.690375053114350550, 0.690411224833733520, 0.690447394827088390, 0.690483563094324790, 0.690519729635352690, 0.690555894450080810, 0.690592057538419350, 0.690628218900277590, +0.690664378535565730, 0.690700536444192490, 0.690736692626067960, 0.690772847081101760, 0.690808999809203740, 0.690845150810282860, 0.690881300084249080, 0.690917447631012040, +0.690953593450481800, 0.690989737542567210, 0.691025879907178230, 0.691062020544224610, 0.691098159453616300, 0.691134296635262160, 0.691170432089072360, 0.691206565814956760, +0.691242697812824440, 0.691278828082585340, 0.691314956624149210, 0.691351083437426020, 0.691387208522324830, 0.691423331878755490, 0.691459453506627960, 0.691495573405851990, +0.691531691576336870, 0.691567808017992560, 0.691603922730728570, 0.691640035714455200, 0.691676146969081420, 0.691712256494517290, 0.691748364290672440, 0.691784470357457050, +0.691820574694780090, 0.691856677302551850, 0.691892778180682070, 0.691928877329080150, 0.691964974747655950, 0.692001070436319420, 0.692037164394980420, 0.692073256623548240, +0.692109347121932950, 0.692145435890044290, 0.692181522927792340, 0.692217608235086160, 0.692253691811836050, 0.692289773657951750, 0.692325853773343320, 0.692361932157919970, +0.692398008811591750, 0.692434083734268400, 0.692470156925860340, 0.692506228386276400, 0.692542298115427000, 0.692578366113222100, 0.692614432379571100, 0.692650496914383850, +0.692686559717570540, 0.692722620789041010, 0.692758680128704670, 0.692794737736471600, 0.692830793612251640, 0.692866847755955080, 0.692902900167491120, 0.692938950846769820, +0.692974999793701250, 0.693011047008195380, 0.693047092490161610, 0.693083136239510230, 0.693119178256150880, 0.693155218539993840, 0.693191257090948640, 0.693227293908925120, +0.693263328993833810, 0.693299362345583760, 0.693335393964085390, 0.693371423849248440, 0.693407452000983300, 0.693443478419199180, 0.693479503103806460, 0.693515526054714890, +0.693551547271834880, 0.693587566755075600, 0.693623584504347470, 0.693659600519560330, 0.693695614800624580, 0.693731627347449420, 0.693767638159945240, 0.693803647238021900, +0.693839654581589800, 0.693875660190558240, 0.693911664064837620, 0.693947666204337680, 0.693983666608969040, 0.694019665278640780, 0.694055662213263420, 0.694091657412747250, +0.694127650877001570, 0.694163642605936770, 0.694199632599462930, 0.694235620857490240, 0.694271607379928210, 0.694307592166687140, 0.694343575217677200, 0.694379556532808470, +0.694415536111990690, 0.694451513955133940, 0.694487490062148490, 0.694523464432944550, 0.694559437067431730, 0.694595407965520330, 0.694631377127120310, 0.694667344552142190, +0.694703310240495480, 0.694739274192090360, 0.694775236406837470, 0.694811196884646100, 0.694847155625426760, 0.694883112629089640, 0.694919067895544920, 0.694955021424702220, +0.694990973216472070, 0.695026923270764430, 0.695062871587489810, 0.695098818166557610, 0.695134763007878460, 0.695170706111362340, 0.695206647476919850, 0.695242587104460410, +0.695278524993894420, 0.695314461145132180, 0.695350395558084090, 0.695386328232659780, 0.695422259168769540, 0.695458188366324000, 0.695494115825232680, 0.695530041545405990, +0.695565965526754320, 0.695601887769188080, 0.695637808272616680, 0.695673727036950850, 0.695709644062100560, 0.695745559347976660, 0.695781472894488440, 0.695817384701546530, +0.695853294769061210, 0.695889203096943020, 0.695925109685101350, 0.695961014533447050, 0.695996917641890090, 0.696032819010341310, 0.696068718638710000, 0.696104616526906920, +0.696140512674842450, 0.696176407082426900, 0.696212299749570000, 0.696248190676182380, 0.696284079862174550, 0.696319967307456270, 0.696355853011938140, 0.696391736975530250, +0.696427619198143440, 0.696463499679687130, 0.696499378420072150, 0.696535255419208800, 0.696571130677007490, 0.696607004193378070, 0.696642875968231160, 0.696678746001477170, +0.696714614293026500, 0.696750480842789010, 0.696786345650675320, 0.696822208716595730, 0.696858070040460960, 0.696893929622180660, 0.696929787461665560, 0.696965643558826400, +0.697001497913572690, 0.697037350525815390, 0.697073201395464580, 0.697109050522431110, 0.697144897906624710, 0.697180743547956010, 0.697216587446335520, 0.697252429601673880, +0.697288270013880830, 0.697324108682867090, 0.697359945608543090, 0.697395780790819540, 0.697431614229606200, 0.697467445924813910, 0.697503275876352970, 0.697539104084134110, +0.697574930548067180, 0.697610755268062930, 0.697646578244032200, 0.697682399475884620, 0.697718218963531030, 0.697754036706881850, 0.697789852705848030, 0.697825666960339210, +0.697861479470266220, 0.697897290235539480, 0.697933099256069830, 0.697968906531767130, 0.698004712062542220, 0.698040515848305510, 0.698076317888967850, 0.698112118184438970, +0.698147916734629950, 0.698183713539451080, 0.698219508598813210, 0.698255301912626300, 0.698291093480801090, 0.698326883303248440, 0.698362671379878290, 0.698398457710601490, +0.698434242295328470, 0.698470025133970270, 0.698505806226436650, 0.698541585572638460, 0.698577363172486310, 0.698613139025891170, 0.698648913132762780, 0.698684685493012100, +0.698720456106549760, 0.698756224973286600, 0.698791992093132590, 0.698827757465998460, 0.698863521091795060, 0.698899282970433130, 0.698935043101822640, 0.698970801485874650, +0.699006558122499570, 0.699042313011608460, 0.699078066153111190, 0.699113817546918810, 0.699149567192942190, 0.699185315091091280, 0.699221061241277140, 0.699256805643410420, +0.699292548297401950, 0.699328289203161700, 0.699364028360600740, 0.699399765769629810, 0.699435501430159760, 0.699471235342100650, 0.699506967505363340, 0.699542697919858680, +0.699578426585497630, 0.699614153502190140, 0.699649878669847290, 0.699685602088379820, 0.699721323757698580, 0.699757043677713740, 0.699792761848336280, 0.699828478269477250, +0.699864192941046630, 0.699899905862955580, 0.699935617035114750, 0.699971326457435210, 0.700007034129827010, 0.700042740052201350, 0.700078444224468740, 0.700114146646540370, +0.700149847318326300, 0.700185546239737500, 0.700221243410684920, 0.700256938831079640, 0.700292632500831620, 0.700328324419852040, 0.700364014588051640, 0.700399703005341490, +0.700435389671631770, 0.700471074586833550, 0.700506757750858020, 0.700542439163615250, 0.700578118825016420, 0.700613796734972260, 0.700649472893393970, 0.700685147300191600, +0.700720819955276460, 0.700756490858559180, 0.700792160009951040, 0.700827827409362230, 0.700863493056703810, 0.700899156951886650, 0.700934819094821910, 0.700970479485419800, +0.701006138123591470, 0.701041795009247790, 0.701077450142299940, 0.701113103522658210, 0.701148755150233670, 0.701184405024937290, 0.701220053146680230, 0.701255699515372700, +0.701291344130925860, 0.701326986993251020, 0.701362628102258360, 0.701398267457859160, 0.701433905059964280, 0.701469540908485010, 0.701505175003331540, 0.701540807344415040, +0.701576437931646700, 0.701612066764937480, 0.701647693844197780, 0.701683319169338790, 0.701718942740271580, 0.701754564556907320, 0.701790184619156320, 0.701825802926929860, +0.701861419480138920, 0.701897034278694760, 0.701932647322507600, 0.701968258611488930, 0.702003868145549830, 0.702039475924600810, 0.702075081948553060, 0.702110686217317650, +0.702146288730805870, 0.702181889488928010, 0.702217488491595380, 0.702253085738719140, 0.702288681230210380, 0.702324274965979710, 0.702359866945938220, 0.702395457169997180, +0.702431045638067800, 0.702466632350060460, 0.702502217305886580, 0.702537800505457110, 0.702573381948683460, 0.702608961635476040, 0.702644539565746240, 0.702680115739405360, +0.702715690156363930, 0.702751262816533220, 0.702786833719824420, 0.702822402866148830, 0.702857970255416850, 0.702893535887540000, 0.702929099762429340, 0.702964661879996180, +0.703000222240151130, 0.703035780842805490, 0.703071337687870330, 0.703106892775257180, 0.703142446104876530, 0.703177997676639690, 0.703213547490457950, 0.703249095546242600, +0.703284641843904270, 0.703320186383354250, 0.703355729164504060, 0.703391270187264330, 0.703426809451546340, 0.703462346957261400, 0.703497882704320790, 0.703533416692635250, +0.703568948922116190, 0.703604479392674680, 0.703640008104222340, 0.703675535056669690, 0.703711060249928130, 0.703746583683908970, 0.703782105358523700, 0.703817625273682750, +0.703853143429297830, 0.703888659825280040, 0.703924174461540760, 0.703959687337990970, 0.703995198454541840, 0.704030707811104660, 0.704066215407591070, 0.704101721243911680, +0.704137225319978020, 0.704172727635701490, 0.704208228190992940, 0.704243726985763760, 0.704279224019925150, 0.704314719293388960, 0.704350212806065690, 0.704385704557866750, +0.704421194548703560, 0.704456682778487830, 0.704492169247129980, 0.704527653954541640, 0.704563136900634320, 0.704598618085319430, 0.704634097508507580, 0.704669575170110530, +0.704705051070039560, 0.704740525208206290, 0.704775997584521360, 0.704811468198896510, 0.704846937051243240, 0.704882404141472410, 0.704917869469495420, 0.704953333035223890, +0.704988794838569240, 0.705024254879442310, 0.705059713157754730, 0.705095169673417900, 0.705130624426343560, 0.705166077416442220, 0.705201528643625730, 0.705236978107805390, +0.705272425808892930, 0.705307871746799100, 0.705343315921435510, 0.705378758332713800, 0.705414198980545360, 0.705449637864841160, 0.705485074985512830, 0.705520510342472210, +0.705555943935629930, 0.705591375764897830, 0.705626805830187220, 0.705662234131410050, 0.705697660668476830, 0.705733085441299530, 0.705768508449789560, 0.705803929693858520, +0.705839349173417400, 0.705874766888377910, 0.705910182838651590, 0.705945597024150050, 0.705981009444784150, 0.706016420100465720, 0.706051828991106410, 0.706087236116617720, +0.706122641476910620, 0.706158045071896940, 0.706193446901488110, 0.706228846965595960, 0.706264245264131450, 0.706299641797006330, 0.706335036564132320, 0.706370429565420510, +0.706405820800782620, 0.706441210270130180, 0.706476597973374920, 0.706511983910427910, 0.706547368081201000, 0.706582750485605700, 0.706618131123553760, 0.706653509994956130, +0.706688887099724770, 0.706724262437771200, 0.706759636009007370, 0.706795007813344030, 0.706830377850693250, 0.706865746120966420, 0.706901112624075620, 0.706936477359931700, +0.706971840328446620, 0.707007201529532110, 0.707042560963099480, 0.707077918629060330, 0.707113274527326420, 0.707148628657809700, 0.707183981020421020, 0.707219331615072330, +0.707254680441675390, 0.707290027500142030, 0.707325372790383320, 0.707360716312311120, 0.707396058065837270, 0.707431398050873520, 0.707466736267330920, 0.707502072715121440, +0.707537407394156830, 0.707572740304349020, 0.707608071445609110, 0.707643400817848930, 0.707678728420980560, 0.707714054254915180, 0.707749378319564530, 0.707784700614840450, +0.707820021140655010, 0.707855339896919180, 0.707890656883544910, 0.707925972100444060, 0.707961285547528570, 0.707996597224709530, 0.708031907131899120, 0.708067215269008840, +0.708102521635950890, 0.708137826232636210, 0.708173129058977110, 0.708208430114885100, 0.708243729400272470, 0.708279026915049960, 0.708314322659130080, 0.708349616632424570, +0.708384908834844840, 0.708420199266302730, 0.708455487926710200, 0.708490774815979220, 0.708526059934020960, 0.708561343280747600, 0.708596624856070890, 0.708631904659902890, +0.708667182692154900, 0.708702458952738870, 0.708737733441566760, 0.708773006158550540, 0.708808277103601610, 0.708843546276631930, 0.708878813677553340, 0.708914079306278030, +0.708949343162717290, 0.708984605246783080, 0.709019865558387470, 0.709055124097442420, 0.709090380863859230, 0.709125635857550280, 0.709160889078427340, 0.709196140526401900, +0.709231390201386260, 0.709266638103291940, 0.709301884232031440, 0.709337128587515960, 0.709372371169657570, 0.709407611978368320, 0.709442851013560300, 0.709478088275144910, +0.709513323763034220, 0.709548557477140300, 0.709583789417375210, 0.709619019583650370, 0.709654247975877950, 0.709689474593970030, 0.709724699437838670, 0.709759922507395170, +0.709795143802551930, 0.709830363323221140, 0.709865581069314190, 0.709900797040743270, 0.709936011237420230, 0.709971223659257580, 0.710006434306166610, 0.710041643178059510, +0.710076850274848240, 0.710112055596445190, 0.710147259142761670, 0.710182460913710070, 0.710217660909202240, 0.710252859129150590, 0.710288055573466530, 0.710323250242062330, +0.710358443134849970, 0.710393634251741850, 0.710428823592649250, 0.710464011157484700, 0.710499196946160260, 0.710534380958587670, 0.710569563194679120, 0.710604743654346560, +0.710639922337502620, 0.710675099244058470, 0.710710274373926530, 0.710745447727018980, 0.710780619303248100, 0.710815789102525300, 0.710850957124763090, 0.710886123369873450, +0.710921287837768870, 0.710956450528360760, 0.710991611441561420, 0.711026770577283140, 0.711061927935438210, 0.711097083515938260, 0.711132237318695460, 0.711167389343622110, +0.711202539590630620, 0.711237688059632390, 0.711272834750540040, 0.711307979663265870, 0.711343122797721490, 0.711378264153819220, 0.711413403731471330, 0.711448541530590230, +0.711483677551087550, 0.711518811792875570, 0.711553944255866600, 0.711589074939973030, 0.711624203845106610, 0.711659330971179500, 0.711694456318104240, 0.711729579885793000, +0.711764701674157510, 0.711799821683110400, 0.711834939912563640, 0.711870056362429840, 0.711905171032620520, 0.711940283923048420, 0.711975395033625840, 0.712010504364264500, +0.712045611914876810, 0.712080717685375180, 0.712115821675672000, 0.712150923885679020, 0.712186024315308640, 0.712221122964473370, 0.712256219833085510, 0.712291314921056680, +0.712326408228299730, 0.712361499754726620, 0.712396589500250200, 0.712431677464781980, 0.712466763648234470, 0.712501848050520080, 0.712536930671551440, 0.712572011511240170, +0.712607090569498780, 0.712642167846240020, 0.712677243341375610, 0.712712317054817970, 0.712747388986479600, 0.712782459136273030, 0.712817527504110090, 0.712852594089903310, +0.712887658893564870, 0.712922721915007830, 0.712957783154143600, 0.712992842610884800, 0.713027900285144070, 0.713062956176833800, 0.713098010285865840, 0.713133062612152810, +0.713168113155607130, 0.713203161916141530, 0.713238208893667740, 0.713273254088098390, 0.713308297499346210, 0.713343339127322950, 0.713378378971941450, 0.713413417033113890, +0.713448453310753130, 0.713483487804770890, 0.713518520515080020, 0.713553551441592830, 0.713588580584222030, 0.713623607942879490, 0.713658633517477940, 0.713693657307929770, +0.713728679314147740, 0.713763699536043680, 0.713798717973530560, 0.713833734626520440, 0.713868749494926400, 0.713903762578660170, 0.713938773877634600, 0.713973783391761980, +0.714008791120955280, 0.714043797065126220, 0.714078801224187650, 0.714113803598052540, 0.714148804186632510, 0.714183802989840410, 0.714218800007588860, 0.714253795239790600, +0.714288788686357590, 0.714323780347202670, 0.714358770222238150, 0.714393758311377080, 0.714428744614531320, 0.714463729131613710, 0.714498711862536770, 0.714533692807213350, +0.714568671965555290, 0.714603649337475780, 0.714638624922886990, 0.714673598721701890, 0.714708570733832650, 0.714743540959191790, 0.714778509397692610, 0.714813476049246610, +0.714848440913767090, 0.714883403991166460, 0.714918365281357550, 0.714953324784252440, 0.714988282499764090, 0.715023238427805020, 0.715058192568288060, 0.715093144921125410, +0.715128095486229800, 0.715163044263514070, 0.715197991252890960, 0.715232936454272660, 0.715267879867571900, 0.715302821492701520, 0.715337761329574270, 0.715372699378102440, +0.715407635638198870, 0.715442570109776410, 0.715477502792747240, 0.715512433687024440, 0.715547362792520400, 0.715582290109148420, 0.715617215636820240, 0.715652139375449140, +0.715687061324947640, 0.715721981485228810, 0.715756899856204720, 0.715791816437788330, 0.715826731229892490, 0.715861644232430040, 0.715896555445313170, 0.715931464868455050, +0.715966372501768090, 0.716001278345165690, 0.716036182398559600, 0.716071084661863200, 0.716105985134989020, 0.716140883817850240, 0.716175780710358810, 0.716210675812428030, +0.716245569123970970, 0.716280460644899470, 0.716315350375126950, 0.716350238314566010, 0.716385124463129850, 0.716420008820730430, 0.716454891387281130, 0.716489772162694490, +0.716524651146883800, 0.716559528339761220, 0.716594403741239730, 0.716629277351232270, 0.716664149169651930, 0.716699019196410880, 0.716733887431422190, 0.716768753874598930, +0.716803618525854060, 0.716838481385099870, 0.716873342452249430, 0.716908201727215920, 0.716943059209911640, 0.716977914900249650, 0.717012768798142910, 0.717047620903504600, +0.717082471216246910, 0.717117319736283010, 0.717152166463525860, 0.717187011397888540, 0.717221854539283440, 0.717256695887623640, 0.717291535442822090, 0.717326373204792090, +0.717361209173445920, 0.717396043348696550, 0.717430875730457160, 0.717465706318640930, 0.717500535113160030, 0.717535362113927880, 0.717570187320857530, 0.717605010733861400, +0.717639832352852890, 0.717674652177744620, 0.717709470208450220, 0.717744286444881750, 0.717779100886952510, 0.717813913534575580, 0.717848724387664230, 0.717883533446130650, +0.717918340709888250, 0.717953146178849980, 0.717987949852929240, 0.718022751732038330, 0.718057551816090430, 0.718092350104998720, 0.718127146598676490, 0.718161941297035920, +0.718196734199990640, 0.718231525307453820, 0.718266314619337760, 0.718301102135556090, 0.718335887856021540, 0.718370671780647620, 0.718405453909346740, 0.718440234242032180, +0.718475012778617030, 0.718509789519014790, 0.718544564463137640, 0.718579337610899090, 0.718614108962212230, 0.718648878516990330, 0.718683646275146030, 0.718718412236592610, +0.718753176401243030, 0.718787938769010930, 0.718822699339808580, 0.718857458113549620, 0.718892215090146890, 0.718926970269514020, 0.718961723651563410, 0.718996475236208470, +0.719031225023362590, 0.719065973012938400, 0.719100719204849300, 0.719135463599008370, 0.719170206195329120, 0.719204946993724060, 0.719239685994106480, 0.719274423196389790, +0.719309158600487390, 0.719343892206311790, 0.719378624013776390, 0.719413354022794490, 0.719448082233279500, 0.719482808645143910, 0.719517533258301370, 0.719552256072665040, +0.719586977088148340, 0.719621696304663880, 0.719656413722125190, 0.719691129340445770, 0.719725843159538250, 0.719760555179316030, 0.719795265399692520, 0.719829973820581110, +0.719864680441894440, 0.719899385263546130, 0.719934088285449360, 0.719968789507517530, 0.720003488929663590, 0.720038186551800850, 0.720072882373842700, 0.720107576395702550, +0.720142268617293250, 0.720176959038528300, 0.720211647659320890, 0.720246334479584640, 0.720281019499232290, 0.720315702718177350, 0.720350384136333570, 0.720385063753613440, +0.720419741569930610, 0.720454417585198570, 0.720489091799330630, 0.720523764212239740, 0.720558434823839410, 0.720593103634042940, 0.720627770642764180, 0.720662435849915630, +0.720697099255410920, 0.720731760859163460, 0.720766420661086980, 0.720801078661094110, 0.720835734859098460, 0.720870389255013570, 0.720905041848753040, 0.720939692640229500, +0.720974341629356810, 0.721008988816048250, 0.721043634200217550, 0.721078277781777350, 0.721112919560641610, 0.721147559536723710, 0.721182197709936750, 0.721216834080194210, +0.721251468647409520, 0.721286101411496630, 0.721320732372368050, 0.721355361529937730, 0.721389988884118980, 0.721424614434825530, 0.721459238181970220, 0.721493860125466900, +0.721528480265228870, 0.721563098601169960, 0.721597715133203030, 0.721632329861241820, 0.721666942785199720, 0.721701553904990690, 0.721736163220527250, 0.721770770731723580, +0.721805376438493300, 0.721839980340749140, 0.721874582438405190, 0.721909182731374610, 0.721943781219571480, 0.721978377902908640, 0.722012972781299830, 0.722047565854658460, +0.722082157122898580, 0.722116746585933060, 0.722151334243675610, 0.722185920096039770, 0.722220504142939480, 0.722255086384287700, 0.722289666819998070, 0.722324245449984410, +0.722358822274160370, 0.722393397292438900, 0.722427970504734060, 0.722462541910959600, 0.722497111511028360, 0.722531679304854510, 0.722566245292351250, 0.722600809473432860, +0.722635371848012080, 0.722669932416002860, 0.722704491177318830, 0.722739048131873840, 0.722773603279580960, 0.722808156620354140, 0.722842708154106780, 0.722877257880753080, +0.722911805800205860, 0.722946351912379100, 0.722980896217186530, 0.723015438714541990, 0.723049979404358560, 0.723084518286550180, 0.723119055361030830, 0.723153590627713560, +0.723188124086512230, 0.723222655737340680, 0.723257185580112650, 0.723291713614741430, 0.723326239841140970, 0.723360764259224910, 0.723395286868907190, 0.723429807670101010, +0.723464326662720310, 0.723498843846678730, 0.723533359221890440, 0.723567872788268280, 0.723602384545726670, 0.723636894494178890, 0.723671402633539350, 0.723705908963720780, +0.723740413484637690, 0.723774916196203380, 0.723809417098332130, 0.723843916190937130, 0.723878413473932230, 0.723912908947231700, 0.723947402610748410, 0.723981894464396760, +0.724016384508090360, 0.724050872741743400, 0.724085359165268730, 0.724119843778580850, 0.724154326581593290, 0.724188807574220220, 0.724223286756374820, 0.724257764127971160, +0.724292239688923090, 0.724326713439144790, 0.724361185378549430, 0.724395655507050980, 0.724430123824563510, 0.724464590331000970, 0.724499055026276760, 0.724533517910304850, +0.724567978982999410, 0.724602438244273730, 0.724636895694041990, 0.724671351332217940, 0.724705805158715850, 0.724740257173449030, 0.724774707376331430, 0.724809155767277110, +0.724843602346200270, 0.724878047113014070, 0.724912490067632700, 0.724946931209970220, 0.724981370539940610, 0.725015808057457360, 0.725050243762434540, 0.725084677654786120, +0.725119109734426280, 0.725153540001268420, 0.725187968455226710, 0.725222395096215330, 0.725256819924147590, 0.725291242938937990, 0.725325664140500150, 0.725360083528748480, +0.725394501103596380, 0.725428916864957920, 0.725463330812747160, 0.725497742946878410, 0.725532153267265060, 0.725566561773821280, 0.725600968466461050, 0.725635373345098760, +0.725669776409647690, 0.725704177660022260, 0.725738577096136320, 0.725772974717904250, 0.725807370525239470, 0.725841764518056150, 0.725876156696268590, 0.725910547059790860, +0.725944935608536460, 0.725979322342419690, 0.726013707261354950, 0.726048090365255640, 0.726082471654036170, 0.726116851127610370, 0.726151228785892890, 0.726185604628796890, +0.726219978656237000, 0.726254350868127170, 0.726288721264381600, 0.726323089844914120, 0.726357456609638800, 0.726391821558469930, 0.726426184691321810, 0.726460546008107830, +0.726494905508742520, 0.726529263193139930, 0.726563619061214580, 0.726597973112879770, 0.726632325348050110, 0.726666675766639900, 0.726701024368562650, 0.726735371153732880, +0.726769716122064760, 0.726804059273472580, 0.726838400607869970, 0.726872740125171330, 0.726907077825290850, 0.726941413708142910, 0.726975747773641270, 0.727010080021700200, +0.727044410452233890, 0.727078739065156960, 0.727113065860382820, 0.727147390837825980, 0.727181713997400610, 0.727216035339021350, 0.727250354862601700, 0.727284672568056180, +0.727318988455299300, 0.727353302524244570, 0.727387614774806620, 0.727421925206899630, 0.727456233820438110, 0.727490540615335800, 0.727524845591506990, 0.727559148748866180, +0.727593450087327680, 0.727627749606805320, 0.727662047307213620, 0.727696343188466770, 0.727730637250479370, 0.727764929493165070, 0.727799219916438480, 0.727833508520213890, +0.727867795304405710, 0.727902080268927780, 0.727936363413694610, 0.727970644738620940, 0.728004924243620290, 0.728039201928607270, 0.728073477793496400, 0.728107751838201980, +0.728142024062637950, 0.728176294466718830, 0.728210563050359030, 0.728244829813473160, 0.728279094755974850, 0.728313357877778840, 0.728347619178799420, 0.728381878658951100, +0.728416136318148060, 0.728450392156304470, 0.728484646173334970, 0.728518898369154180, 0.728553148743675830, 0.728587397296814540, 0.728621644028484840, 0.728655888938601230, +0.728690132027077660, 0.728724373293828780, 0.728758612738769300, 0.728792850361812960, 0.728827086162874500, 0.728861320141868330, 0.728895552298709060, 0.728929782633310760, +0.728964011145587950, 0.728998237835455030, 0.729032462702826840, 0.729066685747617240, 0.729100906969740950, 0.729135126369112370, 0.729169343945646250, 0.729203559699256540, +0.729237773629857870, 0.729271985737364740, 0.729306196021692000, 0.729340404482753390, 0.729374611120463870, 0.729408815934738050, 0.729443018925489910, 0.729477220092634270, +0.729511419436085550, 0.729545616955758590, 0.729579812651567240, 0.729614006523426450, 0.729648198571250520, 0.729682388794954510, 0.729716577194452150, 0.729750763769658420, +0.729784948520487700, 0.729819131446854950, 0.729853312548674030, 0.729887491825859880, 0.729921669278327020, 0.729955844905990190, 0.729990018708763570, 0.730024190686561880, +0.730058360839299980, 0.730092529166891820, 0.730126695669252480, 0.730160860346296350, 0.730195023197938280, 0.730229184224092330, 0.730263343424673580, 0.730297500799596320, +0.730331656348775730, 0.730365810072125640, 0.730399961969561030, 0.730434112040996510, 0.730468260286347040, 0.730502406705526570, 0.730536551298450190, 0.730570694065032390, +0.730604835005188020, 0.730638974118831390, 0.730673111405877320, 0.730707246866240450, 0.730741380499835720, 0.730775512306577340, 0.730809642286380120, 0.730843770439159050, +0.730877896764828390, 0.730912021263302790, 0.730946143934497310, 0.730980264778326670, 0.731014383794705180, 0.731048500983547570, 0.731082616344768790, 0.731116729878283800, +0.731150841584006670, 0.731184951461852470, 0.731219059511735820, 0.731253165733571910, 0.731287270127274680, 0.731321372692759320, 0.731355473429940560, 0.731389572338733360, +0.731423669419051900, 0.731457764670811360, 0.731491858093926690, 0.731525949688312080, 0.731560039453882590, 0.731594127390552960, 0.731628213498238370, 0.731662297776852880, +0.731696380226311670, 0.731730460846529480, 0.731764539637421500, 0.731798616598901890, 0.731832691730885610, 0.731866765033287740, 0.731900836506023220, 0.731934906149006360, +0.731968973962152100, 0.732003039945375520, 0.732037104098591570, 0.732071166421714550, 0.732105226914659620, 0.732139285577342090, 0.732173342409675800, 0.732207397411576370, +0.732241450582958310, 0.732275501923736920, 0.732309551433826480, 0.732343599113142170, 0.732377644961598960, 0.732411688979111910, 0.732445731165595190, 0.732479771520964330, +0.732513810045133940, 0.732547846738019310, 0.732581881599534750, 0.732615914629595630, 0.732649945828116600, 0.732683975195013050, 0.732718002730199160, 0.732752028433590440, +0.732786052305101520, 0.732820074344647800, 0.732854094552143560, 0.732888112927504220, 0.732922129470644720, 0.732956144181479700, 0.732990157059924320, 0.733024168105893550, +0.733058177319302560, 0.733092184700065990, 0.733126190248098770, 0.733160193963316220, 0.733194195845633390, 0.733228195894964910, 0.733262194111225840, 0.733296190494331260, +0.733330185044196560, 0.733364177760736040, 0.733398168643865200, 0.733432157693498790, 0.733466144909552420, 0.733500130291940280, 0.733534113840577870, 0.733568095555380490, +0.733602075436262440, 0.733636053483139430, 0.733670029695926100, 0.733704004074538060, 0.733737976618889620, 0.733771947328896390, 0.733805916204473220, 0.733839883245535620, +0.733873848451997880, 0.733907811823775620, 0.733941773360783810, 0.733975733062937950, 0.734009690930152340, 0.734043646962342590, 0.734077601159423660, 0.734111553521310970, +0.734145504047919230, 0.734179452739163630, 0.734213399594959790, 0.734247344615222010, 0.734281287799865900, 0.734315229148806650, 0.734349168661959650, 0.734383106339239310, +0.734417042180561360, 0.734450976185840760, 0.734484908354992920, 0.734518838687932550, 0.734552767184575180, 0.734586693844835770, 0.734620618668629930, 0.734654541655872300, +0.734688462806478260, 0.734722382120363230, 0.734756299597442370, 0.734790215237630440, 0.734824129040843040, 0.734858041006995700, 0.734891951136002810, 0.734925859427780100, +0.734959765882242880, 0.734993670499306310, 0.735027573278885460, 0.735061474220895630, 0.735095373325251990, 0.735129270591870390, 0.735163166020665120, 0.735197059611552130, +0.735230951364446380, 0.735264841279263500, 0.735298729355918330, 0.735332615594326280, 0.735366499994402730, 0.735400382556063210, 0.735434263279222460, 0.735468142163796080, +0.735502019209699260, 0.735535894416847640, 0.735569767785156150, 0.735603639314540200, 0.735637509004915310, 0.735671376856196440, 0.735705242868299190, 0.735739107041138760, +0.735772969374630880, 0.735806829868690280, 0.735840688523232590, 0.735874545338173200, 0.735908400313427750, 0.735942253448911070, 0.735976104744538560, 0.736009954200225970, +0.736043801815888690, 0.736077647591441670, 0.736111491526800550, 0.736145333621880620, 0.736179173876597700, 0.736213012290866550, 0.736246848864602900, 0.736280683597722360, +0.736314516490139900, 0.736348347541771030, 0.736382176752531370, 0.736416004122336540, 0.736449829651101400, 0.736483653338741770, 0.736517475185172850, 0.736551295190310710, +0.736585113354069950, 0.736618929676366330, 0.736652744157115460, 0.736686556796233070, 0.736720367593633910, 0.736754176549233920, 0.736787983662948510, 0.736821788934693300, +0.736855592364383360, 0.736889393951934530, 0.736923193697262450, 0.736956991600282050, 0.736990787660909200, 0.737024581879059390, 0.737058374254648490, 0.737092164787591320, +0.737125953477803740, 0.737159740325201260, 0.737193525329699620, 0.737227308491213980, 0.737261089809660100, 0.737294869284953470, 0.737328646917009940, 0.737362422705744480, +0.737396196651073030, 0.737429968752911000, 0.737463739011174350, 0.737497507425778130, 0.737531273996638090, 0.737565038723669850, 0.737598801606789370, 0.737632562645911590, +0.737666321840952380, 0.737700079191827670, 0.737733834698452440, 0.737767588360742630, 0.737801340178613870, 0.737835090151982120, 0.737868838280762220, 0.737902584564870230, +0.737936329004221900, 0.737970071598732960, 0.738003812348318580, 0.738037551252894610, 0.738071288312376780, 0.738105023526681060, 0.738138756895722500, 0.738172488419416960, +0.738206218097680280, 0.738239945930428300, 0.738273671917576200, 0.738307396059039940, 0.738341118354735480, 0.738374838804577880, 0.738408557408483210, 0.738442274166367100, +0.738475989078145710, 0.738509702143734010, 0.738543413363047960, 0.738577122736003510, 0.738610830262516500, 0.738644535942502010, 0.738678239775876320, 0.738711941762554950, +0.738745641902454060, 0.738779340195488850, 0.738813036641575160, 0.738846731240628940, 0.738880423992566150, 0.738914114897302080, 0.738947803954752680, 0.738981491164834030, +0.739015176527461400, 0.739048860042550770, 0.739082541710018080, 0.739116221529779290, 0.739149899501749590, 0.739183575625845250, 0.739217249901981900, 0.739250922330075830, +0.739284592910042000, 0.739318261641796810, 0.739351928525255890, 0.739385593560335510, 0.739419256746950750, 0.739452918085018010, 0.739486577574452800, 0.739520235215171520, +0.739553891007089350, 0.739587544950122470, 0.739621197044187050, 0.739654847289198280, 0.739688495685072440, 0.739722142231725280, 0.739755786929073180, 0.739789429777031220, +0.739823070775515790, 0.739856709924442520, 0.739890347223727930, 0.739923982673287070, 0.739957616273036360, 0.739991248022891510, 0.740024877922768830, 0.740058505972583710, +0.740092132172252340, 0.740125756521690660, 0.740159379020814740, 0.740192999669540220, 0.740226618467783150, 0.740260235415459600, 0.740293850512485640, 0.740327463758776780, +0.740361075154249320, 0.740394684698819530, 0.740428292392402600, 0.740461898234915040, 0.740495502226272690, 0.740529104366391850, 0.740562704655188030, 0.740596303092577400, +0.740629899678476030, 0.740663494412800110, 0.740697087295465240, 0.740730678326387610, 0.740764267505483410, 0.740797854832668690, 0.740831440307859190, 0.740865023930970870, +0.740898605701920230, 0.740932185620623240, 0.740965763686995520, 0.740999339900953350, 0.741032914262413240, 0.741066486771290390, 0.741100057427501400, 0.741133626230962240, +0.741167193181589410, 0.741200758279298210, 0.741234321524005150, 0.741267882915626290, 0.741301442454078030, 0.741335000139275780, 0.741368555971136050, 0.741402109949575010, +0.741435662074508950, 0.741469212345853390, 0.741502760763524950, 0.741536307327439470, 0.741569852037513580, 0.741603394893662670, 0.741636935895803370, 0.741670475043851970, +0.741704012337724090, 0.741737547777336250, 0.741771081362604500, 0.741804613093445360, 0.741838142969774350, 0.741871670991508080, 0.741905197158562510, 0.741938721470854270, +0.741972243928298970, 0.742005764530813130, 0.742039283278312700, 0.742072800170714530, 0.742106315207933910, 0.742139828389887570, 0.742173339716491690, 0.742206849187662780, +0.742240356803316350, 0.742273862563369140, 0.742307366467737100, 0.742340868516337070, 0.742374368709084690, 0.742407867045896230, 0.742441363526688440, 0.742474858151376930, +0.742508350919878210, 0.742541841832108700, 0.742575330887984890, 0.742608818087422410, 0.742642303430337880, 0.742675786916647710, 0.742709268546268180, 0.742742748319115350, +0.742776226235105530, 0.742809702294155220, 0.742843176496180920, 0.742876648841098390, 0.742910119328824230, 0.742943587959274840, 0.742977054732366640, 0.743010519648015680, +0.743043982706138250, 0.743077443906651200, 0.743110903249470270, 0.743144360734512070, 0.743177816361693000, 0.743211270130929690, 0.743244722042137870, 0.743278172095234390, +0.743311620290135310, 0.743345066626757480, 0.743378511105016740, 0.743411953724829820, 0.743445394486112800, 0.743478833388782730, 0.743512270432755250, 0.743545705617947080, +0.743579138944274740, 0.743612570411654740, 0.743646000020003030, 0.743679427769236350, 0.743712853659271420, 0.743746277690023990, 0.743779699861410900, 0.743813120173348550, +0.743846538625753780, 0.743879955218542220, 0.743913369951630930, 0.743946782824936090, 0.743980193838374660, 0.744013602991862370, 0.744047010285316170, 0.744080415718652350, +0.744113819291787880, 0.744147221004638480, 0.744180620857121110, 0.744214018849152170, 0.744247414980648500, 0.744280809251525950, 0.744314201661701370, 0.744347592211091590, +0.744380980899612580, 0.744414367727181060, 0.744447752693713550, 0.744481135799127110, 0.744514517043337490, 0.744547896426261510, 0.744581273947815920, 0.744614649607917340, +0.744648023406481840, 0.744681395343426260, 0.744714765418667210, 0.744748133632121560, 0.744781499983705350, 0.744814864473335340, 0.744848227100928130, 0.744881587866400690, +0.744914946769668960, 0.744948303810649910, 0.744981658989260050, 0.745015012305416340, 0.745048363759034830, 0.745081713350032370, 0.745115061078325920, 0.745148406943831660, +0.745181750946466210, 0.745215093086146420, 0.745248433362789230, 0.745281771776310720, 0.745315108326627730, 0.745348443013656880, 0.745381775837315350, 0.745415106797518990, +0.745448435894184860, 0.745481763127229690, 0.745515088496570440, 0.745548412002123070, 0.745581733643804760, 0.745615053421532110, 0.745648371335222100, 0.745681687384790900, +0.745715001570155470, 0.745748313891232750, 0.745781624347939040, 0.745814932940191190, 0.745848239667906030, 0.745881544531000640, 0.745914847529391080, 0.745948148662994410, +0.745981447931727270, 0.746014745335506820, 0.746048040874249360, 0.746081334547871620, 0.746114626356290670, 0.746147916299423450, 0.746181204377186050, 0.746214490589495630, +0.746247774936269040, 0.746281057417423340, 0.746314338032874720, 0.746347616782540140, 0.746380893666336860, 0.746414168684181090, 0.746447441835989880, 0.746480713121680070, +0.746513982541168850, 0.746547250094372170, 0.746580515781207540, 0.746613779601591590, 0.746647041555441370, 0.746680301642673410, 0.746713559863204650, 0.746746816216951940, +0.746780070703832570, 0.746813323323762710, 0.746846574076659440, 0.746879822962439820, 0.746913069981020920, 0.746946315132319020, 0.746979558416251410, 0.747012799832734830, +0.747046039381686570, 0.747079277063022910, 0.747112512876661140, 0.747145746822518330, 0.747178978900510880, 0.747212209110555970, 0.747245437452570440, 0.747278663926471690, +0.747311888532176010, 0.747345111269600570, 0.747378332138662340, 0.747411551139278600, 0.747444768271365630, 0.747477983534840850, 0.747511196929621090, 0.747544408455623530, +0.747577618112764800, 0.747610825900961950, 0.747644031820131950, 0.747677235870192300, 0.747710438051059190, 0.747743638362650010, 0.747776836804882050, 0.747810033377671710, +0.747843228080936170, 0.747876420914592720, 0.747909611878558420, 0.747942800972749900, 0.747975988197084220, 0.748009173551478670, 0.748042357035850420, 0.748075538650116110, +0.748108718394192800, 0.748141896267997760, 0.748175072271448300, 0.748208246404460820, 0.748241418666952820, 0.748274589058841140, 0.748307757580043310, 0.748340924230475930, +0.748374089010056090, 0.748407251918701390, 0.748440412956328240, 0.748473572122854040, 0.748506729418195850, 0.748539884842271300, 0.748573038394996670, 0.748606190076289370, +0.748639339886066680, 0.748672487824245890, 0.748705633890743630, 0.748738778085477170, 0.748771920408363930, 0.748805060859321080, 0.748838199438265350, 0.748871336145114030, +0.748904470979784410, 0.748937603942194000, 0.748970735032259190, 0.749003864249897510, 0.749036991595026570, 0.749070117067562770, 0.749103240667423730, 0.749136362394526520, +0.749169482248788770, 0.749202600230126970, 0.749235716338458760, 0.749268830573701190, 0.749301942935771900, 0.749335053424587280, 0.749368162040065290, 0.749401268782122650, +0.749434373650677330, 0.749467476645645610, 0.749500577766945340, 0.749533677014493580, 0.749566774388207850, 0.749599869888004980, 0.749632963513802380, 0.749666055265517440, +0.749699145143067570, 0.749732233146369610, 0.749765319275341070, 0.749798403529899460, 0.749831485909961630, 0.749864566415444970, 0.749897645046266990, 0.749930721802345210, +0.749963796683596250, 0.749996869689937840, 0.750029940821287270, 0.750063010077562150, 0.750096077458679120, 0.750129142964556020, 0.750162206595110010, 0.750195268350258740, +0.750228328229919030, 0.750261386234008510, 0.750294442362444580, 0.750327496615144750, 0.750360548992025980, 0.750393599493005770, 0.750426648118001860, 0.750459694866930980, +0.750492739739710980, 0.750525782736259030, 0.750558823856492970, 0.750591863100329550, 0.750624900467686480, 0.750657935958481070, 0.750690969572631260, 0.750724001310053680, +0.750757031170666060, 0.750790059154385900, 0.750823085261130840, 0.750856109490817820, 0.750889131843364590, 0.750922152318688420, 0.750955170916707160, 0.750988187637337660, +0.751021202480497860, 0.751054215446105180, 0.751087226534076780, 0.751120235744330180, 0.751153243076783110, 0.751186248531353180, 0.751219252107957370, 0.751252253806513390, +0.751285253626938760, 0.751318251569151330, 0.751351247633067930, 0.751384241818606520, 0.751417234125684400, 0.751450224554219500, 0.751483213104128800, 0.751516199775330020, +0.751549184567740780, 0.751582167481278820, 0.751615148515861200, 0.751648127671405650, 0.751681104947829800, 0.751714080345051490, 0.751747053862987680, 0.751780025501556310, +0.751812995260675130, 0.751845963140261090, 0.751878929140232240, 0.751911893260506000, 0.751944855501000430, 0.751977815861632260, 0.752010774342319670, 0.752043730942980160, +0.752076685663531470, 0.752109638503890900, 0.752142589463976270, 0.752175538543705110, 0.752208485742995370, 0.752241431061764110, 0.752274374499929290, 0.752307316057408530, +0.752340255734119780, 0.752373193529980220, 0.752406129444907480, 0.752439063478819840, 0.752471995631634140, 0.752504925903268560, 0.752537854293640620, 0.752570780802668370, +0.752603705430268780, 0.752636628176360010, 0.752669549040859700, 0.752702468023685680, 0.752735385124755350, 0.752768300343986450, 0.752801213681296820, 0.752834125136604530, +0.752867034709826520, 0.752899942400880980, 0.752932848209685650, 0.752965752136158350, 0.752998654180216500, 0.753031554341777930, 0.753064452620760830, 0.753097349017082250, +0.753130243530660270, 0.753163136161412840, 0.753196026909257690, 0.753228915774112330, 0.753261802755894600, 0.753294687854522360, 0.753327571069913660, 0.753360452401985790, +0.753393331850656820, 0.753426209415844370, 0.753459085097466840, 0.753491958895441290, 0.753524830809685800, 0.753557700840118190, 0.753590568986656770, 0.753623435249218490, +0.753656299627721630, 0.753689162122084370, 0.753722022732223880, 0.753754881458058470, 0.753787738299505740, 0.753820593256483980, 0.753853446328910380, 0.753886297516703220, +0.753919146819780340, 0.753951994238059810, 0.753984839771459030, 0.754017683419896170, 0.754050525183289080, 0.754083365061556040, 0.754116203054614240, 0.754149039162381960, +0.754181873384777050, 0.754214705721717780, 0.754247536173121350, 0.754280364738906250, 0.754313191418990110, 0.754346016213291340, 0.754378839121727210, 0.754411660144215900, +0.754444479280675930, 0.754477296531024360, 0.754510111895179580, 0.754542925373059450, 0.754575736964582360, 0.754608546669665590, 0.754641354488227560, 0.754674160420185980, +0.754706964465459370, 0.754739766623965140, 0.754772566895621440, 0.754805365280346250, 0.754838161778057960, 0.754870956388674070, 0.754903749112112780, 0.754936539948292020, +0.754969328897130200, 0.755002115958544830, 0.755034901132454190, 0.755067684418776590, 0.755100465817429400, 0.755133245328331150, 0.755166022951399670, 0.755198798686553490, +0.755231572533710090, 0.755264344492787680, 0.755297114563704410, 0.755329882746378580, 0.755362649040727810, 0.755395413446670490, 0.755428175964124590, 0.755460936593008500, +0.755493695333239850, 0.755526452184736910, 0.755559207147417870, 0.755591960221201010, 0.755624711406004070, 0.755657460701745330, 0.755690208108343200, 0.755722953625715290, +0.755755697253780000, 0.755788438992455400, 0.755821178841660110, 0.755853916801311530, 0.755886652871328060, 0.755919387051628090, 0.755952119342129910, 0.755984849742751040, +0.756017578253410210, 0.756050304874025360, 0.756083029604515010, 0.756115752444796780, 0.756148473394789300, 0.756181192454410510, 0.756213909623579040, 0.756246624902212620, +0.756279338290229530, 0.756312049787548070, 0.756344759394086850, 0.756377467109763390, 0.756410172934496310, 0.756442876868204110, 0.756475578910804410, 0.756508279062215630, +0.756540977322356260, 0.756573673691144810, 0.756606368168498800, 0.756639060754336850, 0.756671751448577350, 0.756704440251138700, 0.756737127161938640, 0.756769812180895670, +0.756802495307928310, 0.756835176542954740, 0.756867855885893110, 0.756900533336662520, 0.756933208895179900, 0.756965882561364320, 0.756998554335134080, 0.757031224216407450, +0.757063892205102730, 0.757096558301138310, 0.757129222504433040, 0.757161884814904100, 0.757194545232470540, 0.757227203757050550, 0.757259860388562520, 0.757292515126924970, +0.757325167972055960, 0.757357818923874220, 0.757390467982298370, 0.757423115147245810, 0.757455760418635380, 0.757488403796385710, 0.757521045280414970, 0.757553684870641560, +0.757586322566983990, 0.757618958369360550, 0.757651592277690410, 0.757684224291890640, 0.757716854411880410, 0.757749482637577910, 0.757782108968901750, 0.757814733405770320, +0.757847355948102040, 0.757879976595815960, 0.757912595348829270, 0.757945212207061240, 0.757977827170430050, 0.758010440238854440, 0.758043051412252700, 0.758075660690543220, +0.758108268073644620, 0.758140873561476080, 0.758173477153954670, 0.758206078850999440, 0.758238678652529140, 0.758271276558462160, 0.758303872568717010, 0.758336466683212200, +0.758369058901866680, 0.758401649224597960, 0.758434237651325120, 0.758466824181966760, 0.758499408816441290, 0.758531991554667330, 0.758564572396563270, 0.758597151342047970, +0.758629728391040260, 0.758662303543457650, 0.758694876799219320, 0.758727448158243780, 0.758760017620449530, 0.758792585185755430, 0.758825150854079760, 0.758857714625341130, +0.758890276499458950, 0.758922836476350390, 0.758955394555934750, 0.758987950738130630, 0.759020505022856670, 0.759053057410031480, 0.759085607899573580, 0.759118156491402240, +0.759150703185434980, 0.759183247981590980, 0.759215790879788740, 0.759248331879947110, 0.759280870981984600, 0.759313408185819940, 0.759345943491371740, 0.759378476898559310, +0.759411008407300140, 0.759443538017513410, 0.759476065729117740, 0.759508591542031990, 0.759541115456174860, 0.759573637471464780, 0.759606157587820690, 0.759638675805161760, +0.759671192123405610, 0.759703706542471440, 0.759736219062277950, 0.759768729682744000, 0.759801238403788100, 0.759833745225329200, 0.759866250147286590, 0.759898753169577670, +0.759931254292121830, 0.759963753514838030, 0.759996250837644660, 0.760028746260460690, 0.760061239783204940, 0.760093731405796060, 0.760126221128153420, 0.760158708950194660, +0.760191194871839170, 0.760223678893005570, 0.760256161013612820, 0.760288641233579750, 0.760321119552825000, 0.760353595971268060, 0.760386070488826560, 0.760418543105419900, +0.760451013820966800, 0.760483482635386230, 0.760515949548596910, 0.760548414560517800, 0.760580877671067520, 0.760613338880165690, 0.760645798187730040, 0.760678255593679740, +0.760710711097933870, 0.760743164700411260, 0.760775616401030640, 0.760808066199711090, 0.760840514096371320, 0.760872960090930860, 0.760905404183307430, 0.760937846373420430, +0.760970286661188820, 0.761002725046531550, 0.761035161529367450, 0.761067596109615390, 0.761100028787194960, 0.761132459562023910, 0.761164888434021750, 0.761197315403107310, +0.761229740469199560, 0.761262163632217440, 0.761294584892080020, 0.761327004248706030, 0.761359421702015090, 0.761391837251925160, 0.761424250898355530, 0.761456662641225250, +0.761489072480453390, 0.761521480415958800, 0.761553886447660530, 0.761586290575478220, 0.761618692799329480, 0.761651093119134040, 0.761683491534810850, 0.761715888046278880, +0.761748282653457290, 0.761780675356264920, 0.761813066154620970, 0.761845455048444810, 0.761877842037654520, 0.761910227122169600, 0.761942610301909130, 0.761974991576792050, +0.762007370946737540, 0.762039748411664660, 0.762072123971492380, 0.762104497626140300, 0.762136869375526490, 0.762169239219570470, 0.762201607158191300, 0.762233973191308150, +0.762266337318840080, 0.762298699540706170, 0.762331059856826140, 0.762363418267117840, 0.762395774771501000, 0.762428129369894680, 0.762460482062218060, 0.762492832848390200, +0.762525181728330280, 0.762557528701957480, 0.762589873769191410, 0.762622216929950030, 0.762654558184153180, 0.762686897531719810, 0.762719234972569330, 0.762751570506620680, +0.762783904133793160, 0.762816235854005820, 0.762848565667178510, 0.762880893573229190, 0.762913219572077580, 0.762945543663642980, 0.762977865847844550, 0.763010186124601360, +0.763042504493832820, 0.763074820955458530, 0.763107135509396680, 0.763139448155566890, 0.763171758893888550, 0.763204067724280840, 0.763236374646662830, 0.763268679660954020, +0.763300982767073480, 0.763333283964941050, 0.763365583254474790, 0.763397880635594660, 0.763430176108219730, 0.763462469672269380, 0.763494761327662920, 0.763527051074319510, +0.763559338912159100, 0.763591624841099660, 0.763623908861061240, 0.763656190971963020, 0.763688471173724400, 0.763720749466264560, 0.763753025849502780, 0.763785300323358450, +0.763817572887751430, 0.763849843542599990, 0.763882112287823880, 0.763914379123342590, 0.763946644049075200, 0.763978907064941310, 0.764011168170860120, 0.764043427366751020, +0.764075684652533840, 0.764107940028126990, 0.764140193493450190, 0.764172445048422970, 0.764204694692964700, 0.764236942426994580, 0.764269188250432220, 0.764301432163197350, +0.764333674165208370, 0.764365914256385230, 0.764398152436647220, 0.764430388705913950, 0.764462623064104620, 0.764494855511138720, 0.764527086046935760, 0.764559314671415580, +0.764591541384496590, 0.764623766186098730, 0.764655989076141520, 0.764688210054544240, 0.764720429121226510, 0.764752646276107620, 0.764784861519107180, 0.764817074850145160, +0.764849286269139840, 0.764881495776011390, 0.764913703370679100, 0.764945909053062590, 0.764978112823081370, 0.765010314680654720, 0.765042514625702940, 0.765074712658144310, +0.765106908777898890, 0.765139102984886190, 0.765171295279025830, 0.765203485660237100, 0.765235674128439740, 0.765267860683553120, 0.765300045325497450, 0.765332228054191100, +0.765364408869554260, 0.765396587771506320, 0.765428764759966910, 0.765460939834855520, 0.765493112996091910, 0.765525284243596000, 0.765557453577286440, 0.765589620997083050, +0.765621786502905800, 0.765653950094673960, 0.765686111772307280, 0.765718271535725360, 0.765750429384847720, 0.765782585319594530, 0.765814739339884310, 0.765846891445637330, +0.765879041636773120, 0.765911189913211170, 0.765943336274871430, 0.765975480721673210, 0.766007623253536330, 0.766039763870380970, 0.766071902572125650, 0.766104039358690540, +0.766136174229995360, 0.766168307185959740, 0.766200438226503300, 0.766232567351545880, 0.766264694561007540, 0.766296819854806910, 0.766328943232864160, 0.766361064695099130, +0.766393184241431440, 0.766425301871780710, 0.766457417586066780, 0.766489531384209280, 0.766521643266128590, 0.766553753231743240, 0.766585861280973390, 0.766617967413739000, +0.766650071629959570, 0.766682173929555070, 0.766714274312445100, 0.766746372778549400, 0.766778469327788370, 0.766810563960080630, 0.766842656675346460, 0.766874747473505700, +0.766906836354477980, 0.766938923318183250, 0.766971008364541130, 0.767003091493472120, 0.767035172704894740, 0.767067251998729490, 0.767099329374896110, 0.767131404833314430, +0.767163478373904200, 0.767195549996585240, 0.767227619701277510, 0.767259687487901190, 0.767291753356375120, 0.767323817306619690, 0.767355879338554650, 0.767387939452100040, +0.767419997647175500, 0.767452053923700970, 0.767484108281596860, 0.767516160720781880, 0.767548211241176560, 0.767580259842700730, 0.767612306525274240, 0.767644351288816920, +0.767676394133248730, 0.767708435058489620, 0.767740474064460000, 0.767772511151078580, 0.767804546318265890, 0.767836579565941870, 0.767868610894026360, 0.767900640302439320, +0.767932667791100700, 0.767964693359930340, 0.767996717008848860, 0.768028738737775110, 0.768060758546629360, 0.768092776435331800, 0.768124792403802380, 0.768156806451960830, +0.768188818579727320, 0.768220828787022360, 0.768252837073764680, 0.768284843439875020, 0.768316847885273210, 0.768348850409879210, 0.768380851013613200, 0.768412849696395010, +0.768444846458144700, 0.768476841298782800, 0.768508834218228240, 0.768540825216401660, 0.768572814293222990, 0.768604801448612210, 0.768636786682489580, 0.768668769994774850, +0.768700751385388180, 0.768732730854250310, 0.768764708401279970, 0.768796684026397890, 0.768828657729524020, 0.768860629510578650, 0.768892599369481620, 0.768924567306153110, +0.768956533320513720, 0.768988497412482540, 0.769020459581979950, 0.769052419828926360, 0.769084378153241600, 0.769116334554845960, 0.769148289033659500, 0.769180241589602300, +0.769212192222595070, 0.769244140932556770, 0.769276087719408030, 0.769308032583069230, 0.769339975523460230, 0.769371916540501410, 0.769403855634112730, 0.769435792804214920, +0.769467728050727160, 0.769499661373570070, 0.769531592772663810, 0.769563522247928570, 0.769595449799284510, 0.769627375426651830, 0.769659299129950680, 0.769691220909101910, +0.769723140764024480, 0.769755058694639230, 0.769786974700866320, 0.769818888782625940, 0.769850800939838380, 0.769882711172423790, 0.769914619480302490, 0.769946525863395070, +0.769978430321620940, 0.770010332854900610, 0.770042233463154480, 0.770074132146302830, 0.770106028904265830, 0.770137923736963660, 0.770169816644317380, 0.770201707626245850, +0.770233596682670110, 0.770265483813510450, 0.770297369018686950, 0.770329252298120220, 0.770361133651730200, 0.770393013079437420, 0.770424890581162590, 0.770456766156825010, +0.770488639806345520, 0.770520511529644400, 0.770552381326642060, 0.770584249197258760, 0.770616115141414810, 0.770647979159031160, 0.770679841250026980, 0.770711701414323210, +0.770743559651840270, 0.770775415962498320, 0.770807270346217770, 0.770839122802919220, 0.770870973332522750, 0.770902821934949410, 0.770934668610118500, 0.770966513357950860, +0.770998356178366980, 0.771030197071287170, 0.771062036036631930, 0.771093873074321530, 0.771125708184276500, 0.771157541366417790, 0.771189372620664670, 0.771221201946938000, +0.771253029345158380, 0.771284854815246220, 0.771316678357121920, 0.771348499970705870, 0.771380319655919240, 0.771412137412681220, 0.771443953240912750, 0.771475767140534450, +0.771507579111466830, 0.771539389153630180, 0.771571197266945010, 0.771603003451331930, 0.771634807706711890, 0.771666610033004190, 0.771698410430130100, 0.771730208898009920, +0.771762005436564150, 0.771793800045713410, 0.771825592725378210, 0.771857383475478940, 0.771889172295936900, 0.771920959186671360, 0.771952744147603290, 0.771984527178653510, +0.772016308279742320, 0.772048087450790340, 0.772079864691718190, 0.772111640002446920, 0.772143413382896050, 0.772175184832986530, 0.772206954352639200, 0.772238721941774340, +0.772270487600312800, 0.772302251328174980, 0.772334013125281490, 0.772365772991553620, 0.772397530926910660, 0.772429286931273880, 0.772461041004563920, 0.772492793146701380, +0.772524543357606900, 0.772556291637200960, 0.772588037985404870, 0.772619782402138130, 0.772651524887322030, 0.772683265440876950, 0.772715004062723860, 0.772746740752783160, +0.772778475510975670, 0.772810208337221920, 0.772841939231443290, 0.772873668193559290, 0.772905395223491000, 0.772937120321159240, 0.772968843486484760, 0.773000564719388050, +0.773032284019790070, 0.773064001387611330, 0.773095716822773120, 0.773127430325195040, 0.773159141894798400, 0.773190851531503910, 0.773222559235232310, 0.773254265005904330, +0.773285968843440590, 0.773317670747762590, 0.773349370718789840, 0.773381068756443630, 0.773412764860644810, 0.773444459031313980, 0.773476151268372100, 0.773507841571739800, +0.773539529941337790, 0.773571216377087700, 0.773602900878908930, 0.773634583446722870, 0.773666264080450360, 0.773697942780012250, 0.773729619545329260, 0.773761294376322130, +0.773792967272911910, 0.773824638235019790, 0.773856307262565490, 0.773887974355470410, 0.773919639513655390, 0.773951302737041270, 0.773982964025549000, 0.774014623379099210, +0.774046280797613400, 0.774077936281011400, 0.774109589829214520, 0.774141241442143690, 0.774172891119719760, 0.774204538861863580, 0.774236184668496090, 0.774267828539538130, +0.774299470474911100, 0.774331110474534840, 0.774362748538330870, 0.774394384666220010, 0.774426018858123230, 0.774457651113961370, 0.774489281433655360, 0.774520909817126620, +0.774552536264295210, 0.774584160775082300, 0.774615783349409170, 0.774647403987196450, 0.774679022688365300, 0.774710639452836470, 0.774742254280531120, 0.774773867171370760, +0.774805478125275120, 0.774837087142165700, 0.774868694221963690, 0.774900299364589930, 0.774931902569965360, 0.774963503838011050, 0.774995103168647950, 0.775026700561797680, +0.775058296017380190, 0.775089889535316880, 0.775121481115528810, 0.775153070757937050, 0.775184658462462650, 0.775216244229026570, 0.775247828057550550, 0.775279409947954300, +0.775310989900159450, 0.775342567914087290, 0.775374143989658650, 0.775405718126794600, 0.775437290325416310, 0.775468860585444730, 0.775500428906801600, 0.775531995289406860, +0.775563559733182140, 0.775595122238048500, 0.775626682803926990, 0.775658241430738920, 0.775689798118405100, 0.775721352866846850, 0.775752905675985760, 0.775784456545741910, +0.775816005476036800, 0.775847552466791820, 0.775879097517927830, 0.775910640629366210, 0.775942181801027920, 0.775973721032834800, 0.776005258324706680, 0.776036793676565530, +0.776068327088332400, 0.776099858559928360, 0.776131388091274800, 0.776162915682292680, 0.776194441332903270, 0.776225965043028320, 0.776257486812587880, 0.776289006641503800, +0.776320524529697130, 0.776352040477089280, 0.776383554483601190, 0.776415066549154260, 0.776446576673670230, 0.776478084857069150, 0.776509591099272870, 0.776541095400202660, +0.776572597759779710, 0.776604098177925310, 0.776635596654560610, 0.776667093189606920, 0.776698587782986060, 0.776730080434618110, 0.776761571144425010, 0.776793059912327940, +0.776824546738248300, 0.776856031622107260, 0.776887514563826100, 0.776918995563326220, 0.776950474620529350, 0.776981951735355780, 0.777013426907727340, 0.777044900137565330, +0.777076371424791020, 0.777107840769325820, 0.777139308171091000, 0.777170773630008530, 0.777202237145998450, 0.777233698718982850, 0.777265158348883100, 0.777296616035620280, +0.777328071779116000, 0.777359525579291550, 0.777390977436068330, 0.777422427349368170, 0.777453875319111360, 0.777485321345219860, 0.777516765427615050, 0.777548207566218340, +0.777579647760951230, 0.777611086011734900, 0.777642522318490850, 0.777673956681141030, 0.777705389099605740, 0.777736819573807030, 0.777768248103666290, 0.777799674689104940, +0.777831099330044350, 0.777862522026406040, 0.777893942778111970, 0.777925361585082520, 0.777956778447239650, 0.777988193364504750, 0.778019606336799450, 0.778051017364045140, +0.778082426446163320, 0.778113833583075400, 0.778145238774703430, 0.778176642020967810, 0.778208043321790610, 0.778239442677093220, 0.778270840086797260, 0.778302235550824230, +0.778333629069095640, 0.778365020641533460, 0.778396410268058280, 0.778427797948591960, 0.778459183683056220, 0.778490567471372460, 0.778521949313462410, 0.778553329209247360, +0.778584707158649030, 0.778616083161589480, 0.778647457217989110, 0.778678829327770220, 0.778710199490854180, 0.778741567707162630, 0.778772933976617180, 0.778804298299139440, +0.778835660674650930, 0.778867021103073820, 0.778898379584328500, 0.778929736118337380, 0.778961090705021840, 0.778992443344303620, 0.779023794036104220, 0.779055142780345380, +0.779086489576949370, 0.779117834425836380, 0.779149177326928900, 0.779180518280148450, 0.779211857285416750, 0.779243194342655320, 0.779274529451785990, 0.779305862612730270, +0.779337193825410450, 0.779368523089747130, 0.779399850405662510, 0.779431175773078300, 0.779462499191916010, 0.779493820662097600, 0.779525140183544570, 0.779556457756179320, +0.779587773379922360, 0.779619087054695850, 0.779650398780421750, 0.779681708557021570, 0.779713016384417150, 0.779744322262530210, 0.779775626191282490, 0.779806928170596160, +0.779838228200392060, 0.779869526280592360, 0.779900822411118800, 0.779932116591893210, 0.779963408822837320, 0.779994699103872980, 0.780025987434921800, 0.780057273815906280, +0.780088558246746940, 0.780119840727366290, 0.780151121257685930, 0.780182399837627830, 0.780213676467113700, 0.780244951146065510, 0.780276223874405320, 0.780307494652054180, +0.780338763478934160, 0.780370030354967330, 0.780401295280075400, 0.780432558254180230, 0.780463819277203650, 0.780495078349067510, 0.780526335469694190, 0.780557590639004540, +0.780588843856920960, 0.780620095123365170, 0.780651344438259230, 0.780682591801524880, 0.780713837213084070, 0.780745080672858640, 0.780776322180771090, 0.780807561736742150, +0.780838799340694330, 0.780870034992549480, 0.780901268692229640, 0.780932500439656560, 0.780963730234752180, 0.780994958077439130, 0.781026183967638010, 0.781057407905271560, +0.781088629890261510, 0.781119849922529920, 0.781151068001998630, 0.781182284128589810, 0.781213498302225200, 0.781244710522827400, 0.781275920790317270, 0.781307129104617300, +0.781338335465649570, 0.781369539873335910, 0.781400742327598490, 0.781431942828359260, 0.781463141375540630, 0.781494337969063650, 0.781525532608850830, 0.781556725294824120, +0.781587916026905580, 0.781619104805017280, 0.781650291629081280, 0.781681476499019530, 0.781712659414754540, 0.781743840376207480, 0.781775019383300740, 0.781806196435956500, +0.781837371534096710, 0.781868544677643550, 0.781899715866518960, 0.781930885100645230, 0.781962052379944650, 0.781993217704338490, 0.782024381073749280, 0.782055542488099160, +0.782086701947310110, 0.782117859451304300, 0.782149015000003890, 0.782180168593331500, 0.782211320231208100, 0.782242469913556390, 0.782273617640298570, 0.782304763411356690, +0.782335907226652800, 0.782367049086109210, 0.782398188989648080, 0.782429326937191920, 0.782460462928662000, 0.782491596963980740, 0.782522729043070630, 0.782553859165853630, +0.782584987332252120, 0.782616113542187960, 0.782647237795583650, 0.782678360092361690, 0.782709480432443370, 0.782740598815751310, 0.782771715242207790, 0.782802829711734980, +0.782833942224255060, 0.782865052779690210, 0.782896161377963360, 0.782927268018995590, 0.782958372702709630, 0.782989475429027750, 0.783020576197872130, 0.783051675009165060, +0.783082771862828820, 0.783113866758785690, 0.783144959696958410, 0.783176050677268250, 0.783207139699637840, 0.783238226763989690, 0.783269311870245950, 0.783300395018328930, +0.783331476208160900, 0.783362555439664710, 0.783393632712761630, 0.783424708027374410, 0.783455781383425530, 0.783486852780837070, 0.783517922219531540, 0.783548989699431210, +0.783580055220458370, 0.783611118782535980, 0.783642180385585200, 0.783673240029528980, 0.783704297714289730, 0.783735353439789730, 0.783766407205951250, 0.783797459012696820, +0.783828508859948700, 0.783859556747629860, 0.783890602675661690, 0.783921646643966910, 0.783952688652468030, 0.783983728701087460, 0.784014766789747460, 0.784045802918370670, +0.784076837086879920, 0.784107869295196380, 0.784138899543243340, 0.784169927830942970, 0.784200954158217780, 0.784231978524990270, 0.784263000931182730, 0.784294021376717780, +0.784325039861518250, 0.784356056385505540, 0.784387070948602720, 0.784418083550732280, 0.784449094191816520, 0.784480102871778160, 0.784511109590539490, 0.784542114348023010, +0.784573117144151900, 0.784604117978847330, 0.784635116852032470, 0.784666113763629820, 0.784697108713561910, 0.784728101701751330, 0.784759092728120390, 0.784790081792592240, +0.784821068895088400, 0.784852054035531820, 0.784883037213845220, 0.784914018429950900, 0.784944997683771570, 0.784975974975229860, 0.785006950304248050, 0.785037923670749540, +0.785068895074655600, 0.785099864515889420, 0.785130831994373610, 0.785161797510030680, 0.785192761062783350, 0.785223722652554020, 0.785254682279265980, 0.785285639942840620, +0.785316595643201330, 0.785347549380270400, 0.785378501153970570, 0.785409450964224540, 0.785440398810954950, 0.785471344694084310, 0.785502288613535880, 0.785533230569231080, +0.785564170561093290, 0.785595108589045130, 0.785626044653009110, 0.785656978752907960, 0.785687910888664410, 0.785718841060201070, 0.785749769267441220, 0.785780695510306380, +0.785811619788719720, 0.785842542102604070, 0.785873462451882050, 0.785904380836476400, 0.785935297256309840, 0.785966211711305540, 0.785997124201385120, 0.786028034726471980, +0.786058943286488620, 0.786089849881357990, 0.786120754511002830, 0.786151657175345630, 0.786182557874309350, 0.786213456607817160, 0.786244353375790910, 0.786275248178153750, +0.786306141014828320, 0.786337031885737670, 0.786367920790804420, 0.786398807729951410, 0.786429692703101260, 0.786460575710177580, 0.786491456751101770, 0.786522335825797450, +0.786553212934187230, 0.786584088076193950, 0.786614961251740460, 0.786645832460749590, 0.786676701703144630, 0.786707568978847420, 0.786738434287781230, 0.786769297629869020, +0.786800159005033640, 0.786831018413197690, 0.786861875854284350, 0.786892731328216240, 0.786923584834916870, 0.786954436374307950, 0.786985285946313010, 0.787016133550854760, +0.787046979187856270, 0.787077822857240260, 0.787108664558929690, 0.787139504292848070, 0.787170342058917120, 0.787201177857060340, 0.787232011687200580, 0.787262843549260790, +0.787293673443163920, 0.787324501368832810, 0.787355327326190510, 0.787386151315160430, 0.787416973335664410, 0.787447793387625940, 0.787478611470967980, 0.787509427585613490, +0.787540241731485510, 0.787571053908506900, 0.787601864116600600, 0.787632672355690230, 0.787663478625697520, 0.787694282926546310, 0.787725085258159210, 0.787755885620459510, +0.787786684013370040, 0.787817480436813990, 0.787848274890714630, 0.787879067374994020, 0.787909857889575900, 0.787940646434383000, 0.787971433009338580, 0.788002217614365510, +0.788033000249386940, 0.788063780914325830, 0.788094559609105790, 0.788125336333648900, 0.788156111087878640, 0.788186883871717980, 0.788217654685090310, 0.788248423527918350, +0.788279190400125400, 0.788309955301634950, 0.788340718232369180, 0.788371479192251590, 0.788402238181205250, 0.788432995199153330, 0.788463750246018890, 0.788494503321725100, +0.788525254426195030, 0.788556003559352400, 0.788586750721119280, 0.788617495911419280, 0.788648239130175450, 0.788678980377310990, 0.788709719652749160, 0.788740456956413040, +0.788771192288225790, 0.788801925648111020, 0.788832657035990930, 0.788863386451789220, 0.788894113895429070, 0.788924839366833550, 0.788955562865925940, 0.788986284392629520, +0.789017003946867910, 0.789047721528563170, 0.789078437137639140, 0.789109150774019110, 0.789139862437626130, 0.789170572128383490, 0.789201279846214470, 0.789231985591042130, +0.789262689362790540, 0.789293391161381530, 0.789324090986739170, 0.789354788838786510, 0.789385484717446850, 0.789416178622643570, 0.789446870554299740, 0.789477560512338860, +0.789508248496684550, 0.789538934507259090, 0.789569618543986220, 0.789600300606789430, 0.789630980695591790, 0.789661658810316690, 0.789692334950887530, 0.789723009117228040, +0.789753681309260490, 0.789784351526908730, 0.789815019770096050, 0.789845686038745830, 0.789876350332781470, 0.789907012652126150, 0.789937672996703370, 0.789968331366436960, +0.789998987761249110, 0.790029642181063750, 0.790060294625804400, 0.790090945095394240, 0.790121593589756750, 0.790152240108815240, 0.790182884652493760, 0.790213527220714470, +0.790244167813401340, 0.790274806430477870, 0.790305443071867230, 0.790336077737493150, 0.790366710427278800, 0.790397341141147680, 0.790427969879023750, 0.790458596640829290, +0.790489221426488480, 0.790519844235924470, 0.790550465069060900, 0.790581083925821270, 0.790611700806128860, 0.790642315709907170, 0.790672928637080160, 0.790703539587570450, +0.790734148561301750, 0.790764755558197810, 0.790795360578181890, 0.790825963621177630, 0.790856564687108410, 0.790887163775898290, 0.790917760887469790, 0.790948356021746850, +0.790978949178653080, 0.791009540358111880, 0.791040129560046880, 0.791070716784381460, 0.791101302031039340, 0.791131885299944490, 0.791162466591019410, 0.791193045904188040, +0.791223623239374120, 0.791254198596501150, 0.791284771975492740, 0.791315343376272410, 0.791345912798763650, 0.791376480242890650, 0.791407045708575900, 0.791437609195743570, +0.791468170704317190, 0.791498730234220460, 0.791529287785376790, 0.791559843357710010, 0.791590396951144080, 0.791620948565601610, 0.791651498201006890, 0.791682045857283300, +0.791712591534354690, 0.791743135232144570, 0.791773676950576540, 0.791804216689574350, 0.791834754449062260, 0.791865290228962570, 0.791895824029199780, 0.791926355849697390, +0.791956885690379140, 0.791987413551168640, 0.792017939431989610, 0.792048463332766350, 0.792078985253421350, 0.792109505193878790, 0.792140023154062510, 0.792170539133896230, +0.792201053133303580, 0.792231565152208270, 0.792262075190534150, 0.792292583248205280, 0.792323089325144390, 0.792353593421275870, 0.792384095536523340, 0.792414595670810520, +0.792445093824061250, 0.792475589996199270, 0.792506084187148300, 0.792536576396832610, 0.792567066625174950, 0.792597554872099600, 0.792628041137530490, 0.792658525421391150, +0.792689007723605620, 0.792719488044097420, 0.792749966382791160, 0.792780442739609460, 0.792810917114476490, 0.792841389507316420, 0.792871859918052760, 0.792902328346609450, +0.792932794792910340, 0.792963259256879270, 0.792993721738440630, 0.793024182237517030, 0.793054640754033090, 0.793085097287912430, 0.793115551839079110, 0.793146004407456860, +0.793176454992969630, 0.793206903595541360, 0.793237350215096230, 0.793267794851557180, 0.793298237504848740, 0.793328678174894610, 0.793359116861618860, 0.793389553564945340, +0.793419988284797870, 0.793450421021100970, 0.793480851773777470, 0.793511280542751880, 0.793541707327948150, 0.793572132129290010, 0.793602554946701620, 0.793632975780106830, +0.793663394629429590, 0.793693811494594500, 0.793724226375524200, 0.793754639272143400, 0.793785050184376060, 0.793815459112146020, 0.793845866055377320, 0.793876271013993940, +0.793906673987920470, 0.793937074977079770, 0.793967473981396440, 0.793997871000794330, 0.794028266035197610, 0.794058659084530220, 0.794089050148716110, 0.794119439227679360, +0.794149826321344680, 0.794180211429634800, 0.794210594552474450, 0.794240975689787580, 0.794271354841498240, 0.794301732007530630, 0.794332107187808560, 0.794362480382256320, +0.794392851590798310, 0.794423220813357700, 0.794453588049858990, 0.794483953300226360, 0.794514316564383870, 0.794544677842255580, 0.794575037133765540, 0.794605394438838490, +0.794635749757397480, 0.794666103089366920, 0.794696454434671300, 0.794726803793234460, 0.794757151164980580, 0.794787496549833830, 0.794817839947718370, 0.794848181358558840, +0.794878520782278280, 0.794908858218801420, 0.794939193668052440, 0.794969527129955500, 0.794999858604434670, 0.795030188091414350, 0.795060515590818360, 0.795090841102571780, +0.795121164626597430, 0.795151486162820280, 0.795181805711164370, 0.795212123271553880, 0.795242438843913210, 0.795272752428166420, 0.795303064024238230, 0.795333373632051810, +0.795363681251532010, 0.795393986882602990, 0.795424290525189040, 0.795454592179214330, 0.795484891844603140, 0.795515189521279750, 0.795545485209168900, 0.795575778908193860, +0.795606070618279260, 0.795636360339349590, 0.795666648071328920, 0.795696933814141750, 0.795727217567712140, 0.795757499331965050, 0.795787779106823740, 0.795818056892212860, +0.795848332688056990, 0.795878606494280110, 0.795908878310806810, 0.795939148137561390, 0.795969415974468020, 0.795999681821451640, 0.796029945678435550, 0.796060207545344570, +0.796090467422103100, 0.796120725308635420, 0.796150981204865940, 0.796181235110719030, 0.796211487026118990, 0.796241736950990760, 0.796271984885257740, 0.796302230828844660, +0.796332474781676130, 0.796362716743676310, 0.796392956714769730, 0.796423194694880760, 0.796453430683934260, 0.796483664681853720, 0.796513896688564090, 0.796544126703989660, +0.796574354728054820, 0.796604580760684190, 0.796634804801802150, 0.796665026851333000, 0.796695246909201900, 0.796725464975332030, 0.796755681049648670, 0.796785895132075980, +0.796816107222538590, 0.796846317320960900, 0.796876525427267390, 0.796906731541382700, 0.796936935663231650, 0.796967137792737650, 0.796997337929825860, 0.797027536074420780, +0.797057732226446820, 0.797087926385828480, 0.797118118552490370, 0.797148308726357560, 0.797178496907353320, 0.797208683095402940, 0.797238867290430810, 0.797269049492361550, +0.797299229701119660, 0.797329407916629650, 0.797359584138816140, 0.797389758367604170, 0.797419930602917380, 0.797450100844680600, 0.797480269092818660, 0.797510435347256070, +0.797540599607917340, 0.797570761874727200, 0.797600922147610580, 0.797631080426491220, 0.797661236711294070, 0.797691391001943860, 0.797721543298365200, 0.797751693600482700, +0.797781841908220880, 0.797811988221504450, 0.797842132540258710, 0.797872274864407040, 0.797902415193874610, 0.797932553528586270, 0.797962689868466410, 0.797992824213439980, +0.798022956563431360, 0.798053086918365410, 0.798083215278167280, 0.798113341642760600, 0.798143466012070530, 0.798173588386021820, 0.798203708764539050, 0.798233827147547090, +0.798263943534970540, 0.798294057926734690, 0.798324170322763150, 0.798354280722981200, 0.798384389127313470, 0.798414495535684890, 0.798444599948019970, 0.798474702364243560, +0.798504802784280490, 0.798534901208055810, 0.798564997635493490, 0.798595092066518570, 0.798625184501055910, 0.798655274939030320, 0.798685363380366550, 0.798715449824989430, +0.798745534272824130, 0.798775616723794490, 0.798805697177825790, 0.798835775634842870, 0.798865852094770570, 0.798895926557533500, 0.798925999023056720, 0.798956069491264960, +0.798986137962083510, 0.799016204435436190, 0.799046268911248300, 0.799076331389444890, 0.799106391869950580, 0.799136450352690210, 0.799166506837588830, 0.799196561324571060, +0.799226613813562530, 0.799256664304486830, 0.799286712797269590, 0.799316759291835540, 0.799346803788109520, 0.799376846286016460, 0.799406886785481440, 0.799436925286429620, +0.799466961788785070, 0.799496996292472950, 0.799527028797418440, 0.799557059303546370, 0.799587087810781580, 0.799617114319049140, 0.799647138828273870, 0.799677161338381290, +0.799707181849295350, 0.799737200360941420, 0.799767216873244480, 0.799797231386129460, 0.799827243899521310, 0.799857254413345210, 0.799887262927525880, 0.799917269441988930, +0.799947273956658320, 0.799977276471459440, 0.800007276986317350, 0.800037275501157220, 0.800067272015903770, 0.800097266530482190, 0.800127259044817960, 0.800157249558835160, +0.800187238072459060, 0.800217224585614950, 0.800247209098227770, 0.800277191610222590, 0.800307172121524470, 0.800337150632058240, 0.800367127141749850, 0.800397101650523020, +0.800427074158303500, 0.800457044665016220, 0.800487013170586350, 0.800516979674939070, 0.800546944177999210, 0.800576906679692500, 0.800606867179943120, 0.800636825678676440, +0.800666782175817770, 0.800696736671292040, 0.800726689165024650, 0.800756639656940440, 0.800786588146964570, 0.800816534635022890, 0.800846479121039230, 0.800876421604939440, +0.800906362086648560, 0.800936300566091770, 0.800966237043194250, 0.800996171517881160, 0.801026103990077680, 0.801056034459709410, 0.801085962926700420, 0.801115889390976670, +0.801145813852463200, 0.801175736311085070, 0.801205656766767690, 0.801235575219436220, 0.801265491669016280, 0.801295406115432040, 0.801325318558609330, 0.801355228998473330, +0.801385137434949210, 0.801415043867962360, 0.801444948297437840, 0.801474850723300940, 0.801504751145477370, 0.801534649563891530, 0.801564545978468930, 0.801594440389135080, +0.801624332795815020, 0.801654223198434270, 0.801684111596917880, 0.801713997991191140, 0.801743882381180110, 0.801773764766808730, 0.801803645148002950, 0.801833523524688060, +0.801863399896789340, 0.801893274264232180, 0.801923146626941750, 0.801953016984844000, 0.801982885337863220, 0.802012751685925230, 0.802042616028955440, 0.802072478366878890, +0.802102338699621330, 0.802132197027107920, 0.802162053349263940, 0.802191907666015340, 0.802221759977286510, 0.802251610283003290, 0.802281458583090970, 0.802311304877475040, +0.802341149166080900, 0.802370991448833840, 0.802400831725659790, 0.802430669996483160, 0.802460506261229890, 0.802490340519825260, 0.802520172772194900, 0.802550003018264070, +0.802579831257958180, 0.802609657491202830, 0.802639481717923760, 0.802669303938045480, 0.802699124151493910, 0.802728942358194590, 0.802758758558072880, 0.802788572751054310, +0.802818384937064260, 0.802848195116028340, 0.802878003287872400, 0.802907809452520830, 0.802937613609899900, 0.802967415759934800, 0.802997215902551240, 0.803027014037674620, +0.803056810165230450, 0.803086604285144890, 0.803116396397342220, 0.803146186501748520, 0.803175974598289380, 0.803205760686890200, 0.803235544767476830, 0.803265326839974430, +0.803295106904308830, 0.803324884960405880, 0.803354661008190310, 0.803384435047587940, 0.803414207078524620, 0.803443977100925630, 0.803473745114716810, 0.803503511119823650, +0.803533275116171670, 0.803563037103687040, 0.803592797082294250, 0.803622555051919480, 0.803652311012488350, 0.803682064963926470, 0.803711816906159450, 0.803741566839112800, +0.803771314762712800, 0.803801060676883950, 0.803830804581552540, 0.803860546476644070, 0.803890286362084150, 0.803920024237798620, 0.803949760103713000, 0.803979493959752990, +0.804009225805844770, 0.804038955641912860, 0.804068683467883740, 0.804098409283682810, 0.804128133089235810, 0.804157854884468560, 0.804187574669306680, 0.804217292443676350, +0.804247008207502280, 0.804276721960710650, 0.804306433703227300, 0.804336143434977830, 0.804365851155887880, 0.804395556865883490, 0.804425260564890050, 0.804454962252834080, +0.804484661929640190, 0.804514359595234650, 0.804544055249543090, 0.804573748892491560, 0.804603440524005560, 0.804633130144010940, 0.804662817752433530, 0.804692503349199620, +0.804722186934233920, 0.804751868507462720, 0.804781548068811860, 0.804811225618207170, 0.804840901155574380, 0.804870574680839330, 0.804900246193928410, 0.804929915694766350, +0.804959583183279430, 0.804989248659393590, 0.805018912123034670, 0.805048573574128400, 0.805078233012600840, 0.805107890438377490, 0.805137545851385080, 0.805167199251548230, +0.805196850638793430, 0.805226500013046410, 0.805256147374233230, 0.805285792722279630, 0.805315436057111640, 0.805345077378654910, 0.805374716686836130, 0.805404353981580060, +0.805433989262812950, 0.805463622530461000, 0.805493253784449910, 0.805522883024705760, 0.805552510251154370, 0.805582135463722260, 0.805611758662334250, 0.805641379846916860, +0.805670999017396030, 0.805700616173697700, 0.805730231315747720, 0.805759844443472260, 0.805789455556797260, 0.805819064655649010, 0.805848671739952670, 0.805878276809634640, +0.805907879864620870, 0.805937480904837410, 0.805967079930210330, 0.805996676940665460, 0.806026271936129410, 0.806055864916527250, 0.806085455881785370, 0.806115044831829830, +0.806144631766586680, 0.806174216685981990, 0.806203799589941710, 0.806233380478391990, 0.806262959351259360, 0.806292536208468750, 0.806322111049946780, 0.806351683875619510, +0.806381254685413110, 0.806410823479253640, 0.806440390257066930, 0.806469955018779380, 0.806499517764317500, 0.806529078493606110, 0.806558637206572170, 0.806588193903141630, +0.806617748583240530, 0.806647301246795180, 0.806676851893731510, 0.806706400523976240, 0.806735947137454450, 0.806765491734092730, 0.806795034313817380, 0.806824574876554350, +0.806854113422230010, 0.806883649950770220, 0.806913184462101470, 0.806942716956150160, 0.806972247432841570, 0.807001775892102420, 0.807031302333858780, 0.807060826758036810, +0.807090349164562900, 0.807119869553363120, 0.807149387924364080, 0.807178904277491170, 0.807208418612670900, 0.807237930929829650, 0.807267441228893490, 0.807296949509788810, +0.807326455772441660, 0.807355960016778450, 0.807385462242725890, 0.807414962450209160, 0.807444460639154980, 0.807473956809489630, 0.807503450961139400, 0.807532943094030560, +0.807562433208089290, 0.807591921303241980, 0.807621407379415460, 0.807650891436534900, 0.807680373474527040, 0.807709853493318250, 0.807739331492834830, 0.807768807473003060, +0.807798281433749320, 0.807827753375000350, 0.807857223296681530, 0.807886691198719700, 0.807916157081041030, 0.807945620943572030, 0.807975082786238970, 0.808004542608968150, +0.808034000411686050, 0.808063456194319410, 0.808092909956793730, 0.808122361699035620, 0.808151811420971700, 0.808181259122528140, 0.808210704803631550, 0.808240148464208110, +0.808269590104184420, 0.808299029723487220, 0.808328467322041890, 0.808357902899775380, 0.808387336456614200, 0.808416767992484630, 0.808446197507313170, 0.808475625001026100, +0.808505050473550590, 0.808534473924811930, 0.808563895354737050, 0.808593314763252470, 0.808622732150284570, 0.808652147515759870, 0.808681560859604850, 0.808710972181745810, +0.808740381482109920, 0.808769788760622550, 0.808799194017210790, 0.808828597251800900, 0.808857998464319610, 0.808887397654693310, 0.808916794822848510, 0.808946189968712260, +0.808975583092209960, 0.809004974193268780, 0.809034363271815100, 0.809063750327775550, 0.809093135361076520, 0.809122518371644730, 0.809151899359406680, 0.809181278324289430, +0.809210655266218380, 0.809240030185120700, 0.809269403080922990, 0.809298773953551760, 0.809328142802933530, 0.809357509628995000, 0.809386874431662800, 0.809416237210863750, +0.809445597966523710, 0.809474956698569610, 0.809504313406928190, 0.809533668091525940, 0.809563020752289480, 0.809592371389145530, 0.809621720002021150, 0.809651066590841960, +0.809680411155535130, 0.809709753696027160, 0.809739094212244880, 0.809768432704114920, 0.809797769171563870, 0.809827103614518260, 0.809856436032905580, 0.809885766426651220, +0.809915094795682470, 0.809944421139925930, 0.809973745459308340, 0.810003067753756410, 0.810032388023196770, 0.810061706267556250, 0.810091022486761900, 0.810120336680739570, +0.810149648849416320, 0.810178958992718970, 0.810208267110574140, 0.810237573202908790, 0.810266877269649410, 0.810296179310723400, 0.810325479326056360, 0.810354777315575700, +0.810384073279208030, 0.810413367216880290, 0.810442659128519090, 0.810471949014051170, 0.810501236873403360, 0.810530522706503050, 0.810559806513275970, 0.810589088293649280, +0.810618368047549830, 0.810647645774904560, 0.810676921475640190, 0.810706195149683450, 0.810735466796961730, 0.810764736417400880, 0.810794004010928160, 0.810823269577470420, +0.810852533116954490, 0.810881794629307320, 0.810911054114455520, 0.810940311572326160, 0.810969567002846610, 0.810998820405942510, 0.811028071781541460, 0.811057321129570190, +0.811086568449955530, 0.811115813742624650, 0.811145057007504060, 0.811174298244520920, 0.811203537453602520, 0.811232774634674690, 0.811262009787664940, 0.811291242912500320, +0.811320474009107450, 0.811349703077413390, 0.811378930117345190, 0.811408155128830020, 0.811437378111794060, 0.811466599066164700, 0.811495817991868760, 0.811525034888833210, +0.811554249756985200, 0.811583462596251470, 0.811612673406559180, 0.811641882187835620, 0.811671088940006950, 0.811700293663000450, 0.811729496356743300, 0.811758697021162320, +0.811787895656184700, 0.811817092261737260, 0.811846286837747180, 0.811875479384141840, 0.811904669900847310, 0.811933858387791090, 0.811963044844900230, 0.811992229272101680, +0.812021411669322620, 0.812050592036489990, 0.812079770373531520, 0.812108946680373030, 0.812138120956942160, 0.812167293203166050, 0.812196463418971560, 0.812225631604286070, +0.812254797759036420, 0.812283961883149770, 0.812313123976553750, 0.812342284039174410, 0.812371442070939360, 0.812400598071775780, 0.812429752041610610, 0.812458903980371130, +0.812488053887984290, 0.812517201764377920, 0.812546347609477970, 0.812575491423212170, 0.812604633205507690, 0.812633772956291580, 0.812662910675491010, 0.812692046363033270, +0.812721180018845300, 0.812750311642854940, 0.812779441234988350, 0.812808568795173050, 0.812837694323336410, 0.812866817819405510, 0.812895939283307500, 0.812925058714969670, +0.812954176114319300, 0.812983291481283900, 0.813012404815789740, 0.813041516117764650, 0.813070625387135700, 0.813099732623830170, 0.813128837827775450, 0.813157940998898490, +0.813187042137127230, 0.813216141242387950, 0.813245238314608150, 0.813274333353715350, 0.813303426359636710, 0.813332517332299500, 0.813361606271631010, 0.813390693177558520, +0.813419778050009760, 0.813448860888911000, 0.813477941694190190, 0.813507020465774500, 0.813536097203591210, 0.813565171907567720, 0.813594244577631300, 0.813623315213709230, +0.813652383815729460, 0.813681450383618170, 0.813710514917303280, 0.813739577416712100, 0.813768637881771890, 0.813797696312410170, 0.813826752708554200, 0.813855807070131940, +0.813884859397069560, 0.813913909689295000, 0.813942957946735660, 0.813972004169319030, 0.814001048356972290, 0.814030090509623050, 0.814059130627198480, 0.814088168709626640, +0.814117204756833800, 0.814146238768748030, 0.814175270745296610, 0.814204300686407030, 0.814233328592006700, 0.814262354462023110, 0.814291378296384090, 0.814320400095016050, +0.814349419857847150, 0.814378437584804550, 0.814407453275815870, 0.814436466930808620, 0.814465478549710300, 0.814494488132448180, 0.814523495678950330, 0.814552501189143240, +0.814581504662954870, 0.814610506100312830, 0.814639505501144500, 0.814668502865377290, 0.814697498192938910, 0.814726491483756870, 0.814755482737759000, 0.814784471954871910, +0.814813459135023680, 0.814842444278141790, 0.814871427384153860, 0.814900408452987280, 0.814929387484569670, 0.814958364478829190, 0.814987339435692240, 0.815016312355086870, +0.815045283236940810, 0.815074252081181560, 0.815103218887736620, 0.815132183656533620, 0.815161146387500150, 0.815190107080564390, 0.815219065735652840, 0.815248022352693560, +0.815276976931614270, 0.815305929472342590, 0.815334879974806030, 0.815363828438932290, 0.815392774864649450, 0.815421719251884220, 0.815450661600564670, 0.815479601910618520, +0.815508540181973270, 0.815537476414556650, 0.815566410608296490, 0.815595342763120180, 0.815624272878956110, 0.815653200955730790, 0.815682126993372390, 0.815711050991808740, +0.815739972950967560, 0.815768892870776360, 0.815797810751162870, 0.815826726592054910, 0.815855640393380650, 0.815884552155066830, 0.815913461877041610, 0.815942369559232720, +0.815971275201567870, 0.816000178803974800, 0.816029080366381330, 0.816057979888715760, 0.816086877370904570, 0.816115772812876280, 0.816144666214558610, 0.816173557575879170, +0.816202446896765910, 0.816231334177146440, 0.816260219416948710, 0.816289102616100990, 0.816317983774529910, 0.816346862892163850, 0.816375739968930760, 0.816404615004758250, +0.816433487999574160, 0.816462358953306320, 0.816491227865882680, 0.816520094737231420, 0.816548959567279460, 0.816577822355955110, 0.816606683103186180, 0.816635541808900520, +0.816664398473026080, 0.816693253095490570, 0.816722105676222500, 0.816750956215148590, 0.816779804712197350, 0.816808651167296510, 0.816837495580374110, 0.816866337951357990, +0.816895178280175990, 0.816924016566756060, 0.816952852811026590, 0.816981687012914510, 0.817010519172348130, 0.817039349289255480, 0.817068177363564520, 0.817097003395203080, +0.817125827384099110, 0.817154649330181120, 0.817183469233375930, 0.817212287093612160, 0.817241102910817640, 0.817269916684920330, 0.817298728415848270, 0.817327538103529430, +0.817356345747891620, 0.817385151348863470, 0.817413954906372030, 0.817442756420345700, 0.817471555890712410, 0.817500353317400230, 0.817529148700337220, 0.817557942039451310, +0.817586733334670580, 0.817615522585923520, 0.817644309793137070, 0.817673094956239850, 0.817701878075159930, 0.817730659149825350, 0.817759438180164170, 0.817788215166104230, +0.817816990107574360, 0.817845763004501510, 0.817874533856814300, 0.817903302664440670, 0.817932069427308780, 0.817960834145346700, 0.817989596818482600, 0.818018357446644530, +0.818047116029760990, 0.818075872567759270, 0.818104627060567750, 0.818133379508114710, 0.818162129910328220, 0.818190878267136430, 0.818219624578467420, 0.818248368844249340, +0.818277111064410920, 0.818305851238879110, 0.818334589367582740, 0.818363325450449870, 0.818392059487408670, 0.818420791478387310, 0.818449521423314060, 0.818478249322117430, +0.818506975174724700, 0.818535698981064490, 0.818564420741065170, 0.818593140454654590, 0.818621858121761360, 0.818650573742313310, 0.818679287316238960, 0.818707998843466900, +0.818736708323924200, 0.818765415757539810, 0.818794121144241880, 0.818822824483958710, 0.818851525776618460, 0.818880225022149300, 0.818908922220480170, 0.818937617371538140, +0.818966310475252150, 0.818995001531550360, 0.819023690540361060, 0.819052377501612640, 0.819081062415233150, 0.819109745281150990, 0.819138426099294990, 0.819167104869592540, +0.819195781591972150, 0.819224456266362420, 0.819253128892691530, 0.819281799470887860, 0.819310468000879590, 0.819339134482595210, 0.819367798915963560, 0.819396461300911820, +0.819425121637368910, 0.819453779925263250, 0.819482436164523100, 0.819511090355076850, 0.819539742496852910, 0.819568392589780200, 0.819597040633785910, 0.819625686628798980, +0.819654330574747900, 0.819682972471560970, 0.819711612319166670, 0.819740250117493300, 0.819768885866469230, 0.819797519566023540, 0.819826151216083490, 0.819854780816578140, +0.819883408367435780, 0.819912033868584910, 0.819940657319953910, 0.819969278721471300, 0.819997898073065560, 0.820026515374665530, 0.820055130626198720, 0.820083743827594080, +0.820112354978779990, 0.820140964079685180, 0.820169571130237810, 0.820198176130366610, 0.820226779080000410, 0.820255379979066830, 0.820283978827494710, 0.820312575625212760, +0.820341170372149260, 0.820369763068232840, 0.820398353713392090, 0.820426942307555420, 0.820455528850651870, 0.820484113342609070, 0.820512695783355840, 0.820541276172821020, +0.820569854510933010, 0.820598430797620290, 0.820627005032811500, 0.820655577216435670, 0.820684147348420430, 0.820712715428694840, 0.820741281457187500, 0.820769845433826920, +0.820798407358541700, 0.820826967231260470, 0.820855525051911840, 0.820884080820424860, 0.820912634536727250, 0.820941186200747960, 0.820969735812415720, 0.820998283371659250, +0.821026828878406940, 0.821055372332587630, 0.821083913734129920, 0.821112453082962880, 0.821140990379014220, 0.821169525622213130, 0.821198058812488090, 0.821226589949768050, +0.821255119033981410, 0.821283646065057100, 0.821312171042924090, 0.821340693967510190, 0.821369214838744480, 0.821397733656555770, 0.821426250420872810, 0.821454765131624190, +0.821483277788738640, 0.821511788392144780, 0.821540296941772110, 0.821568803437548120, 0.821597307879402110, 0.821625810267262890, 0.821654310601059200, 0.821682808880719650, +0.821711305106173070, 0.821739799277348190, 0.821768291394174400, 0.821796781456579310, 0.821825269464492300, 0.821853755417842110, 0.821882239316557570, 0.821910721160567400, +0.821939200949800440, 0.821967678684185970, 0.821996154363651810, 0.822024627988127250, 0.822053099557541130, 0.822081569071822280, 0.822110036530899420, 0.822138501934701500, +0.822166965283157470, 0.822195426576196380, 0.822223885813746280, 0.822252342995736460, 0.822280798122095760, 0.822309251192753000, 0.822337702207637240, 0.822366151166677220, +0.822394598069802200, 0.822423042916940240, 0.822451485708020740, 0.822479926442972520, 0.822508365121724430, 0.822536801744205400, 0.822565236310344390, 0.822593668820070350, +0.822622099273312650, 0.822650527669999130, 0.822678954010059300, 0.822707378293422000, 0.822735800520016380, 0.822764220689771290, 0.822792638802615550, 0.822821054858478230, +0.822849468857288820, 0.822877880798975280, 0.822906290683466880, 0.822934698510692900, 0.822963104280582060, 0.822991507993063530, 0.823019909648066260, 0.823048309245519640, +0.823076706785351830, 0.823105102267492230, 0.823133495691869780, 0.823161887058413640, 0.823190276367052890, 0.823218663617716340, 0.823247048810333170, 0.823275431944832880, +0.823303813021143420, 0.823332192039194500, 0.823360568998915190, 0.823388943900234320, 0.823417316743081160, 0.823445687527384670, 0.823474056253074460, 0.823502422920078690, +0.823530787528326760, 0.823559150077747940, 0.823587510568271170, 0.823615868999825640, 0.823644225372340500, 0.823672579685744810, 0.823700931939968070, 0.823729282134938570, +0.823757630270585790, 0.823785976346839030, 0.823814320363627340, 0.823842662320879770, 0.823871002218525610, 0.823899340056493900, 0.823927675834714270, 0.823956009553115100, +0.823984341211625780, 0.824012670810175710, 0.824040998348693930, 0.824069323827109620, 0.824097647245352060, 0.824125968603350860, 0.824154287901034180, 0.824182605138331860, +0.824210920315172960, 0.824239233431486750, 0.824267544487202520, 0.824295853482249430, 0.824324160416556650, 0.824352465290054020, 0.824380768102669690, 0.824409068854333520, +0.824437367544974650, 0.824465664174522270, 0.824493958742905870, 0.824522251250054410, 0.824550541695897480, 0.824578830080364590, 0.824607116403384130, 0.824635400664885940, +0.824663682864799190, 0.824691963003053250, 0.824720241079577420, 0.824748517094300970, 0.824776791047153850, 0.824805062938064100, 0.824833332766961690, 0.824861600533776000, +0.824889866238436300, 0.824918129880871990, 0.824946391461012340, 0.824974650978786640, 0.825002908434124830, 0.825031163826955290, 0.825059417157207760, 0.825087668424811850, +0.825115917629696600, 0.825144164771791640, 0.825172409851026250, 0.825200652867330350, 0.825228893820632250, 0.825257132710861980, 0.825285369537948840, 0.825313604301822320, +0.825341837002411820, 0.825370067639646710, 0.825398296213456390, 0.825426522723770820, 0.825454747170518480, 0.825482969553629210, 0.825511189873032620, 0.825539408128658000, +0.825567624320434850, 0.825595838448292650, 0.825624050512160810, 0.825652260511969490, 0.825680468447646860, 0.825708674319123090, 0.825736878126327680, 0.825765079869190120, +0.825793279547639810, 0.825821477161606250, 0.825849672711019500, 0.825877866195808160, 0.825906057615902080, 0.825934246971230860, 0.825962434261724110, 0.825990619487311120, +0.826018802647921710, 0.826046983743485290, 0.826075162773931890, 0.826103339739190030, 0.826131514639189880, 0.826159687473860930, 0.826187858243132790, 0.826216026946934860, +0.826244193585196960, 0.826272358157848610, 0.826300520664819850, 0.826328681106039300, 0.826356839481437010, 0.826384995790942710, 0.826413150034485790, 0.826441302211996080, +0.826469452323403080, 0.826497600368636950, 0.826525746347626320, 0.826553890260301350, 0.826582032106591650, 0.826610171886426940, 0.826638309599736720, 0.826666445246450720, +0.826694578826498550, 0.826722710339810480, 0.826750839786315250, 0.826778967165942790, 0.826807092478622940, 0.826835215724285310, 0.826863336902859740, 0.826891456014275830, +0.826919573058463750, 0.826947688035352120, 0.826975800944871440, 0.827003911786951210, 0.827032020561521140, 0.827060127268511080, 0.827088231907850640, 0.827116334479469640, +0.827144434983298370, 0.827172533419265440, 0.827200629787301240, 0.827228724087335500, 0.827256816319297820, 0.827284906483118140, 0.827312994578726310, 0.827341080606051830, +0.827369164565025290, 0.827397246455575220, 0.827425326277632100, 0.827453404031125660, 0.827481479715985730, 0.827509553332142040, 0.827537624879524540, 0.827565694358063380, +0.827593761767687620, 0.827621827108327320, 0.827649890379912550, 0.827677951582373010, 0.827706010715638540, 0.827734067779639090, 0.827762122774304500, 0.827790175699565140, +0.827818226555349760, 0.827846275341588830, 0.827874322058212210, 0.827902366705149830, 0.827930409282331530, 0.827958449789687130, 0.827986488227146710, 0.828014524594640420, +0.828042558892097440, 0.828070591119448030, 0.828098621276622150, 0.828126649363549740, 0.828154675380160630, 0.828182699326384890, 0.828210721202153000, 0.828238741007393700, +0.828266758742037480, 0.828294774406014400, 0.828322787999254520, 0.828350799521687550, 0.828378808973243560, 0.828406816353852600, 0.828434821663445060, 0.828462824901950000, +0.828490826069297910, 0.828518825165418750, 0.828546822190242450, 0.828574817143699180, 0.828602810025718780, 0.828630800836231860, 0.828658789575167590, 0.828686776242456240, +0.828714760838027860, 0.828742743361812750, 0.828770723813740730, 0.828798702193741850, 0.828826678501746180, 0.828854652737684440, 0.828882624901485450, 0.828910594993079950, +0.828938563012397990, 0.828966528959369510, 0.828994492833924790, 0.829022454635993890, 0.829050414365506750, 0.829078372022394210, 0.829106327606585090, 0.829134281118010240, +0.829162232556599710, 0.829190181922283550, 0.829218129214991940, 0.829246074434655030, 0.829274017581203340, 0.829301958654566240, 0.829329897654674130, 0.829357834581457400, +0.829385769434845990, 0.829413702214770180, 0.829441632921160130, 0.829469561553945910, 0.829497488113058350, 0.829525412598426600, 0.829553335009981300, 0.829581255347652700, +0.829609173611370880, 0.829637089801066210, 0.829665003916668750, 0.829692915958108790, 0.829720825925317150, 0.829748733818222780, 0.829776639636756630, 0.829804543380848970, +0.829832445050429860, 0.829860344645429680, 0.829888242165778610, 0.829916137611407480, 0.829944030982245450, 0.829971922278223360, 0.829999811499271490, 0.830027698645320000, +0.830055583716299390, 0.830083466712139730, 0.830111347632771500, 0.830139226478125320, 0.830167103248130590, 0.830194977942718020, 0.830222850561818100, 0.830250721105361130, +0.830278589573277270, 0.830306455965496900, 0.830334320281950980, 0.830362182522568660, 0.830390042687281000, 0.830417900776018070, 0.830445756788710580, 0.830473610725288580, +0.830501462585682580, 0.830529312369822970, 0.830557160077640470, 0.830585005709064570, 0.830612849264026230, 0.830640690742455830, 0.830668530144283660, 0.830696367469440090, +0.830724202717855630, 0.830752035889460670, 0.830779866984186150, 0.830807696001961470, 0.830835522942717450, 0.830863347806384710, 0.830891170592893640, 0.830918991302174610, +0.830946809934158040, 0.830974626488774960, 0.831002440965954880, 0.831030253365628640, 0.831058063687726830, 0.831085871932179750, 0.831113678098918120, 0.831141482187872200, +0.831169284198972620, 0.831197084132150320, 0.831224881987334800, 0.831252677764457100, 0.831280471463447750, 0.831308263084237110, 0.831336052626755920, 0.831363840090934560, +0.831391625476703530, 0.831419408783994010, 0.831447190012735480, 0.831474969162858900, 0.831502746234294990, 0.831530521226974130, 0.831558294140827050, 0.831586064975784130, +0.831613833731776660, 0.831641600408734030, 0.831669365006587390, 0.831697127525267370, 0.831724887964704560, 0.831752646324829480, 0.831780402605572840, 0.831808156806865150, +0.831835908928637570, 0.831863658970819820, 0.831891406933342740, 0.831919152816137260, 0.831946896619133900, 0.831974638342263260, 0.832002377985456070, 0.832030115548643370, +0.832057851031754890, 0.832085584434721800, 0.832113315757474830, 0.832141044999944460, 0.832168772162061530, 0.832196497243756660, 0.832224220244960570, 0.832251941165604410, +0.832279660005617820, 0.832307376764932160, 0.832335091443478060, 0.832362804041186230, 0.832390514557987400, 0.832418222993812300, 0.832445929348591520, 0.832473633622256570, +0.832501335814736950, 0.832529035925964060, 0.832556733955868490, 0.832584429904381080, 0.832612123771432680, 0.832639815556953990, 0.832667505260876180, 0.832695192883129100, +0.832722878423644120, 0.832750561882351860, 0.832778243259183260, 0.832805922554069040, 0.832833599766939940, 0.832861274897726990, 0.832888947946361260, 0.832916618912772690, +0.832944287796892450, 0.832971954598651590, 0.832999619317980830, 0.833027281954811130, 0.833054942509073080, 0.833082600980698200, 0.833110257369616410, 0.833137911675758900, +0.833165563899056600, 0.833193214039440360, 0.833220862096841210, 0.833248508071189780, 0.833276151962417110, 0.833303793770454600, 0.833331433495232090, 0.833359071136681060, +0.833386706694732250, 0.833414340169316700, 0.833441971560365370, 0.833469600867809080, 0.833497228091578670, 0.833524853231605740, 0.833552476287820250, 0.833580097260153590, +0.833607716148536570, 0.833635332952900380, 0.833662947673175840, 0.833690560309293890, 0.833718170861186050, 0.833745779328782240, 0.833773385712013980, 0.833800990010812320, +0.833828592225108190, 0.833856192354832550, 0.833883790399916450, 0.833911386360290830, 0.833938980235887310, 0.833966572026635710, 0.833994161732467880, 0.834021749353314520, +0.834049334889106710, 0.834076918339775710, 0.834104499705252360, 0.834132078985467820, 0.834159656180353480, 0.834187231289839510, 0.834214804313857530, 0.834242375252338460, +0.834269944105213490, 0.834297510872413770, 0.834325075553870140, 0.834352638149514330, 0.834380198659276480, 0.834407757083088120, 0.834435313420880290, 0.834462867672584260, +0.834490419838131100, 0.834517969917451750, 0.834545517910477600, 0.834573063817140140, 0.834600607637369430, 0.834628149371097310, 0.834655689018254710, 0.834683226578773030, +0.834710762052583210, 0.834738295439616420, 0.834765826739804480, 0.834793355953077460, 0.834820883079366970, 0.834848408118604390, 0.834875931070720670, 0.834903451935647300, +0.834930970713315120, 0.834958487403655640, 0.834986002006600340, 0.835013514522079610, 0.835041024950025080, 0.835068533290367900, 0.835096039543039460, 0.835123543707970930, +0.835151045785093580, 0.835178545774338590, 0.835206043675637670, 0.835233539488921210, 0.835261033214120820, 0.835288524851167890, 0.835316014399993700, 0.835343501860529410, +0.835370987232706420, 0.835398470516456440, 0.835425951711709750, 0.835453430818398290, 0.835480907836453120, 0.835508382765805750, 0.835535855606387430, 0.835563326358129470, +0.835590795020963120, 0.835618261594820330, 0.835645726079631390, 0.835673188475328230, 0.835700648781841910, 0.835728106999104160, 0.835755563127046020, 0.835783017165599000, +0.835810469114694480, 0.835837918974264180, 0.835865366744238720, 0.835892812424549710, 0.835920256015128760, 0.835947697515907140, 0.835975136926816240, 0.836002574247787570, +0.836030009478752940, 0.836057442619642770, 0.836084873670388970, 0.836112302630923070, 0.836139729501176430, 0.836167154281080350, 0.836194576970566430, 0.836221997569566060, +0.836249416078011290, 0.836276832495832290, 0.836304246822961340, 0.836331659059329820, 0.836359069204869020, 0.836386477259510650, 0.836413883223186110, 0.836441287095827210, +0.836468688877364700, 0.836496088567730500, 0.836523486166856010, 0.836550881674672840, 0.836578275091112490, 0.836605666416106340, 0.836633055649586120, 0.836660442791483770, +0.836687827841729790, 0.836715210800256240, 0.836742591666994720, 0.836769970441876620, 0.836797347124833670, 0.836824721715797250, 0.836852094214699080, 0.836879464621471230, +0.836906832936044180, 0.836934199158350100, 0.836961563288320390, 0.836988925325886870, 0.837016285270981040, 0.837043643123534520, 0.837070998883479240, 0.837098352550746160, +0.837125704125267100, 0.837153053606973780, 0.837180400995797820, 0.837207746291670940, 0.837235089494524630, 0.837262430604290510, 0.837289769620900960, 0.837317106544286370, +0.837344441374379130, 0.837371774111110740, 0.837399104754412930, 0.837426433304217290, 0.837453759760455550, 0.837481084123059550, 0.837508406391961220, 0.837535726567091410, +0.837563044648382270, 0.837590360635765530, 0.837617674529172910, 0.837644986328536120, 0.837672296033786900, 0.837699603644857290, 0.837726909161678250, 0.837754212584181920, +0.837781513912300160, 0.837808813145964560, 0.837836110285106850, 0.837863405329658970, 0.837890698279552540, 0.837917989134719820, 0.837945277895091660, 0.837972564560600320, +0.837999849131177530, 0.838027131606755130, 0.838054411987264940, 0.838081690272638680, 0.838108966462808750, 0.838136240557705860, 0.838163512557262400, 0.838190782461410100, +0.838218050270080890, 0.838245315983206510, 0.838272579600718880, 0.838299841122549850, 0.838327100548631580, 0.838354357878895120, 0.838381613113272860, 0.838408866251696530, +0.838436117294097950, 0.838463366240409070, 0.838490613090561940, 0.838517857844488070, 0.838545100502120170, 0.838572341063389070, 0.838599579528227060, 0.838626815896566070, +0.838654050168338050, 0.838681282343474940, 0.838708512421908580, 0.838735740403571460, 0.838762966288394530, 0.838790190076310060, 0.838817411767250220, 0.838844631361146840, +0.838871848857931870, 0.838899064257537350, 0.838926277559895020, 0.838953488764937580, 0.838980697872595990, 0.839007904882802520, 0.839035109795489340, 0.839062312610588390, +0.839089513328031720, 0.839116711947751170, 0.839143908469678900, 0.839171102893747410, 0.839198295219887540, 0.839225485448031990, 0.839252673578112730, 0.839279859610061800, +0.839307043543811250, 0.839334225379293030, 0.839361405116439750, 0.839388582755182470, 0.839415758295453670, 0.839442931737185650, 0.839470103080310110, 0.839497272324759460, +0.839524439470465510, 0.839551604517360550, 0.839578767465376960, 0.839605928314446140, 0.839633087064500350, 0.839660243715471880, 0.839687398267292770, 0.839714550719895200, +0.839741701073211330, 0.839768849327173550, 0.839795995481713240, 0.839823139536763020, 0.839850281492254820, 0.839877421348120930, 0.839904559104293510, 0.839931694760704730, +0.839958828317286740, 0.839985959773972060, 0.840013089130692060, 0.840040216387379360, 0.840067341543966120, 0.840094464600384390, 0.840121585556566690, 0.840148704412444940, +0.840175821167951420, 0.840202935823018750, 0.840230048377578420, 0.840257158831562820, 0.840284267184904450, 0.840311373437535370, 0.840338477589387840, 0.840365579640394160, +0.840392679590486910, 0.840419777439597620, 0.840446873187658760, 0.840473966834602740, 0.840501058380361820, 0.840528147824868290, 0.840555235168054420, 0.840582320409852370, +0.840609403550195090, 0.840636484589013740, 0.840663563526241160, 0.840690640361809740, 0.840717715095651740, 0.840744787727699450, 0.840771858257885140, 0.840798926686141650, +0.840825993012400460, 0.840853057236594200, 0.840880119358655250, 0.840907179378516110, 0.840934237296109060, 0.840961293111366250, 0.840988346824220300, 0.841015398434603930, +0.841042447942448650, 0.841069495347687270, 0.841096540650252080, 0.841123583850075570, 0.841150624947090030, 0.841177663941228060, 0.841204700832421830, 0.841231735620604380, +0.841258768305707120, 0.841285798887662860, 0.841312827366404110, 0.841339853741863370, 0.841366878013972920, 0.841393900182665360, 0.841420920247873520, 0.841447938209528790, +0.841474954067564340, 0.841501967821912440, 0.841528979472505600, 0.841555989019276420, 0.841582996462157170, 0.841610001801080480, 0.841637005035979160, 0.841664006166784940, +0.841691005193430760, 0.841718002115849020, 0.841744996933972200, 0.841771989647732920, 0.841798980257063680, 0.841825968761897080, 0.841852955162165960, 0.841879939457801930, +0.841906921648738150, 0.841933901734906900, 0.841960879716241010, 0.841987855592672970, 0.842014829364135190, 0.842041801030560920, 0.842068770591881570, 0.842095738048030400, +0.842122703398939800, 0.842149666644542490, 0.842176627784770980, 0.842203586819557870, 0.842230543748835880, 0.842257498572537950, 0.842284451290595810, 0.842311401902942510, +0.842338350409510770, 0.842365296810233090, 0.842392241105042180, 0.842419183293870670, 0.842446123376651700, 0.842473061353317010, 0.842499997223799530, 0.842526930988032220, +0.842553862645947450, 0.842580792197478060, 0.842607719642556650, 0.842634644981116070, 0.842661568213089240, 0.842688489338408010, 0.842715408357005540, 0.842742325268814650, +0.842769240073767860, 0.842796152771797980, 0.842823063362837850, 0.842849971846819870, 0.842876878223677520, 0.842903782493342520, 0.842930684655748050, 0.842957584710826820, +0.842984482658511780, 0.843011378498735310, 0.843038272231430570, 0.843065163856530630, 0.843092053373967200, 0.843118940783673660, 0.843145826085582750, 0.843172709279627400, +0.843199590365740100, 0.843226469343853920, 0.843253346213901580, 0.843280220975816340, 0.843307093629530050, 0.843333964174976080, 0.843360832612087160, 0.843387698940796130, +0.843414563161035910, 0.843441425272739240, 0.843468285275839060, 0.843495143170268520, 0.843521998955959810, 0.843548852632845960, 0.843575704200860030, 0.843602553659934860, +0.843629401010003390, 0.843656246250998330, 0.843683089382853080, 0.843709930405499690, 0.843736769318871430, 0.843763606122901360, 0.843790440817522190, 0.843817273402666880, +0.843844103878268470, 0.843870932244259690, 0.843897758500574140, 0.843924582647143760, 0.843951404683901840, 0.843978224610781420, 0.844005042427715460, 0.844031858134636880, +0.844058671731478750, 0.844085483218174340, 0.844112292594655700, 0.844139099860856330, 0.844165905016709290, 0.844192708062147410, 0.844219508997103850, 0.844246307821511440, +0.844273104535303350, 0.844299899138412860, 0.844326691630772230, 0.844353482012314860, 0.844380270282973690, 0.844407056442681990, 0.844433840491372490, 0.844460622428978570, +0.844487402255432950, 0.844514179970669350, 0.844540955574619830, 0.844567729067217890, 0.844594500448396680, 0.844621269718089260, 0.844648036876228580, 0.844674801922747800, +0.844701564857580520, 0.844728325680658920, 0.844755084391916380, 0.844781840991286170, 0.844808595478701460, 0.844835347854095090, 0.844862098117400540, 0.844888846268550650, +0.844915592307479040, 0.844942336234118070, 0.844969078048401270, 0.844995817750261780, 0.845022555339632660, 0.845049290816447200, 0.845076024180638540, 0.845102755432139750, +0.845129484570884660, 0.845156211596805320, 0.845182936509835450, 0.845209659309908210, 0.845236379996956890, 0.845263098570914530, 0.845289815031714520, 0.845316529379290360, +0.845343241613574440, 0.845369951734500470, 0.845396659742001510, 0.845423365636011060, 0.845450069416462060, 0.845476771083287890, 0.845503470636421840, 0.845530168075797620, +0.845556863401347500, 0.845583556613005110, 0.845610247710703920, 0.845636936694377120, 0.845663623563957970, 0.845690308319379750, 0.845716990960576180, 0.845743671487479750, +0.845770349900024090, 0.845797026198142570, 0.845823700381768460, 0.845850372450835160, 0.845877042405275840, 0.845903710245023980, 0.845930375970013300, 0.845957039580176210, +0.845983701075446510, 0.846010360455757620, 0.846037017721042780, 0.846063672871235410, 0.846090325906268870, 0.846116976826076450, 0.846143625630592090, 0.846170272319748170, +0.846196916893478650, 0.846223559351716780, 0.846250199694396080, 0.846276837921449810, 0.846303474032811480, 0.846330108028414910, 0.846356739908192600, 0.846383369672078390, +0.846409997320005880, 0.846436622851908240, 0.846463246267719180, 0.846489867567371880, 0.846516486750800050, 0.846543103817937400, 0.846569718768716450, 0.846596331603071350, +0.846622942320935270, 0.846649550922241920, 0.846676157406924700, 0.846702761774916990, 0.846729364026152510, 0.846755964160565090, 0.846782562178087120, 0.846809158078652870, +0.846835751862195730, 0.846862343528649200, 0.846888933077946770, 0.846915520510022060, 0.846942105824809000, 0.846968689022240210, 0.846995270102249730, 0.847021849064771070, +0.847048425909737720, 0.847075000637083410, 0.847101573246741510, 0.847128143738645640, 0.847154712112729970, 0.847181278368926980, 0.847207842507170850, 0.847234404527395180, +0.847260964429533360, 0.847287522213519220, 0.847314077879286250, 0.847340631426768520, 0.847367182855898740, 0.847393732166611070, 0.847420279358839010, 0.847446824432516290, +0.847473367387576500, 0.847499908223953270, 0.847526446941580300, 0.847552983540391660, 0.847579518020320170, 0.847606050381299770, 0.847632580623264300, 0.847659108746147360, +0.847685634749882680, 0.847712158634403860, 0.847738680399644730, 0.847765200045539240, 0.847791717572020430, 0.847818232979022260, 0.847844746266478430, 0.847871257434322790, +0.847897766482489050, 0.847924273410910920, 0.847950778219522470, 0.847977280908256640, 0.848003781477047690, 0.848030279925829240, 0.848056776254535020, 0.848083270463098950, +0.848109762551454650, 0.848136252519535950, 0.848162740367277120, 0.848189226094610890, 0.848215709701471750, 0.848242191187793200, 0.848268670553509190, 0.848295147798553530, +0.848321622922860060, 0.848348095926362960, 0.848374566808995030, 0.848401035570690800, 0.848427502211383970, 0.848453966731008480, 0.848480429129497950, 0.848506889406786310, +0.848533347562807520, 0.848559803597495830, 0.848586257510784200, 0.848612709302606900, 0.848639158972897770, 0.848665606521590730, 0.848692051948619740, 0.848718495253918630, +0.848744936437421330, 0.848771375499062010, 0.848797812438773950, 0.848824247256491190, 0.848850679952147910, 0.848877110525677940, 0.848903538977015090, 0.848929965306093550, +0.848956389512847460, 0.848982811597209900, 0.849009231559115450, 0.849035649398497850, 0.849062065115291030, 0.849088478709429160, 0.849114890180846070, 0.849141299529475700, +0.849167706755252660, 0.849194111858109780, 0.849220514837981670, 0.849246915694802260, 0.849273314428505620, 0.849299711039025680, 0.849326105526296390, 0.849352497890251910, +0.849378888130826630, 0.849405276247953590, 0.849431662241567410, 0.849458046111602140, 0.849484427857991610, 0.849510807480670200, 0.849537184979571650, 0.849563560354630540, +0.849589933605780170, 0.849616304732955020, 0.849642673736089040, 0.849669040615116280, 0.849695405369971010, 0.849721768000587300, 0.849748128506899070, 0.849774486888841050, +0.849800843146346300, 0.849827197279349410, 0.849853549287784560, 0.849879899171585910, 0.849906246930687390, 0.849932592565023400, 0.849958936074528220, 0.849985277459135320, +0.850011616718779230, 0.850037953853394090, 0.850064288862914070, 0.850090621747273350, 0.850116952506406070, 0.850143281140246400, 0.850169607648728950, 0.850195932031787120, +0.850222254289355380, 0.850248574421368030, 0.850274892427759220, 0.850301208308463230, 0.850327522063414110, 0.850353833692546250, 0.850380143195794360, 0.850406450573091500, +0.850432755824372610, 0.850459058949571860, 0.850485359948623400, 0.850511658821461510, 0.850537955568020480, 0.850564250188235120, 0.850590542682038600, 0.850616833049365750, +0.850643121290150740, 0.850669407404327950, 0.850695691391831770, 0.850721973252596240, 0.850748252986555760, 0.850774530593645160, 0.850800806073797820, 0.850827079426948350, +0.850853350653031250, 0.850879619751980790, 0.850905886723731240, 0.850932151568217000, 0.850958414285372440, 0.850984674875132190, 0.851010933337429830, 0.851037189672200210, +0.851063443879377490, 0.851089695958896280, 0.851115945910690730, 0.851142193734695460, 0.851168439430844970, 0.851194682999073080, 0.851220924439314410, 0.851247163751503440, +0.851273400935574580, 0.851299635991462190, 0.851325868919100780, 0.851352099718424630, 0.851378328389368670, 0.851404554931866510, 0.851430779345852870, 0.851457001631262370, +0.851483221788029270, 0.851509439816088180, 0.851535655715373490, 0.851561869485820130, 0.851588081127361620, 0.851614290639932880, 0.851640498023468420, 0.851666703277902730, +0.851692906403170300, 0.851719107399205640, 0.851745306265943140, 0.851771503003317830, 0.851797697611263340, 0.851823890089714600, 0.851850080438606220, 0.851876268657872470, +0.851902454747448190, 0.851928638707267650, 0.851954820537265680, 0.851981000237377000, 0.852007177807535320, 0.852033353247675820, 0.852059526557732870, 0.852085697737641090, +0.852111866787335080, 0.852138033706749340, 0.852164198495819040, 0.852190361154477770, 0.852216521682660710, 0.852242680080302240, 0.852268836347337080, 0.852294990483699830, +0.852321142489325110, 0.852347292364147520, 0.852373440108102120, 0.852399585721122730, 0.852425729203144300, 0.852451870554101650, 0.852478009773929290, 0.852504146862561930, +0.852530281819934180, 0.852556414645980640, 0.852582545340636600, 0.852608673903835770, 0.852634800335513200, 0.852660924635603610, 0.852687046804041730, 0.852713166840762260, +0.852739284745699930, 0.852765400518789800, 0.852791514159965680, 0.852817625669162750, 0.852843735046315830, 0.852869842291359540, 0.852895947404228580, 0.852922050384857800, +0.852948151233181910, 0.852974249949136070, 0.853000346532654220, 0.853026440983671420, 0.853052533302122610, 0.853078623487942390, 0.853104711541065600, 0.853130797461427060, +0.853156881248962050, 0.853182962903604290, 0.853209042425289170, 0.853235119813951390, 0.853261195069525910, 0.853287268191947330, 0.853313339181150710, 0.853339408037070650, +0.853365474759642530, 0.853391539348800300, 0.853417601804479120, 0.853443662126614040, 0.853469720315139790, 0.853495776369991190, 0.853521830291103180, 0.853547882078410700, +0.853573931731848810, 0.853599979251351780, 0.853626024636854660, 0.853652067888292510, 0.853678109005600260, 0.853704147988712750, 0.853730184837564800, 0.853756219552091800, +0.853782252132227910, 0.853808282577908310, 0.853834310889068140, 0.853860337065642020, 0.853886361107565110, 0.853912383014772350, 0.853938402787198570, 0.853964420424779270, +0.853990435927448500, 0.854016449295141530, 0.854042460527793530, 0.854068469625339330, 0.854094476587713980, 0.854120481414852530, 0.854146484106689810, 0.854172484663161310, +0.854198483084201100, 0.854224479369744770, 0.854250473519727160, 0.854276465534083430, 0.854302455412748520, 0.854328443155657480, 0.854354428762745700, 0.854380412233947560, +0.854406393569198230, 0.854432372768432980, 0.854458349831586860, 0.854484324758594820, 0.854510297549391900, 0.854536268203913370, 0.854562236722094530, 0.854588203103869630, +0.854614167349174280, 0.854640129457943430, 0.854666089430112350, 0.854692047265615980, 0.854718002964389600, 0.854743956526368590, 0.854769907951487220, 0.854795857239681100, +0.854821804390885290, 0.854847749405035050, 0.854873692282065440, 0.854899633021911520, 0.854925571624508550, 0.854951508089792140, 0.854977442417696460, 0.855003374608157230, +0.855029304661109490, 0.855055232576488520, 0.855081158354229490, 0.855107081994267550, 0.855133003496537870, 0.855158922860976280, 0.855184840087516720, 0.855210755176095240, +0.855236668126646780, 0.855262578939106620, 0.855288487613410030, 0.855314394149492290, 0.855340298547288990, 0.855366200806734530, 0.855392100927764520, 0.855417998910314230, +0.855443894754318920, 0.855469788459713890, 0.855495680026434500, 0.855521569454415820, 0.855547456743593670, 0.855573341893902440, 0.855599224905277840, 0.855625105777655160, +0.855650984510969770, 0.855676861105156950, 0.855702735560151860, 0.855728607875890450, 0.855754478052307090, 0.855780346089337510, 0.855806211986917090, 0.855832075744981100, +0.855857937363464940, 0.855883796842303870, 0.855909654181433390, 0.855935509380789220, 0.855961362440305850, 0.855987213359919010, 0.856013062139564180, 0.856038908779176650, +0.856064753278691910, 0.856090595638045240, 0.856116435857172120, 0.856142273936008390, 0.856168109874488440, 0.856193943672548310, 0.856219775330123170, 0.856245604847148730, +0.856271432223560170, 0.856297257459293190, 0.856323080554283410, 0.856348901508465430, 0.856374720321775310, 0.856400536994148310, 0.856426351525520050, 0.856452163915825790, +0.856477974165001150, 0.856503782272981630, 0.856529588239703150, 0.856555392065100120, 0.856581193749108680, 0.856606993291664230, 0.856632790692702370, 0.856658585952158490, +0.856684379069968080, 0.856710170046066870, 0.856735958880390560, 0.856761745572873990, 0.856787530123452990, 0.856813312532063160, 0.856839092798640010, 0.856864870923119250, +0.856890646905436260, 0.856916420745527100, 0.856942192443326370, 0.856967961998770230, 0.856993729411794190, 0.857019494682333850, 0.857045257810324700, 0.857071018795702470, +0.857096777638402640, 0.857122534338361390, 0.857148288895513310, 0.857174041309794470, 0.857199791581140570, 0.857225539709487230, 0.857251285694769940, 0.857277029536924530, +0.857302771235886940, 0.857328510791592000, 0.857354248203975770, 0.857379983472973950, 0.857405716598522160, 0.857431447580556010, 0.857457176419011310, 0.857482903113823690, +0.857508627664929190, 0.857534350072262750, 0.857560070335760430, 0.857585788455357820, 0.857611504430990880, 0.857637218262595090, 0.857662929950106290, 0.857688639493460190, +0.857714346892592850, 0.857740052147439310, 0.857765755257935520, 0.857791456224017420, 0.857817155045620730, 0.857842851722681040, 0.857868546255134310, 0.857894238642916580, +0.857919928885962910, 0.857945616984209350, 0.857971302937591720, 0.857996986746045850, 0.858022668409507580, 0.858048347927912620, 0.858074025301196700, 0.858099700529296290, +0.858125373612146140, 0.858151044549682500, 0.858176713341841310, 0.858202379988558310, 0.858228044489769300, 0.858253706845410250, 0.858279367055416960, 0.858305025119725620, +0.858330681038271370, 0.858356334810990380, 0.858381986437818490, 0.858407635918691740, 0.858433283253545730, 0.858458928442316640, 0.858484571484940730, 0.858510212381352830, +0.858535851131489450, 0.858561487735286510, 0.858587122192679740, 0.858612754503605190, 0.858638384667998800, 0.858664012685796400, 0.858689638556934360, 0.858715262281347870, +0.858740883858973290, 0.858766503289746350, 0.858792120573603210, 0.858817735710479810, 0.858843348700311980, 0.858868959543036330, 0.858894568238587790, 0.858920174786902860, +0.858945779187917480, 0.858971381441567590, 0.858996981547789250, 0.859022579506518500, 0.859048175317691290, 0.859073768981244100, 0.859099360497112110, 0.859124949865231580, +0.859150537085538790, 0.859176122157969570, 0.859201705082460080, 0.859227285858946370, 0.859252864487364380, 0.859278440967650710, 0.859304015299740540, 0.859329587483570250, +0.859355157519075990, 0.859380725406193920, 0.859406291144860000, 0.859431854735010270, 0.859457416176581450, 0.859482975469508580, 0.859508532613728280, 0.859534087609176710, +0.859559640455789920, 0.859585191153503960, 0.859610739702255100, 0.859636286101979290, 0.859661830352613340, 0.859687372454092210, 0.859712912406352730, 0.859738450209331040, +0.859763985862963100, 0.859789519367185280, 0.859815050721933650, 0.859840579927144360, 0.859866106982754120, 0.859891631888698100, 0.859917154644913030, 0.859942675251335160, +0.859968193707900450, 0.859993710014545390, 0.860019224171205910, 0.860044736177818960, 0.860070246034319700, 0.860095753740644730, 0.860121259296730440, 0.860146762702513000, +0.860172263957928670, 0.860197763062913620, 0.860223260017404230, 0.860248754821337110, 0.860274247474647650, 0.860299737977272550, 0.860325226329148210, 0.860350712530210670, +0.860376196580396440, 0.860401678479641660, 0.860427158227883180, 0.860452635825056380, 0.860478111271097970, 0.860503584565944220, 0.860529055709531530, 0.860554524701796280, +0.860579991542674620, 0.860605456232103050, 0.860630918770018180, 0.860656379156355620, 0.860681837391052200, 0.860707293474044180, 0.860732747405267840, 0.860758199184659680, +0.860783648812155970, 0.860809096287693200, 0.860834541611208090, 0.860859984782636150, 0.860885425801914290, 0.860910864668978930, 0.860936301383766310, 0.860961735946212950, +0.860987168356255330, 0.861012598613830170, 0.861038026718873080, 0.861063452671321010, 0.861088876471110210, 0.861114298118177190, 0.861139717612458440, 0.861165134953890470, +0.861190550142409640, 0.861215963177952790, 0.861241374060455640, 0.861266782789855130, 0.861292189366087650, 0.861317593789089560, 0.861342996058797610, 0.861368396175148150, +0.861393794138077710, 0.861419189947523200, 0.861444583603420240, 0.861469975105705890, 0.861495364454316630, 0.861520751649188840, 0.861546136690259260, 0.861571519577464360, +0.861596900310740990, 0.861622278890025070, 0.861647655315253340, 0.861673029586362490, 0.861698401703289150, 0.861723771665969700, 0.861749139474340840, 0.861774505128339200, +0.861799868627901700, 0.861825229972964070, 0.861850589163463350, 0.861875946199336160, 0.861901301080519210, 0.861926653806948880, 0.861952004378562010, 0.861977352795295530, +0.862002699057085150, 0.862028043163868160, 0.862053385115580940, 0.862078724912160310, 0.862104062553542880, 0.862129398039665260, 0.862154731370464280, 0.862180062545876760, +0.862205391565838640, 0.862230718430287090, 0.862256043139158820, 0.862281365692390330, 0.862306686089918450, 0.862332004331679890, 0.862357320417611260, 0.862382634347649830, +0.862407946121731330, 0.862433255739793010, 0.862458563201771610, 0.862483868507603610, 0.862509171657226070, 0.862534472650575590, 0.862559771487589440, 0.862585068168203350, +0.862610362692354580, 0.862635655059979860, 0.862660945271016110, 0.862686233325399840, 0.862711519223068100, 0.862736802963957610, 0.862762084548005400, 0.862787363975147660, +0.862812641245321530, 0.862837916358463740, 0.862863189314511110, 0.862888460113400590, 0.862913728755068890, 0.862938995239452830, 0.862964259566489810, 0.862989521736115650, +0.863014781748267730, 0.863040039602882780, 0.863065295299897840, 0.863090548839249520, 0.863115800220874860, 0.863141049444711260, 0.863166296510694540, 0.863191541418761980, +0.863216784168850610, 0.863242024760897400, 0.863267263194839040, 0.863292499470612480, 0.863317733588154780, 0.863342965547403090, 0.863368195348293570, 0.863393422990763600, +0.863418648474750030, 0.863443871800189780, 0.863469092967020010, 0.863494311975177340, 0.863519528824599480, 0.863544743515222260, 0.863569956046983280, 0.863595166419819260, +0.863620374633667480, 0.863645580688464640, 0.863670784584147920, 0.863695986320654250, 0.863721185897921020, 0.863746383315884380, 0.863771578574481720, 0.863796771673650210, +0.863821962613326780, 0.863847151393448360, 0.863872338013952130, 0.863897522474775030, 0.863922704775854530, 0.863947884917126930, 0.863973062898529600, 0.863998238719999480, +0.864023412381473950, 0.864048583882889740, 0.864073753224184120, 0.864098920405294570, 0.864124085426157260, 0.864149248286709800, 0.864174408986889130, 0.864199567526632520, +0.864224723905876900, 0.864249878124559560, 0.864275030182617420, 0.864300180079988320, 0.864325327816608200, 0.864350473392414780, 0.864375616807345090, 0.864400758061336540, +0.864425897154325940, 0.864451034086250680, 0.864476168857048250, 0.864501301466654940, 0.864526431915008440, 0.864551560202045820, 0.864576686327704240, 0.864601810291921070, +0.864626932094633260, 0.864652051735778190, 0.864677169215293470, 0.864702284533115260, 0.864727397689181390, 0.864752508683429120, 0.864777617515795400, 0.864802724186217840, +0.864827828694633370, 0.864852931040979270, 0.864878031225193360, 0.864903129247211910, 0.864928225106972650, 0.864953318804412840, 0.864978410339469650, 0.865003499712080570, +0.865028586922182650, 0.865053671969713720, 0.865078754854610170, 0.865103835576809700, 0.865128914136249700, 0.865153990532867350, 0.865179064766600110, 0.865204136837385170, +0.865229206745159910, 0.865254274489862030, 0.865279340071428040, 0.865304403489795650, 0.865329464744902350, 0.865354523836685320, 0.865379580765082030, 0.865404635530029780, +0.865429688131465810, 0.865454738569328200, 0.865479786843553310, 0.865504832954078870, 0.865529876900842490, 0.865554918683781200, 0.865579958302832850, 0.865604995757934480, +0.865630031049024030, 0.865655064176038100, 0.865680095138914530, 0.865705123937590690, 0.865730150572004090, 0.865755175042092100, 0.865780197347792100, 0.865805217489041710, +0.865830235465778640, 0.865855251277939610, 0.865880264925462440, 0.865905276408284520, 0.865930285726343450, 0.865955292879576730, 0.865980297867921740, 0.866005300691316430, +0.866030301349697500, 0.866055299843002780, 0.866080296171169770, 0.866105290334135970, 0.866130282331839090, 0.866155272164216390, 0.866180259831205610, 0.866205245332744460, +0.866230228668769860, 0.866255209839219660, 0.866280188844031570, 0.866305165683142860, 0.866330140356491250, 0.866355112864014340, 0.866380083205649630, 0.866405051381335170, +0.866430017391007560, 0.866454981234604960, 0.866479942912064980, 0.866504902423325010, 0.866529859768322860, 0.866554814946996040, 0.866579767959282710, 0.866604718805119360, +0.866629667484444370, 0.866654613997195120, 0.866679558343309340, 0.866704500522724740, 0.866729440535378810, 0.866754378381209280, 0.866779314060154290, 0.866804247572150470, +0.866829178917136180, 0.866854108095048810, 0.866879035105826310, 0.866903959949406170, 0.866928882625725980, 0.866953803134723810, 0.866978721476337480, 0.867003637650503810, +0.867028551657161200, 0.867053463496247120, 0.867078373167699420, 0.867103280671455810, 0.867128186007453890, 0.867153089175632050, 0.867177990175927000, 0.867202889008277020, +0.867227785672619820, 0.867252680168893120, 0.867277572497034740, 0.867302462656982410, 0.867327350648673940, 0.867352236472047510, 0.867377120127040050, 0.867402001613589820, +0.867426880931634560, 0.867451758081112080, 0.867476633061960210, 0.867501505874116790, 0.867526376517520070, 0.867551244992106900, 0.867576111297815640, 0.867600975434584140, +0.867625837402350220, 0.867650697201051700, 0.867675554830626310, 0.867700410291012190, 0.867725263582147410, 0.867750114703969010, 0.867774963656415380, 0.867799810439424340, +0.867824655052933710, 0.867849497496881450, 0.867874337771205480, 0.867899175875843750, 0.867924011810734420, 0.867948845575814640, 0.867973677171022700, 0.867998506596296630, +0.868023333851574260, 0.868048158936793660, 0.868072981851892520, 0.868097802596809460, 0.868122621171481420, 0.868147437575846780, 0.868172251809843590, 0.868197063873409780, +0.868221873766483300, 0.868246681489002080, 0.868271487040904290, 0.868296290422128080, 0.868321091632610840, 0.868345890672290730, 0.868370687541106020, 0.868395482238994540, +0.868420274765894340, 0.868445065121743460, 0.868469853306479970, 0.868494639320042230, 0.868519423162367410, 0.868544204833394120, 0.868568984333060290, 0.868593761661303980, +0.868618536818063340, 0.868643309803276200, 0.868668080616881390, 0.868692849258815850, 0.868717615729018180, 0.868742380027426540, 0.868767142153978880, 0.868791902108613460, +0.868816659891268220, 0.868841415501881320, 0.868866168940391370, 0.868890920206735530, 0.868915669300852290, 0.868940416222680030, 0.868965160972156700, 0.868989903549220340, +0.869014643953809340, 0.869039382185862190, 0.869064118245316040, 0.869088852132109730, 0.869113583846181200, 0.869138313387468720, 0.869163040755910440, 0.869187765951444650, +0.869212488974009380, 0.869237209823543360, 0.869261928499983850, 0.869286645003269460, 0.869311359333338470, 0.869336071490129150, 0.869360781473579650, 0.869385489283628130, +0.869410194920212990, 0.869434898383272700, 0.869459599672744780, 0.869484298788567920, 0.869508995730680190, 0.869533690499020070, 0.869558383093525620, 0.869583073514135330, +0.869607761760787690, 0.869632447833420310, 0.869657131731971680, 0.869681813456380290, 0.869706493006584420, 0.869731170382522230, 0.869755845584132210, 0.869780518611352530, +0.869805189464122000, 0.869829858142378010, 0.869854524646059390, 0.869879188975104520, 0.869903851129451570, 0.869928511109039130, 0.869953168913805360, 0.869977824543688550, +0.870002477998627730, 0.870027129278560300, 0.870051778383424960, 0.870076425313160210, 0.870101070067704430, 0.870125712646996010, 0.870150353050973210, 0.870174991279574980, +0.870199627332738920, 0.870224261210403750, 0.870248892912507950, 0.870273522438989810, 0.870298149789787920, 0.870322774964840780, 0.870347397964086560, 0.870372018787464290, +0.870396637434911580, 0.870421253906367260, 0.870445868201769830, 0.870470480321057670, 0.870495090264169380, 0.870519698031043340, 0.870544303621618500, 0.870568907035832450, +0.870593508273624140, 0.870618107334932060, 0.870642704219694700, 0.870667298927850550, 0.870691891459338230, 0.870716481814096110, 0.870741069992063240, 0.870765655993177230, +0.870790239817377130, 0.870814821464601430, 0.870839400934788730, 0.870863978227877420, 0.870888553343806220, 0.870913126282513610, 0.870937697043938640, 0.870962265628019040, +0.870986832034693740, 0.871011396263901340, 0.871035958315580450, 0.871060518189669670, 0.871085075886107620, 0.871109631404833220, 0.871134184745784410, 0.871158735908900140, +0.871183284894119000, 0.871207831701379610, 0.871232376330620670, 0.871256918781780800, 0.871281459054798700, 0.871305997149613320, 0.871330533066162480, 0.871355066804385350, +0.871379598364220520, 0.871404127745606720, 0.871428654948482650, 0.871453179972786820, 0.871477702818458600, 0.871502223485435600, 0.871526741973657090, 0.871551258283061680, +0.871575772413588190, 0.871600284365175230, 0.871624794137761620, 0.871649301731285960, 0.871673807145687430, 0.871698310380904060, 0.871722811436874910, 0.871747310313538690, +0.871771807010834120, 0.871796301528700130, 0.871820793867075340, 0.871845284025898670, 0.871869772005109070, 0.871894257804644690, 0.871918741424444700, 0.871943222864447810, +0.871967702124592850, 0.871992179204818640, 0.872016654105064020, 0.872041126825268130, 0.872065597365369040, 0.872090065725305900, 0.872114531905017750, 0.872138995904443100, +0.872163457723521000, 0.872187917362190370, 0.872212374820389820, 0.872236830098058860, 0.872261283195135300, 0.872285734111558520, 0.872310182847267470, 0.872334629402200970, +0.872359073776297840, 0.872383515969497150, 0.872407955981737480, 0.872432393812958450, 0.872456829463098100, 0.872481262932095600, 0.872505694219889880, 0.872530123326419990, +0.872554550251624760, 0.872578974995443120, 0.872603397557814580, 0.872627817938677050, 0.872652236137970050, 0.872676652155632390, 0.872701065991603020, 0.872725477645821090, +0.872749887118225430, 0.872774294408755090, 0.872798699517349450, 0.872823102443946560, 0.872847503188486030, 0.872871901750906680, 0.872896298131147550, 0.872920692329147710, +0.872945084344846080, 0.872969474178182270, 0.872993861829094220, 0.873018247297521640, 0.873042630583403370, 0.873067011686678550, 0.873091390607286130, 0.873115767345165380, +0.873140141900255130, 0.873164514272494970, 0.873188884461822970, 0.873213252468178940, 0.873237618291501700, 0.873261981931730440, 0.873286343388804180, 0.873310702662662090, +0.873335059753243210, 0.873359414660487170, 0.873383767384332210, 0.873408117924717730, 0.873432466281583000, 0.873456812454867060, 0.873481156444509080, 0.873505498250448320, +0.873529837872624170, 0.873554175310975010, 0.873578510565440340, 0.873602843635959530, 0.873627174522471520, 0.873651503224915580, 0.873675829743230880, 0.873700154077356570, +0.873724476227232370, 0.873748796192796550, 0.873773113973988710, 0.873797429570748130, 0.873821742983013960, 0.873846054210725360, 0.873870363253821720, 0.873894670112242200, +0.873918974785926280, 0.873943277274812690, 0.873967577578840800, 0.873991875697949890, 0.874016171632079450, 0.874040465381168420, 0.874064756945156400, 0.874089046323982770, +0.874113333517586130, 0.874137618525906210, 0.874161901348882160, 0.874186181986453480, 0.874210460438559210, 0.874234736705138850, 0.874259010786131660, 0.874283282681477370, +0.874307552391114460, 0.874331819914982660, 0.874356085253021330, 0.874380348405169760, 0.874404609371367330, 0.874428868151553300, 0.874453124745667610, 0.874477379153648650, +0.874501631375436350, 0.874525881410969870, 0.874550129260188710, 0.874574374923032140, 0.874598618399439750, 0.874622859689350720, 0.874647098792705080, 0.874671335709441220, +0.874695570439498970, 0.874719802982817820, 0.874744033339337150, 0.874768261508996450, 0.874792487491735100, 0.874816711287492500, 0.874840932896208460, 0.874865152317821800, +0.874889369552272260, 0.874913584599499190, 0.874937797459442220, 0.874962008132040720, 0.874986216617234300, 0.875010422914962670, 0.875034627025164550, 0.875058828947779980, +0.875083028682748230, 0.875107226230008920, 0.875131421589501520, 0.875155614761165660, 0.875179805744940700, 0.875203994540766690, 0.875228181148582140, 0.875252365568327310, +0.875276547799941460, 0.875300727843364320, 0.875324905698535270, 0.875349081365394020, 0.875373254843880070, 0.875397426133933340, 0.875421595235492680, 0.875445762148498010, +0.875469926872888940, 0.875494089408605070, 0.875518249755586010, 0.875542407913771250, 0.875566563883100950, 0.875590717663513820, 0.875614869254949800, 0.875639018657348720, +0.875663165870650070, 0.875687310894793460, 0.875711453729718590, 0.875735594375365080, 0.875759732831673080, 0.875783869098581190, 0.875808003176029690, 0.875832135063958180, +0.875856264762306380, 0.875880392271013890, 0.875904517590020410, 0.875928640719266130, 0.875952761658689740, 0.875976880408231520, 0.876000996967830960, 0.876025111337428000, +0.876049223516962350, 0.876073333506373510, 0.876097441305601410, 0.876121546914586100, 0.876145650333266410, 0.876169751561582720, 0.876193850599474630, 0.876217947446881860, +0.876242042103744350, 0.876266134570001580, 0.876290224845593600, 0.876314312930460360, 0.876338398824541010, 0.876362482527775600, 0.876386564040104070, 0.876410643361466010, +0.876434720491801490, 0.876458795431049990, 0.876482868179152110, 0.876506938736046460, 0.876531007101673640, 0.876555073275973150, 0.876579137258885030, 0.876603199050349110, +0.876627258650305220, 0.876651316058693060, 0.876675371275453140, 0.876699424300524280, 0.876723475133846960, 0.876747523775360800, 0.876771570225005960, 0.876795614482722140, +0.876819656548449400, 0.876843696422127450, 0.876867734103696670, 0.876891769593096120, 0.876915802890266050, 0.876939833995146630, 0.876963862907677580, 0.876987889627798830, +0.877011914155450430, 0.877035936490572650, 0.877059956633104540, 0.877083974582986590, 0.877107990340158740, 0.877132003904560810, 0.877156015276132960, 0.877180024454815020, +0.877204031440547040, 0.877228036233269390, 0.877252038832921240, 0.877276039239443080, 0.877300037452774740, 0.877324033472856260, 0.877348027299627690, 0.877372018933029190, +0.877396008373000910, 0.877419995619482250, 0.877443980672413690, 0.877467963531735060, 0.877491944197386520, 0.877515922669308220, 0.877539898947440000, 0.877563873031722120, +0.877587844922094960, 0.877611814618497800, 0.877635782120871010, 0.877659747429154760, 0.877683710543289200, 0.877707671463214380, 0.877731630188870350, 0.877755586720197270, +0.877779541057135630, 0.877803493199624700, 0.877827443147605080, 0.877851390901016830, 0.877875336459800090, 0.877899279823895040, 0.877923220993241720, 0.877947159967780830, +0.877971096747451660, 0.877995031332194700, 0.878018963721950210, 0.878042893916658240, 0.878066821916258950, 0.878090747720692730, 0.878114671329899620, 0.878138592743820330, +0.878162511962394030, 0.878186428985561540, 0.878210343813262910, 0.878234256445438400, 0.878258166882028290, 0.878282075122972740, 0.878305981168212460, 0.878329885017686830, +0.878353786671336350, 0.878377686129101500, 0.878401583390922450, 0.878425478456739460, 0.878449371326492700, 0.878473262000122550, 0.878497150477569710, 0.878521036758773580, +0.878544920843674750, 0.878568802732213720, 0.878592682424330640, 0.878616559919965790, 0.878640435219059660, 0.878664308321552400, 0.878688179227384740, 0.878712047936496270, +0.878735914448827700, 0.878759778764319210, 0.878783640882911390, 0.878807500804544510, 0.878831358529158830, 0.878855214056695090, 0.878879067387092980, 0.878902918520293230, +0.878926767456236100, 0.878950614194862090, 0.878974458736111570, 0.878998301079924830, 0.879022141226242450, 0.879045979175005040, 0.879069814926152330, 0.879093648479625010, +0.879117479835363700, 0.879141308993308560, 0.879165135953400180, 0.879188960715578950, 0.879212783279785360, 0.879236603645960240, 0.879260421814043180, 0.879284237783975020, +0.879308051555696360, 0.879331863129147460, 0.879355672504268940, 0.879379479681001270, 0.879403284659285300, 0.879427087439060730, 0.879450888020268380, 0.879474686402848870, +0.879498482586742570, 0.879522276571890080, 0.879546068358232010, 0.879569857945708630, 0.879593645334261100, 0.879617430523829010, 0.879641213514353320, 0.879664994305774720, +0.879688772898033490, 0.879712549291070340, 0.879736323484825890, 0.879760095479241060, 0.879783865274255560, 0.879807632869810340, 0.879831398265846110, 0.879855161462303360, +0.879878922459122690, 0.879902681256244710, 0.879926437853610020, 0.879950192251159670, 0.879973944448833370, 0.879997694446572280, 0.880021442244317000, 0.880045187842008030, +0.880068931239586070, 0.880092672436991850, 0.880116411434165860, 0.880140148231049360, 0.880163882827582070, 0.880187615223705030, 0.880211345419358970, 0.880235073414484480, +0.880258799209022390, 0.880282522802913300, 0.880306244196098260, 0.880329963388517210, 0.880353680380111300, 0.880377395170821140, 0.880401107760587550, 0.880424818149351140, +0.880448526337052730, 0.880472232323632920, 0.880495936109033090, 0.880519637693192860, 0.880543337076053590, 0.880567034257556000, 0.880590729237640810, 0.880614422016248730, +0.880638112593320700, 0.880661800968797310, 0.880685487142619850, 0.880709171114728350, 0.880732852885063870, 0.880756532453567220, 0.880780209820179240, 0.880803884984840750, +0.880827557947492570, 0.880851228708075860, 0.880874897266530680, 0.880898563622798280, 0.880922227776819500, 0.880945889728535050, 0.880969549477885970, 0.880993207024812990, +0.881016862369257030, 0.881040515511159250, 0.881064166450459820, 0.881087815187099890, 0.881111461721020510, 0.881135106052162500, 0.881158748180466690, 0.881182388105874010, +0.881206025828325750, 0.881229661347762040, 0.881253294664124160, 0.881276925777353060, 0.881300554687389660, 0.881324181394174790, 0.881347805897649490, 0.881371428197754710, +0.881395048294431830, 0.881418666187620880, 0.881442281877263260, 0.881465895363299890, 0.881489506645671830, 0.881513115724320010, 0.881536722599185360, 0.881560327270208940, +0.881583929737332130, 0.881607530000494970, 0.881631128059639170, 0.881654723914705450, 0.881678317565634860, 0.881701909012368560, 0.881725498254847470, 0.881749085293012990, +0.881772670126805490, 0.881796252756166240, 0.881819833181036410, 0.881843411401356910, 0.881866987417068930, 0.881890561228113490, 0.881914132834431650, 0.881937702235964900, +0.881961269432653520, 0.881984834424438870, 0.882008397211262230, 0.882031957793064540, 0.882055516169786950, 0.882079072341370620, 0.882102626307756600, 0.882126178068886380, +0.882149727624700340, 0.882173274975139980, 0.882196820120146330, 0.882220363059660780, 0.882243903793624270, 0.882267442321977960, 0.882290978644663550, 0.882314512761621210, +0.882338044672792530, 0.882361574378118910, 0.882385101877541160, 0.882408627171000770, 0.882432150258438800, 0.882455671139796500, 0.882479189815015390, 0.882502706284035820, +0.882526220546799630, 0.882549732603247760, 0.882573242453321580, 0.882596750096962370, 0.882620255534111280, 0.882643758764709910, 0.882667259788698750, 0.882690758606019420, +0.882714255216613180, 0.882737749620421290, 0.882761241817385130, 0.882784731807445770, 0.882808219590544670, 0.882831705166623350, 0.882855188535622390, 0.882878669697483410, +0.882902148652147780, 0.882925625399556880, 0.882949099939651760, 0.882972572272374020, 0.882996042397664830, 0.883019510315465880, 0.883042976025717800, 0.883066439528362170, +0.883089900823340600, 0.883113359910594140, 0.883136816790064390, 0.883160271461692510, 0.883183723925420440, 0.883207174181188660, 0.883230622228938890, 0.883254068068612510, +0.883277511700151120, 0.883300953123495770, 0.883324392338588170, 0.883347829345369480, 0.883371264143781750, 0.883394696733765360, 0.883418127115262350, 0.883441555288213890, +0.883464981252561570, 0.883488405008246770, 0.883511826555211100, 0.883535245893395720, 0.883558663022742660, 0.883582077943192550, 0.883605490654687300, 0.883628901157168300, +0.883652309450576930, 0.883675715534854910, 0.883699119409943610, 0.883722521075784860, 0.883745920532319370, 0.883769317779489190, 0.883792712817235590, 0.883816105645500280, +0.883839496264224760, 0.883862884673350390, 0.883886270872818900, 0.883909654862572110, 0.883933036642550740, 0.883956416212696830, 0.883979793572951870, 0.884003168723257350, +0.884026541663554990, 0.884049912393786270, 0.884073280913893140, 0.884096647223816420, 0.884120011323498160, 0.884143373212879720, 0.884166732891902950, 0.884190090360509330, +0.884213445618640460, 0.884236798666238060, 0.884260149503243940, 0.884283498129599170, 0.884306844545245550, 0.884330188750124810, 0.884353530744178660, 0.884376870527348700, +0.884400208099576530, 0.884423543460803870, 0.884446876610972770, 0.884470207550023920, 0.884493536277899730, 0.884516862794541670, 0.884540187099891350, 0.884563509193890710, +0.884586829076481120, 0.884610146747605080, 0.884633462207203070, 0.884656775455217480, 0.884680086491590020, 0.884703395316262300, 0.884726701929176020, 0.884750006330273010, +0.884773308519495090, 0.884796608496784210, 0.884819906262081400, 0.884843201815328830, 0.884866495156468310, 0.884889786285441570, 0.884913075202190310, 0.884936361906656370, +0.884959646398781890, 0.884982928678507920, 0.885006208745776620, 0.885029486600529820, 0.885052762242709350, 0.885076035672256900, 0.885099306889114310, 0.885122575893223520, +0.885145842684526780, 0.885169107262964940, 0.885192369628480360, 0.885215629781014760, 0.885238887720510180, 0.885262143446908350, 0.885285396960151180, 0.885308648260180520, +0.885331897346938730, 0.885355144220366650, 0.885378388880406760, 0.885401631327000890, 0.885424871560090980, 0.885448109579618840, 0.885471345385526520, 0.885494578977756190, +0.885517810356248880, 0.885541039520947200, 0.885564266471792870, 0.885587491208727930, 0.885610713731694200, 0.885633934040633730, 0.885657152135488350, 0.885680368016200540, +0.885703581682711460, 0.885726793134963280, 0.885750002372898250, 0.885773209396458210, 0.885796414205585080, 0.885819616800220920, 0.885842817180307770, 0.885866015345788020, +0.885889211296602700, 0.885912405032694420, 0.885935596554005110, 0.885958785860476830, 0.885981972952051610, 0.886005157828671400, 0.886028340490278790, 0.886051520936814830, +0.886074699168222120, 0.886097875184442610, 0.886121048985418440, 0.886144220571091660, 0.886167389941404320, 0.886190557096298460, 0.886213722035716690, 0.886236884759600160, +0.886260045267891480, 0.886283203560532700, 0.886306359637465850, 0.886329513498633090, 0.886352665143976590, 0.886375814573438840, 0.886398961786961090, 0.886422106784485960, +0.886445249565955500, 0.886468390131312070, 0.886491528480497500, 0.886514664613454180, 0.886537798530124270, 0.886560930230450240, 0.886584059714373370, 0.886607186981836490, +0.886630312032781530, 0.886653434867150870, 0.886676555484886550, 0.886699673885930960, 0.886722790070226030, 0.886745904037714690, 0.886769015788338110, 0.886792125322038990, +0.886815232638759500, 0.886838337738442010, 0.886861440621028670, 0.886884541286461660, 0.886907639734683780, 0.886930735965636430, 0.886953829979262090, 0.886976921775503360, +0.887000011354302180, 0.887023098715601030, 0.887046183859342090, 0.887069266785467710, 0.887092347493920630, 0.887115425984642210, 0.887138502257575290, 0.887161576312662010, +0.887184648149844880, 0.887207717769066150, 0.887230785170268100, 0.887253850353392990, 0.887276913318383760, 0.887299974065181800, 0.887323032593729910, 0.887346088903970490, +0.887369142995845790, 0.887392194869298320, 0.887415244524270230, 0.887438291960704560, 0.887461337178542700, 0.887484380177727460, 0.887507420958201340, 0.887530459519906610, +0.887553495862785760, 0.887576529986781160, 0.887599561891835200, 0.887622591577890810, 0.887645619044889480, 0.887668644292774140, 0.887691667321487190, 0.887714688130971100, +0.887737706721168250, 0.887760723092021140, 0.887783737243472590, 0.887806749175464320, 0.887829758887939250, 0.887852766380839650, 0.887875771654108250, 0.887898774707687300, +0.887921775541519520, 0.887944774155547290, 0.887967770549713540, 0.887990764723959880, 0.888013756678229350, 0.888036746412464440, 0.888059733926607640, 0.888082719220601560, +0.888105702294388680, 0.888128683147911490, 0.888151661781113040, 0.888174638193934940, 0.888197612386320330, 0.888220584358211720, 0.888243554109551580, 0.888266521640282520, +0.888289486950347260, 0.888312450039688620, 0.888335410908248520, 0.888358369555969810, 0.888381325982795180, 0.888404280188667350, 0.888427232173528700, 0.888450181937322060, +0.888473129479989910, 0.888496074801475300, 0.888519017901720170, 0.888541958780667440, 0.888564897438259840, 0.888587833874440070, 0.888610768089150630, 0.888633700082334220, +0.888656629853933680, 0.888679557403891930, 0.888702482732150910, 0.888725405838653560, 0.888748326723342810, 0.888771245386161260, 0.888794161827051510, 0.888817076045956390, +0.888839988042818940, 0.888862897817581210, 0.888885805370186240, 0.888908710700576640, 0.888931613808695340, 0.888954514694485050, 0.888977413357888380, 0.889000309798848250, +0.889023204017307720, 0.889046096013208720, 0.889068985786494630, 0.889091873337107930, 0.889114758664991570, 0.889137641770088360, 0.889160522652341020, 0.889183401311692820, +0.889206277748085690, 0.889229151961462900, 0.889252023951767170, 0.889274893718941420, 0.889297761262928370, 0.889320626583670950, 0.889343489681111990, 0.889366350555194750, +0.889389209205861180, 0.889412065633054530, 0.889434919836717740, 0.889457771816793750, 0.889480621573225270, 0.889503469105955240, 0.889526314414926470, 0.889549157500082340, +0.889571998361365020, 0.889594836998717660, 0.889617673412083090, 0.889640507601404450, 0.889663339566624580, 0.889686169307686290, 0.889708996824532970, 0.889731822117106770, +0.889754645185350970, 0.889777466029208600, 0.889800284648622600, 0.889823101043535900, 0.889845915213891450, 0.889868727159632170, 0.889891536880701440, 0.889914344377041530, +0.889937149648595720, 0.889959952695307030, 0.889982753517118530, 0.890005552113973030, 0.890028348485813690, 0.890051142632583560, 0.890073934554225900, 0.890096724250682980, +0.890119511721898290, 0.890142296967814880, 0.890165079988375680, 0.890187860783523740, 0.890210639353202220, 0.890233415697354480, 0.890256189815922800, 0.890278961708850570, +0.890301731376081040, 0.890324498817557150, 0.890347264033221950, 0.890370027023018710, 0.890392787786890240, 0.890415546324780370, 0.890438302636631150, 0.890461056722386180, +0.890483808581988610, 0.890506558215381380, 0.890529305622507870, 0.890552050803311120, 0.890574793757734630, 0.890597534485720770, 0.890620272987213020, 0.890643009262154560, +0.890665743310488640, 0.890688475132158320, 0.890711204727106850, 0.890733932095277400, 0.890756657236613460, 0.890779380151057510, 0.890802100838553050, 0.890824819299043340, +0.890847535532471650, 0.890870249538781130, 0.890892961317914960, 0.890915670869816380, 0.890938378194429000, 0.890961083291695320, 0.890983786161558930, 0.891006486803962990, +0.891029185218850880, 0.891051881406165870, 0.891074575365851110, 0.891097267097850310, 0.891119956602105970, 0.891142643878561680, 0.891165328927160830, 0.891188011747846680, +0.891210692340562490, 0.891233370705251550, 0.891256046841857110, 0.891278720750323110, 0.891301392430591810, 0.891324061882607040, 0.891346729106312070, 0.891369394101650280, +0.891392056868565150, 0.891414717406999730, 0.891437375716897520, 0.891460031798202320, 0.891482685650856640, 0.891505337274804300, 0.891527986669988560, 0.891550633836352800, +0.891573278773840520, 0.891595921482395080, 0.891618561961960210, 0.891641200212478500, 0.891663836233893780, 0.891686470026149540, 0.891709101589189030, 0.891731730922955880, +0.891754358027393330, 0.891776982902444890, 0.891799605548054370, 0.891822225964164490, 0.891844844150719070, 0.891867460107661490, 0.891890073834935240, 0.891912685332483800, +0.891935294600250670, 0.891957901638179670, 0.891980506446213630, 0.892003109024296250, 0.892025709372371130, 0.892048307490381660, 0.892070903378271440, 0.892093497035984060, +0.892116088463462800, 0.892138677660651800, 0.892161264627493680, 0.892183849363932470, 0.892206431869911550, 0.892229012145374530, 0.892251590190265120, 0.892274166004526580, +0.892296739588102740, 0.892319310940937300, 0.892341880062973320, 0.892364446954154620, 0.892387011614424800, 0.892409574043727450, 0.892432134242006180, 0.892454692209204480, +0.892477247945266510, 0.892499801450135080, 0.892522352723754130, 0.892544901766067270, 0.892567448577018090, 0.892589993156550410, 0.892612535504607620, 0.892635075621133640, +0.892657613506072200, 0.892680149159366440, 0.892702682580960310, 0.892725213770797500, 0.892747742728821510, 0.892770269454976280, 0.892792793949205410, 0.892815316211452940, +0.892837836241661690, 0.892860354039775930, 0.892882869605739260, 0.892905382939495400, 0.892927894040988050, 0.892950402910161030, 0.892972909546957960, 0.892995413951323090, +0.893017916123199250, 0.893040416062530600, 0.893062913769260950, 0.893085409243333910, 0.893107902484693410, 0.893130393493283160, 0.893152882269046990, 0.893175368811928940, +0.893197853121872050, 0.893220335198820600, 0.893242815042718300, 0.893265292653508960, 0.893287768031136300, 0.893310241175544250, 0.893332712086677080, 0.893355180764477730, +0.893377647208890350, 0.893400111419858870, 0.893422573397327110, 0.893445033141239020, 0.893467490651538190, 0.893489945928168770, 0.893512398971074820, 0.893534849780199480, +0.893557298355486920, 0.893579744696881280, 0.893602188804326180, 0.893624630677765650, 0.893647070317143520, 0.893669507722403720, 0.893691942893490520, 0.893714375830347070, +0.893736806532917760, 0.893759235001146400, 0.893781661234976930, 0.893804085234353280, 0.893826506999219510, 0.893848926529519750, 0.893871343825197400, 0.893893758886196600, +0.893916171712461400, 0.893938582303935860, 0.893960990660563780, 0.893983396782289220, 0.894005800669056220, 0.894028202320809040, 0.894050601737491070, 0.894072998919046570, +0.894095393865419470, 0.894117786576553940, 0.894140177052394010, 0.894162565292883630, 0.894184951297967160, 0.894207335067587980, 0.894229716601690370, 0.894252095900218590, +0.894274472963116460, 0.894296847790328250, 0.894319220381797790, 0.894341590737469440, 0.894363958857287370, 0.894386324741195060, 0.894408688389137010, 0.894431049801057140, +0.894453408976899620, 0.894475765916608710, 0.894498120620128350, 0.894520473087402570, 0.894542823318376090, 0.894565171312992180, 0.894587517071195330, 0.894609860592929680, +0.894632201878139300, 0.894654540926768550, 0.894676877738761370, 0.894699212314062460, 0.894721544652615000, 0.894743874754363790, 0.894766202619252880, 0.894788528247226430, +0.894810851638228600, 0.894833172792203760, 0.894855491709095950, 0.894877808388849780, 0.894900122831408740, 0.894922435036717310, 0.894944745004719880, 0.894967052735360590, +0.894989358228583610, 0.895011661484333200, 0.895033962502553740, 0.895056261283189710, 0.895078557826184620, 0.895100852131483160, 0.895123144199029610, 0.895145434028768120, +0.895167721620643060, 0.895190006974598720, 0.895212290090579790, 0.895234570968529760, 0.895256849608393250, 0.895279126010114610, 0.895301400173638130, 0.895323672098908170, +0.895345941785869130, 0.895368209234465140, 0.895390474444641040, 0.895412737416340310, 0.895434998149507780, 0.895457256644087820, 0.895479512900024590, 0.895501766917262690, +0.895524018695746270, 0.895546268235420270, 0.895568515536228180, 0.895590760598114820, 0.895613003421024570, 0.895635244004901800, 0.895657482349690890, 0.895679718455336340, +0.895701952321782400, 0.895724183948974020, 0.895746413336854790, 0.895768640485369530, 0.895790865394462730, 0.895813088064078670, 0.895835308494161930, 0.895857526684656900, +0.895879742635508070, 0.895901956346660260, 0.895924167818057170, 0.895946377049643750, 0.895968584041364260, 0.895990788793163410, 0.896012991304985460, 0.896035191576775140, +0.896057389608477250, 0.896079585400035410, 0.896101778951394650, 0.896123970262499460, 0.896146159333294330, 0.896168346163723760, 0.896190530753732340, 0.896212713103264670, +0.896234893212265570, 0.896257071080678760, 0.896279246708449380, 0.896301420095521830, 0.896323591241840800, 0.896345760147350680, 0.896367926811996290, 0.896390091235722000, +0.896412253418472860, 0.896434413360192690, 0.896456571060826550, 0.896478726520318900, 0.896500879738614590, 0.896523030715657980, 0.896545179451393780, 0.896567325945767050, +0.896589470198721590, 0.896611612210202470, 0.896633751980154270, 0.896655889508521710, 0.896678024795249500, 0.896700157840282120, 0.896722288643564400, 0.896744417205041390, +0.896766543524656900, 0.896788667602356090, 0.896810789438083570, 0.896832909031784140, 0.896855026383402310, 0.896877141492883000, 0.896899254360171260, 0.896921364985210910, +0.896943473367947220, 0.896965579508324780, 0.896987683406288540, 0.897009785061782970, 0.897031884474752910, 0.897053981645143160, 0.897076076572898900, 0.897098169257964040, +0.897120259700283750, 0.897142347899802740, 0.897164433856465940, 0.897186517570218060, 0.897208599041003920, 0.897230678268768230, 0.897252755253456160, 0.897274829995011960, +0.897296902493380570, 0.897318972748507030, 0.897341040760335940, 0.897363106528812350, 0.897385170053880850, 0.897407231335486940, 0.897429290373574550, 0.897451347168088940, +0.897473401718974940, 0.897495454026177470, 0.897517504089641370, 0.897539551909311450, 0.897561597485132650, 0.897583640817050220, 0.897605681905008450, 0.897627720748952360, +0.897649757348826900, 0.897671791704577230, 0.897693823816147930, 0.897715853683484170, 0.897737881306530760, 0.897759906685232980, 0.897781929819535090, 0.897803950709382350, +0.897825969354719700, 0.897847985755492180, 0.897869999911644730, 0.897892011823122170, 0.897914021489870100, 0.897936028911832440, 0.897958034088954800, 0.897980037021182120, +0.898002037708459320, 0.898024036150731340, 0.898046032347943330, 0.898068026300040230, 0.898090018006967530, 0.898112007468669260, 0.898133994685091030, 0.898155979656177880, +0.898177962381874750, 0.898199942862126680, 0.898221921096878710, 0.898243897086076440, 0.898265870829664030, 0.898287842327586850, 0.898309811579790060, 0.898331778586218820, +0.898353743346818060, 0.898375705861533040, 0.898397666130308690, 0.898419624153090620, 0.898441579929822990, 0.898463533460451490, 0.898485484744921180, 0.898507433783177100, +0.898529380575164520, 0.898551325120828360, 0.898573267420114010, 0.898595207472966840, 0.898617145279331230, 0.898639080839152780, 0.898661014152376650, 0.898682945218947870, +0.898704874038811830, 0.898726800611913570, 0.898748724938198800, 0.898770647017611780, 0.898792566850098120, 0.898814484435602970, 0.898836399774071700, 0.898858312865449370, +0.898880223709681350, 0.898902132306712680, 0.898924038656489180, 0.898945942758955010, 0.898967844614056100, 0.898989744221737610, 0.899011641581944690, 0.899033536694622710, +0.899055429559716960, 0.899077320177172900, 0.899099208546935150, 0.899121094668949410, 0.899142978543161050, 0.899164860169515130, 0.899186739547957030, 0.899208616678432100, +0.899230491560885640, 0.899252364195263440, 0.899274234581509790, 0.899296102719570610, 0.899317968609391170, 0.899339832250916850, 0.899361693644092910, 0.899383552788864730, +0.899405409685177680, 0.899427264332977590, 0.899449116732208840, 0.899470966882817250, 0.899492814784748410, 0.899514660437947370, 0.899536503842359720, 0.899558344997930860, +0.899580183904606480, 0.899602020562331290, 0.899623854971051130, 0.899645687130711140, 0.899667517041257030, 0.899689344702634180, 0.899711170114787850, 0.899732993277663760, +0.899754814191207400, 0.899776632855363690, 0.899798449270078460, 0.899820263435297090, 0.899842075350964940, 0.899863885017027740, 0.899885692433430750, 0.899907497600119570, +0.899929300517040010, 0.899951101184136790, 0.899972899601355850, 0.899994695768642660, 0.900016489685942720, 0.900038281353201520, 0.900060070770364760, 0.900081857937378050, +0.900103642854186430, 0.900125425520735600, 0.900147205936971280, 0.900168984102838850, 0.900190760018284020, 0.900212533683252380, 0.900234305097689310, 0.900256074261540860, +0.900277841174751850, 0.900299605837268200, 0.900321368249035640, 0.900343128409999530, 0.900364886320105700, 0.900386641979299630, 0.900408395387527370, 0.900430146544733630, +0.900451895450864570, 0.900473642105865890, 0.900495386509682970, 0.900517128662261630, 0.900538868563547480, 0.900560606213486100, 0.900582341612023660, 0.900604074759104980, +0.900625805654676090, 0.900647534298682610, 0.900669260691070450, 0.900690984831785000, 0.900712706720772190, 0.900734426357977510, 0.900756143743347230, 0.900777858876826150, +0.900799571758360560, 0.900821282387895940, 0.900842990765378100, 0.900864696890752770, 0.900886400763965760, 0.900908102384963110, 0.900929801753689750, 0.900951498870091960, +0.900973193734115440, 0.900994886345705900, 0.901016576704809170, 0.901038264811370950, 0.901059950665337060, 0.901081634266653770, 0.901103315615265910, 0.901124994711119840, +0.901146671554161170, 0.901168346144335940, 0.901190018481589860, 0.901211688565868640, 0.901233356397118210, 0.901255021975284840, 0.901276685300313460, 0.901298346372150450, +0.901320005190741510, 0.901341661756032590, 0.901363316067969490, 0.901384968126498150, 0.901406617931564740, 0.901428265483114390, 0.901449910781093380, 0.901471553825447520, +0.901493194616122870, 0.901514833153065240, 0.901536469436220570, 0.901558103465534670, 0.901579735240953810, 0.901601364762423360, 0.901622992029889380, 0.901644617043298010, +0.901666239802595080, 0.901687860307726520, 0.901709478558638370, 0.901731094555276890, 0.901752708297587250, 0.901774319785515810, 0.901795929019008620, 0.901817535998011620, +0.901839140722470840, 0.901860743192332110, 0.901882343407541590, 0.901903941368045530, 0.901925537073789200, 0.901947130524719090, 0.901968721720781240, 0.901990310661921480, +0.902011897348085960, 0.902033481779220710, 0.902055063955271690, 0.902076643876185470, 0.902098221541907220, 0.902119796952383420, 0.902141370107560130, 0.902162941007383480, +0.902184509651799420, 0.902206076040754090, 0.902227640174193990, 0.902249202052064380, 0.902270761674311750, 0.902292319040882140, 0.902313874151721820, 0.902335427006776820, +0.902356977605993320, 0.902378525949317220, 0.902400072036695260, 0.902421615868072790, 0.902443157443396200, 0.902464696762611760, 0.902486233825665620, 0.902507768632503820, +0.902529301183072620, 0.902550831477318180, 0.902572359515187110, 0.902593885296624650, 0.902615408821577540, 0.902636930089991910, 0.902658449101813920, 0.902679965856989730, +0.902701480355465710, 0.902722992597188470, 0.902744502582103260, 0.902766010310156800, 0.902787515781295240, 0.902809018995465060, 0.902830519952612210, 0.902852018652683050, +0.902873515095623970, 0.902895009281381330, 0.902916501209900860, 0.902937990881129140, 0.902959478295012440, 0.902980963451497030, 0.903002446350529290, 0.903023926992055360, +0.903045405376021960, 0.903066881502374800, 0.903088355371060250, 0.903109826982024910, 0.903131296335215050, 0.903152763430576930, 0.903174228268056820, 0.903195690847601210, +0.903217151169156680, 0.903238609232668970, 0.903260065038084760, 0.903281518585350330, 0.903302969874412160, 0.903324418905216530, 0.903345865677709800, 0.903367310191838470, +0.903388752447549240, 0.903410192444787710, 0.903431630183500810, 0.903453065663634700, 0.903474498885135980, 0.903495929847951020, 0.903517358552026200, 0.903538784997308440, +0.903560209183743250, 0.903581631111277540, 0.903603050779857810, 0.903624468189430430, 0.903645883339941890, 0.903667296231338680, 0.903688706863567170, 0.903710115236574300, +0.903731521350305770, 0.903752925204708400, 0.903774326799728690, 0.903795726135313230, 0.903817123211408500, 0.903838518027960890, 0.903859910584916990, 0.903881300882223630, +0.903902688919826720, 0.903924074697673110, 0.903945458215709260, 0.903966839473881790, 0.903988218472137170, 0.904009595210422120, 0.904030969688683350, 0.904052341906866790, +0.904073711864919470, 0.904095079562787780, 0.904116445000418430, 0.904137808177757910, 0.904159169094752910, 0.904180527751350050, 0.904201884147496140, 0.904223238283137220, +0.904244590158220230, 0.904265939772691650, 0.904287287126498310, 0.904308632219586680, 0.904329975051903600, 0.904351315623395770, 0.904372653934009450, 0.904393989983691360, +0.904415323772388420, 0.904436655300047130, 0.904457984566614190, 0.904479311572036200, 0.904500636316260100, 0.904521958799232690, 0.904543279020900040, 0.904564596981209170, +0.904585912680106800, 0.904607226117539630, 0.904628537293454380, 0.904649846207797870, 0.904671152860516690, 0.904692457251558000, 0.904713759380867840, 0.904735059248393260, +0.904756356854081070, 0.904777652197877870, 0.904798945279730700, 0.904820236099586060, 0.904841524657391210, 0.904862810953092180, 0.904884094986636130, 0.904905376757969890, +0.904926656267040160, 0.904947933513793770, 0.904969208498177520, 0.904990481220138370, 0.905011751679623330, 0.905033019876578470, 0.905054285810951150, 0.905075549482688090, +0.905096810891736100, 0.905118070038042230, 0.905139326921553080, 0.905160581542215900, 0.905181833899977080, 0.905203083994783550, 0.905224331826582350, 0.905245577395320300, +0.905266820700944330, 0.905288061743401370, 0.905309300522638140, 0.905330537038602110, 0.905351771291239340, 0.905373003280497080, 0.905394233006322380, 0.905415460468662170, +0.905436685667463160, 0.905457908602672500, 0.905479129274237130, 0.905500347682104190, 0.905521563826220070, 0.905542777706532130, 0.905563989322987100, 0.905585198675532220, +0.905606405764114220, 0.905627610588680240, 0.905648813149177670, 0.905670013445552650, 0.905691211477752670, 0.905712407245724550, 0.905733600749415450, 0.905754791988772400, +0.905775980963742340, 0.905797167674272320, 0.905818352120309700, 0.905839534301800860, 0.905860714218693190, 0.905881891870933820, 0.905903067258469590, 0.905924240381247750, +0.905945411239215350, 0.905966579832319320, 0.905987746160507370, 0.906008910223725540, 0.906030072021921540, 0.906051231555042300, 0.906072388823034980, 0.906093543825846610, +0.906114696563424470, 0.906135847035716040, 0.906156995242667460, 0.906178141184226460, 0.906199284860340180, 0.906220426270955560, 0.906241565416019970, 0.906262702295480450, +0.906283836909284160, 0.906304969257378690, 0.906326099339710310, 0.906347227156226840, 0.906368352706875210, 0.906389475991602690, 0.906410597010356530, 0.906431715763083790, +0.906452832249732280, 0.906473946470248150, 0.906495058424579230, 0.906516168112672660, 0.906537275534475720, 0.906558380689935550, 0.906579483578999420, 0.906600584201614600, +0.906621682557728680, 0.906642778647288150, 0.906663872470240720, 0.906684964026533650, 0.906706053316114090, 0.906727140338929430, 0.906748225094926920, 0.906769307584053830, +0.906790387806257870, 0.906811465761485520, 0.906832541449684610, 0.906853614870802290, 0.906874686024785830, 0.906895754911582810, 0.906916821531140280, 0.906937885883406180, +0.906958947968326990, 0.906980007785850310, 0.907001065335923730, 0.907022120618494410, 0.907043173633509840, 0.907064224380917270, 0.907085272860664200, 0.907106319072698340, +0.907127363016966280, 0.907148404693415840, 0.907169444101994290, 0.907190481242649230, 0.907211516115327910, 0.907232548719977830, 0.907253579056546360, 0.907274607124981420, +0.907295632925229410, 0.907316656457238470, 0.907337677720955860, 0.907358696716328960, 0.907379713443305370, 0.907400727901832570, 0.907421740091858280, 0.907442750013329190, +0.907463757666193360, 0.907484763050398050, 0.907505766165890850, 0.907526767012619140, 0.907547765590530630, 0.907568761899572700, 0.907589755939693270, 0.907610747710838940, +0.907631737212957870, 0.907652724445997430, 0.907673709409905220, 0.907694692104628610, 0.907715672530115310, 0.907736650686313260, 0.907757626573169160, 0.907778600190631060, +0.907799571538646430, 0.907820540617162890, 0.907841507426127900, 0.907862471965489190, 0.907883434235194350, 0.907904394235191310, 0.907925351965426900, 0.907946307425849030, +0.907967260616405420, 0.907988211537043680, 0.908009160187711490, 0.908030106568356250, 0.908051050678925890, 0.908071992519368210, 0.908092932089630160, 0.908113869389659770, +0.908134804419404750, 0.908155737178812710, 0.908176667667831230, 0.908197595886408250, 0.908218521834491590, 0.908239445512028180, 0.908260366918966170, 0.908281286055253380, +0.908302202920837190, 0.908323117515665630, 0.908344029839686210, 0.908364939892846720, 0.908385847675095340, 0.908406753186378870, 0.908427656426645470, 0.908448557395843070, +0.908469456093919160, 0.908490352520821660, 0.908511246676498300, 0.908532138560896870, 0.908553028173965330, 0.908573915515650920, 0.908594800585901700, 0.908615683384665580, +0.908636563911890070, 0.908657442167523310, 0.908678318151512900, 0.908699191863806990, 0.908720063304352840, 0.908740932473098510, 0.908761799369991800, 0.908782663994980640, +0.908803526348012760, 0.908824386429036070, 0.908845244237998510, 0.908866099774848110, 0.908886953039532150, 0.908907804031998780, 0.908928652752195920, 0.908949499200071400, +0.908970343375573140, 0.908991185278649080, 0.909012024909247370, 0.909032862267315170, 0.909053697352800950, 0.909074530165652320, 0.909095360705817530, 0.909116188973244200, +0.909137014967880460, 0.909157838689674260, 0.909178660138573740, 0.909199479314526270, 0.909220296217480020, 0.909241110847383020, 0.909261923204183310, 0.909282733287828830, +0.909303541098267390, 0.909324346635447260, 0.909345149899316470, 0.909365950889822530, 0.909386749606913680, 0.909407546050537970, 0.909428340220643340, 0.909449132117177930, +0.909469921740089670, 0.909490709089327050, 0.909511494164837230, 0.909532276966568580, 0.909553057494469350, 0.909573835748487490, 0.909594611728570920, 0.909615385434667910, +0.909636156866726500, 0.909656926024694950, 0.909677692908520740, 0.909698457518152370, 0.909719219853537760, 0.909739979914625190, 0.909760737701362570, 0.909781493213698170, +0.909802246451580030, 0.909822997414956650, 0.909843746103775390, 0.909864492517984740, 0.909885236657532960, 0.909905978522367990, 0.909926718112438080, 0.909947455427691400, +0.909968190468076530, 0.909988923233540750, 0.910009653724032640, 0.910030381939500370, 0.910051107879892180, 0.910071831545156250, 0.910092552935240720, 0.910113272050093740, +0.910133988889664010, 0.910154703453898930, 0.910175415742747180, 0.910196125756156830, 0.910216833494076120, 0.910237538956453320, 0.910258242143236700, 0.910278943054374850, +0.910299641689815360, 0.910320338049506630, 0.910341032133397120, 0.910361723941435000, 0.910382413473568630, 0.910403100729746170, 0.910423785709916000, 0.910444468414026710, +0.910465148842025900, 0.910485826993862160, 0.910506502869483870, 0.910527176468839410, 0.910547847791876920, 0.910568516838544780, 0.910589183608791490, 0.910609848102565510, +0.910630510319814570, 0.910651170260487360, 0.910671827924532160, 0.910692483311897450, 0.910713136422531490, 0.910733787256382770, 0.910754435813399880, 0.910775082093530530, +0.910795726096723550, 0.910816367822927190, 0.910837007272089940, 0.910857644444160060, 0.910878279339086270, 0.910898911956816600, 0.910919542297300100, 0.910940170360484360, +0.910960796146318200, 0.910981419654750100, 0.911002040885728450, 0.911022659839201610, 0.911043276515118180, 0.911063890913426880, 0.911084503034075510, 0.911105112877012900, +0.911125720442187540, 0.911146325729547790, 0.911166928739042370, 0.911187529470619540, 0.911208127924227900, 0.911228724099816260, 0.911249317997332440, 0.911269909616725380, +0.911290498957943560, 0.911311086020935360, 0.911331670805649590, 0.911352253312034620, 0.911372833540038950, 0.911393411489611620, 0.911413987160700430, 0.911434560553254220, +0.911455131667221590, 0.911475700502551110, 0.911496267059191510, 0.911516831337091160, 0.911537393336199100, 0.911557953056463140, 0.911578510497832340, 0.911599065660255280, +0.911619618543680570, 0.911640169148056790, 0.911660717473332550, 0.911681263519456550, 0.911701807286377730, 0.911722348774044120, 0.911742887982404550, 0.911763424911407830, +0.911783959561002440, 0.911804491931137220, 0.911825022021760860, 0.911845549832821840, 0.911866075364269220, 0.911886598616051260, 0.911907119588116650, 0.911927638280414230, +0.911948154692892810, 0.911968668825500980, 0.911989180678187460, 0.912009690250901390, 0.912030197543590710, 0.912050702556204460, 0.912071205288691570, 0.912091705741000620, +0.912112203913080340, 0.912132699804879650, 0.912153193416347150, 0.912173684747432100, 0.912194173798082430, 0.912214660568247290, 0.912235145057875510, 0.912255627266915890, +0.912276107195317270, 0.912296584843028340, 0.912317060209998250, 0.912337533296175170, 0.912358004101508250, 0.912378472625946400, 0.912398938869438240, 0.912419402831932790, +0.912439864513378880, 0.912460323913725340, 0.912480781032921300, 0.912501235870914920, 0.912521688427655460, 0.912542138703091750, 0.912562586697172720, 0.912583032409847280, +0.912603475841064160, 0.912623916990772390, 0.912644355858921230, 0.912664792445458840, 0.912685226750334370, 0.912705658773496850, 0.912726088514895230, 0.912746515974478420, +0.912766941152195250, 0.912787364047995100, 0.912807784661826220, 0.912828202993637870, 0.912848619043378990, 0.912869032810998630, 0.912889444296445580, 0.912909853499669020, +0.912930260420617760, 0.912950665059241160, 0.912971067415487610, 0.912991467489306370, 0.913011865280646480, 0.913032260789456980, 0.913052654015686800, 0.913073044959284870, +0.913093433620200460, 0.913113819998382810, 0.913134204093780210, 0.913154585906342130, 0.913174965436017510, 0.913195342682755600, 0.913215717646505220, 0.913236090327215640, +0.913256460724836130, 0.913276828839315160, 0.913297194670602110, 0.913317558218646020, 0.913337919483396040, 0.913358278464801330, 0.913378635162810810, 0.913398989577373870, +0.913419341708439640, 0.913439691555956830, 0.913460039119874720, 0.913480384400142560, 0.913500727396709400, 0.913521068109524380, 0.913541406538536770, 0.913561742683696050, +0.913582076544950490, 0.913602408122249800, 0.913622737415543120, 0.913643064424779490, 0.913663389149908300, 0.913683711590878580, 0.913704031747639590, 0.913724349620140930, +0.913744665208330980, 0.913764978512159430, 0.913785289531575450, 0.913805598266528070, 0.913825904716966900, 0.913846208882840850, 0.913866510764099300, 0.913886810360691860, +0.913907107672567000, 0.913927402699674430, 0.913947695441963300, 0.913967985899383000, 0.913988274071882660, 0.914008559959411660, 0.914028843561919600, 0.914049124879355080, +0.914069403911667800, 0.914089680658807020, 0.914109955120721910, 0.914130227297362040, 0.914150497188676580, 0.914170764794614790, 0.914191030115126480, 0.914211293150160360, +0.914231553899665930, 0.914251812363592540, 0.914272068541889690, 0.914292322434506640, 0.914312574041392880, 0.914332823362497550, 0.914353070397770580, 0.914373315147160580, +0.914393557610617250, 0.914413797788090070, 0.914434035679528410, 0.914454271284881660, 0.914474504604099180, 0.914494735637130910, 0.914514964383925320, 0.914535190844432360, +0.914555415018601380, 0.914575636906381990, 0.914595856507723350, 0.914616073822575150, 0.914636288850886770, 0.914656501592608030, 0.914676712047687750, 0.914696920216075520, +0.914717126097721160, 0.914737329692573820, 0.914757531000583320, 0.914777730021698820, 0.914797926755870460, 0.914818121203046950, 0.914838313363178110, 0.914858503236213430, +0.914878690822102600, 0.914898876120794900, 0.914919059132240140, 0.914939239856387700, 0.914959418293187500, 0.914979594442588360, 0.914999768304540330, 0.915019939878992770, +0.915040109165895510, 0.915060276165197810, 0.915080440876849480, 0.915100603300800120, 0.915120763436999550, 0.915140921285396700, 0.915161076845941500, 0.915181230118583770, +0.915201381103272870, 0.915221529799958410, 0.915241676208590320, 0.915261820329118290, 0.915281962161491380, 0.915302101705659510, 0.915322238961572500, 0.915342373929179720, +0.915362506608431210, 0.915382636999276240, 0.915402765101664850, 0.915422890915546850, 0.915443014440871170, 0.915463135677588080, 0.915483254625647060, 0.915503371284997920, +0.915523485655590390, 0.915543597737374150, 0.915563707530298920, 0.915583815034314740, 0.915603920249370650, 0.915624023175416800, 0.915644123812402900, 0.915664222160278650, +0.915684318218993880, 0.915704411988498280, 0.915724503468742010, 0.915744592659674230, 0.915764679561244850, 0.915784764173403820, 0.915804846496100830, 0.915824926529285820, +0.915845004272908380, 0.915865079726918550, 0.915885152891266260, 0.915905223765900780, 0.915925292350772250, 0.915945358645830490, 0.915965422651025320, 0.915985484366306670, +0.916005543791624240, 0.916025600926928310, 0.916045655772168010, 0.916065708327293620, 0.916085758592254830, 0.916105806567001800, 0.916125852251484130, 0.916145895645651960, +0.916165936749455010, 0.916185975562843540, 0.916206012085766690, 0.916226046318174950, 0.916246078260018030, 0.916266107911245960, 0.916286135271808580, 0.916306160341655910, +0.916326183120737770, 0.916346203609004540, 0.916366221806405480, 0.916386237712890850, 0.916406251328410690, 0.916426262652914820, 0.916446271686353290, 0.916466278428676120, +0.916486282879833580, 0.916506285039775050, 0.916526284908450780, 0.916546282485810710, 0.916566277771804990, 0.916586270766383660, 0.916606261469496530, 0.916626249881093760, +0.916646236001125820, 0.916666219829541880, 0.916686201366292310, 0.916706180611327360, 0.916726157564596860, 0.916746132226051060, 0.916766104595639900, 0.916786074673313410, +0.916806042459022200, 0.916826007952715400, 0.916845971154343630, 0.916865932063857030, 0.916885890681205520, 0.916905847006339260, 0.916925801039208400, 0.916945752779763420, +0.916965702227953710, 0.916985649383729730, 0.917005594247041530, 0.917025536817839490, 0.917045477096073540, 0.917065415081693920, 0.917085350774650700, 0.917105284174894560, +0.917125215282374780, 0.917145144097041950, 0.917165070618846330, 0.917184994847738080, 0.917204916783667220, 0.917224836426584140, 0.917244753776439210, 0.917264668833182140, +0.917284581596763400, 0.917304492067133270, 0.917324400244241780, 0.917344306128039410, 0.917364209718476210, 0.917384111015502430, 0.917404010019068790, 0.917423906729124770, +0.917443801145620960, 0.917463693268507630, 0.917483583097735140, 0.917503470633253660, 0.917523355875013550, 0.917543238822964960, 0.917563119477058710, 0.917582997837244170, +0.917602873903472280, 0.917622747675693180, 0.917642619153857140, 0.917662488337914640, 0.917682355227815830, 0.917702219823511630, 0.917722082124951430, 0.917741942132086040, +0.917761799844865720, 0.917781655263240960, 0.917801508387162120, 0.917821359216579370, 0.917841207751443400, 0.917861053991704590, 0.917880897937312870, 0.917900739588218940, +0.917920578944373180, 0.917940416005725960, 0.917960250772227650, 0.917980083243828740, 0.917999913420479930, 0.918019741302131040, 0.918039566888732780, 0.918059390180235520, +0.918079211176589860, 0.918099029877746280, 0.918118846283654920, 0.918138660394266610, 0.918158472209531950, 0.918178281729400750, 0.918198088953823820, 0.918217893882751660, +0.918237696516134850, 0.918257496853923770, 0.918277294896068910, 0.918297090642520850, 0.918316884093230310, 0.918336675248147330, 0.918356464107222600, 0.918376250670406740, +0.918396034937650320, 0.918415816908903730, 0.918435596584117550, 0.918455373963242840, 0.918475149046229290, 0.918494921833027830, 0.918514692323589180, 0.918534460517863690, +0.918554226415802090, 0.918573990017354960, 0.918593751322472780, 0.918613510331106610, 0.918633267043206360, 0.918653021458722850, 0.918672773577606790, 0.918692523399808890, +0.918712270925279630, 0.918732016153969710, 0.918751759085829730, 0.918771499720810740, 0.918791238058862540, 0.918810974099936400, 0.918830707843982690, 0.918850439290952340, +0.918870168440795830, 0.918889895293463880, 0.918909619848907510, 0.918929342107076770, 0.918949062067922710, 0.918968779731396010, 0.918988495097447290, 0.919008208166027350, +0.919027918937086910, 0.919047627410576770, 0.919067333586447770, 0.919087037464650150, 0.919106739045134850, 0.919126438327852790, 0.919146135312754690, 0.919165829999791130, +0.919185522388913050, 0.919205212480071480, 0.919224900273216570, 0.919244585768299370, 0.919264268965270800, 0.919283949864081460, 0.919303628464682280, 0.919323304767024060, +0.919342978771057530, 0.919362650476733930, 0.919382319884003320, 0.919401986992816940, 0.919421651803125630, 0.919441314314880080, 0.919460974528031330, 0.919480632442530200, +0.919500288058327400, 0.919519941375374180, 0.919539592393620820, 0.919559241113018570, 0.919578887533518130, 0.919598531655070440, 0.919618173477626420, 0.919637813001137010, +0.919657450225553450, 0.919677085150825800, 0.919696717776905540, 0.919716348103743480, 0.919735976131290540, 0.919755601859497670, 0.919775225288315790, 0.919794846417695820, +0.919814465247589030, 0.919834081777945790, 0.919853696008717360, 0.919873307939854670, 0.919892917571308750, 0.919912524903030550, 0.919932129934970980, 0.919951732667081080, +0.919971333099312230, 0.919990931231614680, 0.920010527063939820, 0.920030120596238570, 0.920049711828462070, 0.920069300760561370, 0.920088887392487290, 0.920108471724191410, +0.920128053755624010, 0.920147633486736450, 0.920167210917479880, 0.920186786047805240, 0.920206358877663550, 0.920225929407006090, 0.920245497635783670, 0.920265063563947990, +0.920284627191449210, 0.920304188518238920, 0.920323747544268160, 0.920343304269487960, 0.920362858693849480, 0.920382410817303990, 0.920401960639802730, 0.920421508161296310, +0.920441053381735990, 0.920460596301073130, 0.920480136919258780, 0.920499675236243990, 0.920519211251980110, 0.920538744966418190, 0.920558276379509710, 0.920577805491205270, +0.920597332301456240, 0.920616856810213880, 0.920636379017429450, 0.920655898923053990, 0.920675416527038770, 0.920694931829335150, 0.920714444829894400, 0.920733955528667320, +0.920753463925605200, 0.920772970020659500, 0.920792473813781380, 0.920811975304922090, 0.920831474494032910, 0.920850971381065310, 0.920870465965969890, 0.920889958248698460, +0.920909448229201950, 0.920928935907431970, 0.920948421283339540, 0.920967904356876140, 0.920987385127992940, 0.921006863596641630, 0.921026339762772820, 0.921045813626338190, +0.921065285187289030, 0.921084754445576580, 0.921104221401152330, 0.921123686053967440, 0.921143148403973380, 0.921162608451121860, 0.921182066195363360, 0.921201521636649700, +0.921220974774932370, 0.921240425610162510, 0.921259874142291490, 0.921279320371270920, 0.921298764297052370, 0.921318205919586570, 0.921337645238825220, 0.921357082254719790, +0.921376516967221670, 0.921395949376282220, 0.921415379481852930, 0.921434807283885160, 0.921454232782330740, 0.921473655977140370, 0.921493076868265870, 0.921512495455658720, +0.921531911739270290, 0.921551325719052070, 0.921570737394955540, 0.921590146766932520, 0.921609553834933810, 0.921628958598911140, 0.921648361058816090, 0.921667761214600260, +0.921687159066214900, 0.921706554613611730, 0.921725947856742110, 0.921745338795557980, 0.921764727430010140, 0.921784113760050540, 0.921803497785630640, 0.921822879506701940, +0.921842258923216140, 0.921861636035124610, 0.921881010842379060, 0.921900383344931180, 0.921919753542732150, 0.921939121435733640, 0.921958487023887390, 0.921977850307144960, +0.921997211285457860, 0.922016569958777680, 0.922035926327056440, 0.922055280390245090, 0.922074632148295550, 0.922093981601159410, 0.922113328748788260, 0.922132673591133820, +0.922152016128147680, 0.922171356359781540, 0.922190694285987320, 0.922210029906716080, 0.922229363221919730, 0.922248694231549980, 0.922268022935558430, 0.922287349333896890, +0.922306673426516950, 0.922325995213370330, 0.922345314694409170, 0.922364631869584280, 0.922383946738847830, 0.922403259302151500, 0.922422569559447010, 0.922441877510686070, +0.922461183155820490, 0.922480486494802300, 0.922499787527582550, 0.922519086254113270, 0.922538382674346290, 0.922557676788233420, 0.922576968595726350, 0.922596258096776810, +0.922615545291336600, 0.922634830179357990, 0.922654112760791900, 0.922673393035590480, 0.922692671003705670, 0.922711946665089040, 0.922731220019692660, 0.922750491067468200, +0.922769759808367840, 0.922789026242342820, 0.922808290369345090, 0.922827552189326770, 0.922846811702239480, 0.922866068908035240, 0.922885323806665770, 0.922904576398082990, +0.922923826682239160, 0.922943074659085430, 0.922962320328573950, 0.922981563690656650, 0.923000804745285450, 0.923020043492412290, 0.923039279931989090, 0.923058514063967550, +0.923077745888300160, 0.923096975404937960, 0.923116202613833430, 0.923135427514938380, 0.923154650108204740, 0.923173870393584450, 0.923193088371029540, 0.923212304040492150, +0.923231517401923770, 0.923250728455276560, 0.923269937200502430, 0.923289143637553540, 0.923308347766381820, 0.923327549586939190, 0.923346749099177800, 0.923365946303049690, +0.923385141198506560, 0.923404333785500460, 0.923423524063983540, 0.923442712033907820, 0.923461897695225350, 0.923481081047888060, 0.923500262091848430, 0.923519440827057840, +0.923538617253468640, 0.923557791371033000, 0.923576963179702730, 0.923596132679430080, 0.923615299870167110, 0.923634464751865950, 0.923653627324478870, 0.923672787587957460, +0.923691945542254090, 0.923711101187320800, 0.923730254523109750, 0.923749405549573080, 0.923768554266662930, 0.923787700674331360, 0.923806844772530940, 0.923825986561213060, +0.923845126040330090, 0.923864263209834390, 0.923883398069678120, 0.923902530619813200, 0.923921660860192010, 0.923940788790767020, 0.923959914411489720, 0.923979037722312710, +0.923998158723188020, 0.924017277414067920, 0.924036393794904650, 0.924055507865650380, 0.924074619626257370, 0.924093729076678190, 0.924112836216864240, 0.924131941046768320, +0.924151043566342480, 0.924170143775538970, 0.924189241674310160, 0.924208337262608310, 0.924227430540385590, 0.924246521507594570, 0.924265610164186960, 0.924284696510115240, +0.924303780545331910, 0.924322862269788990, 0.924341941683439080, 0.924361018786234220, 0.924380093578127120, 0.924399166059069470, 0.924418236229013980, 0.924437304087912800, +0.924456369635718420, 0.924475432872383100, 0.924494493797859200, 0.924513552412099090, 0.924532608715055380, 0.924551662706679880, 0.924570714386925170, 0.924589763755743640, +0.924608810813087770, 0.924627855558909810, 0.924646897993162350, 0.924665938115797780, 0.924684975926768240, 0.924704011426026100, 0.924723044613523950, 0.924742075489214280, +0.924761104053049340, 0.924780130304981740, 0.924799154244963730, 0.924818175872948120, 0.924837195188886850, 0.924856212192732510, 0.924875226884437680, 0.924894239263954750, +0.924913249331236310, 0.924932257086234720, 0.924951262528902360, 0.924970265659192270, 0.924989266477056260, 0.925008264982447040, 0.925027261175317080, 0.925046255055618990, +0.925065246623305360, 0.925084235878328440, 0.925103222820641390, 0.925122207450195910, 0.925141189766944930, 0.925160169770841030, 0.925179147461836600, 0.925198122839884340, +0.925217095904936840, 0.925236066656946580, 0.925255035095866370, 0.925274001221648380, 0.925292965034245300, 0.925311926533609830, 0.925330885719694570, 0.925349842592452120, +0.925368797151834950, 0.925387749397795890, 0.925406699330287740, 0.925425646949262550, 0.925444592254673240, 0.925463535246472400, 0.925482475924612750, 0.925501414289046860, +0.925520350339727570, 0.925539284076607680, 0.925558215499639240, 0.925577144608775160, 0.925596071403968380, 0.925614995885171270, 0.925633918052336750, 0.925652837905417410, +0.925671755444366080, 0.925690670669135570, 0.925709583579678140, 0.925728494175946710, 0.925747402457894000, 0.925766308425472810, 0.925785212078635840, 0.925804113417335930, +0.925823012441525980, 0.925841909151158160, 0.925860803546185610, 0.925879695626561030, 0.925898585392237240, 0.925917472843166940, 0.925936357979303070, 0.925955240800598210, +0.925974121307005520, 0.925992999498477350, 0.926011875374966540, 0.926030748936426120, 0.926049620182808790, 0.926068489114067470, 0.926087355730154880, 0.926106220031023940, +0.926125082016627690, 0.926143941686918490, 0.926162799041849390, 0.926181654081373320, 0.926200506805443080, 0.926219357214011610, 0.926238205307031830, 0.926257051084456770, +0.926275894546238710, 0.926294735692331010, 0.926313574522686370, 0.926332411037257830, 0.926351245235998320, 0.926370077118860660, 0.926388906685797870, 0.926407733936763010, +0.926426558871708550, 0.926445381490587750, 0.926464201793353430, 0.926483019779958620, 0.926501835450356250, 0.926520648804499360, 0.926539459842340760, 0.926558268563833830, +0.926577074968931050, 0.926595879057585450, 0.926614680829750180, 0.926633480285378170, 0.926652277424422470, 0.926671072246836090, 0.926689864752572420, 0.926708654941583720, +0.926727442813823350, 0.926746228369244470, 0.926765011607799890, 0.926783792529442870, 0.926802571134126340, 0.926821347421803440, 0.926840121392427440, 0.926858893045950820, +0.926877662382326940, 0.926896429401508850, 0.926915194103449800, 0.926933956488102730, 0.926952716555420770, 0.926971474305357310, 0.926990229737864930, 0.927008982852896900, +0.927027733650406470, 0.927046482130346570, 0.927065228292670570, 0.927083972137331510, 0.927102713664282540, 0.927121452873477030, 0.927140189764867670, 0.927158924338407740, +0.927177656594050490, 0.927196386531749180, 0.927215114151456850, 0.927233839453126760, 0.927252562436712060, 0.927271283102166330, 0.927290001449441960, 0.927308717478492640, +0.927327431189271520, 0.927346142581731870, 0.927364851655826830, 0.927383558411509660, 0.927402262848733950, 0.927420964967452190, 0.927439664767618080, 0.927458362249184760, +0.927477057412105620, 0.927495750256333800, 0.927514440781822550, 0.927533128988525250, 0.927551814876395380, 0.927570498445385750, 0.927589179695449740, 0.927607858626540940, +0.927626535238612380, 0.927645209531617550, 0.927663881505509710, 0.927682551160242120, 0.927701218495768480, 0.927719883512041490, 0.927738546209014750, 0.927757206586641630, +0.927775864644875600, 0.927794520383669830, 0.927813173802977790, 0.927831824902753070, 0.927850473682948480, 0.927869120143517740, 0.927887764284414220, 0.927906406105591270, +0.927925045607002400, 0.927943682788600730, 0.927962317650339990, 0.927980950192173750, 0.927999580414054840, 0.928018208315936840, 0.928036833897773470, 0.928055457159517980, +0.928074078101123860, 0.928092696722544460, 0.928111313023733730, 0.928129927004644360, 0.928148538665230170, 0.928167148005444640, 0.928185755025241250, 0.928204359724573490, +0.928222962103394830, 0.928241562161658650, 0.928260159899318980, 0.928278755316328640, 0.928297348412641330, 0.928315939188210650, 0.928334527642990180, 0.928353113776933410, +0.928371697589993830, 0.928390279082124900, 0.928408858253280680, 0.928427435103414080, 0.928446009632478700, 0.928464581840428460, 0.928483151727216740, 0.928501719292797120, +0.928520284537123100, 0.928538847460148810, 0.928557408061827070, 0.928575966342111810, 0.928594522300956630, 0.928613075938315100, 0.928631627254140950, 0.928650176248387640, +0.928668722921008990, 0.928687267271958830, 0.928705809301190070, 0.928724349008656970, 0.928742886394312910, 0.928761421458111580, 0.928779954200006700, 0.928798484619952070, +0.928817012717901400, 0.928835538493807960, 0.928854061947625650, 0.928872583079308200, 0.928891101888809300, 0.928909618376082550, 0.928928132541081860, 0.928946644383760840, +0.928965153904073530, 0.928983661101972950, 0.929002165977413250, 0.929020668530348150, 0.929039168760731340, 0.929057666668516640, 0.929076162253657860, 0.929094655516108590, +0.929113146455822990, 0.929131635072754200, 0.929150121366856260, 0.929168605338083100, 0.929187086986388410, 0.929205566311726020, 0.929224043314049730, 0.929242517993313700, +0.929260990349470960, 0.929279460382475770, 0.929297928092281960, 0.929316393478843210, 0.929334856542113560, 0.929353317282046840, 0.929371775698596750, 0.929390231791717540, +0.929408685561362470, 0.929427137007485690, 0.929445586130041020, 0.929464032928982390, 0.929482477404263710, 0.929500919555838800, 0.929519359383661590, 0.929537796887686340, +0.929556232067866310, 0.929574664924155640, 0.929593095456508260, 0.929611523664878200, 0.929629949549219400, 0.929648373109485560, 0.929666794345631260, 0.929685213257609670, +0.929703629845374910, 0.929722044108881150, 0.929740456048082310, 0.929758865662932310, 0.929777272953385080, 0.929795677919394770, 0.929814080560915520, 0.929832480877900710, +0.929850878870304820, 0.929869274538081660, 0.929887667881185260, 0.929906058899569790, 0.929924447593189150, 0.929942833961997730, 0.929961218005948780, 0.929979599724996890, +0.929997979119095990, 0.930016356188200220, 0.930034730932263410, 0.930053103351239810, 0.930071473445083560, 0.930089841213748820, 0.930108206657189300, 0.930126569775359120, +0.930144930568212570, 0.930163289035703670, 0.930181645177786560, 0.930199998994415410, 0.930218350485544130, 0.930236699651127430, 0.930255046491118560, 0.930273391005472130, +0.930291733194142270, 0.930310073057083020, 0.930328410594248530, 0.930346745805593070, 0.930365078691071100, 0.930383409250636010, 0.930401737484242490, 0.930420063391844580, +0.930438386973396540, 0.930456708228852510, 0.930475027158166770, 0.930493343761293450, 0.930511658038187030, 0.930529969988801110, 0.930548279613090390, 0.930566586911008910, +0.930584891882510920, 0.930603194527550800, 0.930621494846082590, 0.930639792838060750, 0.930658088503439670, 0.930676381842173050, 0.930694672854215480, 0.930712961539521210, +0.930731247898044620, 0.930749531929739860, 0.930767813634561290, 0.930786093012463510, 0.930804370063400110, 0.930822644787325790, 0.930840917184194930, 0.930859187253961770, +0.930877454996580590, 0.930895720412005860, 0.930913983500191720, 0.930932244261093000, 0.930950502694663400, 0.930968758800857500, 0.930987012579629680, 0.931005264030934310, +0.931023513154725760, 0.931041759950958500, 0.931060004419587140, 0.931078246560565480, 0.931096486373848120, 0.931114723859389650, 0.931132959017144320, 0.931151191847066630, +0.931169422349110820, 0.931187650523231600, 0.931205876369383570, 0.931224099887520420, 0.931242321077597190, 0.931260539939568030, 0.931278756473387540, 0.931296970679010180, +0.931315182556390340, 0.931333392105482600, 0.931351599326241670, 0.931369804218621480, 0.931388006782576720, 0.931406207018061980, 0.931424404925031650, 0.931442600503440410, +0.931460793753242640, 0.931478984674393160, 0.931497173266845890, 0.931515359530555750, 0.931533543465477230, 0.931551725071564810, 0.931569904348773070, 0.931588081297056500, +0.931606255916369810, 0.931624428206667800, 0.931642598167904400, 0.931660765800034540, 0.931678931103012700, 0.931697094076793570, 0.931715254721331650, 0.931733413036581640, +0.931751569022498120, 0.931769722679036020, 0.931787874006149150, 0.931806023003792780, 0.931824169671921280, 0.931842314010489340, 0.931860456019451560, 0.931878595698762750, +0.931896733048377720, 0.931914868068250520, 0.931933000758336180, 0.931951131118589290, 0.931969259148964560, 0.931987384849416790, 0.932005508219900470, 0.932023629260370410, +0.932041747970781650, 0.932059864351088120, 0.932077978401244960, 0.932096090121206870, 0.932114199510928550, 0.932132306570364720, 0.932150411299470070, 0.932168513698199750, +0.932186613766507800, 0.932204711504349360, 0.932222806911679140, 0.932240899988451940, 0.932258990734622480, 0.932277079150145460, 0.932295165234975800, 0.932313248989068530, +0.932331330412377920, 0.932349409504858890, 0.932367486266466260, 0.932385560697155060, 0.932403632796879880, 0.932421702565595640, 0.932439770003257170, 0.932457835109819500, +0.932475897885236990, 0.932493958329464800, 0.932512016442457630, 0.932530072224170390, 0.932548125674558030, 0.932566176793575340, 0.932584225581177590, 0.932602272037318820, +0.932620316161954510, 0.932638357955039350, 0.932656397416528280, 0.932674434546376220, 0.932692469344538090, 0.932710501810968820, 0.932728531945623550, 0.932746559748456660, +0.932764585219423400, 0.932782608358478590, 0.932800629165577380, 0.932818647640674570, 0.932836663783725100, 0.932854677594683880, 0.932872689073506400, 0.932890698220146920, +0.932908705034560580, 0.932926709516702530, 0.932944711666527820, 0.932962711483991130, 0.932980708969047830, 0.932998704121652980, 0.933016696941761040, 0.933034687429327380, +0.933052675584307050, 0.933070661406654960, 0.933088644896326260, 0.933106626053275990, 0.933124604877459070, 0.933142581368830990, 0.933160555527346110, 0.933178527352959920, +0.933196496845627330, 0.933214464005303610, 0.933232428831943570, 0.933250391325502580, 0.933268351485935900, 0.933286309313198000, 0.933304264807244380, 0.933322217968030050, +0.933340168795510180, 0.933358117289639910, 0.933376063450374270, 0.933394007277668520, 0.933411948771478150, 0.933429887931757520, 0.933447824758462220, 0.933465759251547290, +0.933483691410967990, 0.933501621236679460, 0.933519548728636850, 0.933537473886795420, 0.933555396711110540, 0.933573317201536910, 0.933591235358030010, 0.933609151180544990, +0.933627064669037110, 0.933644975823461620, 0.933662884643773560, 0.933680791129928740, 0.933698695281881540, 0.933716597099587650, 0.933734496583002230, 0.933752393732080520, +0.933770288546777900, 0.933788181027049640, 0.933806071172850750, 0.933823958984137170, 0.933841844460863270, 0.933859727602984750, 0.933877608410456970, 0.933895486883235090, +0.933913363021274590, 0.933931236824530610, 0.933949108292958850, 0.933966977426514020, 0.933984844225151820, 0.934002708688827400, 0.934020570817496340, 0.934038430611113800, +0.934056288069635140, 0.934074143193015740, 0.934091995981211400, 0.934109846434176610, 0.934127694551867280, 0.934145540334238800, 0.934163383781246300, 0.934181224892845500, +0.934199063668991530, 0.934216900109639980, 0.934234734214746450, 0.934252565984265760, 0.934270395418153710, 0.934288222516365560, 0.934306047278857020, 0.934323869705583230, +0.934341689796499790, 0.934359507551562500, 0.934377322970726070, 0.934395136053946310, 0.934412946801178810, 0.934430755212378840, 0.934448561287501980, 0.934466365026503820, +0.934484166429339740, 0.934501965495965430, 0.934519762226336040, 0.934537556620407160, 0.934555348678134390, 0.934573138399473200, 0.934590925784379300, 0.934608710832807940, +0.934626493544714940, 0.934644273920055890, 0.934662051958785930, 0.934679827660860880, 0.934697601026236110, 0.934715372054867540, 0.934733140746710320, 0.934750907101720370, +0.934768671119853510, 0.934786432801064550, 0.934804192145309630, 0.934821949152544130, 0.934839703822723740, 0.934857456155804180, 0.934875206151740910, 0.934892953810489760, +0.934910699132006420, 0.934928442116246040, 0.934946182763164550, 0.934963921072717530, 0.934981657044860800, 0.934999390679549960, 0.935017121976740580, 0.935034850936388720, +0.935052577558449390, 0.935070301842878650, 0.935088023789632180, 0.935105743398665590, 0.935123460669934680, 0.935141175603395160, 0.935158888199002610, 0.935176598456713190, +0.935194306376482040, 0.935212011958264980, 0.935229715202018030, 0.935247416107696680, 0.935265114675256860, 0.935282810904654260, 0.935300504795844590, 0.935318196348783990, +0.935335885563427620, 0.935353572439731500, 0.935371256977651440, 0.935388939177143160, 0.935406619038162690, 0.935424296560665610, 0.935441971744608080, 0.935459644589945350, +0.935477315096633450, 0.935494983264628320, 0.935512649093885650, 0.935530312584361480, 0.935547973736011400, 0.935565632548791440, 0.935583289022657750, 0.935600943157565480, +0.935618594953470880, 0.935636244410329780, 0.935653891528098080, 0.935671536306731720, 0.935689178746186400, 0.935706818846418150, 0.935724456607383240, 0.935742092029036800, +0.935759725111335210, 0.935777355854234270, 0.935794984257689920, 0.935812610321658080, 0.935830234046094780, 0.935847855430956170, 0.935865474476197610, 0.935883091181775370, +0.935900705547645370, 0.935918317573763650, 0.935935927260086120, 0.935953534606568830, 0.935971139613167690, 0.935988742279838970, 0.936006342606538030, 0.936023940593221360, +0.936041536239844760, 0.936059129546364390, 0.936076720512736050, 0.936094309138916000, 0.936111895424860510, 0.936129479370524930, 0.936147060975865750, 0.936164640240838790, +0.936182217165400290, 0.936199791749506290, 0.936217363993112730, 0.936234933896175740, 0.936252501458651800, 0.936270066680496280, 0.936287629561665670, 0.936305190102115880, +0.936322748301803070, 0.936340304160683480, 0.936357857678713160, 0.936375408855848130, 0.936392957692044890, 0.936410504187259020, 0.936428048341446770, 0.936445590154564410, +0.936463129626568190, 0.936480666757414040, 0.936498201547058320, 0.936515733995457290, 0.936533264102566760, 0.936550791868342890, 0.936568317292742150, 0.936585840375720680, +0.936603361117234520, 0.936620879517239930, 0.936638395575693170, 0.936655909292550830, 0.936673420667768260, 0.936690929701302190, 0.936708436393108860, 0.936725940743144410, +0.936743442751365010, 0.936760942417727120, 0.936778439742186890, 0.936795934724700800, 0.936813427365224550, 0.936830917663714740, 0.936848405620127720, 0.936865891234419550, +0.936883374506546800, 0.936900855436465510, 0.936918334024132380, 0.936935810269503230, 0.936953284172534430, 0.936970755733182450, 0.936988224951403550, 0.937005691827154210, +0.937023156360390570, 0.937040618551069020, 0.937058078399146230, 0.937075535904577930, 0.937092991067320800, 0.937110443887331220, 0.937127894364565560, 0.937145342498980070, +0.937162788290531350, 0.937180231739175860, 0.937197672844869540, 0.937215111607568980, 0.937232548027230660, 0.937249982103810940, 0.937267413837266420, 0.937284843227553230, +0.937302270274627980, 0.937319694978447360, 0.937337117338967070, 0.937354537356144160, 0.937371955029934870, 0.937389370360295570, 0.937406783347182970, 0.937424193990553430, +0.937441602290363330, 0.937459008246569580, 0.937476411859128000, 0.937493813127995290, 0.937511212053128150, 0.937528608634482950, 0.937546002872016280, 0.937563394765684510, +0.937580784315444670, 0.937598171521252470, 0.937615556383064930, 0.937632938900838430, 0.937650319074529560, 0.937667696904095020, 0.937685072389491060, 0.937702445530674610, +0.937719816327602150, 0.937737184780230050, 0.937754550888514780, 0.937771914652413270, 0.937789276071882010, 0.937806635146877450, 0.937823991877356320, 0.937841346263275310, +0.937858698304591120, 0.937876048001259900, 0.937893395353238570, 0.937910740360483830, 0.937928083022952160, 0.937945423340600270, 0.937962761313384850, 0.937980096941262830, +0.937997430224190350, 0.938014761162124230, 0.938032089755021170, 0.938049416002837870, 0.938066739905531130, 0.938084061463057450, 0.938101380675373630, 0.938118697542436710, +0.938136012064202720, 0.938153324240628690, 0.938170634071671340, 0.938187941557287350, 0.938205246697433660, 0.938222549492066740, 0.938239849941143730, 0.938257148044620900, +0.938274443802455060, 0.938291737214603240, 0.938309028281022030, 0.938326317001668240, 0.938343603376498690, 0.938360887405470080, 0.938378169088539550, 0.938395448425663360, +0.938412725416798540, 0.938430000061901910, 0.938447272360930170, 0.938464542313840360, 0.938481809920589160, 0.938499075181133510, 0.938516338095430340, 0.938533598663436110, +0.938550856885107860, 0.938568112760402530, 0.938585366289276800, 0.938602617471687720, 0.938619866307592090, 0.938637112796947170, 0.938654356939709110, 0.938671598735835170, +0.938688838185282150, 0.938706075288007090, 0.938723310043966810, 0.938740542453118330, 0.938757772515418480, 0.938775000230824500, 0.938792225599292650, 0.938809448620780310, +0.938826669295244280, 0.938843887622641700, 0.938861103602929290, 0.938878317236064190, 0.938895528522003200, 0.938912737460703810, 0.938929944052122160, 0.938947148296215730, +0.938964350192941330, 0.938981549742256230, 0.938998746944117110, 0.939015941798481140, 0.939033134305305660, 0.939050324464547060, 0.939067512276162590, 0.939084697740109390, +0.939101880856344380, 0.939119061624824720, 0.939136240045507440, 0.939153416118349570, 0.939170589843308370, 0.939187761220340420, 0.939204930249403100, 0.939222096930453440, +0.939239261263448480, 0.939256423248345460, 0.939273582885101320, 0.939290740173673640, 0.939307895114018690, 0.939325047706094040, 0.939342197949856740, 0.939359345845263930, +0.939376491392272860, 0.939393634590840470, 0.939410775440924000, 0.939427913942480930, 0.939445050095467750, 0.939462183899841930, 0.939479315355560730, 0.939496444462581180, +0.939513571220860540, 0.939530695630355960, 0.939547817691024580, 0.939564937402824100, 0.939582054765710880, 0.939599169779642530, 0.939616282444576290, 0.939633392760469310, +0.939650500727278850, 0.939667606344962160, 0.939684709613476720, 0.939701810532779240, 0.939718909102827180, 0.939736005323577930, 0.939753099194988620, 0.939770190717016510, +0.939787279889618970, 0.939804366712753250, 0.939821451186376940, 0.939838533310446640, 0.939855613084920050, 0.939872690509754420, 0.939889765584907110, 0.939906838310335280, +0.939923908685996400, 0.939940976711848060, 0.939958042387846970, 0.939975105713950820, 0.939992166690116870, 0.940009225316302490, 0.940026281592465040, 0.940043335518561900, +0.940060387094550420, 0.940077436320388320, 0.940094483196032280, 0.940111527721440020, 0.940128569896569010, 0.940145609721376510, 0.940162647195819990, 0.940179682319856940, +0.940196715093444600, 0.940213745516540690, 0.940230773589102230, 0.940247799311086820, 0.940264822682451930, 0.940281843703154930, 0.940298862373153410, 0.940315878692404630, +0.940332892660866500, 0.940349904278495850, 0.940366913545250480, 0.940383920461087760, 0.940400925025965280, 0.940417927239840410, 0.940434927102670850, 0.940451924614413850, +0.940468919775027450, 0.940485912584468340, 0.940502903042694460, 0.940519891149663390, 0.940536876905332610, 0.940553860309659600, 0.940570841362601940, 0.940587820064117120, +0.940604796414163060, 0.940621770412696790, 0.940638742059676130, 0.940655711355058430, 0.940672678298801630, 0.940689642890863100, 0.940706605131200410, 0.940723565019771500, +0.940740522556533400, 0.940757477741444030, 0.940774430574460860, 0.940791381055541720, 0.940808329184644080, 0.940825274961725630, 0.940842218386744090, 0.940859159459657150, +0.940876098180422060, 0.940893034548996750, 0.940909968565338820, 0.940926900229406060, 0.940943829541155960, 0.940960756500546340, 0.940977681107535100, 0.940994603362079300, +0.941011523264137060, 0.941028440813665990, 0.941045356010623890, 0.941062268854968350, 0.941079179346657080, 0.941096087485647880, 0.941112993271898790, 0.941129896705366950, +0.941146797786010400, 0.941163696513786730, 0.941180592888653860, 0.941197486910569590, 0.941214378579491530, 0.941231267895377590, 0.941248154858185690, 0.941265039467873100, +0.941281921724397950, 0.941298801627718060, 0.941315679177791130, 0.941332554374574970, 0.941349427218027390, 0.941366297708106650, 0.941383165844769780, 0.941400031627975030, +0.941416895057680110, 0.941433756133843060, 0.941450614856421560, 0.941467471225373550, 0.941484325240656950, 0.941501176902229680, 0.941518026210049320, 0.941534873164073800, +0.941551717764261160, 0.941568560010569100, 0.941585399902955760, 0.941602237441378940, 0.941619072625796470, 0.941635905456166600, 0.941652735932446690, 0.941669564054594900, +0.941686389822569250, 0.941703213236327660, 0.941720034295827960, 0.941736853001028160, 0.941753669351886650, 0.941770483348360550, 0.941787294990408250, 0.941804104277987770, +0.941820911211057040, 0.941837715789573980, 0.941854518013496620, 0.941871317882783000, 0.941888115397391370, 0.941904910557279210, 0.941921703362404770, 0.941938493812725990, +0.941955281908200990, 0.941972067648787830, 0.941988851034444520, 0.942005632065129330, 0.942022410740799730, 0.942039187061414210, 0.942055961026930570, 0.942072732637307180, +0.942089501892501850, 0.942106268792472830, 0.942123033337178170, 0.942139795526576120, 0.942156555360624370, 0.942173312839281190, 0.942190067962504820, 0.942206820730253190, +0.942223571142484450, 0.942240319199156850, 0.942257064900228540, 0.942273808245657760, 0.942290549235402120, 0.942307287869420200, 0.942324024147670030, 0.942340758070109860, +0.942357489636697740, 0.942374218847391810, 0.942390945702150760, 0.942407670200931970, 0.942424392343694130, 0.942441112130395160, 0.942457829560993440, 0.942474544635447220, +0.942491257353714640, 0.942507967715753850, 0.942524675721523430, 0.942541381370981090, 0.942558084664085190, 0.942574785600794220, 0.942591484181066200, 0.942608180404859500, +0.942624874272132370, 0.942641565782842970, 0.942658254936949990, 0.942674941734411130, 0.942691626175184870, 0.942708308259229580, 0.942724987986503500, 0.942741665356964910, +0.942758340370572160, 0.942775013027283950, 0.942791683327057760, 0.942808351269852520, 0.942825016855626250, 0.942841680084337550, 0.942858340955944670, 0.942874999470405870, +0.942891655627679630, 0.942908309427724410, 0.942924960870498260, 0.942941609955959660, 0.942958256684067080, 0.942974901054778770, 0.942991543068053330, 0.943008182723848900, +0.943024820022124400, 0.943041454962837530, 0.943058087545947000, 0.943074717771411280, 0.943091345639188730, 0.943107971149237830, 0.943124594301517070, 0.943141215095984810, +0.943157833532599740, 0.943174449611319800, 0.943191063332103790, 0.943207674694910070, 0.943224283699697130, 0.943240890346423560, 0.943257494635047710, 0.943274096565528190, +0.943290696137823680, 0.943307293351892120, 0.943323888207692420, 0.943340480705182840, 0.943357070844322190, 0.943373658625068830, 0.943390244047381370, 0.943406827111218480, +0.943423407816538330, 0.943439986163299600, 0.943456562151460900, 0.943473135780980800, 0.943489707051817890, 0.943506275963930660, 0.943522842517277800, 0.943539406711818130, +0.943555968547509670, 0.943572528024311240, 0.943589085142181540, 0.943605639901079040, 0.943622192300962450, 0.943638742341790460, 0.943655290023521550, 0.943671835346114760, +0.943688378309528010, 0.943704918913720440, 0.943721457158650520, 0.943737993044276860, 0.943754526570558360, 0.943771057737453400, 0.943787586544921230, 0.943804112992919770, +0.943820637081407950, 0.943837158810344580, 0.943853678179688350, 0.943870195189397850, 0.943886709839431900, 0.943903222129749200, 0.943919732060308770, 0.943936239631068650, +0.943952744841987880, 0.943969247693025370, 0.943985748184139720, 0.944002246315289620, 0.944018742086433990, 0.944035235497531770, 0.944051726548541080, 0.944068215239421190, +0.944084701570130690, 0.944101185540628500, 0.944117667150873310, 0.944134146400824050, 0.944150623290439310, 0.944167097819678340, 0.944183569988499280, 0.944200039796861290, +0.944216507244723280, 0.944232972332043950, 0.944249435058782230, 0.944265895424896920, 0.944282353430346830, 0.944298809075091230, 0.944315262359088250, 0.944331713282297150, +0.944348161844676740, 0.944364608046185940, 0.944381051886783560, 0.944397493366428640, 0.944413932485080210, 0.944430369242696740, 0.944446803639237280, 0.944463235674660840, +0.944479665348926250, 0.944496092661992640, 0.944512517613818600, 0.944528940204363400, 0.944545360433586170, 0.944561778301445170, 0.944578193807899760, 0.944594606952908870, +0.944611017736431410, 0.944627426158426430, 0.944643832218852840, 0.944660235917670120, 0.944676637254836420, 0.944693036230311090, 0.944709432844053180, 0.944725827096021710, +0.944742218986175720, 0.944758608514474130, 0.944774995680875970, 0.944791380485340730, 0.944807762927826640, 0.944824143008293200, 0.944840520726699440, 0.944856896083004270, +0.944873269077166960, 0.944889639709146410, 0.944906007978901790, 0.944922373886392440, 0.944938737431576860, 0.944955098614414510, 0.944971457434864330, 0.944987813892885550, +0.945004167988437230, 0.945020519721478380, 0.945036869091968600, 0.945053216099866370, 0.945069560745131150, 0.945085903027722000, 0.945102242947598040, 0.945118580504718530, +0.945134915699042510, 0.945151248530529230, 0.945167578999138170, 0.945183907104827800, 0.945200232847557720, 0.945216556227287060, 0.945232877243974980, 0.945249195897580720, +0.945265512188063430, 0.945281826115382360, 0.945298137679497000, 0.945314446880366140, 0.945330753717949060, 0.945347058192205100, 0.945363360303093540, 0.945379660050573500, +0.945395957434604360, 0.945412252455145600, 0.945428545112155900, 0.945444835405594870, 0.945461123335421760, 0.945477408901595820, 0.945493692104076410, 0.945509972942822690, +0.945526251417794120, 0.945542527528950180, 0.945558801276249580, 0.945575072659652020, 0.945591341679116850, 0.945607608334603220, 0.945623872626070620, 0.945640134553478280, +0.945656394116785930, 0.945672651315952350, 0.945688906150937040, 0.945705158621699570, 0.945721408728199210, 0.945737656470395200, 0.945753901848247150, 0.945770144861714400, +0.945786385510756440, 0.945802623795332310, 0.945818859715401580, 0.945835093270923740, 0.945851324461858160, 0.945867553288164300, 0.945883779749801530, 0.945900003846729230, +0.945916225578907310, 0.945932444946294470, 0.945948661948850630, 0.945964876586535050, 0.945981088859307320, 0.945997298767126790, 0.946013506309953070, 0.946029711487745840, +0.946045914300464030, 0.946062114748067560, 0.946078312830515690, 0.946094508547768110, 0.946110701899784190, 0.946126892886523520, 0.946143081507945680, 0.946159267764010380, +0.946175451654676540, 0.946191633179904180, 0.946207812339652790, 0.946223989133881730, 0.946240163562550810, 0.946256335625619390, 0.946272505323047190, 0.946288672654793990, +0.946304837620818850, 0.946321000221081570, 0.946337160455541840, 0.946353318324159140, 0.946369473826893290, 0.946385626963703650, 0.946401777734550140, 0.946417926139392020, +0.946434072178189090, 0.946450215850900940, 0.946466357157487280, 0.946482496097907690, 0.946498632672121860, 0.946514766880089510, 0.946530898721770540, 0.946547028197124000, +0.946563155306109790, 0.946579280048687850, 0.946595402424817660, 0.946611522434458900, 0.946627640077571390, 0.946643755354115050, 0.946659868264049020, 0.946675978807333340, +0.946692086983927710, 0.946708192793791930, 0.946724296236885590, 0.946740397313168500, 0.946756496022600480, 0.946772592365141440, 0.946788686340750640, 0.946804777949388110, +0.946820867191013770, 0.946836954065587100, 0.946853038573068130, 0.946869120713416560, 0.946885200486592190, 0.946901277892555070, 0.946917352931264440, 0.946933425602680570, +0.946949495906763030, 0.946965563843471750, 0.946981629412766530, 0.946997692614607310, 0.947013753448954110, 0.947029811915766300, 0.947045868015003900, 0.947061921746626840, +0.947077973110594940, 0.947094022106868110, 0.947110068735406260, 0.947126112996169220, 0.947142154889117240, 0.947158194414209560, 0.947174231571406340, 0.947190266360667610, +0.947206298781953170, 0.947222328835223060, 0.947238356520437090, 0.947254381837555170, 0.947270404786537570, 0.947286425367343750, 0.947302443579933870, 0.947318459424267840, +0.947334472900305700, 0.947350484008007370, 0.947366492747332760, 0.947382499118242240, 0.947398503120695290, 0.947414504754651940, 0.947430504020072450, 0.947446500916916620, +0.947462495445144490, 0.947478487604716200, 0.947494477395591670, 0.947510464817731270, 0.947526449871094360, 0.947542432555641410, 0.947558412871332360, 0.947574390818127220, +0.947590366395986150, 0.947606339604869060, 0.947622310444736550, 0.947638278915547860, 0.947654245017263590, 0.947670208749843650, 0.947686170113248180, 0.947702129107437340, +0.947718085732371150, 0.947734039988009650, 0.947749991874313410, 0.947765941391241930, 0.947781888538755560, 0.947797833316814550, 0.947813775725378840, 0.947829715764408780, +0.947845653433864400, 0.947861588733705850, 0.947877521663893720, 0.947893452224387370, 0.947909380415147500, 0.947925306236134140, 0.947941229687307430, 0.947957150768627740, +0.947973069480055110, 0.947988985821550220, 0.948004899793072450, 0.948020811394582500, 0.948036720626040500, 0.948052627487406710, 0.948068531978641270, 0.948084434099704660, +0.948100333850556810, 0.948116231231158510, 0.948132126241469250, 0.948148018881449840, 0.948163909151060190, 0.948179797050260900, 0.948195682579012100, 0.948211565737274050, +0.948227446525007120, 0.948243324942171780, 0.948259200988727960, 0.948275074664636120, 0.948290945969856520, 0.948306814904349650, 0.948322681468075630, 0.948338545660994960, +0.948354407483068210, 0.948370266934255190, 0.948386124014516500, 0.948401978723812490, 0.948417831062103530, 0.948433681029350000, 0.948449528625512240, 0.948465373850550630, +0.948481216704425980, 0.948497057187097870, 0.948512895298527230, 0.948528731038674300, 0.948544564407499570, 0.948560395404963400, 0.948576224031026260, 0.948592050285648750, +0.948607874168791000, 0.948623695680413490, 0.948639514820476700, 0.948655331588941110, 0.948671145985767290, 0.948686958010915520, 0.948702767664346360, 0.948718574946020630, +0.948734379855898150, 0.948750182393939710, 0.948765982560105800, 0.948781780354357010, 0.948797575776653690, 0.948813368826956440, 0.948829159505225840, 0.948844947811422480, +0.948860733745506610, 0.948876517307438830, 0.948892298497179820, 0.948908077314689960, 0.948923853759929940, 0.948939627832860340, 0.948955399533441990, 0.948971168861634800, +0.948986935817399680, 0.949002700400697230, 0.949018462611488030, 0.949034222449732680, 0.949049979915391750, 0.949065735008425840, 0.949081487728795970, 0.949097238076462070, +0.949112986051385050, 0.949128731653525510, 0.949144474882844260, 0.949160215739301760, 0.949175954222858720, 0.949191690333476060, 0.949207424071113910, 0.949223155435733210, +0.949238884427294650, 0.949254611045758810, 0.949270335291086510, 0.949286057163238330, 0.949301776662174970, 0.949317493787857570, 0.949333208540246050, 0.949348920919301560, +0.949364630924984800, 0.949380338557256340, 0.949396043816077120, 0.949411746701407820, 0.949427447213209040, 0.949443145351442030, 0.949458841116066820, 0.949474534507044550, +0.949490225524335930, 0.949505914167901750, 0.949521600437702840, 0.949537284333699770, 0.949552965855853910, 0.949568645004125300, 0.949584321778475070, 0.949599996178864150, +0.949615668205253120, 0.949631337857602900, 0.949647005135874410, 0.949662670040028360, 0.949678332570025980, 0.949693992725827440, 0.949709650507393870, 0.949725305914686290, +0.949740958947665300, 0.949756609606292050, 0.949772257890527220, 0.949787903800331730, 0.949803547335666850, 0.949819188496492720, 0.949834827282770690, 0.949850463694461470, +0.949866097731526190, 0.949881729393925680, 0.949897358681620840, 0.949912985594572820, 0.949928610132742100, 0.949944232296089820, 0.949959852084577010, 0.949975469498164580, +0.949991084536813470, 0.950006697200484580, 0.950022307489139070, 0.950037915402737960, 0.950053520941241850, 0.950069124104611860, 0.950084724892809150, 0.950100323305794530, +0.950115919343529240, 0.950131513005973980, 0.950147104293090350, 0.950162693204838700, 0.950178279741180190, 0.950193863902076050, 0.950209445687487220, 0.950225025097374830, +0.950240602131699920, 0.950256176790423400, 0.950271749073506760, 0.950287318980910460, 0.950302886512595870, 0.950318451668524020, 0.950334014448656170, 0.950349574852953130, +0.950365132881376250, 0.950380688533886460, 0.950396241810445350, 0.950411792711013280, 0.950427341235551730, 0.950442887384021830, 0.950458431156384730, 0.950473972552601460, +0.950489511572633390, 0.950505048216441770, 0.950520582483987190, 0.950536114375231220, 0.950551643890135020, 0.950567171028659620, 0.950582695790766260, 0.950598218176416320, +0.950613738185570710, 0.950629255818191020, 0.950644771074237950, 0.950660283953672970, 0.950675794456457220, 0.950691302582552080, 0.950706808331918560, 0.950722311704518150, +0.950737812700311880, 0.950753311319261440, 0.950768807561327310, 0.950784301426471300, 0.950799792914654440, 0.950815282025838090, 0.950830768759983620, 0.950846253117052180, +0.950861735097005440, 0.950877214699804020, 0.950892691925409590, 0.950908166773783430, 0.950923639244886760, 0.950939109338681090, 0.950954577055127650, 0.950970042394187810, +0.950985505355823050, 0.951000965939994280, 0.951016424146663100, 0.951031879975790860, 0.951047333427338940, 0.951062784501268690, 0.951078233197541370, 0.951093679516118900, +0.951109123456961860, 0.951124565020032060, 0.951140004205290770, 0.951155441012699550, 0.951170875442219680, 0.951186307493812610, 0.951201737167439830, 0.951217164463062930, +0.951232589380642920, 0.951248011920141410, 0.951263432081519870, 0.951278849864739650, 0.951294265269762460, 0.951309678296549550, 0.951325088945062400, 0.951340497215262810, +0.951355903107111710, 0.951371306620570900, 0.951386707755601750, 0.951402106512165950, 0.951417502890224750, 0.951432896889739870, 0.951448288510672980, 0.951463677752985130, +0.951479064616638110, 0.951494449101593310, 0.951509831207812520, 0.951525210935257100, 0.951540588283888660, 0.951555963253668760, 0.951571335844559220, 0.951586706056521070, +0.951602073889516120, 0.951617439343505960, 0.951632802418452270, 0.951648163114316550, 0.951663521431060480, 0.951678877368645540, 0.951694230927033650, 0.951709582106185950, +0.951724930906064360, 0.951740277326630360, 0.951755621367845750, 0.951770963029672010, 0.951786302312070840, 0.951801639215004270, 0.951816973738433210, 0.951832305882319820, +0.951847635646625670, 0.951862963031312460, 0.951878288036341670, 0.951893610661675330, 0.951908930907274910, 0.951924248773102440, 0.951939564259119080, 0.951954877365286830, +0.951970188091567300, 0.951985496437922410, 0.952000802404313730, 0.952016105990702970, 0.952031407197052370, 0.952046706023322860, 0.952062002469476590, 0.952077296535475350, +0.952092588221280960, 0.952107877526855000, 0.952123164452159280, 0.952138448997155720, 0.952153731161806350, 0.952169010946072310, 0.952184288349915860, 0.952199563373298590, +0.952214836016182400, 0.952230106278529220, 0.952245374160300640, 0.952260639661458690, 0.952275902781965390, 0.952291163521782110, 0.952306421880870890, 0.952321677859193640, +0.952336931456712170, 0.952352182673388390, 0.952367431509184130, 0.952382677964061620, 0.952397922037982130, 0.952413163730907790, 0.952428403042800520, 0.952443639973622250, +0.952458874523335000, 0.952474106691900470, 0.952489336479280690, 0.952504563885437800, 0.952519788910333290, 0.952535011553929280, 0.952550231816187700, 0.952565449697070580, +0.952580665196539830, 0.952595878314557390, 0.952611089051085380, 0.952626297406085840, 0.952641503379520250, 0.952656706971350850, 0.952671908181539790, 0.952687107010048990, +0.952702303456840370, 0.952717497521875960, 0.952732689205118110, 0.952747878506528200, 0.952763065426068700, 0.952778249963701530, 0.952793432119388610, 0.952808611893092180, +0.952823789284774290, 0.952838964294396850, 0.952854136921922330, 0.952869307167312110, 0.952884475030528750, 0.952899640511534090, 0.952914803610290350, 0.952929964326759690, +0.952945122660904030, 0.952960278612685840, 0.952975432182066710, 0.952990583369008990, 0.953005732173474730, 0.953020878595426280, 0.953036022634825560, 0.953051164291634830, +0.953066303565816120, 0.953081440457331900, 0.953096574966143860, 0.953111707092214490, 0.953126836835505700, 0.953141964195979850, 0.953157089173599090, 0.953172211768325670, +0.953187331980121730, 0.953202449808949640, 0.953217565254771190, 0.953232678317548880, 0.953247788997244830, 0.953262897293821300, 0.953278003207240540, 0.953293106737464700, +0.953308207884456470, 0.953323306648177440, 0.953338403028590080, 0.953353497025656750, 0.953368588639339710, 0.953383677869601100, 0.953398764716403390, 0.953413849179708730, +0.953428931259479700, 0.953444010955678100, 0.953459088268266530, 0.953474163197207130, 0.953489235742462360, 0.953504305903994600, 0.953519373681765980, 0.953534439075739200, +0.953549502085875970, 0.953564562712139070, 0.953579620954490780, 0.953594676812893450, 0.953609730287309440, 0.953624781377701010, 0.953639830084030750, 0.953654876406261120, +0.953669920344354050, 0.953684961898272120, 0.953700001067977810, 0.953715037853433590, 0.953730072254601600, 0.953745104271444540, 0.953760133903924780, 0.953775161152004890, +0.953790186015646800, 0.953805208494813320, 0.953820228589466690, 0.953835246299569620, 0.953850261625084350, 0.953865274565973480, 0.953880285122199690, 0.953895293293724910, +0.953910299080511840, 0.953925302482523050, 0.953940303499721030, 0.953955302132068250, 0.953970298379527290, 0.953985292242060410, 0.954000283719630750, 0.954015272812200000, +0.954030259519731080, 0.954045243842186470, 0.954060225779528870, 0.954075205331720630, 0.954090182498724460, 0.954105157280502710, 0.954120129677018420, 0.954135099688233510, +0.954150067314110780, 0.954165032554613050, 0.954179995409702550, 0.954194955879342220, 0.954209913963494420, 0.954224869662122170, 0.954239822975187390, 0.954254773902653120, +0.954269722444481830, 0.954284668600636320, 0.954299612371079080, 0.954314553755772900, 0.954329492754680260, 0.954344429367764090, 0.954359363594986740, 0.954374295436310920, +0.954389224891699310, 0.954404151961114610, 0.954419076644519640, 0.954433998941876970, 0.954448918853149530, 0.954463836378299460, 0.954478751517289890, 0.954493664270083420, +0.954508574636642850, 0.954523482616930760, 0.954538388210909970, 0.954553291418543280, 0.954568192239793500, 0.954583090674623100, 0.954597986722994900, 0.954612880384871800, +0.954627771660216400, 0.954642660548991610, 0.954657547051160240, 0.954672431166684880, 0.954687312895528770, 0.954702192237654180, 0.954717069193024010, 0.954731943761601200, +0.954746815943348540, 0.954761685738228840, 0.954776553146205020, 0.954791418167239890, 0.954806280801296150, 0.954821141048336600, 0.954835998908324160, 0.954850854381221750, +0.954865707466992290, 0.954880558165598470, 0.954895406477003220, 0.954910252401169780, 0.954925095938060520, 0.954939937087638360, 0.954954775849866540, 0.954969612224707660, +0.954984446212124750, 0.954999277812080720, 0.955014107024538590, 0.955028933849461300, 0.955043758286811540, 0.955058580336552330, 0.955073399998646710, 0.955088217273057590, +0.955103032159747900, 0.955117844658680660, 0.955132654769819010, 0.955147462493125540, 0.955162267828563280, 0.955177070776095480, 0.955191871335684950, 0.955206669507294830, +0.955221465290887920, 0.955236258686427360, 0.955251049693876530, 0.955265838313197670, 0.955280624544354360, 0.955295408387309310, 0.955310189842025870, 0.955324968908466960, +0.955339745586595510, 0.955354519876375100, 0.955369291777768080, 0.955384061290737830, 0.955398828415247370, 0.955413593151259950, 0.955428355498738390, 0.955443115457646040, +0.955457873027945940, 0.955472628209601330, 0.955487381002575020, 0.955502131406830160, 0.955516879422329990, 0.955531625049037550, 0.955546368286916190, 0.955561109135928840, +0.955575847596038640, 0.955590583667209170, 0.955605317349403020, 0.955620048642583430, 0.955634777546713890, 0.955649504061757300, 0.955664228187676930, 0.955678949924436030, +0.955693669271998060, 0.955708386230325610, 0.955723100799382270, 0.955737812979131070, 0.955752522769535370, 0.955767230170558420, 0.955781935182163370, 0.955796637804313450, +0.955811338036972160, 0.955826035880102290, 0.955840731333667430, 0.955855424397630600, 0.955870115071955300, 0.955884803356604750, 0.955899489251542110, 0.955914172756730740, +0.955928853872134220, 0.955943532597715360, 0.955958208933437640, 0.955972882879264300, 0.955987554435158930, 0.956002223601084560, 0.956016890377004660, 0.956031554762882710, +0.956046216758681730, 0.956060876364365210, 0.956075533579896390, 0.956090188405238850, 0.956104840840355740, 0.956119490885210640, 0.956134138539766700, 0.956148783803987710, +0.956163426677836600, 0.956178067161276850, 0.956192705254271910, 0.956207340956785170, 0.956221974268780190, 0.956236605190220130, 0.956251233721068910, 0.956265859861289420, +0.956280483610845170, 0.956295104969699720, 0.956309723937816550, 0.956324340515159020, 0.956338954701690720, 0.956353566497375020, 0.956368175902175600, 0.956382782916055500, +0.956397387538978410, 0.956411989770907910, 0.956426589611807380, 0.956441187061640500, 0.956455782120370520, 0.956470374787961150, 0.956484965064376080, 0.956499552949578340, +0.956514138443531730, 0.956528721546199830, 0.956543302257546020, 0.956557880577533990, 0.956572456506127320, 0.956587030043289710, 0.956601601188984190, 0.956616169943174780, +0.956630736305824960, 0.956645300276898200, 0.956659861856358320, 0.956674421044168670, 0.956688977840293050, 0.956703532244695180, 0.956718084257338290, 0.956732633878186080, +0.956747181107202360, 0.956761725944350720, 0.956776268389594730, 0.956790808442897990, 0.956805346104224300, 0.956819881373537570, 0.956834414250800850, 0.956848944735978040, +0.956863472829032840, 0.956877998529929050, 0.956892521838630160, 0.956907042755100080, 0.956921561279302610, 0.956936077411200900, 0.956950591150759090, 0.956965102497940760, +0.956979611452709710, 0.956994118015029650, 0.957008622184864270, 0.957023123962177260, 0.957037623346932760, 0.957052120339094040, 0.957066614938624880, 0.957081107145489220, +0.957095596959650850, 0.957110084381073370, 0.957124569409720790, 0.957139052045557050, 0.957153532288545380, 0.957168010138649830, 0.957182485595834300, 0.957196958660062600, +0.957211429331298440, 0.957225897609505720, 0.957240363494648250, 0.957254826986690180, 0.957269288085594750, 0.957283746791326110, 0.957298203103848060, 0.957312657023124510, +0.957327108549119400, 0.957341557681796520, 0.957356004421119680, 0.957370448767053020, 0.957384890719560120, 0.957399330278604910, 0.957413767444151410, 0.957428202216163540, +0.957442634594604990, 0.957457064579440020, 0.957471492170632650, 0.957485917368146140, 0.957500340171944960, 0.957514760581992920, 0.957529178598253930, 0.957543594220692020, +0.957558007449271220, 0.957572418283955340, 0.957586826724708630, 0.957601232771494560, 0.957615636424277490, 0.957630037683021350, 0.957644436547690050, 0.957658833018247610, +0.957673227094658190, 0.957687618776885690, 0.957702008064894360, 0.957716394958647800, 0.957730779458110250, 0.957745161563245630, 0.957759541274018300, 0.957773918590391960, +0.957788293512330860, 0.957802666039799360, 0.957817036172760930, 0.957831403911179820, 0.957845769255020190, 0.957860132204246260, 0.957874492758821970, 0.957888850918711340, +0.957903206683878630, 0.957917560054288190, 0.957931911029903600, 0.957946259610689240, 0.957960605796609240, 0.957974949587627740, 0.957989290983708770, 0.958003629984816700, +0.958017966590915650, 0.958032300801969550, 0.958046632617942650, 0.958060962038799200, 0.958075289064503340, 0.958089613695019330, 0.958103935930311180, 0.958118255770343150, +0.958132573215079830, 0.958146888264484800, 0.958161200918522530, 0.958175511177157270, 0.958189819040353270, 0.958204124508074680, 0.958218427580285860, 0.958232728256950830, +0.958247026538034290, 0.958261322423500040, 0.958275615913312340, 0.958289907007435660, 0.958304195705834250, 0.958318482008472250, 0.958332765915314130, 0.958347047426324260, +0.958361326541466660, 0.958375603260705590, 0.958389877584005620, 0.958404149511330910, 0.958418419042645800, 0.958432686177914770, 0.958446950917101860, 0.958461213260171970, +0.958475473207088700, 0.958489730757816740, 0.958503985912320560, 0.958518238670564290, 0.958532489032512540, 0.958546736998129420, 0.958560982567379870, 0.958575225740227470, +0.958589466516637120, 0.958603704896572980, 0.958617940879999740, 0.958632174466881540, 0.958646405657182950, 0.958660634450868350, 0.958674860847902320, 0.958689084848249000, +0.958703306451872960, 0.958717525658738580, 0.958731742468810430, 0.958745956882052890, 0.958760168898430520, 0.958774378517907700, 0.958788585740449120, 0.958802790566018910, +0.958816992994581780, 0.958831193026102090, 0.958845390660544420, 0.958859585897873230, 0.958873778738053130, 0.958887969181048790, 0.958902157226824370, 0.958916342875344440, +0.958930526126573700, 0.958944706980476620, 0.958958885437017900, 0.958973061496161790, 0.958987235157873210, 0.959001406422116620, 0.959015575288856390, 0.959029741758057110, +0.959043905829683570, 0.959058067503700260, 0.959072226780071760, 0.959086383658762640, 0.959100538139737610, 0.959114690222961470, 0.959128839908398370, 0.959142987196013210, +0.959157132085770580, 0.959171274577635070, 0.959185414671571370, 0.959199552367544170, 0.959213687665518290, 0.959227820565457970, 0.959241951067328120, 0.959256079171093350, +0.959270204876718440, 0.959284328184167980, 0.959298449093406670, 0.959312567604399310, 0.959326683717110720, 0.959340797431505240, 0.959354908747547700, 0.959369017665202880, +0.959383124184435610, 0.959397228305210460, 0.959411330027492240, 0.959425429351245970, 0.959439526276435810, 0.959453620803026870, 0.959467712930983870, 0.959481802660271610, +0.959495889990854890, 0.959509974922698410, 0.959524057455766970, 0.959538137590025710, 0.959552215325438770, 0.959566290661971300, 0.959580363599588090, 0.959594434138254070, +0.959608502277933930, 0.959622568018592470, 0.959636631360194610, 0.959650692302705390, 0.959664750846089270, 0.959678806990311270, 0.959692860735336220, 0.959706912081129020, +0.959720961027654470, 0.959735007574877620, 0.959749051722763480, 0.959763093471276530, 0.959777132820381680, 0.959791169770044080, 0.959805204320228640, 0.959819236470900060, +0.959833266222023470, 0.959847293573563690, 0.959861318525485950, 0.959875341077754630, 0.959889361230334970, 0.959903378983191890, 0.959917394336290420, 0.959931407289595360, +0.959945417843071860, 0.959959425996684820, 0.959973431750399400, 0.959987435104180160, 0.960001436057992490, 0.960015434611801060, 0.960029430765571120, 0.960043424519267500, +0.960057415872855420, 0.960071404826300050, 0.960085391379565940, 0.960099375532618260, 0.960113357285422240, 0.960127336637942700, 0.960141313590144870, 0.960155288141993800, +0.960169260293454510, 0.960183230044492350, 0.960197197395071810, 0.960211162345158240, 0.960225124894716900, 0.960239085043712580, 0.960253042792110660, 0.960266998139876040, +0.960280951086974310, 0.960294901633369840, 0.960308849779028200, 0.960322795523914310, 0.960336738867993530, 0.960350679811230900, 0.960364618353591550, 0.960378554495040730, +0.960392488235543680, 0.960406419575065120, 0.960420348513570610, 0.960434275051025190, 0.960448199187394100, 0.960462120922642490, 0.960476040256735610, 0.960489957189638590, +0.960503871721316900, 0.960517783851735360, 0.960531693580859320, 0.960545600908654040, 0.960559505835084760, 0.960573408360116730, 0.960587308483715210, 0.960601206205845660, +0.960615101526472780, 0.960628994445562270, 0.960642884963079150, 0.960656773078988890, 0.960670658793256640, 0.960684542105847750, 0.960698423016727590, 0.960712301525861510, +0.960726177633214550, 0.960740051338752070, 0.960753922642439420, 0.960767791544241970, 0.960781658044125080, 0.960795522142054100, 0.960809383837994300, 0.960823243131911250, +0.960837100023769760, 0.960850954513535640, 0.960864806601174130, 0.960878656286650590, 0.960892503569930390, 0.960906348450978890, 0.960920190929761890, 0.960934031006244080, +0.960947868680391170, 0.960961703952168620, 0.960975536821541800, 0.960989367288476170, 0.961003195352937100, 0.961017021014890060, 0.961030844274300630, 0.961044665131133960, +0.961058483585355620, 0.961072299636930970, 0.961086113285825610, 0.961099924532004990, 0.961113733375434600, 0.961127539816080120, 0.961141343853906480, 0.961155145488879480, +0.961168944720964700, 0.961182741550127510, 0.961196535976333480, 0.961210327999547980, 0.961224117619736810, 0.961237904836865550, 0.961251689650899350, 0.961265472061803790, +0.961279252069544680, 0.961293029674087360, 0.961306804875397440, 0.961320577673440590, 0.961334348068182300, 0.961348116059588360, 0.961361881647623820, 0.961375644832254680, +0.961389405613446320, 0.961403163991164540, 0.961416919965374820, 0.961430673536042830, 0.961444424703134290, 0.961458173466614550, 0.961471919826449420, 0.961485663782604360, +0.961499405335045190, 0.961513144483737480, 0.961526881228647050, 0.961540615569739240, 0.961554347506980210, 0.961568077040335090, 0.961581804169769790, 0.961595528895249910, +0.961609251216741230, 0.961622971134209470, 0.961636688647620310, 0.961650403756939330, 0.961664116462132570, 0.961677826763165380, 0.961691534660003570, 0.961705240152612940, +0.961718943240959190, 0.961732643925008120, 0.961746342204725320, 0.961760038080077040, 0.961773731551028410, 0.961787422617545350, 0.961801111279593890, 0.961814797537139500, +0.961828481390148200, 0.961842162838585700, 0.961855841882417790, 0.961869518521610510, 0.961883192756129210, 0.961896864585939810, 0.961910534011008340, 0.961924201031300610, +0.961937865646782300, 0.961951527857419330, 0.961965187663177850, 0.961978845064022980, 0.961992500059921210, 0.962006152650838110, 0.962019802836739600, 0.962033450617591600, +0.962047095993359910, 0.962060738964010560, 0.962074379529509580, 0.962088017689822440, 0.962101653444915160, 0.962115286794753890, 0.962128917739304310, 0.962142546278532460, +0.962156172412404250, 0.962169796140885600, 0.962183417463942650, 0.962197036381540970, 0.962210652893646710, 0.962224267000225900, 0.962237878701244220, 0.962251487996668040, +0.962265094886463060, 0.962278699370595510, 0.962292301449031110, 0.962305901121735860, 0.962319498388675920, 0.962333093249817200, 0.962346685705125720, 0.962360275754567510, +0.962373863398108710, 0.962387448635715460, 0.962401031467353230, 0.962414611892988600, 0.962428189912587270, 0.962441765526115600, 0.962455338733539500, 0.962468909534825000, +0.962482477929938460, 0.962496043918845580, 0.962509607501512490, 0.962523168677905440, 0.962536727447990460, 0.962550283811733580, 0.962563837769101040, 0.962577389320058980, +0.962590938464573660, 0.962604485202610660, 0.962618029534136550, 0.962631571459117370, 0.962645110977519150, 0.962658648089308230, 0.962672182794450770, 0.962685715092912670, +0.962699244984660640, 0.962712772469660250, 0.962726297547877970, 0.962739820219279840, 0.962753340483832210, 0.962766858341501330, 0.962780373792253120, 0.962793886836054380, +0.962807397472870590, 0.962820905702668320, 0.962834411525413820, 0.962847914941073250, 0.962861415949612940, 0.962874914550999050, 0.962888410745197820, 0.962901904532175950, +0.962915395911899010, 0.962928884884333480, 0.962942371449445830, 0.962955855607202320, 0.962969337357569070, 0.962982816700512450, 0.962996293635998920, 0.963009768163994750, +0.963023240284466060, 0.963036709997379110, 0.963050177302700480, 0.963063642200396420, 0.963077104690433280, 0.963090564772777320, 0.963104022447395240, 0.963117477714252820, +0.963130930573316670, 0.963144381024553240, 0.963157829067928910, 0.963171274703409910, 0.963184717930962830, 0.963198158750553810, 0.963211597162149770, 0.963225033165716390, +0.963238466761220490, 0.963251897948628420, 0.963265326727906660, 0.963278753099021560, 0.963292177061939480, 0.963305598616627230, 0.963319017763050840, 0.963332434501176890, +0.963345848830971740, 0.963359260752402080, 0.963372670265434160, 0.963386077370034680, 0.963399482066169990, 0.963412884353806790, 0.963426284232911100, 0.963439681703449740, +0.963453076765389270, 0.963466469418695960, 0.963479859663336600, 0.963493247499277450, 0.963506632926485310, 0.963520015944926760, 0.963533396554567930, 0.963546774755375650, +0.963560150547316470, 0.963573523930356890, 0.963586894904463480, 0.963600263469602810, 0.963613629625741710, 0.963626993372846300, 0.963640354710883380, 0.963653713639819660, +0.963667070159621610, 0.963680424270255910, 0.963693775971689150, 0.963707125263887910, 0.963720472146819110, 0.963733816620448990, 0.963747158684744250, 0.963760498339671590, +0.963773835585197690, 0.963787170421289250, 0.963800502847912850, 0.963813832865035190, 0.963827160472623180, 0.963840485670642950, 0.963853808459061660, 0.963867128837845750, +0.963880446806962050, 0.963893762366377250, 0.963907075516058030, 0.963920386255971320, 0.963933694586083470, 0.963947000506361400, 0.963960304016771800, 0.963973605117281360, +0.963986903807857010, 0.964000200088465430, 0.964013493959073210, 0.964026785419647590, 0.964040074470154720, 0.964053361110561720, 0.964066645340835300, 0.964079927160942260, +0.964093206570849400, 0.964106483570523530, 0.964119758159931670, 0.964133030339040300, 0.964146300107816210, 0.964159567466226440, 0.964172832414237680, 0.964186094951816840, +0.964199355078930840, 0.964212612795546380, 0.964225868101630690, 0.964239120997150030, 0.964252371482071660, 0.964265619556362360, 0.964278865219988960, 0.964292108472918350, +0.964305349315117470, 0.964318587746553320, 0.964331823767192840, 0.964345057377002600, 0.964358288575949740, 0.964371517364001170, 0.964384743741123710, 0.964397967707284480, +0.964411189262450290, 0.964424408406588380, 0.964437625139665240, 0.964450839461648000, 0.964464051372503680, 0.964477260872199200, 0.964490467960701700, 0.964503672637977870, +0.964516874903994960, 0.964530074758719990, 0.964543272202119660, 0.964556467234161220, 0.964569659854811470, 0.964582850064037660, 0.964596037861806700, 0.964609223248085730, +0.964622406222841570, 0.964635586786041670, 0.964648764937652610, 0.964661940677641660, 0.964675114005975830, 0.964688284922622150, 0.964701453427547870, 0.964714619520719910, +0.964727783202105620, 0.964740944471671580, 0.964754103329385270, 0.964767259775213600, 0.964780413809123940, 0.964793565431083080, 0.964806714641058380, 0.964819861439016990, +0.964833005824926040, 0.964846147798752440, 0.964859287360463340, 0.964872424510026190, 0.964885559247407820, 0.964898691572575680, 0.964911821485496700, 0.964924948986138450, +0.964938074074467630, 0.964951196750451600, 0.964964317014057600, 0.964977434865252780, 0.964990550304004380, 0.965003663330279650, 0.965016773944045610, 0.965029882145270080, +0.965042987933919520, 0.965056091309961390, 0.965069192273363190, 0.965082290824091920, 0.965095386962114940, 0.965108480687399520, 0.965121571999912890, 0.965134660899622520, +0.965147747386495230, 0.965160831460498690, 0.965173913121599950, 0.965186992369766570, 0.965200069204965590, 0.965213143627164480, 0.965226215636330710, 0.965239285232431300, +0.965252352415433500, 0.965265417185304900, 0.965278479542012850, 0.965291539485524490, 0.965304597015807290, 0.965317652132828610, 0.965330704836556030, 0.965343755126956470, +0.965356803003997510, 0.965369848467646510, 0.965382891517870930, 0.965395932154638150, 0.965408970377915510, 0.965422006187670380, 0.965435039583870560, 0.965448070566482850, +0.965461099135475060, 0.965474125290814440, 0.965487149032468460, 0.965500170360404700, 0.965513189274590510, 0.965526205774993600, 0.965539219861580870, 0.965552231534320130, +0.965565240793178740, 0.965578247638124280, 0.965591252069124220, 0.965604254086146140, 0.965617253689157300, 0.965630250878125600, 0.965643245653017960, 0.965656238013802290, +0.965669227960445960, 0.965682215492916660, 0.965695200611181750, 0.965708183315208910, 0.965721163604965740, 0.965734141480419470, 0.965747116941537920, 0.965760089988288440, +0.965773060620638830, 0.965786028838556580, 0.965798994642009250, 0.965811958030964420, 0.965824919005389910, 0.965837877565252860, 0.965850833710521160, 0.965863787441162300, +0.965876738757144080, 0.965889687658433970, 0.965902634144999660, 0.965915578216808730, 0.965928519873828990, 0.965941459116027910, 0.965954395943373070, 0.965967330355832270, +0.965980262353373090, 0.965993191935963340, 0.966006119103570590, 0.966019043856162770, 0.966031966193707130, 0.966044886116171450, 0.966057803623523670, 0.966070718715731360, +0.966083631392762320, 0.966096541654584140, 0.966109449501164620, 0.966122354932471670, 0.966135257948472550, 0.966148158549135380, 0.966161056734427870, 0.966173952504317590, +0.966186845858772460, 0.966199736797760280, 0.966212625321248960, 0.966225511429205760, 0.966238395121598930, 0.966251276398396030, 0.966264155259564880, 0.966277031705073400, +0.966289905734889380, 0.966302777348980620, 0.966315646547315050, 0.966328513329860140, 0.966341377696584010, 0.966354239647454480, 0.966367099182439240, 0.966379956301506300, +0.966392811004623490, 0.966405663291758590, 0.966418513162879740, 0.966431360617954540, 0.966444205656950770, 0.966457048279836580, 0.966469888486579780, 0.966482726277148150, +0.966495561651509850, 0.966508394609632780, 0.966521225151484530, 0.966534053277033230, 0.966546878986246690, 0.966559702279093050, 0.966572523155540210, 0.966585341615555980, +0.966598157659108390, 0.966610971286165690, 0.966623782496695230, 0.966636591290665370, 0.966649397668044030, 0.966662201628799230, 0.966675003172898890, 0.966687802300311150, +0.966700599011003800, 0.966713393304945210, 0.966726185182102850, 0.966738974642445070, 0.966751761685939790, 0.966764546312555260, 0.966777328522259280, 0.966790108315019990, +0.966802885690805640, 0.966815660649583800, 0.966828433191322830, 0.966841203315990880, 0.966853971023555860, 0.966866736313985900, 0.966879499187249030, 0.966892259643313490, +0.966905017682147540, 0.966917773303718860, 0.966930526507995710, 0.966943277294946220, 0.966956025664538530, 0.966968771616740770, 0.966981515151521090, 0.966994256268847830, +0.967006994968688800, 0.967019731251012150, 0.967032465115786220, 0.967045196562979160, 0.967057925592559100, 0.967070652204494290, 0.967083376398752750, 0.967096098175303060, +0.967108817534112820, 0.967121534475150590, 0.967134248998384520, 0.967146961103782840, 0.967159670791313710, 0.967172378060945470, 0.967185082912646270, 0.967197785346384560, +0.967210485362128170, 0.967223182959845550, 0.967235878139504960, 0.967248570901074740, 0.967261261244523050, 0.967273949169818240, 0.967286634676928770, 0.967299317765822450, +0.967311998436467870, 0.967324676688833260, 0.967337352522887000, 0.967350025938597420, 0.967362696935932690, 0.967375365514861250, 0.967388031675351590, 0.967400695417371610, +0.967413356740889910, 0.967426015645874830, 0.967438672132294730, 0.967451326200117980, 0.967463977849312820, 0.967476627079847830, 0.967489273891691370, 0.967501918284811580, +0.967514560259176930, 0.967527199814755990, 0.967539836951516910, 0.967552471669428370, 0.967565103968458630, 0.967577733848576260, 0.967590361309749400, 0.967602986351946640, +0.967615608975136430, 0.967628229179287150, 0.967640846964367360, 0.967653462330345440, 0.967666075277189730, 0.967678685804869270, 0.967691293913351740, 0.967703899602605940, +0.967716502872600470, 0.967729103723303790, 0.967741702154684250, 0.967754298166710550, 0.967766891759351270, 0.967779482932574540, 0.967792071686349060, 0.967804658020643420, +0.967817241935426180, 0.967829823430665810, 0.967842402506330910, 0.967854979162389940, 0.967867553398811810, 0.967880125215564550, 0.967892694612616960, 0.967905261589937730, +0.967917826147495220, 0.967930388285258240, 0.967942948003195250, 0.967955505301274830, 0.967968060179465910, 0.967980612637736600, 0.967993162676055840, 0.968005710294392090, +0.968018255492714140, 0.968030798270990480, 0.968043338629189900, 0.968055876567281090, 0.968068412085232530, 0.968080945183012800, 0.968093475860590800, 0.968106004117935020, +0.968118529955014240, 0.968131053371797170, 0.968143574368252490, 0.968156092944349010, 0.968168609100055200, 0.968181122835339750, 0.968193634150171570, 0.968206143044519240, +0.968218649518351680, 0.968231153571637360, 0.968243655204345190, 0.968256154416444190, 0.968268651207902510, 0.968281145578689160, 0.968293637528772950, 0.968306127058122690, +0.968318614166707170, 0.968331098854495090, 0.968343581121455350, 0.968356060967556550, 0.968368538392767600, 0.968381013397057290, 0.968393485980394430, 0.968405956142747940, +0.968418423884086500, 0.968430889204378920, 0.968443352103594450, 0.968455812581701330, 0.968468270638668690, 0.968480726274465460, 0.968493179489060330, 0.968505630282422200, +0.968518078654520000, 0.968530524605322960, 0.968542968134799230, 0.968555409242918160, 0.968567847929648560, 0.968580284194959340, 0.968592718038819410, 0.968605149461197690, +0.968617578462063090, 0.968630005041384750, 0.968642429199131240, 0.968654850935271590, 0.968667270249774840, 0.968679687142609880, 0.968692101613745750, 0.968704513663151360, +0.968716923290795620, 0.968729330496647890, 0.968741735280676530, 0.968754137642850900, 0.968766537583139910, 0.968778935101512580, 0.968791330197937840, 0.968803722872384920, +0.968816113124822740, 0.968828500955220220, 0.968840886363546370, 0.968853269349770230, 0.968865649913861040, 0.968878028055787710, 0.968890403775519270, 0.968902777073024860, +0.968915147948273600, 0.968927516401234420, 0.968939882431876340, 0.968952246040168610, 0.968964607226080240, 0.968976965989580390, 0.968989322330638060, 0.969001676249222510, +0.969014027745302870, 0.969026376818848070, 0.969038723469827220, 0.969051067698209700, 0.969063409503964410, 0.969075748887060610, 0.969088085847467420, 0.969100420385154200, +0.969112752500089770, 0.969125082192243470, 0.969137409461584440, 0.969149734308081930, 0.969162056731705080, 0.969174376732423020, 0.969186694310205100, 0.969199009465020580, +0.969211322196838370, 0.969223632505627820, 0.969235940391358190, 0.969248245853998820, 0.969260548893518650, 0.969272849509887240, 0.969285147703073950, 0.969297443473047470, +0.969309736819777390, 0.969322027743233060, 0.969334316243383620, 0.969346602320198310, 0.969358885973646610, 0.969371167203697650, 0.969383446010321000, 0.969395722393485480, +0.969407996353160660, 0.969420267889315900, 0.969432537001920450, 0.969444803690943660, 0.969457067956354780, 0.969469329798123390, 0.969481589216218740, 0.969493846210609970, +0.969506100781266640, 0.969518352928157910, 0.969530602651253460, 0.969542849950522420, 0.969555094825934270, 0.969567337277458590, 0.969579577305064280, 0.969591814908721150, +0.969604050088398450, 0.969616282844065650, 0.969628513175692100, 0.969640741083247270, 0.969652966566700520, 0.969665189626021660, 0.969677410261179600, 0.969689628472144020, +0.969701844258884280, 0.969714057621370080, 0.969726268559570670, 0.969738477073455510, 0.969750683162994510, 0.969762886828156480, 0.969775088068911330, 0.969787286885228420, +0.969799483277077210, 0.969811677244427410, 0.969823868787248360, 0.969836057905509640, 0.969848244599180950, 0.969860428868231540, 0.969872610712630980, 0.969884790132348850, +0.969896967127354850, 0.969909141697618440, 0.969921313843109090, 0.969933483563796490, 0.969945650859650340, 0.969957815730639990, 0.969969978176735030, 0.969982138197905130, +0.969994295794119780, 0.970006450965348770, 0.970018603711561680, 0.970030754032728320, 0.970042901928817700, 0.970055047399799970, 0.970067190445644600, 0.970079331066321160, +0.970091469261799570, 0.970103605032049180, 0.970115738377039790, 0.970127869296741220, 0.970139997791122920, 0.970152123860154480, 0.970164247503805810, 0.970176368722046490, +0.970188487514846210, 0.970200603882174770, 0.970212717824001760, 0.970224829340297190, 0.970236938431030430, 0.970249045096171270, 0.970261149335689410, 0.970273251149554760, +0.970285350537737010, 0.970297447500205750, 0.970309542036931210, 0.970321634147882640, 0.970333723833029850, 0.970345811092342860, 0.970357895925791250, 0.970369978333344930, +0.970382058314973710, 0.970394135870647380, 0.970406211000335750, 0.970418283704008510, 0.970430353981635570, 0.970442421833186740, 0.970454487258631810, 0.970466550257940710, +0.970478610831083220, 0.970490668978029380, 0.970502724698748650, 0.970514777993211180, 0.970526828861386750, 0.970538877303245170, 0.970550923318756480, 0.970562966907890460, +0.970575008070617030, 0.970587046806906220, 0.970599083116727710, 0.970611117000051430, 0.970623148456847270, 0.970635177487085390, 0.970647204090735460, 0.970659228267767630, +0.970671250018151580, 0.970683269341857780, 0.970695286238855480, 0.970707300709114930, 0.970719312752606260, 0.970731322369299270, 0.970743329559163870, 0.970755334322170200, +0.970767336658288520, 0.970779336567488160, 0.970791334049739500, 0.970803329105012550, 0.970815321733277230, 0.970827311934503560, 0.970839299708661670, 0.970851285055721490, +0.970863267975653370, 0.970875248468426880, 0.970887226534012160, 0.970899202172379460, 0.970911175383498690, 0.970923146167340100, 0.970935114523873600, 0.970947080453069210, +0.970959043954897410, 0.970971005029327760, 0.970982963676330630, 0.970994919895876160, 0.971006873687934260, 0.971018825052475280, 0.971030773989469130, 0.971042720498886400, +0.971054664580696560, 0.971066606234870070, 0.971078545461377060, 0.971090482260187680, 0.971102416631272170, 0.971114348574600550, 0.971126278090143070, 0.971138205177870080, +0.971150129837751400, 0.971162052069757360, 0.971173971873858230, 0.971185889250024140, 0.971197804198225320, 0.971209716718432040, 0.971221626810614640, 0.971233534474743030, +0.971245439710787470, 0.971257342518718430, 0.971269242898506020, 0.971281140850120410, 0.971293036373532040, 0.971304929468711050, 0.971316820135627920, 0.971328708374252560, +0.971340594184555430, 0.971352477566506780, 0.971364358520076960, 0.971376237045236230, 0.971388113141954950, 0.971399986810203340, 0.971411858049952000, 0.971423726861170730, +0.971435593243830220, 0.971447457197900710, 0.971459318723352560, 0.971471177820156130, 0.971483034488281770, 0.971494888727700070, 0.971506740538380820, 0.971518589920294830, +0.971530436873412230, 0.971542281397703710, 0.971554123493139300, 0.971565963159689680, 0.971577800397325220, 0.971589635206016380, 0.971601467585733290, 0.971613297536446430, +0.971625125058126480, 0.971636950150743580, 0.971648772814268420, 0.971660593048671250, 0.971672410853922640, 0.971684226229993180, 0.971696039176852990, 0.971707849694472660, +0.971719657782822770, 0.971731463441873670, 0.971743266671595940, 0.971755067471959940, 0.971766865842936590, 0.971778661784495900, 0.971790455296608460, 0.971802246379244950, +0.971814035032375840, 0.971825821255971610, 0.971837605050002720, 0.971849386414439960, 0.971861165349253930, 0.971872941854414750, 0.971884715929893230, 0.971896487575659940, +0.971908256791685350, 0.971920023577940160, 0.971931787934394940, 0.971943549861020380, 0.971955309357786850, 0.971967066424665020, 0.971978821061625480, 0.971990573268638910, +0.972002323045675910, 0.972014070392707040, 0.972025815309703110, 0.972037557796634810, 0.972049297853472380, 0.972061035480186630, 0.972072770676748470, 0.972084503443128240, +0.972096233779296770, 0.972107961685224730, 0.972119687160882820, 0.972131410206241940, 0.972143130821272240, 0.972154849005944730, 0.972166564760230110, 0.972178278084099070, +0.972189988977522400, 0.972201697440470690, 0.972213403472914960, 0.972225107074825570, 0.972236808246173310, 0.972248506986929110, 0.972260203297063530, 0.972271897176547610, +0.972283588625351800, 0.972295277643447140, 0.972306964230804430, 0.972318648387394120, 0.972330330113187150, 0.972342009408154410, 0.972353686272266590, 0.972365360705494510, +0.972377032707809170, 0.972388702279181170, 0.972400369419581630, 0.972412034128980920, 0.972423696407350160, 0.972435356254660150, 0.972447013670881820, 0.972458668655985850, +0.972470321209943260, 0.972481971332725070, 0.972493619024301760, 0.972505264284644460, 0.972516907113723960, 0.972528547511511080, 0.972540185477976940, 0.972551821013092340, +0.972563454116828210, 0.972575084789155550, 0.972586713030045070, 0.972598338839467670, 0.972609962217394600, 0.972621583163796540, 0.972633201678644530, 0.972644817761909470, +0.972656431413562620, 0.972668042633574540, 0.972679651421916260, 0.972691257778558920, 0.972702861703473310, 0.972714463196630690, 0.972726062258001840, 0.972737658887557810, +0.972749253085269940, 0.972760844851108700, 0.972772434185045330, 0.972784021087050870, 0.972795605557096320, 0.972807187595152830, 0.972818767201191310, 0.972830344375182900, +0.972841919117098830, 0.972853491426909800, 0.972865061304586940, 0.972876628750101500, 0.972888193763424500, 0.972899756344526970, 0.972911316493380140, 0.972922874209955160, +0.972934429494222710, 0.972945982346154260, 0.972957532765720940, 0.972969080752893680, 0.972980626307643700, 0.972992169429942270, 0.973003710119760280, 0.973015248377069320, +0.973026784201839970, 0.973038317594043690, 0.973049848553651620, 0.973061377080635000, 0.973072903174964860, 0.973084426836612450, 0.973095948065549000, 0.973107466861745870, +0.973118983225173870, 0.973130497155804460, 0.973142008653608670, 0.973153517718557960, 0.973165024350623460, 0.973176528549776430, 0.973188030315988220, 0.973199529649229730, +0.973211026549472450, 0.973222521016687600, 0.973234013050846450, 0.973245502651920340, 0.973256989819880400, 0.973268474554697890, 0.973279956856344500, 0.973291436724791010, +0.973302914160008910, 0.973314389161969550, 0.973325861730644280, 0.973337331866004240, 0.973348799568020890, 0.973360264836665820, 0.973371727671909830, 0.973383188073724480, +0.973394646042081260, 0.973406101576951290, 0.973417554678306150, 0.973429005346117200, 0.973440453580355580, 0.973451899380993190, 0.973463342748000730, 0.973474783681349990, +0.973486222181012220, 0.973497658246958890, 0.973509091879161460, 0.973520523077591290, 0.973531951842219860, 0.973543378173018730, 0.973554802069958920, 0.973566223533012030, +0.973577642562149740, 0.973589059157343280, 0.973600473318564140, 0.973611885045783780, 0.973623294338973990, 0.973634701198105800, 0.973646105623150790, 0.973657507614080540, +0.973668907170866520, 0.973680304293480180, 0.973691698981893120, 0.973703091236076790, 0.973714481056003000, 0.973725868441642770, 0.973737253392967790, 0.973748635909949760, +0.973760015992560120, 0.973771393640770480, 0.973782768854552390, 0.973794141633877450, 0.973805511978717010, 0.973816879889042860, 0.973828245364826480, 0.973839608406039450, +0.973850969012653440, 0.973862327184639940, 0.973873682921970630, 0.973885036224617420, 0.973896387092551330, 0.973907735525744280, 0.973919081524167840, 0.973930425087793820, +0.973941766216593670, 0.973953104910539100, 0.973964441169601790, 0.973975774993753540, 0.973987106382965710, 0.973998435337210090, 0.974009761856458380, 0.974021085940682260, +0.974032407589853430, 0.974043726803943580, 0.974055043582924610, 0.974066357926767770, 0.974077669835445080, 0.974088979308928240, 0.974100286347189040, 0.974111590950198950, +0.974122893117929990, 0.974134192850353740, 0.974145490147442230, 0.974156785009166910, 0.974168077435499490, 0.974179367426411870, 0.974190654981875850, 0.974201940101863230, +0.974213222786345810, 0.974224503035295290, 0.974235780848683670, 0.974247056226482440, 0.974258329168663510, 0.974269599675198770, 0.974280867746060040, 0.974292133381219230, +0.974303396580648020, 0.974314657344318550, 0.974325915672202170, 0.974337171564271020, 0.974348425020496900, 0.974359676040851830, 0.974370924625307500, 0.974382170773835930, +0.974393414486408820, 0.974404655762998400, 0.974415894603576250, 0.974427131008114290, 0.974438364976584430, 0.974449596508958790, 0.974460825605209080, 0.974472052265307310, +0.974483276489225610, 0.974494498276935570, 0.974505717628409210, 0.974516934543618650, 0.974528149022535710, 0.974539361065132390, 0.974550570671380620, 0.974561777841252530, +0.974572982574720030, 0.974584184871755020, 0.974595384732329540, 0.974606582156415490, 0.974617777143985120, 0.974628969695010230, 0.974640159809462950, 0.974651347487315300, +0.974662532728539420, 0.974673715533107000, 0.974684895900990280, 0.974696073832161390, 0.974707249326592250, 0.974718422384255100, 0.974729593005121740, 0.974740761189164750, +0.974751926936355590, 0.974763090246666520, 0.974774251120069880, 0.974785409556537470, 0.974796565556041660, 0.974807719118554350, 0.974818870244047790, 0.974830018932494210, +0.974841165183865430, 0.974852308998133800, 0.974863450375271330, 0.974874589315250170, 0.974885725818042560, 0.974896859883620740, 0.974907991511956730, 0.974919120703022890, +0.974930247456791020, 0.974941371773233590, 0.974952493652322730, 0.974963613094030680, 0.974974730098329470, 0.974985844665191560, 0.974996956794589200, 0.975008066486494180, +0.975019173740879100, 0.975030278557716070, 0.975041380936977230, 0.975052480878635050, 0.975063578382661670, 0.975074673449029320, 0.975085766077710470, 0.975096856268677040, +0.975107944021901480, 0.975119029337355950, 0.975130112215013000, 0.975141192654844670, 0.975152270656823420, 0.975163346220921600, 0.975174419347111240, 0.975185490035364920, +0.975196558285654770, 0.975207624097953360, 0.975218687472232730, 0.975229748408465550, 0.975240806906623850, 0.975251862966680430, 0.975262916588607090, 0.975273967772376520, +0.975285016517960960, 0.975296062825332880, 0.975307106694464630, 0.975318148125328690, 0.975329187117897290, 0.975340223672143130, 0.975351257788038330, 0.975362289465555250, +0.975373318704666480, 0.975384345505344470, 0.975395369867561590, 0.975406391791290180, 0.975417411276503050, 0.975428428323172230, 0.975439442931270380, 0.975450455100769780, +0.975461464831643200, 0.975472472123862900, 0.975483476977401340, 0.975494479392231220, 0.975505479368324990, 0.975516476905654910, 0.975527472004193650, 0.975538464663913700, +0.975549454884787500, 0.975560442666787760, 0.975571428009886940, 0.975582410914057510, 0.975593391379272260, 0.975604369405503320, 0.975615344992723400, 0.975626318140905170, +0.975637288850021210, 0.975648257120043990, 0.975659222950946090, 0.975670186342700310, 0.975681147295278990, 0.975692105808654620, 0.975703061882800090, 0.975714015517687990, +0.975724966713290790, 0.975735915469581050, 0.975746861786531690, 0.975757805664115300, 0.975768747102304210, 0.975779686101071240, 0.975790622660389070, 0.975801556780230280, +0.975812488460567670, 0.975823417701373820, 0.975834344502621630, 0.975845268864283360, 0.975856190786331900, 0.975867110268740070, 0.975878027311480320, 0.975888941914525580, +0.975899854077848520, 0.975910763801421830, 0.975921671085218320, 0.975932575929210570, 0.975943478333371250, 0.975954378297673290, 0.975965275822089470, 0.975976170906592390, +0.975987063551154830, 0.975997953755749600, 0.976008841520349830, 0.976019726844927660, 0.976030609729456210, 0.976041490173908180, 0.976052368178256470, 0.976063243742473770, +0.976074116866533000, 0.976084987550407180, 0.976095855794068660, 0.976106721597490570, 0.976117584960645600, 0.976128445883506670, 0.976139304366046570, 0.976150160408238320, +0.976161014010054620, 0.976171865171468590, 0.976182713892452700, 0.976193560172980090, 0.976204404013023440, 0.976215245412555890, 0.976226084371550230, 0.976236920889979260, +0.976247754967816020, 0.976258586605033620, 0.976269415801604650, 0.976280242557502010, 0.976291066872698840, 0.976301888747167950, 0.976312708180882340, 0.976323525173814930, +0.976334339725938970, 0.976345151837226920, 0.976355961507652030, 0.976366768737187200, 0.976377573525805560, 0.976388375873479820, 0.976399175780183200, 0.976409973245888740, +0.976420768270569450, 0.976431560854198020, 0.976442350996747700, 0.976453138698191610, 0.976463923958502570, 0.976474706777653690, 0.976485487155618110, 0.976496265092368980, +0.976507040587879070, 0.976517813642121420, 0.976528584255069390, 0.976539352426695760, 0.976550118156973790, 0.976560881445876610, 0.976571642293377120, 0.976582400699448790, +0.976593156664064210, 0.976603910187196830, 0.976614661268819570, 0.976625409908905670, 0.976636156107428270, 0.976646899864360480, 0.976657641179675460, 0.976668380053346550, +0.976679116485346440, 0.976689850475648600, 0.976700582024226050, 0.976711311131052140, 0.976722037796099900, 0.976732762019342560, 0.976743483800753490, 0.976754203140305590, +0.976764920037972110, 0.976775634493726400, 0.976786346507541480, 0.976797056079390820, 0.976807763209247450, 0.976818467897084710, 0.976829170142875960, 0.976839869946594110, +0.976850567308212630, 0.976861262227704750, 0.976871954705043620, 0.976882644740202700, 0.976893332333155010, 0.976904017483874340, 0.976914700192333400, 0.976925380458505630, +0.976936058282364520, 0.976946733663883180, 0.976957406603035090, 0.976968077099793390, 0.976978745154131520, 0.976989410766023080, 0.977000073935440750, 0.977010734662358330, +0.977021392946749060, 0.977032048788586400, 0.977042702187843500, 0.977053353144493930, 0.977064001658510930, 0.977074647729868070, 0.977085291358538500, 0.977095932544495670, +0.977106571287712940, 0.977117207588163780, 0.977127841445821650, 0.977138472860660020, 0.977149101832652240, 0.977159728361771560, 0.977170352447991550, 0.977180974091285790, +0.977191593291627410, 0.977202210048990110, 0.977212824363347330, 0.977223436234672450, 0.977234045662939250, 0.977244652648120660, 0.977255257190190460, 0.977265859289122130, +0.977276458944889130, 0.977287056157464920, 0.977297650926823190, 0.977308243252937300, 0.977318833135780940, 0.977329420575327350, 0.977340005571550210, 0.977350588124422990, +0.977361168233919390, 0.977371745900012860, 0.977382321122676980, 0.977392893901885440, 0.977403464237611490, 0.977414032129828800, 0.977424597578511190, 0.977435160583632000, +0.977445721145164930, 0.977456279263083540, 0.977466834937361420, 0.977477388167972470, 0.977487938954889830, 0.977498487298087300, 0.977509033197538570, 0.977519576653217310, +0.977530117665097120, 0.977540656233151560, 0.977551192357354550, 0.977561726037679430, 0.977572257274100020, 0.977582786066589880, 0.977593312415122820, 0.977603836319672510, +0.977614357780212550, 0.977624876796716720, 0.977635393369158830, 0.977645907497512350, 0.977656419181751060, 0.977666928421848770, 0.977677435217779170, 0.977687939569515940, +0.977698441477032780, 0.977708940940303580, 0.977719437959302270, 0.977729932534002200, 0.977740424664377160, 0.977750914350401180, 0.977761401592047830, 0.977771886389291020, +0.977782368742104560, 0.977792848650462230, 0.977803326114337730, 0.977813801133704860, 0.977824273708537420, 0.977834743838809420, 0.977845211524494440, 0.977855676765566510, +0.977866139561999410, 0.977876599913767080, 0.977887057820843060, 0.977897513283201400, 0.977907966300816000, 0.977918416873660660, 0.977928865001709280, 0.977939310684935780, +0.977949753923313960, 0.977960194716817940, 0.977970633065421200, 0.977981068969097980, 0.977991502427822070, 0.978001933441567380, 0.978012362010307830, 0.978022788134017330, +0.978033211812670110, 0.978043633046239760, 0.978054051834700180, 0.978064468178025610, 0.978074882076189760, 0.978085293529166730, 0.978095702536930460, 0.978106109099454950, +0.978116513216714440, 0.978126914888682310, 0.978137314115333000, 0.978147710896640320, 0.978158105232578400, 0.978168497123121260, 0.978178886568242810, 0.978189273567917410, +0.978199658122118620, 0.978210040230820590, 0.978220419893997550, 0.978230797111623530, 0.978241171883672320, 0.978251544210118400, 0.978261914090935440, 0.978272281526098020, +0.978282646515579610, 0.978293009059354570, 0.978303369157397130, 0.978313726809681090, 0.978324082016180930, 0.978334434776870430, 0.978344785091723850, 0.978355132960715520, +0.978365478383819260, 0.978375821361009200, 0.978386161892259580, 0.978396499977544630, 0.978406835616838390, 0.978417168810115090, 0.978427499557348980, 0.978437827858513960, +0.978448153713584400, 0.978458477122534420, 0.978468798085338260, 0.978479116601970180, 0.978489432672404290, 0.978499746296614740, 0.978510057474576090, 0.978520366206262040, +0.978530672491647050, 0.978540976330705470, 0.978551277723411440, 0.978561576669739200, 0.978571873169662990, 0.978582167223157050, 0.978592458830195970, 0.978602747990753530, +0.978613034704804210, 0.978623318972322350, 0.978633600793282210, 0.978643880167658020, 0.978654157095424030, 0.978664431576555030, 0.978674703611024600, 0.978684973198807540, +0.978695240339877980, 0.978705505034210280, 0.978715767281778890, 0.978726027082558070, 0.978736284436522160, 0.978746539343645750, 0.978756791803902740, 0.978767041817267810, +0.978777289383715220, 0.978787534503219540, 0.978797777175754890, 0.978808017401295860, 0.978818255179817020, 0.978828490511292280, 0.978838723395696330, 0.978848953833003520, +0.978859181823188430, 0.978869407366225300, 0.978879630462088700, 0.978889851110753000, 0.978900069312192870, 0.978910285066382340, 0.978920498373296200, 0.978930709232908700, +0.978940917645194530, 0.978951123610128040, 0.978961327127683690, 0.978971528197836060, 0.978981726820559730, 0.978991922995828930, 0.979002116723618370, 0.979012308003902490, +0.979022496836655880, 0.979032683221853000, 0.979042867159468420, 0.979053048649476840, 0.979063227691852500, 0.979073404286569970, 0.979083578433604050, 0.979093750132929100, +0.979103919384519910, 0.979114086188350830, 0.979124250544396450, 0.979134412452631770, 0.979144571913030840, 0.979154728925568430, 0.979164883490219240, 0.979175035606957840, +0.979185185275758820, 0.979195332496596850, 0.979205477269446620, 0.979215619594282830, 0.979225759471079700, 0.979235896899812270, 0.979246031880455110, 0.979256164412982910, +0.979266294497370240, 0.979276422133591900, 0.979286547321622570, 0.979296670061436720, 0.979306790353009270, 0.979316908196314780, 0.979327023591328060, 0.979337136538023790, +0.979347247036376660, 0.979357355086361350, 0.979367460687952880, 0.979377563841125620, 0.979387664545854350, 0.979397762802113990, 0.979407858609879220, 0.979417951969124840, +0.979428042879825540, 0.979438131341956340, 0.979448217355491590, 0.979458300920406310, 0.979468382036675300, 0.979478460704273360, 0.979488536923175170, 0.979498610693355750, +0.979508682014789690, 0.979518750887452220, 0.979528817311317580, 0.979538881286361020, 0.979548942812557220, 0.979559001889880990, 0.979569058518307330, 0.979579112697810950, +0.979589164428366850, 0.979599213709950070, 0.979609260542534940, 0.979619304926096720, 0.979629346860610320, 0.979639386346050410, 0.979649423382392140, 0.979659457969610290, +0.979669490107680010, 0.979679519796575750, 0.979689547036272760, 0.979699571826745830, 0.979709594167969990, 0.979719614059920140, 0.979729631502571310, 0.979739646495898400, +0.979749659039876540, 0.979759669134480320, 0.979769676779684960, 0.979779681975465500, 0.979789684721796730, 0.979799685018653780, 0.979809682866011560, 0.979819678263845310, +0.979829671212129830, 0.979839661710840030, 0.979849649759951150, 0.979859635359438100, 0.979869618509276010, 0.979879599209439790, 0.979889577459904680, 0.979899553260645710, +0.979909526611637660, 0.979919497512855900, 0.979929465964275330, 0.979939431965871190, 0.979949395517618390, 0.979959356619492070, 0.979969315271467360, 0.979979271473519600, +0.979989225225623480, 0.979999176527754260, 0.980009125379887160, 0.980019071781997210, 0.980029015734059540, 0.980038957236049390, 0.980048896287942010, 0.980058832889712180, +0.980068767041335280, 0.980078698742786520, 0.980088627994040950, 0.980098554795073800, 0.980108479145860300, 0.980118401046375600, 0.980128320496595040, 0.980138237496493540, +0.980148152046046440, 0.980158064145228990, 0.980167973794016320, 0.980177880992383790, 0.980187785740306520, 0.980197688037759750, 0.980207587884718960, 0.980217485281159040, +0.980227380227055470, 0.980237272722383370, 0.980247162767118100, 0.980257050361234890, 0.980266935504709110, 0.980276818197516110, 0.980286698439630900, 0.980296576231028950, +0.980306451571685610, 0.980316324461576130, 0.980326194900675850, 0.980336062888960020, 0.980345928426404110, 0.980355791512983470, 0.980365652148673220, 0.980375510333448830, +0.980385366067285660, 0.980395219350159050, 0.980405070182044480, 0.980414918562917180, 0.980424764492752730, 0.980434607971526260, 0.980444448999213240, 0.980454287575789120, +0.980464123701229260, 0.980473957375509020, 0.980483788598603970, 0.980493617370489460, 0.980503443691141060, 0.980513267560533810, 0.980523088978643490, 0.980532907945445450, +0.980542724460915060, 0.980552538525027880, 0.980562350137759390, 0.980572159299085030, 0.980581966008980400, 0.980591770267420730, 0.980601572074381590, 0.980611371429838560, +0.980621168333767110, 0.980630962786142700, 0.980640754786940900, 0.980650544336137410, 0.980660331433707340, 0.980670116079626510, 0.980679898273870370, 0.980689678016414380, +0.980699455307234350, 0.980709230146305620, 0.980719002533603780, 0.980728772469104610, 0.980738539952783370, 0.980748304984615740, 0.980758067564577400, 0.980767827692643810, +0.980777585368790780, 0.980787340592993660, 0.980797093365228250, 0.980806843685470330, 0.980816591553695050, 0.980826336969878310, 0.980836079933995690, 0.980845820446022980, +0.980855558505935640, 0.980865294113709370, 0.980875027269320080, 0.980884757972743100, 0.980894486223954140, 0.980904212022928990, 0.980913935369643330, 0.980923656264072850, +0.980933374706193240, 0.980943090695980180, 0.980952804233409580, 0.980962515318456680, 0.980972223951097620, 0.980981930131307970, 0.980991633859063520, 0.981001335134339850, +0.981011033957112980, 0.981020730327358700, 0.981030424245052380, 0.981040115710170020, 0.981049804722687320, 0.981059491282580080, 0.981069175389824190, 0.981078857044395350, +0.981088536246269350, 0.981098212995422210, 0.981107887291829410, 0.981117559135466830, 0.981127228526310290, 0.981136895464335800, 0.981146559949519050, 0.981156221981835830, +0.981165881561262050, 0.981175538687773850, 0.981185193361346570, 0.981194845581956240, 0.981204495349578880, 0.981214142664190270, 0.981223787525766330, 0.981233429934282860, +0.981243069889715990, 0.981252707392041290, 0.981262342441234890, 0.981271975037272480, 0.981281605180130300, 0.981291232869784040, 0.981300858106209710, 0.981310480889383220, +0.981320101219280700, 0.981329719095877740, 0.981339334519150450, 0.981348947489074860, 0.981358558005626990, 0.981368166068782630, 0.981377771678517810, 0.981387374834808650, +0.981396975537631170, 0.981406573786961170, 0.981416169582774670, 0.981425762925047680, 0.981435353813756460, 0.981444942248876680, 0.981454528230384590, 0.981464111758256430, +0.981473692832467770, 0.981483271452994850, 0.981492847619813810, 0.981502421332900670, 0.981511992592231320, 0.981521561397782130, 0.981531127749529000, 0.981540691647448280, +0.981550253091515560, 0.981559812081707280, 0.981569368617999370, 0.981578922700368170, 0.981588474328789600, 0.981598023503239880, 0.981607570223695160, 0.981617114490131450, +0.981626656302524990, 0.981636195660851810, 0.981645732565088140, 0.981655267015210220, 0.981664799011194080, 0.981674328553015840, 0.981683855640652080, 0.981693380274078490, +0.981702902453271410, 0.981712422178207090, 0.981721939448861770, 0.981731454265211580, 0.981740966627232760, 0.981750476534901440, 0.981759983988194200, 0.981769488987086710, +0.981778991531555680, 0.981788491621577000, 0.981797989257127130, 0.981807484438182330, 0.981816977164718830, 0.981826467436713090, 0.981835955254140910, 0.981845440616978870, +0.981854923525203320, 0.981864403978790380, 0.981873881977716410, 0.981883357521957770, 0.981892830611490690, 0.981902301246291740, 0.981911769426336840, 0.981921235151602570, +0.981930698422065260, 0.981940159237701060, 0.981949617598486530, 0.981959073504398040, 0.981968526955411810, 0.981977977951504430, 0.981987426492651920, 0.981996872578830840, +0.982006316210017550, 0.982015757386188510, 0.982025196107320090, 0.982034632373388620, 0.982044066184370790, 0.982053497540242630, 0.982062926440980700, 0.982072352886561470, +0.982081776876961410, 0.982091198412156750, 0.982100617492124290, 0.982110034116840170, 0.982119448286281170, 0.982128860000423320, 0.982138269259243410, 0.982147676062717800, +0.982157080410822950, 0.982166482303535430, 0.982175881740831700, 0.982185278722688460, 0.982194673249081830, 0.982204065319988610, 0.982213454935385140, 0.982222842095248020, +0.982232226799553800, 0.982241609048279060, 0.982250988841400270, 0.982260366178894120, 0.982269741060736950, 0.982279113486905440, 0.982288483457376180, 0.982297850972125630, +0.982307216031130470, 0.982316578634367280, 0.982325938781812620, 0.982335296473443310, 0.982344651709235570, 0.982354004489166210, 0.982363354813211910, 0.982372702681349130, +0.982382048093554670, 0.982391391049805000, 0.982400731550077120, 0.982410069594347180, 0.982419405182592080, 0.982428738314788390, 0.982438068990913020, 0.982447397210942320, +0.982456722974853200, 0.982466046282622240, 0.982475367134226450, 0.982484685529641970, 0.982494001468845800, 0.982503314951814530, 0.982512625978525070, 0.982521934548954090, +0.982531240663078180, 0.982540544320874450, 0.982549845522319050, 0.982559144267389110, 0.982568440556061300, 0.982577734388312420, 0.982587025764119160, 0.982596314683458430, +0.982605601146306800, 0.982614885152641390, 0.982624166702438570, 0.982633445795675350, 0.982642722432328530, 0.982651996612374900, 0.982661268335791260, 0.982670537602554410, +0.982679804412641240, 0.982689068766028790, 0.982698330662693520, 0.982707590102612330, 0.982716847085762240, 0.982726101612119930, 0.982735353681662430, 0.982744603294366530, +0.982753850450209350, 0.982763095149167380, 0.982772337391217610, 0.982781577176336960, 0.982790814504502450, 0.982800049375690880, 0.982809281789879140, 0.982818511747044270, +0.982827739247163270, 0.982836964290212720, 0.982846186876169760, 0.982855407005011390, 0.982864624676714540, 0.982873839891255980, 0.982883052648612980, 0.982892262948762200, +0.982901470791681000, 0.982910676177345950, 0.982919879105734200, 0.982929079576822740, 0.982938277590588600, 0.982947473147008810, 0.982956666246060370, 0.982965856887720310, +0.982975045071965540, 0.982984230798773060, 0.982993414068120130, 0.983002594879983540, 0.983011773234340520, 0.983020949131168110, 0.983030122570443200, 0.983039293552143260, +0.983048462076244860, 0.983057628142725350, 0.983066791751561750, 0.983075952902731200, 0.983085111596210700, 0.983094267831977510, 0.983103421610008740, 0.983112572930281310, +0.983121721792772460, 0.983130868197459210, 0.983140012144318900, 0.983149153633328550, 0.983158292664465190, 0.983167429237706280, 0.983176563353028830, 0.983185695010409870, +0.983194824209826620, 0.983203950951256340, 0.983213075234676160, 0.983222197060063310, 0.983231316427395030, 0.983240433336648350, 0.983249547787800830, 0.983258659780829270, +0.983267769315711030, 0.983276876392423340, 0.983285981010943550, 0.983295083171248700, 0.983304182873316220, 0.983313280117123380, 0.983322374902647290, 0.983331467229865200, +0.983340557098754340, 0.983349644509292190, 0.983358729461455970, 0.983367811955222940, 0.983376891990570320, 0.983385969567475590, 0.983395044685915760, 0.983404117345868410, +0.983413187547310770, 0.983422255290220090, 0.983431320574573830, 0.983440383400349230, 0.983449443767523750, 0.983458501676074740, 0.983467557125979330, 0.983476610117214990, +0.983485660649759170, 0.983494708723589240, 0.983503754338682530, 0.983512797495016410, 0.983521838192568440, 0.983530876431315650, 0.983539912211235820, 0.983548945532306100, +0.983557976394504040, 0.983567004797807010, 0.983576030742192580, 0.983585054227637980, 0.983594075254120900, 0.983603093821618480, 0.983612109930108390, 0.983621123579567990, +0.983630134769974740, 0.983639143501306210, 0.983648149773539760, 0.983657153586653180, 0.983666154940623480, 0.983675153835428470, 0.983684150271045500, 0.983693144247452130, +0.983702135764626060, 0.983711124822544520, 0.983720111421185210, 0.983729095560525680, 0.983738077240543410, 0.983747056461215850, 0.983756033222520700, 0.983765007524435410, +0.983773979366937670, 0.983782948750004940, 0.983791915673614790, 0.983800880137745140, 0.983809842142372990, 0.983818801687476370, 0.983827758773032630, 0.983836713399019570, +0.983845665565414640, 0.983854615272195640, 0.983863562519340260, 0.983872507306825740, 0.983881449634629980, 0.983890389502730670, 0.983899326911105270, 0.983908261859731570, +0.983917194348587270, 0.983926124377650040, 0.983935051946897570, 0.983943977056307320, 0.983952899705857090, 0.983961819895524670, 0.983970737625287750, 0.983979652895123900, +0.983988565705010920, 0.983997476054926600, 0.984006383944848630, 0.984015289374754690, 0.984024192344622460, 0.984033092854429750, 0.984041990904154230, 0.984050886493773810, +0.984059779623266180, 0.984068670292609250, 0.984077558501780470, 0.984086444250757750, 0.984095327539519000, 0.984104208368041910, 0.984113086736304380, 0.984121962644283980, +0.984130836091958730, 0.984139707079306540, 0.984148575606304980, 0.984157441672931950, 0.984166305279165380, 0.984175166424982930, 0.984184025110362630, 0.984192881335282270, +0.984201735099719870, 0.984210586403652890, 0.984219435247059570, 0.984228281629917600, 0.984237125552204880, 0.984245967013899440, 0.984254806014979060, 0.984263642555421540, +0.984272476635205230, 0.984281308254307490, 0.984290137412706550, 0.984298964110380200, 0.984307788347306480, 0.984316610123463280, 0.984325429438828500, 0.984334246293380180, +0.984343060687096430, 0.984351872619954940, 0.984360682091933610, 0.984369489103010700, 0.984378293653163980, 0.984387095742371600, 0.984395895370611450, 0.984404692537861670, +0.984413487244100050, 0.984422279489304720, 0.984431069273453700, 0.984439856596525000, 0.984448641458496640, 0.984457423859346650, 0.984466203799053140, 0.984474981277594360, +0.984483756294947890, 0.984492528851091950, 0.984501298946004800, 0.984510066579664330, 0.984518831752048800, 0.984527594463136090, 0.984536354712904460, 0.984545112501332030, +0.984553867828396710, 0.984562620694076740, 0.984571371098350130, 0.984580119041195130, 0.984588864522589870, 0.984597607542512470, 0.984606348100941160, 0.984615086197853870, +0.984623821833228830, 0.984632555007044160, 0.984641285719278230, 0.984650013969909030, 0.984658739758914820, 0.984667463086273730, 0.984676183951964210, 0.984684902355963950, +0.984693618298251530, 0.984702331778805060, 0.984711042797602690, 0.984719751354622750, 0.984728457449843500, 0.984737161083243160, 0.984745862254799760, 0.984754560964491770, +0.984763257212297400, 0.984771950998194810, 0.984780642322162450, 0.984789331184178440, 0.984798017584221030, 0.984806701522268790, 0.984815382998299630, 0.984824062012292000, +0.984832738564224260, 0.984841412654074650, 0.984850084281821530, 0.984858753447443110, 0.984867420150917880, 0.984876084392224290, 0.984884746171340250, 0.984893405488244330, +0.984902062342915000, 0.984910716735330480, 0.984919368665469140, 0.984928018133309440, 0.984936665138829710, 0.984945309682008330, 0.984953951762823520, 0.984962591381253970, +0.984971228537277920, 0.984979863230873720, 0.984988495462019940, 0.984997125230694830, 0.985005752536877170, 0.985014377380544870, 0.985022999761676730, 0.985031619680250990, +0.985040237136246330, 0.985048852129640990, 0.985057464660413550, 0.985066074728542460, 0.985074682334006300, 0.985083287476783200, 0.985091890156852060, 0.985100490374191120, +0.985109088128778840, 0.985117683420594030, 0.985126276249614910, 0.985134866615820280, 0.985143454519188280, 0.985152039959697690, 0.985160622937326980, 0.985169203452054720, +0.985177781503859480, 0.985186357092719730, 0.985194930218614150, 0.985203500881521420, 0.985212069081419670, 0.985220634818287810, 0.985229198092104410, 0.985237758902847930, +0.985246317250497160, 0.985254873135030460, 0.985263426556426850, 0.985271977514664440, 0.985280526009722160, 0.985289072041578560, 0.985297615610212230, 0.985306156715601840, +0.985314695357726090, 0.985323231536563650, 0.985331765252093210, 0.985340296504293220, 0.985348825293142490, 0.985357351618619810, 0.985365875480703650, 0.985374396879372780, +0.985382915814605910, 0.985391432286381820, 0.985399946294679310, 0.985408457839476730, 0.985416966920752980, 0.985425473538486860, 0.985433977692657060, 0.985442479383242250, +0.985450978610221350, 0.985459475373573150, 0.985467969673275990, 0.985476461509309010, 0.985484950881650890, 0.985493437790280310, 0.985501922235176190, 0.985510404216317190, +0.985518883733682240, 0.985527360787250230, 0.985535835376999740, 0.985544307502909560, 0.985552777164958590, 0.985561244363125750, 0.985569709097389830, 0.985578171367729630, +0.985586631174124040, 0.985595088516551860, 0.985603543394991900, 0.985611995809423050, 0.985620445759824220, 0.985628893246174310, 0.985637338268452120, 0.985645780826636560, +0.985654220920706760, 0.985662658550641280, 0.985671093716419140, 0.985679526418019260, 0.985687956655420530, 0.985696384428601970, 0.985704809737542380, 0.985713232582220880, +0.985721652962616270, 0.985730070878707560, 0.985738486330473560, 0.985746899317893390, 0.985755309840945950, 0.985763717899610260, 0.985772123493865230, 0.985780526623690090, +0.985788927289063420, 0.985797325489964460, 0.985805721226372220, 0.985814114498265730, 0.985822505305623880, 0.985830893648425690, 0.985839279526650400, 0.985847662940277040, +0.985856043889284270, 0.985864422373651460, 0.985872798393357620, 0.985881171948381760, 0.985889543038703020, 0.985897911664300410, 0.985906277825152940, 0.985914641521239980, +0.985923002752540300, 0.985931361519033040, 0.985939717820697450, 0.985948071657512530, 0.985956423029457410, 0.985964771936511220, 0.985973118378653310, 0.985981462355862370, +0.985989803868117850, 0.985998142915398890, 0.986006479497684380, 0.986014813614953800, 0.986023145267186150, 0.986031474454360680, 0.986039801176456620, 0.986048125433452990, +0.986056447225329040, 0.986064766552063880, 0.986073083413636860, 0.986081397810027130, 0.986089709741213900, 0.986098019207176550, 0.986106326207893960, 0.986114630743345600, +0.986122932813510600, 0.986131232418368310, 0.986139529557897960, 0.986147824232078810, 0.986156116440890070, 0.986164406184311230, 0.986172693462321170, 0.986180978274899370, +0.986189260622025170, 0.986197540503677690, 0.986205817919836520, 0.986214092870480790, 0.986222365355589710, 0.986230635375142990, 0.986238902929119420, 0.986247168017498680, +0.986255430640260000, 0.986263690797382740, 0.986271948488846250, 0.986280203714629990, 0.986288456474713190, 0.986296706769075220, 0.986304954597695400, 0.986313199960553330, +0.986321442857628130, 0.986329683288899360, 0.986337921254346380, 0.986346156753948660, 0.986354389787685640, 0.986362620355536460, 0.986370848457480800, 0.986379074093498010, +0.986387297263567440, 0.986395517967668780, 0.986403736205781260, 0.986411951977884340, 0.986420165283957710, 0.986428376123980600, 0.986436584497932480, 0.986444790405792920, +0.986452993847541370, 0.986461194823157310, 0.986469393332620400, 0.986477589375910010, 0.986485782953005490, 0.986493974063886610, 0.986502162708532750, 0.986510348886923460, +0.986518532599038320, 0.986526713844856910, 0.986534892624358670, 0.986543068937523300, 0.986551242784330150, 0.986559414164758900, 0.986567583078789110, 0.986575749526400370, +0.986583913507572240, 0.986592075022284300, 0.986600234070516340, 0.986608390652247700, 0.986616544767458080, 0.986624696416127040, 0.986632845598234280, 0.986640992313759460, +0.986649136562682050, 0.986657278344981850, 0.986665417660638640, 0.986673554509631680, 0.986681688891940860, 0.986689820807545860, 0.986697950256426260, 0.986706077238561740, +0.986714201753932100, 0.986722323802517010, 0.986730443384296160, 0.986738560499249020, 0.986746675147355590, 0.986754787328595450, 0.986762897042948280, 0.986771004290393880, +0.986779109070912040, 0.986787211384482550, 0.986795311231084770, 0.986803408610698820, 0.986811503523304380, 0.986819595968881140, 0.986827685947408880, 0.986835773458867420, +0.986843858503236530, 0.986851941080496230, 0.986860021190625770, 0.986868098833605380, 0.986876174009414740, 0.986884246718033540, 0.986892316959441910, 0.986900384733619300, +0.986908450040545840, 0.986916512880201440, 0.986924573252565550, 0.986932631157618200, 0.986940686595339290, 0.986948739565708720, 0.986956790068706180, 0.986964838104311790, +0.986972883672505350, 0.986980926773266650, 0.986988967406575600, 0.986997005572412100, 0.987005041270756170, 0.987013074501587600, 0.987021105264886290, 0.987029133560632270, +0.987037159388805540, 0.987045182749385690, 0.987053203642353050, 0.987061222067687320, 0.987069238025368500, 0.987077251515376620, 0.987085262537691580, 0.987093271092293610, +0.987101277179162180, 0.987109280798277640, 0.987117281949619900, 0.987125280633168960, 0.987133276848904840, 0.987141270596807560, 0.987149261876857030, 0.987157250689033480, +0.987165237033316710, 0.987173220909686840, 0.987181202318123900, 0.987189181258607880, 0.987197157731119050, 0.987205131735637290, 0.987213103272142620, 0.987221072340615400, +0.987229038941035310, 0.987237003073382690, 0.987244964737637560, 0.987252923933779950, 0.987260880661790070, 0.987268834921647960, 0.987276786713333960, 0.987284736036827870, +0.987292682892109920, 0.987300627279160240, 0.987308569197958950, 0.987316508648486300, 0.987324445630722300, 0.987332380144647300, 0.987340312190241430, 0.987348241767484590, +0.987356168876357240, 0.987364093516839400, 0.987372015688911420, 0.987379935392553310, 0.987387852627745420, 0.987395767394467880, 0.987403679692701040, 0.987411589522424800, +0.987419496883619740, 0.987427401776265870, 0.987435304200343420, 0.987443204155832750, 0.987451101642714100, 0.987458996660967810, 0.987466889210573910, 0.987474779291512840, +0.987482666903764740, 0.987490552047310070, 0.987498434722128950, 0.987506314928201730, 0.987514192665508660, 0.987522067934030410, 0.987529940733746780, 0.987537811064638230, +0.987545678926685210, 0.987553544319867970, 0.987561407244166970, 0.987569267699562330, 0.987577125686034730, 0.987584981203564080, 0.987592834252131070, 0.987600684831716040, +0.987608532942299110, 0.987616378583860980, 0.987624221756381870, 0.987632062459842250, 0.987639900694222580, 0.987647736459502990, 0.987655569755664150, 0.987663400582686310, +0.987671228940549930, 0.987679054829235570, 0.987686878248723480, 0.987694699198994220, 0.987702517680028480, 0.987710333691806160, 0.987718147234308060, 0.987725958307514530, +0.987733766911406240, 0.987741573045963440, 0.987749376711166690, 0.987757177906996690, 0.987764976633433540, 0.987772772890458060, 0.987780566678050590, 0.987788357996191690, +0.987796146844861830, 0.987803933224041700, 0.987811717133711740, 0.987819498573852540, 0.987827277544444550, 0.987835054045468340, 0.987842828076904490, 0.987850599638733560, +0.987858368730936130, 0.987866135353492770, 0.987873899506384270, 0.987881661189590750, 0.987889420403093240, 0.987897177146872090, 0.987904931420908070, 0.987912683225181660, +0.987920432559673540, 0.987928179424364280, 0.987935923819234780, 0.987943665744265400, 0.987951405199436690, 0.987959142184729580, 0.987966876700124620, 0.987974608745602500, +0.987982338321143790, 0.987990065426729290, 0.987997790062339680, 0.988005512227955520, 0.988013231923557500, 0.988020949149126530, 0.988028663904643060, 0.988036376190087990, +0.988044086005442020, 0.988051793350685940, 0.988059498225800190, 0.988067200630765810, 0.988074900565563350, 0.988082598030173620, 0.988090293024577400, 0.988097985548755500, +0.988105675602688580, 0.988113363186357670, 0.988121048299743230, 0.988128730942826050, 0.988136411115587140, 0.988144088818007190, 0.988151764050066990, 0.988159436811747450, +0.988167107103029240, 0.988174774923893380, 0.988182440274320560, 0.988190103154291570, 0.988197763563787300, 0.988205421502788670, 0.988213076971276470, 0.988220729969231600, +0.988228380496634970, 0.988236028553467260, 0.988243674139709590, 0.988251317255342650, 0.988258957900347350, 0.988266596074704800, 0.988274231778395680, 0.988281865011401030, +0.988289495773701730, 0.988297124065278700, 0.988304749886112830, 0.988312373236185040, 0.988319994115476330, 0.988327612523967610, 0.988335228461639900, 0.988342841928474210, +0.988350452924451340, 0.988358061449552410, 0.988365667503758210, 0.988373271087049870, 0.988380872199408290, 0.988388470840814600, 0.988396067011249710, 0.988403660710694850, +0.988411251939130600, 0.988418840696538290, 0.988426426982898840, 0.988434010798193370, 0.988441592142402790, 0.988449171015508330, 0.988456747417490900, 0.988464321348331730, +0.988471892808011620, 0.988479461796511800, 0.988487028313813300, 0.988494592359897230, 0.988502153934744720, 0.988509713038336790, 0.988517269670654790, 0.988524823831679390, +0.988532375521391950, 0.988539924739773590, 0.988547471486805440, 0.988555015762468510, 0.988562557566744160, 0.988570096899613280, 0.988577633761057450, 0.988585168151057350, +0.988592700069594210, 0.988600229516649500, 0.988607756492204110, 0.988615280996239410, 0.988622803028736400, 0.988630322589676420, 0.988637839679040840, 0.988645354296810440, +0.988652866442966680, 0.988660376117490800, 0.988667883320363930, 0.988675388051567290, 0.988682890311082250, 0.988690390098890150, 0.988697887414971890, 0.988705382259309040, +0.988712874631882620, 0.988720364532673980, 0.988727851961664460, 0.988735336918835310, 0.988742819404167860, 0.988750299417643470, 0.988757776959243160, 0.988765252028948490, +0.988772724626740600, 0.988780194752601040, 0.988787662406510840, 0.988795127588451560, 0.988802590298404560, 0.988810050536350960, 0.988817508302272220, 0.988824963596149800, +0.988832416417964930, 0.988839866767698970, 0.988847314645333380, 0.988854760050849490, 0.988862202984228780, 0.988869643445452470, 0.988877081434502150, 0.988884516951359040, +0.988891949996004600, 0.988899380568420310, 0.988906808668587600, 0.988914234296487840, 0.988921657452102700, 0.988929078135413200, 0.988936496346401020, 0.988943912085047620, +0.988951325351334450, 0.988958736145242880, 0.988966144466754570, 0.988973550315850990, 0.988980953692513490, 0.988988354596723520, 0.988995753028462650, 0.989003148987712350, +0.989010542474454300, 0.989017933488669840, 0.989025322030340550, 0.989032708099448100, 0.989040091695973730, 0.989047472819899130, 0.989054851471205860, 0.989062227649875500, +0.989069601355889510, 0.989076972589229550, 0.989084341349877110, 0.989091707637813950, 0.989099071453021450, 0.989106432795481270, 0.989113791665174990, 0.989121148062084180, +0.989128501986190620, 0.989135853437475680, 0.989143202415921350, 0.989150548921508780, 0.989157892954219850, 0.989165234514036260, 0.989172573600939580, 0.989179910214911360, +0.989187244355933410, 0.989194576023987420, 0.989201905219055040, 0.989209231941117870, 0.989216556190157580, 0.989223877966155850, 0.989231197269094480, 0.989238514098955020, +0.989245828455719400, 0.989253140339369290, 0.989260449749886140, 0.989267756687251980, 0.989275061151448360, 0.989282363142456990, 0.989289662660259860, 0.989296959704838550, +0.989304254276174850, 0.989311546374250560, 0.989318835999047350, 0.989326123150547020, 0.989333407828731360, 0.989340690033582270, 0.989347969765081440, 0.989355247023210650, +0.989362521807951700, 0.989369794119286610, 0.989377063957196930, 0.989384331321664590, 0.989391596212671360, 0.989398858630199160, 0.989406118574229890, 0.989413376044745220, +0.989420631041727280, 0.989427883565157650, 0.989435133615018340, 0.989442381191291130, 0.989449626293958050, 0.989456868923000890, 0.989464109078401430, 0.989471346760141810, +0.989478581968203930, 0.989485814702569470, 0.989493044963220550, 0.989500272750138850, 0.989507498063306620, 0.989514720902705540, 0.989521941268317720, 0.989529159160125070, +0.989536374578109610, 0.989543587522253130, 0.989550797992537650, 0.989558005988945060, 0.989565211511457600, 0.989572414560057070, 0.989579615134725480, 0.989586813235445060, +0.989594008862197390, 0.989601202014964710, 0.989608392693729130, 0.989615580898472460, 0.989622766629176920, 0.989629949885824420, 0.989637130668396980, 0.989644308976876940, +0.989651484811245870, 0.989658658171486240, 0.989665829057579940, 0.989672997469508990, 0.989680163407255620, 0.989687326870801740, 0.989694487860129810, 0.989701646375221400, +0.989708802416058960, 0.989715955982624520, 0.989723107074900190, 0.989730255692867990, 0.989737401836510270, 0.989744545505809040, 0.989751686700746540, 0.989758825421304670, +0.989765961667465780, 0.989773095439211990, 0.989780226736525440, 0.989787355559388240, 0.989794481907782740, 0.989801605781691070, 0.989808727181095470, 0.989815846105977950, +0.989822962556320740, 0.989830076532106200, 0.989837188033316440, 0.989844297059933710, 0.989851403611940240, 0.989858507689318490, 0.989865609292050250, 0.989872708420117990, +0.989879805073503930, 0.989886899252190310, 0.989893990956159600, 0.989901080185393800, 0.989908166939875380, 0.989915251219586570, 0.989922333024509600, 0.989929412354626730, +0.989936489209920280, 0.989943563590372720, 0.989950635495966180, 0.989957704926683110, 0.989964771882505870, 0.989971836363416570, 0.989978898369397790, 0.989985957900431650, +0.989993014956500610, 0.990000069537587010, 0.990007121643673330, 0.990014171274741780, 0.990021218430774950, 0.990028263111754960, 0.990035305317664260, 0.990042345048485320, +0.990049382304200590, 0.990056417084792310, 0.990063449390243040, 0.990070479220535150, 0.990077506575651190, 0.990084531455573290, 0.990091553860284130, 0.990098573789766070, +0.990105591244001550, 0.990112606222973040, 0.990119618726662990, 0.990126628755054080, 0.990133636308128450, 0.990140641385868770, 0.990147643988257390, 0.990154644115276980, +0.990161641766909910, 0.990168636943138840, 0.990175629643946010, 0.990182619869314330, 0.990189607619226030, 0.990196592893663690, 0.990203575692609750, 0.990210556016047020, +0.990217533863957830, 0.990224509236324770, 0.990231482133130500, 0.990238452554357610, 0.990245420499988540, 0.990252385970005870, 0.990259348964392160, 0.990266309483130100, +0.990273267526202370, 0.990280223093591430, 0.990287176185280060, 0.990294126801250620, 0.990301074941485780, 0.990308020605968340, 0.990314963794680870, 0.990321904507605930, +0.990328842744726210, 0.990335778506024500, 0.990342711791483370, 0.990349642601085380, 0.990356570934813220, 0.990363496792649680, 0.990370420174577440, 0.990377341080579070, +0.990384259510637350, 0.990391175464735210, 0.990398088942854860, 0.990404999944979440, 0.990411908471091400, 0.990418814521173640, 0.990425718095208850, 0.990432619193179710, +0.990439517815069110, 0.990446413960859750, 0.990453307630534300, 0.990460198824075540, 0.990467087541466400, 0.990473973782689420, 0.990480857547727520, 0.990487738836563490, +0.990494617649180120, 0.990501493985560310, 0.990508367845686630, 0.990515239229542100, 0.990522108137109390, 0.990528974568371520, 0.990535838523311060, 0.990542700001911140, +0.990549559004154530, 0.990556415530023940, 0.990563269579502250, 0.990570121152572370, 0.990576970249217310, 0.990583816869419760, 0.990590661013162620, 0.990597502680428900, +0.990604341871201500, 0.990611178585463100, 0.990618012823196840, 0.990624844584385490, 0.990631673869011960, 0.990638500677059390, 0.990645325008510550, 0.990652146863348350, +0.990658966241555810, 0.990665783143115930, 0.990672597568011400, 0.990679409516225460, 0.990686218987741010, 0.990693025982541050, 0.990699830500608500, 0.990706632541926480, +0.990713432106477780, 0.990720229194245410, 0.990727023805212600, 0.990733815939362160, 0.990740605596677200, 0.990747392777140630, 0.990754177480735690, 0.990760959707445380, +0.990767739457252610, 0.990774516730140500, 0.990781291526091960, 0.990788063845090330, 0.990794833687118510, 0.990801601052159530, 0.990808365940196720, 0.990815128351212880, +0.990821888285191240, 0.990828645742114930, 0.990835400721966850, 0.990842153224730460, 0.990848903250388550, 0.990855650798924460, 0.990862395870321320, 0.990869138464562040, +0.990875878581629950, 0.990882616221508080, 0.990889351384179770, 0.990896084069628150, 0.990902814277836220, 0.990909542008787230, 0.990916267262464510, 0.990922990038851090, +0.990929710337930090, 0.990936428159684860, 0.990943143504098620, 0.990949856371154400, 0.990956566760835660, 0.990963274673125620, 0.990969980108007190, 0.990976683065463830, +0.990983383545478770, 0.990990081548035250, 0.990996777073116510, 0.991003470120705890, 0.991010160690786510, 0.991016848783341950, 0.991023534398355110, 0.991030217535809440, +0.991036898195688190, 0.991043576377974690, 0.991050252082652290, 0.991056925309704240, 0.991063596059113870, 0.991070264330864650, 0.991076930124939580, 0.991083593441322240, +0.991090254279995970, 0.991096912640944020, 0.991103568524149820, 0.991110221929596640, 0.991116872857268020, 0.991123521307147200, 0.991130167279217430, 0.991136810773462380, +0.991143451789865180, 0.991150090328409390, 0.991156726389078480, 0.991163359971855670, 0.991169991076724540, 0.991176619703668330, 0.991183245852670590, 0.991189869523714790, +0.991196490716784280, 0.991203109431862520, 0.991209725668933060, 0.991216339427979260, 0.991222950708984580, 0.991229559511932590, 0.991236165836806630, 0.991242769683590260, +0.991249371052266960, 0.991255969942820170, 0.991262566355233580, 0.991269160289490640, 0.991275751745574700, 0.991282340723469320, 0.991288927223158090, 0.991295511244624670, +0.991302092787852310, 0.991308671852824790, 0.991315248439525680, 0.991321822547938440, 0.991328394178046520, 0.991334963329833730, 0.991341530003283400, 0.991348094198379330, +0.991354655915104970, 0.991361215153444110, 0.991367771913380210, 0.991374326194896740, 0.991380877997977470, 0.991387427322606100, 0.991393974168766070, 0.991400518536441070, +0.991407060425614880, 0.991413599836270980, 0.991420136768393250, 0.991426671221964930, 0.991433203196970040, 0.991439732693392140, 0.991446259711214920, 0.991452784250422050, +0.991459306310997100, 0.991465825892924090, 0.991472342996186470, 0.991478857620767930, 0.991485369766652250, 0.991491879433823110, 0.991498386622264300, 0.991504891331959510, +0.991511393562892530, 0.991517893315047140, 0.991524390588407020, 0.991530885382955750, 0.991537377698677340, 0.991543867535555570, 0.991550354893574020, 0.991556839772716580, +0.991563322172967050, 0.991569802094309450, 0.991576279536727110, 0.991582754500204060, 0.991589226984724180, 0.991595696990271170, 0.991602164516829030, 0.991608629564381450, +0.991615092132912320, 0.991621552222405440, 0.991628009832844600, 0.991634464964213810, 0.991640917616496750, 0.991647367789677550, 0.991653815483739760, 0.991660260698667530, +0.991666703434444850, 0.991673143691055190, 0.991679581468482670, 0.991686016766711200, 0.991692449585724670, 0.991698879925507090, 0.991705307786042270, 0.991711733167314200, +0.991718156069306910, 0.991724576492004070, 0.991730994435389810, 0.991737409899448030, 0.991743822884162740, 0.991750233389517950, 0.991756641415497580, 0.991763046962085730, +0.991769450029266090, 0.991775850617022780, 0.991782248725339930, 0.991788644354201440, 0.991795037503591330, 0.991801428173493590, 0.991807816363892370, 0.991814202074771670, +0.991820585306115390, 0.991826966057907540, 0.991833344330132370, 0.991839720122773880, 0.991846093435815980, 0.991852464269242890, 0.991858832623038760, 0.991865198497187460, +0.991871561891673140, 0.991877922806479910, 0.991884281241591890, 0.991890637196993110, 0.991896990672667790, 0.991903341668600060, 0.991909690184773930, 0.991916036221173640, +0.991922379777783080, 0.991928720854586720, 0.991935059451568460, 0.991941395568712640, 0.991947729206003270, 0.991954060363424590, 0.991960389040960840, 0.991966715238596030, +0.991973038956314500, 0.991979360194100270, 0.991985678951937680, 0.991991995229810850, 0.991998309027704140, 0.992004620345601660, 0.992010929183487540, 0.992017235541346130, +0.992023539419161660, 0.992029840816918360, 0.992036139734600360, 0.992042436172192010, 0.992048730129677650, 0.992055021607041620, 0.992061310604267830, 0.992067597121340740, +0.992073881158244690, 0.992080162714964020, 0.992086441791482860, 0.992092718387785570, 0.992098992503856470, 0.992105264139680140, 0.992111533295240380, 0.992117799970521850, +0.992124064165508910, 0.992130325880185680, 0.992136585114536730, 0.992142841868546290, 0.992149096142198820, 0.992155347935478440, 0.992161597248369830, 0.992167844080857120, +0.992174088432924870, 0.992180330304557430, 0.992186569695739040, 0.992192806606454370, 0.992199041036687660, 0.992205272986423360, 0.992211502455645820, 0.992217729444339500, +0.992223953952488860, 0.992230175980078340, 0.992236395527092420, 0.992242612593515540, 0.992248827179332160, 0.992255039284526630, 0.992261248909083520, 0.992267456052987160, +0.992273660716222360, 0.992279862898773240, 0.992286062600624570, 0.992292259821760840, 0.992298454562166370, 0.992304646821825730, 0.992310836600723390, 0.992317023898844130, +0.992323208716172190, 0.992329391052692240, 0.992335570908388860, 0.992341748283246620, 0.992347923177249960, 0.992354095590383460, 0.992360265522631680, 0.992366432973979310, +0.992372597944410790, 0.992378760433910820, 0.992384920442463960, 0.992391077970054770, 0.992397233016667930, 0.992403385582288020, 0.992409535666899600, 0.992415683270487240, +0.992421828393035830, 0.992427971034529730, 0.992434111194953950, 0.992440248874292610, 0.992446384072530830, 0.992452516789652960, 0.992458647025643790, 0.992464774780488110, +0.992470900054170380, 0.992477022846675490, 0.992483143157988130, 0.992489260988092760, 0.992495376336974270, 0.992501489204617340, 0.992507599591006760, 0.992513707496127110, +0.992519812919963160, 0.992525915862499830, 0.992532016323721570, 0.992538114303613270, 0.992544209802159740, 0.992550302819345640, 0.992556393355155770, 0.992562481409574930, +0.992568566982587890, 0.992574650074179550, 0.992580730684334500, 0.992586808813037620, 0.992592884460273720, 0.992598957626027570, 0.992605028310283970, 0.992611096513027920, +0.992617162234244230, 0.992623225473917460, 0.992629286232032610, 0.992635344508574600, 0.992641400303528210, 0.992647453616878340, 0.992653504448609780, 0.992659552798707550, +0.992665598667156530, 0.992671642053941320, 0.992677682959047130, 0.992683721382458640, 0.992689757324160870, 0.992695790784138720, 0.992701821762377090, 0.992707850258860880, +0.992713876273575210, 0.992719899806504660, 0.992725920857634450, 0.992731939426949370, 0.992737955514434440, 0.992743969120074680, 0.992749980243854970, 0.992755988885760330, +0.992761995045775780, 0.992767998723886100, 0.992773999920076530, 0.992779998634331860, 0.992785994866637210, 0.992791988616977710, 0.992797979885338130, 0.992803968671703620, +0.992809954976059170, 0.992815938798389920, 0.992821920138680760, 0.992827898996916700, 0.992833875373082990, 0.992839849267164620, 0.992845820679146620, 0.992851789609014100, +0.992857756056751970, 0.992863720022345570, 0.992869681505779810, 0.992875640507039910, 0.992881597026110780, 0.992887551062977770, 0.992893502617625990, 0.992899451690040240, +0.992905398280205960, 0.992911342388108190, 0.992917284013732030, 0.992923223157062610, 0.992929159818085270, 0.992935093996784920, 0.992941025693146910, 0.992946954907156340, +0.992952881638798360, 0.992958805888058070, 0.992964727654920940, 0.992970646939371870, 0.992976563741396200, 0.992982478060979170, 0.992988389898106010, 0.992994299252761730, +0.993000206124931780, 0.993006110514601190, 0.993012012421755410, 0.993017911846379660, 0.993023808788459080, 0.993029703247979010, 0.993035595224924680, 0.993041484719281330, +0.993047371731034300, 0.993053256260168830, 0.993059138306670140, 0.993065017870523700, 0.993070894951714630, 0.993076769550228500, 0.993082641666050310, 0.993088511299165530, +0.993094378449559500, 0.993100243117217450, 0.993106105302124840, 0.993111965004266910, 0.993117822223629210, 0.993123676960196880, 0.993129529213955360, 0.993135378984890020, +0.993141226272986180, 0.993147071078229300, 0.993152913400604740, 0.993158753240097950, 0.993164590596694370, 0.993170425470379150, 0.993176257861137830, 0.993182087768956000, +0.993187915193818880, 0.993193740135711930, 0.993199562594620720, 0.993205382570530590, 0.993211200063427000, 0.993217015073295410, 0.993222827600121260, 0.993228637643890020, +0.993234445204587260, 0.993240250282198310, 0.993246052876708750, 0.993251852988104140, 0.993257650616369840, 0.993263445761491390, 0.993269238423454380, 0.993275028602244150, +0.993280816297846480, 0.993286601510246720, 0.993292384239430450, 0.993298164485383330, 0.993303942248090710, 0.993309717527538160, 0.993315490323711360, 0.993321260636595870, +0.993327028466177260, 0.993332793812441000, 0.993338556675372850, 0.993344317054958290, 0.993350074951182880, 0.993355830364032300, 0.993361583293492110, 0.993367333739548000, +0.993373081702185520, 0.993378827181390370, 0.993384570177148210, 0.993390310689444610, 0.993396048718265150, 0.993401784263595600, 0.993407517325421650, 0.993413247903728760, +0.993418975998502930, 0.993424701609729510, 0.993430424737394510, 0.993436145381483390, 0.993441863541981830, 0.993447579218875610, 0.993453292412150410, 0.993459003121792140, +0.993464711347786240, 0.993470417090118630, 0.993476120348774970, 0.993481821123740950, 0.993487519415002350, 0.993493215222545080, 0.993498908546354700, 0.993504599386417000, +0.993510287742717880, 0.993515973615243020, 0.993521657003978210, 0.993527337908909350, 0.993533016330022000, 0.993538692267302180, 0.993544365720735570, 0.993550036690308170, +0.993555705176005550, 0.993561371177813850, 0.993567034695718500, 0.993572695729705750, 0.993578354279761160, 0.993584010345870630, 0.993589663928020170, 0.993595315026195470, +0.993600963640382640, 0.993606609770567250, 0.993612253416735420, 0.993617894578872950, 0.993623533256965620, 0.993629169450999550, 0.993634803160960530, 0.993640434386834580, +0.993646063128607590, 0.993651689386265360, 0.993657313159793890, 0.993662934449179080, 0.993668553254406950, 0.993674169575463510, 0.993679783412334650, 0.993685394765006390, +0.993691003633464520, 0.993696610017695160, 0.993702213917684320, 0.993707815333417900, 0.993713414264881910, 0.993719010712062480, 0.993724604674945500, 0.993730196153516990, +0.993735785147763060, 0.993741371657669510, 0.993746955683222690, 0.993752537224408370, 0.993758116281212690, 0.993763692853621760, 0.993769266941621600, 0.993774838545198440, +0.993780407664338060, 0.993785974299026600, 0.993791538449250170, 0.993797100114995000, 0.993802659296247000, 0.993808215992992410, 0.993813770205217330, 0.993819321932907780, +0.993824871176049900, 0.993830417934629780, 0.993835962208633680, 0.993841503998047720, 0.993847043302858000, 0.993852580123050560, 0.993858114458611830, 0.993863646309527730, +0.993869175675784480, 0.993874702557368320, 0.993880226954265370, 0.993885748866461970, 0.993891268293944030, 0.993896785236698110, 0.993902299694710110, 0.993907811667966380, +0.993913321156453140, 0.993918828160156530, 0.993924332679062880, 0.993929834713158430, 0.993935334262429420, 0.993940831326862060, 0.993946325906442610, 0.993951818001157280, +0.993957307610992550, 0.993962794735934410, 0.993968279375969320, 0.993973761531083520, 0.993979241201263350, 0.993984718386495160, 0.993990193086765060, 0.993995665302059520, +0.994001135032364760, 0.994006602277667240, 0.994012067037953080, 0.994017529313208860, 0.994022989103420910, 0.994028446408575350, 0.994033901228658760, 0.994039353563657360, +0.994044803413557500, 0.994050250778345750, 0.994055695658008330, 0.994061138052531710, 0.994066577961902230, 0.994072015386106340, 0.994077450325130290, 0.994082882778960730, +0.994088312747583910, 0.994093740230986290, 0.994099165229154310, 0.994104587742074440, 0.994110007769733240, 0.994115425312116940, 0.994120840369212000, 0.994126252941004980, +0.994131663027482350, 0.994137070628630550, 0.994142475744436040, 0.994147878374885500, 0.994153278519965160, 0.994158676179661580, 0.994164071353961340, 0.994169464042850890, +0.994174854246316800, 0.994180241964345620, 0.994185627196923720, 0.994191009944037970, 0.994196390205674520, 0.994201767981820140, 0.994207143272461290, 0.994212516077584650, +0.994217886397176680, 0.994223254231224040, 0.994228619579713310, 0.994233982442630950, 0.994239342819963620, 0.994244700711698020, 0.994250056117820580, 0.994255409038317990, +0.994260759473176940, 0.994266107422383970, 0.994271452885925780, 0.994276795863788920, 0.994282136355960080, 0.994287474362425820, 0.994292809883172920, 0.994298142918188080, +0.994303473467457730, 0.994308801530968790, 0.994314127108707920, 0.994319450200661590, 0.994324770806816690, 0.994330088927159910, 0.994335404561677900, 0.994340717710357260, +0.994346028373184980, 0.994351336550147620, 0.994356642241231770, 0.994361945446424420, 0.994367246165712260, 0.994372544399081850, 0.994377840146520200, 0.994383133408013880, +0.994388424183549670, 0.994393712473114590, 0.994398998276695090, 0.994404281594278070, 0.994409562425850440, 0.994414840771398860, 0.994420116630910120, 0.994425390004371130, +0.994430660891768680, 0.994435929293089660, 0.994441195208320750, 0.994446458637448850, 0.994451719580460750, 0.994456978037343450, 0.994462234008083650, 0.994467487492668220, +0.994472738491084200, 0.994477987003318240, 0.994483233029357370, 0.994488476569188260, 0.994493717622798150, 0.994498956190173590, 0.994504192271301710, 0.994509425866169420, +0.994514656974763600, 0.994519885597070940, 0.994525111733078670, 0.994530335382773690, 0.994535556546142780, 0.994540775223172970, 0.994545991413851250, 0.994551205118164640, +0.994556416336099920, 0.994561625067644120, 0.994566831312784340, 0.994572035071507490, 0.994577236343800460, 0.994582435129650390, 0.994587631429044270, 0.994592825241969130, +0.994598016568411850, 0.994603205408359450, 0.994608391761799050, 0.994613575628717770, 0.994618757009102520, 0.994623935902940290, 0.994629112310218330, 0.994634286230923650, +0.994639457665043140, 0.994644626612564030, 0.994649793073473230, 0.994654957047758080, 0.994660118535405480, 0.994665277536402660, 0.994670434050736630, 0.994675588078394510, +0.994680739619363320, 0.994685888673630390, 0.994691035241182740, 0.994696179322007380, 0.994701320916091650, 0.994706460023422670, 0.994711596643987560, 0.994716730777773340, +0.994721862424767340, 0.994726991584956700, 0.994732118258328630, 0.994737242444870160, 0.994742364144568620, 0.994747483357411140, 0.994752600083385170, 0.994757714322477500, +0.994762826074675590, 0.994767935339966550, 0.994773042118337720, 0.994778146409776240, 0.994783248214269440, 0.994788347531804560, 0.994793444362368830, 0.994798538705949360, +0.994803630562533630, 0.994808719932108840, 0.994813806814662250, 0.994818891210181080, 0.994823973118652670, 0.994829052540064480, 0.994834129474403530, 0.994839203921657260, +0.994844275881813010, 0.994849345354858030, 0.994854412340779760, 0.994859476839565330, 0.994864538851202410, 0.994869598375678010, 0.994874655412979590, 0.994879709963094610, +0.994884762026010280, 0.994889811601714080, 0.994894858690193340, 0.994899903291435520, 0.994904945405427950, 0.994909985032158000, 0.994915022171612980, 0.994920056823780490, +0.994925088988647840, 0.994930118666202400, 0.994935145856431720, 0.994940170559323270, 0.994945192774864370, 0.994950212503042390, 0.994955229743844980, 0.994960244497259390, +0.994965256763273190, 0.994970266541873930, 0.994975273833048960, 0.994980278636785840, 0.994985280953072040, 0.994990280781895000, 0.994995278123242290, 0.995000272977101250, +0.995005265343459680, 0.995010255222304910, 0.995015242613624510, 0.995020227517406040, 0.995025209933636860, 0.995030189862304740, 0.995035167303397140, 0.995040142256901630, +0.995045114722805770, 0.995050084701097130, 0.995055052191763270, 0.995060017194791870, 0.995064979710170270, 0.995069939737886270, 0.995074897277927420, 0.995079852330281400, +0.995084804894935670, 0.995089754971877900, 0.995094702561095890, 0.995099647662577080, 0.995104590276309040, 0.995109530402279560, 0.995114468040476320, 0.995119403190886880, +0.995124335853498910, 0.995129266028300100, 0.995134193715278230, 0.995139118914420750, 0.995144041625715460, 0.995148961849150140, 0.995153879584712350, 0.995158794832389890, +0.995163707592170430, 0.995168617864041870, 0.995173525647991550, 0.995178430944007490, 0.995183333752077350, 0.995188234072188930, 0.995193131904329900, 0.995198027248487940, +0.995202920104650950, 0.995207810472806820, 0.995212698352943010, 0.995217583745047540, 0.995222466649107960, 0.995227347065112400, 0.995232224993048310, 0.995237100432903700, +0.995241973384666360, 0.995246843848324180, 0.995251711823864850, 0.995256577311276150, 0.995261440310546090, 0.995266300821662340, 0.995271158844612920, 0.995276014379385620, +0.995280867425968330, 0.995285717984348730, 0.995290566054514940, 0.995295411636454630, 0.995300254730155820, 0.995305095335606400, 0.995309933452794280, 0.995314769081707240, +0.995319602222333400, 0.995324432874660550, 0.995329261038676470, 0.995334086714369290, 0.995338909901727020, 0.995343730600737330, 0.995348548811388350, 0.995353364533668070, +0.995358177767564300, 0.995362988513065150, 0.995367796770158410, 0.995372602538832310, 0.995377405819074630, 0.995382206610873400, 0.995387004914216720, 0.995391800729092610, +0.995396594055488970, 0.995401384893393690, 0.995406173242795010, 0.995410959103680940, 0.995415742476039480, 0.995420523359858640, 0.995425301755126450, 0.995430077661831230, +0.995434851079960550, 0.995439622009502870, 0.995444390450446080, 0.995449156402778310, 0.995453919866487680, 0.995458680841562190, 0.995463439327990200, 0.995468195325759360, +0.995472948834858150, 0.995477699855274570, 0.995482448386996730, 0.995487194430012770, 0.995491937984310790, 0.995496679049879040, 0.995501417626705520, 0.995506153714778570, +0.995510887314086100, 0.995515618424616440, 0.995520347046357720, 0.995525073179298170, 0.995529796823426020, 0.995534517978729270, 0.995539236645196280, 0.995543952822815160, +0.995548666511574140, 0.995553377711461460, 0.995558086422465350, 0.995562792644574030, 0.995567496377775750, 0.995572197622058840, 0.995576896377411310, 0.995581592643821510, +0.995586286421277780, 0.995590977709768230, 0.995595666509281330, 0.995600352819805190, 0.995605036641328270, 0.995609717973838790, 0.995614396817325000, 0.995619073171775120, +0.995623747037177600, 0.995628418413520680, 0.995633087300792700, 0.995637753698982110, 0.995642417608077150, 0.995647079028066040, 0.995651737958937240, 0.995656394400679100, +0.995661048353280060, 0.995665699816728260, 0.995670348791012350, 0.995674995276120470, 0.995679639272041170, 0.995684280778762810, 0.995688919796273610, 0.995693556324562130, +0.995698190363616840, 0.995702821913426070, 0.995707450973978170, 0.995712077545261700, 0.995716701627265110, 0.995721323219976640, 0.995725942323384960, 0.995730558937478310, +0.995735173062245350, 0.995739784697674430, 0.995744393843754020, 0.995749000500472770, 0.995753604667818930, 0.995758206345781050, 0.995762805534347590, 0.995767402233507240, +0.995771996443248320, 0.995776588163559410, 0.995781177394429060, 0.995785764135845740, 0.995790348387798010, 0.995794930150274430, 0.995799509423263560, 0.995804086206753870, +0.995808660500733910, 0.995813232305192360, 0.995817801620117680, 0.995822368445498650, 0.995826932781323610, 0.995831494627581250, 0.995836053984260120, 0.995840610851348780, +0.995845165228836040, 0.995849717116710330, 0.995854266514960340, 0.995858813423574740, 0.995863357842541990, 0.995867899771850970, 0.995872439211490050, 0.995876976161448100, +0.995881510621713820, 0.995886042592275640, 0.995890572073122480, 0.995895099064242780, 0.995899623565625340, 0.995904145577258810, 0.995908665099132010, 0.995913182131233480, +0.995917696673551900, 0.995922208726076290, 0.995926718288795090, 0.995931225361697090, 0.995935729944770980, 0.995940232038005520, 0.995944731641389520, 0.995949228754911650, +0.995953723378560810, 0.995958215512325660, 0.995962705156194890, 0.995967192310157400, 0.995971676974201970, 0.995976159148317270, 0.995980638832492220, 0.995985116026715470, +0.995989590730976040, 0.995994062945262710, 0.995998532669564060, 0.996002999903869090, 0.996007464648166700, 0.996011926902445670, 0.996016386666694680, 0.996020843940902840, +0.996025298725058960, 0.996029751019151700, 0.996034200823170070, 0.996038648137102970, 0.996043092960939290, 0.996047535294667830, 0.996051975138277480, 0.996056412491757250, +0.996060847355096150, 0.996065279728282740, 0.996069709611306140, 0.996074137004155260, 0.996078561906819090, 0.996082984319286550, 0.996087404241546400, 0.996091821673587900, +0.996096236615399810, 0.996100649066971160, 0.996105059028290720, 0.996109466499347730, 0.996113871480131090, 0.996118273970629800, 0.996122673970832760, 0.996127071480729210, +0.996131466500307820, 0.996135859029557810, 0.996140249068468100, 0.996144636617027790, 0.996149021675225900, 0.996153404243051430, 0.996157784320493400, 0.996162161907541140, +0.996166537004183230, 0.996170909610409110, 0.996175279726207670, 0.996179647351568050, 0.996184012486479250, 0.996188375130930500, 0.996192735284910810, 0.996197092948409190, +0.996201448121414980, 0.996205800803916960, 0.996210150995904600, 0.996214498697366780, 0.996218843908292740, 0.996223186628671600, 0.996227526858492580, 0.996231864597744600, +0.996236199846416980, 0.996240532604498960, 0.996244862871979550, 0.996249190648847870, 0.996253515935093370, 0.996257838730705060, 0.996262159035672170, 0.996266476849983820, +0.996270792173629240, 0.996275105006597770, 0.996279415348878540, 0.996283723200460660, 0.996288028561333580, 0.996292331431486430, 0.996296631810908440, 0.996300929699588830, +0.996305225097516840, 0.996309518004681930, 0.996313808421073090, 0.996318096346679780, 0.996322381781491240, 0.996326664725496910, 0.996330945178685700, 0.996335223141047170, +0.996339498612570650, 0.996343771593245280, 0.996348042083060600, 0.996352310082005750, 0.996356575590070070, 0.996360838607243120, 0.996365099133513900, 0.996369357168871980, +0.996373612713306710, 0.996377865766807420, 0.996382116329363350, 0.996386364400964060, 0.996390609981599010, 0.996394853071257190, 0.996399093669928400, 0.996403331777601760, +0.996407567394266840, 0.996411800519913070, 0.996416031154529700, 0.996420259298106290, 0.996424484950632290, 0.996428708112097050, 0.996432928782490010, 0.996437146961800630, +0.996441362650018370, 0.996445575847132780, 0.996449786553133210, 0.996453994768009220, 0.996458200491750160, 0.996462403724345690, 0.996466604465785170, 0.996470802716058040, +0.996474998475153970, 0.996479191743062430, 0.996483382519772980, 0.996487570805275060, 0.996491756599558130, 0.996495939902611760, 0.996500120714425620, 0.996504299034989160, +0.996508474864291950, 0.996512648202323660, 0.996516819049073630, 0.996520987404531660, 0.996525153268687070, 0.996529316641529660, 0.996533477523048990, 0.996537635913234630, +0.996541791812076140, 0.996545945219563190, 0.996550096135685460, 0.996554244560432400, 0.996558390493793690, 0.996562533935759000, 0.996566674886318120, 0.996570813345460380, +0.996574949313175700, 0.996579082789453620, 0.996583213774283940, 0.996587342267656110, 0.996591468269559910, 0.996595591779985130, 0.996599712798921230, 0.996603831326358210, +0.996607947362285530, 0.996612060906693080, 0.996616171959570310, 0.996620280520907230, 0.996624386590693410, 0.996628490168918630, 0.996632591255572580, 0.996636689850645130, +0.996640785954125860, 0.996644879566004780, 0.996648970686271340, 0.996653059314915550, 0.996657145451927070, 0.996661229097295820, 0.996665310251011350, 0.996669388913063670, +0.996673465083442570, 0.996677538762137830, 0.996681609949139240, 0.996685678644436580, 0.996689744848019640, 0.996693808559878440, 0.996697869780002740, 0.996701928508382240, +0.996705984745007050, 0.996710038489866830, 0.996714089742951610, 0.996718138504251060, 0.996722184773755180, 0.996726228551453870, 0.996730269837336920, 0.996734308631394340, +0.996738344933616130, 0.996742378743991850, 0.996746410062511750, 0.996750438889165590, 0.996754465223943290, 0.996758489066834840, 0.996762510417830150, 0.996766529276919220, +0.996770545644092070, 0.996774559519338470, 0.996778570902648430, 0.996782579794011970, 0.996786586193419090, 0.996790590100859690, 0.996794591516323880, 0.996798590439801570, +0.996802586871282760, 0.996806580810757570, 0.996810572258215900, 0.996814561213647750, 0.996818547677043140, 0.996822531648392300, 0.996826513127685000, 0.996830492114911590, +0.996834468610061750, 0.996838442613125930, 0.996842414124093800, 0.996846383142955820, 0.996850349669701760, 0.996854313704321870, 0.996858275246806260, 0.996862234297144930, +0.996866190855327900, 0.996870144921345510, 0.996874096495187770, 0.996878045576844670, 0.996881992166306570, 0.996885936263563480, 0.996889877868605500, 0.996893816981422880, +0.996897753602005720, 0.996901687730344150, 0.996905619366428300, 0.996909548510248490, 0.996913475161794740, 0.996917399321057270, 0.996921320988026440, 0.996925240162692240, +0.996929156845045020, 0.996933071035074780, 0.996936982732771870, 0.996940891938126520, 0.996944798651128950, 0.996948702871769510, 0.996952604600038210, 0.996956503835925380, +0.996960400579421260, 0.996964294830516180, 0.996968186589200390, 0.996972075855464100, 0.996975962629297660, 0.996979846910691300, 0.996983728699635250, 0.996987607996119960, +0.996991484800135660, 0.996995359111672590, 0.996999230930721180, 0.997003100257271570, 0.997006967091314310, 0.997010831432839750, 0.997014693281837890, 0.997018552638299420, +0.997022409502214550, 0.997026263873573630, 0.997030115752367110, 0.997033965138585220, 0.997037812032218530, 0.997041656433257260, 0.997045498341691760, 0.997049337757512590, +0.997053174680710090, 0.997057009111274590, 0.997060841049196570, 0.997064670494466570, 0.997068497447074820, 0.997072321907011780, 0.997076143874268020, 0.997079963348833860, +0.997083780330699780, 0.997087594819856200, 0.997091406816293710, 0.997095216320002750, 0.997099023330973670, 0.997102827849197020, 0.997106629874663360, 0.997110429407363050, +0.997114226447286760, 0.997118020994424810, 0.997121813048767790, 0.997125602610306360, 0.997129389679030860, 0.997133174254931980, 0.997136956338000040, 0.997140735928225720, +0.997144513025599590, 0.997148287630112210, 0.997152059741754030, 0.997155829360515830, 0.997159596486387970, 0.997163361119361100, 0.997167123259425800, 0.997170882906572740, +0.997174640060792480, 0.997178394722075590, 0.997182146890412850, 0.997185896565794590, 0.997189643748211620, 0.997193388437654590, 0.997197130634113970, 0.997200870337580650, +0.997204607548045070, 0.997208342265498040, 0.997212074489930210, 0.997215804221332050, 0.997219531459694440, 0.997223256205008070, 0.997226978457263490, 0.997230698216451380, +0.997234415482562640, 0.997238130255587830, 0.997241842535517730, 0.997245552322343020, 0.997249259616054370, 0.997252964416642680, 0.997256666724098410, 0.997260366538412660, +0.997264063859575890, 0.997267758687579000, 0.997271451022412660, 0.997275140864067770, 0.997278828212534880, 0.997282513067805020, 0.997286195429868960, 0.997289875298717270, +0.997293552674340940, 0.997297227556730780, 0.997300899945877560, 0.997304569841771960, 0.997308237244405090, 0.997311902153767530, 0.997315564569850270, 0.997319224492643990, +0.997322881922139800, 0.997326536858328390, 0.997330189301200540, 0.997333839250747260, 0.997337486706959320, 0.997341131669827740, 0.997344774139343300, 0.997348414115497020, +0.997352051598279670, 0.997355686587682140, 0.997359319083695350, 0.997362949086310290, 0.997366576595517970, 0.997370201611309070, 0.997373824133674700, 0.997377444162605760, +0.997381061698093370, 0.997384676740128210, 0.997388289288701270, 0.997391899343803680, 0.997395506905426330, 0.997399111973560240, 0.997402714548196400, 0.997406314629325720, +0.997409912216939310, 0.997413507311028070, 0.997417099911583000, 0.997420690018595240, 0.997424277632055770, 0.997427862751955610, 0.997431445378285760, 0.997435025511037470, +0.997438603150201390, 0.997442178295768870, 0.997445750947730910, 0.997449321106078650, 0.997452888770802960, 0.997456453941895080, 0.997460016619346130, 0.997463576803147120, +0.997467134493289160, 0.997470689689763380, 0.997474242392560770, 0.997477792601672690, 0.997481340317090020, 0.997484885538804100, 0.997488428266805950, 0.997491968501086680, +0.997495506241637520, 0.997499041488449590, 0.997502574241514010, 0.997506104500822000, 0.997509632266364800, 0.997513157538133520, 0.997516680316119290, 0.997520200600313430, +0.997523718390706970, 0.997527233687291350, 0.997530746490057460, 0.997534256798996880, 0.997537764614100490, 0.997541269935359850, 0.997544772762765990, 0.997548273096310220, +0.997551770935983680, 0.997555266281777710, 0.997558759133683640, 0.997562249491692700, 0.997565737355796010, 0.997569222725985140, 0.997572705602251200, 0.997576185984585420, +0.997579663872979140, 0.997583139267423700, 0.997586612167910450, 0.997590082574430710, 0.997593550486975730, 0.997597015905536950, 0.997600478830105500, 0.997603939260672920, +0.997607397197230460, 0.997610852639769560, 0.997614305588281460, 0.997617756042757710, 0.997621204003189540, 0.997624649469568300, 0.997628092441885440, 0.997631532920132290, +0.997634970904300420, 0.997638406394381060, 0.997641839390365770, 0.997645269892245780, 0.997648697900012760, 0.997652123413657830, 0.997655546433172670, 0.997658966958548610, +0.997662384989777110, 0.997665800526849720, 0.997669213569757800, 0.997672624118492890, 0.997676032173046350, 0.997679437733409720, 0.997682840799574590, 0.997686241371532280, +0.997689639449274360, 0.997693035032792390, 0.997696428122077820, 0.997699818717122210, 0.997703206817917020, 0.997706592424453810, 0.997709975536724140, 0.997713356154719460, +0.997716734278431440, 0.997720109907851650, 0.997723483042971430, 0.997726853683782670, 0.997730221830276710, 0.997733587482445230, 0.997736950640279670, 0.997740311303771830, +0.997743669472913150, 0.997747025147695310, 0.997750378328109980, 0.997753729014148720, 0.997757077205803090, 0.997760422903064660, 0.997763766105925320, 0.997767106814376530, +0.997770445028409950, 0.997773780748017150, 0.997777113973190130, 0.997780444703920130, 0.997783772940199150, 0.997787098682018650, 0.997790421929370400, 0.997793742682246190, +0.997797060940637580, 0.997800376704536250, 0.997803689973934090, 0.997807000748822670, 0.997810309029193650, 0.997813614815038940, 0.997816918106350200, 0.997820218903119120, +0.997823517205337570, 0.997826813012997250, 0.997830106326089820, 0.997833397144607170, 0.997836685468540980, 0.997839971297883040, 0.997843254632625240, 0.997846535472759260, +0.997849813818276980, 0.997853089669170190, 0.997856363025430680, 0.997859633887050120, 0.997862902254020630, 0.997866168126333890, 0.997869431503981660, 0.997872692386955860, +0.997875950775248380, 0.997879206668850880, 0.997882460067755490, 0.997885710971953890, 0.997888959381438070, 0.997892205296199820, 0.997895448716231040, 0.997898689641523730, +0.997901928072069680, 0.997905164007860780, 0.997908397448888930, 0.997911628395146130, 0.997914856846624180, 0.997918082803315180, 0.997921306265210920, 0.997924527232303400, +0.997927745704584650, 0.997930961682046420, 0.997934175164680860, 0.997937386152479840, 0.997940594645435270, 0.997943800643539380, 0.997947004146783830, 0.997950205155160860, +0.997953403668662360, 0.997956599687280340, 0.997959793211006920, 0.997962984239833870, 0.997966172773753430, 0.997969358812757500, 0.997972542356838300, 0.997975723405987610, +0.997978901960197670, 0.997982078019460480, 0.997985251583768160, 0.997988422653112610, 0.997991591227486040, 0.997994757306880480, 0.997997920891288030, 0.998001081980700810, +0.998004240575110830, 0.998007396674510330, 0.998010550278891300, 0.998013701388245860, 0.998016850002566120, 0.998019996121844330, 0.998023139746072600, 0.998026280875242920, +0.998029419509347650, 0.998032555648378780, 0.998035689292328440, 0.998038820441188970, 0.998041949094952360, 0.998045075253610970, 0.998048198917156900, 0.998051320085582280, +0.998054438758879450, 0.998057554937040400, 0.998060668620057490, 0.998063779807922940, 0.998066888500628970, 0.998069994698167710, 0.998073098400531490, 0.998076199607712540, +0.998079298319703100, 0.998082394536495390, 0.998085488258081740, 0.998088579484454290, 0.998091668215605470, 0.998094754451527510, 0.998097838192212540, 0.998100919437653000, +0.998103998187841230, 0.998107074442769360, 0.998110148202429940, 0.998113219466815080, 0.998116288235917140, 0.998119354509728550, 0.998122418288241550, 0.998125479571448480, +0.998128538359341790, 0.998131594651913590, 0.998134648449156560, 0.998137699751062810, 0.998140748557624910, 0.998143794868835090, 0.998146838684685790, 0.998149880005169350, +0.998152918830278240, 0.998155955160004880, 0.998158988994341520, 0.998162020333280830, 0.998165049176815030, 0.998168075524936580, 0.998171099377637930, 0.998174120734911520, +0.998177139596749920, 0.998180155963145350, 0.998183169834090500, 0.998186181209577580, 0.998189190089599390, 0.998192196474148140, 0.998195200363216300, 0.998198201756796630, +0.998201200654881270, 0.998204197057463110, 0.998207190964534250, 0.998210182376087610, 0.998213171292115400, 0.998216157712610300, 0.998219141637564760, 0.998222123066971450, +0.998225102000822820, 0.998228078439111320, 0.998231052381829740, 0.998234023828970530, 0.998236992780526240, 0.998239959236489450, 0.998242923196852710, 0.998245884661608680, +0.998248843630750060, 0.998251800104269170, 0.998254754082158910, 0.998257705564411730, 0.998260654551020310, 0.998263601041977200, 0.998266545037275080, 0.998269486536906610, +0.998272425540864480, 0.998275362049141250, 0.998278296061729580, 0.998281227578622250, 0.998284156599811730, 0.998287083125290910, 0.998290007155052340, 0.998292928689088810, +0.998295847727392880, 0.998298764269957340, 0.998301678316774970, 0.998304589867838430, 0.998307498923140300, 0.998310405482673470, 0.998313309546430610, 0.998316211114404490, +0.998319110186587810, 0.998322006762973450, 0.998324900843554080, 0.998327792428322370, 0.998330681517271110, 0.998333568110393310, 0.998336452207681520, 0.998339333809128540, +0.998342212914727250, 0.998345089524470540, 0.998347963638350990, 0.998350835256361590, 0.998353704378495130, 0.998356571004744290, 0.998359435135102060, 0.998362296769561340, +0.998365155908114810, 0.998368012550755470, 0.998370866697475990, 0.998373718348269380, 0.998376567503128420, 0.998379414162046120, 0.998382258325015260, 0.998385099992028740, +0.998387939163079550, 0.998390775838160380, 0.998393610017264340, 0.998396441700384330, 0.998399270887513120, 0.998402097578643840, 0.998404921773769160, 0.998407743472882300, +0.998410562675976050, 0.998413379383043420, 0.998416193594077290, 0.998419005309070680, 0.998421814528016590, 0.998424621250908030, 0.998427425477737770, 0.998430227208499050, +0.998433026443184770, 0.998435823181787920, 0.998438617424301400, 0.998441409170718440, 0.998444198421031940, 0.998446985175234890, 0.998449769433320420, 0.998452551195281530, +0.998455330461111350, 0.998458107230802750, 0.998460881504348860, 0.998463653281742800, 0.998466422562977570, 0.998469189348046290, 0.998471953636942080, 0.998474715429658040, +0.998477474726187090, 0.998480231526522540, 0.998482985830657420, 0.998485737638584720, 0.998488486950297790, 0.998491233765789630, 0.998493978085053360, 0.998496719908082090, +0.998499459234869160, 0.998502196065407470, 0.998504930399690350, 0.998507662237710810, 0.998510391579462200, 0.998513118424937620, 0.998515842774130190, 0.998518564627033140, +0.998521283983639710, 0.998524000843943100, 0.998526715207936450, 0.998529427075613100, 0.998532136446966030, 0.998534843321988720, 0.998537547700674380, 0.998540249583016020, +0.998542948969007080, 0.998545645858640810, 0.998548340251910420, 0.998551032148809140, 0.998553721549330200, 0.998556408453467160, 0.998559092861213030, 0.998561774772561030, +0.998564454187504720, 0.998567131106037230, 0.998569805528152000, 0.998572477453842140, 0.998575146883101120, 0.998577813815922260, 0.998580478252298900, 0.998583140192224270, +0.998585799635691830, 0.998588456582694910, 0.998591111033226730, 0.998593762987280860, 0.998596412444850650, 0.998599059405929300, 0.998601703870510390, 0.998604345838587150, +0.998606985310153130, 0.998609622285201560, 0.998612256763726000, 0.998614888745719690, 0.998617518231176280, 0.998620145220089020, 0.998622769712451450, 0.998625391708256930, +0.998628011207498890, 0.998630628210170790, 0.998633242716266190, 0.998635854725778430, 0.998638464238701170, 0.998641071255027660, 0.998643675774751440, 0.998646277797866080, +0.998648877324364910, 0.998651474354241620, 0.998654068887489750, 0.998656660924102660, 0.998659250464073890, 0.998661837507396900, 0.998664422054065470, 0.998667004104072830, +0.998669583657412760, 0.998672160714078830, 0.998674735274064360, 0.998677307337363150, 0.998679876903968640, 0.998682443973874400, 0.998685008547074090, 0.998687570623561170, +0.998690130203329420, 0.998692687286372280, 0.998695241872683550, 0.998697793962256550, 0.998700343555085190, 0.998702890651162910, 0.998705435250483390, 0.998707977353040290, +0.998710516958827290, 0.998713054067837950, 0.998715588680066050, 0.998718120795505150, 0.998720650414148920, 0.998723177535991050, 0.998725702161025300, 0.998728224289245240, +0.998730743920644650, 0.998733261055217200, 0.998735775692956570, 0.998738287833856540, 0.998740797477910780, 0.998743304625112960, 0.998745809275456970, 0.998748311428936390, +0.998750811085545090, 0.998753308245276750, 0.998755802908125050, 0.998758295074083980, 0.998760784743147110, 0.998763271915308230, 0.998765756590561220, 0.998768238768899860, +0.998770718450317840, 0.998773195634809040, 0.998775670322367250, 0.998778142512986360, 0.998780612206660030, 0.998783079403382180, 0.998785544103146570, 0.998788006305947220, +0.998790466011777790, 0.998792923220632180, 0.998795377932504280, 0.998797830147387990, 0.998800279865277090, 0.998802727086165460, 0.998805171810047020, 0.998807614036915650, +0.998810053766765350, 0.998812490999589800, 0.998814925735383110, 0.998817357974138950, 0.998819787715851560, 0.998822214960514600, 0.998824639708122080, 0.998827061958668110, +0.998829481712146360, 0.998831898968550960, 0.998834313727875790, 0.998836725990114860, 0.998839135755262060, 0.998841543023311410, 0.998843947794257000, 0.998846350068092750, +0.998848749844812530, 0.998851147124410370, 0.998853541906880470, 0.998855934192216630, 0.998858323980412970, 0.998860711271463590, 0.998863096065362390, 0.998865478362103380, +0.998867858161680780, 0.998870235464088490, 0.998872610269320500, 0.998874982577371170, 0.998877352388234270, 0.998879719701904030, 0.998882084518374460, 0.998884446837639770, +0.998886806659693870, 0.998889163984530980, 0.998891518812145110, 0.998893871142530590, 0.998896220975681200, 0.998898568311591410, 0.998900913150255200, 0.998903255491666700, +0.998905595335820020, 0.998907932682709390, 0.998910267532328810, 0.998912599884672740, 0.998914929739735060, 0.998917257097510000, 0.998919581957991910, 0.998921904321174890, +0.998924224187053070, 0.998926541555620660, 0.998928856426871900, 0.998931168800801020, 0.998933478677402120, 0.998935786056669660, 0.998938090938597760, 0.998940393323180520, +0.998942693210412290, 0.998944990600287410, 0.998947285492799990, 0.998949577887944360, 0.998951867785714880, 0.998954155186105640, 0.998956440089111110, 0.998958722494725390, +0.998961002402942830, 0.998963279813757770, 0.998965554727164640, 0.998967827143157460, 0.998970097061730790, 0.998972364482878960, 0.998974629406596090, 0.998976891832876750, +0.998979151761715150, 0.998981409193105630, 0.998983664127042540, 0.998985916563520430, 0.998988166502533410, 0.998990413944076060, 0.998992658888142590, 0.998994901334727570, +0.998997141283825220, 0.998999378735429990, 0.999001613689536440, 0.999003846146138690, 0.999006076105231510, 0.999008303566809030, 0.999010528530865800, 0.999012750997396280, +0.999014970966394800, 0.999017188437856030, 0.999019403411774200, 0.999021615888143870, 0.999023825866959480, 0.999026033348215600, 0.999028238331906570, 0.999030440818026940, +0.999032640806571280, 0.999034838297533920, 0.999037033290909540, 0.999039225786692580, 0.999041415784877480, 0.999043603285458940, 0.999045788288431270, 0.999047970793789260, +0.999050150801527260, 0.999052328311639930, 0.999054503324121710, 0.999056675838967290, 0.999058845856171110, 0.999061013375727840, 0.999063178397632030, 0.999065340921878380, +0.999067500948461310, 0.999069658477375390, 0.999071813508615400, 0.999073966042176020, 0.999076116078051580, 0.999078263616236860, 0.999080408656726430, 0.999082551199515060, +0.999084691244597310, 0.999086828791967750, 0.999088963841621270, 0.999091096393552200, 0.999093226447755560, 0.999095354004225670, 0.999097479062957540, 0.999099601623945620, +0.999101721687184810, 0.999103839252669660, 0.999105954320394840, 0.999108066890355250, 0.999110176962545340, 0.999112284536960100, 0.999114389613594110, 0.999116492192442140, +0.999118592273498970, 0.999120689856759390, 0.999122784942217960, 0.999124877529869560, 0.999126967619709090, 0.999129055211731120, 0.999131140305930530, 0.999133222902302000, +0.999135303000840520, 0.999137380601540780, 0.999139455704397550, 0.999141528309405720, 0.999143598416560090, 0.999145666025855420, 0.999147731137286500, 0.999149793750848340, +0.999151853866535710, 0.999153911484343520, 0.999155966604266420, 0.999158019226299430, 0.999160069350437440, 0.999162116976675230, 0.999164162105007800, 0.999166204735429830, +0.999168244867936540, 0.999170282502522490, 0.999172317639182790, 0.999174350277912240, 0.999176380418705820, 0.999178408061558550, 0.999180433206465100, 0.999182455853420690, +0.999184476002420220, 0.999186493653458350, 0.999188508806530430, 0.999190521461631120, 0.999192531618755540, 0.999194539277898590, 0.999196544439055370, 0.999198547102220780, +0.999200547267389830, 0.999202544934557510, 0.999204540103718730, 0.999206532774868710, 0.999208522948002330, 0.999210510623114610, 0.999212495800200660, 0.999214478479255490, +0.999216458660273980, 0.999218436343251470, 0.999220411528182860, 0.999222384215063150, 0.999224354403887460, 0.999226322094651010, 0.999228287287348690, 0.999230249981975630, +0.999232210178526930, 0.999234167876997810, 0.999236123077383190, 0.999238075779678270, 0.999240025983878180, 0.999241973689978020, 0.999243918897972930, 0.999245861607858000, +0.999247801819628470, 0.999249739533279340, 0.999251674748805940, 0.999253607466203400, 0.999255537685466710, 0.999257465406591330, 0.999259390629572250, 0.999261313354404600, +0.999263233581083710, 0.999265151309604800, 0.999267066539962890, 0.999268979272153410, 0.999270889506171490, 0.999272797242012350, 0.999274702479671210, 0.999276605219143190, +0.999278505460423850, 0.999280403203508080, 0.999282298448391450, 0.999284191195068950, 0.999286081443536030, 0.999287969193787930, 0.999289854445819860, 0.999291737199627160, +0.999293617455205170, 0.999295495212549010, 0.999297370471654230, 0.999299243232515950, 0.999301113495129620, 0.999302981259490570, 0.999304846525593930, 0.999306709293435240, +0.999308569563009730, 0.999310427334312860, 0.999312282607339950, 0.999314135382086240, 0.999315985658547290, 0.999317833436718320, 0.999319678716594770, 0.999321521498171990, +0.999323361781445430, 0.999325199566410530, 0.999327034853062510, 0.999328867641396950, 0.999330697931409270, 0.999332525723094830, 0.999334351016449070, 0.999336173811467440, +0.999337994108145390, 0.999339811906478250, 0.999341627206461690, 0.999343440008091060, 0.999345250311361790, 0.999347058116269450, 0.999348863422809370, 0.999350666230977240, +0.999352466540768370, 0.999354264352178330, 0.999356059665202580, 0.999357852479836880, 0.999359642796076360, 0.999361430613916800, 0.999363215933353640, 0.999364998754382450, +0.999366779076998780, 0.999368556901198190, 0.999370332226976130, 0.999372105054328390, 0.999373875383250180, 0.999375643213737400, 0.999377408545785490, 0.999379171379390140, +0.999380931714546780, 0.999382689551251090, 0.999384444889498620, 0.999386197729285160, 0.999387948070606160, 0.999389695913457280, 0.999391441257834190, 0.999393184103732460, +0.999394924451147750, 0.999396662300075730, 0.999398397650512080, 0.999400130502452470, 0.999401860855892550, 0.999403588710827910, 0.999405314067254300, 0.999407036925167410, +0.999408757284563020, 0.999410475145436570, 0.999412190507784070, 0.999413903371601080, 0.999415613736883260, 0.999417321603626510, 0.999419026971826390, 0.999420729841478670, +0.999422430212579150, 0.999424128085123600, 0.999425823459107690, 0.999427516334527200, 0.999429206711378030, 0.999430894589655730, 0.999432579969356190, 0.999434262850475210, +0.999435943233008660, 0.999437621116952220, 0.999439296502301680, 0.999440969389052910, 0.999442639777201710, 0.999444307666743970, 0.999445973057675460, 0.999447635949991970, +0.999449296343689400, 0.999450954238763620, 0.999452609635210320, 0.999454262533025610, 0.999455912932205260, 0.999457560832745060, 0.999459206234641020, 0.999460849137889020, +0.999462489542484840, 0.999464127448424390, 0.999465762855703650, 0.999467395764318530, 0.999469026174264810, 0.999470654085538700, 0.999472279498135770, 0.999473902412052250, +0.999475522827284020, 0.999477140743826990, 0.999478756161677030, 0.999480369080830160, 0.999481979501282370, 0.999483587423029670, 0.999485192846067960, 0.999486795770393340, +0.999488396196001720, 0.999489994122889080, 0.999491589551051440, 0.999493182480484910, 0.999494772911185380, 0.999496360843148860, 0.999497946276371450, 0.999499529210849280, +0.999501109646578230, 0.999502687583554320, 0.999504263021773750, 0.999505835961232550, 0.999507406401926700, 0.999508974343852440, 0.999510539787005660, 0.999512102731382580, +0.999513663176979210, 0.999515221123791650, 0.999516776571816150, 0.999518329521048580, 0.999519879971485280, 0.999521427923122260, 0.999522973375955640, 0.999524516329981630, +0.999526056785196240, 0.999527594741595800, 0.999529130199176330, 0.999530663157934040, 0.999532193617865160, 0.999533721578965690, 0.999535247041231980, 0.999536770004660120, +0.999538290469246360, 0.999539808434986910, 0.999541323901877890, 0.999542836869915520, 0.999544347339096140, 0.999545855309415860, 0.999547360780870920, 0.999548863753457640, +0.999550364227172140, 0.999551862202010750, 0.999553357677969710, 0.999554850655045240, 0.999556341133233660, 0.999557829112531330, 0.999559314592934340, 0.999560797574439050, +0.999562278057041790, 0.999563756040738770, 0.999565231525526450, 0.999566704511401060, 0.999568174998358820, 0.999569642986396170, 0.999571108475509450, 0.999572571465695000, +0.999574031956949050, 0.999575489949268040, 0.999576945442648300, 0.999578398437086180, 0.999579848932578120, 0.999581296929120340, 0.999582742426709410, 0.999584185425341550, +0.999585625925013320, 0.999587063925720940, 0.999588499427460970, 0.999589932430229760, 0.999591362934023620, 0.999592790938839130, 0.999594216444672720, 0.999595639451520630, +0.999597059959379530, 0.999598477968245860, 0.999599893478115840, 0.999601306488986150, 0.999602717000853240, 0.999604125013713540, 0.999605530527563510, 0.999606933542399600, +0.999608334058218360, 0.999609732075016360, 0.999611127592789920, 0.999612520611535830, 0.999613911131250310, 0.999615299151930040, 0.999616684673571450, 0.999618067696171230, +0.999619448219725930, 0.999620826244231870, 0.999622201769685750, 0.999623574796084210, 0.999624945323423720, 0.999626313351700820, 0.999627678880912090, 0.999629041911054280, +0.999630402442123760, 0.999631760474117280, 0.999633116007031420, 0.999634469040862840, 0.999635819575607990, 0.999637167611263530, 0.999638513147826260, 0.999639856185292610, +0.999641196723659480, 0.999642534762923200, 0.999643870303080660, 0.999645203344128430, 0.999646533886063170, 0.999647861928881660, 0.999649187472580360, 0.999650510517156250, +0.999651831062605690, 0.999653149108925660, 0.999654464656112740, 0.999655777704163690, 0.999657088253075200, 0.999658396302843920, 0.999659701853466750, 0.999661004904940250, +0.999662305457261200, 0.999663603510426490, 0.999664899064432680, 0.999666192119276650, 0.999667482674955200, 0.999668770731464980, 0.999670056288802790, 0.999671339346965500, +0.999672619905949910, 0.999673897965752790, 0.999675173526370920, 0.999676446587800970, 0.999677717150040060, 0.999678985213084850, 0.999680250776932120, 0.999681513841578770, +0.999682774407021580, 0.999684032473257540, 0.999685288040283450, 0.999686541108096070, 0.999687791676692310, 0.999689039746069150, 0.999690285316223390, 0.999691528387151810, +0.999692768958851510, 0.999694007031319280, 0.999695242604552000, 0.999696475678546690, 0.999697706253300120, 0.999698934328809300, 0.999700159905071110, 0.999701382982082550, +0.999702603559840530, 0.999703821638342040, 0.999705037217583970, 0.999706250297563210, 0.999707460878277000, 0.999708668959721990, 0.999709874541895420, 0.999711077624794050, +0.999712278208415130, 0.999713476292755420, 0.999714671877812040, 0.999715864963582000, 0.999717055550062180, 0.999718243637249810, 0.999719429225141900, 0.999720612313735320, +0.999721792903027320, 0.999722970993014770, 0.999724146583694680, 0.999725319675064390, 0.999726490267120680, 0.999727658359860880, 0.999728823953281890, 0.999729987047380810, +0.999731147642154760, 0.999732305737600860, 0.999733461333716100, 0.999734614430497830, 0.999735765027942920, 0.999736913126048620, 0.999738058724812140, 0.999739201824230370, +0.999740342424300650, 0.999741480525020100, 0.999742616126385820, 0.999743749228395040, 0.999744879831044870, 0.999746007934332440, 0.999747133538255060, 0.999748256642809860, +0.999749377247993950, 0.999750495353804670, 0.999751610960239120, 0.999752724067294540, 0.999753834674968140, 0.999754942783257160, 0.999756048392158920, 0.999757151501670440, +0.999758252111789040, 0.999759350222512170, 0.999760445833836830, 0.999761538945760360, 0.999762629558279990, 0.999763717671393160, 0.999764803285096980, 0.999765886399388900, +0.999766967014265930, 0.999768045129725610, 0.999769120745765290, 0.999770193862381970, 0.999771264479573320, 0.999772332597336440, 0.999773398215668800, 0.999774461334567600, +0.999775521954030300, 0.999776580074054120, 0.999777635694636510, 0.999778688815774810, 0.999779739437466450, 0.999780787559708670, 0.999781833182498910, 0.999782876305834620, +0.999783916929713130, 0.999784955054131900, 0.999785990679088240, 0.999787023804579510, 0.999788054430603370, 0.999789082557157040, 0.999790108184237970, 0.999791131311843610, +0.999792151939971510, 0.999793170068619010, 0.999794185697783560, 0.999795198827462590, 0.999796209457653680, 0.999797217588354270, 0.999798223219561800, 0.999799226351273720, +0.999800226983487580, 0.999801225116200950, 0.999802220749411270, 0.999803213883115990, 0.999804204517312670, 0.999805192651998850, 0.999806178287172000, 0.999807161422829770, +0.999808142058969620, 0.999809120195589100, 0.999810095832685760, 0.999811068970257290, 0.999812039608301010, 0.999813007746814700, 0.999813973385795920, 0.999814936525242120, +0.999815897165150960, 0.999816855305520110, 0.999817810946347140, 0.999818764087629600, 0.999819714729365150, 0.999820662871551470, 0.999821608514186110, 0.999822551657266740, +0.999823492300790930, 0.999824430444756440, 0.999825366089160840, 0.999826299234001900, 0.999827229879277190, 0.999828158024984370, 0.999829083671121110, 0.999830006817685190, +0.999830927464674280, 0.999831845612086050, 0.999832761259918160, 0.999833674408168390, 0.999834585056834420, 0.999835493205914030, 0.999836398855404870, 0.999837302005304740, +0.999838202655611300, 0.999839100806322430, 0.999839996457435820, 0.999840889608949120, 0.999841780260860240, 0.999842668413166940, 0.999843554065866890, 0.999844437218958100, +0.999845317872438130, 0.999846196026304870, 0.999847071680556090, 0.999847944835189680, 0.999848815490203320, 0.999849683645595010, 0.999850549301362520, 0.999851412457503530, +0.999852273114016140, 0.999853131270898030, 0.999853986928147090, 0.999854840085761200, 0.999855690743738150, 0.999856538902075930, 0.999857384560772330, 0.999858227719825240, +0.999859068379232660, 0.999859906538992370, 0.999860742199102260, 0.999861575359560330, 0.999862406020364470, 0.999863234181512680, 0.999864059843002640, 0.999864883004832560, +0.999865703667000340, 0.999866521829503750, 0.999867337492340910, 0.999868150655509600, 0.999868961319008040, 0.999869769482834010, 0.999870575146985630, 0.999871378311460780, +0.999872178976257460, 0.999872977141373800, 0.999873772806807560, 0.999874565972556970, 0.999875356638619930, 0.999876144804994540, 0.999876930471678690, 0.999877713638670620, +0.999878494305968200, 0.999879272473569560, 0.999880048141472800, 0.999880821309675820, 0.999881591978176830, 0.999882360146973960, 0.999883125816065090, 0.999883888985448440, +0.999884649655122030, 0.999885407825083950, 0.999886163495332440, 0.999886916665865490, 0.999887667336681220, 0.999888415507777850, 0.999889161179153390, 0.999889904350806050, +0.999890645022733950, 0.999891383194935200, 0.999892118867408030, 0.999892852040150550, 0.999893582713160980, 0.999894310886437430, 0.999895036559978020, 0.999895759733781090, +0.999896480407844850, 0.999897198582167300, 0.999897914256746790, 0.999898627431581420, 0.999899338106669530, 0.999900046282009350, 0.999900751957598980, 0.999901455133436760, +0.999902155809520910, 0.999902853985849660, 0.999903549662421340, 0.999904242839234070, 0.999904933516286180, 0.999905621693576000, 0.999906307371101750, 0.999906990548861780, +0.999907671226854310, 0.999908349405077670, 0.999909025083530080, 0.999909698262209990, 0.999910368941115620, 0.999911037120245430, 0.999911702799597510, 0.999912365979170440, +0.999913026658962420, 0.999913684838971810, 0.999914340519197030, 0.999914993699636320, 0.999915644380288130, 0.999916292561150890, 0.999916938242222940, 0.999917581423502620, +0.999918222104988370, 0.999918860286678530, 0.999919495968571550, 0.999920129150665750, 0.999920759832959800, 0.999921388015451830, 0.999922013698140380, 0.999922636881023900, +0.999923257564100940, 0.999923875747369740, 0.999924491430828840, 0.999925104614476700, 0.999925715298311870, 0.999926323482332680, 0.999926929166537800, 0.999927532350925460, +0.999928133035494330, 0.999928731220242950, 0.999929326905169670, 0.999929920090273040, 0.999930510775551620, 0.999931098961003960, 0.999931684646628630, 0.999932267832423950, +0.999932848518388710, 0.999933426704521230, 0.999934002390820310, 0.999934575577284270, 0.999935146263911890, 0.999935714450701620, 0.999936280137652010, 0.999936843324761740, +0.999937404012029350, 0.999937962199453520, 0.999938517887032700, 0.999939071074765650, 0.999939621762650830, 0.999940169950687020, 0.999940715638872770, 0.999941258827206750, +0.999941799515687510, 0.999942337704313840, 0.999942873393084410, 0.999943406581997650, 0.999943937271052460, 0.999944465460247400, 0.999944991149581130, 0.999945514339052430, +0.999946035028659970, 0.999946553218402310, 0.999947068908278450, 0.999947582098286820, 0.999948092788426220, 0.999948600978695420, 0.999949106669093090, 0.999949609859618000, +0.999950110550268830, 0.999950608741044470, 0.999951104431943570, 0.999951597622964930, 0.999952088314107200, 0.999952576505369390, 0.999953062196750060, 0.999953545388248100, +0.999954026079862280, 0.999954504271591380, 0.999954979963434190, 0.999955453155389580, 0.999955923847456350, 0.999956392039633270, 0.999956857731919220, 0.999957320924313000, +0.999957781616813590, 0.999958239809419670, 0.999958695502130120, 0.999959148694943840, 0.999959599387859720, 0.999960047580876530, 0.999960493273993280, 0.999960936467208740, +0.999961377160521910, 0.999961815353931690, 0.999962251047436860, 0.999962684241036400, 0.999963114934729220, 0.999963543128514320, 0.999963968822390580, 0.999964392016356780, +0.999964812710412150, 0.999965230904555470, 0.999965646598785620, 0.999966059793101710, 0.999966470487502650, 0.999966878681987410, 0.999967284376554910, 0.999967687571204240, +0.999968088265934420, 0.999968486460744320, 0.999968882155633070, 0.999969275350599540, 0.999969666045642860, 0.999970054240762020, 0.999970439935956020, 0.999970823131223870, +0.999971203826564680, 0.999971582021977560, 0.999971957717461500, 0.999972330913015410, 0.999972701608638600, 0.999973069804329980, 0.999973435500088770, 0.999973798695913850, +0.999974159391804560, 0.999974517587759790, 0.999974873283778760, 0.999975226479860590, 0.999975577176004270, 0.999975925372209030, 0.999976271068473980, 0.999976614264798220, +0.999976954961181000, 0.999977293157621410, 0.999977628854118450, 0.999977962050671580, 0.999978292747279670, 0.999978620943942080, 0.999978946640658010, 0.999979269837426470, +0.999979590534246790, 0.999979908731118080, 0.999980224428039690, 0.999980537625010710, 0.999980848322030380, 0.999981156519097910, 0.999981462216212650, 0.999981765413373580, +0.999982066110580270, 0.999982364307831610, 0.999982660005127140, 0.999982953202466000, 0.999983243899847500, 0.999983532097270870, 0.999983817794735440, 0.999984100992240440, +0.999984381689785210, 0.999984659887369070, 0.999984935584991130, 0.999985208782650960, 0.999985479480347770, 0.999985747678080910, 0.999986013375849580, 0.999986276573653240, +0.999986537271491230, 0.999986795469362980, 0.999987051167267600, 0.999987304365204670, 0.999987555063173380, 0.999987803261173310, 0.999988048959203680, 0.999988292157263920, +0.999988532855353500, 0.999988771053471730, 0.999989006751617950, 0.999989239949791720, 0.999989470647992370, 0.999989698846219350, 0.999989924544472110, 0.999990147742750080, +0.999990368441052600, 0.999990586639379230, 0.999990802337729410, 0.999991015536102590, 0.999991226234498210, 0.999991434432915720, 0.999991640131354780, 0.999991843329814610, +0.999992044028294890, 0.999992242226795060, 0.999992437925314560, 0.999992631123853060, 0.999992821822409890, 0.999993010020984730, 0.999993195719577120, 0.999993378918186400, +0.999993559616812240, 0.999993737815454200, 0.999993913514111820, 0.999994086712784670, 0.999994257411472300, 0.999994425610174260, 0.999994591308890230, 0.999994754507619650, +0.999994915206362190, 0.999995073405117510, 0.999995229103885050, 0.999995382302664600, 0.999995533001455610, 0.999995681200257840, 0.999995826899070850, 0.999995970097894320, +0.999996110796727900, 0.999996248995571160, 0.999996384694423760, 0.999996517893285470, 0.999996648592155870, 0.999996776791034600, 0.999996902489921460, 0.999997025688815990, +0.999997146387717970, 0.999997264586627080, 0.999997380285543080, 0.999997493484465540, 0.999997604183394340, 0.999997712382329150, 0.999997818081269640, 0.999997921280215580, +0.999998021979166760, 0.999998120178122840, 0.999998215877083600, 0.999998309076048920, 0.999998399775018370, 0.999998487973991820, 0.999998573672969180, 0.999998656871950000, +0.999998737570934160, 0.999998815769921560, 0.999998891468911850, 0.999998964667904940, 0.999999035366900600, 0.999999103565898610, 0.999999169264898960, 0.999999232463901320, +0.999999293162905700, 0.999999351361911760, 0.999999407060919500, 0.999999460259928700, 0.999999510958939240, 0.999999559157951020, 0.999999604856963820, 0.999999648055977740, +0.999999688754992460, 0.999999726954007960, 0.999999762653024150, 0.999999795852040910, 0.999999826551058240, 0.999999854750076020, 0.999999880449094050, 0.999999903648112530, +0.999999924347131140, 0.999999942546149990, 0.999999958245168960, 0.999999971444187950, 0.999999982143207180, 0.999999990342226310, 0.999999996041245560, 0.999999999240264840, +0.999999999939284010, 0.999999998138303310, 0.999999993837322520, 0.999999987036341740, 0.999999977735361090, 0.999999965934380450, 0.999999951633399830, 0.999999934832419330, +0.999999915531439080, 0.999999893730459060, 0.999999869429479270, 0.999999842628499720, 0.999999813327520640, 0.999999781526542010, 0.999999747225563950, 0.999999710424586570, +0.999999671123609770, 0.999999629322633980, 0.999999585021658980, 0.999999538220684990, 0.999999488919712240, 0.999999437118740730, 0.999999382817770680, 0.999999326016802190, +0.999999266715835280, 0.999999204914870270, 0.999999140613907270, 0.999999073812946390, 0.999999004511987750, 0.999998932711031690, 0.999998858410078300, 0.999998781609127700, +0.999998702308180220, 0.999998620507235980, 0.999998536206295090, 0.999998449405357980, 0.999998360104424670, 0.999998268303495470, 0.999998174002570630, 0.999998077201650350, +0.999997977900734860, 0.999997876099824490, 0.999997771798919350, 0.999997664998019790, 0.999997555697126120, 0.999997443896238570, 0.999997329595357360, 0.999997212794482840, +0.999997093493615210, 0.999996971692754920, 0.999996847391902310, 0.999996720591057380, 0.999996591290220780, 0.999996459489392640, 0.999996325188573400, 0.999996188387763390, +0.999996049086962820, 0.999995907286172160, 0.999995762985391720, 0.999995616184621850, 0.999995466883862980, 0.999995315083115450, 0.999995160782379600, 0.999995003981655860, +0.999994844680944570, 0.999994682880246290, 0.999994518579561230, 0.999994351778889850, 0.999994182478232570, 0.999994010677589860, 0.999993836376962150, 0.999993659576349890, +0.999993480275753410, 0.999993298475173260, 0.999993114174609790, 0.999992927374063640, 0.999992738073535170, 0.999992546273024810, 0.999992351972533110, 0.999992155172060530, +0.999991955871607500, 0.999991754071174580, 0.999991549770762320, 0.999991342970371180, 0.999991133670001700, 0.999990921869654440, 0.999990707569329840, 0.999990490769028350, +0.999990271468750750, 0.999990049668497470, 0.999989825368269080, 0.999989598568066020, 0.999989369267889060, 0.999989137467738650, 0.999988903167615460, 0.999988666367519930, +0.999988427067452720, 0.999988185267414510, 0.999987940967405840, 0.999987694167427280, 0.999987444867479480, 0.999987193067563120, 0.999986938767678750, 0.999986681967826920, +0.999986422668008520, 0.999986160868224010, 0.999985896568474140, 0.999985629768759490, 0.999985360469080820, 0.999985088669438690, 0.999984814369833890, 0.999984537570267060, +0.999984258270738780, 0.999983976471249920, 0.999983692171801160, 0.999983405372393160, 0.999983116073026590, 0.999982824273702330, 0.999982529974420940, 0.999982233175183200, +0.999981933875989880, 0.999981632076841760, 0.999981327777739630, 0.999981020978684020, 0.999980711679675950, 0.999980399880716190, 0.999980085581805290, 0.999979768782944260, +0.999979449484133750, 0.999979127685374560, 0.999978803386667670, 0.999978476588013750, 0.999978147289413590, 0.999977815490868170, 0.999977481192378060, 0.999977144393944360, +0.999976805095567740, 0.999976463297249100, 0.999976118998989420, 0.999975772200789260, 0.999975422902649850, 0.999975071104571730, 0.999974716806556030, 0.999974360008603510, +0.999974000710715070, 0.999973638912891700, 0.999973274615134190, 0.999972907817443410, 0.999972538519820490, 0.999972166722266190, 0.999971792424781400, 0.999971415627367240, +0.999971036330024490, 0.999970654532754130, 0.999970270235557180, 0.999969883438434510, 0.999969494141387140, 0.999969102344416050, 0.999968708047522140, 0.999968311250706510, +0.999967911953970170, 0.999967510157314000, 0.999967105860739000, 0.999966699064246290, 0.999966289767836860, 0.999965877971511600, 0.999965463675271730, 0.999965046879118250, +0.999964627583052050, 0.999964205787074350, 0.999963781491186030, 0.999963354695388440, 0.999962925399682350, 0.999962493604068970, 0.999962059308549310, 0.999961622513124480, +0.999961183217795700, 0.999960741422563860, 0.999960297127430290, 0.999959850332395870, 0.999959401037461840, 0.999958949242629290, 0.999958494947899460, 0.999958038153273330, +0.999957578858752140, 0.999957117064336990, 0.999956652770028990, 0.999956185975829470, 0.999955716681739330, 0.999955244887760000, 0.999954770593892590, 0.999954293800138230, +0.999953814506498120, 0.999953332712973490, 0.999952848419565440, 0.999952361626275320, 0.999951872333104340, 0.999951380540053610, 0.999950886247124470, 0.999950389454318130, +0.999949890161635820, 0.999949388369078760, 0.999948884076648280, 0.999948377284345600, 0.999947867992171830, 0.999947356200128530, 0.999946841908216810, 0.999946325116438000, +0.999945805824793310, 0.999945284033284200, 0.999944759741911770, 0.999944232950677580, 0.999943703659582630, 0.999943171868628580, 0.999942637577816540, 0.999942100787147850, +0.999941561496624050, 0.999941019706246270, 0.999940475416015940, 0.999939928625934390, 0.999939379336002960, 0.999938827546223210, 0.999938273256596340, 0.999937716467123820, +0.999937157177806960, 0.999936595388647210, 0.999936031099646020, 0.999935464310804710, 0.999934895022124850, 0.999934323233607650, 0.999933748945254660, 0.999933172157067230, +0.999932592869046900, 0.999932011081195120, 0.999931426793513320, 0.999930840006002960, 0.999930250718665480, 0.999929658931502430, 0.999929064644515140, 0.999928467857705280, +0.999927868571074190, 0.999927266784623400, 0.999926662498354490, 0.999926055712268890, 0.999925446426368270, 0.999924834640653960, 0.999924220355127510, 0.999923603569790490, +0.999922984284644540, 0.999922362499691130, 0.999921738214931800, 0.999921111430368100, 0.999920482146001710, 0.999919850361833950, 0.999919216077866710, 0.999918579294101440, +0.999917940010539570, 0.999917298227183000, 0.999916653944033060, 0.999916007161091640, 0.999915357878360060, 0.999914706095840210, 0.999914051813533540, 0.999913395031441720, +0.999912735749566410, 0.999912073967909270, 0.999911409686471960, 0.999910742905256060, 0.999910073624263430, 0.999909401843495530, 0.999908727562954120, 0.999908050782640890, +0.999907371502557600, 0.999906689722705800, 0.999906005443087280, 0.999905318663703800, 0.999904629384557040, 0.999903937605648660, 0.999903243326980440, 0.999902546548554150, +0.999901847270371460, 0.999901145492434140, 0.999900441214743970, 0.999899734437302730, 0.999899025160112090, 0.999898313383173920, 0.999897599106490010, 0.999896882330062020, +0.999896163053891950, 0.999895441277981360, 0.999894717002332230, 0.999893990226946250, 0.999893260951825290, 0.999892529176971250, 0.999891794902385780, 0.999891058128070890, +0.999890318854028350, 0.999889577080260050, 0.999888832806767770, 0.999888086033553390, 0.999887336760618920, 0.999886584987966010, 0.999885830715596560, 0.999885073943512670, +0.999884314671716010, 0.999883552900208580, 0.999882788628992270, 0.999882021858069070, 0.999881252587440650, 0.999880480817109230, 0.999879706547076590, 0.999878929777344600, +0.999878150507915400, 0.999877368738790740, 0.999876584469972740, 0.999875797701463180, 0.999875008433264270, 0.999874216665377680, 0.999873422397805630, 0.999872625630550020, +0.999871826363612830, 0.999871024596996060, 0.999870220330701830, 0.999869413564731910, 0.999868604299088530, 0.999867792533773670, 0.999866978268789230, 0.999866161504137430, +0.999865342239820270, 0.999864520475839620, 0.999863696212197730, 0.999862869448896570, 0.999862040185938270, 0.999861208423324930, 0.999860374161058550, 0.999859537399141130, +0.999858698137575000, 0.999857856376362040, 0.999857012115504480, 0.999856165355004320, 0.999855316094863780, 0.999854464335084960, 0.999853610075669970, 0.999852753316621050, +0.999851894057940170, 0.999851032299629460, 0.999850168041691360, 0.999849301284127740, 0.999848432026940850, 0.999847560270132880, 0.999846686013705970, 0.999845809257662420, +0.999844930002004360, 0.999844048246734010, 0.999843163991853470, 0.999842277237364960, 0.999841387983270820, 0.999840496229573270, 0.999839601976274420, 0.999838705223376590, +0.999837805970882010, 0.999836904218792790, 0.999835999967111480, 0.999835093215840080, 0.999834183964980920, 0.999833272214536330, 0.999832357964508640, 0.999831441214899970, +0.999830521965712760, 0.999829600216949220, 0.999828675968611580, 0.999827749220702390, 0.999826819973223760, 0.999825888226178020, 0.999824953979567720, 0.999824017233394870, +0.999823077987662120, 0.999822136242371600, 0.999821191997525730, 0.999820245253126960, 0.999819296009177520, 0.999818344265679840, 0.999817390022636250, 0.999816433280049210, +0.999815474037921150, 0.999814512296254400, 0.999813548055051290, 0.999812581314314390, 0.999811612074046010, 0.999810640334248600, 0.999809666094924500, 0.999808689356076360, +0.999807710117706420, 0.999806728379817320, 0.999805744142411300, 0.999804757405490910, 0.999803768169058690, 0.999802776433116990, 0.999801782197668350, 0.999800785462715340, +0.999799786228260270, 0.999798784494305810, 0.999797780260854310, 0.999796773527908410, 0.999795764295470570, 0.999794752563543330, 0.999793738332129260, 0.999792721601230780, +0.999791702370850470, 0.999790680640990970, 0.999789656411654740, 0.999788629682844320, 0.999787600454562390, 0.999786568726811380, 0.999785534499594060, 0.999784497772912890, +0.999783458546770420, 0.999782416821169310, 0.999781372596112110, 0.999780325871601590, 0.999779276647640210, 0.999778224924230630, 0.999777170701375510, 0.999776113979077400, +0.999775054757339080, 0.999773993036163100, 0.999772928815552130, 0.999771862095508830, 0.999770792876035870, 0.999769721157136030, 0.999768646938811730, 0.999767570221065880, +0.999766491003901140, 0.999765409287320160, 0.999764325071325620, 0.999763238355920290, 0.999762149141106840, 0.999761057426888140, 0.999759963213266660, 0.999758866500245260, +0.999757767287826840, 0.999756665576013840, 0.999755561364809250, 0.999754454654215750, 0.999753345444236110, 0.999752233734873100, 0.999751119526129610, 0.999750002818008190, +0.999748883610511840, 0.999747761903643230, 0.999746637697405240, 0.999745510991800650, 0.999744381786832230, 0.999743250082502980, 0.999742115878815450, 0.999740979175772760, +0.999739839973377560, 0.999738698271632750, 0.999737554070541210, 0.999736407370105830, 0.999735258170329380, 0.999734106471214860, 0.999732952272764930, 0.999731795574982820, +0.999730636377871070, 0.999729474681432690, 0.999728310485670790, 0.999727143790588020, 0.999725974596187390, 0.999724802902471790, 0.999723628709444310, 0.999722452017107630, +0.999721272825464860, 0.999720091134518870, 0.999718906944272680, 0.999717720254729270, 0.999716531065891530, 0.999715339377762470, 0.999714145190345070, 0.999712948503642230, +0.999711749317657160, 0.999710547632392640, 0.999709343447851780, 0.999708136764037470, 0.999706927580952920, 0.999705715898601020, 0.999704501716984770, 0.999703285036107280, +0.999702065855971660, 0.999700844176580890, 0.999699619997937880, 0.999698393320045950, 0.999697164142907990, 0.999695932466527100, 0.999694698290906400, 0.999693461616048880, +0.999692222441957770, 0.999690980768636160, 0.999689736596087060, 0.999688489924313580, 0.999687240753318940, 0.999685989083106130, 0.999684734913678370, 0.999683478245038780, +0.999682219077190460, 0.999680957410136630, 0.999679693243880400, 0.999678426578424980, 0.999677157413773390, 0.999675885749929050, 0.999674611586894860, 0.999673334924674250, +0.999672055763270230, 0.999670774102686120, 0.999669489942925040, 0.999668203283990200, 0.999666914125884930, 0.999665622468612350, 0.999664328312175670, 0.999663031656578220, +0.999661732501823220, 0.999660430847913780, 0.999659126694853350, 0.999657820042645140, 0.999656510891292260, 0.999655199240798150, 0.999653885091166040, 0.999652568442399250, +0.999651249294501110, 0.999649927647474730, 0.999648603501323560, 0.999647276856050930, 0.999645947711660040, 0.999644616068154250, 0.999643281925536980, 0.999641945283811560, +0.999640606142981230, 0.999639264503049300, 0.999637920364019330, 0.999636573725894540, 0.999635224588678260, 0.999633872952373940, 0.999632518816985010, 0.999631162182514690, +0.999629803048966540, 0.999628441416343770, 0.999627077284649950, 0.999625710653888500, 0.999624341524062650, 0.999622969895176070, 0.999621595767232090, 0.999620219140234020, +0.999618840014185440, 0.999617458389089770, 0.999616074264950360, 0.999614687641770860, 0.999613298519554610, 0.999611906898305150, 0.999610512778025930, 0.999609116158720390, +0.999607717040392090, 0.999606315423044460, 0.999604911306681050, 0.999603504691305430, 0.999602095576920920, 0.999600683963531300, 0.999599269851139890, 0.999597853239750370, +0.999596434129366160, 0.999595012519990830, 0.999593588411628040, 0.999592161804281230, 0.999590732697954070, 0.999589301092650100, 0.999587866988372880, 0.999586430385125850, +0.999584991282912890, 0.999583549681737460, 0.999582105581602990, 0.999580658982513360, 0.999579209884472130, 0.999577758287482850, 0.999576304191549190, 0.999574847596674700, +0.999573388502863150, 0.999571926910118090, 0.999570462818443200, 0.999568996227842230, 0.999567527138318760, 0.999566055549876430, 0.999564581462518920, 0.999563104876250110, +0.999561625791073440, 0.999560144206992680, 0.999558660124011510, 0.999557173542133800, 0.999555684461363110, 0.999554192881703220, 0.999552698803157890, 0.999551202225730790, +0.999549703149425590, 0.999548201574246290, 0.999546697500196310, 0.999545190927279780, 0.999543681855500130, 0.999542170284861360, 0.999540656215367140, 0.999539139647021240, +0.999537620579827530, 0.999536099013789700, 0.999534574948911740, 0.999533048385197300, 0.999531519322650160, 0.999529987761274330, 0.999528453701073460, 0.999526917142051440, +0.999525378084212270, 0.999523836527559490, 0.999522292472097230, 0.999520745917829130, 0.999519196864759210, 0.999517645312891330, 0.999516091262229400, 0.999514534712777180, +0.999512975664538560, 0.999511414117517540, 0.999509850071718000, 0.999508283527143830, 0.999506714483799020, 0.999505142941687350, 0.999503568900812820, 0.999501992361179430, +0.999500413322790940, 0.999498831785651460, 0.999497247749765010, 0.999495661215135330, 0.999494072181766560, 0.999492480649662560, 0.999490886618827350, 0.999489290089264900, +0.999487691060979340, 0.999486089533974440, 0.999484485508254420, 0.999482878983823150, 0.999481269960684650, 0.999479658438843010, 0.999478044418302130, 0.999476427899066210, +0.999474808881139270, 0.999473187364525280, 0.999471563349228260, 0.999469936835252430, 0.999468307822601650, 0.999466676311280170, 0.999465042301291960, 0.999463405792641150, +0.999461766785331940, 0.999460125279368230, 0.999458481274754120, 0.999456834771493940, 0.999455185769591580, 0.999453534269051370, 0.999451880269877190, 0.999450223772073380, +0.999448564775644030, 0.999446903280593270, 0.999445239286925190, 0.999443572794644020, 0.999441903803753970, 0.999440232314259160, 0.999438558326163680, 0.999436881839471880, +0.999435202854187850, 0.999433521370315820, 0.999431837387860010, 0.999430150906824630, 0.999428461927213800, 0.999426770449031830, 0.999425076472282960, 0.999423379996971390, +0.999421681023101360, 0.999419979550677180, 0.999418275579703090, 0.999416569110183170, 0.999414860142121890, 0.999413148675523440, 0.999411434710392180, 0.999409718246732300, +0.999407999284548150, 0.999406277823843950, 0.999404553864624120, 0.999402827406892790, 0.999401098450654500, 0.999399366995913470, 0.999397633042673930, 0.999395896590940410, +0.999394157640717040, 0.999392416192008360, 0.999390672244818590, 0.999388925799152170, 0.999387176855013440, 0.999385425412406820, 0.999383671471336550, 0.999381915031807180, +0.999380156093822910, 0.999378394657388310, 0.999376630722507820, 0.999374864289185650, 0.999373095357426240, 0.999371323927234270, 0.999369549998613830, 0.999367773571569580, +0.999365994646105980, 0.999364213222227350, 0.999362429299938130, 0.999360642879242870, 0.999358853960146010, 0.999357062542652000, 0.999355268626765270, 0.999353472212490490, +0.999351673299831990, 0.999349871888794320, 0.999348067979381920, 0.999346261571599340, 0.999344452665451130, 0.999342641260941860, 0.999340827358075940, 0.999339010956857950, +0.999337192057292430, 0.999335370659383940, 0.999333546763137020, 0.999331720368556110, 0.999329891475646100, 0.999328060084411220, 0.999326226194856230, 0.999324389806985680, +0.999322550920804240, 0.999320709536316350, 0.999318865653526680, 0.999317019272439770, 0.999315170393060390, 0.999313319015393110, 0.999311465139442580, 0.999309608765213350, +0.999307749892709980, 0.999305888521937360, 0.999304024652899910, 0.999302158285602540, 0.999300289420049670, 0.999298418056246200, 0.999296544194196560, 0.999294667833905640, +0.999292788975377990, 0.999290907618618380, 0.999289023763631490, 0.999287137410422080, 0.999285248558994810, 0.999283357209354350, 0.999281463361505580, 0.999279567015453170, +0.999277668171201780, 0.999275766828756300, 0.999273862988121380, 0.999271956649301680, 0.999270047812302220, 0.999268136477127640, 0.999266222643782620, 0.999264306312272140, +0.999262387482600880, 0.999260466154773600, 0.999258542328795190, 0.999256616004670420, 0.999254687182404180, 0.999252755862001130, 0.999250822043466270, 0.999248885726804260, +0.999246946912020100, 0.999245005599118550, 0.999243061788104510, 0.999241115478982760, 0.999239166671758270, 0.999237215366435840, 0.999235261563020450, 0.999233305261516770, +0.999231346461929900, 0.999229385164264630, 0.999227421368525940, 0.999225455074718720, 0.999223486282847850, 0.999221514992918220, 0.999219541204934840, 0.999217564918902570, +0.999215586134826420, 0.999213604852711270, 0.999211621072562230, 0.999209634794383960, 0.999207646018181790, 0.999205654743960390, 0.999203660971724860, 0.999201664701480200, +0.999199665933231280, 0.999197664666983340, 0.999195660902741150, 0.999193654640509910, 0.999191645880294410, 0.999189634622099860, 0.999187620865931270, 0.999185604611793510, +0.999183585859691800, 0.999181564609631150, 0.999179540861616530, 0.999177514615653070, 0.999175485871745870, 0.999173454629899930, 0.999171420890120340, 0.999169384652412230, +0.999167345916780690, 0.999165304683230730, 0.999163260951767440, 0.999161214722396160, 0.999159165995121780, 0.999157114769949390, 0.999155061046884340, 0.999153004825931500, +0.999150946107096320, 0.999148884890383670, 0.999146821175798780, 0.999144754963346980, 0.999142686253033150, 0.999140615044862620, 0.999138541338840610, 0.999136465134972230, +0.999134386433262690, 0.999132305233717210, 0.999130221536340900, 0.999128135341139090, 0.999126046648116880, 0.999123955457279610, 0.999121861768632380, 0.999119765582180630, +0.999117666897929360, 0.999115565715884000, 0.999113462036049670, 0.999111355858431690, 0.999109247183035290, 0.999107136009865780, 0.999105022338928510, 0.999102906170228680, +0.999100787503771510, 0.999098666339562350, 0.999096542677606610, 0.999094416517909530, 0.999092287860476320, 0.999090156705312430, 0.999088023052423170, 0.999085886901813770, +0.999083748253489780, 0.999081607107456300, 0.999079463463718900, 0.999077317322282780, 0.999075168683153380, 0.999073017546336040, 0.999070863911836190, 0.999068707779659170, +0.999066549149810410, 0.999064388022295250, 0.999062224397119110, 0.999060058274287450, 0.999057889653805600, 0.999055718535679090, 0.999053544919913160, 0.999051368806513460, +0.999049190195485330, 0.999047009086834300, 0.999044825480565610, 0.999042639376684920, 0.999040450775197650, 0.999038259676109150, 0.999036066079425080, 0.999033869985150870, +0.999031671393291960, 0.999029470303853920, 0.999027266716842170, 0.999025060632262150, 0.999022852050119650, 0.999020640970419870, 0.999018427393168600, 0.999016211318371260, +0.999013992746033310, 0.999011771676160510, 0.999009548108758190, 0.999007322043831910, 0.999005093481387440, 0.999002862421430220, 0.999000628863965900, 0.998998392808999940, +0.998996154256537980, 0.998993913206585700, 0.998991669659148540, 0.998989423614232260, 0.998987175071842430, 0.998984924031984690, 0.998982670494664600, 0.998980414459887830, +0.998978155927660040, 0.998975894897986880, 0.998973631370873920, 0.998971365346326910, 0.998969096824351530, 0.998966825804953440, 0.998964552288138190, 0.998962276273911650, +0.998959997762279280, 0.998957716753247070, 0.998955433246820460, 0.998953147243005320, 0.998950858741807330, 0.998948567743232150, 0.998946274247285550, 0.998943978253973300, +0.998941679763301060, 0.998939378775274610, 0.998937075289899830, 0.998934769307182280, 0.998932460827127830, 0.998930149849742150, 0.998927836375031130, 0.998925520403000640, +0.998923201933656250, 0.998920880967003820, 0.998918557503049250, 0.998916231541798210, 0.998913903083256670, 0.998911572127430310, 0.998909238674325130, 0.998906902723946780, +0.998904564276301140, 0.998902223331394110, 0.998899879889231570, 0.998897533949819280, 0.998895185513163140, 0.998892834579269140, 0.998890481148142940, 0.998888125219790650, +0.998885766794217920, 0.998883405871430870, 0.998881042451435270, 0.998878676534237010, 0.998876308119842180, 0.998873937208256460, 0.998871563799486050, 0.998869187893536630, +0.998866809490414180, 0.998864428590124810, 0.998862045192674300, 0.998859659298068750, 0.998857270906313930, 0.998854880017416070, 0.998852486631380930, 0.998850090748214630, +0.998847692367923030, 0.998845291490512270, 0.998842888115988200, 0.998840482244356950, 0.998838073875624510, 0.998835663009796980, 0.998833249646880140, 0.998830833786880200, +0.998828415429803270, 0.998825994575655240, 0.998823571224442210, 0.998821145376170280, 0.998818717030845460, 0.998816286188473850, 0.998813852849061550, 0.998811417012614560, +0.998808978679139090, 0.998806537848641150, 0.998804094521126840, 0.998801648696602370, 0.998799200375073750, 0.998796749556547180, 0.998794296241028560, 0.998791840428524310, +0.998789382119040450, 0.998786921312583180, 0.998784458009158600, 0.998781992208772840, 0.998779523911432100, 0.998777053117142600, 0.998774579825910340, 0.998772104037741750, +0.998769625752642940, 0.998767144970619910, 0.998764661691679210, 0.998762175915826720, 0.998759687643068770, 0.998757196873411690, 0.998754703606861580, 0.998752207843424670, +0.998749709583107270, 0.998747208825915610, 0.998744705571856020, 0.998742199820934600, 0.998739691573157560, 0.998737180828531360, 0.998734667587062310, 0.998732151848756520, +0.998729633613620330, 0.998727112881660050, 0.998724589652882020, 0.998722063927292570, 0.998719535704897910, 0.998717004985704370, 0.998714471769718280, 0.998711936056946080, +0.998709397847394100, 0.998706857141068550, 0.998704313937975870, 0.998701768238122400, 0.998699220041514570, 0.998696669348158590, 0.998694116158061030, 0.998691560471228090, +0.998689002287666330, 0.998686441607382070, 0.998683878430381640, 0.998681312756671490, 0.998678744586258160, 0.998676173919147870, 0.998673600755347170, 0.998671025094862500, +0.998668446937700290, 0.998665866283867000, 0.998663283133368940, 0.998660697486212780, 0.998658109342404730, 0.998655518701951460, 0.998652925564859410, 0.998650329931135120, +0.998647731800784920, 0.998645131173815480, 0.998642528050233120, 0.998639922430044400, 0.998637314313255970, 0.998634703699874170, 0.998632090589905760, 0.998629474983356970, +0.998626856880234560, 0.998624236280545090, 0.998621613184294880, 0.998618987591490700, 0.998616359502139010, 0.998613728916246560, 0.998611095833819680, 0.998608460254865050, +0.998605822179389310, 0.998603181607399030, 0.998600538538900740, 0.998597892973901110, 0.998595244912406700, 0.998592594354424270, 0.998589941299960370, 0.998587285749021560, +0.998584627701614600, 0.998581967157745940, 0.998579304117422460, 0.998576638580650710, 0.998573970547437350, 0.998571300017789150, 0.998568626991712560, 0.998565951469214450, +0.998563273450301490, 0.998560592934980340, 0.998557909923257770, 0.998555224415140330, 0.998552536410634790, 0.998549845909748050, 0.998547152912486640, 0.998544457418857330, +0.998541759428866920, 0.998539058942522040, 0.998536355959829480, 0.998533650480796120, 0.998530942505428620, 0.998528232033733750, 0.998525519065718290, 0.998522803601389120, +0.998520085640752900, 0.998517365183816400, 0.998514642230586500, 0.998511916781069990, 0.998509188835273730, 0.998506458393204510, 0.998503725454869100, 0.998500990020274480, +0.998498252089427220, 0.998495511662334410, 0.998492768739002830, 0.998490023319439370, 0.998487275403650790, 0.998484524991643970, 0.998481772083425920, 0.998479016679003520, +0.998476258778383420, 0.998473498381572730, 0.998470735488578340, 0.998467970099407020, 0.998465202214065870, 0.998462431832561670, 0.998459658954901410, 0.998456883581091970, +0.998454105711140350, 0.998451325345053430, 0.998448542482838210, 0.998445757124501680, 0.998442969270050720, 0.998440178919492330, 0.998437386072833500, 0.998434590730081230, +0.998431792891242510, 0.998428992556324220, 0.998426189725333480, 0.998423384398277270, 0.998420576575162700, 0.998417766255996540, 0.998414953440786010, 0.998412138129538110, +0.998409320322259820, 0.998406500018958360, 0.998403677219640520, 0.998400851924313600, 0.998398024132984400, 0.998395193845660330, 0.998392361062348080, 0.998389525783055070, +0.998386688007788180, 0.998383847736554530, 0.998381004969361330, 0.998378159706215680, 0.998375311947124480, 0.998372461692095150, 0.998369608941134470, 0.998366753694249990, +0.998363895951448480, 0.998361035712737270, 0.998358172978123460, 0.998355307747614270, 0.998352440021216810, 0.998349569798938190, 0.998346697080785610, 0.998343821866766400, +0.998340944156887570, 0.998338063951156430, 0.998335181249580090, 0.998332296052165780, 0.998329408358920810, 0.998326518169852290, 0.998323625484967340, 0.998320730304273480, +0.998317832627777730, 0.998314932455487410, 0.998312029787409850, 0.998309124623552150, 0.998306216963921630, 0.998303306808525530, 0.998300394157371150, 0.998297479010465840, +0.998294561367816800, 0.998291641229431480, 0.998288718595316870, 0.998285793465480630, 0.998282865839929870, 0.998279935718671800, 0.998277003101713970, 0.998274067989063710, +0.998271130380728230, 0.998268190276714980, 0.998265247677031180, 0.998262302581684250, 0.998259354990681640, 0.998256404904030560, 0.998253452321738450, 0.998250497243812870, +0.998247539670260920, 0.998244579601090140, 0.998241617036307870, 0.998238651975921650, 0.998235684419938710, 0.998232714368366580, 0.998229741821212710, 0.998226766778484540, +0.998223789240189400, 0.998220809206334710, 0.998217826676928040, 0.998214841651976830, 0.998211854131488500, 0.998208864115470500, 0.998205871603930370, 0.998202876596875680, +0.998199879094313620, 0.998196879096251990, 0.998193876602698090, 0.998190871613659490, 0.998187864129143730, 0.998184854149158360, 0.998181841673710820, 0.998178826702808660, +0.998175809236459430, 0.998172789274670680, 0.998169766817449950, 0.998166741864804810, 0.998163714416742790, 0.998160684473271550, 0.998157652034398550, 0.998154617100131540, +0.998151579670477850, 0.998148539745445260, 0.998145497325041320, 0.998142452409273570, 0.998139404998149790, 0.998136355091677420, 0.998133302689864220, 0.998130247792717750, +0.998127190400245670, 0.998124130512455630, 0.998121068129355080, 0.998118003250952120, 0.998114935877253970, 0.998111866008268620, 0.998108793644003510, 0.998105718784466520, +0.998102641429665090, 0.998099561579607110, 0.998096479234300230, 0.998093394393752220, 0.998090307057970640, 0.998087217226963360, 0.998084124900737950, 0.998081030079302380, +0.998077932762664100, 0.998074832950830990, 0.998071730643810830, 0.998068625841611380, 0.998065518544240300, 0.998062408751705490, 0.998059296464014590, 0.998056181681175490, +0.998053064403195970, 0.998049944630083670, 0.998046822361846610, 0.998043697598492430, 0.998040570340029130, 0.998037440586464260, 0.998034308337805930, 0.998031173594061680, +0.998028036355239620, 0.998024896621347410, 0.998021754392392930, 0.998018609668384070, 0.998015462449328820, 0.998012312735234830, 0.998009160526110000, 0.998006005821962310, +0.998002848622799530, 0.997999688928629780, 0.997996526739460710, 0.997993362055300310, 0.997990194876156590, 0.997987025202037300, 0.997983853032950560, 0.997980678368904140, +0.997977501209905920, 0.997974321555963990, 0.997971139407086370, 0.997967954763280820, 0.997964767624555330, 0.997961577990918000, 0.997958385862376730, 0.997955191238939500, +0.997951994120614190, 0.997948794507409030, 0.997945592399331780, 0.997942387796390550, 0.997939180698593440, 0.997935971105948340, 0.997932759018463340, 0.997929544436146340, +0.997926327359005550, 0.997923107787048960, 0.997919885720284560, 0.997916661158720460, 0.997913434102364770, 0.997910204551225370, 0.997906972505310570, 0.997903737964628280, +0.997900500929186700, 0.997897261398993820, 0.997894019374057750, 0.997890774854386710, 0.997887527839988690, 0.997884278330871900, 0.997881026327044340, 0.997877771828514230, +0.997874514835289770, 0.997871255347378970, 0.997867993364790040, 0.997864728887531080, 0.997861461915610310, 0.997858192449035950, 0.997854920487815990, 0.997851646031958860, +0.997848369081472560, 0.997845089636365310, 0.997841807696645430, 0.997838523262320920, 0.997835236333400210, 0.997831946909891410, 0.997828654991802620, 0.997825360579142170, +0.997822063671918500, 0.997818764270139600, 0.997815462373813690, 0.997812157982949310, 0.997808851097554350, 0.997805541717637360, 0.997802229843206430, 0.997798915474270020, +0.997795598610836330, 0.997792279252913580, 0.997788957400510210, 0.997785633053634440, 0.997782306212294470, 0.997778976876498860, 0.997775645046255710, 0.997772310721573460, +0.997768973902460550, 0.997765634588925090, 0.997762292780975610, 0.997758948478620340, 0.997755601681867830, 0.997752252390726070, 0.997748900605203830, 0.997745546325309430, +0.997742189551050980, 0.997738830282437260, 0.997735468519476370, 0.997732104262176730, 0.997728737510546800, 0.997725368264595120, 0.997721996524330020, 0.997718622289759940, +0.997715245560893300, 0.997711866337738560, 0.997708484620304150, 0.997705100408598500, 0.997701713702630060, 0.997698324502407470, 0.997694932807938970, 0.997691538619233100, +0.997688141936298510, 0.997684742759143540, 0.997681341087776620, 0.997677936922206410, 0.997674530262441240, 0.997671121108489880, 0.997667709460360760, 0.997664295318062220, +0.997660878681603020, 0.997657459550991720, 0.997654037926236640, 0.997650613807346430, 0.997647187194329770, 0.997643758087195080, 0.997640326485951130, 0.997636892390606270, +0.997633455801169130, 0.997630016717648390, 0.997626575140052710, 0.997623131068390400, 0.997619684502670360, 0.997616235442901120, 0.997612783889091360, 0.997609329841249610, +0.997605873299384440, 0.997602414263504710, 0.997598952733618760, 0.997595488709735580, 0.997592022191863710, 0.997588553180011720, 0.997585081674188360, 0.997581607674402290, +0.997578131180662190, 0.997574652192976810, 0.997571170711354700, 0.997567686735804650, 0.997564200266335520, 0.997560711302955870, 0.997557219845674360, 0.997553725894499870, +0.997550229449441050, 0.997546730510506570, 0.997543229077705320, 0.997539725151046050, 0.997536218730537440, 0.997532709816188250, 0.997529198408007360, 0.997525684506003430, +0.997522168110185240, 0.997518649220561660, 0.997515127837141470, 0.997511603959933430, 0.997508077588946440, 0.997504548724189260, 0.997501017365670760, 0.997497483513399620, +0.997493947167384820, 0.997490408327635030, 0.997486866994159340, 0.997483323166966420, 0.997479776846065260, 0.997476228031464630, 0.997472676723173410, 0.997469122921200490, +0.997465566625554740, 0.997462007836245170, 0.997458446553280530, 0.997454882776669830, 0.997451316506421830, 0.997447747742545630, 0.997444176485050020, 0.997440602733943970, +0.997437026489236380, 0.997433447750936230, 0.997429866519052410, 0.997426282793594020, 0.997422696574569940, 0.997419107861989060, 0.997415516655860480, 0.997411922956193080, +0.997408326762995730, 0.997404728076277670, 0.997401126896047870, 0.997397523222315230, 0.997393917055088730, 0.997390308394377480, 0.997386697240190360, 0.997383083592536580, +0.997379467451425030, 0.997375848816864920, 0.997372227688865130, 0.997368604067434770, 0.997364977952582830, 0.997361349344318530, 0.997357718242650850, 0.997354084647588790, +0.997350448559141680, 0.997346809977318280, 0.997343168902128040, 0.997339525333579720, 0.997335879271682660, 0.997332230716445940, 0.997328579667878580, 0.997324926125989660, +0.997321270090788640, 0.997317611562284380, 0.997313950540485990, 0.997310287025402810, 0.997306621017043930, 0.997302952515418450, 0.997299281520535600, 0.997295608032404580, +0.997291932051034500, 0.997288253576434580, 0.997284572608614140, 0.997280889147582170, 0.997277203193348010, 0.997273514745920740, 0.997269823805309710, 0.997266130371524230, +0.997262434444573410, 0.997258736024466460, 0.997255035111212720, 0.997251331704821280, 0.997247625805301570, 0.997243917412662830, 0.997240206526914250, 0.997236493148065170, +0.997232777276124920, 0.997229058911102580, 0.997225338053007730, 0.997221614701849560, 0.997217888857637290, 0.997214160520380140, 0.997210429690087770, 0.997206696366769400, +0.997202960550434110, 0.997199222241091590, 0.997195481438750920, 0.997191738143421550, 0.997187992355112800, 0.997184244073834100, 0.997180493299594790, 0.997176740032404200, +0.997172984272271860, 0.997169226019206990, 0.997165465273219140, 0.997161702034317530, 0.997157936302511590, 0.997154168077810990, 0.997150397360224930, 0.997146624149762850, +0.997142848446434190, 0.997139070250248390, 0.997135289561215000, 0.997131506379343340, 0.997127720704642840, 0.997123932537123170, 0.997120141876793540, 0.997116348723663730, +0.997112553077742940, 0.997108754939040720, 0.997104954307566740, 0.997101151183330310, 0.997097345566340890, 0.997093537456608230, 0.997089726854141660, 0.997085913758950840, +0.997082098171045320, 0.997078280090434420, 0.997074459517127810, 0.997070636451135030, 0.997066810892465740, 0.997062982841129490, 0.997059152297135710, 0.997055319260493960, +0.997051483731213990, 0.997047645709305370, 0.997043805194777530, 0.997039962187640240, 0.997036116687903040, 0.997032268695575490, 0.997028418210667340, 0.997024565233188160, +0.997020709763147490, 0.997016851800555100, 0.997012991345420540, 0.997009128397753570, 0.997005262957563750, 0.997001395024860740, 0.996997524599654290, 0.996993651681953970, +0.996989776271769660, 0.996985898369110780, 0.996982017973987110, 0.996978135086408420, 0.996974249706384490, 0.996970361833924960, 0.996966471469039380, 0.996962578611737760, +0.996958683262029630, 0.996954785419924770, 0.996950885085432950, 0.996946982258563930, 0.996943076939327490, 0.996939169127733280, 0.996935258823791190, 0.996931346027510990, +0.996927430738902440, 0.996923512957975210, 0.996919592684739180, 0.996915669919204330, 0.996911744661380220, 0.996907816911276720, 0.996903886668903730, 0.996899953934271000, +0.996896018707388420, 0.996892080988265650, 0.996888140776912790, 0.996884198073339610, 0.996880252877555990, 0.996876305189571600, 0.996872355009396530, 0.996868402337040550, +0.996864447172513550, 0.996860489515825400, 0.996856529366986100, 0.996852566726005420, 0.996848601592893350, 0.996844633967659770, 0.996840663850314670, 0.996836691240867820, +0.996832716139329220, 0.996828738545708860, 0.996824758460016720, 0.996820775882262590, 0.996816790812456670, 0.996812803250608610, 0.996808813196728650, 0.996804820650826650, +0.996800825612912500, 0.996796828082996300, 0.996792828061088150, 0.996788825547197830, 0.996784820541335550, 0.996780813043511070, 0.996776803053734730, 0.996772790572016180, +0.996768775598365740, 0.996764758132793420, 0.996760738175309190, 0.996756715725923060, 0.996752690784645230, 0.996748663351485600, 0.996744633426454360, 0.996740601009561410, +0.996736566100817070, 0.996732528700231320, 0.996728488807814280, 0.996724446423575940, 0.996720401547526500, 0.996716354179676080, 0.996712304320034770, 0.996708251968612680, +0.996704197125419910, 0.996700139790466790, 0.996696079963763190, 0.996692017645319450, 0.996687952835145660, 0.996683885533252050, 0.996679815739648590, 0.996675743454345730, +0.996671668677353460, 0.996667591408682000, 0.996663511648341550, 0.996659429396342330, 0.996655344652694560, 0.996651257417408450, 0.996647167690494110, 0.996643075471961850, +0.996638980761822000, 0.996634883560084670, 0.996630783866760180, 0.996626681681858640, 0.996622577005390480, 0.996618469837365790, 0.996614360177794920, 0.996610248026688180, +0.996606133384055790, 0.996602016249908180, 0.996597896624255460, 0.996593774507107950, 0.996589649898476090, 0.996585522798369980, 0.996581393206800170, 0.996577261123776870, +0.996573126549310410, 0.996568989483411110, 0.996564849926089400, 0.996560707877355510, 0.996556563337219870, 0.996552416305692800, 0.996548266782784630, 0.996544114768505910, +0.996539960262866840, 0.996535803265877980, 0.996531643777549440, 0.996527481797891970, 0.996523317326915570, 0.996519150364631010, 0.996514980911048620, 0.996510808966178720, +0.996506634530031850, 0.996502457602618350, 0.996498278183948650, 0.996494096274033400, 0.996489911872882720, 0.996485724980507360, 0.996481535596917770, 0.996477343722124260, +0.996473149356137400, 0.996468952498967610, 0.996464753150625550, 0.996460551311121550, 0.996456346980466150, 0.996452140158669900, 0.996447930845743230, 0.996443719041696820, +0.996439504746541190, 0.996435287960286690, 0.996431068682943950, 0.996426846914523550, 0.996422622655036120, 0.996418395904491990, 0.996414166662902060, 0.996409934930276520, +0.996405700706626260, 0.996401463991961720, 0.996397224786293560, 0.996392983089632200, 0.996388738901988540, 0.996384492223373000, 0.996380243053796240, 0.996375991393268820, +0.996371737241801500, 0.996367480599404720, 0.996363221466089240, 0.996358959841865840, 0.996354695726744950, 0.996350429120737350, 0.996346160023853680, 0.996341888436104610, +0.996337614357500790, 0.996333337788053000, 0.996329058727771670, 0.996324777176667900, 0.996320493134752130, 0.996316206602035130, 0.996311917578527550, 0.996307626064240280, +0.996303332059183980, 0.996299035563369180, 0.996294736576806890, 0.996290435099507770, 0.996286131131482570, 0.996281824672741960, 0.996277515723296920, 0.996273204283158020, +0.996268890352336120, 0.996264573930841890, 0.996260255018686310, 0.996255933615880160, 0.996251609722434090, 0.996247283338358990, 0.996242954463665730, 0.996238623098365080, +0.996234289242467930, 0.996229952895984930, 0.996225614058927070, 0.996221272731305230, 0.996216928913130180, 0.996212582604412810, 0.996208233805164100, 0.996203882515394710, +0.996199528735115520, 0.996195172464337530, 0.996190813703071720, 0.996186452451328860, 0.996182088709119840, 0.996177722476455640, 0.996173353753347040, 0.996168982539805130, +0.996164608835840680, 0.996160232641464800, 0.996155853956688260, 0.996151472781522160, 0.996147089115977380, 0.996142702960064910, 0.996138314313795630, 0.996133923177180520, +0.996129529550230600, 0.996125133432956830, 0.996120734825370340, 0.996116333727481980, 0.996111930139302770, 0.996107524060843800, 0.996103115492115940, 0.996098704433130310, +0.996094290883897890, 0.996089874844429790, 0.996085456314736990, 0.996081035294830500, 0.996076611784721510, 0.996072185784421030, 0.996067757293939930, 0.996063326313289530, +0.996058892842480730, 0.996054456881524830, 0.996050018430432730, 0.996045577489215630, 0.996041134057884530, 0.996036688136450630, 0.996032239724924940, 0.996027788823318660, +0.996023335431642900, 0.996018879549908860, 0.996014421178127660, 0.996009960316310280, 0.996005496964468160, 0.996001031122612180, 0.995996562790753550, 0.995992091968903700, +0.995987618657073530, 0.995983142855274340, 0.995978664563517250, 0.995974183781813570, 0.995969700510174420, 0.995965214748610990, 0.995960726497134410, 0.995956235755756090, +0.995951742524487260, 0.995947246803339010, 0.995942748592322680, 0.995938247891449470, 0.995933744700730710, 0.995929239020177490, 0.995924730849801150, 0.995920220189613010, +0.995915707039624400, 0.995911191399846410, 0.995906673270290480, 0.995902152650967930, 0.995897629541889980, 0.995893103943067850, 0.995888575854513070, 0.995884045276236750, +0.995879512208250440, 0.995874976650565240, 0.995870438603192690, 0.995865898066144010, 0.995861355039430630, 0.995856809523063770, 0.995852261517054860, 0.995847711021415450, +0.995843158036156640, 0.995838602561289980, 0.995834044596826900, 0.995829484142778610, 0.995824921199156550, 0.995820355765972280, 0.995815787843237100, 0.995811217430962460, +0.995806644529159790, 0.995802069137840420, 0.995797491257016000, 0.995792910886697750, 0.995788328026897210, 0.995783742677625930, 0.995779154838895340, 0.995774564510716780, +0.995769971693101770, 0.995765376386062000, 0.995760778589608650, 0.995756178303753400, 0.995751575528507570, 0.995746970263882920, 0.995742362509890900, 0.995737752266542930, +0.995733139533850560, 0.995728524311825350, 0.995723906600478830, 0.995719286399822430, 0.995714663709867940, 0.995710038530626780, 0.995705410862110620, 0.995700780704330770, +0.995696148057299110, 0.995691512921026980, 0.995686875295526130, 0.995682235180808010, 0.995677592576884260, 0.995672947483766670, 0.995668299901466660, 0.995663649829995890, +0.995658997269366020, 0.995654342219588710, 0.995649684680675500, 0.995645024652637930, 0.995640362135487900, 0.995635697129237050, 0.995631029633896940, 0.995626359649479210, +0.995621687175995530, 0.995617012213457770, 0.995612334761877270, 0.995607654821266120, 0.995602972391635750, 0.995598287472997940, 0.995593600065364570, 0.995588910168747070, +0.995584217783157310, 0.995579522908606960, 0.995574825545107790, 0.995570125692671560, 0.995565423351310150, 0.995560718521035120, 0.995556011201858220, 0.995551301393791330, +0.995546589096846240, 0.995541874311034580, 0.995537157036368360, 0.995532437272859120, 0.995527715020518840, 0.995522990279359310, 0.995518263049392280, 0.995513533330629640, +0.995508801123083150, 0.995504066426764480, 0.995499329241685830, 0.995494589567858860, 0.995489847405295340, 0.995485102754007260, 0.995480355614006380, 0.995475605985304600, +0.995470853867913900, 0.995466099261845930, 0.995461342167112790, 0.995456582583726270, 0.995451820511698340, 0.995447055951040880, 0.995442288901765670, 0.995437519363884800, +0.995432747337410160, 0.995427972822353620, 0.995423195818727180, 0.995418416326542710, 0.995413634345812200, 0.995408849876547650, 0.995404062918760930, 0.995399273472464040, +0.995394481537668960, 0.995389687114387690, 0.995384890202632320, 0.995380090802414630, 0.995375288913746710, 0.995370484536640570, 0.995365677671108170, 0.995360868317161640, +0.995356056474812840, 0.995351242144074000, 0.995346425324957100, 0.995341606017474120, 0.995336784221637070, 0.995331959937458040, 0.995327133164949140, 0.995322303904122350, +0.995317472154989890, 0.995312637917563750, 0.995307801191856020, 0.995302961977878710, 0.995298120275644130, 0.995293276085164160, 0.995288429406451010, 0.995283580239516690, +0.995278728584373500, 0.995273874441033550, 0.995269017809508830, 0.995264158689811550, 0.995259297081953930, 0.995254432985948070, 0.995249566401806060, 0.995244697329540240, +0.995239825769162590, 0.995234951720685430, 0.995230075184120880, 0.995225196159481240, 0.995220314646778510, 0.995215430646025020, 0.995210544157232760, 0.995205655180414370, +0.995200763715581750, 0.995195869762747320, 0.995190973321923080, 0.995186074393121570, 0.995181172976354780, 0.995176269071635030, 0.995171362678974550, 0.995166453798385750, +0.995161542429880860, 0.995156628573472090, 0.995151712229171760, 0.995146793396992080, 0.995141872076945490, 0.995136948269044090, 0.995132021973300420, 0.995127093189726700, +0.995122161918335250, 0.995117228159138390, 0.995112291912148450, 0.995107353177377860, 0.995102411954838730, 0.995097468244543590, 0.995092522046504890, 0.995087573360734830, +0.995082622187245860, 0.995077668526050400, 0.995072712377160660, 0.995067753740589200, 0.995062792616348220, 0.995057829004450390, 0.995052862904907910, 0.995047894317733330, +0.995042923242939080, 0.995037949680537490, 0.995032973630541000, 0.995027995092962030, 0.995023014067813020, 0.995018030555106630, 0.995013044554855060, 0.995008056067070880, +0.995003065091766610, 0.994998071628954710, 0.994993075678647590, 0.994988077240857800, 0.994983076315597680, 0.994978072902880100, 0.994973067002717150, 0.994968058615121610, +0.994963047740106020, 0.994958034377682710, 0.994953018527864330, 0.994948000190663320, 0.994942979366092330, 0.994937956054163910, 0.994932930254890710, 0.994927901968285070, +0.994922871194359740, 0.994917837933127270, 0.994912802184600100, 0.994907763948790880, 0.994902723225712380, 0.994897680015377040, 0.994892634317797510, 0.994887586132986330, +0.994882535460956290, 0.994877482301719910, 0.994872426655289740, 0.994867368521678450, 0.994862307900898800, 0.994857244792963450, 0.994852179197884930, 0.994847111115675920, +0.994842040546349280, 0.994836967489917460, 0.994831891946393100, 0.994826813915789090, 0.994821733398118080, 0.994816650393392730, 0.994811564901625810, 0.994806476922829970, +0.994801386457017880, 0.994796293504202290, 0.994791198064395980, 0.994786100137611710, 0.994780999723862140, 0.994775896823160140, 0.994770791435518390, 0.994765683560949630, +0.994760573199466760, 0.994755460351082310, 0.994750345015809280, 0.994745227193660430, 0.994740106884648420, 0.994734984088786240, 0.994729858806086550, 0.994724731036562230, +0.994719600780226030, 0.994714468037090850, 0.994709332807169440, 0.994704195090474810, 0.994699054887019710, 0.994693912196816910, 0.994688767019879410, 0.994683619356219850, +0.994678469205851350, 0.994673316568786550, 0.994668161445038560, 0.994663003834620140, 0.994657843737544290, 0.994652681153823770, 0.994647516083471570, 0.994642348526500570, +0.994637178482923660, 0.994632005952753810, 0.994626830936004010, 0.994621653432687050, 0.994616473442816010, 0.994611290966403770, 0.994606106003463330, 0.994600918554007670, +0.994595728618049570, 0.994590536195602230, 0.994585341286678530, 0.994580143891291460, 0.994574944009454120, 0.994569741641179390, 0.994564536786480270, 0.994559329445369840, +0.994554119617861000, 0.994548907303966940, 0.994543692503700560, 0.994538475217075060, 0.994533255444103310, 0.994528033184798430, 0.994522808439173400, 0.994517581207241320, +0.994512351489015400, 0.994507119284508630, 0.994501884593734010, 0.994496647416704630, 0.994491407753433700, 0.994486165603934210, 0.994480920968219380, 0.994475673846302090, +0.994470424238195760, 0.994465172143913280, 0.994459917563467970, 0.994454660496872810, 0.994449400944141030, 0.994444138905285710, 0.994438874380319970, 0.994433607369257120, +0.994428337872110270, 0.994423065888892620, 0.994417791419617280, 0.994412514464297460, 0.994407235022946260, 0.994401953095577110, 0.994396668682202890, 0.994391381782837150, +0.994386092397492980, 0.994380800526183490, 0.994375506168922010, 0.994370209325721840, 0.994364909996596100, 0.994359608181558110, 0.994354303880620960, 0.994348997093798200, +0.994343687821102940, 0.994338376062548380, 0.994333061818147960, 0.994327745087914880, 0.994322425871862480, 0.994317104170003850, 0.994311779982352540, 0.994306453308921760, +0.994301124149724940, 0.994295792504775290, 0.994290458374086140, 0.994285121757670810, 0.994279782655542730, 0.994274441067715120, 0.994269096994201410, 0.994263750435015030, +0.994258401390169190, 0.994253049859677440, 0.994247695843553100, 0.994242339341809390, 0.994236980354459950, 0.994231618881517900, 0.994226254922996880, 0.994220888478910330, +0.994215519549271450, 0.994210148134093810, 0.994204774233390820, 0.994199397847175810, 0.994194018975462330, 0.994188637618263820, 0.994183253775593690, 0.994177867447465500, +0.994172478633892580, 0.994167087334888570, 0.994161693550466800, 0.994156297280640700, 0.994150898525423820, 0.994145497284829820, 0.994140093558872010, 0.994134687347564050, +0.994129278650919380, 0.994123867468951430, 0.994118453801673850, 0.994113037649100080, 0.994107619011243780, 0.994102197888118380, 0.994096774279737530, 0.994091348186114780, +0.994085919607263560, 0.994080488543197640, 0.994075054993930450, 0.994069618959475540, 0.994064180439846680, 0.994058739435057400, 0.994053295945121260, 0.994047849970051910, +0.994042401509862890, 0.994036950564567870, 0.994031497134180490, 0.994026041218714180, 0.994020582818182950, 0.994015121932600220, 0.994009658561979760, 0.994004192706335110, +0.993998724365679930, 0.993993253540027990, 0.993987780229392830, 0.993982304433788320, 0.993976826153228020, 0.993971345387725690, 0.993965862137294990, 0.993960376401949670, +0.993954888181703300, 0.993949397476569850, 0.993943904286562650, 0.993938408611695910, 0.993932910451983060, 0.993927409807437990, 0.993921906678074450, 0.993916401063906110, +0.993910892964946720, 0.993905382381210070, 0.993899869312709900, 0.993894353759460230, 0.993888835721474570, 0.993883315198766940, 0.993877792191350860, 0.993872266699240450, +0.993866738722449240, 0.993861208260991220, 0.993855675314880170, 0.993850139884130070, 0.993844601968754460, 0.993839061568767450, 0.993833518684182790, 0.993827973315014270, +0.993822425461275860, 0.993816875122981220, 0.993811322300144570, 0.993805766992779560, 0.993800209200900180, 0.993794648924520300, 0.993789086163653690, 0.993783520918314460, +0.993777953188516250, 0.993772382974273390, 0.993766810275599430, 0.993761235092508580, 0.993755657425014480, 0.993750077273131360, 0.993744494636872980, 0.993738909516253430, +0.993733321911286490, 0.993727731821986370, 0.993722139248366830, 0.993716544190441970, 0.993710946648225790, 0.993705346621732270, 0.993699744110975280, 0.993694139115969040, +0.993688531636727320, 0.993682921673264330, 0.993677309225594050, 0.993671694293730480, 0.993666076877687710, 0.993660456977479730, 0.993654834593120650, 0.993649209724624340, +0.993643582372005120, 0.993637952535276980, 0.993632320214453910, 0.993626685409550010, 0.993621048120579500, 0.993615408347556350, 0.993609766090494560, 0.993604121349408340, +0.993598474124311900, 0.993592824415219340, 0.993587172222144650, 0.993581517545102040, 0.993575860384105610, 0.993570200739169570, 0.993564538610307910, 0.993558873997535060, +0.993553206900865020, 0.993547537320311870, 0.993541865255889940, 0.993536190707613340, 0.993530513675496270, 0.993524834159552950, 0.993519152159797360, 0.993513467676244040, +0.993507780708907110, 0.993502091257800650, 0.993496399322938980, 0.993490704904336330, 0.993485008002006900, 0.993479308615964900, 0.993473606746224540, 0.993467902392800360, +0.993462195555706360, 0.993456486234956860, 0.993450774430566170, 0.993445060142548520, 0.993439343370918220, 0.993433624115689470, 0.993427902376876840, 0.993422178154494410, +0.993416451448556500, 0.993410722259077450, 0.993404990586071570, 0.993399256429553290, 0.993393519789536830, 0.993387780666036500, 0.993382039059066750, 0.993376294968641990, +0.993370548394776450, 0.993364799337484560, 0.993359047796780640, 0.993353293772679110, 0.993347537265194420, 0.993341778274340670, 0.993336016800132620, 0.993330252842584580, +0.993324486401710780, 0.993318717477525870, 0.993312946070044170, 0.993307172179280110, 0.993301395805248010, 0.993295616947962420, 0.993289835607437890, 0.993284051783688730, +0.993278265476729480, 0.993272476686574590, 0.993266685413238480, 0.993260891656735590, 0.993255095417080460, 0.993249296694287630, 0.993243495488371650, 0.993237691799346840, +0.993231885627227860, 0.993226076972029140, 0.993220265833765210, 0.993214452212450530, 0.993208636108099730, 0.993202817520727480, 0.993196996450348090, 0.993191172896976340, +0.993185346860626540, 0.993179518341313460, 0.993173687339051540, 0.993167853853855200, 0.993162017885739430, 0.993156179434718680, 0.993150338500807360, 0.993144495084020250, +0.993138649184371890, 0.993132800801876940, 0.993126949936549930, 0.993121096588405530, 0.993115240757458380, 0.993109382443723150, 0.993103521647214490, 0.993097658367947060, +0.993091792605935500, 0.993085924361194360, 0.993080053633738410, 0.993074180423582420, 0.993068304730740930, 0.993062426555228690, 0.993056545897060380, 0.993050662756250760, +0.993044777132814360, 0.993038889026766180, 0.993032998438120540, 0.993027105366892540, 0.993021209813096830, 0.993015311776748070, 0.993009411257861020, 0.993003508256450450, +0.992997602772531020, 0.992991694806117710, 0.992985784357225070, 0.992979871425867970, 0.992973956012061290, 0.992968038115819680, 0.992962117737157920, 0.992956194876090880, +0.992950269532633430, 0.992944341706800130, 0.992938411398606170, 0.992932478608066100, 0.992926543335194810, 0.992920605580007280, 0.992914665342518150, 0.992908722622742320, +0.992902777420694770, 0.992896829736390150, 0.992890879569843570, 0.992884926921069780, 0.992878971790083660, 0.992873014176900100, 0.992867054081533970, 0.992861091504000260, +0.992855126444313730, 0.992849158902489480, 0.992843188878542280, 0.992837216372487230, 0.992831241384339090, 0.992825263914112740, 0.992819283961823280, 0.992813301527485700, +0.992807316611114650, 0.992801329212725570, 0.992795339332332990, 0.992789346969952140, 0.992783352125597980, 0.992777354799285310, 0.992771354991029310, 0.992765352700844980, +0.992759347928747090, 0.992753340674750960, 0.992747330938871570, 0.992741318721123700, 0.992735304021522660, 0.992729286840083320, 0.992723267176820690, 0.992717245031749850, +0.992711220404886020, 0.992705193296244070, 0.992699163705839220, 0.992693131633686440, 0.992687097079800850, 0.992681060044197430, 0.992675020526891380, 0.992668978527897710, +0.992662934047231720, 0.992656887084908400, 0.992650837640942860, 0.992644785715350200, 0.992638731308145510, 0.992632674419344110, 0.992626615048960990, 0.992620553197011150, +0.992614488863510110, 0.992608422048472880, 0.992602352751914550, 0.992596280973850330, 0.992590206714295430, 0.992584129973264950, 0.992578050750774100, 0.992571969046838200, +0.992565884861472460, 0.992559798194691870, 0.992553709046511860, 0.992547617416947640, 0.992541523306014310, 0.992535426713727190, 0.992529327640101380, 0.992523226085152310, +0.992517122048895310, 0.992511015531345350, 0.992504906532517990, 0.992498795052428220, 0.992492681091091570, 0.992486564648523140, 0.992480445724738260, 0.992474324319752350, +0.992468200433580640, 0.992462074066238430, 0.992455945217741050, 0.992449813888103830, 0.992443680077341960, 0.992437543785470890, 0.992431405012506040, 0.992425263758462740, +0.992419120023356190, 0.992412973807201840, 0.992406825110015100, 0.992400673931811310, 0.992394520272605770, 0.992388364132413820, 0.992382205511251110, 0.992376044409132850, +0.992369880826074580, 0.992363714762091510, 0.992357546217199180, 0.992351375191413030, 0.992345201684748270, 0.992339025697220660, 0.992332847228845400, 0.992326666279638060, +0.992320482849614160, 0.992314296938788920, 0.992308108547177990, 0.992301917674796810, 0.992295724321660690, 0.992289528487785400, 0.992283330173186260, 0.992277129377878820, +0.992270926101878500, 0.992264720345200970, 0.992258512107861530, 0.992252301389875860, 0.992246088191259370, 0.992239872512027720, 0.992233654352196460, 0.992227433711781020, +0.992221210590796930, 0.992214984989259860, 0.992208756907185350, 0.992202526344588830, 0.992196293301486070, 0.992190057777892600, 0.992183819773823970, 0.992177579289295840, +0.992171336324323750, 0.992165090878923240, 0.992158842953110080, 0.992152592546899690, 0.992146339660307960, 0.992140084293350320, 0.992133826446042530, 0.992127566118400140, +0.992121303310438800, 0.992115038022174270, 0.992108770253621990, 0.992102500004797940, 0.992096227275717560, 0.992089952066396720, 0.992083674376850970, 0.992077394207095950, +0.992071111557147560, 0.992064826427021320, 0.992058538816732890, 0.992052248726298270, 0.992045956155732990, 0.992039661105052820, 0.992033363574273520, 0.992027063563410860, +0.992020761072480490, 0.992014456101498190, 0.992008148650479700, 0.992001838719440920, 0.991995526308397490, 0.991989211417365290, 0.991982894046360090, 0.991976574195397640, +0.991970251864493720, 0.991963927053664100, 0.991957599762924750, 0.991951269992291440, 0.991944937741779940, 0.991938603011406130, 0.991932265801185760, 0.991925926111134730, +0.991919583941268890, 0.991913239291604020, 0.991906892162156110, 0.991900542552940910, 0.991894190463974420, 0.991887835895272520, 0.991881478846850960, 0.991875119318725740, +0.991868757310912730, 0.991862392823427590, 0.991856025856286740, 0.991849656409505730, 0.991843284483100660, 0.991836910077087300, 0.991830533191481730, 0.991824153826299740, +0.991817771981557290, 0.991811387657270620, 0.991805000853455350, 0.991798611570127610, 0.991792219807303370, 0.991785825564998610, 0.991779428843229230, 0.991773029642011310, +0.991766627961360610, 0.991760223801293580, 0.991753817161825980, 0.991747408042973790, 0.991740996444753110, 0.991734582367179930, 0.991728165810270230, 0.991721746774040120, +0.991715325258505700, 0.991708901263682940, 0.991702474789587950, 0.991696045836236720, 0.991689614403645450, 0.991683180491830130, 0.991676744100806860, 0.991670305230591630, +0.991663863881200760, 0.991657420052650120, 0.991650973744956030, 0.991644524958134490, 0.991638073692201690, 0.991631619947173640, 0.991625163723066530, 0.991618705019896460, +0.991612243837679650, 0.991605780176432310, 0.991599314036170520, 0.991592845416910400, 0.991586374318668140, 0.991579900741460070, 0.991573424685302070, 0.991566946150210570, +0.991560465136201770, 0.991553981643291780, 0.991547495671496800, 0.991541007220833160, 0.991534516291316950, 0.991528022882964490, 0.991521526995791770, 0.991515028629815440, +0.991508527785051500, 0.991502024461516250, 0.991495518659225920, 0.991489010378196810, 0.991482499618445150, 0.991475986379987240, 0.991469470662839300, 0.991462952467017880, +0.991456431792538950, 0.991449908639418950, 0.991443383007674210, 0.991436854897320920, 0.991430324308375630, 0.991423791240854340, 0.991417255694773680, 0.991410717670149990, +0.991404177166999360, 0.991397634185338330, 0.991391088725183220, 0.991384540786550470, 0.991377990369456290, 0.991371437473916980, 0.991364882099949330, 0.991358324247569310, +0.991351763916793580, 0.991345201107638460, 0.991338635820120270, 0.991332068054255560, 0.991325497810060520, 0.991318925087551820, 0.991312349886745880, 0.991305772207659030, +0.991299192050307700, 0.991292609414708430, 0.991286024300877640, 0.991279436708831780, 0.991272846638587280, 0.991266254090160670, 0.991259659063568500, 0.991253061558827200, +0.991246461575953200, 0.991239859114963040, 0.991233254175873270, 0.991226646758700310, 0.991220036863460720, 0.991213424490171020, 0.991206809638847890, 0.991200192309507620, +0.991193572502167000, 0.991186950216842330, 0.991180325453550280, 0.991173698212307390, 0.991167068493130300, 0.991160436296035560, 0.991153801621039830, 0.991147164468159430, +0.991140524837411220, 0.991133882728811640, 0.991127238142377460, 0.991120591078125000, 0.991113941536071130, 0.991107289516232500, 0.991100635018625550, 0.991093978043267040, +0.991087318590173630, 0.991080656659361960, 0.991073992250848470, 0.991067325364650030, 0.991060656000783410, 0.991053984159265160, 0.991047309840111800, 0.991040633043340340, +0.991033953768967190, 0.991027272017009240, 0.991020587787482920, 0.991013901080405210, 0.991007211895792880, 0.991000520233662360, 0.990993826094030640, 0.990987129476914360, +0.990980430382330300, 0.990973728810295110, 0.990967024760825430, 0.990960318233938380, 0.990953609229650480, 0.990946897747978620, 0.990940183788939440, 0.990933467352549830, +0.990926748438826550, 0.990920027047786370, 0.990913303179446150, 0.990906576833822660, 0.990899848010932780, 0.990893116710793280, 0.990886382933420910, 0.990879646678832660, +0.990872907947045300, 0.990866166738075480, 0.990859423051940410, 0.990852676888656750, 0.990845928248241470, 0.990839177130711350, 0.990832423536083250, 0.990825667464374060, +0.990818908915600760, 0.990812147889780110, 0.990805384386929110, 0.990798618407064740, 0.990791849950203750, 0.990785079016363150, 0.990778305605559910, 0.990771529717810790, +0.990764751353132910, 0.990757970511543130, 0.990751187193058440, 0.990744401397695820, 0.990737613125472150, 0.990730822376404530, 0.990724029150509720, 0.990717233447804930, +0.990710435268306930, 0.990703634612033040, 0.990696831478999900, 0.990690025869224830, 0.990683217782724610, 0.990676407219516330, 0.990669594179617090, 0.990662778663043750, +0.990655960669813540, 0.990649140199943430, 0.990642317253450530, 0.990635491830351820, 0.990628663930664290, 0.990621833554405140, 0.990615000701591470, 0.990608165372240170, +0.990601327566368540, 0.990594487283993570, 0.990587644525132480, 0.990580799289802140, 0.990573951578019860, 0.990567101389802750, 0.990560248725167900, 0.990553393584132190, +0.990546535966713270, 0.990539675872927900, 0.990532813302793300, 0.990525948256326780, 0.990519080733545330, 0.990512210734466160, 0.990505338259106470, 0.990498463307483480, +0.990491585879614280, 0.990484705975516190, 0.990477823595206200, 0.990470938738701840, 0.990464051406020010, 0.990457161597178120, 0.990450269312193150, 0.990443374551082670, +0.990436477313863640, 0.990429577600553500, 0.990422675411169460, 0.990415770745728730, 0.990408863604248510, 0.990401953986746130, 0.990395041893238790, 0.990388127323744040, +0.990381210278278860, 0.990374290756860680, 0.990367368759506710, 0.990360444286234380, 0.990353517337061010, 0.990346587912003700, 0.990339656011079980, 0.990332721634307080, +0.990325784781702410, 0.990318845453283410, 0.990311903649067180, 0.990304959369071150, 0.990298012613312850, 0.990291063381809280, 0.990284111674578190, 0.990277157491636920, +0.990270200833002660, 0.990263241698692950, 0.990256280088725130, 0.990249316003116500, 0.990242349441884610, 0.990235380405046880, 0.990228408892620760, 0.990221434904623550, +0.990214458441072810, 0.990207479501985840, 0.990200498087380310, 0.990193514197273420, 0.990186527831682710, 0.990179538990625720, 0.990172547674119890, 0.990165553882182750, +0.990158557614831740, 0.990151558872084280, 0.990144557653957920, 0.990137553960470210, 0.990130547791638450, 0.990123539147480410, 0.990116528028013640, 0.990109514433255460, +0.990102498363223500, 0.990095479817935330, 0.990088458797408480, 0.990081435301660260, 0.990074409330708670, 0.990067380884571020, 0.990060349963264970, 0.990053316566807950, +0.990046280695217720, 0.990039242348511710, 0.990032201526707680, 0.990025158229822950, 0.990018112457875520, 0.990011064210882810, 0.990004013488862360, 0.989996960291831930, +0.989989904619809070, 0.989982846472811540, 0.989975785850856770, 0.989968722753962530, 0.989961657182146460, 0.989954589135426330, 0.989947518613819800, 0.989940445617344400, +0.989933370146017900, 0.989926292199857950, 0.989919211778882090, 0.989912128883108420, 0.989905043512554370, 0.989897955667237820, 0.989890865347176300, 0.989883772552387580, +0.989876677282889530, 0.989869579538699700, 0.989862479319835840, 0.989855376626315840, 0.989848271458157460, 0.989841163815378460, 0.989834053697996490, 0.989826941106029310, +0.989819826039494920, 0.989812708498410740, 0.989805588482794980, 0.989798465992665190, 0.989791341028039230, 0.989784213588934980, 0.989777083675370210, 0.989769951287362670, +0.989762816424930250, 0.989755679088090700, 0.989748539276862020, 0.989741396991262070, 0.989734252231308620, 0.989727104997019440, 0.989719955288412610, 0.989712803105505800, +0.989705648448317100, 0.989698491316864050, 0.989691331711164970, 0.989684169631237510, 0.989677005077099660, 0.989669838048769290, 0.989662668546264280, 0.989655496569602610, +0.989648322118802160, 0.989641145193880910, 0.989633965794856850, 0.989626783921747850, 0.989619599574572020, 0.989612412753347100, 0.989605223458091100, 0.989598031688822100, +0.989590837445557870, 0.989583640728316730, 0.989576441537116440, 0.989569239871974980, 0.989562035732910570, 0.989554829119940970, 0.989547620033084270, 0.989540408472358470, +0.989533194437781760, 0.989525977929372020, 0.989518758947147360, 0.989511537491125860, 0.989504313561325400, 0.989497087157764300, 0.989489858280460430, 0.989482626929431670, +0.989475393104696680, 0.989468156806273090, 0.989460918034179020, 0.989453676788432770, 0.989446433069052330, 0.989439186876055810, 0.989431938209461290, 0.989424687069286770, +0.989417433455550670, 0.989410177368271080, 0.989402918807466000, 0.989395657773153530, 0.989388394265351970, 0.989381128284079540, 0.989373859829354000, 0.989366588901194000, +0.989359315499617530, 0.989352039624642800, 0.989344761276287900, 0.989337480454571150, 0.989330197159510760, 0.989322911391124830, 0.989315623149431440, 0.989308332434449160, +0.989301039246196060, 0.989293743584690350, 0.989286445449950260, 0.989279144841994080, 0.989271841760840040, 0.989264536206506340, 0.989257228179011290, 0.989249917678373230, +0.989242604704610340, 0.989235289257740960, 0.989227971337783400, 0.989220650944755860, 0.989213328078676790, 0.989206002739564160, 0.989198674927436630, 0.989191344642312510, +0.989184011884210010, 0.989176676653147460, 0.989169338949143270, 0.989161998772215670, 0.989154656122383070, 0.989147310999663690, 0.989139963404076280, 0.989132613335638840, +0.989125260794369910, 0.989117905780287800, 0.989110548293410940, 0.989103188333757770, 0.989095825901346370, 0.989088460996195630, 0.989081093618323750, 0.989073723767749050, +0.989066351444490180, 0.989058976648565350, 0.989051599379993100, 0.989044219638791740, 0.989036837424979830, 0.989029452738575900, 0.989022065579598380, 0.989014675948065690, +0.989007283843996280, 0.988999889267408670, 0.988992492218321310, 0.988985092696752830, 0.988977690702721350, 0.988970286236245830, 0.988962879297344610, 0.988955469886036220, +0.988948058002339090, 0.988940643646271880, 0.988933226817853010, 0.988925807517101020, 0.988918385744034570, 0.988910961498672080, 0.988903534781032320, 0.988896105591133720, +0.988888673928994820, 0.988881239794634160, 0.988873803188070500, 0.988866364109322160, 0.988858922558408130, 0.988851478535346610, 0.988844032040156580, 0.988836583072856380, +0.988829131633464750, 0.988821677722000250, 0.988814221338481620, 0.988806762482927200, 0.988799301155356080, 0.988791837355786680, 0.988784371084237780, 0.988776902340727900, +0.988769431125275710, 0.988761957437899960, 0.988754481278619200, 0.988747002647452410, 0.988739521544418020, 0.988732037969534900, 0.988724551922821710, 0.988717063404297100, +0.988709572413979830, 0.988702078951888660, 0.988694583018042140, 0.988687084612459240, 0.988679583735158740, 0.988672080386159170, 0.988664574565479400, 0.988657066273138320, +0.988649555509154450, 0.988642042273546680, 0.988634526566333770, 0.988627008387534700, 0.988619487737168010, 0.988611964615252690, 0.988604439021807390, 0.988596910956850980, +0.988589380420402340, 0.988581847412480120, 0.988574311933103410, 0.988566773982290870, 0.988559233560061480, 0.988551690666433890, 0.988544145301427200, 0.988536597465060060, +0.988529047157351460, 0.988521494378320150, 0.988513939127985130, 0.988506381406365380, 0.988498821213479540, 0.988491258549346830, 0.988483693413985790, 0.988476125807415620, +0.988468555729654970, 0.988460983180723060, 0.988453408160638760, 0.988445830669420930, 0.988438250707088460, 0.988430668273660440, 0.988423083369155630, 0.988415495993593240, +0.988407906146991920, 0.988400313829370880, 0.988392719040749210, 0.988385121781145680, 0.988377522050579270, 0.988369919849069190, 0.988362315176634200, 0.988354708033293510, +0.988347098419065870, 0.988339486333970620, 0.988331871778026620, 0.988324254751253070, 0.988316635253668750, 0.988309013285292860, 0.988301388846144490, 0.988293761936242520, +0.988286132555606270, 0.988278500704254600, 0.988270866382206740, 0.988263229589481760, 0.988255590326098670, 0.988247948592076540, 0.988240304387434710, 0.988232657712191820, +0.988225008566367520, 0.988217356949980590, 0.988209702863050320, 0.988202046305595830, 0.988194387277636200, 0.988186725779190640, 0.988179061810278040, 0.988171395370918030, +0.988163726461129490, 0.988156055080931630, 0.988148381230343650, 0.988140704909384660, 0.988133026118073960, 0.988125344856430670, 0.988117661124473860, 0.988109974922223080, +0.988102286249697310, 0.988094595106915890, 0.988086901493898000, 0.988079205410662740, 0.988071506857229550, 0.988063805833617640, 0.988056102339845980, 0.988048396375934220, +0.988040687941901470, 0.988032977037767050, 0.988025263663550150, 0.988017547819270090, 0.988009829504946200, 0.988002108720597570, 0.987994385466243850, 0.987986659741904140, +0.987978931547597750, 0.987971200883344000, 0.987963467749162330, 0.987955732145071930, 0.987947994071092240, 0.987940253527242460, 0.987932510513542140, 0.987924765030010480, +0.987917017076667010, 0.987909266653530960, 0.987901513760621740, 0.987893758397958680, 0.987886000565561310, 0.987878240263448840, 0.987870477491640810, 0.987862712250156650, +0.987854944539015680, 0.987847174358237320, 0.987839401707841010, 0.987831626587846290, 0.987823848998272360, 0.987816068939138870, 0.987808286410465250, 0.987800501412270830, +0.987792713944575240, 0.987784924007397920, 0.987777131600758200, 0.987769336724675710, 0.987761539379169660, 0.987753739564259940, 0.987745937279965960, 0.987738132526307040, +0.987730325303302740, 0.987722515610972680, 0.987714703449336430, 0.987706888818413180, 0.987699071718222910, 0.987691252148784840, 0.987683430110118720, 0.987675605602244100, +0.987667778625180290, 0.987659949178947170, 0.987652117263564170, 0.987644282879050710, 0.987636446025426660, 0.987628606702711580, 0.987620764910924880, 0.987612920650086320, +0.987605073920215460, 0.987597224721331820, 0.987589373053455290, 0.987581518916605060, 0.987573662310801240, 0.987565803236063240, 0.987557941692410730, 0.987550077679863360, +0.987542211198440770, 0.987534342248162720, 0.987526470829048650, 0.987518596941118540, 0.987510720584391930, 0.987502841758888470, 0.987494960464628040, 0.987487076701630050, +0.987479190469914500, 0.987471301769500930, 0.987463410600408990, 0.987455516962658540, 0.987447620856269470, 0.987439722281261200, 0.987431821237653720, 0.987423917725466670, +0.987416011744719820, 0.987408103295432830, 0.987400192377625660, 0.987392278991317980, 0.987384363136529660, 0.987376444813280460, 0.987368524021590140, 0.987360600761478470, +0.987352675032965310, 0.987344746836070320, 0.987336816170813700, 0.987328883037214890, 0.987320947435293970, 0.987313009365070720, 0.987305068826564880, 0.987297125819796340, +0.987289180344784970, 0.987281232401550520, 0.987273281990113220, 0.987265329110492700, 0.987257373762708830, 0.987249415946781510, 0.987241455662730580, 0.987233492910576160, +0.987225527690337780, 0.987217560002035750, 0.987209589845689740, 0.987201617221319830, 0.987193642128945890, 0.987185664568587810, 0.987177684540265550, 0.987169702043999120, +0.987161717079808270, 0.987153729647713310, 0.987145739747734010, 0.987137747379890350, 0.987129752544202320, 0.987121755240689900, 0.987113755469373190, 0.987105753230271940, +0.987097748523406260, 0.987089741348796350, 0.987081731706462070, 0.987073719596423430, 0.987065705018700500, 0.987057687973313280, 0.987049668460281970, 0.987041646479626220, +0.987033622031366580, 0.987025595115522790, 0.987017565732115080, 0.987009533881163410, 0.987001499562688010, 0.986993462776708740, 0.986985423523245920, 0.986977381802319310, +0.986969337613949450, 0.986961290958156210, 0.986953241834959690, 0.986945190244380210, 0.986937136186437640, 0.986929079661152290, 0.986921020668544040, 0.986912959208633420, +0.986904895281440320, 0.986896828886985160, 0.986888760025287800, 0.986880688696368580, 0.986872614900247580, 0.986864538636945120, 0.986856459906481080, 0.986848378708876100, +0.986840295044150160, 0.986832208912323480, 0.986824120313416380, 0.986816029247448820, 0.986807935714441250, 0.986799839714413870, 0.986791741247386670, 0.986783640313380390, +0.986775536912414930, 0.986767431044510590, 0.986759322709687690, 0.986751211907966550, 0.986743098639367380, 0.986734982903910260, 0.986726864701615860, 0.986718744032504260, +0.986710620896595780, 0.986702495293910850, 0.986694367224469570, 0.986686236688292470, 0.986678103685399770, 0.986669968215811540, 0.986661830279548680, 0.986653689876631160, +0.986645547007079520, 0.986637401670913960, 0.986629253868154810, 0.986621103598822600, 0.986612950862937650, 0.986604795660520170, 0.986596637991590810, 0.986588477856169880, +0.986580315254277700, 0.986572150185934800, 0.986563982651161520, 0.986555812649978270, 0.986547640182405370, 0.986539465248463480, 0.986531287848172900, 0.986523107981554180, +0.986514925648627640, 0.986506740849413810, 0.986498553583933120, 0.986490363852206010, 0.986482171654252890, 0.986473976990094540, 0.986465779859751150, 0.986457580263243370, +0.986449378200591640, 0.986441173671816380, 0.986432966676938250, 0.986424757215977550, 0.986416545288955060, 0.986408330895891310, 0.986400114036806720, 0.986391894711721730, +0.986383672920657100, 0.986375448663633250, 0.986367221940670840, 0.986358992751790180, 0.986350761097012140, 0.986342526976357270, 0.986334290389846100, 0.986326051337499180, +0.986317809819337030, 0.986309565835380430, 0.986301319385650020, 0.986293070470166010, 0.986284819088949490, 0.986276565242021010, 0.986268308929401090, 0.986260050151110400, +0.986251788907169580, 0.986243525197599280, 0.986235259022419930, 0.986226990381652730, 0.986218719275318010, 0.986210445703436410, 0.986202169666028810, 0.986193891163115730, +0.986185610194717950, 0.986177326760856120, 0.986169040861550770, 0.986160752496823000, 0.986152461666693460, 0.986144168371182680, 0.986135872610311440, 0.986127574384100590, +0.986119273692570800, 0.986110970535742700, 0.986102664913637180, 0.986094356826275110, 0.986086046273677130, 0.986077733255864010, 0.986069417772856620, 0.986061099824675600, +0.986052779411341840, 0.986044456532876090, 0.986036131189299230, 0.986027803380632120, 0.986019473106895530, 0.986011140368110220, 0.986002805164296950, 0.985994467495476810, +0.985986127361670460, 0.985977784762898660, 0.985969439699182490, 0.985961092170542730, 0.985952742177000240, 0.985944389718576010, 0.985936034795290680, 0.985927677407165250, +0.985919317554220580, 0.985910955236477650, 0.985902590453957450, 0.985894223206680740, 0.985885853494668400, 0.985877481317941510, 0.985869106676520830, 0.985860729570427470, +0.985852349999682190, 0.985843967964306070, 0.985835583464319990, 0.985827196499745040, 0.985818807070602100, 0.985810415176912150, 0.985802020818696170, 0.985793623995975030, +0.985785224708769840, 0.985776822957101670, 0.985768418740991410, 0.985760012060460040, 0.985751602915528770, 0.985743191306218460, 0.985734777232550210, 0.985726360694544780, +0.985717941692223600, 0.985709520225607650, 0.985701096294717800, 0.985692669899575270, 0.985684241040201140, 0.985675809716616280, 0.985667375928841900, 0.985658939676898990, +0.985650500960808860, 0.985642059780592490, 0.985633616136270980, 0.985625170027865430, 0.985616721455396920, 0.985608270418886660, 0.985599816918355630, 0.985591360953824940, +0.985582902525316110, 0.985574441632849910, 0.985565978276447650, 0.985557512456130440, 0.985549044171919460, 0.985540573423835830, 0.985532100211900630, 0.985523624536135290, +0.985515146396561010, 0.985506665793198790, 0.985498182726069930, 0.985489697195195520, 0.985481209200597010, 0.985472718742295360, 0.985464225820311790, 0.985455730434667830, +0.985447232585384580, 0.985438732272483130, 0.985430229495985020, 0.985421724255911240, 0.985413216552283090, 0.985404706385121900, 0.985396193754448980, 0.985387678660285650, +0.985379161102653000, 0.985370641081572570, 0.985362118597065460, 0.985353593649153090, 0.985345066237856780, 0.985336536363197620, 0.985328004025197270, 0.985319469223876810, +0.985310931959257790, 0.985302392231361400, 0.985293850040209080, 0.985285305385822150, 0.985276758268221920, 0.985268208687429590, 0.985259656643466930, 0.985251102136355140, +0.985242545166115650, 0.985233985732769660, 0.985225423836338820, 0.985216859476844340, 0.985208292654307650, 0.985199723368750280, 0.985191151620193660, 0.985182577408659220, +0.985174000734168280, 0.985165421596742360, 0.985156839996402800, 0.985148255933171240, 0.985139669407068870, 0.985131080418117370, 0.985122488966338250, 0.985113895051752950, +0.985105298674382900, 0.985096699834249630, 0.985088098531374470, 0.985079494765779050, 0.985070888537485030, 0.985062279846513730, 0.985053668692886800, 0.985045055076625650, +0.985036438997751840, 0.985027820456287010, 0.985019199452252580, 0.985010575985669990, 0.985001950056561100, 0.984993321664947350, 0.984984690810850380, 0.984976057494291620, +0.984967421715292720, 0.984958783473875220, 0.984950142770060770, 0.984941499603870900, 0.984932853975327370, 0.984924205884451620, 0.984915555331265510, 0.984906902315790480, +0.984898246838048160, 0.984889588898060220, 0.984880928495848070, 0.984872265631433930, 0.984863600304838990, 0.984854932516085140, 0.984846262265193890, 0.984837589552187030, +0.984828914377086200, 0.984820236739913040, 0.984811556640689200, 0.984802874079436560, 0.984794189056176770, 0.984785501570931480, 0.984776811623722440, 0.984768119214571410, +0.984759424343500060, 0.984750727010530120, 0.984742027215683270, 0.984733324958981470, 0.984724620240446270, 0.984715913060099650, 0.984707203417963250, 0.984698491314058730, +0.984689776748408070, 0.984681059721032810, 0.984672340231955050, 0.984663618281196420, 0.984654893868778800, 0.984646166994723850, 0.984637437659053540, 0.984628705861789630, +0.984619971602954000, 0.984611234882568190, 0.984602495700654500, 0.984593754057234590, 0.984585009952330230, 0.984576263385963490, 0.984567514358155930, 0.984558762868929630, +0.984550008918306350, 0.984541252506308080, 0.984532493632956810, 0.984523732298274170, 0.984514968502282260, 0.984506202245002960, 0.984497433526458130, 0.984488662346669760, +0.984479888705659500, 0.984471112603449770, 0.984462334040062110, 0.984453553015518730, 0.984444769529841500, 0.984435983583052290, 0.984427195175173080, 0.984418404306225960, +0.984409610976232590, 0.984400815185215380, 0.984392016933196220, 0.984383216220196980, 0.984374413046239630, 0.984365607411346270, 0.984356799315538880, 0.984347988758839440, +0.984339175741270060, 0.984330360262852810, 0.984321542323609580, 0.984312721923562560, 0.984303899062733740, 0.984295073741145220, 0.984286245958818970, 0.984277415715776870, +0.984268583012041450, 0.984259747847634590, 0.984250910222578380, 0.984242070136894910, 0.984233227590606160, 0.984224382583734460, 0.984215535116301670, 0.984206685188329990, +0.984197832799841740, 0.984188977950858910, 0.984180120641403590, 0.984171260871497980, 0.984162398641164280, 0.984153533950424600, 0.984144666799300790, 0.984135797187815520, +0.984126925115990870, 0.984118050583848820, 0.984109173591411590, 0.984100294138701480, 0.984091412225740700, 0.984082527852551350, 0.984073641019155510, 0.984064751725575730, +0.984055859971833980, 0.984046965757952700, 0.984038069083953970, 0.984029169949860120, 0.984020268355693230, 0.984011364301475620, 0.984002457787229720, 0.983993548812977630, +0.983984637378741760, 0.983975723484544210, 0.983966807130407410, 0.983957888316353560, 0.983948967042404980, 0.983940043308583870, 0.983931117114912770, 0.983922188461413880, +0.983913257348109530, 0.983904323775022020, 0.983895387742173670, 0.983886449249586900, 0.983877508297284040, 0.983868564885287180, 0.983859619013619180, 0.983850670682302030, +0.983841719891358270, 0.983832766640810100, 0.983823810930680160, 0.983814852760990570, 0.983805892131763730, 0.983796929043022290, 0.983787963494788590, 0.983778995487085030, +0.983770025019933820, 0.983761052093357740, 0.983752076707378850, 0.983743098862019830, 0.983734118557302970, 0.983725135793250940, 0.983716150569886040, 0.983707162887230810, +0.983698172745307580, 0.983689180144138970, 0.983680185083747440, 0.983671187564155500, 0.983662187585385260, 0.983653185147459920, 0.983644180250401460, 0.983635172894232630, +0.983626163078975770, 0.983617150804653620, 0.983608136071288500, 0.983599118878902940, 0.983590099227519720, 0.983581077117161250, 0.983572052547850180, 0.983563025519608840, +0.983553996032459970, 0.983544964086426220, 0.983535929681529920, 0.983526892817793710, 0.983517853495240350, 0.983508811713892480, 0.983499767473772550, 0.983490720774903070, +0.983481671617306930, 0.983472620001006550, 0.983463565926024460, 0.983454509392383660, 0.983445450400106560, 0.983436388949215920, 0.983427325039734180, 0.983418258671684200, +0.983409189845088520, 0.983400118559969890, 0.983391044816350760, 0.983381968614254310, 0.983372889953702870, 0.983363808834719190, 0.983354725257325920, 0.983345639221545940, +0.983336550727401780, 0.983327459774916310, 0.983318366364112070, 0.983309270495011930, 0.983300172167638760, 0.983291071382015100, 0.983281968138163710, 0.983272862436107450, +0.983263754275869100, 0.983254643657471170, 0.983245530580936780, 0.983236415046288450, 0.983227297053549280, 0.983218176602741690, 0.983209053693888780, 0.983199928327013200, +0.983190800502137810, 0.983181670219285260, 0.983172537478478660, 0.983163402279740750, 0.983154264623094300, 0.983145124508562170, 0.983135981936167250, 0.983126836905932390, +0.983117689417880470, 0.983108539472034140, 0.983099387068416600, 0.983090232207050610, 0.983081074887959040, 0.983071915111164870, 0.983062752876690760, 0.983053588184559900, +0.983044421034794840, 0.983035251427418880, 0.983026079362454790, 0.983016904839925540, 0.983007727859854020, 0.982998548422263200, 0.982989366527175950, 0.982980182174615360, +0.982970995364604080, 0.982961806097165440, 0.982952614372322400, 0.982943420190097730, 0.982934223550514630, 0.982925024453595860, 0.982915822899364520, 0.982906618887843480, +0.982897412419056150, 0.982888203493025190, 0.982878992109773810, 0.982869778269324870, 0.982860561971701460, 0.982851343216926690, 0.982842122005023630, 0.982832898336014950, +0.982823672209924280, 0.982814443626774500, 0.982805212586588480, 0.982795979089389540, 0.982786743135200540, 0.982777504724044790, 0.982768263855945180, 0.982759020530924790, +0.982749774749007040, 0.982740526510214820, 0.982731275814571310, 0.982722022662099630, 0.982712767052822840, 0.982703508986764170, 0.982694248463946480, 0.982684985484393430, +0.982675720048127870, 0.982666452155173010, 0.982657181805552060, 0.982647908999288110, 0.982638633736404480, 0.982629356016924140, 0.982620075840870300, 0.982610793208266500, +0.982601508119135600, 0.982592220573501040, 0.982582930571385900, 0.982573638112813400, 0.982564343197806830, 0.982555045826389310, 0.982545745998584130, 0.982536443714414730, +0.982527138973904200, 0.982517831777075860, 0.982508522123952900, 0.982499210014558640, 0.982489895448916290, 0.982480578427049170, 0.982471258948980690, 0.982461937014734050, +0.982452612624332590, 0.982443285777799600, 0.982433956475158410, 0.982424624716432330, 0.982415290501644670, 0.982405953830818630, 0.982396614703977880, 0.982387273121145600, +0.982377929082345110, 0.982368582587599740, 0.982359233636933000, 0.982349882230368120, 0.982340528367928400, 0.982331172049637600, 0.982321813275518820, 0.982312452045595470, +0.982303088359891000, 0.982293722218428810, 0.982284353621232340, 0.982274982568324910, 0.982265609059729930, 0.982256233095471170, 0.982246854675571710, 0.982237473800055110, +0.982228090468944880, 0.982218704682264350, 0.982209316440037170, 0.982199925742286650, 0.982190532589036100, 0.982181136980309510, 0.982171738916129970, 0.982162338396521120, +0.982152935421506390, 0.982143529991109320, 0.982134122105353450, 0.982124711764262080, 0.982115298967859210, 0.982105883716168030, 0.982096466009212080, 0.982087045847015010, +0.982077623229600350, 0.982068198156991530, 0.982058770629212320, 0.982049340646286020, 0.982039908208236500, 0.982030473315087190, 0.982021035966861740, 0.982011596163583690, +0.982002153905276560, 0.981992709191964240, 0.981983262023669810, 0.981973812400417480, 0.981964360322230560, 0.981954905789132800, 0.981945448801147760, 0.981935989358299070, +0.981926527460610380, 0.981917063108105450, 0.981907596300807590, 0.981898127038741020, 0.981888655321929040, 0.981879181150395520, 0.981869704524164000, 0.981860225443258240, +0.981850743907701880, 0.981841259917518690, 0.981831773472732210, 0.981822284573366400, 0.981812793219444810, 0.981803299410991430, 0.981793803148029660, 0.981784304430583400, +0.981774803258676390, 0.981765299632332280, 0.981755793551575050, 0.981746285016428240, 0.981736774026915840, 0.981727260583061480, 0.981717744684888930, 0.981708226332422050, +0.981698705525684500, 0.981689182264700140, 0.981679656549492960, 0.981670128380086600, 0.981660597756505050, 0.981651064678771830, 0.981641529146911050, 0.981631991160946460, +0.981622450720901930, 0.981612907826801000, 0.981603362478667970, 0.981593814676526620, 0.981584264420400700, 0.981574711710314070, 0.981565156546290730, 0.981555598928354420, +0.981546038856529020, 0.981536476330838630, 0.981526911351307100, 0.981517343917958310, 0.981507774030816130, 0.981498201689904540, 0.981488626895247410, 0.981479049646868720, +0.981469469944792230, 0.981459887789042250, 0.981450303179642550, 0.981440716116617100, 0.981431126599989770, 0.981421534629784760, 0.981411940206025850, 0.981402343328736880, +0.981392743997942300, 0.981383142213665850, 0.981373537975931520, 0.981363931284763290, 0.981354322140185360, 0.981344710542221500, 0.981335096490896010, 0.981325479986232430, +0.981315861028255410, 0.981306239616988820, 0.981296615752456520, 0.981286989434682730, 0.981277360663691420, 0.981267729439506690, 0.981258095762152730, 0.981248459631653300, +0.981238821048032950, 0.981229180011315430, 0.981219536521525050, 0.981209890578685790, 0.981200242182821870, 0.981190591333957360, 0.981180938032116150, 0.981171282277322750, +0.981161624069601170, 0.981151963408975480, 0.981142300295469890, 0.981132634729108610, 0.981122966709915720, 0.981113296237915430, 0.981103623313131610, 0.981093947935589020, +0.981084270105311520, 0.981074589822323430, 0.981064907086648730, 0.981055221898311850, 0.981045534257336980, 0.981035844163748120, 0.981026151617569560, 0.981016456618825750, +0.981006759167540880, 0.980997059263739040, 0.980987356907444650, 0.980977652098681710, 0.980967944837474740, 0.980958235123847720, 0.980948522957825310, 0.980938808339431590, +0.980929091268690770, 0.980919371745627380, 0.980909649770265400, 0.980899925342629380, 0.980890198462743500, 0.980880469130631980, 0.980870737346319470, 0.980861003109830150, +0.980851266421188250, 0.980841527280418180, 0.980831785687544370, 0.980822041642591010, 0.980812295145582440, 0.980802546196543280, 0.980792794795497750, 0.980783040942470260, +0.980773284637485140, 0.980763525880566810, 0.980753764671739690, 0.980744001011028100, 0.980734234898456460, 0.980724466334049310, 0.980714695317830950, 0.980704921849825940, +0.980695145930058580, 0.980685367558553400, 0.980675586735334730, 0.980665803460427200, 0.980656017733854910, 0.980646229555642730, 0.980636438925815090, 0.980626645844396180, +0.980616850311410770, 0.980607052326883280, 0.980597251890838020, 0.980587449003299530, 0.980577643664292680, 0.980567835873841550, 0.980558025631970920, 0.980548212938705310, +0.980538397794069040, 0.980528580198086750, 0.980518760150783100, 0.980508937652182390, 0.980499112702309490, 0.980489285301188730, 0.980479455448844850, 0.980469623145302280, +0.980459788390585670, 0.980449951184719670, 0.980440111527728700, 0.980430269419637290, 0.980420424860470320, 0.980410577850252430, 0.980400728389007940, 0.980390876476761710, +0.980381022113538390, 0.980371165299362410, 0.980361306034258310, 0.980351444318251160, 0.980341580151365410, 0.980331713533625690, 0.980321844465056660, 0.980311972945683060, +0.980302098975529560, 0.980292222554620780, 0.980282343682981170, 0.980272462360636030, 0.980262578587609680, 0.980252692363926870, 0.980242803689612360, 0.980232912564690810, +0.980223018989186960, 0.980213122963125460, 0.980203224486531190, 0.980193323559429010, 0.980183420181843460, 0.980173514353799400, 0.980163606075321490, 0.980153695346434590, +0.980143782167163470, 0.980133866537532650, 0.980123948457567450, 0.980114027927292300, 0.980104104946732060, 0.980094179515911600, 0.980084251634855800, 0.980074321303589180, +0.980064388522136840, 0.980054453290523430, 0.980044515608773930, 0.980034575476913190, 0.980024632894966110, 0.980014687862957310, 0.980004740380911900, 0.979994790448854510, +0.979984838066810030, 0.979974883234803640, 0.979964925952860110, 0.979954966221004200, 0.979945004039260880, 0.979935039407655030, 0.979925072326211620, 0.979915102794955530, +0.979905130813911400, 0.979895156383104760, 0.979885179502560160, 0.979875200172302560, 0.979865218392357070, 0.979855234162748450, 0.979845247483501880, 0.979835258354642020, +0.979825266776193970, 0.979815272748182810, 0.979805276270633630, 0.979795277343571080, 0.979785275967020470, 0.979775272141006570, 0.979765265865554570, 0.979755257140689230, +0.979745245966435860, 0.979735232342819450, 0.979725216269864860, 0.979715197747597300, 0.979705176776041740, 0.979695153355223280, 0.979685127485166900, 0.979675099165897460, +0.979665068397440500, 0.979655035179820890, 0.979644999513063720, 0.979634961397193970, 0.979624920832236850, 0.979614877818217430, 0.979604832355160720, 0.979594784443092000, +0.979584734082036390, 0.979574681272018850, 0.979564626013064710, 0.979554568305198940, 0.979544508148446740, 0.979534445542833310, 0.979524380488383640, 0.979514312985123040, +0.979504243033076820, 0.979494170632269960, 0.979484095782727550, 0.979474018484475020, 0.979463938737537450, 0.979453856541939950, 0.979443771897707700, 0.979433684804866140, +0.979423595263440470, 0.979413503273455780, 0.979403408834937260, 0.979393311947910240, 0.979383212612400020, 0.979373110828431480, 0.979363006596030370, 0.979352899915221790, +0.979342790786030930, 0.979332679208483100, 0.979322565182603630, 0.979312448708417600, 0.979302329785950550, 0.979292208415227570, 0.979282084596274080, 0.979271958329115510, +0.979261829613777060, 0.979251698450283930, 0.979241564838661650, 0.979231428778935320, 0.979221290271130360, 0.979211149315272310, 0.979201005911386370, 0.979190860059497960, +0.979180711759632390, 0.979170561011815100, 0.979160407816071280, 0.979150252172426570, 0.979140094080905960, 0.979129933541535320, 0.979119770554339850, 0.979109605119344970, +0.979099437236576000, 0.979089266906058580, 0.979079094127817910, 0.979068918901879410, 0.979058741228268530, 0.979048561107011000, 0.979038378538132030, 0.979028193521657150, +0.979018006057611800, 0.979007816146021390, 0.978997623786911460, 0.978987428980307330, 0.978977231726234740, 0.978967032024719020, 0.978956829875785810, 0.978946625279460520, +0.978936418235768710, 0.978926208744735790, 0.978915996806387300, 0.978905782420748770, 0.978895565587845850, 0.978885346307704070, 0.978875124580348870, 0.978864900405805870, +0.978854673784100740, 0.978844444715258780, 0.978834213199305750, 0.978823979236267070, 0.978813742826168510, 0.978803503969035700, 0.978793262664894080, 0.978783018913769290, +0.978772772715687080, 0.978762524070672770, 0.978752272978752000, 0.978742019439950760, 0.978731763454294580, 0.978721505021808880, 0.978711244142519420, 0.978700980816451850, +0.978690715043631810, 0.978680446824084950, 0.978670176157836910, 0.978659903044913570, 0.978649627485340460, 0.978639349479143220, 0.978629069026347720, 0.978618786126979500, +0.978608500781064210, 0.978598212988627590, 0.978587922749695640, 0.978577630064293880, 0.978567334932447960, 0.978557037354183870, 0.978546737329527020, 0.978536434858503390, +0.978526129941138630, 0.978515822577458510, 0.978505512767488870, 0.978495200511255490, 0.978484885808784120, 0.978474568660100520, 0.978464249065230440, 0.978453927024199870, +0.978443602537034440, 0.978433275603759700, 0.978422946224402070, 0.978412614398987080, 0.978402280127540490, 0.978391943410088280, 0.978381604246656210, 0.978371262637270030, +0.978360918581955620, 0.978350572080739060, 0.978340223133645990, 0.978329871740702520, 0.978319517901934280, 0.978309161617367250, 0.978298802887027310, 0.978288441710940320, +0.978278078089132140, 0.978267712021628880, 0.978257343508456390, 0.978246972549640550, 0.978236599145207220, 0.978226223295182380, 0.978215844999592020, 0.978205464258462000, +0.978195081071818180, 0.978184695439686890, 0.978174307362093880, 0.978163916839065010, 0.978153523870626370, 0.978143128456803960, 0.978132730597623620, 0.978122330293111350, +0.978111927543293460, 0.978101522348195700, 0.978091114707844160, 0.978080704622264820, 0.978070292091483770, 0.978059877115527000, 0.978049459694420480, 0.978039039828190070, +0.978028617516862320, 0.978018192760463090, 0.978007765559018250, 0.977997335912554110, 0.977986903821096540, 0.977976469284671750, 0.977966032303305590, 0.977955592877024600, +0.977945151005854550, 0.977934706689821630, 0.977924259928951930, 0.977913810723271660, 0.977903359072806790, 0.977892904977583520, 0.977882448437627840, 0.977871989452966270, +0.977861528023624690, 0.977851064149629190, 0.977840597831006190, 0.977830129067781550, 0.977819657859981710, 0.977809184207632630, 0.977798708110760420, 0.977788229569391710, +0.977777748583552380, 0.977767265153268620, 0.977756779278566750, 0.977746290959472960, 0.977735800196013360, 0.977725306988214140, 0.977714811336101830, 0.977704313239702530, +0.977693812699042430, 0.977683309714147740, 0.977672804285044770, 0.977662296411759830, 0.977651786094319130, 0.977641273332748860, 0.977630758127075560, 0.977620240477325320, +0.977609720383524450, 0.977599197845699370, 0.977588672863876180, 0.977578145438081410, 0.977567615568341260, 0.977557083254681820, 0.977546548497129960, 0.977536011295711660, +0.977525471650453340, 0.977514929561381420, 0.977504385028522100, 0.977493838051901820, 0.977483288631546770, 0.977472736767483700, 0.977462182459738700, 0.977451625708338320, +0.977441066513308860, 0.977430504874676750, 0.977419940792468410, 0.977409374266710150, 0.977398805297428290, 0.977388233884649680, 0.977377660028400430, 0.977367083728706950, +0.977356504985595900, 0.977345923799093460, 0.977335340169226300, 0.977324754096020600, 0.977314165579503120, 0.977303574619700300, 0.977292981216638550, 0.977282385370344290, +0.977271787080844170, 0.977261186348164500, 0.977250583172331820, 0.977239977553372550, 0.977229369491313560, 0.977218758986181160, 0.977208146038001770, 0.977197530646802040, +0.977186912812608500, 0.977176292535447690, 0.977165669815346140, 0.977155044652330270, 0.977144417046426960, 0.977133786997662510, 0.977123154506063680, 0.977112519571657010, +0.977101882194468920, 0.977091242374526270, 0.977080600111855270, 0.977069955406482890, 0.977059308258435680, 0.977048658667740160, 0.977038006634422970, 0.977027352158510890, +0.977016695240030320, 0.977006035879008030, 0.976995374075470550, 0.976984709829444740, 0.976974043140957150, 0.976963374010034520, 0.976952702436703400, 0.976942028420990540, +0.976931351962922580, 0.976920673062526280, 0.976909991719828060, 0.976899307934855130, 0.976888621707633800, 0.976877933038191040, 0.976867241926553390, 0.976856548372747710, +0.976845852376800550, 0.976835153938738650, 0.976824453058589000, 0.976813749736378250, 0.976803043972133130, 0.976792335765880430, 0.976781625117646770, 0.976770912027459140, +0.976760196495344290, 0.976749478521328650, 0.976738758105439530, 0.976728035247703570, 0.976717309948147430, 0.976706582206798070, 0.976695852023682250, 0.976685119398826850, +0.976674384332258390, 0.976663646824004190, 0.976652906874090900, 0.976642164482545260, 0.976631419649394260, 0.976620672374664770, 0.976609922658383530, 0.976599170500577430, +0.976588415901273320, 0.976577658860498300, 0.976566899378279230, 0.976556137454642760, 0.976545373089616090, 0.976534606283225860, 0.976523837035499160, 0.976513065346462870, +0.976502291216143850, 0.976491514644569180, 0.976480735631765630, 0.976469954177760390, 0.976459170282580220, 0.976448383946252110, 0.976437595168803020, 0.976426803950259830, +0.976416010290649730, 0.976405214189999700, 0.976394415648336510, 0.976383614665687350, 0.976372811242079200, 0.976362005377539030, 0.976351197072093720, 0.976340386325770360, +0.976329573138596140, 0.976318757510598050, 0.976307939441803050, 0.976297118932238140, 0.976286295981930510, 0.976275470590907140, 0.976264642759194780, 0.976253812486821080, +0.976242979773812910, 0.976232144620197250, 0.976221307026001180, 0.976210466991251910, 0.976199624515976530, 0.976188779600202010, 0.976177932243955330, 0.976167082447264020, +0.976156230210154960, 0.976145375532655460, 0.976134518414792370, 0.976123658856593130, 0.976112796858084610, 0.976101932419294220, 0.976091065540248710, 0.976080196220975750, +0.976069324461502410, 0.976058450261855560, 0.976047573622062740, 0.976036694542150920, 0.976025813022147410, 0.976014929062079100, 0.976004042661973710, 0.975993153821858250, +0.975982262541759900, 0.975971368821705880, 0.975960472661723370, 0.975949574061839690, 0.975938673022082150, 0.975927769542477730, 0.975916863623053970, 0.975905955263838170, +0.975895044464857420, 0.975884131226139150, 0.975873215547710450, 0.975862297429598740, 0.975851376871831320, 0.975840453874435190, 0.975829528437438200, 0.975818600560867330, +0.975807670244750010, 0.975796737489113440, 0.975785802293985150, 0.975774864659392230, 0.975763924585361990, 0.975752982071922180, 0.975742037119099900, 0.975731089726922460, +0.975720139895417390, 0.975709187624611900, 0.975698232914533500, 0.975687275765209530, 0.975676316176667060, 0.975665354148934070, 0.975654389682037770, 0.975643422776005350, +0.975632453430864470, 0.975621481646642420, 0.975610507423366750, 0.975599530761064540, 0.975588551659763660, 0.975577570119491420, 0.975566586140275360, 0.975555599722142670, +0.975544610865121120, 0.975533619569238010, 0.975522625834520760, 0.975511629660996920, 0.975500631048694110, 0.975489629997639660, 0.975478626507861210, 0.975467620579386190, +0.975456612212242110, 0.975445601406456530, 0.975434588162056860, 0.975423572479070630, 0.975412554357525610, 0.975401533797449210, 0.975390510798868960, 0.975379485361812400, +0.975368457486307180, 0.975357427172380830, 0.975346394420060660, 0.975335359229374750, 0.975324321600350430, 0.975313281533015330, 0.975302239027396990, 0.975291194083523050, +0.975280146701421160, 0.975269096881118850, 0.975258044622643650, 0.975246989926023540, 0.975235932791285950, 0.975224873218458520, 0.975213811207568890, 0.975202746758644820, +0.975191679871713730, 0.975180610546803490, 0.975169538783941640, 0.975158464583156030, 0.975147387944474310, 0.975136308867924130, 0.975125227353533130, 0.975114143401329070, +0.975103057011339700, 0.975091968183592450, 0.975080876918115400, 0.975069783214936310, 0.975058687074082610, 0.975047588495582260, 0.975036487479463030, 0.975025384025752450, +0.975014278134478500, 0.975003169805668590, 0.974992059039351040, 0.974980945835553280, 0.974969830194303170, 0.974958712115628460, 0.974947591599557020, 0.974936468646116490, +0.974925343255334750, 0.974914215427239770, 0.974903085161859200, 0.974891952459221000, 0.974880817319352940, 0.974869679742282780, 0.974858539728038380, 0.974847397276647710, +0.974836252388138310, 0.974825105062538500, 0.974813955299875910, 0.974802803100178420, 0.974791648463473990, 0.974780491389790390, 0.974769331879155490, 0.974758169931597360, +0.974747005547143550, 0.974735838725822480, 0.974724669467661790, 0.974713497772689450, 0.974702323640933340, 0.974691147072421440, 0.974679968067181600, 0.974668786625241700, +0.974657602746630050, 0.974646416431374400, 0.974635227679502720, 0.974624036491042900, 0.974612842866023010, 0.974601646804471030, 0.974590448306414950, 0.974579247371882510, +0.974568044000902130, 0.974556838193501700, 0.974545629949709170, 0.974534419269552530, 0.974523206153059870, 0.974511990600259280, 0.974500772611178620, 0.974489552185845760, +0.974478329324289350, 0.974467104026537020, 0.974455876292616980, 0.974444646122557210, 0.974433413516385900, 0.974422178474131040, 0.974410940995820480, 0.974399701081482770, +0.974388458731145880, 0.974377213944837780, 0.974365966722586680, 0.974354717064420670, 0.974343464970367830, 0.974332210440456370, 0.974320953474714150, 0.974309694073169700, +0.974298432235851110, 0.974287167962786360, 0.974275901254003760, 0.974264632109531400, 0.974253360529397370, 0.974242086513629870, 0.974230810062257310, 0.974219531175307680, +0.974208249852809290, 0.974196966094790230, 0.974185679901278690, 0.974174391272303100, 0.974163100207891430, 0.974151806708071780, 0.974140510772872890, 0.974129212402322750, +0.974117911596449450, 0.974106608355281510, 0.974095302678846920, 0.974083994567174210, 0.974072684020291460, 0.974061371038226760, 0.974050055621008880, 0.974038737768665790, +0.974027417481225900, 0.974016094758717530, 0.974004769601168880, 0.973993442008608270, 0.973982111981063880, 0.973970779518564480, 0.973959444621138040, 0.973948107288812980, +0.973936767521617730, 0.973925425319580480, 0.973914080682729670, 0.973902733611093700, 0.973891384104700770, 0.973880032163579430, 0.973868677787758100, 0.973857320977265070, +0.973845961732128670, 0.973834600052377430, 0.973823235938039770, 0.973811869389143880, 0.973800500405718190, 0.973789128987791460, 0.973777755135391890, 0.973766378848547890, +0.973755000127288000, 0.973743618971640520, 0.973732235381634110, 0.973720849357296860, 0.973709460898657620, 0.973698070005744820, 0.973686676678586770, 0.973675280917212120, +0.973663882721649280, 0.973652482091926670, 0.973641079028072840, 0.973629673530116090, 0.973618265598085400, 0.973606855232009070, 0.973595442431915650, 0.973584027197833550, +0.973572609529791300, 0.973561189427817660, 0.973549766891940840, 0.973538341922189690, 0.973526914518592860, 0.973515484681178660, 0.973504052409975620, 0.973492617705012610, +0.973481180566318050, 0.973469740993920470, 0.973458298987848410, 0.973446854548130740, 0.973435407674795970, 0.973423958367872650, 0.973412506627389430, 0.973401052453374940, +0.973389595845857940, 0.973378136804866840, 0.973366675330430200, 0.973355211422577080, 0.973343745081335920, 0.973332276306735470, 0.973320805098804250, 0.973309331457571040, +0.973297855383064460, 0.973286376875313050, 0.973274895934346020, 0.973263412560191670, 0.973251926752878750, 0.973240438512436020, 0.973228947838892240, 0.973217454732276050, +0.973205959192616320, 0.973194461219941350, 0.973182960814280570, 0.973171457975662290, 0.973159952704115370, 0.973148444999668570, 0.973136934862350760, 0.973125422292190460, +0.973113907289216540, 0.973102389853457980, 0.973090869984943430, 0.973079347683701750, 0.973067822949761680, 0.973056295783152110, 0.973044766183901680, 0.973033234152039460, +0.973021699687593890, 0.973010162790594270, 0.972998623461069250, 0.972987081699047680, 0.972975537504558340, 0.972963990877630190, 0.972952441818292100, 0.972940890326572940, +0.972929336402501340, 0.972917780046106520, 0.972906221257417330, 0.972894660036462520, 0.972883096383271080, 0.972871530297871990, 0.972859961780293990, 0.972848390830565850, +0.972836817448716970, 0.972825241634776130, 0.972813663388772070, 0.972802082710733870, 0.972790499600690530, 0.972778914058670900, 0.972767326084703950, 0.972755735678818570, +0.972744142841044050, 0.972732547571409030, 0.972720949869942840, 0.972709349736674110, 0.972697747171632040, 0.972686142174845720, 0.972674534746343910, 0.972662924886155580, +0.972651312594310260, 0.972639697870836480, 0.972628080715763570, 0.972616461129120480, 0.972604839110936200, 0.972593214661239820, 0.972581587780060210, 0.972569958467426780, +0.972558326723368500, 0.972546692547914370, 0.972535055941093570, 0.972523416902935090, 0.972511775433468120, 0.972500131532721630, 0.972488485200724620, 0.972476836437506600, +0.972465185243096550, 0.972453531617523570, 0.972441875560816630, 0.972430217073005030, 0.972418556154117990, 0.972406892804184240, 0.972395227023233550, 0.972383558811294790, +0.972371888168397040, 0.972360215094569710, 0.972348539589841690, 0.972336861654242380, 0.972325181287800990, 0.972313498490546380, 0.972301813262508200, 0.972290125603715530, +0.972278435514197570, 0.972266742993983520, 0.972255048043102480, 0.972243350661583960, 0.972231650849457060, 0.972219948606750760, 0.972208243933494810, 0.972196536829718290, +0.972184827295450420, 0.972173115330720480, 0.972161400935557700, 0.972149684109991470, 0.972137964854050800, 0.972126243167765520, 0.972114519051164530, 0.972102792504277220, +0.972091063527133040, 0.972079332119761050, 0.972067598282190800, 0.972055862014451600, 0.972044123316572530, 0.972032382188583340, 0.972020638630513130, 0.972008892642391430, +0.971997144224247430, 0.971985393376110670, 0.971973640098010350, 0.971961884389975880, 0.971950126252036580, 0.971938365684222090, 0.971926602686561720, 0.971914837259084900, +0.971903069401820920, 0.971891299114799320, 0.971879526398049420, 0.971867751251600520, 0.971855973675482490, 0.971844193669724520, 0.971832411234356040, 0.971820626369406470, +0.971808839074905450, 0.971797049350882180, 0.971785257197366410, 0.971773462614387240, 0.971761665601974630, 0.971749866160157900, 0.971738064288966470, 0.971726259988429870, +0.971714453258577640, 0.971702644099439290, 0.971690832511044160, 0.971679018493422090, 0.971667202046602510, 0.971655383170614840, 0.971643561865488840, 0.971631738131253810, +0.971619911967939510, 0.971608083375575360, 0.971596252354190890, 0.971584418903815970, 0.971572583024480020, 0.971560744716212570, 0.971548903979043250, 0.971537060813001730, +0.971525215218117520, 0.971513367194420270, 0.971501516741939410, 0.971489663860704900, 0.971477808550746280, 0.971465950812093190, 0.971454090644775170, 0.971442228048821850, +0.971430363024263110, 0.971418495571128140, 0.971406625689447250, 0.971394753379249740, 0.971382878640565270, 0.971371001473423700, 0.971359121877854560, 0.971347239853887710, +0.971335355401552690, 0.971323468520879140, 0.971311579211897040, 0.971299687474636020, 0.971287793309125850, 0.971275896715396050, 0.971263997693476600, 0.971252096243397260, +0.971240192365187550, 0.971228286058877120, 0.971216377324496280, 0.971204466162074450, 0.971192552571641500, 0.971180636553227060, 0.971168718106861120, 0.971156797232573420, +0.971144873930393390, 0.971132948200351450, 0.971121020042477130, 0.971109089456800300, 0.971097156443350820, 0.971085221002158330, 0.971073283133252810, 0.971061342836664010, +0.971049400112421800, 0.971037454960556160, 0.971025507381096940, 0.971013557374074020, 0.971001604939517150, 0.970989650077456190, 0.970977692787921230, 0.970965733070941810, +0.970953770926548220, 0.970941806354770120, 0.970929839355637700, 0.970917869929180500, 0.970905898075428710, 0.970893923794412190, 0.970881947086160820, 0.970869967950704460, +0.970857986388073300, 0.970846002398297210, 0.970834015981406060, 0.970822027137429930, 0.970810035866398800, 0.970798042168342420, 0.970786046043291000, 0.970774047491274270, +0.970762046512322670, 0.970750043106465950, 0.970738037273734090, 0.970726029014157170, 0.970714018327765050, 0.970702005214588050, 0.970689989674655700, 0.970677971707998630, +0.970665951314646720, 0.970653928494629840, 0.970641903247978170, 0.970629875574721690, 0.970617845474890610, 0.970605812948514780, 0.970593777995624300, 0.970581740616249580, +0.970569700810420600, 0.970557658578167230, 0.970545613919519770, 0.970533566834508310, 0.970521517323162830, 0.970509465385513640, 0.970497411021590590, 0.970485354231424120, +0.970473295015044310, 0.970461233372481360, 0.970449169303765240, 0.970437102808926260, 0.970425033887994390, 0.970412962540999850, 0.970400888767973040, 0.970388812568944050, +0.970376733943943080, 0.970364652893000220, 0.970352569416145670, 0.970340483513409740, 0.970328395184822610, 0.970316304430414280, 0.970304211250215490, 0.970292115644255990, +0.970280017612566330, 0.970267917155176570, 0.970255814272117050, 0.970243708963418050, 0.970231601229109450, 0.970219491069222120, 0.970207378483786130, 0.970195263472831580, +0.970183146036388890, 0.970171026174488360, 0.970158903887160310, 0.970146779174434930, 0.970134652036342420, 0.970122522472913530, 0.970110390484178240, 0.970098256070167090, +0.970086119230910150, 0.970073979966438070, 0.970061838276780940, 0.970049694161969290, 0.970037547622033090, 0.970025398657003320, 0.970013247266909960, 0.970001093451783650, +0.969988937211654470, 0.969976778546552950, 0.969964617456509530, 0.969952453941554380, 0.969940288001718280, 0.969928119637031410, 0.969915948847524300, 0.969903775633227270, +0.969891599994170850, 0.969879421930385340, 0.969867241441901400, 0.969855058528749090, 0.969842873190959300, 0.969830685428562430, 0.969818495241588810, 0.969806302630068950, +0.969794107594033280, 0.969781910133512340, 0.969769710248536750, 0.969757507939136510, 0.969745303205342800, 0.969733096047185830, 0.969720886464696120, 0.969708674457904210, +0.969696460026840620, 0.969684243171535790, 0.969672023892020230, 0.969659802188324820, 0.969647578060479850, 0.969635351508515990, 0.969623122532463740, 0.969610891132353660, +0.969598657308216370, 0.969586421060082420, 0.969574182387982210, 0.969561941291946730, 0.969549697772006500, 0.969537451828191950, 0.969525203460533720, 0.969512952669062570, +0.969500699453809010, 0.969488443814803480, 0.969476185752077060, 0.969463925265660160, 0.969451662355583550, 0.969439397021877650, 0.969427129264573310, 0.969414859083701170, +0.969402586479291890, 0.969390311451375890, 0.969378033999984230, 0.969365754125147690, 0.969353471826896570, 0.969341187105261960, 0.969328899960274270, 0.969316610391964370, +0.969304318400362910, 0.969292023985500410, 0.969279727147408180, 0.969267427886116530, 0.969255126201656330, 0.969242822094058320, 0.969230515563353270, 0.969218206609571920, +0.969205895232744810, 0.969193581432903240, 0.969181265210077750, 0.969168946564298970, 0.969156625495597890, 0.969144302004005250, 0.969131976089551820, 0.969119647752268550, +0.969107316992185890, 0.969094983809335120, 0.969082648203746900, 0.969070310175452090, 0.969057969724481440, 0.969045626850865930, 0.969033281554636310, 0.969020933835823330, +0.969008583694458190, 0.968996231130571650, 0.968983876144194460, 0.968971518735357580, 0.968959158904091900, 0.968946796650428380, 0.968934431974397880, 0.968922064876031050, +0.968909695355359200, 0.968897323412413190, 0.968884949047223890, 0.968872572259822150, 0.968860193050239070, 0.968847811418505510, 0.968835427364652340, 0.968823040888710410, +0.968810651990711040, 0.968798260670685200, 0.968785866928663530, 0.968773470764677350, 0.968761072178757400, 0.968748671170934770, 0.968736267741240220, 0.968723861889705270, +0.968711453616360680, 0.968699042921237430, 0.968686629804366590, 0.968674214265779150, 0.968661796305506200, 0.968649375923578690, 0.968636953120027620, 0.968624527894884400, +0.968612100248179790, 0.968599670179944860, 0.968587237690210930, 0.968574802779008760, 0.968562365446369640, 0.968549925692324680, 0.968537483516904610, 0.968525038920140970, +0.968512591902064850, 0.968500142462707210, 0.968487690602099270, 0.968475236320271990, 0.968462779617256690, 0.968450320493084220, 0.968437858947786220, 0.968425394981393460, +0.968412928593937350, 0.968400459785448860, 0.968387988555959200, 0.968375514905499560, 0.968363038834101130, 0.968350560341794900, 0.968338079428612500, 0.968325596094584910, +0.968313110339743320, 0.968300622164118940, 0.968288131567742960, 0.968275638550646690, 0.968263143112861210, 0.968250645254417950, 0.968238144975348100, 0.968225642275682970, +0.968213137155453650, 0.968200629614691550, 0.968188119653427880, 0.968175607271693830, 0.968163092469520590, 0.968150575246939820, 0.968138055603982580, 0.968125533540680320, +0.968113009057064100, 0.968100482153165460, 0.968087952829015610, 0.968075421084645840, 0.968062886920087240, 0.968050350335371680, 0.968037811330530350, 0.968025269905594340, +0.968012726060595300, 0.968000179795564300, 0.967987631110532990, 0.967975080005532230, 0.967962526480594110, 0.967949970535749600, 0.967937412171030240, 0.967924851386467330, +0.967912288182092300, 0.967899722557936440, 0.967887154514031400, 0.967874584050408160, 0.967862011167098800, 0.967849435864134300, 0.967836858141546300, 0.967824277999366100, +0.967811695437625240, 0.967799110456355140, 0.967786523055587210, 0.967773933235352770, 0.967761340995683780, 0.967748746336611340, 0.967736149258167090, 0.967723549760382440, +0.967710947843288930, 0.967698343506918080, 0.967685736751301100, 0.967673127576470060, 0.967660515982456170, 0.967647901969290960, 0.967635285537006060, 0.967622666685632900, +0.967610045415203120, 0.967597421725748250, 0.967584795617299490, 0.967572167089889020, 0.967559536143548170, 0.967546902778308460, 0.967534266994201420, 0.967521628791258800, +0.967508988169512140, 0.967496345128992630, 0.967483699669732580, 0.967471051791763290, 0.967458401495116420, 0.967445748779823480, 0.967433093645916120, 0.967420436093426090, +0.967407776122385040, 0.967395113732824160, 0.967382448924775870, 0.967369781698271370, 0.967357112053342520, 0.967344439990020730, 0.967331765508337990, 0.967319088608325720, +0.967306409290015770, 0.967293727553439680, 0.967281043398629300, 0.967268356825616400, 0.967255667834432620, 0.967242976425109700, 0.967230282597679290, 0.967217586352173250, +0.967204887688623010, 0.967192186607060630, 0.967179483107517890, 0.967166777190026530, 0.967154068854618080, 0.967141358101324510, 0.967128644930177580, 0.967115929341208940, +0.967103211334450320, 0.967090490909933930, 0.967077768067691300, 0.967065042807754180, 0.967052315130154550, 0.967039585034924040, 0.967026852522094640, 0.967014117591698090, +0.967001380243766030, 0.966988640478330770, 0.966975898295423850, 0.966963153695077130, 0.966950406677322680, 0.966937657242192160, 0.966924905389717430, 0.966912151119930230, +0.966899394432862880, 0.966886635328547130, 0.966873873807014730, 0.966861109868297650, 0.966848343512427770, 0.966835574739437040, 0.966822803549357350, 0.966810029942220430, +0.966797253918058710, 0.966784475476903940, 0.966771694618787870, 0.966758911343742480, 0.966746125651799960, 0.966733337542992070, 0.966720547017350550, 0.966707754074908050, +0.966694958715696000, 0.966682160939746680, 0.966669360747091870, 0.966656558137763740, 0.966643753111794070, 0.966630945669215150, 0.966618135810058620, 0.966605323534356910, +0.966592508842141980, 0.966579691733445710, 0.966566872208300290, 0.966554050266737570, 0.966541225908789880, 0.966528399134488960, 0.966515569943866890, 0.966502738336956210, +0.966489904313788560, 0.966477067874396130, 0.966464229018811130, 0.966451387747065520, 0.966438544059191500, 0.966425697955220820, 0.966412849435186130, 0.966399998499119280, +0.966387145147052480, 0.966374289379017810, 0.966361431195047470, 0.966348570595173540, 0.966335707579428100, 0.966322842147843250, 0.966309974300451510, 0.966297104037284750, +0.966284231358375270, 0.966271356263755270, 0.966258478753456830, 0.966245598827512260, 0.966232716485953660, 0.966219831728812980, 0.966206944556122990, 0.966194054967915660, +0.966181162964223180, 0.966168268545077760, 0.966155371710511690, 0.966142472460557180, 0.966129570795246310, 0.966116666714611720, 0.966103760218685490, 0.966090851307499830, +0.966077939981087040, 0.966065026239479320, 0.966052110082709080, 0.966039191510808640, 0.966026270523809960, 0.966013347121745800, 0.966000421304648360, 0.965987493072549720, +0.965974562425482520, 0.965961629363478740, 0.965948693886571010, 0.965935755994791310, 0.965922815688172400, 0.965909872966746460, 0.965896927830545820, 0.965883980279602870, +0.965871030313950050, 0.965858077933619550, 0.965845123138643900, 0.965832165929055300, 0.965819206304886380, 0.965806244266169460, 0.965793279812936940, 0.965780312945221260, +0.965767343663054830, 0.965754371966469960, 0.965741397855499170, 0.965728421330174780, 0.965715442390529420, 0.965702461036595520, 0.965689477268405480, 0.965676491085991630, +0.965663502489386700, 0.965650511478622910, 0.965637518053732660, 0.965624522214748810, 0.965611523961703690, 0.965598523294629810, 0.965585520213559590, 0.965572514718525570, +0.965559506809560150, 0.965546496486696100, 0.965533483749965500, 0.965520468599401440, 0.965507451035036320, 0.965494431056902470, 0.965481408665032510, 0.965468383859459100, +0.965455356640214650, 0.965442327007331680, 0.965429294960843070, 0.965416260500781220, 0.965403223627178670, 0.965390184340068180, 0.965377142639482160, 0.965364098525453240, +0.965351051998014190, 0.965338003057197190, 0.965324951703035450, 0.965311897935561270, 0.965298841754807400, 0.965285783160806490, 0.965272722153591060, 0.965259658733193750, +0.965246592899647430, 0.965233524652984290, 0.965220453993237640, 0.965207380920439780, 0.965194305434623480, 0.965181227535821470, 0.965168147224066410, 0.965155064499390920, +0.965141979361827550, 0.965128891811409480, 0.965115801848169140, 0.965102709472139390, 0.965089614683352750, 0.965076517481842200, 0.965063417867640270, 0.965050315840779830, +0.965037211401293280, 0.965024104549214060, 0.965010995284574570, 0.964997883607407460, 0.964984769517745810, 0.964971653015622160, 0.964958534101069350, 0.964945412774120270, +0.964932289034807320, 0.964919162883163930, 0.964906034319222730, 0.964892903343016360, 0.964879769954577690, 0.964866634153939700, 0.964853495941135010, 0.964840355316196390, +0.964827212279157130, 0.964814066830049890, 0.964800918968907410, 0.964787768695762660, 0.964774616010648510, 0.964761460913597820, 0.964748303404643460, 0.964735143483818060, +0.964721981151155040, 0.964708816406687150, 0.964695649250447150, 0.964682479682468120, 0.964669307702782810, 0.964656133311424190, 0.964642956508425130, 0.964629777293818820, +0.964616595667638020, 0.964603411629915810, 0.964590225180685160, 0.964577036319978820, 0.964563845047829880, 0.964550651364271430, 0.964537455269335990, 0.964524256763057200, +0.964511055845467810, 0.964497852516600810, 0.964484646776489040, 0.964471438625165820, 0.964458228062663900, 0.964445015089016370, 0.964431799704256190, 0.964418581908416670, +0.964405361701530680, 0.964392139083631310, 0.964378914054751620, 0.964365686614924610, 0.964352456764183350, 0.964339224502560820, 0.964325989830090440, 0.964312752746805060, +0.964299513252737770, 0.964286271347921660, 0.964273027032389930, 0.964259780306175650, 0.964246531169311920, 0.964233279621831580, 0.964220025663768300, 0.964206769295155030, +0.964193510516024750, 0.964180249326410670, 0.964166985726346070, 0.964153719715863940, 0.964140451294997480, 0.964127180463779650, 0.964113907222244220, 0.964100631570423920, +0.964087353508352060, 0.964074073036061850, 0.964060790153586480, 0.964047504860959030, 0.964034217158212690, 0.964020927045381000, 0.964007634522496940, 0.963994339589593910, +0.963981042246704890, 0.963967742493863410, 0.963954440331102450, 0.963941135758455530, 0.963927828775955400, 0.963914519383636040, 0.963901207581530310, 0.963887893369671510, +0.963874576748093070, 0.963861257716828180, 0.963847936275910140, 0.963834612425372050, 0.963821286165247650, 0.963807957495570020, 0.963794626416372480, 0.963781292927688330, +0.963767957029550980, 0.963754618721993860, 0.963741278005050050, 0.963727934878752860, 0.963714589343136030, 0.963701241398232770, 0.963687891044076480, 0.963674538280700380, +0.963661183108137860, 0.963647825526422470, 0.963634465535587510, 0.963621103135666180, 0.963607738326692330, 0.963594371108699050, 0.963581001481719880, 0.963567629445788220, +0.963554255000937500, 0.963540878147201130, 0.963527498884612310, 0.963514117213205010, 0.963500733133012430, 0.963487346644067990, 0.963473957746405210, 0.963460566440057510, +0.963447172725058420, 0.963433776601441360, 0.963420378069239640, 0.963406977128487220, 0.963393573779217300, 0.963380168021463530, 0.963366759855259320, 0.963353349280638200, +0.963339936297633700, 0.963326520906279350, 0.963313103106608450, 0.963299682898655090, 0.963286260282452460, 0.963272835258034200, 0.963259407825433840, 0.963245977984685030, +0.963232545735821180, 0.963219111078875810, 0.963205674013882910, 0.963192234540875770, 0.963178792659888040, 0.963165348370953360, 0.963151901674105250, 0.963138452569377470, +0.963125001056803540, 0.963111547136416780, 0.963098090808251480, 0.963084632072340960, 0.963071170928718860, 0.963057707377418800, 0.963044241418474440, 0.963030773051919530, +0.963017302277787480, 0.963003829096112260, 0.962990353506927630, 0.962976875510267120, 0.962963395106164350, 0.962949912294653100, 0.962936427075767100, 0.962922939449539990, +0.962909449416005310, 0.962895956975197250, 0.962882462127149230, 0.962868964871895110, 0.962855465209468630, 0.962841963139903450, 0.962828458663233410, 0.962814951779492170, +0.962801442488713240, 0.962787930790931060, 0.962774416686179020, 0.962760900174490900, 0.962747381255900650, 0.962733859930441800, 0.962720336198148340, 0.962706810059053900, +0.962693281513192560, 0.962679750560598070, 0.962666217201304190, 0.962652681435344770, 0.962639143262753570, 0.962625602683564670, 0.962612059697811610, 0.962598514305528230, +0.962584966506748850, 0.962571416301507000, 0.962557863689836650, 0.962544308671771540, 0.962530751247345770, 0.962517191416593090, 0.962503629179547350, 0.962490064536242420, +0.962476497486712490, 0.962462928030991320, 0.962449356169112870, 0.962435781901111010, 0.962422205227019710, 0.962408626146872950, 0.962395044660704250, 0.962381460768548250, +0.962367874470438590, 0.962354285766409360, 0.962340694656494300, 0.962327101140727500, 0.962313505219142940, 0.962299906891774580, 0.962286306158656290, 0.962272703019822480, +0.962259097475306910, 0.962245489525143550, 0.962231879169366480, 0.962218266408009780, 0.962204651241107320, 0.962191033668693070, 0.962177413690801450, 0.962163791307466320, +0.962150166518721650, 0.962136539324601640, 0.962122909725140140, 0.962109277720371470, 0.962095643310329600, 0.962082006495048380, 0.962068367274562460, 0.962054725648905480, +0.962041081618111750, 0.962027435182215340, 0.962013786341250340, 0.962000135095250840, 0.961986481444251030, 0.961972825388284770, 0.961959166927386700, 0.961945506061590680, +0.961931842790930910, 0.961918177115441590, 0.961904509035156790, 0.961890838550110590, 0.961877165660337210, 0.961863490365871150, 0.961849812666746300, 0.961836132562996940, +0.961822450054657270, 0.961808765141761500, 0.961795077824343700, 0.961781388102438290, 0.961767695976079250, 0.961754001445301100, 0.961740304510137920, 0.961726605170624030, +0.961712903426793610, 0.961699199278680970, 0.961685492726320310, 0.961671783769745710, 0.961658072408991820, 0.961644358644092810, 0.961630642475082900, 0.961616923901996380, +0.961603202924867560, 0.961589479543730750, 0.961575753758620140, 0.961562025569569930, 0.961548294976614980, 0.961534561979789260, 0.961520826579127070, 0.961507088774662950, +0.961493348566430980, 0.961479605954465690, 0.961465860938801380, 0.961452113519472240, 0.961438363696512920, 0.961424611469957830, 0.961410856839841180, 0.961397099806197360, +0.961383340369060810, 0.961369578528465830, 0.961355814284446720, 0.961342047637038340, 0.961328278586274790, 0.961314507132190580, 0.961300733274820130, 0.961286957014197860, +0.961273178350358080, 0.961259397283335430, 0.961245613813164090, 0.961231827939878940, 0.961218039663514160, 0.961204248984104280, 0.961190455901683840, 0.961176660416287240, +0.961162862527948910, 0.961149062236703600, 0.961135259542585270, 0.961121454445629020, 0.961107646945869140, 0.961093837043340170, 0.961080024738076630, 0.961066210030113060, +0.961052392919483860, 0.961038573406223450, 0.961024751490366920, 0.961010927171948470, 0.960997100451002730, 0.960983271327564230, 0.960969439801667490, 0.960955605873347270, +0.960941769542637990, 0.960927930809573950, 0.960914089674190450, 0.960900246136521700, 0.960886400196602320, 0.960872551854466850, 0.960858701110150150, 0.960844847963686630, +0.960830992415110720, 0.960817134464457600, 0.960803274111761700, 0.960789411357057530, 0.960775546200379860, 0.960761678641763320, 0.960747808681242540, 0.960733936318852290, +0.960720061554626970, 0.960706184388601780, 0.960692304820811030, 0.960678422851289570, 0.960664538480072050, 0.960650651707193210, 0.960636762532687700, 0.960622870956590270, +0.960608976978935440, 0.960595080599758510, 0.960581181819093690, 0.960567280636976050, 0.960553377053440240, 0.960539471068520890, 0.960525562682252860, 0.960511651894670690, +0.960497738705809680, 0.960483823115704350, 0.960469905124389340, 0.960455984731899640, 0.960442061938269980, 0.960428136743535220, 0.960414209147730010, 0.960400279150889100, +0.960386346753047790, 0.960372411954240500, 0.960358474754502200, 0.960344535153867750, 0.960330593152372010, 0.960316648750049740, 0.960302701946935790, 0.960288752743064910, +0.960274801138472410, 0.960260847133192820, 0.960246890727261220, 0.960232931920712350, 0.960218970713581090, 0.960205007105902510, 0.960191041097711030, 0.960177072689042290, +0.960163101879930920, 0.960149128670411690, 0.960135153060519660, 0.960121175050289820, 0.960107194639756910, 0.960093211828956130, 0.960079226617922000, 0.960065239006690160, +0.960051248995295150, 0.960037256583772040, 0.960023261772155690, 0.960009264560481300, 0.959995264948783730, 0.959981262937097730, 0.959967258525458830, 0.959953251713901780, +0.959939242502461540, 0.959925230891173320, 0.959911216880071970, 0.959897200469192580, 0.959883181658570120, 0.959869160448239560, 0.959855136838236200, 0.959841110828595130, +0.959827082419351330, 0.959813051610539650, 0.959799018402195500, 0.959784982794353760, 0.959770944787049500, 0.959756904380317690, 0.959742861574193860, 0.959728816368712880, +0.959714768763909820, 0.959700718759819880, 0.959686666356478150, 0.959672611553919700, 0.959658554352179500, 0.959644494751293210, 0.959630432751295670, 0.959616368352221970, +0.959602301554107420, 0.959588232356987090, 0.959574160760896190, 0.959560086765869900, 0.959546010371943200, 0.959531931579151620, 0.959517850387530240, 0.959503766797114240, +0.959489680807938840, 0.959475592420039210, 0.959461501633450680, 0.959447408448208310, 0.959433312864347190, 0.959419214881903070, 0.959405114500910820, 0.959391011721405840, +0.959376906543423340, 0.959362798966998610, 0.959348688992166850, 0.959334576618963150, 0.959320461847423140, 0.959306344677582130, 0.959292225109475210, 0.959278103143137660, +0.959263978778604920, 0.959249852015912170, 0.959235722855094840, 0.959221591296188000, 0.959207457339227300, 0.959193320984248030, 0.959179182231285510, 0.959165041080375040, +0.959150897531551920, 0.959136751584851450, 0.959122603240309070, 0.959108452497960280, 0.959094299357840410, 0.959080143819984740, 0.959065985884428710, 0.959051825551207830, +0.959037662820357300, 0.959023497691912640, 0.959009330165908950, 0.958995160242382180, 0.958980987921367540, 0.958966813202900450, 0.958952636087016310, 0.958938456573750540, +0.958924274663138680, 0.958910090355216130, 0.958895903650018090, 0.958881714547580530, 0.958867523047938650, 0.958853329151128090, 0.958839132857184140, 0.958824934166142340, +0.958810733078038210, 0.958796529592906950, 0.958782323710784650, 0.958768115431706590, 0.958753904755708210, 0.958739691682825020, 0.958725476213092680, 0.958711258346546690, +0.958697038083222490, 0.958682815423155370, 0.958668590366381520, 0.958654362912936260, 0.958640133062855000, 0.958625900816173490, 0.958611666172927150, 0.958597429133151710, +0.958583189696882610, 0.958568947864155360, 0.958554703635005940, 0.958540457009469880, 0.958526207987582590, 0.958511956569379820, 0.958497702754897100, 0.958483446544170170, +0.958469187937234350, 0.958454926934125710, 0.958440663534879890, 0.958426397739532420, 0.958412129548118940, 0.958397858960675090, 0.958383585977236610, 0.958369310597839140, +0.958355032822518220, 0.958340752651309910, 0.958326470084249650, 0.958312185121373390, 0.958297897762716570, 0.958283608008315020, 0.958269315858204410, 0.958255021312420240, +0.958240724370998830, 0.958226425033975590, 0.958212123301386280, 0.958197819173266740, 0.958183512649652510, 0.958169203730579680, 0.958154892416083650, 0.958140578706200290, +0.958126262600965670, 0.958111944100415340, 0.958097623204585250, 0.958083299913511040, 0.958068974227228590, 0.958054646145773740, 0.958040315669182240, 0.958025982797489740, +0.958011647530732540, 0.957997309868946160, 0.957982969812166460, 0.957968627360429430, 0.957954282513770790, 0.957939935272226540, 0.957925585635832080, 0.957911233604623940, +0.957896879178637750, 0.957882522357909380, 0.957868163142474690, 0.957853801532369540, 0.957839437527629900, 0.957825071128291740, 0.957810702334390580, 0.957796331145962850, +0.957781957563044410, 0.957767581585671100, 0.957753203213878690, 0.957738822447703360, 0.957724439287180980, 0.957710053732347300, 0.957695665783238730, 0.957681275439890900, +0.957666882702339910, 0.957652487570621710, 0.957638090044772290, 0.957623690124827730, 0.957609287810823880, 0.957594883102796610, 0.957580476000782330, 0.957566066504816790, +0.957551654614936190, 0.957537240331176490, 0.957522823653573550, 0.957508404582163690, 0.957493983116982750, 0.957479559258066600, 0.957465133005451770, 0.957450704359174230, +0.957436273319269840, 0.957421839885774780, 0.957407404058725040, 0.957392965838156920, 0.957378525224106050, 0.957364082216609180, 0.957349636815702070, 0.957335189021420900, +0.957320738833801750, 0.957306286252880720, 0.957291831278693990, 0.957277373911277650, 0.957262914150667670, 0.957248451996900670, 0.957233987450012540, 0.957219520510039450, +0.957205051177017490, 0.957190579450982960, 0.957176105331971950, 0.957161628820020650, 0.957147149915165030, 0.957132668617441840, 0.957118184926887050, 0.957103698843536630, +0.957089210367427110, 0.957074719498594460, 0.957060226237075100, 0.957045730582904870, 0.957031232536120550, 0.957016732096758190, 0.957002229264853900, 0.956987724040444190, +0.956973216423565030, 0.956958706414252960, 0.956944194012544050, 0.956929679218474380, 0.956915162032080820, 0.956900642453399340, 0.956886120482466240, 0.956871596119317820, +0.956857069363990400, 0.956842540216520380, 0.956828008676943730, 0.956813474745297320, 0.956798938421617230, 0.956784399705939760, 0.956769858598301330, 0.956755315098738120, +0.956740769207286790, 0.956726220923983520, 0.956711670248864390, 0.956697117181966260, 0.956682561723325440, 0.956668003872978230, 0.956653443630961050, 0.956638880997310090, +0.956624315972062100, 0.956609748555253270, 0.956595178746919790, 0.956580606547098640, 0.956566031955825900, 0.956551454973138200, 0.956536875599071750, 0.956522293833663160, +0.956507709676948870, 0.956493123128965060, 0.956478534189748600, 0.956463942859335890, 0.956449349137763250, 0.956434753025067310, 0.956420154521284480, 0.956405553626451300, +0.956390950340604170, 0.956376344663779410, 0.956361736596014090, 0.956347126137344410, 0.956332513287806880, 0.956317898047438050, 0.956303280416274550, 0.956288660394352790, +0.956274037981709400, 0.956259413178380700, 0.956244785984403660, 0.956230156399814680, 0.956215524424650300, 0.956200890058947150, 0.956186253302741760, 0.956171614156070770, +0.956156972618970370, 0.956142328691477860, 0.956127682373629550, 0.956113033665462080, 0.956098382567011960, 0.956083729078315850, 0.956069073199410480, 0.956054414930332390, +0.956039754271118090, 0.956025091221804570, 0.956010425782428340, 0.955995757953026050, 0.955981087733634330, 0.955966415124289930, 0.955951740125029590, 0.955937062735889520, +0.955922382956907010, 0.955907700788118710, 0.955893016229561020, 0.955878329281270810, 0.955863639943284830, 0.955848948215639700, 0.955834254098372190, 0.955819557591518820, +0.955804858695116890, 0.955790157409202700, 0.955775453733813120, 0.955760747668984890, 0.955746039214754870, 0.955731328371159710, 0.955716615138236250, 0.955701899516021030, +0.955687181504551230, 0.955672461103863500, 0.955657738313994700, 0.955643013134981460, 0.955628285566860750, 0.955613555609669320, 0.955598823263443700, 0.955584088528221300, +0.955569351404038650, 0.955554611890932710, 0.955539869988940140, 0.955525125698098000, 0.955510379018442930, 0.955495629950012030, 0.955480878492841690, 0.955466124646969450, +0.955451368412431950, 0.955436609789265920, 0.955421848777508460, 0.955407085377196320, 0.955392319588366570, 0.955377551411055960, 0.955362780845301130, 0.955348007891139720, +0.955333232548608250, 0.955318454817743690, 0.955303674698583020, 0.955288892191163090, 0.955274107295520980, 0.955259320011693450, 0.955244530339717680, 0.955229738279630760, +0.955214943831469430, 0.955200146995270670, 0.955185347771071670, 0.955170546158909170, 0.955155742158820380, 0.955140935770842030, 0.955126126995011540, 0.955111315831365660, +0.955096502279941580, 0.955081686340776170, 0.955066868013906610, 0.955052047299369880, 0.955037224197202830, 0.955022398707442880, 0.955007570830126990, 0.954992740565292150, +0.954977907912975430, 0.954963072873213910, 0.954948235446044790, 0.954933395631505140, 0.954918553429631610, 0.954903708840462050, 0.954888861864033100, 0.954874012500382060, +0.954859160749546020, 0.954844306611562050, 0.954829450086467360, 0.954814591174299010, 0.954799729875093870, 0.954784866188889800, 0.954770000115723440, 0.954755131655632190, +0.954740260808653040, 0.954725387574823170, 0.954710511954179890, 0.954695633946760160, 0.954680753552601510, 0.954665870771741030, 0.954650985604215800, 0.954636098050063110, +0.954621208109320270, 0.954606315782024370, 0.954591421068212600, 0.954576523967922140, 0.954561624481190530, 0.954546722608054950, 0.954531818348552500, 0.954516911702720460, +0.954502002670596260, 0.954487091252216980, 0.954472177447620030, 0.954457261256842270, 0.954442342679921670, 0.954427421716895210, 0.954412498367800290, 0.954397572632674000, +0.954382644511553860, 0.954367714004477060, 0.954352781111480700, 0.954337845832602730, 0.954322908167880010, 0.954307968117350190, 0.954293025681050340, 0.954278080859017890, +0.954263133651290340, 0.954248184057904900, 0.954233232078898760, 0.954218277714309780, 0.954203320964175150, 0.954188361828532170, 0.954173400307418370, 0.954158436400870950, +0.954143470108927530, 0.954128501431625090, 0.954113530369001710, 0.954098556921094580, 0.954083581087940890, 0.954068602869578400, 0.954053622266044290, 0.954038639277376200, +0.954023653903611550, 0.954008666144787410, 0.953993676000941870, 0.953978683472112120, 0.953963688558335800, 0.953948691259650090, 0.953933691576092760, 0.953918689507701200, +0.953903685054512840, 0.953888678216565090, 0.953873668993895920, 0.953858657386542520, 0.953843643394542420, 0.953828627017933360, 0.953813608256752650, 0.953798587111037930, +0.953783563580826390, 0.953768537666156320, 0.953753509367064930, 0.953738478683589630, 0.953723445615768270, 0.953708410163638280, 0.953693372327237170, 0.953678332106602690, +0.953663289501772150, 0.953648244512783630, 0.953633197139674430, 0.953618147382482300, 0.953603095241244760, 0.953588040715999560, 0.953572983806784240, 0.953557924513636410, +0.953542862836593510, 0.953527798775693710, 0.953512732330974440, 0.953497663502473340, 0.953482592290228140, 0.953467518694276370, 0.953452442714655790, 0.953437364351403920, +0.953422283604558940, 0.953407200474158170, 0.953392114960239350, 0.953377027062840330, 0.953361936781998760, 0.953346844117752280, 0.953331749070138730, 0.953316651639195540, +0.953301551824960900, 0.953286449627472440, 0.953271345046767920, 0.953256238082884950, 0.953241128735861420, 0.953226017005735060, 0.953210902892543400, 0.953195786396324850, +0.953180667517116720, 0.953165546254956860, 0.953150422609883250, 0.953135296581933520, 0.953120168171145640, 0.953105037377557250, 0.953089904201206100, 0.953074768642130370, +0.953059630700367700, 0.953044490375955950, 0.953029347668933100, 0.953014202579336780, 0.952999055107204950, 0.952983905252575480, 0.952968753015486000, 0.952953598395974930, +0.952938441394079790, 0.952923282009838670, 0.952908120243289190, 0.952892956094469560, 0.952877789563417510, 0.952862620650170580, 0.952847449354767510, 0.952832275677245820, +0.952817099617643380, 0.952801921175998160, 0.952786740352348230, 0.952771557146731340, 0.952756371559185690, 0.952741183589748800, 0.952725993238459190, 0.952710800505354620, +0.952695605390473040, 0.952680407893852440, 0.952665208015530780, 0.952650005755546150, 0.952634801113936170, 0.952619594090739600, 0.952604384685993950, 0.952589172899737320, +0.952573958732007790, 0.952558742182843420, 0.952543523252282090, 0.952528301940361980, 0.952513078247120840, 0.952497852172597300, 0.952482623716829120, 0.952467392879854380, +0.952452159661711260, 0.952436924062437630, 0.952421686082071670, 0.952406445720651580, 0.952391202978215000, 0.952375957854800780, 0.952360710350446670, 0.952345460465190750, +0.952330208199071100, 0.952314953552126030, 0.952299696524393610, 0.952284437115911600, 0.952269175326718730, 0.952253911156852980, 0.952238644606352550, 0.952223375675255390, +0.952208104363599820, 0.952192830671423910, 0.952177554598766070, 0.952162276145663950, 0.952146995312156520, 0.952131712098281510, 0.952116426504077240, 0.952101138529581890, +0.952085848174833770, 0.952070555439870960, 0.952055260324731760, 0.952039962829454240, 0.952024662954076950, 0.952009360698638060, 0.951994056063175780, 0.951978749047728390, +0.951963439652334100, 0.951948127877031200, 0.951932813721857670, 0.951917497186852370, 0.951902178272053370, 0.951886856977498970, 0.951871533303227380, 0.951856207249277000, +0.951840878815686020, 0.951825548002492860, 0.951810214809735600, 0.951794879237453100, 0.951779541285683320, 0.951764200954464790, 0.951748858243835700, 0.951733513153834480, +0.951718165684499410, 0.951702815835868800, 0.951687463607981290, 0.951672109000875180, 0.951656752014588770, 0.951641392649160480, 0.951626030904628720, 0.951610666781031900, +0.951595300278408330, 0.951579931396796310, 0.951564560136234800, 0.951549186496761790, 0.951533810478415790, 0.951518432081235320, 0.951503051305258810, 0.951487668150524660, +0.951472282617071290, 0.951456894704937000, 0.951441504414160640, 0.951426111744780640, 0.951410716696835300, 0.951395319270363140, 0.951379919465402680, 0.951364517281992560, +0.951349112720170750, 0.951333705779976450, 0.951318296461447830, 0.951302884764623550, 0.951287470689542110, 0.951272054236241840, 0.951256635404761570, 0.951241214195139630, +0.951225790607414410, 0.951210364641625010, 0.951194936297809710, 0.951179505576007060, 0.951164072476255560, 0.951148636998593980, 0.951133199143060830, 0.951117758909694520, +0.951102316298533700, 0.951086871309617330, 0.951071423942983720, 0.951055974198671610, 0.951040522076719520, 0.951025067577166210, 0.951009610700050190, 0.950994151445409770, +0.950978689813284370, 0.950963225803712180, 0.950947759416731930, 0.950932290652382380, 0.950916819510701950, 0.950901345991729600, 0.950885870095503850, 0.950870391822063120, +0.950854911171446720, 0.950839428143693040, 0.950823942738840740, 0.950808454956928560, 0.950792964797995350, 0.950777472262079650, 0.950761977349220080, 0.950746480059455720, +0.950730980392825220, 0.950715478349367320, 0.950699973929120650, 0.950684467132124070, 0.950668957958416330, 0.950653446408036170, 0.950637932481022240, 0.950622416177413610, +0.950606897497249030, 0.950591376440567130, 0.950575853007406880, 0.950560327197806920, 0.950544799011806110, 0.950529268449443410, 0.950513735510757130, 0.950498200195786900, +0.950482662504571140, 0.950467122437148700, 0.950451579993558560, 0.950436035173839340, 0.950420487978030140, 0.950404938406169350, 0.950389386458296510, 0.950373832134450260, +0.950358275434669330, 0.950342716358992810, 0.950327154907459450, 0.950311591080108210, 0.950296024876977950, 0.950280456298107420, 0.950264885343536040, 0.950249312013302430, +0.950233736307445450, 0.950218158226004190, 0.950202577769017620, 0.950186994936524480, 0.950171409728563950, 0.950155822145174580, 0.950140232186395870, 0.950124639852266690, +0.950109045142825900, 0.950093448058112470, 0.950077848598165350, 0.950062246763023640, 0.950046642552726080, 0.950031035967312200, 0.950015427006820730, 0.949999815671290660, +0.949984201960761050, 0.949968585875270890, 0.949952967414859350, 0.949937346579565410, 0.949921723369427710, 0.949906097784486090, 0.949890469824779200, 0.949874839490346120, +0.949859206781225930, 0.949843571697457700, 0.949827934239080630, 0.949812294406133350, 0.949796652198655610, 0.949781007616686380, 0.949765360660264510, 0.949749711329429200, +0.949734059624219750, 0.949718405544675020, 0.949702749090834410, 0.949687090262736570, 0.949671429060421230, 0.949655765483927380, 0.949640099533294200, 0.949624431208560660, +0.949608760509766060, 0.949593087436949590, 0.949577411990150330, 0.949561734169407370, 0.949546053974760220, 0.949530371406248070, 0.949514686463909910, 0.949498999147785020, +0.949483309457912710, 0.949467617394332050, 0.949451922957082140, 0.949436226146202600, 0.949420526961732620, 0.949404825403711290, 0.949389121472177800, 0.949373415167171660, +0.949357706488731860, 0.949341995436897790, 0.949326282011708540, 0.949310566213203870, 0.949294848041422720, 0.949279127496404420, 0.949263404578188360, 0.949247679286813750, +0.949231951622319990, 0.949216221584746390, 0.949200489174131910, 0.949184754390516420, 0.949169017233939090, 0.949153277704439250, 0.949137535802056180, 0.949121791526829290, +0.949106044878797910, 0.949090295858001200, 0.949074544464478920, 0.949058790698270370, 0.949043034559414860, 0.949027276047951670, 0.949011515163920350, 0.948995751907360190, +0.948979986278310710, 0.948964218276810990, 0.948948447902900890, 0.948932675156619830, 0.948916900038006990, 0.948901122547101910, 0.948885342683944090, 0.948869560448572850, +0.948853775841027370, 0.948837988861347850, 0.948822199509573250, 0.948806407785743210, 0.948790613689897140, 0.948774817222074570, 0.948759018382314910, 0.948743217170657790, +0.948727413587142300, 0.948711607631808510, 0.948695799304695720, 0.948679988605843460, 0.948664175535291250, 0.948648360093078510, 0.948632542279244980, 0.948616722093829970, +0.948600899536872990, 0.948585074608414010, 0.948569247308492350, 0.948553417637147510, 0.948537585594419250, 0.948521751180346870, 0.948505914394970230, 0.948490075238328510, +0.948474233710461800, 0.948458389811409620, 0.948442543541211380, 0.948426694899906830, 0.948410843887535490, 0.948394990504137110, 0.948379134749751220, 0.948363276624417220, +0.948347416128175300, 0.948331553261064770, 0.948315688023125490, 0.948299820414396870, 0.948283950434918750, 0.948268078084730790, 0.948252203363872390, 0.948236326272383630, +0.948220446810304150, 0.948204564977673580, 0.948188680774531560, 0.948172794200917820, 0.948156905256872020, 0.948141013942434110, 0.948125120257643280, 0.948109224202539960, +0.948093325777163540, 0.948077424981553900, 0.948061521815750650, 0.948045616279793560, 0.948029708373722470, 0.948013798097577130, 0.947997885451396960, 0.947981970435222370, +0.947966053049092870, 0.947950133293048340, 0.947934211167128280, 0.947918286671372790, 0.947902359805821600, 0.947886430570514250, 0.947870498965491030, 0.947854564990791570, +0.947838628646455740, 0.947822689932523390, 0.947806748849034260, 0.947790805396028220, 0.947774859573545240, 0.947758911381624710, 0.947742960820307290, 0.947727007889632490, +0.947711052589640060, 0.947695094920370070, 0.947679134881862280, 0.947663172474156770, 0.947647207697293270, 0.947631240551311430, 0.947615271036251870, 0.947599299152154020, +0.947583324899057940, 0.947567348277003620, 0.947551369286030900, 0.947535387926179750, 0.947519404197489810, 0.947503418100001720, 0.947487429633754990, 0.947471438798789810, +0.947455445595145940, 0.947439450022863450, 0.947423452081982420, 0.947407451772542710, 0.947391449094584060, 0.947375444048147110, 0.947359436633271490, 0.947343426849997280, +0.947327414698364570, 0.947311400178413310, 0.947295383290183590, 0.947279364033715040, 0.947263342409048410, 0.947247318416223450, 0.947231292055280120, 0.947215263326258610, +0.947199232229198880, 0.947183198764141140, 0.947167162931125460, 0.947151124730191470, 0.947135084161380040, 0.947119041224730780, 0.947102995920284020, 0.947086948248079820, +0.947070898208158150, 0.947054845800559210, 0.947038791025323290, 0.947022733882490030, 0.947006674372100180, 0.946990612494193700, 0.946974548248810670, 0.946958481635991280, +0.946942412655775610, 0.946926341308203970, 0.946910267593316200, 0.946894191511153060, 0.946878113061754400, 0.946862032245160520, 0.946845949061411510, 0.946829863510547650, +0.946813775592609150, 0.946797685307636190, 0.946781592655668750, 0.946765497636747550, 0.946749400250912700, 0.946733300498204260, 0.946717198378662640, 0.946701093892327930, +0.946684987039240530, 0.946668877819440760, 0.946652766232968460, 0.946636652279864490, 0.946620535960168820, 0.946604417273921970, 0.946588296221163920, 0.946572172801935290, +0.946556047016276050, 0.946539918864226500, 0.946523788345827510, 0.946507655461118920, 0.946491520210141270, 0.946475382592934840, 0.946459242609539950, 0.946443100259996890, +0.946426955544346080, 0.946410808462627710, 0.946394659014882510, 0.946378507201150690, 0.946362353021472540, 0.946346196475888580, 0.946330037564439120, 0.946313876287164570, +0.946297712644105000, 0.946281546635301400, 0.946265378260794040, 0.946249207520623250, 0.946233034414829310, 0.946216858943452870, 0.946200681106534320, 0.946184500904113990, +0.946168318336232160, 0.946152133402929810, 0.946135946104247120, 0.946119756440224500, 0.946103564410902600, 0.946087370016321820, 0.946071173256522460, 0.946054974131545270, +0.946038772641430330, 0.946022568786218820, 0.946006362565950830, 0.945990153980666880, 0.945973943030407600, 0.945957729715213520, 0.945941514035125050, 0.945925295990182490, +0.945909075580427030, 0.945892852805898850, 0.945876627666638490, 0.945860400162686690, 0.945844170294083740, 0.945827938060870510, 0.945811703463087290, 0.945795466500774620, +0.945779227173973560, 0.945762985482724420, 0.945746741427067830, 0.945730495007044310, 0.945714246222694620, 0.945697995074059380, 0.945681741561179010, 0.945665485684094140, +0.945649227442845740, 0.945632966837474330, 0.945616703868020550, 0.945600438534524910, 0.945584170837028170, 0.945567900775571070, 0.945551628350193910, 0.945535353560937990, +0.945519076407843610, 0.945502796890951620, 0.945486515010302560, 0.945470230765937280, 0.945453944157896410, 0.945437655186220690, 0.945421363850950550, 0.945405070152127270, +0.945388774089791270, 0.945372475663983410, 0.945356174874744330, 0.945339871722114760, 0.945323566206135560, 0.945307258326847140, 0.945290948084290930, 0.945274635478507320, +0.945258320509537060, 0.945242003177421020, 0.945225683482200040, 0.945209361423914760, 0.945193037002606150, 0.945176710218314620, 0.945160381071081580, 0.945144049560947660, +0.945127715687953620, 0.945111379452140190, 0.945095040853548450, 0.945078699892219040, 0.945062356568192820, 0.945046010881510520, 0.945029662832213460, 0.945013312420342140, +0.944996959645937660, 0.944980604509040760, 0.944964247009692280, 0.944947887147933210, 0.944931524923804170, 0.944915160337346570, 0.944898793388601170, 0.944882424077608700, +0.944866052404410130, 0.944849678369046540, 0.944833301971558680, 0.944816923211987510, 0.944800542090373900, 0.944784158606759130, 0.944767772761183950, 0.944751384553689340, +0.944734993984316260, 0.944718601053105790, 0.944702205760098780, 0.944685808105336200, 0.944669408088858800, 0.944653005710708200, 0.944636600970925170, 0.944620193869550540, +0.944603784406625400, 0.944587372582190940, 0.944570958396287910, 0.944554541848957260, 0.944538122940240530, 0.944521701670178460, 0.944505278038812120, 0.944488852046182710, +0.944472423692331090, 0.944455992977298430, 0.944439559901125710, 0.944423124463853900, 0.944406686665524520, 0.944390246506178420, 0.944373803985856800, 0.944357359104600500, +0.944340911862450950, 0.944324462259449100, 0.944308010295635710, 0.944291555971052630, 0.944275099285740720, 0.944258640239741040, 0.944242178833094690, 0.944225715065842960, +0.944209248938026930, 0.944192780449687800, 0.944176309600866400, 0.944159836391604500, 0.944143360821942950, 0.944126882891923150, 0.944110402601586070, 0.944093919950972920, +0.944077434940125080, 0.944060947569083650, 0.944044457837889480, 0.944027965746584430, 0.944011471295209570, 0.943994974483805980, 0.943978475312414970, 0.943961973781077820, +0.943945469889835630, 0.943928963638729580, 0.943912455027801300, 0.943895944057091980, 0.943879430726642820, 0.943862915036495000, 0.943846396986689930, 0.943829876577268800, +0.943813353808273030, 0.943796828679743680, 0.943780301191722400, 0.943763771344250490, 0.943747239137369020, 0.943730704571119520, 0.943714167645543280, 0.943697628360681610, +0.943681086716575580, 0.943664542713267160, 0.943647996350797320, 0.943631447629207480, 0.943614896548539140, 0.943598343108833390, 0.943581787310131870, 0.943565229152475870, +0.943548668635906580, 0.943532105760465870, 0.943515540526194800, 0.943498972933135010, 0.943482402981327680, 0.943465830670814460, 0.943449256001636540, 0.943432678973835540, +0.943416099587452540, 0.943399517842529620, 0.943382933739107870, 0.943366347277228790, 0.943349758456933810, 0.943333167278264550, 0.943316573741262210, 0.943299977845968310, +0.943283379592424590, 0.943266778980672570, 0.943250176010753560, 0.943233570682709080, 0.943216962996580640, 0.943200352952409890, 0.943183740550238130, 0.943167125790106860, +0.943150508672057960, 0.943133889196132840, 0.943117267362373000, 0.943100643170819990, 0.943084016621515420, 0.943067387714500720, 0.943050756449817620, 0.943034122827507320, +0.943017486847612000, 0.943000848510172850, 0.942984207815231730, 0.942967564762830060, 0.942950919353009450, 0.942934271585811560, 0.942917621461277670, 0.942900968979450080, +0.942884314140369990, 0.942867656944079150, 0.942850997390619170, 0.942834335480031700, 0.942817671212358490, 0.942801004587640930, 0.942784335605920680, 0.942767664267239900, +0.942750990571639910, 0.942734314519162450, 0.942717636109849160, 0.942700955343741760, 0.942684272220882020, 0.942667586741311350, 0.942650898905072030, 0.942634208712205380, +0.942617516162753240, 0.942600821256757260, 0.942584123994259280, 0.942567424375301060, 0.942550722399924100, 0.942534018068170170, 0.942517311380081440, 0.942500602335699540, +0.942483890935066020, 0.942467177178222810, 0.942450461065211580, 0.942433742596074260, 0.942417021770852630, 0.942400298589588070, 0.942383573052323120, 0.942366845159099300, +0.942350114909958240, 0.942333382304941900, 0.942316647344092150, 0.942299910027450840, 0.942283170355059370, 0.942266428326960280, 0.942249683943195190, 0.942232937203805850, +0.942216188108834120, 0.942199436658321950, 0.942182682852311220, 0.942165926690843760, 0.942149168173961100, 0.942132407301706000, 0.942115644074119740, 0.942098878491244410, +0.942082110553121850, 0.942065340259794050, 0.942048567611302960, 0.942031792607690430, 0.942015015248998000, 0.941998235535268400, 0.941981453466543270, 0.941964669042864470, +0.941947882264273950, 0.941931093130813800, 0.941914301642525880, 0.941897507799451920, 0.941880711601634450, 0.941863913049115320, 0.941847112141936280, 0.941830308880139520, +0.941813503263766890, 0.941796695292860590, 0.941779884967462570, 0.941763072287614580, 0.941746257253359140, 0.941729439864738000, 0.941712620121793350, 0.941695798024567150, +0.941678973573101370, 0.941662146767438200, 0.941645317607619380, 0.941628486093687540, 0.941611652225684550, 0.941594816003652360, 0.941577977427633160, 0.941561136497669040, +0.941544293213802060, 0.941527447576074320, 0.941510599584527650, 0.941493749239204810, 0.941476896540147660, 0.941460041487398150, 0.941443184080998700, 0.941426324320991160, +0.941409462207417840, 0.941392597740320800, 0.941375730919742030, 0.941358861745724250, 0.941341990218309330, 0.941325116337539350, 0.941308240103456710, 0.941291361516103380, +0.941274480575521650, 0.941257597281753400, 0.941240711634841460, 0.941223823634827820, 0.941206933281754530, 0.941190040575664020, 0.941173145516598250, 0.941156248104599750, +0.941139348339710580, 0.941122446221972720, 0.941105541751429130, 0.941088634928121560, 0.941071725752092520, 0.941054814223384110, 0.941037900342038600, 0.941020984108098420, +0.941004065521605760, 0.940987144582602690, 0.940970221291131950, 0.940953295647235730, 0.940936367650956340, 0.940919437302335960, 0.940902504601416890, 0.940885569548241650, +0.940868632142852210, 0.940851692385291430, 0.940834750275601480, 0.940817805813824680, 0.940800859000003320, 0.940783909834179810, 0.940766958316396450, 0.940750004446695760, +0.940733048225119830, 0.940716089651711500, 0.940699128726512960, 0.940682165449566620, 0.940665199820914900, 0.940648231840600090, 0.940631261508664720, 0.940614288825150970, +0.940597313790101700, 0.940580336403559200, 0.940563356665565900, 0.940546374576164080, 0.940529390135396490, 0.940512403343305330, 0.940495414199933100, 0.940478422705322110, +0.940461428859515450, 0.940444432662555060, 0.940427434114483710, 0.940410433215343680, 0.940393429965177610, 0.940376424364028020, 0.940359416411937320, 0.940342406108947700, +0.940325393455102470, 0.940308378450443790, 0.940291361095014100, 0.940274341388856020, 0.940257319332012060, 0.940240294924524770, 0.940223268166436530, 0.940206239057790330, +0.940189207598628670, 0.940172173788993870, 0.940155137628928660, 0.940138099118475570, 0.940121058257677330, 0.940104015046576370, 0.940086969485215080, 0.940069921573636780, +0.940052871311883530, 0.940035818699998190, 0.940018763738023290, 0.940001706426001450, 0.939984646763975310, 0.939967584751987610, 0.939950520390080650, 0.939933453678297610, +0.939916384616681030, 0.939899313205273530, 0.939882239444117640, 0.939865163333256200, 0.939848084872731860, 0.939831004062587020, 0.939813920902864860, 0.939796835393608030, +0.939779747534859040, 0.939762657326660760, 0.939745564769055690, 0.939728469862086800, 0.939711372605796740, 0.939694273000228010, 0.939677171045423810, 0.939660066741426660, +0.939642960088279410, 0.939625851086024810, 0.939608739734705490, 0.939591626034364300, 0.939574509985043770, 0.939557391586787300, 0.939540270839637310, 0.939523147743636770, +0.939506022298828180, 0.939488894505254630, 0.939471764362958870, 0.939454631871983640, 0.939437497032371560, 0.939420359844166050, 0.939403220307409530, 0.939386078422145050, +0.939368934188415380, 0.939351787606263370, 0.939334638675731970, 0.939317487396863830, 0.939300333769701790, 0.939283177794289160, 0.939266019470668570, 0.939248858798882870, +0.939231695778975140, 0.939214530410988120, 0.939197362694964790, 0.939180192630947760, 0.939163020218980570, 0.939145845459105840, 0.939128668351366440, 0.939111488895805310, +0.939094307092465550, 0.939077122941390010, 0.939059936442621650, 0.939042747596203210, 0.939025556402178110, 0.939008362860589200, 0.938991166971479330, 0.938973968734891580, +0.938956768150868930, 0.938939565219454210, 0.938922359940690400, 0.938905152314621020, 0.938887942341288690, 0.938870730020736510, 0.938853515353007540, 0.938836298338144750, +0.938819078976191210, 0.938801857267190010, 0.938784633211183880, 0.938767406808216460, 0.938750178058330500, 0.938732946961569060, 0.938715713517975340, 0.938698477727592300, +0.938681239590463010, 0.938663999106630680, 0.938646756276138030, 0.938629511099028810, 0.938612263575345770, 0.938595013705132100, 0.938577761488430970, 0.938560506925285360, +0.938543250015738460, 0.938525990759833120, 0.938508729157613190, 0.938491465209121410, 0.938474198914400980, 0.938456930273494970, 0.938439659286446680, 0.938422385953299300, +0.938405110274095900, 0.938387832248879450, 0.938370551877693690, 0.938353269160581480, 0.938335984097586230, 0.938318696688751010, 0.938301406934119010, 0.938284114833733420, +0.938266820387637650, 0.938249523595874550, 0.938232224458487860, 0.938214922975520560, 0.938197619147016050, 0.938180312973017520, 0.938163004453568150, 0.938145693588711250, +0.938128380378489890, 0.938111064822947820, 0.938093746922128100, 0.938076426676074050, 0.938059104084828840, 0.938041779148436010, 0.938024451866938610, 0.938007122240380190, +0.937989790268803580, 0.937972455952252760, 0.937955119290770910, 0.937937780284401220, 0.937920438933187000, 0.937903095237171750, 0.937885749196398780, 0.937868400810911160, +0.937851050080752760, 0.937833697005966750, 0.937816341586596550, 0.937798983822685450, 0.937781623714276980, 0.937764261261414320, 0.937746896464141110, 0.937729529322500310, +0.937712159836536000, 0.937694788006291250, 0.937677413831809580, 0.937660037313134410, 0.937642658450309030, 0.937625277243377080, 0.937607893692381960, 0.937590507797366750, +0.937573119558375630, 0.937555728975451700, 0.937538336048638450, 0.937520940777979320, 0.937503543163517810, 0.937486143205297550, 0.937468740903361520, 0.937451336257754010, +0.937433929268518100, 0.937416519935697410, 0.937399108259335480, 0.937381694239475700, 0.937364277876161720, 0.937346859169436940, 0.937329438119344880, 0.937312014725929400, +0.937294588989233900, 0.937277160909302020, 0.937259730486177170, 0.937242297719902970, 0.937224862610523070, 0.937207425158080980, 0.937189985362620100, 0.937172543224184530, +0.937155098742817550, 0.937137651918562800, 0.937120202751464020, 0.937102751241564720, 0.937085297388908440, 0.937067841193538700, 0.937050382655499670, 0.937032921774834660, +0.937015458551587300, 0.936997992985801330, 0.936980525077520390, 0.936963054826788210, 0.936945582233648320, 0.936928107298144130, 0.936910630020320050, 0.936893150400219250, +0.936875668437885720, 0.936858184133362970, 0.936840697486694850, 0.936823208497924890, 0.936805717167096600, 0.936788223494254390, 0.936770727479441570, 0.936753229122701870, +0.936735728424079150, 0.936718225383617150, 0.936700720001359620, 0.936683212277350190, 0.936665702211632480, 0.936648189804250800, 0.936630675055248660, 0.936613157964669820, +0.936595638532558120, 0.936578116758957300, 0.936560592643911230, 0.936543066187463640, 0.936525537389658050, 0.936508006250538980, 0.936490472770149850, 0.936472936948534510, +0.936455398785736910, 0.936437858281800710, 0.936420315436769960, 0.936402770250688080, 0.936385222723599590, 0.936367672855548010, 0.936350120646577300, 0.936332566096731210, +0.936315009206053820, 0.936297449974588860, 0.936279888402380190, 0.936262324489471660, 0.936244758235907470, 0.936227189641731460, 0.936209618706987490, 0.936192045431719410, +0.936174469815971300, 0.936156891859786900, 0.936139311563210400, 0.936121728926285200, 0.936104143949056060, 0.936086556631566590, 0.936068966973860660, 0.936051374975982340, +0.936033780637975600, 0.936016183959884400, 0.935998584941752370, 0.935980983583624250, 0.935963379885543680, 0.935945773847554620, 0.935928165469701150, 0.935910554752027220, +0.935892941694576930, 0.935875326297394340, 0.935857708560523080, 0.935840088484007900, 0.935822466067892430, 0.935804841312220860, 0.935787214217037140, 0.935769584782385370, +0.935751953008309710, 0.935734318894853810, 0.935716682442062410, 0.935699043649979360, 0.935681402518648620, 0.935663759048114390, 0.935646113238420840, 0.935628465089611950, +0.935610814601731900, 0.935593161774824540, 0.935575506608934520, 0.935557849104105780, 0.935540189260382400, 0.935522527077808590, 0.935504862556428400, 0.935487195696286130, +0.935469526497425760, 0.935451854959891360, 0.935434181083727560, 0.935416504868978430, 0.935398826315687940, 0.935381145423900380, 0.935363462193659960, 0.935345776625010950, +0.935328088717997110, 0.935310398472663400, 0.935292705889053670, 0.935275010967212220, 0.935257313707183240, 0.935239614109010910, 0.935221912172739640, 0.935204207898413520, +0.935186501286076610, 0.935168792335773660, 0.935151081047548850, 0.935133367421446260, 0.935115651457510300, 0.935097933155785150, 0.935080212516315230, 0.935062489539144840, +0.935044764224317810, 0.935027036571879240, 0.935009306581872980, 0.934991574254343540, 0.934973839589335110, 0.934956102586892210, 0.934938363247058920, 0.934920621569879430, +0.934902877555398800, 0.934885131203660900, 0.934867382514710130, 0.934849631488590900, 0.934831878125347630, 0.934814122425024710, 0.934796364387666450, 0.934778604013317030, +0.934760841302021310, 0.934743076253823470, 0.934725308868768030, 0.934707539146899300, 0.934689767088261680, 0.934671992692899690, 0.934654215960857400, 0.934636436892179790, +0.934618655486911250, 0.934600871745095980, 0.934583085666778500, 0.934565297252003320, 0.934547506500814970, 0.934529713413257750, 0.934511917989376050, 0.934494120229214740, +0.934476320132818230, 0.934458517700230920, 0.934440712931497220, 0.934422905826661880, 0.934405096385769180, 0.934387284608863780, 0.934369470495989840, 0.934351654047192560, +0.934333835262516010, 0.934316014142005050, 0.934298190685703970, 0.934280364893657400, 0.934262536765909980, 0.934244706302505890, 0.934226873503490320, 0.934209038368907560, +0.934191200898802250, 0.934173361093218910, 0.934155518952202170, 0.934137674475796650, 0.934119827664046890, 0.934101978516997280, 0.934084127034693010, 0.934066273217178500, +0.934048417064498260, 0.934030558576696920, 0.934012697753819230, 0.933994834595909820, 0.933976969103013310, 0.933959101275174120, 0.933941231112437430, 0.933923358614847650, +0.933905483782449530, 0.933887606615287690, 0.933869727113406770, 0.933851845276851610, 0.933833961105666410, 0.933816074599896680, 0.933798185759586840, 0.933780294584781510, +0.933762401075525330, 0.933744505231863250, 0.933726607053839920, 0.933708706541500070, 0.933690803694888110, 0.933672898514049440, 0.933654990999028490, 0.933637081149870100, +0.933619168966619010, 0.933601254449320070, 0.933583337598017930, 0.933565418412757090, 0.933547496893583070, 0.933529573040540290, 0.933511646853673600, 0.933493718333027860, +0.933475787478647680, 0.933457854290578150, 0.933439918768863900, 0.933421980913549550, 0.933404040724680640, 0.933386098202301560, 0.933368153346457290, 0.933350206157192550, +0.933332256634552330, 0.933314304778581460, 0.933296350589324810, 0.933278394066827110, 0.933260435211133550, 0.933242474022288990, 0.933224510500338280, 0.933206544645326260, +0.933188576457297910, 0.933170605936298080, 0.933152633082371400, 0.933134657895563490, 0.933116680375918990, 0.933098700523482650, 0.933080718338299640, 0.933062733820414820, +0.933044746969873160, 0.933026757786719730, 0.933008766270998930, 0.932990772422756630, 0.932972776242037450, 0.932954777728886240, 0.932936776883348080, 0.932918773705468050, +0.932900768195291000, 0.932882760352861770, 0.932864750178225900, 0.932846737671428230, 0.932828722832513720, 0.932810705661527350, 0.932792686158514180, 0.932774664323519410, +0.932756640156587880, 0.932738613657764450, 0.932720584827094860, 0.932702553664623730, 0.932684520170396270, 0.932666484344457540, 0.932648446186852500, 0.932630405697626450, +0.932612362876824360, 0.932594317724490970, 0.932576270240672130, 0.932558220425412700, 0.932540168278757630, 0.932522113800752230, 0.932504056991441450, 0.932485997850870610, +0.932467936379084430, 0.932449872576128660, 0.932431806442048260, 0.932413737976888310, 0.932395667180694110, 0.932377594053510620, 0.932359518595383240, 0.932341440806357060, +0.932323360686476920, 0.932305278235788680, 0.932287193454337300, 0.932269106342167860, 0.932251016899325770, 0.932232925125856090, 0.932214831021804020, 0.932196734587214970, +0.932178635822133780, 0.932160534726606200, 0.932142431300677420, 0.932124325544392510, 0.932106217457796760, 0.932088107040935480, 0.932069994293853840, 0.932051879216597050, +0.932033761809210830, 0.932015642071740150, 0.931997520004230420, 0.931979395606726930, 0.931961268879274880, 0.931943139821919670, 0.931925008434706600, 0.931906874717680740, +0.931888738670887950, 0.931870600294373410, 0.931852459588182300, 0.931834316552360040, 0.931816171186952040, 0.931798023492003580, 0.931779873467559640, 0.931761721113666510, +0.931743566430368930, 0.931725409417712540, 0.931707250075742620, 0.931689088404504480, 0.931670924404043750, 0.931652758074405620, 0.931634589415635260, 0.931616418427778760, +0.931598245110881300, 0.931580069464988170, 0.931561891490144900, 0.931543711186396780, 0.931525528553789560, 0.931507343592368420, 0.931489156302178540, 0.931470966683266230, +0.931452774735676340, 0.931434580459454710, 0.931416383854646420, 0.931398184921297330, 0.931379983659452740, 0.931361780069157820, 0.931343574150458870, 0.931325365903400870, +0.931307155328029550, 0.931288942424390310, 0.931270727192528680, 0.931252509632490290, 0.931234289744320540, 0.931216067528064850, 0.931197842983769180, 0.931179616111479040, +0.931161386911239840, 0.931143155383097110, 0.931124921527096470, 0.931106685343283560, 0.931088446831704000, 0.931070205992402980, 0.931051962825426680, 0.931033717330820520, +0.931015469508630120, 0.930997219358901010, 0.930978966881678920, 0.930960712077009260, 0.930942454944937660, 0.930924195485510090, 0.930905933698772170, 0.930887669584769320, +0.930869403143547380, 0.930851134375151880, 0.930832863279628550, 0.930814589857023030, 0.930796314107380730, 0.930778036030748050, 0.930759755627170170, 0.930741472896692960, +0.930723187839362030, 0.930704900455223140, 0.930686610744322020, 0.930668318706704080, 0.930650024342415620, 0.930631727651502150, 0.930613428634009310, 0.930595127289982840, +0.930576823619468700, 0.930558517622512400, 0.930540209299159820, 0.930521898649456450, 0.930503585673448600, 0.930485270371181780, 0.930466952742701860, 0.930448632788054450, +0.930430310507285530, 0.930411985900440830, 0.930393658967566100, 0.930375329708706960, 0.930356998123909820, 0.930338664213220200, 0.930320327976683850, 0.930301989414346720, +0.930283648526254670, 0.930265305312453440, 0.930246959772988660, 0.930228611907906730, 0.930210261717253300, 0.930191909201074310, 0.930173554359415400, 0.930155197192322760, +0.930136837699842010, 0.930118475882019120, 0.930100111738899840, 0.930081745270530560, 0.930063376476956920, 0.930045005358224870, 0.930026631914380290, 0.930008256145469110, +0.929989878051537320, 0.929971497632630760, 0.929953114888795170, 0.929934729820077190, 0.929916342426522320, 0.929897952708176660, 0.929879560665086040, 0.929861166297296540, +0.929842769604854120, 0.929824370587804430, 0.929805969246194190, 0.929787565580069030, 0.929769159589474930, 0.929750751274457940, 0.929732340635064050, 0.929713927671339310, +0.929695512383329810, 0.929677094771081070, 0.929658674834640040, 0.929640252574052250, 0.929621827989363880, 0.929603401080621010, 0.929584971847869480, 0.929566540291155600, +0.929548106410525100, 0.929529670206024620, 0.929511231677699890, 0.929492790825597210, 0.929474347649762440, 0.929455902150241870, 0.929437454327081470, 0.929419004180327520, +0.929400551710025670, 0.929382096916222870, 0.929363639798964750, 0.929345180358297500, 0.929326718594267300, 0.929308254506920340, 0.929289788096302800, 0.929271319362460660, +0.929252848305439970, 0.929234374925287490, 0.929215899222049170, 0.929197421195770980, 0.929178940846499210, 0.929160458174280170, 0.929141973179159920, 0.929123485861184430, +0.929104996220400550, 0.929086504256854240, 0.929068009970591580, 0.929049513361658970, 0.929031014430102610, 0.929012513175968560, 0.928994009599303340, 0.928975503700152800, +0.928956995478563700, 0.928938484934582200, 0.928919972068254500, 0.928901456879626890, 0.928882939368745550, 0.928864419535656900, 0.928845897380407240, 0.928827372903042510, +0.928808846103609590, 0.928790316982154640, 0.928771785538723860, 0.928753251773363650, 0.928734715686120320, 0.928716177277040140, 0.928697636546169210, 0.928679093493554490, +0.928660548119242040, 0.928642000423278270, 0.928623450405709480, 0.928604898066582090, 0.928586343405942480, 0.928567786423836970, 0.928549227120311630, 0.928530665495413520, +0.928512101549188840, 0.928493535281683880, 0.928474966692945050, 0.928456395783018860, 0.928437822551951620, 0.928419246999789500, 0.928400669126579590, 0.928382088932368070, +0.928363506417201330, 0.928344921581125800, 0.928326334424187880, 0.928307744946434200, 0.928289153147911160, 0.928270559028664950, 0.928251962588742650, 0.928233363828190440, +0.928214762747054720, 0.928196159345382240, 0.928177553623219300, 0.928158945580612400, 0.928140335217608300, 0.928121722534252850, 0.928103107530593550, 0.928084490206676490, +0.928065870562548190, 0.928047248598255160, 0.928028624313844030, 0.928009997709361320, 0.927991368784853330, 0.927972737540367240, 0.927954103975949240, 0.927935468091646070, +0.927916829887504240, 0.927898189363570270, 0.927879546519890800, 0.927860901356512560, 0.927842253873481740, 0.927823604070845520, 0.927804951948650310, 0.927786297506942750, +0.927767640745769450, 0.927748981665177050, 0.927730320265212180, 0.927711656545921250, 0.927692990507351430, 0.927674322149549150, 0.927655651472561020, 0.927636978476433890, +0.927618303161214190, 0.927599625526948750, 0.927580945573684310, 0.927562263301467180, 0.927543578710344650, 0.927524891800363240, 0.927506202571569570, 0.927487511024010390, +0.927468817157732440, 0.927450120972782450, 0.927431422469207070, 0.927412721647052910, 0.927394018506367270, 0.927375313047196560, 0.927356605269587630, 0.927337895173587110, +0.927319182759241860, 0.927300468026598600, 0.927281750975703980, 0.927263031606605170, 0.927244309919348920, 0.927225585913981850, 0.927206859590550710, 0.927188130949102570, +0.927169399989684060, 0.927150666712342030, 0.927131931117123000, 0.927113193204074370, 0.927094452973242890, 0.927075710424675290, 0.927056965558418320, 0.927038218374519050, +0.927019468873024110, 0.927000717053980570, 0.926981962917434950, 0.926963206463434660, 0.926944447692026440, 0.926925686603257030, 0.926906923197173490, 0.926888157473822580, +0.926869389433251260, 0.926850619075506140, 0.926831846400634870, 0.926813071408683960, 0.926794294099700270, 0.926775514473730970, 0.926756732530822800, 0.926737948271022850, +0.926719161694378070, 0.926700372800934980, 0.926681581590741320, 0.926662788063843720, 0.926643992220289150, 0.926625194060124560, 0.926606393583397030, 0.926587590790153400, +0.926568785680440540, 0.926549978254306070, 0.926531168511796730, 0.926512356452959370, 0.926493542077841070, 0.926474725386489010, 0.926455906378950140, 0.926437085055271450, +0.926418261415499770, 0.926399435459682730, 0.926380607187867080, 0.926361776600100000, 0.926342943696428330, 0.926324108476899390, 0.926305270941560230, 0.926286431090457830, +0.926267588923639030, 0.926248744441151570, 0.926229897643042310, 0.926211048529358320, 0.926192197100146660, 0.926173343355454430, 0.926154487295328900, 0.926135628919816930, +0.926116768228966050, 0.926097905222823310, 0.926079039901435920, 0.926060172264850820, 0.926041302313115320, 0.926022430046276490, 0.926003555464381730, 0.925984678567477680, +0.925965799355612180, 0.925946917828832320, 0.925928033987185040, 0.925909147830717760, 0.925890259359477550, 0.925871368573511820, 0.925852475472867530, 0.925833580057591750, +0.925814682327732340, 0.925795782283336250, 0.925776879924450790, 0.925757975251123020, 0.925739068263400360, 0.925720158961329980, 0.925701247344958960, 0.925682333414335030, +0.925663417169505400, 0.925644498610517120, 0.925625577737417600, 0.925606654550254260, 0.925587729049074160, 0.925568801233924820, 0.925549871104853090, 0.925530938661907050, +0.925512003905133550, 0.925493066834580210, 0.925474127450294120, 0.925455185752322660, 0.925436241740713370, 0.925417295415512990, 0.925398346776769800, 0.925379395824530770, +0.925360442558843200, 0.925341486979754490, 0.925322529087312050, 0.925303568881563400, 0.925284606362555720, 0.925265641530336300, 0.925246674384953010, 0.925227704926453120, +0.925208733154883830, 0.925189759070292880, 0.925170782672727450, 0.925151803962235060, 0.925132822938863120, 0.925113839602658920, 0.925094853953670300, 0.925075865991944580, +0.925056875717529260, 0.925037883130471750, 0.925018888230819460, 0.924999891018620010, 0.924980891493920490, 0.924961889656769070, 0.924942885507212930, 0.924923879045299600, +0.924904870271076600, 0.924885859184591320, 0.924866845785891400, 0.924847830075024470, 0.924828812052037600, 0.924809791716978970, 0.924790769069895880, 0.924771744110835850, +0.924752716839846500, 0.924733687256975360, 0.924714655362270040, 0.924695621155777970, 0.924676584637546650, 0.924657545807624160, 0.924638504666057680, 0.924619461212895070, +0.924600415448183830, 0.924581367371971500, 0.924562316984305690, 0.924543264285233810, 0.924524209274804170, 0.924505151953063930, 0.924486092320060850, 0.924467030375842440, +0.924447966120456540, 0.924428899553950690, 0.924409830676372610, 0.924390759487769720, 0.924371685988190080, 0.924352610177681330, 0.924333532056291100, 0.924314451624067000, +0.924295368881056680, 0.924276283827308090, 0.924257196462868300, 0.924238106787785950, 0.924219014802108330, 0.924199920505883180, 0.924180823899158230, 0.924161724981981240, +0.924142623754399820, 0.924123520216461940, 0.924104414368214890, 0.924085306209707190, 0.924066195740986140, 0.924047082962099700, 0.924027967873095490, 0.924008850474021370, +0.923989730764925080, 0.923970608745854570, 0.923951484416857150, 0.923932357777981330, 0.923913228829274620, 0.923894097570784890, 0.923874964002559860, 0.923855828124647390, +0.923836689937095450, 0.923817549439951420, 0.923798406633263850, 0.923779261517080230, 0.923760114091448430, 0.923740964356416390, 0.923721812312031990, 0.923702657958342940, +0.923683501295397340, 0.923664342323242680, 0.923645181041927390, 0.923626017451499190, 0.923606851552005950, 0.923587683343495610, 0.923568512826016040, 0.923549339999615190, +0.923530164864341030, 0.923510987420241070, 0.923491807667364050, 0.923472625605757380, 0.923453441235469240, 0.923434254556547480, 0.923415065569040070, 0.923395874272995080, +0.923376680668460010, 0.923357484755483520, 0.923338286534113320, 0.923319086004397490, 0.923299883166383890, 0.923280678020120590, 0.923261470565655660, 0.923242260803036950, +0.923223048732312310, 0.923203834353530370, 0.923184617666738870, 0.923165398671985770, 0.923146177369319140, 0.923126953758787170, 0.923107727840437820, 0.923088499614318710, +0.923069269080478820, 0.923050036238965640, 0.923030801089827490, 0.923011563633112210, 0.922992323868868090, 0.922973081797143100, 0.922953837417985530, 0.922934590731442910, +0.922915341737564180, 0.922896090436397200, 0.922876836827989820, 0.922857580912390450, 0.922838322689647160, 0.922819062159808020, 0.922799799322921220, 0.922780534179034610, +0.922761266728196920, 0.922741996970456110, 0.922722724905860380, 0.922703450534457680, 0.922684173856296530, 0.922664894871424890, 0.922645613579890610, 0.922626329981742650, +0.922607044077028870, 0.922587755865797550, 0.922568465348096780, 0.922549172523974840, 0.922529877393480020, 0.922510579956660530, 0.922491280213564190, 0.922471978164239980, +0.922452673808735860, 0.922433367147100000, 0.922414058179380820, 0.922394746905626390, 0.922375433325885120, 0.922356117440204960, 0.922336799248634880, 0.922317478751222720, +0.922298155948016900, 0.922278830839065700, 0.922259503424417430, 0.922240173704120370, 0.922220841678222940, 0.922201507346772980, 0.922182170709819670, 0.922162831767410870, +0.922143490519594990, 0.922124146966420420, 0.922104801107935470, 0.922085452944188530, 0.922066102475227910, 0.922046749701101790, 0.922027394621859120, 0.922008037237547870, +0.921988677548216560, 0.921969315553913590, 0.921949951254687370, 0.921930584650586190, 0.921911215741658240, 0.921891844527952590, 0.921872471009517300, 0.921853095186400910, +0.921833717058651690, 0.921814336626318290, 0.921794953889448990, 0.921775568848092200, 0.921756181502296320, 0.921736791852110220, 0.921717399897582170, 0.921698005638760700, +0.921678609075694100, 0.921659210208431000, 0.921639809037019920, 0.921620405561509260, 0.921600999781947320, 0.921581591698383160, 0.921562181310865090, 0.921542768619441510, +0.921523353624160930, 0.921503936325072100, 0.921484516722223420, 0.921465094815663080, 0.921445670605440250, 0.921426244091603340, 0.921406815274200870, 0.921387384153281250, +0.921367950728893210, 0.921348515001085390, 0.921329076969906180, 0.921309636635403880, 0.921290193997627900, 0.921270749056626540, 0.921251301812448190, 0.921231852265141590, +0.921212400414755380, 0.921192946261338190, 0.921173489804938180, 0.921154031045604890, 0.921134569983386500, 0.921115106618331740, 0.921095640950489130, 0.921076172979907510, +0.921056702706635420, 0.921037230130721470, 0.921017755252214300, 0.920998278071162970, 0.920978798587615890, 0.920959316801621910, 0.920939832713229540, 0.920920346322487650, +0.920900857629444960, 0.920881366634150100, 0.920861873336651370, 0.920842377736998400, 0.920822879835239470, 0.920803379631423340, 0.920783877125598730, 0.920764372317814490, +0.920744865208119270, 0.920725355796561560, 0.920705844083190780, 0.920686330068055340, 0.920666813751204180, 0.920647295132685950, 0.920627774212549490, 0.920608250990843540, +0.920588725467617050, 0.920569197642918340, 0.920549667516797010, 0.920530135089301590, 0.920510600360480710, 0.920491063330383330, 0.920471523999058410, 0.920451982366554570, +0.920432438432920770, 0.920412892198205550, 0.920393343662458510, 0.920373792825728070, 0.920354239688063070, 0.920334684249512590, 0.920315126510125370, 0.920295566469950250, +0.920276004129035980, 0.920256439487431970, 0.920236872545186930, 0.920217303302349630, 0.920197731758969130, 0.920178157915094270, 0.920158581770774030, 0.920139003326057360, +0.920119422580992770, 0.920099839535630020, 0.920080254190017710, 0.920060666544204710, 0.920041076598240080, 0.920021484352172680, 0.920001889806051580, 0.919982292959925510, +0.919962693813843990, 0.919943092367855760, 0.919923488622009790, 0.919903882576355030, 0.919884274230940660, 0.919864663585815530, 0.919845050641028840, 0.919825435396629090, +0.919805817852666130, 0.919786198009188590, 0.919766575866245550, 0.919746951423886180, 0.919727324682159340, 0.919707695641114210, 0.919688064300799860, 0.919668430661264910, +0.919648794722559340, 0.919629156484731760, 0.919609515947831250, 0.919589873111906990, 0.919570227977008050, 0.919550580543183500, 0.919530930810482210, 0.919511278778953890, +0.919491624448647400, 0.919471967819611820, 0.919452308891896330, 0.919432647665550110, 0.919412984140622220, 0.919393318317161980, 0.919373650195218000, 0.919353979774840240, +0.919334307056077550, 0.919314632038979010, 0.919294954723594020, 0.919275275109971530, 0.919255593198160970, 0.919235908988211390, 0.919216222480171650, 0.919196533674091710, +0.919176842570020410, 0.919157149168007060, 0.919137453468100830, 0.919117755470350910, 0.919098055174806690, 0.919078352581516930, 0.919058647690531690, 0.919038940501899710, +0.919019231015670510, 0.918999519231893160, 0.918979805150617060, 0.918960088771891390, 0.918940370095765570, 0.918920649122288440, 0.918900925851510060, 0.918881200283479300, +0.918861472418245560, 0.918841742255858240, 0.918822009796366410, 0.918802275039819700, 0.918782537986266860, 0.918762798635758050, 0.918743056988342240, 0.918723313044068730, +0.918703566802987040, 0.918683818265146450, 0.918664067430596250, 0.918644314299385870, 0.918624558871564360, 0.918604801147181790, 0.918585041126287250, 0.918565278808930130, +0.918545514195159730, 0.918525747285025670, 0.918505978078577150, 0.918486206575863660, 0.918466432776934400, 0.918446656681839340, 0.918426878290627640, 0.918407097603348820, +0.918387314620052190, 0.918367529340787250, 0.918347741765603520, 0.918327951894550080, 0.918308159727677100, 0.918288365265033770, 0.918268568506669490, 0.918248769452633780, +0.918228968102976160, 0.918209164457746140, 0.918189358516993240, 0.918169550280766520, 0.918149739749116290, 0.918129926922091720, 0.918110111799742330, 0.918090294382117640, +0.918070474669267280, 0.918050652661240750, 0.918030828358087470, 0.918011001759856840, 0.917991172866599040, 0.917971341678363360, 0.917951508195199220, 0.917931672417156450, +0.917911834344284360, 0.917891993976632790, 0.917872151314250820, 0.917852306357188840, 0.917832459105496160, 0.917812609559222280, 0.917792757718416840, 0.917772903583129570, +0.917753047153410000, 0.917733188429307840, 0.917713327410872300, 0.917693464098153780, 0.917673598491201670, 0.917653730590065610, 0.917633860394795110, 0.917613987905440020, +0.917594113122049970, 0.917574236044674250, 0.917554356673363270, 0.917534475008166430, 0.917514591049133470, 0.917494704796314010, 0.917474816249757690, 0.917454925409514340, +0.917435032275633830, 0.917415136848165220, 0.917395239127159260, 0.917375339112665110, 0.917355436804732640, 0.917335532203411570, 0.917315625308751660, 0.917295716120802630, +0.917275804639614440, 0.917255890865236290, 0.917235974797718790, 0.917216056437111350, 0.917196135783463820, 0.917176212836825930, 0.917156287597247430, 0.917136360064778280, +0.917116430239467870, 0.917096498121366730, 0.917076563710524370, 0.917056627006990640, 0.917036688010815280, 0.917016746722048250, 0.916996803140739280, 0.916976857266938340, +0.916956909100694830, 0.916936958642059490, 0.916917005891081720, 0.916897050847811480, 0.916877093512298620, 0.916857133884593000, 0.916837171964744460, 0.916817207752802730, +0.916797241248818340, 0.916777272452840800, 0.916757301364920170, 0.916737327985106210, 0.916717352313448970, 0.916697374349998320, 0.916677394094804200, 0.916657411547916250, +0.916637426709385190, 0.916617439579260450, 0.916597450157592200, 0.916577458444430390, 0.916557464439824780, 0.916537468143825640, 0.916517469556482720, 0.916497468677845870, +0.916477465507965720, 0.916457460046891770, 0.916437452294674330, 0.916417442251363120, 0.916397429917008340, 0.916377415291660060, 0.916357398375367780, 0.916337379168182480, +0.916317357670153650, 0.916297333881331390, 0.916277307801765860, 0.916257279431507140, 0.916237248770605080, 0.916217215819109980, 0.916197180577071450, 0.916177143044540340, +0.916157103221566290, 0.916137061108199590, 0.916117016704490190, 0.916096970010488290, 0.916076921026243940, 0.916056869751807330, 0.916036816187228100, 0.916016760332557300, +0.915996702187844460, 0.915976641753139980, 0.915956579028493810, 0.915936514013956260, 0.915916446709577390, 0.915896377115407060, 0.915876305231496210, 0.915856231057894490, +0.915836154594652290, 0.915816075841819570, 0.915795994799446730, 0.915775911467583970, 0.915755825846281350, 0.915735737935588820, 0.915715647735557360, 0.915695555246236690, +0.915675460467677230, 0.915655363399929030, 0.915635264043042520, 0.915615162397067750, 0.915595058462054800, 0.915574952238054520, 0.915554843725116860, 0.915534732923292020, +0.915514619832630490, 0.915494504453182260, 0.915474386784997930, 0.915454266828127470, 0.915434144582621070, 0.915414020048529680, 0.915393893225903250, 0.915373764114792100, +0.915353632715246500, 0.915333499027316750, 0.915313363051053370, 0.915293224786506540, 0.915273084233726330, 0.915252941392763700, 0.915232796263668710, 0.915212648846491780, +0.915192499141283200, 0.915172347148093370, 0.915152192866972690, 0.915132036297971240, 0.915111877441139980, 0.915091716296528970, 0.915071552864188730, 0.915051387144169670, +0.915031219136522080, 0.915011048841296470, 0.914990876258543140, 0.914970701388312380, 0.914950524230655150, 0.914930344785621630, 0.914910163053262340, 0.914889979033627570, +0.914869792726767830, 0.914849604132733530, 0.914829413251575410, 0.914809220083343200, 0.914789024628088420, 0.914768826885861140, 0.914748626856711660, 0.914728424540690700, +0.914708219937848680, 0.914688013048235990, 0.914667803871903050, 0.914647592408900920, 0.914627378659279790, 0.914607162623090160, 0.914586944300382680, 0.914566723691207840, +0.914546500795616170, 0.914526275613658290, 0.914506048145384390, 0.914485818390845640, 0.914465586350092450, 0.914445352023175230, 0.914425115410144600, 0.914404876511051180, +0.914384635325945610, 0.914364391854878170, 0.914344146097899930, 0.914323898055061420, 0.914303647726413260, 0.914283395112005850, 0.914263140211890040, 0.914242883026116230, +0.914222623554735380, 0.914202361797797570, 0.914182097755354190, 0.914161831427455550, 0.914141562814152380, 0.914121291915495180, 0.914101018731534930, 0.914080743262322030, +0.914060465507907200, 0.914040185468340980, 0.914019903143674650, 0.913999618533958500, 0.913979331639243390, 0.913959042459579820, 0.913938750995018760, 0.913918457245610720, +0.913898161211406320, 0.913877862892456760, 0.913857562288812540, 0.913837259400524520, 0.913816954227643200, 0.913796646770219660, 0.913776337028304410, 0.913756025001948300, +0.913735710691201850, 0.913715394096116350, 0.913695075216742540, 0.913674754053130920, 0.913654430605332470, 0.913634104873397910, 0.913613776857378100, 0.913593446557323770, +0.913573113973285560, 0.913552779105314960, 0.913532441953462280, 0.913512102517778590, 0.913491760798314620, 0.913471416795121230, 0.913451070508249360, 0.913430721937749430, +0.913410371083673070, 0.913390017946070780, 0.913369662524993410, 0.913349304820491930, 0.913328944832617060, 0.913308582561420000, 0.913288218006951370, 0.913267851169261900, +0.913247482048403110, 0.913227110644425630, 0.913206736957380420, 0.913186360987318310, 0.913165982734290280, 0.913145602198347390, 0.913125219379540050, 0.913104834277920110, +0.913084446893537960, 0.913064057226444790, 0.913043665276691450, 0.913023271044328900, 0.913002874529408310, 0.912982475731980440, 0.912962074652096000, 0.912941671289806740, +0.912921265645163290, 0.912900857718216720, 0.912880447509017980, 0.912860035017618140, 0.912839620244068170, 0.912819203188419250, 0.912798783850721880, 0.912778362231027930, +0.912757938329388120, 0.912737512145853410, 0.912717083680474880, 0.912696652933303710, 0.912676219904390850, 0.912655784593787160, 0.912635347001544360, 0.912614907127713090, +0.912594464972344640, 0.912574020535489970, 0.912553573817200370, 0.912533124817526690, 0.912512673536520320, 0.912492219974231800, 0.912471764130713180, 0.912451306006015090, +0.912430845600188830, 0.912410382913285360, 0.912389917945355950, 0.912369450696451700, 0.912348981166623880, 0.912328509355923250, 0.912308035264401740, 0.912287558892110110, +0.912267080239099530, 0.912246599305421290, 0.912226116091126580, 0.912205630596266580, 0.912185142820892140, 0.912164652765055210, 0.912144160428806640, 0.912123665812197610, +0.912103168915279430, 0.912082669738103370, 0.912062168280720620, 0.912041664543182470, 0.912021158525539780, 0.912000650227844600, 0.911980139650147680, 0.911959626792500530, +0.911939111654954230, 0.911918594237560280, 0.911898074540369750, 0.911877552563433610, 0.911857028306804040, 0.911836501770531880, 0.911815972954668430, 0.911795441859265090, +0.911774908484373150, 0.911754372830043900, 0.911733834896328750, 0.911713294683278660, 0.911692752190945700, 0.911672207419380820, 0.911651660368635430, 0.911631111038760930, +0.911610559429808620, 0.911590005541829900, 0.911569449374876270, 0.911548890928998490, 0.911528330204248950, 0.911507767200678610, 0.911487201918338760, 0.911466634357280920, +0.911446064517556500, 0.911425492399217000, 0.911404918002313380, 0.911384341326897720, 0.911363762373021300, 0.911343181140735430, 0.911322597630091710, 0.911302011841141350, +0.911281423773936060, 0.911260833428527260, 0.911240240804965910, 0.911219645903304290, 0.911199048723593700, 0.911178449265885320, 0.911157847530230990, 0.911137243516681910, +0.911116637225289790, 0.911096028656106060, 0.911075417809181890, 0.911054804684569450, 0.911034189282320160, 0.911013571602485310, 0.910992951645116510, 0.910972329410265400, +0.910951704897983380, 0.910931078108321860, 0.910910449041332890, 0.910889817697067890, 0.910869184075578260, 0.910848548176915740, 0.910827910001131840, 0.910807269548278060, +0.910786626818406280, 0.910765981811567430, 0.910745334527814030, 0.910724684967197380, 0.910704033129768890, 0.910683379015580390, 0.910662722624683400, 0.910642063957129650, +0.910621403012970340, 0.910600739792257970, 0.910580074295043620, 0.910559406521379120, 0.910538736471316220, 0.910518064144906330, 0.910497389542201390, 0.910476712663252920, +0.910456033508112330, 0.910435352076832020, 0.910414668369463280, 0.910393982386057840, 0.910373294126667560, 0.910352603591343960, 0.910331910780138860, 0.910311215693104030, +0.910290518330290840, 0.910269818691751610, 0.910249116777537840, 0.910228412587701370, 0.910207706122293850, 0.910186997381366990, 0.910166286364972650, 0.910145573073162240, +0.910124857505988370, 0.910104139663502230, 0.910083419545755780, 0.910062697152800750, 0.910041972484688990, 0.910021245541472350, 0.910000516323202560, 0.909979784829931140, +0.909959051061710600, 0.909938315018592460, 0.909917576700628450, 0.909896836107870530, 0.909876093240370660, 0.909855348098180360, 0.909834600681351470, 0.909813850989936390, +0.909793099023986640, 0.909772344783554180, 0.909751588268690850, 0.909730829479448610, 0.909710068415879200, 0.909689305078034690, 0.909668539465966490, 0.909647771579727320, +0.909627001419368810, 0.909606228984942700, 0.909585454276501060, 0.909564677294095740, 0.909543898037778800, 0.909523116507602090, 0.909502332703617130, 0.909481546625876880, +0.909460758274432620, 0.909439967649336540, 0.909419174750640490, 0.909398379578396530, 0.909377582132656630, 0.909356782413472400, 0.909335980420896580, 0.909315176154980810, +0.909294369615777140, 0.909273560803337430, 0.909252749717713860, 0.909231936358958490, 0.909211120727123290, 0.909190302822259880, 0.909169482644420990, 0.909148660193658480, +0.909127835470024290, 0.909107008473570620, 0.909086179204349310, 0.909065347662412650, 0.909044513847812490, 0.909023677760600780, 0.909002839400830150, 0.908981998768552570, +0.908961155863819870, 0.908940310686684350, 0.908919463237197970, 0.908898613515413010, 0.908877761521381110, 0.908856907255155220, 0.908836050716786970, 0.908815191906328760, +0.908794330823832430, 0.908773467469350280, 0.908752601842934490, 0.908731733944637240, 0.908710863774510160, 0.908689991332606420, 0.908669116618977650, 0.908648239633676140, +0.908627360376753960, 0.908606478848263400, 0.908585595048256640, 0.908564708976785540, 0.908543820633903040, 0.908522930019661000, 0.908502037134111600, 0.908481141977307120, +0.908460244549299740, 0.908439344850141770, 0.908418442879885490, 0.908397538638582750, 0.908376632126286500, 0.908355723343048590, 0.908334812288921540, 0.908313898963957310, +0.908292983368208410, 0.908272065501727010, 0.908251145364565420, 0.908230222956775690, 0.908209298278410680, 0.908188371329522460, 0.908167442110163430, 0.908146510620385650, +0.908125576860241650, 0.908104640829783700, 0.908083702529063790, 0.908062761958134960, 0.908041819117049180, 0.908020874005858960, 0.907999926624616480, 0.907978976973374150, +0.907958025052184480, 0.907937070861099760, 0.907916114400171840, 0.907895155669454110, 0.907874194668998550, 0.907853231398857430, 0.907832265859083280, 0.907811298049728380, +0.907790327970845250, 0.907769355622486400, 0.907748381004703670, 0.907727404117550370, 0.907706424961078670, 0.907685443535340860, 0.907664459840389350, 0.907643473876276750, +0.907622485643055590, 0.907601495140777700, 0.907580502369496500, 0.907559507329263940, 0.907538510020132750, 0.907517510442155230, 0.907496508595383890, 0.907475504479871350, +0.907454498095670030, 0.907433489442832090, 0.907412478521410830, 0.907391465331458310, 0.907370449873027170, 0.907349432146169810, 0.907328412150938960, 0.907307389887387130, +0.907286365355566390, 0.907265338555530150, 0.907244309487330480, 0.907223278151020110, 0.907202244546651440, 0.907181208674277320, 0.907160170533950040, 0.907139130125722450, +0.907118087449646620, 0.907097042505775830, 0.907075995294162610, 0.907054945814859350, 0.907033894067918680, 0.907012840053393220, 0.906991783771335820, 0.906970725221798890, +0.906949664404834710, 0.906928601320496800, 0.906907535968837440, 0.906886468349909160, 0.906865398463764680, 0.906844326310456750, 0.906823251890038100, 0.906802175202560790, +0.906781096248078460, 0.906760015026643500, 0.906738931538308420, 0.906717845783125980, 0.906696757761149000, 0.906675667472430000, 0.906654574917021950, 0.906633480094977020, +0.906612383006348830, 0.906591283651189680, 0.906570182029552310, 0.906549078141489440, 0.906527971987053930, 0.906506863566298390, 0.906485752879275800, 0.906464639926038430, +0.906443524706639800, 0.906422407221132430, 0.906401287469568940, 0.906380165452002280, 0.906359041168485200, 0.906337914619070540, 0.906316785803810700, 0.906295654722759300, +0.906274521375968760, 0.906253385763491900, 0.906232247885381590, 0.906211107741690670, 0.906189965332471870, 0.906168820657778260, 0.906147673717662250, 0.906126524512177340, +0.906105373041376170, 0.906084219305311580, 0.906063063304036410, 0.906041905037603620, 0.906020744506066070, 0.905999581709476250, 0.905978416647887920, 0.905957249321353460, +0.905936079729925960, 0.905914907873658140, 0.905893733752603180, 0.905872557366813820, 0.905851378716343030, 0.905830197801243520, 0.905809014621568820, 0.905787829177371550, +0.905766641468704780, 0.905745451495621360, 0.905724259258174350, 0.905703064756416710, 0.905681867990401400, 0.905660668960181050, 0.905639467665809380, 0.905618264107339030, +0.905597058284822950, 0.905575850198314320, 0.905554639847866110, 0.905533427233531140, 0.905512212355362390, 0.905490995213413360, 0.905469775807736910, 0.905448554138386100, +0.905427330205413770, 0.905406104008873220, 0.905384875548817300, 0.905363644825299300, 0.905342411838371720, 0.905321176588088530, 0.905299939074502350, 0.905278699297666360, +0.905257457257633620, 0.905236212954457330, 0.905214966388190430, 0.905193717558886110, 0.905172466466597100, 0.905151213111377250, 0.905129957493279510, 0.905108699612356740, +0.905087439468662320, 0.905066177062249230, 0.905044912393170750, 0.905023645461479620, 0.905002376267229680, 0.904981104810473890, 0.904959831091265320, 0.904938555109657150, +0.904917276865702560, 0.904895996359454840, 0.904874713590967160, 0.904853428560292270, 0.904832141267484120, 0.904810851712595680, 0.904789559895680110, 0.904768265816790600, +0.904746969475980540, 0.904725670873302910, 0.904704370008810880, 0.904683066882558170, 0.904661761494597870, 0.904640453844983150, 0.904619143933767190, 0.904597831761003500, +0.904576517326745270, 0.904555200631045660, 0.904533881673957650, 0.904512560455535300, 0.904491236975831670, 0.904469911234899840, 0.904448583232793310, 0.904427252969565280, +0.904405920445269130, 0.904384585659958160, 0.904363248613685330, 0.904341909306504820, 0.904320567738469470, 0.904299223909632690, 0.904277877820047980, 0.904256529469768420, +0.904235178858847630, 0.904213825987338460, 0.904192470855295190, 0.904171113462770680, 0.904149753809818320, 0.904128391896491750, 0.904107027722844010, 0.904085661288928870, +0.904064292594799480, 0.904042921640509030, 0.904021548426111600, 0.904000172951660350, 0.903978795217208590, 0.903957415222809920, 0.903936032968517660, 0.903914648454385410, +0.903893261680466020, 0.903871872646814010, 0.903850481353482230, 0.903829087800524180, 0.903807691987993490, 0.903786293915943670, 0.903764893584427910, 0.903743490993500040, +0.903722086143213030, 0.903700679033621280, 0.903679269664777740, 0.903657858036736040, 0.903636444149549690, 0.903615028003272200, 0.903593609597957200, 0.903572188933658090, +0.903550766010428270, 0.903529340828321810, 0.903507913387392000, 0.903486483687692470, 0.903465051729276710, 0.903443617512198260, 0.903422181036510840, 0.903400742302267520, +0.903379301309522820, 0.903357858058329800, 0.903336412548742080, 0.903314964780813410, 0.903293514754597290, 0.903272062470147460, 0.903250607927517430, 0.903229151126760500, +0.903207692067931060, 0.903186230751082400, 0.903164767176268150, 0.903143301343541930, 0.903121833252957580, 0.903100362904568520, 0.903078890298428690, 0.903057415434591170, +0.903035938313110460, 0.903014458934039980, 0.902992977297433330, 0.902971493403344150, 0.902950007251826390, 0.902928518842933460, 0.902907028176718970, 0.902885535253237230, +0.902864040072541730, 0.902842542634686000, 0.902821042939723980, 0.902799540987709430, 0.902778036778695950, 0.902756530312737390, 0.902735021589887170, 0.902713510610199670, +0.902691997373728410, 0.902670481880527230, 0.902648964130649880, 0.902627444124149970, 0.902605921861081570, 0.902584397341497980, 0.902562870565453700, 0.902541341533002360, +0.902519810244197580, 0.902498276699093220, 0.902476740897743320, 0.902455202840201420, 0.902433662526521680, 0.902412119956757300, 0.902390575130962990, 0.902369028049192280, +0.902347478711498900, 0.902325927117936910, 0.902304373268560170, 0.902282817163422400, 0.902261258802577570, 0.902239698186079300, 0.902218135313982090, 0.902196570186339590, +0.902175002803205620, 0.902153433164634260, 0.902131861270679240, 0.902110287121394520, 0.902088710716833720, 0.902067132057051580, 0.902045551142101500, 0.902023967972037650, +0.902002382546913890, 0.901980794866784060, 0.901959204931702340, 0.901937612741722570, 0.901916018296898380, 0.901894421597284610, 0.901872822642934670, 0.901851221433902730, +0.901829617970242750, 0.901808012252008680, 0.901786404279254720, 0.901764794052034580, 0.901743181570402120, 0.901721566834412070, 0.901699949844118160, 0.901678330599574360, +0.901656709100834730, 0.901635085347953340, 0.901613459340984250, 0.901591831079981090, 0.901570200564998700, 0.901548567796090830, 0.901526932773311640, 0.901505295496714990, +0.901483655966355160, 0.901462014182286220, 0.901440370144562130, 0.901418723853236850, 0.901397075308365100, 0.901375424510000630, 0.901353771458197730, 0.901332116153010230, +0.901310458594492550, 0.901288798782698740, 0.901267136717682440, 0.901245472399498810, 0.901223805828201390, 0.901202137003844550, 0.901180465926482270, 0.901158792596168820, +0.901137117012958510, 0.901115439176905290, 0.901093759088063220, 0.901072076746487040, 0.901050392152230710, 0.901028705305348290, 0.901007016205894180, 0.900985324853922580, +0.900963631249487640, 0.900941935392643670, 0.900920237283444390, 0.900898536921944880, 0.900876834308199090, 0.900855129442261200, 0.900833422324185510, 0.900811712954026290, +0.900790001331837730, 0.900768287457673790, 0.900746571331589530, 0.900724852953638800, 0.900703132323876000, 0.900681409442355310, 0.900659684309131130, 0.900637956924257740, +0.900616227287789450, 0.900594495399780200, 0.900572761260285180, 0.900551024869358120, 0.900529286227053640, 0.900507545333425810, 0.900485802188529250, 0.900464056792418140, +0.900442309145146780, 0.900420559246769340, 0.900398807097340990, 0.900377052696915480, 0.900355296045547430, 0.900333537143291010, 0.900311775990200850, 0.900290012586331230, +0.900268246931736240, 0.900246479026470920, 0.900224708870589470, 0.900202936464146290, 0.900181161807195650, 0.900159384899792190, 0.900137605741990310, 0.900115824333844290, +0.900094040675408440, 0.900072254766737800, 0.900050466607886570, 0.900028676198909140, 0.900006883539860030, 0.899985088630793740, 0.899963291471764680, 0.899941492062827030, +0.899919690404036080, 0.899897886495445780, 0.899876080337110860, 0.899854271929085740, 0.899832461271424910, 0.899810648364183010, 0.899788833207414320, 0.899767015801173350, +0.899745196145515070, 0.899723374240493870, 0.899701550086164260, 0.899679723682580760, 0.899657895029797980, 0.899636064127870340, 0.899614230976852670, 0.899592395576798930, +0.899570557927764750, 0.899548718029804070, 0.899526875882971530, 0.899505031487321860, 0.899483184842909680, 0.899461335949789500, 0.899439484808015500, 0.899417631417643300, +0.899395775778726980, 0.899373917891321150, 0.899352057755480660, 0.899330195371259910, 0.899308330738713750, 0.899286463857896680, 0.899264594728863110, 0.899242723351668440, +0.899220849726366960, 0.899198973853013390, 0.899177095731662380, 0.899155215362368640, 0.899133332745186810, 0.899111447880171610, 0.899089560767377560, 0.899067671406859840, +0.899045779798673060, 0.899023885942871750, 0.899001989839510740, 0.898980091488644770, 0.898958190890328580, 0.898936288044616450, 0.898914382951564120, 0.898892475611225760, +0.898870566023656110, 0.898848654188910250, 0.898826740107042670, 0.898804823778108220, 0.898782905202161640, 0.898760984379257550, 0.898739061309451250, 0.898717135992797460, +0.898695208429350690, 0.898673278619165910, 0.898651346562298060, 0.898629412258801660, 0.898607475708731450, 0.898585536912142930, 0.898563595869090630, 0.898541652579629260, +0.898519707043813790, 0.898497759261699060, 0.898475809233339920, 0.898453856958791210, 0.898431902438107550, 0.898409945671344470, 0.898387986658556460, 0.898366025399798600, +0.898344061895125610, 0.898322096144592570, 0.898300128148254220, 0.898278157906165500, 0.898256185418381040, 0.898234210684956460, 0.898212233705946490, 0.898190254481405770, +0.898168273011389570, 0.898146289295952530, 0.898124303335149920, 0.898102315129036040, 0.898080324677666850, 0.898058331981096750, 0.898036337039380910, 0.898014339852574170, +0.897992340420731620, 0.897970338743908190, 0.897948334822158970, 0.897926328655538450, 0.897904320244102610, 0.897882309587905820, 0.897860296687003400, 0.897838281541450180, +0.897816264151301220, 0.897794244516611610, 0.897772222637436060, 0.897750198513830310, 0.897728172145848990, 0.897706143533547270, 0.897684112676980340, 0.897662079576202920, +0.897640044231270420, 0.897618006642237790, 0.897595966809159760, 0.897573924732092190, 0.897551880411089800, 0.897529833846207770, 0.897507785037501060, 0.897485733985024960, +0.897463680688834530, 0.897441625148984850, 0.897419567365530750, 0.897397507338528080, 0.897375445068031690, 0.897353380554096640, 0.897331313796778220, 0.897309244796131390, +0.897287173552211550, 0.897265100065073320, 0.897243024334772770, 0.897220946361364740, 0.897198866144904180, 0.897176783685446620, 0.897154698983047010, 0.897132612037760620, +0.897110522849642770, 0.897088431418748170, 0.897066337745132890, 0.897044241828851780, 0.897022143669960140, 0.897000043268513010, 0.896977940624565930, 0.896955835738173830, +0.896933728609392240, 0.896911619238275890, 0.896889507624880960, 0.896867393769262170, 0.896845277671474930, 0.896823159331574530, 0.896801038749616140, 0.896778915925655280, +0.896756790859746690, 0.896734663551946420, 0.896712534002309550, 0.896690402210891470, 0.896668268177747250, 0.896646131902932410, 0.896623993386502230, 0.896601852628512000, +0.896579709629016790, 0.896557564388072770, 0.896535416905734790, 0.896513267182058260, 0.896491115217098570, 0.896468961010911000, 0.896446804563551190, 0.896424645875073870, +0.896402484945535320, 0.896380321774990610, 0.896358156363495140, 0.896335988711104200, 0.896313818817873310, 0.896291646683857860, 0.896269472309113360, 0.896247295693694660, +0.896225116837658260, 0.896202935741059030, 0.896180752403952340, 0.896158566826393940, 0.896136379008439010, 0.896114188950143160, 0.896091996651561810, 0.896069802112750110, +0.896047605333764370, 0.896025406314659540, 0.896003205055491140, 0.895981001556314770, 0.895958795817185960, 0.895936587838160100, 0.895914377619292380, 0.895892165160639190, +0.895869950462255480, 0.895847733524196890, 0.895825514346519030, 0.895803292929277410, 0.895781069272527430, 0.895758843376324940, 0.895736615240724790, 0.895714384865783590, +0.895692152251556410, 0.895669917398098870, 0.895647680305466600, 0.895625440973714990, 0.895603199402899900, 0.895580955593076710, 0.895558709544300720, 0.895536461256628450, +0.895514210730114950, 0.895491957964815950, 0.895469702960787100, 0.895447445718083990, 0.895425186236762260, 0.895402924516877090, 0.895380660558485090, 0.895358394361641330, +0.895336125926401660, 0.895313855252821700, 0.895291582340957070, 0.895269307190863510, 0.895247029802596740, 0.895224750176211840, 0.895202468311765640, 0.895180184209313110, +0.895157897868910200, 0.895135609290612530, 0.895113318474475840, 0.895091025420555850, 0.895068730128907860, 0.895046432599588600, 0.895024132832653140, 0.895001830828157320, +0.894979526586156980, 0.894957220106707750, 0.894934911389865580, 0.894912600435685990, 0.894890287244224590, 0.894867971815537900, 0.894845654149681200, 0.894823334246710460, +0.894801012106681390, 0.894778687729649750, 0.894756361115671360, 0.894734032264802080, 0.894711701177097310, 0.894689367852613660, 0.894667032291406650, 0.894644694493532010, +0.894622354459045700, 0.894600012188003450, 0.894577667680461210, 0.894555320936474390, 0.894532971956099710, 0.894510620739392470, 0.894488267286408840, 0.894465911597204450, +0.894443553671835260, 0.894421193510357200, 0.894398831112826250, 0.894376466479297690, 0.894354099609828480, 0.894331730504473900, 0.894309359163290130, 0.894286985586332910, +0.894264609773658180, 0.894242231725321910, 0.894219851441380160, 0.894197468921888340, 0.894175084166903170, 0.894152697176480380, 0.894130307950675830, 0.894107916489545460, +0.894085522793145350, 0.894063126861531440, 0.894040728694759370, 0.894018328292885740, 0.893995925655966420, 0.893973520784057230, 0.893951113677214140, 0.893928704335493430, +0.893906292758950840, 0.893883878947642540, 0.893861462901624270, 0.893839044620952650, 0.893816624105683410, 0.893794201355872620, 0.893771776371576230, 0.893749349152850540, +0.893726919699751380, 0.893704488012334600, 0.893682054090656930, 0.893659617934774220, 0.893637179544742420, 0.893614738920617710, 0.893592296062456050, 0.893569850970313720, +0.893547403644246670, 0.893524954084310870, 0.893502502290562940, 0.893480048263058820, 0.893457592001854590, 0.893435133507006430, 0.893412672778570390, 0.893390209816602670, +0.893367744621159420, 0.893345277192296390, 0.893322807530070540, 0.893300335634537700, 0.893277861505754060, 0.893255385143775670, 0.893232906548658940, 0.893210425720459830, +0.893187942659234400, 0.893165457365039380, 0.893142969837930730, 0.893120480077964740, 0.893097988085197470, 0.893075493859685320, 0.893052997401484360, 0.893030498710650880, +0.893007997787240830, 0.892985494631311160, 0.892962989242917730, 0.892940481622116920, 0.892917971768964810, 0.892895459683517800, 0.892872945365832060, 0.892850428815964100, +0.892827910033969550, 0.892805389019905690, 0.892782865773828370, 0.892760340295793870, 0.892737812585858490, 0.892715282644078620, 0.892692750470510550, 0.892670216065210130, +0.892647679428234640, 0.892625140559639930, 0.892602599459482390, 0.892580056127818320, 0.892557510564704120, 0.892534962770196060, 0.892512412744350670, 0.892489860487223900, +0.892467305998872810, 0.892444749279353470, 0.892422190328722280, 0.892399629147035630, 0.892377065734349940, 0.892354500090721480, 0.892331932216206440, 0.892309362110861870, +0.892286789774744070, 0.892264215207909110, 0.892241638410413710, 0.892219059382314270, 0.892196478123667090, 0.892173894634528790, 0.892151308914955310, 0.892128720965003950, +0.892106130784730780, 0.892083538374192300, 0.892060943733444910, 0.892038346862545240, 0.892015747761549680, 0.891993146430514750, 0.891970542869496620, 0.891947937078552470, +0.891925329057738470, 0.891902718807111140, 0.891880106326726980, 0.891857491616642630, 0.891834874676914580, 0.891812255507598910, 0.891789634108752890, 0.891767010480432940, +0.891744384622695340, 0.891721756535596930, 0.891699126219194000, 0.891676493673543290, 0.891653858898701300, 0.891631221894724320, 0.891608582661669760, 0.891585941199593670, +0.891563297508552680, 0.891540651588603520, 0.891518003439802700, 0.891495353062206840, 0.891472700455872240, 0.891450045620856280, 0.891427388557215260, 0.891404729265005690, +0.891382067744284300, 0.891359403995107710, 0.891336738017532770, 0.891314069811615870, 0.891291399377413310, 0.891268726714982810, 0.891246051824380440, 0.891223374705662930, +0.891200695358887020, 0.891178013784109320, 0.891155329981386580, 0.891132643950775520, 0.891109955692332530, 0.891087265206114920, 0.891064572492179190, 0.891041877550582060, +0.891019180381380280, 0.890996480984630470, 0.890973779360389570, 0.890951075508713660, 0.890928369429660580, 0.890905661123286510, 0.890882950589648390, 0.890860237828802860, +0.890837522840806640, 0.890814805625716690, 0.890792086183589740, 0.890769364514482080, 0.890746640618451550, 0.890723914495554330, 0.890701186145847260, 0.890678455569387300, +0.890655722766231280, 0.890632987736435840, 0.890610250480057930, 0.890587510997154050, 0.890564769287781830, 0.890542025351997560, 0.890519279189858290, 0.890496530801420880, +0.890473780186742060, 0.890451027345878890, 0.890428272278887660, 0.890405514985826210, 0.890382755466750940, 0.890359993721718810, 0.890337229750786660, 0.890314463554011450, +0.890291695131450010, 0.890268924483159420, 0.890246151609196070, 0.890223376509617800, 0.890200599184481020, 0.890177819633842790, 0.890155037857760070, 0.890132253856289690, +0.890109467629488620, 0.890086679177413580, 0.890063888500122190, 0.890041095597671080, 0.890018300470117210, 0.889995503117517630, 0.889972703539929300, 0.889949901737409180, +0.889927097710014330, 0.889904291457801370, 0.889881482980828030, 0.889858672279150940, 0.889835859352827270, 0.889813044201913870, 0.889790226826467910, 0.889767407226546350, +0.889744585402206250, 0.889721761353504340, 0.889698935080498470, 0.889676106583245140, 0.889653275861801650, 0.889630442916224950, 0.889607607746572100, 0.889584770352900290, +0.889561930735266020, 0.889539088893727460, 0.889516244828341130, 0.889493398539164200, 0.889470550026253750, 0.889447699289666940, 0.889424846329460950, 0.889401991145692740, +0.889379133738419260, 0.889356274107698240, 0.889333412253586640, 0.889310548176141410, 0.889287681875419840, 0.889264813351479110, 0.889241942604376280, 0.889219069634168640, +0.889196194440912910, 0.889173317024667060, 0.889150437385487940, 0.889127555523432810, 0.889104671438558650, 0.889081785130922950, 0.889058896600582680, 0.889036005847594790, +0.889013112872017340, 0.888990217673907070, 0.888967320253321260, 0.888944420610317200, 0.888921518744951960, 0.888898614657283040, 0.888875708347367510, 0.888852799815262440, +0.888829889061025670, 0.888806976084714150, 0.888784060886385170, 0.888761143466096140, 0.888738223823904220, 0.888715301959866700, 0.888692377874040540, 0.888669451566483910, +0.888646523037253560, 0.888623592286406970, 0.888600659314001340, 0.888577724120094060, 0.888554786704742530, 0.888531847068004030, 0.888508905209935420, 0.888485961130594970, +0.888463014830039750, 0.888440066308326840, 0.888417115565513840, 0.888394162601658040, 0.888371207416816850, 0.888348250011047560, 0.888325290384407330, 0.888302328536954230, +0.888279364468745340, 0.888256398179838040, 0.888233429670289730, 0.888210458940157930, 0.888187485989499810, 0.888164510818372670, 0.888141533426834660, 0.888118553814942870, +0.888095571982754570, 0.888072587930327510, 0.888049601657718850, 0.888026613164986210, 0.888003622452187000, 0.887980629519378390, 0.887957634366618560, 0.887934636993964690, +0.887911637401474270, 0.887888635589204720, 0.887865631557213540, 0.887842625305558240, 0.887819616834296440, 0.887796606143485210, 0.887773593233182940, 0.887750578103446600, +0.887727560754333790, 0.887704541185902140, 0.887681519398209050, 0.887658495391312250, 0.887635469165268810, 0.887612440720137010, 0.887589410055974140, 0.887566377172837820, +0.887543342070785450, 0.887520304749874870, 0.887497265210163370, 0.887474223451708790, 0.887451179474568310, 0.887428133278800100, 0.887405084864461680, 0.887382034231610550, +0.887358981380304330, 0.887335926310600650, 0.887312869022557240, 0.887289809516231150, 0.887266747791680910, 0.887243683848963900, 0.887220617688137540, 0.887197549309259760, +0.887174478712388080, 0.887151405897580240, 0.887128330864893840, 0.887105253614386190, 0.887082174146115790, 0.887059092460140030, 0.887036008556516540, 0.887012922435302940, +0.886989834096557180, 0.886966743540336670, 0.886943650766699450, 0.886920555775702610, 0.886897458567404760, 0.886874359141863300, 0.886851257499135960, 0.886828153639280470, +0.886805047562354680, 0.886781939268416090, 0.886758828757522320, 0.886735716029732000, 0.886712601085102300, 0.886689483923691070, 0.886666364545556140, 0.886643242950755360, +0.886620119139346350, 0.886596993111387180, 0.886573864866935010, 0.886550734406048590, 0.886527601728785420, 0.886504466835203230, 0.886481329725359870, 0.886458190399313170, +0.886435048857120990, 0.886411905098841160, 0.886388759124531190, 0.886365610934249700, 0.886342460528054210, 0.886319307906002550, 0.886296153068152680, 0.886272996014562440, +0.886249836745289680, 0.886226675260391890, 0.886203511559927830, 0.886180345643954980, 0.886157177512531200, 0.886134007165714550, 0.886110834603562990, 0.886087659826134240, +0.886064482833486270, 0.886041303625676790, 0.886018122202764440, 0.885994938564806710, 0.885971752711861790, 0.885948564643987300, 0.885925374361241520, 0.885902181863682300, +0.885878987151367260, 0.885855790224355010, 0.885832591082703400, 0.885809389726470280, 0.885786186155713700, 0.885762980370491610, 0.885739772370862100, 0.885716562156883210, +0.885693349728612470, 0.885670135086108700, 0.885646918229429650, 0.885623699158633370, 0.885600477873777710, 0.885577254374920960, 0.885554028662121070, 0.885530800735436000, +0.885507570594923690, 0.885484338240642770, 0.885461103672650960, 0.885437866891006450, 0.885414627895767190, 0.885391386686991470, 0.885368143264737230, 0.885344897629062210, +0.885321649780025480, 0.885298399717684430, 0.885275147442097570, 0.885251892953322740, 0.885228636251418120, 0.885205377336442000, 0.885182116208452440, 0.885158852867507170, +0.885135587313665150, 0.885112319546984220, 0.885089049567522430, 0.885065777375337980, 0.885042502970489140, 0.885019226353034090, 0.884995947523030900, 0.884972666480537410, +0.884949383225612780, 0.884926097758314660, 0.884902810078701200, 0.884879520186830800, 0.884856228082761540, 0.884832933766551810, 0.884809637238259230, 0.884786338497942970, +0.884763037545660990, 0.884739734381471240, 0.884716429005432350, 0.884693121417602260, 0.884669811618039370, 0.884646499606801970, 0.884623185383947910, 0.884599868949536350, +0.884576550303625030, 0.884553229446272350, 0.884529906377536700, 0.884506581097476150, 0.884483253606149210, 0.884459923903613720, 0.884436591989928860, 0.884413257865152460, +0.884389921529342930, 0.884366582982558660, 0.884343242224857830, 0.884319899256298950, 0.884296554076940410, 0.884273206686839950, 0.884249857086056860, 0.884226505274649190, +0.884203151252675350, 0.884179795020193500, 0.884156436577262170, 0.884133075923939860, 0.884109713060284740, 0.884086347986354990, 0.884062980702209790, 0.884039611207907080, +0.884016239503505390, 0.883992865589063090, 0.883969489464638600, 0.883946111130290420, 0.883922730586076510, 0.883899347832056260, 0.883875962868287510, 0.883852575694829000, +0.883829186311739010, 0.883805794719075940, 0.883782400916898530, 0.883759004905265040, 0.883735606684233680, 0.883712206253863710, 0.883688803614213200, 0.883665398765340670, +0.883641991707304620, 0.883618582440163670, 0.883595170963976220, 0.883571757278800440, 0.883548341384695620, 0.883524923281720050, 0.883501502969932130, 0.883478080449390470, +0.883454655720153580, 0.883431228782279980, 0.883407799635828380, 0.883384368280856870, 0.883360934717424940, 0.883337498945590550, 0.883314060965412430, 0.883290620776949200, +0.883267178380259370, 0.883243733775401660, 0.883220286962434600, 0.883196837941416350, 0.883173386712406530, 0.883149933275463090, 0.883126477630644890, 0.883103019778010530, +0.883079559717618650, 0.883056097449527840, 0.883032632973796310, 0.883009166290483650, 0.882985697399648050, 0.882962226301348240, 0.882938752995642840, 0.882915277482590580, +0.882891799762250180, 0.882868319834680170, 0.882844837699939040, 0.882821353358086200, 0.882797866809179930, 0.882774378053279070, 0.882750887090442250, 0.882727393920728190, +0.882703898544195620, 0.882680400960903280, 0.882656901170909670, 0.882633399174274080, 0.882609894971055020, 0.882586388561311220, 0.882562879945101520, 0.882539369122484540, +0.882515856093519240, 0.882492340858263780, 0.882468823416777900, 0.882445303769120000, 0.882421781915348810, 0.882398257855523170, 0.882374731589701920, 0.882351203117943790, +0.882327672440307630, 0.882304139556851940, 0.882280604467636340, 0.882257067172719120, 0.882233527672159350, 0.882209985966015740, 0.882186442054347150, 0.882162895937212420, +0.882139347614670060, 0.882115797086779670, 0.882092244353599900, 0.882068689415189460, 0.882045132271607300, 0.882021572922912390, 0.881998011369163450, 0.881974447610419540, +0.881950881646739070, 0.881927313478181870, 0.881903743104806240, 0.881880170526671340, 0.881856595743836010, 0.881833018756359220, 0.881809439564299910, 0.881785858167716930, +0.881762274566668890, 0.881738688761215640, 0.881715100751415680, 0.881691510537327860, 0.881667918119011350, 0.881644323496525000, 0.881620726669927860, 0.881597127639278550, +0.881573526404636710, 0.881549922966061160, 0.881526317323610750, 0.881502709477344550, 0.881479099427321610, 0.881455487173600890, 0.881431872716241460, 0.881408256055301930, +0.881384637190842150, 0.881361016122920840, 0.881337392851596960, 0.881313767376929570, 0.881290139698977850, 0.881266509817800750, 0.881242877733457330, 0.881219243446006330, +0.881195606955507580, 0.881171968262019820, 0.881148327365602220, 0.881124684266313740, 0.881101038964213660, 0.881077391459360810, 0.881053741751814170, 0.881030089841633560, +0.881006435728877710, 0.880982779413605810, 0.880959120895877020, 0.880935460175750310, 0.880911797253285060, 0.880888132128540220, 0.880864464801574650, 0.880840795272448410, +0.880817123541220100, 0.880793449607949030, 0.880769773472694250, 0.880746095135515160, 0.880722414596470720, 0.880698731855619870, 0.880675046913022670, 0.880651359768737760, +0.880627670422824530, 0.880603978875342030, 0.880580285126349670, 0.880556589175906620, 0.880532891024072060, 0.880509190670904830, 0.880485488116464990, 0.880461783360811490, +0.880438076404003510, 0.880414367246100450, 0.880390655887161370, 0.880366942327245660, 0.880343226566412620, 0.880319508604721080, 0.880295788442231110, 0.880272066079001770, +0.880248341515092240, 0.880224614750561910, 0.880200885785469960, 0.880177154619875780, 0.880153421253838330, 0.880129685687417780, 0.880105947920672980, 0.880082207953663430, +0.880058465786448200, 0.880034721419086900, 0.880010974851638710, 0.879987226084163130, 0.879963475116719020, 0.879939721949366760, 0.879915966582165090, 0.879892209015173510, +0.879868449248451530, 0.879844687282058340, 0.879820923116053420, 0.879797156750496190, 0.879773388185445590, 0.879749617420962030, 0.879725844457104440, 0.879702069293932130, +0.879678291931504820, 0.879654512369881680, 0.879630730609122220, 0.879606946649285510, 0.879583160490431950, 0.879559372132620480, 0.879535581575910500, 0.879511788820361630, +0.879487993866033270, 0.879464196712984920, 0.879440397361275990, 0.879416595810965760, 0.879392792062114400, 0.879368986114781090, 0.879345177969025340, 0.879321367624906650, +0.879297555082484530, 0.879273740341818490, 0.879249923402967700, 0.879226104265992570, 0.879202282930952150, 0.879178459397905950, 0.879154633666913710, 0.879130805738034820, +0.879106975611328890, 0.879083143286855550, 0.879059308764673970, 0.879035472044844560, 0.879011633127426360, 0.878987792012479120, 0.878963948700062450, 0.878940103190235860, +0.878916255483059070, 0.878892405578591610, 0.878868553476892630, 0.878844699178022770, 0.878820842682041190, 0.878796983989007520, 0.878773123098981370, 0.878749260012022360, +0.878725394728190220, 0.878701527247544130, 0.878677657570144710, 0.878653785696051130, 0.878629911625323110, 0.878606035358020290, 0.878582156894202380, 0.878558276233929010, +0.878534393377260030, 0.878510508324254700, 0.878486621074973440, 0.878462731629475630, 0.878438839987821020, 0.878414946150069320, 0.878391050116280160, 0.878367151886513490, +0.878343251460828920, 0.878319348839285750, 0.878295444021944590, 0.878271537008864960, 0.878247627800106350, 0.878223716395728720, 0.878199802795791800, 0.878175887000355430, +0.878151969009478890, 0.878128048823222820, 0.878104126441646700, 0.878080201864810170, 0.878056275092773180, 0.878032346125595440, 0.878008414963336930, 0.877984481606057350, +0.877960546053816130, 0.877936608306673970, 0.877912668364690290, 0.877888726227925020, 0.877864781896437800, 0.877840835370288670, 0.877816886649537500, 0.877792935734243660, +0.877768982624467900, 0.877745027320269710, 0.877721069821708940, 0.877697110128845550, 0.877673148241739250, 0.877649184160450120, 0.877625217885038110, 0.877601249415562610, +0.877577278752084360, 0.877553305894662960, 0.877529330843358270, 0.877505353598230230, 0.877481374159338800, 0.877457392526744040, 0.877433408700505680, 0.877409422680683450, +0.877385434467338080, 0.877361444060529070, 0.877337451460316500, 0.877313456666760310, 0.877289459679920450, 0.877265460499856990, 0.877241459126629320, 0.877217455560298510, +0.877193449800924060, 0.877169441848566040, 0.877145431703284410, 0.877121419365139100, 0.877097404834190300, 0.877073388110498060, 0.877049369194121800, 0.877025348085122670, +0.877001324783560080, 0.876977299289494190, 0.876953271602985080, 0.876929241724092810, 0.876905209652877330, 0.876881175389398470, 0.876857138933717200, 0.876833100285892900, +0.876809059445985970, 0.876785016414056370, 0.876760971190164160, 0.876736923774369630, 0.876712874166732710, 0.876688822367313160, 0.876664768376172020, 0.876640712193369030, +0.876616653818964140, 0.876592593253017750, 0.876568530495589690, 0.876544465546740480, 0.876520398406530070, 0.876496329075018180, 0.876472257552265880, 0.876448183838333010, +0.876424107933279630, 0.876400029837166030, 0.876375949550052380, 0.876351867071998750, 0.876327782403065080, 0.876303695543312440, 0.876279606492800460, 0.876255515251589510, +0.876231421819739790, 0.876207326197311450, 0.876183228384364800, 0.876159128380960220, 0.876135026187157220, 0.876110921803017200, 0.876086815228599770, 0.876062706463965330, +0.876038595509174180, 0.876014482364286580, 0.875990367029362730, 0.875966249504462890, 0.875942129789647030, 0.875918007884976310, 0.875893883790510590, 0.875869757506310130, +0.875845629032435240, 0.875821498368946290, 0.875797365515903700, 0.875773230473367190, 0.875749093241398050, 0.875724953820056110, 0.875700812209401770, 0.875676668409495540, +0.875652522420397480, 0.875628374242168220, 0.875604223874868030, 0.875580071318556860, 0.875555916573295900, 0.875531759639145090, 0.875507600516164940, 0.875483439204415850, +0.875459275703958100, 0.875435110014852190, 0.875410942137157980, 0.875386772070936960, 0.875362599816248980, 0.875338425373154540, 0.875314248741713930, 0.875290069921987770, +0.875265888914036450, 0.875241705717920370, 0.875217520333699590, 0.875193332761435410, 0.875169143001187980, 0.875144951053017710, 0.875120756916984990, 0.875096560593150330, +0.875072362081574350, 0.875048161382317450, 0.875023958495439680, 0.874999753421002560, 0.874975546159065920, 0.874951336709690500, 0.874927125072936680, 0.874902911248865100, +0.874878695237536250, 0.874854477039010200, 0.874830256653348350, 0.874806034080610970, 0.874781809320858360, 0.874757582374151350, 0.874733353240550350, 0.874709121920115960, +0.874684888412908700, 0.874660652718988850, 0.874636414838417810, 0.874612174771255750, 0.874587932517563280, 0.874563688077400920, 0.874539441450829290, 0.874515192637909110, +0.874490941638701000, 0.874466688453265030, 0.874442433081662810, 0.874418175523954510, 0.874393915780200760, 0.874369653850462170, 0.874345389734799580, 0.874321123433273390, +0.874296854945944000, 0.874272584272872910, 0.874248311414120290, 0.874224036369746990, 0.874199759139813630, 0.874175479724380810, 0.874151198123509280, 0.874126914337259750, +0.874102628365692520, 0.874078340208869100, 0.874054049866849870, 0.874029757339695570, 0.874005462627466810, 0.873981165730224440, 0.873956866648029180, 0.873932565380941220, +0.873908261929022380, 0.873883956292332840, 0.873859648470933340, 0.873835338464884810, 0.873811026274247890, 0.873786711899083410, 0.873762395339452210, 0.873738076595414580, +0.873713755667032130, 0.873689432554365260, 0.873665107257474930, 0.873640779776421740, 0.873616450111266650, 0.873592118262070390, 0.873567784228893920, 0.873543448011797510, +0.873519109610842890, 0.873494769026090470, 0.873470426257601180, 0.873446081305435880, 0.873421734169655290, 0.873397384850320370, 0.873373033347491500, 0.873348679661230640, +0.873324323791597970, 0.873299965738654540, 0.873275605502461080, 0.873251243083078780, 0.873226878480568240, 0.873202511694990520, 0.873178142726406150, 0.873153771574876840, +0.873129398240463090, 0.873105022723225880, 0.873080645023226020, 0.873056265140524590, 0.873031883075182540, 0.873007498827260810, 0.872983112396819800, 0.872958723783921480, +0.872934332988626330, 0.872909940010995420, 0.872885544851089600, 0.872861147508969930, 0.872836747984697460, 0.872812346278332600, 0.872787942389937290, 0.872763536319572150, +0.872739128067298250, 0.872714717633176430, 0.872690305017267850, 0.872665890219633480, 0.872641473240334480, 0.872617054079431240, 0.872592632736985950, 0.872568209213059000, +0.872543783507711450, 0.872519355621004580, 0.872494925552999230, 0.872470493303756590, 0.872446058873337260, 0.872421622261803200, 0.872397183469215130, 0.872372742495634120, +0.872348299341121240, 0.872323854005737530, 0.872299406489544290, 0.872274956792602470, 0.872250504914972910, 0.872226050856717450, 0.872201594617896810, 0.872177136198572290, +0.872152675598804940, 0.872128212818655820, 0.872103747858186230, 0.872079280717457220, 0.872054811396529630, 0.872030339895465410, 0.872005866214325300, 0.871981390353170570, +0.871956912312062400, 0.871932432091061860, 0.871907949690230330, 0.871883465109628440, 0.871858978349318360, 0.871834489409360810, 0.871809998289816980, 0.871785504990748250, +0.871761009512215690, 0.871736511854280690, 0.871712012017004320, 0.871687510000447530, 0.871663005804672380, 0.871638499429739700, 0.871613990875710900, 0.871589480142646920, +0.871564967230609390, 0.871540452139659360, 0.871515934869858230, 0.871491415421266850, 0.871466893793947370, 0.871442369987960650, 0.871417844003367970, 0.871393315840230720, +0.871368785498610190, 0.871344252978567660, 0.871319718280164080, 0.871295181403461630, 0.871270642348521250, 0.871246101115404240, 0.871221557704171980, 0.871197012114885870, +0.871172464347607200, 0.871147914402397360, 0.871123362279317300, 0.871098807978429200, 0.871074251499794230, 0.871049692843473560, 0.871025132009528580, 0.871000568998020810, +0.870976003809011750, 0.870951436442562120, 0.870926866898734330, 0.870902295177589440, 0.870877721279188720, 0.870853145203593800, 0.870828566950865970, 0.870803986521066720, +0.870779403914257450, 0.870754819130499350, 0.870730232169854570, 0.870705643032384180, 0.870681051718149690, 0.870656458227212600, 0.870631862559634430, 0.870607264715476560, +0.870582664694800500, 0.870558062497667320, 0.870533458124139510, 0.870508851574277930, 0.870484242848144300, 0.870459631945800120, 0.870435018867306790, 0.870410403612725920, +0.870385786182118590, 0.870361166575547300, 0.870336544793072990, 0.870311920834757390, 0.870287294700661910, 0.870262666390848260, 0.870238035905377960, 0.870213403244312510, +0.870188768407713200, 0.870164131395642300, 0.870139492208161110, 0.870114850845331240, 0.870090207307214200, 0.870065561593871720, 0.870040913705365180, 0.870016263641756100, +0.869991611403106660, 0.869966956989478240, 0.869942300400932460, 0.869917641637530940, 0.869892980699335180, 0.869868317586407150, 0.869843652298808220, 0.869818984836599700, +0.869794315199844180, 0.869769643388602850, 0.869744969402937550, 0.869720293242909670, 0.869695614908581160, 0.869670934400013530, 0.869646251717268610, 0.869621566860407590, +0.869596879829493190, 0.869572190624586460, 0.869547499245749370, 0.869522805693043410, 0.869498109966530540, 0.869473412066272380, 0.869448711992330200, 0.869424009744766750, +0.869399305323643180, 0.869374598729021450, 0.869349889960963180, 0.869325179019530100, 0.869300465904784160, 0.869275750616787080, 0.869251033155600150, 0.869226313521286100, +0.869201591713906210, 0.869176867733522430, 0.869152141580196380, 0.869127413253990010, 0.869102682754965160, 0.869077950083183560, 0.869053215238706710, 0.869028478221597120, +0.869003739031916410, 0.868978997669726420, 0.868954254135088870, 0.868929508428065710, 0.868904760548718790, 0.868880010497109500, 0.868855258273300570, 0.868830503877353610, +0.868805747309330250, 0.868780988569292640, 0.868756227657302540, 0.868731464573421870, 0.868706699317712490, 0.868681931890236010, 0.868657162291055050, 0.868632390520231220, +0.868607616577826370, 0.868582840463902550, 0.868558062178521610, 0.868533281721745490, 0.868508499093635700, 0.868483714294255190, 0.868458927323665360, 0.868434138181928270, +0.868409346869105760, 0.868384553385259880, 0.868359757730452600, 0.868334959904745960, 0.868310159908201480, 0.868285357740882000, 0.868260553402849130, 0.868235746894164940, +0.868210938214891370, 0.868186127365090490, 0.868161314344824240, 0.868136499154154690, 0.868111681793143460, 0.868086862261853500, 0.868062040560346300, 0.868037216688684050, +0.868012390646928810, 0.867987562435142520, 0.867962732053387360, 0.867937899501724950, 0.867913064780218240, 0.867888227888928830, 0.867863388827918800, 0.867838547597250320, +0.867813704196985560, 0.867788858627186470, 0.867764010887915220, 0.867739160979233540, 0.867714308901204380, 0.867689454653889470, 0.867664598237350980, 0.867639739651650870, +0.867614878896851520, 0.867590015973014880, 0.867565150880203250, 0.867540283618478240, 0.867515414187903120, 0.867490542588539300, 0.867465668820449180, 0.867440792883694910, +0.867415914778338680, 0.867391034504442550, 0.867366152062068460, 0.867341267451279490, 0.867316380672137340, 0.867291491724704100, 0.867266600609042260, 0.867241707325213880, +0.867216811873281260, 0.867191914253306660, 0.867167014465351720, 0.867142112509479700, 0.867117208385752460, 0.867092302094232160, 0.867067393634981200, 0.867042483008061640, +0.867017570213535870, 0.866992655251465740, 0.866967738121914520, 0.866942818824943840, 0.866917897360616200, 0.866892973728993770, 0.866868047930138830, 0.866843119964113900, +0.866818189830981130, 0.866793257530802390, 0.866768323063641040, 0.866743386429558840, 0.866718447628618160, 0.866693506660881300, 0.866668563526410750, 0.866643618225268810, +0.866618670757517750, 0.866593721123219640, 0.866568769322437650, 0.866543815355233730, 0.866518859221670270, 0.866493900921809670, 0.866468940455714320, 0.866443977823446620, +0.866419013025068520, 0.866394046060643410, 0.866369076930233130, 0.866344105633900070, 0.866319132171706860, 0.866294156543715780, 0.866269178749989320, 0.866244198790589890, +0.866219216665579550, 0.866194232375021580, 0.866169245918978040, 0.866144257297511430, 0.866119266510684160, 0.866094273558558610, 0.866069278441197520, 0.866044281158663170, +0.866019281711017720, 0.865994280098324460, 0.865969276320645580, 0.865944270378043450, 0.865919262270580580, 0.865894251998319600, 0.865869239561323000, 0.865844224959652850, +0.865819208193372660, 0.865794189262544370, 0.865769168167230600, 0.865744144907493960, 0.865719119483396970, 0.865694091895002130, 0.865669062142372050, 0.865644030225568910, +0.865618996144656090, 0.865593959899695900, 0.865568921490750710, 0.865543880917883150, 0.865518838181156050, 0.865493793280631700, 0.865468746216372490, 0.865443696988441920, +0.865418645596902070, 0.865393592041815540, 0.865368536323245170, 0.865343478441253370, 0.865318418395902840, 0.865293356187256220, 0.865268291815375900, 0.865243225280325270, +0.865218156582166500, 0.865193085720962430, 0.865168012696775570, 0.865142937509668750, 0.865117860159704600, 0.865092780646945720, 0.865067698971454410, 0.865042615133294390, +0.865017529132527830, 0.864992440969217460, 0.864967350643425890, 0.864942258155215970, 0.864917163504650530, 0.864892066691791640, 0.864866967716703020, 0.864841866579446950, +0.864816763280086280, 0.864791657818683720, 0.864766550195301910, 0.864741440410003780, 0.864716328462852070, 0.864691214353909170, 0.864666098083238580, 0.864640979650902700, +0.864615859056964480, 0.864590736301486530, 0.864565611384531810, 0.864540484306163040, 0.864515355066443060, 0.864490223665434150, 0.864465090103200270, 0.864439954379803590, +0.864414816495307050, 0.864389676449773490, 0.864364534243265650, 0.864339389875846580, 0.864314243347578560, 0.864289094658525330, 0.864263943808749380, 0.864238790798313560, +0.864213635627280820, 0.864188478295713990, 0.864163318803675920, 0.864138157151229550, 0.864112993338437390, 0.864087827365363160, 0.864062659232069370, 0.864037488938618870, +0.864012316485074710, 0.863987141871499830, 0.863961965097956970, 0.863936786164508860, 0.863911605071219110, 0.863886421818150450, 0.863861236405365720, 0.863836048832927860, +0.863810859100899940, 0.863785667209344800, 0.863760473158325490, 0.863735276947904640, 0.863710078578145970, 0.863684878049112090, 0.863659675360866070, 0.863634470513470860, +0.863609263506989410, 0.863584054341484890, 0.863558843017020130, 0.863533629533657860, 0.863508413891462050, 0.863483196090495060, 0.863457976130820200, 0.863432754012500300, +0.863407529735598640, 0.863382303300178070, 0.863357074706301300, 0.863331843954032290, 0.863306611043433650, 0.863281375974568550, 0.863256138747499960, 0.863230899362291030, +0.863205657819004930, 0.863180414117704630, 0.863155168258452840, 0.863129920241313520, 0.863104670066349500, 0.863079417733623730, 0.863054163243199390, 0.863028906595139760, +0.863003647789507780, 0.862978386826366290, 0.862953123705779260, 0.862927858427809390, 0.862902590992519870, 0.862877321399973860, 0.862852049650234540, 0.862826775743365190, +0.862801499679428870, 0.862776221458488310, 0.862750941080607680, 0.862725658545849710, 0.862700373854277560, 0.862675087005954410, 0.862649798000943660, 0.862624506839308360, +0.862599213521111800, 0.862573918046416810, 0.862548620415287350, 0.862523320627786470, 0.862498018683977240, 0.862472714583922940, 0.862447408327686850, 0.862422099915332250, +0.862396789346921990, 0.862371476622520230, 0.862346161742189700, 0.862320844705993790, 0.862295525513995800, 0.862270204166258880, 0.862244880662846550, 0.862219555003822080, +0.862194227189248210, 0.862168897219189210, 0.862143565093707930, 0.862118230812867760, 0.862092894376732090, 0.862067555785364090, 0.862042215038827280, 0.862016872137184920, +0.861991527080499860, 0.861966179868836500, 0.861940830502257670, 0.861915478980826770, 0.861890125304607070, 0.861864769473662200, 0.861839411488055320, 0.861814051347849500, +0.861788689053109010, 0.861763324603896820, 0.861737958000276310, 0.861712589242310870, 0.861687218330063900, 0.861661845263599010, 0.861636470042979500, 0.861611092668268300, +0.861585713139529810, 0.861560331456827090, 0.861534947620223530, 0.861509561629782540, 0.861484173485567720, 0.861458783187642460, 0.861433390736069730, 0.861407996130914010, +0.861382599372238270, 0.861357200460106110, 0.861331799394580930, 0.861306396175726240, 0.861280990803605540, 0.861255583278282330, 0.861230173599819790, 0.861204761768282200, +0.861179347783732730, 0.861153931646234880, 0.861128513355852280, 0.861103092912648300, 0.861077670316686690, 0.861052245568030840, 0.861026818666743910, 0.861001389612890410, +0.860975958406533400, 0.860950525047736500, 0.860925089536563330, 0.860899651873077380, 0.860874212057342380, 0.860848770089421400, 0.860823325969378830, 0.860797879697278060, +0.860772431273182480, 0.860746980697155940, 0.860721527969261930, 0.860696073089563970, 0.860670616058126000, 0.860645156875010970, 0.860619695540283500, 0.860594232054006760, +0.860568766416244470, 0.860543298627060250, 0.860517828686517830, 0.860492356594680820, 0.860466882351612840, 0.860441405957377280, 0.860415927412038650, 0.860390446715660230, +0.860364963868305630, 0.860339478870038700, 0.860313991720923040, 0.860288502421022280, 0.860263010970399920, 0.860237517369120570, 0.860212021617247300, 0.860186523714844050, +0.860161023661974440, 0.860135521458702310, 0.860110017105091270, 0.860084510601205390, 0.860059001947107600, 0.860033491142862760, 0.860007978188534360, 0.859982463084185910, +0.859956945829881250, 0.859931426425684320, 0.859905904871658740, 0.859880381167868020, 0.859854855314376780, 0.859829327311248390, 0.859803797158546710, 0.859778264856335460, +0.859752730404678590, 0.859727193803639930, 0.859701655053283220, 0.859676114153671960, 0.859650571104870860, 0.859625025906943340, 0.859599478559953330, 0.859573929063964460, +0.859548377419040890, 0.859522823625246350, 0.859497267682644780, 0.859471709591299480, 0.859446149351275500, 0.859420586962636010, 0.859395022425445190, 0.859369455739766750, +0.859343886905664660, 0.859318315923202850, 0.859292742792444830, 0.859267167513455330, 0.859241590086297970, 0.859216010511036690, 0.859190428787735330, 0.859164844916457840, +0.859139258897268280, 0.859113670730230710, 0.859088080415408300, 0.859062487952866220, 0.859036893342667970, 0.859011296584877400, 0.858985697679558680, 0.858960096626775640, +0.858934493426592450, 0.858908888079072950, 0.858883280584280760, 0.858857670942280940, 0.858832059153136760, 0.858806445216912630, 0.858780829133672260, 0.858755210903479840, +0.858729590526399410, 0.858703968002494490, 0.858678343331830240, 0.858652716514469950, 0.858627087550478010, 0.858601456439918360, 0.858575823182854970, 0.858550187779352100, +0.858524550229473720, 0.858498910533283530, 0.858473268690846500, 0.858447624702226350, 0.858421978567487030, 0.858396330286692820, 0.858370679859907890, 0.858345027287196080, +0.858319372568621340, 0.858293715704248620, 0.858268056694141630, 0.858242395538364460, 0.858216732236981360, 0.858191066790056410, 0.858165399197653780, 0.858139729459837630, +0.858114057576671700, 0.858088383548221150, 0.858062707374549590, 0.858037029055721210, 0.858011348591800390, 0.857985665982851090, 0.857959981228937680, 0.857934294330124250, +0.857908605286474720, 0.857882914098054060, 0.857857220764926100, 0.857831525287155120, 0.857805827664805400, 0.857780127897941000, 0.857754425986626320, 0.857728721930925090, +0.857703015730902570, 0.857677307386622510, 0.857651596898149180, 0.857625884265546870, 0.857600169488879850, 0.857574452568212300, 0.857548733503608720, 0.857523012295132840, +0.857497288942849820, 0.857471563446823630, 0.857445835807118530, 0.857420106023798920, 0.857394374096928980, 0.857368640026573090, 0.857342903812795540, 0.857317165455660390, +0.857291424955232690, 0.857265682311576520, 0.857239937524756020, 0.857214190594835830, 0.857188441521880010, 0.857162690305953160, 0.857136936947119120, 0.857111181445443290, +0.857085423800989400, 0.857059664013821940, 0.857033902084005430, 0.857008138011604030, 0.856982371796682350, 0.856956603439304800, 0.856930832939535200, 0.856905060297438960, +0.856879285513080120, 0.856853508586522980, 0.856827729517832150, 0.856801948307072010, 0.856776164954306970, 0.856750379459601090, 0.856724591823019740, 0.856698802044626780, +0.856673010124486930, 0.856647216062664580, 0.856621419859224130, 0.856595621514230080, 0.856569821027747040, 0.856544018399839070, 0.856518213630571350, 0.856492406720008260, +0.856466597668213980, 0.856440786475253350, 0.856414973141190640, 0.856389157666090580, 0.856363340050017570, 0.856337520293035780, 0.856311698395210710, 0.856285874356606300, +0.856260048177287290, 0.856234219857318070, 0.856208389396763360, 0.856182556795687670, 0.856156722054155160, 0.856130885172231240, 0.856105046149980060, 0.856079204987466370, +0.856053361684754650, 0.856027516241909540, 0.856001668658995520, 0.855975818936077440, 0.855949967073219350, 0.855924113070486770, 0.855898256927943970, 0.855872398645655450, +0.855846538223685950, 0.855820675662100180, 0.855794810960962660, 0.855768944120338100, 0.855743075140290690, 0.855717204020886140, 0.855691330762188510, 0.855665455364262640, +0.855639577827173040, 0.855613698150984540, 0.855587816335761750, 0.855561932381568970, 0.855536046288471910, 0.855510158056534630, 0.855484267685821980, 0.855458375176398670, +0.855432480528329430, 0.855406583741678990, 0.855380684816512080, 0.855354783752893090, 0.855328880550887400, 0.855302975210559650, 0.855277067731974430, 0.855251158115196590, +0.855225246360290850, 0.855199332467321940, 0.855173416436354250, 0.855147498267453510, 0.855121577960684000, 0.855095655516110550, 0.855069730933797900, 0.855043804213810990, +0.855017875356214540, 0.854991944361073510, 0.854966011228452060, 0.854940075958416030, 0.854914138551029820, 0.854888199006358260, 0.854862257324466300, 0.854836313505418550, +0.854810367549280080, 0.854784419456115720, 0.854758469225989860, 0.854732516858968230, 0.854706562355115330, 0.854680605714496000, 0.854654646937175190, 0.854628686023217840, +0.854602722972688690, 0.854576757785652230, 0.854550790462174410, 0.854524821002319630, 0.854498849406152730, 0.854472875673738750, 0.854446899805142550, 0.854420921800429060, +0.854394941659663340, 0.854368959382909800, 0.854342974970234260, 0.854316988421701340, 0.854290999737375990, 0.854265008917323150, 0.854239015961607670, 0.854213020870294710, +0.854187023643448780, 0.854161024281135720, 0.854135022783420020, 0.854109019150366850, 0.854083013382041180, 0.854057005478507820, 0.854030995439832070, 0.854004983266078880, +0.853978968957312620, 0.853952952513599480, 0.853926933935003960, 0.853900913221591120, 0.853874890373426010, 0.853848865390573590, 0.853822838273099020, 0.853796809021067470, +0.853770777634543340, 0.853744744113592690, 0.853718708458280240, 0.853692670668671050, 0.853666630744830180, 0.853640588686822690, 0.853614544494713750, 0.853588498168567970, +0.853562449708451410, 0.853536399114428690, 0.853510346386565090, 0.853484291524925550, 0.853458234529575250, 0.853432175400579360, 0.853406114138003160, 0.853380050741911030, +0.853353985212369380, 0.853327917549442700, 0.853301847753196290, 0.853275775823695180, 0.853249701761004680, 0.853223625565189820, 0.853197547236316020, 0.853171466774447880, +0.853145384179651470, 0.853119299451991610, 0.853093212591533590, 0.853067123598342470, 0.853041032472483530, 0.853014939214022050, 0.852988843823022760, 0.852962746299551820, +0.852936646643673970, 0.852910544855454590, 0.852884440934958740, 0.852858334882251820, 0.852832226697399110, 0.852806116380465770, 0.852780003931516760, 0.852753889350618130, +0.852727772637834840, 0.852701653793232040, 0.852675532816875140, 0.852649409708829410, 0.852623284469160250, 0.852597157097932270, 0.852571027595211970, 0.852544895961063980, +0.852518762195553890, 0.852492626298746780, 0.852466488270708140, 0.852440348111503270, 0.852414205821197650, 0.852388061399855900, 0.852361914847544530, 0.852335766164328380, +0.852309615350272720, 0.852283462405443170, 0.852257307329904900, 0.852231150123723300, 0.852204990786963880, 0.852178829319691580, 0.852152665721972570, 0.852126499993871910, +0.852100332135455000, 0.852074162146787330, 0.852047990027934190, 0.852021815778961080, 0.851995639399932950, 0.851969460890916300, 0.851943280251975850, 0.851917097483177340, +0.851890912584585940, 0.851864725556267350, 0.851838536398286990, 0.851812345110710250, 0.851786151693602060, 0.851759956147029150, 0.851733758471056150, 0.851707558665748880, +0.851681356731172730, 0.851655152667393220, 0.851628946474475730, 0.851602738152485880, 0.851576527701488730, 0.851550315121550770, 0.851524100412736960, 0.851497883575113020, +0.851471664608744240, 0.851445443513696330, 0.851419220290034810, 0.851392994937824830, 0.851366767457132800, 0.851340537848023770, 0.851314306110563470, 0.851288072244817400, +0.851261836250851170, 0.851235598128730400, 0.851209357878520480, 0.851183115500286800, 0.851156870994095870, 0.851130624360012630, 0.851104375598102810, 0.851078124708432140, +0.851051871691066220, 0.851025616546070450, 0.850999359273510340, 0.850973099873452150, 0.850946838345961300, 0.850920574691103380, 0.850894308908944020, 0.850868040999548820, +0.850841770962983520, 0.850815498799313840, 0.850789224508604840, 0.850762948090923340, 0.850736669546334530, 0.850710388874903910, 0.850684106076697420, 0.850657821151780680, +0.850631534100219300, 0.850605244922079120, 0.850578953617425300, 0.850552660186324690, 0.850526364628842350, 0.850500066945044100, 0.850473767134995780, 0.850447465198762910, +0.850421161136411420, 0.850394854948006600, 0.850368546633615050, 0.850342236193302180, 0.850315923627133710, 0.850289608935175470, 0.850263292117493190, 0.850236973174152590, +0.850210652105219620, 0.850184328910759570, 0.850158003590839150, 0.850131676145523760, 0.850105346574879130, 0.850079014878971080, 0.850052681057865580, 0.850026345111628330, +0.850000007040325300, 0.849973666844021760, 0.849947324522784430, 0.849920980076678930, 0.849894633505770880, 0.849868284810126220, 0.849841933989810890, 0.849815581044890740, +0.849789225975431160, 0.849762868781498980, 0.849736509463159590, 0.849710148020479060, 0.849683784453522990, 0.849657418762357560, 0.849631050947048600, 0.849604681007661950, +0.849578308944263120, 0.849551934756919040, 0.849525558445695110, 0.849499180010657270, 0.849472799451871490, 0.849446416769403800, 0.849420031963319940, 0.849393645033685530, +0.849367255980567610, 0.849340864804031370, 0.849314471504143080, 0.849288076080968570, 0.849261678534573900, 0.849235278865025030, 0.849208877072388010, 0.849182473156728230, +0.849156067118112760, 0.849129658956607190, 0.849103248672277380, 0.849076836265189480, 0.849050421735409570, 0.849024005083003570, 0.848997586308037460, 0.848971165410577040, +0.848944742390689070, 0.848918317248439360, 0.848891889983893750, 0.848865460597118540, 0.848839029088179540, 0.848812595457143050, 0.848786159704074560, 0.848759721829041140, +0.848733281832108500, 0.848706839713342600, 0.848680395472809490, 0.848653949110575570, 0.848627500626706670, 0.848601050021269070, 0.848574597294328380, 0.848548142445951560, +0.848521685476204550, 0.848495226385153180, 0.848468765172863850, 0.848442301839402500, 0.848415836384835530, 0.848389368809228880, 0.848362899112648390, 0.848336427295161010, +0.848309953356832680, 0.848283477297729460, 0.848256999117917520, 0.848230518817463030, 0.848204036396432380, 0.848177551854891080, 0.848151065192906390, 0.848124576410543950, +0.848098085507870140, 0.848071592484951120, 0.848045097341853180, 0.848018600078642380, 0.847992100695385110, 0.847965599192147200, 0.847939095568995720, 0.847912589825996490, +0.847886081963215800, 0.847859571980719820, 0.847833059878575050, 0.847806545656847540, 0.847780029315603150, 0.847753510854909240, 0.847726990274831560, 0.847700467575436380, +0.847673942756790090, 0.847647415818958860, 0.847620886762009080, 0.847594355586007150, 0.847567822291018790, 0.847541286877111390, 0.847514749344350780, 0.847488209692803360, +0.847461667922535300, 0.847435124033613100, 0.847408578026103140, 0.847382029900071720, 0.847355479655584660, 0.847328927292709480, 0.847302372811511990, 0.847275816212058500, +0.847249257494415490, 0.847222696658649350, 0.847196133704826490, 0.847169568633012740, 0.847143001443275590, 0.847116432135681000, 0.847089860710295240, 0.847063287167184930, +0.847036711506416240, 0.847010133728055890, 0.846983553832170280, 0.846956971818825120, 0.846930387688088150, 0.846903801440025190, 0.846877213074702650, 0.846850622592187130, +0.846824029992545020, 0.846797435275842950, 0.846770838442146730, 0.846744239491523890, 0.846717638424040460, 0.846691035239762860, 0.846664429938757790, 0.846637822521091540, +0.846611212986830840, 0.846584601336042080, 0.846557987568791300, 0.846531371685146030, 0.846504753685172420, 0.846478133568936860, 0.846451511336505870, 0.846424886987946270, +0.846398260523324340, 0.846371631942706810, 0.846345001246159740, 0.846318368433750630, 0.846291733505545540, 0.846265096461611190, 0.846238457302014080, 0.846211816026820830, +0.846185172636097940, 0.846158527129911800, 0.846131879508329690, 0.846105229771418000, 0.846078577919243120, 0.846051923951871900, 0.846025267869370820, 0.845998609671806510, +0.845971949359245800, 0.845945286931754640, 0.845918622389400850, 0.845891955732250400, 0.845865286960370110, 0.845838616073826600, 0.845811943072686480, 0.845785267957016580, +0.845758590726883530, 0.845731911382353490, 0.845705229923494060, 0.845678546350371760, 0.845651860663052870, 0.845625172861604430, 0.845598482946093190, 0.845571790916585520, +0.845545096773148040, 0.845518400515848260, 0.845491702144752440, 0.845465001659927440, 0.845438299061439860, 0.845411594349356530, 0.845384887523744300, 0.845358178584669770, +0.845331467532199340, 0.845304754366400730, 0.845278039087340230, 0.845251321695084660, 0.845224602189700750, 0.845197880571255330, 0.845171156839815250, 0.845144430995446780, +0.845117703038217650, 0.845090972968194350, 0.845064240785443620, 0.845037506490032180, 0.845010770082027070, 0.844984031561495040, 0.844957290928502910, 0.844930548183117080, +0.844903803325405380, 0.844877056355434090, 0.844850307273270260, 0.844823556078980520, 0.844796802772632030, 0.844770047354291510, 0.844743289824025800, 0.844716530181901510, +0.844689768427986270, 0.844663004562346660, 0.844636238585049440, 0.844609470496161750, 0.844582700295750330, 0.844555927983882130, 0.844529153560623640, 0.844502377026042810, +0.844475598380206030, 0.844448817623180140, 0.844422034755032300, 0.844395249775829470, 0.844368462685638370, 0.844341673484526160, 0.844314882172559230, 0.844288088749805650, +0.844261293216331810, 0.844234495572204760, 0.844207695817491440, 0.844180893952258930, 0.844154089976574150, 0.844127283890504180, 0.844100475694115500, 0.844073665387476080, +0.844046852970652520, 0.844020038443711870, 0.843993221806721090, 0.843966403059747240, 0.843939582202857360, 0.843912759236118080, 0.843885934159597450, 0.843859106973361860, +0.843832277677478590, 0.843805446272014590, 0.843778612757037030, 0.843751777132612850, 0.843724939398809210, 0.843698099555692860, 0.843671257603331610, 0.843644413541792320, +0.843617567371142020, 0.843590719091447780, 0.843563868702776660, 0.843537016205195940, 0.843510161598772120, 0.843483304883573480, 0.843456446059666520, 0.843429585127118410, +0.843402722085996430, 0.843375856936367630, 0.843348989678299080, 0.843322120311858160, 0.843295248837111490, 0.843268375254127120, 0.843241499562971790, 0.843214621763712760, +0.843187741856417090, 0.843160859841152190, 0.843133975717984980, 0.843107089486982990, 0.843080201148212800, 0.843053310701742500, 0.843026418147638900, 0.842999523485969290, +0.842972626716800950, 0.842945727840200940, 0.842918826856236650, 0.842891923764974790, 0.842865018566483660, 0.842838111260829970, 0.842811201848081000, 0.842784290328303930, +0.842757376701566250, 0.842730460967935020, 0.842703543127477750, 0.842676623180261150, 0.842649701126353400, 0.842622776965821440, 0.842595850698732440, 0.842568922325153900, +0.842541991845153100, 0.842515059258797220, 0.842488124566153740, 0.842461187767289510, 0.842434248862272690, 0.842407307851170350, 0.842380364734049760, 0.842353419510978090, +0.842326472182023060, 0.842299522747251730, 0.842272571206731160, 0.842245617560529620, 0.842218661808714080, 0.842191703951351900, 0.842164743988510380, 0.842137781920257010, +0.842110817746659190, 0.842083851467784420, 0.842056883083699410, 0.842029912594472800, 0.842002940000171280, 0.841975965300862490, 0.841948988496613810, 0.841922009587492640, +0.841895028573566350, 0.841868045454902130, 0.841841060231568240, 0.841814072903631640, 0.841787083471159940, 0.841760091934220520, 0.841733098292880790, 0.841706102547208460, +0.841679104697270810, 0.841652104743134900, 0.841625102684869120, 0.841598098522540750, 0.841571092256217070, 0.841544083885965580, 0.841517073411854000, 0.841490060833949620, +0.841463046152320150, 0.841436029367032660, 0.841409010478155420, 0.841381989485755820, 0.841354966389901150, 0.841327941190659010, 0.841300913888097130, 0.841273884482282910, +0.841246852973283500, 0.841219819361167520, 0.841192783646001920, 0.841165745827854310, 0.841138705906792410, 0.841111663882883720, 0.841084619756195860, 0.841057573526796440, +0.841030525194752740, 0.841003474760133040, 0.840976422223004730, 0.840949367583435300, 0.840922310841492490, 0.840895251997244020, 0.840868191050757270, 0.840841128002100090, +0.840814062851339640, 0.840786995598544420, 0.840759926243781820, 0.840732854787119340, 0.840705781228624720, 0.840678705568365660, 0.840651627806409900, 0.840624547942824480, +0.840597465977678260, 0.840570381911038390, 0.840543295742972480, 0.840516207473548380, 0.840489117102833690, 0.840462024630896360, 0.840434930057803790, 0.840407833383623570, +0.840380734608424110, 0.840353633732272900, 0.840326530755237560, 0.840299425677386020, 0.840272318498785810, 0.840245209219504740, 0.840218097839610320, 0.840190984359171060, +0.840163868778254330, 0.840136751096927870, 0.840109631315259620, 0.840082509433317300, 0.840055385451168650, 0.840028259368881590, 0.840001131186523310, 0.839974000904162740, +0.839946868521867170, 0.839919734039704440, 0.839892597457742470, 0.839865458776048900, 0.839838317994691660, 0.839811175113738590, 0.839784030133257200, 0.839756883053316190, +0.839729733873982980, 0.839702582595325380, 0.839675429217411450, 0.839648273740308810, 0.839621116164085520, 0.839593956488808970, 0.839566794714548090, 0.839539630841370070, +0.839512464869343060, 0.839485296798534900, 0.839458126629013530, 0.839430954360846800, 0.839403779994102650, 0.839376603528848570, 0.839349424965153520, 0.839322244303084890, +0.839295061542710610, 0.839267876684098750, 0.839240689727317140, 0.839213500672433830, 0.839186309519516340, 0.839159116268633490, 0.839131920919852780, 0.839104723473242390, +0.839077523928870140, 0.839050322286804100, 0.839023118547112200, 0.838995912709862620, 0.838968704775122640, 0.838941494742961420, 0.838914282613446580, 0.838887068386645950, +0.838859852062627590, 0.838832633641459660, 0.838805413123210110, 0.838778190507947110, 0.838750965795738050, 0.838723738986652090, 0.838696510080756850, 0.838669279078120280, +0.838642045978810540, 0.838614810782895680, 0.838587573490443770, 0.838560334101522420, 0.838533092616200680, 0.838505849034546280, 0.838478603356627270, 0.838451355582511830, +0.838424105712267890, 0.838396853745963620, 0.838369599683667310, 0.838342343525446560, 0.838315085271370330, 0.838287824921506440, 0.838260562475923070, 0.838233297934688150, +0.838206031297870080, 0.838178762565536920, 0.838151491737756830, 0.838124218814597530, 0.838096943796128090, 0.838069666682416450, 0.838042387473530550, 0.838015106169538670, +0.837987822770509090, 0.837960537276509880, 0.837933249687608850, 0.837905960003875180, 0.837878668225376710, 0.837851374352181490, 0.837824078384357800, 0.837796780321974020, +0.837769480165098220, 0.837742177913798680, 0.837714873568143230, 0.837687567128201140, 0.837660258594040140, 0.837632947965728400, 0.837605635243334420, 0.837578320426926260, +0.837551003516572300, 0.837523684512340380, 0.837496363414299670, 0.837469040222518110, 0.837441714937063990, 0.837414387558005460, 0.837387058085411030, 0.837359726519348980, +0.837332392859887590, 0.837305057107094800, 0.837277719261039780, 0.837250379321790470, 0.837223037289415160, 0.837195693163982350, 0.837168346945560300, 0.837140998634217310, +0.837113648230021880, 0.837086295733041830, 0.837058941143346560, 0.837031584461003900, 0.837004225686082240, 0.836976864818650080, 0.836949501858775700, 0.836922136806527610, +0.836894769661973740, 0.836867400425183370, 0.836840029096224460, 0.836812655675165610, 0.836785280162074980, 0.836757902557021200, 0.836730522860072660, 0.836703141071297840, +0.836675757190764700, 0.836648371218542630, 0.836620983154699570, 0.836593592999304140, 0.836566200752424720, 0.836538806414129700, 0.836511409984487810, 0.836484011463567320, +0.836456610851436300, 0.836429208148164240, 0.836401803353819200, 0.836374396468469560, 0.836346987492184060, 0.836319576425031070, 0.836292163267079000, 0.836264748018396230, +0.836237330679051930, 0.836209911249114370, 0.836182489728652060, 0.836155066117733490, 0.836127640416427180, 0.836100212624801830, 0.836072782742925960, 0.836045350770867610, +0.836017916708696410, 0.835990480556480400, 0.835963042314288310, 0.835935601982188410, 0.835908159560249660, 0.835880715048540450, 0.835853268447128930, 0.835825819756084830, +0.835798368975476100, 0.835770916105371460, 0.835743461145839530, 0.835716004096948910, 0.835688544958768320, 0.835661083731366380, 0.835633620414811260, 0.835606155009172570, +0.835578687514518470, 0.835551217930917690, 0.835523746258438840, 0.835496272497150530, 0.835468796647121700, 0.835441318708420750, 0.835413838681116070, 0.835386356565277270, +0.835358872360972620, 0.835331386068270730, 0.835303897687240450, 0.835276407217950380, 0.835248914660469240, 0.835221420014865430, 0.835193923281208450, 0.835166424459566790, +0.835138923550008960, 0.835111420552603900, 0.835083915467420220, 0.835056408294526760, 0.835028899033992360, 0.835001387685885170, 0.834973874250275030, 0.834946358727230110, +0.834918841116819350, 0.834891321419111490, 0.834863799634175340, 0.834836275762079640, 0.834808749802893320, 0.834781221756684570, 0.834753691623523310, 0.834726159403477830, +0.834698625096616960, 0.834671088703009430, 0.834643550222724300, 0.834616009655830270, 0.834588467002395640, 0.834560922262490460, 0.834533375436182890, 0.834505826523541880, +0.834478275524636270, 0.834450722439535000, 0.834423167268307010, 0.834395610011021030, 0.834368050667745550, 0.834340489238550420, 0.834312925723504020, 0.834285360122675400, +0.834257792436133290, 0.834230222663946750, 0.834202650806184720, 0.834175076862915480, 0.834147500834209080, 0.834119922720133910, 0.834092342520758920, 0.834064760236153060, +0.834037175866385370, 0.834009589411524700, 0.833982000871639980, 0.833954410246799950, 0.833926817537074210, 0.833899222742531480, 0.833871625863240820, 0.833844026899270950, +0.833816425850691050, 0.833788822717570040, 0.833761217499977000, 0.833733610197980420, 0.833706000811650360, 0.833678389341055310, 0.833650775786264230, 0.833623160147346280, +0.833595542424370280, 0.833567922617405640, 0.833540300726520520, 0.833512676751785200, 0.833485050693268170, 0.833457422551038610, 0.833429792325165340, 0.833402160015717760, +0.833374525622764590, 0.833346889146375220, 0.833319250586618150, 0.833291609943563440, 0.833263967217279690, 0.833236322407835960, 0.833208675515301530, 0.833181026539745350, +0.833153375481236580, 0.833125722339844500, 0.833098067115637500, 0.833070409808685850, 0.833042750419058180, 0.833015088946823630, 0.832987425392051390, 0.832959759754810510, +0.832932092035170270, 0.832904422233199380, 0.832876750348967800, 0.832849076382544460, 0.832821400333998430, 0.832793722203398760, 0.832766041990814940, 0.832738359696315930, +0.832710675319971010, 0.832682988861848990, 0.832655300322019950, 0.832627609700552610, 0.832599916997516340, 0.832572222212980220, 0.832544525347013510, 0.832516826399685490, +0.832489125371065010, 0.832461422261222110, 0.832433717070225730, 0.832406009798145050, 0.832378300445049350, 0.832350589011007780, 0.832322875496089850, 0.832295159900364730, +0.832267442223901140, 0.832239722466769580, 0.832212000629038550, 0.832184276710777660, 0.832156550712055960, 0.832128822632942970, 0.832101092473507940, 0.832073360233820060, +0.832045625913948370, 0.832017889513963160, 0.831990151033933150, 0.831962410473927720, 0.831934667834016370, 0.831906923114268280, 0.831879176314752940, 0.831851427435539080, +0.831823676476697190, 0.831795923438296110, 0.831768168320405230, 0.831740411123093940, 0.831712651846431620, 0.831684890490487660, 0.831657127055331460, 0.831629361541031950, +0.831601593947659530, 0.831573824275283150, 0.831546052523972290, 0.831518278693796130, 0.831490502784824390, 0.831462724797126350, 0.831434944730770950, 0.831407162585828810, +0.831379378362368640, 0.831351592060460170, 0.831323803680172560, 0.831296013221575540, 0.831268220684738490, 0.831240426069730810, 0.831212629376621660, 0.831184830605481430, +0.831157029756379060, 0.831129226829384060, 0.831101421824566140, 0.831073614741994590, 0.831045805581739020, 0.831017994343868920, 0.830990181028453350, 0.830962365635562810, +0.830934548165266350, 0.830906728617633590, 0.830878906992733920, 0.830851083290637060, 0.830823257511412390, 0.830795429655129200, 0.830767599721857870, 0.830739767711667580, +0.830711933624627810, 0.830684097460808180, 0.830656259220278410, 0.830628418903107900, 0.830600576509366470, 0.830572732039122960, 0.830544885492448200, 0.830517036869411250, +0.830489186170081610, 0.830461333394529100, 0.830433478542823120, 0.830405621615033620, 0.830377762611229970, 0.830349901531481470, 0.830322038375858610, 0.830294173144430770, +0.830266305837267460, 0.830238436454438290, 0.830210564996013090, 0.830182691462061580, 0.830154815852652720, 0.830126938167857430, 0.830099058407744670, 0.830071176572384380, +0.830043292661846070, 0.830015406676199550, 0.829987518615514450, 0.829959628479860710, 0.829931736269307270, 0.829903841983924970, 0.829875945623783200, 0.829848047188951440, +0.829820146679499660, 0.829792244095497460, 0.829764339437014660, 0.829736432704120450, 0.829708523896885760, 0.829680613015379650, 0.829652700059672070, 0.829624785029832830, +0.829596867925931460, 0.829568948748037990, 0.829541027496222160, 0.829513104170553350, 0.829485178771102170, 0.829457251297938010, 0.829429321751130820, 0.829401390130750320, +0.829373456436866330, 0.829345520669548590, 0.829317582828867140, 0.829289642914891270, 0.829261700927691800, 0.829233756867338020, 0.829205810733899870, 0.829177862527447180, +0.829149912248049790, 0.829121959895777750, 0.829094005470700220, 0.829066048972888160, 0.829038090402410940, 0.829010129759338630, 0.828982167043740840, 0.828954202255687720, +0.828926235395249120, 0.828898266462494980, 0.828870295457494580, 0.828842322380318960, 0.828814347231037530, 0.828786370009720220, 0.828758390716436980, 0.828730409351257750, +0.828702425914252580, 0.828674440405491320, 0.828646452825043460, 0.828618463172979940, 0.828590471449370260, 0.828562477654284370, 0.828534481787792320, 0.828506483849964060, +0.828478483840869640, 0.828450481760578450, 0.828422477609161540, 0.828394471386688540, 0.828366463093229250, 0.828338452728853870, 0.828310440293632320, 0.828282425787634780, +0.828254409210931080, 0.828226390563590820, 0.828198369845685180, 0.828170347057283540, 0.828142322198456070, 0.828114295269272720, 0.828086266269803750, 0.828058235200119010, +0.828030202060288210, 0.828002166850382420, 0.827974129570471230, 0.827946090220624710, 0.827918048800913020, 0.827890005311406110, 0.827861959752174250, 0.827833912123287500, +0.827805862424815350, 0.827777810656829200, 0.827749756819398440, 0.827721700912593230, 0.827693642936483950, 0.827665582891140450, 0.827637520776632880, 0.827609456593031640, +0.827581390340406340, 0.827553322018827920, 0.827525251628366210, 0.827497179169091490, 0.827469104641073700, 0.827441028044383240, 0.827412949379090160, 0.827384868645264170, +0.827356785842976560, 0.827328700972296940, 0.827300614033295580, 0.827272525026042760, 0.827244433950608540, 0.827216340807063300, 0.827188245595477100, 0.827160148315919890, +0.827132048968462820, 0.827103947553175510, 0.827075844070128460, 0.827047738519391730, 0.827019630901035700, 0.826991521215130530, 0.826963409461746620, 0.826935295640953690, +0.826907179752823020, 0.826879061797424320, 0.826850941774827990, 0.826822819685104400, 0.826794695528323630, 0.826766569304556280, 0.826738441013871840, 0.826710310656341930, +0.826682178232036160, 0.826654043741025020, 0.826625907183378690, 0.826597768559167670, 0.826569627868462110, 0.826541485111332630, 0.826513340287848840, 0.826485193398082240, +0.826457044442102660, 0.826428893419980380, 0.826400740331786010, 0.826372585177589710, 0.826344427957461880, 0.826316268671472560, 0.826288107319693040, 0.826259943902193370, +0.826231778419043720, 0.826203610870314690, 0.826175441256076560, 0.826147269576399830, 0.826119095831355010, 0.826090920021011810, 0.826062742145441950, 0.826034562204715160, +0.826006380198902050, 0.825978196128072880, 0.825950009992298280, 0.825921821791648640, 0.825893631526194440, 0.825865439196005640, 0.825837244801153840, 0.825809048341708870, +0.825780849817741250, 0.825752649229321570, 0.825724446576520220, 0.825696241859407710, 0.825668035078054200, 0.825639826232530960, 0.825611615322908280, 0.825583402349256530, +0.825555187311646230, 0.825526970210148090, 0.825498751044832390, 0.825470529815769850, 0.825442306523030520, 0.825414081166685910, 0.825385853746806060, 0.825357624263461600, +0.825329392716723120, 0.825301159106661130, 0.825272923433346240, 0.825244685696848950, 0.825216445897239640, 0.825188204034589590, 0.825159960108968970, 0.825131714120448610, +0.825103466069098790, 0.825075215954990450, 0.825046963778193980, 0.825018709538779650, 0.824990453236819080, 0.824962194872382320, 0.824933934445540080, 0.824905671956363000, +0.824877407404921770, 0.824849140791287020, 0.824820872115529350, 0.824792601377719150, 0.824764328577927810, 0.824736053716225710, 0.824707776792683370, 0.824679497807371710, +0.824651216760361240, 0.824622933651722790, 0.824594648481526530, 0.824566361249844060, 0.824538071956745780, 0.824509780602302180, 0.824481487186584210, 0.824453191709662580, +0.824424894171607910, 0.824396594572490930, 0.824368292912382120, 0.824339989191352980, 0.824311683409473920, 0.824283375566815520, 0.824255065663448860, 0.824226753699444430, +0.824198439674873160, 0.824170123589805790, 0.824141805444312590, 0.824113485238465390, 0.824085162972334470, 0.824056838645990660, 0.824028512259504690, 0.824000183812947480, +0.823971853306389890, 0.823943520739902070, 0.823915186113555960, 0.823886849427421850, 0.823858510681570680, 0.823830169876073270, 0.823801827011000350, 0.823773482086422870, +0.823745135102411760, 0.823716786059037310, 0.823688434956371340, 0.823660081794484240, 0.823631726573446970, 0.823603369293330450, 0.823575009954205410, 0.823546648556142900, +0.823518285099213760, 0.823489919583488490, 0.823461552009038810, 0.823433182375935320, 0.823404810684248870, 0.823376436934050270, 0.823348061125410700, 0.823319683258400990, +0.823291303333091530, 0.823262921349554260, 0.823234537307859780, 0.823206151208078940, 0.823177763050282670, 0.823149372834542040, 0.823120980560927970, 0.823092586229511420, +0.823064189840363000, 0.823035791393554430, 0.823007390889156530, 0.822978988327240150, 0.822950583707876220, 0.822922177031135900, 0.822893768297090040, 0.822865357505809360, +0.822836944657365790, 0.822808529751829720, 0.822780112789272540, 0.822751693769764870, 0.822723272693378080, 0.822694849560183130, 0.822666424370250950, 0.822637997123652260, +0.822609567820459130, 0.822581136460742050, 0.822552703044572180, 0.822524267572020460, 0.822495830043158070, 0.822467390458056170, 0.822438948816785810, 0.822410505119417490, +0.822382059366023490, 0.822353611556674300, 0.822325161691441100, 0.822296709770394930, 0.822268255793607070, 0.822239799761148580, 0.822211341673090070, 0.822182881529503580, +0.822154419330460070, 0.822125955076030370, 0.822097488766285970, 0.822069020401297700, 0.822040549981136850, 0.822012077505874680, 0.821983602975581820, 0.821955126390330530, +0.821926647750191310, 0.821898167055235440, 0.821869684305534310, 0.821841199501158860, 0.821812712642180370, 0.821784223728669660, 0.821755732760698910, 0.821727239738338830, +0.821698744661660600, 0.821670247530735590, 0.821641748345634860, 0.821613247106429910, 0.821584743813191690, 0.821556238465991130, 0.821527731064900510, 0.821499221609990560, +0.821470710101332550, 0.821442196538997860, 0.821413680923057550, 0.821385163253583130, 0.821356643530645750, 0.821328121754316240, 0.821299597924666890, 0.821271072041768630, +0.821242544105692640, 0.821214014116510400, 0.821185482074292980, 0.821156947979111980, 0.821128411831038020, 0.821099873630143580, 0.821071333376499400, 0.821042791070176970, +0.821014246711247450, 0.820985700299782460, 0.820957151835853050, 0.820928601319530940, 0.820900048750886620, 0.820871494129992830, 0.820842937456920270, 0.820814378731740350, +0.820785817954524540, 0.820757255125344140, 0.820728690244270640, 0.820700123311375320, 0.820671554326729340, 0.820642983290404860, 0.820614410202472940, 0.820585835063004980, +0.820557257872072450, 0.820528678629746770, 0.820500097336099410, 0.820471513991201330, 0.820442928595124910, 0.820414341147941210, 0.820385751649721720, 0.820357160100537720, +0.820328566500460930, 0.820299970849562630, 0.820271373147914430, 0.820242773395587380, 0.820214171592653860, 0.820185567739184830, 0.820156961835252000, 0.820128353880926640, +0.820099743876280480, 0.820071131821384910, 0.820042517716311090, 0.820013901561131410, 0.819985283355916920, 0.819956663100739340, 0.819928040795670050, 0.819899416440780680, +0.819870790036142720, 0.819842161581827880, 0.819813531077907000, 0.819784898524452910, 0.819756263921536550, 0.819727627269229430, 0.819698988567603370, 0.819670347816729760, +0.819641705016680320, 0.819613060167526660, 0.819584413269339840, 0.819555764322192350, 0.819527113326155580, 0.819498460281301020, 0.819469805187700300, 0.819441148045425010, +0.819412488854546870, 0.819383827615137060, 0.819355164327268180, 0.819326498991011400, 0.819297831606438320, 0.819269162173620670, 0.819240490692630050, 0.819211817163538300, +0.819183141586417030, 0.819154463961337290, 0.819125784288372020, 0.819097102567592160, 0.819068418799069660, 0.819039732982876020, 0.819011045119083180, 0.818982355207762640, +0.818953663248986220, 0.818924969242825100, 0.818896273189352100, 0.818867575088638390, 0.818838874940755800, 0.818810172745775940, 0.818781468503770760, 0.818752762214811860, +0.818724053878970510, 0.818695343496319560, 0.818666631066930270, 0.818637916590874370, 0.818609200068223690, 0.818580481499050050, 0.818551760883425070, 0.818523038221420810, +0.818494313513108420, 0.818465586758560740, 0.818436857957849150, 0.818408127111045380, 0.818379394218221260, 0.818350659279448720, 0.818321922294799500, 0.818293183264344970, +0.818264442188157970, 0.818235699066309890, 0.818206953898872550, 0.818178206685917790, 0.818149457427517550, 0.818120706123743660, 0.818091952774668060, 0.818063197380362040, +0.818034439940898530, 0.818005680456348920, 0.817976918926785030, 0.817948155352278940, 0.817919389732902460, 0.817890622068727420, 0.817861852359825890, 0.817833080606269250, +0.817804306808130320, 0.817775530965480720, 0.817746753078392290, 0.817717973146936950, 0.817689191171186660, 0.817660407151213350, 0.817631621087088640, 0.817602832978885250, +0.817574042826674900, 0.817545250630529410, 0.817516456390520730, 0.817487660106720910, 0.817458861779202020, 0.817430061408035980, 0.817401258993294190, 0.817372454535049810, +0.817343648033374340, 0.817314839488339720, 0.817286028900017890, 0.817257216268481130, 0.817228401593801280, 0.817199584876050490, 0.817170766115300150, 0.817141945311623430, +0.817113122465091820, 0.817084297575777390, 0.817055470643752280, 0.817026641669088450, 0.816997810651858060, 0.816968977592132610, 0.816940142489985140, 0.816911305345487390, +0.816882466158711410, 0.816853624929729240, 0.816824781658613050, 0.816795936345434790, 0.816767088990266840, 0.816738239593180590, 0.816709388154249210, 0.816680534673544400, +0.816651679151138230, 0.816622821587102870, 0.816593961981510460, 0.816565100334433190, 0.816536236645942550, 0.816507370916111920, 0.816478503145012800, 0.816449633332717470, +0.816420761479298100, 0.816391887584826730, 0.816363011649375750, 0.816334133673017100, 0.816305253655822740, 0.816276371597865700, 0.816247487499217720, 0.816218601359951060, +0.816189713180137890, 0.816160822959850370, 0.816131930699160900, 0.816103036398141520, 0.816074140056864070, 0.816045241675401710, 0.816016341253826380, 0.815987438792210140, +0.815958534290625260, 0.815929627749144130, 0.815900719167838790, 0.815871808546781320, 0.815842895886044750, 0.815813981185700920, 0.815785064445822110, 0.815756145666480690, +0.815727224847748960, 0.815698301989699060, 0.815669377092403500, 0.815640450155933890, 0.815611521180363730, 0.815582590165764730, 0.815553657112209280, 0.815524722019769670, +0.815495784888518370, 0.815466845718527460, 0.815437904509869530, 0.815408961262616310, 0.815380015976841070, 0.815351068652615970, 0.815322119290013080, 0.815293167889105000, +0.815264214449963890, 0.815235258972662360, 0.815206301457272020, 0.815177341903866590, 0.815148380312517680, 0.815119416683297900, 0.815090451016279530, 0.815061483311535050, +0.815032513569136860, 0.815003541789157460, 0.814974567971668560, 0.814945592116743890, 0.814916614224455160, 0.814887634294874870, 0.814858652328075530, 0.814829668324129620, +0.814800682283109530, 0.814771694205087100, 0.814742704090136050, 0.814713711938328200, 0.814684717749736160, 0.814655721524432220, 0.814626723262488970, 0.814597722963978920, +0.814568720628974670, 0.814539716257547950, 0.814510709849772590, 0.814481701405720400, 0.814452690925463910, 0.814423678409075810, 0.814394663856628400, 0.814365647268194380, +0.814336628643846260, 0.814307607983655980, 0.814278585287697250, 0.814249560556042030, 0.814220533788762910, 0.814191504985932510, 0.814162474147623330, 0.814133441273907970, +0.814104406364858480, 0.814075369420548480, 0.814046330441050010, 0.814017289426435810, 0.813988246376778360, 0.813959201292150160, 0.813930154172624150, 0.813901105018272620, +0.813872053829167940, 0.813843000605383500, 0.813813945346991700, 0.813784888054064900, 0.813755828726675960, 0.813726767364897460, 0.813697703968802030, 0.813668638538461720, +0.813639571073950460, 0.813610501575340320, 0.813581430042703780, 0.813552356476113680, 0.813523280875642740, 0.813494203241363680, 0.813465123573348990, 0.813436041871670960, +0.813406958136403400, 0.813377872367618490, 0.813348784565388840, 0.813319694729787270, 0.813290602860886390, 0.813261508958759040, 0.813232413023477930, 0.813203315055115230, +0.813174215053744760, 0.813145113019438810, 0.813116008952270100, 0.813086902852311330, 0.813057794719635240, 0.813028684554314760, 0.812999572356421950, 0.812970458126030860, +0.812941341863213540, 0.812912223568042820, 0.812883103240591650, 0.812853980880932640, 0.812824856489138710, 0.812795730065282610, 0.812766601609436700, 0.812737471121674830, +0.812708338602069260, 0.812679204050692830, 0.812650067467618360, 0.812620928852918810, 0.812591788206666890, 0.812562645528935420, 0.812533500819796920, 0.812504354079325200, +0.812475205307592540, 0.812446054504671890, 0.812416901670636070, 0.812387746805558030, 0.812358589909510600, 0.812329430982566160, 0.812300270024798770, 0.812271107036280580, +0.812241942017084770, 0.812212774967283950, 0.812183605886951270, 0.812154434776159560, 0.812125261634981780, 0.812096086463490300, 0.812066909261759060, 0.812037730029860680, +0.812008548767867880, 0.811979365475853810, 0.811950180153891200, 0.811920992802053210, 0.811891803420412230, 0.811862612009042190, 0.811833418568015720, 0.811804223097405630, +0.811775025597284980, 0.811745826067726830, 0.811716624508804110, 0.811687420920589760, 0.811658215303156410, 0.811629007656577970, 0.811599797980927070, 0.811570586276276650, +0.811541372542699760, 0.811512156780269440, 0.811482938989058770, 0.811453719169140770, 0.811424497320587860, 0.811395273443474290, 0.811366047537872560, 0.811336819603855620, +0.811307589641496630, 0.811278357650868750, 0.811249123632044930, 0.811219887585097780, 0.811190649510101450, 0.811161409407128550, 0.811132167276252040, 0.811102923117545170, +0.811073676931080900, 0.811044428716932500, 0.811015178475173130, 0.810985926205875170, 0.810956671909112910, 0.810927415584958950, 0.810898157233486570, 0.810868896854768710, +0.810839634448878630, 0.810810370015889510, 0.810781103555874410, 0.810751835068906020, 0.810722564555058530, 0.810693292014404760, 0.810664017447017660, 0.810634740852970490, +0.810605462232336540, 0.810576181585188960, 0.810546898911600370, 0.810517614211644920, 0.810488327485395570, 0.810459038732925460, 0.810429747954307670, 0.810400455149615560, +0.810371160318922200, 0.810341863462300970, 0.810312564579824700, 0.810283263671567440, 0.810253960737602030, 0.810224655778001730, 0.810195348792839720, 0.810166039782189370, +0.810136728746123970, 0.810107415684716230, 0.810078100598040420, 0.810048783486169380, 0.810019464349176380, 0.809990143187134690, 0.809960820000117710, 0.809931494788198700, +0.809902167551450840, 0.809872838289947160, 0.809843507003761840, 0.809814173692967710, 0.809784838357638260, 0.809755500997846660, 0.809726161613666280, 0.809696820205170530, +0.809667476772432670, 0.809638131315525640, 0.809608783834523840, 0.809579434329499970, 0.809550082800527650, 0.809520729247680040, 0.809491373671030630, 0.809462016070652820, +0.809432656446619440, 0.809403294799004860, 0.809373931127882140, 0.809344565433324560, 0.809315197715405500, 0.809285827974198570, 0.809256456209776930, 0.809227082422214310, +0.809197706611583300, 0.809168328777958630, 0.809138948921413140, 0.809109567042020310, 0.809080183139853530, 0.809050797214986290, 0.809021409267492110, 0.808992019297444240, +0.808962627304915970, 0.808933233289981570, 0.808903837252714200, 0.808874439193187130, 0.808845039111473980, 0.808815637007648250, 0.808786232881783420, 0.808756826733952440, +0.808727418564229920, 0.808698008372688900, 0.808668596159402900, 0.808639181924445280, 0.808609765667889780, 0.808580347389809880, 0.808550927090279090, 0.808521504769370570, +0.808492080427158700, 0.808462654063716650, 0.808433225679117910, 0.808403795273436200, 0.808374362846744910, 0.808344928399117760, 0.808315491930627790, 0.808286053441349630, +0.808256612931356200, 0.808227170400721340, 0.808197725849518540, 0.808168279277821530, 0.808138830685703690, 0.808109380073238850, 0.808079927440499950, 0.808050472787561810, +0.808021016114497500, 0.807991557421380620, 0.807962096708284890, 0.807932633975283810, 0.807903169222451310, 0.807873702449860790, 0.807844233657585510, 0.807814762845700200, +0.807785290014277900, 0.807755815163392340, 0.807726338293117350, 0.807696859403526530, 0.807667378494693500, 0.807637895566691520, 0.807608410619595320, 0.807578923653478050, +0.807549434668413560, 0.807519943664475440, 0.807490450641737520, 0.807460955600273420, 0.807431458540156850, 0.807401959461461200, 0.807372458364261190, 0.807342955248629980, +0.807313450114641510, 0.807283942962369270, 0.807254433791887220, 0.807224922603269060, 0.807195409396588630, 0.807165894171919200, 0.807136376929335490, 0.807106857668910880, +0.807077336390719100, 0.807047813094833980, 0.807018287781329220, 0.806988760450278900, 0.806959231101756050, 0.806929699735835730, 0.806900166352591100, 0.806870630952096100, +0.806841093534424570, 0.806811554099650220, 0.806782012647846990, 0.806752469179088720, 0.806722923693448780, 0.806693376191002120, 0.806663826671821900, 0.806634275135982180, +0.806604721583556780, 0.806575166014619540, 0.806545608429244390, 0.806516048827504720, 0.806486487209475470, 0.806456923575229910, 0.806427357924842100, 0.806397790258385980, +0.806368220575935270, 0.806338648877564010, 0.806309075163346160, 0.806279499433355080, 0.806249921687665850, 0.806220341926351840, 0.806190760149486870, 0.806161176357145020, +0.806131590549400200, 0.806102002726326480, 0.806072412887997690, 0.806042821034487320, 0.806013227165870540, 0.805983631282220610, 0.805954033383611600, 0.805924433470117550, +0.805894831541812410, 0.805865227598770110, 0.805835621641064370, 0.805806013668769920, 0.805776403681960570, 0.805746791680710170, 0.805717177665092770, 0.805687561635182400, +0.805657943591053250, 0.805628323532779130, 0.805598701460433770, 0.805569077374092110, 0.805539451273827760, 0.805509823159714760, 0.805480193031827160, 0.805450560890239250, +0.805420926735024860, 0.805391290566257580, 0.805361652384012580, 0.805332012188363480, 0.805302369979384420, 0.805272725757149370, 0.805243079521732460, 0.805213431273207990, +0.805183781011649780, 0.805154128737131770, 0.805124474449728790, 0.805094818149514780, 0.805065159836563570, 0.805035499510949550, 0.805005837172746760, 0.804976172822029380, +0.804946506458871560, 0.804916838083347020, 0.804887167695530810, 0.804857495295496770, 0.804827820883318950, 0.804798144459071610, 0.804768466022828810, 0.804738785574664940, +0.804709103114653600, 0.804679418642869960, 0.804649732159387730, 0.804620043664281300, 0.804590353157624620, 0.804560660639492160, 0.804530966109958000, 0.804501269569096510, +0.804471571016981190, 0.804441870453687540, 0.804412167879289260, 0.804382463293860540, 0.804352756697475630, 0.804323048090208830, 0.804293337472134380, 0.804263624843326590, +0.804233910203859260, 0.804204193553807680, 0.804174474893245560, 0.804144754222247290, 0.804115031540887150, 0.804085306849239400, 0.804055580147378430, 0.804025851435377970, +0.803996120713313390, 0.803966387981258520, 0.803936653239287650, 0.803906916487475140, 0.803877177725895400, 0.803847436954622680, 0.803817694173731390, 0.803787949383295340, +0.803758202583389920, 0.803728453774088970, 0.803698702955466970, 0.803668950127598090, 0.803639195290556940, 0.803609438444417790, 0.803579679589254470, 0.803549918725142480, +0.803520155852155750, 0.803490390970368560, 0.803460624079855410, 0.803430855180690790, 0.803401084272948870, 0.803371311356704370, 0.803341536432031100, 0.803311759499004350, +0.803281980557698280, 0.803252199608187280, 0.803222416650545830, 0.803192631684848220, 0.803162844711169170, 0.803133055729582930, 0.803103264740163470, 0.803073471742986490, +0.803043676738125710, 0.803013879725655850, 0.802984080705651190, 0.802954279678186440, 0.802924476643335880, 0.802894671601173670, 0.802864864551775300, 0.802835055495214830, +0.802805244431566640, 0.802775431360905340, 0.802745616283305430, 0.802715799198841510, 0.802685980107588180, 0.802656159009619290, 0.802626335905010540, 0.802596510793835980, +0.802566683676170120, 0.802536854552087450, 0.802507023421662800, 0.802477190284970550, 0.802447355142085320, 0.802417517993081140, 0.802387678838033750, 0.802357837677017070, +0.802327994510105840, 0.802298149337374640, 0.802268302158898110, 0.802238452974750720, 0.802208601785006750, 0.802178748589741810, 0.802148893389029950, 0.802119036182945890, +0.802089176971564230, 0.802059315754959590, 0.802029452533206790, 0.801999587306380210, 0.801969720074554250, 0.801939850837804390, 0.801909979596205020, 0.801880106349830650, +0.801850231098755970, 0.801820353843055830, 0.801790474582804720, 0.801760593318076920, 0.801730710048948140, 0.801700824775492650, 0.801670937497785060, 0.801641048215900100, +0.801611156929912580, 0.801581263639897120, 0.801551368345928440, 0.801521471048080910, 0.801491571746430150, 0.801461670441050540, 0.801431767132016800, 0.801401861819403540, +0.801371954503285580, 0.801342045183737860, 0.801312133860835000, 0.801282220534651260, 0.801252305205262470, 0.801222387872742910, 0.801192468537167410, 0.801162547198610800, +0.801132623857147670, 0.801102698512853100, 0.801072771165801220, 0.801042841816068000, 0.801012910463727580, 0.800982977108855020, 0.800953041751524930, 0.800923104391812140, +0.800893165029791690, 0.800863223665538300, 0.800833280299126370, 0.800803334930631720, 0.800773387560128840, 0.800743438187692340, 0.800713486813397380, 0.800683533437318570, +0.800653578059530970, 0.800623620680109500, 0.800593661299128350, 0.800563699916663650, 0.800533736532789700, 0.800503771147581420, 0.800473803761113660, 0.800443834373461340, +0.800413862984699520, 0.800383889594902480, 0.800353914204146260, 0.800323936812505240, 0.800293957420054380, 0.800263976026868720, 0.800233992633022970, 0.800204007238592310, +0.800174019843651660, 0.800144030448275420, 0.800114039052539640, 0.800084045656518690, 0.800054050260287640, 0.800024052863921530, 0.799994053467495300, 0.799964052071083900, +0.799934048674761810, 0.799904043278605200, 0.799874035882688350, 0.799844026487086520, 0.799814015091874660, 0.799784001697127600, 0.799753986302920720, 0.799723968909328730, +0.799693949516426360, 0.799663928124289660, 0.799633904732993120, 0.799603879342611790, 0.799573851953220840, 0.799543822564895200, 0.799513791177710040, 0.799483757791740410, +0.799453722407060810, 0.799423685023747390, 0.799393645641874870, 0.799363604261518200, 0.799333560882752430, 0.799303515505652820, 0.799273468130294430, 0.799243418756751870, +0.799213367385101290, 0.799183314015417200, 0.799153258647774980, 0.799123201282249450, 0.799093141918916010, 0.799063080557849690, 0.799033017199125670, 0.799002951842818670, +0.798972884489004720, 0.798942815137758560, 0.798912743789155330, 0.798882670443270330, 0.798852595100178590, 0.798822517759955390, 0.798792438422675890, 0.798762357088414810, +0.798732273757248310, 0.798702188429251110, 0.798672101104498490, 0.798642011783065600, 0.798611920465027710, 0.798581827150460000, 0.798551731839437170, 0.798521634532035510, +0.798491535228329830, 0.798461433928395300, 0.798431330632307090, 0.798401225340140690, 0.798371118051971140, 0.798341008767873840, 0.798310897487923500, 0.798280784212196390, +0.798250668940767350, 0.798220551673711640, 0.798190432411104540, 0.798160311153021440, 0.798130187899537490, 0.798100062650727530, 0.798069935406667930, 0.798039806167433530, +0.798009674933099600, 0.797979541703741520, 0.797949406479434580, 0.797919269260254030, 0.797889130046275490, 0.797858988837573450, 0.797828845634224510, 0.797798700436303410, +0.797768553243885630, 0.797738404057046440, 0.797708252875861220, 0.797678099700405370, 0.797647944530754270, 0.797617787366982740, 0.797587628209167400, 0.797557467057382840, +0.797527303911704790, 0.797497138772208290, 0.797466971638969070, 0.797436802512062390, 0.797406631391563200, 0.797376458277547880, 0.797346283170091490, 0.797316106069269390, +0.797285926975156990, 0.797255745887829770, 0.797225562807363230, 0.797195377733832760, 0.797165190667313280, 0.797135001607881420, 0.797104810555612000, 0.797074617510580510, +0.797044422472862560, 0.797014225442533530, 0.796984026419668920, 0.796953825404343790, 0.796923622396634500, 0.796893417396616230, 0.796863210404364470, 0.796833001419954610, +0.796802790443462250, 0.796772577474963000, 0.796742362514532230, 0.796712145562245010, 0.796681926618177940, 0.796651705682406060, 0.796621482755004990, 0.796591257836050120, +0.796561030925617250, 0.796530802023781680, 0.796500571130619120, 0.796470338246204610, 0.796440103370614770, 0.796409866503924760, 0.796379627646209950, 0.796349386797546190, +0.796319143958008850, 0.796288899127673750, 0.796258652306615860, 0.796228403494911860, 0.796198152692636830, 0.796167899899866470, 0.796137645116676280, 0.796107388343141990, +0.796077129579339290, 0.796046868825343700, 0.796016606081230480, 0.795986341347076130, 0.795956074622956140, 0.795925805908945790, 0.795895535205121020, 0.795865262511557310, +0.795834987828330620, 0.795804711155516320, 0.795774432493189690, 0.795744151841427660, 0.795713869200305180, 0.795683584569897960, 0.795653297950281830, 0.795623009341532410, +0.795592718743725500, 0.795562426156936290, 0.795532131581241590, 0.795501835016716450, 0.795471536463436820, 0.795441235921478310, 0.795410933390916620, 0.795380628871827700, +0.795350322364287270, 0.795320013868370370, 0.795289703384154060, 0.795259390911713380, 0.795229076451124280, 0.795198760002462590, 0.795168441565803910, 0.795138121141224060, +0.795107798728798440, 0.795077474328603870, 0.795047147940715630, 0.795016819565209420, 0.794986489202161310, 0.794956156851646890, 0.794925822513742110, 0.794895486188522790, +0.794865147876064100, 0.794834807576443200, 0.794804465289735250, 0.794774121016016080, 0.794743774755361730, 0.794713426507847820, 0.794683076273550390, 0.794652724052545280, +0.794622369844907860, 0.794592013650714970, 0.794561655470042090, 0.794531295302965070, 0.794500933149559830, 0.794470569009902320, 0.794440202884068250, 0.794409834772133230, +0.794379464674174090, 0.794349092590266310, 0.794318718520485860, 0.794288342464908540, 0.794257964423610410, 0.794227584396667300, 0.794197202384155250, 0.794166818386149780, +0.794136432402727690, 0.794106044433964490, 0.794075654479936220, 0.794045262540718830, 0.794014868616388260, 0.793984472707020550, 0.793954074812691650, 0.793923674933477040, +0.793893273069453790, 0.793862869220697260, 0.793832463387283640, 0.793802055569288840, 0.793771645766788940, 0.793741233979859960, 0.793710820208577190, 0.793680404453018020, +0.793649986713257930, 0.793619566989372750, 0.793589145281438650, 0.793558721589531670, 0.793528295913727980, 0.793497868254103510, 0.793467438610733770, 0.793437006983696010, +0.793406573373065750, 0.793376137778919130, 0.793345700201332100, 0.793315260640380830, 0.793284819096141350, 0.793254375568689270, 0.793223930058101880, 0.793193482564454650, +0.793163033087823650, 0.793132581628285150, 0.793102128185915080, 0.793071672760789830, 0.793041215352985330, 0.793010755962577200, 0.792980294589642810, 0.792949831234257660, +0.792919365896497920, 0.792888898576439740, 0.792858429274159390, 0.792827957989732930, 0.792797484723236520, 0.792767009474745880, 0.792736532244338270, 0.792706053032089410, +0.792675571838075350, 0.792645088662372380, 0.792614603505056640, 0.792584116366204410, 0.792553627245891400, 0.792523136144194780, 0.792492643061190380, 0.792462147996954360, +0.792431650951562980, 0.792401151925092420, 0.792370650917619050, 0.792340147929219030, 0.792309642959968090, 0.792279136009943600, 0.792248627079221170, 0.792218116167877300, +0.792187603275988140, 0.792157088403629860, 0.792126571550878960, 0.792096052717811580, 0.792065531904503570, 0.792035009111032310, 0.792004484337473390, 0.791973957583903320, +0.791943428850398480, 0.791912898137034920, 0.791882365443889120, 0.791851830771036940, 0.791821294118555730, 0.791790755486521220, 0.791760214875009800, 0.791729672284097850, +0.791699127713861860, 0.791668581164377880, 0.791638032635722520, 0.791607482127971610, 0.791576929641202410, 0.791546375175490980, 0.791515818730913480, 0.791485260307546510, +0.791454699905466460, 0.791424137524749600, 0.791393573165471880, 0.791363006827710660, 0.791332438511542110, 0.791301868217042290, 0.791271295944287910, 0.791240721693355240, +0.791210145464320780, 0.791179567257261020, 0.791148987072251670, 0.791118404909370470, 0.791087820768693330, 0.791057234650296540, 0.791026646554256700, 0.790996056480650190, +0.790965464429553620, 0.790934870401043270, 0.790904274395195280, 0.790873676412087170, 0.790843076451794860, 0.790812474514394850, 0.790781870599963630, 0.790751264708577710, +0.790720656840313670, 0.790690046995247480, 0.790659435173456710, 0.790628821375017330, 0.790598205600005820, 0.790567587848498900, 0.790536968120572950, 0.790506346416304680, +0.790475722735770380, 0.790445097079046420, 0.790414469446210080, 0.790383839837337730, 0.790353208252505660, 0.790322574691790570, 0.790291939155269190, 0.790261301643017780, +0.790230662155113170, 0.790200020691631420, 0.790169377252650130, 0.790138731838245460, 0.790108084448493790, 0.790077435083472060, 0.790046783743256650, 0.790016130427924400, +0.789985475137551240, 0.789954817872214890, 0.789924158631991500, 0.789893497416957690, 0.789862834227190170, 0.789832169062765540, 0.789801501923760530, 0.789770832810251730, +0.789740161722315430, 0.789709488660029100, 0.789678813623469140, 0.789648136612712160, 0.789617457627834750, 0.789586776668913750, 0.789556093736025750, 0.789525408829247040, +0.789494721948655330, 0.789464033094326890, 0.789433342266338320, 0.789402649464766350, 0.789371954689687790, 0.789341257941179380, 0.789310559219317700, 0.789279858524179150, +0.789249155855841540, 0.789218451214381060, 0.789187744599874400, 0.789157036012398390, 0.789126325452029760, 0.789095612918845330, 0.789064898412921820, 0.789034181934335610, +0.789003463483164410, 0.788972743059484620, 0.788942020663372930, 0.788911296294906310, 0.788880569954161340, 0.788849841641214860, 0.788819111356143350, 0.788788379099024660, +0.788757644869934940, 0.788726908668951120, 0.788696170496149930, 0.788665430351608520, 0.788634688235403390, 0.788603944147611590, 0.788573198088309280, 0.788542450057574620, +0.788511700055483880, 0.788480948082113780, 0.788450194137541360, 0.788419438221843460, 0.788388680335097010, 0.788357920477378740, 0.788327158648765240, 0.788296394849334340, +0.788265629079162420, 0.788234861338326540, 0.788204091626903410, 0.788173319944970090, 0.788142546292603500, 0.788111770669879920, 0.788080993076877510, 0.788050213513672550, +0.788019431980342080, 0.787988648476963040, 0.787957863003612480, 0.787927075560367120, 0.787896286147304230, 0.787865494764499960, 0.787834701412032490, 0.787803906089978300, +0.787773108798414330, 0.787742309537417640, 0.787711508307065040, 0.787680705107433820, 0.787649899938600240, 0.787619092800642460, 0.787588283693636980, 0.787557472617660740, +0.787526659572790780, 0.787495844559104260, 0.787465027576678130, 0.787434208625589330, 0.787403387705914560, 0.787372564817731880, 0.787341739961117670, 0.787310913136149200, +0.787280084342903420, 0.787249253581457480, 0.787218420851888310, 0.787187586154273200, 0.787156749488688520, 0.787125910855212440, 0.787095070253921670, 0.787064227684893260, +0.787033383148204260, 0.787002536643931830, 0.786971688172152910, 0.786940837732944320, 0.786909985326384230, 0.786879130952549130, 0.786848274611516190, 0.786817416303362550, +0.786786556028165500, 0.786755693786001850, 0.786724829576949110, 0.786693963401083770, 0.786663095258483990, 0.786632225149226480, 0.786601353073388410, 0.786570479031047040, +0.786539603022279320, 0.786508725047162740, 0.786477845105773680, 0.786446963198190630, 0.786416079324490200, 0.786385193484749450, 0.786354305679045850, 0.786323415907456360, +0.786292524170058460, 0.786261630466929210, 0.786230734798145310, 0.786199837163785050, 0.786168937563925360, 0.786138035998643180, 0.786107132468016000, 0.786076226972120980, +0.786045319511035400, 0.786014410084836410, 0.785983498693600960, 0.785952585337407310, 0.785921670016332170, 0.785890752730452840, 0.785859833479846670, 0.785828912264590950, +0.785797989084762840, 0.785767063940439270, 0.785736136831698520, 0.785705207758617520, 0.785674276721273430, 0.785643343719743760, 0.785612408754105650, 0.785581471824436490, +0.785550532930813670, 0.785519592073314010, 0.785488649252015890, 0.785457704466996140, 0.785426757718332260, 0.785395809006101290, 0.785364858330380830, 0.785333905691248390, +0.785302951088781010, 0.785271994523055740, 0.785241035994151070, 0.785210075502143830, 0.785179113047111300, 0.785148148629131070, 0.785117182248280530, 0.785086213904636950, +0.785055243598277270, 0.785024271329279990, 0.784993297097722140, 0.784962320903681010, 0.784931342747234080, 0.784900362628458750, 0.784869380547432600, 0.784838396504232930, +0.784807410498936760, 0.784776422531622610, 0.784745432602367400, 0.784714440711248520, 0.784683446858343680, 0.784652451043730160, 0.784621453267485450, 0.784590453529686700, +0.784559451830412200, 0.784528448169739210, 0.784497442547745010, 0.784466434964507300, 0.784435425420103360, 0.784404413914611020, 0.784373400448107550, 0.784342385020670000, +0.784311367632377080, 0.784280348283305730, 0.784249326973533560, 0.784218303703138050, 0.784187278472196710, 0.784156251280787250, 0.784125222128987160, 0.784094191016873500, +0.784063157944524860, 0.784032122912018290, 0.784001085919431520, 0.783970046966841920, 0.783939006054327200, 0.783907963181965100, 0.783876918349832420, 0.783845871558008000, +0.783814822806569000, 0.783783772095592800, 0.783752719425157230, 0.783721664795339890, 0.783690608206218390, 0.783659549657870440, 0.783628489150372980, 0.783597426683804830, +0.783566362258243050, 0.783535295873765470, 0.783504227530449680, 0.783473157228373300, 0.783442084967613920, 0.783411010748249480, 0.783379934570356820, 0.783348856434014970, +0.783317776339301000, 0.783286694286292500, 0.783255610275067290, 0.783224524305703110, 0.783193436378277540, 0.783162346492867870, 0.783131254649552910, 0.783100160848409830, +0.783069065089516240, 0.783037967372950060, 0.783006867698789020, 0.782975766067110720, 0.782944662477992990, 0.782913556931513100, 0.782882449427749870, 0.782851339966780580, +0.782820228548682830, 0.782789115173534560, 0.782757999841413480, 0.782726882552397420, 0.782695763306563650, 0.782664642103991000, 0.782633518944756630, 0.782602393828938590, +0.782571266756614480, 0.782540137727862350, 0.782509006742759690, 0.782477873801384670, 0.782446738903814330, 0.782415602050127720, 0.782384463240402010, 0.782353322474715230, +0.782322179753145220, 0.782291035075769690, 0.782259888442666470, 0.782228739853913610, 0.782197589309588380, 0.782166436809769720, 0.782135282354535000, 0.782104125943962060, +0.782072967578128720, 0.782041807257113030, 0.782010644980992820, 0.781979480749845470, 0.781948314563749910, 0.781917146422783650, 0.781885976327024390, 0.781854804276550300, +0.781823630271439200, 0.781792454311769030, 0.781761276397617610, 0.781730096529062560, 0.781698914706182800, 0.781667730929055730, 0.781636545197759270, 0.781605357512371590, +0.781574167872970400, 0.781542976279633870, 0.781511782732439820, 0.781480587231465850, 0.781449389776790900, 0.781418190368492470, 0.781386989006648710, 0.781355785691337350, +0.781324580422636530, 0.781293373200624200, 0.781262164025377960, 0.781230952896976860, 0.781199739815498400, 0.781168524781020500, 0.781137307793621450, 0.781106088853378950, +0.781074867960371400, 0.781043645114676500, 0.781012420316372080, 0.780981193565537080, 0.780949964862249100, 0.780918734206586310, 0.780887501598626520, 0.780856267038448130, +0.780825030526128950, 0.780793792061746710, 0.780762551645380550, 0.780731309277107990, 0.780700064957007170, 0.780668818685156250, 0.780637570461633180, 0.780606320286516220, +0.780575068159883420, 0.780543814081812390, 0.780512558052382510, 0.780481300071671160, 0.780450040139756500, 0.780418778256716790, 0.780387514422630100, 0.780356248637574690, +0.780324980901628610, 0.780293711214869570, 0.780262439577376730, 0.780231165989227820, 0.780199890450501090, 0.780168612961274490, 0.780137333521626400, 0.780106052131635090, +0.780074768791377940, 0.780043483500934550, 0.780012196260382320, 0.779980907069799720, 0.779949615929264820, 0.779918322838855870, 0.779887027798651040, 0.779855730808728720, +0.779824431869166500, 0.779793130980043770, 0.779761828141438240, 0.779730523353428070, 0.779699216616091650, 0.779667907929507240, 0.779636597293752900, 0.779605284708907220, +0.779573970175047700, 0.779542653692253840, 0.779511335260603230, 0.779480014880174380, 0.779448692551045540, 0.779417368273294890, 0.779386042047000900, 0.779354713872241200, +0.779323383749095270, 0.779292051677640820, 0.779260717657956350, 0.779229381690120020, 0.779198043774210310, 0.779166703910305400, 0.779135362098483770, 0.779104018338823150, +0.779072672631403120, 0.779041324976301300, 0.779009975373596290, 0.778978623823366250, 0.778947270325689670, 0.778915914880644930, 0.778884557488309760, 0.778853198148763860, +0.778821836862084950, 0.778790473628351410, 0.778759108447641730, 0.778727741320034310, 0.778696372245607390, 0.778665001224439710, 0.778633628256608870, 0.778602253342194570, +0.778570876481274540, 0.778539497673927490, 0.778508116920231590, 0.778476734220265420, 0.778445349574107380, 0.778413962981835960, 0.778382574443529100, 0.778351183959266390, +0.778319791529125670, 0.778288397153185430, 0.778257000831524270, 0.778225602564220690, 0.778194202351352950, 0.778162800192999220, 0.778131396089239090, 0.778099990040150400, +0.778068582045811750, 0.778037172106301630, 0.778005760221698540, 0.777974346392081180, 0.777942930617527840, 0.777911512898116660, 0.777880093233927260, 0.777848671625037680, +0.777817248071526300, 0.777785822573471840, 0.777754395130952900, 0.777722965744047980, 0.777691534412835010, 0.777660101137393700, 0.777628665917802220, 0.777597228754139060, +0.777565789646482930, 0.777534348594912220, 0.777502905599505630, 0.777471460660341900, 0.777440013777498830, 0.777408564951056260, 0.777377114181092340, 0.777345661467685690, +0.777314206810914790, 0.777282750210858460, 0.777251291667595210, 0.777219831181203750, 0.777188368751762120, 0.777156904379350140, 0.777125438064045880, 0.777093969805928040, +0.777062499605075230, 0.777031027461566270, 0.776999553375479660, 0.776968077346893660, 0.776936599375887990, 0.776905119462540820, 0.776873637606930960, 0.776842153809136900, +0.776810668069237490, 0.776779180387311310, 0.776747690763437300, 0.776716199197693520, 0.776684705690159680, 0.776653210240914160, 0.776621712850035560, 0.776590213517602820, +0.776558712243694440, 0.776527209028389230, 0.776495703871766030, 0.776464196773903100, 0.776432687734880170, 0.776401176754775490, 0.776369663833667900, 0.776338148971636110, +0.776306632168759060, 0.776275113425115350, 0.776243592740783250, 0.776212070115842810, 0.776180545550372190, 0.776149019044450220, 0.776117490598155600, 0.776085960211567390, +0.776054427884764200, 0.776022893617824950, 0.775991357410827920, 0.775959819263853050, 0.775928279176978600, 0.775896737150283510, 0.775865193183846500, 0.775833647277746620, +0.775802099432062580, 0.775770549646872640, 0.775738997922256980, 0.775707444258293850, 0.775675888655061980, 0.775644331112640530, 0.775612771631108200, 0.775581210210543940, +0.775549646851026670, 0.775518081552634690, 0.775486514315448020, 0.775454945139545160, 0.775423374025004940, 0.775391800971906190, 0.775360225980328050, 0.775328649050349260, +0.775297070182048850, 0.775265489375505210, 0.775233906630798500, 0.775202321948006980, 0.775170735327209590, 0.775139146768485390, 0.775107556271913300, 0.775075963837572380, +0.775044369465541010, 0.775012773155899230, 0.774981174908725530, 0.774949574724098870, 0.774917972602098270, 0.774886368542802790, 0.774854762546291380, 0.774823154612642950, +0.774791544741936230, 0.774759932934251160, 0.774728319189666230, 0.774696703508260480, 0.774665085890112960, 0.774633466335302830, 0.774601844843908930, 0.774570221416010510, +0.774538596051685960, 0.774506968751015430, 0.774475339514077430, 0.774443708340951220, 0.774412075231715620, 0.774380440186449910, 0.774348803205233030, 0.774317164288143680, +0.774285523435261910, 0.774253880646666340, 0.774222235922436110, 0.774190589262650270, 0.774158940667387880, 0.774127290136728210, 0.774095637670750290, 0.774063983269532740, +0.774032326933155820, 0.774000668661698030, 0.773969008455238640, 0.773937346313856580, 0.773905682237631340, 0.773874016226641760, 0.773842348280966650, 0.773810678400686180, +0.773779006585879060, 0.773747332836624450, 0.773715657153001390, 0.773683979535089270, 0.773652299982967250, 0.773620618496714370, 0.773588935076409470, 0.773557249722132690, +0.773525562433962870, 0.773493873211979150, 0.773462182056260720, 0.773430488966886820, 0.773398793943936740, 0.773367096987489620, 0.773335398097624300, 0.773303697274420940, +0.773271994517958360, 0.773240289828315830, 0.773208583205572510, 0.773176874649807780, 0.773145164161100910, 0.773113451739530500, 0.773081737385177050, 0.773050021098119270, +0.773018302878436430, 0.772986582726207790, 0.772954860641512750, 0.772923136624430570, 0.772891410675040410, 0.772859682793421320, 0.772827952979653570, 0.772796221233815860, +0.772764487555987590, 0.772732751946248130, 0.772701014404676870, 0.772669274931352960, 0.772637533526356000, 0.772605790189764500, 0.772574044921659150, 0.772542297722118690, +0.772510548591222480, 0.772478797529049910, 0.772447044535680360, 0.772415289611193100, 0.772383532755667180, 0.772351773969182980, 0.772320013251819200, 0.772288250603655580, +0.772256486024771150, 0.772224719515245630, 0.772192951075158280, 0.772161180704588610, 0.772129408403615320, 0.772097634172319140, 0.772065858010778870, 0.772034079919073910, +0.772002299897283860, 0.771970517945487880, 0.771938734063765790, 0.771906948252196190, 0.771875160510859800, 0.771843370839835560, 0.771811579239202850, 0.771779785709041160, +0.771747990249430080, 0.771716192860449010, 0.771684393542177440, 0.771652592294694300, 0.771620789118080300, 0.771588984012414270, 0.771557176977775820, 0.771525368014244430, +0.771493557121899600, 0.771461744300820820, 0.771429929551087800, 0.771398112872779260, 0.771366294265976140, 0.771334473730757140, 0.771302651267202100, 0.771270826875390390, +0.771239000555401510, 0.771207172307315280, 0.771175342131210420, 0.771143510027167860, 0.771111675995266530, 0.771079840035585940, 0.771048002148205790, 0.771016162333205690, +0.770984320590665130, 0.770952476920663710, 0.770920631323280590, 0.770888783798596490, 0.770856934346690450, 0.770825082967641960, 0.770793229661530850, 0.770761374428436620, +0.770729517268438970, 0.770697658181617510, 0.770665797168051390, 0.770633934227821340, 0.770602069361006390, 0.770570202567686380, 0.770538333847940790, 0.770506463201849350, +0.770474590629491750, 0.770442716130947170, 0.770410839706296310, 0.770378961355618340, 0.770347081078992970, 0.770315198876499910, 0.770283314748218870, 0.770251428694229580, +0.770219540714611630, 0.770187650809444290, 0.770155758978808500, 0.770123865222783200, 0.770091969541448210, 0.770060071934883350, 0.770028172403168340, 0.769996270946382790, +0.769964367564606180, 0.769932462257919110, 0.769900555026400870, 0.769868645870131260, 0.769836734789190010, 0.769804821783656950, 0.769772906853611880, 0.769740989999134430, +0.769709071220303960, 0.769677150517201540, 0.769645227889906080, 0.769613303338497530, 0.769581376863055830, 0.769549448463660690, 0.769517518140391930, 0.769485585893329270, +0.769453651722552090, 0.769421715628141430, 0.769389777610176460, 0.769357837668737000, 0.769325895803902980, 0.769293952015754230, 0.769262006304370580, 0.769230058669831410, +0.769198109112217640, 0.769166157631608560, 0.769134204228084100, 0.769102248901724070, 0.769070291652608540, 0.769038332480817210, 0.769006371386430020, 0.768974408369526460, +0.768942443430187250, 0.768910476568492100, 0.768878507784520710, 0.768846537078353040, 0.768814564450069020, 0.768782589899748570, 0.768750613427471090, 0.768718635033317720, +0.768686654717367630, 0.768654672479700980, 0.768622688320397710, 0.768590702239537630, 0.768558714237200790, 0.768526724313467250, 0.768494732468416260, 0.768462738702129000, +0.768430743014684950, 0.768398745406163930, 0.768366745876646220, 0.768334744426211520, 0.768302741054940010, 0.768270735762911610, 0.768238728550205810, 0.768206719416903770, +0.768174708363084880, 0.768142695388829290, 0.768110680494216940, 0.768078663679327870, 0.768046644944242240, 0.768014624289039330, 0.767982601713800390, 0.767950577218605050, +0.767918550803533220, 0.767886522468665070, 0.767854492214080530, 0.767822460039859770, 0.767790425946082930, 0.767758389932829300, 0.767726352000180470, 0.767694312148215600, +0.767662270377015070, 0.767630226686658810, 0.767598181077226990, 0.767566133548799660, 0.767534084101457070, 0.767502032735278620, 0.767469979450345790, 0.767437924246737960, +0.767405867124535180, 0.767373808083817940, 0.767341747124666070, 0.767309684247159840, 0.767277619451378850, 0.767245552737404360, 0.767213484105315980, 0.767181413555193980, +0.767149341087118300, 0.767117266701169420, 0.767085190397427290, 0.767053112175972160, 0.767021032036883770, 0.766988949980243250, 0.766956866006130440, 0.766924780114625390, +0.766892692305808480, 0.766860602579759850, 0.766828510936559680, 0.766796417376287560, 0.766764321899025100, 0.766732224504851790, 0.766700125193847890, 0.766668023966093680, +0.766635920821669540, 0.766603815760655500, 0.766571708783131860, 0.766539599889178410, 0.766507489078876560, 0.766475376352306000, 0.766443261709547020, 0.766411145150679870, +0.766379026675784840, 0.766346906284942180, 0.766314783978232380, 0.766282659755734950, 0.766250533617531480, 0.766218405563701690, 0.766186275594325950, 0.766154143709484430, +0.766122009909257500, 0.766089874193725650, 0.766057736562968490, 0.766025597017067630, 0.765993455556102650, 0.765961312180154060, 0.765929166889302240, 0.765897019683627560, +0.765864870563210290, 0.765832719528130810, 0.765800566578468960, 0.765768411714306320, 0.765736254935722620, 0.765704096242798230, 0.765671935635613640, 0.765639773114249240, +0.765607608678785300, 0.765575442329302520, 0.765543274065880410, 0.765511103888600770, 0.765478931797543340, 0.765446757792788590, 0.765414581874416910, 0.765382404042508790, +0.765350224297144610, 0.765318042638404420, 0.765285859066369590, 0.765253673581120180, 0.765221486182736670, 0.765189296871299220, 0.765157105646888660, 0.765124912509585360, +0.765092717459469720, 0.765060520496621770, 0.765028321621123110, 0.764996120833053570, 0.764963918132493760, 0.764931713519524160, 0.764899506994225260, 0.764867298556677570, +0.764835088206961110, 0.764802875945157500, 0.764770661771346670, 0.764738445685609220, 0.764706227688025650, 0.764674007778676450, 0.764641785957642320, 0.764609562225003650, +0.764577336580840480, 0.764545109025234650, 0.764512879558265970, 0.764480648180015150, 0.764448414890562700, 0.764416179689989210, 0.764383942578375160, 0.764351703555801400, +0.764319462622347730, 0.764287219778095990, 0.764254975023126230, 0.764222728357519030, 0.764190479781355010, 0.764158229294714770, 0.764125976897678920, 0.764093722590327600, +0.764061466372742530, 0.764029208245003870, 0.763996948207192110, 0.763964686259387960, 0.763932422401672140, 0.763900156634125250, 0.763867888956828000, 0.763835619369860440, +0.763803347873304390, 0.763771074467239910, 0.763738799151747920, 0.763706521926908800, 0.763674242792803380, 0.763641961749512380, 0.763609678797116500, 0.763577393935695790, +0.763545107165332190, 0.763512818486105860, 0.763480527898097390, 0.763448235401387730, 0.763415940996057360, 0.763383644682187220, 0.763351346459857360, 0.763319046329149710, +0.763286744290144540, 0.763254440342922340, 0.763222134487564150, 0.763189826724150590, 0.763157517052762470, 0.763125205473480510, 0.763092891986385080, 0.763060576591557900, +0.763028259289079360, 0.762995940079030040, 0.762963618961490900, 0.762931295936542850, 0.762898971004266400, 0.762866644164742040, 0.762834315418051690, 0.762801984764275410, +0.762769652203494240, 0.762737317735789010, 0.762704981361240320, 0.762672643079929320, 0.762640302891936630, 0.762607960797342720, 0.762575616796229430, 0.762543270888677020, +0.762510923074766530, 0.762478573354578690, 0.762446221728194430, 0.762413868195694570, 0.762381512757160040, 0.762349155412671230, 0.762316796162310070, 0.762284435006156950, +0.762252071944292680, 0.762219706976798190, 0.762187340103754550, 0.762154971325242570, 0.762122600641342520, 0.762090228052136550, 0.762057853557704950, 0.762025477158128850, +0.761993098853488980, 0.761960718643866390, 0.761928336529342000, 0.761895952509996640, 0.761863566585911030, 0.761831178757166990, 0.761798789023845010, 0.761766397386026030, +0.761734003843791090, 0.761701608397221120, 0.761669211046397180, 0.761636811791400080, 0.761604410632310550, 0.761572007569210400, 0.761539602602180340, 0.761507195731301320, +0.761474786956654160, 0.761442376278320120, 0.761409963696380140, 0.761377549210914720, 0.761345132822005890, 0.761312714529734260, 0.761280294334180980, 0.761247872235426780, +0.761215448233553030, 0.761183022328640550, 0.761150594520770610, 0.761118164810023590, 0.761085733196481650, 0.761053299680225500, 0.761020864261336080, 0.760988426939894440, +0.760955987715981720, 0.760923546589679090, 0.760891103561067040, 0.760858658630227720, 0.760826211797241750, 0.760793763062190380, 0.760761312425154430, 0.760728859886215300, +0.760696405445454030, 0.760663949102951760, 0.760631490858789010, 0.760599030713048130, 0.760566568665809630, 0.760534104717154770, 0.760501638867164600, 0.760469171115920270, +0.760436701463503170, 0.760404229909994230, 0.760371756455474060, 0.760339281100025130, 0.760306803843728060, 0.760274324686664000, 0.760241843628914000, 0.760209360670559550, +0.760176875811681580, 0.760144389052360920, 0.760111900392679730, 0.760079409832718930, 0.760046917372559580, 0.760014423012282950, 0.759981926751970180, 0.759949428591702670, +0.759916928531561560, 0.759884426571627470, 0.759851922711982990, 0.759819416952708710, 0.759786909293885810, 0.759754399735595780, 0.759721888277919640, 0.759689374920938800, +0.759656859664733950, 0.759624342509387480, 0.759591823454980220, 0.759559302501593430, 0.759526779649308370, 0.759494254898206210, 0.759461728248368550, 0.759429199699876540, +0.759396669252811020, 0.759364136907254350, 0.759331602663287360, 0.759299066520991330, 0.759266528480447620, 0.759233988541737630, 0.759201446704942610, 0.759168902970144050, +0.759136357337422680, 0.759103809806860870, 0.759071260378539670, 0.759038709052540230, 0.759006155828944040, 0.758973600707832490, 0.758941043689286830, 0.758908484773388130, +0.758875923960218750, 0.758843361249859520, 0.758810796642391930, 0.758778230137897250, 0.758745661736457080, 0.758713091438152800, 0.758680519243065680, 0.758647945151276760, +0.758615369162868540, 0.758582791277921940, 0.758550211496518360, 0.758517629818739160, 0.758485046244665950, 0.758452460774380110, 0.758419873407963130, 0.758387284145495830, +0.758354692987060930, 0.758322099932739360, 0.758289504982612490, 0.758256908136761830, 0.758224309395268970, 0.758191708758215290, 0.758159106225681720, 0.758126501797750980, +0.758093895474504120, 0.758061287256022400, 0.758028677142387530, 0.757996065133680900, 0.757963451229984100, 0.757930835431378740, 0.757898217737945630, 0.757865598149767620, +0.757832976666925620, 0.757800353289501130, 0.757767728017575750, 0.757735100851231080, 0.757702471790548620, 0.757669840835609510, 0.757637207986496250, 0.757604573243290110, +0.757571936606072470, 0.757539298074924930, 0.757506657649929190, 0.757474015331166760, 0.757441371118719340, 0.757408725012667980, 0.757376077013095280, 0.757343427120082400, +0.757310775333711050, 0.757278121654062720, 0.757245466081219010, 0.757212808615261630, 0.757180149256272310, 0.757147488004331960, 0.757114824859523640, 0.757082159821928060, +0.757049492891627150, 0.757016824068702520, 0.756984153353235770, 0.756951480745308710, 0.756918806245002410, 0.756886129852399670, 0.756853451567581550, 0.756820771390629750, +0.756788089321626110, 0.756755405360652110, 0.756722719507789470, 0.756690031763120220, 0.756657342126725970, 0.756624650598688330, 0.756591957179088780, 0.756559261868009590, +0.756526564665532360, 0.756493865571738590, 0.756461164586709870, 0.756428461710528580, 0.756395756943276100, 0.756363050285034030, 0.756330341735884540, 0.756297631295909210, +0.756264918965189770, 0.756232204743807810, 0.756199488631845610, 0.756166770629384640, 0.756134050736506860, 0.756101328953293520, 0.756068605279827220, 0.756035879716189460, +0.756003152262461840, 0.755970422918726180, 0.755937691685064750, 0.755904958561559040, 0.755872223548290980, 0.755839486645341950, 0.755806747852794670, 0.755774007170730400, +0.755741264599231190, 0.755708520138378530, 0.755675773788254790, 0.755643025548941690, 0.755610275420520620, 0.755577523403074270, 0.755544769496684140, 0.755512013701431950, +0.755479256017399510, 0.755446496444669210, 0.755413734983322760, 0.755380971633441870, 0.755348206395108250, 0.755315439268404390, 0.755282670253412000, 0.755249899350212920, +0.755217126558888730, 0.755184351879522150, 0.755151575312194570, 0.755118796856988130, 0.755086016513984330, 0.755053234283265870, 0.755020450164914260, 0.754987664159011200, +0.754954876265639400, 0.754922086484880350, 0.754889294816815990, 0.754856501261528260, 0.754823705819099410, 0.754790908489611390, 0.754758109273146130, 0.754725308169785230, +0.754692505179611390, 0.754659700302706240, 0.754626893539151910, 0.754594084889030010, 0.754561274352423260, 0.754528461929413250, 0.754495647620082140, 0.754462831424511540, +0.754430013342784140, 0.754397193374981790, 0.754364371521186180, 0.754331547781479930, 0.754298722155944730, 0.754265894644662760, 0.754233065247715830, 0.754200233965186430, +0.754167400797156500, 0.754134565743708070, 0.754101728804922880, 0.754068889980883730, 0.754036049271672340, 0.754003206677370750, 0.753970362198060910, 0.753937515833825510, +0.753904667584746280, 0.753871817450905370, 0.753838965432384600, 0.753806111529266690, 0.753773255741633560, 0.753740398069567270, 0.753707538513149760, 0.753674677072463610, +0.753641813747590760, 0.753608948538613150, 0.753576081445613500, 0.753543212468673510, 0.753510341607875560, 0.753477468863301470, 0.753444594235033960, 0.753411717723155070, +0.753378839327746740, 0.753345959048891120, 0.753313076886670820, 0.753280192841167870, 0.753247306912464440, 0.753214419100642460, 0.753181529405784760, 0.753148637827973140, +0.753115744367290010, 0.753082849023817280, 0.753049951797637560, 0.753017052688833120, 0.752984151697485670, 0.752951248823678140, 0.752918344067492470, 0.752885437429010930, +0.752852528908315550, 0.752819618505489060, 0.752786706220613610, 0.752753792053771350, 0.752720876005044340, 0.752687958074515500, 0.752655038262266650, 0.752622116568380290, +0.752589192992938250, 0.752556267536023670, 0.752523340197718270, 0.752490410978104650, 0.752457479877264630, 0.752424546895281150, 0.752391612032236370, 0.752358675288212320, +0.752325736663291830, 0.752292796157556950, 0.752259853771090060, 0.752226909503973310, 0.752193963356289630, 0.752161015328120960, 0.752128065419549800, 0.752095113630658170, +0.752062159961529030, 0.752029204412244520, 0.751996246982886920, 0.751963287673538480, 0.751930326484282150, 0.751897363415199970, 0.751864398466374320, 0.751831431637887460, +0.751798462929822220, 0.751765492342260980, 0.751732519875285550, 0.751699545528979220, 0.751666569303424010, 0.751633591198702320, 0.751600611214896410, 0.751567629352089320, +0.751534645610363090, 0.751501659989800120, 0.751468672490482880, 0.751435683112494200, 0.751402691855916350, 0.751369698720831810, 0.751336703707322640, 0.751303706815471980, +0.751270708045362110, 0.751237707397075520, 0.751204704870694240, 0.751171700466301660, 0.751138694183979600, 0.751105686023811000, 0.751072675985877790, 0.751039664070263240, +0.751006650277049490, 0.750973634606318940, 0.750940617058154510, 0.750907597632638480, 0.750874576329853440, 0.750841553149881770, 0.750808528092806520, 0.750775501158709830, +0.750742472347674550, 0.750709441659782590, 0.750676409095117460, 0.750643374653761300, 0.750610338335796710, 0.750577300141305860, 0.750544260070372230, 0.750511218123077860, +0.750478174299505470, 0.750445128599737330, 0.750412081023856700, 0.750379031571945740, 0.750345980244087050, 0.750312927040363680, 0.750279871960857990, 0.750246815005652600, +0.750213756174829880, 0.750180695468473100, 0.750147632886664530, 0.750114568429486870, 0.750081502097022510, 0.750048433889354720, 0.750015363806565860, 0.749982291848738440, +0.749949218015955150, 0.749916142308299060, 0.749883064725852640, 0.749849985268698500, 0.749816903936919240, 0.749783820730597910, 0.749750735649816980, 0.749717648694659070, +0.749684559865207210, 0.749651469161543900, 0.749618376583752080, 0.749585282131914000, 0.749552185806112830, 0.749519087606431380, 0.749485987532952150, 0.749452885585757620, +0.749419781764931290, 0.749386676070555310, 0.749353568502712840, 0.749320459061486030, 0.749287347746958490, 0.749254234559212470, 0.749221119498330920, 0.749188002564396220, +0.749154883757491840, 0.749121763077700180, 0.749088640525104270, 0.749055516099786270, 0.749022389801830000, 0.748989261631317630, 0.748956131588331740, 0.748922999672955950, +0.748889865885272510, 0.748856730225364590, 0.748823592693314440, 0.748790453289205570, 0.748757312013120680, 0.748724168865142480, 0.748691023845353460, 0.748657876953837230, +0.748624728190676380, 0.748591577555953620, 0.748558425049751670, 0.748525270672153910, 0.748492114423243040, 0.748458956303101890, 0.748425796311813050, 0.748392634449459910, +0.748359470716125300, 0.748326305111891690, 0.748293137636842580, 0.748259968291060670, 0.748226797074628800, 0.748193623987629670, 0.748160449030146670, 0.748127272202262720, +0.748094093504060530, 0.748060912935622710, 0.748027730497032970, 0.747994546188373910, 0.747961360009728570, 0.747928171961179440, 0.747894982042810240, 0.747861790254703450, +0.747828596596942340, 0.747795401069609290, 0.747762203672788120, 0.747729004406561430, 0.747695803271012040, 0.747662600266223330, 0.747629395392278130, 0.747596188649259360, +0.747562980037249970, 0.747529769556333320, 0.747496557206592360, 0.747463342988109900, 0.747430126900968880, 0.747396908945252790, 0.747363689121044340, 0.747330467428426680, +0.747297243867482750, 0.747264018438295820, 0.747230791140948920, 0.747197561975525000, 0.747164330942106880, 0.747131098040778370, 0.747097863271621980, 0.747064626634720620, +0.747031388130158010, 0.746998147758016980, 0.746964905518380570, 0.746931661411331490, 0.746898415436953680, 0.746865167595329730, 0.746831917886543020, 0.746798666310676150, +0.746765412867812840, 0.746732157558036120, 0.746698900381428830, 0.746665641338074120, 0.746632380428055580, 0.746599117651456030, 0.746565853008358760, 0.746532586498846570, +0.746499318123003190, 0.746466047880911530, 0.746432775772654770, 0.746399501798315710, 0.746366225957978190, 0.746332948251725140, 0.746299668679639370, 0.746266387241804830, +0.746233103938304220, 0.746199818769220920, 0.746166531734637760, 0.746133242834638550, 0.746099952069306240, 0.746066659438724080, 0.746033364942974900, 0.746000068582142630, +0.745966770356310200, 0.745933470265560890, 0.745900168309977630, 0.745866864489644120, 0.745833558804643530, 0.745800251255059000, 0.745766941840973590, 0.745733630562471110, +0.745700317419634610, 0.745667002412546910, 0.745633685541292060, 0.745600366805952990, 0.745567046206613070, 0.745533723743355140, 0.745500399416263230, 0.745467073225420270, +0.745433745170909770, 0.745400415252814420, 0.745367083471218490, 0.745333749826204710, 0.745300414317856760, 0.745267076946257270, 0.745233737711490480, 0.745200396613639350, +0.745167053652787240, 0.745133708829017190, 0.745100362142413150, 0.745067013593058160, 0.745033663181035370, 0.745000310906428710, 0.744966956769321340, 0.744933600769796530, +0.744900242907937440, 0.744866883183827990, 0.744833521597551450, 0.744800158149190980, 0.744766792838829850, 0.744733425666552100, 0.744700056632440770, 0.744666685736579240, +0.744633312979050670, 0.744599938359939210, 0.744566561879327790, 0.744533183537300140, 0.744499803333939060, 0.744466421269328830, 0.744433037343552590, 0.744399651556693740, +0.744366263908835420, 0.744332874400061790, 0.744299483030455900, 0.744266089800101120, 0.744232694709081380, 0.744199297757479840, 0.744165898945380100, 0.744132498272865320, +0.744099095740019530, 0.744065691346926020, 0.744032285093668370, 0.743998876980329630, 0.743965467006994060, 0.743932055173744720, 0.743898641480665310, 0.743865225927838990, +0.743831808515349910, 0.743798389243281340, 0.743764968111716660, 0.743731545120739470, 0.743698120270433580, 0.743664693560882380, 0.743631264992169250, 0.743597834564378110, +0.743564402277592570, 0.743530968131895900, 0.743497532127371570, 0.743464094264103540, 0.743430654542175500, 0.743397212961670720, 0.743363769522672580, 0.743330324225265350, +0.743296877069532290, 0.743263428055557120, 0.743229977183422990, 0.743196524453214270, 0.743163069865014240, 0.743129613418906490, 0.743096155114974510, 0.743062694953302350, +0.743029232933973380, 0.742995769057071210, 0.742962303322679760, 0.742928835730882640, 0.742895366281763340, 0.742861894975405450, 0.742828421811893010, 0.742794946791309640, +0.742761469913738810, 0.742727991179264020, 0.742694510587969540, 0.742661028139938840, 0.742627543835255530, 0.742594057674003110, 0.742560569656265710, 0.742527079782127060, +0.742493588051670650, 0.742460094464979850, 0.742426599022139260, 0.742393101723232140, 0.742359602568341990, 0.742326101557553080, 0.742292598690948880, 0.742259093968613340, +0.742225587390629600, 0.742192078957082280, 0.742158568668054740, 0.742125056523630810, 0.742091542523893870, 0.742058026668928390, 0.742024508958817890, 0.741990989393646050, +0.741957467973496490, 0.741923944698453570, 0.741890419568600800, 0.741856892584021880, 0.741823363744800510, 0.741789833051020970, 0.741756300502766970, 0.741722766100122110, +0.741689229843170090, 0.741655691731995300, 0.741622151766681230, 0.741588609947311460, 0.741555066273970610, 0.741521520746741940, 0.741487973365709600, 0.741454424130956860, +0.741420873042568430, 0.741387320100627910, 0.741353765305219010, 0.741320208656425450, 0.741286650154331590, 0.741253089799021160, 0.741219527590577960, 0.741185963529085720, +0.741152397614628810, 0.741118829847290940, 0.741085260227155930, 0.741051688754307490, 0.741018115428830230, 0.740984540250807620, 0.740950963220323280, 0.740917384337461900, +0.740883803602307100, 0.740850221014942690, 0.740816636575452490, 0.740783050283921000, 0.740749462140431910, 0.740715872145069070, 0.740682280297916380, 0.740648686599058250, +0.740615091048578260, 0.740581493646560670, 0.740547894393089100, 0.740514293288248030, 0.740480690332121270, 0.740447085524792660, 0.740413478866346120, 0.740379870356866250, +0.740346259996436550, 0.740312647785141050, 0.740279033723064140, 0.740245417810289740, 0.740211800046901680, 0.740178180432983890, 0.740144558968620970, 0.740110935653896520, +0.740077310488894910, 0.740043683473699640, 0.740010054608395420, 0.739976423893066060, 0.739942791327795720, 0.739909156912668120, 0.739875520647767850, 0.739841882533178730, +0.739808242568985030, 0.739774600755270350, 0.739740957092119510, 0.739707311579616220, 0.739673664217844750, 0.739640015006888700, 0.739606363946832990, 0.739572711037761340, +0.739539056279757690, 0.739505399672906630, 0.739471741217291980, 0.739438080912998120, 0.739404418760108760, 0.739370754758708500, 0.739337088908881500, 0.739303421210711800, +0.739269751664283100, 0.739236080269680460, 0.739202407026987580, 0.739168731936288630, 0.739135054997667630, 0.739101376211209190, 0.739067695576997470, 0.739034013095116290, +0.739000328765649920, 0.738966642588683050, 0.738932954564299530, 0.738899264692583270, 0.738865572973619210, 0.738831879407491290, 0.738798183994283540, 0.738764486734080130, +0.738730787626965760, 0.738697086673024470, 0.738663383872340320, 0.738629679224997560, 0.738595972731080800, 0.738562264390674180, 0.738528554203861880, 0.738494842170727810, +0.738461128291357130, 0.738427412565833440, 0.738393694994241350, 0.738359975576664660, 0.738326254313188320, 0.738292531203896370, 0.738258806248872750, 0.738225079448202480, +0.738191350801969510, 0.738157620310258110, 0.738123887973152430, 0.738090153790737280, 0.738056417763096720, 0.738022679890315110, 0.737988940172476520, 0.737955198609665960, +0.737921455201967280, 0.737887709949465060, 0.737853962852243250, 0.737820213910386770, 0.737786463123979770, 0.737752710493106640, 0.737718956017851420, 0.737685199698299150, +0.737651441534533880, 0.737617681526639650, 0.737583919674701600, 0.737550155978803690, 0.737516390439030390, 0.737482623055465860, 0.737448853828195030, 0.737415082757302050, +0.737381309842871420, 0.737347535084987180, 0.737313758483734370, 0.737279980039197150, 0.737246199751460110, 0.737212417620607190, 0.737178633646723420, 0.737144847829893310, +0.737111060170200890, 0.737077270667730540, 0.737043479322567420, 0.737009686134795450, 0.736975891104499350, 0.736942094231763270, 0.736908295516672250, 0.736874494959310460, +0.736840692559762030, 0.736806888318112250, 0.736773082234445260, 0.736739274308845560, 0.736705464541397400, 0.736671652932185840, 0.736637839481295130, 0.736604024188809880, +0.736570207054814240, 0.736536388079393370, 0.736502567262631520, 0.736468744604613420, 0.736434920105423000, 0.736401093765145510, 0.736367265583865450, 0.736333435561667080, +0.736299603698634900, 0.736265769994854050, 0.736231934450408690, 0.736198097065383190, 0.736164257839862830, 0.736130416773931760, 0.736096573867674690, 0.736062729121175870, +0.736028882534520480, 0.735995034107792990, 0.735961183841077780, 0.735927331734459460, 0.735893477788023050, 0.735859622001852950, 0.735825764376033750, 0.735791904910649830, +0.735758043605786560, 0.735724180461528100, 0.735690315477959160, 0.735656448655164220, 0.735622579993228440, 0.735588709492236090, 0.735554837152271770, 0.735520962973420730, +0.735487086955767140, 0.735453209099395930, 0.735419329404391360, 0.735385447870838700, 0.735351564498822440, 0.735317679288427390, 0.735283792239737720, 0.735249903352839020, +0.735216012627815330, 0.735182120064751810, 0.735148225663732610, 0.735114329424843120, 0.735080431348167920, 0.735046531433791510, 0.735012629681798480, 0.734978726092274210, +0.734944820665303090, 0.734910913400970030, 0.734877004299359320, 0.734843093360556420, 0.734809180584645730, 0.734775265971711830, 0.734741349521840110, 0.734707431235114950, +0.734673511111621160, 0.734639589151443450, 0.734605665354666980, 0.734571739721376350, 0.734537812251656370, 0.734503882945591550, 0.734469951803267350, 0.734436018824768280, +0.734402084010179150, 0.734368147359584440, 0.734334208873069770, 0.734300268550719500, 0.734266326392618570, 0.734232382398851470, 0.734198436569503790, 0.734164488904660130, +0.734130539404404760, 0.734096588068823390, 0.734062634898000610, 0.734028679892021140, 0.733994723050969800, 0.733960764374931850, 0.733926803863992010, 0.733892841518235190, +0.733858877337746020, 0.733824911322609850, 0.733790943472911410, 0.733756973788735720, 0.733723002270167180, 0.733689028917291490, 0.733655053730193240, 0.733621076708957260, +0.733587097853668380, 0.733553117164412070, 0.733519134641272940, 0.733485150284335700, 0.733451164093685830, 0.733417176069408040, 0.733383186211587380, 0.733349194520308330, +0.733315200995656720, 0.733281205637717040, 0.733247208446574430, 0.733213209422313380, 0.733179208565019720, 0.733145205874777940, 0.733111201351673290, 0.733077194995790160, +0.733043186807214480, 0.733009176786030730, 0.732975164932324060, 0.732941151246179310, 0.732907135727681850, 0.732873118376916600, 0.732839099193968170, 0.732805078178922380, +0.732771055331863820, 0.732737030652877760, 0.732703004142048700, 0.732668975799462440, 0.732634945625203820, 0.732600913619357750, 0.732566879782009180, 0.732532844113243600, +0.732498806613146040, 0.732464767281801320, 0.732430726119294500, 0.732396683125711160, 0.732362638301136020, 0.732328591645654340, 0.732294543159350830, 0.732260492842311430, +0.732226440694620620, 0.732192386716363770, 0.732158330907625610, 0.732124273268492050, 0.732090213799047710, 0.732056152499377500, 0.732022089369567250, 0.731988024409701900, +0.731953957619866370, 0.731919889000145600, 0.731885818550625510, 0.731851746271390710, 0.731817672162526690, 0.731783596224118150, 0.731749518456251020, 0.731715438859009910, +0.731681357432480310, 0.731647274176747020, 0.731613189091895770, 0.731579102178011700, 0.731545013435179750, 0.731510922863484960, 0.731476830463013260, 0.731442736233849370, +0.731408640176078430, 0.731374542289786160, 0.731340442575057480, 0.731306341031977780, 0.731272237660631870, 0.731238132461105690, 0.731204025433484170, 0.731169916577852570, +0.731135805894295940, 0.731101693382900100, 0.731067579043749970, 0.731033462876930830, 0.730999344882527820, 0.730965225060626780, 0.730931103411312620, 0.730896979934670730, +0.730862854630786040, 0.730828727499744590, 0.730794598541631310, 0.730760467756531140, 0.730726335144530230, 0.730692200705713390, 0.730658064440166120, 0.730623926347973350, +0.730589786429221010, 0.730555644683994250, 0.730521501112378460, 0.730487355714458550, 0.730453208490320470, 0.730419059440049480, 0.730384908563730840, 0.730350755861449600, +0.730316601333291790, 0.730282444979342360, 0.730248286799686900, 0.730214126794410450, 0.730179964963598940, 0.730145801307337640, 0.730111635825711700, 0.730077468518806390, +0.730043299386707760, 0.730009128429500830, 0.729974955647270880, 0.729940781040103740, 0.729906604608084650, 0.729872426351299010, 0.729838246269832180, 0.729804064363769880, +0.729769880633197480, 0.729735695078200350, 0.729701507698863660, 0.729667318495273550, 0.729633127467515070, 0.729598934615673930, 0.729564739939835060, 0.729530543440084610, +0.729496345116507740, 0.729462144969190150, 0.729427942998216890, 0.729393739203674010, 0.729359533585646760, 0.729325326144220410, 0.729291116879481120, 0.729256905791513920, +0.729222692880404530, 0.729188478146237990, 0.729154261589100680, 0.729120043209077640, 0.729085823006254570, 0.729051600980716640, 0.729017377132549880, 0.728983151461839900, +0.728948923968671840, 0.728914694653131300, 0.728880463515304220, 0.728846230555276090, 0.728811995773132270, 0.728777759168958150, 0.728743520742840100, 0.728709280494863050, +0.728675038425112610, 0.728640794533674920, 0.728606548820635140, 0.728572301286078970, 0.728538051930091910, 0.728503800752759890, 0.728469547754168390, 0.728435292934403010, +0.728401036293549130, 0.728366777831693010, 0.728332517548919810, 0.728298255445315460, 0.728263991520964990, 0.728229725775955020, 0.728195458210370680, 0.728161188824297700, +0.728126917617821330, 0.728092644591028180, 0.728058369744003290, 0.728024093076832470, 0.727989814589601100, 0.727955534282395570, 0.727921252155301120, 0.727886968208403370, +0.727852682441788360, 0.727818394855541670, 0.727784105449749030, 0.727749814224495920, 0.727715521179868490, 0.727681226315952220, 0.727646929632832840, 0.727612631130595930, +0.727578330809327770, 0.727544028669113720, 0.727509724710039610, 0.727475418932190920, 0.727441111335653920, 0.727406801920514210, 0.727372490686857390, 0.727338177634769160, +0.727303862764335670, 0.727269546075642650, 0.727235227568775460, 0.727200907243820360, 0.727166585100863070, 0.727132261139989410, 0.727097935361284640, 0.727063607764835470, +0.727029278350727170, 0.726994947119045780, 0.726960614069876660, 0.726926279203306320, 0.726891942519420240, 0.726857604018304350, 0.726823263700044130, 0.726788921564726080, +0.726754577612435670, 0.726720231843258850, 0.726685884257281200, 0.726651534854589000, 0.726617183635268060, 0.726582830599403980, 0.726548475747082920, 0.726514119078390700, +0.726479760593413350, 0.726445400292236140, 0.726411038174945790, 0.726376674241627770, 0.726342308492368140, 0.726307940927252480, 0.726273571546367180, 0.726239200349797940, +0.726204827337630810, 0.726170452509951270, 0.726136075866845810, 0.726101697408400250, 0.726067317134700410, 0.726032935045832000, 0.725998551141881610, 0.725964165422934740, +0.725929777889077200, 0.725895388540395480, 0.725860997376975290, 0.725826604398902680, 0.725792209606263120, 0.725757812999143440, 0.725723414577629230, 0.725689014341806440, +0.725654612291760870, 0.725620208427579020, 0.725585802749346700, 0.725551395257149840, 0.725516985951074170, 0.725482574831206370, 0.725448161897632170, 0.725413747150437490, +0.725379330589708160, 0.725344912215530880, 0.725310492027991250, 0.725276070027175420, 0.725241646213169110, 0.725207220586058910, 0.725172793145930750, 0.725138363892870230, +0.725103932826964170, 0.725069499948298280, 0.725035065256958600, 0.725000628753030950, 0.724966190436602040, 0.724931750307757690, 0.724897308366583950, 0.724862864613166620, +0.724828419047592430, 0.724793971669947190, 0.724759522480317050, 0.724725071478787840, 0.724690618665446150, 0.724656164040377910, 0.724621707603669400, 0.724587249355406190, +0.724552789295675240, 0.724518327424562240, 0.724483863742153120, 0.724449398248534710, 0.724414930943792830, 0.724380461828013520, 0.724345990901282820, 0.724311518163687440, +0.724277043615313310, 0.724242567256246470, 0.724208089086572970, 0.724173609106379510, 0.724139127315752030, 0.724104643714776790, 0.724070158303539600, 0.724035671082127300, +0.724001182050625800, 0.723966691209121490, 0.723932198557699970, 0.723897704096448380, 0.723863207825452550, 0.723828709744798290, 0.723794209854572550, 0.723759708154861350, +0.723725204645750850, 0.723690699327327100, 0.723656192199676810, 0.723621683262886120, 0.723587172517041190, 0.723552659962227950, 0.723518145598533560, 0.723483629426043610, +0.723449111444844690, 0.723414591655022640, 0.723380070056664380, 0.723345546649856060, 0.723311021434683840, 0.723276494411233760, 0.723241965579592640, 0.723207434939846740, +0.723172902492082210, 0.723138368236385110, 0.723103832172842460, 0.723069294301540100, 0.723034754622564280, 0.723000213136001820, 0.722965669841938880, 0.722931124740461840, +0.722896577831656620, 0.722862029115610150, 0.722827478592408700, 0.722792926262138650, 0.722758372124885810, 0.722723816180737440, 0.722689258429779490, 0.722654698872098430, +0.722620137507780310, 0.722585574336912170, 0.722551009359580050, 0.722516442575870440, 0.722481873985869380, 0.722447303589664020, 0.722412731387340300, 0.722378157378984480, +0.722343581564683590, 0.722309003944523800, 0.722274424518591470, 0.722239843286972660, 0.722205260249754620, 0.722170675407023510, 0.722136088758865590, 0.722101500305367240, +0.722066910046615380, 0.722032317982696290, 0.721997724113696340, 0.721963128439701900, 0.721928530960799790, 0.721893931677076490, 0.721859330588618290, 0.721824727695511430, +0.721790122997843180, 0.721755516495699470, 0.721720908189166680, 0.721686298078332070, 0.721651686163281570, 0.721617072444102000, 0.721582456920879300, 0.721547839593700830, +0.721513220462652760, 0.721478599527821560, 0.721443976789293620, 0.721409352247156080, 0.721374725901495100, 0.721340097752397380, 0.721305467799948970, 0.721270836044237360, +0.721236202485348590, 0.721201567123369250, 0.721166929958385830, 0.721132290990485260, 0.721097650219754030, 0.721063007646278290, 0.721028363270145410, 0.720993717091441550, +0.720959069110253540, 0.720924419326667510, 0.720889767740770630, 0.720855114352649370, 0.720820459162390460, 0.720785802170079930, 0.720751143375805260, 0.720716482779652720, +0.720681820381709030, 0.720647156182060430, 0.720612490180794210, 0.720577822377996840, 0.720543152773754910, 0.720508481368154820, 0.720473808161283700, 0.720439133153228160, +0.720404456344074800, 0.720369777733909870, 0.720335097322820970, 0.720300415110894270, 0.720265731098216120, 0.720231045284874140, 0.720196357670954360, 0.720161668256543820, +0.720126977041728680, 0.720092284026596530, 0.720057589211233640, 0.720022892595726720, 0.719988194180162240, 0.719953493964627710, 0.719918791949209380, 0.719884088133994070, +0.719849382519068160, 0.719814675104519130, 0.719779965890433580, 0.719745254876897890, 0.719710542063998870, 0.719675827451823790, 0.719641111040459140, 0.719606392829991390, +0.719571672820508050, 0.719536951012095470, 0.719502227404840490, 0.719467501998829580, 0.719432774794150240, 0.719398045790889060, 0.719363314989132750, 0.719328582388967800, +0.719293847990481680, 0.719259111793761010, 0.719224373798892480, 0.719189634005962810, 0.719154892415059250, 0.719120149026268530, 0.719085403839677450, 0.719050656855372510, +0.719015908073441290, 0.718981157493970180, 0.718946405117045990, 0.718911650942756110, 0.718876894971187010, 0.718842137202425730, 0.718807377636558780, 0.718772616273673610, +0.718737853113857070, 0.718703088157195750, 0.718668321403776460, 0.718633552853686690, 0.718598782507013030, 0.718564010363842430, 0.718529236424261470, 0.718494460688357760, +0.718459683156217890, 0.718424903827928780, 0.718390122703577050, 0.718355339783250500, 0.718320555067035400, 0.718285768555019020, 0.718250980247287950, 0.718216190143929680, +0.718181398245030910, 0.718146604550678360, 0.718111809060959620, 0.718077011775961390, 0.718042212695770620, 0.718007411820473900, 0.717972609150159040, 0.717937804684912750, +0.717902998424821750, 0.717868190369973070, 0.717833380520454200, 0.717798568876351960, 0.717763755437753170, 0.717728940204744760, 0.717694123177414320, 0.717659304355848460, +0.717624483740134430, 0.717589661330358840, 0.717554837126609500, 0.717520011128973010, 0.717485183337536190, 0.717450353752386640, 0.717415522373611280, 0.717380689201297050, +0.717345854235530880, 0.717311017476400360, 0.717276178923992310, 0.717241338578393780, 0.717206496439691590, 0.717171652507973540, 0.717136806783326250, 0.717101959265836970, +0.717067109955592530, 0.717032258852680630, 0.716997405957188080, 0.716962551269201940, 0.716927694788809130, 0.716892836516097480, 0.716857976451153680, 0.716823114594064670, +0.716788250944918160, 0.716753385503800970, 0.716718518270800350, 0.716683649246003140, 0.716648778429497150, 0.716613905821369190, 0.716579031421706420, 0.716544155230595780, +0.716509277248125080, 0.716474397474381130, 0.716439515909451210, 0.716404632553422350, 0.716369747406382040, 0.716334860468417430, 0.716299971739615680, 0.716265081220063600, +0.716230188909849240, 0.716195294809059300, 0.716160398917780940, 0.716125501236101750, 0.716090601764108880, 0.716055700501889490, 0.716020797449530620, 0.715985892607119980, +0.715950985974744600, 0.715916077552491760, 0.715881167340448490, 0.715846255338702610, 0.715811341547341050, 0.715776425966451080, 0.715741508596119740, 0.715706589436435060, +0.715671668487483760, 0.715636745749353430, 0.715601821222130900, 0.715566894905903970, 0.715531966800759920, 0.715497036906786010, 0.715462105224069170, 0.715427171752697320, +0.715392236492757630, 0.715357299444336900, 0.715322360607523300, 0.715287419982403860, 0.715252477569065850, 0.715217533367596300, 0.715182587378083160, 0.715147639600613670, +0.715112690035275000, 0.715077738682154410, 0.715042785541339710, 0.715007830612917950, 0.714972873896976720, 0.714937915393603070, 0.714902955102884820, 0.714867993024909220, +0.714833029159763540, 0.714798063507535050, 0.714763096068311790, 0.714728126842180790, 0.714693155829229100, 0.714658183029544760, 0.714623208443215030, 0.714588232070327400, +0.714553253910968690, 0.714518273965227270, 0.714483292233190070, 0.714448308714944800, 0.714413323410578280, 0.714378336320178890, 0.714343347443833540, 0.714308356781629960, +0.714273364333655070, 0.714238370099997130, 0.714203374080743190, 0.714168376275980840, 0.714133376685797350, 0.714098375310280640, 0.714063372149517980, 0.714028367203596640, +0.713993360472604640, 0.713958351956629160, 0.713923341655757990, 0.713888329570077970, 0.713853315699677580, 0.713818300044643860, 0.713783282605064410, 0.713748263381026370, +0.713713242372618020, 0.713678219579926610, 0.713643195003039520, 0.713608168642044240, 0.713573140497028800, 0.713538110568080590, 0.713503078855287080, 0.713468045358735540, +0.713433010078514120, 0.713397973014710310, 0.713362934167411480, 0.713327893536705000, 0.713292851122679150, 0.713257806925421180, 0.713222760945018350, 0.713187713181558940, +0.713152663635130190, 0.713117612305819830, 0.713082559193715100, 0.713047504298904400, 0.713012447621474750, 0.712977389161514100, 0.712942328919109690, 0.712907266894349690, +0.712872203087321580, 0.712837137498112950, 0.712802070126811180, 0.712767000973504540, 0.712731930038280390, 0.712696857321226340, 0.712661782822429980, 0.712626706541979350, +0.712591628479962050, 0.712556548636465340, 0.712521467011577480, 0.712486383605386080, 0.712451298417978610, 0.712416211449442670, 0.712381122699866530, 0.712346032169337450, +0.712310939857943470, 0.712275845765771630, 0.712240749892910640, 0.712205652239447760, 0.712170552805470700, 0.712135451591066950, 0.712100348596324870, 0.712065243821331960, +0.712030137266175920, 0.711995028930944240, 0.711959918815725290, 0.711924806920606560, 0.711889693245675530, 0.711854577791020460, 0.711819460556729070, 0.711784341542888940, +0.711749220749587690, 0.711714098176913670, 0.711678973824954490, 0.711643847693797850, 0.711608719783531240, 0.711573590094243150, 0.711538458626021050, 0.711503325378952890, +0.711468190353126030, 0.711433053548629070, 0.711397914965549380, 0.711362774603975010, 0.711327632463993330, 0.711292488545692820, 0.711257342849161200, 0.711222195374485830, +0.711187046121755320, 0.711151895091057250, 0.711116742282479340, 0.711081587696109410, 0.711046431332035710, 0.711011273190345960, 0.710976113271127970, 0.710940951574469460, +0.710905788100458900, 0.710870622849183790, 0.710835455820732150, 0.710800287015191600, 0.710765116432650500, 0.710729944073196780, 0.710694769936918160, 0.710659594023902330, +0.710624416334237790, 0.710589236868012120, 0.710554055625313490, 0.710518872606229370, 0.710483687810848360, 0.710448501239258180, 0.710413312891546410, 0.710378122767801660, +0.710342930868111510, 0.710307737192564130, 0.710272541741247100, 0.710237344514249140, 0.710202145511657610, 0.710166944733560790, 0.710131742180046380, 0.710096537851202750, +0.710061331747117940, 0.710026123867879780, 0.709990914213575960, 0.709955702784295210, 0.709920489580125100, 0.709885274601153800, 0.709850057847469020, 0.709814839319159450, +0.709779619016312810, 0.709744396939016700, 0.709709173087359920, 0.709673947461430310, 0.709638720061315790, 0.709603490887104060, 0.709568259938884060, 0.709533027216743380, +0.709497792720770070, 0.709462556451051940, 0.709427318407677810, 0.709392078590735390, 0.709356837000312710, 0.709321593636497720, 0.709286348499378990, 0.709251101589044360, +0.709215852905581980, 0.709180602449079770, 0.709145350219626320, 0.709110096217309360, 0.709074840442217020, 0.709039582894437800, 0.709004323574059630, 0.708969062481170640, +0.708933799615858780, 0.708898534978212650, 0.708863268568320160, 0.708828000386269590, 0.708792730432148630, 0.708757458706046120, 0.708722185208050080, 0.708686909938248450, +0.708651632896729280, 0.708616354083581370, 0.708581073498892660, 0.708545791142751070, 0.708510507015244870, 0.708475221116462550, 0.708439933446492360, 0.708404644005422250, +0.708369352793340120, 0.708334059810335040, 0.708298765056494810, 0.708263468531907250, 0.708228170236661400, 0.708192870170845200, 0.708157568334546790, 0.708122264727854110, +0.708086959350856080, 0.708051652203640640, 0.708016343286296150, 0.707981032598910430, 0.707945720141572420, 0.707910405914370040, 0.707875089917391790, 0.707839772150725470, +0.707804452614460010, 0.707769131308683350, 0.707733808233483970, 0.707698483388949700, 0.707663156775169560, 0.707627828392231480, 0.707592498240223630, 0.707557166319234820, +0.707521832629352980, 0.707486497170666690, 0.707451159943263800, 0.707415820947233210, 0.707380480182663200, 0.707345137649641910, 0.707309793348257500, 0.707274447278599010, +0.707239099440754250, 0.707203749834811820, 0.707168398460859770, 0.707133045318986910, 0.707097690409281500, 0.707062333731831800, 0.707026975286726090, 0.706991615074053170, +0.706956253093901200, 0.706920889346358330, 0.706885523831513480, 0.706850156549454820, 0.706814787500270820, 0.706779416684049530, 0.706744044100880100, 0.706708669750850450, +0.706673293634049070, 0.706637915750564230, 0.706602536100484960, 0.706567154683899300, 0.706531771500895630, 0.706496386551562440, 0.706460999835988420, 0.706425611354261960, +0.706390221106471540, 0.706354829092705190, 0.706319435313052080, 0.706284039767600460, 0.706248642456438260, 0.706213243379654960, 0.706177842537338400, 0.706142439929577260, +0.706107035556459820, 0.706071629418075000, 0.706036221514511180, 0.706000811845856720, 0.705965400412199910, 0.705929987213629980, 0.705894572250235110, 0.705859155522103770, +0.705823737029324220, 0.705788316771985610, 0.705752894750176220, 0.705717470963984630, 0.705682045413498990, 0.705646618098808580, 0.705611189020001640, 0.705575758177166780, +0.705540325570392150, 0.705504891199767000, 0.705469455065379720, 0.705434017167318350, 0.705398577505672360, 0.705363136080529920, 0.705327692891979500, 0.705292247940109700, +0.705256801225009560, 0.705221352746767340, 0.705185902505471750, 0.705150450501211170, 0.705114996734074740, 0.705079541204150840, 0.705044083911528060, 0.705008624856294790, +0.704973164038540160, 0.704937701458352770, 0.704902237115821010, 0.704866771011033450, 0.704831303144079160, 0.704795833515046710, 0.704760362124024380, 0.704724888971101300, +0.704689414056366200, 0.704653937379907450, 0.704618458941813520, 0.704582978742173790, 0.704547496781076640, 0.704512013058610660, 0.704476527574864450, 0.704441040329927160, +0.704405551323887380, 0.704370060556833600, 0.704334568028854410, 0.704299073740039080, 0.704263577690476090, 0.704228079880254150, 0.704192580309461750, 0.704157078978188130, +0.704121575886521800, 0.704086071034551340, 0.704050564422365910, 0.704015056050054100, 0.703979545917704620, 0.703944034025405950, 0.703908520373247580, 0.703873004961317880, +0.703837487789705670, 0.703801968858499440, 0.703766448167788550, 0.703730925717661600, 0.703695401508207310, 0.703659875539514260, 0.703624347811671710, 0.703588818324768380, +0.703553287078892970, 0.703517754074134080, 0.703482219310581080, 0.703446682788322560, 0.703411144507447240, 0.703375604468043810, 0.703340062670201660, 0.703304519114009490, +0.703268973799555550, 0.703233426726929570, 0.703197877896220010, 0.703162327307515710, 0.703126774960905250, 0.703091220856478240, 0.703055664994323150, 0.703020107374528910, +0.702984547997184130, 0.702948986862378280, 0.702913423970199850, 0.702877859320737990, 0.702842292914081180, 0.702806724750318800, 0.702771154829539670, 0.702735583151832710, +0.702700009717286520, 0.702664434525990590, 0.702628857578033510, 0.702593278873503980, 0.702557698412491600, 0.702522116195084980, 0.702486532221373030, 0.702450946491444460, +0.702415359005388870, 0.702379769763294860, 0.702344178765251350, 0.702308586011347160, 0.702272991501671770, 0.702237395236314010, 0.702201797215362690, 0.702166197438906510, +0.702130595907035190, 0.702094992619837430, 0.702059387577402160, 0.702023780779818090, 0.701988172227174910, 0.701952561919561240, 0.701916949857065870, 0.701881336039778540, +0.701845720467787700, 0.701810103141182750, 0.701774484060052050, 0.701738863224485640, 0.701703240634571900, 0.701667616290400090, 0.701631990192059020, 0.701596362339638180, +0.701560732733226500, 0.701525101372913020, 0.701489468258786440, 0.701453833390936480, 0.701418196769451940, 0.701382558394421870, 0.701346918265935200, 0.701311276384081420, +0.701275632748949550, 0.701239987360628200, 0.701204340219207300, 0.701168691324775440, 0.701133040677421990, 0.701097388277235560, 0.701061734124305950, 0.701026078218721980, +0.700990420560572810, 0.700954761149947370, 0.700919099986935250, 0.700883437071625370, 0.700847772404107010, 0.700812105984468750, 0.700776437812800630, 0.700740767889191480, +0.700705096213730340, 0.700669422786506120, 0.700633747607608660, 0.700598070677126870, 0.700562391995149910, 0.700526711561766600, 0.700491029377066870, 0.700455345441139520, +0.700419659754073610, 0.700383972315958720, 0.700348283126884020, 0.700312592186938530, 0.700276899496211300, 0.700241205054792150, 0.700205508862769890, 0.700169810920233890, +0.700134111227273090, 0.700098409783977300, 0.700062706590435460, 0.700027001646736920, 0.699991294952970520, 0.699955586509226290, 0.699919876315592940, 0.699884164372160060, +0.699848450679016350, 0.699812735236251760, 0.699777018043955420, 0.699741299102216270, 0.699705578411124130, 0.699669855970768030, 0.699634131781237350, 0.699598405842621010, +0.699562678155008940, 0.699526948718490190, 0.699491217533154020, 0.699455484599089570, 0.699419749916386670, 0.699384013485134350, 0.699348275305422100, 0.699312535377338840, +0.699276793700974510, 0.699241050276418140, 0.699205305103759220, 0.699169558183086790, 0.699133809514490670, 0.699098059098060110, 0.699062306933884050, 0.699026553022052520, +0.698990797362654570, 0.698955039955779680, 0.698919280801516880, 0.698883519899956230, 0.698847757251186640, 0.698811992855297830, 0.698776226712378600, 0.698740458822519230, +0.698704689185808640, 0.698668917802336310, 0.698633144672191400, 0.698597369795463940, 0.698561593172242980, 0.698525814802618110, 0.698490034686678470, 0.698454252824513900, +0.698418469216213870, 0.698382683861867530, 0.698346896761564250, 0.698311107915393970, 0.698275317323445940, 0.698239524985809320, 0.698203730902574150, 0.698167935073829680, +0.698132137499665410, 0.698096338180170470, 0.698060537115435030, 0.698024734305548230, 0.697988929750599560, 0.697953123450678280, 0.697917315405874430, 0.697881505616277380, +0.697845694081976610, 0.697809880803061170, 0.697774065779621420, 0.697738249011746530, 0.697702430499525960, 0.697666610243048990, 0.697630788242405760, 0.697594964497685650, +0.697559139008977810, 0.697523311776372390, 0.697487482799958760, 0.697451652079826400, 0.697415819616064580, 0.697379985408763560, 0.697344149458012490, 0.697308311763901180, +0.697272472326518680, 0.697236631145955240, 0.697200788222300360, 0.697164943555643510, 0.697129097146073850, 0.697093248993681860, 0.697057399098556800, 0.697021547460788150, +0.696985694080465400, 0.696949838957678590, 0.696913982092517310, 0.696878123485070720, 0.696842263135429190, 0.696806401043681970, 0.696770537209918660, 0.696734671634228750, +0.696698804316702500, 0.696662935257429280, 0.696627064456498690, 0.696591191913999990, 0.696555317630023760, 0.696519441604659280, 0.696483563837996140, 0.696447684330123720, +0.696411803081132490, 0.696375920091111710, 0.696340035360151100, 0.696304148888340140, 0.696268260675769080, 0.696232370722527420, 0.696196479028704520, 0.696160585594390650, +0.696124690419675400, 0.696088793504648470, 0.696052894849399140, 0.696016994454017880, 0.695981092318594170, 0.695945188443217730, 0.695909282827978040, 0.695873375472965460, +0.695837466378269380, 0.695801555543979710, 0.695765642970185730, 0.695729728656978020, 0.695693812604445960, 0.695657894812679480, 0.695621975281767830, 0.695586054011801620, +0.695550131002870220, 0.695514206255063550, 0.695478279768470990, 0.695442351543183120, 0.695406421579289220, 0.695370489876879110, 0.695334556436043030, 0.695298621256870590, +0.695262684339451600, 0.695226745683875550, 0.695190805290232920, 0.695154863158613300, 0.695118919289106520, 0.695082973681802160, 0.695047026336790720, 0.695011077254161670, +0.694975126434004940, 0.694939173876410020, 0.694903219581467500, 0.694867263549266980, 0.694831305779898270, 0.694795346273450960, 0.694759385030015660, 0.694723422049681850, +0.694687457332539230, 0.694651490878678170, 0.694615522688188490, 0.694579552761159900, 0.694543581097682220, 0.694507607697845810, 0.694471632561740490, 0.694435655689455980, +0.694399677081082080, 0.694363696736709280, 0.694327714656427290, 0.694291730840325920, 0.694255745288494990, 0.694219758001024980, 0.694183768978005490, 0.694147778219526670, +0.694111785725678110, 0.694075791496550410, 0.694039795532233160, 0.694003797832816180, 0.693967798398389960, 0.693931797229044300, 0.693895794324869030, 0.693859789685954080, +0.693823783312389920, 0.693787775204266380, 0.693751765361673380, 0.693715753784700520, 0.693679740473438720, 0.693643725427977480, 0.693607708648407040, 0.693571690134816900, +0.693535669887297870, 0.693499647905939760, 0.693463624190832410, 0.693427598742065830, 0.693391571559730410, 0.693355542643916190, 0.693319511994712980, 0.693283479612210820, +0.693247445496500190, 0.693211409647670920, 0.693175372065812920, 0.693139332751016690, 0.693103291703372150, 0.693067248922969450, 0.693031204409898290, 0.692995158164249390, +0.692959110186112670, 0.692923060475578060, 0.692887009032735590, 0.692850955857675870, 0.692814900950488810, 0.692778844311264350, 0.692742785940092640, 0.692706725837064160, +0.692670664002268950, 0.692634600435797050, 0.692598535137738390, 0.692562468108183560, 0.692526399347222710, 0.692490328854945440, 0.692454256631442670, 0.692418182676804330, +0.692382106991120460, 0.692346029574481100, 0.692309950426976960, 0.692273869548697850, 0.692237786939734150, 0.692201702600175660, 0.692165616530113210, 0.692129528729636730, +0.692093439198836370, 0.692057347937802160, 0.692021254946624920, 0.691985160225394470, 0.691949063774201180, 0.691912965593134870, 0.691876865682286570, 0.691840764041745990, +0.691804660671603180, 0.691768555571949050, 0.691732448742873540, 0.691696340184467020, 0.691660229896819190, 0.691624117880021090, 0.691588004134162770, 0.691551888659334480, +0.691515771455626040, 0.691479652523128600, 0.691443531861931970, 0.691407409472126530, 0.691371285353802210, 0.691335159507050050, 0.691299031931959960, 0.691262902628622220, +0.691226771597126980, 0.691190638837565150, 0.691154504350026680, 0.691118368134601700, 0.691082230191381040, 0.691046090520454850, 0.691009949121913380, 0.690973805995846790, +0.690937661142345890, 0.690901514561500950, 0.690865366253402220, 0.690829216218139750, 0.690793064455804460, 0.690756910966486610, 0.690720755750276470, 0.690684598807264070, +0.690648440137540560, 0.690612279741195990, 0.690576117618320610, 0.690539953769004680, 0.690503788193339130, 0.690467620891414220, 0.690431451863320110, 0.690395281109147160, +0.690359108628986310, 0.690322934422927580, 0.690286758491061360, 0.690250580833478460, 0.690214401450269130, 0.690178220341523870, 0.690142037507332610, 0.690105852947786590, +0.690069666662976090, 0.690033478652991250, 0.689997288917922450, 0.689961097457860830, 0.689924904272896430, 0.689888709363119630, 0.689852512728620910, 0.689816314369491200, +0.689780114285820640, 0.689743912477699840, 0.689707708945218930, 0.689671503688469080, 0.689635296707540420, 0.689599088002523230, 0.689562877573508650, 0.689526665420586830, +0.689490451543848470, 0.689454235943383510, 0.689418018619283310, 0.689381799571638140, 0.689345578800538480, 0.689309356306074480, 0.689273132088337400, 0.689236906147417510, +0.689200678483405380, 0.689164449096391300, 0.689128217986466280, 0.689091985153720720, 0.689055750598245310, 0.689019514320130200, 0.688983276319466540, 0.688947036596344710, +0.688910795150854960, 0.688874551983088560, 0.688838307093135760, 0.688802060481087270, 0.688765812147033250, 0.688729562091065060, 0.688693310313272860, 0.688657056813747560, +0.688620801592579100, 0.688584544649859080, 0.688548285985677630, 0.688512025600125590, 0.688475763493292980, 0.688439499665271400, 0.688403234116151120, 0.688366966846022610, +0.688330697854976470, 0.688294427143103850, 0.688258154710495230, 0.688221880557241210, 0.688185604683432150, 0.688149327089159320, 0.688113047774513320, 0.688076766739584290, +0.688040483984463710, 0.688004199509241850, 0.687967913314009530, 0.687931625398857110, 0.687895335763875960, 0.687859044409156460, 0.687822751334789320, 0.687786456540865010, +0.687750160027474910, 0.687713861794709390, 0.687677561842659160, 0.687641260171414800, 0.687604956781067480, 0.687568651671707890, 0.687532344843426620, 0.687496036296314170, +0.687459726030461900, 0.687423414045960410, 0.687387100342900070, 0.687350784921372250, 0.687314467781467430, 0.687278148923276540, 0.687241828346889850, 0.687205506052398940, +0.687169182039894300, 0.687132856309466740, 0.687096528861206650, 0.687060199695205600, 0.687023868811553970, 0.686987536210342810, 0.686951201891662370, 0.686914865855604240, +0.686878528102259020, 0.686842188631717420, 0.686805847444070140, 0.686769504539408440, 0.686733159917823020, 0.686696813579404370, 0.686660465524244090, 0.686624115752432540, +0.686587764264060760, 0.686551411059219240, 0.686515056137999460, 0.686478699500492010, 0.686442341146787930, 0.686405981076977590, 0.686369619291152700, 0.686333255789403740, +0.686296890571821640, 0.686260523638496880, 0.686224154989521270, 0.686187784624985200, 0.686151412544979690, 0.686115038749595340, 0.686078663238923750, 0.686042286013055390, +0.686005907072081420, 0.685969526416092320, 0.685933144045179690, 0.685896759959434330, 0.685860374158946630, 0.685823986643808280, 0.685787597414110110, 0.685751206469942810, +0.685714813811397320, 0.685678419438565000, 0.685642023351536570, 0.685605625550403270, 0.685569226035255500, 0.685532824806184940, 0.685496421863282300, 0.685460017206638740, +0.685423610836344730, 0.685387202752491990, 0.685350792955171210, 0.685314381444473540, 0.685277968220489590, 0.685241553283310930, 0.685205136633028510, 0.685168718269732910, +0.685132298193515840, 0.685095876404468010, 0.685059452902680440, 0.685023027688243970, 0.684986600761250290, 0.684950172121789990, 0.684913741769954340, 0.684877309705834050, +0.684840875929520700, 0.684804440441105220, 0.684768003240678660, 0.684731564328331820, 0.684695123704156310, 0.684658681368242930, 0.684622237320682950, 0.684585791561566960, +0.684549344090986890, 0.684512894909033550, 0.684476444015797550, 0.684439991411370690, 0.684403537095843890, 0.684367081069308330, 0.684330623331854680, 0.684294163883574890, +0.684257702724559550, 0.684221239854900020, 0.684184775274687020, 0.684148308984012470, 0.684111840982967180, 0.684075371271642200, 0.684038899850128560, 0.684002426718517850, +0.683965951876901230, 0.683929475325369630, 0.683892997064014070, 0.683856517092926270, 0.683820035412197270, 0.683783552021917760, 0.683747066922179790, 0.683710580113074170, +0.683674091594691950, 0.683637601367124370, 0.683601109430462930, 0.683564615784798880, 0.683528120430223150, 0.683491623366826890, 0.683455124594701810, 0.683418624113939050, +0.683382121924629660, 0.683345618026864550, 0.683309112420735780, 0.683272605106334250, 0.683236096083751240, 0.683199585353077680, 0.683163072914405370, 0.683126558767825460, +0.683090042913429120, 0.683053525351307370, 0.683017006081552140, 0.682980485104254350, 0.682943962419505060, 0.682907438027396290, 0.682870911928018740, 0.682834384121464020, +0.682797854607822940, 0.682761323387187650, 0.682724790459648960, 0.682688255825298350, 0.682651719484226760, 0.682615181436526220, 0.682578641682287660, 0.682542100221602550, +0.682505557054561840, 0.682469012181257550, 0.682432465601780840, 0.682395917316222840, 0.682359367324674730, 0.682322815627228520, 0.682286262223975370, 0.682249707115006210, +0.682213150300412960, 0.682176591780287000, 0.682140031554719580, 0.682103469623801640, 0.682066905987625430, 0.682030340646281870, 0.681993773599862570, 0.681957204848458450, +0.681920634392161660, 0.681884062231063240, 0.681847488365254770, 0.681810912794827080, 0.681774335519872540, 0.681737756540482190, 0.681701175856747390, 0.681664593468759410, +0.681628009376610170, 0.681591423580390930, 0.681554836080192850, 0.681518246876107960, 0.681481655968227520, 0.681445063356642900, 0.681408469041445250, 0.681371873022726840, +0.681335275300578690, 0.681298675875092410, 0.681262074746359030, 0.681225471914470800, 0.681188867379519000, 0.681152261141594880, 0.681115653200789820, 0.681079043557196060, +0.681042432210904660, 0.681005819162007090, 0.680969204410594720, 0.680932587956759590, 0.680895969800593080, 0.680859349942186550, 0.680822728381631380, 0.680786105119019710, +0.680749480154442810, 0.680712853487991820, 0.680676225119759120, 0.680639595049835730, 0.680602963278313490, 0.680566329805283420, 0.680529694630837900, 0.680493057755068080, +0.680456419178065650, 0.680419778899921890, 0.680383136920728940, 0.680346493240578170, 0.680309847859561170, 0.680273200777769200, 0.680236551995294650, 0.680199901512228640, +0.680163249328662900, 0.680126595444688680, 0.680089939860398340, 0.680053282575883160, 0.680016623591234380, 0.679979962906544390, 0.679943300521904550, 0.679906636437406340, +0.679869970653141360, 0.679833303169201650, 0.679796633985678800, 0.679759963102664290, 0.679723290520249600, 0.679686616238526890, 0.679649940257587740, 0.679613262577523750, +0.679576583198426290, 0.679539902120387620, 0.679503219343499220, 0.679466534867852800, 0.679429848693539730, 0.679393160820652380, 0.679356471249282000, 0.679319779979520200, +0.679283087011459340, 0.679246392345190690, 0.679209695980806050, 0.679172997918396910, 0.679136298158055540, 0.679099596699873410, 0.679062893543942340, 0.679026188690353690, +0.678989482139199960, 0.678952773890572400, 0.678916063944562940, 0.678879352301263060, 0.678842638960765130, 0.678805923923160530, 0.678769207188541170, 0.678732488756998430, +0.678695768628624800, 0.678659046803511750, 0.678622323281750760, 0.678585598063434330, 0.678548871148653810, 0.678512142537501250, 0.678475412230067910, 0.678438680226446380, +0.678401946526728140, 0.678365211131005120, 0.678328474039368690, 0.678291735251911330, 0.678254994768724640, 0.678218252589900540, 0.678181508715530510, 0.678144763145706930, +0.678108015880521500, 0.678071266920066030, 0.678034516264432120, 0.677997763913712140, 0.677961009867997790, 0.677924254127381000, 0.677887496691953140, 0.677850737561806920, +0.677813976737033810, 0.677777214217725410, 0.677740450003974430, 0.677703684095872230, 0.677666916493510850, 0.677630147196981780, 0.677593376206377720, 0.677556603521790260, +0.677519829143311210, 0.677483053071032290, 0.677446275305046090, 0.677409495845444190, 0.677372714692318630, 0.677335931845760800, 0.677299147305863600, 0.677262361072718530, +0.677225573146417400, 0.677188783527052250, 0.677151992214715340, 0.677115199209498360, 0.677078404511493150, 0.677041608120792280, 0.677004810037487360, 0.676968010261670420, +0.676931208793433160, 0.676894405632868070, 0.676857600780067070, 0.676820794235122090, 0.676783985998124840, 0.676747176069167790, 0.676710364448342980, 0.676673551135742120, +0.676636736131457140, 0.676599919435580620, 0.676563101048204270, 0.676526280969420140, 0.676489459199320020, 0.676452635737996630, 0.676415810585541680, 0.676378983742046750, +0.676342155207604770, 0.676305324982307330, 0.676268493066246700, 0.676231659459514470, 0.676194824162203330, 0.676157987174405230, 0.676121148496212080, 0.676084308127715810, +0.676047466069009010, 0.676010622320183610, 0.675973776881331640, 0.675936929752544930, 0.675900080933916180, 0.675863230425537200, 0.675826378227500250, 0.675789524339896920, +0.675752668762820140, 0.675715811496361730, 0.675678952540613830, 0.675642091895668040, 0.675605229561617500, 0.675568365538553820, 0.675531499826569020, 0.675494632425755690, +0.675457763336205770, 0.675420892558011410, 0.675384020091264640, 0.675347145936058050, 0.675310270092483570, 0.675273392560633460, 0.675236513340599530, 0.675199632432474610, +0.675162749836350720, 0.675125865552319790, 0.675088979580473980, 0.675052091920905980, 0.675015202573707840, 0.674978311538971700, 0.674941418816789370, 0.674904524407253790, +0.674867628310456990, 0.674830730526490790, 0.674793831055448100, 0.674756929897420750, 0.674720027052501110, 0.674683122520781110, 0.674646216302353660, 0.674609308397310590, +0.674572398805744270, 0.674535487527746720, 0.674498574563410670, 0.674461659912828140, 0.674424743576091500, 0.674387825553292800, 0.674350905844524730, 0.674313984449879440, +0.674277061369449200, 0.674240136603325930, 0.674203210151602670, 0.674166282014371450, 0.674129352191724100, 0.674092420683753750, 0.674055487490552330, 0.674018552612212220, +0.673981616048825340, 0.673944677800484840, 0.673907737867282640, 0.673870796249311010, 0.673833852946662090, 0.673796907959428930, 0.673759961287703430, 0.673723012931577990, +0.673686062891144740, 0.673649111166496730, 0.673612157757725870, 0.673575202664924650, 0.673538245888185010, 0.673501287427600180, 0.673464327283262110, 0.673427365455262830, +0.673390401943695590, 0.673353436748652220, 0.673316469870225310, 0.673279501308506890, 0.673242531063590110, 0.673205559135566900, 0.673168585524529850, 0.673131610230571000, +0.673094633253783380, 0.673057654594259260, 0.673020674252091000, 0.672983692227370760, 0.672946708520191560, 0.672909723130645570, 0.672872736058825360, 0.672835747304822870, +0.672798756868731470, 0.672761764750643090, 0.672724770950650310, 0.672687775468845280, 0.672650778305321160, 0.672613779460170090, 0.672576778933484220, 0.672539776725356700, +0.672502772835879780, 0.672465767265145950, 0.672428760013247250, 0.672391751080277160, 0.672354740466327590, 0.672317728171491160, 0.672280714195860110, 0.672243698539527590, +0.672206681202585870, 0.672169662185127410, 0.672132641487244500, 0.672095619109030260, 0.672058595050576970, 0.672021569311977320, 0.671984541893323240, 0.671947512794708210, +0.671910482016224500, 0.671873449557964130, 0.671836415420020480, 0.671799379602485810, 0.671762342105452710, 0.671725302929013330, 0.671688262073261160, 0.671651219538288210, +0.671614175324187320, 0.671577129431050630, 0.671540081858971400, 0.671503032608042010, 0.671465981678355030, 0.671428929070002730, 0.671391874783078490, 0.671354818817674560, +0.671317761173883530, 0.671280701851797890, 0.671243640851510670, 0.671206578173114470, 0.671169513816701420, 0.671132447782364920, 0.671095380070197310, 0.671058310680291310, +0.671021239612739070, 0.670984166867634180, 0.670947092445068890, 0.670910016345135810, 0.670872938567927400, 0.670835859113536940, 0.670798777982056780, 0.670761695173579750, +0.670724610688198110, 0.670687524526005330, 0.670650436687093680, 0.670613347171555960, 0.670576255979484560, 0.670539163110972840, 0.670502068566113160, 0.670464972344998470, +0.670427874447720900, 0.670390774874373930, 0.670353673625050050, 0.670316570699841740, 0.670279466098842260, 0.670242359822144080, 0.670205251869840040, 0.670168142242022590, +0.670131030938785120, 0.670093917960220000, 0.670056803306420150, 0.670019686977477820, 0.669982568973486740, 0.669945449294539250, 0.669908327940728080, 0.669871204912145800, +0.669834080208885800, 0.669796953831040650, 0.669759825778703080, 0.669722696051965550, 0.669685564650921660, 0.669648431575663890, 0.669611296826284730, 0.669574160402877540, +0.669537022305535130, 0.669499882534350000, 0.669462741089414950, 0.669425597970823350, 0.669388453178667690, 0.669351306713040990, 0.669314158574035640, 0.669277008761745230, +0.669239857276262230, 0.669202704117679680, 0.669165549286090070, 0.669128392781586760, 0.669091234604262670, 0.669054074754210410, 0.669016913231522570, 0.668979750036292840, +0.668942585168613710, 0.668905418628577770, 0.668868250416278620, 0.668831080531808840, 0.668793908975261480, 0.668756735746728890, 0.668719560846304790, 0.668682384274081890, +0.668645206030152870, 0.668608026114610680, 0.668570844527548670, 0.668533661269059550, 0.668496476339236260, 0.668459289738171480, 0.668422101465958820, 0.668384911522690860, +0.668347719908460650, 0.668310526623360770, 0.668273331667484930, 0.668236135040925830, 0.668198936743775950, 0.668161736776129110, 0.668124535138077900, 0.668087331829715360, +0.668050126851134190, 0.668012920202428080, 0.667975711883689540, 0.667938501895011800, 0.667901290236487480, 0.667864076908210260, 0.667826861910272850, 0.667789645242768290, +0.667752426905789290, 0.667715206899429540, 0.667677985223781740, 0.667640761878939060, 0.667603536864994070, 0.667566310182040600, 0.667529081830171340, 0.667491851809479340, +0.667454620120057520, 0.667417386761999350, 0.667380151735397660, 0.667342915040345370, 0.667305676676936080, 0.667268436645262700, 0.667231194945418160, 0.667193951577495280, +0.667156706541587870, 0.667119459837788640, 0.667082211466190840, 0.667044961426887180, 0.667007709719971360, 0.666970456345536310, 0.666933201303675170, 0.666895944594480650, +0.666858686218046560, 0.666821426174465830, 0.666784164463831490, 0.666746901086236470, 0.666709636041774470, 0.666672369330538420, 0.666635100952621020, 0.666597830908116310, +0.666560559197116990, 0.666523285819716320, 0.666486010776007000, 0.666448734066083070, 0.666411455690037240, 0.666374175647962750, 0.666336893939952550, 0.666299610566100430, +0.666262325526499330, 0.666225038821242400, 0.666187750450422560, 0.666150460414133620, 0.666113168712468510, 0.666075875345520490, 0.666038580313382480, 0.666001283616148300, +0.665963985253910980, 0.665926685226763350, 0.665889383534799320, 0.665852080178111820, 0.665814775156794210, 0.665777468470939220, 0.665740160120640970, 0.665702850105992280, +0.665665538427086420, 0.665628225084016420, 0.665590910076876210, 0.665553593405758810, 0.665516275070757280, 0.665478955071964750, 0.665441633409475260, 0.665404310083381630, +0.665366985093777230, 0.665329658440754980, 0.665292330124408910, 0.665255000144832080, 0.665217668502117830, 0.665180335196358890, 0.665143000227649610, 0.665105663596082700, +0.665068325301751420, 0.665030985344749580, 0.664993643725170220, 0.664956300443106940, 0.664918955498652430, 0.664881608891900840, 0.664844260622945330, 0.664806910691879140, +0.664769559098795320, 0.664732205843787890, 0.664694850926950020, 0.664657494348374960, 0.664620136108155850, 0.664582776206386840, 0.664545414643160750, 0.664508051418571170, +0.664470686532711130, 0.664433319985674790, 0.664395951777555060, 0.664358581908445100, 0.664321210378439050, 0.664283837187629960, 0.664246462336111290, 0.664209085823976090, +0.664171707651318610, 0.664134327818231780, 0.664096946324809200, 0.664059563171143900, 0.664022178357329910, 0.663984791883460600, 0.663947403749629240, 0.663910013955929080, +0.663872622502454270, 0.663835229389297840, 0.663797834616553280, 0.663760438184313850, 0.663723040092673690, 0.663685640341725950, 0.663648238931563660, 0.663610835862281200, +0.663573431133971710, 0.663536024746728570, 0.663498616700645030, 0.663461206995815230, 0.663423795632332450, 0.663386382610290260, 0.663348967929781710, 0.663311551590901050, +0.663274133593741540, 0.663236713938396670, 0.663199292624959800, 0.663161869653524970, 0.663124445024185330, 0.663087018737034790, 0.663049590792166190, 0.663012161189674100, +0.662974729929651450, 0.662937297012191730, 0.662899862437389080, 0.662862426205336860, 0.662824988316128460, 0.662787548769857350, 0.662750107566617560, 0.662712664706502700, +0.662675220189606010, 0.662637774016020980, 0.662600326185841860, 0.662562876699162030, 0.662525425556074850, 0.662487972756673820, 0.662450518301053280, 0.662413062189306290, +0.662375604421526760, 0.662338144997807850, 0.662300683918243930, 0.662263221182928240, 0.662225756791954610, 0.662188290745416190, 0.662150823043407330, 0.662113353686021420, +0.662075882673351820, 0.662038410005492910, 0.662000935682537930, 0.661963459704580590, 0.661925982071714270, 0.661888502784033330, 0.661851021841631140, 0.661813539244601400, +0.661776054993037490, 0.661738569087033770, 0.661701081526683610, 0.661663592312080720, 0.661626101443318570, 0.661588608920491540, 0.661551114743692880, 0.661513618913016520, +0.661476121428555720, 0.661438622290404950, 0.661401121498657710, 0.661363619053407240, 0.661326114954748020, 0.661288609202773660, 0.661251101797577730, 0.661213592739253620, +0.661176082027895910, 0.661138569663597960, 0.661101055646453720, 0.661063539976556420, 0.661026022654000570, 0.660988503678879740, 0.660950983051287630, 0.660913460771317630, +0.660875936839064430, 0.660838411254621390, 0.660800884018082240, 0.660763355129540650, 0.660725824589090900, 0.660688292396826580, 0.660650758552841280, 0.660613223057229360, +0.660575685910084420, 0.660538147111500270, 0.660500606661570400, 0.660463064560389390, 0.660425520808050610, 0.660387975404648110, 0.660350428350275350, 0.660312879645026830, +0.660275329288996130, 0.660237777282277060, 0.660200223624963220, 0.660162668317149200, 0.660125111358928480, 0.660087552750394990, 0.660049992491642310, 0.660012430582764930, +0.659974867023856550, 0.659937301815010980, 0.659899734956321820, 0.659862166447883540, 0.659824596289789960, 0.659787024482134550, 0.659749451025011920, 0.659711875918515540, +0.659674299162739560, 0.659636720757777570, 0.659599140703724050, 0.659561559000672700, 0.659523975648717450, 0.659486390647951890, 0.659448803998470720, 0.659411215700367540, +0.659373625753736260, 0.659336034158670590, 0.659298440915265240, 0.659260846023613790, 0.659223249483810170, 0.659185651295948080, 0.659148051460122230, 0.659110449976426320, +0.659072846844953820, 0.659035242065799660, 0.658997635639057330, 0.658960027564820860, 0.658922417843184060, 0.658884806474241520, 0.658847193458086950, 0.658809578794814500, +0.658771962484517640, 0.658734344527291290, 0.658696724923229060, 0.658659103672424970, 0.658621480774972850, 0.658583856230967380, 0.658546230040502170, 0.658508602203671470, +0.658470972720568870, 0.658433341591289190, 0.658395708815926240, 0.658358074394573610, 0.658320438327326120, 0.658282800614277570, 0.658245161255522020, 0.658207520251153140, +0.658169877601265880, 0.658132233305953940, 0.658094587365311350, 0.658056939779432030, 0.658019290548410680, 0.657981639672341020, 0.657943987151317410, 0.657906332985433330, +0.657868677174783920, 0.657831019719462670, 0.657793360619563950, 0.657755699875181450, 0.657718037486410110, 0.657680373453343630, 0.657642707776075920, 0.657605040454701690, +0.657567371489314880, 0.657529700880009730, 0.657492028626879940, 0.657454354730020450, 0.657416679189524960, 0.657379002005487820, 0.657341323178002870, 0.657303642707165010, +0.657265960593067970, 0.657228276835805980, 0.657190591435473090, 0.657152904392163890, 0.657115215705972530, 0.657077525376993150, 0.657039833405319570, 0.657002139791046820, +0.656964444534268610, 0.656926747635079410, 0.656889049093572930, 0.656851348909844200, 0.656813647083987040, 0.656775943616095480, 0.656738238506264340, 0.656700531754587650, +0.656662823361159660, 0.656625113326074210, 0.656587401649426420, 0.656549688331310000, 0.656511973371819440, 0.656474256771048540, 0.656436538529092340, 0.656398818646044880, +0.656361097122000300, 0.656323373957052650, 0.656285649151296950, 0.656247922704827120, 0.656210194617737440, 0.656172464890121930, 0.656134733522075630, 0.656097000513692460, +0.656059265865066470, 0.656021529576292670, 0.655983791647465010, 0.655946052078677950, 0.655908310870025320, 0.655870568021602370, 0.655832823533502920, 0.655795077405821440, +0.655757329638651850, 0.655719580232089320, 0.655681829186227860, 0.655644076501161850, 0.655606322176985330, 0.655568566213793220, 0.655530808611679780, 0.655493049370739380, +0.655455288491065930, 0.655417525972754600, 0.655379761815899520, 0.655341996020594620, 0.655304228586935040, 0.655266459515014940, 0.655228688804928790, 0.655190916456770410, +0.655153142470635160, 0.655115366846617090, 0.655077589584810550, 0.655039810685309700, 0.655002030148209680, 0.654964247973604640, 0.654926464161588840, 0.654888678712256640, +0.654850891625703090, 0.654813102902022210, 0.654775312541308720, 0.654737520543656530, 0.654699726909160900, 0.654661931637915860, 0.654624134730016130, 0.654586336185555620, +0.654548536004629700, 0.654510734187332410, 0.654472930733757900, 0.654435125644001410, 0.654397318918157110, 0.654359510556319580, 0.654321700558582850, 0.654283888925042300, +0.654246075655791960, 0.654208260750926420, 0.654170444210539940, 0.654132626034727660, 0.654094806223583850, 0.654056984777202980, 0.654019161695679310, 0.653981336979108100, +0.653943510627583490, 0.653905682641200190, 0.653867853020052240, 0.653830021764235100, 0.653792188873842830, 0.653754354348969780, 0.653716518189711220, 0.653678680396161280, +0.653640840968414680, 0.653602999906565670, 0.653565157210709510, 0.653527312880940460, 0.653489466917352990, 0.653451619320041700, 0.653413770089101620, 0.653375919224627120, +0.653338066726712800, 0.653300212595453010, 0.653262356830943030, 0.653224499433277090, 0.653186640402549920, 0.653148779738855880, 0.653110917442290220, 0.653073053512947200, +0.653035187950921300, 0.652997320756307680, 0.652959451929200800, 0.652921581469695260, 0.652883709377885420, 0.652845835653866670, 0.652807960297733360, 0.652770083309580080, +0.652732204689501330, 0.652694324437592450, 0.652656442553947610, 0.652618559038661730, 0.652580673891829170, 0.652542787113545190, 0.652504898703904270, 0.652467008663001110, +0.652429116990930090, 0.652391223687786680, 0.652353328753665140, 0.652315432188659950, 0.652277533992866480, 0.652239634166379200, 0.652201732709292830, 0.652163829621701830, +0.652125924903701580, 0.652088018555386450, 0.652050110576851360, 0.652012200968190570, 0.651974289729499670, 0.651936376860873130, 0.651898462362405560, 0.651860546234191430, +0.651822628476326440, 0.651784709088904730, 0.651746788072021350, 0.651708865425770560, 0.651670941150248040, 0.651633015245548060, 0.651595087711765660, 0.651557158548995100, +0.651519227757332060, 0.651481295336870940, 0.651443361287706190, 0.651405425609933420, 0.651367488303647100, 0.651329549368942050, 0.651291608805912750, 0.651253666614654780, +0.651215722795262630, 0.651177777347831220, 0.651139830272455030, 0.651101881569229550, 0.651063931238249460, 0.651025979279609480, 0.650988025693404190, 0.650950070479729190, +0.650912113638679070, 0.650874155170348630, 0.650836195074832480, 0.650798233352226090, 0.650760270002624150, 0.650722305026121270, 0.650684338422812920, 0.650646370192793700, +0.650608400336158630, 0.650570428853002090, 0.650532455743420000, 0.650494481007506620, 0.650456504645357090, 0.650418526657066010, 0.650380547042728850, 0.650342565802440430, +0.650304582936295450, 0.650266598444388830, 0.650228612326815950, 0.650190624583671610, 0.650152635215050620, 0.650114644221047810, 0.650076651601758650, 0.650038657357277950, +0.650000661487700190, 0.649962663993121080, 0.649924664873635430, 0.649886664129338040, 0.649848661760323630, 0.649810657766688000, 0.649772652148525640, 0.649734644905931690, +0.649696636039000740, 0.649658625547828610, 0.649620613432509870, 0.649582599693139580, 0.649544584329812550, 0.649506567342624240, 0.649468548731669590, 0.649430528497043640, +0.649392506638840960, 0.649354483157157380, 0.649316458052087600, 0.649278431323726530, 0.649240402972169230, 0.649202372997511160, 0.649164341399847240, 0.649126308179272080, +0.649088273335881480, 0.649050236869770150, 0.649012198781033330, 0.648974159069765630, 0.648936117736062860, 0.648898074780019820, 0.648860030201731550, 0.648821984001292870, +0.648783936178799590, 0.648745886734346520, 0.648707835668028700, 0.648669782979940930, 0.648631728670179040, 0.648593672738837830, 0.648555615186012460, 0.648517556011797720, +0.648479495216289340, 0.648441432799582330, 0.648403368761771400, 0.648365303102952370, 0.648327235823220050, 0.648289166922669580, 0.648251096401396000, 0.648213024259494900, +0.648174950497061310, 0.648136875114190270, 0.648098798110976810, 0.648060719487516650, 0.648022639243904690, 0.647984557380236080, 0.647946473896605760, 0.647908388793109640, +0.647870302069842530, 0.647832213726899590, 0.647794123764375840, 0.647756032182367210, 0.647717938980968410, 0.647679844160274350, 0.647641747720381080, 0.647603649661383510, +0.647565549983376790, 0.647527448686455840, 0.647489345770716600, 0.647451241236253970, 0.647413135083163230, 0.647375027311539400, 0.647336917921478290, 0.647298806913074840, +0.647260694286424410, 0.647222580041621920, 0.647184464178763300, 0.647146346697943580, 0.647108227599257900, 0.647070106882801310, 0.647031984548669840, 0.646993860596958400, +0.646955735027762050, 0.646917607841176580, 0.646879479037297140, 0.646841348616219000, 0.646803216578037190, 0.646765082922847620, 0.646726947650745340, 0.646688810761825720, +0.646650672256183780, 0.646612532133915340, 0.646574390395115770, 0.646536247039880110, 0.646498102068303490, 0.646459955480481960, 0.646421807276510550, 0.646383657456484630, +0.646345506020499230, 0.646307352968650490, 0.646269198301033240, 0.646231042017743060, 0.646192884118874880, 0.646154724604524830, 0.646116563474788070, 0.646078400729759420, +0.646040236369535230, 0.646002070394210430, 0.645963902803880390, 0.645925733598640250, 0.645887562778586170, 0.645849390343813170, 0.645811216294416730, 0.645773040630491790, +0.645734863352134700, 0.645696684459440400, 0.645658503952504460, 0.645620321831421820, 0.645582138096288840, 0.645543952747200440, 0.645505765784252120, 0.645467577207539110, +0.645429387017157460, 0.645391195213202320, 0.645353001795768930, 0.645314806764953340, 0.645276610120850690, 0.645238411863556570, 0.645200211993166130, 0.645162010509775400, +0.645123807413479630, 0.645085602704374430, 0.645047396382554820, 0.645009188448117170, 0.644970978901156400, 0.644932767741768220, 0.644894554970047880, 0.644856340586091430, +0.644818124589994100, 0.644779906981851390, 0.644741687761758660, 0.644703466929812060, 0.644665244486106850, 0.644627020430738050, 0.644588794763802150, 0.644550567485394190, +0.644512338595609860, 0.644474108094544420, 0.644435875982293900, 0.644397642258953800, 0.644359406924619460, 0.644321169979386380, 0.644282931423350690, 0.644244691256607660, +0.644206449479252980, 0.644168206091381700, 0.644129961093090400, 0.644091714484474000, 0.644053466265628430, 0.644015216436648830, 0.643976964997631570, 0.643938711948671920, +0.643900457289865450, 0.643862201021307420, 0.643823943143094320, 0.643785683655321410, 0.643747422558083810, 0.643709159851478140, 0.643670895535599420, 0.643632629610543570, +0.643594362076405750, 0.643556092933282420, 0.643517822181268850, 0.643479549820460740, 0.643441275850953340, 0.643403000272843140, 0.643364723086225390, 0.643326444291195900, +0.643288163887849930, 0.643249881876283850, 0.643211598256593130, 0.643173313028873370, 0.643135026193220050, 0.643096737749729530, 0.643058447698497070, 0.643020156039618150, +0.642981862773189250, 0.642943567899305620, 0.642905271418063080, 0.642866973329557110, 0.642828673633883960, 0.642790372331139110, 0.642752069421418380, 0.642713764904817130, +0.642675458781431840, 0.642637151051357880, 0.642598841714691060, 0.642560530771526750, 0.642522218221961430, 0.642483904066090680, 0.642445588304010110, 0.642407270935815180, +0.642368951961602490, 0.642330631381467290, 0.642292309195505280, 0.642253985403812840, 0.642215660006485440, 0.642177333003618900, 0.642139004395308580, 0.642100674181651180, +0.642062342362742070, 0.642024008938677060, 0.641985673909551750, 0.641947337275462600, 0.641908999036505110, 0.641870659192775080, 0.641832317744368110, 0.641793974691380660, +0.641755630033908340, 0.641717283772046840, 0.641678935905891870, 0.641640586435539890, 0.641602235361086400, 0.641563882682627320, 0.641525528400258230, 0.641487172514075610, +0.641448815024175060, 0.641410455930652160, 0.641372095233603500, 0.641333732933124570, 0.641295369029311280, 0.641257003522259340, 0.641218636412065110, 0.641180267698824300, +0.641141897382632830, 0.641103525463586290, 0.641065151941781370, 0.641026776817313460, 0.640988400090278580, 0.640950021760772430, 0.640911641828891600, 0.640873260294731570, +0.640834877158388380, 0.640796492419957730, 0.640758106079536200, 0.640719718137219400, 0.640681328593102890, 0.640642937447283400, 0.640604544699856620, 0.640566150350918460, +0.640527754400564640, 0.640489356848891740, 0.640450957695995470, 0.640412556941971740, 0.640374154586916270, 0.640335750630925850, 0.640297345074095970, 0.640258937916522770, +0.640220529158301850, 0.640182118799530020, 0.640143706840302860, 0.640105293280716410, 0.640066878120866380, 0.640028461360849450, 0.639990043000761450, 0.639951623040697970, +0.639913201480755810, 0.639874778321030570, 0.639836353561618500, 0.639797927202615080, 0.639759499244117350, 0.639721069686220670, 0.639682638529021410, 0.639644205772615270, +0.639605771417098850, 0.639567335462568050, 0.639528897909118930, 0.639490458756847180, 0.639452018005849720, 0.639413575656222140, 0.639375131708060600, 0.639336686161460890, +0.639298239016519830, 0.639259790273333240, 0.639221339931996700, 0.639182887992607250, 0.639144434455260590, 0.639105979320052750, 0.639067522587079660, 0.639029064256438240, +0.638990604328223970, 0.638952142802533320, 0.638913679679461890, 0.638875214959106600, 0.638836748641563370, 0.638798280726928120, 0.638759811215296900, 0.638721340106766510, +0.638682867401432760, 0.638644393099391920, 0.638605917200739670, 0.638567439705572950, 0.638528960613987670, 0.638490479926079990, 0.638451997641945710, 0.638413513761681870, +0.638375028285384170, 0.638336541213148530, 0.638298052545071990, 0.638259562281250250, 0.638221070421779670, 0.638182576966755950, 0.638144081916276250, 0.638105585270436260, +0.638067087029332350, 0.638028587193060440, 0.637990085761717340, 0.637951582735398980, 0.637913078114201730, 0.637874571898221390, 0.637836064087555000, 0.637797554682298480, +0.637759043682547990, 0.637720531088399660, 0.637682016899950190, 0.637643501117295840, 0.637604983740532320, 0.637566464769756650, 0.637527944205064870, 0.637489422046553230, +0.637450898294317670, 0.637412372948455210, 0.637373846009061880, 0.637335317476233840, 0.637296787350067230, 0.637258255630658970, 0.637219722318105090, 0.637181187412501850, +0.637142650913945290, 0.637104112822532540, 0.637065573138359430, 0.637027031861522430, 0.636988488992117460, 0.636949944530241670, 0.636911398475990990, 0.636872850829461430, +0.636834301590750160, 0.636795750759953090, 0.636757198337166710, 0.636718644322486930, 0.636680088716010890, 0.636641531517834650, 0.636602972728054550, 0.636564412346766640, +0.636525850374068170, 0.636487286810054950, 0.636448721654823580, 0.636410154908470080, 0.636371586571091500, 0.636333016642783970, 0.636294445123643860, 0.636255872013767320, +0.636217297313251380, 0.636178721022192310, 0.636140143140686340, 0.636101563668829750, 0.636062982606719560, 0.636024399954451920, 0.635985815712122870, 0.635947229879829660, +0.635908642457668430, 0.635870053445735550, 0.635831462844127280, 0.635792870652940540, 0.635754276872271710, 0.635715681502217240, 0.635677084542873190, 0.635638485994336700, +0.635599885856704020, 0.635561284130071740, 0.635522680814535780, 0.635484075910193510, 0.635445469417140970, 0.635406861335474860, 0.635368251665291210, 0.635329640406687270, +0.635291027559759300, 0.635252413124603340, 0.635213797101316760, 0.635175179489995580, 0.635136560290736510, 0.635097939503635690, 0.635059317128790380, 0.635020693166296830, +0.634982067616251420, 0.634943440478750620, 0.634904811753891460, 0.634866181441770430, 0.634827549542483770, 0.634788916056127970, 0.634750280982800170, 0.634711644322596750, +0.634673006075614170, 0.634634366241948800, 0.634595724821697790, 0.634557081814957400, 0.634518437221824110, 0.634479791042394940, 0.634441143276766370, 0.634402493925035000, +0.634363842987296980, 0.634325190463649660, 0.634286536354189410, 0.634247880659012830, 0.634209223378216170, 0.634170564511896790, 0.634131904060150960, 0.634093242023075490, +0.634054578400766510, 0.634015913193321400, 0.633977246400836520, 0.633938578023408580, 0.633899908061133830, 0.633861236514109640, 0.633822563382432370, 0.633783888666198280, +0.633745212365504850, 0.633706534480448450, 0.633667855011125660, 0.633629173957632850, 0.633590491320067510, 0.633551807098525990, 0.633513121293104890, 0.633474433903900680, +0.633435744931010620, 0.633397054374531310, 0.633358362234559320, 0.633319668511191040, 0.633280973204524030, 0.633242276314654570, 0.633203577841679350, 0.633164877785694860, +0.633126176146798560, 0.633087472925086820, 0.633048768120656360, 0.633010061733603640, 0.632971353764026130, 0.632932644212020220, 0.632893933077682380, 0.632855220361109970, +0.632816506062399590, 0.632777790181648040, 0.632739072718951470, 0.632700353674407690, 0.632661633048112960, 0.632622910840164200, 0.632584187050657780, 0.632545461679691280, +0.632506734727361080, 0.632468006193764090, 0.632429276078996680, 0.632390544383156450, 0.632351811106339870, 0.632313076248643750, 0.632274339810164680, 0.632235601791000020, +0.632196862191246380, 0.632158121011000220, 0.632119378250359130, 0.632080633909419490, 0.632041887988278430, 0.632003140487032210, 0.631964391405778540, 0.631925640744613770, +0.631886888503635060, 0.631848134682938660, 0.631809379282622260, 0.631770622302782470, 0.631731863743516200, 0.631693103604919810, 0.631654341887091020, 0.631615578590126400, +0.631576813714122890, 0.631538047259176950, 0.631499279225386180, 0.631460509612847280, 0.631421738421656720, 0.631382965651912210, 0.631344191303710220, 0.631305415377147790, +0.631266637872321510, 0.631227858789328970, 0.631189078128266750, 0.631150295889231770, 0.631111512072320860, 0.631072726677631370, 0.631033939705260230, 0.630995151155304130, +0.630956361027859790, 0.630917569323024900, 0.630878776040896150, 0.630839981181570360, 0.630801184745144350, 0.630762386731715700, 0.630723587141381100, 0.630684785974237490, +0.630645983230381680, 0.630607178909911140, 0.630568373012922680, 0.630529565539513000, 0.630490756489779700, 0.630451945863819470, 0.630413133661729460, 0.630374319883606260, +0.630335504529547560, 0.630296687599650070, 0.630257869094010940, 0.630219049012726740, 0.630180227355895290, 0.630141404123613300, 0.630102579315977680, 0.630063752933085360, +0.630024924975034040, 0.629986095441920410, 0.629947264333841410, 0.629908431650894050, 0.629869597393175830, 0.629830761560783770, 0.629791924153814350, 0.629753085172365500, +0.629714244616533910, 0.629675402486416740, 0.629636558782110670, 0.629597713503713630, 0.629558866651322210, 0.629520018225033670, 0.629481168224944710, 0.629442316651153240, +0.629403463503755980, 0.629364608782850050, 0.629325752488532180, 0.629286894620900370, 0.629248035180051240, 0.629209174166082020, 0.629170311579089650, 0.629131447419171710, +0.629092581686425230, 0.629053714380946930, 0.629014845502834600, 0.628975975052185280, 0.628937103029096000, 0.628898229433663580, 0.628859354265985940, 0.628820477526159880, +0.628781599214282670, 0.628742719330451120, 0.628703837874763140, 0.628664954847315550, 0.628626070248205600, 0.628587184077530110, 0.628548296335387000, 0.628509407021873080, +0.628470516137085710, 0.628431623681121710, 0.628392729654079000, 0.628353834056054380, 0.628314936887144900, 0.628276038147448480, 0.628237137837061920, 0.628198235956082480, +0.628159332504607090, 0.628120427482733780, 0.628081520890559350, 0.628042612728181180, 0.628003702995696080, 0.627964791693202070, 0.627925878820796090, 0.627886964378575390, +0.627848048366636990, 0.627809130785078830, 0.627770211633997710, 0.627731290913491220, 0.627692368623656070, 0.627653444764590400, 0.627614519336391010, 0.627575592339155390, +0.627536663772980450, 0.627497733637964240, 0.627458801934203670, 0.627419868661795670, 0.627380933820838370, 0.627341997411428820, 0.627303059433664270, 0.627264119887641640, +0.627225178773459070, 0.627186236091213600, 0.627147291841002490, 0.627108346022922870, 0.627069398637072670, 0.627030449683549040, 0.626991499162449230, 0.626952547073870380, +0.626913593417910420, 0.626874638194666600, 0.626835681404236070, 0.626796723046716080, 0.626757763122204550, 0.626718801630798630, 0.626679838572595350, 0.626640873947692860, +0.626601907756188180, 0.626562939998178690, 0.626523970673761530, 0.626484999783034850, 0.626446027326095670, 0.626407053303041360, 0.626368077713969070, 0.626329100558976950, +0.626290121838162020, 0.626251141551621870, 0.626212159699453430, 0.626173176281755060, 0.626134191298623690, 0.626095204750156790, 0.626056216636451610, 0.626017226957606200, +0.625978235713717690, 0.625939242904883340, 0.625900248531201080, 0.625861252592768370, 0.625822255089682480, 0.625783256022040550, 0.625744255389940830, 0.625705253193480470, +0.625666249432757060, 0.625627244107867630, 0.625588237218910330, 0.625549228765982620, 0.625510218749181670, 0.625471207168604940, 0.625432194024350570, 0.625393179316515610, +0.625354163045197750, 0.625315145210494140, 0.625276125812503030, 0.625237104851321560, 0.625198082327047320, 0.625159058239777580, 0.625120032589610460, 0.625081005376643350, +0.625041976600973380, 0.625002946262698810, 0.624963914361916780, 0.624924880898725110, 0.624885845873220820, 0.624846809285502180, 0.624807771135666660, 0.624768731423811620, +0.624729690150034430, 0.624690647314433360, 0.624651602917105640, 0.624612556958148990, 0.624573509437660550, 0.624534460355738670, 0.624495409712480740, 0.624456357507984120, +0.624417303742346390, 0.624378248415665690, 0.624339191528039410, 0.624300133079564780, 0.624261073070340180, 0.624222011500462860, 0.624182948370030520, 0.624143883679140530, +0.624104817427891030, 0.624065749616379620, 0.624026680244703760, 0.623987609312960930, 0.623948536821249400, 0.623909462769666520, 0.623870387158310000, 0.623831309987277090, +0.623792231256666270, 0.623753150966574910, 0.623714069117100700, 0.623674985708340900, 0.623635900740394100, 0.623596814213357440, 0.623557726127328400, 0.623518636482405460, +0.623479545278685880, 0.623440452516267450, 0.623401358195247560, 0.623362262315724560, 0.623323164877795930, 0.623284065881559490, 0.623244965327112380, 0.623205863214553290, +0.623166759543979490, 0.623127654315488890, 0.623088547529178750, 0.623049439185147550, 0.623010329283492760, 0.622971217824312200, 0.622932104807703220, 0.622892990233764320, +0.622853874102592960, 0.622814756414286630, 0.622775637168943690, 0.622736516366661610, 0.622697394007538320, 0.622658270091671180, 0.622619144619158680, 0.622580017590098290, +0.622540889004587930, 0.622501758862724960, 0.622462627164607980, 0.622423493910334360, 0.622384359100002120, 0.622345222733708510, 0.622306084811552250, 0.622266945333630810, +0.622227804300041990, 0.622188661710883270, 0.622149517566253250, 0.622110371866249400, 0.622071224610969750, 0.622032075800511560, 0.621992925434973640, 0.621953773514453360, +0.621914620039048180, 0.621875465008856930, 0.621836308423977080, 0.621797150284506330, 0.621757990590542380, 0.621718829342183810, 0.621679666539528220, 0.621640502182673420, +0.621601336271716990, 0.621562168806757630, 0.621522999787892830, 0.621483829215220500, 0.621444657088838230, 0.621405483408844720, 0.621366308175337560, 0.621327131388414560, +0.621287953048173300, 0.621248773154712610, 0.621209591708129950, 0.621170408708523030, 0.621131224155990310, 0.621092038050629620, 0.621052850392538770, 0.621013661181815560, +0.620974470418558470, 0.620935278102865200, 0.620896084234833780, 0.620856888814561690, 0.620817691842147860, 0.620778493317689750, 0.620739293241285410, 0.620700091613032410, +0.620660888433029690, 0.620621683701374600, 0.620582477418165410, 0.620543269583499590, 0.620504060197475950, 0.620464849260192190, 0.620425636771746000, 0.620386422732235990, +0.620347207141759950, 0.620307990000415920, 0.620268771308301600, 0.620229551065515690, 0.620190329272155780, 0.620151105928320230, 0.620111881034106420, 0.620072654589613360, +0.620033426594938540, 0.619994197050180220, 0.619954965955436090, 0.619915733310804850, 0.619876499116384320, 0.619837263372272520, 0.619798026078567150, 0.619758787235367150, +0.619719546842770200, 0.619680304900874330, 0.619641061409777370, 0.619601816369578120, 0.619562569780374270, 0.619523321642263650, 0.619484071955345160, 0.619444820719716400, +0.619405567935475630, 0.619366313602720540, 0.619327057721550060, 0.619287800292061990, 0.619248541314354360, 0.619209280788525000, 0.619170018714672810, 0.619130755092895610, +0.619091489923291550, 0.619052223205958320, 0.619012954940994950, 0.618973685128499150, 0.618934413768569170, 0.618895140861302820, 0.618855866406798900, 0.618816590405155350, +0.618777312856469970, 0.618738033760841690, 0.618698753118368310, 0.618659470929148080, 0.618620187193278710, 0.618580901910859350, 0.618541615081987680, 0.618502326706761970, +0.618463036785280140, 0.618423745317640990, 0.618384452303942460, 0.618345157744282890, 0.618305861638760000, 0.618266563987472930, 0.618227264790519370, 0.618187964047997580, +0.618148661760005600, 0.618109357926642340, 0.618070052548005620, 0.618030745624193470, 0.617991437155304800, 0.617952127141437550, 0.617912815582689960, 0.617873502479159950, +0.617834187830946570, 0.617794871638147720, 0.617755553900861680, 0.617716234619186460, 0.617676913793220870, 0.617637591423063180, 0.617598267508811420, 0.617558942050563610, +0.617519615048418790, 0.617480286502475000, 0.617440956412830480, 0.617401624779583160, 0.617362291602832180, 0.617322956882675470, 0.617283620619210940, 0.617244282812537850, +0.617204943462753900, 0.617165602569957670, 0.617126260134247100, 0.617086916155721200, 0.617047570634478020, 0.617008223570615910, 0.616968874964232920, 0.616929524815428070, +0.616890173124299390, 0.616850819890945370, 0.616811465115463810, 0.616772108797954080, 0.616732750938513980, 0.616693391537242010, 0.616654030594236290, 0.616614668109595750, +0.616575304083418540, 0.616535938515803130, 0.616496571406847440, 0.616457202756650720, 0.616417832565311020, 0.616378460832926360, 0.616339087559595990, 0.616299712745417730, +0.616260336390490380, 0.616220958494911650, 0.616181579058781010, 0.616142198082196390, 0.616102815565256260, 0.616063431508058650, 0.616024045910702920, 0.615984658773287120, +0.615945270095909600, 0.615905879878668520, 0.615866488121663220, 0.615827094824991540, 0.615787699988752270, 0.615748303613043340, 0.615708905697963990, 0.615669506243612390, +0.615630105250086660, 0.615590702717485950, 0.615551298645908630, 0.615511893035452950, 0.615472485886217170, 0.615433077198300650, 0.615393666971801310, 0.615354255206817860, +0.615314841903448430, 0.615275427061792280, 0.615236010681947550, 0.615196592764012730, 0.615157173308086060, 0.615117752314266910, 0.615078329782653310, 0.615038905713343960, +0.614999480106436900, 0.614960052962031490, 0.614920624280226090, 0.614881194061118630, 0.614841762304808580, 0.614802329011394090, 0.614762894180973850, 0.614723457813646010, +0.614684019909509830, 0.614644580468663660, 0.614605139491205990, 0.614565696977235180, 0.614526252926850370, 0.614486807340150040, 0.614447360217232670, 0.614407911558196520, +0.614368461363140940, 0.614329009632164190, 0.614289556365364970, 0.614250101562841430, 0.614210645224693040, 0.614171187351018060, 0.614131727941915060, 0.614092266997482430, +0.614052804517819520, 0.614013340503024470, 0.613973874953195890, 0.613934407868432790, 0.613894939248833760, 0.613855469094497400, 0.613815997405522060, 0.613776524182007010, +0.613737049424050610, 0.613697573131751660, 0.613658095305208430, 0.613618615944520270, 0.613579135049785560, 0.613539652621102990, 0.613500168658571040, 0.613460683162288970, +0.613421196132355240, 0.613381707568868450, 0.613342217471926960, 0.613302725841630480, 0.613263232678077030, 0.613223737981365200, 0.613184241751594360, 0.613144743988862980, +0.613105244693269660, 0.613065743864912970, 0.613026241503892180, 0.612986737610305750, 0.612947232184252620, 0.612907725225830920, 0.612868216735140360, 0.612828706712279180, +0.612789195157346310, 0.612749682070440000, 0.612710167451659960, 0.612670651301104430, 0.612631133618872340, 0.612591614405061930, 0.612552093659772920, 0.612512571383103670, +0.612473047575152640, 0.612433522236019320, 0.612393995365802300, 0.612354466964600160, 0.612314937032511610, 0.612275405569636000, 0.612235872576071930, 0.612196338051918090, +0.612156801997273070, 0.612117264412236460, 0.612077725296906630, 0.612038184651382490, 0.611998642475762630, 0.611959098770146430, 0.611919553534632450, 0.611880006769319640, +0.611840458474306460, 0.611800908649692500, 0.611761357295576240, 0.611721804412056260, 0.611682249999232150, 0.611642694057202400, 0.611603136586065800, 0.611563577585921170, +0.611524017056867870, 0.611484454999004500, 0.611444891412429970, 0.611405326297242980, 0.611365759653542900, 0.611326191481428530, 0.611286621780998680, 0.611247050552351840, +0.611207477795587710, 0.611167903510804970, 0.611128327698102440, 0.611088750357578810, 0.611049171489333580, 0.611009591093465420, 0.610970009170073270, 0.610930425719255710, +0.610890840741112550, 0.610851254235742270, 0.610811666203243450, 0.610772076643715800, 0.610732485557258010, 0.610692892943969000, 0.610653298803947360, 0.610613703137292910, +0.610574105944104110, 0.610534507224480110, 0.610494906978519490, 0.610455305206321850, 0.610415701907986110, 0.610376097083610960, 0.610336490733295320, 0.610296882857138790, +0.610257273455240060, 0.610217662527698050, 0.610178050074611680, 0.610138436096080430, 0.610098820592203110, 0.610059203563078410, 0.610019585008806040, 0.609979964929484700, +0.609940343325213520, 0.609900720196091100, 0.609861095542217120, 0.609821469363690530, 0.609781841660610220, 0.609742212433074910, 0.609702581681184520, 0.609662949405037620, +0.609623315604733370, 0.609583680280370470, 0.609544043432048600, 0.609504405059866810, 0.609464765163923890, 0.609425123744318790, 0.609385480801151180, 0.609345836334519890, +0.609306190344523600, 0.609266542831262250, 0.609226893794834520, 0.609187243235339570, 0.609147591152876090, 0.609107937547544110, 0.609068282419442220, 0.609028625768669560, +0.608988967595325060, 0.608949307899508520, 0.608909646681318640, 0.608869983940854680, 0.608830319678215440, 0.608790653893500730, 0.608750986586809370, 0.608711317758240500, +0.608671647407893040, 0.608631975535866790, 0.608592302142260680, 0.608552627227173740, 0.608512950790704890, 0.608473272832954050, 0.608433593354019920, 0.608393912354001530, +0.608354229832998690, 0.608314545791110330, 0.608274860228435580, 0.608235173145073360, 0.608195484541123490, 0.608155794416684990, 0.608116102771856900, 0.608076409606738260, +0.608036714921428970, 0.607997018716027850, 0.607957320990634150, 0.607917621745346910, 0.607877920980265940, 0.607838218695490040, 0.607798514891118690, 0.607758809567250700, +0.607719102723986100, 0.607679394361423600, 0.607639684479662430, 0.607599973078802310, 0.607560260158942270, 0.607520545720181550, 0.607480829762619080, 0.607441112286355000, +0.607401393291488010, 0.607361672778117590, 0.607321950746342760, 0.607282227196263240, 0.607242502127978260, 0.607202775541586970, 0.607163047437188410, 0.607123317814882490, +0.607083586674768360, 0.607043854016945270, 0.607004119841512150, 0.606964384148569120, 0.606924646938215130, 0.606884908210549190, 0.606845167965671340, 0.606805426203680500, +0.606765682924676140, 0.606725938128757190, 0.606686191816023790, 0.606646443986574970, 0.606606694640509870, 0.606566943777927860, 0.606527191398928740, 0.606487437503611670, +0.606447682092076000, 0.606407925164420770, 0.606368166720746000, 0.606328406761150960, 0.606288645285734780, 0.606248882294596720, 0.606209117787836820, 0.606169351765553980, +0.606129584227847570, 0.606089815174817530, 0.606050044606562870, 0.606010272523183180, 0.605970498924777390, 0.605930723811445750, 0.605890947183287290, 0.605851169040401480, +0.605811389382887370, 0.605771608210845080, 0.605731825524373880, 0.605692041323573020, 0.605652255608541750, 0.605612468379380210, 0.605572679636187550, 0.605532889379063130, +0.605493097608106100, 0.605453304323416710, 0.605413509525094100, 0.605373713213237630, 0.605333915387946560, 0.605294116049321040, 0.605254315197460310, 0.605214512832463410, +0.605174708954430600, 0.605134903563460890, 0.605095096659654000, 0.605055288243109060, 0.605015478313926210, 0.604975666872204720, 0.604935853918043940, 0.604896039451543240, +0.604856223472802880, 0.604816405981921880, 0.604776586978999830, 0.604736766464135990, 0.604696944437430610, 0.604657120898982820, 0.604617295848892340, 0.604577469287258200, +0.604537641214180630, 0.604497811629759130, 0.604457980534092610, 0.604418147927281660, 0.604378313809425190, 0.604338478180622920, 0.604298641040974190, 0.604258802390579160, +0.604218962229537190, 0.604179120557947760, 0.604139277375910220, 0.604099432683524840, 0.604059586480890860, 0.604019738768107880, 0.603979889545275260, 0.603940038812493140, +0.603900186569861110, 0.603860332817478530, 0.603820477555444660, 0.603780620783860080, 0.603740762502823940, 0.603700902712435480, 0.603661041412795200, 0.603621178604002220, +0.603581314286156360, 0.603541448459356870, 0.603501581123704110, 0.603461712279297350, 0.603421841926236270, 0.603381970064620350, 0.603342096694549750, 0.603302221816124030, +0.603262345429442680, 0.603222467534605070, 0.603182588131711770, 0.603142707220861940, 0.603102824802155270, 0.603062940875691230, 0.603023055441570200, 0.602983168499891530, +0.602943280050754930, 0.602903390094259860, 0.602863498630506590, 0.602823605659594590, 0.602783711181623220, 0.602743815196692960, 0.602703917704903060, 0.602664018706353440, +0.602624118201143370, 0.602584216189373410, 0.602544312671142950, 0.602504407646551670, 0.602464501115698940, 0.602424593078685460, 0.602384683535610370, 0.602344772486573590, +0.602304859931674600, 0.602264945871013760, 0.602225030304690550, 0.602185113232804770, 0.602145194655455910, 0.602105274572744320, 0.602065352984769600, 0.602025429891631100, +0.601985505293429420, 0.601945579190264040, 0.601905651582234640, 0.601865722469440700, 0.601825791851982930, 0.601785859729960570, 0.601745926103473660, 0.601705990972621560, +0.601666054337504750, 0.601626116198222820, 0.601586176554875670, 0.601546235407562690, 0.601506292756384560, 0.601466348601440550, 0.601426402942830780, 0.601386455780654640, +0.601346507115012700, 0.601306556946004430, 0.601266605273729440, 0.601226652098288290, 0.601186697419780590, 0.601146741238306030, 0.601106783553964410, 0.601066824366856100, +0.601026863677080690, 0.600986901484738210, 0.600946937789928030, 0.600906972592750940, 0.600867005893306330, 0.600827037691694210, 0.600787067988014290, 0.600747096782366930, +0.600707124074851830, 0.600667149865568910, 0.600627174154617860, 0.600587196942099170, 0.600547218228112410, 0.600507238012757290, 0.600467256296134510, 0.600427273078343540, +0.600387288359484410, 0.600347302139656700, 0.600307314418961010, 0.600267325197497150, 0.600227334475364920, 0.600187342252664010, 0.600147348529495030, 0.600107353305957770, +0.600067356582152040, 0.600027358358177660, 0.599987358634135210, 0.599947357410124390, 0.599907354686245120, 0.599867350462597090, 0.599827344739281120, 0.599787337516396680, +0.599747328794044020, 0.599707318572322620, 0.599667306851333290, 0.599627293631175730, 0.599587278911949520, 0.599547262693755470, 0.599507244976693280, 0.599467225760862980, +0.599427205046364260, 0.599387182833297840, 0.599347159121763510, 0.599307133911861300, 0.599267107203690920, 0.599227078997353060, 0.599187049292947530, 0.599147018090574360, +0.599106985390333360, 0.599066951192325230, 0.599026915496649660, 0.598986878303406800, 0.598946839612696460, 0.598906799424619330, 0.598866757739275220, 0.598826714556763840, +0.598786669877185980, 0.598746623700641580, 0.598706576027230540, 0.598666526857052680, 0.598626476190208920, 0.598586424026798960, 0.598546370366922930, 0.598506315210680540, +0.598466258558172810, 0.598426200409499450, 0.598386140764760490, 0.598346079624055950, 0.598306016987486420, 0.598265952855151940, 0.598225887227152640, 0.598185820103588120, +0.598145751484559510, 0.598105681370166510, 0.598065609760508930, 0.598025536655687700, 0.597985462055802610, 0.597945385960953810, 0.597905308371241230, 0.597865229286765780, +0.597825148707627260, 0.597785066633925830, 0.597744983065761400, 0.597704898003234790, 0.597664811446446010, 0.597624723395495220, 0.597584633850482220, 0.597544542811508040, +0.597504450278672490, 0.597464356252075720, 0.597424260731817870, 0.597384163717999630, 0.597344065210720920, 0.597303965210082110, 0.597263863716183120, 0.597223760729124640, +0.597183656249006930, 0.597143550275929580, 0.597103442809993830, 0.597063333851299390, 0.597023223399946730, 0.596983111456035550, 0.596942998019666990, 0.596902883090940860, +0.596862766669957630, 0.596822648756817120, 0.596782529351620240, 0.596742408454467130, 0.596702286065457940, 0.596662162184692700, 0.596622036812272440, 0.596581909948297070, +0.596541781592866970, 0.596501651746081940, 0.596461520408043230, 0.596421387578850770, 0.596381253258604360, 0.596341117447405260, 0.596300980145353380, 0.596260841352548980, +0.596220701069092080, 0.596180559295083960, 0.596140416030624290, 0.596100271275813660, 0.596060125030751900, 0.596019977295540240, 0.595979828070278720, 0.595939677355067480, +0.595899525150006770, 0.595859371455197630, 0.595819216270739970, 0.595779059596734380, 0.595738901433280680, 0.595698741780480210, 0.595658580638432800, 0.595618418007238580, +0.595578253886998700, 0.595538088277813180, 0.595497921179782400, 0.595457752593006480, 0.595417582517586590, 0.595377410953622620, 0.595337237901215290, 0.595297063360464400, +0.595256887331471200, 0.595216709814335830, 0.595176530809158670, 0.595136350316039840, 0.595096168335080500, 0.595055984866380670, 0.595015799910040940, 0.594975613466161350, +0.594935425534843020, 0.594895236116186220, 0.594855045210291310, 0.594814852817258320, 0.594774658937188730, 0.594734463570182340, 0.594694266716339510, 0.594654068375761400, +0.594613868548548030, 0.594573667234800100, 0.594533464434617520, 0.594493260148101780, 0.594453054375352790, 0.594412847116471130, 0.594372638371557070, 0.594332428140711740, +0.594292216424035400, 0.594252003221628520, 0.594211788533591130, 0.594171572360024710, 0.594131354701029400, 0.594091135556705670, 0.594050914927153780, 0.594010692812474980, +0.593970469212769410, 0.593930244128137220, 0.593890017558679870, 0.593849789504497520, 0.593809559965690630, 0.593769328942359450, 0.593729096434605360, 0.593688862442528500, +0.593648626966229550, 0.593608390005808560, 0.593568151561367000, 0.593527911633005110, 0.593487670220823380, 0.593447427324922170, 0.593407182945402730, 0.593366937082365320, +0.593326689735910630, 0.593286440906138800, 0.593246190593151200, 0.593205938797048190, 0.593165685517929920, 0.593125430755897850, 0.593085174511052140, 0.593044916783493580, +0.593004657573322320, 0.592964396880639730, 0.592924134705546170, 0.592883871048142330, 0.592843605908528360, 0.592803339286805840, 0.592763071183074920, 0.592722801597436290, +0.592682530529990310, 0.592642257980838360, 0.592601983950080900, 0.592561708437818300, 0.592521431444151150, 0.592481152969180800, 0.592440873013007520, 0.592400591575731660, +0.592360308657454810, 0.592320024258277120, 0.592279738378299390, 0.592239451017621880, 0.592199162176346160, 0.592158871854572500, 0.592118580052401700, 0.592078286769934130, +0.592037992007271140, 0.591997695764513110, 0.591957398041760950, 0.591917098839114920, 0.591876798156676490, 0.591836495994546020, 0.591796192352824320, 0.591755887231611880, +0.591715580631009930, 0.591675272551119180, 0.591634962992040100, 0.591594651953873400, 0.591554339436720310, 0.591514025440681430, 0.591473709965857130, 0.591433393012348870, +0.591393074580257250, 0.591352754669682850, 0.591312433280726140, 0.591272110413488820, 0.591231786068071140, 0.591191460244574030, 0.591151132943097960, 0.591110804163744400, +0.591070473906613710, 0.591030142171806940, 0.590989808959424550, 0.590949474269567790, 0.590909138102337470, 0.590868800457834300, 0.590828461336158740, 0.590788120737412380, +0.590747778661695810, 0.590707435109109280, 0.590667090079754600, 0.590626743573732240, 0.590586395591143010, 0.590546046132087390, 0.590505695196666960, 0.590465342784982420, +0.590424988897134460, 0.590384633533223680, 0.590344276693351660, 0.590303918377618860, 0.590263558586126450, 0.590223197318974660, 0.590182834576265300, 0.590142470358098750, +0.590102104664576130, 0.590061737495797820, 0.590021368851865620, 0.589980998732879900, 0.589940627138941350, 0.589900254070151680, 0.589859879526611230, 0.589819503508421160, +0.589779126015681940, 0.589738747048495380, 0.589698366606961840, 0.589657984691182360, 0.589617601301257620, 0.589577216437289220, 0.589536830099377740, 0.589496442287624320, +0.589456053002129330, 0.589415662242994580, 0.589375270010320640, 0.589334876304208550, 0.589294481124758910, 0.589254084472073500, 0.589213686346252820, 0.589173286747397880, +0.589132885675609400, 0.589092483130989050, 0.589052079113637550, 0.589011673623655470, 0.588971266661144520, 0.588930858226205390, 0.588890448318939220, 0.588850036939446490, +0.588809624087829000, 0.588769209764187560, 0.588728793968622990, 0.588688376701236080, 0.588647957962128650, 0.588607537751401290, 0.588567116069155130, 0.588526692915490760, +0.588486268290510100, 0.588445842194313730, 0.588405414627002690, 0.588364985588677780, 0.588324555079440810, 0.588284123099392490, 0.588243689648633380, 0.588203254727265530, +0.588162818335389410, 0.588122380473106390, 0.588081941140516930, 0.588041500337723070, 0.588001058064825390, 0.587960614321925150, 0.587920169109122930, 0.587879722426520650, +0.587839274274219110, 0.587798824652319360, 0.587758373560922200, 0.587717921000129540, 0.587677466970041970, 0.587637011470760750, 0.587596554502386680, 0.587556096065021570, +0.587515636158766230, 0.587475174783721350, 0.587434711939988970, 0.587394247627669900, 0.587353781846865040, 0.587313314597675440, 0.587272845880202900, 0.587232375694548340, +0.587191904040812670, 0.587151430919097050, 0.587110956329503160, 0.587070480272131820, 0.587030002747084280, 0.586989523754461450, 0.586949043294365150, 0.586908561366896180, +0.586868077972155900, 0.586827593110245020, 0.586787106781265440, 0.586746618985318210, 0.586706129722504020, 0.586665638992924900, 0.586625146796681650, 0.586584653133875530, +0.586544158004607460, 0.586503661408979250, 0.586463163347092030, 0.586422663819046840, 0.586382162824944600, 0.586341660364887330, 0.586301156438975850, 0.586260651047311620, +0.586220144189995240, 0.586179635867128960, 0.586139126078813580, 0.586098614825150470, 0.586058102106240320, 0.586017587922185390, 0.585977072273086370, 0.585936555159044750, +0.585896036580161320, 0.585855516536538220, 0.585814995028276390, 0.585774472055476610, 0.585733947618241050, 0.585693421716670600, 0.585652894350866540, 0.585612365520929990, +0.585571835226962770, 0.585531303469066120, 0.585490770247341090, 0.585450235561888800, 0.585409699412811290, 0.585369161800209590, 0.585328622724184840, 0.585288082184838300, +0.585247540182271870, 0.585206996716586600, 0.585166451787883850, 0.585125905396264630, 0.585085357541831000, 0.585044808224683850, 0.585004257444924460, 0.584963705202654730, +0.584923151497975800, 0.584882596330988940, 0.584842039701795270, 0.584801481610496720, 0.584760922057194650, 0.584720361041990210, 0.584679798564984420, 0.584639234626279650, +0.584598669225976700, 0.584558102364177050, 0.584517534040981830, 0.584476964256493090, 0.584436393010812070, 0.584395820304039910, 0.584355246136277980, 0.584314670507628200, +0.584274093418191810, 0.584233514868069740, 0.584192934857364230, 0.584152353386176440, 0.584111770454607830, 0.584071186062759320, 0.584030600210733280, 0.583990012898630730, +0.583949424126553150, 0.583908833894601580, 0.583868242202878360, 0.583827649051484540, 0.583787054440521590, 0.583746458370090540, 0.583705860840293860, 0.583665261851232460, +0.583624661403007840, 0.583584059495721340, 0.583543456129475000, 0.583502851304369960, 0.583462245020507810, 0.583421637277989680, 0.583381028076917940, 0.583340417417393510, +0.583299805299517750, 0.583259191723392690, 0.583218576689119810, 0.583177960196800460, 0.583137342246535790, 0.583096722838428170, 0.583056101972578730, 0.583015479649089060, +0.582974855868060300, 0.582934230629594710, 0.582893603933793640, 0.582852975780758560, 0.582812346170590630, 0.582771715103392210, 0.582731082579264430, 0.582690448598309100, +0.582649813160627140, 0.582609176266321030, 0.582568537915492010, 0.582527898108241350, 0.582487256844671290, 0.582446614124882970, 0.582405969948978200, 0.582365324317058120, +0.582324677229225210, 0.582284028685580490, 0.582243378686225670, 0.582202727231262100, 0.582162074320792030, 0.582121419954916840, 0.582080764133738100, 0.582040106857356960, +0.581999448125876010, 0.581958787939396480, 0.581918126298019980, 0.581877463201847740, 0.581836798650982260, 0.581796132645524660, 0.581755465185576530, 0.581714796271240010, +0.581674125902616470, 0.581633454079807710, 0.581592780802914880, 0.581552106072040440, 0.581511429887285880, 0.581470752248752550, 0.581430073156542160, 0.581389392610756840, +0.581348710611498070, 0.581308027158867540, 0.581267342252966500, 0.581226655893897550, 0.581185968081761930, 0.581145278816661340, 0.581104588098697250, 0.581063895927972030, +0.581023202304587150, 0.580982507228643860, 0.580941810700244640, 0.580901112719490850, 0.580860413286484300, 0.580819712401326350, 0.580779010064119580, 0.580738306274965250, +0.580697601033965060, 0.580656894341220590, 0.580616186196834190, 0.580575476600907360, 0.580534765553541890, 0.580494053054839030, 0.580453339104901490, 0.580412623703830620, +0.580371906851728130, 0.580331188548695480, 0.580290468794835260, 0.580249747590248940, 0.580209024935038120, 0.580168300829304480, 0.580127575273150400, 0.580086848266677450, +0.580046119809986880, 0.580005389903181510, 0.579964658546362590, 0.579923925739632030, 0.579883191483091310, 0.579842455776843010, 0.579801718620988500, 0.579760980015629700, +0.579720239960868080, 0.579679498456806330, 0.579638755503545710, 0.579598011101188250, 0.579557265249835420, 0.579516517949589800, 0.579475769200552880, 0.579435019002826460, +0.579394267356512230, 0.579353514261712670, 0.579312759718529250, 0.579272003727063670, 0.579231246287418400, 0.579190487399695030, 0.579149727063995370, 0.579108965280421110, +0.579068202049074720, 0.579027437370057910, 0.578986671243472470, 0.578945903669420000, 0.578905134648003080, 0.578864364179323410, 0.578823592263482790, 0.578782818900582810, +0.578742044090726160, 0.578701267834014430, 0.578660490130549540, 0.578619710980432970, 0.578578930383767620, 0.578538148340654870, 0.578497364851196290, 0.578456579915494820, +0.578415793533651800, 0.578375005705769380, 0.578334216431949040, 0.578293425712293470, 0.578252633546904370, 0.578211839935883760, 0.578171044879333130, 0.578130248377355160, +0.578089450430051670, 0.578048651037524560, 0.578007850199875440, 0.577967047917207100, 0.577926244189621130, 0.577885439017219450, 0.577844632400103860, 0.577803824338377070, +0.577763014832140760, 0.577722203881496870, 0.577681391486547180, 0.577640577647394290, 0.577599762364139900, 0.577558945636885810, 0.577518127465734830, 0.577477307850788320, +0.577436486792148650, 0.577395664289917400, 0.577354840344197370, 0.577314014955090270, 0.577273188122698010, 0.577232359847122510, 0.577191530128466470, 0.577150698966831580, +0.577109866362319980, 0.577069032315033260, 0.577028196825074450, 0.576987359892545020, 0.576946521517547330, 0.576905681700182860, 0.576864840440554530, 0.576823997738764250, +0.576783153594913500, 0.576742308009105200, 0.576701460981441150, 0.576660612512023500, 0.576619762600953930, 0.576578911248335380, 0.576538058454269420, 0.576497204218858420, +0.576456348542203960, 0.576415491424409070, 0.576374632865575440, 0.576333772865805230, 0.576292911425200230, 0.576252048543863250, 0.576211184221896210, 0.576170318459401140, +0.576129451256479960, 0.576088582613235590, 0.576047712529769610, 0.576006841006184160, 0.575965968042581820, 0.575925093639064630, 0.575884217795734730, 0.575843340512693810, +0.575802461790045020, 0.575761581627890040, 0.575720700026331130, 0.575679816985469990, 0.575638932505409760, 0.575598046586252240, 0.575557159228099580, 0.575516270431053580, +0.575475380195217380, 0.575434488520692680, 0.575393595407581730, 0.575352700855986440, 0.575311804866009860, 0.575270907437753660, 0.575230008571319780, 0.575189108266811360, +0.575148206524330070, 0.575107303343978420, 0.575066398725857960, 0.575025492670071970, 0.574984585176722240, 0.574943676245911030, 0.574902765877740360, 0.574861854072313050, +0.574820940829731120, 0.574780026150096820, 0.574739110033512080, 0.574698192480079920, 0.574657273489902360, 0.574616353063081560, 0.574575431199719540, 0.574534507899919220, +0.574493583163782740, 0.574452656991412240, 0.574411729382909740, 0.574370800338378280, 0.574329869857919890, 0.574288937941636380, 0.574248004589630880, 0.574207069802005420, +0.574166133578862260, 0.574125195920303420, 0.574084256826431940, 0.574043316297349840, 0.574002374333159480, 0.573961430933962680, 0.573920486099862790, 0.573879539830961630, +0.573838592127361660, 0.573797642989164910, 0.573756692416474310, 0.573715740409391990, 0.573674786968020320, 0.573633832092461330, 0.573592875782818150, 0.573551918039192810, +0.573510958861687240, 0.573469998250404680, 0.573429036205447050, 0.573388072726916940, 0.573347107814916160, 0.573306141469548060, 0.573265173690914560, 0.573224204479118150, +0.573183233834260950, 0.573142261756445890, 0.573101288245775220, 0.573060313302351410, 0.573019336926276380, 0.572978359117653380, 0.572937379876584440, 0.572896399203172150, +0.572855417097518420, 0.572814433559726500, 0.572773448589898540, 0.572732462188136560, 0.572691474354543820, 0.572650485089222450, 0.572609494392274820, 0.572568502263803070, +0.572527508703910450, 0.572486513712698990, 0.572445517290271270, 0.572404519436729430, 0.572363520152176730, 0.572322519436715080, 0.572281517290447180, 0.572240513713475170, +0.572199508705902190, 0.572158502267830490, 0.572117494399362550, 0.572076485100600380, 0.572035474371647480, 0.571994462212605860, 0.571953448623578110, 0.571912433604666370, +0.571871417155973890, 0.571830399277602820, 0.571789379969655510, 0.571748359232234990, 0.571707337065443630, 0.571666313469383900, 0.571625288444158050, 0.571584261989869340, +0.571543234106620000, 0.571502204794512520, 0.571461174053649270, 0.571420141884133370, 0.571379108286067080, 0.571338073259553100, 0.571297036804693460, 0.571255998921591730, +0.571214959610349850, 0.571173918871070720, 0.571132876703856370, 0.571091833108810180, 0.571050788086034380, 0.571009741635631340, 0.570968693757704200, 0.570927644452355440, +0.570886593719687420, 0.570845541559802720, 0.570804487972804480, 0.570763432958794950, 0.570722376517876830, 0.570681318650152480, 0.570640259355725150, 0.570599198634697210, +0.570558136487171240, 0.570517072913249600, 0.570476007913035650, 0.570434941486631650, 0.570393873634140290, 0.570352804355663820, 0.570311733651305830, 0.570270661521168450, +0.570229587965354060, 0.570188512983966110, 0.570147436577106760, 0.570106358744878920, 0.570065279487384720, 0.570024198804727770, 0.569983116697010290, 0.569942033164335120, +0.569900948206804370, 0.569859861824521640, 0.569818774017589290, 0.569777684786110020, 0.569736594130186180, 0.569695502049921140, 0.569654408545417380, 0.569613313616777580, +0.569572217264104230, 0.569531119487500570, 0.569490020287069190, 0.569448919662912330, 0.569407817615133590, 0.569366714143835330, 0.569325609249120230, 0.569284502931090790, +0.569243395189850450, 0.569202286025501600, 0.569161175438147040, 0.569120063427889230, 0.569078949994831550, 0.569037835139076580, 0.568996718860726890, 0.568955601159885080, +0.568914482036654730, 0.568873361491138100, 0.568832239523438090, 0.568791116133657070, 0.568749991321898630, 0.568708865088265240, 0.568667737432859700, 0.568626608355784490, +0.568585477857143080, 0.568544345937037950, 0.568503212595571570, 0.568462077832847630, 0.568420941648968390, 0.568379804044036870, 0.568338665018155440, 0.568297524571427680, +0.568256382703956180, 0.568215239415843620, 0.568174094707192710, 0.568132948578106810, 0.568091801028688610, 0.568050652059040930, 0.568009501669266230, 0.567968349859468200, +0.567927196629749220, 0.567886041980212310, 0.567844885910959830, 0.567803728422095590, 0.567762569513721950, 0.567721409185941610, 0.567680247438858030, 0.567639084272573920, +0.567597919687192090, 0.567556753682815000, 0.567515586259546460, 0.567474417417488940, 0.567433247156745370, 0.567392075477418320, 0.567350902379611500, 0.567309727863427370, +0.567268551928968970, 0.567227374576338760, 0.567186195805640450, 0.567145015616976720, 0.567103834010450500, 0.567062650986164260, 0.567021466544221700, 0.566980280684725610, +0.566939093407778370, 0.566897904713483780, 0.566856714601944420, 0.566815523073263220, 0.566774330127542970, 0.566733135764887150, 0.566691939985398570, 0.566650742789180040, +0.566609544176334360, 0.566568344146965220, 0.566527142701175210, 0.566485939839067250, 0.566444735560744150, 0.566403529866309600, 0.566362322755866180, 0.566321114229517030, +0.566279904287364630, 0.566238692929512900, 0.566197480156064300, 0.566156265967122210, 0.566115050362788970, 0.566073833343168410, 0.566032614908363430, 0.565991395058476400, +0.565950173793611340, 0.565908951113870850, 0.565867727019357950, 0.565826501510175330, 0.565785274586426800, 0.565744046248215170, 0.565702816495643360, 0.565661585328814280, +0.565620352747831400, 0.565579118752797760, 0.565537883343816270, 0.565496646520989740, 0.565455408284421980, 0.565414168634215670, 0.565372927570473970, 0.565331685093299560, +0.565290441202796370, 0.565249195899066970, 0.565207949182214290, 0.565166701052342010, 0.565125451509553070, 0.565084200553950480, 0.565042948185636940, 0.565001694404716480, +0.564960439211291800, 0.564919182605466030, 0.564877924587341870, 0.564836665157023350, 0.564795404314613060, 0.564754142060214350, 0.564712878393929920, 0.564671613315863570, +0.564630346826118230, 0.564589078924797040, 0.564547809612002790, 0.564506538887839420, 0.564465266752409600, 0.564423993205816270, 0.564382718248163440, 0.564341441879553710, +0.564300164100090430, 0.564258884909876300, 0.564217604309015350, 0.564176322297610390, 0.564135038875764660, 0.564093754043580970, 0.564052467801163250, 0.564011180148614290, +0.563969891086037460, 0.563928600613535560, 0.563887308731212400, 0.563846015439171120, 0.563804720737514750, 0.563763424626346100, 0.563722127105769410, 0.563680828175887380, +0.563639527836802820, 0.563598226088619870, 0.563556922931441330, 0.563515618365370560, 0.563474312390510270, 0.563433005006964580, 0.563391696214836420, 0.563350386014229040, +0.563309074405245250, 0.563267761387989290, 0.563226446962563740, 0.563185131129072200, 0.563143813887617360, 0.563102495238303470, 0.563061175181233330, 0.563019853716510200, +0.562978530844237100, 0.562937206564517960, 0.562895880877455900, 0.562854553783154080, 0.562813225281715510, 0.562771895373244350, 0.562730564057843270, 0.562689231335615550, +0.562647897206665080, 0.562606561671094910, 0.562565224729008270, 0.562523886380508210, 0.562482546625698850, 0.562441205464683010, 0.562399862897564270, 0.562358518924445440, +0.562317173545430760, 0.562275826760623150, 0.562234478570125870, 0.562193128974042060, 0.562151777972475840, 0.562110425565530150, 0.562069071753308340, 0.562027716535913550, +0.561986359913449920, 0.561945001886020260, 0.561903642453727700, 0.561862281616676510, 0.561820919374969590, 0.561779555728710300, 0.561738190678001900, 0.561696824222948200, +0.561655456363652550, 0.561614087100218320, 0.561572716432748420, 0.561531344361347110, 0.561489970886117410, 0.561448596007162790, 0.561407219724586400, 0.561365842038492270, +0.561324462948983530, 0.561283082456163650, 0.561241700560135670, 0.561200317261003720, 0.561158932558871170, 0.561117546453840820, 0.561076158946016920, 0.561034770035502730, +0.560993379722401490, 0.560951988006816560, 0.560910594888851980, 0.560869200368610880, 0.560827804446196840, 0.560786407121712790, 0.560745008395263200, 0.560703608266951090, +0.560662206736879940, 0.560620803805153000, 0.560579399471874300, 0.560537993737147080, 0.560496586601074930, 0.560455178063760990, 0.560413768125309410, 0.560372356785823420, +0.560330944045406620, 0.560289529904161920, 0.560248114362193910, 0.560206697419605600, 0.560165279076500160, 0.560123859332981810, 0.560082438189153930, 0.560041015645119880, +0.559999591700982900, 0.559958166356847360, 0.559916739612816410, 0.559875311468993610, 0.559833881925482220, 0.559792450982386390, 0.559751018639809470, 0.559709584897855050, +0.559668149756626150, 0.559626713216227370, 0.559585275276761830, 0.559543835938333010, 0.559502395201044280, 0.559460953064999990, 0.559419509530303170, 0.559378064597057410, +0.559336618265366740, 0.559295170535334510, 0.559253721407064310, 0.559212270880659500, 0.559170818956224450, 0.559129365633862290, 0.559087910913676710, 0.559046454795770980, +0.559004997280249440, 0.558963538367215460, 0.558922078056772630, 0.558880616349024200, 0.558839153244074630, 0.558797688742027180, 0.558756222842985540, 0.558714755547052970, +0.558673286854333820, 0.558631816764931450, 0.558590345278949240, 0.558548872396491540, 0.558507398117661590, 0.558465922442563210, 0.558424445371299650, 0.558382966903975260, +0.558341487040693530, 0.558300005781558030, 0.558258523126672230, 0.558217039076140400, 0.558175553630065990, 0.558134066788552820, 0.558092578551703910, 0.558051088919624070, +0.558009597892416440, 0.557968105470184830, 0.557926611653032590, 0.557885116441064310, 0.557843619834383020, 0.557802121833092410, 0.557760622437296960, 0.557719121647099800, +0.557677619462604970, 0.557636115883915600, 0.557594610911136380, 0.557553104544370680, 0.557511596783722090, 0.557470087629294290, 0.557428577081191530, 0.557387065139517300, +0.557345551804375510, 0.557304037075869400, 0.557262520954103560, 0.557221003439181460, 0.557179484531206910, 0.557137964230283170, 0.557096442536514910, 0.557054919450005630, +0.557013394970858890, 0.556971869099178510, 0.556930341835068620, 0.556888813178633040, 0.556847283129974890, 0.556805751689198990, 0.556764218856408810, 0.556722684631707930, +0.556681149015200050, 0.556639612006989640, 0.556598073607180170, 0.556556533815875550, 0.556514992633179270, 0.556473450059195800, 0.556431906094028710, 0.556390360737781920, +0.556348813990558800, 0.556307265852464040, 0.556265716323601110, 0.556224165404073930, 0.556182613093985870, 0.556141059393441720, 0.556099504302544960, 0.556057947821398950, +0.556016389950108600, 0.555974830688777180, 0.555933270037508700, 0.555891707996406640, 0.555850144565575690, 0.555808579745119320, 0.555767013535141690, 0.555725445935746020, +0.555683876947037140, 0.555642306569118500, 0.555600734802094150, 0.555559161646067560, 0.555517587101143520, 0.555476011167425400, 0.555434433845017340, 0.555392855134022810, +0.555351275034546510, 0.555309693546692020, 0.555268110670562920, 0.555226526406263910, 0.555184940753898570, 0.555143353713570930, 0.555101765285384460, 0.555060175469443970, +0.555018584265853040, 0.554976991674715700, 0.554935397696135540, 0.554893802330217120, 0.554852205577064270, 0.554810607436780900, 0.554769007909470700, 0.554727406995238260, +0.554685804694187380, 0.554644201006421980, 0.554602595932045640, 0.554560989471163170, 0.554519381623878370, 0.554477772390294940, 0.554436161770516800, 0.554394549764648640, +0.554352936372794040, 0.554311321595056810, 0.554269705431541640, 0.554228087882352120, 0.554186468947592490, 0.554144848627366240, 0.554103226921778270, 0.554061603830932280, +0.554019979354932190, 0.553978353493881800, 0.553936726247885920, 0.553895097617048250, 0.553853467601472800, 0.553811836201263290, 0.553770203416524610, 0.553728569247360360, +0.553686933693874780, 0.553645296756171360, 0.553603658434355220, 0.553562018728529840, 0.553520377638799020, 0.553478735165267690, 0.553437091308039530, 0.553395446067218580, +0.553353799442908740, 0.553312151435214730, 0.553270502044240330, 0.553228851270089580, 0.553187199112866510, 0.553145545572675700, 0.553103890649621070, 0.553062234343806640, +0.553020576655336330, 0.552978917584314940, 0.552937257130846290, 0.552895595295034400, 0.552853932076983190, 0.552812267476797570, 0.552770601494581240, 0.552728934130438110, +0.552687265384472880, 0.552645595256789580, 0.552603923747492230, 0.552562250856684760, 0.552520576584472070, 0.552478900930957860, 0.552437223896246390, 0.552395545480441560, +0.552353865683648190, 0.552312184505970080, 0.552270501947511590, 0.552228818008376530, 0.552187132688669700, 0.552145445988495130, 0.552103757907956850, 0.552062068447158880, +0.552020377606206040, 0.551978685385202340, 0.551936991784251480, 0.551895296803458610, 0.551853600442927420, 0.551811902702762260, 0.551770203583066940, 0.551728503083946500, +0.551686801205504730, 0.551645097947846110, 0.551603393311074220, 0.551561687295294310, 0.551519979900610190, 0.551478271127126110, 0.551436560974945980, 0.551394849444174720, +0.551353136534916470, 0.551311422247275250, 0.551269706581355210, 0.551227989537261260, 0.551186271115097330, 0.551144551314967760, 0.551102830136976360, 0.551061107581228280, +0.551019383647827430, 0.550977658336877730, 0.550935931648484310, 0.550894203582751100, 0.550852474139782330, 0.550810743319681940, 0.550769011122555160, 0.550727277548505810, +0.550685542597638240, 0.550643806270056490, 0.550602068565865580, 0.550560329485169530, 0.550518589028072600, 0.550476847194678820, 0.550435103985093320, 0.550393359399420020, +0.550351613437763400, 0.550309866100227360, 0.550268117386916940, 0.550226367297936390, 0.550184615833389400, 0.550142862993381330, 0.550101108778015990, 0.550059353187397960, +0.550017596221631160, 0.549975837880820830, 0.549934078165070780, 0.549892317074485600, 0.549850554609169210, 0.549808790769226840, 0.549767025554762530, 0.549725258965880650, +0.549683491002685210, 0.549641721665281360, 0.549599950953773230, 0.549558178868265300, 0.549516405408861490, 0.549474630575667140, 0.549432854368786080, 0.549391076788322550, +0.549349297834381690, 0.549307517507067630, 0.549265735806484750, 0.549223952732737160, 0.549182168285930140, 0.549140382466167590, 0.549098595273554090, 0.549056806708193790, +0.549015016770191820, 0.548973225459652330, 0.548931432776679770, 0.548889638721378190, 0.548847843293852940, 0.548806046494208060, 0.548764248322548110, 0.548722448778977130, +0.548680647863600380, 0.548638845576522090, 0.548597041917846640, 0.548555236887678150, 0.548513430486122000, 0.548471622713282310, 0.548429813569263120, 0.548388003054169790, +0.548346191168106460, 0.548304377911177700, 0.548262563283487550, 0.548220747285141470, 0.548178929916243400, 0.548137111176898010, 0.548095291067209560, 0.548053469587283180, +0.548011646737223130, 0.547969822517134000, 0.547927996927119910, 0.547886169967286230, 0.547844341637737100, 0.547802511938577210, 0.547760680869910590, 0.547718848431842600, +0.547677014624477490, 0.547635179447919510, 0.547593342902274020, 0.547551504987645040, 0.547509665704137390, 0.547467825051855210, 0.547425983030903840, 0.547384139641387430, +0.547342294883410680, 0.547300448757077950, 0.547258601262494370, 0.547216752399764310, 0.547174902168992340, 0.547133050570282720, 0.547091197603740920, 0.547049343269471080, +0.547007487567577890, 0.546965630498165600, 0.546923772061339690, 0.546881912257204280, 0.546840051085863640, 0.546798188547423350, 0.546756324641987530, 0.546714459369661010, +0.546672592730547910, 0.546630724724753600, 0.546588855352382550, 0.546546984613539450, 0.546505112508328450, 0.546463239036855010, 0.546421364199223490, 0.546379487995538590, +0.546337610425904560, 0.546295731490426870, 0.546253851189209880, 0.546211969522358180, 0.546170086489976340, 0.546128202092169500, 0.546086316329042250, 0.546044429200699180, +0.546002540707244630, 0.545960650848784200, 0.545918759625422020, 0.545876867037262680, 0.545834973084411530, 0.545793077766972940, 0.545751181085051610, 0.545709283038751990, +0.545667383628179460, 0.545625482853438590, 0.545583580714633980, 0.545541677211869970, 0.545499772345252150, 0.545457866114885000, 0.545415958520873100, 0.545374049563321030, +0.545332139242334040, 0.545290227558016820, 0.545248314510474060, 0.545206400099810030, 0.545164484326130520, 0.545122567189539660, 0.545080648690142060, 0.545038728828043270, +0.544996807603347570, 0.544954885016159850, 0.544912961066584600, 0.544871035754727280, 0.544829109080692490, 0.544787181044584790, 0.544745251646508780, 0.544703320886570030, +0.544661388764873020, 0.544619455281522450, 0.544577520436623000, 0.544535584230280030, 0.544493646662598030, 0.544451707733682010, 0.544409767443636340, 0.544367825792566710, +0.544325882780577360, 0.544283938407773000, 0.544241992674259210, 0.544200045580140350, 0.544158097125521430, 0.544116147310506950, 0.544074196135202360, 0.544032243599712360, +0.543990289704141650, 0.543948334448594920, 0.543906377833177750, 0.543864419857994610, 0.543822460523150420, 0.543780499828749650, 0.543738537774898110, 0.543696574361700160, +0.543654609589260820, 0.543612643457684560, 0.543570675967076980, 0.543528707117542860, 0.543486736909186470, 0.543444765342113720, 0.543402792416428970, 0.543360818132237240, +0.543318842489643130, 0.543276865488752310, 0.543234887129669270, 0.543192907412499040, 0.543150926337346180, 0.543108943904316410, 0.543066960113514190, 0.543024974965044650, +0.542982988459012270, 0.542941000595522750, 0.542899011374680770, 0.542857020796591260, 0.542815028861358790, 0.542773035569089180, 0.542731040919887000, 0.542689044913857170, +0.542647047551104380, 0.542605048831734330, 0.542563048755851600, 0.542521047323560990, 0.542479044534968090, 0.542437040390177480, 0.542395034889294410, 0.542353028032423250, +0.542311019819670000, 0.542269010251139160, 0.542226999326935850, 0.542184987047164560, 0.542142973411931290, 0.542100958421340540, 0.542058942075497320, 0.542016924374506440, +0.541974905318473700, 0.541932884907503580, 0.541890863141701320, 0.541848840021171400, 0.541806815546019840, 0.541764789716351340, 0.541722762532270360, 0.541680733993882950, +0.541638704101293560, 0.541596672854607550, 0.541554640253929410, 0.541512606299365040, 0.541470570991019140, 0.541428534328996850, 0.541386496313402850, 0.541344456944343080, +0.541302416221921990, 0.541260374146244950, 0.541218330717416650, 0.541176285935542790, 0.541134239800728280, 0.541092192313078150, 0.541050143472697200, 0.541008093279691240, +0.540966041734165070, 0.540923988836223390, 0.540881934585972110, 0.540839878983515930, 0.540797822028960210, 0.540755763722409410, 0.540713704063969680, 0.540671643053745600, +0.540629580691842530, 0.540587516978365050, 0.540545451913419180, 0.540503385497109630, 0.540461317729541650, 0.540419248610820020, 0.540377178141050680, 0.540335106320338320, +0.540293033148788180, 0.540250958626505180, 0.540208882753595130, 0.540166805530162830, 0.540124726956313530, 0.540082647032152030, 0.540040565757784250, 0.539998483133315110, +0.539956399158849410, 0.539914313834493060, 0.539872227160350880, 0.539830139136528220, 0.539788049763129770, 0.539745959040261680, 0.539703866968028520, 0.539661773546535770, +0.539619678775888230, 0.539577582656191930, 0.539535485187551570, 0.539493386370072490, 0.539451286203859630, 0.539409184689018990, 0.539367081825655290, 0.539324977613873880, +0.539282872053779670, 0.539240765145478700, 0.539198656889075760, 0.539156547284675770, 0.539114436332384870, 0.539072324032307870, 0.539030210384550010, 0.538988095389216330, +0.538945979046412730, 0.538903861356244130, 0.538861742318816010, 0.538819621934233050, 0.538777500202601400, 0.538735377124026080, 0.538693252698612230, 0.538651126926465000, +0.538608999807690280, 0.538566871342393010, 0.538524741530678530, 0.538482610372651880, 0.538440477868419090, 0.538398344018085060, 0.538356208821754830, 0.538314072279534540, +0.538271934391528980, 0.538229795157843530, 0.538187654578583310, 0.538145512653854240, 0.538103369383761470, 0.538061224768410230, 0.538019078807905560, 0.537976931502353590, +0.537934782851859250, 0.537892632856528000, 0.537850481516464750, 0.537808328831775760, 0.537766174802565830, 0.537724019428940550, 0.537681862711004820, 0.537639704648864790, +0.537597545242625490, 0.537555384492392040, 0.537513222398270370, 0.537471058960365730, 0.537428894178783480, 0.537386728053628530, 0.537344560585007120, 0.537302391773024410, +0.537260221617785640, 0.537218050119396050, 0.537175877277961570, 0.537133703093587430, 0.537091527566379120, 0.537049350696441550, 0.537007172483880970, 0.536964992928802510, +0.536922812031311540, 0.536880629791513190, 0.536838446209513600, 0.536796261285417910, 0.536754075019331480, 0.536711887411359560, 0.536669698461608390, 0.536627508170182900, +0.536585316537188220, 0.536543123562730600, 0.536500929246915280, 0.536458733589847530, 0.536416536591632690, 0.536374338252376790, 0.536332138572185090, 0.536289937551163050, +0.536247735189415710, 0.536205531487049520, 0.536163326444169420, 0.536121120060881080, 0.536078912337289550, 0.536036703273501060, 0.535994492869620860, 0.535952281125754330, +0.535910068042006800, 0.535867853618484550, 0.535825637855292580, 0.535783420752536150, 0.535741202310321520, 0.535698982528753920, 0.535656761407938830, 0.535614538947981500, +0.535572315148988180, 0.535530090011064000, 0.535487863534314770, 0.535445635718845400, 0.535403406564762260, 0.535361176072170710, 0.535318944241176100, 0.535276711071883900, +0.535234476564400150, 0.535192240718830310, 0.535150003535279860, 0.535107765013854040, 0.535065525154659110, 0.535023283957800410, 0.534981041423383210, 0.534938797551513630, +0.534896552342297160, 0.534854305795839260, 0.534812057912245290, 0.534769808691621380, 0.534727558134073130, 0.534685306239705890, 0.534643053008625020, 0.534600798440937000, +0.534558542536746840, 0.534516285296160350, 0.534474026719282790, 0.534431766806220620, 0.534389505557078980, 0.534347242971963570, 0.534304979050979620, 0.534262713794233620, +0.534220447201830930, 0.534178179273877010, 0.534135910010477330, 0.534093639411738260, 0.534051367477765050, 0.534009094208663050, 0.533966819604538620, 0.533924543665497240, +0.533882266391644490, 0.533839987783085720, 0.533797707839927300, 0.533755426562274700, 0.533713143950233390, 0.533670860003908950, 0.533628574723407740, 0.533586288108835020, +0.533544000160296680, 0.533501710877897880, 0.533459420261745200, 0.533417128311943990, 0.533374835028599950, 0.533332540411818430, 0.533290244461705920, 0.533247947178367880, +0.533205648561909550, 0.533163348612437420, 0.533121047330057050, 0.533078744714873930, 0.533036440766993640, 0.532994135486522640, 0.532951828873566180, 0.532909520928230300, +0.532867211650620120, 0.532824901040842350, 0.532782589099002330, 0.532740275825205890, 0.532697961219558260, 0.532655645282166250, 0.532613328013134990, 0.532571009412570520, +0.532528689480578080, 0.532486368217264250, 0.532444045622734620, 0.532401721697094430, 0.532359396440450270, 0.532317069852907720, 0.532274741934572470, 0.532232412685549880, +0.532190082105946760, 0.532147750195868460, 0.532105416955420680, 0.532063082384709010, 0.532020746483840010, 0.531978409252919170, 0.531936070692052290, 0.531893730801344830, +0.531851389580903500, 0.531809047030833650, 0.531766703151241190, 0.531724357942231500, 0.531682011403911470, 0.531639663536386250, 0.531597314339761540, 0.531554963814144020, +0.531512611959638950, 0.531470258776352460, 0.531427904264389910, 0.531385548423857990, 0.531343191254862180, 0.531300832757508390, 0.531258472931902090, 0.531216111778150090, +0.531173749296357740, 0.531131385486631080, 0.531089020349075460, 0.531046653883797790, 0.531004286090903440, 0.530961916970498330, 0.530919546522688130, 0.530877174747579340, +0.530834801645277740, 0.530792427215889040, 0.530750051459518920, 0.530707674376274090, 0.530665295966260000, 0.530622916229582350, 0.530580535166347730, 0.530538152776661830, +0.530495769060630560, 0.530453384018359510, 0.530410997649955250, 0.530368609955523600, 0.530326220935170460, 0.530283830589001300, 0.530241438917122940, 0.530199045919641070, +0.530156651596661480, 0.530114255948289980, 0.530071858974633160, 0.530029460675796700, 0.529987061051886530, 0.529944660103008450, 0.529902257829269030, 0.529859854230773970, +0.529817449307628970, 0.529775043059940610, 0.529732635487814680, 0.529690226591357230, 0.529647816370673710, 0.529605404825871150, 0.529562991957055030, 0.529520577764331370, +0.529478162247805970, 0.529435745407585530, 0.529393327243775750, 0.529350907756482520, 0.529308486945811780, 0.529266064811870220, 0.529223641354763410, 0.529181216574597490, +0.529138790471478160, 0.529096363045512330, 0.529053934296805470, 0.529011504225463500, 0.528969072831593000, 0.528926640115300000, 0.528884206076690290, 0.528841770715869690, +0.528799334032945100, 0.528756896028022120, 0.528714456701206870, 0.528672016052605160, 0.528629574082323810, 0.528587130790468480, 0.528544686177145340, 0.528502240242460060, +0.528459792986519570, 0.528417344409429670, 0.528374894511296380, 0.528332443292225510, 0.528289990752323750, 0.528247536891697230, 0.528205081710451660, 0.528162625208693170, +0.528120167386528450, 0.528077708244063300, 0.528035247781403430, 0.527992785998655960, 0.527950322895926470, 0.527907858473321110, 0.527865392730945790, 0.527822925668907320, +0.527780457287311600, 0.527737987586264670, 0.527695516565872440, 0.527653044226241820, 0.527610570567478510, 0.527568095589688870, 0.527525619292978480, 0.527483141677454470, +0.527440662743222650, 0.527398182490389170, 0.527355700919059810, 0.527313218029341610, 0.527270733821340380, 0.527228248295162020, 0.527185761450913230, 0.527143273288700140, +0.527100783808628900, 0.527058293010805310, 0.527015800895336280, 0.526973307462327840, 0.526930812711886020, 0.526888316644116950, 0.526845819259127320, 0.526803320557023170, +0.526760820537910850, 0.526718319201895930, 0.526675816549085680, 0.526633312579585900, 0.526590807293502830, 0.526548300690942270, 0.526505792772011480, 0.526463283536816040, +0.526420772985462190, 0.526378261118056630, 0.526335747934705500, 0.526293233435515040, 0.526250717620591060, 0.526208200490040690, 0.526165682043969850, 0.526123162282484680, +0.526080641205691310, 0.526038118813696780, 0.525995595106606870, 0.525953070084527960, 0.525910543747566070, 0.525868016095828120, 0.525825487129420230, 0.525782956848448560, +0.525740425253019120, 0.525697892343238940, 0.525655358119214040, 0.525612822581050470, 0.525570285728855110, 0.525527747562734130, 0.525485208082793750, 0.525442667289140020, +0.525400125181879840, 0.525357581761119460, 0.525315037026965140, 0.525272490979522780, 0.525229943618899630, 0.525187394945201610, 0.525144844958535080, 0.525102293659006180, +0.525059741046721820, 0.525017187121788020, 0.524974631884311370, 0.524932075334397790, 0.524889517472154290, 0.524846958297687130, 0.524804397811102440, 0.524761836012506480, +0.524719272902006260, 0.524676708479707820, 0.524634142745717290, 0.524591575700141810, 0.524549007343087290, 0.524506437674660320, 0.524463866694966810, 0.524421294404114110, +0.524378720802208150, 0.524336145889355400, 0.524293569665661870, 0.524250992131234720, 0.524208413286180170, 0.524165833130604610, 0.524123251664614040, 0.524080668888315840, +0.524038084801815800, 0.523995499405220610, 0.523952912698636310, 0.523910324682170140, 0.523867735355928120, 0.523825144720016400, 0.523782552774542220, 0.523739959519611610, +0.523697364955331040, 0.523654769081806750, 0.523612171899146000, 0.523569573407454690, 0.523526973606839530, 0.523484372497406540, 0.523441770079262960, 0.523399166352514930, +0.523356561317269040, 0.523313954973631310, 0.523271347321709210, 0.523228738361608660, 0.523186128093436230, 0.523143516517298070, 0.523100903633301640, 0.523058289441552860, +0.523015673942157980, 0.522973057135224240, 0.522930439020857900, 0.522887819599165530, 0.522845198870253160, 0.522802576834228150, 0.522759953491196750, 0.522717328841265540, +0.522674702884540540, 0.522632075621129120, 0.522589447051137520, 0.522546817174672330, 0.522504185991839790, 0.522461553502747140, 0.522418919707500540, 0.522376284606206660, +0.522333648198971660, 0.522291010485902980, 0.522248371467106790, 0.522205731142689640, 0.522163089512757810, 0.522120446577418520, 0.522077802336778250, 0.522035156790943030, +0.521992509940020330, 0.521949861784116290, 0.521907212323337700, 0.521864561557790600, 0.521821909487582560, 0.521779256112819720, 0.521736601433608670, 0.521693945450055870, +0.521651288162268470, 0.521608629570352920, 0.521565969674415710, 0.521523308474563300, 0.521480645970902930, 0.521437982163540980, 0.521395317052584020, 0.521352650638138400, +0.521309982920311610, 0.521267313899209770, 0.521224643574939360, 0.521181971947607630, 0.521139299017321030, 0.521096624784186170, 0.521053949248309390, 0.521011272409798050, +0.520968594268758630, 0.520925914825297600, 0.520883234079521530, 0.520840552031537670, 0.520797868681452500, 0.520755184029372600, 0.520712498075404320, 0.520669810819655240, +0.520627122262231620, 0.520584432403240150, 0.520541741242787290, 0.520499048780980410, 0.520456355017925980, 0.520413659953730230, 0.520370963588500660, 0.520328265922343820, +0.520285566955366210, 0.520242866687674280, 0.520200165119375610, 0.520157462250576570, 0.520114758081383740, 0.520072052611903810, 0.520029345842244030, 0.519986637772510860, +0.519943928402811120, 0.519901217733251260, 0.519858505763938660, 0.519815792494979780, 0.519773077926481420, 0.519730362058550050, 0.519687644891293040, 0.519644926424817080, +0.519602206659228290, 0.519559485594634380, 0.519516763231141820, 0.519474039568857290, 0.519431314607887380, 0.519388588348339450, 0.519345860790320080, 0.519303131933936070, +0.519260401779293890, 0.519217670326501010, 0.519174937575664020, 0.519132203526889600, 0.519089468180284340, 0.519046731535955820, 0.519003993594010500, 0.518961254354555090, +0.518918513817696270, 0.518875771983541510, 0.518833028852197290, 0.518790284423770510, 0.518747538698367650, 0.518704791676096290, 0.518662043357063010, 0.518619293741374170, +0.518576542829137570, 0.518533790620459570, 0.518491037115447080, 0.518448282314206590, 0.518405526216845770, 0.518362768823471210, 0.518320010134189710, 0.518277250149107750, +0.518234488868333120, 0.518191726291972190, 0.518148962420131980, 0.518106197252918950, 0.518063430790440930, 0.518020663032804250, 0.517977893980115840, 0.517935123632482400, +0.517892351990011490, 0.517849579052809820, 0.517806804820983620, 0.517764029294640940, 0.517721252473888120, 0.517678474358832190, 0.517635694949579730, 0.517592914246238430, +0.517550132248914770, 0.517507348957715770, 0.517464564372748010, 0.517421778494119300, 0.517378991321936100, 0.517336202856305440, 0.517293413097333900, 0.517250622045129170, +0.517207829699797950, 0.517165036061447040, 0.517122241130183240, 0.517079444906114240, 0.517036647389346630, 0.516993848579986980, 0.516951048478143100, 0.516908247083921580, +0.516865444397429430, 0.516822640418773350, 0.516779835148061030, 0.516737028585399050, 0.516694220730894550, 0.516651411584654110, 0.516608601146785530, 0.516565789417395500, +0.516522976396590950, 0.516480162084478560, 0.516437346481166130, 0.516394529586760460, 0.516351711401368370, 0.516308891925096550, 0.516266071158053010, 0.516223249100344230, +0.516180425752077340, 0.516137601113358930, 0.516094775184297030, 0.516051947964998090, 0.516009119455569040, 0.515966289656117460, 0.515923458566750150, 0.515880626187574240, +0.515837792518696330, 0.515794957560224310, 0.515752121312265000, 0.515709283774925310, 0.515666444948312040, 0.515623604832533000, 0.515580763427694990, 0.515537920733905140, +0.515495076751270040, 0.515452231479897600, 0.515409384919894630, 0.515366537071368150, 0.515323687934424960, 0.515280837509172970, 0.515237985795718890, 0.515195132794169400, +0.515152278504632520, 0.515109422927214840, 0.515066566062023720, 0.515023707909165740, 0.514980848468748920, 0.514937987740879950, 0.514895125725665980, 0.514852262423213910, +0.514809397833631550, 0.514766531957025600, 0.514723664793503400, 0.514680796343171650, 0.514637926606138270, 0.514595055582510060, 0.514552183272394270, 0.514509309675897590, +0.514466434793128040, 0.514423558624192310, 0.514380681169197440, 0.514337802428251110, 0.514294922401460350, 0.514252041088932300, 0.514209158490773750, 0.514166274607092740, +0.514123389437995960, 0.514080502983590760, 0.514037615243983950, 0.513994726219283440, 0.513951835909596030, 0.513908944315029090, 0.513866051435689530, 0.513823157271685040, +0.513780261823122750, 0.513737365090109810, 0.513694467072753010, 0.513651567771160500, 0.513608667185439070, 0.513565765315695530, 0.513522862162038020, 0.513479957724573330, +0.513437052003408720, 0.513394144998651210, 0.513351236710408610, 0.513308327138787930, 0.513265416283896440, 0.513222504145841030, 0.513179590724729740, 0.513136676020669480, +0.513093760033767500, 0.513050842764130820, 0.513007924211867360, 0.512965004377084030, 0.512922083259888310, 0.512879160860386870, 0.512836237178687980, 0.512793312214898540, +0.512750385969125810, 0.512707458441476690, 0.512664529632059330, 0.512621599540980630, 0.512578668168347520, 0.512535735514268120, 0.512492801578849470, 0.512449866362198800, +0.512406929864423040, 0.512363992085630330, 0.512321053025927680, 0.512278112685422340, 0.512235171064221340, 0.512192228162432820, 0.512149283980163790, 0.512106338517521410, +0.512063391774612910, 0.512020443751546320, 0.511977494448428550, 0.511934543865367080, 0.511891592002468920, 0.511848638859842110, 0.511805684437593670, 0.511762728735830730, +0.511719771754661210, 0.511676813494192360, 0.511633853954531430, 0.511590893135785540, 0.511547931038062840, 0.511504967661470240, 0.511462003006115220, 0.511419037072104790, +0.511376069859547200, 0.511333101368549370, 0.511290131599218880, 0.511247160551662640, 0.511204188225988790, 0.511161214622304570, 0.511118239740717350, 0.511075263581334040, +0.511032286144262990, 0.510989307429611240, 0.510946327437485910, 0.510903346167995040, 0.510860363621245870, 0.510817379797345760, 0.510774394696401730, 0.510731408318522260, +0.510688420663814150, 0.510645431732385080, 0.510602441524341980, 0.510559450039793190, 0.510516457278845760, 0.510473463241607140, 0.510430467928184580, 0.510387471338686230, +0.510344473473219100, 0.510301474331890880, 0.510258473914808500, 0.510215472222080410, 0.510172469253813540, 0.510129465010115580, 0.510086459491093550, 0.510043452696855800, +0.510000444627509380, 0.509957435283161510, 0.509914424663920340, 0.509871412769893120, 0.509828399601187420, 0.509785385157910390, 0.509742369440170150, 0.509699352448074070, +0.509656334181729620, 0.509613314641243930, 0.509570293826725250, 0.509527271738280940, 0.509484248376018470, 0.509441223740044970, 0.509398197830468690, 0.509355170647396990, +0.509312142190937460, 0.509269112461197100, 0.509226081458284300, 0.509183049182306390, 0.509140015633370410, 0.509096980811584830, 0.509053944717056670, 0.509010907349893740, +0.508967868710203160, 0.508924828798093310, 0.508881787613671420, 0.508838745157044970, 0.508795701428321310, 0.508752656427608810, 0.508709610155014590, 0.508666562610646470, +0.508623513794611460, 0.508580463707018040, 0.508537412347973560, 0.508494359717585500, 0.508451305815961100, 0.508408250643208940, 0.508365194199436040, 0.508322136484749780, +0.508279077499258600, 0.508236017243069770, 0.508192955716290750, 0.508149892919029120, 0.508106828851393020, 0.508063763513489920, 0.508020696905427390, 0.507977629027312800, +0.507934559879254400, 0.507891489461359650, 0.507848417773736240, 0.507805344816491310, 0.507762270589733440, 0.507719195093569890, 0.507676118328108440, 0.507633040293456240, +0.507589960989721760, 0.507546880417012460, 0.507503798575435480, 0.507460715465099520, 0.507417631086111710, 0.507374545438579740, 0.507331458522611190, 0.507288370338314200, +0.507245280885796460, 0.507202190165165430, 0.507159098176528490, 0.507116004919994200, 0.507072910395669930, 0.507029814603663480, 0.506986717544081980, 0.506943619217034120, +0.506900519622627170, 0.506857418760969010, 0.506814316632166810, 0.506771213236329340, 0.506728108573563760, 0.506685002643977870, 0.506641895447679120, 0.506598786984776010, +0.506555677255375980, 0.506512566259586290, 0.506469453997515640, 0.506426340469271260, 0.506383225674961190, 0.506340109614692560, 0.506296992288574050, 0.506253873696713040, +0.506210753839217430, 0.506167632716194470, 0.506124510327752850, 0.506081386673999930, 0.506038261755043520, 0.505995135570991180, 0.505952008121951290, 0.505908879408031420, +0.505865749429339260, 0.505822618185982510, 0.505779485678069520, 0.505736351905707760, 0.505693216869004810, 0.505650080568069150, 0.505606943003008350, 0.505563804173930100, +0.505520664080941980, 0.505477522724152690, 0.505434380103669480, 0.505391236219600360, 0.505348091072052810, 0.505304944661135290, 0.505261796986955500, 0.505218648049621240, +0.505175497849239990, 0.505132346385920310, 0.505089193659769790, 0.505046039670896230, 0.505002884419407220, 0.504959727905411440, 0.504916570129016250, 0.504873411090329350, +0.504830250789459310, 0.504787089226513610, 0.504743926401600150, 0.504700762314826520, 0.504657596966301300, 0.504614430356132180, 0.504571262484426960, 0.504528093351293230, +0.504484922956839550, 0.504441751301173640, 0.504398578384403380, 0.504355404206636160, 0.504312228767980990, 0.504269052068545110, 0.504225874108436670, 0.504182694887763130, +0.504139514406633290, 0.504096332665154630, 0.504053149663435060, 0.504009965401582380, 0.503966779879705060, 0.503923593097910790, 0.503880405056307160, 0.503837215755002950, +0.503794025194105770, 0.503750833373723390, 0.503707640293963530, 0.503664445954935090, 0.503621250356745430, 0.503578053499502690, 0.503534855383314440, 0.503491656008289380, +0.503448455374535200, 0.503405253482159920, 0.503362050331271130, 0.503318845921977510, 0.503275640254386870, 0.503232433328607120, 0.503189225144745840, 0.503146015702911840, +0.503102805003212920, 0.503059593045756540, 0.503016379830651620, 0.502973165358005740, 0.502929949627926920, 0.502886732640522860, 0.502843514395902250, 0.502800294894172990, +0.502757074135442910, 0.502713852119819780, 0.502670628847412430, 0.502627404318328530, 0.502584178532676010, 0.502540951490562770, 0.502497723192097510, 0.502454493637387920, +0.502411262826542140, 0.502368030759667740, 0.502324797436873750, 0.502281562858267750, 0.502238327023957320, 0.502195089934051600, 0.502151851588658160, 0.502108611987885030, +0.502065371131839910, 0.502022129020631920, 0.501978885654368550, 0.501935641033157910, 0.501892395157107820, 0.501849148026327070, 0.501805899640923480, 0.501762650001005170, +0.501719399106679840, 0.501676146958056400, 0.501632893555242650, 0.501589638898346620, 0.501546382987476110, 0.501503125822739930, 0.501459867404246080, 0.501416607732102060, +0.501373346806416990, 0.501330084627298560, 0.501286821194854900, 0.501243556509193720, 0.501200290570424150, 0.501157023378653750, 0.501113754933990910, 0.501070485236543180, +0.501027214286419720, 0.500983942083728210, 0.500940668628576780, 0.500897393921073350, 0.500854117961326840, 0.500810840749444930, 0.500767562285535980, 0.500724282569707800, +0.500681001602069190, 0.500637719382728160, 0.500594435911792760, 0.500551151189370990, 0.500507865215571670, 0.500464577990502590, 0.500421289514271780, 0.500377999786988160, +0.500334708808759520, 0.500291416579694110, 0.500248123099899740, 0.500204828369485430, 0.500161532388559090, 0.500118235157228860, 0.500074936675602770, 0.500031636943789600, +0.499988335961897460, 0.499945033730034400, 0.499901730248308420, 0.499858425516828460, 0.499815119535702460, 0.499771812305038640, 0.499728503824944940, 0.499685194095530310, +0.499641883116902720, 0.499598570889170030, 0.499555257412441330, 0.499511942686824470, 0.499468626712427750, 0.499425309489359090, 0.499381991017727510, 0.499338671297640980, +0.499295350329207800, 0.499252028112535770, 0.499208704647734150, 0.499165379934910720, 0.499122053974173860, 0.499078726765631480, 0.499035398309392640, 0.498992068605565330, +0.498948737654257850, 0.498905405455578100, 0.498862072009635280, 0.498818737316537250, 0.498775401376391980, 0.498732064189308600, 0.498688725755395080, 0.498645386074759720, +0.498602045147510550, 0.498558702973756600, 0.498515359553605930, 0.498472014887166860, 0.498428668974547350, 0.498385321815856540, 0.498341973411202450, 0.498298623760693450, +0.498255272864437440, 0.498211920722543720, 0.498168567335120100, 0.498125212702275110, 0.498081856824116710, 0.498038499700754090, 0.497995141332295170, 0.497951781718848410, +0.497908420860521780, 0.497865058757424540, 0.497821695409664590, 0.497778330817350070, 0.497734964980590110, 0.497691597899492690, 0.497648229574166320, 0.497604860004718990, +0.497561489191259860, 0.497518117133897040, 0.497474743832738870, 0.497431369287893550, 0.497387993499470100, 0.497344616467576720, 0.497301238192321800, 0.497257858673813390, +0.497214477912160720, 0.497171095907471830, 0.497127712659855230, 0.497084328169418940, 0.497040942436272230, 0.496997555460523210, 0.496954167242279870, 0.496910777781651490, +0.496867387078746170, 0.496823995133672370, 0.496780601946538230, 0.496737207517452930, 0.496693811846524670, 0.496650414933861810, 0.496607016779572590, 0.496563617383766200, +0.496520216746550720, 0.496476814868034740, 0.496433411748326340, 0.496390007387534800, 0.496346601785768230, 0.496303194943135130, 0.496259786859743700, 0.496216377535703130, +0.496172966971121680, 0.496129555166107410, 0.496086142120769620, 0.496042727835216520, 0.495999312309556570, 0.495955895543897910, 0.495912477538349940, 0.495869058293020800, +0.495825637808018970, 0.495782216083452690, 0.495738793119431250, 0.495695368916062810, 0.495651943473455980, 0.495608516791718860, 0.495565088870960900, 0.495521659711290140, +0.495478229312815270, 0.495434797675644470, 0.495391364799886990, 0.495347930685651190, 0.495304495333045490, 0.495261058742178180, 0.495217620913158630, 0.495174181846095020, +0.495130741541095600, 0.495087299998269670, 0.495043857217725480, 0.495000413199571660, 0.494956967943916410, 0.494913521450869200, 0.494870073720538100, 0.494826624753031850, +0.494783174548458660, 0.494739723106927930, 0.494696270428547860, 0.494652816513427130, 0.494609361361673940, 0.494565904973397750, 0.494522447348706820, 0.494478988487709770, +0.494435528390514860, 0.494392067057231540, 0.494348604487968020, 0.494305140682832600, 0.494261675641934680, 0.494218209365382630, 0.494174741853285030, 0.494131273105750220, +0.494087803122887580, 0.494044331904805460, 0.494000859451612480, 0.493957385763416970, 0.493913910840328430, 0.493870434682455060, 0.493826957289905610, 0.493783478662788380, +0.493739998801212890, 0.493696517705287330, 0.493653035375120510, 0.493609551810820720, 0.493566067012497440, 0.493522580980258970, 0.493479093714213670, 0.493435605214471050, +0.493392115481139370, 0.493348624514327430, 0.493305132314143520, 0.493261638880697240, 0.493218144214096770, 0.493174648314451010, 0.493131151181868180, 0.493087652816457890, +0.493044153218328510, 0.493000652387588670, 0.492957150324346840, 0.492913647028712540, 0.492870142500794140, 0.492826636740700320, 0.492783129748539550, 0.492739621524421360, +0.492696112068454100, 0.492652601380746180, 0.492609089461407130, 0.492565576310545430, 0.492522061928269690, 0.492478546314688460, 0.492435029469911250, 0.492391511394046470, +0.492347992087202870, 0.492304471549488920, 0.492260949781014200, 0.492217426781887070, 0.492173902552216440, 0.492130377092110600, 0.492086850401679210, 0.492043322481030720, +0.491999793330273940, 0.491956262949517280, 0.491912731338870310, 0.491869198498441570, 0.491825664428339800, 0.491782129128673470, 0.491738592599552220, 0.491695054841084500, +0.491651515853378740, 0.491607975636544570, 0.491564434190690510, 0.491520891515925320, 0.491477347612357510, 0.491433802480096720, 0.491390256119251470, 0.491346708529930510, +0.491303159712242420, 0.491259609666296840, 0.491216058392202230, 0.491172505890067450, 0.491128952160001080, 0.491085397202112640, 0.491041841016510720, 0.490998283603304220, +0.490954724962601620, 0.490911165094512600, 0.490867603999145700, 0.490824041676609310, 0.490780478127013310, 0.490736913350466040, 0.490693347347076540, 0.490649780116953260, +0.490606211660205900, 0.490562641976942990, 0.490519071067273550, 0.490475498931305990, 0.490431925569150050, 0.490388350980914380, 0.490344775166707770, 0.490301198126638860, +0.490257619860817280, 0.490214040369351730, 0.490170459652351060, 0.490126877709923860, 0.490083294542179800, 0.490039710149227540, 0.489996124531175640, 0.489952537688133790, +0.489908949620210590, 0.489865360327515040, 0.489821769810155680, 0.489778178068242310, 0.489734585101883500, 0.489690990911188170, 0.489647395496265010, 0.489603798857223770, +0.489560200994173020, 0.489516601907221740, 0.489473001596478610, 0.489429400062053320, 0.489385797304054570, 0.489342193322591320, 0.489298588117772160, 0.489254981689706940, +0.489211374038504290, 0.489167765164273180, 0.489124155067122310, 0.489080543747161370, 0.489036931204499150, 0.488993317439244120, 0.488949702451506260, 0.488906086241394140, +0.488862468809016790, 0.488818850154482840, 0.488775230277902210, 0.488731609179383520, 0.488687986859035750, 0.488644363316967640, 0.488600738553289000, 0.488557112568108520, +0.488513485361535270, 0.488469856933677950, 0.488426227284646350, 0.488382596414549170, 0.488338964323495490, 0.488295331011594060, 0.488251696478954610, 0.488208060725686010, +0.488164423751896840, 0.488120785557696950, 0.488077146143195140, 0.488033505508500440, 0.487989863653721660, 0.487946220578968530, 0.487902576284349850, 0.487858930769974770, +0.487815284035951980, 0.487771636082391320, 0.487727986909401610, 0.487684336517091920, 0.487640684905571000, 0.487597032074948760, 0.487553378025333940, 0.487509722756835680, +0.487466066269562680, 0.487422408563624950, 0.487378749639131190, 0.487335089496190140, 0.487291428134911830, 0.487247765555404890, 0.487204101757778560, 0.487160436742141540, +0.487116770508603860, 0.487073103057274250, 0.487029434388261910, 0.486985764501675520, 0.486942093397625180, 0.486898421076219560, 0.486854747537567910, 0.486811072781778990, +0.486767396808962800, 0.486723719619228110, 0.486680041212684100, 0.486636361589439630, 0.486592680749604660, 0.486548998693287940, 0.486505315420598330, 0.486461630931645850, +0.486417945226539310, 0.486374258305387890, 0.486330570168300390, 0.486286880815386900, 0.486243190246756220, 0.486199498462517530, 0.486155805462779700, 0.486112111247652800, +0.486068415817245580, 0.486024719171667340, 0.485981021311026880, 0.485937322235434290, 0.485893621944998360, 0.485849920439828390, 0.485806217720033240, 0.485762513785722940, +0.485718808637006340, 0.485675102273992740, 0.485631394696791010, 0.485587685905511160, 0.485543975900262050, 0.485500264681152650, 0.485456552248292980, 0.485412838601791960, +0.485369123741758830, 0.485325407668302460, 0.485281690381533020, 0.485237971881559260, 0.485194252168490660, 0.485150531242436010, 0.485106809103505400, 0.485063085751807790, +0.485019361187452480, 0.484975635410548390, 0.484931908421205540, 0.484888180219532950, 0.484844450805639930, 0.484800720179635380, 0.484756988341629450, 0.484713255291730980, +0.484669521030049010, 0.484625785556693670, 0.484582048871773810, 0.484538310975398840, 0.484494571867677750, 0.484450831548720540, 0.484407090018636300, 0.484363347277534330, +0.484319603325523600, 0.484275858162714290, 0.484232111789215270, 0.484188364205136000, 0.484144615410585450, 0.484100865405673710, 0.484057114190509840, 0.484013361765203150, +0.483969608129862730, 0.483925853284598640, 0.483882097229519910, 0.483838339964735520, 0.483794581490355700, 0.483750821806489480, 0.483707060913246110, 0.483663298810734780, +0.483619535499065560, 0.483575770978347470, 0.483532005248690000, 0.483488238310202100, 0.483444470162994020, 0.483400700807174730, 0.483356930242853700, 0.483313158470139950, +0.483269385489143720, 0.483225611299973990, 0.483181835902740280, 0.483138059297551550, 0.483094281484518110, 0.483050502463748920, 0.483006722235353460, 0.482962940799440850, +0.482919158156121240, 0.482875374305503760, 0.482831589247697480, 0.482787802982812540, 0.482744015510958190, 0.482700226832243730, 0.482656436946778340, 0.482612645854672230, +0.482568853556034520, 0.482525060050974670, 0.482481265339601780, 0.482437469422026140, 0.482393672298356780, 0.482349873968703270, 0.482306074433174690, 0.482262273691881290, +0.482218471744932260, 0.482174668592436960, 0.482130864234504690, 0.482087058671245570, 0.482043251902768870, 0.481999443929183650, 0.481955634750600160, 0.481911824367127590, +0.481868012778875480, 0.481824199985952940, 0.481780385988470340, 0.481736570786536700, 0.481692754380261660, 0.481648936769754400, 0.481605117955125120, 0.481561297936483060, +0.481517476713937740, 0.481473654287598360, 0.481429830657575220, 0.481386005823977560, 0.481342179786914850, 0.481298352546496280, 0.481254524102832200, 0.481210694456031870, +0.481166863606204360, 0.481123031553460090, 0.481079198297908290, 0.481035363839658450, 0.480991528178819850, 0.480947691315502750, 0.480903853249816490, 0.480860013981870560, +0.480816173511774190, 0.480772331839637860, 0.480728488965570630, 0.480684644889682160, 0.480640799612081730, 0.480596953132879700, 0.480553105452185270, 0.480509256570108070, +0.480465406486757340, 0.480421555202243500, 0.480377702716675740, 0.480333849030163350, 0.480289994142816760, 0.480246138054745140, 0.480202280766058200, 0.480158422276865170, +0.480114562587276470, 0.480070701697401350, 0.480026839607349490, 0.479982976317230140, 0.479939111827153710, 0.479895246137229500, 0.479851379247567210, 0.479807511158276080, +0.479763641869466570, 0.479719771381247940, 0.479675899693729870, 0.479632026807021660, 0.479588152721233780, 0.479544277436475540, 0.479500400952856620, 0.479456523270486270, +0.479412644389475010, 0.479368764309932140, 0.479324883031966960, 0.479281000555689950, 0.479237116881210510, 0.479193232008638230, 0.479149345938082450, 0.479105458669653710, +0.479061570203461350, 0.479017680539615080, 0.478973789678224180, 0.478929897619399190, 0.478886004363249460, 0.478842109909884740, 0.478798214259414380, 0.478754317411948850, +0.478710419367597510, 0.478666520126470150, 0.478622619688676090, 0.478578718054325840, 0.478534815223528810, 0.478490911196394360, 0.478447005973033020, 0.478403099553554200, +0.478359191938067580, 0.478315283126682590, 0.478271373119509850, 0.478227461916658600, 0.478183549518238720, 0.478139635924359600, 0.478095721135131770, 0.478051805150664590, +0.478007887971067970, 0.477963969596451210, 0.477920050026924890, 0.477876129262598480, 0.477832207303581720, 0.477788284149984090, 0.477744359801916100, 0.477700434259487270, +0.477656507522806920, 0.477612579591985660, 0.477568650467132980, 0.477524720148358670, 0.477480788635772200, 0.477436855929484150, 0.477392922029603930, 0.477348986936241390, +0.477305050649506010, 0.477261113169508420, 0.477217174496358030, 0.477173234630164700, 0.477129293571037890, 0.477085351319088250, 0.477041407874425230, 0.476997463237158690, +0.476953517407398110, 0.476909570385254110, 0.476865622170836170, 0.476821672764254190, 0.476777722165617650, 0.476733770375037170, 0.476689817392622280, 0.476645863218482460, +0.476601907852728380, 0.476557951295469520, 0.476513993546815780, 0.476470034606876650, 0.476426074475762850, 0.476382113153583860, 0.476338150640449600, 0.476294186936469580, +0.476250222041754430, 0.476206255956413750, 0.476162288680557430, 0.476118320214295010, 0.476074350557737170, 0.476030379710993490, 0.475986407674173830, 0.475942434447387760, +0.475898460030745980, 0.475854484424358070, 0.475810507628333550, 0.475766529642783150, 0.475722550467816420, 0.475678570103543310, 0.475634588550073400, 0.475590605807517440, +0.475546621875984900, 0.475502636755585850, 0.475458650446429820, 0.475414662948627550, 0.475370674262288630, 0.475326684387523010, 0.475282693324440290, 0.475238701073151190, +0.475194707633765370, 0.475150713006392780, 0.475106717191143060, 0.475062720188126900, 0.475018721997453930, 0.474974722619233790, 0.474930722053577170, 0.474886720300593810, +0.474842717360393630, 0.474798713233086260, 0.474754707918782550, 0.474710701417591970, 0.474666693729624720, 0.474622684854990320, 0.474578674793799620, 0.474534663546162190, +0.474490651112188130, 0.474446637491987070, 0.474402622685669740, 0.474358606693345900, 0.474314589515125560, 0.474270571151118310, 0.474226551601435060, 0.474182530866185450, +0.474138508945479040, 0.474094485839426820, 0.474050461548138350, 0.474006436071723770, 0.473962409410292660, 0.473918381563955940, 0.473874352532823280, 0.473830322317004730, +0.473786290916609950, 0.473742258331749880, 0.473698224562534130, 0.473654189609072850, 0.473610153471475670, 0.473566116149853560, 0.473522077644316090, 0.473478037954973450, +0.473433997081935340, 0.473389955025312610, 0.473345911785215010, 0.473301867361752620, 0.473257821755035170, 0.473213774965173530, 0.473169726992277500, 0.473125677836456760, +0.473081627497822180, 0.473037575976483550, 0.472993523272551010, 0.472949469386134190, 0.472905414317344170, 0.472861358066290590, 0.472817300633083580, 0.472773242017833000, +0.472729182220649640, 0.472685121241643360, 0.472641059080924240, 0.472596995738602140, 0.472552931214787860, 0.472508865509591310, 0.472464798623122630, 0.472420730555491500, +0.472376661306808940, 0.472332590877184770, 0.472288519266728660, 0.472244446475551690, 0.472200372503763620, 0.472156297351474570, 0.472112221018794460, 0.472068143505834150, +0.472024064812703480, 0.471979984939512600, 0.471935903886371410, 0.471891821653390890, 0.471847738240680770, 0.471803653648351310, 0.471759567876512300, 0.471715480925274820, +0.471671392794748620, 0.471627303485043890, 0.471583212996270540, 0.471539121328539590, 0.471495028481960790, 0.471450934456644040, 0.471406839252700330, 0.471362742870239550, +0.471318645309371900, 0.471274546570207230, 0.471230446652856630, 0.471186345557429890, 0.471142243284037250, 0.471098139832788640, 0.471054035203795070, 0.471009929397166460, +0.470965822413012990, 0.470921714251444520, 0.470877604912572250, 0.470833494396505900, 0.470789382703355800, 0.470745269833231890, 0.470701155786245220, 0.470657040562505620, +0.470612924162123410, 0.470568806585208550, 0.470524687831872070, 0.470480567902223810, 0.470436446796373750, 0.470392324514432970, 0.470348201056511430, 0.470304076422719320, +0.470259950613166670, 0.470215823627964550, 0.470171695467222820, 0.470127566131051890, 0.470083435619561620, 0.470039303932863140, 0.469995171071066480, 0.469951037034281820, +0.469906901822619180, 0.469862765436189710, 0.469818627875103310, 0.469774489139470340, 0.469730349229400770, 0.469686208145005670, 0.469642065886395120, 0.469597922453678980, +0.469553777846968450, 0.469509632066373420, 0.469465485112004370, 0.469421336983971150, 0.469377187682385010, 0.469333037207355920, 0.469288885558994230, 0.469244732737409960, +0.469200578742714200, 0.469156423575017020, 0.469112267234428780, 0.469068109721059450, 0.469023951035020260, 0.468979791176421190, 0.468935630145372650, 0.468891467941984660, +0.468847304566368360, 0.468803140018633820, 0.468758974298891020, 0.468714807407251190, 0.468670639343824360, 0.468626470108720940, 0.468582299702050900, 0.468538128123925530, +0.468493955374454820, 0.468449781453749270, 0.468405606361918800, 0.468361430099074770, 0.468317252665327140, 0.468273074060786390, 0.468228894285562580, 0.468184713339766860, +0.468140531223509400, 0.468096347936900640, 0.468052163480050580, 0.468007977853070520, 0.467963791056070500, 0.467919603089160640, 0.467875413952452130, 0.467831223646055120, +0.467787032170080000, 0.467742839524636970, 0.467698645709837210, 0.467654450725790820, 0.467610254572608300, 0.467566057250399740, 0.467521858759276490, 0.467477659099348520, +0.467433458270726470, 0.467389256273520350, 0.467345053107841470, 0.467300848773799960, 0.467256643271506340, 0.467212436601070700, 0.467168228762604390, 0.467124019756217530, +0.467079809582020560, 0.467035598240123690, 0.466991385730638250, 0.466947172053674310, 0.466902957209342110, 0.466858741197752840, 0.466814524019016740, 0.466770305673244350, +0.466726086160545780, 0.466681865481032350, 0.466637643634814300, 0.466593420622002150, 0.466549196442706040, 0.466504971097037370, 0.466460744585106220, 0.466416516907023240, +0.466372288062898540, 0.466328058052843550, 0.466283826876968400, 0.466239594535383660, 0.466195361028199580, 0.466151126355527470, 0.466106890517477560, 0.466062653514160040, +0.466018415345686220, 0.465974176012166450, 0.465929935513711200, 0.465885693850430660, 0.465841451022436350, 0.465797207029838400, 0.465752961872747400, 0.465708715551273630, +0.465664468065528470, 0.465620219415622150, 0.465575969601665250, 0.465531718623768080, 0.465487466482041980, 0.465443213176597200, 0.465398958707544390, 0.465354703074993770, +0.465310446279056820, 0.465266188319843730, 0.465221929197464800, 0.465177668912031440, 0.465133407463653890, 0.465089144852442850, 0.465044881078508550, 0.465000616141962420, +0.464956350042914750, 0.464912082781476220, 0.464867814357757090, 0.464823544771868770, 0.464779274023921660, 0.464735002114026300, 0.464690729042293080, 0.464646454808833430, +0.464602179413757640, 0.464557902857176410, 0.464513625139200030, 0.464469346259939960, 0.464425066219506520, 0.464380785018010440, 0.464336502655562030, 0.464292219132272700, +0.464247934448252850, 0.464203648603612740, 0.464159361598463940, 0.464115073432916750, 0.464070784107081860, 0.464026493621069570, 0.463982201974991510, 0.463937909168957880, +0.463893615203079530, 0.463849320077466710, 0.463805023792230990, 0.463760726347482780, 0.463716427743332660, 0.463672127979891100, 0.463627827057269630, 0.463583524975578590, +0.463539221734928730, 0.463494917335430470, 0.463450611777195260, 0.463406305060333530, 0.463361997184955630, 0.463317688151173190, 0.463273377959096460, 0.463229066608836340, +0.463184754100503080, 0.463140440434208430, 0.463096125610062580, 0.463051809628176490, 0.463007492488660470, 0.462963174191626080, 0.462918854737183800, 0.462874534125444330, +0.462830212356518170, 0.462785889430516850, 0.462741565347550840, 0.462697240107730890, 0.462652913711167460, 0.462608586157972120, 0.462564257448255360, 0.462519927582127510, +0.462475596559700270, 0.462431264381084010, 0.462386931046389620, 0.462342596555727510, 0.462298260909209280, 0.462253924106945380, 0.462209586149046730, 0.462165247035623670, +0.462120906766787910, 0.462076565342649850, 0.462032222763320400, 0.461987879028910030, 0.461943534139530320, 0.461899188095291740, 0.461854840896305240, 0.461810492542681250, +0.461766143034531400, 0.461721792371966200, 0.461677440555096130, 0.461633087584032880, 0.461588733458886850, 0.461544378179769010, 0.461500021746789830, 0.461455664160061010, +0.461411305419693050, 0.461366945525796770, 0.461322584478482790, 0.461278222277862690, 0.461233858924047060, 0.461189494417146790, 0.461145128757272370, 0.461100761944535530, +0.461056393979046800, 0.461012024860917020, 0.460967654590256850, 0.460923283167177960, 0.460878910591790810, 0.460834536864206390, 0.460790161984535260, 0.460745785952889060, +0.460701408769378480, 0.460657030434113930, 0.460612650947207210, 0.460568270308768850, 0.460523888518909850, 0.460479505577740700, 0.460435121485373190, 0.460390736241917900, +0.460346349847485740, 0.460301962302187340, 0.460257573606134400, 0.460213183759437540, 0.460168792762207680, 0.460124400614555510, 0.460080007316592710, 0.460035612868429870, +0.459991217270178000, 0.459946820521947740, 0.459902422623850780, 0.459858023575997750, 0.459813623378499290, 0.459769222031467200, 0.459724819535011990, 0.459680415889244800, +0.459636011094276100, 0.459591605150217800, 0.459547198057180530, 0.459502789815275200, 0.459458380424612510, 0.459413969885304310, 0.459369558197461170, 0.459325145361194120, +0.459280731376613790, 0.459236316243832100, 0.459191899962959560, 0.459147482534107250, 0.459103063957385870, 0.459058644232907260, 0.459014223360782010, 0.458969801341120750, +0.458925378174035450, 0.458880953859636730, 0.458836528398035570, 0.458792101789342710, 0.458747674033670010, 0.458703245131128090, 0.458658815081828040, 0.458614383885880610, +0.458569951543397580, 0.458525518054489710, 0.458481083419268020, 0.458436647637843200, 0.458392210710327210, 0.458347772636830690, 0.458303333417464710, 0.458258893052340020, +0.458214451541568480, 0.458170008885260770, 0.458125565083528090, 0.458081120136481110, 0.458036674044231710, 0.457992226806890610, 0.457947778424568570, 0.457903328897377450, +0.457858878225428030, 0.457814426408831410, 0.457769973447698380, 0.457725519342140730, 0.457681064092269330, 0.457636607698195250, 0.457592150160029240, 0.457547691477883320, +0.457503231651868130, 0.457458770682094840, 0.457414308568674210, 0.457369845311718260, 0.457325380911337680, 0.457280915367643650, 0.457236448680746920, 0.457191980850759460, +0.457147511877792070, 0.457103041761955490, 0.457058570503361740, 0.457014098102121510, 0.456969624558346050, 0.456925149872146160, 0.456880674043633750, 0.456836197072919670, +0.456791718960115110, 0.456747239705330820, 0.456702759308678870, 0.456658277770270020, 0.456613795090215490, 0.456569311268626040, 0.456524826305613700, 0.456480340201289300, +0.456435852955764110, 0.456391364569148810, 0.456346875041555520, 0.456302384373095060, 0.456257892563878280, 0.456213399614017080, 0.456168905523622440, 0.456124410292805480, +0.456079913921677180, 0.456035416410349450, 0.455990917758933190, 0.455946417967539600, 0.455901917036279580, 0.455857414965265220, 0.455812911754607250, 0.455768407404417040, +0.455723901914805380, 0.455679395285884410, 0.455634887517764930, 0.455590378610558230, 0.455545868564375180, 0.455501357379327840, 0.455456845055527140, 0.455412331593083920, +0.455367816992110260, 0.455323301252717080, 0.455278784375015620, 0.455234266359116850, 0.455189747205132780, 0.455145226913174330, 0.455100705483352850, 0.455056182915779150, +0.455011659210565410, 0.454967134367822550, 0.454922608387661850, 0.454878081270194250, 0.454833553015531800, 0.454789023623785480, 0.454744493095066590, 0.454699961429486100, +0.454655428627156080, 0.454610894688187490, 0.454566359612691650, 0.454521823400779570, 0.454477286052563270, 0.454432747568153770, 0.454388207947662050, 0.454343667191200170, +0.454299125298879110, 0.454254582270810230, 0.454210038107104530, 0.454165492807874100, 0.454120946373229970, 0.454076398803283490, 0.454031850098145560, 0.453987300257928440, +0.453942749282743030, 0.453898197172700800, 0.453853643927912660, 0.453809089548490810, 0.453764534034546250, 0.453719977386190300, 0.453675419603534080, 0.453630860686689670, +0.453586300635768100, 0.453541739450880390, 0.453497177132138720, 0.453452613679654120, 0.453408049093537990, 0.453363483373901370, 0.453318916520856370, 0.453274348534514090, +0.453229779414985990, 0.453185209162383030, 0.453140637776817400, 0.453096065258400240, 0.453051491607242900, 0.453006916823456400, 0.452962340907153040, 0.452917763858443790, +0.452873185677440170, 0.452828606364253150, 0.452784025918995030, 0.452739444341776880, 0.452694861632709670, 0.452650277791905750, 0.452605692819476100, 0.452561106715532240, +0.452516519480185180, 0.452471931113547220, 0.452427341615729510, 0.452382750986843380, 0.452338159226999990, 0.452293566336311570, 0.452248972314889250, 0.452204377162844510, +0.452159780880288460, 0.452115183467333310, 0.452070584924090250, 0.452025985250670670, 0.451981384447185770, 0.451936782513747800, 0.451892179450467830, 0.451847575257457450, +0.451802969934827710, 0.451758363482690990, 0.451713755901158360, 0.451669147190340900, 0.451624537350351020, 0.451579926381299730, 0.451535314283298680, 0.451490701056458940, +0.451446086700892810, 0.451401471216711480, 0.451356854604026470, 0.451312236862948970, 0.451267617993591220, 0.451222997996064470, 0.451178376870480180, 0.451133754616949540, +0.451089131235584970, 0.451044506726497540, 0.450999881089798830, 0.450955254325600070, 0.450910626434013530, 0.450865997415150430, 0.450821367269121920, 0.450776735996040460, +0.450732103596017120, 0.450687470069163490, 0.450642835415590800, 0.450598199635411420, 0.450553562728736590, 0.450508924695677770, 0.450464285536346320, 0.450419645250854540, +0.450375003839313610, 0.450330361301835180, 0.450285717638530420, 0.450241072849511810, 0.450196426934890540, 0.450151779894778170, 0.450107131729285960, 0.450062482438526310, +0.450017832022610480, 0.449973180481649640, 0.449928527815756260, 0.449883874025041540, 0.449839219109617160, 0.449794563069594310, 0.449749905905085460, 0.449705247616201900, +0.449660588203055160, 0.449615927665756530, 0.449571266004418550, 0.449526603219152390, 0.449481939310069690, 0.449437274277281750, 0.449392608120901040, 0.449347940841038800, +0.449303272437806660, 0.449258602911316030, 0.449213932261679220, 0.449169260489007630, 0.449124587593412450, 0.449079913575006210, 0.449035238433900200, 0.448990562170206110, +0.448945884784035190, 0.448901206275499950, 0.448856526644711710, 0.448811845891782140, 0.448767164016822600, 0.448722481019945500, 0.448677796901262250, 0.448633111660884430, +0.448588425298923510, 0.448543737815491890, 0.448499049210700880, 0.448454359484662330, 0.448409668637487440, 0.448364976669288760, 0.448320283580177670, 0.448275589370265900, +0.448230894039664710, 0.448186197588486710, 0.448141500016843160, 0.448096801324845530, 0.448052101512606270, 0.448007400580236750, 0.447962698527848760, 0.447917995355553540, +0.447873291063463800, 0.447828585651690810, 0.447783879120346400, 0.447739171469541840, 0.447694462699389780, 0.447649752810001580, 0.447605041801488970, 0.447560329673963360, +0.447515616427537340, 0.447470902062322260, 0.447426186578429920, 0.447381469975971720, 0.447336752255060250, 0.447292033415806920, 0.447247313458323080, 0.447202592382721360, +0.447157870189113130, 0.447113146877610280, 0.447068422448324120, 0.447023696901367340, 0.446978970236851290, 0.446934242454887830, 0.446889513555588370, 0.446844783539065540, +0.446800052405430690, 0.446755320154795740, 0.446710586787272100, 0.446665852302972400, 0.446621116702008050, 0.446576379984490960, 0.446531642150532480, 0.446486903200245260, +0.446442163133740800, 0.446397421951130580, 0.446352679652527170, 0.446307936238042050, 0.446263191707787110, 0.446218446061873770, 0.446173699300414730, 0.446128951423521490, +0.446084202431305810, 0.446039452323879200, 0.445994701101354420, 0.445949948763842860, 0.445905195311456450, 0.445860440744306640, 0.445815685062506130, 0.445770928266166380, +0.445726170355399350, 0.445681411330316470, 0.445636651191030460, 0.445591889937652810, 0.445547127570295460, 0.445502364089069900, 0.445457599494088810, 0.445412833785463700, +0.445368066963306160, 0.445323299027728830, 0.445278529978843260, 0.445233759816761330, 0.445188988541594610, 0.445144216153455840, 0.445099442652456550, 0.445054668038708630, +0.445009892312323630, 0.444965115473414330, 0.444920337522092200, 0.444875558458469210, 0.444830778282656990, 0.444785996994768170, 0.444741214594914390, 0.444696431083207560, +0.444651646459759300, 0.444606860724682250, 0.444562073878088100, 0.444517285920088320, 0.444472496850795760, 0.444427706670321940, 0.444382915378778890, 0.444338122976278120, +0.444293329462932430, 0.444248534838853460, 0.444203739104153120, 0.444158942258943030, 0.444114144303335960, 0.444069345237443570, 0.444024545061377840, 0.443979743775250290, +0.443934941379173830, 0.443890137873259980, 0.443845333257620820, 0.443800527532367930, 0.443755720697614040, 0.443710912753470970, 0.443666103700050110, 0.443621293537464430, +0.443576482265825580, 0.443531669885245450, 0.443486856395835740, 0.443442041797709300, 0.443397226090977810, 0.443352409275753200, 0.443307591352147200, 0.443262772320272560, +0.443217952180241070, 0.443173130932164650, 0.443128308576155040, 0.443083485112324980, 0.443038660540786280, 0.442993834861650890, 0.442949008075030570, 0.442904180181038050, +0.442859351179785140, 0.442814521071383860, 0.442769689855945840, 0.442724857533583980, 0.442680024104410040, 0.442635189568535590, 0.442590353926073600, 0.442545517177135690, +0.442500679321834010, 0.442455840360280240, 0.442411000292587230, 0.442366159118866730, 0.442321316839230870, 0.442276473453791290, 0.442231628962660940, 0.442186783365951520, +0.442141936663775100, 0.442097088856243490, 0.442052239943469540, 0.442007389925564990, 0.441962538802641970, 0.441917686574812170, 0.441872833242188620, 0.441827978804882950, +0.441783123263006890, 0.441738266616673480, 0.441693408865994400, 0.441648550011081780, 0.441603690052047360, 0.441558828989004170, 0.441513966822063900, 0.441469103551338670, +0.441424239176940290, 0.441379373698981730, 0.441334507117574770, 0.441289639432831500, 0.441244770644863730, 0.441199900753784460, 0.441155029759705390, 0.441110157662738810, +0.441065284462996370, 0.441020410160591180, 0.440975534755634950, 0.440930658248239460, 0.440885780638517740, 0.440840901926581540, 0.440796022112543100, 0.440751141196514260, +0.440706259178607900, 0.440661376058935910, 0.440616491837610480, 0.440571606514743420, 0.440526720090447740, 0.440481832564835310, 0.440436943938018240, 0.440392054210108410, +0.440347163381218880, 0.440302271451461450, 0.440257378420948310, 0.440212484289791320, 0.440167589058103490, 0.440122692725996740, 0.440077795293582870, 0.440032896760974900, +0.439987997128284620, 0.439943096395624460, 0.439898194563106080, 0.439853291630842640, 0.439808387598945970, 0.439763482467528330, 0.439718576236701570, 0.439673668906578770, +0.439628760477271840, 0.439583850948892960, 0.439538940321554050, 0.439494028595368240, 0.439449115770447320, 0.439404201846903650, 0.439359286824849040, 0.439314370704396610, +0.439269453485658270, 0.439224535168746270, 0.439179615753772570, 0.439134695240850190, 0.439089773630091110, 0.439044850921607170, 0.438999927115511560, 0.438955002211916080, +0.438910076210933090, 0.438865149112674490, 0.438820220917253480, 0.438775291624781900, 0.438730361235372070, 0.438685429749135940, 0.438640497166186640, 0.438595563486636090, +0.438550628710596630, 0.438505692838180190, 0.438460755869499950, 0.438415817804667820, 0.438370878643796150, 0.438325938386996850, 0.438280997034383110, 0.438236054586066900, +0.438191111042160130, 0.438146166402775980, 0.438101220668026430, 0.438056273838023870, 0.438011325912880170, 0.437966376892708560, 0.437921426777621030, 0.437876475567729910, +0.437831523263147230, 0.437786569863986120, 0.437741615370358550, 0.437696659782376980, 0.437651703100153390, 0.437606745323800890, 0.437561786453431580, 0.437516826489157740, +0.437471865431091510, 0.437426903279345970, 0.437381940034033130, 0.437336975695265140, 0.437292010263155060, 0.437247043737814920, 0.437202076119357190, 0.437157107407893930, +0.437112137603538230, 0.437067166706402220, 0.437022194716598260, 0.436977221634238470, 0.436932247459435990, 0.436887272192302890, 0.436842295832951640, 0.436797318381494220, +0.436752339838043900, 0.436707360202712720, 0.436662379475613150, 0.436617397656857250, 0.436572414746558280, 0.436527430744828250, 0.436482445651779630, 0.436437459467524490, +0.436392472192176080, 0.436347483825846540, 0.436302494368647880, 0.436257503820693390, 0.436212512182095110, 0.436167519452965560, 0.436122525633416860, 0.436077530723562200, +0.436032534723513720, 0.435987537633383880, 0.435942539453284820, 0.435897540183329820, 0.435852539823630980, 0.435807538374300750, 0.435762535835451330, 0.435717532207195890, +0.435672527489646690, 0.435627521682916130, 0.435582514787116400, 0.435537506802360750, 0.435492497728761360, 0.435447487566430310, 0.435402476315480960, 0.435357463976025370, +0.435312450548176190, 0.435267436032045430, 0.435222420427746500, 0.435177403735391540, 0.435132385955093070, 0.435087367086963220, 0.435042347131115340, 0.434997326087661560, +0.434952303956714530, 0.434907280738386300, 0.434862256432790310, 0.434817231040038670, 0.434772204560243900, 0.434727176993518260, 0.434682148339975090, 0.434637118599726540, +0.434592087772884770, 0.434547055859563210, 0.434502022859873990, 0.434456988773929690, 0.434411953601842590, 0.434366917343725960, 0.434321879999692020, 0.434276841569853410, +0.434231802054322270, 0.434186761453212060, 0.434141719766634960, 0.434096676994703500, 0.434051633137529980, 0.434006588195227800, 0.433961542167909110, 0.433916495055686580, +0.433871446858672400, 0.433826397576980050, 0.433781347210721650, 0.433736295760009490, 0.433691243224957000, 0.433646189605676410, 0.433601134902280360, 0.433556079114881090, +0.433511022243591950, 0.433465964288525300, 0.433420905249793760, 0.433375845127509480, 0.433330783921786090, 0.433285721632735650, 0.433240658260470980, 0.433195593805104200, +0.433150528266748880, 0.433105461645517220, 0.433060393941521900, 0.433015325154875230, 0.432970255285690610, 0.432925184334080390, 0.432880112300157160, 0.432835039184033270, +0.432789964985822170, 0.432744889705636180, 0.432699813343587590, 0.432654735899789810, 0.432609657374355250, 0.432564577767396490, 0.432519497079025930, 0.432474415309356990, +0.432429332458502010, 0.432384248526573760, 0.432339163513684450, 0.432294077419947630, 0.432248990245475580, 0.432203901990381110, 0.432158812654776460, 0.432113722238775200, +0.432068630742489630, 0.432023538166032450, 0.431978444509516060, 0.431933349773053920, 0.431888253956758450, 0.431843157060741940, 0.431798059085117920, 0.431752960029998740, +0.431707859895497200, 0.431662758681725540, 0.431617656388797450, 0.431572553016825230, 0.431527448565921570, 0.431482343036198920, 0.431437236427770820, 0.431392128740749610, +0.431347019975248100, 0.431301910131378640, 0.431256799209254750, 0.431211687208988950, 0.431166574130693870, 0.431121459974481980, 0.431076344740466800, 0.431031228428760790, +0.430986111039476320, 0.430940992572726940, 0.430895873028625140, 0.430850752407283600, 0.430805630708814780, 0.430760507933332320, 0.430715384080948560, 0.430670259151776370, +0.430625133145928100, 0.430580006063517430, 0.430534877904656720, 0.430489748669458830, 0.430444618358036160, 0.430399486970502340, 0.430354354506969790, 0.430309220967551360, +0.430264086352359520, 0.430218950661507840, 0.430173813895108780, 0.430128676053275150, 0.430083537136119460, 0.430038397143755360, 0.429993256076295240, 0.429948113933851570, +0.429902970716538050, 0.429857826424467070, 0.429812681057751500, 0.429767534616503850, 0.429722387100837770, 0.429677238510865760, 0.429632088846700620, 0.429586938108454830, +0.429541786296242120, 0.429496633410174970, 0.429451479450366210, 0.429406324416928330, 0.429361168309975060, 0.429316011129618870, 0.429270852875972660, 0.429225693549148910, +0.429180533149261360, 0.429135371676422460, 0.429090209130744690, 0.429045045512341850, 0.428999880821326340, 0.428954715057811190, 0.428909548221908800, 0.428864380313732970, +0.428819211333396180, 0.428774041281011380, 0.428728870156691030, 0.428683697960548950, 0.428638524692697590, 0.428593350353249970, 0.428548174942318560, 0.428502998460017050, +0.428457820906458120, 0.428412642281754570, 0.428367462586019100, 0.428322281819365320, 0.428277099981905830, 0.428231917073753190, 0.428186733095021200, 0.428141548045822330, +0.428096361926269600, 0.428051174736475580, 0.428005986476554020, 0.427960797146617500, 0.427915606746778980, 0.427870415277151030, 0.427825222737847450, 0.427780029128980830, +0.427734834450664130, 0.427689638703009910, 0.427644441886132040, 0.427599244000143040, 0.427554045045155930, 0.427508845021283330, 0.427463643928639000, 0.427418441767335570, +0.427373238537485600, 0.427328034239202960, 0.427282828872600270, 0.427237622437790450, 0.427192414934886190, 0.427147206364001330, 0.427101996725248400, 0.427056786018740530, +0.427011574244590240, 0.426966361402911500, 0.426921147493816770, 0.426875932517419230, 0.426830716473831420, 0.426785499363167230, 0.426740281185539310, 0.426695061941060660, +0.426649841629843930, 0.426604620252003080, 0.426559397807650620, 0.426514174296899640, 0.426468949719862880, 0.426423724076654130, 0.426378497367386090, 0.426333269592171380, +0.426288040751123860, 0.426242810844356280, 0.426197579871981700, 0.426152347834112710, 0.426107114730863320, 0.426061880562346120, 0.426016645328674170, 0.425971409029960280, +0.425926171666318190, 0.425880933237860750, 0.425835693744700930, 0.425790453186951470, 0.425745211564726280, 0.425699968878138100, 0.425654725127299960, 0.425609480312324600, +0.425564234433325970, 0.425518987490416720, 0.425473739483709650, 0.425428490413318590, 0.425383240279356310, 0.425337989081935930, 0.425292736821170190, 0.425247483497173010, +0.425202229110057120, 0.425156973659935660, 0.425111717146921360, 0.425066459571128150, 0.425021200932668820, 0.424975941231656500, 0.424930680468203870, 0.424885418642424960, +0.424840155754432570, 0.424794891804339710, 0.424749626792259250, 0.424704360718305090, 0.424659093582590070, 0.424613825385226910, 0.424568556126329600, 0.424523285806010840, +0.424478014424383930, 0.424432741981561560, 0.424387468477657740, 0.424342193912785270, 0.424296918287057290, 0.424251641600586590, 0.424206363853487200, 0.424161085045871910, +0.424115805177853910, 0.424070524249546000, 0.424025242261062200, 0.423979959212515240, 0.423934675104018440, 0.423889389935684540, 0.423844103707627540, 0.423798816419960310, +0.423753528072795980, 0.423708238666247520, 0.423662948200428770, 0.423617656675452700, 0.423572364091432120, 0.423527070448480980, 0.423481775746712140, 0.423436479986238900, +0.423391183167174060, 0.423345885289631680, 0.423300586353724580, 0.423255286359566000, 0.423209985307268780, 0.423164683196947060, 0.423119380028713580, 0.423074075802681690, +0.423028770518964150, 0.422983464177675130, 0.422938156778927430, 0.422892848322834360, 0.422847538809508760, 0.422802228239064710, 0.422756916611615070, 0.422711603927272810, +0.422666290186151870, 0.422620975388365240, 0.422575659534026150, 0.422530342623247510, 0.422485024656143400, 0.422439705632826790, 0.422394385553410860, 0.422349064418008570, +0.422303742226734060, 0.422258418979700120, 0.422213094677020230, 0.422167769318807120, 0.422122442905175030, 0.422077115436236830, 0.422031786912105800, 0.421986457332894970, +0.421941126698718360, 0.421895795009688930, 0.421850462265919600, 0.421805128467524550, 0.421759793614616680, 0.421714457707309310, 0.421669120745715390, 0.421623782729949050, +0.421578443660123310, 0.421533103536351430, 0.421487762358746350, 0.421442420127422330, 0.421397076842492220, 0.421351732504069430, 0.421306387112266920, 0.421261040667198830, +0.421215693168978170, 0.421170344617718240, 0.421124995013532070, 0.421079644356533780, 0.421034292646836390, 0.420988939884552880, 0.420943586069797430, 0.420898231202682990, +0.420852875283322990, 0.420807518311830390, 0.420762160288319420, 0.420716801212903060, 0.420671441085694650, 0.420626079906807230, 0.420580717676355080, 0.420535354394451060, +0.420489990061208680, 0.420444624676740930, 0.420399258241162030, 0.420353890754585010, 0.420308522217123230, 0.420263152628889750, 0.420217781989998760, 0.420172410300563350, +0.420127037560696910, 0.420081663770512430, 0.420036288930124240, 0.419990913039645310, 0.419945536099188720, 0.419900158108868660, 0.419854779068798260, 0.419809398979090860, +0.419764017839859560, 0.419718635651218640, 0.419673252413281130, 0.419627868126160490, 0.419582482789969740, 0.419537096404823230, 0.419491708970833990, 0.419446320488115420, +0.419400930956780660, 0.419355540376944000, 0.419310148748718530, 0.419264756072217640, 0.419219362347554410, 0.419173967574843260, 0.419128571754197150, 0.419083174885729210, +0.419037776969553740, 0.418992378005783820, 0.418946977994532950, 0.418901576935914290, 0.418856174830042010, 0.418810771677029350, 0.418765367476989720, 0.418719962230036320, +0.418674555936283390, 0.418629148595844050, 0.418583740208831880, 0.418538330775359900, 0.418492920295542530, 0.418447508769492880, 0.418402096197324440, 0.418356682579150370, +0.418311267915084940, 0.418265852205241370, 0.418220435449732810, 0.418175017648673540, 0.418129598802176710, 0.418084178910355870, 0.418038757973324240, 0.417993335991196040, +0.417947912964084570, 0.417902488892103300, 0.417857063775365360, 0.417811637613985210, 0.417766210408075930, 0.417720782157751160, 0.417675352863124020, 0.417629922524308920, +0.417584491141418990, 0.417539058714567810, 0.417493625243868630, 0.417448190729435790, 0.417402755171382420, 0.417357318569822220, 0.417311880924868260, 0.417266442236635060, +0.417221002505235690, 0.417175561730783460, 0.417130119913392720, 0.417084677053176700, 0.417039233150248990, 0.416993788204722770, 0.416948342216712450, 0.416902895186331330, +0.416857447113692940, 0.416811997998910560, 0.416766547842098540, 0.416721096643370200, 0.416675644402839110, 0.416630191120618500, 0.416584736796822790, 0.416539281431565270, +0.416493825024959520, 0.416448367577118840, 0.416402909088157580, 0.416357449558189100, 0.416311988987326580, 0.416266527375684480, 0.416221064723376110, 0.416175601030515040, +0.416130136297214570, 0.416084670523589160, 0.416039203709752060, 0.415993735855817000, 0.415948266961897130, 0.415902797028107060, 0.415857326054559940, 0.415811854041369560, +0.415766380988649100, 0.415720906896513090, 0.415675431765074880, 0.415629955594448040, 0.415584478384745880, 0.415539000136082970, 0.415493520848572550, 0.415448040522327920, +0.415402559157463550, 0.415357076754092840, 0.415311593312329420, 0.415266108832286650, 0.415220623314078940, 0.415175136757819700, 0.415129649163622660, 0.415084160531601080, +0.415038670861869460, 0.414993180154541170, 0.414947688409729950, 0.414902195627549100, 0.414856701808113180, 0.414811206951535500, 0.414765711057929810, 0.414720214127409390, +0.414674716160088890, 0.414629217156081590, 0.414583717115500850, 0.414538216038461190, 0.414492713925076030, 0.414447210775459040, 0.414401706589723640, 0.414356201367984400, +0.414310695110354620, 0.414265187816948100, 0.414219679487878250, 0.414174170123259580, 0.414128659723205510, 0.414083148287829770, 0.414037635817245730, 0.413992122311568010, +0.413946607770910020, 0.413901092195385510, 0.413855575585107830, 0.413810057940191660, 0.413764539260750300, 0.413719019546897600, 0.413673498798746990, 0.413627977016413020, +0.413582454200009050, 0.413536930349648610, 0.413491405465446220, 0.413445879547515330, 0.413400352595969740, 0.413354824610922820, 0.413309295592489300, 0.413263765540782540, +0.413218234455916320, 0.413172702338004130, 0.413127169187160580, 0.413081635003499150, 0.413036099787133570, 0.412990563538177420, 0.412945026256745170, 0.412899487942950450, +0.412853948596906940, 0.412808408218728160, 0.412762866808528810, 0.412717324366422220, 0.412671780892521990, 0.412626236386942680, 0.412580690849797760, 0.412535144281201140, +0.412489596681266280, 0.412444048050107760, 0.412398498387839150, 0.412352947694574310, 0.412307395970426700, 0.412261843215511010, 0.412216289429940710, 0.412170734613829690, +0.412125178767291380, 0.412079621890440560, 0.412034063983390710, 0.411988505046255670, 0.411942945079148970, 0.411897384082185290, 0.411851822055478210, 0.411806258999141140, +0.411760694913288820, 0.411715129798034760, 0.411669563653492890, 0.411623996479776650, 0.411578428277000920, 0.411532859045279030, 0.411487288784725070, 0.411441717495452440, +0.411396145177575890, 0.411350571831209040, 0.411304997456465700, 0.411259422053459500, 0.411213845622305170, 0.411168268163116190, 0.411122689676006570, 0.411077110161089780, +0.411031529618480660, 0.410985948048292690, 0.410940365450639890, 0.410894781825635710, 0.410849197173395020, 0.410803611494031330, 0.410758024787658220, 0.410712437054390420, +0.410666848294341520, 0.410621258507625540, 0.410575667694355990, 0.410530075854647680, 0.410484482988614170, 0.410438889096369500, 0.410393294178027170, 0.410347698233701990, +0.410302101263507580, 0.410256503267557910, 0.410210904245966620, 0.410165304198848450, 0.410119703126316960, 0.410074101028486290, 0.410028497905469910, 0.409982893757382730, +0.409937288584338310, 0.409891682386450240, 0.409846075163833370, 0.409800466916601320, 0.409754857644868130, 0.409709247348747360, 0.409663636028353870, 0.409618023683801350, +0.409572410315203690, 0.409526795922674660, 0.409481180506329030, 0.409435564066280460, 0.409389946602642940, 0.409344328115530180, 0.409298708605056960, 0.409253088071337030, +0.409207466514484360, 0.409161843934612630, 0.409116220331836640, 0.409070595706270130, 0.409024970058026740, 0.408979343387221360, 0.408933715693967580, 0.408888086978379530, +0.408842457240570830, 0.408796826480656410, 0.408751194698749880, 0.408705561894965430, 0.408659928069416640, 0.408614293222218430, 0.408568657353484520, 0.408523020463328950, +0.408477382551865390, 0.408431743619208810, 0.408386103665472840, 0.408340462690771680, 0.408294820695218890, 0.408249177678929490, 0.408203533642017170, 0.408157888584595560, +0.408112242506779630, 0.408066595408683120, 0.408020947290420100, 0.407975298152104370, 0.407929647993850730, 0.407883996815772980, 0.407838344617985290, 0.407792691400601260, +0.407747037163735950, 0.407701381907503050, 0.407655725632016690, 0.407610068337390610, 0.407564410023739780, 0.407518750691177880, 0.407473090339819100, 0.407427428969777240, +0.407381766581167200, 0.407336103174102740, 0.407290438748698020, 0.407244773305066810, 0.407199106843324050, 0.407153439363583500, 0.407107770865959010, 0.407062101350565420, +0.407016430817516650, 0.406970759266926770, 0.406925086698909590, 0.406879413113580110, 0.406833738511052090, 0.406788062891439710, 0.406742386254856810, 0.406696708601418320, +0.406651029931238030, 0.406605350244430230, 0.406559669541108560, 0.406513987821388200, 0.406468305085382840, 0.406422621333206720, 0.406376936564973650, 0.406331250780798630, +0.406285563980795520, 0.406239876165078060, 0.406194187333761340, 0.406148497486959140, 0.406102806624785650, 0.406057114747354790, 0.406011421854781560, 0.405965727947179720, +0.405920033024663620, 0.405874337087346990, 0.405828640135344920, 0.405782942168771310, 0.405737243187740290, 0.405691543192365780, 0.405645842182762780, 0.405600140159045220, +0.405554437121327270, 0.405508733069722850, 0.405463028004347030, 0.405417321925313600, 0.405371614832736480, 0.405325906726730690, 0.405280197607410190, 0.405234487474889160, +0.405188776329281520, 0.405143064170702340, 0.405097350999265470, 0.405051636815085270, 0.405005921618275530, 0.404960205408951390, 0.404914488187226810, 0.404868769953215910, +0.404823050707032730, 0.404777330448792330, 0.404731609178608620, 0.404685886896595900, 0.404640163602868030, 0.404594439297540130, 0.404548713980726170, 0.404502987652540390, +0.404457260313096760, 0.404411531962510400, 0.404365802600895160, 0.404320072228365080, 0.404274340845035160, 0.404228608451019430, 0.404182875046432130, 0.404137140631387280, +0.404091405206000010, 0.404045668770384170, 0.403999931324654170, 0.403954192868923980, 0.403908453403308660, 0.403862712927922200, 0.403816971442878980, 0.403771228948292980, +0.403725485444279220, 0.403679740930951820, 0.403633995408425040, 0.403588248876812830, 0.403542501336230490, 0.403496752786791810, 0.403451003228610880, 0.403405252661802830, +0.403359501086481660, 0.403313748502761750, 0.403267994910757040, 0.403222240310582790, 0.403176484702352900, 0.403130728086181830, 0.403084970462183500, 0.403039211830473200, +0.402993452191164780, 0.402947691544372820, 0.402901929890211170, 0.402856167228795140, 0.402810403560238670, 0.402764638884656190, 0.402718873202161710, 0.402673106512870470, +0.402627338816896440, 0.402581570114353690, 0.402535800405357360, 0.402490029690021570, 0.402444257968460730, 0.402398485240788810, 0.402352711507121100, 0.402306936767571570, +0.402261161022254730, 0.402215384271284560, 0.402169606514776400, 0.402123827752844170, 0.402078047985602370, 0.402032267213165040, 0.401986485435647470, 0.401940702653163670, +0.401894918865828120, 0.401849134073754890, 0.401803348277059160, 0.401757561475855120, 0.401711773670256790, 0.401665984860379350, 0.401620195046337000, 0.401574404228244200, +0.401528612406214900, 0.401482819580364520, 0.401437025750807140, 0.401391230917657100, 0.401345435081028660, 0.401299638241036980, 0.401253840397796210, 0.401208041551420870, +0.401162241702025020, 0.401116440849723980, 0.401070638994631800, 0.401024836136863020, 0.400979032276531750, 0.400933227413753370, 0.400887421548641820, 0.400841614681311800, +0.400795806811877320, 0.400749997940453680, 0.400704188067155080, 0.400658377192095630, 0.400612565315390580, 0.400566752437154170, 0.400520938557500870, 0.400475123676544810, +0.400429307794401330, 0.400383490911184580, 0.400337673027009120, 0.400291854141989090, 0.400246034256239840, 0.400200213369875430, 0.400154391483010570, 0.400108568595759270, +0.400062744708236990, 0.400016919820557810, 0.399971093932836360, 0.399925267045186770, 0.399879439157724390, 0.399833610270563470, 0.399787780383818070, 0.399741949497603610, +0.399696117612034330, 0.399650284727224750, 0.399604450843288990, 0.399558615960342590, 0.399512780078499610, 0.399466943197874680, 0.399421105318581990, 0.399375266440736900, +0.399329426564453690, 0.399283585689846950, 0.399237743817030750, 0.399191900946120670, 0.399146057077230830, 0.399100212210475810, 0.399054366345969860, 0.399008519483828430, +0.398962671624165710, 0.398916822767095840, 0.398870972912734380, 0.398825122061195470, 0.398779270212593740, 0.398733417367043490, 0.398687563524660000, 0.398641708685557710, +0.398595852849851050, 0.398549996017654400, 0.398504138189083200, 0.398458279364251600, 0.398412419543274330, 0.398366558726265580, 0.398320696913340880, 0.398274834104614390, +0.398228970300200820, 0.398183105500214460, 0.398137239704770720, 0.398091372913983890, 0.398045505127968600, 0.397999636346839160, 0.397953766570711020, 0.397907895799698490, +0.397862024033915800, 0.397816151273478470, 0.397770277518500750, 0.397724402769097320, 0.397678527025382480, 0.397632650287471750, 0.397586772555479420, 0.397540893829520130, +0.397495014109708170, 0.397449133396159120, 0.397403251688987210, 0.397357368988307200, 0.397311485294233320, 0.397265600606881150, 0.397219714926364990, 0.397173828252799570, +0.397127940586299130, 0.397082051926979260, 0.397036162274954250, 0.396990271630338450, 0.396944379993247390, 0.396898487363795350, 0.396852593742097080, 0.396806699128266940, +0.396760803522420440, 0.396714906924671980, 0.396669009335136210, 0.396623110753927530, 0.396577211181161460, 0.396531310616952350, 0.396485409061415000, 0.396439506514663700, +0.396393602976814030, 0.396347698447980400, 0.396301792928277500, 0.396255886417819670, 0.396209978916722600, 0.396164070425100550, 0.396118160943067900, 0.396072250470740290, +0.396026339008232030, 0.395980426555657910, 0.395934513113132320, 0.395888598680770920, 0.395842683258687930, 0.395796766846998270, 0.395750849445816290, 0.395704931055257610, +0.395659011675436600, 0.395613091306468050, 0.395567169948466360, 0.395521247601547170, 0.395475324265824820, 0.395429399941414180, 0.395383474628429650, 0.395337548326986870, +0.395291621037200170, 0.395245692759183980, 0.395199763493054020, 0.395153833238924670, 0.395107901996910650, 0.395061969767126540, 0.395016036549687920, 0.394970102344709200, +0.394924167152305160, 0.394878230972590340, 0.394832293805680360, 0.394786355651689620, 0.394740416510733050, 0.394694476382924990, 0.394648535268381120, 0.394602593167215960, +0.394556650079544320, 0.394510706005480600, 0.394464760945140550, 0.394418814898638610, 0.394372867866089600, 0.394326919847608040, 0.394280970843309600, 0.394235020853308690, +0.394189069877719840, 0.394143117916658740, 0.394097164970239830, 0.394051211038577990, 0.394005256121787770, 0.393959300219984760, 0.393913343333283540, 0.393867385461798950, +0.393821426605645450, 0.393775466764938850, 0.393729505939793560, 0.393683544130324470, 0.393637581336646170, 0.393591617558874280, 0.393545652797123390, 0.393499687051508340, +0.393453720322143650, 0.393407752609145070, 0.393361783912627160, 0.393315814232704340, 0.393269843569492410, 0.393223871923105870, 0.393177899293659590, 0.393131925681268260, +0.393085951086047440, 0.393039975508111760, 0.392993998947576200, 0.392948021404555150, 0.392902042879164530, 0.392856063371518740, 0.392810082881732800, 0.392764101409921300, +0.392718118956199900, 0.392672135520683200, 0.392626151103486200, 0.392580165704723370, 0.392534179324510570, 0.392488191962962310, 0.392442203620193160, 0.392396214296318930, +0.392350223991454140, 0.392304232705713800, 0.392258240439212480, 0.392212247192065930, 0.392166252964388780, 0.392120257756296050, 0.392074261567902200, 0.392028264399323150, +0.391982266250673390, 0.391936267122068030, 0.391890267013621510, 0.391844265925449800, 0.391798263857667420, 0.391752260810389330, 0.391706256783730220, 0.391660251777805890, +0.391614245792730910, 0.391568238828620300, 0.391522230885588680, 0.391476221963751920, 0.391430212063224590, 0.391384201184121370, 0.391338189326558010, 0.391292176490649180, +0.391246162676509910, 0.391200147884254830, 0.391154132113999740, 0.391108115365859380, 0.391062097639948700, 0.391016078936382410, 0.390970059255276280, 0.390924038596745070, +0.390878016960903680, 0.390831994347866920, 0.390785970757750510, 0.390739946190669210, 0.390693920646738020, 0.390647894126071650, 0.390601866628785930, 0.390555838154995620, +0.390509808704815220, 0.390463778278360710, 0.390417746875746760, 0.390371714497088520, 0.390325681142500490, 0.390279646812098700, 0.390233611505997780, 0.390187575224312850, +0.390141537967158560, 0.390095499734650850, 0.390049460526904370, 0.390003420344034290, 0.389957379186155200, 0.389911337053383100, 0.389865293945832640, 0.389819249863618930, +0.389773204806856680, 0.389727158775661890, 0.389681111770149140, 0.389635063790433220, 0.389589014836630050, 0.389542964908854370, 0.389496914007221250, 0.389450862131845430, +0.389404809282842880, 0.389358755460328330, 0.389312700664416870, 0.389266644895223220, 0.389220588152863370, 0.389174530437452090, 0.389128471749104480, 0.389082412087935260, +0.389036351454060400, 0.388990289847594710, 0.388944227268653300, 0.388898163717350860, 0.388852099193803420, 0.388806033698125770, 0.388759967230433050, 0.388713899790839980, +0.388667831379462540, 0.388621761996415570, 0.388575691641813770, 0.388529620315773150, 0.388483548018408450, 0.388437474749834920, 0.388391400510167240, 0.388345325299521540, +0.388299249118012500, 0.388253171965755320, 0.388207093842864780, 0.388161014749456970, 0.388114934685646620, 0.388068853651548920, 0.388022771647278660, 0.387976688672951870, +0.387930604728683400, 0.387884519814588380, 0.387838433930781660, 0.387792347077379310, 0.387746259254496020, 0.387700170462246750, 0.387654080700747420, 0.387607989970112870, +0.387561898270458390, 0.387515805601898690, 0.387469711964549930, 0.387423617358526930, 0.387377521783944800, 0.387331425240918510, 0.387285327729564090, 0.387239229249996320, +0.387193129802330450, 0.387147029386681380, 0.387100928003165150, 0.387054825651896580, 0.387008722332990940, 0.386962618046563070, 0.386916512792729090, 0.386870406571603880, +0.386824299383302150, 0.386778191227940160, 0.386732082105632650, 0.386685972016494960, 0.386639860960641900, 0.386593748938189600, 0.386547635949252950, 0.386501521993947220, +0.386455407072387240, 0.386409291184689140, 0.386363174330967840, 0.386317056511338630, 0.386270937725916360, 0.386224817974817110, 0.386178697258155850, 0.386132575576047850, +0.386086452928607990, 0.386040329315952390, 0.385994204738196010, 0.385948079195453710, 0.385901952687841550, 0.385855825215474570, 0.385809696778468050, 0.385763567376936840, +0.385717437010997090, 0.385671305680763800, 0.385625173386352220, 0.385579040127877300, 0.385532905905455190, 0.385486770719200840, 0.385440634569229560, 0.385394497455656240, +0.385348359378597130, 0.385302220338167080, 0.385256080334481500, 0.385209939367655350, 0.385163797437804710, 0.385117654545044600, 0.385071510689490300, 0.385025365871256910, +0.384979220090460430, 0.384933073347215940, 0.384886925641638340, 0.384840776973843890, 0.384794627343947430, 0.384748476752064420, 0.384702325198309820, 0.384656172682799840, +0.384610019205649410, 0.384563864766973910, 0.384517709366888340, 0.384471553005508950, 0.384425395682950640, 0.384379237399328830, 0.384333078154758530, 0.384286917949355930, +0.384240756783236050, 0.384194594656514290, 0.384148431569305670, 0.384102267521726330, 0.384056102513891330, 0.384009936545915640, 0.383963769617915560, 0.383917601730006000, +0.383871432882302520, 0.383825263074919990, 0.383779092307974690, 0.383732920581581700, 0.383686747895856440, 0.383640574250913860, 0.383594399646870250, 0.383548224083840650, +0.383502047561940450, 0.383455870081284790, 0.383409691641989850, 0.383363512244170650, 0.383317331887942700, 0.383271150573420980, 0.383224968300721780, 0.383178785069960230, +0.383132600881251230, 0.383086415734711190, 0.383040229630455090, 0.382994042568598430, 0.382947854549256230, 0.382901665572544850, 0.382855475638579250, 0.382809284747475000, +0.382763092899347120, 0.382716900094311920, 0.382670706332484460, 0.382624511613980260, 0.382578315938914340, 0.382532119307403050, 0.382485921719561420, 0.382439723175505060, +0.382393523675348960, 0.382347323219209450, 0.382301121807201600, 0.382254919439441010, 0.382208716116042620, 0.382162511837122960, 0.382116306602796940, 0.382070100413179790, +0.382023893268387760, 0.381977685168536030, 0.381931476113740060, 0.381885266104115050, 0.381839055139777230, 0.381792843220841780, 0.381746630347424230, 0.381700416519639710, +0.381654201737604500, 0.381607986001433860, 0.381561769311243190, 0.381515551667147730, 0.381469333069263780, 0.381423113517706520, 0.381376893012591480, 0.381330671554033770, +0.381284449142149760, 0.381238225777054680, 0.381192001458863620, 0.381145776187692960, 0.381099549963657860, 0.381053322786873870, 0.381007094657456190, 0.380960865575521170, +0.380914635541183990, 0.380868404554560220, 0.380822172615765060, 0.380775939724914860, 0.380729705882124790, 0.380683471087510440, 0.380637235341187040, 0.380590998643270950, +0.380544760993877350, 0.380498522393121870, 0.380452282841119650, 0.380406042337987140, 0.380359800883839530, 0.380313558478792000, 0.380267315122961020, 0.380221070816461730, +0.380174825559409730, 0.380128579351920290, 0.380082332194109810, 0.380036084086093520, 0.379989835027987000, 0.379943585019905490, 0.379897334061965410, 0.379851082154281980, +0.379804829296970900, 0.379758575490147300, 0.379712320733927690, 0.379666065028427260, 0.379619808373761640, 0.379573550770046120, 0.379527292217397120, 0.379481032715929920, +0.379434772265759720, 0.379388510867002980, 0.379342248519774990, 0.379295985224191330, 0.379249720980367360, 0.379203455788419460, 0.379157189648462960, 0.379110922560613410, +0.379064654524986220, 0.379018385541697760, 0.378972115610863360, 0.378925844732598660, 0.378879572907018960, 0.378833300134240710, 0.378787026414379220, 0.378740751747550120, +0.378694476133868810, 0.378648199573451640, 0.378601922066414020, 0.378555643612871580, 0.378509364212939680, 0.378463083866734720, 0.378416802574372050, 0.378370520335966960, +0.378324237151635990, 0.378277953021494420, 0.378231667945657990, 0.378185381924241950, 0.378139094957362920, 0.378092807045136090, 0.378046518187677260, 0.378000228385101720, +0.377953937637526050, 0.377907645945065540, 0.377861353307835880, 0.377815059725952420, 0.377768765199531790, 0.377722469728689170, 0.377676173313540420, 0.377629875954200780, +0.377583577650786930, 0.377537278403414060, 0.377490978212197630, 0.377444677077254150, 0.377398374998698990, 0.377352071976647880, 0.377305768011216180, 0.377259463102520510, +0.377213157250676170, 0.377166850455798900, 0.377120542718004100, 0.377074234037408360, 0.377027924414127020, 0.376981613848275890, 0.376935302339970360, 0.376888989889326900, +0.376842676496461030, 0.376796362161488430, 0.376750046884524510, 0.376703730665685910, 0.376657413505087970, 0.376611095402846100, 0.376564776359076920, 0.376518456373895750, +0.376472135447418480, 0.376425813579760400, 0.376379490771038270, 0.376333167021367380, 0.376286842330863570, 0.376240516699642260, 0.376194190127820070, 0.376147862615512360, +0.376101534162835040, 0.376055204769903450, 0.376008874436834280, 0.375962543163742890, 0.375916210950745180, 0.375869877797956550, 0.375823543705493590, 0.375777208673471750, +0.375730872702006950, 0.375684535791214520, 0.375638197941211170, 0.375591859152112350, 0.375545519424033410, 0.375499178757091160, 0.375452837151400930, 0.375406494607078590, +0.375360151124239590, 0.375313806703000690, 0.375267461343477220, 0.375221115045785090, 0.375174767810039780, 0.375128419636357960, 0.375082070524855090, 0.375035720475647090, +0.374989369488849310, 0.374943017564578540, 0.374896664702950240, 0.374850310904080270, 0.374803956168084100, 0.374757600495078450, 0.374711243885178850, 0.374664886338500650, +0.374618527855160700, 0.374572168435274410, 0.374525808078957690, 0.374479446786326050, 0.374433084557496240, 0.374386721392583670, 0.374340357291704340, 0.374293992254973670, +0.374247626282508410, 0.374201259374424110, 0.374154891530836700, 0.374108522751861570, 0.374062153037615640, 0.374015782388214260, 0.373969410803773440, 0.373923038284408700, +0.373876664830236740, 0.373830290441373110, 0.373783915117933410, 0.373737538860034300, 0.373691161667791320, 0.373644783541320470, 0.373598404480737220, 0.373552024486158370, +0.373505643557699500, 0.373459261695476500, 0.373412878899604890, 0.373366495170201540, 0.373320110507381950, 0.373273724911262090, 0.373227338381957490, 0.373180950919584980, +0.373134562524260030, 0.373088173196098720, 0.373041782935216560, 0.372995391741730350, 0.372948999615755670, 0.372902606557408090, 0.372856212566804400, 0.372809817644060180, +0.372763421789291390, 0.372717025002613670, 0.372670627284143800, 0.372624228633997360, 0.372577829052290310, 0.372531428539138290, 0.372485027094658140, 0.372438624718965380, +0.372392221412176090, 0.372345817174405850, 0.372299412005771440, 0.372253005906388490, 0.372206598876373080, 0.372160190915840680, 0.372113782024908300, 0.372067372203691400, +0.372020961452306120, 0.371974549770868020, 0.371928137159493910, 0.371881723618299520, 0.371835309147400370, 0.371788893746913370, 0.371742477416954150, 0.371696060157638730, +0.371649641969082730, 0.371603222851403010, 0.371556802804715260, 0.371510381829135540, 0.371463959924779430, 0.371417537091763840, 0.371371113330204390, 0.371324688640217170, +0.371278263021917800, 0.371231836475423180, 0.371185409000849010, 0.371138980598311240, 0.371092551267925670, 0.371046121009809160, 0.370999689824077270, 0.370953257710845810, +0.370906824670231560, 0.370860390702350270, 0.370813955807318020, 0.370767519985250480, 0.370721083236264510, 0.370674645560475860, 0.370628206958000580, 0.370581767428954430, +0.370535326973454200, 0.370488885591615690, 0.370442443283554970, 0.370396000049387720, 0.370349555889230850, 0.370303110803200110, 0.370256664791411620, 0.370210217853981010, +0.370163769991025290, 0.370117321202660170, 0.370070871489001310, 0.370024420850165680, 0.369977969286269030, 0.369931516797427420, 0.369885063383756650, 0.369838609045373580, +0.369792153782394000, 0.369745697594934030, 0.369699240483109430, 0.369652782447037140, 0.369606323486832920, 0.369559863602612840, 0.369513402794492680, 0.369466941062589480, +0.369420478407018920, 0.369374014827897110, 0.369327550325339870, 0.369281084899464210, 0.369234618550385810, 0.369188151278220860, 0.369141683083085090, 0.369095213965095590, +0.369048743924368040, 0.369002272961018170, 0.368955801075163070, 0.368909328266918470, 0.368862854536400550, 0.368816379883725070, 0.368769904309009020, 0.368723427812368220, +0.368676950393918900, 0.368630472053776750, 0.368583992792058830, 0.368537512608880960, 0.368491031504359300, 0.368444549478609660, 0.368398066531749060, 0.368351582663893230, +0.368305097875158530, 0.368258612165660580, 0.368212125535516580, 0.368165637984842250, 0.368119149513753410, 0.368072660122367110, 0.368026169810799160, 0.367979678579165800, +0.367933186427582830, 0.367886693356167300, 0.367840199365035040, 0.367793704454302260, 0.367747208624084830, 0.367700711874499760, 0.367654214205662970, 0.367607715617690570, +0.367561216110698530, 0.367514715684803820, 0.367468214340122330, 0.367421712076770320, 0.367375208894863640, 0.367328704794519290, 0.367282199775853190, 0.367235693838981250, +0.367189186984020420, 0.367142679211086620, 0.367096170520296140, 0.367049660911764830, 0.367003150385609770, 0.366956638941946860, 0.366910126580892280, 0.366863613302562060, +0.366817099107073160, 0.366770583994541540, 0.366724067965083440, 0.366677551018814770, 0.366631033155852660, 0.366584514376312950, 0.366537994680311950, 0.366491474067965510, +0.366444952539390860, 0.366398430094703800, 0.366351906734020240, 0.366305382457457360, 0.366258857265131020, 0.366212331157157510, 0.366165804133652790, 0.366119276194733940, +0.366072747340516920, 0.366026217571118030, 0.365979686886653170, 0.365933155287239520, 0.365886622772993000, 0.365840089344029900, 0.365793555000466180, 0.365747019742418970, +0.365700483570004180, 0.365653946483338210, 0.365607408482536980, 0.365560869567717610, 0.365514329738996110, 0.365467788996488740, 0.365421247340311510, 0.365374704770581590, +0.365328161287414850, 0.365281616890927360, 0.365235071581236190, 0.365188525358457360, 0.365141978222707220, 0.365095430174101730, 0.365048881212758080, 0.365002331338792230, +0.364955780552320530, 0.364909228853458940, 0.364862676242324770, 0.364816122719033850, 0.364769568283702610, 0.364723012936447100, 0.364676456677384410, 0.364629899506630610, +0.364583341424302040, 0.364536782430514740, 0.364490222525385880, 0.364443661709031470, 0.364397099981567440, 0.364350537343111120, 0.364303973793778490, 0.364257409333685890, +0.364210843962949340, 0.364164277681686080, 0.364117710490012180, 0.364071142388043940, 0.364024573375897500, 0.363978003453690020, 0.363931432621537490, 0.363884860879556400, +0.363838288227862790, 0.363791714666573780, 0.363745140195805560, 0.363698564815674470, 0.363651988526296540, 0.363605411327789060, 0.363558833220268110, 0.363512254203849580, +0.363465674278650840, 0.363419093444787960, 0.363372511702377330, 0.363325929051534990, 0.363279345492378230, 0.363232761025023110, 0.363186175649586110, 0.363139589366183290, +0.363093002174931840, 0.363046414075947900, 0.362999825069347970, 0.362953235155248020, 0.362906644333765400, 0.362860052605016190, 0.362813459969116850, 0.362766866426183440, +0.362720271976333270, 0.362673676619682420, 0.362627080356347390, 0.362580483186444200, 0.362533885110090270, 0.362487286127401610, 0.362440686238494290, 0.362394085443485730, +0.362347483742491930, 0.362300881135629420, 0.362254277623014260, 0.362207673204763880, 0.362161067880994280, 0.362114461651822040, 0.362067854517363170, 0.362021246477735150, +0.361974637533053980, 0.361928027683436180, 0.361881416928997950, 0.361834805269856560, 0.361788192706128220, 0.361741579237929320, 0.361694964865376110, 0.361648349588585880, +0.361601733407674760, 0.361555116322758940, 0.361508498333955710, 0.361461879441381250, 0.361415259645152090, 0.361368638945384350, 0.361322017342195430, 0.361275394835701480, +0.361228771426019000, 0.361182147113264240, 0.361135521897554490, 0.361088895779005940, 0.361042268757735150, 0.360995640833858270, 0.360949012007492740, 0.360902382278754650, +0.360855751647760570, 0.360809120114626740, 0.360762487679470560, 0.360715854342408100, 0.360669220103555620, 0.360622584963030460, 0.360575948920948850, 0.360529311977427440, +0.360482674132582280, 0.360436035386530850, 0.360389395739389330, 0.360342755191274290, 0.360296113742302030, 0.360249471392589840, 0.360202828142253960, 0.360156183991411030, +0.360109538940177280, 0.360062892988670000, 0.360016246137005560, 0.359969598385300460, 0.359922949733671000, 0.359876300182234540, 0.359829649731107310, 0.359782998380405620, +0.359736346130246800, 0.359689692980747100, 0.359643038932023210, 0.359596383984191250, 0.359549728137368800, 0.359503071391671980, 0.359456413747217540, 0.359409755204121610, +0.359363095762501690, 0.359316435422474050, 0.359269774184155340, 0.359223112047661770, 0.359176449013110850, 0.359129785080618770, 0.359083120250302260, 0.359036454522277500, +0.358989787896662080, 0.358943120373572120, 0.358896451953124420, 0.358849782635435150, 0.358803112420621790, 0.358756441308800740, 0.358709769300088130, 0.358663096394601480, +0.358616422592457130, 0.358569747893771720, 0.358523072298661480, 0.358476395807244050, 0.358429718419635560, 0.358383040135952850, 0.358336360956312050, 0.358289680880830800, +0.358242999909625330, 0.358196318042812380, 0.358149635280508190, 0.358102951622830350, 0.358056267069895130, 0.358009581621819280, 0.357962895278719000, 0.357916208040711950, +0.357869519907914320, 0.357822830880442530, 0.357776140958414040, 0.357729450141945240, 0.357682758431152770, 0.357636065826152980, 0.357589372327063500, 0.357542677934000520, +0.357495982647080880, 0.357449286466420880, 0.357402589392138090, 0.357355891424348810, 0.357309192563169790, 0.357262492808717360, 0.357215792161109160, 0.357169090620461430, +0.357122388186891020, 0.357075684860514220, 0.357028980641448560, 0.356982275529810540, 0.356935569525716370, 0.356888862629283650, 0.356842154840628810, 0.356795446159868630, +0.356748736587119360, 0.356702026122498680, 0.356655314766122940, 0.356608602518108890, 0.356561889378572970, 0.356515175347632720, 0.356468460425404480, 0.356421744612005150, +0.356375027907551050, 0.356328310312159720, 0.356281591825947710, 0.356234872449031680, 0.356188152181528050, 0.356141431023554440, 0.356094708975227270, 0.356047986036663320, +0.356001262207979010, 0.355954537489291960, 0.355907811880718520, 0.355861085382375150, 0.355814357994379490, 0.355767629716847940, 0.355720900549897360, 0.355674170493644080, +0.355627439548205750, 0.355580707713698870, 0.355533974990240200, 0.355487241377946180, 0.355440506876934460, 0.355393771487321490, 0.355347035209224120, 0.355300298042758700, +0.355253559988042980, 0.355206821045193350, 0.355160081214326630, 0.355113340495559320, 0.355066598889009100, 0.355019856394792390, 0.354973113013025590, 0.354926368743826440, +0.354879623587311340, 0.354832877543597160, 0.354786130612800450, 0.354739382795038750, 0.354692634090428670, 0.354645884499086960, 0.354599134021130140, 0.354552382656675880, +0.354505630405840650, 0.354458877268741370, 0.354412123245494480, 0.354365368336217730, 0.354318612541027530, 0.354271855860040790, 0.354225098293374010, 0.354178339841144880, +0.354131580503469930, 0.354084820280465560, 0.354038059172249620, 0.353991297178938460, 0.353944534300649150, 0.353897770537497990, 0.353851005889602890, 0.353804240357080250, +0.353757473940047030, 0.353710706638619700, 0.353663938452915990, 0.353617169383052430, 0.353570399429145980, 0.353523628591313140, 0.353476856869671620, 0.353430084264337920, +0.353383310775429060, 0.353336536403061510, 0.353289761147353000, 0.353242985008420110, 0.353196207986379300, 0.353149430081348410, 0.353102651293443980, 0.353055871622782900, +0.353009091069481700, 0.352962309633658210, 0.352915527315428970, 0.352868744114910870, 0.352821960032220490, 0.352775175067475630, 0.352728389220792860, 0.352681602492289140, +0.352634814882080930, 0.352588026390286140, 0.352541237017021280, 0.352494446762403320, 0.352447655626548840, 0.352400863609575620, 0.352354070711600240, 0.352307276932739720, +0.352260482273110580, 0.352213686732830600, 0.352166890312016480, 0.352120093010784670, 0.352073294829253040, 0.352026495767538190, 0.351979695825757110, 0.351932895004026360, +0.351886093302463790, 0.351839290721185970, 0.351792487260309930, 0.351745682919952280, 0.351698877700230840, 0.351652071601262160, 0.351605264623163330, 0.351558456766050910, +0.351511648030042810, 0.351464838415255550, 0.351418027921806210, 0.351371216549811350, 0.351324404299388880, 0.351277591170655430, 0.351230777163727580, 0.351183962278723170, +0.351137146515758890, 0.351090329874951760, 0.351043512356418340, 0.350996693960276550, 0.350949874686643070, 0.350903054535634860, 0.350856233507368610, 0.350809411601962220, +0.350762588819532320, 0.350715765160195870, 0.350668940624069670, 0.350622115211271460, 0.350575288921918030, 0.350528461756126340, 0.350481633714013090, 0.350434804795696160, +0.350387975001292210, 0.350341144330917950, 0.350294312784691200, 0.350247480362728680, 0.350200647065147470, 0.350153812892064260, 0.350106977843596900, 0.350060141919862070, +0.350013305120976890, 0.349966467447058060, 0.349919628898223480, 0.349872789474589830, 0.349825949176274190, 0.349779108003393240, 0.349732265956064990, 0.349685423034406030, +0.349638579238533530, 0.349591734568564180, 0.349544889024615890, 0.349498042606805340, 0.349451195315249760, 0.349404347150065740, 0.349357498111371230, 0.349310648199283040, +0.349263797413917780, 0.349216945755393470, 0.349170093223826750, 0.349123239819334850, 0.349076385542034410, 0.349029530392043430, 0.348982674369478610, 0.348935817474457070, +0.348888959707095600, 0.348842101067512180, 0.348795241555823480, 0.348748381172146680, 0.348701519916598530, 0.348654657789296940, 0.348607794790358750, 0.348560930919901090, +0.348514066178040650, 0.348467200564895500, 0.348420334080582320, 0.348373466725217850, 0.348326598498920170, 0.348279729401806020, 0.348232859433992510, 0.348185988595596460, +0.348139116886735820, 0.348092244307527440, 0.348045370858088400, 0.347998496538535540, 0.347951621348986880, 0.347904745289559110, 0.347857868360369530, 0.347810990561534810, +0.347764111893173080, 0.347717232355401030, 0.347670351948335900, 0.347623470672094540, 0.347576588526794850, 0.347529705512553690, 0.347482821629487900, 0.347435936877715460, +0.347389051257353140, 0.347342164768518200, 0.347295277411327430, 0.347248389185898900, 0.347201500092349400, 0.347154610130796130, 0.347107719301355980, 0.347060827604146860, +0.347013935039285740, 0.346967041606889740, 0.346920147307075770, 0.346873252139961790, 0.346826356105664700, 0.346779459204301700, 0.346732561435989680, 0.346685662800846670, +0.346638763298989460, 0.346591862930534960, 0.346544961695601230, 0.346498059594305070, 0.346451156626763730, 0.346404252793094170, 0.346357348093414340, 0.346310442527841100, +0.346263536096491800, 0.346216628799483280, 0.346169720636933520, 0.346122811608959520, 0.346075901715678480, 0.346028990957207290, 0.345982079333663980, 0.345935166845165510, +0.345888253491829110, 0.345841339273771700, 0.345794424191111340, 0.345747508243964890, 0.345700591432449690, 0.345653673756682600, 0.345606755216781750, 0.345559835812863980, +0.345512915545046210, 0.345465994413446550, 0.345419072418181980, 0.345372149559369680, 0.345325225837126550, 0.345278301251570830, 0.345231375802819370, 0.345184449490989420, +0.345137522316197930, 0.345090594278563090, 0.345043665378201750, 0.344996735615231250, 0.344949804989768460, 0.344902873501931610, 0.344855941151837600, 0.344809007939603670, +0.344762073865346850, 0.344715138929185260, 0.344668203131235810, 0.344621266471615450, 0.344574328950442320, 0.344527390567833380, 0.344480451323905980, 0.344433511218777020, +0.344386570252564690, 0.344339628425385960, 0.344292685737358110, 0.344245742188598160, 0.344198797779224300, 0.344151852509353370, 0.344104906379102900, 0.344057959388589680, +0.344011011537932010, 0.343964062827246790, 0.343917113256651420, 0.343870162826262870, 0.343823211536199320, 0.343776259386577740, 0.343729306377515090, 0.343682352509129600, +0.343635397781538230, 0.343588442194858350, 0.343541485749206950, 0.343494528444702240, 0.343447570281461220, 0.343400611259601310, 0.343353651379239400, 0.343306690640493850, +0.343259729043481510, 0.343212766588319840, 0.343165803275125860, 0.343118839104017800, 0.343071874075112640, 0.343024908188527820, 0.342977941444380260, 0.342930973842788310, +0.342884005383868870, 0.342837036067739460, 0.342790065894517050, 0.342743094864319860, 0.342696122977264930, 0.342649150233469310, 0.342602176633051200, 0.342555202176127670, +0.342508226862816120, 0.342461250693233630, 0.342414273667498380, 0.342367295785727440, 0.342320317048038280, 0.342273337454547910, 0.342226357005374630, 0.342179375700635450, +0.342132393540447830, 0.342085410524928800, 0.342038426654196650, 0.341991441928368440, 0.341944456347561650, 0.341897469911893290, 0.341850482621481650, 0.341803494476443810, +0.341756505476896840, 0.341709515622959040, 0.341662524914747410, 0.341615533352379490, 0.341568540935972280, 0.341521547665644190, 0.341474553541512180, 0.341427558563693830, +0.341380562732306160, 0.341333566047467450, 0.341286568509294900, 0.341239570117905900, 0.341192570873417530, 0.341145570775948200, 0.341098569825614870, 0.341051568022535170, +0.341004565366826160, 0.340957561858606100, 0.340910557497992150, 0.340863552285101400, 0.340816546220052140, 0.340769539302961550, 0.340722531533947160, 0.340675522913125970, +0.340628513440616400, 0.340581503116535570, 0.340534491941000940, 0.340487479914129700, 0.340440467036040140, 0.340393453306849450, 0.340346438726675080, 0.340299423295634230, +0.340252407013845240, 0.340205389881425240, 0.340158371898491740, 0.340111353065161880, 0.340064333381554120, 0.340017312847785470, 0.339970291463973120, 0.339923269230235470, +0.339876246146689650, 0.339829222213453240, 0.339782197430643310, 0.339735171798378370, 0.339688145316775440, 0.339641117985952150, 0.339594089806025680, 0.339547060777114380, +0.339500030899335450, 0.339453000172806440, 0.339405968597644490, 0.339358936173968060, 0.339311902901894280, 0.339264868781540720, 0.339217833813024620, 0.339170797996464320, +0.339123761331977020, 0.339076723819680290, 0.339029685459691420, 0.338982646252128710, 0.338935606197109330, 0.338888565294750590, 0.338841523545170830, 0.338794480948487240, +0.338747437504817510, 0.338700393214278690, 0.338653348076989320, 0.338606302093066640, 0.338559255262628140, 0.338512207585791150, 0.338465159062673990, 0.338418109693393980, +0.338371059478068670, 0.338324008416815310, 0.338276956509752310, 0.338229903756996960, 0.338182850158666840, 0.338135795714879170, 0.338088740425752430, 0.338041684291403850, +0.337994627311950680, 0.337947569487511310, 0.337900510818202990, 0.337853451304143460, 0.337806390945449840, 0.337759329742240650, 0.337712267694633140, 0.337665204802744980, +0.337618141066693410, 0.337571076486596900, 0.337524011062572680, 0.337476944794738390, 0.337429877683211370, 0.337382809728110080, 0.337335740929551760, 0.337288671287654050, +0.337241600802534290, 0.337194529474310940, 0.337147457303101250, 0.337100384289022500, 0.337053310432193220, 0.337006235732730700, 0.336959160190752500, 0.336912083806376050, +0.336865006579719790, 0.336817928510901030, 0.336770849600037450, 0.336723769847246280, 0.336676689252646160, 0.336629607816354260, 0.336582525538488390, 0.336535442419165780, +0.336488358458504940, 0.336441273656623240, 0.336394188013638350, 0.336347101529667570, 0.336300014204829470, 0.336252926039241340, 0.336205837033020870, 0.336158747186285410, +0.336111656499153480, 0.336064564971742420, 0.336017472604169530, 0.335970379396553390, 0.335923285349011280, 0.335876190461660950, 0.335829094734619750, 0.335781998168006190, +0.335734900761937680, 0.335687802516531910, 0.335640703431906220, 0.335593603508179130, 0.335546502745468100, 0.335499401143890820, 0.335452298703564580, 0.335405195424608000, +0.335358091307138450, 0.335310986351273710, 0.335263880557131020, 0.335216773924829070, 0.335169666454485200, 0.335122558146216780, 0.335075449000142300, 0.335028339016379240, +0.334981228195045390, 0.334934116536257990, 0.334887004040135720, 0.334839890706795930, 0.334792776536356420, 0.334745661528934530, 0.334698545684648960, 0.334651429003617000, +0.334604311485956480, 0.334557193131784720, 0.334510073941220450, 0.334462953914380970, 0.334415833051384110, 0.334368711352347250, 0.334321588817388990, 0.334274465446626810, +0.334227341240178000, 0.334180216198161300, 0.334133090320694050, 0.334085963607894050, 0.334038836059878770, 0.333991707676766780, 0.333944578458675530, 0.333897448405722830, +0.333850317518026130, 0.333803185795704000, 0.333756053238873920, 0.333708919847653720, 0.333661785622160810, 0.333614650562513830, 0.333567514668830220, 0.333520377941227850, +0.333473240379824120, 0.333426101984737710, 0.333378962756086030, 0.333331822693986920, 0.333284681798557860, 0.333237540069917510, 0.333190397508183300, 0.333143254113472680, +0.333096109885904380, 0.333048964825595760, 0.333001818932664730, 0.332954672207228800, 0.332907524649406540, 0.332860376259315470, 0.332813227037073500, 0.332766076982798030, +0.332718926096607750, 0.332671774378620170, 0.332624621828953190, 0.332577468447724180, 0.332530314235051970, 0.332483159191053980, 0.332436003315848050, 0.332388846609551700, +0.332341689072283670, 0.332294530704161430, 0.332247371505302420, 0.332200211475825400, 0.332153050615847820, 0.332105888925487650, 0.332058726404862340, 0.332011563054090630, +0.331964398873290050, 0.331917233862578430, 0.331870068022073310, 0.331822901351893460, 0.331775733852156310, 0.331728565522979860, 0.331681396364481570, 0.331634226376780250, +0.331587055559993290, 0.331539883914238720, 0.331492711439634050, 0.331445538136298010, 0.331398364004348080, 0.331351189043901870, 0.331304013255078080, 0.331256836637994270, +0.331209659192768400, 0.331162480919517890, 0.331115301818361680, 0.331068121889417140, 0.331020941132802340, 0.330973759548634730, 0.330926577137033220, 0.330879393898115160, +0.330832209831998680, 0.330785024938801240, 0.330737839218641690, 0.330690652671637500, 0.330643465297906720, 0.330596277097566840, 0.330549088070736630, 0.330501898217533780, +0.330454707538075710, 0.330407516032481310, 0.330360323700868150, 0.330313130543354150, 0.330265936560056930, 0.330218741751095220, 0.330171546116586720, 0.330124349656649330, +0.330077152371400670, 0.330029954260959550, 0.329982755325443520, 0.329935555564970620, 0.329888354979658400, 0.329841153569625680, 0.329793951334990120, 0.329746748275869690, +0.329699544392381970, 0.329652339684645750, 0.329605134152778760, 0.329557927796898850, 0.329510720617123780, 0.329463512613572260, 0.329416303786362000, 0.329369094135610550, +0.329321883661436830, 0.329274672363958350, 0.329227460243293190, 0.329180247299558970, 0.329133033532874540, 0.329085818943357530, 0.329038603531126020, 0.328991387296297510, +0.328944170238991030, 0.328896952359324040, 0.328849733657414710, 0.328802514133380630, 0.328755293787340700, 0.328708072619412480, 0.328660850629714120, 0.328613627818363230, +0.328566404185478670, 0.328519179731178060, 0.328471954455579140, 0.328424728358800710, 0.328377501440960510, 0.328330273702176540, 0.328283045142566450, 0.328235815762249140, +0.328188585561342340, 0.328141354539964070, 0.328094122698231960, 0.328046890036264970, 0.327999656554180790, 0.327952422252097480, 0.327905187130132610, 0.327857951188405270, +0.327810714427033020, 0.327763476846133990, 0.327716238445825870, 0.327668999226227550, 0.327621759187456730, 0.327574518329631080, 0.327527276652869630, 0.327480034157289880, +0.327432790843010140, 0.327385546710147970, 0.327338301758822340, 0.327291055989150930, 0.327243809401251920, 0.327196561995242940, 0.327149313771243010, 0.327102064729369760, +0.327054814869741360, 0.327007564192475510, 0.326960312697691160, 0.326913060385506050, 0.326865807256038250, 0.326818553309405570, 0.326771298545726900, 0.326724042965119980, +0.326676786567702940, 0.326629529353593520, 0.326582271322910680, 0.326535012475772210, 0.326487752812295750, 0.326440492332600360, 0.326393231036803730, 0.326345968925023990, +0.326298705997378920, 0.326251442253987500, 0.326204177694967510, 0.326156912320437090, 0.326109646130513910, 0.326062379125317050, 0.326015111304964240, 0.325967842669573680, +0.325920573219263100, 0.325873302954151460, 0.325826031874356600, 0.325778759979996610, 0.325731487271189390, 0.325684213748053790, 0.325636939410707700, 0.325589664259268830, +0.325542388293856230, 0.325495111514587600, 0.325447833921581280, 0.325400555514954890, 0.325353276294827580, 0.325305996261317010, 0.325258715414541540, 0.325211433754618810, +0.325164151281667920, 0.325116867995806640, 0.325069583897153180, 0.325022298985825410, 0.324975013261942220, 0.324927726725621590, 0.324880439376981580, 0.324833151216140040, +0.324785862243216090, 0.324738572458327490, 0.324691281861592020, 0.324643990453128750, 0.324596698233055480, 0.324549405201490500, 0.324502111358551610, 0.324454816704357830, +0.324407521239027000, 0.324360224962677410, 0.324312927875426820, 0.324265629977394280, 0.324218331268697700, 0.324171031749455330, 0.324123731419784900, 0.324076430279805590, +0.324029128329635210, 0.323981825569392030, 0.323934521999193810, 0.323887217619159780, 0.323839912429407630, 0.323792606430055310, 0.323745299621221890, 0.323697992003025240, +0.323650683575583580, 0.323603374339014820, 0.323556064293438030, 0.323508753438971060, 0.323461441775732270, 0.323414129303839390, 0.323366816023411660, 0.323319501934566820, +0.323272187037423280, 0.323224871332098870, 0.323177554818712630, 0.323130237497382570, 0.323082919368226860, 0.323035600431363480, 0.322988280686911490, 0.322940960134988850, +0.322893638775713750, 0.322846316609204150, 0.322798993635579180, 0.322751669854956740, 0.322704345267454670, 0.322657019873192170, 0.322609693672287150, 0.322562366664857880, +0.322515038851022280, 0.322467710230899480, 0.322420380804607390, 0.322373050572264400, 0.322325719533988360, 0.322278387689898420, 0.322231055040112510, 0.322183721584748950, +0.322136387323925690, 0.322089052257761850, 0.322041716386375410, 0.321994379709884650, 0.321947042228407590, 0.321899703942063240, 0.321852364850969740, 0.321805024955244820, +0.321757684255007780, 0.321710342750376580, 0.321663000441469450, 0.321615657328404470, 0.321568313411300710, 0.321520968690276190, 0.321473623165449250, 0.321426276836937810, +0.321378929704861150, 0.321331581769337130, 0.321284233030484150, 0.321236883488420170, 0.321189533143264430, 0.321142181995134830, 0.321094830044149740, 0.321047477290427210, +0.321000123734086370, 0.320952769375245250, 0.320905414214021800, 0.320858058250535210, 0.320810701484903480, 0.320763343917244980, 0.320715985547677720, 0.320668626376320930, +0.320621266403292530, 0.320573905628711020, 0.320526544052694260, 0.320479181675361600, 0.320431818496831000, 0.320384454517220860, 0.320337089736649090, 0.320289724155235100, +0.320242357773096790, 0.320194990590352560, 0.320147622607120430, 0.320100253823519640, 0.320052884239668270, 0.320005513855684650, 0.319958142671686820, 0.319910770687794110, +0.319863397904124440, 0.319816024320795810, 0.319768649937927580, 0.319721274755637720, 0.319673898774044730, 0.319626521993266470, 0.319579144413422390, 0.319531766034630460, +0.319484386857009080, 0.319437006880676330, 0.319389626105751500, 0.319342244532352550, 0.319294862160598050, 0.319247478990605900, 0.319200095022495520, 0.319152710256384920, +0.319105324692392560, 0.319057938330636390, 0.319010551171235830, 0.318963163214308950, 0.318915774459973660, 0.318868384908349400, 0.318820994559554150, 0.318773603413706470, +0.318726211470924280, 0.318678818731327030, 0.318631425195032740, 0.318584030862159860, 0.318536635732826480, 0.318489239807151990, 0.318441843085254360, 0.318394445567252100, +0.318347047253263350, 0.318299648143407330, 0.318252248237802240, 0.318204847536566530, 0.318157446039818330, 0.318110043747676870, 0.318062640660260300, 0.318015236777686730, +0.317967832100075450, 0.317920426627544660, 0.317873020360212750, 0.317825613298197860, 0.317778205441619390, 0.317730796790595400, 0.317683387345244430, 0.317635977105684530, +0.317588566072035170, 0.317541154244414370, 0.317493741622940640, 0.317446328207732160, 0.317398913998908290, 0.317351498996587160, 0.317304083200887270, 0.317256666611926750, +0.317209249229824960, 0.317161831054700080, 0.317114412086670180, 0.317066992325854670, 0.317019571772371670, 0.316972150426339750, 0.316924728287877040, 0.316877305357102900, +0.316829881634135560, 0.316782457119093470, 0.316735031812094840, 0.316687605713259050, 0.316640178822704230, 0.316592751140548970, 0.316545322666911380, 0.316497893401910920, +0.316450463345665730, 0.316403032498294430, 0.316355600859915100, 0.316308168430647190, 0.316260735210608820, 0.316213301199918640, 0.316165866398694760, 0.316118430807056710, +0.316070994425122490, 0.316023557253010400, 0.315976119290839850, 0.315928680538729020, 0.315881240996796490, 0.315833800665160370, 0.315786359543940240, 0.315738917633254180, +0.315691474933220810, 0.315644031443958360, 0.315596587165586250, 0.315549142098222660, 0.315501696241986210, 0.315454249596995140, 0.315406802163368800, 0.315359353941225500, +0.315311904930683840, 0.315264455131861960, 0.315217004544879330, 0.315169553169854230, 0.315122101006904850, 0.315074648056150600, 0.315027194317709760, 0.314979739791700910, +0.314932284478242290, 0.314884828377453410, 0.314837371489452400, 0.314789913814358000, 0.314742455352288400, 0.314694996103363040, 0.314647536067700240, 0.314600075245418610, +0.314552613636636340, 0.314505151241472940, 0.314457688060046700, 0.314410224092476210, 0.314362759338879750, 0.314315293799376840, 0.314267827474085660, 0.314220360363124510, +0.314172892466612840, 0.314125423784669010, 0.314077954317411530, 0.314030484064958810, 0.313983013027430310, 0.313935541204944210, 0.313888068597619310, 0.313840595205573840, +0.313793121028927260, 0.313745646067797870, 0.313698170322304400, 0.313650693792565050, 0.313603216478699430, 0.313555738380825730, 0.313508259499062690, 0.313460779833528600, +0.313413299384342980, 0.313365818151624060, 0.313318336135490650, 0.313270853336060970, 0.313223369753454550, 0.313175885387789730, 0.313128400239184810, 0.313080914307759250, +0.313033427593631450, 0.312985940096920050, 0.312938451817743380, 0.312890962756221020, 0.312843472912471220, 0.312795982286612760, 0.312748490878763940, 0.312700998689044330, +0.312653505717572170, 0.312606011964466250, 0.312558517429844920, 0.312511022113827700, 0.312463526016532930, 0.312416029138079310, 0.312368531478585230, 0.312321033038170210, +0.312273533816952660, 0.312226033815050820, 0.312178533032584300, 0.312131031469671470, 0.312083529126431060, 0.312036026002981410, 0.311988522099442110, 0.311941017415931550, +0.311893511952568370, 0.311846005709471020, 0.311798498686759130, 0.311750990884550940, 0.311703482302965240, 0.311655972942120440, 0.311608462802136170, 0.311560951883130710, +0.311513440185222870, 0.311465927708531040, 0.311418414453174750, 0.311370900419272460, 0.311323385606942500, 0.311275870016304520, 0.311228353647476810, 0.311180836500578260, +0.311133318575727180, 0.311085799873043240, 0.311038280392644750, 0.310990760134650600, 0.310943239099179150, 0.310895717286350020, 0.310848194696281550, 0.310800671329092610, +0.310753147184901600, 0.310705622263828140, 0.310658096565990580, 0.310610570091507830, 0.310563042840498180, 0.310515514813081370, 0.310467986009375810, 0.310420456429499840, +0.310372926073573140, 0.310325394941714130, 0.310277863034041590, 0.310230330350674040, 0.310182796891731060, 0.310135262657331050, 0.310087727647592960, 0.310040191862635090, +0.309992655302577140, 0.309945117967537600, 0.309897579857635220, 0.309850040972988460, 0.309802501313717060, 0.309754960879939370, 0.309707419671774340, 0.309659877689340280, +0.309612334932756970, 0.309564791402142820, 0.309517247097616690, 0.309469702019297020, 0.309422156167303510, 0.309374609541754660, 0.309327062142768780, 0.309279513970465710, +0.309231965024963860, 0.309184415306382130, 0.309136864814838870, 0.309089313550453940, 0.309041761513345670, 0.308994208703633030, 0.308946655121434430, 0.308899100766869610, +0.308851545640057010, 0.308803989741115610, 0.308756433070163760, 0.308708875627321300, 0.308661317412706640, 0.308613758426438680, 0.308566198668635880, 0.308518638139417990, +0.308471076838903570, 0.308423514767210970, 0.308375951924460050, 0.308328388310769250, 0.308280823926257440, 0.308233258771043180, 0.308185692845246220, 0.308138126148984950, +0.308090558682378450, 0.308042990445545060, 0.307995421438604640, 0.307947851661675710, 0.307900281114877110, 0.307852709798327410, 0.307805137712146290, 0.307757564856452390, +0.307709991231364550, 0.307662416837001350, 0.307614841673482520, 0.307567265740926580, 0.307519689039452040, 0.307472111569178700, 0.307424533330225070, 0.307376954322710120, +0.307329374546752350, 0.307281794002471580, 0.307234212689986350, 0.307186630609415530, 0.307139047760877750, 0.307091464144492790, 0.307043879760379110, 0.306996294608655800, +0.306948708689441300, 0.306901122002855460, 0.306853534549016820, 0.306805946328044310, 0.306758357340056520, 0.306710767585173290, 0.306663177063513090, 0.306615585775194990, +0.306567993720337490, 0.306520400899060460, 0.306472807311482350, 0.306425212957721850, 0.306377617837898740, 0.306330021952131600, 0.306282425300539400, 0.306234827883240690, +0.306187229700355330, 0.306139630752001960, 0.306092031038299460, 0.306044430559366420, 0.305996829315322790, 0.305949227306287100, 0.305901624532378290, 0.305854020993715000, +0.305806416690417140, 0.305758811622603150, 0.305711205790392180, 0.305663599193902790, 0.305615991833254770, 0.305568383708566820, 0.305520774819957490, 0.305473165167546630, +0.305425554751452830, 0.305377943571795210, 0.305330331628692280, 0.305282718922263880, 0.305235105452628770, 0.305187491219905850, 0.305139876224213790, 0.305092260465672450, +0.305044643944400510, 0.304997026660516920, 0.304949408614140330, 0.304901789805390620, 0.304854170234386490, 0.304806549901246950, 0.304758928806090570, 0.304711306949037250, +0.304663684330205740, 0.304616060949714550, 0.304568436807683640, 0.304520811904231690, 0.304473186239477670, 0.304425559813540250, 0.304377932626539340, 0.304330304678593620, +0.304282675969822170, 0.304235046500343550, 0.304187416270277790, 0.304139785279743450, 0.304092153528859650, 0.304044521017745040, 0.303996887746519560, 0.303949253715301900, +0.303901618924211080, 0.303853983373365780, 0.303806347062885900, 0.303758709992890230, 0.303711072163497300, 0.303663433574827170, 0.303615794226998410, 0.303568154120130160, +0.303520513254341150, 0.303472871629751280, 0.303425229246479190, 0.303377586104644050, 0.303329942204364490, 0.303282297545760530, 0.303234652128950840, 0.303187005954054460, +0.303139359021190210, 0.303091711330477960, 0.303044062882036450, 0.302996413675984730, 0.302948763712441560, 0.302901112991526940, 0.302853461513359570, 0.302805809278058450, +0.302758156285742490, 0.302710502536531480, 0.302662848030544220, 0.302615192767899440, 0.302567536748717110, 0.302519879973115910, 0.302472222441215080, 0.302424564153133180, +0.302376905108990350, 0.302329245308905260, 0.302281584752997050, 0.302233923441384390, 0.302186261374187410, 0.302138598551524750, 0.302090934973515630, 0.302043270640278750, +0.301995605551934050, 0.301947939708600400, 0.301900273110396910, 0.301852605757442270, 0.301804937649856550, 0.301757268787758490, 0.301709599171266830, 0.301661928800501580, +0.301614257675581530, 0.301566585796625870, 0.301518913163753290, 0.301471239777083840, 0.301423565636736280, 0.301375890742829830, 0.301328215095483240, 0.301280538694816520, +0.301232861540948470, 0.301185183633998210, 0.301137504974084650, 0.301089825561327680, 0.301042145395846170, 0.300994464477759290, 0.300946782807185840, 0.300899100384245890, +0.300851417209058110, 0.300803733281741430, 0.300756048602415840, 0.300708363171200090, 0.300660676988213470, 0.300612990053574670, 0.300565302367403860, 0.300517613929819790, +0.300469924740941700, 0.300422234800888370, 0.300374544109779870, 0.300326852667735010, 0.300279160474873020, 0.300231467531312750, 0.300183773837174150, 0.300136079392576140, +0.300088384197637950, 0.300040688252478370, 0.299992991557217540, 0.299945294111974180, 0.299897595916867600, 0.299849896972016580, 0.299802197277541260, 0.299754496833560480, +0.299706795640192980, 0.299659093697558940, 0.299611391005777160, 0.299563687564966930, 0.299515983375246990, 0.299468278436737570, 0.299420572749557470, 0.299372866313825870, +0.299325159129661730, 0.299277451197185130, 0.299229742516514850, 0.299182033087770250, 0.299134322911070170, 0.299086611986534630, 0.299038900314282650, 0.298991187894433350, +0.298943474727105700, 0.298895760812419750, 0.298848046150494430, 0.298800330741448570, 0.298752614585402250, 0.298704897682474440, 0.298657180032784410, 0.298609461636450970, +0.298561742493594300, 0.298514022604333300, 0.298466301968787210, 0.298418580587074990, 0.298370858459316710, 0.298323135585631280, 0.298275411966137990, 0.298227687600955800, +0.298179962490204790, 0.298132236634003840, 0.298084510032472330, 0.298036782685729140, 0.297989054593894410, 0.297941325757087040, 0.297893596175425880, 0.297845865849031220, +0.297798134778021860, 0.297750402962517200, 0.297702670402636090, 0.297654937098498720, 0.297607203050223980, 0.297559468257931280, 0.297511732721739470, 0.297463996441768740, +0.297416259418138040, 0.297368521650966670, 0.297320783140373580, 0.297273043886478960, 0.297225303889401770, 0.297177563149261250, 0.297129821666176460, 0.297082079440267490, +0.297034336471653340, 0.296986592760452920, 0.296938848306786460, 0.296891103110772880, 0.296843357172531520, 0.296795610492181340, 0.296747863069842580, 0.296700114905634140, +0.296652365999675430, 0.296604616352085400, 0.296556865962984200, 0.296509114832490870, 0.296461362960724780, 0.296413610347804830, 0.296365856993851260, 0.296318102898983080, +0.296270348063319590, 0.296222592486979850, 0.296174836170084050, 0.296127079112751160, 0.296079321315100560, 0.296031562777251230, 0.295983803499323460, 0.295936043481436150, +0.295888282723708320, 0.295840521226260200, 0.295792758989210760, 0.295744996012679400, 0.295697232296785180, 0.295649467841648310, 0.295601702647387720, 0.295553936714122890, +0.295506170041972830, 0.295458402631057710, 0.295410634481496630, 0.295362865593408960, 0.295315095966913690, 0.295267325602131090, 0.295219554499180190, 0.295171782658180390, +0.295124010079250760, 0.295076236762511490, 0.295028462708081640, 0.294980687916080180, 0.294932912386627440, 0.294885136119842410, 0.294837359115844580, 0.294789581374752920, +0.294741802896687670, 0.294694023681768000, 0.294646243730113220, 0.294598463041842400, 0.294550681617075870, 0.294502899455932610, 0.294455116558532130, 0.294407332924993440, +0.294359548555436780, 0.294311763449981330, 0.294263977608746400, 0.294216191031851150, 0.294168403719415830, 0.294120615671559500, 0.294072826888401250, 0.294025037370061300, +0.293977247116658790, 0.293929456128313120, 0.293881664405143410, 0.293833871947270010, 0.293786078754811890, 0.293738284827888550, 0.293690490166619080, 0.293642694771123810, +0.293594898641521830, 0.293547101777932580, 0.293499304180475150, 0.293451505849269930, 0.293403706784435890, 0.293355906986092600, 0.293308106454359120, 0.293260305189355810, +0.293212503191201730, 0.293164700460016410, 0.293116896995918860, 0.293069092799029540, 0.293021287869467460, 0.292973482207351750, 0.292925675812802770, 0.292877868685939620, +0.292830060826881730, 0.292782252235748330, 0.292734442912659710, 0.292686632857734940, 0.292638822071093650, 0.292591010552854860, 0.292543198303138910, 0.292495385322065040, +0.292447571609752650, 0.292399757166320940, 0.292351941991890300, 0.292304126086579740, 0.292256309450508900, 0.292208492083796840, 0.292160673986563980, 0.292112855158929430, +0.292065035601012320, 0.292017215312933060, 0.291969394294810720, 0.291921572546764980, 0.291873750068914810, 0.291825926861380700, 0.291778102924281800, 0.291730278257737620, +0.291682452861867340, 0.291634626736791300, 0.291586799882628760, 0.291538972299499210, 0.291491143987521790, 0.291443314946816910, 0.291395485177503800, 0.291347654679701920, +0.291299823453530500, 0.291251991499109960, 0.291204158816559420, 0.291156325405998060, 0.291108491267546340, 0.291060656401323340, 0.291012820807448720, 0.290964984486041690, +0.290917147437222520, 0.290869309661110520, 0.290821471157825310, 0.290773631927485900, 0.290725791970212870, 0.290677951286125390, 0.290630109875342990, 0.290582267737984960, +0.290534424874171580, 0.290486581284022220, 0.290438736967656370, 0.290390891925193300, 0.290343046156753380, 0.290295199662455820, 0.290247352442419890, 0.290199504496765960, +0.290151655825613310, 0.290103806429081510, 0.290055956307289750, 0.290008105460358550, 0.289960253888407070, 0.289912401591554960, 0.289864548569921440, 0.289816694823626930, +0.289768840352790710, 0.289720985157532360, 0.289673129237971170, 0.289625272594227550, 0.289577415226420780, 0.289529557134670430, 0.289481698319095810, 0.289433838779817320, +0.289385978516954250, 0.289338117530626270, 0.289290255820952520, 0.289242393388053580, 0.289194530232048660, 0.289146666353056970, 0.289098801751199060, 0.289050936426594130, +0.289003070379361900, 0.288955203609621510, 0.288907336117493590, 0.288859467903097300, 0.288811598966552340, 0.288763729307977950, 0.288715858927494680, 0.288667987825221740, +0.288620116001278850, 0.288572243455785250, 0.288524370188861460, 0.288476496200626710, 0.288428621491200800, 0.288380746060702850, 0.288332869909253440, 0.288284993036971910, +0.288237115443977450, 0.288189237130390630, 0.288141358096330740, 0.288093478341917400, 0.288045597867269960, 0.287997716672508950, 0.287949834757753650, 0.287901952123123810, +0.287854068768738590, 0.287806184694718690, 0.287758299901183290, 0.287710414388252180, 0.287662528156044540, 0.287614641204681050, 0.287566753534280960, 0.287518865144963940, +0.287470976036849400, 0.287423086210057800, 0.287375195664708480, 0.287327304400920800, 0.287279412418815220, 0.287231519718511130, 0.287183626300128280, 0.287135732163785910, +0.287087837309604630, 0.287039941737703750, 0.286992045448203000, 0.286944148441221740, 0.286896250716880570, 0.286848352275298700, 0.286800453116596020, 0.286752553240891720, +0.286704652648306470, 0.286656751338959630, 0.286608849312970870, 0.286560946570459610, 0.286513043111546350, 0.286465138936350510, 0.286417234044991860, 0.286369328437589670, +0.286321422114264530, 0.286273515075135880, 0.286225607320323040, 0.286177698849946590, 0.286129789664125890, 0.286081879762980720, 0.286033969146630430, 0.285986057815195590, +0.285938145768795670, 0.285890233007550400, 0.285842319531579070, 0.285794405341002370, 0.285746490435939690, 0.285698574816510730, 0.285650658482834940, 0.285602741435032950, +0.285554823673224100, 0.285506905197528190, 0.285458986008064570, 0.285411066104953930, 0.285363145488315590, 0.285315224158268990, 0.285267302114934780, 0.285219379358432280, +0.285171455888881320, 0.285123531706401310, 0.285075606811112940, 0.285027681203135490, 0.284979754882588860, 0.284931827849592420, 0.284883900104266840, 0.284835971646731520, +0.284788042477106260, 0.284740112595510460, 0.284692182002064810, 0.284644250696888700, 0.284596318680101930, 0.284548385951823970, 0.284500452512175480, 0.284452518361275890, +0.284404583499244520, 0.284356647926202130, 0.284308711642268120, 0.284260774647562390, 0.284212836942204230, 0.284164898526314440, 0.284116959400012360, 0.284069019563417900, +0.284021079016650470, 0.283973137759830800, 0.283925195793078230, 0.283877253116512740, 0.283829309730253610, 0.283781365634421690, 0.283733420829136330, 0.283685475314517430, +0.283637529090684400, 0.283589582157757980, 0.283541634515857620, 0.283493686165102730, 0.283445737105614050, 0.283397787337511090, 0.283349836860913580, 0.283301885675941060, +0.283253933782714300, 0.283205981181352650, 0.283158027871976080, 0.283110073854704050, 0.283062119129657170, 0.283014163696955090, 0.282966207556717530, 0.282918250709064070, +0.282870293154115380, 0.282822334891990930, 0.282774375922810680, 0.282726416246694090, 0.282678455863761830, 0.282630494774133490, 0.282582532977928850, 0.282534570475267530, +0.282486607266270120, 0.282438643351056230, 0.282390678729745330, 0.282342713402458150, 0.282294747369314150, 0.282246780630433350, 0.282198813185935090, 0.282150845035940290, +0.282102876180568340, 0.282054906619939210, 0.282006936354172400, 0.281958965383388660, 0.281910993707707500, 0.281863021327248890, 0.281815048242132270, 0.281767074452478450, +0.281719099958406990, 0.281671124760037750, 0.281623148857490240, 0.281575172250885350, 0.281527194940342450, 0.281479216925981210, 0.281431238207922320, 0.281383258786285340, +0.281335278661190240, 0.281287297832756470, 0.281239316301104880, 0.281191334066355050, 0.281143351128626820, 0.281095367488039870, 0.281047383144714840, 0.280999398098771390, +0.280951412350329440, 0.280903425899508560, 0.280855438746429540, 0.280807450891211900, 0.280759462333975640, 0.280711473074840290, 0.280663483113926690, 0.280615492451354360, +0.280567501087242930, 0.280519509021713130, 0.280471516254884530, 0.280423522786877210, 0.280375528617810620, 0.280327533747805610, 0.280279538176981810, 0.280231541905459130, +0.280183544933357230, 0.280135547260796810, 0.280087548887897550, 0.280039549814779460, 0.279991550041562070, 0.279943549568366150, 0.279895548395311440, 0.279847546522517810, +0.279799543950104920, 0.279751540678193580, 0.279703536706903400, 0.279655532036354350, 0.279607526666666050, 0.279559520597959410, 0.279511513830353890, 0.279463506363969220, +0.279415498198926190, 0.279367489335344390, 0.279319479773343930, 0.279271469513044270, 0.279223458554566430, 0.279175446898029870, 0.279127434543554760, 0.279079421491260640, +0.279031407741268330, 0.278983393293697530, 0.278935378148668260, 0.278887362306300120, 0.278839345766713990, 0.278791328530029470, 0.278743310596366700, 0.278695291965845190, +0.278647272638585850, 0.278599252614708360, 0.278551231894332290, 0.278503210477578590, 0.278455188364566840, 0.278407165555417110, 0.278359142050249090, 0.278311117849183610, +0.278263092952340310, 0.278215067359839310, 0.278167041071800240, 0.278119014088343940, 0.278070986409590160, 0.278022958035658850, 0.277974928966669750, 0.277926899202743770, +0.277878868744000530, 0.277830837590560100, 0.277782805742542220, 0.277734773200067670, 0.277686739963256210, 0.277638706032227510, 0.277590671407102420, 0.277542636088000670, +0.277494600075042340, 0.277446563368347050, 0.277398525968035830, 0.277350487874228280, 0.277302449087044490, 0.277254409606604140, 0.277206369433028230, 0.277158328566436410, +0.277110287006948730, 0.277062244754684880, 0.277014201809765880, 0.276966158172311410, 0.276918113842441470, 0.276870068820275870, 0.276822023105935510, 0.276773976699540130, +0.276725929601209790, 0.276677881811064170, 0.276629833329224250, 0.276581784155809810, 0.276533734290940470, 0.276485683734737200, 0.276437632487319730, 0.276389580548808190, +0.276341527919322260, 0.276293474598982900, 0.276245420587909910, 0.276197365886223340, 0.276149310494042950, 0.276101254411489690, 0.276053197638683300, 0.276005140175743900, +0.275957082022791230, 0.275909023179946310, 0.275860963647328820, 0.275812903425058930, 0.275764842513256340, 0.275716780912042050, 0.275668718621535860, 0.275620655641857390, +0.275572591973127780, 0.275524527615466640, 0.275476462568994160, 0.275428396833830140, 0.275380330410095520, 0.275332263297910110, 0.275284195497394020, 0.275236127008667010, +0.275188057831850130, 0.275139987967063070, 0.275091917414426070, 0.275043846174058860, 0.274995774246082400, 0.274947701630616600, 0.274899628327781480, 0.274851554337696870, +0.274803479660483800, 0.274755404296262050, 0.274707328245151370, 0.274659251507272770, 0.274611174082746050, 0.274563095971691370, 0.274515017174228550, 0.274466937690478640, +0.274418857520561330, 0.274370776664596920, 0.274322695122705130, 0.274274612895007040, 0.274226529981622390, 0.274178446382671410, 0.274130362098273910, 0.274082277128550930, +0.274034191473622290, 0.273986105133608100, 0.273938018108628280, 0.273889930398803830, 0.273841842004254540, 0.273793752925100220, 0.273745663161461930, 0.273697572713459510, +0.273649481581213110, 0.273601389764842660, 0.273553297264469090, 0.273505204080212340, 0.273457110212192540, 0.273409015660529500, 0.273360920425344430, 0.273312824506756980, +0.273264727904887540, 0.273216630619855790, 0.273168532651782920, 0.273120434000788730, 0.273072334666993490, 0.273024234650516890, 0.272976133951480240, 0.272928032570003140, +0.272879930506206070, 0.272831827760208650, 0.272783724332132160, 0.272735620222096350, 0.272687515430221020, 0.272639409956627330, 0.272591303801435150, 0.272543196964764700, +0.272495089446735840, 0.272446981247469690, 0.272398872367086040, 0.272350762805705250, 0.272302652563447100, 0.272254541640432780, 0.272206430036782080, 0.272158317752615340, +0.272110204788052310, 0.272062091143214280, 0.272013976818220930, 0.271965861813192710, 0.271917746128249370, 0.271869629763512140, 0.271821512719100770, 0.271773394995135250, +0.271725276591736620, 0.271677157509024820, 0.271629037747120160, 0.271580917306142420, 0.271532796186212840, 0.271484674387451270, 0.271436551909978010, 0.271388428753912950, +0.271340304919377270, 0.271292180406490780, 0.271244055215373870, 0.271195929346146390, 0.271147802798929530, 0.271099675573843120, 0.271051547671007530, 0.271003419090542650, +0.270955289832569670, 0.270907159897208480, 0.270859029284578890, 0.270810897994802240, 0.270762766027998310, 0.270714633384287420, 0.270666500063789560, 0.270618366066625870, +0.270570231392916300, 0.270522096042781100, 0.270473960016340280, 0.270425823313714950, 0.270377685935025090, 0.270329547880390990, 0.270281409149932590, 0.270233269743771150, +0.270185129662026460, 0.270136988904819020, 0.270088847472268630, 0.270040705364496540, 0.269992562581622740, 0.269944419123767490, 0.269896274991050730, 0.269848130183593770, +0.269799984701516500, 0.269751838544938780, 0.269703691713981950, 0.269655544208765860, 0.269607396029410920, 0.269559247176037020, 0.269511097648765460, 0.269462947447716210, +0.269414796573009540, 0.269366645024765430, 0.269318492803105160, 0.269270339908148640, 0.269222186340016320, 0.269174032098828060, 0.269125877184705150, 0.269077721597767550, +0.269029565338135660, 0.268981408405929430, 0.268933250801270120, 0.268885092524277670, 0.268836933575072050, 0.268788773953774540, 0.268740613660505060, 0.268692452695384050, +0.268644291058531490, 0.268596128750068660, 0.268547965770115530, 0.268499802118792430, 0.268451637796219390, 0.268403472802517700, 0.268355307137807360, 0.268307140802208690, +0.268258973795841790, 0.268210806118827860, 0.268162637771286960, 0.268114468753339390, 0.268066299065105260, 0.268018128706705830, 0.267969957678261040, 0.267921785979890970, +0.267873613611716850, 0.267825440573858650, 0.267777266866436940, 0.267729092489571550, 0.267680917443383900, 0.267632741727993950, 0.267584565343522150, 0.267536388290088470, +0.267488210567814300, 0.267440032176819550, 0.267391853117224740, 0.267343673389149880, 0.267295492992716270, 0.267247311928043910, 0.267199130195253320, 0.267150947794464410, +0.267102764725798580, 0.267054580989375840, 0.267006396585316220, 0.266958211513741050, 0.266910025774770350, 0.266861839368524590, 0.266813652295123770, 0.266765464554689300, +0.266717276147341140, 0.266669087073199750, 0.266620897332385250, 0.266572706925018940, 0.266524515851220890, 0.266476324111111500, 0.266428131704810890, 0.266379938632440420, +0.266331744894120040, 0.266283550489970320, 0.266235355420111290, 0.266187159684664330, 0.266138963283749420, 0.266090766217487170, 0.266042568485997500, 0.265994370089401910, +0.265946171027820370, 0.265897971301372940, 0.265849770910181030, 0.265801569854364710, 0.265753368134044430, 0.265705165749340330, 0.265656962700373760, 0.265608758987264770, +0.265560554610133840, 0.265512349569101140, 0.265464143864287960, 0.265415937495814490, 0.265367730463801130, 0.265319522768368010, 0.265271314409636530, 0.265223105387726700, +0.265174895702759210, 0.265126685354853950, 0.265078474344132450, 0.265030262670714780, 0.264982050334721050, 0.264933837336272570, 0.264885623675489510, 0.264837409352492390, +0.264789194367401340, 0.264740978720337690, 0.264692762411421640, 0.264644545440773650, 0.264596327808513890, 0.264548109514763760, 0.264499890559643290, 0.264451670943273150, +0.264403450665773370, 0.264355229727265440, 0.264307008127869390, 0.264258785867705850, 0.264210562946894880, 0.264162339365557940, 0.264114115123815160, 0.264065890221786670, +0.264017664659593920, 0.263969438437356930, 0.263921211555196380, 0.263872984013232390, 0.263824755811586380, 0.263776526950378450, 0.263728297429729200, 0.263680067249758790, +0.263631836410588630, 0.263583604912338900, 0.263535372755130120, 0.263487139939082520, 0.263438906464317450, 0.263390672330955140, 0.263342437539116180, 0.263294202088920680, +0.263245965980490100, 0.263197729213944580, 0.263149491789404780, 0.263101253706990780, 0.263053014966824090, 0.263004775569024910, 0.262956535513713290, 0.262908294801010800, +0.262860053431037580, 0.262811811403914190, 0.262763568719760860, 0.262715325378699070, 0.262667081380848930, 0.262618836726331070, 0.262570591415265730, 0.262522345447774310, +0.262474098823977040, 0.262425851543994500, 0.262377603607946930, 0.262329355015955780, 0.262281105768141230, 0.262232855864623970, 0.262184605305524070, 0.262136354090963140, +0.262088102221061270, 0.262039849695938740, 0.261991596515717020, 0.261943342680516330, 0.261895088190457260, 0.261846833045660030, 0.261798577246246170, 0.261750320792335840, +0.261702063684049690, 0.261653805921508000, 0.261605547504832230, 0.261557288434142550, 0.261509028709559670, 0.261460768331203800, 0.261412507299196410, 0.261364245613657790, +0.261315983274708510, 0.261267720282468860, 0.261219456637060370, 0.261171192338603200, 0.261122927387217650, 0.261074661783025190, 0.261026395526146040, 0.260978128616700940, +0.260929861054810090, 0.260881592840595030, 0.260833323974175970, 0.260785054455673630, 0.260736784285208190, 0.260688513462901230, 0.260640241988872980, 0.260591969863244120, +0.260543697086134950, 0.260495423657666920, 0.260447149577960340, 0.260398874847135920, 0.260350599465313800, 0.260302323432615720, 0.260254046749161750, 0.260205769415072290, +0.260157491430468790, 0.260109212795471560, 0.260060933510201320, 0.260012653574778320, 0.259964372989324120, 0.259916091753958970, 0.259867809868803590, 0.259819527333978280, +0.259771244149604560, 0.259722960315802720, 0.259674675832693490, 0.259626390700397170, 0.259578104919035270, 0.259529818488728140, 0.259481531409596400, 0.259433243681760460, +0.259384955305341840, 0.259336666280460810, 0.259288376607238080, 0.259240086285794040, 0.259191795316250200, 0.259143503698726850, 0.259095211433344350, 0.259046918520224210, +0.258998624959486780, 0.258950330751252790, 0.258902035895642530, 0.258853740392777640, 0.258805444242778400, 0.258757147445765560, 0.258708850001859390, 0.258660551911181540, +0.258612253173852280, 0.258563953789992420, 0.258515653759722240, 0.258467353083163380, 0.258419051760436110, 0.258370749791661190, 0.258322447176959010, 0.258274143916451150, +0.258225840010257890, 0.258177535458499590, 0.258129230261297920, 0.258080924418773170, 0.258032617931046090, 0.257984310798237030, 0.257936003020467650, 0.257887694597858210, +0.257839385530529600, 0.257791075818602060, 0.257742765462197270, 0.257694454461435570, 0.257646142816437720, 0.257597830527324100, 0.257549517594216350, 0.257501204017234750, +0.257452889796500160, 0.257404574932132920, 0.257356259424254720, 0.257307943272985840, 0.257259626478446630, 0.257211309040758840, 0.257162990960042750, 0.257114672236419210, +0.257066352870008510, 0.257018032860932390, 0.256969712209311200, 0.256921390915265670, 0.256873068978916320, 0.256824746400384660, 0.256776423179791160, 0.256728099317256600, +0.256679774812901380, 0.256631449666847140, 0.256583123879214230, 0.256534797450123590, 0.256486470379695460, 0.256438142668051650, 0.256389814315312440, 0.256341485321598670, +0.256293155687030820, 0.256244825411730440, 0.256196494495818050, 0.256148162939414000, 0.256099830742639920, 0.256051497905616320, 0.256003164428463940, 0.255954830311303230, +0.255906495554255880, 0.255858160157442280, 0.255809824120983300, 0.255761487444999270, 0.255713150129611990, 0.255664812174941860, 0.255616473581109670, 0.255568134348235890, +0.255519794476442190, 0.255471453965849030, 0.255423112816577200, 0.255374771028747170, 0.255326428602480620, 0.255278085537898050, 0.255229741835119760, 0.255181397494267600, +0.255133052515461920, 0.255084706898823680, 0.255036360644473160, 0.254988013752532220, 0.254939666223121200, 0.254891318056361060, 0.254842969252372150, 0.254794619811276270, +0.254746269733193860, 0.254697919018245730, 0.254649567666552390, 0.254601215678235570, 0.254552863053415730, 0.254504509792213730, 0.254456155894750010, 0.254407801361146320, +0.254359446191523120, 0.254311090386000920, 0.254262733944701390, 0.254214376867745010, 0.254166019155252720, 0.254117660807344940, 0.254069301824143450, 0.254020942205768650, +0.253972581952341570, 0.253924221063982550, 0.253875859540813430, 0.253827497382954680, 0.253779134590527140, 0.253730771163651390, 0.253682407102449100, 0.253634042407040850, +0.253585677077547420, 0.253537311114089390, 0.253488944516788550, 0.253440577285765300, 0.253392209421140210, 0.253343840923035020, 0.253295471791570190, 0.253247102026866730, +0.253198731629045050, 0.253150360598226990, 0.253101988934533060, 0.253053616638084120, 0.253005243709000680, 0.252956870147404640, 0.252908495953416360, 0.252860121127156830, +0.252811745668746650, 0.252763369578307470, 0.252714992855959890, 0.252666615501824790, 0.252618237516022750, 0.252569858898675560, 0.252521479649903680, 0.252473099769828120, +0.252424719258569410, 0.252376338116249320, 0.252327956342988380, 0.252279573938907100, 0.252231190904127320, 0.252182807238769570, 0.252134422942954790, 0.252086038016803570, +0.252037652460437630, 0.251989266273977610, 0.251940879457544400, 0.251892492011258520, 0.251844103935241930, 0.251795715229615020, 0.251747325894498830, 0.251698935930013860, +0.251650545336282060, 0.251602154113423850, 0.251553762261560230, 0.251505369780811780, 0.251456976671300400, 0.251408582933146500, 0.251360188566470740, 0.251311793571394990, +0.251263397948039700, 0.251215001696525940, 0.251166604816974230, 0.251118207309506460, 0.251069809174243150, 0.251021410411305320, 0.250973011020813540, 0.250924611002889650, +0.250876210357654230, 0.250827809085228280, 0.250779407185732440, 0.250731004659288440, 0.250682601506016960, 0.250634197726038950, 0.250585793319475060, 0.250537388286447060, +0.250488982627075640, 0.250440576341481310, 0.250392169429785980, 0.250343761892110220, 0.250295353728575090, 0.250246944939301110, 0.250198535524410180, 0.250150125484022930, +0.250101714818260380, 0.250053303527243090, 0.250004891611092960, 0.249956479069930650, 0.249908065903877120, 0.249859652113053000, 0.249811237697580150, 0.249762822657579240, +0.249714406993171270, 0.249665990704476840, 0.249617573791617860, 0.249569156254714960, 0.249520738093889170, 0.249472319309261090, 0.249423899900952650, 0.249375479869084450, +0.249327059213777120, 0.249278637935152590, 0.249230216033331450, 0.249181793508434780, 0.249133370360583200, 0.249084946589898630, 0.249036522196501660, 0.248988097180513430, +0.248939671542054490, 0.248891245281246810, 0.248842818398211040, 0.248794390893068210, 0.248745962765938940, 0.248697534016945220, 0.248649104646207680, 0.248600674653847360, +0.248552244039984940, 0.248503812804742320, 0.248455380948240180, 0.248406948470599160, 0.248358515371941200, 0.248310081652386940, 0.248261647312057470, 0.248213212351073460, +0.248164776769556870, 0.248116340567628320, 0.248067903745408910, 0.248019466303019330, 0.247971028240581510, 0.247922589558216110, 0.247874150256044230, 0.247825710334186540, +0.247777269792765040, 0.247728828631900350, 0.247680386851713560, 0.247631944452325420, 0.247583501433857820, 0.247535057796431480, 0.247486613540167040, 0.247438168665186530, +0.247389723171610560, 0.247341277059560330, 0.247292830329156440, 0.247244382980520930, 0.247195935013774430, 0.247147486429038110, 0.247099037226432640, 0.247050587406080020, +0.247002136968100920, 0.246953685912616490, 0.246905234239747420, 0.246856781949615660, 0.246808329042341980, 0.246759875518047460, 0.246711421376852810, 0.246662966618880070, +0.246614511244249910, 0.246566055253083010, 0.246517598645501430, 0.246469141421625850, 0.246420683581577400, 0.246372225125476820, 0.246323766053446110, 0.246275306365605990, +0.246226846062077590, 0.246178385142981650, 0.246129923608440190, 0.246081461458573900, 0.246032998693503980, 0.245984535313351130, 0.245936071318237360, 0.245887606708283410, +0.245839141483610440, 0.245790675644339210, 0.245742209190591700, 0.245693742122488650, 0.245645274440151270, 0.245596806143700270, 0.245548337233257700, 0.245499867708944270, +0.245451397570880750, 0.245402926819189150, 0.245354455453990260, 0.245305983475405220, 0.245257510883554770, 0.245209037678561000, 0.245160563860544630, 0.245112089429626840, +0.245063614385928390, 0.245015138729571340, 0.244966662460676470, 0.244918185579364930, 0.244869708085757480, 0.244821229979976180, 0.244772751262141850, 0.244724271932375610, +0.244675791990798280, 0.244627311437531890, 0.244578830272697200, 0.244530348496415030, 0.244481866108807400, 0.244433383109995130, 0.244384899500099400, 0.244336415279240960, +0.244287930447541930, 0.244239445005123100, 0.244190958952105630, 0.244142472288610330, 0.244093985014759290, 0.244045497130673280, 0.243997008636473530, 0.243948519532280830, +0.243900029818217260, 0.243851539494403640, 0.243803048560961130, 0.243754557018010580, 0.243706064865674090, 0.243657572104072410, 0.243609078733326380, 0.243560584753558100, +0.243512090164888340, 0.243463594967438360, 0.243415099161328970, 0.243366602746682230, 0.243318105723619030, 0.243269608092260530, 0.243221109852727600, 0.243172611005142310, +0.243124111549625520, 0.243075611486298420, 0.243027110815281860, 0.242978609536697980, 0.242930107650667550, 0.242881605157311890, 0.242833102056751740, 0.242784598349109290, +0.242736094034505360, 0.242687589113061150, 0.242639083584897580, 0.242590577450136710, 0.242542070708899380, 0.242493563361306480, 0.242445055407480100, 0.242396546847541060, +0.242348037681610650, 0.242299527909809710, 0.242251017532260420, 0.242202506549083570, 0.242153994960400440, 0.242105482766331900, 0.242056969967000070, 0.242008456562525840, +0.241959942553030440, 0.241911427938634790, 0.241862912719460980, 0.241814396895629890, 0.241765880467262800, 0.241717363434480580, 0.241668845797405380, 0.241620327556158090, +0.241571808710859540, 0.241523289261631880, 0.241474769208596010, 0.241426248551873220, 0.241377727291584350, 0.241329205427851630, 0.241280682960795880, 0.241232159890538420, +0.241183636217200150, 0.241135111940903200, 0.241086587061768500, 0.241038061579917310, 0.240989535495470530, 0.240941008808550320, 0.240892481519277640, 0.240843953627773720, +0.240795425134159500, 0.240746896038557150, 0.240698366341087540, 0.240649836041871600, 0.240601305141031510, 0.240552773638688130, 0.240504241534962830, 0.240455708829976520, +0.240407175523851320, 0.240358641616708220, 0.240310107108668510, 0.240261571999853100, 0.240213036290384180, 0.240164499980382670, 0.240115963069969930, 0.240067425559266830, +0.240018887448395610, 0.239970348737477160, 0.239921809426632850, 0.239873269515983560, 0.239824729005651550, 0.239776187895757720, 0.239727646186423000, 0.239679103877769580, +0.239630560969918390, 0.239582017462990820, 0.239533473357107760, 0.239484928652391430, 0.239436383348962810, 0.239387837446943220, 0.239339290946453620, 0.239290743847616200, +0.239242196150551920, 0.239193647855382160, 0.239145098962227850, 0.239096549471211230, 0.239047999382453250, 0.238999448696075260, 0.238950897412198190, 0.238902345530944330, +0.238853793052434590, 0.238805239976790400, 0.238756686304132660, 0.238708132034583630, 0.238659577168264280, 0.238611021705295550, 0.238562465645799690, 0.238513908989897690, +0.238465351737710880, 0.238416793889360300, 0.238368235444968160, 0.238319676404655400, 0.238271116768543480, 0.238222556536753340, 0.238173995709407200, 0.238125434286626110, +0.238076872268531410, 0.238028309655244130, 0.237979746446886460, 0.237931182643579460, 0.237882618245444520, 0.237834053252602570, 0.237785487665175900, 0.237736921483285540, +0.237688354707052460, 0.237639787336598910, 0.237591219372045890, 0.237542650813514810, 0.237494081661126680, 0.237445511915003790, 0.237396941575267110, 0.237348370642038060, +0.237299799115437670, 0.237251226995588200, 0.237202654282610700, 0.237154080976626520, 0.237105507077756740, 0.237056932586123590, 0.237008357501848150, 0.236959781825051790, +0.236911205555855540, 0.236862628694381710, 0.236814051240751330, 0.236765473195085370, 0.236716894557506160, 0.236668315328134730, 0.236619735507092480, 0.236571155094500500, +0.236522574090481020, 0.236473992495155130, 0.236425410308644250, 0.236376827531069420, 0.236328244162552960, 0.236279660203215890, 0.236231075653179660, 0.236182490512565320, +0.236133904781495180, 0.236085318460090260, 0.236036731548472050, 0.235988144046761610, 0.235939555955081200, 0.235890967273551940, 0.235842378002295240, 0.235793788141432150, +0.235745197691085040, 0.235696606651374930, 0.235648015022422890, 0.235599422804351230, 0.235550829997281000, 0.235502236601333710, 0.235453642616630380, 0.235405048043293400, +0.235356452881443800, 0.235307857131203060, 0.235259260792692220, 0.235210663866033680, 0.235162066351348480, 0.235113468248758120, 0.235064869558383650, 0.235016270280347470, +0.234967670414770570, 0.234919069961774530, 0.234870468921480360, 0.234821867294010440, 0.234773265079485870, 0.234724662278027710, 0.234676058889758320, 0.234627454914798780, +0.234578850353270580, 0.234530245205294860, 0.234481639470993960, 0.234433033150488940, 0.234384426243901350, 0.234335818751352260, 0.234287210672964040, 0.234238602008857790, +0.234189992759155060, 0.234141382923976900, 0.234092772503445730, 0.234044161497682620, 0.233995549906809100, 0.233946937730946300, 0.233898324970216560, 0.233849711624741020, +0.233801097694640750, 0.233752483180038190, 0.233703868081054420, 0.233655252397810960, 0.233606636130428950, 0.233558019279030800, 0.233509401843737590, 0.233460783824670860, +0.233412165221951740, 0.233363546035702670, 0.233314926266044690, 0.233266305913099440, 0.233217684976987970, 0.233169063457832700, 0.233120441355754800, 0.233071818670875790, +0.233023195403316810, 0.232974571553200250, 0.232925947120647290, 0.232877322105779020, 0.232828696508717880, 0.232780070329584980, 0.232731443568501920, 0.232682816225589810, +0.232634188300971100, 0.232585559794766920, 0.232536930707098830, 0.232488301038087990, 0.232439670787856820, 0.232391039956526490, 0.232342408544218530, 0.232293776551054150, +0.232245143977155730, 0.232196510822644480, 0.232147877087641950, 0.232099242772269290, 0.232050607876648940, 0.232001972400902090, 0.231953336345150310, 0.231904699709514740, +0.231856062494117860, 0.231807424699080830, 0.231758786324524790, 0.231710147370572240, 0.231661507837344290, 0.231612867724962620, 0.231564227033548310, 0.231515585763223870, +0.231466943914110460, 0.231418301486329720, 0.231369658480002770, 0.231321014895252110, 0.231272370732198920, 0.231223725990964770, 0.231175080671670920, 0.231126434774439780, +0.231077788299392540, 0.231029141246650860, 0.230980493616335880, 0.230931845408570090, 0.230883196623474670, 0.230834547261170860, 0.230785897321781120, 0.230737246805426620, +0.230688595712228990, 0.230639944042309450, 0.230591291795790490, 0.230542638972793280, 0.230493985573439500, 0.230445331597850300, 0.230396677046148220, 0.230348021918454440, +0.230299366214890610, 0.230250709935577920, 0.230202053080638900, 0.230153395650194740, 0.230104737644367120, 0.230056079063277190, 0.230007419907047510, 0.229958760175799280, +0.229910099869653690, 0.229861438988733320, 0.229812777533159320, 0.229764115503053400, 0.229715452898536760, 0.229666789719731900, 0.229618125966760090, 0.229569461639742960, +0.229520796738801710, 0.229472131264058940, 0.229423465215635840, 0.229374798593654060, 0.229326131398234850, 0.229277463629500770, 0.229228795287573010, 0.229180126372573260, +0.229131456884622780, 0.229082786823844060, 0.229034116190358410, 0.228985444984287440, 0.228936773205752430, 0.228888100854875930, 0.228839427931779170, 0.228790754436583420, +0.228742080369411180, 0.228693405730383770, 0.228644730519622860, 0.228596054737249670, 0.228547378383386760, 0.228498701458155430, 0.228450023961677350, 0.228401345894073770, +0.228352667255467240, 0.228303988045979070, 0.228255308265730930, 0.228206627914844060, 0.228157946993441080, 0.228109265501643200, 0.228060583439572200, 0.228011900807349260, +0.227963217605097020, 0.227914533832936750, 0.227865849490989700, 0.227817164579378480, 0.227768479098224340, 0.227719793047648970, 0.227671106427773720, 0.227622419238721120, +0.227573731480612500, 0.227525043153569530, 0.227476354257713510, 0.227427664793167030, 0.227378974760051420, 0.227330284158488350, 0.227281592988599150, 0.227232901250506410, +0.227184208944331390, 0.227135516070195860, 0.227086822628221110, 0.227038128618529730, 0.226989434041243030, 0.226940738896482310, 0.226892043184370170, 0.226843346905027940, +0.226794650058577350, 0.226745952645139690, 0.226697254664837560, 0.226648556117792330, 0.226599857004125690, 0.226551157323958970, 0.226502457077414790, 0.226453756264614480, +0.226405054885679770, 0.226356352940732000, 0.226307650429893760, 0.226258947353286420, 0.226210243711031680, 0.226161539503250940, 0.226112834730066740, 0.226064129391600480, +0.226015423487973460, 0.225966717019308320, 0.225918009985726390, 0.225869302387349420, 0.225820594224298760, 0.225771885496697050, 0.225723176204665640, 0.225674466348326270, +0.225625755927800320, 0.225577044943210400, 0.225528333394677870, 0.225479621282324520, 0.225430908606271680, 0.225382195366642000, 0.225333481563556810, 0.225284767197137940, +0.225236052267506700, 0.225187336774785780, 0.225138620719096520, 0.225089904100560710, 0.225041186919299700, 0.224992469175436140, 0.224943750869091410, 0.224895032000386880, +0.224846312569445210, 0.224797592576387760, 0.224748872021336310, 0.224700150904412250, 0.224651429225738270, 0.224602706985435690, 0.224553984183626380, 0.224505260820431650, +0.224456536895974200, 0.224407812410375410, 0.224359087363757060, 0.224310361756240610, 0.224261635587948650, 0.224212908859002640, 0.224164181569524330, 0.224115453719635120, +0.224066725309457730, 0.224017996339113540, 0.223969266808723890, 0.223920536718411530, 0.223871806068297850, 0.223823074858504610, 0.223774343089153280, 0.223725610760366510, +0.223676877872265730, 0.223628144424972720, 0.223579410418608960, 0.223530675853297080, 0.223481940729158500, 0.223433205046315090, 0.223384468804888240, 0.223335732005000650, +0.223286994646773710, 0.223238256730329290, 0.223189518255788810, 0.223140779223274970, 0.223092039632909160, 0.223043299484812830, 0.222994558779108680, 0.222945817515918130, +0.222897075695363040, 0.222848333317564820, 0.222799590382646210, 0.222750846890728630, 0.222702102841933920, 0.222653358236383550, 0.222604613074200180, 0.222555867355505280, +0.222507121080420730, 0.222458374249067950, 0.222409626861569650, 0.222360878918047290, 0.222312130418622720, 0.222263381363417420, 0.222214631752554070, 0.222165881586154160, +0.222117130864339540, 0.222068379587231630, 0.222019627754953240, 0.221970875367625780, 0.221922122425370680, 0.221873368928310720, 0.221824614876567350, 0.221775860270262410, +0.221727105109517430, 0.221678349394455080, 0.221629593125196890, 0.221580836301864700, 0.221532078924579990, 0.221483320993465520, 0.221434562508642710, 0.221385803470233540, +0.221337043878359400, 0.221288283733143100, 0.221239523034706090, 0.221190761783170260, 0.221141999978657110, 0.221093237621289380, 0.221044474711188570, 0.220995711248476140, +0.220946947233274850, 0.220898182665706180, 0.220849417545892070, 0.220800651873954010, 0.220751885650014720, 0.220703118874195720, 0.220654351546618940, 0.220605583667405820, +0.220556815236679190, 0.220508046254560520, 0.220459276721171740, 0.220410506636634330, 0.220361736001071090, 0.220312964814603520, 0.220264193077353510, 0.220215420789442620, +0.220166647950993580, 0.220117874562127950, 0.220069100622967170, 0.220020326133634090, 0.219971551094250180, 0.219922775504937410, 0.219873999365817250, 0.219825222677012540, +0.219776445438644770, 0.219727667650835870, 0.219678889313707380, 0.219630110427382120, 0.219581330991981540, 0.219532551007627670, 0.219483770474441980, 0.219434989392547300, +0.219386207762065130, 0.219337425583117470, 0.219288642855825780, 0.219239859580312950, 0.219191075756700440, 0.219142291385110270, 0.219093506465663920, 0.219044720998484240, +0.218995934983692740, 0.218947148421411000, 0.218898361311761800, 0.218849573654866710, 0.218800785450847690, 0.218751996699826260, 0.218703207401925280, 0.218654417557266280, +0.218605627165971230, 0.218556836228161690, 0.218508044743960460, 0.218459252713489150, 0.218410460136869710, 0.218361667014223690, 0.218312873345673920, 0.218264079131341960, +0.218215284371349820, 0.218166489065819040, 0.218117693214872450, 0.218068896818631650, 0.218020099877218150, 0.217971302390754850, 0.217922504359363280, 0.217873705783165480, +0.217824906662282940, 0.217776106996838610, 0.217727306786953980, 0.217678506032751100, 0.217629704734351500, 0.217580902891878090, 0.217532100505452440, 0.217483297575196490, +0.217434494101231920, 0.217385690083681500, 0.217336885522666890, 0.217288080418310050, 0.217239274770732570, 0.217190468580057330, 0.217141661846405960, 0.217092854569899960, +0.217044046750662270, 0.216995238388814460, 0.216946429484478560, 0.216897620037776160, 0.216848810048830140, 0.216799999517762080, 0.216751188444694040, 0.216702376829747580, +0.216653564673045640, 0.216604751974709740, 0.216555938734862010, 0.216507124953623980, 0.216458310631118560, 0.216409495767467370, 0.216360680362792430, 0.216311864417215390, +0.216263047930859100, 0.216214230903845170, 0.216165413336295270, 0.216116595228332240, 0.216067776580077730, 0.216018957391653780, 0.215970137663182020, 0.215921317394785320, +0.215872496586585360, 0.215823675238704130, 0.215774853351263280, 0.215726030924385750, 0.215677207958193120, 0.215628384452807490, 0.215579560408350470, 0.215530735824944950, +0.215481910702712610, 0.215433085041775500, 0.215384258842255230, 0.215335432104274750, 0.215286604827955700, 0.215237777013420150, 0.215188948660789690, 0.215140119770187320, +0.215091290341734630, 0.215042460375553270, 0.214993629871766230, 0.214944798830495080, 0.214895967251861970, 0.214847135135988490, 0.214798302482997610, 0.214749469293010950, +0.214700635566150650, 0.214651801302538300, 0.214602966502296900, 0.214554131165548080, 0.214505295292413940, 0.214456458883016090, 0.214407621937477560, 0.214358784455919970, +0.214309946438465430, 0.214261107885235590, 0.214212268796353380, 0.214163429171940530, 0.214114589012118660, 0.214065748317010750, 0.214016907086738480, 0.213968065321423960, +0.213919223021188790, 0.213870380186156030, 0.213821536816447330, 0.213772692912184760, 0.213723848473490050, 0.213675003500486150, 0.213626157993294740, 0.213577311952037910, +0.213528465376837400, 0.213479618267816140, 0.213430770625095830, 0.213381922448798610, 0.213333073739046140, 0.213284224495961410, 0.213235374719666140, 0.213186524410281990, +0.213137673567931950, 0.213088822192737750, 0.213039970284821490, 0.212991117844304860, 0.212942264871310880, 0.212893411365961240, 0.212844557328378060, 0.212795702758683060, +0.212746847656999220, 0.212697992023448270, 0.212649135858152370, 0.212600279161233170, 0.212551421932813710, 0.212502564173015690, 0.212453705881961250, 0.212404847059772140, +0.212355987706571330, 0.212307127822480540, 0.212258267407621940, 0.212209406462117250, 0.212160544986089470, 0.212111682979660320, 0.212062820442951520, 0.212013957376086140, +0.211965093779185820, 0.211916229652372810, 0.211867364995768750, 0.211818499809496740, 0.211769634093678470, 0.211720767848436130, 0.211671901073891420, 0.211623033770167390, +0.211574165937385790, 0.211525297575668760, 0.211476428685138080, 0.211427559265916720, 0.211378689318126480, 0.211329818841889530, 0.211280947837327590, 0.211232076304563730, +0.211183204243719640, 0.211134331654917130, 0.211085458538279230, 0.211036584893927680, 0.210987710721984660, 0.210938836022571930, 0.210889960795812570, 0.210841085041828270, +0.210792208760741280, 0.210743331952673340, 0.210694454617747500, 0.210645576756085500, 0.210596698367809590, 0.210547819453041460, 0.210498940011904250, 0.210450060044519690, +0.210401179551009950, 0.210352298531496870, 0.210303416986103440, 0.210254534914951500, 0.210205652318162770, 0.210156769195860320, 0.210107885548165980, 0.210059001375201920, +0.210010116677089940, 0.209961231453953070, 0.209912345705913130, 0.209863459433092340, 0.209814572635612460, 0.209765685313596570, 0.209716797467166480, 0.209667909096444390, +0.209619020201552100, 0.209570130782612690, 0.209521240839747960, 0.209472350373080120, 0.209423459382730990, 0.209374567868823610, 0.209325675831479850, 0.209276783270821440, +0.209227890186971490, 0.209178996580051850, 0.209130102450184710, 0.209081207797491870, 0.209032312622096460, 0.208983416924120260, 0.208934520703685510, 0.208885623960914010, +0.208836726695928930, 0.208787828908852000, 0.208738930599805500, 0.208690031768911240, 0.208641132416292340, 0.208592232542070600, 0.208543332146368300, 0.208494431229307220, +0.208445529791010500, 0.208396627831599960, 0.208347725351197830, 0.208298822349925970, 0.208249918827907500, 0.208201014785264200, 0.208152110222117960, 0.208103205138591870, +0.208054299534807750, 0.208005393410887920, 0.207956486766954140, 0.207907579603129580, 0.207858671919536080, 0.207809763716295890, 0.207760854993530860, 0.207711945751364150, +0.207663035989917530, 0.207614125709313370, 0.207565214909673420, 0.207516303591120890, 0.207467391753777600, 0.207418479397765840, 0.207369566523207430, 0.207320653130225550, +0.207271739218942010, 0.207222824789478700, 0.207173909841958770, 0.207124994376504080, 0.207076078393236880, 0.207027161892279070, 0.206978244873753770, 0.206929327337782850, +0.206880409284488640, 0.206831490713992950, 0.206782571626419000, 0.206733652021888590, 0.206684731900524050, 0.206635811262447260, 0.206586890107781390, 0.206537968436648260, +0.206489046249170250, 0.206440123545469150, 0.206391200325668180, 0.206342276589889240, 0.206293352338254160, 0.206244427570886120, 0.206195502287907010, 0.206146576489439150, +0.206097650175604440, 0.206048723346526020, 0.205999796002325790, 0.205950868143126050, 0.205901939769048750, 0.205853010880216990, 0.205804081476752720, 0.205755151558778240, +0.205706221126415480, 0.205657290179787570, 0.205608358719016450, 0.205559426744224420, 0.205510494255533390, 0.205461561253066580, 0.205412627736945850, 0.205363693707293540, +0.205314759164231590, 0.205265824107883130, 0.205216888538370140, 0.205167952455814510, 0.205119015860339430, 0.205070078752066790, 0.205021141131118940, 0.204972202997617840, +0.204923264351686650, 0.204874325193447280, 0.204825385523022120, 0.204776445340533080, 0.204727504646103340, 0.204678563439854830, 0.204629621721909930, 0.204580679492390530, +0.204531736751419860, 0.204482793499119850, 0.204433849735612880, 0.204384905461020810, 0.204335960675466940, 0.204287015379073180, 0.204238069571961420, 0.204189123254254920, +0.204140176426075630, 0.204091229087545900, 0.204042281238787650, 0.203993332879924130, 0.203944384011077280, 0.203895434632369480, 0.203846484743922640, 0.203797534345860040, +0.203748583438303600, 0.203699632021375700, 0.203650680095198290, 0.203601727659894620, 0.203552774715586610, 0.203503821262396690, 0.203454867300446760, 0.203405912829860090, +0.203356957850758660, 0.203308002363264410, 0.203259046367500560, 0.203210089863589100, 0.203161132851652440, 0.203112175331812470, 0.203063217304192520, 0.203014258768914550, +0.202965299726100920, 0.202916340175873590, 0.202867380118355840, 0.202818419553669670, 0.202769458481937420, 0.202720496903281090, 0.202671534817823960, 0.202622572225688020, +0.202573609126995620, 0.202524645521868770, 0.202475681410430740, 0.202426716792803500, 0.202377751669109040, 0.202328786039470660, 0.202279819904010280, 0.202230853262850370, +0.202181886116112870, 0.202132918463921120, 0.202083950306397030, 0.202034981643663100, 0.201986012475841280, 0.201937042803054860, 0.201888072625425820, 0.201839101943076610, +0.201790130756129230, 0.201741159064706910, 0.201692186868931730, 0.201643214168926080, 0.201594240964811930, 0.201545267256712650, 0.201496293044750200, 0.201447318329047000, +0.201398343109725070, 0.201349367386907700, 0.201300391160716930, 0.201251414431274760, 0.201202437198704480, 0.201153459463128100, 0.201104481224668090, 0.201055502483446420, +0.201006523239586450, 0.200957543493210160, 0.200908563244440010, 0.200859582493398030, 0.200810601240207500, 0.200761619484990490, 0.200712637227869420, 0.200663654468966330, +0.200614671208404540, 0.200565687446306070, 0.200516703182793380, 0.200467718417988490, 0.200418733152014750, 0.200369747384994160, 0.200320761117048800, 0.200271774348301960, +0.200222787078875670, 0.200173799308892430, 0.200124811038474240, 0.200075822267744450, 0.200026832996825110, 0.199977843225838700, 0.199928852954907250, 0.199879862184154100, +0.199830870913701280, 0.199781879143671290, 0.199732886874186170, 0.199683894105369270, 0.199634900837342640, 0.199585907070228750, 0.199536912804149650, 0.199487918039228720, +0.199438922775588000, 0.199389927013349510, 0.199340930752636650, 0.199291933993571480, 0.199242936736276440, 0.199193938980873650, 0.199144940727486450, 0.199095941976236900, +0.199046942727247460, 0.198997942980640270, 0.198948942736538630, 0.198899941995064640, 0.198850940756340800, 0.198801939020489180, 0.198752936787633140, 0.198703934057894770, +0.198654930831396540, 0.198605927108260550, 0.198556922888610210, 0.198507918172567520, 0.198458912960255060, 0.198409907251794890, 0.198360901047310380, 0.198311894346923620, +0.198262887150756660, 0.198213879458932960, 0.198164871271574530, 0.198115862588803930, 0.198066853410743230, 0.198017843737515850, 0.197968833569243860, 0.197919822906049790, +0.197870811748055710, 0.197821800095385050, 0.197772787948159890, 0.197723775306502730, 0.197674762170535730, 0.197625748540382260, 0.197576734416164410, 0.197527719798004710, +0.197478704686025300, 0.197429689080349550, 0.197380672981099570, 0.197331656388397480, 0.197282639302366700, 0.197233621723129300, 0.197184603650807870, 0.197135585085524480, +0.197086566027402540, 0.197037546476564210, 0.196988526433132030, 0.196939505897228060, 0.196890484868975780, 0.196841463348497310, 0.196792441335915140, 0.196743418831351460, +0.196694395834929650, 0.196645372346771870, 0.196596348367000660, 0.196547323895738120, 0.196498298933107720, 0.196449273479231580, 0.196400247534231800, 0.196351221098231860, +0.196302194171353860, 0.196253166753720370, 0.196204138845453540, 0.196155110446676770, 0.196106081557512250, 0.196057052178082500, 0.196008022308509720, 0.195958991948917300, +0.195909961099427400, 0.195860929760162620, 0.195811897931245040, 0.195762865612798180, 0.195713832804944140, 0.195664799507805520, 0.195615765721504490, 0.195566731446164460, +0.195517696681907600, 0.195468661428856050, 0.195419625687133310, 0.195370589456861500, 0.195321552738163210, 0.195272515531160600, 0.195223477835977130, 0.195174439652734980, +0.195125400981556730, 0.195076361822564550, 0.195027322175881900, 0.194978282041630920, 0.194929241419934260, 0.194880200310914050, 0.194831158714693750, 0.194782116631395580, +0.194733074061142130, 0.194684031004055540, 0.194634987460259310, 0.194585943429875620, 0.194536898913027080, 0.194487853909835830, 0.194438808420425410, 0.194389762444917960, +0.194340715983435660, 0.194291669036102010, 0.194242621603039180, 0.194193573684369820, 0.194144525280216060, 0.194095476390701430, 0.194046427015948130, 0.193997377156078730, +0.193948326811215490, 0.193899275981481850, 0.193850224667000000, 0.193801172867892610, 0.193752120584281850, 0.193703067816291240, 0.193654014564042940, 0.193604960827659600, +0.193555906607263430, 0.193506851902977920, 0.193457796714925300, 0.193408741043227720, 0.193359684888008750, 0.193310628249390580, 0.193261571127495810, 0.193212513522446700, +0.193163455434366720, 0.193114396863378110, 0.193065337809603530, 0.193016278273165140, 0.192967218254186500, 0.192918157752789810, 0.192869096769097720, 0.192820035303232470, +0.192770973355317570, 0.192721910925475220, 0.192672848013828110, 0.192623784620498420, 0.192574720745609720, 0.192525656389284230, 0.192476591551644150, 0.192427526232813030, +0.192378460432913100, 0.192329394152066980, 0.192280327390396990, 0.192231260148026580, 0.192182192425078060, 0.192133124221674030, 0.192084055537936750, 0.192034986373989770, +0.191985916729955350, 0.191936846605956110, 0.191887776002114320, 0.191838704918553540, 0.191789633355396010, 0.191740561312764350, 0.191691488790780880, 0.191642415789569140, +0.191593342309251350, 0.191544268349950170, 0.191495193911787930, 0.191446118994888110, 0.191397043599373010, 0.191347967725364860, 0.191298891372987220, 0.191249814542362370, +0.191200737233612970, 0.191151659446861300, 0.191102581182230890, 0.191053502439844060, 0.191004423219823440, 0.190955343522291380, 0.190906263347371350, 0.190857182695185670, +0.190808101565857040, 0.190759019959507730, 0.190709937876261280, 0.190660855316240020, 0.190611772279566600, 0.190562688766363310, 0.190513604776753750, 0.190464520310860170, +0.190415435368804840, 0.190366349950711390, 0.190317264056702020, 0.190268177686899520, 0.190219090841426130, 0.190170003520405470, 0.190120915723959780, 0.190071827452211820, +0.190022738705283830, 0.189973649483299450, 0.189924559786380930, 0.189875469614651020, 0.189826378968231980, 0.189777287847247460, 0.189728196251819720, 0.189679104182071460, +0.189630011638125040, 0.189580918620103980, 0.189531825128130660, 0.189482731162327330, 0.189433636722817630, 0.189384541809723810, 0.189335446423168630, 0.189286350563274420, +0.189237254230164770, 0.189188157423961970, 0.189139060144788790, 0.189089962392767510, 0.189040864168021770, 0.188991765470673870, 0.188942666300846550, 0.188893566658662140, +0.188844466544244220, 0.188795365957715180, 0.188746264899197690, 0.188697163368814120, 0.188648061366688050, 0.188598958892941840, 0.188549855947697830, 0.188500752531079590, +0.188451648643209460, 0.188402544284210220, 0.188353439454204190, 0.188304334153314960, 0.188255228381664920, 0.188206122139376820, 0.188157015426572980, 0.188107908243377030, +0.188058800589911280, 0.188009692466298560, 0.187960583872661180, 0.187911474809122760, 0.187862365275805660, 0.187813255272832660, 0.187764144800326050, 0.187715033858409540, +0.187665922447205450, 0.187616810566836540, 0.187567698217425170, 0.187518585399094990, 0.187469472111968350, 0.187420358356167600, 0.187371244131816380, 0.187322129439037060, +0.187273014277952400, 0.187223898648684770, 0.187174782551357860, 0.187125665986093950, 0.187076548953015900, 0.187027431452246040, 0.186978313483908030, 0.186929195048124250, +0.186880076145017480, 0.186830956774710070, 0.186781836937325720, 0.186732716632986770, 0.186683595861816020, 0.186634474623935870, 0.186585352919469930, 0.186536230748540640, +0.186487108111270340, 0.186437985007782690, 0.186388861438200080, 0.186339737402645310, 0.186290612901240770, 0.186241487934110130, 0.186192362501375770, 0.186143236603160510, +0.186094110239586720, 0.186044983410778080, 0.185995856116856980, 0.185946728357946260, 0.185897600134168280, 0.185848471445646730, 0.185799342292504000, 0.185750212674862910, +0.185701082592845870, 0.185651952046576530, 0.185602821036177340, 0.185553689561770650, 0.185504557623480170, 0.185455425221428300, 0.185406292355737860, 0.185357159026531240, +0.185308025233932190, 0.185258890978063060, 0.185209756259046700, 0.185160621077005540, 0.185111485432063240, 0.185062349324342210, 0.185013212753965340, 0.184964075721054970, +0.184914938225734880, 0.184865800268127430, 0.184816661848355460, 0.184767522966541420, 0.184718383622809010, 0.184669243817280640, 0.184620103550079160, 0.184570962821326980, +0.184521821631147830, 0.184472679979664130, 0.184423537866998300, 0.184374395293274040, 0.184325252258613820, 0.184276108763140460, 0.184226964806976370, 0.184177820390245330, +0.184128675513069750, 0.184079530175572440, 0.184030384377875890, 0.183981238120103830, 0.183932091402378650, 0.183882944224823260, 0.183833796587560050, 0.183784648490712800, +0.183735499934403940, 0.183686350918756320, 0.183637201443892390, 0.183588051509935870, 0.183538901117009270, 0.183489750265234920, 0.183440598954736690, 0.183391447185636940, +0.183342294958058540, 0.183293142272124010, 0.183243989127957030, 0.183194835525680110, 0.183145681465416070, 0.183096526947287400, 0.183047371971417850, 0.182998216537929890, +0.182949060646946350, 0.182899904298589740, 0.182850747492983830, 0.182801590230251030, 0.182752432510514230, 0.182703274333895940, 0.182654115700519900, 0.182604956610508570, +0.182555797063984420, 0.182506637061071200, 0.182457476601891410, 0.182408315686567900, 0.182359154315223180, 0.182309992487980990, 0.182260830204963840, 0.182211667466294610, +0.182162504272095770, 0.182113340622491100, 0.182064176517603090, 0.182015011957554650, 0.181965846942468230, 0.181916681472467620, 0.181867515547675330, 0.181818349168214240, +0.181769182334206830, 0.181720015045776890, 0.181670847303046950, 0.181621679106139440, 0.181572510455178170, 0.181523341350285610, 0.181474171791584700, 0.181425001779197930, +0.181375831313249110, 0.181326660393860690, 0.181277489021155620, 0.181228317195256390, 0.181179144916286810, 0.181129972184369380, 0.181080798999627010, 0.181031625362182170, +0.180982451272158760, 0.180933276729679180, 0.180884101734866440, 0.180834926287842980, 0.180785750388732650, 0.180736574037657970, 0.180687397234741840, 0.180638219980106760, +0.180589042273876590, 0.180539864116173790, 0.180490685507120910, 0.180441506446841760, 0.180392326935458840, 0.180343146973095090, 0.180293966559873040, 0.180244785695916540, +0.180195604381348050, 0.180146422616290550, 0.180097240400866550, 0.180048057735199880, 0.179998874619413080, 0.179949691053629100, 0.179900507037970450, 0.179851322572560950, +0.179802137657523180, 0.179752952292980050, 0.179703766479054090, 0.179654580215869160, 0.179605393503547790, 0.179556206342212480, 0.179507018731987100, 0.179457830672994170, +0.179408642165356680, 0.179359453209197130, 0.179310263804639380, 0.179261073951805990, 0.179211883650819890, 0.179162692901803670, 0.179113501704881130, 0.179064310060174870, +0.179015117967807810, 0.178965925427902520, 0.178916732440582840, 0.178867539005971350, 0.178818345124191010, 0.178769150795364370, 0.178719956019615290, 0.178670760797066310, +0.178621565127840000, 0.178572369012060220, 0.178523172449849500, 0.178473975441330870, 0.178424777986626840, 0.178375580085861320, 0.178326381739156850, 0.178277182946636410, +0.178227983708422600, 0.178178784024639270, 0.178129583895408950, 0.178080383320854680, 0.178031182301099020, 0.177981980836265850, 0.177932778926477710, 0.177883576571857630, +0.177834373772528200, 0.177785170528613230, 0.177735966840235350, 0.177686762707517570, 0.177637558130582430, 0.177588353109553810, 0.177539147644554330, 0.177489941735706560, +0.177440735383134350, 0.177391528586960310, 0.177342321347307460, 0.177293113664298340, 0.177243905538056880, 0.177194696968705680, 0.177145487956367730, 0.177096278501165600, +0.177047068603223220, 0.176997858262663180, 0.176948647479608510, 0.176899436254181750, 0.176850224586506840, 0.176801012476706400, 0.176751799924903390, 0.176702586931220460, +0.176653373495781500, 0.176604159618709120, 0.176554945300125890, 0.176505730540155730, 0.176456515338921260, 0.176407299696545480, 0.176358083613151030, 0.176308867088861810, +0.176259650123800400, 0.176210432718089890, 0.176161214871852850, 0.176111996585213200, 0.176062777858293580, 0.176013558691217010, 0.175964339084106110, 0.175915119037084790, +0.175865898550275650, 0.175816677623801790, 0.175767456257785810, 0.175718234452351600, 0.175669012207621820, 0.175619789523719070, 0.175570566400767290, 0.175521342838889090, +0.175472118838207510, 0.175422894398845230, 0.175373669520926150, 0.175324444204572880, 0.175275218449908480, 0.175225992257055620, 0.175176765626138240, 0.175127538557278920, +0.175078311050600760, 0.175029083106226360, 0.174979854724279710, 0.174930625904883420, 0.174881396648160580, 0.174832166954233810, 0.174782936823227040, 0.174733706255262940, +0.174684475250464130, 0.174635243808954590, 0.174586011930856900, 0.174536779616294210, 0.174487546865389140, 0.174438313678265620, 0.174389080055046330, 0.174339845995854340, +0.174290611500812290, 0.174241376570044150, 0.174192141203672570, 0.174142905401820650, 0.174093669164611030, 0.174044432492167640, 0.173995195384613190, 0.173945957842070760, +0.173896719864662990, 0.173847481452513860, 0.173798242605746030, 0.173749003324482560, 0.173699763608846200, 0.173650523458960840, 0.173601282874949160, 0.173552041856933850, +0.173502800405038880, 0.173453558519386900, 0.173404316200101020, 0.173355073447303910, 0.173305830261119560, 0.173256586641670620, 0.173207342589080240, 0.173158098103471050, +0.173108853184967050, 0.173059607833690930, 0.173010362049765780, 0.172961115833314310, 0.172911869184460470, 0.172862622103326950, 0.172813374590036870, 0.172764126644712940, +0.172714878267479110, 0.172665629458458090, 0.172616380217772560, 0.172567130545546510, 0.172517880441902670, 0.172468629906964100, 0.172419378940853520, 0.172370127543694910, +0.172320875715611000, 0.172271623456724890, 0.172222370767159320, 0.172173117647038220, 0.172123864096484340, 0.172074610115620810, 0.172025355704570310, 0.171976100863456850, +0.171926845592403150, 0.171877589891532350, 0.171828333760967090, 0.171779077200831460, 0.171729820211248160, 0.171680562792339840, 0.171631304944230570, 0.171582046667043020, +0.171532787960900380, 0.171483528825925300, 0.171434269262241870, 0.171385009269972740, 0.171335748849241100, 0.171286488000169630, 0.171237226722882410, 0.171187965017502110, +0.171138702884151890, 0.171089440322954480, 0.171040177334033900, 0.170990913917512890, 0.170941650073514580, 0.170892385802161710, 0.170843121103578330, 0.170793855977887130, +0.170744590425211310, 0.170695324445673560, 0.170646058039397950, 0.170596791206507170, 0.170547523947124000, 0.170498256261372440, 0.170448988149375230, 0.170399719611255580, +0.170350450647136160, 0.170301181257141080, 0.170251911441393040, 0.170202641200015210, 0.170153370533130370, 0.170104099440862520, 0.170054827923334400, 0.170005555980669240, +0.169956283612989760, 0.169907010820419980, 0.169857737603082680, 0.169808463961101050, 0.169759189894597820, 0.169709915403697040, 0.169660640488521470, 0.169611365149193870, +0.169562089385838300, 0.169512813198577500, 0.169463536587534690, 0.169414259552832570, 0.169364982094595250, 0.169315704212945480, 0.169266425908006420, 0.169217147179900880, +0.169167868028752920, 0.169118588454685280, 0.169069308457821170, 0.169020028038283340, 0.168970747196195900, 0.168921465931681590, 0.168872184244863580, 0.168822902135864710, +0.168773619604809020, 0.168724336651819270, 0.168675053277018230, 0.168625769480530010, 0.168576485262477370, 0.168527200622983510, 0.168477915562171200, 0.168428630080164570, +0.168379344177086330, 0.168330057853059740, 0.168280771108207580, 0.168231483942653910, 0.168182196356521540, 0.168132908349933690, 0.168083619923013130, 0.168034331075883950, +0.167985041808668940, 0.167935752121491310, 0.167886462014473880, 0.167837171487740740, 0.167787880541414660, 0.167738589175618460, 0.167689297390476220, 0.167640005186110720, +0.167590712562645210, 0.167541419520202490, 0.167492126058906650, 0.167442832178880510, 0.167393537880247270, 0.167344243163129760, 0.167294948027652070, 0.167245652473937020, +0.167196356502107850, 0.167147060112287330, 0.167097763304599610, 0.167048466079167460, 0.166999168436114150, 0.166949870375562500, 0.166900571897636600, 0.166851273002459280, +0.166801973690153760, 0.166752673960842900, 0.166703373814650780, 0.166654073251700200, 0.166604772272114010, 0.166555470876016350, 0.166506169063530000, 0.166456866834778230, +0.166407564189883840, 0.166358261128970980, 0.166308957652162470, 0.166259653759581570, 0.166210349451351100, 0.166161044727595210, 0.166111739588436700, 0.166062434033998810, +0.166013128064404440, 0.165963821679777660, 0.165914514880241340, 0.165865207665918720, 0.165815900036932640, 0.165766591993407260, 0.165717283535465390, 0.165667974663229880, +0.165618665376824880, 0.165569355676373210, 0.165520045561998150, 0.165470735033822540, 0.165421424091970530, 0.165372112736564960, 0.165322800967729110, 0.165273488785585810, +0.165224176190259230, 0.165174863181872220, 0.165125549760548020, 0.165076235926409550, 0.165026921679580910, 0.164977607020184960, 0.164928291948344990, 0.164878976464183870, +0.164829660567825750, 0.164780344259393450, 0.164731027539009870, 0.164681710406799160, 0.164632392862884170, 0.164583074907388190, 0.164533756540434090, 0.164484437762146050, +0.164435118572646920, 0.164385798972059960, 0.164336478960508100, 0.164287158538115460, 0.164237837705004910, 0.164188516461299810, 0.164139194807122940, 0.164089872742598540, +0.164040550267849440, 0.163991227382998980, 0.163941904088170030, 0.163892580383486720, 0.163843256269072010, 0.163793931745049110, 0.163744606811540960, 0.163695281468671740, +0.163645955716564320, 0.163596629555341540, 0.163547302985127650, 0.163497976006045510, 0.163448648618218420, 0.163399320821769280, 0.163349992616822260, 0.163300664003500270, +0.163251334981926590, 0.163202005552224170, 0.163152675714517160, 0.163103345468928460, 0.163054014815581410, 0.163004683754598870, 0.162955352286105050, 0.162906020410222870, +0.162856688127075660, 0.162807355436786260, 0.162758022339478890, 0.162708688835276500, 0.162659354924301950, 0.162610020606679420, 0.162560685882531860, 0.162511350751982590, +0.162462015215154490, 0.162412679272171790, 0.162363342923157410, 0.162314006168234660, 0.162264669007526450, 0.162215331441157020, 0.162165993469249260, 0.162116655091926520, +0.162067316309311700, 0.162017977121529020, 0.161968637528701390, 0.161919297530952190, 0.161869957128404300, 0.161820616321181940, 0.161771275109408060, 0.161721933493205540, +0.161672591472698630, 0.161623249048010230, 0.161573906219263740, 0.161524562986582020, 0.161475219350089320, 0.161425875309908600, 0.161376530866163190, 0.161327186018976000, +0.161277840768471260, 0.161228495114771970, 0.161179149058001400, 0.161129802598282550, 0.161080455735739620, 0.161031108470495540, 0.160981760802673710, 0.160932412732397030, +0.160883064259789740, 0.160833715384974820, 0.160784366108075590, 0.160735016429215010, 0.160685666348517330, 0.160636315866105470, 0.160586964982102400, 0.160537613696632360, +0.160488262009818280, 0.160438909921783530, 0.160389557432651100, 0.160340204542545190, 0.160290851251588760, 0.160241497559905220, 0.160192143467617480, 0.160142788974849850, +0.160093434081725220, 0.160044078788367020, 0.159994723094898180, 0.159945367001442960, 0.159896010508124350, 0.159846653615065700, 0.159797296322389950, 0.159747938630221440, +0.159698580538683050, 0.159649222047897800, 0.159599863157989910, 0.159550503869082370, 0.159501144181298570, 0.159451784094761490, 0.159402423609595360, 0.159353062725923200, +0.159303701443868350, 0.159254339763553830, 0.159204977685103890, 0.159155615208641520, 0.159106252334290100, 0.159056889062172610, 0.159007525392413330, 0.158958161325135240, +0.158908796860461750, 0.158859431998515820, 0.158810066739421770, 0.158760701083302540, 0.158711335030281120, 0.158661968580481820, 0.158612601734027580, 0.158563234491041820, +0.158513866851647560, 0.158464498815969050, 0.158415130384129330, 0.158365761556251760, 0.158316392332459340, 0.158267022712876380, 0.158217652697625860, 0.158168282286831220, +0.158118911480615440, 0.158069540279102800, 0.158020168682416330, 0.157970796690679430, 0.157921424304015120, 0.157872051522547660, 0.157822678346400070, 0.157773304775695370, +0.157723930810557830, 0.157674556451110480, 0.157625181697476720, 0.157575806549779570, 0.157526431008143340, 0.157477055072691020, 0.157427678743546100, 0.157378302020831500, +0.157328924904671620, 0.157279547395189400, 0.157230169492508340, 0.157180791196751410, 0.157131412508042940, 0.157082033426505920, 0.157032653952263850, 0.156983274085439660, +0.156933893826157770, 0.156884513174541110, 0.156835132130713180, 0.156785750694797000, 0.156736368866916860, 0.156686986647195800, 0.156637604035756860, 0.156588221032724320, +0.156538837638221240, 0.156489453852371040, 0.156440069675296810, 0.156390685107122810, 0.156341300147972100, 0.156291914797968170, 0.156242529057233990, 0.156193142925893920, +0.156143756404070990, 0.156094369491888710, 0.156044982189470020, 0.155995594496939340, 0.155946206414419670, 0.155896817942034470, 0.155847429079906810, 0.155798039828160980, +0.155748650186920080, 0.155699260156307110, 0.155649869736446430, 0.155600478927461090, 0.155551087729474540, 0.155501696142609810, 0.155452304166991300, 0.155402911802742040, +0.155353519049985480, 0.155304125908844680, 0.155254732379444040, 0.155205338461906540, 0.155155944156355700, 0.155106549462914550, 0.155057154381707470, 0.155007758912857510, +0.154958363056488160, 0.154908966812722450, 0.154859570181684750, 0.154810173163498150, 0.154760775758285670, 0.154711377966171680, 0.154661979787279270, 0.154612581221731880, +0.154563182269652630, 0.154513782931165830, 0.154464383206394610, 0.154414983095462390, 0.154365582598492310, 0.154316181715608680, 0.154266780446934620, 0.154217378792593620, +0.154167976752708710, 0.154118574327404310, 0.154069171516803470, 0.154019768321029680, 0.153970364740206060, 0.153920960774456940, 0.153871556423905430, 0.153822151688675050, +0.153772746568888840, 0.153723341064671200, 0.153673935176145190, 0.153624528903433920, 0.153575122246661780, 0.153525715205951820, 0.153476307781427570, 0.153426899973212100, +0.153377491781429840, 0.153328083206203840, 0.153278674247657650, 0.153229264905914320, 0.153179855181098250, 0.153130445073332570, 0.153081034582740750, 0.153031623709445920, +0.152982212453572490, 0.152932800815243490, 0.152883388794582520, 0.152833976391712620, 0.152784563606758240, 0.152735150439842430, 0.152685736891088300, 0.152636322960620300, +0.152586908648561480, 0.152537493955035350, 0.152488078880165080, 0.152438663424075050, 0.152389247586888380, 0.152339831368728560, 0.152290414769718720, 0.152240997789983320, +0.152191580429645400, 0.152142162688828520, 0.152092744567655810, 0.152043326066251680, 0.151993907184739210, 0.151944487923242000, 0.151895068281883120, 0.151845648260787000, +0.151796227860076770, 0.151746807079875530, 0.151697385920307710, 0.151647964381496410, 0.151598542463565220, 0.151549120166637240, 0.151499697490836890, 0.151450274436287280, +0.151400851003112010, 0.151351427191434160, 0.151302003001378190, 0.151252578433067190, 0.151203153486624780, 0.151153728162174010, 0.151104302459839380, 0.151054876379743990, +0.151005449922011430, 0.150956023086764780, 0.150906595874128520, 0.150857168284225770, 0.150807740317179640, 0.150758311973114620, 0.150708883252153810, 0.150659454154420810, +0.150610024680038730, 0.150560594829132010, 0.150511164601823820, 0.150461733998237700, 0.150412303018496840, 0.150362871662725630, 0.150313439931047260, 0.150264007823585260, +0.150214575340462840, 0.150165142481804400, 0.150115709247733100, 0.150066275638372550, 0.150016841653845850, 0.149967407294277490, 0.149917972559790610, 0.149868537450508820, +0.149819101966555210, 0.149769666108054310, 0.149720229875129230, 0.149670793267903170, 0.149621356286500530, 0.149571918931044520, 0.149522481201658700, 0.149473043098466240, +0.149423604621591600, 0.149374165771157970, 0.149324726547288900, 0.149275286950107610, 0.149225846979738510, 0.149176406636304800, 0.149126965919930080, 0.149077524830737520, +0.149028083368851570, 0.148978641534395410, 0.148929199327492660, 0.148879756748266450, 0.148830313796841310, 0.148780870473340380, 0.148731426777886810, 0.148681982710605150, +0.148632538271618510, 0.148583093461050530, 0.148533648279024380, 0.148484202725664540, 0.148434756801094190, 0.148385310505436960, 0.148335863838816030, 0.148286416801355850, +0.148236969393179650, 0.148187521614411010, 0.148138073465173130, 0.148088624945590520, 0.148039176055786340, 0.147989726795884210, 0.147940277166007330, 0.147890827166280190, +0.147841376796825990, 0.147791926057767920, 0.147742474949230460, 0.147693023471336810, 0.147643571624210600, 0.147594119407975040, 0.147544666822754610, 0.147495213868672510, +0.147445760545852370, 0.147396306854417400, 0.147346852794492110, 0.147297398366199680, 0.147247943569663750, 0.147198488405007520, 0.147149032872355510, 0.147099576971830900, +0.147050120703557390, 0.147000664067658100, 0.146951207064257630, 0.146901749693479110, 0.146852291955446220, 0.146802833850282170, 0.146753375378111450, 0.146703916539057320, +0.146654457333242950, 0.146604997760792890, 0.146555537821830310, 0.146506077516478900, 0.146456616844861860, 0.146407155807103700, 0.146357694403327660, 0.146308232633657390, +0.146258770498216090, 0.146209307997128310, 0.146159845130517270, 0.146110381898506610, 0.146060918301219530, 0.146011454338780630, 0.145961990011313080, 0.145912525318940560, +0.145863060261786280, 0.145813594839974770, 0.145764129053629320, 0.145714662902873080, 0.145665196387830630, 0.145615729508625170, 0.145566262265380410, 0.145516794658219540, +0.145467326687267110, 0.145417858352646400, 0.145368389654481010, 0.145318920592894220, 0.145269451168010570, 0.145219981379953320, 0.145170511228846080, 0.145121040714812130, +0.145071569837976010, 0.145022098598460990, 0.144972626996390690, 0.144923155031888410, 0.144873682705078670, 0.144824210016084730, 0.144774736965029820, 0.144725263552038520, +0.144675789777234030, 0.144626315640740110, 0.144576841142679910, 0.144527366283178080, 0.144477891062357840, 0.144428415480342850, 0.144378939537256390, 0.144329463233223040, +0.144279986568365990, 0.144230509542809030, 0.144181032156675300, 0.144131554410089460, 0.144082076303174740, 0.144032597836054820, 0.143983119008852970, 0.143933639821693740, +0.143884160274700440, 0.143834680367996260, 0.143785200101705870, 0.143735719475952460, 0.143686238490859740, 0.143636757146551000, 0.143587275443150780, 0.143537793380782400, +0.143488310959569510, 0.143438828179635440, 0.143389345041104700, 0.143339861544100610, 0.143290377688746890, 0.143240893475166750, 0.143191408903484830, 0.143141923973824410, +0.143092438686309160, 0.143042953041062380, 0.142993467038208640, 0.142943980677871260, 0.142894493960173900, 0.142845006885239880, 0.142795519453193800, 0.142746031664158890, +0.142696543518258470, 0.142647055015617140, 0.142597566156358160, 0.142548076940605280, 0.142498587368481760, 0.142449097440112220, 0.142399607155619920, 0.142350116515128610, +0.142300625518761580, 0.142251134166643390, 0.142201642458897410, 0.142152150395647300, 0.142102657977016380, 0.142053165203129240, 0.142003672074109220, 0.141954178590080000, +0.141904684751164880, 0.141855190557488520, 0.141805696009174170, 0.141756201106345130, 0.141706705849126040, 0.141657210237640160, 0.141607714272011270, 0.141558217952362670, +0.141508721278818940, 0.141459224251503420, 0.141409726870539850, 0.141360229136051510, 0.141310731048163050, 0.141261232606997740, 0.141211733812679370, 0.141162234665331200, +0.141112735165077910, 0.141063235312042760, 0.141013735106349540, 0.140964234548121540, 0.140914733637483390, 0.140865232374558390, 0.140815730759469900, 0.140766228792342520, +0.140716726473299550, 0.140667223802464770, 0.140617720779961490, 0.140568217405914350, 0.140518713680446660, 0.140469209603682200, 0.140419705175744260, 0.140370200396757490, +0.140320695266845240, 0.140271189786131230, 0.140221683954738830, 0.140172177772792640, 0.140122671240416020, 0.140073164357732730, 0.140023657124866090, 0.139974149541940730, +0.139924641609080000, 0.139875133326407660, 0.139825624694047050, 0.139776115712122840, 0.139726606380758320, 0.139677096700076830, 0.139627586670203060, 0.139578076291260320, +0.139528565563372400, 0.139479054486662590, 0.139429543061255630, 0.139380031287274770, 0.139330519164843870, 0.139281006694086220, 0.139231493875126480, 0.139181980708088020, +0.139132467193094580, 0.139082953330269570, 0.139033439119737590, 0.138983924561622040, 0.138934409656046640, 0.138884894403134810, 0.138835378803011170, 0.138785862855799080, +0.138736346561621900, 0.138686829920604300, 0.138637312932869600, 0.138587795598541650, 0.138538277917743760, 0.138488759890600580, 0.138439241517235550, 0.138389722797772400, +0.138340203732334490, 0.138290684321046520, 0.138241164564031850, 0.138191644461414240, 0.138142124013317100, 0.138092603219865110, 0.138043082081181570, 0.137993560597390350, +0.137944038768614770, 0.137894516594979560, 0.137844994076608050, 0.137795471213623590, 0.137745948006150920, 0.137696424454313380, 0.137646900558234780, 0.137597376318038480, +0.137547851733849170, 0.137498326805790240, 0.137448801533985500, 0.137399275918558300, 0.137349749959633370, 0.137300223657334050, 0.137250697011784160, 0.137201170023107110, +0.137151642691427570, 0.137102115016868920, 0.137052586999554970, 0.137003058639609130, 0.136953529937156090, 0.136904000892319220, 0.136854471505221900, 0.136804941775988840, +0.136755411704743420, 0.136705881291609490, 0.136656350536710410, 0.136606819440170890, 0.136557288002114310, 0.136507756222664530, 0.136458224101944910, 0.136408691640080180, +0.136359158837193710, 0.136309625693409350, 0.136260092208850490, 0.136210558383641820, 0.136161024217906770, 0.136111489711769150, 0.136061954865352360, 0.136012419678781140, +0.135962884152178860, 0.135913348285669390, 0.135863812079376090, 0.135814275533423710, 0.135764738647935620, 0.135715201423035250, 0.135665663858847350, 0.135616125955495240, +0.135566587713102840, 0.135517049131793550, 0.135467510211692040, 0.135417970952921800, 0.135368431355606580, 0.135318891419869890, 0.135269351145836380, 0.135219810533629500, +0.135170269583373080, 0.135120728295190560, 0.135071186669206670, 0.135021644705544810, 0.134972102404328830, 0.134922559765682150, 0.134873016789729520, 0.134823473476594350, +0.134773929826400050, 0.134724385839271350, 0.134674841515331710, 0.134625296854704950, 0.134575751857514530, 0.134526206523885140, 0.134476660853940250, 0.134427114847803730, +0.134377568505598950, 0.134328021827450710, 0.134278474813482400, 0.134228927463817900, 0.134179379778580660, 0.134129831757895390, 0.134080283401885550, 0.134030734710675000, +0.133981185684387190, 0.133931636323146840, 0.133882086627077400, 0.133832536596302320, 0.133782986230946310, 0.133733435531132840, 0.133683884496985790, 0.133634333128628600, +0.133584781426185990, 0.133535229389781460, 0.133485677019538840, 0.133436124315581580, 0.133386571278034440, 0.133337017907020900, 0.133287464202664800, 0.133237910165089600, +0.133188355794420070, 0.133138801090779630, 0.133089246054292200, 0.133039690685081230, 0.132990134983271470, 0.132940578948986370, 0.132891022582349800, 0.132841465883485250, +0.132791908852517490, 0.132742351489569950, 0.132692793794766090, 0.132643235768230670, 0.132593677410087180, 0.132544118720459490, 0.132494559699471050, 0.132445000347246660, +0.132395440663909790, 0.132345880649584300, 0.132296320304393670, 0.132246759628462660, 0.132197198621914790, 0.132147637284873890, 0.132098075617463480, 0.132048513619808290, +0.131998951292031850, 0.131949388634258010, 0.131899825646610260, 0.131850262329213400, 0.131800698682190880, 0.131751134705666180, 0.131701570399764070, 0.131652005764608030, +0.131602440800321990, 0.131552875507029400, 0.131503309884855060, 0.131453743933922450, 0.131404177654355470, 0.131354611046277630, 0.131305044109813700, 0.131255476845087120, +0.131205909252221890, 0.131156341331341440, 0.131106773082570540, 0.131057204506032750, 0.131007635601851940, 0.130958066370151590, 0.130908496811056510, 0.130858926924690200, +0.130809356711176130, 0.130759786170639130, 0.130710215303202620, 0.130660644108990610, 0.130611072588126540, 0.130561500740735220, 0.130511928566940160, 0.130462356066865260, +0.130412783240634040, 0.130363210088371290, 0.130313636610200540, 0.130264062806245700, 0.130214488676630240, 0.130164914221478990, 0.130115339440915500, 0.130065764335063620, +0.130016188904046900, 0.129966613147990160, 0.129917037067016880, 0.129867460661250540, 0.129817883930816030, 0.129768306875836790, 0.129718729496436790, 0.129669151792739520, +0.129619573764869820, 0.129569995412951170, 0.129520416737107540, 0.129470837737462430, 0.129421258414140680, 0.129371678767265770, 0.129322098796961660, 0.129272518503351860, +0.129222937886561200, 0.129173356946713200, 0.129123775683931820, 0.129074194098340560, 0.129024612190064230, 0.128975029959226380, 0.128925447405950970, 0.128875864530361510, +0.128826281332582810, 0.128776697812738400, 0.128727113970951820, 0.128677529807347900, 0.128627945322050130, 0.128578360515182510, 0.128528775386868550, 0.128479189937233090, +0.128429604166399670, 0.128380018074492230, 0.128330431661634300, 0.128280844927950720, 0.128231257873565040, 0.128181670498601210, 0.128132082803182780, 0.128082494787434580, +0.128032906451480130, 0.127983317795443420, 0.127933728819447980, 0.127884139523618660, 0.127834549908078960, 0.127784959972952500, 0.127735369718364050, 0.127685779144437160, +0.127636188251295830, 0.127586597039063610, 0.127537005507865310, 0.127487413657824540, 0.127437821489065180, 0.127388229001710870, 0.127338636195886420, 0.127289043071715370, +0.127239449629321710, 0.127189855868828970, 0.127140261790362060, 0.127090667394044480, 0.127041072680000260, 0.126991477648352890, 0.126941882299227260, 0.126892286632746930, +0.126842690649035440, 0.126793094348217700, 0.126743497730417180, 0.126693900795757930, 0.126644303544363510, 0.126594705976358750, 0.126545108091867230, 0.126495509891012940, +0.126445911373919420, 0.126396312540711570, 0.126346713391512930, 0.126297113926447550, 0.126247514145638890, 0.126197914049211910, 0.126148313637290150, 0.126098712909997610, +0.126049111867457820, 0.125999510509795710, 0.125949908837134830, 0.125900306849599160, 0.125850704547312290, 0.125801101930399120, 0.125751498998983160, 0.125701895753188050, +0.125652292193138610, 0.125602688318958460, 0.125553084130771570, 0.125503479628701540, 0.125453874812873230, 0.125404269683410260, 0.125354664240436620, 0.125305058484075860, +0.125255452414452910, 0.125205846031691330, 0.125156239335915100, 0.125106632327247860, 0.125057025005814480, 0.125007417371738540, 0.124957809425144050, 0.124908201166154600, +0.124858592594895080, 0.124808983711489090, 0.124759374516060190, 0.124709765008733290, 0.124660155189632000, 0.124610545058880310, 0.124560934616601810, 0.124511323862921410, +0.124461712797962710, 0.124412101421849730, 0.124362489734706050, 0.124312877736656590, 0.124263265427824940, 0.124213652808335110, 0.124164039878310720, 0.124114426637876680, +0.124064813087156560, 0.124015199226274410, 0.123965585055353820, 0.123915970574519710, 0.123866355783895680, 0.123816740683605310, 0.123767125273773540, 0.123717509554523940, +0.123667893525980580, 0.123618277188267040, 0.123568660541508250, 0.123519043585827810, 0.123469426321349760, 0.123419808748197690, 0.123370190866496560, 0.123320572676369940, +0.123270954177941900, 0.123221335371336020, 0.123171716256677250, 0.123122096834089190, 0.123072477103695880, 0.123022857065620950, 0.122973236719989300, 0.122923616066924580, +0.122873995106550370, 0.122824373838991610, 0.122774752264371910, 0.122725130382815340, 0.122675508194445500, 0.122625885699387330, 0.122576262897764450, 0.122526639789700910, +0.122477016375320320, 0.122427392654747640, 0.122377768628106480, 0.122328144295520900, 0.122278519657114500, 0.122228894713012260, 0.122179269463337780, 0.122129643908215120, +0.122080018047767930, 0.122030391882121110, 0.121980765411398320, 0.121931138635723620, 0.121881511555220630, 0.121831884170014300, 0.121782256480228270, 0.121732628485986150, +0.121683000187412890, 0.121633371584632140, 0.121583742677767960, 0.121534113466943980, 0.121484483952285160, 0.121434854133915140, 0.121385224011957960, 0.121335593586537300, +0.121285962857778100, 0.121236331825803980, 0.121186700490739030, 0.121137068852706890, 0.121087436911832520, 0.121037804668239560, 0.120988172122052100, 0.120938539273393750, +0.120888906122389490, 0.120839272669162970, 0.120789638913837840, 0.120740004856539050, 0.120690370497390230, 0.120640735836515510, 0.120591100874038490, 0.120541465610084160, +0.120491830044776180, 0.120442194178238610, 0.120392558010595120, 0.120342921541970680, 0.120293284772488930, 0.120243647702273970, 0.120194010331449460, 0.120144372660140340, +0.120094734688470300, 0.120045096416563440, 0.119995457844543380, 0.119945818972535120, 0.119896179800662320, 0.119846540329048620, 0.119796900557819010, 0.119747260487097150, +0.119697620117007140, 0.119647979447672640, 0.119598338479218640, 0.119548697211768780, 0.119499055645447190, 0.119449413780377500, 0.119399771616684730, 0.119350129154492540, +0.119300486393925010, 0.119250843335105840, 0.119201199978159990, 0.119151556323211140, 0.119101912370383410, 0.119052268119800450, 0.119002623571587270, 0.118952978725867520, +0.118903333582765320, 0.118853688142404350, 0.118804042404909600, 0.118754396370404750, 0.118704750039013470, 0.118655103410860750, 0.118605456486070270, 0.118555809264766150, +0.118506161747072070, 0.118456513933113020, 0.118406865823012690, 0.118357217416895190, 0.118307568714884210, 0.118257919717104750, 0.118208270423680480, 0.118158620834735550, +0.118108970950393620, 0.118059320770779710, 0.118009670296017490, 0.117960019526231100, 0.117910368461544220, 0.117860717102081850, 0.117811065447967700, 0.117761413499325440, +0.117711761256280080, 0.117662108718955330, 0.117612455887475290, 0.117562802761963690, 0.117513149342545520, 0.117463495629344470, 0.117413841622484680, 0.117364187322089850, +0.117314532728284990, 0.117264877841193800, 0.117215222660940420, 0.117165567187648530, 0.117115911421443180, 0.117066255362448040, 0.117016599010787260, 0.116966942366584540, +0.116917285429964910, 0.116867628201052070, 0.116817970679969710, 0.116768312866842870, 0.116718654761795260, 0.116668996364951000, 0.116619337676433800, 0.116569678696368710, +0.116520019424879410, 0.116470359862090080, 0.116420700008124390, 0.116371039863107400, 0.116321379427162820, 0.116271718700414780, 0.116222057682987000, 0.116172396375004520, +0.116122734776591060, 0.116073072887870750, 0.116023410708967320, 0.115973748240005810, 0.115924085481109930, 0.115874422432403380, 0.115824759094011230, 0.115775095466057170, +0.115725431548665380, 0.115675767341959570, 0.115626102846064780, 0.115576438061104740, 0.115526772987203600, 0.115477107624485080, 0.115427441973074240, 0.115377776033094790, +0.115328109804670910, 0.115278443287926300, 0.115228776482986050, 0.115179109389973830, 0.115129442009013840, 0.115079774340229810, 0.115030106383746790, 0.114980438139688500, +0.114930769608179120, 0.114881100789342370, 0.114831431683303300, 0.114781762290185660, 0.114732092610113180, 0.114682422643210890, 0.114632752389602560, 0.114583081849412350, +0.114533411022763990, 0.114483739909782540, 0.114434068510591740, 0.114384396825315770, 0.114334724854078380, 0.114285052597004600, 0.114235380054218200, 0.114185707225843340, +0.114136034112003780, 0.114086360712824570, 0.114036687028429460, 0.113987013058942630, 0.113937338804487840, 0.113887664265190130, 0.113837989441173270, 0.113788314332560980, +0.113738638939478360, 0.113688963262049140, 0.113639287300397500, 0.113589611054647210, 0.113539934524923340, 0.113490257711349620, 0.113440580614050250, 0.113390903233149020, +0.113341225568770940, 0.113291547621039810, 0.113241869390079810, 0.113192190876014700, 0.113142512078969550, 0.113092832999068110, 0.113043153636434610, 0.112993473991192760, +0.112943794063467690, 0.112894113853383120, 0.112844433361062830, 0.112794752586631890, 0.112745071530214070, 0.112695390191933570, 0.112645708571914170, 0.112596026670280930, +0.112546344487157610, 0.112496662022668450, 0.112446979276937180, 0.112397296250088900, 0.112347612942247390, 0.112297929353536840, 0.112248245484081040, 0.112198561334005050, +0.112148876903432670, 0.112099192192488100, 0.112049507201295080, 0.111999821929978760, 0.111950136378662880, 0.111900450547471660, 0.111850764436528870, 0.111801078045959610, +0.111751391375887660, 0.111701704426436790, 0.111652017197732090, 0.111602329689897350, 0.111552641903056790, 0.111502953837334190, 0.111453265492854630, 0.111403576869741920, +0.111353887968120260, 0.111304198788113440, 0.111254509329846570, 0.111204819593443430, 0.111155129579028230, 0.111105439286724770, 0.111055748716658160, 0.111006057868952170, +0.110956366743731040, 0.110906675341118550, 0.110856983661239810, 0.110807291704218600, 0.110757599470178740, 0.110707906959245320, 0.110658214171542120, 0.110608521107193390, +0.110558827766322920, 0.110509134149055820, 0.110459440255515880, 0.110409746085827350, 0.110360051640114000, 0.110310356918500970, 0.110260661921112040, 0.110210966648071480, +0.110161271099503040, 0.110111575275531860, 0.110061879176281750, 0.110012182801876950, 0.109962486152441240, 0.109912789228099760, 0.109863092028976300, 0.109813394555194690, +0.109763696806880020, 0.109713998784156110, 0.109664300487147200, 0.109614601915977090, 0.109564903070770940, 0.109515203951652510, 0.109465504558746080, 0.109415804892175450, +0.109366104952065740, 0.109316404738540780, 0.109266704251724800, 0.109217003491741610, 0.109167302458716360, 0.109117601152772860, 0.109067899574035360, 0.109018197722627650, +0.108968495598674900, 0.108918793202300910, 0.108869090533629500, 0.108819387592785810, 0.108769684379893640, 0.108719980895077260, 0.108670277138460490, 0.108620573110168470, +0.108570868810325000, 0.108521164239054380, 0.108471459396480400, 0.108421754282728210, 0.108372048897921640, 0.108322343242184940, 0.108272637315641950, 0.108222931118417810, +0.108173224650636330, 0.108123517912421790, 0.108073810903898020, 0.108024103625190170, 0.107974396076422050, 0.107924688257717950, 0.107874980169201680, 0.107825271810998390, +0.107775563183231950, 0.107725854286026130, 0.107676145119506140, 0.107626435683795780, 0.107576725979019320, 0.107527016005300610, 0.107477305762764800, 0.107427595251535740, +0.107377884471737670, 0.107328173423494460, 0.107278462106931260, 0.107228750522171900, 0.107179038669340660, 0.107129326548561390, 0.107079614159959240, 0.107029901503658060, +0.106980188579782120, 0.106930475388455270, 0.106880761929802670, 0.106831048203948160, 0.106781334211015600, 0.106731619951130150, 0.106681905424415640, 0.106632190630996370, +0.106582475570996180, 0.106532760244540240, 0.106483044651752400, 0.106433328792756950, 0.106383612667677730, 0.106333896276639940, 0.106284179619767400, 0.106234462697184410, +0.106184745509014810, 0.106135028055383800, 0.106085310336415220, 0.106035592352233370, 0.105985874102962080, 0.105936155588726560, 0.105886436809650640, 0.105836717765858190, +0.105786998457474400, 0.105737278884623100, 0.105687559047428600, 0.105637838946014780, 0.105588118580506790, 0.105538397951028500, 0.105488677057704220, 0.105438955900657810, +0.105389234480014440, 0.105339512795898000, 0.105289790848432780, 0.105240068637742630, 0.105190346163952740, 0.105140623427187000, 0.105090900427569700, 0.105041177165224710, +0.104991453640277200, 0.104941729852851080, 0.104892005803070620, 0.104842281491059720, 0.104792556916943540, 0.104742832080845980, 0.104693106982890890, 0.104643381623203480, +0.104593656001907610, 0.104543930119127600, 0.104494203974987330, 0.104444477569611990, 0.104394750903125460, 0.104345023975652040, 0.104295296787315630, 0.104245569338241420, +0.104195841628553280, 0.104146113658375530, 0.104096385427832070, 0.104046656937048080, 0.103996928186147450, 0.103947199175254500, 0.103897469904493110, 0.103847740373988490, +0.103798010583864510, 0.103748280534245060, 0.103698550225255360, 0.103648819657019280, 0.103599088829661150, 0.103549357743304860, 0.103499626398075630, 0.103449894794097300, +0.103400162931494260, 0.103350430810390370, 0.103300698430910830, 0.103250965793179560, 0.103201232897320860, 0.103151499743458650, 0.103101766331718120, 0.103052032662223190, +0.103002298735098170, 0.102952564550466960, 0.102902830108454790, 0.102853095409185520, 0.102803360452783100, 0.102753625239372700, 0.102703889769078250, 0.102654154042024060, +0.102604418058334060, 0.102554681818133440, 0.102504945321546140, 0.102455208568696460, 0.102405471559708310, 0.102355734294706930, 0.102305996773816220, 0.102256258997160510, +0.102206520964863710, 0.102156782677051060, 0.102107044133846440, 0.102057305335374230, 0.102007566281758290, 0.101957826973123890, 0.101908087409594920, 0.101858347591295740, +0.101808607518350230, 0.101758867190883660, 0.101709126609019910, 0.101659385772882920, 0.101609644682597890, 0.101559903338288770, 0.101510161740079860, 0.101460419888095120, +0.101410677782459780, 0.101360935423297730, 0.101311192810733350, 0.101261449944890540, 0.101211706825894560, 0.101161963453869310, 0.101112219828939140, 0.101062475951227980, +0.101012731820861080, 0.100962987437962350, 0.100913242802656150, 0.100863497915066410, 0.100813752775318340, 0.100764007383535910, 0.100714261739843020, 0.100664515844364910, +0.100614769697225520, 0.100565023298549190, 0.100515276648459870, 0.100465529747082810, 0.100415782594541910, 0.100366035190961560, 0.100316287536465680, 0.100266539631179510, +0.100216791475227010, 0.100167043068732530, 0.100117294411819990, 0.100067545504614660, 0.100017796347240460, 0.099968046939821781, 0.099918297282482541, 0.099868547375348005, +0.099818797218542088, 0.099769046812188733, 0.099719296156413215, 0.099669545251339448, 0.099619794097091832, 0.099570042693794270, 0.099520291041572048, 0.099470539140549111, +0.099420786990849816, 0.099371034592598120, 0.099321281945919271, 0.099271529050937210, 0.099221775907776338, 0.099172022516560585, 0.099122268877415209, 0.099072514990464169, +0.099022760855831837, 0.098973006473642169, 0.098923251844020413, 0.098873496967090538, 0.098823741842976473, 0.098773986471803507, 0.098724230853695569, 0.098674474988777044, +0.098624718877171905, 0.098574962519005396, 0.098525205914401490, 0.098475449063484558, 0.098425691966378570, 0.098375934623208802, 0.098326177034099183, 0.098276419199174125, +0.098226661118557587, 0.098176902792374829, 0.098127144220749821, 0.098077385403806949, 0.098027626341670171, 0.097977867034464761, 0.097928107482314689, 0.097878347685344355, +0.097828587643677703, 0.097778827357440035, 0.097729066826755279, 0.097679306051747433, 0.097629545032541759, 0.097579783769262213, 0.097530022262033209, 0.097480260510978717, +0.097430498516224012, 0.097380736277893065, 0.097330973796110262, 0.097281211070999601, 0.097231448102686344, 0.097181684891294473, 0.097131921436948376, 0.097082157739772051, +0.097032393799890759, 0.096982629617428498, 0.096932865192509654, 0.096883100525258198, 0.096833335615799446, 0.096783570464257340, 0.096733805070755879, 0.096684039435420352, +0.096634273558374714, 0.096584507439743394, 0.096534741079650363, 0.096484974478220922, 0.096435207635579057, 0.096385440551849152, 0.096335673227155222, 0.096285905661622539, +0.096236137855375103, 0.096186369808537314, 0.096136601521233156, 0.096086832993587945, 0.096037064225725638, 0.095987295217770691, 0.095937525969847046, 0.095887756482080033, +0.095837986754593638, 0.095788216787511829, 0.095738446580959910, 0.095688676135061879, 0.095638905449942163, 0.095589134525724748, 0.095539363362534921, 0.095489591960496695, +0.095439820319734497, 0.095390048440372299, 0.095340276322535417, 0.095290503966347848, 0.095240731371934020, 0.095190958539417919, 0.095141185468924860, 0.095091412160578856, +0.095041638614504306, 0.094991864830825223, 0.094942090809666910, 0.094892316551153377, 0.094842542055409054, 0.094792767322557939, 0.094742992352725333, 0.094693217146035263, +0.094643441702611700, 0.094593666022579972, 0.094543890106064080, 0.094494113953188463, 0.094444337564077122, 0.094394560938855385, 0.094344784077647237, 0.094295006980577134, +0.094245229647769060, 0.094195452079348360, 0.094145674275439031, 0.094095896236165516, 0.094046117961651826, 0.093996339452023278, 0.093946560707403884, 0.093896781727918086, +0.093847002513689881, 0.093797223064844629, 0.093747443381506312, 0.093697663463798944, 0.093647883311847854, 0.093598102925777069, 0.093548322305711015, 0.093498541451773720, +0.093448760364090500, 0.093398979042785393, 0.093349197487982843, 0.093299415699806848, 0.093249633678382751, 0.093199851423834579, 0.093150068936286773, 0.093100286215863359, +0.093050503262689668, 0.093000720076889712, 0.092950936658587974, 0.092901153007908438, 0.092851369124976463, 0.092801585009916060, 0.092751800662851269, 0.092702016083907407, +0.092652231273208499, 0.092602446230879029, 0.092552660957042995, 0.092502875451825742, 0.092453089715351308, 0.092403303747744150, 0.092353517549128294, 0.092303731119629071, +0.092253944459370532, 0.092204157568477135, 0.092154370447072892, 0.092104583095283174, 0.092054795513231993, 0.092005007701043834, 0.091955219658842707, 0.091905431386753972, +0.091855642884901653, 0.091805854153409791, 0.091756065192403730, 0.091706276002007509, 0.091656486582345598, 0.091606696933542037, 0.091556907055722170, 0.091507116949010023, +0.091457326613530107, 0.091407536049406421, 0.091357745256764336, 0.091307954235727878, 0.091258162986421545, 0.091208371508969363, 0.091158579803496689, 0.091108787870127578, +0.091058995708986484, 0.091009203320197463, 0.090959410703885885, 0.090909617860175762, 0.090859824789191607, 0.090810031491057444, 0.090760237965898646, 0.090710444213839253, +0.090660650235003318, 0.090610856029516185, 0.090561061597501921, 0.090511266939084997, 0.090461472054389466, 0.090411676943540686, 0.090361881606662725, 0.090312086043880066, +0.090262290255316735, 0.090212494241098132, 0.090162698001348282, 0.090112901536191697, 0.090063104845752417, 0.090013307930155814, 0.089963510789525941, 0.089913713423987282, +0.089863915833663918, 0.089814118018681194, 0.089764319979163176, 0.089714521715233905, 0.089664723227018781, 0.089614924514641855, 0.089565125578227614, 0.089515326417900110, +0.089465527033784742, 0.089415727426005551, 0.089365927594687047, 0.089316127539953286, 0.089266327261929637, 0.089216526760740170, 0.089166726036509394, 0.089116925089361351, +0.089067123919421440, 0.089017322526813727, 0.088967520911662698, 0.088917719074092433, 0.088867917014228304, 0.088818114732194392, 0.088768312228114751, 0.088718509502114767, +0.088668706554318508, 0.088618903384850484, 0.088569099993834763, 0.088519296381396731, 0.088469492547660455, 0.088419688492750448, 0.088369884216790776, 0.088320079719906838, +0.088270275002222703, 0.088220470063862882, 0.088170664904951443, 0.088120859525613784, 0.088071053925973974, 0.088021248106156524, 0.087971442066285530, 0.087921635806486362, +0.087871829326883102, 0.087822022627600263, 0.087772215708761939, 0.087722408570493501, 0.087672601212919060, 0.087622793636162669, 0.087572985840349726, 0.087523177825604329, +0.087473369592050987, 0.087423561139813769, 0.087373752469018101, 0.087323943579788052, 0.087274134472248133, 0.087224325146522438, 0.087174515602736383, 0.087124705841014033, +0.087074895861479915, 0.087025085664258123, 0.086975275249474057, 0.086925464617251799, 0.086875653767715888, 0.086825842700990391, 0.086776031417200722, 0.086726219916470990, +0.086676408198925262, 0.086626596264688951, 0.086576784113886154, 0.086526971746641396, 0.086477159163078771, 0.086427346363323679, 0.086377533347500229, 0.086327720115732948, +0.086277906668145915, 0.086228093004864573, 0.086178279126012988, 0.086128465031715701, 0.086078650722096819, 0.086028836197281744, 0.085979021457394583, 0.085929206502559863, +0.085879391332901692, 0.085829575948545483, 0.085779760349615333, 0.085729944536235350, 0.085680128508530934, 0.085630312266626193, 0.085580495810645682, 0.085530679140713495, +0.085480862256955045, 0.085431045159494429, 0.085381227848456212, 0.085331410323964491, 0.085281592586144664, 0.085231774635120869, 0.085181956471017645, 0.085132138093959073, +0.085082319504070608, 0.085032500701476346, 0.084982681686300826, 0.084932862458668157, 0.084883043018703780, 0.084833223366531790, 0.084783403502276297, 0.084733583426062742, +0.084683763138015233, 0.084633942638258311, 0.084584121926916098, 0.084534301004114007, 0.084484479869976176, 0.084434658524627143, 0.084384836968191018, 0.084335015200793256, +0.084285193222557939, 0.084235371033609646, 0.084185548634072488, 0.084135726024071891, 0.084085903203731979, 0.084036080173177319, 0.083986256932532005, 0.083936433481921507, +0.083886609821469907, 0.083836785951301798, 0.083786961871541277, 0.083737137582313784, 0.083687313083743456, 0.083637488375954402, 0.083587663459072065, 0.083537838333220579, +0.083488012998524486, 0.083438187455107921, 0.083388361703096339, 0.083338535742613851, 0.083288709573785008, 0.083238883196733962, 0.083189056611586154, 0.083139229818465693, +0.083089402817497160, 0.083039575608804692, 0.082989748192513715, 0.082939920568748368, 0.082890092737633217, 0.082840264699292399, 0.082790436453851354, 0.082740608001434221, +0.082690779342165122, 0.082640950476169525, 0.082591121403571541, 0.082541292124495763, 0.082491462639066315, 0.082441632947408652, 0.082391803049646897, 0.082341972945905645, +0.082292142636309004, 0.082242312120982458, 0.082192481400050130, 0.082142650473636614, 0.082092819341866005, 0.082042988004863801, 0.081993156462754124, 0.081943324715661570, +0.081893492763710246, 0.081843660607025637, 0.081793828245731878, 0.081743995679953108, 0.081694162909814780, 0.081644329935441060, 0.081594496756956500, 0.081544663374485266, +0.081494829788152812, 0.081444995998083289, 0.081395162004401278, 0.081345327807230916, 0.081295493406697672, 0.081245658802925697, 0.081195823996039571, 0.081145988986163445, +0.081096153773422788, 0.081046318357941752, 0.080996482739844916, 0.080946646919256432, 0.080896810896301782, 0.080846974671105090, 0.080797138243790978, 0.080747301614483569, +0.080697464783308345, 0.080647627750389458, 0.080597790515851059, 0.080547953079818629, 0.080498115442416321, 0.080448277603768728, 0.080398439563999988, 0.080348601323235597, +0.080298762881599692, 0.080248924239216896, 0.080199085396211331, 0.080149246352708509, 0.080099407108832565, 0.080049567664708110, 0.079999728020459279, 0.079949888176211584, +0.079900048132089160, 0.079850207888216618, 0.079800367444718120, 0.079750526801719138, 0.079700685959343848, 0.079650844917716387, 0.079601003676962268, 0.079551162237205639, +0.079501320598571096, 0.079451478761182817, 0.079401636725166272, 0.079351794490645652, 0.079301952057745539, 0.079252109426590098, 0.079202266597304824, 0.079152423570013897, +0.079102580344841897, 0.079052736921913017, 0.079002893301352725, 0.078953049483285215, 0.078903205467835066, 0.078853361255126472, 0.078803516845284902, 0.078753672238434561, +0.078703827434699586, 0.078653982434205474, 0.078604137237076419, 0.078554291843437027, 0.078504446253411450, 0.078454600467125199, 0.078404754484702452, 0.078354908306267831, +0.078305061931945474, 0.078255215361860919, 0.078205368596138330, 0.078155521634902303, 0.078105674478277043, 0.078055827126388033, 0.078005979579359452, 0.077956131837315937, +0.077906283900381637, 0.077856435768682078, 0.077806587442341424, 0.077756738921483853, 0.077706890206234891, 0.077657041296718687, 0.077607192193059893, 0.077557342895382672, +0.077507493403812536, 0.077457643718473662, 0.077407793839490688, 0.077357943766987777, 0.077308093501090455, 0.077258243041922900, 0.077208392389609748, 0.077158541544275150, +0.077108690506044658, 0.077058839275042437, 0.077008987851393110, 0.076959136235220882, 0.076909284426651237, 0.076859432425808394, 0.076809580232816976, 0.076759727847801162, +0.076709875270886463, 0.076660022502197084, 0.076610169541857190, 0.076560316389992333, 0.076510463046726679, 0.076460609512184863, 0.076410755786491091, 0.076360901869770861, +0.076311047762148379, 0.076261193463748281, 0.076211338974694759, 0.076161484295113338, 0.076111629425128197, 0.076061774364863971, 0.076011919114444881, 0.075962063673996438, +0.075912208043642834, 0.075862352223508706, 0.075812496213718258, 0.075762640014397004, 0.075712783625669161, 0.075662927047658909, 0.075613070280491787, 0.075563213324291986, +0.075513356179184157, 0.075463498845292479, 0.075413641322742517, 0.075363783611658436, 0.075313925712164900, 0.075264067624386116, 0.075214209348447594, 0.075164350884473555, +0.075114492232588648, 0.075064633392917052, 0.075014774365584319, 0.074964915150714656, 0.074915055748432699, 0.074865196158862668, 0.074815336382130074, 0.074765476418359150, +0.074715616267674090, 0.074665755930200445, 0.074615895406062394, 0.074566034695384600, 0.074516173798291299, 0.074466312714907987, 0.074416451445358897, 0.074366589989768681, +0.074316728348261543, 0.074266866520963037, 0.074217004507997356, 0.074167142309489162, 0.074117279925562676, 0.074067417356343437, 0.074017554601955651, 0.073967691662523968, +0.073917828538172622, 0.073867965229027152, 0.073818101735211764, 0.073768238056851121, 0.073718374194069430, 0.073668510146992258, 0.073618645915743811, 0.073568781500448308, +0.073518916901231288, 0.073469052118216985, 0.073419187151530035, 0.073369322001294687, 0.073319456667636479, 0.073269591150679617, 0.073219725450548792, 0.073169859567368198, +0.073119993501263414, 0.073070127252358633, 0.073020260820778532, 0.072970394206647346, 0.072920527410090613, 0.072870660431232553, 0.072820793270197859, 0.072770925927110722, +0.072721058402096722, 0.072671190695280080, 0.072621322806785016, 0.072571454736737082, 0.072521586485260511, 0.072471718052479983, 0.072421849438519703, 0.072371980643505252, +0.072322111667560848, 0.072272242510811172, 0.072222373173380428, 0.072172503655394210, 0.072122633956976726, 0.072072764078252666, 0.072022894019346237, 0.071973023780383033, +0.071923153361487260, 0.071873282762783611, 0.071823411984396304, 0.071773541026450907, 0.071723669889071667, 0.071673798572382805, 0.071623927076509900, 0.071574055401577158, +0.071524183547709286, 0.071474311515030517, 0.071424439303666404, 0.071374566913741208, 0.071324694345379580, 0.071274821598705781, 0.071224948673845365, 0.071175075570922577, +0.071125202290062098, 0.071075328831388188, 0.071025455195026385, 0.070975581381100938, 0.070925707389736553, 0.070875833221057435, 0.070825958875189193, 0.070776084352256061, +0.070726209652382258, 0.070676334775693378, 0.070626459722313670, 0.070576584492367811, 0.070526709085980036, 0.070476833503275937, 0.070426957744379765, 0.070377081809416195, +0.070327205698509462, 0.070277329411785175, 0.070227452949367553, 0.070177576311381301, 0.070127699497950668, 0.070077822509201235, 0.070027945345257234, 0.069978068006243385, +0.069928190492283909, 0.069878312803504400, 0.069828434940029119, 0.069778556901982744, 0.069728678689489537, 0.069678800302675079, 0.069628921741663616, 0.069579043006579397, +0.069529164097548030, 0.069479285014693734, 0.069429405758141244, 0.069379526328014779, 0.069329646724439961, 0.069279766947541011, 0.069229886997442647, 0.069180006874269132, +0.069130126578146031, 0.069080246109197621, 0.069030365467548593, 0.068980484653323210, 0.068930603666647050, 0.068880722507644390, 0.068830841176439922, 0.068780959673157907, +0.068731077997923939, 0.068681196150862267, 0.068631314132097165, 0.068581431941754228, 0.068531549579957704, 0.068481667046832312, 0.068431784342502300, 0.068381901467093276, +0.068332018420729501, 0.068282135203535682, 0.068232251815636080, 0.068182368257156289, 0.068132484528220572, 0.068082600628953646, 0.068032716559479775, 0.067982832319924566, +0.067932947910412267, 0.067883063331067597, 0.067833178582014833, 0.067783293663379568, 0.067733408575286064, 0.067683523317858596, 0.067633637891222759, 0.067583752295502827, +0.067533866530823522, 0.067483980597309090, 0.067434094495085167, 0.067384208224276002, 0.067334321785006326, 0.067284435177400390, 0.067234548401583813, 0.067184661457680858, +0.067134774345816259, 0.067084887066114277, 0.067034999618700519, 0.066985112003699276, 0.066935224221235240, 0.066885336271432699, 0.066835448154417262, 0.066785559870313205, +0.066735671419245260, 0.066685782801337676, 0.066635894016716088, 0.066586005065504758, 0.066536115947827976, 0.066486226663811349, 0.066436337213579152, 0.066386447597256121, +0.066336557814966515, 0.066286667866835972, 0.066236777752988751, 0.066186887473549588, 0.066136997028642758, 0.066087106418393882, 0.066037215642927236, 0.065987324702367553, +0.065937433596839123, 0.065887542326467541, 0.065837650891377109, 0.065787759291692546, 0.065737867527538144, 0.065687975599039522, 0.065638083506320957, 0.065588191249506739, +0.065538298828722488, 0.065488406244092481, 0.065438513495741465, 0.065388620583793730, 0.065338727508374883, 0.065288834269609214, 0.065238940867621456, 0.065189047302535899, +0.065139153574478179, 0.065089259683572570, 0.065039365629943807, 0.064989471413716193, 0.064939577035015350, 0.064889682493965553, 0.064839787790691550, 0.064789892925317644, +0.064739997897969442, 0.064690102708771235, 0.064640207357847340, 0.064590311845323378, 0.064540416171323625, 0.064490520335972829, 0.064440624339395292, 0.064390728181716650, +0.064340831863061165, 0.064290935383553613, 0.064241038743318282, 0.064191141942480795, 0.064141244981165454, 0.064091347859496994, 0.064041450577599732, 0.063991553135599274, +0.063941655533619940, 0.063891757771786475, 0.063841859850223157, 0.063791961769055647, 0.063742063528408222, 0.063692165128405198, 0.063642266569172212, 0.063592367850833553, +0.063542468973513969, 0.063492569937337776, 0.063442670742430596, 0.063392771388916747, 0.063342871876920961, 0.063292972206567558, 0.063243072377982171, 0.063193172391289090, +0.063143272246613091, 0.063093371944078463, 0.063043471483810856, 0.062993570865934559, 0.062943670090574347, 0.062893769157854496, 0.062843868067900682, 0.062793966820837196, +0.062744065416788786, 0.062694163855879781, 0.062644262138235804, 0.062594360263981172, 0.062544458233240188, 0.062494556046138516, 0.062444653702800446, 0.062394751203350737, +0.062344848547913716, 0.062294945736615009, 0.062245042769578943, 0.062195139646930270, 0.062145236368793301, 0.062095332935293693, 0.062045429346555742, 0.061995525602704223, +0.061945621703863446, 0.061895717650159061, 0.061845813441715379, 0.061795909078657160, 0.061746004561108729, 0.061696099889195728, 0.061646195063042482, 0.061596290082773300, +0.061546384948513840, 0.061496479660388410, 0.061446574218521788, 0.061396668623038289, 0.061346762874063557, 0.061296856971721922, 0.061246950916138139, 0.061197044707436539, +0.061147138345742771, 0.061097231831181154, 0.061047325163876461, 0.060997418343953010, 0.060947511371536457, 0.060897604246751121, 0.060847696969721782, 0.060797789540572751, +0.060747881959429692, 0.060697974226416929, 0.060648066341658792, 0.060598158305280925, 0.060548250117407665, 0.060498341778163781, 0.060448433287673596, 0.060398524646062775, +0.060348615853455634, 0.060298706909976962, 0.060248797815751078, 0.060198888570903643, 0.060148979175558982, 0.060099069629841878, 0.060049159933876654, 0.059999250087788975, +0.059949340091703170, 0.059899429945744015, 0.059849519650035841, 0.059799609204704313, 0.059749698609873760, 0.059699787865668964, 0.059649876972214251, 0.059599965929635290, +0.059550054738056420, 0.059500143397601964, 0.059450231908397592, 0.059400320270567644, 0.059350408484236894, 0.059300496549529680, 0.059250584466571665, 0.059200672235487188, +0.059150759856401038, 0.059100847329437538, 0.059050934654722366, 0.059001021832379853, 0.058951108862534789, 0.058901195745311510, 0.058851282480835689, 0.058801369069231654, +0.058751455510624204, 0.058701541805137661, 0.058651627952897717, 0.058601713954028696, 0.058551799808654957, 0.058501885516902150, 0.058451971078894639, 0.058402056494757194, +0.058352141764614167, 0.058302226888591227, 0.058252311866812720, 0.058202396699403434, 0.058152481386487716, 0.058102565928191234, 0.058052650324638341, 0.058002734575953820, +0.057952818682262014, 0.057902902643688615, 0.057852986460357955, 0.057803070132394822, 0.057753153659923583, 0.057703237043069892, 0.057653320281958118, 0.057603403376712589, +0.057553486327459005, 0.057503569134321697, 0.057453651797425474, 0.057403734316894675, 0.057353816692854984, 0.057303898925430745, 0.057253981014746769, 0.057204062960927393, +0.057154144764098302, 0.057104226424383848, 0.057054307941908827, 0.057004389316797598, 0.056954470549175837, 0.056904551639167897, 0.056854632586898581, 0.056804713392492240, +0.056754794056074552, 0.056704874577769890, 0.056654954957702591, 0.056605035195998347, 0.056555115292781524, 0.056505195248176904, 0.056455275062308859, 0.056405354735303059, +0.056355434267283885, 0.056305513658376119, 0.056255592908704126, 0.056205672018393590, 0.056155750987568885, 0.056105829816354792, 0.056055908504875684, 0.056005987053257253, +0.055956065461623850, 0.055906143730100284, 0.055856221858810916, 0.055806299847881435, 0.055756377697436202, 0.055706455407600032, 0.055656532978497278, 0.055606610410253630, +0.055556687702993462, 0.055506764856841126, 0.055456841871922326, 0.055406918748361414, 0.055356995486283214, 0.055307072085812078, 0.055257148547073705, 0.055207224870192459, +0.055157301055293158, 0.055107377102500153, 0.055057453011939150, 0.055007528783734522, 0.054957604418011063, 0.054907679914893155, 0.054857755274506488, 0.054807830496975435, +0.054757905582424805, 0.054707980530978965, 0.054658055342763620, 0.054608130017903135, 0.054558204556521883, 0.054508278958745562, 0.054458353224698539, 0.054408427354505642, +0.054358501348291226, 0.054308575206181008, 0.054258648928299347, 0.054208722514771060, 0.054158795965720527, 0.054108869281273446, 0.054058942461554196, 0.054009015506687588, +0.053959088416797994, 0.053909161192011126, 0.053859233832451357, 0.053809306338243504, 0.053759378709511939, 0.053709450946382367, 0.053659523048979176, 0.053609595017426730, +0.053559666851850735, 0.053509738552375577, 0.053459810119126074, 0.053409881552226597, 0.053359952851802867, 0.053310024017979254, 0.053260095050880578, 0.053210165950631216, +0.053160236717356889, 0.053110307351181975, 0.053060377852231284, 0.053010448220629211, 0.052960518456501453, 0.052910588559972403, 0.052860658531166886, 0.052810728370209274, +0.052760798077225286, 0.052710867652339302, 0.052660937095676152, 0.052611006407360210, 0.052561075587517200, 0.052511144636271503, 0.052461213553747499, 0.052411282340070905, +0.052361350995366103, 0.052311419519757922, 0.052261487913370749, 0.052211556176330304, 0.052161624308760965, 0.052111692310787570, 0.052061760182534500, 0.052011827924127466, +0.051961895535690868, 0.051911963017349530, 0.051862030369227839, 0.051812097591451521, 0.051762164684144955, 0.051712231647432980, 0.051662298481439980, 0.051612365186291677, +0.051562431762112462, 0.051512498209026723, 0.051462564527160186, 0.051412630716637230, 0.051362696777582706, 0.051312762710120988, 0.051262828514377815, 0.051212894190477566, +0.051162959738545080, 0.051113025158704757, 0.051063090451082309, 0.051013155615802136, 0.050963220652989076, 0.050913285562767523, 0.050863350345263195, 0.050813415000600493, +0.050763479528904254, 0.050713543930298872, 0.050663608204910074, 0.050613672352862252, 0.050563736374279813, 0.050513800269288471, 0.050463864038012632, 0.050413927680577127, +0.050363991197106363, 0.050314054587726066, 0.050264117852560630, 0.050214180991734900, 0.050164244005373275, 0.050114306893601482, 0.050064369656543928, 0.050014432294325444, +0.049964494807070436, 0.049914557194904632, 0.049864619457952439, 0.049814681596338700, 0.049764743610187810, 0.049714805499625501, 0.049664867264776182, 0.049614928905764251, +0.049564990422715442, 0.049515051815754156, 0.049465113085005244, 0.049415174230593099, 0.049365235252643469, 0.049315296151280746, 0.049265356926629783, 0.049215417578814986, +0.049165478107962089, 0.049115538514195499, 0.049065598797640060, 0.049015658958420180, 0.048965718996661592, 0.048915778912488717, 0.048865838706026385, 0.048815898377399018, +0.048765957926732342, 0.048716017354150778, 0.048666076659779171, 0.048616135843741928, 0.048566194906164782, 0.048516253847172154, 0.048466312666888452, 0.048416371365439408, +0.048366429942949436, 0.048316488399543389, 0.048266546735345674, 0.048216604950482043, 0.048166663045076892, 0.048116721019255092, 0.048066778873141036, 0.048016836606860486, +0.047966894220537841, 0.047916951714297953, 0.047867009088265251, 0.047817066342565467, 0.047767123477323016, 0.047717180492662763, 0.047667237388709108, 0.047617294165587805, +0.047567350823423268, 0.047517407362339906, 0.047467463782463477, 0.047417520083918384, 0.047367576266829491, 0.047317632331321212, 0.047267688277519294, 0.047217744105548159, +0.047167799815532666, 0.047117855407597227, 0.047067910881867597, 0.047017966238468184, 0.046968021477523859, 0.046918076599159031, 0.046868131603499459, 0.046818186490669565, +0.046768241260794194, 0.046718295913997780, 0.046668350450406071, 0.046618404870143487, 0.046568459173334444, 0.046518513360104700, 0.046468567430578672, 0.046418621384881224, +0.046368675223136778, 0.046318728945471087, 0.046268782552008579, 0.046218836042874113, 0.046168889418192111, 0.046118942678088332, 0.046068995822687191, 0.046019048852113560, +0.045969101766491868, 0.045919154565947869, 0.045869207250605976, 0.045819259820591068, 0.045769312276027561, 0.045719364617041229, 0.045669416843756479, 0.045619468956298183, +0.045569520954790776, 0.045519572839360006, 0.045469624610130308, 0.045419676267226108, 0.045369727810773156, 0.045319779240895884, 0.045269830557719166, 0.045219881761367424, +0.045169932851966424, 0.045119983829640595, 0.045070034694514802, 0.045020085446713480, 0.044970136086362390, 0.044920186613585961, 0.044870237028509057, 0.044820287331256127, +0.044770337521952919, 0.044720387600723860, 0.044670437567693844, 0.044620487422987284, 0.044570537166729950, 0.044520586799046268, 0.044470636320060680, 0.044420685729898948, +0.044370735028685500, 0.044320784216545214, 0.044270833293602520, 0.044220882259983191, 0.044170931115811655, 0.044120979861212793, 0.044071028496311032, 0.044021077021232147, +0.043971125436100572, 0.043921173741041181, 0.043871221936178414, 0.043821270021638034, 0.043771317997544475, 0.043721365864022629, 0.043671413621196919, 0.043621461269193119, +0.043571508808135664, 0.043521556238149003, 0.043471603559358883, 0.043421650771889760, 0.043371697875866512, 0.043321744871413576, 0.043271791758656718, 0.043221838537720381, +0.043171885208729451, 0.043121931771808356, 0.043071978227082884, 0.043022024574677464, 0.042972070814716982, 0.042922116947325881, 0.042872162972629926, 0.042822208890753569, +0.042772254701821687, 0.042722300405958723, 0.042672346003290458, 0.042622391493941321, 0.042572436878036211, 0.042522482155699565, 0.042472527327057155, 0.042422572392233425, +0.042372617351352823, 0.042322662204541117, 0.042272706951922763, 0.042222751593622633, 0.042172796129765183, 0.042122840560476195, 0.042072884885880096, 0.042022929106101788, +0.041972973221265711, 0.041923017231497647, 0.041873061136922039, 0.041823104937663780, 0.041773148633847318, 0.041723192225598421, 0.041673235713041545, 0.041623279096301584, +0.041573322375502979, 0.041523365550771511, 0.041473408622231631, 0.041423451590007786, 0.041373494454225751, 0.041323537215009983, 0.041273579872485373, 0.041223622426776373, +0.041173664878008755, 0.041123707226306976, 0.041073749471795928, 0.041023791614600062, 0.040973833654845165, 0.040923875592655680, 0.040873917428156506, 0.040823959161472100, +0.040774000792728235, 0.040724042322049368, 0.040674083749560400, 0.040624125075385771, 0.040574166299651278, 0.040524207422481369, 0.040474248444000500, 0.040424289364334454, +0.040374330183607678, 0.040324370901945079, 0.040274411519471115, 0.040224452036311559, 0.040174492452590874, 0.040124532768433960, 0.040074572983965266, 0.040024613099310588, +0.039974653114594375, 0.039924693029941533, 0.039874732845476511, 0.039824772561325099, 0.039774812177611758, 0.039724851694461390, 0.039674891111998449, 0.039624930430348718, +0.039574969649636665, 0.039525008769986741, 0.039475047791524741, 0.039425086714375120, 0.039375125538662785, 0.039325164264512193, 0.039275202892049131, 0.039225241421398063, +0.039175279852683889, 0.039125318186031072, 0.039075356421565406, 0.039025394559411349, 0.038975432599693806, 0.038925470542537234, 0.038875508388067435, 0.038825546136408859, +0.038775583787686425, 0.038725621342024584, 0.038675658799549130, 0.038625696160384533, 0.038575733424655693, 0.038525770592487081, 0.038475807664004477, 0.038425844639332365, +0.038375881518595188, 0.038325918301918754, 0.038275954989427527, 0.038225991581246413, 0.038176028077499875, 0.038126064478313709, 0.038076100783812385, 0.038026136994120802, +0.037976173109363437, 0.037926209129666086, 0.037876245055153211, 0.037826280885949720, 0.037776316622180083, 0.037726352263970100, 0.037676387811444237, 0.037626423264727406, +0.037576458623944070, 0.037526493889220032, 0.037476529060679761, 0.037426564138447721, 0.037376599122649720, 0.037326634013410215, 0.037276668810854126, 0.037226703515105923, +0.037176738126291402, 0.037126772644535039, 0.037076807069961748, 0.037026841402695986, 0.036976875642863574, 0.036926909790588963, 0.036876943845997087, 0.036826977809212402, +0.036777011680360717, 0.036727045459566503, 0.036677079146954679, 0.036627112742649709, 0.036577146246777402, 0.036527179659462228, 0.036477212980828663, 0.036427246211002511, +0.036377279350108239, 0.036327312398270771, 0.036277345355614575, 0.036227378222265468, 0.036177410998347904, 0.036127443683986821, 0.036077476279306686, 0.036027508784433296, +0.035977541199491141, 0.035927573524605134, 0.035877605759899747, 0.035827637905500788, 0.035777669961532733, 0.035727701928120505, 0.035677733805388578, 0.035627765593462764, +0.035577797292467531, 0.035527828902527807, 0.035477860423768062, 0.035427891856314120, 0.035377923200290443, 0.035327954455821514, 0.035277985623033137, 0.035228016702049801, +0.035178047692996428, 0.035128078595997488, 0.035078109411178796, 0.035028140138664829, 0.034978170778580508, 0.034928201331050325, 0.034878231796200074, 0.034828262174154252, +0.034778292465037768, 0.034728322668975110, 0.034678352786092090, 0.034628382816513190, 0.034578412760363331, 0.034528442617766997, 0.034478472388850004, 0.034428502073736822, +0.034378531672551949, 0.034328561185421186, 0.034278590612469018, 0.034228619953820379, 0.034178649209599739, 0.034128678379932928, 0.034078707464944416, 0.034028736464759138, +0.033978765379501570, 0.033928794209297543, 0.033878822954271519, 0.033828851614548447, 0.033778880190252797, 0.033728908681510385, 0.033678937088445708, 0.033628965411183688, +0.033578993649848815, 0.033529021804566891, 0.033479049875462422, 0.033429077862659883, 0.033379105766285090, 0.033329133586462535, 0.033279161323317138, 0.033229188976973405, +0.033179216547557136, 0.033129244035192830, 0.033079271440005414, 0.033029298762119373, 0.032979326001660529, 0.032929353158753373, 0.032879380233522833, 0.032829407226093399, +0.032779434136590888, 0.032729460965139796, 0.032679487711865046, 0.032629514376891135, 0.032579540960343885, 0.032529567462347780, 0.032479593883027312, 0.032429620222508303, +0.032379646480915243, 0.032329672658373068, 0.032279698755006268, 0.032229724770940667, 0.032179750706300754, 0.032129776561211458, 0.032079802335797283, 0.032029828030184046, +0.031979853644496237, 0.031929879178858790, 0.031879904633396204, 0.031829930008234301, 0.031779955303497580, 0.031729980519310960, 0.031680005655798947, 0.031630030713087370, +0.031580055691300707, 0.031530080590563912, 0.031480105411001470, 0.031430130152739211, 0.031380154815901617, 0.031330179400613202, 0.031280203906999780, 0.031230228335185847, +0.031180252685296343, 0.031130276957455762, 0.031080301151789936, 0.031030325268423354, 0.030980349307480962, 0.030930373269087250, 0.030880397153368048, 0.030830420960447857, +0.030780444690451610, 0.030730468343503809, 0.030680491919730282, 0.030630515419255523, 0.030580538842204477, 0.030530562188701638, 0.030480585458872840, 0.030430608652842576, +0.030380631770735349, 0.030330654812676987, 0.030280677778791985, 0.030230700669205291, 0.030180723484041400, 0.030130746223426146, 0.030080768887484025, 0.030030791476339982, +0.029980813990118517, 0.029930836428945458, 0.029880858792945310, 0.029830881082243015, 0.029780903296963073, 0.029730925437231319, 0.029680947503172250, 0.029630969494910810, +0.029580991412571506, 0.029531013256280166, 0.029481035026161291, 0.029431056722339387, 0.029381078344940286, 0.029331099894088487, 0.029281121369908937, 0.029231142772526142, +0.029181164102065935, 0.029131185358652816, 0.029081206542411732, 0.029031227653467190, 0.028981248691945023, 0.028931269657969733, 0.028881290551666269, 0.028831311373159137, +0.028781332122574169, 0.028731352800035869, 0.028681373405669189, 0.028631393939598630, 0.028581414401950032, 0.028531434792847896, 0.028481455112417176, 0.028431475360782370, +0.028381495538069325, 0.028331515644402536, 0.028281535679906517, 0.028231555644707102, 0.028181575538928798, 0.028131595362696556, 0.028081615116134880, 0.028031634799369608, +0.027981654412525252, 0.027931673955726762, 0.027881693429098641, 0.027831712832766729, 0.027781732166855536, 0.027731751431490013, 0.027681770626794666, 0.027631789752895340, +0.027581808809916536, 0.027531827797983213, 0.027481846717219875, 0.027431865567752362, 0.027381884349705187, 0.027331903063202857, 0.027281921708371216, 0.027231940285334769, +0.027181958794218471, 0.027131977235146831, 0.027081995608245691, 0.027032013913639564, 0.026982032151453401, 0.026932050321811715, 0.026882068424840349, 0.026832086460663811, +0.026782104429407053, 0.026732122331194593, 0.026682140166152273, 0.026632157934404599, 0.026582175636076531, 0.026532193271292581, 0.026482210840178589, 0.026432228342859073, +0.026382245779458541, 0.026332263150102841, 0.026282280454916481, 0.026232297694024419, 0.026182314867551168, 0.026132331975622577, 0.026082349018363156, 0.026032365995897859, +0.025982382908351205, 0.025932399755849038, 0.025882416538515873, 0.025832433256476665, 0.025782449909855929, 0.025732466498779513, 0.025682483023371932, 0.025632499483758141, +0.025582515880062658, 0.025532532212411332, 0.025482548480928673, 0.025432564685739199, 0.025382580826968759, 0.025332596904741864, 0.025282612919183479, 0.025232628870418116, +0.025182644758571626, 0.025132660583768524, 0.025082676346133773, 0.025032692045791883, 0.024982707682868709, 0.024932723257488767, 0.024882738769777014, 0.024832754219857971, +0.024782769607857486, 0.024732784933900080, 0.024682800198110710, 0.024632815400613895, 0.024582830541535483, 0.024532845620999999, 0.024482860639132398, 0.024432875596057203, +0.024382890491900264, 0.024332905326786097, 0.024282920100839222, 0.024232934814185494, 0.024182949466949426, 0.024132964059255985, 0.024082978591229692, 0.024032993062996392, +0.023983007474680611, 0.023933021826407313, 0.023883036118301018, 0.023833050350487574, 0.023783064523091504, 0.023733078636237772, 0.023683092690050901, 0.023633106684656742, +0.023583120620179816, 0.023533134496745090, 0.023483148314477082, 0.023433162073501646, 0.023383175773943308, 0.023333189415926586, 0.023283202999577333, 0.023233216525020074, +0.023183229992379772, 0.023133243401780954, 0.023083256753349466, 0.023033270047209842, 0.022983283283487040, 0.022933296462305585, 0.022883309583791336, 0.022833322648068810, +0.022783335655262978, 0.022733348605498364, 0.022683361498900823, 0.022633374335594876, 0.022583387115705494, 0.022533399839357201, 0.022483412506675852, 0.022433425117785972, +0.022383437672812083, 0.022333450171880046, 0.022283462615114383, 0.022233475002640064, 0.022183487334581614, 0.022133499611064887, 0.022083511832214416, 0.022033523998155162, +0.021983536109011652, 0.021933548164909750, 0.021883560165973974, 0.021833572112329301, 0.021783584004100253, 0.021733595841412687, 0.021683607624391133, 0.021633619353160560, +0.021583631027845492, 0.021533642648571792, 0.021483654215463988, 0.021433665728647047, 0.021383677188245496, 0.021333688594385197, 0.021283699947190676, 0.021233711246786462, +0.021183722493298415, 0.021133733686851060, 0.021083744827569369, 0.021033755915577875, 0.020983766951002434, 0.020933777933967578, 0.020883788864598275, 0.020833799743019056, +0.020783810569355781, 0.020733821343732979, 0.020683832066275627, 0.020633842737108249, 0.020583853356356707, 0.020533863924145534, 0.020483874440599698, 0.020433884905843733, +0.020383895320003502, 0.020333905683203531, 0.020283915995568353, 0.020233926257223825, 0.020183936468294486, 0.020133946628905303, 0.020083956739180810, 0.020033966799246870, +0.019983976809228015, 0.019933986769249214, 0.019883996679435006, 0.019834006539911245, 0.019784016350802472, 0.019734026112233658, 0.019684035824329333, 0.019634045487215365, +0.019584055101016278, 0.019534064665857057, 0.019484074181862231, 0.019434083649157663, 0.019384093067867886, 0.019334102438117430, 0.019284111760032165, 0.019234121033736621, +0.019184130259355770, 0.019134139437014152, 0.019084148566837631, 0.019034157648950736, 0.018984166683478448, 0.018934175670545301, 0.018884184610277157, 0.018834193502798552, +0.018784202348234462, 0.018734211146709423, 0.018684219898349300, 0.018634228603278628, 0.018584237261622383, 0.018534245873505103, 0.018484254439052650, 0.018434262958389562, +0.018384271431640373, 0.018334279858930949, 0.018284288240385825, 0.018234296576129981, 0.018184304866287953, 0.018134313110985605, 0.018084321310347474, 0.018034329464498539, +0.017984337573563339, 0.017934345637667739, 0.017884353656936271, 0.017834361631493923, 0.017784369561465226, 0.017734377446976046, 0.017684385288150927, 0.017634393085114840, +0.017584400837992332, 0.017534408546909262, 0.017484416211990171, 0.017434423833360042, 0.017384431411143406, 0.017334438945466137, 0.017284446436452772, 0.017234453884227844, +0.017184461288917225, 0.017134468650645454, 0.017084475969537515, 0.017034483245717939, 0.016984490479312598, 0.016934497670446032, 0.016884504819243220, 0.016834511925828705, +0.016784518990328352, 0.016734526012866704, 0.016684532993568736, 0.016634539932558996, 0.016584546829963350, 0.016534553685906336, 0.016484560500512935, 0.016434567273907692, +0.016384574006216474, 0.016334580697563824, 0.016284587348074274, 0.016234593957873703, 0.016184600527086642, 0.016134607055838083, 0.016084613544252564, 0.016034619992455954, +0.015984626400572792, 0.015934632768728065, 0.015884639097046314, 0.015834645385653406, 0.015784651634673887, 0.015734657844232738, 0.015684664014454501, 0.015634670145465050, +0.015584676237388920, 0.015534682290351100, 0.015484688304476132, 0.015434694279889886, 0.015384700216716904, 0.015334706115081729, 0.015284711975110232, 0.015234717796926953, +0.015184723580656883, 0.015134729326424557, 0.015084735034355853, 0.015034740704575313, 0.014984746337207918, 0.014934751932378216, 0.014884757490212076, 0.014834763010834045, +0.014784768494369103, 0.014734773940941798, 0.014684779350678002, 0.014634784723702257, 0.014584790060139552, 0.014534795360114426, 0.014484800623752755, 0.014434805851179084, +0.014384811042518398, 0.014334816197895240, 0.014284821317435487, 0.014234826401263679, 0.014184831449504361, 0.014134836462283409, 0.014084841439725366, 0.014034846381955219, +0.013984851289097513, 0.013934856161278122, 0.013884860998621591, 0.013834865801252906, 0.013784870569296614, 0.013734875302878589, 0.013684880002123376, 0.013634884667155962, +0.013584889298100894, 0.013534893895084046, 0.013484898458229963, 0.013434902987663635, 0.013384907483509605, 0.013334911945893750, 0.013284916374940616, 0.013234920770774745, +0.013184925133522018, 0.013134929463306978, 0.013084933760254613, 0.013034938024489471, 0.012984942256137427, 0.012934946455323027, 0.012884950622171262, 0.012834954756806675, +0.012784958859355147, 0.012734962929941222, 0.012684966968689888, 0.012634970975725694, 0.012584974951174515, 0.012534978895160901, 0.012484982807809837, 0.012434986689245874, +0.012384990539594886, 0.012334994358981425, 0.012284998147530032, 0.012235001905366588, 0.012185005632615639, 0.012135009329402176, 0.012085012995850746, 0.012035016632087227, +0.011985020238236168, 0.011935023814422557, 0.011885027360770942, 0.011835030877407202, 0.011785034364455887, 0.011735037822041985, 0.011685041250290044, 0.011635044649325946, +0.011585048019274234, 0.011535051360259903, 0.011485054672407499, 0.011435057955842903, 0.011385061210690661, 0.011335064437075324, 0.011285067635122768, 0.011235070804957545, +0.011185073946704644, 0.011135077060488613, 0.011085080146435333, 0.011035083204669355, 0.010985086235315668, 0.010935089238498820, 0.010885092214344695, 0.010835095162977839, +0.010785098084523244, 0.010735100979105461, 0.010685103846850369, 0.010635106687882517, 0.010585109502326899, 0.010535112290308063, 0.010485115051951890, 0.010435117787382930, +0.010385120496726175, 0.010335123180106175, 0.010285125837648811, 0.010235128469478633, 0.010185131075720189, 0.010135133656499361, 0.010085136211940699, 0.010035138742169197, +0.009985141247309405, 0.009935143727487203, 0.009885146182827142, 0.009835148613454215, 0.009785151019492972, 0.009735153401069296, 0.009685155758307737, 0.009635158091333288, +0.009585160400270500, 0.009535162685245254, 0.009485164946382102, 0.009435167183806039, 0.009385169397641613, 0.009335171588014706, 0.009285173755049872, 0.009235175898871659, +0.009185178019605951, 0.009135180117377297, 0.009085182192310694, 0.009035184244530689, 0.008985186274163171, 0.008935188281332685, 0.008885190266164227, 0.008835192228782351, +0.008785194169312938, 0.008735196087880540, 0.008685197984610153, 0.008635199859626325, 0.008585201713054942, 0.008535203545020555, 0.008485205355648159, 0.008435207145062306, +0.008385208913388878, 0.008335210660752429, 0.008285212387277509, 0.008235214093090002, 0.008185215778314459, 0.008135217443075878, 0.008085219087498808, 0.008035220711709135, +0.007985222315831410, 0.007935223899990629, 0.007885225464311346, 0.007835227008919440, 0.007785228533939469, 0.007735230039496426, 0.007685231525714864, 0.007635232992720667, +0.007585234440638388, 0.007535235869593022, 0.007485237279709124, 0.007435238671112575, 0.007385240043927930, 0.007335241398280185, 0.007285242734293892, 0.007235244052094937, +0.007185245351807872, 0.007135246633557249, 0.007085247897468953, 0.007035249143667537, 0.006985250372277999, 0.006935251583424892, 0.006885252777234099, 0.006835253953830174, +0.006785255113338114, 0.006735256255882473, 0.006685257381589134, 0.006635258490582652, 0.006585259582988025, 0.006535260658929804, 0.006485261718533876, 0.006435262761924793, +0.006385263789227553, 0.006335264800566710, 0.006285265796068149, 0.006235266775856423, 0.006185267740056086, 0.006135268688793025, 0.006085269622191791, 0.006035270540377383, +0.005985271443474355, 0.005935272331608592, 0.005885273204904649, 0.005835274063487523, 0.005785274907481767, 0.005735275737013268, 0.005685276552206580, 0.005635277353186701, +0.005585278140078183, 0.005535278913006915, 0.005485279672097450, 0.005435280417474785, 0.005385281149263474, 0.005335281867589406, 0.005285282572577133, 0.005235283264351209, +0.005185283943037521, 0.005135284608760623, 0.005085285261645514, 0.005035285901816748, 0.004985286529400210, 0.004935287144520456, 0.004885287747302485, 0.004835288337870850, +0.004785288916351439, 0.004735289482868805, 0.004685290037547947, 0.004635290580513421, 0.004585291111891111, 0.004535291631805574, 0.004485292140381809, 0.004435292637744368, +0.004385293124019140, 0.004335293599330679, 0.004285294063803541, 0.004235294517563611, 0.004185294960735444, 0.004135295393444041, 0.004085295815813955, 0.004035296227971073, +0.003985296630039951, 0.003935297022145587, 0.003885297404412537, 0.003835297776966687, 0.003785298139932593, 0.003735298493435253, 0.003685298837599223, 0.003635299172550391, +0.003585299498413309, 0.003535299815312980, 0.003485300123373957, 0.003435300422722127, 0.003385300713482047, 0.003335300995778715, 0.003285301269736686, 0.003235301535481848, +0.003185301793138756, 0.003135302042831966, 0.003085302284687364, 0.003035302518829507, 0.002985302745383394, 0.002935302964473579, 0.002885303176225952, 0.002835303380765067, +0.002785303578215922, 0.002735303768703075, 0.002685303952352413, 0.002635304129288491, 0.002585304299636308, 0.002535304463520421, 0.002485304621066716, 0.002435304772399750, +0.002385304917644522, 0.002335305056925588, 0.002285305190368835, 0.002235305318098819, 0.002185305440240096, 0.002135305556918553, 0.002085305668258747, 0.002035305774385676, +0.001985305875423896, 0.001935305971499296, 0.001885306062736431, 0.001835306149260301, 0.001785306231195462, 0.001735306308667801, 0.001685306381801874, 0.001635306450722681, +0.001585306515554778, 0.001535306576424053, 0.001485306633455062, 0.001435306686772804, 0.001385306736501835, 0.001335306782768043, 0.001285306825695984, 0.001235306865410214, +0.001185306902036622, 0.001135306935699761, 0.001085306966524634, 0.001035306994635795, 0.000985307020159133, 0.000935307043219203, 0.000885307063941005, 0.000835307082449096, +0.000785307098869363, 0.000735307113326362, 0.000685307125945094, 0.000635307136850113, 0.000585307146167309, 0.000535307154021237, 0.000485307160536898, 0.000435307165838846, +0.000385307170052970, 0.000335307173303827, 0.000285307175716415, 0.000235307177415291, 0.000185307178526344, 0.000135307179174129, 0.000085307179483201, 0.000035307179579450, +-0.000014692820412569, -0.000064692820367856, -0.000114692820161855, -0.000164692819668678, -0.000214692818763769, -0.000264692817322128, -0.000314692815219199, -0.000364692812329094, +-0.000414692808527257, -0.000464692803688688, -0.000514692797688831, -0.000564692790401798, -0.000614692781703032, -0.000664692771467535, -0.000714692759570750, -0.000764692745886789, +-0.000814692730291096, -0.000864692712659116, -0.000914692692864960, -0.000964692670784071, -0.001014692646291452, -0.001064692619262544, -0.001114692589571461, -0.001164692557093647, +-0.001214692521704101, -0.001264692483278268, -0.001314692441690259, -0.001364692396815520, -0.001414692348529050, -0.001464692296706292, -0.001514692241221360, -0.001564692181949697, +-0.001614692118766304, -0.001664692051546625, -0.001714691980164771, -0.001764691904496188, -0.001814691824416319, -0.001864691739799276, -0.001914691650520504, -0.001964691556455003, +-0.002014691457478216, -0.002064691353464257, -0.002114691244288570, -0.002164691129826155, -0.002214691009952456, -0.002264690884541585, -0.002314690753468987, -0.002364690616609663, +-0.002414690473839055, -0.002464690325031278, -0.002514690170061775, -0.002564690008805546, -0.002614689841138036, -0.002664689666933358, -0.002714689486066956, -0.002764689298414273, +-0.002814689103849424, -0.002864688902247852, -0.002914688693484557, -0.002964688477434985, -0.003014688253973248, -0.003064688022974790, -0.003114687784314611, -0.003164687537868158, +-0.003214687283509542, -0.003264687021114207, -0.003314686750557155, -0.003364686471713830, -0.003414686184458345, -0.003464685888666144, -0.003514685584212229, -0.003564685270972043, +-0.003614684948819701, -0.003664684617630646, -0.003714684277279879, -0.003764683927642846, -0.003814683568593659, -0.003864683200007764, -0.003914682821760604, -0.003964682433726293, +-0.004014682035780276, -0.004064681627797554, -0.004114681209653572, -0.004164680781222442, -0.004214680342379612, -0.004264679893000080, -0.004314679432959292, -0.004364678962131362, +-0.004414678480391734, -0.004464677987615410, -0.004514677483677836, -0.004564676968453123, -0.004614676441816718, -0.004664675903643622, -0.004714675353809280, -0.004764674792187806, +-0.004814674218654644, -0.004864673633085242, -0.004914673035353711, -0.004964672425335498, -0.005014671802905603, -0.005064671167939473, -0.005114670520311221, -0.005164669859896293, +-0.005214669186569690, -0.005264668500206859, -0.005314667800681912, -0.005364667087870295, -0.005414666361647010, -0.005464665621887505, -0.005514664868465890, -0.005564664101257614, +-0.005614663320137677, -0.005664662524981526, -0.005714661715663275, -0.005764660892058370, -0.005814660054042256, -0.005864659201489048, -0.005914658334274192, -0.005964657452272691, +-0.006014656555359989, -0.006064655643410202, -0.006114654716298777, -0.006164653773900714, -0.006214652816091461, -0.006264651842745132, -0.006314650853737174, -0.006364649848942587, +-0.006414648828236821, -0.006464647791493989, -0.006514646738589537, -0.006564645669398468, -0.006614644583796229, -0.006664643481656934, -0.006714642362856032, -0.006764641227268523, +-0.006814640074769854, -0.006864638905234142, -0.006914637718536832, -0.006964636514553373, -0.007014635293157877, -0.007064634054225794, -0.007114632797632125, -0.007164631523252319, +-0.007214630230960490, -0.007264628920632085, -0.007314627592142108, -0.007364626245366005, -0.007414624880177894, -0.007464623496453220, -0.007514622094066987, -0.007564620672894643, +-0.007614619232810304, -0.007664617773689416, -0.007714616295406984, -0.007764614797838455, -0.007814613280857946, -0.007864611744340902, -0.007914610188162774, -0.007964608612197676, +-0.008014607016321057, -0.008064605400407919, -0.008114603764333714, -0.008164602107972555, -0.008214600431199889, -0.008264598733890722, -0.008314597015920503, -0.008364595277163349, +-0.008414593517494705, -0.008464591736789576, -0.008514589934923414, -0.008564588111770332, -0.008614586267205781, -0.008664584401104764, -0.008714582513342728, -0.008764580603793794, +-0.008814578672333408, -0.008864576718837018, -0.008914574743178742, -0.008964572745234031, -0.009014570724877888, -0.009064568681985762, -0.009114566616431770, -0.009164564528091361, +-0.009214562416839541, -0.009264560282551760, -0.009314558125102132, -0.009364555944366110, -0.009414553740218698, -0.009464551512535346, -0.009514549261190171, -0.009564546986058624, +-0.009614544687015707, -0.009664542363936874, -0.009714540016696241, -0.009764537645169259, -0.009814535249231374, -0.009864532828756710, -0.009914530383620711, -0.009964527913698389, +-0.010014525418865189, -0.010064522898995232, -0.010114520353963968, -0.010164517783646403, -0.010214515187917989, -0.010264512566652841, -0.010314509919726413, -0.010364507247013708, +-0.010414504548390180, -0.010464501823729948, -0.010514499072908461, -0.010564496295800726, -0.010614493492282193, -0.010664490662226984, -0.010714487805510547, -0.010764484922007891, +-0.010814482011594467, -0.010864479074144394, -0.010914476109533123, -0.010964473117636106, -0.011014470098327463, -0.011064467051482643, -0.011114463976976656, -0.011164460874684954, +-0.011214457744481654, -0.011264454586242211, -0.011314451399841632, -0.011364448185155368, -0.011414444942057539, -0.011464441670423597, -0.011514438370128553, -0.011564435041047856, +-0.011614431683055627, -0.011664428296027318, -0.011714424879837940, -0.011764421434362944, -0.011814417959476449, -0.011864414455053910, -0.011914410920970779, -0.011964407357101177, +-0.012014403763320554, -0.012064400139503923, -0.012114396485526738, -0.012164392801263114, -0.012214389086588512, -0.012264385341377934, -0.012314381565506839, -0.012364377758849344, +-0.012414373921280905, -0.012464370052676532, -0.012514366152911679, -0.012564362221860465, -0.012614358259398346, -0.012664354265400331, -0.012714350239741875, -0.012764346182297099, +-0.012814342092941456, -0.012864337971550404, -0.012914333817998062, -0.012964329632159885, -0.013014325413910885, -0.013064321163126516, -0.013114316879680898, -0.013164312563449489, +-0.013214308214307299, -0.013264303832129782, -0.013314299416791062, -0.013364294968166593, -0.013414290486131386, -0.013464285970560898, -0.013514281421329251, -0.013564276838311899, +-0.013614272221383856, -0.013664267570420576, -0.013714262885296183, -0.013764258165886134, -0.013814253412065438, -0.013864248623709554, -0.013914243800692604, -0.013964238942890044, +-0.014014234050177330, -0.014064229122428587, -0.014114224159519273, -0.014164219161324397, -0.014214214127719418, -0.014264209058578460, -0.014314203953776979, -0.014364198813189987, +-0.014414193636692942, -0.014464188424159970, -0.014514183175466527, -0.014564177890487626, -0.014614172569098723, -0.014664167211173945, -0.014714161816588750, -0.014764156385218151, +-0.014814150916937604, -0.014864145411621236, -0.014914139869144503, -0.014964134289382865, -0.015014128672210449, -0.015064123017502710, -0.015114117325134664, -0.015164111594981768, +-0.015214105826918149, -0.015264100020819266, -0.015314094176560133, -0.015364088294016209, -0.015414082373061619, -0.015464076413571823, -0.015514070415421837, -0.015564064378487119, +-0.015614058302641795, -0.015664052187761325, -0.015714046033720726, -0.015764039840395455, -0.015814033607659643, -0.015864027335388744, -0.015914021023458222, -0.015964014671742202, +-0.016014008280116145, -0.016064001848455071, -0.016113995376634434, -0.016163988864528363, -0.016213982312012321, -0.016263975718961324, -0.016313969085250832, -0.016363962410754971, +-0.016413955695349206, -0.016463948938908551, -0.016513942141308469, -0.016563935302423088, -0.016613928422127867, -0.016663921500297826, -0.016713914536808424, -0.016763907531533791, +-0.016813900484349390, -0.016863893395130239, -0.016913886263751798, -0.016963879090088198, -0.017013871874014899, -0.017063864615407365, -0.017113857314139724, -0.017163849970087443, +-0.017213842583125534, -0.017263835153129462, -0.017313827679973359, -0.017363820163532689, -0.017413812603682466, -0.017463805000298160, -0.017513797353253893, -0.017563789662425132, +-0.017613781927686898, -0.017663774148914655, -0.017713766325982531, -0.017763758458765991, -0.017813750547140055, -0.017863742590980190, -0.017913734590160522, -0.017963726544556517, +-0.018013718454043638, -0.018063710318496021, -0.018113702137789130, -0.018163693911797979, -0.018213685640398040, -0.018263677323463443, -0.018313668960869653, -0.018363660552491688, +-0.018413652098205020, -0.018463643597883776, -0.018513635051403420, -0.018563626458638981, -0.018613617819465918, -0.018663609133758367, -0.018713600401391792, -0.018763591622241213, +-0.018813582796182105, -0.018863573923088593, -0.018913565002836145, -0.018963556035300231, -0.019013547020354980, -0.019063537957875864, -0.019113528847737902, -0.019163519689816565, +-0.019213510483985979, -0.019263501230121622, -0.019313491928098510, -0.019363482577792111, -0.019413473179076563, -0.019463463731827332, -0.019513454235919443, -0.019563444691228359, +-0.019613435097628223, -0.019663425454994495, -0.019713415763202208, -0.019763406022126822, -0.019813396231642480, -0.019863386391624643, -0.019913376501948788, -0.019963366562489048, +-0.020013356573120887, -0.020063346533719339, -0.020113336444159868, -0.020163326304316612, -0.020213316114065037, -0.020263305873280176, -0.020313295581837493, -0.020363285239611124, +-0.020413274846476547, -0.020463264402308778, -0.020513253906983296, -0.020563243360374236, -0.020613232762357065, -0.020663222112806811, -0.020713211411598948, -0.020763200658607612, +-0.020813189853708274, -0.020863178996775960, -0.020913168087686142, -0.020963157126312963, -0.021013146112531890, -0.021063135046218397, -0.021113123927246621, -0.021163112755492035, +-0.021213101530829667, -0.021263090253134991, -0.021313078922282142, -0.021363067538146596, -0.021413056100603383, -0.021463044609527974, -0.021513033064794511, -0.021563021466278462, +-0.021613009813854861, -0.021662998107399179, -0.021712986346785559, -0.021762974531889471, -0.021812962662585946, -0.021862950738750463, -0.021912938760257156, -0.021962926726981500, +-0.022012914638798974, -0.022062902495583719, -0.022112890297211203, -0.022162878043556464, -0.022212865734494977, -0.022262853369900876, -0.022312840949649644, -0.022362828473616311, +-0.022412815941676351, -0.022462803353703903, -0.022512790709574453, -0.022562778009163020, -0.022612765252345089, -0.022662752438994800, -0.022712739568987630, -0.022762726642198614, +-0.022812713658503223, -0.022862700617775601, -0.022912687519891232, -0.022962674364725585, -0.023012661152152811, -0.023062647882048381, -0.023112634554287335, -0.023162621168745144, +-0.023212607725295958, -0.023262594223815249, -0.023312580664178059, -0.023362567046259858, -0.023412553369934797, -0.023462539635078352, -0.023512525841565560, -0.023562511989271895, +-0.023612498078071507, -0.023662484107839873, -0.023712470078452029, -0.023762455989783451, -0.023812441841708294, -0.023862427634102030, -0.023912413366839698, -0.023962399039796776, +-0.024012384652847413, -0.024062370205867087, -0.024112355698731280, -0.024162341131314140, -0.024212326503491147, -0.024262311815137338, -0.024312297066128193, -0.024362282256337863, +-0.024412267385641825, -0.024462252453915121, -0.024512237461033228, -0.024562222406870299, -0.024612207291301813, -0.024662192114202806, -0.024712176875448768, -0.024762161574913840, +-0.024812146212473508, -0.024862130788002812, -0.024912115301377234, -0.024962099752470924, -0.025012084141159362, -0.025062068467318035, -0.025112052730821094, -0.025162036931544018, +-0.025212021069361851, -0.025262005144150078, -0.025311989155782845, -0.025361973104135641, -0.025411956989083502, -0.025461940810501918, -0.025511924568265034, -0.025561908262248342, +-0.025611891892326877, -0.025661875458376129, -0.025711858960270246, -0.025761842397884715, -0.025811825771094581, -0.025861809079775325, -0.025911792323801100, -0.025961775503047398, +-0.026011758617389698, -0.026061741666702158, -0.026111724650860268, -0.026161707569739061, -0.026211690423214033, -0.026261673211159332, -0.026311655933450449, -0.026361638589962429, +-0.026411621180570753, -0.026461603705149581, -0.026511586163574401, -0.026561568555720252, -0.026611550881462630, -0.026661533140675684, -0.026711515333234907, -0.026761497459015342, +-0.026811479517892475, -0.026861461509740465, -0.026911443434434804, -0.026961425291850975, -0.027011407081863142, -0.027061388804346789, -0.027111370459176967, -0.027161352046229159, +-0.027211333565377530, -0.027261315016497565, -0.027311296399464315, -0.027361277714153264, -0.027411258960438580, -0.027461240138195744, -0.027511221247299811, -0.027561202287626266, +-0.027611183259049273, -0.027661164161444322, -0.027711144994686462, -0.027761125758651181, -0.027811106453212640, -0.027861087078246336, -0.027911067633627315, -0.027961048119231065, +-0.028011028534931755, -0.028061008880604872, -0.028110989156125910, -0.028160969361369033, -0.028210949496209729, -0.028260929560523056, -0.028310909554184499, -0.028360889477068225, +-0.028410869329049730, -0.028460849110004058, -0.028510828819806711, -0.028560808458331845, -0.028610788025454959, -0.028660767521051102, -0.028710746944995771, -0.028760726297163131, +-0.028810705577428673, -0.028860684785667449, -0.028910663921754960, -0.028960642985565367, -0.029010621976974165, -0.029060600895856853, -0.029110579742087594, -0.029160558515541887, +-0.029210537216094783, -0.029260515843621781, -0.029310494397997044, -0.029360472879096072, -0.029410451286793919, -0.029460429620966080, -0.029510407881486723, -0.029560386068231345, +-0.029610364181075002, -0.029660342219893197, -0.029710320184560088, -0.029760298074951178, -0.029810275890941526, -0.029860253632406627, -0.029910231299220651, -0.029960208891259096, +-0.030010186408397463, -0.030060163850509917, -0.030110141217471964, -0.030160118509158659, -0.030210095725445502, -0.030260072866206657, -0.030310049931317636, -0.030360026920653486, +-0.030410003834089715, -0.030459980671500488, -0.030509957432761310, -0.030559934117747239, -0.030609910726333778, -0.030659887258395097, -0.030709863713806695, -0.030759840092443636, +-0.030809816394181417, -0.030859792618894218, -0.030909768766457534, -0.030959744836746430, -0.031009720829636406, -0.031059696745001638, -0.031109672582717626, -0.031159648342659878, +-0.031209624024702565, -0.031259599628721192, -0.031309575154590819, -0.031359550602186953, -0.031409525971383766, -0.031459501262056766, -0.031509476474081012, -0.031559451607332006, +-0.031609426661683933, -0.031659401637012294, -0.031709376533192148, -0.031759351350099004, -0.031809326087607039, -0.031859300745591762, -0.031909275323928225, -0.031959249822491952, +-0.032009224241157104, -0.032059198579799199, -0.032109172838293738, -0.032159147016514907, -0.032209121114338206, -0.032259095131638701, -0.032309069068291903, -0.032359042924171987, +-0.032409016699154469, -0.032458990393114402, -0.032508964005927309, -0.032558937537467358, -0.032608910987610061, -0.032658884356230489, -0.032708857643204151, -0.032758830848405224, +-0.032808803971709224, -0.032858777012991211, -0.032908749972126700, -0.032958722848989867, -0.033008695643456230, -0.033058668355401298, -0.033108640984699247, -0.033158613531225602, +-0.033208585994855419, -0.033258558375464209, -0.033308530672926169, -0.033358502887116795, -0.033408475017911166, -0.033458447065184797, -0.033508419028811860, -0.033558390908667877, +-0.033608362704627921, -0.033658334416567501, -0.033708306044360800, -0.033758277587883329, -0.033808249047010172, -0.033858220421616833, -0.033908191711577496, -0.033958162916767683, +-0.034008134037062911, -0.034058105072337350, -0.034108076022466537, -0.034158046887325523, -0.034208017666789846, -0.034257988360733675, -0.034307958969032534, -0.034357929491561495, +-0.034407899928196074, -0.034457870278810462, -0.034507840543280176, -0.034557810721480287, -0.034607780813286318, -0.034657750818572454, -0.034707720737214204, -0.034757690569086661, +-0.034807660314065333, -0.034857629972024406, -0.034907599542839410, -0.034957569026385416, -0.035007538422537940, -0.035057507731171174, -0.035107476952160634, -0.035157446085381849, +-0.035207415130709012, -0.035257384088017631, -0.035307352957182792, -0.035357321738080011, -0.035407290430583480, -0.035457259034568728, -0.035507227549910828, -0.035557195976485302, +-0.035607164314166342, -0.035657132562829472, -0.035707100722349769, -0.035757068792602757, -0.035807036773462635, -0.035857004664804917, -0.035906972466504691, -0.035956940178437473, +-0.036006907800477460, -0.036056875332500182, -0.036106842774381157, -0.036156810125994580, -0.036206777387215977, -0.036256744557920433, -0.036306711637983477, -0.036356678627279287, +-0.036406645525683408, -0.036456612333070910, -0.036506579049317332, -0.036556545674296857, -0.036606512207885022, -0.036656478649956900, -0.036706445000388034, -0.036756411259052602, +-0.036806377425826146, -0.036856343500583748, -0.036906309483200936, -0.036956275373551908, -0.037006241171512189, -0.037056206876957307, -0.037106172489761467, -0.037156138009800194, +-0.037206103436948579, -0.037256068771082153, -0.037306034012075107, -0.037355999159802970, -0.037405964214140844, -0.037455929174964243, -0.037505894042147381, -0.037555858815565786, +-0.037605823495094538, -0.037655788080609182, -0.037705752571983907, -0.037755716969094251, -0.037805681271815307, -0.037855645480022598, -0.037905609593590336, -0.037955573612394045, +-0.038005537536308823, -0.038055501365210201, -0.038105465098972384, -0.038155428737470895, -0.038205392280581285, -0.038255355728177752, -0.038305319080135826, -0.038355282336330607, +-0.038405245496637624, -0.038455208560931084, -0.038505171529086522, -0.038555134400979026, -0.038605097176484145, -0.038655059855476070, -0.038705022437830354, -0.038754984923422074, +-0.038804947312126782, -0.038854909603818676, -0.038904871798373299, -0.038954833895665737, -0.039004795895571535, -0.039054757797964898, -0.039104719602721369, -0.039154681309716485, +-0.039204642918824452, -0.039254604429920813, -0.039304565842880668, -0.039354527157579547, -0.039404488373891662, -0.039454449491692564, -0.039504410510857332, -0.039554371431261524, +-0.039604332252779345, -0.039654292975286332, -0.039704253598657584, -0.039754214122768652, -0.039804174547493736, -0.039854134872708391, -0.039904095098287698, -0.039954055224107221, +-0.040004015250041158, -0.040053975175965054, -0.040103935001754458, -0.040153894727283583, -0.040203854352427973, -0.040253813877062720, -0.040303773301063384, -0.040353732624304160, +-0.040403691846660615, -0.040453650968007834, -0.040503609988221376, -0.040553568907175444, -0.040603527724745590, -0.040653486440806921, -0.040703445055234974, -0.040753403567903974, +-0.040803361978689466, -0.040853320287466549, -0.040903278494110774, -0.040953236598496368, -0.041003194600498866, -0.041053152499993820, -0.041103110296855448, -0.041153067990959302, +-0.041203025582180482, -0.041252983070394544, -0.041302940455475709, -0.041352897737299520, -0.041402854915741083, -0.041452811990675957, -0.041502768961978360, -0.041552725829523837, +-0.041602682593187494, -0.041652639252844896, -0.041702595808370255, -0.041752552259639121, -0.041802508606526609, -0.041852464848908269, -0.041902420986658327, -0.041952377019652327, +-0.042002332947765383, -0.042052288770873053, -0.042102244488849562, -0.042152200101570454, -0.042202155608911295, -0.042252111010746295, -0.042302066306951019, -0.042352021497400583, +-0.042401976581970535, -0.042451931560535103, -0.042501886432969836, -0.042551841199149856, -0.042601795858950721, -0.042651750412246649, -0.042701704858913204, -0.042751659198825495, +-0.042801613431859079, -0.042851567557888187, -0.042901521576788379, -0.042951475488434761, -0.043001429292702904, -0.043051382989467028, -0.043101336578602698, -0.043151290059985463, +-0.043201243433489564, -0.043251196698990552, -0.043301149856363554, -0.043351102905484121, -0.043401055846226493, -0.043451008678466220, -0.043500961402078424, -0.043550914016938676, +-0.043600866522921194, -0.043650818919901545, -0.043700771207754847, -0.043750723386356667, -0.043800675455581237, -0.043850627415304114, -0.043900579265400426, -0.043950531005745731, +-0.044000482636214269, -0.044050434156681598, -0.044100385567023288, -0.044150336867113567, -0.044200288056828005, -0.044250239136041723, -0.044300190104630280, -0.044350140962467928, +-0.044400091709430219, -0.044450042345392279, -0.044499992870229682, -0.044549943283816659, -0.044599893586028776, -0.044649843776741159, -0.044699793855829374, -0.044749743823167661, +-0.044799693678631590, -0.044849643422096283, -0.044899593053437312, -0.044949542572528915, -0.044999491979246665, -0.045049441273465683, -0.045099390455061540, -0.045149339523908476, +-0.045199288479882069, -0.045249237322857877, -0.045299186052710154, -0.045349134669314464, -0.045399083172545936, -0.045449031562280147, -0.045498979838391330, -0.045548928000755072, +-0.045598876049246485, -0.045648823983741156, -0.045698771804113324, -0.045748719510238560, -0.045798667101991999, -0.045848614579249214, -0.045898561941884450, -0.045948509189773279, +-0.045998456322790836, -0.046048403340812692, -0.046098350243713102, -0.046148297031367629, -0.046198243703651866, -0.046248190260440046, -0.046298136701607748, -0.046348083027030113, +-0.046398029236582712, -0.046447975330139793, -0.046497921307576934, -0.046547867168769276, -0.046597812913592392, -0.046647758541920534, -0.046697704053629274, -0.046747649448593762, +-0.046797594726689568, -0.046847539887790939, -0.046897484931773460, -0.046947429858512274, -0.046997374667882952, -0.047047319359759754, -0.047097263934018259, -0.047147208390534039, +-0.047197152729181360, -0.047247096949835803, -0.047297041052372500, -0.047346985036667039, -0.047396928902593671, -0.047446872650027977, -0.047496816278845104, -0.047546759788920638, +-0.047596703180128826, -0.047646646452345252, -0.047696589605445067, -0.047746532639303854, -0.047796475553795861, -0.047846418348796681, -0.047896361024181454, -0.047946303579825766, +-0.047996246015603879, -0.048046188331391376, -0.048096130527063845, -0.048146072602495545, -0.048196014557562068, -0.048245956392138550, -0.048295898106100583, -0.048345839699322428, +-0.048395781171679676, -0.048445722523047470, -0.048495663753301402, -0.048545604862315725, -0.048595545849966046, -0.048645486716127492, -0.048695427460675671, -0.048745368083484841, +-0.048795308584430583, -0.048845248963388058, -0.048895189220232858, -0.048945129354839231, -0.048995069367082790, -0.049045009256838669, -0.049094949023982475, -0.049144888668388460, +-0.049194828189932226, -0.049244767588489363, -0.049294706863934140, -0.049344646016142149, -0.049394585044988538, -0.049444523950348915, -0.049494462732097538, -0.049544401390110002, +-0.049594339924261460, -0.049644278334427513, -0.049694216620482429, -0.049744154782301805, -0.049794092819760792, -0.049844030732734988, -0.049893968521098668, -0.049943906184727424, +-0.049993843723496419, -0.050043781137281237, -0.050093718425956169, -0.050143655589396804, -0.050193592627478738, -0.050243529540076250, -0.050293466327064940, -0.050343402988319963, +-0.050393339523716926, -0.050443275933130090, -0.050493212216435067, -0.050543148373507013, -0.050593084404221535, -0.050643020308452899, -0.050692956086076713, -0.050742891736968131, +-0.050792827261002774, -0.050842762658054895, -0.050892697928000115, -0.050942633070713589, -0.050992568086070930, -0.051042502973946399, -0.051092437734215616, -0.051142372366754174, +-0.051192306871436367, -0.051242241248137789, -0.051292175496733608, -0.051342109617099431, -0.051392043609109539, -0.051441977472639532, -0.051491911207564592, -0.051541844813760306, +-0.051591778291100975, -0.051641711639462191, -0.051691644858719125, -0.051741577948747397, -0.051791510909421280, -0.051841443740616382, -0.051891376442207877, -0.051941309014071381, +-0.051991241456081159, -0.052041173768112840, -0.052091105950041579, -0.052141038001743002, -0.052190969923091385, -0.052240901713962347, -0.052290833374231495, -0.052340764903773117, +-0.052390696302462826, -0.052440627570175792, -0.052490558706787635, -0.052540489712172643, -0.052590420586206416, -0.052640351328764143, -0.052690281939721438, -0.052740212418952583, +-0.052790142766333197, -0.052840072981738449, -0.052890003065043968, -0.052939933016124034, -0.052989862834854268, -0.053039792521109845, -0.053089722074766380, -0.053139651495698173, +-0.053189580783780832, -0.053239509938889984, -0.053289438960899924, -0.053339367849686257, -0.053389296605124176, -0.053439225227089299, -0.053489153715455907, -0.053539082070099636, +-0.053589010290895661, -0.053638938377719603, -0.053688866330445756, -0.053738794148949741, -0.053788721833106741, -0.053838649382792383, -0.053888576797880956, -0.053938504078248087, +-0.053988431223768958, -0.054038358234319191, -0.054088285109773093, -0.054138211850006272, -0.054188138454894376, -0.054238064924311685, -0.054287991258133828, -0.054337917456236000, +-0.054387843518493816, -0.054437769444781584, -0.054487695234974924, -0.054537620888949027, -0.054587546406579521, -0.054637471787740713, -0.054687397032308217, -0.054737322140157231, +-0.054787247111163381, -0.054837171945200977, -0.054887096642145639, -0.054937021201872556, -0.054986945624257363, -0.055036869909174370, -0.055086794056499196, -0.055136718066107482, +-0.055186641937873530, -0.055236565671672976, -0.055286489267381000, -0.055336412724873253, -0.055386336044024022, -0.055436259224708954, -0.055486182266803241, -0.055536105170182516, +-0.055586027934721081, -0.055635950560294578, -0.055685873046778203, -0.055735795394047584, -0.055785717601977036, -0.055835639670442187, -0.055885561599318248, -0.055935483388480846, +-0.055985405037804289, -0.056035326547164220, -0.056085247916435835, -0.056135169145494775, -0.056185090234215349, -0.056235011182473198, -0.056284931990143956, -0.056334852657101947, +-0.056384773183222804, -0.056434693568381732, -0.056484613812454364, -0.056534533915315023, -0.056584453876839344, -0.056634373696902530, -0.056684293375380224, -0.056734212912146746, +-0.056784132307077732, -0.056834051560048386, -0.056883970670934363, -0.056933889639609964, -0.056983808465950837, -0.057033727149832195, -0.057083645691129677, -0.057133564089717599, +-0.057183482345471610, -0.057233400458267365, -0.057283318427979173, -0.057333236254482681, -0.057383153937653100, -0.057433071477366079, -0.057482988873495934, -0.057532906125918319, +-0.057582823234508439, -0.057632740199141941, -0.057682657019693155, -0.057732573696037723, -0.057782490228050855, -0.057832406615608206, -0.057882322858584100, -0.057932238956854183, +-0.057982154910293668, -0.058032070718778216, -0.058081986382182135, -0.058131901900381096, -0.058181817273250738, -0.058231732500665399, -0.058281647582500727, -0.058331562518631939, +-0.058381477308934684, -0.058431391953283292, -0.058481306451553423, -0.058531220803620290, -0.058581135009359540, -0.058631049068645517, -0.058680962981353869, -0.058730876747359814, +-0.058780790366539007, -0.058830703838765784, -0.058880617163915801, -0.058930530341864275, -0.058980443372486868, -0.059030356255657911, -0.059080268991253057, -0.059130181579147532, +-0.059180094019216999, -0.059230006311335792, -0.059279918455379561, -0.059329830451223982, -0.059379742298743383, -0.059429653997813428, -0.059479565548309334, -0.059529476950106776, +-0.059579388203080078, -0.059629299307104908, -0.059679210262056491, -0.059729121067810496, -0.059779031724241254, -0.059828942231224432, -0.059878852588635248, -0.059928762796349386, +-0.059978672854241168, -0.060028582762186269, -0.060078492520059909, -0.060128402127737769, -0.060178311585094173, -0.060228220892004802, -0.060278130048345320, -0.060328039053990076, +-0.060377947908814726, -0.060427856612694508, -0.060477765165505099, -0.060527673567120827, -0.060577581817417368, -0.060627489916269962, -0.060677397863554271, -0.060727305659144644, +-0.060777213302916751, -0.060827120794745823, -0.060877028134507544, -0.060926935322076242, -0.060976842357327608, -0.061026749240136867, -0.061076655970379694, -0.061126562547930439, +-0.061176468972664780, -0.061226375244458384, -0.061276281363185615, -0.061326187328722137, -0.061376093140943194, -0.061425998799724463, -0.061475904304940286, -0.061525809656466354, +-0.061575714854177899, -0.061625619897950595, -0.061675524787658802, -0.061725429523178194, -0.061775334104384010, -0.061825238531151940, -0.061875142803356327, -0.061925046920872862, +-0.061974950883576775, -0.062024854691343750, -0.062074758344048152, -0.062124661841565655, -0.062174565183771950, -0.062224468370541387, -0.062274371401749649, -0.062324274277271989, +-0.062374176996984082, -0.062424079560760293, -0.062473981968476297, -0.062523884220007361, -0.062573786315229141, -0.062623688254016027, -0.062673590036243676, -0.062723491661787367, +-0.062773393130522756, -0.062823294442324235, -0.062873195597067472, -0.062923096594627720, -0.062972997434880662, -0.063022898117700676, -0.063072798642963432, -0.063122699010544209, +-0.063172599220318676, -0.063222499272161198, -0.063272399165947471, -0.063322298901553192, -0.063372198478852726, -0.063422097897721755, -0.063471997158035545, -0.063521896259669794, +-0.063571795202498851, -0.063621693986398414, -0.063671592611243749, -0.063721491076910539, -0.063771389383273161, -0.063821287530207313, -0.063871185517588247, -0.063921083345291660, +-0.063970981013191916, -0.064020878521164726, -0.064070775869085342, -0.064120673056829447, -0.064170570084271447, -0.064220466951287011, -0.064270363657751850, -0.064320260203540328, +-0.064370156588528168, -0.064420052812590611, -0.064469948875603367, -0.064519844777440813, -0.064569740517978647, -0.064619636097092120, -0.064669531514656958, -0.064719426770547511, +-0.064769321864639504, -0.064819216796808188, -0.064869111566929274, -0.064919006174877142, -0.064968900620527500, -0.065018794903755603, -0.065068689024437160, -0.065118582982446549, +-0.065168476777659481, -0.065218370409951654, -0.065268263879197472, -0.065318157185272632, -0.065368050328052388, -0.065417943307412477, -0.065467836123227249, -0.065517728775372430, +-0.065567621263723300, -0.065617513588155554, -0.065667405748543586, -0.065717297744763106, -0.065767189576689367, -0.065817081244198106, -0.065866972747163702, -0.065916864085461865, +-0.065966755258967863, -0.066016646267557419, -0.066066537111104925, -0.066116427789486079, -0.066166318302576160, -0.066216208650250893, -0.066266098832384657, -0.066315988848853188, +-0.066365878699532171, -0.066415768384296026, -0.066465657903020461, -0.066515547255580745, -0.066565436441852602, -0.066615325461710437, -0.066665214315029947, -0.066715103001686427, +-0.066764991521555586, -0.066814879874511832, -0.066864768060430874, -0.066914656079187992, -0.066964543930658912, -0.067014431614718040, -0.067064319131241085, -0.067114206480103328, +-0.067164093661180507, -0.067213980674347001, -0.067263867519478535, -0.067313754196450859, -0.067363640705138353, -0.067413527045416727, -0.067463413217161303, -0.067513299220247777, +-0.067563185054550570, -0.067613070719945392, -0.067662956216307552, -0.067712841543512745, -0.067762726701435405, -0.067812611689951244, -0.067862496508935555, -0.067912381158264062, +-0.067962265637811173, -0.068012149947452624, -0.068062034087063711, -0.068111918056520143, -0.068161801855696341, -0.068211685484468029, -0.068261568942710946, -0.068311452230299496, +-0.068361335347109420, -0.068411218293016010, -0.068461101067894992, -0.068510983671620784, -0.068560866104069113, -0.068610748365115271, -0.068660630454635010, -0.068710512372502724, +-0.068760394118594165, -0.068810275692784612, -0.068860157094949817, -0.068910038324964187, -0.068959919382703461, -0.069009800268042931, -0.069059680980858351, -0.069109561521024127, +-0.069159441888415996, -0.069209322082909697, -0.069259202104379650, -0.069309081952701607, -0.069358961627750862, -0.069408841129403140, -0.069458720457532888, -0.069508599612015817, +-0.069558478592727263, -0.069608357399542950, -0.069658236032337298, -0.069708114490986059, -0.069757992775364541, -0.069807870885348469, -0.069857748820812290, -0.069907626581631729, +-0.069957504167682108, -0.070007381578839165, -0.070057258814977333, -0.070107135875972351, -0.070157012761699528, -0.070206889472034614, -0.070256766006852031, -0.070306642366027544, +-0.070356518549436878, -0.070406394556954480, -0.070456270388456102, -0.070506146043817039, -0.070556021522913057, -0.070605896825618589, -0.070655771951809360, -0.070705646901360719, +-0.070755521674148392, -0.070805396270046825, -0.070855270688931757, -0.070905144930678524, -0.070955018995162863, -0.071004892882259210, -0.071054766591843330, -0.071104640123790544, +-0.071154513477976578, -0.071204386654275906, -0.071254259652564253, -0.071304132472717399, -0.071354005114609778, -0.071403877578117142, -0.071453749863114799, -0.071503621969478542, +-0.071553493897082779, -0.071603365645803274, -0.071653237215515364, -0.071703108606094801, -0.071752979817416018, -0.071802850849354796, -0.071852721701786443, -0.071902592374586724, +-0.071952462867630088, -0.072002333180792299, -0.072052203313948668, -0.072102073266974973, -0.072151943039745647, -0.072201812632136472, -0.072251682044023213, -0.072301551275280290, +-0.072351420325783497, -0.072401289195408156, -0.072451157884030032, -0.072501026391523574, -0.072550894717764547, -0.072600762862628287, -0.072650630825990561, -0.072700498607725816, +-0.072750366207709818, -0.072800233625817903, -0.072850100861925851, -0.072899967915908109, -0.072949834787640444, -0.072999701476998191, -0.073049567983857130, -0.073099434308091710, +-0.073149300449577695, -0.073199166408190436, -0.073249032183805698, -0.073298897776297930, -0.073348763185542940, -0.073398628411416464, -0.073448493453792979, -0.073498358312548265, +-0.073548222987557657, -0.073598087478696936, -0.073647951785840535, -0.073697815908864275, -0.073747679847643466, -0.073797543602053900, -0.073847407171970039, -0.073897270557267650, +-0.073947133757822095, -0.073996996773509141, -0.074046859604203263, -0.074096722249780228, -0.074146584710115385, -0.074196446985084527, -0.074246309074562103, -0.074296170978423906, +-0.074346032696545730, -0.074395894228802037, -0.074445755575068592, -0.074495616735220774, -0.074545477709134347, -0.074595338496683788, -0.074645199097744877, -0.074695059512192963, +-0.074744919739903853, -0.074794779780751997, -0.074844639634613200, -0.074894499301362799, -0.074944358780876588, -0.074994218073029043, -0.075044077177695956, -0.075093936094752664, +-0.075143794824074975, -0.075193653365537363, -0.075243511719015624, -0.075293369884385536, -0.075343227861521589, -0.075393085650299577, -0.075442943250594835, -0.075492800662283185, +-0.075542657885239090, -0.075592514919338355, -0.075642371764456331, -0.075692228420468813, -0.075742084887250288, -0.075791941164676552, -0.075841797252622967, -0.075891653150965327, +-0.075941508859578108, -0.075991364378337117, -0.076041219707117719, -0.076091074845795706, -0.076140929794245582, -0.076190784552343113, -0.076240639119963691, -0.076290493496983122, +-0.076340347683275869, -0.076390201678717740, -0.076440055483184555, -0.076489909096550790, -0.076539762518692253, -0.076589615749484308, -0.076639468788802775, -0.076689321636522118, +-0.076739174292518156, -0.076789026756666254, -0.076838879028842233, -0.076888731108920583, -0.076938582996777097, -0.076988434692287153, -0.077038286195326558, -0.077088137505769816, +-0.077137988623492720, -0.077187839548370663, -0.077237690280279436, -0.077287540819093559, -0.077337391164688810, -0.077387241316941038, -0.077437091275724720, -0.077486941040915677, +-0.077536790612389273, -0.077586639990021342, -0.077636489173686360, -0.077686338163260163, -0.077736186958618114, -0.077786035559636049, -0.077835883966188443, -0.077885732178151132, +-0.077935580195399493, -0.077985428017809347, -0.078035275645255184, -0.078085123077612825, -0.078134970314757676, -0.078184817356565531, -0.078234664202910906, -0.078284510853669609, +-0.078334357308717489, -0.078384203567929037, -0.078434049631180058, -0.078483895498345974, -0.078533741169302590, -0.078583586643924397, -0.078633431922087257, -0.078683277003666521, +-0.078733121888538038, -0.078782966576576310, -0.078832811067657174, -0.078882655361656007, -0.078932499458448629, -0.078982343357909574, -0.079032187059914660, -0.079082030564339281, +-0.079131873871059258, -0.079181716979949121, -0.079231559890884679, -0.079281402603741780, -0.079331245118394941, -0.079381087434719985, -0.079430929552592316, -0.079480771471887757, +-0.079530613192480823, -0.079580454714247365, -0.079630296037062773, -0.079680137160802883, -0.079729978085342199, -0.079779818810556569, -0.079829659336321399, -0.079879499662512524, +-0.079929339789004461, -0.079979179715673032, -0.080029019442393670, -0.080078858969042196, -0.080128698295493128, -0.080178537421622315, -0.080228376347305161, -0.080278215072417516, +-0.080328053596833884, -0.080377891920430114, -0.080427730043082069, -0.080477567964664251, -0.080527405685052511, -0.080577243204122254, -0.080627080521749328, -0.080676917637808265, +-0.080726754552174915, -0.080776591264724668, -0.080826427775333387, -0.080876264083875590, -0.080926100190227140, -0.080975936094263443, -0.081025771795860346, -0.081075607294892368, +-0.081125442591235386, -0.081175277684764791, -0.081225112575356431, -0.081274947262884867, -0.081324781747225919, -0.081374616028255478, -0.081424450105848034, -0.081474283979879478, +-0.081524117650225214, -0.081573951116761093, -0.081623784379361644, -0.081673617437902746, -0.081723450292259803, -0.081773282942308678, -0.081823115387923889, -0.081872947628981327, +-0.081922779665356396, -0.081972611496924946, -0.082022443123561536, -0.082072274545142015, -0.082122105761541803, -0.082171936772636775, -0.082221767578301463, -0.082271598178411731, +-0.082321428572843441, -0.082371258761471139, -0.082421088744170687, -0.082470918520817518, -0.082520748091287496, -0.082570577455455166, -0.082620406613196390, -0.082670235564386588, +-0.082720064308901650, -0.082769892846616108, -0.082819721177405825, -0.082869549301146248, -0.082919377217713239, -0.082969204926981344, -0.083019032428826439, -0.083068859723123945, +-0.083118686809749751, -0.083168513688578388, -0.083218340359485748, -0.083268166822347264, -0.083317993077038799, -0.083367819123434911, -0.083417644961411463, -0.083467470590844361, +-0.083517296011608136, -0.083567121223578664, -0.083616946226631392, -0.083666771020642211, -0.083716595605485639, -0.083766419981037593, -0.083816244147173494, -0.083866068103769217, +-0.083915891850699337, -0.083965715387839729, -0.084015538715065827, -0.084065361832253521, -0.084115184739277371, -0.084165007436013253, -0.084214829922336629, -0.084264652198123360, +-0.084314474263248021, -0.084364296117586501, -0.084414117761014679, -0.084463939193407125, -0.084513760414639719, -0.084563581424587905, -0.084613402223127590, -0.084663222810133332, +-0.084713043185481007, -0.084762863349046078, -0.084812683300704433, -0.084862503040330634, -0.084912322567800583, -0.084962141882989714, -0.085011960985773946, -0.085061779876027824, +-0.085111598553627252, -0.085161417018447691, -0.085211235270365032, -0.085261053309253834, -0.085310871134990002, -0.085360688747449440, -0.085410506146506721, -0.085460323332037721, +-0.085510140303917931, -0.085559957062023212, -0.085609773606228165, -0.085659589936408695, -0.085709406052440235, -0.085759221954198717, -0.085809037641558686, -0.085858853114396075, +-0.085908668372586330, -0.085958483416005343, -0.086008298244527714, -0.086058112858029348, -0.086107927256385691, -0.086157741439472649, -0.086207555407164821, -0.086257369159338113, +-0.086307182695868415, -0.086356996016630314, -0.086406809121499728, -0.086456622010352119, -0.086506434683063405, -0.086556247139508144, -0.086606059379562284, -0.086655871403101256, +-0.086705683210001008, -0.086755494800136099, -0.086805306173382460, -0.086855117329615553, -0.086904928268711296, -0.086954738990544289, -0.087004549494990410, -0.087054359781925175, +-0.087104169851224475, -0.087153979702762910, -0.087203789336416399, -0.087253598752060416, -0.087303407949570866, -0.087353216928822364, -0.087403025689690814, -0.087452834232052148, +-0.087502642555780955, -0.087552450660753151, -0.087602258546844225, -0.087652066213930097, -0.087701873661885352, -0.087751680890585923, -0.087801487899907299, -0.087851294689725398, +-0.087901101259914807, -0.087950907610351473, -0.088000713740910869, -0.088050519651468928, -0.088100325341900237, -0.088150130812080729, -0.088199936061885906, -0.088249741091191672, +-0.088299545899872656, -0.088349350487804762, -0.088399154854863951, -0.088448959000924796, -0.088498762925863242, -0.088548566629554792, -0.088598370111875366, -0.088648173372699562, +-0.088697976411903343, -0.088747779229362167, -0.088797581824951996, -0.088847384198547416, -0.088897186350024388, -0.088946988279258385, -0.088996789986125355, -0.089046591470499911, +-0.089096392732257987, -0.089146193771275084, -0.089195994587427135, -0.089245795180588755, -0.089295595550635889, -0.089345395697444485, -0.089395195620889142, -0.089444995320845808, +-0.089494794797189997, -0.089544594049797629, -0.089594393078543333, -0.089644191883303068, -0.089693990463952308, -0.089743788820367015, -0.089793586952421817, -0.089843384859992645, +-0.089893182542955016, -0.089942980001184877, -0.089992777234556828, -0.090042574242946857, -0.090092371026230439, -0.090142167584283533, -0.090191963916980769, -0.090241760024198106, +-0.090291555905811033, -0.090341351561695510, -0.090391146991726165, -0.090440942195778959, -0.090490737173729838, -0.090540531925453430, -0.090590326450825695, -0.090640120749722136, +-0.090689914822018727, -0.090739708667590083, -0.090789502286312176, -0.090839295678060511, -0.090889088842711033, -0.090938881780138411, -0.090988674490218580, -0.091038466972827053, +-0.091088259227839807, -0.091138051255131469, -0.091187843054578013, -0.091237634626054942, -0.091287425969438216, -0.091337217084602504, -0.091387007971423725, -0.091436798629777882, +-0.091486589059539603, -0.091536379260584846, -0.091586169232789144, -0.091635958976028470, -0.091685748490177438, -0.091735537775112050, -0.091785326830707809, -0.091835115656840702, +-0.091884904253385344, -0.091934692620217751, -0.091984480757213410, -0.092034268664248312, -0.092084056341197096, -0.092133843787935751, -0.092183631004339794, -0.092233417990285199, +-0.092283204745646608, -0.092332991270300008, -0.092382777564121388, -0.092432563626985362, -0.092482349458767946, -0.092532135059344642, -0.092581920428591452, -0.092631705566383005, +-0.092681490472595301, -0.092731275147103873, -0.092781059589784706, -0.092830843800512444, -0.092880627779163061, -0.092930411525612128, -0.092980195039735591, -0.093029978321408135, +-0.093079761370505720, -0.093129544186903918, -0.093179326770478688, -0.093229109121104700, -0.093278891238657943, -0.093328673123014391, -0.093378454774048728, -0.093428236191636926, +-0.093478017375654518, -0.093527798325977518, -0.093577579042480583, -0.093627359525039699, -0.093677139773530427, -0.093726919787828725, -0.093776699567809305, -0.093826479113348113, +-0.093876258424320735, -0.093926037500603160, -0.093975816342070043, -0.094025594948597385, -0.094075373320060732, -0.094125151456336098, -0.094174929357298140, -0.094224707022822859, +-0.094274484452785814, -0.094324261647062993, -0.094374038605529079, -0.094423815328060073, -0.094473591814531965, -0.094523368064819438, -0.094573144078798480, -0.094622919856344676, +-0.094672695397334014, -0.094722470701641165, -0.094772245769142144, -0.094822020599712509, -0.094871795193228262, -0.094921569549564086, -0.094971343668595984, -0.095021117550199527, +-0.095070891194250703, -0.095120664600624225, -0.095170437769196078, -0.095220210699841851, -0.095269983392437529, -0.095319755846857798, -0.095369528062978687, -0.095419300040676197, +-0.095469071779825013, -0.095518843280301149, -0.095568614541980179, -0.095618385564738118, -0.095668156348449648, -0.095717926892990787, -0.095767697198237120, -0.095817467264064635, +-0.095867237090348043, -0.095917006676963359, -0.095966776023786171, -0.096016545130692466, -0.096066313997556968, -0.096116082624255680, -0.096165851010664188, -0.096215619156658508, +-0.096265387062113336, -0.096315154726904703, -0.096364922150908625, -0.096414689333999798, -0.096464456276054253, -0.096514222976947561, -0.096563989436555753, -0.096613755654753525, +-0.096663521631416921, -0.096713287366421499, -0.096763052859643303, -0.096812818110957044, -0.096862583120238738, -0.096912347887363956, -0.096962112412208770, -0.097011876694647850, +-0.097061640734557239, -0.097111404531812523, -0.097161168086289745, -0.097210931397863590, -0.097260694466410128, -0.097310457291804917, -0.097360219873924000, -0.097409982212642104, +-0.097459744307835244, -0.097509506159379464, -0.097559267767149488, -0.097609029131021333, -0.097658790250870597, -0.097708551126573340, -0.097758311758004271, -0.097808072145039407, +-0.097857832287554375, -0.097907592185425191, -0.097957351838526593, -0.098007111246734613, -0.098056870409924848, -0.098106629327973358, -0.098156388000754852, -0.098206146428145374, +-0.098255904610020539, -0.098305662546256375, -0.098355420236727623, -0.098405177681310310, -0.098454934879880496, -0.098504691832312904, -0.098554448538483580, -0.098604204998268136, +-0.098653961211542615, -0.098703717178181757, -0.098753472898061606, -0.098803228371057775, -0.098852983597046321, -0.098902738575901955, -0.098952493307500750, -0.099002247791718304, +-0.099052002028430675, -0.099101756017512616, -0.099151509758840156, -0.099201263252288924, -0.099251016497734976, -0.099300769495053037, -0.099350522244119194, -0.099400274744809475, +-0.099450026996998619, -0.099499779000562713, -0.099549530755377341, -0.099599282261318603, -0.099649033518261210, -0.099698784526081233, -0.099748535284654286, -0.099798285793856453, +-0.099848036053562461, -0.099897786063648381, -0.099947535823989839, -0.099997285334462893, -0.100047034594942280, -0.100096783605304110, -0.100146532365423950, -0.100196280875177910, +-0.100246029134440740, -0.100295777143088490, -0.100345524900997240, -0.100395272408041730, -0.100445019664098050, -0.100494766669041810, -0.100544513422749100, -0.100594259925094660, +-0.100644006175954580, -0.100693752175204470, -0.100743497922720430, -0.100793243418377210, -0.100842988662050880, -0.100892733653617060, -0.100942478392951870, -0.100992222879930040, +-0.101041967114427640, -0.101091711096320330, -0.101141454825484170, -0.101191198301793950, -0.101240941525125740, -0.101290684495355150, -0.101340427212358310, -0.101390169676009960, +-0.101439911886186170, -0.101489653842763050, -0.101539395545615360, -0.101589136994619190, -0.101638878189650160, -0.101688619130584380, -0.101738359817296620, -0.101788100249662950, +-0.101837840427559030, -0.101887580350860960, -0.101937320019443490, -0.101987059433182720, -0.102036798591954290, -0.102086537495634320, -0.102136276144097570, -0.102186014537220120, +-0.102235752674877630, -0.102285490556946200, -0.102335228183300610, -0.102384965553816950, -0.102434702668371320, -0.102484439526838490, -0.102534176129094550, -0.102583912475015180, +-0.102633648564476460, -0.102683384397353190, -0.102733119973521460, -0.102782855292856910, -0.102832590355235690, -0.102882325160532530, -0.102932059708623570, -0.102981793999384450, +-0.103031528032691310, -0.103081261808418880, -0.103130995326443320, -0.103180728586640250, -0.103230461588885810, -0.103280194333054780, -0.103329926819023250, -0.103379659046667360, +-0.103429391015861880, -0.103479122726482910, -0.103528854178406140, -0.103578585371507690, -0.103628316305662310, -0.103678046980746160, -0.103727777396634880, -0.103777507553204600, +-0.103827237450330110, -0.103876967087887530, -0.103926696465752530, -0.103976425583801230, -0.104026154441908420, -0.104075883039950230, -0.104125611377802340, -0.104175339455340850, +-0.104225067272440570, -0.104274794828977630, -0.104324522124827690, -0.104374249159866900, -0.104423975933970040, -0.104473702447013250, -0.104523428698872630, -0.104573154689423010, +-0.104622880418540500, -0.104672605886100780, -0.104722331091979990, -0.104772056036052940, -0.104821780718195740, -0.104871505138284100, -0.104921229296194130, -0.104970953191800640, +-0.105020676824979770, -0.105070400195607220, -0.105120123303559090, -0.105169846148710220, -0.105219568730936740, -0.105269291050114340, -0.105319013106119140, -0.105368734898825980, +-0.105418456428110980, -0.105468177693850280, -0.105517898695918700, -0.105567619434192360, -0.105617339908546980, -0.105667060118858680, -0.105716780065002310, -0.105766499746853970, +-0.105816219164289390, -0.105865938317184700, -0.105915657205414720, -0.105965375828855610, -0.106015094187383040, -0.106064812280873190, -0.106114530109200870, -0.106164247672242220, +-0.106213964969872950, -0.106263682001969210, -0.106313398768405830, -0.106363115269058950, -0.106412831503804720, -0.106462547472517960, -0.106512263175074850, -0.106561978611351070, +-0.106611693781222790, -0.106661408684564830, -0.106711123321253350, -0.106760837691164070, -0.106810551794173130, -0.106860265630155370, -0.106909979198986940, -0.106959692500543570, +-0.107009405534701410, -0.107059118301335300, -0.107108830800321380, -0.107158543031535390, -0.107208254994853480, -0.107257966690150500, -0.107307678117302600, -0.107357389276185950, +-0.107407100166675370, -0.107456810788647050, -0.107506521141976700, -0.107556231226540500, -0.107605941042213270, -0.107655650588871180, -0.107705359866389970, -0.107755068874645810, +-0.107804777613513540, -0.107854486082869310, -0.107904194282588880, -0.107953902212548390, -0.108003609872622710, -0.108053317262688010, -0.108103024382620010, -0.108152731232294890, +-0.108202437811587520, -0.108252144120374020, -0.108301850158530190, -0.108351555925932170, -0.108401261422454810, -0.108450966647974300, -0.108500671602366820, -0.108550376285507220, +-0.108600080697271670, -0.108649784837535910, -0.108699488706176160, -0.108749192303067220, -0.108798895628085310, -0.108848598681106160, -0.108898301462005950, -0.108948003970659550, +-0.108997706206943140, -0.109047408170732470, -0.109097109861903710, -0.109146811280331740, -0.109196512425892750, -0.109246213298462470, -0.109295913897917100, -0.109345614224131500, +-0.109395314276981860, -0.109445014056344380, -0.109494713562093930, -0.109544412794106690, -0.109594111752258420, -0.109643810436425320, -0.109693508846482240, -0.109743206982305390, +-0.109792904843770520, -0.109842602430753850, -0.109892299743130210, -0.109941996780775830, -0.109991693543566460, -0.110041390031378290, -0.110091086244086200, -0.110140782181566410, +-0.110190477843694650, -0.110240173230347140, -0.110289868341398770, -0.110339563176725720, -0.110389257736204200, -0.110438952019709090, -0.110488646027116610, -0.110538339758302500, +-0.110588033213143010, -0.110637726391512970, -0.110687419293288620, -0.110737111918345720, -0.110786804266560480, -0.110836496337807800, -0.110886188131963880, -0.110935879648904490, +-0.110985570888505830, -0.111035261850642800, -0.111084952535191630, -0.111134642942028070, -0.111184333071028350, -0.111234022922067340, -0.111283712495021280, -0.111333401789765950, +-0.111383090806177550, -0.111432779544130970, -0.111482468003502460, -0.111532156184168220, -0.111581844086003130, -0.111631531708883440, -0.111681219052684920, -0.111730906117283810, +-0.111780592902554970, -0.111830279408374660, -0.111879965634618650, -0.111929651581163160, -0.111979337247883120, -0.112029022634654720, -0.112078707741353770, -0.112128392567856490, +-0.112178077114037780, -0.112227761379773890, -0.112277445364940580, -0.112327129069414110, -0.112376812493069370, -0.112426495635782610, -0.112476178497430040, -0.112525861077886590, +-0.112575543377028490, -0.112625225394731520, -0.112674907130871940, -0.112724588585324640, -0.112774269757965880, -0.112823950648671440, -0.112873631257317560, -0.112923311583779160, +-0.112972991627932490, -0.113022671389653340, -0.113072350868817950, -0.113122030065301240, -0.113171708978979460, -0.113221387609728400, -0.113271065957424310, -0.113320744021942130, +-0.113370421803158080, -0.113420099300948420, -0.113469776515188070, -0.113519453445753270, -0.113569130092519840, -0.113618806455364030, -0.113668482534160760, -0.113718158328786290, +-0.113767833839116410, -0.113817509065027400, -0.113867184006394170, -0.113916858663092990, -0.113966533034999650, -0.114016207121990430, -0.114065880923940240, -0.114115554440725350, +-0.114165227672221580, -0.114214900618305180, -0.114264573278851090, -0.114314245653735560, -0.114363917742834860, -0.114413589546023930, -0.114463261063179010, -0.114512932294175960, +-0.114562603238891000, -0.114612273897199110, -0.114661944268976520, -0.114711614354099070, -0.114761284152443040, -0.114810953663883340, -0.114860622888296270, -0.114910291825557630, +-0.114959960475543720, -0.115009628838129460, -0.115059296913191130, -0.115108964700604540, -0.115158632200246000, -0.115208299411990430, -0.115257966335714100, -0.115307632971292870, +-0.115357299318603000, -0.115406965377519430, -0.115456631147918460, -0.115506296629676330, -0.115555961822668040, -0.115605626726769840, -0.115655291341857580, -0.115704955667807520, +-0.115754619704494630, -0.115804283451795190, -0.115853946909585050, -0.115903610077740480, -0.115953272956136440, -0.116002935544649230, -0.116052597843154660, -0.116102259851529050, +-0.116151921569647360, -0.116201582997385850, -0.116251244134620390, -0.116300904981227260, -0.116350565537081420, -0.116400225802059180, -0.116449885776036810, -0.116499545458889270, +-0.116549204850492890, -0.116598863950723480, -0.116648522759457360, -0.116698181276569490, -0.116747839501936170, -0.116797497435433250, -0.116847155076937020, -0.116896812426322470, +-0.116946469483465880, -0.116996126248243130, -0.117045782720530480, -0.117095438900202960, -0.117145094787136830, -0.117194750381207970, -0.117244405682292660, -0.117294060690265920, +-0.117343715405004000, -0.117393369826383250, -0.117443023954278640, -0.117492677788566450, -0.117542331329122590, -0.117591984575823330, -0.117641637528543660, -0.117691290187159900, +-0.117740942551547920, -0.117790594621584030, -0.117840246397143200, -0.117889897878101770, -0.117939549064335570, -0.117989199955720960, -0.118038850552132900, -0.118088500853447710, +-0.118138150859541280, -0.118187800570289910, -0.118237449985568590, -0.118287099105253660, -0.118336747929220970, -0.118386396457346850, -0.118436044689506300, -0.118485692625575650, +-0.118535340265431190, -0.118584987608947950, -0.118634634656002240, -0.118684281406469940, -0.118733927860227390, -0.118783574017149560, -0.118833219877112820, -0.118882865439993000, +-0.118932510705666470, -0.118982155674008230, -0.119031800344894590, -0.119081444718201470, -0.119131088793805160, -0.119180732571580680, -0.119230376051404390, -0.119280019233152150, +-0.119329662116700310, -0.119379304701923860, -0.119428946988699160, -0.119478588976902530, -0.119528230666408980, -0.119577872057094860, -0.119627513148836060, -0.119677153941508910, +-0.119726794434988450, -0.119776434629150980, -0.119826074523872450, -0.119875714119029160, -0.119925353414496140, -0.119974992410149750, -0.120024631105865860, -0.120074269501520850, +-0.120123907596989720, -0.120173545392148830, -0.120223182886874070, -0.120272820081041790, -0.120322456974527020, -0.120372093567206110, -0.120421729858955410, -0.120471365849649930, +-0.120521001539166050, -0.120570636927379670, -0.120620272014167130, -0.120669906799403470, -0.120719541282965040, -0.120769175464727760, -0.120818809344567980, -0.120868442922360740, +-0.120918076197982390, -0.120967709171308850, -0.121017341842216480, -0.121066974210580310, -0.121116606276276710, -0.121166238039181580, -0.121215869499171320, -0.121265500656120930, +-0.121315131509906790, -0.121364762060405270, -0.121414392307491390, -0.121464022251041540, -0.121513651890931630, -0.121563281227038040, -0.121612910259235790, -0.121662538987401270, +-0.121712167411410420, -0.121761795531139570, -0.121811423346463800, -0.121861050857259470, -0.121910678063402510, -0.121960304964769300, -0.122009931561234890, -0.122059557852675640, +-0.122109183838967500, -0.122158809519986850, -0.122208434895608730, -0.122258059965709510, -0.122307684730165160, -0.122357309188852030, -0.122406933341645190, -0.122456557188421020, +-0.122506180729055890, -0.122555803963424870, -0.122605426891404340, -0.122655049512870230, -0.122704671827698950, -0.122754293835765550, -0.122803915536946420, -0.122853536931117500, +-0.122903158018155170, -0.122952778797934510, -0.123002399270331910, -0.123052019435223300, -0.123101639292485080, -0.123151258841992340, -0.123200878083621430, -0.123250497017248330, +-0.123300115642749440, -0.123349733959999800, -0.123399351968875850, -0.123448969669253950, -0.123498587061009180, -0.123548204144017950, -0.123597820918156200, -0.123647437383300350, +-0.123697053539325460, -0.123746669386107940, -0.123796284923523740, -0.123845900151449280, -0.123895515069759610, -0.123945129678331170, -0.123994743977039900, -0.124044357965762210, +-0.124093971644373190, -0.124143585012749230, -0.124193198070766310, -0.124242810818300840, -0.124292423255227910, -0.124342035381423910, -0.124391647196765260, -0.124441258701127060, +-0.124490869894385710, -0.124540480776417190, -0.124590091347097890, -0.124639701606302940, -0.124689311553908740, -0.124738921189791240, -0.124788530513826890, -0.124838139525890780, +-0.124887748225859310, -0.124937356613608480, -0.124986964689014700, -0.125036572451953040, -0.125086179902299980, -0.125135787039931470, -0.125185393864723910, -0.125235000376552440, +-0.125284606575293470, -0.125334212460822990, -0.125383818033017400, -0.125433423291751830, -0.125483028236902720, -0.125532632868346460, -0.125582237185958180, -0.125631841189614320, +-0.125681444879190830, -0.125731048254564190, -0.125780651315609500, -0.125830254062203160, -0.125879856494221200, -0.125929458611540030, -0.125979060414034780, -0.126028661901581850, +-0.126078263074057310, -0.126127863931337510, -0.126177464473297640, -0.126227064699814100, -0.126276664610762900, -0.126326264206020470, -0.126375863485461950, -0.126425462448963770, +-0.126475061096402390, -0.126524659427652900, -0.126574257442591740, -0.126623855141094980, -0.126673452523038990, -0.126723049588298940, -0.126772646336751250, -0.126822242768271980, +-0.126871838882737510, -0.126921434680023010, -0.126971030160004940, -0.127020625322559280, -0.127070220167562500, -0.127119814694889730, -0.127169408904417410, -0.127219002796021580, +-0.127268596369578680, -0.127318189624963860, -0.127367782562053560, -0.127417375180724240, -0.127466967480851040, -0.127516559462310440, -0.127566151124978430, -0.127615742468731470, +-0.127665333493444720, -0.127714924198994630, -0.127764514585257260, -0.127814104652109020, -0.127863694399425080, -0.127913283827081890, -0.127962872934955510, -0.128012461722922380, +-0.128062050190857670, -0.128111638338637810, -0.128161226166138870, -0.128210813673237310, -0.128260400859808280, -0.128309987725728240, -0.128359574270873660, -0.128409160495119720, +-0.128458746398342870, -0.128508331980419140, -0.128557917241225030, -0.128607502180635690, -0.128657086798527610, -0.128706671094776790, -0.128756255069259750, -0.128805838721851610, +-0.128855422052428890, -0.128905005060867610, -0.128954587747044270, -0.129004170110834010, -0.129053752152113320, -0.129103333870758260, -0.129152915266645300, -0.129202496339649610, +-0.129252077089647670, -0.129301657516515570, -0.129351237620129730, -0.129400817400365380, -0.129450396857098970, -0.129499975990207020, -0.129549554799564680, -0.129599133285048460, +-0.129648711446534420, -0.129698289283899010, -0.129747866797017470, -0.129797443985766230, -0.129847020850021390, -0.129896597389659450, -0.129946173604555570, -0.129995749494586250, +-0.130045325059627570, -0.130094900299556030, -0.130144475214246770, -0.130194049803576320, -0.130243624067420770, -0.130293198005656590, -0.130342771618158960, -0.130392344904804420, +-0.130441917865469460, -0.130491490500029260, -0.130541062808360340, -0.130590634790338750, -0.130640206445841010, -0.130689777774742330, -0.130739348776919200, -0.130788919452247690, +-0.130838489800604340, -0.130888059821864300, -0.130937629515904120, -0.130987198882599850, -0.131036767921828060, -0.131086336633463890, -0.131135905017383870, -0.131185473073464120, +-0.131235040801581100, -0.131284608201610030, -0.131334175273427470, -0.131383742016909890, -0.131433308431932520, -0.131482874518371870, -0.131532440276104060, -0.131582005705005560, +-0.131631570804951610, -0.131681135575818760, -0.131730700017483050, -0.131780264129821020, -0.131829827912707890, -0.131879391366020230, -0.131928954489634040, -0.131978517283425940, +-0.132028079747271100, -0.132077641881046040, -0.132127203684626880, -0.132176765157890170, -0.132226326300711100, -0.132275887112966230, -0.132325447594531600, -0.132375007745283820, +-0.132424567565098100, -0.132474127053850920, -0.132523686211418880, -0.132573245037677200, -0.132622803532502390, -0.132672361695770570, -0.132721919527358290, -0.132771477027140760, +-0.132821034194994550, -0.132870591030795760, -0.132920147534420910, -0.132969703705745290, -0.133019259544645390, -0.133068815050997320, -0.133118370224677680, -0.133167925065561660, +-0.133217479573525840, -0.133267033748446310, -0.133316587590199650, -0.133366141098661070, -0.133415694273707140, -0.133465247115214400, -0.133514799623058120, -0.133564351797114840, +-0.133613903637260670, -0.133663455143372190, -0.133713006315324620, -0.133762557152994540, -0.133812107656258090, -0.133861657824991790, -0.133911207659070910, -0.133960757158372000, +-0.134010306322771190, -0.134059855152145080, -0.134109403646368890, -0.134158951805319170, -0.134208499628872100, -0.134258047116904200, -0.134307594269290760, -0.134357141085908320, +-0.134406687566633460, -0.134456233711341440, -0.134505779519908860, -0.134555324992211820, -0.134604870128126890, -0.134654414927529360, -0.134703959390295810, -0.134753503516302330, +-0.134803047305425560, -0.134852590757540690, -0.134902133872524390, -0.134951676650252730, -0.135001219090602310, -0.135050761193448420, -0.135100302958667620, -0.135149844386136090, +-0.135199385475730350, -0.135248926227325730, -0.135298466640798780, -0.135348006716025680, -0.135397546452882990, -0.135447085851245990, -0.135496624910991260, -0.135546163631995450, +-0.135595702014133760, -0.135645240057282850, -0.135694777761318800, -0.135744315126118260, -0.135793852151556480, -0.135843388837510100, -0.135892925183855230, -0.135942461190468490, +-0.135991996857225160, -0.136041532184001830, -0.136091067170674680, -0.136140601817120290, -0.136190136123213960, -0.136239670088832280, -0.136289203713851450, -0.136338736998148020, +-0.136388269941597330, -0.136437802544075950, -0.136487334805460520, -0.136536866725626320, -0.136586398304449940, -0.136635929541807560, -0.136685460437575790, -0.136734990991629950, +-0.136784521203846600, -0.136834051074101990, -0.136883580602272650, -0.136933109788233950, -0.136982638631862470, -0.137032167133034370, -0.137081695291626310, -0.137131223107513580, +-0.137180750580572770, -0.137230277710680110, -0.137279804497712180, -0.137329330941544310, -0.137378857042053100, -0.137428382799115210, -0.137477908212605890, -0.137527433282401830, +-0.137576958008379160, -0.137626482390414560, -0.137676006428383290, -0.137725530122162020, -0.137775053471626910, -0.137824576476654640, -0.137874099137120450, -0.137923621452901020, +-0.137973143423872540, -0.138022665049911650, -0.138072186330893660, -0.138121707266695200, -0.138171227857192460, -0.138220748102262120, -0.138270268001779440, -0.138319787555621100, +-0.138369306763663710, -0.138418825625782640, -0.138468344141854520, -0.138517862311755500, -0.138567380135362290, -0.138616897612550190, -0.138666414743195830, -0.138715931527175460, +-0.138765447964365680, -0.138814964054641830, -0.138864479797880610, -0.138913995193958140, -0.138963510242751160, -0.139013024944134950, -0.139062539297986180, -0.139112053304181050, +-0.139161566962596240, -0.139211080273107080, -0.139260593235590200, -0.139310105849921840, -0.139359618115978660, -0.139409130033636000, -0.139458641602770520, -0.139508152823258870, +-0.139557663694976410, -0.139607174217799780, -0.139656684391605200, -0.139706194216269370, -0.139755703691667590, -0.139805212817676580, -0.139854721594172500, -0.139904230021032080, +-0.139953738098130660, -0.140003245825344870, -0.140052753202550980, -0.140102260229625660, -0.140151766906444210, -0.140201273232883370, -0.140250779208819340, -0.140300284834128820, +-0.140349790108687120, -0.140399295032370950, -0.140448799605056990, -0.140498303826620600, -0.140547807696938450, -0.140597311215886760, -0.140646814383342260, -0.140696317199180240, +-0.140745819663277450, -0.140795321775510130, -0.140844823535754920, -0.140894324943887230, -0.140943825999783720, -0.140993326703320650, -0.141042827054374710, -0.141092327052821240, +-0.141141826698536980, -0.141191325991398110, -0.141240824931281400, -0.141290323518062170, -0.141339821751617160, -0.141389319631823020, -0.141438817158555140, -0.141488314331690210, +-0.141537811151104500, -0.141587307616674710, -0.141636803728276190, -0.141686299485785680, -0.141735794889079390, -0.141785289938034100, -0.141834784632525110, -0.141884278972429170, +-0.141933772957622550, -0.141983266587981910, -0.142032759863382680, -0.142082252783701540, -0.142131745348814790, -0.142181237558599070, -0.142230729412929860, -0.142280220911683820, +-0.142329712054737210, -0.142379202841966780, -0.142428693273247890, -0.142478183348457270, -0.142527673067471630, -0.142577162430166380, -0.142626651436418200, -0.142676140086103410, +-0.142725628379098720, -0.142775116315279480, -0.142824603894522480, -0.142874091116703960, -0.142923577981700660, -0.142973064489387990, -0.143022550639642610, -0.143072036432340900, +-0.143121521867359520, -0.143171006944573910, -0.143220491663860750, -0.143269976025096390, -0.143319460028157510, -0.143368943672919550, -0.143418426959259240, -0.143467909887053300, +-0.143517392456177150, -0.143566874666507500, -0.143616356517920680, -0.143665838010293400, -0.143715319143501080, -0.143764799917420470, -0.143814280331927860, -0.143863760386899990, +-0.143913240082212260, -0.143962719417741470, -0.144012198393363850, -0.144061677008956200, -0.144111155264393890, -0.144160633159553690, -0.144210110694311920, -0.144259587868545310, +-0.144309064682129310, -0.144358541134940620, -0.144408017226856030, -0.144457492957750950, -0.144506968327502150, -0.144556443335985910, -0.144605917983079040, -0.144655392268656900, +-0.144704866192596290, -0.144754339754773500, -0.144803812955065340, -0.144853285793347160, -0.144902758269495810, -0.144952230383387530, -0.145001702134899130, -0.145051173523906040, +-0.145100644550284990, -0.145150115213912360, -0.145199585514664860, -0.145249055452417950, -0.145298525027048430, -0.145347994238433030, -0.145397463086447190, -0.145446931570967690, +-0.145496399691870890, -0.145545867449033500, -0.145595334842331000, -0.145644801871640190, -0.145694268536837370, -0.145743734837799320, -0.145793200774401470, -0.145842666346520630, +-0.145892131554033130, -0.145941596396815730, -0.145991060874743890, -0.146040524987694430, -0.146089988735543630, -0.146139452118168310, -0.146188915135443940, -0.146238377787247240, +-0.146287840073454630, -0.146337301993942850, -0.146386763548587370, -0.146436224737264980, -0.146485685559852470, -0.146535146016225300, -0.146584606106260280, -0.146634065829833740, +-0.146683525186822480, -0.146732984177101950, -0.146782442800548970, -0.146831901057039890, -0.146881358946451490, -0.146930816468659270, -0.146980273623539990, -0.147029730410970030, +-0.147079186830826160, -0.147128642882983910, -0.147178098567320060, -0.147227553883710950, -0.147277008832033400, -0.147326463412162880, -0.147375917623976200, -0.147425371467350190, +-0.147474824942160270, -0.147524278048283330, -0.147573730785595690, -0.147623183153974130, -0.147672635153294210, -0.147722086783432680, -0.147771538044265930, -0.147820988935670780, +-0.147870439457522730, -0.147919889609698570, -0.147969339392074680, -0.148018788804527900, -0.148068237846933680, -0.148117686519168900, -0.148167134821109880, -0.148216582752633470, +-0.148266030313615150, -0.148315477503931790, -0.148364924323460130, -0.148414370772075750, -0.148463816849655430, -0.148513262556075580, -0.148562707891213010, -0.148612152854943220, +-0.148661597447143050, -0.148711041667688920, -0.148760485516457600, -0.148809928993324600, -0.148859372098166800, -0.148908814830860580, -0.148958257191282750, -0.149007699179308840, +-0.149057140794815690, -0.149106582037679680, -0.149156022907777660, -0.149205463404985140, -0.149254903529178970, -0.149304343280235540, -0.149353782658031680, -0.149403221662442910, +-0.149452660293346110, -0.149502098550618110, -0.149551536434134410, -0.149600973943771860, -0.149650411079406880, -0.149699847840916310, -0.149749284228175680, -0.149798720241061830, +-0.149848155879451220, -0.149897591143220630, -0.149947026032245610, -0.149996460546403060, -0.150045894685569340, -0.150095328449621310, -0.150144761838434530, -0.150194194851885840, +-0.150243627489851680, -0.150293059752208890, -0.150342491638832980, -0.150391923149600870, -0.150441354284389400, -0.150490785043074090, -0.150540215425531810, -0.150589645431639000, +-0.150639075061272530, -0.150688504314307910, -0.150737933190622040, -0.150787361690091330, -0.150836789812592660, -0.150886217558001580, -0.150935644926194930, -0.150985071917049210, +-0.151034498530441210, -0.151083924766246550, -0.151133350624342080, -0.151182776104604230, -0.151232201206909860, -0.151281625931134560, -0.151331050277155210, -0.151380474244848660, +-0.151429897834090470, -0.151479321044757560, -0.151528743876726350, -0.151578166329873700, -0.151627588404075200, -0.151677010099207730, -0.151726431415147740, -0.151775852351772130, +-0.151825272908956420, -0.151874693086577530, -0.151924112884511910, -0.151973532302636470, -0.152022951340826720, -0.152072369998959620, -0.152121788276911580, -0.152171206174559540, +-0.152220623691778990, -0.152270040828446920, -0.152319457584440180, -0.152368873959634360, -0.152418289953906360, -0.152467705567132630, -0.152517120799190080, -0.152566535649954260, +-0.152615950119302120, -0.152665364207110130, -0.152714777913255130, -0.152764191237612760, -0.152813604180059930, -0.152863016740473060, -0.152912428918729110, -0.152961840714703650, +-0.153011252128273570, -0.153060663159315350, -0.153110073807705940, -0.153159484073320890, -0.153208893956037150, -0.153258303455731160, -0.153307712572279850, -0.153357121305558810, +-0.153406529655444990, -0.153455937621815250, -0.153505345204545260, -0.153554752403511910, -0.153604159218591660, -0.153653565649661460, -0.153702971696596890, -0.153752377359274910, +-0.153801782637571990, -0.153851187531365040, -0.153900592040529690, -0.153949996164942840, -0.153999399904481030, -0.154048803259021150, -0.154098206228438810, -0.154147608812610970, +-0.154197011011414090, -0.154246412824725120, -0.154295814252419700, -0.154345215294374730, -0.154394615950467160, -0.154444016220572630, -0.154493416104568040, -0.154542815602329940, +-0.154592214713735190, -0.154641613438659510, -0.154691011776979780, -0.154740409728572500, -0.154789807293314650, -0.154839204471081850, -0.154888601261751050, -0.154937997665198720, +-0.154987393681301850, -0.155036789309936060, -0.155086184550978280, -0.155135579404305060, -0.155184973869793300, -0.155234367947318710, -0.155283761636758170, -0.155333154937988660, +-0.155382547850885840, -0.155431940375326650, -0.155481332511187590, -0.155530724258345660, -0.155580115616676480, -0.155629506586057010, -0.155678897166363770, -0.155728287357473710, +-0.155777677159262500, -0.155827066571607110, -0.155876455594384040, -0.155925844227470270, -0.155975232470741470, -0.156024620324074580, -0.156074007787346120, -0.156123394860433110, +-0.156172781543211150, -0.156222167835557260, -0.156271553737347940, -0.156320939248460160, -0.156370324368769600, -0.156419709098153230, -0.156469093436488040, -0.156518477383649660, +-0.156567860939515110, -0.156617244103960880, -0.156666626876863970, -0.156716009258100090, -0.156765391247546180, -0.156814772845078780, -0.156864154050574880, -0.156913534863910160, +-0.156962915284961620, -0.157012295313605780, -0.157061674949719650, -0.157111054193178860, -0.157160433043860490, -0.157209811501640980, -0.157259189566397420, -0.157308567238005430, +-0.157357944516342020, -0.157407321401284220, -0.157456697892707640, -0.157506073990489330, -0.157555449694505830, -0.157604825004634130, -0.157654199920749970, -0.157703574442730280, +-0.157752948570451660, -0.157802322303791100, -0.157851695642624300, -0.157901068586828260, -0.157950441136279570, -0.157999813290855190, -0.158049185050430830, -0.158098556414883550, +-0.158147927384089840, -0.158197297957926780, -0.158246668136270000, -0.158296037918996570, -0.158345407305983480, -0.158394776297106440, -0.158444144892242460, -0.158493513091268110, +-0.158542880894060430, -0.158592248300495090, -0.158641615310449150, -0.158690981923799160, -0.158740348140422150, -0.158789713960193840, -0.158839079382991240, -0.158888444408690930, +-0.158937809037169970, -0.158987173268304030, -0.159036537101970190, -0.159085900538044970, -0.159135263576405450, -0.159184626216927330, -0.159233988459487660, -0.159283350303963430, +-0.159332711750230390, -0.159382072798165600, -0.159431433447645600, -0.159480793698547480, -0.159530153550746900, -0.159579513004120960, -0.159628872058546260, -0.159678230713899780, +-0.159727588970057290, -0.159776946826895830, -0.159826304284292040, -0.159875661342122890, -0.159925018000264150, -0.159974374258592870, -0.160023730116985650, -0.160073085575319550, +-0.160122440633470310, -0.160171795291314950, -0.160221149548730100, -0.160270503405592820, -0.160319856861778850, -0.160369209917165220, -0.160418562571629040, -0.160467914825045970, +-0.160517266677293130, -0.160566618128247130, -0.160615969177785030, -0.160665319825782550, -0.160714670072116790, -0.160764019916664340, -0.160813369359302290, -0.160862718399906370, +-0.160912067038353650, -0.160961415274520760, -0.161010763108284800, -0.161060110539521460, -0.161109457568107850, -0.161158804193920620, -0.161208150416836780, -0.161257496236732160, +-0.161306841653483770, -0.161356186666968740, -0.161405531277062810, -0.161454875483643040, -0.161504219286586060, -0.161553562685768980, -0.161602905681067580, -0.161652248272358880, +-0.161701590459519600, -0.161750932242426760, -0.161800273620956140, -0.161849614594984870, -0.161898955164389540, -0.161948295329047250, -0.161997635088833800, -0.162046974443626260, +-0.162096313393301270, -0.162145651937735950, -0.162194990076806070, -0.162244327810388690, -0.162293665138360940, -0.162343002060598600, -0.162392338576978740, -0.162441674687378050, +-0.162491010391673600, -0.162540345689741180, -0.162589680581457920, -0.162639015066700450, -0.162688349145345860, -0.162737682817269970, -0.162787016082349880, -0.162836348940462230, +-0.162885681391484180, -0.162935013435291460, -0.162984345071761210, -0.163033676300770120, -0.163083007122195260, -0.163132337535912440, -0.163181667541798770, -0.163230997139730940, +-0.163280326329586060, -0.163329655111239920, -0.163378983484569670, -0.163428311449452360, -0.163477639005763840, -0.163526966153381250, -0.163576292892181230, -0.163625619222040890, +-0.163674945142836090, -0.163724270654443920, -0.163773595756741080, -0.163822920449604700, -0.163872244732910570, -0.163921568606535810, -0.163970892070357140, -0.164020215124251690, +-0.164069537768095240, -0.164118860001764980, -0.164168181825137540, -0.164217503238090090, -0.164266824240498460, -0.164316144832239750, -0.164365465013191130, -0.164414784783228410, +-0.164464104142228700, -0.164513423090068780, -0.164562741626625710, -0.164612059751775340, -0.164661377465394830, -0.164710694767360890, -0.164760011657550610, -0.164809328135839900, +-0.164858644202105860, -0.164907959856225220, -0.164957275098075120, -0.165006589927531370, -0.165055904344471150, -0.165105218348771180, -0.165154531940308600, -0.165203845118959250, +-0.165253157884600290, -0.165302470237108870, -0.165351782176360850, -0.165401093702233350, -0.165450404814603130, -0.165499715513347360, -0.165549025798341830, -0.165598335669463750, +-0.165647645126589800, -0.165696954169597200, -0.165746262798361800, -0.165795571012760710, -0.165844878812670710, -0.165894186197968950, -0.165943493168531270, -0.165992799724234860, +-0.166042105864956460, -0.166091411590573250, -0.166140716900961050, -0.166190021795997070, -0.166239326275558460, -0.166288630339521100, -0.166337933987762170, -0.166387237220158410, +-0.166436540036586980, -0.166485842436923770, -0.166535144421045940, -0.166584445988830270, -0.166633747140153910, -0.166683047874892770, -0.166732348192923980, -0.166781648094124320, +-0.166830947578371000, -0.166880246645539850, -0.166929545295508100, -0.166978843528152480, -0.167028141343350200, -0.167077438740977110, -0.167126735720910440, -0.167176032283026910, +-0.167225328427203750, -0.167274624153316840, -0.167323919461243360, -0.167373214350860530, -0.167422508822044210, -0.167471802874671620, -0.167521096508619540, -0.167570389723765150, +-0.167619682519984330, -0.167668974897154320, -0.167718266855151870, -0.167767558393854180, -0.167816849513137190, -0.167866140212878050, -0.167915430492953540, -0.167964720353240920, +-0.168014009793616050, -0.168063298813956180, -0.168112587414138040, -0.168161875594038860, -0.168211163353534590, -0.168260450692502370, -0.168309737610819490, -0.168359024108361820, +-0.168408310185006570, -0.168457595840630580, -0.168506881075111000, -0.168556165888323810, -0.168605450280146200, -0.168654734250454960, -0.168704017799127300, -0.168753300926039180, +-0.168802583631067820, -0.168851865914089990, -0.168901147774982940, -0.168950429213622580, -0.168999710229886140, -0.169048990823650410, -0.169098270994792660, -0.169147550743188800, +-0.169196830068716050, -0.169246108971251670, -0.169295387450671580, -0.169344665506853010, -0.169393943139672790, -0.169443220349008130, -0.169492497134735020, -0.169541773496730640, +-0.169591049434871830, -0.169640324949035830, -0.169689600039098580, -0.169738874704937340, -0.169788148946428910, -0.169837422763450540, -0.169886696155878180, -0.169935969123589080, +-0.169985241666460060, -0.170034513784368370, -0.170083785477189940, -0.170133056744802090, -0.170182327587081540, -0.170231598003905670, -0.170280867995150330, -0.170330137560692820, +-0.170379406700410410, -0.170428675414179050, -0.170477943701875990, -0.170527211563378110, -0.170576478998562600, -0.170625746007305460, -0.170675012589483950, -0.170724278744974920, +-0.170773544473655640, -0.170822809775402040, -0.170872074650091440, -0.170921339097600630, -0.170970603117806930, -0.171019866710586250, -0.171069129875815930, -0.171118392613372780, +-0.171167654923134100, -0.171216916804975830, -0.171266178258775270, -0.171315439284409700, -0.171364699881755090, -0.171413960050688760, -0.171463219791087500, -0.171512479102828630, +-0.171561737985788140, -0.171610996439843290, -0.171660254464870960, -0.171709512060748410, -0.171758769227351670, -0.171808025964557990, -0.171857282272244260, -0.171906538150287750, +-0.171955793598564470, -0.172005048616951710, -0.172054303205326300, -0.172103557363565580, -0.172152811091545540, -0.172202064389143460, -0.172251317256236660, -0.172300569692701130, +-0.172349821698414200, -0.172399073273252680, -0.172448324417093930, -0.172497575129813920, -0.172546825411289990, -0.172596075261399000, -0.172645324680018250, -0.172694573667023730, +-0.172743822222292810, -0.172793070345702320, -0.172842318037129600, -0.172891565296450640, -0.172940812123542760, -0.172990058518282840, -0.173039304480548240, -0.173088550010214920, +-0.173137795107160240, -0.173187039771261510, -0.173236284002394710, -0.173285527800437240, -0.173334771165265940, -0.173384014096758160, -0.173433256594789890, -0.173482498659238480, +-0.173531740289980810, -0.173580981486894240, -0.173630222249854800, -0.173679462578739780, -0.173728702473426120, -0.173777941933791120, -0.173827180959710840, -0.173876419551062620, +-0.173925657707723340, -0.173974895429570340, -0.174024132716479680, -0.174073369568328670, -0.174122605984994270, -0.174171841966353770, -0.174221077512283220, -0.174270312622659990, +-0.174319547297361400, -0.174368781536263530, -0.174418015339243700, -0.174467248706178800, -0.174516481636946250, -0.174565714131422050, -0.174614946189483560, -0.174664177811007710, +-0.174713408995871840, -0.174762639743952040, -0.174811870055125610, -0.174861099929269510, -0.174910329366261110, -0.174959558365976460, -0.175008786928292890, -0.175058015053087380, +-0.175107242740237230, -0.175156469989618560, -0.175205696801108730, -0.175254923174585080, -0.175304149109923670, -0.175353374607001900, -0.175402599665696680, -0.175451824285885430, +-0.175501048467444160, -0.175550272210250270, -0.175599495514180690, -0.175648718379112830, -0.175697940804922740, -0.175747162791487780, -0.175796384338684910, -0.175845605446391520, +-0.175894826114483680, -0.175944046342838780, -0.175993266131333760, -0.176042485479846020, -0.176091704388251640, -0.176140922856427990, -0.176190140884252440, -0.176239358471601130, +-0.176288575618351430, -0.176337792324380270, -0.176387008589565080, -0.176436224413781930, -0.176485439796908200, -0.176534654738820910, -0.176583869239397400, -0.176633083298513770, +-0.176682296916047420, -0.176731510091875350, -0.176780722825874950, -0.176829935117922300, -0.176879146967894810, -0.176928358375669450, -0.176977569341123630, -0.177026779864133450, +-0.177075989944576320, -0.177125199582329220, -0.177174408777269530, -0.177223617529273430, -0.177272825838218240, -0.177322033703981450, -0.177371241126439150, -0.177420448105468730, +-0.177469654640947190, -0.177518860732751940, -0.177568066380759120, -0.177617271584846110, -0.177666476344889940, -0.177715680660768010, -0.177764884532356450, -0.177814087959532690, +-0.177863290942173680, -0.177912493480156890, -0.177961695573358450, -0.178010897221655750, -0.178060098424925820, -0.178109299183046050, -0.178158499495892630, -0.178207699363342940, +-0.178256898785274450, -0.178306097761563280, -0.178355296292086850, -0.178404494376722210, -0.178453692015346750, -0.178502889207836610, -0.178552085954069270, -0.178601282253921690, +-0.178650478107271360, -0.178699673513994410, -0.178748868473968260, -0.178798062987069930, -0.178847257053176890, -0.178896450672165250, -0.178945643843912510, -0.178994836568295650, +-0.179044028845192160, -0.179093220674478140, -0.179142412056031070, -0.179191602989728390, -0.179240793475446280, -0.179289983513062190, -0.179339173102453150, -0.179388362243496610, +-0.179437550936068700, -0.179486739180046930, -0.179535926975308320, -0.179585114321730330, -0.179634301219189110, -0.179683487667562150, -0.179732673666726460, -0.179781859216559510, +-0.179831044316937500, -0.179880228967737870, -0.179929413168837650, -0.179978596920114360, -0.180027780221444140, -0.180076963072704460, -0.180126145473772810, -0.180175327424525360, +-0.180224508924839570, -0.180273689974592530, -0.180322870573661700, -0.180372050721923280, -0.180421230419254700, -0.180470409665533040, -0.180519588460635820, -0.180568766804439170, +-0.180617944696820630, -0.180667122137657200, -0.180716299126826410, -0.180765475664204450, -0.180814651749668790, -0.180863827383096500, -0.180913002564365070, -0.180962177293350710, +-0.181011351569930900, -0.181060525393982710, -0.181109698765383630, -0.181158871684009900, -0.181208044149738980, -0.181257216162448360, -0.181306387722014290, -0.181355558828314250, +-0.181404729481225300, -0.181453899680624970, -0.181503069426389470, -0.181552238718396260, -0.181601407556522490, -0.181650575940645630, -0.181699743870641860, -0.181748911346388760, +-0.181798078367763380, -0.181847244934643240, -0.181896411046904540, -0.181945576704424820, -0.181994741907081180, -0.182043906654751090, -0.182093070947310810, -0.182142234784637870, +-0.182191398166609760, -0.182240561093102720, -0.182289723563994250, -0.182338885579161500, -0.182388047138481970, -0.182437208241831910, -0.182486368889088780, -0.182535529080129770, +-0.182584688814832360, -0.182633848093072790, -0.182683006914728610, -0.182732165279676890, -0.182781323187795190, -0.182830480638959760, -0.182879637633048150, -0.182928794169937430, +-0.182977950249505140, -0.183027105871627570, -0.183076261036182210, -0.183125415743046640, -0.183174569992097110, -0.183223723783211140, -0.183272877116265860, -0.183322029991138840, +-0.183371182407706280, -0.183420334365845790, -0.183469485865434460, -0.183518636906349840, -0.183567787488468190, -0.183616937611667090, -0.183666087275823620, -0.183715236480815390, +-0.183764385226518640, -0.183813533512810910, -0.183862681339569340, -0.183911828706671530, -0.183960975613993690, -0.184010122061413400, -0.184059268048807820, -0.184108413576054510, +-0.184157558643029740, -0.184206703249611050, -0.184255847395676050, -0.184304991081100990, -0.184354134305763470, -0.184403277069540600, -0.184452419372309970, -0.184501561213947870, +-0.184550702594331840, -0.184599843513339080, -0.184648983970847140, -0.184698123966732300, -0.184747263500872140, -0.184796402573143840, -0.184845541183424970, -0.184894679331591790, +-0.184943817017521940, -0.184992954241092520, -0.185042091002181160, -0.185091227300664160, -0.185140363136419070, -0.185189498509323510, -0.185238633419253760, -0.185287767866087440, +-0.185336901849701700, -0.185386035369974140, -0.185435168426781040, -0.185484301020000050, -0.185533433149508260, -0.185582564815183370, -0.185631696016901600, -0.185680826754540620, +-0.185729957027977570, -0.185779086837090050, -0.185828216181754350, -0.185877345061848160, -0.185926473477248580, -0.185975601427833260, -0.186024728913478490, -0.186073855934061920, +-0.186122982489461130, -0.186172108579552440, -0.186221234204213490, -0.186270359363321450, -0.186319484056753970, -0.186368608284387310, -0.186417732046099150, -0.186466855341766660, +-0.186515978171267440, -0.186565100534477860, -0.186614222431275540, -0.186663343861537660, -0.186712464825141840, -0.186761585321964440, -0.186810705351883070, -0.186859824914774930, +-0.186908944010517660, -0.186958062638987620, -0.187007180800062400, -0.187056298493619680, -0.187105415719535760, -0.187154532477688320, -0.187203648767954530, -0.187252764590212060, +-0.187301879944337250, -0.187350994830207730, -0.187400109247700730, -0.187449223196693910, -0.187498336677063560, -0.187547449688687390, -0.187596562231442610, -0.187645674305206840, +-0.187694785909856440, -0.187743897045269090, -0.187793007711321990, -0.187842117907892820, -0.187891227634857910, -0.187940336892094940, -0.187989445679481120, -0.188038553996894090, +-0.188087661844210270, -0.188136769221307320, -0.188185876128062840, -0.188234982564353250, -0.188284088530056210, -0.188333194025048940, -0.188382299049209140, -0.188431403602413140, +-0.188480507684538640, -0.188529611295462860, -0.188578714435063490, -0.188627817103216910, -0.188676919299800770, -0.188726021024692330, -0.188775122277769300, -0.188824223058908000, +-0.188873323367986150, -0.188922423204881010, -0.188971522569470220, -0.189020621461630210, -0.189069719881238630, -0.189118817828173190, -0.189167915302310280, -0.189217012303527580, +-0.189266108831702330, -0.189315204886712270, -0.189364300468433750, -0.189413395576744470, -0.189462490211521730, -0.189511584372643180, -0.189560678059985220, -0.189609771273425570, +-0.189658864012841520, -0.189707956278110710, -0.189757048069109590, -0.189806139385715860, -0.189855230227806790, -0.189904320595260050, -0.189953410487952080, -0.190002499905760600, +-0.190051588848563300, -0.190100677316236590, -0.190149765308658180, -0.190198852825705370, -0.190247939867255830, -0.190297026433186050, -0.190346112523373660, -0.190395198137696040, +-0.190444283276030830, -0.190493367938254470, -0.190542452124244700, -0.190591535833878810, -0.190640619067034500, -0.190689701823588210, -0.190738784103417660, -0.190787865906400150, +-0.190836947232413430, -0.190886028081333900, -0.190935108453039290, -0.190984188347406910, -0.191033267764314510, -0.191082346703638490, -0.191131425165256610, -0.191180503149046580, +-0.191229580654884880, -0.191278657682649230, -0.191327734232216940, -0.191376810303465730, -0.191425885896272070, -0.191474961010513700, -0.191524035646067930, -0.191573109802812500, +-0.191622183480623850, -0.191671256679379760, -0.191720329398957500, -0.191769401639234890, -0.191818473400088310, -0.191867544681395550, -0.191916615483033960, -0.191965685804881240, +-0.192014755646813860, -0.192063825008709610, -0.192112893890446220, -0.192161962291900160, -0.192211030212949220, -0.192260097653470690, -0.192309164613342350, -0.192358231092440660, +-0.192407297090643390, -0.192456362607827890, -0.192505427643871910, -0.192554492198651920, -0.192603556272045700, -0.192652619863930590, -0.192701682974184390, -0.192750745602683520, +-0.192799807749305770, -0.192848869413928540, -0.192897930596429570, -0.192946991296685300, -0.192996051514573580, -0.193045111249972170, -0.193094170502757540, -0.193143229272807470, +-0.193192287559999340, -0.193241345364210950, -0.193290402685318720, -0.193339459523200500, -0.193388515877733650, -0.193437571748795920, -0.193486627136263830, -0.193535682040015170, +-0.193584736459927330, -0.193633790395878050, -0.193682843847743900, -0.193731896815402590, -0.193780949298731580, -0.193830001297608610, -0.193879052811910200, -0.193928103841514180, +-0.193977154386297870, -0.194026204446139130, -0.194075254020914440, -0.194124303110501610, -0.194173351714778450, -0.194222399833621500, -0.194271447466908530, -0.194320494614516950, +-0.194369541276324580, -0.194418587452207910, -0.194467633142044770, -0.194516678345712540, -0.194565723063089060, -0.194614767294050830, -0.194663811038475690, -0.194712854296241020, +-0.194761897067224660, -0.194810939351303090, -0.194859981148354210, -0.194909022458255340, -0.194958063280884390, -0.195007103616117810, -0.195056143463833490, -0.195105182823909230, +-0.195154221696221600, -0.195203260080648420, -0.195252297977067060, -0.195301335385355410, -0.195350372305389990, -0.195399408737048640, -0.195448444680208750, -0.195497480134748190, +-0.195546515100543490, -0.195595549577472520, -0.195644583565412670, -0.195693617064241790, -0.195742650073836450, -0.195791682594074480, -0.195840714624833300, -0.195889746165990750, +-0.195938777217423420, -0.195987807779009120, -0.196036837850625760, -0.196085867432149870, -0.196134896523459310, -0.196183925124431500, -0.196232953234944330, -0.196281980854874330, +-0.196331007984099390, -0.196380034622496900, -0.196429060769944790, -0.196478086426319590, -0.196527111591499160, -0.196576136265360940, -0.196625160447782830, -0.196674184138641380, +-0.196723207337814480, -0.196772230045179570, -0.196821252260614500, -0.196870273983995870, -0.196919295215201550, -0.196968315954109440, -0.197017336200596080, -0.197066355954539420, +-0.197115375215816850, -0.197164393984306270, -0.197213412259884260, -0.197262430042428740, -0.197311447331817130, -0.197360464127927350, -0.197409480430635970, -0.197458496239820900, +-0.197507511555359590, -0.197556526377129920, -0.197605540705008490, -0.197654554538873230, -0.197703567878601580, -0.197752580724071450, -0.197801593075159430, -0.197850604931743420, +-0.197899616293700900, -0.197948627160909770, -0.197997637533246650, -0.198046647410589420, -0.198095656792816020, -0.198144665679803040, -0.198193674071428380, -0.198242681967569560, +-0.198291689368104460, -0.198340696272909710, -0.198389702681863210, -0.198438708594842440, -0.198487714011725350, -0.198536718932388530, -0.198585723356709930, -0.198634727284567020, +-0.198683730715837700, -0.198732733650398650, -0.198781736088127740, -0.198830738028902500, -0.198879739472600870, -0.198928740419099440, -0.198977740868276160, -0.199026740820008960, +-0.199075740274174460, -0.199124739230650630, -0.199173737689314960, -0.199222735650045360, -0.199271733112718480, -0.199320730077212290, -0.199369726543404260, -0.199418722511172350, +-0.199467717980393200, -0.199516712950944780, -0.199565707422704550, -0.199614701395550490, -0.199663694869359230, -0.199712687844008750, -0.199761680319376550, -0.199810672295340580, +-0.199859663771777500, -0.199908654748565260, -0.199957645225581820, -0.200006635202703810, -0.200055624679809220, -0.200104613656775590, -0.200153602133480850, -0.200202590109801680, +-0.200251577585616010, -0.200300564560801420, -0.200349551035235830, -0.200398537008795950, -0.200447522481359720, -0.200496507452804670, -0.200545491923008800, -0.200594475891848760, +-0.200643459359202550, -0.200692442324947680, -0.200741424788962120, -0.200790406751122590, -0.200839388211307040, -0.200888369169392980, -0.200937349625258470, -0.200986329578780150, +-0.201035309029835990, -0.201084287978304020, -0.201133266424060870, -0.201182244366984560, -0.201231221806952630, -0.201280198743843090, -0.201329175177532630, -0.201378151107899220, +-0.201427126534820450, -0.201476101458174270, -0.201525075877837410, -0.201574049793687870, -0.201623023205603210, -0.201671996113461400, -0.201720968517139190, -0.201769940416514550, +-0.201818911811465080, -0.201867882701868730, -0.201916853087602270, -0.201965822968543650, -0.202014792344570930, -0.202063761215560770, -0.202112729581391230, -0.202161697441939850, +-0.202210664797084660, -0.202259631646702380, -0.202308597990671020, -0.202357563828868190, -0.202406529161171860, -0.202455493987458770, -0.202504458307606940, -0.202553422121493990, +-0.202602385428997890, -0.202651348229995420, -0.202700310524364570, -0.202749272311982920, -0.202798233592728560, -0.202847194366478160, -0.202896154633109780, -0.202945114392501460, +-0.202994073644529900, -0.203043032389073150, -0.203091990626008830, -0.203140948355214980, -0.203189905576568320, -0.203238862289946890, -0.203287818495228310, -0.203336774192290600, +-0.203385729381010540, -0.203434684061266140, -0.203483638232935050, -0.203532591895895290, -0.203581545050023600, -0.203630497695198090, -0.203679449831296290, -0.203728401458196320, +-0.203777352575774920, -0.203826303183910120, -0.203875253282480020, -0.203924202871361320, -0.203973151950432140, -0.204022100519570070, -0.204071048578653190, -0.204119996127558240, +-0.204168943166163320, -0.204217889694346010, -0.204266835711984450, -0.204315781218955360, -0.204364726215136790, -0.204413670700406420, -0.204462614674642300, -0.204511558137721230, +-0.204560501089521230, -0.204609443529920000, -0.204658385458795610, -0.204707326876024800, -0.204756267781485670, -0.204805208175055880, -0.204854148056613510, -0.204903087426035330, +-0.204952026283199450, -0.205000964627983890, -0.205049902460265530, -0.205098839779922380, -0.205147776586832170, -0.205196712880872930, -0.205245648661921460, -0.205294583929855890, +-0.205343518684553860, -0.205392452925893450, -0.205441386653751500, -0.205490319868006060, -0.205539252568534840, -0.205588184755215900, -0.205637116427926060, -0.205686047586543460, +-0.205734978230945720, -0.205783908361010990, -0.205832837976616030, -0.205881767077638970, -0.205930695663957970, -0.205979623735449760, -0.206028551291992490, -0.206077478333463850, +-0.206126404859741960, -0.206175330870703610, -0.206224256366226930, -0.206273181346189600, -0.206322105810469780, -0.206371029758944250, -0.206419953191491150, -0.206468876107988140, +-0.206517798508313420, -0.206566720392343720, -0.206615641759957250, -0.206664562611031670, -0.206713482945445120, -0.206762402763074420, -0.206811322063797740, -0.206860240847493160, +-0.206909159114037540, -0.206958076863309030, -0.207006994095185330, -0.207055910809544580, -0.207104827006263620, -0.207153742685220600, -0.207202657846293210, -0.207251572489359630, +-0.207300486614296650, -0.207349400220982470, -0.207398313309294810, -0.207447225879111770, -0.207496137930310240, -0.207545049462768390, -0.207593960476363890, -0.207642870970974950, +-0.207691780946478360, -0.207740690402752340, -0.207789599339674590, -0.207838507757123290, -0.207887415654975260, -0.207936323033108690, -0.207985229891401780, -0.208034136229731330, +-0.208083042047975560, -0.208131947346012170, -0.208180852123719340, -0.208229756380973960, -0.208278660117654200, -0.208327563333637780, -0.208376466028802890, -0.208425368203026370, +-0.208474269856186470, -0.208523170988160870, -0.208572071598827790, -0.208620971688064090, -0.208669871255747960, -0.208718770301757170, -0.208767668825969870, -0.208816566828262970, +-0.208865464308514630, -0.208914361266603090, -0.208963257702405200, -0.209012153615799200, -0.209061049006662780, -0.209109943874874170, -0.209158838220310280, -0.209207732042849290, +-0.209256625342368970, -0.209305518118747540, -0.209354410371861840, -0.209403302101590140, -0.209452193307810200, -0.209501083990400180, -0.209549974149237040, -0.209598863784198950, +-0.209647752895163710, -0.209696641482009500, -0.209745529544613290, -0.209794417082853210, -0.209843304096607560, -0.209892190585753200, -0.209941076550168360, -0.209989961989730830, +-0.210038846904318840, -0.210087731293809280, -0.210136615158080410, -0.210185498497010010, -0.210234381310476280, -0.210283263598356170, -0.210332145360527910, -0.210381026596869270, +-0.210429907307258500, -0.210478787491572530, -0.210527667149689600, -0.210576546281487480, -0.210625424886844440, -0.210674302965637410, -0.210723180517744630, -0.210772057543044320, +-0.210820934041413420, -0.210869810012730200, -0.210918685456872450, -0.210967560373718440, -0.211016434763145080, -0.211065308625030620, -0.211114181959252910, -0.211163054765690170, +-0.211211927044219370, -0.211260798794718730, -0.211309670017066100, -0.211358540711139740, -0.211407410876816610, -0.211456280513974910, -0.211505149622492530, -0.211554018202247730, +-0.211602886253117430, -0.211651753774979910, -0.211700620767713010, -0.211749487231194990, -0.211798353165302820, -0.211847218569914790, -0.211896083444909120, -0.211944947790162820, +-0.211993811605554140, -0.212042674890960930, -0.212091537646261460, -0.212140399871332740, -0.212189261566053000, -0.212238122730300100, -0.212286983363952350, -0.212335843466886690, +-0.212384703038981440, -0.212433562080114410, -0.212482420590163920, -0.212531278569006940, -0.212580136016521790, -0.212628992932586270, -0.212677849317078700, -0.212726705169876100, +-0.212775560490856720, -0.212824415279898870, -0.212873269536879540, -0.212922123261677060, -0.212970976454169240, -0.213019829114234450, -0.213068681241749630, -0.213117532836593100, +-0.213166383898642760, -0.213215234427776870, -0.213264084423872490, -0.213312933886807890, -0.213361782816460930, -0.213410631212709980, -0.213459479075432000, -0.213508326404505320, +-0.213557173199807830, -0.213606019461217850, -0.213654865188612380, -0.213703710381869750, -0.213752555040868260, -0.213801399165484960, -0.213850242755598160, -0.213899085811085770, +-0.213947928331826100, -0.213996770317696150, -0.214045611768574280, -0.214094452684338410, -0.214143293064866820, -0.214192132910036550, -0.214240972219725960, -0.214289810993812950, +-0.214338649232175830, -0.214387486934691670, -0.214436324101238780, -0.214485160731695070, -0.214533996825938930, -0.214582832383847340, -0.214631667405298650, -0.214680501890170820, +-0.214729335838342170, -0.214778169249689730, -0.214827002124091860, -0.214875834461426940, -0.214924666261572000, -0.214973497524405390, -0.215022328249805020, -0.215071158437649290, +-0.215119988087815210, -0.215168817200181160, -0.215217645774625070, -0.215266473811025320, -0.215315301309258940, -0.215364128269204290, -0.215412954690739340, -0.215461780573742430, +-0.215510605918090630, -0.215559430723662320, -0.215608254990335420, -0.215657078717988340, -0.215705901906498100, -0.215754724555743130, -0.215803546665601780, -0.215852368235951140, +-0.215901189266669540, -0.215950009757635010, -0.215998829708725860, -0.216047649119819220, -0.216096467990793460, -0.216145286321526520, -0.216194104111896800, -0.216242921361781390, +-0.216291738071058670, -0.216340554239606600, -0.216389369867303590, -0.216438184954026700, -0.216486999499654360, -0.216535813504064530, -0.216584626967135600, -0.216633439888744670, +-0.216682252268770140, -0.216731064107090390, -0.216779875403582570, -0.216828686158125060, -0.216877496370595830, -0.216926306040873290, -0.216975115168834550, -0.217023923754358030, +-0.217072731797321700, -0.217121539297603970, -0.217170346255081970, -0.217219152669634100, -0.217267958541138340, -0.217316763869473130, -0.217365568654515560, -0.217414372896144070, +-0.217463176594236670, -0.217511979748671730, -0.217560782359326440, -0.217609584426079170, -0.217658385948808370, -0.217707186927391190, -0.217755987361706040, -0.217804787251630910, +-0.217853586597044240, -0.217902385397823200, -0.217951183653846160, -0.217999981364991190, -0.218048778531136690, -0.218097575152159800, -0.218146371227938980, -0.218195166758352240, +-0.218243961743278010, -0.218292756182593440, -0.218341550076177000, -0.218390343423906670, -0.218439136225660910, -0.218487928481316870, -0.218536720190753010, -0.218585511353847380, +-0.218634301970478370, -0.218683092040523190, -0.218731881563860280, -0.218780670540368090, -0.218829458969923780, -0.218878246852405840, -0.218927034187692300, -0.218975820975661570, +-0.219024607216190880, -0.219073392909158670, -0.219122178054442950, -0.219170962651922260, -0.219219746701473710, -0.219268530202975790, -0.219317313156306540, -0.219366095561344450, +-0.219414877417966700, -0.219463658726051750, -0.219512439485477630, -0.219561219696122860, -0.219609999357864630, -0.219658778470581380, -0.219707557034151600, -0.219756335048452520, +-0.219805112513362600, -0.219853889428759890, -0.219902665794522890, -0.219951441610528790, -0.220000216876656110, -0.220048991592782850, -0.220097765758787590, -0.220146539374547450, +-0.220195312439940950, -0.220244084954846210, -0.220292856919141660, -0.220341628332704540, -0.220390399195413370, -0.220439169507146180, -0.220487939267781490, -0.220536708477196530, +-0.220585477135269800, -0.220634245241879830, -0.220683012796903780, -0.220731779800220210, -0.220780546251707200, -0.220829312151243270, -0.220878077498705580, -0.220926842293972750, +-0.220975606536922780, -0.221024370227434240, -0.221073133365384340, -0.221121895950651600, -0.221170657983114140, -0.221219419462650450, -0.221268180389137760, -0.221316940762454640, +-0.221365700582479170, -0.221414459849089890, -0.221463218562164030, -0.221511976721580100, -0.221560734327216240, -0.221609491378950970, -0.221658247876661550, -0.221707003820226510, +-0.221755759209524390, -0.221804514044432440, -0.221853268324829210, -0.221902022050592810, -0.221950775221601780, -0.221999527837733380, -0.222048279898866160, -0.222097031404878240, +-0.222145782355648160, -0.222194532751053220, -0.222243282590971920, -0.222292031875282460, -0.222340780603863310, -0.222389528776591790, -0.222438276393346460, -0.222487023454005420, +-0.222535769958447260, -0.222584515906549240, -0.222633261298189920, -0.222682006133247900, -0.222730750411600430, -0.222779494133126060, -0.222828237297702990, -0.222876979905209740, +-0.222925721955523600, -0.222974463448523170, -0.223023204384086570, -0.223071944762092410, -0.223120684582417930, -0.223169423844941760, -0.223218162549542020, -0.223266900696097310, +-0.223315638284484920, -0.223364375314583450, -0.223413111786271020, -0.223461847699426230, -0.223510583053926400, -0.223559317849650140, -0.223608052086475970, -0.223656785764281270, +-0.223705518882944600, -0.223754251442344120, -0.223802983442358470, -0.223851714882864900, -0.223900445763742070, -0.223949176084868110, -0.223997905846121640, -0.224046635047379980, +-0.224095363688521730, -0.224144091769425070, -0.224192819289968620, -0.224241546250029680, -0.224290272649486870, -0.224338998488218390, -0.224387723766102830, -0.224436448483017550, +-0.224485172638841130, -0.224533896233452240, -0.224582619266728150, -0.224631341738547510, -0.224680063648788540, -0.224728784997329820, -0.224777505784048700, -0.224826226008823850, +-0.224874945671533400, -0.224923664772056050, -0.224972383310269090, -0.225021101286051160, -0.225069818699280500, -0.225118535549835710, -0.225167251837594150, -0.225215967562434450, +-0.225264682724234860, -0.225313397322873980, -0.225362111358229170, -0.225410824830179070, -0.225459537738601950, -0.225508250083376380, -0.225556961864379760, -0.225605673081490740, +-0.225654383734587990, -0.225703093823548810, -0.225751803348251930, -0.225800512308575510, -0.225849220704398250, -0.225897928535597540, -0.225946635802051960, -0.225995342503639810, +-0.226044048640239750, -0.226092754211729110, -0.226141459217986620, -0.226190163658890440, -0.226238867534319320, -0.226287570844150580, -0.226336273588262920, -0.226384975766534570, +-0.226433677378844210, -0.226482378425069240, -0.226531078905088310, -0.226579778818780140, -0.226628478166022050, -0.226677176946692790, -0.226725875160670580, -0.226774572807834110, +-0.226823269888060790, -0.226871966401229280, -0.226920662347217890, -0.226969357725905240, -0.227018052537168780, -0.227066746780887170, -0.227115440456938710, -0.227164133565202070, +-0.227212826105554680, -0.227261518077875200, -0.227310209482041950, -0.227358900317933600, -0.227407590585427560, -0.227456280284402540, -0.227504969414737270, -0.227553657976309140, +-0.227602345968996870, -0.227651033392678700, -0.227699720247233420, -0.227748406532538390, -0.227797092248472330, -0.227845777394913570, -0.227894461971740790, -0.227943145978831420, +-0.227991829416064160, -0.228040512283317370, -0.228089194580469700, -0.228137876307398620, -0.228186557463982860, -0.228235238050100680, -0.228283918065630860, -0.228332597510450820, +-0.228381276384439250, -0.228429954687474540, -0.228478632419435330, -0.228527309580199120, -0.228575986169644640, -0.228624662187650650, -0.228673337634094530, -0.228722012508855100, +-0.228770686811810620, -0.228819360542839860, -0.228868033701820270, -0.228916706288630590, -0.228965378303149140, -0.229014049745254690, -0.229062720614824690, -0.229111390911737880, +-0.229160060635872580, -0.229208729787107570, -0.229257398365320300, -0.229306066370389560, -0.229354733802193620, -0.229403400660611300, -0.229452066945520030, -0.229500732656798600, +-0.229549397794325760, -0.229598062357979000, -0.229646726347637080, -0.229695389763178350, -0.229744052604481580, -0.229792714871424250, -0.229841376563885150, -0.229890037681742570, +-0.229938698224875340, -0.229987358193160930, -0.230036017586478150, -0.230084676404705310, -0.230133334647721200, -0.230181992315403340, -0.230230649407630490, -0.230279305924281000, +-0.230327961865233720, -0.230376617230366070, -0.230425272019556870, -0.230473926232684950, -0.230522579869627760, -0.230571232930264130, -0.230619885414472430, -0.230668537322131440, +-0.230717188653118660, -0.230765839407312930, -0.230814489584592580, -0.230863139184836450, -0.230911788207922050, -0.230960436653728170, -0.231009084522133200, -0.231057731813015950, +-0.231106378526253930, -0.231155024661725970, -0.231203670219310460, -0.231252315198886200, -0.231300959600330700, -0.231349603423522810, -0.231398246668341360, -0.231446889334663840, +-0.231495531422369120, -0.231544172931335560, -0.231592813861442010, -0.231641454212565990, -0.231690093984586310, -0.231738733177381420, -0.231787371790830120, -0.231836009824809950, +-0.231884647279199770, -0.231933284153877980, -0.231981920448723400, -0.232030556163613590, -0.232079191298427380, -0.232127825853043200, -0.232176459827339890, -0.232225093221195000, +-0.232273726034487370, -0.232322358267095440, -0.232370989918898010, -0.232419620989772700, -0.232468251479598350, -0.232516881388253770, -0.232565510715616600, -0.232614139461565620, +-0.232662767625979290, -0.232711395208736490, -0.232760022209714760, -0.232808648628792970, -0.232857274465849560, -0.232905899720763390, -0.232954524393412050, -0.233003148483674400, +-0.233051771991428870, -0.233100394916554350, -0.233149017258928420, -0.233197639018429940, -0.233246260194937350, -0.233294880788329550, -0.233343500798484120, -0.233392120225279940, +-0.233440739068595890, -0.233489357328309550, -0.233537975004299820, -0.233586592096445170, -0.233635208604624440, -0.233683824528715280, -0.233732439868596570, -0.233781054624146750, +-0.233829668795244690, -0.233878282381768080, -0.233926895383595730, -0.233975507800606160, -0.234024119632678250, -0.234072730879689610, -0.234121341541519120, -0.234169951618045300, +-0.234218561109147020, -0.234267170014701900, -0.234315778334588890, -0.234364386068686840, -0.234412993216873390, -0.234461599779027450, -0.234510205755027540, -0.234558811144752520, +-0.234607415948080040, -0.234656020164889040, -0.234704623795057990, -0.234753226838465810, -0.234801829294990110, -0.234850431164509850, -0.234899032446903520, -0.234947633142050030, +-0.234996233249827050, -0.235044832770113450, -0.235093431702787790, -0.235142030047728990, -0.235190627804814640, -0.235239224973923770, -0.235287821554934830, -0.235336417547726750, +-0.235385012952177200, -0.235433607768165130, -0.235482201995569460, -0.235530795634267850, -0.235579388684139250, -0.235627981145062200, -0.235676573016915610, -0.235725164299577160, +-0.235773754992925800, -0.235822345096840050, -0.235870934611198870, -0.235919523535879920, -0.235968111870762160, -0.236016699615724130, -0.236065286770644780, -0.236113873335401760, +-0.236162459309874090, -0.236211044693940250, -0.236259629487479250, -0.236308213690368720, -0.236356797302487680, -0.236405380323715050, -0.236453962753928580, -0.236502544593007180, +-0.236551125840829410, -0.236599706497274270, -0.236648286562219420, -0.236696866035543850, -0.236745444917126120, -0.236794023206845230, -0.236842600904578810, -0.236891178010205930, +-0.236939754523605080, -0.236988330444655280, -0.237036905773234250, -0.237085480509220900, -0.237134054652493900, -0.237182628202932180, -0.237231201160413440, -0.237279773524816720, +-0.237328345296020980, -0.237376916473903960, -0.237425487058344630, -0.237474057049221620, -0.237522626446413860, -0.237571195249799110, -0.237619763459256390, -0.237668331074664230, +-0.237716898095901710, -0.237765464522846500, -0.237814030355377630, -0.237862595593373670, -0.237911160236713660, -0.237959724285275310, -0.238008287738937670, -0.238056850597579310, +-0.238105412861079250, -0.238153974529315220, -0.238202535602166250, -0.238251096079511370, -0.238299655961228350, -0.238348215247196150, -0.238396773937293440, -0.238445332031399200, +-0.238493889529391210, -0.238542446431148520, -0.238591002736549710, -0.238639558445473800, -0.238688113557798560, -0.238736668073403050, -0.238785221992165870, -0.238833775313966070, +-0.238882328038681400, -0.238930880166190910, -0.238979431696373200, -0.239027982629107380, -0.239076532964271140, -0.239125082701743570, -0.239173631841403310, -0.239222180383129400, +-0.239270728326799580, -0.239319275672292970, -0.239367822419488590, -0.239416368568264230, -0.239464914118498930, -0.239513459070071380, -0.239562003422860580, -0.239610547176744350, +-0.239659090331601770, -0.239707632887311450, -0.239756174843752470, -0.239804716200802630, -0.239853256958341000, -0.239901797116246230, -0.239950336674397390, -0.239998875632672280, +-0.240047413990949980, -0.240095951749109170, -0.240144488907028890, -0.240193025464586960, -0.240241561421662450, -0.240290096778134480, -0.240338631533880850, -0.240387165688780630, +-0.240435699242712490, -0.240484232195555540, -0.240532764547187580, -0.240581296297487700, -0.240629827446334600, -0.240678357993607340, -0.240726887939183760, -0.240775417282942970, +-0.240823946024763620, -0.240872474164524840, -0.240921001702104450, -0.240969528637381580, -0.241018054970234850, -0.241066580700543430, -0.241115105828185130, -0.241163630353039060, +-0.241212154274984350, -0.241260677593898830, -0.241309200309661580, -0.241357722422151370, -0.241406243931247270, -0.241454764836827120, -0.241503285138770060, -0.241551804836954820, +-0.241600323931260460, -0.241648842421564870, -0.241697360307747190, -0.241745877589686080, -0.241794394267260740, -0.241842910340348970, -0.241891425808829910, -0.241939940672582290, +-0.241988454931485270, -0.242036968585416650, -0.242085481634255640, -0.242133994077880920, -0.242182505916171630, -0.242231017149005660, -0.242279527776262130, -0.242328037797820220, +-0.242376547213557810, -0.242425056023353990, -0.242473564227087550, -0.242522071824637640, -0.242570578815882090, -0.242619085200700140, -0.242667590978970420, -0.242716096150572190, +-0.242764600715383280, -0.242813104673282880, -0.242861608024149720, -0.242910110767862950, -0.242958612904300490, -0.243007114433341470, -0.243055615354864700, -0.243104115668749290, +-0.243152615374873180, -0.243201114473115540, -0.243249612963355540, -0.243298110845471070, -0.243346608119341310, -0.243395104784845050, -0.243443600841861450, -0.243492096290268410, +-0.243540591129945140, -0.243589085360770400, -0.243637578982623370, -0.243686071995381950, -0.243734564398925350, -0.243783056193132370, -0.243831547377882150, -0.243880037953052630, +-0.243928527918523040, -0.243977017274172120, -0.244025506019879070, -0.244073994155521830, -0.244122481680979640, -0.244170968596131630, -0.244219454900855780, -0.244267940595031320, +-0.244316425678536980, -0.244364910151252030, -0.244413394013054340, -0.244461877263823210, -0.244510359903437340, -0.244558841931776020, -0.244607323348717180, -0.244655804154140010, +-0.244704284347923350, -0.244752763929946380, -0.244801242900087090, -0.244849721258224710, -0.244898199004238010, -0.244946676138006250, -0.244995152659407360, -0.245043628568320570, +-0.245092103864625150, -0.245140578548199070, -0.245189052618921520, -0.245237526076671350, -0.245285998921327770, -0.245334471152768770, -0.245382942770873610, -0.245431413775521080, +-0.245479884166590450, -0.245528353943959690, -0.245576823107508030, -0.245625291657114300, -0.245673759592657800, -0.245722226914016460, -0.245770693621069540, -0.245819159713695920, +-0.245867625191774800, -0.245916090055184190, -0.245964554303803370, -0.246013017937511150, -0.246061480956186820, -0.246109943359708370, -0.246158405147955030, -0.246206866320806160, +-0.246255326878139640, -0.246303786819834840, -0.246352246145770560, -0.246400704855826070, -0.246449162949879420, -0.246497620427809840, -0.246546077289496230, -0.246594533534817860, +-0.246642989163652710, -0.246691444175880100, -0.246739898571378870, -0.246788352350028330, -0.246836805511706480, -0.246885258056292610, -0.246933709983665590, -0.246982161293704730, +-0.247030611986288030, -0.247079062061294820, -0.247127511518604380, -0.247175960358094720, -0.247224408579645170, -0.247272856183134580, -0.247321303168442310, -0.247369749535446330, +-0.247418195284025980, -0.247466640414060140, -0.247515084925428120, -0.247563528818007970, -0.247611972091679010, -0.247660414746320110, -0.247708856781810590, -0.247757298198028520, +-0.247805738994853200, -0.247854179172163510, -0.247902618729838820, -0.247951057667757160, -0.247999495985797850, -0.248047933683840230, -0.248096370761762360, -0.248144807219443540, +-0.248193243056762710, -0.248241678273599190, -0.248290112869831050, -0.248338546845337650, -0.248386980199997860, -0.248435412933691060, -0.248483845046295310, -0.248532276537689920, +-0.248580707407753840, -0.248629137656366430, -0.248677567283405760, -0.248725996288751170, -0.248774424672281590, -0.248822852433876360, -0.248871279573413570, -0.248919706090772600, +-0.248968131985832340, -0.249016557258472190, -0.249064981908570240, -0.249113405936005810, -0.249161829340658310, -0.249210252122405800, -0.249258674281127630, -0.249307095816702820, +-0.249355516729010680, -0.249403937017929320, -0.249452356683338120, -0.249500775725116030, -0.249549194143142420, -0.249597611937295400, -0.249646029107454370, -0.249694445653498240, +-0.249742861575306450, -0.249791276872757070, -0.249839691545729490, -0.249888105594102680, -0.249936519017756040, -0.249984931816567670, -0.250033343990416990, -0.250081755539183330, +-0.250130166462744890, -0.250178576760981040, -0.250226986433770730, -0.250275395480993370, -0.250323803902527120, -0.250372211698251360, -0.250420618868045060, -0.250469025411787620, +-0.250517431329357220, -0.250565836620633250, -0.250614241285494640, -0.250662645323820930, -0.250711048735490110, -0.250759451520381700, -0.250807853678374660, -0.250856255209348400, +-0.250904656113181080, -0.250953056389752130, -0.251001456038940970, -0.251049855060625720, -0.251098253454685840, -0.251146651221000330, -0.251195048359448670, -0.251243444869908910, +-0.251291840752260520, -0.251340236006382560, -0.251388630632154440, -0.251437024629454280, -0.251485417998161600, -0.251533810738155340, -0.251582202849314980, -0.251630594331518740, +-0.251678985184645930, -0.251727375408575700, -0.251775765003187490, -0.251824153968359440, -0.251872542303970940, -0.251920930009901120, -0.251969317086029430, -0.252017703532234020, +-0.252066089348394310, -0.252114474534389790, -0.252162859090098720, -0.252211243015400430, -0.252259626310174120, -0.252308008974299110, -0.252356391007653670, -0.252404772410117220, +-0.252453153181568910, -0.252501533321888070, -0.252549912830953020, -0.252598291708643170, -0.252646669954837590, -0.252695047569415740, -0.252743424552255900, -0.252791800903237440, +-0.252840176622239510, -0.252888551709141540, -0.252936926163821800, -0.252985299986159710, -0.253033673176034810, -0.253082045733325320, -0.253130417657910720, -0.253178788949670050, +-0.253227159608482850, -0.253275529634227280, -0.253323899026782930, -0.253372267786028840, -0.253420635911844490, -0.253469003404108110, -0.253517370262699220, -0.253565736487496920, +-0.253614102078380750, -0.253662467035228820, -0.253710831357920770, -0.253759195046335650, -0.253807558100352940, -0.253855920519850900, -0.253904282304709070, -0.253952643454806950, +-0.254001003970022840, -0.254049363850236190, -0.254097723095326130, -0.254146081705172170, -0.254194439679652610, -0.254242797018646940, -0.254291153722034310, -0.254339509789694160, +-0.254387865221504860, -0.254436220017345840, -0.254484574177096360, -0.254532927700635790, -0.254581280587842520, -0.254629632838596020, -0.254677984452775450, -0.254726335430260350, +-0.254774685770928990, -0.254823035474660900, -0.254871384541335620, -0.254919732970831480, -0.254968080763028020, -0.255016427917804380, -0.255064774435040050, -0.255113120314613360, +-0.255161465556403900, -0.255209810160290760, -0.255258154126153550, -0.255306497453870460, -0.255354840143321220, -0.255403182194384790, -0.255451523606940900, -0.255499864380867750, +-0.255548204516044930, -0.255596544012351600, -0.255644882869667300, -0.255693221087870400, -0.255741558666840450, -0.255789895606456650, -0.255838231906598490, -0.255886567567144290, +-0.255934902587973740, -0.255983236968966300, -0.256031570710000380, -0.256079903810955520, -0.256128236271710890, -0.256176568092146120, -0.256224899272139480, -0.256273229811570640, +-0.256321559710318670, -0.256369888968263240, -0.256418217585282720, -0.256466545561256590, -0.256514872896064120, -0.256563199589584840, -0.256611525641697200, -0.256659851052280730, +-0.256708175821214630, -0.256756499948378510, -0.256804823433650740, -0.256853146276910860, -0.256901468478038570, -0.256949790036912210, -0.256998110953411350, -0.257046431227415220, +-0.257094750858803400, -0.257143069847454330, -0.257191388193247550, -0.257239705896062320, -0.257288022955778240, -0.257336339372273680, -0.257384655145428300, -0.257432970275121240, +-0.257481284761232170, -0.257529598603639500, -0.257577911802222840, -0.257626224356861390, -0.257674536267434750, -0.257722847533821410, -0.257771158155900960, -0.257819468133553000, +-0.257867777466655960, -0.257916086155089490, -0.257964394198732740, -0.258012701597465480, -0.258061008351166080, -0.258109314459714080, -0.258157619922988860, -0.258205924740869950, +-0.258254228913235850, -0.258302532439966200, -0.258350835320940160, -0.258399137556037490, -0.258447439145136570, -0.258495740088116990, -0.258544040384858120, -0.258592340035239570, +-0.258640639039139700, -0.258688937396438280, -0.258737235107014460, -0.258785532170748010, -0.258833828587517360, -0.258882124357202040, -0.258930419479681870, -0.258978713954835240, +-0.259027007782541840, -0.259075300962680890, -0.259123593495132140, -0.259171885379773980, -0.259220176616486110, -0.259268467205147730, -0.259316757145638680, -0.259365046437837310, +-0.259413335081623290, -0.259461623076875980, -0.259509910423474990, -0.259558197121298790, -0.259606483170227160, -0.259654768570139250, -0.259703053320914920, -0.259751337422432450, +-0.259799620874571700, -0.259847903677212280, -0.259896185830232720, -0.259944467333512670, -0.259992748186931470, -0.260041028390368800, -0.260089307943703110, -0.260137586846814210, +-0.260185865099581300, -0.260234142701884160, -0.260282419653601270, -0.260330695954612280, -0.260378971604796560, -0.260427246604033880, -0.260475520952202610, -0.260523794649182570, +-0.260572067694853030, -0.260620340089093790, -0.260668611831783190, -0.260716882922801150, -0.260765153362027270, -0.260813423149340080, -0.260861692284619360, -0.260909960767744360, +-0.260958228598594970, -0.261006495777049490, -0.261054762302987850, -0.261103028176289220, -0.261151293396833520, -0.261199557964499120, -0.261247821879165840, -0.261296085140713010, +-0.261344347749020380, -0.261392609703966490, -0.261440871005431060, -0.261489131653293410, -0.261537391647433390, -0.261585650987729460, -0.261633909674061420, -0.261682167706309030, +-0.261730425084350790, -0.261778681808066460, -0.261826937877335460, -0.261875193292037510, -0.261923448052051140, -0.261971702157256180, -0.262019955607532000, -0.262068208402758300, +-0.262116460542813680, -0.262164712027577910, -0.262212962856930350, -0.262261213030750780, -0.262309462548917790, -0.262357711411311150, -0.262405959617810210, -0.262454207168294820, +-0.262502454062643440, -0.262550700300735960, -0.262598945882451750, -0.262647190807670570, -0.262695435076271020, -0.262743678688132860, -0.262791921643135920, -0.262840163941158720, +-0.262888405582081150, -0.262936646565782580, -0.262984886892142780, -0.263033126561040390, -0.263081365572355120, -0.263129603925966520, -0.263177841621754280, -0.263226078659597020, +-0.263274315039374540, -0.263322550760966280, -0.263370785824252110, -0.263419020229110510, -0.263467253975421370, -0.263515487063064100, -0.263563719491918540, -0.263611951261863210, +-0.263660182372778050, -0.263708412824542830, -0.263756642617036190, -0.263804871750137950, -0.263853100223727490, -0.263901328037684730, -0.263949555191888230, -0.263997781686217790, +-0.264046007520552960, -0.264094232694773500, -0.264142457208758060, -0.264190681062386470, -0.264238904255538140, -0.264287126788093020, -0.264335348659929640, -0.264383569870927870, +-0.264431790420967210, -0.264480010309927520, -0.264528229537687340, -0.264576448104126560, -0.264624666009125150, -0.264672883252561610, -0.264721099834315850, -0.264769315754267380, +-0.264817531012295990, -0.264865745608280410, -0.264913959542100400, -0.264962172813635540, -0.265010385422765670, -0.265058597369369430, -0.265106808653326640, -0.265155019274516850, +-0.265203229232819970, -0.265251438528114560, -0.265299647160280590, -0.265347855129197450, -0.265396062434745120, -0.265444269076802240, -0.265492475055248640, -0.265540680369963870, +-0.265588885020827840, -0.265637089007719150, -0.265685292330517740, -0.265733494989103540, -0.265781696983355130, -0.265829898313152510, -0.265878098978375170, -0.265926298978902960, +-0.265974498314614620, -0.266022696985390050, -0.266070894991108700, -0.266119092331650540, -0.266167289006894240, -0.266215485016719710, -0.266263680361006450, -0.266311875039634440, +-0.266360069052482270, -0.266408262399430000, -0.266456455080357040, -0.266504647095143320, -0.266552838443667620, -0.266601029125809800, -0.266649219141449840, -0.266697408490466410, +-0.266745597172739430, -0.266793785188148500, -0.266841972536573550, -0.266890159217893160, -0.266938345231987450, -0.266986530578735840, -0.267034715258018310, -0.267082899269713630, +-0.267131082613701660, -0.267179265289861970, -0.267227447298074570, -0.267275628638218130, -0.267323809310172580, -0.267371989313817560, -0.267420168649032950, -0.267468347315697520, +-0.267516525313691190, -0.267564702642894000, -0.267612879303184610, -0.267661055294443060, -0.267709230616548830, -0.267757405269381970, -0.267805579252821170, -0.267853752566746370, +-0.267901925211037280, -0.267950097185573720, -0.267998268490234560, -0.268046439124899670, -0.268094609089448710, -0.268142778383761660, -0.268190947007717230, -0.268239114961195460, +-0.268287282244075890, -0.268335448856238500, -0.268383614797562060, -0.268431780067926620, -0.268479944667212140, -0.268528108595297410, -0.268576271852062400, -0.268624434437386650, +-0.268672596351150320, -0.268720757593232000, -0.268768918163511840, -0.268817078061869390, -0.268865237288184620, -0.268913395842336370, -0.268961553724204610, -0.269009710933668990, +-0.269057867470609500, -0.269106023334904910, -0.269154178526435250, -0.269202333045080180, -0.269250486890719680, -0.269298640063232560, -0.269346792562498830, -0.269394944388398060, +-0.269443095540810420, -0.269491246019614610, -0.269539395824690660, -0.269587544955918690, -0.269635693413177390, -0.269683841196346860, -0.269731988305306760, -0.269780134739937120, +-0.269828280500116650, -0.269876425585725550, -0.269924569996643330, -0.269972713732750170, -0.270020856793924740, -0.270068999180047230, -0.270117140890997140, -0.270165281926654680, +-0.270213422286898600, -0.270261561971608940, -0.270309700980665370, -0.270357839313948020, -0.270405976971335620, -0.270454113952708240, -0.270502250257946050, -0.270550385886927760, +-0.270598520839533560, -0.270646655115643010, -0.270694788715136300, -0.270742921637892150, -0.270791053883790710, -0.270839185452711630, -0.270887316344535000, -0.270935446559139700, +-0.270983576096405720, -0.271031704956212870, -0.271079833138441140, -0.271127960642969400, -0.271176087469677750, -0.271224213618445900, -0.271272339089153940, -0.271320463881680740, +-0.271368587995906350, -0.271416711431710920, -0.271464834188973270, -0.271512956267573550, -0.271561077667391400, -0.271609198388307050, -0.271657318430199250, -0.271705437792948150, +-0.271753556476433400, -0.271801674480535270, -0.271849791805132470, -0.271897908450105250, -0.271946024415333220, -0.271994139700696580, -0.272042254306074090, -0.272090368231346020, +-0.272138481476392080, -0.272186594041092300, -0.272234705925325620, -0.272282817128972180, -0.272330927651911690, -0.272379037494024310, -0.272427146655188910, -0.272475255135285640, +-0.272523362934194660, -0.272571470051794830, -0.272619576487966360, -0.272667682242588970, -0.272715787315542750, -0.272763891706706620, -0.272811995415960800, -0.272860098443184980, +-0.272908200788259340, -0.272956302451062780, -0.273004403431475470, -0.273052503729377120, -0.273100603344647970, -0.273148702277166870, -0.273196800526814050, -0.273244898093469190, +-0.273292994977012480, -0.273341091177322910, -0.273389186694280580, -0.273437281527765750, -0.273485375677657240, -0.273533469143835360, -0.273581561926179770, -0.273629654024570680, +-0.273677745438887070, -0.273725836169009030, -0.273773926214816440, -0.273822015576189460, -0.273870104253007010, -0.273918192245149350, -0.273966279552496140, -0.274014366174927690, +-0.274062452112322890, -0.274110537364561980, -0.274158621931524680, -0.274206705813091310, -0.274254789009140690, -0.274302871519553130, -0.274350953344208840, -0.274399034482986690, +-0.274447114935766960, -0.274495194702429500, -0.274543273782854420, -0.274591352176920770, -0.274639429884508680, -0.274687506905498090, -0.274735583239769100, -0.274783658887200740, +-0.274831733847673290, -0.274879808121066440, -0.274927881707260510, -0.274975954606134440, -0.275024026817568550, -0.275072098341442530, -0.275120169177636710, -0.275168239326030020, +-0.275216308786502720, -0.275264377558935120, -0.275312445643206120, -0.275360513039196010, -0.275408579746784620, -0.275456645765852210, -0.275504711096277780, -0.275552775737941570, +-0.275600839690723350, -0.275648902954503560, -0.275696965529161010, -0.275745027414576070, -0.275793088610628570, -0.275841149117198760, -0.275889208934165690, -0.275937268061409560, +-0.275985326498810250, -0.276033384246248070, -0.276081441303602020, -0.276129497670752340, -0.276177553347578930, -0.276225608333962040, -0.276273662629780700, -0.276321716234915250, +-0.276369769149245880, -0.276417821372651700, -0.276465872905012950, -0.276513923746209530, -0.276561973896121750, -0.276610023354628590, -0.276658072121610370, -0.276706120196946960, +-0.276754167580518680, -0.276802214272204530, -0.276850260271884860, -0.276898305579439560, -0.276946350194748890, -0.276994394117691940, -0.277042437348149040, -0.277090479886000000, +-0.277138521731125190, -0.277186562883403650, -0.277234603342715710, -0.277282643108941680, -0.277330682181960660, -0.277378720561652860, -0.277426758247898310, -0.277474795240577280, +-0.277522831539568860, -0.277570867144753320, -0.277618902056010640, -0.277666936273221090, -0.277714969796263810, -0.277763002625019070, -0.277811034759366860, -0.277859066199187490, +-0.277907096944360050, -0.277955126994764820, -0.278003156350281780, -0.278051185010791290, -0.278099212976172410, -0.278147240246305490, -0.278195266821070930, -0.278243292700347700, +-0.278291317884016290, -0.278339342371956620, -0.278387366164048970, -0.278435389260172470, -0.278483411660207510, -0.278531433364034020, -0.278579454371532420, -0.278627474682581700, +-0.278675494297062290, -0.278723513214854170, -0.278771531435837720, -0.278819548959891970, -0.278867565786897360, -0.278915581916733820, -0.278963597349281780, -0.279011612084420320, +-0.279059626122029840, -0.279107639461990240, -0.279155652104182030, -0.279203664048484230, -0.279251675294777290, -0.279299685842941570, -0.279347695692856220, -0.279395704844401630, +-0.279443713297457760, -0.279491721051905060, -0.279539728107622620, -0.279587734464490810, -0.279635740122389730, -0.279683745081199700, -0.279731749340799920, -0.279779752901070710, +-0.279827755761892170, -0.279875757923144620, -0.279923759384707260, -0.279971760146460520, -0.280019760208284400, -0.280067759570059250, -0.280115758231664290, -0.280163756192979950, +-0.280211753453886660, -0.280259750014263510, -0.280307745873991040, -0.280355741032949190, -0.280403735491018380, -0.280451729248077870, -0.280499722304007990, -0.280547714658688830, +-0.280595706312000760, -0.280643697263823040, -0.280691687514036060, -0.280739677062519900, -0.280787665909154940, -0.280835654053820380, -0.280883641496396660, -0.280931628236763880, +-0.280979614274802450, -0.281027599610391590, -0.281075584243411670, -0.281123568173743290, -0.281171551401265480, -0.281219533925858860, -0.281267515747403330, -0.281315496865779500, +-0.281363477280866470, -0.281411456992544770, -0.281459436000694450, -0.281507414305195940, -0.281555391905928430, -0.281603368802772480, -0.281651344995608120, -0.281699320484315780, +-0.281747295268774730, -0.281795269348865450, -0.281843242724468030, -0.281891215395462860, -0.281939187361729290, -0.281987158623147720, -0.282035129179598660, -0.282083099030961400, +-0.282131068177116360, -0.282179036617943630, -0.282227004353323820, -0.282274971383136010, -0.282322937707260750, -0.282370903325578180, -0.282418868237968750, -0.282466832444311760, +-0.282514795944487700, -0.282562758738376610, -0.282610720825859030, -0.282658682206814280, -0.282706642881122790, -0.282754602848664720, -0.282802562109320530, -0.282850520662969510, +-0.282898478509492230, -0.282946435648768760, -0.282994392080679560, -0.283042347805104010, -0.283090302821922550, -0.283138257131015810, -0.283186210732262970, -0.283234163625544600, +-0.283282115810740810, -0.283330067287732190, -0.283378018056397950, -0.283425968116618690, -0.283473917468274490, -0.283521866111245970, -0.283569814045412320, -0.283617761270654080, +-0.283665707786851520, -0.283713653593885060, -0.283761598691634090, -0.283809543079979080, -0.283857486758800240, -0.283905429727978110, -0.283953371987391960, -0.284001313536922370, +-0.284049254376449960, -0.284097194505853970, -0.284145133925015000, -0.284193072633813220, -0.284241010632129140, -0.284288947919842110, -0.284336884496832750, -0.284384820362981130, +-0.284432755518167930, -0.284480689962272380, -0.284528623695175120, -0.284576556716756300, -0.284624489026896520, -0.284672420625475100, -0.284720351512372570, -0.284768281687469200, +-0.284816211150645590, -0.284864139901781000, -0.284912067940756020, -0.284959995267451360, -0.285007921881746230, -0.285055847783521330, -0.285103772972656820, -0.285151697449033290, +-0.285199621212530060, -0.285247544263027790, -0.285295466600406720, -0.285343388224547360, -0.285391309135329060, -0.285439229332632550, -0.285487148816337970, -0.285535067586325910, +-0.285582985642475750, -0.285630902984668140, -0.285678819612783300, -0.285726735526701800, -0.285774650726303090, -0.285822565211467710, -0.285870478982075900, -0.285918392038008340, +-0.285966304379144390, -0.286014216005364640, -0.286062126916549810, -0.286110037112579210, -0.286157946593333550, -0.286205855358693030, -0.286253763408538250, -0.286301670742748650, +-0.286349577361204920, -0.286397483263787170, -0.286445388450376200, -0.286493292920851290, -0.286541196675093200, -0.286589099712982080, -0.286637002034398620, -0.286684903639222280, +-0.286732804527333630, -0.286780704698613000, -0.286828604152941040, -0.286876502890197120, -0.286924400910261950, -0.286972298213016230, -0.287020194798339350, -0.287068090666111940, +-0.287115985816214280, -0.287163880248527130, -0.287211773962929850, -0.287259666959303110, -0.287307559237527210, -0.287355450797482870, -0.287403341639049460, -0.287451231762107680, +-0.287499121166537810, -0.287547009852220590, -0.287594897819035410, -0.287642785066862970, -0.287690671595583590, -0.287738557405077980, -0.287786442495225500, -0.287834326865906930, +-0.287882210517002970, -0.287930093448393100, -0.287977975659957920, -0.288025857151577860, -0.288073737923133570, -0.288121617974504530, -0.288169497305571400, -0.288217375916214550, +-0.288265253806314680, -0.288313130975751230, -0.288361007424404960, -0.288408883152156240, -0.288456758158885660, -0.288504632444472770, -0.288552506008798340, -0.288600378851742610, +-0.288648250973186360, -0.288696122373009070, -0.288743993051091440, -0.288791863007314300, -0.288839732241557070, -0.288887600753700460, -0.288935468543624900, -0.288983335611211090, +-0.289031201956338520, -0.289079067578887900, -0.289126932478739660, -0.289174796655774500, -0.289222660109871910, -0.289270522840912700, -0.289318384848777140, -0.289366246133346050, +-0.289414106694498960, -0.289461966532116590, -0.289509825646079240, -0.289557684036267860, -0.289605541702561750, -0.289653398644841850, -0.289701254862988420, -0.289749110356882280, +-0.289796965126402960, -0.289844819171431180, -0.289892672491847800, -0.289940525087532370, -0.289988376958365550, -0.290036228104227860, -0.290084078524999960, -0.290131928220561440, +-0.290179777190793130, -0.290227625435575400, -0.290275472954789000, -0.290323319748313490, -0.290371165816029670, -0.290419011157817930, -0.290466855773559130, -0.290514699663132760, +-0.290562542826419580, -0.290610385263300130, -0.290658226973655060, -0.290706067957364030, -0.290753908214307850, -0.290801747744367340, -0.290849586547421990, -0.290897424623352660, +-0.290945261972039850, -0.290993098593364250, -0.291040934487205470, -0.291088769653444380, -0.291136604091961350, -0.291184437802637250, -0.291232270785351630, -0.291280103039985310, +-0.291327934566418760, -0.291375765364532800, -0.291423595434206980, -0.291471424775322170, -0.291519253387758800, -0.291567081271397740, -0.291614908426118590, -0.291662734851802110, +-0.291710560548329220, -0.291758385515579530, -0.291806209753433850, -0.291854033261772670, -0.291901856040476800, -0.291949678089425900, -0.291997499408500780, -0.292045319997581930, +-0.292093139856550170, -0.292140958985285190, -0.292188777383667770, -0.292236595051578400, -0.292284411988897990, -0.292332228195506140, -0.292380043671283670, -0.292427858416111130, +-0.292475672429869380, -0.292523485712438020, -0.292571298263697930, -0.292619110083529590, -0.292666921171813920, -0.292714731528430470, -0.292762541153260280, -0.292810350046184110, +-0.292858158207081610, -0.292905965635833760, -0.292953772332321010, -0.293001578296424200, -0.293049383528023070, -0.293097188026998470, -0.293144991793230840, -0.293192794826601210, +-0.293240597126989190, -0.293288398694275640, -0.293336199528341110, -0.293383999629066470, -0.293431798996331480, -0.293479597630016910, -0.293527395530003400, -0.293575192696171830, +-0.293622989128401790, -0.293670784826574330, -0.293718579790570370, -0.293766374020269450, -0.293814167515552670, -0.293861960276300400, -0.293909752302393690, -0.293957543593712180, +-0.294005334150136800, -0.294053123971548090, -0.294100913057827040, -0.294148701408853240, -0.294196489024507680, -0.294244275904670890, -0.294292062049223870, -0.294339847458046260, +-0.294387632131018980, -0.294435416068022650, -0.294483199268938230, -0.294530981733645390, -0.294578763462025050, -0.294626544453958250, -0.294674324709324700, -0.294722104228005320, +-0.294769883009880660, -0.294817661054831700, -0.294865438362738210, -0.294913214933481100, -0.294960990766940930, -0.295008765862998730, -0.295056540221534210, -0.295104313842428300, +-0.295152086725561650, -0.295199858870815180, -0.295247630278068660, -0.295295400947203020, -0.295343170878098920, -0.295390940070637320, -0.295438708524697890, -0.295486476240161780, +-0.295534243216909850, -0.295582009454821880, -0.295629774953778900, -0.295677539713661450, -0.295725303734350630, -0.295773067015726090, -0.295820829557668920, -0.295868591360059610, +-0.295916352422779310, -0.295964112745707660, -0.296011872328725780, -0.296059631171714190, -0.296107389274553930, -0.296155146637124780, -0.296202903259307760, -0.296250659140983530, +-0.296298414282033020, -0.296346168682336040, -0.296393922341773700, -0.296441675260226520, -0.296489427437575560, -0.296537178873700620, -0.296584929568482760, -0.296632679521803000, +-0.296680428733541060, -0.296728177203578080, -0.296775924931794670, -0.296823671918071850, -0.296871418162289460, -0.296919163664328520, -0.296966908424069640, -0.297014652441393910, +-0.297062395716181150, -0.297110138248312390, -0.297157880037668300, -0.297205621084129960, -0.297253361387577080, -0.297301100947890810, -0.297348839764951800, -0.297396577838641150, +-0.297444315168838570, -0.297492051755425260, -0.297539787598282200, -0.297587522697289280, -0.297635257052327520, -0.297682990663277640, -0.297730723530020670, -0.297778455652436550, +-0.297826187030406200, -0.297873917663810440, -0.297921647552530310, -0.297969376696445580, -0.298017105095437440, -0.298064832749386550, -0.298112559658174010, -0.298160285821679640, +-0.298208011239784580, -0.298255735912369420, -0.298303459839315390, -0.298351183020502290, -0.298398905455811210, -0.298446627145123320, -0.298494348088318430, -0.298542068285277680, +-0.298589787735881740, -0.298637506440011750, -0.298685224397547580, -0.298732941608370330, -0.298780658072360760, -0.298828373789399910, -0.298876088759367780, -0.298923802982145380, +-0.298971516457613500, -0.299019229185653210, -0.299066941166144460, -0.299114652398968340, -0.299162362884005610, -0.299210072621137410, -0.299257781610243580, -0.299305489851205250, +-0.299353197343903250, -0.299400904088218680, -0.299448610084031450, -0.299496315331222620, -0.299544019829673490, -0.299591723579263890, -0.299639426579874910, -0.299687128831387430, +-0.299734830333682530, -0.299782531086640160, -0.299830231090141400, -0.299877930344067120, -0.299925628848298430, -0.299973326602715200, -0.300021023607198680, -0.300068719861629580, +-0.300116415365889180, -0.300164110119857220, -0.300211804123415080, -0.300259497376443360, -0.300307189878823320, -0.300354881630434940, -0.300402572631159330, -0.300450262880877670, +-0.300497952379469970, -0.300545641126817360, -0.300593329122800680, -0.300641016367301120, -0.300688702860198550, -0.300736388601374250, -0.300784073590708970, -0.300831757828083910, +-0.300879441313379010, -0.300927124046475590, -0.300974806027254290, -0.301022487255596440, -0.301070167731381900, -0.301117847454491990, -0.301165526424807430, -0.301213204642209520, +-0.301260882106578140, -0.301308558817794560, -0.301356234775740030, -0.301403909980294430, -0.301451584431339130, -0.301499258128754830, -0.301546931072422810, -0.301594603262223040, +-0.301642274698036730, -0.301689945379744750, -0.301737615307228370, -0.301785284480367510, -0.301832952899043440, -0.301880620563136970, -0.301928287472529370, -0.301975953627100670, +-0.302023619026732030, -0.302071283671304370, -0.302118947560698900, -0.302166610694795670, -0.302214273073475930, -0.302261934696620880, -0.302309595564110630, -0.302357255675826330, +-0.302404915031648960, -0.302452573631459660, -0.302500231475138550, -0.302547888562566810, -0.302595544893625390, -0.302643200468195480, -0.302690855286157190, -0.302738509347391770, +-0.302786162651780040, -0.302833815199203380, -0.302881466989541710, -0.302929118022676410, -0.302976768298488300, -0.303024417816858680, -0.303072066577667610, -0.303119714580796340, +-0.303167361826125860, -0.303215008313537320, -0.303262654042910860, -0.303310299014127760, -0.303357943227069380, -0.303405586681615660, -0.303453229377648010, -0.303500871315047270, +-0.303548512493694740, -0.303596152913470580, -0.303643792574256000, -0.303691431475931920, -0.303739069618379710, -0.303786707001479420, -0.303834343625112360, -0.303881979489159400, +-0.303929614593501930, -0.303977248938020030, -0.304024882522594960, -0.304072515347107720, -0.304120147411439610, -0.304167778715470680, -0.304215409259082360, -0.304263039042155900, +-0.304310668064571410, -0.304358296326210250, -0.304405923826953360, -0.304453550566682110, -0.304501176545276530, -0.304548801762618000, -0.304596426218587510, -0.304644049913066370, +-0.304691672845934620, -0.304739295017073750, -0.304786916426364630, -0.304834537073688630, -0.304882156958925900, -0.304929776081957700, -0.304977394442665140, -0.305025012040929470, +-0.305072628876630890, -0.305120244949650680, -0.305167860259870300, -0.305215474807169870, -0.305263088591430750, -0.305310701612533930, -0.305358313870360720, -0.305405925364791330, +-0.305453536095707130, -0.305501146062989120, -0.305548755266518590, -0.305596363706175820, -0.305643971381842130, -0.305691578293398490, -0.305739184440726340, -0.305786789823705770, +-0.305834394442218270, -0.305881998296144760, -0.305929601385366680, -0.305977203709764220, -0.306024805269218710, -0.306072406063611190, -0.306120006092823080, -0.306167605356734480, +-0.306215203855226940, -0.306262801588181810, -0.306310398555479200, -0.306357994757000650, -0.306405590192627090, -0.306453184862239990, -0.306500778765719460, -0.306548371902947040, +-0.306595964273803650, -0.306643555878170770, -0.306691146715928620, -0.306738736786958570, -0.306786326091141700, -0.306833914628359410, -0.306881502398491930, -0.306929089401420720, +-0.306976675637026740, -0.307024261105191540, -0.307071845805795220, -0.307119429738719310, -0.307167012903845240, -0.307214595301053220, -0.307262176930224670, -0.307309757791240760, +-0.307357337883982780, -0.307404917208331130, -0.307452495764167110, -0.307500073551371880, -0.307547650569826910, -0.307595226819412370, -0.307642802300009790, -0.307690377011500150, +-0.307737950953765050, -0.307785524126684580, -0.307833096530140350, -0.307880668164013380, -0.307928239028185170, -0.307975809122535920, -0.308023378446947160, -0.308070947001300330, +-0.308118514785475750, -0.308166081799354900, -0.308213648042818810, -0.308261213515749030, -0.308308778218025830, -0.308356342149530670, -0.308403905310144610, -0.308451467699749240, +-0.308499029318224820, -0.308546590165452770, -0.308594150241314260, -0.308641709545690810, -0.308689268078462640, -0.308736825839511290, -0.308784382828717900, -0.308831939045964010, +-0.308879494491129780, -0.308927049164096860, -0.308974603064746280, -0.309022156192959640, -0.309069708548617210, -0.309117260131600460, -0.309164810941791050, -0.309212360979069120, +-0.309259910243316340, -0.309307458734413730, -0.309355006452242950, -0.309402553396684210, -0.309450099567619100, -0.309497644964928710, -0.309545189588494640, -0.309592733438197150, +-0.309640276513917900, -0.309687818815537920, -0.309735360342938800, -0.309782901096000870, -0.309830441074605670, -0.309877980278634390, -0.309925518707968580, -0.309973056362488510, +-0.310020593242075870, -0.310068129346612100, -0.310115664675977620, -0.310163199230053980, -0.310210733008722370, -0.310258266011864290, -0.310305798239360160, -0.310353329691091530, +-0.310400860366939590, -0.310448390266785890, -0.310495919390510800, -0.310543447737995910, -0.310590975309122440, -0.310638502103771920, -0.310686028121824720, -0.310733553363162440, +-0.310781077827666290, -0.310828601515217850, -0.310876124425697510, -0.310923646558986850, -0.310971167914967540, -0.311018688493519820, -0.311066208294525410, -0.311113727317865460, +-0.311161245563421670, -0.311208763031074250, -0.311256279720705020, -0.311303795632195010, -0.311351310765425990, -0.311398825120278280, -0.311446338696633460, -0.311493851494372810, +-0.311541363513377970, -0.311588874753529250, -0.311636385214708380, -0.311683894896796540, -0.311731403799675400, -0.311778911923225320, -0.311826419267327960, -0.311873925831864960, +-0.311921431616716760, -0.311968936621764950, -0.312016440846890840, -0.312063944291975980, -0.312111446956900910, -0.312158948841547160, -0.312206449945796050, -0.312253950269529290, +-0.312301449812627200, -0.312348948574971470, -0.312396446556443390, -0.312443943756924580, -0.312491440176295490, -0.312538935814437870, -0.312586430671232820, -0.312633924746562150, +-0.312681418040306300, -0.312728910552346860, -0.312776402282565150, -0.312823893230842810, -0.312871383397060390, -0.312918872781099480, -0.312966361382841780, -0.313013849202167790, +-0.313061336238959150, -0.313108822493097240, -0.313156307964463640, -0.313203792652938850, -0.313251276558404570, -0.313298759680742110, -0.313346242019833190, -0.313393723575558230, +-0.313441204347798930, -0.313488684336436670, -0.313536163541353050, -0.313583641962428660, -0.313631119599545150, -0.313678596452583890, -0.313726072521426480, -0.313773547805953510, +-0.313821022306046690, -0.313868496021587670, -0.313915968952457050, -0.313963441098536470, -0.314010912459707300, -0.314058383035851260, -0.314105852826848890, -0.314153321832581820, +-0.314200790052931500, -0.314248257487779630, -0.314295724137006630, -0.314343190000494380, -0.314390655078124140, -0.314438119369777670, -0.314485582875335510, -0.314533045594679370, +-0.314580507527690620, -0.314627968674251020, -0.314675429034241060, -0.314722888607542550, -0.314770347394037200, -0.314817805393605600, -0.314865262606129510, -0.314912719031490210, +-0.314960174669569600, -0.315007629520248080, -0.315055083583407500, -0.315102536858929190, -0.315149989346694970, -0.315197441046585370, -0.315244891958482150, -0.315292342082266750, +-0.315339791417820870, -0.315387239965025100, -0.315434687723761210, -0.315482134693910620, -0.315529580875355150, -0.315577026267975240, -0.315624470871652800, -0.315671914686269210, +-0.315719357711706230, -0.315766799947844400, -0.315814241394565600, -0.315861682051751640, -0.315909121919283000, -0.315956560997041610, -0.316003999284908800, -0.316051436782766370, +-0.316098873490494980, -0.316146309407976390, -0.316193744535092030, -0.316241178871723700, -0.316288612417752020, -0.316336045173058860, -0.316383477137525520, -0.316430908311033930, +-0.316478338693464640, -0.316525768284699530, -0.316573197084620010, -0.316620625093107900, -0.316668052310043750, -0.316715478735309530, -0.316762904368787010, -0.316810329210356840, +-0.316857753259900840, -0.316905176517300440, -0.316952598982437550, -0.317000020655192670, -0.317047441535447780, -0.317094861623084310, -0.317142280917984080, -0.317189699420027730, +-0.317237117129097130, -0.317284534045073780, -0.317331950167839490, -0.317379365497274860, -0.317426780033261860, -0.317474193775681920, -0.317521606724416870, -0.317569018879347410, +-0.317616430240355410, -0.317663840807322740, -0.317711250580130060, -0.317758659558659280, -0.317806067742791800, -0.317853475132409580, -0.317900881727393280, -0.317948287527624770, +-0.317995692532985540, -0.318043096743357460, -0.318090500158621280, -0.318137902778658780, -0.318185304603351590, -0.318232705632581550, -0.318280105866229290, -0.318327505304176750, +-0.318374903946305520, -0.318422301792497360, -0.318469698842633100, -0.318517095096594590, -0.318564490554263720, -0.318611885215521250, -0.318659279080249050, -0.318706672148328600, +-0.318754064419641940, -0.318801455894069720, -0.318848846571493820, -0.318896236451795820, -0.318943625534857610, -0.318991013820560000, -0.319038401308784800, -0.319085787999413560, +-0.319133173892328310, -0.319180558987409770, -0.319227943284539740, -0.319275326783599880, -0.319322709484472110, -0.319370091387037200, -0.319417472491177020, -0.319464852796773170, +-0.319512232303707620, -0.319559611011861030, -0.319606988921115440, -0.319654366031352780, -0.319701742342453800, -0.319749117854300490, -0.319796492566774340, -0.319843866479757380, +-0.319891239593130370, -0.319938611906775250, -0.319985983420573550, -0.320033354134407370, -0.320080724048157410, -0.320128093161705600, -0.320175461474933530, -0.320222828987723250, +-0.320270195699955460, -0.320317561611512200, -0.320364926722275070, -0.320412291032125980, -0.320459654540945770, -0.320507017248616470, -0.320554379155020000, -0.320601740260037130, +-0.320649100563549950, -0.320696460065440000, -0.320743818765589380, -0.320791176663878740, -0.320838533760190170, -0.320885890054405270, -0.320933245546406010, -0.320980600236073280, +-0.321027954123289050, -0.321075307207934920, -0.321122659489892940, -0.321170010969043910, -0.321217361645269820, -0.321264711518452320, -0.321312060588473500, -0.321359408855214080, +-0.321406756318556140, -0.321454102978381730, -0.321501448834571660, -0.321548793887007970, -0.321596138135572310, -0.321643481580146660, -0.321690824220611960, -0.321738166056850130, +-0.321785507088742930, -0.321832847316172340, -0.321880186739019300, -0.321927525357165730, -0.321974863170493340, -0.322022200178884220, -0.322069536382219190, -0.322116871780380290, +-0.322164206373249270, -0.322211540160708130, -0.322258873142637680, -0.322306205318920070, -0.322353536689436950, -0.322400867254070410, -0.322448197012701330, -0.322495525965211690, +-0.322542854111483700, -0.322590181451398120, -0.322637507984837090, -0.322684833711682330, -0.322732158631815870, -0.322779482745118580, -0.322826806051472630, -0.322874128550759590, +-0.322921450242861730, -0.322968771127659760, -0.323016091205035880, -0.323063410474871800, -0.323110728937049620, -0.323158046591450140, -0.323205363437955580, -0.323252679476447650, +-0.323299994706808370, -0.323347309128918740, -0.323394622742660790, -0.323441935547916730, -0.323489247544567430, -0.323536558732494980, -0.323583869111581160, -0.323631178681708040, +-0.323678487442756620, -0.323725795394608940, -0.323773102537146750, -0.323820408870252260, -0.323867714393806350, -0.323915019107691100, -0.323962323011788340, -0.324009626105980160, +-0.324056928390147550, -0.324104229864172530, -0.324151530527936990, -0.324198830381323080, -0.324246129424211600, -0.324293427656484830, -0.324340725078024920, -0.324388021688712780, +-0.324435317488430570, -0.324482612477060120, -0.324529906654483500, -0.324577200020581710, -0.324624492575236900, -0.324671784318330880, -0.324719075249745800, -0.324766365369362650, +-0.324813654677063520, -0.324860943172730340, -0.324908230856245150, -0.324955517727488990, -0.325002803786344050, -0.325050089032692110, -0.325097373466415320, -0.325144657087394710, +-0.325191939895512430, -0.325239221890650740, -0.325286503072690580, -0.325333783441514200, -0.325381062997003310, -0.325428341739040170, -0.325475619667505770, -0.325522896782282360, +-0.325570173083251650, -0.325617448570295950, -0.325664723243296260, -0.325711997102134660, -0.325759270146693150, -0.325806542376853860, -0.325853813792497780, -0.325901084393507180, +-0.325948354179763870, -0.325995623151150100, -0.326042891307546820, -0.326090158648836340, -0.326137425174900460, -0.326184690885621460, -0.326231955780880270, -0.326279219860559240, +-0.326326483124540550, -0.326373745572705210, -0.326421007204935550, -0.326468268021113340, -0.326515528021120880, -0.326562787204839220, -0.326610045572150560, -0.326657303122936780, +-0.326704559857080190, -0.326751815774461770, -0.326799070874963790, -0.326846325158468120, -0.326893578624857130, -0.326940831274011690, -0.326988083105814230, -0.327035334120146510, +-0.327082584316890910, -0.327129833695928460, -0.327177082257141370, -0.327224330000412010, -0.327271576925621420, -0.327318823032651920, -0.327366068321385320, -0.327413312791703940, +-0.327460556443488930, -0.327507799276622490, -0.327555041290986500, -0.327602282486463390, -0.327649522862934140, -0.327696762420281120, -0.327744001158386140, -0.327791239077131590, +-0.327838476176398550, -0.327885712456069290, -0.327932947916025730, -0.327980182556150250, -0.328027416376323930, -0.328074649376429000, -0.328121881556347920, -0.328169112915961680, +-0.328216343455152660, -0.328263573173802840, -0.328310802071794420, -0.328358030149008610, -0.328405257405327780, -0.328452483840633750, -0.328499709454808940, -0.328546934247734400, +-0.328594158219292550, -0.328641381369365330, -0.328688603697835090, -0.328735825204582890, -0.328783045889491090, -0.328830265752441730, -0.328877484793317130, -0.328924703011998330, +-0.328971920408367870, -0.329019136982307560, -0.329066352733699830, -0.329113567662425780, -0.329160781768367830, -0.329207995051408350, -0.329255207511428450, -0.329302419148310540, +-0.329349629961936560, -0.329396839952188940, -0.329444049118948810, -0.329491257462098560, -0.329538464981520170, -0.329585671677096010, -0.329632877548707240, -0.329680082596236320, +-0.329727286819565200, -0.329774490218576240, -0.329821692793150660, -0.329868894543170870, -0.329916095468518800, -0.329963295569076940, -0.330010494844726390, -0.330057693295349620, +-0.330104890920829060, -0.330152087721045820, -0.330199283695882360, -0.330246478845220740, -0.330293673168943260, -0.330340866666931240, -0.330388059339067060, -0.330435251185232700, +-0.330482442205310640, -0.330529632399182040, -0.330576821766729370, -0.330624010307834670, -0.330671198022380320, -0.330718384910247630, -0.330765570971318920, -0.330812756205476290, +-0.330859940612602150, -0.330907124192577780, -0.330954306945285600, -0.331001488870608100, -0.331048669968426410, -0.331095850238623090, -0.331143029681080110, -0.331190208295679970, +-0.331237386082303910, -0.331284563040834420, -0.331331739171153440, -0.331378914473143600, -0.331426088946686010, -0.331473262591663210, -0.331520435407957280, -0.331567607395450660, +-0.331614778554024600, -0.331661948883561600, -0.331709118383943740, -0.331756287055053500, -0.331803454896772100, -0.331850621908982070, -0.331897788091565890, -0.331944953444404890, +-0.331992117967381430, -0.332039281660377720, -0.332086444523276180, -0.332133606555958140, -0.332180767758306070, -0.332227928130202130, -0.332275087671528750, -0.332322246382167230, +-0.332369404262000070, -0.332416561310909460, -0.332463717528777850, -0.332510872915486480, -0.332558027470917950, -0.332605181194954360, -0.332652334087478240, -0.332699486148370860, +-0.332746637377514750, -0.332793787774792070, -0.332840937340085350, -0.332888086073275860, -0.332935233974246130, -0.332982381042878750, -0.333029527279054990, -0.333076672682657450, +-0.333123817253568210, -0.333170960991669820, -0.333218103896843640, -0.333265245968972170, -0.333312387207937600, -0.333359527613622470, -0.333406667185908110, -0.333453805924677100, +-0.333500943829811550, -0.333548080901194090, -0.333595217138705990, -0.333642352542229850, -0.333689487111647810, -0.333736620846842470, -0.333783753747695200, -0.333830885814088480, +-0.333878017045905030, -0.333925147443026090, -0.333972277005334270, -0.334019405732711830, -0.334066533625041180, -0.334113660682203880, -0.334160786904082350, -0.334207912290558910, +-0.334255036841516080, -0.334302160556835260, -0.334349283436399030, -0.334396405480089590, -0.334443526687789540, -0.334490647059380250, -0.334537766594744380, -0.334584885293764070, +-0.334632003156321970, -0.334679120182299390, -0.334726236371579110, -0.334773351724043600, -0.334820466239574290, -0.334867579918053830, -0.334914692759364420, -0.334961804763388660, +-0.335008915930008030, -0.335056026259105080, -0.335103135750562050, -0.335150244404261610, -0.335197352220085180, -0.335244459197915350, -0.335291565337634320, -0.335338670639124870, +-0.335385775102268250, -0.335432878726947270, -0.335479981513044030, -0.335527083460441300, -0.335574184569020380, -0.335621284838664050, -0.335668384269254490, -0.335715482860674430, +-0.335762580612805230, -0.335809677525529540, -0.335856773598730120, -0.335903868832288290, -0.335950963226086810, -0.335998056780007940, -0.336045149493934380, -0.336092241367747460, +-0.336139332401329980, -0.336186422594564160, -0.336233511947332700, -0.336280600459517020, -0.336327688130999840, -0.336374774961663460, -0.336421860951390590, -0.336468946100062620, +-0.336516030407562280, -0.336563113873771860, -0.336610196498574040, -0.336657278281850380, -0.336704359223483520, -0.336751439323356110, -0.336798518581349740, -0.336845596997347060, +-0.336892674571230400, -0.336939751302882450, -0.336986827192184760, -0.337033902239019910, -0.337080976443270400, -0.337128049804818810, -0.337175122323546680, -0.337222193999336730, +-0.337269264832071310, -0.337316334821633200, -0.337363403967903760, -0.337410472270765820, -0.337457539730101730, -0.337504606345794210, -0.337551672117724740, -0.337598737045776090, +-0.337645801129831000, -0.337692864369771030, -0.337739926765478870, -0.337786988316836900, -0.337834049023727880, -0.337881108886033340, -0.337928167903636000, -0.337975226076418220, +-0.338022283404262820, -0.338069339887051350, -0.338116395524666440, -0.338163450316990580, -0.338210504263906530, -0.338257557365295780, -0.338304609621041090, -0.338351661031024930, +-0.338398711595130020, -0.338445761313237950, -0.338492810185231420, -0.338539858210993310, -0.338586905390405150, -0.338633951723349700, -0.338680997209709400, -0.338728041849367000, +-0.338775085642204100, -0.338822128588103460, -0.338869170686947550, -0.338916211938619090, -0.338963252342999680, -0.339010291899972120, -0.339057330609418840, -0.339104368471222720, +-0.339151405485265180, -0.339198441651429150, -0.339245476969597000, -0.339292511439651610, -0.339339545061474510, -0.339386577834948580, -0.339433609759956180, -0.339480640836380130, +-0.339527671064102090, -0.339574700443004920, -0.339621728972971330, -0.339668756653883070, -0.339715783485622870, -0.339762809468073250, -0.339809834601117020, -0.339856858884635790, +-0.339903882318512370, -0.339950904902629300, -0.339997926636869340, -0.340044947521114190, -0.340091967555246620, -0.340138986739149160, -0.340186005072704630, -0.340233022555794740, +-0.340280039188302240, -0.340327054970109620, -0.340374069901099810, -0.340421083981154390, -0.340468097210156310, -0.340515109587988360, -0.340562121114532210, -0.340609131789670780, +-0.340656141613286500, -0.340703150585262290, -0.340750158705479810, -0.340797165973821930, -0.340844172390171120, -0.340891177954410320, -0.340938182666421120, -0.340985186526086450, +-0.341032189533288840, -0.341079191687911230, -0.341126192989835150, -0.341173193438943590, -0.341220193035119080, -0.341267191778244490, -0.341314189668201540, -0.341361186704873030, +-0.341408182888142060, -0.341455178217890180, -0.341502172694000350, -0.341549166316355070, -0.341596159084837310, -0.341643150999328740, -0.341690142059712320, -0.341737132265870490, +-0.341784121617686290, -0.341831110115041360, -0.341878097757818630, -0.341925084545900650, -0.341972070479170390, -0.342019055557509550, -0.342066039780801080, -0.342113023148927500, +-0.342160005661771790, -0.342206987319215620, -0.342253968121142000, -0.342300948067433440, -0.342347927157972960, -0.342394905392642220, -0.342441882771324200, -0.342488859293901940, +-0.342535834960257080, -0.342582809770272670, -0.342629783723831180, -0.342676756820815720, -0.342723729061107870, -0.342770700444590740, -0.342817670971146850, -0.342864640640659190, +-0.342911609453009580, -0.342958577408080890, -0.343005544505755710, -0.343052510745917140, -0.343099476128446880, -0.343146440653227910, -0.343193404320142890, -0.343240367129074740, +-0.343287329079905220, -0.343334290172517430, -0.343381250406794290, -0.343428209782617620, -0.343475168299870460, -0.343522125958435340, -0.343569082758195370, -0.343616038699032230, +-0.343662993780828980, -0.343709948003468270, -0.343756901366833120, -0.343803853870805310, -0.343850805515267810, -0.343897756300103330, -0.343944706225194910, -0.343991655290424250, +-0.344038603495674500, -0.344085550840828200, -0.344132497325768450, -0.344179442950377060, -0.344226387714537060, -0.344273331618131450, -0.344320274661042150, -0.344367216843152190, +-0.344414158164344120, -0.344461098624501140, -0.344508038223504950, -0.344554976961238660, -0.344601914837584960, -0.344648851852426890, -0.344695788005646210, -0.344742723297126130, +-0.344789657726749240, -0.344836591294398590, -0.344883523999956030, -0.344930455843304730, -0.344977386824327210, -0.345024316942906690, -0.345071246198924930, -0.345118174592265130, +-0.345165102122810210, -0.345212028790442160, -0.345258954595044080, -0.345305879536498550, -0.345352803614688790, -0.345399726829496550, -0.345446649180805030, -0.345493570668496900, +-0.345540491292455230, -0.345587411052561910, -0.345634329948700080, -0.345681247980752390, -0.345728165148602050, -0.345775081452130870, -0.345821996891221950, -0.345868911465758100, +-0.345915825175622300, -0.345962738020696600, -0.346009650000864030, -0.346056561116007360, -0.346103471366009660, -0.346150380750752880, -0.346197289270120110, -0.346244196923994610, +-0.346291103712258130, -0.346338009634793940, -0.346384914691484750, -0.346431818882213640, -0.346478722206862540, -0.346525624665314670, -0.346572526257452770, -0.346619426983159950, +-0.346666326842318130, -0.346713225834810510, -0.346760123960519810, -0.346807021219329210, -0.346853917611120670, -0.346900813135777310, -0.346947707793181900, -0.346994601583217710, +-0.347041494505766550, -0.347088386560711670, -0.347135277747936180, -0.347182168067322160, -0.347229057518752660, -0.347275946102110540, -0.347322833817279020, -0.347369720664139960, +-0.347416606642576560, -0.347463491752471710, -0.347510375993708490, -0.347557259366168940, -0.347604141869736260, -0.347651023504293170, -0.347697904269722970, -0.347744784165907590, +-0.347791663192730300, -0.347838541350073800, -0.347885418637821350, -0.347932295055854990, -0.347979170604057860, -0.348026045282313180, -0.348072919090503030, -0.348119792028510570, +-0.348166664096218600, -0.348213535293510460, -0.348260405620268000, -0.348307275076374550, -0.348354143661712910, -0.348401011376166300, -0.348447878219616760, -0.348494744191947540, +-0.348541609293041450, -0.348588473522781770, -0.348635336881050470, -0.348682199367730820, -0.348729060982705670, -0.348775921725858310, -0.348822781597070750, -0.348869640596226220, +-0.348916498723207570, -0.348963355977898070, -0.349010212360179760, -0.349057067869935960, -0.349103922507049910, -0.349150776271403620, -0.349197629162880390, -0.349244481181363090, +-0.349291332326734980, -0.349338182598878170, -0.349385031997675840, -0.349431880523011000, -0.349478728174766830, -0.349525574952825440, -0.349572420857070130, -0.349619265887383730, +-0.349666110043649610, -0.349712953325749810, -0.349759795733567580, -0.349806637266985910, -0.349853477925888000, -0.349900317710156060, -0.349947156619673240, -0.349993994654323020, +-0.350040831813987370, -0.350087668098549630, -0.350134503507892710, -0.350181338041899990, -0.350228171700453450, -0.350275004483436510, -0.350321836390732110, -0.350368667422223450, +-0.350415497577792780, -0.350462326857323310, -0.350509155260698040, -0.350555982787800310, -0.350602809438512190, -0.350649635212717080, -0.350696460110297810, -0.350743284131137870, +-0.350790107275119280, -0.350836929542125420, -0.350883750932039720, -0.350930571444744150, -0.350977391080122160, -0.351024209838056710, -0.351071027718431130, -0.351117844721127560, +-0.351164660846029430, -0.351211476093019610, -0.351258290461981540, -0.351305103952797290, -0.351351916565350310, -0.351398728299523510, -0.351445539155200330, -0.351492349132262900, +-0.351539158230594560, -0.351585966450078340, -0.351632773790597650, -0.351679580252034550, -0.351726385834272510, -0.351773190537194970, -0.351819994360684010, -0.351866797304623060, +-0.351913599368895100, -0.351960400553383620, -0.352007200857970660, -0.352054000282539750, -0.352100798826973820, -0.352147596491156290, -0.352194393274969320, -0.352241189178296440, +-0.352287984201020530, -0.352334778343025120, -0.352381571604192310, -0.352428363984405630, -0.352475155483548020, -0.352521946101502890, -0.352568735838152510, -0.352615524693380310, +-0.352662312667069270, -0.352709099759102860, -0.352755885969363300, -0.352802671297734020, -0.352849455744098480, -0.352896239308338850, -0.352943021990338670, -0.352989803789980960, +-0.353036584707149100, -0.353083364741725360, -0.353130143893593260, -0.353176922162635740, -0.353223699548736390, -0.353270476051777360, -0.353317251671642070, -0.353364026408213740, +-0.353410800261375720, -0.353457573231010290, -0.353504345317000920, -0.353551116519230710, -0.353597886837583090, -0.353644656271940360, -0.353691424822186020, -0.353738192488203480, +-0.353784959269875080, -0.353831725167084280, -0.353878490179714120, -0.353925254307648210, -0.353972017550768680, -0.354018779908959190, -0.354065541382102670, -0.354112301970082750, +-0.354159061672781660, -0.354205820490082920, -0.354252578421869630, -0.354299335468025330, -0.354346091628432220, -0.354392846902973900, -0.354439601291533510, -0.354486354793994480, +-0.354533107410239190, -0.354579859140151110, -0.354626609983613780, -0.354673359940509520, -0.354720109010721870, -0.354766857194133920, -0.354813604490629260, -0.354860350900090220, +-0.354907096422400260, -0.354953841057442540, -0.355000584805100660, -0.355047327665256870, -0.355094069637794830, -0.355140810722597570, -0.355187550919548680, -0.355234290228530540, +-0.355281028649426620, -0.355327766182120200, -0.355374502826494740, -0.355421238582432570, -0.355467973449817400, -0.355514707428532200, -0.355561440518460730, -0.355608172719485190, +-0.355654904031489190, -0.355701634454356430, -0.355748363987969110, -0.355795092632210870, -0.355841820386964940, -0.355888547252114880, -0.355935273227542980, -0.355981998313132930, +-0.356028722508767880, -0.356075445814331480, -0.356122168229705990, -0.356168889754775120, -0.356215610389422010, -0.356262330133530310, -0.356309048986982350, -0.356355766949661760, +-0.356402484021451750, -0.356449200202235970, -0.356495915491896740, -0.356542629890317760, -0.356589343397382570, -0.356636056012973660, -0.356682767736974600, -0.356729478569268620, +-0.356776188509739360, -0.356822897558269180, -0.356869605714741740, -0.356916312979040360, -0.356963019351048570, -0.357009724830648860, -0.357056429417724750, -0.357103133112159630, +-0.357149835913837090, -0.357196537822639550, -0.357243238838450660, -0.357289938961153630, -0.357336638190632220, -0.357383336526768790, -0.357430033969447000, -0.357476730518550560, +-0.357523426173961880, -0.357570120935564620, -0.357616814803242030, -0.357663507776877890, -0.357710199856354490, -0.357756891041555670, -0.357803581332364560, -0.357850270728664930, +-0.357896959230339210, -0.357943646837271090, -0.357990333549343840, -0.358037019366441220, -0.358083704288445600, -0.358130388315240740, -0.358177071446709900, -0.358223753682736790, +-0.358270435023203880, -0.358317115467994880, -0.358363795016993500, -0.358410473670082220, -0.358457151427144740, -0.358503828288064430, -0.358550504252724940, -0.358597179321008760, +-0.358643853492799650, -0.358690526767980910, -0.358737199146436260, -0.358783870628048170, -0.358830541212700470, -0.358877210900276360, -0.358923879690659640, -0.358970547583732870, +-0.359017214579379680, -0.359063880677483460, -0.359110545877927960, -0.359157210180595650, -0.359203873585370310, -0.359250536092135310, -0.359297197700774400, -0.359343858411170060, +-0.359390518223206110, -0.359437177136766260, -0.359483835151733040, -0.359530492267990220, -0.359577148485421220, -0.359623803803909680, -0.359670458223338320, -0.359717111743590720, +-0.359763764364550380, -0.359810416086101040, -0.359857066908125240, -0.359903716830506810, -0.359950365853129060, -0.359997013975875800, -0.360043661198629630, -0.360090307521274240, +-0.360136952943693130, -0.360183597465770060, -0.360230241087387550, -0.360276883808429480, -0.360323525628779560, -0.360370166548320490, -0.360416806566935920, -0.360463445684509390, +-0.360510083900924650, -0.360556721216064250, -0.360603357629812050, -0.360649993142051480, -0.360696627752666370, -0.360743261461539230, -0.360789894268553960, -0.360836526173593960, +-0.360883157176543010, -0.360929787277283810, -0.360976416475700110, -0.361023044771675410, -0.361069672165093450, -0.361116298655836940, -0.361162924243789650, -0.361209548928835500, +-0.361256172710857030, -0.361302795589738160, -0.361349417565362320, -0.361396038637613270, -0.361442658806373770, -0.361489278071527640, -0.361535896432958250, -0.361582513890549570, +-0.361629130444184210, -0.361675746093746030, -0.361722360839118460, -0.361768974680185370, -0.361815587616829470, -0.361862199648934570, -0.361908810776384200, -0.361955420999062250, +-0.362002030316851300, -0.362048638729635220, -0.362095246237297610, -0.362141852839722280, -0.362188458536791940, -0.362235063328390390, -0.362281667214401640, -0.362328270194708260, +-0.362374872269194240, -0.362421473437743060, -0.362468073700238590, -0.362514673056563490, -0.362561271506601780, -0.362607869050236840, -0.362654465687352660, -0.362701061417831870, +-0.362747656241558470, -0.362794250158415880, -0.362840843168288130, -0.362887435271057820, -0.362934026466608940, -0.362980616754824960, -0.363027206135589920, -0.363073794608786420, +-0.363120382174298430, -0.363166968832009880, -0.363213554581803490, -0.363260139423563280, -0.363306723357172680, -0.363353306382515670, -0.363399888499474970, -0.363446469707934590, +-0.363493050007777980, -0.363539629398889230, -0.363586207881150920, -0.363632785454447160, -0.363679362118661420, -0.363725937873677680, -0.363772512719378660, -0.363819086655648380, +-0.363865659682370390, -0.363912231799428660, -0.363958803006705910, -0.364005373304086170, -0.364051942691453410, -0.364098511168690410, -0.364145078735681080, -0.364191645392309080, +-0.364238211138458390, -0.364284775974011770, -0.364331339898853130, -0.364377902912866200, -0.364424465015934950, -0.364471026207942080, -0.364517586488771690, -0.364564145858307320, +-0.364610704316433000, -0.364657261863031490, -0.364703818497986830, -0.364750374221182620, -0.364796929032502880, -0.364843482931830390, -0.364890035919049230, -0.364936587994042990, +-0.364983139156695670, -0.365029689406890070, -0.365076238744510280, -0.365122787169440300, -0.365169334681562930, -0.365215881280762210, -0.365262426966921790, -0.365308971739925770, +-0.365355515599656840, -0.365402058545999160, -0.365448600578836320, -0.365495141698052360, -0.365541681903530200, -0.365588221195153770, -0.365634759572806830, -0.365681297036373420, +-0.365727833585736290, -0.365774369220779660, -0.365820903941387050, -0.365867437747442570, -0.365913970638829130, -0.365960502615430780, -0.366007033677131550, -0.366053563823814320, +-0.366100093055363170, -0.366146621371661820, -0.366193148772594350, -0.366239675258043570, -0.366286200827893590, -0.366332725482028110, -0.366379249220331220, -0.366425772042685840, +-0.366472293948975960, -0.366518814939085390, -0.366565335012898170, -0.366611854170297240, -0.366658372411166670, -0.366704889735390120, -0.366751406142851790, -0.366797921633434550, +-0.366844436207022510, -0.366890949863499740, -0.366937462602749230, -0.366983974424655020, -0.367030485329100930, -0.367076995315971040, -0.367123504385148180, -0.367170012536516600, +-0.367216519769960000, -0.367263026085362490, -0.367309531482607030, -0.367356035961577730, -0.367402539522158340, -0.367449042164233020, -0.367495543887684680, -0.367542044692397480, +-0.367588544578255130, -0.367635043545141870, -0.367681541592940590, -0.367728038721535420, -0.367774534930810640, -0.367821030220649050, -0.367867524590934910, -0.367914018041551940, +-0.367960510572384330, -0.368007002183315060, -0.368053492874228280, -0.368099982645007760, -0.368146471495537700, -0.368192959425701020, -0.368239446435381980, -0.368285932524464290, +-0.368332417692832200, -0.368378901940368650, -0.368425385266957890, -0.368471867672483630, -0.368518349156830070, -0.368564829719880300, -0.368611309361518420, -0.368657788081628250, +-0.368704265880094030, -0.368750742756798760, -0.368797218711626630, -0.368843693744461850, -0.368890167855187410, -0.368936641043687560, -0.368983113309846120, -0.369029584653547290, +-0.369076055074674110, -0.369122524573110790, -0.369168993148741190, -0.369215460801449460, -0.369261927531118690, -0.369308393337633100, -0.369354858220876490, -0.369401322180733180, +-0.369447785217086160, -0.369494247329819670, -0.369540708518817600, -0.369587168783964140, -0.369633628125142330, -0.369680086542236440, -0.369726544035130780, -0.369773000603708320, +-0.369819456247853400, -0.369865910967449810, -0.369912364762381870, -0.369958817632532580, -0.370005269577786230, -0.370051720598026770, -0.370098170693138380, -0.370144619863004180, +-0.370191068107508400, -0.370237515426534940, -0.370283961819968140, -0.370330407287691010, -0.370376851829587850, -0.370423295445542530, -0.370469738135439430, -0.370516179899161580, +-0.370562620736593300, -0.370609060647618840, -0.370655499632121300, -0.370701937689985050, -0.370748374821093910, -0.370794811025332290, -0.370841246302583190, -0.370887680652731030, +-0.370934114075659630, -0.370980546571253400, -0.371026978139395340, -0.371073408779969860, -0.371119838492860840, -0.371166267277952660, -0.371212695135128390, -0.371259122064272360, +-0.371305548065268550, -0.371351973138001280, -0.371398397282353630, -0.371444820498210040, -0.371491242785454370, -0.371537664143970990, -0.371584084573643060, -0.371630504074354940, +-0.371676922645990950, -0.371723340288434230, -0.371769757001569170, -0.371816172785279730, -0.371862587639450290, -0.371909001563963890, -0.371955414558705070, -0.372001826623557690, +-0.372048237758406120, -0.372094647963133570, -0.372141057237624420, -0.372187465581762580, -0.372233872995432540, -0.372280279478517380, -0.372326685030901490, -0.372373089652468960, +-0.372419493343104040, -0.372465896102690040, -0.372512297931111240, -0.372558698828252150, -0.372605098793995890, -0.372651497828226870, -0.372697895930829140, -0.372744293101687050, +-0.372790689340683820, -0.372837084647703880, -0.372883479022631250, -0.372929872465350310, -0.372976264975744260, -0.373022656553697540, -0.373069047199094230, -0.373115436911818640, +-0.373161825691754100, -0.373208213538785030, -0.373254600452795350, -0.373300986433669600, -0.373347371481290990, -0.373393755595543940, -0.373440138776312940, -0.373486521023481180, +-0.373532902336933090, -0.373579282716552770, -0.373625662162224650, -0.373672040673831920, -0.373718418251259120, -0.373764794894390300, -0.373811170603109870, -0.373857545377301090, +-0.373903919216848510, -0.373950292121636050, -0.373996664091548300, -0.374043035126468530, -0.374089405226281150, -0.374135774390870200, -0.374182142620120280, -0.374228509913914600, +-0.374274876272137620, -0.374321241694673850, -0.374367606181406580, -0.374413969732220300, -0.374460332346999100, -0.374506694025627470, -0.374553054767988670, -0.374599414573967280, +-0.374645773443447290, -0.374692131376313350, -0.374738488372448610, -0.374784844431737710, -0.374831199554064630, -0.374877553739314030, -0.374923906987369100, -0.374970259298114390, +-0.375016610671434050, -0.375062961107212600, -0.375109310605333370, -0.375155659165680780, -0.375202006788139090, -0.375248353472592830, -0.375294699218925220, -0.375341044027020900, +-0.375387387896764350, -0.375433730828038940, -0.375480072820729150, -0.375526413874719240, -0.375572753989893700, -0.375619093166135840, -0.375665431403330250, -0.375711768701361080, +-0.375758105060112920, -0.375804440479469090, -0.375850774959314130, -0.375897108499532230, -0.375943441100007990, -0.375989772760624790, -0.376036103481267090, -0.376082433261819120, +-0.376128762102165500, -0.376175090002189570, -0.376221416961775910, -0.376267742980809120, -0.376314068059172560, -0.376360392196750830, -0.376406715393428130, -0.376453037649089050, +-0.376499358963616970, -0.376545679336896480, -0.376591998768811780, -0.376638317259247510, -0.376684634808087060, -0.376730951415214950, -0.376777267080515510, -0.376823581803873320, +-0.376869895585171750, -0.376916208424295460, -0.376962520321128650, -0.377008831275555960, -0.377055141287460760, -0.377101450356727710, -0.377147758483241390, -0.377194065666885350, +-0.377240371907544110, -0.377286677205101950, -0.377332981559443500, -0.377379284970452140, -0.377425587438012630, -0.377471888962009120, -0.377518189542326350, -0.377564489178847660, +-0.377610787871457740, -0.377657085620040860, -0.377703382424481650, -0.377749678284663600, -0.377795973200471370, -0.377842267171789150, -0.377888560198501760, -0.377934852280492510, +-0.377981143417646100, -0.378027433609846860, -0.378073722856979430, -0.378120011158927290, -0.378166298515575150, -0.378212584926807650, -0.378258870392508330, -0.378305154912561780, +-0.378351438486852320, -0.378397721115264710, -0.378444002797682370, -0.378490283533990060, -0.378536563324072040, -0.378582842167812960, -0.378629120065096410, -0.378675397015807050, +-0.378721673019829230, -0.378767948077047610, -0.378814222187345670, -0.378860495350608230, -0.378906767566719540, -0.378953038835564360, -0.378999309157026120, -0.379045578530989640, +-0.379091846957339660, -0.379138114435959570, -0.379184380966734240, -0.379230646549547970, -0.379276911184285470, -0.379323174870830280, -0.379369437609067160, -0.379415699398880480, +-0.379461960240154940, -0.379508220132774080, -0.379554479076622650, -0.379600737071585040, -0.379646994117546040, -0.379693250214389100, -0.379739505361999020, -0.379785759560260230, +-0.379832012809057430, -0.379878265108274160, -0.379924516457795240, -0.379970766857505470, -0.380017016307288350, -0.380063264807028680, -0.380109512356610830, -0.380155758955919630, +-0.380202004604838660, -0.380248249303252630, -0.380294493051046010, -0.380340735848103520, -0.380386977694308850, -0.380433218589546650, -0.380479458533701460, -0.380525697526658050, +-0.380571935568299930, -0.380618172658512000, -0.380664408797178670, -0.380710643984184690, -0.380756878219413730, -0.380803111502750540, -0.380849343834079980, -0.380895575213285650, +-0.380941805640252370, -0.380988035114864620, -0.381034263637007150, -0.381080491206563620, -0.381126717823418890, -0.381172943487457340, -0.381219168198563830, -0.381265391956622010, +-0.381311614761516700, -0.381357836613132380, -0.381404057511353870, -0.381450277456064800, -0.381496496447150000, -0.381542714484494010, -0.381588931567981630, -0.381635147697496510, +-0.381681362872923540, -0.381727577094147120, -0.381773790361052190, -0.381820002673522340, -0.381866214031442550, -0.381912424434697580, -0.381958633883171190, -0.382004842376748140, +-0.382051049915313080, -0.382097256498750760, -0.382143462126944830, -0.382189666799780340, -0.382235870517141640, -0.382282073278913670, -0.382328275084980130, -0.382374475935225890, +-0.382420675829535430, -0.382466874767793730, -0.382513072749884390, -0.382559269775692430, -0.382605465845102240, -0.382651660957998850, -0.382697855114265850, -0.382744048313788220, +-0.382790240556450890, -0.382836431842137560, -0.382882622170733160, -0.382928811542122160, -0.382974999956189550, -0.383021187412819040, -0.383067373911895600, -0.383113559453303660, +-0.383159744036928260, -0.383205927662653100, -0.383252110330363160, -0.383298292039942870, -0.383344472791277310, -0.383390652584250150, -0.383436831418746290, -0.383483009294650460, +-0.383529186211847450, -0.383575362170221090, -0.383621537169656300, -0.383667711210038060, -0.383713884291250200, -0.383760056413177560, -0.383806227575704820, -0.383852397778716940, +-0.383898567022097630, -0.383944735305731920, -0.383990902629504300, -0.384037068993299920, -0.384083234397002430, -0.384129398840496850, -0.384175562323667790, -0.384221724846400210, +-0.384267886408577900, -0.384314047010085870, -0.384360206650808780, -0.384406365330631550, -0.384452523049437940, -0.384498679807113110, -0.384544835603541520, -0.384590990438608280, +-0.384637144312197140, -0.384683297224193200, -0.384729449174481370, -0.384775600162945490, -0.384821750189470620, -0.384867899253941440, -0.384914047356242850, -0.384960194496258730, +-0.385006340673874180, -0.385052485888973730, -0.385098630141442520, -0.385144773431164270, -0.385190915758024110, -0.385237057121906650, -0.385283197522697020, -0.385329336960278930, +-0.385375475434537480, -0.385421612945357370, -0.385467749492623630, -0.385513885076220140, -0.385560019696031870, -0.385606153351944040, -0.385652286043840330, -0.385698417771605960, +-0.385744548535125580, -0.385790678334284150, -0.385836807168965680, -0.385882935039055190, -0.385929061944437320, -0.385975187884997240, -0.386021312860618750, -0.386067436871187000, +-0.386113559916586690, -0.386159681996702860, -0.386205803111419390, -0.386251923260621470, -0.386298042444193690, -0.386344160662021210, -0.386390277913987950, -0.386436394199978990, +-0.386482509519879450, -0.386528623873573230, -0.386574737260945430, -0.386620849681880820, -0.386666961136264480, -0.386713071623980330, -0.386759181144913480, -0.386805289698948730, +-0.386851397285971120, -0.386897503905864640, -0.386943609558514370, -0.386989714243805070, -0.387035817961621900, -0.387081920711848770, -0.387128022494370890, -0.387174123309072920, +-0.387220223155840040, -0.387266322034556190, -0.387312419945106570, -0.387358516887376270, -0.387404612861249280, -0.387450707866610790, -0.387496801903345510, -0.387542894971338590, +-0.387588987070474070, -0.387635078200637080, -0.387681168361712400, -0.387727257553585170, -0.387773345776139420, -0.387819433029260310, -0.387865519312832640, -0.387911604626741510, +-0.387957688970871020, -0.388003772345106300, -0.388049854749332120, -0.388095936183433740, -0.388142016647295090, -0.388188096140801410, -0.388234174663837470, -0.388280252216288540, +-0.388326328798038580, -0.388372404408972750, -0.388418479048976310, -0.388464552717933290, -0.388510625415728890, -0.388556697142247940, -0.388602767897375630, -0.388648837680996010, +-0.388694906492994320, -0.388740974333255330, -0.388787041201664300, -0.388833107098105260, -0.388879172022463470, -0.388925235974623750, -0.388971298954471360, -0.389017360961890320, +-0.389063421996765860, -0.389109482058982830, -0.389155541148426540, -0.389201599264980940, -0.389247656408531370, -0.389293712578963060, -0.389339767776160080, -0.389385822000007650, +-0.389431875250390690, -0.389477927527194460, -0.389523978830302990, -0.389570029159601540, -0.389616078514975040, -0.389662126896308800, -0.389708174303486750, -0.389754220736394320, +-0.389800266194916370, -0.389846310678938100, -0.389892354188343670, -0.389938396723018330, -0.389984438282847010, -0.390030478867715020, -0.390076518477506410, -0.390122557112106530, +-0.390168594771400650, -0.390214631455272850, -0.390260667163608520, -0.390306701896292460, -0.390352735653210100, -0.390398768434245480, -0.390444800239283960, -0.390490831068210420, +-0.390536860920910170, -0.390582889797267410, -0.390628917697167450, -0.390674944620495120, -0.390720970567135890, -0.390766995536973800, -0.390813019529894280, -0.390859042545782130, +-0.390905064584522840, -0.390951085646000450, -0.390997105730100380, -0.391043124836707500, -0.391089142965707240, -0.391135160116983680, -0.391181176290422260, -0.391227191485908340, +-0.391273205703325970, -0.391319218942560610, -0.391365231203497200, -0.391411242486021100, -0.391457252790016530, -0.391503262115368790, -0.391549270461962920, -0.391595277829684290, +-0.391641284218417040, -0.391687289628046550, -0.391733294058457910, -0.391779297509536380, -0.391825299981166220, -0.391871301473232790, -0.391917301985621140, -0.391963301518216620, +-0.392009300070903450, -0.392055297643567060, -0.392101294236092750, -0.392147289848364890, -0.392193284480268740, -0.392239278131689410, -0.392285270802512300, -0.392331262492621570, +-0.392377253201902700, -0.392423242930240720, -0.392469231677521010, -0.392515219443627830, -0.392561206228446590, -0.392607192031862340, -0.392653176853760500, -0.392699160694025330, +-0.392745143552542250, -0.392791125429196360, -0.392837106323873030, -0.392883086236456510, -0.392929065166832290, -0.392975043114885790, -0.393021020080501330, -0.393066996063564270, +-0.393112971063959700, -0.393158945081573170, -0.393204918116288830, -0.393250890167992200, -0.393296861236568370, -0.393342831321902790, -0.393388800423879690, -0.393434768542384630, +-0.393480735677302630, -0.393526701828519180, -0.393572666995918590, -0.393618631179386340, -0.393664594378807520, -0.393710556594067620, -0.393756517825050890, -0.393802478071642870, +-0.393848437333729100, -0.393894395611193770, -0.393940352903922490, -0.393986309211800330, -0.394032264534712800, -0.394078218872544180, -0.394124172225180040, -0.394170124592505440, +-0.394216075974406000, -0.394262026370765910, -0.394307975781470750, -0.394353924206405690, -0.394399871645456200, -0.394445818098506600, -0.394491763565442520, -0.394537708046148960, +-0.394583651540511560, -0.394629594048414630, -0.394675535569743720, -0.394721476104384020, -0.394767415652220950, -0.394813354213138960, -0.394859291787023610, -0.394905228373760410, +-0.394951163973233770, -0.394997098585329160, -0.395043032209931870, -0.395088964846927400, -0.395134896496200040, -0.395180827157635530, -0.395226756831118910, -0.395272685516535770, +-0.395318613213770540, -0.395364539922708810, -0.395410465643235680, -0.395456390375236830, -0.395502314118596600, -0.395548236873200560, -0.395594158638933930, -0.395640079415682300, +-0.395685999203330090, -0.395731918001762880, -0.395777835810866290, -0.395823752630524660, -0.395869668460623660, -0.395915583301048530, -0.395961497151684830, -0.396007410012416960, +-0.396053321883130580, -0.396099232763710900, -0.396145142654043550, -0.396191051554012910, -0.396236959463504680, -0.396282866382404010, -0.396328772310596600, -0.396374677247966880, +-0.396420581194400430, -0.396466484149782530, -0.396512386113998860, -0.396558287086933750, -0.396604187068473000, -0.396650086058502160, -0.396695984056905650, -0.396741881063569220, +-0.396787777078378090, -0.396833672101217950, -0.396879566131973170, -0.396925459170529520, -0.396971351216772240, -0.397017242270586930, -0.397063132331858140, -0.397109021400471500, +-0.397154909476312320, -0.397200796559266270, -0.397246682649217810, -0.397292567746052700, -0.397338451849656100, -0.397384334959913820, -0.397430217076710280, -0.397476098199931180, +-0.397521978329461840, -0.397567857465188020, -0.397613735606994090, -0.397659612754765800, -0.397705488908388970, -0.397751364067747910, -0.397797238232728500, -0.397843111403215990, +-0.397888983579096130, -0.397934854760253360, -0.397980724946573490, -0.398026594137941780, -0.398072462334244040, -0.398118329535364690, -0.398164195741189500, -0.398210060951603830, +-0.398255925166493440, -0.398301788385742820, -0.398347650609237770, -0.398393511836863560, -0.398439372068505940, -0.398485231304049500, -0.398531089543380010, -0.398576946786383220, +-0.398622803032943620, -0.398668658282947010, -0.398714512536278760, -0.398760365792824640, -0.398806218052469190, -0.398852069315098200, -0.398897919580597060, -0.398943768848851520, +-0.398989617119746120, -0.399035464393166730, -0.399081310668998600, -0.399127155947127670, -0.399173000227438400, -0.399218843509816680, -0.399264685794147810, -0.399310527080317670, +-0.399356367368210790, -0.399402206657712980, -0.399448044948710060, -0.399493882241086620, -0.399539718534728470, -0.399585553829520990, -0.399631388125350100, -0.399677221422100330, +-0.399723053719657440, -0.399768885017906970, -0.399814715316734680, -0.399860544616025220, -0.399906372915664390, -0.399952200215537620, -0.399998026515530740, -0.400043851815528370, +-0.400089676115416400, -0.400135499415080250, -0.400181321714405790, -0.400227143013277550, -0.400272963311581460, -0.400318782609203390, -0.400364600906027990, -0.400410418201941070, +-0.400456234496828050, -0.400502049790574910, -0.400547864083066200, -0.400593677374187880, -0.400639489663825340, -0.400685300951864440, -0.400731111238189940, -0.400776920522687650, +-0.400822728805243060, -0.400868536085742020, -0.400914342364069250, -0.400960147640110620, -0.401005951913751660, -0.401051755184878180, -0.401097557453374940, -0.401143358719127820, +-0.401189158982022230, -0.401234958241944220, -0.401280756498778370, -0.401326553752410660, -0.401372350002726970, -0.401418145249611950, -0.401463939492951620, -0.401509732732631410, +-0.401555524968537300, -0.401601316200553950, -0.401647106428567320, -0.401692895652462910, -0.401738683872126690, -0.401784471087443360, -0.401830257298298800, -0.401876042504578650, +-0.401921826706168770, -0.401967609902953940, -0.402013392094820070, -0.402059173281652750, -0.402104953463337860, -0.402150732639760200, -0.402196510810805710, -0.402242287976360360, +-0.402288064136308850, -0.402333839290537230, -0.402379613438930970, -0.402425386581376110, -0.402471158717757350, -0.402516929847960720, -0.402562699971871770, -0.402608469089376420, +-0.402654237200359530, -0.402700004304707090, -0.402745770402304580, -0.402791535493038090, -0.402837299576792320, -0.402883062653453310, -0.402928824722906640, -0.402974585785038310, +-0.403020345839733120, -0.403066104886877110, -0.403111862926356200, -0.403157619958055210, -0.403203375981860180, -0.403249130997656750, -0.403294885005330840, -0.403340638004767330, +-0.403386389995852250, -0.403432140978471190, -0.403477890952510190, -0.403523639917854000, -0.403569387874388790, -0.403615134822000070, -0.403660880760573880, -0.403706625689995160, +-0.403752369610149820, -0.403798112520923570, -0.403843854422202440, -0.403889595313871310, -0.403935335195816150, -0.403981074067922660, -0.404026811930076890, -0.404072548782163700, +-0.404118284624069120, -0.404164019455679260, -0.404209753276878910, -0.404255486087554180, -0.404301217887590770, -0.404346948676874710, -0.404392678455290870, -0.404438407222725280, +-0.404484134979063710, -0.404529861724192250, -0.404575587457995710, -0.404621312180360180, -0.404667035891171370, -0.404712758590315410, -0.404758480277677080, -0.404804200953142620, +-0.404849920616597640, -0.404895639267928260, -0.404941356907019380, -0.404987073533757070, -0.405032789148027540, -0.405078503749715550, -0.405124217338707400, -0.405169929914888650, +-0.405215641478145480, -0.405261352028362830, -0.405307061565426780, -0.405352770089223050, -0.405398477599637820, -0.405444184096556030, -0.405489889579863760, -0.405535594049446720, +-0.405581297505191170, -0.405626999946981930, -0.405672701374705180, -0.405718401788246700, -0.405764101187492620, -0.405809799572327880, -0.405855496942638620, -0.405901193298311090, +-0.405946888639230120, -0.405992582965281900, -0.406038276276352250, -0.406083968572327310, -0.406129659853092070, -0.406175350118532670, -0.406221039368534880, -0.406266727602984930, +-0.406312414821767720, -0.406358101024769490, -0.406403786211876010, -0.406449470382973470, -0.406495153537946850, -0.406540835676682310, -0.406586516799065710, -0.406632196904983260, +-0.406677875994319870, -0.406723554066961760, -0.406769231122795230, -0.406814907161705210, -0.406860582183577900, -0.406906256188299120, -0.406951929175755120, -0.406997601145830890, +-0.407043272098412680, -0.407088942033386250, -0.407134610950637910, -0.407180278850052650, -0.407225945731516660, -0.407271611594915820, -0.407317276440136320, -0.407362940267063270, +-0.407408603075582850, -0.407454264865580900, -0.407499925636943710, -0.407545585389556320, -0.407591244123304940, -0.407636901838075490, -0.407682558533754180, -0.407728214210226040, +-0.407773868867377380, -0.407819522505094460, -0.407865175123262310, -0.407910826721767260, -0.407956477300495110, -0.408002126859332180, -0.408047775398163500, -0.408093422916875390, +-0.408139069415353770, -0.408184714893484850, -0.408230359351153760, -0.408276002788246720, -0.408321645204649750, -0.408367286600249010, -0.408412926974929650, -0.408458566328578020, +-0.408504204661079950, -0.408549841972321750, -0.408595478262188560, -0.408641113530566650, -0.408686747777342370, -0.408732381002400840, -0.408778013205628340, -0.408823644386910820, +-0.408869274546134590, -0.408914903683184780, -0.408960531797947720, -0.409006158890309280, -0.409051784960155870, -0.409097410007372650, -0.409143034031845820, -0.409188657033461470, +-0.409234279012105850, -0.409279899967664120, -0.409325519900022640, -0.409371138809067390, -0.409416756694684690, -0.409462373556759680, -0.409507989395178740, -0.409553604209828230, +-0.409599218000593290, -0.409644830767360300, -0.409690442510015300, -0.409736053228444530, -0.409781662922533260, -0.409827271592167810, -0.409872879237234200, -0.409918485857618750, +-0.409964091453206720, -0.410009696023884480, -0.410055299569538010, -0.410100902090053620, -0.410146503585316620, -0.410192104055213390, -0.410237703499629850, -0.410283301918452470, +-0.410328899311566410, -0.410374495678858140, -0.410420091020213650, -0.410465685335519300, -0.410511278624660300, -0.410556870887523180, -0.410602462123994210, -0.410648052333958740, +-0.410693641517303090, -0.410739229673913410, -0.410784816803676010, -0.410830402906476160, -0.410875987982200320, -0.410921572030734480, -0.410967155051965130, -0.411012737045777510, +-0.411058318012058000, -0.411103897950692740, -0.411149476861568160, -0.411195054744569410, -0.411240631599583070, -0.411286207426495130, -0.411331782225192120, -0.411377355995559250, +-0.411422928737482930, -0.411468500450849710, -0.411514071135544890, -0.411559640791454850, -0.411605209418465680, -0.411650777016463910, -0.411696343585334800, -0.411741909124964830, +-0.411787473635240100, -0.411833037116047070, -0.411878599567271080, -0.411924160988798580, -0.411969721380515690, -0.412015280742308860, -0.412060839074063430, -0.412106396375665930, +-0.412151952647002380, -0.412197507887959390, -0.412243062098422260, -0.412288615278277430, -0.412334167427411470, -0.412379718545709710, -0.412425268633058670, -0.412470817689344400, +-0.412516365714453550, -0.412561912708271360, -0.412607458670684380, -0.412653003601578750, -0.412698547500841010, -0.412744090368356520, -0.412789632204011770, -0.412835173007693010, +-0.412880712779286670, -0.412926251518678120, -0.412971789225753950, -0.413017325900400360, -0.413062861542503820, -0.413108396151949720, -0.413153929728624640, -0.413199462272415160, +-0.413244993783206560, -0.413290524260885530, -0.413336053705338210, -0.413381582116451100, -0.413427109494109660, -0.413472635838200430, -0.413518161148609620, -0.413563685425223810, +-0.413609208667928390, -0.413654730876609980, -0.413700252051154680, -0.413745772191449200, -0.413791291297378850, -0.413836809368830330, -0.413882326405689730, -0.413927842407843750, +-0.413973357375177710, -0.414018871307578310, -0.414064384204931750, -0.414109896067124620, -0.414155406894042340, -0.414200916685571520, -0.414246425441598840, -0.414291933162009740, +-0.414337439846690750, -0.414382945495528180, -0.414428450108408620, -0.414473953685217560, -0.414519456225841580, -0.414564957730166990, -0.414610458198080400, -0.414655957629467280, +-0.414701456024214270, -0.414746953382207570, -0.414792449703333950, -0.414837944987478780, -0.414883439234528750, -0.414928932444370120, -0.414974424616889550, -0.415019915751972500, +-0.415065405849505690, -0.415110894909375750, -0.415156382931468230, -0.415201869915669710, -0.415247355861866510, -0.415292840769945330, -0.415338324639791590, -0.415383807471292110, +-0.415429289264333090, -0.415474770018801230, -0.415520249734582070, -0.415565728411562310, -0.415611206049628200, -0.415656682648666450, -0.415702158208562660, -0.415747632729203400, +-0.415793106210475110, -0.415838578652264420, -0.415884050054456890, -0.415929520416939260, -0.415974989739598230, -0.416020458022319290, -0.416065925264989200, -0.416111391467494320, +-0.416156856629721410, -0.416202320751555890, -0.416247783832884580, -0.416293245873593840, -0.416338706873570330, -0.416384166832699740, -0.416429625750868670, -0.416475083627963540, +-0.416520540463871100, -0.416565996258476900, -0.416611451011667740, -0.416656904723329950, -0.416702357393350320, -0.416747809021614350, -0.416793259608008840, -0.416838709152420220, +-0.416884157654735240, -0.416929605114839450, -0.416975051532619660, -0.417020496907962610, -0.417065941240753910, -0.417111384530880420, -0.417156826778228410, -0.417202267982684780, +-0.417247708144135030, -0.417293147262466020, -0.417338585337564180, -0.417384022369316270, -0.417429458357607860, -0.417474893302325840, -0.417520327203356580, -0.417565760060586880, +-0.417611191873902440, -0.417656622643189980, -0.417702052368335960, -0.417747481049227210, -0.417792908685749360, -0.417838335277789240, -0.417883760825233710, -0.417929185327968300, +-0.417974608785880000, -0.418020031198855170, -0.418065452566780630, -0.418110872889542070, -0.418156292167026320, -0.418201710399119910, -0.418247127585709530, -0.418292543726680950, +-0.418337958821921040, -0.418383372871316220, -0.418428785874753410, -0.418474197832118200, -0.418519608743297470, -0.418565018608177740, -0.418610427426645890, -0.418655835198587510, +-0.418701241923889580, -0.418746647602438960, -0.418792052234121300, -0.418837455818823530, -0.418882858356432130, -0.418928259846833960, -0.418973660289914730, -0.419019059685561360, +-0.419064458033660330, -0.419109855334098560, -0.419155251586761760, -0.419200646791536850, -0.419246040948310310, -0.419291434056969060, -0.419336826117398810, -0.419382217129486530, +-0.419427607093118660, -0.419472996008182220, -0.419518383874562860, -0.419563770692147560, -0.419609156460822810, -0.419654541180475570, -0.419699924850991610, -0.419745307472257800, +-0.419790689044161170, -0.419836069566587370, -0.419881449039423430, -0.419926827462555830, -0.419972204835871610, -0.420017581159256470, -0.420062956432597330, -0.420108330655780850, +-0.420153703828693940, -0.420199075951222300, -0.420244447023253030, -0.420289817044672660, -0.420335186015368120, -0.420380553935225220, -0.420425920804130940, -0.420471286621971860, +-0.420516651388634920, -0.420562015104005980, -0.420607377767972020, -0.420652739380420030, -0.420698099941235750, -0.420743459450306220, -0.420788817907518100, -0.420834175312758300, +-0.420879531665912630, -0.420924886966868190, -0.420970241215511460, -0.421015594411729590, -0.421060946555408320, -0.421106297646434700, -0.421151647684695260, -0.421196996670077210, +-0.421242344602466180, -0.421287691481749330, -0.421333037307813240, -0.421378382080544960, -0.421423725799830340, -0.421469068465556370, -0.421514410077610150, -0.421559750635877530, +-0.421605090140245500, -0.421650428590600760, -0.421695765986830340, -0.421741102328820060, -0.421786437616457070, -0.421831771849628000, -0.421877105028219900, -0.421922437152118630, +-0.421967768221211240, -0.422013098235384470, -0.422058427194525350, -0.422103755098519720, -0.422149081947254760, -0.422194407740617060, -0.422239732478493720, -0.422285056160770720, +-0.422330378787335040, -0.422375700358073760, -0.422421020872872920, -0.422466340331619450, -0.422511658734200160, -0.422556976080502130, -0.422602292370411300, -0.422647607603814700, +-0.422692921780599080, -0.422738234900651540, -0.422783546963858000, -0.422828857970105660, -0.422874167919281120, -0.422919476811271570, -0.422964784645962930, -0.423010091423242360, +-0.423055397142996560, -0.423100701805112610, -0.423146005409476560, -0.423191307955975480, -0.423236609444496090, -0.423281909874925640, -0.423327209247150000, -0.423372507561056320, +-0.423417804816531800, -0.423463101013462300, -0.423508396151735080, -0.423553690231236900, -0.423598983251854910, -0.423644275213475030, -0.423689566115984460, -0.423734855959269960, +-0.423780144743218730, -0.423825432467716760, -0.423870719132651170, -0.423916004737908800, -0.423961289283376840, -0.424006572768941270, -0.424051855194489240, -0.424097136559907550, +-0.424142416865083470, -0.424187696109902870, -0.424232974294253110, -0.424278251418021280, -0.424323527481093420, -0.424368802483356730, -0.424414076424698080, -0.424459349305004620, +-0.424504621124162370, -0.424549891882058550, -0.424595161578580020, -0.424640430213614030, -0.424685697787046510, -0.424730964298764780, -0.424776229748655590, -0.424821494136606250, +-0.424866757462502800, -0.424912019726232440, -0.424957280927682040, -0.425002541066738790, -0.425047800143288860, -0.425093058157219370, -0.425138315108417650, -0.425183570996769790, +-0.425228825822162930, -0.425274079584484040, -0.425319332283620400, -0.425364583919457970, -0.425409834491884080, -0.425455084000785630, -0.425500332446049840, -0.425545579827562860, +-0.425590826145211880, -0.425636071398883880, -0.425681315588466060, -0.425726558713844570, -0.425771800774906670, -0.425817041771539280, -0.425862281703629720, -0.425907520571064010, +-0.425952758373729530, -0.425997995111513150, -0.426043230784302170, -0.426088465391982700, -0.426133698934442080, -0.426178931411567650, -0.426224162823245430, -0.426269393169362850, +-0.426314622449806780, -0.426359850664464520, -0.426405077813222230, -0.426450303895967280, -0.426495528912586570, -0.426540752862967440, -0.426585975746996030, -0.426631197564559640, +-0.426676418315545310, -0.426721637999840310, -0.426766856617330830, -0.426812074167904180, -0.426857290651447340, -0.426902506067847690, -0.426947720416991360, -0.426992933698765790, +-0.427038145913058220, -0.427083357059754920, -0.427128567138743200, -0.427173776149910090, -0.427218984093142910, -0.427264190968327910, -0.427309396775352400, -0.427354601514103370, +-0.427399805184468300, -0.427445007786333320, -0.427490209319585760, -0.427535409784112700, -0.427580609179801560, -0.427625807506538450, -0.427671004764210830, -0.427716200952705680, +-0.427761396071910490, -0.427806590121711350, -0.427851783101995730, -0.427896975012651120, -0.427942165853563590, -0.427987355624620700, -0.428032544325709420, -0.428077731956717170, +-0.428122918517530150, -0.428168104008035900, -0.428213288428121340, -0.428258471777674010, -0.428303654056580050, -0.428348835264727000, -0.428394015402001840, -0.428439194468292040, +-0.428484372463483810, -0.428529549387464740, -0.428574725240121750, -0.428619900021342310, -0.428665073731012760, -0.428710246369020550, -0.428755417935253070, -0.428800588429596670, +-0.428845757851938790, -0.428890926202166570, -0.428936093480167370, -0.428981259685827570, -0.429026424819034580, -0.429071588879675560, -0.429116751867637980, -0.429161913782808100, +-0.429207074625073460, -0.429252234394321090, -0.429297393090438570, -0.429342550713312180, -0.429387707262829380, -0.429432862738877320, -0.429478017141343480, -0.429523170470114240, +-0.429568322725077060, -0.429613473906119090, -0.429658624013127820, -0.429703773045989560, -0.429748921004591890, -0.429794067888822350, -0.429839213698567200, -0.429884358433714030, +-0.429929502094149930, -0.429974644679762540, -0.430019786190438070, -0.430064926626064210, -0.430110065986527960, -0.430155204271717000, -0.430200341481517590, -0.430245477615817380, +-0.430290612674503410, -0.430335746657463380, -0.430380879564583540, -0.430426011395751480, -0.430471142150854410, -0.430516271829779920, -0.430561400432414310, -0.430606527958645240, +-0.430651654408360170, -0.430696779781445660, -0.430741904077789120, -0.430787027297277860, -0.430832149439799420, -0.430877270505240220, -0.430922390493487850, -0.430967509404429520, +-0.431012627237952750, -0.431057743993944090, -0.431102859672291010, -0.431147974272880820, -0.431193087795601060, -0.431238200240338210, -0.431283311606979860, -0.431328421895413210, +-0.431373531105525900, -0.431418639237204420, -0.431463746290336290, -0.431508852264809170, -0.431553957160509590, -0.431599060977325030, -0.431644163715142910, -0.431689265373850720, +-0.431734365953334980, -0.431779465453483340, -0.431824563874183050, -0.431869661215321720, -0.431914757476785820, -0.431959852658463090, -0.432004946760240700, -0.432050039782006290, +-0.432095131723646440, -0.432140222585048750, -0.432185312366100530, -0.432230401066689360, -0.432275488686701850, -0.432320575226025570, -0.432365660684547900, -0.432410745062156430, +-0.432455828358737750, -0.432500910574179440, -0.432545991708369330, -0.432591071761193770, -0.432636150732540580, -0.432681228622296970, -0.432726305430350730, -0.432771381156588310, +-0.432816455800897450, -0.432861529363165410, -0.432906601843280000, -0.432951673241127650, -0.432996743556596120, -0.433041812789572710, -0.433086880939945180, -0.433131948007600080, +-0.433177013992425090, -0.433222078894307580, -0.433267142713135270, -0.433312205448794670, -0.433357267101173620, -0.433402327670159740, -0.433447387155639690, -0.433492445557501100, +-0.433537502875631480, -0.433582559109918440, -0.433627614260248650, -0.433672668326509800, -0.433717721308589270, -0.433762773206374850, -0.433807824019753100, -0.433852873748611810, +-0.433897922392838310, -0.433942969952320400, -0.433988016426944680, -0.434033061816598900, -0.434078106121170480, -0.434123149340547190, -0.434168191474615610, -0.434213232523263600, +-0.434258272486378880, -0.434303311363848090, -0.434348349155558980, -0.434393385861399030, -0.434438421481256000, -0.434483456015016530, -0.434528489462568450, -0.434573521823799100, +-0.434618553098596370, -0.434663583286846840, -0.434708612388438390, -0.434753640403258370, -0.434798667331194650, -0.434843693172133890, -0.434888717925963840, -0.434933741592572090, +-0.434978764171846280, -0.435023785663673220, -0.435068806067940680, -0.435113825384536580, -0.435158843613347450, -0.435203860754261210, -0.435248876807165340, -0.435293891771947660, +-0.435338905648494870, -0.435383918436694830, -0.435428930136434970, -0.435473940747603210, -0.435518950270086190, -0.435563958703771790, -0.435608966048547490, -0.435653972304301140, +-0.435698977470919510, -0.435743981548290420, -0.435788984536301380, -0.435833986434840280, -0.435878987243793810, -0.435923986963049850, -0.435968985592495970, -0.436013983132020000, +-0.436058979581508630, -0.436103974940849900, -0.436148969209931570, -0.436193962388640440, -0.436238954476864390, -0.436283945474490950, -0.436328935381408100, -0.436373924197502430, +-0.436418911922662020, -0.436463898556774310, -0.436508884099727210, -0.436553868551407540, -0.436598851911703220, -0.436643834180501730, -0.436688815357691050, -0.436733795443157990, +-0.436778774436790360, -0.436823752338475870, -0.436868729148102370, -0.436913704865556640, -0.436958679490726640, -0.437003653023500360, -0.437048625463764550, -0.437093596811407140, +-0.437138567066315760, -0.437183536228378360, -0.437228504297481720, -0.437273471273513850, -0.437318437156362260, -0.437363401945915000, -0.437408365642058870, -0.437453328244681750, +-0.437498289753671390, -0.437543250168915650, -0.437588209490301420, -0.437633167717716600, -0.437678124851048900, -0.437723080890186300, -0.437768035835015610, -0.437812989685424810, +-0.437857942441301940, -0.437902894102533800, -0.437947844669008430, -0.437992794140613480, -0.438037742517236930, -0.438082689798765580, -0.438127635985087580, -0.438172581076090420, +-0.438217525071662230, -0.438262467971689830, -0.438307409776061310, -0.438352350484664200, -0.438397290097386650, -0.438442228614115470, -0.438487166034738700, -0.438532102359144030, +-0.438577037587219500, -0.438621971718851980, -0.438666904753929500, -0.438711836692339760, -0.438756767533970860, -0.438801697278709660, -0.438846625926444190, -0.438891553477062550, +-0.438936479930451650, -0.438981405286499540, -0.439026329545093910, -0.439071252706122850, -0.439116174769473230, -0.439161095735033260, -0.439206015602690460, -0.439250934372333090, +-0.439295852043847970, -0.439340768617123180, -0.439385684092046480, -0.439430598468506020, -0.439475511746388600, -0.439520423925582440, -0.439565335005975220, -0.439610244987455050, +-0.439655153869908830, -0.439700061653224780, -0.439744968337290990, -0.439789873921994310, -0.439834778407223010, -0.439879681792864740, -0.439924584078807690, -0.439969485264938730, +-0.440014385351146060, -0.440059284337317500, -0.440104182223341080, -0.440149079009103770, -0.440193974694493840, -0.440238869279398930, -0.440283762763707230, -0.440328655147305740, +-0.440373546430082590, -0.440418436611925590, -0.440463325692722950, -0.440508213672361540, -0.440553100550729600, -0.440597986327715300, -0.440642871003205650, -0.440687754577088860, +-0.440732637049252640, -0.440777518419585230, -0.440822398687973630, -0.440867277854306020, -0.440912155918470220, -0.440957032880354480, -0.441001908739845680, -0.441046783496832180, +-0.441091657151201690, -0.441136529702842450, -0.441181401151641450, -0.441226271497487000, -0.441271140740266850, -0.441316008879869270, -0.441360875916181280, -0.441405741849091090, +-0.441450606678486900, -0.441495470404255850, -0.441540333026286090, -0.441585194544465490, -0.441630054958682350, -0.441674914268823600, -0.441719772474777620, -0.441764629576432200, +-0.441809485573675610, -0.441854340466394880, -0.441899194254478320, -0.441944046937813810, -0.441988898516289530, -0.442033748989792640, -0.442078598358211340, -0.442123446621433550, +-0.442168293779347580, -0.442213139831840460, -0.442257984778800460, -0.442302828620115550, -0.442347671355673930, -0.442392512985362750, -0.442437353509070260, -0.442482192926684780, +-0.442527031238093450, -0.442571868443184580, -0.442616704541845980, -0.442661539533966030, -0.442706373419431810, -0.442751206198131690, -0.442796037869953580, -0.442840868434785710, +-0.442885697892515310, -0.442930526243030640, -0.442975353486219690, -0.443020179621970770, -0.443065004650170960, -0.443109828570708630, -0.443154651383471760, -0.443199473088348620, +-0.443244293685226440, -0.443289113173993500, -0.443333931554538210, -0.443378748826747660, -0.443423564990510280, -0.443468380045713930, -0.443513193992247030, -0.443558006829996800, +-0.443602818558851530, -0.443647629178699210, -0.443692438689428200, -0.443737247090925710, -0.443782054383080100, -0.443826860565779360, -0.443871665638911890, -0.443916469602364800, +-0.443961272456026570, -0.444006074199785160, -0.444050874833528950, -0.444095674357145200, -0.444140472770522210, -0.444185270073548470, -0.444230066266111110, -0.444274861348098630, +-0.444319655319398990, -0.444364448179900620, -0.444409239929490720, -0.444454030568057710, -0.444498820095489630, -0.444543608511674900, -0.444588395816500730, -0.444633182009855580, +-0.444677967091627490, -0.444722751061704890, -0.444767533919974980, -0.444812315666326290, -0.444857096300646740, -0.444901875822824920, -0.444946654232747980, -0.444991431530304400, +-0.445036207715382210, -0.445080982787869950, -0.445125756747654810, -0.445170529594625270, -0.445215301328669820, -0.445260071949675760, -0.445304841457531460, -0.445349609852125070, +-0.445394377133345070, -0.445439143301078700, -0.445483908355214510, -0.445528672295640530, -0.445573435122245230, -0.445618196834915990, -0.445662957433541280, -0.445707716918009140, +-0.445752475288208110, -0.445797232544025480, -0.445841988685349800, -0.445886743712069160, -0.445931497624072030, -0.445976250421245720, -0.446021002103478840, -0.446065752670659840, +-0.446110502122676060, -0.446155250459416010, -0.446199997680767850, -0.446244743786620100, -0.446289488776860090, -0.446334232651376340, -0.446378975410057060, -0.446423717052790660, +-0.446468457579464630, -0.446513196989967440, -0.446557935284187250, -0.446602672462012630, -0.446647408523330900, -0.446692143468030710, -0.446736877296000090, -0.446781610007127740, +-0.446826341601300910, -0.446871072078408260, -0.446915801438338310, -0.446960529680978490, -0.447005256806217330, -0.447049982813943040, -0.447094707704044190, -0.447139431476408170, +-0.447184154130923550, -0.447228875667478540, -0.447273596085961730, -0.447318315386260600, -0.447363033568263620, -0.447407750631859060, -0.447452466576935550, -0.447497181403380460, +-0.447541895111082440, -0.447586607699929640, -0.447631319169810750, -0.447676029520613140, -0.447720738752225510, -0.447765446864536340, -0.447810153857433220, -0.447854859730804740, +-0.447899564484539050, -0.447944268118524890, -0.447988970632649640, -0.448033672026801940, -0.448078372300870110, -0.448123071454742730, -0.448167769488307280, -0.448212466401452400, +-0.448257162194066310, -0.448301856866037800, -0.448346550417254190, -0.448391242847604180, -0.448435934156976130, -0.448480624345258590, -0.448525313412339140, -0.448570001358106370, +-0.448614688182448600, -0.448659373885254510, -0.448704058466411590, -0.448748741925808550, -0.448793424263334020, -0.448838105478875540, -0.448882785572321810, -0.448927464543561080, +-0.448972142392482120, -0.449016819118972400, -0.449061494722920620, -0.449106169204215140, -0.449150842562744570, -0.449195514798396590, -0.449240185911059740, -0.449284855900622450, +-0.449329524766973410, -0.449374192510000160, -0.449418859129591450, -0.449463524625635600, -0.449508188998021310, -0.449552852246636160, -0.449597514371368910, -0.449642175372108210, +-0.449686835248741700, -0.449731494001158140, -0.449776151629245780, -0.449820808132893490, -0.449865463511988750, -0.449910117766420370, -0.449954770896076720, -0.449999422900846490, +-0.450044073780617340, -0.450088723535277960, -0.450133372164716830, -0.450178019668822650, -0.450222666047483010, -0.450267311300586730, -0.450311955428022100, -0.450356598429678070, +-0.450401240305442100, -0.450445881055203000, -0.450490520678849650, -0.450535159176269630, -0.450579796547351640, -0.450624432791984160, -0.450669067910056060, -0.450713701901454820, +-0.450758334766069360, -0.450802966503788090, -0.450847597114499730, -0.450892226598092080, -0.450936854954453790, -0.450981482183473390, -0.451026108285039640, -0.451070733259040290, +-0.451115357105364050, -0.451159979823899440, -0.451204601414535280, -0.451249221877159210, -0.451293841211660110, -0.451338459417926390, -0.451383076495846910, -0.451427692445309340, +-0.451472307266202580, -0.451516920958415390, -0.451561533521835530, -0.451606144956351820, -0.451650755261852780, -0.451695364438227220, -0.451739972485362910, -0.451784579403148590, +-0.451829185191472860, -0.451873789850224580, -0.451918393379291410, -0.451962995778562250, -0.452007597047925590, -0.452052197187270350, -0.452096796196484240, -0.452141394075456120, +-0.452185990824074510, -0.452230586442228300, -0.452275180929805290, -0.452319774286694290, -0.452364366512784220, -0.452408957607962900, -0.452453547572119140, -0.452498136405141530, +-0.452542724106918980, -0.452587310677339210, -0.452631896116291180, -0.452676480423663370, -0.452721063599344830, -0.452765645643223190, -0.452810226555187430, -0.452854806335126090, +-0.452899384982928140, -0.452943962498481350, -0.452988538881674670, -0.453033114132396610, -0.453077688250536180, -0.453122261235981090, -0.453166833088620380, -0.453211403808343020, +-0.453255973395036700, -0.453300541848590480, -0.453345109168892870, -0.453389675355832910, -0.453434240409298360, -0.453478804329178200, -0.453523367115361060, -0.453567928767735880, +-0.453612489286190470, -0.453657048670613850, -0.453701606920894620, -0.453746164036921750, -0.453790720018583060, -0.453835274865767580, -0.453879828578363950, -0.453924381156261100, +-0.453968932599346900, -0.454013482907510420, -0.454058032080640610, -0.454102580118625310, -0.454147127021353510, -0.454191672788713970, -0.454236217420595610, -0.454280760916886350, +-0.454325303277475110, -0.454369844502250650, -0.454414384591102010, -0.454458923543916980, -0.454503461360584670, -0.454547998040993660, -0.454592533585033100, -0.454637067992590740, +-0.454681601263555780, -0.454726133397816810, -0.454770664395262870, -0.454815194255781870, -0.454859722979262910, -0.454904250565594640, -0.454948777014666130, -0.454993302326365310, +-0.455037826500581220, -0.455082349537202950, -0.455126871436118410, -0.455171392197216700, -0.455215911820386450, -0.455260430305516880, -0.455304947652495850, -0.455349463861212440, +-0.455393978931555370, -0.455438492863413700, -0.455483005656675430, -0.455527517311229700, -0.455572027826965150, -0.455616537203770880, -0.455661045441534910, -0.455705552540146330, +-0.455750058499493850, -0.455794563319466610, -0.455839066999952580, -0.455883569540840920, -0.455928070942020700, -0.455972571203379860, -0.456017070324807650, -0.456061568306192770, +-0.456106065147424360, -0.456150560848390340, -0.456195055408979980, -0.456239548829081960, -0.456284041108585450, -0.456328532247378460, -0.456373022245350150, -0.456417511102389260, +-0.456461998818385010, -0.456506485393225360, -0.456550970826799460, -0.456595455118996190, -0.456639938269704610, -0.456684420278812840, -0.456728901146210010, -0.456773380871785370, +-0.456817859455426800, -0.456862336897023660, -0.456906813196464590, -0.456951288353638960, -0.456995762368434700, -0.457040235240741000, -0.457084706970446730, -0.457129177557441090, +-0.457173647001612120, -0.457218115302849000, -0.457262582461040620, -0.457307048476076170, -0.457351513347843690, -0.457395977076232470, -0.457440439661131240, -0.457484901102429340, +-0.457529361400014820, -0.457573820553776880, -0.457618278563604370, -0.457662735429386620, -0.457707191151011550, -0.457751645728368570, -0.457796099161346840, -0.457840551449834490, +-0.457885002593720720, -0.457929452592894470, -0.457973901447244980, -0.458018349156660340, -0.458062795721029810, -0.458107241140242320, -0.458151685414187100, -0.458196128542752320, +-0.458240570525827170, -0.458285011363300580, -0.458329451055061900, -0.458373889600999170, -0.458418327001001770, -0.458462763254958490, -0.458507198362758720, -0.458551632324290530, +-0.458596065139443290, -0.458640496808106310, -0.458684927330167640, -0.458729356705516680, -0.458773784934042310, -0.458818212015633890, -0.458862637950179560, -0.458907062737568590, +-0.458951486377690010, -0.458995908870433070, -0.459040330215686020, -0.459084750413338070, -0.459129169463278310, -0.459173587365395990, -0.459218004119579300, -0.459262419725717570, +-0.459306834183699890, -0.459351247493415440, -0.459395659654752490, -0.459440070667600400, -0.459484480531848540, -0.459528889247385050, -0.459573296814099360, -0.459617703231880390, +-0.459662108500617620, -0.459706512620199130, -0.459750915590514400, -0.459795317411452350, -0.459839718082902470, -0.459884117604752840, -0.459928515976892880, -0.459972913199211690, +-0.460017309271598620, -0.460061704193941820, -0.460106097966130830, -0.460150490588054570, -0.460194882059602460, -0.460239272380662760, -0.460283661551124880, -0.460328049570878250, +-0.460372436439811070, -0.460416822157812820, -0.460461206724772530, -0.460505590140579620, -0.460549972405122300, -0.460594353518290090, -0.460638733479971970, -0.460683112290057430, +-0.460727489948434710, -0.460771866454993300, -0.460816241809622160, -0.460860616012210840, -0.460904989062647600, -0.460949360960821840, -0.460993731706622720, -0.461038101299939660, +-0.461082469740660970, -0.461126837028676070, -0.461171203163874110, -0.461215568146144510, -0.461259931975375570, -0.461304294651456840, -0.461348656174277780, -0.461393016543726660, +-0.461437375759693010, -0.461481733822065920, -0.461526090730734860, -0.461570446485588200, -0.461614801086515480, -0.461659154533405670, -0.461703506826148410, -0.461747857964632020, +-0.461792207948745930, -0.461836556778379310, -0.461880904453421730, -0.461925250973761530, -0.461969596339288140, -0.462013940549890760, -0.462058283605458970, -0.462102625505881050, +-0.462146966251046560, -0.462191305840845060, -0.462235644275164890, -0.462279981553895600, -0.462324317676926390, -0.462368652644146780, -0.462412986455445100, -0.462457319110710970, +-0.462501650609833560, -0.462545980952702440, -0.462590310139205930, -0.462634638169233670, -0.462678965042674810, -0.462723290759418930, -0.462767615319354400, -0.462811938722370860, +-0.462856260968357470, -0.462900582057203800, -0.462944901988798340, -0.462989220763030560, -0.463033538379790170, -0.463077854838965520, -0.463122170140446210, -0.463166484284121550, +-0.463210797269881010, -0.463255109097613080, -0.463299419767207400, -0.463343729278553160, -0.463388037631540020, -0.463432344826056330, -0.463476650861991860, -0.463520955739235680, +-0.463565259457677570, -0.463609562017205880, -0.463653863417710310, -0.463698163659080060, -0.463742462741204790, -0.463786760663973010, -0.463831057427274320, -0.463875353030997920, +-0.463919647475033610, -0.463963940759269720, -0.464008232883596050, -0.464052523847902130, -0.464096813652076560, -0.464141102296008910, -0.464185389779588560, -0.464229676102705100, +-0.464273961265247060, -0.464318245267104080, -0.464362528108165530, -0.464406809788321050, -0.464451090307459120, -0.464495369665469500, -0.464539647862241440, -0.464583924897664650, +-0.464628200771627640, -0.464672475484020130, -0.464716749034731480, -0.464761021423651330, -0.464805292650668220, -0.464849562715671900, -0.464893831618552020, -0.464938099359197220, +-0.464982365937497140, -0.465026631353341160, -0.465070895606618960, -0.465115158697219200, -0.465159420625031460, -0.465203681389945220, -0.465247940991850180, -0.465292199430634880, +-0.465336456706189060, -0.465380712818402100, -0.465424967767163800, -0.465469221552362640, -0.465513474173888440, -0.465557725631630560, -0.465601975925478750, -0.465646225055321610, +-0.465690473021048930, -0.465734719822550440, -0.465778965459714760, -0.465823209932431650, -0.465867453240590530, -0.465911695384081170, -0.465955936362792200, -0.466000176176613320, +-0.466044414825434070, -0.466088652309144150, -0.466132888627632250, -0.466177123780788070, -0.466221357768501100, -0.466265590590661140, -0.466309822247156780, -0.466354052737877890, +-0.466398282062713830, -0.466442510221554530, -0.466486737214288520, -0.466530963040805660, -0.466575187700995820, -0.466619411194747590, -0.466663633521950840, -0.466707854682494980, +-0.466752074676269890, -0.466796293503164210, -0.466840511163067850, -0.466884727655870190, -0.466928942981461090, -0.466973157139729200, -0.467017370130564490, -0.467061581953856330, +-0.467105792609494590, -0.467150002097368010, -0.467194210417366360, -0.467238417569379230, -0.467282623553296470, -0.467326828369006740, -0.467371032016399900, -0.467415234495365540, +-0.467459435805793470, -0.467503635947572380, -0.467547834920592260, -0.467592032724742920, -0.467636229359913110, -0.467680424825992700, -0.467724619122871220, -0.467768812250438650, +-0.467813004208583630, -0.467857194997196080, -0.467901384616165540, -0.467945573065381930, -0.467989760344734000, -0.468033946454111670, -0.468078131393404480, -0.468122315162502360, +-0.468166497761294040, -0.468210679189669520, -0.468254859447518270, -0.468299038534730260, -0.468343216451194260, -0.468387393196800230, -0.468431568771438100, -0.468475743174996680, +-0.468519916407365900, -0.468564088468435280, -0.468608259358094910, -0.468652429076233450, -0.468696597622740910, -0.468740764997506890, -0.468784931200421360, -0.468829096231373090, +-0.468873260090252100, -0.468917422776947920, -0.468961584291350600, -0.469005744633348930, -0.469049903802832900, -0.469094061799692150, -0.469138218623816610, -0.469182374275095070, +-0.469226528753417640, -0.469270682058674340, -0.469314834190753870, -0.469358985149546330, -0.469403134934941350, -0.469447283546828910, -0.469491430985097820, -0.469535577249638240, +-0.469579722340339620, -0.469623866257092180, -0.469668008999784610, -0.469712150568307060, -0.469756290962549120, -0.469800430182400860, -0.469844568227751110, -0.469888705098489960, +-0.469932840794507030, -0.469976975315692440, -0.470021108661934970, -0.470065240833124730, -0.470109371829151410, -0.470153501649905050, -0.470197630295274500, -0.470241757765149930, +-0.470285884059421340, -0.470330009177977630, -0.470374133120708910, -0.470418255887504850, -0.470462377478255590, -0.470506497892849930, -0.470550617131178070, -0.470594735193129670, +-0.470638852078594790, -0.470682967787462380, -0.470727082319622570, -0.470771195674965060, -0.470815307853379940, -0.470859418854756180, -0.470903528678983880, -0.470947637325952740, +-0.470991744795552890, -0.471035851087673320, -0.471079956202204050, -0.471124060139035350, -0.471168162898056080, -0.471212264479156430, -0.471256364882226110, -0.471300464107155260, +-0.471344562153832860, -0.471388659022149050, -0.471432754711993580, -0.471476849223256610, -0.471520942555827160, -0.471565034709595320, -0.471609125684450960, -0.471653215480284100, +-0.471697304096983850, -0.471741391534440340, -0.471785477792543320, -0.471829562871183050, -0.471873646770248460, -0.471917729489629730, -0.471961811029217080, -0.472005891388899480, +-0.472049970568567230, -0.472094048568109990, -0.472138125387418010, -0.472182201026380370, -0.472226275484887210, -0.472270348762828360, -0.472314420860094060, -0.472358491776573300, +-0.472402561512156260, -0.472446630066732880, -0.472490697440193290, -0.472534763632426580, -0.472578828643322960, -0.472622892472772230, -0.472666955120664700, -0.472711016586889410, +-0.472755076871336500, -0.472799135973895950, -0.472843193894457950, -0.472887250632911590, -0.472931306189147080, -0.472975360563054730, -0.473019413754523550, -0.473063465763443820, +-0.473107516589705460, -0.473151566233198710, -0.473195614693812660, -0.473239661971437520, -0.473283708065963260, -0.473327752977280140, -0.473371796705277180, -0.473415839249844760, +-0.473459880610872800, -0.473503920788251490, -0.473547959781869980, -0.473591997591618520, -0.473636034217387150, -0.473680069659066060, -0.473724103916544400, -0.473768136989712490, +-0.473812168878460560, -0.473856199582677880, -0.473900229102254710, -0.473944257437080960, -0.473988284587046950, -0.474032310552041870, -0.474076335331955980, -0.474120358926679250, +-0.474164381336102000, -0.474208402560113430, -0.474252422598603840, -0.474296441451463210, -0.474340459118581860, -0.474384475599848980, -0.474428490895154880, -0.474472505004389590, +-0.474516517927443430, -0.474560529664205530, -0.474604540214566380, -0.474648549578416230, -0.474692557755644280, -0.474736564746141010, -0.474780570549796280, -0.474824575166500560, +-0.474868578596142950, -0.474912580838613930, -0.474956581893803460, -0.475000581761601930, -0.475044580441898510, -0.475088577934583700, -0.475132574239547410, -0.475176569356680070, +-0.475220563285870920, -0.475264556027010400, -0.475308547579988470, -0.475352537944695560, -0.475396527121020870, -0.475440515108854930, -0.475484501908088050, -0.475528487518609540, +-0.475572471940309830, -0.475616455173078930, -0.475660437216807230, -0.475704418071384140, -0.475748397736699910, -0.475792376212644750, -0.475836353499109020, -0.475880329595982030, +-0.475924304503154210, -0.475968278220515630, -0.476012250747956720, -0.476056222085366800, -0.476100192232636330, -0.476144161189655410, -0.476188128956314460, -0.476232095532502790, +-0.476276060918110870, -0.476320025113028790, -0.476363988117147090, -0.476407949930355010, -0.476451910552543050, -0.476495869983601660, -0.476539828223420280, -0.476583785271889270, +-0.476627741128898830, -0.476671695794339430, -0.476715649268100390, -0.476759601550072190, -0.476803552640145010, -0.476847502538209340, -0.476891451244154550, -0.476935398757871110, +-0.476979345079249220, -0.477023290208179300, -0.477067234144550770, -0.477111176888254160, -0.477155118439179630, -0.477199058797217690, -0.477242997962257660, -0.477286935934190190, +-0.477330872712905750, -0.477374808298293760, -0.477418742690244760, -0.477462675888648880, -0.477506607893396660, -0.477550538704377580, -0.477594468321482170, -0.477638396744600570, +-0.477682323973623370, -0.477726250008439930, -0.477770174848940910, -0.477814098495016440, -0.477858020946557100, -0.477901942203452330, -0.477945862265592710, -0.477989781132868440, +-0.478033698805170100, -0.478077615282387130, -0.478121530564410090, -0.478165444651129650, -0.478209357542435210, -0.478253269238217370, -0.478297179738366330, -0.478341089042772730, +-0.478384997151326040, -0.478428904063916860, -0.478472809780435440, -0.478516714300772360, -0.478560617624817110, -0.478604519752460320, -0.478648420683592200, -0.478692320418103450, +-0.478736218955883470, -0.478780116296822990, -0.478824012440812240, -0.478867907387741760, -0.478911801137501200, -0.478955693689981140, -0.478999585045071790, -0.479043475202663880, +-0.479087364162646910, -0.479131251924911570, -0.479175138489348450, -0.479219023855847080, -0.479262908024298160, -0.479306790994591950, -0.479350672766619190, -0.479394553340269370, +-0.479438432715433130, -0.479482310892000830, -0.479526187869863120, -0.479570063648909530, -0.479613938229030810, -0.479657811610117280, -0.479701683792059570, -0.479745554774747280, +-0.479789424558071110, -0.479833293141921360, -0.479877160526188730, -0.479921026710762870, -0.479964891695534410, -0.480008755480394120, -0.480052618065231580, -0.480096479449937440, +-0.480140339634402170, -0.480184198618516360, -0.480228056402169760, -0.480271912985252960, -0.480315768367656380, -0.480359622549270780, -0.480403475529985690, -0.480447327309691970, +-0.480491177888279890, -0.480535027265640290, -0.480578875441662720, -0.480622722416237940, -0.480666568189256400, -0.480710412760608770, -0.480754256130184800, -0.480798098297875120, +-0.480841939263570610, -0.480885779027160840, -0.480929617588536640, -0.480973454947588420, -0.481017291104206930, -0.481061126058281830, -0.481104959809703910, -0.481148792358363550, +-0.481192623704151670, -0.481236453846957790, -0.481280282786672790, -0.481324110523187130, -0.481367937056391530, -0.481411762386175670, -0.481455586512430480, -0.481499409435046270, +-0.481543231153913950, -0.481587051668923130, -0.481630870979964710, -0.481674689086929510, -0.481718505989707220, -0.481762321688188610, -0.481806136182264200, -0.481849949471824910, +-0.481893761556760280, -0.481937572436961280, -0.481981382112318340, -0.482025190582722360, -0.482068997848062950, -0.482112803908231080, -0.482156608763117220, -0.482200412412612240, +-0.482244214856605790, -0.482288016094988840, -0.482331816127651860, -0.482375614954485670, -0.482419412575380120, -0.482463208990225990, -0.482507004198913850, -0.482550798201334620, +-0.482594590997377950, -0.482638382586934870, -0.482682172969896180, -0.482725962146151650, -0.482769750115592260, -0.482813536878108460, -0.482857322433591250, -0.482901106781930320, +-0.482944889923016600, -0.482988671856740660, -0.483032452582993430, -0.483076232101664730, -0.483120010412645410, -0.483163787515826060, -0.483207563411097660, -0.483251338098349910, +-0.483295111577473850, -0.483338883848360050, -0.483382654910899380, -0.483426424764981710, -0.483470193410497960, -0.483513960847339110, -0.483557727075394960, -0.483601492094556500, +-0.483645255904714300, -0.483689018505759400, -0.483732779897581510, -0.483776540080071700, -0.483820299053120520, -0.483864056816619040, -0.483907813370456960, -0.483951568714525380, +-0.483995322848714880, -0.484039075772916440, -0.484082827487019920, -0.484126577990916350, -0.484170327284496330, -0.484214075367650880, -0.484257822240269860, -0.484301567902244270, +-0.484345312353465170, -0.484389055593822390, -0.484432797623206960, -0.484476538441509560, -0.484520278048621190, -0.484564016444431760, -0.484607753628832240, -0.484651489601713340, +-0.484695224362966140, -0.484738957912480510, -0.484782690250147420, -0.484826421375857630, -0.484870151289502230, -0.484913879990970960, -0.484957607480155100, -0.485001333756945150, +-0.485045058821232280, -0.485088782672906340, -0.485132505311858480, -0.485176226737979330, -0.485219946951160050, -0.485263665951290450, -0.485307383738261770, -0.485351100311964930, +-0.485394815672289980, -0.485438529819128000, -0.485482242752369730, -0.485525954471906160, -0.485569664977627380, -0.485613374269424410, -0.485657082347188070, -0.485700789210809340, +-0.485744494860178290, -0.485788199295185960, -0.485831902515723170, -0.485875604521680990, -0.485919305312949410, -0.485963004889419570, -0.486006703250982220, -0.486050400397528500, +-0.486094096328948400, -0.486137791045133050, -0.486181484545973600, -0.486225176831360070, -0.486268867901183570, -0.486312557755334940, -0.486356246393705280, -0.486399933816184630, +-0.486443620022664110, -0.486487305013034610, -0.486530988787187150, -0.486574671345011870, -0.486618352686399910, -0.486662032811242100, -0.486705711719429560, -0.486749389410852380, +-0.486793065885401720, -0.486836741142968380, -0.486880415183443550, -0.486924088006717330, -0.486967759612680910, -0.487011430001225430, -0.487055099172241050, -0.487098767125618890, +-0.487142433861249780, -0.487186099379025020, -0.487229763678834580, -0.487273426760569780, -0.487317088624121380, -0.487360749269380670, -0.487404408696237690, -0.487448066904583640, +-0.487491723894309500, -0.487535379665306410, -0.487579034217464460, -0.487622687550674950, -0.487666339664828700, -0.487709990559817010, -0.487753640235529920, -0.487797288691858790, +-0.487840935928694760, -0.487884581945928040, -0.487928226743449880, -0.487971870321151140, -0.488015512678923120, -0.488059153816655930, -0.488102793734240810, -0.488146432431568740, +-0.488190069908530980, -0.488233706165017660, -0.488277341200920090, -0.488320975016129140, -0.488364607610536130, -0.488408238984031240, -0.488451869136505730, -0.488495498067850590, +-0.488539125777957050, -0.488582752266715330, -0.488626377534016720, -0.488670001579752160, -0.488713624403813000, -0.488757246006089390, -0.488800866386472630, -0.488844485544854160, +-0.488888103481124050, -0.488931720195173670, -0.488975335686894000, -0.489018949956176400, -0.489062563002911010, -0.489106174826989200, -0.489149785428302010, -0.489193394806740680, +-0.489237002962195520, -0.489280609894557790, -0.489324215603718640, -0.489367820089569250, -0.489411423351999940, -0.489455025390902130, -0.489498626206166690, -0.489542225797685080, +-0.489585824165347520, -0.489629421309045410, -0.489673017228670180, -0.489716611924111980, -0.489760205395262220, -0.489803797642011980, -0.489847388664252650, -0.489890978461874400, +-0.489934567034768730, -0.489978154382826660, -0.490021740505939610, -0.490065325403997780, -0.490108909076892640, -0.490152491524515290, -0.490196072746757030, -0.490239652743508230, +-0.490283231514660300, -0.490326809060104290, -0.490370385379731600, -0.490413960473432610, -0.490457534341098730, -0.490501106982621340, -0.490544678397890840, -0.490588248586798670, +-0.490631817549235850, -0.490675385285093860, -0.490718951794263000, -0.490762517076634820, -0.490806081132100340, -0.490849643960550970, -0.490893205561877160, -0.490936765935970350, +-0.490980325082721600, -0.491023883002022430, -0.491067439693763150, -0.491110995157835300, -0.491154549394129950, -0.491198102402538640, -0.491241654182951630, -0.491285204735260550, +-0.491328754059356390, -0.491372302155130780, -0.491415849022474040, -0.491459394661277640, -0.491502939071433160, -0.491546482252830930, -0.491590024205362520, -0.491633564928919020, +-0.491677104423392020, -0.491720642688671830, -0.491764179724650090, -0.491807715531217880, -0.491851250108266750, -0.491894783455687100, -0.491938315573370530, -0.491981846461208180, +-0.492025376119091580, -0.492068904546911160, -0.492112431744558430, -0.492155957711924660, -0.492199482448901380, -0.492243005955379010, -0.492286528231249130, -0.492330049276403340, +-0.492373569090731990, -0.492417087674126730, -0.492460605026478760, -0.492504121147679660, -0.492547636037619860, -0.492591149696191000, -0.492634662123284270, -0.492678173318791210, +-0.492721683282602410, -0.492765192014609330, -0.492808699514703350, -0.492852205782775940, -0.492895710818717640, -0.492939214622420070, -0.492982717193774510, -0.493026218532672480, +-0.493069718639004560, -0.493113217512662290, -0.493156715153537430, -0.493200211561520330, -0.493243706736502750, -0.493287200678375890, -0.493330693387031390, -0.493374184862359840, +-0.493417675104252770, -0.493461164112601490, -0.493504651887297750, -0.493548138428231980, -0.493591623735295800, -0.493635107808380660, -0.493678590647378070, -0.493722072252178620, +-0.493765552622674020, -0.493809031758755510, -0.493852509660314800, -0.493895986327242460, -0.493939461759430150, -0.493982935956769560, -0.494026408919151280, -0.494069880646466950, +-0.494113351138607880, -0.494156820395465880, -0.494200288416931420, -0.494243755202896210, -0.494287220753251650, -0.494330685067889410, -0.494374148146700050, -0.494417609989575350, +-0.494461070596406650, -0.494504529967085600, -0.494547988101502910, -0.494591444999550210, -0.494634900661118870, -0.494678355086100700, -0.494721808274386280, -0.494765260225867310, +-0.494808710940435160, -0.494852160417981630, -0.494895608658397320, -0.494939055661574030, -0.494982501427403470, -0.495025945955776260, -0.495069389246584170, -0.495112831299718610, +-0.495156272115071350, -0.495199711692533070, -0.495243150031995480, -0.495286587133350000, -0.495330022996488480, -0.495373457621301470, -0.495416891007680830, -0.495460323155517970, +-0.495503754064704700, -0.495547183735131620, -0.495590612166690650, -0.495634039359273080, -0.495677465312770850, -0.495720890027074530, -0.495764313502076000, -0.495807735737667070, +-0.495851156733738420, -0.495894576490181930, -0.495937995006888900, -0.495981412283751370, -0.496024828320659860, -0.496068243117506250, -0.496111656674182110, -0.496155068990579150, +-0.496198480066588180, -0.496241889902101000, -0.496285298497009090, -0.496328705851204310, -0.496372111964577370, -0.496415516837020180, -0.496458920468424160, -0.496502322858681230, +-0.496545724007682150, -0.496589123915318730, -0.496632522581482880, -0.496675920006065360, -0.496719316188958040, -0.496762711130052380, -0.496806104829240370, -0.496849497286412760, +-0.496892888501461350, -0.496936278474277680, -0.496979667204753780, -0.497023054692780300, -0.497066440938249140, -0.497109825941051960, -0.497153209701080510, -0.497196592218225710, +-0.497239973492379420, -0.497283353523433220, -0.497326732311278940, -0.497370109855807540, -0.497413486156910830, -0.497456861214480350, -0.497500235028408180, -0.497543607598585010, +-0.497586978924902830, -0.497630349007253560, -0.497673717845528050, -0.497717085439618230, -0.497760451789415750, -0.497803816894812460, -0.497847180755699280, -0.497890543371968140, +-0.497933904743510620, -0.497977264870218760, -0.498020623751983360, -0.498063981388696340, -0.498107337780249400, -0.498150692926534520, -0.498194046827442500, -0.498237399482865380, +-0.498280750892694750, -0.498324101056822680, -0.498367449975139880, -0.498410797647538540, -0.498454144073910530, -0.498497489254146780, -0.498540833188139350, -0.498584175875779800, +-0.498627517316960200, -0.498670857511571420, -0.498714196459505540, -0.498757534160654100, -0.498800870614909240, -0.498844205822161820, -0.498887539782303880, -0.498930872495227110, +-0.498974203960823540, -0.499017534178984090, -0.499060863149600740, -0.499104190872565300, -0.499147517347769740, -0.499190842575104990, -0.499234166554463180, -0.499277489285736290, +-0.499320810768815290, -0.499364131003592340, -0.499407449989958950, -0.499450767727807390, -0.499494084217028510, -0.499537399457514460, -0.499580713449156830, -0.499624026191847870, +-0.499667337685478440, -0.499710647929940630, -0.499753956925126250, -0.499797264670927330, -0.499840571167234900, -0.499883876413941000, -0.499927180410937420, -0.499970483158116320, +-0.500013784655368610, -0.500057084902586380, -0.500100383899661830, -0.500143681646486040, -0.500186978142950990, -0.500230273388948430, -0.500273567384370680, -0.500316860129108480, +-0.500360151623054250, -0.500403441866099640, -0.500446730858136730, -0.500490018599056730, -0.500533305088751600, -0.500576590327113210, -0.500619874314033760, -0.500663157049404230, +-0.500706438533116690, -0.500749718765063250, -0.500792997745135750, -0.500836275473225400, -0.500879551949224400, -0.500922827173024500, -0.500966101144518010, -0.501009373863595790, +-0.501052645330150150, -0.501095915544073290, -0.501139184505256190, -0.501182452213591150, -0.501225718668970030, -0.501268983871285050, -0.501312247820427160, -0.501355510516288570, +-0.501398771958761370, -0.501442032147737530, -0.501485291083108240, -0.501528548764765710, -0.501571805192601810, -0.501615060366508710, -0.501658314286377640, -0.501701566952100890, +-0.501744818363570100, -0.501788068520677700, -0.501831317423314660, -0.501874565071373400, -0.501917811464746120, -0.501961056603323910, -0.502004300486999070, -0.502047543115663460, +-0.502090784489209300, -0.502134024607527870, -0.502177263470511390, -0.502220501078051830, -0.502263737430041270, -0.502306972526371020, -0.502350206366933390, -0.502393438951620140, +-0.502436670280323790, -0.502479900352935330, -0.502523129169347160, -0.502566356729451050, -0.502609583033139520, -0.502652808080303660, -0.502696031870835780, -0.502739254404628190, +-0.502782475681572080, -0.502825695701559770, -0.502868914464483230, -0.502912131970234770, -0.502955348218705580, -0.502998563209788090, -0.503041776943374150, -0.503084989419356200, +-0.503128200637625310, -0.503171410598073910, -0.503214619300594080, -0.503257826745078020, -0.503301032931417040, -0.503344237859503440, -0.503387441529229320, -0.503430643940486870, +-0.503473845093167500, -0.503517044987163540, -0.503560243622366840, -0.503603440998670050, -0.503646637115964250, -0.503689831974141860, -0.503733025573095180, -0.503776217912715650, +-0.503819408992895570, -0.503862598813526910, -0.503905787374502200, -0.503948974675712650, -0.503992160717050550, -0.504035345498408120, -0.504078529019677760, -0.504121711280750670, +-0.504164892281519280, -0.504208072021875680, -0.504251250501712270, -0.504294427720920260, -0.504337603679392290, -0.504380778377020330, -0.504423951813696700, -0.504467123989312930, +-0.504510294903761310, -0.504553464556934280, -0.504596632948723260, -0.504639800079020650, -0.504682965947718550, -0.504726130554709380, -0.504769293899884450, -0.504812455983136400, +-0.504855616804357200, -0.504898776363439270, -0.504941934660274040, -0.504985091694754030, -0.505028247466771220, -0.505071401976218250, -0.505114555222986320, -0.505157707206968070, +-0.505200857928055470, -0.505244007386141170, -0.505287155581116370, -0.505330302512873810, -0.505373448181305810, -0.505416592586303780, -0.505459735727760370, -0.505502877605567560, +-0.505546018219617980, -0.505589157569802940, -0.505632295656014970, -0.505675432478146280, -0.505718568036089390, -0.505761702329735720, -0.505804835358977800, -0.505847967123707720, +-0.505891097623818230, -0.505934226859200530, -0.505977354829747260, -0.506020481535350620, -0.506063606975903140, -0.506106731151296340, -0.506149854061422650, -0.506192975706174720, +-0.506236096085443950, -0.506279215199122890, -0.506322333047103830, -0.506365449629279430, -0.506408564945540870, -0.506451678995781030, -0.506494791779891870, -0.506537903297766160, +-0.506581013549295300, -0.506624122534371950, -0.506667230252888290, -0.506710336704736970, -0.506753441889809310, -0.506796545807998160, -0.506839648459195600, -0.506882749843294290, +-0.506925849960185640, -0.506968948809762510, -0.507012046391916990, -0.507055142706541620, -0.507098237753528140, -0.507141331532768970, -0.507184424044156980, -0.507227515287583360, +-0.507270605262941100, -0.507313693970122270, -0.507356781409019630, -0.507399867579524600, -0.507442952481529930, -0.507486036114927930, -0.507529118479611130, -0.507572199575471170, +-0.507615279402400810, -0.507658357960292130, -0.507701435249037990, -0.507744511268529930, -0.507787586018660480, -0.507830659499322160, -0.507873731710407510, -0.507916802651808160, +-0.507959872323416880, -0.508002940725126200, -0.508046007856827850, -0.508089073718414390, -0.508132138309778330, -0.508175201630812310, -0.508218263681407880, -0.508261324461457780, +-0.508304383970854420, -0.508347442209490460, -0.508390499177257430, -0.508433554874048290, -0.508476609299755130, -0.508519662454270940, -0.508562714337487120, -0.508605764949296550, +-0.508648814289591630, -0.508691862358265020, -0.508734909155208360, -0.508777954680314390, -0.508820998933475880, -0.508864041914584560, -0.508907083623533210, -0.508950124060214000, +-0.508993163224519930, -0.509036201116342620, -0.509079237735574730, -0.509122273082108780, -0.509165307155837520, -0.509208339956652710, -0.509251371484446880, -0.509294401739112780, +-0.509337430720542940, -0.509380458428629220, -0.509423484863264280, -0.509466510024340740, -0.509509533911751130, -0.509552556525387450, -0.509595577865142310, -0.509638597930908270, +-0.509681616722578060, -0.509724634240043550, -0.509767650483197280, -0.509810665451932430, -0.509853679146140440, -0.509896691565714270, -0.509939702710546340, -0.509982712580529630, +-0.510025721175555670, -0.510068728495517430, -0.510111734540307340, -0.510154739309818360, -0.510197742803942140, -0.510240745022571550, -0.510283745965599110, -0.510326745632917580, +-0.510369744024418930, -0.510412741139995910, -0.510455736979540940, -0.510498731542947120, -0.510541724830106070, -0.510584716840910670, -0.510627707575253890, -0.510670697033027480, +-0.510713685214124190, -0.510756672118436780, -0.510799657745858120, -0.510842642096279940, -0.510885625169595130, -0.510928606965696200, -0.510971587484476130, -0.511014566725826790, +-0.511057544689641040, -0.511100521375811300, -0.511143496784230770, -0.511186470914791080, -0.511229443767385220, -0.511272415341905710, -0.511315385638245520, -0.511358354656296530, +-0.511401322395951710, -0.511444288857103910, -0.511487254039645010, -0.511530217943467980, -0.511573180568465350, -0.511616141914530200, -0.511659101981554290, -0.511702060769430700, +-0.511745018278051860, -0.511787974507310950, -0.511830929457099630, -0.511873883127311080, -0.511916835517837730, -0.511959786628572780, -0.512002736459407860, -0.512045685010236170, +-0.512088632280950250, -0.512131578271443180, -0.512174522981606710, -0.512217466411333920, -0.512260408560517910, -0.512303349429050540, -0.512346289016824660, -0.512389227323733150, +-0.512432164349668980, -0.512475100094523910, -0.512518034558191230, -0.512560967740563370, -0.512603899641533410, -0.512646830260993450, -0.512689759598836340, -0.512732687654954830, +-0.512775614429242020, -0.512818539921589770, -0.512861464131891260, -0.512904387060038940, -0.512947308705926090, -0.512990229069444690, -0.513033148150487620, -0.513076065948947610, +-0.513118982464717990, -0.513161897697690380, -0.513204811647758110, -0.513247724314814140, -0.513290635698750550, -0.513333545799460330, -0.513376454616836230, -0.513419362150771330, +-0.513462268401157720, -0.513505173367888370, -0.513548077050856140, -0.513590979449954130, -0.513633880565074310, -0.513676780396109640, -0.513719678942953120, -0.513762576205497810, +-0.513805472183635700, -0.513848366877259770, -0.513891260286263090, -0.513934152410538530, -0.513977043249978170, -0.514019932804475330, -0.514062821073922980, -0.514105708058213210, +-0.514148593757239090, -0.514191478170893610, -0.514234361299069740, -0.514277243141659570, -0.514320123698556400, -0.514363002969652870, -0.514405880954842190, -0.514448757654016430, +-0.514491633067068690, -0.514534507193891930, -0.514577380034379360, -0.514620251588422950, -0.514663121855915780, -0.514705990836750950, -0.514748858530821420, -0.514791724938019390, +-0.514834590058238060, -0.514877453891370740, -0.514920316437309290, -0.514963177695947020, -0.515006037667176900, -0.515048896350892020, -0.515091753746984460, -0.515134609855347540, +-0.515177464675874220, -0.515220318208457480, -0.515263170452989640, -0.515306021409363880, -0.515348871077472960, -0.515391719457210300, -0.515434566548467980, -0.515477412351139310, +-0.515520256865117040, -0.515563100090294490, -0.515605942026563850, -0.515648782673818310, -0.515691622031950850, -0.515734460100854660, -0.515777296880421950, -0.515820132370546030, +-0.515862966571120190, -0.515905799482036520, -0.515948631103188340, -0.515991461434468610, -0.516034290475770650, -0.516077118226986540, -0.516119944688009590, -0.516162769858732770, +-0.516205593739049510, -0.516248416328851770, -0.516291237628033080, -0.516334057636486210, -0.516376876354104670, -0.516419693780780560, -0.516462509916407080, -0.516505324760877520, +-0.516548138314084860, -0.516590950575921530, -0.516633761546280820, -0.516676571225056170, -0.516719379612139650, -0.516762186707424580, -0.516804992510804140, -0.516847797022171650, +-0.516890600241419200, -0.516933402168440300, -0.516976202803127840, -0.517019002145375330, -0.517061800195074860, -0.517104596952119970, -0.517147392416403510, -0.517190186587819010, +-0.517232979466258680, -0.517275771051615820, -0.517318561343783510, -0.517361350342655290, -0.517404138048123240, -0.517446924460080890, -0.517489709578421550, -0.517532493403037640, +-0.517575275933822470, -0.517618057170669000, -0.517660837113470880, -0.517703615762120320, -0.517746393116510610, -0.517789169176534950, -0.517831943942086870, -0.517874717413058460, +-0.517917489589343140, -0.517960260470834210, -0.518003030057425100, -0.518045798349007880, -0.518088565345476200, -0.518131331046723150, -0.518174095452642150, -0.518216858563125490, +-0.518259620378066720, -0.518302380897359250, -0.518345140120895500, -0.518387898048568880, -0.518430654680272500, -0.518473410015899860, -0.518516164055343290, -0.518558916798496310, +-0.518601668245252110, -0.518644418395504010, -0.518687167249144650, -0.518729914806067230, -0.518772661066165040, -0.518815406029331630, -0.518858149695459290, -0.518900892064441570, +-0.518943633136171640, -0.518986372910543060, -0.519029111387448120, -0.519071848566780350, -0.519114584448432950, -0.519157319032299560, -0.519200052318272490, -0.519242784306245260, +-0.519285514996111420, -0.519328244387763370, -0.519370972481094870, -0.519413699275998790, -0.519456424772368860, -0.519499148970097520, -0.519541871869078300, -0.519584593469204490, +-0.519627313770369530, -0.519670032772465820, -0.519712750475387120, -0.519755466879026520, -0.519798181983277540, -0.519840895788032830, -0.519883608293185920, -0.519926319498629890, +-0.519969029404258490, -0.520011738009964030, -0.520054445315640380, -0.520097151321180950, -0.520139856026478280, -0.520182559431425880, -0.520225261535917190, -0.520267962339845620, +-0.520310661843103820, -0.520353360045585410, -0.520396056947183490, -0.520438752547791930, -0.520481446847303020, -0.520524139845610520, -0.520566831542607740, -0.520609521938188210, +-0.520652211032244460, -0.520694898824670240, -0.520737585315358630, -0.520780270504203610, -0.520822954391097490, -0.520865636975933910, -0.520908318258606730, -0.520950998239008260, +-0.520993676917032360, -0.521036354292572330, -0.521079030365521720, -0.521121705135773160, -0.521164378603220290, -0.521207050767756530, -0.521249721629275520, -0.521292391187669790, +-0.521335059442833090, -0.521377726394658850, -0.521420392043040580, -0.521463056387870940, -0.521505719429043670, -0.521548381166452080, -0.521591041599989920, -0.521633700729549840, +-0.521676358555025480, -0.521719015076310240, -0.521761670293297790, -0.521804324205880850, -0.521846976813952980, -0.521889628117408130, -0.521932278116138850, -0.521974926810038880, +-0.522017574199001630, -0.522060220282920760, -0.522102865061688900, -0.522145508535199920, -0.522188150703347230, -0.522230791566024480, -0.522273431123124410, -0.522316069374540780, +-0.522358706320166900, -0.522401341959896740, -0.522443976293622710, -0.522486609321238800, -0.522529241042638430, -0.522571871457715330, -0.522614500566362050, -0.522657128368472670, +-0.522699754863940710, -0.522742380052659050, -0.522785003934521430, -0.522827626509421380, -0.522870247777252550, -0.522912867737907790, -0.522955486391280750, -0.522998103737265070, +-0.523040719775754500, -0.523083334506641790, -0.523125947929820700, -0.523168560045184750, -0.523211170852627800, -0.523253780352042510, -0.523296388543322720, -0.523338995426362090, +-0.523381601001054240, -0.523424205267292050, -0.523466808224969380, -0.523509409873979980, -0.523552010214216710, -0.523594609245573440, -0.523637206967943690, -0.523679803381221220, +-0.523722398485298890, -0.523764992280070560, -0.523807584765429770, -0.523850175941270480, -0.523892765807485230, -0.523935354363968100, -0.523977941610612620, -0.524020527547312650, +-0.524063112173960950, -0.524105695490451500, -0.524148277496677810, -0.524190858192533860, -0.524233437577912300, -0.524276015652707210, -0.524318592416812000, -0.524361167870120770, +-0.524403742012526150, -0.524446314843922230, -0.524488886364202990, -0.524531456573261060, -0.524574025470990520, -0.524616593057284810, -0.524659159332038110, -0.524701724295143060, +-0.524744287946493750, -0.524786850285983820, -0.524829411313507020, -0.524871971028956330, -0.524914529432225720, -0.524957086523208720, -0.524999642301799520, -0.525042196767890660, +-0.525084749921376440, -0.525127301762150280, -0.525169852290106380, -0.525212401505137370, -0.525254949407137350, -0.525297495996000290, -0.525340041271619150, -0.525382585233887920, +-0.525425127882700240, -0.525467669217950070, -0.525510209239530400, -0.525552747947335200, -0.525595285341258100, -0.525637821421193200, -0.525680356187033350, -0.525722889638672640, +-0.525765421776004720, -0.525807952598923540, -0.525850482107322210, -0.525893010301094590, -0.525935537180134420, -0.525978062744335890, -0.526020586993591780, -0.526063109927796150, +-0.526105631546843200, -0.526148151850625690, -0.526190670839037920, -0.526233188511973430, -0.526275704869326290, -0.526318219910989590, -0.526360733636857310, -0.526403246046823200, +-0.526445757140781350, -0.526488266918624710, -0.526530775380247400, -0.526573282525543140, -0.526615788354406140, -0.526658292866729270, -0.526700796062406610, -0.526743297941332010, +-0.526785798503399460, -0.526828297748502150, -0.526870795676534050, -0.526913292287389260, -0.526955787580960950, -0.526998281557143120, -0.527040774215829620, -0.527083265556914650, +-0.527125755580290960, -0.527168244285852960, -0.527210731673494410, -0.527253217743109290, -0.527295702494590900, -0.527338185927833100, -0.527380668042729980, -0.527423148839175520, +-0.527465628317062670, -0.527508106476285880, -0.527550583316738870, -0.527593058838315640, -0.527635533040909490, -0.527678005924414490, -0.527720477488724530, -0.527762947733733670, +-0.527805416659335110, -0.527847884265422950, -0.527890350551891490, -0.527932815518633800, -0.527975279165543990, -0.528017741492516010, -0.528060202499444190, -0.528102662186221370, +-0.528145120552741880, -0.528187577598899560, -0.528230033324588730, -0.528272487729702480, -0.528314940814134990, -0.528357392577780140, -0.528399843020532110, -0.528442292142284220, +-0.528484739942930550, -0.528527186422364960, -0.528569631580481870, -0.528612075417174250, -0.528654517932336530, -0.528696959125862790, -0.528739398997646330, -0.528781837547581460, +-0.528824274775561820, -0.528866710681482060, -0.528909145265235030, -0.528951578526715150, -0.528994010465816290, -0.529036441082432860, -0.529078870376457840, -0.529121298347785760, +-0.529163724996310370, -0.529206150321926080, -0.529248574324525990, -0.529290997004004500, -0.529333418360255600, -0.529375838393173370, -0.529418257102651340, -0.529460674488583470, +-0.529503090550864420, -0.529545505289387260, -0.529587918704046310, -0.529630330794735540, -0.529672741561349360, -0.529715151003780970, -0.529757559121924680, -0.529799965915674460, +-0.529842371384924740, -0.529884775529568700, -0.529927178349500760, -0.529969579844614790, -0.530011980014805320, -0.530054378859965540, -0.530096776379989750, -0.530139172574772060, +-0.530181567444206750, -0.530223960988187250, -0.530266353206607750, -0.530308744099362350, -0.530351133666345560, -0.530393521907450480, -0.530435908822571740, -0.530478294411603430, +-0.530520678674439080, -0.530563061610973110, -0.530605443221099370, -0.530647823504712400, -0.530690202461705620, -0.530732580091973220, -0.530774956395409390, -0.530817331371908560, +-0.530859705021364040, -0.530902077343670230, -0.530944448338721230, -0.530986818006411450, -0.531029186346634320, -0.531071553359284240, -0.531113919044255200, -0.531156283401441720, +-0.531198646430737220, -0.531241008132036120, -0.531283368505232830, -0.531325727550220780, -0.531368085266894390, -0.531410441655147730, -0.531452796714875440, -0.531495150445970730, +-0.531537502848328130, -0.531579853921841820, -0.531622203666406220, -0.531664552081914770, -0.531706899168261860, -0.531749244925341810, -0.531791589353048930, -0.531833932451276750, +-0.531876274219919790, -0.531918614658872020, -0.531960953768028210, -0.532003291547281540, -0.532045627996526770, -0.532087963115658200, -0.532130296904569370, -0.532172629363154790, +-0.532214960491308680, -0.532257290288925430, -0.532299618755898710, -0.532341945892122910, -0.532384271697492250, -0.532426596171901250, -0.532468919315243320, -0.532511241127413220, +-0.532553561608305030, -0.532595880757813170, -0.532638198575831390, -0.532680515062254000, -0.532722830216975310, -0.532765144039889950, -0.532807456530891450, -0.532849767689874240, +-0.532892077516732950, -0.532934386011361120, -0.532976693173653370, -0.533018999003503800, -0.533061303500807160, -0.533103606665456860, -0.533145908497347550, -0.533188208996373540, +-0.533230508162429340, -0.533272805995408380, -0.533315102495205530, -0.533357397661714970, -0.533399691494831130, -0.533441983994447870, -0.533484275160459490, -0.533526564992760520, +-0.533568853491245500, -0.533611140655807950, -0.533653426486342510, -0.533695710982743600, -0.533737994144905640, -0.533780275972722480, -0.533822556466088560, -0.533864835624898610, +-0.533907113449046180, -0.533949389938426000, -0.533991665092932390, -0.534033938912459980, -0.534076211396902310, -0.534118482546154130, -0.534160752360109740, -0.534203020838663780, +-0.534245287981709890, -0.534287553789142940, -0.534329818260857010, -0.534372081396746860, -0.534414343196706220, -0.534456603660629640, -0.534498862788411630, -0.534541120579946740, +-0.534583377035128700, -0.534625632153852280, -0.534667885936012110, -0.534710138381501940, -0.534752389490216310, -0.534794639262049730, -0.534836887696896970, -0.534879134794651550, +-0.534921380555208330, -0.534963624978461730, -0.535005868064306390, -0.535048109812635950, -0.535090350223345280, -0.535132589296328680, -0.535174827031481120, -0.535217063428696020, +-0.535259298487868240, -0.535301532208892210, -0.535343764591662770, -0.535385995636073590, -0.535428225342019280, -0.535470453709394940, -0.535512680738093990, -0.535554906428011400, +-0.535597130779041470, -0.535639353791079190, -0.535681575464018070, -0.535723795797752980, -0.535766014792178450, -0.535808232447189340, -0.535850448762679180, -0.535892663738542830, +-0.535934877374674930, -0.535977089670970240, -0.536019300627322390, -0.536061510243626250, -0.536103718519776340, -0.536145925455667640, -0.536188131051193670, -0.536230335306249310, +-0.536272538220729180, -0.536314739794528040, -0.536356940027539750, -0.536399138919659070, -0.536441336470780850, -0.536483532680798960, -0.536525727549608260, -0.536567921077103270, +-0.536610113263178870, -0.536652304107728680, -0.536694493610647800, -0.536736681771830760, -0.536778868591172300, -0.536821054068566280, -0.536863238203907690, -0.536905420997090930, +-0.536947602448011100, -0.536989782556561820, -0.537031961322638090, -0.537074138746134520, -0.537116314826945880, -0.537158489564966150, -0.537200662960090170, -0.537242835012212820, +-0.537285005721228170, -0.537327175087030870, -0.537369343109515670, -0.537411509788577550, -0.537453675124110240, -0.537495839116008730, -0.537538001764167660, -0.537580163068481890, +-0.537622323028845380, -0.537664481645153130, -0.537706638917299530, -0.537748794845179790, -0.537790949428687770, -0.537833102667718220, -0.537875254562166010, -0.537917405111925980, +-0.537959554316892130, -0.538001702176959420, -0.538043848692022710, -0.538085993861976090, -0.538128137686714410, -0.538170280166132440, -0.538212421300125140, -0.538254561088586490, +-0.538296699531411350, -0.538338836628494470, -0.538380972379730820, -0.538423106785014480, -0.538465239844240330, -0.538507371557302990, -0.538549501924097670, -0.538591630944518230, +-0.538633758618459750, -0.538675884945816860, -0.538718009926484550, -0.538760133560356900, -0.538802255847328880, -0.538844376787295690, -0.538886496380151070, -0.538928614625790230, +-0.538970731524107900, -0.539012847074999080, -0.539054961278357840, -0.539097074134079150, -0.539139185642057760, -0.539181295802188760, -0.539223404614366130, -0.539265512078485050, +-0.539307618194440170, -0.539349722962126690, -0.539391826381438460, -0.539433928452270670, -0.539476029174517980, -0.539518128548075680, -0.539560226572837640, -0.539602323248699060, +-0.539644418575554670, -0.539686512553299690, -0.539728605181827970, -0.539770696461034700, -0.539812786390815090, -0.539854874971063210, -0.539896962201674050, -0.539939048082542560, +-0.539981132613563840, -0.540023215794631860, -0.540065297625641820, -0.540107378106488570, -0.540149457237067200, -0.540191535017271910, -0.540233611446997660, -0.540275686526139440, +-0.540317760254592440, -0.540359832632250630, -0.540401903659009200, -0.540443973334763020, -0.540486041659407280, -0.540528108632836070, -0.540570174254944690, -0.540612238525628120, +-0.540654301444780550, -0.540696363012297290, -0.540738423228073200, -0.540780482092003360, -0.540822539603981860, -0.540864595763904110, -0.540906650571664870, -0.540948704027159330, +-0.540990756130281690, -0.541032806880927140, -0.541074856278990550, -0.541116904324367210, -0.541158951016951220, -0.541200996356637990, -0.541243040343322160, -0.541285082976899030, +-0.541327124257262930, -0.541369164184308920, -0.541411202757932530, -0.541453239978027630, -0.541495275844489640, -0.541537310357213530, -0.541579343516094490, -0.541621375321026610, +-0.541663405771905420, -0.541705434868625660, -0.541747462611082750, -0.541789488999170790, -0.541831514032785070, -0.541873537711820560, -0.541915560036172580, -0.541957581005735320, +-0.541999600620404200, -0.542041618880073960, -0.542083635784640140, -0.542125651333996820, -0.542167665528039410, -0.542209678366662780, -0.542251689849762350, -0.542293699977232310, +-0.542335708748967970, -0.542377716164864850, -0.542419722224816940, -0.542461726928719860, -0.542503730276468370, -0.542545732267957880, -0.542587732903082820, -0.542629732181738380, +-0.542671730103819530, -0.542713726669221800, -0.542755721877839380, -0.542797715729567700, -0.542839708224301610, -0.542881699361936750, -0.542923689142367220, -0.542965677565488410, +-0.543007664631195430, -0.543049650339383680, -0.543091634689947480, -0.543133617682782120, -0.543175599317783140, -0.543217579594844730, -0.543259558513862430, -0.543301536074731310, +-0.543343512277346560, -0.543385487121602730, -0.543427460607395220, -0.543469432734619010, -0.543511403503169510, -0.543553372912941260, -0.543595340963829550, -0.543637307655729480, +-0.543679272988536470, -0.543721236962144920, -0.543763199576450360, -0.543805160831347670, -0.543847120726732580, -0.543889079262499300, -0.543931036438543240, -0.543972992254760030, +-0.544014946711043890, -0.544056899807290440, -0.544098851543394770, -0.544140801919252290, -0.544182750934757430, -0.544224698589805710, -0.544266644884292220, -0.544308589818112590, +-0.544350533391161020, -0.544392475603333150, -0.544434416454524060, -0.544476355944629290, -0.544518294073543240, -0.544560230841161560, -0.544602166247379230, -0.544644100292091870, +-0.544686032975193910, -0.544727964296580770, -0.544769894256148190, -0.544811822853790480, -0.544853750089403290, -0.544895675962881580, -0.544937600474121100, -0.544979523623016270, +-0.545021445409462620, -0.545063365833355460, -0.545105284894590090, -0.545147202593061260, -0.545189118928664400, -0.545231033901294680, -0.545272947510847760, -0.545314859757218160, +-0.545356770640301410, -0.545398680159992600, -0.545440588316187580, -0.545482495108780770, -0.545524400537667600, -0.545566304602743470, -0.545608207303904020, -0.545650108641043570, +-0.545692008614057980, -0.545733907222842650, -0.545775804467292120, -0.545817700347302150, -0.545859594862767920, -0.545901488013585070, -0.545943379799648240, -0.545985270220852860, +-0.546027159277094220, -0.546069046968268190, -0.546110933294269070, -0.546152818254992730, -0.546194701850334250, -0.546236584080189490, -0.546278464944452760, -0.546320344443019910, +-0.546362222575786260, -0.546404099342647440, -0.546445974743497880, -0.546487848778233530, -0.546529721446749830, -0.546571592748941510, -0.546613462684704120, -0.546655331253933170, +-0.546697198456524200, -0.546739064292371960, -0.546780928761371960, -0.546822791863419640, -0.546864653598410740, -0.546906513966239790, -0.546948372966802650, -0.546990230599994520, +-0.547032086865711250, -0.547073941763847270, -0.547115795294298550, -0.547157647456960270, -0.547199498251728310, -0.547241347678497190, -0.547283195737162660, -0.547325042427620590, +-0.547366887749765500, -0.547408731703493130, -0.547450574288699030, -0.547492415505278830, -0.547534255353127270, -0.547576093832140010, -0.547617930942212450, -0.547659766683240570, +-0.547701601055118890, -0.547743434057743170, -0.547785265691008830, -0.547827095954811720, -0.547868924849046480, -0.547910752373608980, -0.547952578528394520, -0.547994403313299070, +-0.548036226728217170, -0.548078048773044780, -0.548119869447677210, -0.548161688752010430, -0.548203506685938980, -0.548245323249358710, -0.548287138442165590, -0.548328952264254270, +-0.548370764715520490, -0.548412575795859890, -0.548454385505168120, -0.548496193843340030, -0.548538000810271490, -0.548579806405858020, -0.548621610629995260, -0.548663413482578190, +-0.548705214963502550, -0.548747015072663880, -0.548788813809958140, -0.548830611175279870, -0.548872407168525140, -0.548914201789589380, -0.548955995038368450, -0.548997786914757200, +-0.549039577418651390, -0.549081366549947100, -0.549123154308539090, -0.549164940694323090, -0.549206725707194750, -0.549248509347049940, -0.549290291613783620, -0.549332072507291440, +-0.549373852027469130, -0.549415630174212470, -0.549457406947416520, -0.549499182346976920, -0.549540956372789440, -0.549582729024749920, -0.549624500302753230, -0.549666270206695230, +-0.549708038736471560, -0.549749805891978190, -0.549791571673109990, -0.549833336079762810, -0.549875099111832630, -0.549916860769214420, -0.549958621051803930, -0.550000379959497020, +-0.550042137492189440, -0.550083893649776170, -0.550125648432153170, -0.550167401839216090, -0.550209153870860780, -0.550250904526982330, -0.550292653807476500, -0.550334401712239130, +-0.550376148241166100, -0.550417893394152260, -0.550459637171093810, -0.550501379571886160, -0.550543120596425520, -0.550584860244606620, -0.550626598516325670, -0.550668335411478530, +-0.550710070929960160, -0.550751805071666660, -0.550793537836493650, -0.550835269224337120, -0.550876999235092150, -0.550918727868654590, -0.550960455124920200, -0.551002181003785060, +-0.551043905505144150, -0.551085628628893430, -0.551127350374928550, -0.551169070743145810, -0.551210789733439950, -0.551252507345707190, -0.551294223579843030, -0.551335938435743800, +-0.551377651913304350, -0.551419364012420750, -0.551461074732988670, -0.551502784074904380, -0.551544492038062660, -0.551586198622359800, -0.551627903827691780, -0.551669607653953560, +-0.551711310101041460, -0.551753011168851000, -0.551794710857278380, -0.551836409166218570, -0.551878106095567870, -0.551919801645221810, -0.551961495815076590, -0.552003188605027280, +-0.552044880014970100, -0.552086570044800660, -0.552128258694415060, -0.552169945963708610, -0.552211631852577160, -0.552253316360916680, -0.552294999488623370, -0.552336681235592100, +-0.552378361601719160, -0.552420040586900640, -0.552461718191031630, -0.552503394414008420, -0.552545069255726660, -0.552586742716082550, -0.552628414794971270, -0.552670085492289020, +-0.552711754807931440, -0.552753422741794950, -0.552795089293774410, -0.552836754463766230, -0.552878418251666170, -0.552920080657370420, -0.552961741680774050, -0.553003401321773390, +-0.553045059580264180, -0.553086716456142710, -0.553128371949304090, -0.553170026059644600, -0.553211678787060350, -0.553253330131446510, -0.553294980092699400, -0.553336628670714760, +-0.553378275865389010, -0.553419921676617130, -0.553461566104295530, -0.553503209148319960, -0.553544850808586730, -0.553586491084991030, -0.553628129977429050, -0.553669767485796770, +-0.553711403609990490, -0.553753038349905190, -0.553794671705437500, -0.553836303676482960, -0.553877934262938080, -0.553919563464698060, -0.553961191281659100, -0.554002817713717070, +-0.554044442760768470, -0.554086066422708410, -0.554127688699433070, -0.554169309590838990, -0.554210929096821240, -0.554252547217276130, -0.554294163952099740, -0.554335779301188160, +-0.554377393264436910, -0.554419005841742090, -0.554460617032999760, -0.554502226838106350, -0.554543835256956940, -0.554585442289447840, -0.554627047935475240, -0.554668652194935440, +-0.554710255067723530, -0.554751856553736040, -0.554793456652868940, -0.554835055365018540, -0.554876652690080130, -0.554918248627950030, -0.554959843178524760, -0.555001436341699410, +-0.555043028117370610, -0.555084618505434110, -0.555126207505786560, -0.555167795118323040, -0.555209381342940070, -0.555250966179533620, -0.555292549628000120, -0.555334131688234870, +-0.555375712360134280, -0.555417291643594440, -0.555458869538511760, -0.555500446044781440, -0.555542021162300110, -0.555583594890963760, -0.555625167230668680, -0.555666738181310400, +-0.555708307742785230, -0.555749875914989700, -0.555791442697818990, -0.555833008091169760, -0.555874572094938070, -0.555916134709020240, -0.555957695933311680, -0.555999255767708920, +-0.556040814212108050, -0.556082371266405470, -0.556123926930496610, -0.556165481204278000, -0.556207034087645600, -0.556248585580496060, -0.556290135682724560, -0.556331684394227870, +-0.556373231714901830, -0.556414777644643200, -0.556456322183347170, -0.556497865330910390, -0.556539407087229270, -0.556580947452199330, -0.556622486425716990, -0.556664024007678340, +-0.556705560197980120, -0.556747094996517530, -0.556788628403187320, -0.556830160417885470, -0.556871691040508600, -0.556913220270952140, -0.556954748109112610, -0.556996274554886210, +-0.557037799608169570, -0.557079323268858010, -0.557120845536848150, -0.557162366412036090, -0.557203885894318570, -0.557245403983591010, -0.557286920679749830, -0.557328435982691440, +-0.557369949892312260, -0.557411462408507810, -0.557452973531174840, -0.557494483260209670, -0.557535991595508040, -0.557577498536966360, -0.557619004084480950, -0.557660508237948330, +-0.557702010997264130, -0.557743512362324890, -0.557785012333026910, -0.557826510909266830, -0.557868008090939950, -0.557909503877943140, -0.557950998270172470, -0.557992491267524810, +-0.558033982869895470, -0.558075473077181190, -0.558116961889278280, -0.558158449306083270, -0.558199935327491790, -0.558241419953400490, -0.558282903183705990, -0.558324385018303840, +-0.558365865457090770, -0.558407344499962990, -0.558448822146817240, -0.558490298397549050, -0.558531773252055160, -0.558573246710231790, -0.558614718771975770, -0.558656189437182430, +-0.558697658705748720, -0.558739126577570850, -0.558780593052545570, -0.558822058130568400, -0.558863521811536090, -0.558904984095344950, -0.558946444981891720, -0.558987904471071940, +-0.559029362562782570, -0.559070819256920040, -0.559112274553380080, -0.559153728452059460, -0.559195180952854590, -0.559236632055662100, -0.559278081760377630, -0.559319530066897940, +-0.559360976975119550, -0.559402422484938990, -0.559443866596252000, -0.559485309308955350, -0.559526750622945430, -0.559568190538118900, -0.559609629054371730, -0.559651066171600320, +-0.559692501889701320, -0.559733936208571480, -0.559775369128106330, -0.559816800648202830, -0.559858230768757290, -0.559899659489666580, -0.559941086810826330, -0.559982512732133290, +-0.560023937253484430, -0.560065360374775390, -0.560106782095902810, -0.560148202416763440, -0.560189621337253810, -0.560231038857269770, -0.560272454976708190, -0.560313869695465480, +-0.560355283013438400, -0.560396694930522800, -0.560438105446615430, -0.560479514561612820, -0.560520922275411730, -0.560562328587908000, -0.560603733498998500, -0.560645137008579650, +-0.560686539116548310, -0.560727939822800230, -0.560769339127232260, -0.560810737029741380, -0.560852133530223340, -0.560893528628574890, -0.560934922324692660, -0.560976314618473420, +-0.561017705509813110, -0.561059094998608510, -0.561100483084756130, -0.561141869768152950, -0.561183255048694710, -0.561224638926278390, -0.561266021400800400, -0.561307402472157820, +-0.561348782140246190, -0.561390160404962810, -0.561431537266203870, -0.561472912723866570, -0.561514286777846540, -0.561555659428040870, -0.561597030674346300, -0.561638400516658920, +-0.561679768954875370, -0.561721135988892510, -0.561762501618607190, -0.561803865843915280, -0.561845228664713650, -0.561886590080898920, -0.561927950092368180, -0.561969308699017070, +-0.562010665900742780, -0.562052021697441840, -0.562093376089011110, -0.562134729075346670, -0.562176080656345390, -0.562217430831903900, -0.562258779601919170, -0.562300126966287170, +-0.562341472924904770, -0.562382817477669160, -0.562424160624476090, -0.562465502365222640, -0.562506842699805330, -0.562548181628121370, -0.562589519150066610, -0.562630855265538020, +-0.562672189974432360, -0.562713523276646480, -0.562754855172076460, -0.562796185660619400, -0.562837514742171810, -0.562878842416630780, -0.562920168683892270, -0.562961493543853390, +-0.563002816996410640, -0.563044139041461330, -0.563085459678901330, -0.563126778908627610, -0.563168096730537030, -0.563209413144526440, -0.563250728150492040, -0.563292041748330810, +-0.563333353937939930, -0.563374664719215160, -0.563415974092053800, -0.563457282056352480, -0.563498588612008300, -0.563539893758917330, -0.563581197496976550, -0.563622499826082920, +-0.563663800746133310, -0.563705100257023810, -0.563746398358651590, -0.563787695050913420, -0.563828990333706260, -0.563870284206926310, -0.563911576670470760, -0.563952867724236140, +-0.563994157368119750, -0.564035445602017570, -0.564076732425826900, -0.564118017839444600, -0.564159301842766970, -0.564200584435691100, -0.564241865618113740, -0.564283145389932180, +-0.564324423751042300, -0.564365700701341290, -0.564406976240726110, -0.564448250369093850, -0.564489523086340590, -0.564530794392363640, -0.564572064287059530, -0.564613332770325660, +-0.564654599842058120, -0.564695865502154120, -0.564737129750510490, -0.564778392587024340, -0.564819654011591730, -0.564860914024110090, -0.564902172624476620, -0.564943429812587270, +-0.564984685588339360, -0.565025939951629640, -0.565067192902355520, -0.565108444440413080, -0.565149694565699520, -0.565190943278111700, -0.565232190577546810, -0.565273436463901160, +-0.565314680937071930, -0.565355923996956000, -0.565397165643450660, -0.565438405876452000, -0.565479644695857320, -0.565520882101563480, -0.565562118093467790, -0.565603352671466550, +-0.565644585835456850, -0.565685817585335760, -0.565727047921000370, -0.565768276842347100, -0.565809504349273130, -0.565850730441675780, -0.565891955119451120, -0.565933178382496680, +-0.565974400230709220, -0.566015620663986250, -0.566056839682223760, -0.566098057285319150, -0.566139273473169500, -0.566180488245671910, -0.566221701602722780, -0.566262913544219430, +-0.566304124070058810, -0.566345333180138240, -0.566386540874353920, -0.566427747152603240, -0.566468952014783200, -0.566510155460791200, -0.566551357490523430, -0.566592558103877320, +-0.566633757300750050, -0.566674955081038160, -0.566716151444638830, -0.566757346391449040, -0.566798539921366310, -0.566839732034286840, -0.566880922730108150, -0.566922112008727000, +-0.566963299870041020, -0.567004486313946400, -0.567045671340340560, -0.567086854949120590, -0.567128037140183780, -0.567169217913426560, -0.567210397268746340, -0.567251575206040080, +-0.567292751725205210, -0.567333926826138150, -0.567375100508736190, -0.567416272772896970, -0.567457443618516580, -0.567498613045492650, -0.567539781053722160, -0.567580947643102630, +-0.567622112813530370, -0.567663276564902790, -0.567704438897116970, -0.567745599810070440, -0.567786759303659630, -0.567827917377781820, -0.567869074032334330, -0.567910229267214460, +-0.567951383082318630, -0.567992535477544360, -0.568033686452788730, -0.568074836007949280, -0.568115984142922300, -0.568157130857605440, -0.568198276151896110, -0.568239420025690720, +-0.568280562478886810, -0.568321703511381450, -0.568362843123072170, -0.568403981313855500, -0.568445118083628850, -0.568486253432289310, -0.568527387359734630, -0.568568519865861100, +-0.568609650950566260, -0.568650780613747190, -0.568691908855301630, -0.568733035675125900, -0.568774161073117620, -0.568815285049173890, -0.568856407603192340, -0.568897528735069380, +-0.568938648444702650, -0.568979766731989240, -0.569020883596826900, -0.569061999039111810, -0.569103113058741840, -0.569144225655614400, -0.569185336829626130, -0.569226446580674450, +-0.569267554908656550, -0.569308661813470280, -0.569349767295011970, -0.569390871353179120, -0.569431973987869270, -0.569473075198979720, -0.569514174986407110, -0.569555273350049180, +-0.569596370289802920, -0.569637465805566180, -0.569678559897235480, -0.569719652564708250, -0.569760743807882000, -0.569801833626654150, -0.569842922020921460, -0.569884008990581340, +-0.569925094535531640, -0.569966178655668900, -0.570007261350890640, -0.570048342621094160, -0.570089422466177220, -0.570130500886036450, -0.570171577880569380, -0.570212653449673310, +-0.570253727593246110, -0.570294800311184070, -0.570335871603385170, -0.570376941469746490, -0.570418009910165890, -0.570459076924539790, -0.570500142512766150, -0.570541206674742060, +-0.570582269410365270, -0.570623330719532530, -0.570664390602141470, -0.570705449058089730, -0.570746506087274060, -0.570787561689592100, -0.570828615864941270, -0.570869668613219190, +-0.570910719934322630, -0.570951769828149210, -0.570992818294596470, -0.571033865333562040, -0.571074910944942450, -0.571115955128635670, -0.571156997884539000, -0.571198039212550190, +-0.571239079112566000, -0.571280117584484050, -0.571321154628201770, -0.571362190243617010, -0.571403224430626410, -0.571444257189127720, -0.571485288519018360, -0.571526318420196300, +-0.571567346892557950, -0.571608373936001170, -0.571649399550423930, -0.571690423735722760, -0.571731446491795640, -0.571772467818539850, -0.571813487715853160, -0.571854506183632540, +-0.571895523221775500, -0.571936538830179810, -0.571977553008742980, -0.572018565757361990, -0.572059577075934580, -0.572100586964358280, -0.572141595422530850, -0.572182602450349020, +-0.572223608047710660, -0.572264612214513410, -0.572305614950654910, -0.572346616256032000, -0.572387616130542560, -0.572428614574084450, -0.572469611586554410, -0.572510607167850290, +-0.572551601317869750, -0.572592594036510530, -0.572633585323669480, -0.572674575179244470, -0.572715563603133030, -0.572756550595233000, -0.572797536155441380, -0.572838520283655780, +-0.572879502979773860, -0.572920484243693570, -0.572961464075311790, -0.573002442474526250, -0.573043419441234600, -0.573084394975334810, -0.573125369076723730, -0.573166341745299120, +-0.573207312980959060, -0.573248282783600400, -0.573289251153120900, -0.573330218089418420, -0.573371183592390700, -0.573412147661934600, -0.573453110297948210, -0.573494071500329050, +-0.573535031268975090, -0.573575989603783090, -0.573616946504651230, -0.573657901971476920, -0.573698856004158260, -0.573739808602591990, -0.573780759766676310, -0.573821709496308730, +-0.573862657791387230, -0.573903604651808670, -0.573944550077471140, -0.573985494068272260, -0.574026436624110010, -0.574067377744881260, -0.574108317430484070, -0.574149255680816540, +-0.574190192495775410, -0.574231127875258870, -0.574272061819164460, -0.574312994327390250, -0.574353925399833210, -0.574394855036391320, -0.574435783236962320, -0.574476710001444290, +-0.574517635329733990, -0.574558559221729710, -0.574599481677328990, -0.574640402696429910, -0.574681322278929540, -0.574722240424725750, -0.574763157133716400, -0.574804072405799560, +-0.574844986240872210, -0.574885898638832330, -0.574926809599578090, -0.574967719123006480, -0.575008627209015470, -0.575049533857503010, -0.575090439068366990, -0.575131342841504580, +-0.575172245176813760, -0.575213146074192380, -0.575254045533538430, -0.575294943554749080, -0.575335840137722320, -0.575376735282356000, -0.575417628988548200, -0.575458521256195900, +-0.575499412085197390, -0.575540301475450320, -0.575581189426852880, -0.575622075939302040, -0.575662961012695980, -0.575703844646933030, -0.575744726841910030, -0.575785607597525170, +-0.575826486913676330, -0.575867364790261570, -0.575908241227178100, -0.575949116224323990, -0.575989989781597100, -0.576030861898895630, -0.576071732576116660, -0.576112601813158380, +-0.576153469609918530, -0.576194335966295320, -0.576235200882186050, -0.576276064357488680, -0.576316926392101190, -0.576357786985921660, -0.576398646138847390, -0.576439503850776470, +-0.576480360121607190, -0.576521214951236650, -0.576562068339563030, -0.576602920286484190, -0.576643770791898550, -0.576684619855702960, -0.576725467477795960, -0.576766313658075180, +-0.576807158396439150, -0.576848001692784720, -0.576888843547010310, -0.576929683959013780, -0.576970522928693440, -0.577011360455946360, -0.577052196540670970, -0.577093031182765000, +-0.577133864382126880, -0.577174696138653800, -0.577215526452243830, -0.577256355322795180, -0.577297182750205920, -0.577338008734373350, -0.577378833275195790, -0.577419656372571420, +-0.577460478026397660, -0.577501298236572590, -0.577542117002994400, -0.577582934325561180, -0.577623750204170340, -0.577664564638720070, -0.577705377629108450, -0.577746189175233680, +-0.577786999276993170, -0.577827807934285010, -0.577868615147007490, -0.577909420915058700, -0.577950225238336060, -0.577991028116737750, -0.578031829550161970, -0.578072629538506910, +-0.578113428081669990, -0.578154225179549400, -0.578195020832043660, -0.578235815039050080, -0.578276607800466860, -0.578317399116192180, -0.578358188986124340, -0.578398977410160660, +-0.578439764388199550, -0.578480549920138980, -0.578521334005877460, -0.578562116645312210, -0.578602897838341730, -0.578643677584863900, -0.578684455884777350, -0.578725232737979270, +-0.578766008144368070, -0.578806782103841840, -0.578847554616299000, -0.578888325681636950, -0.578929095299754120, -0.578969863470548910, -0.579010630193918630, -0.579051395469761810, +-0.579092159297976530, -0.579132921678461090, -0.579173682611113130, -0.579214442095830840, -0.579255200132512530, -0.579295956721056600, -0.579336711861360380, -0.579377465553322370, +-0.579418217796840660, -0.579458968591813780, -0.579499717938139150, -0.579540465835715280, -0.579581212284440150, -0.579621957284212400, -0.579662700834929320, -0.579703442936489570, +-0.579744183588791210, -0.579784922791732770, -0.579825660545211670, -0.579866396849126330, -0.579907131703375380, -0.579947865107856340, -0.579988597062467530, -0.580029327567107230, +-0.580070056621673990, -0.580110784226065320, -0.580151510380179650, -0.580192235083915150, -0.580232958337170480, -0.580273680139843040, -0.580314400491831360, -0.580355119393033750, +-0.580395836843348610, -0.580436552842673590, -0.580477267390907210, -0.580517980487947560, -0.580558692133693380, -0.580599402328042190, -0.580640111070892420, -0.580680818362142690, +-0.580721524201690650, -0.580762228589434710, -0.580802931525273180, -0.580843633009104800, -0.580884333040826870, -0.580925031620338150, -0.580965728747536820, -0.581006424422321640, +-0.581047118644589910, -0.581087811414240480, -0.581128502731171450, -0.581169192595281550, -0.581209881006468310, -0.581250567964630370, -0.581291253469665930, -0.581331937521473830, +-0.581372620119951500, -0.581413301264997570, -0.581453980956510800, -0.581494659194388700, -0.581535335978530020, -0.581576011308832850, -0.581616685185196160, -0.581657357607517360, +-0.581698028575695080, -0.581738698089627860, -0.581779366149214110, -0.581820032754351680, -0.581860697904939220, -0.581901361600874910, -0.581942023842057620, -0.581982684628384870, +-0.582023343959755410, -0.582064001836067550, -0.582104658257220130, -0.582145313223110690, -0.582185966733637870, -0.582226618788700630, -0.582267269388196400, -0.582307918532024020, +-0.582348566220081910, -0.582389212452268600, -0.582429857228482060, -0.582470500548620710, -0.582511142412583280, -0.582551782820268200, -0.582592421771573440, -0.582633059266397520, +-0.582673695304638970, -0.582714329886196540, -0.582754963010967960, -0.582795594678852000, -0.582836224889746960, -0.582876853643551800, -0.582917480940164160, -0.582958106779482790, +-0.582998731161406100, -0.583039354085832960, -0.583079975552661110, -0.583120595561789300, -0.583161214113116390, -0.583201831206540120, -0.583242446841959140, -0.583283061019272190, +-0.583323673738377790, -0.583364284999174030, -0.583404894801559440, -0.583445503145432640, -0.583486110030692400, -0.583526715457236560, -0.583567319424963980, -0.583607921933773090, +-0.583648522983562620, -0.583689122574230670, -0.583729720705675750, -0.583770317377796610, -0.583810912590492110, -0.583851506343659900, -0.583892098637198930, -0.583932689471007960, +-0.583973278844985070, -0.584013866759028890, -0.584054453213038060, -0.584095038206911440, -0.584135621740547010, -0.584176203813843390, -0.584216784426699220, -0.584257363579013590, +-0.584297941270684130, -0.584338517501609700, -0.584379092271689160, -0.584419665580821150, -0.584460237428903630, -0.584500807815835470, -0.584541376741515410, -0.584581944205842200, +-0.584622510208713700, -0.584663074750028990, -0.584703637829687040, -0.584744199447585490, -0.584784759603623530, -0.584825318297699680, -0.584865875529712810, -0.584906431299560990, +-0.584946985607142980, -0.584987538452357620, -0.585028089835103680, -0.585068639755279230, -0.585109188212783130, -0.585149735207514120, -0.585190280739371070, -0.585230824808252060, +-0.585271367414055830, -0.585311908556681250, -0.585352448236027280, -0.585392986451991890, -0.585433523204473950, -0.585474058493372200, -0.585514592318585710, -0.585555124680012360, +-0.585595655577551110, -0.585636185011101150, -0.585676712980560450, -0.585717239485827880, -0.585757764526802170, -0.585798288103382530, -0.585838810215466690, -0.585879330862953960, +-0.585919850045742760, -0.585960367763732390, -0.586000884016820710, -0.586041398804906800, -0.586081912127889400, -0.586122423985667610, -0.586162934378139380, -0.586203443305203910, +-0.586243950766759720, -0.586284456762706020, -0.586324961292940870, -0.586365464357363250, -0.586405965955872350, -0.586446466088366150, -0.586486964754743820, -0.586527461954904130, +-0.586567957688746030, -0.586608451956167730, -0.586648944757068300, -0.586689436091346610, -0.586729925958901610, -0.586770414359631400, -0.586810901293435160, -0.586851386760211650, +-0.586891870759860160, -0.586932353292278440, -0.586972834357366020, -0.587013313955021430, -0.587053792085143860, -0.587094268747631600, -0.587134743942383520, -0.587175217669299030, +-0.587215689928276110, -0.587256160719213940, -0.587296630042011380, -0.587337097896567630, -0.587377564282780760, -0.587418029200549970, -0.587458492649774120, -0.587498954630352400, +-0.587539415142182890, -0.587579874185164890, -0.587620331759197260, -0.587660787864179080, -0.587701242500008550, -0.587741695666584960, -0.587782147363807070, -0.587822597591574290, +-0.587863046349784590, -0.587903493638337270, -0.587943939457131530, -0.587984383806065660, -0.588024826685038860, -0.588065268093949880, -0.588105708032698130, -0.588146146501181800, +-0.588186583499300090, -0.588227019026951850, -0.588267453084036500, -0.588307885670452110, -0.588348316786098110, -0.588388746430873240, -0.588429174604676810, -0.588469601307407110, +-0.588510026538963450, -0.588550450299244690, -0.588590872588150240, -0.588631293405578180, -0.588671712751427930, -0.588712130625598350, -0.588752547027988850, -0.588792961958497510, +-0.588833375417023850, -0.588873787403467190, -0.588914197917725590, -0.588954606959698480, -0.588995014529284930, -0.589035420626384140, -0.589075825250894520, -0.589116228402715270, +-0.589156630081745460, -0.589197030287884500, -0.589237429021030490, -0.589277826281083050, -0.589318222067940930, -0.589358616381503660, -0.589399009221669430, -0.589439400588337770, +-0.589479790481407530, -0.589520178900778240, -0.589560565846348080, -0.589600951318016490, -0.589641335315682970, -0.589681717839245720, -0.589722098888604160, -0.589762478463657370, +-0.589802856564304760, -0.589843233190444630, -0.589883608341976400, -0.589923982018799140, -0.589964354220812280, -0.590004724947914230, -0.590045094200004280, -0.590085461976981640, +-0.590125828278745710, -0.590166193105194910, -0.590206556456228550, -0.590246918331745810, -0.590287278731646210, -0.590327637655827960, -0.590367995104190690, -0.590408351076633700, +-0.590448705573055510, -0.590489058593355540, -0.590529410137432990, -0.590569760205187260, -0.590610108796516650, -0.590650455911320930, -0.590690801549499040, -0.590731145710950420, +-0.590771488395573700, -0.590811829603268170, -0.590852169333933030, -0.590892507587467920, -0.590932844363771140, -0.590973179662742210, -0.591013513484280440, -0.591053845828285130, +-0.591094176694654920, -0.591134506083289210, -0.591174833994087320, -0.591215160426948550, -0.591255485381771640, -0.591295808858456010, -0.591336130856901180, -0.591376451377005790, +-0.591416770418669140, -0.591457087981790530, -0.591497404066269720, -0.591537718672004890, -0.591578031798895900, -0.591618343446841720, -0.591658653615741990, -0.591698962305495460, +-0.591739269516001310, -0.591779575247159180, -0.591819879498868380, -0.591860182271027440, -0.591900483563536190, -0.591940783376293630, -0.591981081709199500, -0.592021378562152420, +-0.592061673935051710, -0.592101967827797340, -0.592142260240287600, -0.592182551172422130, -0.592222840624100360, -0.592263128595221900, -0.592303415085685180, -0.592343700095390060, +-0.592383983624235500, -0.592424265672121480, -0.592464546238946400, -0.592504825324609910, -0.592545102929011410, -0.592585379052050440, -0.592625653693625740, -0.592665926853636950, +-0.592706198531983250, -0.592746468728564400, -0.592786737443279140, -0.592827004676026890, -0.592867270426707500, -0.592907534695219730, -0.592947797481462980, -0.592988058785336780, +-0.593028318606740770, -0.593068576945573690, -0.593108833801735070, -0.593149089175124430, -0.593189343065641310, -0.593229595473184550, -0.593269846397653900, -0.593310095838948450, +-0.593350343796968270, -0.593390590271611780, -0.593430835262778840, -0.593471078770368870, -0.593511320794281480, -0.593551561334415450, -0.593591800390670610, -0.593632037962946500, +-0.593672274051141980, -0.593712508655156790, -0.593752741774890350, -0.593792973410242400, -0.593833203561111580, -0.593873432227397860, -0.593913659409000540, -0.593953885105819370, +-0.593994109317753200, -0.594034332044701690, -0.594074553286564330, -0.594114773043241010, -0.594154991314630450, -0.594195208100632310, -0.594235423401146210, -0.594275637216071910, +-0.594315849545308140, -0.594356060388754660, -0.594396269746311100, -0.594436477617877320, -0.594476684003351850, -0.594516888902634770, -0.594557092315625700, -0.594597294242223630, +-0.594637494682328400, -0.594677693635839330, -0.594717891102656380, -0.594758087082678410, -0.594798281575805170, -0.594838474581936170, -0.594878666100971510, -0.594918856132809700, +-0.594959044677350720, -0.594999231734494200, -0.595039417304140010, -0.595079601386186760, -0.595119783980534670, -0.595159965087083020, -0.595200144705731900, -0.595240322836379950, +-0.595280499478927250, -0.595320674633273650, -0.595360848299318010, -0.595401020476960310, -0.595441191166099950, -0.595481360366637010, -0.595521528078470360, -0.595561694301499860, +-0.595601859035625130, -0.595642022280746140, -0.595682184036761650, -0.595722344303571740, -0.595762503081076030, -0.595802660369174290, -0.595842816167765690, -0.595882970476749980, +-0.595923123296026810, -0.595963274625496250, -0.596003424465057160, -0.596043572814609400, -0.596083719674053160, -0.596123865043287180, -0.596164008922211660, -0.596204151310726020, +-0.596244292208730430, -0.596284431616123660, -0.596324569532805880, -0.596364705958676740, -0.596404840893636100, -0.596444974337583030, -0.596485106290417510, -0.596525236752039170, +-0.596565365722348200, -0.596605493201243340, -0.596645619188624910, -0.596685743684392310, -0.596725866688445740, -0.596765988200684160, -0.596806108221007550, -0.596846226749315760, +-0.596886343785508640, -0.596926459329485400, -0.596966573381146000, -0.597006685940390520, -0.597046797007117940, -0.597086906581228430, -0.597127014662621640, -0.597167121251197640, +-0.597207226346855410, -0.597247329949495250, -0.597287432059016690, -0.597327532675319910, -0.597367631798303990, -0.597407729427868910, -0.597447825563914630, -0.597487920206341010, +-0.597528013355047350, -0.597568105009933510, -0.597608195170899580, -0.597648283837845410, -0.597688371010670180, -0.597728456689273990, -0.597768540873557130, -0.597808623563418460, +-0.597848704758758290, -0.597888784459476350, -0.597928862665472740, -0.597968939376646750, -0.598009014592898240, -0.598049088314127290, -0.598089160540233980, -0.598129231271117390, +-0.598169300506677710, -0.598209368246814810, -0.598249434491428870, -0.598289499240418960, -0.598329562493685300, -0.598369624251127720, -0.598409684512646530, -0.598449743278140600, +-0.598489800547510440, -0.598529856320656140, -0.598569910597476770, -0.598609963377872640, -0.598650014661743610, -0.598690064448989980, -0.598730112739510710, -0.598770159533206230, +-0.598810204829976270, -0.598850248629721250, -0.598890290932340250, -0.598930331737733470, -0.598970371045800860, -0.599010408856442740, -0.599050445169558190, -0.599090479985047500, +-0.599130513302810640, -0.599170545122747920, -0.599210575444758420, -0.599250604268742440, -0.599290631594600390, -0.599330657422231350, -0.599370681751535740, -0.599410704582413300, +-0.599450725914764560, -0.599490745748488600, -0.599530764083485820, -0.599570780919656100, -0.599610796256899840, -0.599650810095116120, -0.599690822434205460, -0.599730833274067730, +-0.599770842614603230, -0.599810850455711250, -0.599850856797292220, -0.599890861639246100, -0.599930864981473080, -0.599970866823872570, -0.600010867166344890, -0.600050866008789980, +-0.600090863351108390, -0.600130859193199200, -0.600170853534962910, -0.600210846376299730, -0.600250837717109190, -0.600290827557291570, -0.600330815896746860, -0.600370802735375350, +-0.600410788073076570, -0.600450771909750820, -0.600490754245298190, -0.600530735079618960, -0.600570714412612560, -0.600610692244179400, -0.600650668574219450, -0.600690643402633230, +-0.600730616729320040, -0.600770588554180310, -0.600810558877114100, -0.600850527698021940, -0.600890495016802920, -0.600930460833357770, -0.600970425147586810, -0.601010387959389440, +-0.601050349268666180, -0.601090309075316910, -0.601130267379242240, -0.601170224180341610, -0.601210179478515410, -0.601250133273663720, -0.601290085565687080, -0.601330036354484900, +-0.601369985639957580, -0.601409933422005330, -0.601449879700528540, -0.601489824475426760, -0.601529767746600390, -0.601569709513949610, -0.601609649777374970, -0.601649588536775750, +-0.601689525792052590, -0.601729461543106030, -0.601769395789835460, -0.601809328532141310, -0.601849259769923870, -0.601889189503083680, -0.601929117731520140, -0.601969044455133770, +-0.602008969673824890, -0.602048893387493790, -0.602088815596040220, -0.602128736299364590, -0.602168655497367090, -0.602208573189948250, -0.602248489377007700, -0.602288404058445970, +-0.602328317234163140, -0.602368228904059940, -0.602408139068035810, -0.602448047725991250, -0.602487954877826690, -0.602527860523442540, -0.602567764662738310, -0.602607667295614770, +-0.602647568421972420, -0.602687468041710690, -0.602727366154730440, -0.602767262760931620, -0.602807157860215100, -0.602847051452480300, -0.602886943537627840, -0.602926834115558140, +-0.602966723186171620, -0.603006610749367900, -0.603046496805047740, -0.603086381353111210, -0.603126264393459180, -0.603166145925991160, -0.603206025950607790, -0.603245904467209270, +-0.603285781475696340, -0.603325656975968630, -0.603365530967926780, -0.603405403451471530, -0.603445274426502310, -0.603485143892919960, -0.603525011850624680, -0.603564878299517330, +-0.603604743239497420, -0.603644606670465600, -0.603684468592322280, -0.603724329004968090, -0.603764187908302770, -0.603804045302226980, -0.603843901186641110, -0.603883755561445800, +-0.603923608426540800, -0.603963459781826750, -0.604003309627203940, -0.604043157962573350, -0.604083004787834500, -0.604122850102888130, -0.604162693907635000, -0.604202536201974730, +-0.604242376985808070, -0.604282216259035550, -0.604322054021557810, -0.604361890273274690, -0.604401725014086730, -0.604441558243894450, -0.604481389962598700, -0.604521220170099130, +-0.604561048866296470, -0.604600876051091140, -0.604640701724384000, -0.604680525886074790, -0.604720348536064270, -0.604760169674252830, -0.604799989300541350, -0.604839807414829570, +-0.604879624017018220, -0.604919439107008180, -0.604959252684699190, -0.604999064749992100, -0.605038875302787220, -0.605078684342985620, -0.605118491870486940, -0.605158297885192040, +-0.605198102387001450, -0.605237905375815900, -0.605277706851535150, -0.605317506814060270, -0.605357305263291570, -0.605397102199129900, -0.605436897621475230, -0.605476691530228210, +-0.605516483925289560, -0.605556274806560050, -0.605596064173939410, -0.605635852027328610, -0.605675638366628300, -0.605715423191739100, -0.605755206502561090, -0.605794988298995030, +-0.605834768580941870, -0.605874547348301480, -0.605914324600974610, -0.605954100338861990, -0.605993874561864490, -0.606033647269881960, -0.606073418462815260, -0.606113188140565030, +-0.606152956303032230, -0.606192722950116610, -0.606232488081719260, -0.606272251697740680, -0.606312013798081750, -0.606351774382642540, -0.606391533451323790, -0.606431291004026260, +-0.606471047040650800, -0.606510801561097380, -0.606550554565267070, -0.606590306053060630, -0.606630056024378140, -0.606669804479120440, -0.606709551417188190, -0.606749296838482550, +-0.606789040742903190, -0.606828783130351270, -0.606868524000727440, -0.606908263353932550, -0.606948001189866690, -0.606987737508430940, -0.607027472309525700, -0.607067205593052270, +-0.607106937358910300, -0.607146667607001090, -0.607186396337225260, -0.607226123549483690, -0.607265849243676550, -0.607305573419704700, -0.607345296077469340, -0.607385017216870330, +-0.607424736837808840, -0.607464454940185420, -0.607504171523901240, -0.607543886588856390, -0.607583600134951720, -0.607623312162088090, -0.607663022670166470, -0.607702731659086950, +-0.607742439128750700, -0.607782145079058260, -0.607821849509910810, -0.607861552421208430, -0.607901253812852090, -0.607940953684742770, -0.607980652036781310, -0.608020348868867910, +-0.608060044180903540, -0.608099737972789160, -0.608139430244425740, -0.608179120995713470, -0.608218810226553330, -0.608258497936846500, -0.608298184126493060, -0.608337868795394200, +-0.608377551943450670, -0.608417233570563650, -0.608456913676633130, -0.608496592261560390, -0.608536269325246070, -0.608575944867591480, -0.608615618888496690, -0.608655291387862900, +-0.608694962365590840, -0.608734631821581720, -0.608774299755735600, -0.608813966167953800, -0.608853631058137170, -0.608893294426186670, -0.608932956272002610, -0.608972616595486180, +-0.609012275396538570, -0.609051932675059970, -0.609091588430951460, -0.609131242664114000, -0.609170895374448800, -0.609210546561856030, -0.609250196226236880, -0.609289844367492230, +-0.609329490985523250, -0.609369136080230240, -0.609408779651514410, -0.609448421699276710, -0.609488062223418230, -0.609527701223839150, -0.609567338700441000, -0.609606974653124410, +-0.609646609081790690, -0.609686241986340140, -0.609725873366673940, -0.609765503222693520, -0.609805131554298940, -0.609844758361391510, -0.609884383643872210, -0.609924007401642210, +-0.609963629634601930, -0.610003250342652570, -0.610042869525695090, -0.610082487183630780, -0.610122103316359850, -0.610161717923783710, -0.610201331005803320, -0.610240942562319870, +-0.610280552593233770, -0.610320161098446220, -0.610359768077858410, -0.610399373531371410, -0.610438977458885650, -0.610478579860302410, -0.610518180735523110, -0.610557780084448050, +-0.610597377906978430, -0.610636974203015440, -0.610676568972460370, -0.610716162215213520, -0.610755753931176320, -0.610795344120249610, -0.610834932782335030, -0.610874519917332660, +-0.610914105525144020, -0.610953689605670090, -0.610993272158812380, -0.611032853184471090, -0.611072432682547630, -0.611112010652943070, -0.611151587095558950, -0.611191162010295440, +-0.611230735397053970, -0.611270307255735720, -0.611309877586242110, -0.611349446388473330, -0.611389013662331000, -0.611428579407716550, -0.611468143624530170, -0.611507706312673480, +-0.611547267472047570, -0.611586827102553850, -0.611626385204092630, -0.611665941776565520, -0.611705496819873520, -0.611745050333918130, -0.611784602318599770, -0.611824152773819960, +-0.611863701699479680, -0.611903249095480550, -0.611942794961722990, -0.611982339298108300, -0.612021882104537900, -0.612061423380913070, -0.612100963127134360, -0.612140501343103270, +-0.612180038028721230, -0.612219573183888750, -0.612259106808507370, -0.612298638902478150, -0.612338169465702740, -0.612377698498081550, -0.612417225999516090, -0.612456751969907560, +-0.612496276409157600, -0.612535799317166510, -0.612575320693835910, -0.612614840539067010, -0.612654358852761430, -0.612693875634819580, -0.612733390885143000, -0.612772904603632980, +-0.612812416790191050, -0.612851927444717730, -0.612891436567114530, -0.612930944157283110, -0.612970450215124090, -0.613009954740538760, -0.613049457733428670, -0.613088959193695220, +-0.613128459121239140, -0.613167957515961760, -0.613207454377764580, -0.613246949706549140, -0.613286443502215840, -0.613325935764666540, -0.613365426493802430, -0.613404915689525040, +-0.613444403351735000, -0.613483889480333940, -0.613523374075223280, -0.613562857136304430, -0.613602338663478130, -0.613641818656645910, -0.613681297115709180, -0.613720774040569570, +-0.613760249431127720, -0.613799723287285160, -0.613839195608943730, -0.613878666396003860, -0.613918135648367390, -0.613957603365935630, -0.613997069548610110, -0.614036534196291670, +-0.614075997308881850, -0.614115458886281940, -0.614154918928393910, -0.614194377435118070, -0.614233834406356370, -0.614273289842010020, -0.614312743741980860, -0.614352196106169530, +-0.614391646934477680, -0.614431096226806690, -0.614470543983058230, -0.614509990203133130, -0.614549434886933140, -0.614588878034359800, -0.614628319645313950, -0.614667759719697340, +-0.614707198257411270, -0.614746635258357600, -0.614786070722436960, -0.614825504649551100, -0.614864937039601540, -0.614904367892490030, -0.614943797208117200, -0.614983224986384910, +-0.615022651227194460, -0.615062075930447820, -0.615101499096045610, -0.615140920723889710, -0.615180340813881400, -0.615219759365922660, -0.615259176379914230, -0.615298591855757750, +-0.615338005793355180, -0.615377418192607270, -0.615416829053415770, -0.615456238375682200, -0.615495646159308410, -0.615535052404195150, -0.615574457110244280, -0.615613860277357210, +-0.615653261905435900, -0.615692661994381110, -0.615732060544094570, -0.615771457554477930, -0.615810853025433040, -0.615850246956860640, -0.615889639348662590, -0.615929030200740410, +-0.615968419512996080, -0.616007807285330330, -0.616047193517645030, -0.616086578209842140, -0.616125961361822410, -0.616165342973487800, -0.616204723044739830, -0.616244101575480370, +-0.616283478565610390, -0.616322854015031620, -0.616362227923645810, -0.616401600291354710, -0.616440971118059290, -0.616480340403661400, -0.616519708148062670, -0.616559074351165080, +-0.616598439012869480, -0.616637802133077730, -0.616677163711691460, -0.616716523748612630, -0.616755882243742120, -0.616795239196981980, -0.616834594608233640, -0.616873948477399180, +-0.616913300804379560, -0.616952651589076750, -0.616992000831392500, -0.617031348531227990, -0.617070694688485080, -0.617110039303065520, -0.617149382374871050, -0.617188723903802970, +-0.617228063889762920, -0.617267402332652760, -0.617306739232374450, -0.617346074588828950, -0.617385408401918250, -0.617424740671544070, -0.617464071397608280, -0.617503400580012070, +-0.617542728218657300, -0.617582054313445820, -0.617621378864279480, -0.617660701871059260, -0.617700023333687340, -0.617739343252065810, -0.617778661626095520, -0.617817978455678540, +-0.617857293740716630, -0.617896607481111750, -0.617935919676765090, -0.617975230327578620, -0.618014539433454080, -0.618053846994293550, -0.618093153009998010, -0.618132457480469630, +-0.618171760405610170, -0.618211061785321590, -0.618250361619504970, -0.618289659908062510, -0.618328956650895820, -0.618368251847907110, -0.618407545498997460, -0.618446837604068930, +-0.618486128163023620, -0.618525417175762700, -0.618564704642188270, -0.618603990562202060, -0.618643274935706140, -0.618682557762601730, -0.618721839042790990, -0.618761118776175570, +-0.618800396962657650, -0.618839673602138540, -0.618878948694520090, -0.618918222239704390, -0.618957494237593500, -0.618996764688088400, -0.619036033591091490, -0.619075300946504430, +-0.619114566754229490, -0.619153831014167770, -0.619193093726221560, -0.619232354890292490, -0.619271614506282990, -0.619310872574094120, -0.619350129093627970, -0.619389384064786830, +-0.619428637487472010, -0.619467889361585480, -0.619507139687029310, -0.619546388463705580, -0.619585635691515590, -0.619624881370361420, -0.619664125500145160, -0.619703368080768870, +-0.619742609112133750, -0.619781848594142200, -0.619821086526695990, -0.619860322909697390, -0.619899557743047720, -0.619938791026649060, -0.619978022760403480, -0.620017252944213170, +-0.620056481577979430, -0.620095708661604460, -0.620134934194990550, -0.620174158178038890, -0.620213380610651900, -0.620252601492731540, -0.620291820824179880, -0.620331038604898470, +-0.620370254834789360, -0.620409469513754640, -0.620448682641696610, -0.620487894218516470, -0.620527104244116610, -0.620566312718399020, -0.620605519641265980, -0.620644725012618800, +-0.620683928832359790, -0.620723131100391010, -0.620762331816614670, -0.620801530980932270, -0.620840728593245910, -0.620879924653458200, -0.620919119161470250, -0.620958312117184440, +-0.620997503520502980, -0.621036693371328050, -0.621075881669561070, -0.621115068415104330, -0.621154253607860030, -0.621193437247730350, -0.621232619334616710, -0.621271799868421630, +-0.621310978849046960, -0.621350156276395230, -0.621389332150367730, -0.621428506470866890, -0.621467679237794780, -0.621506850451053920, -0.621546020110545490, -0.621585188216172040, +-0.621624354767835620, -0.621663519765438650, -0.621702683208882560, -0.621741845098069730, -0.621781005432902600, -0.621820164213282680, -0.621859321439112270, -0.621898477110293670, +-0.621937631226729180, -0.621976783788320220, -0.622015934794969310, -0.622055084246578630, -0.622094232143050490, -0.622133378484286510, -0.622172523270189020, -0.622211666500660290, +-0.622250808175602630, -0.622289948294917680, -0.622329086858507850, -0.622368223866275330, -0.622407359318122630, -0.622446493213951070, -0.622485625553663380, -0.622524756337161980, +-0.622563885564348270, -0.622603013235124900, -0.622642139349393940, -0.622681263907058020, -0.622720386908018560, -0.622759508352178190, -0.622798628239438990, -0.622837746569703590, +-0.622876863342873400, -0.622915978558851170, -0.622955092217538970, -0.622994204318839340, -0.623033314862653900, -0.623072423848885170, -0.623111531277435350, -0.623150637148207060, +-0.623189741461101840, -0.623228844216022320, -0.623267945412870890, -0.623307045051549440, -0.623346143131960240, -0.623385239654005720, -0.623424334617588390, -0.623463428022610010, +-0.623502519868972980, -0.623541610156579610, -0.623580698885332630, -0.623619786055133570, -0.623658871665884960, -0.623697955717489210, -0.623737038209848940, -0.623776119142865680, +-0.623815198516442180, -0.623854276330480630, -0.623893352584883760, -0.623932427279553230, -0.623971500414391530, -0.624010571989301540, -0.624049642004184670, -0.624088710458943760, +-0.624127777353481020, -0.624166842687699170, -0.624205906461499980, -0.624244968674785850, -0.624284029327459410, -0.624323088419423300, -0.624362145950579040, -0.624401201920829370, +-0.624440256330076720, -0.624479309178223810, -0.624518360465172280, -0.624557410190824890, -0.624596458355083930, -0.624635504957852140, -0.624674549999031270, -0.624713593478524070, +-0.624752635396232820, -0.624791675752060400, -0.624830714545908440, -0.624869751777679560, -0.624908787447276740, -0.624947821554601600, -0.624986854099557010, -0.625025885082045150, +-0.625064914501968990, -0.625103942359230170, -0.625142968653731420, -0.625181993385375390, -0.625221016554064590, -0.625260038159700990, -0.625299058202187340, -0.625338076681425940, +-0.625377093597319740, -0.625416108949770400, -0.625455122738680870, -0.625494134963953560, -0.625533145625491120, -0.625572154723195610, -0.625611162256969670, -0.625650168226716150, +-0.625689172632336810, -0.625728175473734600, -0.625767176750811950, -0.625806176463471700, -0.625845174611615710, -0.625884171195146720, -0.625923166213967370, -0.625962159667980410, +-0.626001151557087690, -0.626040141881192060, -0.626079130640196160, -0.626118117834002730, -0.626157103462513740, -0.626196087525631830, -0.626235070023259840, -0.626274050955300420, +-0.626313030321655640, -0.626352008122228240, -0.626390984356921090, -0.626429959025636250, -0.626468932128276480, -0.626507903664744290, -0.626546873634942770, -0.626585842038773650, +-0.626624808876140030, -0.626663774146944300, -0.626702737851089540, -0.626741699988477620, -0.626780660559011380, -0.626819619562593470, -0.626858576999126950, -0.626897532868513570, +-0.626936487170656310, -0.626975439905457900, -0.627014391072821310, -0.627053340672648290, -0.627092288704841900, -0.627131235169304910, -0.627170180065940050, -0.627209123394649510, +-0.627248065155336040, -0.627287005347902830, -0.627325943972251830, -0.627364881028285800, -0.627403816515907710, -0.627442750435020400, -0.627481682785525740, -0.627520613567327020, +-0.627559542780326660, -0.627598470424427850, -0.627637396499532540, -0.627676321005543710, -0.627715243942364110, -0.627754165309896690, -0.627793085108043550, -0.627832003336707740, +-0.627870919995791810, -0.627909835085199040, -0.627948748604831300, -0.627987660554591650, -0.628026570934383190, -0.628065479744107980, -0.628104386983669110, -0.628143292652969200, +-0.628182196751911450, -0.628221099280397820, -0.628260000238331510, -0.628298899625615140, -0.628337797442151900, -0.628376693687843880, -0.628415588362594040, -0.628454481466305230, +-0.628493372998880530, -0.628532262960222130, -0.628571151350233110, -0.628610038168816110, -0.628648923415874420, -0.628687807091310000, -0.628726689195026170, -0.628765569726925880, +-0.628804448686911320, -0.628843326074885690, -0.628882201890751720, -0.628921076134412620, -0.628959948805770440, -0.628998819904728390, -0.629037689431189320, -0.629076557385056410, +-0.629115423766231750, -0.629154288574618410, -0.629193151810119480, -0.629232013472637910, -0.629270873562076120, -0.629309732078336960, -0.629348589021323620, -0.629387444390939080, +-0.629426298187085620, -0.629465150409666330, -0.629504001058584620, -0.629542850133742450, -0.629581697635043240, -0.629620543562389720, -0.629659387915685320, -0.629698230694832000, +-0.629737071899733050, -0.629775911530291550, -0.629814749586410480, -0.629853586067992350, -0.629892420974940140, -0.629931254307156910, -0.629970086064545850, -0.630008916247009280, +-0.630047744854450480, -0.630086571886772200, -0.630125397343877850, -0.630164221225669730, -0.630203043532051030, -0.630241864262924720, -0.630280683418194100, -0.630319500997761350, +-0.630358317001530000, -0.630397131429403120, -0.630435944281283020, -0.630474755557073110, -0.630513565256676230, -0.630552373379995920, -0.630591179926934250, -0.630629984897394640, +-0.630668788291280150, -0.630707590108493870, -0.630746390348938420, -0.630785189012516900, -0.630823986099132480, -0.630862781608688360, -0.630901575541087060, -0.630940367896231650, +-0.630979158674025430, -0.631017947874371710, -0.631056735497172670, -0.631095521542331840, -0.631134306009752510, -0.631173088899337100, -0.631211870210989010, -0.631250649944611220, +-0.631289428100107130, -0.631328204677379160, -0.631366979676330600, -0.631405753096864640, -0.631444524938884700, -0.631483295202293070, -0.631522063886993170, -0.631560830992888070, +-0.631599596519881290, -0.631638360467875140, -0.631677122836773130, -0.631715883626478350, -0.631754642836894090, -0.631793400467922980, -0.631832156519468340, -0.631870910991433670, +-0.631909663883721380, -0.631948415196234900, -0.631987164928877410, -0.632025913081552320, -0.632064659654162140, -0.632103404646610300, -0.632142148058799870, -0.632180889890634480, +-0.632219630142016540, -0.632258368812849580, -0.632297105903036560, -0.632335841412481230, -0.632374575341085880, -0.632413307688754140, -0.632452038455389110, -0.632490767640894290, +-0.632529495245172320, -0.632568221268126510, -0.632606945709660140, -0.632645668569676860, -0.632684389848078950, -0.632723109544770180, -0.632761827659653830, -0.632800544192632650, +-0.632839259143610170, -0.632877972512489450, -0.632916684299174140, -0.632955394503566860, -0.632994103125571030, -0.633032810165089940, -0.633071515622027240, -0.633110219496285320, +-0.633148921787767830, -0.633187622496378170, -0.633226321622019640, -0.633265019164595100, -0.633303715124007960, -0.633342409500161520, -0.633381102292959410, -0.633419793502304150, +-0.633458483128099490, -0.633497171170248840, -0.633535857628655050, -0.633574542503221540, -0.633613225793851710, -0.633651907500449200, -0.633690587622916520, -0.633729266161157430, +-0.633767943115075120, -0.633806618484573310, -0.633845292269554550, -0.633883964469922680, -0.633922635085580780, -0.633961304116432700, -0.633999971562380970, -0.634038637423329440, +-0.634077301699181200, -0.634115964389840080, -0.634154625495208730, -0.634193285015190790, -0.634231942949689990, -0.634270599298608960, -0.634309254061851460, -0.634347907239320770, +-0.634386558830920650, -0.634425208836553840, -0.634463857256124090, -0.634502504089534570, -0.634541149336689150, -0.634579792997490570, -0.634618435071842460, -0.634657075559648340, +-0.634695714460811860, -0.634734351775235630, -0.634772987502823630, -0.634811621643479150, -0.634850254197105950, -0.634888885163606750, -0.634927514542885320, -0.634966142334845500, +-0.635004768539390030, -0.635043393156422550, -0.635082016185846590, -0.635120637627565990, -0.635159257481483390, -0.635197875747502640, -0.635236492425527270, -0.635275107515460900, +-0.635313721017206510, -0.635352332930667840, -0.635390943255748300, -0.635429551992351740, -0.635468159140380910, -0.635506764699739770, -0.635545368670331620, -0.635583971052060440, +-0.635622571844829070, -0.635661171048541140, -0.635699768663100410, -0.635738364688410500, -0.635776959124374370, -0.635815551970895900, -0.635854143227878810, -0.635892732895226080, +-0.635931320972841440, -0.635969907460628540, -0.636008492358491220, -0.636047075666332340, -0.636085657384055760, -0.636124237511564990, -0.636162816048764010, -0.636201392995555670, +-0.636239968351843820, -0.636278542117532100, -0.636317114292524360, -0.636355684876723450, -0.636394253870033340, -0.636432821272357560, -0.636471387083600070, -0.636509951303663830, +-0.636548513932452710, -0.636587074969870550, -0.636625634415820430, -0.636664192270206210, -0.636702748532931520, -0.636741303203900320, -0.636779856283015590, -0.636818407770181060, +-0.636856957665300590, -0.636895505968278040, -0.636934052679016480, -0.636972597797419660, -0.637011141323391430, -0.637049683256835640, -0.637088223597655380, -0.637126762345754490, +-0.637165299501036730, -0.637203835063406050, -0.637242369032765430, -0.637280901409018830, -0.637319432192070430, -0.637357961381822990, -0.637396488978180800, -0.637435014981047270, +-0.637473539390326580, -0.637512062205921710, -0.637550583427736630, -0.637589103055675180, -0.637627621089641220, -0.637666137529537940, -0.637704652375269300, -0.637743165626738940, +-0.637781677283851160, -0.637820187346508800, -0.637858695814615850, -0.637897202688076260, -0.637935707966794000, -0.637974211650672140, -0.638012713739614770, -0.638051214233525620, +-0.638089713132308670, -0.638128210435867200, -0.638166706144105200, -0.638205200256926730, -0.638243692774234980, -0.638282183695933920, -0.638320673021927410, -0.638359160752119630, +-0.638397646886413540, -0.638436131424713340, -0.638474614366922880, -0.638513095712946120, -0.638551575462686370, -0.638590053616047590, -0.638628530172933750, -0.638667005133248920, +-0.638705478496896180, -0.638743950263779840, -0.638782420433803510, -0.638820889006871620, -0.638859355982887010, -0.638897821361754100, -0.638936285143376970, -0.638974747327658800, +-0.639013207914503670, -0.639051666903815650, -0.639090124295498720, -0.639128580089456170, -0.639167034285592180, -0.639205486883810510, -0.639243937884015570, -0.639282387286110420, +-0.639320835089999260, -0.639359281295586060, -0.639397725902774990, -0.639436168911469260, -0.639474610321573160, -0.639513050132990420, -0.639551488345625470, -0.639589924959381500, +-0.639628359974162670, -0.639666793389873310, -0.639705225206416590, -0.639743655423696820, -0.639782084041617850, -0.639820511060084090, -0.639858936478998610, -0.639897360298265940, +-0.639935782517789820, -0.639974203137474550, -0.640012622157223430, -0.640051039576940760, -0.640089455396530500, -0.640127869615896960, -0.640166282234943320, -0.640204693253574100, +-0.640243102671693040, -0.640281510489204560, -0.640319916706012070, -0.640358321322019750, -0.640396724337131910, -0.640435125751251940, -0.640473525564284160, -0.640511923776132640, +-0.640550320386701570, -0.640588715395894460, -0.640627108803615400, -0.640665500609768680, -0.640703890814258490, -0.640742279416988250, -0.640780666417862350, -0.640819051816784780, +-0.640857435613659930, -0.640895817808391110, -0.640934198400882730, -0.640972577391038860, -0.641010954778763910, -0.641049330563961290, -0.641087704746535310, -0.641126077326390040, +-0.641164448303429890, -0.641202817677558270, -0.641241185448679700, -0.641279551616698470, -0.641317916181518010, -0.641356279143042720, -0.641394640501176780, -0.641433000255824610, +-0.641471358406889510, -0.641509714954276110, -0.641548069897888370, -0.641586423237630710, -0.641624774973406750, -0.641663125105120910, -0.641701473632677160, -0.641739820555980110, +-0.641778165874933190, -0.641816509589440810, -0.641854851699407150, -0.641893192204736730, -0.641931531105332960, -0.641969868401100370, -0.642008204091943480, -0.642046538177765690, +-0.642084870658471640, -0.642123201533965400, -0.642161530804151390, -0.642199858468933350, -0.642238184528215570, -0.642276508981902360, -0.642314831829898240, -0.642353153072106610, +-0.642391472708432220, -0.642429790738779040, -0.642468107163051800, -0.642506421981153930, -0.642544735192989940, -0.642583046798464230, -0.642621356797481220, -0.642659665189944440, +-0.642697971975758400, -0.642736277154827950, -0.642774580727056400, -0.642812882692348380, -0.642851183050608180, -0.642889481801740330, -0.642927778945648450, -0.642966074482237080, +-0.643004368411410620, -0.643042660733073480, -0.643080951447129400, -0.643119240553482910, -0.643157528052038410, -0.643195813942700310, -0.643234098225372470, -0.643272380899959310, +-0.643310661966365100, -0.643348941424494720, -0.643387219274251580, -0.643425495515540400, -0.643463770148265500, -0.643502043172331510, -0.643540314587642050, -0.643578584394101870, +-0.643616852591615500, -0.643655119180086670, -0.643693384159420120, -0.643731647529519950, -0.643769909290291100, -0.643808169441637210, -0.643846427983462810, -0.643884684915672300, +-0.643922940238170540, -0.643961193950860930, -0.643999446053648450, -0.644037696546437390, -0.644075945429132270, -0.644114192701637060, -0.644152438363856380, -0.644190682415694550, +-0.644228924857056410, -0.644267165687845590, -0.644305404907966840, -0.644343642517324900, -0.644381878515823630, -0.644420112903367540, -0.644458345679861160, -0.644496576845209330, +-0.644534806399315710, -0.644573034342085020, -0.644611260673421780, -0.644649485393230750, -0.644687708501415660, -0.644725929997881250, -0.644764149882532060, -0.644802368155272810, +-0.644840584816007370, -0.644878799864640360, -0.644917013301076420, -0.644955225125220300, -0.644993435336975730, -0.645031643936247570, -0.645069850922940670, -0.645108056296958890, +-0.645146260058206860, -0.645184462206589200, -0.645222662742010680, -0.645260861664375240, -0.645299058973587520, -0.645337254669552270, -0.645375448752174230, -0.645413641221357140, +-0.645451832077006070, -0.645490021319025330, -0.645528208947319880, -0.645566394961793580, -0.645604579362351380, -0.645642762148897600, -0.645680943321337300, -0.645719122879574340, +-0.645757300823513570, -0.645795477153059850, -0.645833651868117030, -0.645871824968590190, -0.645909996454383740, -0.645948166325402640, -0.645986334581550860, -0.646024501222733140, +-0.646062666248854220, -0.646100829659818960, -0.646138991455531330, -0.646177151635896170, -0.646215310200818130, -0.646253467150202150, -0.646291622483952220, -0.646329776201973180, +-0.646367928304169780, -0.646406078790446760, -0.646444227660708300, -0.646482374914859270, -0.646520520552804290, -0.646558664574448330, -0.646596806979695350, -0.646634947768450430, +-0.646673086940618420, -0.646711224496103410, -0.646749360434810240, -0.646787494756643770, -0.646825627461508850, -0.646863758549309550, -0.646901888019950850, -0.646940015873337380, +-0.646978142109374320, -0.647016266727965420, -0.647054389729015970, -0.647092511112430490, -0.647130630878114070, -0.647168749025970770, -0.647206865555905560, -0.647244980467823190, +-0.647283093761628740, -0.647321205437226150, -0.647359315494520640, -0.647397423933417150, -0.647435530753819770, -0.647473635955633450, -0.647511739538763180, -0.647549841503113790, +-0.647587941848589590, -0.647626040575095430, -0.647664137682536280, -0.647702233170816990, -0.647740327039841860, -0.647778419289515850, -0.647816509919743820, -0.647854598930430850, +-0.647892686321481110, -0.647930772092799590, -0.647968856244291120, -0.648006938775860910, -0.648045019687413020, -0.648083098978852520, -0.648121176650084620, -0.648159252701013490, +-0.648197327131544210, -0.648235399941581640, -0.648273471131030840, -0.648311540699796020, -0.648349608647782350, -0.648387674974894690, -0.648425739681038230, -0.648463802766117040, +-0.648501864230036310, -0.648539924072701000, -0.648577982294016090, -0.648616038893885970, -0.648654093872215840, -0.648692147228910330, -0.648730198963874850, -0.648768249077013470, +-0.648806297568231600, -0.648844344437433880, -0.648882389684525720, -0.648920433309411180, -0.648958475311995580, -0.648996515692184080, -0.649034554449881010, -0.649072591584991530, +-0.649110627097420620, -0.649148660987073470, -0.649186693253854250, -0.649224723897668390, -0.649262752918420620, -0.649300780316016350, -0.649338806090359880, -0.649376830241356280, +-0.649414852768910640, -0.649452873672928250, -0.649490892953313300, -0.649528910609971090, -0.649566926642806690, -0.649604941051725170, -0.649642953836631070, -0.649680964997429560, +-0.649718974534026050, -0.649756982446324630, -0.649794988734230810, -0.649832993397649550, -0.649870996436486160, -0.649908997850644820, -0.649946997640031170, -0.649984995804549830, +-0.650022992344106540, -0.650060987258605280, -0.650098980547951570, -0.650136972212050470, -0.650174962250807290, -0.650212950664126210, -0.650250937451912980, -0.650288922614072230, +-0.650326906150509590, -0.650364888061129350, -0.650402868345836830, -0.650440847004537530, -0.650478824037135750, -0.650516799443536910, -0.650554773223646080, -0.650592745377368660, +-0.650630715904609080, -0.650668684805272620, -0.650706652079264480, -0.650744617726490060, -0.650782581746853770, -0.650820544140261030, -0.650858504906616900, -0.650896464045826910, +-0.650934421557795350, -0.650972377442427750, -0.651010331699629300, -0.651048284329305280, -0.651086235331360230, -0.651124184705699550, -0.651162132452228760, -0.651200078570852270, +-0.651238023061475600, -0.651275965924003940, -0.651313907158342700, -0.651351846764396280, -0.651389784742070320, -0.651427721091269780, -0.651465655811900410, -0.651503588903866500, +-0.651541520367073580, -0.651579450201426940, -0.651617378406831980, -0.651655304983193240, -0.651693229930416230, -0.651731153248406140, -0.651769074937068480, -0.651806994996307900, +-0.651844913426029680, -0.651882830226139350, -0.651920745396542100, -0.651958658937142780, -0.651996570847846790, -0.652034481128559660, -0.652072389779186020, -0.652110296799631390, +-0.652148202189801070, -0.652186105949600580, -0.652224008078934440, -0.652261908577708270, -0.652299807445827380, -0.652337704683197290, -0.652375600289722520, -0.652413494265308920, +-0.652451386609861460, -0.652489277323285880, -0.652527166405486800, -0.652565053856369760, -0.652602939675840150, -0.652640823863803510, -0.652678706420164460, -0.652716587344828620, +-0.652754466637701650, -0.652792344298688270, -0.652830220327694000, -0.652868094724624040, -0.652905967489384340, -0.652943838621879320, -0.652981708122014730, -0.653019575989695840, +-0.653057442224828310, -0.653095306827316870, -0.653133169797067260, -0.653171031133984670, -0.653208890837974730, -0.653246748908942300, -0.653284605346793110, -0.653322460151432250, +-0.653360313322765670, -0.653398164860697910, -0.653436014765134800, -0.653473863035981870, -0.653511709673144090, -0.653549554676526980, -0.653587398046035940, -0.653625239781576830, +-0.653663079883054170, -0.653700918350373920, -0.653738755183441270, -0.653776590382162180, -0.653814423946441180, -0.653852255876184230, -0.653890086171296510, -0.653927914831684000, +-0.653965741857251310, -0.654003567247904320, -0.654041391003548410, -0.654079213124089340, -0.654117033609431850, -0.654154852459481910, -0.654192669674144690, -0.654230485253326280, +-0.654268299196931190, -0.654306111504865400, -0.654343922177034740, -0.654381731213343860, -0.654419538613698610, -0.654457344378004620, -0.654495148506167520, -0.654532950998092280, +-0.654570751853684630, -0.654608551072850100, -0.654646348655494540, -0.654684144601522690, -0.654721938910840520, -0.654759731583353540, -0.654797522618967620, -0.654835312017587490, +-0.654873099779119120, -0.654910885903467910, -0.654948670390539830, -0.654986453240239850, -0.655024234452473710, -0.655062014027147250, -0.655099791964165460, -0.655137568263434170, +-0.655175342924859020, -0.655213115948345750, -0.655250887333799440, -0.655288657081125820, -0.655326425190230650, -0.655364191661019780, -0.655401956493397940, -0.655439719687271330, +-0.655477481242545460, -0.655515241159126180, -0.655552999436918360, -0.655590756075828170, -0.655628511075761030, -0.655666264436623010, -0.655704016158318860, -0.655741766240754750, +-0.655779514683836550, -0.655817261487469330, -0.655855006651558830, -0.655892750176010900, -0.655930492060731400, -0.655968232305625290, -0.656005970910598650, -0.656043707875556990, +-0.656081443200406510, -0.656119176885052060, -0.656156908929399600, -0.656194639333354980, -0.656232368096824060, -0.656270095219711800, -0.656307820701924390, -0.656345544543367350, +-0.656383266743946870, -0.656420987303567900, -0.656458706222136420, -0.656496423499558500, -0.656534139135739210, -0.656571853130584530, -0.656609565484000290, -0.656647276195892360, +-0.656684985266166030, -0.656722692694727160, -0.656760398481481600, -0.656798102626335310, -0.656835805129193480, -0.656873505989962080, -0.656911205208547070, -0.656948902784854180, +-0.656986598718788840, -0.657024293010257000, -0.657061985659164400, -0.657099676665417130, -0.657137366028920370, -0.657175053749580180, -0.657212739827302330, -0.657250424261993090, +-0.657288107053557340, -0.657325788201901350, -0.657363467706931210, -0.657401145568552110, -0.657438821786670120, -0.657476496361190990, -0.657514169292021110, -0.657551840579065350, +-0.657589510222230000, -0.657627178221420920, -0.657664844576544280, -0.657702509287505180, -0.657740172354209670, -0.657777833776563850, -0.657815493554473770, -0.657853151687844640, +-0.657890808176582630, -0.657928463020593490, -0.657966116219783630, -0.658003767774058110, -0.658041417683323140, -0.658079065947485000, -0.658116712566448880, -0.658154357540120970, +-0.658192000868407120, -0.658229642551213740, -0.658267282588445800, -0.658304920980009700, -0.658342557725811180, -0.658380192825756770, -0.658417826279751430, -0.658455458087701560, +-0.658493088249513030, -0.658530716765092120, -0.658568343634344130, -0.658605968857175260, -0.658643592433491460, -0.658681214363198930, -0.658718834646203180, -0.658756453282410280, +-0.658794070271726540, -0.658831685614057360, -0.658869299309308930, -0.658906911357387210, -0.658944521758198620, -0.658982130511648330, -0.659019737617642760, -0.659057343076087760, +-0.659094946886889850, -0.659132549049954220, -0.659170149565187160, -0.659207748432494740, -0.659245345651783390, -0.659282941222958160, -0.659320535145925700, -0.659358127420591860, +-0.659395718046863030, -0.659433307024644640, -0.659470894353842870, -0.659508480034364020, -0.659546064066114160, -0.659583646448998810, -0.659621227182924490, -0.659658806267797270, +-0.659696383703522790, -0.659733959490007350, -0.659771533627157010, -0.659809106114878090, -0.659846676953076190, -0.659884246141657530, -0.659921813680528270, -0.659959379569594830, +-0.659996943808762620, -0.660034506397937930, -0.660072067337027060, -0.660109626625936420, -0.660147184264571310, -0.660184740252838240, -0.660222294590643300, -0.660259847277893000, +-0.660297398314492750, -0.660334947700348950, -0.660372495435368130, -0.660410041519455810, -0.660447585952518290, -0.660485128734461860, -0.660522669865192920, -0.660560209344617010, +-0.660597747172640530, -0.660635283349169770, -0.660672817874111030, -0.660710350747369950, -0.660747881968853030, -0.660785411538466370, -0.660822939456116480, -0.660860465721708980, +-0.660897990335150290, -0.660935513296346590, -0.660973034605204400, -0.661010554261629360, -0.661048072265527980, -0.661085588616806660, -0.661123103315371050, -0.661160616361127770, +-0.661198127753982900, -0.661235637493843060, -0.661273145580613790, -0.661310652014201580, -0.661348156794512750, -0.661385659921453930, -0.661423161394930630, -0.661460661214849370, +-0.661498159381116560, -0.661535655893638500, -0.661573150752321150, -0.661610643957070810, -0.661648135507793890, -0.661685625404397020, -0.661723113646785710, -0.661760600234866600, +-0.661798085168546320, -0.661835568447730620, -0.661873050072325890, -0.661910530042238540, -0.661948008357375110, -0.661985485017641430, -0.662022960022944030, -0.662060433373189210, +-0.662097905068283700, -0.662135375108133030, -0.662172843492643940, -0.662210310221722720, -0.662247775295276120, -0.662285238713209660, -0.662322700475430180, -0.662360160581843880, +-0.662397619032357610, -0.662435075826876880, -0.662472530965308450, -0.662509984447558820, -0.662547436273534410, -0.662584886443141170, -0.662622334956285640, -0.662659781812874660, +-0.662697227012813860, -0.662734670556009990, -0.662772112442369550, -0.662809552671799080, -0.662846991244204320, -0.662884428159492220, -0.662921863417568980, -0.662959297018341440, +-0.662996728961715240, -0.663034159247597340, -0.663071587875893930, -0.663109014846511970, -0.663146440159357090, -0.663183863814336140, -0.663221285811355530, -0.663258706150322010, +-0.663296124831141420, -0.663333541853720510, -0.663370957217966020, -0.663408370923783910, -0.663445782971080810, -0.663483193359763250, -0.663520602089738070, -0.663558009160911120, +-0.663595414573189050, -0.663632818326478470, -0.663670220420686130, -0.663707620855717990, -0.663745019631480690, -0.663782416747880970, -0.663819812204825440, -0.663857206002220090, +-0.663894598139971650, -0.663931988617986860, -0.663969377436172350, -0.664006764594434080, -0.664044150092678810, -0.664081533930813590, -0.664118916108744180, -0.664156296626377540, +-0.664193675483620070, -0.664231052680378850, -0.664268428216559510, -0.664305802092069240, -0.664343174306814440, -0.664380544860701970, -0.664417913753637790, -0.664455280985528970, +-0.664492646556281820, -0.664530010465803400, -0.664567372713999680, -0.664604733300777520, -0.664642092226043420, -0.664679449489704590, -0.664716805091666750, -0.664754159031836770, +-0.664791511310121490, -0.664828861926427760, -0.664866210880661560, -0.664903558172729840, -0.664940903802539560, -0.664978247769996700, -0.665015590075008100, -0.665052930717480620, +-0.665090269697321210, -0.665127607014435630, -0.665164942668731160, -0.665202276660114330, -0.665239608988492100, -0.665276939653770550, -0.665314268655856630, -0.665351595994656990, +-0.665388921670078790, -0.665426245682027910, -0.665463568030411400, -0.665500888715135910, -0.665538207736108610, -0.665575525093235480, -0.665612840786423470, -0.665650154815579760, +-0.665687467180610340, -0.665724777881422150, -0.665762086917922160, -0.665799394290017110, -0.665836699997613300, -0.665874004040617810, -0.665911306418937250, -0.665948607132478830, +-0.665985906181148500, -0.666023203564853450, -0.666060499283500310, -0.666097793336996260, -0.666135085725247490, -0.666172376448160960, -0.666209665505643420, -0.666246952897602160, +-0.666284238623943150, -0.666321522684573560, -0.666358805079400370, -0.666396085808329990, -0.666433364871269360, -0.666470642268125250, -0.666507917998804930, -0.666545192063214500, +-0.666582464461261020, -0.666619735192851450, -0.666657004257892760, -0.666694271656291360, -0.666731537387954210, -0.666768801452788270, -0.666806063850700510, -0.666843324581597450, +-0.666880583645385940, -0.666917841041973050, -0.666955096771265850, -0.666992350833170660, -0.667029603227594530, -0.667066853954444430, -0.667104103013627440, -0.667141350405049960, +-0.667178596128618960, -0.667215840184241960, -0.667253082571824920, -0.667290323291275240, -0.667327562342499790, -0.667364799725405630, -0.667402035439899290, -0.667439269485887720, +-0.667476501863278120, -0.667513732571977550, -0.667550961611892200, -0.667588188982929600, -0.667625414684996480, -0.667662638718000130, -0.667699861081846870, -0.667737081776443860, +-0.667774300801698310, -0.667811518157517270, -0.667848733843807050, -0.667885947860475060, -0.667923160207428480, -0.667960370884573720, -0.667997579891818070, -0.668034787229068390, +-0.668071992896232090, -0.668109196893215460, -0.668146399219925910, -0.668183599876270300, -0.668220798862156020, -0.668257996177489490, -0.668295191822177890, -0.668332385796128300, +-0.668369578099248130, -0.668406768731443670, -0.668443957692622330, -0.668481144982691070, -0.668518330601557190, -0.668555514549127210, -0.668592696825308530, -0.668629877430008350, +-0.668667056363133170, -0.668704233624590310, -0.668741409214286930, -0.668778583132130230, -0.668815755378026840, -0.668852925951884060, -0.668890094853608950, -0.668927262083109040, +-0.668964427640290520, -0.669001591525061000, -0.669038753737327460, -0.669075914276997310, -0.669113073143977170, -0.669150230338174220, -0.669187385859495780, -0.669224539707849230, +-0.669261691883140890, -0.669298842385278370, -0.669335991214169090, -0.669373138369719570, -0.669410283851837100, -0.669447427660428970, -0.669484569795402610, -0.669521710256664400, +-0.669558849044122000, -0.669595986157682450, -0.669633121597253300, -0.669670255362741050, -0.669707387454053120, -0.669744517871096680, -0.669781646613779370, -0.669818773682007480, +-0.669855899075688770, -0.669893022794730290, -0.669930144839039570, -0.669967265208523120, -0.670004383903088470, -0.670041500922643030, -0.670078616267093970, -0.670115729936348160, +-0.670152841930312990, -0.670189952248896100, -0.670227060892003900, -0.670264167859544120, -0.670301273151423960, -0.670338376767550810, -0.670375478707831540, -0.670412578972173550, +-0.670449677560484010, -0.670486774472670690, -0.670523869708640090, -0.670560963268299730, -0.670598055151557130, -0.670635145358319580, -0.670672233888493840, -0.670709320741987640, +-0.670746405918708040, -0.670783489418562810, -0.670820571241458440, -0.670857651387302690, -0.670894729856003180, -0.670931806647466430, -0.670968881761600300, -0.671005955198311850, +-0.671043026957508840, -0.671080097039097990, -0.671117165442986830, -0.671154232169082880, -0.671191297217293540, -0.671228360587525770, -0.671265422279687000, -0.671302482293684720, +-0.671339540629426470, -0.671376597286819090, -0.671413652265770320, -0.671450705566187360, -0.671487757187977820, -0.671524807131048780, -0.671561855395307550, -0.671598901980662080, +-0.671635946887019000, -0.671672990114286160, -0.671710031662370750, -0.671747071531180630, -0.671784109720622410, -0.671821146230604070, -0.671858181061032680, -0.671895214211816310, +-0.671932245682861580, -0.671969275474076140, -0.672006303585367610, -0.672043330016643510, -0.672080354767810920, -0.672117377838777340, -0.672154399229450310, -0.672191418939737660, +-0.672228436969546150, -0.672265453318783510, -0.672302467987357270, -0.672339480975175150, -0.672376492282144020, -0.672413501908171620, -0.672450509853165900, -0.672487516117033500, +-0.672524520699682270, -0.672561523601019840, -0.672598524820953840, -0.672635524359391220, -0.672672522216239740, -0.672709518391407140, -0.672746512884800920, -0.672783505696328050, +-0.672820496825896510, -0.672857486273413690, -0.672894474038787550, -0.672931460121924840, -0.672968444522733520, -0.673005427241121000, -0.673042408276995350, -0.673079387630263200, +-0.673116365300832740, -0.673153341288611600, -0.673190315593506840, -0.673227288215426210, -0.673264259154277460, -0.673301228409968310, -0.673338195982405850, -0.673375161871497820, +-0.673412126077151950, -0.673449088599275990, -0.673486049437777010, -0.673523008592562980, -0.673559966063541400, -0.673596921850620260, -0.673633875953706380, -0.673670828372707970, +-0.673707779107532320, -0.673744728158087720, -0.673781675524280810, -0.673818621206019760, -0.673855565203212550, -0.673892507515766010, -0.673929448143588350, -0.673966387086586960, +-0.674003324344669920, -0.674040259917744300, -0.674077193805717960, -0.674114126008498630, -0.674151056525994390, -0.674187985358112090, -0.674224912504759910, -0.674261837965845380, +-0.674298761741276680, -0.674335683830960650, -0.674372604234805490, -0.674409522952718720, -0.674446439984608630, -0.674483355330381950, -0.674520268989946990, -0.674557180963211600, +-0.674594091250082960, -0.674630999850469150, -0.674667906764277790, -0.674704811991416960, -0.674741715531793850, -0.674778617385316410, -0.674815517551892400, -0.674852416031429980, +-0.674889312823836130, -0.674926207929019030, -0.674963101346886420, -0.674999993077346480, -0.675036883120306070, -0.675073771475673490, -0.675110658143356580, -0.675147543123263190, +-0.675184426415300740, -0.675221308019377190, -0.675258187935400380, -0.675295066163278390, -0.675331942702918410, -0.675368817554228620, -0.675405690717117090, -0.675442562191491010, +-0.675479431977258460, -0.675516300074327390, -0.675553166482605880, -0.675590031202001230, -0.675626894232421390, -0.675663755573774340, -0.675700615225968250, -0.675737473188910310, +-0.675774329462508590, -0.675811184046671180, -0.675848036941306020, -0.675884888146320420, -0.675921737661622670, -0.675958585487120620, -0.675995431622722350, -0.676032276068335270, +-0.676069118823867440, -0.676105959889227170, -0.676142799264321640, -0.676179636949059030, -0.676216472943347520, -0.676253307247094980, -0.676290139860208920, -0.676326970782597510, +-0.676363800014168740, -0.676400627554830660, -0.676437453404490800, -0.676474277563057220, -0.676511100030438020, -0.676547920806541360, -0.676584739891274540, -0.676621557284545870, +-0.676658372986263410, -0.676695186996335240, -0.676731999314668760, -0.676768809941172390, -0.676805618875754300, -0.676842426118321790, -0.676879231668783170, -0.676916035527046600, +-0.676952837693020170, -0.676989638166611290, -0.677026436947728350, -0.677063234036279440, -0.677100029432172620, -0.677136823135315420, -0.677173615145616250, -0.677210405462982950, +-0.677247194087324030, -0.677283981018546700, -0.677320766256559570, -0.677357549801270390, -0.677394331652587780, -0.677431111810418930, -0.677467890274672250, -0.677504667045256030, +-0.677541442122078340, -0.677578215505046710, -0.677614987194069540, -0.677651757189055240, -0.677688525489911210, -0.677725292096545970, -0.677762057008867380, -0.677798820226783950, +-0.677835581750203310, -0.677872341579033530, -0.677909099713183030, -0.677945856152559980, -0.677982610897072120, -0.678019363946627650, -0.678056115301134740, -0.678092864960501920, +-0.678129612924636580, -0.678166359193447250, -0.678203103766842010, -0.678239846644729250, -0.678276587827016720, -0.678313327313612600, -0.678350065104425410, -0.678386801199362900, +-0.678423535598333350, -0.678460268301244840, -0.678496999308006110, -0.678533728618524570, -0.678570456232708620, -0.678607182150466560, -0.678643906371706910, -0.678680628896337180, +-0.678717349724265780, -0.678754068855401020, -0.678790786289651500, -0.678827502026924660, -0.678864216067128990, -0.678900928410172910, -0.678937639055964710, -0.678974348004412140, +-0.679011055255423710, -0.679047760808907940, -0.679084464664772460, -0.679121166822925890, -0.679157867283276320, -0.679194566045732360, -0.679231263110201770, -0.679267958476593050, +-0.679304652144814280, -0.679341344114774310, -0.679378034386380670, -0.679414722959541860, -0.679451409834166300, -0.679488095010162500, -0.679524778487438200, -0.679561460265901920, +-0.679598140345461950, -0.679634818726027050, -0.679671495407504710, -0.679708170389803580, -0.679744843672832500, -0.679781515256498880, -0.679818185140711460, -0.679854853325378650, +-0.679891519810408960, -0.679928184595710140, -0.679964847681190920, -0.680001509066759600, -0.680038168752324810, -0.680074826737794180, -0.680111483023076560, -0.680148137608080240, +-0.680184790492713850, -0.680221441676885250, -0.680258091160502950, -0.680294738943475470, -0.680331385025711550, -0.680368029407118710, -0.680404672087605910, -0.680441313067081330, +-0.680477952345453830, -0.680514589922631140, -0.680551225798522010, -0.680587859973035060, -0.680624492446078140, -0.680661123217560000, -0.680697752287389050, -0.680734379655474120, +-0.680771005321722860, -0.680807629286044100, -0.680844251548346160, -0.680880872108538090, -0.680917490966527430, -0.680954108122223010, -0.680990723575533360, -0.681027337326367220, +-0.681063949374632440, -0.681100559720237750, -0.681137168363091680, -0.681173775303102970, -0.681210380540179570, -0.681246984074230230, -0.681283585905163690, -0.681320186032887800, +-0.681356784457311630, -0.681393381178343360, -0.681429976195891960, -0.681466569509865390, -0.681503161120172280, -0.681539751026721370, -0.681576339229421290, -0.681612925728180220, +-0.681649510522906680, -0.681686093613509400, -0.681722674999897250, -0.681759254681978070, -0.681795832659660710, -0.681832408932853800, -0.681868983501466190, -0.681905556365405840, +-0.681942127524581500, -0.681978696978902230, -0.682015264728275890, -0.682051830772611440, -0.682088395111817290, -0.682124957745802620, -0.682161518674475160, -0.682198077897743890, +-0.682234635415517430, -0.682271191227704740, -0.682307745334213680, -0.682344297734953310, -0.682380848429832270, -0.682417397418759290, -0.682453944701642560, -0.682490490278390930, +-0.682527034148913140, -0.682563576313118040, -0.682600116770913700, -0.682636655522209090, -0.682673192566912720, -0.682709727904933890, -0.682746261536180340, -0.682782793460561030, +-0.682819323677985150, -0.682855852188360650, -0.682892378991596490, -0.682928904087601430, -0.682965427476284300, -0.683001949157553410, -0.683038469131317600, -0.683074987397485620, +-0.683111503955966540, -0.683148018806668310, -0.683184531949500020, -0.683221043384370510, -0.683257553111188630, -0.683294061129862570, -0.683330567440301300, -0.683367072042413650, +-0.683403574936108700, -0.683440076121294430, -0.683476575597880000, -0.683513073365774490, -0.683549569424885870, -0.683586063775123430, -0.683622556416395800, -0.683659047348612050, +-0.683695536571680360, -0.683732024085509820, -0.683768509890009260, -0.683804993985087760, -0.683841476370653510, -0.683877957046615470, -0.683914436012882600, -0.683950913269363860, +-0.683987388815967660, -0.684023862652602840, -0.684060334779178490, -0.684096805195603560, -0.684133273901786240, -0.684169740897635830, -0.684206206183061380, -0.684242669757971100, +-0.684279131622274160, -0.684315591775879310, -0.684352050218695830, -0.684388506950631910, -0.684424961971596750, -0.684461415281499170, -0.684497866880248380, -0.684534316767752670, +-0.684570764943921000, -0.684607211408662540, -0.684643656161886380, -0.684680099203500700, -0.684716540533414800, -0.684752980151537520, -0.684789418057778150, -0.684825854252044900, +-0.684862288734247040, -0.684898721504293760, -0.684935152562093250, -0.684971581907555030, -0.685008009540587710, -0.685044435461100830, -0.685080859669002450, -0.685117282164201980, +-0.685153702946608270, -0.685190122016130610, -0.685226539372677300, -0.685262955016157750, -0.685299368946480690, -0.685335781163555650, -0.685372191667290690, -0.685408600457595330, +-0.685445007534378540, -0.685481412897549380, -0.685517816547016490, -0.685554218482689050, -0.685590618704476020, -0.685627017212286800, -0.685663414006029700, -0.685699809085614120, +-0.685736202450949350, -0.685772594101943690, -0.685808984038506540, -0.685845372260546870, -0.685881758767974190, -0.685918143560696800, -0.685954526638624000, -0.685990908001664960, +-0.686027287649728870, -0.686063665582724250, -0.686100041800560500, -0.686136416303146700, -0.686172789090392140, -0.686209160162205230, -0.686245529518495490, -0.686281897159171870, +-0.686318263084143900, -0.686354627293319860, -0.686390989786609280, -0.686427350563921570, -0.686463709625165230, -0.686500066970249570, -0.686536422599083650, -0.686572776511577110, +-0.686609128707638240, -0.686645479187176560, -0.686681827950101240, -0.686718174996321600, -0.686754520325746240, -0.686790863938284480, -0.686827205833845710, -0.686863546012339230, +-0.686899884473673450, -0.686936221217758100, -0.686972556244502040, -0.687008889553815010, -0.687045221145605400, -0.687081551019782850, -0.687117879176256660, -0.687154205614935340, +-0.687190530335728630, -0.687226853338545610, -0.687263174623295780, -0.687299494189887670, -0.687335812038230800, -0.687372128168234340, -0.687408442579807930, -0.687444755272860200, +-0.687481066247300430, -0.687517375503038150, -0.687553683039982650, -0.687589988858042570, -0.687626292957127630, -0.687662595337146910, -0.687698895998010040, -0.687735194939625540, +-0.687771492161903140, -0.687807787664752040, -0.687844081448081730, -0.687880373511800870, -0.687916663855819070, -0.687952952480045950, -0.687989239384390160, -0.688025524568761200, +-0.688061808033068490, -0.688098089777221640, -0.688134369801129190, -0.688170648104700740, -0.688206924687845720, -0.688243199550473750, -0.688279472692493450, -0.688315744113814460, +-0.688352013814346080, -0.688388281793998020, -0.688424548052678940, -0.688460812590298450, -0.688497075406765970, -0.688533336501991110, -0.688569595875882620, -0.688605853528350130, +-0.688642109459303260, -0.688678363668650870, -0.688714616156302470, -0.688750866922167690, -0.688787115966155940, -0.688823363288176060, -0.688859608888137910, -0.688895852765950670, +-0.688932094921524070, -0.688968335354766980, -0.689004574065589010, -0.689040811053899580, -0.689077046319608420, -0.689113279862624490, -0.689149511682857210, -0.689185741780216190, +-0.689221970154611170, -0.689258196805950800, -0.689294421734145010, -0.689330644939103570, -0.689366866420735080, -0.689403086178949410, -0.689439304213656180, -0.689475520524764800, +-0.689511735112184440, -0.689547947975824750, -0.689584159115595120, -0.689620368531405400, -0.689656576223164560, -0.689692782190782120, -0.689728986434167800, -0.689765188953231360, +-0.689801389747881630, -0.689837588818028370, -0.689873786163581190, -0.689909981784449840, -0.689946175680543170, -0.689982367851771140, -0.690018558298043480, -0.690054747019269170, +-0.690090934015357930, -0.690127119286219280, -0.690163302831763300, -0.690199484651898620, -0.690235664746535300, -0.690271843115582760, -0.690308019758951060, -0.690344194676548840, +-0.690380367868286270, -0.690416539334072650, -0.690452709073818060, -0.690488877087431340, -0.690525043374822460, -0.690561207935901030, -0.690597370770576810, -0.690633531878758870, +-0.690669691260357150, -0.690705848915281080, -0.690742004843440840, -0.690778159044745270, -0.690814311519104220, -0.690850462266427770, -0.690886611286624760, -0.690922758579605280, +-0.690958904145278940, -0.690995047983555600, -0.691031190094344330, -0.691067330477555200, -0.691103469133097610, -0.691139606060881650, -0.691175741260816380, -0.691211874732811760, +-0.691248006476777530, -0.691284136492623550, -0.691320264780258990, -0.691356391339593590, -0.691392516170537320, -0.691428639273000130, -0.691464760646890890, -0.691500880292119870, +-0.691536998208596930, -0.691573114396231150, -0.691609228854932590, -0.691645341584611000, -0.691681452585176330, -0.691717561856537650, -0.691753669398605160, -0.691789775211288480, +-0.691825879294497680, -0.691861981648141940, -0.691898082272131120, -0.691934181166375170, -0.691970278330784060, -0.692006373765266860, -0.692042467469733860, -0.692078559444094580, +-0.692114649688259310, -0.692150738202137020, -0.692186824985637990, -0.692222910038672090, -0.692258993361148710, -0.692295074952977710, -0.692331154814069150, -0.692367232944333000, +-0.692403309343678440, -0.692439384012015550, -0.692475456949254280, -0.692511528155304700, -0.692547597630075900, -0.692583665373478150, -0.692619731385421210, -0.692655795665815250, +-0.692691858214569580, -0.692727919031594140, -0.692763978116798910, -0.692800035470094170, -0.692836091091388880, -0.692872144980593460, -0.692908197137617750, -0.692944247562371720, +-0.692980296254764870, -0.693016343214707180, -0.693052388442108920, -0.693088431936879410, -0.693124473698928930, -0.693160513728167120, -0.693196552024504480, -0.693232588587850080, +-0.693268623418114130, -0.693304656515206670, -0.693340687879037910, -0.693376717509517130, -0.693412745406554620, -0.693448771570060130, -0.693484795999944060, -0.693520818696115700, +-0.693556839658485250, -0.693592858886962650, -0.693628876381458430, -0.693664892141881540, -0.693700906168142390, -0.693736918460151400, -0.693772929017817730, -0.693808937841051800, +-0.693844944929763450, -0.693880950283863100, -0.693916953903260030, -0.693952955787864530, -0.693988955937586800, -0.694024954352336910, -0.694060951032024250, -0.694096945976559350, +-0.694132939185851950, -0.694168930659812560, -0.694204920398350580, -0.694240908401376200, -0.694276894668799600, -0.694312879200531090, -0.694348861996480160, -0.694384843056556900, +-0.694420822380672040, -0.694456799968734660, -0.694492775820655270, -0.694528749936344060, -0.694564722315711200, -0.694600692958666220, -0.694636661865119520, -0.694672629034981170, +-0.694708594468161580, -0.694744558164570150, -0.694780520124117400, -0.694816480346713280, -0.694852438832268330, -0.694888395580691930, -0.694924350591894500, -0.694960303865786330, +-0.694996255402277610, -0.695032205201277950, -0.695068153262697770, -0.695104099586447480, -0.695140044172436690, -0.695175987020575810, -0.695211928130774930, -0.695247867502944540, +-0.695283805136994170, -0.695319741032834340, -0.695355675190375110, -0.695391607609527010, -0.695427538290199540, -0.695463467232303230, -0.695499394435748260, -0.695535319900445150, +-0.695571243626303510, -0.695607165613233660, -0.695643085861145870, -0.695679004369950670, -0.695714921139557680, -0.695750836169877430, -0.695786749460820090, -0.695822661012296170, +-0.695858570824215210, -0.695894478896487920, -0.695930385229024730, -0.695966289821735140, -0.696002192674530010, -0.696038093787319290, -0.696073993160013730, -0.696109890792522720, +-0.696145786684757130, -0.696181680836627010, -0.696217573248043010, -0.696253463918914850, -0.696289352849152940, -0.696325240038667690, -0.696361125487369610, -0.696397009195168340, +-0.696432891161974710, -0.696468771387698690, -0.696504649872251140, -0.696540526615541670, -0.696576401617480910, -0.696612274877979390, -0.696648146396946940, -0.696684016174293990, +-0.696719884209931140, -0.696755750503768810, -0.696791615055716850, -0.696827477865685770, -0.696863338933586100, -0.696899198259328330, -0.696935055842822230, -0.696970911683978510, +-0.697006765782707590, -0.697042618138919990, -0.697078468752525550, -0.697114317623434900, -0.697150164751558550, -0.697186010136807030, -0.697221853779090180, -0.697257695678318630, +-0.697293535834403230, -0.697329374247253720, -0.697365210916780720, -0.697401045842894750, -0.697436879025506440, -0.697472710464525520, -0.697508540159862970, -0.697544368111429060, +-0.697580194319134430, -0.697616018782889040, -0.697651841502603730, -0.697687662478188700, -0.697723481709554780, -0.697759299196611950, -0.697795114939270820, -0.697830928937441920, +-0.697866741191035980, -0.697902551699962960, -0.697938360464133490, -0.697974167483458090, -0.698009972757847600, -0.698045776287211980, -0.698081578071461760, -0.698117378110508000, +-0.698153176404260440, -0.698188972952630050, -0.698224767755527110, -0.698260560812862590, -0.698296352124546330, -0.698332141690489180, -0.698367929510601780, -0.698403715584794750, +-0.698439499912978160, -0.698475282495062850, -0.698511063330959360, -0.698546842420578410, -0.698582619763830180, -0.698618395360625310, -0.698654169210874420, -0.698689941314488470, +-0.698725711671377430, -0.698761480281452020, -0.698797247144623210, -0.698833012260801080, -0.698868775629896350, -0.698904537251819670, -0.698940297126481980, -0.698976055253793140, +-0.699011811633664220, -0.699047566266005840, -0.699083319150728850, -0.699119070287743230, -0.699154819676959920, -0.699190567318289440, -0.699226313211642970, -0.699262057356930480, +-0.699297799754062810, -0.699333540402950590, -0.699369279303504790, -0.699405016455635580, -0.699440751859253810, -0.699476485514270330, -0.699512217420595440, -0.699547947578140090, +-0.699583675986814700, -0.699619402646530550, -0.699655127557197610, -0.699690850718726720, -0.699726572131028850, -0.699762291794014720, -0.699798009707594650, -0.699833725871679580, +-0.699869440286180140, -0.699905152951007410, -0.699940863866071460, -0.699976573031283360, -0.700012280446553840, -0.700047986111793970, -0.700083690026913840, -0.700119392191824400, +-0.700155092606436820, -0.700190791270661190, -0.700226488184408580, -0.700262183347589830, -0.700297876760115790, -0.700333568421896870, -0.700369258332844020, -0.700404946492868000, +-0.700440632901879860, -0.700476317559789900, -0.700512000466509080, -0.700547681621948360, -0.700583361026018700, -0.700619038678630290, -0.700654714579694420, -0.700690388729121590, +-0.700726061126823120, -0.700761731772709280, -0.700797400666691050, -0.700833067808679380, -0.700868733198585340, -0.700904396836319110, -0.700940058721791880, -0.700975718854914830, +-0.701011377235598250, -0.701047033863753110, -0.701082688739290470, -0.701118341862121410, -0.701153993232156100, -0.701189642849305850, -0.701225290713481500, -0.701260936824594230, +-0.701296581182554330, -0.701332223787273000, -0.701367864638661080, -0.701403503736629740, -0.701439141081089400, -0.701474776671951240, -0.701510410509126100, -0.701546042592525290, +-0.701581672922058970, -0.701617301497638570, -0.701652928319175140, -0.701688553386579090, -0.701724176699761730, -0.701759798258633880, -0.701795418063106860, -0.701831036113090940, +-0.701866652408497550, -0.701902266949237410, -0.701937879735221930, -0.701973490766361510, -0.702009100042567220, -0.702044707563750260, -0.702080313329821900, -0.702115917340692340, +-0.702151519596273090, -0.702187120096474990, -0.702222718841209460, -0.702258315830386780, -0.702293911063918250, -0.702329504541715280, -0.702365096263688260, -0.702400686229748490, +-0.702436274439807050, -0.702471860893775220, -0.702507445591563420, -0.702543028533083040, -0.702578609718244930, -0.702614189146960830, -0.702649766819140820, -0.702685342734696410, +-0.702720916893538660, -0.702756489295578880, -0.702792059940727580, -0.702827628828896160, -0.702863195959995690, -0.702898761333937470, -0.702934324950632130, -0.702969886809990840, +-0.703005446911924900, -0.703041005256345720, -0.703076561843163690, -0.703112116672290230, -0.703147669743636740, -0.703183221057113840, -0.703218770612632940, -0.703254318410104990, +-0.703289864449441640, -0.703325408730553270, -0.703360951253351410, -0.703396492017747120, -0.703432031023651930, -0.703467568270976340, -0.703503103759631880, -0.703538637489529610, +-0.703574169460581160, -0.703609699672696930, -0.703645228125788340, -0.703680754819766770, -0.703716279754543650, -0.703751802930029480, -0.703787324346135890, -0.703822844002774170, +-0.703858361899855070, -0.703893878037290090, -0.703929392414990420, -0.703964905032867570, -0.704000415890832070, -0.704035924988795640, -0.704071432326669360, -0.704106937904364740, +-0.704142441721792520, -0.704177943778864220, -0.704213444075491140, -0.704248942611584660, -0.704284439387055540, -0.704319934401815280, -0.704355427655775190, -0.704390919148846880, +-0.704426408880940880, -0.704461896851968920, -0.704497383061842620, -0.704532867510472390, -0.704568350197770090, -0.704603831123646880, -0.704639310288014410, -0.704674787690783400, +-0.704710263331865370, -0.704745737211171620, -0.704781209328613990, -0.704816679684102890, -0.704852148277550160, -0.704887615108866990, -0.704923080177965230, -0.704958543484755400, +-0.704994005029149110, -0.705029464811057880, -0.705064922830393350, -0.705100379087066130, -0.705135833580987970, -0.705171286312070600, -0.705206737280224650, -0.705242186485361850, +-0.705277633927393620, -0.705313079606231570, -0.705348523521786560, -0.705383965673970210, -0.705419406062694040, -0.705454844687869560, -0.705490281549407630, -0.705525716647220080, +-0.705561149981218220, -0.705596581551313770, -0.705632011357417600, -0.705667439399441320, -0.705702865677296560, -0.705738290190894850, -0.705773712940147120, -0.705809133924965140, +-0.705844553145260290, -0.705879970600944430, -0.705915386291928290, -0.705950800218123620, -0.705986212379442370, -0.706021622775795170, -0.706057031407093970, -0.706092438273250190, +-0.706127843374175670, -0.706163246709781140, -0.706198648279978580, -0.706234048084679380, -0.706269446123795390, -0.706304842397237450, -0.706340236904917430, -0.706375629646746720, +-0.706411020622637280, -0.706446409832500070, -0.706481797276246710, -0.706517182953788960, -0.706552566865038530, -0.706587949009906400, -0.706623329388304300, -0.706658708000144300, +-0.706694084845337130, -0.706729459923794880, -0.706764833235428820, -0.706800204780151150, -0.706835574557872490, -0.706870942568505020, -0.706906308811960150, -0.706941673288149830, +-0.706977035996984910, -0.707012396938377590, -0.707047756112239130, -0.707083113518481630, -0.707118469157016040, -0.707153823027754310, -0.707189175130607970, -0.707224525465489080, +-0.707259874032308500, -0.707295220830978180, -0.707330565861410300, -0.707365909123515490, -0.707401250617206050, -0.707436590342393480, -0.707471928298989640, -0.707507264486905710, +-0.707542598906053750, -0.707577931556345190, -0.707613262437692070, -0.707648591550005480, -0.707683918893197480, -0.707719244467179600, -0.707754568271864000, -0.707789890307161660, +-0.707825210572984640, -0.707860529069244460, -0.707895845795853410, -0.707931160752722330, -0.707966473939763310, -0.708001785356888180, -0.708037095004008910, -0.708072402881036570, +-0.708107708987883220, -0.708143013324460950, -0.708178315890680810, -0.708213616686454880, -0.708248915711694900, -0.708284212966312940, -0.708319508450220180, -0.708354802163328690, +-0.708390094105549980, -0.708425384276796580, -0.708460672676979320, -0.708495959306010390, -0.708531244163801530, -0.708566527250264810, -0.708601808565311520, -0.708637088108853730, +-0.708672365880803290, -0.708707641881072160, -0.708742916109571630, -0.708778188566213770, -0.708813459250910880, -0.708848728163573920, -0.708883995304115170, -0.708919260672446370, +-0.708954524268479820, -0.708989786092126590, -0.709025046143298980, -0.709060304421908590, -0.709095560927867850, -0.709130815661087930, -0.709166068621480910, -0.709201319808958730, +-0.709236569223433590, -0.709271816864816770, -0.709307062733020350, -0.709342306827956180, -0.709377549149536660, -0.709412789697672960, -0.709448028472277280, -0.709483265473261790, +-0.709518500700537900, -0.709553734154017680, -0.709588965833613190, -0.709624195739236630, -0.709659423870799170, -0.709694650228213210, -0.709729874811390600, -0.709765097620243650, +-0.709800318654683520, -0.709835537914622730, -0.709870755399973020, -0.709905971110646790, -0.709941185046555350, -0.709976397207610850, -0.710011607593725390, -0.710046816204811250, +-0.710082023040779720, -0.710117228101543210, -0.710152431387013560, -0.710187632897103180, -0.710222832631723370, -0.710258030590786520, -0.710293226774204920, -0.710328421181889880, +-0.710363613813753790, -0.710398804669708730, -0.710433993749666870, -0.710469181053539730, -0.710504366581239720, -0.710539550332678790, -0.710574732307769240, -0.710609912506422580, +-0.710645090928551100, -0.710680267574066880, -0.710715442442882430, -0.710750615534908920, -0.710785786850059000, -0.710820956388244500, -0.710856124149377930, -0.710891290133370820, +-0.710926454340135350, -0.710961616769584140, -0.710996777421628590, -0.711031936296181110, -0.711067093393153770, -0.711102248712458970, -0.711137402254008340, -0.711172554017714060, +-0.711207704003488540, -0.711242852211243950, -0.711277998640892030, -0.711313143292345070, -0.711348286165515260, -0.711383427260315000, -0.711418566576655920, -0.711453704114450300, +-0.711488839873610560, -0.711523973854048860, -0.711559106055677180, -0.711594236478407580, -0.711629365122152690, -0.711664491986824020, -0.711699617072334200, -0.711734740378595410, +-0.711769861905519940, -0.711804981653019640, -0.711840099621006810, -0.711875215809393720, -0.711910330218092910, -0.711945442847016000, -0.711980553696075490, -0.712015662765183470, +-0.712050770054252660, -0.712085875563194690, -0.712120979291921970, -0.712156081240346910, -0.712191181408381780, -0.712226279795938550, -0.712261376402929520, -0.712296471229267420, +-0.712331564274863770, -0.712366655539631300, -0.712401745023482080, -0.712436832726328850, -0.712471918648083240, -0.712507002788657860, -0.712542085147964910, -0.712577165725917120, +-0.712612244522426110, -0.712647321537404400, -0.712682396770764500, -0.712717470222418830, -0.712752541892279210, -0.712787611780258290, -0.712822679886268240, -0.712857746210221800, +-0.712892810752030700, -0.712927873511607690, -0.712962934488864830, -0.712997993683715080, -0.713033051096069960, -0.713068106725842200, -0.713103160572944540, -0.713138212637288720, +-0.713173262918787240, -0.713208311417352640, -0.713243358132897630, -0.713278403065333850, -0.713313446214574150, -0.713348487580530710, -0.713383527163116480, -0.713418564962243100, +-0.713453600977823180, -0.713488635209769350, -0.713523667657994240, -0.713558698322409700, -0.713593727202928350, -0.713628754299462710, -0.713663779611925510, -0.713698803140228490, +-0.713733824884284500, -0.713768844844006270, -0.713803863019305540, -0.713838879410095270, -0.713873894016287760, -0.713908906837795840, -0.713943917874531260, -0.713978927126406980, +-0.714013934593335400, -0.714048940275229250, -0.714083944172000380, -0.714118946283561760, -0.714153946609825670, -0.714188945150705080, -0.714223941906111830, -0.714258936875958650, +-0.714293930060158290, -0.714328921458623260, -0.714363911071265620, -0.714398898897998240, -0.714433884938733940, -0.714468869193384590, -0.714503851661863140, -0.714538832344082000, +-0.714573811239954000, -0.714608788349391340, -0.714643763672306640, -0.714678737208612520, -0.714713708958221840, -0.714748678921046650, -0.714783647096999710, -0.714818613485993630, +-0.714853578087941370, -0.714888540902754780, -0.714923501930346930, -0.714958461170630330, -0.714993418623517840, -0.715028374288921520, -0.715063328166754220, -0.715098280256928680, +-0.715133230559357620, -0.715168179073953250, -0.715203125800628500, -0.715238070739296240, -0.715273013889868410, -0.715307955252257990, -0.715342894826377810, -0.715377832612140610, +-0.715412768609458680, -0.715447702818244660, -0.715482635238411380, -0.715517565869871920, -0.715552494712538230, -0.715587421766323280, -0.715622347031139800, -0.715657270506900640, +-0.715692192193518100, -0.715727112090905120, -0.715762030198974220, -0.715796946517638700, -0.715831861046810400, -0.715866773786402510, -0.715901684736327980, -0.715936593896499000, +-0.715971501266828400, -0.716006406847229160, -0.716041310637614110, -0.716076212637895450, -0.716111112847986450, -0.716146011267799530, -0.716180907897247860, -0.716215802736243630, +-0.716250695784700020, -0.716285587042529540, -0.716320476509645370, -0.716355364185959800, -0.716390250071385900, -0.716425134165836200, -0.716460016469224080, -0.716494896981461520, +-0.716529775702461790, -0.716564652632137870, -0.716599527770402030, -0.716634401117167470, -0.716669272672346810, -0.716704142435853230, -0.716739010407599130, -0.716773876587497360, +-0.716808740975460990, -0.716843603571403090, -0.716878464375235720, -0.716913323386872410, -0.716948180606225670, -0.716983036033208790, -0.717017889667734050, -0.717052741509714540, +-0.717087591559063210, -0.717122439815693240, -0.717157286279516800, -0.717192130950447090, -0.717226973828397400, -0.717261814913280120, -0.717296654205008100, -0.717331491703494530, +-0.717366327408652580, -0.717401161320394440, -0.717435993438633400, -0.717470823763282420, -0.717505652294254670, -0.717540479031462560, -0.717575303974819170, -0.717610127124237440, +-0.717644948479630780, -0.717679768040911490, -0.717714585807992740, -0.717749401780787500, -0.717784215959209050, -0.717819028343169800, -0.717853838932582920, -0.717888647727361500, +-0.717923454727418810, -0.717958259932667040, -0.717993063343019710, -0.718027864958390110, -0.718062664778690410, -0.718097462803834130, -0.718132259033734120, -0.718167053468303780, +-0.718201846107455520, -0.718236636951102620, -0.718271425999158280, -0.718306213251535430, -0.718340998708146940, -0.718375782368905870, -0.718410564233725400, -0.718445344302518720, +-0.718480122575198440, -0.718514899051677870, -0.718549673731870060, -0.718584446615688320, -0.718619217703045150, -0.718653986993853970, -0.718688754488028160, -0.718723520185480140, +-0.718758284086123300, -0.718793046189870720, -0.718827806496635910, -0.718862565006331280, -0.718897321718870110, -0.718932076634165810, -0.718966829752131440, -0.719001581072679860, +-0.719036330595724250, -0.719071078321177780, -0.719105824248953970, -0.719140568378965230, -0.719175310711125170, -0.719210051245346760, -0.719244789981543620, -0.719279526919628040, +-0.719314262059513760, -0.719348995401114080, -0.719383726944341720, -0.719418456689109980, -0.719453184635332030, -0.719487910782921510, -0.719522635131790820, -0.719557357681853580, +-0.719592078433022970, -0.719626797385212400, -0.719661514538334600, -0.719696229892303090, -0.719730943447030810, -0.719765655202431630, -0.719800365158417940, -0.719835073314903370, +-0.719869779671801100, -0.719904484229024640, -0.719939186986486730, -0.719973887944100890, -0.720008587101780280, -0.720043284459438440, -0.720077980016988200, -0.720112673774342960, +-0.720147365731416360, -0.720182055888121010, -0.720216744244370540, -0.720251430800078250, -0.720286115555157650, -0.720320798509521350, -0.720355479663083220, -0.720390159015756320, +-0.720424836567454370, -0.720459512318089910, -0.720494186267576770, -0.720528858415828140, -0.720563528762757640, -0.720598197308278010, -0.720632864052302980, -0.720667528994745730, +-0.720702192135519890, -0.720736853474538420, -0.720771513011714720, -0.720806170746962520, -0.720840826680194670, -0.720875480811324690, -0.720910133140266090, -0.720944783666932270, +-0.720979432391236410, -0.721014079313091800, -0.721048724432412080, -0.721083367749110860, -0.721118009263100880, -0.721152648974295980, -0.721187286882609250, -0.721221922987954840, +-0.721256557290245180, -0.721291189789394100, -0.721325820485315130, -0.721360449377921880, -0.721395076467127190, -0.721429701752844820, -0.721464325234988600, -0.721498946913471160, +-0.721533566788206350, -0.721568184859107680, -0.721602801126088770, -0.721637415589062580, -0.721672028247942850, -0.721706639102643100, -0.721741248153076940, -0.721775855399157450, +-0.721810460840798360, -0.721845064477913080, -0.721879666310415450, -0.721914266338218310, -0.721948864561235530, -0.721983460979380600, -0.722018055592567260, -0.722052648400708490, +-0.722087239403718220, -0.722121828601509970, -0.722156415993997050, -0.722191001581092950, -0.722225585362711420, -0.722260167338766190, -0.722294747509170220, -0.722329325873837360, +-0.722363902432681230, -0.722398477185615670, -0.722433050132553540, -0.722467621273408910, -0.722502190608095060, -0.722536758136526180, -0.722571323858615000, -0.722605887774275590, +-0.722640449883421470, -0.722675010185966470, -0.722709568681823680, -0.722744125370906930, -0.722778680253129860, -0.722813233328406410, -0.722847784596649670, -0.722882334057773360, +-0.722916881711691550, -0.722951427558317210, -0.722985971597564390, -0.723020513829346510, -0.723055054253577740, -0.723089592870170940, -0.723124129679040270, -0.723158664680099150, +-0.723193197873261750, -0.723227729258441140, -0.723262258835551060, -0.723296786604505360, -0.723331312565218100, -0.723365836717602130, -0.723400359061571630, -0.723434879597040230, +-0.723469398323921880, -0.723503915242129870, -0.723538430351577940, -0.723572943652180280, -0.723607455143849940, -0.723641964826500890, -0.723676472700047090, -0.723710978764402270, +-0.723745483019479830, -0.723779985465193620, -0.723814486101457490, -0.723848984928185390, -0.723883481945290510, -0.723917977152686910, -0.723952470550288440, -0.723986962138009170, +-0.724021451915762060, -0.724055939883461290, -0.724090426041020810, -0.724124910388354470, -0.724159392925375570, -0.724193873651998170, -0.724228352568136450, -0.724262829673703480, +-0.724297304968613440, -0.724331778452780180, -0.724366250126117770, -0.724400719988539390, -0.724435188039959320, -0.724469654280291200, -0.724504118709449200, -0.724538581327346610, +-0.724573042133897620, -0.724607501129016060, -0.724641958312616020, -0.724676413684610780, -0.724710867244914510, -0.724745318993440970, -0.724779768930104540, -0.724814217054818410, +-0.724848663367496650, -0.724883107868053320, -0.724917550556402390, -0.724951991432457370, -0.724986430496132430, -0.725020867747341650, -0.725055303185998420, -0.725089736812016940, +-0.725124168625311040, -0.725158598625795130, -0.725193026813382380, -0.725227453187986980, -0.725261877749523000, -0.725296300497904720, -0.725330721433045330, -0.725365140554859120, +-0.725399557863260050, -0.725433973358162400, -0.725468387039479470, -0.725502798907125660, -0.725537208961014810, -0.725571617201061230, -0.725606023627178300, -0.725640428239280320, +-0.725674831037281590, -0.725709232021095390, -0.725743631190636230, -0.725778028545817970, -0.725812424086554890, -0.725846817812760500, -0.725881209724349000, -0.725915599821234550, +-0.725949988103331450, -0.725984374570552980, -0.726018759222813560, -0.726053142060027360, -0.726087523082108440, -0.726121902288970440, -0.726156279680527870, -0.726190655256694460, +-0.726225029017384730, -0.726259400962512070, -0.726293771091991000, -0.726328139405735710, -0.726362505903659810, -0.726396870585677700, -0.726431233451703350, -0.726465594501651270, +-0.726499953735434860, -0.726534311152968630, -0.726568666754166540, -0.726603020538943100, -0.726637372507211830, -0.726671722658887130, -0.726706070993883180, -0.726740417512114270, +-0.726774762213494020, -0.726809105097936840, -0.726843446165357010, -0.726877785415668830, -0.726912122848785810, -0.726946458464622580, -0.726980792263093420, -0.727015124244111970, +-0.727049454407592830, -0.727083782753449980, -0.727118109281597920, -0.727152433991950400, -0.727186756884421690, -0.727221077958926100, -0.727255397215378130, -0.727289714653691410, +-0.727324030273780340, -0.727358344075559220, -0.727392656058942540, -0.727426966223843950, -0.727461274570177950, -0.727495581097858720, -0.727529885806800890, -0.727564188696917970, +-0.727598489768124690, -0.727632789020335120, -0.727667086453463900, -0.727701382067424630, -0.727735675862131840, -0.727769967837500250, -0.727804257993443390, -0.727838546329875990, +-0.727872832846712110, -0.727907117543866500, -0.727941400421252770, -0.727975681478785660, -0.728009960716379250, -0.728044238133948250, -0.728078513731406310, -0.728112787508668150, +-0.728147059465647950, -0.728181329602260450, -0.728215597918419280, -0.728249864414039160, -0.728284129089034390, -0.728318391943319600, -0.728352652976808510, -0.728386912189415760, +-0.728421169581056070, -0.728455425151643080, -0.728489678901091620, -0.728523930829315880, -0.728558180936230810, -0.728592429221749830, -0.728626675685787760, -0.728660920328259020, +-0.728695163149078340, -0.728729404148159340, -0.728763643325416990, -0.728797880680765340, -0.728832116214119360, -0.728866349925392900, -0.728900581814500460, -0.728934811881356560, +-0.728969040125875930, -0.729003266547972430, -0.729037491147560780, -0.729071713924555720, -0.729105934878871100, -0.729140154010421540, -0.729174371319121660, -0.729208586804886090, +-0.729242800467628790, -0.729277012307264490, -0.729311222323707710, -0.729345430516873170, -0.729379636886674730, -0.729413841433027120, -0.729448044155844970, -0.729482245055043000, +-0.729516444130535180, -0.729550641382236130, -0.729584836810060590, -0.729619030413923180, -0.729653222193737960, -0.729687412149419680, -0.729721600280882840, -0.729755786588042300, +-0.729789971070812000, -0.729824153729106690, -0.729858334562841440, -0.729892513571929970, -0.729926690756287240, -0.729960866115827670, -0.729995039650466420, -0.730029211360117230, +-0.730063381244694940, -0.730097549304114190, -0.730131715538289930, -0.730165879947136110, -0.730200042530567470, -0.730234203288498860, -0.730268362220845010, -0.730302519327519880, +-0.730336674608438540, -0.730370828063515390, -0.730404979692665600, -0.730439129495803030, -0.730473277472842520, -0.730507423623699250, -0.730541567948287060, -0.730575710446521030, +-0.730609851118315670, -0.730643989963585930, -0.730678126982245990, -0.730712262174210700, -0.730746395539394800, -0.730780527077713130, -0.730814656789079970, -0.730848784673409970, +-0.730882910730618170, -0.730917034960619330, -0.730951157363327610, -0.730985277938658080, -0.731019396686525270, -0.731053513606844340, -0.731087628699529260, -0.731121741964495090, +-0.731155853401656900, -0.731189963010928760, -0.731224070792225730, -0.731258176745462450, -0.731292280870554200, -0.731326383167414830, -0.731360483635959510, -0.731394582276102990, +-0.731428679087760330, -0.731462774070845700, -0.731496867225273960, -0.731530958550960290, -0.731565048047819410, -0.731599135715765620, -0.731633221554713890, -0.731667305564579260, +-0.731701387745276600, -0.731735468096720190, -0.731769546618825100, -0.731803623311506500, -0.731837698174678470, -0.731871771208256190, -0.731905842412154510, -0.731939911786288590, +-0.731973979330572510, -0.732008045044921450, -0.732042108929250370, -0.732076170983474220, -0.732110231207507400, -0.732144289601264990, -0.732178346164661820, -0.732212400897613190, +-0.732246453800033170, -0.732280504871837050, -0.732314554112939660, -0.732348601523256200, -0.732382647102700850, -0.732416690851188990, -0.732450732768635370, -0.732484772854955170, +-0.732518811110062900, -0.732552847533873400, -0.732586882126302190, -0.732620914887263440, -0.732654945816672450, -0.732688974914444070, -0.732723002180493470, -0.732757027614735160, +-0.732791051217084210, -0.732825072987455690, -0.732859092925764790, -0.732893111031925890, -0.732927127305854190, -0.732961141747464630, -0.732995154356672510, -0.733029165133392220, +-0.733063174077539070, -0.733097181189027890, -0.733131186467774200, -0.733165189913692170, -0.733199191526697100, -0.733233191306704390, -0.733267189253628440, -0.733301185367384530, +-0.733335179647887640, -0.733369172095053030, -0.733403162708795240, -0.733437151489029550, -0.733471138435671020, -0.733505123548634840, -0.733539106827835630, -0.733573088273188680, +-0.733607067884608940, -0.733641045662011830, -0.733675021605311840, -0.733708995714424270, -0.733742967989264310, -0.733776938429747120, -0.733810907035787330, -0.733844873807300240, +-0.733878838744201230, -0.733912801846404950, -0.733946763113826560, -0.733980722546381250, -0.734014680143984520, -0.734048635906550780, -0.734082589833995440, -0.734116541926233550, +-0.734150492183180740, -0.734184440604751300, -0.734218387190860740, -0.734252331941424250, -0.734286274856357220, -0.734320215935574280, -0.734354155178990720, -0.734388092586521820, +-0.734422028158082880, -0.734455961893588750, -0.734489893792954600, -0.734523823856095710, -0.734557752082927620, -0.734591678473364710, -0.734625603027322830, -0.734659525744717050, +-0.734693446625462210, -0.734727365669473830, -0.734761282876666980, -0.734795198246957160, -0.734829111780259110, -0.734863023476488240, -0.734896933335559940, -0.734930841357389510, +-0.734964747541891560, -0.734998651888981950, -0.735032554398575620, -0.735066455070588210, -0.735100353904934330, -0.735134250901529620, -0.735168146060289240, -0.735202039381128820, +-0.735235930863962990, -0.735269820508707370, -0.735303708315277470, -0.735337594283587910, -0.735371478413554550, -0.735405360705092330, -0.735439241158117100, -0.735473119772543370, +-0.735506996548287000, -0.735540871485263040, -0.735574744583387230, -0.735608615842574200, -0.735642485262739680, -0.735676352843798950, -0.735710218585667650, -0.735744082488260510, +-0.735777944551493150, -0.735811804775280850, -0.735845663159539360, -0.735879519704183530, -0.735913374409128850, -0.735947227274290960, -0.735981078299584810, -0.736014927484925810, +-0.736048774830229680, -0.736082620335411830, -0.736116464000387110, -0.736150305825071240, -0.736184145809379630, -0.736217983953227910, -0.736251820256530910, -0.736285654719204370, +-0.736319487341163810, -0.736353318122324740, -0.736387147062602110, -0.736420974161911550, -0.736454799420168560, -0.736488622837289000, -0.736522444413187480, -0.736556264147779860, +-0.736590082040981860, -0.736623898092708340, -0.736657712302875130, -0.736691524671397650, -0.736725335198191610, -0.736759143883171990, -0.736792950726254390, -0.736826755727354570, +-0.736860558886388020, -0.736894360203269820, -0.736928159677915810, -0.736961957310241280, -0.736995753100162190, -0.737029547047593490, -0.737063339152450810, -0.737097129414649890, +-0.737130917834106340, -0.737164704410735340, -0.737198489144452410, -0.737232272035173390, -0.737266053082813900, -0.737299832287289010, -0.737333609648514580, -0.737367385166406430, +-0.737401158840879420, -0.737434930671849620, -0.737468700659232420, -0.737502468802943790, -0.737536235102898670, -0.737569999559013030, -0.737603762171202380, -0.737637522939382560, +-0.737671281863468640, -0.737705038943376580, -0.737738794179021880, -0.737772547570320510, -0.737806299117187430, -0.737840048819538690, -0.737873796677289700, -0.737907542690356630, +-0.737941286858654340, -0.737975029182098900, -0.738008769660606130, -0.738042508294091130, -0.738076245082469830, -0.738109980025658090, -0.738143713123571520, -0.738177444376125420, +-0.738211173783235750, -0.738244901344818130, -0.738278627060788510, -0.738312350931062070, -0.738346072955554660, -0.738379793134182230, -0.738413511466860520, -0.738447227953504700, +-0.738480942594030850, -0.738514655388354700, -0.738548366336392090, -0.738582075438058430, -0.738615782693269440, -0.738649488101941310, -0.738683191663989210, -0.738716893379329110, +-0.738750593247876840, -0.738784291269548250, -0.738817987444258750, -0.738851681771924170, -0.738885374252460480, -0.738919064885783630, -0.738952753671808790, -0.738986440610452160, +-0.739020125701629340, -0.739053808945256520, -0.739087490341248880, -0.739121169889522590, -0.739154847589993280, -0.739188523442577130, -0.739222197447189420, -0.739255869603746230, +-0.739289539912163400, -0.739323208372356880, -0.739356874984242190, -0.739390539747735280, -0.739424202662752330, -0.739457863729208520, -0.739491522947020030, -0.739525180316102810, +-0.739558835836372830, -0.739592489507745590, -0.739626141330137040, -0.739659791303463150, -0.739693439427640210, -0.739727085702583160, -0.739760730128208530, -0.739794372704432050, +-0.739828013431170000, -0.739861652308337450, -0.739895289335850910, -0.739928924513626130, -0.739962557841579270, -0.739996189319625740, -0.740029818947681830, -0.740063446725663600, +-0.740097072653486450, -0.740130696731066570, -0.740164318958320020, -0.740197939335162980, -0.740231557861510740, -0.740265174537279690, -0.740298789362385580, -0.740332402336744910, +-0.740366013460272860, -0.740399622732885840, -0.740433230154499690, -0.740466835725030800, -0.740500439444394480, -0.740534041312507220, -0.740567641329284650, -0.740601239494643400, +-0.740634835808498760, -0.740668430270766900, -0.740702022881364440, -0.740735613640206570, -0.740769202547209570, -0.740802789602289740, -0.740836374805363020, -0.740869958156345270, +-0.740903539655152430, -0.740937119301700810, -0.740970697095906790, -0.741004273037685680, -0.741037847126953860, -0.741071419363627410, -0.741104989747622730, -0.741138558278855220, +-0.741172124957241380, -0.741205689782697300, -0.741239252755139240, -0.741272813874482630, -0.741306373140644070, -0.741339930553539860, -0.741373486113085620, -0.741407039819197640, +-0.741440591671791990, -0.741474141670785180, -0.741507689816092720, -0.741541236107631010, -0.741574780545316230, -0.741608323129064770, -0.741641863858792270, -0.741675402734415120, +-0.741708939755849390, -0.741742474923011710, -0.741776008235817350, -0.741809539694183170, -0.741843069298025130, -0.741876597047259610, -0.741910122941802360, -0.741943646981569780, +-0.741977169166478050, -0.742010689496443780, -0.742044207971382490, -0.742077724591210570, -0.742111239355844780, -0.742144752265200490, -0.742178263319194340, -0.742211772517742510, +-0.742245279860761610, -0.742278785348167160, -0.742312288979875780, -0.742345790755803650, -0.742379290675867280, -0.742412788739982510, -0.742446284948065750, -0.742479779300033170, +-0.742513271795801620, -0.742546762435286390, -0.742580251218404430, -0.742613738145071810, -0.742647223215205040, -0.742680706428719970, -0.742714187785533220, -0.742747667285561190, +-0.742781144928719610, -0.742814620714925320, -0.742848094644094510, -0.742881566716143580, -0.742915036930988590, -0.742948505288545950, -0.742981971788732040, -0.743015436431463620, +-0.743048899216656180, -0.743082360144226460, -0.743115819214090980, -0.743149276426166130, -0.743182731780367870, -0.743216185276612710, -0.743249636914817160, -0.743283086694897730, +-0.743316534616770390, -0.743349980680351630, -0.743383424885558310, -0.743416867232306040, -0.743450307720511570, -0.743483746350091400, -0.743517183120962160, -0.743550618033039680, +-0.743584051086240590, -0.743617482280481410, -0.743650911615678870, -0.743684339091748690, -0.743717764708607730, -0.743751188466172270, -0.743784610364359170, -0.743818030403084250, +-0.743851448582264260, -0.743884864901815710, -0.743918279361655220, -0.743951691961698750, -0.743985102701863020, -0.744018511582064560, -0.744051918602220090, -0.744085323762245570, +-0.744118727062057730, -0.744152128501573420, -0.744185528080708480, -0.744218925799379650, -0.744252321657503440, -0.744285715654996900, -0.744319107791775680, -0.744352498067756720, +-0.744385886482856530, -0.744419273036991850, -0.744452657730078740, -0.744486040562033930, -0.744519421532774170, -0.744552800642215960, -0.744586177890275590, -0.744619553276869680, +-0.744652926801914970, -0.744686298465328190, -0.744719668267025400, -0.744753036206923460, -0.744786402284939200, -0.744819766500988580, -0.744853128854988670, -0.744886489346855860, +-0.744919847976507010, -0.744953204743858400, -0.744986559648826760, -0.745019912691328720, -0.745053263871281120, -0.745086613188600140, -0.745119960643202630, -0.745153306235005200, +-0.745186649963924810, -0.745219991829877420, -0.745253331832780200, -0.745286669972549440, -0.745320006249102550, -0.745353340662355150, -0.745386673212224520, -0.745420003898627390, +-0.745453332721480070, -0.745486659680699380, -0.745519984776202070, -0.745553308007904980, -0.745586629375724400, -0.745619948879577280, -0.745653266519380240, -0.745686582295050360, +-0.745719896206503700, -0.745753208253657320, -0.745786518436427960, -0.745819826754732460, -0.745853133208487230, -0.745886437797609100, -0.745919740522014930, -0.745953041381621770, +-0.745986340376345590, -0.746019637506103560, -0.746052932770812750, -0.746086226170389330, -0.746119517704750380, -0.746152807373812510, -0.746186095177493120, -0.746219381115708070, +-0.746252665188374520, -0.746285947395409320, -0.746319227736729650, -0.746352506212251580, -0.746385782821892270, -0.746419057565568370, -0.746452330443197250, -0.746485601454695000, +-0.746518870599978680, -0.746552137878965240, -0.746585403291571750, -0.746618666837714380, -0.746651928517310440, -0.746685188330276640, -0.746718446276530170, -0.746751702355987200, +-0.746784956568565140, -0.746818208914180940, -0.746851459392750770, -0.746884708004192150, -0.746917954748421600, -0.746951199625356610, -0.746984442634913260, -0.747017683777008830, +-0.747050923051560070, -0.747084160458484470, -0.747117395997698000, -0.747150629669118160, -0.747183861472661690, -0.747217091408245880, -0.747250319475787130, -0.747283545675202500, +-0.747316770006408950, -0.747349992469323880, -0.747383213063863460, -0.747416431789944990, -0.747449648647485860, -0.747482863636402150, -0.747516076756611470, -0.747549288008030440, +-0.747582497390576470, -0.747615704904166070, -0.747648910548716410, -0.747682114324144440, -0.747715316230367470, -0.747748516267301880, -0.747781714434865070, -0.747814910732973900, +-0.747848105161545870, -0.747881297720497160, -0.747914488409745280, -0.747947677229207190, -0.747980864178800160, -0.748014049258440620, -0.748047232468046050, -0.748080413807533650, +-0.748113593276819920, -0.748146770875822260, -0.748179946604457520, -0.748213120462643320, -0.748246292450296060, -0.748279462567333020, -0.748312630813671390, -0.748345797189228450, +-0.748378961693920600, -0.748412124327665460, -0.748445285090380000, -0.748478443981981600, -0.748511601002386780, -0.748544756151513060, -0.748577909429277380, -0.748611060835597140, +-0.748644210370389080, -0.748677358033570490, -0.748710503825058440, -0.748743647744770420, -0.748776789792623080, -0.748809929968533570, -0.748843068272419750, -0.748876204704197910, +-0.748909339263785560, -0.748942471951099750, -0.748975602766058120, -0.749008731708577180, -0.749041858778574430, -0.749074983975967060, -0.749108107300672450, -0.749141228752607360, +-0.749174348331689170, -0.749207466037835170, -0.749240581870962650, -0.749273695830988460, -0.749306807917830110, -0.749339918131404660, -0.749373026471629730, -0.749406132938421950, +-0.749439237531698720, -0.749472340251377770, -0.749505441097375710, -0.749538540069610070, -0.749571637167998130, -0.749604732392457280, -0.749637825742904270, -0.749670917219256720, +-0.749704006821431900, -0.749737094549347340, -0.749770180402919870, -0.749803264382066900, -0.749836346486705720, -0.749869426716753940, -0.749902505072128300, -0.749935581552746420, +-0.749968656158525590, -0.750001728889383430, -0.750034799745236680, -0.750067868726002950, -0.750100935831599760, -0.750134001061943940, -0.750167064416953130, -0.750200125896544720, +-0.750233185500636220, -0.750266243229144480, -0.750299299081987110, -0.750332353059081520, -0.750365405160345330, -0.750398455385695380, -0.750431503735049300, -0.750464550208324370, +-0.750497594805438430, -0.750530637526308220, -0.750563678370851360, -0.750596717338985360, -0.750629754430627740, -0.750662789645695550, -0.750695822984106420, -0.750728854445777640, +-0.750761884030627050, -0.750794911738571490, -0.750827937569528590, -0.750860961523416190, -0.750893983600151140, -0.750927003799651050, -0.750960022121833440, -0.750993038566616030, +-0.751026053133915910, -0.751059065823650450, -0.751092076635737520, -0.751125085570094500, -0.751158092626638570, -0.751191097805287370, -0.751224101105958500, -0.751257102528569700, +-0.751290102073037810, -0.751323099739280580, -0.751356095527215610, -0.751389089436760750, -0.751422081467832960, -0.751455071620349860, -0.751488059894229400, -0.751521046289388430, +-0.751554030805744900, -0.751587013443216320, -0.751619994201720430, -0.751652973081174290, -0.751685950081495750, -0.751718925202602420, -0.751751898444411930, -0.751784869806841450, +-0.751817839289808720, -0.751850806893231470, -0.751883772617027550, -0.751916736461113900, -0.751949698425408260, -0.751982658509828480, -0.752015616714292400, -0.752048573038716860, +-0.752081527483019930, -0.752114480047119560, -0.752147430730932600, -0.752180379534377110, -0.752213326457370600, -0.752246271499831140, -0.752279214661675690, -0.752312155942822190, +-0.752345095343188270, -0.752378032862692000, -0.752410968501250330, -0.752443902258781220, -0.752476834135202280, -0.752509764130431690, -0.752542692244386300, -0.752575618476984180, +-0.752608542828143050, -0.752641465297780870, -0.752674385885814700, -0.752707304592162620, -0.752740221416742460, -0.752773136359471520, -0.752806049420267740, -0.752838960599048760, +-0.752871869895732740, -0.752904777310236860, -0.752937682842478970, -0.752970586492376800, -0.753003488259848420, -0.753036388144811110, -0.753069286147182830, -0.753102182266881300, +-0.753135076503824720, -0.753167968857930030, -0.753200859329115510, -0.753233747917298800, -0.753266634622397960, -0.753299519444330270, -0.753332402383013800, -0.753365283438366400, +-0.753398162610305900, -0.753431039898749820, -0.753463915303616230, -0.753496788824822960, -0.753529660462287530, -0.753562530215928010, -0.753595398085662000, -0.753628264071407930, +-0.753661128173082840, -0.753693990390604920, -0.753726850723892010, -0.753759709172862280, -0.753792565737433030, -0.753825420417522320, -0.753858273213048100, -0.753891124123928450, +-0.753923973150080750, -0.753956820291423080, -0.753989665547873390, -0.754022508919349850, -0.754055350405769650, -0.754088190007051180, -0.754121027723112400, -0.754153863553870930, +-0.754186697499244610, -0.754219529559151610, -0.754252359733510120, -0.754285188022237430, -0.754318014425251810, -0.754350838942471120, -0.754383661573813540, -0.754416482319196670, +-0.754449301178538480, -0.754482118151757030, -0.754514933238770610, -0.754547746439496620, -0.754580557753853240, -0.754613367181758420, -0.754646174723130560, -0.754678980377886830, +-0.754711784145945750, -0.754744586027225490, -0.754777386021643460, -0.754810184129117930, -0.754842980349567090, -0.754875774682908900, -0.754908567129061070, -0.754941357687941910, +-0.754974146359469240, -0.755006933143561490, -0.755039718040136140, -0.755072501049111500, -0.755105282170405620, -0.755138061403936800, -0.755170838749622540, -0.755203614207381250, +-0.755236387777130870, -0.755269159458789810, -0.755301929252275570, -0.755334697157506450, -0.755367463174400620, -0.755400227302876480, -0.755432989542851430, -0.755465749894243870, +-0.755498508356972300, -0.755531264930954130, -0.755564019616107860, -0.755596772412351460, -0.755629523319603540, -0.755662272337781380, -0.755695019466803620, -0.755727764706588310, +-0.755760508057053750, -0.755793249518117770, -0.755825989089698670, -0.755858726771714510, -0.755891462564083900, -0.755924196466724260, -0.755956928479554200, -0.755989658602491790, +-0.756022386835455640, -0.756055113178363050, -0.756087837631132850, -0.756120560193683120, -0.756153280865931920, -0.756185999647797420, -0.756218716539197920, -0.756251431540051920, +-0.756284144650277050, -0.756316855869791920, -0.756349565198514600, -0.756382272636363600, -0.756414978183256650, -0.756447681839112260, -0.756480383603848620, -0.756513083477384330, +-0.756545781459637130, -0.756578477550525320, -0.756611171749967500, -0.756643864057881870, -0.756676554474186360, -0.756709242998799600, -0.756741929631639780, -0.756774614372625050, +-0.756807297221673610, -0.756839978178704080, -0.756872657243635060, -0.756905334416383860, -0.756938009696869420, -0.756970683085009810, -0.757003354580723540, -0.757036024183928900, +-0.757068691894544290, -0.757101357712487880, -0.757134021637678070, -0.757166683670033150, -0.757199343809471510, -0.757232002055911680, -0.757264658409272260, -0.757297312869470660, +-0.757329965436425830, -0.757362616110056620, -0.757395264890280310, -0.757427911777015740, -0.757460556770181540, -0.757493199869695880, -0.757525841075477160, -0.757558480387443890, +-0.757591117805514470, -0.757623753329607190, -0.757656386959640660, -0.757689018695532960, -0.757721648537202810, -0.757754276484569170, -0.757786902537549210, -0.757819526696062010, +-0.757852148960025950, -0.757884769329360110, -0.757917387803981770, -0.757950004383809990, -0.757982619068763190, -0.758015231858759850, -0.758047842753718390, -0.758080451753557320, +-0.758113058858195130, -0.758145664067550350, -0.758178267381541370, -0.758210868800086700, -0.758243468323105410, -0.758276065950515000, -0.758308661682234320, -0.758341255518181990, +-0.758373847458277180, -0.758406437502437080, -0.758439025650580970, -0.758471611902627240, -0.758504196258494520, -0.758536778718101210, -0.758569359281366040, -0.758601937948207410, +-0.758634514718544040, -0.758667089592294340, -0.758699662569376930, -0.758732233649710870, -0.758764802833213680, -0.758797370119804530, -0.758829935509401920, -0.758862499001925040, +-0.758895060597291280, -0.758927620295420050, -0.758960178096229620, -0.758992733999638740, -0.759025288005566120, -0.759057840113930180, -0.759090390324649640, -0.759122938637643240, +-0.759155485052829370, -0.759188029570126880, -0.759220572189454270, -0.759253112910730830, -0.759285651733873970, -0.759318188658803070, -0.759350723685437210, -0.759383256813694010, +-0.759415788043492630, -0.759448317374751820, -0.759480844807390200, -0.759513370341326380, -0.759545893976479310, -0.759578415712767410, -0.759610935550109390, -0.759643453488424210, +-0.759675969527630280, -0.759708483667646430, -0.759740995908391950, -0.759773506249784350, -0.759806014691743140, -0.759838521234186710, -0.759871025877034700, -0.759903528620204490, +-0.759936029463615490, -0.759968528407186430, -0.760001025450835920, -0.760033520594483040, -0.760066013838046170, -0.760098505181444390, -0.760130994624596320, -0.760163482167420800, +-0.760195967809836450, -0.760228451551762880, -0.760260933393117620, -0.760293413333819950, -0.760325891373788700, -0.760358367512943390, -0.760390841751201530, -0.760423314088482630, +-0.760455784524705410, -0.760488253059788730, -0.760520719693651430, -0.760553184426212340, -0.760585647257390310, -0.760618108187104070, -0.760650567215272580, -0.760683024341814780, +-0.760715479566649870, -0.760747932889695780, -0.760780384310871800, -0.760812833830096900, -0.760845281447290470, -0.760877727162370230, -0.760910170975255710, -0.760942612885865730, +-0.760975052894119260, -0.761007490999935140, -0.761039927203232210, -0.761072361503929650, -0.761104793901946080, -0.761137224397200440, -0.761169652989611810, -0.761202079679099140, +-0.761234504465581720, -0.761266927348977500, -0.761299348329205980, -0.761331767406186690, -0.761364184579837340, -0.761396599850077680, -0.761429013216826320, -0.761461424680002550, +-0.761493834239525210, -0.761526241895313260, -0.761558647647285650, -0.761591051495361440, -0.761623453439459700, -0.761655853479499270, -0.761688251615399210, -0.761720647847079050, +-0.761753042174456720, -0.761785434597451850, -0.761817825115983280, -0.761850213729970860, -0.761882600439332200, -0.761914985243987150, -0.761947368143854550, -0.761979749138853580, +-0.762012128228903180, -0.762044505413922550, -0.762076880693830620, -0.762109254068546460, -0.762141625537989140, -0.762173995102077840, -0.762206362760732060, -0.762238728513869760, +-0.762271092361410770, -0.762303454303273950, -0.762335814339379140, -0.762368172469644170, -0.762400528693988780, -0.762432883012332030, -0.762465235424593100, -0.762497585930691060, +-0.762529934530545180, -0.762562281224074320, -0.762594626011197760, -0.762626968891834790, -0.762659309865904240, -0.762691648933326080, -0.762723986094018150, -0.762756321347900280, +-0.762788654694891650, -0.762820986134911890, -0.762853315667879170, -0.762885643293713110, -0.762917969012332890, -0.762950292823657890, -0.762982614727607090, -0.763014934724099760, +-0.763047252813054970, -0.763079568994392220, -0.763111883268030480, -0.763144195633889020, -0.763176506091887140, -0.763208814641944460, -0.763241121283979250, -0.763273426017911150, +-0.763305728843660100, -0.763338029761144290, -0.763370328770283210, -0.763402625870996390, -0.763434921063202990, -0.763467214346822300, -0.763499505721773610, -0.763531795187976090, +-0.763564082745349150, -0.763596368393811950, -0.763628652133283900, -0.763660933963684170, -0.763693213884932610, -0.763725491896947610, -0.763757767999648670, -0.763790042192955430, +-0.763822314476787720, -0.763854584851063500, -0.763886853315702940, -0.763919119870625220, -0.763951384515749620, -0.763983647250995660, -0.764015908076282610, -0.764048166991529660, +-0.764080423996656320, -0.764112679091581980, -0.764144932276225930, -0.764177183550508120, -0.764209432914346840, -0.764241680367661820, -0.764273925910372800, -0.764306169542399380, +-0.764338411263659980, -0.764370651074074650, -0.764402888973562570, -0.764435124962043360, -0.764467359039436300, -0.764499591205660910, -0.764531821460636470, -0.764564049804282500, +-0.764596276236518380, -0.764628500757263520, -0.764660723366438090, -0.764692944063960270, -0.764725162849750010, -0.764757379723726820, -0.764789594685810870, -0.764821807735920340, +-0.764854018873975190, -0.764886228099895150, -0.764918435413599380, -0.764950640815007630, -0.764982844304039290, -0.765015045880613750, -0.765047245544650640, -0.765079443296069470, +-0.765111639134789630, -0.765143833060730640, -0.765176025073812770, -0.765208215173954210, -0.765240403361075020, -0.765272589635095480, -0.765304773995933880, -0.765336956443510410, +-0.765369136977744450, -0.765401315598555730, -0.765433492305863660, -0.765465667099587850, -0.765497839979647930, -0.765530010945963400, -0.765562179998453880, -0.765594347137038780, +-0.765626512361637920, -0.765658675672171380, -0.765690837068557450, -0.765722996550716520, -0.765755154118568090, -0.765787309772032350, -0.765819463511027700, -0.765851615335474520, +-0.765883765245292230, -0.765915913240400540, -0.765948059320718970, -0.765980203486167350, -0.766012345736665210, -0.766044486072132160, -0.766076624492487920, -0.766108760997652240, +-0.766140895587545060, -0.766173028262085110, -0.766205159021192680, -0.766237287864787180, -0.766269414792789210, -0.766301539805117060, -0.766333662901691030, -0.766365784082430830, +-0.766397903347256330, -0.766430020696086900, -0.766462136128842510, -0.766494249645442660, -0.766526361245807310, -0.766558470929856070, -0.766590578697508570, -0.766622684548685210, +-0.766654788483304590, -0.766686890501287020, -0.766718990602552110, -0.766751088787020470, -0.766783185054610410, -0.766815279405242410, -0.766847371838836220, -0.766879462355311680, +-0.766911550954588410, -0.766943637636586240, -0.766975722401225020, -0.767007805248424490, -0.767039886178104370, -0.767071965190184610, -0.767104042284584950, -0.767136117461225790, +-0.767168190720025620, -0.767200262060905080, -0.767232331483784450, -0.767264398988582450, -0.767296464575219380, -0.767328528243615190, -0.767360589993689720, -0.767392649825362700, +-0.767424707738554090, -0.767456763733183720, -0.767488817809171330, -0.767520869966437090, -0.767552920204900510, -0.767584968524481660, -0.767617014925101040, -0.767649059406677270, +-0.767681101969130860, -0.767713142612381660, -0.767745181336350170, -0.767777218140955230, -0.767809253026117130, -0.767841285991756050, -0.767873317037791710, -0.767905346164143960, +-0.767937373370732980, -0.767969398657478490, -0.768001422024300550, -0.768033443471119020, -0.768065462997853940, -0.768097480604425730, -0.768129496290753220, -0.768161510056757040, +-0.768193521902357010, -0.768225531827473770, -0.768257539832026160, -0.768289545915934680, -0.768321550079119290, -0.768353552321500040, -0.768385552642997020, -0.768417551043530040, +-0.768449547523019080, -0.768481542081384420, -0.768513534718545890, -0.768545525434423450, -0.768577514228937720, -0.768609501102007760, -0.768641486053553980, -0.768673469083496430, +-0.768705450191755850, -0.768737429378251180, -0.768769406642902720, -0.768801381985630860, -0.768833355406355560, -0.768865326904996870, -0.768897296481474870, -0.768929264135709610, +-0.768961229867621170, -0.768993193677129590, -0.769025155564155070, -0.769057115528617770, -0.769089073570438100, -0.769121029689535330, -0.769152983885829870, -0.769184936159242550, +-0.769216886509692330, -0.769248834937099950, -0.769280781441385340, -0.769312726022468920, -0.769344668680270630, -0.769376609414710640, -0.769408548225709140, -0.769440485113186300, +-0.769472420077062290, -0.769504353117257180, -0.769536284233691140, -0.769568213426285010, -0.769600140694957750, -0.769632066039630190, -0.769663989460222410, -0.769695910956655240, +-0.769727830528847750, -0.769759748176720660, -0.769791663900194160, -0.769823577699188520, -0.769855489573623930, -0.769887399523420670, -0.769919307548498910, -0.769951213648778830, +-0.769983117824180830, -0.770015020074624860, -0.770046920400032090, -0.770078818800321250, -0.770110715275413530, -0.770142609825228970, -0.770174502449688440, -0.770206393148711090, +-0.770238281922217770, -0.770270168770128770, -0.770302053692364260, -0.770333936688844760, -0.770365817759490310, -0.770397696904221330, -0.770429574122958090, -0.770461449415621000, +-0.770493322782130230, -0.770525194222406730, -0.770557063736369560, -0.770588931323939910, -0.770620796985037830, -0.770652660719584380, -0.770684522527498640, -0.770716382408701660, +-0.770748240363113730, -0.770780096390655150, -0.770811950491246400, -0.770843802664807680, -0.770875652911259480, -0.770907501230522210, -0.770939347622516150, -0.770971192087161690, +-0.771003034624379910, -0.771034875234089870, -0.771066713916212730, -0.771098550670668680, -0.771130385497379000, -0.771162218396262640, -0.771194049367240790, -0.771225878410233820, +-0.771257705525162150, -0.771289530711946170, -0.771321353970506380, -0.771353175300763310, -0.771384994702637220, -0.771416812176048630, -0.771448627720918050, -0.771480441337165870, +-0.771512253024713160, -0.771544062783479310, -0.771575870613385170, -0.771607676514351470, -0.771639480486299160, -0.771671282529147520, -0.771703082642817620, -0.771734880827230070, +-0.771766677082305290, -0.771798471407963870, -0.771830263804126340, -0.771862054270713080, -0.771893842807644610, -0.771925629414841550, -0.771957414092224510, -0.771989196839714450, +-0.772020977657230880, -0.772052756544694740, -0.772084533502026770, -0.772116308529148140, -0.772148081625978030, -0.772179852792437840, -0.772211622028447950, -0.772243389333929000, +-0.772275154708801590, -0.772306918152986240, -0.772338679666403680, -0.772370439248974420, -0.772402196900618950, -0.772433952621258140, -0.772465706410812910, -0.772497458269202800, +-0.772529208196349180, -0.772560956192172470, -0.772592702256593930, -0.772624446389533090, -0.772656188590911120, -0.772687928860648740, -0.772719667198666470, -0.772751403604885030, +-0.772783138079225160, -0.772814870621607360, -0.772846601231952370, -0.772878329910180910, -0.772910056656213710, -0.772941781469971830, -0.772973504351374910, -0.773005225300344320, +-0.773036944316800590, -0.773068661400665100, -0.773100376551857480, -0.773132089770298790, -0.773163801055909870, -0.773195510408611560, -0.773227217828324380, -0.773258923314969150, +-0.773290626868466720, -0.773322328488737610, -0.773354028175702760, -0.773385725929282790, -0.773417421749398540, -0.773449115635971300, -0.773480807588920680, -0.773512497608167980, +-0.773544185693634150, -0.773575871845240350, -0.773607556062906320, -0.773639238346553460, -0.773670918696102380, -0.773702597111474160, -0.773734273592589280, -0.773765948139368830, +-0.773797620751733420, -0.773829291429604100, -0.773860960172901400, -0.773892626981546370, -0.773924291855460410, -0.773955954794563030, -0.773987615798775840, -0.774019274868019580, +-0.774050932002215750, -0.774082587201283980, -0.774114240465145760, -0.774145891793721840, -0.774177541186933380, -0.774209188644700900, -0.774240834166945560, -0.774272477753587980, +-0.774304119404549350, -0.774335759119750390, -0.774367396899112050, -0.774399032742555730, -0.774430666650001380, -0.774462298621370170, -0.774493928656583400, -0.774525556755562230, +-0.774557182918226730, -0.774588807144498180, -0.774620429434297650, -0.774652049787545980, -0.774683668204164340, -0.774715284684073360, -0.774746899227194310, -0.774778511833447920, +-0.774810122502755270, -0.774841731235037300, -0.774873338030215630, -0.774904942888209990, -0.774936545808942000, -0.774968146792332720, -0.774999745838303560, -0.775031342946774450, +-0.775062938117667020, -0.775094531350902340, -0.775126122646401130, -0.775157712004084790, -0.775189299423874050, -0.775220884905690190, -0.775252468449453950, -0.775284050055086720, +-0.775315629722509230, -0.775347207451642760, -0.775378783242408720, -0.775410357094727280, -0.775441929008519830, -0.775473498983708210, -0.775505067020212270, -0.775536633117953620, +-0.775568197276853440, -0.775599759496832800, -0.775631319777812630, -0.775662878119714240, -0.775694434522458680, -0.775725988985967010, -0.775757541510160410, -0.775789092094959830, +-0.775820640740286670, -0.775852187446062440, -0.775883732212207080, -0.775915275038642440, -0.775946815925289690, -0.775978354872070340, -0.776009891878904570, -0.776041426945714100, +-0.776072960072420100, -0.776104491258943650, -0.776136020505206030, -0.776167547811128290, -0.776199073176631730, -0.776230596601637400, -0.776262118086066710, -0.776293637629840600, +-0.776325155232881040, -0.776356670895107960, -0.776388184616443320, -0.776419696396808080, -0.776451206236124290, -0.776482714134311800, -0.776514220091292560, -0.776545724106987860, +-0.776577226181318750, -0.776608726314206630, -0.776640224505572680, -0.776671720755338190, -0.776703215063424320, -0.776734707429752480, -0.776766197854243830, -0.776797686336820340, +-0.776829172877401940, -0.776860657475910710, -0.776892140132267820, -0.776923620846395100, -0.776955099618212850, -0.776986576447642690, -0.777018051334606220, -0.777049524279024630, +-0.777080995280819200, -0.777112464339911210, -0.777143931456222180, -0.777175396629673280, -0.777206859860185890, -0.777238321147681320, -0.777269780492080950, -0.777301237893306740, +-0.777332693351278750, -0.777364146865919150, -0.777395598437149670, -0.777427048064890710, -0.777458495749064120, -0.777489941489591270, -0.777521385286393580, -0.777552827139392330, +-0.777584267048509140, -0.777615705013665280, -0.777647141034782050, -0.777678575111781070, -0.777710007244583610, -0.777741437433111080, -0.777772865677285650, -0.777804291977027380, +-0.777835716332258450, -0.777867138742900140, -0.777898559208874630, -0.777929977730102200, -0.777961394306504680, -0.777992808938003820, -0.778024221624520780, -0.778055632365977300, +-0.778087041162294770, -0.778118448013394580, -0.778149852919198250, -0.778181255879627280, -0.778212656894603280, -0.778244055964048110, -0.778275453087882260, -0.778306848266027700, +-0.778338241498406140, -0.778369632784939420, -0.778401022125548180, -0.778432409520154360, -0.778463794968679460, -0.778495178471045100, -0.778526560027172800, -0.778557939636984050, +-0.778589317300400600, -0.778620693017343710, -0.778652066787735130, -0.778683438611496360, -0.778714808488549570, -0.778746176418815270, -0.778777542402215420, -0.778808906438671840, +-0.778840268528106390, -0.778871628670439800, -0.778902986865594120, -0.778934343113490970, -0.778965697414052080, -0.778997049767198860, -0.779028400172852910, -0.779059748630936080, +-0.779091095141369870, -0.779122439704075910, -0.779153782318975810, -0.779185122985991300, -0.779216461705044550, -0.779247798476056070, -0.779279133298948050, -0.779310466173642860, +-0.779341797100060910, -0.779373126078124370, -0.779404453107755080, -0.779435778188874770, -0.779467101321404840, -0.779498422505267240, -0.779529741740383590, -0.779561059026675610, +-0.779592374364064920, -0.779623687752473260, -0.779654999191822460, -0.779686308682034700, -0.779717616223030600, -0.779748921814732430, -0.779780225457062050, -0.779811527149941620, +-0.779842826893291760, -0.779874124687034880, -0.779905420531092690, -0.779936714425386920, -0.779968006369839430, -0.779999296364371930, -0.780030584408906050, -0.780061870503363840, +-0.780093154647666930, -0.780124436841737160, -0.780155717085496800, -0.780186995378866600, -0.780218271721768940, -0.780249546114125560, -0.780280818555858850, -0.780312089046889530, +-0.780343357587140130, -0.780374624176532250, -0.780405888814987740, -0.780437151502428650, -0.780468412238776500, -0.780499671023953460, -0.780530927857881250, -0.780562182740481610, +-0.780593435671676610, -0.780624686651388510, -0.780655935679538170, -0.780687182756048090, -0.780718427880839890, -0.780749671053836300, -0.780780912274957830, -0.780812151544127200, +-0.780843388861266250, -0.780874624226296720, -0.780905857639140550, -0.780937089099719930, -0.780968318607956460, -0.780999546163772210, -0.781030771767089130, -0.781061995417829170, +-0.781093217115914060, -0.781124436861266650, -0.781155654653807430, -0.781186870493459140, -0.781218084380144280, -0.781249296313783590, -0.781280506294299680, -0.781311714321614500, +-0.781342920395650120, -0.781374124516328370, -0.781405326683571210, -0.781436526897300810, -0.781467725157439120, -0.781498921463908090, -0.781530115816629790, -0.781561308215526160, +-0.781592498660519830, -0.781623687151531740, -0.781654873688484410, -0.781686058271299890, -0.781717240899900800, -0.781748421574207990, -0.781779600294144170, -0.781810777059631310, +-0.781841951870591580, -0.781873124726946920, -0.781904295628619410, -0.781935464575531200, -0.781966631567604380, -0.781997796604760990, -0.782028959686922990, -0.782060120814013220, +-0.782091279985952630, -0.782122437202663830, -0.782153592464068900, -0.782184745770090560, -0.782215897120649760, -0.782247046515669230, -0.782278193955071140, -0.782309339438777560, +-0.782340482966710550, -0.782371624538792390, -0.782402764154945140, -0.782433901815090980, -0.782465037519152080, -0.782496171267050620, -0.782527303058709320, -0.782558432894049140, +-0.782589560772992910, -0.782620686695462700, -0.782651810661381450, -0.782682932670670020, -0.782714052723251230, -0.782745170819047380, -0.782776286957980630, -0.782807401139973160, +-0.782838513364947140, -0.782869623632824860, -0.782900731943528490, -0.782931838296980320, -0.782962942693102630, -0.782994045131817470, -0.783025145613047700, -0.783056244136714600, +-0.783087340702741000, -0.783118435311049410, -0.783149527961561230, -0.783180618654199300, -0.783211707388885790, -0.783242794165542990, -0.783273878984093170, -0.783304961844458750, +-0.783336042746561880, -0.783367121690324960, -0.783398198675670180, -0.783429273702519910, -0.783460346770796350, -0.783491417880422650, -0.783522487031319770, -0.783553554223410660, +-0.783584619456617730, -0.783615682730863680, -0.783646744046070040, -0.783677803402159420, -0.783708860799054330, -0.783739916236677050, -0.783770969714949970, -0.783802021233795500, +-0.783833070793136020, -0.783864118392893830, -0.783895164032991310, -0.783926207713350980, -0.783957249433895550, -0.783988289194546550, -0.784019326995226810, -0.784050362835858720, +-0.784081396716365230, -0.784112428636667750, -0.784143458596689210, -0.784174486596352030, -0.784205512635578690, -0.784236536714291500, -0.784267558832412950, -0.784298578989865440, +-0.784329597186571580, -0.784360613422453780, -0.784391627697434310, -0.784422640011436470, -0.784453650364381310, -0.784484658756192220, -0.784515665186791280, -0.784546669656101870, +-0.784577672164045170, -0.784608672710544350, -0.784639671295521810, -0.784670667918900060, -0.784701662580601700, -0.784732655280549140, -0.784763646018665000, -0.784794634794871660, +-0.784825621609091750, -0.784856606461247890, -0.784887589351262350, -0.784918570279058540, -0.784949549244557620, -0.784980526247682890, -0.785011501288357390, -0.785042474366502650, +-0.785073445482041720, -0.785104414634897110, -0.785135381824991430, -0.785166347052247420, -0.785197310316587460, -0.785228271617934180, -0.785259230956210310, -0.785290188331338350, +-0.785321143743240910, -0.785352097191840630, -0.785383048677060550, -0.785413998198822410, -0.785444945757049260, -0.785475891351663740, -0.785506834982589000, -0.785537776649746670, +-0.785568716353059910, -0.785599654092451250, -0.785630589867843620, -0.785661523679159420, -0.785692455526321390, -0.785723385409252240, -0.785754313327874710, -0.785785239282111300, +-0.785816163271884860, -0.785847085297118440, -0.785878005357733890, -0.785908923453654260, -0.785939839584802400, -0.785970753751101370, -0.786001665952473010, -0.786032576188840370, +-0.786063484460126420, -0.786094390766253650, -0.786125295107145020, -0.786156197482723030, -0.786187097892910640, -0.786217996337630450, -0.786248892816805320, -0.786279787330357970, +-0.786310679878211570, -0.786341570460288080, -0.786372459076510540, -0.786403345726801930, -0.786434230411085510, -0.786465113129282910, -0.786495993881317630, -0.786526872667112300, +-0.786557749486589740, -0.786588624339672800, -0.786619497226284330, -0.786650368146347150, -0.786681237099784100, -0.786712104086517930, -0.786742969106471460, -0.786773832159567530, +-0.786804693245729550, -0.786835552364879340, -0.786866409516940310, -0.786897264701835740, -0.786928117919487470, -0.786958969169818890, -0.786989818452752950, -0.787020665768212390, +-0.787051511116120260, -0.787082354496399290, -0.787113195908972330, -0.787144035353762540, -0.787174872830692650, -0.787205708339685510, -0.787236541880664050, -0.787267373453551910, +-0.787298203058270700, -0.787329030694744030, -0.787359856362894740, -0.787390680062646450, -0.787421501793920900, -0.787452321556641470, -0.787483139350731330, -0.787513955176113330, +-0.787544769032710420, -0.787575580920445660, -0.787606390839241890, -0.787637198789022160, -0.787668004769709440, -0.787698808781226670, -0.787729610823497460, -0.787760410896443660, +-0.787791208999988780, -0.787822005134055980, -0.787852799298568660, -0.787883591493448780, -0.787914381718619940, -0.787945169974005210, -0.787975956259527430, -0.788006740575109890, +-0.788037522920675420, -0.788068303296147190, -0.788099081701448160, -0.788129858136501380, -0.788160632601230040, -0.788191405095557630, -0.788222175619406110, -0.788252944172699310, +-0.788283710755359970, -0.788314475367312030, -0.788345238008477330, -0.788375998678779500, -0.788406757378141700, -0.788437514106486990, -0.788468268863738440, -0.788499021649819330, +-0.788529772464652610, -0.788560521308161460, -0.788591268180268920, -0.788622013080898300, -0.788652756009972760, -0.788683496967415690, -0.788714235953149380, -0.788744972967097560, +-0.788775708009183730, -0.788806441079330180, -0.788837172177460520, -0.788867901303497930, -0.788898628457365580, -0.788929353638986640, -0.788960076848284290, -0.788990798085181800, +-0.789021517349602240, -0.789052234641469010, -0.789082949960705050, -0.789113663307233870, -0.789144374680978980, -0.789175084081862650, -0.789205791509808520, -0.789236496964740080, +-0.789267200446580830, -0.789297901955253070, -0.789328601490680510, -0.789359299052786460, -0.789389994641494170, -0.789420688256726840, -0.789451379898407860, -0.789482069566460390, +-0.789512757260807830, -0.789543442981373360, -0.789574126728080250, -0.789604808500852350, -0.789635488299611830, -0.789666166124282640, -0.789696841974788070, -0.789727515851051940, +-0.789758187752996440, -0.789788857680545520, -0.789819525633622450, -0.789850191612150530, -0.789880855616053150, -0.789911517645253580, -0.789942177699675230, -0.789972835779241490, +-0.790003491883875640, -0.790034146013501080, -0.790064798168041650, -0.790095448347419740, -0.790126096551559190, -0.790156742780383390, -0.790187387033816190, -0.790218029311780090, +-0.790248669614198930, -0.790279307940995990, -0.790309944292094890, -0.790340578667418910, -0.790371211066891450, -0.790401841490436020, -0.790432469937975890, -0.790463096409434680, +-0.790493720904735690, -0.790524343423802960, -0.790554963966558780, -0.790585582532927210, -0.790616199122831650, -0.790646813736196160, -0.790677426372943140, -0.790708037032996520, +-0.790738645716279830, -0.790769252422716450, -0.790799857152230000, -0.790830459904743990, -0.790861060680181690, -0.790891659478466850, -0.790922256299522730, -0.790952851143273070, +-0.790983444009641270, -0.791014034898551380, -0.791044623809925910, -0.791075210743688810, -0.791105795699763690, -0.791136378678074630, -0.791166959678544110, -0.791197538701096210, +-0.791228115745654440, -0.791258690812142400, -0.791289263900483600, -0.791319835010601660, -0.791350404142420080, -0.791380971295862600, -0.791411536470852610, -0.791442099667313710, +-0.791472660885170210, -0.791503220124344490, -0.791533777384760720, -0.791564332666342520, -0.791594885969014060, -0.791625437292697740, -0.791655986637317950, -0.791686534002798090, +-0.791717079389062000, -0.791747622796033170, -0.791778164223635230, -0.791808703671791900, -0.791839241140426810, -0.791869776629463670, -0.791900310138826000, -0.791930841668438190, +-0.791961371218222740, -0.791991898788103830, -0.792022424378005190, -0.792052947987850970, -0.792083469617563820, -0.792113989267068110, -0.792144506936287350, -0.792175022625145390, +-0.792205536333565720, -0.792236048061472300, -0.792266557808788850, -0.792297065575438890, -0.792327571361346350, -0.792358075166434750, -0.792388576990628700, -0.792419076833850490, +-0.792449574696024620, -0.792480070577074920, -0.792510564476925470, -0.792541056395499100, -0.792571546332720090, -0.792602034288512280, -0.792632520262799290, -0.792663004255505070, +-0.792693486266553340, -0.792723966295867830, -0.792754444343372390, -0.792784920408990960, -0.792815394492647150, -0.792845866594264810, -0.792876336713768450, -0.792906804851080670, +-0.792937271006125880, -0.792967735178827900, -0.792998197369111040, -0.793028657576898220, -0.793059115802113860, -0.793089572044681560, -0.793120026304525380, -0.793150478581569170, +-0.793180928875736660, -0.793211377186952000, -0.793241823515138720, -0.793272267860220980, -0.793302710222122510, -0.793333150600767920, -0.793363588996079840, -0.793394025407982760, +-0.793424459836400640, -0.793454892281257870, -0.793485322742477410, -0.793515751219983630, -0.793546177713700400, -0.793576602223551860, -0.793607024749461650, -0.793637445291353940, +-0.793667863849152670, -0.793698280422781680, -0.793728695012165030, -0.793759107617226680, -0.793789518237891010, -0.793819926874081090, -0.793850333525721320, -0.793880738192735750, +-0.793911140875048770, -0.793941541572583450, -0.793971940285264300, -0.794002337013015260, -0.794032731755760390, -0.794063124513423760, -0.794093515285929200, -0.794123904073200990, +-0.794154290875162870, -0.794184675691739120, -0.794215058522853680, -0.794245439368431170, -0.794275818228394440, -0.794306195102668200, -0.794336569991176410, -0.794366942893843800, +-0.794397313810593310, -0.794427682741349450, -0.794458049686036500, -0.794488414644578310, -0.794518777616899150, -0.794549138602923090, -0.794579497602574070, -0.794609854615776490, +-0.794640209642454080, -0.794670562682531220, -0.794700913735931990, -0.794731262802581000, -0.794761609882401190, -0.794791954975317520, -0.794822298081254490, -0.794852639200135050, +-0.794882978331884040, -0.794913315476425630, -0.794943650633684000, -0.794973983803583200, -0.795004314986047400, -0.795034644181000780, -0.795064971388367630, -0.795095296608072100, +-0.795125619840038270, -0.795155941084190300, -0.795186260340453140, -0.795216577608749750, -0.795246892889004850, -0.795277206181142840, -0.795307517485088210, -0.795337826800764370, +-0.795368134128095930, -0.795398439467007170, -0.795428742817422260, -0.795459044179265500, -0.795489343552461150, -0.795519640936933390, -0.795549936332606620, -0.795580229739405010, +-0.795610521157252730, -0.795640810586074720, -0.795671098025794280, -0.795701383476335900, -0.795731666937624200, -0.795761948409583810, -0.795792227892137990, -0.795822505385211710, +-0.795852780888729020, -0.795883054402614420, -0.795913325926792200, -0.795943595461186650, -0.795973863005722150, -0.796004128560322990, -0.796034392124913560, -0.796064653699418030, +-0.796094913283761470, -0.796125170877867160, -0.796155426481659820, -0.796185680095063850, -0.796215931718004310, -0.796246181350404480, -0.796276428992189090, -0.796306674643282640, +-0.796336918303609530, -0.796367159973094150, -0.796397399651660790, -0.796427637339233940, -0.796457873035738120, -0.796488106741097490, -0.796518338455236560, -0.796548568178079950, +-0.796578795909552270, -0.796609021649577250, -0.796639245398079510, -0.796669467154984320, -0.796699686920214870, -0.796729904693696200, -0.796760120475352830, -0.796790334265109030, +-0.796820546062889430, -0.796850755868618530, -0.796880963682220720, -0.796911169503620510, -0.796941373332742400, -0.796971575169510780, -0.797001775013850280, -0.797031972865685830, +-0.797062168724940960, -0.797092362591540700, -0.797122554465409470, -0.797152744346472430, -0.797182932234652970, -0.797213118129876160, -0.797243302032066610, -0.797273483941148720, +-0.797303663857047210, -0.797333841779686470, -0.797364017708991120, -0.797394191644885790, -0.797424363587294960, -0.797454533536143260, -0.797484701491355640, -0.797514867452855820, +-0.797545031420568870, -0.797575193394419290, -0.797605353374332250, -0.797635511360231360, -0.797665667352041590, -0.797695821349687750, -0.797725973353094250, -0.797756123362185930, +-0.797786271376887180, -0.797816417397122830, -0.797846561422817510, -0.797876703453895610, -0.797906843490282070, -0.797936981531901960, -0.797967117578678890, -0.797997251630537920, +-0.798027383687403890, -0.798057513749201860, -0.798087641815855560, -0.798117767887290160, -0.798147891963430390, -0.798178014044200860, -0.798208134129526290, -0.798238252219331420, +-0.798268368313540870, -0.798298482412079350, -0.798328594514871700, -0.798358704621842550, -0.798388812732916620, -0.798418918848019190, -0.798449022967073980, -0.798479125090006180, +-0.798509225216741060, -0.798539323347202350, -0.798569419481315430, -0.798599513619004830, -0.798629605760195590, -0.798659695904812230, -0.798689784052779680, -0.798719870204022690, +-0.798749954358465960, -0.798780036516034350, -0.798810116676652690, -0.798840194840245710, -0.798870271006738800, -0.798900345176055680, -0.798930417348121650, -0.798960487522861530, +-0.798990555700200830, -0.799020621880063290, -0.799050686062374060, -0.799080748247058100, -0.799110808434040370, -0.799140866623245460, -0.799170922814598560, -0.799200977008024280, +-0.799231029203447570, -0.799261079400793270, -0.799291127599986220, -0.799321173800952020, -0.799351218003614190, -0.799381260207898460, -0.799411300413729430, -0.799441338621032840, +-0.799471374829732300, -0.799501409039753310, -0.799531441251020820, -0.799561471463459680, -0.799591499676994940, -0.799621525891551440, -0.799651550107054020, -0.799681572323427850, +-0.799711592540597760, -0.799741610758488600, -0.799771626977025970, -0.799801641196133730, -0.799831653415737480, -0.799861663635761940, -0.799891671856132860, -0.799921678076774060, +-0.799951682297611040, -0.799981684518568880, -0.800011684739572520, -0.800041682960546900, -0.800071679181417080, -0.800101673402108030, -0.800131665622544790, -0.800161655842652530, +-0.800191644062355990, -0.800221630281580330, -0.800251614500251170, -0.800281596718292470, -0.800311576935629710, -0.800341555152188630, -0.800371531367893070, -0.800401505582668650, +-0.800431477796440530, -0.800461448009133660, -0.800491416220673210, -0.800521382430984250, -0.800551346639991830, -0.800581308847621020, -0.800611269053796870, -0.800641227258444670, +-0.800671183461489360, -0.800701137662856550, -0.800731089862470440, -0.800761040060256610, -0.800790988256140150, -0.800820934450046760, -0.800850878641900520, -0.800880820831627040, +-0.800910761019151480, -0.800940699204399140, -0.800970635387294960, -0.801000569567764220, -0.801030501745731980, -0.801060431921123640, -0.801090360093864140, -0.801120286263878660, +-0.801150210431093130, -0.801180132595431530, -0.801210052756819560, -0.801239970915182400, -0.801269887070445890, -0.801299801222534190, -0.801329713371372930, -0.801359623516887390, +-0.801389531659002840, -0.801419437797644350, -0.801449341932737310, -0.801479244064207010, -0.801509144191978500, -0.801539042315977170, -0.801568938436128200, -0.801598832552357420, +-0.801628724664589120, -0.801658614772748910, -0.801688502876762190, -0.801718388976554670, -0.801748273072050770, -0.801778155163176190, -0.801808035249856110, -0.801837913332016040, +-0.801867789409581140, -0.801897663482476820, -0.801927535550628230, -0.801957405613960890, -0.801987273672400080, -0.802017139725870960, -0.802047003774299050, -0.802076865817610170, +-0.802106725855728620, -0.802136583888580220, -0.802166439916090930, -0.802196293938184920, -0.802226145954788250, -0.802255995965826200, -0.802285843971224160, -0.802315689970907520, +-0.802345533964801680, -0.802375375952831930, -0.802405215934923750, -0.802435053911002670, -0.802464889880993740, -0.802494723844822790, -0.802524555802415440, -0.802554385753696200, +-0.802584213698591010, -0.802614039637025160, -0.802643863568924920, -0.802673685494214470, -0.802703505412819650, -0.802733323324666290, -0.802763139229679460, -0.802792953127784870, +-0.802822765018907810, -0.802852574902973900, -0.802882382779908530, -0.802912188649637200, -0.802941992512085420, -0.802971794367179140, -0.803001594214842960, -0.803031392055002740, +-0.803061187887583960, -0.803090981712512810, -0.803120773529713670, -0.803150563339112610, -0.803180351140635130, -0.803210136934206730, -0.803239920719753030, -0.803269702497199530, +-0.803299482266471740, -0.803329260027495270, -0.803359035780195630, -0.803388809524498430, -0.803418581260329720, -0.803448350987614020, -0.803478118706277500, -0.803507884416245650, +-0.803537648117444660, -0.803567409809798900, -0.803597169493234680, -0.803626927167677580, -0.803656682833053140, -0.803686436489286950, -0.803716188136304740, -0.803745937774032030, +-0.803775685402394410, -0.803805431021317630, -0.803835174630727290, -0.803864916230549010, -0.803894655820708960, -0.803924393401131750, -0.803954128971743560, -0.803983862532470560, +-0.804013594083237470, -0.804043323623970240, -0.804073051154594820, -0.804102776675036710, -0.804132500185221640, -0.804162221685075340, -0.804191941174523530, -0.804221658653491820, +-0.804251374121905950, -0.804281087579691630, -0.804310799026774710, -0.804340508463081250, -0.804370215888535970, -0.804399921303065150, -0.804429624706594510, -0.804459326099050460, +-0.804489025480357390, -0.804518722850441900, -0.804548418209229510, -0.804578111556646160, -0.804607802892617460, -0.804637492217069260, -0.804667179529927390, -0.804696864831117460, +-0.804726548120565430, -0.804756229398197020, -0.804785908663938620, -0.804815585917714850, -0.804845261159452210, -0.804874934389076310, -0.804904605606513670, -0.804934274811689000, +-0.804963942004528590, -0.804993607184958380, -0.805023270352904110, -0.805052931508291600, -0.805082590651046930, -0.805112247781095690, -0.805141902898363740, -0.805171556002777120, +-0.805201207094261680, -0.805230856172743700, -0.805260503238148020, -0.805290148290401020, -0.805319791329428770, -0.805349432355157550, -0.805379071367512190, -0.805408708366419090, +-0.805438343351804310, -0.805467976323593680, -0.805497607281713050, -0.805527236226088460, -0.805556863156645760, -0.805586488073310900, -0.805616110976009820, -0.805645731864668480, +-0.805675350739212700, -0.805704967599569220, -0.805734582445662760, -0.805764195277419830, -0.805793806094766920, -0.805823414897628990, -0.805853021685932420, -0.805882626459603400, +-0.805912229218567870, -0.805941829962751650, -0.805971428692080940, -0.806001025406481550, -0.806030620105879780, -0.806060212790201350, -0.806089803459372310, -0.806119392113318840, +-0.806148978751967450, -0.806178563375243070, -0.806208145983072220, -0.806237726575381060, -0.806267305152096100, -0.806296881713142400, -0.806326456258446460, -0.806356028787934330, +-0.806385599301532200, -0.806415167799166000, -0.806444734280761910, -0.806474298746245990, -0.806503861195544290, -0.806533421628582990, -0.806562980045288150, -0.806592536445586370, +-0.806622090829402730, -0.806651643196663830, -0.806681193547295840, -0.806710741881225380, -0.806740288198377510, -0.806769832498678950, -0.806799374782055880, -0.806828915048434350, +-0.806858453297740420, -0.806887989529900480, -0.806917523744840490, -0.806947055942486720, -0.806976586122765350, -0.807006114285602430, -0.807035640430924790, -0.807065164558657510, +-0.807094686668727410, -0.807124206761060450, -0.807153724835583560, -0.807183240892221930, -0.807212754930902050, -0.807242266951550320, -0.807271776954093020, -0.807301284938456210, +-0.807330790904566160, -0.807360294852349170, -0.807389796781731390, -0.807419296692639230, -0.807448794584998740, -0.807478290458736760, -0.807507784313778560, -0.807537276150051000, +-0.807566765967480120, -0.807596253765992870, -0.807625739545514530, -0.807655223305971840, -0.807684705047290950, -0.807714184769398490, -0.807743662472220400, -0.807773138155683300, +-0.807802611819713250, -0.807832083464236740, -0.807861553089179950, -0.807891020694469390, -0.807920486280031100, -0.807949949845792270, -0.807979411391677950, -0.808008870917615200, +-0.808038328423530180, -0.808067783909349970, -0.808097237374999720, -0.808126688820406280, -0.808156138245496260, -0.808185585650195830, -0.808215031034431490, -0.808244474398129520, +-0.808273915741216320, -0.808303355063618390, -0.808332792365262120, -0.808362227646073790, -0.808391660905980470, -0.808421092144907430, -0.808450521362781730, -0.808479948559529650, +-0.808509373735078250, -0.808538796889352820, -0.808568218022280520, -0.808597637133787630, -0.808627054223800660, -0.808656469292245990, -0.808685882339050250, -0.808715293364139720, +-0.808744702367441000, -0.808774109348880500, -0.808803514308384710, -0.808832917245880690, -0.808862318161293840, -0.808891717054551210, -0.808921113925579300, -0.808950508774305080, +-0.808979901600654140, -0.809009292404553330, -0.809038681185929360, -0.809068067944708760, -0.809097452680817900, -0.809126835394183400, -0.809156216084731870, -0.809185594752389710, +-0.809214971397083650, -0.809244346018740180, -0.809273718617286250, -0.809303089192647600, -0.809332457744751270, -0.809361824273523660, -0.809391188778892160, -0.809420551260782050, +-0.809449911719120620, -0.809479270153834360, -0.809508626564849900, -0.809537980952093950, -0.809567333315493020, -0.809596683654973840, -0.809626031970462790, -0.809655378261886830, +-0.809684722529172340, -0.809714064772246060, -0.809743404991035030, -0.809772743185465100, -0.809802079355463220, -0.809831413500956220, -0.809860745621871160, -0.809890075718133760, +-0.809919403789671200, -0.809948729836410090, -0.809978053858277150, -0.810007375855199110, -0.810036695827102580, -0.810066013773914300, -0.810095329695560970, -0.810124643591969340, +-0.810153955463066120, -0.810183265308778600, -0.810212573129032280, -0.810241878923754540, -0.810271182692872240, -0.810300484436312420, -0.810329784154000810, -0.810359081845864800, +-0.810388377511831020, -0.810417671151826280, -0.810446962765777430, -0.810476252353611200, -0.810505539915254310, -0.810534825450633600, -0.810564108959675790, -0.810593390442307720, +-0.810622669898456660, -0.810651947328048460, -0.810681222731010400, -0.810710496107269200, -0.810739767456752360, -0.810769036779385500, -0.810798304075096120, -0.810827569343810950, +-0.810856832585456930, -0.810886093799960680, -0.810915352987249370, -0.810944610147249500, -0.810973865279888240, -0.811003118385092310, -0.811032369462788560, -0.811061618512904370, +-0.811090865535365690, -0.811120110530099690, -0.811149353497033540, -0.811178594436094520, -0.811207833347208470, -0.811237070230302890, -0.811266305085304620, -0.811295537912140490, +-0.811324768710737660, -0.811353997481022770, -0.811383224222922970, -0.811412448936365100, -0.811441671621276120, -0.811470892277582840, -0.811500110905212460, -0.811529327504092350, +-0.811558542074148350, -0.811587754615307970, -0.811616965127498700, -0.811646173610646620, -0.811675380064678990, -0.811704584489522870, -0.811733786885105450, -0.811762987251353430, +-0.811792185588193990, -0.811821381895554080, -0.811850576173360760, -0.811879768421540970, -0.811908958640021770, -0.811938146828730110, -0.811967332987593720, -0.811996517116538420, +-0.812025699215491730, -0.812054879284380910, -0.812084057323133380, -0.812113233331675180, -0.812142407309933920, -0.812171579257836670, -0.812200749175310380, -0.812229917062282310, +-0.812259082918679320, -0.812288246744428790, -0.812317408539457550, -0.812346568303692780, -0.812375726037061650, -0.812404881739491660, -0.812434035410908970, -0.812463187051241210, +-0.812492336660415430, -0.812521484238359350, -0.812550629784999030, -0.812579773300262210, -0.812608914784075930, -0.812638054236367370, -0.812667191657063580, -0.812696327046091960, +-0.812725460403379340, -0.812754591728853230, -0.812783721022440560, -0.812812848284068630, -0.812841973513665050, -0.812871096711156090, -0.812900217876469270, -0.812929337009532070, +-0.812958454110271900, -0.812987569178615140, -0.813016682214489420, -0.813045793217822110, -0.813074902188540170, -0.813104009126571100, -0.813133114031841850, -0.813162216904279920, +-0.813191317743812480, -0.813220416550366700, -0.813249513323869850, -0.813278608064249340, -0.813307700771432660, -0.813336791445346320, -0.813365880085918040, -0.813394966693075430, +-0.813424051266745000, -0.813453133806854360, -0.813482214313331010, -0.813511292786102010, -0.813540369225094870, -0.813569443630236640, -0.813598516001454940, -0.813627586338676930, +-0.813656654641830010, -0.813685720910841350, -0.813714785145638440, -0.813743847346149130, -0.813772907512299580, -0.813801965644017860, -0.813831021741231120, -0.813860075803867430, +-0.813889127831852970, -0.813918177825115770, -0.813947225783583030, -0.813976271707182340, -0.814005315595840880, -0.814034357449486160, -0.814063397268045550, -0.814092435051446460, +-0.814121470799616280, -0.814150504512482390, -0.814179536189972850, -0.814208565832013840, -0.814237593438533410, -0.814266619009459070, -0.814295642544718650, -0.814324664044238640, +-0.814353683507947010, -0.814382700935771140, -0.814411716327638420, -0.814440729683476580, -0.814469741003212790, -0.814498750286774650, -0.814527757534089680, -0.814556762745085370, +-0.814585765919689010, -0.814614767057828870, -0.814643766159431240, -0.814672763224424280, -0.814701758252735280, -0.814730751244292510, -0.814759742199022250, -0.814788731116852680, +-0.814817717997711300, -0.814846702841525610, -0.814875685648223210, -0.814904666417731520, -0.814933645149978240, -0.814962621844890770, -0.814991596502396830, -0.815020569122423820, +-0.815049539704899460, -0.815078508249751700, -0.815107474756907150, -0.815136439226293970, -0.815165401657840240, -0.815194362051472330, -0.815223320407118650, -0.815252276724706680, +-0.815281231004163940, -0.815310183245418150, -0.815339133448396920, -0.815368081613027870, -0.815397027739238610, -0.815425971826956750, -0.815454913876110020, -0.815483853886625920, +-0.815512791858432730, -0.815541727791457060, -0.815570661685627090, -0.815599593540870420, -0.815628523357115330, -0.815657451134288450, -0.815686376872317820, -0.815715300571131290, +-0.815744222230656570, -0.815773141850821280, -0.815802059431553150, -0.815830974972779790, -0.815859888474429030, -0.815888799936428600, -0.815917709358706110, -0.815946616741189960, +-0.815975522083806640, -0.816004425386484540, -0.816033326649151400, -0.816062225871735380, -0.816091123054163430, -0.816120018196363590, -0.816148911298263610, -0.816177802359791540, +-0.816206691380874870, -0.816235578361441450, -0.816264463301419110, -0.816293346200735570, -0.816322227059318670, -0.816351105877096250, -0.816379982653996580, -0.816408857389946510, +-0.816437730084874190, -0.816466600738707580, -0.816495469351374960, -0.816524335922803160, -0.816553200452920570, -0.816582062941654920, -0.816610923388934150, -0.816639781794685990, +-0.816668638158838500, -0.816697492481319290, -0.816726344762056410, -0.816755195000977710, -0.816784043198010900, -0.816812889353084160, -0.816841733466125540, -0.816870575537062220, +-0.816899415565822350, -0.816928253552334450, -0.816957089496525460, -0.816985923398323770, -0.817014755257657210, -0.817043585074453850, -0.817072412848641410, -0.817101238580148050, +-0.817130062268901500, -0.817158883914829830, -0.817187703517860960, -0.817216521077922860, -0.817245336594943360, -0.817274150068851180, -0.817302961499573040, -0.817331770887037460, +-0.817360578231172470, -0.817389383531906490, -0.817418186789166670, -0.817446988002881290, -0.817475787172978420, -0.817504584299386220, -0.817533379382032410, -0.817562172420845280, +-0.817590963415752660, -0.817619752366682610, -0.817648539273563180, -0.817677324136322440, -0.817706106954888880, -0.817734887729189450, -0.817763666459152990, -0.817792443144707230, +-0.817821217785780870, -0.817849990382301000, -0.817878760934196200, -0.817907529441394440, -0.817936295903823880, -0.817965060321412470, -0.817993822694088600, -0.818022583021779990, +-0.818051341304415040, -0.818080097541921680, -0.818108851734228090, -0.818137603881262890, -0.818166353982953230, -0.818195102039227630, -0.818223848050014250, -0.818252592015241810, +-0.818281333934837370, -0.818310073808729550, -0.818338811636846630, -0.818367547419116550, -0.818396281155467700, -0.818425012845828140, -0.818453742490126030, -0.818482470088289560, +-0.818511195640246990, -0.818539919145926390, -0.818568640605255910, -0.818597360018164410, -0.818626077384579040, -0.818654792704428420, -0.818683505977641280, -0.818712217204144890, +-0.818740926383868080, -0.818769633516738820, -0.818798338602685470, -0.818827041641636330, -0.818855742633519570, -0.818884441578263570, -0.818913138475796280, -0.818941833326046200, +-0.818970526128941610, -0.818999216884410690, -0.819027905592382140, -0.819056592252783380, -0.819085276865543220, -0.819113959430589730, -0.819142639947851970, -0.819171318417256990, +-0.819199994838733740, -0.819228669212210600, -0.819257341537615650, -0.819286011814877480, -0.819314680043924160, -0.819343346224684190, -0.819372010357085840, -0.819400672441057520, +-0.819429332476527490, -0.819457990463424600, -0.819486646401676230, -0.819515300291211330, -0.819543952131958080, -0.819572601923845510, -0.819601249666800920, -0.819629895360753260, +-0.819658539005630790, -0.819687180601361920, -0.819715820147875250, -0.819744457645098960, -0.819773093092961420, -0.819801726491391270, -0.819830357840316770, -0.819858987139666430, +-0.819887614389369080, -0.819916239589352110, -0.819944862739544700, -0.819973483839875010, -0.820002102890272200, -0.820030719890663560, -0.820059334840978150, -0.820087947741144460, +-0.820116558591090780, -0.820145167390745830, -0.820173774140037890, -0.820202378838895460, -0.820230981487247160, -0.820259582085021370, -0.820288180632146700, -0.820316777128551440, +-0.820345371574164870, -0.820373963968914380, -0.820402554312728900, -0.820431142605537620, -0.820459728847267920, -0.820488313037848860, -0.820516895177209050, -0.820545475265276990, +-0.820574053301981300, -0.820602629287250470, -0.820631203221013020, -0.820659775103197540, -0.820688344933732660, -0.820716912712546990, -0.820745478439568910, -0.820774042114727710, +-0.820802603737950890, -0.820831163309167610, -0.820859720828306380, -0.820888276295296370, -0.820916829710065080, -0.820945381072541780, -0.820973930382655090, -0.821002477640333520, +-0.821031022845505660, -0.821059565998100370, -0.821088107098046140, -0.821116646145271580, -0.821145183139705530, -0.821173718081276370, -0.821202250969913510, -0.821230781805544540, +-0.821259310588098530, -0.821287837317504320, -0.821316361993691070, -0.821344884616586280, -0.821373405186119340, -0.821401923702218870, -0.821430440164813590, -0.821458954573832220, +-0.821487466929203490, -0.821515977230856120, -0.821544485478718720, -0.821572991672720130, -0.821601495812789070, -0.821629997898854820, -0.821658497930845000, -0.821686995908688990, +-0.821715491832315510, -0.821743985701653750, -0.821772477516631520, -0.821800967277178110, -0.821829454983222350, -0.821857940634692860, -0.821886424231518590, -0.821914905773628130, +-0.821943385260950570, -0.821971862693414490, -0.822000338070948740, -0.822028811393482050, -0.822057282660943470, -0.822085751873262160, -0.822114219030365860, -0.822142684132184160, +-0.822171147178646140, -0.822199608169679850, -0.822228067105214460, -0.822256523985179010, -0.822284978809502130, -0.822313431578112870, -0.822341882290939960, -0.822370330947912450, +-0.822398777548959070, -0.822427222094008650, -0.822455664582990350, -0.822484105015832800, -0.822512543392465490, -0.822540979712816260, -0.822569413976814710, -0.822597846184389470, +-0.822626276335470250, -0.822654704429984780, -0.822683130467862570, -0.822711554449032540, -0.822739976373423550, -0.822768396240964760, -0.822796814051584890, -0.822825229805213000, +-0.822853643501778030, -0.822882055141208930, -0.822910464723434650, -0.822938872248384800, -0.822967277715987210, -0.822995681126171500, -0.823024082478866600, -0.823052481774001920, +-0.823080879011505510, -0.823109274191306970, -0.823137667313335260, -0.823166058377519330, -0.823194447383788220, -0.823222834332071110, -0.823251219222296830, -0.823279602054394430, +-0.823307982828293210, -0.823336361543921870, -0.823364738201210260, -0.823393112800086200, -0.823421485340479430, -0.823449855822318890, -0.823478224245534300, -0.823506590610053490, +-0.823534954915806310, -0.823563317162721800, -0.823591677350728910, -0.823620035479756820, -0.823648391549734680, -0.823676745560591560, -0.823705097512256510, -0.823733447404658810, +-0.823761795237727410, -0.823790141011391590, -0.823818484725580950, -0.823846826380223550, -0.823875165975249010, -0.823903503510587170, -0.823931838986166070, -0.823960172401915330, +-0.823988503757764110, -0.824016833053641710, -0.824045160289477160, -0.824073485465199760, -0.824101808580738670, -0.824130129636022950, -0.824158448630981980, -0.824186765565544930, +-0.824215080439640870, -0.824243393253199730, -0.824271704006149460, -0.824300012698420130, -0.824328319329940550, -0.824356623900640790, -0.824384926410449030, -0.824413226859294860, +-0.824441525247107570, -0.824469821573816540, -0.824498115839350950, -0.824526408043640080, -0.824554698186613200, -0.824582986268199590, -0.824611272288328420, -0.824639556246929200, +-0.824667838143931520, -0.824696117979263790, -0.824724395752855610, -0.824752671464636600, -0.824780945114536370, -0.824809216702483310, -0.824837486228407140, -0.824865753692237360, +-0.824894019093903030, -0.824922282433333760, -0.824950543710458840, -0.824978802925207420, -0.825007060077509120, -0.825035315167293120, -0.825063568194488780, -0.825091819159026070, +-0.825120068060833380, -0.825148314899840420, -0.825176559675976700, -0.825204802389172040, -0.825233043039354960, -0.825261281626455290, -0.825289518150402300, -0.825317752611125610, +-0.825345985008554490, -0.825374215342618460, -0.825402443613246770, -0.825430669820369060, -0.825458893963914700, -0.825487116043813090, -0.825515336059994160, -0.825543554012386440, +-0.825571769900919740, -0.825599983725523790, -0.825628195486128200, -0.825656405182661700, -0.825684612815054230, -0.825712818383235180, -0.825741021887134050, -0.825769223326680350, +-0.825797422701803670, -0.825825620012433430, -0.825853815258499100, -0.825882008439930200, -0.825910199556656340, -0.825938388608607020, -0.825966575595712180, -0.825994760517900330, +-0.826022943375101630, -0.826051124167245580, -0.826079302894262350, -0.826107479556080220, -0.826135654152629350, -0.826163826683839480, -0.826191997149639870, -0.826220165549960360, +-0.826248331884730460, -0.826276496153879770, -0.826304658357337800, -0.826332818495034150, -0.826360976566898440, -0.826389132572860840, -0.826417286512849960, -0.826445438386795740, +-0.826473588194628020, -0.826501735936276740, -0.826529881611670740, -0.826558025220739960, -0.826586166763414120, -0.826614306239622840, -0.826642443649295840, -0.826670578992362740, +-0.826698712268753130, -0.826726843478396760, -0.826754972621223330, -0.826783099697162460, -0.826811224706144320, -0.826839347648097630, -0.826867468522952560, -0.826895587330638840, +-0.826923704071086620, -0.826951818744224630, -0.826979931349983160, -0.827008041888291800, -0.827036150359080290, -0.827064256762278460, -0.827092361097816030, -0.827120463365622620, +-0.827148563565628160, -0.827176661697762160, -0.827204757761954570, -0.827232851758135660, -0.827260943686234040, -0.827289033546180110, -0.827317121337903470, -0.827345207061334630, +-0.827373290716402310, -0.827401372303036680, -0.827429451821167670, -0.827457529270725020, -0.827485604651638560, -0.827513677963838010, -0.827541749207253320, -0.827569818381814310, +-0.827597885487450720, -0.827625950524092380, -0.827654013491669230, -0.827682074390111430, -0.827710133219348050, -0.827738189979309260, -0.827766244669925100, -0.827794297291125750, +-0.827822347842840140, -0.827850396324998680, -0.827878442737531310, -0.827906487080367740, -0.827934529353438030, -0.827962569556671910, -0.827990607689999440, -0.828018643753350440, +-0.828046677746654750, -0.828074709669842420, -0.828102739522843860, -0.828130767305587880, -0.828158793018004990, -0.828186816660025250, -0.828214838231578820, -0.828242857732594870, +-0.828270875163003680, -0.828298890522735420, -0.828326903811719810, -0.828354915029887010, -0.828382924177166970, -0.828410931253489520, -0.828438936258784840, -0.828466939192982750, +-0.828494940056013430, -0.828522938847807140, -0.828550935568292960, -0.828578930217401590, -0.828606922795062760, -0.828634913301207200, -0.828662901735763850, -0.828690888098663200, +-0.828718872389835440, -0.828746854609210380, -0.828774834756718200, -0.828802812832288960, -0.828830788835852710, -0.828858762767339500, -0.828886734626679390, -0.828914704413802330, +-0.828942672128639150, -0.828970637771118680, -0.828998601341171650, -0.829026562838728110, -0.829054522263718670, -0.829082479616072510, -0.829110434895720010, -0.829138388102591550, +-0.829166339236617090, -0.829194288297726680, -0.829222235285850710, -0.829250180200919010, -0.829278123042861970, -0.829306063811609540, -0.829334002507091990, -0.829361939129239390, +-0.829389873677982450, -0.829417806153250340, -0.829445736554973780, -0.829473664883083270, -0.829501591137508210, -0.829529515318179090, -0.829557437425026190, -0.829585357457979790, +-0.829613275416969940, -0.829641191301926820, -0.829669105112780800, -0.829697016849461950, -0.829724926511900660, -0.829752834100026980, -0.829780739613771300, -0.829808643053064230, +-0.829836544417835050, -0.829864443708014490, -0.829892340923532810, -0.829920236064320750, -0.829948129130307690, -0.829976020121424240, -0.830003909037600800, -0.830031795878767520, +-0.830059680644854800, -0.830087563335792810, -0.830115443951511930, -0.830143322491942560, -0.830171198957014740, -0.830199073346658990, -0.830226945660806010, -0.830254815899385320, +-0.830282684062327410, -0.830310550149562900, -0.830338414161022390, -0.830366276096635490, -0.830394135956332820, -0.830421993740044770, -0.830449849447701840, -0.830477703079234300, +-0.830505554634572430, -0.830533404113646620, -0.830561251516387380, -0.830589096842724970, -0.830616940092589910, -0.830644781265912900, -0.830672620362623460, -0.830700457382652520, +-0.830728292325930370, -0.830756125192388060, -0.830783955981954870, -0.830811784694561850, -0.830839611330139280, -0.830867435888617780, -0.830895258369927610, -0.830923078773999400, +-0.830950897100763420, -0.830978713350150170, -0.831006527522090140, -0.831034339616513850, -0.831062149633351680, -0.831089957572534680, -0.831117763433992240, -0.831145567217655420, +-0.831173368923455060, -0.831201168551320870, -0.831228966101183800, -0.831256761572974350, -0.831284554966622900, -0.831312346282060080, -0.831340135519216370, -0.831367922678022400, +-0.831395707758408540, -0.831423490760305530, -0.831451271683643740, -0.831479050528353690, -0.831506827294366650, -0.831534601981611890, -0.831562374590020690, -0.831590145119523560, +-0.831617913570051550, -0.831645679941534380, -0.831673444233902880, -0.831701206447087780, -0.831728966581019690, -0.831756724635629220, -0.831784480610846870, -0.831812234506603350, +-0.831839986322829180, -0.831867736059455190, -0.831895483716411750, -0.831923229293630050, -0.831950972791039910, -0.831978714208572280, -0.832006453546157880, -0.832034190803727870, +-0.832061925981211760, -0.832089659078540930, -0.832117390095646000, -0.832145119032457470, -0.832172845888906280, -0.832200570664922920, -0.832228293360438130, -0.832256013975382510, +-0.832283732509687010, -0.832311448963282130, -0.832339163336099030, -0.832366875628067660, -0.832394585839119070, -0.832422293969183990, -0.832450000018193690, -0.832477703986077790, +-0.832505405872767780, -0.832533105678194160, -0.832560803402287770, -0.832588499044979450, -0.832616192606199900, -0.832643884085879750, -0.832671573483949930, -0.832699260800341290, +-0.832726946034984430, -0.832754629187810070, -0.832782310258749820, -0.832809989247733200, -0.832837666154691680, -0.832865340979556450, -0.832893013722257320, -0.832920684382725710, +-0.832948352960892310, -0.832976019456688200, -0.833003683870043870, -0.833031346200890480, -0.833059006449158650, -0.833086664614779320, -0.833114320697683210, -0.833141974697801490, +-0.833169626615064660, -0.833197276449404440, -0.833224924200750340, -0.833252569869034070, -0.833280213454186350, -0.833307854956138570, -0.833335494374820680, -0.833363131710163960, +-0.833390766962099570, -0.833418400130558120, -0.833446031215470780, -0.833473660216768280, -0.833501287134381650, -0.833528911968241860, -0.833556534718279730, -0.833584155384426320, +-0.833611773966612900, -0.833639390464769650, -0.833667004878827940, -0.833694617208718620, -0.833722227454373300, -0.833749835615722020, -0.833777441692696080, -0.833805045685226400, +-0.833832647593244270, -0.833860247416680520, -0.833887845155466100, -0.833915440809532060, -0.833943034378809460, -0.833970625863229230, -0.833998215262722440, -0.834025802577220590, +-0.834053387806653830, -0.834080970950953460, -0.834108552010050850, -0.834136130983877180, -0.834163707872362710, -0.834191282675439070, -0.834218855393037200, -0.834246426025088140, +-0.834273994571523070, -0.834301561032272930, -0.834329125407269000, -0.834356687696442110, -0.834384247899723650, -0.834411806017044460, -0.834439362048335910, -0.834466915993529290, +-0.834494467852554990, -0.834522017625344390, -0.834549565311829330, -0.834577110911939870, -0.834604654425607610, -0.834632195852763710, -0.834659735193339360, -0.834687272447265590, +-0.834714807614473700, -0.834742340694894840, -0.834769871688460060, -0.834797400595100660, -0.834824927414747680, -0.834852452147332390, -0.834879974792786530, -0.834907495351040140, +-0.834935013822025060, -0.834962530205672460, -0.834990044501914050, -0.835017556710680010, -0.835045066831902050, -0.835072574865511560, -0.835100080811439490, -0.835127584669617230, +-0.835155086439976050, -0.835182586122447110, -0.835210083716961820, -0.835237579223451210, -0.835265072641846680, -0.835292563972079960, -0.835320053214081320, -0.835347540367782580, +-0.835375025433114930, -0.835402508410010290, -0.835429989298398850, -0.835457468098212420, -0.835484944809382400, -0.835512419431839850, -0.835539891965516370, -0.835567362410343240, +-0.835594830766251520, -0.835622297033172920, -0.835649761211038400, -0.835677223299779560, -0.835704683299328120, -0.835732141209614590, -0.835759597030570570, -0.835787050762127670, +-0.835814502404217510, -0.835841951956770690, -0.835869399419718940, -0.835896844792993750, -0.835924288076526410, -0.835951729270248410, -0.835979168374091030, -0.836006605387985660, +-0.836034040311863900, -0.836061473145657040, -0.836088903889296350, -0.836116332542713560, -0.836143759105840380, -0.836171183578607310, -0.836198605960946310, -0.836226026252789190, +-0.836253444454066570, -0.836280860564710400, -0.836308274584651960, -0.836335686513822950, -0.836363096352154670, -0.836390504099578600, -0.836417909756026370, -0.836445313321429350, +-0.836472714795718940, -0.836500114178826860, -0.836527511470684490, -0.836554906671223790, -0.836582299780375350, -0.836609690798071130, -0.836637079724242730, -0.836664466558821980, +-0.836691851301739730, -0.836719233952927800, -0.836746614512317800, -0.836773992979841230, -0.836801369355429810, -0.836828743639014830, -0.836856115830527990, -0.836883485929900920, +-0.836910853937065100, -0.836938219851952160, -0.836965583674494140, -0.836992945404621770, -0.837020305042266880, -0.837047662587361410, -0.837075018039837080, -0.837102371399624840, +-0.837129722666656640, -0.837157071840864080, -0.837184418922178990, -0.837211763910532760, -0.837239106805857110, -0.837266447608083660, -0.837293786317144130, -0.837321122932970120, +-0.837348457455493360, -0.837375789884645890, -0.837403120220358450, -0.837430448462563200, -0.837457774611191860, -0.837485098666176600, -0.837512420627448130, -0.837539740494938510, +-0.837567058268579580, -0.837594373948303050, -0.837621687534040540, -0.837648999025723760, -0.837676308423284550, -0.837703615726654640, -0.837730920935765510, -0.837758224050549230, +-0.837785525070937400, -0.837812823996862190, -0.837840120828254320, -0.837867415565046290, -0.837894708207170160, -0.837921998754556860, -0.837949287207138460, -0.837976573564846890, +-0.838003857827613880, -0.838031139995371150, -0.838058420068050650, -0.838085698045584080, -0.838112973927903290, -0.838140247714940110, -0.838167519406626260, -0.838194789002893570, +-0.838222056503674430, -0.838249321908899670, -0.838276585218501570, -0.838303846432411960, -0.838331105550563340, -0.838358362572886430, -0.838385617499313620, -0.838412870329776740, +-0.838440121064207730, -0.838467369702538320, -0.838494616244700560, -0.838521860690626290, -0.838549103040247320, -0.838576343293495620, -0.838603581450303000, -0.838630817510601980, +-0.838658051474323370, -0.838685283341399690, -0.838712513111762760, -0.838739740785345080, -0.838766966362077590, -0.838794189841892580, -0.838821411224722200, -0.838848630510498180, +-0.838875847699152690, -0.838903062790617550, -0.838930275784824710, -0.838957486681706220, -0.838984695481194030, -0.839011902183220080, -0.839039106787716870, -0.839066309294615340, +-0.839093509703848110, -0.839120708015347110, -0.839147904229044730, -0.839175098344872250, -0.839202290362761950, -0.839229480282645880, -0.839256668104456200, -0.839283853828124760, +-0.839311037453583710, -0.839338218980765110, -0.839365398409601000, -0.839392575740023350, -0.839419750971964200, -0.839446924105355710, -0.839474095140130490, -0.839501264076219390, +-0.839528430913555220, -0.839555595652070500, -0.839582758291696150, -0.839609918832365020, -0.839637077274009160, -0.839664233616560510, -0.839691387859951230, -0.839718540004113610, +-0.839745690048979480, -0.839772837994481320, -0.839799983840550990, -0.839827127587120640, -0.839854269234122430, -0.839881408781489200, -0.839908546229151790, -0.839935681577043130, +-0.839962814825095270, -0.839989945973240730, -0.840017075021410990, -0.840044201969538550, -0.840071326817555470, -0.840098449565394260, -0.840125570212986730, -0.840152688760265390, +-0.840179805207162400, -0.840206919553609710, -0.840234031799539820, -0.840261141944884880, -0.840288249989577520, -0.840315355933549110, -0.840342459776732280, -0.840369561519059280, +-0.840396661160462850, -0.840423758700874380, -0.840450854140226470, -0.840477947478451390, -0.840505038715481430, -0.840532127851248870, -0.840559214885685970, -0.840586299818725120, +-0.840613382650298500, -0.840640463380338380, -0.840667542008777140, -0.840694618535547500, -0.840721692960580860, -0.840748765283809930, -0.840775835505167100, -0.840802903624585210, +-0.840829969641995630, -0.840857033557331100, -0.840884095370523890, -0.840911155081506490, -0.840938212690211180, -0.840965268196570470, -0.840992321600516400, -0.841019372901981700, +-0.841046422100898420, -0.841073469197199160, -0.841100514190816660, -0.841127557081682520, -0.841154597869729350, -0.841181636554889760, -0.841208673137096460, -0.841235707616281080, +-0.841262739992376440, -0.841289770265314930, -0.841316798435029050, -0.841343824501451070, -0.841370848464513600, -0.841397870324149030, -0.841424890080289760, -0.841451907732868270, +-0.841478923281816950, -0.841505936727068300, -0.841532948068555390, -0.841559957306209580, -0.841586964439963950, -0.841613969469750870, -0.841640972395503280, -0.841667973217152810, +-0.841694971934632390, -0.841721968547874620, -0.841748963056811910, -0.841775955461376730, -0.841802945761501720, -0.841829933957119360, -0.841856920048162150, -0.841883904034562590, +-0.841910885916253290, -0.841937865693167200, -0.841964843365236030, -0.841991818932392830, -0.842018792394570000, -0.842045763751700700, -0.842072733003716430, -0.842099700150550360, +-0.842126665192135080, -0.842153628128403110, -0.842180588959287160, -0.842207547684719620, -0.842234504304633200, -0.842261458818960640, -0.842288411227634310, -0.842315361530587060, +-0.842342309727751810, -0.842369255819060300, -0.842396199804445690, -0.842423141683840580, -0.842450081457178150, -0.842477019124389990, -0.842503954685409280, -0.842530888140168630, +-0.842557819488600760, -0.842584748730638380, -0.842611675866214100, -0.842638600895260770, -0.842665523817710760, -0.842692444633497020, -0.842719363342552150, -0.842746279944809440, +-0.842773194440200380, -0.842800106828658470, -0.842827017110116320, -0.842853925284506980, -0.842880831351762390, -0.842907735311815730, -0.842934637164599710, -0.842961536910047160, +-0.842988434548090800, -0.843015330078663250, -0.843042223501697440, -0.843069114817125990, -0.843096004024881830, -0.843122891124897690, -0.843149776117106290, -0.843176659001440900, +-0.843203539777833360, -0.843230418446217040, -0.843257295006524580, -0.843284169458689450, -0.843311041802643380, -0.843337912038319760, -0.843364780165651310, -0.843391646184570850, +-0.843418510095011340, -0.843445371896905600, -0.843472231590186470, -0.843499089174786660, -0.843525944650639130, -0.843552798017676690, -0.843579649275832840, -0.843606498425039320, +-0.843633345465229610, -0.843660190396336550, -0.843687033218293410, -0.843713873931032250, -0.843740712534486460, -0.843767549028588860, -0.843794383413272290, -0.843821215688469910, +-0.843848045854114330, -0.843874873910138820, -0.843901699856476010, -0.843928523693058930, -0.843955345419820650, -0.843982165036694320, -0.844008982543612230, -0.844035797940507650, +-0.844062611227313520, -0.844089422403963450, -0.844116231470389280, -0.844143038426524610, -0.844169843272302270, -0.844196646007655320, -0.844223446632516690, -0.844250245146819570, +-0.844277041550496770, -0.844303835843481450, -0.844330628025706460, -0.844357418097104850, -0.844384206057610330, -0.844410991907154630, -0.844437775645671570, -0.844464557273094110, +-0.844491336789355620, -0.844518114194388380, -0.844544889488125890, -0.844571662670501100, -0.844598433741447160, -0.844625202700897140, -0.844651969548784190, -0.844678734285041250, +-0.844705496909601390, -0.844732257422397880, -0.844759015823363770, -0.844785772112432110, -0.844812526289536400, -0.844839278354609040, -0.844866028307583390, -0.844892776148393090, +-0.844919521876970500, -0.844946265493249030, -0.844973006997161940, -0.844999746388642280, -0.845026483667623340, -0.845053218834038060, -0.845079951887819810, -0.845106682828901780, +-0.845133411657216890, -0.845160138372698540, -0.845186862975279780, -0.845213585464894450, -0.845240305841474580, -0.845267024104954020, -0.845293740255265820, -0.845320454292343810, +-0.845347166216120160, -0.845373876026528690, -0.845400583723502350, -0.845427289306974640, -0.845453992776878720, -0.845480694133147860, -0.845507393375715230, -0.845534090504514110, +-0.845560785519477780, -0.845587478420539380, -0.845614169207632880, -0.845640857880690430, -0.845667544439645870, -0.845694228884432460, -0.845720911214983940, -0.845747591431232570, +-0.845774269533112300, -0.845800945520556400, -0.845827619393498150, -0.845854291151870720, -0.845880960795607710, -0.845907628324642280, -0.845934293738907720, -0.845960957038337400, +-0.845987618222864720, -0.846014277292423510, -0.846040934246946040, -0.846067589086366260, -0.846094241810617540, -0.846120892419633730, -0.846147540913347210, -0.846174187291691800, +-0.846200831554600910, -0.846227473702007900, -0.846254113733846290, -0.846280751650049350, -0.846307387450550560, -0.846334021135283330, -0.846360652704181040, -0.846387282157177070, +-0.846413909494204920, -0.846440534715198420, -0.846467157820090190, -0.846493778808814050, -0.846520397681303830, -0.846547014437492250, -0.846573629077313150, -0.846600241600699910, +-0.846626852007586140, -0.846653460297905220, -0.846680066471590660, -0.846706670528575840, -0.846733272468794370, -0.846759872292179750, -0.846786469998665470, -0.846813065588185030, +-0.846839659060672380, -0.846866250416060120, -0.846892839654282190, -0.846919426775272210, -0.846946011778964110, -0.846972594665290510, -0.846999175434185460, -0.847025754085582340, +-0.847052330619414980, -0.847078905035616780, -0.847105477334121230, -0.847132047514862040, -0.847158615577772720, -0.847185181522786880, -0.847211745349838120, -0.847238307058860380, +-0.847264866649786510, -0.847291424122550430, -0.847317979477085760, -0.847344532713326550, -0.847371083831205630, -0.847397632830657050, -0.847424179711614320, -0.847450724474011150, +-0.847477267117781150, -0.847503807642857930, -0.847530346049175320, -0.847556882336666820, -0.847583416505266030, -0.847609948554906790, -0.847636478485523040, -0.847663006297047720, +-0.847689531989414880, -0.847716055562558140, -0.847742577016411760, -0.847769096350908580, -0.847795613565982540, -0.847822128661567480, -0.847848641637597100, -0.847875152494005140, +-0.847901661230725300, -0.847928167847691320, -0.847954672344836790, -0.847981174722095780, -0.848007674979401660, -0.848034173116688490, -0.848060669133890220, -0.848087163030939890, +-0.848113654807771680, -0.848140144464319730, -0.848166632000517010, -0.848193117416297770, -0.848219600711595630, -0.848246081886344540, -0.848272560940478200, -0.848299037873930460, +-0.848325512686635140, -0.848351985378526070, -0.848378455949536980, -0.848404924399601800, -0.848431390728654260, -0.848457854936628840, -0.848484317023458170, -0.848510776989076730, +-0.848537234833418360, -0.848563690556417450, -0.848590144158006820, -0.848616595638120750, -0.848643044996693190, -0.848669492233658060, -0.848695937348949210, -0.848722380342500580, +-0.848748821214245890, -0.848775259964119180, -0.848801696592054290, -0.848828131097985270, -0.848854563481846290, -0.848880993743570400, -0.848907421883092090, -0.848933847900345210, +-0.848960271795264230, -0.848986693567782110, -0.849013113217833130, -0.849039530745351430, -0.849065946150270980, -0.849092359432525590, -0.849118770592049320, -0.849145179628776110, +-0.849171586542640020, -0.849197991333574880, -0.849224394001514840, -0.849250794546394180, -0.849277192968146080, -0.849303589266705130, -0.849329983442005050, -0.849356375493980580, +-0.849382765422564630, -0.849409153227691840, -0.849435538909296130, -0.849461922467311560, -0.849488303901672180, -0.849514683212312050, -0.849541060399165220, -0.849567435462165730, +-0.849593808401247650, -0.849620179216345140, -0.849646547907392140, -0.849672914474323140, -0.849699278917071420, -0.849725641235571590, -0.849752001429758040, -0.849778359499564040, +-0.849804715444924200, -0.849831069265772450, -0.849857420962043200, -0.849883770533670260, -0.849910117980587910, -0.849936463302730320, -0.849962806500031530, -0.849989147572425720, +-0.850015486519847040, -0.850041823342229660, -0.850068158039508190, -0.850094490611615900, -0.850120821058487300, -0.850147149380056640, -0.850173475576258660, -0.850199799647026520, +-0.850226121592294830, -0.850252441411997850, -0.850278759106069760, -0.850305074674444830, -0.850331388117057110, -0.850357699433840990, -0.850384008624730630, -0.850410315689660190, +-0.850436620628564070, -0.850462923441376750, -0.850489224128031740, -0.850515522688463530, -0.850541819122606620, -0.850568113430395620, -0.850594405611763920, -0.850620695666646220, +-0.850646983594976700, -0.850673269396689750, -0.850699553071719630, -0.850725834620000620, -0.850752114041467000, -0.850778391336053040, -0.850804666503693240, -0.850830939544321760, +-0.850857210457873330, -0.850883479244281430, -0.850909745903480790, -0.850936010435405790, -0.850962272839991370, -0.850988533117170600, -0.851014791266878620, -0.851041047289049610, +-0.851067301183618060, -0.851093552950518250, -0.851119802589684450, -0.851146050101051270, -0.851172295484552870, -0.851198538740123740, -0.851224779867698290, -0.851251018867210880, +-0.851277255738596470, -0.851303490481788330, -0.851329723096721500, -0.851355953583330940, -0.851382181941549910, -0.851408408171313470, -0.851434632272556000, -0.851460854245211900, +-0.851487074089215760, -0.851513291804501860, -0.851539507391004700, -0.851565720848658890, -0.851591932177398700, -0.851618141377158740, -0.851644348447873400, -0.851670553389477610, +-0.851696756201904990, -0.851722956885090480, -0.851749155438968560, -0.851775351863474310, -0.851801546158541090, -0.851827738324104080, -0.851853928360097770, -0.851880116266456540, +-0.851906302043115020, -0.851932485690007790, -0.851958667207069360, -0.851984846594234240, -0.852011023851437010, -0.852037198978612300, -0.852063371975694930, -0.852089542842618730, +-0.852115711579318650, -0.852141878185729280, -0.852168042661785700, -0.852194205007421490, -0.852220365222571830, -0.852246523307171320, -0.852272679261154460, -0.852298833084455860, +-0.852324984777010130, -0.852351134338751980, -0.852377281769616020, -0.852403427069536870, -0.852429570238449120, -0.852455711276287940, -0.852481850182987060, -0.852507986958481510, +-0.852534121602705920, -0.852560254115595550, -0.852586384497084130, -0.852612512747106700, -0.852638638865597990, -0.852664762852492600, -0.852690884707725470, -0.852717004431231000, +-0.852743122022944110, -0.852769237482799310, -0.852795350810731550, -0.852821462006675300, -0.852847571070565410, -0.852873678002337150, -0.852899782801924130, -0.852925885469261620, +-0.852951986004285010, -0.852978084406927910, -0.853004180677125580, -0.853030274814812750, -0.853056366819924250, -0.853082456692394910, -0.853108544432159440, -0.853134630039152460, +-0.853160713513309020, -0.853186794854563830, -0.853212874062851510, -0.853238951138107100, -0.853265026080265780, -0.853291098889261470, -0.853317169565029340, -0.853343238107504340, +-0.853369304516621630, -0.853395368792315260, -0.853421430934520500, -0.853447490943172070, -0.853473548818205030, -0.853499604559553980, -0.853525658167153980, -0.853551709640939850, +-0.853577758980846420, -0.853603806186808640, -0.853629851258761340, -0.853655894196639790, -0.853681935000378140, -0.853707973669911580, -0.853734010205175140, -0.853760044606104110, +-0.853786076872632530, -0.853812107004695790, -0.853838135002228720, -0.853864160865166370, -0.853890184593443570, -0.853916206186995260, -0.853942225645756500, -0.853968242969662230, +-0.853994258158647270, -0.854020271212646680, -0.854046282131595840, -0.854072290915428910, -0.854098297564081180, -0.854124302077487800, -0.854150304455584040, -0.854176304698304080, +-0.854202302805583400, -0.854228298777356950, -0.854254292613559670, -0.854280284314126730, -0.854306273878993160, -0.854332261308093810, -0.854358246601363720, -0.854384229758738180, +-0.854410210780152000, -0.854436189665540250, -0.854462166414838520, -0.854488141027980990, -0.854514113504903030, -0.854540083845540250, -0.854566052049826830, -0.854592018117698250, +-0.854617982049089560, -0.854643943843936050, -0.854669903502172530, -0.854695861023734400, -0.854721816408556600, -0.854747769656574170, -0.854773720767722400, -0.854799669741936220, +-0.854825616579151020, -0.854851561279302170, -0.854877503842323860, -0.854903444268151900, -0.854929382556721350, -0.854955318707967700, -0.854981252721825350, -0.855007184598229890, +-0.855033114337116480, -0.855059041938420190, -0.855084967402076400, -0.855110890728020160, -0.855136811916186730, -0.855162730966511190, -0.855188647878928900, -0.855214562653374920, +-0.855240475289784970, -0.855266385788093440, -0.855292294148235930, -0.855318200370147720, -0.855344104453764410, -0.855370006399020390, -0.855395906205851380, -0.855421803874192640, +-0.855447699403979360, -0.855473592795146790, -0.855499484047630320, -0.855525373161365010, -0.855551260136286350, -0.855577144972329510, -0.855603027669429860, -0.855628908227523130, +-0.855654786646543600, -0.855680662926427080, -0.855706537067108970, -0.855732409068524990, -0.855758278930609410, -0.855784146653298270, -0.855810012236526640, -0.855835875680230120, +-0.855861736984343760, -0.855887596148803160, -0.855913453173543500, -0.855939308058500270, -0.855965160803608740, -0.855991011408804290, -0.856016859874022430, -0.856042706199198760, +-0.856068550384267880, -0.856094392429165630, -0.856120232333827950, -0.856146070098189100, -0.856171905722185160, -0.856197739205751370, -0.856223570548823250, -0.856249399751336290, +-0.856275226813225760, -0.856301051734427170, -0.856326874514875990, -0.856352695154507630, -0.856378513653257460, -0.856404330011061090, -0.856430144227854240, -0.856455956303571740, +-0.856481766238149200, -0.856507574031522330, -0.856533379683626970, -0.856559183194397610, -0.856584984563770410, -0.856610783791680650, -0.856636580878064050, -0.856662375822855870, +-0.856688168625991840, -0.856713959287407350, -0.856739747807037990, -0.856765534184819270, -0.856791318420686680, -0.856817100514576270, -0.856842880466422650, -0.856868658276161770, +-0.856894433943729330, -0.856920207469061280, -0.856945978852092230, -0.856971748092758110, -0.856997515190994760, -0.857023280146737560, -0.857049042959922240, -0.857074803630484270, +-0.857100562158359280, -0.857126318543482870, -0.857152072785790640, -0.857177824885218320, -0.857203574841701840, -0.857229322655175930, -0.857255068325576740, -0.857280811852839890, +-0.857306553236901410, -0.857332292477696160, -0.857358029575160160, -0.857383764529229150, -0.857409497339838620, -0.857435228006924510, -0.857460956530422200, -0.857486682910267530, +-0.857512407146396090, -0.857538129238743730, -0.857563849187245930, -0.857589566991839080, -0.857615282652457790, -0.857640996169038330, -0.857666707541516420, -0.857692416769828100, +-0.857718123853908330, -0.857743828793693260, -0.857769531589118620, -0.857795232240120110, -0.857820930746633570, -0.857846627108594720, -0.857872321325939160, -0.857898013398602940, +-0.857923703326521680, -0.857949391109631090, -0.857975076747867100, -0.858000760241165780, -0.858026441589462170, -0.858052120792692440, -0.858077797850792410, -0.858103472763698360, +-0.858129145531345230, -0.858154816153669180, -0.858180484630606030, -0.858206150962091740, -0.858231815148062020, -0.858257477188452800, -0.858283137083199920, -0.858308794832239100, +-0.858334450435506380, -0.858360103892937490, -0.858385755204468800, -0.858411404370035270, -0.858437051389573270, -0.858462696263018630, -0.858488338990307630, -0.858513979571375430, +-0.858539618006158190, -0.858565254294591960, -0.858590888436612580, -0.858616520432155970, -0.858642150281158090, -0.858667777983554870, -0.858693403539282140, -0.858719026948275840, +-0.858744648210472140, -0.858770267325807080, -0.858795884294216050, -0.858821499115635210, -0.858847111790000730, -0.858872722317248870, -0.858898330697314690, -0.858923936930134800, +-0.858949541015645020, -0.858975142953781300, -0.859000742744479910, -0.859026340387676560, -0.859051935883307300, -0.859077529231308310, -0.859103120431615410, -0.859128709484164750, +-0.859154296388892740, -0.859179881145734510, -0.859205463754626700, -0.859231044215505110, -0.859256622528306370, -0.859282198692965740, -0.859307772709419490, -0.859333344577603910, +-0.859358914297454810, -0.859384481868908590, -0.859410047291901070, -0.859435610566368520, -0.859461171692246890, -0.859486730669472340, -0.859512287497980920, -0.859537842177708790, +-0.859563394708592550, -0.859588945090567380, -0.859614493323569760, -0.859640039407535970, -0.859665583342402620, -0.859691125128104750, -0.859716664764579090, -0.859742202251761790, +-0.859767737589588910, -0.859793270777996720, -0.859818801816921390, -0.859844330706299060, -0.859869857446065920, -0.859895382036158120, -0.859920904476511820, -0.859946424767063730, +-0.859971942907749140, -0.859997458898504650, -0.860022972739266530, -0.860048484429971500, -0.860073993970554730, -0.860099501360953030, -0.860125006601102580, -0.860150509690939540, +-0.860176010630400280, -0.860201509419420970, -0.860227006057937890, -0.860252500545887310, -0.860277992883205500, -0.860303483069828620, -0.860328971105693620, -0.860354456990735650, +-0.860379940724891550, -0.860405422308097580, -0.860430901740290580, -0.860456379021405810, -0.860481854151380120, -0.860507327130149770, -0.860532797957651140, -0.860558266633820510, +-0.860583733158594160, -0.860609197531908450, -0.860634659753699900, -0.860660119823904560, -0.860685577742459020, -0.860711033509299890, -0.860736487124362790, -0.860761938587584540, +-0.860787387898901300, -0.860812835058250130, -0.860838280065566400, -0.860863722920786940, -0.860889163623848150, -0.860914602174686520, -0.860940038573238420, -0.860965472819440140, +-0.860990904913228160, -0.861016334854538990, -0.861041762643309010, -0.861067188279474590, -0.861092611762972140, -0.861118033093738690, -0.861143452271709630, -0.861168869296822010, +-0.861194284169012670, -0.861219696888217090, -0.861245107454372330, -0.861270515867414770, -0.861295922127280900, -0.861321326233907340, -0.861346728187230350, -0.861372127987186540, +-0.861397525633712520, -0.861422921126744570, -0.861448314466219390, -0.861473705652073370, -0.861499094684243570, -0.861524481562665590, -0.861549866287276480, -0.861575248858012510, +-0.861600629274811070, -0.861626007537607430, -0.861651383646338860, -0.861676757600941870, -0.861702129401352930, -0.861727499047508670, -0.861752866539345690, -0.861778231876800580, +-0.861803595059809750, -0.861828956088310120, -0.861854314962237970, -0.861879671681530460, -0.861905026246123420, -0.861930378655953790, -0.861955728910958170, -0.861981077011073740, +-0.862006422956236080, -0.862031766746382490, -0.862057108381449330, -0.862082447861373560, -0.862107785186091550, -0.862133120355540130, -0.862158453369655910, -0.862183784228375490, +-0.862209112931635600, -0.862234439479373060, -0.862259763871524810, -0.862285086108026680, -0.862310406188815830, -0.862335724113828970, -0.862361039883003280, -0.862386353496274570, +-0.862411664953579900, -0.862436974254856100, -0.862462281400039890, -0.862487586389067970, -0.862512889221876970, -0.862538189898403920, -0.862563488418585320, -0.862588784782358010, +-0.862614078989658690, -0.862639371040424210, -0.862664660934591710, -0.862689948672097140, -0.862715234252877770, -0.862740517676870660, -0.862765798944011840, -0.862791078054238600, +-0.862816355007487550, -0.862841629803695720, -0.862866902442799730, -0.862892172924736520, -0.862917441249442810, -0.862942707416855640, -0.862967971426911620, -0.862993233279547580, +-0.863018492974700570, -0.863043750512307750, -0.863069005892305170, -0.863094259114630000, -0.863119510179219170, -0.863144759086010070, -0.863170005834938640, -0.863195250425942140, +-0.863220492858957520, -0.863245733133921610, -0.863270971250771460, -0.863296207209443890, -0.863321441009875730, -0.863346672652004040, -0.863371902135765650, -0.863397129461097480, +-0.863422354627936930, -0.863447577636220040, -0.863472798485884210, -0.863498017176866470, -0.863523233709104000, -0.863548448082533060, -0.863573660297091040, -0.863598870352714760, +-0.863624078249341400, -0.863649283986907880, -0.863674487565351030, -0.863699688984608030, -0.863724888244615910, -0.863750085345311390, -0.863775280286631750, -0.863800473068514370, +-0.863825663690895310, -0.863850852153712050, -0.863876038456901750, -0.863901222600401810, -0.863926404584148270, -0.863951584408078840, -0.863976762072130370, -0.864001937576240000, +-0.864027110920344790, -0.864052282104381790, -0.864077451128288150, -0.864102617992000830, -0.864127782695456980, -0.864152945238593650, -0.864178105621348000, -0.864203263843657530, +-0.864228419905458400, -0.864253573806688210, -0.864278725547284580, -0.864303875127183760, -0.864329022546323160, -0.864354167804640030, -0.864379310902071430, -0.864404451838554630, +-0.864429590614026690, -0.864454727228424760, -0.864479861681686000, -0.864504993973747580, -0.864530124104546660, -0.864555252074020400, -0.864580377882106510, -0.864605501528741270, +-0.864630623013862290, -0.864655742337406720, -0.864680859499312170, -0.864705974499515030, -0.864731087337953010, -0.864756198014563270, -0.864781306529283090, -0.864806412882049620, +-0.864831517072800040, -0.864856619101471710, -0.864881718968001810, -0.864906816672327610, -0.864931912214386480, -0.864957005594115810, -0.864982096811452330, -0.865007185866333630, +-0.865032272758696870, -0.865057357488479890, -0.865082440055619180, -0.865107520460052240, -0.865132598701716550, -0.865157674780549390, -0.865182748696488040, -0.865207820449469760, +-0.865232890039431930, -0.865257957466311960, -0.865283022730047090, -0.865308085830574610, -0.865333146767832350, -0.865358205541756800, -0.865383262152285780, -0.865408316599356460, +-0.865433368882906890, -0.865458419002873570, -0.865483466959194090, -0.865508512751805850, -0.865533556380646440, -0.865558597845653140, -0.865583637146763340, -0.865608674283914410, +-0.865633709257043860, -0.865658742066088950, -0.865683772710987290, -0.865708801191676150, -0.865733827508093470, -0.865758851660175740, -0.865783873647860800, -0.865808893471086800, +-0.865833911129790020, -0.865858926623908510, -0.865883939953379640, -0.865908951118140920, -0.865933960118129840, -0.865958966953283780, -0.865983971623540460, -0.866008974128837150, +-0.866033974469111350, -0.866058972644300650, -0.866083968654342560, -0.866108962499174910, -0.866133954178734400, -0.866158943692959090, -0.866183931041786370, -0.866208916225154280, +-0.866233899242999540, -0.866258880095259980, -0.866283858781873200, -0.866308835302776800, -0.866333809657908290, -0.866358781847205270, -0.866383751870605230, -0.866408719728045900, +-0.866433685419464750, -0.866458648944799400, -0.866483610303987790, -0.866508569496966750, -0.866533526523674320, -0.866558481384048120, -0.866583434078026070, -0.866608384605545010, +-0.866633332966542990, -0.866658279160957720, -0.866683223188726700, -0.866708165049787540, -0.866733104744078050, -0.866758042271535860, -0.866782977632098440, -0.866807910825703630, +-0.866832841852289040, -0.866857770711792820, -0.866882697404151690, -0.866907621929303820, -0.866932544287186910, -0.866957464477739030, -0.866982382500897100, -0.867007298356599180, +-0.867032212044783090, -0.867057123565386330, -0.867082032918346960, -0.867106940103602340, -0.867131845121090430, -0.867156747970748930, -0.867181648652515570, -0.867206547166328060, +-0.867231443512124110, -0.867256337689842120, -0.867281229699418790, -0.867306119540792400, -0.867331007213901110, -0.867355892718681850, -0.867380776055072910, -0.867405657223011990, +-0.867430536222436930, -0.867455413053285550, -0.867480287715495680, -0.867505160209005030, -0.867530030533751550, -0.867554898689672950, -0.867579764676707050, -0.867604628494791810, +-0.867629490143865480, -0.867654349623864900, -0.867679206934728440, -0.867704062076393940, -0.867728915048799790, -0.867753765851882910, -0.867778614485581690, -0.867803460949833850, +-0.867828305244577320, -0.867853147369750060, -0.867877987325289980, -0.867902825111134810, -0.867927660727222720, -0.867952494173491410, -0.867977325449878820, -0.868002154556323460, +-0.868026981492762250, -0.868051806259133470, -0.868076628855375290, -0.868101449281425960, -0.868126267537222550, -0.868151083622703550, -0.868175897537806770, -0.868200709282470170, +-0.868225518856631910, -0.868250326260229800, -0.868275131493201900, -0.868299934555486150, -0.868324735447020600, -0.868349534167743190, -0.868374330717592400, -0.868399125096505300, +-0.868423917304420480, -0.868448707341275770, -0.868473495207009780, -0.868498280901559670, -0.868523064424863710, -0.868547845776860170, -0.868572624957486990, -0.868597401966682340, +-0.868622176804384140, -0.868646949470530450, -0.868671719965059430, -0.868696488287909020, -0.868721254439017490, -0.868746018418322770, -0.868770780225763480, -0.868795539861276780, +-0.868820297324801260, -0.868845052616275430, -0.868869805735636550, -0.868894556682823120, -0.868919305457773290, -0.868944052060425240, -0.868968796490717010, -0.868993538748586760, +-0.869018278833972760, -0.869043016746813060, -0.869067752487045710, -0.869092486054609090, -0.869117217449441150, -0.869141946671480700, -0.869166673720664920, -0.869191398596932400, +-0.869216121300221410, -0.869240841830470680, -0.869265560187617250, -0.869290276371599950, -0.869314990382357040, -0.869339702219826590, -0.869364411883946860, -0.869389119374656130, +-0.869413824691892660, -0.869438527835594500, -0.869463228805700150, -0.869487927602147660, -0.869512624224875850, -0.869537318673822000, -0.869562010948924820, -0.869586701050122590, +-0.869611388977354130, -0.869636074730556710, -0.869660758309669160, -0.869685439714629640, -0.869710118945376530, -0.869734796001848220, -0.869759470883982870, -0.869784143591718740, +-0.869808814124994330, -0.869833482483747920, -0.869858148667917770, -0.869882812677442720, -0.869907474512260140, -0.869932134172308970, -0.869956791657527370, -0.869981446967854290, +-0.870006100103227100, -0.870030751063584630, -0.870055399848865370, -0.870080046459007610, -0.870104690893949710, -0.870129333153630060, -0.870153973237987040, -0.870178611146959160, +-0.870203246880484780, -0.870227880438502190, -0.870252511820949980, -0.870277141027766880, -0.870301768058890480, -0.870326392914259730, -0.870351015593813450, -0.870375636097489020, +-0.870400254425225730, -0.870424870576961610, -0.870449484552635380, -0.870474096352185530, -0.870498705975550350, -0.870523313422668420, -0.870547918693478140, -0.870572521787918220, +-0.870597122705926820, -0.870621721447442760, -0.870646318012404770, -0.870670912400750560, -0.870695504612419070, -0.870720094647348790, -0.870744682505478760, -0.870769268186746490, +-0.870793851691091140, -0.870818433018451190, -0.870843012168765030, -0.870867589141971490, -0.870892163938008830, -0.870916736556815900, -0.870941306998331060, -0.870965875262492920, +-0.870990441349240090, -0.871015005258511720, -0.871039566990245320, -0.871064126544379920, -0.871088683920854370, -0.871113239119607360, -0.871137792140576960, -0.871162342983702100, +-0.871186891648921270, -0.871211438136173190, -0.871235982445396570, -0.871260524576530030, -0.871285064529512270, -0.871309602304281670, -0.871334137900777070, -0.871358671318937290, +-0.871383202558701160, -0.871407731620006510, -0.871432258502792710, -0.871456783206998150, -0.871481305732562110, -0.871505826079422290, -0.871530344247517960, -0.871554860236787740, +-0.871579374047170450, -0.871603885678604700, -0.871628395131029190, -0.871652902404382760, -0.871677407498604010, -0.871701910413631760, -0.871726411149404750, -0.871750909705862110, +-0.871775406082941800, -0.871799900280582960, -0.871824392298724330, -0.871848882137305160, -0.871873369796263400, -0.871897855275538200, -0.871922338575068400, -0.871946819694792710, +-0.871971298634649950, -0.871995775394579060, -0.872020249974518660, -0.872044722374407550, -0.872069192594184690, -0.872093660633788900, -0.872118126493158900, -0.872142590172234060, +-0.872167051670952320, -0.872191510989252850, -0.872215968127074690, -0.872240423084357120, -0.872264875861037960, -0.872289326457056590, -0.872313774872351950, -0.872338221106862880, +-0.872362665160528180, -0.872387107033286920, -0.872411546725077810, -0.872435984235839900, -0.872460419565512010, -0.872484852714032980, -0.872509283681342400, -0.872533712467378100, +-0.872558139072079460, -0.872582563495385540, -0.872606985737235720, -0.872631405797567930, -0.872655823676321660, -0.872680239373435750, -0.872704652888849240, -0.872729064222501180, +-0.872753473374330400, -0.872777880344276060, -0.872802285132276870, -0.872826687738271990, -0.872851088162200470, -0.872875486404001590, -0.872899882463613610, -0.872924276340975910, +-0.872948668036027550, -0.872973057548707910, -0.872997444878955140, -0.873021830026708860, -0.873046212991907990, -0.873070593774491480, -0.873094972374398590, -0.873119348791568270, +-0.873143723025939570, -0.873168095077451520, -0.873192464946043300, -0.873216832631653840, -0.873241198134222740, -0.873265561453688280, -0.873289922589989830, -0.873314281543066670, +-0.873338638312858180, -0.873362992899302640, -0.873387345302339630, -0.873411695521908340, -0.873436043557947790, -0.873460389410397050, -0.873484733079195390, -0.873509074564281840, +-0.873533413865595690, -0.873557750983075980, -0.873582085916661870, -0.873606418666292520, -0.873630749231907640, -0.873655077613445410, -0.873679403810845520, -0.873703727824047040, +-0.873728049652989670, -0.873752369297611910, -0.873776686757853030, -0.873801002033652520, -0.873825315124949540, -0.873849626031683150, -0.873873934753792820, -0.873898241291217630, +-0.873922545643896820, -0.873946847811769680, -0.873971147794775360, -0.873995445592853580, -0.874019741205942840, -0.874044034633982720, -0.874068325876912410, -0.874092614934671830, +-0.874116901807199250, -0.874141186494434510, -0.874165468996316640, -0.874189749312785260, -0.874214027443779410, -0.874238303389238470, -0.874262577149101830, -0.874286848723308750, +-0.874311118111798510, -0.874335385314510490, -0.874359650331384410, -0.874383913162358860, -0.874408173807373460, -0.874432432266367580, -0.874456688539281160, -0.874480942626052580, +-0.874505194526621570, -0.874529444240927600, -0.874553691768910070, -0.874577937110508240, -0.874602180265661610, -0.874626421234309450, -0.874650660016391360, -0.874674896611846500, +-0.874699131020614470, -0.874723363242635000, -0.874747593277846790, -0.874771821126189560, -0.874796046787602700, -0.874820270262026240, -0.874844491549398580, -0.874868710649659760, +-0.874892927562749170, -0.874917142288606290, -0.874941354827170500, -0.874965565178381310, -0.874989773342178200, -0.875013979318500670, -0.875038183107288200, -0.875062384708480300, +-0.875086584122016450, -0.875110781347836600, -0.875134976385879230, -0.875159169236084500, -0.875183359898392350, -0.875207548372741280, -0.875231734659071340, -0.875255918757322120, +-0.875280100667433000, -0.875304280389343710, -0.875328457922993740, -0.875352633268322580, -0.875376806425269830, -0.875400977393775090, -0.875425146173777870, -0.875449312765217760, +-0.875473477168034920, -0.875497639382167850, -0.875521799407556700, -0.875545957244141080, -0.875570112891861040, -0.875594266350655180, -0.875618417620463770, -0.875642566701226200, +-0.875666713592882280, -0.875690858295371630, -0.875715000808633740, -0.875739141132608420, -0.875763279267235180, -0.875787415212453730, -0.875811548968203790, -0.875835680534425400, +-0.875859809911057390, -0.875883937098039800, -0.875908062095312470, -0.875932184902815330, -0.875956305520487310, -0.875980423948268580, -0.876004540186098750, -0.876028654233917630, +-0.876052766091664830, -0.876076875759280060, -0.876100983236703160, -0.876125088523873720, -0.876149191620731680, -0.876173292527216650, -0.876197391243268680, -0.876221487768826910, +-0.876245582103831410, -0.876269674248222000, -0.876293764201938830, -0.876317851964920740, -0.876341937537108100, -0.876366020918440510, -0.876390102108857930, -0.876414181108300160, +-0.876438257916706820, -0.876462332534017950, -0.876486404960173160, -0.876510475195112380, -0.876534543238775440, -0.876558609091102170, -0.876582672752032720, -0.876606734221506260, +-0.876630793499462820, -0.876654850585842920, -0.876678905480585470, -0.876702958183630750, -0.876727008694918710, -0.876751057014389050, -0.876775103141981700, -0.876799147077636730, +-0.876823188821293730, -0.876847228372892860, -0.876871265732373950, -0.876895300899676820, -0.876919333874741520, -0.876943364657508220, -0.876967393247916060, -0.876991419645905550, +-0.877015443851416390, -0.877039465864389080, -0.877063485684762670, -0.877087503312477530, -0.877111518747473620, -0.877135531989690960, -0.877159543039069400, -0.877183551895549090, +-0.877207558559069840, -0.877231563029571610, -0.877255565306994560, -0.877279565391278600, -0.877303563282364140, -0.877327558980190440, -0.877351552484697760, -0.877375543795826160, +-0.877399532913516130, -0.877423519837706940, -0.877447504568338870, -0.877471487105352050, -0.877495467448686560, -0.877519445598282320, -0.877543421554079490, -0.877567395316018130, +-0.877591366884038270, -0.877615336258079970, -0.877639303438083380, -0.877663268423989010, -0.877687231215735890, -0.877711191813264850, -0.877735150216515710, -0.877759106425429200, +-0.877783060439944360, -0.877807012260002020, -0.877830961885542100, -0.877854909316504780, -0.877878854552830210, -0.877902797594458440, -0.877926738441329730, -0.877950677093384150, +-0.877974613550561940, -0.877998547812803070, -0.878022479880047890, -0.878046409752237020, -0.878070337429309620, -0.878094262911206400, -0.878118186197867970, -0.878142107289233590, +-0.878166026185243980, -0.878189942885839290, -0.878213857390959700, -0.878237769700545570, -0.878261679814536960, -0.878285587732874130, -0.878309493455497360, -0.878333396982346800, +-0.878357298313362840, -0.878381197448485530, -0.878405094387655790, -0.878428989130812800, -0.878452881677897370, -0.878476772028849660, -0.878500660183610500, -0.878524546142119280, +-0.878548429904316700, -0.878572311470143030, -0.878596190839538550, -0.878620068012443630, -0.878643942988798550, -0.878667815768543580, -0.878691686351619090, -0.878715554737965370, +-0.878739420927522770, -0.878763284920232150, -0.878787146716032750, -0.878811006314865530, -0.878834863716670740, -0.878858718921389340, -0.878882571928960580, -0.878906422739325510, +-0.878930271352424300, -0.878954117768197430, -0.878977961986585290, -0.879001804007528250, -0.879025643830966710, -0.879049481456841030, -0.879073316885091600, -0.879097150115658920, +-0.879120981148483800, -0.879144809983505860, -0.879168636620665800, -0.879192461059904230, -0.879216283301161860, -0.879240103344378410, -0.879263921189494590, -0.879287736836451120, +-0.879311550285188260, -0.879335361535646510, -0.879359170587766360, -0.879382977441488300, -0.879406782096752710, -0.879430584553500210, -0.879454384811671260, -0.879478182871206380, +-0.879501978732046500, -0.879525772394131210, -0.879549563857401460, -0.879573353121798180, -0.879597140187261210, -0.879620925053731350, -0.879644707721149110, -0.879668488189455200, +-0.879692266458590000, -0.879716042528494110, -0.879739816399108250, -0.879763588070372690, -0.879787357542228250, -0.879811124814615430, -0.879834889887474710, -0.879858652760747260, +-0.879882413434372790, -0.879906171908292230, -0.879929928182446200, -0.879953682256775840, -0.879977434131220870, -0.880001183805722230, -0.880024931280220750, -0.880048676554656790, +-0.880072419628971310, -0.880096160503104690, -0.880119899176997620, -0.880143635650590840, -0.880167369923825050, -0.880191101996640750, -0.880214831868979090, -0.880238559540780010, +-0.880262285011984450, -0.880286008282533230, -0.880309729352367400, -0.880333448221426900, -0.880357164889652650, -0.880380879356985610, -0.880404591623366260, -0.880428301688735540, +-0.880452009553034040, -0.880475715216202490, -0.880499418678181600, -0.880523119938912190, -0.880546818998335090, -0.880570515856391230, -0.880594210513020670, -0.880617902968164670, +-0.880641593221763830, -0.880665281273759540, -0.880688967124091500, -0.880712650772701110, -0.880736332219529070, -0.880760011464516210, -0.880783688507603360, -0.880807363348731220, +-0.880831035987840630, -0.880854706424872510, -0.880878374659767700, -0.880902040692466910, -0.880925704522910970, -0.880949366151041250, -0.880973025576797570, -0.880996682800121440, +-0.881020337820954010, -0.881043990639235330, -0.881067641254906660, -0.881091289667908840, -0.881114935878182900, -0.881138579885669570, -0.881162221690309780, -0.881185861292044350, +-0.881209498690814330, -0.881233133886560660, -0.881256766879224050, -0.881280397668745550, -0.881304026255066430, -0.881327652638126960, -0.881351276817868290, -0.881374898794231370, +-0.881398518567157670, -0.881422136136587260, -0.881445751502461520, -0.881469364664721370, -0.881492975623307750, -0.881516584378161830, -0.881540190929224310, -0.881563795276436470, +-0.881587397419739020, -0.881610997359073110, -0.881634595094379690, -0.881658190625600250, -0.881681783952674820, -0.881705375075545030, -0.881728963994151790, -0.881752550708436500, +-0.881776135218339530, -0.881799717523802150, -0.881823297624765410, -0.881846875521170470, -0.881870451212958370, -0.881894024700070170, -0.881917595982446900, -0.881941165060029620, +-0.881964731932759370, -0.881988296600577320, -0.882011859063425050, -0.882035419321242630, -0.882058977373971650, -0.882082533221553170, -0.882106086863928880, -0.882129638301038970, +-0.882153187532824900, -0.882176734559227850, -0.882200279380188970, -0.882223821995649420, -0.882247362405550350, -0.882270900609832820, -0.882294436608438090, -0.882317970401307220, +-0.882341501988381460, -0.882365031369601870, -0.882388558544910160, -0.882412083514246710, -0.882435606277552910, -0.882459126834770680, -0.882482645185840080, -0.882506161330702920, +-0.882529675269300370, -0.882553187001573590, -0.882576696527463840, -0.882600203846912400, -0.882623708959860420, -0.882647211866249170, -0.882670712566019920, -0.882694211059113830, +-0.882717707345472280, -0.882741201425036870, -0.882764693297747980, -0.882788182963547440, -0.882811670422376400, -0.882835155674176590, -0.882858638718888480, -0.882882119556453790, +-0.882905598186813800, -0.882929074609909770, -0.882952548825683080, -0.882976020834075000, -0.882999490635026920, -0.883022958228480090, -0.883046423614375910, -0.883069886792655630, +-0.883093347763260980, -0.883116806526132670, -0.883140263081212300, -0.883163717428441240, -0.883187169567761330, -0.883210619499113060, -0.883234067222438250, -0.883257512737678270, +-0.883280956044774520, -0.883304397143668370, -0.883327836034301210, -0.883351272716614510, -0.883374707190549560, -0.883398139456047950, -0.883421569513050840, -0.883444997361500390, +-0.883468423001336880, -0.883491846432502450, -0.883515267654938260, -0.883538686668586480, -0.883562103473387370, -0.883585518069283200, -0.883608930456215140, -0.883632340634124770, +-0.883655748602953480, -0.883679154362642880, -0.883702557913134460, -0.883725959254369590, -0.883749358386289760, -0.883772755308836590, -0.883796150021951550, -0.883819542525576480, +-0.883842932819652210, -0.883866320904120650, -0.883889706778923650, -0.883913090444001900, -0.883936471899297470, -0.883959851144751840, -0.883983228180306720, -0.884006603005903390, +-0.884029975621483550, -0.884053346026988820, -0.884076714222360780, -0.884100080207540830, -0.884123443982470780, -0.884146805547092020, -0.884170164901346810, -0.884193522045175650, +-0.884216876978520690, -0.884240229701323540, -0.884263580213526360, -0.884286928515069630, -0.884310274605895730, -0.884333618485946050, -0.884356960155162410, -0.884380299613486300, +-0.884403636860859430, -0.884426971897223520, -0.884450304722520060, -0.884473635336690990, -0.884496963739677790, -0.884520289931422620, -0.884543613911866200, -0.884566935680950790, +-0.884590255238618120, -0.884613572584810210, -0.884636887719467910, -0.884660200642533370, -0.884683511353948400, -0.884706819853654510, -0.884730126141593740, -0.884753430217707580, +-0.884776732081937860, -0.884800031734226280, -0.884823329174514670, -0.884846624402744750, -0.884869917418858560, -0.884893208222797270, -0.884916496814502910, -0.884939783193917420, +-0.884963067360982740, -0.884986349315640020, -0.885009629057831540, -0.885032906587498890, -0.885056181904583910, -0.885079455009028630, -0.885102725900774550, -0.885125994579763820, +-0.885149261045937940, -0.885172525299238950, -0.885195787339608800, -0.885219047166988960, -0.885242304781322040, -0.885265560182548980, -0.885288813370611940, -0.885312064345453290, +-0.885335313107014080, -0.885358559655236580, -0.885381803990062720, -0.885405046111434340, -0.885428286019293350, -0.885451523713581600, -0.885474759194241010, -0.885497992461213630, +-0.885521223514441180, -0.885544452353865700, -0.885567678979429120, -0.885590903391073710, -0.885614125588740640, -0.885637345572372280, -0.885660563341910570, -0.885683778897297880, +-0.885706992238475270, -0.885730203365385220, -0.885753412277969670, -0.885776618976170550, -0.885799823459929910, -0.885823025729189690, -0.885846225783891830, -0.885869423623978580, +-0.885892619249391670, -0.885915812660073240, -0.885939003855965580, -0.885962192837010170, -0.885985379603149160, -0.886008564154324720, -0.886031746490479330, -0.886054926611554160, +-0.886078104517491690, -0.886101280208233870, -0.886124453683722950, -0.886147624943900760, -0.886170793988709680, -0.886193960818091430, -0.886217125431988380, -0.886240287830342590, +-0.886263448013095980, -0.886286605980191160, -0.886309761731569500, -0.886332915267173390, -0.886356066586944990, -0.886379215690826780, -0.886402362578760150, -0.886425507250687580, +-0.886448649706551350, -0.886471789946293390, -0.886494927969856070, -0.886518063777181340, -0.886541197368211460, -0.886564328742888600, -0.886587457901155010, -0.886610584842952630, +-0.886633709568224290, -0.886656832076911150, -0.886679952368956030, -0.886703070444301080, -0.886726186302888800, -0.886749299944660560, -0.886772411369559200, -0.886795520577526750, +-0.886818627568505490, -0.886841732342437680, -0.886864834899265600, -0.886887935238931390, -0.886911033361377330, -0.886934129266545690, -0.886957222954378730, -0.886980314424818620, +-0.887003403677808280, -0.887026490713288980, -0.887049575531203450, -0.887072658131493940, -0.887095738514103170, -0.887118816678972740, -0.887141892626045260, -0.887164966355262980, +-0.887188037866568300, -0.887211107159903590, -0.887234174235211000, -0.887257239092433040, -0.887280301731512070, -0.887303362152390250, -0.887326420355009970, -0.887349476339314160, +-0.887372530105244190, -0.887395581652742900, -0.887418630981752670, -0.887441678092216300, -0.887464722984075300, -0.887487765657272500, -0.887510806111750260, -0.887533844347450970, +-0.887556880364317120, -0.887579914162291090, -0.887602945741315260, -0.887625975101332010, -0.887649002242283940, -0.887672027164113310, -0.887695049866762950, -0.887718070350174690, +-0.887741088614291130, -0.887764104659054860, -0.887787118484408830, -0.887810130090294520, -0.887833139476654990, -0.887856146643432490, -0.887879151590569630, -0.887902154318008900, +-0.887925154825692900, -0.887948153113563900, -0.887971149181564500, -0.887994143029637310, -0.888017134657724690, -0.888040124065769710, -0.888063111253713950, -0.888086096221500480, +-0.888109078969071650, -0.888132059496370640, -0.888155037803339040, -0.888178013889919900, -0.888200987756055600, -0.888223959401688970, -0.888246928826762370, -0.888269896031218420, +-0.888292861014999820, -0.888315823778048960, -0.888338784320308660, -0.888361742641721300, -0.888384698742229580, -0.888407652621776570, -0.888430604280304070, -0.888453553717754920, +-0.888476500934072040, -0.888499445929198160, -0.888522388703075430, -0.888545329255646550, -0.888568267586854480, -0.888591203696641680, -0.888614137584950890, -0.888637069251724810, +-0.888659998696905930, -0.888682925920437180, -0.888705850922261060, -0.888728773702320280, -0.888751694260558000, -0.888774612596916150, -0.888797528711337660, -0.888820442603765470, +-0.888843354274142410, -0.888866263722410730, -0.888889170948513270, -0.888912075952392970, -0.888934978733992410, -0.888957879293254430, -0.888980777630121730, -0.889003673744537150, +-0.889026567636443280, -0.889049459305783160, -0.889072348752499190, -0.889095235976534950, -0.889118120977832050, -0.889141003756333980, -0.889163884311983340, -0.889186762644723410, +-0.889209638754496100, -0.889232512641244700, -0.889255384304912130, -0.889278253745441010, -0.889301120962774250, -0.889323985956854690, -0.889346848727625260, -0.889369709275028670, +-0.889392567599007760, -0.889415423699505440, -0.889438277576464990, -0.889461129229828450, -0.889483978659538990, -0.889506825865539750, -0.889529670847773680, -0.889552513606183150, +-0.889575354140711320, -0.889598192451301010, -0.889621028537895380, -0.889643862400437020, -0.889666694038869110, -0.889689523453134460, -0.889712350643175890, -0.889735175608936560, +-0.889757998350359290, -0.889780818867386910, -0.889803637159963020, -0.889826453228029560, -0.889849267071530000, -0.889872078690407630, -0.889894888084604710, -0.889917695254064610, +-0.889940500198730170, -0.889963302918544530, -0.889986103413450640, -0.890008901683391530, -0.890031697728310140, -0.890054491548149420, -0.890077283142852500, -0.890100072512362450, +-0.890122859656622190, -0.890145644575575210, -0.890168427269163680, -0.890191207737331070, -0.890213985980020440, -0.890236761997175270, -0.890259535788737730, -0.890282307354651410, +-0.890305076694859370, -0.890327843809304520, -0.890350608697930150, -0.890373371360679290, -0.890396131797494880, -0.890418890008320310, -0.890441645993098390, -0.890464399751772380, +-0.890487151284285790, -0.890509900590580880, -0.890532647670601250, -0.890555392524289950, -0.890578135151590680, -0.890600875552445600, -0.890623613726798320, -0.890646349674592000, +-0.890669083395769780, -0.890691814890274940, -0.890714544158050510, -0.890737271199039780, -0.890759996013185780, -0.890782718600431900, -0.890805438960721170, -0.890828157093997210, +-0.890850873000202490, -0.890873586679280520, -0.890896298131174660, -0.890919007355828410, -0.890941714353184370, -0.890964419123185910, -0.890987121665776430, -0.891009821980899170, +-0.891032520068497310, -0.891055215928514220, -0.891077909560893060, -0.891100600965577080, -0.891123290142509570, -0.891145977091633900, -0.891168661812893340, -0.891191344306231480, +-0.891214024571590820, -0.891236702608915190, -0.891259378418148170, -0.891282051999232270, -0.891304723352111190, -0.891327392476728430, -0.891350059373027140, -0.891372724040950580, +-0.891395386480442360, -0.891418046691445640, -0.891440704673903790, -0.891463360427760200, -0.891486013952958230, -0.891508665249441170, -0.891531314317152820, -0.891553961156035800, +-0.891576605766033920, -0.891599248147090570, -0.891621888299149460, -0.891644526222153180, -0.891667161916045670, -0.891689795380770090, -0.891712426616270150, -0.891735055622489230, +-0.891757682399370480, -0.891780306946857610, -0.891802929264894020, -0.891825549353423060, -0.891848167212388240, -0.891870782841733380, -0.891893396241401180, -0.891916007411335480, +-0.891938616351479750, -0.891961223061777940, -0.891983827542172650, -0.892006429792607800, -0.892029029813026790, -0.892051627603373310, -0.892074223163590750, -0.892096816493622600, +-0.892119407593412350, -0.892141996462903710, -0.892164583102039940, -0.892187167510764770, -0.892209749689022110, -0.892232329636754700, -0.892254907353906450, -0.892277482840420850, +-0.892300056096241970, -0.892322627121312610, -0.892345195915576710, -0.892367762478977760, -0.892390326811459360, -0.892412888912965220, -0.892435448783438830, -0.892458006422823800, +-0.892480561831063830, -0.892503115008102420, -0.892525665953883160, -0.892548214668349770, -0.892570761151446290, -0.892593305403115430, -0.892615847423301360, -0.892638387211948100, +-0.892660924768998390, -0.892683460094396360, -0.892705993188085740, -0.892728524050010130, -0.892751052680113230, -0.892773579078338650, -0.892796103244630210, -0.892818625178931400, +-0.892841144881186160, -0.892863662351337960, -0.892886177589330640, -0.892908690595108250, -0.892931201368613700, -0.892953709909791170, -0.892976216218584470, -0.892998720294937540, +-0.893021222138793420, -0.893043721750096160, -0.893066219128789700, -0.893088714274817730, -0.893111207188123870, -0.893133697868652040, -0.893156186316345970, -0.893178672531149460, +-0.893201156513006240, -0.893223638261860130, -0.893246117777655280, -0.893268595060334740, -0.893291070109842770, -0.893313542926123080, -0.893336013509119950, -0.893358481858776420, +-0.893380947975036640, -0.893403411857844550, -0.893425873507143860, -0.893448332922878510, -0.893470790104992420, -0.893493245053429200, -0.893515697768133000, -0.893538148249047430, +-0.893560596496116630, -0.893583042509284660, -0.893605486288494680, -0.893627927833690940, -0.893650367144817490, -0.893672804221818500, -0.893695239064636990, -0.893717671673217470, +-0.893740102047503760, -0.893762530187439790, -0.893784956092969480, -0.893807379764036900, -0.893829801200585750, -0.893852220402560070, -0.893874637369903910, -0.893897052102561100, +-0.893919464600475780, -0.893941874863592110, -0.893964282891853370, -0.893986688685203920, -0.894009092243588040, -0.894031493566949220, -0.894053892655231500, -0.894076289508379140, +-0.894098684126336090, -0.894121076509046260, -0.894143466656453720, -0.894165854568502620, -0.894188240245136770, -0.894210623686300440, -0.894233004891937470, -0.894255383861991990, +-0.894277760596408400, -0.894300135095130070, -0.894322507358101480, -0.894344877385266470, -0.894367245176569740, -0.894389610731954550, -0.894411974051365300, -0.894434335134746130, +-0.894456693982041080, -0.894479050593194210, -0.894501404968149890, -0.894523757106851950, -0.894546107009244640, -0.894568454675272130, -0.894590800104878350, -0.894613143298008120, +-0.894635484254604480, -0.894657822974612270, -0.894680159457975410, -0.894702493704638610, -0.894724825714545150, -0.894747155487639610, -0.894769483023866160, -0.894791808323169070, +-0.894814131385492370, -0.894836452210780450, -0.894858770798977350, -0.894881087150027340, -0.894903401263874580, -0.894925713140463320, -0.894948022779738170, -0.894970330181642630, +-0.894992635346121170, -0.895014938273118180, -0.895037238962578250, -0.895059537414444770, -0.895081833628662450, -0.895104127605175660, -0.895126419343928450, -0.895148708844865190, +-0.895170996107930160, -0.895193281133067730, -0.895215563920222060, -0.895237844469337410, -0.895260122780358160, -0.895282398853228690, -0.895304672687893490, -0.895326944284296270, +-0.895349213642381740, -0.895371480762094610, -0.895393745643378260, -0.895416008286177620, -0.895438268690436970, -0.895460526856100560, -0.895482782783112890, -0.895505036471418210, +-0.895527287920961030, -0.895549537131685610, -0.895571784103536330, -0.895594028836457560, -0.895616271330393790, -0.895638511585289730, -0.895660749601088880, -0.895682985377736270, +-0.895705218915176180, -0.895727450213353430, -0.895749679272211610, -0.895771906091695660, -0.895794130671749960, -0.895816353012318880, -0.895838573113346910, -0.895860790974778550, +-0.895883006596558170, -0.895905219978630370, -0.895927431120939420, -0.895949640023429920, -0.895971846686046680, -0.895994051108733540, -0.896016253291435190, -0.896038453234096140, +-0.896060650936661430, -0.896082846399074760, -0.896105039621280850, -0.896127230603224410, -0.896149419344849930, -0.896171605846101890, -0.896193790106924790, -0.896215972127263230, +-0.896238151907061690, -0.896260329446264880, -0.896282504744817190, -0.896304677802663540, -0.896326848619747980, -0.896349017196015230, -0.896371183531409880, -0.896393347625876970, +-0.896415509479360330, -0.896437669091804890, -0.896459826463155360, -0.896481981593356240, -0.896504134482352110, -0.896526285130087700, -0.896548433536507480, -0.896570579701556290, +-0.896592723625178610, -0.896614865307319150, -0.896637004747922410, -0.896659141946933640, -0.896681276904296660, -0.896703409619956430, -0.896725540093858080, -0.896747668325945550, +-0.896769794316163770, -0.896791918064457460, -0.896814039570771440, -0.896836158835050300, -0.896858275857238760, -0.896880390637281640, -0.896902503175123430, -0.896924613470708950, +-0.896946721523982910, -0.896968827334890140, -0.896990930903375670, -0.897013032229383560, -0.897035131312858720, -0.897057228153746110, -0.897079322751990870, -0.897101415107536940, +-0.897123505220329460, -0.897145593090313160, -0.897167678717432860, -0.897189762101633480, -0.897211843242859630, -0.897233922141056130, -0.897255998796167910, -0.897278073208139570, +-0.897300145376916160, -0.897322215302442720, -0.897344282984663400, -0.897366348423523360, -0.897388411618967430, -0.897410472570940860, -0.897432531279387710, -0.897454587744253240, +-0.897476641965482380, -0.897498693943019840, -0.897520743676810560, -0.897542791166799470, -0.897564836412931280, -0.897586879415151140, -0.897608920173403770, -0.897630958687634100, +-0.897652994957787390, -0.897675028983807800, -0.897697060765640600, -0.897719090303230830, -0.897741117596523750, -0.897763142645463420, -0.897785165449995200, -0.897807186010064150, +-0.897829204325615080, -0.897851220396593040, -0.897873234222942850, -0.897895245804609670, -0.897917255141538420, -0.897939262233673930, -0.897961267080961360, -0.897983269683345520, +-0.898005270040772020, -0.898027268153184900, -0.898049264020529540, -0.898071257642751530, -0.898093249019794930, -0.898115238151605210, -0.898137225038127430, -0.898159209679306510, +-0.898181192075087620, -0.898203172225415790, -0.898225150130235960, -0.898247125789493280, -0.898269099203132800, -0.898291070371099560, -0.898313039293338610, -0.898335005969795540, +-0.898356970400414510, -0.898378932585141010, -0.898400892523920300, -0.898422850216697650, -0.898444805663417450, -0.898466758864025380, -0.898488709818466290, -0.898510658526685440, +-0.898532604988627970, -0.898554549204238940, -0.898576491173463610, -0.898598430896247020, -0.898620368372534340, -0.898642303602270820, -0.898664236585401840, -0.898686167321871900, +-0.898708095811626580, -0.898730022054610940, -0.898751946050770690, -0.898773867800050200, -0.898795787302395070, -0.898817704557750450, -0.898839619566061510, -0.898861532327273500, +-0.898883442841331810, -0.898905351108181370, -0.898927257127767660, -0.898949160900035740, -0.898971062424930860, -0.898992961702398840, -0.899014858732383960, -0.899036753514831920, +-0.899058646049687990, -0.899080536336897880, -0.899102424376406080, -0.899124310168158080, -0.899146193712099470, -0.899168075008175300, -0.899189954056330840, -0.899211830856511680, +-0.899233705408662880, -0.899255577712729790, -0.899277447768657700, -0.899299315576392090, -0.899321181135878560, -0.899343044447061590, -0.899364905509887120, -0.899386764324300310, +-0.899408620890247090, -0.899430475207671830, -0.899452327276520470, -0.899474177096738160, -0.899496024668270500, -0.899517869991062760, -0.899539713065060420, -0.899561553890208640, +-0.899583392466453140, -0.899605228793739050, -0.899627062872012000, -0.899648894701217120, -0.899670724281300570, -0.899692551612206740, -0.899714376693881430, -0.899736199526270370, +-0.899758020109319050, -0.899779838442972380, -0.899801654527176090, -0.899823468361875660, -0.899845279947016570, -0.899867089282544220, -0.899888896368404190, -0.899910701204541970, +-0.899932503790902950, -0.899954304127432710, -0.899976102214076650, -0.899997898050780790, -0.900019691637489740, -0.900041482974149430, -0.900063272060705470, -0.900085058897103660, +-0.900106843483288950, -0.900128625819207050, -0.900150405904803550, -0.900172183740024060, -0.900193959324814160, -0.900215732659119250, -0.900237503742885140, -0.900259272576057200, +-0.900281039158581040, -0.900302803490402370, -0.900324565571467010, -0.900346325401719880, -0.900368082981106930, -0.900389838309573750, -0.900411591387066500, -0.900433342213529660, +-0.900455090788909620, -0.900476837113151850, -0.900498581186201960, -0.900520323008005550, -0.900542062578508440, -0.900563799897656110, -0.900585534965394290, -0.900607267781668660, +-0.900628998346424850, -0.900650726659608880, -0.900672452721165810, -0.900694176531041560, -0.900715898089181840, -0.900737617395532820, -0.900759334450039310, -0.900781049252647460, +-0.900802761803302990, -0.900824472101951600, -0.900846180148539120, -0.900867885943011150, -0.900889589485313500, -0.900911290775391780, -0.900932989813191920, -0.900954686598659520, +-0.900976381131740390, -0.900998073412380810, -0.901019763440525590, -0.901041451216120890, -0.901063136739112650, -0.901084820009446900, -0.901106501027068800, -0.901128179791924390, +-0.901149856303959500, -0.901171530563120050, -0.901193202569351760, -0.901214872322600450, -0.901236539822811930, -0.901258205069932040, -0.901279868063906700, -0.901301528804681730, +-0.901323187292203180, -0.901344843526416420, -0.901366497507267490, -0.901388149234702340, -0.901409798708667110, -0.901431445929107070, -0.901453090895968480, -0.901474733609197050, +-0.901496374068738840, -0.901518012274539650, -0.901539648226545530, -0.901561281924702200, -0.901582913368955690, -0.901604542559251930, -0.901626169495536760, -0.901647794177756530, +-0.901669416605856530, -0.901691036779782910, -0.901712654699481810, -0.901734270364899280, -0.901755883775980820, -0.901777494932672560, -0.901799103834920680, -0.901820710482670980, +-0.901842314875869520, -0.901863917014462220, -0.901885516898395130, -0.901907114527614300, -0.901928709902065640, -0.901950303021695320, -0.901971893886449490, -0.901993482496273650, +-0.902015068851113930, -0.902036652950916730, -0.902058234795628190, -0.902079814385193690, -0.902101391719559610, -0.902122966798672100, -0.902144539622477200, -0.902166110190920970, +-0.902187678503949430, -0.902209244561508640, -0.902230808363544750, -0.902252369910003900, -0.902273929200832160, -0.902295486235975440, -0.902317041015380570, -0.902338593538992590, +-0.902360143806758220, -0.902381691818623820, -0.902403237574534780, -0.902424781074437690, -0.902446322318278590, -0.902467861306003760, -0.902489398037559230, -0.902510932512891160, +-0.902532464731945820, -0.902553994694669350, -0.902575522401007910, -0.902597047850907550, -0.902618571044314640, -0.902640091981175670, -0.902661610661436130, -0.902683127085042500, +-0.902704641251941160, -0.902726153162078490, -0.902747662815400090, -0.902769170211852550, -0.902790675351382020, -0.902812178233934890, -0.902833678859457310, -0.902855177227895430, +-0.902876673339195630, -0.902898167193304290, -0.902919658790167450, -0.902941148129731360, -0.902962635211942870, -0.902984120036747440, -0.903005602604091680, -0.903027082913921970, +-0.903048560966184800, -0.903070036760825980, -0.903091510297792000, -0.903112981577029240, -0.903134450598484070, -0.903155917362102770, -0.903177381867831700, -0.903198844115617130, +-0.903220304105405440, -0.903241761837143000, -0.903263217310776190, -0.903284670526251610, -0.903306121483515080, -0.903327570182513200, -0.903349016623192450, -0.903370460805499540, +-0.903391902729379970, -0.903413342394780770, -0.903434779801648210, -0.903456214949928670, -0.903477647839568520, -0.903499078470514360, -0.903520506842712460, -0.903541932956109290, +-0.903563356810651360, -0.903584778406284930, -0.903606197742956590, -0.903627614820613160, -0.903649029639200350, -0.903670442198664880, -0.903691852498953780, -0.903713260540012550, +-0.903734666321788230, -0.903756069844227290, -0.903777471107276130, -0.903798870110881340, -0.903820266854989280, -0.903841661339546580, -0.903863053564499810, -0.903884443529795360, +-0.903905831235379710, -0.903927216681199570, -0.903948599867201770, -0.903969980793332130, -0.903991359459537460, -0.904012735865764470, -0.904034110011959880, -0.904055481898069720, +-0.904076851524040940, -0.904098218889819890, -0.904119583995353420, -0.904140946840587880, -0.904162307425470100, -0.904183665749946460, -0.904205021813963670, -0.904226375617468330, +-0.904247727160407020, -0.904269076442726800, -0.904290423464373490, -0.904311768225294130, -0.904333110725435430, -0.904354450964744210, -0.904375788943166500, -0.904397124660649370, +-0.904418458117139500, -0.904439789312583400, -0.904461118246927760, -0.904482444920119420, -0.904503769332104970, -0.904525091482831000, -0.904546411372244450, -0.904567729000291700, +-0.904589044366920110, -0.904610357472075520, -0.904631668315705070, -0.904652976897755370, -0.904674283218173670, -0.904695587276905910, -0.904716889073899130, -0.904738188609100160, +-0.904759485882455690, -0.904780780893912450, -0.904802073643417360, -0.904823364130917020, -0.904844652356358360, -0.904865938319687980, -0.904887222020852810, -0.904908503459799560, +-0.904929782636475390, -0.904951059550826440, -0.904972334202799770, -0.904993606592342740, -0.905014876719401280, -0.905036144583922560, -0.905057410185853620, -0.905078673525141040, +-0.905099934601731770, -0.905121193415572730, -0.905142449966610640, -0.905163704254792530, -0.905184956280065120, -0.905206206042375230, -0.905227453541669890, -0.905248698777896380, +-0.905269941751000620, -0.905291182460929990, -0.905312420907631530, -0.905333657091052290, -0.905354891011138640, -0.905376122667837620, -0.905397352061096390, -0.905418579190861770, +-0.905439804057080690, -0.905461026659700070, -0.905482246998666970, -0.905503465073928200, -0.905524680885430700, -0.905545894433121610, -0.905567105716948100, -0.905588314736856410, +-0.905609521492794060, -0.905630725984707840, -0.905651928212545140, -0.905673128176252230, -0.905694325875776580, -0.905715521311065140, -0.905736714482064830, -0.905757905388722690, +-0.905779094030985890, -0.905800280408801230, -0.905821464522115980, -0.905842646370877080, -0.905863825955031450, -0.905885003274526810, -0.905906178329309090, -0.905927351119326100, +-0.905948521644524550, -0.905969689904852160, -0.905990855900255190, -0.906012019630681120, -0.906033181096076890, -0.906054340296389870, -0.906075497231566880, -0.906096651901555190, +-0.906117804306301840, -0.906138954445753990, -0.906160102319858660, -0.906181247928563250, -0.906202391271814570, -0.906223532349560320, -0.906244671161746900, -0.906265807708321880, +-0.906286941989232650, -0.906308074004425590, -0.906329203753848510, -0.906350331237448350, -0.906371456455172360, -0.906392579406967710, -0.906413700092781550, -0.906434818512561250, +-0.906455934666253850, -0.906477048553806620, -0.906498160175166820, -0.906519269530281610, -0.906540376619098590, -0.906561481441564230, -0.906582583997626150, -0.906603684287231700, +-0.906624782310328280, -0.906645878066862590, -0.906666971556782220, -0.906688062780034440, -0.906709151736566520, -0.906730238426325720, -0.906751322849259190, -0.906772405005314530, +-0.906793484894438780, -0.906814562516579330, -0.906835637871683420, -0.906856710959698780, -0.906877781780572100, -0.906898850334250880, -0.906919916620682610, -0.906940980639814880, +-0.906962042391594280, -0.906983101875968640, -0.907004159092885230, -0.907025214042291420, -0.907046266724134460, -0.907067317138361970, -0.907088365284921210, -0.907109411163759430, +-0.907130454774824240, -0.907151496118062780, -0.907172535193423110, -0.907193572000851600, -0.907214606540296180, -0.907235638811704330, -0.907256668815023650, -0.907277696550200960, +-0.907298722017184090, -0.907319745215920290, -0.907340766146357280, -0.907361784808442320, -0.907382801202122780, -0.907403815327346370, -0.907424827184060370, -0.907445836772212240, +-0.907466844091749600, -0.907487849142619820, -0.907508851924770820, -0.907529852438149320, -0.907550850682703140, -0.907571846658380200, -0.907592840365127330, -0.907613831802892350, +-0.907634820971622740, -0.907655807871266100, -0.907676792501770020, -0.907697774863081900, -0.907718754955149310, -0.907739732777919860, -0.907760708331341040, -0.907781681615360550, +-0.907802652629925770, -0.907823621374984730, -0.907844587850484270, -0.907865552056372320, -0.907886513992596570, -0.907907473659104850, -0.907928431055844090, -0.907949386182762330, +-0.907970339039806950, -0.907991289626925880, -0.908012237944066490, -0.908033183991176500, -0.908054127768203600, -0.908075069275095290, -0.908096008511799390, -0.908116945478263490, +-0.908137880174435530, -0.908158812600262540, -0.908179742755692470, -0.908200670640673110, -0.908221596255152420, -0.908242519599077420, -0.908263440672396060, -0.908284359475056040, +-0.908305276007005170, -0.908326190268191170, -0.908347102258561630, -0.908368011978064380, -0.908388919426647120, -0.908409824604257450, -0.908430727510843310, -0.908451628146352720, +-0.908472526510732630, -0.908493422603931290, -0.908514316425896420, -0.908535207976576050, -0.908556097255917350, -0.908576984263868350, -0.908597869000376870, -0.908618751465390840, +-0.908639631658857860, -0.908660509580725750, -0.908681385230942440, -0.908702258609455640, -0.908723129716213160, -0.908743998551162950, -0.908764865114252700, -0.908785729405430560, +-0.908806591424643820, -0.908827451171840610, -0.908848308646969080, -0.908869163849976510, -0.908890016780810940, -0.908910867439420400, -0.908931715825752610, -0.908952561939755600, +-0.908973405781377200, -0.908994247350565220, -0.909015086647267600, -0.909035923671432380, -0.909056758423007260, -0.909077590901940290, -0.909098421108179620, -0.909119249041672630, +-0.909140074702367570, -0.909160898090212170, -0.909181719205155000, -0.909202538047143130, -0.909223354616124910, -0.909244168912048290, -0.909264980934861300, -0.909285790684511760, +-0.909306598160947830, -0.909327403364117440, -0.909348206293968400, -0.909369006950448980, -0.909389805333507330, -0.909410601443090830, -0.909431395279147850, -0.909452186841626430, +-0.909472976130474400, -0.909493763145640010, -0.909514547887071530, -0.909535330354716450, -0.909556110548522920, -0.909576888468439090, -0.909597664114413120, -0.909618437486393040, +-0.909639208584326790, -0.909659977408162510, -0.909680743957848260, -0.909701508233332510, -0.909722270234562760, -0.909743029961487260, -0.909763787414054060, -0.909784542592211530, +-0.909805295495907610, -0.909826046125090880, -0.909846794479708620, -0.909867540559709310, -0.909888284365041210, -0.909909025895652370, -0.909929765151491040, -0.909950502132505280, +-0.909971236838643230, -0.909991969269853040, -0.910012699426082980, -0.910033427307281540, -0.910054152913396200, -0.910074876244375440, -0.910095597300167420, -0.910116316080720520, +-0.910137032585983220, -0.910157746815902890, -0.910178458770428130, -0.910199168449507320, -0.910219875853088610, -0.910240580981120150, -0.910261283833550320, -0.910281984410327150, +-0.910302682711399140, -0.910323378736714320, -0.910344072486221510, -0.910364763959868100, -0.910385453157602890, -0.910406140079373930, -0.910426824725129590, -0.910447507094818250, +-0.910468187188388510, -0.910488865005787960, -0.910509540546965200, -0.910530213811868610, -0.910550884800446550, -0.910571553512647180, -0.910592219948418990, -0.910612884107710130, +-0.910633545990469200, -0.910654205596644670, -0.910674862926184380, -0.910695517979036810, -0.910716170755150540, -0.910736821254473750, -0.910757469476955020, -0.910778115422542940, +-0.910798759091185130, -0.910819400482830500, -0.910840039597427430, -0.910860676434924190, -0.910881310995269140, -0.910901943278411010, -0.910922573284297930, -0.910943201012878400, +-0.910963826464101230, -0.910984449637914250, -0.911005070534266050, -0.911025689153105110, -0.911046305494380040, -0.911066919558039200, -0.911087531344031420, -0.911108140852304400, +-0.911128748082807080, -0.911149353035487830, -0.911169955710295240, -0.911190556107177810, -0.911211154226084010, -0.911231750066962220, -0.911252343629761040, -0.911272934914429070, +-0.911293523920915120, -0.911314110649167010, -0.911334695099133670, -0.911355277270763490, -0.911375857164005150, -0.911396434778807500, -0.911417010115118440, -0.911437583172886920, +-0.911458153952061310, -0.911478722452590430, -0.911499288674422650, -0.911519852617506680, -0.911540414281791110, -0.911560973667224550, -0.911581530773755480, -0.911602085601332930, +-0.911622638149904850, -0.911643188419420160, -0.911663736409827450, -0.911684282121075440, -0.911704825553112720, -0.911725366705888330, -0.911745905579350200, -0.911766442173447270, +-0.911786976488128120, -0.911807508523341690, -0.911828038279036360, -0.911848565755161040, -0.911869090951664240, -0.911889613868494760, -0.911910134505601540, -0.911930652862932730, +-0.911951168940437150, -0.911971682738063730, -0.911992194255761170, -0.912012703493477960, -0.912033210451163480, -0.912053715128765650, -0.912074217526233410, -0.912094717643515680, +-0.912115215480561180, -0.912135711037318610, -0.912156204313736780, -0.912176695309764420, -0.912197184025350330, -0.912217670460443660, -0.912238154614992360, -0.912258636488945780, +-0.912279116082252540, -0.912299593394861550, -0.912320068426721640, -0.912340541177781850, -0.912361011647990330, -0.912381479837296340, -0.912401945745648590, -0.912422409372996010, +-0.912442870719287420, -0.912463329784471530, -0.912483786568497490, -0.912504241071313890, -0.912524693292869670, -0.912545143233114200, -0.912565590891995400, -0.912586036269462660, +-0.912606479365464800, -0.912626920179950730, -0.912647358712869840, -0.912667794964170050, -0.912688228933800860, -0.912708660621711080, -0.912729090027849630, -0.912749517152165460, +-0.912769941994607480, -0.912790364555124630, -0.912810784833665960, -0.912831202830180270, -0.912851618544616940, -0.912872031976924240, -0.912892443127051310, -0.912912851994947430, +-0.912933258580561400, -0.912953662883842500, -0.912974064904739200, -0.912994464643200660, -0.913014862099176040, -0.913035257272614140, -0.913055650163464130, -0.913076040771675030, +-0.913096429097195910, -0.913116815139975560, -0.913137198899963250, -0.913157580377108370, -0.913177959571359050, -0.913198336482664910, -0.913218711110974860, -0.913239083456238170, +-0.913259453518403650, -0.913279821297420910, -0.913300186793238210, -0.913320550005805030, -0.913340910935070530, -0.913361269580983740, -0.913381625943493810, -0.913401980022549800, +-0.913422331818100840, -0.913442681330095980, -0.913463028558484820, -0.913483373503215730, -0.913503716164238200, -0.913524056541501480, -0.913544394634954520, -0.913564730444546560, +-0.913585063970227210, -0.913605395211944730, -0.913625724169648820, -0.913646050843288650, -0.913666375232813240, -0.913686697338171980, -0.913707017159314020, -0.913727334696188390, +-0.913747649948744580, -0.913767962916931850, -0.913788273600698920, -0.913808581999995370, -0.913828888114770250, -0.913849191944972940, -0.913869493490552690, -0.913889792751459100, +-0.913910089727640540, -0.913930384419046840, -0.913950676825627250, -0.913970966947330820, -0.913991254784107030, -0.914011540335905150, -0.914031823602674430, -0.914052104584364030, +-0.914072383280923550, -0.914092659692302360, -0.914112933818449160, -0.914133205659313660, -0.914153475214845020, -0.914173742484992840, -0.914194007469706580, -0.914214270168935080, +-0.914234530582627710, -0.914254788710734180, -0.914275044553203630, -0.914295298109985440, -0.914315549381028990, -0.914335798366283650, -0.914356045065698900, -0.914376289479224000, +-0.914396531606808670, -0.914416771448401720, -0.914437009003952860, -0.914457244273411460, -0.914477477256727010, -0.914497707953848770, -0.914517936364726670, -0.914538162489309300, +-0.914558386327546600, -0.914578607879387940, -0.914598827144782690, -0.914619044123680450, -0.914639258816030480, -0.914659471221782480, -0.914679681340885730, -0.914699889173290260, +-0.914720094718944550, -0.914740297977798660, -0.914760498949802050, -0.914780697634904220, -0.914800894033054650, -0.914821088144203150, -0.914841279968298560, -0.914861469505290790, +-0.914881656755129340, -0.914901841717763790, -0.914922024393143630, -0.914942204781218350, -0.914962382881937650, -0.914982558695250910, -0.915002732221108170, -0.915022903459458250, +-0.915043072410251070, -0.915063239073436120, -0.915083403448963220, -0.915103565536781740, -0.915123725336841720, -0.915143882849091980, -0.915164038073482570, -0.915184191009963070, +-0.915204341658483080, -0.915224490018992200, -0.915244636091440130, -0.915264779875776480, -0.915284921371950940, -0.915305060579913010, -0.915325197499612830, -0.915345332130999220, +-0.915365464474022340, -0.915385594528631770, -0.915405722294777350, -0.915425847772408870, -0.915445970961475400, -0.915466091861926960, -0.915486210473713370, -0.915506326796784230, +-0.915526440831089360, -0.915546552576578240, -0.915566662033200810, -0.915586769200906760, -0.915606874079645690, -0.915626976669367880, -0.915647076970022230, -0.915667174981558920, +-0.915687270703927750, -0.915707364137078210, -0.915727455280960450, -0.915747544135524280, -0.915767630700718980, -0.915787714976494470, -0.915807796962800790, -0.915827876659587650, +-0.915847954066804750, -0.915868029184401910, -0.915888102012329060, -0.915908172550535920, -0.915928240798972840, -0.915948306757588650, -0.915968370426333720, -0.915988431805157880, +-0.916008490894011040, -0.916028547692842920, -0.916048602201603780, -0.916068654420242770, -0.916088704348710040, -0.916108751986955740, -0.916128797334929360, -0.916148840392581150, +-0.916168881159860730, -0.916188919636718110, -0.916208955823103240, -0.916228989718966380, -0.916249021324256670, -0.916269050638924390, -0.916289077662919450, -0.916309102396191790, +-0.916329124838691440, -0.916349144990368570, -0.916369162851172540, -0.916389178421053610, -0.916409191699961710, -0.916429202687846890, -0.916449211384658960, -0.916469217790348070, +-0.916489221904864150, -0.916509223728157130, -0.916529223260177050, -0.916549220500874280, -0.916569215450198090, -0.916589208108098850, -0.916609198474526710, -0.916629186549431480, +-0.916649172332763660, -0.916669155824472500, -0.916689137024508490, -0.916709115932821560, -0.916729092549361970, -0.916749066874079640, -0.916769038906924520, -0.916789008647846960, +-0.916808976096796790, -0.916828941253724160, -0.916848904118579560, -0.916868864691312350, -0.916888822971873020, -0.916908778960211500, -0.916928732656278170, -0.916948684060022940, +-0.916968633171396430, -0.916988579990347890, -0.917008524516827910, -0.917028466750786640, -0.917048406692174240, -0.917068344340940870, -0.917088279697036550, -0.917108212760411550, +-0.917128143531016020, -0.917148072008800440, -0.917167998193714420, -0.917187922085708320, -0.917207843684732400, -0.917227762990736940, -0.917247680003672070, -0.917267594723488290, +-0.917287507150135300, -0.917307417283563460, -0.917327325123723060, -0.917347230670564340, -0.917367133924037570, -0.917387034884093010, -0.917406933550680810, -0.917426829923751240, +-0.917446724003255000, -0.917466615789141570, -0.917486505281361660, -0.917506392479865430, -0.917526277384603240, -0.917546159995525360, -0.917566040312582490, -0.917585918335724000, +-0.917605794064900840, -0.917625667500063250, -0.917645538641161380, -0.917665407488145730, -0.917685274040966450, -0.917705138299574120, -0.917725000263918900, -0.917744859933951160, +-0.917764717309621610, -0.917784572390879960, -0.917804425177676910, -0.917824275669962720, -0.917844123867687880, -0.917863969770803090, -0.917883813379257950, -0.917903654693003390, +-0.917923493711989560, -0.917943330436167160, -0.917963164865486240, -0.917982996999897600, -0.918002826839351300, -0.918022654383798040, -0.918042479633188190, -0.918062302587472350, +-0.918082123246600550, -0.918101941610523280, -0.918121757679191350, -0.918141571452554820, -0.918161382930564480, -0.918181192113171060, -0.918200999000324260, -0.918220803591975000, +-0.918240605888073660, -0.918260405888570830, -0.918280203593417000, -0.918299999002562650, -0.918319792115958380, -0.918339582933554550, -0.918359371455302110, -0.918379157681150970, +-0.918398941611051840, -0.918418723244955440, -0.918438502582812120, -0.918458279624572600, -0.918478054370187810, -0.918497826819607450, -0.918517596972782570, -0.918537364829663640, +-0.918557130390201370, -0.918576893654346140, -0.918596654622048760, -0.918616413293259830, -0.918636169667929710, -0.918655923746009680, -0.918675675527449330, -0.918695425012199920, +-0.918715172200211930, -0.918734917091435950, -0.918754659685822710, -0.918774399983323110, -0.918794137983887320, -0.918813873687466030, -0.918833607094010070, -0.918853338203470150, +-0.918873067015796850, -0.918892793530940890, -0.918912517748852960, -0.918932239669483790, -0.918951959292783950, -0.918971676618704600, -0.918991391647195680, -0.919011104378208210, +-0.919030814811693130, -0.919050522947600920, -0.919070228785882740, -0.919089932326488720, -0.919109633569369810, -0.919129332514476820, -0.919149029161760440, -0.919168723511171630, +-0.919188415562660950, -0.919208105316179140, -0.919227792771677210, -0.919247477929105660, -0.919267160788415860, -0.919286841349557850, -0.919306519612482660, -0.919326195577141130, +-0.919345869243484160, -0.919365540611462580, -0.919385209681027440, -0.919404876452128870, -0.919424540924718260, -0.919444203098746190, -0.919463862974163600, -0.919483520550921420, +-0.919503175828970340, -0.919522828808261420, -0.919542479488745350, -0.919562127870373500, -0.919581773953095930, -0.919601417736863990, -0.919621059221628400, -0.919640698407340310, +-0.919660335293950300, -0.919679969881409990, -0.919699602169669280, -0.919719232158679570, -0.919738859848391770, -0.919758485238756920, -0.919778108329725730, -0.919797729121249350, +-0.919817347613278710, -0.919836963805764520, -0.919856577698658470, -0.919876189291910510, -0.919895798585472100, -0.919915405579294190, -0.919935010273327690, -0.919954612667523760, +-0.919974212761833670, -0.919993810556207660, -0.920013406050597120, -0.920032999244953080, -0.920052590139226470, -0.920072178733368440, -0.920091765027330030, -0.920111349021062170, +-0.920130930714515900, -0.920150510107642260, -0.920170087200392840, -0.920189661992717680, -0.920209234484568480, -0.920228804675896180, -0.920248372566651820, -0.920267938156786980, +-0.920287501446251820, -0.920307062434998050, -0.920326621122976470, -0.920346177510138470, -0.920365731596434870, -0.920385283381817130, -0.920404832866236090, -0.920424380049642890, +-0.920443924931988900, -0.920463467513225280, -0.920483007793302720, -0.920502545772172720, -0.920522081449786310, -0.920541614826094650, -0.920561145901048980, -0.920580674674600810, +-0.920600201146700490, -0.920619725317299850, -0.920639247186349710, -0.920658766753801650, -0.920678284019606500, -0.920697798983715730, -0.920717311646080510, -0.920736822006651860, +-0.920756330065381600, -0.920775835822220220, -0.920795339277119210, -0.920814840430029810, -0.920834339280903300, -0.920853835829691050, -0.920873330076344420, -0.920892822020814240, +-0.920912311663051870, -0.920931799003008810, -0.920951284040636310, -0.920970766775885520, -0.920990247208707810, -0.921009725339054450, -0.921029201166876810, -0.921048674692126590, +-0.921068145914754280, -0.921087614834711580, -0.921107081451949860, -0.921126545766420500, -0.921146007778074650, -0.921165467486864230, -0.921184924892739730, -0.921204379995652970, +-0.921223832795555200, -0.921243283292397910, -0.921262731486132360, -0.921282177376710030, -0.921301620964082300, -0.921321062248200430, -0.921340501229015900, -0.921359937906480520, +-0.921379372280544890, -0.921398804351160950, -0.921418234118279940, -0.921437661581853250, -0.921457086741832800, -0.921476509598169400, -0.921495930150814550, -0.921515348399720050, +-0.921534764344837050, -0.921554177986117160, -0.921573589323511850, -0.921592998356972610, -0.921612405086450810, -0.921631809511898050, -0.921651211633266020, -0.921670611450505660, +-0.921690008963568790, -0.921709404172406880, -0.921728797076971530, -0.921748187677214110, -0.921767575973086560, -0.921786961964539800, -0.921806345651525530, -0.921825727033995460, +-0.921845106111901070, -0.921864482885193960, -0.921883857353825610, -0.921903229517747610, -0.921922599376911460, -0.921941966931269290, -0.921961332180771810, -0.921980695125370950, +-0.922000055765018420, -0.922019414099665700, -0.922038770129264500, -0.922058123853766620, -0.922077475273123230, -0.922096824387286020, -0.922116171196206810, -0.922135515699837200, +-0.922154857898128680, -0.922174197791033160, -0.922193535378502130, -0.922212870660487180, -0.922232203636940470, -0.922251534307812810, -0.922270862673056360, -0.922290188732622810, +-0.922309512486463760, -0.922328833934530910, -0.922348153076776310, -0.922367469913150990, -0.922386784443607110, -0.922406096668096140, -0.922425406586569910, -0.922444714198980220, +-0.922464019505278790, -0.922483322505417200, -0.922502623199347390, -0.922521921587021070, -0.922541217668390150, -0.922560511443405900, -0.922579802912020460, -0.922599092074185330, +-0.922618378929852660, -0.922637663478974250, -0.922656945721501360, -0.922676225657386160, -0.922695503286580450, -0.922714778609035840, -0.922734051624704340, -0.922753322333537800, +-0.922772590735487790, -0.922791856830506460, -0.922811120618545420, -0.922830382099556920, -0.922849641273492120, -0.922868898140303150, -0.922888152699942070, -0.922907404952360570, +-0.922926654897510470, -0.922945902535344140, -0.922965147865812740, -0.922984390888868410, -0.923003631604463080, -0.923022870012548790, -0.923042106113077240, -0.923061339906000480, +-0.923080571391270310, -0.923099800568838780, -0.923119027438658040, -0.923138252000679340, -0.923157474254855060, -0.923176694201137130, -0.923195911839477470, -0.923215127169828010, +-0.923234340192141010, -0.923253550906367850, -0.923272759312460890, -0.923291965410371950, -0.923311169200053180, -0.923330370681456400, -0.923349569854533760, -0.923368766719237070, +-0.923387961275518590, -0.923407153523330470, -0.923426343462624200, -0.923445531093352030, -0.923464716415466010, -0.923483899428918290, -0.923503080133660780, -0.923522258529645870, +-0.923541434616825030, -0.923560608395150530, -0.923579779864574620, -0.923598949025049130, -0.923618115876526310, -0.923637280418958320, -0.923656442652296960, -0.923675602576494610, +-0.923694760191503210, -0.923713915497275220, -0.923733068493762130, -0.923752219180916430, -0.923771367558690050, -0.923790513627035350, -0.923809657385904700, -0.923828798835249490, +-0.923847937975022400, -0.923867074805175380, -0.923886209325660680, -0.923905341536430560, -0.923924471437436940, -0.923943599028632210, -0.923962724309968510, -0.923981847281397980, +-0.924000967942873120, -0.924020086294345510, -0.924039202335767750, -0.924058316067091990, -0.924077427488270380, -0.924096536599255500, -0.924115643399999080, -0.924134747890453470, +-0.924153850070570940, -0.924172949940303860, -0.924192047499604370, -0.924211142748424860, -0.924230235686717360, -0.924249326314434350, -0.924268414631527980, -0.924287500637950950, +-0.924306584333654760, -0.924325665718592200, -0.924344744792715440, -0.924363821555976850, -0.924382896008328570, -0.924401968149723530, -0.924421037980113210, -0.924440105499450330, +-0.924459170707687020, -0.924478233604775990, -0.924497294190669280, -0.924516352465319270, -0.924535408428678540, -0.924554462080699140, -0.924573513421333980, -0.924592562450534670, +-0.924611609168254020, -0.924630653574444290, -0.924649695669057970, -0.924668735452047420, -0.924687772923365350, -0.924706808082963460, -0.924725840930794570, -0.924744871466811170, +-0.924763899690965510, -0.924782925603210070, -0.924801949203497340, -0.924820970491779800, -0.924839989468009720, -0.924859006132139780, -0.924878020484122600, -0.924897032523910090, +-0.924916042251454960, -0.924935049666709700, -0.924954054769626890, -0.924973057560159240, -0.924992058038258570, -0.925011056203877800, -0.925030052056969310, -0.925049045597485800, +-0.925068036825379640, -0.925087025740603420, -0.925106012343109520, -0.925124996632850750, -0.925143978609779370, -0.925162958273848420, -0.925181935625009720, -0.925200910663216190, +-0.925219883388420430, -0.925238853800574910, -0.925257821899632570, -0.925276787685545440, -0.925295751158266230, -0.925314712317747650, -0.925333671163942380, -0.925352627696802930, +-0.925371581916281770, -0.925390533822331830, -0.925409483414905480, -0.925428430693955310, -0.925447375659434580, -0.925466318311295000, -0.925485258649489610, -0.925504196673971100, +-0.925523132384692080, -0.925542065781605250, -0.925560996864663530, -0.925579925633819080, -0.925598852089024700, -0.925617776230233340, -0.925636698057397460, -0.925655617570469770, +-0.925674534769403090, -0.925693449654150120, -0.925712362224663470, -0.925731272480896260, -0.925750180422800550, -0.925769086050329370, -0.925787989363435540, -0.925806890362071640, +-0.925825789046190620, -0.925844685415745380, -0.925863579470688090, -0.925882471210971890, -0.925901360636549490, -0.925920247747373690, -0.925939132543397330, -0.925958015024573090, +-0.925976895190853800, -0.925995773042192270, -0.926014648578541650, -0.926033521799854100, -0.926052392706082750, -0.926071261297180430, -0.926090127573099830, -0.926108991533794110, +-0.926127853179216090, -0.926146712509318130, -0.926165569524053380, -0.926184424223374770, -0.926203276607235120, -0.926222126675587230, -0.926240974428383930, -0.926259819865578370, +-0.926278662987123140, -0.926297503792971270, -0.926316342283076020, -0.926335178457389550, -0.926354012315865120, -0.926372843858455750, -0.926391673085114160, -0.926410499995793830, +-0.926429324590446800, -0.926448146869026550, -0.926466966831485880, -0.926485784477777740, -0.926504599807855270, -0.926523412821671170, -0.926542223519178700, -0.926561031900330570, +-0.926579837965079810, -0.926598641713379800, -0.926617443145182910, -0.926636242260442500, -0.926655039059111290, -0.926673833541142630, -0.926692625706489360, -0.926711415555104830, +-0.926730203086941430, -0.926748988301952510, -0.926767771200091130, -0.926786551781310310, -0.926805330045563200, -0.926824105992802630, -0.926842879622981840, -0.926861650936053880, +-0.926880419931972120, -0.926899186610689040, -0.926917950972157900, -0.926936713016331960, -0.926955472743164140, -0.926974230152607710, -0.926992985244616040, -0.927011738019141500, +-0.927030488476137670, -0.927049236615557600, -0.927067982437354440, -0.927086725941481340, -0.927105467127891440, -0.927124205996537890, -0.927142942547373840, -0.927161676780352660, +-0.927180408695427060, -0.927199138292550410, -0.927217865571675850, -0.927236590532756640, -0.927255313175746050, -0.927274033500597450, -0.927292751507263420, -0.927311467195697570, +-0.927330180565852920, -0.927348891617682970, -0.927367600351140740, -0.927386306766179500, -0.927405010862752510, -0.927423712640812910, -0.927442412100314080, -0.927461109241209610, +-0.927479804063451980, -0.927498496566994790, -0.927517186751791510, -0.927535874617795190, -0.927554560164959520, -0.927573243393236990, -0.927591924302581530, -0.927610602892946170, +-0.927629279164284280, -0.927647953116549240, -0.927666624749694300, -0.927685294063672840, -0.927703961058438110, -0.927722625733943480, -0.927741288090142670, -0.927759948126988250, +-0.927778605844433950, -0.927797261242433220, -0.927815914320939240, -0.927834565079905470, -0.927853213519285740, -0.927871859639032510, -0.927890503439099730, -0.927909144919440650, +-0.927927784080008640, -0.927946420920757300, -0.927965055441639870, -0.927983687642609740, -0.928002317523620390, -0.928020945084625630, -0.928039570325578160, -0.928058193246431800, +-0.928076813847139910, -0.928095432127655990, -0.928114048087933520, -0.928132661727926300, -0.928151273047587040, -0.928169882046869570, -0.928188488725727460, -0.928207093084113980, +-0.928225695121982940, -0.928244294839287610, -0.928262892235981460, -0.928281487312018210, -0.928300080067351540, -0.928318670501934280, -0.928337258615720360, -0.928355844408663370, +-0.928374427880716670, -0.928393009031833970, -0.928411587861969090, -0.928430164371074840, -0.928448738559105150, -0.928467310426013710, -0.928485879971754020, -0.928504447196279560, +-0.928523012099544020, -0.928541574681500890, -0.928560134942103880, -0.928578692881306460, -0.928597248499062670, -0.928615801795325440, -0.928634352770048800, -0.928652901423186130, +-0.928671447754691240, -0.928689991764518160, -0.928708533452619720, -0.928727072818949950, -0.928745609863462440, -0.928764144586110900, -0.928782676986849020, -0.928801207065630520, +-0.928819734822408980, -0.928838260257138000, -0.928856783369771510, -0.928875304160263320, -0.928893822628566570, -0.928912338774635190, -0.928930852598423010, -0.928949364099883710, +-0.928967873278971010, -0.928986380135638940, -0.929004884669840660, -0.929023386881530080, -0.929041886770661020, -0.929060384337187290, -0.929078879581062610, -0.929097372502240670, +-0.929115863100675400, -0.929134351376320390, -0.929152837329129790, -0.929171320959056860, -0.929189802266055630, -0.929208281250079820, -0.929226757911083330, -0.929245232249020000, +-0.929263704263843860, -0.929282173955508160, -0.929300641323967060, -0.929319106369174360, -0.929337569091083780, -0.929356029489649350, -0.929374487564824880, -0.929392943316564190, +-0.929411396744821090, -0.929429847849549850, -0.929448296630703720, -0.929466743088236740, -0.929485187222102940, -0.929503629032256140, -0.929522068518650380, -0.929540505681239690, +-0.929558940519977450, -0.929577373034817800, -0.929595803225714780, -0.929614231092622200, -0.929632656635494100, -0.929651079854284300, -0.929669500748946830, -0.929687919319435620, +-0.929706335565704590, -0.929724749487708110, -0.929743161085399340, -0.929761570358732750, -0.929779977307662150, -0.929798381932141700, -0.929816784232125550, -0.929835184207567170, +-0.929853581858420820, -0.929871977184640430, -0.929890370186180150, -0.929908760862994010, -0.929927149215035830, -0.929945535242259870, -0.929963918944620050, -0.929982300322070520, +-0.930000679374565430, -0.930019056102058370, -0.930037430504503710, -0.930055802581855500, -0.930074172334067640, -0.930092539761094520, -0.930110904862890280, -0.930129267639408400, +-0.930147628090603470, -0.930165986216429430, -0.930184342016840420, -0.930202695491790470, -0.930221046641233950, -0.930239395465124690, -0.930257741963416930, -0.930276086136065160, +-0.930294427983022980, -0.930312767504244520, -0.930331104699684270, -0.930349439569296280, -0.930367772113034670, -0.930386102330853950, -0.930404430222707580, -0.930422755788550160, +-0.930441079028335950, -0.930459399942018980, -0.930477718529553410, -0.930496034790893710, -0.930514348725993810, -0.930532660334808080, -0.930550969617291000, -0.930569276573396280, +-0.930587581203078270, -0.930605883506291250, -0.930624183482989590, -0.930642481133127530, -0.930660776456659570, -0.930679069453539290, -0.930697360123721280, -0.930715648467160040, +-0.930733934483809590, -0.930752218173624300, -0.930770499536558440, -0.930788778572566370, -0.930807055281602350, -0.930825329663620640, -0.930843601718575940, -0.930861871446421960, +-0.930880138847113290, -0.930898403920604300, -0.930916666666849250, -0.930934927085802940, -0.930953185177418870, -0.930971440941651960, -0.930989694378456360, -0.931007945487786540, +-0.931026194269596870, -0.931044440723841740, -0.931062684850475500, -0.931080926649452520, -0.931099166120727180, -0.931117403264254300, -0.931135638079987670, -0.931153870567881790, +-0.931172100727891360, -0.931190328559970640, -0.931208554064074100, -0.931226777240156460, -0.931244998088171520, -0.931263216608074210, -0.931281432799818790, -0.931299646663359740, +-0.931317858198651650, -0.931336067405648890, -0.931354274284305950, -0.931372478834577410, -0.931390681056417870, -0.931408880949781360, -0.931427078514622700, -0.931445273750896250, +-0.931463466658556620, -0.931481657237558380, -0.931499845487856360, -0.931518031409404370, -0.931536215002157220, -0.931554396266069620, -0.931572575201095930, -0.931590751807190980, +-0.931608926084309010, -0.931627098032404730, -0.931645267651432740, -0.931663434941347960, -0.931681599902104200, -0.931699762533656380, -0.931717922835959220, -0.931736080808967300, +-0.931754236452635110, -0.931772389766917670, -0.931790540751768930, -0.931808689407143900, -0.931826835732997070, -0.931844979729283150, -0.931863121395956840, -0.931881260732972730, +-0.931899397740285410, -0.931917532417849580, -0.931935664765620060, -0.931953794783551560, -0.931971922471598320, -0.931990047829715170, -0.932008170857857030, -0.932026291555978380, +-0.932044409924034370, -0.932062525961979030, -0.932080639669767290, -0.932098751047354070, -0.932116860094693860, -0.932134966811741570, -0.932153071198451810, -0.932171173254779490, +-0.932189272980679110, -0.932207370376105570, -0.932225465441013920, -0.932243558175358310, -0.932261648579093880, -0.932279736652175230, -0.932297822394557270, -0.932315905806194720, +-0.932333986887042830, -0.932352065637055530, -0.932370142056188070, -0.932388216144395380, -0.932406287901632050, -0.932424357327853000, -0.932442424423013060, -0.932460489187067140, +-0.932478551619969950, -0.932496611721676640, -0.932514669492141570, -0.932532724931319780, -0.932550778039166190, -0.932568828815635630, -0.932586877260683010, -0.932604923374263480, +-0.932622967156331420, -0.932641008606841850, -0.932659047725749810, -0.932677084513010120, -0.932695118968577710, -0.932713151092407600, -0.932731180884454500, -0.932749208344673560, +-0.932767233473019820, -0.932785256269447640, -0.932803276733912390, -0.932821294866369000, -0.932839310666772280, -0.932857324135077380, -0.932875335271239450, -0.932893344075212850, +-0.932911350546952840, -0.932929354686414470, -0.932947356493552760, -0.932965355968322640, -0.932983353110679150, -0.933001347920577320, -0.933019340397972070, -0.933037330542818450, +-0.933055318355071830, -0.933073303834686560, -0.933091286981618140, -0.933109267795821370, -0.933127246277251520, -0.933145222425863840, -0.933163196241612810, -0.933181167724453810, +-0.933199136874341860, -0.933217103691232010, -0.933235068175079510, -0.933253030325839280, -0.933270990143466480, -0.933288947627916140, -0.933306902779143520, -0.933324855597103990, +-0.933342806081751910, -0.933360754233042880, -0.933378700050931930, -0.933396643535374220, -0.933414584686324990, -0.933432523503739510, -0.933450459987572480, -0.933468394137779270, +-0.933486325954315020, -0.933504255437135000, -0.933522182586194350, -0.933540107401448220, -0.933558029882851860, -0.933575950030360420, -0.933593867843929390, -0.933611783323513470, +-0.933629696469068020, -0.933647607280548300, -0.933665515757909570, -0.933683421901107090, -0.933701325710096340, -0.933719227184832020, -0.933737126325269510, -0.933755023131364270, +-0.933772917603071460, -0.933790809740346450, -0.933808699543144270, -0.933826587011420410, -0.933844472145130110, -0.933862354944228870, -0.933880235408671490, -0.933898113538413450, +-0.933915989333410130, -0.933933862793616900, -0.933951733918989000, -0.933969602709482150, -0.933987469165050820, -0.934005333285650940, -0.934023195071237660, -0.934041054521766450, +-0.934058911637192570, -0.934076766417471390, -0.934094618862558290, -0.934112468972408740, -0.934130316746977880, -0.934148162186221650, -0.934166005290094640, -0.934183846058552650, +-0.934201684491551050, -0.934219520589045230, -0.934237354350990980, -0.934255185777342900, -0.934273014868056920, -0.934290841623088510, -0.934308666042392820, -0.934326488125925560, +-0.934344307873642090, -0.934362125285497780, -0.934379940361448220, -0.934397753101448790, -0.934415563505455290, -0.934433371573422540, -0.934451177305306470, -0.934468980701062320, +-0.934486781760645810, -0.934504580484012300, -0.934522376871117610, -0.934540170921916770, -0.934557962636365480, -0.934575752014419230, -0.934593539056033600, -0.934611323761164180, +-0.934629106129766460, -0.934646886161795920, -0.934664663857208140, -0.934682439215959060, -0.934700212238003590, -0.934717982923297550, -0.934735751271796640, -0.934753517283456240, +-0.934771280958232030, -0.934789042296080060, -0.934806801296955040, -0.934824557960813100, -0.934842312287609720, -0.934860064277300620, -0.934877813929841370, -0.934895561245187470, +-0.934913306223294830, -0.934931048864118820, -0.934948789167615480, -0.934966527133739840, -0.934984262762447950, -0.935001996053695380, -0.935019727007437850, -0.935037455623630940, +-0.935055181902230800, -0.935072905843192360, -0.935090627446471530, -0.935108346712024250, -0.935126063639806100, -0.935143778229772790, -0.935161490481880020, -0.935179200396083490, +-0.935196907972339010, -0.935214613210602290, -0.935232316110829240, -0.935250016672975250, -0.935267714896996120, -0.935285410782847660, -0.935303104330485690, -0.935320795539866360, +-0.935338484410944690, -0.935356170943676730, -0.935373855138018410, -0.935391536993925520, -0.935409216511353670, -0.935426893690258780, -0.935444568530596770, -0.935462241032323230, +-0.935479911195394090, -0.935497579019765600, -0.935515244505392700, -0.935532907652231850, -0.935550568460238540, -0.935568226929368920, -0.935585883059579130, -0.935603536850824200, +-0.935621188303060400, -0.935638837416243760, -0.935656484190329870, -0.935674128625274880, -0.935691770721034600, -0.935709410477564840, -0.935727047894821530, -0.935744682972760590, +-0.935762315711338280, -0.935779946110509850, -0.935797574170231570, -0.935815199890459470, -0.935832823271149250, -0.935850444312256950, -0.935868063013738930, -0.935885679375550340, +-0.935903293397647660, -0.935920905079986710, -0.935938514422523400, -0.935956121425214000, -0.935973726088014100, -0.935991328410880060, -0.936008928393767590, -0.936026526036633170, +-0.936044121339432040, -0.936061714302120600, -0.936079304924654960, -0.936096893206991080, -0.936114479149084850, -0.936132062750892890, -0.936149644012370330, -0.936167222933473650, +-0.936184799514159010, -0.936202373754382310, -0.936219945654099720, -0.936237515213267260, -0.936255082431840970, -0.936272647309777000, -0.936290209847031710, -0.936307770043560580, +-0.936325327899320100, -0.936342883414266190, -0.936360436588355110, -0.936377987421542990, -0.936395535913786210, -0.936413082065040260, -0.936430625875261490, -0.936448167344406280, +-0.936465706472430660, -0.936483243259290780, -0.936500777704942670, -0.936518309809342700, -0.936535839572447020, -0.936553366994211660, -0.936570892074593210, -0.936588414813547270, +-0.936605935211030190, -0.936623453266998360, -0.936640968981407810, -0.936658482354215230, -0.936675993385376100, -0.936693502074847030, -0.936711008422584150, -0.936728512428543820, +-0.936746014092682100, -0.936763513414955450, -0.936781010395319910, -0.936798505033731970, -0.936815997330147640, -0.936833487284523760, -0.936850974896815790, -0.936868460166980330, +-0.936885943094973750, -0.936903423680752300, -0.936920901924272350, -0.936938377825490500, -0.936955851384362330, -0.936973322600844430, -0.936990791474893390, -0.937008258006465260, +-0.937025722195516500, -0.937043184042003490, -0.937060643545882480, -0.937078100707109840, -0.937095555525642390, -0.937113008001435600, -0.937130458134446290, -0.937147905924630930, +-0.937165351371945790, -0.937182794476347230, -0.937200235237791950, -0.937217673656235870, -0.937235109731635490, -0.937252543463947490, -0.937269974853128020, -0.937287403899133560, +-0.937304830601920710, -0.937322254961445720, -0.937339676977665180, -0.937357096650535680, -0.937374513980013150, -0.937391928966054390, -0.937409341608615660, -0.937426751907653680, +-0.937444159863124790, -0.937461565474985830, -0.937478968743192700, -0.937496369667702110, -0.937513768248470550, -0.937531164485454590, -0.937548558378610730, -0.937565949927895440, +-0.937583339133265300, -0.937600725994676810, -0.937618110512086540, -0.937635492685451320, -0.937652872514727060, -0.937670249999870480, -0.937687625140838370, -0.937704997937587210, +-0.937722368390073950, -0.937739736498254260, -0.937757102262085420, -0.937774465681523670, -0.937791826756525840, -0.937809185487048500, -0.937826541873048150, -0.937843895914481360, +-0.937861247611304850, -0.937878596963475310, -0.937895943970949550, -0.937913288633683620, -0.937930630951634430, -0.937947970924758680, -0.937965308553013080, -0.937982643836354100, +-0.937999976774738900, -0.938017307368123390, -0.938034635616464720, -0.938051961519719370, -0.938069285077844040, -0.938086606290795650, -0.938103925158530690, -0.938121241681005860, +-0.938138555858177960, -0.938155867690004030, -0.938173177176440110, -0.938190484317443230, -0.938207789112970090, -0.938225091562977510, -0.938242391667422290, -0.938259689426261260, +-0.938276984839450770, -0.938294277906947860, -0.938311568628709130, -0.938328857004691600, -0.938346143034851870, -0.938363426719146850, -0.938380708057533150, -0.938397987049967800, +-0.938415263696407710, -0.938432537996809150, -0.938449809951129250, -0.938467079559324850, -0.938484346821352730, -0.938501611737169840, -0.938518874306733090, -0.938536134529998960, +-0.938553392406924370, -0.938570647937466360, -0.938587901121581750, -0.938605151959227450, -0.938622400450360160, -0.938639646594936930, -0.938656890392914560, -0.938674131844249970, +-0.938691370948900320, -0.938708607706821960, -0.938725842117972160, -0.938743074182307620, -0.938760303899785490, -0.938777531270362900, -0.938794756293996110, -0.938811978970642500, +-0.938829199300258880, -0.938846417282802380, -0.938863632918229720, -0.938880846206498030, -0.938898057147564140, -0.938915265741385170, -0.938932471987918070, -0.938949675887120080, +-0.938966877438947580, -0.938984076643357920, -0.939001273500308040, -0.939018468009754970, -0.939035660171655740, -0.939052849985967720, -0.939070037452647170, -0.939087222571651560, +-0.939104405342937930, -0.939121585766463210, -0.939138763842184640, -0.939155939570059050, -0.939173112950043690, -0.939190283982095480, -0.939207452666171890, -0.939224619002229420, +-0.939241782990225320, -0.939258944630116830, -0.939276103921861010, -0.939293260865414870, -0.939310415460735900, -0.939327567707780590, -0.939344717606506290, -0.939361865156870260, +-0.939379010358829540, -0.939396153212341380, -0.939413293717362710, -0.939430431873850890, -0.939447567681762960, -0.939464701141056400, -0.939481832251687800, -0.939498961013614630, +-0.939516087426794040, -0.939533211491183300, -0.939550333206739420, -0.939567452573420110, -0.939584569591181860, -0.939601684259982140, -0.939618796579778200, -0.939635906550527310, +-0.939653014172186610, -0.939670119444713460, -0.939687222368064900, -0.939704322942198300, -0.939721421167071020, -0.939738517042640330, -0.939755610568863140, -0.939772701745696940, +-0.939789790573098860, -0.939806877051026390, -0.939823961179437120, -0.939841042958287520, -0.939858122387535300, -0.939875199467137820, -0.939892274197052350, -0.939909346577236240, +-0.939926416607646640, -0.939943484288241150, -0.939960549618976900, -0.939977612599811160, -0.939994673230701850, -0.940011731511605440, -0.940028787442479750, -0.940045841023282150, +-0.940062892253969880, -0.940079941134500330, -0.940096987664831300, -0.940114031844919480, -0.940131073674722590, -0.940148113154198000, -0.940165150283303160, -0.940182185061995470, +-0.940199217490232280, -0.940216247567970950, -0.940233275295169090, -0.940250300671784390, -0.940267323697773550, -0.940284344373094490, -0.940301362697704480, -0.940318378671561090, +-0.940335392294621820, -0.940352403566844350, -0.940369412488185510, -0.940386419058603210, -0.940403423278054820, -0.940420425146497820, -0.940437424663889800, -0.940454421830188240, +-0.940471416645350610, -0.940488409109334510, -0.940505399222097640, -0.940522386983596910, -0.940539372393790260, -0.940556355452635160, -0.940573336160089200, -0.940590314516109970, +-0.940607290520655170, -0.940624264173681830, -0.940641235475147890, -0.940658204425010800, -0.940675171023228170, -0.940692135269757700, -0.940709097164556860, -0.940726056707583250, +-0.940743013898794560, -0.940759968738148270, -0.940776921225602410, -0.940793871361113920, -0.940810819144640710, -0.940827764576140590, -0.940844707655570930, -0.940861648382889770, +-0.940878586758054360, -0.940895522781022290, -0.940912456451751590, -0.940929387770199630, -0.940946316736324230, -0.940963243350083080, -0.940980167611433770, -0.940997089520334010, +-0.941014009076741600, -0.941030926280614470, -0.941047841131909650, -0.941064753630585280, -0.941081663776599080, -0.941098571569908620, -0.941115477010471820, -0.941132380098246620, +-0.941149280833190050, -0.941166179215260360, -0.941183075244415250, -0.941199968920612420, -0.941216860243809680, -0.941233749213964850, -0.941250635831035520, -0.941267520094979710, +-0.941284402005755360, -0.941301281563319710, -0.941318158767630810, -0.941335033618646570, -0.941351906116324690, -0.941368776260623100, -0.941385644051499830, -0.941402509488912240, +-0.941419372572818270, -0.941436233303175940, -0.941453091679942950, -0.941469947703077240, -0.941486801372536710, -0.941503652688279180, -0.941520501650262460, -0.941537348258444930, +-0.941554192512783610, -0.941571034413236750, -0.941587873959762400, -0.941604711152318360, -0.941621545990862560, -0.941638378475353140, -0.941655208605747470, -0.941672036382003810, +-0.941688861804080070, -0.941705684871934180, -0.941722505585524060, -0.941739323944807750, -0.941756139949743050, -0.941772953600288010, -0.941789764896400540, -0.941806573838039010, +-0.941823380425160780, -0.941840184657724010, -0.941856986535686840, -0.941873786059007180, -0.941890583227643410, -0.941907378041552890, -0.941924170500693880, -0.941940960605024410, +-0.941957748354502520, -0.941974533749086350, -0.941991316788733820, -0.942008097473402970, -0.942024875803051940, -0.942041651777638660, -0.942058425397121480, -0.942075196661458110, +-0.942091965570606590, -0.942108732124525280, -0.942125496323172110, -0.942142258166505100, -0.942159017654482840, -0.942175774787062710, -0.942192529564203190, -0.942209281985862290, +-0.942226032051998170, -0.942242779762568980, -0.942259525117532970, -0.942276268116847950, -0.942293008760472390, -0.942309747048364570, -0.942326482980482050, -0.942343216556783440, +-0.942359947777226650, -0.942376676641770050, -0.942393403150371790, -0.942410127302990230, -0.942426849099583190, -0.942443568540108910, -0.942460285624525770, -0.942477000352791920, +-0.942493712724865480, -0.942510422740704850, -0.942527130400268140, -0.942543835703513630, -0.942560538650399790, -0.942577239240884320, -0.942593937474925700, -0.942610633352482300, +-0.942627326873512250, -0.942644018037974040, -0.942660706845825920, -0.942677393297025820, -0.942694077391532210, -0.942710759129303360, -0.942727438510297720, -0.942744115534473350, +-0.942760790201788820, -0.942777462512202290, -0.942794132465672010, -0.942810800062156450, -0.942827465301614210, -0.942844128184003090, -0.942860788709281470, -0.942877446877408040, +-0.942894102688340950, -0.942910756142038790, -0.942927407238459580, -0.942944055977561810, -0.942960702359303850, -0.942977346383644170, -0.942993988050541130, -0.943010627359953110, +-0.943027264311838590, -0.943043898906155810, -0.943060531142863370, -0.943077161021919850, -0.943093788543283180, -0.943110413706911950, -0.943127036512764750, -0.943143656960799940, +-0.943160275050975990, -0.943176890783251620, -0.943193504157584740, -0.943210115173934160, -0.943226723832258250, -0.943243330132515490, -0.943259934074664460, -0.943276535658663650, +-0.943293134884471420, -0.943309731752046350, -0.943326326261347270, -0.943342918412332090, -0.943359508204959510, -0.943376095639188340, -0.943392680714976840, -0.943409263432283600, +-0.943425843791067530, -0.943442421791286570, -0.943458997432899520, -0.943475570715864960, -0.943492141640141500, -0.943508710205687720, -0.943525276412462200, -0.943541840260423430, +-0.943558401749530100, -0.943574960879741020, -0.943591517651014230, -0.943608072063308660, -0.943624624116582880, -0.943641173810795600, -0.943657721145905400, -0.943674266121871110, +-0.943690808738650970, -0.943707348996203680, -0.943723886894488160, -0.943740422433462790, -0.943756955613086370, -0.943773486433317710, -0.943790014894115180, -0.943806540995437700, +-0.943823064737243870, -0.943839586119492590, -0.943856105142142130, -0.943872621805151300, -0.943889136108479020, -0.943905648052083880, -0.943922157635924910, -0.943938664859960250, +-0.943955169724148950, -0.943971672228449690, -0.943988172372821290, -0.944004670157222450, -0.944021165581611870, -0.944037658645948460, -0.944054149350190830, -0.944070637694297890, +-0.944087123678228670, -0.944103607301941320, -0.944120088565394870, -0.944136567468548350, -0.944153044011360240, -0.944169518193789690, -0.944185990015795510, -0.944202459477336160, +-0.944218926578370590, -0.944235391318857700, -0.944251853698756420, -0.944268313718025440, -0.944284771376623590, -0.944301226674510000, -0.944317679611643260, -0.944334130187982510, +-0.944350578403486240, -0.944367024258113590, -0.944383467751823250, -0.944399908884574370, -0.944416347656325540, -0.944432784067036350, -0.944449218116664710, -0.944465649805170120, +-0.944482079132511480, -0.944498506098647490, -0.944514930703537310, -0.944531352947139860, -0.944547772829413930, -0.944564190350318580, -0.944580605509813150, -0.944597018307855810, +-0.944613428744405900, -0.944629836819422470, -0.944646242532864440, -0.944662645884690840, -0.944679046874860930, -0.944695445503333060, -0.944711841770066620, -0.944728235675020510, +-0.944744627218153890, -0.944761016399425670, -0.944777403218794890, -0.944793787676220580, -0.944810169771661880, -0.944826549505077720, -0.944842926876427460, -0.944859301885669580, +-0.944875674532763440, -0.944892044817668200, -0.944908412740342760, -0.944924778300746620, -0.944941141498838230, -0.944957502334576980, -0.944973860807922010, -0.944990216918832340, +-0.945006570667267120, -0.945022922053185500, -0.945039271076546620, -0.945055617737309510, -0.945071962035433310, -0.945088303970877620, -0.945104643543600800, -0.945120980753562430, +-0.945137315600721560, -0.945153648085037320, -0.945169978206469420, -0.945186305964976210, -0.945202631360517190, -0.945218954393051590, -0.945235275062538680, -0.945251593368937600, +-0.945267909312207390, -0.945284222892307510, -0.945300534109197120, -0.945316842962835360, -0.945333149453181700, -0.945349453580194950, -0.945365755343834600, -0.945382054744059790, +-0.945398351780829870, -0.945414646454104110, -0.945430938763841990, -0.945447228710002200, -0.945463516292544330, -0.945479801511427740, -0.945496084366611590, -0.945512364858055230, +-0.945528642985718040, -0.945544918749559150, -0.945561192149538040, -0.945577463185614200, -0.945593731857746420, -0.945609998165894310, -0.945626262110017210, -0.945642523690074400, +-0.945658782906025340, -0.945675039757829630, -0.945691294245445960, -0.945707546368834140, -0.945723796127953430, -0.945740043522763200, -0.945756288553222800, -0.945772531219291720, +-0.945788771520929440, -0.945805009458095090, -0.945821245030748270, -0.945837478238848560, -0.945853709082355000, -0.945869937561227060, -0.945886163675424330, -0.945902387424906180, +-0.945918608809632300, -0.945934827829561620, -0.945951044484653950, -0.945967258774868650, -0.945983470700165200, -0.945999680260502960, -0.946015887455841640, -0.946032092286140600, +-0.946048294751359320, -0.946064494851457270, -0.946080692586394270, -0.946096887956129230, -0.946113080960622080, -0.946129271599832070, -0.946145459873719010, -0.946161645782242490, +-0.946177829325361650, -0.946194010503036200, -0.946210189315225710, -0.946226365761889790, -0.946242539842988010, -0.946258711558479740, -0.946274880908324790, -0.946291047892482640, +-0.946307212510912770, -0.946323374763575310, -0.946339534650428970, -0.946355692171433890, -0.946371847326549550, -0.946388000115735650, -0.946404150538951660, -0.946420298596157620, +-0.946436444287312550, -0.946452587612376380, -0.946468728571308700, -0.946484867164069210, -0.946501003390617600, -0.946517137250913470, -0.946533268744916390, -0.946549397872586300, +-0.946565524633882880, -0.946581649028765400, -0.946597771057193890, -0.946613890719127830, -0.946630008014527120, -0.946646122943351380, -0.946662235505560500, -0.946678345701113870, +-0.946694453529971390, -0.946710558992092670, -0.946726662087437610, -0.946742762815965920, -0.946758861177637300, -0.946774957172411560, -0.946791050800248390, -0.946807142061107940, +-0.946823230954949250, -0.946839317481732560, -0.946855401641417570, -0.946871483433963990, -0.946887562859331840, -0.946903639917480940, -0.946919714608370770, -0.946935786931961230, +-0.946951856888212260, -0.946967924477083670, -0.946983989698535140, -0.947000052552526840, -0.947016113039018230, -0.947032171157969450, -0.947048226909340210, -0.947064280293090640, +-0.947080331309180120, -0.947096379957568790, -0.947112426238216560, -0.947128470151083150, -0.947144511696128900, -0.947160550873313080, -0.947176587682595940, -0.947192622123937290, +-0.947208654197297050, -0.947224683902635260, -0.947240711239911600, -0.947256736209086350, -0.947272758810119190, -0.947288779042970040, -0.947304796907599390, -0.947320812403966370, +-0.947336825532031360, -0.947352836291754150, -0.947368844683095010, -0.947384850706013750, -0.947400854360470610, -0.947416855646424970, -0.947432854563837300, -0.947448851112667410, +-0.947464845292875450, -0.947480837104421440, -0.947496826547265190, -0.947512813621366970, -0.947528798326686680, -0.947544780663184700, -0.947560760630820510, -0.947576738229554460, +-0.947592713459346480, -0.947608686320156710, -0.947624656811945300, -0.947640624934672380, -0.947656590688297770, -0.947672554072781610, -0.947688515088084050, -0.947704473734165330, +-0.947720430010985270, -0.947736383918504230, -0.947752335456682140, -0.947768284625479350, -0.947784231424856020, -0.947800175854771830, -0.947816117915187270, -0.947832057606062370, +-0.947847994927357380, -0.947863929879032340, -0.947879862461047720, -0.947895792673363210, -0.947911720515939300, -0.947927645988736020, -0.947943569091713620, -0.947959489824832250, +-0.947975408188052260, -0.947991324181333690, -0.948007237804636800, -0.948023149057921840, -0.948039057941149290, -0.948054964454278840, -0.948070868597270850, -0.948086770370085820, +-0.948102669772683870, -0.948118566805025490, -0.948134461467070370, -0.948150353758779100, -0.948166243680112040, -0.948182131231029230, -0.948198016411491260, -0.948213899221458160, +-0.948229779660890280, -0.948245657729748000, -0.948261533427991580, -0.948277406755581590, -0.948293277712477730, -0.948309146298640830, -0.948325012514031010, -0.948340876358608640, +-0.948356737832333980, -0.948372596935167960, -0.948388453667070030, -0.948404308028000910, -0.948420160017921180, -0.948436009636790980, -0.948451856884570680, -0.948467701761220860, +-0.948483544266701670, -0.948499384400973700, -0.948515222163997640, -0.948531057555733080, -0.948546890576140940, -0.948562721225181590, -0.948578549502815390, -0.948594375409002820, +-0.948610198943704690, -0.948626020106880690, -0.948641838898491630, -0.948657655318497990, -0.948673469366860260, -0.948689281043538780, -0.948705090348494150, -0.948720897281686850, +-0.948736701843077230, -0.948752504032626120, -0.948768303850293540, -0.948784101296040180, -0.948799896369826530, -0.948815689071613180, -0.948831479401360590, -0.948847267359029580, +-0.948863052944580070, -0.948878836157972970, -0.948894616999168770, -0.948910395468128050, -0.948926171564811400, -0.948941945289179190, -0.948957716641192220, -0.948973485620810960, +-0.948989252227995910, -0.949005016462708070, -0.949020778324907390, -0.949036537814554770, -0.949052294931610810, -0.949068049676036090, -0.949083802047791520, -0.949099552046837160, +-0.949115299673134020, -0.949131044926642460, -0.949146787807323420, -0.949162528315137370, -0.949178266450044990, -0.949194002212007000, -0.949209735600983980, -0.949225466616936630, +-0.949241195259825870, -0.949256921529611830, -0.949272645426255450, -0.949288366949717520, -0.949304086099958640, -0.949319802876939620, -0.949335517280621270, -0.949351229310963940, +-0.949366938967928450, -0.949382646251475730, -0.949398351161566230, -0.949414053698161010, -0.949429753861220640, -0.949445451650705820, -0.949461147066577360, -0.949476840108796290, +-0.949492530777322870, -0.949508219072118240, -0.949523904993142990, -0.949539588540357920, -0.949555269713723840, -0.949570948513202010, -0.949586624938752450, -0.949602298990336320, +-0.949617970667914420, -0.949633639971447670, -0.949649306900896770, -0.949664971456222640, -0.949680633637386080, -0.949696293444347920, -0.949711950877069280, -0.949727605935510530, +-0.949743258619632710, -0.949758908929396740, -0.949774556864763640, -0.949790202425694010, -0.949805845612149200, -0.949821486424089480, -0.949837124861475980, -0.949852760924269730, +-0.949868394612431670, -0.949884025925922470, -0.949899654864703290, -0.949915281428734940, -0.949930905617978440, -0.949946527432394610, -0.949962146871944800, -0.949977763936589280, +-0.949993378626289410, -0.950008990941006100, -0.950024600880700290, -0.950040208445333210, -0.950055813634865350, -0.950071416449258080, -0.950087016888472080, -0.950102614952468620, +-0.950118210641208720, -0.950133803954653190, -0.950149394892763180, -0.950164983455499600, -0.950180569642823600, -0.950196153454696550, -0.950211734891078800, -0.950227313951931610, +-0.950242890637216230, -0.950258464946893590, -0.950274036880924820, -0.950289606439271180, -0.950305173621893370, -0.950320738428752530, -0.950336300859809800, -0.950351860915026440, +-0.950367418594363360, -0.950382973897781700, -0.950398526825242620, -0.950414077376707240, -0.950429625552136950, -0.950445171351492310, -0.950460714774734820, -0.950476255821825490, +-0.950491794492725470, -0.950507330787396020, -0.950522864705798500, -0.950538396247893490, -0.950553925413642590, -0.950569452203006810, -0.950584976615947430, -0.950600498652425570, +-0.950616018312402500, -0.950631535595839460, -0.950647050502697490, -0.950662563032938170, -0.950678073186522090, -0.950693580963410940, -0.950709086363565880, -0.950724589386948040, +-0.950740090033518670, -0.950755588303239360, -0.950771084196070930, -0.950786577711974720, -0.950802068850912010, -0.950817557612844140, -0.950833043997732500, -0.950848528005538100, +-0.950864009636222420, -0.950879488889746720, -0.950894965766072350, -0.950910440265160810, -0.950925912386972880, -0.950941382131470170, -0.950956849498614030, -0.950972314488365720, +-0.950987777100686940, -0.951003237335538490, -0.951018695192881850, -0.951034150672678600, -0.951049603774889900, -0.951065054499477090, -0.951080502846401780, -0.951095948815625200, +-0.951111392407108620, -0.951126833620813740, -0.951142272456701910, -0.951157708914734170, -0.951173142994872210, -0.951188574697077290, -0.951204004021311000, -0.951219430967534700, +-0.951234855535710190, -0.951250277725798070, -0.951265697537760360, -0.951281114971558430, -0.951296530027153750, -0.951311942704507580, -0.951327353003581730, -0.951342760924337450, +-0.951358166466736210, -0.951373569630739820, -0.951388970416309320, -0.951404368823406290, -0.951419764851992420, -0.951435158502029090, -0.951450549773477980, -0.951465938666300690, +-0.951481325180458250, -0.951496709315912460, -0.951512091072625020, -0.951527470450557190, -0.951542847449670880, -0.951558222069927350, -0.951573594311288180, -0.951588964173715190, +-0.951604331657169960, -0.951619696761613620, -0.951635059487008110, -0.951650419833314890, -0.951665777800495660, -0.951681133388512010, -0.951696486597325750, -0.951711837426898020, +-0.951727185877190630, -0.951742531948165380, -0.951757875639783760, -0.951773216952007450, -0.951788555884798050, -0.951803892438117360, -0.951819226611926860, -0.951834558406188360, +-0.951849887820863660, -0.951865214855914020, -0.951880539511301250, -0.951895861786987260, -0.951911181682933540, -0.951926499199102220, -0.951941814335454330, -0.951957127091951900, +-0.951972437468556640, -0.951987745465230240, -0.952003051081934610, -0.952018354318631240, -0.952033655175282050, -0.952048953651848720, -0.952064249748292960, -0.952079543464576790, +-0.952094834800661590, -0.952110123756509270, -0.952125410332081650, -0.952140694527340510, -0.952155976342247690, -0.952171255776765090, -0.952186532830854190, -0.952201807504476920, +-0.952217079797595070, -0.952232349710170570, -0.952247617242165220, -0.952262882393540840, -0.952278145164259130, -0.952293405554282210, -0.952308663563571910, -0.952323919192089810, +-0.952339172439797820, -0.952354423306657980, -0.952369671792631990, -0.952384917897681870, -0.952400161621769660, -0.952415402964856940, -0.952430641926905520, -0.952445878507877650, +-0.952461112707735040, -0.952476344526439590, -0.952491573963953340, -0.952506801020238100, -0.952522025695255900, -0.952537247988968880, -0.952552467901338520, -0.952567685432326950, +-0.952582900581896210, -0.952598113350008100, -0.952613323736624880, -0.952628531741708470, -0.952643737365220570, -0.952658940607123310, -0.952674141467378610, -0.952689339945948620, +-0.952704536042795260, -0.952719729757880550, -0.952734921091166640, -0.952750110042615340, -0.952765296612188670, -0.952780480799849120, -0.952795662605558150, -0.952810842029277900, +-0.952826019070970640, -0.952841193730598280, -0.952856366008123290, -0.952871535903507040, -0.952886703416712000, -0.952901868547700200, -0.952917031296433680, -0.952932191662874570, +-0.952947349646985020, -0.952962505248727050, -0.952977658468062930, -0.952992809304954560, -0.953007957759364420, -0.953023103831254210, -0.953038247520586190, -0.953053388827322600, +-0.953068527751425480, -0.953083664292857070, -0.953098798451579740, -0.953113930227555190, -0.953129059620745790, -0.953144186631113670, -0.953159311258621190, -0.953174433503230390, +-0.953189553364903520, -0.953204670843602720, -0.953219785939290350, -0.953234898651928670, -0.953250008981479490, -0.953265116927905390, -0.953280222491168390, -0.953295325671230880, +-0.953310426468055080, -0.953325524881603380, -0.953340620911837690, -0.953355714558720480, -0.953370805822213900, -0.953385894702280300, -0.953400981198882060, -0.953416065311981310, +-0.953431147041540420, -0.953446226387521630, -0.953461303349887550, -0.953476377928599960, -0.953491450123621350, -0.953506519934914200, -0.953521587362440750, -0.953536652406163250, +-0.953551715066044530, -0.953566775342046150, -0.953581833234130820, -0.953596888742261010, -0.953611941866398860, -0.953626992606506960, -0.953642040962547450, -0.953657086934482920, +-0.953672130522275730, -0.953687171725888130, -0.953702210545282920, -0.953717246980421820, -0.953732281031267730, -0.953747312697782900, -0.953762341979929710, -0.953777368877670950, +-0.953792393390968550, -0.953807415519785210, -0.953822435264083280, -0.953837452623825240, -0.953852467598973570, -0.953867480189490750, -0.953882490395339230, -0.953897498216481510, +-0.953912503652880050, -0.953927506704497550, -0.953942507371296040, -0.953957505653238220, -0.953972501550286680, -0.953987495062403880, -0.954002486189552410, -0.954017474931694860, +-0.954032461288793490, -0.954047445260810870, -0.954062426847709700, -0.954077406049452350, -0.954092382866001620, -0.954107357297319880, -0.954122329343369710, -0.954137299004113810, +-0.954152266279514880, -0.954167231169534950, -0.954182193674137040, -0.954197153793283630, -0.954212111526937300, -0.954227066875060650, -0.954242019837616700, -0.954256970414567360, +-0.954271918605875680, -0.954286864411504120, -0.954301807831415490, -0.954316748865572270, -0.954331687513937150, -0.954346623776472840, -0.954361557653142010, -0.954376489143907490, +-0.954391418248731530, -0.954406344967577040, -0.954421269300406610, -0.954436191247183040, -0.954451110807869040, -0.954466027982427520, -0.954480942770820630, -0.954495855173011390, +-0.954510765188962500, -0.954525672818636760, -0.954540578061996770, -0.954555480919005330, -0.954570381389625240, -0.954585279473819210, -0.954600175171549940, -0.954615068482780550, +-0.954629959407473190, -0.954644847945590900, -0.954659734097096480, -0.954674617861952730, -0.954689499240122810, -0.954704378231568730, -0.954719254836253750, -0.954734129054140680, +-0.954749000885192320, -0.954763870329371380, -0.954778737386640760, -0.954793602056963290, -0.954808464340301870, -0.954823324236619310, -0.954838181745878640, -0.954853036868042240, +-0.954867889603073340, -0.954882739950934640, -0.954897587911589070, -0.954912433484999880, -0.954927276671129310, -0.954942117469940510, -0.954956955881396400, -0.954971791905460000, +-0.954986625542094010, -0.955001456791261580, -0.955016285652925400, -0.955031112127048500, -0.955045936213593900, -0.955060757912524650, -0.955075577223803320, -0.955090394147393050, +-0.955105208683256770, -0.955120020831357390, -0.955134830591658050, -0.955149637964121890, -0.955164442948711280, -0.955179245545389690, -0.955194045754119920, -0.955208843574865020, +-0.955223639007588000, -0.955238432052252010, -0.955253222708819850, -0.955268010977254560, -0.955282796857519600, -0.955297580349577350, -0.955312361453391160, -0.955327140168924060, +-0.955341916496139200, -0.955356690434999490, -0.955371461985468300, -0.955386231147508090, -0.955400997921082460, -0.955415762306154330, -0.955430524302686710, -0.955445283910642760, +-0.955460041129985730, -0.955474795960678520, -0.955489548402684300, -0.955504298455966520, -0.955519046120487660, -0.955533791396211200, -0.955548534283100380, -0.955563274781118130, +-0.955578012890227700, -0.955592748610392450, -0.955607481941575190, -0.955622212883739160, -0.955636941436847520, -0.955651667600863620, -0.955666391375750490, -0.955681112761471500, +-0.955695831757989670, -0.955710548365268250, -0.955725262583270400, -0.955739974411959680, -0.955754683851298800, -0.955769390901251240, -0.955784095561780120, -0.955798797832848820, +-0.955813497714420810, -0.955828195206458790, -0.955842890308926220, -0.955857583021786470, -0.955872273345002690, -0.955886961278538340, -0.955901646822356570, -0.955916329976420620, +-0.955931010740693870, -0.955945689115139550, -0.955960365099721380, -0.955975038694401920, -0.955989709899145000, -0.956004378713913640, -0.956019045138671420, -0.956033709173381600, +-0.956048370818007750, -0.956063030072512700, -0.956077686936860130, -0.956092341411013290, -0.956106993494935660, -0.956121643188590500, -0.956136290491941150, -0.956150935404951220, +-0.956165577927583830, -0.956180218059802800, -0.956194855801571040, -0.956209491152852030, -0.956224124113609350, -0.956238754683806370, -0.956253382863406440, -0.956268008652373380, +-0.956282632050669990, -0.956297253058260080, -0.956311871675107010, -0.956326487901174250, -0.956341101736425280, -0.956355713180823570, -0.956370322234332600, -0.956384928896915730, +-0.956399533168536880, -0.956414135049158840, -0.956428734538745550, -0.956443331637260470, -0.956457926344666980, -0.956472518660928750, -0.956487108586009380, -0.956501696119872010, +-0.956516281262480450, -0.956530864013798170, -0.956545444373788630, -0.956560022342415660, -0.956574597919642500, -0.956589171105432850, -0.956603741899750390, -0.956618310302558510, +-0.956632876313820990, -0.956647439933501210, -0.956662001161562750, -0.956676559997969300, -0.956691116442684340, -0.956705670495672010, -0.956720222156895120, -0.956734771426317800, +-0.956749318303903530, -0.956763862789615890, -0.956778404883418590, -0.956792944585275310, -0.956807481895149750, -0.956822016813005380, -0.956836549338806020, -0.956851079472515460, +-0.956865607214096970, -0.956880132563514560, -0.956894655520731720, -0.956909176085712350, -0.956923694258419940, -0.956938210038818630, -0.956952723426871430, -0.956967234422542500, +-0.956981743025795420, -0.956996249236594100, -0.957010753054902020, -0.957025254480683210, -0.957039753513901140, -0.957054250154519730, -0.957068744402502890, -0.957083236257814000, +-0.957097725720417070, -0.957112212790275700, -0.957126697467353900, -0.957141179751615280, -0.957155659643024070, -0.957170137141543420, -0.957184612247137360, -0.957199084959769800, +-0.957213555279404550, -0.957228023206005420, -0.957242488739536210, -0.957256951879960740, -0.957271412627243020, -0.957285870981346880, -0.957300326942235880, -0.957314780509874060, +-0.957329231684225230, -0.957343680465253420, -0.957358126852922320, -0.957372570847196290, -0.957387012448038480, -0.957401451655413130, -0.957415888469284160, -0.957430322889615490, +-0.957444754916370930, -0.957459184549514620, -0.957473611789010250, -0.957488036634821850, -0.957502459086913450, -0.957516879145249080, -0.957531296809792320, -0.957545712080507210, +-0.957560124957357870, -0.957574535440308240, -0.957588943529322560, -0.957603349224364190, -0.957617752525397490, -0.957632153432386390, -0.957646551945295020, -0.957660948064087080, +-0.957675341788726930, -0.957689733119178380, -0.957704122055405450, -0.957718508597372180, -0.957732892745043030, -0.957747274498381260, -0.957761653857351350, -0.957776030821917310, +-0.957790405392043300, -0.957804777567693110, -0.957819147348831330, -0.957833514735421440, -0.957847879727427690, -0.957862242324814210, -0.957876602527545250, -0.957890960335584740, +-0.957905315748896810, -0.957919668767445610, -0.957934019391195160, -0.957948367620110040, -0.957962713454153620, -0.957977056893290490, -0.957991397937484780, -0.958005736586700410, +-0.958020072840901850, -0.958034406700053240, -0.958048738164118510, -0.958063067233061780, -0.958077393906847540, -0.958091718185439700, -0.958106040068802620, -0.958120359556900340, +-0.958134676649697310, -0.958148991347157470, -0.958163303649245510, -0.958177613555924900, -0.958191921067160330, -0.958206226182916070, -0.958220528903156120, -0.958234829227844860, +-0.958249127156946770, -0.958263422690425640, -0.958277715828245950, -0.958292006570371950, -0.958306294916767890, -0.958320580867398240, -0.958334864422227040, -0.958349145581218640, +-0.958363424344337410, -0.958377700711547710, -0.958391974682813900, -0.958406246258099890, -0.958420515437370390, -0.958434782220589530, -0.958449046607721680, -0.958463308598731520, +-0.958477568193582760, -0.958491825392240090, -0.958506080194667990, -0.958520332600830580, -0.958534582610692350, -0.958548830224217660, -0.958563075441370870, -0.958577318262116450, +-0.958591558686418770, -0.958605796714242290, -0.958620032345551150, -0.958634265580309950, -0.958648496418483150, -0.958662724860035010, -0.958676950904930100, -0.958691174553133020, +-0.958705395804607790, -0.958719614659319100, -0.958733831117231320, -0.958748045178309030, -0.958762256842516590, -0.958776466109818480, -0.958790672980179170, -0.958804877453563240, +-0.958819079529935390, -0.958833279209259540, -0.958847476491500590, -0.958861671376622820, -0.958875863864590890, -0.958890053955369410, -0.958904241648922960, -0.958918426945215670, +-0.958932609844212360, -0.958946790345877380, -0.958960968450175530, -0.958975144157071300, -0.958989317466529160, -0.959003488378513680, -0.959017656892989570, -0.959031823009921510, +-0.959045986729273660, -0.959060148051010810, -0.959074306975097660, -0.959088463501498680, -0.959102617630178570, -0.959116769361102240, -0.959130918694233610, -0.959145065629537720, +-0.959159210166979250, -0.959173352306522680, -0.959187492048132690, -0.959201629391774000, -0.959215764337411290, -0.959229896885009150, -0.959244027034532270, -0.959258154785945560, +-0.959272280139213170, -0.959286403094300130, -0.959300523651171020, -0.959314641809790650, -0.959328757570123920, -0.959342870932135110, -0.959356981895789110, -0.959371090461050620, +-0.959385196627884350, -0.959399300396255090, -0.959413401766127660, -0.959427500737466740, -0.959441597310237040, -0.959455691484403240, -0.959469783259930600, -0.959483872636783250, +-0.959497959614926120, -0.959512044194324120, -0.959526126374942060, -0.959540206156744620, -0.959554283539696960, -0.959568358523763320, -0.959582431108908840, -0.959596501295098210, +-0.959610569082296360, -0.959624634470468090, -0.959638697459578300, -0.959652758049591710, -0.959666816240473230, -0.959680872032187880, -0.959694925424700140, -0.959708976417975150, +-0.959723025011977700, -0.959737071206672620, -0.959751115002024920, -0.959765156397999640, -0.959779195394561360, -0.959793231991674880, -0.959807266189305450, -0.959821297987417890, +-0.959835327385976990, -0.959849354384947780, -0.959863378984295300, -0.959877401183984240, -0.959891420983979950, -0.959905438384246910, -0.959919453384750270, -0.959933465985454930, +-0.959947476186326030, -0.959961483987328280, -0.959975489388427250, -0.959989492389587080, -0.960003492990773370, -0.960017491191950790, -0.960031486993084490, -0.960045480394139510, +-0.960059471395080850, -0.960073459995873460, -0.960087446196482450, -0.960101429996872760, -0.960115411397009840, -0.960129390396858070, -0.960143366996382920, -0.960157341195549300, +-0.960171312994322350, -0.960185282392667320, -0.960199249390548790, -0.960213213987932250, -0.960227176184782590, -0.960241135981064970, -0.960255093376744640, -0.960269048371786500, +-0.960283000966155710, -0.960296951159817500, -0.960310898952736800, -0.960324844344879190, -0.960338787336209250, -0.960352727926692240, -0.960366666116293400, -0.960380601904977980, +-0.960394535292711020, -0.960408466279457970, -0.960422394865183550, -0.960436321049853100, -0.960450244833431890, -0.960464166215885040, -0.960478085197177700, -0.960492001777275230, +-0.960505915956142760, -0.960519827733745560, -0.960533737110048860, -0.960547644085017690, -0.960561548658617430, -0.960575450830813300, -0.960589350601570470, -0.960603247970854280, +-0.960617142938630320, -0.960631035504863060, -0.960644925669518420, -0.960658813432561320, -0.960672698793957220, -0.960686581753671390, -0.960700462311669170, -0.960714340467915710, +-0.960728216222376470, -0.960742089575016830, -0.960755960525801810, -0.960769829074696880, -0.960783695221667290, -0.960797558966678510, -0.960811420309695910, -0.960825279250684950, +-0.960839135789610550, -0.960852989926438310, -0.960866841661133560, -0.960880690993661690, -0.960894537923988160, -0.960908382452078320, -0.960922224577897440, -0.960936064301410990, +-0.960949901622584420, -0.960963736541383340, -0.960977569057772760, -0.960991399171718160, -0.961005226883185020, -0.961019052192138900, -0.961032875098545400, -0.961046695602369440, +-0.961060513703576700, -0.961074329402132670, -0.961088142698002910, -0.961101953591152690, -0.961115762081547700, -0.961129568169153180, -0.961143371853934840, -0.961157173135858020, +-0.961170972014888550, -0.961184768490991330, -0.961198562564132280, -0.961212354234276760, -0.961226143501390350, -0.961239930365438640, -0.961253714826387330, -0.961267496884201430, +-0.961281276538846870, -0.961295053790289120, -0.961308828638493650, -0.961322601083426150, -0.961336371125052210, -0.961350138763337300, -0.961363903998247000, -0.961377666829747230, +-0.961391427257803020, -0.961405185282380280, -0.961418940903444600, -0.961432694120961440, -0.961446444934896730, -0.961460193345216040, -0.961473939351884630, -0.961487682954868310, +-0.961501424154132870, -0.961515162949643900, -0.961528899341366980, -0.961542633329267820, -0.961556364913312090, -0.961570094093465390, -0.961583820869693740, -0.961597545241962280, +-0.961611267210236930, -0.961624986774483490, -0.961638703934667550, -0.961652418690754800, -0.961666131042711260, -0.961679840990502190, -0.961693548534093500, -0.961707253673451000, +-0.961720956408540270, -0.961734656739327230, -0.961748354665777460, -0.961762050187856880, -0.961775743305531170, -0.961789434018766040, -0.961803122327527630, -0.961816808231781170, +-0.961830491731492600, -0.961844172826627930, -0.961857851517152750, -0.961871527803033200, -0.961885201684234640, -0.961898873160722980, -0.961912542232464250, -0.961926208899424040, +-0.961939873161568370, -0.961953535018863050, -0.961967194471273880, -0.961980851518766670, -0.961994506161307330, -0.962008158398862000, -0.962021808231396050, -0.962035455658875600, +-0.962049100681266480, -0.962062743298534580, -0.962076383510645840, -0.962090021317566380, -0.962103656719261680, -0.962117289715697770, -0.962130920306840660, -0.962144548492656290, +-0.962158174273110460, -0.962171797648169290, -0.962185418617798600, -0.962199037181964310, -0.962212653340632770, -0.962226267093769240, -0.962239878441340070, -0.962253487383311290, +-0.962267093919648710, -0.962280698050318460, -0.962294299775286580, -0.962307899094518860, -0.962321496007981340, -0.962335090515640030, -0.962348682617460980, -0.962362272313410320, +-0.962375859603453950, -0.962389444487557920, -0.962403026965688250, -0.962416607037811290, -0.962430184703892520, -0.962443759963898420, -0.962457332817794780, -0.962470903265547850, +-0.962484471307123670, -0.962498036942488590, -0.962511600171608080, -0.962525160994448630, -0.962538719410976350, -0.962552275421157180, -0.962565829024957350, -0.962579380222342910, +-0.962592929013280090, -0.962606475397734920, -0.962620019375673540, -0.962633560947062320, -0.962647100111867050, -0.962660636870053990, -0.962674171221589270, -0.962687703166439150, +-0.962701232704570090, -0.962714759835947680, -0.962728284560538380, -0.962741806878308350, -0.962755326789223710, -0.962768844293250940, -0.962782359390355950, -0.962795872080504990, +-0.962809382363664420, -0.962822890239800500, -0.962836395708879470, -0.962849898770867240, -0.962863399425730290, -0.962876897673434760, -0.962890393513947120, -0.962903886947233610, +-0.962917377973260160, -0.962930866591993340, -0.962944352803399290, -0.962957836607444380, -0.962971318004094970, -0.962984796993317070, -0.962998273575077390, -0.963011747749341840, +-0.963025219516077000, -0.963038688875249350, -0.963052155826824800, -0.963065620370769810, -0.963079082507050770, -0.963092542235634010, -0.963105999556485900, -0.963119454469573030, +-0.963132906974861310, -0.963146357072317330, -0.963159804761907430, -0.963173250043597990, -0.963186692917355480, -0.963200133383146140, -0.963213571440936560, -0.963227007090692980, +-0.963240440332382210, -0.963253871165970050, -0.963267299591423210, -0.963280725608708140, -0.963294149217791330, -0.963307570418639010, -0.963320989211218110, -0.963334405595494440, +-0.963347819571434780, -0.963361231139005510, -0.963374640298173210, -0.963388047048904350, -0.963401451391165400, -0.963414853324922720, -0.963428252850142890, -0.963441649966792490, +-0.963455044674838220, -0.963468436974246110, -0.963481826864982850, -0.963495214347015020, -0.963508599420309200, -0.963521982084832200, -0.963535362340549820, -0.963548740187429200, +-0.963562115625436590, -0.963575488654538790, -0.963588859274702280, -0.963602227485893530, -0.963615593288079220, -0.963628956681226060, -0.963642317665300400, -0.963655676240269150, +-0.963669032406098580, -0.963682386162755370, -0.963695737510206210, -0.963709086448417680, -0.963722432977356600, -0.963735777096989320, -0.963749118807282650, -0.963762458108203050, +-0.963775794999717330, -0.963789129481792180, -0.963802461554394200, -0.963815791217490060, -0.963829118471046350, -0.963842443315029880, -0.963855765749407680, -0.963869085774145650, +-0.963882403389211050, -0.963895718594570350, -0.963909031390190350, -0.963922341776037860, -0.963935649752079680, -0.963948955318282060, -0.963962258474612140, -0.963975559221036620, +-0.963988857557522170, -0.964002153484035620, -0.964015447000543650, -0.964028738107012950, -0.964042026803410560, -0.964055313089703270, -0.964068596965857450, -0.964081878431840230, +-0.964095157487618200, -0.964108434133158280, -0.964121708368427370, -0.964134980193392390, -0.964148249608019700, -0.964161516612276340, -0.964174781206129320, -0.964188043389545220, +-0.964201303162491090, -0.964214560524933710, -0.964227815476839890, -0.964241068018176550, -0.964254318148910720, -0.964267565869008860, -0.964280811178438110, -0.964294054077165400, +-0.964307294565157510, -0.964320532642381380, -0.964333768308804130, -0.964347001564392240, -0.964360232409112840, -0.964373460842932960, -0.964386686865819300, -0.964399910477738990, +-0.964413131678658830, -0.964426350468545970, -0.964439566847367090, -0.964452780815089340, -0.964465992371679960, -0.964479201517105310, -0.964492408251332640, -0.964505612574328870, +-0.964518814486061250, -0.964532013986496680, -0.964545211075601870, -0.964558405753344060, -0.964571598019690280, -0.964584787874607440, -0.964597975318062680, -0.964611160350022920, +-0.964624342970455300, -0.964637523179326830, -0.964650700976604550, -0.964663876362255700, -0.964677049336246980, -0.964690219898545640, -0.964703388049118700, -0.964716553787933310, +-0.964729717114956590, -0.964742878030155790, -0.964756036533497510, -0.964769192624949200, -0.964782346304477790, -0.964795497572050630, -0.964808646427634750, -0.964821792871197180, +-0.964834936902705160, -0.964848078522125840, -0.964861217729426460, -0.964874354524573820, -0.964887488907535400, -0.964900620878278100, -0.964913750436769410, -0.964926877582976240, +-0.964940002316866160, -0.964953124638405770, -0.964966244547562630, -0.964979362044303900, -0.964992477128596700, -0.965005589800408290, -0.965018700059706020, -0.965031807906456930, +-0.965044913340628360, -0.965058016362187690, -0.965071116971101710, -0.965084215167338000, -0.965097310950863820, -0.965110404321646190, -0.965123495279652690, -0.965136583824850680, +-0.965149669957206860, -0.965162753676689020, -0.965175834983264200, -0.965188913876899870, -0.965201990357563160, -0.965215064425221540, -0.965228136079842150, -0.965241205321392570, +-0.965254272149839940, -0.965267336565151850, -0.965280398567295080, -0.965293458156237460, -0.965306515331946110, -0.965319570094388510, -0.965332622443532240, -0.965345672379344100, +-0.965358719901791900, -0.965371765010842760, -0.965384807706464290, -0.965397847988623830, -0.965410885857288740, -0.965423921312426380, -0.965436954354004230, -0.965449984981989750, +-0.965463013196350420, -0.965476038997053480, -0.965489062384066400, -0.965502083357356540, -0.965515101916891600, -0.965528118062638830, -0.965541131794566130, -0.965554143112640210, +-0.965567152016829080, -0.965580158507099990, -0.965593162583420430, -0.965606164245758070, -0.965619163494080280, -0.965632160328354530, -0.965645154748548510, -0.965658146754629690, +-0.965671136346565320, -0.965684123524323090, -0.965697108287870590, -0.965710090637175280, -0.965723070572204860, -0.965736048092926900, -0.965749023199308550, -0.965761995891317730, +-0.965774966168921890, -0.965787934032088620, -0.965800899480785510, -0.965813862514980140, -0.965826823134640190, -0.965839781339733140, -0.965852737130226790, -0.965865690506088500, +-0.965878641467285860, -0.965891590013786660, -0.965904536145558490, -0.965917479862569040, -0.965930421164786110, -0.965943360052176850, -0.965956296524709160, -0.965969230582350740, +-0.965982162225069270, -0.965995091452832470, -0.966008018265607890, -0.966020942663363250, -0.966033864646066220, -0.966046784213684510, -0.966059701366186130, -0.966072616103538230, +-0.966085528425708830, -0.966098438332665620, -0.966111345824376300, -0.966124250900808780, -0.966137153561930530, -0.966150053807709350, -0.966162951638112940, -0.966175847053109220, +-0.966188740052665860, -0.966201630636750690, -0.966214518805331490, -0.966227404558375860, -0.966240287895851810, -0.966253168817727270, -0.966266047323969590, -0.966278923414546800, +-0.966291797089426590, -0.966304668348576980, -0.966317537191965670, -0.966330403619560800, -0.966343267631329610, -0.966356129227240350, -0.966368988407260710, -0.966381845171358610, +-0.966394699519501850, -0.966407551451658350, -0.966420400967796020, -0.966433248067882670, -0.966446092751886420, -0.966458935019774760, -0.966471774871515700, -0.966484612307077270, +-0.966497447326427280, -0.966510279929533640, -0.966523110116364490, -0.966535937886887410, -0.966548763241070530, -0.966561586178881660, -0.966574406700288820, -0.966587224805259940, +-0.966600040493763140, -0.966612853765766110, -0.966625664621237000, -0.966638473060143940, -0.966651279082454410, -0.966664082688136750, -0.966676883877158890, -0.966689682649488850, +-0.966702479005094540, -0.966715272943944330, -0.966728064466005680, -0.966740853571246840, -0.966753640259635840, -0.966766424531140810, -0.966779206385729670, -0.966791985823370560, +-0.966804762844031380, -0.966817537447680400, -0.966830309634285510, -0.966843079403815200, -0.966855846756236810, -0.966868611691518940, -0.966881374209629390, -0.966894134310536500, +-0.966906891994208540, -0.966919647260613080, -0.966932400109718480, -0.966945150541492880, -0.966957898555904420, -0.966970644152921220, -0.966983387332511430, -0.966996128094643080, +-0.967008866439284520, -0.967021602366403780, -0.967034335875969210, -0.967047066967948620, -0.967059795642310260, -0.967072521899022490, -0.967085245738053430, -0.967097967159371240, +-0.967110686162944380, -0.967123402748740530, -0.967136116916728290, -0.967148828666875680, -0.967161537999150940, -0.967174244913522440, -0.967186949409958310, -0.967199651488426790, +-0.967212351148896140, -0.967225048391334830, -0.967237743215710650, -0.967250435621992200, -0.967263125610147600, -0.967275813180145110, -0.967288498331953180, -0.967301181065540310, +-0.967313861380874160, -0.967326539277923340, -0.967339214756656180, -0.967351887817041070, -0.967364558459046120, -0.967377226682639810, -0.967389892487790500, -0.967402555874466440, +-0.967415216842636210, -0.967427875392267710, -0.967440531523329430, -0.967453185235789940, -0.967465836529617480, -0.967478485404780320, -0.967491131861247240, -0.967503775898986170, +-0.967516417517965580, -0.967529056718154030, -0.967541693499519790, -0.967554327862031220, -0.967566959805656990, -0.967579589330365250, -0.967592216436124590, -0.967604841122903350, +-0.967617463390670230, -0.967630083239393370, -0.967642700669041120, -0.967655315679582180, -0.967667928270985020, -0.967680538443218110, -0.967693146196249800, -0.967705751530048560, +-0.967718354444582870, -0.967730954939821420, -0.967743553015732450, -0.967756148672284660, -0.967768741909446510, -0.967781332727186470, -0.967793921125473130, -0.967806507104275290, +-0.967819090663560870, -0.967831671803298770, -0.967844250523457350, -0.967856826824005420, -0.967869400704911450, -0.967881972166144130, -0.967894541207671710, -0.967907107829462990, +-0.967919672031486320, -0.967932233813710630, -0.967944793176104270, -0.967957350118636040, -0.967969904641274300, -0.967982456743987860, -0.967995006426745520, -0.968007553689515410, +-0.968020098532266450, -0.968032640954967220, -0.968045180957586400, -0.968057718540092590, -0.968070253702454700, -0.968082786444640960, -0.968095316766620310, -0.968107844668361310, +-0.968120370149832770, -0.968132893211003260, -0.968145413851841500, -0.968157932072316260, -0.968170447872396140, -0.968182961252050170, -0.968195472211246580, -0.968207980749954180, +-0.968220486868141990, -0.968232990565778500, -0.968245491842832600, -0.968257990699273100, -0.968270487135068470, -0.968282981150187630, -0.968295472744599260, -0.968307961918272290, +-0.968320448671175390, -0.968332933003277270, -0.968345414914546950, -0.968357894404953010, -0.968370371474464360, -0.968382846123050030, -0.968395318350678380, -0.968407788157318430, +-0.968420255542938980, -0.968432720507508950, -0.968445183050997250, -0.968457643173372460, -0.968470100874603500, -0.968482556154659280, -0.968495009013508710, -0.968507459451120600, +-0.968519907467463750, -0.968532353062507290, -0.968544796236219920, -0.968557236988570440, -0.968569675319528200, -0.968582111229061570, -0.968594544717139570, -0.968606975783731230, +-0.968619404428805450, -0.968631830652331270, -0.968644254454277600, -0.968656675834613120, -0.968669094793306980, -0.968681511330328090, -0.968693925445645370, -0.968706337139227940, +-0.968718746411044500, -0.968731153261064290, -0.968743557689256240, -0.968755959695589470, -0.968768359280032580, -0.968780756442554900, -0.968793151183125150, -0.968805543501712660, +-0.968817933398286260, -0.968830320872815180, -0.968842705925268220, -0.968855088555614420, -0.968867468763822900, -0.968879846549862700, -0.968892221913702830, -0.968904594855312550, +-0.968916965374660650, -0.968929333471716390, -0.968941699146449010, -0.968954062398827200, -0.968966423228820210, -0.968978781636397170, -0.968991137621527110, -0.969003491184179280, +-0.969015842324322920, -0.969028191041926720, -0.969040537336960050, -0.969052881209392040, -0.969065222659191820, -0.969077561686328530, -0.969089898290771410, -0.969102232472489500, +-0.969114564231452040, -0.969126893567628040, -0.969139220480987220, -0.969151544971498020, -0.969163867039129930, -0.969176186683852190, -0.969188503905634050, -0.969200818704444860, +-0.969213131080253310, -0.969225441033028990, -0.969237748562741140, -0.969250053669358790, -0.969262356352851410, -0.969274656613188010, -0.969286954450338080, -0.969299249864270740, +-0.969311542854955350, -0.969323833422361170, -0.969336121566457320, -0.969348407287213050, -0.969360690584597840, -0.969372971458580920, -0.969385249909131550, -0.969397525936219310, +-0.969409799539812990, -0.969422070719882180, -0.969434339476396120, -0.969446605809324290, -0.969458869718635930, -0.969471131204300400, -0.969483390266287050, -0.969495646904565240, +-0.969507901119104450, -0.969520152909873810, -0.969532402276842680, -0.969544649219980630, -0.969556893739256910, -0.969569135834640990, -0.969581375506102460, -0.969593612753610220, +-0.969605847577133970, -0.969618079976643070, -0.969630309952106970, -0.969642537503495160, -0.969654762630776990, -0.969666985333921930, -0.969679205612899330, -0.969691423467679000, +-0.969703638898229860, -0.969715851904521590, -0.969728062486523770, -0.969740270644205760, -0.969752476377537030, -0.969764679686487390, -0.969776880571025850, -0.969789079031122100, +-0.969801275066745630, -0.969813468677865890, -0.969825659864452570, -0.969837848626475150, -0.969850034963902980, -0.969862218876705870, -0.969874400364853060, -0.969886579428314580, +-0.969898756067059330, -0.969910930281057350, -0.969923102070277880, -0.969935271434690720, -0.969947438374265670, -0.969959602888971760, -0.969971764978778790, -0.969983924643656460, +-0.969996081883574330, -0.970008236698501890, -0.970020389088408930, -0.970032539053265030, -0.970044686593039770, -0.970056831707702850, -0.970068974397223950, -0.970081114661572430, +-0.970093252500718210, -0.970105387914630750, -0.970117520903279850, -0.970129651466635210, -0.970141779604666520, -0.970153905317343360, -0.970166028604635300, -0.970178149466512150, +-0.970190267902943710, -0.970202383913899570, -0.970214497499349400, -0.970226608659263130, -0.970238717393610230, -0.970250823702360820, -0.970262927585484050, -0.970275029042950040, +-0.970287128074728500, -0.970299224680789000, -0.970311318861101560, -0.970323410615635980, -0.970335499944361630, -0.970347586847248640, -0.970359671324266590, -0.970371753375385390, +-0.970383833000574740, -0.970395910199804650, -0.970407984973044700, -0.970420057320264710, -0.970432127241434910, -0.970444194736524550, -0.970456259805503650, -0.970468322448342140, +-0.970480382665009910, -0.970492440455476670, -0.970504495819712430, -0.970516548757686890, -0.970528599269369850, -0.970540647354731440, -0.970552693013741360, -0.970564736246369520, +-0.970576777052585830, -0.970588815432360200, -0.970600851385662540, -0.970612884912462780, -0.970624916012731040, -0.970636944686436800, -0.970648970933550180, -0.970660994754041110, +-0.970673016147879490, -0.970685035115035680, -0.970697051655479040, -0.970709065769179700, -0.970721077456107690, -0.970733086716233040, -0.970745093549525650, -0.970757097955955550, +-0.970769099935492760, -0.970781099488107090, -0.970793096613768780, -0.970805091312447850, -0.970817083584114120, -0.970829073428737590, -0.970841060846288300, -0.970853045836736480, +-0.970865028400052180, -0.970877008536205180, -0.970888986245165620, -0.970900961526903530, -0.970912934381389150, -0.970924904808592390, -0.970936872808483290, -0.970948838381032080, +-0.970960801526208780, -0.970972762243983430, -0.970984720534326500, -0.970996676397207440, -0.971008629832596730, -0.971020580840464500, -0.971032529420780670, -0.971044475573515700, +-0.971056419298639620, -0.971068360596122340, -0.971080299465934100, -0.971092235908045160, -0.971104169922425650, -0.971116101509045700, -0.971128030667875450, -0.971139957398885150, +-0.971151881702045030, -0.971163803577325350, -0.971175723024695900, -0.971187640044127280, -0.971199554635589490, -0.971211466799052790, -0.971223376534487430, -0.971235283841863860, +-0.971247188721151790, -0.971259091172321900, -0.971270991195344210, -0.971282888790188980, -0.971294783956826560, -0.971306676695227190, -0.971318567005361120, -0.971330454887198710, +-0.971342340340710320, -0.971354223365865850, -0.971366103962635900, -0.971377982130990580, -0.971389857870900380, -0.971401731182335530, -0.971413602065266500, -0.971425470519663330, +-0.971437336545496470, -0.971449200142736170, -0.971461061311353010, -0.971472920051317130, -0.971484776362598890, -0.971496630245168860, -0.971508481698997170, -0.971520330724054190, +-0.971532177320310720, -0.971544021487736550, -0.971555863226302390, -0.971567702535978460, -0.971579539416735360, -0.971591373868543660, -0.971603205891373170, -0.971615035485194790, +-0.971626862649978770, -0.971638687385695590, -0.971650509692315700, -0.971662329569809580, -0.971674147018147580, -0.971685962037300180, -0.971697774627237940, -0.971709584787931460, +-0.971721392519350860, -0.971733197821466720, -0.971745000694249630, -0.971756801137669930, -0.971768599151698330, -0.971780394736305400, -0.971792187891461270, -0.971803978617136740, +-0.971815766913302180, -0.971827552779928270, -0.971839336216985370, -0.971851117224444280, -0.971862895802275250, -0.971874671950449080, -0.971886445668936450, -0.971898216957707390, +-0.971909985816732940, -0.971921752245983430, -0.971933516245429560, -0.971945277815041810, -0.971957036954791190, -0.971968793664647720, -0.971980547944582330, -0.971992299794565470, +-0.972004049214567960, -0.972015796204560250, -0.972027540764513140, -0.972039282894397120, -0.972051022594182860, -0.972062759863841270, -0.972074494703342620, -0.972086227112657690, +-0.972097957091757170, -0.972109684640611870, -0.972121409759192260, -0.972133132447469350, -0.972144852705413400, -0.972156570532995310, -0.972168285930185780, -0.972179998896955610, +-0.972191709433275380, -0.972203417539115880, -0.972215123214447920, -0.972226826459242080, -0.972238527273469160, -0.972250225657100180, -0.972261921610105380, -0.972273615132455800, +-0.972285306224122130, -0.972296994885075260, -0.972308681115286120, -0.972320364914725070, -0.972332046283363010, -0.972343725221170960, -0.972355401728119520, -0.972367075804179580, +-0.972378747449321960, -0.972390416663517550, -0.972402083446736950, -0.972413747798951290, -0.972425409720131360, -0.972437069210247750, -0.972448726269271480, -0.972460380897173350, +-0.972472033093924270, -0.972483682859495160, -0.972495330193857030, -0.972506975096980360, -0.972518617568836290, -0.972530257609395600, -0.972541895218629330, -0.972553530396508270, +-0.972565163143003450, -0.972576793458085680, -0.972588421341725850, -0.972600046793895330, -0.972611669814564370, -0.972623290403704320, -0.972634908561285980, -0.972646524287280380, +-0.972658137581658530, -0.972669748444391470, -0.972681356875449880, -0.972692962874804780, -0.972704566442427420, -0.972716167578288600, -0.972727766282359350, -0.972739362554610690, +-0.972750956395013630, -0.972762547803539210, -0.972774136780158560, -0.972785723324842370, -0.972797307437561880, -0.972808889118288110, -0.972820468366992210, -0.972832045183645080, +-0.972843619568217970, -0.972855191520681670, -0.972866761041007440, -0.972878328129166300, -0.972889892785129270, -0.972901455008867490, -0.972913014800352190, -0.972924572159554300, +-0.972936127086444950, -0.972947679580995260, -0.972959229643176600, -0.972970777272959660, -0.972982322470315800, -0.972993865235216140, -0.973005405567631820, -0.973016943467534200, +-0.973028478934893970, -0.973040011969682590, -0.973051542571871210, -0.973063070741430950, -0.973074596478332940, -0.973086119782548440, -0.973097640654048690, -0.973109159092804820, +-0.973120675098788080, -0.973132188671969930, -0.973143699812320960, -0.973155208519812850, -0.973166714794416630, -0.973178218636103650, -0.973189720044845160, -0.973201219020612520, +-0.973212715563376740, -0.973224209673109080, -0.973235701349780880, -0.973247190593363510, -0.973258677403828100, -0.973270161781146000, -0.973281643725288470, -0.973293123236226850, +-0.973304600313932620, -0.973316074958376800, -0.973327547169530630, -0.973339016947365690, -0.973350484291853220, -0.973361949202964480, -0.973373411680671040, -0.973384871724943920, +-0.973396329335754600, -0.973407784513074530, -0.973419237256874960, -0.973430687567127250, -0.973442135443802870, -0.973453580886873170, -0.973465023896309510, -0.973476464472083470, +-0.973487902614166070, -0.973499338322528880, -0.973510771597143390, -0.973522202437980930, -0.973533630845012990, -0.973545056818211130, -0.973556480357546490, -0.973567901462990660, +-0.973579320134515090, -0.973590736372091150, -0.973602150175690410, -0.973613561545284220, -0.973624970480844290, -0.973636376982341730, -0.973647781049748360, -0.973659182683035750, +-0.973670581882174920, -0.973681978647137680, -0.973693372977895490, -0.973704764874419810, -0.973716154336682460, -0.973727541364654560, -0.973738925958307800, -0.973750308117613650, +-0.973761687842543800, -0.973773065133069720, -0.973784439989162980, -0.973795812410795160, -0.973807182397937730, -0.973818549950562380, -0.973829915068640920, -0.973841277752144350, +-0.973852638001044710, -0.973863995815313350, -0.973875351194922080, -0.973886704139842460, -0.973898054650046310, -0.973909402725504750, -0.973920748366189690, -0.973932091572072720, +-0.973943432343125530, -0.973954770679319790, -0.973966106580627210, -0.973977440047019250, -0.973988771078467710, -0.974000099674944500, -0.974011425836420750, -0.974022749562868500, +-0.974034070854259300, -0.974045389710565090, -0.974056706131757210, -0.974068020117807910, -0.974079331668688320, -0.974090640784370350, -0.974101947464825810, -0.974113251710026380, +-0.974124553519943870, -0.974135852894549960, -0.974147149833816450, -0.974158444337715030, -0.974169736406217620, -0.974181026039295790, -0.974192313236921350, -0.974203597999066080, +-0.974214880325701920, -0.974226160216800530, -0.974237437672333950, -0.974248712692273530, -0.974259985276591300, -0.974271255425259160, -0.974282523138248810, -0.974293788415532270, +-0.974305051257081220, -0.974316311662867470, -0.974327569632863040, -0.974338825167039620, -0.974350078265369350, -0.974361328927823680, -0.974372577154374750, -0.974383822944994260, +-0.974395066299654330, -0.974406307218326880, -0.974417545700983490, -0.974428781747596170, -0.974440015358136960, -0.974451246532577750, -0.974462475270890360, -0.974473701573046800, +-0.974484925439018990, -0.974496146868778830, -0.974507365862298360, -0.974518582419549580, -0.974529796540504200, -0.974541008225134340, -0.974552217473412030, -0.974563424285309070, +-0.974574628660797580, -0.974585830599849710, -0.974597030102437030, -0.974608227168531900, -0.974619421798106120, -0.974630613991131820, -0.974641803747580910, -0.974652991067425530, +-0.974664175950637700, -0.974675358397189440, -0.974686538407052880, -0.974697715980199940, -0.974708891116602530, -0.974720063816233000, -0.974731234079063370, -0.974742401905065560, +-0.974753567294211920, -0.974764730246474250, -0.974775890761824690, -0.974787048840235480, -0.974798204481678530, -0.974809357686126200, -0.974820508453550390, -0.974831656783923250, +-0.974842802677217120, -0.974853946133404040, -0.974865087152456010, -0.974876225734345180, -0.974887361879043900, -0.974898495586524080, -0.974909626856758080, -0.974920755689718250, +-0.974931882085376290, -0.974943006043704650, -0.974954127564675480, -0.974965246648261010, -0.974976363294433380, -0.974987477503164830, -0.974998589274427620, -0.975009698608193980, +-0.975020805504436040, -0.975031909963126280, -0.975043011984236600, -0.975054111567739360, -0.975065208713606800, -0.975076303421811290, -0.975087395692325170, -0.975098485525120460, +-0.975109572920169420, -0.975120657877444510, -0.975131740396917860, -0.975142820478561930, -0.975153898122348980, -0.975164973328251250, -0.975176046096241090, -0.975187116426290860, +-0.975198184318373020, -0.975209249772459490, -0.975220312788522840, -0.975231373366535430, -0.975242431506469500, -0.975253487208297630, -0.975264540471992180, -0.975275591297525170, +-0.975286639684869170, -0.975297685633996550, -0.975308729144879760, -0.975319770217491170, -0.975330808851803120, -0.975341845047787980, -0.975352878805418320, -0.975363910124666720, +-0.975374939005504980, -0.975385965447906010, -0.975396989451842170, -0.975408011017285690, -0.975419030144209280, -0.975430046832585500, -0.975441061082386480, -0.975452072893584710, +-0.975463082266152750, -0.975474089200063070, -0.975485093695288240, -0.975496095751800630, -0.975507095369572810, -0.975518092548577240, -0.975529087288786620, -0.975540079590173080, +-0.975551069452709420, -0.975562056876367990, -0.975573041861121480, -0.975584024406942360, -0.975595004513803320, -0.975605982181676600, -0.975616957410535000, -0.975627930200350880, +-0.975638900551097030, -0.975649868462745930, -0.975660833935270030, -0.975671796968642150, -0.975682757562834850, -0.975693715717820490, -0.975704671433572200, -0.975715624710061900, +-0.975726575547262610, -0.975737523945146900, -0.975748469903687350, -0.975759413422856770, -0.975770354502627500, -0.975781293142972350, -0.975792229343864000, -0.975803163105275040, +-0.975814094427178260, -0.975825023309546120, -0.975835949752351440, -0.975846873755567000, -0.975857795319165280, -0.975868714443119290, -0.975879631127401280, -0.975890545371984160, +-0.975901457176840850, -0.975912366541943690, -0.975923273467265710, -0.975934177952779810, -0.975945079998458140, -0.975955979604273830, -0.975966876770199670, -0.975977771496208120, +-0.975988663782272340, -0.975999553628364770, -0.976010441034458330, -0.976021326000525820, -0.976032208526540160, -0.976043088612473800, -0.976053966258299770, -0.976064841463990750, +-0.976075714229519660, -0.976086584554859300, -0.976097452439982690, -0.976108317884862190, -0.976119180889470920, -0.976130041453781680, -0.976140899577767400, -0.976151755261400860, +-0.976162608504654860, -0.976173459307502430, -0.976184307669916260, -0.976195153591869590, -0.976205997073334770, -0.976216838114285060, -0.976227676714693240, -0.976238512874532120, +-0.976249346593774820, -0.976260177872394270, -0.976271006710363150, -0.976281833107654480, -0.976292657064241290, -0.976303478580096360, -0.976314297655192730, -0.976325114289503420, +-0.976335928483001330, -0.976346740235659370, -0.976357549547450580, -0.976368356418348180, -0.976379160848324660, -0.976389962837353130, -0.976400762385406850, -0.976411559492458610, +-0.976422354158481550, -0.976433146383448580, -0.976443936167332600, -0.976454723510106870, -0.976465508411744400, -0.976476290872217990, -0.976487070891501000, -0.976497848469566220, +-0.976508623606386910, -0.976519396301935960, -0.976530166556186740, -0.976540934369111930, -0.976551699740684790, -0.976562462670878430, -0.976573223159665880, -0.976583981207020280, +-0.976594736812914870, -0.976605489977322440, -0.976616240700216350, -0.976626988981569630, -0.976637734821355410, -0.976648478219546810, -0.976659219176117090, -0.976669957691039370, +-0.976680693764286680, -0.976691427395832480, -0.976702158585649460, -0.976712887333711090, -0.976723613639990500, -0.976734337504460930, -0.976745058927095400, -0.976755777907867500, +-0.976766494446749900, -0.976777208543716080, -0.976787920198739280, -0.976798629411792740, -0.976809336182849490, -0.976820040511882980, -0.976830742398866360, -0.976841441843772860, +-0.976852138846575960, -0.976862833407248550, -0.976873525525764010, -0.976884215202095670, -0.976894902436216790, -0.976905587228100720, -0.976916269577720820, -0.976926949485049990, +-0.976937626950061920, -0.976948301972729640, -0.976958974553026720, -0.976969644690926290, -0.976980312386401820, -0.976990977639426550, -0.977001640449973730, -0.977012300818016930, +-0.977022958743529510, -0.977033614226484600, -0.977044267266855560, -0.977054917864615850, -0.977065566019738930, -0.977076211732198160, -0.977086855001966790, -0.977097495829018170, +-0.977108134213325870, -0.977118770154863260, -0.977129403653603680, -0.977140034709520710, -0.977150663322587490, -0.977161289492777700, -0.977171913220064690, -0.977182534504422050, +-0.977193153345822910, -0.977203769744240840, -0.977214383699649410, -0.977224995212022000, -0.977235604281332270, -0.977246210907553370, -0.977256815090658870, -0.977267416830622460, +-0.977278016127417380, -0.977288612981017320, -0.977299207391395750, -0.977309799358526130, -0.977320388882382040, -0.977330975962936940, -0.977341560600164640, -0.977352142794038260, +-0.977362722544531380, -0.977373299851617800, -0.977383874715270990, -0.977394447135464530, -0.977405017112172090, -0.977415584645366930, -0.977426149735022730, -0.977436712381113180, +-0.977447272583611970, -0.977457830342492450, -0.977468385657728420, -0.977478938529293460, -0.977489488957161030, -0.977500036941305160, -0.977510582481698980, -0.977521125578316390, +-0.977531666231130970, -0.977542204440116300, -0.977552740205246180, -0.977563273526494410, -0.977573804403834230, -0.977584332837239560, -0.977594858826684070, -0.977605382372141450, +-0.977615903473585400, -0.977626422130989490, -0.977636938344327630, -0.977647452113573400, -0.977657963438700480, -0.977668472319682900, -0.977678978756493900, -0.977689482749107500, +-0.977699984297497380, -0.977710483401637240, -0.977720980061501210, -0.977731474277062420, -0.977741966048295000, -0.977752455375172640, -0.977762942257669240, -0.977773426695758400, +-0.977783908689414010, -0.977794388238609760, -0.977804865343319670, -0.977815340003517330, -0.977825812219176860, -0.977836281990271730, -0.977846749316775840, -0.977857214198663010, +-0.977867676635907230, -0.977878136628482440, -0.977888594176362090, -0.977899049279520320, -0.977909501937930910, -0.977919952151567680, -0.977930399920404650, -0.977940845244415600, +-0.977951288123574350, -0.977961728557855010, -0.977972166547231290, -0.977982602091677310, -0.977993035191166650, -0.978003465845673440, -0.978013894055171580, -0.978024319819634890, +-0.978034743139037490, -0.978045164013353400, -0.978055582442556190, -0.978065998426620010, -0.978076411965518870, -0.978086823059226670, -0.978097231707717450, -0.978107637910965220, +-0.978118041668943780, -0.978128442981627270, -0.978138841848989800, -0.978149238271005080, -0.978159632247647350, -0.978170023778890400, -0.978180412864708470, -0.978190799505075480, +-0.978201183699965670, -0.978211565449352730, -0.978221944753210890, -0.978232321611514190, -0.978242696024236640, -0.978253067991352370, -0.978263437512835400, -0.978273804588659870, +-0.978284169218799900, -0.978294531403229640, -0.978304891141922760, -0.978315248434853850, -0.978325603281996690, -0.978335955683325540, -0.978346305638814530, -0.978356653148437890, +-0.978366998212169440, -0.978377340829983510, -0.978387681001854250, -0.978398018727755780, -0.978408354007662240, -0.978418686841547870, -0.978429017229386800, -0.978439345171153050, +-0.978449670666821090, -0.978459993716365050, -0.978470314319758840, -0.978480632476976920, -0.978490948187993310, -0.978501261452782380, -0.978511572271318570, -0.978521880643575480, +-0.978532186569527780, -0.978542490049149620, -0.978552791082415220, -0.978563089669298840, -0.978573385809774820, -0.978583679503817190, -0.978593970751400420, -0.978604259552498750, +-0.978614545907086630, -0.978624829815137880, -0.978635111276627170, -0.978645390291528640, -0.978655666859816530, -0.978665940981465420, -0.978676212656449550, -0.978686481884742940, +-0.978696748666320170, -0.978707013001155480, -0.978717274889223330, -0.978727534330497970, -0.978737791324953750, -0.978748045872565030, -0.978758297973306270, -0.978768547627151930, +-0.978778794834076040, -0.978789039594053060, -0.978799281907057670, -0.978809521773063910, -0.978819759192046450, -0.978829994163979640, -0.978840226688837860, -0.978850456766595320, +-0.978860684397226730, -0.978870909580706440, -0.978881132317008910, -0.978891352606108490, -0.978901570447979650, -0.978911785842596970, -0.978921998789935020, -0.978932209289967830, +-0.978942417342670070, -0.978952622948016330, -0.978962826105981070, -0.978973026816538750, -0.978983225079663950, -0.978993420895331030, -0.979003614263514450, -0.979013805184188900, +-0.979023993657328730, -0.979034179682908730, -0.979044363260903160, -0.979054544391286700, -0.979064723074033920, -0.979074899309119400, -0.979085073096517710, -0.979095244436203220, +-0.979105413328150490, -0.979115579772334320, -0.979125743768729300, -0.979135905317309980, -0.979146064418050740, -0.979156221070926260, -0.979166375275911330, -0.979176527032980410, +-0.979186676342108210, -0.979196823203269400, -0.979206967616438440, -0.979217109581590030, -0.979227249098698850, -0.979237386167739810, -0.979247520788687040, -0.979257652961515570, +-0.979267782686199850, -0.979277909962714690, -0.979288034791034880, -0.979298157171135000, -0.979308277102989620, -0.979318394586573550, -0.979328509621861460, -0.979338622208828170, +-0.979348732347448350, -0.979358840037696580, -0.979368945279547760, -0.979379048072976600, -0.979389148417957990, -0.979399246314466290, -0.979409341762476520, -0.979419434761963360, +-0.979429525312901620, -0.979439613415266090, -0.979449699069031790, -0.979459782274172960, -0.979469863030664630, -0.979479941338481710, -0.979490017197598980, -0.979500090607991150, +-0.979510161569633110, -0.979520230082499670, -0.979530296146565620, -0.979540359761805980, -0.979550420928195330, -0.979560479645708580, -0.979570535914320750, -0.979580589734006410, +-0.979590641104740700, -0.979600690026498520, -0.979610736499254450, -0.979620780522983630, -0.979630822097660730, -0.979640861223260880, -0.979650897899758790, -0.979660932127129460, +-0.979670963905347910, -0.979680993234388840, -0.979691020114227260, -0.979701044544838420, -0.979711066526196770, -0.979721086058277350, -0.979731103141055270, -0.979741117774505450, +-0.979751129958603030, -0.979761139693322680, -0.979771146978639320, -0.979781151814528180, -0.979791154200964190, -0.979801154137922240, -0.979811151625377460, -0.979821146663304780, +-0.979831139251679200, -0.979841129390475850, -0.979851117079669760, -0.979861102319235730, -0.979871085109149000, -0.979881065449384470, -0.979891043339917390, -0.979901018780722670, +-0.979910991771775540, -0.979920962313050700, -0.979930930404523610, -0.979940896046169070, -0.979950859237962320, -0.979960819979878380, -0.979970778271892500, -0.979980734113979570, +-0.979990687506114840, -0.980000638448273560, -0.980010586940430530, -0.980020532982561090, -0.980030476574640260, -0.980040417716643190, -0.980050356408545100, -0.980060292650321350, +-0.980070226441946630, -0.980080157783396410, -0.980090086674645810, -0.980100013115669850, -0.980109937106444010, -0.980119858646943290, -0.980129777737142830, -0.980139694377018090, +-0.980149608566544210, -0.980159520305696090, -0.980169429594449190, -0.980179336432778770, -0.980189240820659950, -0.980199142758068080, -0.980209042244978400, -0.980218939281366050, +-0.980228833867206380, -0.980238726002474530, -0.980248615687145940, -0.980258502921195760, -0.980268387704599450, -0.980278270037332030, -0.980288149919368970, -0.980298027350685610, +-0.980307902331257200, -0.980317774861058980, -0.980327644940066300, -0.980337512568254520, -0.980347377745598990, -0.980357240472075060, -0.980367100747657980, -0.980376958572323100, +-0.980386813946045880, -0.980396666868801560, -0.980406517340565610, -0.980416365361313270, -0.980426210931020110, -0.980436054049661390, -0.980445894717212550, -0.980455732933649180, +-0.980465568698946300, -0.980475402013079480, -0.980485232876024180, -0.980495061287755760, -0.980504887248249690, -0.980514710757481530, -0.980524531815426540, -0.980534350422060160, +-0.980544166577357880, -0.980553980281295150, -0.980563791533847540, -0.980573600334990410, -0.980583406684699340, -0.980593210582949680, -0.980603012029717220, -0.980612811024977100, +-0.980622607568704900, -0.980632401660876170, -0.980642193301466400, -0.980651982490451160, -0.980661769227806230, -0.980671553513506660, -0.980681335347528100, -0.980691114729846270, +-0.980700891660436720, -0.980710666139274930, -0.980720438166336360, -0.980730207741596800, -0.980739974865031730, -0.980749739536616820, -0.980759501756327420, -0.980769261524139350, +-0.980779018840028050, -0.980788773703969220, -0.980798526115938430, -0.980808276075911480, -0.980818023583863720, -0.980827768639770840, -0.980837511243608630, -0.980847251395352560, +-0.980856989094978430, -0.980866724342461800, -0.980876457137778380, -0.980886187480903730, -0.980895915371813640, -0.980905640810484040, -0.980915363796890040, -0.980925084331007670, +-0.980934802412812610, -0.980944518042280560, -0.980954231219387410, -0.980963941944108410, -0.980973650216419580, -0.980983356036296720, -0.980993059403715400, -0.981002760318651410, +-0.981012458781080570, -0.981022154790978540, -0.981031848348321130, -0.981041539453084140, -0.981051228105243480, -0.981060914304774490, -0.981070598051653310, -0.981080279345855620, +-0.981089958187357110, -0.981099634576133920, -0.981109308512161600, -0.981118979995415970, -0.981128649025872820, -0.981138315603508170, -0.981147979728297590, -0.981157641400217110, +-0.981167300619242510, -0.981176957385349710, -0.981186611698514510, -0.981196263558712920, -0.981205912965920520, -0.981215559920113330, -0.981225204421267260, -0.981234846469358210, +-0.981244486064361990, -0.981254123206254710, -0.981263757895011970, -0.981273390130609880, -0.981283019913024250, -0.981292647242231090, -0.981302272118206310, -0.981311894540925820, +-0.981321514510365640, -0.981331132026501680, -0.981340747089310070, -0.981350359698766380, -0.981359969854846860, -0.981369577557527300, -0.981379182806783930, -0.981388785602592460, +-0.981398385944929340, -0.981407983833770040, -0.981417579269090680, -0.981427172250867510, -0.981436762779076320, -0.981446350853693250, -0.981455936474694310, -0.981465519642055530, +-0.981475100355753030, -0.981484678615762610, -0.981494254422060840, -0.981503827774623080, -0.981513398673425910, -0.981522967118445220, -0.981532533109657050, -0.981542096647037730, +-0.981551657730562970, -0.981561216360209210, -0.981570772535952260, -0.981580326257768480, -0.981589877525633760, -0.981599426339524460, -0.981608972699416490, -0.981618516605286210, +-0.981628058057109620, -0.981637597054862980, -0.981647133598522180, -0.981656667688063590, -0.981666199323463330, -0.981675728504697530, -0.981685255231742440, -0.981694779504574400, +-0.981704301323169220, -0.981713820687503350, -0.981723337597552810, -0.981732852053294080, -0.981742364054703050, -0.981751873601756200, -0.981761380694429750, -0.981770885332699740, +-0.981780387516542730, -0.981789887245934520, -0.981799384520851580, -0.981808879341270260, -0.981818371707166680, -0.981827861618517210, -0.981837349075298290, -0.981846834077485740, +-0.981856316625056120, -0.981865796717985790, -0.981875274356250880, -0.981884749539827850, -0.981894222268692940, -0.981903692542822500, -0.981913160362192780, -0.981922625726780240, +-0.981932088636561120, -0.981941549091511660, -0.981951007091608430, -0.981960462636827680, -0.981969915727145760, -0.981979366362539130, -0.981988814542984030, -0.981998260268456820, +-0.982007703538933960, -0.982017144354391910, -0.982026582714806920, -0.982036018620155550, -0.982045452070414050, -0.982054883065558990, -0.982064311605566620, -0.982073737690413730, +-0.982083161320076340, -0.982092582494531020, -0.982102001213754240, -0.982111417477722460, -0.982120831286412370, -0.982130242639799870, -0.982139651537861870, -0.982149057980574720, +-0.982158461967915010, -0.982167863499859070, -0.982177262576383490, -0.982186659197464730, -0.982196053363079360, -0.982205445073203840, -0.982214834327814870, -0.982224221126888560, +-0.982233605470401840, -0.982242987358331040, -0.982252366790652750, -0.982261743767343650, -0.982271118288380210, -0.982280490353738880, -0.982289859963396350, -0.982299227117329200, +-0.982308591815513890, -0.982317954057927100, -0.982327313844545520, -0.982336671175345620, -0.982346026050303970, -0.982355378469397470, -0.982364728432602360, -0.982374075939895450, +-0.982383420991253420, -0.982392763586652730, -0.982402103726070170, -0.982411441409482440, -0.982420776636866000, -0.982430109408197640, -0.982439439723454040, -0.982448767582611790, +-0.982458092985647570, -0.982467415932538170, -0.982476736423260280, -0.982486054457790470, -0.982495370036105650, -0.982504683158182400, -0.982513993823997290, -0.982523302033527330, +-0.982532607786749000, -0.982541911083639200, -0.982551211924174830, -0.982560510308332140, -0.982569806236088250, -0.982579099707419860, -0.982588390722303750, -0.982597679280716620, +-0.982606965382635260, -0.982616249028036570, -0.982625530216897140, -0.982634808949193970, -0.982644085224903980, -0.982653359044003530, -0.982662630406469730, -0.982671899312279270, +-0.982681165761409180, -0.982690429753836250, -0.982699691289537160, -0.982708950368488820, -0.982718206990668030, -0.982727461156051810, -0.982736712864616950, -0.982745962116340240, +-0.982755208911198610, -0.982764453249169060, -0.982773695130228280, -0.982782934554353500, -0.982792171521521210, -0.982801406031708400, -0.982810638084892220, -0.982819867681049340, +-0.982829094820156790, -0.982838319502191690, -0.982847541727130620, -0.982856761494950710, -0.982865978805628980, -0.982875193659142220, -0.982884406055467450, -0.982893615994581690, +-0.982902823476461850, -0.982912028501085060, -0.982921231068428320, -0.982930431178468230, -0.982939628831182240, -0.982948824026547040, -0.982958016764539870, -0.982967207045137630, +-0.982976394868317450, -0.982985580234056240, -0.982994763142331030, -0.983003943593118930, -0.983013121586396980, -0.983022297122142170, -0.983031470200331660, -0.983040640820942450, +-0.983049808983951670, -0.983058974689336450, -0.983068137937073700, -0.983077298727140670, -0.983086457059514360, -0.983095612934171800, -0.983104766351090340, -0.983113917310247000, +-0.983123065811618790, -0.983132211855182960, -0.983141355440916520, -0.983150496568796720, -0.983159635238800680, -0.983168771450905530, -0.983177905205088410, -0.983187036501326660, +-0.983196165339597190, -0.983205291719877580, -0.983214415642144510, -0.983223537106375440, -0.983232656112547510, -0.983241772660637840, -0.983250886750624000, -0.983259998382482790, +-0.983269107556191570, -0.983278214271727570, -0.983287318529068030, -0.983296420328190200, -0.983305519669071430, -0.983314616551688720, -0.983323710976019450, -0.983332802942041060, +-0.983341892449730690, -0.983350979499065470, -0.983360064090022750, -0.983369146222579980, -0.983378225896714310, -0.983387303112403190, -0.983396377869623640, -0.983405450168353120, +-0.983414520008569100, -0.983423587390248710, -0.983432652313369290, -0.983441714777908320, -0.983450774783843130, -0.983459832331150860, -0.983468887419809090, -0.983477940049795270, +-0.983486990221086430, -0.983496037933660030, -0.983505083187493630, -0.983514125982564490, -0.983523166318850060, -0.983532204196327810, -0.983541239614974970, -0.983550272574769010, +-0.983559303075687290, -0.983568331117707470, -0.983577356700806700, -0.983586379824962550, -0.983595400490152480, -0.983604418696353950, -0.983613434443544430, -0.983622447731701270, +-0.983631458560801920, -0.983640466930823960, -0.983649472841744750, -0.983658476293541970, -0.983667477286193080, -0.983676475819675430, -0.983685471893966490, -0.983694465509043940, +-0.983703456664885230, -0.983712445361467850, -0.983721431598769350, -0.983730415376767310, -0.983739396695439190, -0.983748375554762690, -0.983757351954715140, -0.983766325895274240, +-0.983775297376417560, -0.983784266398122550, -0.983793232960366910, -0.983802197063128330, -0.983811158706384140, -0.983820117890112030, -0.983829074614289590, -0.983838028878894600, +-0.983846980683904420, -0.983855930029296720, -0.983864876915049310, -0.983873821341139650, -0.983882763307545540, -0.983891702814244540, -0.983900639861214230, -0.983909574448432300, +-0.983918506575876430, -0.983927436243524300, -0.983936363451353710, -0.983945288199342020, -0.983954210487467230, -0.983963130315706810, -0.983972047684038560, -0.983980962592440280, +-0.983989875040889530, -0.983998785029364110, -0.984007692557841710, -0.984016597626300120, -0.984025500234717130, -0.984034400383070220, -0.984043298071337390, -0.984052193299496230, +-0.984061086067524630, -0.984069976375400390, -0.984078864223101310, -0.984087749610604860, -0.984096632537889040, -0.984105513004931760, -0.984114391011710610, -0.984123266558203480, +-0.984132139644388170, -0.984141010270242590, -0.984149878435744420, -0.984158744140871680, -0.984167607385601940, -0.984176468169913220, -0.984185326493783320, -0.984194182357190140, +-0.984203035760111480, -0.984211886702525350, -0.984220735184409330, -0.984229581205741550, -0.984238424766499810, -0.984247265866661890, -0.984256104506205930, -0.984264940685109720, +-0.984273774403351060, -0.984282605660908080, -0.984291434457758680, -0.984300260793880550, -0.984309084669251710, -0.984317906083850170, -0.984326725037653950, -0.984335541530640850, +-0.984344355562789100, -0.984353167134076280, -0.984361976244480520, -0.984370782893979830, -0.984379587082552240, -0.984388388810175540, -0.984397188076827970, -0.984405984882487430, +-0.984414779227131940, -0.984423571110739530, -0.984432360533288310, -0.984441147494755970, -0.984449931995120870, -0.984458714034360920, -0.984467493612454110, -0.984476270729378710, +-0.984485045385112610, -0.984493817579633830, -0.984502587312920510, -0.984511354584950650, -0.984520119395702500, -0.984528881745153960, -0.984537641633283280, -0.984546399060068580, +-0.984555154025487770, -0.984563906529519190, -0.984572656572140770, -0.984581404153330730, -0.984590149273067090, -0.984598891931328210, -0.984607632128091990, -0.984616369863336890, +-0.984625105137040710, -0.984633837949181690, -0.984642568299738170, -0.984651296188688190, -0.984660021616009960, -0.984668744581681740, -0.984677465085681550, -0.984686183127987840, +-0.984694898708578740, -0.984703611827432160, -0.984712322484526670, -0.984721030679840400, -0.984729736413351490, -0.984738439685038270, -0.984747140494878990, -0.984755838842851780, +-0.984764534728935100, -0.984773228153106970, -0.984781919115345740, -0.984790607615629750, -0.984799293653937260, -0.984807977230246490, -0.984816658344535800, -0.984825336996783650, +-0.984834013186967950, -0.984842686915067270, -0.984851358181059840, -0.984860026984924030, -0.984868693326638070, -0.984877357206180640, -0.984886018623529650, -0.984894677578663560, +-0.984903334071560830, -0.984911988102199710, -0.984920639670558650, -0.984929288776616010, -0.984937935420350130, -0.984946579601739480, -0.984955221320762300, -0.984963860577397270, +-0.984972497371622400, -0.984981131703416280, -0.984989763572757360, -0.984998392979623990, -0.985007019923994750, -0.985015644405847880, -0.985024266425161940, -0.985032885981915300, +-0.985041503076086400, -0.985050117707653830, -0.985058729876595930, -0.985067339582891170, -0.985075946826518000, -0.985084551607455120, -0.985093153925680860, -0.985101753781173710, +-0.985110351173912100, -0.985118946103874630, -0.985127538571039740, -0.985136128575386020, -0.985144716116892250, -0.985153301195536350, -0.985161883811297320, -0.985170463964153530, +-0.985179041654083650, -0.985187616881066150, -0.985196189645079600, -0.985204759946102570, -0.985213327784113630, -0.985221893159091480, -0.985230456071014450, -0.985239016519861340, +-0.985247574505610620, -0.985256130028241080, -0.985264683087731190, -0.985273233684059610, -0.985281781817204940, -0.985290327487145730, -0.985298870693860800, -0.985307411437328580, +-0.985315949717527890, -0.985324485534437300, -0.985333018888035480, -0.985341549778301130, -0.985350078205213140, -0.985358604168749760, -0.985367127668889790, -0.985375648705612120, +-0.985384167278895220, -0.985392683388717990, -0.985401197035059130, -0.985409708217897200, -0.985418216937210880, -0.985426723192979080, -0.985435226985180490, -0.985443728313793900, +-0.985452227178797880, -0.985460723580171340, -0.985469217517892960, -0.985477708991941650, -0.985486198002296090, -0.985494684548934960, -0.985503168631837070, -0.985511650250981310, +-0.985520129406346370, -0.985528606097911260, -0.985537080325654460, -0.985545552089555080, -0.985554021389591690, -0.985562488225743330, -0.985570952597988660, -0.985579414506306710, +-0.985587873950676150, -0.985596330931075900, -0.985604785447484870, -0.985613237499882060, -0.985621687088245930, -0.985630134212555630, -0.985638578872790050, -0.985647021068927880, +-0.985655460800948240, -0.985663898068830150, -0.985672332872552070, -0.985680765212093250, -0.985689195087432470, -0.985697622498548640, -0.985706047445420790, -0.985714469928027910, +-0.985722889946348710, -0.985731307500362420, -0.985739722590047940, -0.985748135215384070, -0.985756545376349710, -0.985764953072924110, -0.985773358305086170, -0.985781761072814790, +-0.985790161376089100, -0.985798559214887900, -0.985806954589190320, -0.985815347498975260, -0.985823737944221960, -0.985832125924909210, -0.985840511441016250, -0.985848894492521890, +-0.985857275079405460, -0.985865653201645880, -0.985874028859222040, -0.985882402052113080, -0.985890772780298130, -0.985899141043756310, -0.985907506842466640, -0.985915870176408250, +-0.985924231045560150, -0.985932589449901360, -0.985940945389411240, -0.985949298864068680, -0.985957649873852810, -0.985965998418742880, -0.985974344498718010, -0.985982688113757220, +-0.985991029263839640, -0.985999367948944720, -0.986007704169051260, -0.986016037924138500, -0.986024369214185680, -0.986032698039171820, -0.986041024399076480, -0.986049348293878360, +-0.986057669723556910, -0.986065988688091370, -0.986074305187460750, -0.986082619221644310, -0.986090930790621490, -0.986099239894371200, -0.986107546532872910, -0.986115850706105630, +-0.986124152414049050, -0.986132451656681840, -0.986140748433983470, -0.986149042745933290, -0.986157334592510430, -0.986165623973694340, -0.986173910889464270, -0.986182195339799230, +-0.986190477324678790, -0.986198756844082090, -0.986207033897988580, -0.986215308486377400, -0.986223580609227990, -0.986231850266519720, -0.986240117458231700, -0.986248382184343520, +-0.986256644444834300, -0.986264904239683490, -0.986273161568870350, -0.986281416432374320, -0.986289668830174770, -0.986297918762251260, -0.986306166228582690, -0.986314411229148760, +-0.986322653763928800, -0.986330893832902180, -0.986339131436048460, -0.986347366573346760, -0.986355599244776670, -0.986363829450317640, -0.986372057189949140, -0.986380282463650280, +-0.986388505271400870, -0.986396725613180040, -0.986404943488967570, -0.986413158898742590, -0.986421371842484910, -0.986429582320173640, -0.986437790331788470, -0.986445995877308750, +-0.986454198956714160, -0.986462399569983940, -0.986470597717097770, -0.986478793398035130, -0.986486986612775450, -0.986495177361298330, -0.986503365643583430, -0.986511551459610000, +-0.986519734809357620, -0.986527915692805960, -0.986536094109934480, -0.986544270060722980, -0.986552443545150590, -0.986560614563197100, -0.986568783114842080, -0.986576949200065110, +-0.986585112818845760, -0.986593273971163590, -0.986601432656998290, -0.986609588876329440, -0.986617742629136480, -0.986625893915399450, -0.986634042735097470, -0.986642189088210440, +-0.986650332974717830, -0.986658474394599530, -0.986666613347834900, -0.986674749834403950, -0.986682883854286040, -0.986691015407460850, -0.986699144493908160, -0.986707271113607560, +-0.986715395266538840, -0.986723516952681570, -0.986731636172015540, -0.986739752924520430, -0.986747867210176040, -0.986755979028961950, -0.986764088380857830, -0.986772195265843480, +-0.986780299683898690, -0.986788401635003030, -0.986796501119136640, -0.986804598136278850, -0.986812692686409480, -0.986820784769508410, -0.986828874385555440, -0.986836961534530270, +-0.986845046216412670, -0.986853128431182450, -0.986861208178819390, -0.986869285459303410, -0.986877360272614190, -0.986885432618731520, -0.986893502497635300, -0.986901569909305220, +-0.986909634853721300, -0.986917697330863430, -0.986925757340711200, -0.986933814883244500, -0.986941869958443350, -0.986949922566287440, -0.986957972706756780, -0.986966020379831170, +-0.986974065585490500, -0.986982108323714690, -0.986990148594483640, -0.986998186397777370, -0.987006221733575440, -0.987014254601857880, -0.987022285002604800, -0.987030312935796020, +-0.987038338401411530, -0.987046361399431030, -0.987054381929834750, -0.987062399992602370, -0.987070415587714130, -0.987078428715149720, -0.987086439374889270, -0.987094447566912780, +-0.987102453291200170, -0.987110456547731440, -0.987118457336486620, -0.987126455657445610, -0.987134451510588430, -0.987142444895895090, -0.987150435813345610, -0.987158424262920110, +-0.987166410244598720, -0.987174393758361020, -0.987182374804187470, -0.987190353382057960, -0.987198329491952520, -0.987206303133851270, -0.987214274307734340, -0.987222243013581640, +-0.987230209251373390, -0.987238173021089740, -0.987246134322710470, -0.987254093156215930, -0.987262049521586140, -0.987270003418801220, -0.987277954847841200, -0.987285903808686530, +-0.987293850301317000, -0.987301794325712740, -0.987309735881854110, -0.987317674969721120, -0.987325611589293880, -0.987333545740552540, -0.987341477423477440, -0.987349406638048710, +-0.987357333384246470, -0.987365257662050850, -0.987373179471442100, -0.987381098812400330, -0.987389015684905780, -0.987396930088938810, -0.987404842024479650, -0.987412751491508090, +-0.987420658490004820, -0.987428563019949860, -0.987436465081323430, -0.987444364674105900, -0.987452261798277390, -0.987460156453818350, -0.987468048640708810, -0.987475938358929220, +-0.987483825608459820, -0.987491710389280850, -0.987499592701372440, -0.987507472544715160, -0.987515349919289240, -0.987523224825075040, -0.987531097262052570, -0.987538967230202400, +-0.987546834729504890, -0.987554699759940260, -0.987562562321488870, -0.987570422414130960, -0.987578280037847090, -0.987586135192617620, -0.987593987878422670, -0.987601838095242930, +-0.987609685843058530, -0.987617531121849800, -0.987625373931597330, -0.987633214272281350, -0.987641052143882310, -0.987648887546380920, -0.987656720479757060, -0.987664550943991420, +-0.987672378939064450, -0.987680204464956520, -0.987688027521648080, -0.987695848109119480, -0.987703666227351400, -0.987711481876324070, -0.987719295056018190, -0.987727105766413870, +-0.987734914007491920, -0.987742719779232560, -0.987750523081616480, -0.987758323914624040, -0.987766122278236010, -0.987773918172432430, -0.987781711597194190, -0.987789502552501530, +-0.987797291038335250, -0.987805077054675570, -0.987812860601503310, -0.987820641678798910, -0.987828420286542940, -0.987836196424715980, -0.987843970093298380, -0.987851741292270940, +-0.987859510021614100, -0.987867276281308440, -0.987875040071334640, -0.987882801391673390, -0.987890560242304930, -0.987898316623210150, -0.987906070534369520, -0.987913821975763720, +-0.987921570947373430, -0.987929317449179110, -0.987937061481161560, -0.987944803043301350, -0.987952542135579150, -0.987960278757975760, -0.987968012910471430, -0.987975744593047160, +-0.987983473805683520, -0.987991200548361200, -0.987998924821061000, -0.988006646623763360, -0.988014365956449090, -0.988022082819098870, -0.988029797211693480, -0.988037509134213620, +-0.988045218586639960, -0.988052925568953190, -0.988060630081134210, -0.988068332123163580, -0.988076031695022340, -0.988083728796690820, -0.988091423428150040, -0.988099115589380680, +-0.988106805280363430, -0.988114492501079410, -0.988122177251508970, -0.988129859531633130, -0.988137539341432670, -0.988145216680888280, -0.988152891549980870, -0.988160563948691340, +-0.988168233877000260, -0.988175901334888640, -0.988183566322337280, -0.988191228839327200, -0.988198888885838840, -0.988206546461853240, -0.988214201567351290, -0.988221854202313900, +-0.988229504366721740, -0.988237152060556070, -0.988244797283797330, -0.988252440036426650, -0.988260080318424830, -0.988267718129772880, -0.988275353470451480, -0.988282986340441870, +-0.988290616739724630, -0.988298244668280980, -0.988305870126091830, -0.988313493113137880, -0.988321113629400120, -0.988328731674859570, -0.988336347249497260, -0.988343960353294080, +-0.988351570986231160, -0.988359179148289080, -0.988366784839449180, -0.988374388059692240, -0.988381988808999300, -0.988389587087351470, -0.988397182894729660, -0.988404776231114780, +-0.988412367096488050, -0.988419955490830390, -0.988427541414123030, -0.988435124866346660, -0.988442705847482390, -0.988450284357511480, -0.988457860396414810, -0.988465433964173630, +-0.988473005060768740, -0.988480573686181250, -0.988488139840392410, -0.988495703523383230, -0.988503264735134720, -0.988510823475628130, -0.988518379744844470, -0.988525933542764750, +-0.988533484869370320, -0.988541033724642300, -0.988548580108561500, -0.988556124021109260, -0.988563665462266820, -0.988571204432015070, -0.988578740930335490, -0.988586274957208970, +-0.988593806512616750, -0.988601335596539950, -0.988608862208959940, -0.988616386349857600, -0.988623908019214400, -0.988631427217011470, -0.988638943943229930, -0.988646458197851020, +-0.988653969980856080, -0.988661479292226140, -0.988668986131942430, -0.988676490499986290, -0.988683992396338970, -0.988691491820981590, -0.988698988773895620, -0.988706483255062160, +-0.988713975264462360, -0.988721464802077680, -0.988728951867889340, -0.988736436461878590, -0.988743918584026770, -0.988751398234315130, -0.988758875412725000, -0.988766350119237860, +-0.988773822353834710, -0.988781292116497010, -0.988788759407206010, -0.988796224225943150, -0.988803686572689690, -0.988811146447427180, -0.988818603850136760, -0.988826058780799770, +-0.988833511239397560, -0.988840961225911590, -0.988848408740323310, -0.988855853782613980, -0.988863296352764930, -0.988870736450757740, -0.988878174076573750, -0.988885609230194310, +-0.988893041911600770, -0.988900472120774590, -0.988907899857697340, -0.988915325122350250, -0.988922747914715020, -0.988930168234772760, -0.988937586082505040, -0.988945001457893440, +-0.988952414360919300, -0.988959824791564190, -0.988967232749809470, -0.988974638235636580, -0.988982041249027220, -0.988989441789962730, -0.988996839858424680, -0.989004235454394530, +-0.989011628577853740, -0.989019019228783880, -0.989026407407166410, -0.989033793112983120, -0.989041176346215250, -0.989048557106844360, -0.989055935394852150, -0.989063311210219950, +-0.989070684552929680, -0.989078055422962570, -0.989085423820300400, -0.989092789744924540, -0.989100153196816880, -0.989107514175958880, -0.989114872682331890, -0.989122228715917820, +-0.989129582276698120, -0.989136933364654580, -0.989144281979768560, -0.989151628122022060, -0.989158971791396340, -0.989166312987873160, -0.989173651711434230, -0.989180987962061110, +-0.989188321739735590, -0.989195653044439240, -0.989202981876153850, -0.989210308234860890, -0.989217632120542260, -0.989224953533179520, -0.989232272472754360, -0.989239588939248570, +-0.989246902932643720, -0.989254214452921610, -0.989261523500064130, -0.989268830074052750, -0.989276134174869260, -0.989283435802495450, -0.989290734956913000, -0.989298031638103810, +-0.989305325846049470, -0.989312617580731750, -0.989319906842132560, -0.989327193630233800, -0.989334477945016830, -0.989341759786463770, -0.989349039154556190, -0.989356316049276100, +-0.989363590470605180, -0.989370862418525340, -0.989378131893018380, -0.989385398894065960, -0.989392663421650110, -0.989399925475752510, -0.989407185056355170, -0.989414442163439880, +-0.989421696796988440, -0.989428948956982860, -0.989436198643404820, -0.989443445856236450, -0.989450690595459310, -0.989457932861055430, -0.989465172653006710, -0.989472409971295150, +-0.989479644815902560, -0.989486877186810830, -0.989494107084001870, -0.989501334507457700, -0.989508559457160100, -0.989515781933091090, -0.989523001935232680, -0.989530219463566780, +-0.989537434518075410, -0.989544647098740350, -0.989551857205543730, -0.989559064838467450, -0.989566269997493530, -0.989573472682603870, -0.989580672893780490, -0.989587870631005510, +-0.989595065894260940, -0.989602258683528580, -0.989609448998790660, -0.989616636840028980, -0.989623822207225780, -0.989631005100363060, -0.989638185519422840, -0.989645363464387030, +-0.989652538935237860, -0.989659711931957560, -0.989666882454527830, -0.989674050502930780, -0.989681216077148650, -0.989688379177163570, -0.989695539802957440, -0.989702697954512710, +-0.989709853631810970, -0.989717006834834660, -0.989724157563565800, -0.989731305817986630, -0.989738451598079160, -0.989745594903825520, -0.989752735735207940, -0.989759874092208450, +-0.989767009974809490, -0.989774143382992850, -0.989781274316740790, -0.989788402776035640, -0.989795528760859410, -0.989802652271194350, -0.989809773307022800, -0.989816891868326780, +-0.989824007955088400, -0.989831121567290140, -0.989838232704914000, -0.989845341367942220, -0.989852447556357150, -0.989859551270141020, -0.989866652509275970, -0.989873751273744220, +-0.989880847563528230, -0.989887941378610030, -0.989895032718972060, -0.989902121584596450, -0.989909207975465440, -0.989916291891561610, -0.989923373332866950, -0.989930452299363830, +-0.989937528791034580, -0.989944602807861560, -0.989951674349827000, -0.989958743416913260, -0.989965810009102550, -0.989972874126377470, -0.989979935768720120, -0.989986994936113080, +-0.989994051628538490, -0.990001105845978670, -0.990008157588416090, -0.990015206855833220, -0.990022253648212280, -0.990029297965535740, -0.990036339807785940, -0.990043379174945230, +-0.990050416066996180, -0.990057450483920910, -0.990064482425702220, -0.990071511892322120, -0.990078538883763400, -0.990085563400008310, -0.990092585441039400, -0.990099605006838910, +-0.990106622097389310, -0.990113636712673270, -0.990120648852673150, -0.990127658517371390, -0.990134665706750570, -0.990141670420792930, -0.990148672659481250, -0.990155672422797780, +-0.990162669710725200, -0.990169664523245840, -0.990176656860342400, -0.990183646721997320, -0.990190634108193080, -0.990197619018912460, -0.990204601454137580, -0.990211581413851240, +-0.990218558898035890, -0.990225533906674230, -0.990232506439748690, -0.990239476497241980, -0.990246444079136530, -0.990253409185414930, -0.990260371816059860, -0.990267331971053770, +-0.990274289650379340, -0.990281244854019250, -0.990288197581956080, -0.990295147834172380, -0.990302095610650750, -0.990309040911374060, -0.990315983736324680, -0.990322924085485280, +-0.990329861958838540, -0.990336797356367260, -0.990343730278054000, -0.990350660723881340, -0.990357588693832060, -0.990364514187888840, -0.990371437206034270, -0.990378357748251110, +-0.990385275814521960, -0.990392191404829810, -0.990399104519157030, -0.990406015157486610, -0.990412923319801130, -0.990419829006083390, -0.990426732216315940, -0.990433632950481700, +-0.990440531208563460, -0.990447426990543780, -0.990454320296405680, -0.990461211126131720, -0.990468099479704710, -0.990474985357107430, -0.990481868758322670, -0.990488749683333220, +-0.990495628132121890, -0.990502504104671560, -0.990509377600964910, -0.990516248620984970, -0.990523117164714310, -0.990529983232135920, -0.990536846823232400, -0.990543707937986850, +-0.990550566576382070, -0.990557422738400970, -0.990564276424026220, -0.990571127633240730, -0.990577976366027400, -0.990584822622369130, -0.990591666402248830, -0.990598507705649390, +-0.990605346532553720, -0.990612182882944610, -0.990619016756805190, -0.990625848154118030, -0.990632677074866350, -0.990639503519032960, -0.990646327486600750, -0.990653148977552740, +-0.990659967991872060, -0.990666784529541270, -0.990673598590543490, -0.990680410174861860, -0.990687219282479050, -0.990694025913378300, -0.990700830067542390, -0.990707631744954460, +-0.990714430945597410, -0.990721227669454360, -0.990728021916508330, -0.990734813686742100, -0.990741602980138800, -0.990748389796681560, -0.990755174136353280, -0.990761955999137300, +-0.990768735385016200, -0.990775512293973320, -0.990782286725991670, -0.990789058681054270, -0.990795828159144240, -0.990802595160244600, -0.990809359684338480, -0.990816121731408980, +-0.990822881301439250, -0.990829638394412290, -0.990836393010311230, -0.990843145149119200, -0.990849894810819200, -0.990856641995394470, -0.990863386702828250, -0.990870128933103670, +-0.990876868686203500, -0.990883605962111340, -0.990890340760810060, -0.990897073082282920, -0.990903802926513140, -0.990910530293483860, -0.990917255183178190, -0.990923977595579490, +-0.990930697530670870, -0.990937414988435460, -0.990944129968856500, -0.990950842471917110, -0.990957552497600760, -0.990964260045890440, -0.990970965116769630, -0.990977667710221220, +-0.990984367826228780, -0.990991065464775330, -0.990997760625844220, -0.991004453309418660, -0.991011143515482030, -0.991017831244017540, -0.991024516495008450, -0.991031199268438190, +-0.991037879564289790, -0.991044557382546820, -0.991051232723192290, -0.991057905586209760, -0.991064575971582480, -0.991071243879293910, -0.991077909309327040, -0.991084572261665350, +-0.991091232736292290, -0.991097890733191210, -0.991104546252345340, -0.991111199293738140, -0.991117849857352850, -0.991124497943173030, -0.991131143551181930, -0.991137786681363100, +-0.991144427333699670, -0.991151065508175220, -0.991157701204773090, -0.991164334423476730, -0.991170965164269610, -0.991177593427134960, -0.991184219212056240, -0.991190842519017120, +-0.991197463348000850, -0.991204081698990880, -0.991210697571970780, -0.991217310966923890, -0.991223921883833680, -0.991230530322683710, -0.991237136283457550, -0.991243739766138440, +-0.991250340770709950, -0.991256939297155640, -0.991263535345458860, -0.991270128915603400, -0.991276720007572610, -0.991283308621350060, -0.991289894756919090, -0.991296478414263490, +-0.991303059593366620, -0.991309638294212150, -0.991316214516783530, -0.991322788261064350, -0.991329359527038270, -0.991335928314688970, -0.991342494623999590, -0.991349058454954020, +-0.991355619807535840, -0.991362178681728600, -0.991368735077515880, -0.991375288994881480, -0.991381840433808730, -0.991388389394281420, -0.991394935876283130, -0.991401479879797430, +-0.991408021404808100, -0.991414560451298720, -0.991421097019252850, -0.991427631108654280, -0.991434162719486810, -0.991440691851733780, -0.991447218505378980, -0.991453742680406200, +-0.991460264376799020, -0.991466783594541100, -0.991473300333616470, -0.991479814594008470, -0.991486326375700890, -0.991492835678677520, -0.991499342502921930, -0.991505846848418140, +-0.991512348715149710, -0.991518848103100430, -0.991525345012253980, -0.991531839442594150, -0.991538331394104850, -0.991544820866769650, -0.991551307860572330, -0.991557792375496790, +-0.991564274411526720, -0.991570753968646130, -0.991577231046838480, -0.991583705646087890, -0.991590177766377920, -0.991596647407692490, -0.991603114570015490, -0.991609579253330710, +-0.991616041457621940, -0.991622501182873100, -0.991628958429068060, -0.991635413196190640, -0.991641865484224620, -0.991648315293154000, -0.991654762622962480, -0.991661207473634070, +-0.991667649845152650, -0.991674089737502260, -0.991680527150666570, -0.991686962084629480, -0.991693394539374990, -0.991699824514887030, -0.991706252011149590, -0.991712677028146360, +-0.991719099565861570, -0.991725519624279020, -0.991731937203382710, -0.991738352303156550, -0.991744764923584430, -0.991751175064650380, -0.991757582726338400, -0.991763987908632520, +-0.991770390611516730, -0.991776790834974830, -0.991783188578991060, -0.991789583843549210, -0.991795976628633500, -0.991802366934227740, -0.991808754760316160, -0.991815140106882650, +-0.991821522973911350, -0.991827903361386260, -0.991834281269291300, -0.991840656697610680, -0.991847029646328430, -0.991853400115428550, -0.991859768104895290, -0.991866133614712650, +-0.991872496644864540, -0.991878857195335200, -0.991885215266108730, -0.991891570857169170, -0.991897923968500740, -0.991904274600087570, -0.991910622751913550, -0.991916968423963040, +-0.991923311616220160, -0.991929652328669140, -0.991935990561293780, -0.991942326314078530, -0.991948659587007400, -0.991954990380064630, -0.991961318693234450, -0.991967644526500990, +-0.991973967879848260, -0.991980288753260720, -0.991986607146722490, -0.991992923060217690, -0.991999236493730560, -0.992005547447245340, -0.992011855920746250, -0.992018161914217540, +-0.992024465427643550, -0.992030766461008300, -0.992037065014296120, -0.992043361087491250, -0.992049654680578040, -0.992055945793540620, -0.992062234426363540, -0.992068520579030610, +-0.992074804251526500, -0.992081085443835330, -0.992087364155941450, -0.992093640387829210, -0.992099914139482840, -0.992106185410886690, -0.992112454202025100, -0.992118720512882410, +-0.992124984343442870, -0.992131245693690820, -0.992137504563610720, -0.992143760953186790, -0.992150014862403510, -0.992156266291245310, -0.992162515239696340, -0.992168761707741040, +-0.992175005695363880, -0.992181247202549190, -0.992187486229281320, -0.992193722775544850, -0.992199956841324000, -0.992206188426603240, -0.992212417531367130, -0.992218644155599900, +-0.992224868299286020, -0.992231089962410050, -0.992237309144956230, -0.992243525846909220, -0.992249740068253510, -0.992255951808973300, -0.992262161069053290, -0.992268367848477830, +-0.992274572147231470, -0.992280773965298570, -0.992286973302663910, -0.992293170159311620, -0.992299364535226600, -0.992305556430393090, -0.992311745844795760, -0.992317932778418950, +-0.992324117231247360, -0.992330299203265430, -0.992336478694457850, -0.992342655704809060, -0.992348830234303650, -0.992355002282926060, -0.992361171850660970, -0.992367338937493070, +-0.992373503543406700, -0.992379665668386530, -0.992385825312417370, -0.992391982475483550, -0.992398137157569750, -0.992404289358660760, -0.992410439078740940, -0.992416586317794950, +-0.992422731075807580, -0.992428873352763310, -0.992435013148647020, -0.992441150463443060, -0.992447285297136220, -0.992453417649711180, -0.992459547521152620, -0.992465674911445220, +-0.992471799820573540, -0.992477922248522380, -0.992484042195276530, -0.992490159660820440, -0.992496274645139120, -0.992502387148216920, -0.992508497170038860, -0.992514604710589500, +-0.992520709769853740, -0.992526812347816030, -0.992532912444461510, -0.992539010059774630, -0.992545105193740170, -0.992551197846342940, -0.992557288017567710, -0.992563375707399280, +-0.992569460915822430, -0.992575543642821860, -0.992581623888382450, -0.992587701652489220, -0.992593776935126510, -0.992599849736279350, -0.992605920055932620, -0.992611987894071010, +-0.992618053250679530, -0.992624116125742970, -0.992630176519246010, -0.992636234431173550, -0.992642289861510600, -0.992648342810241950, -0.992654393277352390, -0.992660441262826820, +-0.992666486766650150, -0.992672529788807270, -0.992678570329283190, -0.992684608388062610, -0.992690643965130510, -0.992696677060471710, -0.992702707674071320, -0.992708735805914120, +-0.992714761455985140, -0.992720784624269270, -0.992726805310751300, -0.992732823515416360, -0.992738839238249460, -0.992744852479235380, -0.992750863238359150, -0.992756871515605770, +-0.992762877310960250, -0.992768880624407490, -0.992774881455932730, -0.992780879805520540, -0.992786875673156270, -0.992792869058824690, -0.992798859962511050, -0.992804848384200240, +-0.992810834323877290, -0.992816817781527310, -0.992822798757135190, -0.992828777250686080, -0.992834753262165080, -0.992840726791557100, -0.992846697838847380, -0.992852666404020920, +-0.992858632487062740, -0.992864596087958180, -0.992870557206691930, -0.992876515843249320, -0.992882471997615480, -0.992888425669775420, -0.992894376859714270, -0.992900325567417250, +-0.992906271792869390, -0.992912215536055800, -0.992918156796961720, -0.992924095575572150, -0.992930031871872450, -0.992935965685847630, -0.992941897017482920, -0.992947825866763440, +-0.992953752233674440, -0.992959676118201020, -0.992965597520328420, -0.992971516440041890, -0.992977432877326430, -0.992983346832167490, -0.992989258304550200, -0.992995167294459800, +-0.993001073801881410, -0.993006977826800250, -0.993012879369201800, -0.993018778429071050, -0.993024675006393350, -0.993030569101153950, -0.993036460713338180, -0.993042349842931380, +-0.993048236489918580, -0.993054120654285110, -0.993060002336016430, -0.993065881535097780, -0.993071758251514390, -0.993077632485251600, -0.993083504236294770, -0.993089373504629110, +-0.993095240290239990, -0.993101104593112850, -0.993106966413232930, -0.993112825750585570, -0.993118682605156120, -0.993124536976930040, -0.993130388865892550, -0.993136238272029240, +-0.993142085195325210, -0.993147929635765920, -0.993153771593336840, -0.993159611068023310, -0.993165448059810880, -0.993171282568684810, -0.993177114594630430, -0.993182944137633310, +-0.993188771197678790, -0.993194595774752330, -0.993200417868839500, -0.993206237479925540, -0.993212054607996000, -0.993217869253036230, -0.993223681415032030, -0.993229491093968410, +-0.993235298289831150, -0.993241103002605600, -0.993246905232277320, -0.993252704978831780, -0.993258502242254540, -0.993264297022531050, -0.993270089319646670, -0.993275879133587170, +-0.993281666464337910, -0.993287451311884560, -0.993293233676212470, -0.993299013557307430, -0.993304790955154780, -0.993310565869740200, -0.993316338301049150, -0.993322108249067300, +-0.993327875713780120, -0.993333640695173270, -0.993339403193232330, -0.993345163207942970, -0.993350920739290650, -0.993356675787261060, -0.993362428351839630, -0.993368178433012280, +-0.993373926030764350, -0.993379671145081740, -0.993385413775949910, -0.993391153923354420, -0.993396891587281280, -0.993402626767715850, -0.993408359464643790, -0.993414089678050780, +-0.993419817407922620, -0.993425542654244880, -0.993431265417003330, -0.993436985696183660, -0.993442703491771440, -0.993448418803752450, -0.993454131632112380, -0.993459841976837010, +-0.993465549837912130, -0.993471255215323310, -0.993476958109056340, -0.993482658519097010, -0.993488356445431100, -0.993494051888044180, -0.993499744846922160, -0.993505435322050710, +-0.993511123313415730, -0.993516808821003130, -0.993522491844798350, -0.993528172384787300, -0.993533850440955770, -0.993539526013289760, -0.993545199101774860, -0.993550869706396940, +-0.993556537827141820, -0.993562203463995490, -0.993567866616943520, -0.993573527285972040, -0.993579185471066610, -0.993584841172213240, -0.993590494389397730, -0.993596145122606080, +-0.993601793371823970, -0.993607439137037530, -0.993613082418232430, -0.993618723215394570, -0.993624361528509860, -0.993629997357564300, -0.993635630702543680, -0.993641261563434130, +-0.993646889940221320, -0.993652515832891270, -0.993658139241430090, -0.993663760165823470, -0.993669378606057420, -0.993674994562117830, -0.993680608033990830, -0.993686219021662430, +-0.993691827525118420, -0.993697433544344810, -0.993703037079327610, -0.993708638130052830, -0.993714236696506380, -0.993719832778674480, -0.993725426376542930, -0.993731017490097730, +-0.993736606119325130, -0.993742192264211010, -0.993747775924741280, -0.993753357100902180, -0.993758935792679710, -0.993764512000059890, -0.993770085723028830, -0.993775656961572550, +-0.993781225715677060, -0.993786791985328600, -0.993792355770513060, -0.993797917071216670, -0.993803475887425460, -0.993809032219125530, -0.993814586066303130, -0.993820137428944150, +-0.993825686307034940, -0.993831232700561510, -0.993836776609509980, -0.993842318033866470, -0.993847856973617110, -0.993853393428748120, -0.993858927399245860, -0.993864458885096110, +-0.993869987886285220, -0.993875514402799310, -0.993881038434624720, -0.993886559981747460, -0.993892079044153780, -0.993897595621830000, -0.993903109714762150, -0.993908621322936560, +-0.993914130446339470, -0.993919637084957010, -0.993925141238775400, -0.993930642907780990, -0.993936142091959910, -0.993941638791298600, -0.993947133005783190, -0.993952624735399910, +-0.993958113980135010, -0.993963600739974810, -0.993969085014905660, -0.993974566804913810, -0.993980046109985470, -0.993985522930107110, -0.993990997265264850, -0.993996469115445260, +-0.994001938480634450, -0.994007405360818660, -0.994012869755984460, -0.994018331666118080, -0.994023791091205760, -0.994029248031234160, -0.994034702486189300, -0.994040154456057760, +-0.994045603940825750, -0.994051050940479740, -0.994056495455006180, -0.994061937484391310, -0.994067377028621580, -0.994072814087683440, -0.994078248661563360, -0.994083680750247670, +-0.994089110353722600, -0.994094537471974850, -0.994099962104990740, -0.994105384252756740, -0.994110803915259300, -0.994116221092484880, -0.994121635784419810, -0.994127047991050670, +-0.994132457712363920, -0.994137864948346110, -0.994143269698983480, -0.994148671964262820, -0.994154071744170360, -0.994159469038692790, -0.994164863847816660, -0.994170256171528210, +-0.994175646009814120, -0.994181033362660950, -0.994186418230055270, -0.994191800611983530, -0.994197180508432200, -0.994202557919387940, -0.994207932844837330, -0.994213305284766810, +-0.994218675239163070, -0.994224042708012680, -0.994229407691302190, -0.994234770189018070, -0.994240130201147100, -0.994245487727675960, -0.994250842768590880, -0.994256195323878770, +-0.994261545393526180, -0.994266892977519690, -0.994272238075845970, -0.994277580688491810, -0.994282920815443560, -0.994288258456688000, -0.994293593612211810, -0.994298926282001560, +-0.994304256466044030, -0.994309584164325910, -0.994314909376833870, -0.994320232103554470, -0.994325552344474620, -0.994330870099580770, -0.994336185368859820, -0.994341498152298330, +-0.994346808449883100, -0.994352116261600800, -0.994357421587438450, -0.994362724427382380, -0.994368024781419390, -0.994373322649536480, -0.994378618031720230, -0.994383910927957420, +-0.994389201338234830, -0.994394489262539260, -0.994399774700857500, -0.994405057653176330, -0.994410338119482430, -0.994415616099762700, -0.994420891594003930, -0.994426164602192910, +-0.994431435124316530, -0.994436703160361590, -0.994441968710314870, -0.994447231774163170, -0.994452492351893480, -0.994457750443492490, -0.994463006048947110, -0.994468259168244220, +-0.994473509801370730, -0.994478757948313420, -0.994484003609059200, -0.994489246783595070, -0.994494487471907830, -0.994499725673984260, -0.994504961389811370, -0.994510194619376180, +-0.994515425362665570, -0.994520653619666240, -0.994525879390365300, -0.994531102674749650, -0.994536323472806290, -0.994541541784522030, -0.994546757609883980, -0.994551970948879040, +-0.994557181801494220, -0.994562390167716410, -0.994567596047532640, -0.994572799440929910, -0.994578000347895120, -0.994583198768415280, -0.994588394702477510, -0.994593588150068820, +-0.994598779111176110, -0.994603967585786400, -0.994609153573886800, -0.994614337075464320, -0.994619518090505970, -0.994624696618998880, -0.994629872660930060, -0.994635046216286510, +-0.994640217285055360, -0.994645385867223730, -0.994650551962778520, -0.994655715571706960, -0.994660876693996170, -0.994666035329633160, -0.994671191478605050, -0.994676345140898980, +-0.994681496316502050, -0.994686645005401380, -0.994691791207584110, -0.994696934923037230, -0.994702076151748100, -0.994707214893703840, -0.994712351148891450, -0.994717484917298280, +-0.994722616198911450, -0.994727744993717970, -0.994732871301705070, -0.994737995122860100, -0.994743116457170060, -0.994748235304622310, -0.994753351665203960, -0.994758465538902240, +-0.994763576925704270, -0.994768685825597410, -0.994773792238568880, -0.994778896164605800, -0.994783997603695510, -0.994789096555825260, -0.994794193020982150, -0.994799286999153650, +-0.994804378490326990, -0.994809467494489290, -0.994814554011627990, -0.994819638041730240, -0.994824719584783470, -0.994829798640774920, -0.994834875209691720, -0.994839949291521420, +-0.994845020886251260, -0.994850089993868590, -0.994855156614360640, -0.994860220747714740, -0.994865282393918360, -0.994870341552958730, -0.994875398224823290, -0.994880452409499410, +-0.994885504106974290, -0.994890553317235530, -0.994895600040270220, -0.994900644276066060, -0.994905686024610160, -0.994910725285890200, -0.994915762059893400, -0.994920796346607130, +-0.994925828146018820, -0.994930857458116050, -0.994935884282886040, -0.994940908620316370, -0.994945930470394370, -0.994950949833107610, -0.994955966708443550, -0.994960981096389530, +-0.994965992996933000, -0.994971002410061420, -0.994976009335762470, -0.994981013774023370, -0.994986015724831920, -0.994991015188175340, -0.994996012164041210, -0.995001006652416970, +-0.995005998653290310, -0.995010988166648680, -0.995015975192479530, -0.995020959730770430, -0.995025941781508940, -0.995030921344682630, -0.995035898420279060, -0.995040873008285590, +-0.995045845108690100, -0.995050814721479830, -0.995055781846642670, -0.995060746484166090, -0.995065708634037540, -0.995070668296244690, -0.995075625470775220, -0.995080580157616690, +-0.995085532356756670, -0.995090482068182850, -0.995095429291882770, -0.995100374027844240, -0.995105316276054700, -0.995110256036501940, -0.995115193309173420, -0.995120128094057030, +-0.995125060391140240, -0.995129990200410820, -0.995134917521856450, -0.995139842355464820, -0.995144764701223480, -0.995149684559120340, -0.995154601929142850, -0.995159516811279010, +-0.995164429205516290, -0.995169339111842470, -0.995174246530245330, -0.995179151460712560, -0.995184053903232060, -0.995188953857791270, -0.995193851324378100, -0.995198746302980330, +-0.995203638793585750, -0.995208528796181930, -0.995213416310756990, -0.995218301337298380, -0.995223183875794120, -0.995228063926231750, -0.995232941488599310, -0.995237816562884460, +-0.995242689149075100, -0.995247559247159020, -0.995252426857124010, -0.995257291978958070, -0.995262154612648780, -0.995267014758184130, -0.995271872415551930, -0.995276727584740060, +-0.995281580265736320, -0.995286430458528830, -0.995291278163105030, -0.995296123379453170, -0.995300966107560910, -0.995305806347416280, -0.995310644099007160, -0.995315479362321340, +-0.995320312137346840, -0.995325142424071660, -0.995329970222483600, -0.995334795532570650, -0.995339618354320610, -0.995344438687721490, -0.995349256532761410, -0.995354071889428040, +-0.995358884757709730, -0.995363695137594040, -0.995368503029069100, -0.995373308432122910, -0.995378111346743480, -0.995382911772918710, -0.995387709710636730, -0.995392505159885420, +-0.995397298120652920, -0.995402088592927110, -0.995406876576696130, -0.995411662071947980, -0.995416445078670550, -0.995421225596852090, -0.995426003626480590, -0.995430779167544190, +-0.995435552220030660, -0.995440322783928240, -0.995445090859225060, -0.995449856445909220, -0.995454619543968630, -0.995459380153391530, -0.995464138274166020, -0.995468893906280130, +-0.995473647049722080, -0.995478397704479880, -0.995483145870541650, -0.995487891547895520, -0.995492634736529710, -0.995497375436432350, -0.995502113647591560, -0.995506849369995450, +-0.995511582603632150, -0.995516313348490000, -0.995521041604557010, -0.995525767371821410, -0.995530490650271330, -0.995535211439895100, -0.995539929740680840, -0.995544645552616790, +-0.995549358875691180, -0.995554069709892020, -0.995558778055207760, -0.995563483911626520, -0.995568187279136650, -0.995572888157726270, -0.995577586547383710, -0.995582282448097100, +-0.995586975859854780, -0.995591666782645100, -0.995596355216456170, -0.995601041161276460, -0.995605724617094070, -0.995610405583897350, -0.995615084061674650, -0.995619760050414300, +-0.995624433550104440, -0.995629104560733610, -0.995633773082289950, -0.995638439114761800, -0.995643102658137600, -0.995647763712405710, -0.995652422277554460, -0.995657078353571980, +-0.995661731940446940, -0.995666383038167460, -0.995671031646722100, -0.995675677766099110, -0.995680321396286930, -0.995684962537274010, -0.995689601189048590, -0.995694237351599340, +-0.995698871024914280, -0.995703502208982180, -0.995708130903791290, -0.995712757109330050, -0.995717380825587030, -0.995722002052550460, -0.995726620790208910, -0.995731237038550710, +-0.995735850797564550, -0.995740462067238650, -0.995745070847561700, -0.995749677138522030, -0.995754280940108090, -0.995758882252308570, -0.995763481075111810, -0.995768077408506370, +-0.995772671252480700, -0.995777262607023370, -0.995781851472122840, -0.995786437847767770, -0.995791021733946510, -0.995795603130647740, -0.995800182037860030, -0.995804758455571700, +-0.995809332383771560, -0.995813903822448170, -0.995818472771589860, -0.995823039231185540, -0.995827603201223430, -0.995832164681692560, -0.995836723672581140, -0.995841280173877850, +-0.995845834185571490, -0.995850385707650390, -0.995854934740103450, -0.995859481282919230, -0.995864025336086200, -0.995868566899593130, -0.995873105973428600, -0.995877642557581380, +-0.995882176652039930, -0.995886708256793150, -0.995891237371829610, -0.995895763997137860, -0.995900288132706920, -0.995904809778525020, -0.995909328934581280, -0.995913845600864040, +-0.995918359777362320, -0.995922871464064660, -0.995927380660959870, -0.995931887368036620, -0.995936391585283580, -0.995940893312689650, -0.995945392550243390, -0.995949889297933710, +-0.995954383555749280, -0.995958875323678880, -0.995963364601711310, -0.995967851389835350, -0.995972335688039780, -0.995976817496313280, -0.995981296814644870, -0.995985773643023100, +-0.995990247981436980, -0.995994719829875200, -0.995999189188326640, -0.996003656056780100, -0.996008120435224350, -0.996012582323648420, -0.996017041722040970, -0.996021498630390910, +-0.996025953048687020, -0.996030404976918420, -0.996034854415073670, -0.996039301363141890, -0.996043745821111880, -0.996048187788972420, -0.996052627266712510, -0.996057064254320950, +-0.996061498751786960, -0.996065930759098990, -0.996070360276246290, -0.996074787303217630, -0.996079211840002140, -0.996083633886588490, -0.996088053442965800, -0.996092470509122970, +-0.996096885085048900, -0.996101297170732700, -0.996105706766163280, -0.996110113871329640, -0.996114518486220570, -0.996118920610825300, -0.996123320245132620, -0.996127717389131750, +-0.996132112042811600, -0.996136504206161180, -0.996140893879169380, -0.996145281061825430, -0.996149665754118230, -0.996154047956036900, -0.996158427667570460, -0.996162804888707900, +-0.996167179619438350, -0.996171551859750930, -0.996175921609634530, -0.996180288869078390, -0.996184653638071520, -0.996189015916602920, -0.996193375704661820, -0.996197733002237460, +-0.996202087809318630, -0.996206440125894540, -0.996210789951954330, -0.996215137287487230, -0.996219482132482240, -0.996223824486928590, -0.996228164350815290, -0.996232501724131690, +-0.996236836606866900, -0.996241168999009830, -0.996245498900549920, -0.996249826311476290, -0.996254151231778070, -0.996258473661444490, -0.996262793600464770, -0.996267111048827920, +-0.996271426006523410, -0.996275738473540230, -0.996280048449867840, -0.996284355935495250, -0.996288660930411800, -0.996292963434606600, -0.996297263448069130, -0.996301560970788370, +-0.996305856002753900, -0.996310148543954610, -0.996314438594380070, -0.996318726154019400, -0.996323011222861820, -0.996327293800896910, -0.996331573888113550, -0.996335851484501430, +-0.996340126590049560, -0.996344399204747380, -0.996348669328584240, -0.996352936961549470, -0.996357202103632210, -0.996361464754822120, -0.996365724915108220, -0.996369982584480170, +-0.996374237762927110, -0.996378490450438360, -0.996382740647003500, -0.996386988352611750, -0.996391233567252450, -0.996395476290915180, -0.996399716523589160, -0.996403954265263850, +-0.996408189515928690, -0.996412422275573030, -0.996416652544186320, -0.996420880321758020, -0.996425105608277460, -0.996429328403734100, -0.996433548708117510, -0.996437766521417020, +-0.996441981843622090, -0.996446194674722290, -0.996450405014706830, -0.996454612863565510, -0.996458818221287680, -0.996463021087862780, -0.996467221463280260, -0.996471419347529700, +-0.996475614740600530, -0.996479807642482450, -0.996483998053164790, -0.996488185972637110, -0.996492371400888980, -0.996496554337910070, -0.996500734783689610, -0.996504912738217290, +-0.996509088201482760, -0.996513261173475500, -0.996517431654185050, -0.996521599643601210, -0.996525765141713200, -0.996529928148510710, -0.996534088663983520, -0.996538246688121080, +-0.996542402220913060, -0.996546555262348920, -0.996550705812418450, -0.996554853871111310, -0.996558999438416860, -0.996563142514325100, -0.996567283098825360, -0.996571421191907450, +-0.996575556793561020, -0.996579689903775660, -0.996583820522541130, -0.996587948649847010, -0.996592074285682970, -0.996596197430038800, -0.996600318082904170, -0.996604436244268640, +-0.996608551914122010, -0.996612665092454160, -0.996616775779254450, -0.996620883974512980, -0.996624989678219220, -0.996629092890363060, -0.996633193610934050, -0.996637291839922110, +-0.996641387577316910, -0.996645480823108220, -0.996649571577285950, -0.996653659839839670, -0.996657745610759260, -0.996661828890034520, -0.996665909677655120, -0.996669987973610950, +-0.996674063777891920, -0.996678137090487580, -0.996682207911388060, -0.996686276240582920, -0.996690342078062170, -0.996694405423815490, -0.996698466277832760, -0.996702524640104000, +-0.996706580510618780, -0.996710633889367200, -0.996714684776339070, -0.996718733171524150, -0.996722779074912470, -0.996726822486493690, -0.996730863406257940, -0.996734901834195110, +-0.996738937770294990, -0.996742971214547470, -0.996747002166942560, -0.996751030627470170, -0.996755056596120180, -0.996759080072882500, -0.996763101057747130, -0.996767119550704070, +-0.996771135551743240, -0.996775149060854520, -0.996779160078027910, -0.996783168603253330, -0.996787174636521000, -0.996791178177820590, -0.996795179227142230, -0.996799177784476020, +-0.996803173849811870, -0.996807167423139680, -0.996811158504449680, -0.996815147093731760, -0.996819133190975930, -0.996823116796172300, -0.996827097909310900, -0.996831076530381720, +-0.996835052659374890, -0.996839026296280410, -0.996842997441088290, -0.996846966093788760, -0.996850932254371710, -0.996854895922827390, -0.996858857099145900, -0.996862815783317150, +-0.996866771975331470, -0.996870725675178870, -0.996874676882849360, -0.996878625598333290, -0.996882571821620540, -0.996886515552701360, -0.996890456791565960, -0.996894395538204360, +-0.996898331792606780, -0.996902265554763470, -0.996906196824664300, -0.996910125602299750, -0.996914051887659910, -0.996917975680734920, -0.996921896981515010, -0.996925815789990290, +-0.996929732106151100, -0.996933645929987570, -0.996937557261489920, -0.996941466100648380, -0.996945372447453180, -0.996949276301894450, -0.996953177663962740, -0.996957076533647960, +-0.996960972910940440, -0.996964866795830520, -0.996968758188308430, -0.996972647088364530, -0.996976533495988910, -0.996980417411172050, -0.996984298833904050, -0.996988177764175370, +-0.996992054201976230, -0.996995928147296980, -0.996999799600127860, -0.997003668560459190, -0.997007535028281430, -0.997011399003584930, -0.997015260486359800, -0.997019119476596490, +-0.997022975974285460, -0.997026829979416940, -0.997030681491981370, -0.997034530511969110, -0.997038377039370480, -0.997042221074175950, -0.997046062616375850, -0.997049901665960640, +-0.997053738222920650, -0.997057572287246340, -0.997061403858928050, -0.997065232937956240, -0.997069059524321450, -0.997072883618013940, -0.997076705219024140, -0.997080524327342730, +-0.997084340942959830, -0.997088155065866230, -0.997091966696052160, -0.997095775833508170, -0.997099582478224830, -0.997103386630192490, -0.997107188289401700, -0.997110987455842920, +-0.997114784129506710, -0.997118578310383420, -0.997122369998463820, -0.997126159193738150, -0.997129945896197300, -0.997133730105831400, -0.997137511822631220, -0.997141291046587330, +-0.997145067777690080, -0.997148842015930240, -0.997152613761298270, -0.997156383013784840, -0.997160149773380410, -0.997163914040075650, -0.997167675813861010, -0.997171435094727280, +-0.997175191882664900, -0.997178946177664450, -0.997182697979716810, -0.997186447288812340, -0.997190194104941810, -0.997193938428095670, -0.997197680258264830, -0.997201419595439730, +-0.997205156439611050, -0.997208890790769460, -0.997212622648905640, -0.997216352014010380, -0.997220078886074220, -0.997223803265087750, -0.997227525151041850, -0.997231244543927090, +-0.997234961443734250, -0.997238675850454000, -0.997242387764077140, -0.997246097184594230, -0.997249804111996150, -0.997253508546273480, -0.997257210487417000, -0.997260909935417610, +-0.997264606890265860, -0.997268301351952550, -0.997271993320468560, -0.997275682795804590, -0.997279369777951510, -0.997283054266899890, -0.997286736262640640, -0.997290415765164530, +-0.997294092774462460, -0.997297767290525110, -0.997301439313343360, -0.997305108842908020, -0.997308775879209850, -0.997312440422239770, -0.997316102471988540, -0.997319762028447190, +-0.997323419091606270, -0.997327073661456900, -0.997330725737989860, -0.997334375321195950, -0.997338022411066170, -0.997341667007591300, -0.997345309110762250, -0.997348948720569890, +-0.997352585837005260, -0.997356220460059120, -0.997359852589722480, -0.997363482225986140, -0.997367109368841100, -0.997370734018278250, -0.997374356174288600, -0.997377975836863050, +-0.997381593005992610, -0.997385207681668050, -0.997388819863880730, -0.997392429552621200, -0.997396036747880580, -0.997399641449649880, -0.997403243657920100, -0.997406843372682150, +-0.997410440593927250, -0.997414035321646080, -0.997417627555829860, -0.997421217296469600, -0.997424804543556310, -0.997428389297081000, -0.997431971557034670, -0.997435551323408440, +-0.997439128596193330, -0.997442703375380550, -0.997446275660960780, -0.997449845452925480, -0.997453412751265420, -0.997456977555971960, -0.997460539867035980, -0.997464099684448710, +-0.997467657008201170, -0.997471211838284470, -0.997474764174689720, -0.997478314017408160, -0.997481861366430690, -0.997485406221748640, -0.997488948583353020, -0.997492488451235060, +-0.997496025825385880, -0.997499560705796710, -0.997503093092458550, -0.997506622985362630, -0.997510150384500300, -0.997513675289862460, -0.997517197701440540, -0.997520717619225560, +-0.997524235043208750, -0.997527749973381340, -0.997531262409734550, -0.997534772352259740, -0.997538279800947890, -0.997541784755790360, -0.997545287216778380, -0.997548787183903160, +-0.997552284657156060, -0.997555779636528080, -0.997559272122010790, -0.997562762113595290, -0.997566249611272830, -0.997569734615034840, -0.997573217124872460, -0.997576697140777010, +-0.997580174662739850, -0.997583649690752310, -0.997587122224805610, -0.997590592264891000, -0.997594059811000020, -0.997597524863123810, -0.997600987421253920, -0.997604447485381460, +-0.997607905055497900, -0.997611360131594570, -0.997614812713662920, -0.997618262801694190, -0.997621710395679710, -0.997625155495611150, -0.997628598101479520, -0.997632038213276510, +-0.997635475830993320, -0.997638910954621430, -0.997642343584152380, -0.997645773719577300, -0.997649201360887970, -0.997652626508075510, -0.997656049161131600, -0.997659469320047450, +-0.997662886984814650, -0.997666302155424730, -0.997669714831868950, -0.997673125014138850, -0.997676532702226120, -0.997679937896121860, -0.997683340595817870, -0.997686740801305480, +-0.997690138512576260, -0.997693533729621660, -0.997696926452433240, -0.997700316681002560, -0.997703704415321080, -0.997707089655380240, -0.997710472401171830, -0.997713852652687080, +-0.997717230409917780, -0.997720605672855370, -0.997723978441491520, -0.997727348715817700, -0.997730716495825450, -0.997734081781506470, -0.997737444572852290, -0.997740804869854500, +-0.997744162672504650, -0.997747517980794420, -0.997750870794715360, -0.997754221114259150, -0.997757568939417360, -0.997760914270181760, -0.997764257106543710, -0.997767597448495080, +-0.997770935296027560, -0.997774270649132600, -0.997777603507801980, -0.997780933872027380, -0.997784261741800460, -0.997787587117112800, -0.997790909997956170, -0.997794230384322360, +-0.997797548276202930, -0.997800863673589560, -0.997804176576474130, -0.997807486984848220, -0.997810794898703720, -0.997814100318032080, -0.997817403242825200, -0.997820703673074850, +-0.997824001608772710, -0.997827297049910580, -0.997830589996480220, -0.997833880448473430, -0.997837168405881880, -0.997840453868697460, -0.997843736836911850, -0.997847017310516840, +-0.997850295289504420, -0.997853570773866160, -0.997856843763593960, -0.997860114258679820, -0.997863382259115310, -0.997866647764892310, -0.997869910776002620, -0.997873171292438240, +-0.997876429314190960, -0.997879684841252560, -0.997882937873615040, -0.997886188411270080, -0.997889436454209580, -0.997892682002425650, -0.997895925055909850, -0.997899165614654300, +-0.997902403678650910, -0.997905639247891440, -0.997908872322367910, -0.997912102902072220, -0.997915330986996250, -0.997918556577131910, -0.997921779672471200, -0.997925000273006120, +-0.997928218378728470, -0.997931433989630360, -0.997934647105703570, -0.997937857726940100, -0.997941065853332090, -0.997944271484871410, -0.997947474621549980, -0.997950675263359900, +-0.997953873410293180, -0.997957069062341720, -0.997960262219497630, -0.997963452881752920, -0.997966641049099490, -0.997969826721529450, -0.997973009899034920, -0.997976190581607910, +-0.997979368769240320, -0.997982544461924360, -0.997985717659651940, -0.997988888362415280, -0.997992056570206510, -0.997995222283017510, -0.997998385500840410, -0.998001546223667320, +-0.998004704451490480, -0.998007860184301880, -0.998011013422093640, -0.998014164164857780, -0.998017312412586510, -0.998020458165271960, -0.998023601422906360, -0.998026742185481710, +-0.998029880452990240, -0.998033016225423950, -0.998036149502775190, -0.998039280285036080, -0.998042408572198720, -0.998045534364255360, -0.998048657661198100, -0.998051778463019290, +-0.998054896769711040, -0.998058012581265590, -0.998061125897675040, -0.998064236718931630, -0.998067345045027700, -0.998070450875955360, -0.998073554211706960, -0.998076655052274610, +-0.998079753397650650, -0.998082849247827310, -0.998085942602796820, -0.998089033462551510, -0.998092121827083510, -0.998095207696385270, -0.998098291070449120, -0.998101371949267180, +-0.998104450332831790, -0.998107526221135190, -0.998110599614169920, -0.998113670511928010, -0.998116738914402000, -0.998119804821584240, -0.998122868233466850, -0.998125929150042280, +-0.998128987571302970, -0.998132043497241160, -0.998135096927849190, -0.998138147863119500, -0.998141196303044430, -0.998144242247616440, -0.998147285696827760, -0.998150326650670940, +-0.998153365109138320, -0.998156401072222250, -0.998159434539915070, -0.998162465512209440, -0.998165493989097710, -0.998168519970572100, -0.998171543456625180, -0.998174564447249500, +-0.998177582942437300, -0.998180598942181250, -0.998183612446473690, -0.998186623455306950, -0.998189631968673830, -0.998192637986566540, -0.998195641508977770, -0.998198642535899740, +-0.998201641067325230, -0.998204637103246580, -0.998207630643656250, -0.998210621688546910, -0.998213610237911110, -0.998216596291741200, -0.998219579850029850, -0.998222560912769400, +-0.998225539479952630, -0.998228515551572100, -0.998231489127620160, -0.998234460208089590, -0.998237428792972840, -0.998240394882262460, -0.998243358475951140, -0.998246319574031430, +-0.998249278176496000, -0.998252234283337200, -0.998255187894547920, -0.998258139010120730, -0.998261087630048060, -0.998264033754322820, -0.998266977382937350, -0.998269918515884540, +-0.998272857153156830, -0.998275793294747030, -0.998278726940647790, -0.998281658090851680, -0.998284586745351480, -0.998287512904139750, -0.998290436567209280, -0.998293357734552630, +-0.998296276406162700, -0.998299192582032040, -0.998302106262153430, -0.998305017446519560, -0.998307926135123090, -0.998310832327956810, -0.998313736025013500, -0.998316637226285720, +-0.998319535931766480, -0.998322432141448330, -0.998325325855324190, -0.998328217073386700, -0.998331105795628670, -0.998333992022042870, -0.998336875752621980, -0.998339756987358990, +-0.998342635726246600, -0.998345511969277680, -0.998348385716445020, -0.998351256967741300, -0.998354125723159400, -0.998356991982692230, -0.998359855746332570, -0.998362717014073310, +-0.998365575785907230, -0.998368432061827240, -0.998371285841826110, -0.998374137125896840, -0.998376985914032230, -0.998379832206225060, -0.998382676002468330, -0.998385517302754930, +-0.998388356107077770, -0.998391192415429730, -0.998394026227803710, -0.998396857544192610, -0.998399686364589310, -0.998402512688986830, -0.998405336517378060, -0.998408157849756010, +-0.998410976686113560, -0.998413793026443620, -0.998416606870739190, -0.998419418218993270, -0.998422227071198880, -0.998425033427348780, -0.998427837287436120, -0.998430638651453980, +-0.998433437519395170, -0.998436233891252800, -0.998439027767019760, -0.998441819146689170, -0.998444608030254140, -0.998447394417707470, -0.998450178309042370, -0.998452959704251740, +-0.998455738603328810, -0.998458515006266590, -0.998461288913057960, -0.998464060323696170, -0.998466829238174200, -0.998469595656485190, -0.998472359578622130, -0.998475121004578250, +-0.998477879934346560, -0.998480636367920170, -0.998483390305292100, -0.998486141746455670, -0.998488890691403790, -0.998491637140129670, -0.998494381092626560, -0.998497122548887450, +-0.998499861508905460, -0.998502597972674040, -0.998505331940185870, -0.998508063411434500, -0.998510792386412940, -0.998513518865114410, -0.998516242847532150, -0.998518964333659160, +-0.998521683323488900, -0.998524399817014350, -0.998527113814228760, -0.998529825315125460, -0.998532534319697460, -0.998535240827938320, -0.998537944839840930, -0.998540646355398740, +-0.998543345374604980, -0.998546041897452770, -0.998548735923935450, -0.998551427454046350, -0.998554116487778700, -0.998556803025125730, -0.998559487066080780, -0.998562168610637070, +-0.998564847658787950, -0.998567524210526640, -0.998570198265846590, -0.998572869824741030, -0.998575538887203410, -0.998578205453226730, -0.998580869522804670, -0.998583531095930450, +-0.998586190172597420, -0.998588846752798800, -0.998591500836528150, -0.998594152423778690, -0.998596801514543890, -0.998599448108817180, -0.998602092206591680, -0.998604733807861080, +-0.998607372912618580, -0.998610009520857660, -0.998612643632571740, -0.998615275247754170, -0.998617904366398410, -0.998620530988497900, -0.998623155114046090, -0.998625776743036430, +-0.998628395875462260, -0.998631012511317030, -0.998633626650594410, -0.998636238293287630, -0.998638847439390350, -0.998641454088895930, -0.998644058241797810, -0.998646659898089540, +-0.998649259057764690, -0.998651855720816610, -0.998654449887238950, -0.998657041557025170, -0.998659630730168720, -0.998662217406663280, -0.998664801586502280, -0.998667383269679300, +-0.998669962456187780, -0.998672539146021390, -0.998675113339173580, -0.998677685035638140, -0.998680254235408400, -0.998682820938478040, -0.998685385144840620, -0.998687946854489810, +-0.998690506067419050, -0.998693062783622020, -0.998695617003092280, -0.998698168725823620, -0.998700717951809480, -0.998703264681043650, -0.998705808913519570, -0.998708350649230910, +-0.998710889888171470, -0.998713426630334690, -0.998715960875714460, -0.998718492624304340, -0.998721021876097900, -0.998723548631088920, -0.998726072889271070, -0.998728594650638120, +-0.998731113915183540, -0.998733630682901330, -0.998736144953784930, -0.998738656727828240, -0.998741166005024830, -0.998743672785368570, -0.998746177068853160, -0.998748678855472250, +-0.998751178145219630, -0.998753674938089090, -0.998756169234074400, -0.998758661033169240, -0.998761150335367500, -0.998763637140662740, -0.998766121449048970, -0.998768603260519860, +-0.998771082575069300, -0.998773559392691080, -0.998776033713378860, -0.998778505537126660, -0.998780974863928140, -0.998783441693777090, -0.998785906026667500, -0.998788367862593170, +-0.998790827201547880, -0.998793284043525630, -0.998795738388520090, -0.998798190236525270, -0.998800639587534840, -0.998803086441542920, -0.998805530798543280, -0.998807972658529720, +-0.998810412021496340, -0.998812848887436820, -0.998815283256345280, -0.998817715128215490, -0.998820144503041460, -0.998822571380816980, -0.998824995761536160, -0.998827417645192780, +-0.998829837031780960, -0.998832253921294490, -0.998834668313727360, -0.998837080209073580, -0.998839489607327050, -0.998841896508481870, -0.998844300912531850, -0.998846702819471190, +-0.998849102229293680, -0.998851499141993450, -0.998853893557564600, -0.998856285476000920, -0.998858674897296410, -0.998861061821445410, -0.998863446248441590, -0.998865828178279180, +-0.998868207610952300, -0.998870584546454830, -0.998872958984780900, -0.998875330925924620, -0.998877700369880000, -0.998880067316641140, -0.998882431766202060, -0.998884793718556870, +-0.998887153173699800, -0.998889510131624860, -0.998891864592326040, -0.998894216555797580, -0.998896566022033580, -0.998898912991028180, -0.998901257462775580, -0.998903599437269700, +-0.998905938914504960, -0.998908275894475280, -0.998910610377174880, -0.998912942362597980, -0.998915271850738810, -0.998917598841591370, -0.998919923335150010, -0.998922245331408720, +-0.998924564830361960, -0.998926881832003730, -0.998929196336328260, -0.998931508343329780, -0.998933817853002610, -0.998936124865340890, -0.998938429380338830, -0.998940731397990670, +-0.998943030918290730, -0.998945327941233140, -0.998947622466812350, -0.998949914495022350, -0.998952204025857720, -0.998954491059312440, -0.998956775595380990, -0.998959057634057680, +-0.998961337175336640, -0.998963614219212310, -0.998965888765678930, -0.998968160814730830, -0.998970430366362240, -0.998972697420567710, -0.998974961977341370, -0.998977224036677660, +-0.998979483598570810, -0.998981740663015260, -0.998983995230005470, -0.998986247299535560, -0.998988496871600070, -0.998990743946193360, -0.998992988523309870, -0.998995230602943820, +-0.998997470185089660, -0.998999707269741970, -0.999001941856894840, -0.999004173946542950, -0.999006403538680640, -0.999008630633302250, -0.999010855230402340, -0.999013077329975240, +-0.999015296932015520, -0.999017514036517510, -0.999019728643475660, -0.999021940752884640, -0.999024150364738680, -0.999026357479032350, -0.999028562095760080, -0.999030764214916430, +-0.999032963836495980, -0.999035160960492940, -0.999037355586902100, -0.999039547715717900, -0.999041737346934800, -0.999043924480547350, -0.999046109116550120, -0.999048291254937550, +-0.999050470895704310, -0.999052648038844860, -0.999054822684353750, -0.999056994832225650, -0.999059164482455020, -0.999061331635036520, -0.999063496289964710, -0.999065658447234160, +-0.999067818106839420, -0.999069975268775060, -0.999072129933035850, -0.999074282099616350, -0.999076431768511130, -0.999078578939714860, -0.999080723613222090, -0.999082865789027500, +-0.999085005467125750, -0.999087142647511530, -0.999089277330179380, -0.999091409515124100, -0.999093539202340230, -0.999095666391822570, -0.999097791083565780, -0.999099913277564420, +-0.999102032973813390, -0.999104150172307140, -0.999106264873040660, -0.999108377076008410, -0.999110486781205290, -0.999112593988625950, -0.999114698698265080, -0.999116800910117450, +-0.999118900624177850, -0.999120997840440950, -0.999123092558901640, -0.999125184779554590, -0.999127274502394580, -0.999129361727416290, -0.999131446454614710, -0.999133528683984420, +-0.999135608415520290, -0.999137685649217230, -0.999139760385070020, -0.999141832623073320, -0.999143902363222040, -0.999145969605510940, -0.999148034349934930, -0.999150096596488900, +-0.999152156345167630, -0.999154213595965900, -0.999156268348878720, -0.999158320603900860, -0.999160370361027230, -0.999162417620252600, -0.999164462381571970, -0.999166504644980140, +-0.999168544410471980, -0.999170581678042620, -0.999172616447686730, -0.999174648719399320, -0.999176678493175260, -0.999178705769009470, -0.999180730546897040, -0.999182752826832670, +-0.999184772608811440, -0.999186789892828280, -0.999188804678878270, -0.999190816966956110, -0.999192826757056900, -0.999194834049175640, -0.999196838843307340, -0.999198841139446900, +-0.999200840937589430, -0.999202838237729820, -0.999204833039863070, -0.999206825343984310, -0.999208815150088410, -0.999210802458170510, -0.999212787268225600, -0.999214769580248690, +-0.999216749394234880, -0.999218726710179310, -0.999220701528076850, -0.999222673847922520, -0.999224643669711640, -0.999226610993439120, -0.999228575819100070, -0.999230538146689610, +-0.999232497976202730, -0.999234455307634660, -0.999236410140980410, -0.999238362476235100, -0.999240312313393940, -0.999242259652452060, -0.999244204493404450, -0.999246146836246350, +-0.999248086680972870, -0.999250024027579230, -0.999251958876060550, -0.999253891226411840, -0.999255821078628540, -0.999257748432705540, -0.999259673288638290, -0.999261595646421920, +-0.999263515506051410, -0.999265432867522120, -0.999267347730829370, -0.999269260095968170, -0.999271169962933750, -0.999273077331721550, -0.999274982202326580, -0.999276884574744170, +-0.999278784448969560, -0.999280681824997960, -0.999282576702824610, -0.999284469082444950, -0.999286358963853980, -0.999288246347047160, -0.999290131232019820, -0.999292013618767070, +-0.999293893507284260, -0.999295770897566720, -0.999297645789609780, -0.999299518183408790, -0.999301388078958960, -0.999303255476255540, -0.999305120375294180, -0.999306982776069890, +-0.999308842678578220, -0.999310700082814420, -0.999312554988773800, -0.999314407396451830, -0.999316257305843840, -0.999318104716945270, -0.999319949629751350, -0.999321792044257640, +-0.999323631960459370, -0.999325469378352090, -0.999327304297931150, -0.999329136719191880, -0.999330966642129730, -0.999332794066740250, -0.999334618993018790, -0.999336441420960790, +-0.999338261350561700, -0.999340078781816850, -0.999341893714721820, -0.999343706149272150, -0.999345516085463180, -0.999347323523290370, -0.999349128462749370, -0.999350930903835420, +-0.999352730846544190, -0.999354528290871120, -0.999356323236811780, -0.999358115684361610, -0.999359905633516070, -0.999361693084270810, -0.999363478036621400, -0.999365260490563290, +-0.999367040446091930, -0.999368817903202980, -0.999370592861892120, -0.999372365322154680, -0.999374135283986330, -0.999375902747382640, -0.999377667712339160, -0.999379430178851560, +-0.999381190146915400, -0.999382947616526130, -0.999384702587679640, -0.999386455060371380, -0.999388205034596910, -0.999389952510352010, -0.999391697487632240, -0.999393439966433150, +-0.999395179946750420, -0.999396917428579830, -0.999398652411916940, -0.999400384896757420, -0.999402114883096940, -0.999403842370931160, -0.999405567360255760, -0.999407289851066420, +-0.999409009843358900, -0.999410727337128880, -0.999412442332372030, -0.999414154829084020, -0.999415864827260640, -0.999417572326897650, -0.999419277327990740, -0.999420979830535570, +-0.999422679834527930, -0.999424377339963590, -0.999426072346838450, -0.999427764855148060, -0.999429454864888210, -0.999431142376054680, -0.999432827388643360, -0.999434509902650040, +-0.999436189918070260, -0.999437867434900150, -0.999439542453135380, -0.999441214972771720, -0.999442884993805070, -0.999444552516231100, -0.999446217540045810, -0.999447880065244990, +-0.999449540091824410, -0.999451197619780070, -0.999452852649107660, -0.999454505179803170, -0.999456155211862370, -0.999457802745281290, -0.999459447780055580, -0.999461090316181240, +-0.999462730353654290, -0.999464367892470400, -0.999466002932625660, -0.999467635474115990, -0.999469265516937040, -0.999470893061085050, -0.999472518106555800, -0.999474140653345280, +-0.999475760701449390, -0.999477378250864130, -0.999478993301585410, -0.999480605853609210, -0.999482215906931430, -0.999483823461548180, -0.999485428517455250, -0.999487031074648870, +-0.999488631133124920, -0.999490228692879400, -0.999491823753908220, -0.999493416316207580, -0.999495006379773290, -0.999496593944601550, -0.999498179010688380, -0.999499761578029670, +-0.999501341646621630, -0.999502919216460170, -0.999504494287541510, -0.999506066859861540, -0.999507636933416380, -0.999509204508202130, -0.999510769584214920, -0.999512332161450750, +-0.999513892239905720, -0.999515449819576070, -0.999517004900457700, -0.999518557482546810, -0.999520107565839640, -0.999521655150332090, -0.999523200236020480, -0.999524742822900820, +-0.999526282910969340, -0.999527820500222040, -0.999529355590655370, -0.999530888182265210, -0.999532418275047800, -0.999533945868999350, -0.999535470964116100, -0.999536993560394160, +-0.999538513657829750, -0.999540031256418990, -0.999541546356158220, -0.999543058957043540, -0.999544569059071190, -0.999546076662237380, -0.999547581766538570, -0.999549084371970650, +-0.999550584478530070, -0.999552082086212930, -0.999553577195015700, -0.999555069804934470, -0.999556559915965590, -0.999558047528105400, -0.999559532641350000, -0.999561015255695740, +-0.999562495371138950, -0.999563972987675960, -0.999565448105303010, -0.999566920724016540, -0.999568390843812660, -0.999569858464687820, -0.999571323586638360, -0.999572786209660610, +-0.999574246333750800, -0.999575703958905490, -0.999577159085120790, -0.999578611712393260, -0.999580061840719240, -0.999581509470095050, -0.999582954600517050, -0.999584397231981780, +-0.999585837364485360, -0.999587274998024470, -0.999588710132595320, -0.999590142768194360, -0.999591572904818150, -0.999593000542462920, -0.999594425681125220, -0.999595848320801510, +-0.999597268461488110, -0.999598686103181480, -0.999600101245878280, -0.999601513889574740, -0.999602924034267430, -0.999604331679952770, -0.999605736826627340, -0.999607139474287590, +-0.999608539622929950, -0.999609937272550990, -0.999611332423147150, -0.999612725074714990, -0.999614115227251080, -0.999615502880751740, -0.999616888035213760, -0.999618270690633580, +-0.999619650847007660, -0.999621028504332540, -0.999622403662605020, -0.999623776321821420, -0.999625146481978310, -0.999626514143072460, -0.999627879305100220, -0.999629241968058360, +-0.999630602131943320, -0.999631959796751790, -0.999633314962480420, -0.999634667629125670, -0.999636017796684320, -0.999637365465152920, -0.999638710634528140, -0.999640053304806540, +-0.999641393475984800, -0.999642731148059570, -0.999644066321027540, -0.999645398994885250, -0.999646729169629600, -0.999648056845257040, -0.999649382021764450, -0.999650704699148300, +-0.999652024877405340, -0.999653342556532490, -0.999654657736526180, -0.999655970417383190, -0.999657280599100310, -0.999658588281674310, -0.999659893465101760, -0.999661196149379430, +-0.999662496334504210, -0.999663794020472670, -0.999665089207281700, -0.999666381894927960, -0.999667672083408340, -0.999668959772719520, -0.999670244962858280, -0.999671527653821390, +-0.999672807845605750, -0.999674085538208020, -0.999675360731625110, -0.999676633425853780, -0.999677903620890930, -0.999679171316733230, -0.999680436513377680, -0.999681699210820950, +-0.999682959409060050, -0.999684217108091740, -0.999685472307912940, -0.999686725008520400, -0.999687975209911040, -0.999689222912081730, -0.999690468115029370, -0.999691710818750860, +-0.999692951023243070, -0.999694188728502910, -0.999695423934527260, -0.999696656641313130, -0.999697886848857300, -0.999699114557156760, -0.999700339766208420, -0.999701562476009160, +-0.999702782686556100, -0.999704000397846020, -0.999705215609876020, -0.999706428322642890, -0.999707638536143750, -0.999708846250375480, -0.999710051465335090, -0.999711254181019580, +-0.999712454397425950, -0.999713652114551210, -0.999714847332392350, -0.999716040050946280, -0.999717230270210200, -0.999718417990181020, -0.999719603210855730, -0.999720785932231460, +-0.999721966154305310, -0.999723143877074170, -0.999724319100535160, -0.999725491824685400, -0.999726662049521870, -0.999727829775041710, -0.999728995001242020, -0.999730157728119790, +-0.999731317955672160, -0.999732475683896230, -0.999733630912789110, -0.999734783642347910, -0.999735933872569870, -0.999737081603451870, -0.999738226834991140, -0.999739369567184900, +-0.999740509800030260, -0.999741647533524350, -0.999742782767664260, -0.999743915502447230, -0.999745045737870490, -0.999746173473931020, -0.999747298710626180, -0.999748421447953170, +-0.999749541685909020, -0.999750659424490930, -0.999751774663696360, -0.999752887403522190, -0.999753997643965890, -0.999755105385024660, -0.999756210626695620, -0.999757313368976000, +-0.999758413611863130, -0.999759511355354240, -0.999760606599446540, -0.999761699344137390, -0.999762789589423880, -0.999763877335303470, -0.999764962581773390, -0.999766045328830840, +-0.999767125576473180, -0.999768203324697740, -0.999769278573501840, -0.999770351322882720, -0.999771421572837720, -0.999772489323364040, -0.999773554574459270, -0.999774617326120610, +-0.999775677578345400, -0.999776735331130980, -0.999777790584474690, -0.999778843338373970, -0.999779893592826150, -0.999780941347828580, -0.999781986603378580, -0.999783029359473720, +-0.999784069616111220, -0.999785107373288630, -0.999786142631003180, -0.999787175389252440, -0.999788205648033720, -0.999789233407344490, -0.999790258667182190, -0.999791281427544250, +-0.999792301688428140, -0.999793319449831190, -0.999794334711750940, -0.999795347474184970, -0.999796357737130600, -0.999797365500585290, -0.999798370764546580, -0.999799373529011940, +-0.999800373793978790, -0.999801371559444820, -0.999802366825407350, -0.999803359591864060, -0.999804349858812280, -0.999805337626249680, -0.999806322894173700, -0.999807305662581910, +-0.999808285931471860, -0.999809263700841110, -0.999810238970687220, -0.999811211741007730, -0.999812182011800220, -0.999813149783062240, -0.999814115054791340, -0.999815077826985200, +-0.999816038099641370, -0.999816995872757410, -0.999817951146330990, -0.999818903920359660, -0.999819854194841100, -0.999820801969772850, -0.999821747245152710, -0.999822690020978120, +-0.999823630297246750, -0.999824568073956370, -0.999825503351104650, -0.999826436128689040, -0.999827366406707440, -0.999828294185157400, -0.999829219464036580, -0.999830142243342770, +-0.999831062523073520, -0.999831980303226730, -0.999832895583799840, -0.999833808364790850, -0.999834718646197330, -0.999835626428016930, -0.999836531710247560, -0.999837434492886760, +-0.999838334775932420, -0.999839232559382230, -0.999840127843234060, -0.999841020627485480, -0.999841910912134260, -0.999842798697178400, -0.999843683982615470, -0.999844566768443350, +-0.999845447054659830, -0.999846324841262790, -0.999847200128249790, -0.999848072915618840, -0.999848943203367700, -0.999849810991494170, -0.999850676279996240, -0.999851539068871480, +-0.999852399358117980, -0.999853257147733430, -0.999854112437715710, -0.999854965228062720, -0.999855815518772340, -0.999856663309842460, -0.999857508601270870, -0.999858351393055460, +-0.999859191685194220, -0.999860029477685040, -0.999860864770525710, -0.999861697563714350, -0.999862527857248610, -0.999863355651126610, -0.999864180945346240, -0.999865003739905390, +-0.999865824034801950, -0.999866641830034040, -0.999867457125599550, -0.999868269921496360, -0.999869080217722580, -0.999869888014276010, -0.999870693311154750, -0.999871496108356790, +-0.999872296405880050, -0.999873094203722610, -0.999873889501882380, -0.999874682300357480, -0.999875472599145780, -0.999876260398245510, -0.999877045697654570, -0.999877828497370950, +-0.999878608797392760, -0.999879386597718130, -0.999880161898344940, -0.999880934699271420, -0.999881705000495560, -0.999882472802015480, -0.999883238103829060, -0.999884000905934660, +-0.999884761208330250, -0.999885519011013970, -0.999886274313983800, -0.999887027117238090, -0.999887777420774610, -0.999888525224591820, -0.999889270528687700, -0.999890013333060490, +-0.999890753637708070, -0.999891491442628900, -0.999892226747820970, -0.999892959553282390, -0.999893689859011500, -0.999894417665006420, -0.999895142971265140, -0.999895865777786110, +-0.999896586084567440, -0.999897303891607360, -0.999898019198903860, -0.999898732006455400, -0.999899442314260090, -0.999900150122316260, -0.999900855430621900, -0.999901558239175480, +-0.999902258547975210, -0.999902956357019200, -0.999903651666305900, -0.999904344475833430, -0.999905034785600110, -0.999905722595604170, -0.999906407905843950, -0.999907090716317670, +-0.999907771027023660, -0.999908448837960260, -0.999909124149125810, -0.999909796960518400, -0.999910467272136620, -0.999911135083978550, -0.999911800396042770, -0.999912463208327500, +-0.999913123520830950, -0.999913781333551690, -0.999914436646487940, -0.999915089459638030, -0.999915739773000520, -0.999916387586573530, -0.999917032900355720, -0.999917675714345200, +-0.999918316028540640, -0.999918953842940160, -0.999919589157542310, -0.999920221972345540, -0.999920852287348170, -0.999921480102548670, -0.999922105417945460, -0.999922728233537010, +-0.999923348549321740, -0.999923966365298120, -0.999924581681464590, -0.999925194497819580, -0.999925804814361550, -0.999926412631089060, -0.999927017948000540, -0.999927620765094450, +-0.999928221082369340, -0.999928818899823660, -0.999929414217455960, -0.999930007035264690, -0.999930597353248410, -0.999931185171405670, -0.999931770489734920, -0.999932353308234710, +-0.999932933626903720, -0.999933511445740280, -0.999934086764743160, -0.999934659583910810, -0.999935229903241800, -0.999935797722734660, -0.999936363042388090, -0.999936925862200620, +-0.999937486182170820, -0.999938044002297240, -0.999938599322578560, -0.999939152143013430, -0.999939702463600420, -0.999940250284338190, -0.999940795605225310, -0.999941338426260430, +-0.999941878747442230, -0.999942416568769250, -0.999942951890240290, -0.999943484711853900, -0.999944015033608860, -0.999944542855503830, -0.999945068177537370, -0.999945590999708260, +-0.999946111322015160, -0.999946629144456760, -0.999947144467031810, -0.999947657289739000, -0.999948167612577100, -0.999948675435544660, -0.999949180758640700, -0.999949683581863650, +-0.999950183905212400, -0.999950681728685730, -0.999951177052282420, -0.999951669876001040, -0.999952160199840570, -0.999952648023799680, -0.999953133347877170, -0.999953616172071790, +-0.999954096496382450, -0.999954574320807810, -0.999955049645346760, -0.999955522469998080, -0.999955992794760550, -0.999956460619633060, -0.999956925944614490, -0.999957388769703530, +-0.999957849094899150, -0.999958306920200050, -0.999958762245605310, -0.999959215071113520, -0.999959665396723870, -0.999960113222434940, -0.999960558548245730, -0.999961001374155110, +-0.999961441700162100, -0.999961879526265360, -0.999962314852464010, -0.999962747678756810, -0.999963178005142780, -0.999963605831620810, -0.999964031158189770, -0.999964453984848680, +-0.999964874311596530, -0.999965292138432100, -0.999965707465354400, -0.999966120292362540, -0.999966530619455400, -0.999966938446631870, -0.999967343773890960, -0.999967746601231780, +-0.999968146928653100, -0.999968544756154150, -0.999968940083733830, -0.999969332911391230, -0.999969723239125140, -0.999970111066934900, -0.999970496394819270, -0.999970879222777500, +-0.999971259550808460, -0.999971637378911260, -0.999972012707085020, -0.999972385535328740, -0.999972755863641430, -0.999973123692022290, -0.999973489020470340, -0.999973851848984690, +-0.999974212177564330, -0.999974570006208490, -0.999974925334916280, -0.999975278163686700, -0.999975628492518860, -0.999975976321412000, -0.999976321650365210, -0.999976664479377610, +-0.999977004808448420, -0.999977342637576650, -0.999977677966761510, -0.999978010796002240, -0.999978341125297930, -0.999978668954647710, -0.999978994284050790, -0.999979317113506520, +-0.999979637443013880, -0.999979955272572110, -0.999980270602180530, -0.999980583431838270, -0.999980893761544420, -0.999981201591298440, -0.999981506921099440, -0.999981809750946750, +-0.999982110080839480, -0.999982407910776860, -0.999982703240758330, -0.999982996070783000, -0.999983286400850100, -0.999983574230959070, -0.999983859561109130, -0.999984142391299510, +-0.999984422721529540, -0.999984700551798560, -0.999984975882105780, -0.999985248712450540, -0.999985519042832170, -0.999985786873250020, -0.999986052203703400, -0.999986315034191660, +-0.999986575364714140, -0.999986833195270150, -0.999987088525859160, -0.999987341356480370, -0.999987591687133250, -0.999987839517817110, -0.999988084848531520, -0.999988327679275590, +-0.999988568010048870, -0.999988805840850700, -0.999989041171680530, -0.999989274002537790, -0.999989504333421820, -0.999989732164332070, -0.999989957495268090, -0.999990180326229110, +-0.999990400657214780, -0.999990618488224350, -0.999990833819257460, -0.999991046650313460, -0.999991256981391800, -0.999991464812492010, -0.999991670143613560, -0.999991872974756000, +-0.999992073305918770, -0.999992271137101210, -0.999992466468303090, -0.999992659299523750, -0.999992849630762850, -0.999993037462019730, -0.999993222793294060, -0.999993405624585390, +-0.999993585955893050, -0.999993763787216830, -0.999993939118556270, -0.999994111949910840, -0.999994282281280070, -0.999994450112663640, -0.999994615444060990, -0.999994778275471900, +-0.999994938606895810, -0.999995096438332400, -0.999995251769781320, -0.999995404601242030, -0.999995554932714190, -0.999995702764197580, -0.999995848095691640, -0.999995990927196040, +-0.999996131258710560, -0.999996269090234650, -0.999996404421768180, -0.999996537253310610, -0.999996667584861720, -0.999996795416421170, -0.999996920747988630, -0.999997043579563760, +-0.999997163911146350, -0.999997281742736050, -0.999997397074332440, -0.999997509905935390, -0.999997620237544570, -0.999997728069159650, -0.999997833400780520, -0.999997936232406740, +-0.999998036564038070, -0.999998134395674420, -0.999998229727315340, -0.999998322558960710, -0.999998412890610310, -0.999998500722263820, -0.999998586053921110, -0.999998668885581980, +-0.999998749217246070, -0.999998827048913410, -0.999998902380583640, -0.999998975212256560, -0.999999045543932150, -0.999999113375609980, -0.999999178707290160, -0.999999241538972350, +-0.999999301870656440, -0.999999359702342220, -0.999999415034029670, -0.999999467865718580, -0.999999518197408730, -0.999999566029100230, -0.999999611360792740, -0.999999654192486150, +-0.999999694524180470, -0.999999732355875580, -0.999999767687571370, -0.999999800519267730, -0.999999830850964670, -0.999999858682661950, -0.999999884014359570, -0.999999906846057440, +-0.999999927177755650, -0.999999945009453990, -0.999999960341152460, -0.999999973172851050, -0.999999983504549660, -0.999999991336248390, -0.999999996667947140, -0.999999999499645800, +-0.999999999831344580, -0.999999997663043260, -0.999999992994741960, -0.999999985826440780, -0.999999976158139510, -0.999999963989838370, -0.999999949321537350, -0.999999932153236350, +-0.999999912484935580, -0.999999890316635050, -0.999999865648334760, -0.999999838480034820, -0.999999808811735340, -0.999999776643436310, -0.999999741975137750, -0.999999704806839970, +-0.999999665138542880, -0.999999622970246580, -0.999999578301951190, -0.999999531133656920, -0.999999481465363880, -0.999999429297072080, -0.999999374628781630, -0.999999317460492860, +-0.999999257792205780, -0.999999195623920480, -0.999999130955637310, -0.999999063787356150, -0.999998994119077440, -0.999998921950801200, -0.999998847282527750, -0.999998770114257090, +-0.999998690445989550, -0.999998608277725240, -0.999998523609464510, -0.999998436441207340, -0.999998346772954180, -0.999998254604705040, -0.999998159936460350, -0.999998062768220230, +-0.999997963099985010, -0.999997860931754800, -0.999997756263530050, -0.999997649095310860, -0.999997539427097460, -0.999997427258890290, -0.999997312590689580, -0.999997195422495540, +-0.999997075754308520, -0.999996953586128830, -0.999996828917956710, -0.999996701749792600, -0.999996572081636610, -0.999996439913489300, -0.999996305245350880, -0.999996168077221690, +-0.999996028409102070, -0.999995886240992340, -0.999995741572892950, -0.999995594404804120, -0.999995444736726410, -0.999995292568660040, -0.999995137900605460, -0.999994980732562990, +-0.999994821064533080, -0.999994658896516180, -0.999994494228512610, -0.999994327060522830, -0.999994157392547160, -0.999993985224586160, -0.999993810556640160, -0.999993633388709610, +-0.999993453720794960, -0.999993271552896750, -0.999993086885015310, -0.999992899717151220, -0.999992710049304790, -0.999992517881476690, -0.999992323213667270, -0.999992126045876950, +-0.999991926378106410, -0.999991724210355980, -0.999991519542626330, -0.999991312374917780, -0.999991102707231020, -0.999990890539566470, -0.999990675871924810, -0.999990458704306360, +-0.999990239036711690, -0.999990016869141570, -0.999989792201596340, -0.999989565034076540, -0.999989335366582970, -0.999989103199116050, -0.999988868531676230, -0.999988631364264410, +-0.999988391696880920, -0.999988149529526530, -0.999987904862201680, -0.999987657694907050, -0.999987408027643300, -0.999987155860411090, -0.999986901193210990, -0.999986644026043540, +-0.999986384358909630, -0.999986122191809600, -0.999985857524744340, -0.999985590357714500, -0.999985320690720550, -0.999985048523763350, -0.999984773856843590, -0.999984496689961920, +-0.999984217023118900, -0.999983934856315430, -0.999983650189552040, -0.999983363022829530, -0.999983073356148670, -0.999982781189510120, -0.999982486522914550, -0.999982189356362850, +-0.999981889689855570, -0.999981587523393720, -0.999981282856977740, -0.999980975690608620, -0.999980666024287150, -0.999980353858013870, -0.999980039191789790, -0.999979722025615580, +-0.999979402359492120, -0.999979080193420080, -0.999978755527400340, -0.999978428361433800, -0.999978098695521120, -0.999977766529663190, -0.999977431863860900, -0.999977094698115020, +-0.999976755032426330, -0.999976412866795840, -0.999976068201224310, -0.999975721035712530, -0.999975371370261490, -0.999975019204872080, -0.999974664539545090, -0.999974307374281390, +-0.999973947709081880, -0.999973585543947660, -0.999973220878879410, -0.999972853713878010, -0.999972484048944570, -0.999972111884079970, -0.999971737219285010, -0.999971360054560670, +-0.999970980389908060, -0.999970598225327860, -0.999970213560821270, -0.999969826396389090, -0.999969436732032310, -0.999969044567752040, -0.999968649903549060, -0.999968252739424580, +-0.999967853075379390, -0.999967450911414590, -0.999967046247531080, -0.999966639083730070, -0.999966229420012340, -0.999965817256379120, -0.999965402592831400, -0.999964985429370070, +-0.999964565765996350, -0.999964143602711240, -0.999963718939515630, -0.999963291776410860, -0.999962862113397800, -0.999962429950477680, -0.999961995287651400, -0.999961558124920160, +-0.999961118462284970, -0.999960676299747050, -0.999960231637307410, -0.999959784474967140, -0.999959334812727470, -0.999958882650589410, -0.999958427988554280, -0.999957970826622970, +-0.999957511164796700, -0.999957049003076690, -0.999956584341464170, -0.999956117179960020, -0.999955647518565690, -0.999955175357282180, -0.999954700696110810, -0.999954223535052590, +-0.999953743874108850, -0.999953261713280810, -0.999952777052569460, -0.999952289891976380, -0.999951800231502430, -0.999951308071148960, -0.999950813410917290, -0.999950316250808660, +-0.999949816590824050, -0.999949314430965020, -0.999948809771232680, -0.999948302611628370, -0.999947792952153300, -0.999947280792808700, -0.999946766133595900, -0.999946248974516120, +-0.999945729315570800, -0.999945207156761160, -0.999944682498088430, -0.999944155339554160, -0.999943625681159350, -0.999943093522905560, -0.999942558864794000, -0.999942021706826000, +-0.999941482049003020, -0.999940939891326260, -0.999940395233797190, -0.999939848076417110, -0.999939298419187490, -0.999938746262109550, -0.999938191605184710, -0.999937634448414550, +-0.999937074791800160, -0.999936512635343110, -0.999935947979044840, -0.999935380822906560, -0.999934811166929950, -0.999934239011116330, -0.999933664355467040, -0.999933087199983640, +-0.999932507544667450, -0.999931925389520030, -0.999931340734542820, -0.999930753579737260, -0.999930163925104810, -0.999929571770646900, -0.999928977116365190, -0.999928379962260920, +-0.999927780308335730, -0.999927178154591090, -0.999926573501028540, -0.999925966347649520, -0.999925356694455590, -0.999924744541448310, -0.999924129888629110, -0.999923512735999550, +-0.999922893083561300, -0.999922270931315800, -0.999921646279264610, -0.999921019127409270, -0.999920389475751350, -0.999919757324292610, -0.999919122673034290, -0.999918485521978260, +-0.999917845871126090, -0.999917203720479210, -0.999916559070039290, -0.999915911919808110, -0.999915262269787000, -0.999914610119977840, -0.999913955470382090, -0.999913298321001510, +-0.999912638671837660, -0.999911976522892210, -0.999911311874166820, -0.999910644725663160, -0.999909975077382880, -0.999909302929327670, -0.999908628281499180, -0.999907951133899080, +-0.999907271486529140, -0.999906589339391030, -0.999905904692486520, -0.999905217545817180, -0.999904527899384780, -0.999903835753191080, -0.999903141107237770, -0.999902443961526610, +-0.999901744316059380, -0.999901042170837750, -0.999900337525863600, -0.999899630381138490, -0.999898920736664310, -0.999898208592442940, -0.999897493948475930, -0.999896776804765300, +-0.999896057161312690, -0.999895335018119890, -0.999894610375188790, -0.999893883232521150, -0.999893153590118770, -0.999892421447983510, -0.999891686806117290, -0.999890949664521740, +-0.999890210023198890, -0.999889467882150500, -0.999888723241378450, -0.999887976100884530, -0.999887226460670740, -0.999886474320738850, -0.999885719681090860, -0.999884962541728430, +-0.999884202902653670, -0.999883440763868370, -0.999882676125374510, -0.999881908987174000, -0.999881139349268590, -0.999880367211660400, -0.999879592574351330, -0.999878815437343250, +-0.999878035800638170, -0.999877253664237850, -0.999876469028144530, -0.999875681892360090, -0.999874892256886310, -0.999874100121725400, -0.999873305486879140, -0.999872508352349750, +-0.999871708718139020, -0.999870906584248930, -0.999870101950681710, -0.999869294817439140, -0.999868485184523430, -0.999867673051936470, -0.999866858419680260, -0.999866041287757020, +-0.999865221656168530, -0.999864399524917120, -0.999863574894004680, -0.999862747763433200, -0.999861918133205020, -0.999861086003321910, -0.999860251373786200, -0.999859414244599790, +-0.999858574615764770, -0.999857732487283490, -0.999856887859157720, -0.999856040731389780, -0.999855191103981800, -0.999854338976935760, -0.999853484350254010, -0.999852627223938420, +-0.999851767597991210, -0.999850905472414730, -0.999850040847210960, -0.999849173722382020, -0.999848304097930130, -0.999847431973857610, -0.999846557350166370, -0.999845680226858820, +-0.999844800603937100, -0.999843918481403300, -0.999843033859259660, -0.999842146737508490, -0.999841257116152020, -0.999840364995192350, -0.999839470374631830, -0.999838573254472560, +-0.999837673634716870, -0.999836771515366980, -0.999835866896425230, -0.999834959777893720, -0.999834050159774890, -0.999833138042070860, -0.999832223424784060, -0.999831306307916610, +-0.999830386691470950, -0.999829464575449410, -0.999828539959854100, -0.999827612844687460, -0.999826683229951830, -0.999825751115649420, -0.999824816501782680, -0.999823879388353930, +-0.999822939775365400, -0.999821997662819540, -0.999821053050718780, -0.999820105939065340, -0.999819156327861560, -0.999818204217109980, -0.999817249606812840, -0.999816292496972570, +-0.999815332887591610, -0.999814370778672300, -0.999813406170217080, -0.999812439062228280, -0.999811469454708450, -0.999810497347659920, -0.999809522741085140, -0.999808545634986560, +-0.999807566029366710, -0.999806583924227830, -0.999805599319572470, -0.999804612215403180, -0.999803622611722400, -0.999802630508532460, -0.999801635905836040, -0.999800638803635460, +-0.999799639201933270, -0.999798637100732020, -0.999797632500034170, -0.999796625399842260, -0.999795615800158740, -0.999794603700986270, -0.999793589102327180, -0.999792572004184250, +-0.999791552406559810, -0.999790530309456420, -0.999789505712876840, -0.999788478616823410, -0.999787449021298790, -0.999786416926305650, -0.999785382331846330, -0.999784345237923590, +-0.999783305644539990, -0.999782263551698190, -0.999781218959400640, -0.999780171867650110, -0.999779122276449160, -0.999778070185800340, -0.999777015595706420, -0.999775958506169850, +-0.999774898917193510, -0.999773836828779850, -0.999772772240931640, -0.999771705153651440, -0.999770635566942010, -0.999769563480806030, -0.999768488895246050, -0.999767411810264960, +-0.999766332225865310, -0.999765250142049760, -0.999764165558821080, -0.999763078476182070, -0.999761988894135370, -0.999760896812683650, -0.999759802231829700, -0.999758705151576280, +-0.999757605571926060, -0.999756503492881810, -0.999755398914446310, -0.999754291836622340, -0.999753182259412570, -0.999752070182819860, -0.999750955606847010, -0.999749838531496790, +-0.999748718956771980, -0.999747596882675340, -0.999746472309209770, -0.999745345236377920, -0.999744215664182810, -0.999743083592627090, -0.999741949021713650, -0.999740811951445370, +-0.999739672381825040, -0.999738530312855640, -0.999737385744539740, -0.999736238676880550, -0.999735089109880630, -0.999733937043542960, -0.999732782477870560, -0.999731625412866200, +-0.999730465848532760, -0.999729303784873120, -0.999728139221890190, -0.999726972159586950, -0.999725802597966280, -0.999724630537031200, -0.999723455976784470, -0.999722278917229090, +-0.999721099358367950, -0.999719917300204150, -0.999718732742740480, -0.999717545685980040, -0.999716356129925710, -0.999715164074580500, -0.999713969519947400, -0.999712772466029410, +-0.999711572912829420, -0.999710370860350530, -0.999709166308595740, -0.999707959257567950, -0.999706749707270360, -0.999705537657705870, -0.999704323108877470, -0.999703106060788270, +-0.999701886513441380, -0.999700664466839690, -0.999699439920986420, -0.999698212875884560, -0.999696983331537110, -0.999695751287947190, -0.999694516745117890, -0.999693279703052330, +-0.999692040161753610, -0.999690798121224740, -0.999689553581468940, -0.999688306542489190, -0.999687057004288620, -0.999685804966870540, -0.999684550430237850, -0.999683293394393770, +-0.999682033859341510, -0.999680771825084190, -0.999679507291624910, -0.999678240258966900, -0.999676970727113260, -0.999675698696067090, -0.999674424165831850, -0.999673147136410420, +-0.999671867607806240, -0.999670585580022310, -0.999669301053061950, -0.999668014026928290, -0.999666724501624640, -0.999665432477154110, -0.999664137953520050, -0.999662840930725660, +-0.999661541408774170, -0.999660239387668790, -0.999658934867412860, -0.999657627848009600, -0.999656318329462220, -0.999655006311774060, -0.999653691794948340, -0.999652374778988500, +-0.999651055263897640, -0.999649733249679210, -0.999648408736336310, -0.999647081723872510, -0.999645752212291020, -0.999644420201595050, -0.999643085691788170, -0.999641748682873480, +-0.999640409174854420, -0.999639067167734320, -0.999637722661516630, -0.999636375656204560, -0.999635026151801550, -0.999633674148311060, -0.999632319645736290, -0.999630962644080800, +-0.999629603143347810, -0.999628241143540870, -0.999626876644663320, -0.999625509646718590, -0.999624140149710130, -0.999622768153641260, -0.999621393658515430, -0.999620016664336200, +-0.999618637171106880, -0.999617255178831040, -0.999615870687512010, -0.999614483697153220, -0.999613094207758350, -0.999611702219330710, -0.999610307731873760, -0.999608910745391040, +-0.999607511259886120, -0.999606109275362420, -0.999604704791823400, -0.999603297809272600, -0.999601888327713680, -0.999600476347149880, -0.999599061867584960, -0.999597644889022360, +-0.999596225411465760, -0.999594803434918470, -0.999593378959384160, -0.999591951984866500, -0.999590522511368930, -0.999589090538895000, -0.999587656067448370, -0.999586219097032710, +-0.999584779627651350, -0.999583337659308070, -0.999581893192006520, -0.999580446225750150, -0.999578996760542740, -0.999577544796387830, -0.999576090333288980, -0.999574633371249970, +-0.999573173910274450, -0.999571711950365870, -0.999570247491528010, -0.999568780533764630, -0.999567311077079190, -0.999565839121475560, -0.999564364666957310, -0.999562887713528080, +-0.999561408261191780, -0.999559926309951830, -0.999558441859812130, -0.999556954910776230, -0.999555465462848130, -0.999553973516031150, -0.999552479070329400, -0.999550982125746330, +-0.999549482682285940, -0.999547980739951770, -0.999546476298747600, -0.999544969358677320, -0.999543459919744580, -0.999541947981953170, -0.999540433545306860, -0.999538916609809540, +-0.999537397175464970, -0.999535875242276830, -0.999534350810248990, -0.999532823879385360, -0.999531294449689580, -0.999529762521165650, -0.999528228093817250, -0.999526691167648250, +-0.999525151742662540, -0.999523609818864010, -0.999522065396256430, -0.999520518474843690, -0.999518969054629670, -0.999517417135618150, -0.999515862717813120, -0.999514305801218470, +-0.999512746385838090, -0.999511184471675750, -0.999509620058735560, -0.999508053147021180, -0.999506483736536830, -0.999504911827286180, -0.999503337419273220, -0.999501760512501950, +-0.999500181106976250, -0.999498599202700120, -0.999497014799677560, -0.999495427897912350, -0.999493838497408690, -0.999492246598170380, -0.999490652200201390, -0.999489055303505850, +-0.999487455908087630, -0.999485854013950850, -0.999484249621099270, -0.999482642729537240, -0.999481033339268520, -0.999479421450297220, -0.999477807062627340, -0.999476190176262990, +-0.999474570791208160, -0.999472948907466960, -0.999471324525043280, -0.999469697643941330, -0.999468068264165120, -0.999466436385718750, -0.999464802008606320, -0.999463165132831950, +-0.999461525758399530, -0.999459883885313370, -0.999458239513577480, -0.999456592643195970, -0.999454943274173060, -0.999453291406512730, -0.999451637040219110, -0.999449980175296520, +-0.999448320811748840, -0.999446658949580510, -0.999444994588795430, -0.999443327729397920, -0.999441658371392090, -0.999439986514782050, -0.999438312159572130, -0.999436635305766430, +-0.999434955953369060, -0.999433274102384360, -0.999431589752816430, -0.999429902904669600, -0.999428213557947980, -0.999426521712655780, -0.999424827368797340, -0.999423130526376770, +-0.999421431185398390, -0.999419729345866430, -0.999418025007785200, -0.999416318171158840, -0.999414608835991760, -0.999412897002288080, -0.999411182670052240, -0.999409465839288360, +-0.999407746510000860, -0.999406024682193970, -0.999404300355872130, -0.999402573531039450, -0.999400844207700260, -0.999399112385859100, -0.999397378065520090, -0.999395641246687560, +-0.999393901929366060, -0.999392160113559800, -0.999390415799273010, -0.999388668986510350, -0.999386919675275930, -0.999385167865574190, -0.999383413557409560, -0.999381656750786380, +-0.999379897445709100, -0.999378135642182030, -0.999376371340209620, -0.999374604539796320, -0.999372835240946440, -0.999371063443664550, -0.999369289147954980, -0.999367512353822150, +-0.999365733061270630, -0.999363951270304750, -0.999362166980928950, -0.999360380193147770, -0.999358590906965550, -0.999356799122386950, -0.999355004839416310, -0.999353208058058160, +-0.999351408778316960, -0.999349607000197260, -0.999347802723703600, -0.999345995948840440, -0.999344186675612200, -0.999342374904023560, -0.999340560634078940, -0.999338743865782920, +-0.999336924599140140, -0.999335102834154940, -0.999333278570831980, -0.999331451809175930, -0.999329622549191110, -0.999327790790882410, -0.999325956534254050, -0.999324119779310900, +-0.999322280526057430, -0.999320438774498280, -0.999318594524638000, -0.999316747776481270, -0.999314898530032520, -0.999313046785296750, -0.999311192542278180, -0.999309335800981800, +-0.999307476561411940, -0.999305614823573500, -0.999303750587470900, -0.999301883853109030, -0.999300014620492450, -0.999298142889625710, -0.999296268660513690, -0.999294391933161050, +-0.999292512707572360, -0.999290630983752480, -0.999288746761705980, -0.999286860041437520, -0.999284970822951980, -0.999283079106254020, -0.999281184891348430, -0.999279288178239740, +-0.999277388966932970, -0.999275487257432650, -0.999273583049743560, -0.999271676343870600, -0.999269767139818410, -0.999267855437591780, -0.999265941237195590, -0.999264024538634500, +-0.999262105341913400, -0.999260183647036950, -0.999258259454010030, -0.999256332762837540, -0.999254403573524240, -0.999252471886074910, -0.999250537700494320, -0.999248601016787470, +-0.999246661834959140, -0.999244720155014090, -0.999242775976957210, -0.999240829300793500, -0.999238880126527620, -0.999236928454164560, -0.999234974283709220, -0.999233017615166360, +-0.999231058448540990, -0.999229096783837980, -0.999227132621062330, -0.999225165960218710, -0.999223196801312220, -0.999221225144347750, -0.999219250989330290, -0.999217274336264620, +-0.999215295185155730, -0.999213313536008730, -0.999211329388828280, -0.999209342743619610, -0.999207353600387590, -0.999205361959137120, -0.999203367819873290, -0.999201371182601110, +-0.999199372047325340, -0.999197370414051210, -0.999195366282783710, -0.999193359653527740, -0.999191350526288380, -0.999189338901070760, -0.999187324777879640, -0.999185308156720240, +-0.999183289037597680, -0.999181267420516720, -0.999179243305482690, -0.999177216692500590, -0.999175187581575310, -0.999173155972712170, -0.999171121865916170, -0.999169085261192300, +-0.999167046158545680, -0.999165004557981520, -0.999162960459504810, -0.999160913863120780, -0.999158864768834420, -0.999156813176650840, -0.999154759086575250, -0.999152702498612880, +-0.999150643412768600, -0.999148581829047750, -0.999146517747455440, -0.999144451167996880, -0.999142382090677180, -0.999140310515501560, -0.999138236442475130, -0.999136159871603090, +-0.999134080802890680, -0.999131999236342990, -0.999129915171965370, -0.999127828609763010, -0.999125739549741040, -0.999123647991904670, -0.999121553936259230, -0.999119457382809940, +-0.999117358331561900, -0.999115256782520560, -0.999113152735691010, -0.999111046191078600, -0.999108937148688650, -0.999106825608526260, -0.999104711570596770, -0.999102595034905620, +-0.999100476001457900, -0.999098354470259080, -0.999096230441314350, -0.999094103914628940, -0.999091974890208400, -0.999089843368057840, -0.999087709348182700, -0.999085572830588300, +-0.999083433815279980, -0.999081292302263060, -0.999079148291542870, -0.999077001783124860, -0.999074852777014350, -0.999072701273216680, -0.999070547271737270, -0.999068390772581470, +-0.999066231775754710, -0.999064070281262430, -0.999061906289109850, -0.999059739799302630, -0.999057570811845990, -0.999055399326745470, -0.999053225344006420, -0.999051048863634270, +-0.999048869885634460, -0.999046688410012650, -0.999044504436773950, -0.999042317965924130, -0.999040128997468410, -0.999037937531412350, -0.999035743567761480, -0.999033547106521370, +-0.999031348147697230, -0.999029146691294830, -0.999026942737319510, -0.999024736285776820, -0.999022527336672290, -0.999020315890011500, -0.999018101945799870, -0.999015885504042970, +-0.999013666564746440, -0.999011445127915620, -0.999009221193556280, -0.999006994761673870, -0.999004765832273930, -0.999002534405362130, -0.999000300480944010, -0.998998064059025140, +-0.998995825139611050, -0.998993583722707410, -0.998991339808319890, -0.998989093396453920, -0.998986844487115280, -0.998984593080309510, -0.998982339176042180, -0.998980082774319160, +-0.998977823875145780, -0.998975562478527920, -0.998973298584471150, -0.998971032192981110, -0.998968763304063590, -0.998966491917724020, -0.998964218033968290, -0.998961941652802050, +-0.998959662774230870, -0.998957381398260620, -0.998955097524896860, -0.998952811154145360, -0.998950522286011890, -0.998948230920502000, -0.998945937057621580, -0.998943640697376400, +-0.998941341839772010, -0.998939040484814410, -0.998936736632509040, -0.998934430282861880, -0.998932121435878730, -0.998929810091565230, -0.998927496249927160, -0.998925179910970410, +-0.998922861074700630, -0.998920539741123830, -0.998918215910245540, -0.998915889582071780, -0.998913560756608310, -0.998911229433860900, -0.998908895613835450, -0.998906559296537710, +-0.998904220481973580, -0.998901879170148940, -0.998899535361069570, -0.998897189054741340, -0.998894840251170260, -0.998892488950361980, -0.998890135152322500, -0.998887778857057710, +-0.998885420064573370, -0.998883058774875600, -0.998880694987970160, -0.998878328703862950, -0.998875959922559840, -0.998873588644066950, -0.998871214868390030, -0.998868838595535210, +-0.998866459825508150, -0.998864078558314940, -0.998861694793961590, -0.998859308532453970, -0.998856919773798090, -0.998854528517999940, -0.998852134765065400, -0.998849738515000580, +-0.998847339767811480, -0.998844938523503870, -0.998842534782084070, -0.998840128543557750, -0.998837719807931230, -0.998835308575210410, -0.998832894845401390, -0.998830478618510040, +-0.998828059894542490, -0.998825638673504710, -0.998823214955402940, -0.998820788740243160, -0.998818360028031370, -0.998815928818773680, -0.998813495112476190, -0.998811058909145010, +-0.998808620208786140, -0.998806179011405670, -0.998803735317009720, -0.998801289125604510, -0.998798840437196020, -0.998796389251790480, -0.998793935569394000, -0.998791479390012670, +-0.998789020713652500, -0.998786559540319920, -0.998784095870020930, -0.998781629702761740, -0.998779161038548360, -0.998776689877387210, -0.998774216219284190, -0.998771740064245740, +-0.998769261412277950, -0.998766780263386830, -0.998764296617578930, -0.998761810474860230, -0.998759321835237080, -0.998756830698715570, -0.998754337065302030, -0.998751840935002470, +-0.998749342307823530, -0.998746841183771110, -0.998744337562851640, -0.998741831445071340, -0.998739322830436430, -0.998736811718953230, -0.998734298110627970, -0.998731782005466970, +-0.998729263403476450, -0.998726742304662850, -0.998724218709032390, -0.998721692616591380, -0.998719164027346170, -0.998716632941303080, -0.998714099358468330, -0.998711563278848360, +-0.998709024702449490, -0.998706483629278050, -0.998703940059340380, -0.998701393992642910, -0.998698845429191850, -0.998696294368993760, -0.998693740812054980, -0.998691184758381810, +-0.998688626207980600, -0.998686065160857890, -0.998683501617020020, -0.998680935576473420, -0.998678367039224410, -0.998675796005279450, -0.998673222474645180, -0.998670646447327730, +-0.998668067923333620, -0.998665486902669430, -0.998662903385341580, -0.998660317371356410, -0.998657728860720350, -0.998655137853440070, -0.998652544349521890, -0.998649948348972360, +-0.998647349851798040, -0.998644748858005250, -0.998642145367600650, -0.998639539380590690, -0.998636930896981800, -0.998634319916780640, -0.998631706439993660, -0.998629090466627510, +-0.998626471996688530, -0.998623851030183360, -0.998621227567118690, -0.998618601607500820, -0.998615973151336540, -0.998613342198632290, -0.998610708749394620, -0.998608072803630180, +-0.998605434361345630, -0.998602793422547430, -0.998600149987242340, -0.998597504055436790, -0.998594855627137570, -0.998592204702351110, -0.998589551281084180, -0.998586895363343440, +-0.998584236949135340, -0.998581576038466760, -0.998578912631344240, -0.998576246727774340, -0.998573578327763830, -0.998570907431319490, -0.998568234038447740, -0.998565558149155490, +-0.998562879763449370, -0.998560198881335960, -0.998557515502822120, -0.998554829627914420, -0.998552141256619730, -0.998549450388944710, -0.998546757024896040, -0.998544061164480360, +-0.998541362807704670, -0.998538661954575520, -0.998535958605099690, -0.998533252759284060, -0.998530544417135180, -0.998527833578660040, -0.998525120243865190, -0.998522404412757640, +-0.998519686085344140, -0.998516965261631250, -0.998514241941626080, -0.998511516125335290, -0.998508787812765640, -0.998506057003924030, -0.998503323698817340, -0.998500587897452330, +-0.998497849599835900, -0.998495108805974700, -0.998492365515875830, -0.998489619729546090, -0.998486871446992220, -0.998484120668221120, -0.998481367393239780, -0.998478611622055090, +-0.998475853354673810, -0.998473092591102840, -0.998470329331349270, -0.998467563575419770, -0.998464795323321440, -0.998462024575061060, -0.998459251330645610, -0.998456475590082100, +-0.998453697353377410, -0.998450916620538420, -0.998448133391572120, -0.998445347666485520, -0.998442559445285480, -0.998439768727979130, -0.998436975514573330, -0.998434179805075210, +-0.998431381599491520, -0.998428580897829270, -0.998425777700095770, -0.998422972006297700, -0.998420163816442270, -0.998417353130536370, -0.998414539948587200, -0.998411724270601540, +-0.998408906096586720, -0.998406085426549520, -0.998403262260497140, -0.998400436598436580, -0.998397608440374950, -0.998394777786319240, -0.998391944636276670, -0.998389108990254240, +-0.998386270848258930, -0.998383430210298070, -0.998380587076378560, -0.998377741446507700, -0.998374893320692400, -0.998372042698939870, -0.998369189581257200, -0.998366333967651620, +-0.998363475858130120, -0.998360615252699920, -0.998357752151368350, -0.998354886554142280, -0.998352018461028940, -0.998349147872035660, -0.998346274787169530, -0.998343399206437550, +-0.998340521129847280, -0.998337640557405590, -0.998334757489119820, -0.998331871924997170, -0.998328983865044760, -0.998326093309270020, -0.998323200257679950, -0.998320304710281990, +-0.998317406667083130, -0.998314506128090810, -0.998311603093312240, -0.998308697562754640, -0.998305789536425350, -0.998302879014331570, -0.998299965996480520, -0.998297050482879530, +-0.998294132473536040, -0.998291211968457160, -0.998288288967650320, -0.998285363471122620, -0.998282435478881620, -0.998279504990934540, -0.998276572007288700, -0.998273636527951310, +-0.998270698552929940, -0.998267758082231780, -0.998264815115864290, -0.998261869653834680, -0.998258921696150380, -0.998255971242818840, -0.998253018293847380, -0.998250062849243340, +-0.998247104909014140, -0.998244144473167230, -0.998241181541709930, -0.998238216114649690, -0.998235248191993830, -0.998232277773749900, -0.998229304859925340, -0.998226329450527360, +-0.998223351545563740, -0.998220371145041700, -0.998217388248968660, -0.998214402857352190, -0.998211414970199720, -0.998208424587518680, -0.998205431709316530, -0.998202436335600910, +-0.998199438466379150, -0.998196438101658810, -0.998193435241447440, -0.998190429885752350, -0.998187422034581330, -0.998184411687941700, -0.998181398845840890, -0.998178383508286800, +-0.998175365675286640, -0.998172345346848070, -0.998169322522978630, -0.998166297203685990, -0.998163269388977480, -0.998160239078860760, -0.998157206273343590, -0.998154170972433310, +-0.998151133176137680, -0.998148092884464160, -0.998145050097420490, -0.998142004815014030, -0.998138957037252750, -0.998135906764143990, -0.998132853995695400, -0.998129798731914760, +-0.998126740972809510, -0.998123680718387530, -0.998120617968656370, -0.998117552723623570, -0.998114484983296910, -0.998111414747684060, -0.998108342016792660, -0.998105266790630390, +-0.998102189069205000, -0.998099108852524180, -0.998096026140595450, -0.998092940933426710, -0.998089853231025730, -0.998086763033399940, -0.998083670340557340, -0.998080575152505590, +-0.998077477469252350, -0.998074377290805390, -0.998071274617172600, -0.998068169448361520, -0.998065061784380040, -0.998061951625235920, -0.998058838970936950, -0.998055723821490770, +-0.998052606176905390, -0.998049486037188460, -0.998046363402347870, -0.998043238272391280, -0.998040110647326560, -0.998036980527161720, -0.998033847911904300, -0.998030712801562410, +-0.998027575196143600, -0.998024435095655860, -0.998021292500107070, -0.998018147409505010, -0.998014999823857660, -0.998011849743172810, -0.998008697167458210, -0.998005542096721990, +-0.998002384530971900, -0.997999224470215830, -0.997996061914461660, -0.997992896863717390, -0.997989729317990790, -0.997986559277289960, -0.997983386741622790, -0.997980211710997040, +-0.997977034185420830, -0.997973854164901920, -0.997970671649448420, -0.997967486639068310, -0.997964299133769490, -0.997961109133559840, -0.997957916638447460, -0.997954721648440350, +-0.997951524163546380, -0.997948324183773550, -0.997945121709129970, -0.997941916739623510, -0.997938709275262400, -0.997935499316054410, -0.997932286862007740, -0.997929071913130290, +-0.997925854469430160, -0.997922634530915450, -0.997919412097594050, -0.997916187169474280, -0.997912959746563910, -0.997909729828871160, -0.997906497416404140, -0.997903262509170830, +-0.997900025107179460, -0.997896785210437900, -0.997893542818954370, -0.997890297932737090, -0.997887050551794050, -0.997883800676133360, -0.997880548305763120, -0.997877293440691650, +-0.997874036080926730, -0.997870776226476910, -0.997867513877350070, -0.997864249033554420, -0.997860981695098180, -0.997857711861989460, -0.997854439534236580, -0.997851164711847430, +-0.997847887394830550, -0.997844607583193710, -0.997841325276945580, -0.997838040476094030, -0.997834753180647400, -0.997831463390613900, -0.997828171106001750, -0.997824876326819040, +-0.997821579053074340, -0.997818279284775620, -0.997814977021931120, -0.997811672264549250, -0.997808365012638250, -0.997805055266206330, -0.997801743025261700, -0.997798428289812690, +-0.997795111059867620, -0.997791791335434830, -0.997788469116522530, -0.997785144403139150, -0.997781817195292800, -0.997778487492991920, -0.997775155296244830, -0.997771820605059870, +-0.997768483419445350, -0.997765143739409610, -0.997761801564961080, -0.997758456896107980, -0.997755109732858750, -0.997751760075221710, -0.997748407923205290, -0.997745053276817950, +-0.997741696136067780, -0.997738336500963550, -0.997734974371513370, -0.997731609747725790, -0.997728242629609240, -0.997724873017171940, -0.997721500910422550, -0.997718126309369510, +-0.997714749214021030, -0.997711369624385670, -0.997707987540471960, -0.997704602962288250, -0.997701215889843060, -0.997697826323144850, -0.997694434262201950, -0.997691039707023000, +-0.997687642657616560, -0.997684243113990950, -0.997680841076154730, -0.997677436544116340, -0.997674029517884420, -0.997670619997467420, -0.997667207982873890, -0.997663793474112380, +-0.997660376471191320, -0.997656956974119270, -0.997653534982904990, -0.997650110497556700, -0.997646683518083280, -0.997643254044493060, -0.997639822076794690, -0.997636387614996840, +-0.997632950659107950, -0.997629511209136790, -0.997626069265091790, -0.997622624826981610, -0.997619177894814800, -0.997615728468600140, -0.997612276548346060, -0.997608822134061430, +-0.997605365225754710, -0.997601905823434550, -0.997598443927109610, -0.997594979536788550, -0.997591512652480030, -0.997588043274192700, -0.997584571401935350, -0.997581097035716620, +-0.997577620175545080, -0.997574140821429480, -0.997570658973378490, -0.997567174631400880, -0.997563687795505310, -0.997560198465700650, -0.997556706641995360, -0.997553212324398420, +-0.997549715512918380, -0.997546216207564010, -0.997542714408344190, -0.997539210115267470, -0.997535703328342850, -0.997532194047578870, -0.997528682272984410, -0.997525168004568360, +-0.997521651242339270, -0.997518131986306120, -0.997514610236477580, -0.997511085992862530, -0.997507559255469740, -0.997504030024308210, -0.997500498299386470, -0.997496964080713530, +-0.997493427368298160, -0.997489888162149230, -0.997486346462275520, -0.997482802268686020, -0.997479255581389500, -0.997475706400394850, -0.997472154725710820, -0.997468600557346540, +-0.997465043895310770, -0.997461484739612380, -0.997457923090260160, -0.997454358947263200, -0.997450792310630390, -0.997447223180370490, -0.997443651556492620, -0.997440077439005650, +-0.997436500827918460, -0.997432921723240050, -0.997429340124979300, -0.997425756033145090, -0.997422169447746640, -0.997418580368792720, -0.997414988796292310, -0.997411394730254530, +-0.997407798170688140, -0.997404199117602250, -0.997400597571005960, -0.997396993530908160, -0.997393386997317940, -0.997389777970244080, -0.997386166449695910, -0.997382552435682300, +-0.997378935928212360, -0.997375316927294970, -0.997371695432939240, -0.997368071445154380, -0.997364444963949380, -0.997360815989333240, -0.997357184521315050, -0.997353550559903820, +-0.997349914105108760, -0.997346275156938970, -0.997342633715403440, -0.997338989780511390, -0.997335343352271810, -0.997331694430693920, -0.997328043015786700, -0.997324389107559490, +-0.997320732706021170, -0.997317073811181180, -0.997313412423048270, -0.997309748541632010, -0.997306082166941390, -0.997302413298985500, -0.997298741937773680, -0.997295068083314810, +-0.997291391735618430, -0.997287712894693530, -0.997284031560549340, -0.997280347733195070, -0.997276661412639930, -0.997272972598893250, -0.997269281291964020, -0.997265587491861560, +-0.997261891198595210, -0.997258192412174060, -0.997254491132607450, -0.997250787359904690, -0.997247081094074890, -0.997243372335127390, -0.997239661083071490, -0.997235947337916320, +-0.997232231099671410, -0.997228512368345870, -0.997224791143949130, -0.997221067426490300, -0.997217341215978940, -0.997213612512424130, -0.997209881315835320, -0.997206147626221840, +-0.997202411443592780, -0.997198672767957930, -0.997194931599326260, -0.997191187937707340, -0.997187441783110470, -0.997183693135545000, -0.997179941995020140, -0.997176188361545650, +-0.997172432235130520, -0.997168673615784430, -0.997164912503516580, -0.997161148898336510, -0.997157382800253460, -0.997153614209277060, -0.997149843125416660, -0.997146069548681460, +-0.997142293479081230, -0.997138514916625200, -0.997134733861323010, -0.997130950313183880, -0.997127164272217370, -0.997123375738432900, -0.997119584711840150, -0.997115791192448310, +-0.997111995180267050, -0.997108196675305810, -0.997104395677574030, -0.997100592187081360, -0.997096786203837130, -0.997092977727850990, -0.997089166759132390, -0.997085353297690770, +-0.997081537343535770, -0.997077718896677070, -0.997073897957123980, -0.997070074524886160, -0.997066248599973170, -0.997062420182394550, -0.997058589272159850, -0.997054755869278720, +-0.997050919973760720, -0.997047081585615390, -0.997043240704852400, -0.997039397331481280, -0.997035551465511590, -0.997031703106953100, -0.997027852255815360, -0.997023998912107910, +-0.997020143075840530, -0.997016284747022860, -0.997012423925664360, -0.997008560611774900, -0.997004694805363910, -0.997000826506441280, -0.996996955715016560, -0.996993082431099410, +-0.996989206654699590, -0.996985328385826760, -0.996981447624490700, -0.996977564370700950, -0.996973678624467290, -0.996969790385799250, -0.996965899654706940, -0.996962006431199920, +-0.996958110715287730, -0.996954212506980350, -0.996950311806287460, -0.996946408613218700, -0.996942502927783970, -0.996938594749993020, -0.996934684079855530, -0.996930770917381360, +-0.996926855262580290, -0.996922937115462090, -0.996919016476036530, -0.996915093344313390, -0.996911167720302530, -0.996907239604013730, -0.996903308995456870, -0.996899375894641730, +-0.996895440301578170, -0.996891502216275980, -0.996887561638744920, -0.996883618568995100, -0.996879673007036280, -0.996875724952878130, -0.996871774406530850, -0.996867821368004000, +-0.996863865837307680, -0.996859907814451660, -0.996855947299445820, -0.996851984292300150, -0.996848018793024430, -0.996844050801628740, -0.996840080318122990, -0.996836107342517040, +-0.996832131874820780, -0.996828153915044090, -0.996824173463197070, -0.996820190519289720, -0.996816205083331800, -0.996812217155333410, -0.996808226735304450, -0.996804233823255000, +-0.996800238419194850, -0.996796240523134200, -0.996792240135082940, -0.996788237255050950, -0.996784231883048430, -0.996780224019085390, -0.996776213663171820, -0.996772200815317590, +-0.996768185475532920, -0.996764167643827800, -0.996760147320212230, -0.996756124504696310, -0.996752099197290130, -0.996748071398003700, -0.996744041106847000, -0.996740008323830250, +-0.996735973048963550, -0.996731935282256790, -0.996727895023720280, -0.996723852273363910, -0.996719807031198110, -0.996715759297232660, -0.996711709071477880, -0.996707656353943760, +-0.996703601144640410, -0.996699543443578250, -0.996695483250767180, -0.996691420566217290, -0.996687355389939020, -0.996683287721942260, -0.996679217562237320, -0.996675144910834310, +-0.996671069767743440, -0.996666992132974830, -0.996662912006538890, -0.996658829388445520, -0.996654744278705150, -0.996650656677328000, -0.996646566584324160, -0.996642473999703740, +-0.996638378923477290, -0.996634281355654910, -0.996630181296246810, -0.996626078745263210, -0.996621973702714440, -0.996617866168610700, -0.996613756142962330, -0.996609643625779640, +-0.996605528617072740, -0.996601411116851970, -0.996597291125127850, -0.996593168641910390, -0.996589043667210020, -0.996584916201037060, -0.996580786243401740, -0.996576653794314480, +-0.996572518853785620, -0.996568381421825470, -0.996564241498444360, -0.996560099083652620, -0.996555954177460680, -0.996551806779878870, -0.996547656890917510, -0.996543504510587040, +-0.996539349638897680, -0.996535192275860070, -0.996531032421484440, -0.996526870075781220, -0.996522705238760850, -0.996518537910433650, -0.996514368090810180, -0.996510195779900850, +-0.996506020977715900, -0.996501843684265980, -0.996497663899561400, -0.996493481623612730, -0.996489296856430400, -0.996485109598024720, -0.996480919848406250, -0.996476727607585430, +-0.996472532875572910, -0.996468335652379020, -0.996464135938014310, -0.996459933732489310, -0.996455729035814470, -0.996451521848000120, -0.996447312169057130, -0.996443099998995830, +-0.996438885337826760, -0.996434668185560590, -0.996430448542207640, -0.996426226407778560, -0.996422001782284020, -0.996417774665734330, -0.996413545058140280, -0.996409312959512410, +-0.996405078369861140, -0.996400841289197260, -0.996396601717531310, -0.996392359654873830, -0.996388115101235370, -0.996383868056626600, -0.996379618521058270, -0.996375366494540950, +-0.996371111977085060, -0.996366854968701480, -0.996362595469400760, -0.996358333479193560, -0.996354068998090540, -0.996349802026102350, -0.996345532563239540, -0.996341260609512890, +-0.996336986164933270, -0.996332709229511120, -0.996328429803257090, -0.996324147886182070, -0.996319863478296600, -0.996315576579611560, -0.996311287190137620, -0.996306995309885420, +-0.996302700938865750, -0.996298404077089250, -0.996294104724566810, -0.996289802881309080, -0.996285498547326840, -0.996281191722630850, -0.996276882407231890, -0.996272570601140720, +-0.996268256304368220, -0.996263939516924930, -0.996259620238821860, -0.996255298470069660, -0.996250974210679320, -0.996246647460661490, -0.996242318220027180, -0.996237986488786920, +-0.996233652266951710, -0.996229315554532420, -0.996224976351539840, -0.996220634657984830, -0.996216290473878160, -0.996211943799230730, -0.996207594634053620, -0.996203242978357380, +-0.996198888832153130, -0.996194532195451510, -0.996190173068263630, -0.996185811450600370, -0.996181447342472600, -0.996177080743891110, -0.996172711654866980, -0.996168340075411110, +-0.996163966005534360, -0.996159589445247630, -0.996155210394562010, -0.996150828853488270, -0.996146444822037510, -0.996142058300220620, -0.996137669288048700, -0.996133277785532510, +-0.996128883792683160, -0.996124487309511530, -0.996120088336028720, -0.996115686872245720, -0.996111282918173410, -0.996106876473823010, -0.996102467539205390, -0.996098056114331550, +-0.996093642199212700, -0.996089225793859610, -0.996084806898283490, -0.996080385512495340, -0.996075961636506250, -0.996071535270327210, -0.996067106413969450, -0.996062675067443840, +-0.996058241230761480, -0.996053804903933580, -0.996049366086971260, -0.996044924779885380, -0.996040480982687270, -0.996036034695388040, -0.996031585917998560, -0.996027134650530170, +-0.996022680892994060, -0.996018224645401130, -0.996013765907762580, -0.996009304680089640, -0.996004840962393500, -0.996000374754685280, -0.995995906056976080, -0.995991434869277100, +-0.995986961191599570, -0.995982485023954590, -0.995978006366353470, -0.995973525218807330, -0.995969041581327370, -0.995964555453924700, -0.995960066836610760, -0.995955575729396640, +-0.995951082132293550, -0.995946586045312720, -0.995942087468465460, -0.995937586401763000, -0.995933082845216640, -0.995928576798837510, -0.995924068262636910, -0.995919557236626060, +-0.995915043720816410, -0.995910527715219150, -0.995906009219845620, -0.995901488234707030, -0.995896964759814710, -0.995892438795179970, -0.995887910340814140, -0.995883379396728550, +-0.995878845962934520, -0.995874310039443380, -0.995869771626266440, -0.995865230723415040, -0.995860687330900610, -0.995856141448734470, -0.995851593076927940, -0.995847042215492360, +-0.995842488864439270, -0.995837933023779990, -0.995833374693525840, -0.995828813873688270, -0.995824250564278700, -0.995819684765308470, -0.995815116476789000, -0.995810545698731620, +-0.995805972431148100, -0.995801396674049540, -0.995796818427447490, -0.995792237691353390, -0.995787654465778770, -0.995783068750734860, -0.995778480546233410, -0.995773889852285770, +-0.995769296668903350, -0.995764700996097710, -0.995760102833880280, -0.995755502182262610, -0.995750899041256240, -0.995746293410872620, -0.995741685291123170, -0.995737074682019550, +-0.995732461583573200, -0.995727845995795780, -0.995723227918698830, -0.995718607352293670, -0.995713984296591970, -0.995709358751605380, -0.995704730717345330, -0.995700100193823490, +-0.995695467181051510, -0.995690831679040710, -0.995686193687802870, -0.995681553207349630, -0.995676910237692450, -0.995672264778842960, -0.995667616830812730, -0.995662966393613620, +-0.995658313467257080, -0.995653658051754650, -0.995649000147118210, -0.995644339753359200, -0.995639676870489270, -0.995635011498520180, -0.995630343637463610, -0.995625673287331200, +-0.995621000448134620, -0.995616325119885510, -0.995611647302595550, -0.995606966996276490, -0.995602284200939990, -0.995597598916597830, -0.995592911143261650, -0.995588220880943230, +-0.995583528129654230, -0.995578832889406410, -0.995574135160211430, -0.995569434942081170, -0.995564732235027280, -0.995560027039061660, -0.995555319354195940, -0.995550609180441910, +-0.995545896517811450, -0.995541181366316090, -0.995536463725967940, -0.995531743596778540, -0.995527020978759670, -0.995522295871923310, -0.995517568276281350, -0.995512838191845330, +-0.995508105618627350, -0.995503370556638960, -0.995498633005892140, -0.995493892966398790, -0.995489150438170770, -0.995484405421219850, -0.995479657915557930, -0.995474907921196750, +-0.995470155438148430, -0.995465400466424730, -0.995460643006037430, -0.995455883056998610, -0.995451120619319950, -0.995446355693013540, -0.995441588278091260, -0.995436818374565100, +-0.995432045982446830, -0.995427271101748330, -0.995422493732481820, -0.995417713874658940, -0.995412931528291910, -0.995408146693392500, -0.995403359369972710, -0.995398569558044510, +-0.995393777257619910, -0.995388982468710880, -0.995384185191329430, -0.995379385425487430, -0.995374583171196980, -0.995369778428470080, -0.995364971197318820, -0.995360161477754970, +-0.995355349269790860, -0.995350534573438250, -0.995345717388709360, -0.995340897715616290, -0.995336075554170810, -0.995331250904385230, -0.995326423766271560, -0.995321594139841780, +-0.995316762025107990, -0.995311927422082410, -0.995307090330776800, -0.995302250751203600, -0.995297408683374800, -0.995292564127302380, -0.995287717082998680, -0.995282867550475570, +-0.995278015529745260, -0.995273161020819970, -0.995268304023711800, -0.995263444538432960, -0.995258582564995440, -0.995253718103411460, -0.995248851153693100, -0.995243981715852710, +-0.995239109789902380, -0.995234235375854090, -0.995229358473720400, -0.995224479083513300, -0.995219597205245000, -0.995214712838927600, -0.995209825984573530, -0.995204936642194780, +-0.995200044811803800, -0.995195150493412670, -0.995190253687033730, -0.995185354392679080, -0.995180452610361140, -0.995175548340091920, -0.995170641581883950, -0.995165732335749340, +-0.995160820601700410, -0.995155906379749270, -0.995150989669908560, -0.995146070472190280, -0.995141148786606980, -0.995136224613170640, -0.995131297951893700, -0.995126368802788600, +-0.995121437165867650, -0.995116503041143070, -0.995111566428627190, -0.995106627328332440, -0.995101685740271020, -0.995096741664455500, -0.995091795100898070, -0.995086846049611170, +-0.995081894510607130, -0.995076940483898390, -0.995071983969497250, -0.995067024967416280, -0.995062063477667680, -0.995057099500263890, -0.995052133035217220, -0.995047164082540350, +-0.995042192642245580, -0.995037218714345360, -0.995032242298852120, -0.995027263395778180, -0.995022282005136200, -0.995017298126938400, -0.995012311761197420, -0.995007322907925480, +-0.995002331567135470, -0.994997337738839470, -0.994992341423050260, -0.994987342619780170, -0.994982341329041730, -0.994977337550847270, -0.994972331285209570, -0.994967322532141150, +-0.994962311291654360, -0.994957297563761720, -0.994952281348475910, -0.994947262645809350, -0.994942241455774700, -0.994937217778384400, -0.994932191613650980, -0.994927162961587230, +-0.994922131822205460, -0.994917098195518430, -0.994912062081538710, -0.994907023480278710, -0.994901982391751090, -0.994896938815968750, -0.994891892752943870, -0.994886844202689360, +-0.994881793165217740, -0.994876739640541570, -0.994871683628673620, -0.994866625129626430, -0.994861564143412650, -0.994856500670045050, -0.994851434709536080, -0.994846366261898600, +-0.994841295327145160, -0.994836221905288530, -0.994831145996341370, -0.994826067600316110, -0.994820986717225960, -0.994815903347083250, -0.994810817489900740, -0.994805729145691320, +-0.994800638314467410, -0.994795544996242010, -0.994790449191027770, -0.994785350898837350, -0.994780250119683630, -0.994775146853579150, -0.994770041100536790, -0.994764932860569440, +-0.994759822133689740, -0.994754708919910470, -0.994749593219244500, -0.994744475031704380, -0.994739354357303210, -0.994734231196053640, -0.994729105547968450, -0.994723977413060510, +-0.994718846791342590, -0.994713713682827680, -0.994708578087528440, -0.994703440005457630, -0.994698299436628240, -0.994693156381053270, -0.994688010838745250, -0.994682862809717290, +-0.994677712293982160, -0.994672559291552740, -0.994667403802441790, -0.994662245826662520, -0.994657085364227590, -0.994651922415149990, -0.994646756979442490, -0.994641589057118190, +-0.994636418648189860, -0.994631245752670480, -0.994626070370572930, -0.994620892501910210, -0.994615712146695310, -0.994610529304941200, -0.994605343976660670, -0.994600156161866920, +-0.994594965860572610, -0.994589773072790840, -0.994584577798534820, -0.994579380037817320, -0.994574179790651320, -0.994568977057049940, -0.994563771837026040, -0.994558564130592740, +-0.994553353937763010, -0.994548141258549960, -0.994542926092966460, -0.994537708441025630, -0.994532488302740660, -0.994527265678124330, -0.994522040567189960, -0.994516812969950430, +-0.994511582886418830, -0.994506350316608280, -0.994501115260531980, -0.994495877718202800, -0.994490637689633970, -0.994485395174838470, -0.994480150173829510, -0.994474902686620200, +-0.994469652713223630, -0.994464400253652900, -0.994459145307921120, -0.994453887876041610, -0.994448627958027350, -0.994443365553891460, -0.994438100663647240, -0.994432833287307690, +-0.994427563424886030, -0.994422291076395460, -0.994417016241849310, -0.994411738921260450, -0.994406459114642320, -0.994401176822008130, -0.994395892043370870, -0.994390604778743970, +-0.994385315028140540, -0.994380022791573670, -0.994374728069056910, -0.994369430860603250, -0.994364131166226020, -0.994358828985938530, -0.994353524319753990, -0.994348217167685510, +-0.994342907529746520, -0.994337595405950350, -0.994332280796310090, -0.994326963700839170, -0.994321644119550930, -0.994316322052458460, -0.994310997499575300, -0.994305670460914560, +-0.994300340936489560, -0.994295008926313840, -0.994289674430400510, -0.994284337448763100, -0.994278997981414840, -0.994273656028369040, -0.994268311589639020, -0.994262964665238340, +-0.994257615255180190, -0.994252263359478030, -0.994246908978145160, -0.994241552111195140, -0.994236192758641170, -0.994230830920496690, -0.994225466596775130, -0.994220099787490040, +-0.994214730492654410, -0.994209358712282220, -0.994203984446386580, -0.994198607694980920, -0.994193228458078780, -0.994187846735693490, -0.994182462527838600, -0.994177075834527630, +-0.994171686655773930, -0.994166294991591150, -0.994160900841992490, -0.994155504206991610, -0.994150105086601950, -0.994144703480837060, -0.994139299389710460, -0.994133892813235390, +-0.994128483751425820, -0.994123072204294970, -0.994117658171856380, -0.994112241654123710, -0.994106822651110500, -0.994101401162830080, -0.994095977189296210, -0.994090550730522440, +-0.994085121786522310, -0.994079690357309360, -0.994074256442897150, -0.994068820043299330, -0.994063381158529440, -0.994057939788601130, -0.994052495933527850, -0.994047049593323460, +-0.994041600768001410, -0.994036149457575350, -0.994030695662058930, -0.994025239381465810, -0.994019780615809530, -0.994014319365103760, -0.994008855629362250, -0.994003389408598670, +-0.993997920702826550, -0.993992449512059670, -0.993986975836311680, -0.993981499675596130, -0.993976021029926990, -0.993970539899317610, -0.993965056283781960, -0.993959570183333700, +-0.993954081597986480, -0.993948590527754080, -0.993943096972650260, -0.993937600932688570, -0.993932102407882990, -0.993926601398247070, -0.993921097903794680, -0.993915591924539600, +-0.993910083460495470, -0.993904572511676190, -0.993899059078095500, -0.993893543159767080, -0.993888024756704900, -0.993882503868922520, -0.993876980496433910, -0.993871454639252970, +-0.993865926297393340, -0.993860395470868910, -0.993854862159693320, -0.993849326363880680, -0.993843788083444760, -0.993838247318399430, -0.993832704068758450, -0.993827158334535610, +-0.993821610115744990, -0.993816059412400370, -0.993810506224515500, -0.993804950552104380, -0.993799392395180780, -0.993793831753758910, -0.993788268627852300, -0.993782703017475180, +-0.993777134922641190, -0.993771564343364440, -0.993765991279658590, -0.993760415731537950, -0.993754837699016180, -0.993749257182107380, -0.993743674180825430, -0.993738088695184320, +-0.993732500725197920, -0.993726910270880340, -0.993721317332245450, -0.993715721909307130, -0.993710124002079700, -0.993704523610576820, -0.993698920734812810, -0.993693315374801320, +-0.993687707530556690, -0.993682097202092550, -0.993676484389423350, -0.993670869092562970, -0.993665251311525390, -0.993659631046324710, -0.993654008296974920, -0.993648383063490130, +-0.993642755345884310, -0.993637125144171680, -0.993631492458366130, -0.993625857288481850, -0.993620219634533060, -0.993614579496533650, -0.993608936874497810, -0.993603291768439640, +-0.993597644178373150, -0.993591994104312650, -0.993586341546272120, -0.993580686504265790, -0.993575028978307630, -0.993569368968411970, -0.993563706474592910, -0.993558041496864660, +-0.993552374035241210, -0.993546704089736780, -0.993541031660365560, -0.993535356747141880, -0.993529679350079740, -0.993523999469193450, -0.993518317104497120, -0.993512632256004950, +-0.993506944923731260, -0.993501255107690270, -0.993495562807896080, -0.993489868024363010, -0.993484170757105270, -0.993478471006137180, -0.993472768771472730, -0.993467064053126460, +-0.993461356851112590, -0.993455647165445210, -0.993449934996138760, -0.993444220343207450, -0.993438503206665600, -0.993432783586527530, -0.993427061482807350, -0.993421336895519700, +-0.993415609824678690, -0.993409880270298640, -0.993404148232393870, -0.993398413710978700, -0.993392676706067570, -0.993386937217674680, -0.993381195245814470, -0.993375450790501270, +-0.993369703851749390, -0.993363954429573370, -0.993358202523987430, -0.993352448135005890, -0.993346691262643300, -0.993340931906914080, -0.993335170067832340, -0.993329405745412730, +-0.993323638939669680, -0.993317869650617520, -0.993312097878270570, -0.993306323622643480, -0.993300546883750690, -0.993294767661606400, -0.993288985956225170, -0.993283201767621420, +-0.993277415095809800, -0.993271625940804540, -0.993265834302620390, -0.993260040181271450, -0.993254243576772500, -0.993248444489137850, -0.993242642918382270, -0.993236838864519970, +-0.993231032327565600, -0.993225223307533710, -0.993219411804438620, -0.993213597818295100, -0.993207781349117580, -0.993201962396920600, -0.993196140961718600, -0.993190317043526450, +-0.993184490642358360, -0.993178661758229110, -0.993172830391153230, -0.993166996541145260, -0.993161160208219650, -0.993155321392391270, -0.993149480093674650, -0.993143636312084240, +-0.993137790047634810, -0.993131941300340880, -0.993126090070217020, -0.993120236357278090, -0.993114380161538410, -0.993108521483012870, -0.993102660321715900, -0.993096796677662370, +-0.993090930550866950, -0.993085061941344050, -0.993079190849108560, -0.993073317274175030, -0.993067441216558320, -0.993061562676272880, -0.993055681653333690, -0.993049798147755180, +-0.993043912159552230, -0.993038023688739500, -0.993032132735331640, -0.993026239299343530, -0.993020343380789820, -0.993014444979685160, -0.993008544096044440, -0.993002640729882420, +-0.992996734881213760, -0.992990826550053220, -0.992984915736415670, -0.992979002440315780, -0.992973086661768420, -0.992967168400788360, -0.992961247657390360, -0.992955324431589180, +-0.992949398723399820, -0.992943470532836820, -0.992937539859915290, -0.992931606704649860, -0.992925671067055320, -0.992919732947146640, -0.992913792344938710, -0.992907849260446280, +-0.992901903693684140, -0.992895955644667370, -0.992890005113410520, -0.992884052099928800, -0.992878096604236870, -0.992872138626349820, -0.992866178166282420, -0.992860215224049440, +-0.992854249799666080, -0.992848281893147000, -0.992842311504507300, -0.992836338633761640, -0.992830363280925220, -0.992824385446012920, -0.992818405129039740, -0.992812422330020430, +-0.992806437048970090, -0.992800449285903610, -0.992794459040836070, -0.992788466313782370, -0.992782471104757480, -0.992776473413776510, -0.992770473240854320, -0.992764470586005920, +-0.992758465449246400, -0.992752457830590630, -0.992746447730053720, -0.992740435147650650, -0.992734420083396520, -0.992728402537306430, -0.992722382509395260, -0.992716359999678220, +-0.992710335008170070, -0.992704307534886250, -0.992698277579841750, -0.992692245143051430, -0.992686210224530520, -0.992680172824294100, -0.992674132942357180, -0.992668090578735060, +-0.992662045733442630, -0.992655998406495100, -0.992649948597907450, -0.992643896307695120, -0.992637841535872980, -0.992631784282456240, -0.992625724547460010, -0.992619662330899490, +-0.992613597632789670, -0.992607530453146090, -0.992601460791983640, -0.992595388649317400, -0.992589314025162820, -0.992583236919534980, -0.992577157332449000, -0.992571075263920080, +-0.992564990713963540, -0.992558903682594360, -0.992552814169828100, -0.992546722175679740, -0.992540627700164600, -0.992534530743297890, -0.992528431305094830, -0.992522329385570610, +-0.992516224984740680, -0.992510118102620240, -0.992504008739224400, -0.992497896894568580, -0.992491782568668100, -0.992485665761538070, -0.992479546473193920, -0.992473424703650850, +-0.992467300452924190, -0.992461173721029270, -0.992455044507981500, -0.992448912813796100, -0.992442778638488400, -0.992436641982073820, -0.992430502844567460, -0.992424361225984990, +-0.992418217126341600, -0.992412070545652720, -0.992405921483933580, -0.992399769941199720, -0.992393615917466330, -0.992387459412748970, -0.992381300427062960, -0.992375138960423620, +-0.992368975012846490, -0.992362808584346890, -0.992356639674940370, -0.992350468284642130, -0.992344294413467830, -0.992338118061432570, -0.992331939228552230, -0.992325757914842010, +-0.992319574120317460, -0.992313387844993900, -0.992307199088886870, -0.992301007852011810, -0.992294814134384250, -0.992288617936019750, -0.992282419256933610, -0.992276218097141280, +-0.992270014456658630, -0.992263808335500870, -0.992257599733683660, -0.992251388651222310, -0.992245175088132590, -0.992238959044429820, -0.992232740520129770, -0.992226519515247870, +-0.992220296029799660, -0.992214070063800690, -0.992207841617266610, -0.992201610690212840, -0.992195377282655060, -0.992189141394608900, -0.992182903026089690, -0.992176662177113420, +-0.992170418847695410, -0.992164173037851430, -0.992157924747596900, -0.992151673976947700, -0.992145420725919160, -0.992139164994527150, -0.992132906782787210, -0.992126646090715100, +-0.992120382918326270, -0.992114117265636590, -0.992107849132661480, -0.992101578519416830, -0.992095305425918280, -0.992089029852181280, -0.992082751798221810, -0.992076471264055510, +-0.992070188249697950, -0.992063902755164980, -0.992057614780472270, -0.992051324325635480, -0.992045031390670350, -0.992038735975592670, -0.992032438080418190, -0.992026137705162680, +-0.992019834849841690, -0.992013529514471190, -0.992007221699066850, -0.992000911403644440, -0.991994598628219810, -0.991988283372808530, -0.991981965637426690, -0.991975645422089820, +-0.991969322726813930, -0.991962997551614770, -0.991956669896507990, -0.991950339761509590, -0.991944007146635330, -0.991937672051901090, -0.991931334477322730, -0.991924994422915930, +-0.991918651888696770, -0.991912306874680790, -0.991905959380884220, -0.991899609407322690, -0.991893256954011980, -0.991886902020968300, -0.991880544608207400, -0.991874184715745070, +-0.991867822343597270, -0.991861457491779900, -0.991855090160308820, -0.991848720349200130, -0.991842348058469600, -0.991835973288133330, -0.991829596038206970, -0.991823216308706730, +-0.991816834099648380, -0.991810449411047900, -0.991804062242921390, -0.991797672595284620, -0.991791280468153680, -0.991784885861544670, -0.991778488775473370, -0.991772089209955850, +-0.991765687165008130, -0.991759282640646060, -0.991752875636885860, -0.991746466153743510, -0.991740054191235010, -0.991733639749376340, -0.991727222828183600, -0.991720803427672880, +-0.991714381547860070, -0.991707957188761260, -0.991701530350392550, -0.991695101032770030, -0.991688669235909810, -0.991682234959827880, -0.991675798204540440, -0.991669358970063360, +-0.991662917256412870, -0.991656473063605270, -0.991650026391656340, -0.991643577240582500, -0.991637125610399630, -0.991630671501123940, -0.991624214912771530, -0.991617755845358610, +-0.991611294298901380, -0.991604830273415840, -0.991598363768918190, -0.991591894785424640, -0.991585423322951410, -0.991578949381514580, -0.991572472961130380, -0.991565994061815000, +-0.991559512683584670, -0.991553028826455460, -0.991546542490443830, -0.991540053675565750, -0.991533562381837650, -0.991527068609275530, -0.991520572357895810, -0.991514073627714600, +-0.991507572418748210, -0.991501068731012740, -0.991494562564524840, -0.991488053919300390, -0.991481542795355940, -0.991475029192707580, -0.991468513111371630, -0.991461994551364300, +-0.991455473512702020, -0.991448949995401230, -0.991442423999477910, -0.991435895524948600, -0.991429364571829510, -0.991422831140137070, -0.991416295229887500, -0.991409756841097220, +-0.991403215973782450, -0.991396672627959720, -0.991390126803645240, -0.991383578500855570, -0.991377027719606900, -0.991370474459915660, -0.991363918721798190, -0.991357360505270900, +-0.991350799810350350, -0.991344236637052730, -0.991337670985394490, -0.991331102855392170, -0.991324532247061960, -0.991317959160420540, -0.991311383595484100, -0.991304805552269190, +-0.991298225030792350, -0.991291642031070010, -0.991285056553118490, -0.991278468596954340, -0.991271878162593990, -0.991265285250053860, -0.991258689859350620, -0.991252091990500680, +-0.991245491643520490, -0.991238888818426590, -0.991232283515235510, -0.991225675733963700, -0.991219065474627570, -0.991212452737243900, -0.991205837521829110, -0.991199219828399540, +-0.991192599656972150, -0.991185977007563170, -0.991179351880189240, -0.991172724274867020, -0.991166094191612720, -0.991159461630443440, -0.991152826591375490, -0.991146189074425420, +-0.991139549079609880, -0.991132906606945530, -0.991126261656448790, -0.991119614228136550, -0.991112964322025220, -0.991106311938131480, -0.991099657076471740, -0.991092999737063110, +-0.991086339919921900, -0.991079677625064880, -0.991073012852508710, -0.991066345602269920, -0.991059675874365160, -0.991053003668811440, -0.991046328985625060, -0.991039651824823010, +-0.991032972186421720, -0.991026290070437970, -0.991019605476888610, -0.991012918405790200, -0.991006228857159390, -0.990999536831013050, -0.990992842327367840, -0.990986145346240630, +-0.990979445887647970, -0.990972743951606840, -0.990966039538133670, -0.990959332647245450, -0.990952623278958940, -0.990945911433290800, -0.990939197110258020, -0.990932480309877130, +-0.990925761032165120, -0.990919039277138650, -0.990912315044814700, -0.990905588335209810, -0.990898859148340860, -0.990892127484224950, -0.990885393342878730, -0.990878656724318960, +-0.990871917628562530, -0.990865176055626410, -0.990858432005527150, -0.990851685478281950, -0.990844936473907590, -0.990838184992420820, -0.990831431033838640, -0.990824674598177800, +-0.990817915685455300, -0.990811154295688000, -0.990804390428892900, -0.990797624085086760, -0.990790855264286450, -0.990784083966509190, -0.990777310191771620, -0.990770533940090850, +-0.990763755211483630, -0.990756974005966960, -0.990750190323558040, -0.990743404164273640, -0.990736615528130640, -0.990729824415146120, -0.990723030825337080, -0.990716234758720500, +-0.990709436215313270, -0.990702635195132460, -0.990695831698195080, -0.990689025724518000, -0.990682217274118430, -0.990675406347013450, -0.990668592943219850, -0.990661777062754710, +-0.990654958705635250, -0.990648137871878220, -0.990641314561500950, -0.990634488774520430, -0.990627660510953630, -0.990620829770817780, -0.990613996554129740, -0.990607160860906830, +-0.990600322691165940, -0.990593482044924260, -0.990586638922198670, -0.990579793323006720, -0.990572945247365280, -0.990566094695291440, -0.990559241666802310, -0.990552386161915210, +-0.990545528180646890, -0.990538667723015020, -0.990531804789036350, -0.990524939378728210, -0.990518071492107690, -0.990511201129192110, -0.990504328289998460, -0.990497452974543950, +-0.990490575182845780, -0.990483694914921160, -0.990476812170787310, -0.990469926950461540, -0.990463039253960840, -0.990456149081302640, -0.990449256432504030, -0.990442361307582120, +-0.990435463706554550, -0.990428563629438210, -0.990421661076250510, -0.990414756047008570, -0.990407848541729810, -0.990400938560431430, -0.990394026103130760, -0.990387111169845010, +-0.990380193760591390, -0.990373273875387210, -0.990366351514250010, -0.990359426677196900, -0.990352499364245190, -0.990345569575412310, -0.990338637310715250, -0.990331702570171890, +-0.990324765353799100, -0.990317825661614530, -0.990310883493635390, -0.990303938849879000, -0.990296991730362790, -0.990290042135104080, -0.990283090064120190, -0.990276135517428660, +-0.990269178495046700, -0.990262218996991850, -0.990255257023281430, -0.990248292573932990, -0.990241325648963720, -0.990234356248391180, -0.990227384372232570, -0.990220410020505650, +-0.990213433193227740, -0.990206453890416280, -0.990199472112088590, -0.990192487858262300, -0.990185501128954650, -0.990178511924183380, -0.990171520243965820, -0.990164526088319290, +-0.990157529457261650, -0.990150530350810130, -0.990143528768982260, -0.990136524711795580, -0.990129518179267640, -0.990122509171415750, -0.990115497688257680, -0.990108483729810860, +-0.990101467296092940, -0.990094448387121240, -0.990087427002913410, -0.990080403143487110, -0.990073376808859760, -0.990066347999048910, -0.990059316714072100, -0.990052282953947200, +-0.990045246718691540, -0.990038208008322760, -0.990031166822858410, -0.990024123162316250, -0.990017077026713600, -0.990010028416068330, -0.990002977330398100, -0.989995923769720340, +-0.989988867734052810, -0.989981809223413060, -0.989974748237818840, -0.989967684777287690, -0.989960618841837390, -0.989953550431485580, -0.989946479546249700, -0.989939406186147730, +-0.989932330351197320, -0.989925252041416020, -0.989918171256821690, -0.989911087997431660, -0.989904002263264140, -0.989896914054336550, -0.989889823370666780, -0.989882730212272350, +-0.989875634579171160, -0.989868536471380840, -0.989861435888919170, -0.989854332831803910, -0.989847227300052810, -0.989840119293683540, -0.989833008812714190, -0.989825895857162190, +-0.989818780427045520, -0.989811662522381840, -0.989804542143188910, -0.989797419289484730, -0.989790293961287040, -0.989783166158613610, -0.989776035881482220, -0.989768903129910840, +-0.989761767903917120, -0.989754630203518950, -0.989747490028734300, -0.989740347379580830, -0.989733202256076420, -0.989726054658239150, -0.989718904586086690, -0.989711752039637020, +-0.989704597018908010, -0.989697439523917420, -0.989690279554683140, -0.989683117111223250, -0.989675952193555640, -0.989668784801698060, -0.989661614935668620, -0.989654442595485070, +-0.989647267781165410, -0.989640090492727610, -0.989632910730189550, -0.989625728493569110, -0.989618543782884500, -0.989611356598153470, -0.989604166939394130, -0.989596974806624340, +-0.989589780199862100, -0.989582583119125280, -0.989575383564432200, -0.989568181535800620, -0.989560977033248520, -0.989553770056794010, -0.989546560606455070, -0.989539348682249800, +-0.989532134284196060, -0.989524917412312080, -0.989517698066615830, -0.989510476247125070, -0.989503251953858350, -0.989496025186833440, -0.989488795946068530, -0.989481564231581620, +-0.989474330043390580, -0.989467093381513950, -0.989459854245969490, -0.989452612636775530, -0.989445368553949930, -0.989438121997510910, -0.989430872967476670, -0.989423621463865200, +-0.989416367486694700, -0.989409111035983170, -0.989401852111748800, -0.989394590714010040, -0.989387326842784630, -0.989380060498091020, -0.989372791679947180, -0.989365520388371330, +-0.989358246623381790, -0.989350970384996530, -0.989343691673233990, -0.989336410488112160, -0.989329126829649240, -0.989321840697863550, -0.989314552092773300, -0.989307261014396590, +-0.989299967462751730, -0.989292671437856930, -0.989285372939730510, -0.989278071968390680, -0.989270768523855650, -0.989263462606143620, -0.989256154215273020, -0.989248843351261950, +-0.989241530014128840, -0.989234214203891900, -0.989226895920569450, -0.989219575164179800, -0.989212251934741160, -0.989204926232271850, -0.989197598056790310, -0.989190267408314730, +-0.989182934286863320, -0.989175598692454750, -0.989168260625107210, -0.989160920084839020, -0.989153577071668510, -0.989146231585613990, -0.989138883626693890, -0.989131533194926640, +-0.989124180290330450, -0.989116824912923960, -0.989109467062725400, -0.989102106739753070, -0.989094743944025520, -0.989087378675561180, -0.989080010934378360, -0.989072640720495390, +-0.989065268033930910, -0.989057892874703250, -0.989050515242830940, -0.989043135138332200, -0.989035752561225780, -0.989028367511529780, -0.989020979989262970, -0.989013589994443780, +-0.989006197527090510, -0.988998802587221840, -0.988991405174856060, -0.988984005290011850, -0.988976602932707620, -0.988969198102961910, -0.988961790800793160, -0.988954381026219800, +-0.988946968779260690, -0.988939554059934060, -0.988932136868258540, -0.988924717204252790, -0.988917295067935020, -0.988909870459324210, -0.988902443378438690, -0.988895013825297100, +-0.988887581799917870, -0.988880147302319770, -0.988872710332521330, -0.988865270890540990, -0.988857828976397620, -0.988850384590109540, -0.988842937731695510, -0.988835488401174190, +-0.988828036598564110, -0.988820582323884030, -0.988813125577152400, -0.988805666358388070, -0.988798204667609370, -0.988790740504835290, -0.988783273870084360, -0.988775804763375230, +-0.988768333184726680, -0.988760859134157230, -0.988753382611685660, -0.988745903617330610, -0.988738422151110740, -0.988730938213044810, -0.988723451803151580, -0.988715962921449700, +-0.988708471567957940, -0.988700977742695050, -0.988693481445679700, -0.988685982676930420, -0.988678481436466420, -0.988670977724306230, -0.988663471540468520, -0.988655962884972150, +-0.988648451757835890, -0.988640938159078500, -0.988633422088718850, -0.988625903546775490, -0.988618382533267390, -0.988610859048213330, -0.988603333091632170, -0.988595804663542690, +-0.988588273763963740, -0.988580740392914100, -0.988573204550412420, -0.988565666236477900, -0.988558125451129200, -0.988550582194385190, -0.988543036466264620, -0.988535488266786610, +-0.988527937595969800, -0.988520384453833170, -0.988512828840395600, -0.988505270755675960, -0.988497710199693010, -0.988490147172465860, -0.988482581674013370, -0.988475013704354530, +-0.988467443263507990, -0.988459870351492850, -0.988452294968328090, -0.988444717114032590, -0.988437136788625330, -0.988429553992125180, -0.988421968724551240, -0.988414380985922270, +-0.988406790776257370, -0.988399198095575530, -0.988391602943895720, -0.988384005321236710, -0.988376405227617830, -0.988368802663058040, -0.988361197627576130, -0.988353590121191280, +-0.988345980143922390, -0.988338367695788420, -0.988330752776808710, -0.988323135387002120, -0.988315515526387630, -0.988307893194984470, -0.988300268392811490, -0.988292641119887900, +-0.988285011376232590, -0.988277379161864870, -0.988269744476803490, -0.988262107321068010, -0.988254467694677170, -0.988246825597650090, -0.988239181030006080, -0.988231533991764000, +-0.988223884482943070, -0.988216232503562500, -0.988208578053641370, -0.988200921133198680, -0.988193261742253860, -0.988185599880825770, -0.988177935548933740, -0.988170268746596860, +-0.988162599473834340, -0.988154927730665160, -0.988147253517108750, -0.988139576833184210, -0.988131897678910740, -0.988124216054307560, -0.988116531959393860, -0.988108845394188640, +-0.988101156358711540, -0.988093464852981440, -0.988085770877017660, -0.988078074430839500, -0.988070375514466190, -0.988062674127916930, -0.988054970271211030, -0.988047263944367590, +-0.988039555147406050, -0.988031843880345480, -0.988024130143205450, -0.988016413936005030, -0.988008695258763670, -0.988000974111500560, -0.987993250494234810, -0.987985524406986170, +-0.987977795849773630, -0.987970064822616620, -0.987962331325534460, -0.987954595358546460, -0.987946856921671950, -0.987939116014930340, -0.987931372638340970, -0.987923626791923140, +-0.987915878475696060, -0.987908127689679500, -0.987900374433892560, -0.987892618708354650, -0.987884860513085330, -0.987877099848103790, -0.987869336713429360, -0.987861571109081680, +-0.987853803035080080, -0.987846032491443980, -0.987838259478192810, -0.987830483995346010, -0.987822706042922990, -0.987814925620943310, -0.987807142729426160, -0.987799357368391080, +-0.987791569537857740, -0.987783779237845440, -0.987775986468373720, -0.987768191229462130, -0.987760393521129880, -0.987752593343396600, -0.987744790696282070, -0.987736985579805380, +-0.987729177993986410, -0.987721367938844350, -0.987713555414398980, -0.987705740420669610, -0.987697922957676000, -0.987690103025437470, -0.987682280623973670, -0.987674455753304150, +-0.987666628413448660, -0.987658798604426510, -0.987650966326257370, -0.987643131578960780, -0.987635294362556260, -0.987627454677063700, -0.987619612522502410, -0.987611767898892160, +-0.987603920806252480, -0.987596071244602910, -0.987588219213963230, -0.987580364714353070, -0.987572507745791860, -0.987564648308299490, -0.987556786401895370, -0.987548922026599390, +-0.987541055182431070, -0.987533185869410080, -0.987525314087556170, -0.987517439836888890, -0.987509563117428100, -0.987501683929193350, -0.987493802272204510, -0.987485918146481120, +-0.987478031552042950, -0.987470142488909630, -0.987462250957100940, -0.987454356956636750, -0.987446460487536590, -0.987438561549820130, -0.987430660143507440, -0.987422756268618080, +-0.987414849925171810, -0.987406941113188500, -0.987399029832687790, -0.987391116083689350, -0.987383199866213260, -0.987375281180279170, -0.987367360025906860, -0.987359436403116190, +-0.987351510311926920, -0.987343581752358810, -0.987335650724431860, -0.987327717228165700, -0.987319781263580110, -0.987311842830695290, -0.987303901929530770, -0.987295958560106550, +-0.987288012722442380, -0.987280064416558250, -0.987272113642473690, -0.987264160400209150, -0.987256204689784140, -0.987248246511218560, -0.987240285864532500, -0.987232322749745590, +-0.987224357166877950, -0.987216389115949440, -0.987208418596979830, -0.987200445609989210, -0.987192470154997450, -0.987184492232024650, -0.987176511841090560, -0.987168528982215190, +-0.987160543655418500, -0.987152555860720260, -0.987144565598140900, -0.987136572867700070, -0.987128577669417750, -0.987120580003314040, -0.987112579869408810, -0.987104577267722160, +-0.987096572198274180, -0.987088564661084630, -0.987080554656173730, -0.987072542183561330, -0.987064527243267650, -0.987056509835312680, -0.987048489959716500, -0.987040467616499000, +-0.987032442805680250, -0.987024415527280490, -0.987016385781319670, -0.987008353567817910, -0.987000318886795290, -0.986992281738271910, -0.986984242122267760, -0.986976200038803040, +-0.986968155487897850, -0.986960108469572160, -0.986952058983846190, -0.986944007030740140, -0.986935952610274110, -0.986927895722468200, -0.986919836367342480, -0.986911774544917190, +-0.986903710255212400, -0.986895643498248430, -0.986887574274045280, -0.986879502582623250, -0.986871428424002550, -0.986863351798203170, -0.986855272705245420, -0.986847191145149520, +-0.986839107117935650, -0.986831020623623820, -0.986822931662234670, -0.986814840233788180, -0.986806746338304560, -0.986798649975804020, -0.986790551146306870, -0.986782449849833320, +-0.986774346086403690, -0.986766239856038170, -0.986758131158757100, -0.986750019994580670, -0.986741906363529210, -0.986733790265623020, -0.986725671700882320, -0.986717550669327430, +-0.986709427170978540, -0.986701301205856200, -0.986693172773980610, -0.986685041875372090, -0.986676908510050970, -0.986668772678037650, -0.986660634379352140, -0.986652493614015300, +-0.986644350382047120, -0.986636204683468130, -0.986628056518298550, -0.986619905886558900, -0.986611752788269510, -0.986603597223450700, -0.986595439192122890, -0.986587278694306510, +-0.986579115730021770, -0.986570950299289430, -0.986562782402129690, -0.986554612038562870, -0.986546439208609740, -0.986538263912290160, -0.986530086149625230, -0.986521905920635040, +-0.986513723225340030, -0.986505538063760730, -0.986497350435917570, -0.986489160341831100, -0.986480967781521720, -0.986472772755009890, -0.986464575262316120, -0.986456375303460750, +-0.986448172878464650, -0.986439967987348120, -0.986431760630131600, -0.986423550806835750, -0.986415338517480980, -0.986407123762087720, -0.986398906540676860, -0.986390686853268580, +-0.986382464699883780, -0.986374240080542640, -0.986366012995266050, -0.986357783444074320, -0.986349551426988210, -0.986341316944028160, -0.986333079995214690, -0.986324840580568680, +-0.986316598700110570, -0.986308354353860990, -0.986300107541840500, -0.986291858264069620, -0.986283606520569120, -0.986275352311359650, -0.986267095636461870, -0.986258836495896300, +-0.986250574889683710, -0.986242310817844640, -0.986234044280399740, -0.986225775277369760, -0.986217503808775380, -0.986209229874637110, -0.986200953474975830, -0.986192674609812300, +-0.986184393279166960, -0.986176109483060670, -0.986167823221514080, -0.986159534494547850, -0.986151243302182960, -0.986142949644439830, -0.986134653521339440, -0.986126354932902350, +-0.986118053879149410, -0.986109750360101290, -0.986101444375778850, -0.986093135926202740, -0.986084825011393830, -0.986076511631372780, -0.986068195786160450, -0.986059877475777720, +-0.986051556700245360, -0.986043233459584000, -0.986034907753814420, -0.986026579582957810, -0.986018248947034600, -0.986009915846065900, -0.986001580280072340, -0.985993242249074920, +-0.985984901753094280, -0.985976558792151400, -0.985968213366267170, -0.985959865475462440, -0.985951515119757870, -0.985943162299174560, -0.985934807013733480, -0.985926449263455300, +-0.985918089048361090, -0.985909726368471520, -0.985901361223807670, -0.985892993614390420, -0.985884623540240760, -0.985876251001379430, -0.985867875997827550, -0.985859498529605970, +-0.985851118596735690, -0.985842736199237570, -0.985834351337132600, -0.985825964010441650, -0.985817574219185920, -0.985809181963386290, -0.985800787243063640, -0.985792390058239040, +-0.985783990408933500, -0.985775588295167760, -0.985767183716963260, -0.985758776674340750, -0.985750367167321340, -0.985741955195926000, -0.985733540760175830, -0.985725123860091700, +-0.985716704495694820, -0.985708282667006270, -0.985699858374046720, -0.985691431616837700, -0.985683002395400190, -0.985674570709755060, -0.985666136559923630, -0.985657699945926780, +-0.985649260867785480, -0.985640819325521280, -0.985632375319154930, -0.985623928848707750, -0.985615479914200730, -0.985607028515654960, -0.985598574653091640, -0.985590118326531870, +-0.985581659535996750, -0.985573198281507580, -0.985564734563085240, -0.985556268380751170, -0.985547799734526550, -0.985539328624432280, -0.985530855050489760, -0.985522379012720000, +-0.985513900511144400, -0.985505419545783970, -0.985496936116660120, -0.985488450223793830, -0.985479961867206540, -0.985471471046919230, -0.985462977762953220, -0.985454482015329810, +-0.985445983804070220, -0.985437483129195550, -0.985428979990727320, -0.985420474388686520, -0.985411966323094690, -0.985403455793972820, -0.985394942801342430, -0.985386427345224410, +-0.985377909425640520, -0.985369389042611950, -0.985360866196159810, -0.985352340886305520, -0.985343813113070290, -0.985335282876475650, -0.985326750176542810, -0.985318215013293090, +-0.985309677386747570, -0.985301137296928140, -0.985292594743855780, -0.985284049727552010, -0.985275502248038060, -0.985266952305335340, -0.985258399899465060, -0.985249845030448990, +-0.985241287698308320, -0.985232727903064490, -0.985224165644738690, -0.985215600923352590, -0.985207033738927480, -0.985198464091484700, -0.985189891981045780, -0.985181317407632040, +-0.985172740371265120, -0.985164160871966450, -0.985155578909757250, -0.985146994484659140, -0.985138407596693580, -0.985129818245881750, -0.985121226432245640, -0.985112632155806470, +-0.985104035416585640, -0.985095436214604710, -0.985086834549885220, -0.985078230422448690, -0.985069623832316550, -0.985061014779510360, -0.985052403264051630, -0.985043789285961700, +-0.985035172845262540, -0.985026553941975360, -0.985017932576121910, -0.985009308747723520, -0.985000682456801720, -0.984992053703378390, -0.984983422487474950, -0.984974788809112930, +-0.984966152668313890, -0.984957514065099460, -0.984948872999491300, -0.984940229471510940, -0.984931583481180040, -0.984922935028520240, -0.984914284113552860, -0.984905630736299890, +-0.984896974896782850, -0.984888316595023520, -0.984879655831043200, -0.984870992604863660, -0.984862326916506880, -0.984853658765994180, -0.984844988153347420, -0.984836315078588150, +-0.984827639541738020, -0.984818961542818890, -0.984810281081852310, -0.984801598158860040, -0.984792912773863720, -0.984784224926885110, -0.984775534617945980, -0.984766841847067980, +-0.984758146614272970, -0.984749448919582490, -0.984740748763018540, -0.984732046144602410, -0.984723341064356440, -0.984714633522302040, -0.984705923518461090, -0.984697211052855350, +-0.984688496125506460, -0.984679778736436530, -0.984671058885666970, -0.984662336573219890, -0.984653611799116700, -0.984644884563379730, -0.984636154866030510, -0.984627422707090920, +-0.984618688086582820, -0.984609951004527860, -0.984601211460948030, -0.984592469455865200, -0.984583724989301250, -0.984574978061278030, -0.984566228671817310, -0.984557476820941080, +-0.984548722508671090, -0.984539965735029330, -0.984531206500037560, -0.984522444803717760, -0.984513680646091900, -0.984504914027181880, -0.984496144947009650, -0.984487373405597000, +-0.984478599402965890, -0.984469822939138100, -0.984461044014135920, -0.984452262627981130, -0.984443478780695820, -0.984434692472301640, -0.984425903702820790, -0.984417112472275260, +-0.984408318780686800, -0.984399522628077620, -0.984390724014469700, -0.984381922939884690, -0.984373119404345130, -0.984364313407872670, -0.984355504950489510, -0.984346694032217530, +-0.984337880653078700, -0.984329064813095340, -0.984320246512289330, -0.984311425750682640, -0.984302602528297490, -0.984293776845155730, -0.984284948701279580, -0.984276118096691020, +-0.984267285031412140, -0.984258449505465150, -0.984249611518871800, -0.984240771071654640, -0.984231928163835420, -0.984223082795436580, -0.984214234966479860, -0.984205384676987590, +-0.984196531926981750, -0.984187676716484770, -0.984178819045518520, -0.984169958914105300, -0.984161096322267110, -0.984152231270026160, -0.984143363757404740, -0.984134493784424860, +-0.984125621351108700, -0.984116746457478380, -0.984107869103556300, -0.984098989289364570, -0.984090107014925390, -0.984081222280260960, -0.984072335085393490, -0.984063445430344960, +-0.984054553315137910, -0.984045658739794660, -0.984036761704337180, -0.984027862208787680, -0.984018960253168710, -0.984010055837502230, -0.984001148961810680, -0.983992239626116150, +-0.983983327830440960, -0.983974413574807640, -0.983965496859238180, -0.983956577683755000, -0.983947656048380410, -0.983938731953136750, -0.983929805398045980, -0.983920876383130860, +-0.983911944908413600, -0.983903010973916530, -0.983894074579661830, -0.983885135725672040, -0.983876194411969270, -0.983867250638576160, -0.983858304405514810, -0.983849355712807850, +-0.983840404560477170, -0.983831450948545740, -0.983822494877035660, -0.983813536345969350, -0.983804575355369140, -0.983795611905257440, -0.983786645995656790, -0.983777677626589520, +-0.983768706798078150, -0.983759733510144900, -0.983750757762812400, -0.983741779556102980, -0.983732798890039060, -0.983723815764643180, -0.983714830179937770, -0.983705842135945140, +-0.983696851632688050, -0.983687858670188820, -0.983678863248469980, -0.983669865367553960, -0.983660865027463300, -0.983651862228220320, -0.983642856969847770, -0.983633849252368190, +-0.983624839075803890, -0.983615826440177530, -0.983606811345511530, -0.983597793791828660, -0.983588773779151220, -0.983579751307501750, -0.983570726376902900, -0.983561698987377330, +-0.983552669138947460, -0.983543636831636040, -0.983534602065465390, -0.983525564840458390, -0.983516525156637230, -0.983507483014024910, -0.983498438412643840, -0.983489391352516780, +-0.983480341833666170, -0.983471289856114760, -0.983462235419885090, -0.983453178524999800, -0.983444119171481560, -0.983435057359352880, -0.983425993088636760, -0.983416926359355630, +-0.983407857171532230, -0.983398785525189110, -0.983389711420349140, -0.983380634857034640, -0.983371555835268700, -0.983362474355073960, -0.983353390416472960, -0.983344304019488470, +-0.983335215164143240, -0.983326123850460030, -0.983317030078461380, -0.983307933848170280, -0.983298835159609360, -0.983289734012801060, -0.983280630407768700, -0.983271524344534690, +-0.983262415823121900, -0.983253304843553110, -0.983244191405850840, -0.983235075510038300, -0.983225957156138030, -0.983216836344172900, -0.983207713074165660, -0.983198587346139190, +-0.983189459160116240, -0.983180328516119580, -0.983171195414172080, -0.983162059854296720, -0.983152921836515930, -0.983143781360853010, -0.983134638427330730, -0.983125493035971740, +-0.983116345186799130, -0.983107194879835560, -0.983098042115103880, -0.983088886892627300, -0.983079729212428370, -0.983070569074530280, -0.983061406478955680, -0.983052241425727560, +-0.983043073914868890, -0.983033903946402440, -0.983024731520351300, -0.983015556636738230, -0.983006379295586320, -0.982997199496918440, -0.982988017240757680, -0.982978832527126810, +-0.982969645356048920, -0.982960455727546640, -0.982951263641643540, -0.982942069098362130, -0.982932872097725620, -0.982923672639756880, -0.982914470724479020, -0.982905266351915000, +-0.982896059522087810, -0.982886850235020430, -0.982877638490735730, -0.982868424289257140, -0.982859207630607520, -0.982849988514809760, -0.982840766941887160, -0.982831542911862590, +-0.982822316424759030, -0.982813087480599810, -0.982803856079407900, -0.982794622221206390, -0.982785385906018270, -0.982776147133866630, -0.982766905904774670, -0.982757662218765480, +-0.982748416075862160, -0.982739167476087690, -0.982729916419465170, -0.982720662906018120, -0.982711406935769300, -0.982702148508742050, -0.982692887624959320, -0.982683624284444330, +-0.982674358487220400, -0.982665090233310500, -0.982655819522737950, -0.982646546355525840, -0.982637270731697380, -0.982627992651275760, -0.982618712114284090, -0.982609429120745670, +-0.982600143670683710, -0.982590855764121200, -0.982581565401081770, -0.982572272581588300, -0.982562977305664220, -0.982553679573332730, -0.982544379384617030, -0.982535076739540210, +-0.982525771638125820, -0.982516464080397060, -0.982507154066377120, -0.982497841596089330, -0.982488526669556880, -0.982479209286803100, -0.982469889447851300, -0.982460567152724780, +-0.982451242401446770, -0.982441915194040780, -0.982432585530529920, -0.982423253410937610, -0.982413918835287280, -0.982404581803602020, -0.982395242315905250, -0.982385900372220510, +-0.982376555972571010, -0.982367209116980060, -0.982357859805471190, -0.982348508038067610, -0.982339153814792750, -0.982329797135670040, -0.982320438000722880, -0.982311076409974390, +-0.982301712363448320, -0.982292345861168090, -0.982282976903156910, -0.982273605489438320, -0.982264231620035730, -0.982254855294972360, -0.982245476514272080, -0.982236095277958080, +-0.982226711586053790, -0.982217325438582870, -0.982207936835568510, -0.982198545777034360, -0.982189152263003740, -0.982179756293500410, -0.982170357868547560, -0.982160956988168630, +-0.982151553652387600, -0.982142147861227550, -0.982132739614712260, -0.982123328912865020, -0.982113915755709390, -0.982104500143269000, -0.982095082075567500, -0.982085661552628220, +-0.982076238574474790, -0.982066813141130760, -0.982057385252619760, -0.982047954908965240, -0.982038522110190830, -0.982029086856320180, -0.982019649147376610, -0.982010208983383980, +-0.982000766364365950, -0.981991321290345940, -0.981981873761347710, -0.981972423777394800, -0.981962971338510520, -0.981953516444719070, -0.981944059096043880, -0.981934599292508480, +-0.981925137034136640, -0.981915672320951890, -0.981906205152978000, -0.981896735530238600, -0.981887263452757340, -0.981877788920557770, -0.981868311933663860, -0.981858832492099150, +-0.981849350595887400, -0.981839866245052260, -0.981830379439617480, -0.981820890179606610, -0.981811398465043620, -0.981801904295952150, -0.981792407672355980, -0.981782908594278750, +-0.981773407061744210, -0.981763903074776230, -0.981754396633398470, -0.981744887737634690, -0.981735376387508520, -0.981725862583044060, -0.981716346324264970, -0.981706827611194990, +-0.981697306443858000, -0.981687782822277750, -0.981678256746477800, -0.981668728216482430, -0.981659197232315210, -0.981649663793999980, -0.981640127901560630, -0.981630589555021030, +-0.981621048754404810, -0.981611505499736080, -0.981601959791038480, -0.981592411628336100, -0.981582861011652490, -0.981573307941011830, -0.981563752416438010, -0.981554194437954660, +-0.981544634005586000, -0.981535071119355450, -0.981525505779287430, -0.981515937985405710, -0.981506367737734030, -0.981496795036296500, -0.981487219881116980, -0.981477642272219450, +-0.981468062209627790, -0.981458479693365860, -0.981448894723457870, -0.981439307299927450, -0.981429717422798940, -0.981420125092096090, -0.981410530307842980, -0.981400933070063490, +-0.981391333378781710, -0.981381731234021390, -0.981372126635806860, -0.981362519584162100, -0.981352910079111070, -0.981343298120677670, -0.981333683708886070, -0.981324066843760280, +-0.981314447525324370, -0.981304825753602230, -0.981295201528617930, -0.981285574850395800, -0.981275945718959710, -0.981266314134333740, -0.981256680096541990, -0.981247043605608550, +-0.981237404661557290, -0.981227763264412740, -0.981218119414198790, -0.981208473110939510, -0.981198824354659100, -0.981189173145381570, -0.981179519483131200, -0.981169863367931880, +-0.981160204799808030, -0.981150543778783410, -0.981140880304882670, -0.981131214378129670, -0.981121545998548730, -0.981111875166163830, -0.981102201880999280, -0.981092526143079070, +-0.981082847952427730, -0.981073167309069240, -0.981063484213027800, -0.981053798664327630, -0.981044110662993020, -0.981034420209048190, -0.981024727302517220, -0.981015031943424430, +-0.981005334131794140, -0.980995633867650320, -0.980985931151017510, -0.980976225981919910, -0.980966518360381730, -0.980956808286427280, -0.980947095760080660, -0.980937380781366500, +-0.980927663350308790, -0.980917943466932060, -0.980908221131260310, -0.980898496343318160, -0.980888769103129610, -0.980879039410719300, -0.980869307266111320, -0.980859572669329990, +-0.980849835620399620, -0.980840096119344860, -0.980830354166189910, -0.980820609760958970, -0.980810862903676580, -0.980801113594367060, -0.980791361833054490, -0.980781607619763740, +-0.980771850954518910, -0.980762091837344530, -0.980752330268264920, -0.980742566247304380, -0.980732799774487570, -0.980723030849838700, -0.980713259473382170, -0.980703485645142430, +-0.980693709365144110, -0.980683930633411530, -0.980674149449969110, -0.980664365814841290, -0.980654579728052590, -0.980644791189627330, -0.980635000199590160, -0.980625206757965500, +-0.980615410864777880, -0.980605612520051740, -0.980595811723811490, -0.980586008476081790, -0.980576202776887060, -0.980566394626251720, -0.980556584024200320, -0.980546770970757600, +-0.980536955465947990, -0.980527137509796030, -0.980517317102326150, -0.980507494243562980, -0.980497668933530850, -0.980487841172254850, -0.980478010959759170, -0.980468178296068470, +-0.980458343181207390, -0.980448505615200360, -0.980438665598072130, -0.980428823129847140, -0.980418978210550240, -0.980409130840205760, -0.980399281018838330, -0.980389428746472950, +-0.980379574023133920, -0.980369716848845880, -0.980359857223633610, -0.980349995147521640, -0.980340130620534710, -0.980330263642697490, -0.980320394214034610, -0.980310522334570830, +-0.980300648004330590, -0.980290771223338850, -0.980280891991620160, -0.980271010309199280, -0.980261126176100730, -0.980251239592349390, -0.980241350557970010, -0.980231459072987250, +-0.980221565137425870, -0.980211668751310490, -0.980201769914666010, -0.980191868627516950, -0.980181964889888400, -0.980172058701804900, -0.980162150063291330, -0.980152238974372310, +-0.980142325435072740, -0.980132409445417240, -0.980122491005430810, -0.980112570115138190, -0.980102646774563930, -0.980092720983733230, -0.980082792742670740, -0.980072862051401210, +-0.980062928909949620, -0.980052993318340620, -0.980043055276598960, -0.980033114784749860, -0.980023171842818060, -0.980013226450828220, -0.980003278608805320, -0.979993328316774330, +-0.979983375574759900, -0.979973420382787120, -0.979963462740880750, -0.979953502649065560, -0.979943540107366730, -0.979933575115809140, -0.979923607674417550, -0.979913637783216940, +-0.979903665442232290, -0.979893690651488240, -0.979883713411010100, -0.979873733720822760, -0.979863751580951070, -0.979853766991420020, -0.979843779952254580, -0.979833790463479630, +-0.979823798525120250, -0.979813804137201320, -0.979803807299747920, -0.979793808012784820, -0.979783806276337320, -0.979773802090430300, -0.979763795455088850, -0.979753786370337940, +-0.979743774836202340, -0.979733760852707470, -0.979723744419878200, -0.979713725537739500, -0.979703704206316580, -0.979693680425634430, -0.979683654195718010, -0.979673625516592540, +-0.979663594388282880, -0.979653560810814340, -0.979643524784211680, -0.979633486308500330, -0.979623445383705380, -0.979613402009851700, -0.979603356186964590, -0.979593307915068930, +-0.979583257194190150, -0.979573204024353220, -0.979563148405583230, -0.979553090337905390, -0.979543029821344890, -0.979532966855926720, -0.979522901441676200, -0.979512833578618510, +-0.979502763266778650, -0.979492690506181710, -0.979482615296853210, -0.979472537638818140, -0.979462457532101700, -0.979452374976729210, -0.979442289972725750, -0.979432202520116420, +-0.979422112618926750, -0.979412020269181730, -0.979401925470906760, -0.979391828224126960, -0.979381728528867510, -0.979371626385153740, -0.979361521793010950, -0.979351414752464340, +-0.979341305263539130, -0.979331193326260730, -0.979321078940654340, -0.979310962106745290, -0.979300842824558760, -0.979290721094120190, -0.979280596915454660, -0.979270470288587710, +-0.979260341213544660, -0.979250209690350810, -0.979240075719031380, -0.979229939299611770, -0.979219800432117320, -0.979209659116573320, -0.979199515353005200, -0.979189369141438280, +-0.979179220481897760, -0.979169069374409400, -0.979158915818998390, -0.979148759815690050, -0.979138601364509810, -0.979128440465482860, -0.979118277118635080, -0.979108111323991560, +-0.979097943081577720, -0.979087772391419090, -0.979077599253540990, -0.979067423667968840, -0.979057245634728180, -0.979047065153844430, -0.979036882225343020, -0.979026696849249260, +-0.979016509025588900, -0.979006318754387150, -0.978996126035669770, -0.978985930869461950, -0.978975733255789240, -0.978965533194677270, -0.978955330686151590, -0.978945125730237510, +-0.978934918326960560, -0.978924708476346380, -0.978914496178420410, -0.978904281433208290, -0.978894064240735330, -0.978883844601027290, -0.978873622514109480, -0.978863397980007770, +-0.978853170998747470, -0.978842941570354340, -0.978832709694853920, -0.978822475372271630, -0.978812238602633000, -0.978801999385963910, -0.978791757722289880, -0.978781513611636340, +-0.978771267054029170, -0.978761018049493780, -0.978750766598055820, -0.978740512699740940, -0.978730256354574780, -0.978719997562582880, -0.978709736323791100, -0.978699472638224990, +-0.978689206505910180, -0.978678937926872330, -0.978668666901137190, -0.978658393428730180, -0.978648117509677400, -0.978637839144004260, -0.978627558331736540, -0.978617275072899970, +-0.978606989367520220, -0.978596701215622920, -0.978586410617233950, -0.978576117572378950, -0.978565822081083450, -0.978555524143373550, -0.978545223759274880, -0.978534920928813110, +-0.978524615652014100, -0.978514307928903480, -0.978503997759506920, -0.978493685143850600, -0.978483370081959960, -0.978473052573861080, -0.978462732619579390, -0.978452410219140980, +-0.978442085372571490, -0.978431758079896800, -0.978421428341142760, -0.978411096156335040, -0.978400761525499480, -0.978390424448662200, -0.978380084925848830, -0.978369742957085230, +-0.978359398542397280, -0.978349051681810740, -0.978338702375351700, -0.978328350623045910, -0.978317996424919230, -0.978307639780997550, -0.978297280691306730, -0.978286919155872740, +-0.978276555174721450, -0.978266188747878850, -0.978255819875370690, -0.978245448557222840, -0.978235074793461610, -0.978224698584112540, -0.978214319929201830, -0.978203938828755340, +-0.978193555282798940, -0.978183169291358510, -0.978172780854460240, -0.978162389972130120, -0.978151996644394010, -0.978141600871277990, -0.978131202652807840, -0.978120801989009750, +-0.978110398879909580, -0.978099993325533430, -0.978089585325907170, -0.978079174881057110, -0.978068761991009120, -0.978058346655789280, -0.978047928875423470, -0.978037508649937880, +-0.978027085979358390, -0.978016660863711310, -0.978006233303022610, -0.977995803297318280, -0.977985370846624400, -0.977974935950967180, -0.977964498610372600, -0.977954058824866750, +-0.977943616594475820, -0.977933171919225570, -0.977922724799142660, -0.977912275234252950, -0.977901823224582410, -0.977891368770157480, -0.977880911871004010, -0.977870452527148100, +-0.977859990738616290, -0.977849526505434550, -0.977839059827628860, -0.977828590705225650, -0.977818119138250900, -0.977807645126730800, -0.977797168670691660, -0.977786689770159590, +-0.977776208425160780, -0.977765724635721310, -0.977755238401867620, -0.977744749723625910, -0.977734258601022250, -0.977723765034083090, -0.977713269022834170, -0.977702770567302370, +-0.977692269667513550, -0.977681766323494130, -0.977671260535270310, -0.977660752302868310, -0.977650241626314420, -0.977639728505634960, -0.977629212940856140, -0.977618694932004260, +-0.977608174479105530, -0.977597651582186480, -0.977587126241273420, -0.977576598456392440, -0.977566068227569970, -0.977555535554832320, -0.977545000438205690, -0.977534462877716730, +-0.977523922873391630, -0.977513380425256710, -0.977502835533338390, -0.977492288197662870, -0.977481738418256700, -0.977471186195146170, -0.977460631528357720, -0.977450074417917420, +-0.977439514863852170, -0.977428952866188140, -0.977418388424951770, -0.977407821540169360, -0.977397252211867350, -0.977386680440072150, -0.977376106224810300, -0.977365529566108340, +-0.977354950463992460, -0.977344368918489190, -0.977333784929625080, -0.977323198497426440, -0.977312609621919790, -0.977302018303131680, -0.977291424541088300, -0.977280828335816530, +-0.977270229687342670, -0.977259628595693260, -0.977249025060894840, -0.977238419082973820, -0.977227810661956520, -0.977217199797869920, -0.977206586490740330, -0.977195970740594280, +-0.977185352547458310, -0.977174731911358950, -0.977164108832322740, -0.977153483310376210, -0.977142855345546010, -0.977132224937858670, -0.977121592087340620, -0.977110956794018830, +-0.977100319057919500, -0.977089678879069500, -0.977079036257495260, -0.977068391193223200, -0.977057743686280400, -0.977047093736693180, -0.977036441344488300, -0.977025786509692300, +-0.977015129232331800, -0.977004469512433580, -0.976993807350024060, -0.976983142745130100, -0.976972475697778230, -0.976961806207995000, -0.976951134275807490, -0.976940459901242120, +-0.976929783084325540, -0.976919103825084620, -0.976908422123545780, -0.976897737979735780, -0.976887051393681700, -0.976876362365409870, -0.976865670894947250, -0.976854976982320380, +-0.976844280627556020, -0.976833581830681030, -0.976822880591722060, -0.976812176910705990, -0.976801470787659110, -0.976790762222608850, -0.976780051215581760, -0.976769337766604350, +-0.976758621875703730, -0.976747903542906530, -0.976737182768239400, -0.976726459551729430, -0.976715733893403380, -0.976705005793288010, -0.976694275251410060, -0.976683542267796520, +-0.976672806842474040, -0.976662068975469590, -0.976651328666809930, -0.976640585916521700, -0.976629840724632330, -0.976619093091168230, -0.976608343016156510, -0.976597590499623910, +-0.976586835541597310, -0.976576078142103340, -0.976565318301169550, -0.976554556018822350, -0.976543791295088730, -0.976533024129995760, -0.976522254523570110, -0.976511482475838850, +-0.976500707986828980, -0.976489931056567230, -0.976479151685080700, -0.976468369872396050, -0.976457585618540680, -0.976446798923541360, -0.976436009787425060, -0.976425218210218770, +-0.976414424191949240, -0.976403627732643780, -0.976392828832329250, -0.976382027491032640, -0.976371223708781040, -0.976360417485601320, -0.976349608821520550, -0.976338797716565840, +-0.976327984170764050, -0.976317168184142380, -0.976306349756727480, -0.976295528888546980, -0.976284705579627650, -0.976273879829996580, -0.976263051639680750, -0.976252221008707340, +-0.976241387937103130, -0.976230552424895650, -0.976219714472111870, -0.976208874078778770, -0.976198031244923440, -0.976187185970573080, -0.976176338255754780, -0.976165488100495530, +-0.976154635504822620, -0.976143780468762930, -0.976132922992344000, -0.976122063075592790, -0.976111200718536300, -0.976100335921201930, -0.976089468683616680, -0.976078599005807510, +-0.976067726887802190, -0.976056852329627360, -0.976045975331310540, -0.976035095892878730, -0.976024214014359240, -0.976013329695779140, -0.976002442937165760, -0.975991553738546180, +-0.975980662099947600, -0.975969768021397570, -0.975958871502923150, -0.975947972544551460, -0.975937071146309900, -0.975926167308225680, -0.975915261030325780, -0.975904352312637950, +-0.975893441155189280, -0.975882527558006970, -0.975871611521118340, -0.975860693044550700, -0.975849772128331240, -0.975838848772487500, -0.975827922977046570, -0.975816994742035760, +-0.975806064067482380, -0.975795130953413970, -0.975784195399857720, -0.975773257406841070, -0.975762316974391200, -0.975751374102535430, -0.975740428791301300, -0.975729481040716220, +-0.975718530850807290, -0.975707578221602150, -0.975696623153128000, -0.975685665645412370, -0.975674705698482580, -0.975663743312365940, -0.975652778487089980, -0.975641811222681900, +-0.975630841519169460, -0.975619869376579850, -0.975608894794940730, -0.975597917774279290, -0.975586938314622950, -0.975575956415999260, -0.975564972078435730, -0.975553985301959800, +-0.975542996086599000, -0.975532004432380640, -0.975521010339332250, -0.975510013807481370, -0.975499014836855420, -0.975488013427481930, -0.975477009579388320, -0.975466003292602250, +-0.975454994567151230, -0.975443983403062710, -0.975432969800364200, -0.975421953759083360, -0.975410935279247380, -0.975399914360884250, -0.975388891004021370, -0.975377865208686190, +-0.975366836974906450, -0.975355806302709570, -0.975344773192123090, -0.975333737643174770, -0.975322699655892130, -0.975311659230302500, -0.975300616366433950, -0.975289571064313800, +-0.975278523323969800, -0.975267473145429390, -0.975256420528720410, -0.975245365473870090, -0.975234307980906600, -0.975223248049857380, -0.975212185680749970, -0.975201120873612100, +-0.975190053628471440, -0.975178983945355740, -0.975167911824292410, -0.975156837265309440, -0.975145760268434360, -0.975134680833694590, -0.975123598961118440, -0.975112514650733230, +-0.975101427902566710, -0.975090338716646630, -0.975079247093000530, -0.975068153031656500, -0.975057056532642070, -0.975045957595985000, -0.975034856221713040, -0.975023752409853950, +-0.975012646160435480, -0.975001537473485390, -0.974990426349031550, -0.974979312787101480, -0.974968196787723060, -0.974957078350924270, -0.974945957476732850, -0.974934834165176460, +-0.974923708416283060, -0.974912580230080320, -0.974901449606595970, -0.974890316545858230, -0.974879181047894620, -0.974868043112733120, -0.974856902740401490, -0.974845759930927590, +-0.974834614684339300, -0.974823467000664470, -0.974812316879930970, -0.974801164322166460, -0.974790009327399340, -0.974778851895657050, -0.974767692026967780, -0.974756529721359180, +-0.974745364978859330, -0.974734197799495770, -0.974723028183296920, -0.974711856130290540, -0.974700681640504610, -0.974689504713966870, -0.974678325350705420, -0.974667143550748130, +-0.974655959314122970, -0.974644772640857910, -0.974633583530980730, -0.974622391984519830, -0.974611198001502870, -0.974600001581957920, -0.974588802725913080, -0.974577601433396110, +-0.974566397704434980, -0.974555191539058120, -0.974543982937293160, -0.974532771899168320, -0.974521558424711550, -0.974510342513950860, -0.974499124166914310, -0.974487903383630010, +-0.974476680164125920, -0.974465454508430140, -0.974454226416570420, -0.974442995888575410, -0.974431762924472980, -0.974420527524291090, -0.974409289688057840, -0.974398049415801220, +-0.974386806707549620, -0.974375561563331050, -0.974364313983173580, -0.974353063967105300, -0.974341811515154420, -0.974330556627348910, -0.974319299303717080, -0.974308039544287020, +-0.974296777349086820, -0.974285512718144450, -0.974274245651488570, -0.974262976149147030, -0.974251704211148040, -0.974240429837519790, -0.974229153028290500, -0.974217873783488120, +-0.974206592103141310, -0.974195307987277940, -0.974184021435926310, -0.974172732449114620, -0.974161441026871190, -0.974150147169223990, -0.974138850876201560, -0.974127552147831980, +-0.974116250984143340, -0.974104947385164180, -0.974093641350922690, -0.974082332881447190, -0.974071021976765760, -0.974059708636906720, -0.974048392861898370, -0.974037074651769140, +-0.974025754006547230, -0.974014430926260940, -0.974003105410938600, -0.973991777460608390, -0.973980447075298850, -0.973969114255038180, -0.973957778999854700, -0.973946441309776590, +-0.973935101184832620, -0.973923758625050760, -0.973912413630459660, -0.973901066201087410, -0.973889716336962530, -0.973878364038113230, -0.973867009304568150, -0.973855652136355500, +-0.973844292533503800, -0.973832930496041360, -0.973821566023996610, -0.973810199117397860, -0.973798829776273740, -0.973787458000652470, -0.973776083790562570, -0.973764707146032250, +-0.973753328067090360, -0.973741946553765110, -0.973730562606085040, -0.973719176224078550, -0.973707787407773970, -0.973696396157200050, -0.973685002472385210, -0.973673606353357870, +-0.973662207800146450, -0.973650806812779600, -0.973639403391285630, -0.973627997535693180, -0.973616589246030780, -0.973605178522326860, -0.973593765364609840, -0.973582349772908580, +-0.973570931747251400, -0.973559511287666930, -0.973548088394183720, -0.973536663066830180, -0.973525235305634950, -0.973513805110626680, -0.973502372481834020, -0.973490937419285270, +-0.973479499923009310, -0.973468059993034540, -0.973456617629389730, -0.973445172832103300, -0.973433725601203890, -0.973422275936720040, -0.973410823838680610, -0.973399369307114240, +-0.973387912342049360, -0.973376452943514710, -0.973364991111538960, -0.973353526846150510, -0.973342060147378450, -0.973330591015251210, -0.973319119449797540, -0.973307645451046090, +-0.973296169019025490, -0.973284690153764510, -0.973273208855291670, -0.973261725123635960, -0.973250238958825680, -0.973238750360890030, -0.973227259329857430, -0.973215765865756750, +-0.973204269968616640, -0.973192771638465850, -0.973181270875332900, -0.973169767679247010, -0.973158262050236700, -0.973146753988330730, -0.973135243493557960, -0.973123730565946920, +-0.973112215205526710, -0.973100697412325850, -0.973089177186373330, -0.973077654527697790, -0.973066129436327980, -0.973054601912292980, -0.973043071955621560, -0.973031539566342360, +-0.973020004744484360, -0.973008467490076190, -0.972996927803146950, -0.972985385683725500, -0.972973841131840490, -0.972962294147521000, -0.972950744730795680, -0.972939192881693500, +-0.972927638600243340, -0.972916081886474160, -0.972904522740414720, -0.972892961162093780, -0.972881397151540650, -0.972869830708783970, -0.972858261833852710, -0.972846690526775860, +-0.972835116787582050, -0.972823540616300720, -0.972811962012960500, -0.972800380977590250, -0.972788797510219180, -0.972777211610876160, -0.972765623279590040, -0.972754032516389810, +-0.972742439321304550, -0.972730843694363250, -0.972719245635594530, -0.972707645145027940, -0.972696042222692240, -0.972684436868616500, -0.972672829082829590, -0.972661218865360610, +-0.972649606216238420, -0.972637991135492430, -0.972626373623151410, -0.972614753679244440, -0.972603131303800720, -0.972591506496849000, -0.972579879258418600, -0.972568249588538490, +-0.972556617487237760, -0.972544982954545280, -0.972533345990490570, -0.972521706595102510, -0.972510064768410180, -0.972498420510442660, -0.972486773821229060, -0.972475124700798330, +-0.972463473149180020, -0.972451819166403000, -0.972440162752496450, -0.972428503907489470, -0.972416842631411260, -0.972405178924291010, -0.972393512786157710, -0.972381844217040660, +-0.972370173216968840, -0.972358499785971770, -0.972346823924078340, -0.972335145631317950, -0.972323464907719700, -0.972311781753312790, -0.972300096168126180, -0.972288408152189640, +-0.972276717705532030, -0.972265024828182560, -0.972253329520170520, -0.972241631781525230, -0.972229931612275890, -0.972218229012451580, -0.972206523982081850, -0.972194816521195770, +-0.972183106629822320, -0.972171394307991490, -0.972159679555732130, -0.972147962373073440, -0.972136242760044960, -0.972124520716675660, -0.972112796242995290, -0.972101069339032840, +-0.972089340004817840, -0.972077608240379360, -0.972065874045746960, -0.972054137420949820, -0.972042398366017360, -0.972030656880978890, -0.972018912965863740, -0.972007166620701190, +-0.971995417845520900, -0.971983666640352070, -0.971971913005224010, -0.971960156940166240, -0.971948398445208080, -0.971936637520378620, -0.971924874165707830, -0.971913108381224910, +-0.971901340166959170, -0.971889569522940140, -0.971877796449197140, -0.971866020945759580, -0.971854243012657100, -0.971842462649918910, -0.971830679857574430, -0.971818894635653410, +-0.971807106984185150, -0.971795316903199090, -0.971783524392724860, -0.971771729452791670, -0.971759932083429030, -0.971748132284666830, -0.971736330056534260, -0.971724525399060850, +-0.971712718312276010, -0.971700908796209520, -0.971689096850890780, -0.971677282476349210, -0.971665465672614470, -0.971653646439715860, -0.971641824777683240, -0.971630000686546150, +-0.971618174166334110, -0.971606345217076560, -0.971594513838803240, -0.971582680031543360, -0.971570843795326990, -0.971559005130183450, -0.971547164036142500, -0.971535320513233550, +-0.971523474561486360, -0.971511626180930450, -0.971499775371595490, -0.971487922133511090, -0.971476066466706920, -0.971464208371212390, -0.971452347847057470, -0.971440484894271710, +-0.971428619512884730, -0.971416751702926300, -0.971404881464425610, -0.971393008797413080, -0.971381133701917920, -0.971369256177969990, -0.971357376225598920, -0.971345493844834370, +-0.971333609035706090, -0.971321721798243830, -0.971309832132477240, -0.971297940038436060, -0.971286045516149830, -0.971274148565648750, -0.971262249186962250, -0.971250347380120060, +-0.971238443145152060, -0.971226536482088010, -0.971214627390957320, -0.971202715871790300, -0.971190801924616600, -0.971178885549465740, -0.971166966746367710, -0.971155045515352260, +-0.971143121856449240, -0.971131195769688430, -0.971119267255099560, -0.971107336312712400, -0.971095402942557030, -0.971083467144663090, -0.971071528919060680, -0.971059588265779320, +-0.971047645184848980, -0.971035699676299320, -0.971023751740160650, -0.971011801376462590, -0.970999848585235030, -0.970987893366507930, -0.970975935720310930, -0.970963975646674250, +-0.970952013145627510, -0.970940048217200810, -0.970928080861423790, -0.970916111078326760, -0.970904138867939360, -0.970892164230291790, -0.970880187165413690, -0.970868207673335150, +-0.970856225754085810, -0.970844241407696210, -0.970832254634195980, -0.970820265433615100, -0.970808273805983670, -0.970796279751331430, -0.970784283269688460, -0.970772284361084870, +-0.970760283025550510, -0.970748279263115470, -0.970736273073809610, -0.970724264457663130, -0.970712253414706130, -0.970700239944968350, -0.970688224048480100, -0.970676205725271020, +-0.970664184975371660, -0.970652161798811750, -0.970640136195621510, -0.970628108165830890, -0.970616077709470120, -0.970604044826569030, -0.970592009517157850, -0.970579971781266650, +-0.970567931618925520, -0.970555889030164430, -0.970543844015013700, -0.970531796573503520, -0.970519746705663660, -0.970507694411524620, -0.970495639691116190, -0.970483582544468540, +-0.970471522971612100, -0.970459460972576850, -0.970447396547392980, -0.970435329696090590, -0.970423260418699970, -0.970411188715251120, -0.970399114585774330, -0.970387038030299690, +-0.970374959048857290, -0.970362877641477660, -0.970350793808190890, -0.970338707549027070, -0.970326618864016610, -0.970314527753189490, -0.970302434216575800, -0.970290338254206410, +-0.970278239866111060, -0.970266139052320060, -0.970254035812863850, -0.970241930147772490, -0.970229822057076200, -0.970217711540805490, -0.970205598598990470, -0.970193483231661210, +-0.970181365438848480, -0.970169245220582340, -0.970157122576893130, -0.970144997507811020, -0.970132870013366460, -0.970120740093589510, -0.970108607748510930, -0.970096472978160820, +-0.970084335782569580, -0.970072196161767430, -0.970060054115784780, -0.970047909644652040, -0.970035762748399530, -0.970023613427057670, -0.970011461680656660, -0.969999307509226800, +-0.969987150912798970, -0.969974991891403240, -0.969962830445069920, -0.969950666573829670, -0.969938500277712450, -0.969926331556749230, -0.969914160410970230, -0.969901986840405740, +-0.969889810845086300, -0.969877632425042320, -0.969865451580304350, -0.969853268310902680, -0.969841082616867860, -0.969828894498230290, -0.969816703955020290, -0.969804510987268830, +-0.969792315595006000, -0.969780117778262340, -0.969767917537068480, -0.969755714871454840, -0.969743509781451630, -0.969731302267089810, -0.969719092328399810, -0.969706879965412160, +-0.969694665178157170, -0.969682447966665580, -0.969670228330967940, -0.969658006271094660, -0.969645781787076280, -0.969633554878943320, -0.969621325546726750, -0.969609093790456790, +-0.969596859610164060, -0.969584623005879220, -0.969572383977632900, -0.969560142525455300, -0.969547898649377630, -0.969535652349430180, -0.969523403625643600, -0.969511152478048420, +-0.969498898906675510, -0.969486642911555290, -0.969474384492718500, -0.969462123650195680, -0.969449860384017370, -0.969437594694214640, -0.969425326580817930, -0.969413056043857860, +-0.969400783083365190, -0.969388507699370460, -0.969376229891904420, -0.969363949660997930, -0.969351667006681520, -0.969339381928985940, -0.969327094427942070, -0.969314804503580320, +-0.969302512155931550, -0.969290217385026520, -0.969277920190895980, -0.969265620573570690, -0.969253318533081050, -0.969241014069458400, -0.969228707182733130, -0.969216397872936120, +-0.969204086140098120, -0.969191771984249660, -0.969179455405422050, -0.969167136403645820, -0.969154814978951620, -0.969142491131370520, -0.969130164860933170, -0.969117836167670330, +-0.969105505051612970, -0.969093171512791840, -0.969080835551237700, -0.969068497166981400, -0.969056156360053930, -0.969043813130486150, -0.969031467478308820, -0.969019119403552900, +-0.969006768906249040, -0.968994415986428100, -0.968982060644121400, -0.968969702879359460, -0.968957342692173260, -0.968944980082593780, -0.968932615050651870, -0.968920247596378290, +-0.968907877719804240, -0.968895505420960370, -0.968883130699877530, -0.968870753556587140, -0.968858373991119850, -0.968845992003506630, -0.968833607593778460, -0.968821220761966200, +-0.968808831508100710, -0.968796439832213420, -0.968784045734334960, -0.968771649214496430, -0.968759250272728690, -0.968746848909062930, -0.968734445123529910, -0.968722038916160930, +-0.968709630286986760, -0.968697219236038350, -0.968684805763347030, -0.968672389868943770, -0.968659971552859540, -0.968647550815125320, -0.968635127655772310, -0.968622702074831140, +-0.968610274072333580, -0.968597843648310250, -0.968585410802792260, -0.968572975535810900, -0.968560537847396930, -0.968548097737581770, -0.968535655206396280, -0.968523210253871670, +-0.968510762880039010, -0.968498313084929290, -0.968485860868573910, -0.968473406231003970, -0.968460949172250450, -0.968448489692344540, -0.968436027791317210, -0.968423563469200110, +-0.968411096726023990, -0.968398627561820160, -0.968386155976619810, -0.968373681970454040, -0.968361205543354140, -0.968348726695351100, -0.968336245426476340, -0.968323761736760940, +-0.968311275626235870, -0.968298787094932890, -0.968286296142882860, -0.968273802770117210, -0.968261306976666900, -0.968248808762563470, -0.968236308127837670, -0.968223805072521370, +-0.968211299596645650, -0.968198791700241590, -0.968186281383340620, -0.968173768645973820, -0.968161253488172720, -0.968148735909968420, -0.968136215911392320, -0.968123693492475400, +-0.968111168653249530, -0.968098641393745800, -0.968086111713995390, -0.968073579614029620, -0.968061045093880020, -0.968048508153577570, -0.968035968793154010, -0.968023427012640550, +-0.968010882812068600, -0.967998336191469360, -0.967985787150874240, -0.967973235690314790, -0.967960681809822200, -0.967948125509427880, -0.967935566789163040, -0.967923005649059420, +-0.967910442089148340, -0.967897876109461210, -0.967885307710029340, -0.967872736890884270, -0.967860163652057070, -0.967847587993579730, -0.967835009915483320, -0.967822429417799500, +-0.967809846500559570, -0.967797261163794940, -0.967784673407537270, -0.967772083231817850, -0.967759490636668220, -0.967746895622119910, -0.967734298188204110, -0.967721698334952810, +-0.967709096062397300, -0.967696491370569010, -0.967683884259499470, -0.967671274729219990, -0.967658662779762650, -0.967646048411158530, -0.967633431623439400, -0.967620812416636560, +-0.967608190790781750, -0.967595566745906520, -0.967582940282042280, -0.967570311399220780, -0.967557680097473450, -0.967545046376831700, -0.967532410237327500, -0.967519771678992390, +-0.967507130701857790, -0.967494487305955330, -0.967481841491316660, -0.967469193257973200, -0.967456542605957040, -0.967443889535299470, -0.967431234046032150, -0.967418576138186710, +-0.967405915811794910, -0.967393253066888280, -0.967380587903498570, -0.967367920321657300, -0.967355250321396130, -0.967342577902746910, -0.967329903065741400, -0.967317225810411020, +-0.967304546136787620, -0.967291864044902860, -0.967279179534788150, -0.967266492606475790, -0.967253803259997210, -0.967241111495384050, -0.967228417312668180, -0.967215720711881220, +-0.967203021693054940, -0.967190320256221200, -0.967177616401411640, -0.967164910128657680, -0.967152201437991850, -0.967139490329445460, -0.967126776803050260, -0.967114060858838220, +-0.967101342496840990, -0.967088621717090090, -0.967075898519617950, -0.967063172904456090, -0.967050444871636270, -0.967037714421190350, -0.967024981553150200, -0.967012246267547450, +-0.966999508564414190, -0.966986768443782170, -0.966974025905683150, -0.966961280950148880, -0.966948533577211670, -0.966935783786903040, -0.966923031579255080, -0.966910276954299430, +-0.966897519912067850, -0.966884760452592750, -0.966871998575905780, -0.966859234282038790, -0.966846467571023660, -0.966833698442892460, -0.966820926897676960, -0.966808152935409120, +-0.966795376556120910, -0.966782597759844320, -0.966769816546610870, -0.966757032916453210, -0.966744246869402970, -0.966731458405492130, -0.966718667524752550, -0.966705874227216430, +-0.966693078512915300, -0.966680280381881700, -0.966667479834147470, -0.966654676869744490, -0.966641871488704840, -0.966629063691060500, -0.966616253476843430, -0.966603440846085850, +-0.966590625798819600, -0.966577808335076560, -0.966564988454889250, -0.966552166158289540, -0.966539341445309290, -0.966526514315980690, -0.966513684770335950, -0.966500852808406590, +-0.966488018430225470, -0.966475181635824240, -0.966462342425234990, -0.966449500798490010, -0.966436656755621180, -0.966423810296660800, -0.966410961421640850, -0.966398110130593510, +-0.966385256423550660, -0.966372400300544830, -0.966359541761608100, -0.966346680806772440, -0.966333817436070050, -0.966320951649533240, -0.966308083447193770, -0.966295212829084260, +-0.966282339795236810, -0.966269464345683500, -0.966256586480456430, -0.966243706199587990, -0.966230823503110290, -0.966217938391055520, -0.966205050863455870, -0.966192160920343550, +-0.966179268561750740, -0.966166373787709860, -0.966153476598253120, -0.966140576993412600, -0.966127674973220720, -0.966114770537709440, -0.966101863686911420, -0.966088954420858740, +-0.966076042739583700, -0.966063128643118500, -0.966050212131495560, -0.966037293204746960, -0.966024371862905240, -0.966011448106002590, -0.965998521934071320, -0.965985593347143400, +-0.965972662345251810, -0.965959728928428630, -0.965946793096706060, -0.965933854850116510, -0.965920914188692080, -0.965907971112465620, -0.965895025621469230, -0.965882077715735310, +-0.965869127395296180, -0.965856174660184140, -0.965843219510431730, -0.965830261946071360, -0.965817301967135220, -0.965804339573655860, -0.965791374765665460, -0.965778407543196770, +-0.965765437906282110, -0.965752465854953890, -0.965739491389244420, -0.965726514509186230, -0.965713535214811620, -0.965700553506153360, -0.965687569383243740, -0.965674582846115070, +-0.965661593894800110, -0.965648602529331050, -0.965635608749740530, -0.965622612556060970, -0.965609613948324900, -0.965596612926564510, -0.965583609490812900, -0.965570603641102250, +-0.965557595377465110, -0.965544584699933870, -0.965531571608541310, -0.965518556103319490, -0.965505538184301510, -0.965492517851519790, -0.965479495105006640, -0.965466469944794900, +-0.965453442370916900, -0.965440412383405280, -0.965427379982292670, -0.965414345167611600, -0.965401307939394600, -0.965388268297674210, -0.965375226242483290, -0.965362181773854360, +-0.965349134891819950, -0.965336085596412710, -0.965323033887665050, -0.965309979765609950, -0.965296923230280050, -0.965283864281707760, -0.965270802919925730, -0.965257739144966820, +-0.965244672956863450, -0.965231604355648480, -0.965218533341354550, -0.965205459914014190, -0.965192384073659930, -0.965179305820325070, -0.965166225154041820, -0.965153142074843040, +-0.965140056582761470, -0.965126968677829430, -0.965113878360080220, -0.965100785629546380, -0.965087690486260530, -0.965074592930255440, -0.965061492961563960, -0.965048390580218630, +-0.965035285786252420, -0.965022178579697850, -0.965009068960588020, -0.964995956928955120, -0.964982842484832680, -0.964969725628253120, -0.964956606359249180, -0.964943484677853740, +-0.964930360584099640, -0.964917234078019440, -0.964904105159646310, -0.964890973829012900, -0.964877840086152070, -0.964864703931096690, -0.964851565363879500, -0.964838424384533490, +-0.964825280993091280, -0.964812135189585970, -0.964798986974050090, -0.964785836346516930, -0.964772683307019150, -0.964759527855589720, -0.964746369992261490, -0.964733209717067220, +-0.964720047030039770, -0.964706881931212460, -0.964693714420617910, -0.964680544498289110, -0.964667372164258910, -0.964654197418560290, -0.964641020261226220, -0.964627840692289570, +-0.964614658711783310, -0.964601474319740190, -0.964588287516193630, -0.964575098301176270, -0.964561906674721190, -0.964548712636861370, -0.964535516187629780, -0.964522317327059180, +-0.964509116055182970, -0.964495912372034030, -0.964482706277645320, -0.964469497772049820, -0.964456286855280510, -0.964443073527370580, -0.964429857788352880, -0.964416639638260630, +-0.964403419077126680, -0.964390196104984000, -0.964376970721866010, -0.964363742927805690, -0.964350512722836010, -0.964337280106989940, -0.964324045080300560, -0.964310807642801190, +-0.964297567794524910, -0.964284325535504580, -0.964271080865773510, -0.964257833785364780, -0.964244584294311480, -0.964231332392646580, -0.964218078080403500, -0.964204821357615090, +-0.964191562224314570, -0.964178300680535230, -0.964165036726310150, -0.964151770361672540, -0.964138501586655480, -0.964125230401292170, -0.964111956805615570, -0.964098680799659210, +-0.964085402383456300, -0.964072121557039810, -0.964058838320442920, -0.964045552673699070, -0.964032264616841330, -0.964018974149902900, -0.964005681272916970, -0.963992385985916740, +-0.963979088288935640, -0.963965788182006960, -0.963952485665163670, -0.963939180738439320, -0.963925873401866860, -0.963912563655479620, -0.963899251499311100, -0.963885936933394530, +-0.963872619957763080, -0.963859300572450060, -0.963845978777488790, -0.963832654572912560, -0.963819327958754800, -0.963805998935048590, -0.963792667501827240, -0.963779333659124380, +-0.963765997406973220, -0.963752658745407050, -0.963739317674459310, -0.963725974194163280, -0.963712628304551950, -0.963699280005659410, -0.963685929297518620, -0.963672576180163000, +-0.963659220653625970, -0.963645862717940840, -0.963632502373141020, -0.963619139619260050, -0.963605774456331220, -0.963592406884387850, -0.963579036903463360, -0.963565664513591490, +-0.963552289714805330, -0.963538912507138520, -0.963525532890624480, -0.963512150865296400, -0.963498766431188040, -0.963485379588332910, -0.963471990336764230, -0.963458598676515620, +-0.963445204607620510, -0.963431808130112420, -0.963418409244024780, -0.963405007949391100, -0.963391604246244930, -0.963378198134619450, -0.963364789614548740, -0.963351378686066130, +-0.963337965349204910, -0.963324549603998940, -0.963311131450481530, -0.963297710888686100, -0.963284287918646510, -0.963270862540396290, -0.963257434753968970, -0.963244004559397960, +-0.963230571956717020, -0.963217136945959560, -0.963203699527159340, -0.963190259700349880, -0.963176817465564490, -0.963163372822837260, -0.963149925772201710, -0.963136476313691260, +-0.963123024447339660, -0.963109570173180440, -0.963096113491247020, -0.963082654401573700, -0.963069192904193680, -0.963055728999140600, -0.963042262686448320, -0.963028793966150260, +-0.963015322838280290, -0.963001849302872030, -0.962988373359959130, -0.962974895009575120, -0.962961414251753970, -0.962947931086529430, -0.962934445513934920, -0.962920957534004420, +-0.962907467146771450, -0.962893974352269640, -0.962880479150533100, -0.962866981541595330, -0.962853481525490110, -0.962839979102251280, -0.962826474271912370, -0.962812967034507360, +-0.962799457390069890, -0.962785945338633820, -0.962772430880232900, -0.962758914014900660, -0.962745394742671290, -0.962731873063578550, -0.962718348977656070, -0.962704822484937720, +-0.962691293585457020, -0.962677762279248390, -0.962664228566345370, -0.962650692446781700, -0.962637153920591350, -0.962623612987808070, -0.962610069648465850, -0.962596523902598420, +-0.962582975750239660, -0.962569425191423410, -0.962555872226183440, -0.962542316854554050, -0.962528759076568760, -0.962515198892261670, -0.962501636301666630, -0.962488071304817390, +-0.962474503901747710, -0.962460934092492120, -0.962447361877084130, -0.962433787255557730, -0.962420210227946880, -0.962406630794285570, -0.962393048954607530, -0.962379464708946970, +-0.962365878057337750, -0.962352288999813620, -0.962338697536408880, -0.962325103667157510, -0.962311507392093370, -0.962297908711250430, -0.962284307624662770, -0.962270704132364040, +-0.962257098234388870, -0.962243489930770910, -0.962229879221544240, -0.962216266106742820, -0.962202650586400750, -0.962189032660552000, -0.962175412329230760, -0.962161789592471010, +-0.962148164450306490, -0.962134536902771840, -0.962120906949900820, -0.962107274591727510, -0.962093639828286110, -0.962080002659610470, -0.962066363085734680, -0.962052721106693150, +-0.962039076722519870, -0.962025429933248910, -0.962011780738914360, -0.961998129139550410, -0.961984475135191030, -0.961970818725870540, -0.961957159911623010, -0.961943498692482520, +-0.961929835068483060, -0.961916169039659260, -0.961902500606045100, -0.961888829767674650, -0.961875156524582110, -0.961861480876801460, -0.961847802824367330, -0.961834122367313690, +-0.961820439505674750, -0.961806754239484700, -0.961793066568777720, -0.961779376493588130, -0.961765684013950130, -0.961751989129897900, -0.961738291841465640, -0.961724592148687440, +-0.961710890051598040, -0.961697185550231430, -0.961683478644621780, -0.961669769334803530, -0.961656057620810740, -0.961642343502677630, -0.961628626980438940, -0.961614908054128640, +-0.961601186723781030, -0.961587462989430540, -0.961573736851111360, -0.961560008308857790, -0.961546277362704260, -0.961532544012684950, -0.961518808258834180, -0.961505070101186580, +-0.961491329539776230, -0.961477586574637550, -0.961463841205804970, -0.961450093433312780, -0.961436343257195180, -0.961422590677486920, -0.961408835694222090, -0.961395078307435310, +-0.961381318517160690, -0.961367556323432850, -0.961353791726286210, -0.961340024725754970, -0.961326255321873660, -0.961312483514676570, -0.961298709304198360, -0.961284932690473550, +-0.961271153673536330, -0.961257372253421230, -0.961243588430162670, -0.961229802203794950, -0.961216013574352930, -0.961202222541870820, -0.961188429106383250, -0.961174633267924630, +-0.961160835026529380, -0.961147034382232040, -0.961133231335067120, -0.961119425885069050, -0.961105618032272570, -0.961091807776711660, -0.961077995118421510, -0.961064180057436430, +-0.961050362593790840, -0.961036542727519370, -0.961022720458656330, -0.961008895787236690, -0.960995068713294760, -0.960981239236865290, -0.960967407357982580, -0.960953573076681500, +-0.960939736392996350, -0.960925897306961980, -0.960912055818612830, -0.960898211927983410, -0.960884365635108370, -0.960870516940022680, -0.960856665842760640, -0.960842812343356890, +-0.960828956441846180, -0.960815098138263050, -0.960801237432641900, -0.960787374325017930, -0.960773508815425560, -0.960759640903899310, -0.960745770590474060, -0.960731897875184320, +-0.960718022758064950, -0.960704145239150380, -0.960690265318475570, -0.960676382996074720, -0.960662498271983250, -0.960648611146235560, -0.960634721618866320, -0.960620829689910250, +-0.960606935359402110, -0.960593038627376330, -0.960579139493868310, -0.960565237958912350, -0.960551334022543330, -0.960537427684796000, -0.960523518945705090, -0.960509607805305370, +-0.960495694263631680, -0.960481778320718680, -0.960467859976601000, -0.960453939231313950, -0.960440016084892050, -0.960426090537370160, -0.960412162588782920, -0.960398232239165320, +-0.960384299488551970, -0.960370364336978090, -0.960356426784478190, -0.960342486831087360, -0.960328544476840240, -0.960314599721771800, -0.960300652565916790, -0.960286703009310180, +-0.960272751051986840, -0.960258796693981620, -0.960244839935329160, -0.960230880776064890, -0.960216919216223320, -0.960202955255839540, -0.960188988894948300, -0.960175020133584360, +-0.960161048971783230, -0.960147075409579330, -0.960133099447007870, -0.960119121084103580, -0.960105140320901440, -0.960091157157436540, -0.960077171593743730, -0.960063183629857870, +-0.960049193265814170, -0.960035200501647260, -0.960021205337392550, -0.960007207773084790, -0.959993207808759070, -0.959979205444450370, -0.959965200680193640, -0.959951193516023650, +-0.959937183951975800, -0.959923171988085190, -0.959909157624386560, -0.959895140860914990, -0.959881121697705560, -0.959867100134793370, -0.959853076172213490, -0.959839049810000900, +-0.959825021048190340, -0.959810989886817570, -0.959796956325917330, -0.959782920365524590, -0.959768882005674670, -0.959754841246402530, -0.959740798087742930, -0.959726752529731720, +-0.959712704572403540, -0.959698654215793590, -0.959684601459937060, -0.959670546304869030, -0.959656488750624590, -0.959642428797238930, -0.959628366444747250, -0.959614301693184400, +-0.959600234542586030, -0.959586164992987100, -0.959572093044422700, -0.959558018696928140, -0.959543941950538490, -0.959529862805288740, -0.959515781261214510, -0.959501697318350890, +-0.959487610976733070, -0.959473522236396150, -0.959459431097375530, -0.959445337559706180, -0.959431241623423640, -0.959417143288562870, -0.959403042555159290, -0.959388939423247880, +-0.959374833892864380, -0.959360725964043760, -0.959346615636821330, -0.959332502911232400, -0.959318387787311930, -0.959304270265095680, -0.959290150344618840, -0.959276028025916610, +-0.959261903309024280, -0.959247776193977280, -0.959233646680810790, -0.959219514769560130, -0.959205380460260710, -0.959191243752947840, -0.959177104647656600, -0.959162963144422950, +-0.959148819243281770, -0.959134672944268570, -0.959120524247418670, -0.959106373152767590, -0.959092219660350190, -0.959078063770202550, -0.959063905482359760, -0.959049744796857120, +-0.959035581713730160, -0.959021416233014290, -0.959007248354744820, -0.958993078078957280, -0.958978905405687090, -0.958964730334969320, -0.958950552866839940, -0.958936373001334270, +-0.958922190738487610, -0.958908006078335480, -0.958893819020913310, -0.958879629566256390, -0.958865437714400580, -0.958851243465381310, -0.958837046819233760, -0.958822847775993690, +-0.958808646335696510, -0.958794442498377640, -0.958780236264072720, -0.958766027632817260, -0.958751816604646480, -0.958737603179596330, -0.958723387357702130, -0.958709169138999620, +-0.958694948523524100, -0.958680725511311230, -0.958666500102396180, -0.958652272296815270, -0.958638042094603680, -0.958623809495796840, -0.958609574500430610, -0.958595337108540390, +-0.958581097320161950, -0.958566855135330580, -0.958552610554082140, -0.958538363576452280, -0.958524114202476190, -0.958509862432190050, -0.958495608265629180, -0.958481351702829440, +-0.958467092743826240, -0.958452831388655000, -0.958438567637352020, -0.958424301489952610, -0.958410032946492410, -0.958395762007007160, -0.958381488671532500, -0.958367212940104190, +-0.958352934812757740, -0.958338654289528910, -0.958324371370453560, -0.958310086055567000, -0.958295798344905530, -0.958281508238504440, -0.958267215736399610, -0.958252920838626790, +-0.958238623545221710, -0.958224323856219810, -0.958210021771657260, -0.958195717291569720, -0.958181410415992810, -0.958167101144962510, -0.958152789478514340, -0.958138475416684290, +-0.958124158959507980, -0.958109840107021270, -0.958095518859259700, -0.958081195216259670, -0.958066869178056610, -0.958052540744686380, -0.958038209916184820, -0.958023876692587710, +-0.958009541073930550, -0.957995203060249880, -0.957980862651581220, -0.957966519847960440, -0.957952174649423280, -0.957937827056005720, -0.957923477067743610, -0.957909124684672820, +-0.957894769906829200, -0.957880412734248400, -0.957866053166966820, -0.957851691205020120, -0.957837326848444140, -0.957822960097274860, -0.957808590951548240, -0.957794219411299830, +-0.957779845476566140, -0.957765469147382810, -0.957751090423785920, -0.957736709305811230, -0.957722325793494700, -0.957707939886872420, -0.957693551585980350, -0.957679160890854250, +-0.957664767801530430, -0.957650372318044290, -0.957635974440432580, -0.957621574168730840, -0.957607171502975250, -0.957592766443201680, -0.957578358989445880, -0.957563949141744590, +-0.957549536900133340, -0.957535122264648210, -0.957520705235325290, -0.957506285812200650, -0.957491863995310280, -0.957477439784690240, -0.957463013180376630, -0.957448584182405420, +-0.957434152790812560, -0.957419719005634610, -0.957405282826907290, -0.957390844254666810, -0.957376403288949130, -0.957361959929790340, -0.957347514177226740, -0.957333066031294420, +-0.957318615492029460, -0.957304162559468040, -0.957289707233646040, -0.957275249514599860, -0.957260789402365590, -0.957246326896979300, -0.957231861998477210, -0.957217394706895150, +-0.957202925022270000, -0.957188452944637390, -0.957173978474033740, -0.957159501610495120, -0.957145022354057740, -0.957130540704757560, -0.957116056662631220, -0.957101570227714800, +-0.957087081400044500, -0.957072590179656400, -0.957058096566586910, -0.957043600560872120, -0.957029102162548330, -0.957014601371651840, -0.957000098188218520, -0.956985592612285220, +-0.956971084643888030, -0.956956574283063020, -0.956942061529846620, -0.956927546384275020, -0.956913028846384410, -0.956898508916211420, -0.956883986593792150, -0.956869461879162890, +-0.956854934772360060, -0.956840405273419850, -0.956825873382378570, -0.956811339099272630, -0.956796802424138340, -0.956782263357011890, -0.956767721897929910, -0.956753178046928720, +-0.956738631804044500, -0.956724083169313790, -0.956709532142772770, -0.956694978724457750, -0.956680422914405470, -0.956665864712652250, -0.956651304119234270, -0.956636741134188060, +-0.956622175757549930, -0.956607607989356400, -0.956593037829643890, -0.956578465278448810, -0.956563890335807580, -0.956549313001756270, -0.956534733276331980, -0.956520151159570790, +-0.956505566651509320, -0.956490979752183890, -0.956476390461630800, -0.956461798779886910, -0.956447204706988630, -0.956432608242972270, -0.956418009387874360, -0.956403408141731530, +-0.956388804504580080, -0.956374198476456660, -0.956359590057397790, -0.956344979247439890, -0.956330366046619250, -0.956315750454972970, -0.956301132472537340, -0.956286512099348900, +-0.956271889335444160, -0.956257264180859660, -0.956242636635631800, -0.956228006699797570, -0.956213374373393380, -0.956198739656455740, -0.956184102549021200, -0.956169463051126380, +-0.956154821162807920, -0.956140176884102470, -0.956125530215046540, -0.956110881155676550, -0.956096229706029590, -0.956081575866142060, -0.956066919636050620, -0.956052261015791880, +-0.956037600005402390, -0.956022936604918770, -0.956008270814378000, -0.955993602633816610, -0.955978932063271110, -0.955964259102778380, -0.955949583752374930, -0.955934906012097630, +-0.955920225881982890, -0.955905543362067790, -0.955890858452388410, -0.955876171152982180, -0.955861481463885610, -0.955846789385135230, -0.955832094916767900, -0.955817398058820380, +-0.955802698811329070, -0.955787997174331270, -0.955773293147863520, -0.955758586731962460, -0.955743877926665040, -0.955729166732007810, -0.955714453148027720, -0.955699737174761530, +-0.955685018812245990, -0.955670298060517840, -0.955655574919613730, -0.955640849389570950, -0.955626121470426030, -0.955611391162215830, -0.955596658464977100, -0.955581923378746480, +-0.955567185903561380, -0.955552446039458210, -0.955537703786474070, -0.955522959144645580, -0.955508212114009710, -0.955493462694603220, -0.955478710886463190, -0.955463956689626360, +-0.955449200104129590, -0.955434441130009640, -0.955419679767303800, -0.955404916016048710, -0.955390149876281350, -0.955375381348038680, -0.955360610431357560, -0.955345837126274630, +-0.955331061432827310, -0.955316283351052340, -0.955301502880986700, -0.955286720022667350, -0.955271934776131150, -0.955257147141415190, -0.955242357118556210, -0.955227564707591400, +-0.955212769908557520, -0.955197972721491870, -0.955183173146431310, -0.955168371183412800, -0.955153566832473430, -0.955138760093650060, -0.955123950966979550, -0.955109139452499530, +-0.955094325550246540, -0.955079509260257750, -0.955064690582570260, -0.955049869517220930, -0.955035046064247050, -0.955020220223685490, -0.955005391995573330, -0.954990561379947530, +-0.954975728376845520, -0.954960892986304270, -0.954946055208360620, -0.954931215043052010, -0.954916372490415280, -0.954901527550487410, -0.954886680223305920, -0.954871830508907780, +-0.954856978407329970, -0.954842123918609790, -0.954827267042784310, -0.954812407779890630, -0.954797546129966030, -0.954782682093047400, -0.954767815669172240, -0.954752946858377080, +-0.954738075660700010, -0.954723202076177670, -0.954708326104847350, -0.954693447746746140, -0.954678567001911120, -0.954663683870379920, -0.954648798352189520, -0.954633910447377110, +-0.954619020155979880, -0.954604127478035140, -0.954589232413580070, -0.954574334962651980, -0.954559435125288070, -0.954544532901525520, -0.954529628291401310, -0.954514721294953410, +-0.954499811912218550, -0.954484900143234280, -0.954469985988037780, -0.954455069446666250, -0.954440150519156870, -0.954425229205547290, -0.954410305505874690, -0.954395379420176270, +-0.954380450948489440, -0.954365520090851520, -0.954350586847299790, -0.954335651217871560, -0.954320713202604140, -0.954305772801534720, -0.954290830014701160, -0.954275884842140540, +-0.954260937283890160, -0.954245987339987560, -0.954231035010469800, -0.954216080295374300, -0.954201123194738820, -0.954186163708600650, -0.954171201836997000, -0.954156237579965260, +-0.954141270937542970, -0.954126301909767550, -0.954111330496676400, -0.954096356698306840, -0.954081380514696150, -0.954066401945882330, -0.954051420991902430, -0.954036437652794000, +-0.954021451928594440, -0.954006463819341400, -0.953991473325071840, -0.953976480445823840, -0.953961485181634590, -0.953946487532541740, -0.953931487498582590, -0.953916485079794760, +-0.953901480276215690, -0.953886473087882990, -0.953871463514833980, -0.953856451557106410, -0.953841437214737460, -0.953826420487765110, -0.953811401376226780, -0.953796379880159970, +-0.953781355999602120, -0.953766329734590630, -0.953751301085163590, -0.953736270051358300, -0.953721236633212400, -0.953706200830763410, -0.953691162644048850, -0.953676122073106370, +-0.953661079117973600, -0.953646033778688170, -0.953630986055287620, -0.953615935947809360, -0.953600883456291460, -0.953585828580771460, -0.953570771321286870, -0.953555711677875340, +-0.953540649650574500, -0.953525585239421770, -0.953510518444455340, -0.953495449265712610, -0.953480377703231240, -0.953465303757048970, -0.953450227427203530, -0.953435148713732360, +-0.953420067616673420, -0.953404984136064230, -0.953389898271942430, -0.953374810024346100, -0.953359719393312650, -0.953344626378880070, -0.953329530981085750, -0.953314433199967670, +-0.953299333035563360, -0.953284230487910780, -0.953269125557047790, -0.953254018243011920, -0.953238908545841030, -0.953223796465572870, -0.953208682002245180, -0.953193565155895820, +-0.953178445926562530, -0.953163324314282860, -0.953148200319095080, -0.953133073941036860, -0.953117945180146030, -0.953102814036460240, -0.953087680510017470, -0.953072544600855220, +-0.953057406309011810, -0.953042265634524990, -0.953027122577432380, -0.953011977137772080, -0.952996829315581830, -0.952981679110899370, -0.952966526523762900, -0.952951371554210060, +-0.952936214202278700, -0.952921054468006570, -0.952905892351432190, -0.952890727852592880, -0.952875560971526920, -0.952860391708271970, -0.952845220062865870, -0.952830046035346930, +-0.952814869625752790, -0.952799690834121530, -0.952784509660491110, -0.952769326104899390, -0.952754140167384360, -0.952738951847983960, -0.952723761146736180, -0.952708568063678980, +-0.952693372598850120, -0.952678174752288110, -0.952662974524030590, -0.952647771914115650, -0.952632566922581360, -0.952617359549465580, -0.952602149794806170, -0.952586937658641660, +-0.952571723141009800, -0.952556506241948650, -0.952541286961496200, -0.952526065299690530, -0.952510841256569710, -0.952495614832171710, -0.952480386026534840, -0.952465154839696630, +-0.952449921271695810, -0.952434685322570140, -0.952419446992357810, -0.952404206281096900, -0.952388963188825490, -0.952373717715581320, -0.952358469861403160, -0.952343219626328840, +-0.952327967010396460, -0.952312712013644200, -0.952297454636110040, -0.952282194877832390, -0.952266932738849100, -0.952251668219198600, -0.952236401318918620, -0.952221132038047920, +-0.952205860376624360, -0.952190586334686230, -0.952175309912271620, -0.952160031109418600, -0.952144749926165380, -0.952129466362550470, -0.952114180418611960, -0.952098892094387920, +-0.952083601389916770, -0.952068308305236480, -0.952053012840385460, -0.952037714995402020, -0.952022414770324230, -0.952007112165190290, -0.951991807180038400, -0.951976499814907280, +-0.951961190069834930, -0.951945877944859520, -0.951930563440019470, -0.951915246555352650, -0.951899927290898120, -0.951884605646693750, -0.951869281622777730, -0.951853955219188700, +-0.951838626435964620, -0.951823295273144020, -0.951807961730765210, -0.951792625808866480, -0.951777287507486250, -0.951761946826662490, -0.951746603766434050, -0.951731258326839250, +-0.951715910507916150, -0.951700560309703400, -0.951685207732239190, -0.951669852775561710, -0.951654495439709810, -0.951639135724721810, -0.951623773630635880, -0.951608409157490450, +-0.951593042305324150, -0.951577673074175070, -0.951562301464081940, -0.951546927475083070, -0.951531551107216540, -0.951516172360521440, -0.951500791235035840, -0.951485407730798370, +-0.951470021847847240, -0.951454633586221180, -0.951439242945958160, -0.951423849927097390, -0.951408454529677040, -0.951393056753735420, -0.951377656599311280, -0.951362254066442930, +-0.951346849155168980, -0.951331441865527870, -0.951316032197558230, -0.951300620151298130, -0.951285205726786880, -0.951269788924062440, -0.951254369743163690, -0.951238948184128910, +-0.951223524246996850, -0.951208097931805610, -0.951192669238594470, -0.951177238167401630, -0.951161804718265720, -0.951146368891225280, -0.951130930686318930, -0.951115490103585310, +-0.951100047143062840, -0.951084601804790370, -0.951069154088806320, -0.951053703995149100, -0.951038251523857900, -0.951022796674971140, -0.951007339448527330, -0.950991879844565240, +-0.950976417863123040, -0.950960953504240260, -0.950945486767954980, -0.950930017654305960, -0.950914546163331930, -0.950899072295071530, -0.950883596049563410, -0.950868117426846400, +-0.950852636426959050, -0.950837153049940100, -0.950821667295827950, -0.950806179164662040, -0.950790688656480530, -0.950775195771322410, -0.950759700509226200, -0.950744202870230870, +-0.950728702854374610, -0.950713200461696940, -0.950697695692236280, -0.950682188546031370, -0.950666679023121080, -0.950651167123543920, -0.950635652847338970, -0.950620136194544880, +-0.950604617165200390, -0.950589095759344140, -0.950573571977015310, -0.950558045818252650, -0.950542517283094910, -0.950526986371580840, -0.950511453083749290, -0.950495917419638790, +-0.950480379379288860, -0.950464838962737920, -0.950449296170024830, -0.950433751001188650, -0.950418203456268040, -0.950402653535301840, -0.950387101238329040, -0.950371546565388580, +-0.950355989516518900, -0.950340430091759500, -0.950324868291149040, -0.950309304114726470, -0.950293737562530550, -0.950278168634600350, -0.950262597330974400, -0.950247023651692340, +-0.950231447596792680, -0.950215869166314290, -0.950200288360296350, -0.950184705178777620, -0.950169119621797180, -0.950153531689393870, -0.950137941381606790, -0.950122348698474890, +-0.950106753640036830, -0.950091156206332110, -0.950075556397399490, -0.950059954213278050, -0.950044349654006640, -0.950028742719624120, -0.950013133410170020, -0.949997521725683190, +-0.949981907666202390, -0.949966291231766900, -0.949950672422415710, -0.949935051238187780, -0.949919427679122300, -0.949903801745258130, -0.949888173436634560, -0.949872542753290250, +-0.949856909695264820, -0.949841274262597120, -0.949825636455326360, -0.949809996273491390, -0.949794353717131390, -0.949778708786285340, -0.949763061480992770, -0.949747411801292520, +-0.949731759747223680, -0.949716105318825550, -0.949700448516137110, -0.949684789339197530, -0.949669127788046020, -0.949653463862721650, -0.949637797563263390, -0.949622128889710870, +-0.949606457842103070, -0.949590784420479170, -0.949575108624878150, -0.949559430455339530, -0.949543749911901940, -0.949528066994605350, -0.949512381703488510, -0.949496694038590720, +-0.949481003999951170, -0.949465311587609160, -0.949449616801603890, -0.949433919641974540, -0.949418220108760420, -0.949402518202000500, -0.949386813921734520, -0.949371107268001560, +-0.949355398240840700, -0.949339686840291460, -0.949323973066392930, -0.949308256919184300, -0.949292538398705200, -0.949276817504994820, -0.949261094238092350, -0.949245368598037210, +-0.949229640584868580, -0.949213910198625890, -0.949198177439348310, -0.949182442307075380, -0.949166704801846390, -0.949150964923700320, -0.949135222672677140, -0.949119478048815910, +-0.949103731052155950, -0.949087981682736670, -0.949072229940597150, -0.949056475825777350, -0.949040719338316240, -0.949024960478253470, -0.949009199245628320, -0.948993435640480110, +-0.948977669662848360, -0.948961901312772360, -0.948946130590291650, -0.948930357495445630, -0.948914582028273390, -0.948898804188815000, -0.948883023977109660, -0.948867241393196670, +-0.948851456437115550, -0.948835669108905600, -0.948819879408606790, -0.948804087336258210, -0.948788292891899370, -0.948772496075569900, -0.948756696887309130, -0.948740895327156660, +-0.948725091395151930, -0.948709285091334450, -0.948693476415743750, -0.948677665368419130, -0.948661851949400560, -0.948646036158727450, -0.948630217996439100, -0.948614397462575360, +-0.948598574557175560, -0.948582749280279080, -0.948566921631925910, -0.948551091612155560, -0.948535259221007450, -0.948519424458521110, -0.948503587324736270, -0.948487747819692470, +-0.948471905943429340, -0.948456061695986400, -0.948440215077403060, -0.948424366087719410, -0.948408514726974850, -0.948392660995209020, -0.948376804892461570, -0.948360946418772110, +-0.948345085574179960, -0.948329222358725300, -0.948313356772447660, -0.948297488815386670, -0.948281618487581970, -0.948265745789073190, -0.948249870719899970, -0.948233993280102160, +-0.948218113469719400, -0.948202231288791330, -0.948186346737357360, -0.948170459815457780, -0.948154570523132120, -0.948138678860420030, -0.948122784827361230, -0.948106888423995150, +-0.948090989650362090, -0.948075088506501680, -0.948059184992453450, -0.948043279108257360, -0.948027370853953060, -0.948011460229580270, -0.947995547235178760, -0.947979631870788490, +-0.947963714136449200, -0.947947794032200200, -0.947931871558082120, -0.947915946714134260, -0.947900019500396600, -0.947884089916908870, -0.947868157963710600, -0.947852223640842210, +-0.947836286948343320, -0.947820347886253690, -0.947804406454613280, -0.947788462653461730, -0.947772516482839110, -0.947756567942785070, -0.947740617033339780, -0.947724663754542780, +-0.947708708106433930, -0.947692750089053630, -0.947676789702441400, -0.947660826946637220, -0.947644861821680950, -0.947628894327612550, -0.947612924464471540, -0.947596952232298670, +-0.947580977631133250, -0.947565000661015460, -0.947549021321985150, -0.947533039614082420, -0.947517055537346890, -0.947501069091818860, -0.947485080277538080, -0.947469089094544410, +-0.947453095542878150, -0.947437099622579270, -0.947421101333687620, -0.947405100676243170, -0.947389097650286120, -0.947373092255855860, -0.947357084492993270, -0.947341074361737870, +-0.947325061862129840, -0.947309046994209150, -0.947293029758015880, -0.947277010153590000, -0.947260988180971600, -0.947244963840200740, -0.947228937131317170, -0.947212908054361540, +-0.947196876609373680, -0.947180842796393590, -0.947164806615461320, -0.947148768066617190, -0.947132727149900710, -0.947116683865352860, -0.947100638213013160, -0.947084590192921900, +-0.947068539805119180, -0.947052487049645060, -0.947036431926539860, -0.947020374435843420, -0.947004314577596150, -0.946988252351838030, -0.946972187758609030, -0.946956120797949890, +-0.946940051469900350, -0.946923979774500710, -0.946907905711791180, -0.946891829281811590, -0.946875750484602710, -0.946859669320204380, -0.946843585788656910, -0.946827499890000480, +-0.946811411624275400, -0.946795320991521640, -0.946779227991779710, -0.946763132625089600, -0.946747034891491700, -0.946730934791025990, -0.946714832323733100, -0.946698727489653220, +-0.946682620288826550, -0.946666510721293260, -0.946650398787093670, -0.946634284486267850, -0.946618167818856660, -0.946602048784899950, -0.946585927384438140, -0.946569803617511530, +-0.946553677484160420, -0.946537548984425100, -0.946521418118345890, -0.946505284885963190, -0.946489149287316980, -0.946473011322448100, -0.946456870991396860, -0.946440728294203340, +-0.946424583230907950, -0.946408435801551210, -0.946392286006172980, -0.946376133844814340, -0.946359979317515480, -0.946343822424316580, -0.946327663165258180, -0.946311501540380570, +-0.946295337549724170, -0.946279171193329490, -0.946263002471236850, -0.946246831383486420, -0.946230657930119290, -0.946214482111175430, -0.946198303926695350, -0.946182123376719590, +-0.946165940461288430, -0.946149755180442200, -0.946133567534221840, -0.946117377522667560, -0.946101185145819870, -0.946084990403719180, -0.946068793296406030, -0.946052593823920820, +-0.946036391986304180, -0.946020187783596640, -0.946003981215838510, -0.945987772283070290, -0.945971560985332750, -0.945955347322666400, -0.945939131295111760, -0.945922912902709130, +-0.945906692145499050, -0.945890469023522470, -0.945874243536819700, -0.945858015685431370, -0.945841785469398010, -0.945825552888760130, -0.945809317943558490, -0.945793080633833380, +-0.945776840959625660, -0.945760598920975860, -0.945744354517924270, -0.945728107750512080, -0.945711858618779600, -0.945695607122767460, -0.945679353262516290, -0.945663097038066840, +-0.945646838449459180, -0.945630577496734850, -0.945614314179934020, -0.945598048499097450, -0.945581780454265770, -0.945565510045479620, -0.945549237272779730, -0.945532962136206630, +-0.945516684635801190, -0.945500404771603800, -0.945484122543655660, -0.945467837951997180, -0.945451550996669110, -0.945435261677712190, -0.945418969995167170, -0.945402675949074340, +-0.945386379539475130, -0.945370080766409940, -0.945353779629919620, -0.945337476130044820, -0.945321170266826380, -0.945304862040304950, -0.945288551450521370, -0.945272238497516400, +-0.945255923181330560, -0.945239605502005250, -0.945223285459580900, -0.945206963054098240, -0.945190638285598350, -0.945174311154121760, -0.945157981659709100, -0.945141649802401780, +-0.945125315582240330, -0.945108978999265600, -0.945092640053518450, -0.945076298745039730, -0.945059955073870190, -0.945043609040050800, -0.945027260643622300, -0.945010909884625770, +-0.944994556763101620, -0.944978201279091380, -0.944961843432635670, -0.944945483223775360, -0.944929120652551300, -0.944912755719004130, -0.944896388423175360, -0.944880018765105630, +-0.944863646744835920, -0.944847272362406950, -0.944830895617859930, -0.944814516511235600, -0.944798135042575040, -0.944781751211919100, -0.944765365019308860, -0.944748976464784840, +-0.944732585548388680, -0.944716192270161010, -0.944699796630142920, -0.944683398628375360, -0.944666998264899190, -0.944650595539755390, -0.944634190452985250, -0.944617783004629730, +-0.944601373194729700, -0.944584961023326340, -0.944568546490460400, -0.944552129596173300, -0.944535710340505760, -0.944519288723498880, -0.944502864745193630, -0.944486438405631400, +-0.944470009704853180, -0.944453578642899800, -0.944437145219812590, -0.944420709435632500, -0.944404271290400280, -0.944387830784157670, -0.944371387916945530, -0.944354942688804930, +-0.944338495099776960, -0.944322045149902810, -0.944305592839223440, -0.944289138167780150, -0.944272681135614020, -0.944256221742765910, -0.944239759989277450, -0.944223295875189720, +-0.944206829400543680, -0.944190360565380530, -0.944173889369741560, -0.944157415813667520, -0.944140939897200270, -0.944124461620380550, -0.944107980983249770, -0.944091497985849130, +-0.944075012628219580, -0.944058524910402650, -0.944042034832439310, -0.944025542394370860, -0.944009047596238600, -0.943992550438083500, -0.943976050919947180, -0.943959549041870850, +-0.943943044803895570, -0.943926538206062760, -0.943910029248413160, -0.943893517930988970, -0.943877004253830810, -0.943860488216980320, -0.943843969820478470, -0.943827449064366770, +-0.943810925948686430, -0.943794400473478730, -0.943777872638785100, -0.943761342444646710, -0.943744809891104650, -0.943728274978201000, -0.943711737705976610, -0.943695198074472770, +-0.943678656083731030, -0.943662111733792660, -0.943645565024698650, -0.943629015956491070, -0.943612464529210990, -0.943595910742899720, -0.943579354597598670, -0.943562796093349140, +-0.943546235230192760, -0.943529672008170730, -0.943513106427324550, -0.943496538487695210, -0.943479968189325000, -0.943463395532254670, -0.943446820516525950, -0.943430243142180270, +-0.943413663409258810, -0.943397081317802980, -0.943380496867854750, -0.943363910059455300, -0.943347320892646060, -0.943330729367468420, -0.943314135483964030, -0.943297539242174410, +-0.943280940642140740, -0.943264339683904880, -0.943247736367507810, -0.943231130692991690, -0.943214522660397740, -0.943197912269767570, -0.943181299521142490, -0.943164684414564250, +-0.943148066950073920, -0.943131447127713800, -0.943114824947525080, -0.943098200409549170, -0.943081573513827930, -0.943064944260402660, -0.943048312649314990, -0.943031678680606560, +-0.943015042354318990, -0.942998403670493810, -0.942981762629172330, -0.942965119230396720, -0.942948473474208290, -0.942931825360648680, -0.942915174889759510, -0.942898522061582090, +-0.942881866876158710, -0.942865209333530680, -0.942848549433739520, -0.942831887176827090, -0.942815222562834900, -0.942798555591804700, -0.942781886263778010, -0.942765214578796700, +-0.942748540536902270, -0.942731864138136260, -0.942715185382540950, -0.942698504270157560, -0.942681820801027910, -0.942665134975193770, -0.942648446792696770, -0.942631756253578310, +-0.942615063357880810, -0.942598368105645680, -0.942581670496914550, -0.942564970531729380, -0.942548268210131600, -0.942531563532163270, -0.942514856497866040, -0.942498147107281640, +-0.942481435360451590, -0.942464721257418200, -0.942448004798222990, -0.942431285982907820, -0.942414564811514420, -0.942397841284084660, -0.942381115400659940, -0.942364387161282790, +-0.942347656565994620, -0.942330923614837280, -0.942314188307852740, -0.942297450645082630, -0.942280710626568930, -0.942263968252353480, -0.942247223522478030, -0.942230476436984320, +-0.942213726995914660, -0.942196975199310670, -0.942180221047214330, -0.942163464539667260, -0.942146705676711660, -0.942129944458389050, -0.942113180884741830, -0.942096414955811530, +-0.942079646671640350, -0.942062876032270010, -0.942046103037742500, -0.942029327688099660, -0.942012549983383570, -0.941995769923636090, -0.941978987508899190, -0.941962202739214490, +-0.941945415614624640, -0.941928626135171140, -0.941911834300896200, -0.941895040111841660, -0.941878243568049170, -0.941861444669561340, -0.941844643416419940, -0.941827839808666910, +-0.941811033846344350, -0.941794225529494210, -0.941777414858158470, -0.941760601832379200, -0.941743786452198360, -0.941726968717658150, -0.941710148628800090, -0.941693326185667030, +-0.941676501388300720, -0.941659674236743130, -0.941642844731036320, -0.941626012871222380, -0.941609178657343170, -0.941592342089441310, -0.941575503167558560, -0.941558661891736980, +-0.941541818262018880, -0.941524972278446230, -0.941508123941060980, -0.941491273249905560, -0.941474420205022030, -0.941457564806452040, -0.941440707054238430, -0.941423846948423070, +-0.941406984489048140, -0.941390119676155710, -0.941373252509787980, -0.941356382989986810, -0.941339511116794920, -0.941322636890254420, -0.941305760310407250, -0.941288881377295610, +-0.941272000090961790, -0.941255116451447990, -0.941238230458796400, -0.941221342113049310, -0.941204451414248470, -0.941187558362436840, -0.941170662957656280, -0.941153765199949090, +-0.941136865089357570, -0.941119962625923790, -0.941103057809689840, -0.941086150640698450, -0.941069241118991820, -0.941052329244612020, -0.941035415017601350, -0.941018498438002230, +-0.941001579505856830, -0.940984658221207470, -0.940967734584096550, -0.940950808594566150, -0.940933880252658560, -0.940916949558416540, -0.940900016511882040, -0.940883081113097600, +-0.940866143362105390, -0.940849203258947610, -0.940832260803667110, -0.940815315996305860, -0.940798368836906370, -0.940781419325511070, -0.940764467462162140, -0.940747513246901980, +-0.940730556679773120, -0.940713597760817870, -0.940696636490078510, -0.940679672867597350, -0.940662706893417360, -0.940645738567580490, -0.940628767890129390, -0.940611794861106240, +-0.940594819480553680, -0.940577841748513780, -0.940560861665029610, -0.940543879230143150, -0.940526894443897140, -0.940509907306333770, -0.940492917817495780, -0.940475925977425350, +-0.940458931786165240, -0.940441935243757630, -0.940424936350245040, -0.940407935105670330, -0.940390931510075800, -0.940373925563503970, -0.940356917265997350, -0.940339906617598360, +-0.940322893618349310, -0.940305878268293370, -0.940288860567472740, -0.940271840515929940, -0.940254818113707480, -0.940237793360848010, -0.940220766257394040, -0.940203736803388200, +-0.940186704998873020, -0.940169670843890800, -0.940152634338484620, -0.940135595482696980, -0.940118554276570210, -0.940101510720147140, -0.940084464813470300, -0.940067416556581990, +-0.940050365949525400, -0.940033312992342940, -0.940016257685077130, -0.939999200027770710, -0.939982140020466320, -0.939965077663206580, -0.939948012956034140, -0.939930945898991620, +-0.939913876492121770, -0.939896804735467000, -0.939879730629070380, -0.939862654172974540, -0.939845575367222020, -0.939828494211855550, -0.939811410706917540, -0.939794324852451400, +-0.939777236648499330, -0.939760146095104280, -0.939743053192308770, -0.939725957940155680, -0.939708860338687610, -0.939691760387947550, -0.939674658087977900, -0.939657553438821740, +-0.939640446440521360, -0.939623337093120180, -0.939606225396660610, -0.939589111351185500, -0.939571994956737600, -0.939554876213359760, -0.939537755121094390, -0.939520631679985010, +-0.939503505890073920, -0.939486377751404200, -0.939469247264018370, -0.939452114427959620, -0.939434979243270460, -0.939417841709993870, -0.939400701828172700, -0.939383559597849470, +-0.939366415019067590, -0.939349268091869690, -0.939332118816298630, -0.939314967192397270, -0.939297813220208560, -0.939280656899774910, -0.939263498231139970, -0.939246337214346360, +-0.939229173849436830, -0.939212008136454330, -0.939194840075441850, -0.939177669666442340, -0.939160496909498540, -0.939143321804653540, -0.939126144351949970, -0.939108964551431340, +-0.939091782403140280, -0.939074597907119780, -0.939057411063412670, -0.939040221872062150, -0.939023030333110740, -0.939005836446602070, -0.938988640212578880, -0.938971441631083930, +-0.938954240702160490, -0.938937037425851440, -0.938919831802199730, -0.938902623831248560, -0.938885413513040780, -0.938868200847619460, -0.938850985835027240, -0.938833768475307970, +-0.938816548768504290, -0.938799326714659150, -0.938782102313815760, -0.938764875566016730, -0.938747646471305930, -0.938730415029725980, -0.938713181241319970, -0.938695945106130970, +-0.938678706624202160, -0.938661465795576630, -0.938644222620297340, -0.938626977098407590, -0.938609729229950340, -0.938592479014968450, -0.938575226453505660, -0.938557971545604830, +-0.938540714291309030, -0.938523454690661560, -0.938506192743705060, -0.938488928450483370, -0.938471661811039360, -0.938454392825416210, -0.938437121493657100, -0.938419847815805230, +-0.938402571791903670, -0.938385293421995730, -0.938368012706124470, -0.938350729644333300, -0.938333444236664870, -0.938316156483163240, -0.938298866383871170, -0.938281573938831940, +-0.938264279148088740, -0.938246982011684880, -0.938229682529663320, -0.938212380702067810, -0.938195076528941300, -0.938177770010327210, -0.938160461146268610, -0.938143149936808810, +-0.938125836381991210, -0.938108520481859000, -0.938091202236455590, -0.938073881645823730, -0.938056558710007480, -0.938039233429049930, -0.938021905802994160, -0.938004575831883790, +-0.937987243515761900, -0.937969908854671570, -0.937952571848656770, -0.937935232497760560, -0.937917890802026260, -0.937900546761497260, -0.937883200376216970, -0.937865851646228600, +-0.937848500571575540, -0.937831147152301310, -0.937813791388448890, -0.937796433280062240, -0.937779072827184530, -0.937761710029859200, -0.937744344888129520, -0.937726977402039030, +-0.937709607571630800, -0.937692235396948790, -0.937674860878036310, -0.937657484014936650, -0.937640104807693220, -0.937622723256349540, -0.937605339360949030, -0.937587953121535200, +-0.937570564538151460, -0.937553173610841340, -0.937535780339648020, -0.937518384724615460, -0.937500986765787080, -0.937483586463206060, -0.937466183816916150, -0.937448778826960540, +-0.937431371493383180, -0.937413961816227490, -0.937396549795536880, -0.937379135431354870, -0.937361718723724980, -0.937344299672690840, -0.937326878278295970, -0.937309454540583900, +-0.937292028459598140, -0.937274600035381990, -0.937257169267979750, -0.937239736157434500, -0.937222300703789980, -0.937204862907089600, -0.937187422767377210, -0.937169980284695890, +-0.937152535459089830, -0.937135088290602550, -0.937117638779277560, -0.937100186925158400, -0.937082732728288790, -0.937065276188712380, -0.937047817306472800, -0.937030356081613560, +-0.937012892514178300, -0.936995426604210980, -0.936977958351755120, -0.936960487756854370, -0.936943014819552440, -0.936925539539892880, -0.936908061917919310, -0.936890581953675810, +-0.936873099647205780, -0.936855614998553080, -0.936838128007761340, -0.936820638674874310, -0.936803146999935720, -0.936785652982989100, -0.936768156624078530, -0.936750657923247190, +-0.936733156880539490, -0.936715653495998830, -0.936698147769669200, -0.936680639701594100, -0.936663129291817390, -0.936645616540382590, -0.936628101447333990, -0.936610584012715240, +-0.936593064236569960, -0.936575542118942010, -0.936558017659875230, -0.936540490859413490, -0.936522961717600410, -0.936505430234479960, -0.936487896410096000, -0.936470360244491930, +-0.936452821737712270, -0.936435280889800550, -0.936417737700800610, -0.936400192170756320, -0.936382644299711300, -0.936365094087709960, -0.936347541534795820, -0.936329986641012860, +-0.936312429406405020, -0.936294869831016060, -0.936277307914889830, -0.936259743658070410, -0.936242177060601640, -0.936224608122527390, -0.936207036843891390, -0.936189463224738060, +-0.936171887265111020, -0.936154308965054360, -0.936136728324611810, -0.936119145343827560, -0.936101560022745030, -0.936083972361409060, -0.936066382359863060, -0.936048790018151110, +-0.936031195336317180, -0.936013598314405230, -0.935995998952459330, -0.935978397250523450, -0.935960793208641560, -0.935943186826857290, -0.935925578105215480, -0.935907967043759670, +-0.935890353642533920, -0.935872737901582430, -0.935855119820948930, -0.935837499400677400, -0.935819876640812450, -0.935802251541397730, -0.935784624102477420, -0.935766994324095600, +-0.935749362206296230, -0.935731727749123500, -0.935714090952621370, -0.935696451816834140, -0.935678810341805330, -0.935661166527579910, -0.935643520374201510, -0.935625871881714310, +-0.935608221050162500, -0.935590567879590160, -0.935572912370041030, -0.935555254521559850, -0.935537594334190590, -0.935519931807977430, -0.935502266942964340, -0.935484599739195620, +-0.935466930196715450, -0.935449258315567910, -0.935431584095797190, -0.935413907537447580, -0.935396228640562820, -0.935378547405187890, -0.935360863831366520, -0.935343177919143010, +-0.935325489668561550, -0.935307799079665990, -0.935290106152501300, -0.935272410887111440, -0.935254713283540480, -0.935237013341832730, -0.935219311062032380, -0.935201606444183820, +-0.935183899488331250, -0.935166190194518960, -0.935148478562791150, -0.935130764593191780, -0.935113048285765910, -0.935095329640557420, -0.935077608657610470, -0.935059885336969600, +-0.935042159678679100, -0.935024431682782710, -0.935006701349325730, -0.934988968678351910, -0.934971233669905640, -0.934953496324031350, -0.934935756640773220, -0.934918014620175760, +-0.934900270262283280, -0.934882523567140190, -0.934864774534790330, -0.934847023165279010, -0.934829269458649970, -0.934811513414947840, -0.934793755034216910, -0.934775994316501600, +-0.934758231261845980, -0.934740465870295130, -0.934722698141893130, -0.934704928076684370, -0.934687155674713280, -0.934669380936024250, -0.934651603860661820, -0.934633824448670380, +-0.934616042700094350, -0.934598258614977920, -0.934580472193366150, -0.934562683435303130, -0.934544892340833490, -0.934527098910001630, -0.934509303142852080, -0.934491505039428790, +-0.934473704599777190, -0.934455901823941230, -0.934438096711965650, -0.934420289263894750, -0.934402479479773060, -0.934384667359645200, -0.934366852903555810, -0.934349036111549180, +-0.934331216983669940, -0.934313395519962290, -0.934295571720471620, -0.934277745585241900, -0.934259917114317880, -0.934242086307744080, -0.934224253165564680, -0.934206417687824970, +-0.934188579874569270, -0.934170739725842080, -0.934152897241688150, -0.934135052422151890, -0.934117205267277930, -0.934099355777111010, -0.934081503951695760, -0.934063649791076700, +-0.934045793295298240, -0.934027934464405570, -0.934010073298443100, -0.933992209797455340, -0.933974343961487150, -0.933956475790583050, -0.933938605284787560, -0.933920732444145750, +-0.933902857268702150, -0.933884979758501490, -0.933867099913588290, -0.933849217734007310, -0.933831333219803380, -0.933813446371021040, -0.933795557187705130, -0.933777665669899950, +-0.933759771817651020, -0.933741875631002530, -0.933723977109999440, -0.933706076254686380, -0.933688173065108210, -0.933670267541309220, -0.933652359683334820, -0.933634449491229650, +-0.933616536965038320, -0.933598622104805600, -0.933580704910576320, -0.933562785382395340, -0.933544863520307300, -0.933526939324357260, -0.933509012794589420, -0.933491083931049400, +-0.933473152733781620, -0.933455219202831030, -0.933437283338242390, -0.933419345140060530, -0.933401404608329990, -0.933383461743096280, -0.933365516544403920, -0.933347569012297650, +-0.933329619146822550, -0.933311666948023480, -0.933293712415945160, -0.933275755550632580, -0.933257796352130580, -0.933239834820484120, -0.933221870955737720, -0.933203904757937020, +-0.933185936227126420, -0.933167965363351120, -0.933149992166655840, -0.933132016637085340, -0.933114038774685020, -0.933096058579499730, -0.933078076051574110, -0.933060091190953460, +-0.933042103997682500, -0.933024114471806330, -0.933006122613369900, -0.932988128422418070, -0.932970131898996020, -0.932952133043148170, -0.932934131854920470, -0.932916128334357330, +-0.932898122481503940, -0.932880114296405160, -0.932862103779106170, -0.932844090929651590, -0.932826075748087180, -0.932808058234457450, -0.932790038388807590, -0.932772016211182660, +-0.932753991701627760, -0.932735964860187840, -0.932717935686907970, -0.932699904181833240, -0.932681870345008490, -0.932663834176479360, -0.932645795676290690, -0.932627754844487460, +-0.932609711681114840, -0.932591666186218030, -0.932573618359841650, -0.932555568202031560, -0.932537515712832610, -0.932519460892289760, -0.932501403740448320, -0.932483344257353460, +-0.932465282443050160, -0.932447218297583590, -0.932429151820999060, -0.932411083013341300, -0.932393011874656170, -0.932374938404988420, -0.932356862604383440, -0.932338784472886320, +-0.932320704010542120, -0.932302621217395930, -0.932284536093493490, -0.932266448638879750, -0.932248358853599800, -0.932230266737699040, -0.932212172291222550, -0.932194075514215630, +-0.932175976406723560, -0.932157874968791540, -0.932139771200464760, -0.932121665101788290, -0.932103556672807980, -0.932085445913568790, -0.932067332824116020, -0.932049217404494870, +-0.932031099654750390, -0.932012979574928460, -0.931994857165074020, -0.931976732425232490, -0.931958605355449170, -0.931940475955769340, -0.931922344226238210, -0.931904210166901280, +-0.931886073777803860, -0.931867935058991240, -0.931849794010508490, -0.931831650632401480, -0.931813504924715490, -0.931795356887495600, -0.931777206520787330, -0.931759053824636090, +-0.931740898799086950, -0.931722741444185760, -0.931704581759977830, -0.931686419746508340, -0.931668255403822920, -0.931650088731966750, -0.931631919730985470, -0.931613748400924370, +-0.931595574741828860, -0.931577398753744010, -0.931559220436716130, -0.931541039790790060, -0.931522856816011550, -0.931504671512425770, -0.931486483880078380, -0.931468293919014420, +-0.931450101629280100, -0.931431907010920490, -0.931413710063981100, -0.931395510788507460, -0.931377309184544980, -0.931359105252139270, -0.931340898991335870, -0.931322690402180190, +-0.931304479484717400, -0.931286266238993800, -0.931268050665054470, -0.931249832762945040, -0.931231612532711030, -0.931213389974397950, -0.931195165088051110, -0.931176937873716690, +-0.931158708331439990, -0.931140476461266410, -0.931122242263241700, -0.931104005737411370, -0.931085766883821050, -0.931067525702516270, -0.931049282193542660, -0.931031036356945950, +-0.931012788192771220, -0.930994537701064880, -0.930976284881872120, -0.930958029735238780, -0.930939772261210270, -0.930921512459832120, -0.930903250331150400, -0.930884985875210620, +-0.930866719092058310, -0.930848449981739210, -0.930830178544299060, -0.930811904779783370, -0.930793628688238010, -0.930775350269708590, -0.930757069524240640, -0.930738786451879800, +-0.930720501052672340, -0.930702213326663590, -0.930683923273899370, -0.930665630894425220, -0.930647336188287100, -0.930629039155530300, -0.930610739796201240, -0.930592438110345200, +-0.930574134098008270, -0.930555827759235840, -0.930537519094073890, -0.930519208102568160, -0.930500894784764390, -0.930482579140708420, -0.930464261170445670, -0.930445940874022550, +-0.930427618251484570, -0.930409293302877580, -0.930390966028247330, -0.930372636427639790, -0.930354304501100240, -0.930335970248675200, -0.930317633670410320, -0.930299294766351310, +-0.930280953536544050, -0.930262609981034380, -0.930244264099868270, -0.930225915893091450, -0.930207565360749890, -0.930189212502889110, -0.930170857319555510, -0.930152499810794840, +-0.930134139976652950, -0.930115777817175690, -0.930097413332408920, -0.930079046522398370, -0.930060677387190450, -0.930042305926830900, -0.930023932141365580, -0.930005556030840450, +-0.929987177595301360, -0.929968796834794390, -0.929950413749365380, -0.929932028339060410, -0.929913640603925340, -0.929895250544005790, -0.929876858159348510, -0.929858463449999010, +-0.929840066416003360, -0.929821667057407650, -0.929803265374257390, -0.929784861366599210, -0.929766455034478970, -0.929748046377942620, -0.929729635397036120, -0.929711222091805460, +-0.929692806462296790, -0.929674388508556100, -0.929655968230629460, -0.929637545628562930, -0.929619120702402160, -0.929600693452193870, -0.929582263877983930, -0.929563831979818290, +-0.929545397757743140, -0.929526961211804450, -0.929508522342048060, -0.929490081148520610, -0.929471637631267940, -0.929453191790336250, -0.929434743625771610, -0.929416293137620090, +-0.929397840325927760, -0.929379385190740930, -0.929360927732105660, -0.929342467950067590, -0.929324005844673780, -0.929305541415969990, -0.929287074664002290, -0.929268605588816850, +-0.929250134190459990, -0.929231660468977430, -0.929213184424416140, -0.929194706056821750, -0.929176225366240670, -0.929157742352718970, -0.929139257016302960, -0.929120769357038800, +-0.929102279374972690, -0.929083787070150930, -0.929065292442619370, -0.929046795492424860, -0.929028296219613470, -0.929009794624231280, -0.928991290706324580, -0.928972784465939670, +-0.928954275903122410, -0.928935765017919860, -0.928917251810377880, -0.928898736280542760, -0.928880218428460800, -0.928861698254178300, -0.928843175757741560, -0.928824650939196860, +-0.928806123798590620, -0.928787594335968910, -0.928769062551378030, -0.928750528444864720, -0.928731992016475160, -0.928713453266255650, -0.928694912194252490, -0.928676368800511630, +-0.928657823085080270, -0.928639275048004360, -0.928620724689330210, -0.928602172009104220, -0.928583617007372910, -0.928565059684182460, -0.928546500039579390, -0.928527938073610000, +-0.928509373786320920, -0.928490807177758000, -0.928472238247968320, -0.928453666996998160, -0.928435093424893720, -0.928416517531701620, -0.928397939317467950, -0.928379358782239650, +-0.928360775926063030, -0.928342190748984500, -0.928323603251050340, -0.928305013432307310, -0.928286421292801700, -0.928267826832580020, -0.928249230051688800, -0.928230630950174550, +-0.928212029528083350, -0.928193425785462380, -0.928174819722357940, -0.928156211338816320, -0.928137600634884260, -0.928118987610608180, -0.928100372266034260, -0.928081754601209790, +-0.928063134616180950, -0.928044512310994160, -0.928025887685696160, -0.928007260740333460, -0.927988631474952700, -0.927969999889600160, -0.927951365984322820, -0.927932729759166630, +-0.927914091214178890, -0.927895450349406010, -0.927876807164894510, -0.927858161660690910, -0.927839513836841930, -0.927820863693393890, -0.927802211230394080, -0.927783556447888570, +-0.927764899345924320, -0.927746239924547740, -0.927727578183805580, -0.927708914123744450, -0.927690247744411110, -0.927671579045852070, -0.927652908028114180, -0.927634234691243620, +-0.927615559035287810, -0.927596881060293030, -0.927578200766306150, -0.927559518153373790, -0.927540833221542240, -0.927522145970858910, -0.927503456401370220, -0.927484764513123010, +-0.927466070306163790, -0.927447373780539430, -0.927428674936296550, -0.927409973773482110, -0.927391270292142630, -0.927372564492325080, -0.927353856374075750, -0.927335145937442040, +-0.927316433182470480, -0.927297718109207910, -0.927279000717700970, -0.927260281007996290, -0.927241558980141160, -0.927222834634182200, -0.927204107970166060, -0.927185378988139690, +-0.927166647688149940, -0.927147914070243550, -0.927129178134467270, -0.927110439880868160, -0.927091699309492870, -0.927072956420388120, -0.927054211213601210, -0.927035463689178770, +-0.927016713847167660, -0.926997961687614840, -0.926979207210567040, -0.926960450416070890, -0.926941691304174030, -0.926922929874922860, -0.926904166128364460, -0.926885400064545560, +-0.926866631683513240, -0.926847860985314240, -0.926829087969995640, -0.926810312637604270, -0.926791534988186890, -0.926772755021790910, -0.926753972738463050, -0.926735188138250400, +-0.926716401221199580, -0.926697611987357890, -0.926678820436771740, -0.926660026569488980, -0.926641230385556120, -0.926622431885020140, -0.926603631067928090, -0.926584827934326950, +-0.926566022484263780, -0.926547214717785560, -0.926528404634939350, -0.926509592235771670, -0.926490777520330380, -0.926471960488662210, -0.926453141140814120, -0.926434319476833190, +-0.926415495496766380, -0.926396669200660550, -0.926377840588563430, -0.926359009660521650, -0.926340176416582390, -0.926321340856792630, -0.926302502981199540, -0.926283662789850190, +-0.926264820282791670, -0.926245975460071150, -0.926227128321735590, -0.926208278867831970, -0.926189427098408010, -0.926170573013510470, -0.926151716613186400, -0.926132857897483120, +-0.926113996866447350, -0.926095133520126960, -0.926076267858568670, -0.926057399881819790, -0.926038529589927270, -0.926019656982938530, -0.926000782060900640, -0.925981904823860780, +-0.925963025271866140, -0.925944143404964000, -0.925925259223201120, -0.925906372726625460, -0.925887483915283860, -0.925868592789223510, -0.925849699348491710, -0.925830803593135630, +-0.925811905523202250, -0.925793005138739410, -0.925774102439794080, -0.925755197426413550, -0.925736290098645000, -0.925717380456535620, -0.925698468500132820, -0.925679554229483890, +-0.925660637644636130, -0.925641718745636390, -0.925622797532532630, -0.925603874005371920, -0.925584948164201560, -0.925566020009068850, -0.925547089540021070, -0.925528156757105200, +-0.925509221660369310, -0.925490284249860240, -0.925471344525625630, -0.925452402487712540, -0.925433458136168510, -0.925414511471040810, -0.925395562492376870, -0.925376611200223960, +-0.925357657594629180, -0.925338701675640700, -0.925319743443305360, -0.925300782897670700, -0.925281820038784120, -0.925262854866692910, -0.925243887381444250, -0.925224917583086230, +-0.925205945471666010, -0.925186971047230800, -0.925167994309828210, -0.925149015259505550, -0.925130033896310430, -0.925111050220290280, -0.925092064231492370, -0.925073075929964350, +-0.925054085315753390, -0.925035092388907470, -0.925016097149473860, -0.924997099597499980, -0.924978099733033350, -0.924959097556121160, -0.924940093066811580, -0.924921086265151680, +-0.924902077151189110, -0.924883065724971360, -0.924864051986545980, -0.924845035935960460, -0.924826017573262330, -0.924806996898499100, -0.924787973911718410, -0.924768948612967550, +-0.924749921002294470, -0.924730891079746710, -0.924711858845371770, -0.924692824299217060, -0.924673787441330330, -0.924654748271758860, -0.924635706790550850, -0.924616662997753470, +-0.924597616893414460, -0.924578568477581460, -0.924559517750302100, -0.924540464711623880, -0.924521409361594440, -0.924502351700261520, -0.924483291727672410, -0.924464229443875410, +-0.924445164848917810, -0.924426097942847250, -0.924407028725711570, -0.924387957197558170, -0.924368883358434700, -0.924349807208389220, -0.924330728747469240, -0.924311647975722520, +-0.924292564893196670, -0.924273479499939320, -0.924254391795998330, -0.924235301781421440, -0.924216209456256150, -0.924197114820550110, -0.924178017874351500, -0.924158918617707940, +-0.924139817050667060, -0.924120713173276710, -0.924101606985584520, -0.924082498487637900, -0.924063387679485480, -0.924044274561174550, -0.924025159132752960, -0.924006041394268450, +-0.923986921345768760, -0.923967798987301860, -0.923948674318915470, -0.923929547340657350, -0.923910418052575340, -0.923891286454717080, -0.923872152547130840, -0.923853016329864160, +-0.923833877802965000, -0.923814736966481200, -0.923795593820460170, -0.923776448364950430, -0.923757300599999720, -0.923738150525655670, -0.923718998141966230, -0.923699843448979370, +-0.923680686446742840, -0.923661527135304580, -0.923642365514712460, -0.923623201585014540, -0.923604035346258230, -0.923584866798492170, -0.923565695941763960, -0.923546522776121480, +-0.923527347301612680, -0.923508169518285630, -0.923488989426187620, -0.923469807025367630, -0.923450622315873050, -0.923431435297751960, -0.923412245971052310, -0.923393054335821970, +-0.923373860392109000, -0.923354664139961480, -0.923335465579427140, -0.923316264710553950, -0.923297061533390310, -0.923277856047984070, -0.923258648254383200, -0.923239438152635760, +-0.923220225742789610, -0.923201011024892600, -0.923181793998993470, -0.923162574665139850, -0.923143353023379690, -0.923124129073761180, -0.923104902816332400, -0.923085674251141410, +-0.923066443378236070, -0.923047210197664780, -0.923027974709475060, -0.923008736913715770, -0.922989496810434520, -0.922970254399679720, -0.922951009681499120, -0.922931762655941120, +-0.922912513323053240, -0.922893261682884550, -0.922874007735482670, -0.922854751480895690, -0.922835492919171880, -0.922816232050359340, -0.922796968874506240, -0.922777703391660760, +-0.922758435601870990, -0.922739165505185090, -0.922719893101650920, -0.922700618391317450, -0.922681341374232300, -0.922662062050443880, -0.922642780420000360, -0.922623496482949500, +-0.922604210239340250, -0.922584921689220460, -0.922565630832638320, -0.922546337669642110, -0.922527042200280150, -0.922507744424600480, -0.922488444342651540, -0.922469141954481490, +-0.922449837260138520, -0.922430530259670590, -0.922411220953126780, -0.922391909340554820, -0.922372595422003120, -0.922353279197519970, -0.922333960667153560, -0.922314639830951970, +-0.922295316688964140, -0.922275991241237940, -0.922256663487821760, -0.922237333428764020, -0.922218001064112890, -0.922198666393916680, -0.922179329418223890, -0.922159990137082830, +-0.922140648550541340, -0.922121304658648610, -0.922101958461452600, -0.922082609959001710, -0.922063259151344350, -0.922043906038528820, -0.922024550620603180, -0.922005192897616510, +-0.921985832869616770, -0.921966470536652480, -0.921947105898772050, -0.921927738956023870, -0.921908369708456350, -0.921888998156117910, -0.921869624299056940, -0.921850248137321530, +-0.921830869670960950, -0.921811488900023070, -0.921792105824556620, -0.921772720444609780, -0.921753332760231190, -0.921733942771468920, -0.921714550478372140, -0.921695155880988940, +-0.921675758979367930, -0.921656359773557420, -0.921636958263606140, -0.921617554449562390, -0.921598148331474690, -0.921578739909391760, -0.921559329183361920, -0.921539916153433340, +-0.921520500819655420, -0.921501083182076130, -0.921481663240744210, -0.921462240995708170, -0.921442816447016200, -0.921423389594717480, -0.921403960438860190, -0.921384528979493190, +-0.921365095216664760, -0.921345659150423550, -0.921326220780818270, -0.921306780107897460, -0.921287337131709630, -0.921267891852303510, -0.921248444269727180, -0.921228994384030280, +-0.921209542195260740, -0.921190087703467440, -0.921170630908698880, -0.921151171811003810, -0.921131710410430400, -0.921112246707028070, -0.921092780700845100, -0.921073312391930240, +-0.921053841780332010, -0.921034368866099240, -0.921014893649280570, -0.920995416129924640, -0.920975936308080170, -0.920956454183795570, -0.920936969757120030, -0.920917483028102170, +-0.920897993996790620, -0.920878502663234010, -0.920859009027481190, -0.920839513089580560, -0.920820014849581430, -0.920800514307532290, -0.920781011463481790, -0.920761506317478880, +-0.920741998869572090, -0.920722489119810360, -0.920702977068242450, -0.920683462714916970, -0.920663946059882670, -0.920644427103188720, -0.920624905844883660, -0.920605382285016430, +-0.920585856423635770, -0.920566328260790430, -0.920546797796528820, -0.920527265030900650, -0.920507729963954360, -0.920488192595738770, -0.920468652926302640, -0.920449110955694820, +-0.920429566683964250, -0.920410020111159800, -0.920390471237330310, -0.920370920062524630, -0.920351366586791290, -0.920331810810179900, -0.920312252732738980, -0.920292692354517490, +-0.920273129675564180, -0.920253564695927670, -0.920233997415657700, -0.920214427834802670, -0.920194855953411550, -0.920175281771533400, -0.920155705289216860, -0.920136126506511220, +-0.920116545423465220, -0.920096962040127810, -0.920077376356548070, -0.920057788372774520, -0.920038198088856780, -0.920018605504843600, -0.919999010620783930, -0.919979413436726730, +-0.919959813952720970, -0.919940212168815390, -0.919920608085059490, -0.919901001701502240, -0.919881393018192380, -0.919861782035178990, -0.919842168752511240, -0.919822553170238090, +-0.919802935288408510, -0.919783315107071560, -0.919763692626276000, -0.919744067846071540, -0.919724440766506950, -0.919704811387631270, -0.919685179709493590, -0.919665545732142880, +-0.919645909455627960, -0.919626270879998600, -0.919606630005303630, -0.919586986831592120, -0.919567341358913050, -0.919547693587315700, -0.919528043516849030, -0.919508391147562330, +-0.919488736479504580, -0.919469079512724720, -0.919449420247272390, -0.919429758683196650, -0.919410094820546480, -0.919390428659371040, -0.919370760199719530, -0.919351089441640790, +-0.919331416385184560, -0.919311741030399920, -0.919292063377335930, -0.919272383426041780, -0.919252701176566660, -0.919233016628959730, -0.919213329783270310, -0.919193640639547560, +-0.919173949197840680, -0.919154255458198620, -0.919134559420671240, -0.919114861085307490, -0.919095160452156560, -0.919075457521267740, -0.919055752292689990, -0.919036044766473160, +-0.919016334942666100, -0.918996622821318330, -0.918976908402479030, -0.918957191686197380, -0.918937472672522790, -0.918917751361504550, -0.918898027753191850, -0.918878301847634190, +-0.918858573644880330, -0.918838843144980430, -0.918819110347983470, -0.918799375253938620, -0.918779637862895400, -0.918759898174903110, -0.918740156190010590, -0.918720411908268140, +-0.918700665329724720, -0.918680916454429510, -0.918661165282432140, -0.918641411813781780, -0.918621656048527860, -0.918601897986719870, -0.918582137628407120, -0.918562374973638570, +-0.918542610022464620, -0.918522842774934010, -0.918503073231096370, -0.918483301391000980, -0.918463527254697380, -0.918443750822234620, -0.918423972093662780, -0.918404191069031040, +-0.918384407748388810, -0.918364622131785600, -0.918344834219270820, -0.918325044010893880, -0.918305251506704390, -0.918285456706751770, -0.918265659611085190, -0.918245860219754850, +-0.918226058532809700, -0.918206254550299580, -0.918186448272273690, -0.918166639698781760, -0.918146828829872860, -0.918127015665597180, -0.918107200206004110, -0.918087382451142850, +-0.918067562401063240, -0.918047740055814800, -0.918027915415446930, -0.918008088480009250, -0.917988259249551300, -0.917968427724122790, -0.917948593903772810, -0.917928757788551760, +-0.917908919378508830, -0.917889078673693510, -0.917869235674155570, -0.917849390379944170, -0.917829542791109620, -0.917809692907701200, -0.917789840729768550, -0.917769986257361390, +-0.917750129490529140, -0.917730270429321650, -0.917710409073788420, -0.917690545423979210, -0.917670679479943740, -0.917650811241731090, -0.917630940709391770, -0.917611067882975080, +-0.917591192762530760, -0.917571315348108430, -0.917551435639757940, -0.917531553637528360, -0.917511669341470330, -0.917491782751633010, -0.917471893868066380, -0.917452002690819950, +-0.917432109219943560, -0.917412213455486850, -0.917392315397499550, -0.917372415046031510, -0.917352512401132140, -0.917332607462851830, -0.917312700231239900, -0.917292790706346280, +-0.917272878888220730, -0.917252964776912980, -0.917233048372472440, -0.917213129674949610, -0.917193208684393910, -0.917173285400855300, -0.917153359824383400, -0.917133431955028170, +-0.917113501792839240, -0.917093569337866680, -0.917073634590160110, -0.917053697549769180, -0.917033758216744270, -0.917013816591135010, -0.916993872672991260, -0.916973926462362750, +-0.916953977959299450, -0.916934027163850860, -0.916914074076067620, -0.916894118695999130, -0.916874161023695340, -0.916854201059206120, -0.916834238802581410, -0.916814274253871190, +-0.916794307413125180, -0.916774338280393450, -0.916754366855725870, -0.916734393139172040, -0.916714417130782500, -0.916694438830606970, -0.916674458238695310, -0.916654475355097590, +-0.916634490179863310, -0.916614502713043120, -0.916594512954686640, -0.916574520904843930, -0.916554526563564950, -0.916534529930899570, -0.916514531006897950, -0.916494529791609950, +-0.916474526285085630, -0.916454520487374970, -0.916434512398527690, -0.916414502018594530, -0.916394489347625020, -0.916374474385669320, -0.916354457132777520, -0.916334437588999130, +-0.916314415754384990, -0.916294391628984850, -0.916274365212848770, -0.916254336506026720, -0.916234305508568880, -0.916214272220525210, -0.916194236641945880, -0.916174198772880980, +-0.916154158613380560, -0.916134116163494380, -0.916114071423273280, -0.916094024392766990, -0.916073975072025700, -0.916053923461099480, -0.916033869560038290, -0.916013813368892200, +-0.915993754887711950, -0.915973694116547280, -0.915953631055448360, -0.915933565704465380, -0.915913498063648520, -0.915893428133047860, -0.915873355912713680, -0.915853281402696060, +-0.915833204603044850, -0.915813125513811110, -0.915793044135044480, -0.915772960466795240, -0.915752874509113580, -0.915732786262049680, -0.915712695725653610, -0.915692602899976120, +-0.915672507785067040, -0.915652410380976670, -0.915632310687755410, -0.915612208705453230, -0.915592104434120650, -0.915571997873807720, -0.915551889024564860, -0.915531777886441910, +-0.915511664459489840, -0.915491548743758710, -0.915471430739298600, -0.915451310446159900, -0.915431187864393040, -0.915411062994047730, -0.915390935835175170, -0.915370806387825310, +-0.915350674652048340, -0.915330540627894760, -0.915310404315414770, -0.915290265714658880, -0.915270124825677270, -0.915249981648520340, -0.915229836183238390, -0.915209688429881600, +-0.915189538388500810, -0.915169386059146330, -0.915149231441868330, -0.915129074536717210, -0.915108915343743060, -0.915088753862997040, -0.915068590094529120, -0.915048424038389600, +-0.915028255694629200, -0.915008085063298000, -0.914987912144446750, -0.914967736938125610, -0.914947559444385110, -0.914927379663275750, -0.914907197594847620, -0.914887013239151890, +-0.914866826596238520, -0.914846637666158150, -0.914826446448961160, -0.914806252944698080, -0.914786057153418990, -0.914765859075175050, -0.914745658710016560, -0.914725456057993820, +-0.914705251119157570, -0.914685043893558090, -0.914664834381246130, -0.914644622582271970, -0.914624408496686250, -0.914604192124539140, -0.914583973465882050, -0.914563752520764830, +-0.914543529289238430, -0.914523303771353050, -0.914503075967159520, -0.914482845876707810, -0.914462613500049430, -0.914442378837234560, -0.914422141888313610, -0.914401902653337430, +-0.914381661132356420, -0.914361417325421310, -0.914341171232582630, -0.914320922853891100, -0.914300672189396810, -0.914280419239151150, -0.914260164003204530, -0.914239906481607580, +-0.914219646674410690, -0.914199384581664830, -0.914179120203420070, -0.914158853539727810, -0.914138584590638570, -0.914118313356202750, -0.914098039836471200, -0.914077764031494540, +-0.914057485941323410, -0.914037205566008650, -0.914016922905600880, -0.913996637960150740, -0.913976350729708730, -0.913956061214326150, -0.913935769414053410, -0.913915475328941240, +-0.913895178959040380, -0.913874880304401230, -0.913854579365075190, -0.913834276141112790, -0.913813970632564640, -0.913793662839481600, -0.913773352761914400, -0.913753040399913790, +-0.913732725753530590, -0.913712408822815680, -0.913692089607819560, -0.913671768108592960, -0.913651444325187300, -0.913631118257653090, -0.913610789906040940, -0.913590459270401940, +-0.913570126350786720, -0.913549791147245880, -0.913529453659830850, -0.913509113888592240, -0.913488771833580790, -0.913468427494847470, -0.913448080872443110, -0.913427731966418470, +-0.913407380776824480, -0.913387027303712130, -0.913366671547131800, -0.913346313507135240, -0.913325953183772740, -0.913305590577095480, -0.913285225687154200, -0.913264858513999860, +-0.913244489057682960, -0.913224117318255260, -0.913203743295767260, -0.913183366990269920, -0.913162988401814200, -0.913142607530450960, -0.913122224376231140, -0.913101838939205820, +-0.913081451219425850, -0.913061061216941970, -0.913040668931805800, -0.913020274364067850, -0.912999877513779310, -0.912979478380991140, -0.912959076965754180, -0.912938673268119170, +-0.912918267288137850, -0.912897859025860850, -0.912877448481339230, -0.912857035654623950, -0.912836620545766090, -0.912816203154816710, -0.912795783481826770, -0.912775361526847460, +-0.912754937289929620, -0.912734510771124220, -0.912714081970482760, -0.912693650888056210, -0.912673217523895520, -0.912652781878051770, -0.912632343950575690, -0.912611903741519130, +-0.912591461250932710, -0.912571016478867740, -0.912550569425375270, -0.912530120090506270, -0.912509668474312030, -0.912489214576843620, -0.912468758398152110, -0.912448299938288800, +-0.912427839197304300, -0.912407376175250700, -0.912386910872178490, -0.912366443288139100, -0.912345973423183580, -0.912325501277363120, -0.912305026850728560, -0.912284550143331760, +-0.912264071155223570, -0.912243589886455260, -0.912223106337078040, -0.912202620507142960, -0.912182132396701320, -0.912161642005804410, -0.912141149334503300, -0.912120654382849060, +-0.912100157150893430, -0.912079657638687480, -0.912059155846282390, -0.912038651773729450, -0.912018145421079840, -0.911997636788384410, -0.911977125875695350, -0.911956612683063490, +-0.911936097210540030, -0.911915579458176470, -0.911895059426023780, -0.911874537114133580, -0.911854012522556930, -0.911833485651345370, -0.911812956500549610, -0.911792425070221960, +-0.911771891360413140, -0.911751355371174580, -0.911730817102557660, -0.911710276554613670, -0.911689733727393700, -0.911669188620949700, -0.911648641235332850, -0.911628091570594210, +-0.911607539626785420, -0.911586985403957770, -0.911566428902162770, -0.911545870121451610, -0.911525309061875790, -0.911504745723486610, -0.911484180106335250, -0.911463612210473890, +-0.911443042035953390, -0.911422469582825360, -0.911401894851141090, -0.911381317840951780, -0.911360738552309590, -0.911340156985265380, -0.911319573139870890, -0.911298987016177510, +-0.911278398614236540, -0.911257807934099720, -0.911237214975818330, -0.911216619739443790, -0.911196022225027820, -0.911175422432621400, -0.911154820362276800, -0.911134216014045210, +-0.911113609387977920, -0.911093000484126670, -0.911072389302542970, -0.911051775843277900, -0.911031160106383740, -0.911010542091911790, -0.910989921799913340, -0.910969299230440120, +-0.910948674383543770, -0.910928047259275560, -0.910907417857687360, -0.910886786178830570, -0.910866152222756460, -0.910845515989517350, -0.910824877479164410, -0.910804236691749260, +-0.910783593627323530, -0.910762948285938840, -0.910742300667646390, -0.910721650772498670, -0.910700998600546650, -0.910680344151842290, -0.910659687426436990, -0.910639028424382380, +-0.910618367145730300, -0.910597703590532380, -0.910577037758840020, -0.910556369650704860, -0.910535699266179050, -0.910515026605314030, -0.910494351668161510, -0.910473674454773010, +-0.910452994965200380, -0.910432313199494800, -0.910411629157708900, -0.910390942839893860, -0.910370254246101520, -0.910349563376383510, -0.910328870230791680, -0.910308174809377530, +-0.910287477112193040, -0.910266777139289830, -0.910246074890719740, -0.910225370366534060, -0.910204663566785310, -0.910183954491524890, -0.910163243140804550, -0.910142529514676110, +-0.910121813613191000, -0.910101095436401720, -0.910080374984359790, -0.910059652257116820, -0.910038927254724790, -0.910018199977235430, -0.909997470424700470, -0.909976738597171870, +-0.909956004494701490, -0.909935268117341050, -0.909914529465142170, -0.909893788538157170, -0.909873045336437870, -0.909852299860035800, -0.909831552109003130, -0.909810802083391490, +-0.909790049783252510, -0.909769295208638700, -0.909748538359601680, -0.909727779236193410, -0.909707017838465640, -0.909686254166470310, -0.909665488220259280, -0.909644719999884610, +-0.909623949505398150, -0.909603176736851430, -0.909582401694297160, -0.909561624377786760, -0.909540844787372400, -0.909520062923105940, -0.909499278785039330, -0.909478492373224200, +-0.909457703687713060, -0.909436912728557760, -0.909416119495810140, -0.909395323989522280, -0.909374526209746130, -0.909353726156533540, -0.909332923829936690, -0.909312119230007540, +-0.909291312356797720, -0.909270503210360070, -0.909249691790746110, -0.909228878098007900, -0.909208062132197400, -0.909187243893366910, -0.909166423381567830, -0.909145600596853120, +-0.909124775539274400, -0.909103948208883740, -0.909083118605733210, -0.909062286729874880, -0.909041452581360820, -0.909020616160243100, -0.908999777466573900, -0.908978936500405290, +-0.908958093261788890, -0.908937247750777670, -0.908916399967423350, -0.908895549911777900, -0.908874697583893720, -0.908853842983822440, -0.908832986111616780, -0.908812126967328720, +-0.908791265551010420, -0.908770401862713850, -0.908749535902491300, -0.908728667670394950, -0.908707797166476980, -0.908686924390789460, -0.908666049343384570, -0.908645172024314270, +-0.908624292433631300, -0.908603410571387720, -0.908582526437635600, -0.908561640032427120, -0.908540751355814580, -0.908519860407849710, -0.908498967188585690, -0.908478071698074150, +-0.908457173936367490, -0.908436273903517890, -0.908415371599577530, -0.908394467024598810, -0.908373560178633910, -0.908352651061735130, -0.908331739673954310, -0.908310826015344520, +-0.908289910085957720, -0.908268991885846090, -0.908248071415061920, -0.908227148673657720, -0.908206223661685130, -0.908185296379197430, -0.908164366826246460, -0.908143435002884640, +-0.908122500909164240, -0.908101564545137460, -0.908080625910856920, -0.908059685006374680, -0.908038741831743380, -0.908017796387014740, -0.907996848672241950, -0.907975898687477190, +-0.907954946432772530, -0.907933991908180580, -0.907913035113753650, -0.907892076049543690, -0.907871114715604000, -0.907850151111986530, -0.907829185238743560, -0.907808217095927740, +-0.907787246683591340, -0.907766274001786890, -0.907745299050566670, -0.907724321829983190, -0.907703342340088980, -0.907682360580935990, -0.907661376552577500, -0.907640390255065600, +-0.907619401688452680, -0.907598410852791250, -0.907577417748133390, -0.907556422374532490, -0.907535424732040410, -0.907514424820709760, -0.907493422640593180, -0.907472418191742960, +-0.907451411474211600, -0.907430402488051850, -0.907409391233316100, -0.907388377710056760, -0.907367361918326120, -0.907346343858177580, -0.907325323529663110, -0.907304300932835210, +-0.907283276067746720, -0.907262248934449960, -0.907241219532997300, -0.907220187863441830, -0.907199153925835940, -0.907178117720232160, -0.907157079246683210, -0.907136038505241380, +-0.907114995495959530, -0.907093950218890170, -0.907072902674086020, -0.907051852861599170, -0.907030800781483020, -0.907009746433789950, -0.906988689818572500, -0.906967630935883280, +-0.906946569785775040, -0.906925506368299940, -0.906904440683511500, -0.906883372731461910, -0.906862302512204010, -0.906841230025790200, -0.906820155272273440, -0.906799078251706250, +-0.906777998964141350, -0.906756917409631380, -0.906735833588228850, -0.906714747499987040, -0.906693659144958470, -0.906672568523195670, -0.906651475634751460, -0.906630380479678480, +-0.906609283058029240, -0.906588183369857250, -0.906567081415214690, -0.906545977194154530, -0.906524870706729380, -0.906503761952991980, -0.906482650932995290, -0.906461537646791830, +-0.906440422094434650, -0.906419304275976390, -0.906398184191469450, -0.906377061840967560, -0.906355937224522900, -0.906334810342188430, -0.906313681194016900, -0.906292549780060800, +-0.906271416100373650, -0.906250280155008080, -0.906229141944016710, -0.906208001467452510, -0.906186858725368420, -0.906165713717817070, -0.906144566444851420, -0.906123416906524430, +-0.906102265102888830, -0.906081111033997240, -0.906059954699903190, -0.906038796100659290, -0.906017635236318400, -0.905996472106933460, -0.905975306712557330, -0.905954139053242510, +-0.905932969129042750, -0.905911796940010560, -0.905890622486198890, -0.905869445767660600, -0.905848266784448740, -0.905827085536616280, -0.905805902024216070, -0.905784716247301060, +-0.905763528205923870, -0.905742337900138250, -0.905721145329996810, -0.905699950495552520, -0.905678753396858330, -0.905657554033967300, -0.905636352406931970, -0.905615148515806160, +-0.905593942360642390, -0.905572733941493850, -0.905551523258413480, -0.905530310311454260, -0.905509095100669350, -0.905487877626111600, -0.905466657887834200, -0.905445435885889770, +-0.905424211620332150, -0.905402985091213970, -0.905381756298588410, -0.905360525242508320, -0.905339291923027090, -0.905318056340197130, -0.905296818494072400, -0.905275578384705630, +-0.905254336012150000, -0.905233091376458470, -0.905211844477684210, -0.905190595315880310, -0.905169343891099930, -0.905148090203396260, -0.905126834252822250, -0.905105576039430870, +-0.905084315563275950, -0.905063052824410130, -0.905041787822886800, -0.905020520558758920, -0.904999251032079450, -0.904977979242902130, -0.904956705191279910, -0.904935428877265860, +-0.904914150300913380, -0.904892869462275430, -0.904871586361405300, -0.904850300998356170, -0.904829013373181330, -0.904807723485933970, -0.904786431336666920, -0.904765136925434250, +-0.904743840252288600, -0.904722541317283470, -0.904701240120471930, -0.904679936661906830, -0.904658630941642340, -0.904637322959731320, -0.904616012716226940, -0.904594700211182600, +-0.904573385444651380, -0.904552068416686780, -0.904530749127341990, -0.904509427576670300, -0.904488103764725100, -0.904466777691559250, -0.904445449357226820, -0.904424118761780750, +-0.904402785905274450, -0.904381450787761110, -0.904360113409294230, -0.904338773769926550, -0.904317431869712470, -0.904296087708704730, -0.904274741286956730, -0.904253392604521980, +-0.904232041661453660, -0.904210688457805280, -0.904189332993630130, -0.904167975268981740, -0.904146615283912940, -0.904125253038478020, -0.904103888532729940, -0.904082521766722210, +-0.904061152740508130, -0.904039781454141210, -0.904018407907674400, -0.903997032101162000, -0.903975654034656960, -0.903954273708212800, -0.903932891121883020, -0.903911506275720920, +-0.903890119169780130, -0.903868729804114030, -0.903847338178776050, -0.903825944293819790, -0.903804548149298230, -0.903783149745265750, -0.903761749081775310, -0.903740346158880550, +-0.903718940976634970, -0.903697533535091630, -0.903676123834304730, -0.903654711874327670, -0.903633297655213720, -0.903611881177016630, -0.903590462439789800, -0.903569041443586740, +-0.903547618188461190, -0.903526192674466540, -0.903504764901656430, -0.903483334870083920, -0.903461902579803520, -0.903440468030868420, -0.903419031223332110, -0.903397592157248240, +-0.903376150832669980, -0.903354707249651720, -0.903333261408246770, -0.903311813308508630, -0.903290362950490920, -0.903268910334247280, -0.903247455459831430, -0.903225998327296890, +-0.903204538936697390, -0.903183077288086560, -0.903161613381517570, -0.903140147217045050, -0.903118678794722070, -0.903097208114602480, -0.903075735176739780, -0.903054259981187820, +-0.903032782527999680, -0.903011302817230080, -0.902989820848932200, -0.902968336623159900, -0.902946850139966560, -0.902925361399406160, -0.902903870401532420, -0.902882377146398960, +-0.902860881634059530, -0.902839383864567520, -0.902817883837977450, -0.902796381554342720, -0.902774877013716950, -0.902753370216154090, -0.902731861161707670, -0.902710349850431300, +-0.902688836282379500, -0.902667320457605560, -0.902645802376163210, -0.902624282038106520, -0.902602759443489000, -0.902581234592364610, -0.902559707484787200, -0.902538178120810500, +-0.902516646500487910, -0.902495112623874050, -0.902473576491022560, -0.902452038101987040, -0.902430497456821470, -0.902408954555579570, -0.902387409398314970, -0.902365861985082170, +-0.902344312315934820, -0.902322760390926630, -0.902301206210111560, -0.902279649773543470, -0.902258091081276190, -0.902236530133363690, -0.902214966929859920, -0.902193401470818720, +-0.902171833756293620, -0.902150263786339330, -0.902128691561009390, -0.902107117080357730, -0.902085540344438330, -0.902063961353304580, -0.902042380107011430, -0.902020796605612190, +-0.901999210849161010, -0.901977622837711880, -0.901956032571318620, -0.901934440050035310, -0.901912845273915910, -0.901891248243014370, -0.901869648957384640, -0.901848047417080580, +-0.901826443622156580, -0.901804837572666610, -0.901783229268664500, -0.901761618710204330, -0.901740005897340160, -0.901718390830125500, -0.901696773508615320, -0.901675153932863130, +-0.901653532102923090, -0.901631908018849290, -0.901610281680695680, -0.901588653088516320, -0.901567022242365400, -0.901545389142296870, -0.901523753788364470, -0.901502116180623150, +-0.901480476319126420, -0.901458834203928580, -0.901437189835083700, -0.901415543212645720, -0.901393894336668610, -0.901372243207207100, -0.901350589824314930, -0.901328934188046380, +-0.901307276298455420, -0.901285616155596330, -0.901263953759523170, -0.901242289110290140, -0.901220622207951410, -0.901198953052560700, -0.901177281644172990, -0.901155607982842110, +-0.901133932068622250, -0.901112253901567460, -0.901090573481732050, -0.901068890809169850, -0.901047205883935830, -0.901025518706083720, -0.901003829275667910, -0.900982137592742480, +-0.900960443657361720, -0.900938747469579800, -0.900917049029451130, -0.900895348337029780, -0.900873645392370030, -0.900851940195525720, -0.900830232746552050, -0.900808523045502740, +-0.900786811092432190, -0.900765096887394590, -0.900743380430443770, -0.900721661721635040, -0.900699940761022110, -0.900678217548659290, -0.900656492084600860, -0.900634764368901330, +-0.900613034401614780, -0.900591302182795710, -0.900569567712498410, -0.900547830990777070, -0.900526092017685850, -0.900504350793279840, -0.900482607317612870, -0.900460861590739460, +-0.900439113612713780, -0.900417363383590460, -0.900395610903423240, -0.900373856172267390, -0.900352099190176890, -0.900330339957206240, -0.900308578473409620, -0.900286814738841650, +-0.900265048753556620, -0.900243280517608930, -0.900221510031053000, -0.900199737293942980, -0.900177962306334070, -0.900156185068280100, -0.900134405579835820, -0.900112623841055390, +-0.900090839851993450, -0.900069053612704060, -0.900047265123242400, -0.900025474383662540, -0.900003681394019090, -0.899981886154366360, -0.899960088664758960, -0.899938288925251300, +-0.899916486935897870, -0.899894682696753320, -0.899872876207871600, -0.899851067469308210, -0.899829256481117000, -0.899807443243352710, -0.899785627756069850, -0.899763810019322820, +-0.899741990033166020, -0.899720167797654510, -0.899698343312842600, -0.899676516578784890, -0.899654687595535800, -0.899632856363150050, -0.899611022881682150, -0.899589187151186740, +-0.899567349171718320, -0.899545508943331520, -0.899523666466080620, -0.899501821740020800, -0.899479974765206580, -0.899458125541692350, -0.899436274069532750, -0.899414420348782160, +-0.899392564379495880, -0.899370706161728210, -0.899348845695533860, -0.899326982980967250, -0.899305118018083220, -0.899283250806936390, -0.899261381347581490, -0.899239509640073150, +-0.899217635684465890, -0.899195759480814320, -0.899173881029173620, -0.899152000329598300, -0.899130117382142990, -0.899108232186862310, -0.899086344743811110, -0.899064455053043550, +-0.899042563114615390, -0.899020668928580790, -0.898998772494994490, -0.898976873813911230, -0.898954972885385840, -0.898933069709472950, -0.898911164286227420, -0.898889256615703960, +-0.898867346697957090, -0.898845434533042110, -0.898823520121013520, -0.898801603461926280, -0.898779684555834900, -0.898757763402794340, -0.898735840002859000, -0.898713914356084500, +-0.898691986462525130, -0.898670056322235840, -0.898648123935271380, -0.898626189301686700, -0.898604252421536410, -0.898582313294875590, -0.898560371921758970, -0.898538428302240950, +-0.898516482436377270, -0.898494534324222440, -0.898472583965831300, -0.898450631361258690, -0.898428676510559470, -0.898406719413788140, -0.898384760071000430, -0.898362798482250870, +-0.898340834647594180, -0.898318868567085540, -0.898296900240779680, -0.898274929668731570, -0.898252956850996150, -0.898230981787628280, -0.898209004478683020, -0.898187024924214870, +-0.898165043124279470, -0.898143059078931550, -0.898121072788225950, -0.898099084252217630, -0.898077093470961320, -0.898055100444512530, -0.898033105172926120, -0.898011107656256800, +-0.897989107894559770, -0.897967105887890080, -0.897945101636302480, -0.897923095139852250, -0.897901086398594120, -0.897879075412583380, -0.897857062181874550, -0.897835046706523480, +-0.897813028986584770, -0.897791009022113510, -0.897768986813164640, -0.897746962359793450, -0.897724935662054360, -0.897702906720003300, -0.897680875533695020, -0.897658842103184580, +-0.897636806428526950, -0.897614768509777390, -0.897592728346990890, -0.897570685940222600, -0.897548641289527490, -0.897526594394960520, -0.897504545256577300, -0.897482493874432800, +-0.897460440248582070, -0.897438384379080300, -0.897416326265982440, -0.897394265909343460, -0.897372203309219190, -0.897350138465664470, -0.897328071378734270, -0.897306002048483990, +-0.897283930474968680, -0.897261856658243540, -0.897239780598363850, -0.897217702295384560, -0.897195621749360740, -0.897173538960348130, -0.897151453928401790, -0.897129366653576790, +-0.897107277135928300, -0.897085185375511740, -0.897063091372381720, -0.897040995126594410, -0.897018896638204670, -0.896996795907267550, -0.896974692933838580, -0.896952587717972820, +-0.896930480259725550, -0.896908370559152070, -0.896886258616307770, -0.896864144431247730, -0.896842028004027010, -0.896819909334701570, -0.896797788423326360, -0.896775665269956670, +-0.896753539874647790, -0.896731412237454670, -0.896709282358433500, -0.896687150237639120, -0.896665015875126810, -0.896642879270951880, -0.896620740425169930, -0.896598599337836030, +-0.896576456009005600, -0.896554310438734130, -0.896532162627076800, -0.896510012574088690, -0.896487860279825970, -0.896465705744343590, -0.896443548967696850, -0.896421389949941360, +-0.896399228691132420, -0.896377065191324870, -0.896354899450575230, -0.896332731468938220, -0.896310561246469350, -0.896288388783224140, -0.896266214079257990, -0.896244037134626300, +-0.896221857949384470, -0.896199676523588010, -0.896177492857291980, -0.896155306950552570, -0.896133118803424940, -0.896110928415964510, -0.896088735788226680, -0.896066540920267160, +-0.896044343812140820, -0.896022144463903940, -0.895999942875611800, -0.895977739047319810, -0.895955532979083370, -0.895933324670958210, -0.895911114122999620, -0.895888901335263330, +-0.895866686307804750, -0.895844469040679160, -0.895822249533942740, -0.895800027787650550, -0.895777803801858450, -0.895755577576621830, -0.895733349111996200, -0.895711118408036850, +-0.895688885464800080, -0.895666650282341160, -0.895644412860715500, -0.895622173199978940, -0.895599931300186890, -0.895577687161394960, -0.895555440783658900, -0.895533192167034200, +-0.895510941311576490, -0.895488688217341070, -0.895466432884384320, -0.895444175312761440, -0.895421915502528140, -0.895399653453740060, -0.895377389166452490, -0.895355122640721810, +-0.895332853876603330, -0.895310582874152770, -0.895288309633425650, -0.895266034154477810, -0.895243756437364870, -0.895221476482142560, -0.895199194288866520, -0.895176909857592570, +-0.895154623188375910, -0.895132334281273030, -0.895110043136339350, -0.895087749753630590, -0.895065454133202490, -0.895043156275110660, -0.895020856179410630, -0.894998553846158780, +-0.894976249275410640, -0.894953942467221820, -0.894931633421648160, -0.894909322138745410, -0.894887008618569290, -0.894864692861175760, -0.894842374866620440, -0.894820054634958840, +-0.894797732166247360, -0.894775407460541740, -0.894753080517897480, -0.894730751338370540, -0.894708419922016770, -0.894686086268891460, -0.894663750379051440, -0.894641412252551890, +-0.894619071889449000, -0.894596729289798280, -0.894574384453655780, -0.894552037381077360, -0.894529688072118860, -0.894507336526836120, -0.894484982745284540, -0.894462626727520970, +-0.894440268473600920, -0.894417907983580120, -0.894395545257514520, -0.894373180295460090, -0.894350813097472330, -0.894328443663607970, -0.894306071993922420, -0.894283698088471750, +-0.894261321947311780, -0.894238943570498600, -0.894216562958087930, -0.894194180110135960, -0.894171795026698520, -0.894149407707831580, -0.894127018153590640, -0.894104626364032650, +-0.894082232339213020, -0.894059836079187930, -0.894037437584013220, -0.894015036853744390, -0.893992633888438530, -0.893970228688151010, -0.893947821252937920, -0.893925411582855320, +-0.893902999677959050, -0.893880585538305410, -0.893858169163950330, -0.893835750554949790, -0.893813329711359850, -0.893790906633236130, -0.893768481320635690, -0.893746053773613940, +-0.893723623992227050, -0.893701191976531200, -0.893678757726582340, -0.893656321242436100, -0.893633882524149550, -0.893611441571778190, -0.893588998385378310, -0.893566552965005870, +-0.893544105310717150, -0.893521655422568120, -0.893499203300614940, -0.893476748944913690, -0.893454292355520320, -0.893431833532491450, -0.893409372475883150, -0.893386909185751370, +-0.893364443662152290, -0.893341975905142080, -0.893319505914776490, -0.893297033691112690, -0.893274559234206180, -0.893252082544113370, -0.893229603620890210, -0.893207122464593220, +-0.893184639075278230, -0.893162153453001760, -0.893139665597819880, -0.893117175509788530, -0.893094683188964570, -0.893072188635403830, -0.893049691849162720, -0.893027192830297300, +-0.893004691578863970, -0.892982188094918470, -0.892959682378517860, -0.892937174429718090, -0.892914664248575460, -0.892892151835146030, -0.892869637189486310, -0.892847120311652480, +-0.892824601201700930, -0.892802079859687740, -0.892779556285669410, -0.892757030479701790, -0.892734502441842050, -0.892711972172145930, -0.892689439670669940, -0.892666904937470360, +-0.892644367972603160, -0.892621828776125390, -0.892599287348093020, -0.892576743688562440, -0.892554197797590040, -0.892531649675232130, -0.892509099321545100, -0.892486546736585340, +-0.892463991920409260, -0.892441434873073040, -0.892418875594632950, -0.892396314085146080, -0.892373750344668370, -0.892351184373256330, -0.892328616170966260, -0.892306045737854770, +-0.892283473073977710, -0.892260898179392360, -0.892238321054154680, -0.892215741698321300, -0.892193160111948600, -0.892170576295092890, -0.892147990247810770, -0.892125401970158770, +-0.892102811462193170, -0.892080218723970140, -0.892057623755546980, -0.892035026556979750, -0.892012427128325070, -0.891989825469639230, -0.891967221580978740, -0.891944615462399890, +-0.891922007113959970, -0.891899396535714930, -0.891876783727721390, -0.891854168690035980, -0.891831551422715090, -0.891808931925815230, -0.891786310199393140, -0.891763686243505330, +-0.891741060058207860, -0.891718431643558130, -0.891695800999612320, -0.891673168126426940, -0.891650533024058720, -0.891627895692564180, -0.891605256131999480, -0.891582614342422030, +-0.891559970323888010, -0.891537324076454140, -0.891514675600176940, -0.891492024895113030, -0.891469371961319030, -0.891446716798851680, -0.891424059407767480, -0.891401399788123160, +-0.891378737939974910, -0.891356073863380230, -0.891333407558395410, -0.891310739025076960, -0.891288068263481730, -0.891265395273665990, -0.891242720055687050, -0.891220042609601410, +-0.891197362935465590, -0.891174681033336410, -0.891151996903270520, -0.891129310545324630, -0.891106621959555480, -0.891083931146019690, -0.891061238104774110, -0.891038542835875140, +-0.891015845339380160, -0.890993145615345480, -0.890970443663828050, -0.890947739484884480, -0.890925033078571070, -0.890902324444945550, -0.890879613584064200, -0.890856900495983870, +-0.890834185180761300, -0.890811467638453200, -0.890788747869116440, -0.890766025872807840, -0.890743301649584150, -0.890720575199502210, -0.890697846522618520, -0.890675115618990490, +-0.890652382488674730, -0.890629647131727990, -0.890606909548207200, -0.890584169738169010, -0.890561427701670130, -0.890538683438767960, -0.890515936949519140, -0.890493188233980490, +-0.890470437292208870, -0.890447684124261120, -0.890424928730194190, -0.890402171110064920, -0.890379411263930280, -0.890356649191846650, -0.890333884893871890, -0.890311118370062270, +-0.890288349620474980, -0.890265578645166760, -0.890242805444194540, -0.890220030017614960, -0.890197252365485750, -0.890174472487863410, -0.890151690384804790, -0.890128906056367080, +-0.890106119502606980, -0.890083330723581590, -0.890060539719347950, -0.890037746489962920, -0.890014951035483120, -0.889992153355966380, -0.889969353451469210, -0.889946551322048700, +-0.889923746967761780, -0.889900940388665520, -0.889878131584816430, -0.889855320556272590, -0.889832507303090270, -0.889809691825326770, -0.889786874123039030, -0.889764054196284020, +-0.889741232045119010, -0.889718407669600860, -0.889695581069786630, -0.889672752245733500, -0.889649921197498080, -0.889627087925138340, -0.889604252428710770, -0.889581414708272680, +-0.889558574763881000, -0.889535732595592380, -0.889512888203464970, -0.889490041587555290, -0.889467192747920520, -0.889444341684617720, -0.889421488397704070, -0.889398632887236750, +-0.889375775153272820, -0.889352915195869560, -0.889330053015083830, -0.889307188610972690, -0.889284321983593970, -0.889261453133004420, -0.889238582059261210, -0.889215708762421510, +-0.889192833242542610, -0.889169955499681250, -0.889147075533895380, -0.889124193345241840, -0.889101308933777700, -0.889078422299560360, -0.889055533442647090, -0.889032642363094870, +-0.889009749060960970, -0.888986853536302800, -0.888963955789177080, -0.888941055819641890, -0.888918153627754060, -0.888895249213570770, -0.888872342577149420, -0.888849433718547190, +-0.888826522637821030, -0.888803609335028890, -0.888780693810227730, -0.888757776063474950, -0.888734856094827610, -0.888711933904343110, -0.888689009492078850, -0.888666082858092120, +-0.888643154002440090, -0.888620222925179730, -0.888597289626369300, -0.888574354106065670, -0.888551416364326110, -0.888528476401208020, -0.888505534216768700, -0.888482589811065200, +-0.888459643184155600, -0.888436694336096840, -0.888413743266946440, -0.888390789976761690, -0.888367834465599860, -0.888344876733518580, -0.888321916780575040, -0.888298954606826620, +-0.888275990212330950, -0.888253023597144860, -0.888230054761326550, -0.888207083704933180, -0.888184110428022030, -0.888161134930650630, -0.888138157212876030, -0.888115177274756420, +-0.888092195116348960, -0.888069210737710830, -0.888046224138899780, -0.888023235319973180, -0.888000244280988450, -0.887977251022003090, -0.887954255543074720, -0.887931257844260640, +-0.887908257925618010, -0.887885255787205120, -0.887862251429079040, -0.887839244851297390, -0.887816236053917680, -0.887793225036997310, -0.887770211800593460, -0.887747196344764620, +-0.887724178669567650, -0.887701158775060280, -0.887678136661300020, -0.887655112328344380, -0.887632085776250970, -0.887609057005077420, -0.887586026014881120, -0.887562992805719380, +-0.887539957377650680, -0.887516919730731990, -0.887493879865020930, -0.887470837780575230, -0.887447793477452510, -0.887424746955709830, -0.887401698215405710, -0.887378647256597320, +-0.887355594079342280, -0.887332538683698320, -0.887309481069723070, -0.887286421237474030, -0.887263359187008940, -0.887240294918385410, -0.887217228431660840, -0.887194159726893530, +-0.887171088804140860, -0.887148015663460470, -0.887124940304910070, -0.887101862728547190, -0.887078782934429320, -0.887055700922614990, -0.887032616693161360, -0.887009530246126050, +-0.886986441581567140, -0.886963350699542020, -0.886940257600108420, -0.886917162283324290, -0.886894064749247260, -0.886870964997935050, -0.886847863029444960, -0.886824758843835710, +-0.886801652441164600, -0.886778543821489240, -0.886755432984867590, -0.886732319931356930, -0.886709204661015880, -0.886686087173901850, -0.886662967470072560, -0.886639845549585860, +-0.886616721412499480, -0.886593595058871360, -0.886570466488759260, -0.886547335702221000, -0.886524202699314420, -0.886501067480096940, -0.886477930044627160, -0.886454790392962490, +-0.886431648525160990, -0.886408504441280280, -0.886385358141378310, -0.886362209625512490, -0.886339058893741650, -0.886315905946123080, -0.886292750782714860, -0.886269593403574700, +-0.886246433808760560, -0.886223271998330290, -0.886200107972341830, -0.886176941730853150, -0.886153773273921750, -0.886130602601606250, -0.886107429713964280, -0.886084254611053780, +-0.886061077292932600, -0.886037897759658690, -0.886014716011289670, -0.885991532047884170, -0.885968345869500020, -0.885945157476194840, -0.885921966868026930, -0.885898774045054020, +-0.885875579007334160, -0.885852381754925310, -0.885829182287885540, -0.885805980606272470, -0.885782776710144830, -0.885759570599560230, -0.885736362274576640, -0.885713151735252220, +-0.885689938981644940, -0.885666724013812300, -0.885643506831813370, -0.885620287435705640, -0.885597065825547200, -0.885573842001396110, -0.885550615963310420, -0.885527387711348090, +-0.885504157245567410, -0.885480924566026230, -0.885457689672782820, -0.885434452565894810, -0.885411213245420940, -0.885387971711419140, -0.885364727963947380, -0.885341482003063840, +-0.885318233828826130, -0.885294983441293310, -0.885271730840523020, -0.885248476026573310, -0.885225218999502570, -0.885201959759368660, -0.885178698306229860, -0.885155434640144350, +-0.885132168761170290, -0.885108900669365760, -0.885085630364788490, -0.885062357847497650, -0.885039083117550970, -0.885015806175006410, -0.884992527019922480, -0.884969245652357240, +-0.884945962072368420, -0.884922676280015090, -0.884899388275355080, -0.884876098058446580, -0.884852805629347870, -0.884829510988117240, -0.884806214134812640, -0.884782915069492690, +-0.884759613792215350, -0.884736310303038560, -0.884713004602021400, -0.884689696689221820, -0.884666386564697870, -0.884643074228508080, -0.884619759680710490, -0.884596442921363190, +-0.884573123950525120, -0.884549802768254230, -0.884526479374608930, -0.884503153769647280, -0.884479825953427890, -0.884456495926008830, -0.884433163687448620, -0.884409829237805530, +-0.884386492577137310, -0.884363153705503340, -0.884339812622961570, -0.884316469329570200, -0.884293123825387610, -0.884269776110472310, -0.884246426184882030, -0.884223074048676170, +-0.884199719701912690, -0.884176363144649870, -0.884153004376946110, -0.884129643398859800, -0.884106280210449460, -0.884082914811773370, -0.884059547202890040, -0.884036177383857760, +-0.884012805354734700, -0.883989431115580040, -0.883966054666451840, -0.883942676007408390, -0.883919295138508310, -0.883895912059809550, -0.883872526771371510, -0.883849139273252040, +-0.883825749565509860, -0.883802357648203140, -0.883778963521390630, -0.883755567185130710, -0.883732168639481900, -0.883708767884502590, -0.883685364920251400, -0.883661959746786410, +-0.883638552364166880, -0.883615142772451010, -0.883591730971697190, -0.883568316961964140, -0.883544900743310270, -0.883521482315793750, -0.883498061679473980, -0.883474638834409020, +-0.883451213780657390, -0.883427786518277800, -0.883404357047328780, -0.883380925367868720, -0.883357491479956460, -0.883334055383650510, -0.883310617079008930, -0.883287176566091240, +-0.883263733844955600, -0.883240288915660640, -0.883216841778264980, -0.883193392432827240, -0.883169940879405480, -0.883146487118059430, -0.883123031148847050, -0.883099572971827170, +-0.883076112587058320, -0.883052649994599200, -0.883029185194508460, -0.883005718186844700, -0.882982248971666770, -0.882958777549032740, -0.882935303919002100, -0.882911828081633270, +-0.882888350036984850, -0.882864869785115580, -0.882841387326084190, -0.882817902659948860, -0.882794415786769200, -0.882770926706603400, -0.882747435419510400, -0.882723941925548820, +-0.882700446224777390, -0.882676948317254740, -0.882653448203039810, -0.882629945882191240, -0.882606441354767730, -0.882582934620827820, -0.882559425680430890, -0.882535914533635450, +-0.882512401180500230, -0.882488885621084070, -0.882465367855445160, -0.882441847883643330, -0.882418325705736860, -0.882394801321784490, -0.882371274731845180, -0.882347745935977760, +-0.882324214934240850, -0.882300681726693510, -0.882277146313394380, -0.882253608694402500, -0.882230068869776060, -0.882206526839574900, -0.882182982603857410, -0.882159436162682550, +-0.882135887516109050, -0.882112336664195750, -0.882088783607001270, -0.882065228344585230, -0.882041670877006130, -0.882018111204322830, -0.881994549326594270, -0.881970985243879400, +-0.881947418956236960, -0.881923850463726010, -0.881900279766405500, -0.881876706864333840, -0.881853131757570740, -0.881829554446174950, -0.881805974930205180, -0.881782393209720520, +-0.881758809284779900, -0.881735223155441730, -0.881711634821765950, -0.881688044283811200, -0.881664451541636200, -0.881640856595300230, -0.881617259444861910, -0.881593660090380650, +-0.881570058531915060, -0.881546454769524420, -0.881522848803267260, -0.881499240633203280, -0.881475630259391350, -0.881452017681890190, -0.881428402900759080, -0.881404785916056980, +-0.881381166727842390, -0.881357545336175390, -0.881333921741114580, -0.881310295942718810, -0.881286667941047370, -0.881263037736159330, -0.881239405328113620, -0.881215770716969440, +-0.881192133902785830, -0.881168494885621880, -0.881144853665536190, -0.881121210242588940, -0.881097564616838520, -0.881073916788344240, -0.881050266757165250, -0.881026614523360060, +-0.881002960086988860, -0.880979303448110150, -0.880955644606783220, -0.880931983563067230, -0.880908320317021150, -0.880884654868704380, -0.880860987218175960, -0.880837317365495090, +-0.880813645310720930, -0.880789971053912210, -0.880766294595129010, -0.880742615934430040, -0.880718935071874490, -0.880695252007521630, -0.880671566741430660, -0.880647879273660390, +-0.880624189604270800, -0.880600497733320720, -0.880576803660869430, -0.880553107386976120, -0.880529408911700060, -0.880505708235100440, -0.880482005357236530, -0.880458300278167740, +-0.880434592997952680, -0.880410883516651530, -0.880387171834323250, -0.880363457951027000, -0.880339741866822070, -0.880316023581767860, -0.880292303095923100, -0.880268580409347970, +-0.880244855522101520, -0.880221128434242830, -0.880197399145831390, -0.880173667656926400, -0.880149933967587230, -0.880126198077873290, -0.880102459987843750, -0.880078719697557800, +-0.880054977207075370, -0.880031232516455430, -0.880007485625757590, -0.879983736535040920, -0.879959985244364920, -0.879936231753788540, -0.879912476063371970, -0.879888718173174270, +-0.879864958083254710, -0.879841195793672810, -0.879817431304487860, -0.879793664615759360, -0.879769895727546710, -0.879746124639909420, -0.879722351352906660, -0.879698575866597720, +-0.879674798181042660, -0.879651018296300660, -0.879627236212431110, -0.879603451929493520, -0.879579665447546730, -0.879555876766651370, -0.879532085886866270, -0.879508292808250820, +-0.879484497530864770, -0.879460700054767510, -0.879436900380018430, -0.879413098506677150, -0.879389294434803070, -0.879365488164455700, -0.879341679695694320, -0.879317869028579110, +-0.879294056163169140, -0.879270241099524120, -0.879246423837703570, -0.879222604377766780, -0.879198782719773250, -0.879174958863783050, -0.879151132809855460, -0.879127304558050100, +-0.879103474108426490, -0.879079641461044110, -0.879055806615962720, -0.879031969573241700, -0.879008130332940900, -0.878984288895119260, -0.878960445259837300, -0.878936599427154300, +-0.878912751397129770, -0.878888901169823320, -0.878865048745294700, -0.878841194123602950, -0.878817337304808710, -0.878793478288971140, -0.878769617076149760, -0.878745753666404510, +-0.878721888059794680, -0.878698020256380220, -0.878674150256220750, -0.878650278059375900, -0.878626403665904940, -0.878602527075868280, -0.878578648289325410, -0.878554767306335860, +-0.878530884126959450, -0.878506998751255820, -0.878483111179284240, -0.878459221411105330, -0.878435329446778380, -0.878411435286363120, -0.878387538929919160, -0.878363640377506470, +-0.878339739629184660, -0.878315836685013450, -0.878291931545052700, -0.878268024209362010, -0.878244114678001010, -0.878220202951029980, -0.878196289028508550, -0.878172372910496430, +-0.878148454597053260, -0.878124534088238650, -0.878100611384112990, -0.878076686484735910, -0.878052759390167140, -0.878028830100466400, -0.878004898615693640, -0.877980964935908600, +-0.877957029061171120, -0.877933090991541040, -0.877909150727078310, -0.877885208267842330, -0.877861263613893610, -0.877837316765291860, -0.877813367722096730, -0.877789416484368260, +-0.877765463052165740, -0.877741507425550020, -0.877717549604580590, -0.877693589589317200, -0.877669627379819910, -0.877645662976148430, -0.877621696378362850, -0.877597727586523100, +-0.877573756600689040, -0.877549783420920490, -0.877525808047277090, -0.877501830479819670, -0.877477850718607620, -0.877453868763700910, -0.877429884615159580, -0.877405898273043490, +-0.877381909737412150, -0.877357919008326600, -0.877333926085846260, -0.877309930970031070, -0.877285933660940990, -0.877261934158636180, -0.877237932463176500, -0.877213928574621990, +-0.877189922493032630, -0.877165914218468010, -0.877141903750989100, -0.877117891090655410, -0.877093876237526990, -0.877069859191663910, -0.877045839953126130, -0.877021818521973360, +-0.876997794898266460, -0.876973769082065040, -0.876949741073429160, -0.876925710872419000, -0.876901678479094620, -0.876877643893515970, -0.876853607115743230, -0.876829568145836460, +-0.876805526983855720, -0.876781483629860860, -0.876757438083912600, -0.876733390346070780, -0.876709340416395480, -0.876685288294946850, -0.876661233981784640, -0.876637177476969680, +-0.876613118780561810, -0.876589057892621090, -0.876564994813207820, -0.876540929542382050, -0.876516862080203850, -0.876492792426733610, -0.876468720582031290, -0.876444646546157280, +-0.876420570319171200, -0.876396491901134000, -0.876372411292105640, -0.876348328492146390, -0.876324243501316100, -0.876300156319674950, -0.876276066947283770, -0.876251975384202410, +-0.876227881630491150, -0.876203785686210160, -0.876179687551419620, -0.876155587226180030, -0.876131484710551360, -0.876107380004593980, -0.876083273108368200, -0.876059164021933730, +-0.876035052745351870, -0.876010939278682340, -0.875986823621985430, -0.875962705775321540, -0.875938585738750830, -0.875914463512333260, -0.875890339096129900, -0.875866212490200690, +-0.875842083694606030, -0.875817952709406100, -0.875793819534661290, -0.875769684170431990, -0.875745546616778500, -0.875721406873761100, -0.875697264941439730, -0.875673120819875580, +-0.875648974509128710, -0.875624826009259390, -0.875600675320328040, -0.875576522442394920, -0.875552367375520110, -0.875528210119764780, -0.875504050675188990, -0.875479889041853030, +-0.875455725219817290, -0.875431559209142400, -0.875407391009888510, -0.875383220622116040, -0.875359048045885710, -0.875334873281257250, -0.875310696328291950, -0.875286517187050080, +-0.875262335857591830, -0.875238152339977700, -0.875213966634268200, -0.875189778740523390, -0.875165588658804560, -0.875141396389171770, -0.875117201931685520, -0.875093005286406210, +-0.875068806453394350, -0.875044605432710560, -0.875020402224415240, -0.874996196828568880, -0.874971989245232010, -0.874947779474464780, -0.874923567516328490, -0.874899353370883310, +-0.874875137038189750, -0.874850918518308430, -0.874826697811299290, -0.874802474917223850, -0.874778249836142160, -0.874754022568114960, -0.874729793113202650, -0.874705561471465830, +-0.874681327642965130, -0.874657091627761170, -0.874632853425914350, -0.874608613037485490, -0.874584370462534680, -0.874560125701123400, -0.874535878753311740, -0.874511629619160290, +-0.874487378298729910, -0.874463124792081100, -0.874438869099273930, -0.874414611220370120, -0.874390351155429730, -0.874366088904513510, -0.874341824467682050, -0.874317557844995990, +-0.874293289036516040, -0.874269018042302950, -0.874244744862417210, -0.874220469496919230, -0.874196191945870500, -0.874171912209331330, -0.874147630287362310, -0.874123346180024300, +-0.874099059887377790, -0.874074771409483310, -0.874050480746402350, -0.874026187898195080, -0.874001892864922470, -0.873977595646645010, -0.873953296243423660, -0.873928994655319040, +-0.873904690882391870, -0.873880384924702990, -0.873856076782312810, -0.873831766455282820, -0.873807453943673320, -0.873783139247545250, -0.873758822366959450, -0.873734503301976440, +-0.873710182052656830, -0.873685858619062120, -0.873661533001252820, -0.873637205199289670, -0.873612875213233500, -0.873588543043145150, -0.873564208689085460, -0.873539872151115280, +-0.873515533429295330, -0.873491192523686570, -0.873466849434349380, -0.873442504161345610, -0.873418156704735550, -0.873393807064580030, -0.873369455240940010, -0.873345101233875880, +-0.873320745043449480, -0.873296386669721310, -0.873272026112752010, -0.873247663372602730, -0.873223298449334330, -0.873198931343007630, -0.873174562053683600, -0.873150190581423070, +-0.873125816926287210, -0.873101441088336320, -0.873077063067632330, -0.873052682864235540, -0.873028300478207120, -0.873003915909608020, -0.872979529158499080, -0.872955140224940810, +-0.872930749108995260, -0.872906355810722730, -0.872881960330184280, -0.872857562667441080, -0.872833162822553850, -0.872808760795583780, -0.872784356586591700, -0.872759950195638790, +-0.872735541622785660, -0.872711130868094040, -0.872686717931624560, -0.872662302813438260, -0.872637885513596330, -0.872613466032159610, -0.872589044369188830, -0.872564620524745820, +-0.872540194498891310, -0.872515766291686260, -0.872491335903191830, -0.872466903333468990, -0.872442468582579010, -0.872418031650582740, -0.872393592537541450, -0.872369151243515770, +-0.872344707768567650, -0.872320262112757700, -0.872295814276147110, -0.872271364258797030, -0.872246912060768540, -0.872222457682122250, -0.872198001122920340, -0.872173542383223420, +-0.872149081463092560, -0.872124618362589140, -0.872100153081774130, -0.872075685620708580, -0.872051215979454010, -0.872026744158071350, -0.872002270156621790, -0.871977793975166170, +-0.871953315613766430, -0.871928835072483420, -0.871904352351378310, -0.871879867450512380, -0.871855380369946360, -0.871830891109742210, -0.871806399669960990, -0.871781906050663640, +-0.871757410251911560, -0.871732912273766040, -0.871708412116288130, -0.871683909779539250, -0.871659405263580540, -0.871634898568473430, -0.871610389694278510, -0.871585878641058080, +-0.871561365408872970, -0.871536849997784470, -0.871512332407853860, -0.871487812639142320, -0.871463290691710910, -0.871438766565621690, -0.871414240260935610, -0.871389711777713850, +-0.871365181116017800, -0.871340648275908850, -0.871316113257448180, -0.871291576060697290, -0.871267036685717480, -0.871242495132569680, -0.871217951401315970, -0.871193405492017510, +-0.871168857404735490, -0.871144307139531280, -0.871119754696466300, -0.871095200075601590, -0.871070643276999230, -0.871046084300720280, -0.871021523146826130, -0.870996959815378170, +-0.870972394306437800, -0.870947826620066420, -0.870923256756325540, -0.870898684715276540, -0.870874110496980270, -0.870849534101499230, -0.870824955528894380, -0.870800374779227120, +-0.870775791852558930, -0.870751206748951230, -0.870726619468465080, -0.870702030011162860, -0.870677438377105540, -0.870652844566354610, -0.870628248578971590, -0.870603650415017970, +-0.870579050074555270, -0.870554447557644770, -0.870529842864348310, -0.870505235994727180, -0.870480626948842540, -0.870456015726756790, -0.870431402328530890, -0.870406786754226670, +-0.870382169003905300, -0.870357549077628190, -0.870332926975457610, -0.870308302697454740, -0.870283676243681080, -0.870259047614198140, -0.870234416809067770, -0.870209783828351240, +-0.870185148672110280, -0.870160511340406400, -0.870135871833301320, -0.870111230150856120, -0.870086586293133180, -0.870061940260193900, -0.870037292052099680, -0.870012641668912350, +-0.869987989110693300, -0.869963334377503840, -0.869938677469406560, -0.869914018386462540, -0.869889357128733390, -0.869864693696280940, -0.869840028089166830, -0.869815360307452550, +-0.869790690351199820, -0.869766018220470500, -0.869741343915325650, -0.869716667435827870, -0.869691988782038350, -0.869667307954018920, -0.869642624951831200, -0.869617939775537030, +-0.869593252425197470, -0.869568562900875140, -0.869543871202631550, -0.869519177330528190, -0.869494481284626920, -0.869469783064989450, -0.869445082671677530, -0.869420380104752980, +-0.869395675364277310, -0.869370968450312140, -0.869346259362919980, -0.869321548102162110, -0.869296834668100370, -0.869272119060796600, -0.869247401280312530, -0.869222681326709430, +-0.869197959200050160, -0.869173234900396000, -0.869148508427808660, -0.869123779782350110, -0.869099048964082190, -0.869074315973066500, -0.869049580809365120, -0.869024843473039770, +-0.869000103964152280, -0.868975362282764060, -0.868950618428937950, -0.868925872402735220, -0.868901124204217950, -0.868876373833447730, -0.868851621290486210, -0.868826866575395980, +-0.868802109688238680, -0.868777350629076130, -0.868752589397970070, -0.868727825994982660, -0.868703060420175640, -0.868678292673610960, -0.868653522755350570, -0.868628750665456420, +-0.868603976403989900, -0.868579199971013850, -0.868554421366589780, -0.868529640590779750, -0.868504857643645600, -0.868480072525249280, -0.868455285235652300, -0.868430495774917600, +-0.868405704143106690, -0.868380910340281420, -0.868356114366503950, -0.868331316221836240, -0.868306515906340120, -0.868281713420077760, -0.868256908763111120, -0.868232101935501820, +-0.868207292937312690, -0.868182481768605240, -0.868157668429441640, -0.868132852919883960, -0.868108035239994020, -0.868083215389833570, -0.868058393369465550, -0.868033569178951580, +-0.868008742818353610, -0.867983914287733800, -0.867959083587154230, -0.867934250716676960, -0.867909415676364150, -0.867884578466277650, -0.867859739086479290, -0.867834897537032130, +-0.867810053817997580, -0.867785207929438030, -0.867760359871415310, -0.867735509643991820, -0.867710657247229070, -0.867685802681190110, -0.867660945945936680, -0.867636087041530830, +-0.867611225968034860, -0.867586362725510710, -0.867561497314020660, -0.867536629733627000, -0.867511759984391670, -0.867486888066376970, -0.867462013979644510, -0.867437137724257570, +-0.867412259300277770, -0.867387378707767280, -0.867362495946788380, -0.867337611017402700, -0.867312723919673510, -0.867287834653662550, -0.867262943219431980, -0.867238049617044090, +-0.867213153846561060, -0.867188255908045050, -0.867163355801558460, -0.867138453527163460, -0.867113549084922440, -0.867088642474897030, -0.867063733697150400, -0.867038822751744490, +-0.867013909638741480, -0.866988994358203760, -0.866964076910193500, -0.866939157294772670, -0.866914235512004310, -0.866889311561950480, -0.866864385444673260, -0.866839457160235140, +-0.866814526708698300, -0.866789594090125240, -0.866764659304578130, -0.866739722352119380, -0.866714783232810930, -0.866689841946715940, -0.866664898493896270, -0.866639952874414420, +-0.866615005088332670, -0.866590055135713410, -0.866565103016618600, -0.866540148731111510, -0.866515192279254000, -0.866490233661108440, -0.866465272876737470, -0.866440309926203130, +-0.866415344809568170, -0.866390377526894740, -0.866365408078245470, -0.866340436463682080, -0.866315462683268200, -0.866290486737065550, -0.866265508625136740, -0.866240528347544170, +-0.866215545904350240, -0.866190561295617000, -0.866165574521407860, -0.866140585581784750, -0.866115594476810190, -0.866090601206546570, -0.866065605771056510, -0.866040608170402510, +-0.866015608404646860, -0.865990606473852290, -0.865965602378081070, -0.865940596117395490, -0.865915587691858830, -0.865890577101533280, -0.865865564346481210, -0.865840549426765250, +-0.865815532342447570, -0.865790513093591340, -0.865765491680258960, -0.865740468102512820, -0.865715442360415420, -0.865690414454029500, -0.865665384383417560, -0.865640352148642100, +-0.865615317749765740, -0.865590281186851110, -0.865565242459960360, -0.865540201569157010, -0.865515158514503000, -0.865490113296061180, -0.865465065913894160, -0.865440016368064340, +-0.865414964658634100, -0.865389910785666850, -0.865364854749224870, -0.865339796549370770, -0.865314736186167170, -0.865289673659676680, -0.865264608969962050, -0.865239542117085870, +-0.865214473101110880, -0.865189401922099140, -0.865164328580114490, -0.865139253075218880, -0.865114175407475260, -0.865089095576946130, -0.865064013583694340, -0.865038929427782040, +-0.865013843109272870, -0.864988754628229000, -0.864963663984713360, -0.864938571178788470, -0.864913476210517170, -0.864888379079962190, -0.864863279787186360, -0.864838178332252180, +-0.864813074715222170, -0.864787968936159950, -0.864762860995127780, -0.864737750892188520, -0.864712638627404770, -0.864687524200839500, -0.864662407612554970, -0.864637288862614820, +-0.864612167951081420, -0.864587044878017740, -0.864561919643486390, -0.864536792247550200, -0.864511662690272020, -0.864486530971714680, -0.864461397091941030, -0.864436261051014010, +-0.864411122848995680, -0.864385982485950110, -0.864360839961939580, -0.864335695277026920, -0.864310548431275080, -0.864285399424746360, -0.864260248257504580, -0.864235094929612260, +-0.864209939441132110, -0.864184781792127210, -0.864159621982660280, -0.864134460012794370, -0.864109295882592220, -0.864084129592116890, -0.864058961141431210, -0.864033790530597700, +-0.864008617759680080, -0.863983442828741070, -0.863958265737843400, -0.863933086487050030, -0.863907905076423900, -0.863882721506027630, -0.863857535775924950, -0.863832347886178460, +-0.863807157836851140, -0.863781965628005910, -0.863756771259705740, -0.863731574732013560, -0.863706376044992560, -0.863681175198705580, -0.863655972193215330, -0.863630767028585430, +-0.863605559704878620, -0.863580350222158070, -0.863555138580486490, -0.863529924779927180, -0.863504708820542530, -0.863479490702396490, -0.863454270425551900, -0.863429047990071470, +-0.863403823396018510, -0.863378596643455950, -0.863353367732446970, -0.863328136663054520, -0.863302903435341770, -0.863277668049371230, -0.863252430505207060, -0.863227190802911770, +-0.863201948942548420, -0.863176704924180300, -0.863151458747870470, -0.863126210413681430, -0.863100959921677350, -0.863075707271920840, -0.863050452464475200, -0.863025195499403260, +-0.862999936376768420, -0.862974675096633730, -0.862949411659062360, -0.862924146064117490, -0.862898878311862180, -0.862873608402359270, -0.862848336335672710, -0.862823062111865440, +-0.862797785731000410, -0.862772507193140910, -0.862747226498349780, -0.862721943646690970, -0.862696658638227310, -0.862671371473022090, -0.862646082151138360, -0.862620790672639410, +-0.862595497037588530, -0.862570201246048880, -0.862544903298083750, -0.862519603193756310, -0.862494300933129510, -0.862468996516267290, -0.862443689943232620, -0.862418381214088760, +-0.862393070328899000, -0.862367757287725970, -0.862342442090634040, -0.862317124737686070, -0.862291805228945330, -0.862266483564474990, -0.862241159744338460, -0.862215833768599000, +-0.862190505637319910, -0.862165175350564690, -0.862139842908396400, -0.862114508310878210, -0.862089171558074070, -0.862063832650047050, -0.862038491586860410, -0.862013148368577560, +-0.861987802995261900, -0.861962455466976250, -0.861937105783784910, -0.861911753945750810, -0.861886399952937250, -0.861861043805407730, -0.861835685503225650, -0.861810325046454380, +-0.861784962435157230, -0.861759597669397690, -0.861734230749238720, -0.861708861674744590, -0.861683490445978250, -0.861658117063003330, -0.861632741525882980, -0.861607363834680950, +-0.861581983989459840, -0.861556601990284390, -0.861531217837217420, -0.861505831530322340, -0.861480443069662760, -0.861455052455301960, -0.861429659687303560, -0.861404264765731060, +-0.861378867690647860, -0.861353468462117130, -0.861328067080203040, -0.861302663544968870, -0.861277257856478020, -0.861251850014794100, -0.861226440019980500, -0.861201027872100290, +-0.861175613571218080, -0.861150197117396710, -0.861124778510699910, -0.861099357751191170, -0.861073934838934020, -0.861048509773992050, -0.861023082556428790, -0.860997653186307830, +-0.860972221663692690, -0.860946787988646540, -0.860921352161234000, -0.860895914181518010, -0.860870474049562180, -0.860845031765430260, -0.860819587329185180, -0.860794140740891670, +-0.860768692000612900, -0.860743241108412270, -0.860717788064353510, -0.860692332868500330, -0.860666875520916360, -0.860641416021665220, -0.860615954370810510, -0.860590490568415860, +-0.860565024614544540, -0.860539556509261170, -0.860514086252628820, -0.860488613844711310, -0.860463139285572280, -0.860437662575275430, -0.860412183713883950, -0.860386702701462450, +-0.860361219538074210, -0.860335734223782840, -0.860310246758652200, -0.860284757142745990, -0.860259265376127850, -0.860233771458861480, -0.860208275391010750, -0.860182777172638800, +-0.860157276803810490, -0.860131774284588870, -0.860106269615037890, -0.860080762795221280, -0.860055253825202650, -0.860029742705045510, -0.860004229434814470, -0.859978714014572820, +-0.859953196444384280, -0.859927676724312920, -0.859902154854422340, -0.859876630834776280, -0.859851104665438680, -0.859825576346473390, -0.859800045877943670, -0.859774513259914270, +-0.859748978492448580, -0.859723441575610540, -0.859697902509463760, -0.859672361294072320, -0.859646817929499480, -0.859621272415809990, -0.859595724753067450, -0.859570174941335470, +-0.859544622980678130, -0.859519068871159250, -0.859493512612842680, -0.859467954205792360, -0.859442393650072020, -0.859416830945745840, -0.859391266092877080, -0.859365699091530600, +-0.859340129941769890, -0.859314558643658800, -0.859288985197261380, -0.859263409602641030, -0.859237831859862580, -0.859212251968989540, -0.859186669930085970, -0.859161085743215590, +-0.859135499408442580, -0.859109910925830890, -0.859084320295444240, -0.859058727517346910, -0.859033132591602740, -0.859007535518275240, -0.858981936297429470, -0.858956334929128820, +-0.858930731413437230, -0.858905125750419000, -0.858879517940137730, -0.858853907982657370, -0.858828295878042660, -0.858802681626357200, -0.858777065227665060, -0.858751446682030180, +-0.858725825989516740, -0.858700203150188690, -0.858674578164110190, -0.858648951031345310, -0.858623321751957440, -0.858597690326011850, -0.858572056753571950, -0.858546421034701910, +-0.858520783169465900, -0.858495143157927850, -0.858469501000151510, -0.858443856696201930, -0.858418210246142620, -0.858392561650037860, -0.858366910907951700, -0.858341258019948210, +-0.858315602986091550, -0.858289945806445910, -0.858264286481075440, -0.858238625010043780, -0.858212961393416070, -0.858187295631255840, -0.858161627723627470, -0.858135957670595030, +-0.858110285472222570, -0.858084611128574040, -0.858058934639714500, -0.858033256005707570, -0.858007575226617410, -0.857981892302508430, -0.857956207233444680, -0.857930520019490330, +-0.857904830660709770, -0.857879139157167180, -0.857853445508926620, -0.857827749716052130, -0.857802051778608580, -0.857776351696660000, -0.857750649470270470, -0.857724945099504370, +-0.857699238584425430, -0.857673529925098930, -0.857647819121588490, -0.857622106173958510, -0.857596391082273260, -0.857570673846597130, -0.857544954466994300, -0.857519232943528940, +-0.857493509276265660, -0.857467783465268530, -0.857442055510601490, -0.857416325412329820, -0.857390593170517250, -0.857364858785228280, -0.857339122256527200, -0.857313383584478170, +-0.857287642769145370, -0.857261899810593750, -0.857236154708887480, -0.857210407464090830, -0.857184658076268200, -0.857158906545483880, -0.857133152871802250, -0.857107397055287820, +-0.857081639096004880, -0.857055878994017360, -0.857030116749390560, -0.857004352362188530, -0.856978585832475660, -0.856952817160316240, -0.856927046345774770, -0.856901273388915310, +-0.856875498289803140, -0.856849721048502100, -0.856823941665076800, -0.856798160139591650, -0.856772376472111130, -0.856746590662699650, -0.856720802711421700, -0.856695012618341800, +-0.856669220383523890, -0.856643426007033360, -0.856617629488934160, -0.856591830829291020, -0.856566030028168330, -0.856540227085630490, -0.856514422001741660, -0.856488614776567130, +-0.856462805410171170, -0.856436993902618180, -0.856411180253972670, -0.856385364464299250, -0.856359546533662420, -0.856333726462126690, -0.856307904249756670, -0.856282079896616980, +-0.856256253402771450, -0.856230424768285920, -0.856204593993224240, -0.856178761077651010, -0.856152926021630960, -0.856127088825228140, -0.856101249488508080, -0.856075408011534810, +-0.856049564394373070, -0.856023718637087370, -0.855997870739742430, -0.855972020702402860, -0.855946168525133170, -0.855920314207998080, -0.855894457751062210, -0.855868599154389730, +-0.855842738418046150, -0.855816875542095850, -0.855791010526603220, -0.855765143371633120, -0.855739274077250260, -0.855713402643518580, -0.855687529070504050, -0.855661653358270600, +-0.855635775506882970, -0.855609895516405980, -0.855584013386904150, -0.855558129118442310, -0.855532242711085190, -0.855506354164897510, -0.855480463479943440, -0.855454570656288720, +-0.855428675693997500, -0.855402778593134630, -0.855376879353764720, -0.855350977975952720, -0.855325074459762800, -0.855299168805260690, -0.855273261012510560, -0.855247351081577340, +-0.855221439012525670, -0.855195524805420490, -0.855169608460326520, -0.855143689977308500, -0.855117769356431250, -0.855091846597759050, -0.855065921701357760, -0.855039994667291640, +-0.855014065495625530, -0.854988134186424280, -0.854962200739752710, -0.854936265155675110, -0.854910327434257430, -0.854884387575563840, -0.854858445579659290, -0.854832501446608610, +-0.854806555176476750, -0.854780606769328430, -0.854754656225228620, -0.854728703544242130, -0.854702748726433930, -0.854676791771868390, -0.854650832680611370, -0.854624871452727140, +-0.854598908088280870, -0.854572942587337290, -0.854546974949960900, -0.854521005176217540, -0.854495033266171600, -0.854469059219888140, -0.854443083037431990, -0.854417104718868110, +-0.854391124264261560, -0.854365141673677160, -0.854339156947179880, -0.854313170084834760, -0.854287181086706200, -0.854261189952860160, -0.854235196683361230, -0.854209201278274160, +-0.854183203737664210, -0.854157204061596230, -0.854131202250134720, -0.854105198303345750, -0.854079192221293690, -0.854053184004043730, -0.854027173651660700, -0.854001161164209880, +-0.853975146541756100, -0.853949129784364440, -0.853923110892099930, -0.853897089865027210, -0.853871066703212220, -0.853845041406719570, -0.853819013975614330, -0.853792984409961540, +-0.853766952709826280, -0.853740918875273260, -0.853714882906368320, -0.853688844803176190, -0.853662804565761930, -0.853636762194190600, -0.853610717688527480, -0.853584671048837510, +-0.853558622275185860, -0.853532571367637720, -0.853506518326257680, -0.853480463151111700, -0.853454405842264730, -0.853428346399781600, -0.853402284823727600, -0.853376221114168000, +-0.853350155271167310, -0.853324087294791700, -0.853298017185105890, -0.853271944942175060, -0.853245870566064380, -0.853219794056838900, -0.853193715414564010, -0.853167634639304890, +-0.853141551731126600, -0.853115466690094530, -0.853089379516273280, -0.853063290209729040, -0.853037198770526530, -0.853011105198731020, -0.852985009494407810, -0.852958911657621610, +-0.852932811688438600, -0.852906709586923490, -0.852880605353141700, -0.852854498987158370, -0.852828390489038690, -0.852802279858848160, -0.852776167096651940, -0.852750052202515210, +-0.852723935176503360, -0.852697816018681220, -0.852671694729115080, -0.852645571307869670, -0.852619445755010250, -0.852593318070602350, -0.852567188254711010, -0.852541056307401290, +-0.852514922228739480, -0.852488786018790300, -0.852462647677619150, -0.852436507205291400, -0.852410364601872360, -0.852384219867427410, -0.852358073002021930, -0.852331924005721220, +-0.852305772878590220, -0.852279619620695320, -0.852253464232101350, -0.852227306712873720, -0.852201147063077810, -0.852174985282779130, -0.852148821372042400, -0.852122655330934120, +-0.852096487159519240, -0.852070316857863050, -0.852044144426031160, -0.852017969864088840, -0.851991793172101610, -0.851965614350134960, -0.851939433398254290, -0.851913250316524430, +-0.851887065105012000, -0.851860877763781940, -0.851834688292899660, -0.851808496692430640, -0.851782302962440400, -0.851756107102993880, -0.851729909114157690, -0.851703708995996570, +-0.851677506748576230, -0.851651302371962180, -0.851625095866219820, -0.851598887231414750, -0.851572676467612480, -0.851546463574878510, -0.851520248553278350, -0.851494031402877050, +-0.851467812123741230, -0.851441590715935840, -0.851415367179526480, -0.851389141514578780, -0.851362913721157690, -0.851336683799329700, -0.851310451749160090, -0.851284217570714370, +-0.851257981264058050, -0.851231742829256840, -0.851205502266376260, -0.851179259575481910, -0.851153014756639400, -0.851126767809914360, -0.851100518735371960, -0.851074267533078690, +-0.851048014203099720, -0.851021758745500790, -0.850995501160347390, -0.850969241447705360, -0.850942979607639650, -0.850916715640216980, -0.850890449545502530, -0.850864181323562010, +-0.850837910974460930, -0.850811638498265130, -0.850785363895040230, -0.850759087164851930, -0.850732808307765880, -0.850706527323847440, -0.850680244213163020, -0.850653958975778110, +-0.850627671611758230, -0.850601382121169090, -0.850575090504076650, -0.850548796760545960, -0.850522500890643740, -0.850496202894435280, -0.850469902771986310, -0.850443600523362540, +-0.850417296148629820, -0.850390989647853870, -0.850364681021100410, -0.850338370268435280, -0.850312057389923660, -0.850285742385632480, -0.850259425255626920, -0.850233105999972700, +-0.850206784618735890, -0.850180461111981980, -0.850154135479776470, -0.850127807722186210, -0.850101477839276250, -0.850075145831112770, -0.850048811697761250, -0.850022475439287880, +-0.849996137055758160, -0.849969796547238250, -0.849943453913793780, -0.849917109155490570, -0.849890762272394240, -0.849864413264571410, -0.849838062132087570, -0.849811708875008680, +-0.849785353493400450, -0.849758995987328290, -0.849732636356859140, -0.849706274602058500, -0.849679910722992090, -0.849653544719725870, -0.849627176592325890, -0.849600806340857880, +-0.849574433965387900, -0.849548059465981780, -0.849521682842705570, -0.849495304095624680, -0.849468923224805940, -0.849442540230314960, -0.849416155112217570, -0.849389767870579850, +-0.849363378505467730, -0.849336987016946600, -0.849310593405083520, -0.849284197669944010, -0.849257799811593990, -0.849231399830099430, -0.849204997725526380, -0.849178593497940780, +-0.849152187147408810, -0.849125778673996300, -0.849099368077768870, -0.849072955358793570, -0.849046540517135790, -0.849020123552861720, -0.848993704466037280, -0.848967283256728660, +-0.848940859925001230, -0.848914434470922300, -0.848888006894557120, -0.848861577195971990, -0.848835145375232970, -0.848808711432405990, -0.848782275367557350, -0.848755837180752870, +-0.848729396872058950, -0.848702954441540980, -0.848676509889266130, -0.848650063215300010, -0.848623614419708680, -0.848597163502558320, -0.848570710463915080, -0.848544255303844590, +-0.848517798022413890, -0.848491338619688840, -0.848464877095735260, -0.848438413450619660, -0.848411947684407860, -0.848385479797166280, -0.848359009788961060, -0.848332537659858170, +-0.848306063409923980, -0.848279587039224240, -0.848253108547825980, -0.848226627935794950, -0.848200145203197310, -0.848173660350099330, -0.848147173376566640, -0.848120684282666630, +-0.848094193068464790, -0.848067699734027620, -0.848041204279421090, -0.848014706704711570, -0.847988207009965240, -0.847961705195248490, -0.847935201260627380, -0.847908695206168290, +-0.847882187031937070, -0.847855676738000770, -0.847829164324425340, -0.847802649791276950, -0.847776133138621880, -0.847749614366526070, -0.847723093475056700, -0.847696570464279710, +-0.847670045334261160, -0.847643518085067550, -0.847616988716765050, -0.847590457229420170, -0.847563923623099070, -0.847537387897868260, -0.847510850053793900, -0.847484310090942050, +-0.847457768009379770, -0.847431223809173130, -0.847404677490388390, -0.847378129053091960, -0.847351578497350320, -0.847325025823229220, -0.847298471030795920, -0.847271914120116490, +-0.847245355091257310, -0.847218793944284790, -0.847192230679265190, -0.847165665296265020, -0.847139097795350790, -0.847112528176588660, -0.847085956440044920, -0.847059382585786610, +-0.847032806613879920, -0.847006228524391220, -0.846979648317386810, -0.846953065992933410, -0.846926481551096840, -0.846899894991944620, -0.846873306315542580, -0.846846715521957340, +-0.846820122611255170, -0.846793527583502790, -0.846766930438766610, -0.846740331177113110, -0.846713729798608710, -0.846687126303319990, -0.846660520691313030, -0.846633912962655220, +-0.846607303117412720, -0.846580691155651820, -0.846554077077439240, -0.846527460882841030, -0.846500842571924710, -0.846474222144756210, -0.846447599601402030, -0.846420974941929030, +-0.846394348166403470, -0.846367719274892070, -0.846341088267461460, -0.846314455144178020, -0.846287819905108480, -0.846261182550319010, -0.846234543079876890, -0.846207901493848500, +-0.846181257792300360, -0.846154611975299060, -0.846127964042910800, -0.846101313995203050, -0.846074661832242110, -0.846048007554094370, -0.846021351160826660, -0.845994692652505710, +-0.845968032029197900, -0.845941369290969970, -0.845914704437888740, -0.845888037470020620, -0.845861368387431980, -0.845834697190190440, -0.845808023878362070, -0.845781348452013690, +-0.845754670911212040, -0.845727991256023600, -0.845701309486514670, -0.845674625602753080, -0.845647939604804780, -0.845621251492736700, -0.845594561266615470, -0.845567868926507930, +-0.845541174472480560, -0.845514477904600440, -0.845487779222933940, -0.845461078427547590, -0.845434375518509080, -0.845407670495884610, -0.845380963359740890, -0.845354254110144750, +-0.845327542747163040, -0.845300829270862030, -0.845274113681309450, -0.845247395978571460, -0.845220676162715010, -0.845193954233806940, -0.845167230191913980, -0.845140504037102840, +-0.845113775769440580, -0.845087045388993820, -0.845060312895828950, -0.845033578290013800, -0.845006841571614650, -0.844980102740698460, -0.844953361797331940, -0.844926618741582150, +-0.844899873573515150, -0.844873126293199110, -0.844846376900700190, -0.844819625396085350, -0.844792871779421420, -0.844766116050775340, -0.844739358210213950, -0.844712598257804090, +-0.844685836193612820, -0.844659072017706960, -0.844632305730152910, -0.844605537331018620, -0.844578766820370470, -0.844551994198275420, -0.844525219464800300, -0.844498442620011720, +-0.844471663663977520, -0.844444882596764200, -0.844418099418438590, -0.844391314129067760, -0.844364526728718650, -0.844337737217458200, -0.844310945595353470, -0.844284151862471300, +-0.844257356018878860, -0.844230558064642420, -0.844203757999830160, -0.844176955824508470, -0.844150151538744400, -0.844123345142604900, -0.844096536636157020, -0.844069726019467390, +-0.844042913292603950, -0.844016098455633190, -0.843989281508622180, -0.843962462451637970, -0.843935641284747630, -0.843908818008018090, -0.843881992621516640, -0.843855165125310110, +-0.843828335519465230, -0.843801503804050060, -0.843774669979130980, -0.843747834044775270, -0.843720996001050110, -0.843694155848022320, -0.843667313585758750, -0.843640469214327230, +-0.843613622733794700, -0.843586774144228000, -0.843559923445694420, -0.843533070638261000, -0.843506215721994910, -0.843479358696963330, -0.843452499563233320, -0.843425638320871580, +-0.843398774969946310, -0.843371909510523990, -0.843345041942671900, -0.843318172266457220, -0.843291300481947110, -0.843264426589208300, -0.843237550588308960, -0.843210672479315580, +-0.843183792262295670, -0.843156909937316180, -0.843130025504444490, -0.843103138963747670, -0.843076250315292990, -0.843049359559147730, -0.843022466695379060, -0.842995571724053820, +-0.842968674645240060, -0.842941775459004620, -0.842914874165414770, -0.842887970764537700, -0.842861065256440220, -0.842834157641190520, -0.842807247918855530, -0.842780336089502310, +-0.842753422153198370, -0.842726506110010760, -0.842699587960006990, -0.842672667703254110, -0.842645745339819730, -0.842618820869770910, -0.842591894293174490, -0.842564965610098860, +-0.842538034820610850, -0.842511101924777740, -0.842484166922666920, -0.842457229814345570, -0.842430290599880730, -0.842403349279340690, -0.842376405852792160, -0.842349460320302780, +-0.842322512681939580, -0.842295562937770190, -0.842268611087861880, -0.842241657132282050, -0.842214701071098080, -0.842187742904376920, -0.842160782632186740, -0.842133820254594710, +-0.842106855771668110, -0.842079889183474430, -0.842052920490080960, -0.842025949691554750, -0.841998976787964090, -0.841972001779376030, -0.841945024665857970, -0.841918045447477280, +-0.841891064124301590, -0.841864080696398060, -0.841837095163834540, -0.841810107526678180, -0.841783117784996040, -0.841756125938856630, -0.841729131988326880, -0.841702135933474320, +-0.841675137774366420, -0.841648137511070700, -0.841621135143654220, -0.841594130672185250, -0.841567124096730960, -0.841540115417358960, -0.841513104634136640, -0.841486091747131510, +-0.841459076756411180, -0.841432059662043150, -0.841405040464094920, -0.841378019162633660, -0.841350995757727870, -0.841323970249444610, -0.841296942637851260, -0.841269912923015670, +-0.841242881105005340, -0.841215847183887750, -0.841188811159730100, -0.841161773032600870, -0.841134732802567230, -0.841107690469696690, -0.841080646034056970, -0.841053599495715680, +-0.841026550854740430, -0.840999500111198620, -0.840972447265157740, -0.840945392316686190, -0.840918335265851140, -0.840891276112720190, -0.840864214857361180, -0.840837151499841510, +-0.840810086040229000, -0.840783018478590830, -0.840755948814995600, -0.840728877049510490, -0.840701803182203110, -0.840674727213141290, -0.840647649142392650, -0.840620568970024910, +-0.840593486696105780, -0.840566402320702790, -0.840539315843883420, -0.840512227265716280, -0.840485136586268440, -0.840458043805607850, -0.840430948923802210, -0.840403851940919040, +-0.840376752857025840, -0.840349651672191330, -0.840322548386482570, -0.840295442999967500, -0.840268335512713740, -0.840241225924789230, -0.840214114236261580, -0.840187000447198740, +-0.840159884557668320, -0.840132766567737720, -0.840105646477475650, -0.840078524286949620, -0.840051399996227130, -0.840024273605376240, -0.839997145114464550, -0.839970014523560020, +-0.839942881832730030, -0.839915747042043300, -0.839888610151567240, -0.839861471161369670, -0.839834330071518310, -0.839807186882081220, -0.839780041593126140, -0.839752894204720880, +-0.839725744716932950, -0.839698593129831190, -0.839671439443482880, -0.839644283657956070, -0.839617125773318480, -0.839589965789638070, -0.839562803706982770, -0.839535639525419990, +-0.839508473245018540, -0.839481304865845930, -0.839454134387970120, -0.839426961811458930, -0.839399787136380300, -0.839372610362802200, -0.839345431490792660, -0.839318250520418970, +-0.839291067451750190, -0.839263882284853710, -0.839236695019797590, -0.839209505656649650, -0.839182314195477950, -0.839155120636350560, -0.839127924979334750, -0.839100727224499690, +-0.839073527371912760, -0.839046325421642040, -0.839019121373755560, -0.838991915228321280, -0.838964706985407150, -0.838937496645081220, -0.838910284207411650, -0.838883069672465840, +-0.838855853040312850, -0.838828634311020170, -0.838801413484655980, -0.838774190561288210, -0.838746965540985050, -0.838719738423813870, -0.838692509209843840, -0.838665277899142580, +-0.838638044491778150, -0.838610808987818590, -0.838583571387331970, -0.838556331690386460, -0.838529089897050110, -0.838501846007391080, -0.838474600021476890, -0.838447351939376690, +-0.838420101761158220, -0.838392849486889410, -0.838365595116638440, -0.838338338650473470, -0.838311080088462780, -0.838283819430673760, -0.838256556677175800, -0.838229291828036290, +-0.838202024883323740, -0.838174755843105970, -0.838147484707451370, -0.838120211476428120, -0.838092936150104270, -0.838065658728547660, -0.838038379211827330, -0.838011097600011020, +-0.837983813893167010, -0.837956528091363450, -0.837929240194668630, -0.837901950203150610, -0.837874658116877340, -0.837847363935917850, -0.837820067660339900, -0.837792769290211960, +-0.837765468825601880, -0.837738166266578270, -0.837710861613209180, -0.837683554865563010, -0.837656246023707360, -0.837628935087711630, -0.837601622057643550, -0.837574306933571490, +-0.837546989715563630, -0.837519670403688240, -0.837492348998013720, -0.837465025498607800, -0.837437699905539850, -0.837410372218877600, -0.837383042438689440, -0.837355710565043650, +-0.837328376598008630, -0.837301040537652640, -0.837273702384044080, -0.837246362137251340, -0.837219019797342030, -0.837191675364385770, -0.837164328838450380, -0.837136980219604030, +-0.837109629507915340, -0.837082276703452480, -0.837054921806283490, -0.837027564816477660, -0.837000205734102940, -0.836972844559227710, -0.836945481291920370, -0.836918115932249300, +-0.836890748480283000, -0.836863378936089750, -0.836836007299738170, -0.836808633571295980, -0.836781257750832670, -0.836753879838416310, -0.836726499834115180, -0.836699117737997880, +-0.836671733550132690, -0.836644347270588230, -0.836616958899432440, -0.836589568436734710, -0.836562175882562990, -0.836534781236985880, -0.836507384500071890, -0.836479985671889300, +-0.836452584752506830, -0.836425181741992870, -0.836397776640415590, -0.836370369447844150, -0.836342960164346950, -0.836315548789992260, -0.836288135324848800, -0.836260719768984860, +-0.836233302122469160, -0.836205882385369750, -0.836178460557756130, -0.836151036639696370, -0.836123610631259060, -0.836096182532512610, -0.836068752343525730, -0.836041320064367040, +-0.836013885695105040, -0.835986449235807780, -0.835959010686544880, -0.835931570047384500, -0.835904127318395250, -0.835876682499645530, -0.835849235591204160, -0.835821786593139770, +-0.835794335505520400, -0.835766882328415670, -0.835739427061893750, -0.835711969706023240, -0.835684510260872760, -0.835657048726511140, -0.835629585103006780, -0.835602119390428500, +-0.835574651588844920, -0.835547181698324200, -0.835519709718935970, -0.835492235650748590, -0.835464759493830480, -0.835437281248250560, -0.835409800914077460, -0.835382318491379340, +-0.835354833980225920, -0.835327347380685370, -0.835299858692826520, -0.835272367916717990, -0.835244875052428500, -0.835217380100026880, -0.835189883059581750, -0.835162383931162040, +-0.835134882714835710, -0.835107379410672810, -0.835079874018741400, -0.835052366539110300, -0.835024856971848250, -0.834997345317024080, -0.834969831574706610, -0.834942315744964030, +-0.834914797827866150, -0.834887277823481270, -0.834859755731878210, -0.834832231553125800, -0.834804705287292670, -0.834777176934447970, -0.834749646494660210, -0.834722113967997890, +-0.834694579354530730, -0.834667042654327120, -0.834639503867455890, -0.834611962993985990, -0.834584420033986140, -0.834556874987525180, -0.834529327854671600, -0.834501778635495130, +-0.834474227330064270, -0.834446673938447850, -0.834419118460714700, -0.834391560896933780, -0.834364001247174030, -0.834336439511504270, -0.834308875689992790, -0.834281309782709650, +-0.834253741789723340, -0.834226171711102580, -0.834198599546916440, -0.834171025297233750, -0.834143448962123560, -0.834115870541654260, -0.834088290035895690, -0.834060707444916450, +-0.834033122768785380, -0.834005536007571660, -0.833977947161343990, -0.833950356230171440, -0.833922763214123060, -0.833895168113267690, -0.833867570927673940, -0.833839971657411750, +-0.833812370302549730, -0.833784766863156720, -0.833757161339301780, -0.833729553731053840, -0.833701944038481630, -0.833674332261655100, -0.833646718400642640, -0.833619102455513410, +-0.833591484426336460, -0.833563864313180860, -0.833536242116115430, -0.833508617835209460, -0.833480991470532010, -0.833453363022151560, -0.833425732490138180, -0.833398099874560480, +-0.833370465175487520, -0.833342828392988340, -0.833315189527132240, -0.833287548577987590, -0.833259905545624570, -0.833232260430111780, -0.833204613231518290, -0.833176963949913360, +-0.833149312585365950, -0.833121659137945230, -0.833094003607720460, -0.833066345994760590, -0.833038686299134470, -0.833011024520912020, -0.832983360660162100, -0.832955694716953630, +-0.832928026691356130, -0.832900356583438420, -0.832872684393269890, -0.832845010120919050, -0.832817333766456280, -0.832789655329950200, -0.832761974811469850, -0.832734292211084750, +-0.832706607528863720, -0.832678920764876370, -0.832651231919191550, -0.832623540991878190, -0.832595847983006570, -0.832568152892645190, -0.832540455720863550, -0.832512756467730710, +-0.832485055133316050, -0.832457351717688640, -0.832429646220917420, -0.832401938643072550, -0.832374228984222860, -0.832346517244437640, -0.832318803423786060, -0.832291087522337490, +-0.832263369540161220, -0.832235649477326530, -0.832207927333902700, -0.832180203109958550, -0.832152476805564370, -0.832124748420788980, -0.832097017955701790, -0.832069285410372060, +-0.832041550784869080, -0.832013814079261670, -0.831986075293620340, -0.831958334428013700, -0.831930591482511360, -0.831902846457182490, -0.831875099352096470, -0.831847350167322700, +-0.831819598902930560, -0.831791845558989440, -0.831764090135568180, -0.831736332632737270, -0.831708573050565450, -0.831680811389122200, -0.831653047648476920, -0.831625281828699100, +-0.831597513929857480, -0.831569743952022660, -0.831541971895263470, -0.831514197759649300, -0.831486421545249650, -0.831458643252133920, -0.831430862880371600, -0.831403080430032190, +-0.831375295901184970, -0.831347509293899110, -0.831319720608244880, -0.831291929844291460, -0.831264137002108110, -0.831236342081764450, -0.831208545083329970, -0.831180746006874080, +-0.831152944852465940, -0.831125141620175810, -0.831097336310072880, -0.831069528922226630, -0.831041719456706460, -0.831013907913582090, -0.830986094292922920, -0.830958278594798540, +-0.830930460819277910, -0.830902640966431630, -0.830874819036328870, -0.830846995029038910, -0.830819168944631480, -0.830791340783176180, -0.830763510544742510, -0.830735678229399640, +-0.830707843837217960, -0.830680007368266750, -0.830652168822615500, -0.830624328200333830, -0.830596485501491340, -0.830568640726157550, -0.830540793874402270, -0.830512944946295020, +-0.830485093941904840, -0.830457240861302460, -0.830429385704556930, -0.830401528471737980, -0.830373669162915220, -0.830345807778158250, -0.830317944317536250, -0.830290078781119930, +-0.830262211168978360, -0.830234341481181250, -0.830206469717798430, -0.830178595878899310, -0.830150719964553700, -0.830122841974831330, -0.830094961909801920, -0.830067079769534530, +-0.830039195554099880, -0.830011309263567370, -0.829983420898006470, -0.829955530457487160, -0.829927637942078910, -0.829899743351851020, -0.829871846686874410, -0.829843947947218050, +-0.829816047132951980, -0.829788144244145710, -0.829760239280869060, -0.829732332243191760, -0.829704423131183750, -0.829676511944914650, -0.829648598684453730, -0.829620683349871820, +-0.829592765941238210, -0.829564846458622720, -0.829536924902095070, -0.829509001271725110, -0.829481075567582660, -0.829453147789737000, -0.829425217938258960, -0.829397286013217940, +-0.829369352014683650, -0.829341415942726030, -0.829313477797414820, -0.829285537578819950, -0.829257595287011260, -0.829229650922058030, -0.829201704484031190, -0.829173755973000140, +-0.829145805389034600, -0.829117852732204620, -0.829089898002579930, -0.829061941200230580, -0.829033982325225850, -0.829006021377636680, -0.828978058357532350, -0.828950093264983030, +-0.828922126100058440, -0.828894156862828520, -0.828866185553363110, -0.828838212171732370, -0.828810236718006020, -0.828782259192253680, -0.828754279594546060, -0.828726297924952780, +-0.828698314183543780, -0.828670328370389010, -0.828642340485558400, -0.828614350529121470, -0.828586358501149150, -0.828558364401710930, -0.828530368230876780, -0.828502369988716740, +-0.828474369675300750, -0.828446367290698870, -0.828418362834981050, -0.828390356308217330, -0.828362347710477120, -0.828334337041831680, -0.828306324302350290, -0.828278309492103240, +-0.828250292611160340, -0.828222273659591670, -0.828194252637466820, -0.828166229544856860, -0.828138204381831280, -0.828110177148460250, -0.828082147844813820, -0.828054116470961940, +-0.828026083026974780, -0.827998047512922390, -0.827970009928874930, -0.827941970274901910, -0.827913928551074490, -0.827885884757462280, -0.827857838894135330, -0.827829790961163710, +-0.827801740958617690, -0.827773688886567330, -0.827745634745082230, -0.827717578534233560, -0.827689520254090930, -0.827661459904724510, -0.827633397486204460, -0.827605332998600840, +-0.827577266441983930, -0.827549197816423890, -0.827521127121990330, -0.827493054358754420, -0.827464979526785880, -0.827436902626154880, -0.827408823656931690, -0.827380742619186370, +-0.827352659512989200, -0.827324574338409890, -0.827296487095519730, -0.827268397784388210, -0.827240306405085830, -0.827212212957682660, -0.827184117442248850, -0.827156019858854900, +-0.827127920207570750, -0.827099818488466370, -0.827071714701613000, -0.827043608847080280, -0.827015500924938580, -0.826987390935258080, -0.826959278878109050, -0.826931164753561990, +-0.826903048561686390, -0.826874930302553660, -0.826846809976233720, -0.826818687582796640, -0.826790563122312920, -0.826762436594852710, -0.826734308000486420, -0.826706177339284420, +-0.826678044611317000, -0.826649909816653870, -0.826621772955366540, -0.826593634027524730, -0.826565493033198930, -0.826537349972459310, -0.826509204845376270, -0.826481057652019850, +-0.826452908392461220, -0.826424757066770320, -0.826396603675017440, -0.826368448217273180, -0.826340290693607700, -0.826312131104091630, -0.826283969448795120, -0.826255805727788780, +-0.826227639941142340, -0.826199472088927300, -0.826171302171213600, -0.826143130188071620, -0.826114956139571870, -0.826086780025784730, -0.826058601846780590, -0.826030421602629520, +-0.826002239293402770, -0.825974054919170530, -0.825945868480003180, -0.825917679975971100, -0.825889489407144790, -0.825861296773594770, -0.825833102075391510, -0.825804905312605090, +-0.825776706485306770, -0.825748505593566720, -0.825720302637455440, -0.825692097617043430, -0.825663890532401190, -0.825635681383599110, -0.825607470170707460, -0.825579256893797520, +-0.825551041552939460, -0.825522824148203880, -0.825494604679661180, -0.825466383147381970, -0.825438159551436850, -0.825409933891896210, -0.825381706168830330, -0.825353476382310710, +-0.825325244532407300, -0.825297010619190810, -0.825268774642731850, -0.825240536603100930, -0.825212296500368650, -0.825184054334605180, -0.825155810105882010, -0.825127563814269330, +-0.825099315459837720, -0.825071065042657930, -0.825042812562800320, -0.825014558020335850, -0.824986301415334910, -0.824958042747868100, -0.824929782018005820, -0.824901519225819560, +-0.824873254371379480, -0.824844987454756320, -0.824816718476020670, -0.824788447435243150, -0.824760174332494040, -0.824731899167845060, -0.824703621941366260, -0.824675342653128470, +-0.824647061303202310, -0.824618777891658490, -0.824590492418567740, -0.824562204884000670, -0.824533915288028220, -0.824505623630720330, -0.824477329912148950, -0.824449034132384350, +-0.824420736291497040, -0.824392436389557950, -0.824364134426637700, -0.824335830402807220, -0.824307524318136590, -0.824279216172697620, -0.824250905966560700, -0.824222593699796450, +-0.824194279372475690, -0.824165962984669380, -0.824137644536448000, -0.824109324027882620, -0.824081001459043390, -0.824052676830002050, -0.824024350140829200, -0.823996021391595330, +-0.823967690582371510, -0.823939357713228350, -0.823911022784236890, -0.823882685795467420, -0.823854346746991650, -0.823826005638879980, -0.823797662471203340, -0.823769317244032570, +-0.823740969957438510, -0.823712620611491970, -0.823684269206264030, -0.823655915741824730, -0.823627560218246240, -0.823599202635598830, -0.823570842993953330, -0.823542481293380810, +-0.823514117533952090, -0.823485751715738120, -0.823457383838809180, -0.823429013903237310, -0.823400641909092900, -0.823372267856446900, -0.823343891745370260, -0.823315513575933800, +-0.823287133348208690, -0.823258751062265650, -0.823230366718175730, -0.823201980316009440, -0.823173591855838720, -0.823145201337733940, -0.823116808761766180, -0.823088414128006370, +-0.823060017436525570, -0.823031618687394270, -0.823003217880684420, -0.822974815016466410, -0.822946410094811510, -0.822918003115790440, -0.822889594079474480, -0.822861182985934470, +-0.822832769835241560, -0.822804354627466710, -0.822775937362680400, -0.822747518040954810, -0.822719096662360430, -0.822690673226968320, -0.822662247734849420, -0.822633820186075000, +-0.822605390580716020, -0.822576958918843080, -0.822548525200528240, -0.822520089425842090, -0.822491651594855710, -0.822463211707640140, -0.822434769764266550, -0.822406325764806100, +-0.822377879709329850, -0.822349431597908300, -0.822320981430613720, -0.822292529207516720, -0.822264074928688360, -0.822235618594199910, -0.822207160204122320, -0.822178699758526750, +-0.822150237257484040, -0.822121772701066230, -0.822093306089344060, -0.822064837422388450, -0.822036366700270920, -0.822007893923062390, -0.821979419090834160, -0.821950942203657280, +-0.821922463261602680, -0.821893982264742310, -0.821865499213147110, -0.821837014106888030, -0.821808526946036460, -0.821780037730663550, -0.821751546460840700, -0.821723053136638290, +-0.821694557758128830, -0.821666060325383030, -0.821637560838471950, -0.821609059297467080, -0.821580555702439490, -0.821552050053460550, -0.821523542350601430, -0.821495032593933530, +-0.821466520783527550, -0.821438006919455790, -0.821409491001788950, -0.821380973030598320, -0.821352453005955390, -0.821323930927931210, -0.821295406796596850, -0.821266880612024350, +-0.821238352374284660, -0.821209822083449170, -0.821181289739589040, -0.821152755342775760, -0.821124218893080520, -0.821095680390574790, -0.821067139835329750, -0.821038597227416460, +-0.821010052566907180, -0.820981505853872750, -0.820952957088384560, -0.820924406270514000, -0.820895853400332330, -0.820867298477911180, -0.820838741503321150, -0.820810182476634840, +-0.820781621397922990, -0.820753058267257200, -0.820724493084708740, -0.820695925850349010, -0.820667356564249490, -0.820638785226481480, -0.820610211837116130, -0.820581636396225720, +-0.820553058903881190, -0.820524479360154050, -0.820495897765115670, -0.820467314118837550, -0.820438728421391210, -0.820410140672847450, -0.820381550873279020, -0.820352959022756510, +-0.820324365121351650, -0.820295769169135940, -0.820267171166180750, -0.820238571112557710, -0.820209969008338200, -0.820181364853593280, -0.820152758648395430, -0.820124150392815610, +-0.820095540086925530, -0.820066927730796590, -0.820038313324500280, -0.820009696868108210, -0.819981078361691430, -0.819952457805322330, -0.819923835199072190, -0.819895210543012510, +-0.819866583837214670, -0.819837955081750500, -0.819809324276691400, -0.819780691422108960, -0.819752056518074810, -0.819723419564659990, -0.819694780561937120, -0.819666139509977350, +-0.819637496408852200, -0.819608851258633360, -0.819580204059392250, -0.819551554811200230, -0.819522903514129820, -0.819494250168252170, -0.819465594773638890, -0.819436937330361600, +-0.819408277838492020, -0.819379616298101740, -0.819350952709262390, -0.819322287072045690, -0.819293619386522680, -0.819264949652766190, -0.819236277870847300, -0.819207604040837700, +-0.819178928162809130, -0.819150250236833190, -0.819121570262981710, -0.819092888241325760, -0.819064204171938040, -0.819035518054889940, -0.819006829890252970, -0.818978139678098960, +-0.818949447418499510, -0.818920753111526460, -0.818892056757251630, -0.818863358355746080, -0.818834657907082650, -0.818805955411332500, -0.818777250868567560, -0.818748544278859460, +-0.818719835642280010, -0.818691124958900950, -0.818662412228793660, -0.818633697452030740, -0.818604980628683590, -0.818576261758824030, -0.818547540842523790, -0.818518817879854700, +-0.818490092870888590, -0.818461365815697170, -0.818432636714351960, -0.818403905566925550, -0.818375172373489450, -0.818346437134115370, -0.818317699848875260, -0.818288960517840840, +-0.818260219141084040, -0.818231475718676160, -0.818202730250690120, -0.818173982737197210, -0.818145233178269480, -0.818116481573978540, -0.818087727924396440, -0.818058972229595010, +-0.818030214489646190, -0.818001454704621820, -0.817972692874593290, -0.817943928999633530, -0.817915163079813930, -0.817886395115206440, -0.817857625105882890, -0.817828853051915440, +-0.817800078953375250, -0.817771302810335390, -0.817742524622867230, -0.817713744391042830, -0.817684962114934020, -0.817656177794612750, -0.817627391430151170, -0.817598603021621020, +-0.817569812569094450, -0.817541020072642730, -0.817512225532339040, -0.817483428948254760, -0.817454630320461950, -0.817425829649032430, -0.817397026934038480, -0.817368222175551940, +-0.817339415373644300, -0.817310606528388610, -0.817281795639856480, -0.817252982708119860, -0.817224167733250680, -0.817195350715321120, -0.817166531654403230, -0.817137710550569050, +-0.817108887403889980, -0.817080062214439180, -0.817051234982288380, -0.817022405707509390, -0.816993574390174390, -0.816964741030355430, -0.816935905628124680, -0.816907068183553630, +-0.816878228696715450, -0.816849387167681630, -0.816820543596524340, -0.816791697983315750, -0.816762850328127900, -0.816734000631032960, -0.816705148892102990, -0.816676295111409600, +-0.816647439289026060, -0.816618581425023860, -0.816589721519475180, -0.816560859572452280, -0.816531995584027230, -0.816503129554272070, -0.816474261483258630, -0.816445391371060090, +-0.816416519217748050, -0.816387645023394780, -0.816358768788072340, -0.816329890511852900, -0.816301010194808830, -0.816272127837012200, -0.816243243438535270, -0.816214356999449770, +-0.816185468519828870, -0.816156577999744170, -0.816127685439268170, -0.816098790838472920, -0.816069894197430590, -0.816040995516213120, -0.816012094794893670, -0.815983192033543970, +-0.815954287232236290, -0.815925380391042900, -0.815896471510036080, -0.815867560589288000, -0.815838647628871150, -0.815809732628857590, -0.815780815589319140, -0.815751896510329200, +-0.815722975391959590, -0.815694052234282490, -0.815665127037370260, -0.815636199801295200, -0.815607270526129140, -0.815578339211945450, -0.815549405858815860, -0.815520470466812860, +-0.815491533036008520, -0.815462593566475440, -0.815433652058285880, -0.815404708511512140, -0.815375762926226710, -0.815346815302501300, -0.815317865640409420, -0.815288913940022790, +-0.815259960201414000, -0.815231004424655240, -0.815202046609818880, -0.815173086756977530, -0.815144124866202910, -0.815115160937568530, -0.815086194971146210, -0.815057226967008330, +-0.815028256925227510, -0.814999284845875920, -0.814970310729026260, -0.814941334574750710, -0.814912356383121320, -0.814883376154211690, -0.814854393888093440, -0.814825409584839290, +-0.814796423244521620, -0.814767434867212930, -0.814738444452985600, -0.814709452001911580, -0.814680457514064590, -0.814651460989516350, -0.814622462428339470, -0.814593461830606440, +-0.814564459196389870, -0.814535454525762040, -0.814506447818795550, -0.814477439075562910, -0.814448428296136280, -0.814419415480589050, -0.814390400628993260, -0.814361383741421530, +-0.814332364817946240, -0.814303343858640120, -0.814274320863575100, -0.814245295832824790, -0.814216268766461250, -0.814187239664556970, -0.814158208527184680, -0.814129175354416870, +-0.814100140146326030, -0.814071102902984900, -0.814042063624466070, -0.814013022310841490, -0.813983978962184880, -0.813954933578568300, -0.813925886160064450, -0.813896836706745840, +-0.813867785218685190, -0.813838731695954550, -0.813809676138627540, -0.813780618546776410, -0.813751558920473680, -0.813722497259792070, -0.813693433564804170, -0.813664367835582710, +-0.813635300072200420, -0.813606230274729780, -0.813577158443243080, -0.813548084577814020, -0.813519008678514680, -0.813489930745417980, -0.813460850778596310, -0.813431768778122510, +-0.813402684744069290, -0.813373598676508940, -0.813344510575515050, -0.813315420441159900, -0.813286328273516100, -0.813257234072656600, -0.813228137838654000, -0.813199039571581020, +-0.813169939271510490, -0.813140836938514580, -0.813111732572667000, -0.813082626174040150, -0.813053517742706840, -0.813024407278739590, -0.812995294782211440, -0.812966180253194890, +-0.812937063691762550, -0.812907945097987920, -0.812878824471943600, -0.812849701813702090, -0.812820577123336330, -0.812791450400919160, -0.812762321646523400, -0.812733190860221780, +-0.812704058042087120, -0.812674923192191920, -0.812645786310609910, -0.812616647397413350, -0.812587506452675300, -0.812558363476468370, -0.812529218468865610, -0.812500071429939190, +-0.812470922359763150, -0.812441771258409880, -0.812412618125952110, -0.812383462962462780, -0.812354305768014820, -0.812325146542681180, -0.812295985286534570, -0.812266821999648060, +-0.812237656682093910, -0.812208489333946180, -0.812179319955277260, -0.812150148546159970, -0.812120975106667250, -0.812091799636872170, -0.812062622136847100, -0.812033442606665990, +-0.812004261046401330, -0.811975077456125850, -0.811945891835912810, -0.811916704185835060, -0.811887514505965410, -0.811858322796377040, -0.811829129057143000, -0.811799933288335440, +-0.811770735490028650, -0.811741535662295010, -0.811712333805207460, -0.811683129918839170, -0.811653924003262970, -0.811624716058552020, -0.811595506084778820, -0.811566294082017300, +-0.811537080050340090, -0.811507863989820110, -0.811478645900530430, -0.811449425782544310, -0.811420203635934480, -0.811390979460774210, -0.811361753257135890, -0.811332525025093790, +-0.811303294764720410, -0.811274062476088690, -0.811244828159271790, -0.811215591814342880, -0.811186353441375130, -0.811157113040440800, -0.811127870611614290, -0.811098626154968080, +-0.811069379670575240, -0.811040131158509040, -0.811010880618842410, -0.810981628051648640, -0.810952373457000890, -0.810923116834971540, -0.810893858185635090, -0.810864597509063810, +-0.810835334805331100, -0.810806070074510110, -0.810776803316673900, -0.810747534531895630, -0.810718263720248130, -0.810688990881805350, -0.810659716016640220, -0.810630439124825690, +-0.810601160206435130, -0.810571879261541730, -0.810542596290218520, -0.810513311292538900, -0.810484024268575910, -0.810454735218402390, -0.810425444142092610, -0.810396151039719070, +-0.810366855911355270, -0.810337558757074360, -0.810308259576949520, -0.810278958371053460, -0.810249655139460570, -0.810220349882243450, -0.810191042599475610, -0.810161733291230090, +-0.810132421957580170, -0.810103108598599240, -0.810073793214360570, -0.810044475804937440, -0.810015156370402560, -0.809985834910830320, -0.809956511426293550, -0.809927185916865410, +-0.809897858382619300, -0.809868528823628590, -0.809839197239966560, -0.809809863631706040, -0.809780527998921310, -0.809751190341685300, -0.809721850660071300, -0.809692508954152790, +-0.809663165224002830, -0.809633819469695040, -0.809604471691302670, -0.809575121888898690, -0.809545770062557350, -0.809516416212351600, -0.809487060338354820, -0.809457702440640410, +-0.809428342519281640, -0.809398980574352110, -0.809369616605924550, -0.809340250614073550, -0.809310882598871850, -0.809281512560392930, -0.809252140498710300, -0.809222766413897340, +-0.809193390306027440, -0.809164012175173970, -0.809134632021410010, -0.809105249844810030, -0.809075865645446870, -0.809046479423394030, -0.809017091178725110, -0.808987700911513400, +-0.808958308621832380, -0.808928914309755110, -0.808899517975356090, -0.808870119618708250, -0.808840719239885100, -0.808811316838960240, -0.808781912416006940, -0.808752505971099040, +-0.808723097504309710, -0.808693687015712760, -0.808664274505381030, -0.808634859973389130, -0.808605443419810000, -0.808576024844717360, -0.808546604248184700, -0.808517181630285410, +-0.808487756991092650, -0.808458330330681150, -0.808428901649123730, -0.808399470946494000, -0.808370038222865680, -0.808340603478312270, -0.808311166712907370, -0.808281727926724480, +-0.808252287119837320, -0.808222844292318940, -0.808193399444243840, -0.808163952575685410, -0.808134503686717020, -0.808105052777412400, -0.808075599847845050, -0.808046144898088790, +-0.808016687928216680, -0.807987228938303330, -0.807957767928421890, -0.807928304898646090, -0.807898839849049420, -0.807869372779705720, -0.807839903690688590, -0.807810432582071640, +-0.807780959453928250, -0.807751484306332810, -0.807722007139358710, -0.807692527953079660, -0.807663046747569170, -0.807633563522901170, -0.807604078279149150, -0.807574591016386510, +-0.807545101734687960, -0.807515610434126560, -0.807486117114776140, -0.807456621776710400, -0.807427124420003190, -0.807397625044728120, -0.807368123650959000, -0.807338620238769120, +-0.807309114808233090, -0.807279607359424390, -0.807250097892416530, -0.807220586407283560, -0.807191072904098970, -0.807161557382936820, -0.807132039843870270, -0.807102520286974160, +-0.807072998712321630, -0.807043475119986640, -0.807013949510043020, -0.806984421882564470, -0.806954892237624950, -0.806925360575298070, -0.806895826895657860, -0.806866291198777620, +-0.806836753484732050, -0.806807213753594770, -0.806777672005439260, -0.806748128240339700, -0.806718582458369800, -0.806689034659602840, -0.806659484844113870, -0.806629933011976270, +-0.806600379163263770, -0.806570823298050300, -0.806541265416409690, -0.806511705518416110, -0.806482143604143160, -0.806452579673664790, -0.806423013727054610, -0.806393445764387320, +-0.806363875785736430, -0.806334303791175770, -0.806304729780779490, -0.806275153754621330, -0.806245575712775220, -0.806215995655314770, -0.806186413582314800, -0.806156829493848810, +-0.806127243389990640, -0.806097655270814450, -0.806068065136394170, -0.806038472986803640, -0.806008878822117030, -0.805979282642407590, -0.805949684447750500, -0.805920084238219260, +-0.805890482013887690, -0.805860877774830060, -0.805831271521120110, -0.805801663252832090, -0.805772052970039290, -0.805742440672816970, -0.805712826361238420, -0.805683210035377910, +-0.805653591695309370, -0.805623971341106860, -0.805594348972844430, -0.805564724590596030, -0.805535098194435360, -0.805505469784437490, -0.805475839360675900, -0.805446206923224770, +-0.805416572472158030, -0.805386936007549960, -0.805357297529474490, -0.805327657038005350, -0.805298014533217480, -0.805268370015184590, -0.805238723483980840, -0.805209074939680190, +-0.805179424382356900, -0.805149771812085020, -0.805120117228938730, -0.805090460632992170, -0.805060802024318960, -0.805031141402994250, -0.805001478769091670, -0.804971814122685370, +-0.804942147463849510, -0.804912478792658370, -0.804882808109185440, -0.804853135413506000, -0.804823460705693880, -0.804793783985822910, -0.804764105253967580, -0.804734424510201940, +-0.804704741754600270, -0.804675056987236740, -0.804645370208185610, -0.804615681417520490, -0.804585990615316660, -0.804556297801647950, -0.804526602976588400, -0.804496906140212410, +-0.804467207292594130, -0.804437506433807850, -0.804407803563927160, -0.804378098683027560, -0.804348391791182780, -0.804318682888466970, -0.804288971974954530, -0.804259259050719490, +-0.804229544115836470, -0.804199827170379520, -0.804170108214422470, -0.804140387248040710, -0.804110664271307950, -0.804080939284298470, -0.804051212287086760, -0.804021483279746980, +-0.803991752262353420, -0.803962019234980010, -0.803932284197702130, -0.803902547150593500, -0.803872808093728410, -0.803843067027181450, -0.803813323951026780, -0.803783578865338690, +-0.803753831770191770, -0.803724082665659760, -0.803694331551818020, -0.803664578428740390, -0.803634823296501380, -0.803605066155175350, -0.803575307004836590, -0.803545545845559590, +-0.803515782677418300, -0.803486017500487870, -0.803456250314842580, -0.803426481120556590, -0.803396709917704400, -0.803366936706360390, -0.803337161486599170, -0.803307384258494910, +-0.803277605022122200, -0.803247823777555100, -0.803218040524868780, -0.803188255264137400, -0.803158467995435440, -0.803128678718837310, -0.803098887434417490, -0.803069094142249920, +-0.803039298842410100, -0.803009501534972080, -0.802979702220010250, -0.802949900897599210, -0.802920097567813460, -0.802890292230727390, -0.802860484886415590, -0.802830675534952580, +-0.802800864176412390, -0.802771050810870520, -0.802741235438401040, -0.802711418059078530, -0.802681598672977390, -0.802651777280172340, -0.802621953880737760, -0.802592128474747810, +-0.802562301062278110, -0.802532471643402580, -0.802502640218195950, -0.802472806786732720, -0.802442971349087380, -0.802413133905334640, -0.802383294455549120, -0.802353452999804760, +-0.802323609538177380, -0.802293764070740930, -0.802263916597570130, -0.802234067118739460, -0.802204215634323650, -0.802174362144397300, -0.802144506649034470, -0.802114649148310990, +-0.802084789642300790, -0.802054928131078700, -0.802025064614719340, -0.801995199093297200, -0.801965331566887100, -0.801935462035563650, -0.801905590499401020, -0.801875716958475040, +-0.801845841412859640, -0.801815963862629650, -0.801786084307859800, -0.801756202748624800, -0.801726319184999260, -0.801696433617057340, -0.801666546044874860, -0.801636656468526000, +-0.801606764888085580, -0.801576871303628200, -0.801546975715228700, -0.801517078122961690, -0.801487178526901990, -0.801457276927124320, -0.801427373323702950, -0.801397467716713720, +-0.801367560106230780, -0.801337650492328970, -0.801307738875083000, -0.801277825254567700, -0.801247909630857350, -0.801217992004027660, -0.801188072374153130, -0.801158150741308250, +-0.801128227105568080, -0.801098301467007450, -0.801068373825700950, -0.801038444181723430, -0.801008512535149930, -0.800978578886054620, -0.800948643234513310, -0.800918705580600410, +-0.800888765924390840, -0.800858824265959330, -0.800828880605380710, -0.800798934942729800, -0.800768987278081210, -0.800739037611510550, -0.800709085943092310, -0.800679132272901440, +-0.800649176601012650, -0.800619218927500990, -0.800589259252441290, -0.800559297575908380, -0.800529333897976650, -0.800499368218722250, -0.800469400538219360, -0.800439430856543010, +-0.800409459173768050, -0.800379485489969400, -0.800349509805222010, -0.800319532119600390, -0.800289552433180450, -0.800259570746036710, -0.800229587058243990, -0.800199601369877220, +-0.800169613681011470, -0.800139623991721780, -0.800109632302082980, -0.800079638612169570, -0.800049642922057600, -0.800019645231821560, -0.799989645541536290, -0.799959643851277050, +-0.799929640161118670, -0.799899634471136100, -0.799869626781403940, -0.799839617091998250, -0.799809605402993620, -0.799779591714464890, -0.799749576026487110, -0.799719558339135550, +-0.799689538652484930, -0.799659516966610530, -0.799629493281587390, -0.799599467597489900, -0.799569439914394330, -0.799539410232375180, -0.799509378551507500, -0.799479344871866340, +-0.799449309193526860, -0.799419271516563560, -0.799389231841052590, -0.799359190167068470, -0.799329146494686450, -0.799299100823981590, -0.799269053155028940, -0.799239003487903670, +-0.799208951822680920, -0.799178898159435770, -0.799148842498242810, -0.799118784839178310, -0.799088725182316880, -0.799058663527733580, -0.799028599875503680, -0.798998534225702220, +-0.798968466578403920, -0.798938396933684960, -0.798908325291620040, -0.798878251652284320, -0.798848176015752980, -0.798818098382101160, -0.798788018751404040, -0.798757937123736990, +-0.798727853499175080, -0.798697767877792900, -0.798667680259666950, -0.798637590644871720, -0.798607499033482600, -0.798577405425574650, -0.798547309821223240, -0.798517212220503540, +-0.798487112623490260, -0.798457011030259680, -0.798426907440886620, -0.798396801855446370, -0.798366694274013970, -0.798336584696664910, -0.798306473123474470, -0.798276359554517700, +-0.798246243989869650, -0.798216126429606380, -0.798186006873802920, -0.798155885322534340, -0.798125761775876130, -0.798095636233903450, -0.798065508696691680, -0.798035379164315660, +-0.798005247636851660, -0.797975114114374610, -0.797944978596959680, -0.797914841084682360, -0.797884701577618040, -0.797854560075841770, -0.797824416579429260, -0.797794271088455690, +-0.797764123602995760, -0.797733974123126190, -0.797703822648921700, -0.797673669180457570, -0.797643513717809280, -0.797613356261052340, -0.797583196810261350, -0.797553035365512920, +-0.797522871926881870, -0.797492706494443700, -0.797462539068273690, -0.797432369648447440, -0.797402198235040220, -0.797372024828127410, -0.797341849427784630, -0.797311672034086700, +-0.797281492647110120, -0.797251311266929830, -0.797221127893621210, -0.797190942527259860, -0.797160755167921060, -0.797130565815679870, -0.797100374470612770, -0.797070181132794710, +-0.797039985802301290, -0.797009788479207890, -0.796979589163589910, -0.796949387855523160, -0.796919184555082700, -0.796888979262344480, -0.796858771977383200, -0.796828562700275470, +-0.796798351431096450, -0.796768138169921420, -0.796737922916826100, -0.796707705671885980, -0.796677486435176660, -0.796647265206772980, -0.796617041986751760, -0.796586816775187940, +-0.796556589572157030, -0.796526360377734610, -0.796496129191996300, -0.796465896015017720, -0.796435660846874340, -0.796405423687641330, -0.796375184537395310, -0.796344943396211310, +-0.796314700264164950, -0.796284455141331840, -0.796254208027787570, -0.796223958923607760, -0.796193707828867560, -0.796163454743643690, -0.796133199668011100, -0.796102942602045500, +-0.796072683545822500, -0.796042422499417920, -0.796012159462907260, -0.795981894436366130, -0.795951627419870240, -0.795921358413494870, -0.795891087417316510, -0.795860814431410550, +-0.795830539455852470, -0.795800262490718110, -0.795769983536083080, -0.795739702592022540, -0.795709419658613190, -0.795679134735930440, -0.795648847824049770, -0.795618558923047000, +-0.795588268032997760, -0.795557975153977970, -0.795527680286063130, -0.795497383429329190, -0.795467084583851290, -0.795436783749706060, -0.795406480926968970, -0.795376176115715650, +-0.795345869316021910, -0.795315560527963480, -0.795285249751615630, -0.795254936987055180, -0.795224622234357410, -0.795194305493598150, -0.795163986764853000, -0.795133666048197910, +-0.795103343343708690, -0.795073018651461070, -0.795042691971530990, -0.795012363303993610, -0.794982032648925750, -0.794951700006402920, -0.794921365376500820, -0.794891028759295290, +-0.794860690154862160, -0.794830349563277360, -0.794800006984616170, -0.794769662418955410, -0.794739315866370590, -0.794708967326937410, -0.794678616800731820, -0.794648264287829750, +-0.794617909788306930, -0.794587553302239400, -0.794557194829702440, -0.794526834370772980, -0.794496471925526530, -0.794466107494038900, -0.794435741076385930, -0.794405372672643550, +-0.794375002282887820, -0.794344629907194120, -0.794314255545639280, -0.794283879198298790, -0.794253500865248710, -0.794223120546564740, -0.794192738242323060, -0.794162353952599490, +-0.794131967677470070, -0.794101579417010760, -0.794071189171296930, -0.794040796940405640, -0.794010402724412370, -0.793980006523393070, -0.793949608337423780, -0.793919208166580570, +-0.793888806010938700, -0.793858401870575330, -0.793827995745565950, -0.793797587635986620, -0.793767177541913280, -0.793736765463422090, -0.793706351400588870, -0.793675935353489900, +-0.793645517322201010, -0.793615097306797800, -0.793584675307357430, -0.793554251323955300, -0.793523825356667540, -0.793493397405570230, -0.793462967470739520, -0.793432535552250790, +-0.793402101650181210, -0.793371665764606380, -0.793341227895602460, -0.793310788043245510, -0.793280346207611450, -0.793249902388776570, -0.793219456586817030, -0.793189008801808760, +-0.793158559033827370, -0.793128107282950250, -0.793097653549252770, -0.793067197832811210, -0.793036740133701620, -0.793006280452000170, -0.792975818787783120, -0.792945355141125850, +-0.792914889512105870, -0.792884421900798550, -0.792853952307280290, -0.792823480731627010, -0.792793007173915100, -0.792762531634220720, -0.792732054112619930, -0.792701574609188440, +-0.792671093124003630, -0.792640609657141120, -0.792610124208676940, -0.792579636778687590, -0.792549147367249130, -0.792518655974437710, -0.792488162600329170, -0.792457667245000770, +-0.792427169908528240, -0.792396670590987730, -0.792366169292455510, -0.792335666013007980, -0.792305160752721170, -0.792274653511671590, -0.792244144289934730, -0.792213633087588080, +-0.792183119904707360, -0.792152604741368730, -0.792122087597648680, -0.792091568473623500, -0.792061047369369220, -0.792030524284961900, -0.791999999220478810, -0.791969472175995670, +-0.791938943151588860, -0.791908412147334760, -0.791877879163309650, -0.791847344199589690, -0.791816807256251480, -0.791786268333371180, -0.791755727431024740, -0.791725184549289530, +-0.791694639688241280, -0.791664092847956470, -0.791633544028511490, -0.791602993229982620, -0.791572440452445680, -0.791541885695978160, -0.791511328960656010, -0.791480770246555500, +-0.791450209553753000, -0.791419646882325020, -0.791389082232347940, -0.791358515603898250, -0.791327946997052110, -0.791297376411885580, -0.791266803848476250, -0.791236229306899850, +-0.791205652787232870, -0.791175074289551810, -0.791144493813933040, -0.791113911360453060, -0.791083326929187700, -0.791052740520214570, -0.791022152133609600, -0.790991561769449290, +-0.790960969427810020, -0.790930375108768400, -0.790899778812400810, -0.790869180538783740, -0.790838580287993140, -0.790807978060106720, -0.790777373855200310, -0.790746767673350500, +-0.790716159514633700, -0.790685549379126610, -0.790654937266905500, -0.790624323178046650, -0.790593707112627440, -0.790563089070724030, -0.790532469052412920, -0.790501847057770490, +-0.790471223086873560, -0.790440597139798640, -0.790409969216622100, -0.790379339317420100, -0.790348707442270370, -0.790318073591248840, -0.790287437764432110, -0.790256799961896790, +-0.790226160183719490, -0.790195518429976710, -0.790164874700744700, -0.790134228996100970, -0.790103581316121680, -0.790072931660883440, -0.790042280030462950, -0.790011626424936720, +-0.789980970844381350, -0.789950313288873660, -0.789919653758490050, -0.789888992253306890, -0.789858328773401790, -0.789827663318850790, -0.789796995889730620, -0.789766326486118110, +-0.789735655108089630, -0.789704981755721570, -0.789674306429091530, -0.789643629128275680, -0.789612949853350840, -0.789582268604393620, -0.789551585381480740, -0.789520900184688900, +-0.789490213014094720, -0.789459523869775140, -0.789428832751806090, -0.789398139660265620, -0.789367444595229670, -0.789336747556775190, -0.789306048544978880, -0.789275347559917350, +-0.789244644601667540, -0.789213939670305510, -0.789183232765909180, -0.789152523888554840, -0.789121813038319080, -0.789091100215278840, -0.789060385419510850, -0.789029668651091920, +-0.788998949910098780, -0.788968229196607810, -0.788937506510696720, -0.788906781852441900, -0.788876055221920060, -0.788845326619208140, -0.788814596044382870, -0.788783863497521160, +-0.788753128978699200, -0.788722392487995030, -0.788691654025484800, -0.788660913591245460, -0.788630171185353830, -0.788599426807886860, -0.788568680458921260, -0.788537932138533960, +-0.788507181846801240, -0.788476429583801150, -0.788445675349609960, -0.788414919144304620, -0.788384160967962040, -0.788353400820658970, -0.788322638702472430, -0.788291874613478720, +-0.788261108553755860, -0.788230340523380260, -0.788199570522428840, -0.788168798550978430, -0.788138024609106090, -0.788107248696888640, -0.788076470814403020, -0.788045690961726280, +-0.788014909138934790, -0.787984125346106510, -0.787953339583318040, -0.787922551850646080, -0.787891762148167810, -0.787860970475960150, -0.787830176834099500, -0.787799381222663910, +-0.787768583641729970, -0.787737784091374520, -0.787706982571674600, -0.787676179082707150, -0.787645373624549340, -0.787614566197278100, -0.787583756800970370, -0.787552945435702870, +-0.787522132101553420, -0.787491316798598630, -0.787460499526915550, -0.787429680286581220, -0.787398859077672820, -0.787368035900267160, -0.787337210754440850, -0.787306383640272060, +-0.787275554557837380, -0.787244723507213750, -0.787213890488478340, -0.787183055501708200, -0.787152218546980360, -0.787121379624372120, -0.787090538733959840, -0.787059695875821700, +-0.787028851050034280, -0.786998004256674880, -0.786967155495820300, -0.786936304767547950, -0.786905452071934740, -0.786874597409057520, -0.786843740778994220, -0.786812882181821550, +-0.786782021617616790, -0.786751159086456870, -0.786720294588419080, -0.786689428123580560, -0.786658559692018480, -0.786627689293809440, -0.786596816929031830, -0.786565942597762020, +-0.786535066300077410, -0.786504188036055150, -0.786473307805772400, -0.786442425609306440, -0.786411541446733750, -0.786380655318132840, -0.786349767223580300, -0.786318877163153300, +-0.786287985136929100, -0.786257091144984990, -0.786226195187398110, -0.786195297264245860, -0.786164397375605170, -0.786133495521553090, -0.786102591702167790, -0.786071685917525960, +-0.786040778167705010, -0.786009868452781980, -0.785978956772834360, -0.785948043127938760, -0.785917127518173660, -0.785886209943615690, -0.785855290404342210, -0.785824368900430500, +-0.785793445431957950, -0.785762519999001710, -0.785731592601639160, -0.785700663239947580, -0.785669731914003910, -0.785638798623886410, -0.785607863369671920, -0.785576926151437700, +-0.785545986969261260, -0.785515045823219850, -0.785484102713390750, -0.785453157639850910, -0.785422210602678690, -0.785391261601951050, -0.785360310637745140, -0.785329357710138450, +-0.785298402819208490, -0.785267445965032400, -0.785236487147687680, -0.785205526367251270, -0.785174563623801560, -0.785143598917415480, -0.785112632248170290, -0.785081663616143620, +-0.785050693021412730, -0.785019720464055220, -0.784988745944147800, -0.784957769461768980, -0.784926791016995810, -0.784895810609905650, -0.784864828240576020, -0.784833843909084280, +-0.784802857615507940, -0.784771869359924380, -0.784740879142410640, -0.784709886963045330, -0.784678892821905280, -0.784647896719067980, -0.784616898654610820, -0.784585898628611610, +-0.784554896641147530, -0.784523892692295720, -0.784492886782134690, -0.784461878910741480, -0.784430869078193480, -0.784399857284568400, -0.784368843529943630, -0.784337827814396760, +-0.784306810138005290, -0.784275790500846840, -0.784244768902998430, -0.784213745344538580, -0.784182719825544330, -0.784151692346093280, -0.784120662906263030, -0.784089631506131200, +-0.784058598145774610, -0.784027562825272200, -0.783996525544700780, -0.783965486304138090, -0.783934445103661730, -0.783903401943349180, -0.783872356823278160, -0.783841309743526170, +-0.783810260704171040, -0.783779209705289580, -0.783748156746960740, -0.783717101829261580, -0.783686044952269570, -0.783654986116062440, -0.783623925320717780, -0.783592862566313440, +-0.783561797852926230, -0.783530731180635210, -0.783499662549517310, -0.783468591959650350, -0.783437519411111840, -0.783406444903979480, -0.783375368438331110, -0.783344290014244220, +-0.783313209631796070, -0.783282127291065500, -0.783251042992129550, -0.783219956735066060, -0.783188868519952620, -0.783157778346867060, -0.783126686215886990, -0.783095592127089790, +-0.783064496080554060, -0.783033398076357080, -0.783002298114576560, -0.782971196195290430, -0.782940092318576200, -0.782908986484511790, -0.782877878693174930, -0.782846768944642780, +-0.782815657238994270, -0.782784543576306670, -0.782753427956657590, -0.782722310380125070, -0.782691190846786730, -0.782660069356720390, -0.782628945910003320, -0.782597820506714450, +-0.782566693146931060, -0.782535563830730860, -0.782504432558191800, -0.782473299329391690, -0.782442164144408260, -0.782411027003319440, -0.782379887906203160, -0.782348746853136490, +-0.782317603844198570, -0.782286458879466570, -0.782255311959018430, -0.782224163082932080, -0.782193012251285350, -0.782161859464155400, -0.782130704721621490, -0.782099548023760690, +-0.782068389370651150, -0.782037228762370470, -0.782006066198996930, -0.781974901680608010, -0.781943735207282000, -0.781912566779096600, -0.781881396396129190, -0.781850224058458940, +-0.781819049766163010, -0.781787873519319550, -0.781756695318006400, -0.781725515162301490, -0.781694333052282750, -0.781663148988027690, -0.781631962969615230, -0.781600774997122880, +-0.781569585070628680, -0.781538393190210460, -0.781507199355946260, -0.781476003567914130, -0.781444805826191800, -0.781413606130857090, -0.781382404481988810, -0.781351200879664590, +-0.781319995323962350, -0.781288787814960140, -0.781257578352735900, -0.781226366937367800, -0.781195153568933210, -0.781163938247511180, -0.781132720973179430, -0.781101501746015890, +-0.781070280566098510, -0.781039057433505430, -0.781007832348314720, -0.780976605310604530, -0.780945376320452130, -0.780914145377936910, -0.780882912483136350, -0.780851677636128510, +-0.780820440836991430, -0.780789202085803270, -0.780757961382642090, -0.780726718727585480, -0.780695474120712610, -0.780664227562100970, -0.780632979051828820, -0.780601728589974340, +-0.780570476176615460, -0.780539221811830330, -0.780507965495697230, -0.780476707228294100, -0.780445447009698760, -0.780414184839990370, -0.780382920719246420, -0.780351654647545300, +-0.780320386624964950, -0.780289116651583630, -0.780257844727478940, -0.780226570852730280, -0.780195295027415140, -0.780164017251611770, -0.780132737525398360, -0.780101455848853150, +-0.780070172222054210, -0.780038886645079920, -0.780007599118008320, -0.779976309640917240, -0.779945018213885950, -0.779913724836992060, -0.779882429510313950, -0.779851132233929660, +-0.779819833007917570, -0.779788531832355410, -0.779757228707322450, -0.779725923632896390, -0.779694616609155510, -0.779663307636178080, -0.779631996714042490, -0.779600683842826770, +-0.779569369022609430, -0.779538052253468620, -0.779506733535482170, -0.779475412868729340, -0.779444090253288090, -0.779412765689236560, -0.779381439176653150, -0.779350110715616110, +-0.779318780306203830, -0.779287447948494030, -0.779256113642566190, -0.779224777388497940, -0.779193439186367850, -0.779162099036254220, -0.779130756938235300, -0.779099412892389380, +-0.779068066898795040, -0.779036718957530020, -0.779005369068673680, -0.778974017232303860, -0.778942663448499050, -0.778911307717337630, -0.778879950038897870, -0.778848590413258270, +-0.778817228840496640, -0.778785865320692490, -0.778754499853923750, -0.778723132440268690, -0.778691763079805810, -0.778660391772613480, -0.778629018518770200, -0.778597643318354460, +-0.778566266171444420, -0.778534887078118350, -0.778503506038455530, -0.778472123052533990, -0.778440738120432020, -0.778409351242228320, -0.778377962418001280, -0.778346571647828610, +-0.778315178931790250, -0.778283784269963810, -0.778252387662427990, -0.778220989109261190, -0.778189588610541880, -0.778158186166348690, -0.778126781776759870, -0.778095375441854250, +-0.778063967161709560, -0.778032556936405490, -0.778001144766020110, -0.777969730650631800, -0.777938314590319150, -0.777906896585160770, -0.777875476635234600, -0.777844054740620240, +-0.777812630901395850, -0.777781205117639820, -0.777749777389430740, -0.777718347716847220, -0.777686916099967870, -0.777655482538871180, -0.777624047033635860, -0.777592609584339840, +-0.777561170191062740, -0.777529728853882830, -0.777498285572878590, -0.777466840348128630, -0.777435393179711550, -0.777403944067706080, -0.777372493012190020, -0.777341040013243450, +-0.777309585070944160, -0.777278128185371010, -0.777246669356602470, -0.777215208584717270, -0.777183745869794000, -0.777152281211911490, -0.777120814611147680, -0.777089346067582290, +-0.777057875581293580, -0.777026403152360270, -0.776994928780860850, -0.776963452466874150, -0.776931974210478880, -0.776900494011752980, -0.776869011870776500, -0.776837527787627490, +-0.776806041762384660, -0.776774553795126720, -0.776743063885932280, -0.776711572034880280, -0.776680078242049430, -0.776648582507518340, -0.776617084831365160, -0.776585585213669830, +-0.776554083654510620, -0.776522580153966140, -0.776491074712115200, -0.776459567329036650, -0.776428058004808520, -0.776396546739510860, -0.776365033533221840, -0.776333518386020270, +-0.776302001297984880, -0.776270482269194480, -0.776238961299727800, -0.776207438389663770, -0.776175913539081220, -0.776144386748058190, -0.776112858016674840, -0.776081327345009340, +-0.776049794733140510, -0.776018260181147280, -0.775986723689108260, -0.775955185257101940, -0.775923644885208260, -0.775892102573505380, -0.775860558322072240, -0.775829012130987760, +-0.775797464000330780, -0.775765913930180020, -0.775734361920614620, -0.775702807971713200, -0.775671252083554250, -0.775639694256217820, -0.775608134489782050, -0.775576572784325900, +-0.775545009139928410, -0.775513443556668290, -0.775481876034624710, -0.775450306573875700, -0.775418735174501660, -0.775387161836580740, -0.775355586560191880, -0.775324009345414010, +-0.775292430192326190, -0.775260849101007230, -0.775229266071536190, -0.775197681103991450, -0.775166094198453060, -0.775134505354999390, -0.775102914573709500, -0.775071321854662320, +-0.775039727197936790, -0.775008130603611960, -0.774976532071766310, -0.774944931602479790, -0.774913329195831000, -0.774881724851898880, -0.774850118570762470, -0.774818510352500710, +-0.774786900197192760, -0.774755288104917560, -0.774723674075753490, -0.774692058109780810, -0.774660440207078030, -0.774628820367724070, -0.774597198591798100, -0.774565574879379160, +-0.774533949230546300, -0.774502321645378020, -0.774470692123954470, -0.774439060666354150, -0.774407427272656210, -0.774375791942939710, -0.774344154677283680, -0.774312515475767290, +-0.774280874338469590, -0.774249231265469740, -0.774217586256846340, -0.774185939312679430, -0.774154290433047620, -0.774122639618030180, -0.774090986867706050, -0.774059332182154610, +-0.774027675561454130, -0.773996017005685100, -0.773964356514926010, -0.773932694089256020, -0.773901029728754300, -0.773869363433499990, -0.773837695203572260, -0.773806025039050380, +-0.773774352940013400, -0.773742678906539920, -0.773711002938710310, -0.773679325036603190, -0.773647645200297830, -0.773615963429873380, -0.773584279725408890, -0.773552594086983850, +-0.773520906514676640, -0.773489217008567760, -0.773457525568735820, -0.773425832195260180, -0.773394136888219790, -0.773362439647694130, -0.773330740473762380, -0.773299039366503790, +-0.773267336325997090, -0.773235631352322540, -0.773203924445558850, -0.773172215605785530, -0.773140504833081500, -0.773108792127526370, -0.773077077489199070, -0.773045360918178660, +-0.773013642414545290, -0.772981921978377890, -0.772950199609755750, -0.772918475308758010, -0.772886749075464060, -0.772855020909953390, -0.772823290812305050, -0.772791558782597980, +-0.772759824820912430, -0.772728088927327470, -0.772696351101922250, -0.772664611344776150, -0.772632869655968560, -0.772601126035578730, -0.772569380483685510, -0.772537633000369480, +-0.772505883585709260, -0.772474132239784450, -0.772442378962674200, -0.772410623754458130, -0.772378866615215380, -0.772347107545025560, -0.772315346543967940, -0.772283583612121350, +-0.772251818749566390, -0.772220051956381880, -0.772188283232647210, -0.772156512578441870, -0.772124739993845230, -0.772092965478936240, -0.772061189033795390, -0.772029410658501500, +-0.771997630353134180, -0.771965848117772690, -0.771934063952496640, -0.771902277857385410, -0.771870489832518380, -0.771838699877975270, -0.771806907993834780, -0.771775114180177630, +-0.771743318437082660, -0.771711520764629340, -0.771679721162897290, -0.771647919631966000, -0.771616116171914830, -0.771584310782822860, -0.771552503464770560, -0.771520694217837090, +-0.771488883042101840, -0.771457069937644400, -0.771425254904544390, -0.771393437942881070, -0.771361619052734260, -0.771329798234182800, -0.771297975487307500, -0.771266150812187190, +-0.771234324208901480, -0.771202495677529960, -0.771170665218152250, -0.771138832830847830, -0.771106998515695750, -0.771075162272776840, -0.771043324102169910, -0.771011484003954690, +-0.770979641978210780, -0.770947798025017780, -0.770915952144455300, -0.770884104336602930, -0.770852254601539720, -0.770820402939346390, -0.770788549350102100, -0.770756693833886450, +-0.770724836390779040, -0.770692977020859590, -0.770661115724207700, -0.770629252500902420, -0.770597387351024570, -0.770565520274653190, -0.770533651271868130, -0.770501780342748850, +-0.770469907487375210, -0.770438032705826780, -0.770406155998183180, -0.770374277364524240, -0.770342396804929000, -0.770310514319478390, -0.770278629908251580, -0.770246743571328050, +-0.770214855308787750, -0.770182965120710270, -0.770151073007174780, -0.770119178968262210, -0.770087283004051710, -0.770055385114623010, -0.770023485300055820, -0.769991583560429960, +-0.769959679895825030, -0.769927774306321090, -0.769895866791997510, -0.769863957352933780, -0.769832045989210730, -0.769800132700907640, -0.769768217488104090, -0.769736300350880030, +-0.769704381289315290, -0.769672460303489570, -0.769640537393482040, -0.769608612559373850, -0.769576685801244050, -0.769544757119172580, -0.769512826513239270, -0.769480893983523820, +-0.769448959530106170, -0.769417023153066040, -0.769385084852482800, -0.769353144628437510, -0.769321202481009330, -0.769289258410278070, -0.769257312416323780, -0.769225364499226070, +-0.769193414659065100, -0.769161462895919910, -0.769129509209871660, -0.769097553600999630, -0.769065596069383740, -0.769033636615103930, -0.769001675238239920, -0.768969711938871760, +-0.768937746717079370, -0.768905779572941930, -0.768873810506540690, -0.768841839517954930, -0.768809866607264470, -0.768777891774549470, -0.768745915019889760, -0.768713936343365160, +-0.768681955745055160, -0.768649973225040920, -0.768617988783401710, -0.768586002420217460, -0.768554014135568230, -0.768522023929534060, -0.768490031802194770, -0.768458037753630310, +-0.768426041783920820, -0.768394043893145700, -0.768362044081386090, -0.768330042348721260, -0.768298038695231390, -0.768266033120996390, -0.768234025626096330, -0.768202016210610570, +-0.768170004874620390, -0.768137991618205170, -0.768105976441445070, -0.768073959344419910, -0.768041940327209960, -0.768009919389895050, -0.767977896532555440, -0.767945871755270960, +-0.767913845058121320, -0.767881816441187690, -0.767849785904549440, -0.767817753448286730, -0.767785719072479610, -0.767753682777208240, -0.767721644562552760, -0.767689604428592460, +-0.767657562375408720, -0.767625518403081130, -0.767593472511689750, -0.767561424701314610, -0.767529374972035990, -0.767497323323933940, -0.767465269757088510, -0.767433214271579400, +-0.767401156867487780, -0.767369097544893240, -0.767337036303876060, -0.767304973144516180, -0.767272908066893970, -0.767240841071089360, -0.767208772157182190, -0.767176701325253620, +-0.767144628575383350, -0.767112553907651430, -0.767080477322138130, -0.767048398818923730, -0.767016318398088260, -0.766984236059712000, -0.766952151803874550, -0.766920065630657400, +-0.766887977540139930, -0.766855887532402640, -0.766823795607525560, -0.766791701765589080, -0.766759606006673260, -0.766727508330857900, -0.766695408738224280, -0.766663307228852230, +-0.766631203802821790, -0.766599098460213460, -0.766566991201107380, -0.766534882025583730, -0.766502770933722990, -0.766470657925605200, -0.766438543001310310, -0.766406426160919580, +-0.766374307404512730, -0.766342186732170140, -0.766310064143972180, -0.766277939639998910, -0.766245813220330360, -0.766213684885047820, -0.766181554634230990, -0.766149422467960360, +-0.766117288386316100, -0.766085152389378690, -0.766053014477228290, -0.766020874649945500, -0.765988732907610380, -0.765956589250302970, -0.765924443678104530, -0.765892296191095110, +-0.765860146789354880, -0.765827995472964320, -0.765795842242003810, -0.765763687096553620, -0.765731530036693700, -0.765699371062505520, -0.765667210174068800, -0.765635047371464150, +-0.765602882654771940, -0.765570716024072450, -0.765538547479446160, -0.765506377020973570, -0.765474204648734390, -0.765442030362810220, -0.765409854163281110, -0.765377676050227330, +-0.765345496023729370, -0.765313314083867600, -0.765281130230722530, -0.765248944464374190, -0.765216756784903970, -0.765184567192391810, -0.765152375686918300, -0.765120182268563930, +-0.765087986937408980, -0.765055789693534050, -0.765023590537019740, -0.764991389467945870, -0.764959186486394050, -0.764926981592444320, -0.764894774786177070, -0.764862566067672890, +-0.764830355437012390, -0.764798142894275950, -0.764765928439543500, -0.764733712072896870, -0.764701493794415990, -0.764669273604181350, -0.764637051502273460, -0.764604827488773010, +-0.764572601563760500, -0.764540373727316420, -0.764508143979521490, -0.764475912320455640, -0.764443678750200470, -0.764411443268836250, -0.764379205876443260, -0.764346966573102420, +-0.764314725358894000, -0.764282482233898270, -0.764250237198196960, -0.764217990251869980, -0.764185741394998060, -0.764153490627661800, -0.764121237949941800, -0.764088983361918660, +-0.764056726863673100, -0.764024468455285710, -0.763992208136836660, -0.763959945908407550, -0.763927681770078640, -0.763895415721930540, -0.763863147764043850, -0.763830877896499280, +-0.763798606119377550, -0.763766332432758710, -0.763734056836724680, -0.763701779331355410, -0.763669499916731830, -0.763637218592934320, -0.763604935360043920, -0.763572650218141140, +-0.763540363167306670, -0.763508074207620790, -0.763475783339165210, -0.763443490562020210, -0.763411195876266600, -0.763378899281984880, -0.763346600779255870, -0.763314300368160500, +-0.763281998048778720, -0.763249693821192570, -0.763217387685482080, -0.763185079641728210, -0.763152769690011560, -0.763120457830413050, -0.763088144063013400, -0.763055828387893430, +-0.763023510805133200, -0.762991191314814850, -0.762958869917018560, -0.762926546611825020, -0.762894221399315060, -0.762861894279569630, -0.762829565252669540, -0.762797234318694840, +-0.762764901477727690, -0.762732566729848240, -0.762700230075137430, -0.762667891513675980, -0.762635551045544810, -0.762603208670824760, -0.762570864389596760, -0.762538518201941630, +-0.762506170107939530, -0.762473820107672620, -0.762441468201221160, -0.762409114388665990, -0.762376758670088030, -0.762344401045568220, -0.762312041515186830, -0.762279680079025910, +-0.762247316737165730, -0.762214951489687320, -0.762182584336671520, -0.762150215278199260, -0.762117844314351480, -0.762085471445209110, -0.762053096670852970, -0.762020719991363560, +-0.761988341406822920, -0.761955960917311440, -0.761923578522910150, -0.761891194223699770, -0.761858808019761470, -0.761826419911175500, -0.761794029898024140, -0.761761637980387650, +-0.761729244158347200, -0.761696848431983490, -0.761664450801377680, -0.761632051266610820, -0.761599649827763740, -0.761567246484917580, -0.761534841238152740, -0.761502434087551360, +-0.761470025033193940, -0.761437614075161310, -0.761405201213534830, -0.761372786448395230, -0.761340369779823670, -0.761307951207900620, -0.761275530732708370, -0.761243108354327180, +-0.761210684072838320, -0.761178257888322610, -0.761145829800861320, -0.761113399810535500, -0.761080967917426190, -0.761048534121613770, -0.761016098423180630, -0.760983660822207360, +-0.760951221318774800, -0.760918779912964300, -0.760886336604856720, -0.760853891394533410, -0.760821444282074770, -0.760788995267563050, -0.760756544351078870, -0.760724091532703370, +-0.760691636812517610, -0.760659180190602750, -0.760626721667039930, -0.760594261241910320, -0.760561798915295070, -0.760529334687274680, -0.760496868557931640, -0.760464400527346320, +-0.760431930595600100, -0.760399458762773930, -0.760366985028949280, -0.760334509394206440, -0.760302031858627990, -0.760269552422294440, -0.760237071085286930, -0.760204587847686850, +-0.760172102709575250, -0.760139615671033500, -0.760107126732142650, -0.760074635892983850, -0.760042143153638050, -0.760009648514187400, -0.759977151974712610, -0.759944653535294950, +-0.759912153196015680, -0.759879650956956090, -0.759847146818196650, -0.759814640779819970, -0.759782132841906770, -0.759749623004538190, -0.759717111267795510, -0.759684597631760110, +-0.759652082096513140, -0.759619564662136090, -0.759587045328710020, -0.759554524096315850, -0.759522000965035860, -0.759489475934950970, -0.759456949006142250, -0.759424420178691270, +-0.759391889452679210, -0.759359356828187450, -0.759326822305296690, -0.759294285884089430, -0.759261747564646480, -0.759229207347049240, -0.759196665231378850, -0.759164121217716810, +-0.759131575306144500, -0.759099027496743290, -0.759066477789593910, -0.759033926184778940, -0.759001372682378990, -0.758968817282475780, -0.758936259985150570, -0.758903700790484640, +-0.758871139698559350, -0.758838576709455760, -0.758806011823256240, -0.758773445040041740, -0.758740876359893620, -0.758708305782893390, -0.758675733309122300, -0.758643158938661850, +-0.758610582671593540, -0.758578004507998840, -0.758545424447958470, -0.758512842491555040, -0.758480258638869590, -0.758447672889983600, -0.758415085244978250, -0.758382495703935230, +-0.758349904266935490, -0.758317310934061520, -0.758284715705394240, -0.758252118581015160, -0.758219519561005860, -0.758186918645447740, -0.758154315834422280, -0.758121711128011080, +-0.758089104526295520, -0.758056496029356650, -0.758023885637277180, -0.757991273350137940, -0.757958659168020520, -0.757926043091006530, -0.757893425119177340, -0.757860805252614120, +-0.757828183491399350, -0.757795559835614090, -0.757762934285340030, -0.757730306840658670, -0.757697677501651400, -0.757665046268400030, -0.757632413140986060, -0.757599778119490970, +-0.757567141203995930, -0.757534502394583640, -0.757501861691335040, -0.757469219094331740, -0.757436574603655540, -0.757403928219387730, -0.757371279941610240, -0.757338629770403890, +-0.757305977705851620, -0.757273323748034350, -0.757240667897033810, -0.757208010152931490, -0.757175350515809310, -0.757142688985748660, -0.757110025562831250, -0.757077360247138230, +-0.757044693038752440, -0.757012023937754910, -0.756979352944227250, -0.756946680058251280, -0.756914005279908600, -0.756881328609280810, -0.756848650046449190, -0.756815969591496550, +-0.756783287244503940, -0.756750603005553190, -0.756717916874725890, -0.756685228852103760, -0.756652538937768630, -0.756619847131802080, -0.756587153434285950, -0.756554457845301400, +-0.756521760364931240, -0.756489060993256630, -0.756456359730359410, -0.756423656576321270, -0.756390951531224040, -0.756358244595148890, -0.756325535768178630, -0.756292825050394520, +-0.756260112441878410, -0.756227397942711880, -0.756194681552976980, -0.756161963272755420, -0.756129243102128920, -0.756096521041179190, -0.756063797089987720, -0.756031071248637330, +-0.755998343517209180, -0.755965613895785200, -0.755932882384447110, -0.755900148983276950, -0.755867413692355880, -0.755834676511766720, -0.755801937441590970, -0.755769196481910210, +-0.755736453632806620, -0.755703708894361890, -0.755670962266657750, -0.755638213749776360, -0.755605463343799300, -0.755572711048808190, -0.755539956864885730, -0.755507200792113420, +-0.755474442830573080, -0.755441682980346640, -0.755408921241516040, -0.755376157614163100, -0.755343392098369200, -0.755310624694217390, -0.755277855401789040, -0.755245084221165990, +-0.755212311152430260, -0.755179536195663800, -0.755146759350948440, -0.755113980618366210, -0.755081199997998500, -0.755048417489928350, -0.755015633094237030, -0.754982846811006800, +-0.754950058640319390, -0.754917268582256830, -0.754884476636901060, -0.754851682804333570, -0.754818887084637400, -0.754786089477894050, -0.754753289984185450, -0.754720488603593750, +-0.754687685336200680, -0.754654880182088480, -0.754622073141339000, -0.754589264214033720, -0.754556453400256010, -0.754523640700087040, -0.754490826113609070, -0.754458009640903930, +-0.754425191282053880, -0.754392371037140850, -0.754359548906246240, -0.754326724889453290, -0.754293898986843630, -0.754261071198499170, -0.754228241524502070, -0.754195409964934390, +-0.754162576519878170, -0.754129741189415450, -0.754096903973628390, -0.754064064872598580, -0.754031223886409090, -0.753998381015141610, -0.753965536258878080, -0.753932689617700770, +-0.753899841091691720, -0.753866990680932550, -0.753834138385506390, -0.753801284205494970, -0.753768428140980330, -0.753735570192044510, -0.753702710358769900, -0.753669848641238540, +-0.753636985039532360, -0.753604119553733850, -0.753571252183924510, -0.753538382930187490, -0.753505511792604610, -0.753472638771257920, -0.753439763866229680, -0.753406887077601950, +-0.753374008405457100, -0.753341127849876500, -0.753308245410943770, -0.753275361088740380, -0.753242474883348720, -0.753209586794850730, -0.753176696823328770, -0.753143804968865130, +-0.753110911231541950, -0.753078015611440940, -0.753045118108645490, -0.753012218723237200, -0.752979317455298340, -0.752946414304911270, -0.752913509272158050, -0.752880602357121060, +-0.752847693559882130, -0.752814782880524390, -0.752781870319129800, -0.752748955875780500, -0.752716039550558770, -0.752683121343546980, -0.752650201254827400, -0.752617279284482300, +-0.752584355432593500, -0.752551429699244270, -0.752518502084516540, -0.752485572588492470, -0.752452641211254550, -0.752419707952885040, -0.752386772813466220, -0.752353835793079910, +-0.752320896891809590, -0.752287956109736980, -0.752255013446944450, -0.752222068903514510, -0.752189122479529400, -0.752156174175071410, -0.752123223990222910, -0.752090271925066500, +-0.752057317979683780, -0.752024362154158240, -0.751991404448571930, -0.751958444863007110, -0.751925483397546170, -0.751892520052271470, -0.751859554827264850, -0.751826587722610020, +-0.751793618738388680, -0.751760647874683220, -0.751727675131576230, -0.751694700509150100, -0.751661724007487100, -0.751628745626669930, -0.751595765366780850, -0.751562783227901710, +-0.751529799210116200, -0.751496813313506260, -0.751463825538154270, -0.751430835884142610, -0.751397844351553990, -0.751364850940470670, -0.751331855650974710, -0.751298858483149590, +-0.751265859437077470, -0.751232858512840610, -0.751199855710521610, -0.751166851030202980, -0.751133844471967290, -0.751100836035896950, -0.751067825722073870, -0.751034813530581880, +-0.751001799461502810, -0.750968783514919250, -0.750935765690913690, -0.750902745989568850, -0.750869724410967000, -0.750836700955190390, -0.750803675622322530, -0.750770648412445450, +-0.750737619325641870, -0.750704588361994160, -0.750671555521584930, -0.750638520804496890, -0.750605484210812520, -0.750572445740613880, -0.750539405393984670, -0.750506363171007050, +-0.750473319071763400, -0.750440273096336430, -0.750407225244808960, -0.750374175517263260, -0.750341123913781600, -0.750308070434447690, -0.750275015079343580, -0.750241957848551970, +-0.750208898742155460, -0.750175837760236770, -0.750142774902878400, -0.750109710170163150, -0.750076643562173520, -0.750043575078991780, -0.750010504720701740, -0.749977432487385350, +-0.749944358379125430, -0.749911282396004570, -0.749878204538105500, -0.749845124805510350, -0.749812043198302970, -0.749778959716565500, -0.749745874360380650, -0.749712787129831030, +-0.749679698024999560, -0.749646607045968750, -0.749613514192821520, -0.749580419465640360, -0.749547322864507760, -0.749514224389507210, -0.749481124040721310, -0.749448021818232450, +-0.749414917722123650, -0.749381811752477420, -0.749348703909376800, -0.749315594192903720, -0.749282482603142340, -0.749249369140174700, -0.749216253804083630, -0.749183136594951950, +-0.749150017512862480, -0.749116896557897930, -0.749083773730141010, -0.749050649029674220, -0.749017522456581370, -0.748984394010944740, -0.748951263692847040, -0.748918131502371190, +-0.748884997439600130, -0.748851861504616470, -0.748818723697502580, -0.748785584018342500, -0.748752442467218390, -0.748719299044213300, -0.748686153749409830, -0.748653006582891020, +-0.748619857544739810, -0.748586706635038790, -0.748553553853870460, -0.748520399201318850, -0.748487242677466250, -0.748454084282395570, -0.748420924016189650, -0.748387761878931410, +-0.748354597870703800, -0.748321431991589070, -0.748288264241671270, -0.748255094621032900, -0.748221923129756880, -0.748188749767925930, -0.748155574535623200, -0.748122397432931410, +-0.748089218459933700, -0.748056037616713020, -0.748022854903351520, -0.747989670319933580, -0.747956483866541340, -0.747923295543257980, -0.747890105350166310, -0.747856913287349490, +-0.747823719354889780, -0.747790523552871340, -0.747757325881376560, -0.747724126340488460, -0.747690924930290100, -0.747657721650864300, -0.747624516502294330, -0.747591309484663010, +-0.747558100598053390, -0.747524889842548060, -0.747491677218230950, -0.747458462725184790, -0.747425246363492390, -0.747392028133236800, -0.747358808034501280, -0.747325586067368650, +-0.747292362231921410, -0.747259136528243940, -0.747225908956418610, -0.747192679516528570, -0.747159448208656760, -0.747126215032886340, -0.747092979989300470, -0.747059743077982060, +-0.747026504299013740, -0.746993263652479640, -0.746960021138462490, -0.746926776757045330, -0.746893530508311200, -0.746860282392343140, -0.746827032409224430, -0.746793780559037670, +-0.746760526841866890, -0.746727271257794810, -0.746694013806904590, -0.746660754489279380, -0.746627493305002220, -0.746594230254156390, -0.746560965336824920, -0.746527698553090420, +-0.746494429903037270, -0.746461159386748060, -0.746427887004306070, -0.746394612755794330, -0.746361336641295890, -0.746328058660894240, -0.746294778814671880, -0.746261497102713060, +-0.746228213525100600, -0.746194928081917560, -0.746161640773247200, -0.746128351599172680, -0.746095060559777370, -0.746061767655144430, -0.746028472885357010, -0.745995176250497830, +-0.745961877750651260, -0.745928577385900020, -0.745895275156327360, -0.745861971062016460, -0.745828665103050680, -0.745795357279512630, -0.745762047591486900, -0.745728736039055870, +-0.745695422622303040, -0.745662107341311780, -0.745628790196165130, -0.745595471186946470, -0.745562150313739290, -0.745528827576626530, -0.745495502975691340, -0.745462176511017870, +-0.745428848182688840, -0.745395517990787850, -0.745362185935398050, -0.745328852016602820, -0.745295516234485310, -0.745262178589128470, -0.745228839080616880, -0.745195497709033150, +-0.745162154474460550, -0.745128809376982670, -0.745095462416682790, -0.745062113593644270, -0.745028762907950390, -0.744995410359683970, -0.744962055948929720, -0.744928699675770360, +-0.744895341540289140, -0.744861981542569660, -0.744828619682695200, -0.744795255960749140, -0.744761890376814390, -0.744728522930975470, -0.744695153623315290, -0.744661782453917230, +-0.744628409422864680, -0.744595034530241120, -0.744561657776129930, -0.744528279160614700, -0.744494898683778050, -0.744461516345704900, -0.744428132146477850, -0.744394746086180500, +-0.744361358164896240, -0.744327968382708650, -0.744294576739701120, -0.744261183235956580, -0.744227787871559630, -0.744194390646593210, -0.744160991561140790, -0.744127590615285990, +-0.744094187809112070, -0.744060783142702850, -0.744027376616141490, -0.743993968229511800, -0.743960557982896620, -0.743927145876380650, -0.743893731910046710, -0.743860316083978510, +-0.743826898398259550, -0.743793478852973310, -0.743760057448202730, -0.743726634184032620, -0.743693209060545920, -0.743659782077826350, -0.743626353235957160, -0.743592922535022070, +-0.743559489975104790, -0.743526055556288700, -0.743492619278657510, -0.743459181142294150, -0.743425741147283440, -0.743392299293708430, -0.743358855581652600, -0.743325410011199670, +-0.743291962582433240, -0.743258513295436800, -0.743225062150293600, -0.743191609147088260, -0.743158154285903930, -0.743124697566824200, -0.743091238989932790, -0.743057778555313190, +-0.743024316263049210, -0.742990852113224460, -0.742957386105921880, -0.742923918241226500, -0.742890448519221370, -0.742856976939989980, -0.742823503503616370, -0.742790028210183810, +-0.742756551059776230, -0.742723072052476670, -0.742689591188369970, -0.742656108467539380, -0.742622623890068610, -0.742589137456041160, -0.742555649165540840, -0.742522159018651370, +-0.742488667015456680, -0.742455173156039590, -0.742421677440485150, -0.742388179868876510, -0.742354680441297490, -0.742321179157831800, -0.742287676018563050, -0.742254171023575160, +-0.742220664172951290, -0.742187155466776270, -0.742153644905133470, -0.742120132488106490, -0.742086618215779260, -0.742053102088235380, -0.742019584105558790, -0.741986064267833200, +-0.741952542575142540, -0.741919019027569850, -0.741885493625200180, -0.741851966368116790, -0.741818437256403510, -0.741784906290144150, -0.741751373469422550, -0.741717838794321960, +-0.741684302264927210, -0.741650763881321890, -0.741617223643589510, -0.741583681551814090, -0.741550137606079570, -0.741516591806469670, -0.741483044153068200, -0.741449494645959110, +-0.741415943285225860, -0.741382390070953190, -0.741348835003224680, -0.741315278082123940, -0.741281719307735120, -0.741248158680141930, -0.741214596199427760, -0.741181031865677630, +-0.741147465678975050, -0.741113897639403720, -0.741080327747047680, -0.741046756001990880, -0.741013182404317130, -0.740979606954110360, -0.740946029651454730, -0.740912450496433280, +-0.740878869489131290, -0.740845286629632230, -0.740811701918019930, -0.740778115354378430, -0.740744526938791560, -0.740710936671343360, -0.740677344552117200, -0.740643750581198360, +-0.740610154758670090, -0.740576557084616560, -0.740542957559121470, -0.740509356182269100, -0.740475752954143250, -0.740442147874827980, -0.740408540944406890, -0.740374932162964900, +-0.740341321530585740, -0.740307709047353210, -0.740274094713351370, -0.740240478528664260, -0.740206860493376030, -0.740173240607570060, -0.740139618871331510, -0.740105995284743970, +-0.740072369847891490, -0.740038742560858000, -0.740005113423727660, -0.739971482436584620, -0.739937849599512810, -0.739904214912596280, -0.739870578375918740, -0.739836939989565350, +-0.739803299753619580, -0.739769657668165600, -0.739736013733287460, -0.739702367949069180, -0.739668720315594500, -0.739635070832948660, -0.739601419501215050, -0.739567766320477830, +-0.739534111290821360, -0.739500454412329480, -0.739466795685086550, -0.739433135109176520, -0.739399472684683760, -0.739365808411691640, -0.739332142290285650, -0.739298474320549400, +-0.739264804502566820, -0.739231132836422280, -0.739197459322199930, -0.739163783959983280, -0.739130106749857800, -0.739096427691907090, -0.739062746786215200, -0.739029064032866610, +-0.738995379431945270, -0.738961692983535420, -0.738928004687721350, -0.738894314544587320, -0.738860622554216920, -0.738826928716695530, -0.738793233032106870, -0.738759535500535080, +-0.738725836122064440, -0.738692134896779210, -0.738658431824763650, -0.738624726906101480, -0.738591020140878070, -0.738557311529177030, -0.738523601071082720, -0.738489888766679540, +-0.738456174616051400, -0.738422458619283020, -0.738388740776458440, -0.738355021087661490, -0.738321299552977430, -0.738287576172490190, -0.738253850946284040, -0.738220123874443250, +-0.738186394957052070, -0.738152664194195120, -0.738118931585955760, -0.738085197132419600, -0.738051460833670570, -0.738017722689792820, -0.737983982700870730, -0.737950240866988790, +-0.737916497188231160, -0.737882751664682310, -0.737849004296426640, -0.737815255083547840, -0.737781504026131520, -0.737747751124261390, -0.737713996378021820, -0.737680239787497300, +-0.737646481352772220, -0.737612721073930390, -0.737578958951057300, -0.737545194984236760, -0.737511429173553280, -0.737477661519091220, -0.737443892020935080, -0.737410120679169110, +-0.737376347493877930, -0.737342572465145780, -0.737308795593056620, -0.737275016877696140, -0.737241236319148060, -0.737207453917496870, -0.737173669672827160, -0.737139883585223200, +-0.737106095654768920, -0.737072305881550040, -0.737038514265650260, -0.737004720807154400, -0.736970925506146620, -0.736937128362711520, -0.736903329376933700, -0.736869528548897420, +-0.736835725878687400, -0.736801921366387450, -0.736768115012083280, -0.736734306815858830, -0.736700496777798590, -0.736666684897987150, -0.736632871176509000, -0.736599055613448740, +-0.736565238208890080, -0.736531418962918960, -0.736497597875619410, -0.736463774947075820, -0.736429950177372780, -0.736396123566594780, -0.736362295114826540, -0.736328464822152640, +-0.736294632688656910, -0.736260798714425180, -0.736226962899541370, -0.736193125244090310, -0.736159285748156370, -0.736125444411824260, -0.736091601235178470, -0.736057756218303160, +-0.736023909361283920, -0.735990060664205030, -0.735956210127150960, -0.735922357750206310, -0.735888503533455920, -0.735854647476984150, -0.735820789580875710, -0.735786929845214770, +-0.735753068270087130, -0.735719204855576850, -0.735685339601768410, -0.735651472508746740, -0.735617603576596450, -0.735583732805402010, -0.735549860195247710, -0.735515985746219240, +-0.735482109458400980, -0.735448231331877310, -0.735414351366733170, -0.735380469563053140, -0.735346585920921840, -0.735312700440424180, -0.735278813121644780, -0.735244923964667670, +-0.735211032969578790, -0.735177140136462510, -0.735143245465403220, -0.735109348956485940, -0.735075450609795180, -0.735041550425415300, -0.735007648403432020, -0.734973744543929720, +-0.734939838846992990, -0.734905931312706760, -0.734872021941155640, -0.734838110732424440, -0.734804197686597990, -0.734770282803761110, -0.734736366083997840, -0.734702447527394220, +-0.734668527134034520, -0.734634604904003560, -0.734600680837386060, -0.734566754934266820, -0.734532827194730680, -0.734498897618862000, -0.734464966206746510, -0.734431032958468680, +-0.734397097874113220, -0.734363160953765080, -0.734329222197509070, -0.734295281605430010, -0.734261339177612600, -0.734227394914141350, -0.734193448815102290, -0.734159500880579460, +-0.734125551110657910, -0.734091599505422580, -0.734057646064958160, -0.734023690789349590, -0.733989733678681370, -0.733955774733039190, -0.733921813952507660, -0.733887851337171710, +-0.733853886887116060, -0.733819920602425620, -0.733785952483185460, -0.733751982529480370, -0.733718010741394750, -0.733684037119014640, -0.733650061662424520, -0.733616084371709220, +-0.733582105246953780, -0.733548124288242900, -0.733514141495661850, -0.733480156869294800, -0.733446170409227990, -0.733412182115545710, -0.733378191988332980, -0.733344200027674860, +-0.733310206233656170, -0.733276210606361940, -0.733242213145877230, -0.733208213852286960, -0.733174212725675620, -0.733140209766129260, -0.733106204973732360, -0.733072198348569960, +-0.733038189890727110, -0.733004179600288850, -0.732970167477339450, -0.732936153521965170, -0.732902137734250610, -0.732868120114280710, -0.732834100662140500, -0.732800079377915030, +-0.732766056261689340, -0.732732031313548470, -0.732698004533577580, -0.732663975921861050, -0.732629945478485260, -0.732595913203534570, -0.732561879097094140, -0.732527843159248900, +-0.732493805390084130, -0.732459765789684750, -0.732425724358135470, -0.732391681095522440, -0.732357636001930160, -0.732323589077443880, -0.732289540322148550, -0.732255489736129420, +-0.732221437319471540, -0.732187383072260060, -0.732153326994579580, -0.732119269086516260, -0.732085209348154910, -0.732051147779580470, -0.732017084380878090, -0.731983019152133150, +-0.731948952093430580, -0.731914883204854980, -0.731880812486492840, -0.731846739938428750, -0.731812665560747640, -0.731778589353535010, -0.731744511316875790, -0.731710431450855350, +-0.731676349755558840, -0.731642266231070870, -0.731608180877477810, -0.731574093694864260, -0.731540004683315480, -0.731505913842916740, -0.731471821173753200, -0.731437726675910120, +-0.731403630349472090, -0.731369532194525610, -0.731335432211155270, -0.731301330399446450, -0.731267226759484190, -0.731233121291353870, -0.731199013995140760, -0.731164904870930110, +-0.731130793918807200, -0.731096681138856840, -0.731062566531165190, -0.731028450095817290, -0.730994331832898080, -0.730960211742493150, -0.730926089824687650, -0.730891966079566410, +-0.730857840507215810, -0.730823713107720540, -0.730789583881166100, -0.730755452827637540, -0.730721319947220560, -0.730687185240000090, -0.730653048706061740, -0.730618910345490760, +-0.730584770158371980, -0.730550628144791770, -0.730516484304835070, -0.730482338638587030, -0.730448191146133240, -0.730414041827558980, -0.730379890682949620, -0.730345737712389860, +-0.730311582915966430, -0.730277426293764020, -0.730243267845868130, -0.730209107572363900, -0.730174945473337060, -0.730140781548872740, -0.730106615799056560, -0.730072448223973100, +-0.730038278823709310, -0.730004107598349660, -0.729969934547979870, -0.729935759672685200, -0.729901582972551030, -0.729867404447662960, -0.729833224098105800, -0.729799041923966160, +-0.729764857925328970, -0.729730672102279600, -0.729696484454903540, -0.729662294983286270, -0.729628103687513410, -0.729593910567670090, -0.729559715623841480, -0.729525518856114160, +-0.729491320264572970, -0.729457119849303610, -0.729422917610391460, -0.729388713547921900, -0.729354507661980620, -0.729320299952652460, -0.729286090420024240, -0.729251879064180650, +-0.729217665885207420, -0.729183450883190030, -0.729149234058213970, -0.729115015410364940, -0.729080794939728220, -0.729046572646389610, -0.729012348530433950, -0.728978122591948050, +-0.728943894831016740, -0.728909665247725820, -0.728875433842160580, -0.728841200614406940, -0.728806965564549600, -0.728772728692675400, -0.728738489998869480, -0.728704249483217330, +-0.728670007145804540, -0.728635762986716730, -0.728601517006039480, -0.728567269203858390, -0.728533019580259290, -0.728498768135326880, -0.728464514869148210, -0.728430259781808310, +-0.728396002873392680, -0.728361744143987020, -0.728327483593677050, -0.728293221222548360, -0.728258957030686100, -0.728224691018176990, -0.728190423185106070, -0.728156153531559270, +-0.728121882057621850, -0.728087608763379970, -0.728053333648918890, -0.728019056714324540, -0.727984777959681970, -0.727950497385078000, -0.727916214990597890, -0.727881930776327120, +-0.727847644742351640, -0.727813356888756920, -0.727779067215628910, -0.727744775723052630, -0.727710482411114910, -0.727676187279901020, -0.727641890329496780, -0.727607591559987780, +-0.727573290971459730, -0.727538988563998460, -0.727504684337689670, -0.727470378292618620, -0.727436070428872260, -0.727401760746535730, -0.727367449245694740, -0.727333135926435110, +-0.727298820788842670, -0.727264503833003230, -0.727230185059001940, -0.727195864466925750, -0.727161542056859900, -0.727127217828890120, -0.727092891783102440, -0.727058563919582460, +-0.727024234238416000, -0.726989902739689110, -0.726955569423487270, -0.726921234289896080, -0.726886897339002250, -0.726852558570891370, -0.726818217985648940, -0.726783875583360990, +-0.726749531364113350, -0.726715185327991400, -0.726680837475081940, -0.726646487805470480, -0.726612136319242710, -0.726577783016484680, -0.726543427897282100, -0.726509070961721020, +-0.726474712209887240, -0.726440351641866710, -0.726405989257744690, -0.726371625057608330, -0.726337259041542890, -0.726302891209634320, -0.726268521561968420, -0.726234150098631240, +-0.726199776819708820, -0.726165401725286320, -0.726131024815450780, -0.726096646090287790, -0.726062265549883180, -0.726027883194322880, -0.725993499023692810, -0.725959113038079030, +-0.725924725237567570, -0.725890335622243590, -0.725855944192194460, -0.725821550947505330, -0.725787155888262480, -0.725752759014551610, -0.725718360326458980, -0.725683959824070300, +-0.725649557507471180, -0.725615153376748760, -0.725580747431988530, -0.725546339673276420, -0.725511930100698370, -0.725477518714340520, -0.725443105514288920, -0.725408690500629500, +-0.725374273673447760, -0.725339855032831050, -0.725305434578864540, -0.725271012311634600, -0.725236588231227050, -0.725202162337728050, -0.725167734631223640, -0.725133305111799190, +-0.725098873779542190, -0.725064440634538010, -0.725030005676872700, -0.724995568906632410, -0.724961130323903080, -0.724926689928771070, -0.724892247721322210, -0.724857803701642770, +-0.724823357869818330, -0.724788910225935950, -0.724754460770081320, -0.724720009502340720, -0.724685556422799860, -0.724651101531545220, -0.724616644828662170, -0.724582186314238210, +-0.724547725988358700, -0.724513263851109920, -0.724478799902577910, -0.724444334142848920, -0.724409866572009120, -0.724375397190144770, -0.724340925997341790, -0.724306452993685900, +-0.724271978179264480, -0.724237501554163110, -0.724203023118467960, -0.724168542872265400, -0.724134060815641360, -0.724099576948682210, -0.724065091271473450, -0.724030603784102670, +-0.723996114486655350, -0.723961623379217660, -0.723927130461875960, -0.723892635734716410, -0.723858139197825380, -0.723823640851288920, -0.723789140695192730, -0.723754638729624310, +-0.723720134954669360, -0.723685629370414030, -0.723651121976944590, -0.723616612774347410, -0.723582101762708650, -0.723547588942114020, -0.723513074312651110, -0.723478557874405400, +-0.723444039627463400, -0.723409519571911240, -0.723374997707835200, -0.723340474035321760, -0.723305948554457180, -0.723271421265327060, -0.723236892168019010, -0.723202361262618720, +-0.723167828549212580, -0.723133294027886840, -0.723098757698727780, -0.723064219561821990, -0.723029679617254840, -0.722995137865114270, -0.722960594305485760, -0.722926048938455800, +-0.722891501764110770, -0.722856952782536920, -0.722822401993820640, -0.722787849398048520, -0.722753294995306610, -0.722718738785680940, -0.722684180769259000, -0.722649620946126610, +-0.722615059316370160, -0.722580495880076110, -0.722545930637330750, -0.722511363588219990, -0.722476794732831440, -0.722442224071250920, -0.722407651603564900, -0.722373077329859560, +-0.722338501250221700, -0.722303923364737480, -0.722269343673493490, -0.722234762176576120, -0.722200178874071290, -0.722165593766066590, -0.722131006852647970, -0.722096418133901690, +-0.722061827609914550, -0.722027235280772730, -0.721992641146562140, -0.721958045207370720, -0.721923447463284070, -0.721888847914388790, -0.721854246560771460, -0.721819643402518580, +-0.721785038439716420, -0.721750431672451790, -0.721715823100811060, -0.721681212724880170, -0.721646600544746830, -0.721611986560496970, -0.721577370772217170, -0.721542753179993950, +-0.721508133783913760, -0.721473512584063340, -0.721438889580528490, -0.721404264773397140, -0.721369638162754900, -0.721335009748688690, -0.721300379531285010, -0.721265747510630330, +-0.721231113686811250, -0.721196478059914490, -0.721161840630025750, -0.721127201397233190, -0.721092560361622500, -0.721057917523280520, -0.721023272882293620, -0.720988626438748610, +-0.720953978192732100, -0.720919328144330020, -0.720884676293630070, -0.720850022640718620, -0.720815367185681950, -0.720780709928606990, -0.720746050869580210, -0.720711390008688340, +-0.720676727346017950, -0.720642062881655780, -0.720607396615687850, -0.720572728548201980, -0.720538058679284330, -0.720503387009021500, -0.720468713537500190, -0.720434038264807120, +-0.720399361191028320, -0.720364682316251840, -0.720330001640563600, -0.720295319164050210, -0.720260634886798700, -0.720225948808895570, -0.720191260930427510, -0.720156571251481360, +-0.720121879772143700, -0.720087186492500810, -0.720052491412640490, -0.720017794532649020, -0.719983095852613110, -0.719948395372619340, -0.719913693092754660, -0.719878989013105100, +-0.719844283133758700, -0.719809575454801510, -0.719774865976320450, -0.719740154698402250, -0.719705441621133590, -0.719670726744601420, -0.719636010068892330, -0.719601291594093360, +-0.719566571320290450, -0.719531849247571740, -0.719497125376023390, -0.719462399705732230, -0.719427672236785050, -0.719392942969268700, -0.719358211903270100, -0.719323479038875170, +-0.719288744376172300, -0.719254007915247520, -0.719219269656187770, -0.719184529599079750, -0.719149787744010500, -0.719115044091066750, -0.719080298640335400, -0.719045551391902630, +-0.719010802345856680, -0.718976051502283610, -0.718941298861270560, -0.718906544422904140, -0.718871788187271380, -0.718837030154459210, -0.718802270324553790, -0.718767508697643390, +-0.718732745273814140, -0.718697980053153000, -0.718663213035746980, -0.718628444221682930, -0.718593673611047760, -0.718558901203928400, -0.718524127000411790, -0.718489351000584200, +-0.718454573204533880, -0.718419793612347200, -0.718385012224110890, -0.718350229039912190, -0.718315444059837830, -0.718280657283974280, -0.718245868712409700, -0.718211078345230460, +-0.718176286182523490, -0.718141492224375840, -0.718106696470874440, -0.718071898922106320, -0.718037099578158420, -0.718002298439117780, -0.717967495505070770, -0.717932690776105660, +-0.717897884252308830, -0.717863075933767300, -0.717828265820568020, -0.717793453912798140, -0.717758640210544030, -0.717723824713893840, -0.717689007422934180, -0.717654188337751850, +-0.717619367458434240, -0.717584544785068170, -0.717549720317740670, -0.717514894056538900, -0.717480066001549900, -0.717445236152860040, -0.717410404510557820, -0.717375571074729490, +-0.717340735845462320, -0.717305898822843350, -0.717271060006959500, -0.717236219397898060, -0.717201376995745490, -0.717166532800590060, -0.717131686812518270, -0.717096839031617360, +-0.717061989457974280, -0.717027138091676170, -0.716992284932810310, -0.716957429981463720, -0.716922573237723020, -0.716887714701676340, -0.716852854373410510, -0.716817992253012460, +-0.716783128340569450, -0.716748262636168530, -0.716713395139897070, -0.716678525851841550, -0.716643654772090240, -0.716608781900729740, -0.716573907237847420, -0.716539030783530210, +-0.716504152537865590, -0.716469272500940390, -0.716434390672842090, -0.716399507053657960, -0.716364621643474250, -0.716329734442379680, -0.716294845450460740, -0.716259954667804680, +-0.716225062094498770, -0.716190167730630270, -0.716155271576285560, -0.716120373631553450, -0.716085473896520330, -0.716050572371273560, -0.716015669055900310, -0.715980763950487930, +-0.715945857055123700, -0.715910948369894660, -0.715876037894888410, -0.715841125630191310, -0.715806211575892190, -0.715771295732077430, -0.715736378098834390, -0.715701458676250460, +-0.715666537464412890, -0.715631614463408390, -0.715596689673325350, -0.715561763094250790, -0.715526834726271650, -0.715491904569475420, -0.715456972623949470, -0.715422038889781180, +-0.715387103367057690, -0.715352166055866380, -0.715317226956294180, -0.715282286068429470, -0.715247343392359070, -0.715212398928170230, -0.715177452675950560, -0.715142504635787100, +-0.715107554807767440, -0.715072603191978300, -0.715037649788508150, -0.715002694597444030, -0.714967737618873110, -0.714932778852882870, -0.714897818299560560, -0.714862855958993900, +-0.714827891831269930, -0.714792925916475700, -0.714757958214699780, -0.714722988726028910, -0.714688017450550660, -0.714653044388352310, -0.714618069539521340, -0.714583092904145230, +-0.714548114482310700, -0.714513134274106560, -0.714478152279619530, -0.714443168498937190, -0.714408182932146920, -0.714373195579336210, -0.714338206440592430, -0.714303215516003180, +-0.714268222805655270, -0.714233228309637420, -0.714198232028036450, -0.714163233960940060, -0.714128234108435400, -0.714093232470610180, -0.714058229047552010, -0.714023223839347580, +-0.713988216846085710, -0.713953208067853230, -0.713918197504737840, -0.713883185156826920, -0.713848171024207940, -0.713813155106968630, -0.713778137405196470, -0.713743117918978930, +-0.713708096648402960, -0.713673073593557360, -0.713638048754529080, -0.713603022131405700, -0.713567993724274820, -0.713532963533223820, -0.713497931558339850, -0.713462897799711730, +-0.713427862257426270, -0.713392824931571190, -0.713357785822234080, -0.713322744929502540, -0.713287702253464050, -0.713252657794206320, -0.713217611551816950, -0.713182563526382980, +-0.713147513717993120, -0.713112462126734630, -0.713077408752694870, -0.713042353595961580, -0.713007296656622440, -0.712972237934765160, -0.712937177430476470, -0.712902115143845600, +-0.712867051074959400, -0.712831985223905560, -0.712796917590771790, -0.712761848175645700, -0.712726776978614970, -0.712691703999767330, -0.712656629239189820, -0.712621552696971360, +-0.712586474373199000, -0.712551394267960330, -0.712516312381343390, -0.712481228713435550, -0.712446143264324650, -0.712411056034097820, -0.712375967022843890, -0.712340876230650120, +-0.712305783657604110, -0.712270689303793670, -0.712235593169306510, -0.712200495254230350, -0.712165395558652990, -0.712130294082661490, -0.712095190826344870, -0.712060085789790300, +-0.712024978973085480, -0.711989870376318220, -0.711954759999576250, -0.711919647842947370, -0.711884533906518850, -0.711849418190379610, -0.711814300694616710, -0.711779181419318170, +-0.711744060364571610, -0.711708937530464940, -0.711673812917085980, -0.711638686524522330, -0.711603558352862150, -0.711568428402192250, -0.711533296672602010, -0.711498163164178580, +-0.711463027877009770, -0.711427890811183290, -0.711392751966787080, -0.711357611343908400, -0.711322468942636290, -0.711287324763058000, -0.711252178805261480, -0.711217031069334430, +-0.711181881555364770, -0.711146730263440550, -0.711111577193649370, -0.711076422346079370, -0.711041265720817610, -0.711006107317953220, -0.710970947137573690, -0.710935785179766740, +-0.710900621444620410, -0.710865455932222500, -0.710830288642660850, -0.710795119576022930, -0.710759948732397890, -0.710724776111872900, -0.710689601714535990, -0.710654425540475090, +-0.710619247589778010, -0.710584067862533030, -0.710548886358827740, -0.710513703078749610, -0.710478518022387820, -0.710443331189829830, -0.710408142581163470, -0.710372952196476780, +-0.710337760035857580, -0.710302566099394130, -0.710267370387173580, -0.710232172899285310, -0.710196973635816460, -0.710161772596855310, -0.710126569782489670, -0.710091365192807580, +-0.710056158827897080, -0.710020950687846210, -0.709985740772742350, -0.709950529082674750, -0.709915315617730910, -0.709880100377998650, -0.709844883363566210, -0.709809664574521550, +-0.709774444010952690, -0.709739221672947120, -0.709703997560594100, -0.709668771673981120, -0.709633544013196230, -0.709598314578327450, -0.709563083369462940, -0.709527850386690640, +-0.709492615630098800, -0.709457379099775350, -0.709422140795807790, -0.709386900718285580, -0.709351658867296120, -0.709316415242927430, -0.709281169845267790, -0.709245922674405230, +-0.709210673730427230, -0.709175423013423180, -0.709140170523480440, -0.709104916260687390, -0.709069660225132070, -0.709034402416902520, -0.708999142836087000, -0.708963881482773670, +-0.708928618357050570, -0.708893353459005390, -0.708858086788727420, -0.708822818346304120, -0.708787548131823870, -0.708752276145374730, -0.708717002387044940, -0.708681726856922540, +-0.708646449555095370, -0.708611170481652560, -0.708575889636681830, -0.708540607020271440, -0.708505322632509540, -0.708470036473484280, -0.708434748543284030, -0.708399458841996730, +-0.708364167369710310, -0.708328874126514020, -0.708293579112495570, -0.708258282327743130, -0.708222983772345050, -0.708187683446389490, -0.708152381349964720, -0.708117077483158330, +-0.708081771846059920, -0.708046464438757070, -0.708011155261338070, -0.707975844313891270, -0.707940531596504720, -0.707905217109266900, -0.707869900852265980, -0.707834582825589750, +-0.707799263029327720, -0.707763941463567360, -0.707728618128397270, -0.707693293023905600, -0.707657966150180840, -0.707622637507311030, -0.707587307095383980, -0.707551974914489400, +-0.707516640964714780, -0.707481305246148610, -0.707445967758879140, -0.707410628502994740, -0.707375287478583800, -0.707339944685734690, -0.707304600124535670, -0.707269253795074440, +-0.707233905697440820, -0.707198555831722420, -0.707163204198007600, -0.707127850796384740, -0.707092495626942320, -0.707057138689768050, -0.707021779984951530, -0.706986419512580570, +-0.706951057272743540, -0.706915693265528830, -0.706880327491024920, -0.706844959949320170, -0.706809590640503080, -0.706774219564662020, -0.706738846721884690, -0.706703472112260920, +-0.706668095735878520, -0.706632717592825870, -0.706597337683191330, -0.706561956007063510, -0.706526572564530890, -0.706491187355681060, -0.706455800380603960, -0.706420411639387400, +-0.706385021132119760, -0.706349628858889520, -0.706314234819785280, -0.706278839014895410, -0.706243441444308510, -0.706208042108112280, -0.706172641006396650, -0.706137238139249450, +-0.706101833506759040, -0.706066427109014130, -0.706031018946103090, -0.705995609018114530, -0.705960197325136370, -0.705924783867258320, -0.705889368644568300, -0.705853951657154810, +-0.705818532905106540, -0.705783112388511880, -0.705747690107459410, -0.705712266062037740, -0.705676840252334790, -0.705641412678440380, -0.705605983340442440, -0.705570552238429460, +-0.705535119372490250, -0.705499684742713180, -0.705464248349186860, -0.705428810191999320, -0.705393370271240380, -0.705357928586997970, -0.705322485139360800, -0.705287039928417350, +-0.705251592954256320, -0.705216144216966320, -0.705180693716636050, -0.705145241453353890, -0.705109787427208090, -0.705074331638288480, -0.705038874086682980, -0.705003414772480300, +-0.704967953695769150, -0.704932490856638010, -0.704897026255175030, -0.704861559891470150, -0.704826091765611400, -0.704790621877687370, -0.704755150227786790, -0.704719676815998340, +-0.704684201642410750, -0.704648724707112590, -0.704613246010192710, -0.704577765551739010, -0.704542283331841550, -0.704506799350588350, -0.704471313608068140, -0.704435826104369720, +-0.704400336839581700, -0.704364845813792770, -0.704329353027091210, -0.704293858479566830, -0.704258362171307770, -0.704222864102402870, -0.704187364272940820, -0.704151862683010330, +-0.704116359332700230, -0.704080854222099100, -0.704045347351295310, -0.704009838720378810, -0.703974328329437630, -0.703938816178560690, -0.703903302267836710, -0.703867786597354380, +-0.703832269167202760, -0.703796749977469660, -0.703761229028245340, -0.703725706319618060, -0.703690181851676420, -0.703654655624509350, -0.703619127638205670, -0.703583597892854180, +-0.703548066388543610, -0.703512533125362330, -0.703476998103400360, -0.703441461322745760, -0.703405922783487680, -0.703370382485714710, -0.703334840429515770, -0.703299296614979810, +-0.703263751042194850, -0.703228203711251170, -0.703192654622237120, -0.703157103775241320, -0.703121551170352800, -0.703085996807660370, -0.703050440687252860, -0.703014882809219420, +-0.702979323173648640, -0.702943761780629010, -0.702908198630250560, -0.702872633722601670, -0.702837067057771160, -0.702801498635847950, -0.702765928456920990, -0.702730356521078630, +-0.702694782828411020, -0.702659207379006330, -0.702623630172953820, -0.702588051210342070, -0.702552470491260240, -0.702516888015797260, -0.702481303784042050, -0.702445717796083560, +-0.702410130052010250, -0.702374540551912060, -0.702338949295877700, -0.702303356283995870, -0.702267761516355620, -0.702232164993046080, -0.702196566714155980, -0.702160966679773900, +-0.702125364889990110, -0.702089761344892870, -0.702054156044571220, -0.702018548989114090, -0.701982940178610630, -0.701947329613149870, -0.701911717292820760, -0.701876103217711770, +-0.701840487387913160, -0.701804869803513200, -0.701769250464601150, -0.701733629371266040, -0.701698006523596820, -0.701662381921682510, -0.701626755565611600, -0.701591127455474580, +-0.701555497591359600, -0.701519865973355920, -0.701484232601552680, -0.701448597476038720, -0.701412960596903280, -0.701377321964235520, -0.701341681578123710, -0.701306039438658440, +-0.701270395545928070, -0.701234749900021660, -0.701199102501028350, -0.701163453349037290, -0.701127802444137640, -0.701092149786417870, -0.701056495375968370, -0.701020839212877610, +-0.700985181297234640, -0.700949521629128820, -0.700913860208649210, -0.700878197035884940, -0.700842532110925060, -0.700806865433859060, -0.700771197004775080, -0.700735526823763830, +-0.700699854890913800, -0.700664181206314020, -0.700628505770053870, -0.700592828582222490, -0.700557149642908270, -0.700521468952201910, -0.700485786510191890, -0.700450102316967360, +-0.700414416372617590, -0.700378728677231830, -0.700343039230899130, -0.700307348033708870, -0.700271655085750290, -0.700235960387112000, -0.700200263937884260, -0.700164565738156000, +-0.700128865788016250, -0.700093164087554400, -0.700057460636859590, -0.700021755436020520, -0.699986048485127690, -0.699950339784269790, -0.699914629333535990, -0.699878917133015640, +-0.699843203182797910, -0.699807487482972280, -0.699771770033627890, -0.699736050834854020, -0.699700329886739470, -0.699664607189374730, -0.699628882742848400, -0.699593156547249960, +-0.699557428602668560, -0.699521698909193690, -0.699485967466914490, -0.699450234275919680, -0.699414499336299960, -0.699378762648144030, -0.699343024211541150, -0.699307284026580820, +-0.699271542093352180, -0.699235798411944610, -0.699200052982447700, -0.699164305804949930, -0.699128556879542120, -0.699092806206312870, -0.699057053785351550, -0.699021299616747640, +-0.698985543700590520, -0.698949786036969440, -0.698914026625973350, -0.698878265467692830, -0.698842502562216580, -0.698806737909634100, -0.698770971510034760, -0.698735203363508030, +-0.698699433470143290, -0.698663661830029930, -0.698627888443257520, -0.698592113309914660, -0.698556336430092180, -0.698520557803878780, -0.698484777431364060, -0.698448995312637380, +-0.698413211447788230, -0.698377425836905430, -0.698341638480079690, -0.698305849377399810, -0.698270058528955300, -0.698234265934835730, -0.698198471595130490, -0.698162675509928940, +-0.698126877679320800, -0.698091078103395550, -0.698055276782241880, -0.698019473715950630, -0.697983668904610720, -0.697947862348311630, -0.697912054047142850, -0.697876244001193970, +-0.697840432210553920, -0.697804618675313290, -0.697768803395561240, -0.697732986371387030, -0.697697167602880470, -0.697661347090130950, -0.697625524833228150, -0.697589700832261460, +-0.697553875087320470, -0.697518047598494230, -0.697482218365873540, -0.697446387389547230, -0.697410554669605000, -0.697374720206136330, -0.697338883999230940, -0.697303046048978300, +-0.697267206355467350, -0.697231364918789120, -0.697195521739032430, -0.697159676816286880, -0.697123830150642170, -0.697087981742188000, -0.697052131591013760, -0.697016279697209250, +-0.696980426060863300, -0.696944570682067050, -0.696908713560909330, -0.696872854697479730, -0.696836994091868060, -0.696801131744164030, -0.696765267654457010, -0.696729401822836270, +-0.696693534249392620, -0.696657664934215100, -0.696621793877393540, -0.696585921079017400, -0.696550046539176400, -0.696514170257960360, -0.696478292235458870, -0.696442412471761750, +-0.696406530966957820, -0.696370647721138330, -0.696334762734392100, -0.696298876006809060, -0.696262987538478820, -0.696227097329491060, -0.696191205379934950, -0.696155311689901410, +-0.696119416259479710, -0.696083519088759320, -0.696047620177830280, -0.696011719526782090, -0.695975817135704670, -0.695939913004687600, -0.695904007133820830, -0.695868099523193400, +-0.695832190172896330, -0.695796279083018780, -0.695760366253650560, -0.695724451684881510, -0.695688535376801200, -0.695652617329499010, -0.695616697543065770, -0.695580776017590940, +-0.695544852753164130, -0.695508927749875160, -0.695473001007813840, -0.695437072527070100, -0.695401142307733640, -0.695365210349894290, -0.695329276653641300, -0.695293341219065830, +-0.695257404046256910, -0.695221465135304470, -0.695185524486298450, -0.695149582099328530, -0.695113637974484780, -0.695077692111856220, -0.695041744511534000, -0.695005795173607500, +-0.694969844098166530, -0.694933891285300920, -0.694897936735100590, -0.694861980447655350, -0.694826022423055250, -0.694790062661389430, -0.694754101162749160, -0.694718137927223480, +-0.694682172954902530, -0.694646206245876140, -0.694610237800234340, -0.694574267618066840, -0.694538295699463020, -0.694502322044514120, -0.694466346653309420, -0.694430369525938950, +-0.694394390662492420, -0.694358410063059980, -0.694322427727731450, -0.694286443656596970, -0.694250457849745590, -0.694214470307268790, -0.694178481029255830, -0.694142490015796640, +-0.694106497266981260, -0.694070502782899610, -0.694034506563641740, -0.693998508609296900, -0.693962508919956480, -0.693926507495709720, -0.693890504336646790, -0.693854499442857490, +-0.693818492814431980, -0.693782484451460290, -0.693746474354032360, -0.693710462522238220, -0.693674448956167370, -0.693638433655910940, -0.693602416621558420, -0.693566397853199960, +-0.693530377350925380, -0.693494355114824930, -0.693458331144988000, -0.693422305441505740, -0.693386278004467840, -0.693350248833964230, -0.693314217930084960, -0.693278185292920180, +-0.693242150922559920, -0.693206114819094220, -0.693170076982613350, -0.693134037413206560, -0.693097996110965340, -0.693061953075979180, -0.693025908308338100, -0.692989861808132270, +-0.692953813575451720, -0.692917763610386710, -0.692881711913026610, -0.692845658483462800, -0.692809603321784980, -0.692773546428083090, -0.692737487802447370, -0.692701427444967880, +-0.692665365355734860, -0.692629301534838370, -0.692593235982367990, -0.692557168698415220, -0.692521099683069520, -0.692485028936421050, -0.692448956458560080, -0.692412882249576640, +-0.692376806309561000, -0.692340728638602740, -0.692304649236793250, -0.692268568104222100, -0.692232485240979580, -0.692196400647155930, -0.692160314322841200, -0.692124226268125640, +-0.692088136483099640, -0.692052044967852550, -0.692015951722475990, -0.691979856747059640, -0.691943760041693560, -0.691907661606468110, -0.691871561441473440, -0.691835459546800040, +-0.691799355922537160, -0.691763250568776630, -0.691727143485608040, -0.691691034673121430, -0.691654924131407390, -0.691618811860555960, -0.691582697860657510, -0.691546582131802310, +-0.691510464674080620, -0.691474345487582130, -0.691438224572398450, -0.691402101928619280, -0.691365977556334780, -0.691329851455635300, -0.691293723626611230, -0.691257594069352280, +-0.691221462783949910, -0.691185329770493850, -0.691149195029074570, -0.691113058559782220, -0.691076920362707290, -0.691040780437939930, -0.691004638785570720, -0.690968495405689940, +-0.690932350298387290, -0.690896203463754240, -0.690860054901880850, -0.690823904612857250, -0.690787752596773940, -0.690751598853721170, -0.690715443383789540, -0.690679286187068530, +-0.690643127263649960, -0.690606966613623640, -0.690570804237079840, -0.690534640134109030, -0.690498474304801710, -0.690462306749248130, -0.690426137467538780, -0.690389966459763470, +-0.690353793726013910, -0.690317619266379800, -0.690281443080951630, -0.690245265169819880, -0.690209085533075030, -0.690172904170807460, -0.690136721083106860, -0.690100536270065180, +-0.690064349731772220, -0.690028161468318360, -0.689991971479794080, -0.689955779766289860, -0.689919586327896180, -0.689883391164703540, -0.689847194276801750, -0.689810995664282610, +-0.689774795327236070, -0.689738593265752490, -0.689702389479922460, -0.689666183969836480, -0.689629976735584900, -0.689593767777257890, -0.689557557094947040, -0.689521344688742270, +-0.689485130558734170, -0.689448914705013240, -0.689412697127670060, -0.689376477826795010, -0.689340256802478900, -0.689304034054812110, -0.689267809583884670, -0.689231583389788180, +-0.689195355472612900, -0.689159125832449090, -0.689122894469387570, -0.689086661383518710, -0.689050426574932650, -0.689014190043721110, -0.688977951789974120, -0.688941711813782280, +-0.688905470115236060, -0.688869226694426300, -0.688832981551443350, -0.688796734686378030, -0.688760486099320830, -0.688724235790361790, -0.688687983759592840, -0.688651730007103890, +-0.688615474532985660, -0.688579217337328630, -0.688542958420223620, -0.688506697781761320, -0.688470435422031460, -0.688434171341126280, -0.688397905539135600, -0.688361638016150130, +-0.688325368772260690, -0.688289097807557760, -0.688252825122132040, -0.688216550716074350, -0.688180274589474510, -0.688143996742424770, -0.688107717175014950, -0.688071435887335880, +-0.688035152879478140, -0.687998868151532660, -0.687962581703589930, -0.687926293535740090, -0.687890003648075180, -0.687853712040685240, -0.687817418713660980, -0.687781123667093320, +-0.687744826901072750, -0.687708528415690080, -0.687672228211036130, -0.687635926287200940, -0.687599622644276650, -0.687563317282353200, -0.687527010201521630, -0.687490701401872410, +-0.687454390883496470, -0.687418078646484520, -0.687381764690926710, -0.687345449016915190, -0.687309131624539990, -0.687272812513892050, -0.687236491685061960, -0.687200169138140750, +-0.687163844873219020, -0.687127518890387810, -0.687091191189737720, -0.687054861771358990, -0.687018530635343680, -0.686982197781782160, -0.686945863210765120, -0.686909526922383500, +-0.686873188916727880, -0.686836849193888770, -0.686800507753958180, -0.686764164597026380, -0.686727819723184090, -0.686691473132522210, -0.686655124825131690, -0.686618774801103340, +-0.686582423060528080, -0.686546069603496730, -0.686509714430099560, -0.686473357540428820, -0.686436998934574660, -0.686400638612628010, -0.686364276574679690, -0.686327912820820730, +-0.686291547351141950, -0.686255180165733720, -0.686218811264688200, -0.686182440648095640, -0.686146068316046960, -0.686109694268633000, -0.686073318505944880, -0.686036941028073550, +-0.686000561835109820, -0.685964180927144060, -0.685927798304268420, -0.685891413966573270, -0.685855027914149650, -0.685818640147088490, -0.685782250665480710, -0.685745859469417240, +-0.685709466558988570, -0.685673071934286840, -0.685636675595402420, -0.685600277542426250, -0.685563877775449470, -0.685527476294562900, -0.685491073099857800, -0.685454668191424870, +-0.685418261569354700, -0.685381853233739570, -0.685345443184669720, -0.685309031422236310, -0.685272617946530270, -0.685236202757642740, -0.685199785855664660, -0.685163367240686490, +-0.685126946912800520, -0.685090524872097210, -0.685054101118667600, -0.685017675652602740, -0.684981248473993660, -0.684944819582931410, -0.684908388979507230, -0.684871956663812060, +-0.684835522635936280, -0.684799086895972350, -0.684762649444010770, -0.684726210280142470, -0.684689769404458690, -0.684653326817050490, -0.684616882518008340, -0.684580436507424730, +-0.684543988785389910, -0.684507539351995040, -0.684471088207331490, -0.684434635351490070, -0.684398180784562160, -0.684361724506638790, -0.684325266517811110, -0.684288806818169610, +-0.684252345407806770, -0.684215882286812960, -0.684179417455279550, -0.684142950913297580, -0.684106482660958190, -0.684070012698352550, -0.684033541025571350, -0.683997067642706850, +-0.683960592549849760, -0.683924115747091220, -0.683887637234522280, -0.683851157012234310, -0.683814675080318460, -0.683778191438865870, -0.683741706087967140, -0.683705219027714860, +-0.683668730258199410, -0.683632239779512260, -0.683595747591744460, -0.683559253694987380, -0.683522758089332050, -0.683486260774869180, -0.683449761751691360, -0.683413261019889200, +-0.683376758579553820, -0.683340254430776510, -0.683303748573648620, -0.683267241008261310, -0.683230731734705830, -0.683194220753073010, -0.683157708063455220, -0.683121193665943150, +-0.683084677560628180, -0.683048159747601470, -0.683011640226954380, -0.682975118998778160, -0.682938596063163430, -0.682902071420202980, -0.682865545069987200, -0.682829017012607680, +-0.682792487248155670, -0.682755955776722320, -0.682719422598399130, -0.682682887713277340, -0.682646351121448450, -0.682609812823002930, -0.682573272818033480, -0.682536731106630930, +-0.682500187688886540, -0.682463642564891670, -0.682427095734737700, -0.682390547198515440, -0.682353996956317270, -0.682317445008234210, -0.682280891354357540, -0.682244335994778630, +-0.682207778929588950, -0.682171220158879770, -0.682134659682742450, -0.682098097501268600, -0.682061533614548800, -0.682024968022675870, -0.681988400725740520, -0.681951831723834110, +-0.681915261017048140, -0.681878688605473960, -0.681842114489203180, -0.681805538668326380, -0.681768961142936390, -0.681732381913124020, -0.681695800978980750, -0.681659218340597840, +-0.681622633998067000, -0.681586047951479590, -0.681549460200926990, -0.681512870746500130, -0.681476279588291710, -0.681439686726392550, -0.681403092160894230, -0.681366495891888140, +-0.681329897919465970, -0.681293298243718870, -0.681256696864738000, -0.681220093782615940, -0.681183488997443630, -0.681146882509312660, -0.681110274318314500, -0.681073664424540650, +-0.681037052828082580, -0.681000439529031890, -0.680963824527479500, -0.680927207823518230, -0.680890589417238790, -0.680853969308732990, -0.680817347498092310, -0.680780723985408230, +-0.680744098770772240, -0.680707471854275490, -0.680670843236010570, -0.680634212916068740, -0.680597580894541140, -0.680560947171519710, -0.680524311747095930, -0.680487674621361390, +-0.680451035794407580, -0.680414395266326300, -0.680377753037208270, -0.680341109107146510, -0.680304463476232080, -0.680267816144556340, -0.680231167112211210, -0.680194516379288070, +-0.680157863945878070, -0.680121209812073910, -0.680084553977966850, -0.680047896443648380, -0.680011237209210200, -0.679974576274743890, -0.679937913640341170, -0.679901249306093640, +-0.679864583272092980, -0.679827915538430140, -0.679791246105198250, -0.679754574972488260, -0.679717902140391850, -0.679681227609000630, -0.679644551378406400, -0.679607873448700110, +-0.679571193819974660, -0.679534512492321440, -0.679497829465831820, -0.679461144740597600, -0.679424458316710610, -0.679387770194262440, -0.679351080373344800, -0.679314388854049490, +-0.679277695636467560, -0.679241000720692050, -0.679204304106813980, -0.679167605794925300, -0.679130905785117480, -0.679094204077482440, -0.679057500672111790, -0.679020795569096890, +-0.678984088768530560, -0.678947380270504050, -0.678910670075109080, -0.678873958182437450, -0.678837244592580880, -0.678800529305631170, -0.678763812321680260, -0.678727093640819070, +-0.678690373263140740, -0.678653651188736660, -0.678616927417698300, -0.678580201950117700, -0.678543474786086560, -0.678506745925696710, -0.678470015369039390, -0.678433283116207650, +-0.678396549167292750, -0.678359813522386500, -0.678323076181580610, -0.678286337144967110, -0.678249596412637710, -0.678212853984684340, -0.678176109861198920, -0.678139364042272490, +-0.678102616527998300, -0.678065867318467630, -0.678029116413772170, -0.677992363814004070, -0.677955609519254930, -0.677918853529616230, -0.677882095845181000, -0.677845336466040500, +-0.677808575392286670, -0.677771812624011430, -0.677735048161306590, -0.677698282004264190, -0.677661514152976040, -0.677624744607534190, -0.677587973368029780, -0.677551200434556080, +-0.677514425807204330, -0.677477649486066590, -0.677440871471234770, -0.677404091762800700, -0.677367310360855730, -0.677330527265493140, -0.677293742476804290, -0.677256955994881120, +-0.677220167819815420, -0.677183377951699360, -0.677146586390624860, -0.677109793136683960, -0.677072998189968470, -0.677036201550569870, -0.676999403218581430, -0.676962603194094510, +-0.676925801477201050, -0.676888998067993080, -0.676852192966562630, -0.676815386173001740, -0.676778577687401680, -0.676741767509855820, -0.676704955640455630, -0.676668142079292930, +-0.676631326826459880, -0.676594509882048610, -0.676557691246150950, -0.676520870918859150, -0.676484048900264480, -0.676447225190460410, -0.676410399789538210, -0.676373572697590020, +-0.676336743914707880, -0.676299913440983950, -0.676263081276510250, -0.676226247421378050, -0.676189411875681050, -0.676152574639510400, -0.676115735712958350, -0.676078895096116960, +-0.676042052789078360, -0.676005208791934600, -0.675968363104777810, -0.675931515727700160, -0.675894666660793010, -0.675857815904149840, -0.675820963457862130, -0.675784109322022040, +-0.675747253496721710, -0.675710395982053290, -0.675673536778108150, -0.675636675884979780, -0.675599813302759760, -0.675562949031540240, -0.675526083071413370, -0.675489215422471200, +-0.675452346084806090, -0.675415475058509960, -0.675378602343675300, -0.675341727940393380, -0.675304851848757880, -0.675267974068860190, -0.675231094600792560, -0.675194213444647250, +-0.675157330600516410, -0.675120446068491530, -0.675083559848666190, -0.675046671941131990, -0.675009782345981080, -0.674972891063305820, -0.674935998093198150, -0.674899103435750660, +-0.674862207091055270, -0.674825309059204460, -0.674788409340289720, -0.674751507934404530, -0.674714604841640590, -0.674677700062090270, -0.674640793595845500, -0.674603885442998870, +-0.674566975603642540, -0.674530064077868090, -0.674493150865769110, -0.674456235967437310, -0.674419319382964840, -0.674382401112444070, -0.674345481155967370, -0.674308559513626890, +-0.674271636185515110, -0.674234711171723510, -0.674197784472345800, -0.674160856087473670, -0.674123926017199280, -0.674086994261615220, -0.674050060820813530, -0.674013125694886810, +-0.673976188883926630, -0.673939250388026600, -0.673902310207278420, -0.673865368341774460, -0.673828424791607090, -0.673791479556868690, -0.673754532637651500, -0.673717584034048130, +-0.673680633746150730, -0.673643681774050980, -0.673606728117842830, -0.673569772777617870, -0.673532815753468350, -0.673495857045486870, -0.673458896653765680, -0.673421934578396720, +-0.673384970819473460, -0.673348005377087830, -0.673311038251332210, -0.673274069442298950, -0.673237098950080550, -0.673200126774769370, -0.673163152916457900, -0.673126177375238500, +-0.673089200151202990, -0.673052221244445190, -0.673015240655056910, -0.672978258383130410, -0.672941274428758280, -0.672904288792033010, -0.672867301473046410, -0.672830312471892070, +-0.672793321788662020, -0.672756329423448650, -0.672719335376344540, -0.672682339647441950, -0.672645342236833590, -0.672608343144611930, -0.672571342370869350, -0.672534339915697780, +-0.672497335779191020, -0.672460329961440890, -0.672423322462539890, -0.672386313282580690, -0.672349302421655580, -0.672312289879857250, -0.672275275657277630, -0.672238259754010410, +-0.672201242170147540, -0.672164222905781590, -0.672127201961005170, -0.672090179335910640, -0.672053155030590600, -0.672016129045137740, -0.671979101379643890, -0.671942072034202980, +-0.671905041008906910, -0.671868008303848190, -0.671830973919119500, -0.671793937854813340, -0.671756900111022290, -0.671719860687838400, -0.671682819585355470, -0.671645776803665550, +-0.671608732342861110, -0.671571686203034870, -0.671534638384279400, -0.671497588886687420, -0.671460537710351410, -0.671423484855363300, -0.671386430321817330, -0.671349374109805110, +-0.671312316219419560, -0.671275256650753160, -0.671238195403898620, -0.671201132478948640, -0.671164067875995140, -0.671127001595132170, -0.671089933636451640, -0.671052864000046380, +-0.671015792686008860, -0.670978719694431900, -0.670941645025408100, -0.670904568679030140, -0.670867490655390860, -0.670830410954582180, -0.670793329576698130, -0.670756246521830750, +-0.670719161790072740, -0.670682075381516810, -0.670644987296255660, -0.670607897534381440, -0.670570806095988180, -0.670533712981167820, -0.670496618190013270, -0.670459521722617140, +-0.670422423579072110, -0.670385323759471130, -0.670348222263906780, -0.670311119092471990, -0.670274014245258560, -0.670236907722360890, -0.670199799523870880, -0.670162689649881460, +-0.670125578100485230, -0.670088464875775110, -0.670051349975843810, -0.670014233400783480, -0.669977115150688140, -0.669939995225650180, -0.669902873625762060, -0.669865750351116840, +-0.669828625401807320, -0.669791498777926100, -0.669754370479566210, -0.669717240506819690, -0.669680108859780800, -0.669642975538541570, -0.669605840543194940, -0.669568703873833710, +-0.669531565530550710, -0.669494425513438740, -0.669457283822590070, -0.669420140458098940, -0.669382995420057410, -0.669345848708558290, -0.669308700323694720, -0.669271550265559290, +-0.669234398534245050, -0.669197245129844690, -0.669160090052450700, -0.669122933302157110, -0.669085774879056070, -0.669048614783240740, -0.669011453014803800, -0.668974289573838200, +-0.668937124460436960, -0.668899957674692240, -0.668862789216698280, -0.668825619086547360, -0.668788447284332290, -0.668751273810146210, -0.668714098664081820, -0.668676921846232290, +-0.668639743356690520, -0.668602563195549230, -0.668565381362901000, -0.668528197858839990, -0.668491012683458340, -0.668453825836849310, -0.668416637319105610, -0.668379447130320380, +-0.668342255270585770, -0.668305061739996380, -0.668267866538644120, -0.668230669666622370, -0.668193471124023830, -0.668156270910941650, -0.668119069027468760, -0.668081865473698300, +-0.668044660249723090, -0.668007453355635490, -0.667970244791530110, -0.667933034557498970, -0.667895822653635340, -0.667858609080032140, -0.667821393836782300, -0.667784176923979070, +-0.667746958341714820, -0.667709738090083720, -0.667672516169178330, -0.667635292579091600, -0.667598067319916670, -0.667560840391746570, -0.667523611794674340, -0.667486381528793030, +-0.667449149594195210, -0.667411915990975160, -0.667374680719225340, -0.667337443779038700, -0.667300205170508590, -0.667262964893727940, -0.667225722948789790, -0.667188479335786730, +-0.667151234054813140, -0.667113987105961480, -0.667076738489324810, -0.667039488204996370, -0.667002236253069090, -0.666964982633636350, -0.666927727346791070, -0.666890470392625830, +-0.666853211771235130, -0.666815951482711330, -0.666778689527147690, -0.666741425904637250, -0.666704160615273270, -0.666666893659149000, -0.666629625036356700, -0.666592354746991080, +-0.666555082791144500, -0.666517809168910350, -0.666480533880381530, -0.666443256925651430, -0.666405978304813180, -0.666368698017960060, -0.666331416065185090, -0.666294132446580980, +-0.666256847162242210, -0.666219560212261250, -0.666182271596731490, -0.666144981315745950, -0.666107689369398010, -0.666070395757780150, -0.666033100480986960, -0.665995803539111140, +-0.665958504932245620, -0.665921204660483990, -0.665883902723919290, -0.665846599122644880, -0.665809293856753910, -0.665771986926339760, -0.665734678331494910, -0.665697368072314060, +-0.665660056148889790, -0.665622742561315480, -0.665585427309684170, -0.665548110394089340, -0.665510791814624250, -0.665473471571381480, -0.665436149664455740, -0.665398826093939630, +-0.665361500859926400, -0.665324173962509420, -0.665286845401782070, -0.665249515177837590, -0.665212183290769250, -0.665174849740669870, -0.665137514527634030, -0.665100177651754330, +-0.665062839113124250, -0.665025498911837040, -0.664988157047986080, -0.664950813521664740, -0.664913468332965720, -0.664876121481983720, -0.664838772968811330, -0.664801422793542150, +-0.664764070956269220, -0.664726717457086220, -0.664689362296086440, -0.664652005473363230, -0.664614646989009410, -0.664577286843119560, -0.664539925035786520, -0.664502561567103630, +-0.664465196437164400, -0.664427829646062060, -0.664390461193890220, -0.664353091080741590, -0.664315719306710850, -0.664278345871890830, -0.664240970776375010, -0.664203594020256750, +-0.664166215603629430, -0.664128835526586640, -0.664091453789221630, -0.664054070391628120, -0.664016685333898790, -0.663979298616128370, -0.663941910238409650, -0.663904520200836230, +-0.663867128503501380, -0.663829735146498790, -0.663792340129921280, -0.663754943453863430, -0.663717545118418410, -0.663680145123679340, -0.663642743469740060, -0.663605340156693810, +-0.663567935184634310, -0.663530528553654910, -0.663493120263849210, -0.663455710315309920, -0.663418298708132180, -0.663380885442408590, -0.663343470518232840, -0.663306053935698410, +-0.663268635694898910, -0.663231215795927700, -0.663193794238877920, -0.663156371023844170, -0.663118946150919600, -0.663081519620197680, -0.663044091431771900, -0.663006661585735850, +-0.662969230082183230, -0.662931796921207520, -0.662894362102901650, -0.662856925627360540, -0.662819487494677120, -0.662782047704944980, -0.662744606258257600, -0.662707163154708900, +-0.662669718394392150, -0.662632271977400490, -0.662594823903828840, -0.662557374173770140, -0.662519922787317970, -0.662482469744565930, -0.662445015045607820, -0.662407558690537130, +-0.662370100679447570, -0.662332641012432060, -0.662295179689585620, -0.662257716711001310, -0.662220252076772600, -0.662182785786993300, -0.662145317841757010, -0.662107848241157430, +-0.662070376985287590, -0.662032904074242530, -0.661995429508115070, -0.661957953286999130, -0.661920475410988310, -0.661882995880176290, -0.661845514694656800, -0.661808031854523530, +-0.661770547359870060, -0.661733061210789670, -0.661695573407377280, -0.661658083949725920, -0.661620592837929400, -0.661583100072081320, -0.661545605652275600, -0.661508109578605170, +-0.661470611851165070, -0.661433112470048550, -0.661395611435349080, -0.661358108747160720, -0.661320604405577050, -0.661283098410691880, -0.661245590762598920, -0.661208081461391980, +-0.661170570507164210, -0.661133057900010760, -0.661095543640024540, -0.661058027727299490, -0.661020510161929420, -0.660982990944008030, -0.660945470073629140, -0.660907947550885890, +-0.660870423375873540, -0.660832897548685020, -0.660795370069414360, -0.660757840938155260, -0.660720310155001430, -0.660682777720047020, -0.660645243633385500, -0.660607707895110360, +-0.660570170505316520, -0.660532631464097240, -0.660495090771546330, -0.660457548427757830, -0.660420004432825450, -0.660382458786842990, -0.660344911489903710, -0.660307362542102870, +-0.660269811943533510, -0.660232259694289780, -0.660194705794465260, -0.660157150244154110, -0.660119593043450030, -0.660082034192446930, -0.660044473691238090, -0.660006911539918750, +-0.659969347738582180, -0.659931782287322190, -0.659894215186232700, -0.659856646435407760, -0.659819076034941170, -0.659781503984926190, -0.659743930285458080, -0.659706354936630210, +-0.659668777938536510, -0.659631199291270790, -0.659593618994927080, -0.659556037049599310, -0.659518453455381510, -0.659480868212367510, -0.659443281320650660, -0.659405692780326350, +-0.659368102591487810, -0.659330510754228990, -0.659292917268643810, -0.659255322134826400, -0.659217725352870040, -0.659180126922870090, -0.659142526844919700, -0.659104925119113010, +-0.659067321745544050, -0.659029716724306770, -0.658992110055495180, -0.658954501739203340, -0.658916891775525260, -0.658879280164554330, -0.658841666906385790, -0.658804052001113140, +-0.658766435448830290, -0.658728817249631390, -0.658691197403610370, -0.658653575910861490, -0.658615952771477890, -0.658578327985555160, -0.658540701553186560, -0.658503073474466240, +-0.658465443749488230, -0.658427812378346580, -0.658390179361135420, -0.658352544697948790, -0.658314908388880180, -0.658277270434024950, -0.658239630833476470, -0.658201989587329010, +-0.658164346695676580, -0.658126702158613240, -0.658089055976233130, -0.658051408148629720, -0.658013758675898510, -0.657976107558132850, -0.657938454795426900, -0.657900800387874910, +-0.657863144335570800, -0.657825486638608960, -0.657787827297083290, -0.657750166311087400, -0.657712503680716880, -0.657674839406064970, -0.657637173487225950, -0.657599505924294060, +-0.657561836717363460, -0.657524165866528180, -0.657486493371881810, -0.657448819233519940, -0.657411143451535950, -0.657373466026024200, -0.657335786957078730, -0.657298106244793790, +-0.657260423889263530, -0.657222739890582330, -0.657185054248844210, -0.657147366964142780, -0.657109678036573610, -0.657071987466230190, -0.657034295253206890, -0.656996601397597860, +-0.656958905899497240, -0.656921208758998730, -0.656883509976197820, -0.656845809551188210, -0.656808107484064040, -0.656770403774919690, -0.656732698423849180, -0.656694991430947010, +-0.656657282796307420, -0.656619572520024560, -0.656581860602192040, -0.656544147042905650, -0.656506431842258760, -0.656468715000345870, -0.656430996517261220, -0.656393276393099080, +-0.656355554627953030, -0.656317831221918780, -0.656280106175089920, -0.656242379487560920, -0.656204651159425830, -0.656166921190779130, -0.656129189581715180, -0.656091456332328240, +-0.656053721442712680, -0.656015984912962090, -0.655978246743172290, -0.655940506933436750, -0.655902765483850070, -0.655865022394506390, -0.655827277665500200, -0.655789531296925850, +-0.655751783288876950, -0.655714033641449310, -0.655676282354736520, -0.655638529428833050, -0.655600774863833280, -0.655563018659831460, -0.655525260816922200, -0.655487501335199840, +-0.655449740214757990, -0.655411977455692460, -0.655374213058096950, -0.655336447022065950, -0.655298679347693810, -0.655260910035075030, -0.655223139084303850, -0.655185366495474320, +-0.655147592268681910, -0.655109816404020550, -0.655072038901584720, -0.655034259761468670, -0.654996478983767120, -0.654958696568574310, -0.654920912515984720, -0.654883126826092840, +-0.654845339498992480, -0.654807550534779460, -0.654769759933547580, -0.654731967695391330, -0.654694173820405180, -0.654656378308683510, -0.654618581160320230, -0.654580782375411170, +-0.654542981954050250, -0.654505179896331720, -0.654467376202350400, -0.654429570872200550, -0.654391763905976750, -0.654353955303773600, -0.654316145065685580, -0.654278333191806390, +-0.654240519682232180, -0.654202704537056650, -0.654164887756374270, -0.654127069340279750, -0.654089249288867580, -0.654051427602231560, -0.654013604280467620, -0.653975779323669790, +-0.653937952731932450, -0.653900124505350180, -0.653862294644017570, -0.653824463148029330, -0.653786630017479830, -0.653748795252463880, -0.653710958853075170, -0.653673120819409760, +-0.653635281151561550, -0.653597439849625150, -0.653559596913695140, -0.653521752343866110, -0.653483906140232770, -0.653446058302888930, -0.653408208831930630, -0.653370357727451890, +-0.653332504989547090, -0.653294650618311160, -0.653256794613838570, -0.653218936976224020, -0.653181077705562110, -0.653143216801946870, -0.653105354265474110, -0.653067490096238100, +-0.653029624294333310, -0.652991756859854560, -0.652953887792896310, -0.652916017093553290, -0.652878144761919630, -0.652840270798091370, -0.652802395202162320, -0.652764517974227300, +-0.652726639114381000, -0.652688758622718130, -0.652650876499333290, -0.652612992744321390, -0.652575107357776910, -0.652537220339794000, -0.652499331690468700, -0.652461441409895040, +-0.652423549498167830, -0.652385655955381780, -0.652347760781631480, -0.652309863977011180, -0.652271965541616930, -0.652234065475542750, -0.652196163778883340, -0.652158260451733530, +-0.652120355494188120, -0.652082448906341820, -0.652044540688289320, -0.652006630840125560, -0.651968719361944560, -0.651930806253842370, -0.651892891515913230, -0.651854975148251750, +-0.651817057150952950, -0.651779137524111430, -0.651741216267821440, -0.651703293382179030, -0.651665368867278440, -0.651627442723214380, -0.651589514950081770, -0.651551585547975320, +-0.651513654516989950, -0.651475721857220470, -0.651437787568761580, -0.651399851651707660, -0.651361914106154740, -0.651323974932197070, -0.651286034129929360, -0.651248091699446640, +-0.651210147640843730, -0.651172201954215320, -0.651134254639655910, -0.651096305697261400, -0.651058355127126180, -0.651020402929345040, -0.650982449104012930, -0.650944493651224640, +-0.650906536571075220, -0.650868577863659370, -0.650830617529071450, -0.650792655567407620, -0.650754691978762120, -0.650716726763230000, -0.650678759920905960, -0.650640791451885030, +-0.650602821356262240, -0.650564849634131640, -0.650526876285589580, -0.650488901310730340, -0.650450924709648830, -0.650412946482439970, -0.650374966629198800, -0.650336985150020250, +-0.650299002044999240, -0.650261017314230030, -0.650223030957808870, -0.650185042975830240, -0.650147053368388850, -0.650109062135579950, -0.650071069277498470, -0.650033074794239220, +-0.649995078685896570, -0.649957080952566990, -0.649919081594344640, -0.649881080611324550, -0.649843078003601860, -0.649805073771271390, -0.649767067914428290, -0.649729060433167470, +-0.649691051327584090, -0.649653040597772400, -0.649615028243828660, -0.649577014265847460, -0.649538998663923730, -0.649500981438152380, -0.649462962588628680, -0.649424942115446880, +-0.649386920018703460, -0.649348896298492680, -0.649310870954909580, -0.649272843988049410, -0.649234815398007200, -0.649196785184877780, -0.649158753348756500, -0.649120719889738300, +-0.649082684807917640, -0.649044648103390910, -0.649006609776252570, -0.648968569826597790, -0.648930528254521470, -0.648892485060118980, -0.648854440243485150, -0.648816393804714560, +-0.648778345743903690, -0.648740296061146910, -0.648702244756539370, -0.648664191830176320, -0.648626137282152790, -0.648588081112563830, -0.648550023321504690, -0.648511963909069840, +-0.648473902875355780, -0.648435840220456860, -0.648397775944468460, -0.648359710047485600, -0.648321642529603450, -0.648283573390917130, -0.648245502631521250, -0.648207430251512280, +-0.648169356250984710, -0.648131280630033780, -0.648093203388754760, -0.648055124527242570, -0.648017044045592570, -0.647978961943900030, -0.647940878222259430, -0.647902792880767240, +-0.647864705919518170, -0.647826617338607250, -0.647788527138129840, -0.647750435318180990, -0.647712341878856180, -0.647674246820249770, -0.647636150142458460, -0.647598051845576840, +-0.647559951929699950, -0.647521850394923270, -0.647483747241341940, -0.647445642469051230, -0.647407536078146490, -0.647369428068722770, -0.647331318440874880, -0.647293207194699400, +-0.647255094330290830, -0.647216979847744620, -0.647178863747155940, -0.647140746028620040, -0.647102626692231620, -0.647064505738087270, -0.647026383166281800, -0.646988258976910260, +-0.646950133170068110, -0.646912005745850620, -0.646873876704353030, -0.646835746045670850, -0.646797613769899300, -0.646759479877133000, -0.646721344367468640, -0.646683207241001030, +-0.646645068497825330, -0.646606928138037000, -0.646568786161731300, -0.646530642569003610, -0.646492497359948740, -0.646454350534663270, -0.646416202093241910, -0.646378052035780030, +-0.646339900362372990, -0.646301747073116270, -0.646263592168105140, -0.646225435647435060, -0.646187277511200640, -0.646149117759498790, -0.646110956392424110, -0.646072793410072070, +-0.646034628812538040, -0.645996462599917390, -0.645958294772305600, -0.645920125329797370, -0.645881954272489620, -0.645843781600476840, -0.645805607313854720, -0.645767431412718530, +-0.645729253897163740, -0.645691074767285930, -0.645652894023180270, -0.645614711664941780, -0.645576527692667160, -0.645538342106451330, -0.645500154906389570, -0.645461966092577330, +-0.645423775665110330, -0.645385583624083830, -0.645347389969592620, -0.645309194701733650, -0.645270997820601710, -0.645232799326292290, -0.645194599218900880, -0.645156397498523050, +-0.645118194165254070, -0.645079989219189630, -0.645041782660425330, -0.645003574489055760, -0.644965364705178070, -0.644927153308886840, -0.644888940300277770, -0.644850725679446460, +-0.644812509446488160, -0.644774291601498020, -0.644736072144572740, -0.644697851075807350, -0.644659628395297330, -0.644621404103138280, -0.644583178199425680, -0.644544950684255100, +-0.644506721557722150, -0.644468490819922410, -0.644430258470950810, -0.644392024510904160, -0.644353788939877490, -0.644315551757966400, -0.644277312965266360, -0.644239072561873070, +-0.644200830547882020, -0.644162586923388350, -0.644124341688488760, -0.644086094843278390, -0.644047846387852730, -0.644009596322307590, -0.643971344646738330, -0.643933091361240770, +-0.643894836465910390, -0.643856579960842330, -0.643818321846133520, -0.643780062121878880, -0.643741800788174000, -0.643703537845114690, -0.643665273292796550, -0.643627007131315270, +-0.643588739360765660, -0.643550469981244990, -0.643512198992848060, -0.643473926395670690, -0.643435652189808470, -0.643397376375357210, -0.643359098952412390, -0.643320819921069930, +-0.643282539281424650, -0.643244257033573800, -0.643205973177612190, -0.643167687713635750, -0.643129400641740070, -0.643091111962020840, -0.643052821674573780, -0.643014529779494140, +-0.642976236276878720, -0.642937941166822790, -0.642899644449421940, -0.642861346124772080, -0.642823046192968820, -0.642784744654107840, -0.642746441508285080, -0.642708136755596240, +-0.642669830396136450, -0.642631522430002660, -0.642593212857289990, -0.642554901678094370, -0.642516588892511510, -0.642478274500637210, -0.642439958502566520, -0.642401640898396580, +-0.642363321688222520, -0.642325000872140170, -0.642286678450245450, -0.642248354422633840, -0.642210028789401480, -0.642171701550643960, -0.642133372706457210, -0.642095042256936370, +-0.642056710202178580, -0.642018376542279110, -0.641980041277333550, -0.641941704407437920, -0.641903365932688150, -0.641865025853179840, -0.641826684169008340, -0.641788340880270810, +-0.641749995987062390, -0.641711649489479010, -0.641673301387616470, -0.641634951681570700, -0.641596600371437620, -0.641558247457312940, -0.641519892939292010, -0.641481536817472000, +-0.641443179091948150, -0.641404819762816380, -0.641366458830172630, -0.641328096294112580, -0.641289732154732390, -0.641251366412127210, -0.641212999066394170, -0.641174630117628760, +-0.641136259565926680, -0.641097887411384070, -0.641059513654096640, -0.641021138294160410, -0.640982761331671420, -0.640944382766724830, -0.640906002599417880, -0.640867620829846050, +-0.640829237458105050, -0.640790852484291020, -0.640752465908499880, -0.640714077730827560, -0.640675687951369310, -0.640637296570222610, -0.640598903587482620, -0.640560509003245350, +-0.640522112817606850, -0.640483715030663040, -0.640445315642509950, -0.640406914653243510, -0.640368512062959860, -0.640330107871754260, -0.640291702079724080, -0.640253294686964570, +-0.640214885693571880, -0.640176475099641930, -0.640138062905270870, -0.640099649110553950, -0.640061233715588540, -0.640022816720470010, -0.639984398125294510, -0.639945977930157950, +-0.639907556135156600, -0.639869132740386260, -0.639830707745943080, -0.639792281151923100, -0.639753852958421800, -0.639715423165536530, -0.639676991773362680, -0.639638558781996380, +-0.639600124191533670, -0.639561688002070580, -0.639523250213703380, -0.639484810826527310, -0.639446369840639960, -0.639407927256136600, -0.639369483073113480, -0.639331037291666630, +-0.639292589911892200, -0.639254140933886330, -0.639215690357745060, -0.639177238183563870, -0.639138784411440340, -0.639100329041469740, -0.639061872073748430, -0.639023413508372330, +-0.638984953345437810, -0.638946491585040800, -0.638908028227276990, -0.638869563272243650, -0.638831096720036570, -0.638792628570751590, -0.638754158824485160, -0.638715687481333230, +-0.638677214541392150, -0.638638740004758070, -0.638600263871526350, -0.638561786141794710, -0.638523306815658610, -0.638484825893214200, -0.638446343374557860, -0.638407859259785490, +-0.638369373548993590, -0.638330886242277520, -0.638292397339734970, -0.638253906841461330, -0.638215414747552940, -0.638176921058106080, -0.638138425773216890, -0.638099928892981620, +-0.638061430417496630, -0.638022930346857970, -0.637984428681161340, -0.637945925420504210, -0.637907420564982400, -0.637868914114691930, -0.637830406069729290, -0.637791896430190520, +-0.637753385196171420, -0.637714872367769470, -0.637676357945080370, -0.637637841928200390, -0.637599324317225770, -0.637560805112252880, -0.637522284313377980, -0.637483761920697330, +-0.637445237934307300, -0.637406712354303570, -0.637368185180783640, -0.637329656413843200, -0.637291126053578740, -0.637252594100086390, -0.637214060553462640, -0.637175525413803620, +-0.637136988681205160, -0.637098450355764960, -0.637059910437578590, -0.637021368926742440, -0.636982825823352860, -0.636944281127506230, -0.636905734839298910, -0.636867186958827160, +-0.636828637486186900, -0.636790086421475610, -0.636751533764789210, -0.636712979516223960, -0.636674423675876230, -0.636635866243842390, -0.636597307220218900, -0.636558746605101480, +-0.636520184398587930, -0.636481620600773850, -0.636443055211755810, -0.636404488231630090, -0.636365919660493050, -0.636327349498441390, -0.636288777745571240, -0.636250204401978440, +-0.636211629467760890, -0.636173052943014180, -0.636134474827834920, -0.636095895122319450, -0.636057313826564160, -0.636018730940665740, -0.635980146464719680, -0.635941560398823990, +-0.635902972743074390, -0.635864383497567350, -0.635825792662399360, -0.635787200237666880, -0.635748606223466520, -0.635710010619894520, -0.635671413427047470, -0.635632814645021300, +-0.635594214273913720, -0.635555612313820630, -0.635517008764838410, -0.635478403627063760, -0.635439796900593050, -0.635401188585522190, -0.635362578681949120, -0.635323967189969530, +-0.635285354109680010, -0.635246739441177160, -0.635208123184557440, -0.635169505339917340, -0.635130885907353560, -0.635092264886962580, -0.635053642278840200, -0.635015018083084360, +-0.634976392299791080, -0.634937764929056740, -0.634899135970978020, -0.634860505425651530, -0.634821873293172970, -0.634783239573640470, -0.634744604267149850, -0.634705967373797700, +-0.634667328893680720, -0.634628688826895380, -0.634590047173538290, -0.634551403933706020, -0.634512759107495380, -0.634474112695002090, -0.634435464696324170, -0.634396815111557650, +-0.634358163940799020, -0.634319511184145090, -0.634280856841692330, -0.634242200913537340, -0.634203543399776250, -0.634164884300506990, -0.634126223615825490, -0.634087561345828440, +-0.634048897490612550, -0.634010232050274290, -0.633971565024910590, -0.633932896414617920, -0.633894226219492320, -0.633855554439631820, -0.633816881075132450, -0.633778206126090820, +-0.633739529592603820, -0.633700851474767850, -0.633662171772679810, -0.633623490486435630, -0.633584807616133450, -0.633546123161869310, -0.633507437123739690, -0.633468749501841620, +-0.633430060296271690, -0.633391369507126490, -0.633352677134502940, -0.633313983178497630, -0.633275287639206820, -0.633236590516728310, -0.633197891811158490, -0.633159191522593810, +-0.633120489651131210, -0.633081786196867390, -0.633043081159898380, -0.633004374540322320, -0.632965666338235370, -0.632926956553734320, -0.632888245186915780, -0.632849532237876660, +-0.632810817706713770, -0.632772101593523820, -0.632733383898403500, -0.632694664621449190, -0.632655943762758800, -0.632617221322428590, -0.632578497300555260, -0.632539771697235740, +-0.632501044512566830, -0.632462315746644580, -0.632423585399567220, -0.632384853471430920, -0.632346119962332480, -0.632307384872368820, -0.632268648201636530, -0.632229909950232760, +-0.632191170118254100, -0.632152428705797580, -0.632113685712959340, -0.632074941139837530, -0.632036194986528410, -0.631997447253128670, -0.631958697939735470, -0.631919947046445500, +-0.631881194573355560, -0.631842440520562040, -0.631803684888163080, -0.631764927676254920, -0.631726168884934380, -0.631687408514298500, -0.631648646564444080, -0.631609883035467940, +-0.631571117927467230, -0.631532351240537970, -0.631493582974778530, -0.631454813130285180, -0.631416041707154710, -0.631377268705484270, -0.631338494125370580, -0.631299717966910650, +-0.631260940230200740, -0.631222160915339110, -0.631183380022422140, -0.631144597551546730, -0.631105813502809810, -0.631067027876308310, -0.631028240672139250, -0.630989451890399680, +-0.630950661531186400, -0.630911869594595780, -0.630873076080726180, -0.630834280989673980, -0.630795484321535980, -0.630756686076409330, -0.630717886254390960, -0.630679084855577110, +-0.630640281880066270, -0.630601477327954680, -0.630562671199339510, -0.630523863494317660, -0.630485054212986060, -0.630446243355441860, -0.630407430921782090, -0.630368616912103660, +-0.630329801326503070, -0.630290984165078670, -0.630252165427926720, -0.630213345115144490, -0.630174523226828760, -0.630135699763076820, -0.630096874723984900, -0.630058048109651490, +-0.630019219920172960, -0.629980390155646440, -0.629941558816168870, -0.629902725901837380, -0.629863891412749120, -0.629825055349001130, -0.629786217710690540, -0.629747378497913730, +-0.629708537710769070, -0.629669695349353130, -0.629630851413762960, -0.629592005904095590, -0.629553158820448270, -0.629514310162918030, -0.629475459931601260, -0.629436608126596630, +-0.629397754748000420, -0.629358899795909870, -0.629320043270422010, -0.629281185171634120, -0.629242325499643210, -0.629203464254546540, -0.629164601436440480, -0.629125737045423630, +-0.629086871081592450, -0.629048003545044090, -0.629009134435875690, -0.628970263754184410, -0.628931391500067490, -0.628892517673621420, -0.628853642274944780, -0.628814765304134050, +-0.628775886761286370, -0.628737006646499010, -0.628698124959869100, -0.628659241701493790, -0.628620356871470550, -0.628581470469896320, -0.628542582496867670, -0.628503692952483320, +-0.628464801836839730, -0.628425909150034160, -0.628387014892163860, -0.628348119063325880, -0.628309221663617020, -0.628270322693135760, -0.628231422151978690, -0.628192520040243170, +-0.628153616358026250, -0.628114711105425270, -0.628075804282537510, -0.628036895889460320, -0.627997985926290860, -0.627959074393125700, -0.627920161290063560, -0.627881246617201020, +-0.627842330374635330, -0.627803412562463970, -0.627764493180783870, -0.627725572229691940, -0.627686649709286780, -0.627647725619664980, -0.627608799960923890, -0.627569872733160780, +-0.627530943936473020, -0.627492013570957850, -0.627453081636712760, -0.627414148133834780, -0.627375213062420830, -0.627336276422569620, -0.627297338214377610, -0.627258398437942290, +-0.627219457093361020, -0.627180514180731060, -0.627141569700149780, -0.627102623651713880, -0.627063676035522160, -0.627024726851671320, -0.626985776100258520, -0.626946823781381330, +-0.626907869895137140, -0.626868914441623290, -0.626829957420937060, -0.626790998833175240, -0.626752038678436650, -0.626713076956817990, -0.626674113668416630, -0.626635148813330050, +-0.626596182391655490, -0.626557214403490550, -0.626518244848931820, -0.626479273728078100, -0.626440301041026330, -0.626401326787873750, -0.626362350968717950, -0.626323373583656200, +-0.626284394632785960, -0.626245414116204820, -0.626206432034009390, -0.626167448386298560, -0.626128463173169170, -0.626089476394718570, -0.626050488051044350, -0.626011498142243770, +-0.625972506668414640, -0.625933513629653440, -0.625894519026059190, -0.625855522857728610, -0.625816525124759160, -0.625777525827248440, -0.625738524965294030, -0.625699522538993190, +-0.625660518548443510, -0.625621512993742580, -0.625582505874987200, -0.625543497192276200, -0.625504486945706590, -0.625465475135375650, -0.625426461761380950, -0.625387446823820190, +-0.625348430322790190, -0.625309412258389650, -0.625270392630715710, -0.625231371439865740, -0.625192348685937320, -0.625153324369028040, -0.625114298489235500, -0.625075271046657170, +-0.625036242041390630, -0.624997211473532820, -0.624958179343182650, -0.624919145650437050, -0.624880110395393600, -0.624841073578149890, -0.624802035198803510, -0.624762995257452050, +-0.624723953754192320, -0.624684910689123460, -0.624645866062342290, -0.624606819873946510, -0.624567772124033580, -0.624528722812701330, -0.624489671940047230, -0.624450619506168980, +-0.624411565511163390, -0.624372509955129720, -0.624333452838164660, -0.624294394160366030, -0.624255333921831410, -0.624216272122658400, -0.624177208762944800, -0.624138143842787430, +-0.624099077362285430, -0.624060009321535710, -0.624020939720635990, -0.623981868559683850, -0.623942795838777100, -0.623903721558013320, -0.623864645717490340, -0.623825568317304960, +-0.623786489357556320, -0.623747408838341570, -0.623708326759758180, -0.623669243121904080, -0.623630157924876750, -0.623591071168774100, -0.623551982853693070, -0.623512892979732780, +-0.623473801546990280, -0.623434708555563270, -0.623395614005549440, -0.623356517897046600, -0.623317420230152570, -0.623278321004964830, -0.623239220221581400, -0.623200117880099100, +-0.623161013980617300, -0.623121908523233010, -0.623082801508043850, -0.623043692935147720, -0.623004582804642330, -0.622965471116624810, -0.622926357871194320, -0.622887243068448000, +-0.622848126708483440, -0.622809008791398670, -0.622769889317291270, -0.622730768286259280, -0.622691645698400300, -0.622652521553812230, -0.622613395852592120, -0.622574268594839220, +-0.622535139780650670, -0.622496009410124280, -0.622456877483357870, -0.622417744000449250, -0.622378608961496220, -0.622339472366596040, -0.622300334215847850, -0.622261194509348800, +-0.622222053247196820, -0.622182910429489700, -0.622143766056325260, -0.622104620127801430, -0.622065472644016020, -0.622026323605066270, -0.621987173011051440, -0.621948020862068570, +-0.621908867158215810, -0.621869711899590730, -0.621830555086291480, -0.621791396718415770, -0.621752236796060840, -0.621713075319326070, -0.621673912288308710, -0.621634747703106450, +-0.621595581563817330, -0.621556413870539280, -0.621517244623370100, -0.621478073822407940, -0.621438901467749830, -0.621399727559495240, -0.621360552097741210, -0.621321375082585890, +-0.621282196514127080, -0.621243016392462820, -0.621203834717691030, -0.621164651489908960, -0.621125466709215980, -0.621086280375709230, -0.621047092489486860, -0.621007903050646680, +-0.620968712059286830, -0.620929519515505120, -0.620890325419399700, -0.620851129771068490, -0.620811932570608630, -0.620772733818119700, -0.620733533513698980, -0.620694331657444360, +-0.620655128249453900, -0.620615923289825620, -0.620576716778656890, -0.620537508716047070, -0.620498299102093420, -0.620459087936894080, -0.620419875220546980, -0.620380660953150250, +-0.620341445134801830, -0.620302227765599850, -0.620263008845642230, -0.620223788375026340, -0.620184566353851770, -0.620145342782215780, -0.620106117660216390, -0.620066890987951760, +-0.620027662765519790, -0.619988432993018760, -0.619949201670545900, -0.619909968798200820, -0.619870734376080760, -0.619831498404283860, -0.619792260882908290, -0.619753021812051940, +-0.619713781191813080, -0.619674539022289860, -0.619635295303579530, -0.619596050035781550, -0.619556803218993650, -0.619517554853313610, -0.619478304938839710, -0.619439053475670080, +-0.619399800463902750, -0.619360545903635210, -0.619321289794967030, -0.619282032137995710, -0.619242772932819260, -0.619203512179535840, -0.619164249878243700, -0.619124986029040870, +-0.619085720632025600, -0.619046453687295270, -0.619007185194949570, -0.618967915155085980, -0.618928643567802530, -0.618889370433197470, -0.618850095751368960, -0.618810819522415230, +-0.618771541746433780, -0.618732262423524080, -0.618692981553783830, -0.618653699137311160, -0.618614415174204120, -0.618575129664561070, -0.618535842608480270, -0.618496554006059850, +-0.618457263857397970, -0.618417972162592310, -0.618378678921742360, -0.618339384134945710, -0.618300087802300610, -0.618260789923905320, -0.618221490499858080, -0.618182189530256390, +-0.618142887015199930, -0.618103582954786180, -0.618064277349113620, -0.618024970198280290, -0.617985661502384430, -0.617946351261524530, -0.617907039475798730, -0.617867726145305380, +-0.617828411270141990, -0.617789094850408230, -0.617749776886201700, -0.617710457377620760, -0.617671136324763780, -0.617631813727728800, -0.617592489586614390, -0.617553163901518040, +-0.617513836672539450, -0.617474507899776310, -0.617435177583326890, -0.617395845723289540, -0.617356512319762520, -0.617317177372844190, -0.617277840882633040, -0.617238502849226540, +-0.617199163272724500, -0.617159822153224510, -0.617120479490824940, -0.617081135285624250, -0.617041789537720600, -0.617002442247212570, -0.616963093414197750, -0.616923743038775840, +-0.616884391121044650, -0.616845037661102440, -0.616805682659047560, -0.616766326114978610, -0.616726968028993740, -0.616687608401191520, -0.616648247231669560, -0.616608884520527640, +-0.616569520267863490, -0.616530154473775680, -0.616490787138362360, -0.616451418261722120, -0.616412047843953310, -0.616372675885153650, -0.616333302385423050, -0.616293927344859220, +-0.616254550763560500, -0.616215172641625510, -0.616175792979152480, -0.616136411776240010, -0.616097029032986470, -0.616057644749490430, -0.616018258925849490, -0.615978871562163690, +-0.615939482658530710, -0.615900092215049040, -0.615860700231817050, -0.615821306708933310, -0.615781911646495650, -0.615742515044603980, -0.615703116903355880, -0.615663717222850070, +-0.615624316003185010, -0.615584913244459080, -0.615545508946770850, -0.615506103110218920, -0.615466695734901760, -0.615427286820917070, -0.615387876368364890, -0.615348464377343030, +-0.615309050847949960, -0.615269635780284370, -0.615230219174444650, -0.615190801030529370, -0.615151381348636340, -0.615111960128865600, -0.615072537371314950, -0.615033113076082990, +-0.614993687243268190, -0.614954259872969260, -0.614914830965284540, -0.614875400520312860, -0.614835968538151920, -0.614796535018901860, -0.614757099962660370, -0.614717663369526160, +-0.614678225239597700, -0.614638785572973800, -0.614599344369752940, -0.614559901630032930, -0.614520457353913920, -0.614481011541493700, -0.614441564192871100, -0.614402115308144480, +-0.614362664887412540, -0.614323212930773970, -0.614283759438327470, -0.614244304410170750, -0.614204847846404060, -0.614165389747125090, -0.614125930112432770, -0.614086468942425690, +-0.614047006237202320, -0.614007541996861470, -0.613968076221501070, -0.613928608911221140, -0.613889140066119720, -0.613849669686295510, -0.613810197771847090, -0.613770724322873160, +-0.613731249339472430, -0.613691772821743480, -0.613652294769785220, -0.613612815183695480, -0.613573334063574390, -0.613533851409519990, -0.613494367221630980, -0.613454881500006040, +-0.613415394244743890, -0.613375905455942560, -0.613336415133702070, -0.613296923278120690, -0.613257429889296880, -0.613217934967329570, -0.613178438512317460, -0.613138940524359130, +-0.613099441003553510, -0.613059939949999410, -0.613020437363794630, -0.612980933245039440, -0.612941427593831970, -0.612901920410270920, -0.612862411694455100, -0.612822901446483210, +-0.612783389666454070, -0.612743876354465700, -0.612704361510618360, -0.612664845135010180, -0.612625327227739880, -0.612585807788906260, -0.612546286818608120, -0.612506764316944170, +-0.612467240284013450, -0.612427714719913860, -0.612388187624745670, -0.612348658998607020, -0.612309128841596720, -0.612269597153813680, -0.612230063935356620, -0.612190529186324330, +-0.612150992906814960, -0.612111455096928990, -0.612071915756764230, -0.612032374886419820, -0.611992832485994340, -0.611953288555586840, -0.611913743095296110, -0.611874196105220980, +-0.611834647585459690, -0.611795097536112500, -0.611755545957277660, -0.611715992849053760, -0.611676438211540050, -0.611636882044835130, -0.611597324349038020, -0.611557765124246980, +-0.611518204370562150, -0.611478642088081780, -0.611439078276904910, -0.611399512937130240, -0.611359946068856910, -0.611320377672183610, -0.611280807747209390, -0.611241236294033150, +-0.611201663312753160, -0.611162088803469670, -0.611122512766280930, -0.611082935201285980, -0.611043356108583740, -0.611003775488273000, -0.610964193340452160, -0.610924609665221550, +-0.610885024462679340, -0.610845437732924660, -0.610805849476056320, -0.610766259692173350, -0.610726668381374790, -0.610687075543759560, -0.610647481179426690, -0.610607885288474320, +-0.610568287871002920, -0.610528688927110870, -0.610489088456897090, -0.610449486460460490, -0.610409882937900330, -0.610370277889314640, -0.610330671314804010, -0.610291063214466690, +-0.610251453588401720, -0.610211842436708120, -0.610172229759484930, -0.610132615556831180, -0.610092999828845790, -0.610053382575628020, -0.610013763797276010, -0.609974143493890340, +-0.609934521665569270, -0.609894898312411950, -0.609855273434517400, -0.609815647031984540, -0.609776019104912640, -0.609736389653400050, -0.609696758677547130, -0.609657126177452270, +-0.609617492153214700, -0.609577856604933350, -0.609538219532707370, -0.609498580936635780, -0.609458940816817840, -0.609419299173351690, -0.609379656006338140, -0.609340011315875340, +-0.609300365102062650, -0.609260717364998980, -0.609221068104783490, -0.609181417321515320, -0.609141765015292940, -0.609102111186216820, -0.609062455834385450, -0.609022798959897970, +-0.608983140562853410, -0.608943480643351130, -0.608903819201490060, -0.608864156237369450, -0.608824491751088440, -0.608784825742745510, -0.608745158212441240, -0.608705489160274000, +-0.608665818586343050, -0.608626146490747640, -0.608586472873586800, -0.608546797734959120, -0.608507121074965070, -0.608467442893703250, -0.608427763191272900, -0.608388081967773050, +-0.608348399223303080, -0.608308714957962020, -0.608269029171849220, -0.608229341865063830, -0.608189653037704450, -0.608149962689871540, -0.608110270821663800, -0.608070577433180270, +-0.608030882524520420, -0.607991186095783290, -0.607951488147067560, -0.607911788678473730, -0.607872087690100480, -0.607832385182047070, -0.607792681154412650, -0.607752975607296460, +-0.607713268540797880, -0.607673559955016150, -0.607633849850050530, -0.607594138225999500, -0.607554425082963870, -0.607514710421042210, -0.607474994240333800, -0.607435276540937870, +-0.607395557322953690, -0.607355836586480620, -0.607316114331617360, -0.607276390558464390, -0.607236665267120610, -0.607196938457685080, -0.607157210130257140, -0.607117480284936170, +-0.607077748921821650, -0.607038016041012600, -0.606998281642607940, -0.606958545726708150, -0.606918808293412050, -0.606879069342818990, -0.606839328875028230, -0.606799586890139130, +-0.606759843388251060, -0.606720098369462610, -0.606680351833874700, -0.606640603781585910, -0.606600854212695610, -0.606561103127303160, -0.606521350525507930, -0.606481596407409280, +-0.606441840773106810, -0.606402083622699540, -0.606362324956286500, -0.606322564773968290, -0.606282803075843700, -0.606243039862012110, -0.606203275132572880, -0.606163508887625490, +-0.606123741127268520, -0.606083971851603010, -0.606044201060727540, -0.606004428754741590, -0.605964654933744630, -0.605924879597835920, -0.605885102747115050, -0.605845324381681480, +-0.605805544501634490, -0.605765763107072970, -0.605725980198097760, -0.605686195774807650, -0.605646409837302000, -0.605606622385680300, -0.605566833420042140, -0.605527042940486090, +-0.605487250947113200, -0.605447457440022150, -0.605407662419312540, -0.605367865885083620, -0.605328067837435090, -0.605288268276466420, -0.605248467202277100, -0.605208664614966580, +-0.605168860514633700, -0.605129054901379470, -0.605089247775302490, -0.605049439136502440, -0.605009628985078710, -0.604969817321130980, -0.604930004144758730, -0.604890189456060660, +-0.604850373255137910, -0.604810555542089180, -0.604770736317014060, -0.604730915580012130, -0.604691093331182870, -0.604651269570625980, -0.604611444298440830, -0.604571617514726430, +-0.604531789219583620, -0.604491959413111400, -0.604452128095409160, -0.604412295266576690, -0.604372460926713480, -0.604332625075919120, -0.604292787714292510, -0.604252948841934590, +-0.604213108458944380, -0.604173266565421360, -0.604133423161465120, -0.604093578247175360, -0.604053731822651650, -0.604013883887993600, -0.603974034443300110, -0.603934183488672340, +-0.603894331024208970, -0.603854477050009940, -0.603814621566174600, -0.603774764572802770, -0.603734906069993920, -0.603695046057847180, -0.603655184536463500, -0.603615321505941880, +-0.603575456966382040, -0.603535590917883450, -0.603495723360545910, -0.603455854294469020, -0.603415983719752580, -0.603376111636496180, -0.603336238044798740, -0.603296362944761410, +-0.603256486336483210, -0.603216608220063730, -0.603176728595602780, -0.603136847463200070, -0.603096964822954380, -0.603057080674967110, -0.603017195019337040, -0.602977307856164100, +-0.602937419185547770, -0.602897529007587970, -0.602857637322384400, -0.602817744130036640, -0.602777849430644610, -0.602737953224307120, -0.602698055511125540, -0.602658156291198790, +-0.602618255564626670, -0.602578353331508890, -0.602538449591945250, -0.602498544346035560, -0.602458637593878630, -0.602418729335575940, -0.602378819571226410, -0.602338908300929840, +-0.602298995524785940, -0.602259081242894620, -0.602219165455355480, -0.602179248162268530, -0.602139329363732710, -0.602099409059849380, -0.602059487250717450, -0.602019563936436740, +-0.601979639117107170, -0.601939712792828540, -0.601899784963700560, -0.601859855629822470, -0.601819924791295420, -0.601779992448218560, -0.601740058600691800, -0.601700123248814720, +-0.601660186392687480, -0.601620248032409770, -0.601580308168081280, -0.601540366799801500, -0.601500423927671450, -0.601460479551790270, -0.601420533672258010, -0.601380586289174350, +-0.601340637402639210, -0.601300687012752520, -0.601260735119613310, -0.601220781723323050, -0.601180826823980890, -0.601140870421686620, -0.601100912516540080, -0.601060953108641380, +-0.601020992198090240, -0.600981029784986690, -0.600941065869430410, -0.600901100451520900, -0.600861133531359280, -0.600821165109044930, -0.600781195184677540, -0.600741223758357150, +-0.600701250830183770, -0.600661276400256570, -0.600621300468676900, -0.600581323035543900, -0.600541344100957610, -0.600501363665018050, -0.600461381727825040, -0.600421398289478490, +-0.600381413350078550, -0.600341426909725030, -0.600301438968517180, -0.600261449526556580, -0.600221458583942270, -0.600181466140774280, -0.600141472197152640, -0.600101476753177380, +-0.600061479808948420, -0.600021481364565010, -0.599981481420128640, -0.599941479975738550, -0.599901477031494770, -0.599861472587497220, -0.599821466643846060, -0.599781459200641190, +-0.599741450257982760, -0.599701439815969910, -0.599661427874704220, -0.599621414434284960, -0.599581399494812150, -0.599541383056385820, -0.599501365119106120, -0.599461345683072970, +-0.599421324748385720, -0.599381302315145860, -0.599341278383452750, -0.599301252953406420, -0.599261226025107010, -0.599221197598654440, -0.599181167674148970, -0.599141136251690520, +-0.599101103331378560, -0.599061068913314560, -0.599021032997597900, -0.598980995584328600, -0.598940956673606920, -0.598900916265532770, -0.598860874360206300, -0.598820830957726980, +-0.598780786058196290, -0.598740739661713590, -0.598700691768379150, -0.598660642378292860, -0.598620591491555000, -0.598580539108265700, -0.598540485228524990, -0.598500429852433120, +-0.598460372980089470, -0.598420314611595620, -0.598380254747050920, -0.598340193386555530, -0.598300130530209810, -0.598260066178113670, -0.598220000330366600, -0.598179932987070400, +-0.598139864148324210, -0.598099793814228510, -0.598059721984883220, -0.598019648660388590, -0.597979573840844880, -0.597939497526352340, -0.597899419717010880, -0.597859340412920330, +-0.597819259614182030, -0.597779177320895580, -0.597739093533161240, -0.597699008251079130, -0.597658921474749530, -0.597618833204272670, -0.597578743439747930, -0.597538652181277110, +-0.597498559428959570, -0.597458465182895690, -0.597418369443185600, -0.597378272209929670, -0.597338173483228040, -0.597298073263180960, -0.597257971549887910, -0.597217868343450700, +-0.597177763643968910, -0.597137657451542570, -0.597097549766272160, -0.597057440588257830, -0.597017329917600040, -0.596977217754398050, -0.596937104098753780, -0.596896988950766700, +-0.596856872310537300, -0.596816754178165600, -0.596776634553751960, -0.596736513437396860, -0.596696390829200450, -0.596656266729262310, -0.596616141137684240, -0.596576014054565840, +-0.596535885480007360, -0.596495755414109150, -0.596455623856971600, -0.596415490808694940, -0.596375356269378880, -0.596335220239125220, -0.596295082718033440, -0.596254943706203910, +-0.596214803203736990, -0.596174661210733150, -0.596134517727292650, -0.596094372753515840, -0.596054226289503110, -0.596014078335354030, -0.595973928891170620, -0.595933777957052270, +-0.595893625533099440, -0.595853471619412600, -0.595813316216092130, -0.595773159323237600, -0.595733000940950940, -0.595692841069331740, -0.595652679708480460, -0.595612516858497370, +-0.595572352519483150, -0.595532186691537960, -0.595492019374762260, -0.595451850569256650, -0.595411680275120590, -0.595371508492456010, -0.595331335221362720, -0.595291160461941190, +-0.595250984214291570, -0.595210806478514650, -0.595170627254710590, -0.595130446542979310, -0.595090264343422600, -0.595050080656140290, -0.595009895481232730, -0.594969708818800510, +-0.594929520668943890, -0.594889331031763560, -0.594849139907359880, -0.594808947295832670, -0.594768753197283730, -0.594728557611812870, -0.594688360539520790, -0.594648161980507630, +-0.594607961934874200, -0.594567760402720750, -0.594527557384147310, -0.594487352879255580, -0.594447146888145480, -0.594406939410917600, -0.594366730447672300, -0.594326519998510160, +-0.594286308063531780, -0.594246094642837620, -0.594205879736527500, -0.594165663344703330, -0.594125445467465150, -0.594085226104913210, -0.594045005257148320, -0.594004782924270840, +-0.593964559106381350, -0.593924333803579900, -0.593884107015968170, -0.593843878743646300, -0.593803648986714670, -0.593763417745273970, -0.593723185019424670, -0.593682950809267470, +-0.593642715114902850, -0.593602477936431390, -0.593562239273953020, -0.593521999127569870, -0.593481757497381630, -0.593441514383489130, -0.593401269785992720, -0.593361023704993110, +-0.593320776140590310, -0.593280527092886260, -0.593240276561980970, -0.593200024547974820, -0.593159771050968730, -0.593119516071063170, -0.593079259608358830, -0.593039001662956420, +-0.592998742234956410, -0.592958481324458830, -0.592918218931565820, -0.592877955056377190, -0.592837689698993750, -0.592797422859515980, -0.592757154538044780, -0.592716884734680650, +-0.592676613449523490, -0.592636340682675680, -0.592596066434236900, -0.592555790704307970, -0.592515513492989590, -0.592475234800382440, -0.592434954626587130, -0.592394672971704560, +-0.592354389835834440, -0.592314105219079230, -0.592273819121538650, -0.592233531543313490, -0.592193242484504560, -0.592152951945212560, -0.592112659925538080, -0.592072366425581360, +-0.592032071445444340, -0.591991774985227150, -0.591951477045030590, -0.591911177624955260, -0.591870876725101970, -0.591830574345571630, -0.591790270486464710, -0.591749965147881470, +-0.591709658329923950, -0.591669350032692390, -0.591629040256287380, -0.591588729000809830, -0.591548416266360460, -0.591508102053040050, -0.591467786360948540, -0.591427469190188400, +-0.591387150540859660, -0.591346830413062910, -0.591306508806899170, -0.591266185722469030, -0.591225861159873520, -0.591185535119213350, -0.591145207600589420, -0.591104878604101660, +-0.591064548129852430, -0.591024216177941760, -0.590983882748470690, -0.590943547841539800, -0.590903211457250110, -0.590862873595701670, -0.590822534256996710, -0.590782193441235500, +-0.590741851148518740, -0.590701507378947330, -0.590661162132622210, -0.590620815409644170, -0.590580467210114150, -0.590540117534132820, -0.590499766381800570, -0.590459413753219640, +-0.590419059648490170, -0.590378704067712980, -0.590338347010989080, -0.590297988478419410, -0.590257628470104660, -0.590217266986145070, -0.590176904026643130, -0.590136539591698870, +-0.590096173681413320, -0.590055806295887280, -0.590015437435221780, -0.589975067099517640, -0.589934695288875880, -0.589894322003396530, -0.589853947243182300, -0.589813571008332980, +-0.589773193298949950, -0.589732814115133790, -0.589692433456985630, -0.589652051324606410, -0.589611667718096370, -0.589571282637557760, -0.589530896083091060, -0.589490508054797080, +-0.589450118552776850, -0.589409727577131280, -0.589369335127961410, -0.589328941205368270, -0.589288545809452000, -0.589248148940315080, -0.589207750598057740, -0.589167350782781150, +-0.589126949494586110, -0.589086546733573630, -0.589046142499844880, -0.589005736793499990, -0.588965329614641540, -0.588924920963369790, -0.588884510839785660, -0.588844099243990280, +-0.588803686176084580, -0.588763271636169820, -0.588722855624346790, -0.588682438140716640, -0.588642019185379620, -0.588601598758438320, -0.588561176859992980, -0.588520753490144770, +-0.588480328648994690, -0.588439902336643670, -0.588399474553192300, -0.588359045298742940, -0.588318614573395960, -0.588278182377252380, -0.588237748710413340, -0.588197313572980000, +-0.588156876965053370, -0.588116438886734480, -0.588075999338124600, -0.588035558319323970, -0.587995115830435070, -0.587954671871558480, -0.587914226442795230, -0.587873779544246360, +-0.587833331176013000, -0.587792881338195630, -0.587752430030896830, -0.587711977254216870, -0.587671523008256980, -0.587631067293118310, -0.587590610108902010, -0.587550151455709100, +-0.587509691333640950, -0.587469229742798470, -0.587428766683282140, -0.587388302155194770, -0.587347836158636500, -0.587307368693708700, -0.587266899760512500, -0.587226429359149040, +-0.587185957489719470, -0.587145484152324260, -0.587105009347066110, -0.587064533074045490, -0.587024055333363440, -0.586983576125121310, -0.586943095449420250, -0.586902613306361400, +-0.586862129696046120, -0.586821644618574670, -0.586781158074049850, -0.586740670062572240, -0.586700180584242890, -0.586659689639163040, -0.586619197227433940, -0.586578703349156960, +-0.586538208004432460, -0.586497711193363140, -0.586457212916049580, -0.586416713172592920, -0.586376211963094530, -0.586335709287655660, -0.586295205146377450, -0.586254699539361160, +-0.586214192466708250, -0.586173683928519100, -0.586133173924896390, -0.586092662455940830, -0.586052149521753550, -0.586011635122436040, -0.585971119258089310, -0.585930601928814080, +-0.585890083134713020, -0.585849562875886850, -0.585809041152436700, -0.585768517964464050, -0.585727993312070040, -0.585687467195356030, -0.585646939614423270, -0.585606410569373350, +-0.585565880060306520, -0.585525348087325810, -0.585484814650531700, -0.585444279750025550, -0.585403743385908730, -0.585363205558282470, -0.585322666267247490, -0.585282125512906700, +-0.585241583295360470, -0.585201039614710260, -0.585160494471057560, -0.585119947864503500, -0.585079399795149670, -0.585038850263097320, -0.584998299268447820, -0.584957746811301860, +-0.584917192891762250, -0.584876637509929690, -0.584836080665905530, -0.584795522359791150, -0.584754962591688020, -0.584714401361697390, -0.584673838669920070, -0.584633274516458860, +-0.584592708901414570, -0.584552141824888350, -0.584511573286981890, -0.584471003287796440, -0.584430431827433480, -0.584389858905994490, -0.584349284523580040, -0.584308708680293170, +-0.584268131376234570, -0.584227552611505610, -0.584186972386207760, -0.584146390700442500, -0.584105807554311180, -0.584065222947914630, -0.584024636881355860, -0.583984049354735360, +-0.583943460368154810, -0.583902869921715690, -0.583862278015519260, -0.583821684649667220, -0.583781089824260910, -0.583740493539401830, -0.583699895795190880, -0.583659296591730880, +-0.583618695929122740, -0.583578093807467720, -0.583537490226867520, -0.583496885187423600, -0.583456278689236770, -0.583415670732409960, -0.583375061317043860, -0.583334450443240280, +-0.583293838111100470, -0.583253224320726130, -0.583212609072218610, -0.583171992365679630, -0.583131374201210750, -0.583090754578912570, -0.583050133498888350, -0.583009510961238760, +-0.582968886966065410, -0.582928261513469770, -0.582887634603553530, -0.582847006236417500, -0.582806376412164600, -0.582765745130895850, -0.582725112392712630, -0.582684478197716740, +-0.582643842546009650, -0.582603205437692840, -0.582562566872868120, -0.582521926851636950, -0.582481285374100270, -0.582440642440361090, -0.582399998050520230, -0.582359352204679490, +-0.582318704902940240, -0.582278056145404290, -0.582237405932173210, -0.582196754263347940, -0.582156101139031490, -0.582115446559324680, -0.582074790524329310, -0.582034133034147080, +-0.581993474088879360, -0.581952813688628060, -0.581912151833494650, -0.581871488523580170, -0.581830823758987760, -0.581790157539818220, -0.581749489866173250, -0.581708820738154660, +-0.581668150155863930, -0.581627478119402850, -0.581586804628872360, -0.581546129684375580, -0.581505453286013440, -0.581464775433887750, -0.581424096128099980, -0.581383415368752040, +-0.581342733155945650, -0.581302049489782370, -0.581261364370363910, -0.581220677797791410, -0.581179989772167890, -0.581139300293594400, -0.581098609362172610, -0.581057916978004350, +-0.581017223141191310, -0.580976527851834510, -0.580935831110036990, -0.580895132915900000, -0.580854433269525130, -0.580813732171014290, -0.580773029620468950, -0.580732325617991150, +-0.580691620163682480, -0.580650913257644840, -0.580610204899979050, -0.580569495090788590, -0.580528783830174370, -0.580488071118238190, -0.580447356955081870, -0.580406641340807110, +-0.580365924275515030, -0.580325205759308790, -0.580284485792289640, -0.580243764374559270, -0.580203041506219370, -0.580162317187371990, -0.580121591418118810, -0.580080864198561640, +-0.580040135528802290, -0.579999405408941900, -0.579958673839083730, -0.579917940819328790, -0.579877206349779020, -0.579836470430536320, -0.579795733061702400, -0.579754994243379170, +-0.579714253975667670, -0.579673512258671360, -0.579632769092491170, -0.579592024477229020, -0.579551278412986930, -0.579510530899866590, -0.579469781937969940, -0.579429031527398770, +-0.579388279668254460, -0.579347526360640020, -0.579306771604656820, -0.579266015400406680, -0.579225257747991500, -0.579184498647513200, -0.579143738099073600, -0.579102976102773950, +-0.579062212658717600, -0.579021447767005700, -0.578980681427740280, -0.578939913641023040, -0.578899144406956000, -0.578858373725641200, -0.578817601597180430, -0.578776828021674850, +-0.578736052999228030, -0.578695276529941020, -0.578654498613915820, -0.578613719251254490, -0.578572938442058700, -0.578532156186430610, -0.578491372484471470, -0.578450587336284630, +-0.578409800741971240, -0.578369012701633320, -0.578328223215372920, -0.578287432283292050, -0.578246639905492520, -0.578205846082076370, -0.578165050813145620, -0.578124254098801530, +-0.578083455939147450, -0.578042656334284870, -0.578001855284315580, -0.577961052789341620, -0.577920248849465130, -0.577879443464787150, -0.577838636635411350, -0.577797828361439000, +-0.577757018642972130, -0.577716207480112540, -0.577675394872962600, -0.577634580821624110, -0.577593765326199100, -0.577552948386789720, -0.577512130003497330, -0.577471310176425280, +-0.577430488905674940, -0.577389666191348350, -0.577348842033547640, -0.577308016432374840, -0.577267189387931980, -0.577226360900320310, -0.577185530969643650, -0.577144699596003010, +-0.577103866779500760, -0.577063032520238720, -0.577022196818319230, -0.576981359673844120, -0.576940521086915630, -0.576899681057635230, -0.576858839586106180, -0.576817996672430170, +-0.576777152316709120, -0.576736306519045170, -0.576695459279540470, -0.576654610598297150, -0.576613760475416570, -0.576572908911002320, -0.576532055905155770, -0.576491201457979050, +-0.576450345569574310, -0.576409488240043790, -0.576368629469489520, -0.576327769258013660, -0.576286907605717660, -0.576246044512705110, -0.576205179979077500, -0.576164314004936950, +-0.576123446590385500, -0.576082577735525510, -0.576041707440459130, -0.576000835705287710, -0.575959962530114830, -0.575919087915042090, -0.575878211860171740, -0.575837334365605800, +-0.575796455431446530, -0.575755575057796070, -0.575714693244756660, -0.575673809992430560, -0.575632925300919250, -0.575592039170326310, -0.575551151600753210, -0.575510262592302310, +-0.575469372145075760, -0.575428480259175810, -0.575387586934703820, -0.575346692171763710, -0.575305795970456830, -0.575264898330885450, -0.575223999253151820, -0.575183098737358180, +-0.575142196783606790, -0.575101293391999890, -0.575060388562639860, -0.575019482295628050, -0.574978574591068270, -0.574937665449062000, -0.574896754869711700, -0.574855842853119410, +-0.574814929399387500, -0.574774014508618310, -0.574733098180913340, -0.574692180416376370, -0.574651261215109010, -0.574610340577213390, -0.574569418502791970, -0.574528494991947030, +-0.574487570044780790, -0.574446643661395640, -0.574405715841893150, -0.574364786586377130, -0.574323855894949160, -0.574282923767711510, -0.574241990204766520, -0.574201055206216670, +-0.574160118772164110, -0.574119180902710410, -0.574078241597959620, -0.574037300858013190, -0.573996358682973610, -0.573955415072943010, -0.573914470028023870, -0.573873523548318660, +-0.573832575633929530, -0.573791626284958280, -0.573750675501508710, -0.573709723283682420, -0.573668769631581870, -0.573627814545309310, -0.573586858024967340, -0.573545900070658090, +-0.573504940682483480, -0.573463979860547200, -0.573423017604950850, -0.573382053915797110, -0.573341088793188240, -0.573300122237226590, -0.573259154248014660, -0.573218184825654790, +-0.573177213970249460, -0.573136241681900470, -0.573095267960711530, -0.573054292806784440, -0.573013316220221560, -0.572972338201125480, -0.572931358749598550, -0.572890377865742370, +-0.572849395549661080, -0.572808411801456250, -0.572767426621230480, -0.572726440009086120, -0.572685451965125550, -0.572644462489451440, -0.572603471582166180, -0.572562479243372220, +-0.572521485473171390, -0.572480490271667470, -0.572439493638962400, -0.572398495575158540, -0.572357496080358460, -0.572316495154664650, -0.572275492798179690, -0.572234489011005150, +-0.572193483793245190, -0.572152477145001500, -0.572111469066376550, -0.572070459557472930, -0.572029448618393220, -0.571988436249239900, -0.571947422450115540, -0.571906407221121740, +-0.571865390562362740, -0.571824372473940250, -0.571783352955956840, -0.571742332008515100, -0.571701309631717500, -0.571660285825666530, -0.571619260590464200, -0.571578233926214430, +-0.571537205833019150, -0.571496176310980710, -0.571455145360201920, -0.571414112980785260, -0.571373079172833310, -0.571332043936448650, -0.571291007271733210, -0.571249969178790900, +-0.571208929657723740, -0.571167888708634220, -0.571126846331625030, -0.571085802526798640, -0.571044757294257740, -0.571003710634104270, -0.570962662546442230, -0.570921613031373560, +-0.570880562089000840, -0.570839509719426760, -0.570798455922753800, -0.570757400699084760, -0.570716344048522230, -0.570675285971168900, -0.570634226467126470, -0.570593165536499300, +-0.570552103179389200, -0.570511039395898870, -0.570469974186130990, -0.570428907550188050, -0.570387839488172180, -0.570346770000187410, -0.570305699086335770, -0.570264626746719850, +-0.570223552981442340, -0.570182477790605930, -0.570141401174313440, -0.570100323132667340, -0.570059243665770430, -0.570018162773724750, -0.569977080456634310, -0.569935996714601270, +-0.569894911547728200, -0.569853824956117800, -0.569812736939872890, -0.569771647499096150, -0.569730556633889500, -0.569689464344357190, -0.569648370630601250, -0.569607275492724390, +-0.569566178930829390, -0.569525080945018860, -0.569483981535395700, -0.569442880702062500, -0.569401778445121410, -0.569360674764676670, -0.569319569660830190, -0.569278463133684800, +-0.569237355183343170, -0.569196245809908240, -0.569155135013482690, -0.569114022794168450, -0.569072909152070090, -0.569031794087289320, -0.568990677599929050, -0.568949559690092200, +-0.568908440357881350, -0.568867319603399420, -0.568826197426749220, -0.568785073828032780, -0.568743948807354350, -0.568702822364816170, -0.568661694500520840, -0.568620565214571270, +-0.568579434507070270, -0.568538302378120750, -0.568497168827824640, -0.568456033856286510, -0.568414897463608180, -0.568373759649892560, -0.568332620415242570, -0.568291479759761130, +-0.568250337683550930, -0.568209194186714890, -0.568168049269355820, -0.568126902931575970, -0.568085755173479480, -0.568044605995168710, -0.568003455396746350, -0.567962303378315440, +-0.567921149939978780, -0.567879995081838400, -0.567838838803998770, -0.567797681106562150, -0.567756521989631220, -0.567715361453309030, -0.567674199497698480, -0.567633036122902390, +-0.567591871329023780, -0.567550705116165450, -0.567509537484429560, -0.567468368433920570, -0.567427197964740730, -0.567386026076992840, -0.567344852770779950, -0.567303678046204850, +-0.567262501903370580, -0.567221324342379370, -0.567180145363335500, -0.567138964966341310, -0.567097783151499720, -0.567056599918913660, -0.567015415268686040, -0.566974229200920000, +-0.566933041715718340, -0.566891852813183330, -0.566850662493419420, -0.566809470756528770, -0.566768277602614610, -0.566727083031779650, -0.566685887044127030, -0.566644689639759670, +-0.566603490818779810, -0.566562290581292040, -0.566521088927398500, -0.566479885857202210, -0.566438681370806220, -0.566397475468313650, -0.566356268149827200, -0.566315059415450240, +-0.566273849265284790, -0.566232637699435440, -0.566191424718004540, -0.566150210321095140, -0.566108994508810140, -0.566067777281252680, -0.566026558638525800, -0.565985338580731740, +-0.565944117107975100, -0.565902894220358110, -0.565861669917983920, -0.565820444200955560, -0.565779217069376060, -0.565737988523348560, -0.565696758562976080, -0.565655527188361760, +-0.565614294399607750, -0.565573060196818860, -0.565531824580097320, -0.565490587549546180, -0.565449349105268560, -0.565408109247367510, -0.565366867975945600, -0.565325625291107080, +-0.565284381192954650, -0.565243135681591240, -0.565201888757119960, -0.565160640419643870, -0.565119390669266310, -0.565078139506090200, -0.565036886930218810, -0.564995632941754480, +-0.564954377540801690, -0.564913120727463030, -0.564871862501841520, -0.564830602864040410, -0.564789341814162740, -0.564748079352311860, -0.564706815478589920, -0.564665550193101720, +-0.564624283495949510, -0.564583015387236760, -0.564541745867066400, -0.564500474935541670, -0.564459202592765830, -0.564417928838841900, -0.564376653673872460, -0.564335377097962110, +-0.564294099111213310, -0.564252819713729200, -0.564211538905613150, -0.564170256686968190, -0.564128973057897550, -0.564087688018503840, -0.564046401568891630, -0.564005113709163290, +-0.563963824439422280, -0.563922533759771750, -0.563881241670314840, -0.563839948171154790, -0.563798653262394870, -0.563757356944137640, -0.563716059216487710, -0.563674760079547640, +-0.563633459533420700, -0.563592157578210020, -0.563550854214019070, -0.563509549440950890, -0.563468243259108160, -0.563426935668595470, -0.563385626669515530, -0.563344316261971460, +-0.563303004446066620, -0.563261691221904390, -0.563220376589587790, -0.563179060549220290, -0.563137743100905140, -0.563096424244744820, -0.563055103980844350, -0.563013782309305990, +-0.562972459230233200, -0.562931134743729240, -0.562889808849897480, -0.562848481548840480, -0.562807152840662960, -0.562765822725467600, -0.562724491203357660, -0.562683158274436490, +-0.562641823938807460, -0.562600488196573820, -0.562559151047838930, -0.562517812492706270, -0.562476472531278300, -0.562435131163659840, -0.562393788389953580, -0.562352444210262870, +-0.562311098624690970, -0.562269751633341470, -0.562228403236316730, -0.562187053433721770, -0.562145702225659180, -0.562104349612232320, -0.562062995593544560, -0.562021640169699350, +-0.561980283340800080, -0.561938925106949980, -0.561897565468252650, -0.561856204424810660, -0.561814841976728930, -0.561773478124110050, -0.561732112867057490, -0.561690746205674610, +-0.561649378140064880, -0.561608008670331780, -0.561566637796577890, -0.561525265518908130, -0.561483891837425200, -0.561442516752232450, -0.561401140263433570, -0.561359762371131720, +-0.561318383075430470, -0.561277002376433300, -0.561235620274242900, -0.561194236768964180, -0.561152851860699850, -0.561111465549553490, -0.561070077835628340, -0.561028688719028000, +-0.560987298199856040, -0.560945906278214950, -0.560904512954209960, -0.560863118227943660, -0.560821722099519530, -0.560780324569041140, -0.560738925636611870, -0.560697525302335300, +-0.560656123566315000, -0.560614720428654350, -0.560573315889456140, -0.560531909948825290, -0.560490502606864840, -0.560449093863678030, -0.560407683719368550, -0.560366272174039780, +-0.560324859227794620, -0.560283444880738110, -0.560242029132972940, -0.560200611984602690, -0.560159193435730840, -0.560117773486461080, -0.560076352136896990, -0.560034929387141830, +-0.559993505237299520, -0.559952079687472630, -0.559910652737766190, -0.559869224388283240, -0.559827794639127240, -0.559786363490401670, -0.559744930942210230, -0.559703496994655710, +-0.559662061647843270, -0.559620624901875590, -0.559579186756856360, -0.559537747212889180, -0.559496306270077630, -0.559454863928525280, -0.559413420188335730, -0.559371975049612780, +-0.559330528512459010, -0.559289080576979680, -0.559247631243277700, -0.559206180511456650, -0.559164728381620120, -0.559123274853871810, -0.559081819928315290, -0.559040363605053490, +-0.558998905884191430, -0.558957446765832260, -0.558915986250079320, -0.558874524337036550, -0.558833061026807410, -0.558791596319495600, -0.558750130215204810, -0.558708662714037960, +-0.558667193816100190, -0.558625723521494420, -0.558584251830324340, -0.558542778742693650, -0.558501304258706030, -0.558459828378465080, -0.558418351102073940, -0.558376872429637520, +-0.558335392361259060, -0.558293910897042060, -0.558252428037090190, -0.558210943781507370, -0.558169458130397200, -0.558127971083863360, -0.558086482642009550, -0.558044992804938800, +-0.558003501572756360, -0.557962008945565020, -0.557920514923468840, -0.557879019506571260, -0.557837522694976220, -0.557796024488786510, -0.557754524888107620, -0.557713023893042340, +-0.557671521503694480, -0.557630017720167850, -0.557588512542566250, -0.557547005970993270, -0.557505498005552820, -0.557463988646348610, -0.557422477893483650, -0.557380965747063310, +-0.557339452207190500, -0.557297937273969040, -0.557256420947502830, -0.557214903227895460, -0.557173384115250190, -0.557131863609672150, -0.557090341711264480, -0.557048818420130880, +-0.557007293736375250, -0.556965767660101420, -0.556924240191413180, -0.556882711330414340, -0.556841181077208700, -0.556799649431899410, -0.556758116394591720, -0.556716581965388760, +-0.556675046144394340, -0.556633508931712260, -0.556591970327446450, -0.556550430331700600, -0.556508888944578060, -0.556467346166183980, -0.556425801996621620, -0.556384256435994650, +-0.556342709484407120, -0.556301161141962710, -0.556259611408765450, -0.556218060284919270, -0.556176507770527070, -0.556134953865694340, -0.556093398570524310, -0.556051841885120690, +-0.556010283809587610, -0.555968724344028660, -0.555927163488547980, -0.555885601243248590, -0.555844037608235970, -0.555802472583613370, -0.555760906169484480, -0.555719338365953330, +-0.555677769173123840, -0.555636198591099920, -0.555594626619985490, -0.555553053259883800, -0.555511478510900100, -0.555469902373137870, -0.555428324846700790, -0.555386745931692900, +-0.555345165628218230, -0.555303583936380570, -0.555262000856283190, -0.555220416388031550, -0.555178830531728900, -0.555137243287479150, -0.555095654655386350, -0.555054064635554400, +-0.555012473228087220, -0.554970880433088950, -0.554929286250663400, -0.554887690680913930, -0.554846093723946000, -0.554804495379862760, -0.554762895648768350, -0.554721294530766680, +-0.554679692025961790, -0.554638088134456810, -0.554596482856357540, -0.554554876191766910, -0.554513268140789160, -0.554471658703528210, -0.554430047880088210, -0.554388435670572940, +-0.554346822075086680, -0.554305207093733320, -0.554263590726616240, -0.554221972973840900, -0.554180353835510680, -0.554138733311729580, -0.554097111402601540, -0.554055488108230800, +-0.554013863428721390, -0.553972237364176450, -0.553930609914701780, -0.553888981080400520, -0.553847350861376820, -0.553805719257734700, -0.553764086269578290, -0.553722451897011750, +-0.553680816140138980, -0.553639178999063450, -0.553597540473890760, -0.553555900564724260, -0.553514259271667860, -0.553472616594825940, -0.553430972534302400, -0.553389327090201500, +-0.553347680262626480, -0.553306032051683050, -0.553264382457474560, -0.553222731480105030, -0.553181079119678730, -0.553139425376299680, -0.553097770250072120, -0.553056113741100090, +-0.553014455849487160, -0.552972796575338710, -0.552931135918758310, -0.552889473879849990, -0.552847810458718110, -0.552806145655466600, -0.552764479470199800, -0.552722811903020970, +-0.552681142954035920, -0.552639472623348000, -0.552597800911061480, -0.552556127817280360, -0.552514453342108910, -0.552472777485651380, -0.552431100248011900, -0.552389421629294610, +-0.552347741629603100, -0.552306060249042940, -0.552264377487717620, -0.552222693345731370, -0.552181007823188460, -0.552139320920192910, -0.552097632636848410, -0.552055942973260550, +-0.552014251929532800, -0.551972559505769400, -0.551930865702074610, -0.551889170518552690, -0.551847473955307870, -0.551805776012444290, -0.551764076690066330, -0.551722375988277450, +-0.551680673907183340, -0.551638970446887480, -0.551597265607494340, -0.551555559389107940, -0.551513851791832650, -0.551472142815772730, -0.551430432461031740, -0.551388720727715280, +-0.551347007615927140, -0.551305293125771480, -0.551263577257352640, -0.551221860010774780, -0.551180141386142240, -0.551138421383559400, -0.551096700003129710, -0.551054977244959110, +-0.551013253109151060, -0.550971527595809810, -0.550929800705039720, -0.550888072436945150, -0.550846342791630470, -0.550804611769199150, -0.550762879369756990, -0.550721145593407680, +-0.550679410440255590, -0.550637673910404860, -0.550595936003959950, -0.550554196721025240, -0.550512456061704960, -0.550470714026102930, -0.550428970614324720, -0.550387225826474150, +-0.550345479662655570, -0.550303732122973230, -0.550261983207531610, -0.550220232916434960, -0.550178481249786970, -0.550136728207693660, -0.550094973790258400, -0.550053217997585660, +-0.550011460829780030, -0.549969702286945640, -0.549927942369187070, -0.549886181076608580, -0.549844418409314640, -0.549802654367408940, -0.549760888950997400, -0.549719122160183590, +-0.549677353995071890, -0.549635584455766880, -0.549593813542372910, -0.549552041254993680, -0.549510267593735110, -0.549468492558700780, -0.549426716149995280, -0.549384938367722950, +-0.549343159211988400, -0.549301378682895750, -0.549259596780549810, -0.549217813505054830, -0.549176028856514620, -0.549134242835034980, -0.549092455440719830, -0.549050666673673420, +-0.549008876534000430, -0.548967085021805250, -0.548925292137192320, -0.548883497880265470, -0.548841702251130600, -0.548799905249891530, -0.548758106876652610, -0.548716307131518420, +-0.548674506014593550, -0.548632703525982370, -0.548590899665789330, -0.548549094434118480, -0.548507287831075500, -0.548465479856764300, -0.548423670511289480, -0.548381859794755400, +-0.548340047707266740, -0.548298234248927980, -0.548256419419842820, -0.548214603220117390, -0.548172785649855500, -0.548130966709161620, -0.548089146398140210, -0.548047324716896100, +-0.548005501665533520, -0.547963677244157290, -0.547921851452871090, -0.547880024291781060, -0.547838195760990910, -0.547796365860605320, -0.547754534590728760, -0.547712701951465930, +-0.547670867942921300, -0.547629032565198680, -0.547587195818404320, -0.547545357702642010, -0.547503518218016240, -0.547461677364631690, -0.547419835142592960, -0.547377991552004620, +-0.547336146592971250, -0.547294300265597560, -0.547252452569987450, -0.547210603506246840, -0.547168753074479760, -0.547126901274790800, -0.547085048107284640, -0.547043193572065770, +-0.547001337669238200, -0.546959480398908070, -0.546917621761179200, -0.546875761756156260, -0.546833900383943970, -0.546792037644646900, -0.546750173538369740, -0.546708308065217200, +-0.546666441225293840, -0.546624573018703600, -0.546582703445552710, -0.546540832505945100, -0.546498960199985340, -0.546457086527778250, -0.546415211489428290, -0.546373335085040490, +-0.546331457314718550, -0.546289578178568600, -0.546247697676694790, -0.546205815809201800, -0.546163932576194220, -0.546122047977776750, -0.546080162014054180, -0.546038274685131330, +-0.545996385991111890, -0.545954495932102320, -0.545912604508206440, -0.545870711719529170, -0.545828817566174960, -0.545786922048248860, -0.545745025165855320, -0.545703126919098610, +-0.545661227308084750, -0.545619326332917760, -0.545577423993702570, -0.545535520290543750, -0.545493615223546220, -0.545451708792814570, -0.545409800998453600, -0.545367891840567440, +-0.545325981319262350, -0.545284069434642250, -0.545242156186811930, -0.545200241575876320, -0.545158325601940110, -0.545116408265107990, -0.545074489565484210, -0.545032569503174800, +-0.544990648078284120, -0.544948725290916760, -0.544906801141177620, -0.544864875629171410, -0.544822948755003030, -0.544781020518777300, -0.544739090920599020, -0.544697159960572220, +-0.544655227638803360, -0.544613293955396370, -0.544571358910456160, -0.544529422504087530, -0.544487484736395410, -0.544445545607483710, -0.544403605117459000, -0.544361663266425210, +-0.544319720054487370, -0.544277775481750160, -0.544235829548318510, -0.544193882254297210, -0.544151933599791300, -0.544109983584905480, -0.544068032209744090, -0.544026079474413280, +-0.543984125379017300, -0.543942169923660960, -0.543900213108449160, -0.543858254933486940, -0.543816295398878990, -0.543774334504729670, -0.543732372251145120, -0.543690408638229710, +-0.543648443666088330, -0.543606477334825700, -0.543564509644546940, -0.543522540595356980, -0.543480570187360620, -0.543438598420662110, -0.543396625295367810, -0.543354650811581960, +-0.543312674969409490, -0.543270697768955310, -0.543228719210324450, -0.543186739293621710, -0.543144758018951460, -0.543102775386419930, -0.543060791396131610, -0.543018806048191190, +-0.542976819342703810, -0.542934831279774380, -0.542892841859507920, -0.542850851082009370, -0.542808858947382840, -0.542766865455734940, -0.542724870607169900, -0.542682874401792640, +-0.542640876839708300, -0.542598877921021680, -0.542556877645837930, -0.542514876014261180, -0.542472873026398020, -0.542430868682352570, -0.542388862982230100, -0.542346855926135410, +-0.542304847514173630, -0.542262837746449570, -0.542220826623068590, -0.542178814144135490, -0.542136800309754640, -0.542094785120032400, -0.542052768575073340, -0.542010750674982280, +-0.541968731419864460, -0.541926710809824690, -0.541884688844967430, -0.541842665525399170, -0.541800640851224370, -0.541758614822547830, -0.541716587439474820, -0.541674558702110340, +-0.541632528610559440, -0.541590497164927130, -0.541548464365318670, -0.541506430211838310, -0.541464394704592620, -0.541422357843685980, -0.541380319629223390, -0.541338280061310020, +-0.541296239140050980, -0.541254196865551320, -0.541212153237915380, -0.541170108257249870, -0.541128061923659030, -0.541086014237248000, -0.541043965198122030, -0.541001914806386150, +-0.540959863062145390, -0.540917809965504980, -0.540875755516569410, -0.540833699715445150, -0.540791642562236550, -0.540749584057048980, -0.540707524199987350, -0.540665462991156920, +-0.540623400430662930, -0.540581336518609620, -0.540539271255103700, -0.540497204640249640, -0.540455136674152570, -0.540413067356917630, -0.540370996688649960, -0.540328924669454920, +-0.540286851299437540, -0.540244776578702180, -0.540202700507355750, -0.540160623085502500, -0.540118544313247790, -0.540076464190696660, -0.540034382717954340, -0.539992299895126090, +-0.539950215722316270, -0.539908130199631800, -0.539866043327176910, -0.539823955105056870, -0.539781865533377040, -0.539739774612242540, -0.539697682341758520, -0.539655588722030340, +-0.539613493753163250, -0.539571397435261610, -0.539529299768432220, -0.539487200752779560, -0.539445100388408980, -0.539402998675425630, -0.539360895613934740, -0.539318791204040910, +-0.539276685445850830, -0.539234578339468970, -0.539192469885000800, -0.539150360082551350, -0.539108248932226090, -0.539066136434130040, -0.539024022588368790, -0.538981907395047480, +-0.538939790854270570, -0.538897672966144990, -0.538855553730775320, -0.538813433148266570, -0.538771311218724350, -0.538729187942253880, -0.538687063318959660, -0.538644937348948470, +-0.538602810032325020, -0.538560681369194550, -0.538518551359662310, -0.538476420003833780, -0.538434287301814090, -0.538392153253708710, -0.538350017859623000, -0.538307881119661440, +-0.538265743033931040, -0.538223603602536180, -0.538181462825582320, -0.538139320703174830, -0.538097177235418940, -0.538055032422420250, -0.538012886264283120, -0.537970738761114560, +-0.537928589913019170, -0.537886439720102310, -0.537844288182469430, -0.537802135300225690, -0.537759981073476670, -0.537717825502327720, -0.537675668586883430, -0.537633510327250710, +-0.537591350723534260, -0.537549189775839320, -0.537507027484271480, -0.537464863848936100, -0.537422698869938540, -0.537380532547383490, -0.537338364881377870, -0.537296195872026260, +-0.537254025519434240, -0.537211853823707170, -0.537169680784950420, -0.537127506403269450, -0.537085330678769730, -0.537043153611556630, -0.537000975201735060, -0.536958795449411610, +-0.536916614354691290, -0.536874431917679470, -0.536832248138481520, -0.536790063017202890, -0.536747876553948400, -0.536705688748824960, -0.536663499601937270, -0.536621309113390900, +-0.536579117283291220, -0.536536924111743810, -0.536494729598854030, -0.536452533744727460, -0.536410336549469460, -0.536368138013184950, -0.536325938135980840, -0.536283736917961830, +-0.536241534359233610, -0.536199330459901420, -0.536157125220070970, -0.536114918639846950, -0.536072710719336380, -0.536030501458643950, -0.535988290857875360, -0.535946078917136080, +-0.535903865636531470, -0.535861651016167340, -0.535819435056149040, -0.535777217756582050, -0.535734999117571390, -0.535692779139223970, -0.535650557821644500, -0.535608335164938780, +-0.535566111169212160, -0.535523885834570220, -0.535481659161118560, -0.535439431148962090, -0.535397201798207710, -0.535354971108960350, -0.535312739081325590, -0.535270505715408910, +-0.535228271011316090, -0.535186034969152510, -0.535143797589023860, -0.535101558871034940, -0.535059318815292890, -0.535017077421902520, -0.534974834690969510, -0.534932590622599350, +-0.534890345216897820, -0.534848098473970300, -0.534805850393921920, -0.534763600976859490, -0.534721350222888250, -0.534679098132113450, -0.534636844704641010, -0.534594589940576510, +-0.534552333840025430, -0.534510076403093560, -0.534467817629886490, -0.534425557520509130, -0.534383296075068630, -0.534341033293669890, -0.534298769176418500, -0.534256503723420260, +-0.534214236934780760, -0.534171968810604910, -0.534129699350999960, -0.534087428556070610, -0.534045156425922760, -0.534002882960662120, -0.533960608160394150, -0.533918332025224650, +-0.533876054555259440, -0.533833775750603980, -0.533791495611363410, -0.533749214137644760, -0.533706931329553160, -0.533664647187194200, -0.533622361710673570, -0.533580074900097070, +-0.533537786755569620, -0.533495497277198470, -0.533453206465088650, -0.533410914319345730, -0.533368620840075520, -0.533326326027383830, -0.533284029881376240, -0.533241732402158660, +-0.533199433589836680, -0.533157133444515320, -0.533114831966301940, -0.533072529155301570, -0.533030225011619780, -0.532987919535362400, -0.532945612726635320, -0.532903304585544140, +-0.532860995112193980, -0.532818684306691990, -0.532776372169143420, -0.532734058699653850, -0.532691743898329070, -0.532649427765275020, -0.532607110300597380, -0.532564791504402060, +-0.532522471376793870, -0.532480149917880290, -0.532437827127766330, -0.532395503006557910, -0.532353177554360620, -0.532310850771280370, -0.532268522657423080, -0.532226193212893660, +-0.532183862437799580, -0.532141530332245760, -0.532099196896338110, -0.532056862130182550, -0.532014526033884770, -0.531972188607550690, -0.531929849851286220, -0.531887509765197050, +-0.531845168349388330, -0.531802825603967520, -0.531760481529039540, -0.531718136124710420, -0.531675789391085950, -0.531633441328272060, -0.531591091936373770, -0.531548741215498440, +-0.531506389165751330, -0.531464035787238220, -0.531421681080065040, -0.531379325044337710, -0.531336967680162030, -0.531294608987643910, -0.531252248966889270, -0.531209887618003250, +-0.531167524941093210, -0.531125160936264380, -0.531082795603622700, -0.531040428943274080, -0.530998060955324310, -0.530955691639878660, -0.530913320997044470, -0.530870949026927110, +-0.530828575729632270, -0.530786201105265980, -0.530743825153934260, -0.530701447875742920, -0.530659069270797980, -0.530616689339205360, -0.530574308081070310, -0.530531925496500190, +-0.530489541585600240, -0.530447156348476500, -0.530404769785234880, -0.530362381895981280, -0.530319992680821750, -0.530277602139861410, -0.530235210273207970, -0.530192817080966330, +-0.530150422563242740, -0.530108026720143120, -0.530065629551773390, -0.530023231058239670, -0.529980831239647790, -0.529938430096103090, -0.529896027627713040, -0.529853623834583010, +-0.529811218716818800, -0.529768812274526660, -0.529726404507812390, -0.529683995416782130, -0.529641585001541130, -0.529599173262196960, -0.529556760198854890, -0.529514345811620820, +-0.529471930100601010, -0.529429513065901250, -0.529387094707627790, -0.529344675025886560, -0.529302254020782900, -0.529259831692424300, -0.529217408040916220, -0.529174983066364570, +-0.529132556768875490, -0.529090129148554910, -0.529047700205509170, -0.529005269939843310, -0.528962838351665020, -0.528920405441079770, -0.528877971208193350, -0.528835535653112140, +-0.528793098775941940, -0.528750660576789100, -0.528708221055759650, -0.528665780212959510, -0.528623338048494260, -0.528580894562471370, -0.528538449754996310, -0.528496003626175100, +-0.528453556176113780, -0.528411107404918700, -0.528368657312695110, -0.528326205899550480, -0.528283753165590510, -0.528241299110920990, -0.528198843735648400, -0.528156387039878550, +-0.528113929023717790, -0.528071469687272250, -0.528029009030647980, -0.527986547053950430, -0.527944083757287300, -0.527901619140763940, -0.527859153204486510, -0.527816685948561240, +-0.527774217373094270, -0.527731747478191740, -0.527689276263959120, -0.527646803730503990, -0.527604329877931930, -0.527561854706348980, -0.527519378215861370, -0.527476900406575360, +-0.527434421278597080, -0.527391940832032780, -0.527349459066987820, -0.527306975983570010, -0.527264491581884820, -0.527222005862038270, -0.527179518824136830, -0.527137030468286530, +-0.527094540794593610, -0.527052049803163670, -0.527009557494104270, -0.526967063867521120, -0.526924568923520130, -0.526882072662207880, -0.526839575083690390, -0.526797076188073920, +-0.526754575975464820, -0.526712074445968460, -0.526669571599692740, -0.526627067436743030, -0.526584561957225690, -0.526542055161246860, -0.526499547048913000, -0.526457037620330250, +-0.526414526875604080, -0.526372014814842410, -0.526329501438150720, -0.526286986745635230, -0.526244470737402330, -0.526201953413558240, -0.526159434774209230, -0.526116914819461660, +-0.526074393549421760, -0.526031870964195240, -0.525989347063889670, -0.525946821848610750, -0.525904295318464830, -0.525861767473558170, -0.525819238313997020, -0.525776707839887060, +-0.525734176051336100, -0.525691642948449720, -0.525649108531334170, -0.525606572800095930, -0.525564035754841230, -0.525521497395676440, -0.525478957722707810, -0.525436416736041910, +-0.525393874435784110, -0.525351330822042440, -0.525308785894922470, -0.525266239654530560, -0.525223692100972970, -0.525181143234356160, -0.525138593054786500, -0.525096041562369660, +-0.525053488757213360, -0.525010934639423500, -0.524968379209106110, -0.524925822466367880, -0.524883264411315160, -0.524840705044054110, -0.524798144364691410, -0.524755582373332640, +-0.524713019070085610, -0.524670454455056000, -0.524627888528350290, -0.524585321290074850, -0.524542752740336130, -0.524500182879240500, -0.524457611706893640, -0.524415039223403490, +-0.524372465428875830, -0.524329890323416930, -0.524287313907133350, -0.524244736180131450, -0.524202157142517720, -0.524159576794398620, -0.524116995135879840, -0.524074412167069290, +-0.524031827888072680, -0.523989242298996570, -0.523946655399947340, -0.523904067191031440, -0.523861477672355360, -0.523818886844024890, -0.523776294706147840, -0.523733701258830120, +-0.523691106502178210, -0.523648510436298450, -0.523605913061297560, -0.523563314377281760, -0.523520714384357650, -0.523478113082631810, -0.523435510472209930, -0.523392906553200030, +-0.523350301325707810, -0.523307694789839850, -0.523265086945702730, -0.523222477793402810, -0.523179867333046000, -0.523137255564740220, -0.523094642488591390, -0.523052028104705860, +-0.523009412413190320, -0.522966795414151250, -0.522924177107695230, -0.522881557493928620, -0.522838936572958210, -0.522796314344889710, -0.522753690809831140, -0.522711065967888410, +-0.522668439819168000, -0.522625812363776480, -0.522583183601820430, -0.522540553533406340, -0.522497922158640220, -0.522455289477629980, -0.522412655490481550, -0.522370020197301500, +-0.522327383598196420, -0.522284745693272770, -0.522242106482637360, -0.522199465966396660, -0.522156824144656470, -0.522114181017525050, -0.522071536585108190, -0.522028890847512470, +-0.521986243804844490, -0.521943595457210920, -0.521900945804718350, -0.521858294847472700, -0.521815642585582110, -0.521772989019152370, -0.521730334148290060, -0.521687677973102000, +-0.521645020493694770, -0.521602361710174930, -0.521559701622649200, -0.521517040231223470, -0.521474377536005900, -0.521431713537102380, -0.521389048234619620, -0.521346381628664200, +-0.521303713719342810, -0.521261044506762140, -0.521218373991028110, -0.521175702172248960, -0.521133029050530490, -0.521090354625979410, -0.521047678898702520, -0.521005001868806380, +-0.520962323536397820, -0.520919643901583410, -0.520876962964469840, -0.520834280725163130, -0.520791597183771550, -0.520748912340400880, -0.520706226195157940, -0.520663538748149520, +-0.520620849999482100, -0.520578159949261930, -0.520535468597597030, -0.520492775944593530, -0.520450081990358140, -0.520407386734997420, -0.520364690178618310, -0.520321992321327480, +-0.520279293163231630, -0.520236592704437560, -0.520193890945051200, -0.520151187885180890, -0.520108483524932660, -0.520065777864413210, -0.520023070903729350, -0.519980362642987750, +-0.519937653082295230, -0.519894942221757810, -0.519852230061483840, -0.519809516601579370, -0.519766801842150960, -0.519724085783305640, -0.519681368425150110, -0.519638649767791060, +-0.519595929811335510, -0.519553208555889270, -0.519510486001560910, -0.519467762148456250, -0.519425036996682080, -0.519382310546345430, -0.519339582797552990, -0.519296853750411680, +-0.519254123405027300, -0.519211391761508540, -0.519168658819961220, -0.519125924580492230, -0.519083189043208490, -0.519040452208216710, -0.518997714075623780, -0.518954974645536640, +-0.518912233918061290, -0.518869491893306110, -0.518826748571377230, -0.518784003952381450, -0.518741258036425680, -0.518698510823616730, -0.518655762314061520, -0.518613012507866070, +-0.518570261405138950, -0.518527509005986100, -0.518484755310514520, -0.518442000318831140, -0.518399244031042650, -0.518356486447256070, -0.518313727567578320, -0.518270967392116200, +-0.518228205920975850, -0.518185443154265850, -0.518142679092092220, -0.518099913734561880, -0.518057147081781740, -0.518014379133858730, -0.517971609890898970, -0.517928839353011040, +-0.517886067520300970, -0.517843294392875690, -0.517800519970842200, -0.517757744254307430, -0.517714967243378290, -0.517672188938161800, -0.517629409338764780, -0.517586628445293460, +-0.517543846257856320, -0.517501062776559610, -0.517458278001510230, -0.517415491932815110, -0.517372704570581380, -0.517329915914915730, -0.517287125965924630, -0.517244334723716450, +-0.517201542188397420, -0.517158748360074580, -0.517115953238854840, -0.517073156824845230, -0.517030359118152650, -0.516987560118884250, -0.516944759827146160, -0.516901958243046970, +-0.516859155366692910, -0.516816351198190920, -0.516773545737648000, -0.516730738985171300, -0.516687930940867620, -0.516645121604843550, -0.516602310977207320, -0.516559499058065310, +-0.516516685847524530, -0.516473871345692110, -0.516431055552674990, -0.516388238468580170, -0.516345420093514810, -0.516302600427585130, -0.516259779470899740, -0.516216957223564870, +-0.516174133685687650, -0.516131308857375020, -0.516088482738734200, -0.516045655329872120, -0.516002826630895140, -0.515959996641911830, -0.515917165363028560, -0.515874332794352350, +-0.515831498935990340, -0.515788663788049660, -0.515745827350637230, -0.515702989623860190, -0.515660150607825770, -0.515617310302640130, -0.515574468708412060, -0.515531625825247810, +-0.515488781653254400, -0.515445936192539090, -0.515403089443209010, -0.515360241405370290, -0.515317392079131850, -0.515274541464599940, -0.515231689561881590, -0.515188836371084040, +-0.515145981892314530, -0.515103126125679880, -0.515060269071287550, -0.515017410729244450, -0.514974551099657060, -0.514931690182634180, -0.514888827978281950, -0.514845964486707720, +-0.514803099708018520, -0.514760233642321600, -0.514717366289724090, -0.514674497650332460, -0.514631627724255300, -0.514588756511599080, -0.514545884012470920, -0.514503010226978090, +-0.514460135155227700, -0.514417258797327030, -0.514374381153383190, -0.514331502223502660, -0.514288622007794130, -0.514245740506364070, -0.514202857719319620, -0.514159973646767910, +-0.514117088288816420, -0.514074201645572160, -0.514031313717141720, -0.513988424503633580, -0.513945534005154530, -0.513902642221811590, -0.513859749153712020, -0.513816854800963170, +-0.513773959163672080, -0.513731062241946090, -0.513688164035891790, -0.513645264545617760, -0.513602363771230590, -0.513559461712837510, -0.513516558370545770, -0.513473653744462630, +-0.513430747834695330, -0.513387840641350460, -0.513344932164536690, -0.513302022404360620, -0.513259111360929500, -0.513216199034350670, -0.513173285424731280, -0.513130370532178580, +-0.513087454356800140, -0.513044536898702890, -0.513001618157993610, -0.512958698134781120, -0.512915776829171780, -0.512872854241273050, -0.512829930371192180, -0.512787005219036420, +-0.512744078784912460, -0.512701151068929000, -0.512658222071192720, -0.512615291791810870, -0.512572360230890810, -0.512529427388539790, -0.512486493264865280, -0.512443557859974530, +-0.512400621173974890, -0.512357683206972840, -0.512314743959077390, -0.512271803430395130, -0.512228861621033320, -0.512185918531099290, -0.512142974160700650, -0.512100028509943630, +-0.512057081578937370, -0.512014133367788450, -0.511971183876604120, -0.511928233105491850, -0.511885281054558990, -0.511842327723913030, -0.511799373113661080, -0.511756417223910850, +-0.511713460054768700, -0.511670501606343750, -0.511627541878742490, -0.511584580872072480, -0.511541618586440870, -0.511498655021955240, -0.511455690178723050, -0.511412724056850900, +-0.511369756656447570, -0.511326787977619880, -0.511283818020475290, -0.511240846785121160, -0.511197874271664850, -0.511154900480213840, -0.511111925410875690, -0.511068949063756880, +-0.511025971438966440, -0.510982992536611170, -0.510940012356798310, -0.510897030899635450, -0.510854048165230060, -0.510811064153689490, -0.510768078865120550, -0.510725092299632140, +-0.510682104457330980, -0.510639115338324620, -0.510596124942720440, -0.510553133270625900, -0.510510140322148590, -0.510467146097395850, -0.510424150596475390, -0.510381153819493670, +-0.510338155766559830, -0.510295156437780670, -0.510252155833263550, -0.510209153953116170, -0.510166150797445760, -0.510123146366359250, -0.510080140659965650, -0.510037133678371780, +-0.509994125421684990, -0.509951115890012850, -0.509908105083462960, -0.509865093002142780, -0.509822079646159890, -0.509779065015621870, -0.509736049110635300, -0.509693031931309440, +-0.509650013477751070, -0.509606993750067570, -0.509563972748366620, -0.509520950472755700, -0.509477926923341710, -0.509434902100233570, -0.509391876003538190, -0.509348848633363160, +-0.509305819989816060, -0.509262790073004350, -0.509219758883035610, -0.509176726420017540, -0.509133692684057730, -0.509090657675262850, -0.509047621393742040, -0.509004583839602230, +-0.508961545012950990, -0.508918504913895790, -0.508875463542544430, -0.508832420899004380, -0.508789376983382450, -0.508746331795787880, -0.508703285336327580, -0.508660237605108920, +-0.508617188602239700, -0.508574138327827610, -0.508531086781980110, -0.508488033964804800, -0.508444979876408800, -0.508401924516901030, -0.508358867886388400, -0.508315809984978720, +-0.508272750812779450, -0.508229690369898290, -0.508186628656442930, -0.508143565672520280, -0.508100501418239370, -0.508057435893707330, -0.508014369099031530, -0.507971301034319980, +-0.507928231699680040, -0.507885161095219640, -0.507842089221046340, -0.507799016077267740, -0.507755941663990850, -0.507712865981324920, -0.507669789029376760, -0.507626710808254170, +-0.507583631318064720, -0.507540550558916340, -0.507497468530915710, -0.507454385234172190, -0.507411300668792700, -0.507368214834885030, -0.507325127732556780, -0.507282039361915630, +-0.507238949723069490, -0.507195858816125940, -0.507152766641192800, -0.507109673198376850, -0.507066578487787580, -0.507023482509531890, -0.506980385263717360, -0.506937286750452020, +-0.506894186969843340, -0.506851085921998460, -0.506807983607026720, -0.506764880025034950, -0.506721775176130930, -0.506678669060422580, -0.506635561678017490, -0.506592453029023560, +-0.506549343113548380, -0.506506231931699970, -0.506463119483585130, -0.506420005769313230, -0.506376890788991400, -0.506333774542727320, -0.506290657030628810, -0.506247538252803660, +-0.506204418209359570, -0.506161296900403790, -0.506118174326045440, -0.506075050486391790, -0.506031925381550400, -0.505988799011629190, -0.505945671376736070, -0.505902542476978630, +-0.505859412312465010, -0.505816280883301990, -0.505773148189599060, -0.505730014231463240, -0.505686879009002330, -0.505643742522324360, -0.505600604771536900, -0.505557465756748090, +-0.505514325478064740, -0.505471183935596310, -0.505428041129449950, -0.505384897059733550, -0.505341751726554820, -0.505298605130021780, -0.505255457270242130, -0.505212308147323990, +-0.505169157761374170, -0.505126006112502360, -0.505082853200815360, -0.505039699026421320, -0.504996543589428140, -0.504953386889943400, -0.504910228928075360, -0.504867069703930920, +-0.504823909217619550, -0.504780747469248390, -0.504737584458925360, -0.504694420186758470, -0.504651254652855430, -0.504608087857324250, -0.504564919800272960, -0.504521750481809250, +-0.504478579902040480, -0.504435408061076010, -0.504392234959022970, -0.504349060595989380, -0.504305884972083060, -0.504262708087412140, -0.504219529942083630, -0.504176350536207130, +-0.504133169869889650, -0.504089987943239340, -0.504046804756363990, -0.504003620309371620, -0.503960434602370280, -0.503917247635467750, -0.503874059408772170, -0.503830869922390680, +-0.503787679176432750, -0.503744487171005730, -0.503701293906217320, -0.503658099382175760, -0.503614903598988970, -0.503571706556764860, -0.503528508255610800, -0.503485308695636240, +-0.503442107876948320, -0.503398905799655180, -0.503355702463864740, -0.503312497869685130, -0.503269292017224150, -0.503226084906590040, -0.503182876537889840, -0.503139666911233350, +-0.503096456026727700, -0.503053243884480810, -0.503010030484600800, -0.502966815827195820, -0.502923599912373680, -0.502880382740241830, -0.502837164310909860, -0.502793944624484900, +-0.502750723681075100, -0.502707501480788470, -0.502664278023733150, -0.502621053310017050, -0.502577827339748320, -0.502534600113034300, -0.502491371629984580, -0.502448141890706410, +-0.502404910895307810, -0.502361678643897020, -0.502318445136581970, -0.502275210373470890, -0.502231974354670930, -0.502188737080291770, -0.502145498550440880, -0.502102258765226180, +-0.502059017724755920, -0.502015775429138000, -0.501972531878480680, -0.501929287072892080, -0.501886041012480240, -0.501842793697352410, -0.501799545127618480, -0.501756295303385720, +-0.501713044224762150, -0.501669791891856010, -0.501626538304775330, -0.501583283463627570, -0.501540027368522430, -0.501496770019567160, -0.501453511416870000, -0.501410251560539090, +-0.501366990450682450, -0.501323728087408440, -0.501280464470824970, -0.501237199601040410, -0.501193933478162100, -0.501150666102299750, -0.501107397473560700, -0.501064127592053210, +-0.501020856457885300, -0.500977584071165330, -0.500934310432001430, -0.500891035540500850, -0.500847759396773620, -0.500804482000926860, -0.500761203353068950, -0.500717923453308010, +-0.500674642301752290, -0.500631359898509930, -0.500588076243689170, -0.500544791337397490, -0.500501505179744570, -0.500458217770837880, -0.500414929110785670, -0.500371639199696070, +-0.500328348037677450, -0.500285055624837940, -0.500241761961285000, -0.500198467047128450, -0.500155170882475740, -0.500111873467435130, -0.500068574802114750, -0.500025274886623070, +-0.499981973721068060, -0.499938671305558190, -0.499895367640200870, -0.499852062725105850, -0.499808756560380710, -0.499765449146133690, -0.499722140482473040, -0.499678830569507020, +-0.499635519407343960, -0.499592206996091300, -0.499548893335858890, -0.499505578426754250, -0.499462262268885680, -0.499418944862361490, -0.499375626207289870, -0.499332306303779230, +-0.499288985151937760, -0.499245662751873880, -0.499202339103695100, -0.499159014207511190, -0.499115688063429760, -0.499072360671559130, -0.499029032032007550, -0.498985702144883470, +-0.498942371010294260, -0.498899038628350000, -0.498855704999158100, -0.498812370122826920, -0.498769033999464820, -0.498725696629180150, -0.498682358012081220, -0.498639018148276380, +-0.498595677037874050, -0.498552334680981700, -0.498508991077709300, -0.498465646228164470, -0.498422300132455480, -0.498378952790690780, -0.498335604202978620, -0.498292254369427530, +-0.498248903290144980, -0.498205550965240940, -0.498162197394823090, -0.498118842578999690, -0.498075486517879200, -0.498032129211569970, -0.497988770660180440, -0.497945410863818990, +-0.497902049822593230, -0.497858687536613110, -0.497815324005986270, -0.497771959230821180, -0.497728593211226090, -0.497685225947309570, -0.497641857439179990, -0.497598487686945030, +-0.497555116690714560, -0.497511744450596320, -0.497468370966698710, -0.497424996239130220, -0.497381620267999200, -0.497338243053414120, -0.497294864595483440, -0.497251484894314870, +-0.497208103950018300, -0.497164721762701490, -0.497121338332472910, -0.497077953659440910, -0.497034567743714070, -0.496991180585400820, -0.496947792184608830, -0.496904402541448190, +-0.496861011656026470, -0.496817619528452270, -0.496774226158833990, -0.496730831547280150, -0.496687435693899230, -0.496644038598799690, -0.496600640262090110, -0.496557240683878130, +-0.496513839864273830, -0.496470437803384900, -0.496427034501319920, -0.496383629958187360, -0.496340224174095680, -0.496296817149152690, -0.496253408883468420, -0.496209999377150660, +-0.496166588630307880, -0.496123176643048610, -0.496079763415481430, -0.496036348947714810, -0.495992933239857330, -0.495949516292017560, -0.495906098104303140, -0.495862678676824320, +-0.495819258009688790, -0.495775836103005070, -0.495732412956881810, -0.495688988571427510, -0.495645562946750720, -0.495602136082959280, -0.495558707980163270, -0.495515278638470450, +-0.495471848057989490, -0.495428416238828830, -0.495384983181097190, -0.495341548884903120, -0.495298113350355120, -0.495254676577561060, -0.495211238566631130, -0.495167799317673070, +-0.495124358830795530, -0.495080917106107080, -0.495037474143716350, -0.494994029943731930, -0.494950584506261670, -0.494907137831415710, -0.494863689919301910, -0.494820240770028840, +-0.494776790383705200, -0.494733338760439620, -0.494689885900340690, -0.494646431803517030, -0.494602976470076510, -0.494559519900129310, -0.494516062093783290, -0.494472603051147150, +-0.494429142772329520, -0.494385681257439040, -0.494342218506584330, -0.494298754519873260, -0.494255289297416130, -0.494211822839320800, -0.494168355145695850, -0.494124886216650070, +-0.494081416052292060, -0.494037944652730490, -0.493994472018074060, -0.493950998148431460, -0.493907523043910560, -0.493864046704621640, -0.493820569130672630, -0.493777090322172210, +-0.493733610279229020, -0.493690129001951810, -0.493646646490448540, -0.493603162744829400, -0.493559677765202380, -0.493516191551676140, -0.493472704104359390, -0.493429215423360930, +-0.493385725508789450, -0.493342234360753580, -0.493298741979362190, -0.493255248364723120, -0.493211753516946740, -0.493168257436141010, -0.493124760122414570, -0.493081261575876280, +-0.493037761796634780, -0.492994260784798910, -0.492950758540476650, -0.492907255063778190, -0.492863750354811670, -0.492820244413685720, -0.492776737240509190, -0.492733228835390780, +-0.492689719198439350, -0.492646208329763580, -0.492602696229471500, -0.492559182897673530, -0.492515668334477520, -0.492472152539992380, -0.492428635514326860, -0.492385117257589770, +-0.492341597769889840, -0.492298077051335160, -0.492254555102036080, -0.492211031922100580, -0.492167507511637570, -0.492123981870755730, -0.492080454999563930, -0.492036926898171020, +-0.491993397566685750, -0.491949867005216260, -0.491906335213872890, -0.491862802192763630, -0.491819267941997370, -0.491775732461682990, -0.491732195751929220, -0.491688657812844990, +-0.491645118644538360, -0.491601578247119700, -0.491558036620697080, -0.491514493765379370, -0.491470949681275420, -0.491427404368494140, -0.491383857827144280, -0.491340310057334810, +-0.491296761059174580, -0.491253210832771630, -0.491209659378236460, -0.491166106695677170, -0.491122552785202560, -0.491078997646921590, -0.491035441280943120, -0.490991883687375290, +-0.490948324866328500, -0.490904764817910900, -0.490861203542231390, -0.490817641039398900, -0.490774077309522270, -0.490730512352710480, -0.490686946169072380, -0.490643378758716940, +-0.490599810121752240, -0.490556240258288870, -0.490512669168434830, -0.490469096852299110, -0.490425523309990670, -0.490381948541618430, -0.490338372547291350, -0.490294795327117510, +-0.490251216881207490, -0.490207637209669420, -0.490164056312612230, -0.490120474190144930, -0.490076890842376430, -0.490033306269415710, -0.489989720471371740, -0.489946133448352640, +-0.489902545200469050, -0.489858955727829060, -0.489815365030541680, -0.489771773108715890, -0.489728179962460650, -0.489684585591884990, -0.489640989997097100, -0.489597393178207500, +-0.489553795135324380, -0.489510195868556820, -0.489466595378013740, -0.489422993663804210, -0.489379390726037140, -0.489335786564821630, -0.489292181180265850, -0.489248574572480440, +-0.489204966741573540, -0.489161357687654290, -0.489117747410831580, -0.489074135911214570, -0.489030523188912160, -0.488986909244032710, -0.488943294076686740, -0.488899677686982500, +-0.488856060075029130, -0.488812441240935590, -0.488768821184810910, -0.488725199906764220, -0.488681577406904490, -0.488637953685340850, -0.488594328742181560, -0.488550702577537190, +-0.488507075191516090, -0.488463446584227300, -0.488419816755779890, -0.488376185706282940, -0.488332553435844750, -0.488288919944575960, -0.488245285232584810, -0.488201649299980560, +-0.488158012146872100, -0.488114373773368640, -0.488070734179579250, -0.488027093365613010, -0.487983451331579000, -0.487939808077585640, -0.487896163603743550, -0.487852517910160990, +-0.487808870996947200, -0.487765222864211200, -0.487721573512062130, -0.487677922940608350, -0.487634271149960550, -0.487590618140227080, -0.487546963911517080, -0.487503308463939630, +-0.487459651797603980, -0.487415993912619140, -0.487372334809094310, -0.487328674487138680, -0.487285012946860550, -0.487241350188370670, -0.487197686211777450, -0.487154021017189960, +-0.487110354604717470, -0.487066686974469090, -0.487023018126553960, -0.486979348061080510, -0.486935676778159520, -0.486892004277899300, -0.486848330560409050, -0.486804655625798000, +-0.486760979474175290, -0.486717302105650120, -0.486673623520331780, -0.486629943718328520, -0.486586262699751190, -0.486542580464708220, -0.486498897013308780, -0.486455212345662140, +-0.486411526461877460, -0.486367839362063960, -0.486324151046330030, -0.486280461514786540, -0.486236770767541900, -0.486193078804705360, -0.486149385626386100, -0.486105691232693370, +-0.486061995623736420, -0.486018298799624440, -0.485974600760466780, -0.485930901506371800, -0.485887201037450370, -0.485843499353810880, -0.485799796455562700, -0.485756092342815030, +-0.485712387015677090, -0.485668680474257430, -0.485624972718666840, -0.485581263749013840, -0.485537553565407620, -0.485493842167957550, -0.485450129556772910, -0.485406415731962910, +-0.485362700693636910, -0.485318984441904130, -0.485275266976873070, -0.485231548298654670, -0.485187828407357410, -0.485144107303090540, -0.485100384985963420, -0.485056661456085340, +-0.485012936713564820, -0.484969210758512740, -0.484925483591037650, -0.484881755211248820, -0.484838025619255650, -0.484794294815167390, -0.484750562799093400, -0.484706829571142970, +-0.484663095131425470, -0.484619359480049530, -0.484575622617125890, -0.484531884542763190, -0.484488145257070850, -0.484444404760158100, -0.484400663052134310, -0.484356920133108940, +-0.484313176003190400, -0.484269430662489790, -0.484225684111115550, -0.484181936349177110, -0.484138187376783820, -0.484094437194045050, -0.484050685801070250, -0.484006933197968670, +-0.483963179384849010, -0.483919424361822170, -0.483875668128996740, -0.483831910686482180, -0.483788152034387850, -0.483744392172823110, -0.483700631101897430, -0.483656868821719380, +-0.483613105332399870, -0.483569340634047660, -0.483525574726772100, -0.483481807610682600, -0.483438039285888580, -0.483394269752499440, -0.483350499010624660, -0.483306727060373640, +-0.483262953901854970, -0.483219179535179730, -0.483175403960456550, -0.483131627177794840, -0.483087849187304070, -0.483044069989093660, -0.483000289583272350, -0.482956507969951040, +-0.482912725149238440, -0.482868941121244120, -0.482825155886077380, -0.482781369443847750, -0.482737581794664690, -0.482693792938637730, -0.482650002875876230, -0.482606211606488980, +-0.482562419130586950, -0.482518625448278890, -0.482474830559674270, -0.482431034464882560, -0.482387237164013270, -0.482343438657175160, -0.482299638944479140, -0.482255838026034110, +-0.482212035901949440, -0.482168232572334650, -0.482124428037299320, -0.482080622296952920, -0.482036815351404970, -0.481993007200764990, -0.481949197845141670, -0.481905387284646160, +-0.481861575519387190, -0.481817762549474280, -0.481773948375016910, -0.481730132996124720, -0.481686316412907210, -0.481642498625473090, -0.481598679633933550, -0.481554859438397260, +-0.481511038038973880, -0.481467215435772870, -0.481423391628903800, -0.481379566618476310, -0.481335740404599870, -0.481291912987383270, -0.481248084366937720, -0.481204254543371900, +-0.481160423516795500, -0.481116591287318040, -0.481072757855049050, -0.481028923220098210, -0.480985087382574280, -0.480941250342588390, -0.480897412100249390, -0.480853572655666860, +-0.480809732008950390, -0.480765890160209600, -0.480722047109554070, -0.480678202857093450, -0.480634357402937310, -0.480590510747194500, -0.480546662889976160, -0.480502813831391210, +-0.480458963571549210, -0.480415112110559760, -0.480371259448532590, -0.480327405585576460, -0.480283550521802600, -0.480239694257319880, -0.480195836792237930, -0.480151978126666380, +-0.480108118260714870, -0.480064257194493080, -0.480020394928110610, -0.479976531461677180, -0.479932666795301670, -0.479888800929095250, -0.479844933863166790, -0.479801065597626030, +-0.479757196132582610, -0.479713325468146210, -0.479669453604425700, -0.479625580541532310, -0.479581706279575030, -0.479537830818663410, -0.479493954158907280, -0.479450076300416250, +-0.479406197243300030, -0.479362316987668290, -0.479318435533630790, -0.479274552881296390, -0.479230669030776380, -0.479186783982179730, -0.479142897735616140, -0.479099010291195280, +-0.479055121649026860, -0.479011231809220670, -0.478967340771885630, -0.478923448537133030, -0.478879555105071740, -0.478835660475811660, -0.478791764649462380, -0.478747867626133640, +-0.478703969405935290, -0.478660069988977030, -0.478616169375367770, -0.478572267565218870, -0.478528364558639340, -0.478484460355738880, -0.478440554956627240, -0.478396648361414270, +-0.478352740570209660, -0.478308831583122370, -0.478264921400263830, -0.478221010021743000, -0.478177097447669620, -0.478133183678153490, -0.478089268713304370, -0.478045352553232160, +-0.478001435198046500, -0.477957516647856520, -0.477913596902773520, -0.477869675962906470, -0.477825753828365280, -0.477781830499259710, -0.477737905975699540, -0.477693980257794640, +-0.477650053345653970, -0.477606125239389000, -0.477562195939108650, -0.477518265444922870, -0.477474333756941370, -0.477430400875274110, -0.477386466800030770, -0.477342531531321280, +-0.477298595069254710, -0.477254657413942460, -0.477210718565493520, -0.477166778524017790, -0.477122837289625120, -0.477078894862425330, -0.477034951242528320, -0.476991006430043940, +-0.476947060425081280, -0.476903113227751700, -0.476859164838164370, -0.476815215256429170, -0.476771264482655890, -0.476727312516954440, -0.476683359359434680, -0.476639405010206570, +-0.476595449469379150, -0.476551492737063930, -0.476507534813369940, -0.476463575698407080, -0.476419615392285330, -0.476375653895114550, -0.476331691207004580, -0.476287727328064630, +-0.476243762258406140, -0.476199795998138280, -0.476155828547370870, -0.476111859906213960, -0.476067890074777340, -0.476023919053171040, -0.475979946841504910, -0.475935973439888140, +-0.475891998848432200, -0.475848023067246270, -0.475804046096440340, -0.475760067936124240, -0.475716088586407960, -0.475672108047401510, -0.475628126319213970, -0.475584143401956870, +-0.475540159295739450, -0.475496174000671620, -0.475452187516863410, -0.475408199844424670, -0.475364210983465430, -0.475320220934095710, -0.475276229696424580, -0.475232237270563740, +-0.475188243656622270, -0.475144248854710180, -0.475100252864937460, -0.475056255687414110, -0.475012257322250160, -0.474968257769554760, -0.474924257029439520, -0.474880255102013590, +-0.474836251987387050, -0.474792247685669910, -0.474748242196972090, -0.474704235521403730, -0.474660227659074730, -0.474616218610094400, -0.474572208374574310, -0.474528196952623660, +-0.474484184344352580, -0.474440170549870980, -0.474396155569288990, -0.474352139402716590, -0.474308122050263850, -0.474264103512040070, -0.474220083788156780, -0.474176062878723270, +-0.474132040783849570, -0.474088017503645820, -0.474043993038221980, -0.473999967387688240, -0.473955940552154510, -0.473911912531730150, -0.473867883326526800, -0.473823852936653740, +-0.473779821362221080, -0.473735788603338870, -0.473691754660117150, -0.473647719532666040, -0.473603683221094860, -0.473559645725515290, -0.473515607046036570, -0.473471567182768840, +-0.473427526135822170, -0.473383483905306710, -0.473339440491332530, -0.473295395894009760, -0.473251350113447710, -0.473207303149758060, -0.473163255003050180, -0.473119205673434130, +-0.473075155161020110, -0.473031103465918200, -0.472987050588238480, -0.472942996528090350, -0.472898941285585570, -0.472854884860833380, -0.472810827253944020, -0.472766768465027580, +-0.472722708494194230, -0.472678647341554070, -0.472634585007217330, -0.472590521491293320, -0.472546456793893840, -0.472502390915128130, -0.472458323855106500, -0.472414255613939070, +-0.472370186191735990, -0.472326115588607430, -0.472282043804662820, -0.472237970840013840, -0.472193896694769970, -0.472149821369041380, -0.472105744862938210, -0.472061667176570670, +-0.472017588310048970, -0.471973508263483280, -0.471929427036983040, -0.471885344630660060, -0.471841261044623710, -0.471797176278984150, -0.471753090333851710, -0.471709003209336510, +-0.471664914905548790, -0.471620825422598810, -0.471576734760596030, -0.471532642919652130, -0.471488549899876650, -0.471444455701379770, -0.471400360324271740, -0.471356263768662850, +-0.471312166034663300, -0.471268067122383340, -0.471223967031932370, -0.471179865763422300, -0.471135763316962610, -0.471091659692663480, -0.471047554890635160, -0.471003448910988000, +-0.470959341753832190, -0.470915233419277270, -0.470871123907435020, -0.470827013218415020, -0.470782901352327420, -0.470738788309282620, -0.470694674089390810, -0.470650558692762340, +-0.470606442119507420, -0.470562324369735660, -0.470518205443558880, -0.470474085341086590, -0.470429964062429040, -0.470385841607696640, -0.470341717976999580, -0.470297593170448280, +-0.470253467188152140, -0.470209340030223190, -0.470165211696770840, -0.470121082187905490, -0.470076951503737460, -0.470032819644376990, -0.469988686609934480, -0.469944552400520300, +-0.469900417016243910, -0.469856280457217280, -0.469812142723549990, -0.469768003815352280, -0.469723863732734560, -0.469679722475807250, -0.469635580044680530, -0.469591436439464160, +-0.469547291660269980, -0.469503145707207530, -0.469458998580387250, -0.469414850279919470, -0.469370700805914530, -0.469326550158482850, -0.469282398337734830, -0.469238245343780000, +-0.469194091176730330, -0.469149935836695450, -0.469105779323785720, -0.469061621638111550, -0.469017462779783350, -0.468973302748911470, -0.468929141545606330, -0.468884979169977570, +-0.468840815622137140, -0.468796650902194630, -0.468752485010260570, -0.468708317946445240, -0.468664149710859120, -0.468619980303612630, -0.468575809724816220, -0.468531637974579470, +-0.468487465053014420, -0.468443290960230680, -0.468399115696338740, -0.468354939261449000, -0.468310761655671930, -0.468266582879117930, -0.468222402931896760, -0.468178221814120280, +-0.468134039525898270, -0.468089856067341210, -0.468045671438559460, -0.468001485639663540, -0.467957298670763910, -0.467913110531971040, -0.467868921223394570, -0.467824730745146630, +-0.467780539097336860, -0.467736346280075710, -0.467692152293473720, -0.467647957137641350, -0.467603760812689060, -0.467559563318726610, -0.467515364655866020, -0.467471164824217020, +-0.467426963823890150, -0.467382761654995820, -0.467338558317644590, -0.467294353811947010, -0.467250148138013520, -0.467205941295953830, -0.467161733285880120, -0.467117524107902080, +-0.467073313762130240, -0.467029102248675050, -0.466984889567647170, -0.466940675719157040, -0.466896460703314420, -0.466852244520231500, -0.466808027170017900, -0.466763808652784270, +-0.466719588968641070, -0.466675368117698940, -0.466631146100068390, -0.466586922915859960, -0.466542698565183430, -0.466498473048150950, -0.466454246364872320, -0.466410018515458050, +-0.466365789500018720, -0.466321559318664920, -0.466277327971507230, -0.466233095458656210, -0.466188861780221670, -0.466144626936315810, -0.466100390927048300, -0.466056153752529840, +-0.466011915412871010, -0.465967675908182390, -0.465923435238574600, -0.465879193404158180, -0.465834950405043020, -0.465790706241341280, -0.465746460913162740, -0.465702214420618100, +-0.465657966763817880, -0.465613717942872760, -0.465569467957893330, -0.465525216808989450, -0.465480964496273300, -0.465436711019854790, -0.465392456379844440, -0.465348200576353010, +-0.465303943609491010, -0.465259685479369190, -0.465215426186098180, -0.465171165729787780, -0.465126904110550240, -0.465082641328495470, -0.465038377383734100, -0.464994112276376770, +-0.464949846006534220, -0.464905578574316970, -0.464861309979835050, -0.464817040223200580, -0.464772769304523550, -0.464728497223914570, -0.464684223981484400, -0.464639949577343610, +-0.464595674011603010, -0.464551397284373170, -0.464507119395764060, -0.464462840345887920, -0.464418560134854720, -0.464374278762775150, -0.464329996229759790, -0.464285712535919490, +-0.464241427681364950, -0.464197141666206010, -0.464152854490554990, -0.464108566154521840, -0.464064276658217310, -0.464019986001752040, -0.463975694185236820, -0.463931401208782400, +-0.463887107072499420, -0.463842811776497940, -0.463798515320890170, -0.463754217705786180, -0.463709918931296590, -0.463665618997532230, -0.463621317904603760, -0.463577015652622050, +-0.463532712241697790, -0.463488407671940990, -0.463444101943463920, -0.463399795056376630, -0.463355487010789820, -0.463311177806814300, -0.463266867444560860, -0.463222555924140190, +-0.463178243245663200, -0.463133929409239810, -0.463089614414982310, -0.463045298263000840, -0.463000980953406140, -0.462956662486308960, -0.462912342861820090, -0.462868022080050400, +-0.462823700141109850, -0.462779377045110850, -0.462735052792163430, -0.462690727382378380, -0.462646400815866440, -0.462602073092738600, -0.462557744213105470, -0.462513414177078030, +-0.462469082984766300, -0.462424750636282630, -0.462380417131737050, -0.462336082471240470, -0.462291746654903690, -0.462247409682837510, -0.462203071555152780, -0.462158732271959640, +-0.462114391833370440, -0.462070050239495270, -0.462025707490444970, -0.461981363586330350, -0.461937018527262380, -0.461892672313351850, -0.461848324944709620, -0.461803976421445830, +-0.461759626743672880, -0.461715275911500860, -0.461670923925040610, -0.461626570784403110, -0.461582216489699100, -0.461537861041039610, -0.461493504438534710, -0.461449146682296810, +-0.461404787772435990, -0.461360427709063270, -0.461316066492289460, -0.461271704122225460, -0.461227340598982240, -0.461182975922670600, -0.461138610093400790, -0.461094243111285220, +-0.461049874976434070, -0.461005505688958210, -0.460961135248968590, -0.460916763656576130, -0.460872390911891800, -0.460828017015025680, -0.460783641966090280, -0.460739265765195800, +-0.460694888412453150, -0.460650509907973290, -0.460606130251867140, -0.460561749444245660, -0.460517367485219820, -0.460472984374900530, -0.460428600113398030, -0.460384214700824800, +-0.460339828137291020, -0.460295440422907710, -0.460251051557785780, -0.460206661542036210, -0.460162270375770010, -0.460117878059097320, -0.460073484592130770, -0.460029089974980430, +-0.459984694207757450, -0.459940297290572670, -0.459895899223537190, -0.459851500006761950, -0.459807099640357930, -0.459762698124435380, -0.459718295459106920, -0.459673891644482690, +-0.459629486680673720, -0.459585080567791020, -0.459540673305945670, -0.459496264895248590, -0.459451855335810120, -0.459407444627742740, -0.459363032771156750, -0.459318619766163230, +-0.459274205612873130, -0.459229790311397490, -0.459185373861847430, -0.459140956264333880, -0.459096537518967170, -0.459052117625859900, -0.459007696585122360, -0.458963274396865570, +-0.458918851061200620, -0.458874426578238510, -0.458830000948090340, -0.458785574170866350, -0.458741146246679220, -0.458696717175639260, -0.458652286957857480, -0.458607855593445020, +-0.458563423082512910, -0.458518989425172220, -0.458474554621534080, -0.458430118671708740, -0.458385681575808890, -0.458341243333944830, -0.458296803946227680, -0.458252363412768540, +-0.458207921733678470, -0.458163478909068610, -0.458119034939049260, -0.458074589823733060, -0.458030143563230460, -0.457985696157652440, -0.457941247607110250, -0.457896797911714890, +-0.457852347071577510, -0.457807895086809360, -0.457763441957521390, -0.457718987683824020, -0.457674532265830050, -0.457630075703649660, -0.457585617997394110, -0.457541159147174530, +-0.457496699153102090, -0.457452238015287840, -0.457407775733842230, -0.457363312308877950, -0.457318847740505410, -0.457274382028835750, -0.457229915173980150, -0.457185447176049700, +-0.457140978035155690, -0.457096507751409250, -0.457052036324920700, -0.457007563755802870, -0.456963090044166130, -0.456918615190121670, -0.456874139193780670, -0.456829662055254330, +-0.456785183774653820, -0.456740704352089580, -0.456696223787674330, -0.456651742081518540, -0.456607259233733410, -0.456562775244430120, -0.456518290113719920, -0.456473803841713990, +-0.456429316428523520, -0.456384827874258990, -0.456340338179033130, -0.456295847342956470, -0.456251355366140200, -0.456206862248695550, -0.456162367990733730, -0.456117872592365970, +-0.456073376053702790, -0.456028878374856890, -0.455984379555938850, -0.455939879597059840, -0.455895378498331120, -0.455850876259863980, -0.455806372881769620, -0.455761868364159330, +-0.455717362707143580, -0.455672855910835280, -0.455628347975344740, -0.455583838900783410, -0.455539328687262430, -0.455494817334893170, -0.455450304843786850, -0.455405791214053950, +-0.455361276445807370, -0.455316760539157650, -0.455272243494215970, -0.455227725311093730, -0.455183205989902140, -0.455138685530752540, -0.455094163933756230, -0.455049641199024520, +-0.455005117326667930, -0.454960592316799310, -0.454916066169529230, -0.454871538884968950, -0.454827010463229870, -0.454782480904423190, -0.454737950208660370, -0.454693418376051870, +-0.454648885406710610, -0.454604351300747170, -0.454559816058272840, -0.454515279679398920, -0.454470742164236830, -0.454426203512897920, -0.454381663725493490, -0.454337122802134060, +-0.454292580742932660, -0.454248037547999810, -0.454203493217446850, -0.454158947751385160, -0.454114401149926070, -0.454069853413181010, -0.454025304541260550, -0.453980754534277550, +-0.453936203392342750, -0.453891651115567400, -0.453847097704062900, -0.453802543157940660, -0.453757987477312110, -0.453713430662288530, -0.453668872712980620, -0.453624313629501340, +-0.453579753411961220, -0.453535192060471770, -0.453490629575144300, -0.453446065956090270, -0.453401501203421100, -0.453356935317247360, -0.453312368297682070, -0.453267800144835860, +-0.453223230858820160, -0.453178660439746360, -0.453134088887725940, -0.453089516202870300, -0.453044942385290860, -0.453000367435098250, -0.452955791352405550, -0.452911214137323330, +-0.452866635789963110, -0.452822056310436320, -0.452777475698854350, -0.452732893955328670, -0.452688311079969980, -0.452643727072891360, -0.452599141934203360, -0.452554555664017530, +-0.452509968262445330, -0.452465379729598160, -0.452420790065587550, -0.452376199270525030, -0.452331607344521160, -0.452287014287689080, -0.452242420100139430, -0.452197824781983780, +-0.452153228333333550, -0.452108630754300240, -0.452064032044995350, -0.452019432205530420, -0.451974831236016060, -0.451930229136565440, -0.451885625907289260, -0.451841021548299030, +-0.451796416059706220, -0.451751809441622350, -0.451707201694159010, -0.451662592817427600, -0.451617982811538980, -0.451573371676606160, -0.451528759412739900, -0.451484146020051770, +-0.451439531498653290, -0.451394915848655930, -0.451350299070171320, -0.451305681163310160, -0.451261062128185560, -0.451216441964908340, -0.451171820673590020, -0.451127198254342110, +-0.451082574707276250, -0.451037950032503960, -0.450993324230136770, -0.450948697300285470, -0.450904069243063200, -0.450859440058580810, -0.450814809746949760, -0.450770178308281750, +-0.450725545742688250, -0.450680912050280880, -0.450636277231170500, -0.450591641285470130, -0.450547004213290750, -0.450502366014743800, -0.450457726689940940, -0.450413086238993790, +-0.450368444662013870, -0.450323801959112870, -0.450279158130401590, -0.450234513175993220, -0.450189867095998510, -0.450145219890529190, -0.450100571559696790, -0.450055922103612950, +-0.450011271522389340, -0.449966619816136730, -0.449921966984968390, -0.449877313028995090, -0.449832657948328550, -0.449788001743080370, -0.449743344413362170, -0.449698685959285580, +-0.449654026380962300, -0.449609365678503180, -0.449564703852021410, -0.449520040901627890, -0.449475376827434270, -0.449430711629552230, -0.449386045308093340, -0.449341377863169410, +-0.449296709294892020, -0.449252039603372070, -0.449207368788722810, -0.449162696851055090, -0.449118023790480660, -0.449073349607111150, -0.449028674301058310, -0.448983997872433760, +-0.448939320321349200, -0.448894641647915540, -0.448849961852246130, -0.448805280934451770, -0.448760598894644200, -0.448715915732935120, -0.448671231449436270, -0.448626546044259390, +-0.448581859517515280, -0.448537171869317350, -0.448492483099776460, -0.448447793209004410, -0.448403102197112880, -0.448358410064213560, -0.448313716810418210, -0.448269022435838600, +-0.448224326940585620, -0.448179630324772590, -0.448134932588510500, -0.448090233731911090, -0.448045533755086100, -0.448000832658147270, -0.447956130441206410, -0.447911427104374370, +-0.447866722647764560, -0.447822017071487940, -0.447777310375656320, -0.447732602560381390, -0.447687893625774940, -0.447643183571948770, -0.447598472399014680, -0.447553760107083590, +-0.447509046696268840, -0.447464332166681520, -0.447419616518433370, -0.447374899751636190, -0.447330181866401780, -0.447285462862841880, -0.447240742741067510, -0.447196021501192090, +-0.447151299143326630, -0.447106575667582940, -0.447061851074072760, -0.447017125362908000, -0.446972398534200400, -0.446927670588061820, -0.446882941524603280, -0.446838211343938140, +-0.446793480046177530, -0.446748747631433190, -0.446704014099816970, -0.446659279451440680, -0.446614543686416230, -0.446569806804855470, -0.446525068806869320, -0.446480329692571340, +-0.446435589462072510, -0.446390848115484740, -0.446346105652919820, -0.446301362074489670, -0.446256617380306090, -0.446211871570480920, -0.446167124645125370, -0.446122376604352720, +-0.446077627448274170, -0.446032877177001570, -0.445988125790646730, -0.445943373289321600, -0.445898619673138040, -0.445853864942207130, -0.445809109096642340, -0.445764352136554800, +-0.445719594062056410, -0.445674834873258980, -0.445630074570274480, -0.445585313153214810, -0.445540550622191830, -0.445495786977316680, -0.445451022218702860, -0.445406256346461530, +-0.445361489360704520, -0.445316721261543760, -0.445271952049091260, -0.445227181723458820, -0.445182410284757690, -0.445137637733101280, -0.445092864068600770, -0.445048089291368130, +-0.445003313401515280, -0.444958536399154110, -0.444913758284396610, -0.444868979057354730, -0.444824198718139610, -0.444779417266864760, -0.444734634703641380, -0.444689851028581440, +-0.444645066241796840, -0.444600280343399600, -0.444555493333501640, -0.444510705212214140, -0.444465915979650680, -0.444421125635922450, -0.444376334181141420, -0.444331541615419550, +-0.444286747938868800, -0.444241953151601140, -0.444197157253728660, -0.444152360245362480, -0.444107562126616170, -0.444062762897600990, -0.444017962558428900, -0.443973161109211870, +-0.443928358550061960, -0.443883554881091160, -0.443838750102411470, -0.443793944214134100, -0.443749137216372660, -0.443704329109238400, -0.443659519892843300, -0.443614709567299430, +-0.443569898132718740, -0.443525085589213330, -0.443480271936895210, -0.443435457175875620, -0.443390641306268150, -0.443345824328184090, -0.443301006241735520, -0.443256187047034340, +-0.443211366744192760, -0.443166545333322780, -0.443121722814535600, -0.443076899187944910, -0.443032074453661990, -0.442987248611798890, -0.442942421662467610, -0.442897593605780350, +-0.442852764441849070, -0.442807934170785900, -0.442763102792702030, -0.442718270307711270, -0.442673436715924850, -0.442628602017454800, -0.442583766212413240, -0.442538929300912260, +-0.442494091283063990, -0.442449252158979680, -0.442404411928773060, -0.442359570592555370, -0.442314728150438760, -0.442269884602535360, -0.442225039948957180, -0.442180194189816470, +-0.442135347325225250, -0.442090499355294870, -0.442045650280139040, -0.442000800099869080, -0.441955948814597100, -0.441911096424435270, -0.441866242929495720, -0.441821388329890540, +-0.441776532625731080, -0.441731675817131130, -0.441686817904201940, -0.441641958887055710, -0.441597098765804610, -0.441552237540560780, -0.441507375211436290, -0.441462511778543400, +-0.441417647241993450, -0.441372781601900190, -0.441327914858374910, -0.441283047011529870, -0.441238178061477250, -0.441193308008329180, -0.441148436852197790, -0.441103564593195330, +-0.441058691231433210, -0.441013816767025110, -0.440968941200082450, -0.440924064530717470, -0.440879186759042360, -0.440834307885169200, -0.440789427909210330, -0.440744546831277890, +-0.440699664651483250, -0.440654781369940300, -0.440609896986760340, -0.440565011502055680, -0.440520124915938500, -0.440475237228520940, -0.440430348439915350, -0.440385458550233090, +-0.440340567559587950, -0.440295675468091400, -0.440250782275855680, -0.440205887982992980, -0.440160992589615610, -0.440116096095835680, -0.440071198501765570, -0.440026299807516620, +-0.439981400013202740, -0.439936499118935400, -0.439891597124826780, -0.439846694030989140, -0.439801789837534820, -0.439756884544575950, -0.439711978152224130, -0.439667070660593180, +-0.439622162069794490, -0.439577252379940440, -0.439532341591143240, -0.439487429703515230, -0.439442516717168610, -0.439397602632215670, -0.439352687448767990, -0.439307771166939310, +-0.439262853786841270, -0.439217935308586050, -0.439173015732286010, -0.439128095058053450, -0.439083173286000660, -0.439038250416239120, -0.438993326448882730, -0.438948401384043010, +-0.438903475221832320, -0.438858547962362950, -0.438813619605747220, -0.438768690152097410, -0.438723759601525880, -0.438678827954144200, -0.438633895210066180, -0.438588961369403450, +-0.438544026432268310, -0.438499090398773110, -0.438454153269030200, -0.438409215043151890, -0.438364275721250580, -0.438319335303437750, -0.438274393789827350, -0.438229451180531030, +-0.438184507475661010, -0.438139562675329770, -0.438094616779649610, -0.438049669788732890, -0.438004721702692060, -0.437959772521638540, -0.437914822245686450, -0.437869870874947280, +-0.437824918409533470, -0.437779964849557330, -0.437735010195131280, -0.437690054446367720, -0.437645097603378160, -0.437600139666276760, -0.437555180635174960, -0.437510220510185180, +-0.437465259291419880, -0.437420296978991430, -0.437375333573012230, -0.437330369073594680, -0.437285403480850430, -0.437240436794893490, -0.437195469015835450, -0.437150500143788700, +-0.437105530178865720, -0.437060559121178920, -0.437015586970840750, -0.436970613727962750, -0.436925639392659100, -0.436880663965041270, -0.436835687445221830, -0.436790709833313140, +-0.436745731129427720, -0.436700751333677920, -0.436655770446176260, -0.436610788467034380, -0.436565805396366360, -0.436520821234283760, -0.436475835980899170, -0.436430849636324950, +-0.436385862200673600, -0.436340873674057660, -0.436295884056588650, -0.436250893348380800, -0.436205901549545690, -0.436160908660195800, -0.436115914680443690, -0.436070919610401730, +-0.436025923450182540, -0.435980926199898480, -0.435935927859661340, -0.435890928429585160, -0.435845927909781720, -0.435800926300363380, -0.435755923601442770, -0.435710919813132310, +-0.435665914935544630, -0.435620908968791300, -0.435575901912986510, -0.435530893768241940, -0.435485884534670190, -0.435440874212383700, -0.435395862801495000, -0.435350850302116680, +-0.435305836714361240, -0.435260822038341160, -0.435215806274168280, -0.435170789421956640, -0.435125771481818080, -0.435080752453865020, -0.435035732338210130, -0.434990711134965900, +-0.434945688844244890, -0.434900665466158850, -0.434855641000821970, -0.434810615448345980, -0.434765588808843420, -0.434720561082426900, -0.434675532269209020, -0.434630502369302290, +-0.434585471382819280, -0.434540439309871800, -0.434495406150574030, -0.434450371905037710, -0.434405336573375540, -0.434360300155699990, -0.434315262652123670, -0.434270224062759170, +-0.434225184387718340, -0.434180143627115380, -0.434135101781062020, -0.434090058849670950, -0.434045014833054690, -0.433999969731325930, -0.433954923544597190, -0.433909876272981170, +-0.433864827916589700, -0.433819778475536880, -0.433774727949934660, -0.433729676339895620, -0.433684623645532400, -0.433639569866957620, -0.433594515004283920, -0.433549459057623100, +-0.433504402027089450, -0.433459343912794780, -0.433414284714851770, -0.433369224433373060, -0.433324163068471270, -0.433279100620259090, -0.433234037088849110, -0.433188972474353280, +-0.433143906776885800, -0.433098839996558570, -0.433053772133484280, -0.433008703187775510, -0.432963633159544950, -0.432918562048905330, -0.432873489855968570, -0.432828416580848810, +-0.432783342223658050, -0.432738266784508880, -0.432693190263514100, -0.432648112660786340, -0.432603033976438290, -0.432557954210582630, -0.432512873363332110, -0.432467791434798630, +-0.432422708425096390, -0.432377624334337460, -0.432332539162634420, -0.432287452910100070, -0.432242365576847090, -0.432197277162988170, -0.432152187668635280, -0.432107097093902710, +-0.432062005438902390, -0.432016912703747040, -0.431971818888549410, -0.431926723993422300, -0.431881628018478290, -0.431836530963830290, -0.431791432829590090, -0.431746333615872170, +-0.431701233322788370, -0.431656131950451490, -0.431611029498974340, -0.431565925968469540, -0.431520821359049960, -0.431475715670827540, -0.431430608903916600, -0.431385501058429150, +-0.431340392134478000, -0.431295282132175770, -0.431250171051635430, -0.431205058892969620, -0.431159945656291120, -0.431114831341712020, -0.431069715949346620, -0.431024599479306940, +-0.430979481931705770, -0.430934363306655850, -0.430889243604270060, -0.430844122824661170, -0.430799000967941160, -0.430753878034224440, -0.430708754023623020, -0.430663628936249710, +-0.430618502772217360, -0.430573375531638710, -0.430528247214626620, -0.430483117821293950, -0.430437987351752700, -0.430392855806117250, -0.430347723184499650, -0.430302589487012780, +-0.430257454713769420, -0.430212318864882370, -0.430167181940464600, -0.430122043940628030, -0.430076904865487160, -0.430031764715154030, -0.429986623489741540, -0.429941481189362430, +-0.429896337814129610, -0.429851193364156000, -0.429806047839554340, -0.429760901240437590, -0.429715753566917820, -0.429670604819109400, -0.429625454997124510, -0.429580304101076000, +-0.429535152131076740, -0.429489999087239560, -0.429444844969677390, -0.429399689778502290, -0.429354533513828800, -0.429309376175768980, -0.429264217764435680, -0.429219058279941830, +-0.429173897722400390, -0.429128736091924150, -0.429083573388626130, -0.429038409612618300, -0.428993244764015290, -0.428948078842929180, -0.428902911849472880, -0.428857743783759290, +-0.428812574645901330, -0.428767404436011910, -0.428722233154203210, -0.428677060800589760, -0.428631887375283630, -0.428586712878397720, -0.428541537310045130, -0.428496360670338640, +-0.428451182959391220, -0.428406004177315890, -0.428360824324224730, -0.428315643400232320, -0.428270461405450830, -0.428225278339993130, -0.428180094203972290, -0.428134908997501170, +-0.428089722720692790, -0.428044535373659330, -0.427999346956515310, -0.427954157469372930, -0.427908966912345150, -0.427863775285544920, -0.427818582589085280, -0.427773388823079190, +-0.427728193987639620, -0.427682998082878800, -0.427637801108911250, -0.427592603065849170, -0.427547403953805640, -0.427502203772893610, -0.427457002523225990, -0.427411800204915930, +-0.427366596818075540, -0.427321392362819460, -0.427276186839259940, -0.427230980247509880, -0.427185772587682420, -0.427140563859890520, -0.427095354064247200, -0.427050143200865540, +-0.427004931269858500, -0.426959718271338270, -0.426914504205419600, -0.426869289072214660, -0.426824072871836550, -0.426778855604398210, -0.426733637270012680, -0.426688417868793140, +-0.426643197400851710, -0.426597975866303100, -0.426552753265259540, -0.426507529597834110, -0.426462304864139890, -0.426417079064289830, -0.426371852198397130, -0.426326624266574810, +-0.426281395268935100, -0.426236165205592710, -0.426190934076659870, -0.426145701882249760, -0.426100468622475360, -0.426055234297449790, -0.426009998907286140, -0.425964762452096690, +-0.425919524931996140, -0.425874286347096730, -0.425829046697511650, -0.425783805983353970, -0.425738564204736770, -0.425693321361773120, -0.425648077454576170, -0.425602832483258250, +-0.425557586447934070, -0.425512339348715910, -0.425467091185716910, -0.425421841959050140, -0.425376591668828800, -0.425331340315165950, -0.425286087898173960, -0.425240834417967560, +-0.425195579874659110, -0.425150324268361630, -0.425105067599188420, -0.425059809867252500, -0.425014551072667060, -0.424969291215545280, -0.424924030295999400, -0.424878768314144280, +-0.424833505270092230, -0.424788241163956470, -0.424742975995850040, -0.424697709765886220, -0.424652442474178100, -0.424607174120838040, -0.424561904705980870, -0.424516634229718970, +-0.424471362692165450, -0.424426090093433570, -0.424380816433636400, -0.424335541712887230, -0.424290265931299200, -0.424244989088984730, -0.424199711186058540, -0.424154432222633100, +-0.424109152198821560, -0.424063871114737150, -0.424018588970493050, -0.423973305766202510, -0.423928021501978670, -0.423882736177933980, -0.423837449794183310, -0.423792162350838940, +-0.423746873848014180, -0.423701584285822270, -0.423656293664376400, -0.423611001983789760, -0.423565709244175640, -0.423520415445646450, -0.423475120588316990, -0.423429824672299730, +-0.423384527697707960, -0.423339229664654810, -0.423293930573253600, -0.423248630423617600, -0.423203329215859180, -0.423158026950093250, -0.423112723626432260, -0.423067419244989470, +-0.423022113805878120, -0.422976807309211500, -0.422931499755102860, -0.422886191143665490, -0.422840881475011810, -0.422795570749256720, -0.422750258966512690, -0.422704946126893080, +-0.422659632230511060, -0.422614317277479950, -0.422569001267913080, -0.422523684201922880, -0.422478366079624250, -0.422433046901129760, -0.422387726666552610, -0.422342405376006150, +-0.422297083029603670, -0.422251759627458530, -0.422206435169683920, -0.422161109656392470, -0.422115783087699040, -0.422070455463716130, -0.422025126784557110, -0.421979797050335280, +-0.421934466261163930, -0.421889134417156420, -0.421843801518425320, -0.421798467565085430, -0.421753132557249440, -0.421707796495030600, -0.421662459378542300, -0.421617121207897790, +-0.421571781983210490, -0.421526441704593750, -0.421481100372160130, -0.421435757986024510, -0.421390414546299550, -0.421345070053098510, -0.421299724506534800, -0.421254377906721820, +-0.421209030253772820, -0.421163681547801320, -0.421118331788919780, -0.421072980977243220, -0.421027629112884220, -0.420982276195956130, -0.420936922226572310, -0.420891567204846220, +-0.420846211130891270, -0.420800854004820700, -0.420755495826747260, -0.420710136596785860, -0.420664776315049120, -0.420619414981650400, -0.420574052596703160, -0.420528689160320820, +-0.420483324672616730, -0.420437959133703580, -0.420392592543696260, -0.420347224902707480, -0.420301856210850700, -0.420256486468239210, -0.420211115674986540, -0.420165743831206030, +-0.420120370937011210, -0.420074996992514660, -0.420029621997831390, -0.419984245953074100, -0.419938868858356180, -0.419893490713791060, -0.419848111519492250, -0.419802731275573160, +-0.419757349982146420, -0.419711967639327110, -0.419666584247227910, -0.419621199805962240, -0.419575814315643560, -0.419530427776385330, -0.419485040188301020, -0.419439651551504140, +-0.419394261866107340, -0.419348871132225690, -0.419303479349971810, -0.419258086519459280, -0.419212692640801520, -0.419167297714112040, -0.419121901739504310, -0.419076504717091010, +-0.419031106646987230, -0.418985707529305750, -0.418940307364159940, -0.418894906151663360, -0.418849503891929540, -0.418804100585072000, -0.418758696231204150, -0.418713290830438790, +-0.418667884382890990, -0.418622476888673490, -0.418577068347899760, -0.418531658760683380, -0.418486248127137860, -0.418440836447376730, -0.418395423721513500, -0.418350009949660930, +-0.418304595131934080, -0.418259179268445800, -0.418213762359309570, -0.418168344404638900, -0.418122925404547370, -0.418077505359148560, -0.418032084268555980, -0.417986662132882380, +-0.417941238952242890, -0.417895814726750360, -0.417850389456518260, -0.417804963141660210, -0.417759535782289750, -0.417714107378520440, -0.417668677930465030, -0.417623247438238750, +-0.417577815901954360, -0.417532383321725430, -0.417486949697665530, -0.417441515029888300, -0.417396079318507250, -0.417350642563635970, -0.417305204765387290, -0.417259765923876420, +-0.417214326039216150, -0.417168885111520060, -0.417123443140901770, -0.417078000127474870, -0.417032556071352920, -0.416987110972648790, -0.416941664831477710, -0.416896217647952480, +-0.416850769422186680, -0.416805320154294000, -0.416759869844387950, -0.416714418492582280, -0.416668966098990570, -0.416623512663725600, -0.416578058186902630, -0.416532602668634570, +-0.416487146109034980, -0.416441688508217560, -0.416396229866295870, -0.416350770183383620, -0.416305309459593650, -0.416259847695041210, -0.416214384889839200, -0.416168921044101140, +-0.416123456157940830, -0.416077990231471850, -0.416032523264807940, -0.415987055258062680, -0.415941586211348970, -0.415896116124782110, -0.415850644998474960, -0.415805172832541260, +-0.415759699627094530, -0.415714225382248610, -0.415668750098117100, -0.415623273774813730, -0.415577796412451410, -0.415532318011145320, -0.415486838571008490, -0.415441358092154540, +-0.415395876574697230, -0.415350394018750180, -0.415304910424427190, -0.415259425791841890, -0.415213940121107240, -0.415168453412338550, -0.415122965665648710, -0.415077476881151490, +-0.415031987058960550, -0.414986496199189590, -0.414941004301952470, -0.414895511367362020, -0.414850017395533570, -0.414804522386580110, -0.414759026340615290, -0.414713529257752960, +-0.414668031138106800, -0.414622531981790550, -0.414577031788917970, -0.414531530559602010, -0.414486028293957980, -0.414440524992098940, -0.414395020654138580, -0.414349515280190650, +-0.414304008870368940, -0.414258501424787210, -0.414212992943558400, -0.414167483426797990, -0.414121972874618770, -0.414076461287134660, -0.414030948664459440, -0.413985435006706810, +-0.413939920313990570, -0.413894404586424570, -0.413848887824121710, -0.413803370027197470, -0.413757851195764800, -0.413712331329937510, -0.413666810429829390, -0.413621288495554240, +-0.413575765527225860, -0.413530241524957260, -0.413484716488863870, -0.413439190419058630, -0.413393663315655520, -0.413348135178768170, -0.413302606008510540, -0.413257075804996380, +-0.413211544568339470, -0.413166012298652960, -0.413120478996052200, -0.413074944660650260, -0.413029409292560930, -0.412983872891898140, -0.412938335458775620, -0.412892796993307280, +-0.412847257495606910, -0.412801716965787600, -0.412756175403964810, -0.412710632810251610, -0.412665089184761800, -0.412619544527609290, -0.412573998838907880, -0.412528452118771480, +-0.412482904367314000, -0.412437355584648390, -0.412391805770890240, -0.412346254926152570, -0.412300703050549280, -0.412255150144194170, -0.412209596207201270, -0.412164041239684310, +-0.412118485241756480, -0.412072928213533200, -0.412027370155127640, -0.411981811066653660, -0.411936250948225110, -0.411890689799955970, -0.411845127621960070, -0.411799564414351390, +-0.411754000177242950, -0.411708434910750380, -0.411662868614986690, -0.411617301290065800, -0.411571732936101660, -0.411526163553208260, -0.411480593141499370, -0.411435021701088250, +-0.411389449232090310, -0.411343875734618840, -0.411298301208787630, -0.411252725654710660, -0.411207149072501890, -0.411161571462275220, -0.411115992824144630, -0.411070413158223290, +-0.411024832464626680, -0.410979250743468030, -0.410933667994861250, -0.410888084218920260, -0.410842499415759070, -0.410796913585491640, -0.410751326728231110, -0.410705738844093120, +-0.410660149933190720, -0.410614559995638010, -0.410568969031548820, -0.410523377041037250, -0.410477784024217250, -0.410432189981202790, -0.410386594912107050, -0.410340998817045610, +-0.410295401696131660, -0.410249803549479260, -0.410204204377202290, -0.410158604179414850, -0.410113002956230880, -0.410067400707764430, -0.410021797434128640, -0.409976193135439150, +-0.409930587811809190, -0.409884981463352780, -0.409839374090183890, -0.409793765692416600, -0.409748156270164920, -0.409702545823542760, -0.409656934352663480, -0.409611321857642710, +-0.409565708338593570, -0.409520093795630200, -0.409474478228866570, -0.409428861638416740, -0.409383244024394800, -0.409337625386913870, -0.409292005726089760, -0.409246385042035590, +-0.409200763334865490, -0.409155140604693430, -0.409109516851633550, -0.409063892075799910, -0.409018266277306470, -0.408972639456266610, -0.408927011612795930, -0.408881382747007750, +-0.408835752859016130, -0.408790121948935100, -0.408744490016878740, -0.408698857062961160, -0.408653223087295680, -0.408607588089997920, -0.408561952071181180, -0.408516315030959590, +-0.408470676969447170, -0.408425037886758100, -0.408379397783006410, -0.408333756658306240, -0.408288114512770810, -0.408242471346515980, -0.408196827159654940, -0.408151181952301820, +-0.408105535724570760, -0.408059888476575870, -0.408014240208431240, -0.407968590920250230, -0.407922940612148510, -0.407877289284239500, -0.407831636936637210, -0.407785983569455830, +-0.407740329182809560, -0.407694673776812400, -0.407649017351578550, -0.407603359907221410, -0.407557701443856610, -0.407512041961597570, -0.407466381460558470, -0.407420719940853380, +-0.407375057402596500, -0.407329393845902000, -0.407283729270883190, -0.407238063677655860, -0.407192397066333370, -0.407146729437029840, -0.407101060789859530, -0.407055391124936610, +-0.407009720442375160, -0.406964048742289420, -0.406918376024793580, -0.406872702290000940, -0.406827027538027410, -0.406781351768986280, -0.406735674982991790, -0.406689997180158080, +-0.406644318360599390, -0.406598638524429900, -0.406552957671763030, -0.406507275802714560, -0.406461592917397920, -0.406415909015927280, -0.406370224098416890, -0.406324538164980880, +-0.406278851215733590, -0.406233163250789120, -0.406187474270260970, -0.406141784274264950, -0.406096093262914460, -0.406050401236323690, -0.406004708194606990, -0.405959014137878490, +-0.405913319066252440, -0.405867622979842300, -0.405821925878763870, -0.405776227763130660, -0.405730528633056920, -0.405684828488656830, -0.405639127330044650, -0.405593425157334650, +-0.405547721970641100, -0.405502017770077440, -0.405456312555759530, -0.405410606327800850, -0.405364899086315680, -0.405319190831418210, -0.405273481563222790, -0.405227771281843670, +-0.405182059987394320, -0.405136347679990630, -0.405090634359746020, -0.405044920026774890, -0.404999204681191440, -0.404953488323109960, -0.404907770952644740, -0.404862052569910150, +-0.404816333175019580, -0.404770612768089010, -0.404724891349231900, -0.404679168918562540, -0.404633445476195290, -0.404587721022244440, -0.404541995556824240, -0.404496269080048270, +-0.404450541592032420, -0.404404813092890230, -0.404359083582735980, -0.404313353061684090, -0.404267621529848740, -0.404221888987344400, -0.404176155434285310, -0.404130420870785820, +-0.404084685296959460, -0.404038948712922230, -0.403993211118787610, -0.403947472514669950, -0.403901732900683650, -0.403855992276942970, -0.403810250643562350, -0.403764508000655280, +-0.403718764348337760, -0.403673019686723310, -0.403627274015926300, -0.403581527336061120, -0.403535779647242130, -0.403490030949583690, -0.403444281243200140, -0.403398530528205120, +-0.403352778804714540, -0.403307026072842080, -0.403261272332701980, -0.403215517584408770, -0.403169761828076730, -0.403124005063820290, -0.403078247291753010, -0.403032488511990920, +-0.402986728724647640, -0.402940967929837520, -0.402895206127674990, -0.402849443318274440, -0.402803679501750280, -0.402757914678216920, -0.402712148847787940, -0.402666382010579470, +-0.402620614166704970, -0.402574845316278960, -0.402529075459415850, -0.402483304596230050, -0.402437532726835970, -0.402391759851347290, -0.402345985969879970, -0.402300211082547710, +-0.402254435189464910, -0.402208658290746040, -0.402162880386505490, -0.402117101476857750, -0.402071321561917270, -0.402025540641797690, -0.401979758716615070, -0.401933975786483040, +-0.401888191851516090, -0.401842406911828600, -0.401796620967535160, -0.401750834018750110, -0.401705046065587210, -0.401659257108162530, -0.401613467146589630, -0.401567676180983100, +-0.401521884211457400, -0.401476091238126940, -0.401430297261106290, -0.401384502280509920, -0.401338706296452240, -0.401292909309047040, -0.401247111318410340, -0.401201312324655830, +-0.401155512327898090, -0.401109711328251570, -0.401063909325830750, -0.401018106320750190, -0.400972302313123530, -0.400926497303066900, -0.400880691290694040, -0.400834884276119460, +-0.400789076259457700, -0.400743267240823210, -0.400697457220330570, -0.400651646198094290, -0.400605834174228070, -0.400560021148848090, -0.400514207122068030, -0.400468392094002480, +-0.400422576064765940, -0.400376759034472950, -0.400330941003238070, -0.400285121971175050, -0.400239301938400020, -0.400193480905026710, -0.400147658871169710, -0.400101835836943590, +-0.400056011802462860, -0.400010186767842110, -0.399964360733195860, -0.399918533698637950, -0.399872705664284460, -0.399826876630249240, -0.399781046596646820, -0.399735215563591820, +-0.399689383531198760, -0.399643550499582220, -0.399597716468856000, -0.399551881439136280, -0.399506045410536910, -0.399460208383172420, -0.399414370357157380, -0.399368531332606410, +-0.399322691309634100, -0.399276850288355130, -0.399231008268883140, -0.399185165251334520, -0.399139321235822910, -0.399093476222463050, -0.399047630211369460, -0.399001783202656830, +-0.398955935196439740, -0.398910086192831970, -0.398864236191949830, -0.398818385193907110, -0.398772533198818390, -0.398726680206798360, -0.398680826217961640, -0.398634971232422810, +-0.398589115250296610, -0.398543258271696730, -0.398497400296739580, -0.398451541325538890, -0.398405681358209420, -0.398359820394865670, -0.398313958435622400, -0.398268095480594220, +-0.398222231529895830, -0.398176366583641030, -0.398130500641946110, -0.398084633704924970, -0.398038765772692260, -0.397992896845362600, -0.397947026923050730, -0.397901156005871230, +-0.397855284093938890, -0.397809411187367510, -0.397763537286273450, -0.397717662390770500, -0.397671786500973400, -0.397625909616996840, -0.397580031738955510, -0.397534152866964140, +-0.397488273001136540, -0.397442392141589050, -0.397396510288435590, -0.397350627441790890, -0.397304743601769590, -0.397258858768486430, -0.397212972942056150, -0.397167086122593380, +-0.397121198310212140, -0.397075309505028730, -0.397029419707156990, -0.396983528916711740, -0.396937637133807640, -0.396891744358559450, -0.396845850591081910, -0.396799955831488920, +-0.396754060079896890, -0.396708163336419670, -0.396662265601172070, -0.396616366874268770, -0.396570467155824560, -0.396524566445954240, -0.396478664744772450, -0.396432762052393190, +-0.396386858368932840, -0.396340953694505340, -0.396295048029225490, -0.396249141373207990, -0.396203233726567630, -0.396157325089419200, -0.396111415461876670, -0.396065504844056340, +-0.396019593236072330, -0.395973680638039280, -0.395927767050072040, -0.395881852472285410, -0.395835936904794130, -0.395790020347713050, -0.395744102801156020, -0.395698184265239620, +-0.395652264740077700, -0.395606344225785170, -0.395560422722476770, -0.395514500230267300, -0.395468576749271610, -0.395422652279604440, -0.395376726821379810, -0.395330800374714240, +-0.395284872939721590, -0.395238944516516810, -0.395193015105214650, -0.395147084705929960, -0.395101153318777600, -0.395055220943872300, -0.395009287581328140, -0.394963353231261580, +-0.394917417893786650, -0.394871481569018190, -0.394825544257071000, -0.394779605958059940, -0.394733666672099910, -0.394687726399304880, -0.394641785139791310, -0.394595842893673330, +-0.394549899661065680, -0.394503955442083330, -0.394458010236841130, -0.394412064045453810, -0.394366116868036410, -0.394320168704702880, -0.394274219555569740, -0.394228269420751010, +-0.394182318300361660, -0.394136366194516470, -0.394090413103330430, -0.394044459026918310, -0.393998503965394210, -0.393952547918874680, -0.393906590887473820, -0.393860632871306460, +-0.393814673870487520, -0.393768713885131850, -0.393722752915354470, -0.393676790961270170, -0.393630828022993040, -0.393584864100639700, -0.393538899194324220, -0.393492933304161460, +-0.393446966430266390, -0.393400998572753850, -0.393355029731738860, -0.393309059907335500, -0.393263089099660230, -0.393217117308827300, -0.393171144534951560, -0.393125170778147960, +-0.393079196038531480, -0.393033220316216960, -0.392987243611319370, -0.392941265923952900, -0.392895287254234060, -0.392849307602276990, -0.392803326968196640, -0.392757345352107990, +-0.392711362754125990, -0.392665379174365610, -0.392619394612941710, -0.392573409069968570, -0.392527422545562670, -0.392481435039838290, -0.392435446552910240, -0.392389457084893640, +-0.392343466635903360, -0.392297475206054400, -0.392251482795461790, -0.392205489404239660, -0.392159495032504580, -0.392113499680370790, -0.392067503347953260, -0.392021506035366950, +-0.391975507742726880, -0.391929508470148070, -0.391883508217744590, -0.391837506985633240, -0.391791504773928100, -0.391745501582744180, -0.391699497412196560, -0.391653492262400150, +-0.391607486133470020, -0.391561479025521130, -0.391515470938667790, -0.391469461873026560, -0.391423451828711690, -0.391377440805838190, -0.391331428804521100, -0.391285415824875420, +-0.391239401867016170, -0.391193386931057650, -0.391147371017116440, -0.391101354125306830, -0.391055336255743850, -0.391009317408542500, -0.390963297583817810, -0.390917276781684970, +-0.390871255002258890, -0.390825232245653850, -0.390779208511986550, -0.390733183801371290, -0.390687158113922960, -0.390641131449756820, -0.390595103808987820, -0.390549075191731100, +-0.390503045598100840, -0.390457015028213780, -0.390410983482184170, -0.390364950960127130, -0.390318917462157690, -0.390272882988390970, -0.390226847538942050, -0.390180811113926000, +-0.390134773713457120, -0.390088735337652090, -0.390042695986625220, -0.389996655660491690, -0.389950614359366450, -0.389904572083364650, -0.389858528832601470, -0.389812484607191980, +-0.389766439407250420, -0.389720393232893590, -0.389674346084235790, -0.389628297961392140, -0.389582248864477730, -0.389536198793607680, -0.389490147748897120, -0.389444095730461240, +-0.389398042738414270, -0.389351988772873030, -0.389305933833951790, -0.389259877921765750, -0.389213821036429990, -0.389167763178059680, -0.389121704346769960, -0.389075644542675180, +-0.389029583765892140, -0.388983522016535080, -0.388937459294719230, -0.388891395600559740, -0.388845330934171730, -0.388799265295670440, -0.388753198685170940, -0.388707131102787650, +-0.388661062548637360, -0.388614993022834420, -0.388568922525493960, -0.388522851056731230, -0.388476778616661360, -0.388430705205399570, -0.388384630823060180, -0.388338555469760040, +-0.388292479145613490, -0.388246401850735720, -0.388200323585241980, -0.388154244349247450, -0.388108164142867250, -0.388062082966216690, -0.388016000819410070, -0.387969917702564280, +-0.387923833615793750, -0.387877748559213590, -0.387831662532939050, -0.387785575537085310, -0.387739487571767680, -0.387693398637100560, -0.387647308733200690, -0.387601217860182590, +-0.387555126018161440, -0.387509033207252440, -0.387462939427570870, -0.387416844679231990, -0.387370748962350960, -0.387324652277042270, -0.387278554623422750, -0.387232456001606830, +-0.387186356411709790, -0.387140255853846870, -0.387094154328133270, -0.387048051834684330, -0.387001948373615230, -0.386955843945040460, -0.386909738549076900, -0.386863632185838970, +-0.386817524855441960, -0.386771416558001120, -0.386725307293631800, -0.386679197062449190, -0.386633085864568570, -0.386586973700104420, -0.386540860569173640, -0.386494746471890750, +-0.386448631408370990, -0.386402515378729610, -0.386356398383082000, -0.386310280421543360, -0.386264161494228150, -0.386218041601253450, -0.386171920742733600, -0.386125798918783960, +-0.386079676129519770, -0.386033552375056430, -0.385987427655509250, -0.385941301970993470, -0.385895175321623600, -0.385849047707516600, -0.385802919128787000, -0.385756789585550100, +-0.385710659077921240, -0.385664527606015720, -0.385618395169948890, -0.385572261769835280, -0.385526127405791790, -0.385479992077932990, -0.385433855786374180, -0.385387718531230770, +-0.385341580312618060, -0.385295441130651390, -0.385249300985446130, -0.385203159877116840, -0.385157017805780380, -0.385110874771551430, -0.385064730774545280, -0.385018585814877300, +-0.384972439892662890, -0.384926293008017340, -0.384880145161055230, -0.384833996351893640, -0.384787846580647020, -0.384741695847430730, -0.384695544152360290, -0.384649391495550940, +-0.384603237877118140, -0.384557083297177190, -0.384510927755842780, -0.384464771253231810, -0.384418613789458960, -0.384372455364639540, -0.384326295978889010, -0.384280135632322720, +-0.384233974325056130, -0.384187812057204540, -0.384141648828882630, -0.384095484640207430, -0.384049319491293510, -0.384003153382256320, -0.383956986313211230, -0.383910818284273650, +-0.383864649295559020, -0.383818479347182830, -0.383772308439259580, -0.383726136571906350, -0.383679963745237830, -0.383633789959369360, -0.383587615214416420, -0.383541439510494460, +-0.383495262847718900, -0.383449085226204360, -0.383402906646067910, -0.383356727107424240, -0.383310546610388710, -0.383264365155076840, -0.383218182741604020, -0.383171999370085780, +-0.383125815040637530, -0.383079629753373900, -0.383033443508412060, -0.382987256305866550, -0.382941068145852940, -0.382894879028486680, -0.382848688953883190, -0.382802497922157980, +-0.382756305933425740, -0.382710112987803500, -0.382663919085406030, -0.382617724226348770, -0.382571528410747150, -0.382525331638716710, -0.382479133910372970, -0.382432935225831380, +-0.382386735585206640, -0.382340534988615870, -0.382294333436173750, -0.382248130927995810, -0.382201927464197570, -0.382155723044894480, -0.382109517670202130, -0.382063311340235130, +-0.382017104055110630, -0.381970895814943420, -0.381924686619848960, -0.381878476469942830, -0.381832265365340430, -0.381786053306157390, -0.381739840292509240, -0.381693626324510650, +-0.381647411402278810, -0.381601195525928470, -0.381554978695575140, -0.381508760911334340, -0.381462542173321650, -0.381416322481652580, -0.381370101836441930, -0.381323880237806830, +-0.381277657685862030, -0.381231434180723080, -0.381185209722505520, -0.381138984311324980, -0.381092757947296970, -0.381046530630537010, -0.381000302361160780, -0.380954073139282980, +-0.380907842965020780, -0.380861611838488990, -0.380815379759803170, -0.380769146729078910, -0.380722912746431770, -0.380676677811977340, -0.380630441925830400, -0.380584205088108200, +-0.380537967298925470, -0.380491728558397860, -0.380445488866640870, -0.380399248223770190, -0.380353006629901350, -0.380306764085150020, -0.380260520589631000, -0.380214276143461430, +-0.380168030746756200, -0.380121784399630900, -0.380075537102201160, -0.380029288854582540, -0.379983039656890730, -0.379936789509240480, -0.379890538411749080, -0.379844286364531320, +-0.379798033367702850, -0.379751779421379330, -0.379705524525676300, -0.379659268680709480, -0.379613011886594520, -0.379566754143446210, -0.379520495451381780, -0.379474235810516200, +-0.379427975220964940, -0.379381713682843790, -0.379335451196268380, -0.379289187761354290, -0.379242923378216410, -0.379196658046972060, -0.379150391767736070, -0.379104124540624140, +-0.379057856365751840, -0.379011587243234920, -0.378965317173189040, -0.378919046155729860, -0.378872774190972210, -0.378826501279033500, -0.378780227420028480, -0.378733952614072940, +-0.378687676861282520, -0.378641400161772890, -0.378595122515659740, -0.378548843923057990, -0.378502564384084970, -0.378456283898855490, -0.378410002467485350, -0.378363720090090170, +-0.378317436766785700, -0.378271152497687610, -0.378224867282911660, -0.378178581122573580, -0.378132294016788160, -0.378086005965672880, -0.378039716969342580, -0.377993427027912940, +-0.377947136141499770, -0.377900844310218750, -0.377854551534185680, -0.377808257813515350, -0.377761963148325160, -0.377715667538730150, -0.377669370984845930, -0.377623073486788250, +-0.377576775044672910, -0.377530475658615640, -0.377484175328732190, -0.377437874055137460, -0.377391571837948860, -0.377345268677281350, -0.377298964573250680, -0.377252659525972590, +-0.377206353535562870, -0.377160046602137200, -0.377113738725810670, -0.377067429906700560, -0.377021120144921900, -0.376974809440590420, -0.376928497793821930, -0.376882185204732210, +-0.376835871673437020, -0.376789557200052140, -0.376743241784692540, -0.376696925427475680, -0.376650608128516470, -0.376604289887930770, -0.376557970705834360, -0.376511650582342980, +-0.376465329517572500, -0.376419007511637870, -0.376372684564656560, -0.376326360676743520, -0.376280035848014560, -0.376233710078585580, -0.376187383368572270, -0.376141055718090480, +-0.376094727127256110, -0.376048397596184080, -0.376002067124991850, -0.375955735713794480, -0.375909403362707730, -0.375863070071847550, -0.375816735841329630, -0.375770400671269880, +-0.375724064561783310, -0.375677727512987390, -0.375631389524997190, -0.375585050597928520, -0.375538710731897150, -0.375492369927019070, -0.375446028183410050, -0.375399685501185960, +-0.375353341880462650, -0.375306997321355200, -0.375260651823981000, -0.375214305388455240, -0.375167958014893670, -0.375121609703412240, -0.375075260454126760, -0.375028910267153180, +-0.374982559142606480, -0.374936207080604160, -0.374889854081261350, -0.374843500144693920, -0.374797145271017710, -0.374750789460348680, -0.374704432712802630, -0.374658075028495520, +-0.374611716407542430, -0.374565356850060820, -0.374518996356165810, -0.374472634925973380, -0.374426272559599320, -0.374379909257159580, -0.374333545018770030, -0.374287179844545850, +-0.374240813734604550, -0.374194446689061160, -0.374148078708031680, -0.374101709791632040, -0.374055339939978080, -0.374008969153185770, -0.373962597431371060, -0.373916224774649030, +-0.373869851183137260, -0.373823476656950870, -0.373777101196205770, -0.373730724801017930, -0.373684347471503250, -0.373637969207777750, -0.373591590009956450, -0.373545209878157040, +-0.373498828812494580, -0.373452446813085090, -0.373406063880044440, -0.373359680013488630, -0.373313295213533620, -0.373266909480295390, -0.373220522813889070, -0.373174135214432270, +-0.373127746682040130, -0.373081357216828610, -0.373034966818913680, -0.372988575488411360, -0.372942183225437600, -0.372895790030107530, -0.372849395902538850, -0.372803000842846680, +-0.372756604851146980, -0.372710207927555770, -0.372663810072189020, -0.372617411285162790, -0.372571011566593000, -0.372524610916595720, -0.372478209335286080, -0.372431806822781710, +-0.372385403379197840, -0.372338999004650450, -0.372292593699255600, -0.372246187463129210, -0.372199780296387390, -0.372153372199145290, -0.372106963171520590, -0.372060553213628460, +-0.372014142325584940, -0.371967730507506090, -0.371921317759507930, -0.371874904081706430, -0.371828489474217700, -0.371782073937156900, -0.371735657470641740, -0.371689240074787490, +-0.371642821749710080, -0.371596402495525670, -0.371549982312350200, -0.371503561200299810, -0.371457139159489690, -0.371410716190037520, -0.371364292292058580, -0.371317867465668920, +-0.371271441710984530, -0.371225015028121610, -0.371178587417196120, -0.371132158878324180, -0.371085729411620990, -0.371039299017204340, -0.370992867695189410, -0.370946435445692280, +-0.370900002268829130, -0.370853568164715930, -0.370807133133468860, -0.370760697175203100, -0.370714260290036400, -0.370667822478084050, -0.370621383739462180, -0.370574944074286820, +-0.370528503482674130, -0.370482061964740150, -0.370435619520601060, -0.370389176150372030, -0.370342731854170940, -0.370296286632113000, -0.370249840484314360, -0.370203393410891090, +-0.370156945411959370, -0.370110496487635280, -0.370064046638034110, -0.370017595863273650, -0.369971144163469210, -0.369924691538736860, -0.369878237989192840, -0.369831783514953220, +-0.369785328116134130, -0.369738871792851700, -0.369692414545221280, -0.369645956373360670, -0.369599497277385170, -0.369553037257410900, -0.369506576313554050, -0.369460114445930740, +-0.369413651654657170, -0.369367187939849460, -0.369320723301622970, -0.369274257740095480, -0.369227791255382350, -0.369181323847599720, -0.369134855516863810, -0.369088386263290770, +-0.369041916086996770, -0.368995444988097940, -0.368948972966709700, -0.368902500022949830, -0.368856026156933750, -0.368809551368777580, -0.368763075658597510, -0.368716599026509770, +-0.368670121472630560, -0.368623642997075170, -0.368577163599961510, -0.368530683281404980, -0.368484202041521710, -0.368437719880427950, -0.368391236798239870, -0.368344752795073730, +-0.368298267871045690, -0.368251782026271120, -0.368205295260867980, -0.368158807574951560, -0.368112318968638160, -0.368065829442043910, -0.368019338995285160, -0.367972847628477980, +-0.367926355341737900, -0.367879862135182760, -0.367833368008927960, -0.367786872963089760, -0.367740376997784340, -0.367693880113127980, -0.367647382309236940, -0.367600883586227440, +-0.367554383944214910, -0.367507883383317250, -0.367461381903649850, -0.367414879505329030, -0.367368376188471010, -0.367321871953192050, -0.367275366799608370, -0.367228860727835500, +-0.367182353737991240, -0.367135845830191150, -0.367089337004551430, -0.367042827261188360, -0.366996316600218250, -0.366949805021757340, -0.366903292525921910, -0.366856779112827380, +-0.366810264782591770, -0.366763749535330530, -0.366717233371159860, -0.366670716290196150, -0.366624198292555600, -0.366577679378354620, -0.366531159547709370, -0.366484638800735450, +-0.366438117137550760, -0.366391594558270750, -0.366345071063011730, -0.366298546651890100, -0.366252021325022050, -0.366205495082523980, -0.366158967924512140, -0.366112439851102090, +-0.366065910862411750, -0.366019380958556630, -0.365972850139653030, -0.365926318405817350, -0.365879785757165840, -0.365833252193814910, -0.365786717715880010, -0.365740182323479100, +-0.365693646016727770, -0.365647108795742300, -0.365600570660639110, -0.365554031611534440, -0.365507491648544740, -0.365460950771786250, -0.365414408981374620, -0.365367866277427730, +-0.365321322660061230, -0.365274778129391410, -0.365228232685534620, -0.365181686328607260, -0.365135139058725690, -0.365088590876005430, -0.365042041780564540, -0.364995491772518550, +-0.364948940851983820, -0.364902389019076730, -0.364855836273913710, -0.364809282616611050, -0.364762728047285210, -0.364716172566051710, -0.364669616173028620, -0.364623058868331460, +-0.364576500652076640, -0.364529941524380620, -0.364483381485359750, -0.364436820535130380, -0.364390258673808140, -0.364343695901511110, -0.364297132218354860, -0.364250567624455730, +-0.364204002119930200, -0.364157435704894670, -0.364110868379465550, -0.364064300143759230, -0.364017730997891360, -0.363971160941979950, -0.363924589976140690, -0.363878018100489920, +-0.363831445315144160, -0.363784871620219720, -0.363738297015833160, -0.363691721502100830, -0.363645145079138370, -0.363598567747063840, -0.363551989505992930, -0.363505410356042060, +-0.363458830297327620, -0.363412249329966130, -0.363365667454074000, -0.363319084669767760, -0.363272500977162900, -0.363225916376377690, -0.363179330867527630, -0.363132744450729240, +-0.363086157126099040, -0.363039568893753440, -0.362992979753808900, -0.362946389706381050, -0.362899798751588120, -0.362853206889545640, -0.362806614120370190, -0.362760020444178160, +-0.362713425861086070, -0.362666830371210450, -0.362620233974667750, -0.362573636671573660, -0.362527038462046260, -0.362480439346201280, -0.362433839324155180, -0.362387238396024550, +-0.362340636561925780, -0.362294033821975390, -0.362247430176289130, -0.362200825624985120, -0.362154220168179050, -0.362107613805987380, -0.362061006538526740, -0.362014398365913540, +-0.361967789288264400, -0.361921179305695730, -0.361874568418323270, -0.361827956626265270, -0.361781343929637340, -0.361734730328556080, -0.361688115823137980, -0.361641500413499630, +-0.361594884099757490, -0.361548266882027290, -0.361501648760427290, -0.361455029735073150, -0.361408409806081410, -0.361361788973568690, -0.361315167237651500, -0.361268544598446370, +-0.361221921056069870, -0.361175296610637740, -0.361128671262268220, -0.361082045011076990, -0.361035417857180680, -0.360988789800695820, -0.360942160841738970, -0.360895530980426760, +-0.360848900216875660, -0.360802268551201510, -0.360755635983522560, -0.360709002513954440, -0.360662368142613880, -0.360615732869617340, -0.360569096695081530, -0.360522459619122940, +-0.360475821641858210, -0.360429182763403130, -0.360382542983875900, -0.360335902303392300, -0.360289260722068900, -0.360242618240022410, -0.360195974857369370, -0.360149330574226380, +-0.360102685390709220, -0.360056039306936190, -0.360009392323023090, -0.359962744439086490, -0.359916095655243020, -0.359869445971609300, -0.359822795388301970, -0.359776143905437720, +-0.359729491523132220, -0.359682838241503820, -0.359636184060668330, -0.359589528980742370, -0.359542873001842570, -0.359496216124085610, -0.359449558347588130, -0.359402899672465910, +-0.359356240098837270, -0.359309579626818030, -0.359262918256524840, -0.359216255988074380, -0.359169592821583230, -0.359122928757168110, -0.359076263794945730, -0.359029597935031810, +-0.358982931177544710, -0.358936263522600270, -0.358889594970315250, -0.358842925520806160, -0.358796255174189780, -0.358749583930582820, -0.358702911790101000, -0.358656238752862730, +-0.358609564818983930, -0.358562889988581160, -0.358516214261771160, -0.358469537638670680, -0.358422860119396280, -0.358376181704064820, -0.358329502392791990, -0.358282822185696290, +-0.358236141082893530, -0.358189459084500390, -0.358142776190633620, -0.358096092401409880, -0.358049407716945930, -0.358002722137358510, -0.357956035662763410, -0.357909348293279030, +-0.357862660029021280, -0.357815970870106910, -0.357769280816652600, -0.357722589868775090, -0.357675898026591110, -0.357629205290217410, -0.357582511659769840, -0.357535817135366810, +-0.357489121717124270, -0.357442425405158910, -0.357395728199587480, -0.357349030100526710, -0.357302331108093400, -0.357255631222403390, -0.357208930443575160, -0.357162228771724600, +-0.357115526206968510, -0.357068822749423530, -0.357022118399206560, -0.356975413156434270, -0.356928707021223420, -0.356881999993690020, -0.356835292073952430, -0.356788583262126590, +-0.356741873558329310, -0.356695162962677340, -0.356648451475287450, -0.356601739096276460, -0.356555025825760260, -0.356508311663857380, -0.356461596610683660, -0.356414880666355960, +-0.356368163830991120, -0.356321446104705790, -0.356274727487616900, -0.356228007979841170, -0.356181287581494590, -0.356134566292695630, -0.356087844113560260, -0.356041121044205270, +-0.355994397084747450, -0.355947672235303660, -0.355900946495990690, -0.355854219866924500, -0.355807492348223620, -0.355760763940004000, -0.355714034642382490, -0.355667304455475900, +-0.355620573379401010, -0.355573841414274730, -0.355527108560213800, -0.355480374817334300, -0.355433640185754680, -0.355386904665590970, -0.355340168256959970, -0.355293430959978560, +-0.355246692774763620, -0.355199953701431930, -0.355153213740100340, -0.355106472890884870, -0.355059731153904050, -0.355012988529273930, -0.354966245017111330, -0.354919500617533080, +-0.354872755330656100, -0.354826009156597230, -0.354779262095473390, -0.354732514147400480, -0.354685765312497180, -0.354639015590879460, -0.354592264982664160, -0.354545513487968260, +-0.354498761106908530, -0.354452007839601900, -0.354405253686164430, -0.354358498646714650, -0.354311742721368620, -0.354264985910243250, -0.354218228213455390, -0.354171469631122000, +-0.354124710163359890, -0.354077949810286060, -0.354031188572016490, -0.353984426448669790, -0.353937663440361980, -0.353890899547210090, -0.353844134769330910, -0.353797369106841340, +-0.353750602559858410, -0.353703835128498120, -0.353657066812879120, -0.353610297613117410, -0.353563527529329960, -0.353516756561633730, -0.353469984710145570, -0.353423211974982440, +-0.353376438356261310, -0.353329663854098200, -0.353282888468611830, -0.353236112199918180, -0.353189335048134270, -0.353142557013377050, -0.353095778095763420, -0.353048998295410370, +-0.353002217612433940, -0.352955436046952840, -0.352908653599083130, -0.352861870268941780, -0.352815086056645740, -0.352768300962312040, -0.352721514986057530, -0.352674728127999270, +-0.352627940388253350, -0.352581151766938440, -0.352534362264170560, -0.352487571880066850, -0.352440780614744210, -0.352393988468319600, -0.352347195440910030, -0.352300401532631650, +-0.352253606743603060, -0.352206811073940470, -0.352160014523760830, -0.352113217093181220, -0.352066418782318540, -0.352019619591289750, -0.351972819520211980, -0.351926018569202140, +-0.351879216738376410, -0.351832414027853540, -0.351785610437749530, -0.351738805968181580, -0.351692000619266590, -0.351645194391121570, -0.351598387283863560, -0.351551579297608770, +-0.351504770432475850, -0.351457960688581040, -0.351411150066041340, -0.351364338564973730, -0.351317526185495280, -0.351270712927722990, -0.351223898791773960, -0.351177083777764300, +-0.351130267885812810, -0.351083451116035620, -0.351036633468549850, -0.350989814943472420, -0.350942995540920510, -0.350896175261011130, -0.350849354103860420, -0.350802532069587170, +-0.350755709158307620, -0.350708885370138780, -0.350662060705197730, -0.350615235163601550, -0.350568408745467240, -0.350521581450911950, -0.350474753280051840, -0.350427924233005670, +-0.350381094309889730, -0.350334263510821030, -0.350287431835916710, -0.350240599285293770, -0.350193765859069310, -0.350146931557359650, -0.350100096380283440, -0.350053260327957030, +-0.350006423400497480, -0.349959585598021870, -0.349912746920647280, -0.349865907368490820, -0.349819066941669590, -0.349772225640299860, -0.349725383464500440, -0.349678540414387510, +-0.349631696490078250, -0.349584851691689740, -0.349538006019339100, -0.349491159473143460, -0.349444312053219070, -0.349397463759684780, -0.349350614592656760, -0.349303764552252260, +-0.349256913638588300, -0.349210061851782110, -0.349163209191950710, -0.349116355659211340, -0.349069501253681020, -0.349022645975476160, -0.348975789824715550, -0.348928932801515380, +-0.348882074905992930, -0.348835216138265290, -0.348788356498449640, -0.348741495986663040, -0.348694634603021910, -0.348647772347644990, -0.348600909220648680, -0.348554045222150060, +-0.348507180352266350, -0.348460314611114650, -0.348413447998812190, -0.348366580515476140, -0.348319712161222760, -0.348272842936171000, -0.348225972840437050, -0.348179101874138200, +-0.348132230037391630, -0.348085357330314430, -0.348038483753023880, -0.347991609305636270, -0.347944733988270470, -0.347897857801042820, -0.347850980744070560, -0.347804102817470820, +-0.347757224021360830, -0.347710344355857790, -0.347663463821078880, -0.347616582417140500, -0.347569700144161440, -0.347522817002258180, -0.347475932991547890, -0.347429048112147700, +-0.347382162364174960, -0.347335275747746750, -0.347288388262979590, -0.347241499909992260, -0.347194610688901170, -0.347147720599823570, -0.347100829642876640, -0.347053937818177670, +-0.347007045125843790, -0.346960151565992360, -0.346913257138739720, -0.346866361844204770, -0.346819465682503880, -0.346772568653754390, -0.346725670758073420, -0.346678771995578280, +-0.346631872366386210, -0.346584971870613660, -0.346538070508379480, -0.346491168279800140, -0.346444265184992830, -0.346397361224074940, -0.346350456397163610, -0.346303550704376130, +-0.346256644145829800, -0.346209736721641790, -0.346162828431928690, -0.346115919276809290, -0.346069009256400110, -0.346022098370818430, -0.345975186620181510, -0.345928274004606570, +-0.345881360524210980, -0.345834446179111190, -0.345787530969426050, -0.345740614895272140, -0.345693697956766690, -0.345646780154026940, -0.345599861487170260, -0.345552941956313970, +-0.345506021561575280, -0.345459100303070750, -0.345412178180919240, -0.345365255195237310, -0.345318331346142260, -0.345271406633751390, -0.345224481058181990, -0.345177554619551350, +-0.345130627317976000, -0.345083699153574950, -0.345036770126464660, -0.344989840236762440, -0.344942909484585560, -0.344895977870051500, -0.344849045393277430, -0.344802112054380770, +-0.344755177853477980, -0.344708242790688070, -0.344661306866127560, -0.344614370079913800, -0.344567432432164140, -0.344520493922995830, -0.344473554552526320, -0.344426614320872130, +-0.344379673228152160, -0.344332731274483050, -0.344285788459982140, -0.344238844784766740, -0.344191900248954190, -0.344144954852661940, -0.344098008596007250, -0.344051061479106750, +-0.344004113502079430, -0.343957164665041780, -0.343910214968111250, -0.343863264411405190, -0.343816312995041010, -0.343769360719136000, -0.343722407583806730, -0.343675453589172290, +-0.343628498735349230, -0.343581543022454920, -0.343534586450606750, -0.343487629019922140, -0.343440670730518430, -0.343393711582513030, -0.343346751576022510, -0.343299790711166010, +-0.343252828988059980, -0.343205866406821880, -0.343158902967569120, -0.343111938670419110, -0.343064973515489260, -0.343018007502896960, -0.342971040632758790, -0.342924072905193890, +-0.342877104320318820, -0.342830134878250980, -0.342783164579107790, -0.342736193423006650, -0.342689221410065080, -0.342642248540400430, -0.342595274814129320, -0.342548300231370890, +-0.342501324792241710, -0.342454348496859180, -0.342407371345340830, -0.342360393337803990, -0.342313414474366200, -0.342266434755144010, -0.342219454180256620, -0.342172472749820540, +-0.342125490463953350, -0.342078507322772400, -0.342031523326395140, -0.341984538474939090, -0.341937552768521720, -0.341890566207259660, -0.341843578791271970, -0.341796590520675350, +-0.341749601395587240, -0.341702611416125120, -0.341655620582406510, -0.341608628894548790, -0.341561636352668730, -0.341514642956885380, -0.341467648707315440, -0.341420653604076360, +-0.341373657647285670, -0.341326660837060760, -0.341279663173519270, -0.341232664656778590, -0.341185665286955490, -0.341138665064168960, -0.341091663988535800, -0.341044662060173530, +-0.340997659279199560, -0.340950655645731460, -0.340903651159886690, -0.340856645821781990, -0.340809639631536490, -0.340762632589266870, -0.340715624695090700, -0.340668615949125450, +-0.340621606351488690, -0.340574595902297880, -0.340527584601670650, -0.340480572449723570, -0.340433559446575880, -0.340386545592344330, -0.340339530887146360, -0.340292515331099610, +-0.340245498924321540, -0.340198481666929790, -0.340151463559041740, -0.340104444600774270, -0.340057424792246490, -0.340010404133575140, -0.339963382624877800, -0.339916360266272030, +-0.339869337057875310, -0.339822312999805250, -0.339775288092179440, -0.339728262335114550, -0.339681235728729880, -0.339634208273142060, -0.339587179968468770, -0.339540150814827520, +-0.339493120812335900, -0.339446089961111420, -0.339399058261270930, -0.339352025712933660, -0.339304992316216250, -0.339257958071236430, -0.339210922978111670, -0.339163887036959600, +-0.339116850247897840, -0.339069812611043910, -0.339022774126514660, -0.338975734794429330, -0.338928694614904600, -0.338881653588058160, -0.338834611714007580, -0.338787568992870490, +-0.338740525424764460, -0.338693481009806290, -0.338646435748115260, -0.338599389639808120, -0.338552342685002510, -0.338505294883816090, -0.338458246236366390, -0.338411196742771040, +-0.338364146403147770, -0.338317095217613270, -0.338270043186286840, -0.338222990309285320, -0.338175936586726340, -0.338128882018727480, -0.338081826605406480, -0.338034770346880840, +-0.337987713243267480, -0.337940655294685700, -0.337893596501252220, -0.337846536863084800, -0.337799476380301000, -0.337752415053018560, -0.337705352881355060, -0.337658289865428120, +-0.337611226005354700, -0.337564161301254000, -0.337517095753242900, -0.337470029361439110, -0.337422962125960180, -0.337375894046923920, -0.337328825124447840, -0.337281755358649740, +-0.337234684749646460, -0.337187613297557250, -0.337140541002499020, -0.337093467864589440, -0.337046393883946190, -0.336999319060686920, -0.336952243394929410, -0.336905166886791230, +-0.336858089536389350, -0.336811011343843060, -0.336763932309269260, -0.336716852432785600, -0.336669771714509850, -0.336622690154559650, -0.336575607753052670, -0.336528524510105900, +-0.336481440425838660, -0.336434355500367770, -0.336387269733811060, -0.336340183126286110, -0.336293095677910710, -0.336246007388802610, -0.336198918259079490, -0.336151828288858200, +-0.336104737478258200, -0.336057645827396330, -0.336010553336390410, -0.335963460005358040, -0.335916365834417030, -0.335869270823685120, -0.335822174973279210, -0.335775078283318710, +-0.335727980753920460, -0.335680882385202270, -0.335633783177281930, -0.335586683130277060, -0.335539582244305520, -0.335492480519485050, -0.335445377955932490, -0.335398274553767360, +-0.335351170313106520, -0.335304065234067750, -0.335256959316768850, -0.335209852561327510, -0.335162744967861580, -0.335115636536487960, -0.335068527267326060, -0.335021417160492830, +-0.334974306216106080, -0.334927194434283540, -0.334880081815143000, -0.334832968358802330, -0.334785854065379140, -0.334738738934990570, -0.334691622967755950, -0.334644506163792270, +-0.334597388523217300, -0.334550270046148900, -0.334503150732704810, -0.334456030583002830, -0.334408909597160800, -0.334361787775295630, -0.334314665117526890, -0.334267541623971430, +-0.334220417294747110, -0.334173292129971770, -0.334126166129763200, -0.334079039294239210, -0.334031911623517640, -0.333984783117715400, -0.333937653776952110, -0.333890523601344640, +-0.333843392591010870, -0.333796260746068610, -0.333749128066635700, -0.333701994552830010, -0.333654860204768420, -0.333607725022570580, -0.333560589006353440, -0.333513452156234790, +-0.333466314472332490, -0.333419175954764450, -0.333372036603648450, -0.333324896419102350, -0.333277755401243210, -0.333230613550190460, -0.333183470866061200, -0.333136327348973300, +-0.333089182999044550, -0.333042037816392860, -0.332994891801136060, -0.332947744953391190, -0.332900597273277810, -0.332853448760912880, -0.332806299416414380, -0.332759149239900130, +-0.332711998231488000, -0.332664846391295900, -0.332617693719441660, -0.332570540216042380, -0.332523385881217550, -0.332476230715084250, -0.332429074717760400, -0.332381917889363830, +-0.332334760230012460, -0.332287601739824250, -0.332240442418916150, -0.332193282267407800, -0.332146121285416260, -0.332098959473059400, -0.332051796830455100, -0.332004633357721350, +-0.331957469054976030, -0.331910303922337000, -0.331863137959921390, -0.331815971167848780, -0.331768803546236220, -0.331721635095201690, -0.331674465814863040, -0.331627295705338280, +-0.331580124766745200, -0.331532952999201880, -0.331485780402825280, -0.331438606977735080, -0.331391432724048420, -0.331344257641883130, -0.331297081731357190, -0.331249904992588550, +-0.331202727425695180, -0.331155549030794920, -0.331108369808005010, -0.331061189757445030, -0.331014008879232050, -0.330966827173484020, -0.330919644640318920, -0.330872461279854760, +-0.330825277092209440, -0.330778092077500030, -0.330730906235846280, -0.330683719567365250, -0.330636532072174920, -0.330589343750393280, -0.330542154602138260, -0.330494964627527870, +-0.330447773826680060, -0.330400582199711970, -0.330353389746743280, -0.330306196467891060, -0.330259002363273440, -0.330211807433008260, -0.330164611677213560, -0.330117415096007340, +-0.330070217689506730, -0.330023019457831410, -0.329975820401098570, -0.329928620519426170, -0.329881419812932230, -0.329834218281734700, -0.329787015925951670, -0.329739812745701080, +-0.329692608741100120, -0.329645403912268490, -0.329598198259323350, -0.329550991782382670, -0.329503784481564590, -0.329456576356987000, -0.329409367408767970, -0.329362157637024640, +-0.329314947041876800, -0.329267735623441640, -0.329220523381837050, -0.329173310317181220, -0.329126096429592120, -0.329078881719187700, -0.329031666186086150, -0.328984449830404590, +-0.328937232652262710, -0.328890014651777750, -0.328842795829067780, -0.328795576184250820, -0.328748355717444870, -0.328701134428768080, -0.328653912318338460, -0.328606689386273190, +-0.328559465632692060, -0.328512241057712260, -0.328465015661451860, -0.328417789444028880, -0.328370562405561510, -0.328323334546167630, -0.328276105865965510, -0.328228876365072250, +-0.328181646043607610, -0.328134414901688880, -0.328087182939434120, -0.328039950156961410, -0.327992716554388770, -0.327945482131834390, -0.327898246889415430, -0.327851010827251770, +-0.327803773945460510, -0.327756536244159850, -0.327709297723467800, -0.327662058383502540, -0.327614818224382150, -0.327567577246224710, -0.327520335449147440, -0.327473092833270200, +-0.327425849398710280, -0.327378605145585640, -0.327331360074014590, -0.327284114184115070, -0.327236867476005280, -0.327189619949802500, -0.327142371605626480, -0.327095122443594570, +-0.327047872463824830, -0.327000621666435400, -0.326953370051544400, -0.326906117619270020, -0.326858864369730330, -0.326811610303042620, -0.326764355419326750, -0.326717099718700000, +-0.326669843201280450, -0.326622585867186340, -0.326575327716535750, -0.326528068749446840, -0.326480808966036930, -0.326433548366425800, -0.326386286950730850, -0.326339024719070170, +-0.326291761671561880, -0.326244497808324260, -0.326197233129475350, -0.326149967635133380, -0.326102701325415630, -0.326055434200441970, -0.326008166260329750, -0.325960897505197080, +-0.325913627935162150, -0.325866357550343210, -0.325819086350858320, -0.325771814336824890, -0.325724541508362770, -0.325677267865589310, -0.325629993408622700, -0.325582718137581050, +-0.325535442052582670, -0.325488165153745620, -0.325440887441188210, -0.325393608915028550, -0.325346329575384060, -0.325299049422374530, -0.325251768456117420, -0.325204486676730850, +-0.325157204084333130, -0.325109920679042370, -0.325062636460976770, -0.325015351430253780, -0.324968065586993260, -0.324920778931312550, -0.324873491463329890, -0.324826203183163520, +-0.324778914090931630, -0.324731624186752440, -0.324684333470744210, -0.324637041943024280, -0.324589749603712620, -0.324542456452926560, -0.324495162490784420, -0.324447867717404300, +-0.324400572132904570, -0.324353275737403360, -0.324305978531018170, -0.324258680513868800, -0.324211381686072770, -0.324164082047748330, -0.324116781599013640, -0.324069480339987000, +-0.324022178270786660, -0.323974875391530860, -0.323927571702337050, -0.323880267203325130, -0.323832961894612580, -0.323785655776317570, -0.323738348848558450, -0.323691041111453470, +-0.323643732565120910, -0.323596423209678130, -0.323549113045245140, -0.323501802071939400, -0.323454490289879100, -0.323407177699182650, -0.323359864299968210, -0.323312550092354100, +-0.323265235076458660, -0.323217919252399230, -0.323170602620295900, -0.323123285180266010, -0.323075966932427960, -0.323028647876899940, -0.322981328013800310, -0.322934007343247400, +-0.322886685865358620, -0.322839363580253950, -0.322792040488050880, -0.322744716588867660, -0.322697391882822700, -0.322650066370034290, -0.322602740050620670, -0.322555412924700190, +-0.322508084992391200, -0.322460756253811150, -0.322413426709080080, -0.322366096358315420, -0.322318765201635490, -0.322271433239158690, -0.322224100471003310, -0.322176766897287640, +-0.322129432518129200, -0.322082097333648070, -0.322034761343961700, -0.321987424549188380, -0.321940086949446540, -0.321892748544854450, -0.321845409335530520, -0.321798069321593050, +-0.321750728503159560, -0.321703386880350110, -0.321656044453282160, -0.321608701222074130, -0.321561357186844310, -0.321514012347711150, -0.321466666704792960, -0.321419320258207190, +-0.321371973008074020, -0.321324624954510920, -0.321277276097636230, -0.321229926437568370, -0.321182575974425680, -0.321135224708326560, -0.321087872639389370, -0.321040519767731680, +-0.320993166093473500, -0.320945811616732410, -0.320898456337626810, -0.320851100256275060, -0.320803743372795550, -0.320756385687306690, -0.320709027199926000, -0.320661667910773610, +-0.320614307819967080, -0.320566946927624720, -0.320519585233865030, -0.320472222738806380, -0.320424859442567160, -0.320377495345265770, -0.320330130447019860, -0.320282764747949420, +-0.320235398248172100, -0.320188030947806230, -0.320140662846970350, -0.320093293945782730, -0.320045924244361960, -0.319998553742825490, -0.319951182441293500, -0.319903810339883520, +-0.319856437438714060, -0.319809063737903470, -0.319761689237570260, -0.319714313937832780, -0.319666937838809560, -0.319619560940618940, -0.319572183243378600, -0.319524804747208680, +-0.319477425452226740, -0.319430045358551180, -0.319382664466300540, -0.319335282775593250, -0.319287900286547740, -0.319240516999281690, -0.319193132913915100, -0.319145748030565720, +-0.319098362349352020, -0.319050975870392330, -0.319003588593805230, -0.318956200519709190, -0.318908811648222600, -0.318861421979463160, -0.318814031513551030, -0.318766640250603810, +-0.318719248190739990, -0.318671855334078050, -0.318624461680736440, -0.318577067230833680, -0.318529671984487450, -0.318482275941817830, -0.318434879102942550, -0.318387481467980070, +-0.318340083037048920, -0.318292683810267540, -0.318245283787754460, -0.318197882969628140, -0.318150481356006260, -0.318103078947009070, -0.318055675742754170, -0.318008271743360050, +-0.317960866948945260, -0.317913461359628340, -0.317866054975527720, -0.317818647796761110, -0.317771239823448790, -0.317723831055708340, -0.317676421493658270, -0.317629011137417210, +-0.317581599987103560, -0.317534188042835950, -0.317486775304732850, -0.317439361772911990, -0.317391947447493550, -0.317344532328595270, -0.317297116416335620, -0.317249699710833220, +-0.317202282212206590, -0.317154863920574180, -0.317107444836053800, -0.317060024958765670, -0.317012604288827440, -0.316965182826357720, -0.316917760571475080, -0.316870337524298000, +-0.316822913684945080, -0.316775489053534860, -0.316728063630185960, -0.316680637415016010, -0.316633210408145350, -0.316585782609691610, -0.316538354019773480, -0.316490924638509420, +-0.316443494466018050, -0.316396063502418000, -0.316348631747826900, -0.316301199202365050, -0.316253765866150230, -0.316206331739300960, -0.316158896821935930, -0.316111461114173600, +-0.316064024616132640, -0.316016587327931590, -0.315969149249688270, -0.315921710381522890, -0.315874270723553230, -0.315826830275897920, -0.315779389038675530, -0.315731947012004630, +-0.315684504196003910, -0.315637060590791050, -0.315589616196486460, -0.315542171013207750, -0.315494725041073620, -0.315447278280202690, -0.315399830730713590, -0.315352382392724890, +-0.315304933266355230, -0.315257483351722380, -0.315210032648946700, -0.315162581158145880, -0.315115128879438660, -0.315067675812943590, -0.315020221958779380, -0.314972767317064580, +-0.314925311887917000, -0.314877855671457040, -0.314830398667802380, -0.314782940877071760, -0.314735482299383750, -0.314688022934857090, -0.314640562783610360, -0.314593101845762170, +-0.314545640121430440, -0.314498177610735450, -0.314450714313794950, -0.314403250230727740, -0.314355785361652370, -0.314308319706687540, -0.314260853265951930, -0.314213386039563340, +-0.314165918027642100, -0.314118449230306070, -0.314070979647673940, -0.314023509279864330, -0.313976038126995980, -0.313928566189187520, -0.313881093466557680, -0.313833619959224210, +-0.313786145667307560, -0.313738670590925530, -0.313691194730196850, -0.313643718085240160, -0.313596240656174200, -0.313548762443117580, -0.313501283446189110, -0.313453803665506570, +-0.313406323101190380, -0.313358841753358370, -0.313311359622129250, -0.313263876707621740, -0.313216393009954520, -0.313168908529246340, -0.313121423265615870, -0.313073937219181030, +-0.313026450390062160, -0.312978962778377170, -0.312931474384244790, -0.312883985207783710, -0.312836495249112670, -0.312789004508350400, -0.312741512985614760, -0.312694020681026200, +-0.312646527594702570, -0.312599033726762620, -0.312551539077325080, -0.312504043646508690, -0.312456547434432240, -0.312409050441214360, -0.312361552666973070, -0.312314054111828670, +-0.312266554775899210, -0.312219054659303330, -0.312171553762159770, -0.312124052084587380, -0.312076549626704840, -0.312029046388630100, -0.311981542370483590, -0.311934037572383190, +-0.311886531994447770, -0.311839025636795940, -0.311791518499546560, -0.311744010582818420, -0.311696501886730200, -0.311648992411399930, -0.311601482156948000, -0.311553971123492370, +-0.311506459311151840, -0.311458946720045150, -0.311411433350291090, -0.311363919202008400, -0.311316404275315100, -0.311268888570331640, -0.311221372087175980, -0.311173854825966880, +-0.311126336786823110, -0.311078817969863530, -0.311031298375206880, -0.310983778002972000, -0.310936256853276800, -0.310888734926241860, -0.310841212221985020, -0.310793688740625180, +-0.310746164482281150, -0.310698639447071660, -0.310651113635115610, -0.310603587046531740, -0.310556059681438120, -0.310508531539955110, -0.310461002622200830, -0.310413472928294020, +-0.310365942458353530, -0.310318411212498200, -0.310270879190846840, -0.310223346393518280, -0.310175812820630500, -0.310128278472304010, -0.310080743348656870, -0.310033207449807830, +-0.309985670775875800, -0.309938133326979610, -0.309890595103238020, -0.309843056104769140, -0.309795516331693500, -0.309747975784129050, -0.309700434462194640, -0.309652892366009120, +-0.309605349495691410, -0.309557805851360280, -0.309510261433134700, -0.309462716241132580, -0.309415170275474550, -0.309367623536278560, -0.309320076023663510, -0.309272527737748270, +-0.309224978678651730, -0.309177428846492740, -0.309129878241389320, -0.309082326863462100, -0.309034774712828970, -0.308987221789608970, -0.308939668093920930, -0.308892113625883650, +-0.308844558385616140, -0.308797002373237210, -0.308749445588864970, -0.308701888032619940, -0.308654329704620150, -0.308606770604984590, -0.308559210733832080, -0.308511650091281560, +-0.308464088677451900, -0.308416526492461150, -0.308368963536429950, -0.308321399809476370, -0.308273835311719260, -0.308226270043277570, -0.308178704004270170, -0.308131137194816050, +-0.308083569615034080, -0.308036001265042330, -0.307988432144961410, -0.307940862254909460, -0.307893291595005340, -0.307845720165367990, -0.307798147966116320, -0.307750574997369240, +-0.307703001259245770, -0.307655426751863970, -0.307607851475344420, -0.307560275429805240, -0.307512698615365400, -0.307465121032143800, -0.307417542680259390, -0.307369963559831150, +-0.307322383670977970, -0.307274803013817990, -0.307227221588471880, -0.307179639395057660, -0.307132056433694340, -0.307084472704500950, -0.307036888207596340, -0.306989302943099510, +-0.306941716911128540, -0.306894130111804160, -0.306846542545244460, -0.306798954211568390, -0.306751365110894960, -0.306703775243343080, -0.306656184609031820, -0.306608593208080040, +-0.306561001040605960, -0.306513408106730220, -0.306465814406570950, -0.306418219940247150, -0.306370624707877790, -0.306323028709581890, -0.306275431945478400, -0.306227834415685460, +-0.306180236120323800, -0.306132637059511600, -0.306085037233367770, -0.306037436642011330, -0.305989835285561280, -0.305942233164136710, -0.305894630277856520, -0.305847026626838880, +-0.305799422211204600, -0.305751817031071680, -0.305704211086559260, -0.305656604377786300, -0.305608996904871810, -0.305561388667934860, -0.305513779667093590, -0.305466169902468720, +-0.305418559374178440, -0.305370948082341720, -0.305323336027077620, -0.305275723208505210, -0.305228109626743520, -0.305180495281911550, -0.305132880174127430, -0.305085264303512020, +-0.305037647670183430, -0.304990030274260690, -0.304942412115862930, -0.304894793195109090, -0.304847173512118320, -0.304799553067009570, -0.304751931859901130, -0.304704309890913680, +-0.304656687160165420, -0.304609063667775510, -0.304561439413862930, -0.304513814398546690, -0.304466188621945970, -0.304418562084179780, -0.304370934785366310, -0.304323306725626410, +-0.304275677905078150, -0.304228048323840760, -0.304180417982033210, -0.304132786879774690, -0.304085155017184140, -0.304037522394379870, -0.303989889011482610, -0.303942254868610650, +-0.303894619965883070, -0.303846984303418940, -0.303799347881337330, -0.303751710699757370, -0.303704072758798130, -0.303656434058577840, -0.303608794599217360, -0.303561154380834810, +-0.303513513403549430, -0.303465871667480290, -0.303418229172746410, -0.303370585919467030, -0.303322941907760270, -0.303275297137747040, -0.303227651609545570, -0.303180005323274940, +-0.303132358279054330, -0.303084710477002810, -0.303037061917239500, -0.302989412599883550, -0.302941762525053230, -0.302894111692869340, -0.302846460103450180, -0.302798807756914870, +-0.302751154653382480, -0.302703500792972260, -0.302655846175803320, -0.302608190801993860, -0.302560534671664830, -0.302512877784934410, -0.302465220141921790, -0.302417561742746140, +-0.302369902587526610, -0.302322242676382300, -0.302274582009432360, -0.302226920586795180, -0.302179258408591500, -0.302131595474939670, -0.302083931785958880, -0.302036267341768250, +-0.301988602142486910, -0.301940936188234090, -0.301893269479128980, -0.301845602015289820, -0.301797933796837450, -0.301750264823890280, -0.301702595096567490, -0.301654924614988160, +-0.301607253379271520, -0.301559581389536810, -0.301511908645903100, -0.301464235148488750, -0.301416560897414700, -0.301368885892799200, -0.301321210134761540, -0.301273533623420800, +-0.301225856358896260, -0.301178178341307110, -0.301130499570771590, -0.301082820047410720, -0.301035139771342830, -0.300987458742687010, -0.300939776961562600, -0.300892094428088730, +-0.300844411142384640, -0.300796727104569510, -0.300749042314761680, -0.300701356773082130, -0.300653670479649190, -0.300605983434582060, -0.300558295638000020, -0.300510607090022200, +-0.300462917790767840, -0.300415227740355340, -0.300367536938905670, -0.300319845386537110, -0.300272153083368960, -0.300224460029520410, -0.300176766225110750, -0.300129071670259150, +-0.300081376365084860, -0.300033680309706290, -0.299985983504244320, -0.299938285948817440, -0.299890587643544870, -0.299842888588545800, -0.299795188783939510, -0.299747488229845260, +-0.299699786926381440, -0.299652084873668960, -0.299604382071826330, -0.299556678520972730, -0.299508974221227410, -0.299461269172709650, -0.299413563375538700, -0.299365856829833910, +-0.299318149535713560, -0.299270441493298730, -0.299222732702707770, -0.299175023164060030, -0.299127312877474680, -0.299079601843071090, -0.299031890060968420, -0.298984177531286090, +-0.298936464254142440, -0.298888750229658500, -0.298841035457952650, -0.298793319939144260, -0.298745603673352570, -0.298697886660696800, -0.298650168901296360, -0.298602450395270500, +-0.298554731142737670, -0.298507011143818890, -0.298459290398632500, -0.298411568907297970, -0.298363846669934480, -0.298316123686661380, -0.298268399957597960, -0.298220675482862680, +-0.298172950262576560, -0.298125224296858060, -0.298077497585826520, -0.298029770129601250, -0.297982041928301580, -0.297934312982046760, -0.297886583290956130, -0.297838852855148220, +-0.297791121674744030, -0.297743389749862030, -0.297695657080621570, -0.297647923667141990, -0.297600189509542590, -0.297552454607942660, -0.297504718962460780, -0.297456982573217950, +-0.297409245440332700, -0.297361507563924320, -0.297313768944112160, -0.297266029581015560, -0.297218289474753870, -0.297170548625446510, -0.297122807033211920, -0.297075064698171130, +-0.297027321620442710, -0.296979577800145940, -0.296931833237400300, -0.296884087932325010, -0.296836341885039550, -0.296788595095662360, -0.296740847564314510, -0.296693099291114590, +-0.296645350276181890, -0.296597600519635800, -0.296549850021595730, -0.296502098782181030, -0.296454346801511110, -0.296406594079704430, -0.296358840616882170, -0.296311086413162780, +-0.296263331468665680, -0.296215575783510210, -0.296167819357815830, -0.296120062191701890, -0.296072304285286970, -0.296024545638692130, -0.295976786252035940, -0.295929026125437760, +-0.295881265259017030, -0.295833503652893130, -0.295785741307185490, -0.295737978222013480, -0.295690214397496490, -0.295642449833753150, -0.295594684530904540, -0.295546918489069220, +-0.295499151708366600, -0.295451384188916090, -0.295403615930837140, -0.295355846934249100, -0.295308077199270660, -0.295260306726022830, -0.295212535514624230, -0.295164763565194330, +-0.295116990877852480, -0.295069217452718190, -0.295021443289910870, -0.294973668389549860, -0.294925892751753900, -0.294878116376644070, -0.294830339264338880, -0.294782561414957900, +-0.294734782828620480, -0.294687003505446130, -0.294639223445554270, -0.294591442649063510, -0.294543661116094980, -0.294495878846767310, -0.294448095841199910, -0.294400312099512280, +-0.294352527621823900, -0.294304742408254160, -0.294256956458922580, -0.294209169773947790, -0.294161382353450910, -0.294113594197550510, -0.294065805306366220, -0.294018015680017340, +-0.293970225318623490, -0.293922434222304020, -0.293874642391177670, -0.293826849825365500, -0.293779056524986260, -0.293731262490159350, -0.293683467721004290, -0.293635672217640530, +-0.293587875980187650, -0.293540079008765050, -0.293492281303491360, -0.293444482864487880, -0.293396683691873160, -0.293348883785766790, -0.293301083146288170, -0.293253281773556810, +-0.293205479667692280, -0.293157676828813160, -0.293109873257040740, -0.293062068952493650, -0.293014263915291340, -0.292966458145553440, -0.292918651643399310, -0.292870844408948620, +-0.292823036442320770, -0.292775227743635350, -0.292727418313011020, -0.292679608150568980, -0.292631797256427960, -0.292583985630707370, -0.292536173273526880, -0.292488360185005960, +-0.292440546365264060, -0.292392731814420050, -0.292344916532594980, -0.292297100519907650, -0.292249283776477580, -0.292201466302424270, -0.292153648097867310, -0.292105829162926270, +-0.292058009497720590, -0.292010189102369090, -0.291962367976992930, -0.291914546121710860, -0.291866723536642450, -0.291818900221907210, -0.291771076177624710, -0.291723251403914530, +-0.291675425900895350, -0.291627599668688510, -0.291579772707412640, -0.291531945017187320, -0.291484116598132170, -0.291436287450366700, -0.291388457574010500, -0.291340626969183230, +-0.291292795636003470, -0.291244963574592560, -0.291197130785069310, -0.291149297267553180, -0.291101463022163830, -0.291053628049020850, -0.291005792348243750, -0.290957955919951330, +-0.290910118764264870, -0.290862280881303110, -0.290814442271185690, -0.290766602934032110, -0.290718762869962070, -0.290670922079095060, -0.290623080561550780, -0.290575238317447970, +-0.290527395346907910, -0.290479551650049350, -0.290431707226991910, -0.290383862077855210, -0.290336016202758840, -0.290288169601822410, -0.290240322275164770, -0.290192474222907120, +-0.290144625445168280, -0.290096775942067950, -0.290048925713725590, -0.290001074760260990, -0.289953223081793670, -0.289905370678443240, -0.289857517550329460, -0.289809663697571000, +-0.289761809120289260, -0.289713953818602990, -0.289666097792631800, -0.289618241042495390, -0.289570383568313380, -0.289522525370205400, -0.289474666448290290, -0.289426806802689340, +-0.289378946433521360, -0.289331085340906010, -0.289283223524963000, -0.289235360985811870, -0.289187497723572380, -0.289139633738364100, -0.289091769030305920, -0.289043903599519150, +-0.288996037446122620, -0.288948170570236030, -0.288900302971979000, -0.288852434651471200, -0.288804565608832330, -0.288756695844181180, -0.288708825357639140, -0.288660954149325020, +-0.288613082219358550, -0.288565209567859360, -0.288517336194947180, -0.288469462100741590, -0.288421587285362380, -0.288373711748928400, -0.288325835491560930, -0.288277958513378900, +-0.288230080814501970, -0.288182202395049820, -0.288134323255142160, -0.288086443394898690, -0.288038562814438290, -0.287990681513882300, -0.287942799493349670, -0.287894916752959970, +-0.287847033292833010, -0.287799149113088460, -0.287751264213846060, -0.287703378595225430, -0.287655492257345600, -0.287607605200327800, -0.287559717424291040, -0.287511828929355010, +-0.287463939715639330, -0.287416049783263850, -0.287368159132348260, -0.287320267763011390, -0.287272375675374720, -0.287224482869557100, -0.287176589345678300, -0.287128695103857970, +-0.287080800144215940, -0.287032904466871910, -0.286985008071945660, -0.286937110959555990, -0.286889213129824350, -0.286841314582869770, -0.286793415318811860, -0.286745515337770370, +-0.286697614639865150, -0.286649713225215870, -0.286601811093942340, -0.286553908246163390, -0.286506004682000550, -0.286458100401572660, -0.286410195404999570, -0.286362289692400960, +-0.286314383263896630, -0.286266476119606320, -0.286218568259649860, -0.286170659684146120, -0.286122750393216550, -0.286074840386980170, -0.286026929665556600, -0.285979018229065800, +-0.285931106077627390, -0.285883193211361240, -0.285835279630386240, -0.285787365334823910, -0.285739450324793140, -0.285691534600413740, -0.285643618161805560, -0.285595701009088270, +-0.285547783142381770, -0.285499864561805820, -0.285451945267479300, -0.285404025259523800, -0.285356104538058260, -0.285308183103202440, -0.285260260955076170, -0.285212338093799260, +-0.285164414519491480, -0.285116490232271810, -0.285068565232261760, -0.285020639519580340, -0.284972713094347300, -0.284924785956682470, -0.284876858106705650, -0.284828929544536700, +-0.284781000270295460, -0.284733070284100830, -0.284685139586074390, -0.284637208176335090, -0.284589276055002780, -0.284541343222197320, -0.284493409678038430, -0.284445475422646090, +-0.284397540456139130, -0.284349604778639240, -0.284301668390265270, -0.284253731291137180, -0.284205793481374760, -0.284157854961097860, -0.284109915730426320, -0.284061975789479950, +-0.284014035138377810, -0.283966093777241470, -0.283918151706189840, -0.283870208925342870, -0.283822265434820360, -0.283774321234742220, -0.283726376325228240, -0.283678430706398310, +-0.283630484378371520, -0.283582537341269310, -0.283534589595210770, -0.283486641140315740, -0.283438691976704130, -0.283390742104495770, -0.283342791523810590, -0.283294840234768420, +-0.283246888237488280, -0.283198935532091740, -0.283150982118697940, -0.283103027997426650, -0.283055073168397790, -0.283007117631731200, -0.282959161387546900, -0.282911204435963790, +-0.282863246777103510, -0.282815288411085160, -0.282767329338028560, -0.282719369558053660, -0.282671409071280300, -0.282623447877828450, -0.282575485977817950, -0.282527523371367880, +-0.282479560058599920, -0.282431596039632970, -0.282383631314587100, -0.282335665883582110, -0.282287699746738010, -0.282239732904174590, -0.282191765356011040, -0.282143797102368920, +-0.282095828143367260, -0.282047858479126060, -0.281999888109765230, -0.281951917035404680, -0.281903945256164300, -0.281855972772164120, -0.281807999583523090, -0.281760025690362960, +-0.281712051092802730, -0.281664075790962420, -0.281616099784961880, -0.281568123074921070, -0.281520145660960010, -0.281472167543197700, -0.281424188721755840, -0.281376209196753490, +-0.281328228968310610, -0.281280248036547220, -0.281232266401583160, -0.281184284063538400, -0.281136301022533010, -0.281088317278685940, -0.281040332832118990, -0.280992347682951170, +-0.280944361831302500, -0.280896375277292890, -0.280848388021042390, -0.280800400062670870, -0.280752411402298400, -0.280704422040044030, -0.280656431976029460, -0.280608441210373820, +-0.280560449743197050, -0.280512457574619180, -0.280464464704760160, -0.280416471133739960, -0.280368476861678590, -0.280320481888695180, -0.280272486214911410, -0.280224489840446460, +-0.280176492765420280, -0.280128494989952850, -0.280080496514164170, -0.280032497338174260, -0.279984497462102240, -0.279936496886069860, -0.279888495610196190, -0.279840493634601340, +-0.279792490959405230, -0.279744487584727860, -0.279696483510689320, -0.279648478737409560, -0.279600473265007750, -0.279552467093605590, -0.279504460223322260, -0.279456452654277820, +-0.279408444386592240, -0.279360435420385520, -0.279312425755777750, -0.279264415392887990, -0.279216404331838140, -0.279168392572747230, -0.279120380115735310, -0.279072366960922470, +-0.279024353108428710, -0.278976338558374060, -0.278928323310878580, -0.278880307366061450, -0.278832290724044420, -0.278784273384946600, -0.278736255348888130, -0.278688236615989020, +-0.278640217186369330, -0.278592197060149090, -0.278544176237447480, -0.278496154718386290, -0.278448132503084760, -0.278400109591662840, -0.278352085984240660, -0.278304061680938300, +-0.278256036681875760, -0.278208010987173130, -0.278159984596949630, -0.278111957511327000, -0.278063929730424490, -0.278015901254362150, -0.277967872083260070, -0.277919842217238310, +-0.277871811656416940, -0.277823780400916040, -0.277775748450854840, -0.277727715806355080, -0.277679682467536050, -0.277631648434517870, -0.277583613707420520, -0.277535578286364160, +-0.277487542171468820, -0.277439505362854670, -0.277391467860640840, -0.277343429664949240, -0.277295390775899040, -0.277247351193610380, -0.277199310918203380, -0.277151269949798050, +-0.277103228288514580, -0.277055185934472150, -0.277007142887792600, -0.276959099148595230, -0.276911054717000120, -0.276863009593127320, -0.276814963777097020, -0.276766917269029360, +-0.276718870069044330, -0.276670822177261360, -0.276622773593802110, -0.276574724318785940, -0.276526674352332970, -0.276478623694563330, -0.276430572345597150, -0.276382520305554490, +-0.276334467574554710, -0.276286414152719590, -0.276238360040168440, -0.276190305237021370, -0.276142249743398570, -0.276094193559420110, -0.276046136685206220, -0.275998079120876980, +-0.275950020866551630, -0.275901961922352110, -0.275853902288397730, -0.275805841964808560, -0.275757780951704780, -0.275709719249206560, -0.275661656857434050, -0.275613593776506520, +-0.275565530006545880, -0.275517465547671370, -0.275469400400003230, -0.275421334563661580, -0.275373268038766610, -0.275325200825438490, -0.275277132923797350, -0.275229064333962490, +-0.275180995056055870, -0.275132925090196710, -0.275084854436505270, -0.275036783095101710, -0.274988711066106170, -0.274940638349638830, -0.274892564945819930, -0.274844490854768750, +-0.274796416076607210, -0.274748340611454640, -0.274700264459431190, -0.274652187620657070, -0.274604110095252540, -0.274556031883337660, -0.274507952985032780, -0.274459873400457080, +-0.274411793129732630, -0.274363712172978670, -0.274315630530315380, -0.274267548201863050, -0.274219465187741870, -0.274171381488072020, -0.274123297102972840, -0.274075212032566300, +-0.274027126276971680, -0.273979039836309280, -0.273930952710699280, -0.273882864900261920, -0.273834776405117330, -0.273786687225385850, -0.273738597361186830, -0.273690506812642120, +-0.273642415579871120, -0.273594323662994130, -0.273546231062131330, -0.273498137777402950, -0.273450043808929180, -0.273401949156829530, -0.273353853821225790, -0.273305757802237430, +-0.273257661099984670, -0.273209563714587770, -0.273161465646167000, -0.273113366894842500, -0.273065267460734620, -0.273017167343962700, -0.272969066544648750, -0.272920965062912080, +-0.272872862898873030, -0.272824760052651830, -0.272776656524368720, -0.272728552314143950, -0.272680447422096960, -0.272632341848349720, -0.272584235593021640, -0.272536128656232950, +-0.272488021038103880, -0.272439912738754840, -0.272391803758305960, -0.272343694096877640, -0.272295583754589180, -0.272247472731562630, -0.272199361027917360, -0.272151248643773770, +-0.272103135579251980, -0.272055021834472390, -0.272006907409555240, -0.271958792304620830, -0.271910676519788560, -0.271862560055180450, -0.271814442910916000, -0.271766325087115400, +-0.271718206583898950, -0.271670087401387040, -0.271621967539699860, -0.271573846998957810, -0.271525725779280300, -0.271477603880789290, -0.271429481303604280, -0.271381358047845580, +-0.271333234113633470, -0.271285109501088250, -0.271236984210330320, -0.271188858241479040, -0.271140731594656460, -0.271092604269982050, -0.271044476267576160, -0.270996347587559030, +-0.270948218230051110, -0.270900088195172580, -0.270851957483043860, -0.270803826093784340, -0.270755694027516150, -0.270707561284358740, -0.270659427864432420, -0.270611293767857470, +-0.270563158994754360, -0.270515023545243320, -0.270466887419443860, -0.270418750617478050, -0.270370613139465370, -0.270322474985526200, -0.270274336155780780, -0.270226196650349530, +-0.270178056469352780, -0.270129915612910890, -0.270081774081143370, -0.270033631874172290, -0.269985488992117110, -0.269937345435098170, -0.269889201203235900, -0.269841056296650670, +-0.269792910715462740, -0.269744764459791670, -0.269696617529759600, -0.269648469925485970, -0.269600321647091130, -0.269552172694695500, -0.269504023068419470, -0.269455872768383340, +-0.269407721794707570, -0.269359570147511610, -0.269311417826917590, -0.269263264833045020, -0.269215111166014320, -0.269166956825945770, -0.269118801812959880, -0.269070646127176960, +-0.269022489768716620, -0.268974332737700880, -0.268926175034249320, -0.268878016658482270, -0.268829857610520250, -0.268781697890483560, -0.268733537498492600, -0.268685376434667830, +-0.268637214699129600, -0.268589052291997480, -0.268540889213393590, -0.268492725463437440, -0.268444561042249560, -0.268396395949950180, -0.268348230186659880, -0.268300063752498990, +-0.268251896647587080, -0.268203728872046300, -0.268155560425996140, -0.268107391309557130, -0.268059221522849670, -0.268011051065994100, -0.267962879939110890, -0.267914708142320550, +-0.267866535675742530, -0.267818362539499030, -0.267770188733709670, -0.267722014258494790, -0.267673839113974850, -0.267625663300270380, -0.267577486817501710, -0.267529309665788470, +-0.267481131845252850, -0.267432953356014360, -0.267384774198193510, -0.267336594371910710, -0.267288413877286410, -0.267240232714441080, -0.267192050883495180, -0.267143868384568330, +-0.267095685217782650, -0.267047501383257720, -0.266999316881114060, -0.266951131711472110, -0.266902945874452290, -0.266854759370175170, -0.266806572198760250, -0.266758384360329780, +-0.266710195855003330, -0.266662006682901410, -0.266613816844144480, -0.266565626338853000, -0.266517435167147430, -0.266469243329148290, -0.266421050824975190, -0.266372857654750330, +-0.266324663818593320, -0.266276469316624630, -0.266228274148964770, -0.266180078315734260, -0.266131881817053490, -0.266083684653042220, -0.266035486823822550, -0.265987288329514180, +-0.265939089170237620, -0.265890889346113320, -0.265842688857261760, -0.265794487703803540, -0.265746285885859020, -0.265698083403548890, -0.265649880256992600, -0.265601676446312500, +-0.265553471971628210, -0.265505266833060250, -0.265457061030729140, -0.265408854564755330, -0.265360647435259440, -0.265312439642361010, -0.265264231186182360, -0.265216022066843190, +-0.265167812284463900, -0.265119601839165110, -0.265071390731067280, -0.265023178960290980, -0.264974966526956790, -0.264926753431184270, -0.264878539673095710, -0.264830325252810860, +-0.264782110170450170, -0.264733894426134210, -0.264685678019983490, -0.264637460952118600, -0.264589243222659200, -0.264541024831727530, -0.264492805779443290, -0.264444586065927080, +-0.264396365691299370, -0.264348144655680740, -0.264299922959191750, -0.264251700601952970, -0.264203477584084080, -0.264155253905707380, -0.264107029566942490, -0.264058804567910090, +-0.264010578908730590, -0.263962352589524720, -0.263914125610412940, -0.263865897971515000, -0.263817669672953170, -0.263769440714847150, -0.263721211097317550, -0.263672980820484900, +-0.263624749884469820, -0.263576518289392820, -0.263528286035374590, -0.263480053122534750, -0.263431819550995650, -0.263383585320876970, -0.263335350432299390, -0.263287114885383370, +-0.263238878680249590, -0.263190641817018620, -0.263142404295810150, -0.263094166116746580, -0.263045927279947580, -0.262997687785533730, -0.262949447633625650, -0.262901206824344040, +-0.262852965357809330, -0.262804723234142220, -0.262756480453463340, -0.262708237015892350, -0.262659992921551680, -0.262611748170560990, -0.262563502763040910, -0.262515256699112130, +-0.262467009978895160, -0.262418762602510680, -0.262370514570078480, -0.262322265881720810, -0.262274016537557440, -0.262225766537709070, -0.262177515882296320, -0.262129264571439700, +-0.262081012605260010, -0.262032759983877710, -0.261984506707412690, -0.261936252775987250, -0.261887998189721190, -0.261839742948735130, -0.261791487053149700, -0.261743230503085570, +-0.261694973298663370, -0.261646715440002840, -0.261598456927226390, -0.261550197760453850, -0.261501937939805750, -0.261453677465402820, -0.261405416337365750, -0.261357154555815100, +-0.261308892120871550, -0.261260629032654900, -0.261212365291287550, -0.261164100896889300, -0.261115835849580810, -0.261067570149482730, -0.261019303796715670, -0.260971036791400430, +-0.260922769133656700, -0.260874500823606860, -0.260826231861370830, -0.260777962247069230, -0.260729691980822690, -0.260681421062751940, -0.260633149492977610, -0.260584877271620440, +-0.260536604398800160, -0.260488330874639300, -0.260440056699257570, -0.260391781872775730, -0.260343506395314390, -0.260295230266994300, -0.260246953487936140, -0.260198676058259750, +-0.260150397978087530, -0.260102119247539290, -0.260053839866735800, -0.260005559835797650, -0.259957279154845620, -0.259908997824000400, -0.259860715843382720, -0.259812433213113200, +-0.259764149933311760, -0.259715866004100790, -0.259667581425600150, -0.259619296197930620, -0.259571010321212770, -0.259522723795567460, -0.259474436621115300, -0.259426148797976150, +-0.259377860326272580, -0.259329571206124270, -0.259281281437652110, -0.259232991020976690, -0.259184699956218790, -0.259136408243499210, -0.259088115882938560, -0.259039822874656770, +-0.258991529218776270, -0.258943234915416930, -0.258894939964699530, -0.258846644366744760, -0.258798348121673400, -0.258750051229606150, -0.258701753690662950, -0.258653455504966210, +-0.258605156672635840, -0.258556857193792570, -0.258508557068557130, -0.258460256297050330, -0.258411954879392840, -0.258363652815705500, -0.258315350106108180, -0.258267046750723320, +-0.258218742749670880, -0.258170438103071550, -0.258122132811046120, -0.258073826873715380, -0.258025520291200070, -0.257977213063620090, -0.257928905191097960, -0.257880596673753570, +-0.257832287511707670, -0.257783977705081050, -0.257735667253994440, -0.257687356158568750, -0.257639044418924600, -0.257590732035182010, -0.257542419007463440, -0.257494105335888850, +-0.257445791020578960, -0.257397476061654640, -0.257349160459236560, -0.257300844213445620, -0.257252527324401740, -0.257204209792227360, -0.257155891617042440, -0.257107572798967840, +-0.257059253338124290, -0.257010933234632590, -0.256962612488613570, -0.256914291100187990, -0.256865969069475840, -0.256817646396599650, -0.256769323081679320, -0.256720999124835700, +-0.256672674526189580, -0.256624349285861750, -0.256576023403973060, -0.256527696880644360, -0.256479369715995500, -0.256431041910149090, -0.256382713463225050, -0.256334384375344280, +-0.256286054646627510, -0.256237724277195660, -0.256189393267169440, -0.256141061616669720, -0.256092729325816560, -0.256044396394732370, -0.255996062823537210, -0.255947728612351880, +-0.255899393761297280, -0.255851058270494150, -0.255802722140063390, -0.255754385370124960, -0.255706047960801430, -0.255657709912212760, -0.255609371224479850, -0.255561031897723500, +-0.255512691932064550, -0.255464351327623910, -0.255416010084522360, -0.255367668202879930, -0.255319325682819180, -0.255270982524460120, -0.255222638727923610, -0.255174294293330490, +-0.255125949220801670, -0.255077603510457940, -0.255029257162419360, -0.254980910176808520, -0.254932562553745360, -0.254884214293350840, -0.254835865395745760, -0.254787515861051030, +-0.254739165689387480, -0.254690814880876030, -0.254642463435636680, -0.254594111353792010, -0.254545758635462140, -0.254497405280767810, -0.254449051289829970, -0.254400696662769490, +-0.254352341399707300, -0.254303985500763390, -0.254255628966060350, -0.254207271795718280, -0.254158913989858020, -0.254110555548600460, -0.254062196472066510, -0.254013836760377090, +-0.253965476413653020, -0.253917115432014450, -0.253868753815583940, -0.253820391564481550, -0.253772028678828200, -0.253723665158744780, -0.253675301004352150, -0.253626936215771310, +-0.253578570793123130, -0.253530204736527600, -0.253481838046107470, -0.253433470721982750, -0.253385102764274340, -0.253336734173103210, -0.253288364948590190, -0.253239995090856260, +-0.253191624600022370, -0.253143253476208530, -0.253094881719537480, -0.253046509330129180, -0.252998136308104580, -0.252949762653584710, -0.252901388366690350, -0.252853013447542570, +-0.252804637896261400, -0.252756261712969500, -0.252707884897786890, -0.252659507450834600, -0.252611129372233570, -0.252562750662104710, -0.252514371320568920, -0.252465991347747280, +-0.252417610743759730, -0.252369229508729090, -0.252320847642775290, -0.252272465146019420, -0.252224082018582370, -0.252175698260585170, -0.252127313872148650, -0.252078928853393000, +-0.252030543204440900, -0.251982156925412480, -0.251933770016428640, -0.251885382477610330, -0.251836994309078630, -0.251788605510954390, -0.251740216083358670, -0.251691826026411550, +-0.251643435340235700, -0.251595044024951310, -0.251546652080679280, -0.251498259507540620, -0.251449866305656300, -0.251401472475147330, -0.251353078016133820, -0.251304682928738480, +-0.251256287213081410, -0.251207890869283630, -0.251159493897466110, -0.251111096297749860, -0.251062698070255890, -0.251014299215105210, -0.250965899732417840, -0.250917499622316630, +-0.250869098884921650, -0.250820697520353960, -0.250772295528734480, -0.250723892910184270, -0.250675489664824340, -0.250627085792775710, -0.250578681294158500, -0.250530276169095400, +-0.250481870417706640, -0.250433464040113190, -0.250385057036436100, -0.250336649406796340, -0.250288241151314980, -0.250239832270113040, -0.250191422763310630, -0.250143012631030500, +-0.250094601873392890, -0.250046190490518740, -0.249997778482529130, -0.249949365849545050, -0.249900952591687600, -0.249852538709076870, -0.249804124201835680, -0.249755709070084150, +-0.249707293313943370, -0.249658876933534330, -0.249610459928978120, -0.249562042300395780, -0.249513624047908310, -0.249465205171635900, -0.249416785671701360, -0.249368365548224860, +-0.249319944801327440, -0.249271523431130150, -0.249223101437754090, -0.249174678821320220, -0.249126255581948840, -0.249077831719762640, -0.249029407234881900, -0.248980982127427610, +-0.248932556397520880, -0.248884130045282760, -0.248835703070834330, -0.248787275474296600, -0.248738847255789850, -0.248690418415436850, -0.248641988953357790, -0.248593558869673770, +-0.248545128164505830, -0.248496696837975100, -0.248448264890202610, -0.248399832321308610, -0.248351399131415850, -0.248302965320644640, -0.248254530889115980, -0.248206095836951020, +-0.248157660164270820, -0.248109223871196470, -0.248060786957849030, -0.248012349424348800, -0.247963911270818540, -0.247915472497378500, -0.247867033104149790, -0.247818593091253480, +-0.247770152458810680, -0.247721711206942530, -0.247673269335770080, -0.247624826845413620, -0.247576383735995910, -0.247527940007637280, -0.247479495660458790, -0.247431050694581570, +-0.247382605110126720, -0.247334158907215330, -0.247285712085968560, -0.247237264646506670, -0.247188816588952450, -0.247140367913426200, -0.247091918620049030, -0.247043468708942060, +-0.246995018180226430, -0.246946567034023230, -0.246898115270452770, -0.246849662889637890, -0.246801209891698850, -0.246752756276756770, -0.246704302044932820, -0.246655847196348120, +-0.246607391731123780, -0.246558935649380940, -0.246510478951239950, -0.246462021636823600, -0.246413563706252200, -0.246365105159646880, -0.246316645997128800, -0.246268186218819130, +-0.246219725824838980, -0.246171264815308630, -0.246122803190350990, -0.246074340950086370, -0.246025878094635860, -0.245977414624120680, -0.245928950538661960, -0.245880485838380850, +-0.245832020523398560, -0.245783554593835330, -0.245735088049814060, -0.245686620891455100, -0.245638153118879570, -0.245589684732208660, -0.245541215731563540, -0.245492746117065400, +-0.245444275888834520, -0.245395805046993790, -0.245347333591663580, -0.245298861522965010, -0.245250388841019300, -0.245201915545947610, -0.245153441637871140, -0.245104967116911070, +-0.245056491983187710, -0.245008016236824000, -0.244959539877940220, -0.244911062906657620, -0.244862585323097350, -0.244814107127380610, -0.244765628319628610, -0.244717148899962540, +-0.244668668868502720, -0.244620188225372100, -0.244571706970691030, -0.244523225104580660, -0.244474742627162260, -0.244426259538556980, -0.244377775838886060, -0.244329291528270680, +-0.244280806606831240, -0.244232321074690640, -0.244183834931969210, -0.244135348178788240, -0.244086860815268870, -0.244038372841532350, -0.243989884257699880, -0.243941395063891870, +-0.243892905260231220, -0.243844414846838300, -0.243795923823834360, -0.243747432191340600, -0.243698939949478280, -0.243650447098368580, -0.243601953638132780, -0.243553459568891210, +-0.243504964890766870, -0.243456469603880120, -0.243407973708352210, -0.243359477204304340, -0.243310980091857780, -0.243262482371133790, -0.243213984042252720, -0.243165485105337560, +-0.243116985560508670, -0.243068485407887340, -0.243019984647594780, -0.242971483279752270, -0.242922981304481030, -0.242874478721902350, -0.242825975532136610, -0.242777471735306780, +-0.242728967331533290, -0.242680462320937370, -0.242631956703640320, -0.242583450479763350, -0.242534943649427760, -0.242486436212753950, -0.242437928169864920, -0.242389419520881080, +-0.242340910265923660, -0.242292400405113990, -0.242243889938573290, -0.242195378866422890, -0.242146867188784030, -0.242098354905777160, -0.242049842017525250, -0.242001328524148740, +-0.241952814425768910, -0.241904299722507040, -0.241855784414484410, -0.241807268501822330, -0.241758751984642080, -0.241710234863064090, -0.241661717137211380, -0.241613198807204360, +-0.241564679873164350, -0.241516160335212640, -0.241467640193470560, -0.241419119448059330, -0.241370598099099470, -0.241322076146713970, -0.241273553591023260, -0.241225030432148680, +-0.241176506670211540, -0.241127982305333140, -0.241079457337634750, -0.241030931767237720, -0.240982405594262540, -0.240933878818832160, -0.240885351441067100, -0.240836823461088670, +-0.240788294879018180, -0.240739765694976960, -0.240691235909086310, -0.240642705521467580, -0.240594174532241220, -0.240545642941530270, -0.240497110749455230, -0.240448577956137420, +-0.240400044561698140, -0.240351510566258780, -0.240302975969940630, -0.240254440772864180, -0.240205904975152480, -0.240157368576926020, -0.240108831578306150, -0.240060293979414200, +-0.240011755780371480, -0.239963216981299410, -0.239914677582319300, -0.239866137583551600, -0.239817596985119450, -0.239769055787143300, -0.239720513989744500, -0.239671971593044430, +-0.239623428597164430, -0.239574885002225850, -0.239526340808349200, -0.239477796015657550, -0.239429250624271420, -0.239380704634312190, -0.239332158045901160, -0.239283610859159750, +-0.239235063074209300, -0.239186514691171190, -0.239137965710165960, -0.239089416131316650, -0.239040865954743830, -0.238992315180568820, -0.238943763808913020, -0.238895211839897810, +-0.238846659273644600, -0.238798106110274720, -0.238749552349908720, -0.238700997992669690, -0.238652443038678160, -0.238603887488055530, -0.238555331340923190, -0.238506774597402520, +-0.238458217257614900, -0.238409659321680900, -0.238361100789723580, -0.238312541661863550, -0.238263981938222120, -0.238215421618920790, -0.238166860704080860, -0.238118299193823800, +-0.238069737088270980, -0.238021174387542940, -0.237972611091762880, -0.237924047201051230, -0.237875482715529500, -0.237826917635319050, -0.237778351960541310, -0.237729785691317700, +-0.237681218827769600, -0.237632651370017630, -0.237584083318184870, -0.237535514672391900, -0.237486945432760140, -0.237438375599411030, -0.237389805172465970, -0.237341234152046390, +-0.237292662538272890, -0.237244090331268590, -0.237195517531154030, -0.237146944138050710, -0.237098370152080020, -0.237049795573363390, -0.237001220402022290, -0.236952644638178140, +-0.236904068281951510, -0.236855491333465590, -0.236806913792840910, -0.236758335660198970, -0.236709756935661180, -0.236661177619348990, -0.236612597711383880, -0.236564017211886380, +-0.236515436120979720, -0.236466854438784490, -0.236418272165422080, -0.236369689301014010, -0.236321105845681720, -0.236272521799546660, -0.236223937162730320, -0.236175351935353240, +-0.236126766117538660, -0.236078179709407170, -0.236029592711080230, -0.235981005122679300, -0.235932416944325850, -0.235883828176141370, -0.235835238818247310, -0.235786648870764310, +-0.235738058333815530, -0.235689467207521620, -0.235640875492004020, -0.235592283187384260, -0.235543690293783780, -0.235495096811324050, -0.235446502740125740, -0.235397908080312050, +-0.235349312832003550, -0.235300716995321820, -0.235252120570388250, -0.235203523557324410, -0.235154925956251730, -0.235106327767291760, -0.235057728990565100, -0.235009129626195000, +-0.234960529674302030, -0.234911929135007770, -0.234863328008433680, -0.234814726294701290, -0.234766123993932070, -0.234717521106247520, -0.234668917631768340, -0.234620313570617690, +-0.234571708922916290, -0.234523103688785590, -0.234474497868347150, -0.234425891461722460, -0.234377284469033050, -0.234328676890399550, -0.234280068725945230, -0.234231459975790730, +-0.234182850640057590, -0.234134240718867320, -0.234085630212341440, -0.234037019120601510, -0.233988407443769000, -0.233939795181964620, -0.233891182335311640, -0.233842568903930680, +-0.233793954887943300, -0.233745340287471020, -0.233696725102635420, -0.233648109333557980, -0.233599492980359420, -0.233550876043162990, -0.233502258522089360, -0.233453640417260080, +-0.233405021728796710, -0.233356402456820790, -0.233307782601453850, -0.233259162162817470, -0.233210541141032320, -0.233161919536221670, -0.233113297348506220, -0.233064674578007530, +-0.233016051224847170, -0.232967427289146660, -0.232918802771027580, -0.232870177670611490, -0.232821551988019130, -0.232772925723373710, -0.232724298876795990, -0.232675671448407530, +-0.232627043438329910, -0.232578414846684650, -0.232529785673593360, -0.232481155919176760, -0.232432525583558120, -0.232383894666858160, -0.232335263169198470, -0.232286631090700610, +-0.232237998431486180, -0.232189365191676770, -0.232140731371393930, -0.232092096970758420, -0.232043461989893510, -0.231994826428919940, -0.231946190287959320, -0.231897553567133210, +-0.231848916266563230, -0.231800278386370960, -0.231751639926677990, -0.231703000887605040, -0.231654361269275470, -0.231605721071809990, -0.231557080295330200, -0.231508438939957730, +-0.231459797005814150, -0.231411154493021080, -0.231362511401699280, -0.231313867731972040, -0.231265223483960140, -0.231216578657785170, -0.231167933253568770, -0.231119287271432520, +-0.231070640711498050, -0.231021993573887000, -0.230973345858720090, -0.230924697566120690, -0.230876048696209530, -0.230827399249108250, -0.230778749224938490, -0.230730098623821820, +-0.230681447445879930, -0.230632795691233570, -0.230584143360006070, -0.230535490452318220, -0.230486836968291610, -0.230438182908047930, -0.230389528271708800, -0.230340873059395850, +-0.230292217271230730, -0.230243560907334170, -0.230194903967829600, -0.230146246452837770, -0.230097588362480290, -0.230048929696878870, -0.230000270456155120, -0.229951610640430680, +-0.229902950249827240, -0.229854289284465520, -0.229805627744468970, -0.229756965629958370, -0.229708302941055320, -0.229659639677881530, -0.229610975840558650, -0.229562311429208300, +-0.229513646443951340, -0.229464980884911100, -0.229416314752208420, -0.229367648045964960, -0.229318980766302360, -0.229270312913342320, -0.229221644487206500, -0.229172975488016570, +-0.229124305915893330, -0.229075635770960210, -0.229026965053338000, -0.228978293763148350, -0.228929621900512970, -0.228880949465553570, -0.228832276458391770, -0.228783602879149260, +-0.228734928727946900, -0.228686254004908080, -0.228637578710153640, -0.228588902843805230, -0.228540226405984560, -0.228491549396813350, -0.228442871816413260, -0.228394193664905130, +-0.228345514942412370, -0.228296835649055810, -0.228248155784957160, -0.228199475350238160, -0.228150794345020450, -0.228102112769425740, -0.228053430623575750, -0.228004747907591340, +-0.227956064621595900, -0.227907380765710320, -0.227858696340056290, -0.227810011344755510, -0.227761325779929690, -0.227712639645700570, -0.227663952942188970, -0.227615265669518370, +-0.227566577827809590, -0.227517889417184400, -0.227469200437764450, -0.227420510889671520, -0.227371820773027310, -0.227323130087953520, -0.227274438834571070, -0.227225747013003380, +-0.227177054623371320, -0.227128361665796640, -0.227079668140401040, -0.227030974047306270, -0.226982279386634070, -0.226933584158505310, -0.226884888363043440, -0.226836192000369360, +-0.226787495070604810, -0.226738797573871500, -0.226690099510291200, -0.226641400879985660, -0.226592701683076630, -0.226544001919684960, -0.226495301589934170, -0.226446600693945090, +-0.226397899231839560, -0.226349197203739250, -0.226300494609765950, -0.226251791450041400, -0.226203087724687390, -0.226154383433824800, -0.226105678577577100, -0.226056973156065210, +-0.226008267169410890, -0.225959560617735920, -0.225910853501162020, -0.225862145819811010, -0.225813437573804620, -0.225764728763263760, -0.225716019388311960, -0.225667309449070120, +-0.225618598945660000, -0.225569887878203370, -0.225521176246822020, -0.225472464051637730, -0.225423751292771420, -0.225375037970346610, -0.225326324084484190, -0.225277609635305960, +-0.225228894622933720, -0.225180179047489240, -0.225131462909094300, -0.225082746207870720, -0.225034028943939400, -0.224985311117423870, -0.224936592728445070, -0.224887873777124770, +-0.224839154263584810, -0.224790434187946950, -0.224741713550333010, -0.224692992350863900, -0.224644270589663210, -0.224595548266851820, -0.224546825382551550, -0.224498101936884240, +-0.224449377929971690, -0.224400653361935650, -0.224351928232898010, -0.224303202542979670, -0.224254476292304190, -0.224205749480992530, -0.224157022109166490, -0.224108294176947890, +-0.224059565684458560, -0.224010836631820310, -0.223962107019154120, -0.223913376846583520, -0.223864646114229460, -0.223815914822213800, -0.223767182970658340, -0.223718450559684950, +-0.223669717589415420, -0.223620984059971580, -0.223572249971474430, -0.223523515324047520, -0.223474780117811830, -0.223426044352889180, -0.223377308029401420, -0.223328571147470400, +-0.223279833707217930, -0.223231095708765900, -0.223182357152235250, -0.223133618037749560, -0.223084878365429840, -0.223036138135397940, -0.222987397347775670, -0.222938656002684920, +-0.222889914100247530, -0.222841171640585340, -0.222792428623819370, -0.222743685050073190, -0.222694940919467820, -0.222646196232125060, -0.222597450988166830, -0.222548705187714970, +-0.222499958830891350, -0.222451211917816970, -0.222402464448615420, -0.222353716423407700, -0.222304967842315710, -0.222256218705461280, -0.222207469012966310, -0.222158718764952660, +-0.222109967961542230, -0.222061216602856020, -0.222012464689017610, -0.221963712220148050, -0.221914959196369220, -0.221866205617802960, -0.221817451484571220, -0.221768696796795840, +-0.221719941554597840, -0.221671185758100880, -0.221622429407425940, -0.221573672502694910, -0.221524915044029710, -0.221476157031552240, -0.221427398465384370, -0.221378639345648000, +-0.221329879672464150, -0.221281119445956490, -0.221232358666246020, -0.221183597333454660, -0.221134835447704290, -0.221086073009116840, -0.221037310017814210, -0.220988546473917440, +-0.220939782377550190, -0.220891017728833460, -0.220842252527889190, -0.220793486774839290, -0.220744720469805670, -0.220695953612910250, -0.220647186204274950, -0.220598418244020820, +-0.220549649732271510, -0.220500880669148050, -0.220452111054772410, -0.220403340889266500, -0.220354570172752230, -0.220305798905351540, -0.220257027087186360, -0.220208254718377740, +-0.220159481799049340, -0.220110708329322220, -0.220061934309318360, -0.220013159739159660, -0.219964384618968060, -0.219915608948865500, -0.219866832728973890, -0.219818055959414370, +-0.219769278640310540, -0.219720500771783540, -0.219671722353955300, -0.219622943386947710, -0.219574163870882800, -0.219525383805882460, -0.219476603192067800, -0.219427822029562510, +-0.219379040318487650, -0.219330258058965190, -0.219281475251117100, -0.219232691895065310, -0.219183907990931790, -0.219135123538838520, -0.219086338538906550, -0.219037552991259600, +-0.218988766896018760, -0.218939980253306020, -0.218891193063243340, -0.218842405325952670, -0.218793617041555980, -0.218744828210174380, -0.218696038831931560, -0.218647248906948670, +-0.218598458435347640, -0.218549667417250490, -0.218500875852779160, -0.218452083742055630, -0.218403291085201900, -0.218354497882339070, -0.218305704133590850, -0.218256909839078390, +-0.218208114998923650, -0.218159319613248640, -0.218110523682175290, -0.218061727205825670, -0.218012930184320830, -0.217964132617784550, -0.217915334506337960, -0.217866535850103020, +-0.217817736649201730, -0.217768936903756090, -0.217720136613888120, -0.217671335779719810, -0.217622534401372300, -0.217573732478969300, -0.217524930012631980, -0.217476127002482340, +-0.217427323448642380, -0.217378519351234120, -0.217329714710379540, -0.217280909526200690, -0.217232103798818720, -0.217183297528357330, -0.217134490714937680, -0.217085683358681840, +-0.217036875459711760, -0.216988067018149520, -0.216939258034117090, -0.216890448507736530, -0.216841638439128960, -0.216792827828418190, -0.216744016675725320, -0.216695204981172450, +-0.216646392744881540, -0.216597579966974650, -0.216548766647573800, -0.216499952786800180, -0.216451138384777560, -0.216402323441627080, -0.216353507957470770, -0.216304691932430710, +-0.216255875366628940, -0.216207058260187430, -0.216158240613228330, -0.216109422425872720, -0.216060603698244450, -0.216011784430464650, -0.215962964622655410, -0.215914144274938740, +-0.215865323387436720, -0.215816501960271380, -0.215767679993563940, -0.215718857487438130, -0.215670034442015210, -0.215621210857417200, -0.215572386733766160, -0.215523562071184140, +-0.215474736869793240, -0.215425911129715460, -0.215377084851072070, -0.215328258033986840, -0.215279430678580940, -0.215230602784976470, -0.215181774353295500, -0.215132945383660070, +-0.215084115876192310, -0.215035285831013360, -0.214986455248247080, -0.214937624128014680, -0.214888792470438210, -0.214839960275639730, -0.214791127543741380, -0.214742294274865210, +-0.214693460469133290, -0.214644626126666850, -0.214595791247589730, -0.214546955832023130, -0.214498119880089130, -0.214449283391909830, -0.214400446367607330, -0.214351608807303700, +-0.214302770711121050, -0.214253932079180640, -0.214205092911606220, -0.214156253208519110, -0.214107412970041350, -0.214058572196295040, -0.214009730887402330, -0.213960889043485260, +-0.213912046664665120, -0.213863203751065710, -0.213814360302808320, -0.213765516320015030, -0.213716671802807930, -0.213667826751309160, -0.213618981165640820, -0.213570135045925010, +-0.213521288392283020, -0.213472441204838690, -0.213423593483713230, -0.213374745229028770, -0.213325896440907490, -0.213277047119471430, -0.213228197264842790, -0.213179346877143630, +-0.213130495956495250, -0.213081644503021470, -0.213032792516843620, -0.212983939998083770, -0.212935086946864060, -0.212886233363306640, -0.212837379247533650, -0.212788524599666320, +-0.212739669419828550, -0.212690813708141640, -0.212641957464727670, -0.212593100689708800, -0.212544243383207180, -0.212495385545344970, -0.212446527176244290, -0.212397668276026410, +-0.212348808844815250, -0.212299948882732040, -0.212251088389898980, -0.212202227366438180, -0.212153365812471820, -0.212104503728122060, -0.212055641113510160, -0.212006777968760020, +-0.211957914293992940, -0.211909050089331090, -0.211860185354896590, -0.211811320090811630, -0.211762454297198390, -0.211713587974179000, -0.211664721121874760, -0.211615853740409620, +-0.211566985829904820, -0.211518117390482540, -0.211469248422265000, -0.211420378925374320, -0.211371508899932700, -0.211322638346062320, -0.211273767263884440, -0.211224895653523040, +-0.211176023515099400, -0.211127150848735710, -0.211078277654554110, -0.211029403932676830, -0.210980529683226060, -0.210931654906323070, -0.210882779602091840, -0.210833903770653640, +-0.210785027412130680, -0.210736150526645160, -0.210687273114319260, -0.210638395175275190, -0.210589516709635110, -0.210540637717520380, -0.210491758199054910, -0.210442878154360080, +-0.210393997583558030, -0.210345116486770980, -0.210296234864121160, -0.210247352715730720, -0.210198470041721930, -0.210149586842216100, -0.210100703117337140, -0.210051818867206450, +-0.210002934091946200, -0.209954048791678620, -0.209905162966525920, -0.209856276616610300, -0.209807389742053120, -0.209758502342978350, -0.209709614419507330, -0.209660725971762250, +-0.209611836999865380, -0.209562947503938890, -0.209514057484105040, -0.209465166940486060, -0.209416275873203300, -0.209367384282380690, -0.209318492168139640, -0.209269599530602340, +-0.209220706369891070, -0.209171812686128030, -0.209122918479435430, -0.209074023749934700, -0.209025128497749760, -0.208976232723002000, -0.208927336425813650, -0.208878439606306980, +-0.208829542264604210, -0.208780644400827550, -0.208731746015099310, -0.208682847107540840, -0.208633947678276120, -0.208585047727426500, -0.208536147255114300, -0.208487246261461700, +-0.208438344746591010, -0.208389442710624430, -0.208340540153684280, -0.208291637075891880, -0.208242733477371270, -0.208193829358243820, -0.208144924718631800, -0.208096019558657470, +-0.208047113878443100, -0.207998207678110920, -0.207949300957782380, -0.207900393717581460, -0.207851485957629530, -0.207802577678048880, -0.207753668878961820, -0.207704759560490560, +-0.207655849722757410, -0.207606939365884650, -0.207558028489993660, -0.207509117095208450, -0.207460205181650480, -0.207411292749441980, -0.207362379798705250, -0.207313466329562570, +-0.207264552342136230, -0.207215637836548480, -0.207166722812920810, -0.207117807271377190, -0.207068891212039030, -0.207019974635028660, -0.206971057540468350, -0.206922139928480380, +-0.206873221799187100, -0.206824303152709860, -0.206775383989172750, -0.206726464308697180, -0.206677544111405430, -0.206628623397419830, -0.206579702166862690, -0.206530780419856290, +-0.206481858156522920, -0.206432935376984040, -0.206384012081363700, -0.206335088269783310, -0.206286163942365240, -0.206237239099231720, -0.206188313740505110, -0.206139387866307730, +-0.206090461476760990, -0.206041534571988980, -0.205992607152113150, -0.205943679217255790, -0.205894750767539210, -0.205845821803085780, -0.205796892324017790, -0.205747962330457560, +-0.205699031822526580, -0.205650100800348870, -0.205601169264045900, -0.205552237213740020, -0.205503304649553550, -0.205454371571608810, -0.205405437980028140, -0.205356503874933870, +-0.205307569256447470, -0.205258634124693030, -0.205209698479792010, -0.205160762321866720, -0.205111825651039550, -0.205062888467432810, -0.205013950771168820, -0.204965012562369130, +-0.204916073841157760, -0.204867134607656180, -0.204818194861986800, -0.204769254604271920, -0.204720313834633900, -0.204671372553195090, -0.204622430760077860, -0.204573488455403660, +-0.204524545639296650, -0.204475602311878250, -0.204426658473270850, -0.204377714123596790, -0.204328769262978470, -0.204279823891538200, -0.204230878009398380, -0.204181931616680500, +-0.204132984713508660, -0.204084037300004350, -0.204035089376289970, -0.203986140942487850, -0.203937191998720370, -0.203888242545109930, -0.203839292581777990, -0.203790342108848720, +-0.203741391126443570, -0.203692439634684950, -0.203643487633695220, -0.203594535123596790, -0.203545582104512010, -0.203496628576563280, -0.203447674539872110, -0.203398719994562600, +-0.203349764940756320, -0.203300809378575610, -0.203251853308142910, -0.203202896729580560, -0.203153939643010960, -0.203104982048555620, -0.203056023946338730, -0.203007065336481750, +-0.202958106219107120, -0.202909146594337230, -0.202860186462294480, -0.202811225823101270, -0.202762264676879970, -0.202713303023752150, -0.202664340863841940, -0.202615378197270880, +-0.202566415024161370, -0.202517451344635830, -0.202468487158816660, -0.202419522466826260, -0.202370557268787080, -0.202321591564820630, -0.202272625355051060, -0.202223658639599930, +-0.202174691418589650, -0.202125723692142630, -0.202076755460381310, -0.202027786723428110, -0.201978817481404590, -0.201929847734434870, -0.201880877482640530, -0.201831906726144010, +-0.201782935465067730, -0.201733963699534090, -0.201684991429665530, -0.201636018655584530, -0.201587045377412590, -0.201538071595273930, -0.201489097309290040, -0.201440122519583460, +-0.201391147226276550, -0.201342171429491760, -0.201293195129351570, -0.201244218325978390, -0.201195241019493760, -0.201146263210021940, -0.201097284897684440, -0.201048306082603740, +-0.200999326764902260, -0.200950346944702460, -0.200901366622126790, -0.200852385797296860, -0.200803404470336820, -0.200754422641368280, -0.200705440310513660, -0.200656457477895460, +-0.200607474143636110, -0.200558490307858080, -0.200509505970683820, -0.200460521132234920, -0.200411535792635570, -0.200362549952007420, -0.200313563610472870, -0.200264576768154400, +-0.200215589425174510, -0.200166601581655640, -0.200117613237719400, -0.200068624393489990, -0.200019635049089040, -0.199970645204638970, -0.199921654860262310, -0.199872664016081500, +-0.199823672672219040, -0.199774680828797400, -0.199725688485938190, -0.199676695643765610, -0.199627702302401320, -0.199578708461967760, -0.199529714122587410, -0.199480719284382800, +-0.199431723947476380, -0.199382728111990650, -0.199333731778047250, -0.199284734945770370, -0.199235737615281660, -0.199186739786703590, -0.199137741460158700, -0.199088742635769420, +-0.199039743313658310, -0.198990743493946960, -0.198941743176759640, -0.198892742362217930, -0.198843741050444390, -0.198794739241561490, -0.198745736935691750, -0.198696734132957660, +-0.198647730833481720, -0.198598727037385600, -0.198549722744793540, -0.198500717955827160, -0.198451712670608990, -0.198402706889261540, -0.198353700611907320, -0.198304693838668860, +-0.198255686569668630, -0.198206678805028350, -0.198157670544872240, -0.198108661789321930, -0.198059652538500000, -0.198010642792528920, -0.197961632551531210, -0.197912621815629460, +-0.197863610584945250, -0.197814598859602900, -0.197765586639724070, -0.197716573925431240, -0.197667560716846990, -0.197618547014093840, -0.197569532817294340, -0.197520518126570980, +-0.197471502942045460, -0.197422487263842070, -0.197373471092082450, -0.197324454426889150, -0.197275437268384730, -0.197226419616691680, -0.197177401471932610, -0.197128382834229180, +-0.197079363703705630, -0.197030344080483700, -0.196981323964685870, -0.196932303356434770, -0.196883282255852890, -0.196834260663062810, -0.196785238578187080, -0.196736216001347390, +-0.196687192932668010, -0.196638169372270660, -0.196589145320277910, -0.196540120776812270, -0.196491095741996330, -0.196442070215952640, -0.196393044198802940, -0.196344017690671470, +-0.196294990691679970, -0.196245963201950980, -0.196196935221607080, -0.196147906750770870, -0.196098877789564860, -0.196049848338111680, -0.196000818396532990, -0.195951787964953130, +-0.195902757043493800, -0.195853725632277600, -0.195804693731427060, -0.195755661341064780, -0.195706628461313370, -0.195657595092295380, -0.195608561234132530, -0.195559526886949160, +-0.195510492050866960, -0.195461456726008510, -0.195412420912496440, -0.195363384610453330, -0.195314347820001730, -0.195265310541264280, -0.195216272774362680, -0.195167234519421280, +-0.195118195776561780, -0.195069156545906790, -0.195020116827578920, -0.194971076621700740, -0.194922035928394880, -0.194872994747783050, -0.194823953079989620, -0.194774910925136300, +-0.194725868283345700, -0.194676825154740440, -0.194627781539443100, -0.194578737437576310, -0.194529692849262690, -0.194480647774623950, -0.194431602213784470, -0.194382556166865980, +-0.194333509633991120, -0.194284462615282450, -0.194235415110862650, -0.194186367120854330, -0.194137318645379170, -0.194088269684561610, -0.194039220238523380, -0.193990170307387110, +-0.193941119891275410, -0.193892068990310890, -0.193843017604616200, -0.193793965734313980, -0.193744913379525980, -0.193695860540376550, -0.193646807216987490, -0.193597753409481380, +-0.193548699117980920, -0.193499644342608690, -0.193450589083487360, -0.193401533340738670, -0.193352477114487050, -0.193303420404854210, -0.193254363211962820, -0.193205305535935540, +-0.193156247376894990, -0.193107188734963800, -0.193058129610264670, -0.193009070002919340, -0.192960009913052180, -0.192910949340785010, -0.192861888286240480, -0.192812826749541200, +-0.192763764730809890, -0.192714702230169150, -0.192665639247741630, -0.192616575783649190, -0.192567511838016150, -0.192518447410964330, -0.192469382502616420, -0.192420317113095010, +-0.192371251242522830, -0.192322184891022540, -0.192273118058716750, -0.192224050745727320, -0.192174982952178640, -0.192125914678192480, -0.192076845923891540, -0.192027776689398490, +-0.191978706974836020, -0.191929636780326730, -0.191880566105992520, -0.191831494951957750, -0.191782423318344250, -0.191733351205274680, -0.191684278612871740, -0.191635205541258120, +-0.191586131990556460, -0.191537057960889490, -0.191487983452379000, -0.191438908465149410, -0.191389832999322550, -0.191340757055021130, -0.191291680632367790, -0.191242603731485240, +-0.191193526352496200, -0.191144448495522480, -0.191095370160688500, -0.191046291348116100, -0.190997212057927970, -0.190948132290246820, -0.190899052045195330, -0.190849971322896220, +-0.190800890123472150, -0.190751808447045010, -0.190702726293739220, -0.190653643663676600, -0.190604560556979890, -0.190555476973771760, -0.190506392914174950, -0.190457308378312150, +-0.190408223366305220, -0.190359137878278600, -0.190310051914354130, -0.190260965474654510, -0.190211878559302490, -0.190162791168420800, -0.190113703302132120, -0.190064614960559150, +-0.190015526143823800, -0.189966436852050500, -0.189917347085361120, -0.189868256843878370, -0.189819166127724980, -0.189770074937023660, -0.189720983271897150, -0.189671891132468180, +-0.189622798518858630, -0.189573705431192950, -0.189524611869592990, -0.189475517834181510, -0.189426423325081250, -0.189377328342414910, -0.189328232886305260, -0.189279136956875040, +-0.189230040554246080, -0.189180943678542910, -0.189131846329887390, -0.189082748508402230, -0.189033650214210200, -0.188984551447434060, -0.188935452208196550, -0.188886352496619500, +-0.188837252312827470, -0.188788151656942290, -0.188739050529086770, -0.188689948929383570, -0.188640846857955540, -0.188591744314925370, -0.188542641300415840, -0.188493537814548860, +-0.188444433857448880, -0.188395329429237810, -0.188346224530038440, -0.188297119159973490, -0.188248013319165770, -0.188198907007738000, -0.188149800225812070, -0.188100692973512530, +-0.188051585250961270, -0.188002477058281050, -0.187953368395594620, -0.187904259263024760, -0.187855149660694280, -0.187806039588725880, -0.187756929047241560, -0.187707818036365770, +-0.187658706556220410, -0.187609594606928330, -0.187560482188612240, -0.187511369301394950, -0.187462255945399230, -0.187413142120747000, -0.187364027827562780, -0.187314913065968510, +-0.187265797836086930, -0.187216682138040880, -0.187167565971953110, -0.187118449337946440, -0.187069332236143640, -0.187020214666666630, -0.186971096629639950, -0.186921978125185550, +-0.186872859153426190, -0.186823739714484680, -0.186774619808483840, -0.186725499435546420, -0.186676378595795280, -0.186627257289352310, -0.186578135516342060, -0.186529013276886480, +-0.186479890571108360, -0.186430767399130530, -0.186381643761075770, -0.186332519657066900, -0.186283395087226740, -0.186234270051677230, -0.186185144550542890, -0.186136018583945680, +-0.186086892152008470, -0.186037765254853990, -0.185988637892605110, -0.185939510065384640, -0.185890381773314520, -0.185841253016519330, -0.185792123795120970, -0.185742994109242330, +-0.185693863959006190, -0.185644733344535410, -0.185595602265952790, -0.185546470723381150, -0.185497338716942490, -0.185448206246761340, -0.185399073312959660, -0.185349939915660320, +-0.185300806054986110, -0.185251671731059890, -0.185202536944004510, -0.185153401693941900, -0.185104265980996660, -0.185055129805290740, -0.185005993166947020, -0.184956856066088300, +-0.184907718502837440, -0.184858580477317290, -0.184809441989650690, -0.184760303039959610, -0.184711163628368650, -0.184662023754999790, -0.184612883419975870, -0.184563742623419710, +-0.184514601365454220, -0.184465459646202230, -0.184416317465785680, -0.184367174824329240, -0.184318031721954880, -0.184268888158785420, -0.184219744134943740, -0.184170599650552690, +-0.184121454705735150, -0.184072309300614000, -0.184023163435311170, -0.183974017109951320, -0.183924870324656400, -0.183875723079549330, -0.183826575374752940, -0.183777427210390140, +-0.183728278586583750, -0.183679129503456660, -0.183629979961130870, -0.183580829959731020, -0.183531679499379100, -0.183482528580197950, -0.183433377202310510, -0.183384225365839590, +-0.183335073070908160, -0.183285920317638130, -0.183236767106154190, -0.183187613436578330, -0.183138459309033440, -0.183089304723642380, -0.183040149680528090, -0.182990994179813400, +-0.182941838221621240, -0.182892681806073630, -0.182843524933295140, -0.182794367603407860, -0.182745209816534690, -0.182696051572798470, -0.182646892872322110, -0.182597733715228530, +-0.182548574101640630, -0.182499414031680410, -0.182450253505472500, -0.182401092523138990, -0.182351931084802740, -0.182302769190586660, -0.182253606840613670, -0.182204444035006660, +-0.182155280773887650, -0.182106117057381330, -0.182056952885609720, -0.182007788258695710, -0.181958623176762230, -0.181909457639932190, -0.181860291648328540, -0.181811125202074130, +-0.181761958301291020, -0.181712790946103930, -0.181663623136634840, -0.181614454873006680, -0.181565286155342400, -0.181516116983764880, -0.181466947358397110, -0.181417777279361060, +-0.181368606746781460, -0.181319435760780330, -0.181270264321480630, -0.181221092429005250, -0.181171920083477160, -0.181122747285019260, -0.181073574033754490, -0.181024400329804910, +-0.180975226173295200, -0.180926051564347430, -0.180876876503084540, -0.180827700989629440, -0.180778525024105100, -0.180729348606634450, -0.180680171737340410, -0.180630994416345090, +-0.180581816643773150, -0.180532638419746650, -0.180483459744388590, -0.180434280617821850, -0.180385101040169420, -0.180335921011554240, -0.180286740532098370, -0.180237559601926530, +-0.180188378221160790, -0.180139196389924120, -0.180090014108339440, -0.180040831376529740, -0.179991648194617960, -0.179942464562727060, -0.179893280480979110, -0.179844095949498850, +-0.179794910968408330, -0.179745725537830550, -0.179696539657888450, -0.179647353328704990, -0.179598166550403170, -0.179548979323105930, -0.179499791646935360, -0.179450603522016170, +-0.179401414948470510, -0.179352225926421280, -0.179303036455991490, -0.179253846537304110, -0.179204656170482120, -0.179155465355647610, -0.179106274092925320, -0.179057082382437340, +-0.179007890224306630, -0.178958697618656240, -0.178909504565609080, -0.178860311065288160, -0.178811117117816470, -0.178761922723316090, -0.178712727881911810, -0.178663532593725690, +-0.178614336858880730, -0.178565140677499960, -0.178515944049706300, -0.178466746975622810, -0.178417549455371580, -0.178368351489077340, -0.178319153076862220, -0.178269954218849200, +-0.178220754915161320, -0.178171555165921540, -0.178122354971252890, -0.178073154331278320, -0.178023953246120030, -0.177974751715902710, -0.177925549740748510, -0.177876347320780420, +-0.177827144456121490, -0.177777941146894690, -0.177728737393223040, -0.177679533195229530, -0.177630328553036340, -0.177581123466768190, -0.177531917936547210, -0.177482711962496460, +-0.177433505544738940, -0.177384298683397640, -0.177335091378595600, -0.177285883630454940, -0.177236675439100460, -0.177187466804654280, -0.177138257727239460, -0.177089048206978960, +-0.177039838243995860, -0.176990627838413160, -0.176941416990353900, -0.176892205699940210, -0.176842993967296890, -0.176793781792546070, -0.176744569175810830, -0.176695356117214130, +-0.176646142616879050, -0.176596928674928630, -0.176547714291485860, -0.176498499466672950, -0.176449284200614680, -0.176400068493433180, -0.176350852345251500, -0.176301635756192700, +-0.176252418726379810, -0.176203201255935860, -0.176153983344983060, -0.176104764993646160, -0.176055546202047330, -0.176006326970309660, -0.175957107298556180, -0.175907887186909920, +-0.175858666635493930, -0.175809445644431290, -0.175760224213844160, -0.175711002343857340, -0.175661780034593010, -0.175612557286174230, -0.175563334098724040, -0.175514110472365560, +-0.175464886407221770, -0.175415661903414900, -0.175366436961069740, -0.175317211580308500, -0.175267985761254240, -0.175218759504029990, -0.175169532808758850, -0.175120305675563890, +-0.175071078104568150, -0.175021850095893860, -0.174972621649665820, -0.174923392766006210, -0.174874163445038120, -0.174824933686884620, -0.174775703491668790, -0.174726472859513700, +-0.174677241790542420, -0.174628010284877180, -0.174578778342642770, -0.174529545963961420, -0.174480313148956210, -0.174431079897750220, -0.174381846210466540, -0.174332612087228220, +-0.174283377528157510, -0.174234142533379240, -0.174184907103015600, -0.174135671237189680, -0.174086434936024600, -0.174037198199643420, -0.173987961028169240, -0.173938723421725170, +-0.173889485380433420, -0.173840246904418850, -0.173791007993803620, -0.173741768648710910, -0.173692528869263760, -0.173643288655585290, -0.173594048007798570, -0.173544806926026780, +-0.173495565410392070, -0.173446323461019320, -0.173397081078030760, -0.173347838261549510, -0.173298595011698640, -0.173249351328601310, -0.173200107212380610, -0.173150862663158740, +-0.173101617681060580, -0.173052372266208400, -0.173003126418725280, -0.172953880138734360, -0.172904633426358730, -0.172855386281721510, -0.172806138704945820, -0.172756890696153940, +-0.172707642255470670, -0.172658393383018300, -0.172609144078919970, -0.172559894343298770, -0.172510644176277820, -0.172461393577980270, -0.172412142548528350, -0.172362891088046980, +-0.172313639196658350, -0.172264386874485640, -0.172215134121651960, -0.172165880938280450, -0.172116627324494200, -0.172067373280416440, -0.172018118806169320, -0.171968863901877820, +-0.171919608567664140, -0.171870352803651430, -0.171821096609962860, -0.171771839986721520, -0.171722582934050600, -0.171673325452073230, -0.171624067540911670, -0.171574809200690790, +-0.171525550431532920, -0.171476291233561150, -0.171427031606898650, -0.171377771551668580, -0.171328511067994100, -0.171279250155997430, -0.171229988815803540, -0.171180727047534680, +-0.171131464851313970, -0.171082202227264640, -0.171032939175509770, -0.170983675696172570, -0.170934411789376180, -0.170885147455242890, -0.170835882693897570, -0.170786617505462590, +-0.170737351890061030, -0.170688085847816110, -0.170638819378850980, -0.170589552483288800, -0.170540285161252720, -0.170491017412865070, -0.170441749238250760, -0.170392480637532070, +-0.170343211610832160, -0.170293942158274230, -0.170244672279981470, -0.170195401976076990, -0.170146131246683150, -0.170096860091924850, -0.170047588511924420, -0.169998316506805000, +-0.169949044076689790, -0.169899771221701970, -0.169850497941964720, -0.169801224237601240, -0.169751950108733810, -0.169702675555487380, -0.169653400577984280, -0.169604125176347650, +-0.169554849350700730, -0.169505573101166680, -0.169456296427868690, -0.169407019330929080, -0.169357741810472810, -0.169308463866622180, -0.169259185499500390, -0.169209906709230640, +-0.169160627495936130, -0.169111347859740050, -0.169062067800765600, -0.169012787319135080, -0.168963506414973490, -0.168914225088403150, -0.168864943339547210, -0.168815661168528950, +-0.168766378575471500, -0.168717095560498130, -0.168667812123731140, -0.168618528265295470, -0.168569243985313500, -0.168519959283908420, -0.168470674161203450, -0.168421388617321780, +-0.168372102652386670, -0.168322816266521260, -0.168273529459847970, -0.168224242232491690, -0.168174954584574850, -0.168125666516220600, -0.168076378027552180, -0.168027089118692820, +-0.167977799789765740, -0.167928510040894150, -0.167879219872200420, -0.167829929283809520, -0.167780638275843800, -0.167731346848426470, -0.167682055001680790, -0.167632762735729970, +-0.167583470050697240, -0.167534176946705800, -0.167484883423878100, -0.167435589482339030, -0.167386295122210980, -0.167337000343617230, -0.167287705146680950, -0.167238409531525410, +-0.167189113498273870, -0.167139817047048640, -0.167090520177974740, -0.167041222891174570, -0.166991925186771330, -0.166942627064888270, -0.166893328525648640, -0.166844029569175710, +-0.166794730195592680, -0.166745430405021960, -0.166696130197588550, -0.166646829573414780, -0.166597528532623970, -0.166548227075339340, -0.166498925201684130, -0.166449622911781610, +-0.166400320205754150, -0.166351017083726770, -0.166301713545821850, -0.166252409592162640, -0.166203105222872430, -0.166153800438074430, -0.166104495237891950, -0.166055189622448220, +-0.166005883591865630, -0.165956577146269210, -0.165907270285781370, -0.165857963010525330, -0.165808655320624390, -0.165759347216201810, -0.165710038697380880, -0.165660729764283950, +-0.165611420417036080, -0.165562110655759650, -0.165512800480577980, -0.165463489891614270, -0.165414178888991850, -0.165364867472833990, -0.165315555643263950, -0.165266243400404160, +-0.165216930744379630, -0.165167617675312770, -0.165118304193326850, -0.165068990298545190, -0.165019675991091050, -0.164970361271087720, -0.164921046138658490, -0.164871730593925760, +-0.164822414637014610, -0.164773098268047400, -0.164723781487147420, -0.164674464294438020, -0.164625146690042440, -0.164575828674084020, -0.164526510246685990, -0.164477191407970850, +-0.164427872158063560, -0.164378552497086630, -0.164329232425163310, -0.164279911942416900, -0.164230591048970730, -0.164181269744948070, -0.164131948030471350, -0.164082625905665640, +-0.164033303370653360, -0.163983980425557840, -0.163934657070502370, -0.163885333305610230, -0.163836009131004770, -0.163786684546809310, -0.163737359553146220, -0.163688034150140630, +-0.163638708337914970, -0.163589382116592520, -0.163540055486296630, -0.163490728447150570, -0.163441400999277730, -0.163392073142800490, -0.163342744877843950, -0.163293416204530530, +-0.163244087122983580, -0.163194757633326410, -0.163145427735682360, -0.163096097430174720, -0.163046766716926860, -0.162997435596061200, -0.162948104067702800, -0.162898772131974180, +-0.162849439788998600, -0.162800107038899440, -0.162750773881800010, -0.162701440317823630, -0.162652106347092790, -0.162602771969732550, -0.162553437185865370, -0.162504101995614630, +-0.162454766399103610, -0.162405430396455660, -0.162356093987794160, -0.162306757173242420, -0.162257419952922920, -0.162208082326960740, -0.162158744295478360, -0.162109405858599090, +-0.162060067016446320, -0.162010727769143410, -0.161961388116813650, -0.161912048059580430, -0.161862707597566210, -0.161813366730896110, -0.161764025459692570, -0.161714683784078990, +-0.161665341704178680, -0.161615999220115020, -0.161566656332011370, -0.161517313039991090, -0.161467969344176620, -0.161418625244693140, -0.161369280741663070, -0.161319935835209820, +-0.161270590525456700, -0.161221244812527110, -0.161171898696544440, -0.161122552177631110, -0.161073205255912290, -0.161023857931510470, -0.160974510204549000, -0.160925162075151230, +-0.160875813543440580, -0.160826464609540390, -0.160777115273574050, -0.160727765535664040, -0.160678415395935470, -0.160629064854510870, -0.160579713911513630, -0.160530362567067100, +-0.160481010821294650, -0.160431658674319660, -0.160382306126264670, -0.160332953177254790, -0.160283599827412530, -0.160234246076861260, -0.160184891925724380, -0.160135537374125250, +-0.160086182422187310, -0.160036827070033890, -0.159987471317787540, -0.159938115165573380, -0.159888758613513950, -0.159839401661732610, -0.159790044310352760, -0.159740686559497800, +-0.159691328409291120, -0.159641969859855270, -0.159592610911315350, -0.159543251563793900, -0.159493891817414330, -0.159444531672300020, -0.159395171128574400, -0.159345810186360850, +-0.159296448845782760, -0.159247087106962670, -0.159197724970025740, -0.159148362435094500, -0.159098999502292370, -0.159049636171742730, -0.159000272443568990, -0.158950908317894570, +-0.158901543794842890, -0.158852178874536480, -0.158802813557100490, -0.158753447842657460, -0.158704081731330830, -0.158654715223243980, -0.158605348318520330, -0.158555981017283330, +-0.158506613319656380, -0.158457245225761990, -0.158407876735725400, -0.158358507849669090, -0.158309138567716530, -0.158259768889991130, -0.158210398816616280, -0.158161028347715450, +-0.158111657483411160, -0.158062286223828620, -0.158012914569090360, -0.157963542519319820, -0.157914170074640430, -0.157864797235175570, -0.157815424001048750, -0.157766050372383390, +-0.157716676349302000, -0.157667301931929790, -0.157617927120389360, -0.157568551914804070, -0.157519176315297410, -0.157469800321992810, -0.157420423935013740, -0.157371047154482720, +-0.157321669980524940, -0.157272292413262990, -0.157222914452820330, -0.157173536099320360, -0.157124157352886540, -0.157074778213642350, -0.157025398681711230, -0.156976018757215700, +-0.156926638440281010, -0.156877257731029730, -0.156827876629585310, -0.156778495136071200, -0.156729113250610840, -0.156679730973327710, -0.156630348304344360, -0.156580965243786040, +-0.156531581791775290, -0.156482197948435570, -0.156432813713890400, -0.156383429088263170, -0.156334044071677340, -0.156284658664256420, -0.156235272866122990, -0.156185886677402240, +-0.156136500098216810, -0.156087113128690090, -0.156037725768945590, -0.155988338019106780, -0.155938949879297130, -0.155889561349640100, -0.155840172430258300, -0.155790783121276950, +-0.155741393422818620, -0.155692003335006820, -0.155642612857965020, -0.155593221991816660, -0.155543830736685260, -0.155494439092693420, -0.155445047059966340, -0.155395654638626670, +-0.155346261828797850, -0.155296868630603350, -0.155247475044166690, -0.155198081069611360, -0.155148686707060830, -0.155099291956637690, -0.155049896818467200, -0.155000501292671980, +-0.154951105379375480, -0.154901709078701240, -0.154852312390772740, -0.154802915315713410, -0.154753517853646830, -0.154704120004695580, -0.154654721768984900, -0.154605323146637410, +-0.154555924137776610, -0.154506524742526020, -0.154457124961009080, -0.154407724793349350, -0.154358324239669440, -0.154308923300094600, -0.154259521974747430, -0.154210120263751470, +-0.154160718167230200, -0.154111315685307140, -0.154061912818105800, -0.154012509565749660, -0.153963105928361380, -0.153913701906066210, -0.153864297498986780, -0.153814892707246630, +-0.153765487530969220, -0.153716081970278080, -0.153666676025296770, -0.153617269696147890, -0.153567862982956690, -0.153518455885845840, -0.153469048404938860, -0.153419640540359250, +-0.153370232292230540, -0.153320823660676260, -0.153271414645819920, -0.153222005247784150, -0.153172595466694260, -0.153123185302672880, -0.153073774755843520, -0.153024363826329750, +-0.152974952514255050, -0.152925540819742970, -0.152876128742917030, -0.152826716283899900, -0.152777303442816870, -0.152727890219790580, -0.152678476614944550, -0.152629062628402340, +-0.152579648260287470, -0.152530233510723480, -0.152480818379833020, -0.152431402867741400, -0.152381986974571280, -0.152332570700446170, -0.152283154045489640, -0.152233737009825230, +-0.152184319593576510, -0.152134901796866950, -0.152085483619819270, -0.152036065062558760, -0.151986646125208070, -0.151937226807890790, -0.151887807110730440, -0.151838387033850550, +-0.151788966577374700, -0.151739545741426450, -0.151690124526128460, -0.151640702931606000, -0.151591280957981830, -0.151541858605379410, -0.151492435873922390, -0.151443012763734260, +-0.151393589274938590, -0.151344165407658080, -0.151294741162018020, -0.151245316538141130, -0.151195891536150930, -0.151146466156171030, -0.151097040398324920, -0.151047614262736250, +-0.150998187749528530, -0.150948760858824440, -0.150899333590749360, -0.150849905945425910, -0.150800477922977740, -0.150751049523528330, -0.150701620747201340, -0.150652191594120270, +-0.150602762064407840, -0.150553332158189390, -0.150503901875587630, -0.150454471216726090, -0.150405040181728370, -0.150355608770718070, -0.150306176983818730, -0.150256744821153950, +-0.150207312282846450, -0.150157879369021530, -0.150108446079801920, -0.150059012415311170, -0.150009578375672910, -0.149960143961010710, -0.149910709171448140, -0.149861274007108800, +-0.149811838468115380, -0.149762402554593280, -0.149712966266665140, -0.149663529604454610, -0.149614092568085220, -0.149564655157680640, -0.149515217373364400, -0.149465779215259250, +-0.149416340683490520, -0.149366901778180930, -0.149317462499454100, -0.149268022847433600, -0.149218582822243070, -0.149169142424006060, -0.149119701652846190, -0.149070260508886190, +-0.149020818992251450, -0.148971377103064630, -0.148921934841449360, -0.148872492207529270, -0.148823049201427940, -0.148773605823269010, -0.148724162073176040, -0.148674717951271800, +-0.148625273457681640, -0.148575828592528300, -0.148526383355935380, -0.148476937748026510, -0.148427491768925310, -0.148378045418755350, -0.148328598697639400, -0.148279151605702850, +-0.148229704143068410, -0.148180256309859730, -0.148130808106200380, -0.148081359532214020, -0.148031910588024260, -0.147982461273754720, -0.147933011589528180, -0.147883561535469940, +-0.147834111111702830, -0.147784660318350440, -0.147735209155536400, -0.147685757623384320, -0.147636305722017860, -0.147586853451559750, -0.147537400812135400, -0.147487947803867540, +-0.147438494426879780, -0.147389040681295820, -0.147339586567239250, -0.147290132084833710, -0.147240677234202870, -0.147191222015469410, -0.147141766428758810, -0.147092310474193770, +-0.147042854151897970, -0.146993397461995020, -0.146943940404608590, -0.146894482979862300, -0.146845025187879810, -0.146795567028783880, -0.146746108502699900, -0.146696649609750650, +-0.146647190350059770, -0.146597730723750930, -0.146548270730947760, -0.146498810371773920, -0.146449349646352170, -0.146399888554807900, -0.146350427097263950, -0.146300965273843900, +-0.146251503084671440, -0.146202040529870240, -0.146152577609563930, -0.146103114323876180, -0.146053650672929770, -0.146004186656850110, -0.145954722275759950, -0.145905257529783030, +-0.145855792419042950, -0.145806326943663380, -0.145756861103768010, -0.145707394899480480, -0.145657928330923560, -0.145608461398222730, -0.145558994101500750, -0.145509526440881250, +-0.145460058416487960, -0.145410590028444530, -0.145361121276874620, -0.145311652161901010, -0.145262182683649150, -0.145212712842241850, -0.145163242637802750, -0.145113772070455560, +-0.145064301140323950, -0.145014829847531560, -0.144965358192202100, -0.144915886174458390, -0.144866413794425830, -0.144816941052227230, -0.144767467947986280, -0.144717994481826650, +-0.144668520653872030, -0.144619046464246140, -0.144569571913071740, -0.144520097000474270, -0.144470621726576600, -0.144421146091502330, -0.144371670095375220, -0.144322193738318920, +-0.144272717020457160, -0.144223239941913580, -0.144173762502811050, -0.144124284703274960, -0.144074806543428190, -0.144025328023394380, -0.143975849143297250, -0.143926369903260520, +-0.143876890303407860, -0.143827410343862950, -0.143777930024748650, -0.143728449346190420, -0.143678968308311030, -0.143629486911234260, -0.143580005155083760, -0.143530523039983230, +-0.143481040566056400, -0.143431557733426080, -0.143382074542217770, -0.143332590992554270, -0.143283107084559270, -0.143233622818356530, -0.143184138194069720, -0.143134653211822560, +-0.143085167871738780, -0.143035682173941190, -0.142986196118555260, -0.142936709705703880, -0.142887222935510680, -0.142837735808099440, -0.142788248323593880, -0.142738760482117670, +-0.142689272283794580, -0.142639783728747440, -0.142590294817101700, -0.142540805548980220, -0.142491315924506730, -0.142441825943804940, -0.142392335606998630, -0.142342844914211420, +-0.142293353865566270, -0.142243862461188590, -0.142194370701201250, -0.142144878585728000, -0.142095386114892530, -0.142045893288818610, -0.141996400107629960, -0.141946906571450320, +-0.141897412680402510, -0.141847918434612060, -0.141798423834201800, -0.141748928879295490, -0.141699433570016850, -0.141649937906489640, -0.141600441888837580, -0.141550945517183530, +-0.141501448791653020, -0.141451951712368850, -0.141402454279454830, -0.141352956493034670, -0.141303458353232100, -0.141253959860170920, -0.141204461013974820, -0.141154961814766670, +-0.141105462262672010, -0.141055962357813700, -0.141006462100315480, -0.140956961490301120, -0.140907460527894320, -0.140857959213218890, -0.140808457546398590, -0.140758955527556240, +-0.140709453156817380, -0.140659950434304880, -0.140610447360142500, -0.140560943934454010, -0.140511440157363170, -0.140461936028993730, -0.140412431549468560, -0.140362926718913180, +-0.140313421537450520, -0.140263916005204270, -0.140214410122298240, -0.140164903888856190, -0.140115397305001890, -0.140065890370859090, -0.140016383086550680, -0.139966875452202180, +-0.139917367467936510, -0.139867859133877420, -0.139818350450148680, -0.139768841416874040, -0.139719332034177330, -0.139669822302182280, -0.139620312221011790, -0.139570801790791400, +-0.139521291011644010, -0.139471779883693390, -0.139422268407063320, -0.139372756581877560, -0.139323244408259940, -0.139273731886333320, -0.139224219016223260, -0.139174705798052630, +-0.139125192231945250, -0.139075678318024860, -0.139026164056415300, -0.138976649447240340, -0.138927134490623740, -0.138877619186688420, -0.138828103535559970, -0.138778587537361220, +-0.138729071192216000, -0.138679554500248130, -0.138630037461581370, -0.138580520076339500, -0.138531002344645440, -0.138481484266624770, -0.138431965842400390, -0.138382447072096100, +-0.138332927955835680, -0.138283408493742960, -0.138233888685941690, -0.138184368532555720, -0.138134848033707960, -0.138085327189523930, -0.138035806000126600, -0.137986284465639760, +-0.137936762586187200, -0.137887240361892730, -0.137837717792880150, -0.137788194879272410, -0.137738671621195070, -0.137689148018771050, -0.137639624072124130, -0.137590099781378180, +-0.137540575146656960, -0.137491050168084330, -0.137441524845784060, -0.137391999179879100, -0.137342473170495030, -0.137292946817754750, -0.137243420121782120, -0.137193893082700940, +-0.137144365700635010, -0.137094837975708210, -0.137045309908044280, -0.136995781497766200, -0.136946252744999550, -0.136896723649867270, -0.136847194212493170, -0.136797664433001090, +-0.136748134311514860, -0.136698603848158300, -0.136649073043055210, -0.136599541896328560, -0.136550010408103940, -0.136500478578504280, -0.136450946407653460, -0.136401413895675230, +-0.136351881042693500, -0.136302347848832050, -0.136252814314213850, -0.136203280438964510, -0.136153746223206950, -0.136104211667065020, -0.136054676770662570, -0.136005141534123440, +-0.135955605957571450, -0.135906070041130450, -0.135856533784923380, -0.135806997189075850, -0.135757460253710850, -0.135707922978952210, -0.135658385364923720, -0.135608847411749310, +-0.135559309119552750, -0.135509770488457050, -0.135460231518587800, -0.135410692210067960, -0.135361152563021420, -0.135311612577571960, -0.135262072253843510, -0.135212531591959840, +-0.135162990592044870, -0.135113449254221530, -0.135063907578615440, -0.135014365565349600, -0.134964823214547840, -0.134915280526334030, -0.134865737500832000, -0.134816194138165650, +-0.134766650438457920, -0.134717106401834430, -0.134667562028418200, -0.134618017318333030, -0.134568472271702850, -0.134518926888651500, -0.134469381169302790, -0.134419835113780670, +-0.134370288722208050, -0.134320741994710590, -0.134271194931411290, -0.134221647532433990, -0.134172099797902590, -0.134122551727940940, -0.134073003322672880, -0.134023454582222340, +-0.133973905506712290, -0.133924356096268320, -0.133874806351013480, -0.133825256271071640, -0.133775705856566650, -0.133726155107622370, -0.133676604024362740, -0.133627052606911570, +-0.133577500855391910, -0.133527948769929380, -0.133478396350646960, -0.133428843597668540, -0.133379290511118050, -0.133329737091119310, -0.133280183337796230, -0.133230629251271800, +-0.133181074831671690, -0.133131520079118880, -0.133081964993737280, -0.133032409575650770, -0.132982853824983230, -0.132933297741858580, -0.132883741326400660, -0.132834184578732500, +-0.132784627498979790, -0.132735070087265480, -0.132685512343713510, -0.132635954268447760, -0.132586395861592130, -0.132536837123270500, -0.132487278053605880, -0.132437718652723970, +-0.132388158920747760, -0.132338598857801140, -0.132289038464008020, -0.132239477739492320, -0.132189916684377930, -0.132140355298788730, -0.132090793582847780, -0.132041231536680710, +-0.131991669160410580, -0.131942106454161270, -0.131892543418056700, -0.131842980052220750, -0.131793416356777350, -0.131743852331849540, -0.131694287977563000, -0.131644723294040730, +-0.131595158281406640, -0.131545592939784660, -0.131496027269298680, -0.131446461270072650, -0.131396894942230450, -0.131347328285895150, -0.131297761301192420, -0.131248193988245250, +-0.131198626347177630, -0.131149058378113440, -0.131099490081176580, -0.131049921456491030, -0.131000352504180660, -0.130950783224368510, -0.130901213617180300, -0.130851643682739050, +-0.130802073421168700, -0.130752502832593150, -0.130702931917136360, -0.130653360674922230, -0.130603789106074700, -0.130554217210716830, -0.130504644988974290, -0.130455072440970130, +-0.130405499566828290, -0.130355926366672700, -0.130306352840627300, -0.130256778988816020, -0.130207204811361920, -0.130157630308390670, -0.130108055480025350, -0.130058480326389890, +-0.130008904847608240, -0.129959329043804310, -0.129909752915102070, -0.129860176461625450, -0.129810599683497510, -0.129761022580843930, -0.129711445153787820, -0.129661867402453080, +-0.129612289326963700, -0.129562710927443560, -0.129513132204016670, -0.129463553156806050, -0.129413973785937410, -0.129364394091533890, -0.129314814073719340, -0.129265233732617780, +-0.129215653068353110, -0.129166072081049330, -0.129116490770830370, -0.129066909137819290, -0.129017327182141820, -0.128967744903921040, -0.128918162303280880, -0.128868579380345320, +-0.128818996135238340, -0.128769412568083830, -0.128719828679004940, -0.128670244468127330, -0.128620659935574140, -0.128571075081469280, -0.128521489905936730, -0.128471904409100470, +-0.128422318591084440, -0.128372732452012610, -0.128323145992008090, -0.128273559211196570, -0.128223972109701130, -0.128174384687645780, -0.128124796945154470, -0.128075208882351160, +-0.128025620499359840, -0.127976031796304480, -0.127926442773308140, -0.127876853430496570, -0.127827263767992890, -0.127777673785921030, -0.127728083484404980, -0.127678492863568720, +-0.127628901923536240, -0.127579310664431510, -0.127529719086377610, -0.127480127189500300, -0.127430534973922680, -0.127380942439768720, -0.127331349587162380, -0.127281756416227710, +-0.127232162927088610, -0.127182569119868250, -0.127132974994692340, -0.127083380551683970, -0.127033785790967160, -0.126984190712665900, -0.126934595316904150, -0.126884999603805920, +-0.126835403573495180, -0.126785807226095060, -0.126736210561731290, -0.126686613580527020, -0.126637016282606210, -0.126587418668092840, -0.126537820737110920, -0.126488222489784470, +-0.126438623926236560, -0.126389025046593000, -0.126339425850976850, -0.126289826339512160, -0.126240226512322890, -0.126190626369533040, -0.126141025911266660, -0.126091425137647680, +-0.126041824048799270, -0.125992222644847190, -0.125942620925914540, -0.125893018892125340, -0.125843416543603620, -0.125793813880473340, -0.125744210902858510, -0.125694607610882280, +-0.125645004004670410, -0.125595400084346030, -0.125545795850033170, -0.125496191301855800, -0.125446586439937950, -0.125396981264403630, -0.125347375775376880, -0.125297769972980780, +-0.125248163857341170, -0.125198557428581130, -0.125148950686824690, -0.125099343632195910, -0.125049736264818720, -0.125000128584817210, -0.124950520592315400, -0.124900912287436380, +-0.124851303670305970, -0.124801694741047310, -0.124752085499784410, -0.124702475946641290, -0.124652866081741980, -0.124603255905210500, -0.124553645417170000, -0.124504034617746270, +-0.124454423507062470, -0.124404812085242590, -0.124355200352410680, -0.124305588308690790, -0.124255975954206910, -0.124206363289083090, -0.124156750313442490, -0.124107137027410900, +-0.124057523431111450, -0.124007909524668210, -0.123958295308205180, -0.123908680781846430, -0.123859065945715950, -0.123809450799937830, -0.123759835344635190, -0.123710219579933850, +-0.123660603505956960, -0.123610987122828560, -0.123561370430672700, -0.123511753429613400, -0.123462136119774720, -0.123412518501279820, -0.123362900574254500, -0.123313282338821940, +-0.123263663795106170, -0.123214044943231240, -0.123164425783321190, -0.123114806315500090, -0.123065186539891970, -0.123015566456620000, -0.122965946065809990, -0.122916325367585120, +-0.122866704362069440, -0.122817083049386990, -0.122767461429661840, -0.122717839503018040, -0.122668217269578740, -0.122618594729469800, -0.122568971882814360, -0.122519348729736510, +-0.122469725270360260, -0.122420101504809710, -0.122370477433208920, -0.122320853055681920, -0.122271228372351910, -0.122221603383344720, -0.122171978088783490, -0.122122352488792340, +-0.122072726583495310, -0.122023100373016460, -0.121973473857479860, -0.121923847037009580, -0.121874219911728800, -0.121824592481763330, -0.121774964747236400, -0.121725336708272060, +-0.121675708364994380, -0.121626079717527410, -0.121576450765995260, -0.121526821510521090, -0.121477191951230750, -0.121427562088247430, -0.121377931921695200, -0.121328301451698150, +-0.121278670678380340, -0.121229039601865860, -0.121179408222278780, -0.121129776539742300, -0.121080144554382250, -0.121030512266321850, -0.120980879675685160, -0.120931246782596270, +-0.120881613587179280, -0.120831980089558240, -0.120782346289857250, -0.120732712188199520, -0.120683077784710880, -0.120633443079514550, -0.120583808072734620, -0.120534172764495170, +-0.120484537154920290, -0.120434901244134060, -0.120385265032259690, -0.120335628519423050, -0.120285991705747330, -0.120236354591356630, -0.120186717176375050, -0.120137079460926680, +-0.120087441445135600, -0.120037803129125930, -0.119988164513020860, -0.119938525596946260, -0.119888886381025350, -0.119839246865382230, -0.119789607050140990, -0.119739966935425730, +-0.119690326521360550, -0.119640685808068680, -0.119591044795675960, -0.119541403484305640, -0.119491761874081820, -0.119442119965128590, -0.119392477757570060, -0.119342835251530330, +-0.119293192447133520, -0.119243549344502830, -0.119193905943764170, -0.119144262245040720, -0.119094618248456640, -0.119044973954136000, -0.118995329362202930, -0.118945684472781530, +-0.118896039285995930, -0.118846393801969350, -0.118796748020827670, -0.118747101942694100, -0.118697455567692790, -0.118647808895947840, -0.118598161927583360, -0.118548514662723480, +-0.118498867101491430, -0.118449219244013110, -0.118399571090411730, -0.118349922640811410, -0.118300273895336300, -0.118250624854110500, -0.118200975517258140, -0.118151325884903350, +-0.118101675957169350, -0.118052025734182040, -0.118002375216064670, -0.117952724402941370, -0.117903073294936250, -0.117853421892173450, -0.117803770194777100, -0.117754118202871310, +-0.117704465916579350, -0.117654813336027110, -0.117605160461337840, -0.117555507292635660, -0.117505853830044720, -0.117456200073689130, -0.117406546023693060, -0.117356891680179740, +-0.117307237043275060, -0.117257582113102300, -0.117207926889785580, -0.117158271373449040, -0.117108615564216830, -0.117058959462213060, -0.117009303067561910, -0.116959646380386630, +-0.116909989400813100, -0.116860332128964600, -0.116810674564965260, -0.116761016708939250, -0.116711358561010680, -0.116661700121303740, -0.116612041389941650, -0.116562382367050340, +-0.116512723052753080, -0.116463063447174000, -0.116413403550437280, -0.116363743362667030, -0.116314082883987440, -0.116264422114522630, -0.116214761054395890, -0.116165099703733120, +-0.116115438062657620, -0.116065776131293500, -0.116016113909764960, -0.115966451398196130, -0.115916788596711170, -0.115867125505434240, -0.115817462124488610, -0.115767798454000200, +-0.115718134494092310, -0.115668470244889080, -0.115618805706514670, -0.115569140879093240, -0.115519475762748970, -0.115469810357605120, -0.115420144663787640, -0.115370478681419780, +-0.115320812410625740, -0.115271145851529660, -0.115221479004255710, -0.115171811868928070, -0.115122144445670900, -0.115072476734607480, -0.115022808735863760, -0.114973140449563010, +-0.114923471875829420, -0.114873803014787140, -0.114824133866560360, -0.114774464431273250, -0.114724794709049960, -0.114675124700013810, -0.114625454404290730, -0.114575783822004020, +-0.114526112953277840, -0.114476441798236390, -0.114426770357003830, -0.114377098629704340, -0.114327426616461230, -0.114277754317400430, -0.114228081732645250, -0.114178408862319860, +-0.114128735706548450, -0.114079062265455190, -0.114029388539164290, -0.113979714527799910, -0.113930040231485370, -0.113880365650346610, -0.113830690784506930, -0.113781015634090530, +-0.113731340199221580, -0.113681664480024290, -0.113631988476622830, -0.113582312189140530, -0.113532635617703310, -0.113482958762434510, -0.113433281623458320, -0.113383604200898940, +-0.113333926494880530, -0.113284248505527300, -0.113234570232963460, -0.113184891677312300, -0.113135212838699800, -0.113085533717249280, -0.113035854313084910, -0.112986174626330910, +-0.112936494657111470, -0.112886814405550790, -0.112837133871773090, -0.112787453055901650, -0.112737771958062480, -0.112688090578378880, -0.112638408916975030, -0.112588726973975180, +-0.112539044749503510, -0.112489362243684220, -0.112439679456640660, -0.112389996388498770, -0.112340313039381880, -0.112290629409414210, -0.112240945498719980, -0.112191261307423380, +-0.112141576835648630, -0.112091892083519940, -0.112042207051160620, -0.111992521738696680, -0.111942836146251430, -0.111893150273949100, -0.111843464121913890, -0.111793777690270020, +-0.111744090979141700, -0.111694403988653160, -0.111644716718927710, -0.111595029170091370, -0.111545341342267440, -0.111495653235580180, -0.111445964850153780, -0.111396276186112450, +-0.111346587243580440, -0.111296898022681080, -0.111247208523540360, -0.111197518746281630, -0.111147828691029090, -0.111098138357906970, -0.111048447747039520, -0.110998756858550940, +-0.110949065692565480, -0.110899374249206460, -0.110849682528599890, -0.110799990530869110, -0.110750298256138370, -0.110700605704531870, -0.110650912876173860, -0.110601219771188570, +-0.110551526389699340, -0.110501832731832190, -0.110452138797710440, -0.110402444587458360, -0.110352750101200160, -0.110303055339060080, -0.110253360301162380, -0.110203664987631260, +-0.110153969398590110, -0.110104273534164910, -0.110054577394479030, -0.110004880979656700, -0.109955184289822180, -0.109905487325099690, -0.109855790085613480, -0.109806092571487800, +-0.109756394782846000, -0.109706696719814100, -0.109656998382515470, -0.109607299771074320, -0.109557600885614950, -0.109507901726261560, -0.109458202293138410, -0.109408502586368870, +-0.109358802606078970, -0.109309102352392070, -0.109259401825432400, -0.109209701025324220, -0.109159999952191790, -0.109110298606159370, -0.109060596987351200, -0.109010895095890650, +-0.108961192931903760, -0.108911490495513870, -0.108861787786845260, -0.108812084806022180, -0.108762381553168890, -0.108712678028409640, -0.108662974231868710, -0.108613270163669450, +-0.108563565823937900, -0.108513861212797440, -0.108464156330372320, -0.108414451176786820, -0.108364745752165180, -0.108315040056631670, -0.108265334090309700, -0.108215627853325250, +-0.108165921345801750, -0.108116214567863440, -0.108066507519634590, -0.108016800201239480, -0.107967092612802370, -0.107917384754447520, -0.107867676626298330, -0.107817968228480830, +-0.107768259561118410, -0.107718550624335340, -0.107668841418255890, -0.107619131943004350, -0.107569422198704970, -0.107519712185481150, -0.107470001903458940, -0.107420291352761710, +-0.107370580533513770, -0.107320869445839360, -0.107271158089862800, -0.107221446465708330, -0.107171734573500250, -0.107122022413361940, -0.107072309985419470, -0.107022597289796210, +-0.106972884326616470, -0.106923171096004520, -0.106873457598084640, -0.106823743832981110, -0.106774029800818220, -0.106724315501719390, -0.106674600935810630, -0.106624886103215380, +-0.106575171004057920, -0.106525455638462520, -0.106475740006553490, -0.106426024108455100, -0.106376307944290770, -0.106326591514186570, -0.106276874818265880, -0.106227157856653000, +-0.106177440629472220, -0.106127723136847850, -0.106078005378904160, -0.106028287355765470, -0.105978569067555180, -0.105928850514399330, -0.105879131696421370, -0.105829412613745580, +-0.105779693266496260, -0.105729973654797690, -0.105680253778774210, -0.105630533638550090, -0.105580813234248740, -0.105531092565996240, -0.105481371633916020, -0.105431650438132370, +-0.105381928978769590, -0.105332207255951990, -0.105282485269803870, -0.105232763020448660, -0.105183040508012420, -0.105133317732618580, -0.105083594694391440, -0.105033871393455320, +-0.104984147829934520, -0.104934424003953350, -0.104884699915636120, -0.104834975565106250, -0.104785250952489830, -0.104735526077910280, -0.104685800941491940, -0.104636075543359060, +-0.104586349883636020, -0.104536623962447090, -0.104486897779915710, -0.104437171336167990, -0.104387444631327330, -0.104337717665518050, -0.104287990438864500, -0.104238262951490950, +-0.104188535203521750, -0.104138807195081210, -0.104089078926292780, -0.104039350397282530, -0.103989621608173900, -0.103939892559091220, -0.103890163250158800, -0.103840433681500990, +-0.103790703853242090, -0.103740973765506410, -0.103691243418417430, -0.103641512812101220, -0.103591781946681240, -0.103542050822281790, -0.103492319439027220, -0.103442587797041850, +-0.103392855896450020, -0.103343123737375160, -0.103293391319943360, -0.103243658644278090, -0.103193925710503680, -0.103144192518744460, -0.103094459069124750, -0.103044725361768900, +-0.102994991396801220, -0.102945257174345190, -0.102895522694526900, -0.102845787957469810, -0.102796052963298230, -0.102746317712136530, -0.102696582204109040, -0.102646846439340090, +-0.102597110417953150, -0.102547374140074300, -0.102497637605827030, -0.102447900815335650, -0.102398163768724530, -0.102348426466118000, -0.102298688907640410, -0.102248951093416090, +-0.102199213023568510, -0.102149474698223770, -0.102099736117505350, -0.102049997281537600, -0.102000258190444850, -0.101950518844351450, -0.101900779243381760, -0.101851039387660120, +-0.101801299277309990, -0.101751558912457500, -0.101701818293226120, -0.101652077419740190, -0.101602336292124060, -0.101552594910502100, -0.101502853274998650, -0.101453111385737180, +-0.101403369242843820, -0.101353626846442030, -0.101303884196656170, -0.101254141293610610, -0.101204398137429690, -0.101154654728237790, -0.101104911066159240, -0.101055167151317530, +-0.101005422983838790, -0.100955678563846480, -0.100905933891464970, -0.100856188966818650, -0.100806443790031840, -0.100756698361228930, -0.100706952680533380, -0.100657206748071340, +-0.100607460563966290, -0.100557714128342570, -0.100507967441324580, -0.100458220503036650, -0.100408473313603200, -0.100358725873148550, -0.100308978181796200, -0.100259230239672290, +-0.100209482046900310, -0.100159733603604610, -0.100109984909909590, -0.100060235965939600, -0.100010486771819030, -0.099960737327672244, -0.099910987633622717, -0.099861237689796614, +-0.099811487496317422, -0.099761737053309499, -0.099711986360897231, -0.099662235419205006, -0.099612484228357195, -0.099562732788477284, -0.099512981099691436, -0.099463229162123121, +-0.099413476975896739, -0.099363724541136664, -0.099313971857967281, -0.099264218926512965, -0.099214465746898101, -0.099164712319246187, -0.099114958643683387, -0.099065204720333172, +-0.099015450549319955, -0.098965696130768124, -0.098915941464802037, -0.098866186551546095, -0.098816431391124698, -0.098766675983661331, -0.098716920329282157, -0.098667164428110687, +-0.098617408280271310, -0.098567651885888397, -0.098517895245086362, -0.098468138357989593, -0.098418381224721602, -0.098368623845408523, -0.098318866220173898, -0.098269108349142098, +-0.098219350232437538, -0.098169591870184592, -0.098119833262507672, -0.098070074409531166, -0.098020315311378586, -0.097970555968176110, -0.097920796380047248, -0.097871036547116388, +-0.097821276469507931, -0.097771516147346291, -0.097721755580755867, -0.097671994769860160, -0.097622233714785345, -0.097572472415654962, -0.097522710872593385, -0.097472949085725027, +-0.097423187055174304, -0.097373424781065615, -0.097323662263523361, -0.097273899502671082, -0.097224136498634914, -0.097174373251538423, -0.097124609761505984, -0.097074846028662037, +-0.097025082053130970, -0.096975317835037184, -0.096925553374505119, -0.096875788671658289, -0.096826023726622856, -0.096776258539522375, -0.096726493110481246, -0.096676727439623883, +-0.096626961527074701, -0.096577195372958113, -0.096527428977397647, -0.096477662340519507, -0.096427895462447205, -0.096378128343305169, -0.096328360983217801, -0.096278593382309541, +-0.096228825540704790, -0.096179057458527978, -0.096129289135902643, -0.096079520572954963, -0.096029751769808491, -0.095979982726587629, -0.095930213443416817, -0.095880443920420458, +-0.095830674157723006, -0.095780904155448862, -0.095731133913721581, -0.095681363432667338, -0.095631592712409688, -0.095581821753073060, -0.095532050554781880, -0.095482279117660565, +-0.095432507441833556, -0.095382735527424392, -0.095332963374559279, -0.095283190983361757, -0.095233418353956253, -0.095183645486467211, -0.095133872381019058, -0.095084099037736208, +-0.095034325456743118, -0.094984551638163342, -0.094934777582123056, -0.094885003288745828, -0.094835228758156101, -0.094785453990478288, -0.094735678985836846, -0.094685903744356217, +-0.094636128266159941, -0.094586352551374223, -0.094536576600122615, -0.094486800412529576, -0.094437023988719532, -0.094387247328816939, -0.094337470432946213, -0.094287693301231823, +-0.094237915933797309, -0.094188138330768889, -0.094138360492270132, -0.094088582418425465, -0.094038804109359345, -0.093989025565196213, -0.093939246786060512, -0.093889467772076698, +-0.093839688523368339, -0.093789909040061625, -0.093740129322280152, -0.093690349370148363, -0.093640569183790684, -0.093590788763331587, -0.093541008108895526, -0.093491227220606057, +-0.093441446098589398, -0.093391664742969130, -0.093341883153869695, -0.093292101331415550, -0.093242319275731164, -0.093192536986940966, -0.093142754465169439, -0.093092971710540137, +-0.093043188723179279, -0.092993405503210461, -0.092943622050758123, -0.092893838365946738, -0.092844054448900759, -0.092794270299744630, -0.092744485918602834, -0.092694701305598939, +-0.092644916460859178, -0.092595131384507118, -0.092545346076667229, -0.092495560537463981, -0.092445774767021829, -0.092395988765465245, -0.092346202532917795, -0.092296416069505727, +-0.092246629375352621, -0.092196842450582947, -0.092147055295321162, -0.092097267909691735, -0.092047480293819137, -0.091997692447827850, -0.091947904371841443, -0.091898116065986149, +-0.091848327530385576, -0.091798538765164181, -0.091748749770446433, -0.091698960546356817, -0.091649171093019802, -0.091599381410558969, -0.091549591499100580, -0.091499801358768201, +-0.091450010989686317, -0.091400220391979412, -0.091350429565771940, -0.091300638511188414, -0.091250847228353291, -0.091201055717390150, -0.091151263978425268, -0.091101472011582224, +-0.091051679816985490, -0.091001887394759562, -0.090952094745028925, -0.090902301867918034, -0.090852508763551401, -0.090802715432052608, -0.090752921873547915, -0.090703128088160917, +-0.090653334076016098, -0.090603539837237942, -0.090553745371950933, -0.090503950680279555, -0.090454155762347430, -0.090404360618280791, -0.090354565248203261, -0.090304769652239311, +-0.090254973830513438, -0.090205177783150126, -0.090155381510273871, -0.090105585012009173, -0.090055788288479613, -0.090005991339811478, -0.089956194166128350, -0.089906396767554755, +-0.089856599144215163, -0.089806801296234057, -0.089757003223735962, -0.089707204926845363, -0.089657406405685855, -0.089607607660383726, -0.089557808691062571, -0.089508009497846902, +-0.089458210080861203, -0.089408410440229985, -0.089358610576077732, -0.089308810488528081, -0.089259010177707279, -0.089209209643738949, -0.089159408886747601, -0.089109607906857721, +-0.089059806704193833, -0.089010005278880422, -0.088960203631041998, -0.088910401760802185, -0.088860599668287257, -0.088810797353620824, -0.088760994816927397, -0.088711192058331473, +-0.088661389077957578, -0.088611585875930210, -0.088561782452372992, -0.088511978807412212, -0.088462174941171479, -0.088412370853775304, -0.088362566545348201, -0.088312762016014679, +-0.088262957265899264, -0.088213152295126454, -0.088163347103819872, -0.088113541692105807, -0.088063736060107894, -0.088013930207950633, -0.087964124135758548, -0.087914317843656165, +-0.087864511331767967, -0.087814704600218507, -0.087764897649131396, -0.087715090478632921, -0.087665283088846732, -0.087615475479897315, -0.087565667651909221, -0.087515859605006963, +-0.087466051339315051, -0.087416242854957124, -0.087366434152059483, -0.087316625230745751, -0.087266816091140453, -0.087217006733368116, -0.087167197157553264, -0.087117387363820423, +-0.087067577352294104, -0.087017767123097972, -0.086967956676358288, -0.086918146012198730, -0.086868335130743796, -0.086818524032118025, -0.086768712716445942, -0.086718901183852087, +-0.086669089434460972, -0.086619277468396247, -0.086569465285784214, -0.086519652886748524, -0.086469840271413703, -0.086420027439904276, -0.086370214392344782, -0.086320401128859747, +-0.086270587649572822, -0.086220773954610322, -0.086170960044095885, -0.086121145918154049, -0.086071331576909341, -0.086021517020486313, -0.085971702249009491, -0.085921887262603414, +-0.085872072061391733, -0.085822256645500750, -0.085772441015054129, -0.085722625170176411, -0.085672809110992121, -0.085622992837625811, -0.085573176350202021, -0.085523359648844402, +-0.085473542733679284, -0.085423725604830289, -0.085373908262421999, -0.085324090706578926, -0.085274272937425621, -0.085224454955086640, -0.085174636759686520, -0.085124818351348927, +-0.085074999730200176, -0.085025180896363919, -0.084975361849964723, -0.084925542591127098, -0.084875723119975641, -0.084825903436634861, -0.084776083541229327, -0.084726263433882704, +-0.084676443114721306, -0.084626622583868785, -0.084576801841449722, -0.084526980887588657, -0.084477159722410128, -0.084427338346038716, -0.084377516758598059, -0.084327694960214500, +-0.084277872951011704, -0.084228050731114223, -0.084178228300646626, -0.084128405659733438, -0.084078582808499253, -0.084028759747068610, -0.083978936475565175, -0.083929112994115290, +-0.083879289302842622, -0.083829465401871722, -0.083779641291327173, -0.083729816971333512, -0.083679992442015308, -0.083630167703497127, -0.083580342755902634, -0.083530517599358173, +-0.083480692233987422, -0.083430866659914935, -0.083381040877265292, -0.083331214886163033, -0.083281388686732738, -0.083231562279098101, -0.083181735663385423, -0.083131908839718424, +-0.083082081808221644, -0.083032254569019665, -0.082982427122237037, -0.082932599467998358, -0.082882771606428166, -0.082832943537650167, -0.082783115261790691, -0.082733286778973431, +-0.082683458089322953, -0.082633629192963826, -0.082583800090020629, -0.082533970780617943, -0.082484141264879435, -0.082434311542931446, -0.082384481614897698, -0.082334651480902743, +-0.082284821141071149, -0.082234990595527510, -0.082185159844396394, -0.082135328887802367, -0.082085497725869150, -0.082035666358723058, -0.081985834786487813, -0.081936003009287980, +-0.081886171027248142, -0.081836338840492864, -0.081786506449146743, -0.081736673853334357, -0.081686841053179401, -0.081637008048808232, -0.081587174840344542, -0.081537341427912913, +-0.081487507811637938, -0.081437673991644186, -0.081387839968056250, -0.081338005740997824, -0.081288171310595264, -0.081238336676972292, -0.081188501840253474, -0.081138666800563392, +-0.081088831558026653, -0.081038996112767839, -0.080989160464911517, -0.080939324614581420, -0.080889488561903894, -0.080839652307002657, -0.080789815850002278, -0.080739979191027364, +-0.080690142330202497, -0.080640305267652285, -0.080590468003501295, -0.080540630537873262, -0.080490792870894529, -0.080440955002688816, -0.080391116933380719, -0.080341278663094831, +-0.080291440191955749, -0.080241601520088052, -0.080191762647615475, -0.080141923574664375, -0.080092084301358474, -0.080042244827822351, -0.079992405154180629, -0.079942565280557876, +-0.079892725207078727, -0.079842884933867764, -0.079793044461048693, -0.079743203788747899, -0.079693362917089103, -0.079643521846196885, -0.079593680576195869, -0.079543839107210662, +-0.079493997439365846, -0.079444155572785155, -0.079394313507594960, -0.079344471243918982, -0.079294628781881829, -0.079244786121608096, -0.079194943263222406, -0.079145100206849353, +-0.079095256952613546, -0.079045413500638720, -0.078995569851051245, -0.078945726003974842, -0.078895881959534120, -0.078846037717853701, -0.078796193279058180, -0.078746348643272179, +-0.078696503810620308, -0.078646658781226286, -0.078596813555216513, -0.078546968132714695, -0.078497122513845469, -0.078447276698733429, -0.078397430687503197, -0.078347584480279384, +-0.078297738077185736, -0.078247891478348625, -0.078198044683891785, -0.078148197693939825, -0.078098350508617381, -0.078048503128049049, -0.077998655552359478, -0.077948807781673249, +-0.077898959816114124, -0.077849111655808489, -0.077799263300880064, -0.077749414751453486, -0.077699566007653376, -0.077649717069604343, -0.077599867937431025, -0.077550018611258043, +-0.077500169091209117, -0.077450319377410648, -0.077400469469986397, -0.077350619369060958, -0.077300769074758982, -0.077250918587205078, -0.077201067906523882, -0.077151217032839128, +-0.077101365966277216, -0.077051514706961879, -0.077001663255017769, -0.076951811610569493, -0.076901959773741702, -0.076852107744658990, -0.076802255523446022, -0.076752403110226533, +-0.076702550505126921, -0.076652697708270920, -0.076602844719783181, -0.076552991539788340, -0.076503138168411006, -0.076453284605775843, -0.076403430852006571, -0.076353576907229603, +-0.076303722771568702, -0.076253868445148490, -0.076204013928093617, -0.076154159220528692, -0.076104304322578378, -0.076054449234367313, -0.076004593956019231, -0.075954738487660545, +-0.075904882829415016, -0.075855026981407281, -0.075805170943761976, -0.075755314716603739, -0.075705458300057232, -0.075655601694247065, -0.075605744899297014, -0.075555887915333478, +-0.075506030742480232, -0.075456173380861899, -0.075406315830603143, -0.075356458091828601, -0.075306600164662910, -0.075256742049229816, -0.075206883745655775, -0.075157025254064508, +-0.075107166574580692, -0.075057307707328949, -0.075007448652433945, -0.074957589410020314, -0.074907729980212709, -0.074857870363134904, -0.074808010558913299, -0.074758150567671669, +-0.074708290389534665, -0.074658430024626923, -0.074608569473073122, -0.074558708734997883, -0.074508847810524997, -0.074458986699780877, -0.074409125402889284, -0.074359263919974883, +-0.074309402251162324, -0.074259540396576257, -0.074209678356341346, -0.074159816130582229, -0.074109953719422680, -0.074060091122989141, -0.074010228341405374, -0.073960365374796042, +-0.073910502223285796, -0.073860638886999286, -0.073810775366061177, -0.073760911660596132, -0.073711047770727928, -0.073661183696582991, -0.073611319438285083, -0.073561454995958897, +-0.073511590369729055, -0.073461725559720248, -0.073411860566057113, -0.073361995388863455, -0.073312130028265685, -0.073262264484387593, -0.073212398757353844, -0.073162532847289102, +-0.073112666754318018, -0.073062800478565268, -0.073012934020155518, -0.072963067379212557, -0.072913200555862798, -0.072863333550230044, -0.072813466362438961, -0.072763598992614212, +-0.072713731440880461, -0.072663863707362372, -0.072613995792183750, -0.072564127695471034, -0.072514259417347987, -0.072464390957939287, -0.072414522317369612, -0.072364653495763639, +-0.072314784493246020, -0.072264915309941447, -0.072215045945973694, -0.072165176401469230, -0.072115306676551805, -0.072065436771346122, -0.072015566685976848, -0.071965696420568659, +-0.071915825975246220, -0.071865955350134222, -0.071816084545356443, -0.071766213561039349, -0.071716342397306718, -0.071666471054283226, -0.071616599532093567, -0.071566727830862403, +-0.071516855950714414, -0.071466983891773403, -0.071417111654165824, -0.071367239238015454, -0.071317366643446997, -0.071267493870585119, -0.071217620919554511, -0.071167747790479852, +-0.071117874483485818, -0.071068000998696201, -0.071018127336237483, -0.070968253496233438, -0.070918379478808774, -0.070868505284088154, -0.070818630912196256, -0.070768756363257801, +-0.070718881637397438, -0.070669006734738998, -0.070619131655408923, -0.070569256399531016, -0.070519380967229969, -0.070469505358630474, -0.070419629573857223, -0.070369753613034880, +-0.070319877476287276, -0.070270001163740867, -0.070220124675519455, -0.070170248011747718, -0.070120371172550378, -0.070070494158052096, -0.070020616968377594, -0.069970739603651536, +-0.069920862063997752, -0.069870984349542697, -0.069821106460410176, -0.069771228396724894, -0.069721350158611542, -0.069671471746194813, -0.069621593159599399, -0.069571714398949117, +-0.069521835464370449, -0.069471956355987172, -0.069422077073924018, -0.069372197618305667, -0.069322317989256824, -0.069272438186902180, -0.069222558211366456, -0.069172678062773441, +-0.069122797741249617, -0.069072917246918789, -0.069023036579905675, -0.068973155740334968, -0.068923274728331374, -0.068873393544019598, -0.068823512187524333, -0.068773630658969409, +-0.068723748958481282, -0.068673867086183796, -0.068623985042201630, -0.068574102826659503, -0.068524220439682121, -0.068474337881394190, -0.068424455151919528, -0.068374572251384616, +-0.068324689179913273, -0.068274805937630204, -0.068224922524660128, -0.068175038941127739, -0.068125155187157754, -0.068075271262874881, -0.068025387168402937, -0.067975502903868418, +-0.067925618469395141, -0.067875733865107812, -0.067825849091131152, -0.067775964147589879, -0.067726079034608686, -0.067676193752312291, -0.067626308300824542, -0.067576422680271891, +-0.067526536890778199, -0.067476650932468157, -0.067426764805466485, -0.067376878509897903, -0.067326992045887130, -0.067277105413557983, -0.067227218613036960, -0.067177331644447891, +-0.067127444507915496, -0.067077557203564481, -0.067027669731519579, -0.066977782091905511, -0.066927894284846981, -0.066878006310467822, -0.066828118168894543, -0.066778229860250962, +-0.066728341384661813, -0.066678452742251801, -0.066628563933145674, -0.066578674957468123, -0.066528785815342995, -0.066478896506896798, -0.066429007032253365, -0.066379117391537401, +-0.066329227584873654, -0.066279337612386829, -0.066229447474201661, -0.066179557170442882, -0.066129666701234324, -0.066079776066702484, -0.066029885266971192, -0.065979994302165196, +-0.065930103172409216, -0.065880211877827985, -0.065830320418546209, -0.065780428794688636, -0.065730537006379111, -0.065680645053744130, -0.065630752936907524, -0.065580860655994055, +-0.065530968211128415, -0.065481075602435365, -0.065431182830039625, -0.065381289894065039, -0.065331396794638119, -0.065281503531882709, -0.065231610105923529, -0.065181716516885341, +-0.065131822764892849, -0.065081928850070803, -0.065032034772543934, -0.064982140532436089, -0.064932246129873777, -0.064882351564980859, -0.064832456837882066, -0.064782561948702119, +-0.064732666897565766, -0.064682771684597754, -0.064632876309922815, -0.064582980773664783, -0.064533085075950208, -0.064483189216902909, -0.064433293196647631, -0.064383397015309124, +-0.064333500673012134, -0.064283604169881381, -0.064233707506040738, -0.064183810681616701, -0.064133913696733144, -0.064084016551514814, -0.064034119246086429, -0.063984221780572753, +-0.063934324155098518, -0.063884426369788472, -0.063834528424766473, -0.063784630320159047, -0.063734732056090038, -0.063684833632684207, -0.063634935050066274, -0.063585036308361029, +-0.063535137407693176, -0.063485238348186590, -0.063435339129967808, -0.063385439753160674, -0.063335540217889938, -0.063285640524280345, -0.063235740672456658, -0.063185840662543624, +-0.063135940494665976, -0.063086040168947602, -0.063036139685515011, -0.062986239044492076, -0.062936338246003531, -0.062886437290174152, -0.062836536177128671, -0.062786634906991851, +-0.062736733479888451, -0.062686831895942319, -0.062636930155280005, -0.062587028258025354, -0.062537126204303142, -0.062487223994238117, -0.062437321627955025, -0.062387419105578629, +-0.062337516427232800, -0.062287613593044071, -0.062237710603136306, -0.062187807457634262, -0.062137904156662697, -0.062088000700346375, -0.062038097088810050, -0.061988193322178489, +-0.061938289400575552, -0.061888385324127777, -0.061838481092959037, -0.061788576707194100, -0.061738672166957720, -0.061688767472374659, -0.061638862623569678, -0.061588957620667538, +-0.061539052463792127, -0.061489147153069960, -0.061439241688624933, -0.061389336070581800, -0.061339430299065328, -0.061289524374200273, -0.061239618296111416, -0.061189712064922623, +-0.061139805680760433, -0.061089899143748738, -0.061039992454012287, -0.060990085611675855, -0.060940178616864217, -0.060890271469702120, -0.060840364170314354, -0.060790456718824791, +-0.060740549115359969, -0.060690641360043776, -0.060640733453000979, -0.060590825394356347, -0.060540917184234655, -0.060491008822760664, -0.060441100310058268, -0.060391191646254012, +-0.060341282831471776, -0.060291373865836329, -0.060241464749472444, -0.060191555482504905, -0.060141646065058472, -0.060091736497257929, -0.060041826779227155, -0.059991916911092701, +-0.059942006892978454, -0.059892096725009190, -0.059842186407309685, -0.059792275940004712, -0.059742365323219054, -0.059692454557077473, -0.059642543641703877, -0.059592632577224809, +-0.059542721363764158, -0.059492810001446704, -0.059442898490397224, -0.059392986830740499, -0.059343075022601305, -0.059293163066103535, -0.059243250961373749, -0.059193338708535832, +-0.059143426307714575, -0.059093513759034745, -0.059043601062621132, -0.058993688218598517, -0.058943775227091683, -0.058893862088224523, -0.058843948802123590, -0.058794035368912791, +-0.058744121788716901, -0.058694208061660709, -0.058644294187868998, -0.058594380167466549, -0.058544466000578145, -0.058494551687327694, -0.058444637227841753, -0.058394722622244218, +-0.058344807870659869, -0.058294892973213511, -0.058244977930029911, -0.058195062741233872, -0.058145147406949288, -0.058095231927302725, -0.058045316302418083, -0.057995400532420145, +-0.057945484617433707, -0.057895568557583557, -0.057845652352994485, -0.057795736003791287, -0.057745819510097857, -0.057695902872040773, -0.057645986089743924, -0.057596069163332111, +-0.057546152092930125, -0.057496234878662761, -0.057446317520654808, -0.057396400019030180, -0.057346482373915431, -0.057296564585434480, -0.057246646653712117, -0.057196728578873139, +-0.057146810361042334, -0.057096892000344505, -0.057046973496904449, -0.056997054850846073, -0.056947136062295942, -0.056897217131377978, -0.056847298058216963, -0.056797378842937708, +-0.056747459485665008, -0.056697539986523653, -0.056647620345638451, -0.056597700563133312, -0.056547780639134806, -0.056497860573766857, -0.056447940367154247, -0.056398020019421791, +-0.056348099530694279, -0.056298178901096528, -0.056248258130752432, -0.056198337219788584, -0.056148416168328892, -0.056098494976498159, -0.056048573644421187, -0.055998652172222788, +-0.055948730560027755, -0.055898808807960894, -0.055848886916146125, -0.055798964884710020, -0.055749042713776509, -0.055699120403470394, -0.055649197953916471, -0.055599275365239557, +-0.055549352637564456, -0.055499429771015969, -0.055449506765718019, -0.055399583621797192, -0.055349660339377410, -0.055299736918583475, -0.055249813359540198, -0.055199889662372388, +-0.055149965827204848, -0.055100041854161515, -0.055050117743368959, -0.055000193494951111, -0.054950269109032779, -0.054900344585738767, -0.054850419925193905, -0.054800495127522983, +-0.054750570192850831, -0.054700645121301364, -0.054650719913001168, -0.054600794568074179, -0.054550869086645200, -0.054500943468839047, -0.054451017714780538, -0.054401091824594482, +-0.054351165798404814, -0.054301239636338115, -0.054251313338518313, -0.054201386905070238, -0.054151460336118687, -0.054101533631788490, -0.054051606792204457, -0.054001679817491405, +-0.053951752707773269, -0.053901825463176636, -0.053851898083825442, -0.053801970569844502, -0.053752042921358635, -0.053702115138492663, -0.053652187221371397, -0.053602259170119668, +-0.053552330984861410, -0.053502402665723203, -0.053452474212828990, -0.053402545626303595, -0.053352616906271834, -0.053302688052858531, -0.053252759066188503, -0.053202829946385699, +-0.053152900693576699, -0.053102971307885452, -0.053053041789436775, -0.053003112138355499, -0.052953182354766440, -0.052903252438794422, -0.052853322390564270, -0.052803392210199931, +-0.052753461897828001, -0.052703531453572407, -0.052653600877557993, -0.052603670169909571, -0.052553739330751977, -0.052503808360210034, -0.052453877258408568, -0.052403946025471528, +-0.052354014661525505, -0.052304083166694444, -0.052254151541103182, -0.052204219784876535, -0.052154287898139341, -0.052104355881016425, -0.052054423733631734, -0.052004491456111870, +-0.051954559048580776, -0.051904626511163288, -0.051854693843984230, -0.051804761047168441, -0.051754828120840750, -0.051704895065125982, -0.051654961880148093, -0.051605028566033689, +-0.051555095122906715, -0.051505161550891999, -0.051455227850114381, -0.051405294020698690, -0.051355360062769764, -0.051305425976451553, -0.051255491761870664, -0.051205557419151046, +-0.051155622948417537, -0.051105688349794967, -0.051055753623408182, -0.051005818769382004, -0.050955883787841286, -0.050905948678909969, -0.050856013442714662, -0.050806078079379327, +-0.050756142589028802, -0.050706206971787911, -0.050656271227781512, -0.050606335357134428, -0.050556399359971506, -0.050506463236416700, -0.050456526986596618, -0.050406590610635224, +-0.050356654108657355, -0.050306717480787848, -0.050256780727151548, -0.050206843847873300, -0.050156906843077047, -0.050106969712889422, -0.050057032457434369, -0.050007095076836733, +-0.049957157571221364, -0.049907219940713100, -0.049857282185436780, -0.049807344305517261, -0.049757406301078493, -0.049707468172247096, -0.049657529919147028, -0.049607591541903133, +-0.049557653040640262, -0.049507714415483260, -0.049457775666556972, -0.049407836793986241, -0.049357897797895033, -0.049307958678409966, -0.049258019435655005, -0.049208080069754995, +-0.049158140580834786, -0.049108200969019224, -0.049058261234433159, -0.049008321377200556, -0.048958381397448035, -0.048908441295299560, -0.048858501070879981, -0.048808560724314151, +-0.048758620255726921, -0.048708679665243136, -0.048658738952987654, -0.048608798119084438, -0.048558857163660110, -0.048508916086838647, -0.048458974888744892, -0.048409033569503691, +-0.048359092129239917, -0.048309150568078406, -0.048259208886143136, -0.048209267083560728, -0.048159325160455152, -0.048109383116951260, -0.048059440953173917, -0.048009498669247967, +-0.047959556265298277, -0.047909613741449690, -0.047859671097826184, -0.047809728334554387, -0.047759785451758269, -0.047709842449562681, -0.047659899328092496, -0.047609956087472559, +-0.047560012727827734, -0.047510069249282874, -0.047460125651961955, -0.047410181935991613, -0.047360238101495811, -0.047310294148599413, -0.047260350077427286, -0.047210405888104275, +-0.047160461580755257, -0.047110517155504197, -0.047060572612477723, -0.047010627951799826, -0.046960683173595356, -0.046910738277989181, -0.046860793265106157, -0.046810848135071151, +-0.046760902888009027, -0.046710957524043757, -0.046661012043301982, -0.046611066445907672, -0.046561120731985699, -0.046511174901660922, -0.046461228955058213, -0.046411282892302425, +-0.046361336713517547, -0.046311390418830214, -0.046261444008364405, -0.046211497482244984, -0.046161550840596824, -0.046111604083544783, -0.046061657211213733, -0.046011710223728540, +-0.045961763121213181, -0.045911815903794305, -0.045861868571595889, -0.045811921124742798, -0.045761973563359912, -0.045712025887572089, -0.045662078097504194, -0.045612130193281114, +-0.045562182175026812, -0.045512234042867951, -0.045462285796928500, -0.045412337437333333, -0.045362388964207329, -0.045312440377675345, -0.045262491677862261, -0.045212542864892062, +-0.045162593938891396, -0.045112644899984240, -0.045062695748295481, -0.045012746483949977, -0.044962797107072607, -0.044912847617788243, -0.044862898016221758, -0.044812948302497144, +-0.044762998476741041, -0.044713048539077448, -0.044663098489631237, -0.044613148328527273, -0.044563198055890436, -0.044513247671845613, -0.044463297176517667, -0.044413346570030585, +-0.044363395852511034, -0.044313445024082986, -0.044263494084871326, -0.044213543035000934, -0.044163591874596682, -0.044113640603783449, -0.044063689222685234, -0.044013737731428679, +-0.043963786130137773, -0.043913834418937411, -0.043863882597952458, -0.043813930667307800, -0.043763978627128317, -0.043714026477538886, -0.043664074218663501, -0.043614121850628823, +-0.043564169373558836, -0.043514216787578421, -0.043464264092812468, -0.043414311289385860, -0.043364358377423466, -0.043314405357049293, -0.043264452228389996, -0.043214498991569567, +-0.043164545646712883, -0.043114592193944846, -0.043064638633390322, -0.043014684965174202, -0.042964731189421367, -0.042914777306255820, -0.042864823315804219, -0.042814869218190561, +-0.042764915013539725, -0.042714960701976605, -0.042665006283626079, -0.042615051758613041, -0.042565097127062371, -0.042515142389098072, -0.042465187544846808, -0.042415232594432570, +-0.042365277537980257, -0.042315322375614743, -0.042265367107460927, -0.042215411733643689, -0.042165456254287040, -0.042115500669517636, -0.042065544979459475, -0.042015589184237458, +-0.041965633283976470, -0.041915677278801390, -0.041865721168837126, -0.041815764954208551, -0.041765808635039682, -0.041715852211457176, -0.041665895683585044, -0.041615939051548166, +-0.041565982315471442, -0.041516025475479765, -0.041466068531698028, -0.041416111484251110, -0.041366154333263030, -0.041316197078860452, -0.041266239721167386, -0.041216282260308712, +-0.041166324696409337, -0.041116367029594154, -0.041066409259988050, -0.041016451387715036, -0.040966493412901775, -0.040916535335672286, -0.040866577156151461, -0.040816618874464188, +-0.040766660490735372, -0.040716702005089901, -0.040666743417652682, -0.040616784728547711, -0.040566825937901667, -0.040516867045838553, -0.040466908052483277, -0.040416948957960733, +-0.040366989762395812, -0.040317030465913416, -0.040267071068637562, -0.040217111570694915, -0.040167151972209485, -0.040117192273306179, -0.040067232474109891, -0.040017272574745529, +-0.039967312575337977, -0.039917352476012143, -0.039867392276892046, -0.039817431978104355, -0.039767471579773082, -0.039717511082023128, -0.039667550484979400, -0.039617589788766797, +-0.039567628993510212, -0.039517668099334560, -0.039467707106363853, -0.039417746014724760, -0.039367784824541306, -0.039317823535938386, -0.039267862149040912, -0.039217900663973779, +-0.039167939080861899, -0.039117977399829279, -0.039068015621002608, -0.039018053744505891, -0.038968091770464043, -0.038918129699001963, -0.038868167530244566, -0.038818205264316744, +-0.038768242901343411, -0.038718280441448587, -0.038668317884758940, -0.038618355231398505, -0.038568392481492179, -0.038518429635164872, -0.038468466692541496, -0.038418503653746952, +-0.038368540518905259, -0.038318577288143099, -0.038268613961584499, -0.038218650539354367, -0.038168687021577601, -0.038118723408379122, -0.038068759699883839, -0.038018795896216651, +-0.037968831997501590, -0.037918868003865333, -0.037868903915431906, -0.037818939732326216, -0.037768975454673184, -0.037719011082597710, -0.037669046616224708, -0.037619082055679091, +-0.037569117401084880, -0.037519152652568763, -0.037469187810254767, -0.037419222874267799, -0.037369257844732773, -0.037319292721774602, -0.037269327505518202, -0.037219362196087596, +-0.037169396793609470, -0.037119431298207849, -0.037069465710007653, -0.037019500029133796, -0.036969534255711187, -0.036919568389864738, -0.036869602431719370, -0.036819636381399110, +-0.036769670239030647, -0.036719704004738007, -0.036669737678646112, -0.036619771260879869, -0.036569804751564197, -0.036519838150824012, -0.036469871458784234, -0.036419904675568888, +-0.036369937801304673, -0.036319970836115607, -0.036270003780126618, -0.036220036633462613, -0.036170069396248526, -0.036120102068609258, -0.036070134650668849, -0.036020167142553995, +-0.035970199544388723, -0.035920231856297946, -0.035870264078406593, -0.035820296210839583, -0.035770328253721825, -0.035720360207178253, -0.035670392071332893, -0.035620423846312435, +-0.035570455532240919, -0.035520487129243265, -0.035470518637444395, -0.035420550056969230, -0.035370581387942683, -0.035320612630488801, -0.035270643784734275, -0.035220674850803137, +-0.035170705828820314, -0.035120736718910722, -0.035070767521199288, -0.035020798235810939, -0.034970828862870597, -0.034920859402502294, -0.034870889854832728, -0.034820920219985937, +-0.034770950498086844, -0.034720980689260376, -0.034671010793631461, -0.034621040811325013, -0.034571070742465966, -0.034521100587178354, -0.034471130345588873, -0.034421160017821577, +-0.034371189604001373, -0.034321219104253196, -0.034271248518701974, -0.034221277847472628, -0.034171307090689197, -0.034121336248478393, -0.034071365320964248, -0.034021394308271682, +-0.033971423210525639, -0.033921452027851032, -0.033871480760372795, -0.033821509408215857, -0.033771537971504263, -0.033721566450364705, -0.033671594844921236, -0.033621623155298777, +-0.033571651381622263, -0.033521679524016613, -0.033471707582606772, -0.033421735557517658, -0.033371763448873319, -0.033321791256800459, -0.033271818981423118, -0.033221846622866237, +-0.033171874181254730, -0.033121901656713547, -0.033071929049367600, -0.033021956359340951, -0.032971983586760296, -0.032922010731749683, -0.032872037794434039, -0.032822064774938306, +-0.032772091673387412, -0.032722118489906284, -0.032672145224619857, -0.032622171877652185, -0.032572198449129973, -0.032522224939177259, -0.032472251347918986, -0.032422277675480081, +-0.032372303921985486, -0.032322330087560129, -0.032272356172328064, -0.032222382176415987, -0.032172408099947959, -0.032122433943048916, -0.032072459705843784, -0.032022485388457499, +-0.031972510991015002, -0.031922536513641235, -0.031872561956460231, -0.031822587319598715, -0.031772612603180726, -0.031722637807331207, -0.031672662932175091, -0.031622687977837322, +-0.031572712944442832, -0.031522737832116558, -0.031472762640982560, -0.031422787371167535, -0.031372812022795543, -0.031322836595991520, -0.031272861090880406, -0.031222885507587138, +-0.031172909846236659, -0.031122934106953017, -0.031072958289862927, -0.031022982395090441, -0.030973006422760501, -0.030923030372998043, -0.030873054245928008, -0.030823078041675341, +-0.030773101760364976, -0.030723125402120969, -0.030673148967070036, -0.030623172455336231, -0.030573195867044496, -0.030523219202319773, -0.030473242461286999, -0.030423265644071117, +-0.030373288750797076, -0.030323311781588921, -0.030273334736573378, -0.030223357615874497, -0.030173380419617219, -0.030123403147926494, -0.030073425800927259, -0.030023448378744461, +-0.029973470881502151, -0.029923493309327056, -0.029873515662343225, -0.029823537940675604, -0.029773560144449141, -0.029723582273788775, -0.029673604328819457, -0.029623626309666126, +-0.029573648216452839, -0.029523670049306321, -0.029473691808350629, -0.029423713493710708, -0.029373735105511504, -0.029323756643877957, -0.029273778108935024, -0.029223799500806755, +-0.029173820819619875, -0.029123842065498444, -0.029073863238567407, -0.029023884338951714, -0.028973905366776308, -0.028923926322166140, -0.028873947205246157, -0.028823968016140417, +-0.028773988754975645, -0.028724009421875901, -0.028674030016966130, -0.028624050540371287, -0.028574070992216320, -0.028524091372626171, -0.028474111681725797, -0.028424131919639255, +-0.028374152086493271, -0.028324172182411907, -0.028274192207520112, -0.028224212161942836, -0.028174232045805030, -0.028124251859231647, -0.028074271602346743, -0.028024291275277047, +-0.027974310878146627, -0.027924330411080427, -0.027874349874203400, -0.027824369267640502, -0.027774388591516676, -0.027724407845956880, -0.027674427031085178, -0.027624446147028296, +-0.027574465193910300, -0.027524484171856139, -0.027474503080990767, -0.027424521921439141, -0.027374540693326205, -0.027324559396776922, -0.027274578031915350, -0.027224596598868223, +-0.027174615097759602, -0.027124633528714442, -0.027074651891857700, -0.027024670187314331, -0.026974688415209284, -0.026924706575666629, -0.026874724668813094, -0.026824742694772748, +-0.026774760653670546, -0.026724778545631440, -0.026674796370780390, -0.026624814129242350, -0.026574831821142272, -0.026524849446604229, -0.026474867005754948, -0.026424884498718500, +-0.026374901925619840, -0.026324919286583929, -0.026274936581735717, -0.026224953811200161, -0.026174970975101339, -0.026124988073565971, -0.026075005106718136, -0.026025022074682790, +-0.025975038977584887, -0.025925055815549384, -0.025875072588701246, -0.025825089297165423, -0.025775105941065992, -0.025725122520529681, -0.025675139035680566, -0.025625155486643601, +-0.025575171873543748, -0.025525188196505968, -0.025475204455655216, -0.025425220651116451, -0.025375236783013750, -0.025325252851473842, -0.025275268856620802, -0.025225284798579592, +-0.025175300677475167, -0.025125316493432494, -0.025075332246576525, -0.025025347937031341, -0.024975363564923674, -0.024925379130377599, -0.024875394633518077, -0.024825410074470068, +-0.024775425453358531, -0.024725440770308433, -0.024675456025444732, -0.024625471218891505, -0.024575486350775486, -0.024525501421220751, -0.024475516430352263, -0.024425531378294982, +-0.024375546265173874, -0.024325561091113904, -0.024275575856240027, -0.024225590560676323, -0.024175605204549529, -0.024125619787983724, -0.024075634311103870, -0.024025648774034930, +-0.023975663176901869, -0.023925677519829647, -0.023875691802942346, -0.023825706026366703, -0.023775720190226796, -0.023725734294647586, -0.023675748339754041, -0.023625762325671127, +-0.023575776252523804, -0.023525790120437044, -0.023475803929534918, -0.023425817679944172, -0.023375831371788881, -0.023325845005194010, -0.023275858580284529, -0.023225872097185400, +-0.023175885556021590, -0.023125898956917180, -0.023075912299998912, -0.023025925585390860, -0.022975938813217994, -0.022925951983605284, -0.022875965096677692, -0.022825978152560187, +-0.022775991151377739, -0.022726004093254423, -0.022676016978316987, -0.022626029806689506, -0.022576042578496949, -0.022526055293864290, -0.022476067952916491, -0.022426080555778521, +-0.022376093102575351, -0.022326105593431057, -0.022276118028472392, -0.022226130407823428, -0.022176142731609141, -0.022126154999954496, -0.022076167212984461, -0.022026179370824010, +-0.021976191473597223, -0.021926203521430845, -0.021876215514448960, -0.021826227452776535, -0.021776239336538539, -0.021726251165859949, -0.021676262940865727, -0.021626274661680850, +-0.021576286328429398, -0.021526297941238118, -0.021476309500231092, -0.021426321005533294, -0.021376332457269692, -0.021326343855565262, -0.021276355200544970, -0.021226366492333788, +-0.021176377731055806, -0.021126388916837765, -0.021076400049803750, -0.021026411130078738, -0.020976422157787698, -0.020926433133055602, -0.020876444056007422, -0.020826454926767247, +-0.020776465745461818, -0.020726476512215229, -0.020676487227152446, -0.020626497890398447, -0.020576508502078202, -0.020526519062316687, -0.020476529571238872, -0.020426540028968848, +-0.020376550435633359, -0.020326560791356498, -0.020276571096263230, -0.020226581350478539, -0.020176591554127390, -0.020126601707334765, -0.020076611810224746, -0.020026621862924088, +-0.019976631865556874, -0.019926641818248082, -0.019876651721122681, -0.019826661574305654, -0.019776671377921974, -0.019726681132096614, -0.019676690836953663, -0.019626700492619872, +-0.019576710099219331, -0.019526719656877016, -0.019476729165717899, -0.019426738625866961, -0.019376748037449178, -0.019326757400589523, -0.019276766715412088, -0.019226775982043622, +-0.019176785200608216, -0.019126794371230847, -0.019076803494036496, -0.019026812569150130, -0.018976821596696739, -0.018926830576800401, -0.018876839509587878, -0.018826848395183254, +-0.018776857233711509, -0.018726866025297623, -0.018676874770066569, -0.018626883468143330, -0.018576892119652882, -0.018526900724719315, -0.018476909283469387, -0.018426917796027183, +-0.018376926262517686, -0.018326934683065871, -0.018276943057796723, -0.018226951386835215, -0.018176959670305439, -0.018126967908334155, -0.018076976101045448, -0.018026984248564304, +-0.017976992351015696, -0.017927000408524612, -0.017877008421216024, -0.017827016389214915, -0.017777024312645377, -0.017727032191634167, -0.017677040026305376, -0.017627047816783984, +-0.017577055563194971, -0.017527063265663324, -0.017477070924314015, -0.017427078539272032, -0.017377086110661463, -0.017327093638609063, -0.017277101123238933, -0.017227108564676050, +-0.017177115963045397, -0.017127123318471951, -0.017077130631080698, -0.017027137900995731, -0.016977145128343803, -0.016927152313249018, -0.016877159455836351, -0.016827166556230785, +-0.016777173614557300, -0.016727180630940884, -0.016677187605506513, -0.016627194538378288, -0.016577201429682966, -0.016527208279544636, -0.016477215088088290, -0.016427221855438903, +-0.016377228581721463, -0.016327235267060949, -0.016277241911582349, -0.016227248515409756, -0.016177255078669930, -0.016127261601486968, -0.016077268083985848, -0.016027274526291560, +-0.015977280928529087, -0.015927287290823409, -0.015877293613298628, -0.015827299896081497, -0.015777306139296118, -0.015727312343067474, -0.015677318507520549, -0.015627324632780330, +-0.015577330718971796, -0.015527336766219937, -0.015477342774648847, -0.015427348744385288, -0.015377354675553359, -0.015327360568278043, -0.015277366422684324, -0.015227372238897190, +-0.015177378017041625, -0.015127383757241725, -0.015077389459624257, -0.015027395124313314, -0.014977400751433882, -0.014927406341110951, -0.014877411893469502, -0.014827417408634523, +-0.014777422886731001, -0.014727428327883034, -0.014677433732217386, -0.014627439099858150, -0.014577444430930319, -0.014527449725558876, -0.014477454983868808, -0.014427460205985104, +-0.014377465392032749, -0.014327470542135842, -0.014277475656421148, -0.014227480735012763, -0.014177485778035678, -0.014127490785614876, -0.014077495757875350, -0.014027500694942083, +-0.013977505596939176, -0.013927510463993393, -0.013877515296228835, -0.013827520093770489, -0.013777524856743341, -0.013727529585272381, -0.013677534279482598, -0.013627538939498980, +-0.013577543565445625, -0.013527548157449300, -0.013477552715634104, -0.013427557240125027, -0.013377561731047058, -0.013327566188525182, -0.013277570612684392, -0.013227575003649676, +-0.013177579361545134, -0.013127583686497531, -0.013077587978630970, -0.013027592238070438, -0.012977596464940925, -0.012927600659367423, -0.012877604821474917, -0.012827608951387511, +-0.012777613049231971, -0.012727617115132400, -0.012677621149213785, -0.012627625151601117, -0.012577629122419387, -0.012527633061793582, -0.012477636969848696, -0.012427640846708830, +-0.012377644692500750, -0.012327648507348557, -0.012277652291377244, -0.012227656044711798, -0.012177659767477214, -0.012127663459798481, -0.012077667121799701, -0.012027670753607641, +-0.011977674355346402, -0.011927677927140980, -0.011877681469116361, -0.011827684981397541, -0.011777688464109506, -0.011727691917377251, -0.011677695341324878, -0.011627698736079155, +-0.011577702101764184, -0.011527705438504959, -0.011477708746426471, -0.011427712025653710, -0.011377715276311668, -0.011327718498525340, -0.011277721692418826, -0.011227724858118897, +-0.011177727995749655, -0.011127731105436094, -0.011077734187303205, -0.011027737241475979, -0.010977740268079411, -0.010927743267237604, -0.010877746239077328, -0.010827749183722686, +-0.010777752101298671, -0.010727754991930275, -0.010677757855742492, -0.010627760692860314, -0.010577763503408734, -0.010527766287511857, -0.010477769045296454, -0.010427771776886627, +-0.010377774482407372, -0.010327777161983680, -0.010277779815740545, -0.010227782443802959, -0.010177785046295918, -0.010127787623343527, -0.010077790175072555, -0.010027792701607108, +-0.009977795203072178, -0.009927797679592761, -0.009877800131293850, -0.009827802558300437, -0.009777804960736630, -0.009727807338729199, -0.009677809692402251, -0.009627812021880778, +-0.009577814327289774, -0.009527816608754234, -0.009477818866399155, -0.009427821100349525, -0.009377823310729457, -0.009327825497665717, -0.009277827661282415, -0.009227829801704543, +-0.009177831919057097, -0.009127834013465071, -0.009077836085053460, -0.009027838133946371, -0.008977840160270574, -0.008927842164150176, -0.008877844145710174, -0.008827846105075561, +-0.008777848042371333, -0.008727849957722486, -0.008677851851254012, -0.008627853723090022, -0.008577855573357284, -0.008527857402179907, -0.008477859209682888, -0.008427860995991221, +-0.008377862761229902, -0.008327864505523924, -0.008277866228998286, -0.008227867931777095, -0.008177869613987121, -0.008127871275752473, -0.008077872917198147, -0.008027874538449140, +-0.007977876139630444, -0.007927877720867060, -0.007877879282283094, -0.007827880824005316, -0.007777882346157837, -0.007727883848865652, -0.007677885332253757, -0.007627886796447149, +-0.007577888241570824, -0.007527889667749779, -0.007477891075108121, -0.007427892463772623, -0.007377893833867394, -0.007327895185517431, -0.007277896518847729, -0.007227897833983287, +-0.007177899131049100, -0.007127900410169277, -0.007077901671470591, -0.007027902915077151, -0.006977904141113954, -0.006927905349705996, -0.006877906540978275, -0.006827907715055787, +-0.006777908872063531, -0.006727910012125614, -0.006677911135368810, -0.006627912241917228, -0.006577913331895865, -0.006527914405429720, -0.006477915462643789, -0.006427916503663068, +-0.006377917528612556, -0.006327918537616363, -0.006277919530801261, -0.006227920508291360, -0.006177921470211658, -0.006127922416687153, -0.006077923347842841, -0.006027924263803722, +-0.005977925164693903, -0.005927926050640159, -0.005877926921766601, -0.005827927778198225, -0.005777928620060029, -0.005727929447477013, -0.005677930260574172, -0.005627931059476505, +-0.005577931844308124, -0.005527932615195800, -0.005477933372263645, -0.005427934115636657, -0.005377934845439833, -0.005327935561798172, -0.005277936264836673, -0.005227936954680332, +-0.005177937631453262, -0.005127938295282235, -0.005077938946291362, -0.005027939584605642, -0.004977940210350073, -0.004927940823649654, -0.004877941424629382, -0.004827942013413369, +-0.004777942590128389, -0.004727943154898552, -0.004677943707848858, -0.004627944249104304, -0.004577944778789890, -0.004527945297030614, -0.004477945803951475, -0.004427946299676583, +-0.004377946784332712, -0.004327947258043976, -0.004277947720935371, -0.004227948173131897, -0.004177948614758552, -0.004127949045940336, -0.004077949466801360, -0.004027949877468397, +-0.003977950278065560, -0.003927950668717847, -0.003877951049550258, -0.003827951420687791, -0.003777951782255445, -0.003727952134378220, -0.003677952477180227, -0.003627952810788240, +-0.003577953135326371, -0.003527953450919620, -0.003477953757692985, -0.003427954055771466, -0.003377954345280061, -0.003327954626343770, -0.003277954899086705, -0.003227955163635641, +-0.003177955420114689, -0.003127955668648848, -0.003077955909363118, -0.003027956142382499, -0.002977956367831988, -0.002927956585835699, -0.002877956796520407, -0.002827957000010223, +-0.002777957196430146, -0.002727957385905176, -0.002677957568560313, -0.002627957744520555, -0.002577957913910904, -0.002527958076855469, -0.002477958233481027, -0.002427958383911690, +-0.002377958528272457, -0.002327958666688328, -0.002277958799284302, -0.002227958926185378, -0.002177959047516558, -0.002127959163401952, -0.002077959273968336, -0.002027959379339822, +-0.001977959479641409, -0.001927959574998098, -0.001877959665534888, -0.001827959751376778, -0.001777959832647881, -0.001727959909474973, -0.001677959981982165, -0.001627960050294457, +-0.001577960114536849, -0.001527960174834340, -0.001477960231311931, -0.001427960284094622, -0.001377960333306523, -0.001327960379074412, -0.001277960421522400, -0.001227960460775487, +-0.001177960496958673, -0.001127960530196958, -0.001077960560615341, -0.001027960588337934, -0.000977960613491515, -0.000927960636200194, -0.000877960656588971, -0.000827960674782847, +-0.000777960690906820, -0.000727960705085893, -0.000677960717445063, -0.000627960728108444, -0.000577960737202810, -0.000527960744852275, -0.000477960751181838, -0.000427960756316500, +-0.000377960760381259, -0.000327960763501117, -0.000277960765801072, -0.000227960767405237, -0.000177960768440389, -0.000127960769030639, -0.000077960769300987 +}; + + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_example_f32.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_example_f32.c new file mode 100644 index 0000000..87908ed --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/arm_linear_interp_example_f32.c @@ -0,0 +1,204 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_linear_interp_example_f32.c +* +* Description: Example code demonstrating usage of sin function +* and uses linear interpolation to get higher precision +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup LinearInterpExample Linear Interpolate Example + * + * CMSIS DSP Software Library -- Linear Interpolate Example + * + * Description + * This example demonstrates usage of linear interpolate modules and fast math modules. + * Method 1 uses fast math sine function to calculate sine values using cubic interpolation and method 2 uses + * linear interpolation function and results are compared to reference output. + * Example shows linear interpolation function can be used to get higher precision compared to fast math sin calculation. + * + * \par Block Diagram: + * \par + * \image html linearInterpExampleMethod1.gif "Method 1: Sine caluclation using fast math" + * \par + * \image html linearInterpExampleMethod2.gif "Method 2: Sine caluclation using interpolation function" + * + * \par Variables Description: + * \par + * \li \c testInputSin_f32 points to the input values for sine calculation + * \li \c testRefSinOutput32_f32 points to the reference values caculated from sin() matlab function + * \li \c testOutput points to output buffer calculation from cubic interpolation + * \li \c testLinIntOutput points to output buffer calculation from linear interpolation + * \li \c snr1 Signal to noise ratio for reference and cubic interpolation output + * \li \c snr2 Signal to noise ratio for reference and linear interpolation output + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_sin_f32() + * - arm_linear_interp_f32() + * + * Refer + * \link arm_linear_interp_example_f32.c \endlink + * + */ + + +/** \example arm_linear_interp_example_f32.c + */ + +#include "arm_math.h" +#include "math_helper.h" + +#define SNR_THRESHOLD 90 +#define TEST_LENGTH_SAMPLES 10 +#define XSPACING (0.00005f) + +/* ---------------------------------------------------------------------- +* Test input data for F32 SIN function +* Generated by the MATLAB rand() function +* randn('state', 0) +* xi = (((1/4.18318581819710)* randn(blockSize, 1) * 2* pi)); +* --------------------------------------------------------------------*/ +float32_t testInputSin_f32[TEST_LENGTH_SAMPLES] = +{ + -0.649716504673081170, -2.501723745497831200, + 0.188250329003310100, 0.432092748487532540, + -1.722010988459680800, 1.788766476323060600, + 1.786136060975809500, -0.056525543169408797, + 0.491596272728153760, 0.262309671126153390 +}; + +/*------------------------------------------------------------------------------ +* Reference out of SIN F32 function for Block Size = 10 +* Calculated from sin(testInputSin_f32) +*------------------------------------------------------------------------------*/ +float32_t testRefSinOutput32_f32[TEST_LENGTH_SAMPLES] = +{ + -0.604960695383043530, -0.597090287967934840, + 0.187140422442966500, 0.418772124875992690, + -0.988588831792106880, 0.976338412038794010, + 0.976903856413481100, -0.056495446835214236, + 0.472033731854734240, 0.259311907228582830 +}; + +/*------------------------------------------------------------------------------ +* Method 1: Test out Buffer Calculated from Cubic Interpolation +*------------------------------------------------------------------------------*/ +float32_t testOutput[TEST_LENGTH_SAMPLES]; + +/*------------------------------------------------------------------------------ +* Method 2: Test out buffer Calculated from Linear Interpolation +*------------------------------------------------------------------------------*/ +float32_t testLinIntOutput[TEST_LENGTH_SAMPLES]; + +/*------------------------------------------------------------------------------ +* External table used for linear interpolation +*------------------------------------------------------------------------------*/ +extern float arm_linear_interep_table[188495]; + +/* ---------------------------------------------------------------------- +* Global Variables for caluclating SNR's for Method1 & Method 2 +* ------------------------------------------------------------------- */ +float32_t snr1; +float32_t snr2; + +/* ---------------------------------------------------------------------------- +* Calculation of Sine values from Cubic Interpolation and Linear interpolation +* ---------------------------------------------------------------------------- */ +int32_t main(void) +{ + uint32_t i; + arm_status status; + + arm_linear_interp_instance_f32 S = {188495, -3.141592653589793238, XSPACING, &arm_linear_interep_table[0]}; + + /*------------------------------------------------------------------------------ + * Method 1: Test out Calculated from Cubic Interpolation + *------------------------------------------------------------------------------*/ + for(i=0; i< TEST_LENGTH_SAMPLES; i++) + { + testOutput[i] = arm_sin_f32(testInputSin_f32[i]); + } + + /*------------------------------------------------------------------------------ + * Method 2: Test out Calculated from Cubic Interpolation and Linear interpolation + *------------------------------------------------------------------------------*/ + + for(i=0; i< TEST_LENGTH_SAMPLES; i++) + { + testLinIntOutput[i] = arm_linear_interp_f32(&S, testInputSin_f32[i]); + } + + /*------------------------------------------------------------------------------ + * SNR calculation for method 1 + *------------------------------------------------------------------------------*/ + snr1 = arm_snr_f32(testRefSinOutput32_f32, testOutput, 2); + + /*------------------------------------------------------------------------------ + * SNR calculation for method 2 + *------------------------------------------------------------------------------*/ + snr2 = arm_snr_f32(testRefSinOutput32_f32, testLinIntOutput, 2); + + /*------------------------------------------------------------------------------ + * Initialise status depending on SNR calculations + *------------------------------------------------------------------------------*/ + if ( snr2 > snr1) + { + status = ARM_MATH_SUCCESS; + } + else + { + status = ARM_MATH_TEST_FAILURE; + } + + /* ---------------------------------------------------------------------- + ** Loop here if the signals fail the PASS check. + ** This denotes a test failure + ** ------------------------------------------------------------------- */ + if ( status != ARM_MATH_SUCCESS) + { + while (1); + } + + while (1); /* main function does not return */ +} + + /** \endlink */ diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/math_helper.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/math_helper.c new file mode 100644 index 0000000..f615e6f --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/math_helper.c @@ -0,0 +1,466 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 b +* +* Project: CMSIS DSP Library +* +* Title: math_helper.c +* +* Description: Definition of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- +* Include standard header files +* -------------------------------------------------------------------- */ +#include + +/* ---------------------------------------------------------------------- +* Include project header files +* -------------------------------------------------------------------- */ +#include "math_helper.h" + +/** + * @brief Caluclation of SNR + * @param[in] pRef Pointer to the reference buffer + * @param[in] pTest Pointer to the test buffer + * @param[in] buffSize total number of samples + * @return SNR + * The function Caluclates signal to noise ratio for the reference output + * and test output + */ + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize) +{ + float EnergySignal = 0.0, EnergyError = 0.0; + uint32_t i; + float SNR; + int temp; + int *test; + + for (i = 0; i < buffSize; i++) + { + /* Checking for a NAN value in pRef array */ + test = (int *)(&pRef[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + /* Checking for a NAN value in pTest array */ + test = (int *)(&pTest[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + EnergySignal += pRef[i] * pRef[i]; + EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); + } + + /* Checking for a NAN value in EnergyError */ + test = (int *)(&EnergyError); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + + SNR = 10 * log10 (EnergySignal / EnergyError); + + return (SNR); + +} + + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Converts float to fixed in q12.20 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to outputbuffer + * @param[in] numSamples number of samples in the input buffer + * @return none + * The function converts floating point values to fixed point(q12.20) values + */ + +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1048576.0f corresponds to pow(2, 20) */ + pOut[i] = (q31_t) (pIn[i] * 1048576.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 1.0) + { + pOut[i] = 0x000FFFFF; + } + } +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q31 (q31_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q7 (q7_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + + + +/** + * @brief Caluclates number of guard bits + * @param[in] num_adds number of additions + * @return guard bits + * The function Caluclates the number of guard bits + * depending on the numtaps + */ + +uint32_t arm_calc_guard_bits (uint32_t num_adds) +{ + uint32_t i = 1, j = 0; + + if (num_adds == 1) + { + return (0); + } + + while (i < num_adds) + { + i = i * 2; + j++; + } + + return (j); +} + +/** + * @brief Apply guard bits to buffer + * @param[in,out] pIn pointer to input buffer + * @param[in] numSamples number of samples in the input buffer + * @param[in] guard_bits guard bits + * @return none + */ + +void arm_apply_guard_bits (float32_t *pIn, + uint32_t numSamples, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + pIn[i] = pIn[i] * arm_calc_2pow(guard_bits); + } +} + +/** + * @brief Calculates pow(2, numShifts) + * @param[in] numShifts number of shifts + * @return pow(2, numShifts) + */ +uint32_t arm_calc_2pow(uint32_t numShifts) +{ + + uint32_t i, val = 1; + + for (i = 0; i < numShifts; i++) + { + val = val * 2; + } + + return(val); +} + + + +/** + * @brief Converts float to fixed q14 + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 16384.0f corresponds to pow(2, 14) */ + pOut[i] = (q15_t) (pIn[i] * 16384.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFF; + } + + } + +} + + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 1073741824.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 536870912.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 4.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + + +/** + * @brief Converts float to fixed q28 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 268435456.0f corresponds to pow(2, 28) */ + pOut[i] = (q31_t) (pIn[i] * 268435456.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 8.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Clip the float values to +/- 1 + * @param[in,out] pIn input buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_clip_f32 (float *pIn, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + if (pIn[i] > 1.0f) + { + pIn[i] = 1.0; + } + else if ( pIn[i] < -1.0f) + { + pIn[i] = -1.0; + } + + } +} + + + + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/math_helper.h b/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/math_helper.h new file mode 100644 index 0000000..5a18734 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_linear_interp_example/math_helper.h @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* +* Title: math_helper.h +* +* Description: Prototypes of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +#ifndef MATH_HELPER_H +#define MATH_HELPER_H + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize); +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples); +void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples); +void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_clip_f32(float *pIn, uint32_t numSamples); +uint32_t arm_calc_guard_bits(uint32_t num_adds); +void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits); +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples); +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples); +uint32_t arm_calc_2pow(uint32_t guard_bits); +#endif + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/Abstract.txt new file mode 100644 index 0000000..f45b0e0 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_matrix_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/arm_matrix_example_f32.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/arm_matrix_example_f32.c new file mode 100644 index 0000000..3d7a505 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/arm_matrix_example_f32.c @@ -0,0 +1,233 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_matrix_example_f32.c +* +* Description: Example code demonstrating least square fit to data +* using matrix functions +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup MatrixExample Matrix Example + * + * \par Description: + * \par + * Demonstrates the use of Matrix Transpose, Matrix Muliplication, and Matrix Inverse + * functions to apply least squares fitting to input data. Least squares fitting is + * the procedure for finding the best-fitting curve that minimizes the sum of the + * squares of the offsets (least square error) from a given set of data. + * + * \par Algorithm: + * \par + * The linear combination of parameters considered is as follows: + * \par + * A * X = B, where \c X is the unknown value and can be estimated + * from \c A & \c B. + * \par + * The least squares estimate \c X is given by the following equation: + * \par + * X = Inverse(AT * A) * AT * B + * + * \par Block Diagram: + * \par + * \image html matrixExample.gif + * + * \par Variables Description: + * \par + * \li \c A_f32 input matrix in the linear combination equation + * \li \c B_f32 output matrix in the linear combination equation + * \li \c X_f32 unknown matrix estimated using \c A_f32 & \c B_f32 matrices + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_mat_init_f32() + * - arm_mat_trans_f32() + * - arm_mat_mult_f32() + * - arm_mat_inverse_f32() + * + * Refer + * \link arm_matrix_example_f32.c \endlink + * + */ + + +/** \example arm_matrix_example_f32.c + */ + +#include "arm_math.h" +#include "math_helper.h" + +#define SNR_THRESHOLD 90 + +/* -------------------------------------------------------------------------------- +* Test input data(Cycles) taken from FIR Q15 module for differant cases of blockSize +* and tapSize +* --------------------------------------------------------------------------------- */ + +const float32_t B_f32[4] = +{ + 782.0, 7577.0, 470.0, 4505.0 +}; + +/* -------------------------------------------------------------------------------- +* Formula to fit is C1 + C2 * numTaps + C3 * blockSize + C4 * numTaps * blockSize +* -------------------------------------------------------------------------------- */ + +const float32_t A_f32[16] = +{ + /* Const, numTaps, blockSize, numTaps*blockSize */ + 1.0, 32.0, 4.0, 128.0, + 1.0, 32.0, 64.0, 2048.0, + 1.0, 16.0, 4.0, 64.0, + 1.0, 16.0, 64.0, 1024.0, +}; + + +/* ---------------------------------------------------------------------- +* Temporary buffers for storing intermediate values +* ------------------------------------------------------------------- */ +/* Transpose of A Buffer */ +float32_t AT_f32[16]; +/* (Transpose of A * A) Buffer */ +float32_t ATMA_f32[16]; +/* Inverse(Transpose of A * A) Buffer */ +float32_t ATMAI_f32[16]; +/* Test Output Buffer */ +float32_t X_f32[4]; + +/* ---------------------------------------------------------------------- +* Reference ouput buffer C1, C2, C3 and C4 taken from MATLAB +* ------------------------------------------------------------------- */ +const float32_t xRef_f32[4] = {73.0, 8.0, 21.25, 2.875}; + +float32_t snr; + + +/* ---------------------------------------------------------------------- +* Max magnitude FFT Bin test +* ------------------------------------------------------------------- */ + +int32_t main(void) +{ + + arm_matrix_instance_f32 A; /* Matrix A Instance */ + arm_matrix_instance_f32 AT; /* Matrix AT(A transpose) instance */ + arm_matrix_instance_f32 ATMA; /* Matrix ATMA( AT multiply with A) instance */ + arm_matrix_instance_f32 ATMAI; /* Matrix ATMAI(Inverse of ATMA) instance */ + arm_matrix_instance_f32 B; /* Matrix B instance */ + arm_matrix_instance_f32 X; /* Matrix X(Unknown Matrix) instance */ + + uint32_t srcRows, srcColumns; /* Temporary variables */ + arm_status status; + + /* Initialise A Matrix Instance with numRows, numCols and data array(A_f32) */ + srcRows = 4; + srcColumns = 4; + arm_mat_init_f32(&A, srcRows, srcColumns, (float32_t *)A_f32); + + /* Initialise Matrix Instance AT with numRows, numCols and data array(AT_f32) */ + srcRows = 4; + srcColumns = 4; + arm_mat_init_f32(&AT, srcRows, srcColumns, AT_f32); + + /* calculation of A transpose */ + status = arm_mat_trans_f32(&A, &AT); + + + /* Initialise ATMA Matrix Instance with numRows, numCols and data array(ATMA_f32) */ + srcRows = 4; + srcColumns = 4; + arm_mat_init_f32(&ATMA, srcRows, srcColumns, ATMA_f32); + + /* calculation of AT Multiply with A */ + status = arm_mat_mult_f32(&AT, &A, &ATMA); + + /* Initialise ATMAI Matrix Instance with numRows, numCols and data array(ATMAI_f32) */ + srcRows = 4; + srcColumns = 4; + arm_mat_init_f32(&ATMAI, srcRows, srcColumns, ATMAI_f32); + + /* calculation of Inverse((Transpose(A) * A) */ + status = arm_mat_inverse_f32(&ATMA, &ATMAI); + + /* calculation of (Inverse((Transpose(A) * A)) * Transpose(A)) */ + status = arm_mat_mult_f32(&ATMAI, &AT, &ATMA); + + /* Initialise B Matrix Instance with numRows, numCols and data array(B_f32) */ + srcRows = 4; + srcColumns = 1; + arm_mat_init_f32(&B, srcRows, srcColumns, (float32_t *)B_f32); + + /* Initialise X Matrix Instance with numRows, numCols and data array(X_f32) */ + srcRows = 4; + srcColumns = 1; + arm_mat_init_f32(&X, srcRows, srcColumns, X_f32); + + /* calculation ((Inverse((Transpose(A) * A)) * Transpose(A)) * B) */ + status = arm_mat_mult_f32(&ATMA, &B, &X); + + /* Comparison of reference with test output */ + snr = arm_snr_f32((float32_t *)xRef_f32, X_f32, 4); + + /*------------------------------------------------------------------------------ + * Initialise status depending on SNR calculations + *------------------------------------------------------------------------------*/ + if ( snr > SNR_THRESHOLD) + { + status = ARM_MATH_SUCCESS; + } + else + { + status = ARM_MATH_TEST_FAILURE; + } + + + /* ---------------------------------------------------------------------- + ** Loop here if the signals fail the PASS check. + ** This denotes a test failure + ** ------------------------------------------------------------------- */ + if ( status != ARM_MATH_SUCCESS) + { + while (1); + } + + while (1); /* main function does not return */ +} + + /** \endlink */ diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/math_helper.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/math_helper.c new file mode 100644 index 0000000..f615e6f --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/math_helper.c @@ -0,0 +1,466 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 b +* +* Project: CMSIS DSP Library +* +* Title: math_helper.c +* +* Description: Definition of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- +* Include standard header files +* -------------------------------------------------------------------- */ +#include + +/* ---------------------------------------------------------------------- +* Include project header files +* -------------------------------------------------------------------- */ +#include "math_helper.h" + +/** + * @brief Caluclation of SNR + * @param[in] pRef Pointer to the reference buffer + * @param[in] pTest Pointer to the test buffer + * @param[in] buffSize total number of samples + * @return SNR + * The function Caluclates signal to noise ratio for the reference output + * and test output + */ + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize) +{ + float EnergySignal = 0.0, EnergyError = 0.0; + uint32_t i; + float SNR; + int temp; + int *test; + + for (i = 0; i < buffSize; i++) + { + /* Checking for a NAN value in pRef array */ + test = (int *)(&pRef[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + /* Checking for a NAN value in pTest array */ + test = (int *)(&pTest[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + EnergySignal += pRef[i] * pRef[i]; + EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); + } + + /* Checking for a NAN value in EnergyError */ + test = (int *)(&EnergyError); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + + SNR = 10 * log10 (EnergySignal / EnergyError); + + return (SNR); + +} + + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Converts float to fixed in q12.20 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to outputbuffer + * @param[in] numSamples number of samples in the input buffer + * @return none + * The function converts floating point values to fixed point(q12.20) values + */ + +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1048576.0f corresponds to pow(2, 20) */ + pOut[i] = (q31_t) (pIn[i] * 1048576.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 1.0) + { + pOut[i] = 0x000FFFFF; + } + } +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q31 (q31_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q7 (q7_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + + + +/** + * @brief Caluclates number of guard bits + * @param[in] num_adds number of additions + * @return guard bits + * The function Caluclates the number of guard bits + * depending on the numtaps + */ + +uint32_t arm_calc_guard_bits (uint32_t num_adds) +{ + uint32_t i = 1, j = 0; + + if (num_adds == 1) + { + return (0); + } + + while (i < num_adds) + { + i = i * 2; + j++; + } + + return (j); +} + +/** + * @brief Apply guard bits to buffer + * @param[in,out] pIn pointer to input buffer + * @param[in] numSamples number of samples in the input buffer + * @param[in] guard_bits guard bits + * @return none + */ + +void arm_apply_guard_bits (float32_t *pIn, + uint32_t numSamples, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + pIn[i] = pIn[i] * arm_calc_2pow(guard_bits); + } +} + +/** + * @brief Calculates pow(2, numShifts) + * @param[in] numShifts number of shifts + * @return pow(2, numShifts) + */ +uint32_t arm_calc_2pow(uint32_t numShifts) +{ + + uint32_t i, val = 1; + + for (i = 0; i < numShifts; i++) + { + val = val * 2; + } + + return(val); +} + + + +/** + * @brief Converts float to fixed q14 + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 16384.0f corresponds to pow(2, 14) */ + pOut[i] = (q15_t) (pIn[i] * 16384.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFF; + } + + } + +} + + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 1073741824.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 536870912.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 4.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + + +/** + * @brief Converts float to fixed q28 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 268435456.0f corresponds to pow(2, 28) */ + pOut[i] = (q31_t) (pIn[i] * 268435456.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 8.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Clip the float values to +/- 1 + * @param[in,out] pIn input buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_clip_f32 (float *pIn, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + if (pIn[i] > 1.0f) + { + pIn[i] = 1.0; + } + else if ( pIn[i] < -1.0f) + { + pIn[i] = -1.0; + } + + } +} + + + + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/math_helper.h b/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/math_helper.h new file mode 100644 index 0000000..5a18734 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_matrix_example/math_helper.h @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* +* Title: math_helper.h +* +* Description: Prototypes of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +#ifndef MATH_HELPER_H +#define MATH_HELPER_H + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize); +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples); +void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples); +void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_clip_f32(float *pIn, uint32_t numSamples); +uint32_t arm_calc_guard_bits(uint32_t num_adds); +void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits); +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples); +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples); +uint32_t arm_calc_2pow(uint32_t guard_bits); +#endif + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/Abstract.txt new file mode 100644 index 0000000..d202e78 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_signal_converge_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_data.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_data.c new file mode 100644 index 0000000..3a2337d --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_data.c @@ -0,0 +1,269 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_signal_converge_data.c +* +* Description: Test input data for Floating point LMS Norm FIR filter +* +* Target Processor: Cortex-M4/Cortex-M3/Cortex-M0 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +** Test input data for Floating point LMS Norm FIR filter +** Generated by the MATLAB randn() function +** ------------------------------------------------------------------- */ + +float32_t testInput_f32[1536] = +{ +-0.432565, -1.665584, 0.125332, 0.287676, -1.146471, 1.190915, 1.189164, -0.037633, +0.327292, 0.174639, -0.186709, 0.725791, -0.588317, 2.183186, -0.136396, 0.113931, +1.066768, 0.059281, -0.095648, -0.832349, 0.294411, -1.336182, 0.714325, 1.623562, +-0.691776, 0.857997, 1.254001, -1.593730, -1.440964, 0.571148, -0.399886, 0.689997, +0.815622, 0.711908, 1.290250, 0.668601, 1.190838, -1.202457, -0.019790, -0.156717, +-1.604086, 0.257304, -1.056473, 1.415141, -0.805090, 0.528743, 0.219321, -0.921902, +-2.170674, -0.059188, -1.010634, 0.614463, 0.507741, 1.692430, 0.591283, -0.643595, +0.380337, -1.009116, -0.019511, -0.048221, 0.000043, -0.317859, 1.095004, -1.873990, +0.428183, 0.895638, 0.730957, 0.577857, 0.040314, 0.677089, 0.568900, -0.255645, +-0.377469, -0.295887, -1.475135, -0.234004, 0.118445, 0.314809, 1.443508, -0.350975, +0.623234, 0.799049, 0.940890, -0.992092, 0.212035, 0.237882, -1.007763, -0.742045, +1.082295, -0.131500, 0.389880, 0.087987, -0.635465, -0.559573, 0.443653, -0.949904, +0.781182, 0.568961, -0.821714, -0.265607, -1.187777, -2.202321, 0.986337, -0.518635, +0.327368, 0.234057, 0.021466, -1.003944, -0.947146, -0.374429, -1.185886, -1.055903, +1.472480, 0.055744, -1.217317, -0.041227, -1.128344, -1.349278, -0.261102, 0.953465, +0.128644, 0.656468, -1.167819, -0.460605, -0.262440, -1.213152, -1.319437, 0.931218, +0.011245, -0.645146, 0.805729, 0.231626, -0.989760, 1.339586, 0.289502, 1.478917, +1.138028, -0.684139, -1.291936, -0.072926, -0.330599, -0.843628, 0.497770, 1.488490, +-0.546476, -0.846758, -0.246337, 0.663024, -0.854197, -1.201315, -0.119869, -0.065294, +0.485296, -0.595491, -0.149668, -0.434752, -0.079330, 1.535152, -0.606483, -1.347363, +0.469383, -0.903567, 0.035880, -0.627531, 0.535398, 0.552884, -0.203690, -2.054325, +0.132561, 1.592941, 1.018412, -1.580402, -0.078662, -0.681657, -1.024553, -1.234353, +0.288807, -0.429303, 0.055801, -0.367874, -0.464973, 0.370961, 0.728283, 2.112160, +-1.357298, -1.022610, 1.037834, -0.389800, -1.381266, 0.315543, 1.553243, 0.707894, +1.957385, 0.504542, 1.864529, -0.339812, -1.139779, -0.211123, 1.190245, -1.116209, +0.635274, -0.601412, 0.551185, -1.099840, 0.085991, -2.004563, -0.493088, 0.462048, +-0.321005, 1.236556, -0.631280, -2.325211, -1.231637, 1.055648, -0.113224, 0.379224, +0.944200, -2.120427, -0.644679, -0.704302, -1.018137, -0.182082, 1.521013, -0.038439, +1.227448, -0.696205, 0.007524, -0.782893, 0.586939, -0.251207, 0.480136, 0.668155, +-0.078321, 0.889173, 2.309287, 0.524639, -0.011787, 0.913141, 0.055941, -1.107070, +0.485498, -0.005005, -0.276218, 1.276452, 1.863401, -0.522559, 0.103424, -0.807649, +0.680439, -2.364590, 0.990115, 0.218899, 0.261662, 1.213444, -0.274667, -0.133134, +-1.270500, -1.663606, -0.703554, 0.280880, -0.541209, -1.333531, 1.072686, -0.712085, +-0.011286, -0.000817, -0.249436, 0.396575, -0.264013, -1.664011, -1.028975, 0.243095, +-1.256590, -0.347183, -0.941372, -1.174560, -1.021142, -0.401667, 0.173666, -0.116118, +1.064119, -0.245386, -1.517539, 0.009734, 0.071373, 0.316536, 0.499826, 1.278084, +-0.547816, 0.260808, -0.013177, -0.580264, 2.136308, -0.257617, -1.409528, 1.770101, +0.325546, -1.119040, 0.620350, 1.269782, -0.896043, 0.135175, -0.139040, -1.163395, +1.183720, -0.015430, 0.536219, -0.716429, -0.655559, 0.314363, 0.106814, 1.848216, +-0.275106, 2.212554, 1.508526, -1.945079, -1.680543, -0.573534, -0.185817, 0.008934, +0.836950, -0.722271, -0.721490, -0.201181, -0.020464, 0.278890, 1.058295, 0.621673, +-1.750615, 0.697348, 0.811486, 0.636345, 1.310080, 0.327098, -0.672993, -0.149327, +-2.449018, 0.473286, 0.116946, -0.591104, -0.654708, -1.080662, -0.047731, 0.379345, +-0.330361, -0.499898, -0.035979, -0.174760, -0.957265, 1.292548, 0.440910, 1.280941, +-0.497730, -1.118717, 0.807650, 0.041200, -0.756209, -0.089129, -2.008850, 1.083918, +-0.981191, -0.688489, 1.339479, -0.909243, -0.412858, -0.506163, 1.619748, 0.080901, +-1.081056, -1.124518, 1.735676, 1.937459, 1.635068, -1.255940, -0.213538, -0.198932, +0.307499, -0.572325, -0.977648, -0.446809, 1.082092, 2.372648, 0.229288, -0.266623, +0.701672, -0.487590, 1.862480, 1.106851, -1.227566, -0.669885, 1.340929, 0.388083, +0.393059, -1.707334, 0.227859, 0.685633, -0.636790, -1.002606, -0.185621, -1.054033, +-0.071539, 0.279198, 1.373275, 0.179841, -0.542017, 1.634191, 0.825215, 0.230761, +0.671634, -0.508078, 0.856352, 0.268503, 0.624975, -1.047338, 1.535670, 0.434426, +-1.917136, 0.469940, 1.274351, 0.638542, 1.380782, 1.319843, -0.909429, -2.305605, +1.788730, 0.390798, 0.020324, -0.405977, -1.534895, 0.221373, -1.374479, -0.839286, +-0.208643, 0.755913, 0.375734, -1.345413, 1.481876, 0.032736, 1.870453, -1.208991, +-0.782632, -0.767299, -0.107200, -0.977057, -0.963988, -2.379172, -0.838188, 0.257346, +-0.183834, -0.167615, -0.116989, 0.168488, -0.501206, -0.705076, 0.508165, -0.420922, +0.229133, -0.959497, -0.146043, 0.744538, -0.890496, 0.139062, -0.236144, -0.075459, +-0.358572, -2.077635, -0.143546, 1.393341, 0.651804, -0.377134, -0.661443, 0.248958, +-0.383516, -0.528480, 0.055388, 1.253769, -2.520004, 0.584856, -1.008064, 0.944285, +-2.423957, -0.223831, 0.058070, -0.424614, -0.202918, -1.513077, -1.126352, -0.815002, +0.366614, -0.586107, 1.537409, 0.140072, -1.862767, -0.454193, -0.652074, 0.103318, +-0.220632, -0.279043, -0.733662, -0.064534, -1.444004, 0.612340, -1.323503, -0.661577, +-0.146115, 0.248085, -0.076633, 1.738170, 1.621972, 0.626436, 0.091814, -0.807607, +-0.461337, -1.405969, -0.374530, -0.470911, 1.751296, 0.753225, 0.064989, -0.292764, +0.082823, 0.766191, 2.236850, 0.326887, 0.863304, 0.679387, 0.554758, 1.001630, +1.259365, 0.044151, -0.314138, 0.226708, 0.996692, 1.215912, -0.542702, 0.912228, +-0.172141, -0.335955, 0.541487, 0.932111, -0.570253, -1.498605, -0.050346, 0.553025, +0.083498, 1.577524, -0.330774, 0.795155, -0.784800, -1.263121, 0.666655, -1.392632, +-1.300562, -0.605022, -1.488565, 0.558543, -0.277354, -1.293685, -0.888435, -0.986520, +-0.071618, -2.414591, -0.694349, -1.391389, 0.329648, 0.598544, 0.147175, -0.101439, +-2.634981, 0.028053, -0.876310, -0.265477, -0.327578, -1.158247, 0.580053, 0.239756, +-0.350885, 0.892098, 1.578299, -1.108174, -0.025931, -1.110628, 0.750834, 0.500167, +-0.517261, -0.559209, -0.753371, 0.925813, -0.248520, -0.149835, -1.258415, 0.312620, +2.690277, 0.289696, -1.422803, 0.246786, -1.435773, 0.148573, -1.693073, 0.719188, +1.141773, 1.551936, 1.383630, -0.758092, 0.442663, 0.911098, -1.074086, 0.201762, +0.762863, -1.288187, -0.952962, 0.778175, -0.006331, 0.524487, 1.364272, 0.482039, +-0.787066, 0.751999, -0.166888, -0.816228, 2.094065, 0.080153, -0.937295, 0.635739, +1.682028, 0.593634, 0.790153, 0.105254, -0.158579, 0.870907, -0.194759, 0.075474, +-0.526635, -0.685484, -0.268388, -1.188346, 0.248579, 0.102452, -0.041007, -2.247582, +-0.510776, 0.249243, 0.369197, 0.179197, -0.037283, -1.603310, 0.339372, -0.131135, +0.485190, 0.598751, -0.086031, 0.325292, -0.335143, -0.322449, -0.382374, -0.953371, +0.233576, 1.235245, -0.578532, -0.501537, 0.722864, 0.039498, 1.541279, -1.701053, +-1.033741, -0.763708, 2.176426, 0.431612, -0.443765, 0.029996, -0.315671, 0.977846, +0.018295, 0.817963, 0.702341, -0.231271, -0.113690, 0.127941, -0.799410, -0.238612, +-0.089463, -1.023264, 0.937538, -1.131719, -0.710702, -1.169501, 1.065437, -0.680394, +-1.725773, 0.813200, 1.441867, 0.672272, 0.138665, -0.859534, -0.752251, 1.229615, +1.150754, -0.608025, 0.806158, 0.217133, -0.373461, -0.832030, 0.286866, -1.818892, +-1.573051, 2.015666, -0.071982, 2.628909, -0.243317, 0.173276, 0.923207, -0.178553, +-0.521705, 1.431962, -0.870117, 0.807542, -0.510635, 0.743514, 0.847898, -0.829901, +0.532994, 1.032848, -1.052024, 0.362114, -0.036787, -1.227636, -0.275099, -0.160435, +-1.083575, -1.954213, -0.909487, -0.005579, -1.723490, 1.263077, -0.600433, -2.063925, +0.110911, 1.487614, 0.053002, 0.161981, -0.026878, 0.173576, 0.882168, 0.182294, +0.755295, 0.508035, 0.131880, 0.280104, -0.982848, -0.944087, -0.013058, 0.354345, +-0.894709, 0.812111, 0.109537, 2.731644, 0.411079, -1.306862, 0.383806, 0.499504, +-0.510786, 0.234922, -0.597825, 0.020771, 0.419443, 1.191104, 0.771214, -2.644222, +0.285430, 0.826093, -0.008122, 0.858438, 0.774788, 1.305945, 1.231503, 0.958564, +-1.654548, -0.990396, 0.685236, -0.974870, -0.606726, 0.686794, 0.020049, 1.063801, +-1.341050, 0.479510, -1.633974, -1.442665, 0.293781, -0.140364, -1.130341, -0.292538, +-0.582536, -0.896348, 0.248601, -1.489663, 0.313509, -2.025084, 0.528990, 0.343471, +0.758193, -0.691940, 0.680179, -1.072541, 0.899772, -2.123092, 0.284712, -0.733323, +-0.773376, 0.151842, -0.336843, 0.970761, -0.107236, 1.013492, -0.475347, 0.068948, +0.398592, 1.116326, 0.620451, -0.287674, -1.371773, -0.685868, 0.331685, -0.997722, +0.291418, 1.107078, 0.244959, 0.164976, 0.406231, 1.215981, 1.448424, -1.025137, +0.205418, 0.588882, -0.264024, 2.495318, 0.855948, -0.850954, 0.811879, 0.700242, +0.759938, -1.712909, 1.537021, -1.609847, 1.109526, -1.109704, 0.385469, 0.965231, +0.818297, 0.037049, -0.926012, -0.111919, -0.803030, -1.665006, -0.901401, 0.588350, +0.554159, -0.415173, 0.061795, 0.457432, 0.199014, 0.257558, 2.080730, -2.277237, +0.339022, 0.289894, 0.662261, -0.580860, 0.887752, 0.171871, 0.848821, 0.963769, +1.321918, -0.064345, 1.317053, 0.228017, -1.429637, -0.149701, -0.504968, -1.729141, +-0.417472, -0.614969, 0.720777, 0.339364, 0.882845, 0.284245, -0.145541, -0.089646, +0.289161, 1.164831, 0.805729, -1.355643, 0.120893, -0.222178, 0.571732, -0.300140, +1.134277, -0.179356, -1.467067, 1.395346, 0.440836, 0.565384, -0.693623, 0.833869, +-2.237378, 1.097644, -0.001617, -1.614573, -1.228727, 0.207405, 0.220942, -1.006073, +-0.453067, 1.399453, -0.461964, 0.032716, 0.798783, 0.896816, 0.137892, -1.619146, +-1.646606, 0.428707, -0.737231, 0.564926, -1.384167, 0.460268, 0.629384, 0.379847, +-1.013330, -0.347243, 0.441912, -1.590240, -0.701417, -1.077601, 1.002220, 1.729481, +0.709032, -0.747897, 0.228862, -0.223497, -0.853275, 0.345627, 0.109764, -1.133039, +-0.683124, -0.277856, 0.654790, -1.248394, -0.597539, -0.481813, 0.983372, 1.762121, +1.427402, 0.911763, 0.326823, 0.069619, -1.499763, -0.418223, -0.021037, 0.228425, +-1.008196, -0.664622, 0.558177, -1.188542, -0.775481, 0.271042, 1.534976, -1.052283, +0.625559, -0.797626, -0.313522, -0.602210, 1.259060, 0.858484, -2.105292, -0.360937, +0.553557, -1.556384, -0.206666, -0.425568, 0.493778, -0.870908, 0.079828, -0.521619, +-1.413861, -0.384293, -0.457922, -0.291471, -0.301224, -1.588594, 1.094287, 1.324167, +-0.126480, -0.737164, 0.213719, -0.400529, 0.064938, -1.757996, 1.686748, 0.327400, +0.715967, 1.598648, -2.064741, -0.743632, 0.176185, 0.527839, -0.553153, 0.298280, +-1.226607, -0.189676, -0.301713, 0.956956, -0.533366, -0.901082, -0.892552, 0.278717, +-0.745807, 1.603464, 0.574270, 0.320655, -0.151383, 0.315762, 1.343703, -2.237832, +1.292906, -0.378459, 0.002521, 0.884641, 0.582450, -1.614244, -1.503666, 0.573586, +-0.910537, -1.631277, -0.359138, -0.397616, -1.161307, -1.109838, 0.290672, -1.910239, +1.314768, 0.665319, -0.275115, -0.023022, -0.907976, -1.043657, 0.373516, 0.901532, +1.278539, -0.128456, 0.612821, 1.956518, 2.266326, -0.373959, 2.238039, -0.159580, +-0.703281, 0.563477, -0.050296, 1.163593, 0.658808, -1.550089, -3.029118, 0.540578, +-1.008998, 0.908047, 1.582303, -0.979088, 1.007902, 0.158491, -0.586927, 1.574082, +-0.516649, 1.227800, 1.583876, -2.088950, 2.949545, 1.356125, 1.050068, -0.767170, +-0.257653, -1.371845, -1.267656, -0.894948, 0.589089, 1.842629, 1.347967, -0.491253, +-2.177568, 0.237000, -0.735411, -1.779419, 0.448030, 0.581214, 0.856607, -0.266263, +-0.417470, -0.205806, -0.174323, 0.217577, 1.684295, 0.119528, 0.650667, 2.080061, +-0.339225, 0.730113, 0.293969, -0.849109, -2.533858, -2.378941, -0.346276, -0.610937, +-0.408192, -1.415611, 0.227122, 0.207974, -0.719718, 0.757762, -1.643135, -1.056813, +-0.251662, -1.298441, 1.233255, 1.494625, 0.235938, -1.404359, 0.658791, -2.556613, +-0.534945, 3.202525, 0.439198, -1.149901, 0.886765, -0.283386, 1.035336, -0.364878, +1.341987, 1.008872, 0.213874, -0.299264, 0.255849, -0.190826, -0.079060, 0.699851, +-0.796540, -0.801284, -0.007599, -0.726810, -1.490902, 0.870335, -0.265675, -1.566695, +-0.394636, -0.143855, -2.334247, -1.357539, -1.815689, 1.108422, -0.142115, 1.112757, +0.559264, 0.478370, -0.679385, 0.284967, -1.332935, -0.723980, -0.663600, 0.198443, +-1.794868, -1.387673, 0.197768, 1.469328, 0.366493, -0.442775, -0.048563, 0.077709, +1.957910, -0.072848, 0.938810, -0.079608, -0.800959, 0.309424, 1.051826, -1.664211, +-1.090792, -0.191731, 0.463401, -0.924147, -0.649657, 0.622893, -1.335107, 1.047689, +0.863327, -0.642411, 0.660010, 1.294116, 0.314579, 0.859573, 0.128670, 0.016568, +-0.072801, -0.994310, -0.747358, -0.030814, 0.988355, -0.599017, 1.476644, -0.813801, +0.645040, -1.309919, -0.867425, -0.474233, 0.222417, 1.871323, 0.110001, -0.411341, +0.511242, -1.199117, -0.096361, 0.445817, -0.295825, -0.167996, 0.179543, 0.421118, +1.677678, 1.996949, 0.696964, -1.366382, 0.363045, -0.567044, -1.044154, 0.697139, +0.484026, -0.193751, -0.378095, -0.886374, -1.840197, -1.628195, -1.173789, -0.415411, +0.175088, 0.229433, -1.240889, 0.700004, 0.426877, 1.454803, -0.510186, -0.006657, +-0.525496, 0.717698, 1.088374, 0.500552, 2.771790, -0.160309, 0.429489, -1.966817, +-0.546019, -1.888395, -0.107952, -1.316144, -0.672632, -0.902365, -0.154798, 0.947242, +1.550375, 0.429040, -0.560795, 0.179304, -0.771509, -0.943390, -1.407569, -1.906131, +-0.065293, 0.672149, 0.206147, -0.008124, 0.020042, -0.558447, 1.886079, -0.219975, +-1.414395, -0.302811, -0.569574, -0.121495, -0.390171, -0.844287, -1.737757, -0.449520, +-1.547933, -0.095776, 0.907714, 2.369602, 0.519768, 0.410525, 1.052585, 0.428784, +1.295088, -0.186053, 0.130733, -0.657627, -0.759267, -0.595170, 0.812400, 0.069541, +-1.833687, 1.827363, 0.654075, -1.544769, -0.375109, 0.207688, -0.765615, -0.106355, +0.338769, 1.033461, -1.404822, -1.030570, -0.643372, 0.170787, 1.344839, 1.936273, +0.741336, 0.811980, -0.142808, -0.099858, -0.800131, 0.493249, 1.237574, 1.295951, +-0.278196, 0.217127, 0.630728, -0.548549, 0.229632, 0.355311, 0.521284, -0.615971, +1.345803, 0.974922, -2.377934, -1.092319, -0.325710, -2.012228, 1.567660, 0.233337, +0.646420, -1.129412, 0.197038, 1.696870, 0.726034, 0.792526, 0.603357, -0.058405, +-1.108666, 2.144229, -1.352821, 0.457021, 0.391175, 2.073013, -0.323318, 1.468132, +-0.502399, 0.209593, 0.754800, -0.948189, 0.613157, 1.760503, 0.088762, 2.595570, +-0.675470, 2.786804, -0.016827, 0.271651, -0.914102, -1.951371, -0.317418, 0.588333, +0.828996, -1.674851, -1.922293, -0.436662, 0.044974, 2.416609, -0.309892, 0.187583, +0.947699, -0.525703, -1.115605, -1.592320, 1.174844, 0.485144, 1.645480, -0.454233, +1.008768, 2.049403, 0.602020, 0.017860, -1.610426, 1.238752, 0.683587, -0.780716, +0.530979, 2.134498, 0.354361, 0.231700, 1.287980, -0.013488, -1.333345, -0.556343, +0.755597, -0.911854, 1.371684, 0.245580, 0.118845, 0.384690, -0.070152, -0.578309, +0.469308, 1.299687, 1.634798, -0.702809, 0.807253, -1.027451, 1.294496, 0.014930, +0.218705, 1.713188, -2.078805, 0.112917, -1.086491, -1.558311, 0.637406, -0.404576, +-0.403325, 0.084076, -0.435349, -0.562623, 0.878062, -0.814650, -0.258363, 0.493299, +-0.802694, -0.008329, 0.627571, 0.154382, 2.580735, -1.306246, 1.023526, 0.777795, +-0.833884, -0.586663, 0.065664, -0.012342, -0.076987, -1.558587, 1.702607, -0.468984, +0.094619, 0.287071, 0.919354, 0.510136, 0.245440, -1.400519, 0.969571, 1.593698, +-1.437917, -1.534230, -0.074710, 0.081459, -0.843240, -0.564640, -0.028207, -1.243702, +0.733039, 0.059580, 0.149144, 1.595857, -0.777250, 1.550277, 1.055002, -0.166654, +0.314484, 1.419571, 0.327348, 0.475653, 0.398754, -0.072770, 1.314784, 0.978279, +1.722114, -0.412302, 0.565133, 0.739851, 0.220138, 1.312807, 0.629152, -1.107987, +-0.447001, -0.725993, 0.354045, -0.506772, -2.103747, -0.664684, 1.450110, -0.329805, +2.701872, -1.634939, -0.536325, 0.547223, 1.492603, -0.455243, -0.496416, 1.235260, +0.040926, 0.748467, 1.230764, 0.304903, 1.077771, 0.765151, -1.319580, -0.509191, +0.555116, -1.957625, -0.760453, -2.443886, -0.659366, -0.114779, 0.300079, -0.583996, +-3.073745, 1.551042, -0.407369, 1.428095, -1.353242, 0.903970, 0.541671, -0.465020 +}; + + + +/* ---------------------------------------------------------------------- +** Coefficients for 32-tap filter for Floating point LMS FIR filter +* FIR high pass filter with cutoff freq 9.6kHz (transition 9.6KHz to 11.52KHz) +** ------------------------------------------------------------------- */ +float32_t lmsNormCoeff_f32[32] = { +-0.004240, 0.002301, 0.008860, -0.000000, -0.019782, -0.010543, 0.032881, 0.034736, +-0.037374, -0.069586, 0.022397, 0.102169, 0.014185, -0.115908, -0.061648, 0.101018, +0.101018, -0.061648, -0.115908, 0.014185, 0.102169, 0.022397, -0.069586, -0.037374, +0.034736, 0.032881, -0.010543, -0.019782, -0.000000, 0.008860, 0.002301, -0.004240 + +}; + +/* ---------------------------------------------------------------------- +** Coefficients for 32-tap filter for Floating point FIR filter +* FIR low pass filter with cutoff freq 24Hz (transition 24Hz to 240Hz) +** ------------------------------------------------------------------- */ +const float32_t FIRCoeff_f32[32] = { +0.004502, 0.005074, 0.006707, 0.009356, 0.012933, 0.017303, 0.022298, 0.027717, +0.033338, 0.038930, 0.044258, 0.049098, 0.053243, 0.056519, 0.058784, 0.059941, +0.059941, 0.058784, 0.056519, 0.053243, 0.049098, 0.044258, 0.038930, 0.033338, +0.027717, 0.022298, 0.017303, 0.012933, 0.009356, 0.006707, 0.005074, 0.004502 + +}; + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_example_f32.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_example_f32.c new file mode 100644 index 0000000..d984e2f --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/arm_signal_converge_example_f32.c @@ -0,0 +1,259 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_signal_converge_example_f32.c +* +* Description: Example code demonstrating convergence of an adaptive +* filter. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup SignalConvergence Signal Convergence Example + * + * \par Description: + * \par + * Demonstrates the ability of an adaptive filter to "learn" the transfer function of + * a FIR lowpass filter using the Normalized LMS Filter, Finite Impulse + * Response (FIR) Filter, and Basic Math Functions. + * + * \par Algorithm: + * \par + * The figure below illustrates the signal flow in this example. Uniformly distributed white + * noise is passed through an FIR lowpass filter. The output of the FIR filter serves as the + * reference input of the adaptive filter (normalized LMS filter). The white noise is input + * to the adaptive filter. The adaptive filter learns the transfer function of the FIR filter. + * The filter outputs two signals: (1) the output of the internal adaptive FIR filter, and + * (2) the error signal which is the difference between the adaptive filter and the reference + * output of the FIR filter. Over time as the adaptive filter learns the transfer function + * of the FIR filter, the first output approaches the reference output of the FIR filter, + * and the error signal approaches zero. + * \par + * The adaptive filter converges properly even if the input signal has a large dynamic + * range (i.e., varies from small to large values). The coefficients of the adaptive filter + * are initially zero, and then converge over 1536 samples. The internal function test_signal_converge() + * implements the stopping condition. The function checks if all of the values of the error signal have a + * magnitude below a threshold DELTA. + * + * \par Block Diagram: + * \par + * \image html SignalFlow.gif + * + * + * \par Variables Description: + * \par + * \li \c testInput_f32 points to the input data + * \li \c firStateF32 points to FIR state buffer + * \li \c lmsStateF32 points to Normalised Least mean square FIR filter state buffer + * \li \c FIRCoeff_f32 points to coefficient buffer + * \li \c lmsNormCoeff_f32 points to Normalised Least mean square FIR filter coefficient buffer + * \li \c wire1, wir2, wire3 temporary buffers + * \li \c errOutput, err_signal temporary error buffers + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_lms_norm_init_f32() + * - arm_fir_init_f32() + * - arm_fir_f32() + * - arm_lms_norm_f32() + * - arm_scale_f32() + * - arm_abs_f32() + * - arm_sub_f32() + * - arm_min_f32() + * - arm_copy_f32() + * + * Refer + * \link arm_signal_converge_example_f32.c \endlink + * + */ + + +/** \example arm_signal_converge_example_f32.c + */ + +#include "arm_math.h" +#include "math_helper.h" + +/* ---------------------------------------------------------------------- +** Global defines for the simulation +* ------------------------------------------------------------------- */ + +#define TEST_LENGTH_SAMPLES 1536 +#define NUMTAPS 32 +#define BLOCKSIZE 32 +#define DELTA_ERROR 0.000001f +#define DELTA_COEFF 0.0001f +#define MU 0.5f + +#define NUMFRAMES (TEST_LENGTH_SAMPLES / BLOCKSIZE) + +/* ---------------------------------------------------------------------- +* Declare FIR state buffers and structure +* ------------------------------------------------------------------- */ + +float32_t firStateF32[NUMTAPS + BLOCKSIZE]; +arm_fir_instance_f32 LPF_instance; + +/* ---------------------------------------------------------------------- +* Declare LMSNorm state buffers and structure +* ------------------------------------------------------------------- */ + +float32_t lmsStateF32[NUMTAPS + BLOCKSIZE]; +float32_t errOutput[TEST_LENGTH_SAMPLES]; +arm_lms_norm_instance_f32 lmsNorm_instance; + + +/* ---------------------------------------------------------------------- +* Function Declarations for Signal Convergence Example +* ------------------------------------------------------------------- */ + +arm_status test_signal_converge_example( void ); + + +/* ---------------------------------------------------------------------- +* Internal functions +* ------------------------------------------------------------------- */ +arm_status test_signal_converge(float32_t* err_signal, + uint32_t blockSize); + +void getinput(float32_t* input, + uint32_t fr_cnt, + uint32_t blockSize); + +/* ---------------------------------------------------------------------- +* External Declarations for FIR F32 module Test +* ------------------------------------------------------------------- */ +extern float32_t testInput_f32[TEST_LENGTH_SAMPLES]; +extern float32_t lmsNormCoeff_f32[32]; +extern const float32_t FIRCoeff_f32[32]; +extern arm_lms_norm_instance_f32 lmsNorm_instance; + +/* ---------------------------------------------------------------------- +* Declare I/O buffers +* ------------------------------------------------------------------- */ + +float32_t wire1[BLOCKSIZE]; +float32_t wire2[BLOCKSIZE]; +float32_t wire3[BLOCKSIZE]; +float32_t err_signal[BLOCKSIZE]; + +/* ---------------------------------------------------------------------- +* Signal converge test +* ------------------------------------------------------------------- */ + +int32_t main(void) +{ + uint32_t i; + arm_status status; + uint32_t index; + float32_t minValue; + + /* Initialize the LMSNorm data structure */ + arm_lms_norm_init_f32(&lmsNorm_instance, NUMTAPS, lmsNormCoeff_f32, lmsStateF32, MU, BLOCKSIZE); + + /* Initialize the FIR data structure */ + arm_fir_init_f32(&LPF_instance, NUMTAPS, (float32_t *)FIRCoeff_f32, firStateF32, BLOCKSIZE); + + /* ---------------------------------------------------------------------- + * Loop over the frames of data and execute each of the processing + * functions in the system. + * ------------------------------------------------------------------- */ + + for(i=0; i < NUMFRAMES; i++) + { + /* Read the input data - uniformly distributed random noise - into wire1 */ + arm_copy_f32(testInput_f32 + (i * BLOCKSIZE), wire1, BLOCKSIZE); + + /* Execute the FIR processing function. Input wire1 and output wire2 */ + arm_fir_f32(&LPF_instance, wire1, wire2, BLOCKSIZE); + + /* Execute the LMS Norm processing function*/ + + arm_lms_norm_f32(&lmsNorm_instance, /* LMSNorm instance */ + wire1, /* Input signal */ + wire2, /* Reference Signal */ + wire3, /* Converged Signal */ + err_signal, /* Error Signal, this will become small as the signal converges */ + BLOCKSIZE); /* BlockSize */ + + /* apply overall gain */ + arm_scale_f32(wire3, 5, wire3, BLOCKSIZE); /* in-place buffer */ + } + + status = ARM_MATH_SUCCESS; + + /* ------------------------------------------------------------------------------- + * Test whether the error signal has reached towards 0. + * ----------------------------------------------------------------------------- */ + + arm_abs_f32(err_signal, err_signal, BLOCKSIZE); + arm_min_f32(err_signal, BLOCKSIZE, &minValue, &index); + + if (minValue > DELTA_ERROR) + { + status = ARM_MATH_TEST_FAILURE; + } + + /* ---------------------------------------------------------------------- + * Test whether the filter coefficients have converged. + * ------------------------------------------------------------------- */ + + arm_sub_f32((float32_t *)FIRCoeff_f32, lmsNormCoeff_f32, lmsNormCoeff_f32, NUMTAPS); + + arm_abs_f32(lmsNormCoeff_f32, lmsNormCoeff_f32, NUMTAPS); + arm_min_f32(lmsNormCoeff_f32, NUMTAPS, &minValue, &index); + + if (minValue > DELTA_COEFF) + { + status = ARM_MATH_TEST_FAILURE; + } + + /* ---------------------------------------------------------------------- + * Loop here if the signals did not pass the convergence check. + * This denotes a test failure + * ------------------------------------------------------------------- */ + + if ( status != ARM_MATH_SUCCESS) + { + while (1); + } + + while (1); /* main function does not return */ +} + + /** \endlink */ diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/math_helper.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/math_helper.c new file mode 100644 index 0000000..f615e6f --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/math_helper.c @@ -0,0 +1,466 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 b +* +* Project: CMSIS DSP Library +* +* Title: math_helper.c +* +* Description: Definition of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- +* Include standard header files +* -------------------------------------------------------------------- */ +#include + +/* ---------------------------------------------------------------------- +* Include project header files +* -------------------------------------------------------------------- */ +#include "math_helper.h" + +/** + * @brief Caluclation of SNR + * @param[in] pRef Pointer to the reference buffer + * @param[in] pTest Pointer to the test buffer + * @param[in] buffSize total number of samples + * @return SNR + * The function Caluclates signal to noise ratio for the reference output + * and test output + */ + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize) +{ + float EnergySignal = 0.0, EnergyError = 0.0; + uint32_t i; + float SNR; + int temp; + int *test; + + for (i = 0; i < buffSize; i++) + { + /* Checking for a NAN value in pRef array */ + test = (int *)(&pRef[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + /* Checking for a NAN value in pTest array */ + test = (int *)(&pTest[i]); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + EnergySignal += pRef[i] * pRef[i]; + EnergyError += (pRef[i] - pTest[i]) * (pRef[i] - pTest[i]); + } + + /* Checking for a NAN value in EnergyError */ + test = (int *)(&EnergyError); + temp = *test; + + if (temp == 0x7FC00000) + { + return(0); + } + + + SNR = 10 * log10 (EnergySignal / EnergyError); + + return (SNR); + +} + + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q15 (q15_t * input_buf, uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Converts float to fixed in q12.20 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to outputbuffer + * @param[in] numSamples number of samples in the input buffer + * @return none + * The function converts floating point values to fixed point(q12.20) values + */ + +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1048576.0f corresponds to pow(2, 20) */ + pOut[i] = (q31_t) (pIn[i] * 1048576.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 1.0) + { + pOut[i] = 0x000FFFFF; + } + } +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Compare MATLAB Reference Output and ARM Test output + * @param[in] pIn Pointer to Ref buffer + * @param[in] pOut Pointer to Test buffer + * @param[in] numSamples number of samples in the buffer + * @return maximum difference + */ + +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + int32_t diff, diffCrnt = 0; + uint32_t maxDiff = 0; + + for (i = 0; i < numSamples; i++) + { + diff = pIn[i] - pOut[i]; + diffCrnt = (diff > 0) ? diff : -diff; + + if (diffCrnt > maxDiff) + { + maxDiff = diffCrnt; + } + } + + return(maxDiff); +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q31 (q31_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + +/** + * @brief Provide guard bits for Input buffer + * @param[in,out] input_buf Pointer to input buffer + * @param[in] blockSize block Size + * @param[in] guard_bits guard bits + * @return none + * The function Provides the guard bits for the buffer + * to avoid overflow + */ + +void arm_provide_guard_bits_q7 (q7_t * input_buf, + uint32_t blockSize, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < blockSize; i++) + { + input_buf[i] = input_buf[i] >> guard_bits; + } +} + + + +/** + * @brief Caluclates number of guard bits + * @param[in] num_adds number of additions + * @return guard bits + * The function Caluclates the number of guard bits + * depending on the numtaps + */ + +uint32_t arm_calc_guard_bits (uint32_t num_adds) +{ + uint32_t i = 1, j = 0; + + if (num_adds == 1) + { + return (0); + } + + while (i < num_adds) + { + i = i * 2; + j++; + } + + return (j); +} + +/** + * @brief Apply guard bits to buffer + * @param[in,out] pIn pointer to input buffer + * @param[in] numSamples number of samples in the input buffer + * @param[in] guard_bits guard bits + * @return none + */ + +void arm_apply_guard_bits (float32_t *pIn, + uint32_t numSamples, + uint32_t guard_bits) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + pIn[i] = pIn[i] * arm_calc_2pow(guard_bits); + } +} + +/** + * @brief Calculates pow(2, numShifts) + * @param[in] numShifts number of shifts + * @return pow(2, numShifts) + */ +uint32_t arm_calc_2pow(uint32_t numShifts) +{ + + uint32_t i, val = 1; + + for (i = 0; i < numShifts; i++) + { + val = val * 2; + } + + return(val); +} + + + +/** + * @brief Converts float to fixed q14 + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q14 (float *pIn, q15_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 16384.0f corresponds to pow(2, 14) */ + pOut[i] = (q15_t) (pIn[i] * 16384.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFF; + } + + } + +} + + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q30 (float *pIn, q31_t * pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 1073741824.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 2.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Converts float to fixed q30 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q29 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 1073741824.0f corresponds to pow(2, 30) */ + pOut[i] = (q31_t) (pIn[i] * 536870912.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 4.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + + +/** + * @brief Converts float to fixed q28 format + * @param[in] pIn pointer to input buffer + * @param[out] pOut pointer to output buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_float_to_q28 (float *pIn, q31_t *pOut, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + /* 268435456.0f corresponds to pow(2, 28) */ + pOut[i] = (q31_t) (pIn[i] * 268435456.0f); + + pOut[i] += pIn[i] > 0 ? 0.5 : -0.5; + + if (pIn[i] == (float) 8.0) + { + pOut[i] = 0x7FFFFFFF; + } + } +} + +/** + * @brief Clip the float values to +/- 1 + * @param[in,out] pIn input buffer + * @param[in] numSamples number of samples in the buffer + * @return none + * The function converts floating point values to fixed point values + */ + +void arm_clip_f32 (float *pIn, uint32_t numSamples) +{ + uint32_t i; + + for (i = 0; i < numSamples; i++) + { + if (pIn[i] > 1.0f) + { + pIn[i] = 1.0; + } + else if ( pIn[i] < -1.0f) + { + pIn[i] = -1.0; + } + + } +} + + + + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/math_helper.h b/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/math_helper.h new file mode 100644 index 0000000..5a18734 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_signal_converge_example/math_helper.h @@ -0,0 +1,63 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2013 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* +* Title: math_helper.h +* +* Description: Prototypes of all helper functions required. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + + +#include "arm_math.h" + +#ifndef MATH_HELPER_H +#define MATH_HELPER_H + +float arm_snr_f32(float *pRef, float *pTest, uint32_t buffSize); +void arm_float_to_q12_20(float *pIn, q31_t * pOut, uint32_t numSamples); +void arm_provide_guard_bits_q15(q15_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_provide_guard_bits_q31(q31_t *input_buf, uint32_t blockSize, uint32_t guard_bits); +void arm_float_to_q14(float *pIn, q15_t *pOut, uint32_t numSamples); +void arm_float_to_q29(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q28(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_float_to_q30(float *pIn, q31_t *pOut, uint32_t numSamples); +void arm_clip_f32(float *pIn, uint32_t numSamples); +uint32_t arm_calc_guard_bits(uint32_t num_adds); +void arm_apply_guard_bits (float32_t * pIn, uint32_t numSamples, uint32_t guard_bits); +uint32_t arm_compare_fixed_q15(q15_t *pIn, q15_t * pOut, uint32_t numSamples); +uint32_t arm_compare_fixed_q31(q31_t *pIn, q31_t *pOut, uint32_t numSamples); +uint32_t arm_calc_2pow(uint32_t guard_bits); +#endif + diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/Abstract.txt new file mode 100644 index 0000000..84bd3fd --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_sin_cos_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/arm_sin_cos_example_f32.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/arm_sin_cos_example_f32.c new file mode 100644 index 0000000..7e2eb00 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_sin_cos_example/arm_sin_cos_example_f32.c @@ -0,0 +1,161 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 12. March 2014 +* $Revision: V1.4.3 +* +* Project: CMSIS DSP Library +* Title: arm_sin_cos_example_f32.c +* +* Description: Example code demonstrating sin and cos calculation of input signal. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup SinCosExample SineCosine Example + * + * \par Description: + * \par + * Demonstrates the Pythagorean trignometric identity with the use of Cosine, Sine, Vector + * Multiplication, and Vector Addition functions. + * + * \par Algorithm: + * \par + * Mathematically, the Pythagorean trignometric identity is defined by the following equation: + *
sin(x) * sin(x) + cos(x) * cos(x) = 1
+ * where \c x is the angle in radians. + * + * \par Block Diagram: + * \par + * \image html sinCos.gif + * + * \par Variables Description: + * \par + * \li \c testInput_f32 array of input angle in radians + * \li \c testOutput stores sum of the squares of sine and cosine values of input angle + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_cos_f32() + * - arm_sin_f32() + * - arm_mult_f32() + * - arm_add_f32() + * + * Refer + * \link arm_sin_cos_example_f32.c \endlink + * + */ + + +/** \example arm_sin_cos_example_f32.c + */ + +#include +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +* Defines each of the tests performed +* ------------------------------------------------------------------- */ +#define MAX_BLOCKSIZE 32 +#define DELTA (0.0001f) + + +/* ---------------------------------------------------------------------- +* Test input data for Floating point sin_cos example for 32-blockSize +* Generated by the MATLAB randn() function +* ------------------------------------------------------------------- */ + +const float32_t testInput_f32[MAX_BLOCKSIZE] = +{ + -1.244916875853235400, -4.793533929171324800, 0.360705030233248850, 0.827929644170887320, -3.299532218312426900, 3.427441903227623800, 3.422401784294607700, -0.108308165334010680, + 0.941943896490312180, 0.502609575000365850, -0.537345278736373500, 2.088817392965764500, -1.693168684143455700, 6.283185307179590700, -0.392545884746175080, 0.327893095115825040, + 3.070147440456292300, 0.170611405884662230, -0.275275082396073010, -2.395492805446796300, 0.847311163536506600, -3.845517018083148800, 2.055818378415868300, 4.672594161978930800, + -1.990923030266425800, 2.469305197656249500, 3.609002606064021000, -4.586736582331667500, -4.147080139136136300, 1.643756718868359500, -1.150866392366494800, 1.985805026477433800 + + +}; + +const float32_t testRefOutput_f32 = 1.000000000; + +/* ---------------------------------------------------------------------- +* Declare Global variables +* ------------------------------------------------------------------- */ +uint32_t blockSize = 32; +float32_t testOutput; +float32_t cosOutput; +float32_t sinOutput; +float32_t cosSquareOutput; +float32_t sinSquareOutput; + +/* ---------------------------------------------------------------------- +* Max magnitude FFT Bin test +* ------------------------------------------------------------------- */ + +arm_status status; + +int32_t main(void) +{ + float32_t diff; + uint32_t i; + + for(i=0; i< blockSize; i++) + { + cosOutput = arm_cos_f32(testInput_f32[i]); + sinOutput = arm_sin_f32(testInput_f32[i]); + + arm_mult_f32(&cosOutput, &cosOutput, &cosSquareOutput, 1); + arm_mult_f32(&sinOutput, &sinOutput, &sinSquareOutput, 1); + + arm_add_f32(&cosSquareOutput, &sinSquareOutput, &testOutput, 1); + + /* absolute value of difference between ref and test */ + diff = fabsf(testRefOutput_f32 - testOutput); + + /* Comparison of sin_cos value with reference */ + if (diff > DELTA) + { + status = ARM_MATH_TEST_FAILURE; + } + + if ( status == ARM_MATH_TEST_FAILURE) + { + while (1); + } + + } + + while (1); /* main function does not return */ +} + + /** \endlink */ diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/Abstract.txt b/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/Abstract.txt new file mode 100644 index 0000000..4dc03b8 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/Abstract.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_variance_example for + Cortex-M0, Cortex-M3, Cortex-M4 with FPU and Cortex-M7 with single precision FPU. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/arm_variance_example_f32.c b/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/arm_variance_example_f32.c new file mode 100644 index 0000000..78a0681 --- /dev/null +++ b/Drivers/CMSIS/DSP/Examples/ARM/arm_variance_example/arm_variance_example_f32.c @@ -0,0 +1,204 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2012 ARM Limited. All rights reserved. +* +* $Date: 17. January 2013 +* $Revision: V1.4.0 +* +* Project: CMSIS DSP Library +* Title: arm_variance_example_f32.c +* +* Description: Example code demonstrating variance calculation of input sequence. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup VarianceExample Variance Example + * + * \par Description: + * \par + * Demonstrates the use of Basic Math and Support Functions to calculate the variance of an + * input sequence with N samples. Uniformly distributed white noise is taken as input. + * + * \par Algorithm: + * \par + * The variance of a sequence is the mean of the squared deviation of the sequence from its mean. + * \par + * This is denoted by the following equation: + *
 variance = ((x[0] - x') * (x[0] - x') + (x[1] - x') * (x[1] - x') + ... + * (x[n-1] - x') * (x[n-1] - x')) / (N-1)
+ * where, x[n] is the input sequence, N is the number of input samples, and + * x' is the mean value of the input sequence, x[n]. + * \par + * The mean value x' is defined as: + *
 x' = (x[0] + x[1] + ... + x[n-1]) / N
+ * + * \par Block Diagram: + * \par + * \image html Variance.gif + * + * + * \par Variables Description: + * \par + * \li \c testInput_f32 points to the input data + * \li \c wire1, \c wir2, \c wire3 temporary buffers + * \li \c blockSize number of samples processed at a time + * \li \c refVarianceOut reference variance value + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_dot_prod_f32() + * - arm_mult_f32() + * - arm_sub_f32() + * - arm_fill_f32() + * - arm_copy_f32() + * + * Refer + * \link arm_variance_example_f32.c \endlink + * + */ + + +/** \example arm_variance_example_f32.c + */ +#include +#include "arm_math.h" + +/* ---------------------------------------------------------------------- +* Defines each of the tests performed +* ------------------------------------------------------------------- */ +#define MAX_BLOCKSIZE 32 +#define DELTA (0.000001f) + + +/* ---------------------------------------------------------------------- +* Declare I/O buffers +* ------------------------------------------------------------------- */ +float32_t wire1[MAX_BLOCKSIZE]; +float32_t wire2[MAX_BLOCKSIZE]; +float32_t wire3[MAX_BLOCKSIZE]; + +/* ---------------------------------------------------------------------- +* Test input data for Floating point Variance example for 32-blockSize +* Generated by the MATLAB randn() function +* ------------------------------------------------------------------- */ + +float32_t testInput_f32[32] = +{ + -0.432564811528221, -1.665584378238097, 0.125332306474831, 0.287676420358549, + -1.146471350681464, 1.190915465642999, 1.189164201652103, -0.037633276593318, + 0.327292361408654, 0.174639142820925, -0.186708577681439, 0.725790548293303, + -0.588316543014189, 2.183185818197101, -0.136395883086596, 0.113931313520810, + 1.066768211359189, 0.059281460523605, -0.095648405483669, -0.832349463650022, + 0.294410816392640, -1.336181857937804, 0.714324551818952, 1.623562064446271, + -0.691775701702287, 0.857996672828263, 1.254001421602532, -1.593729576447477, + -1.440964431901020, 0.571147623658178, -0.399885577715363, 0.689997375464345 + +}; + +/* ---------------------------------------------------------------------- +* Declare Global variables +* ------------------------------------------------------------------- */ +uint32_t blockSize = 32; +float32_t refVarianceOut = 0.903941793931839; + +/* ---------------------------------------------------------------------- +* Variance calculation test +* ------------------------------------------------------------------- */ + +int32_t main(void) +{ + arm_status status; + float32_t mean, oneByBlockSize; + float32_t variance; + float32_t diff; + + status = ARM_MATH_SUCCESS; + + /* Calculation of mean value of input */ + + /* x' = 1/blockSize * (x(0)* 1 + x(1) * 1 + ... + x(n-1) * 1) */ + + /* Fill wire1 buffer with 1.0 value */ + arm_fill_f32(1.0, wire1, blockSize); + + /* Calculate the dot product of wire1 and wire2 */ + /* (x(0)* 1 + x(1) * 1 + ...+ x(n-1) * 1) */ + arm_dot_prod_f32(testInput_f32, wire1, blockSize, &mean); + + /* Calculation of 1/blockSize */ + oneByBlockSize = 1.0 / (blockSize); + + /* 1/blockSize * (x(0)* 1 + x(1) * 1 + ... + x(n-1) * 1) */ + arm_mult_f32(&mean, &oneByBlockSize, &mean, 1); + + + /* Calculation of variance value of input */ + + /* (1/blockSize) * (x(0) - x') * (x(0) - x') + (x(1) - x') * (x(1) - x') + ... + (x(n-1) - x') * (x(n-1) - x') */ + + /* Fill wire2 with mean value x' */ + arm_fill_f32(mean, wire2, blockSize); + + /* wire3 contains (x-x') */ + arm_sub_f32(testInput_f32, wire2, wire3, blockSize); + + /* wire2 contains (x-x') */ + arm_copy_f32(wire3, wire2, blockSize); + + /* (x(0) - x') * (x(0) - x') + (x(1) - x') * (x(1) - x') + ... + (x(n-1) - x') * (x(n-1) - x') */ + arm_dot_prod_f32(wire2, wire3, blockSize, &variance); + + /* Calculation of 1/blockSize */ + oneByBlockSize = 1.0 / (blockSize - 1); + + /* Calculation of variance */ + arm_mult_f32(&variance, &oneByBlockSize, &variance, 1); + + /* absolute value of difference between ref and test */ + diff = fabsf(refVarianceOut - variance); + + /* Comparison of variance value with reference */ + if (diff > DELTA) + { + status = ARM_MATH_TEST_FAILURE; + } + + if ( status != ARM_MATH_SUCCESS) + { + while (1); + } + + while (1); /* main function does not return */ +} + + /** \endlink */ diff --git a/Drivers/CMSIS/DSP/Include/arm_common_tables.h b/Drivers/CMSIS/DSP/Include/arm_common_tables.h new file mode 100644 index 0000000..233f623 --- /dev/null +++ b/Drivers/CMSIS/DSP/Include/arm_common_tables.h @@ -0,0 +1,121 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_common_tables.h + * Description: Extern declaration for common tables + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _ARM_COMMON_TABLES_H +#define _ARM_COMMON_TABLES_H + +#include "arm_math.h" + +extern const uint16_t armBitRevTable[1024]; +extern const q15_t armRecipTableQ15[64]; +extern const q31_t armRecipTableQ31[64]; +extern const float32_t twiddleCoef_16[32]; +extern const float32_t twiddleCoef_32[64]; +extern const float32_t twiddleCoef_64[128]; +extern const float32_t twiddleCoef_128[256]; +extern const float32_t twiddleCoef_256[512]; +extern const float32_t twiddleCoef_512[1024]; +extern const float32_t twiddleCoef_1024[2048]; +extern const float32_t twiddleCoef_2048[4096]; +extern const float32_t twiddleCoef_4096[8192]; +#define twiddleCoef twiddleCoef_4096 +extern const q31_t twiddleCoef_16_q31[24]; +extern const q31_t twiddleCoef_32_q31[48]; +extern const q31_t twiddleCoef_64_q31[96]; +extern const q31_t twiddleCoef_128_q31[192]; +extern const q31_t twiddleCoef_256_q31[384]; +extern const q31_t twiddleCoef_512_q31[768]; +extern const q31_t twiddleCoef_1024_q31[1536]; +extern const q31_t twiddleCoef_2048_q31[3072]; +extern const q31_t twiddleCoef_4096_q31[6144]; +extern const q15_t twiddleCoef_16_q15[24]; +extern const q15_t twiddleCoef_32_q15[48]; +extern const q15_t twiddleCoef_64_q15[96]; +extern const q15_t twiddleCoef_128_q15[192]; +extern const q15_t twiddleCoef_256_q15[384]; +extern const q15_t twiddleCoef_512_q15[768]; +extern const q15_t twiddleCoef_1024_q15[1536]; +extern const q15_t twiddleCoef_2048_q15[3072]; +extern const q15_t twiddleCoef_4096_q15[6144]; +extern const float32_t twiddleCoef_rfft_32[32]; +extern const float32_t twiddleCoef_rfft_64[64]; +extern const float32_t twiddleCoef_rfft_128[128]; +extern const float32_t twiddleCoef_rfft_256[256]; +extern const float32_t twiddleCoef_rfft_512[512]; +extern const float32_t twiddleCoef_rfft_1024[1024]; +extern const float32_t twiddleCoef_rfft_2048[2048]; +extern const float32_t twiddleCoef_rfft_4096[4096]; + +/* floating-point bit reversal tables */ +#define ARMBITREVINDEXTABLE_16_TABLE_LENGTH ((uint16_t)20) +#define ARMBITREVINDEXTABLE_32_TABLE_LENGTH ((uint16_t)48) +#define ARMBITREVINDEXTABLE_64_TABLE_LENGTH ((uint16_t)56) +#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208) +#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440) +#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448) +#define ARMBITREVINDEXTABLE_1024_TABLE_LENGTH ((uint16_t)1800) +#define ARMBITREVINDEXTABLE_2048_TABLE_LENGTH ((uint16_t)3808) +#define ARMBITREVINDEXTABLE_4096_TABLE_LENGTH ((uint16_t)4032) + +extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE_16_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE_32_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE_64_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE_1024_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE_2048_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE_4096_TABLE_LENGTH]; + +/* fixed-point bit reversal tables */ +#define ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH ((uint16_t)12) +#define ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH ((uint16_t)24) +#define ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH ((uint16_t)56) +#define ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH ((uint16_t)112) +#define ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH ((uint16_t)240) +#define ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH ((uint16_t)480) +#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992) +#define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984) +#define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032) + +extern const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH]; + +/* Tables for Fast Math Sine and Cosine */ +extern const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1]; +extern const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1]; +extern const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1]; + +#endif /* ARM_COMMON_TABLES_H */ diff --git a/Drivers/CMSIS/DSP/Include/arm_const_structs.h b/Drivers/CMSIS/DSP/Include/arm_const_structs.h new file mode 100644 index 0000000..677073e --- /dev/null +++ b/Drivers/CMSIS/DSP/Include/arm_const_structs.h @@ -0,0 +1,66 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_const_structs.h + * Description: Constant structs that are initialized for user convenience. + * For example, some can be given as arguments to the arm_cfft_f32() function. + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _ARM_CONST_STRUCTS_H +#define _ARM_CONST_STRUCTS_H + +#include "arm_math.h" +#include "arm_common_tables.h" + + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096; + + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096; + + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096; + +#endif diff --git a/Drivers/CMSIS/DSP/Include/arm_math.h b/Drivers/CMSIS/DSP/Include/arm_math.h new file mode 100644 index 0000000..997aeae --- /dev/null +++ b/Drivers/CMSIS/DSP/Include/arm_math.h @@ -0,0 +1,7157 @@ +/****************************************************************************** + * @file arm_math.h + * @brief Public header file for CMSIS DSP LibraryU + * @version V1.5.3 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + \mainpage CMSIS DSP Software Library + * + * Introduction + * ------------ + * + * This user manual describes the CMSIS DSP software library, + * a suite of common signal processing functions for use on Cortex-M processor based devices. + * + * The library is divided into a number of functions each covering a specific category: + * - Basic math functions + * - Fast math functions + * - Complex math functions + * - Filters + * - Matrix functions + * - Transforms + * - Motor control functions + * - Statistical functions + * - Support functions + * - Interpolation functions + * + * The library has separate functions for operating on 8-bit integers, 16-bit integers, + * 32-bit integer and 32-bit floating-point values. + * + * Using the Library + * ------------ + * + * The library installer contains prebuilt versions of the libraries in the Lib folder. + * - arm_cortexM7lfdp_math.lib (Cortex-M7, Little endian, Double Precision Floating Point Unit) + * - arm_cortexM7bfdp_math.lib (Cortex-M7, Big endian, Double Precision Floating Point Unit) + * - arm_cortexM7lfsp_math.lib (Cortex-M7, Little endian, Single Precision Floating Point Unit) + * - arm_cortexM7bfsp_math.lib (Cortex-M7, Big endian and Single Precision Floating Point Unit on) + * - arm_cortexM7l_math.lib (Cortex-M7, Little endian) + * - arm_cortexM7b_math.lib (Cortex-M7, Big endian) + * - arm_cortexM4lf_math.lib (Cortex-M4, Little endian, Floating Point Unit) + * - arm_cortexM4bf_math.lib (Cortex-M4, Big endian, Floating Point Unit) + * - arm_cortexM4l_math.lib (Cortex-M4, Little endian) + * - arm_cortexM4b_math.lib (Cortex-M4, Big endian) + * - arm_cortexM3l_math.lib (Cortex-M3, Little endian) + * - arm_cortexM3b_math.lib (Cortex-M3, Big endian) + * - arm_cortexM0l_math.lib (Cortex-M0 / Cortex-M0+, Little endian) + * - arm_cortexM0b_math.lib (Cortex-M0 / Cortex-M0+, Big endian) + * - arm_ARMv8MBLl_math.lib (Armv8-M Baseline, Little endian) + * - arm_ARMv8MMLl_math.lib (Armv8-M Mainline, Little endian) + * - arm_ARMv8MMLlfsp_math.lib (Armv8-M Mainline, Little endian, Single Precision Floating Point Unit) + * - arm_ARMv8MMLld_math.lib (Armv8-M Mainline, Little endian, DSP instructions) + * - arm_ARMv8MMLldfsp_math.lib (Armv8-M Mainline, Little endian, DSP instructions, Single Precision Floating Point Unit) + * + * The library functions are declared in the public file arm_math.h which is placed in the Include folder. + * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single + * public header file arm_math.h for Cortex-M cores with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. + * Define the appropriate preprocessor macro ARM_MATH_CM7 or ARM_MATH_CM4 or ARM_MATH_CM3 or + * ARM_MATH_CM0 or ARM_MATH_CM0PLUS depending on the target processor in the application. + * For Armv8-M cores define preprocessor macro ARM_MATH_ARMV8MBL or ARM_MATH_ARMV8MML. + * Set preprocessor macro __DSP_PRESENT if Armv8-M Mainline core supports DSP instructions. + * + * + * Examples + * -------- + * + * The library ships with a number of examples which demonstrate how to use the library functions. + * + * Toolchain Support + * ------------ + * + * The library has been developed and tested with MDK version 5.14.0.0 + * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly. + * + * Building the Library + * ------------ + * + * The library installer contains a project file to rebuild libraries on MDK toolchain in the CMSIS\\DSP_Lib\\Source\\ARM folder. + * - arm_cortexM_math.uvprojx + * + * + * The libraries can be built by opening the arm_cortexM_math.uvprojx project in MDK-ARM, selecting a specific target, and defining the optional preprocessor macros detailed above. + * + * Preprocessor Macros + * ------------ + * + * Each library project have different preprocessor macros. + * + * - UNALIGNED_SUPPORT_DISABLE: + * + * Define macro UNALIGNED_SUPPORT_DISABLE, If the silicon does not support unaligned memory access + * + * - ARM_MATH_BIG_ENDIAN: + * + * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets. + * + * - ARM_MATH_MATRIX_CHECK: + * + * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices + * + * - ARM_MATH_ROUNDING: + * + * Define macro ARM_MATH_ROUNDING for rounding on support functions + * + * - ARM_MATH_CMx: + * + * Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target + * and ARM_MATH_CM0 for building library on Cortex-M0 target, ARM_MATH_CM0PLUS for building library on Cortex-M0+ target, and + * ARM_MATH_CM7 for building the library on cortex-M7. + * + * - ARM_MATH_ARMV8MxL: + * + * Define macro ARM_MATH_ARMV8MBL for building the library on Armv8-M Baseline target, ARM_MATH_ARMV8MML for building library + * on Armv8-M Mainline target. + * + * - __FPU_PRESENT: + * + * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for floating point libraries. + * + * - __DSP_PRESENT: + * + * Initialize macro __DSP_PRESENT = 1 when Armv8-M Mainline core supports DSP instructions. + * + *
+ * CMSIS-DSP in ARM::CMSIS Pack + * ----------------------------- + * + * The following files relevant to CMSIS-DSP are present in the ARM::CMSIS Pack directories: + * |File/Folder |Content | + * |------------------------------|------------------------------------------------------------------------| + * |\b CMSIS\\Documentation\\DSP | This documentation | + * |\b CMSIS\\DSP_Lib | Software license agreement (license.txt) | + * |\b CMSIS\\DSP_Lib\\Examples | Example projects demonstrating the usage of the library functions | + * |\b CMSIS\\DSP_Lib\\Source | Source files for rebuilding the library | + * + *
+ * Revision History of CMSIS-DSP + * ------------ + * Please refer to \ref ChangeLog_pg. + * + * Copyright Notice + * ------------ + * + * Copyright (C) 2010-2015 Arm Limited. All rights reserved. + */ + + +/** + * @defgroup groupMath Basic Math Functions + */ + +/** + * @defgroup groupFastMath Fast Math Functions + * This set of functions provides a fast approximation to sine, cosine, and square root. + * As compared to most of the other functions in the CMSIS math library, the fast math functions + * operate on individual values and not arrays. + * There are separate functions for Q15, Q31, and floating-point data. + * + */ + +/** + * @defgroup groupCmplxMath Complex Math Functions + * This set of functions operates on complex data vectors. + * The data in the complex arrays is stored in an interleaved fashion + * (real, imag, real, imag, ...). + * In the API functions, the number of samples in a complex array refers + * to the number of complex values; the array contains twice this number of + * real values. + */ + +/** + * @defgroup groupFilters Filtering Functions + */ + +/** + * @defgroup groupMatrix Matrix Functions + * + * This set of functions provides basic matrix math operations. + * The functions operate on matrix data structures. For example, + * the type + * definition for the floating-point matrix structure is shown + * below: + *
+ *     typedef struct
+ *     {
+ *       uint16_t numRows;     // number of rows of the matrix.
+ *       uint16_t numCols;     // number of columns of the matrix.
+ *       float32_t *pData;     // points to the data of the matrix.
+ *     } arm_matrix_instance_f32;
+ * 
+ * There are similar definitions for Q15 and Q31 data types. + * + * The structure specifies the size of the matrix and then points to + * an array of data. The array is of size numRows X numCols + * and the values are arranged in row order. That is, the + * matrix element (i, j) is stored at: + *
+ *     pData[i*numCols + j]
+ * 
+ * + * \par Init Functions + * There is an associated initialization function for each type of matrix + * data structure. + * The initialization function sets the values of the internal structure fields. + * Refer to the function arm_mat_init_f32(), arm_mat_init_q31() + * and arm_mat_init_q15() for floating-point, Q31 and Q15 types, respectively. + * + * \par + * Use of the initialization function is optional. However, if initialization function is used + * then the instance structure cannot be placed into a const data section. + * To place the instance structure in a const data + * section, manually initialize the data structure. For example: + *
+ * arm_matrix_instance_f32 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q31 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q15 S = {nRows, nColumns, pData};
+ * 
+ * where nRows specifies the number of rows, nColumns + * specifies the number of columns, and pData points to the + * data array. + * + * \par Size Checking + * By default all of the matrix functions perform size checking on the input and + * output matrices. For example, the matrix addition function verifies that the + * two input matrices and the output matrix all have the same number of rows and + * columns. If the size check fails the functions return: + *
+ *     ARM_MATH_SIZE_MISMATCH
+ * 
+ * Otherwise the functions return + *
+ *     ARM_MATH_SUCCESS
+ * 
+ * There is some overhead associated with this matrix size checking. + * The matrix size checking is enabled via the \#define + *
+ *     ARM_MATH_MATRIX_CHECK
+ * 
+ * within the library project settings. By default this macro is defined + * and size checking is enabled. By changing the project settings and + * undefining this macro size checking is eliminated and the functions + * run a bit faster. With size checking disabled the functions always + * return ARM_MATH_SUCCESS. + */ + +/** + * @defgroup groupTransforms Transform Functions + */ + +/** + * @defgroup groupController Controller Functions + */ + +/** + * @defgroup groupStats Statistics Functions + */ +/** + * @defgroup groupSupport Support Functions + */ + +/** + * @defgroup groupInterpolation Interpolation Functions + * These functions perform 1- and 2-dimensional interpolation of data. + * Linear interpolation is used for 1-dimensional data and + * bilinear interpolation is used for 2-dimensional data. + */ + +/** + * @defgroup groupExamples Examples + */ +#ifndef _ARM_MATH_H +#define _ARM_MATH_H + +/* Compiler specific diagnostic adjustment */ +#if defined ( __CC_ARM ) + +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + +#elif defined ( __GNUC__ ) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +#elif defined ( __ICCARM__ ) + +#elif defined ( __TI_ARM__ ) + +#elif defined ( __CSMC__ ) + +#elif defined ( __TASKING__ ) + +#else + #error Unknown compiler +#endif + + +#define __CMSIS_GENERIC /* disable NVIC and Systick functions */ + +#if defined(ARM_MATH_CM7) + #include "core_cm7.h" + #define ARM_MATH_DSP +#elif defined (ARM_MATH_CM4) + #include "core_cm4.h" + #define ARM_MATH_DSP +#elif defined (ARM_MATH_CM3) + #include "core_cm3.h" +#elif defined (ARM_MATH_CM0) + #include "core_cm0.h" + #define ARM_MATH_CM0_FAMILY +#elif defined (ARM_MATH_CM0PLUS) + #include "core_cm0plus.h" + #define ARM_MATH_CM0_FAMILY +#elif defined (ARM_MATH_ARMV8MBL) + #include "core_armv8mbl.h" + #define ARM_MATH_CM0_FAMILY +#elif defined (ARM_MATH_ARMV8MML) + #include "core_armv8mml.h" + #if (defined (__DSP_PRESENT) && (__DSP_PRESENT == 1)) + #define ARM_MATH_DSP + #endif +#else + #error "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS, ARM_MATH_CM0, ARM_MATH_ARMV8MBL, ARM_MATH_ARMV8MML" +#endif + +#undef __CMSIS_GENERIC /* enable NVIC and Systick functions */ +#include "string.h" +#include "math.h" +#ifdef __cplusplus +extern "C" +{ +#endif + + + /** + * @brief Macros required for reciprocal calculation in Normalized LMS + */ + +#define DELTA_Q31 (0x100) +#define DELTA_Q15 0x5 +#define INDEX_MASK 0x0000003F +#ifndef PI + #define PI 3.14159265358979f +#endif + + /** + * @brief Macros required for SINE and COSINE Fast math approximations + */ + +#define FAST_MATH_TABLE_SIZE 512 +#define FAST_MATH_Q31_SHIFT (32 - 10) +#define FAST_MATH_Q15_SHIFT (16 - 10) +#define CONTROLLER_Q31_SHIFT (32 - 9) +#define TABLE_SPACING_Q31 0x400000 +#define TABLE_SPACING_Q15 0x80 + + /** + * @brief Macros required for SINE and COSINE Controller functions + */ + /* 1.31(q31) Fixed value of 2/360 */ + /* -1 to +1 is divided into 360 values so total spacing is (2/360) */ +#define INPUT_SPACING 0xB60B61 + + /** + * @brief Macro for Unaligned Support + */ +#ifndef UNALIGNED_SUPPORT_DISABLE + #define ALIGN4 +#else + #if defined (__GNUC__) + #define ALIGN4 __attribute__((aligned(4))) + #else + #define ALIGN4 __align(4) + #endif +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /** + * @brief Error status returned by some functions in the library. + */ + + typedef enum + { + ARM_MATH_SUCCESS = 0, /**< No error */ + ARM_MATH_ARGUMENT_ERROR = -1, /**< One or more arguments are incorrect */ + ARM_MATH_LENGTH_ERROR = -2, /**< Length of data buffer is incorrect */ + ARM_MATH_SIZE_MISMATCH = -3, /**< Size of matrices is not compatible with the operation. */ + ARM_MATH_NANINF = -4, /**< Not-a-number (NaN) or infinity is generated */ + ARM_MATH_SINGULAR = -5, /**< Generated by matrix inversion if the input matrix is singular and cannot be inverted. */ + ARM_MATH_TEST_FAILURE = -6 /**< Test Failed */ + } arm_status; + + /** + * @brief 8-bit fractional data type in 1.7 format. + */ + typedef int8_t q7_t; + + /** + * @brief 16-bit fractional data type in 1.15 format. + */ + typedef int16_t q15_t; + + /** + * @brief 32-bit fractional data type in 1.31 format. + */ + typedef int32_t q31_t; + + /** + * @brief 64-bit fractional data type in 1.63 format. + */ + typedef int64_t q63_t; + + /** + * @brief 32-bit floating-point type definition. + */ + typedef float float32_t; + + /** + * @brief 64-bit floating-point type definition. + */ + typedef double float64_t; + + /** + * @brief definition to read/write two 16 bit values. + */ +#if defined ( __CC_ARM ) + #define __SIMD32_TYPE int32_t __packed + #define CMSIS_UNUSED __attribute__((unused)) + #define CMSIS_INLINE __attribute__((always_inline)) + +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED __attribute__((unused)) + #define CMSIS_INLINE __attribute__((always_inline)) + +#elif defined ( __GNUC__ ) + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED __attribute__((unused)) + #define CMSIS_INLINE __attribute__((always_inline)) + +#elif defined ( __ICCARM__ ) + #define __SIMD32_TYPE int32_t __packed + #define CMSIS_UNUSED + #define CMSIS_INLINE + +#elif defined ( __TI_ARM__ ) + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED __attribute__((unused)) + #define CMSIS_INLINE + +#elif defined ( __CSMC__ ) + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED + #define CMSIS_INLINE + +#elif defined ( __TASKING__ ) + #define __SIMD32_TYPE __unaligned int32_t + #define CMSIS_UNUSED + #define CMSIS_INLINE + +#else + #error Unknown compiler +#endif + +#define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr)) +#define __SIMD32_CONST(addr) ((__SIMD32_TYPE *)(addr)) +#define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE *) (addr)) +#define __SIMD64(addr) (*(int64_t **) & (addr)) + +#if !defined (ARM_MATH_DSP) + /** + * @brief definition to pack two 16 bit values. + */ +#define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \ + (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) ) +#define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0xFFFF0000) | \ + (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF) ) + +#endif /* !defined (ARM_MATH_DSP) */ + + /** + * @brief definition to pack four 8 bit values. + */ +#ifndef ARM_MATH_BIG_ENDIAN + +#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v3) << 24) & (int32_t)0xFF000000) ) +#else + +#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v0) << 24) & (int32_t)0xFF000000) ) + +#endif + + + /** + * @brief Clips Q63 to Q31 values. + */ + CMSIS_INLINE __STATIC_INLINE q31_t clip_q63_to_q31( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x; + } + + /** + * @brief Clips Q63 to Q15 values. + */ + CMSIS_INLINE __STATIC_INLINE q15_t clip_q63_to_q15( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15); + } + + /** + * @brief Clips Q31 to Q7 values. + */ + CMSIS_INLINE __STATIC_INLINE q7_t clip_q31_to_q7( + q31_t x) + { + return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ? + ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x; + } + + /** + * @brief Clips Q31 to Q15 values. + */ + CMSIS_INLINE __STATIC_INLINE q15_t clip_q31_to_q15( + q31_t x) + { + return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ? + ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x; + } + + /** + * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format. + */ + + CMSIS_INLINE __STATIC_INLINE q63_t mult32x64( + q63_t x, + q31_t y) + { + return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) + + (((q63_t) (x >> 32) * y))); + } + + /** + * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type. + */ + + CMSIS_INLINE __STATIC_INLINE uint32_t arm_recip_q31( + q31_t in, + q31_t * dst, + q31_t * pRecipTable) + { + q31_t out; + uint32_t tempVal; + uint32_t index, i; + uint32_t signBits; + + if (in > 0) + { + signBits = ((uint32_t) (__CLZ( in) - 1)); + } + else + { + signBits = ((uint32_t) (__CLZ(-in) - 1)); + } + + /* Convert input sample to 1.31 format */ + in = (in << signBits); + + /* calculation of index for initial approximated Val */ + index = (uint32_t)(in >> 24); + index = (index & INDEX_MASK); + + /* 1.31 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0U; i < 2U; i++) + { + tempVal = (uint32_t) (((q63_t) in * out) >> 31); + tempVal = 0x7FFFFFFFu - tempVal; + /* 1.31 with exp 1 */ + /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */ + out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30); + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1U); + } + + + /** + * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type. + */ + CMSIS_INLINE __STATIC_INLINE uint32_t arm_recip_q15( + q15_t in, + q15_t * dst, + q15_t * pRecipTable) + { + q15_t out = 0; + uint32_t tempVal = 0; + uint32_t index = 0, i = 0; + uint32_t signBits = 0; + + if (in > 0) + { + signBits = ((uint32_t)(__CLZ( in) - 17)); + } + else + { + signBits = ((uint32_t)(__CLZ(-in) - 17)); + } + + /* Convert input sample to 1.15 format */ + in = (in << signBits); + + /* calculation of index for initial approximated Val */ + index = (uint32_t)(in >> 8); + index = (index & INDEX_MASK); + + /* 1.15 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0U; i < 2U; i++) + { + tempVal = (uint32_t) (((q31_t) in * out) >> 15); + tempVal = 0x7FFFu - tempVal; + /* 1.15 with exp 1 */ + out = (q15_t) (((q31_t) out * tempVal) >> 14); + /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */ + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1); + } + + +/* + * @brief C custom defined intrinsic function for M3 and M0 processors + */ +#if !defined (ARM_MATH_DSP) + + /* + * @brief C custom defined QADD8 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QADD8( + uint32_t x, + uint32_t y) + { + q31_t r, s, t, u; + + r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; + s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; + t = __SSAT(((((q31_t)x << 8) >> 24) + (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; + u = __SSAT(((((q31_t)x ) >> 24) + (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; + + return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); + } + + + /* + * @brief C custom defined QSUB8 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QSUB8( + uint32_t x, + uint32_t y) + { + q31_t r, s, t, u; + + r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; + s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; + t = __SSAT(((((q31_t)x << 8) >> 24) - (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; + u = __SSAT(((((q31_t)x ) >> 24) - (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; + + return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); + } + + + /* + * @brief C custom defined QADD16 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QADD16( + uint32_t x, + uint32_t y) + { +/* q31_t r, s; without initialisation 'arm_offset_q15 test' fails but 'intrinsic' tests pass! for armCC */ + q31_t r = 0, s = 0; + + r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHADD16 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SHADD16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QSUB16 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QSUB16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHSUB16 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SHSUB16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QASX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QASX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHASX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SHASX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QSAX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __QSAX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHSAX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SHSAX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SMUSDX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMUSDX( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); + } + + /* + * @brief C custom defined SMUADX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMUADX( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); + } + + + /* + * @brief C custom defined QADD for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE int32_t __QADD( + int32_t x, + int32_t y) + { + return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y))); + } + + + /* + * @brief C custom defined QSUB for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE int32_t __QSUB( + int32_t x, + int32_t y) + { + return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y))); + } + + + /* + * @brief C custom defined SMLAD for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMLAD( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLADX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMLADX( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLSDX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMLSDX( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLALD for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint64_t __SMLALD( + uint32_t x, + uint32_t y, + uint64_t sum) + { +/* return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */ + return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + + ( ((q63_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLALDX for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint64_t __SMLALDX( + uint32_t x, + uint32_t y, + uint64_t sum) + { +/* return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */ + return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q63_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMUAD for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMUAD( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); + } + + + /* + * @brief C custom defined SMUSD for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SMUSD( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); + } + + + /* + * @brief C custom defined SXTB16 for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE uint32_t __SXTB16( + uint32_t x) + { + return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) | + ((((q31_t)x << 8) >> 8) & (q31_t)0xFFFF0000) )); + } + + /* + * @brief C custom defined SMMLA for M3 and M0 processors + */ + CMSIS_INLINE __STATIC_INLINE int32_t __SMMLA( + int32_t x, + int32_t y, + int32_t sum) + { + return (sum + (int32_t) (((int64_t) x * y) >> 32)); + } + +#endif /* !defined (ARM_MATH_DSP) */ + + + /** + * @brief Instance structure for the Q7 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q7_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q7; + + /** + * @brief Instance structure for the Q15 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_f32; + + + /** + * @brief Processing function for the Q7 FIR filter. + * @param[in] S points to an instance of the Q7 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q7( + const arm_fir_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q7 FIR filter. + * @param[in,out] S points to an instance of the Q7 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed. + */ + void arm_fir_init_q7( + arm_fir_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR filter. + * @param[in] S points to an instance of the Q15 FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_fast_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR filter. + * @param[in,out] S points to an instance of the Q15 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if + * numTaps is not a supported value. + */ + arm_status arm_fir_init_q15( + arm_fir_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR filter. + * @param[in] S points to an instance of the Q31 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_fast_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR filter. + * @param[in,out] S points to an instance of the Q31 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + */ + void arm_fir_init_q31( + arm_fir_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point FIR filter. + * @param[in] S points to an instance of the floating-point FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_f32( + const arm_fir_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR filter. + * @param[in,out] S points to an instance of the floating-point FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + */ + void arm_fir_init_f32( + arm_fir_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 Biquad cascade filter. + */ + typedef struct + { + int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + } arm_biquad_casd_df1_inst_q15; + + /** + * @brief Instance structure for the Q31 Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + } arm_biquad_casd_df1_inst_q31; + + /** + * @brief Instance structure for the floating-point Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_casd_df1_inst_f32; + + + /** + * @brief Processing function for the Q15 Biquad cascade filter. + * @param[in] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 Biquad cascade filter. + * @param[in,out] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cascade_df1_init_q15( + arm_biquad_casd_df1_inst_q15 * S, + uint8_t numStages, + q15_t * pCoeffs, + q15_t * pState, + int8_t postShift); + + + /** + * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 Biquad cascade filter + * @param[in] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 Biquad cascade filter. + * @param[in,out] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cascade_df1_init_q31( + arm_biquad_casd_df1_inst_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q31_t * pState, + int8_t postShift); + + + /** + * @brief Processing function for the floating-point Biquad cascade filter. + * @param[in] S points to an instance of the floating-point Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point Biquad cascade filter. + * @param[in,out] S points to an instance of the floating-point Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df1_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float32_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f32; + + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float64_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f64; + + /** + * @brief Instance structure for the Q15 matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q15_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_q15; + + /** + * @brief Instance structure for the Q31 matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q31_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_q31; + + + /** + * @brief Floating-point matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_cmplx_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_cmplx_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pScratch); + + + /** + * @brief Q31, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_cmplx_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @param[in] pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + + /** + * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @param[in] pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_fast_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + + /** + * @brief Q31 matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_fast_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix scaling. + * @param[in] pSrc points to the input matrix + * @param[in] scale scale factor + * @param[out] pDst points to the output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix scaling. + * @param[in] pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scaleFract, + int32_t shift, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix scaling. + * @param[in] pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scaleFract, + int32_t shift, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Q31 matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ + void arm_mat_init_q31( + arm_matrix_instance_q31 * S, + uint16_t nRows, + uint16_t nColumns, + q31_t * pData); + + + /** + * @brief Q15 matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ + void arm_mat_init_q15( + arm_matrix_instance_q15 * S, + uint16_t nRows, + uint16_t nColumns, + q15_t * pData); + + + /** + * @brief Floating-point matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ + void arm_mat_init_f32( + arm_matrix_instance_f32 * S, + uint16_t nRows, + uint16_t nColumns, + float32_t * pData); + + + + /** + * @brief Instance structure for the Q15 PID Control. + */ + typedef struct + { + q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ +#if !defined (ARM_MATH_DSP) + q15_t A1; + q15_t A2; +#else + q31_t A1; /**< The derived gain A1 = -Kp - 2Kd | Kd.*/ +#endif + q15_t state[3]; /**< The state array of length 3. */ + q15_t Kp; /**< The proportional gain. */ + q15_t Ki; /**< The integral gain. */ + q15_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q15; + + /** + * @brief Instance structure for the Q31 PID Control. + */ + typedef struct + { + q31_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + q31_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + q31_t A2; /**< The derived gain, A2 = Kd . */ + q31_t state[3]; /**< The state array of length 3. */ + q31_t Kp; /**< The proportional gain. */ + q31_t Ki; /**< The integral gain. */ + q31_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q31; + + /** + * @brief Instance structure for the floating-point PID Control. + */ + typedef struct + { + float32_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + float32_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + float32_t A2; /**< The derived gain, A2 = Kd . */ + float32_t state[3]; /**< The state array of length 3. */ + float32_t Kp; /**< The proportional gain. */ + float32_t Ki; /**< The integral gain. */ + float32_t Kd; /**< The derivative gain. */ + } arm_pid_instance_f32; + + + + /** + * @brief Initialization function for the floating-point PID Control. + * @param[in,out] S points to an instance of the PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_f32( + arm_pid_instance_f32 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the floating-point PID Control. + * @param[in,out] S is an instance of the floating-point PID Control structure + */ + void arm_pid_reset_f32( + arm_pid_instance_f32 * S); + + + /** + * @brief Initialization function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_q31( + arm_pid_instance_q31 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q31 PID Control structure + */ + + void arm_pid_reset_q31( + arm_pid_instance_q31 * S); + + + /** + * @brief Initialization function for the Q15 PID Control. + * @param[in,out] S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_q15( + arm_pid_instance_q15 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q15 PID Control. + * @param[in,out] S points to an instance of the q15 PID Control structure + */ + void arm_pid_reset_q15( + arm_pid_instance_q15 * S); + + + /** + * @brief Instance structure for the floating-point Linear Interpolate function. + */ + typedef struct + { + uint32_t nValues; /**< nValues */ + float32_t x1; /**< x1 */ + float32_t xSpacing; /**< xSpacing */ + float32_t *pYData; /**< pointer to the table of Y values */ + } arm_linear_interp_instance_f32; + + /** + * @brief Instance structure for the floating-point bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + float32_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_f32; + + /** + * @brief Instance structure for the Q31 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q31_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q31; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q15_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q15; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q7_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q7; + + + /** + * @brief Q7 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q15_t *pTwiddle; /**< points to the Sin twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix2_instance_q15; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_q15( + arm_cfft_radix2_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_q15( + const arm_cfft_radix2_instance_q15 * S, + q15_t * pSrc); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q15_t *pTwiddle; /**< points to the twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q15; + +/* Deprecated */ + arm_status arm_cfft_radix4_init_q15( + arm_cfft_radix4_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc); + + /** + * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q31_t *pTwiddle; /**< points to the Twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix2_instance_q31; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_q31( + arm_cfft_radix2_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_q31( + const arm_cfft_radix2_instance_q31 * S, + q31_t * pSrc); + + /** + * @brief Instance structure for the Q31 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q31_t *pTwiddle; /**< points to the twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q31; + +/* Deprecated */ + void arm_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc); + +/* Deprecated */ + arm_status arm_cfft_radix4_init_q31( + arm_cfft_radix4_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix2_instance_f32; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_f32( + arm_cfft_radix2_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_f32( + const arm_cfft_radix2_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix4_instance_f32; + +/* Deprecated */ + arm_status arm_cfft_radix4_init_f32( + arm_cfft_radix4_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Instance structure for the fixed-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const q15_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_q15; + +void arm_cfft_q15( + const arm_cfft_instance_q15 * S, + q15_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the fixed-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const q31_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_q31; + +void arm_cfft_q31( + const arm_cfft_instance_q31 * S, + q31_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_f32; + + void arm_cfft_f32( + const arm_cfft_instance_f32 * S, + float32_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the Q15 RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + q15_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + q15_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + const arm_cfft_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_q15; + + arm_status arm_rfft_init_q15( + arm_rfft_instance_q15 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst); + + /** + * @brief Instance structure for the Q31 RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + q31_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + q31_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + const arm_cfft_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_q31; + + arm_status arm_rfft_init_q31( + arm_rfft_instance_q31 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst); + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint16_t fftLenBy2; /**< length of the complex FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + float32_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + float32_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_f32; + + arm_status arm_rfft_init_f32( + arm_rfft_instance_f32 * S, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_f32( + const arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst); + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ +typedef struct + { + arm_cfft_instance_f32 Sint; /**< Internal CFFT structure. */ + uint16_t fftLenRFFT; /**< length of the real sequence */ + float32_t * pTwiddleRFFT; /**< Twiddle factors real stage */ + } arm_rfft_fast_instance_f32 ; + +arm_status arm_rfft_fast_init_f32 ( + arm_rfft_fast_instance_f32 * S, + uint16_t fftLen); + +void arm_rfft_fast_f32( + arm_rfft_fast_instance_f32 * S, + float32_t * p, float32_t * pOut, + uint8_t ifftFlag); + + /** + * @brief Instance structure for the floating-point DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + float32_t normalize; /**< normalizing factor. */ + float32_t *pTwiddle; /**< points to the twiddle factor table. */ + float32_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_f32; + + + /** + * @brief Initialization function for the floating-point DCT4/IDCT4. + * @param[in,out] S points to an instance of floating-point DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of floating-point RFFT/RIFFT structure. + * @param[in] S_CFFT points to an instance of floating-point CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. + */ + arm_status arm_dct4_init_f32( + arm_dct4_instance_f32 * S, + arm_rfft_instance_f32 * S_RFFT, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint16_t N, + uint16_t Nby2, + float32_t normalize); + + + /** + * @brief Processing function for the floating-point DCT4/IDCT4. + * @param[in] S points to an instance of the floating-point DCT4/IDCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer); + + + /** + * @brief Instance structure for the Q31 DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q31_t normalize; /**< normalizing factor. */ + q31_t *pTwiddle; /**< points to the twiddle factor table. */ + q31_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q31; + + + /** + * @brief Initialization function for the Q31 DCT4/IDCT4. + * @param[in,out] S points to an instance of Q31 DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of Q31 RFFT/RIFFT structure + * @param[in] S_CFFT points to an instance of Q31 CFFT/CIFFT structure + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + arm_status arm_dct4_init_q31( + arm_dct4_instance_q31 * S, + arm_rfft_instance_q31 * S_RFFT, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q31_t normalize); + + + /** + * @brief Processing function for the Q31 DCT4/IDCT4. + * @param[in] S points to an instance of the Q31 DCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer); + + + /** + * @brief Instance structure for the Q15 DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q15_t normalize; /**< normalizing factor. */ + q15_t *pTwiddle; /**< points to the twiddle factor table. */ + q15_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q15; + + + /** + * @brief Initialization function for the Q15 DCT4/IDCT4. + * @param[in,out] S points to an instance of Q15 DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of Q15 RFFT/RIFFT structure. + * @param[in] S_CFFT points to an instance of Q15 CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + arm_status arm_dct4_init_q15( + arm_dct4_instance_q15 * S, + arm_rfft_instance_q15 * S_RFFT, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q15_t normalize); + + + /** + * @brief Processing function for the Q15 DCT4/IDCT4. + * @param[in] S points to an instance of the Q15 DCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer); + + + /** + * @brief Floating-point vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a floating-point vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scale scale factor to be applied + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_f32( + float32_t * pSrc, + float32_t scale, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q7 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q7( + q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q15 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q15( + q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q31 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q31( + q31_t * pSrc, + q31_t scaleFract, + int8_t shift, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Dot product of floating-point vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t blockSize, + float32_t * result); + + + /** + * @brief Dot product of Q7 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q7( + q7_t * pSrcA, + q7_t * pSrcB, + uint32_t blockSize, + q31_t * result); + + + /** + * @brief Dot product of Q15 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + + /** + * @brief Dot product of Q31 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + + /** + * @brief Shifts the elements of a Q7 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q7( + q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Shifts the elements of a Q15 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q15( + q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Shifts the elements of a Q31 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q31( + q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a floating-point vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_f32( + float32_t * pSrc, + float32_t offset, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q7 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q7( + q7_t * pSrc, + q7_t offset, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q15 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q15( + q15_t * pSrc, + q15_t offset, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q31 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q31( + q31_t * pSrc, + q31_t offset, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a floating-point vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q7 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q15 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q31 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a floating-point vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q7 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q15 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q31 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a floating-point vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_f32( + float32_t value, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q7 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q7( + q7_t value, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q15 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q15( + q15_t value, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q31 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q31( + q31_t value, + q31_t * pDst, + uint32_t blockSize); + + +/** + * @brief Convolution of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + */ + void arm_conv_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + + /** + * @brief Convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + */ + void arm_conv_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + +/** + * @brief Convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + */ + void arm_conv_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + */ + void arm_conv_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Convolution of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + */ + void arm_conv_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + + /** + * @brief Partial convolution of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Partial convolution of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q7 sequences + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + +/** + * @brief Partial convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Instance structure for the Q15 FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_f32; + + + /** + * @brief Processing function for the floating-point FIR decimator. + * @param[in] S points to an instance of the floating-point FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_f32( + const arm_fir_decimate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR decimator. + * @param[in,out] S points to an instance of the floating-point FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_f32( + arm_fir_decimate_instance_f32 * S, + uint16_t numTaps, + uint8_t M, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR decimator. + * @param[in] S points to an instance of the Q15 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR decimator. + * @param[in,out] S points to an instance of the Q15 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_q15( + arm_fir_decimate_instance_q15 * S, + uint16_t numTaps, + uint8_t M, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR decimator. + * @param[in] S points to an instance of the Q31 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_fast_q31( + arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR decimator. + * @param[in,out] S points to an instance of the Q31 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_q31( + arm_fir_decimate_instance_q31 * S, + uint16_t numTaps, + uint8_t M, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q15_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */ + } arm_fir_interpolate_instance_f32; + + + /** + * @brief Processing function for the Q15 FIR interpolator. + * @param[in] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR interpolator. + * @param[in,out] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_q15( + arm_fir_interpolate_instance_q15 * S, + uint8_t L, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR interpolator. + * @param[in] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR interpolator. + * @param[in,out] S points to an instance of the Q31 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_q31( + arm_fir_interpolate_instance_q31 * S, + uint8_t L, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point FIR interpolator. + * @param[in] S points to an instance of the floating-point FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR interpolator. + * @param[in,out] S points to an instance of the floating-point FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_f32( + arm_fir_interpolate_instance_f32 * S, + uint8_t L, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the high precision Q31 Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */ + } arm_biquad_cas_df1_32x64_ins_q31; + + + /** + * @param[in] S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @param[in,out] S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cas_df1_32x64_init_q31( + arm_biquad_cas_df1_32x64_ins_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q63_t * pState, + uint8_t postShift); + + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f32; + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_stereo_df2T_instance_f32; + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float64_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + float64_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f64; + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df2T_f32( + const arm_biquad_cascade_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_stereo_df2T_f32( + const arm_biquad_cascade_stereo_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df2T_f64( + const arm_biquad_cascade_df2T_instance_f64 * S, + float64_t * pSrc, + float64_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df2T_init_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_stereo_df2T_init_f32( + arm_biquad_cascade_stereo_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df2T_init_f64( + arm_biquad_cascade_df2T_instance_f64 * S, + uint8_t numStages, + float64_t * pCoeffs, + float64_t * pState); + + + /** + * @brief Instance structure for the Q15 FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_f32; + + + /** + * @brief Initialization function for the Q15 FIR lattice filter. + * @param[in] S points to an instance of the Q15 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_q15( + arm_fir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pCoeffs, + q15_t * pState); + + + /** + * @brief Processing function for the Q15 FIR lattice filter. + * @param[in] S points to an instance of the Q15 FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR lattice filter. + * @param[in] S points to an instance of the Q31 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_q31( + arm_fir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pCoeffs, + q31_t * pState); + + + /** + * @brief Processing function for the Q31 FIR lattice filter. + * @param[in] S points to an instance of the Q31 FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the floating-point FIR lattice filter. + * @param[in] S points to an instance of the floating-point FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_f32( + arm_fir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Processing function for the floating-point FIR lattice filter. + * @param[in] S points to an instance of the floating-point FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_f32; + + + /** + * @brief Processing function for the floating-point IIR lattice filter. + * @param[in] S points to an instance of the floating-point IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point IIR lattice filter. + * @param[in] S points to an instance of the floating-point IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to the state buffer. The array is of length numStages+blockSize-1. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_init_f32( + arm_iir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pkCoeffs, + float32_t * pvCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 IIR lattice filter. + * @param[in] S points to an instance of the Q31 IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 IIR lattice filter. + * @param[in] S points to an instance of the Q31 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_init_q31( + arm_iir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pkCoeffs, + q31_t * pvCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 IIR lattice filter. + * @param[in] S points to an instance of the Q15 IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the Q15 IIR lattice filter. + * @param[in] S points to an instance of the fixed-point Q15 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process per call. + */ + void arm_iir_lattice_init_q15( + arm_iir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pkCoeffs, + q15_t * pvCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the floating-point LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that controls filter coefficient updates. */ + } arm_lms_instance_f32; + + + /** + * @brief Processing function for floating-point LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_f32( + const arm_lms_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for floating-point LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to the coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_init_f32( + arm_lms_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q15; + + + /** + * @brief Initialization function for the Q15 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to the coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_init_q15( + arm_lms_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint32_t postShift); + + + /** + * @brief Processing function for Q15 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_q15( + const arm_lms_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q31; + + + /** + * @brief Processing function for Q31 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_q31( + const arm_lms_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q31 LMS filter. + * @param[in] S points to an instance of the Q31 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_init_q31( + arm_lms_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint32_t postShift); + + + /** + * @brief Instance structure for the floating-point normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that control filter coefficient updates. */ + float32_t energy; /**< saves previous frame energy. */ + float32_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_f32; + + + /** + * @brief Processing function for floating-point normalized LMS filter. + * @param[in] S points to an instance of the floating-point normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for floating-point normalized LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_init_f32( + arm_lms_norm_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + q31_t *recipTable; /**< points to the reciprocal initial value table. */ + q31_t energy; /**< saves previous frame energy. */ + q31_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q31; + + + /** + * @brief Processing function for Q31 normalized LMS filter. + * @param[in] S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q31 normalized LMS filter. + * @param[in] S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_norm_init_q31( + arm_lms_norm_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint8_t postShift); + + + /** + * @brief Instance structure for the Q15 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< Number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + q15_t *recipTable; /**< Points to the reciprocal initial value table. */ + q15_t energy; /**< saves previous frame energy. */ + q15_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q15; + + + /** + * @brief Processing function for Q15 normalized LMS filter. + * @param[in] S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q15 normalized LMS filter. + * @param[in] S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_norm_init_q15( + arm_lms_norm_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint8_t postShift); + + + /** + * @brief Correlation of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + + /** + * @brief Correlation of Q15 sequences + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + */ + void arm_correlate_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + + + /** + * @brief Correlation of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + + void arm_correlate_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + + void arm_correlate_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + */ + void arm_correlate_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + + + /** + * @brief Correlation of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Correlation of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + */ + void arm_correlate_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Correlation of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + + /** + * @brief Instance structure for the floating-point sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + float32_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_f32; + + /** + * @brief Instance structure for the Q31 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q31_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q31; + + /** + * @brief Instance structure for the Q15 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q15_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q15; + + /** + * @brief Instance structure for the Q7 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q7_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q7; + + + /** + * @brief Processing function for the floating-point sparse FIR filter. + * @param[in] S points to an instance of the floating-point sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point sparse FIR filter. + * @param[in,out] S points to an instance of the floating-point sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_f32( + arm_fir_sparse_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 sparse FIR filter. + * @param[in] S points to an instance of the Q31 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 sparse FIR filter. + * @param[in,out] S points to an instance of the Q31 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q31( + arm_fir_sparse_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 sparse FIR filter. + * @param[in] S points to an instance of the Q15 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 sparse FIR filter. + * @param[in,out] S points to an instance of the Q15 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q15( + arm_fir_sparse_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q7 sparse FIR filter. + * @param[in] S points to an instance of the Q7 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + q7_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q7 sparse FIR filter. + * @param[in,out] S points to an instance of the Q7 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q7( + arm_fir_sparse_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Floating-point sin_cos function. + * @param[in] theta input value in degrees + * @param[out] pSinVal points to the processed sine output. + * @param[out] pCosVal points to the processed cos output. + */ + void arm_sin_cos_f32( + float32_t theta, + float32_t * pSinVal, + float32_t * pCosVal); + + + /** + * @brief Q31 sin_cos function. + * @param[in] theta scaled input value in degrees + * @param[out] pSinVal points to the processed sine output. + * @param[out] pCosVal points to the processed cosine output. + */ + void arm_sin_cos_q31( + q31_t theta, + q31_t * pSinVal, + q31_t * pCosVal); + + + /** + * @brief Floating-point complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup PID PID Motor Control + * + * A Proportional Integral Derivative (PID) controller is a generic feedback control + * loop mechanism widely used in industrial control systems. + * A PID controller is the most commonly used type of feedback controller. + * + * This set of functions implements (PID) controllers + * for Q15, Q31, and floating-point data types. The functions operate on a single sample + * of data and each call to the function returns a single processed value. + * S points to an instance of the PID control data structure. in + * is the input sample value. The functions return the output value. + * + * \par Algorithm: + *
+   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
+   *    A0 = Kp + Ki + Kd
+   *    A1 = (-Kp ) - (2 * Kd )
+   *    A2 = Kd  
+ * + * \par + * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant + * + * \par + * \image html PID.gif "Proportional Integral Derivative Controller" + * + * \par + * The PID controller calculates an "error" value as the difference between + * the measured output and the reference input. + * The controller attempts to minimize the error by adjusting the process control inputs. + * The proportional value determines the reaction to the current error, + * the integral value determines the reaction based on the sum of recent errors, + * and the derivative value determines the reaction based on the rate at which the error has been changing. + * + * \par Instance Structure + * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. + * A separate instance structure must be defined for each PID Controller. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Reset Functions + * There is also an associated reset function for each data type which clears the state array. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains. + * - Zeros out the values in the state buffer. + * + * \par + * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the PID Controller functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup PID + * @{ + */ + + /** + * @brief Process function for the floating-point PID Control. + * @param[in,out] S is an instance of the floating-point PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + */ + CMSIS_INLINE __STATIC_INLINE float32_t arm_pid_f32( + arm_pid_instance_f32 * S, + float32_t in) + { + float32_t out; + + /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ + out = (S->A0 * in) + + (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + + /** + * @brief Process function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q31 PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. + * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + */ + CMSIS_INLINE __STATIC_INLINE q31_t arm_pid_q31( + arm_pid_instance_q31 * S, + q31_t in) + { + q63_t acc; + q31_t out; + + /* acc = A0 * x[n] */ + acc = (q63_t) S->A0 * in; + + /* acc += A1 * x[n-1] */ + acc += (q63_t) S->A1 * S->state[0]; + + /* acc += A2 * x[n-2] */ + acc += (q63_t) S->A2 * S->state[1]; + + /* convert output to 1.31 format to add y[n-1] */ + out = (q31_t) (acc >> 31U); + + /* out += y[n-1] */ + out += S->state[2]; + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + } + + + /** + * @brief Process function for the Q15 PID Control. + * @param[in,out] S points to an instance of the Q15 PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ + CMSIS_INLINE __STATIC_INLINE q15_t arm_pid_q15( + arm_pid_instance_q15 * S, + q15_t in) + { + q63_t acc; + q15_t out; + +#if defined (ARM_MATH_DSP) + __SIMD32_TYPE *vstate; + + /* Implementation of PID controller */ + + /* acc = A0 * x[n] */ + acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in); + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + vstate = __SIMD32_CONST(S->state); + acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)*vstate, (uint64_t)acc); +#else + /* acc = A0 * x[n] */ + acc = ((q31_t) S->A0) * in; + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc += (q31_t) S->A1 * S->state[0]; + acc += (q31_t) S->A2 * S->state[1]; +#endif + + /* acc += y[n-1] */ + acc += (q31_t) S->state[2] << 15; + + /* saturate the output */ + out = (q15_t) (__SSAT((acc >> 15), 16)); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + } + + /** + * @} end of PID group + */ + + + /** + * @brief Floating-point matrix inverse. + * @param[in] src points to the instance of the input floating-point matrix structure. + * @param[out] dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + arm_status arm_mat_inverse_f32( + const arm_matrix_instance_f32 * src, + arm_matrix_instance_f32 * dst); + + + /** + * @brief Floating-point matrix inverse. + * @param[in] src points to the instance of the input floating-point matrix structure. + * @param[out] dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + arm_status arm_mat_inverse_f64( + const arm_matrix_instance_f64 * src, + arm_matrix_instance_f64 * dst); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup clarke Vector Clarke Transform + * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. + * Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents + * in the two-phase orthogonal stator axis Ialpha and Ibeta. + * When Ialpha is superposed with Ia as shown in the figure below + * \image html clarke.gif Stator current space vector and its components in (a,b). + * and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta + * can be calculated using only Ia and Ib. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeFormula.gif + * where Ia and Ib are the instantaneous stator phases and + * pIalpha and pIbeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup clarke + * @{ + */ + + /** + * + * @brief Floating-point Clarke transform + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + */ + CMSIS_INLINE __STATIC_INLINE void arm_clarke_f32( + float32_t Ia, + float32_t Ib, + float32_t * pIalpha, + float32_t * pIbeta) + { + /* Calculate pIalpha using the equation, pIalpha = Ia */ + *pIalpha = Ia; + + /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */ + *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib); + } + + + /** + * @brief Clarke transform for Q31 version + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition, hence there is no risk of overflow. + */ + CMSIS_INLINE __STATIC_INLINE void arm_clarke_q31( + q31_t Ia, + q31_t Ib, + q31_t * pIalpha, + q31_t * pIbeta) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIalpha from Ia by equation pIalpha = Ia */ + *pIalpha = Ia; + + /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30); + + /* Intermediate product is calculated by (2/sqrt(3) * Ib) */ + product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30); + + /* pIbeta is calculated by adding the intermediate products */ + *pIbeta = __QADD(product1, product2); + } + + /** + * @} end of clarke group + */ + + /** + * @brief Converts the elements of the Q7 vector to Q31 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_q7_to_q31( + q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_clarke Vector Inverse Clarke Transform + * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeInvFormula.gif + * where pIa and pIb are the instantaneous stator phases and + * Ialpha and Ibeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_clarke + * @{ + */ + + /** + * @brief Floating-point Inverse Clarke transform + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] pIa points to output three-phase coordinate a + * @param[out] pIb points to output three-phase coordinate b + */ + CMSIS_INLINE __STATIC_INLINE void arm_inv_clarke_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pIa, + float32_t * pIb) + { + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */ + *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta; + } + + + /** + * @brief Inverse Clarke transform for Q31 version + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] pIa points to output three-phase coordinate a + * @param[out] pIb points to output three-phase coordinate b + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the subtraction, hence there is no risk of overflow. + */ + CMSIS_INLINE __STATIC_INLINE void arm_inv_clarke_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pIa, + q31_t * pIb) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31); + + /* Intermediate product is calculated by (1/sqrt(3) * pIb) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31); + + /* pIb is calculated by subtracting the products */ + *pIb = __QSUB(product2, product1); + } + + /** + * @} end of inv_clarke group + */ + + /** + * @brief Converts the elements of the Q7 vector to Q15 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_q7_to_q15( + q7_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup park Vector Park Transform + * + * Forward Park transform converts the input two-coordinate vector to flux and torque components. + * The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents + * from the stationary to the moving reference frame and control the spatial relationship between + * the stator vector current and rotor flux vector. + * If we consider the d axis aligned with the rotor flux, the diagram below shows the + * current vector and the relationship from the two reference frames: + * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame" + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkFormula.gif + * where Ialpha and Ibeta are the stator vector components, + * pId and pIq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup park + * @{ + */ + + /** + * @brief Floating-point Park transform + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] pId points to output rotor reference frame d + * @param[out] pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * + * The function implements the forward Park transform. + * + */ + CMSIS_INLINE __STATIC_INLINE void arm_park_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pId, + float32_t * pIq, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */ + *pId = Ialpha * cosVal + Ibeta * sinVal; + + /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */ + *pIq = -Ialpha * sinVal + Ibeta * cosVal; + } + + + /** + * @brief Park transform for Q31 version + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] pId points to output rotor reference frame d + * @param[out] pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition and subtraction, hence there is no risk of overflow. + */ + CMSIS_INLINE __STATIC_INLINE void arm_park_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pId, + q31_t * pIq, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Ialpha * cosVal) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * sinVal) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Ialpha * sinVal) */ + product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * cosVal) */ + product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31); + + /* Calculate pId by adding the two intermediate products 1 and 2 */ + *pId = __QADD(product1, product2); + + /* Calculate pIq by subtracting the two intermediate products 3 from 4 */ + *pIq = __QSUB(product4, product3); + } + + /** + * @} end of park group + */ + + /** + * @brief Converts the elements of the Q7 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q7_to_float( + q7_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_park Vector Inverse Park transform + * Inverse Park transform converts the input flux and torque components to two-coordinate vector. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkInvFormula.gif + * where pIalpha and pIbeta are the stator vector components, + * Id and Iq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_park + * @{ + */ + + /** + * @brief Floating-point Inverse Park transform + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + */ + CMSIS_INLINE __STATIC_INLINE void arm_inv_park_f32( + float32_t Id, + float32_t Iq, + float32_t * pIalpha, + float32_t * pIbeta, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */ + *pIalpha = Id * cosVal - Iq * sinVal; + + /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */ + *pIbeta = Id * sinVal + Iq * cosVal; + } + + + /** + * @brief Inverse Park transform for Q31 version + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition, hence there is no risk of overflow. + */ + CMSIS_INLINE __STATIC_INLINE void arm_inv_park_q31( + q31_t Id, + q31_t Iq, + q31_t * pIalpha, + q31_t * pIbeta, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Id * cosVal) */ + product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Iq * sinVal) */ + product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Id * sinVal) */ + product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Iq * cosVal) */ + product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31); + + /* Calculate pIalpha by using the two intermediate products 1 and 2 */ + *pIalpha = __QSUB(product1, product2); + + /* Calculate pIbeta by using the two intermediate products 3 and 4 */ + *pIbeta = __QADD(product4, product3); + } + + /** + * @} end of Inverse park group + */ + + + /** + * @brief Converts the elements of the Q31 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_float( + q31_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup LinearInterpolate Linear Interpolation + * + * Linear interpolation is a method of curve fitting using linear polynomials. + * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line + * + * \par + * \image html LinearInterp.gif "Linear interpolation" + * + * \par + * A Linear Interpolate function calculates an output value(y), for the input(x) + * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values) + * + * \par Algorithm: + *
+   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
+   *       where x0, x1 are nearest values of input x
+   *             y0, y1 are nearest values to output y
+   * 
+ * + * \par + * This set of functions implements Linear interpolation process + * for Q7, Q15, Q31, and floating-point data types. The functions operate on a single + * sample of data and each call to the function returns a single processed value. + * S points to an instance of the Linear Interpolate function data structure. + * x is the input sample value. The functions returns the output value. + * + * \par + * if x is outside of the table boundary, Linear interpolation returns first value of the table + * if x is below input range and returns last value of table if x is above range. + */ + + /** + * @addtogroup LinearInterpolate + * @{ + */ + + /** + * @brief Process function for the floating-point Linear Interpolation Function. + * @param[in,out] S is an instance of the floating-point Linear Interpolation structure + * @param[in] x input sample to process + * @return y processed output sample. + * + */ + CMSIS_INLINE __STATIC_INLINE float32_t arm_linear_interp_f32( + arm_linear_interp_instance_f32 * S, + float32_t x) + { + float32_t y; + float32_t x0, x1; /* Nearest input values */ + float32_t y0, y1; /* Nearest output values */ + float32_t xSpacing = S->xSpacing; /* spacing between input values */ + int32_t i; /* Index variable */ + float32_t *pYData = S->pYData; /* pointer to output table */ + + /* Calculation of index */ + i = (int32_t) ((x - S->x1) / xSpacing); + + if (i < 0) + { + /* Iniatilize output for below specified range as least output value of table */ + y = pYData[0]; + } + else if ((uint32_t)i >= S->nValues) + { + /* Iniatilize output for above specified range as last output value of table */ + y = pYData[S->nValues - 1]; + } + else + { + /* Calculation of nearest input values */ + x0 = S->x1 + i * xSpacing; + x1 = S->x1 + (i + 1) * xSpacing; + + /* Read of nearest output values */ + y0 = pYData[i]; + y1 = pYData[i + 1]; + + /* Calculation of output */ + y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0)); + + } + + /* returns output value */ + return (y); + } + + + /** + * + * @brief Process function for the Q31 Linear Interpolation Function. + * @param[in] pYData pointer to Q31 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + CMSIS_INLINE __STATIC_INLINE q31_t arm_linear_interp_q31( + q31_t * pYData, + q31_t x, + uint32_t nValues) + { + q31_t y; /* output */ + q31_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & (q31_t)0xFFF00000) >> 20); + + if (index >= (int32_t)(nValues - 1)) + { + return (pYData[nValues - 1]); + } + else if (index < 0) + { + return (pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* shift left by 11 to keep fract in 1.31 format */ + fract = (x & 0x000FFFFF) << 11; + + /* Read two nearest output values from the index in 1.31(q31) format */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract) and y is in 2.30 format */ + y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32)); + + /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */ + y += ((q31_t) (((q63_t) y1 * fract) >> 32)); + + /* Convert y to 1.31 format */ + return (y << 1U); + } + } + + + /** + * + * @brief Process function for the Q15 Linear Interpolation Function. + * @param[in] pYData pointer to Q15 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + CMSIS_INLINE __STATIC_INLINE q15_t arm_linear_interp_q15( + q15_t * pYData, + q31_t x, + uint32_t nValues) + { + q63_t y; /* output */ + q15_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & (int32_t)0xFFF00000) >> 20); + + if (index >= (int32_t)(nValues - 1)) + { + return (pYData[nValues - 1]); + } + else if (index < 0) + { + return (pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract) and y is in 13.35 format */ + y = ((q63_t) y0 * (0xFFFFF - fract)); + + /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */ + y += ((q63_t) y1 * (fract)); + + /* convert y to 1.15 format */ + return (q15_t) (y >> 20); + } + } + + + /** + * + * @brief Process function for the Q7 Linear Interpolation Function. + * @param[in] pYData pointer to Q7 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + */ + CMSIS_INLINE __STATIC_INLINE q7_t arm_linear_interp_q7( + q7_t * pYData, + q31_t x, + uint32_t nValues) + { + q31_t y; /* output */ + q7_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + uint32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + if (x < 0) + { + return (pYData[0]); + } + index = (x >> 20) & 0xfff; + + if (index >= (nValues - 1)) + { + return (pYData[nValues - 1]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index and are in 1.7(q7) format */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */ + y = ((y0 * (0xFFFFF - fract))); + + /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */ + y += (y1 * fract); + + /* convert y to 1.7(q7) format */ + return (q7_t) (y >> 20); + } + } + + /** + * @} end of LinearInterpolate group + */ + + /** + * @brief Fast approximation to the trigonometric sine function for floating-point data. + * @param[in] x input value in radians. + * @return sin(x). + */ + float32_t arm_sin_f32( + float32_t x); + + + /** + * @brief Fast approximation to the trigonometric sine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + q31_t arm_sin_q31( + q31_t x); + + + /** + * @brief Fast approximation to the trigonometric sine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + q15_t arm_sin_q15( + q15_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for floating-point data. + * @param[in] x input value in radians. + * @return cos(x). + */ + float32_t arm_cos_f32( + float32_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + q31_t arm_cos_q31( + q31_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + q15_t arm_cos_q15( + q15_t x); + + + /** + * @ingroup groupFastMath + */ + + + /** + * @defgroup SQRT Square Root + * + * Computes the square root of a number. + * There are separate functions for Q15, Q31, and floating-point data types. + * The square root function is computed using the Newton-Raphson algorithm. + * This is an iterative algorithm of the form: + *
+   *      x1 = x0 - f(x0)/f'(x0)
+   * 
+ * where x1 is the current estimate, + * x0 is the previous estimate, and + * f'(x0) is the derivative of f() evaluated at x0. + * For the square root function, the algorithm reduces to: + *
+   *     x0 = in/2                         [initial guess]
+   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
+   * 
+ */ + + + /** + * @addtogroup SQRT + * @{ + */ + + /** + * @brief Floating-point square root function. + * @param[in] in input value. + * @param[out] pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + CMSIS_INLINE __STATIC_INLINE arm_status arm_sqrt_f32( + float32_t in, + float32_t * pOut) + { + if (in >= 0.0f) + { + +#if (__FPU_USED == 1) && defined ( __CC_ARM ) + *pOut = __sqrtf(in); +#elif (__FPU_USED == 1) && (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) + *pOut = __builtin_sqrtf(in); +#elif (__FPU_USED == 1) && defined(__GNUC__) + *pOut = __builtin_sqrtf(in); +#elif (__FPU_USED == 1) && defined ( __ICCARM__ ) && (__VER__ >= 6040000) + __ASM("VSQRT.F32 %0,%1" : "=t"(*pOut) : "t"(in)); +#else + *pOut = sqrtf(in); +#endif + + return (ARM_MATH_SUCCESS); + } + else + { + *pOut = 0.0f; + return (ARM_MATH_ARGUMENT_ERROR); + } + } + + + /** + * @brief Q31 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. + * @param[out] pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + arm_status arm_sqrt_q31( + q31_t in, + q31_t * pOut); + + + /** + * @brief Q15 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. + * @param[out] pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + arm_status arm_sqrt_q15( + q15_t in, + q15_t * pOut); + + /** + * @} end of SQRT group + */ + + + /** + * @brief floating-point Circular write function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularWrite_f32( + int32_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const int32_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + + /** + * @brief floating-point Circular Read function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularRead_f32( + int32_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + int32_t * dst, + int32_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == (int32_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q15 Circular write function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularWrite_q15( + q15_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q15_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + /** + * @brief Q15 Circular Read function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularRead_q15( + q15_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q15_t * dst, + q15_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == (q15_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update wOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q7 Circular write function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularWrite_q7( + q7_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q7_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + /** + * @brief Q7 Circular Read function. + */ + CMSIS_INLINE __STATIC_INLINE void arm_circularRead_q7( + q7_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q7_t * dst, + q7_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == (q7_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Sum of the squares of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q15( + q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q7( + q7_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Mean value of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult); + + + /** + * @brief Mean value of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Mean value of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Mean value of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Variance of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Variance of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Variance of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Standard deviation of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Standard deviation of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Standard deviation of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Floating-point complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t numSamples, + q31_t * realResult, + q31_t * imagResult); + + + /** + * @brief Q31 complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t numSamples, + q63_t * realResult, + q63_t * imagResult); + + + /** + * @brief Floating-point complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t numSamples, + float32_t * realResult, + float32_t * imagResult); + + + /** + * @brief Q15 complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_q15( + q15_t * pSrcCmplx, + q15_t * pSrcReal, + q15_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_q31( + q31_t * pSrcCmplx, + q31_t * pSrcReal, + q31_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_f32( + float32_t * pSrcCmplx, + float32_t * pSrcReal, + float32_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Minimum value of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] result is output pointer + * @param[in] index is the array index of the minimum value in the input buffer. + */ + void arm_min_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * result, + uint32_t * index); + + + /** + * @brief Minimum value of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[in] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Minimum value of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[out] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Minimum value of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[out] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q7 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q15 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q31 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a floating-point vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Q15 complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Converts the elements of the floating-point vector to Q31 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q31( + float32_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the floating-point vector to Q15 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q15( + float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the floating-point vector to Q7 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q7( + float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q15 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_q15( + q31_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q7 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_q7( + q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_float( + q15_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q31 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_q31( + q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q7 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_q7( + q15_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup BilinearInterpolate Bilinear Interpolation + * + * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. + * The underlying function f(x, y) is sampled on a regular grid and the interpolation process + * determines values between the grid points. + * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. + * Bilinear interpolation is often used in image processing to rescale images. + * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types. + * + * Algorithm + * \par + * The instance structure used by the bilinear interpolation functions describes a two dimensional data table. + * For floating-point, the instance structure is defined as: + *
+   *   typedef struct
+   *   {
+   *     uint16_t numRows;
+   *     uint16_t numCols;
+   *     float32_t *pData;
+   * } arm_bilinear_interp_instance_f32;
+   * 
+ * + * \par + * where numRows specifies the number of rows in the table; + * numCols specifies the number of columns in the table; + * and pData points to an array of size numRows*numCols values. + * The data table pTable is organized in row order and the supplied data values fall on integer indexes. + * That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers. + * + * \par + * Let (x, y) specify the desired interpolation point. Then define: + *
+   *     XF = floor(x)
+   *     YF = floor(y)
+   * 
+ * \par + * The interpolated output point is computed as: + *
+   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
+   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
+   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
+   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
+   * 
+ * Note that the coordinates (x, y) contain integer and fractional components. + * The integer components specify which portion of the table to use while the + * fractional components control the interpolation processor. + * + * \par + * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. + */ + + /** + * @addtogroup BilinearInterpolate + * @{ + */ + + + /** + * + * @brief Floating-point bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate. + * @param[in] Y interpolation coordinate. + * @return out interpolated value. + */ + CMSIS_INLINE __STATIC_INLINE float32_t arm_bilinear_interp_f32( + const arm_bilinear_interp_instance_f32 * S, + float32_t X, + float32_t Y) + { + float32_t out; + float32_t f00, f01, f10, f11; + float32_t *pData = S->pData; + int32_t xIndex, yIndex, index; + float32_t xdiff, ydiff; + float32_t b1, b2, b3, b4; + + xIndex = (int32_t) X; + yIndex = (int32_t) Y; + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (xIndex < 0 || xIndex > (S->numRows - 1) || yIndex < 0 || yIndex > (S->numCols - 1)) + { + return (0); + } + + /* Calculation of index for two nearest points in X-direction */ + index = (xIndex - 1) + (yIndex - 1) * S->numCols; + + + /* Read two nearest points in X-direction */ + f00 = pData[index]; + f01 = pData[index + 1]; + + /* Calculation of index for two nearest points in Y-direction */ + index = (xIndex - 1) + (yIndex) * S->numCols; + + + /* Read two nearest points in Y-direction */ + f10 = pData[index]; + f11 = pData[index + 1]; + + /* Calculation of intermediate values */ + b1 = f00; + b2 = f01 - f00; + b3 = f10 - f00; + b4 = f00 - f01 - f10 + f11; + + /* Calculation of fractional part in X */ + xdiff = X - xIndex; + + /* Calculation of fractional part in Y */ + ydiff = Y - yIndex; + + /* Calculation of bi-linear interpolated output */ + out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff; + + /* return to application */ + return (out); + } + + + /** + * + * @brief Q31 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + CMSIS_INLINE __STATIC_INLINE q31_t arm_bilinear_interp_q31( + arm_bilinear_interp_instance_q31 * S, + q31_t X, + q31_t Y) + { + q31_t out; /* Temporary output */ + q31_t acc = 0; /* output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q31_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q31_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* shift left xfract by 11 to keep 1.31 format */ + xfract = (X & 0x000FFFFF) << 11U; + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + (int32_t)nCols * (cI) ]; + x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1]; + + /* 20 bits for the fractional part */ + /* shift left yfract by 11 to keep 1.31 format */ + yfract = (Y & 0x000FFFFF) << 11U; + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + (int32_t)nCols * (cI + 1) ]; + y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */ + out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32)); + acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32)); + + /* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (xfract) >> 32)); + + /* y1 * (1 - xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* y2 * (xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y2 * (xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* Convert acc to 1.31(q31) format */ + return ((q31_t)(acc << 2)); + } + + + /** + * @brief Q15 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + CMSIS_INLINE __STATIC_INLINE q15_t arm_bilinear_interp_q15( + arm_bilinear_interp_instance_q15 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q15_t x1, x2, y1, y2; /* Nearest output values */ + q31_t xfract, yfract; /* X, Y fractional parts */ + int32_t rI, cI; /* Row and column indices */ + q15_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & 0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; + x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; + y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */ + + /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */ + /* convert 13.35 to 13.31 by right shifting and out is in 1.31 */ + out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4U); + acc = ((q63_t) out * (0xFFFFF - yfract)); + + /* x2 * (xfract) * (1-yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4U); + acc += ((q63_t) out * (xfract)); + + /* y1 * (1 - xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4U); + acc += ((q63_t) out * (yfract)); + + /* y2 * (xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y2 * (xfract)) >> 4U); + acc += ((q63_t) out * (yfract)); + + /* acc is in 13.51 format and down shift acc by 36 times */ + /* Convert out to 1.15 format */ + return ((q15_t)(acc >> 36)); + } + + + /** + * @brief Q7 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + CMSIS_INLINE __STATIC_INLINE q7_t arm_bilinear_interp_q7( + arm_bilinear_interp_instance_q7 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q7_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q7_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & (q31_t)0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; + x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & (q31_t)0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; + y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */ + out = ((x1 * (0xFFFFF - xfract))); + acc = (((q63_t) out * (0xFFFFF - yfract))); + + /* x2 * (xfract) * (1-yfract) in 2.22 and adding to acc */ + out = ((x2 * (0xFFFFF - yfract))); + acc += (((q63_t) out * (xfract))); + + /* y1 * (1 - xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y1 * (0xFFFFF - xfract))); + acc += (((q63_t) out * (yfract))); + + /* y2 * (xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y2 * (yfract))); + acc += (((q63_t) out * (xfract))); + + /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */ + return ((q7_t)(acc >> 40)); + } + + /** + * @} end of BilinearInterpolate group + */ + + +/* SMMLAR */ +#define multAcc_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32) + +/* SMMLSR */ +#define multSub_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32) + +/* SMMULR */ +#define mult_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32) + +/* SMMLA */ +#define multAcc_32x32_keep32(a, x, y) \ + a += (q31_t) (((q63_t) x * y) >> 32) + +/* SMMLS */ +#define multSub_32x32_keep32(a, x, y) \ + a -= (q31_t) (((q63_t) x * y) >> 32) + +/* SMMUL */ +#define mult_32x32_keep32(a, x, y) \ + a = (q31_t) (((q63_t) x * y ) >> 32) + + +#if defined ( __CC_ARM ) + /* Enter low optimization region - place directly above function definition */ + #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) + #define LOW_OPTIMIZATION_ENTER \ + _Pragma ("push") \ + _Pragma ("O1") + #else + #define LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #if defined ( ARM_MATH_CM4 ) || defined ( ARM_MATH_CM7 ) + #define LOW_OPTIMIZATION_EXIT \ + _Pragma ("pop") + #else + #define LOW_OPTIMIZATION_EXIT + #endif + + /* Enter low optimization region - place directly above function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + + /* Exit low optimization region - place directly after end of function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined (__ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __GNUC__ ) + #define LOW_OPTIMIZATION_ENTER \ + __attribute__(( optimize("-O1") )) + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __ICCARM__ ) + /* Enter low optimization region - place directly above function definition */ + #if defined ( ARM_MATH_CM4 ) || defined ( ARM_MATH_CM7 ) + #define LOW_OPTIMIZATION_ENTER \ + _Pragma ("optimize=low") + #else + #define LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #define LOW_OPTIMIZATION_EXIT + + /* Enter low optimization region - place directly above function definition */ + #if defined ( ARM_MATH_CM4 ) || defined ( ARM_MATH_CM7 ) + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \ + _Pragma ("optimize=low") + #else + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __TI_ARM__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __CSMC__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __TASKING__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#endif + + +#ifdef __cplusplus +} +#endif + +/* Compiler specific diagnostic adjustment */ +#if defined ( __CC_ARM ) + +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + +#elif defined ( __GNUC__ ) +#pragma GCC diagnostic pop + +#elif defined ( __ICCARM__ ) + +#elif defined ( __TI_ARM__ ) + +#elif defined ( __CSMC__ ) + +#elif defined ( __TASKING__ ) + +#else + #error Unknown compiler +#endif + +#endif /* _ARM_MATH_H */ + +/** + * + * End of file. + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c new file mode 100644 index 0000000..69b2bfc --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_f32.c @@ -0,0 +1,153 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_abs_f32.c + * Description: Floating-point vector absolute value + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include + +/** + * @ingroup groupMath + */ + +/** + * @defgroup BasicAbs Vector Absolute Value + * + * Computes the absolute value of a vector on an element-by-element basis. + * + *
+ *     pDst[n] = abs(pSrc[n]),   0 <= n < blockSize.
+ * 
+ * + * The functions support in-place computation allowing the source and + * destination pointers to reference the same memory buffer. + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup BasicAbs + * @{ + */ + +/** + * @brief Floating-point vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + */ + +void arm_abs_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + float32_t in1, in2, in3, in4; /* temporary variables */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = |A| */ + /* Calculate absolute and then store the results in the destination buffer. */ + /* read sample from source */ + in1 = *pSrc; + in2 = *(pSrc + 1); + in3 = *(pSrc + 2); + + /* find absolute value */ + in1 = fabsf(in1); + + /* read sample from source */ + in4 = *(pSrc + 3); + + /* find absolute value */ + in2 = fabsf(in2); + + /* read sample from source */ + *pDst = in1; + + /* find absolute value */ + in3 = fabsf(in3); + + /* find absolute value */ + in4 = fabsf(in4); + + /* store result to destination */ + *(pDst + 1) = in2; + + /* store result to destination */ + *(pDst + 2) = in3; + + /* store result to destination */ + *(pDst + 3) = in4; + + + /* Update source pointer to process next sampels */ + pSrc += 4U; + + /* Update destination pointer to process next sampels */ + pDst += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = |A| */ + /* Calculate absolute and then store the results in the destination buffer. */ + *pDst++ = fabsf(*pSrc++); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicAbs group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c new file mode 100644 index 0000000..4bed8cc --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q15.c @@ -0,0 +1,167 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_abs_q15.c + * Description: Q15 vector absolute value + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAbs + * @{ + */ + +/** + * @brief Q15 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF. + */ + +void arm_abs_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + __SIMD32_TYPE *simd; + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t in1; /* Input value1 */ + q15_t in2; /* Input value2 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + simd = __SIMD32_CONST(pDst); + while (blkCnt > 0U) + { + /* C = |A| */ + /* Read two inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + + + /* Store the Absolute result in the destination buffer by packing the two values, in a single cycle */ +#ifndef ARM_MATH_BIG_ENDIAN + *simd++ = + __PKHBT(((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)), + ((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)), 16); + +#else + + + *simd++ = + __PKHBT(((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)), + ((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + in1 = *pSrc++; + in2 = *pSrc++; + + +#ifndef ARM_MATH_BIG_ENDIAN + + *simd++ = + __PKHBT(((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)), + ((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)), 16); + +#else + + + *simd++ = + __PKHBT(((in2 > 0) ? in2 : (q15_t)__QSUB16(0, in2)), + ((in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1)), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the loop counter */ + blkCnt--; + } + pDst = (q15_t *)simd; + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = |A| */ + /* Read the input */ + in1 = *pSrc++; + + /* Calculate absolute value of input and then store the result in the destination buffer. */ + *pDst++ = (in1 > 0) ? in1 : (q15_t)__QSUB16(0, in1); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t in; /* Temporary input variable */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = |A| */ + /* Read the input */ + in = *pSrc++; + + /* Calculate absolute value of input and then store the result in the destination buffer. */ + *pDst++ = (in > 0) ? in : ((in == (q15_t) 0x8000) ? 0x7fff : -in); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of BasicAbs group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c new file mode 100644 index 0000000..25cd036 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q31.c @@ -0,0 +1,118 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_abs_q31.c + * Description: Q31 vector absolute value + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAbs + * @{ + */ + + +/** + * @brief Q31 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF. + */ + +void arm_abs_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + q31_t in; /* Input value */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t in1, in2, in3, in4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = |A| */ + /* Calculate absolute of input (if -1 then saturated to 0x7fffffff) and then store the results in the destination buffer. */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + *pDst++ = (in1 > 0) ? in1 : (q31_t)__QSUB(0, in1); + *pDst++ = (in2 > 0) ? in2 : (q31_t)__QSUB(0, in2); + *pDst++ = (in3 > 0) ? in3 : (q31_t)__QSUB(0, in3); + *pDst++ = (in4 > 0) ? in4 : (q31_t)__QSUB(0, in4); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = |A| */ + /* Calculate absolute value of the input (if -1 then saturated to 0x7fffffff) and then store the results in the destination buffer. */ + in = *pSrc++; + *pDst++ = (in > 0) ? in : ((in == INT32_MIN) ? INT32_MAX : -in); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of BasicAbs group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c new file mode 100644 index 0000000..1ab2a1c --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_abs_q7.c @@ -0,0 +1,145 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_abs_q7.c + * Description: Q7 vector absolute value + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAbs + * @{ + */ + +/** + * @brief Q7 vector absolute value. + * @param[in] *pSrc points to the input buffer + * @param[out] *pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + * @return none. + * + * \par Conditions for optimum performance + * Input and output buffers should be aligned by 32-bit + * + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F. + */ + +void arm_abs_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + q7_t in; /* Input value1 */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t in1, in2, in3, in4; /* temporary input variables */ + q31_t out1, out2, out3, out4; /* temporary output variables */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = |A| */ + /* Read inputs */ + in1 = (q31_t) * pSrc; + in2 = (q31_t) * (pSrc + 1); + in3 = (q31_t) * (pSrc + 2); + + /* find absolute value */ + out1 = (in1 > 0) ? in1 : (q31_t)__QSUB8(0, in1); + + /* read input */ + in4 = (q31_t) * (pSrc + 3); + + /* find absolute value */ + out2 = (in2 > 0) ? in2 : (q31_t)__QSUB8(0, in2); + + /* store result to destination */ + *pDst = (q7_t) out1; + + /* find absolute value */ + out3 = (in3 > 0) ? in3 : (q31_t)__QSUB8(0, in3); + + /* find absolute value */ + out4 = (in4 > 0) ? in4 : (q31_t)__QSUB8(0, in4); + + /* store result to destination */ + *(pDst + 1) = (q7_t) out2; + + /* store result to destination */ + *(pDst + 2) = (q7_t) out3; + + /* store result to destination */ + *(pDst + 3) = (q7_t) out4; + + /* update pointers to process next samples */ + pSrc += 4U; + pDst += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; +#else + + /* Run the below code for Cortex-M0 */ + blkCnt = blockSize; + +#endif /* #define ARM_MATH_CM0_FAMILY */ + + while (blkCnt > 0U) + { + /* C = |A| */ + /* Read the input */ + in = *pSrc++; + + /* Store the Absolute result in the destination buffer */ + *pDst++ = (in > 0) ? in : ((in == (q7_t) 0x80) ? 0x7f : -in); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicAbs group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c new file mode 100644 index 0000000..4d1ac4d --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_f32.c @@ -0,0 +1,138 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_add_f32.c + * Description: Floating-point vector addition + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup BasicAdd Vector Addition + * + * Element-by-element addition of two vectors. + * + *
+ *     pDst[n] = pSrcA[n] + pSrcB[n],   0 <= n < blockSize.
+ * 
+ * + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup BasicAdd + * @{ + */ + +/** + * @brief Floating-point vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + +void arm_add_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + float32_t inA1, inA2, inA3, inA4; /* temporary input variabels */ + float32_t inB1, inB2, inB3, inB4; /* temporary input variables */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + + /* read four inputs from sourceA and four inputs from sourceB */ + inA1 = *pSrcA; + inB1 = *pSrcB; + inA2 = *(pSrcA + 1); + inB2 = *(pSrcB + 1); + inA3 = *(pSrcA + 2); + inB3 = *(pSrcB + 2); + inA4 = *(pSrcA + 3); + inB4 = *(pSrcB + 3); + + /* C = A + B */ + /* add and store result to destination */ + *pDst = inA1 + inB1; + *(pDst + 1) = inA2 + inB2; + *(pDst + 2) = inA3 + inB3; + *(pDst + 3) = inA4 + inB4; + + /* update pointers to process next samples */ + pSrcA += 4U; + pSrcB += 4U; + pDst += 4U; + + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (*pSrcA++) + (*pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicAdd group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c new file mode 100644 index 0000000..2a14c29 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q15.c @@ -0,0 +1,128 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_add_q15.c + * Description: Q15 vector addition + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAdd + * @{ + */ + +/** + * @brief Q15 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +void arm_add_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t inA1, inA2, inB1, inB2; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + inA1 = *__SIMD32(pSrcA)++; + inA2 = *__SIMD32(pSrcA)++; + inB1 = *__SIMD32(pSrcB)++; + inB2 = *__SIMD32(pSrcB)++; + + *__SIMD32(pDst)++ = __QADD16(inA1, inB1); + *__SIMD32(pDst)++ = __QADD16(inA2, inB2); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (q15_t) __QADD16(*pSrcA++, *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (q15_t) __SSAT(((q31_t) * pSrcA++ + *pSrcB++), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + +} + +/** + * @} end of BasicAdd group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c new file mode 100644 index 0000000..7503e1a --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q31.c @@ -0,0 +1,136 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_add_q31.c + * Description: Q31 vector addition + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAdd + * @{ + */ + + +/** + * @brief Q31 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated. + */ + +void arm_add_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t inA1, inA2, inA3, inA4; + q31_t inB1, inB2, inB3, inB4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + inA1 = *pSrcA++; + inA2 = *pSrcA++; + inB1 = *pSrcB++; + inB2 = *pSrcB++; + + inA3 = *pSrcA++; + inA4 = *pSrcA++; + inB3 = *pSrcB++; + inB4 = *pSrcB++; + + *pDst++ = __QADD(inA1, inB1); + *pDst++ = __QADD(inA2, inB2); + *pDst++ = __QADD(inA3, inB3); + *pDst++ = __QADD(inA4, inB4); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = __QADD(*pSrcA++, *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrcA++ + *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of BasicAdd group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c new file mode 100644 index 0000000..fee1865 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_add_q7.c @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_add_q7.c + * Description: Q7 vector addition + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicAdd + * @{ + */ + +/** + * @brief Q7 vector addition. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. + */ + +void arm_add_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *__SIMD32(pDst)++ = __QADD8(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (q7_t) __SSAT(*pSrcA++ + *pSrcB++, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A + B */ + /* Add and then store the results in the destination buffer. */ + *pDst++ = (q7_t) __SSAT((q15_t) * pSrcA++ + *pSrcB++, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + +} + +/** + * @} end of BasicAdd group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c new file mode 100644 index 0000000..6c7aae1 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_f32.c @@ -0,0 +1,123 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_dot_prod_f32.c + * Description: Floating-point dot product + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup dot_prod Vector Dot Product + * + * Computes the dot product of two vectors. + * The vectors are multiplied element-by-element and then summed. + * + *
+ *     sum = pSrcA[0]*pSrcB[0] + pSrcA[1]*pSrcB[1] + ... + pSrcA[blockSize-1]*pSrcB[blockSize-1]
+ * 
+ * + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup dot_prod + * @{ + */ + +/** + * @brief Dot product of floating-point vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + */ + + +void arm_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t blockSize, + float32_t * result) +{ + float32_t sum = 0.0f; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer */ + sum += (*pSrcA++) * (*pSrcB++); + sum += (*pSrcA++) * (*pSrcB++); + sum += (*pSrcA++) * (*pSrcB++); + sum += (*pSrcA++) * (*pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer. */ + sum += (*pSrcA++) * (*pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + /* Store the result back in the destination buffer */ + *result = sum; +} + +/** + * @} end of dot_prod group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c new file mode 100644 index 0000000..6a48242 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q15.c @@ -0,0 +1,128 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_dot_prod_q15.c + * Description: Q15 dot product + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup dot_prod + * @{ + */ + +/** + * @brief Dot product of Q15 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The intermediate multiplications are in 1.15 x 1.15 = 2.30 format and these + * results are added to a 64-bit accumulator in 34.30 format. + * Nonsaturating additions are used and given that there are 33 guard bits in the accumulator + * there is no risk of overflow. + * The return result is in 34.30 format. + */ + +void arm_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t blockSize, + q63_t * result) +{ + q63_t sum = 0; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer. */ + sum = __SMLALD(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++, sum); + sum = __SMLALD(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the results in a temporary buffer. */ + sum = __SMLALD(*pSrcA++, *pSrcB++, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the results in a temporary buffer. */ + sum += (q63_t) ((q31_t) * pSrcA++ * *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + /* Store the result in the destination buffer in 34.30 format */ + *result = sum; + +} + +/** + * @} end of dot_prod group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c new file mode 100644 index 0000000..e739879 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q31.c @@ -0,0 +1,131 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_dot_prod_q31.c + * Description: Q31 dot product + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup dot_prod + * @{ + */ + +/** + * @brief Dot product of Q31 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The intermediate multiplications are in 1.31 x 1.31 = 2.62 format and these + * are truncated to 2.48 format by discarding the lower 14 bits. + * The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format. + * There are 15 guard bits in the accumulator and there is no risk of overflow as long as + * the length of the vectors is less than 2^16 elements. + * The return result is in 16.48 format. + */ + +void arm_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t blockSize, + q63_t * result) +{ + q63_t sum = 0; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t inA1, inA2, inA3, inA4; + q31_t inB1, inB2, inB3, inB4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer. */ + inA1 = *pSrcA++; + inA2 = *pSrcA++; + inA3 = *pSrcA++; + inA4 = *pSrcA++; + inB1 = *pSrcB++; + inB2 = *pSrcB++; + inB3 = *pSrcB++; + inB4 = *pSrcB++; + + sum += ((q63_t) inA1 * inB1) >> 14U; + sum += ((q63_t) inA2 * inB2) >> 14U; + sum += ((q63_t) inA3 * inB3) >> 14U; + sum += ((q63_t) inA4 * inB4) >> 14U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Calculate dot product and then store the result in a temporary buffer. */ + sum += ((q63_t) * pSrcA++ * *pSrcB++) >> 14U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the result in the destination buffer in 16.48 format */ + *result = sum; +} + +/** + * @} end of dot_prod group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c new file mode 100644 index 0000000..ef08038 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_dot_prod_q7.c @@ -0,0 +1,147 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_dot_prod_q7.c + * Description: Q7 dot product + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup dot_prod + * @{ + */ + +/** + * @brief Dot product of Q7 vectors. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] *result output result returned here + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The intermediate multiplications are in 1.7 x 1.7 = 2.14 format and these + * results are added to an accumulator in 18.14 format. + * Nonsaturating additions are used and there is no danger of wrap around as long as + * the vectors are less than 2^18 elements long. + * The return result is in 18.14 format. + */ + +void arm_dot_prod_q7( + q7_t * pSrcA, + q7_t * pSrcB, + uint32_t blockSize, + q31_t * result) +{ + uint32_t blkCnt; /* loop counter */ + + q31_t sum = 0; /* Temporary variables to store output */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t input1, input2; /* Temporary variables to store input */ + q31_t inA1, inA2, inB1, inB2; /* Temporary variables to store input */ + + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* read 4 samples at a time from sourceA */ + input1 = *__SIMD32(pSrcA)++; + /* read 4 samples at a time from sourceB */ + input2 = *__SIMD32(pSrcB)++; + + /* extract two q7_t samples to q15_t samples */ + inA1 = __SXTB16(__ROR(input1, 8)); + /* extract reminaing two samples */ + inA2 = __SXTB16(input1); + /* extract two q7_t samples to q15_t samples */ + inB1 = __SXTB16(__ROR(input2, 8)); + /* extract reminaing two samples */ + inB2 = __SXTB16(input2); + + /* multiply and accumulate two samples at a time */ + sum = __SMLAD(inA1, inB1, sum); + sum = __SMLAD(inA2, inB2, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Dot product and then store the results in a temporary buffer. */ + sum = __SMLAD(*pSrcA++, *pSrcB++, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A[0]* B[0] + A[1]* B[1] + A[2]* B[2] + .....+ A[blockSize-1]* B[blockSize-1] */ + /* Dot product and then store the results in a temporary buffer. */ + sum += (q31_t) ((q15_t) * pSrcA++ * *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + + /* Store the result in the destination buffer in 18.14 format */ + *result = sum; +} + +/** + * @} end of dot_prod group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c new file mode 100644 index 0000000..334e32b --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_f32.c @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mult_f32.c + * Description: Floating-point vector multiplication + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup BasicMult Vector Multiplication + * + * Element-by-element multiplication of two vectors. + * + *
+ *     pDst[n] = pSrcA[n] * pSrcB[n],   0 <= n < blockSize.
+ * 
+ * + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup BasicMult + * @{ + */ + +/** + * @brief Floating-point vector multiplication. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + +void arm_mult_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counters */ +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + float32_t inA1, inA2, inA3, inA4; /* temporary input variables */ + float32_t inB1, inB2, inB3, inB4; /* temporary input variables */ + float32_t out1, out2, out3, out4; /* temporary output variables */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and store the results in output buffer */ + /* read sample from sourceA */ + inA1 = *pSrcA; + /* read sample from sourceB */ + inB1 = *pSrcB; + /* read sample from sourceA */ + inA2 = *(pSrcA + 1); + /* read sample from sourceB */ + inB2 = *(pSrcB + 1); + + /* out = sourceA * sourceB */ + out1 = inA1 * inB1; + + /* read sample from sourceA */ + inA3 = *(pSrcA + 2); + /* read sample from sourceB */ + inB3 = *(pSrcB + 2); + + /* out = sourceA * sourceB */ + out2 = inA2 * inB2; + + /* read sample from sourceA */ + inA4 = *(pSrcA + 3); + + /* store result to destination buffer */ + *pDst = out1; + + /* read sample from sourceB */ + inB4 = *(pSrcB + 3); + + /* out = sourceA * sourceB */ + out3 = inA3 * inB3; + + /* store result to destination buffer */ + *(pDst + 1) = out2; + + /* out = sourceA * sourceB */ + out4 = inA4 * inB4; + /* store result to destination buffer */ + *(pDst + 2) = out3; + /* store result to destination buffer */ + *(pDst + 3) = out4; + + + /* update pointers to process next samples */ + pSrcA += 4U; + pSrcB += 4U; + pDst += 4U; + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and store the results in output buffer */ + *pDst++ = (*pSrcA++) * (*pSrcB++); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c new file mode 100644 index 0000000..f3039d2 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q15.c @@ -0,0 +1,142 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mult_q15.c + * Description: Q15 vector multiplication + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicMult + * @{ + */ + + +/** + * @brief Q15 vector multiplication + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +void arm_mult_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counters */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t inA1, inA2, inB1, inB2; /* temporary input variables */ + q15_t out1, out2, out3, out4; /* temporary output variables */ + q31_t mul1, mul2, mul3, mul4; /* temporary variables */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* read two samples at a time from sourceA */ + inA1 = *__SIMD32(pSrcA)++; + /* read two samples at a time from sourceB */ + inB1 = *__SIMD32(pSrcB)++; + /* read two samples at a time from sourceA */ + inA2 = *__SIMD32(pSrcA)++; + /* read two samples at a time from sourceB */ + inB2 = *__SIMD32(pSrcB)++; + + /* multiply mul = sourceA * sourceB */ + mul1 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16)); + mul2 = (q31_t) ((q15_t) inA1 * (q15_t) inB1); + mul3 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB2 >> 16)); + mul4 = (q31_t) ((q15_t) inA2 * (q15_t) inB2); + + /* saturate result to 16 bit */ + out1 = (q15_t) __SSAT(mul1 >> 15, 16); + out2 = (q15_t) __SSAT(mul2 >> 15, 16); + out3 = (q15_t) __SSAT(mul3 >> 15, 16); + out4 = (q15_t) __SSAT(mul4 >> 15, 16); + + /* store the result */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT(out2, out1, 16); + *__SIMD32(pDst)++ = __PKHBT(out4, out3, 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT(out2, out1, 16); + *__SIMD32(pDst)++ = __PKHBT(out4, out3, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and store the result in the destination buffer */ + *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++)) >> 15), 16); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c new file mode 100644 index 0000000..93f0c73 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q31.c @@ -0,0 +1,148 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mult_q31.c + * Description: Q31 vector multiplication + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicMult + * @{ + */ + +/** + * @brief Q31 vector multiplication. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated. + */ + +void arm_mult_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counters */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t inA1, inA2, inA3, inA4; /* temporary input variables */ + q31_t inB1, inB2, inB3, inB4; /* temporary input variables */ + q31_t out1, out2, out3, out4; /* temporary output variables */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and then store the results in the destination buffer. */ + inA1 = *pSrcA++; + inA2 = *pSrcA++; + inA3 = *pSrcA++; + inA4 = *pSrcA++; + inB1 = *pSrcB++; + inB2 = *pSrcB++; + inB3 = *pSrcB++; + inB4 = *pSrcB++; + + out1 = ((q63_t) inA1 * inB1) >> 32; + out2 = ((q63_t) inA2 * inB2) >> 32; + out3 = ((q63_t) inA3 * inB3) >> 32; + out4 = ((q63_t) inA4 * inB4) >> 32; + + out1 = __SSAT(out1, 31); + out2 = __SSAT(out2, 31); + out3 = __SSAT(out3, 31); + out4 = __SSAT(out4, 31); + + *pDst++ = out1 << 1U; + *pDst++ = out2 << 1U; + *pDst++ = out3 << 1U; + *pDst++ = out4 << 1U; + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and then store the results in the destination buffer. */ + inA1 = *pSrcA++; + inB1 = *pSrcB++; + out1 = ((q63_t) inA1 * inB1) >> 32; + out1 = __SSAT(out1, 31); + *pDst++ = out1 << 1U; + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and then store the results in the destination buffer. */ + *pDst++ = + (q31_t) clip_q63_to_q31(((q63_t) (*pSrcA++) * (*pSrcB++)) >> 31); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ +} + +/** + * @} end of BasicMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c new file mode 100644 index 0000000..e5a8f24 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_mult_q7.c @@ -0,0 +1,115 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mult_q7.c + * Description: Q7 vector multiplication + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicMult + * @{ + */ + +/** + * @brief Q7 vector multiplication + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. + */ + +void arm_mult_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counters */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q7_t out1, out2, out3, out4; /* Temporary variables to store the product */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and store the results in temporary variables */ + out1 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8); + out2 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8); + out3 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8); + out4 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8); + + /* Store the results of 4 inputs in the destination buffer in single cycle by packing */ + *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and store the result in the destination buffer */ + *pDst++ = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++)) >> 7), 8); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c new file mode 100644 index 0000000..d463885 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_f32.c @@ -0,0 +1,134 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_negate_f32.c + * Description: Negates floating-point vectors + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup negate Vector Negate + * + * Negates the elements of a vector. + * + *
+ *     pDst[n] = -pSrc[n],   0 <= n < blockSize.
+ * 
+ * + * The functions support in-place computation allowing the source and + * destination pointers to reference the same memory buffer. + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup negate + * @{ + */ + +/** + * @brief Negates the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + +void arm_negate_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + float32_t in1, in2, in3, in4; /* temporary variables */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* read inputs from source */ + in1 = *pSrc; + in2 = *(pSrc + 1); + in3 = *(pSrc + 2); + in4 = *(pSrc + 3); + + /* negate the input */ + in1 = -in1; + in2 = -in2; + in3 = -in3; + in4 = -in4; + + /* store the result to destination */ + *pDst = in1; + *(pDst + 1) = in2; + *(pDst + 2) = in3; + *(pDst + 3) = in4; + + /* update pointers to process next samples */ + pSrc += 4U; + pDst += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = -A */ + /* Negate and then store the results in the destination buffer. */ + *pDst++ = -*pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of negate group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c new file mode 100644 index 0000000..0820f30 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q15.c @@ -0,0 +1,131 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_negate_q15.c + * Description: Negates Q15 vectors + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup negate + * @{ + */ + +/** + * @brief Negates the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * \par Conditions for optimum performance + * Input and output buffers should be aligned by 32-bit + * + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF. + */ + +void arm_negate_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + q15_t in; + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in1, in2; /* Temporary variables */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = -A */ + /* Read two inputs at a time */ + in1 = _SIMD32_OFFSET(pSrc); + in2 = _SIMD32_OFFSET(pSrc + 2); + + /* negate two samples at a time */ + in1 = __QSUB16(0, in1); + + /* negate two samples at a time */ + in2 = __QSUB16(0, in2); + + /* store the result to destination 2 samples at a time */ + _SIMD32_OFFSET(pDst) = in1; + /* store the result to destination 2 samples at a time */ + _SIMD32_OFFSET(pDst + 2) = in2; + + + /* update pointers to process next samples */ + pSrc += 4U; + pDst += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = -A */ + /* Negate and then store the result in the destination buffer. */ + in = *pSrc++; + *pDst++ = (in == (q15_t) 0x8000) ? 0x7fff : -in; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of negate group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c new file mode 100644 index 0000000..ab5985a --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q31.c @@ -0,0 +1,117 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_negate_q31.c + * Description: Negates Q31 vectors + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup negate + * @{ + */ + +/** + * @brief Negates the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF. + */ + +void arm_negate_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t in; /* Temporary variable */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t in1, in2, in3, in4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = -A */ + /* Negate and then store the results in the destination buffer. */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + *pDst++ = __QSUB(0, in1); + *pDst++ = __QSUB(0, in2); + *pDst++ = __QSUB(0, in3); + *pDst++ = __QSUB(0, in4); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = -A */ + /* Negate and then store the result in the destination buffer. */ + in = *pSrc++; + *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of negate group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c new file mode 100644 index 0000000..b225c5e --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_negate_q7.c @@ -0,0 +1,113 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_negate_q7.c + * Description: Negates Q7 vectors + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup negate + * @{ + */ + +/** + * @brief Negates the elements of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * The Q7 value -1 (0x80) will be saturated to the maximum allowable positive value 0x7F. + */ + +void arm_negate_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + q7_t in; + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t input; /* Input values1-4 */ + q31_t zero = 0x00000000; + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = -A */ + /* Read four inputs */ + input = *__SIMD32(pSrc)++; + + /* Store the Negated results in the destination buffer in a single cycle by packing the results */ + *__SIMD32(pDst)++ = __QSUB8(zero, input); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = -A */ + /* Negate and then store the results in the destination buffer. */ \ + in = *pSrc++; + *pDst++ = (in == (q7_t) 0x80) ? 0x7f : -in; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of negate group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c new file mode 100644 index 0000000..c35fe8e --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_f32.c @@ -0,0 +1,154 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_offset_f32.c + * Description: Floating-point vector offset + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup offset Vector Offset + * + * Adds a constant offset to each element of a vector. + * + *
+ *     pDst[n] = pSrc[n] + offset,   0 <= n < blockSize.
+ * 
+ * + * The functions support in-place computation allowing the source and + * destination pointers to reference the same memory buffer. + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup offset + * @{ + */ + +/** + * @brief Adds a constant offset to a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + +void arm_offset_f32( + float32_t * pSrc, + float32_t offset, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + float32_t in1, in2, in3, in4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination buffer. */ + /* read samples from source */ + in1 = *pSrc; + in2 = *(pSrc + 1); + + /* add offset to input */ + in1 = in1 + offset; + + /* read samples from source */ + in3 = *(pSrc + 2); + + /* add offset to input */ + in2 = in2 + offset; + + /* read samples from source */ + in4 = *(pSrc + 3); + + /* add offset to input */ + in3 = in3 + offset; + + /* store result to destination */ + *pDst = in1; + + /* add offset to input */ + in4 = in4 + offset; + + /* store result to destination */ + *(pDst + 1) = in2; + + /* store result to destination */ + *(pDst + 2) = in3; + + /* store result to destination */ + *(pDst + 3) = in4; + + /* update pointers to process next samples */ + pSrc += 4U; + pDst += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the result in the destination buffer. */ + *pDst++ = (*pSrc++) + offset; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of offset group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c new file mode 100644 index 0000000..4c16224 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q15.c @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_offset_q15.c + * Description: Q15 vector offset + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup offset + * @{ + */ + +/** + * @brief Adds a constant offset to a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] are saturated. + */ + +void arm_offset_q15( + q15_t * pSrc, + q15_t offset, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t offset_packed; /* Offset packed to 32 bit */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* Offset is packed to 32 bit in order to use SIMD32 for addition */ + offset_packed = __PKHBT(offset, offset, 16); + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination buffer, 2 samples at a time. */ + *__SIMD32(pDst)++ = __QADD16(*__SIMD32(pSrc)++, offset_packed); + *__SIMD32(pDst)++ = __QADD16(*__SIMD32(pSrc)++, offset_packed); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination buffer. */ + *pDst++ = (q15_t) __QADD16(*pSrc++, offset); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination buffer. */ + *pDst++ = (q15_t) __SSAT(((q31_t) * pSrc++ + offset), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of offset group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c new file mode 100644 index 0000000..0b0ee32 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q31.c @@ -0,0 +1,128 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_offset_q31.c + * Description: Q31 vector offset + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup offset + * @{ + */ + +/** + * @brief Adds a constant offset to a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] are saturated. + */ + +void arm_offset_q31( + q31_t * pSrc, + q31_t offset, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t in1, in2, in3, in4; + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination buffer. */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + *pDst++ = __QADD(in1, offset); + *pDst++ = __QADD(in2, offset); + *pDst++ = __QADD(in3, offset); + *pDst++ = __QADD(in4, offset); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the result in the destination buffer. */ + *pDst++ = __QADD(*pSrc++, offset); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the result in the destination buffer. */ + *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrc++ + offset); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of offset group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c new file mode 100644 index 0000000..5b98951 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_offset_q7.c @@ -0,0 +1,123 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_offset_q7.c + * Description: Q7 vector offset + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup offset + * @{ + */ + +/** + * @brief Adds a constant offset to a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] are saturated. + */ + +void arm_offset_q7( + q7_t * pSrc, + q7_t offset, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t offset_packed; /* Offset packed to 32 bit */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* Offset is packed to 32 bit in order to use SIMD32 for addition */ + offset_packed = __PACKq7(offset, offset, offset, offset); + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the results in the destination bufferfor 4 samples at a time. */ + *__SIMD32(pDst)++ = __QADD8(*__SIMD32(pSrc)++, offset_packed); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the result in the destination buffer. */ + *pDst++ = (q7_t) __SSAT(*pSrc++ + offset, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A + offset */ + /* Add offset and then store the result in the destination buffer. */ + *pDst++ = (q7_t) __SSAT((q15_t) * pSrc++ + offset, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of offset group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c new file mode 100644 index 0000000..0fc3204 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_f32.c @@ -0,0 +1,157 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_scale_f32.c + * Description: Multiplies a floating-point vector by a scalar + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup scale Vector Scale + * + * Multiply a vector by a scalar value. For floating-point data, the algorithm used is: + * + *
+ *     pDst[n] = pSrc[n] * scale,   0 <= n < blockSize.
+ * 
+ * + * In the fixed-point Q7, Q15, and Q31 functions, scale is represented by + * a fractional multiplication scaleFract and an arithmetic shift shift. + * The shift allows the gain of the scaling operation to exceed 1.0. + * The algorithm used with fixed-point data is: + * + *
+ *     pDst[n] = (pSrc[n] * scaleFract) << shift,   0 <= n < blockSize.
+ * 
+ * + * The overall scale factor applied to the fixed-point data is + *
+ *     scale = scaleFract * 2^shift.
+ * 
+ * + * The functions support in-place computation allowing the source and destination + * pointers to reference the same memory buffer. + */ + +/** + * @addtogroup scale + * @{ + */ + +/** + * @brief Multiplies a floating-point vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scale scale factor to be applied + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + */ + + +void arm_scale_f32( + float32_t * pSrc, + float32_t scale, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + float32_t in1, in2, in3, in4; /* temporary variabels */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A * scale */ + /* Scale the input and then store the results in the destination buffer. */ + /* read input samples from source */ + in1 = *pSrc; + in2 = *(pSrc + 1); + + /* multiply with scaling factor */ + in1 = in1 * scale; + + /* read input sample from source */ + in3 = *(pSrc + 2); + + /* multiply with scaling factor */ + in2 = in2 * scale; + + /* read input sample from source */ + in4 = *(pSrc + 3); + + /* multiply with scaling factor */ + in3 = in3 * scale; + in4 = in4 * scale; + /* store the result to destination */ + *pDst = in1; + *(pDst + 1) = in2; + *(pDst + 2) = in3; + *(pDst + 3) = in4; + + /* update pointers to process next samples */ + pSrc += 4U; + pDst += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = (*pSrc++) * scale; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of scale group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c new file mode 100644 index 0000000..f1d3063 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q15.c @@ -0,0 +1,150 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_scale_q15.c + * Description: Multiplies a Q15 vector by a scalar + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup scale + * @{ + */ + +/** + * @brief Multiplies a Q15 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The input data *pSrc and scaleFract are in 1.15 format. + * These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format. + */ + + +void arm_scale_q15( + q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize) +{ + int8_t kShift = 15 - shift; /* shift to apply after scaling */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q15_t in1, in2, in3, in4; + q31_t inA1, inA2; /* Temporary variables */ + q31_t out1, out2, out3, out4; + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Reading 2 inputs from memory */ + inA1 = *__SIMD32(pSrc)++; + inA2 = *__SIMD32(pSrc)++; + + /* C = A * scale */ + /* Scale the inputs and then store the 2 results in the destination buffer + * in single cycle by packing the outputs */ + out1 = (q31_t) ((q15_t) (inA1 >> 16) * scaleFract); + out2 = (q31_t) ((q15_t) inA1 * scaleFract); + out3 = (q31_t) ((q15_t) (inA2 >> 16) * scaleFract); + out4 = (q31_t) ((q15_t) inA2 * scaleFract); + + /* apply shifting */ + out1 = out1 >> kShift; + out2 = out2 >> kShift; + out3 = out3 >> kShift; + out4 = out4 >> kShift; + + /* saturate the output */ + in1 = (q15_t) (__SSAT(out1, 16)); + in2 = (q15_t) (__SSAT(out2, 16)); + in3 = (q15_t) (__SSAT(out3, 16)); + in4 = (q15_t) (__SSAT(out4, 16)); + + /* store the result to destination */ + *__SIMD32(pDst)++ = __PKHBT(in2, in1, 16); + *__SIMD32(pDst)++ = __PKHBT(in4, in3, 16); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = (q15_t) (__SSAT(((*pSrc++) * scaleFract) >> kShift, 16)); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = (q15_t) (__SSAT(((q31_t) * pSrc++ * scaleFract) >> kShift, 16)); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of scale group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c new file mode 100644 index 0000000..dcc7bbe --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q31.c @@ -0,0 +1,227 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_scale_q31.c + * Description: Multiplies a Q31 vector by a scalar + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup scale + * @{ + */ + +/** + * @brief Multiplies a Q31 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The input data *pSrc and scaleFract are in 1.31 format. + * These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format. + */ + +void arm_scale_q31( + q31_t * pSrc, + q31_t scaleFract, + int8_t shift, + q31_t * pDst, + uint32_t blockSize) +{ + int8_t kShift = shift + 1; /* Shift to apply after scaling */ + int8_t sign = (kShift & 0x80); + uint32_t blkCnt; /* loop counter */ + q31_t in, out; + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in1, in2, in3, in4; /* temporary input variables */ + q31_t out1, out2, out3, out4; /* temporary output variabels */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + if (sign == 0U) + { + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* read four inputs from source */ + in1 = *pSrc; + in2 = *(pSrc + 1); + in3 = *(pSrc + 2); + in4 = *(pSrc + 3); + + /* multiply input with scaler value */ + in1 = ((q63_t) in1 * scaleFract) >> 32; + in2 = ((q63_t) in2 * scaleFract) >> 32; + in3 = ((q63_t) in3 * scaleFract) >> 32; + in4 = ((q63_t) in4 * scaleFract) >> 32; + + /* apply shifting */ + out1 = in1 << kShift; + out2 = in2 << kShift; + + /* saturate the results. */ + if (in1 != (out1 >> kShift)) + out1 = 0x7FFFFFFF ^ (in1 >> 31); + + if (in2 != (out2 >> kShift)) + out2 = 0x7FFFFFFF ^ (in2 >> 31); + + out3 = in3 << kShift; + out4 = in4 << kShift; + + *pDst = out1; + *(pDst + 1) = out2; + + if (in3 != (out3 >> kShift)) + out3 = 0x7FFFFFFF ^ (in3 >> 31); + + if (in4 != (out4 >> kShift)) + out4 = 0x7FFFFFFF ^ (in4 >> 31); + + /* Store result destination */ + *(pDst + 2) = out3; + *(pDst + 3) = out4; + + /* Update pointers to process next sampels */ + pSrc += 4U; + pDst += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + } + else + { + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* read four inputs from source */ + in1 = *pSrc; + in2 = *(pSrc + 1); + in3 = *(pSrc + 2); + in4 = *(pSrc + 3); + + /* multiply input with scaler value */ + in1 = ((q63_t) in1 * scaleFract) >> 32; + in2 = ((q63_t) in2 * scaleFract) >> 32; + in3 = ((q63_t) in3 * scaleFract) >> 32; + in4 = ((q63_t) in4 * scaleFract) >> 32; + + /* apply shifting */ + out1 = in1 >> -kShift; + out2 = in2 >> -kShift; + + out3 = in3 >> -kShift; + out4 = in4 >> -kShift; + + /* Store result destination */ + *pDst = out1; + *(pDst + 1) = out2; + + *(pDst + 2) = out3; + *(pDst + 3) = out4; + + /* Update pointers to process next sampels */ + pSrc += 4U; + pDst += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + } + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + if (sign == 0) + { + while (blkCnt > 0U) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + in = *pSrc++; + in = ((q63_t) in * scaleFract) >> 32; + + out = in << kShift; + + if (in != (out >> kShift)) + out = 0x7FFFFFFF ^ (in >> 31); + + *pDst++ = out; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + while (blkCnt > 0U) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + in = *pSrc++; + in = ((q63_t) in * scaleFract) >> 32; + + out = in >> -kShift; + + *pDst++ = out; + + /* Decrement the loop counter */ + blkCnt--; + } + + } +} + +/** + * @} end of scale group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c new file mode 100644 index 0000000..8c90396 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_scale_q7.c @@ -0,0 +1,137 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_scale_q7.c + * Description: Multiplies a Q7 vector by a scalar + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup scale + * @{ + */ + +/** + * @brief Multiplies a Q7 vector by a scalar. + * @param[in] *pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The input data *pSrc and scaleFract are in 1.7 format. + * These are multiplied to yield a 2.14 intermediate result and this is shifted with saturation to 1.7 format. + */ + +void arm_scale_q7( + q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize) +{ + int8_t kShift = 7 - shift; /* shift to apply after scaling */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q7_t in1, in2, in3, in4, out1, out2, out3, out4; /* Temporary variables to store input & output */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Reading 4 inputs from memory */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + /* C = A * scale */ + /* Scale the inputs and then store the results in the temporary variables. */ + out1 = (q7_t) (__SSAT(((in1) * scaleFract) >> kShift, 8)); + out2 = (q7_t) (__SSAT(((in2) * scaleFract) >> kShift, 8)); + out3 = (q7_t) (__SSAT(((in3) * scaleFract) >> kShift, 8)); + out4 = (q7_t) (__SSAT(((in4) * scaleFract) >> kShift, 8)); + + /* Packing the individual outputs into 32bit and storing in + * destination buffer in single write */ + *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = (q7_t) (__SSAT(((*pSrc++) * scaleFract) >> kShift, 8)); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A * scale */ + /* Scale the input and then store the result in the destination buffer. */ + *pDst++ = (q7_t) (__SSAT((((q15_t) * pSrc++ * scaleFract) >> kShift), 8)); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of scale group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c new file mode 100644 index 0000000..9462ad7 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q15.c @@ -0,0 +1,236 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_shift_q15.c + * Description: Shifts the elements of a Q15 vector by a specified number of bits + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup shift + * @{ + */ + +/** + * @brief Shifts the elements of a Q15 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +void arm_shift_q15( + q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + uint8_t sign; /* Sign of shiftBits */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t in1, in2; /* Temporary variables */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* Getting the sign of shiftBits */ + sign = (shiftBits & 0x80); + + /* If the shift value is positive then do right shift else left shift */ + if (sign == 0U) + { + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Read 2 inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + /* C = A << shiftBits */ + /* Shift the inputs and then store the results in the destination buffer. */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT(__SSAT((in1 << shiftBits), 16), + __SSAT((in2 << shiftBits), 16), 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT(__SSAT((in2 << shiftBits), 16), + __SSAT((in1 << shiftBits), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + in1 = *pSrc++; + in2 = *pSrc++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT(__SSAT((in1 << shiftBits), 16), + __SSAT((in2 << shiftBits), 16), 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT(__SSAT((in2 << shiftBits), 16), + __SSAT((in1 << shiftBits), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A << shiftBits */ + /* Shift and then store the results in the destination buffer. */ + *pDst++ = __SSAT((*pSrc++ << shiftBits), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Read 2 inputs */ + in1 = *pSrc++; + in2 = *pSrc++; + + /* C = A >> shiftBits */ + /* Shift the inputs and then store the results in the destination buffer. */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT((in1 >> -shiftBits), + (in2 >> -shiftBits), 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT((in2 >> -shiftBits), + (in1 >> -shiftBits), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + in1 = *pSrc++; + in2 = *pSrc++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT((in1 >> -shiftBits), + (in2 >> -shiftBits), 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT((in2 >> -shiftBits), + (in1 >> -shiftBits), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A >> shiftBits */ + /* Shift the inputs and then store the results in the destination buffer. */ + *pDst++ = (*pSrc++ >> -shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Getting the sign of shiftBits */ + sign = (shiftBits & 0x80); + + /* If the shift value is positive then do right shift else left shift */ + if (sign == 0U) + { + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A << shiftBits */ + /* Shift and then store the results in the destination buffer. */ + *pDst++ = __SSAT(((q31_t) * pSrc++ << shiftBits), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A >> shiftBits */ + /* Shift the inputs and then store the results in the destination buffer. */ + *pDst++ = (*pSrc++ >> -shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of shift group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c new file mode 100644 index 0000000..12490a1 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q31.c @@ -0,0 +1,191 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_shift_q31.c + * Description: Shifts the elements of a Q31 vector by a specified number of bits + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ +/** + * @defgroup shift Vector Shift + * + * Shifts the elements of a fixed-point vector by a specified number of bits. + * There are separate functions for Q7, Q15, and Q31 data types. + * The underlying algorithm used is: + * + *
+ *     pDst[n] = pSrc[n] << shift,   0 <= n < blockSize.
+ * 
+ * + * If shift is positive then the elements of the vector are shifted to the left. + * If shift is negative then the elements of the vector are shifted to the right. + * + * The functions support in-place computation allowing the source and destination + * pointers to reference the same memory buffer. + */ + +/** + * @addtogroup shift + * @{ + */ + +/** + * @brief Shifts the elements of a Q31 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. + */ + +void arm_shift_q31( + q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + uint8_t sign = (shiftBits & 0x80); /* Sign of shiftBits */ + +#if defined (ARM_MATH_DSP) + + q31_t in1, in2, in3, in4; /* Temporary input variables */ + q31_t out1, out2, out3, out4; /* Temporary output variables */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + + if (sign == 0U) + { + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A << shiftBits */ + /* Shift the input and then store the results in the destination buffer. */ + in1 = *pSrc; + in2 = *(pSrc + 1); + out1 = in1 << shiftBits; + in3 = *(pSrc + 2); + out2 = in2 << shiftBits; + in4 = *(pSrc + 3); + if (in1 != (out1 >> shiftBits)) + out1 = 0x7FFFFFFF ^ (in1 >> 31); + + if (in2 != (out2 >> shiftBits)) + out2 = 0x7FFFFFFF ^ (in2 >> 31); + + *pDst = out1; + out3 = in3 << shiftBits; + *(pDst + 1) = out2; + out4 = in4 << shiftBits; + + if (in3 != (out3 >> shiftBits)) + out3 = 0x7FFFFFFF ^ (in3 >> 31); + + if (in4 != (out4 >> shiftBits)) + out4 = 0x7FFFFFFF ^ (in4 >> 31); + + *(pDst + 2) = out3; + *(pDst + 3) = out4; + + /* Update destination pointer to process next sampels */ + pSrc += 4U; + pDst += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A >> shiftBits */ + /* Shift the input and then store the results in the destination buffer. */ + in1 = *pSrc; + in2 = *(pSrc + 1); + in3 = *(pSrc + 2); + in4 = *(pSrc + 3); + + *pDst = (in1 >> -shiftBits); + *(pDst + 1) = (in2 >> -shiftBits); + *(pDst + 2) = (in3 >> -shiftBits); + *(pDst + 3) = (in4 >> -shiftBits); + + + pSrc += 4U; + pDst += 4U; + + blkCnt--; + } + + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = A (>> or <<) shiftBits */ + /* Shift the input and then store the result in the destination buffer. */ + *pDst++ = (sign == 0U) ? clip_q63_to_q31((q63_t) * pSrc++ << shiftBits) : + (*pSrc++ >> -shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + + +} + +/** + * @} end of shift group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c new file mode 100644 index 0000000..6f40431 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_shift_q7.c @@ -0,0 +1,208 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_shift_q7.c + * Description: Processing function for the Q7 Shifting + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup shift + * @{ + */ + + +/** + * @brief Shifts the elements of a Q7 vector a specified number of bits. + * @param[in] *pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in the vector + * @return none. + * + * \par Conditions for optimum performance + * Input and output buffers should be aligned by 32-bit + * + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x8 0x7F] will be saturated. + */ + +void arm_shift_q7( + q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + uint8_t sign; /* Sign of shiftBits */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q7_t in1; /* Input value1 */ + q7_t in2; /* Input value2 */ + q7_t in3; /* Input value3 */ + q7_t in4; /* Input value4 */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* Getting the sign of shiftBits */ + sign = (shiftBits & 0x80); + + /* If the shift value is positive then do right shift else left shift */ + if (sign == 0U) + { + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A << shiftBits */ + /* Read 4 inputs */ + in1 = *pSrc; + in2 = *(pSrc + 1); + in3 = *(pSrc + 2); + in4 = *(pSrc + 3); + + /* Store the Shifted result in the destination buffer in single cycle by packing the outputs */ + *__SIMD32(pDst)++ = __PACKq7(__SSAT((in1 << shiftBits), 8), + __SSAT((in2 << shiftBits), 8), + __SSAT((in3 << shiftBits), 8), + __SSAT((in4 << shiftBits), 8)); + /* Update source pointer to process next sampels */ + pSrc += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A << shiftBits */ + /* Shift the input and then store the result in the destination buffer. */ + *pDst++ = (q7_t) __SSAT((*pSrc++ << shiftBits), 8); + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + shiftBits = -shiftBits; + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A >> shiftBits */ + /* Read 4 inputs */ + in1 = *pSrc; + in2 = *(pSrc + 1); + in3 = *(pSrc + 2); + in4 = *(pSrc + 3); + + /* Store the Shifted result in the destination buffer in single cycle by packing the outputs */ + *__SIMD32(pDst)++ = __PACKq7((in1 >> shiftBits), (in2 >> shiftBits), + (in3 >> shiftBits), (in4 >> shiftBits)); + + + pSrc += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A >> shiftBits */ + /* Shift the input and then store the result in the destination buffer. */ + in1 = *pSrc++; + *pDst++ = (in1 >> shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Getting the sign of shiftBits */ + sign = (shiftBits & 0x80); + + /* If the shift value is positive then do right shift else left shift */ + if (sign == 0U) + { + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A << shiftBits */ + /* Shift the input and then store the result in the destination buffer. */ + *pDst++ = (q7_t) __SSAT(((q15_t) * pSrc++ << shiftBits), 8); + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A >> shiftBits */ + /* Shift the input and then store the result in the destination buffer. */ + *pDst++ = (*pSrc++ >> -shiftBits); + + /* Decrement the loop counter */ + blkCnt--; + } + } + +#endif /* #if defined (ARM_MATH_DSP) */ +} + +/** + * @} end of shift group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c new file mode 100644 index 0000000..6d56fa7 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_f32.c @@ -0,0 +1,138 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_sub_f32.c + * Description: Floating-point vector subtraction. + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @defgroup BasicSub Vector Subtraction + * + * Element-by-element subtraction of two vectors. + * + *
+ *     pDst[n] = pSrcA[n] - pSrcB[n],   0 <= n < blockSize.
+ * 
+ * + * There are separate functions for floating-point, Q7, Q15, and Q31 data types. + */ + +/** + * @addtogroup BasicSub + * @{ + */ + + +/** + * @brief Floating-point vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + */ + +void arm_sub_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + float32_t inA1, inA2, inA3, inA4; /* temporary variables */ + float32_t inB1, inB2, inB3, inB4; /* temporary variables */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the results in the destination buffer. */ + /* Read 4 input samples from sourceA and sourceB */ + inA1 = *pSrcA; + inB1 = *pSrcB; + inA2 = *(pSrcA + 1); + inB2 = *(pSrcB + 1); + inA3 = *(pSrcA + 2); + inB3 = *(pSrcB + 2); + inA4 = *(pSrcA + 3); + inB4 = *(pSrcB + 3); + + /* dst = srcA - srcB */ + /* subtract and store the result */ + *pDst = inA1 - inB1; + *(pDst + 1) = inA2 - inB2; + *(pDst + 2) = inA3 - inB3; + *(pDst + 3) = inA4 - inB4; + + + /* Update pointers to process next sampels */ + pSrcA += 4U; + pSrcB += 4U; + pDst += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the results in the destination buffer. */ + *pDst++ = (*pSrcA++) - (*pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicSub group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c new file mode 100644 index 0000000..643f933 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q15.c @@ -0,0 +1,128 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_sub_q15.c + * Description: Q15 vector subtraction + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicSub + * @{ + */ + +/** + * @brief Q15 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +void arm_sub_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t inA1, inA2; + q31_t inB1, inB2; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the results in the destination buffer two samples at a time. */ + inA1 = *__SIMD32(pSrcA)++; + inA2 = *__SIMD32(pSrcA)++; + inB1 = *__SIMD32(pSrcB)++; + inB2 = *__SIMD32(pSrcB)++; + + *__SIMD32(pDst)++ = __QSUB16(inA1, inB1); + *__SIMD32(pDst)++ = __QSUB16(inA2, inB2); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = (q15_t) __QSUB16(*pSrcA++, *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = (q15_t) __SSAT(((q31_t) * pSrcA++ - *pSrcB++), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + +} + +/** + * @} end of BasicSub group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c new file mode 100644 index 0000000..1c83aae --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q31.c @@ -0,0 +1,134 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_sub_q31.c + * Description: Q31 vector subtraction + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicSub + * @{ + */ + +/** + * @brief Q31 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. + */ + +void arm_sub_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t inA1, inA2, inA3, inA4; + q31_t inB1, inB2, inB3, inB4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the results in the destination buffer. */ + inA1 = *pSrcA++; + inA2 = *pSrcA++; + inB1 = *pSrcB++; + inB2 = *pSrcB++; + + inA3 = *pSrcA++; + inA4 = *pSrcA++; + inB3 = *pSrcB++; + inB4 = *pSrcB++; + + *pDst++ = __QSUB(inA1, inB1); + *pDst++ = __QSUB(inA2, inB2); + *pDst++ = __QSUB(inA3, inB3); + *pDst++ = __QSUB(inA4, inB4); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = __QSUB(*pSrcA++, *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = (q31_t) clip_q63_to_q31((q63_t) * pSrcA++ - *pSrcB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of BasicSub group + */ diff --git a/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c new file mode 100644 index 0000000..8f8e111 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/BasicMathFunctions/arm_sub_q7.c @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_sub_q7.c + * Description: Q7 vector subtraction + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMath + */ + +/** + * @addtogroup BasicSub + * @{ + */ + +/** + * @brief Q7 vector subtraction. + * @param[in] *pSrcA points to the first input vector + * @param[in] *pSrcB points to the second input vector + * @param[out] *pDst points to the output vector + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. + */ + +void arm_sub_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the results in the destination buffer 4 samples at a time. */ + *__SIMD32(pDst)++ = __QSUB8(*__SIMD32(pSrcA)++, *__SIMD32(pSrcB)++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = __SSAT(*pSrcA++ - *pSrcB++, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A - B */ + /* Subtract and then store the result in the destination buffer. */ + *pDst++ = (q7_t) __SSAT((q15_t) * pSrcA++ - *pSrcB++, 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + +} + +/** + * @} end of BasicSub group + */ diff --git a/Drivers/CMSIS/DSP/Source/CommonTables/arm_common_tables.c b/Drivers/CMSIS/DSP/Source/CommonTables/arm_common_tables.c new file mode 100644 index 0000000..bb5c15a --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/CommonTables/arm_common_tables.c @@ -0,0 +1,22176 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_common_tables.c + * Description: common tables like fft twiddle factors, Bitreverse, reciprocal etc + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup ComplexFFT + */ + +/** + * @addtogroup CFFT_CIFFT Complex FFT Tables + * @{ + */ + +/** +* \par +* Pseudo code for Generation of Bit reversal Table is +* \par +*
for(l=1;l <= N/4;l++)
+* {
+*   for(i=0;i> 1;
+*  } 
+* \par +* where N = 4096 logN2 = 12 +* \par +* N is the maximum FFT Size supported +*/ + +/* +* @brief Table for bit reversal process +*/ +const uint16_t armBitRevTable[1024] = { + 0x400, 0x200, 0x600, 0x100, 0x500, 0x300, 0x700, 0x80, 0x480, 0x280, + 0x680, 0x180, 0x580, 0x380, 0x780, 0x40, 0x440, 0x240, 0x640, 0x140, + 0x540, 0x340, 0x740, 0xc0, 0x4c0, 0x2c0, 0x6c0, 0x1c0, 0x5c0, 0x3c0, + 0x7c0, 0x20, 0x420, 0x220, 0x620, 0x120, 0x520, 0x320, 0x720, 0xa0, + 0x4a0, 0x2a0, 0x6a0, 0x1a0, 0x5a0, 0x3a0, 0x7a0, 0x60, 0x460, 0x260, + 0x660, 0x160, 0x560, 0x360, 0x760, 0xe0, 0x4e0, 0x2e0, 0x6e0, 0x1e0, + 0x5e0, 0x3e0, 0x7e0, 0x10, 0x410, 0x210, 0x610, 0x110, 0x510, 0x310, + 0x710, 0x90, 0x490, 0x290, 0x690, 0x190, 0x590, 0x390, 0x790, 0x50, + 0x450, 0x250, 0x650, 0x150, 0x550, 0x350, 0x750, 0xd0, 0x4d0, 0x2d0, + 0x6d0, 0x1d0, 0x5d0, 0x3d0, 0x7d0, 0x30, 0x430, 0x230, 0x630, 0x130, + 0x530, 0x330, 0x730, 0xb0, 0x4b0, 0x2b0, 0x6b0, 0x1b0, 0x5b0, 0x3b0, + 0x7b0, 0x70, 0x470, 0x270, 0x670, 0x170, 0x570, 0x370, 0x770, 0xf0, + 0x4f0, 0x2f0, 0x6f0, 0x1f0, 0x5f0, 0x3f0, 0x7f0, 0x8, 0x408, 0x208, + 0x608, 0x108, 0x508, 0x308, 0x708, 0x88, 0x488, 0x288, 0x688, 0x188, + 0x588, 0x388, 0x788, 0x48, 0x448, 0x248, 0x648, 0x148, 0x548, 0x348, + 0x748, 0xc8, 0x4c8, 0x2c8, 0x6c8, 0x1c8, 0x5c8, 0x3c8, 0x7c8, 0x28, + 0x428, 0x228, 0x628, 0x128, 0x528, 0x328, 0x728, 0xa8, 0x4a8, 0x2a8, + 0x6a8, 0x1a8, 0x5a8, 0x3a8, 0x7a8, 0x68, 0x468, 0x268, 0x668, 0x168, + 0x568, 0x368, 0x768, 0xe8, 0x4e8, 0x2e8, 0x6e8, 0x1e8, 0x5e8, 0x3e8, + 0x7e8, 0x18, 0x418, 0x218, 0x618, 0x118, 0x518, 0x318, 0x718, 0x98, + 0x498, 0x298, 0x698, 0x198, 0x598, 0x398, 0x798, 0x58, 0x458, 0x258, + 0x658, 0x158, 0x558, 0x358, 0x758, 0xd8, 0x4d8, 0x2d8, 0x6d8, 0x1d8, + 0x5d8, 0x3d8, 0x7d8, 0x38, 0x438, 0x238, 0x638, 0x138, 0x538, 0x338, + 0x738, 0xb8, 0x4b8, 0x2b8, 0x6b8, 0x1b8, 0x5b8, 0x3b8, 0x7b8, 0x78, + 0x478, 0x278, 0x678, 0x178, 0x578, 0x378, 0x778, 0xf8, 0x4f8, 0x2f8, + 0x6f8, 0x1f8, 0x5f8, 0x3f8, 0x7f8, 0x4, 0x404, 0x204, 0x604, 0x104, + 0x504, 0x304, 0x704, 0x84, 0x484, 0x284, 0x684, 0x184, 0x584, 0x384, + 0x784, 0x44, 0x444, 0x244, 0x644, 0x144, 0x544, 0x344, 0x744, 0xc4, + 0x4c4, 0x2c4, 0x6c4, 0x1c4, 0x5c4, 0x3c4, 0x7c4, 0x24, 0x424, 0x224, + 0x624, 0x124, 0x524, 0x324, 0x724, 0xa4, 0x4a4, 0x2a4, 0x6a4, 0x1a4, + 0x5a4, 0x3a4, 0x7a4, 0x64, 0x464, 0x264, 0x664, 0x164, 0x564, 0x364, + 0x764, 0xe4, 0x4e4, 0x2e4, 0x6e4, 0x1e4, 0x5e4, 0x3e4, 0x7e4, 0x14, + 0x414, 0x214, 0x614, 0x114, 0x514, 0x314, 0x714, 0x94, 0x494, 0x294, + 0x694, 0x194, 0x594, 0x394, 0x794, 0x54, 0x454, 0x254, 0x654, 0x154, + 0x554, 0x354, 0x754, 0xd4, 0x4d4, 0x2d4, 0x6d4, 0x1d4, 0x5d4, 0x3d4, + 0x7d4, 0x34, 0x434, 0x234, 0x634, 0x134, 0x534, 0x334, 0x734, 0xb4, + 0x4b4, 0x2b4, 0x6b4, 0x1b4, 0x5b4, 0x3b4, 0x7b4, 0x74, 0x474, 0x274, + 0x674, 0x174, 0x574, 0x374, 0x774, 0xf4, 0x4f4, 0x2f4, 0x6f4, 0x1f4, + 0x5f4, 0x3f4, 0x7f4, 0xc, 0x40c, 0x20c, 0x60c, 0x10c, 0x50c, 0x30c, + 0x70c, 0x8c, 0x48c, 0x28c, 0x68c, 0x18c, 0x58c, 0x38c, 0x78c, 0x4c, + 0x44c, 0x24c, 0x64c, 0x14c, 0x54c, 0x34c, 0x74c, 0xcc, 0x4cc, 0x2cc, + 0x6cc, 0x1cc, 0x5cc, 0x3cc, 0x7cc, 0x2c, 0x42c, 0x22c, 0x62c, 0x12c, + 0x52c, 0x32c, 0x72c, 0xac, 0x4ac, 0x2ac, 0x6ac, 0x1ac, 0x5ac, 0x3ac, + 0x7ac, 0x6c, 0x46c, 0x26c, 0x66c, 0x16c, 0x56c, 0x36c, 0x76c, 0xec, + 0x4ec, 0x2ec, 0x6ec, 0x1ec, 0x5ec, 0x3ec, 0x7ec, 0x1c, 0x41c, 0x21c, + 0x61c, 0x11c, 0x51c, 0x31c, 0x71c, 0x9c, 0x49c, 0x29c, 0x69c, 0x19c, + 0x59c, 0x39c, 0x79c, 0x5c, 0x45c, 0x25c, 0x65c, 0x15c, 0x55c, 0x35c, + 0x75c, 0xdc, 0x4dc, 0x2dc, 0x6dc, 0x1dc, 0x5dc, 0x3dc, 0x7dc, 0x3c, + 0x43c, 0x23c, 0x63c, 0x13c, 0x53c, 0x33c, 0x73c, 0xbc, 0x4bc, 0x2bc, + 0x6bc, 0x1bc, 0x5bc, 0x3bc, 0x7bc, 0x7c, 0x47c, 0x27c, 0x67c, 0x17c, + 0x57c, 0x37c, 0x77c, 0xfc, 0x4fc, 0x2fc, 0x6fc, 0x1fc, 0x5fc, 0x3fc, + 0x7fc, 0x2, 0x402, 0x202, 0x602, 0x102, 0x502, 0x302, 0x702, 0x82, + 0x482, 0x282, 0x682, 0x182, 0x582, 0x382, 0x782, 0x42, 0x442, 0x242, + 0x642, 0x142, 0x542, 0x342, 0x742, 0xc2, 0x4c2, 0x2c2, 0x6c2, 0x1c2, + 0x5c2, 0x3c2, 0x7c2, 0x22, 0x422, 0x222, 0x622, 0x122, 0x522, 0x322, + 0x722, 0xa2, 0x4a2, 0x2a2, 0x6a2, 0x1a2, 0x5a2, 0x3a2, 0x7a2, 0x62, + 0x462, 0x262, 0x662, 0x162, 0x562, 0x362, 0x762, 0xe2, 0x4e2, 0x2e2, + 0x6e2, 0x1e2, 0x5e2, 0x3e2, 0x7e2, 0x12, 0x412, 0x212, 0x612, 0x112, + 0x512, 0x312, 0x712, 0x92, 0x492, 0x292, 0x692, 0x192, 0x592, 0x392, + 0x792, 0x52, 0x452, 0x252, 0x652, 0x152, 0x552, 0x352, 0x752, 0xd2, + 0x4d2, 0x2d2, 0x6d2, 0x1d2, 0x5d2, 0x3d2, 0x7d2, 0x32, 0x432, 0x232, + 0x632, 0x132, 0x532, 0x332, 0x732, 0xb2, 0x4b2, 0x2b2, 0x6b2, 0x1b2, + 0x5b2, 0x3b2, 0x7b2, 0x72, 0x472, 0x272, 0x672, 0x172, 0x572, 0x372, + 0x772, 0xf2, 0x4f2, 0x2f2, 0x6f2, 0x1f2, 0x5f2, 0x3f2, 0x7f2, 0xa, + 0x40a, 0x20a, 0x60a, 0x10a, 0x50a, 0x30a, 0x70a, 0x8a, 0x48a, 0x28a, + 0x68a, 0x18a, 0x58a, 0x38a, 0x78a, 0x4a, 0x44a, 0x24a, 0x64a, 0x14a, + 0x54a, 0x34a, 0x74a, 0xca, 0x4ca, 0x2ca, 0x6ca, 0x1ca, 0x5ca, 0x3ca, + 0x7ca, 0x2a, 0x42a, 0x22a, 0x62a, 0x12a, 0x52a, 0x32a, 0x72a, 0xaa, + 0x4aa, 0x2aa, 0x6aa, 0x1aa, 0x5aa, 0x3aa, 0x7aa, 0x6a, 0x46a, 0x26a, + 0x66a, 0x16a, 0x56a, 0x36a, 0x76a, 0xea, 0x4ea, 0x2ea, 0x6ea, 0x1ea, + 0x5ea, 0x3ea, 0x7ea, 0x1a, 0x41a, 0x21a, 0x61a, 0x11a, 0x51a, 0x31a, + 0x71a, 0x9a, 0x49a, 0x29a, 0x69a, 0x19a, 0x59a, 0x39a, 0x79a, 0x5a, + 0x45a, 0x25a, 0x65a, 0x15a, 0x55a, 0x35a, 0x75a, 0xda, 0x4da, 0x2da, + 0x6da, 0x1da, 0x5da, 0x3da, 0x7da, 0x3a, 0x43a, 0x23a, 0x63a, 0x13a, + 0x53a, 0x33a, 0x73a, 0xba, 0x4ba, 0x2ba, 0x6ba, 0x1ba, 0x5ba, 0x3ba, + 0x7ba, 0x7a, 0x47a, 0x27a, 0x67a, 0x17a, 0x57a, 0x37a, 0x77a, 0xfa, + 0x4fa, 0x2fa, 0x6fa, 0x1fa, 0x5fa, 0x3fa, 0x7fa, 0x6, 0x406, 0x206, + 0x606, 0x106, 0x506, 0x306, 0x706, 0x86, 0x486, 0x286, 0x686, 0x186, + 0x586, 0x386, 0x786, 0x46, 0x446, 0x246, 0x646, 0x146, 0x546, 0x346, + 0x746, 0xc6, 0x4c6, 0x2c6, 0x6c6, 0x1c6, 0x5c6, 0x3c6, 0x7c6, 0x26, + 0x426, 0x226, 0x626, 0x126, 0x526, 0x326, 0x726, 0xa6, 0x4a6, 0x2a6, + 0x6a6, 0x1a6, 0x5a6, 0x3a6, 0x7a6, 0x66, 0x466, 0x266, 0x666, 0x166, + 0x566, 0x366, 0x766, 0xe6, 0x4e6, 0x2e6, 0x6e6, 0x1e6, 0x5e6, 0x3e6, + 0x7e6, 0x16, 0x416, 0x216, 0x616, 0x116, 0x516, 0x316, 0x716, 0x96, + 0x496, 0x296, 0x696, 0x196, 0x596, 0x396, 0x796, 0x56, 0x456, 0x256, + 0x656, 0x156, 0x556, 0x356, 0x756, 0xd6, 0x4d6, 0x2d6, 0x6d6, 0x1d6, + 0x5d6, 0x3d6, 0x7d6, 0x36, 0x436, 0x236, 0x636, 0x136, 0x536, 0x336, + 0x736, 0xb6, 0x4b6, 0x2b6, 0x6b6, 0x1b6, 0x5b6, 0x3b6, 0x7b6, 0x76, + 0x476, 0x276, 0x676, 0x176, 0x576, 0x376, 0x776, 0xf6, 0x4f6, 0x2f6, + 0x6f6, 0x1f6, 0x5f6, 0x3f6, 0x7f6, 0xe, 0x40e, 0x20e, 0x60e, 0x10e, + 0x50e, 0x30e, 0x70e, 0x8e, 0x48e, 0x28e, 0x68e, 0x18e, 0x58e, 0x38e, + 0x78e, 0x4e, 0x44e, 0x24e, 0x64e, 0x14e, 0x54e, 0x34e, 0x74e, 0xce, + 0x4ce, 0x2ce, 0x6ce, 0x1ce, 0x5ce, 0x3ce, 0x7ce, 0x2e, 0x42e, 0x22e, + 0x62e, 0x12e, 0x52e, 0x32e, 0x72e, 0xae, 0x4ae, 0x2ae, 0x6ae, 0x1ae, + 0x5ae, 0x3ae, 0x7ae, 0x6e, 0x46e, 0x26e, 0x66e, 0x16e, 0x56e, 0x36e, + 0x76e, 0xee, 0x4ee, 0x2ee, 0x6ee, 0x1ee, 0x5ee, 0x3ee, 0x7ee, 0x1e, + 0x41e, 0x21e, 0x61e, 0x11e, 0x51e, 0x31e, 0x71e, 0x9e, 0x49e, 0x29e, + 0x69e, 0x19e, 0x59e, 0x39e, 0x79e, 0x5e, 0x45e, 0x25e, 0x65e, 0x15e, + 0x55e, 0x35e, 0x75e, 0xde, 0x4de, 0x2de, 0x6de, 0x1de, 0x5de, 0x3de, + 0x7de, 0x3e, 0x43e, 0x23e, 0x63e, 0x13e, 0x53e, 0x33e, 0x73e, 0xbe, + 0x4be, 0x2be, 0x6be, 0x1be, 0x5be, 0x3be, 0x7be, 0x7e, 0x47e, 0x27e, + 0x67e, 0x17e, 0x57e, 0x37e, 0x77e, 0xfe, 0x4fe, 0x2fe, 0x6fe, 0x1fe, + 0x5fe, 0x3fe, 0x7fe, 0x1 +}; + + +/* +* @brief Floating-point Twiddle factors Table Generation +*/ + +/** +* \par +* Example code for Floating-point Twiddle factors Generation: +* \par +*
for(i = 0; i< N/; i++)
+* {
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 16 and PI = 3.14159265358979 +* \par +* Cos and Sin values are in interleaved fashion +* +*/ +const float32_t twiddleCoef_16[32] = { + 1.000000000f, 0.000000000f, + 0.923879533f, 0.382683432f, + 0.707106781f, 0.707106781f, + 0.382683432f, 0.923879533f, + 0.000000000f, 1.000000000f, + -0.382683432f, 0.923879533f, + -0.707106781f, 0.707106781f, + -0.923879533f, 0.382683432f, + -1.000000000f, 0.000000000f, + -0.923879533f, -0.382683432f, + -0.707106781f, -0.707106781f, + -0.382683432f, -0.923879533f, + -0.000000000f, -1.000000000f, + 0.382683432f, -0.923879533f, + 0.707106781f, -0.707106781f, + 0.923879533f, -0.382683432f +}; + +/** +* \par +* Example code for Floating-point Twiddle factors Generation: +* \par +*
for(i = 0; i< N/; i++)
+* {
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 32 and PI = 3.14159265358979 +* \par +* Cos and Sin values are in interleaved fashion +* +*/ +const float32_t twiddleCoef_32[64] = { + 1.000000000f, 0.000000000f, + 0.980785280f, 0.195090322f, + 0.923879533f, 0.382683432f, + 0.831469612f, 0.555570233f, + 0.707106781f, 0.707106781f, + 0.555570233f, 0.831469612f, + 0.382683432f, 0.923879533f, + 0.195090322f, 0.980785280f, + 0.000000000f, 1.000000000f, + -0.195090322f, 0.980785280f, + -0.382683432f, 0.923879533f, + -0.555570233f, 0.831469612f, + -0.707106781f, 0.707106781f, + -0.831469612f, 0.555570233f, + -0.923879533f, 0.382683432f, + -0.980785280f, 0.195090322f, + -1.000000000f, 0.000000000f, + -0.980785280f, -0.195090322f, + -0.923879533f, -0.382683432f, + -0.831469612f, -0.555570233f, + -0.707106781f, -0.707106781f, + -0.555570233f, -0.831469612f, + -0.382683432f, -0.923879533f, + -0.195090322f, -0.980785280f, + -0.000000000f, -1.000000000f, + 0.195090322f, -0.980785280f, + 0.382683432f, -0.923879533f, + 0.555570233f, -0.831469612f, + 0.707106781f, -0.707106781f, + 0.831469612f, -0.555570233f, + 0.923879533f, -0.382683432f, + 0.980785280f, -0.195090322f +}; + +/** +* \par +* Example code for Floating-point Twiddle factors Generation: +* \par +*
for(i = 0; i< N/; i++)
+* {
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 64 and PI = 3.14159265358979 +* \par +* Cos and Sin values are in interleaved fashion +* +*/ +const float32_t twiddleCoef_64[128] = { + 1.000000000f, 0.000000000f, + 0.995184727f, 0.098017140f, + 0.980785280f, 0.195090322f, + 0.956940336f, 0.290284677f, + 0.923879533f, 0.382683432f, + 0.881921264f, 0.471396737f, + 0.831469612f, 0.555570233f, + 0.773010453f, 0.634393284f, + 0.707106781f, 0.707106781f, + 0.634393284f, 0.773010453f, + 0.555570233f, 0.831469612f, + 0.471396737f, 0.881921264f, + 0.382683432f, 0.923879533f, + 0.290284677f, 0.956940336f, + 0.195090322f, 0.980785280f, + 0.098017140f, 0.995184727f, + 0.000000000f, 1.000000000f, + -0.098017140f, 0.995184727f, + -0.195090322f, 0.980785280f, + -0.290284677f, 0.956940336f, + -0.382683432f, 0.923879533f, + -0.471396737f, 0.881921264f, + -0.555570233f, 0.831469612f, + -0.634393284f, 0.773010453f, + -0.707106781f, 0.707106781f, + -0.773010453f, 0.634393284f, + -0.831469612f, 0.555570233f, + -0.881921264f, 0.471396737f, + -0.923879533f, 0.382683432f, + -0.956940336f, 0.290284677f, + -0.980785280f, 0.195090322f, + -0.995184727f, 0.098017140f, + -1.000000000f, 0.000000000f, + -0.995184727f, -0.098017140f, + -0.980785280f, -0.195090322f, + -0.956940336f, -0.290284677f, + -0.923879533f, -0.382683432f, + -0.881921264f, -0.471396737f, + -0.831469612f, -0.555570233f, + -0.773010453f, -0.634393284f, + -0.707106781f, -0.707106781f, + -0.634393284f, -0.773010453f, + -0.555570233f, -0.831469612f, + -0.471396737f, -0.881921264f, + -0.382683432f, -0.923879533f, + -0.290284677f, -0.956940336f, + -0.195090322f, -0.980785280f, + -0.098017140f, -0.995184727f, + -0.000000000f, -1.000000000f, + 0.098017140f, -0.995184727f, + 0.195090322f, -0.980785280f, + 0.290284677f, -0.956940336f, + 0.382683432f, -0.923879533f, + 0.471396737f, -0.881921264f, + 0.555570233f, -0.831469612f, + 0.634393284f, -0.773010453f, + 0.707106781f, -0.707106781f, + 0.773010453f, -0.634393284f, + 0.831469612f, -0.555570233f, + 0.881921264f, -0.471396737f, + 0.923879533f, -0.382683432f, + 0.956940336f, -0.290284677f, + 0.980785280f, -0.195090322f, + 0.995184727f, -0.098017140f +}; + +/** +* \par +* Example code for Floating-point Twiddle factors Generation: +* \par +*
for(i = 0; i< N/; i++)
+* {
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 128 and PI = 3.14159265358979 +* \par +* Cos and Sin values are in interleaved fashion +* +*/ + +const float32_t twiddleCoef_128[256] = { + 1.000000000f, 0.000000000f, + 0.998795456f, 0.049067674f, + 0.995184727f, 0.098017140f, + 0.989176510f, 0.146730474f, + 0.980785280f, 0.195090322f, + 0.970031253f, 0.242980180f, + 0.956940336f, 0.290284677f, + 0.941544065f, 0.336889853f, + 0.923879533f, 0.382683432f, + 0.903989293f, 0.427555093f, + 0.881921264f, 0.471396737f, + 0.857728610f, 0.514102744f, + 0.831469612f, 0.555570233f, + 0.803207531f, 0.595699304f, + 0.773010453f, 0.634393284f, + 0.740951125f, 0.671558955f, + 0.707106781f, 0.707106781f, + 0.671558955f, 0.740951125f, + 0.634393284f, 0.773010453f, + 0.595699304f, 0.803207531f, + 0.555570233f, 0.831469612f, + 0.514102744f, 0.857728610f, + 0.471396737f, 0.881921264f, + 0.427555093f, 0.903989293f, + 0.382683432f, 0.923879533f, + 0.336889853f, 0.941544065f, + 0.290284677f, 0.956940336f, + 0.242980180f, 0.970031253f, + 0.195090322f, 0.980785280f, + 0.146730474f, 0.989176510f, + 0.098017140f, 0.995184727f, + 0.049067674f, 0.998795456f, + 0.000000000f, 1.000000000f, + -0.049067674f, 0.998795456f, + -0.098017140f, 0.995184727f, + -0.146730474f, 0.989176510f, + -0.195090322f, 0.980785280f, + -0.242980180f, 0.970031253f, + -0.290284677f, 0.956940336f, + -0.336889853f, 0.941544065f, + -0.382683432f, 0.923879533f, + -0.427555093f, 0.903989293f, + -0.471396737f, 0.881921264f, + -0.514102744f, 0.857728610f, + -0.555570233f, 0.831469612f, + -0.595699304f, 0.803207531f, + -0.634393284f, 0.773010453f, + -0.671558955f, 0.740951125f, + -0.707106781f, 0.707106781f, + -0.740951125f, 0.671558955f, + -0.773010453f, 0.634393284f, + -0.803207531f, 0.595699304f, + -0.831469612f, 0.555570233f, + -0.857728610f, 0.514102744f, + -0.881921264f, 0.471396737f, + -0.903989293f, 0.427555093f, + -0.923879533f, 0.382683432f, + -0.941544065f, 0.336889853f, + -0.956940336f, 0.290284677f, + -0.970031253f, 0.242980180f, + -0.980785280f, 0.195090322f, + -0.989176510f, 0.146730474f, + -0.995184727f, 0.098017140f, + -0.998795456f, 0.049067674f, + -1.000000000f, 0.000000000f, + -0.998795456f, -0.049067674f, + -0.995184727f, -0.098017140f, + -0.989176510f, -0.146730474f, + -0.980785280f, -0.195090322f, + -0.970031253f, -0.242980180f, + -0.956940336f, -0.290284677f, + -0.941544065f, -0.336889853f, + -0.923879533f, -0.382683432f, + -0.903989293f, -0.427555093f, + -0.881921264f, -0.471396737f, + -0.857728610f, -0.514102744f, + -0.831469612f, -0.555570233f, + -0.803207531f, -0.595699304f, + -0.773010453f, -0.634393284f, + -0.740951125f, -0.671558955f, + -0.707106781f, -0.707106781f, + -0.671558955f, -0.740951125f, + -0.634393284f, -0.773010453f, + -0.595699304f, -0.803207531f, + -0.555570233f, -0.831469612f, + -0.514102744f, -0.857728610f, + -0.471396737f, -0.881921264f, + -0.427555093f, -0.903989293f, + -0.382683432f, -0.923879533f, + -0.336889853f, -0.941544065f, + -0.290284677f, -0.956940336f, + -0.242980180f, -0.970031253f, + -0.195090322f, -0.980785280f, + -0.146730474f, -0.989176510f, + -0.098017140f, -0.995184727f, + -0.049067674f, -0.998795456f, + -0.000000000f, -1.000000000f, + 0.049067674f, -0.998795456f, + 0.098017140f, -0.995184727f, + 0.146730474f, -0.989176510f, + 0.195090322f, -0.980785280f, + 0.242980180f, -0.970031253f, + 0.290284677f, -0.956940336f, + 0.336889853f, -0.941544065f, + 0.382683432f, -0.923879533f, + 0.427555093f, -0.903989293f, + 0.471396737f, -0.881921264f, + 0.514102744f, -0.857728610f, + 0.555570233f, -0.831469612f, + 0.595699304f, -0.803207531f, + 0.634393284f, -0.773010453f, + 0.671558955f, -0.740951125f, + 0.707106781f, -0.707106781f, + 0.740951125f, -0.671558955f, + 0.773010453f, -0.634393284f, + 0.803207531f, -0.595699304f, + 0.831469612f, -0.555570233f, + 0.857728610f, -0.514102744f, + 0.881921264f, -0.471396737f, + 0.903989293f, -0.427555093f, + 0.923879533f, -0.382683432f, + 0.941544065f, -0.336889853f, + 0.956940336f, -0.290284677f, + 0.970031253f, -0.242980180f, + 0.980785280f, -0.195090322f, + 0.989176510f, -0.146730474f, + 0.995184727f, -0.098017140f, + 0.998795456f, -0.049067674f +}; + +/** +* \par +* Example code for Floating-point Twiddle factors Generation: +* \par +*
for(i = 0; i< N/; i++)
+* {
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 256 and PI = 3.14159265358979 +* \par +* Cos and Sin values are in interleaved fashion +* +*/ +const float32_t twiddleCoef_256[512] = { + 1.000000000f, 0.000000000f, + 0.999698819f, 0.024541229f, + 0.998795456f, 0.049067674f, + 0.997290457f, 0.073564564f, + 0.995184727f, 0.098017140f, + 0.992479535f, 0.122410675f, + 0.989176510f, 0.146730474f, + 0.985277642f, 0.170961889f, + 0.980785280f, 0.195090322f, + 0.975702130f, 0.219101240f, + 0.970031253f, 0.242980180f, + 0.963776066f, 0.266712757f, + 0.956940336f, 0.290284677f, + 0.949528181f, 0.313681740f, + 0.941544065f, 0.336889853f, + 0.932992799f, 0.359895037f, + 0.923879533f, 0.382683432f, + 0.914209756f, 0.405241314f, + 0.903989293f, 0.427555093f, + 0.893224301f, 0.449611330f, + 0.881921264f, 0.471396737f, + 0.870086991f, 0.492898192f, + 0.857728610f, 0.514102744f, + 0.844853565f, 0.534997620f, + 0.831469612f, 0.555570233f, + 0.817584813f, 0.575808191f, + 0.803207531f, 0.595699304f, + 0.788346428f, 0.615231591f, + 0.773010453f, 0.634393284f, + 0.757208847f, 0.653172843f, + 0.740951125f, 0.671558955f, + 0.724247083f, 0.689540545f, + 0.707106781f, 0.707106781f, + 0.689540545f, 0.724247083f, + 0.671558955f, 0.740951125f, + 0.653172843f, 0.757208847f, + 0.634393284f, 0.773010453f, + 0.615231591f, 0.788346428f, + 0.595699304f, 0.803207531f, + 0.575808191f, 0.817584813f, + 0.555570233f, 0.831469612f, + 0.534997620f, 0.844853565f, + 0.514102744f, 0.857728610f, + 0.492898192f, 0.870086991f, + 0.471396737f, 0.881921264f, + 0.449611330f, 0.893224301f, + 0.427555093f, 0.903989293f, + 0.405241314f, 0.914209756f, + 0.382683432f, 0.923879533f, + 0.359895037f, 0.932992799f, + 0.336889853f, 0.941544065f, + 0.313681740f, 0.949528181f, + 0.290284677f, 0.956940336f, + 0.266712757f, 0.963776066f, + 0.242980180f, 0.970031253f, + 0.219101240f, 0.975702130f, + 0.195090322f, 0.980785280f, + 0.170961889f, 0.985277642f, + 0.146730474f, 0.989176510f, + 0.122410675f, 0.992479535f, + 0.098017140f, 0.995184727f, + 0.073564564f, 0.997290457f, + 0.049067674f, 0.998795456f, + 0.024541229f, 0.999698819f, + 0.000000000f, 1.000000000f, + -0.024541229f, 0.999698819f, + -0.049067674f, 0.998795456f, + -0.073564564f, 0.997290457f, + -0.098017140f, 0.995184727f, + -0.122410675f, 0.992479535f, + -0.146730474f, 0.989176510f, + -0.170961889f, 0.985277642f, + -0.195090322f, 0.980785280f, + -0.219101240f, 0.975702130f, + -0.242980180f, 0.970031253f, + -0.266712757f, 0.963776066f, + -0.290284677f, 0.956940336f, + -0.313681740f, 0.949528181f, + -0.336889853f, 0.941544065f, + -0.359895037f, 0.932992799f, + -0.382683432f, 0.923879533f, + -0.405241314f, 0.914209756f, + -0.427555093f, 0.903989293f, + -0.449611330f, 0.893224301f, + -0.471396737f, 0.881921264f, + -0.492898192f, 0.870086991f, + -0.514102744f, 0.857728610f, + -0.534997620f, 0.844853565f, + -0.555570233f, 0.831469612f, + -0.575808191f, 0.817584813f, + -0.595699304f, 0.803207531f, + -0.615231591f, 0.788346428f, + -0.634393284f, 0.773010453f, + -0.653172843f, 0.757208847f, + -0.671558955f, 0.740951125f, + -0.689540545f, 0.724247083f, + -0.707106781f, 0.707106781f, + -0.724247083f, 0.689540545f, + -0.740951125f, 0.671558955f, + -0.757208847f, 0.653172843f, + -0.773010453f, 0.634393284f, + -0.788346428f, 0.615231591f, + -0.803207531f, 0.595699304f, + -0.817584813f, 0.575808191f, + -0.831469612f, 0.555570233f, + -0.844853565f, 0.534997620f, + -0.857728610f, 0.514102744f, + -0.870086991f, 0.492898192f, + -0.881921264f, 0.471396737f, + -0.893224301f, 0.449611330f, + -0.903989293f, 0.427555093f, + -0.914209756f, 0.405241314f, + -0.923879533f, 0.382683432f, + -0.932992799f, 0.359895037f, + -0.941544065f, 0.336889853f, + -0.949528181f, 0.313681740f, + -0.956940336f, 0.290284677f, + -0.963776066f, 0.266712757f, + -0.970031253f, 0.242980180f, + -0.975702130f, 0.219101240f, + -0.980785280f, 0.195090322f, + -0.985277642f, 0.170961889f, + -0.989176510f, 0.146730474f, + -0.992479535f, 0.122410675f, + -0.995184727f, 0.098017140f, + -0.997290457f, 0.073564564f, + -0.998795456f, 0.049067674f, + -0.999698819f, 0.024541229f, + -1.000000000f, 0.000000000f, + -0.999698819f, -0.024541229f, + -0.998795456f, -0.049067674f, + -0.997290457f, -0.073564564f, + -0.995184727f, -0.098017140f, + -0.992479535f, -0.122410675f, + -0.989176510f, -0.146730474f, + -0.985277642f, -0.170961889f, + -0.980785280f, -0.195090322f, + -0.975702130f, -0.219101240f, + -0.970031253f, -0.242980180f, + -0.963776066f, -0.266712757f, + -0.956940336f, -0.290284677f, + -0.949528181f, -0.313681740f, + -0.941544065f, -0.336889853f, + -0.932992799f, -0.359895037f, + -0.923879533f, -0.382683432f, + -0.914209756f, -0.405241314f, + -0.903989293f, -0.427555093f, + -0.893224301f, -0.449611330f, + -0.881921264f, -0.471396737f, + -0.870086991f, -0.492898192f, + -0.857728610f, -0.514102744f, + -0.844853565f, -0.534997620f, + -0.831469612f, -0.555570233f, + -0.817584813f, -0.575808191f, + -0.803207531f, -0.595699304f, + -0.788346428f, -0.615231591f, + -0.773010453f, -0.634393284f, + -0.757208847f, -0.653172843f, + -0.740951125f, -0.671558955f, + -0.724247083f, -0.689540545f, + -0.707106781f, -0.707106781f, + -0.689540545f, -0.724247083f, + -0.671558955f, -0.740951125f, + -0.653172843f, -0.757208847f, + -0.634393284f, -0.773010453f, + -0.615231591f, -0.788346428f, + -0.595699304f, -0.803207531f, + -0.575808191f, -0.817584813f, + -0.555570233f, -0.831469612f, + -0.534997620f, -0.844853565f, + -0.514102744f, -0.857728610f, + -0.492898192f, -0.870086991f, + -0.471396737f, -0.881921264f, + -0.449611330f, -0.893224301f, + -0.427555093f, -0.903989293f, + -0.405241314f, -0.914209756f, + -0.382683432f, -0.923879533f, + -0.359895037f, -0.932992799f, + -0.336889853f, -0.941544065f, + -0.313681740f, -0.949528181f, + -0.290284677f, -0.956940336f, + -0.266712757f, -0.963776066f, + -0.242980180f, -0.970031253f, + -0.219101240f, -0.975702130f, + -0.195090322f, -0.980785280f, + -0.170961889f, -0.985277642f, + -0.146730474f, -0.989176510f, + -0.122410675f, -0.992479535f, + -0.098017140f, -0.995184727f, + -0.073564564f, -0.997290457f, + -0.049067674f, -0.998795456f, + -0.024541229f, -0.999698819f, + -0.000000000f, -1.000000000f, + 0.024541229f, -0.999698819f, + 0.049067674f, -0.998795456f, + 0.073564564f, -0.997290457f, + 0.098017140f, -0.995184727f, + 0.122410675f, -0.992479535f, + 0.146730474f, -0.989176510f, + 0.170961889f, -0.985277642f, + 0.195090322f, -0.980785280f, + 0.219101240f, -0.975702130f, + 0.242980180f, -0.970031253f, + 0.266712757f, -0.963776066f, + 0.290284677f, -0.956940336f, + 0.313681740f, -0.949528181f, + 0.336889853f, -0.941544065f, + 0.359895037f, -0.932992799f, + 0.382683432f, -0.923879533f, + 0.405241314f, -0.914209756f, + 0.427555093f, -0.903989293f, + 0.449611330f, -0.893224301f, + 0.471396737f, -0.881921264f, + 0.492898192f, -0.870086991f, + 0.514102744f, -0.857728610f, + 0.534997620f, -0.844853565f, + 0.555570233f, -0.831469612f, + 0.575808191f, -0.817584813f, + 0.595699304f, -0.803207531f, + 0.615231591f, -0.788346428f, + 0.634393284f, -0.773010453f, + 0.653172843f, -0.757208847f, + 0.671558955f, -0.740951125f, + 0.689540545f, -0.724247083f, + 0.707106781f, -0.707106781f, + 0.724247083f, -0.689540545f, + 0.740951125f, -0.671558955f, + 0.757208847f, -0.653172843f, + 0.773010453f, -0.634393284f, + 0.788346428f, -0.615231591f, + 0.803207531f, -0.595699304f, + 0.817584813f, -0.575808191f, + 0.831469612f, -0.555570233f, + 0.844853565f, -0.534997620f, + 0.857728610f, -0.514102744f, + 0.870086991f, -0.492898192f, + 0.881921264f, -0.471396737f, + 0.893224301f, -0.449611330f, + 0.903989293f, -0.427555093f, + 0.914209756f, -0.405241314f, + 0.923879533f, -0.382683432f, + 0.932992799f, -0.359895037f, + 0.941544065f, -0.336889853f, + 0.949528181f, -0.313681740f, + 0.956940336f, -0.290284677f, + 0.963776066f, -0.266712757f, + 0.970031253f, -0.242980180f, + 0.975702130f, -0.219101240f, + 0.980785280f, -0.195090322f, + 0.985277642f, -0.170961889f, + 0.989176510f, -0.146730474f, + 0.992479535f, -0.122410675f, + 0.995184727f, -0.098017140f, + 0.997290457f, -0.073564564f, + 0.998795456f, -0.049067674f, + 0.999698819f, -0.024541229f +}; + +/** +* \par +* Example code for Floating-point Twiddle factors Generation: +* \par +*
for(i = 0; i< N/; i++)
+* {
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 512 and PI = 3.14159265358979 +* \par +* Cos and Sin values are in interleaved fashion +* +*/ +const float32_t twiddleCoef_512[1024] = { + 1.000000000f, 0.000000000f, + 0.999924702f, 0.012271538f, + 0.999698819f, 0.024541229f, + 0.999322385f, 0.036807223f, + 0.998795456f, 0.049067674f, + 0.998118113f, 0.061320736f, + 0.997290457f, 0.073564564f, + 0.996312612f, 0.085797312f, + 0.995184727f, 0.098017140f, + 0.993906970f, 0.110222207f, + 0.992479535f, 0.122410675f, + 0.990902635f, 0.134580709f, + 0.989176510f, 0.146730474f, + 0.987301418f, 0.158858143f, + 0.985277642f, 0.170961889f, + 0.983105487f, 0.183039888f, + 0.980785280f, 0.195090322f, + 0.978317371f, 0.207111376f, + 0.975702130f, 0.219101240f, + 0.972939952f, 0.231058108f, + 0.970031253f, 0.242980180f, + 0.966976471f, 0.254865660f, + 0.963776066f, 0.266712757f, + 0.960430519f, 0.278519689f, + 0.956940336f, 0.290284677f, + 0.953306040f, 0.302005949f, + 0.949528181f, 0.313681740f, + 0.945607325f, 0.325310292f, + 0.941544065f, 0.336889853f, + 0.937339012f, 0.348418680f, + 0.932992799f, 0.359895037f, + 0.928506080f, 0.371317194f, + 0.923879533f, 0.382683432f, + 0.919113852f, 0.393992040f, + 0.914209756f, 0.405241314f, + 0.909167983f, 0.416429560f, + 0.903989293f, 0.427555093f, + 0.898674466f, 0.438616239f, + 0.893224301f, 0.449611330f, + 0.887639620f, 0.460538711f, + 0.881921264f, 0.471396737f, + 0.876070094f, 0.482183772f, + 0.870086991f, 0.492898192f, + 0.863972856f, 0.503538384f, + 0.857728610f, 0.514102744f, + 0.851355193f, 0.524589683f, + 0.844853565f, 0.534997620f, + 0.838224706f, 0.545324988f, + 0.831469612f, 0.555570233f, + 0.824589303f, 0.565731811f, + 0.817584813f, 0.575808191f, + 0.810457198f, 0.585797857f, + 0.803207531f, 0.595699304f, + 0.795836905f, 0.605511041f, + 0.788346428f, 0.615231591f, + 0.780737229f, 0.624859488f, + 0.773010453f, 0.634393284f, + 0.765167266f, 0.643831543f, + 0.757208847f, 0.653172843f, + 0.749136395f, 0.662415778f, + 0.740951125f, 0.671558955f, + 0.732654272f, 0.680600998f, + 0.724247083f, 0.689540545f, + 0.715730825f, 0.698376249f, + 0.707106781f, 0.707106781f, + 0.698376249f, 0.715730825f, + 0.689540545f, 0.724247083f, + 0.680600998f, 0.732654272f, + 0.671558955f, 0.740951125f, + 0.662415778f, 0.749136395f, + 0.653172843f, 0.757208847f, + 0.643831543f, 0.765167266f, + 0.634393284f, 0.773010453f, + 0.624859488f, 0.780737229f, + 0.615231591f, 0.788346428f, + 0.605511041f, 0.795836905f, + 0.595699304f, 0.803207531f, + 0.585797857f, 0.810457198f, + 0.575808191f, 0.817584813f, + 0.565731811f, 0.824589303f, + 0.555570233f, 0.831469612f, + 0.545324988f, 0.838224706f, + 0.534997620f, 0.844853565f, + 0.524589683f, 0.851355193f, + 0.514102744f, 0.857728610f, + 0.503538384f, 0.863972856f, + 0.492898192f, 0.870086991f, + 0.482183772f, 0.876070094f, + 0.471396737f, 0.881921264f, + 0.460538711f, 0.887639620f, + 0.449611330f, 0.893224301f, + 0.438616239f, 0.898674466f, + 0.427555093f, 0.903989293f, + 0.416429560f, 0.909167983f, + 0.405241314f, 0.914209756f, + 0.393992040f, 0.919113852f, + 0.382683432f, 0.923879533f, + 0.371317194f, 0.928506080f, + 0.359895037f, 0.932992799f, + 0.348418680f, 0.937339012f, + 0.336889853f, 0.941544065f, + 0.325310292f, 0.945607325f, + 0.313681740f, 0.949528181f, + 0.302005949f, 0.953306040f, + 0.290284677f, 0.956940336f, + 0.278519689f, 0.960430519f, + 0.266712757f, 0.963776066f, + 0.254865660f, 0.966976471f, + 0.242980180f, 0.970031253f, + 0.231058108f, 0.972939952f, + 0.219101240f, 0.975702130f, + 0.207111376f, 0.978317371f, + 0.195090322f, 0.980785280f, + 0.183039888f, 0.983105487f, + 0.170961889f, 0.985277642f, + 0.158858143f, 0.987301418f, + 0.146730474f, 0.989176510f, + 0.134580709f, 0.990902635f, + 0.122410675f, 0.992479535f, + 0.110222207f, 0.993906970f, + 0.098017140f, 0.995184727f, + 0.085797312f, 0.996312612f, + 0.073564564f, 0.997290457f, + 0.061320736f, 0.998118113f, + 0.049067674f, 0.998795456f, + 0.036807223f, 0.999322385f, + 0.024541229f, 0.999698819f, + 0.012271538f, 0.999924702f, + 0.000000000f, 1.000000000f, + -0.012271538f, 0.999924702f, + -0.024541229f, 0.999698819f, + -0.036807223f, 0.999322385f, + -0.049067674f, 0.998795456f, + -0.061320736f, 0.998118113f, + -0.073564564f, 0.997290457f, + -0.085797312f, 0.996312612f, + -0.098017140f, 0.995184727f, + -0.110222207f, 0.993906970f, + -0.122410675f, 0.992479535f, + -0.134580709f, 0.990902635f, + -0.146730474f, 0.989176510f, + -0.158858143f, 0.987301418f, + -0.170961889f, 0.985277642f, + -0.183039888f, 0.983105487f, + -0.195090322f, 0.980785280f, + -0.207111376f, 0.978317371f, + -0.219101240f, 0.975702130f, + -0.231058108f, 0.972939952f, + -0.242980180f, 0.970031253f, + -0.254865660f, 0.966976471f, + -0.266712757f, 0.963776066f, + -0.278519689f, 0.960430519f, + -0.290284677f, 0.956940336f, + -0.302005949f, 0.953306040f, + -0.313681740f, 0.949528181f, + -0.325310292f, 0.945607325f, + -0.336889853f, 0.941544065f, + -0.348418680f, 0.937339012f, + -0.359895037f, 0.932992799f, + -0.371317194f, 0.928506080f, + -0.382683432f, 0.923879533f, + -0.393992040f, 0.919113852f, + -0.405241314f, 0.914209756f, + -0.416429560f, 0.909167983f, + -0.427555093f, 0.903989293f, + -0.438616239f, 0.898674466f, + -0.449611330f, 0.893224301f, + -0.460538711f, 0.887639620f, + -0.471396737f, 0.881921264f, + -0.482183772f, 0.876070094f, + -0.492898192f, 0.870086991f, + -0.503538384f, 0.863972856f, + -0.514102744f, 0.857728610f, + -0.524589683f, 0.851355193f, + -0.534997620f, 0.844853565f, + -0.545324988f, 0.838224706f, + -0.555570233f, 0.831469612f, + -0.565731811f, 0.824589303f, + -0.575808191f, 0.817584813f, + -0.585797857f, 0.810457198f, + -0.595699304f, 0.803207531f, + -0.605511041f, 0.795836905f, + -0.615231591f, 0.788346428f, + -0.624859488f, 0.780737229f, + -0.634393284f, 0.773010453f, + -0.643831543f, 0.765167266f, + -0.653172843f, 0.757208847f, + -0.662415778f, 0.749136395f, + -0.671558955f, 0.740951125f, + -0.680600998f, 0.732654272f, + -0.689540545f, 0.724247083f, + -0.698376249f, 0.715730825f, + -0.707106781f, 0.707106781f, + -0.715730825f, 0.698376249f, + -0.724247083f, 0.689540545f, + -0.732654272f, 0.680600998f, + -0.740951125f, 0.671558955f, + -0.749136395f, 0.662415778f, + -0.757208847f, 0.653172843f, + -0.765167266f, 0.643831543f, + -0.773010453f, 0.634393284f, + -0.780737229f, 0.624859488f, + -0.788346428f, 0.615231591f, + -0.795836905f, 0.605511041f, + -0.803207531f, 0.595699304f, + -0.810457198f, 0.585797857f, + -0.817584813f, 0.575808191f, + -0.824589303f, 0.565731811f, + -0.831469612f, 0.555570233f, + -0.838224706f, 0.545324988f, + -0.844853565f, 0.534997620f, + -0.851355193f, 0.524589683f, + -0.857728610f, 0.514102744f, + -0.863972856f, 0.503538384f, + -0.870086991f, 0.492898192f, + -0.876070094f, 0.482183772f, + -0.881921264f, 0.471396737f, + -0.887639620f, 0.460538711f, + -0.893224301f, 0.449611330f, + -0.898674466f, 0.438616239f, + -0.903989293f, 0.427555093f, + -0.909167983f, 0.416429560f, + -0.914209756f, 0.405241314f, + -0.919113852f, 0.393992040f, + -0.923879533f, 0.382683432f, + -0.928506080f, 0.371317194f, + -0.932992799f, 0.359895037f, + -0.937339012f, 0.348418680f, + -0.941544065f, 0.336889853f, + -0.945607325f, 0.325310292f, + -0.949528181f, 0.313681740f, + -0.953306040f, 0.302005949f, + -0.956940336f, 0.290284677f, + -0.960430519f, 0.278519689f, + -0.963776066f, 0.266712757f, + -0.966976471f, 0.254865660f, + -0.970031253f, 0.242980180f, + -0.972939952f, 0.231058108f, + -0.975702130f, 0.219101240f, + -0.978317371f, 0.207111376f, + -0.980785280f, 0.195090322f, + -0.983105487f, 0.183039888f, + -0.985277642f, 0.170961889f, + -0.987301418f, 0.158858143f, + -0.989176510f, 0.146730474f, + -0.990902635f, 0.134580709f, + -0.992479535f, 0.122410675f, + -0.993906970f, 0.110222207f, + -0.995184727f, 0.098017140f, + -0.996312612f, 0.085797312f, + -0.997290457f, 0.073564564f, + -0.998118113f, 0.061320736f, + -0.998795456f, 0.049067674f, + -0.999322385f, 0.036807223f, + -0.999698819f, 0.024541229f, + -0.999924702f, 0.012271538f, + -1.000000000f, 0.000000000f, + -0.999924702f, -0.012271538f, + -0.999698819f, -0.024541229f, + -0.999322385f, -0.036807223f, + -0.998795456f, -0.049067674f, + -0.998118113f, -0.061320736f, + -0.997290457f, -0.073564564f, + -0.996312612f, -0.085797312f, + -0.995184727f, -0.098017140f, + -0.993906970f, -0.110222207f, + -0.992479535f, -0.122410675f, + -0.990902635f, -0.134580709f, + -0.989176510f, -0.146730474f, + -0.987301418f, -0.158858143f, + -0.985277642f, -0.170961889f, + -0.983105487f, -0.183039888f, + -0.980785280f, -0.195090322f, + -0.978317371f, -0.207111376f, + -0.975702130f, -0.219101240f, + -0.972939952f, -0.231058108f, + -0.970031253f, -0.242980180f, + -0.966976471f, -0.254865660f, + -0.963776066f, -0.266712757f, + -0.960430519f, -0.278519689f, + -0.956940336f, -0.290284677f, + -0.953306040f, -0.302005949f, + -0.949528181f, -0.313681740f, + -0.945607325f, -0.325310292f, + -0.941544065f, -0.336889853f, + -0.937339012f, -0.348418680f, + -0.932992799f, -0.359895037f, + -0.928506080f, -0.371317194f, + -0.923879533f, -0.382683432f, + -0.919113852f, -0.393992040f, + -0.914209756f, -0.405241314f, + -0.909167983f, -0.416429560f, + -0.903989293f, -0.427555093f, + -0.898674466f, -0.438616239f, + -0.893224301f, -0.449611330f, + -0.887639620f, -0.460538711f, + -0.881921264f, -0.471396737f, + -0.876070094f, -0.482183772f, + -0.870086991f, -0.492898192f, + -0.863972856f, -0.503538384f, + -0.857728610f, -0.514102744f, + -0.851355193f, -0.524589683f, + -0.844853565f, -0.534997620f, + -0.838224706f, -0.545324988f, + -0.831469612f, -0.555570233f, + -0.824589303f, -0.565731811f, + -0.817584813f, -0.575808191f, + -0.810457198f, -0.585797857f, + -0.803207531f, -0.595699304f, + -0.795836905f, -0.605511041f, + -0.788346428f, -0.615231591f, + -0.780737229f, -0.624859488f, + -0.773010453f, -0.634393284f, + -0.765167266f, -0.643831543f, + -0.757208847f, -0.653172843f, + -0.749136395f, -0.662415778f, + -0.740951125f, -0.671558955f, + -0.732654272f, -0.680600998f, + -0.724247083f, -0.689540545f, + -0.715730825f, -0.698376249f, + -0.707106781f, -0.707106781f, + -0.698376249f, -0.715730825f, + -0.689540545f, -0.724247083f, + -0.680600998f, -0.732654272f, + -0.671558955f, -0.740951125f, + -0.662415778f, -0.749136395f, + -0.653172843f, -0.757208847f, + -0.643831543f, -0.765167266f, + -0.634393284f, -0.773010453f, + -0.624859488f, -0.780737229f, + -0.615231591f, -0.788346428f, + -0.605511041f, -0.795836905f, + -0.595699304f, -0.803207531f, + -0.585797857f, -0.810457198f, + -0.575808191f, -0.817584813f, + -0.565731811f, -0.824589303f, + -0.555570233f, -0.831469612f, + -0.545324988f, -0.838224706f, + -0.534997620f, -0.844853565f, + -0.524589683f, -0.851355193f, + -0.514102744f, -0.857728610f, + -0.503538384f, -0.863972856f, + -0.492898192f, -0.870086991f, + -0.482183772f, -0.876070094f, + -0.471396737f, -0.881921264f, + -0.460538711f, -0.887639620f, + -0.449611330f, -0.893224301f, + -0.438616239f, -0.898674466f, + -0.427555093f, -0.903989293f, + -0.416429560f, -0.909167983f, + -0.405241314f, -0.914209756f, + -0.393992040f, -0.919113852f, + -0.382683432f, -0.923879533f, + -0.371317194f, -0.928506080f, + -0.359895037f, -0.932992799f, + -0.348418680f, -0.937339012f, + -0.336889853f, -0.941544065f, + -0.325310292f, -0.945607325f, + -0.313681740f, -0.949528181f, + -0.302005949f, -0.953306040f, + -0.290284677f, -0.956940336f, + -0.278519689f, -0.960430519f, + -0.266712757f, -0.963776066f, + -0.254865660f, -0.966976471f, + -0.242980180f, -0.970031253f, + -0.231058108f, -0.972939952f, + -0.219101240f, -0.975702130f, + -0.207111376f, -0.978317371f, + -0.195090322f, -0.980785280f, + -0.183039888f, -0.983105487f, + -0.170961889f, -0.985277642f, + -0.158858143f, -0.987301418f, + -0.146730474f, -0.989176510f, + -0.134580709f, -0.990902635f, + -0.122410675f, -0.992479535f, + -0.110222207f, -0.993906970f, + -0.098017140f, -0.995184727f, + -0.085797312f, -0.996312612f, + -0.073564564f, -0.997290457f, + -0.061320736f, -0.998118113f, + -0.049067674f, -0.998795456f, + -0.036807223f, -0.999322385f, + -0.024541229f, -0.999698819f, + -0.012271538f, -0.999924702f, + -0.000000000f, -1.000000000f, + 0.012271538f, -0.999924702f, + 0.024541229f, -0.999698819f, + 0.036807223f, -0.999322385f, + 0.049067674f, -0.998795456f, + 0.061320736f, -0.998118113f, + 0.073564564f, -0.997290457f, + 0.085797312f, -0.996312612f, + 0.098017140f, -0.995184727f, + 0.110222207f, -0.993906970f, + 0.122410675f, -0.992479535f, + 0.134580709f, -0.990902635f, + 0.146730474f, -0.989176510f, + 0.158858143f, -0.987301418f, + 0.170961889f, -0.985277642f, + 0.183039888f, -0.983105487f, + 0.195090322f, -0.980785280f, + 0.207111376f, -0.978317371f, + 0.219101240f, -0.975702130f, + 0.231058108f, -0.972939952f, + 0.242980180f, -0.970031253f, + 0.254865660f, -0.966976471f, + 0.266712757f, -0.963776066f, + 0.278519689f, -0.960430519f, + 0.290284677f, -0.956940336f, + 0.302005949f, -0.953306040f, + 0.313681740f, -0.949528181f, + 0.325310292f, -0.945607325f, + 0.336889853f, -0.941544065f, + 0.348418680f, -0.937339012f, + 0.359895037f, -0.932992799f, + 0.371317194f, -0.928506080f, + 0.382683432f, -0.923879533f, + 0.393992040f, -0.919113852f, + 0.405241314f, -0.914209756f, + 0.416429560f, -0.909167983f, + 0.427555093f, -0.903989293f, + 0.438616239f, -0.898674466f, + 0.449611330f, -0.893224301f, + 0.460538711f, -0.887639620f, + 0.471396737f, -0.881921264f, + 0.482183772f, -0.876070094f, + 0.492898192f, -0.870086991f, + 0.503538384f, -0.863972856f, + 0.514102744f, -0.857728610f, + 0.524589683f, -0.851355193f, + 0.534997620f, -0.844853565f, + 0.545324988f, -0.838224706f, + 0.555570233f, -0.831469612f, + 0.565731811f, -0.824589303f, + 0.575808191f, -0.817584813f, + 0.585797857f, -0.810457198f, + 0.595699304f, -0.803207531f, + 0.605511041f, -0.795836905f, + 0.615231591f, -0.788346428f, + 0.624859488f, -0.780737229f, + 0.634393284f, -0.773010453f, + 0.643831543f, -0.765167266f, + 0.653172843f, -0.757208847f, + 0.662415778f, -0.749136395f, + 0.671558955f, -0.740951125f, + 0.680600998f, -0.732654272f, + 0.689540545f, -0.724247083f, + 0.698376249f, -0.715730825f, + 0.707106781f, -0.707106781f, + 0.715730825f, -0.698376249f, + 0.724247083f, -0.689540545f, + 0.732654272f, -0.680600998f, + 0.740951125f, -0.671558955f, + 0.749136395f, -0.662415778f, + 0.757208847f, -0.653172843f, + 0.765167266f, -0.643831543f, + 0.773010453f, -0.634393284f, + 0.780737229f, -0.624859488f, + 0.788346428f, -0.615231591f, + 0.795836905f, -0.605511041f, + 0.803207531f, -0.595699304f, + 0.810457198f, -0.585797857f, + 0.817584813f, -0.575808191f, + 0.824589303f, -0.565731811f, + 0.831469612f, -0.555570233f, + 0.838224706f, -0.545324988f, + 0.844853565f, -0.534997620f, + 0.851355193f, -0.524589683f, + 0.857728610f, -0.514102744f, + 0.863972856f, -0.503538384f, + 0.870086991f, -0.492898192f, + 0.876070094f, -0.482183772f, + 0.881921264f, -0.471396737f, + 0.887639620f, -0.460538711f, + 0.893224301f, -0.449611330f, + 0.898674466f, -0.438616239f, + 0.903989293f, -0.427555093f, + 0.909167983f, -0.416429560f, + 0.914209756f, -0.405241314f, + 0.919113852f, -0.393992040f, + 0.923879533f, -0.382683432f, + 0.928506080f, -0.371317194f, + 0.932992799f, -0.359895037f, + 0.937339012f, -0.348418680f, + 0.941544065f, -0.336889853f, + 0.945607325f, -0.325310292f, + 0.949528181f, -0.313681740f, + 0.953306040f, -0.302005949f, + 0.956940336f, -0.290284677f, + 0.960430519f, -0.278519689f, + 0.963776066f, -0.266712757f, + 0.966976471f, -0.254865660f, + 0.970031253f, -0.242980180f, + 0.972939952f, -0.231058108f, + 0.975702130f, -0.219101240f, + 0.978317371f, -0.207111376f, + 0.980785280f, -0.195090322f, + 0.983105487f, -0.183039888f, + 0.985277642f, -0.170961889f, + 0.987301418f, -0.158858143f, + 0.989176510f, -0.146730474f, + 0.990902635f, -0.134580709f, + 0.992479535f, -0.122410675f, + 0.993906970f, -0.110222207f, + 0.995184727f, -0.098017140f, + 0.996312612f, -0.085797312f, + 0.997290457f, -0.073564564f, + 0.998118113f, -0.061320736f, + 0.998795456f, -0.049067674f, + 0.999322385f, -0.036807223f, + 0.999698819f, -0.024541229f, + 0.999924702f, -0.012271538f +}; +/** +* \par +* Example code for Floating-point Twiddle factors Generation: +* \par +*
for(i = 0; i< N/; i++)
+* {
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 1024 and PI = 3.14159265358979 +* \par +* Cos and Sin values are in interleaved fashion +* +*/ +const float32_t twiddleCoef_1024[2048] = { + 1.000000000f, 0.000000000f, + 0.999981175f, 0.006135885f, + 0.999924702f, 0.012271538f, + 0.999830582f, 0.018406730f, + 0.999698819f, 0.024541229f, + 0.999529418f, 0.030674803f, + 0.999322385f, 0.036807223f, + 0.999077728f, 0.042938257f, + 0.998795456f, 0.049067674f, + 0.998475581f, 0.055195244f, + 0.998118113f, 0.061320736f, + 0.997723067f, 0.067443920f, + 0.997290457f, 0.073564564f, + 0.996820299f, 0.079682438f, + 0.996312612f, 0.085797312f, + 0.995767414f, 0.091908956f, + 0.995184727f, 0.098017140f, + 0.994564571f, 0.104121634f, + 0.993906970f, 0.110222207f, + 0.993211949f, 0.116318631f, + 0.992479535f, 0.122410675f, + 0.991709754f, 0.128498111f, + 0.990902635f, 0.134580709f, + 0.990058210f, 0.140658239f, + 0.989176510f, 0.146730474f, + 0.988257568f, 0.152797185f, + 0.987301418f, 0.158858143f, + 0.986308097f, 0.164913120f, + 0.985277642f, 0.170961889f, + 0.984210092f, 0.177004220f, + 0.983105487f, 0.183039888f, + 0.981963869f, 0.189068664f, + 0.980785280f, 0.195090322f, + 0.979569766f, 0.201104635f, + 0.978317371f, 0.207111376f, + 0.977028143f, 0.213110320f, + 0.975702130f, 0.219101240f, + 0.974339383f, 0.225083911f, + 0.972939952f, 0.231058108f, + 0.971503891f, 0.237023606f, + 0.970031253f, 0.242980180f, + 0.968522094f, 0.248927606f, + 0.966976471f, 0.254865660f, + 0.965394442f, 0.260794118f, + 0.963776066f, 0.266712757f, + 0.962121404f, 0.272621355f, + 0.960430519f, 0.278519689f, + 0.958703475f, 0.284407537f, + 0.956940336f, 0.290284677f, + 0.955141168f, 0.296150888f, + 0.953306040f, 0.302005949f, + 0.951435021f, 0.307849640f, + 0.949528181f, 0.313681740f, + 0.947585591f, 0.319502031f, + 0.945607325f, 0.325310292f, + 0.943593458f, 0.331106306f, + 0.941544065f, 0.336889853f, + 0.939459224f, 0.342660717f, + 0.937339012f, 0.348418680f, + 0.935183510f, 0.354163525f, + 0.932992799f, 0.359895037f, + 0.930766961f, 0.365612998f, + 0.928506080f, 0.371317194f, + 0.926210242f, 0.377007410f, + 0.923879533f, 0.382683432f, + 0.921514039f, 0.388345047f, + 0.919113852f, 0.393992040f, + 0.916679060f, 0.399624200f, + 0.914209756f, 0.405241314f, + 0.911706032f, 0.410843171f, + 0.909167983f, 0.416429560f, + 0.906595705f, 0.422000271f, + 0.903989293f, 0.427555093f, + 0.901348847f, 0.433093819f, + 0.898674466f, 0.438616239f, + 0.895966250f, 0.444122145f, + 0.893224301f, 0.449611330f, + 0.890448723f, 0.455083587f, + 0.887639620f, 0.460538711f, + 0.884797098f, 0.465976496f, + 0.881921264f, 0.471396737f, + 0.879012226f, 0.476799230f, + 0.876070094f, 0.482183772f, + 0.873094978f, 0.487550160f, + 0.870086991f, 0.492898192f, + 0.867046246f, 0.498227667f, + 0.863972856f, 0.503538384f, + 0.860866939f, 0.508830143f, + 0.857728610f, 0.514102744f, + 0.854557988f, 0.519355990f, + 0.851355193f, 0.524589683f, + 0.848120345f, 0.529803625f, + 0.844853565f, 0.534997620f, + 0.841554977f, 0.540171473f, + 0.838224706f, 0.545324988f, + 0.834862875f, 0.550457973f, + 0.831469612f, 0.555570233f, + 0.828045045f, 0.560661576f, + 0.824589303f, 0.565731811f, + 0.821102515f, 0.570780746f, + 0.817584813f, 0.575808191f, + 0.814036330f, 0.580813958f, + 0.810457198f, 0.585797857f, + 0.806847554f, 0.590759702f, + 0.803207531f, 0.595699304f, + 0.799537269f, 0.600616479f, + 0.795836905f, 0.605511041f, + 0.792106577f, 0.610382806f, + 0.788346428f, 0.615231591f, + 0.784556597f, 0.620057212f, + 0.780737229f, 0.624859488f, + 0.776888466f, 0.629638239f, + 0.773010453f, 0.634393284f, + 0.769103338f, 0.639124445f, + 0.765167266f, 0.643831543f, + 0.761202385f, 0.648514401f, + 0.757208847f, 0.653172843f, + 0.753186799f, 0.657806693f, + 0.749136395f, 0.662415778f, + 0.745057785f, 0.666999922f, + 0.740951125f, 0.671558955f, + 0.736816569f, 0.676092704f, + 0.732654272f, 0.680600998f, + 0.728464390f, 0.685083668f, + 0.724247083f, 0.689540545f, + 0.720002508f, 0.693971461f, + 0.715730825f, 0.698376249f, + 0.711432196f, 0.702754744f, + 0.707106781f, 0.707106781f, + 0.702754744f, 0.711432196f, + 0.698376249f, 0.715730825f, + 0.693971461f, 0.720002508f, + 0.689540545f, 0.724247083f, + 0.685083668f, 0.728464390f, + 0.680600998f, 0.732654272f, + 0.676092704f, 0.736816569f, + 0.671558955f, 0.740951125f, + 0.666999922f, 0.745057785f, + 0.662415778f, 0.749136395f, + 0.657806693f, 0.753186799f, + 0.653172843f, 0.757208847f, + 0.648514401f, 0.761202385f, + 0.643831543f, 0.765167266f, + 0.639124445f, 0.769103338f, + 0.634393284f, 0.773010453f, + 0.629638239f, 0.776888466f, + 0.624859488f, 0.780737229f, + 0.620057212f, 0.784556597f, + 0.615231591f, 0.788346428f, + 0.610382806f, 0.792106577f, + 0.605511041f, 0.795836905f, + 0.600616479f, 0.799537269f, + 0.595699304f, 0.803207531f, + 0.590759702f, 0.806847554f, + 0.585797857f, 0.810457198f, + 0.580813958f, 0.814036330f, + 0.575808191f, 0.817584813f, + 0.570780746f, 0.821102515f, + 0.565731811f, 0.824589303f, + 0.560661576f, 0.828045045f, + 0.555570233f, 0.831469612f, + 0.550457973f, 0.834862875f, + 0.545324988f, 0.838224706f, + 0.540171473f, 0.841554977f, + 0.534997620f, 0.844853565f, + 0.529803625f, 0.848120345f, + 0.524589683f, 0.851355193f, + 0.519355990f, 0.854557988f, + 0.514102744f, 0.857728610f, + 0.508830143f, 0.860866939f, + 0.503538384f, 0.863972856f, + 0.498227667f, 0.867046246f, + 0.492898192f, 0.870086991f, + 0.487550160f, 0.873094978f, + 0.482183772f, 0.876070094f, + 0.476799230f, 0.879012226f, + 0.471396737f, 0.881921264f, + 0.465976496f, 0.884797098f, + 0.460538711f, 0.887639620f, + 0.455083587f, 0.890448723f, + 0.449611330f, 0.893224301f, + 0.444122145f, 0.895966250f, + 0.438616239f, 0.898674466f, + 0.433093819f, 0.901348847f, + 0.427555093f, 0.903989293f, + 0.422000271f, 0.906595705f, + 0.416429560f, 0.909167983f, + 0.410843171f, 0.911706032f, + 0.405241314f, 0.914209756f, + 0.399624200f, 0.916679060f, + 0.393992040f, 0.919113852f, + 0.388345047f, 0.921514039f, + 0.382683432f, 0.923879533f, + 0.377007410f, 0.926210242f, + 0.371317194f, 0.928506080f, + 0.365612998f, 0.930766961f, + 0.359895037f, 0.932992799f, + 0.354163525f, 0.935183510f, + 0.348418680f, 0.937339012f, + 0.342660717f, 0.939459224f, + 0.336889853f, 0.941544065f, + 0.331106306f, 0.943593458f, + 0.325310292f, 0.945607325f, + 0.319502031f, 0.947585591f, + 0.313681740f, 0.949528181f, + 0.307849640f, 0.951435021f, + 0.302005949f, 0.953306040f, + 0.296150888f, 0.955141168f, + 0.290284677f, 0.956940336f, + 0.284407537f, 0.958703475f, + 0.278519689f, 0.960430519f, + 0.272621355f, 0.962121404f, + 0.266712757f, 0.963776066f, + 0.260794118f, 0.965394442f, + 0.254865660f, 0.966976471f, + 0.248927606f, 0.968522094f, + 0.242980180f, 0.970031253f, + 0.237023606f, 0.971503891f, + 0.231058108f, 0.972939952f, + 0.225083911f, 0.974339383f, + 0.219101240f, 0.975702130f, + 0.213110320f, 0.977028143f, + 0.207111376f, 0.978317371f, + 0.201104635f, 0.979569766f, + 0.195090322f, 0.980785280f, + 0.189068664f, 0.981963869f, + 0.183039888f, 0.983105487f, + 0.177004220f, 0.984210092f, + 0.170961889f, 0.985277642f, + 0.164913120f, 0.986308097f, + 0.158858143f, 0.987301418f, + 0.152797185f, 0.988257568f, + 0.146730474f, 0.989176510f, + 0.140658239f, 0.990058210f, + 0.134580709f, 0.990902635f, + 0.128498111f, 0.991709754f, + 0.122410675f, 0.992479535f, + 0.116318631f, 0.993211949f, + 0.110222207f, 0.993906970f, + 0.104121634f, 0.994564571f, + 0.098017140f, 0.995184727f, + 0.091908956f, 0.995767414f, + 0.085797312f, 0.996312612f, + 0.079682438f, 0.996820299f, + 0.073564564f, 0.997290457f, + 0.067443920f, 0.997723067f, + 0.061320736f, 0.998118113f, + 0.055195244f, 0.998475581f, + 0.049067674f, 0.998795456f, + 0.042938257f, 0.999077728f, + 0.036807223f, 0.999322385f, + 0.030674803f, 0.999529418f, + 0.024541229f, 0.999698819f, + 0.018406730f, 0.999830582f, + 0.012271538f, 0.999924702f, + 0.006135885f, 0.999981175f, + 0.000000000f, 1.000000000f, + -0.006135885f, 0.999981175f, + -0.012271538f, 0.999924702f, + -0.018406730f, 0.999830582f, + -0.024541229f, 0.999698819f, + -0.030674803f, 0.999529418f, + -0.036807223f, 0.999322385f, + -0.042938257f, 0.999077728f, + -0.049067674f, 0.998795456f, + -0.055195244f, 0.998475581f, + -0.061320736f, 0.998118113f, + -0.067443920f, 0.997723067f, + -0.073564564f, 0.997290457f, + -0.079682438f, 0.996820299f, + -0.085797312f, 0.996312612f, + -0.091908956f, 0.995767414f, + -0.098017140f, 0.995184727f, + -0.104121634f, 0.994564571f, + -0.110222207f, 0.993906970f, + -0.116318631f, 0.993211949f, + -0.122410675f, 0.992479535f, + -0.128498111f, 0.991709754f, + -0.134580709f, 0.990902635f, + -0.140658239f, 0.990058210f, + -0.146730474f, 0.989176510f, + -0.152797185f, 0.988257568f, + -0.158858143f, 0.987301418f, + -0.164913120f, 0.986308097f, + -0.170961889f, 0.985277642f, + -0.177004220f, 0.984210092f, + -0.183039888f, 0.983105487f, + -0.189068664f, 0.981963869f, + -0.195090322f, 0.980785280f, + -0.201104635f, 0.979569766f, + -0.207111376f, 0.978317371f, + -0.213110320f, 0.977028143f, + -0.219101240f, 0.975702130f, + -0.225083911f, 0.974339383f, + -0.231058108f, 0.972939952f, + -0.237023606f, 0.971503891f, + -0.242980180f, 0.970031253f, + -0.248927606f, 0.968522094f, + -0.254865660f, 0.966976471f, + -0.260794118f, 0.965394442f, + -0.266712757f, 0.963776066f, + -0.272621355f, 0.962121404f, + -0.278519689f, 0.960430519f, + -0.284407537f, 0.958703475f, + -0.290284677f, 0.956940336f, + -0.296150888f, 0.955141168f, + -0.302005949f, 0.953306040f, + -0.307849640f, 0.951435021f, + -0.313681740f, 0.949528181f, + -0.319502031f, 0.947585591f, + -0.325310292f, 0.945607325f, + -0.331106306f, 0.943593458f, + -0.336889853f, 0.941544065f, + -0.342660717f, 0.939459224f, + -0.348418680f, 0.937339012f, + -0.354163525f, 0.935183510f, + -0.359895037f, 0.932992799f, + -0.365612998f, 0.930766961f, + -0.371317194f, 0.928506080f, + -0.377007410f, 0.926210242f, + -0.382683432f, 0.923879533f, + -0.388345047f, 0.921514039f, + -0.393992040f, 0.919113852f, + -0.399624200f, 0.916679060f, + -0.405241314f, 0.914209756f, + -0.410843171f, 0.911706032f, + -0.416429560f, 0.909167983f, + -0.422000271f, 0.906595705f, + -0.427555093f, 0.903989293f, + -0.433093819f, 0.901348847f, + -0.438616239f, 0.898674466f, + -0.444122145f, 0.895966250f, + -0.449611330f, 0.893224301f, + -0.455083587f, 0.890448723f, + -0.460538711f, 0.887639620f, + -0.465976496f, 0.884797098f, + -0.471396737f, 0.881921264f, + -0.476799230f, 0.879012226f, + -0.482183772f, 0.876070094f, + -0.487550160f, 0.873094978f, + -0.492898192f, 0.870086991f, + -0.498227667f, 0.867046246f, + -0.503538384f, 0.863972856f, + -0.508830143f, 0.860866939f, + -0.514102744f, 0.857728610f, + -0.519355990f, 0.854557988f, + -0.524589683f, 0.851355193f, + -0.529803625f, 0.848120345f, + -0.534997620f, 0.844853565f, + -0.540171473f, 0.841554977f, + -0.545324988f, 0.838224706f, + -0.550457973f, 0.834862875f, + -0.555570233f, 0.831469612f, + -0.560661576f, 0.828045045f, + -0.565731811f, 0.824589303f, + -0.570780746f, 0.821102515f, + -0.575808191f, 0.817584813f, + -0.580813958f, 0.814036330f, + -0.585797857f, 0.810457198f, + -0.590759702f, 0.806847554f, + -0.595699304f, 0.803207531f, + -0.600616479f, 0.799537269f, + -0.605511041f, 0.795836905f, + -0.610382806f, 0.792106577f, + -0.615231591f, 0.788346428f, + -0.620057212f, 0.784556597f, + -0.624859488f, 0.780737229f, + -0.629638239f, 0.776888466f, + -0.634393284f, 0.773010453f, + -0.639124445f, 0.769103338f, + -0.643831543f, 0.765167266f, + -0.648514401f, 0.761202385f, + -0.653172843f, 0.757208847f, + -0.657806693f, 0.753186799f, + -0.662415778f, 0.749136395f, + -0.666999922f, 0.745057785f, + -0.671558955f, 0.740951125f, + -0.676092704f, 0.736816569f, + -0.680600998f, 0.732654272f, + -0.685083668f, 0.728464390f, + -0.689540545f, 0.724247083f, + -0.693971461f, 0.720002508f, + -0.698376249f, 0.715730825f, + -0.702754744f, 0.711432196f, + -0.707106781f, 0.707106781f, + -0.711432196f, 0.702754744f, + -0.715730825f, 0.698376249f, + -0.720002508f, 0.693971461f, + -0.724247083f, 0.689540545f, + -0.728464390f, 0.685083668f, + -0.732654272f, 0.680600998f, + -0.736816569f, 0.676092704f, + -0.740951125f, 0.671558955f, + -0.745057785f, 0.666999922f, + -0.749136395f, 0.662415778f, + -0.753186799f, 0.657806693f, + -0.757208847f, 0.653172843f, + -0.761202385f, 0.648514401f, + -0.765167266f, 0.643831543f, + -0.769103338f, 0.639124445f, + -0.773010453f, 0.634393284f, + -0.776888466f, 0.629638239f, + -0.780737229f, 0.624859488f, + -0.784556597f, 0.620057212f, + -0.788346428f, 0.615231591f, + -0.792106577f, 0.610382806f, + -0.795836905f, 0.605511041f, + -0.799537269f, 0.600616479f, + -0.803207531f, 0.595699304f, + -0.806847554f, 0.590759702f, + -0.810457198f, 0.585797857f, + -0.814036330f, 0.580813958f, + -0.817584813f, 0.575808191f, + -0.821102515f, 0.570780746f, + -0.824589303f, 0.565731811f, + -0.828045045f, 0.560661576f, + -0.831469612f, 0.555570233f, + -0.834862875f, 0.550457973f, + -0.838224706f, 0.545324988f, + -0.841554977f, 0.540171473f, + -0.844853565f, 0.534997620f, + -0.848120345f, 0.529803625f, + -0.851355193f, 0.524589683f, + -0.854557988f, 0.519355990f, + -0.857728610f, 0.514102744f, + -0.860866939f, 0.508830143f, + -0.863972856f, 0.503538384f, + -0.867046246f, 0.498227667f, + -0.870086991f, 0.492898192f, + -0.873094978f, 0.487550160f, + -0.876070094f, 0.482183772f, + -0.879012226f, 0.476799230f, + -0.881921264f, 0.471396737f, + -0.884797098f, 0.465976496f, + -0.887639620f, 0.460538711f, + -0.890448723f, 0.455083587f, + -0.893224301f, 0.449611330f, + -0.895966250f, 0.444122145f, + -0.898674466f, 0.438616239f, + -0.901348847f, 0.433093819f, + -0.903989293f, 0.427555093f, + -0.906595705f, 0.422000271f, + -0.909167983f, 0.416429560f, + -0.911706032f, 0.410843171f, + -0.914209756f, 0.405241314f, + -0.916679060f, 0.399624200f, + -0.919113852f, 0.393992040f, + -0.921514039f, 0.388345047f, + -0.923879533f, 0.382683432f, + -0.926210242f, 0.377007410f, + -0.928506080f, 0.371317194f, + -0.930766961f, 0.365612998f, + -0.932992799f, 0.359895037f, + -0.935183510f, 0.354163525f, + -0.937339012f, 0.348418680f, + -0.939459224f, 0.342660717f, + -0.941544065f, 0.336889853f, + -0.943593458f, 0.331106306f, + -0.945607325f, 0.325310292f, + -0.947585591f, 0.319502031f, + -0.949528181f, 0.313681740f, + -0.951435021f, 0.307849640f, + -0.953306040f, 0.302005949f, + -0.955141168f, 0.296150888f, + -0.956940336f, 0.290284677f, + -0.958703475f, 0.284407537f, + -0.960430519f, 0.278519689f, + -0.962121404f, 0.272621355f, + -0.963776066f, 0.266712757f, + -0.965394442f, 0.260794118f, + -0.966976471f, 0.254865660f, + -0.968522094f, 0.248927606f, + -0.970031253f, 0.242980180f, + -0.971503891f, 0.237023606f, + -0.972939952f, 0.231058108f, + -0.974339383f, 0.225083911f, + -0.975702130f, 0.219101240f, + -0.977028143f, 0.213110320f, + -0.978317371f, 0.207111376f, + -0.979569766f, 0.201104635f, + -0.980785280f, 0.195090322f, + -0.981963869f, 0.189068664f, + -0.983105487f, 0.183039888f, + -0.984210092f, 0.177004220f, + -0.985277642f, 0.170961889f, + -0.986308097f, 0.164913120f, + -0.987301418f, 0.158858143f, + -0.988257568f, 0.152797185f, + -0.989176510f, 0.146730474f, + -0.990058210f, 0.140658239f, + -0.990902635f, 0.134580709f, + -0.991709754f, 0.128498111f, + -0.992479535f, 0.122410675f, + -0.993211949f, 0.116318631f, + -0.993906970f, 0.110222207f, + -0.994564571f, 0.104121634f, + -0.995184727f, 0.098017140f, + -0.995767414f, 0.091908956f, + -0.996312612f, 0.085797312f, + -0.996820299f, 0.079682438f, + -0.997290457f, 0.073564564f, + -0.997723067f, 0.067443920f, + -0.998118113f, 0.061320736f, + -0.998475581f, 0.055195244f, + -0.998795456f, 0.049067674f, + -0.999077728f, 0.042938257f, + -0.999322385f, 0.036807223f, + -0.999529418f, 0.030674803f, + -0.999698819f, 0.024541229f, + -0.999830582f, 0.018406730f, + -0.999924702f, 0.012271538f, + -0.999981175f, 0.006135885f, + -1.000000000f, 0.000000000f, + -0.999981175f, -0.006135885f, + -0.999924702f, -0.012271538f, + -0.999830582f, -0.018406730f, + -0.999698819f, -0.024541229f, + -0.999529418f, -0.030674803f, + -0.999322385f, -0.036807223f, + -0.999077728f, -0.042938257f, + -0.998795456f, -0.049067674f, + -0.998475581f, -0.055195244f, + -0.998118113f, -0.061320736f, + -0.997723067f, -0.067443920f, + -0.997290457f, -0.073564564f, + -0.996820299f, -0.079682438f, + -0.996312612f, -0.085797312f, + -0.995767414f, -0.091908956f, + -0.995184727f, -0.098017140f, + -0.994564571f, -0.104121634f, + -0.993906970f, -0.110222207f, + -0.993211949f, -0.116318631f, + -0.992479535f, -0.122410675f, + -0.991709754f, -0.128498111f, + -0.990902635f, -0.134580709f, + -0.990058210f, -0.140658239f, + -0.989176510f, -0.146730474f, + -0.988257568f, -0.152797185f, + -0.987301418f, -0.158858143f, + -0.986308097f, -0.164913120f, + -0.985277642f, -0.170961889f, + -0.984210092f, -0.177004220f, + -0.983105487f, -0.183039888f, + -0.981963869f, -0.189068664f, + -0.980785280f, -0.195090322f, + -0.979569766f, -0.201104635f, + -0.978317371f, -0.207111376f, + -0.977028143f, -0.213110320f, + -0.975702130f, -0.219101240f, + -0.974339383f, -0.225083911f, + -0.972939952f, -0.231058108f, + -0.971503891f, -0.237023606f, + -0.970031253f, -0.242980180f, + -0.968522094f, -0.248927606f, + -0.966976471f, -0.254865660f, + -0.965394442f, -0.260794118f, + -0.963776066f, -0.266712757f, + -0.962121404f, -0.272621355f, + -0.960430519f, -0.278519689f, + -0.958703475f, -0.284407537f, + -0.956940336f, -0.290284677f, + -0.955141168f, -0.296150888f, + -0.953306040f, -0.302005949f, + -0.951435021f, -0.307849640f, + -0.949528181f, -0.313681740f, + -0.947585591f, -0.319502031f, + -0.945607325f, -0.325310292f, + -0.943593458f, -0.331106306f, + -0.941544065f, -0.336889853f, + -0.939459224f, -0.342660717f, + -0.937339012f, -0.348418680f, + -0.935183510f, -0.354163525f, + -0.932992799f, -0.359895037f, + -0.930766961f, -0.365612998f, + -0.928506080f, -0.371317194f, + -0.926210242f, -0.377007410f, + -0.923879533f, -0.382683432f, + -0.921514039f, -0.388345047f, + -0.919113852f, -0.393992040f, + -0.916679060f, -0.399624200f, + -0.914209756f, -0.405241314f, + -0.911706032f, -0.410843171f, + -0.909167983f, -0.416429560f, + -0.906595705f, -0.422000271f, + -0.903989293f, -0.427555093f, + -0.901348847f, -0.433093819f, + -0.898674466f, -0.438616239f, + -0.895966250f, -0.444122145f, + -0.893224301f, -0.449611330f, + -0.890448723f, -0.455083587f, + -0.887639620f, -0.460538711f, + -0.884797098f, -0.465976496f, + -0.881921264f, -0.471396737f, + -0.879012226f, -0.476799230f, + -0.876070094f, -0.482183772f, + -0.873094978f, -0.487550160f, + -0.870086991f, -0.492898192f, + -0.867046246f, -0.498227667f, + -0.863972856f, -0.503538384f, + -0.860866939f, -0.508830143f, + -0.857728610f, -0.514102744f, + -0.854557988f, -0.519355990f, + -0.851355193f, -0.524589683f, + -0.848120345f, -0.529803625f, + -0.844853565f, -0.534997620f, + -0.841554977f, -0.540171473f, + -0.838224706f, -0.545324988f, + -0.834862875f, -0.550457973f, + -0.831469612f, -0.555570233f, + -0.828045045f, -0.560661576f, + -0.824589303f, -0.565731811f, + -0.821102515f, -0.570780746f, + -0.817584813f, -0.575808191f, + -0.814036330f, -0.580813958f, + -0.810457198f, -0.585797857f, + -0.806847554f, -0.590759702f, + -0.803207531f, -0.595699304f, + -0.799537269f, -0.600616479f, + -0.795836905f, -0.605511041f, + -0.792106577f, -0.610382806f, + -0.788346428f, -0.615231591f, + -0.784556597f, -0.620057212f, + -0.780737229f, -0.624859488f, + -0.776888466f, -0.629638239f, + -0.773010453f, -0.634393284f, + -0.769103338f, -0.639124445f, + -0.765167266f, -0.643831543f, + -0.761202385f, -0.648514401f, + -0.757208847f, -0.653172843f, + -0.753186799f, -0.657806693f, + -0.749136395f, -0.662415778f, + -0.745057785f, -0.666999922f, + -0.740951125f, -0.671558955f, + -0.736816569f, -0.676092704f, + -0.732654272f, -0.680600998f, + -0.728464390f, -0.685083668f, + -0.724247083f, -0.689540545f, + -0.720002508f, -0.693971461f, + -0.715730825f, -0.698376249f, + -0.711432196f, -0.702754744f, + -0.707106781f, -0.707106781f, + -0.702754744f, -0.711432196f, + -0.698376249f, -0.715730825f, + -0.693971461f, -0.720002508f, + -0.689540545f, -0.724247083f, + -0.685083668f, -0.728464390f, + -0.680600998f, -0.732654272f, + -0.676092704f, -0.736816569f, + -0.671558955f, -0.740951125f, + -0.666999922f, -0.745057785f, + -0.662415778f, -0.749136395f, + -0.657806693f, -0.753186799f, + -0.653172843f, -0.757208847f, + -0.648514401f, -0.761202385f, + -0.643831543f, -0.765167266f, + -0.639124445f, -0.769103338f, + -0.634393284f, -0.773010453f, + -0.629638239f, -0.776888466f, + -0.624859488f, -0.780737229f, + -0.620057212f, -0.784556597f, + -0.615231591f, -0.788346428f, + -0.610382806f, -0.792106577f, + -0.605511041f, -0.795836905f, + -0.600616479f, -0.799537269f, + -0.595699304f, -0.803207531f, + -0.590759702f, -0.806847554f, + -0.585797857f, -0.810457198f, + -0.580813958f, -0.814036330f, + -0.575808191f, -0.817584813f, + -0.570780746f, -0.821102515f, + -0.565731811f, -0.824589303f, + -0.560661576f, -0.828045045f, + -0.555570233f, -0.831469612f, + -0.550457973f, -0.834862875f, + -0.545324988f, -0.838224706f, + -0.540171473f, -0.841554977f, + -0.534997620f, -0.844853565f, + -0.529803625f, -0.848120345f, + -0.524589683f, -0.851355193f, + -0.519355990f, -0.854557988f, + -0.514102744f, -0.857728610f, + -0.508830143f, -0.860866939f, + -0.503538384f, -0.863972856f, + -0.498227667f, -0.867046246f, + -0.492898192f, -0.870086991f, + -0.487550160f, -0.873094978f, + -0.482183772f, -0.876070094f, + -0.476799230f, -0.879012226f, + -0.471396737f, -0.881921264f, + -0.465976496f, -0.884797098f, + -0.460538711f, -0.887639620f, + -0.455083587f, -0.890448723f, + -0.449611330f, -0.893224301f, + -0.444122145f, -0.895966250f, + -0.438616239f, -0.898674466f, + -0.433093819f, -0.901348847f, + -0.427555093f, -0.903989293f, + -0.422000271f, -0.906595705f, + -0.416429560f, -0.909167983f, + -0.410843171f, -0.911706032f, + -0.405241314f, -0.914209756f, + -0.399624200f, -0.916679060f, + -0.393992040f, -0.919113852f, + -0.388345047f, -0.921514039f, + -0.382683432f, -0.923879533f, + -0.377007410f, -0.926210242f, + -0.371317194f, -0.928506080f, + -0.365612998f, -0.930766961f, + -0.359895037f, -0.932992799f, + -0.354163525f, -0.935183510f, + -0.348418680f, -0.937339012f, + -0.342660717f, -0.939459224f, + -0.336889853f, -0.941544065f, + -0.331106306f, -0.943593458f, + -0.325310292f, -0.945607325f, + -0.319502031f, -0.947585591f, + -0.313681740f, -0.949528181f, + -0.307849640f, -0.951435021f, + -0.302005949f, -0.953306040f, + -0.296150888f, -0.955141168f, + -0.290284677f, -0.956940336f, + -0.284407537f, -0.958703475f, + -0.278519689f, -0.960430519f, + -0.272621355f, -0.962121404f, + -0.266712757f, -0.963776066f, + -0.260794118f, -0.965394442f, + -0.254865660f, -0.966976471f, + -0.248927606f, -0.968522094f, + -0.242980180f, -0.970031253f, + -0.237023606f, -0.971503891f, + -0.231058108f, -0.972939952f, + -0.225083911f, -0.974339383f, + -0.219101240f, -0.975702130f, + -0.213110320f, -0.977028143f, + -0.207111376f, -0.978317371f, + -0.201104635f, -0.979569766f, + -0.195090322f, -0.980785280f, + -0.189068664f, -0.981963869f, + -0.183039888f, -0.983105487f, + -0.177004220f, -0.984210092f, + -0.170961889f, -0.985277642f, + -0.164913120f, -0.986308097f, + -0.158858143f, -0.987301418f, + -0.152797185f, -0.988257568f, + -0.146730474f, -0.989176510f, + -0.140658239f, -0.990058210f, + -0.134580709f, -0.990902635f, + -0.128498111f, -0.991709754f, + -0.122410675f, -0.992479535f, + -0.116318631f, -0.993211949f, + -0.110222207f, -0.993906970f, + -0.104121634f, -0.994564571f, + -0.098017140f, -0.995184727f, + -0.091908956f, -0.995767414f, + -0.085797312f, -0.996312612f, + -0.079682438f, -0.996820299f, + -0.073564564f, -0.997290457f, + -0.067443920f, -0.997723067f, + -0.061320736f, -0.998118113f, + -0.055195244f, -0.998475581f, + -0.049067674f, -0.998795456f, + -0.042938257f, -0.999077728f, + -0.036807223f, -0.999322385f, + -0.030674803f, -0.999529418f, + -0.024541229f, -0.999698819f, + -0.018406730f, -0.999830582f, + -0.012271538f, -0.999924702f, + -0.006135885f, -0.999981175f, + -0.000000000f, -1.000000000f, + 0.006135885f, -0.999981175f, + 0.012271538f, -0.999924702f, + 0.018406730f, -0.999830582f, + 0.024541229f, -0.999698819f, + 0.030674803f, -0.999529418f, + 0.036807223f, -0.999322385f, + 0.042938257f, -0.999077728f, + 0.049067674f, -0.998795456f, + 0.055195244f, -0.998475581f, + 0.061320736f, -0.998118113f, + 0.067443920f, -0.997723067f, + 0.073564564f, -0.997290457f, + 0.079682438f, -0.996820299f, + 0.085797312f, -0.996312612f, + 0.091908956f, -0.995767414f, + 0.098017140f, -0.995184727f, + 0.104121634f, -0.994564571f, + 0.110222207f, -0.993906970f, + 0.116318631f, -0.993211949f, + 0.122410675f, -0.992479535f, + 0.128498111f, -0.991709754f, + 0.134580709f, -0.990902635f, + 0.140658239f, -0.990058210f, + 0.146730474f, -0.989176510f, + 0.152797185f, -0.988257568f, + 0.158858143f, -0.987301418f, + 0.164913120f, -0.986308097f, + 0.170961889f, -0.985277642f, + 0.177004220f, -0.984210092f, + 0.183039888f, -0.983105487f, + 0.189068664f, -0.981963869f, + 0.195090322f, -0.980785280f, + 0.201104635f, -0.979569766f, + 0.207111376f, -0.978317371f, + 0.213110320f, -0.977028143f, + 0.219101240f, -0.975702130f, + 0.225083911f, -0.974339383f, + 0.231058108f, -0.972939952f, + 0.237023606f, -0.971503891f, + 0.242980180f, -0.970031253f, + 0.248927606f, -0.968522094f, + 0.254865660f, -0.966976471f, + 0.260794118f, -0.965394442f, + 0.266712757f, -0.963776066f, + 0.272621355f, -0.962121404f, + 0.278519689f, -0.960430519f, + 0.284407537f, -0.958703475f, + 0.290284677f, -0.956940336f, + 0.296150888f, -0.955141168f, + 0.302005949f, -0.953306040f, + 0.307849640f, -0.951435021f, + 0.313681740f, -0.949528181f, + 0.319502031f, -0.947585591f, + 0.325310292f, -0.945607325f, + 0.331106306f, -0.943593458f, + 0.336889853f, -0.941544065f, + 0.342660717f, -0.939459224f, + 0.348418680f, -0.937339012f, + 0.354163525f, -0.935183510f, + 0.359895037f, -0.932992799f, + 0.365612998f, -0.930766961f, + 0.371317194f, -0.928506080f, + 0.377007410f, -0.926210242f, + 0.382683432f, -0.923879533f, + 0.388345047f, -0.921514039f, + 0.393992040f, -0.919113852f, + 0.399624200f, -0.916679060f, + 0.405241314f, -0.914209756f, + 0.410843171f, -0.911706032f, + 0.416429560f, -0.909167983f, + 0.422000271f, -0.906595705f, + 0.427555093f, -0.903989293f, + 0.433093819f, -0.901348847f, + 0.438616239f, -0.898674466f, + 0.444122145f, -0.895966250f, + 0.449611330f, -0.893224301f, + 0.455083587f, -0.890448723f, + 0.460538711f, -0.887639620f, + 0.465976496f, -0.884797098f, + 0.471396737f, -0.881921264f, + 0.476799230f, -0.879012226f, + 0.482183772f, -0.876070094f, + 0.487550160f, -0.873094978f, + 0.492898192f, -0.870086991f, + 0.498227667f, -0.867046246f, + 0.503538384f, -0.863972856f, + 0.508830143f, -0.860866939f, + 0.514102744f, -0.857728610f, + 0.519355990f, -0.854557988f, + 0.524589683f, -0.851355193f, + 0.529803625f, -0.848120345f, + 0.534997620f, -0.844853565f, + 0.540171473f, -0.841554977f, + 0.545324988f, -0.838224706f, + 0.550457973f, -0.834862875f, + 0.555570233f, -0.831469612f, + 0.560661576f, -0.828045045f, + 0.565731811f, -0.824589303f, + 0.570780746f, -0.821102515f, + 0.575808191f, -0.817584813f, + 0.580813958f, -0.814036330f, + 0.585797857f, -0.810457198f, + 0.590759702f, -0.806847554f, + 0.595699304f, -0.803207531f, + 0.600616479f, -0.799537269f, + 0.605511041f, -0.795836905f, + 0.610382806f, -0.792106577f, + 0.615231591f, -0.788346428f, + 0.620057212f, -0.784556597f, + 0.624859488f, -0.780737229f, + 0.629638239f, -0.776888466f, + 0.634393284f, -0.773010453f, + 0.639124445f, -0.769103338f, + 0.643831543f, -0.765167266f, + 0.648514401f, -0.761202385f, + 0.653172843f, -0.757208847f, + 0.657806693f, -0.753186799f, + 0.662415778f, -0.749136395f, + 0.666999922f, -0.745057785f, + 0.671558955f, -0.740951125f, + 0.676092704f, -0.736816569f, + 0.680600998f, -0.732654272f, + 0.685083668f, -0.728464390f, + 0.689540545f, -0.724247083f, + 0.693971461f, -0.720002508f, + 0.698376249f, -0.715730825f, + 0.702754744f, -0.711432196f, + 0.707106781f, -0.707106781f, + 0.711432196f, -0.702754744f, + 0.715730825f, -0.698376249f, + 0.720002508f, -0.693971461f, + 0.724247083f, -0.689540545f, + 0.728464390f, -0.685083668f, + 0.732654272f, -0.680600998f, + 0.736816569f, -0.676092704f, + 0.740951125f, -0.671558955f, + 0.745057785f, -0.666999922f, + 0.749136395f, -0.662415778f, + 0.753186799f, -0.657806693f, + 0.757208847f, -0.653172843f, + 0.761202385f, -0.648514401f, + 0.765167266f, -0.643831543f, + 0.769103338f, -0.639124445f, + 0.773010453f, -0.634393284f, + 0.776888466f, -0.629638239f, + 0.780737229f, -0.624859488f, + 0.784556597f, -0.620057212f, + 0.788346428f, -0.615231591f, + 0.792106577f, -0.610382806f, + 0.795836905f, -0.605511041f, + 0.799537269f, -0.600616479f, + 0.803207531f, -0.595699304f, + 0.806847554f, -0.590759702f, + 0.810457198f, -0.585797857f, + 0.814036330f, -0.580813958f, + 0.817584813f, -0.575808191f, + 0.821102515f, -0.570780746f, + 0.824589303f, -0.565731811f, + 0.828045045f, -0.560661576f, + 0.831469612f, -0.555570233f, + 0.834862875f, -0.550457973f, + 0.838224706f, -0.545324988f, + 0.841554977f, -0.540171473f, + 0.844853565f, -0.534997620f, + 0.848120345f, -0.529803625f, + 0.851355193f, -0.524589683f, + 0.854557988f, -0.519355990f, + 0.857728610f, -0.514102744f, + 0.860866939f, -0.508830143f, + 0.863972856f, -0.503538384f, + 0.867046246f, -0.498227667f, + 0.870086991f, -0.492898192f, + 0.873094978f, -0.487550160f, + 0.876070094f, -0.482183772f, + 0.879012226f, -0.476799230f, + 0.881921264f, -0.471396737f, + 0.884797098f, -0.465976496f, + 0.887639620f, -0.460538711f, + 0.890448723f, -0.455083587f, + 0.893224301f, -0.449611330f, + 0.895966250f, -0.444122145f, + 0.898674466f, -0.438616239f, + 0.901348847f, -0.433093819f, + 0.903989293f, -0.427555093f, + 0.906595705f, -0.422000271f, + 0.909167983f, -0.416429560f, + 0.911706032f, -0.410843171f, + 0.914209756f, -0.405241314f, + 0.916679060f, -0.399624200f, + 0.919113852f, -0.393992040f, + 0.921514039f, -0.388345047f, + 0.923879533f, -0.382683432f, + 0.926210242f, -0.377007410f, + 0.928506080f, -0.371317194f, + 0.930766961f, -0.365612998f, + 0.932992799f, -0.359895037f, + 0.935183510f, -0.354163525f, + 0.937339012f, -0.348418680f, + 0.939459224f, -0.342660717f, + 0.941544065f, -0.336889853f, + 0.943593458f, -0.331106306f, + 0.945607325f, -0.325310292f, + 0.947585591f, -0.319502031f, + 0.949528181f, -0.313681740f, + 0.951435021f, -0.307849640f, + 0.953306040f, -0.302005949f, + 0.955141168f, -0.296150888f, + 0.956940336f, -0.290284677f, + 0.958703475f, -0.284407537f, + 0.960430519f, -0.278519689f, + 0.962121404f, -0.272621355f, + 0.963776066f, -0.266712757f, + 0.965394442f, -0.260794118f, + 0.966976471f, -0.254865660f, + 0.968522094f, -0.248927606f, + 0.970031253f, -0.242980180f, + 0.971503891f, -0.237023606f, + 0.972939952f, -0.231058108f, + 0.974339383f, -0.225083911f, + 0.975702130f, -0.219101240f, + 0.977028143f, -0.213110320f, + 0.978317371f, -0.207111376f, + 0.979569766f, -0.201104635f, + 0.980785280f, -0.195090322f, + 0.981963869f, -0.189068664f, + 0.983105487f, -0.183039888f, + 0.984210092f, -0.177004220f, + 0.985277642f, -0.170961889f, + 0.986308097f, -0.164913120f, + 0.987301418f, -0.158858143f, + 0.988257568f, -0.152797185f, + 0.989176510f, -0.146730474f, + 0.990058210f, -0.140658239f, + 0.990902635f, -0.134580709f, + 0.991709754f, -0.128498111f, + 0.992479535f, -0.122410675f, + 0.993211949f, -0.116318631f, + 0.993906970f, -0.110222207f, + 0.994564571f, -0.104121634f, + 0.995184727f, -0.098017140f, + 0.995767414f, -0.091908956f, + 0.996312612f, -0.085797312f, + 0.996820299f, -0.079682438f, + 0.997290457f, -0.073564564f, + 0.997723067f, -0.067443920f, + 0.998118113f, -0.061320736f, + 0.998475581f, -0.055195244f, + 0.998795456f, -0.049067674f, + 0.999077728f, -0.042938257f, + 0.999322385f, -0.036807223f, + 0.999529418f, -0.030674803f, + 0.999698819f, -0.024541229f, + 0.999830582f, -0.018406730f, + 0.999924702f, -0.012271538f, + 0.999981175f, -0.006135885f +}; + +/** +* \par +* Example code for Floating-point Twiddle factors Generation: +* \par +*
for(i = 0; i< N/; i++)
+* {
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 2048 and PI = 3.14159265358979 +* \par +* Cos and Sin values are in interleaved fashion +* +*/ +const float32_t twiddleCoef_2048[4096] = { + 1.000000000f, 0.000000000f, + 0.999995294f, 0.003067957f, + 0.999981175f, 0.006135885f, + 0.999957645f, 0.009203755f, + 0.999924702f, 0.012271538f, + 0.999882347f, 0.015339206f, + 0.999830582f, 0.018406730f, + 0.999769405f, 0.021474080f, + 0.999698819f, 0.024541229f, + 0.999618822f, 0.027608146f, + 0.999529418f, 0.030674803f, + 0.999430605f, 0.033741172f, + 0.999322385f, 0.036807223f, + 0.999204759f, 0.039872928f, + 0.999077728f, 0.042938257f, + 0.998941293f, 0.046003182f, + 0.998795456f, 0.049067674f, + 0.998640218f, 0.052131705f, + 0.998475581f, 0.055195244f, + 0.998301545f, 0.058258265f, + 0.998118113f, 0.061320736f, + 0.997925286f, 0.064382631f, + 0.997723067f, 0.067443920f, + 0.997511456f, 0.070504573f, + 0.997290457f, 0.073564564f, + 0.997060070f, 0.076623861f, + 0.996820299f, 0.079682438f, + 0.996571146f, 0.082740265f, + 0.996312612f, 0.085797312f, + 0.996044701f, 0.088853553f, + 0.995767414f, 0.091908956f, + 0.995480755f, 0.094963495f, + 0.995184727f, 0.098017140f, + 0.994879331f, 0.101069863f, + 0.994564571f, 0.104121634f, + 0.994240449f, 0.107172425f, + 0.993906970f, 0.110222207f, + 0.993564136f, 0.113270952f, + 0.993211949f, 0.116318631f, + 0.992850414f, 0.119365215f, + 0.992479535f, 0.122410675f, + 0.992099313f, 0.125454983f, + 0.991709754f, 0.128498111f, + 0.991310860f, 0.131540029f, + 0.990902635f, 0.134580709f, + 0.990485084f, 0.137620122f, + 0.990058210f, 0.140658239f, + 0.989622017f, 0.143695033f, + 0.989176510f, 0.146730474f, + 0.988721692f, 0.149764535f, + 0.988257568f, 0.152797185f, + 0.987784142f, 0.155828398f, + 0.987301418f, 0.158858143f, + 0.986809402f, 0.161886394f, + 0.986308097f, 0.164913120f, + 0.985797509f, 0.167938295f, + 0.985277642f, 0.170961889f, + 0.984748502f, 0.173983873f, + 0.984210092f, 0.177004220f, + 0.983662419f, 0.180022901f, + 0.983105487f, 0.183039888f, + 0.982539302f, 0.186055152f, + 0.981963869f, 0.189068664f, + 0.981379193f, 0.192080397f, + 0.980785280f, 0.195090322f, + 0.980182136f, 0.198098411f, + 0.979569766f, 0.201104635f, + 0.978948175f, 0.204108966f, + 0.978317371f, 0.207111376f, + 0.977677358f, 0.210111837f, + 0.977028143f, 0.213110320f, + 0.976369731f, 0.216106797f, + 0.975702130f, 0.219101240f, + 0.975025345f, 0.222093621f, + 0.974339383f, 0.225083911f, + 0.973644250f, 0.228072083f, + 0.972939952f, 0.231058108f, + 0.972226497f, 0.234041959f, + 0.971503891f, 0.237023606f, + 0.970772141f, 0.240003022f, + 0.970031253f, 0.242980180f, + 0.969281235f, 0.245955050f, + 0.968522094f, 0.248927606f, + 0.967753837f, 0.251897818f, + 0.966976471f, 0.254865660f, + 0.966190003f, 0.257831102f, + 0.965394442f, 0.260794118f, + 0.964589793f, 0.263754679f, + 0.963776066f, 0.266712757f, + 0.962953267f, 0.269668326f, + 0.962121404f, 0.272621355f, + 0.961280486f, 0.275571819f, + 0.960430519f, 0.278519689f, + 0.959571513f, 0.281464938f, + 0.958703475f, 0.284407537f, + 0.957826413f, 0.287347460f, + 0.956940336f, 0.290284677f, + 0.956045251f, 0.293219163f, + 0.955141168f, 0.296150888f, + 0.954228095f, 0.299079826f, + 0.953306040f, 0.302005949f, + 0.952375013f, 0.304929230f, + 0.951435021f, 0.307849640f, + 0.950486074f, 0.310767153f, + 0.949528181f, 0.313681740f, + 0.948561350f, 0.316593376f, + 0.947585591f, 0.319502031f, + 0.946600913f, 0.322407679f, + 0.945607325f, 0.325310292f, + 0.944604837f, 0.328209844f, + 0.943593458f, 0.331106306f, + 0.942573198f, 0.333999651f, + 0.941544065f, 0.336889853f, + 0.940506071f, 0.339776884f, + 0.939459224f, 0.342660717f, + 0.938403534f, 0.345541325f, + 0.937339012f, 0.348418680f, + 0.936265667f, 0.351292756f, + 0.935183510f, 0.354163525f, + 0.934092550f, 0.357030961f, + 0.932992799f, 0.359895037f, + 0.931884266f, 0.362755724f, + 0.930766961f, 0.365612998f, + 0.929640896f, 0.368466830f, + 0.928506080f, 0.371317194f, + 0.927362526f, 0.374164063f, + 0.926210242f, 0.377007410f, + 0.925049241f, 0.379847209f, + 0.923879533f, 0.382683432f, + 0.922701128f, 0.385516054f, + 0.921514039f, 0.388345047f, + 0.920318277f, 0.391170384f, + 0.919113852f, 0.393992040f, + 0.917900776f, 0.396809987f, + 0.916679060f, 0.399624200f, + 0.915448716f, 0.402434651f, + 0.914209756f, 0.405241314f, + 0.912962190f, 0.408044163f, + 0.911706032f, 0.410843171f, + 0.910441292f, 0.413638312f, + 0.909167983f, 0.416429560f, + 0.907886116f, 0.419216888f, + 0.906595705f, 0.422000271f, + 0.905296759f, 0.424779681f, + 0.903989293f, 0.427555093f, + 0.902673318f, 0.430326481f, + 0.901348847f, 0.433093819f, + 0.900015892f, 0.435857080f, + 0.898674466f, 0.438616239f, + 0.897324581f, 0.441371269f, + 0.895966250f, 0.444122145f, + 0.894599486f, 0.446868840f, + 0.893224301f, 0.449611330f, + 0.891840709f, 0.452349587f, + 0.890448723f, 0.455083587f, + 0.889048356f, 0.457813304f, + 0.887639620f, 0.460538711f, + 0.886222530f, 0.463259784f, + 0.884797098f, 0.465976496f, + 0.883363339f, 0.468688822f, + 0.881921264f, 0.471396737f, + 0.880470889f, 0.474100215f, + 0.879012226f, 0.476799230f, + 0.877545290f, 0.479493758f, + 0.876070094f, 0.482183772f, + 0.874586652f, 0.484869248f, + 0.873094978f, 0.487550160f, + 0.871595087f, 0.490226483f, + 0.870086991f, 0.492898192f, + 0.868570706f, 0.495565262f, + 0.867046246f, 0.498227667f, + 0.865513624f, 0.500885383f, + 0.863972856f, 0.503538384f, + 0.862423956f, 0.506186645f, + 0.860866939f, 0.508830143f, + 0.859301818f, 0.511468850f, + 0.857728610f, 0.514102744f, + 0.856147328f, 0.516731799f, + 0.854557988f, 0.519355990f, + 0.852960605f, 0.521975293f, + 0.851355193f, 0.524589683f, + 0.849741768f, 0.527199135f, + 0.848120345f, 0.529803625f, + 0.846490939f, 0.532403128f, + 0.844853565f, 0.534997620f, + 0.843208240f, 0.537587076f, + 0.841554977f, 0.540171473f, + 0.839893794f, 0.542750785f, + 0.838224706f, 0.545324988f, + 0.836547727f, 0.547894059f, + 0.834862875f, 0.550457973f, + 0.833170165f, 0.553016706f, + 0.831469612f, 0.555570233f, + 0.829761234f, 0.558118531f, + 0.828045045f, 0.560661576f, + 0.826321063f, 0.563199344f, + 0.824589303f, 0.565731811f, + 0.822849781f, 0.568258953f, + 0.821102515f, 0.570780746f, + 0.819347520f, 0.573297167f, + 0.817584813f, 0.575808191f, + 0.815814411f, 0.578313796f, + 0.814036330f, 0.580813958f, + 0.812250587f, 0.583308653f, + 0.810457198f, 0.585797857f, + 0.808656182f, 0.588281548f, + 0.806847554f, 0.590759702f, + 0.805031331f, 0.593232295f, + 0.803207531f, 0.595699304f, + 0.801376172f, 0.598160707f, + 0.799537269f, 0.600616479f, + 0.797690841f, 0.603066599f, + 0.795836905f, 0.605511041f, + 0.793975478f, 0.607949785f, + 0.792106577f, 0.610382806f, + 0.790230221f, 0.612810082f, + 0.788346428f, 0.615231591f, + 0.786455214f, 0.617647308f, + 0.784556597f, 0.620057212f, + 0.782650596f, 0.622461279f, + 0.780737229f, 0.624859488f, + 0.778816512f, 0.627251815f, + 0.776888466f, 0.629638239f, + 0.774953107f, 0.632018736f, + 0.773010453f, 0.634393284f, + 0.771060524f, 0.636761861f, + 0.769103338f, 0.639124445f, + 0.767138912f, 0.641481013f, + 0.765167266f, 0.643831543f, + 0.763188417f, 0.646176013f, + 0.761202385f, 0.648514401f, + 0.759209189f, 0.650846685f, + 0.757208847f, 0.653172843f, + 0.755201377f, 0.655492853f, + 0.753186799f, 0.657806693f, + 0.751165132f, 0.660114342f, + 0.749136395f, 0.662415778f, + 0.747100606f, 0.664710978f, + 0.745057785f, 0.666999922f, + 0.743007952f, 0.669282588f, + 0.740951125f, 0.671558955f, + 0.738887324f, 0.673829000f, + 0.736816569f, 0.676092704f, + 0.734738878f, 0.678350043f, + 0.732654272f, 0.680600998f, + 0.730562769f, 0.682845546f, + 0.728464390f, 0.685083668f, + 0.726359155f, 0.687315341f, + 0.724247083f, 0.689540545f, + 0.722128194f, 0.691759258f, + 0.720002508f, 0.693971461f, + 0.717870045f, 0.696177131f, + 0.715730825f, 0.698376249f, + 0.713584869f, 0.700568794f, + 0.711432196f, 0.702754744f, + 0.709272826f, 0.704934080f, + 0.707106781f, 0.707106781f, + 0.704934080f, 0.709272826f, + 0.702754744f, 0.711432196f, + 0.700568794f, 0.713584869f, + 0.698376249f, 0.715730825f, + 0.696177131f, 0.717870045f, + 0.693971461f, 0.720002508f, + 0.691759258f, 0.722128194f, + 0.689540545f, 0.724247083f, + 0.687315341f, 0.726359155f, + 0.685083668f, 0.728464390f, + 0.682845546f, 0.730562769f, + 0.680600998f, 0.732654272f, + 0.678350043f, 0.734738878f, + 0.676092704f, 0.736816569f, + 0.673829000f, 0.738887324f, + 0.671558955f, 0.740951125f, + 0.669282588f, 0.743007952f, + 0.666999922f, 0.745057785f, + 0.664710978f, 0.747100606f, + 0.662415778f, 0.749136395f, + 0.660114342f, 0.751165132f, + 0.657806693f, 0.753186799f, + 0.655492853f, 0.755201377f, + 0.653172843f, 0.757208847f, + 0.650846685f, 0.759209189f, + 0.648514401f, 0.761202385f, + 0.646176013f, 0.763188417f, + 0.643831543f, 0.765167266f, + 0.641481013f, 0.767138912f, + 0.639124445f, 0.769103338f, + 0.636761861f, 0.771060524f, + 0.634393284f, 0.773010453f, + 0.632018736f, 0.774953107f, + 0.629638239f, 0.776888466f, + 0.627251815f, 0.778816512f, + 0.624859488f, 0.780737229f, + 0.622461279f, 0.782650596f, + 0.620057212f, 0.784556597f, + 0.617647308f, 0.786455214f, + 0.615231591f, 0.788346428f, + 0.612810082f, 0.790230221f, + 0.610382806f, 0.792106577f, + 0.607949785f, 0.793975478f, + 0.605511041f, 0.795836905f, + 0.603066599f, 0.797690841f, + 0.600616479f, 0.799537269f, + 0.598160707f, 0.801376172f, + 0.595699304f, 0.803207531f, + 0.593232295f, 0.805031331f, + 0.590759702f, 0.806847554f, + 0.588281548f, 0.808656182f, + 0.585797857f, 0.810457198f, + 0.583308653f, 0.812250587f, + 0.580813958f, 0.814036330f, + 0.578313796f, 0.815814411f, + 0.575808191f, 0.817584813f, + 0.573297167f, 0.819347520f, + 0.570780746f, 0.821102515f, + 0.568258953f, 0.822849781f, + 0.565731811f, 0.824589303f, + 0.563199344f, 0.826321063f, + 0.560661576f, 0.828045045f, + 0.558118531f, 0.829761234f, + 0.555570233f, 0.831469612f, + 0.553016706f, 0.833170165f, + 0.550457973f, 0.834862875f, + 0.547894059f, 0.836547727f, + 0.545324988f, 0.838224706f, + 0.542750785f, 0.839893794f, + 0.540171473f, 0.841554977f, + 0.537587076f, 0.843208240f, + 0.534997620f, 0.844853565f, + 0.532403128f, 0.846490939f, + 0.529803625f, 0.848120345f, + 0.527199135f, 0.849741768f, + 0.524589683f, 0.851355193f, + 0.521975293f, 0.852960605f, + 0.519355990f, 0.854557988f, + 0.516731799f, 0.856147328f, + 0.514102744f, 0.857728610f, + 0.511468850f, 0.859301818f, + 0.508830143f, 0.860866939f, + 0.506186645f, 0.862423956f, + 0.503538384f, 0.863972856f, + 0.500885383f, 0.865513624f, + 0.498227667f, 0.867046246f, + 0.495565262f, 0.868570706f, + 0.492898192f, 0.870086991f, + 0.490226483f, 0.871595087f, + 0.487550160f, 0.873094978f, + 0.484869248f, 0.874586652f, + 0.482183772f, 0.876070094f, + 0.479493758f, 0.877545290f, + 0.476799230f, 0.879012226f, + 0.474100215f, 0.880470889f, + 0.471396737f, 0.881921264f, + 0.468688822f, 0.883363339f, + 0.465976496f, 0.884797098f, + 0.463259784f, 0.886222530f, + 0.460538711f, 0.887639620f, + 0.457813304f, 0.889048356f, + 0.455083587f, 0.890448723f, + 0.452349587f, 0.891840709f, + 0.449611330f, 0.893224301f, + 0.446868840f, 0.894599486f, + 0.444122145f, 0.895966250f, + 0.441371269f, 0.897324581f, + 0.438616239f, 0.898674466f, + 0.435857080f, 0.900015892f, + 0.433093819f, 0.901348847f, + 0.430326481f, 0.902673318f, + 0.427555093f, 0.903989293f, + 0.424779681f, 0.905296759f, + 0.422000271f, 0.906595705f, + 0.419216888f, 0.907886116f, + 0.416429560f, 0.909167983f, + 0.413638312f, 0.910441292f, + 0.410843171f, 0.911706032f, + 0.408044163f, 0.912962190f, + 0.405241314f, 0.914209756f, + 0.402434651f, 0.915448716f, + 0.399624200f, 0.916679060f, + 0.396809987f, 0.917900776f, + 0.393992040f, 0.919113852f, + 0.391170384f, 0.920318277f, + 0.388345047f, 0.921514039f, + 0.385516054f, 0.922701128f, + 0.382683432f, 0.923879533f, + 0.379847209f, 0.925049241f, + 0.377007410f, 0.926210242f, + 0.374164063f, 0.927362526f, + 0.371317194f, 0.928506080f, + 0.368466830f, 0.929640896f, + 0.365612998f, 0.930766961f, + 0.362755724f, 0.931884266f, + 0.359895037f, 0.932992799f, + 0.357030961f, 0.934092550f, + 0.354163525f, 0.935183510f, + 0.351292756f, 0.936265667f, + 0.348418680f, 0.937339012f, + 0.345541325f, 0.938403534f, + 0.342660717f, 0.939459224f, + 0.339776884f, 0.940506071f, + 0.336889853f, 0.941544065f, + 0.333999651f, 0.942573198f, + 0.331106306f, 0.943593458f, + 0.328209844f, 0.944604837f, + 0.325310292f, 0.945607325f, + 0.322407679f, 0.946600913f, + 0.319502031f, 0.947585591f, + 0.316593376f, 0.948561350f, + 0.313681740f, 0.949528181f, + 0.310767153f, 0.950486074f, + 0.307849640f, 0.951435021f, + 0.304929230f, 0.952375013f, + 0.302005949f, 0.953306040f, + 0.299079826f, 0.954228095f, + 0.296150888f, 0.955141168f, + 0.293219163f, 0.956045251f, + 0.290284677f, 0.956940336f, + 0.287347460f, 0.957826413f, + 0.284407537f, 0.958703475f, + 0.281464938f, 0.959571513f, + 0.278519689f, 0.960430519f, + 0.275571819f, 0.961280486f, + 0.272621355f, 0.962121404f, + 0.269668326f, 0.962953267f, + 0.266712757f, 0.963776066f, + 0.263754679f, 0.964589793f, + 0.260794118f, 0.965394442f, + 0.257831102f, 0.966190003f, + 0.254865660f, 0.966976471f, + 0.251897818f, 0.967753837f, + 0.248927606f, 0.968522094f, + 0.245955050f, 0.969281235f, + 0.242980180f, 0.970031253f, + 0.240003022f, 0.970772141f, + 0.237023606f, 0.971503891f, + 0.234041959f, 0.972226497f, + 0.231058108f, 0.972939952f, + 0.228072083f, 0.973644250f, + 0.225083911f, 0.974339383f, + 0.222093621f, 0.975025345f, + 0.219101240f, 0.975702130f, + 0.216106797f, 0.976369731f, + 0.213110320f, 0.977028143f, + 0.210111837f, 0.977677358f, + 0.207111376f, 0.978317371f, + 0.204108966f, 0.978948175f, + 0.201104635f, 0.979569766f, + 0.198098411f, 0.980182136f, + 0.195090322f, 0.980785280f, + 0.192080397f, 0.981379193f, + 0.189068664f, 0.981963869f, + 0.186055152f, 0.982539302f, + 0.183039888f, 0.983105487f, + 0.180022901f, 0.983662419f, + 0.177004220f, 0.984210092f, + 0.173983873f, 0.984748502f, + 0.170961889f, 0.985277642f, + 0.167938295f, 0.985797509f, + 0.164913120f, 0.986308097f, + 0.161886394f, 0.986809402f, + 0.158858143f, 0.987301418f, + 0.155828398f, 0.987784142f, + 0.152797185f, 0.988257568f, + 0.149764535f, 0.988721692f, + 0.146730474f, 0.989176510f, + 0.143695033f, 0.989622017f, + 0.140658239f, 0.990058210f, + 0.137620122f, 0.990485084f, + 0.134580709f, 0.990902635f, + 0.131540029f, 0.991310860f, + 0.128498111f, 0.991709754f, + 0.125454983f, 0.992099313f, + 0.122410675f, 0.992479535f, + 0.119365215f, 0.992850414f, + 0.116318631f, 0.993211949f, + 0.113270952f, 0.993564136f, + 0.110222207f, 0.993906970f, + 0.107172425f, 0.994240449f, + 0.104121634f, 0.994564571f, + 0.101069863f, 0.994879331f, + 0.098017140f, 0.995184727f, + 0.094963495f, 0.995480755f, + 0.091908956f, 0.995767414f, + 0.088853553f, 0.996044701f, + 0.085797312f, 0.996312612f, + 0.082740265f, 0.996571146f, + 0.079682438f, 0.996820299f, + 0.076623861f, 0.997060070f, + 0.073564564f, 0.997290457f, + 0.070504573f, 0.997511456f, + 0.067443920f, 0.997723067f, + 0.064382631f, 0.997925286f, + 0.061320736f, 0.998118113f, + 0.058258265f, 0.998301545f, + 0.055195244f, 0.998475581f, + 0.052131705f, 0.998640218f, + 0.049067674f, 0.998795456f, + 0.046003182f, 0.998941293f, + 0.042938257f, 0.999077728f, + 0.039872928f, 0.999204759f, + 0.036807223f, 0.999322385f, + 0.033741172f, 0.999430605f, + 0.030674803f, 0.999529418f, + 0.027608146f, 0.999618822f, + 0.024541229f, 0.999698819f, + 0.021474080f, 0.999769405f, + 0.018406730f, 0.999830582f, + 0.015339206f, 0.999882347f, + 0.012271538f, 0.999924702f, + 0.009203755f, 0.999957645f, + 0.006135885f, 0.999981175f, + 0.003067957f, 0.999995294f, + 0.000000000f, 1.000000000f, + -0.003067957f, 0.999995294f, + -0.006135885f, 0.999981175f, + -0.009203755f, 0.999957645f, + -0.012271538f, 0.999924702f, + -0.015339206f, 0.999882347f, + -0.018406730f, 0.999830582f, + -0.021474080f, 0.999769405f, + -0.024541229f, 0.999698819f, + -0.027608146f, 0.999618822f, + -0.030674803f, 0.999529418f, + -0.033741172f, 0.999430605f, + -0.036807223f, 0.999322385f, + -0.039872928f, 0.999204759f, + -0.042938257f, 0.999077728f, + -0.046003182f, 0.998941293f, + -0.049067674f, 0.998795456f, + -0.052131705f, 0.998640218f, + -0.055195244f, 0.998475581f, + -0.058258265f, 0.998301545f, + -0.061320736f, 0.998118113f, + -0.064382631f, 0.997925286f, + -0.067443920f, 0.997723067f, + -0.070504573f, 0.997511456f, + -0.073564564f, 0.997290457f, + -0.076623861f, 0.997060070f, + -0.079682438f, 0.996820299f, + -0.082740265f, 0.996571146f, + -0.085797312f, 0.996312612f, + -0.088853553f, 0.996044701f, + -0.091908956f, 0.995767414f, + -0.094963495f, 0.995480755f, + -0.098017140f, 0.995184727f, + -0.101069863f, 0.994879331f, + -0.104121634f, 0.994564571f, + -0.107172425f, 0.994240449f, + -0.110222207f, 0.993906970f, + -0.113270952f, 0.993564136f, + -0.116318631f, 0.993211949f, + -0.119365215f, 0.992850414f, + -0.122410675f, 0.992479535f, + -0.125454983f, 0.992099313f, + -0.128498111f, 0.991709754f, + -0.131540029f, 0.991310860f, + -0.134580709f, 0.990902635f, + -0.137620122f, 0.990485084f, + -0.140658239f, 0.990058210f, + -0.143695033f, 0.989622017f, + -0.146730474f, 0.989176510f, + -0.149764535f, 0.988721692f, + -0.152797185f, 0.988257568f, + -0.155828398f, 0.987784142f, + -0.158858143f, 0.987301418f, + -0.161886394f, 0.986809402f, + -0.164913120f, 0.986308097f, + -0.167938295f, 0.985797509f, + -0.170961889f, 0.985277642f, + -0.173983873f, 0.984748502f, + -0.177004220f, 0.984210092f, + -0.180022901f, 0.983662419f, + -0.183039888f, 0.983105487f, + -0.186055152f, 0.982539302f, + -0.189068664f, 0.981963869f, + -0.192080397f, 0.981379193f, + -0.195090322f, 0.980785280f, + -0.198098411f, 0.980182136f, + -0.201104635f, 0.979569766f, + -0.204108966f, 0.978948175f, + -0.207111376f, 0.978317371f, + -0.210111837f, 0.977677358f, + -0.213110320f, 0.977028143f, + -0.216106797f, 0.976369731f, + -0.219101240f, 0.975702130f, + -0.222093621f, 0.975025345f, + -0.225083911f, 0.974339383f, + -0.228072083f, 0.973644250f, + -0.231058108f, 0.972939952f, + -0.234041959f, 0.972226497f, + -0.237023606f, 0.971503891f, + -0.240003022f, 0.970772141f, + -0.242980180f, 0.970031253f, + -0.245955050f, 0.969281235f, + -0.248927606f, 0.968522094f, + -0.251897818f, 0.967753837f, + -0.254865660f, 0.966976471f, + -0.257831102f, 0.966190003f, + -0.260794118f, 0.965394442f, + -0.263754679f, 0.964589793f, + -0.266712757f, 0.963776066f, + -0.269668326f, 0.962953267f, + -0.272621355f, 0.962121404f, + -0.275571819f, 0.961280486f, + -0.278519689f, 0.960430519f, + -0.281464938f, 0.959571513f, + -0.284407537f, 0.958703475f, + -0.287347460f, 0.957826413f, + -0.290284677f, 0.956940336f, + -0.293219163f, 0.956045251f, + -0.296150888f, 0.955141168f, + -0.299079826f, 0.954228095f, + -0.302005949f, 0.953306040f, + -0.304929230f, 0.952375013f, + -0.307849640f, 0.951435021f, + -0.310767153f, 0.950486074f, + -0.313681740f, 0.949528181f, + -0.316593376f, 0.948561350f, + -0.319502031f, 0.947585591f, + -0.322407679f, 0.946600913f, + -0.325310292f, 0.945607325f, + -0.328209844f, 0.944604837f, + -0.331106306f, 0.943593458f, + -0.333999651f, 0.942573198f, + -0.336889853f, 0.941544065f, + -0.339776884f, 0.940506071f, + -0.342660717f, 0.939459224f, + -0.345541325f, 0.938403534f, + -0.348418680f, 0.937339012f, + -0.351292756f, 0.936265667f, + -0.354163525f, 0.935183510f, + -0.357030961f, 0.934092550f, + -0.359895037f, 0.932992799f, + -0.362755724f, 0.931884266f, + -0.365612998f, 0.930766961f, + -0.368466830f, 0.929640896f, + -0.371317194f, 0.928506080f, + -0.374164063f, 0.927362526f, + -0.377007410f, 0.926210242f, + -0.379847209f, 0.925049241f, + -0.382683432f, 0.923879533f, + -0.385516054f, 0.922701128f, + -0.388345047f, 0.921514039f, + -0.391170384f, 0.920318277f, + -0.393992040f, 0.919113852f, + -0.396809987f, 0.917900776f, + -0.399624200f, 0.916679060f, + -0.402434651f, 0.915448716f, + -0.405241314f, 0.914209756f, + -0.408044163f, 0.912962190f, + -0.410843171f, 0.911706032f, + -0.413638312f, 0.910441292f, + -0.416429560f, 0.909167983f, + -0.419216888f, 0.907886116f, + -0.422000271f, 0.906595705f, + -0.424779681f, 0.905296759f, + -0.427555093f, 0.903989293f, + -0.430326481f, 0.902673318f, + -0.433093819f, 0.901348847f, + -0.435857080f, 0.900015892f, + -0.438616239f, 0.898674466f, + -0.441371269f, 0.897324581f, + -0.444122145f, 0.895966250f, + -0.446868840f, 0.894599486f, + -0.449611330f, 0.893224301f, + -0.452349587f, 0.891840709f, + -0.455083587f, 0.890448723f, + -0.457813304f, 0.889048356f, + -0.460538711f, 0.887639620f, + -0.463259784f, 0.886222530f, + -0.465976496f, 0.884797098f, + -0.468688822f, 0.883363339f, + -0.471396737f, 0.881921264f, + -0.474100215f, 0.880470889f, + -0.476799230f, 0.879012226f, + -0.479493758f, 0.877545290f, + -0.482183772f, 0.876070094f, + -0.484869248f, 0.874586652f, + -0.487550160f, 0.873094978f, + -0.490226483f, 0.871595087f, + -0.492898192f, 0.870086991f, + -0.495565262f, 0.868570706f, + -0.498227667f, 0.867046246f, + -0.500885383f, 0.865513624f, + -0.503538384f, 0.863972856f, + -0.506186645f, 0.862423956f, + -0.508830143f, 0.860866939f, + -0.511468850f, 0.859301818f, + -0.514102744f, 0.857728610f, + -0.516731799f, 0.856147328f, + -0.519355990f, 0.854557988f, + -0.521975293f, 0.852960605f, + -0.524589683f, 0.851355193f, + -0.527199135f, 0.849741768f, + -0.529803625f, 0.848120345f, + -0.532403128f, 0.846490939f, + -0.534997620f, 0.844853565f, + -0.537587076f, 0.843208240f, + -0.540171473f, 0.841554977f, + -0.542750785f, 0.839893794f, + -0.545324988f, 0.838224706f, + -0.547894059f, 0.836547727f, + -0.550457973f, 0.834862875f, + -0.553016706f, 0.833170165f, + -0.555570233f, 0.831469612f, + -0.558118531f, 0.829761234f, + -0.560661576f, 0.828045045f, + -0.563199344f, 0.826321063f, + -0.565731811f, 0.824589303f, + -0.568258953f, 0.822849781f, + -0.570780746f, 0.821102515f, + -0.573297167f, 0.819347520f, + -0.575808191f, 0.817584813f, + -0.578313796f, 0.815814411f, + -0.580813958f, 0.814036330f, + -0.583308653f, 0.812250587f, + -0.585797857f, 0.810457198f, + -0.588281548f, 0.808656182f, + -0.590759702f, 0.806847554f, + -0.593232295f, 0.805031331f, + -0.595699304f, 0.803207531f, + -0.598160707f, 0.801376172f, + -0.600616479f, 0.799537269f, + -0.603066599f, 0.797690841f, + -0.605511041f, 0.795836905f, + -0.607949785f, 0.793975478f, + -0.610382806f, 0.792106577f, + -0.612810082f, 0.790230221f, + -0.615231591f, 0.788346428f, + -0.617647308f, 0.786455214f, + -0.620057212f, 0.784556597f, + -0.622461279f, 0.782650596f, + -0.624859488f, 0.780737229f, + -0.627251815f, 0.778816512f, + -0.629638239f, 0.776888466f, + -0.632018736f, 0.774953107f, + -0.634393284f, 0.773010453f, + -0.636761861f, 0.771060524f, + -0.639124445f, 0.769103338f, + -0.641481013f, 0.767138912f, + -0.643831543f, 0.765167266f, + -0.646176013f, 0.763188417f, + -0.648514401f, 0.761202385f, + -0.650846685f, 0.759209189f, + -0.653172843f, 0.757208847f, + -0.655492853f, 0.755201377f, + -0.657806693f, 0.753186799f, + -0.660114342f, 0.751165132f, + -0.662415778f, 0.749136395f, + -0.664710978f, 0.747100606f, + -0.666999922f, 0.745057785f, + -0.669282588f, 0.743007952f, + -0.671558955f, 0.740951125f, + -0.673829000f, 0.738887324f, + -0.676092704f, 0.736816569f, + -0.678350043f, 0.734738878f, + -0.680600998f, 0.732654272f, + -0.682845546f, 0.730562769f, + -0.685083668f, 0.728464390f, + -0.687315341f, 0.726359155f, + -0.689540545f, 0.724247083f, + -0.691759258f, 0.722128194f, + -0.693971461f, 0.720002508f, + -0.696177131f, 0.717870045f, + -0.698376249f, 0.715730825f, + -0.700568794f, 0.713584869f, + -0.702754744f, 0.711432196f, + -0.704934080f, 0.709272826f, + -0.707106781f, 0.707106781f, + -0.709272826f, 0.704934080f, + -0.711432196f, 0.702754744f, + -0.713584869f, 0.700568794f, + -0.715730825f, 0.698376249f, + -0.717870045f, 0.696177131f, + -0.720002508f, 0.693971461f, + -0.722128194f, 0.691759258f, + -0.724247083f, 0.689540545f, + -0.726359155f, 0.687315341f, + -0.728464390f, 0.685083668f, + -0.730562769f, 0.682845546f, + -0.732654272f, 0.680600998f, + -0.734738878f, 0.678350043f, + -0.736816569f, 0.676092704f, + -0.738887324f, 0.673829000f, + -0.740951125f, 0.671558955f, + -0.743007952f, 0.669282588f, + -0.745057785f, 0.666999922f, + -0.747100606f, 0.664710978f, + -0.749136395f, 0.662415778f, + -0.751165132f, 0.660114342f, + -0.753186799f, 0.657806693f, + -0.755201377f, 0.655492853f, + -0.757208847f, 0.653172843f, + -0.759209189f, 0.650846685f, + -0.761202385f, 0.648514401f, + -0.763188417f, 0.646176013f, + -0.765167266f, 0.643831543f, + -0.767138912f, 0.641481013f, + -0.769103338f, 0.639124445f, + -0.771060524f, 0.636761861f, + -0.773010453f, 0.634393284f, + -0.774953107f, 0.632018736f, + -0.776888466f, 0.629638239f, + -0.778816512f, 0.627251815f, + -0.780737229f, 0.624859488f, + -0.782650596f, 0.622461279f, + -0.784556597f, 0.620057212f, + -0.786455214f, 0.617647308f, + -0.788346428f, 0.615231591f, + -0.790230221f, 0.612810082f, + -0.792106577f, 0.610382806f, + -0.793975478f, 0.607949785f, + -0.795836905f, 0.605511041f, + -0.797690841f, 0.603066599f, + -0.799537269f, 0.600616479f, + -0.801376172f, 0.598160707f, + -0.803207531f, 0.595699304f, + -0.805031331f, 0.593232295f, + -0.806847554f, 0.590759702f, + -0.808656182f, 0.588281548f, + -0.810457198f, 0.585797857f, + -0.812250587f, 0.583308653f, + -0.814036330f, 0.580813958f, + -0.815814411f, 0.578313796f, + -0.817584813f, 0.575808191f, + -0.819347520f, 0.573297167f, + -0.821102515f, 0.570780746f, + -0.822849781f, 0.568258953f, + -0.824589303f, 0.565731811f, + -0.826321063f, 0.563199344f, + -0.828045045f, 0.560661576f, + -0.829761234f, 0.558118531f, + -0.831469612f, 0.555570233f, + -0.833170165f, 0.553016706f, + -0.834862875f, 0.550457973f, + -0.836547727f, 0.547894059f, + -0.838224706f, 0.545324988f, + -0.839893794f, 0.542750785f, + -0.841554977f, 0.540171473f, + -0.843208240f, 0.537587076f, + -0.844853565f, 0.534997620f, + -0.846490939f, 0.532403128f, + -0.848120345f, 0.529803625f, + -0.849741768f, 0.527199135f, + -0.851355193f, 0.524589683f, + -0.852960605f, 0.521975293f, + -0.854557988f, 0.519355990f, + -0.856147328f, 0.516731799f, + -0.857728610f, 0.514102744f, + -0.859301818f, 0.511468850f, + -0.860866939f, 0.508830143f, + -0.862423956f, 0.506186645f, + -0.863972856f, 0.503538384f, + -0.865513624f, 0.500885383f, + -0.867046246f, 0.498227667f, + -0.868570706f, 0.495565262f, + -0.870086991f, 0.492898192f, + -0.871595087f, 0.490226483f, + -0.873094978f, 0.487550160f, + -0.874586652f, 0.484869248f, + -0.876070094f, 0.482183772f, + -0.877545290f, 0.479493758f, + -0.879012226f, 0.476799230f, + -0.880470889f, 0.474100215f, + -0.881921264f, 0.471396737f, + -0.883363339f, 0.468688822f, + -0.884797098f, 0.465976496f, + -0.886222530f, 0.463259784f, + -0.887639620f, 0.460538711f, + -0.889048356f, 0.457813304f, + -0.890448723f, 0.455083587f, + -0.891840709f, 0.452349587f, + -0.893224301f, 0.449611330f, + -0.894599486f, 0.446868840f, + -0.895966250f, 0.444122145f, + -0.897324581f, 0.441371269f, + -0.898674466f, 0.438616239f, + -0.900015892f, 0.435857080f, + -0.901348847f, 0.433093819f, + -0.902673318f, 0.430326481f, + -0.903989293f, 0.427555093f, + -0.905296759f, 0.424779681f, + -0.906595705f, 0.422000271f, + -0.907886116f, 0.419216888f, + -0.909167983f, 0.416429560f, + -0.910441292f, 0.413638312f, + -0.911706032f, 0.410843171f, + -0.912962190f, 0.408044163f, + -0.914209756f, 0.405241314f, + -0.915448716f, 0.402434651f, + -0.916679060f, 0.399624200f, + -0.917900776f, 0.396809987f, + -0.919113852f, 0.393992040f, + -0.920318277f, 0.391170384f, + -0.921514039f, 0.388345047f, + -0.922701128f, 0.385516054f, + -0.923879533f, 0.382683432f, + -0.925049241f, 0.379847209f, + -0.926210242f, 0.377007410f, + -0.927362526f, 0.374164063f, + -0.928506080f, 0.371317194f, + -0.929640896f, 0.368466830f, + -0.930766961f, 0.365612998f, + -0.931884266f, 0.362755724f, + -0.932992799f, 0.359895037f, + -0.934092550f, 0.357030961f, + -0.935183510f, 0.354163525f, + -0.936265667f, 0.351292756f, + -0.937339012f, 0.348418680f, + -0.938403534f, 0.345541325f, + -0.939459224f, 0.342660717f, + -0.940506071f, 0.339776884f, + -0.941544065f, 0.336889853f, + -0.942573198f, 0.333999651f, + -0.943593458f, 0.331106306f, + -0.944604837f, 0.328209844f, + -0.945607325f, 0.325310292f, + -0.946600913f, 0.322407679f, + -0.947585591f, 0.319502031f, + -0.948561350f, 0.316593376f, + -0.949528181f, 0.313681740f, + -0.950486074f, 0.310767153f, + -0.951435021f, 0.307849640f, + -0.952375013f, 0.304929230f, + -0.953306040f, 0.302005949f, + -0.954228095f, 0.299079826f, + -0.955141168f, 0.296150888f, + -0.956045251f, 0.293219163f, + -0.956940336f, 0.290284677f, + -0.957826413f, 0.287347460f, + -0.958703475f, 0.284407537f, + -0.959571513f, 0.281464938f, + -0.960430519f, 0.278519689f, + -0.961280486f, 0.275571819f, + -0.962121404f, 0.272621355f, + -0.962953267f, 0.269668326f, + -0.963776066f, 0.266712757f, + -0.964589793f, 0.263754679f, + -0.965394442f, 0.260794118f, + -0.966190003f, 0.257831102f, + -0.966976471f, 0.254865660f, + -0.967753837f, 0.251897818f, + -0.968522094f, 0.248927606f, + -0.969281235f, 0.245955050f, + -0.970031253f, 0.242980180f, + -0.970772141f, 0.240003022f, + -0.971503891f, 0.237023606f, + -0.972226497f, 0.234041959f, + -0.972939952f, 0.231058108f, + -0.973644250f, 0.228072083f, + -0.974339383f, 0.225083911f, + -0.975025345f, 0.222093621f, + -0.975702130f, 0.219101240f, + -0.976369731f, 0.216106797f, + -0.977028143f, 0.213110320f, + -0.977677358f, 0.210111837f, + -0.978317371f, 0.207111376f, + -0.978948175f, 0.204108966f, + -0.979569766f, 0.201104635f, + -0.980182136f, 0.198098411f, + -0.980785280f, 0.195090322f, + -0.981379193f, 0.192080397f, + -0.981963869f, 0.189068664f, + -0.982539302f, 0.186055152f, + -0.983105487f, 0.183039888f, + -0.983662419f, 0.180022901f, + -0.984210092f, 0.177004220f, + -0.984748502f, 0.173983873f, + -0.985277642f, 0.170961889f, + -0.985797509f, 0.167938295f, + -0.986308097f, 0.164913120f, + -0.986809402f, 0.161886394f, + -0.987301418f, 0.158858143f, + -0.987784142f, 0.155828398f, + -0.988257568f, 0.152797185f, + -0.988721692f, 0.149764535f, + -0.989176510f, 0.146730474f, + -0.989622017f, 0.143695033f, + -0.990058210f, 0.140658239f, + -0.990485084f, 0.137620122f, + -0.990902635f, 0.134580709f, + -0.991310860f, 0.131540029f, + -0.991709754f, 0.128498111f, + -0.992099313f, 0.125454983f, + -0.992479535f, 0.122410675f, + -0.992850414f, 0.119365215f, + -0.993211949f, 0.116318631f, + -0.993564136f, 0.113270952f, + -0.993906970f, 0.110222207f, + -0.994240449f, 0.107172425f, + -0.994564571f, 0.104121634f, + -0.994879331f, 0.101069863f, + -0.995184727f, 0.098017140f, + -0.995480755f, 0.094963495f, + -0.995767414f, 0.091908956f, + -0.996044701f, 0.088853553f, + -0.996312612f, 0.085797312f, + -0.996571146f, 0.082740265f, + -0.996820299f, 0.079682438f, + -0.997060070f, 0.076623861f, + -0.997290457f, 0.073564564f, + -0.997511456f, 0.070504573f, + -0.997723067f, 0.067443920f, + -0.997925286f, 0.064382631f, + -0.998118113f, 0.061320736f, + -0.998301545f, 0.058258265f, + -0.998475581f, 0.055195244f, + -0.998640218f, 0.052131705f, + -0.998795456f, 0.049067674f, + -0.998941293f, 0.046003182f, + -0.999077728f, 0.042938257f, + -0.999204759f, 0.039872928f, + -0.999322385f, 0.036807223f, + -0.999430605f, 0.033741172f, + -0.999529418f, 0.030674803f, + -0.999618822f, 0.027608146f, + -0.999698819f, 0.024541229f, + -0.999769405f, 0.021474080f, + -0.999830582f, 0.018406730f, + -0.999882347f, 0.015339206f, + -0.999924702f, 0.012271538f, + -0.999957645f, 0.009203755f, + -0.999981175f, 0.006135885f, + -0.999995294f, 0.003067957f, + -1.000000000f, 0.000000000f, + -0.999995294f, -0.003067957f, + -0.999981175f, -0.006135885f, + -0.999957645f, -0.009203755f, + -0.999924702f, -0.012271538f, + -0.999882347f, -0.015339206f, + -0.999830582f, -0.018406730f, + -0.999769405f, -0.021474080f, + -0.999698819f, -0.024541229f, + -0.999618822f, -0.027608146f, + -0.999529418f, -0.030674803f, + -0.999430605f, -0.033741172f, + -0.999322385f, -0.036807223f, + -0.999204759f, -0.039872928f, + -0.999077728f, -0.042938257f, + -0.998941293f, -0.046003182f, + -0.998795456f, -0.049067674f, + -0.998640218f, -0.052131705f, + -0.998475581f, -0.055195244f, + -0.998301545f, -0.058258265f, + -0.998118113f, -0.061320736f, + -0.997925286f, -0.064382631f, + -0.997723067f, -0.067443920f, + -0.997511456f, -0.070504573f, + -0.997290457f, -0.073564564f, + -0.997060070f, -0.076623861f, + -0.996820299f, -0.079682438f, + -0.996571146f, -0.082740265f, + -0.996312612f, -0.085797312f, + -0.996044701f, -0.088853553f, + -0.995767414f, -0.091908956f, + -0.995480755f, -0.094963495f, + -0.995184727f, -0.098017140f, + -0.994879331f, -0.101069863f, + -0.994564571f, -0.104121634f, + -0.994240449f, -0.107172425f, + -0.993906970f, -0.110222207f, + -0.993564136f, -0.113270952f, + -0.993211949f, -0.116318631f, + -0.992850414f, -0.119365215f, + -0.992479535f, -0.122410675f, + -0.992099313f, -0.125454983f, + -0.991709754f, -0.128498111f, + -0.991310860f, -0.131540029f, + -0.990902635f, -0.134580709f, + -0.990485084f, -0.137620122f, + -0.990058210f, -0.140658239f, + -0.989622017f, -0.143695033f, + -0.989176510f, -0.146730474f, + -0.988721692f, -0.149764535f, + -0.988257568f, -0.152797185f, + -0.987784142f, -0.155828398f, + -0.987301418f, -0.158858143f, + -0.986809402f, -0.161886394f, + -0.986308097f, -0.164913120f, + -0.985797509f, -0.167938295f, + -0.985277642f, -0.170961889f, + -0.984748502f, -0.173983873f, + -0.984210092f, -0.177004220f, + -0.983662419f, -0.180022901f, + -0.983105487f, -0.183039888f, + -0.982539302f, -0.186055152f, + -0.981963869f, -0.189068664f, + -0.981379193f, -0.192080397f, + -0.980785280f, -0.195090322f, + -0.980182136f, -0.198098411f, + -0.979569766f, -0.201104635f, + -0.978948175f, -0.204108966f, + -0.978317371f, -0.207111376f, + -0.977677358f, -0.210111837f, + -0.977028143f, -0.213110320f, + -0.976369731f, -0.216106797f, + -0.975702130f, -0.219101240f, + -0.975025345f, -0.222093621f, + -0.974339383f, -0.225083911f, + -0.973644250f, -0.228072083f, + -0.972939952f, -0.231058108f, + -0.972226497f, -0.234041959f, + -0.971503891f, -0.237023606f, + -0.970772141f, -0.240003022f, + -0.970031253f, -0.242980180f, + -0.969281235f, -0.245955050f, + -0.968522094f, -0.248927606f, + -0.967753837f, -0.251897818f, + -0.966976471f, -0.254865660f, + -0.966190003f, -0.257831102f, + -0.965394442f, -0.260794118f, + -0.964589793f, -0.263754679f, + -0.963776066f, -0.266712757f, + -0.962953267f, -0.269668326f, + -0.962121404f, -0.272621355f, + -0.961280486f, -0.275571819f, + -0.960430519f, -0.278519689f, + -0.959571513f, -0.281464938f, + -0.958703475f, -0.284407537f, + -0.957826413f, -0.287347460f, + -0.956940336f, -0.290284677f, + -0.956045251f, -0.293219163f, + -0.955141168f, -0.296150888f, + -0.954228095f, -0.299079826f, + -0.953306040f, -0.302005949f, + -0.952375013f, -0.304929230f, + -0.951435021f, -0.307849640f, + -0.950486074f, -0.310767153f, + -0.949528181f, -0.313681740f, + -0.948561350f, -0.316593376f, + -0.947585591f, -0.319502031f, + -0.946600913f, -0.322407679f, + -0.945607325f, -0.325310292f, + -0.944604837f, -0.328209844f, + -0.943593458f, -0.331106306f, + -0.942573198f, -0.333999651f, + -0.941544065f, -0.336889853f, + -0.940506071f, -0.339776884f, + -0.939459224f, -0.342660717f, + -0.938403534f, -0.345541325f, + -0.937339012f, -0.348418680f, + -0.936265667f, -0.351292756f, + -0.935183510f, -0.354163525f, + -0.934092550f, -0.357030961f, + -0.932992799f, -0.359895037f, + -0.931884266f, -0.362755724f, + -0.930766961f, -0.365612998f, + -0.929640896f, -0.368466830f, + -0.928506080f, -0.371317194f, + -0.927362526f, -0.374164063f, + -0.926210242f, -0.377007410f, + -0.925049241f, -0.379847209f, + -0.923879533f, -0.382683432f, + -0.922701128f, -0.385516054f, + -0.921514039f, -0.388345047f, + -0.920318277f, -0.391170384f, + -0.919113852f, -0.393992040f, + -0.917900776f, -0.396809987f, + -0.916679060f, -0.399624200f, + -0.915448716f, -0.402434651f, + -0.914209756f, -0.405241314f, + -0.912962190f, -0.408044163f, + -0.911706032f, -0.410843171f, + -0.910441292f, -0.413638312f, + -0.909167983f, -0.416429560f, + -0.907886116f, -0.419216888f, + -0.906595705f, -0.422000271f, + -0.905296759f, -0.424779681f, + -0.903989293f, -0.427555093f, + -0.902673318f, -0.430326481f, + -0.901348847f, -0.433093819f, + -0.900015892f, -0.435857080f, + -0.898674466f, -0.438616239f, + -0.897324581f, -0.441371269f, + -0.895966250f, -0.444122145f, + -0.894599486f, -0.446868840f, + -0.893224301f, -0.449611330f, + -0.891840709f, -0.452349587f, + -0.890448723f, -0.455083587f, + -0.889048356f, -0.457813304f, + -0.887639620f, -0.460538711f, + -0.886222530f, -0.463259784f, + -0.884797098f, -0.465976496f, + -0.883363339f, -0.468688822f, + -0.881921264f, -0.471396737f, + -0.880470889f, -0.474100215f, + -0.879012226f, -0.476799230f, + -0.877545290f, -0.479493758f, + -0.876070094f, -0.482183772f, + -0.874586652f, -0.484869248f, + -0.873094978f, -0.487550160f, + -0.871595087f, -0.490226483f, + -0.870086991f, -0.492898192f, + -0.868570706f, -0.495565262f, + -0.867046246f, -0.498227667f, + -0.865513624f, -0.500885383f, + -0.863972856f, -0.503538384f, + -0.862423956f, -0.506186645f, + -0.860866939f, -0.508830143f, + -0.859301818f, -0.511468850f, + -0.857728610f, -0.514102744f, + -0.856147328f, -0.516731799f, + -0.854557988f, -0.519355990f, + -0.852960605f, -0.521975293f, + -0.851355193f, -0.524589683f, + -0.849741768f, -0.527199135f, + -0.848120345f, -0.529803625f, + -0.846490939f, -0.532403128f, + -0.844853565f, -0.534997620f, + -0.843208240f, -0.537587076f, + -0.841554977f, -0.540171473f, + -0.839893794f, -0.542750785f, + -0.838224706f, -0.545324988f, + -0.836547727f, -0.547894059f, + -0.834862875f, -0.550457973f, + -0.833170165f, -0.553016706f, + -0.831469612f, -0.555570233f, + -0.829761234f, -0.558118531f, + -0.828045045f, -0.560661576f, + -0.826321063f, -0.563199344f, + -0.824589303f, -0.565731811f, + -0.822849781f, -0.568258953f, + -0.821102515f, -0.570780746f, + -0.819347520f, -0.573297167f, + -0.817584813f, -0.575808191f, + -0.815814411f, -0.578313796f, + -0.814036330f, -0.580813958f, + -0.812250587f, -0.583308653f, + -0.810457198f, -0.585797857f, + -0.808656182f, -0.588281548f, + -0.806847554f, -0.590759702f, + -0.805031331f, -0.593232295f, + -0.803207531f, -0.595699304f, + -0.801376172f, -0.598160707f, + -0.799537269f, -0.600616479f, + -0.797690841f, -0.603066599f, + -0.795836905f, -0.605511041f, + -0.793975478f, -0.607949785f, + -0.792106577f, -0.610382806f, + -0.790230221f, -0.612810082f, + -0.788346428f, -0.615231591f, + -0.786455214f, -0.617647308f, + -0.784556597f, -0.620057212f, + -0.782650596f, -0.622461279f, + -0.780737229f, -0.624859488f, + -0.778816512f, -0.627251815f, + -0.776888466f, -0.629638239f, + -0.774953107f, -0.632018736f, + -0.773010453f, -0.634393284f, + -0.771060524f, -0.636761861f, + -0.769103338f, -0.639124445f, + -0.767138912f, -0.641481013f, + -0.765167266f, -0.643831543f, + -0.763188417f, -0.646176013f, + -0.761202385f, -0.648514401f, + -0.759209189f, -0.650846685f, + -0.757208847f, -0.653172843f, + -0.755201377f, -0.655492853f, + -0.753186799f, -0.657806693f, + -0.751165132f, -0.660114342f, + -0.749136395f, -0.662415778f, + -0.747100606f, -0.664710978f, + -0.745057785f, -0.666999922f, + -0.743007952f, -0.669282588f, + -0.740951125f, -0.671558955f, + -0.738887324f, -0.673829000f, + -0.736816569f, -0.676092704f, + -0.734738878f, -0.678350043f, + -0.732654272f, -0.680600998f, + -0.730562769f, -0.682845546f, + -0.728464390f, -0.685083668f, + -0.726359155f, -0.687315341f, + -0.724247083f, -0.689540545f, + -0.722128194f, -0.691759258f, + -0.720002508f, -0.693971461f, + -0.717870045f, -0.696177131f, + -0.715730825f, -0.698376249f, + -0.713584869f, -0.700568794f, + -0.711432196f, -0.702754744f, + -0.709272826f, -0.704934080f, + -0.707106781f, -0.707106781f, + -0.704934080f, -0.709272826f, + -0.702754744f, -0.711432196f, + -0.700568794f, -0.713584869f, + -0.698376249f, -0.715730825f, + -0.696177131f, -0.717870045f, + -0.693971461f, -0.720002508f, + -0.691759258f, -0.722128194f, + -0.689540545f, -0.724247083f, + -0.687315341f, -0.726359155f, + -0.685083668f, -0.728464390f, + -0.682845546f, -0.730562769f, + -0.680600998f, -0.732654272f, + -0.678350043f, -0.734738878f, + -0.676092704f, -0.736816569f, + -0.673829000f, -0.738887324f, + -0.671558955f, -0.740951125f, + -0.669282588f, -0.743007952f, + -0.666999922f, -0.745057785f, + -0.664710978f, -0.747100606f, + -0.662415778f, -0.749136395f, + -0.660114342f, -0.751165132f, + -0.657806693f, -0.753186799f, + -0.655492853f, -0.755201377f, + -0.653172843f, -0.757208847f, + -0.650846685f, -0.759209189f, + -0.648514401f, -0.761202385f, + -0.646176013f, -0.763188417f, + -0.643831543f, -0.765167266f, + -0.641481013f, -0.767138912f, + -0.639124445f, -0.769103338f, + -0.636761861f, -0.771060524f, + -0.634393284f, -0.773010453f, + -0.632018736f, -0.774953107f, + -0.629638239f, -0.776888466f, + -0.627251815f, -0.778816512f, + -0.624859488f, -0.780737229f, + -0.622461279f, -0.782650596f, + -0.620057212f, -0.784556597f, + -0.617647308f, -0.786455214f, + -0.615231591f, -0.788346428f, + -0.612810082f, -0.790230221f, + -0.610382806f, -0.792106577f, + -0.607949785f, -0.793975478f, + -0.605511041f, -0.795836905f, + -0.603066599f, -0.797690841f, + -0.600616479f, -0.799537269f, + -0.598160707f, -0.801376172f, + -0.595699304f, -0.803207531f, + -0.593232295f, -0.805031331f, + -0.590759702f, -0.806847554f, + -0.588281548f, -0.808656182f, + -0.585797857f, -0.810457198f, + -0.583308653f, -0.812250587f, + -0.580813958f, -0.814036330f, + -0.578313796f, -0.815814411f, + -0.575808191f, -0.817584813f, + -0.573297167f, -0.819347520f, + -0.570780746f, -0.821102515f, + -0.568258953f, -0.822849781f, + -0.565731811f, -0.824589303f, + -0.563199344f, -0.826321063f, + -0.560661576f, -0.828045045f, + -0.558118531f, -0.829761234f, + -0.555570233f, -0.831469612f, + -0.553016706f, -0.833170165f, + -0.550457973f, -0.834862875f, + -0.547894059f, -0.836547727f, + -0.545324988f, -0.838224706f, + -0.542750785f, -0.839893794f, + -0.540171473f, -0.841554977f, + -0.537587076f, -0.843208240f, + -0.534997620f, -0.844853565f, + -0.532403128f, -0.846490939f, + -0.529803625f, -0.848120345f, + -0.527199135f, -0.849741768f, + -0.524589683f, -0.851355193f, + -0.521975293f, -0.852960605f, + -0.519355990f, -0.854557988f, + -0.516731799f, -0.856147328f, + -0.514102744f, -0.857728610f, + -0.511468850f, -0.859301818f, + -0.508830143f, -0.860866939f, + -0.506186645f, -0.862423956f, + -0.503538384f, -0.863972856f, + -0.500885383f, -0.865513624f, + -0.498227667f, -0.867046246f, + -0.495565262f, -0.868570706f, + -0.492898192f, -0.870086991f, + -0.490226483f, -0.871595087f, + -0.487550160f, -0.873094978f, + -0.484869248f, -0.874586652f, + -0.482183772f, -0.876070094f, + -0.479493758f, -0.877545290f, + -0.476799230f, -0.879012226f, + -0.474100215f, -0.880470889f, + -0.471396737f, -0.881921264f, + -0.468688822f, -0.883363339f, + -0.465976496f, -0.884797098f, + -0.463259784f, -0.886222530f, + -0.460538711f, -0.887639620f, + -0.457813304f, -0.889048356f, + -0.455083587f, -0.890448723f, + -0.452349587f, -0.891840709f, + -0.449611330f, -0.893224301f, + -0.446868840f, -0.894599486f, + -0.444122145f, -0.895966250f, + -0.441371269f, -0.897324581f, + -0.438616239f, -0.898674466f, + -0.435857080f, -0.900015892f, + -0.433093819f, -0.901348847f, + -0.430326481f, -0.902673318f, + -0.427555093f, -0.903989293f, + -0.424779681f, -0.905296759f, + -0.422000271f, -0.906595705f, + -0.419216888f, -0.907886116f, + -0.416429560f, -0.909167983f, + -0.413638312f, -0.910441292f, + -0.410843171f, -0.911706032f, + -0.408044163f, -0.912962190f, + -0.405241314f, -0.914209756f, + -0.402434651f, -0.915448716f, + -0.399624200f, -0.916679060f, + -0.396809987f, -0.917900776f, + -0.393992040f, -0.919113852f, + -0.391170384f, -0.920318277f, + -0.388345047f, -0.921514039f, + -0.385516054f, -0.922701128f, + -0.382683432f, -0.923879533f, + -0.379847209f, -0.925049241f, + -0.377007410f, -0.926210242f, + -0.374164063f, -0.927362526f, + -0.371317194f, -0.928506080f, + -0.368466830f, -0.929640896f, + -0.365612998f, -0.930766961f, + -0.362755724f, -0.931884266f, + -0.359895037f, -0.932992799f, + -0.357030961f, -0.934092550f, + -0.354163525f, -0.935183510f, + -0.351292756f, -0.936265667f, + -0.348418680f, -0.937339012f, + -0.345541325f, -0.938403534f, + -0.342660717f, -0.939459224f, + -0.339776884f, -0.940506071f, + -0.336889853f, -0.941544065f, + -0.333999651f, -0.942573198f, + -0.331106306f, -0.943593458f, + -0.328209844f, -0.944604837f, + -0.325310292f, -0.945607325f, + -0.322407679f, -0.946600913f, + -0.319502031f, -0.947585591f, + -0.316593376f, -0.948561350f, + -0.313681740f, -0.949528181f, + -0.310767153f, -0.950486074f, + -0.307849640f, -0.951435021f, + -0.304929230f, -0.952375013f, + -0.302005949f, -0.953306040f, + -0.299079826f, -0.954228095f, + -0.296150888f, -0.955141168f, + -0.293219163f, -0.956045251f, + -0.290284677f, -0.956940336f, + -0.287347460f, -0.957826413f, + -0.284407537f, -0.958703475f, + -0.281464938f, -0.959571513f, + -0.278519689f, -0.960430519f, + -0.275571819f, -0.961280486f, + -0.272621355f, -0.962121404f, + -0.269668326f, -0.962953267f, + -0.266712757f, -0.963776066f, + -0.263754679f, -0.964589793f, + -0.260794118f, -0.965394442f, + -0.257831102f, -0.966190003f, + -0.254865660f, -0.966976471f, + -0.251897818f, -0.967753837f, + -0.248927606f, -0.968522094f, + -0.245955050f, -0.969281235f, + -0.242980180f, -0.970031253f, + -0.240003022f, -0.970772141f, + -0.237023606f, -0.971503891f, + -0.234041959f, -0.972226497f, + -0.231058108f, -0.972939952f, + -0.228072083f, -0.973644250f, + -0.225083911f, -0.974339383f, + -0.222093621f, -0.975025345f, + -0.219101240f, -0.975702130f, + -0.216106797f, -0.976369731f, + -0.213110320f, -0.977028143f, + -0.210111837f, -0.977677358f, + -0.207111376f, -0.978317371f, + -0.204108966f, -0.978948175f, + -0.201104635f, -0.979569766f, + -0.198098411f, -0.980182136f, + -0.195090322f, -0.980785280f, + -0.192080397f, -0.981379193f, + -0.189068664f, -0.981963869f, + -0.186055152f, -0.982539302f, + -0.183039888f, -0.983105487f, + -0.180022901f, -0.983662419f, + -0.177004220f, -0.984210092f, + -0.173983873f, -0.984748502f, + -0.170961889f, -0.985277642f, + -0.167938295f, -0.985797509f, + -0.164913120f, -0.986308097f, + -0.161886394f, -0.986809402f, + -0.158858143f, -0.987301418f, + -0.155828398f, -0.987784142f, + -0.152797185f, -0.988257568f, + -0.149764535f, -0.988721692f, + -0.146730474f, -0.989176510f, + -0.143695033f, -0.989622017f, + -0.140658239f, -0.990058210f, + -0.137620122f, -0.990485084f, + -0.134580709f, -0.990902635f, + -0.131540029f, -0.991310860f, + -0.128498111f, -0.991709754f, + -0.125454983f, -0.992099313f, + -0.122410675f, -0.992479535f, + -0.119365215f, -0.992850414f, + -0.116318631f, -0.993211949f, + -0.113270952f, -0.993564136f, + -0.110222207f, -0.993906970f, + -0.107172425f, -0.994240449f, + -0.104121634f, -0.994564571f, + -0.101069863f, -0.994879331f, + -0.098017140f, -0.995184727f, + -0.094963495f, -0.995480755f, + -0.091908956f, -0.995767414f, + -0.088853553f, -0.996044701f, + -0.085797312f, -0.996312612f, + -0.082740265f, -0.996571146f, + -0.079682438f, -0.996820299f, + -0.076623861f, -0.997060070f, + -0.073564564f, -0.997290457f, + -0.070504573f, -0.997511456f, + -0.067443920f, -0.997723067f, + -0.064382631f, -0.997925286f, + -0.061320736f, -0.998118113f, + -0.058258265f, -0.998301545f, + -0.055195244f, -0.998475581f, + -0.052131705f, -0.998640218f, + -0.049067674f, -0.998795456f, + -0.046003182f, -0.998941293f, + -0.042938257f, -0.999077728f, + -0.039872928f, -0.999204759f, + -0.036807223f, -0.999322385f, + -0.033741172f, -0.999430605f, + -0.030674803f, -0.999529418f, + -0.027608146f, -0.999618822f, + -0.024541229f, -0.999698819f, + -0.021474080f, -0.999769405f, + -0.018406730f, -0.999830582f, + -0.015339206f, -0.999882347f, + -0.012271538f, -0.999924702f, + -0.009203755f, -0.999957645f, + -0.006135885f, -0.999981175f, + -0.003067957f, -0.999995294f, + -0.000000000f, -1.000000000f, + 0.003067957f, -0.999995294f, + 0.006135885f, -0.999981175f, + 0.009203755f, -0.999957645f, + 0.012271538f, -0.999924702f, + 0.015339206f, -0.999882347f, + 0.018406730f, -0.999830582f, + 0.021474080f, -0.999769405f, + 0.024541229f, -0.999698819f, + 0.027608146f, -0.999618822f, + 0.030674803f, -0.999529418f, + 0.033741172f, -0.999430605f, + 0.036807223f, -0.999322385f, + 0.039872928f, -0.999204759f, + 0.042938257f, -0.999077728f, + 0.046003182f, -0.998941293f, + 0.049067674f, -0.998795456f, + 0.052131705f, -0.998640218f, + 0.055195244f, -0.998475581f, + 0.058258265f, -0.998301545f, + 0.061320736f, -0.998118113f, + 0.064382631f, -0.997925286f, + 0.067443920f, -0.997723067f, + 0.070504573f, -0.997511456f, + 0.073564564f, -0.997290457f, + 0.076623861f, -0.997060070f, + 0.079682438f, -0.996820299f, + 0.082740265f, -0.996571146f, + 0.085797312f, -0.996312612f, + 0.088853553f, -0.996044701f, + 0.091908956f, -0.995767414f, + 0.094963495f, -0.995480755f, + 0.098017140f, -0.995184727f, + 0.101069863f, -0.994879331f, + 0.104121634f, -0.994564571f, + 0.107172425f, -0.994240449f, + 0.110222207f, -0.993906970f, + 0.113270952f, -0.993564136f, + 0.116318631f, -0.993211949f, + 0.119365215f, -0.992850414f, + 0.122410675f, -0.992479535f, + 0.125454983f, -0.992099313f, + 0.128498111f, -0.991709754f, + 0.131540029f, -0.991310860f, + 0.134580709f, -0.990902635f, + 0.137620122f, -0.990485084f, + 0.140658239f, -0.990058210f, + 0.143695033f, -0.989622017f, + 0.146730474f, -0.989176510f, + 0.149764535f, -0.988721692f, + 0.152797185f, -0.988257568f, + 0.155828398f, -0.987784142f, + 0.158858143f, -0.987301418f, + 0.161886394f, -0.986809402f, + 0.164913120f, -0.986308097f, + 0.167938295f, -0.985797509f, + 0.170961889f, -0.985277642f, + 0.173983873f, -0.984748502f, + 0.177004220f, -0.984210092f, + 0.180022901f, -0.983662419f, + 0.183039888f, -0.983105487f, + 0.186055152f, -0.982539302f, + 0.189068664f, -0.981963869f, + 0.192080397f, -0.981379193f, + 0.195090322f, -0.980785280f, + 0.198098411f, -0.980182136f, + 0.201104635f, -0.979569766f, + 0.204108966f, -0.978948175f, + 0.207111376f, -0.978317371f, + 0.210111837f, -0.977677358f, + 0.213110320f, -0.977028143f, + 0.216106797f, -0.976369731f, + 0.219101240f, -0.975702130f, + 0.222093621f, -0.975025345f, + 0.225083911f, -0.974339383f, + 0.228072083f, -0.973644250f, + 0.231058108f, -0.972939952f, + 0.234041959f, -0.972226497f, + 0.237023606f, -0.971503891f, + 0.240003022f, -0.970772141f, + 0.242980180f, -0.970031253f, + 0.245955050f, -0.969281235f, + 0.248927606f, -0.968522094f, + 0.251897818f, -0.967753837f, + 0.254865660f, -0.966976471f, + 0.257831102f, -0.966190003f, + 0.260794118f, -0.965394442f, + 0.263754679f, -0.964589793f, + 0.266712757f, -0.963776066f, + 0.269668326f, -0.962953267f, + 0.272621355f, -0.962121404f, + 0.275571819f, -0.961280486f, + 0.278519689f, -0.960430519f, + 0.281464938f, -0.959571513f, + 0.284407537f, -0.958703475f, + 0.287347460f, -0.957826413f, + 0.290284677f, -0.956940336f, + 0.293219163f, -0.956045251f, + 0.296150888f, -0.955141168f, + 0.299079826f, -0.954228095f, + 0.302005949f, -0.953306040f, + 0.304929230f, -0.952375013f, + 0.307849640f, -0.951435021f, + 0.310767153f, -0.950486074f, + 0.313681740f, -0.949528181f, + 0.316593376f, -0.948561350f, + 0.319502031f, -0.947585591f, + 0.322407679f, -0.946600913f, + 0.325310292f, -0.945607325f, + 0.328209844f, -0.944604837f, + 0.331106306f, -0.943593458f, + 0.333999651f, -0.942573198f, + 0.336889853f, -0.941544065f, + 0.339776884f, -0.940506071f, + 0.342660717f, -0.939459224f, + 0.345541325f, -0.938403534f, + 0.348418680f, -0.937339012f, + 0.351292756f, -0.936265667f, + 0.354163525f, -0.935183510f, + 0.357030961f, -0.934092550f, + 0.359895037f, -0.932992799f, + 0.362755724f, -0.931884266f, + 0.365612998f, -0.930766961f, + 0.368466830f, -0.929640896f, + 0.371317194f, -0.928506080f, + 0.374164063f, -0.927362526f, + 0.377007410f, -0.926210242f, + 0.379847209f, -0.925049241f, + 0.382683432f, -0.923879533f, + 0.385516054f, -0.922701128f, + 0.388345047f, -0.921514039f, + 0.391170384f, -0.920318277f, + 0.393992040f, -0.919113852f, + 0.396809987f, -0.917900776f, + 0.399624200f, -0.916679060f, + 0.402434651f, -0.915448716f, + 0.405241314f, -0.914209756f, + 0.408044163f, -0.912962190f, + 0.410843171f, -0.911706032f, + 0.413638312f, -0.910441292f, + 0.416429560f, -0.909167983f, + 0.419216888f, -0.907886116f, + 0.422000271f, -0.906595705f, + 0.424779681f, -0.905296759f, + 0.427555093f, -0.903989293f, + 0.430326481f, -0.902673318f, + 0.433093819f, -0.901348847f, + 0.435857080f, -0.900015892f, + 0.438616239f, -0.898674466f, + 0.441371269f, -0.897324581f, + 0.444122145f, -0.895966250f, + 0.446868840f, -0.894599486f, + 0.449611330f, -0.893224301f, + 0.452349587f, -0.891840709f, + 0.455083587f, -0.890448723f, + 0.457813304f, -0.889048356f, + 0.460538711f, -0.887639620f, + 0.463259784f, -0.886222530f, + 0.465976496f, -0.884797098f, + 0.468688822f, -0.883363339f, + 0.471396737f, -0.881921264f, + 0.474100215f, -0.880470889f, + 0.476799230f, -0.879012226f, + 0.479493758f, -0.877545290f, + 0.482183772f, -0.876070094f, + 0.484869248f, -0.874586652f, + 0.487550160f, -0.873094978f, + 0.490226483f, -0.871595087f, + 0.492898192f, -0.870086991f, + 0.495565262f, -0.868570706f, + 0.498227667f, -0.867046246f, + 0.500885383f, -0.865513624f, + 0.503538384f, -0.863972856f, + 0.506186645f, -0.862423956f, + 0.508830143f, -0.860866939f, + 0.511468850f, -0.859301818f, + 0.514102744f, -0.857728610f, + 0.516731799f, -0.856147328f, + 0.519355990f, -0.854557988f, + 0.521975293f, -0.852960605f, + 0.524589683f, -0.851355193f, + 0.527199135f, -0.849741768f, + 0.529803625f, -0.848120345f, + 0.532403128f, -0.846490939f, + 0.534997620f, -0.844853565f, + 0.537587076f, -0.843208240f, + 0.540171473f, -0.841554977f, + 0.542750785f, -0.839893794f, + 0.545324988f, -0.838224706f, + 0.547894059f, -0.836547727f, + 0.550457973f, -0.834862875f, + 0.553016706f, -0.833170165f, + 0.555570233f, -0.831469612f, + 0.558118531f, -0.829761234f, + 0.560661576f, -0.828045045f, + 0.563199344f, -0.826321063f, + 0.565731811f, -0.824589303f, + 0.568258953f, -0.822849781f, + 0.570780746f, -0.821102515f, + 0.573297167f, -0.819347520f, + 0.575808191f, -0.817584813f, + 0.578313796f, -0.815814411f, + 0.580813958f, -0.814036330f, + 0.583308653f, -0.812250587f, + 0.585797857f, -0.810457198f, + 0.588281548f, -0.808656182f, + 0.590759702f, -0.806847554f, + 0.593232295f, -0.805031331f, + 0.595699304f, -0.803207531f, + 0.598160707f, -0.801376172f, + 0.600616479f, -0.799537269f, + 0.603066599f, -0.797690841f, + 0.605511041f, -0.795836905f, + 0.607949785f, -0.793975478f, + 0.610382806f, -0.792106577f, + 0.612810082f, -0.790230221f, + 0.615231591f, -0.788346428f, + 0.617647308f, -0.786455214f, + 0.620057212f, -0.784556597f, + 0.622461279f, -0.782650596f, + 0.624859488f, -0.780737229f, + 0.627251815f, -0.778816512f, + 0.629638239f, -0.776888466f, + 0.632018736f, -0.774953107f, + 0.634393284f, -0.773010453f, + 0.636761861f, -0.771060524f, + 0.639124445f, -0.769103338f, + 0.641481013f, -0.767138912f, + 0.643831543f, -0.765167266f, + 0.646176013f, -0.763188417f, + 0.648514401f, -0.761202385f, + 0.650846685f, -0.759209189f, + 0.653172843f, -0.757208847f, + 0.655492853f, -0.755201377f, + 0.657806693f, -0.753186799f, + 0.660114342f, -0.751165132f, + 0.662415778f, -0.749136395f, + 0.664710978f, -0.747100606f, + 0.666999922f, -0.745057785f, + 0.669282588f, -0.743007952f, + 0.671558955f, -0.740951125f, + 0.673829000f, -0.738887324f, + 0.676092704f, -0.736816569f, + 0.678350043f, -0.734738878f, + 0.680600998f, -0.732654272f, + 0.682845546f, -0.730562769f, + 0.685083668f, -0.728464390f, + 0.687315341f, -0.726359155f, + 0.689540545f, -0.724247083f, + 0.691759258f, -0.722128194f, + 0.693971461f, -0.720002508f, + 0.696177131f, -0.717870045f, + 0.698376249f, -0.715730825f, + 0.700568794f, -0.713584869f, + 0.702754744f, -0.711432196f, + 0.704934080f, -0.709272826f, + 0.707106781f, -0.707106781f, + 0.709272826f, -0.704934080f, + 0.711432196f, -0.702754744f, + 0.713584869f, -0.700568794f, + 0.715730825f, -0.698376249f, + 0.717870045f, -0.696177131f, + 0.720002508f, -0.693971461f, + 0.722128194f, -0.691759258f, + 0.724247083f, -0.689540545f, + 0.726359155f, -0.687315341f, + 0.728464390f, -0.685083668f, + 0.730562769f, -0.682845546f, + 0.732654272f, -0.680600998f, + 0.734738878f, -0.678350043f, + 0.736816569f, -0.676092704f, + 0.738887324f, -0.673829000f, + 0.740951125f, -0.671558955f, + 0.743007952f, -0.669282588f, + 0.745057785f, -0.666999922f, + 0.747100606f, -0.664710978f, + 0.749136395f, -0.662415778f, + 0.751165132f, -0.660114342f, + 0.753186799f, -0.657806693f, + 0.755201377f, -0.655492853f, + 0.757208847f, -0.653172843f, + 0.759209189f, -0.650846685f, + 0.761202385f, -0.648514401f, + 0.763188417f, -0.646176013f, + 0.765167266f, -0.643831543f, + 0.767138912f, -0.641481013f, + 0.769103338f, -0.639124445f, + 0.771060524f, -0.636761861f, + 0.773010453f, -0.634393284f, + 0.774953107f, -0.632018736f, + 0.776888466f, -0.629638239f, + 0.778816512f, -0.627251815f, + 0.780737229f, -0.624859488f, + 0.782650596f, -0.622461279f, + 0.784556597f, -0.620057212f, + 0.786455214f, -0.617647308f, + 0.788346428f, -0.615231591f, + 0.790230221f, -0.612810082f, + 0.792106577f, -0.610382806f, + 0.793975478f, -0.607949785f, + 0.795836905f, -0.605511041f, + 0.797690841f, -0.603066599f, + 0.799537269f, -0.600616479f, + 0.801376172f, -0.598160707f, + 0.803207531f, -0.595699304f, + 0.805031331f, -0.593232295f, + 0.806847554f, -0.590759702f, + 0.808656182f, -0.588281548f, + 0.810457198f, -0.585797857f, + 0.812250587f, -0.583308653f, + 0.814036330f, -0.580813958f, + 0.815814411f, -0.578313796f, + 0.817584813f, -0.575808191f, + 0.819347520f, -0.573297167f, + 0.821102515f, -0.570780746f, + 0.822849781f, -0.568258953f, + 0.824589303f, -0.565731811f, + 0.826321063f, -0.563199344f, + 0.828045045f, -0.560661576f, + 0.829761234f, -0.558118531f, + 0.831469612f, -0.555570233f, + 0.833170165f, -0.553016706f, + 0.834862875f, -0.550457973f, + 0.836547727f, -0.547894059f, + 0.838224706f, -0.545324988f, + 0.839893794f, -0.542750785f, + 0.841554977f, -0.540171473f, + 0.843208240f, -0.537587076f, + 0.844853565f, -0.534997620f, + 0.846490939f, -0.532403128f, + 0.848120345f, -0.529803625f, + 0.849741768f, -0.527199135f, + 0.851355193f, -0.524589683f, + 0.852960605f, -0.521975293f, + 0.854557988f, -0.519355990f, + 0.856147328f, -0.516731799f, + 0.857728610f, -0.514102744f, + 0.859301818f, -0.511468850f, + 0.860866939f, -0.508830143f, + 0.862423956f, -0.506186645f, + 0.863972856f, -0.503538384f, + 0.865513624f, -0.500885383f, + 0.867046246f, -0.498227667f, + 0.868570706f, -0.495565262f, + 0.870086991f, -0.492898192f, + 0.871595087f, -0.490226483f, + 0.873094978f, -0.487550160f, + 0.874586652f, -0.484869248f, + 0.876070094f, -0.482183772f, + 0.877545290f, -0.479493758f, + 0.879012226f, -0.476799230f, + 0.880470889f, -0.474100215f, + 0.881921264f, -0.471396737f, + 0.883363339f, -0.468688822f, + 0.884797098f, -0.465976496f, + 0.886222530f, -0.463259784f, + 0.887639620f, -0.460538711f, + 0.889048356f, -0.457813304f, + 0.890448723f, -0.455083587f, + 0.891840709f, -0.452349587f, + 0.893224301f, -0.449611330f, + 0.894599486f, -0.446868840f, + 0.895966250f, -0.444122145f, + 0.897324581f, -0.441371269f, + 0.898674466f, -0.438616239f, + 0.900015892f, -0.435857080f, + 0.901348847f, -0.433093819f, + 0.902673318f, -0.430326481f, + 0.903989293f, -0.427555093f, + 0.905296759f, -0.424779681f, + 0.906595705f, -0.422000271f, + 0.907886116f, -0.419216888f, + 0.909167983f, -0.416429560f, + 0.910441292f, -0.413638312f, + 0.911706032f, -0.410843171f, + 0.912962190f, -0.408044163f, + 0.914209756f, -0.405241314f, + 0.915448716f, -0.402434651f, + 0.916679060f, -0.399624200f, + 0.917900776f, -0.396809987f, + 0.919113852f, -0.393992040f, + 0.920318277f, -0.391170384f, + 0.921514039f, -0.388345047f, + 0.922701128f, -0.385516054f, + 0.923879533f, -0.382683432f, + 0.925049241f, -0.379847209f, + 0.926210242f, -0.377007410f, + 0.927362526f, -0.374164063f, + 0.928506080f, -0.371317194f, + 0.929640896f, -0.368466830f, + 0.930766961f, -0.365612998f, + 0.931884266f, -0.362755724f, + 0.932992799f, -0.359895037f, + 0.934092550f, -0.357030961f, + 0.935183510f, -0.354163525f, + 0.936265667f, -0.351292756f, + 0.937339012f, -0.348418680f, + 0.938403534f, -0.345541325f, + 0.939459224f, -0.342660717f, + 0.940506071f, -0.339776884f, + 0.941544065f, -0.336889853f, + 0.942573198f, -0.333999651f, + 0.943593458f, -0.331106306f, + 0.944604837f, -0.328209844f, + 0.945607325f, -0.325310292f, + 0.946600913f, -0.322407679f, + 0.947585591f, -0.319502031f, + 0.948561350f, -0.316593376f, + 0.949528181f, -0.313681740f, + 0.950486074f, -0.310767153f, + 0.951435021f, -0.307849640f, + 0.952375013f, -0.304929230f, + 0.953306040f, -0.302005949f, + 0.954228095f, -0.299079826f, + 0.955141168f, -0.296150888f, + 0.956045251f, -0.293219163f, + 0.956940336f, -0.290284677f, + 0.957826413f, -0.287347460f, + 0.958703475f, -0.284407537f, + 0.959571513f, -0.281464938f, + 0.960430519f, -0.278519689f, + 0.961280486f, -0.275571819f, + 0.962121404f, -0.272621355f, + 0.962953267f, -0.269668326f, + 0.963776066f, -0.266712757f, + 0.964589793f, -0.263754679f, + 0.965394442f, -0.260794118f, + 0.966190003f, -0.257831102f, + 0.966976471f, -0.254865660f, + 0.967753837f, -0.251897818f, + 0.968522094f, -0.248927606f, + 0.969281235f, -0.245955050f, + 0.970031253f, -0.242980180f, + 0.970772141f, -0.240003022f, + 0.971503891f, -0.237023606f, + 0.972226497f, -0.234041959f, + 0.972939952f, -0.231058108f, + 0.973644250f, -0.228072083f, + 0.974339383f, -0.225083911f, + 0.975025345f, -0.222093621f, + 0.975702130f, -0.219101240f, + 0.976369731f, -0.216106797f, + 0.977028143f, -0.213110320f, + 0.977677358f, -0.210111837f, + 0.978317371f, -0.207111376f, + 0.978948175f, -0.204108966f, + 0.979569766f, -0.201104635f, + 0.980182136f, -0.198098411f, + 0.980785280f, -0.195090322f, + 0.981379193f, -0.192080397f, + 0.981963869f, -0.189068664f, + 0.982539302f, -0.186055152f, + 0.983105487f, -0.183039888f, + 0.983662419f, -0.180022901f, + 0.984210092f, -0.177004220f, + 0.984748502f, -0.173983873f, + 0.985277642f, -0.170961889f, + 0.985797509f, -0.167938295f, + 0.986308097f, -0.164913120f, + 0.986809402f, -0.161886394f, + 0.987301418f, -0.158858143f, + 0.987784142f, -0.155828398f, + 0.988257568f, -0.152797185f, + 0.988721692f, -0.149764535f, + 0.989176510f, -0.146730474f, + 0.989622017f, -0.143695033f, + 0.990058210f, -0.140658239f, + 0.990485084f, -0.137620122f, + 0.990902635f, -0.134580709f, + 0.991310860f, -0.131540029f, + 0.991709754f, -0.128498111f, + 0.992099313f, -0.125454983f, + 0.992479535f, -0.122410675f, + 0.992850414f, -0.119365215f, + 0.993211949f, -0.116318631f, + 0.993564136f, -0.113270952f, + 0.993906970f, -0.110222207f, + 0.994240449f, -0.107172425f, + 0.994564571f, -0.104121634f, + 0.994879331f, -0.101069863f, + 0.995184727f, -0.098017140f, + 0.995480755f, -0.094963495f, + 0.995767414f, -0.091908956f, + 0.996044701f, -0.088853553f, + 0.996312612f, -0.085797312f, + 0.996571146f, -0.082740265f, + 0.996820299f, -0.079682438f, + 0.997060070f, -0.076623861f, + 0.997290457f, -0.073564564f, + 0.997511456f, -0.070504573f, + 0.997723067f, -0.067443920f, + 0.997925286f, -0.064382631f, + 0.998118113f, -0.061320736f, + 0.998301545f, -0.058258265f, + 0.998475581f, -0.055195244f, + 0.998640218f, -0.052131705f, + 0.998795456f, -0.049067674f, + 0.998941293f, -0.046003182f, + 0.999077728f, -0.042938257f, + 0.999204759f, -0.039872928f, + 0.999322385f, -0.036807223f, + 0.999430605f, -0.033741172f, + 0.999529418f, -0.030674803f, + 0.999618822f, -0.027608146f, + 0.999698819f, -0.024541229f, + 0.999769405f, -0.021474080f, + 0.999830582f, -0.018406730f, + 0.999882347f, -0.015339206f, + 0.999924702f, -0.012271538f, + 0.999957645f, -0.009203755f, + 0.999981175f, -0.006135885f, + 0.999995294f, -0.003067957f +}; + +/** +* \par +* Example code for Floating-point Twiddle factors Generation: +* \par +*
for(i = 0; i< N/; i++)
+* {
+*	twiddleCoef[2*i]= cos(i * 2*PI/(float)N);
+*	twiddleCoef[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 4096 and PI = 3.14159265358979 +* \par +* Cos and Sin values are in interleaved fashion +* +*/ +const float32_t twiddleCoef_4096[8192] = { + 1.000000000f, 0.000000000f, + 0.999998823f, 0.001533980f, + 0.999995294f, 0.003067957f, + 0.999989411f, 0.004601926f, + 0.999981175f, 0.006135885f, + 0.999970586f, 0.007669829f, + 0.999957645f, 0.009203755f, + 0.999942350f, 0.010737659f, + 0.999924702f, 0.012271538f, + 0.999904701f, 0.013805389f, + 0.999882347f, 0.015339206f, + 0.999857641f, 0.016872988f, + 0.999830582f, 0.018406730f, + 0.999801170f, 0.019940429f, + 0.999769405f, 0.021474080f, + 0.999735288f, 0.023007681f, + 0.999698819f, 0.024541229f, + 0.999659997f, 0.026074718f, + 0.999618822f, 0.027608146f, + 0.999575296f, 0.029141509f, + 0.999529418f, 0.030674803f, + 0.999481187f, 0.032208025f, + 0.999430605f, 0.033741172f, + 0.999377670f, 0.035274239f, + 0.999322385f, 0.036807223f, + 0.999264747f, 0.038340120f, + 0.999204759f, 0.039872928f, + 0.999142419f, 0.041405641f, + 0.999077728f, 0.042938257f, + 0.999010686f, 0.044470772f, + 0.998941293f, 0.046003182f, + 0.998869550f, 0.047535484f, + 0.998795456f, 0.049067674f, + 0.998719012f, 0.050599749f, + 0.998640218f, 0.052131705f, + 0.998559074f, 0.053663538f, + 0.998475581f, 0.055195244f, + 0.998389737f, 0.056726821f, + 0.998301545f, 0.058258265f, + 0.998211003f, 0.059789571f, + 0.998118113f, 0.061320736f, + 0.998022874f, 0.062851758f, + 0.997925286f, 0.064382631f, + 0.997825350f, 0.065913353f, + 0.997723067f, 0.067443920f, + 0.997618435f, 0.068974328f, + 0.997511456f, 0.070504573f, + 0.997402130f, 0.072034653f, + 0.997290457f, 0.073564564f, + 0.997176437f, 0.075094301f, + 0.997060070f, 0.076623861f, + 0.996941358f, 0.078153242f, + 0.996820299f, 0.079682438f, + 0.996696895f, 0.081211447f, + 0.996571146f, 0.082740265f, + 0.996443051f, 0.084268888f, + 0.996312612f, 0.085797312f, + 0.996179829f, 0.087325535f, + 0.996044701f, 0.088853553f, + 0.995907229f, 0.090381361f, + 0.995767414f, 0.091908956f, + 0.995625256f, 0.093436336f, + 0.995480755f, 0.094963495f, + 0.995333912f, 0.096490431f, + 0.995184727f, 0.098017140f, + 0.995033199f, 0.099543619f, + 0.994879331f, 0.101069863f, + 0.994723121f, 0.102595869f, + 0.994564571f, 0.104121634f, + 0.994403680f, 0.105647154f, + 0.994240449f, 0.107172425f, + 0.994074879f, 0.108697444f, + 0.993906970f, 0.110222207f, + 0.993736722f, 0.111746711f, + 0.993564136f, 0.113270952f, + 0.993389211f, 0.114794927f, + 0.993211949f, 0.116318631f, + 0.993032350f, 0.117842062f, + 0.992850414f, 0.119365215f, + 0.992666142f, 0.120888087f, + 0.992479535f, 0.122410675f, + 0.992290591f, 0.123932975f, + 0.992099313f, 0.125454983f, + 0.991905700f, 0.126976696f, + 0.991709754f, 0.128498111f, + 0.991511473f, 0.130019223f, + 0.991310860f, 0.131540029f, + 0.991107914f, 0.133060525f, + 0.990902635f, 0.134580709f, + 0.990695025f, 0.136100575f, + 0.990485084f, 0.137620122f, + 0.990272812f, 0.139139344f, + 0.990058210f, 0.140658239f, + 0.989841278f, 0.142176804f, + 0.989622017f, 0.143695033f, + 0.989400428f, 0.145212925f, + 0.989176510f, 0.146730474f, + 0.988950265f, 0.148247679f, + 0.988721692f, 0.149764535f, + 0.988490793f, 0.151281038f, + 0.988257568f, 0.152797185f, + 0.988022017f, 0.154312973f, + 0.987784142f, 0.155828398f, + 0.987543942f, 0.157343456f, + 0.987301418f, 0.158858143f, + 0.987056571f, 0.160372457f, + 0.986809402f, 0.161886394f, + 0.986559910f, 0.163399949f, + 0.986308097f, 0.164913120f, + 0.986053963f, 0.166425904f, + 0.985797509f, 0.167938295f, + 0.985538735f, 0.169450291f, + 0.985277642f, 0.170961889f, + 0.985014231f, 0.172473084f, + 0.984748502f, 0.173983873f, + 0.984480455f, 0.175494253f, + 0.984210092f, 0.177004220f, + 0.983937413f, 0.178513771f, + 0.983662419f, 0.180022901f, + 0.983385110f, 0.181531608f, + 0.983105487f, 0.183039888f, + 0.982823551f, 0.184547737f, + 0.982539302f, 0.186055152f, + 0.982252741f, 0.187562129f, + 0.981963869f, 0.189068664f, + 0.981672686f, 0.190574755f, + 0.981379193f, 0.192080397f, + 0.981083391f, 0.193585587f, + 0.980785280f, 0.195090322f, + 0.980484862f, 0.196594598f, + 0.980182136f, 0.198098411f, + 0.979877104f, 0.199601758f, + 0.979569766f, 0.201104635f, + 0.979260123f, 0.202607039f, + 0.978948175f, 0.204108966f, + 0.978633924f, 0.205610413f, + 0.978317371f, 0.207111376f, + 0.977998515f, 0.208611852f, + 0.977677358f, 0.210111837f, + 0.977353900f, 0.211611327f, + 0.977028143f, 0.213110320f, + 0.976700086f, 0.214608811f, + 0.976369731f, 0.216106797f, + 0.976037079f, 0.217604275f, + 0.975702130f, 0.219101240f, + 0.975364885f, 0.220597690f, + 0.975025345f, 0.222093621f, + 0.974683511f, 0.223589029f, + 0.974339383f, 0.225083911f, + 0.973992962f, 0.226578264f, + 0.973644250f, 0.228072083f, + 0.973293246f, 0.229565366f, + 0.972939952f, 0.231058108f, + 0.972584369f, 0.232550307f, + 0.972226497f, 0.234041959f, + 0.971866337f, 0.235533059f, + 0.971503891f, 0.237023606f, + 0.971139158f, 0.238513595f, + 0.970772141f, 0.240003022f, + 0.970402839f, 0.241491885f, + 0.970031253f, 0.242980180f, + 0.969657385f, 0.244467903f, + 0.969281235f, 0.245955050f, + 0.968902805f, 0.247441619f, + 0.968522094f, 0.248927606f, + 0.968139105f, 0.250413007f, + 0.967753837f, 0.251897818f, + 0.967366292f, 0.253382037f, + 0.966976471f, 0.254865660f, + 0.966584374f, 0.256348682f, + 0.966190003f, 0.257831102f, + 0.965793359f, 0.259312915f, + 0.965394442f, 0.260794118f, + 0.964993253f, 0.262274707f, + 0.964589793f, 0.263754679f, + 0.964184064f, 0.265234030f, + 0.963776066f, 0.266712757f, + 0.963365800f, 0.268190857f, + 0.962953267f, 0.269668326f, + 0.962538468f, 0.271145160f, + 0.962121404f, 0.272621355f, + 0.961702077f, 0.274096910f, + 0.961280486f, 0.275571819f, + 0.960856633f, 0.277046080f, + 0.960430519f, 0.278519689f, + 0.960002146f, 0.279992643f, + 0.959571513f, 0.281464938f, + 0.959138622f, 0.282936570f, + 0.958703475f, 0.284407537f, + 0.958266071f, 0.285877835f, + 0.957826413f, 0.287347460f, + 0.957384501f, 0.288816408f, + 0.956940336f, 0.290284677f, + 0.956493919f, 0.291752263f, + 0.956045251f, 0.293219163f, + 0.955594334f, 0.294685372f, + 0.955141168f, 0.296150888f, + 0.954685755f, 0.297615707f, + 0.954228095f, 0.299079826f, + 0.953768190f, 0.300543241f, + 0.953306040f, 0.302005949f, + 0.952841648f, 0.303467947f, + 0.952375013f, 0.304929230f, + 0.951906137f, 0.306389795f, + 0.951435021f, 0.307849640f, + 0.950961666f, 0.309308760f, + 0.950486074f, 0.310767153f, + 0.950008245f, 0.312224814f, + 0.949528181f, 0.313681740f, + 0.949045882f, 0.315137929f, + 0.948561350f, 0.316593376f, + 0.948074586f, 0.318048077f, + 0.947585591f, 0.319502031f, + 0.947094366f, 0.320955232f, + 0.946600913f, 0.322407679f, + 0.946105232f, 0.323859367f, + 0.945607325f, 0.325310292f, + 0.945107193f, 0.326760452f, + 0.944604837f, 0.328209844f, + 0.944100258f, 0.329658463f, + 0.943593458f, 0.331106306f, + 0.943084437f, 0.332553370f, + 0.942573198f, 0.333999651f, + 0.942059740f, 0.335445147f, + 0.941544065f, 0.336889853f, + 0.941026175f, 0.338333767f, + 0.940506071f, 0.339776884f, + 0.939983753f, 0.341219202f, + 0.939459224f, 0.342660717f, + 0.938932484f, 0.344101426f, + 0.938403534f, 0.345541325f, + 0.937872376f, 0.346980411f, + 0.937339012f, 0.348418680f, + 0.936803442f, 0.349856130f, + 0.936265667f, 0.351292756f, + 0.935725689f, 0.352728556f, + 0.935183510f, 0.354163525f, + 0.934639130f, 0.355597662f, + 0.934092550f, 0.357030961f, + 0.933543773f, 0.358463421f, + 0.932992799f, 0.359895037f, + 0.932439629f, 0.361325806f, + 0.931884266f, 0.362755724f, + 0.931326709f, 0.364184790f, + 0.930766961f, 0.365612998f, + 0.930205023f, 0.367040346f, + 0.929640896f, 0.368466830f, + 0.929074581f, 0.369892447f, + 0.928506080f, 0.371317194f, + 0.927935395f, 0.372741067f, + 0.927362526f, 0.374164063f, + 0.926787474f, 0.375586178f, + 0.926210242f, 0.377007410f, + 0.925630831f, 0.378427755f, + 0.925049241f, 0.379847209f, + 0.924465474f, 0.381265769f, + 0.923879533f, 0.382683432f, + 0.923291417f, 0.384100195f, + 0.922701128f, 0.385516054f, + 0.922108669f, 0.386931006f, + 0.921514039f, 0.388345047f, + 0.920917242f, 0.389758174f, + 0.920318277f, 0.391170384f, + 0.919717146f, 0.392581674f, + 0.919113852f, 0.393992040f, + 0.918508394f, 0.395401479f, + 0.917900776f, 0.396809987f, + 0.917290997f, 0.398217562f, + 0.916679060f, 0.399624200f, + 0.916064966f, 0.401029897f, + 0.915448716f, 0.402434651f, + 0.914830312f, 0.403838458f, + 0.914209756f, 0.405241314f, + 0.913587048f, 0.406643217f, + 0.912962190f, 0.408044163f, + 0.912335185f, 0.409444149f, + 0.911706032f, 0.410843171f, + 0.911074734f, 0.412241227f, + 0.910441292f, 0.413638312f, + 0.909805708f, 0.415034424f, + 0.909167983f, 0.416429560f, + 0.908528119f, 0.417823716f, + 0.907886116f, 0.419216888f, + 0.907241978f, 0.420609074f, + 0.906595705f, 0.422000271f, + 0.905947298f, 0.423390474f, + 0.905296759f, 0.424779681f, + 0.904644091f, 0.426167889f, + 0.903989293f, 0.427555093f, + 0.903332368f, 0.428941292f, + 0.902673318f, 0.430326481f, + 0.902012144f, 0.431710658f, + 0.901348847f, 0.433093819f, + 0.900683429f, 0.434475961f, + 0.900015892f, 0.435857080f, + 0.899346237f, 0.437237174f, + 0.898674466f, 0.438616239f, + 0.898000580f, 0.439994271f, + 0.897324581f, 0.441371269f, + 0.896646470f, 0.442747228f, + 0.895966250f, 0.444122145f, + 0.895283921f, 0.445496017f, + 0.894599486f, 0.446868840f, + 0.893912945f, 0.448240612f, + 0.893224301f, 0.449611330f, + 0.892533555f, 0.450980989f, + 0.891840709f, 0.452349587f, + 0.891145765f, 0.453717121f, + 0.890448723f, 0.455083587f, + 0.889749586f, 0.456448982f, + 0.889048356f, 0.457813304f, + 0.888345033f, 0.459176548f, + 0.887639620f, 0.460538711f, + 0.886932119f, 0.461899791f, + 0.886222530f, 0.463259784f, + 0.885510856f, 0.464618686f, + 0.884797098f, 0.465976496f, + 0.884081259f, 0.467333209f, + 0.883363339f, 0.468688822f, + 0.882643340f, 0.470043332f, + 0.881921264f, 0.471396737f, + 0.881197113f, 0.472749032f, + 0.880470889f, 0.474100215f, + 0.879742593f, 0.475450282f, + 0.879012226f, 0.476799230f, + 0.878279792f, 0.478147056f, + 0.877545290f, 0.479493758f, + 0.876808724f, 0.480839331f, + 0.876070094f, 0.482183772f, + 0.875329403f, 0.483527079f, + 0.874586652f, 0.484869248f, + 0.873841843f, 0.486210276f, + 0.873094978f, 0.487550160f, + 0.872346059f, 0.488888897f, + 0.871595087f, 0.490226483f, + 0.870842063f, 0.491562916f, + 0.870086991f, 0.492898192f, + 0.869329871f, 0.494232309f, + 0.868570706f, 0.495565262f, + 0.867809497f, 0.496897049f, + 0.867046246f, 0.498227667f, + 0.866280954f, 0.499557113f, + 0.865513624f, 0.500885383f, + 0.864744258f, 0.502212474f, + 0.863972856f, 0.503538384f, + 0.863199422f, 0.504863109f, + 0.862423956f, 0.506186645f, + 0.861646461f, 0.507508991f, + 0.860866939f, 0.508830143f, + 0.860085390f, 0.510150097f, + 0.859301818f, 0.511468850f, + 0.858516224f, 0.512786401f, + 0.857728610f, 0.514102744f, + 0.856938977f, 0.515417878f, + 0.856147328f, 0.516731799f, + 0.855353665f, 0.518044504f, + 0.854557988f, 0.519355990f, + 0.853760301f, 0.520666254f, + 0.852960605f, 0.521975293f, + 0.852158902f, 0.523283103f, + 0.851355193f, 0.524589683f, + 0.850549481f, 0.525895027f, + 0.849741768f, 0.527199135f, + 0.848932055f, 0.528502002f, + 0.848120345f, 0.529803625f, + 0.847306639f, 0.531104001f, + 0.846490939f, 0.532403128f, + 0.845673247f, 0.533701002f, + 0.844853565f, 0.534997620f, + 0.844031895f, 0.536292979f, + 0.843208240f, 0.537587076f, + 0.842382600f, 0.538879909f, + 0.841554977f, 0.540171473f, + 0.840725375f, 0.541461766f, + 0.839893794f, 0.542750785f, + 0.839060237f, 0.544038527f, + 0.838224706f, 0.545324988f, + 0.837387202f, 0.546610167f, + 0.836547727f, 0.547894059f, + 0.835706284f, 0.549176662f, + 0.834862875f, 0.550457973f, + 0.834017501f, 0.551737988f, + 0.833170165f, 0.553016706f, + 0.832320868f, 0.554294121f, + 0.831469612f, 0.555570233f, + 0.830616400f, 0.556845037f, + 0.829761234f, 0.558118531f, + 0.828904115f, 0.559390712f, + 0.828045045f, 0.560661576f, + 0.827184027f, 0.561931121f, + 0.826321063f, 0.563199344f, + 0.825456154f, 0.564466242f, + 0.824589303f, 0.565731811f, + 0.823720511f, 0.566996049f, + 0.822849781f, 0.568258953f, + 0.821977115f, 0.569520519f, + 0.821102515f, 0.570780746f, + 0.820225983f, 0.572039629f, + 0.819347520f, 0.573297167f, + 0.818467130f, 0.574553355f, + 0.817584813f, 0.575808191f, + 0.816700573f, 0.577061673f, + 0.815814411f, 0.578313796f, + 0.814926329f, 0.579564559f, + 0.814036330f, 0.580813958f, + 0.813144415f, 0.582061990f, + 0.812250587f, 0.583308653f, + 0.811354847f, 0.584553943f, + 0.810457198f, 0.585797857f, + 0.809557642f, 0.587040394f, + 0.808656182f, 0.588281548f, + 0.807752818f, 0.589521319f, + 0.806847554f, 0.590759702f, + 0.805940391f, 0.591996695f, + 0.805031331f, 0.593232295f, + 0.804120377f, 0.594466499f, + 0.803207531f, 0.595699304f, + 0.802292796f, 0.596930708f, + 0.801376172f, 0.598160707f, + 0.800457662f, 0.599389298f, + 0.799537269f, 0.600616479f, + 0.798614995f, 0.601842247f, + 0.797690841f, 0.603066599f, + 0.796764810f, 0.604289531f, + 0.795836905f, 0.605511041f, + 0.794907126f, 0.606731127f, + 0.793975478f, 0.607949785f, + 0.793041960f, 0.609167012f, + 0.792106577f, 0.610382806f, + 0.791169330f, 0.611597164f, + 0.790230221f, 0.612810082f, + 0.789289253f, 0.614021559f, + 0.788346428f, 0.615231591f, + 0.787401747f, 0.616440175f, + 0.786455214f, 0.617647308f, + 0.785506830f, 0.618852988f, + 0.784556597f, 0.620057212f, + 0.783604519f, 0.621259977f, + 0.782650596f, 0.622461279f, + 0.781694832f, 0.623661118f, + 0.780737229f, 0.624859488f, + 0.779777788f, 0.626056388f, + 0.778816512f, 0.627251815f, + 0.777853404f, 0.628445767f, + 0.776888466f, 0.629638239f, + 0.775921699f, 0.630829230f, + 0.774953107f, 0.632018736f, + 0.773982691f, 0.633206755f, + 0.773010453f, 0.634393284f, + 0.772036397f, 0.635578320f, + 0.771060524f, 0.636761861f, + 0.770082837f, 0.637943904f, + 0.769103338f, 0.639124445f, + 0.768122029f, 0.640303482f, + 0.767138912f, 0.641481013f, + 0.766153990f, 0.642657034f, + 0.765167266f, 0.643831543f, + 0.764178741f, 0.645004537f, + 0.763188417f, 0.646176013f, + 0.762196298f, 0.647345969f, + 0.761202385f, 0.648514401f, + 0.760206682f, 0.649681307f, + 0.759209189f, 0.650846685f, + 0.758209910f, 0.652010531f, + 0.757208847f, 0.653172843f, + 0.756206001f, 0.654333618f, + 0.755201377f, 0.655492853f, + 0.754194975f, 0.656650546f, + 0.753186799f, 0.657806693f, + 0.752176850f, 0.658961293f, + 0.751165132f, 0.660114342f, + 0.750151646f, 0.661265838f, + 0.749136395f, 0.662415778f, + 0.748119380f, 0.663564159f, + 0.747100606f, 0.664710978f, + 0.746080074f, 0.665856234f, + 0.745057785f, 0.666999922f, + 0.744033744f, 0.668142041f, + 0.743007952f, 0.669282588f, + 0.741980412f, 0.670421560f, + 0.740951125f, 0.671558955f, + 0.739920095f, 0.672694769f, + 0.738887324f, 0.673829000f, + 0.737852815f, 0.674961646f, + 0.736816569f, 0.676092704f, + 0.735778589f, 0.677222170f, + 0.734738878f, 0.678350043f, + 0.733697438f, 0.679476320f, + 0.732654272f, 0.680600998f, + 0.731609381f, 0.681724074f, + 0.730562769f, 0.682845546f, + 0.729514438f, 0.683965412f, + 0.728464390f, 0.685083668f, + 0.727412629f, 0.686200312f, + 0.726359155f, 0.687315341f, + 0.725303972f, 0.688428753f, + 0.724247083f, 0.689540545f, + 0.723188489f, 0.690650714f, + 0.722128194f, 0.691759258f, + 0.721066199f, 0.692866175f, + 0.720002508f, 0.693971461f, + 0.718937122f, 0.695075114f, + 0.717870045f, 0.696177131f, + 0.716801279f, 0.697277511f, + 0.715730825f, 0.698376249f, + 0.714658688f, 0.699473345f, + 0.713584869f, 0.700568794f, + 0.712509371f, 0.701662595f, + 0.711432196f, 0.702754744f, + 0.710353347f, 0.703845241f, + 0.709272826f, 0.704934080f, + 0.708190637f, 0.706021261f, + 0.707106781f, 0.707106781f, + 0.706021261f, 0.708190637f, + 0.704934080f, 0.709272826f, + 0.703845241f, 0.710353347f, + 0.702754744f, 0.711432196f, + 0.701662595f, 0.712509371f, + 0.700568794f, 0.713584869f, + 0.699473345f, 0.714658688f, + 0.698376249f, 0.715730825f, + 0.697277511f, 0.716801279f, + 0.696177131f, 0.717870045f, + 0.695075114f, 0.718937122f, + 0.693971461f, 0.720002508f, + 0.692866175f, 0.721066199f, + 0.691759258f, 0.722128194f, + 0.690650714f, 0.723188489f, + 0.689540545f, 0.724247083f, + 0.688428753f, 0.725303972f, + 0.687315341f, 0.726359155f, + 0.686200312f, 0.727412629f, + 0.685083668f, 0.728464390f, + 0.683965412f, 0.729514438f, + 0.682845546f, 0.730562769f, + 0.681724074f, 0.731609381f, + 0.680600998f, 0.732654272f, + 0.679476320f, 0.733697438f, + 0.678350043f, 0.734738878f, + 0.677222170f, 0.735778589f, + 0.676092704f, 0.736816569f, + 0.674961646f, 0.737852815f, + 0.673829000f, 0.738887324f, + 0.672694769f, 0.739920095f, + 0.671558955f, 0.740951125f, + 0.670421560f, 0.741980412f, + 0.669282588f, 0.743007952f, + 0.668142041f, 0.744033744f, + 0.666999922f, 0.745057785f, + 0.665856234f, 0.746080074f, + 0.664710978f, 0.747100606f, + 0.663564159f, 0.748119380f, + 0.662415778f, 0.749136395f, + 0.661265838f, 0.750151646f, + 0.660114342f, 0.751165132f, + 0.658961293f, 0.752176850f, + 0.657806693f, 0.753186799f, + 0.656650546f, 0.754194975f, + 0.655492853f, 0.755201377f, + 0.654333618f, 0.756206001f, + 0.653172843f, 0.757208847f, + 0.652010531f, 0.758209910f, + 0.650846685f, 0.759209189f, + 0.649681307f, 0.760206682f, + 0.648514401f, 0.761202385f, + 0.647345969f, 0.762196298f, + 0.646176013f, 0.763188417f, + 0.645004537f, 0.764178741f, + 0.643831543f, 0.765167266f, + 0.642657034f, 0.766153990f, + 0.641481013f, 0.767138912f, + 0.640303482f, 0.768122029f, + 0.639124445f, 0.769103338f, + 0.637943904f, 0.770082837f, + 0.636761861f, 0.771060524f, + 0.635578320f, 0.772036397f, + 0.634393284f, 0.773010453f, + 0.633206755f, 0.773982691f, + 0.632018736f, 0.774953107f, + 0.630829230f, 0.775921699f, + 0.629638239f, 0.776888466f, + 0.628445767f, 0.777853404f, + 0.627251815f, 0.778816512f, + 0.626056388f, 0.779777788f, + 0.624859488f, 0.780737229f, + 0.623661118f, 0.781694832f, + 0.622461279f, 0.782650596f, + 0.621259977f, 0.783604519f, + 0.620057212f, 0.784556597f, + 0.618852988f, 0.785506830f, + 0.617647308f, 0.786455214f, + 0.616440175f, 0.787401747f, + 0.615231591f, 0.788346428f, + 0.614021559f, 0.789289253f, + 0.612810082f, 0.790230221f, + 0.611597164f, 0.791169330f, + 0.610382806f, 0.792106577f, + 0.609167012f, 0.793041960f, + 0.607949785f, 0.793975478f, + 0.606731127f, 0.794907126f, + 0.605511041f, 0.795836905f, + 0.604289531f, 0.796764810f, + 0.603066599f, 0.797690841f, + 0.601842247f, 0.798614995f, + 0.600616479f, 0.799537269f, + 0.599389298f, 0.800457662f, + 0.598160707f, 0.801376172f, + 0.596930708f, 0.802292796f, + 0.595699304f, 0.803207531f, + 0.594466499f, 0.804120377f, + 0.593232295f, 0.805031331f, + 0.591996695f, 0.805940391f, + 0.590759702f, 0.806847554f, + 0.589521319f, 0.807752818f, + 0.588281548f, 0.808656182f, + 0.587040394f, 0.809557642f, + 0.585797857f, 0.810457198f, + 0.584553943f, 0.811354847f, + 0.583308653f, 0.812250587f, + 0.582061990f, 0.813144415f, + 0.580813958f, 0.814036330f, + 0.579564559f, 0.814926329f, + 0.578313796f, 0.815814411f, + 0.577061673f, 0.816700573f, + 0.575808191f, 0.817584813f, + 0.574553355f, 0.818467130f, + 0.573297167f, 0.819347520f, + 0.572039629f, 0.820225983f, + 0.570780746f, 0.821102515f, + 0.569520519f, 0.821977115f, + 0.568258953f, 0.822849781f, + 0.566996049f, 0.823720511f, + 0.565731811f, 0.824589303f, + 0.564466242f, 0.825456154f, + 0.563199344f, 0.826321063f, + 0.561931121f, 0.827184027f, + 0.560661576f, 0.828045045f, + 0.559390712f, 0.828904115f, + 0.558118531f, 0.829761234f, + 0.556845037f, 0.830616400f, + 0.555570233f, 0.831469612f, + 0.554294121f, 0.832320868f, + 0.553016706f, 0.833170165f, + 0.551737988f, 0.834017501f, + 0.550457973f, 0.834862875f, + 0.549176662f, 0.835706284f, + 0.547894059f, 0.836547727f, + 0.546610167f, 0.837387202f, + 0.545324988f, 0.838224706f, + 0.544038527f, 0.839060237f, + 0.542750785f, 0.839893794f, + 0.541461766f, 0.840725375f, + 0.540171473f, 0.841554977f, + 0.538879909f, 0.842382600f, + 0.537587076f, 0.843208240f, + 0.536292979f, 0.844031895f, + 0.534997620f, 0.844853565f, + 0.533701002f, 0.845673247f, + 0.532403128f, 0.846490939f, + 0.531104001f, 0.847306639f, + 0.529803625f, 0.848120345f, + 0.528502002f, 0.848932055f, + 0.527199135f, 0.849741768f, + 0.525895027f, 0.850549481f, + 0.524589683f, 0.851355193f, + 0.523283103f, 0.852158902f, + 0.521975293f, 0.852960605f, + 0.520666254f, 0.853760301f, + 0.519355990f, 0.854557988f, + 0.518044504f, 0.855353665f, + 0.516731799f, 0.856147328f, + 0.515417878f, 0.856938977f, + 0.514102744f, 0.857728610f, + 0.512786401f, 0.858516224f, + 0.511468850f, 0.859301818f, + 0.510150097f, 0.860085390f, + 0.508830143f, 0.860866939f, + 0.507508991f, 0.861646461f, + 0.506186645f, 0.862423956f, + 0.504863109f, 0.863199422f, + 0.503538384f, 0.863972856f, + 0.502212474f, 0.864744258f, + 0.500885383f, 0.865513624f, + 0.499557113f, 0.866280954f, + 0.498227667f, 0.867046246f, + 0.496897049f, 0.867809497f, + 0.495565262f, 0.868570706f, + 0.494232309f, 0.869329871f, + 0.492898192f, 0.870086991f, + 0.491562916f, 0.870842063f, + 0.490226483f, 0.871595087f, + 0.488888897f, 0.872346059f, + 0.487550160f, 0.873094978f, + 0.486210276f, 0.873841843f, + 0.484869248f, 0.874586652f, + 0.483527079f, 0.875329403f, + 0.482183772f, 0.876070094f, + 0.480839331f, 0.876808724f, + 0.479493758f, 0.877545290f, + 0.478147056f, 0.878279792f, + 0.476799230f, 0.879012226f, + 0.475450282f, 0.879742593f, + 0.474100215f, 0.880470889f, + 0.472749032f, 0.881197113f, + 0.471396737f, 0.881921264f, + 0.470043332f, 0.882643340f, + 0.468688822f, 0.883363339f, + 0.467333209f, 0.884081259f, + 0.465976496f, 0.884797098f, + 0.464618686f, 0.885510856f, + 0.463259784f, 0.886222530f, + 0.461899791f, 0.886932119f, + 0.460538711f, 0.887639620f, + 0.459176548f, 0.888345033f, + 0.457813304f, 0.889048356f, + 0.456448982f, 0.889749586f, + 0.455083587f, 0.890448723f, + 0.453717121f, 0.891145765f, + 0.452349587f, 0.891840709f, + 0.450980989f, 0.892533555f, + 0.449611330f, 0.893224301f, + 0.448240612f, 0.893912945f, + 0.446868840f, 0.894599486f, + 0.445496017f, 0.895283921f, + 0.444122145f, 0.895966250f, + 0.442747228f, 0.896646470f, + 0.441371269f, 0.897324581f, + 0.439994271f, 0.898000580f, + 0.438616239f, 0.898674466f, + 0.437237174f, 0.899346237f, + 0.435857080f, 0.900015892f, + 0.434475961f, 0.900683429f, + 0.433093819f, 0.901348847f, + 0.431710658f, 0.902012144f, + 0.430326481f, 0.902673318f, + 0.428941292f, 0.903332368f, + 0.427555093f, 0.903989293f, + 0.426167889f, 0.904644091f, + 0.424779681f, 0.905296759f, + 0.423390474f, 0.905947298f, + 0.422000271f, 0.906595705f, + 0.420609074f, 0.907241978f, + 0.419216888f, 0.907886116f, + 0.417823716f, 0.908528119f, + 0.416429560f, 0.909167983f, + 0.415034424f, 0.909805708f, + 0.413638312f, 0.910441292f, + 0.412241227f, 0.911074734f, + 0.410843171f, 0.911706032f, + 0.409444149f, 0.912335185f, + 0.408044163f, 0.912962190f, + 0.406643217f, 0.913587048f, + 0.405241314f, 0.914209756f, + 0.403838458f, 0.914830312f, + 0.402434651f, 0.915448716f, + 0.401029897f, 0.916064966f, + 0.399624200f, 0.916679060f, + 0.398217562f, 0.917290997f, + 0.396809987f, 0.917900776f, + 0.395401479f, 0.918508394f, + 0.393992040f, 0.919113852f, + 0.392581674f, 0.919717146f, + 0.391170384f, 0.920318277f, + 0.389758174f, 0.920917242f, + 0.388345047f, 0.921514039f, + 0.386931006f, 0.922108669f, + 0.385516054f, 0.922701128f, + 0.384100195f, 0.923291417f, + 0.382683432f, 0.923879533f, + 0.381265769f, 0.924465474f, + 0.379847209f, 0.925049241f, + 0.378427755f, 0.925630831f, + 0.377007410f, 0.926210242f, + 0.375586178f, 0.926787474f, + 0.374164063f, 0.927362526f, + 0.372741067f, 0.927935395f, + 0.371317194f, 0.928506080f, + 0.369892447f, 0.929074581f, + 0.368466830f, 0.929640896f, + 0.367040346f, 0.930205023f, + 0.365612998f, 0.930766961f, + 0.364184790f, 0.931326709f, + 0.362755724f, 0.931884266f, + 0.361325806f, 0.932439629f, + 0.359895037f, 0.932992799f, + 0.358463421f, 0.933543773f, + 0.357030961f, 0.934092550f, + 0.355597662f, 0.934639130f, + 0.354163525f, 0.935183510f, + 0.352728556f, 0.935725689f, + 0.351292756f, 0.936265667f, + 0.349856130f, 0.936803442f, + 0.348418680f, 0.937339012f, + 0.346980411f, 0.937872376f, + 0.345541325f, 0.938403534f, + 0.344101426f, 0.938932484f, + 0.342660717f, 0.939459224f, + 0.341219202f, 0.939983753f, + 0.339776884f, 0.940506071f, + 0.338333767f, 0.941026175f, + 0.336889853f, 0.941544065f, + 0.335445147f, 0.942059740f, + 0.333999651f, 0.942573198f, + 0.332553370f, 0.943084437f, + 0.331106306f, 0.943593458f, + 0.329658463f, 0.944100258f, + 0.328209844f, 0.944604837f, + 0.326760452f, 0.945107193f, + 0.325310292f, 0.945607325f, + 0.323859367f, 0.946105232f, + 0.322407679f, 0.946600913f, + 0.320955232f, 0.947094366f, + 0.319502031f, 0.947585591f, + 0.318048077f, 0.948074586f, + 0.316593376f, 0.948561350f, + 0.315137929f, 0.949045882f, + 0.313681740f, 0.949528181f, + 0.312224814f, 0.950008245f, + 0.310767153f, 0.950486074f, + 0.309308760f, 0.950961666f, + 0.307849640f, 0.951435021f, + 0.306389795f, 0.951906137f, + 0.304929230f, 0.952375013f, + 0.303467947f, 0.952841648f, + 0.302005949f, 0.953306040f, + 0.300543241f, 0.953768190f, + 0.299079826f, 0.954228095f, + 0.297615707f, 0.954685755f, + 0.296150888f, 0.955141168f, + 0.294685372f, 0.955594334f, + 0.293219163f, 0.956045251f, + 0.291752263f, 0.956493919f, + 0.290284677f, 0.956940336f, + 0.288816408f, 0.957384501f, + 0.287347460f, 0.957826413f, + 0.285877835f, 0.958266071f, + 0.284407537f, 0.958703475f, + 0.282936570f, 0.959138622f, + 0.281464938f, 0.959571513f, + 0.279992643f, 0.960002146f, + 0.278519689f, 0.960430519f, + 0.277046080f, 0.960856633f, + 0.275571819f, 0.961280486f, + 0.274096910f, 0.961702077f, + 0.272621355f, 0.962121404f, + 0.271145160f, 0.962538468f, + 0.269668326f, 0.962953267f, + 0.268190857f, 0.963365800f, + 0.266712757f, 0.963776066f, + 0.265234030f, 0.964184064f, + 0.263754679f, 0.964589793f, + 0.262274707f, 0.964993253f, + 0.260794118f, 0.965394442f, + 0.259312915f, 0.965793359f, + 0.257831102f, 0.966190003f, + 0.256348682f, 0.966584374f, + 0.254865660f, 0.966976471f, + 0.253382037f, 0.967366292f, + 0.251897818f, 0.967753837f, + 0.250413007f, 0.968139105f, + 0.248927606f, 0.968522094f, + 0.247441619f, 0.968902805f, + 0.245955050f, 0.969281235f, + 0.244467903f, 0.969657385f, + 0.242980180f, 0.970031253f, + 0.241491885f, 0.970402839f, + 0.240003022f, 0.970772141f, + 0.238513595f, 0.971139158f, + 0.237023606f, 0.971503891f, + 0.235533059f, 0.971866337f, + 0.234041959f, 0.972226497f, + 0.232550307f, 0.972584369f, + 0.231058108f, 0.972939952f, + 0.229565366f, 0.973293246f, + 0.228072083f, 0.973644250f, + 0.226578264f, 0.973992962f, + 0.225083911f, 0.974339383f, + 0.223589029f, 0.974683511f, + 0.222093621f, 0.975025345f, + 0.220597690f, 0.975364885f, + 0.219101240f, 0.975702130f, + 0.217604275f, 0.976037079f, + 0.216106797f, 0.976369731f, + 0.214608811f, 0.976700086f, + 0.213110320f, 0.977028143f, + 0.211611327f, 0.977353900f, + 0.210111837f, 0.977677358f, + 0.208611852f, 0.977998515f, + 0.207111376f, 0.978317371f, + 0.205610413f, 0.978633924f, + 0.204108966f, 0.978948175f, + 0.202607039f, 0.979260123f, + 0.201104635f, 0.979569766f, + 0.199601758f, 0.979877104f, + 0.198098411f, 0.980182136f, + 0.196594598f, 0.980484862f, + 0.195090322f, 0.980785280f, + 0.193585587f, 0.981083391f, + 0.192080397f, 0.981379193f, + 0.190574755f, 0.981672686f, + 0.189068664f, 0.981963869f, + 0.187562129f, 0.982252741f, + 0.186055152f, 0.982539302f, + 0.184547737f, 0.982823551f, + 0.183039888f, 0.983105487f, + 0.181531608f, 0.983385110f, + 0.180022901f, 0.983662419f, + 0.178513771f, 0.983937413f, + 0.177004220f, 0.984210092f, + 0.175494253f, 0.984480455f, + 0.173983873f, 0.984748502f, + 0.172473084f, 0.985014231f, + 0.170961889f, 0.985277642f, + 0.169450291f, 0.985538735f, + 0.167938295f, 0.985797509f, + 0.166425904f, 0.986053963f, + 0.164913120f, 0.986308097f, + 0.163399949f, 0.986559910f, + 0.161886394f, 0.986809402f, + 0.160372457f, 0.987056571f, + 0.158858143f, 0.987301418f, + 0.157343456f, 0.987543942f, + 0.155828398f, 0.987784142f, + 0.154312973f, 0.988022017f, + 0.152797185f, 0.988257568f, + 0.151281038f, 0.988490793f, + 0.149764535f, 0.988721692f, + 0.148247679f, 0.988950265f, + 0.146730474f, 0.989176510f, + 0.145212925f, 0.989400428f, + 0.143695033f, 0.989622017f, + 0.142176804f, 0.989841278f, + 0.140658239f, 0.990058210f, + 0.139139344f, 0.990272812f, + 0.137620122f, 0.990485084f, + 0.136100575f, 0.990695025f, + 0.134580709f, 0.990902635f, + 0.133060525f, 0.991107914f, + 0.131540029f, 0.991310860f, + 0.130019223f, 0.991511473f, + 0.128498111f, 0.991709754f, + 0.126976696f, 0.991905700f, + 0.125454983f, 0.992099313f, + 0.123932975f, 0.992290591f, + 0.122410675f, 0.992479535f, + 0.120888087f, 0.992666142f, + 0.119365215f, 0.992850414f, + 0.117842062f, 0.993032350f, + 0.116318631f, 0.993211949f, + 0.114794927f, 0.993389211f, + 0.113270952f, 0.993564136f, + 0.111746711f, 0.993736722f, + 0.110222207f, 0.993906970f, + 0.108697444f, 0.994074879f, + 0.107172425f, 0.994240449f, + 0.105647154f, 0.994403680f, + 0.104121634f, 0.994564571f, + 0.102595869f, 0.994723121f, + 0.101069863f, 0.994879331f, + 0.099543619f, 0.995033199f, + 0.098017140f, 0.995184727f, + 0.096490431f, 0.995333912f, + 0.094963495f, 0.995480755f, + 0.093436336f, 0.995625256f, + 0.091908956f, 0.995767414f, + 0.090381361f, 0.995907229f, + 0.088853553f, 0.996044701f, + 0.087325535f, 0.996179829f, + 0.085797312f, 0.996312612f, + 0.084268888f, 0.996443051f, + 0.082740265f, 0.996571146f, + 0.081211447f, 0.996696895f, + 0.079682438f, 0.996820299f, + 0.078153242f, 0.996941358f, + 0.076623861f, 0.997060070f, + 0.075094301f, 0.997176437f, + 0.073564564f, 0.997290457f, + 0.072034653f, 0.997402130f, + 0.070504573f, 0.997511456f, + 0.068974328f, 0.997618435f, + 0.067443920f, 0.997723067f, + 0.065913353f, 0.997825350f, + 0.064382631f, 0.997925286f, + 0.062851758f, 0.998022874f, + 0.061320736f, 0.998118113f, + 0.059789571f, 0.998211003f, + 0.058258265f, 0.998301545f, + 0.056726821f, 0.998389737f, + 0.055195244f, 0.998475581f, + 0.053663538f, 0.998559074f, + 0.052131705f, 0.998640218f, + 0.050599749f, 0.998719012f, + 0.049067674f, 0.998795456f, + 0.047535484f, 0.998869550f, + 0.046003182f, 0.998941293f, + 0.044470772f, 0.999010686f, + 0.042938257f, 0.999077728f, + 0.041405641f, 0.999142419f, + 0.039872928f, 0.999204759f, + 0.038340120f, 0.999264747f, + 0.036807223f, 0.999322385f, + 0.035274239f, 0.999377670f, + 0.033741172f, 0.999430605f, + 0.032208025f, 0.999481187f, + 0.030674803f, 0.999529418f, + 0.029141509f, 0.999575296f, + 0.027608146f, 0.999618822f, + 0.026074718f, 0.999659997f, + 0.024541229f, 0.999698819f, + 0.023007681f, 0.999735288f, + 0.021474080f, 0.999769405f, + 0.019940429f, 0.999801170f, + 0.018406730f, 0.999830582f, + 0.016872988f, 0.999857641f, + 0.015339206f, 0.999882347f, + 0.013805389f, 0.999904701f, + 0.012271538f, 0.999924702f, + 0.010737659f, 0.999942350f, + 0.009203755f, 0.999957645f, + 0.007669829f, 0.999970586f, + 0.006135885f, 0.999981175f, + 0.004601926f, 0.999989411f, + 0.003067957f, 0.999995294f, + 0.001533980f, 0.999998823f, + 0.000000000f, 1.000000000f, + -0.001533980f, 0.999998823f, + -0.003067957f, 0.999995294f, + -0.004601926f, 0.999989411f, + -0.006135885f, 0.999981175f, + -0.007669829f, 0.999970586f, + -0.009203755f, 0.999957645f, + -0.010737659f, 0.999942350f, + -0.012271538f, 0.999924702f, + -0.013805389f, 0.999904701f, + -0.015339206f, 0.999882347f, + -0.016872988f, 0.999857641f, + -0.018406730f, 0.999830582f, + -0.019940429f, 0.999801170f, + -0.021474080f, 0.999769405f, + -0.023007681f, 0.999735288f, + -0.024541229f, 0.999698819f, + -0.026074718f, 0.999659997f, + -0.027608146f, 0.999618822f, + -0.029141509f, 0.999575296f, + -0.030674803f, 0.999529418f, + -0.032208025f, 0.999481187f, + -0.033741172f, 0.999430605f, + -0.035274239f, 0.999377670f, + -0.036807223f, 0.999322385f, + -0.038340120f, 0.999264747f, + -0.039872928f, 0.999204759f, + -0.041405641f, 0.999142419f, + -0.042938257f, 0.999077728f, + -0.044470772f, 0.999010686f, + -0.046003182f, 0.998941293f, + -0.047535484f, 0.998869550f, + -0.049067674f, 0.998795456f, + -0.050599749f, 0.998719012f, + -0.052131705f, 0.998640218f, + -0.053663538f, 0.998559074f, + -0.055195244f, 0.998475581f, + -0.056726821f, 0.998389737f, + -0.058258265f, 0.998301545f, + -0.059789571f, 0.998211003f, + -0.061320736f, 0.998118113f, + -0.062851758f, 0.998022874f, + -0.064382631f, 0.997925286f, + -0.065913353f, 0.997825350f, + -0.067443920f, 0.997723067f, + -0.068974328f, 0.997618435f, + -0.070504573f, 0.997511456f, + -0.072034653f, 0.997402130f, + -0.073564564f, 0.997290457f, + -0.075094301f, 0.997176437f, + -0.076623861f, 0.997060070f, + -0.078153242f, 0.996941358f, + -0.079682438f, 0.996820299f, + -0.081211447f, 0.996696895f, + -0.082740265f, 0.996571146f, + -0.084268888f, 0.996443051f, + -0.085797312f, 0.996312612f, + -0.087325535f, 0.996179829f, + -0.088853553f, 0.996044701f, + -0.090381361f, 0.995907229f, + -0.091908956f, 0.995767414f, + -0.093436336f, 0.995625256f, + -0.094963495f, 0.995480755f, + -0.096490431f, 0.995333912f, + -0.098017140f, 0.995184727f, + -0.099543619f, 0.995033199f, + -0.101069863f, 0.994879331f, + -0.102595869f, 0.994723121f, + -0.104121634f, 0.994564571f, + -0.105647154f, 0.994403680f, + -0.107172425f, 0.994240449f, + -0.108697444f, 0.994074879f, + -0.110222207f, 0.993906970f, + -0.111746711f, 0.993736722f, + -0.113270952f, 0.993564136f, + -0.114794927f, 0.993389211f, + -0.116318631f, 0.993211949f, + -0.117842062f, 0.993032350f, + -0.119365215f, 0.992850414f, + -0.120888087f, 0.992666142f, + -0.122410675f, 0.992479535f, + -0.123932975f, 0.992290591f, + -0.125454983f, 0.992099313f, + -0.126976696f, 0.991905700f, + -0.128498111f, 0.991709754f, + -0.130019223f, 0.991511473f, + -0.131540029f, 0.991310860f, + -0.133060525f, 0.991107914f, + -0.134580709f, 0.990902635f, + -0.136100575f, 0.990695025f, + -0.137620122f, 0.990485084f, + -0.139139344f, 0.990272812f, + -0.140658239f, 0.990058210f, + -0.142176804f, 0.989841278f, + -0.143695033f, 0.989622017f, + -0.145212925f, 0.989400428f, + -0.146730474f, 0.989176510f, + -0.148247679f, 0.988950265f, + -0.149764535f, 0.988721692f, + -0.151281038f, 0.988490793f, + -0.152797185f, 0.988257568f, + -0.154312973f, 0.988022017f, + -0.155828398f, 0.987784142f, + -0.157343456f, 0.987543942f, + -0.158858143f, 0.987301418f, + -0.160372457f, 0.987056571f, + -0.161886394f, 0.986809402f, + -0.163399949f, 0.986559910f, + -0.164913120f, 0.986308097f, + -0.166425904f, 0.986053963f, + -0.167938295f, 0.985797509f, + -0.169450291f, 0.985538735f, + -0.170961889f, 0.985277642f, + -0.172473084f, 0.985014231f, + -0.173983873f, 0.984748502f, + -0.175494253f, 0.984480455f, + -0.177004220f, 0.984210092f, + -0.178513771f, 0.983937413f, + -0.180022901f, 0.983662419f, + -0.181531608f, 0.983385110f, + -0.183039888f, 0.983105487f, + -0.184547737f, 0.982823551f, + -0.186055152f, 0.982539302f, + -0.187562129f, 0.982252741f, + -0.189068664f, 0.981963869f, + -0.190574755f, 0.981672686f, + -0.192080397f, 0.981379193f, + -0.193585587f, 0.981083391f, + -0.195090322f, 0.980785280f, + -0.196594598f, 0.980484862f, + -0.198098411f, 0.980182136f, + -0.199601758f, 0.979877104f, + -0.201104635f, 0.979569766f, + -0.202607039f, 0.979260123f, + -0.204108966f, 0.978948175f, + -0.205610413f, 0.978633924f, + -0.207111376f, 0.978317371f, + -0.208611852f, 0.977998515f, + -0.210111837f, 0.977677358f, + -0.211611327f, 0.977353900f, + -0.213110320f, 0.977028143f, + -0.214608811f, 0.976700086f, + -0.216106797f, 0.976369731f, + -0.217604275f, 0.976037079f, + -0.219101240f, 0.975702130f, + -0.220597690f, 0.975364885f, + -0.222093621f, 0.975025345f, + -0.223589029f, 0.974683511f, + -0.225083911f, 0.974339383f, + -0.226578264f, 0.973992962f, + -0.228072083f, 0.973644250f, + -0.229565366f, 0.973293246f, + -0.231058108f, 0.972939952f, + -0.232550307f, 0.972584369f, + -0.234041959f, 0.972226497f, + -0.235533059f, 0.971866337f, + -0.237023606f, 0.971503891f, + -0.238513595f, 0.971139158f, + -0.240003022f, 0.970772141f, + -0.241491885f, 0.970402839f, + -0.242980180f, 0.970031253f, + -0.244467903f, 0.969657385f, + -0.245955050f, 0.969281235f, + -0.247441619f, 0.968902805f, + -0.248927606f, 0.968522094f, + -0.250413007f, 0.968139105f, + -0.251897818f, 0.967753837f, + -0.253382037f, 0.967366292f, + -0.254865660f, 0.966976471f, + -0.256348682f, 0.966584374f, + -0.257831102f, 0.966190003f, + -0.259312915f, 0.965793359f, + -0.260794118f, 0.965394442f, + -0.262274707f, 0.964993253f, + -0.263754679f, 0.964589793f, + -0.265234030f, 0.964184064f, + -0.266712757f, 0.963776066f, + -0.268190857f, 0.963365800f, + -0.269668326f, 0.962953267f, + -0.271145160f, 0.962538468f, + -0.272621355f, 0.962121404f, + -0.274096910f, 0.961702077f, + -0.275571819f, 0.961280486f, + -0.277046080f, 0.960856633f, + -0.278519689f, 0.960430519f, + -0.279992643f, 0.960002146f, + -0.281464938f, 0.959571513f, + -0.282936570f, 0.959138622f, + -0.284407537f, 0.958703475f, + -0.285877835f, 0.958266071f, + -0.287347460f, 0.957826413f, + -0.288816408f, 0.957384501f, + -0.290284677f, 0.956940336f, + -0.291752263f, 0.956493919f, + -0.293219163f, 0.956045251f, + -0.294685372f, 0.955594334f, + -0.296150888f, 0.955141168f, + -0.297615707f, 0.954685755f, + -0.299079826f, 0.954228095f, + -0.300543241f, 0.953768190f, + -0.302005949f, 0.953306040f, + -0.303467947f, 0.952841648f, + -0.304929230f, 0.952375013f, + -0.306389795f, 0.951906137f, + -0.307849640f, 0.951435021f, + -0.309308760f, 0.950961666f, + -0.310767153f, 0.950486074f, + -0.312224814f, 0.950008245f, + -0.313681740f, 0.949528181f, + -0.315137929f, 0.949045882f, + -0.316593376f, 0.948561350f, + -0.318048077f, 0.948074586f, + -0.319502031f, 0.947585591f, + -0.320955232f, 0.947094366f, + -0.322407679f, 0.946600913f, + -0.323859367f, 0.946105232f, + -0.325310292f, 0.945607325f, + -0.326760452f, 0.945107193f, + -0.328209844f, 0.944604837f, + -0.329658463f, 0.944100258f, + -0.331106306f, 0.943593458f, + -0.332553370f, 0.943084437f, + -0.333999651f, 0.942573198f, + -0.335445147f, 0.942059740f, + -0.336889853f, 0.941544065f, + -0.338333767f, 0.941026175f, + -0.339776884f, 0.940506071f, + -0.341219202f, 0.939983753f, + -0.342660717f, 0.939459224f, + -0.344101426f, 0.938932484f, + -0.345541325f, 0.938403534f, + -0.346980411f, 0.937872376f, + -0.348418680f, 0.937339012f, + -0.349856130f, 0.936803442f, + -0.351292756f, 0.936265667f, + -0.352728556f, 0.935725689f, + -0.354163525f, 0.935183510f, + -0.355597662f, 0.934639130f, + -0.357030961f, 0.934092550f, + -0.358463421f, 0.933543773f, + -0.359895037f, 0.932992799f, + -0.361325806f, 0.932439629f, + -0.362755724f, 0.931884266f, + -0.364184790f, 0.931326709f, + -0.365612998f, 0.930766961f, + -0.367040346f, 0.930205023f, + -0.368466830f, 0.929640896f, + -0.369892447f, 0.929074581f, + -0.371317194f, 0.928506080f, + -0.372741067f, 0.927935395f, + -0.374164063f, 0.927362526f, + -0.375586178f, 0.926787474f, + -0.377007410f, 0.926210242f, + -0.378427755f, 0.925630831f, + -0.379847209f, 0.925049241f, + -0.381265769f, 0.924465474f, + -0.382683432f, 0.923879533f, + -0.384100195f, 0.923291417f, + -0.385516054f, 0.922701128f, + -0.386931006f, 0.922108669f, + -0.388345047f, 0.921514039f, + -0.389758174f, 0.920917242f, + -0.391170384f, 0.920318277f, + -0.392581674f, 0.919717146f, + -0.393992040f, 0.919113852f, + -0.395401479f, 0.918508394f, + -0.396809987f, 0.917900776f, + -0.398217562f, 0.917290997f, + -0.399624200f, 0.916679060f, + -0.401029897f, 0.916064966f, + -0.402434651f, 0.915448716f, + -0.403838458f, 0.914830312f, + -0.405241314f, 0.914209756f, + -0.406643217f, 0.913587048f, + -0.408044163f, 0.912962190f, + -0.409444149f, 0.912335185f, + -0.410843171f, 0.911706032f, + -0.412241227f, 0.911074734f, + -0.413638312f, 0.910441292f, + -0.415034424f, 0.909805708f, + -0.416429560f, 0.909167983f, + -0.417823716f, 0.908528119f, + -0.419216888f, 0.907886116f, + -0.420609074f, 0.907241978f, + -0.422000271f, 0.906595705f, + -0.423390474f, 0.905947298f, + -0.424779681f, 0.905296759f, + -0.426167889f, 0.904644091f, + -0.427555093f, 0.903989293f, + -0.428941292f, 0.903332368f, + -0.430326481f, 0.902673318f, + -0.431710658f, 0.902012144f, + -0.433093819f, 0.901348847f, + -0.434475961f, 0.900683429f, + -0.435857080f, 0.900015892f, + -0.437237174f, 0.899346237f, + -0.438616239f, 0.898674466f, + -0.439994271f, 0.898000580f, + -0.441371269f, 0.897324581f, + -0.442747228f, 0.896646470f, + -0.444122145f, 0.895966250f, + -0.445496017f, 0.895283921f, + -0.446868840f, 0.894599486f, + -0.448240612f, 0.893912945f, + -0.449611330f, 0.893224301f, + -0.450980989f, 0.892533555f, + -0.452349587f, 0.891840709f, + -0.453717121f, 0.891145765f, + -0.455083587f, 0.890448723f, + -0.456448982f, 0.889749586f, + -0.457813304f, 0.889048356f, + -0.459176548f, 0.888345033f, + -0.460538711f, 0.887639620f, + -0.461899791f, 0.886932119f, + -0.463259784f, 0.886222530f, + -0.464618686f, 0.885510856f, + -0.465976496f, 0.884797098f, + -0.467333209f, 0.884081259f, + -0.468688822f, 0.883363339f, + -0.470043332f, 0.882643340f, + -0.471396737f, 0.881921264f, + -0.472749032f, 0.881197113f, + -0.474100215f, 0.880470889f, + -0.475450282f, 0.879742593f, + -0.476799230f, 0.879012226f, + -0.478147056f, 0.878279792f, + -0.479493758f, 0.877545290f, + -0.480839331f, 0.876808724f, + -0.482183772f, 0.876070094f, + -0.483527079f, 0.875329403f, + -0.484869248f, 0.874586652f, + -0.486210276f, 0.873841843f, + -0.487550160f, 0.873094978f, + -0.488888897f, 0.872346059f, + -0.490226483f, 0.871595087f, + -0.491562916f, 0.870842063f, + -0.492898192f, 0.870086991f, + -0.494232309f, 0.869329871f, + -0.495565262f, 0.868570706f, + -0.496897049f, 0.867809497f, + -0.498227667f, 0.867046246f, + -0.499557113f, 0.866280954f, + -0.500885383f, 0.865513624f, + -0.502212474f, 0.864744258f, + -0.503538384f, 0.863972856f, + -0.504863109f, 0.863199422f, + -0.506186645f, 0.862423956f, + -0.507508991f, 0.861646461f, + -0.508830143f, 0.860866939f, + -0.510150097f, 0.860085390f, + -0.511468850f, 0.859301818f, + -0.512786401f, 0.858516224f, + -0.514102744f, 0.857728610f, + -0.515417878f, 0.856938977f, + -0.516731799f, 0.856147328f, + -0.518044504f, 0.855353665f, + -0.519355990f, 0.854557988f, + -0.520666254f, 0.853760301f, + -0.521975293f, 0.852960605f, + -0.523283103f, 0.852158902f, + -0.524589683f, 0.851355193f, + -0.525895027f, 0.850549481f, + -0.527199135f, 0.849741768f, + -0.528502002f, 0.848932055f, + -0.529803625f, 0.848120345f, + -0.531104001f, 0.847306639f, + -0.532403128f, 0.846490939f, + -0.533701002f, 0.845673247f, + -0.534997620f, 0.844853565f, + -0.536292979f, 0.844031895f, + -0.537587076f, 0.843208240f, + -0.538879909f, 0.842382600f, + -0.540171473f, 0.841554977f, + -0.541461766f, 0.840725375f, + -0.542750785f, 0.839893794f, + -0.544038527f, 0.839060237f, + -0.545324988f, 0.838224706f, + -0.546610167f, 0.837387202f, + -0.547894059f, 0.836547727f, + -0.549176662f, 0.835706284f, + -0.550457973f, 0.834862875f, + -0.551737988f, 0.834017501f, + -0.553016706f, 0.833170165f, + -0.554294121f, 0.832320868f, + -0.555570233f, 0.831469612f, + -0.556845037f, 0.830616400f, + -0.558118531f, 0.829761234f, + -0.559390712f, 0.828904115f, + -0.560661576f, 0.828045045f, + -0.561931121f, 0.827184027f, + -0.563199344f, 0.826321063f, + -0.564466242f, 0.825456154f, + -0.565731811f, 0.824589303f, + -0.566996049f, 0.823720511f, + -0.568258953f, 0.822849781f, + -0.569520519f, 0.821977115f, + -0.570780746f, 0.821102515f, + -0.572039629f, 0.820225983f, + -0.573297167f, 0.819347520f, + -0.574553355f, 0.818467130f, + -0.575808191f, 0.817584813f, + -0.577061673f, 0.816700573f, + -0.578313796f, 0.815814411f, + -0.579564559f, 0.814926329f, + -0.580813958f, 0.814036330f, + -0.582061990f, 0.813144415f, + -0.583308653f, 0.812250587f, + -0.584553943f, 0.811354847f, + -0.585797857f, 0.810457198f, + -0.587040394f, 0.809557642f, + -0.588281548f, 0.808656182f, + -0.589521319f, 0.807752818f, + -0.590759702f, 0.806847554f, + -0.591996695f, 0.805940391f, + -0.593232295f, 0.805031331f, + -0.594466499f, 0.804120377f, + -0.595699304f, 0.803207531f, + -0.596930708f, 0.802292796f, + -0.598160707f, 0.801376172f, + -0.599389298f, 0.800457662f, + -0.600616479f, 0.799537269f, + -0.601842247f, 0.798614995f, + -0.603066599f, 0.797690841f, + -0.604289531f, 0.796764810f, + -0.605511041f, 0.795836905f, + -0.606731127f, 0.794907126f, + -0.607949785f, 0.793975478f, + -0.609167012f, 0.793041960f, + -0.610382806f, 0.792106577f, + -0.611597164f, 0.791169330f, + -0.612810082f, 0.790230221f, + -0.614021559f, 0.789289253f, + -0.615231591f, 0.788346428f, + -0.616440175f, 0.787401747f, + -0.617647308f, 0.786455214f, + -0.618852988f, 0.785506830f, + -0.620057212f, 0.784556597f, + -0.621259977f, 0.783604519f, + -0.622461279f, 0.782650596f, + -0.623661118f, 0.781694832f, + -0.624859488f, 0.780737229f, + -0.626056388f, 0.779777788f, + -0.627251815f, 0.778816512f, + -0.628445767f, 0.777853404f, + -0.629638239f, 0.776888466f, + -0.630829230f, 0.775921699f, + -0.632018736f, 0.774953107f, + -0.633206755f, 0.773982691f, + -0.634393284f, 0.773010453f, + -0.635578320f, 0.772036397f, + -0.636761861f, 0.771060524f, + -0.637943904f, 0.770082837f, + -0.639124445f, 0.769103338f, + -0.640303482f, 0.768122029f, + -0.641481013f, 0.767138912f, + -0.642657034f, 0.766153990f, + -0.643831543f, 0.765167266f, + -0.645004537f, 0.764178741f, + -0.646176013f, 0.763188417f, + -0.647345969f, 0.762196298f, + -0.648514401f, 0.761202385f, + -0.649681307f, 0.760206682f, + -0.650846685f, 0.759209189f, + -0.652010531f, 0.758209910f, + -0.653172843f, 0.757208847f, + -0.654333618f, 0.756206001f, + -0.655492853f, 0.755201377f, + -0.656650546f, 0.754194975f, + -0.657806693f, 0.753186799f, + -0.658961293f, 0.752176850f, + -0.660114342f, 0.751165132f, + -0.661265838f, 0.750151646f, + -0.662415778f, 0.749136395f, + -0.663564159f, 0.748119380f, + -0.664710978f, 0.747100606f, + -0.665856234f, 0.746080074f, + -0.666999922f, 0.745057785f, + -0.668142041f, 0.744033744f, + -0.669282588f, 0.743007952f, + -0.670421560f, 0.741980412f, + -0.671558955f, 0.740951125f, + -0.672694769f, 0.739920095f, + -0.673829000f, 0.738887324f, + -0.674961646f, 0.737852815f, + -0.676092704f, 0.736816569f, + -0.677222170f, 0.735778589f, + -0.678350043f, 0.734738878f, + -0.679476320f, 0.733697438f, + -0.680600998f, 0.732654272f, + -0.681724074f, 0.731609381f, + -0.682845546f, 0.730562769f, + -0.683965412f, 0.729514438f, + -0.685083668f, 0.728464390f, + -0.686200312f, 0.727412629f, + -0.687315341f, 0.726359155f, + -0.688428753f, 0.725303972f, + -0.689540545f, 0.724247083f, + -0.690650714f, 0.723188489f, + -0.691759258f, 0.722128194f, + -0.692866175f, 0.721066199f, + -0.693971461f, 0.720002508f, + -0.695075114f, 0.718937122f, + -0.696177131f, 0.717870045f, + -0.697277511f, 0.716801279f, + -0.698376249f, 0.715730825f, + -0.699473345f, 0.714658688f, + -0.700568794f, 0.713584869f, + -0.701662595f, 0.712509371f, + -0.702754744f, 0.711432196f, + -0.703845241f, 0.710353347f, + -0.704934080f, 0.709272826f, + -0.706021261f, 0.708190637f, + -0.707106781f, 0.707106781f, + -0.708190637f, 0.706021261f, + -0.709272826f, 0.704934080f, + -0.710353347f, 0.703845241f, + -0.711432196f, 0.702754744f, + -0.712509371f, 0.701662595f, + -0.713584869f, 0.700568794f, + -0.714658688f, 0.699473345f, + -0.715730825f, 0.698376249f, + -0.716801279f, 0.697277511f, + -0.717870045f, 0.696177131f, + -0.718937122f, 0.695075114f, + -0.720002508f, 0.693971461f, + -0.721066199f, 0.692866175f, + -0.722128194f, 0.691759258f, + -0.723188489f, 0.690650714f, + -0.724247083f, 0.689540545f, + -0.725303972f, 0.688428753f, + -0.726359155f, 0.687315341f, + -0.727412629f, 0.686200312f, + -0.728464390f, 0.685083668f, + -0.729514438f, 0.683965412f, + -0.730562769f, 0.682845546f, + -0.731609381f, 0.681724074f, + -0.732654272f, 0.680600998f, + -0.733697438f, 0.679476320f, + -0.734738878f, 0.678350043f, + -0.735778589f, 0.677222170f, + -0.736816569f, 0.676092704f, + -0.737852815f, 0.674961646f, + -0.738887324f, 0.673829000f, + -0.739920095f, 0.672694769f, + -0.740951125f, 0.671558955f, + -0.741980412f, 0.670421560f, + -0.743007952f, 0.669282588f, + -0.744033744f, 0.668142041f, + -0.745057785f, 0.666999922f, + -0.746080074f, 0.665856234f, + -0.747100606f, 0.664710978f, + -0.748119380f, 0.663564159f, + -0.749136395f, 0.662415778f, + -0.750151646f, 0.661265838f, + -0.751165132f, 0.660114342f, + -0.752176850f, 0.658961293f, + -0.753186799f, 0.657806693f, + -0.754194975f, 0.656650546f, + -0.755201377f, 0.655492853f, + -0.756206001f, 0.654333618f, + -0.757208847f, 0.653172843f, + -0.758209910f, 0.652010531f, + -0.759209189f, 0.650846685f, + -0.760206682f, 0.649681307f, + -0.761202385f, 0.648514401f, + -0.762196298f, 0.647345969f, + -0.763188417f, 0.646176013f, + -0.764178741f, 0.645004537f, + -0.765167266f, 0.643831543f, + -0.766153990f, 0.642657034f, + -0.767138912f, 0.641481013f, + -0.768122029f, 0.640303482f, + -0.769103338f, 0.639124445f, + -0.770082837f, 0.637943904f, + -0.771060524f, 0.636761861f, + -0.772036397f, 0.635578320f, + -0.773010453f, 0.634393284f, + -0.773982691f, 0.633206755f, + -0.774953107f, 0.632018736f, + -0.775921699f, 0.630829230f, + -0.776888466f, 0.629638239f, + -0.777853404f, 0.628445767f, + -0.778816512f, 0.627251815f, + -0.779777788f, 0.626056388f, + -0.780737229f, 0.624859488f, + -0.781694832f, 0.623661118f, + -0.782650596f, 0.622461279f, + -0.783604519f, 0.621259977f, + -0.784556597f, 0.620057212f, + -0.785506830f, 0.618852988f, + -0.786455214f, 0.617647308f, + -0.787401747f, 0.616440175f, + -0.788346428f, 0.615231591f, + -0.789289253f, 0.614021559f, + -0.790230221f, 0.612810082f, + -0.791169330f, 0.611597164f, + -0.792106577f, 0.610382806f, + -0.793041960f, 0.609167012f, + -0.793975478f, 0.607949785f, + -0.794907126f, 0.606731127f, + -0.795836905f, 0.605511041f, + -0.796764810f, 0.604289531f, + -0.797690841f, 0.603066599f, + -0.798614995f, 0.601842247f, + -0.799537269f, 0.600616479f, + -0.800457662f, 0.599389298f, + -0.801376172f, 0.598160707f, + -0.802292796f, 0.596930708f, + -0.803207531f, 0.595699304f, + -0.804120377f, 0.594466499f, + -0.805031331f, 0.593232295f, + -0.805940391f, 0.591996695f, + -0.806847554f, 0.590759702f, + -0.807752818f, 0.589521319f, + -0.808656182f, 0.588281548f, + -0.809557642f, 0.587040394f, + -0.810457198f, 0.585797857f, + -0.811354847f, 0.584553943f, + -0.812250587f, 0.583308653f, + -0.813144415f, 0.582061990f, + -0.814036330f, 0.580813958f, + -0.814926329f, 0.579564559f, + -0.815814411f, 0.578313796f, + -0.816700573f, 0.577061673f, + -0.817584813f, 0.575808191f, + -0.818467130f, 0.574553355f, + -0.819347520f, 0.573297167f, + -0.820225983f, 0.572039629f, + -0.821102515f, 0.570780746f, + -0.821977115f, 0.569520519f, + -0.822849781f, 0.568258953f, + -0.823720511f, 0.566996049f, + -0.824589303f, 0.565731811f, + -0.825456154f, 0.564466242f, + -0.826321063f, 0.563199344f, + -0.827184027f, 0.561931121f, + -0.828045045f, 0.560661576f, + -0.828904115f, 0.559390712f, + -0.829761234f, 0.558118531f, + -0.830616400f, 0.556845037f, + -0.831469612f, 0.555570233f, + -0.832320868f, 0.554294121f, + -0.833170165f, 0.553016706f, + -0.834017501f, 0.551737988f, + -0.834862875f, 0.550457973f, + -0.835706284f, 0.549176662f, + -0.836547727f, 0.547894059f, + -0.837387202f, 0.546610167f, + -0.838224706f, 0.545324988f, + -0.839060237f, 0.544038527f, + -0.839893794f, 0.542750785f, + -0.840725375f, 0.541461766f, + -0.841554977f, 0.540171473f, + -0.842382600f, 0.538879909f, + -0.843208240f, 0.537587076f, + -0.844031895f, 0.536292979f, + -0.844853565f, 0.534997620f, + -0.845673247f, 0.533701002f, + -0.846490939f, 0.532403128f, + -0.847306639f, 0.531104001f, + -0.848120345f, 0.529803625f, + -0.848932055f, 0.528502002f, + -0.849741768f, 0.527199135f, + -0.850549481f, 0.525895027f, + -0.851355193f, 0.524589683f, + -0.852158902f, 0.523283103f, + -0.852960605f, 0.521975293f, + -0.853760301f, 0.520666254f, + -0.854557988f, 0.519355990f, + -0.855353665f, 0.518044504f, + -0.856147328f, 0.516731799f, + -0.856938977f, 0.515417878f, + -0.857728610f, 0.514102744f, + -0.858516224f, 0.512786401f, + -0.859301818f, 0.511468850f, + -0.860085390f, 0.510150097f, + -0.860866939f, 0.508830143f, + -0.861646461f, 0.507508991f, + -0.862423956f, 0.506186645f, + -0.863199422f, 0.504863109f, + -0.863972856f, 0.503538384f, + -0.864744258f, 0.502212474f, + -0.865513624f, 0.500885383f, + -0.866280954f, 0.499557113f, + -0.867046246f, 0.498227667f, + -0.867809497f, 0.496897049f, + -0.868570706f, 0.495565262f, + -0.869329871f, 0.494232309f, + -0.870086991f, 0.492898192f, + -0.870842063f, 0.491562916f, + -0.871595087f, 0.490226483f, + -0.872346059f, 0.488888897f, + -0.873094978f, 0.487550160f, + -0.873841843f, 0.486210276f, + -0.874586652f, 0.484869248f, + -0.875329403f, 0.483527079f, + -0.876070094f, 0.482183772f, + -0.876808724f, 0.480839331f, + -0.877545290f, 0.479493758f, + -0.878279792f, 0.478147056f, + -0.879012226f, 0.476799230f, + -0.879742593f, 0.475450282f, + -0.880470889f, 0.474100215f, + -0.881197113f, 0.472749032f, + -0.881921264f, 0.471396737f, + -0.882643340f, 0.470043332f, + -0.883363339f, 0.468688822f, + -0.884081259f, 0.467333209f, + -0.884797098f, 0.465976496f, + -0.885510856f, 0.464618686f, + -0.886222530f, 0.463259784f, + -0.886932119f, 0.461899791f, + -0.887639620f, 0.460538711f, + -0.888345033f, 0.459176548f, + -0.889048356f, 0.457813304f, + -0.889749586f, 0.456448982f, + -0.890448723f, 0.455083587f, + -0.891145765f, 0.453717121f, + -0.891840709f, 0.452349587f, + -0.892533555f, 0.450980989f, + -0.893224301f, 0.449611330f, + -0.893912945f, 0.448240612f, + -0.894599486f, 0.446868840f, + -0.895283921f, 0.445496017f, + -0.895966250f, 0.444122145f, + -0.896646470f, 0.442747228f, + -0.897324581f, 0.441371269f, + -0.898000580f, 0.439994271f, + -0.898674466f, 0.438616239f, + -0.899346237f, 0.437237174f, + -0.900015892f, 0.435857080f, + -0.900683429f, 0.434475961f, + -0.901348847f, 0.433093819f, + -0.902012144f, 0.431710658f, + -0.902673318f, 0.430326481f, + -0.903332368f, 0.428941292f, + -0.903989293f, 0.427555093f, + -0.904644091f, 0.426167889f, + -0.905296759f, 0.424779681f, + -0.905947298f, 0.423390474f, + -0.906595705f, 0.422000271f, + -0.907241978f, 0.420609074f, + -0.907886116f, 0.419216888f, + -0.908528119f, 0.417823716f, + -0.909167983f, 0.416429560f, + -0.909805708f, 0.415034424f, + -0.910441292f, 0.413638312f, + -0.911074734f, 0.412241227f, + -0.911706032f, 0.410843171f, + -0.912335185f, 0.409444149f, + -0.912962190f, 0.408044163f, + -0.913587048f, 0.406643217f, + -0.914209756f, 0.405241314f, + -0.914830312f, 0.403838458f, + -0.915448716f, 0.402434651f, + -0.916064966f, 0.401029897f, + -0.916679060f, 0.399624200f, + -0.917290997f, 0.398217562f, + -0.917900776f, 0.396809987f, + -0.918508394f, 0.395401479f, + -0.919113852f, 0.393992040f, + -0.919717146f, 0.392581674f, + -0.920318277f, 0.391170384f, + -0.920917242f, 0.389758174f, + -0.921514039f, 0.388345047f, + -0.922108669f, 0.386931006f, + -0.922701128f, 0.385516054f, + -0.923291417f, 0.384100195f, + -0.923879533f, 0.382683432f, + -0.924465474f, 0.381265769f, + -0.925049241f, 0.379847209f, + -0.925630831f, 0.378427755f, + -0.926210242f, 0.377007410f, + -0.926787474f, 0.375586178f, + -0.927362526f, 0.374164063f, + -0.927935395f, 0.372741067f, + -0.928506080f, 0.371317194f, + -0.929074581f, 0.369892447f, + -0.929640896f, 0.368466830f, + -0.930205023f, 0.367040346f, + -0.930766961f, 0.365612998f, + -0.931326709f, 0.364184790f, + -0.931884266f, 0.362755724f, + -0.932439629f, 0.361325806f, + -0.932992799f, 0.359895037f, + -0.933543773f, 0.358463421f, + -0.934092550f, 0.357030961f, + -0.934639130f, 0.355597662f, + -0.935183510f, 0.354163525f, + -0.935725689f, 0.352728556f, + -0.936265667f, 0.351292756f, + -0.936803442f, 0.349856130f, + -0.937339012f, 0.348418680f, + -0.937872376f, 0.346980411f, + -0.938403534f, 0.345541325f, + -0.938932484f, 0.344101426f, + -0.939459224f, 0.342660717f, + -0.939983753f, 0.341219202f, + -0.940506071f, 0.339776884f, + -0.941026175f, 0.338333767f, + -0.941544065f, 0.336889853f, + -0.942059740f, 0.335445147f, + -0.942573198f, 0.333999651f, + -0.943084437f, 0.332553370f, + -0.943593458f, 0.331106306f, + -0.944100258f, 0.329658463f, + -0.944604837f, 0.328209844f, + -0.945107193f, 0.326760452f, + -0.945607325f, 0.325310292f, + -0.946105232f, 0.323859367f, + -0.946600913f, 0.322407679f, + -0.947094366f, 0.320955232f, + -0.947585591f, 0.319502031f, + -0.948074586f, 0.318048077f, + -0.948561350f, 0.316593376f, + -0.949045882f, 0.315137929f, + -0.949528181f, 0.313681740f, + -0.950008245f, 0.312224814f, + -0.950486074f, 0.310767153f, + -0.950961666f, 0.309308760f, + -0.951435021f, 0.307849640f, + -0.951906137f, 0.306389795f, + -0.952375013f, 0.304929230f, + -0.952841648f, 0.303467947f, + -0.953306040f, 0.302005949f, + -0.953768190f, 0.300543241f, + -0.954228095f, 0.299079826f, + -0.954685755f, 0.297615707f, + -0.955141168f, 0.296150888f, + -0.955594334f, 0.294685372f, + -0.956045251f, 0.293219163f, + -0.956493919f, 0.291752263f, + -0.956940336f, 0.290284677f, + -0.957384501f, 0.288816408f, + -0.957826413f, 0.287347460f, + -0.958266071f, 0.285877835f, + -0.958703475f, 0.284407537f, + -0.959138622f, 0.282936570f, + -0.959571513f, 0.281464938f, + -0.960002146f, 0.279992643f, + -0.960430519f, 0.278519689f, + -0.960856633f, 0.277046080f, + -0.961280486f, 0.275571819f, + -0.961702077f, 0.274096910f, + -0.962121404f, 0.272621355f, + -0.962538468f, 0.271145160f, + -0.962953267f, 0.269668326f, + -0.963365800f, 0.268190857f, + -0.963776066f, 0.266712757f, + -0.964184064f, 0.265234030f, + -0.964589793f, 0.263754679f, + -0.964993253f, 0.262274707f, + -0.965394442f, 0.260794118f, + -0.965793359f, 0.259312915f, + -0.966190003f, 0.257831102f, + -0.966584374f, 0.256348682f, + -0.966976471f, 0.254865660f, + -0.967366292f, 0.253382037f, + -0.967753837f, 0.251897818f, + -0.968139105f, 0.250413007f, + -0.968522094f, 0.248927606f, + -0.968902805f, 0.247441619f, + -0.969281235f, 0.245955050f, + -0.969657385f, 0.244467903f, + -0.970031253f, 0.242980180f, + -0.970402839f, 0.241491885f, + -0.970772141f, 0.240003022f, + -0.971139158f, 0.238513595f, + -0.971503891f, 0.237023606f, + -0.971866337f, 0.235533059f, + -0.972226497f, 0.234041959f, + -0.972584369f, 0.232550307f, + -0.972939952f, 0.231058108f, + -0.973293246f, 0.229565366f, + -0.973644250f, 0.228072083f, + -0.973992962f, 0.226578264f, + -0.974339383f, 0.225083911f, + -0.974683511f, 0.223589029f, + -0.975025345f, 0.222093621f, + -0.975364885f, 0.220597690f, + -0.975702130f, 0.219101240f, + -0.976037079f, 0.217604275f, + -0.976369731f, 0.216106797f, + -0.976700086f, 0.214608811f, + -0.977028143f, 0.213110320f, + -0.977353900f, 0.211611327f, + -0.977677358f, 0.210111837f, + -0.977998515f, 0.208611852f, + -0.978317371f, 0.207111376f, + -0.978633924f, 0.205610413f, + -0.978948175f, 0.204108966f, + -0.979260123f, 0.202607039f, + -0.979569766f, 0.201104635f, + -0.979877104f, 0.199601758f, + -0.980182136f, 0.198098411f, + -0.980484862f, 0.196594598f, + -0.980785280f, 0.195090322f, + -0.981083391f, 0.193585587f, + -0.981379193f, 0.192080397f, + -0.981672686f, 0.190574755f, + -0.981963869f, 0.189068664f, + -0.982252741f, 0.187562129f, + -0.982539302f, 0.186055152f, + -0.982823551f, 0.184547737f, + -0.983105487f, 0.183039888f, + -0.983385110f, 0.181531608f, + -0.983662419f, 0.180022901f, + -0.983937413f, 0.178513771f, + -0.984210092f, 0.177004220f, + -0.984480455f, 0.175494253f, + -0.984748502f, 0.173983873f, + -0.985014231f, 0.172473084f, + -0.985277642f, 0.170961889f, + -0.985538735f, 0.169450291f, + -0.985797509f, 0.167938295f, + -0.986053963f, 0.166425904f, + -0.986308097f, 0.164913120f, + -0.986559910f, 0.163399949f, + -0.986809402f, 0.161886394f, + -0.987056571f, 0.160372457f, + -0.987301418f, 0.158858143f, + -0.987543942f, 0.157343456f, + -0.987784142f, 0.155828398f, + -0.988022017f, 0.154312973f, + -0.988257568f, 0.152797185f, + -0.988490793f, 0.151281038f, + -0.988721692f, 0.149764535f, + -0.988950265f, 0.148247679f, + -0.989176510f, 0.146730474f, + -0.989400428f, 0.145212925f, + -0.989622017f, 0.143695033f, + -0.989841278f, 0.142176804f, + -0.990058210f, 0.140658239f, + -0.990272812f, 0.139139344f, + -0.990485084f, 0.137620122f, + -0.990695025f, 0.136100575f, + -0.990902635f, 0.134580709f, + -0.991107914f, 0.133060525f, + -0.991310860f, 0.131540029f, + -0.991511473f, 0.130019223f, + -0.991709754f, 0.128498111f, + -0.991905700f, 0.126976696f, + -0.992099313f, 0.125454983f, + -0.992290591f, 0.123932975f, + -0.992479535f, 0.122410675f, + -0.992666142f, 0.120888087f, + -0.992850414f, 0.119365215f, + -0.993032350f, 0.117842062f, + -0.993211949f, 0.116318631f, + -0.993389211f, 0.114794927f, + -0.993564136f, 0.113270952f, + -0.993736722f, 0.111746711f, + -0.993906970f, 0.110222207f, + -0.994074879f, 0.108697444f, + -0.994240449f, 0.107172425f, + -0.994403680f, 0.105647154f, + -0.994564571f, 0.104121634f, + -0.994723121f, 0.102595869f, + -0.994879331f, 0.101069863f, + -0.995033199f, 0.099543619f, + -0.995184727f, 0.098017140f, + -0.995333912f, 0.096490431f, + -0.995480755f, 0.094963495f, + -0.995625256f, 0.093436336f, + -0.995767414f, 0.091908956f, + -0.995907229f, 0.090381361f, + -0.996044701f, 0.088853553f, + -0.996179829f, 0.087325535f, + -0.996312612f, 0.085797312f, + -0.996443051f, 0.084268888f, + -0.996571146f, 0.082740265f, + -0.996696895f, 0.081211447f, + -0.996820299f, 0.079682438f, + -0.996941358f, 0.078153242f, + -0.997060070f, 0.076623861f, + -0.997176437f, 0.075094301f, + -0.997290457f, 0.073564564f, + -0.997402130f, 0.072034653f, + -0.997511456f, 0.070504573f, + -0.997618435f, 0.068974328f, + -0.997723067f, 0.067443920f, + -0.997825350f, 0.065913353f, + -0.997925286f, 0.064382631f, + -0.998022874f, 0.062851758f, + -0.998118113f, 0.061320736f, + -0.998211003f, 0.059789571f, + -0.998301545f, 0.058258265f, + -0.998389737f, 0.056726821f, + -0.998475581f, 0.055195244f, + -0.998559074f, 0.053663538f, + -0.998640218f, 0.052131705f, + -0.998719012f, 0.050599749f, + -0.998795456f, 0.049067674f, + -0.998869550f, 0.047535484f, + -0.998941293f, 0.046003182f, + -0.999010686f, 0.044470772f, + -0.999077728f, 0.042938257f, + -0.999142419f, 0.041405641f, + -0.999204759f, 0.039872928f, + -0.999264747f, 0.038340120f, + -0.999322385f, 0.036807223f, + -0.999377670f, 0.035274239f, + -0.999430605f, 0.033741172f, + -0.999481187f, 0.032208025f, + -0.999529418f, 0.030674803f, + -0.999575296f, 0.029141509f, + -0.999618822f, 0.027608146f, + -0.999659997f, 0.026074718f, + -0.999698819f, 0.024541229f, + -0.999735288f, 0.023007681f, + -0.999769405f, 0.021474080f, + -0.999801170f, 0.019940429f, + -0.999830582f, 0.018406730f, + -0.999857641f, 0.016872988f, + -0.999882347f, 0.015339206f, + -0.999904701f, 0.013805389f, + -0.999924702f, 0.012271538f, + -0.999942350f, 0.010737659f, + -0.999957645f, 0.009203755f, + -0.999970586f, 0.007669829f, + -0.999981175f, 0.006135885f, + -0.999989411f, 0.004601926f, + -0.999995294f, 0.003067957f, + -0.999998823f, 0.001533980f, + -1.000000000f, 0.000000000f, + -0.999998823f, -0.001533980f, + -0.999995294f, -0.003067957f, + -0.999989411f, -0.004601926f, + -0.999981175f, -0.006135885f, + -0.999970586f, -0.007669829f, + -0.999957645f, -0.009203755f, + -0.999942350f, -0.010737659f, + -0.999924702f, -0.012271538f, + -0.999904701f, -0.013805389f, + -0.999882347f, -0.015339206f, + -0.999857641f, -0.016872988f, + -0.999830582f, -0.018406730f, + -0.999801170f, -0.019940429f, + -0.999769405f, -0.021474080f, + -0.999735288f, -0.023007681f, + -0.999698819f, -0.024541229f, + -0.999659997f, -0.026074718f, + -0.999618822f, -0.027608146f, + -0.999575296f, -0.029141509f, + -0.999529418f, -0.030674803f, + -0.999481187f, -0.032208025f, + -0.999430605f, -0.033741172f, + -0.999377670f, -0.035274239f, + -0.999322385f, -0.036807223f, + -0.999264747f, -0.038340120f, + -0.999204759f, -0.039872928f, + -0.999142419f, -0.041405641f, + -0.999077728f, -0.042938257f, + -0.999010686f, -0.044470772f, + -0.998941293f, -0.046003182f, + -0.998869550f, -0.047535484f, + -0.998795456f, -0.049067674f, + -0.998719012f, -0.050599749f, + -0.998640218f, -0.052131705f, + -0.998559074f, -0.053663538f, + -0.998475581f, -0.055195244f, + -0.998389737f, -0.056726821f, + -0.998301545f, -0.058258265f, + -0.998211003f, -0.059789571f, + -0.998118113f, -0.061320736f, + -0.998022874f, -0.062851758f, + -0.997925286f, -0.064382631f, + -0.997825350f, -0.065913353f, + -0.997723067f, -0.067443920f, + -0.997618435f, -0.068974328f, + -0.997511456f, -0.070504573f, + -0.997402130f, -0.072034653f, + -0.997290457f, -0.073564564f, + -0.997176437f, -0.075094301f, + -0.997060070f, -0.076623861f, + -0.996941358f, -0.078153242f, + -0.996820299f, -0.079682438f, + -0.996696895f, -0.081211447f, + -0.996571146f, -0.082740265f, + -0.996443051f, -0.084268888f, + -0.996312612f, -0.085797312f, + -0.996179829f, -0.087325535f, + -0.996044701f, -0.088853553f, + -0.995907229f, -0.090381361f, + -0.995767414f, -0.091908956f, + -0.995625256f, -0.093436336f, + -0.995480755f, -0.094963495f, + -0.995333912f, -0.096490431f, + -0.995184727f, -0.098017140f, + -0.995033199f, -0.099543619f, + -0.994879331f, -0.101069863f, + -0.994723121f, -0.102595869f, + -0.994564571f, -0.104121634f, + -0.994403680f, -0.105647154f, + -0.994240449f, -0.107172425f, + -0.994074879f, -0.108697444f, + -0.993906970f, -0.110222207f, + -0.993736722f, -0.111746711f, + -0.993564136f, -0.113270952f, + -0.993389211f, -0.114794927f, + -0.993211949f, -0.116318631f, + -0.993032350f, -0.117842062f, + -0.992850414f, -0.119365215f, + -0.992666142f, -0.120888087f, + -0.992479535f, -0.122410675f, + -0.992290591f, -0.123932975f, + -0.992099313f, -0.125454983f, + -0.991905700f, -0.126976696f, + -0.991709754f, -0.128498111f, + -0.991511473f, -0.130019223f, + -0.991310860f, -0.131540029f, + -0.991107914f, -0.133060525f, + -0.990902635f, -0.134580709f, + -0.990695025f, -0.136100575f, + -0.990485084f, -0.137620122f, + -0.990272812f, -0.139139344f, + -0.990058210f, -0.140658239f, + -0.989841278f, -0.142176804f, + -0.989622017f, -0.143695033f, + -0.989400428f, -0.145212925f, + -0.989176510f, -0.146730474f, + -0.988950265f, -0.148247679f, + -0.988721692f, -0.149764535f, + -0.988490793f, -0.151281038f, + -0.988257568f, -0.152797185f, + -0.988022017f, -0.154312973f, + -0.987784142f, -0.155828398f, + -0.987543942f, -0.157343456f, + -0.987301418f, -0.158858143f, + -0.987056571f, -0.160372457f, + -0.986809402f, -0.161886394f, + -0.986559910f, -0.163399949f, + -0.986308097f, -0.164913120f, + -0.986053963f, -0.166425904f, + -0.985797509f, -0.167938295f, + -0.985538735f, -0.169450291f, + -0.985277642f, -0.170961889f, + -0.985014231f, -0.172473084f, + -0.984748502f, -0.173983873f, + -0.984480455f, -0.175494253f, + -0.984210092f, -0.177004220f, + -0.983937413f, -0.178513771f, + -0.983662419f, -0.180022901f, + -0.983385110f, -0.181531608f, + -0.983105487f, -0.183039888f, + -0.982823551f, -0.184547737f, + -0.982539302f, -0.186055152f, + -0.982252741f, -0.187562129f, + -0.981963869f, -0.189068664f, + -0.981672686f, -0.190574755f, + -0.981379193f, -0.192080397f, + -0.981083391f, -0.193585587f, + -0.980785280f, -0.195090322f, + -0.980484862f, -0.196594598f, + -0.980182136f, -0.198098411f, + -0.979877104f, -0.199601758f, + -0.979569766f, -0.201104635f, + -0.979260123f, -0.202607039f, + -0.978948175f, -0.204108966f, + -0.978633924f, -0.205610413f, + -0.978317371f, -0.207111376f, + -0.977998515f, -0.208611852f, + -0.977677358f, -0.210111837f, + -0.977353900f, -0.211611327f, + -0.977028143f, -0.213110320f, + -0.976700086f, -0.214608811f, + -0.976369731f, -0.216106797f, + -0.976037079f, -0.217604275f, + -0.975702130f, -0.219101240f, + -0.975364885f, -0.220597690f, + -0.975025345f, -0.222093621f, + -0.974683511f, -0.223589029f, + -0.974339383f, -0.225083911f, + -0.973992962f, -0.226578264f, + -0.973644250f, -0.228072083f, + -0.973293246f, -0.229565366f, + -0.972939952f, -0.231058108f, + -0.972584369f, -0.232550307f, + -0.972226497f, -0.234041959f, + -0.971866337f, -0.235533059f, + -0.971503891f, -0.237023606f, + -0.971139158f, -0.238513595f, + -0.970772141f, -0.240003022f, + -0.970402839f, -0.241491885f, + -0.970031253f, -0.242980180f, + -0.969657385f, -0.244467903f, + -0.969281235f, -0.245955050f, + -0.968902805f, -0.247441619f, + -0.968522094f, -0.248927606f, + -0.968139105f, -0.250413007f, + -0.967753837f, -0.251897818f, + -0.967366292f, -0.253382037f, + -0.966976471f, -0.254865660f, + -0.966584374f, -0.256348682f, + -0.966190003f, -0.257831102f, + -0.965793359f, -0.259312915f, + -0.965394442f, -0.260794118f, + -0.964993253f, -0.262274707f, + -0.964589793f, -0.263754679f, + -0.964184064f, -0.265234030f, + -0.963776066f, -0.266712757f, + -0.963365800f, -0.268190857f, + -0.962953267f, -0.269668326f, + -0.962538468f, -0.271145160f, + -0.962121404f, -0.272621355f, + -0.961702077f, -0.274096910f, + -0.961280486f, -0.275571819f, + -0.960856633f, -0.277046080f, + -0.960430519f, -0.278519689f, + -0.960002146f, -0.279992643f, + -0.959571513f, -0.281464938f, + -0.959138622f, -0.282936570f, + -0.958703475f, -0.284407537f, + -0.958266071f, -0.285877835f, + -0.957826413f, -0.287347460f, + -0.957384501f, -0.288816408f, + -0.956940336f, -0.290284677f, + -0.956493919f, -0.291752263f, + -0.956045251f, -0.293219163f, + -0.955594334f, -0.294685372f, + -0.955141168f, -0.296150888f, + -0.954685755f, -0.297615707f, + -0.954228095f, -0.299079826f, + -0.953768190f, -0.300543241f, + -0.953306040f, -0.302005949f, + -0.952841648f, -0.303467947f, + -0.952375013f, -0.304929230f, + -0.951906137f, -0.306389795f, + -0.951435021f, -0.307849640f, + -0.950961666f, -0.309308760f, + -0.950486074f, -0.310767153f, + -0.950008245f, -0.312224814f, + -0.949528181f, -0.313681740f, + -0.949045882f, -0.315137929f, + -0.948561350f, -0.316593376f, + -0.948074586f, -0.318048077f, + -0.947585591f, -0.319502031f, + -0.947094366f, -0.320955232f, + -0.946600913f, -0.322407679f, + -0.946105232f, -0.323859367f, + -0.945607325f, -0.325310292f, + -0.945107193f, -0.326760452f, + -0.944604837f, -0.328209844f, + -0.944100258f, -0.329658463f, + -0.943593458f, -0.331106306f, + -0.943084437f, -0.332553370f, + -0.942573198f, -0.333999651f, + -0.942059740f, -0.335445147f, + -0.941544065f, -0.336889853f, + -0.941026175f, -0.338333767f, + -0.940506071f, -0.339776884f, + -0.939983753f, -0.341219202f, + -0.939459224f, -0.342660717f, + -0.938932484f, -0.344101426f, + -0.938403534f, -0.345541325f, + -0.937872376f, -0.346980411f, + -0.937339012f, -0.348418680f, + -0.936803442f, -0.349856130f, + -0.936265667f, -0.351292756f, + -0.935725689f, -0.352728556f, + -0.935183510f, -0.354163525f, + -0.934639130f, -0.355597662f, + -0.934092550f, -0.357030961f, + -0.933543773f, -0.358463421f, + -0.932992799f, -0.359895037f, + -0.932439629f, -0.361325806f, + -0.931884266f, -0.362755724f, + -0.931326709f, -0.364184790f, + -0.930766961f, -0.365612998f, + -0.930205023f, -0.367040346f, + -0.929640896f, -0.368466830f, + -0.929074581f, -0.369892447f, + -0.928506080f, -0.371317194f, + -0.927935395f, -0.372741067f, + -0.927362526f, -0.374164063f, + -0.926787474f, -0.375586178f, + -0.926210242f, -0.377007410f, + -0.925630831f, -0.378427755f, + -0.925049241f, -0.379847209f, + -0.924465474f, -0.381265769f, + -0.923879533f, -0.382683432f, + -0.923291417f, -0.384100195f, + -0.922701128f, -0.385516054f, + -0.922108669f, -0.386931006f, + -0.921514039f, -0.388345047f, + -0.920917242f, -0.389758174f, + -0.920318277f, -0.391170384f, + -0.919717146f, -0.392581674f, + -0.919113852f, -0.393992040f, + -0.918508394f, -0.395401479f, + -0.917900776f, -0.396809987f, + -0.917290997f, -0.398217562f, + -0.916679060f, -0.399624200f, + -0.916064966f, -0.401029897f, + -0.915448716f, -0.402434651f, + -0.914830312f, -0.403838458f, + -0.914209756f, -0.405241314f, + -0.913587048f, -0.406643217f, + -0.912962190f, -0.408044163f, + -0.912335185f, -0.409444149f, + -0.911706032f, -0.410843171f, + -0.911074734f, -0.412241227f, + -0.910441292f, -0.413638312f, + -0.909805708f, -0.415034424f, + -0.909167983f, -0.416429560f, + -0.908528119f, -0.417823716f, + -0.907886116f, -0.419216888f, + -0.907241978f, -0.420609074f, + -0.906595705f, -0.422000271f, + -0.905947298f, -0.423390474f, + -0.905296759f, -0.424779681f, + -0.904644091f, -0.426167889f, + -0.903989293f, -0.427555093f, + -0.903332368f, -0.428941292f, + -0.902673318f, -0.430326481f, + -0.902012144f, -0.431710658f, + -0.901348847f, -0.433093819f, + -0.900683429f, -0.434475961f, + -0.900015892f, -0.435857080f, + -0.899346237f, -0.437237174f, + -0.898674466f, -0.438616239f, + -0.898000580f, -0.439994271f, + -0.897324581f, -0.441371269f, + -0.896646470f, -0.442747228f, + -0.895966250f, -0.444122145f, + -0.895283921f, -0.445496017f, + -0.894599486f, -0.446868840f, + -0.893912945f, -0.448240612f, + -0.893224301f, -0.449611330f, + -0.892533555f, -0.450980989f, + -0.891840709f, -0.452349587f, + -0.891145765f, -0.453717121f, + -0.890448723f, -0.455083587f, + -0.889749586f, -0.456448982f, + -0.889048356f, -0.457813304f, + -0.888345033f, -0.459176548f, + -0.887639620f, -0.460538711f, + -0.886932119f, -0.461899791f, + -0.886222530f, -0.463259784f, + -0.885510856f, -0.464618686f, + -0.884797098f, -0.465976496f, + -0.884081259f, -0.467333209f, + -0.883363339f, -0.468688822f, + -0.882643340f, -0.470043332f, + -0.881921264f, -0.471396737f, + -0.881197113f, -0.472749032f, + -0.880470889f, -0.474100215f, + -0.879742593f, -0.475450282f, + -0.879012226f, -0.476799230f, + -0.878279792f, -0.478147056f, + -0.877545290f, -0.479493758f, + -0.876808724f, -0.480839331f, + -0.876070094f, -0.482183772f, + -0.875329403f, -0.483527079f, + -0.874586652f, -0.484869248f, + -0.873841843f, -0.486210276f, + -0.873094978f, -0.487550160f, + -0.872346059f, -0.488888897f, + -0.871595087f, -0.490226483f, + -0.870842063f, -0.491562916f, + -0.870086991f, -0.492898192f, + -0.869329871f, -0.494232309f, + -0.868570706f, -0.495565262f, + -0.867809497f, -0.496897049f, + -0.867046246f, -0.498227667f, + -0.866280954f, -0.499557113f, + -0.865513624f, -0.500885383f, + -0.864744258f, -0.502212474f, + -0.863972856f, -0.503538384f, + -0.863199422f, -0.504863109f, + -0.862423956f, -0.506186645f, + -0.861646461f, -0.507508991f, + -0.860866939f, -0.508830143f, + -0.860085390f, -0.510150097f, + -0.859301818f, -0.511468850f, + -0.858516224f, -0.512786401f, + -0.857728610f, -0.514102744f, + -0.856938977f, -0.515417878f, + -0.856147328f, -0.516731799f, + -0.855353665f, -0.518044504f, + -0.854557988f, -0.519355990f, + -0.853760301f, -0.520666254f, + -0.852960605f, -0.521975293f, + -0.852158902f, -0.523283103f, + -0.851355193f, -0.524589683f, + -0.850549481f, -0.525895027f, + -0.849741768f, -0.527199135f, + -0.848932055f, -0.528502002f, + -0.848120345f, -0.529803625f, + -0.847306639f, -0.531104001f, + -0.846490939f, -0.532403128f, + -0.845673247f, -0.533701002f, + -0.844853565f, -0.534997620f, + -0.844031895f, -0.536292979f, + -0.843208240f, -0.537587076f, + -0.842382600f, -0.538879909f, + -0.841554977f, -0.540171473f, + -0.840725375f, -0.541461766f, + -0.839893794f, -0.542750785f, + -0.839060237f, -0.544038527f, + -0.838224706f, -0.545324988f, + -0.837387202f, -0.546610167f, + -0.836547727f, -0.547894059f, + -0.835706284f, -0.549176662f, + -0.834862875f, -0.550457973f, + -0.834017501f, -0.551737988f, + -0.833170165f, -0.553016706f, + -0.832320868f, -0.554294121f, + -0.831469612f, -0.555570233f, + -0.830616400f, -0.556845037f, + -0.829761234f, -0.558118531f, + -0.828904115f, -0.559390712f, + -0.828045045f, -0.560661576f, + -0.827184027f, -0.561931121f, + -0.826321063f, -0.563199344f, + -0.825456154f, -0.564466242f, + -0.824589303f, -0.565731811f, + -0.823720511f, -0.566996049f, + -0.822849781f, -0.568258953f, + -0.821977115f, -0.569520519f, + -0.821102515f, -0.570780746f, + -0.820225983f, -0.572039629f, + -0.819347520f, -0.573297167f, + -0.818467130f, -0.574553355f, + -0.817584813f, -0.575808191f, + -0.816700573f, -0.577061673f, + -0.815814411f, -0.578313796f, + -0.814926329f, -0.579564559f, + -0.814036330f, -0.580813958f, + -0.813144415f, -0.582061990f, + -0.812250587f, -0.583308653f, + -0.811354847f, -0.584553943f, + -0.810457198f, -0.585797857f, + -0.809557642f, -0.587040394f, + -0.808656182f, -0.588281548f, + -0.807752818f, -0.589521319f, + -0.806847554f, -0.590759702f, + -0.805940391f, -0.591996695f, + -0.805031331f, -0.593232295f, + -0.804120377f, -0.594466499f, + -0.803207531f, -0.595699304f, + -0.802292796f, -0.596930708f, + -0.801376172f, -0.598160707f, + -0.800457662f, -0.599389298f, + -0.799537269f, -0.600616479f, + -0.798614995f, -0.601842247f, + -0.797690841f, -0.603066599f, + -0.796764810f, -0.604289531f, + -0.795836905f, -0.605511041f, + -0.794907126f, -0.606731127f, + -0.793975478f, -0.607949785f, + -0.793041960f, -0.609167012f, + -0.792106577f, -0.610382806f, + -0.791169330f, -0.611597164f, + -0.790230221f, -0.612810082f, + -0.789289253f, -0.614021559f, + -0.788346428f, -0.615231591f, + -0.787401747f, -0.616440175f, + -0.786455214f, -0.617647308f, + -0.785506830f, -0.618852988f, + -0.784556597f, -0.620057212f, + -0.783604519f, -0.621259977f, + -0.782650596f, -0.622461279f, + -0.781694832f, -0.623661118f, + -0.780737229f, -0.624859488f, + -0.779777788f, -0.626056388f, + -0.778816512f, -0.627251815f, + -0.777853404f, -0.628445767f, + -0.776888466f, -0.629638239f, + -0.775921699f, -0.630829230f, + -0.774953107f, -0.632018736f, + -0.773982691f, -0.633206755f, + -0.773010453f, -0.634393284f, + -0.772036397f, -0.635578320f, + -0.771060524f, -0.636761861f, + -0.770082837f, -0.637943904f, + -0.769103338f, -0.639124445f, + -0.768122029f, -0.640303482f, + -0.767138912f, -0.641481013f, + -0.766153990f, -0.642657034f, + -0.765167266f, -0.643831543f, + -0.764178741f, -0.645004537f, + -0.763188417f, -0.646176013f, + -0.762196298f, -0.647345969f, + -0.761202385f, -0.648514401f, + -0.760206682f, -0.649681307f, + -0.759209189f, -0.650846685f, + -0.758209910f, -0.652010531f, + -0.757208847f, -0.653172843f, + -0.756206001f, -0.654333618f, + -0.755201377f, -0.655492853f, + -0.754194975f, -0.656650546f, + -0.753186799f, -0.657806693f, + -0.752176850f, -0.658961293f, + -0.751165132f, -0.660114342f, + -0.750151646f, -0.661265838f, + -0.749136395f, -0.662415778f, + -0.748119380f, -0.663564159f, + -0.747100606f, -0.664710978f, + -0.746080074f, -0.665856234f, + -0.745057785f, -0.666999922f, + -0.744033744f, -0.668142041f, + -0.743007952f, -0.669282588f, + -0.741980412f, -0.670421560f, + -0.740951125f, -0.671558955f, + -0.739920095f, -0.672694769f, + -0.738887324f, -0.673829000f, + -0.737852815f, -0.674961646f, + -0.736816569f, -0.676092704f, + -0.735778589f, -0.677222170f, + -0.734738878f, -0.678350043f, + -0.733697438f, -0.679476320f, + -0.732654272f, -0.680600998f, + -0.731609381f, -0.681724074f, + -0.730562769f, -0.682845546f, + -0.729514438f, -0.683965412f, + -0.728464390f, -0.685083668f, + -0.727412629f, -0.686200312f, + -0.726359155f, -0.687315341f, + -0.725303972f, -0.688428753f, + -0.724247083f, -0.689540545f, + -0.723188489f, -0.690650714f, + -0.722128194f, -0.691759258f, + -0.721066199f, -0.692866175f, + -0.720002508f, -0.693971461f, + -0.718937122f, -0.695075114f, + -0.717870045f, -0.696177131f, + -0.716801279f, -0.697277511f, + -0.715730825f, -0.698376249f, + -0.714658688f, -0.699473345f, + -0.713584869f, -0.700568794f, + -0.712509371f, -0.701662595f, + -0.711432196f, -0.702754744f, + -0.710353347f, -0.703845241f, + -0.709272826f, -0.704934080f, + -0.708190637f, -0.706021261f, + -0.707106781f, -0.707106781f, + -0.706021261f, -0.708190637f, + -0.704934080f, -0.709272826f, + -0.703845241f, -0.710353347f, + -0.702754744f, -0.711432196f, + -0.701662595f, -0.712509371f, + -0.700568794f, -0.713584869f, + -0.699473345f, -0.714658688f, + -0.698376249f, -0.715730825f, + -0.697277511f, -0.716801279f, + -0.696177131f, -0.717870045f, + -0.695075114f, -0.718937122f, + -0.693971461f, -0.720002508f, + -0.692866175f, -0.721066199f, + -0.691759258f, -0.722128194f, + -0.690650714f, -0.723188489f, + -0.689540545f, -0.724247083f, + -0.688428753f, -0.725303972f, + -0.687315341f, -0.726359155f, + -0.686200312f, -0.727412629f, + -0.685083668f, -0.728464390f, + -0.683965412f, -0.729514438f, + -0.682845546f, -0.730562769f, + -0.681724074f, -0.731609381f, + -0.680600998f, -0.732654272f, + -0.679476320f, -0.733697438f, + -0.678350043f, -0.734738878f, + -0.677222170f, -0.735778589f, + -0.676092704f, -0.736816569f, + -0.674961646f, -0.737852815f, + -0.673829000f, -0.738887324f, + -0.672694769f, -0.739920095f, + -0.671558955f, -0.740951125f, + -0.670421560f, -0.741980412f, + -0.669282588f, -0.743007952f, + -0.668142041f, -0.744033744f, + -0.666999922f, -0.745057785f, + -0.665856234f, -0.746080074f, + -0.664710978f, -0.747100606f, + -0.663564159f, -0.748119380f, + -0.662415778f, -0.749136395f, + -0.661265838f, -0.750151646f, + -0.660114342f, -0.751165132f, + -0.658961293f, -0.752176850f, + -0.657806693f, -0.753186799f, + -0.656650546f, -0.754194975f, + -0.655492853f, -0.755201377f, + -0.654333618f, -0.756206001f, + -0.653172843f, -0.757208847f, + -0.652010531f, -0.758209910f, + -0.650846685f, -0.759209189f, + -0.649681307f, -0.760206682f, + -0.648514401f, -0.761202385f, + -0.647345969f, -0.762196298f, + -0.646176013f, -0.763188417f, + -0.645004537f, -0.764178741f, + -0.643831543f, -0.765167266f, + -0.642657034f, -0.766153990f, + -0.641481013f, -0.767138912f, + -0.640303482f, -0.768122029f, + -0.639124445f, -0.769103338f, + -0.637943904f, -0.770082837f, + -0.636761861f, -0.771060524f, + -0.635578320f, -0.772036397f, + -0.634393284f, -0.773010453f, + -0.633206755f, -0.773982691f, + -0.632018736f, -0.774953107f, + -0.630829230f, -0.775921699f, + -0.629638239f, -0.776888466f, + -0.628445767f, -0.777853404f, + -0.627251815f, -0.778816512f, + -0.626056388f, -0.779777788f, + -0.624859488f, -0.780737229f, + -0.623661118f, -0.781694832f, + -0.622461279f, -0.782650596f, + -0.621259977f, -0.783604519f, + -0.620057212f, -0.784556597f, + -0.618852988f, -0.785506830f, + -0.617647308f, -0.786455214f, + -0.616440175f, -0.787401747f, + -0.615231591f, -0.788346428f, + -0.614021559f, -0.789289253f, + -0.612810082f, -0.790230221f, + -0.611597164f, -0.791169330f, + -0.610382806f, -0.792106577f, + -0.609167012f, -0.793041960f, + -0.607949785f, -0.793975478f, + -0.606731127f, -0.794907126f, + -0.605511041f, -0.795836905f, + -0.604289531f, -0.796764810f, + -0.603066599f, -0.797690841f, + -0.601842247f, -0.798614995f, + -0.600616479f, -0.799537269f, + -0.599389298f, -0.800457662f, + -0.598160707f, -0.801376172f, + -0.596930708f, -0.802292796f, + -0.595699304f, -0.803207531f, + -0.594466499f, -0.804120377f, + -0.593232295f, -0.805031331f, + -0.591996695f, -0.805940391f, + -0.590759702f, -0.806847554f, + -0.589521319f, -0.807752818f, + -0.588281548f, -0.808656182f, + -0.587040394f, -0.809557642f, + -0.585797857f, -0.810457198f, + -0.584553943f, -0.811354847f, + -0.583308653f, -0.812250587f, + -0.582061990f, -0.813144415f, + -0.580813958f, -0.814036330f, + -0.579564559f, -0.814926329f, + -0.578313796f, -0.815814411f, + -0.577061673f, -0.816700573f, + -0.575808191f, -0.817584813f, + -0.574553355f, -0.818467130f, + -0.573297167f, -0.819347520f, + -0.572039629f, -0.820225983f, + -0.570780746f, -0.821102515f, + -0.569520519f, -0.821977115f, + -0.568258953f, -0.822849781f, + -0.566996049f, -0.823720511f, + -0.565731811f, -0.824589303f, + -0.564466242f, -0.825456154f, + -0.563199344f, -0.826321063f, + -0.561931121f, -0.827184027f, + -0.560661576f, -0.828045045f, + -0.559390712f, -0.828904115f, + -0.558118531f, -0.829761234f, + -0.556845037f, -0.830616400f, + -0.555570233f, -0.831469612f, + -0.554294121f, -0.832320868f, + -0.553016706f, -0.833170165f, + -0.551737988f, -0.834017501f, + -0.550457973f, -0.834862875f, + -0.549176662f, -0.835706284f, + -0.547894059f, -0.836547727f, + -0.546610167f, -0.837387202f, + -0.545324988f, -0.838224706f, + -0.544038527f, -0.839060237f, + -0.542750785f, -0.839893794f, + -0.541461766f, -0.840725375f, + -0.540171473f, -0.841554977f, + -0.538879909f, -0.842382600f, + -0.537587076f, -0.843208240f, + -0.536292979f, -0.844031895f, + -0.534997620f, -0.844853565f, + -0.533701002f, -0.845673247f, + -0.532403128f, -0.846490939f, + -0.531104001f, -0.847306639f, + -0.529803625f, -0.848120345f, + -0.528502002f, -0.848932055f, + -0.527199135f, -0.849741768f, + -0.525895027f, -0.850549481f, + -0.524589683f, -0.851355193f, + -0.523283103f, -0.852158902f, + -0.521975293f, -0.852960605f, + -0.520666254f, -0.853760301f, + -0.519355990f, -0.854557988f, + -0.518044504f, -0.855353665f, + -0.516731799f, -0.856147328f, + -0.515417878f, -0.856938977f, + -0.514102744f, -0.857728610f, + -0.512786401f, -0.858516224f, + -0.511468850f, -0.859301818f, + -0.510150097f, -0.860085390f, + -0.508830143f, -0.860866939f, + -0.507508991f, -0.861646461f, + -0.506186645f, -0.862423956f, + -0.504863109f, -0.863199422f, + -0.503538384f, -0.863972856f, + -0.502212474f, -0.864744258f, + -0.500885383f, -0.865513624f, + -0.499557113f, -0.866280954f, + -0.498227667f, -0.867046246f, + -0.496897049f, -0.867809497f, + -0.495565262f, -0.868570706f, + -0.494232309f, -0.869329871f, + -0.492898192f, -0.870086991f, + -0.491562916f, -0.870842063f, + -0.490226483f, -0.871595087f, + -0.488888897f, -0.872346059f, + -0.487550160f, -0.873094978f, + -0.486210276f, -0.873841843f, + -0.484869248f, -0.874586652f, + -0.483527079f, -0.875329403f, + -0.482183772f, -0.876070094f, + -0.480839331f, -0.876808724f, + -0.479493758f, -0.877545290f, + -0.478147056f, -0.878279792f, + -0.476799230f, -0.879012226f, + -0.475450282f, -0.879742593f, + -0.474100215f, -0.880470889f, + -0.472749032f, -0.881197113f, + -0.471396737f, -0.881921264f, + -0.470043332f, -0.882643340f, + -0.468688822f, -0.883363339f, + -0.467333209f, -0.884081259f, + -0.465976496f, -0.884797098f, + -0.464618686f, -0.885510856f, + -0.463259784f, -0.886222530f, + -0.461899791f, -0.886932119f, + -0.460538711f, -0.887639620f, + -0.459176548f, -0.888345033f, + -0.457813304f, -0.889048356f, + -0.456448982f, -0.889749586f, + -0.455083587f, -0.890448723f, + -0.453717121f, -0.891145765f, + -0.452349587f, -0.891840709f, + -0.450980989f, -0.892533555f, + -0.449611330f, -0.893224301f, + -0.448240612f, -0.893912945f, + -0.446868840f, -0.894599486f, + -0.445496017f, -0.895283921f, + -0.444122145f, -0.895966250f, + -0.442747228f, -0.896646470f, + -0.441371269f, -0.897324581f, + -0.439994271f, -0.898000580f, + -0.438616239f, -0.898674466f, + -0.437237174f, -0.899346237f, + -0.435857080f, -0.900015892f, + -0.434475961f, -0.900683429f, + -0.433093819f, -0.901348847f, + -0.431710658f, -0.902012144f, + -0.430326481f, -0.902673318f, + -0.428941292f, -0.903332368f, + -0.427555093f, -0.903989293f, + -0.426167889f, -0.904644091f, + -0.424779681f, -0.905296759f, + -0.423390474f, -0.905947298f, + -0.422000271f, -0.906595705f, + -0.420609074f, -0.907241978f, + -0.419216888f, -0.907886116f, + -0.417823716f, -0.908528119f, + -0.416429560f, -0.909167983f, + -0.415034424f, -0.909805708f, + -0.413638312f, -0.910441292f, + -0.412241227f, -0.911074734f, + -0.410843171f, -0.911706032f, + -0.409444149f, -0.912335185f, + -0.408044163f, -0.912962190f, + -0.406643217f, -0.913587048f, + -0.405241314f, -0.914209756f, + -0.403838458f, -0.914830312f, + -0.402434651f, -0.915448716f, + -0.401029897f, -0.916064966f, + -0.399624200f, -0.916679060f, + -0.398217562f, -0.917290997f, + -0.396809987f, -0.917900776f, + -0.395401479f, -0.918508394f, + -0.393992040f, -0.919113852f, + -0.392581674f, -0.919717146f, + -0.391170384f, -0.920318277f, + -0.389758174f, -0.920917242f, + -0.388345047f, -0.921514039f, + -0.386931006f, -0.922108669f, + -0.385516054f, -0.922701128f, + -0.384100195f, -0.923291417f, + -0.382683432f, -0.923879533f, + -0.381265769f, -0.924465474f, + -0.379847209f, -0.925049241f, + -0.378427755f, -0.925630831f, + -0.377007410f, -0.926210242f, + -0.375586178f, -0.926787474f, + -0.374164063f, -0.927362526f, + -0.372741067f, -0.927935395f, + -0.371317194f, -0.928506080f, + -0.369892447f, -0.929074581f, + -0.368466830f, -0.929640896f, + -0.367040346f, -0.930205023f, + -0.365612998f, -0.930766961f, + -0.364184790f, -0.931326709f, + -0.362755724f, -0.931884266f, + -0.361325806f, -0.932439629f, + -0.359895037f, -0.932992799f, + -0.358463421f, -0.933543773f, + -0.357030961f, -0.934092550f, + -0.355597662f, -0.934639130f, + -0.354163525f, -0.935183510f, + -0.352728556f, -0.935725689f, + -0.351292756f, -0.936265667f, + -0.349856130f, -0.936803442f, + -0.348418680f, -0.937339012f, + -0.346980411f, -0.937872376f, + -0.345541325f, -0.938403534f, + -0.344101426f, -0.938932484f, + -0.342660717f, -0.939459224f, + -0.341219202f, -0.939983753f, + -0.339776884f, -0.940506071f, + -0.338333767f, -0.941026175f, + -0.336889853f, -0.941544065f, + -0.335445147f, -0.942059740f, + -0.333999651f, -0.942573198f, + -0.332553370f, -0.943084437f, + -0.331106306f, -0.943593458f, + -0.329658463f, -0.944100258f, + -0.328209844f, -0.944604837f, + -0.326760452f, -0.945107193f, + -0.325310292f, -0.945607325f, + -0.323859367f, -0.946105232f, + -0.322407679f, -0.946600913f, + -0.320955232f, -0.947094366f, + -0.319502031f, -0.947585591f, + -0.318048077f, -0.948074586f, + -0.316593376f, -0.948561350f, + -0.315137929f, -0.949045882f, + -0.313681740f, -0.949528181f, + -0.312224814f, -0.950008245f, + -0.310767153f, -0.950486074f, + -0.309308760f, -0.950961666f, + -0.307849640f, -0.951435021f, + -0.306389795f, -0.951906137f, + -0.304929230f, -0.952375013f, + -0.303467947f, -0.952841648f, + -0.302005949f, -0.953306040f, + -0.300543241f, -0.953768190f, + -0.299079826f, -0.954228095f, + -0.297615707f, -0.954685755f, + -0.296150888f, -0.955141168f, + -0.294685372f, -0.955594334f, + -0.293219163f, -0.956045251f, + -0.291752263f, -0.956493919f, + -0.290284677f, -0.956940336f, + -0.288816408f, -0.957384501f, + -0.287347460f, -0.957826413f, + -0.285877835f, -0.958266071f, + -0.284407537f, -0.958703475f, + -0.282936570f, -0.959138622f, + -0.281464938f, -0.959571513f, + -0.279992643f, -0.960002146f, + -0.278519689f, -0.960430519f, + -0.277046080f, -0.960856633f, + -0.275571819f, -0.961280486f, + -0.274096910f, -0.961702077f, + -0.272621355f, -0.962121404f, + -0.271145160f, -0.962538468f, + -0.269668326f, -0.962953267f, + -0.268190857f, -0.963365800f, + -0.266712757f, -0.963776066f, + -0.265234030f, -0.964184064f, + -0.263754679f, -0.964589793f, + -0.262274707f, -0.964993253f, + -0.260794118f, -0.965394442f, + -0.259312915f, -0.965793359f, + -0.257831102f, -0.966190003f, + -0.256348682f, -0.966584374f, + -0.254865660f, -0.966976471f, + -0.253382037f, -0.967366292f, + -0.251897818f, -0.967753837f, + -0.250413007f, -0.968139105f, + -0.248927606f, -0.968522094f, + -0.247441619f, -0.968902805f, + -0.245955050f, -0.969281235f, + -0.244467903f, -0.969657385f, + -0.242980180f, -0.970031253f, + -0.241491885f, -0.970402839f, + -0.240003022f, -0.970772141f, + -0.238513595f, -0.971139158f, + -0.237023606f, -0.971503891f, + -0.235533059f, -0.971866337f, + -0.234041959f, -0.972226497f, + -0.232550307f, -0.972584369f, + -0.231058108f, -0.972939952f, + -0.229565366f, -0.973293246f, + -0.228072083f, -0.973644250f, + -0.226578264f, -0.973992962f, + -0.225083911f, -0.974339383f, + -0.223589029f, -0.974683511f, + -0.222093621f, -0.975025345f, + -0.220597690f, -0.975364885f, + -0.219101240f, -0.975702130f, + -0.217604275f, -0.976037079f, + -0.216106797f, -0.976369731f, + -0.214608811f, -0.976700086f, + -0.213110320f, -0.977028143f, + -0.211611327f, -0.977353900f, + -0.210111837f, -0.977677358f, + -0.208611852f, -0.977998515f, + -0.207111376f, -0.978317371f, + -0.205610413f, -0.978633924f, + -0.204108966f, -0.978948175f, + -0.202607039f, -0.979260123f, + -0.201104635f, -0.979569766f, + -0.199601758f, -0.979877104f, + -0.198098411f, -0.980182136f, + -0.196594598f, -0.980484862f, + -0.195090322f, -0.980785280f, + -0.193585587f, -0.981083391f, + -0.192080397f, -0.981379193f, + -0.190574755f, -0.981672686f, + -0.189068664f, -0.981963869f, + -0.187562129f, -0.982252741f, + -0.186055152f, -0.982539302f, + -0.184547737f, -0.982823551f, + -0.183039888f, -0.983105487f, + -0.181531608f, -0.983385110f, + -0.180022901f, -0.983662419f, + -0.178513771f, -0.983937413f, + -0.177004220f, -0.984210092f, + -0.175494253f, -0.984480455f, + -0.173983873f, -0.984748502f, + -0.172473084f, -0.985014231f, + -0.170961889f, -0.985277642f, + -0.169450291f, -0.985538735f, + -0.167938295f, -0.985797509f, + -0.166425904f, -0.986053963f, + -0.164913120f, -0.986308097f, + -0.163399949f, -0.986559910f, + -0.161886394f, -0.986809402f, + -0.160372457f, -0.987056571f, + -0.158858143f, -0.987301418f, + -0.157343456f, -0.987543942f, + -0.155828398f, -0.987784142f, + -0.154312973f, -0.988022017f, + -0.152797185f, -0.988257568f, + -0.151281038f, -0.988490793f, + -0.149764535f, -0.988721692f, + -0.148247679f, -0.988950265f, + -0.146730474f, -0.989176510f, + -0.145212925f, -0.989400428f, + -0.143695033f, -0.989622017f, + -0.142176804f, -0.989841278f, + -0.140658239f, -0.990058210f, + -0.139139344f, -0.990272812f, + -0.137620122f, -0.990485084f, + -0.136100575f, -0.990695025f, + -0.134580709f, -0.990902635f, + -0.133060525f, -0.991107914f, + -0.131540029f, -0.991310860f, + -0.130019223f, -0.991511473f, + -0.128498111f, -0.991709754f, + -0.126976696f, -0.991905700f, + -0.125454983f, -0.992099313f, + -0.123932975f, -0.992290591f, + -0.122410675f, -0.992479535f, + -0.120888087f, -0.992666142f, + -0.119365215f, -0.992850414f, + -0.117842062f, -0.993032350f, + -0.116318631f, -0.993211949f, + -0.114794927f, -0.993389211f, + -0.113270952f, -0.993564136f, + -0.111746711f, -0.993736722f, + -0.110222207f, -0.993906970f, + -0.108697444f, -0.994074879f, + -0.107172425f, -0.994240449f, + -0.105647154f, -0.994403680f, + -0.104121634f, -0.994564571f, + -0.102595869f, -0.994723121f, + -0.101069863f, -0.994879331f, + -0.099543619f, -0.995033199f, + -0.098017140f, -0.995184727f, + -0.096490431f, -0.995333912f, + -0.094963495f, -0.995480755f, + -0.093436336f, -0.995625256f, + -0.091908956f, -0.995767414f, + -0.090381361f, -0.995907229f, + -0.088853553f, -0.996044701f, + -0.087325535f, -0.996179829f, + -0.085797312f, -0.996312612f, + -0.084268888f, -0.996443051f, + -0.082740265f, -0.996571146f, + -0.081211447f, -0.996696895f, + -0.079682438f, -0.996820299f, + -0.078153242f, -0.996941358f, + -0.076623861f, -0.997060070f, + -0.075094301f, -0.997176437f, + -0.073564564f, -0.997290457f, + -0.072034653f, -0.997402130f, + -0.070504573f, -0.997511456f, + -0.068974328f, -0.997618435f, + -0.067443920f, -0.997723067f, + -0.065913353f, -0.997825350f, + -0.064382631f, -0.997925286f, + -0.062851758f, -0.998022874f, + -0.061320736f, -0.998118113f, + -0.059789571f, -0.998211003f, + -0.058258265f, -0.998301545f, + -0.056726821f, -0.998389737f, + -0.055195244f, -0.998475581f, + -0.053663538f, -0.998559074f, + -0.052131705f, -0.998640218f, + -0.050599749f, -0.998719012f, + -0.049067674f, -0.998795456f, + -0.047535484f, -0.998869550f, + -0.046003182f, -0.998941293f, + -0.044470772f, -0.999010686f, + -0.042938257f, -0.999077728f, + -0.041405641f, -0.999142419f, + -0.039872928f, -0.999204759f, + -0.038340120f, -0.999264747f, + -0.036807223f, -0.999322385f, + -0.035274239f, -0.999377670f, + -0.033741172f, -0.999430605f, + -0.032208025f, -0.999481187f, + -0.030674803f, -0.999529418f, + -0.029141509f, -0.999575296f, + -0.027608146f, -0.999618822f, + -0.026074718f, -0.999659997f, + -0.024541229f, -0.999698819f, + -0.023007681f, -0.999735288f, + -0.021474080f, -0.999769405f, + -0.019940429f, -0.999801170f, + -0.018406730f, -0.999830582f, + -0.016872988f, -0.999857641f, + -0.015339206f, -0.999882347f, + -0.013805389f, -0.999904701f, + -0.012271538f, -0.999924702f, + -0.010737659f, -0.999942350f, + -0.009203755f, -0.999957645f, + -0.007669829f, -0.999970586f, + -0.006135885f, -0.999981175f, + -0.004601926f, -0.999989411f, + -0.003067957f, -0.999995294f, + -0.001533980f, -0.999998823f, + -0.000000000f, -1.000000000f, + 0.001533980f, -0.999998823f, + 0.003067957f, -0.999995294f, + 0.004601926f, -0.999989411f, + 0.006135885f, -0.999981175f, + 0.007669829f, -0.999970586f, + 0.009203755f, -0.999957645f, + 0.010737659f, -0.999942350f, + 0.012271538f, -0.999924702f, + 0.013805389f, -0.999904701f, + 0.015339206f, -0.999882347f, + 0.016872988f, -0.999857641f, + 0.018406730f, -0.999830582f, + 0.019940429f, -0.999801170f, + 0.021474080f, -0.999769405f, + 0.023007681f, -0.999735288f, + 0.024541229f, -0.999698819f, + 0.026074718f, -0.999659997f, + 0.027608146f, -0.999618822f, + 0.029141509f, -0.999575296f, + 0.030674803f, -0.999529418f, + 0.032208025f, -0.999481187f, + 0.033741172f, -0.999430605f, + 0.035274239f, -0.999377670f, + 0.036807223f, -0.999322385f, + 0.038340120f, -0.999264747f, + 0.039872928f, -0.999204759f, + 0.041405641f, -0.999142419f, + 0.042938257f, -0.999077728f, + 0.044470772f, -0.999010686f, + 0.046003182f, -0.998941293f, + 0.047535484f, -0.998869550f, + 0.049067674f, -0.998795456f, + 0.050599749f, -0.998719012f, + 0.052131705f, -0.998640218f, + 0.053663538f, -0.998559074f, + 0.055195244f, -0.998475581f, + 0.056726821f, -0.998389737f, + 0.058258265f, -0.998301545f, + 0.059789571f, -0.998211003f, + 0.061320736f, -0.998118113f, + 0.062851758f, -0.998022874f, + 0.064382631f, -0.997925286f, + 0.065913353f, -0.997825350f, + 0.067443920f, -0.997723067f, + 0.068974328f, -0.997618435f, + 0.070504573f, -0.997511456f, + 0.072034653f, -0.997402130f, + 0.073564564f, -0.997290457f, + 0.075094301f, -0.997176437f, + 0.076623861f, -0.997060070f, + 0.078153242f, -0.996941358f, + 0.079682438f, -0.996820299f, + 0.081211447f, -0.996696895f, + 0.082740265f, -0.996571146f, + 0.084268888f, -0.996443051f, + 0.085797312f, -0.996312612f, + 0.087325535f, -0.996179829f, + 0.088853553f, -0.996044701f, + 0.090381361f, -0.995907229f, + 0.091908956f, -0.995767414f, + 0.093436336f, -0.995625256f, + 0.094963495f, -0.995480755f, + 0.096490431f, -0.995333912f, + 0.098017140f, -0.995184727f, + 0.099543619f, -0.995033199f, + 0.101069863f, -0.994879331f, + 0.102595869f, -0.994723121f, + 0.104121634f, -0.994564571f, + 0.105647154f, -0.994403680f, + 0.107172425f, -0.994240449f, + 0.108697444f, -0.994074879f, + 0.110222207f, -0.993906970f, + 0.111746711f, -0.993736722f, + 0.113270952f, -0.993564136f, + 0.114794927f, -0.993389211f, + 0.116318631f, -0.993211949f, + 0.117842062f, -0.993032350f, + 0.119365215f, -0.992850414f, + 0.120888087f, -0.992666142f, + 0.122410675f, -0.992479535f, + 0.123932975f, -0.992290591f, + 0.125454983f, -0.992099313f, + 0.126976696f, -0.991905700f, + 0.128498111f, -0.991709754f, + 0.130019223f, -0.991511473f, + 0.131540029f, -0.991310860f, + 0.133060525f, -0.991107914f, + 0.134580709f, -0.990902635f, + 0.136100575f, -0.990695025f, + 0.137620122f, -0.990485084f, + 0.139139344f, -0.990272812f, + 0.140658239f, -0.990058210f, + 0.142176804f, -0.989841278f, + 0.143695033f, -0.989622017f, + 0.145212925f, -0.989400428f, + 0.146730474f, -0.989176510f, + 0.148247679f, -0.988950265f, + 0.149764535f, -0.988721692f, + 0.151281038f, -0.988490793f, + 0.152797185f, -0.988257568f, + 0.154312973f, -0.988022017f, + 0.155828398f, -0.987784142f, + 0.157343456f, -0.987543942f, + 0.158858143f, -0.987301418f, + 0.160372457f, -0.987056571f, + 0.161886394f, -0.986809402f, + 0.163399949f, -0.986559910f, + 0.164913120f, -0.986308097f, + 0.166425904f, -0.986053963f, + 0.167938295f, -0.985797509f, + 0.169450291f, -0.985538735f, + 0.170961889f, -0.985277642f, + 0.172473084f, -0.985014231f, + 0.173983873f, -0.984748502f, + 0.175494253f, -0.984480455f, + 0.177004220f, -0.984210092f, + 0.178513771f, -0.983937413f, + 0.180022901f, -0.983662419f, + 0.181531608f, -0.983385110f, + 0.183039888f, -0.983105487f, + 0.184547737f, -0.982823551f, + 0.186055152f, -0.982539302f, + 0.187562129f, -0.982252741f, + 0.189068664f, -0.981963869f, + 0.190574755f, -0.981672686f, + 0.192080397f, -0.981379193f, + 0.193585587f, -0.981083391f, + 0.195090322f, -0.980785280f, + 0.196594598f, -0.980484862f, + 0.198098411f, -0.980182136f, + 0.199601758f, -0.979877104f, + 0.201104635f, -0.979569766f, + 0.202607039f, -0.979260123f, + 0.204108966f, -0.978948175f, + 0.205610413f, -0.978633924f, + 0.207111376f, -0.978317371f, + 0.208611852f, -0.977998515f, + 0.210111837f, -0.977677358f, + 0.211611327f, -0.977353900f, + 0.213110320f, -0.977028143f, + 0.214608811f, -0.976700086f, + 0.216106797f, -0.976369731f, + 0.217604275f, -0.976037079f, + 0.219101240f, -0.975702130f, + 0.220597690f, -0.975364885f, + 0.222093621f, -0.975025345f, + 0.223589029f, -0.974683511f, + 0.225083911f, -0.974339383f, + 0.226578264f, -0.973992962f, + 0.228072083f, -0.973644250f, + 0.229565366f, -0.973293246f, + 0.231058108f, -0.972939952f, + 0.232550307f, -0.972584369f, + 0.234041959f, -0.972226497f, + 0.235533059f, -0.971866337f, + 0.237023606f, -0.971503891f, + 0.238513595f, -0.971139158f, + 0.240003022f, -0.970772141f, + 0.241491885f, -0.970402839f, + 0.242980180f, -0.970031253f, + 0.244467903f, -0.969657385f, + 0.245955050f, -0.969281235f, + 0.247441619f, -0.968902805f, + 0.248927606f, -0.968522094f, + 0.250413007f, -0.968139105f, + 0.251897818f, -0.967753837f, + 0.253382037f, -0.967366292f, + 0.254865660f, -0.966976471f, + 0.256348682f, -0.966584374f, + 0.257831102f, -0.966190003f, + 0.259312915f, -0.965793359f, + 0.260794118f, -0.965394442f, + 0.262274707f, -0.964993253f, + 0.263754679f, -0.964589793f, + 0.265234030f, -0.964184064f, + 0.266712757f, -0.963776066f, + 0.268190857f, -0.963365800f, + 0.269668326f, -0.962953267f, + 0.271145160f, -0.962538468f, + 0.272621355f, -0.962121404f, + 0.274096910f, -0.961702077f, + 0.275571819f, -0.961280486f, + 0.277046080f, -0.960856633f, + 0.278519689f, -0.960430519f, + 0.279992643f, -0.960002146f, + 0.281464938f, -0.959571513f, + 0.282936570f, -0.959138622f, + 0.284407537f, -0.958703475f, + 0.285877835f, -0.958266071f, + 0.287347460f, -0.957826413f, + 0.288816408f, -0.957384501f, + 0.290284677f, -0.956940336f, + 0.291752263f, -0.956493919f, + 0.293219163f, -0.956045251f, + 0.294685372f, -0.955594334f, + 0.296150888f, -0.955141168f, + 0.297615707f, -0.954685755f, + 0.299079826f, -0.954228095f, + 0.300543241f, -0.953768190f, + 0.302005949f, -0.953306040f, + 0.303467947f, -0.952841648f, + 0.304929230f, -0.952375013f, + 0.306389795f, -0.951906137f, + 0.307849640f, -0.951435021f, + 0.309308760f, -0.950961666f, + 0.310767153f, -0.950486074f, + 0.312224814f, -0.950008245f, + 0.313681740f, -0.949528181f, + 0.315137929f, -0.949045882f, + 0.316593376f, -0.948561350f, + 0.318048077f, -0.948074586f, + 0.319502031f, -0.947585591f, + 0.320955232f, -0.947094366f, + 0.322407679f, -0.946600913f, + 0.323859367f, -0.946105232f, + 0.325310292f, -0.945607325f, + 0.326760452f, -0.945107193f, + 0.328209844f, -0.944604837f, + 0.329658463f, -0.944100258f, + 0.331106306f, -0.943593458f, + 0.332553370f, -0.943084437f, + 0.333999651f, -0.942573198f, + 0.335445147f, -0.942059740f, + 0.336889853f, -0.941544065f, + 0.338333767f, -0.941026175f, + 0.339776884f, -0.940506071f, + 0.341219202f, -0.939983753f, + 0.342660717f, -0.939459224f, + 0.344101426f, -0.938932484f, + 0.345541325f, -0.938403534f, + 0.346980411f, -0.937872376f, + 0.348418680f, -0.937339012f, + 0.349856130f, -0.936803442f, + 0.351292756f, -0.936265667f, + 0.352728556f, -0.935725689f, + 0.354163525f, -0.935183510f, + 0.355597662f, -0.934639130f, + 0.357030961f, -0.934092550f, + 0.358463421f, -0.933543773f, + 0.359895037f, -0.932992799f, + 0.361325806f, -0.932439629f, + 0.362755724f, -0.931884266f, + 0.364184790f, -0.931326709f, + 0.365612998f, -0.930766961f, + 0.367040346f, -0.930205023f, + 0.368466830f, -0.929640896f, + 0.369892447f, -0.929074581f, + 0.371317194f, -0.928506080f, + 0.372741067f, -0.927935395f, + 0.374164063f, -0.927362526f, + 0.375586178f, -0.926787474f, + 0.377007410f, -0.926210242f, + 0.378427755f, -0.925630831f, + 0.379847209f, -0.925049241f, + 0.381265769f, -0.924465474f, + 0.382683432f, -0.923879533f, + 0.384100195f, -0.923291417f, + 0.385516054f, -0.922701128f, + 0.386931006f, -0.922108669f, + 0.388345047f, -0.921514039f, + 0.389758174f, -0.920917242f, + 0.391170384f, -0.920318277f, + 0.392581674f, -0.919717146f, + 0.393992040f, -0.919113852f, + 0.395401479f, -0.918508394f, + 0.396809987f, -0.917900776f, + 0.398217562f, -0.917290997f, + 0.399624200f, -0.916679060f, + 0.401029897f, -0.916064966f, + 0.402434651f, -0.915448716f, + 0.403838458f, -0.914830312f, + 0.405241314f, -0.914209756f, + 0.406643217f, -0.913587048f, + 0.408044163f, -0.912962190f, + 0.409444149f, -0.912335185f, + 0.410843171f, -0.911706032f, + 0.412241227f, -0.911074734f, + 0.413638312f, -0.910441292f, + 0.415034424f, -0.909805708f, + 0.416429560f, -0.909167983f, + 0.417823716f, -0.908528119f, + 0.419216888f, -0.907886116f, + 0.420609074f, -0.907241978f, + 0.422000271f, -0.906595705f, + 0.423390474f, -0.905947298f, + 0.424779681f, -0.905296759f, + 0.426167889f, -0.904644091f, + 0.427555093f, -0.903989293f, + 0.428941292f, -0.903332368f, + 0.430326481f, -0.902673318f, + 0.431710658f, -0.902012144f, + 0.433093819f, -0.901348847f, + 0.434475961f, -0.900683429f, + 0.435857080f, -0.900015892f, + 0.437237174f, -0.899346237f, + 0.438616239f, -0.898674466f, + 0.439994271f, -0.898000580f, + 0.441371269f, -0.897324581f, + 0.442747228f, -0.896646470f, + 0.444122145f, -0.895966250f, + 0.445496017f, -0.895283921f, + 0.446868840f, -0.894599486f, + 0.448240612f, -0.893912945f, + 0.449611330f, -0.893224301f, + 0.450980989f, -0.892533555f, + 0.452349587f, -0.891840709f, + 0.453717121f, -0.891145765f, + 0.455083587f, -0.890448723f, + 0.456448982f, -0.889749586f, + 0.457813304f, -0.889048356f, + 0.459176548f, -0.888345033f, + 0.460538711f, -0.887639620f, + 0.461899791f, -0.886932119f, + 0.463259784f, -0.886222530f, + 0.464618686f, -0.885510856f, + 0.465976496f, -0.884797098f, + 0.467333209f, -0.884081259f, + 0.468688822f, -0.883363339f, + 0.470043332f, -0.882643340f, + 0.471396737f, -0.881921264f, + 0.472749032f, -0.881197113f, + 0.474100215f, -0.880470889f, + 0.475450282f, -0.879742593f, + 0.476799230f, -0.879012226f, + 0.478147056f, -0.878279792f, + 0.479493758f, -0.877545290f, + 0.480839331f, -0.876808724f, + 0.482183772f, -0.876070094f, + 0.483527079f, -0.875329403f, + 0.484869248f, -0.874586652f, + 0.486210276f, -0.873841843f, + 0.487550160f, -0.873094978f, + 0.488888897f, -0.872346059f, + 0.490226483f, -0.871595087f, + 0.491562916f, -0.870842063f, + 0.492898192f, -0.870086991f, + 0.494232309f, -0.869329871f, + 0.495565262f, -0.868570706f, + 0.496897049f, -0.867809497f, + 0.498227667f, -0.867046246f, + 0.499557113f, -0.866280954f, + 0.500885383f, -0.865513624f, + 0.502212474f, -0.864744258f, + 0.503538384f, -0.863972856f, + 0.504863109f, -0.863199422f, + 0.506186645f, -0.862423956f, + 0.507508991f, -0.861646461f, + 0.508830143f, -0.860866939f, + 0.510150097f, -0.860085390f, + 0.511468850f, -0.859301818f, + 0.512786401f, -0.858516224f, + 0.514102744f, -0.857728610f, + 0.515417878f, -0.856938977f, + 0.516731799f, -0.856147328f, + 0.518044504f, -0.855353665f, + 0.519355990f, -0.854557988f, + 0.520666254f, -0.853760301f, + 0.521975293f, -0.852960605f, + 0.523283103f, -0.852158902f, + 0.524589683f, -0.851355193f, + 0.525895027f, -0.850549481f, + 0.527199135f, -0.849741768f, + 0.528502002f, -0.848932055f, + 0.529803625f, -0.848120345f, + 0.531104001f, -0.847306639f, + 0.532403128f, -0.846490939f, + 0.533701002f, -0.845673247f, + 0.534997620f, -0.844853565f, + 0.536292979f, -0.844031895f, + 0.537587076f, -0.843208240f, + 0.538879909f, -0.842382600f, + 0.540171473f, -0.841554977f, + 0.541461766f, -0.840725375f, + 0.542750785f, -0.839893794f, + 0.544038527f, -0.839060237f, + 0.545324988f, -0.838224706f, + 0.546610167f, -0.837387202f, + 0.547894059f, -0.836547727f, + 0.549176662f, -0.835706284f, + 0.550457973f, -0.834862875f, + 0.551737988f, -0.834017501f, + 0.553016706f, -0.833170165f, + 0.554294121f, -0.832320868f, + 0.555570233f, -0.831469612f, + 0.556845037f, -0.830616400f, + 0.558118531f, -0.829761234f, + 0.559390712f, -0.828904115f, + 0.560661576f, -0.828045045f, + 0.561931121f, -0.827184027f, + 0.563199344f, -0.826321063f, + 0.564466242f, -0.825456154f, + 0.565731811f, -0.824589303f, + 0.566996049f, -0.823720511f, + 0.568258953f, -0.822849781f, + 0.569520519f, -0.821977115f, + 0.570780746f, -0.821102515f, + 0.572039629f, -0.820225983f, + 0.573297167f, -0.819347520f, + 0.574553355f, -0.818467130f, + 0.575808191f, -0.817584813f, + 0.577061673f, -0.816700573f, + 0.578313796f, -0.815814411f, + 0.579564559f, -0.814926329f, + 0.580813958f, -0.814036330f, + 0.582061990f, -0.813144415f, + 0.583308653f, -0.812250587f, + 0.584553943f, -0.811354847f, + 0.585797857f, -0.810457198f, + 0.587040394f, -0.809557642f, + 0.588281548f, -0.808656182f, + 0.589521319f, -0.807752818f, + 0.590759702f, -0.806847554f, + 0.591996695f, -0.805940391f, + 0.593232295f, -0.805031331f, + 0.594466499f, -0.804120377f, + 0.595699304f, -0.803207531f, + 0.596930708f, -0.802292796f, + 0.598160707f, -0.801376172f, + 0.599389298f, -0.800457662f, + 0.600616479f, -0.799537269f, + 0.601842247f, -0.798614995f, + 0.603066599f, -0.797690841f, + 0.604289531f, -0.796764810f, + 0.605511041f, -0.795836905f, + 0.606731127f, -0.794907126f, + 0.607949785f, -0.793975478f, + 0.609167012f, -0.793041960f, + 0.610382806f, -0.792106577f, + 0.611597164f, -0.791169330f, + 0.612810082f, -0.790230221f, + 0.614021559f, -0.789289253f, + 0.615231591f, -0.788346428f, + 0.616440175f, -0.787401747f, + 0.617647308f, -0.786455214f, + 0.618852988f, -0.785506830f, + 0.620057212f, -0.784556597f, + 0.621259977f, -0.783604519f, + 0.622461279f, -0.782650596f, + 0.623661118f, -0.781694832f, + 0.624859488f, -0.780737229f, + 0.626056388f, -0.779777788f, + 0.627251815f, -0.778816512f, + 0.628445767f, -0.777853404f, + 0.629638239f, -0.776888466f, + 0.630829230f, -0.775921699f, + 0.632018736f, -0.774953107f, + 0.633206755f, -0.773982691f, + 0.634393284f, -0.773010453f, + 0.635578320f, -0.772036397f, + 0.636761861f, -0.771060524f, + 0.637943904f, -0.770082837f, + 0.639124445f, -0.769103338f, + 0.640303482f, -0.768122029f, + 0.641481013f, -0.767138912f, + 0.642657034f, -0.766153990f, + 0.643831543f, -0.765167266f, + 0.645004537f, -0.764178741f, + 0.646176013f, -0.763188417f, + 0.647345969f, -0.762196298f, + 0.648514401f, -0.761202385f, + 0.649681307f, -0.760206682f, + 0.650846685f, -0.759209189f, + 0.652010531f, -0.758209910f, + 0.653172843f, -0.757208847f, + 0.654333618f, -0.756206001f, + 0.655492853f, -0.755201377f, + 0.656650546f, -0.754194975f, + 0.657806693f, -0.753186799f, + 0.658961293f, -0.752176850f, + 0.660114342f, -0.751165132f, + 0.661265838f, -0.750151646f, + 0.662415778f, -0.749136395f, + 0.663564159f, -0.748119380f, + 0.664710978f, -0.747100606f, + 0.665856234f, -0.746080074f, + 0.666999922f, -0.745057785f, + 0.668142041f, -0.744033744f, + 0.669282588f, -0.743007952f, + 0.670421560f, -0.741980412f, + 0.671558955f, -0.740951125f, + 0.672694769f, -0.739920095f, + 0.673829000f, -0.738887324f, + 0.674961646f, -0.737852815f, + 0.676092704f, -0.736816569f, + 0.677222170f, -0.735778589f, + 0.678350043f, -0.734738878f, + 0.679476320f, -0.733697438f, + 0.680600998f, -0.732654272f, + 0.681724074f, -0.731609381f, + 0.682845546f, -0.730562769f, + 0.683965412f, -0.729514438f, + 0.685083668f, -0.728464390f, + 0.686200312f, -0.727412629f, + 0.687315341f, -0.726359155f, + 0.688428753f, -0.725303972f, + 0.689540545f, -0.724247083f, + 0.690650714f, -0.723188489f, + 0.691759258f, -0.722128194f, + 0.692866175f, -0.721066199f, + 0.693971461f, -0.720002508f, + 0.695075114f, -0.718937122f, + 0.696177131f, -0.717870045f, + 0.697277511f, -0.716801279f, + 0.698376249f, -0.715730825f, + 0.699473345f, -0.714658688f, + 0.700568794f, -0.713584869f, + 0.701662595f, -0.712509371f, + 0.702754744f, -0.711432196f, + 0.703845241f, -0.710353347f, + 0.704934080f, -0.709272826f, + 0.706021261f, -0.708190637f, + 0.707106781f, -0.707106781f, + 0.708190637f, -0.706021261f, + 0.709272826f, -0.704934080f, + 0.710353347f, -0.703845241f, + 0.711432196f, -0.702754744f, + 0.712509371f, -0.701662595f, + 0.713584869f, -0.700568794f, + 0.714658688f, -0.699473345f, + 0.715730825f, -0.698376249f, + 0.716801279f, -0.697277511f, + 0.717870045f, -0.696177131f, + 0.718937122f, -0.695075114f, + 0.720002508f, -0.693971461f, + 0.721066199f, -0.692866175f, + 0.722128194f, -0.691759258f, + 0.723188489f, -0.690650714f, + 0.724247083f, -0.689540545f, + 0.725303972f, -0.688428753f, + 0.726359155f, -0.687315341f, + 0.727412629f, -0.686200312f, + 0.728464390f, -0.685083668f, + 0.729514438f, -0.683965412f, + 0.730562769f, -0.682845546f, + 0.731609381f, -0.681724074f, + 0.732654272f, -0.680600998f, + 0.733697438f, -0.679476320f, + 0.734738878f, -0.678350043f, + 0.735778589f, -0.677222170f, + 0.736816569f, -0.676092704f, + 0.737852815f, -0.674961646f, + 0.738887324f, -0.673829000f, + 0.739920095f, -0.672694769f, + 0.740951125f, -0.671558955f, + 0.741980412f, -0.670421560f, + 0.743007952f, -0.669282588f, + 0.744033744f, -0.668142041f, + 0.745057785f, -0.666999922f, + 0.746080074f, -0.665856234f, + 0.747100606f, -0.664710978f, + 0.748119380f, -0.663564159f, + 0.749136395f, -0.662415778f, + 0.750151646f, -0.661265838f, + 0.751165132f, -0.660114342f, + 0.752176850f, -0.658961293f, + 0.753186799f, -0.657806693f, + 0.754194975f, -0.656650546f, + 0.755201377f, -0.655492853f, + 0.756206001f, -0.654333618f, + 0.757208847f, -0.653172843f, + 0.758209910f, -0.652010531f, + 0.759209189f, -0.650846685f, + 0.760206682f, -0.649681307f, + 0.761202385f, -0.648514401f, + 0.762196298f, -0.647345969f, + 0.763188417f, -0.646176013f, + 0.764178741f, -0.645004537f, + 0.765167266f, -0.643831543f, + 0.766153990f, -0.642657034f, + 0.767138912f, -0.641481013f, + 0.768122029f, -0.640303482f, + 0.769103338f, -0.639124445f, + 0.770082837f, -0.637943904f, + 0.771060524f, -0.636761861f, + 0.772036397f, -0.635578320f, + 0.773010453f, -0.634393284f, + 0.773982691f, -0.633206755f, + 0.774953107f, -0.632018736f, + 0.775921699f, -0.630829230f, + 0.776888466f, -0.629638239f, + 0.777853404f, -0.628445767f, + 0.778816512f, -0.627251815f, + 0.779777788f, -0.626056388f, + 0.780737229f, -0.624859488f, + 0.781694832f, -0.623661118f, + 0.782650596f, -0.622461279f, + 0.783604519f, -0.621259977f, + 0.784556597f, -0.620057212f, + 0.785506830f, -0.618852988f, + 0.786455214f, -0.617647308f, + 0.787401747f, -0.616440175f, + 0.788346428f, -0.615231591f, + 0.789289253f, -0.614021559f, + 0.790230221f, -0.612810082f, + 0.791169330f, -0.611597164f, + 0.792106577f, -0.610382806f, + 0.793041960f, -0.609167012f, + 0.793975478f, -0.607949785f, + 0.794907126f, -0.606731127f, + 0.795836905f, -0.605511041f, + 0.796764810f, -0.604289531f, + 0.797690841f, -0.603066599f, + 0.798614995f, -0.601842247f, + 0.799537269f, -0.600616479f, + 0.800457662f, -0.599389298f, + 0.801376172f, -0.598160707f, + 0.802292796f, -0.596930708f, + 0.803207531f, -0.595699304f, + 0.804120377f, -0.594466499f, + 0.805031331f, -0.593232295f, + 0.805940391f, -0.591996695f, + 0.806847554f, -0.590759702f, + 0.807752818f, -0.589521319f, + 0.808656182f, -0.588281548f, + 0.809557642f, -0.587040394f, + 0.810457198f, -0.585797857f, + 0.811354847f, -0.584553943f, + 0.812250587f, -0.583308653f, + 0.813144415f, -0.582061990f, + 0.814036330f, -0.580813958f, + 0.814926329f, -0.579564559f, + 0.815814411f, -0.578313796f, + 0.816700573f, -0.577061673f, + 0.817584813f, -0.575808191f, + 0.818467130f, -0.574553355f, + 0.819347520f, -0.573297167f, + 0.820225983f, -0.572039629f, + 0.821102515f, -0.570780746f, + 0.821977115f, -0.569520519f, + 0.822849781f, -0.568258953f, + 0.823720511f, -0.566996049f, + 0.824589303f, -0.565731811f, + 0.825456154f, -0.564466242f, + 0.826321063f, -0.563199344f, + 0.827184027f, -0.561931121f, + 0.828045045f, -0.560661576f, + 0.828904115f, -0.559390712f, + 0.829761234f, -0.558118531f, + 0.830616400f, -0.556845037f, + 0.831469612f, -0.555570233f, + 0.832320868f, -0.554294121f, + 0.833170165f, -0.553016706f, + 0.834017501f, -0.551737988f, + 0.834862875f, -0.550457973f, + 0.835706284f, -0.549176662f, + 0.836547727f, -0.547894059f, + 0.837387202f, -0.546610167f, + 0.838224706f, -0.545324988f, + 0.839060237f, -0.544038527f, + 0.839893794f, -0.542750785f, + 0.840725375f, -0.541461766f, + 0.841554977f, -0.540171473f, + 0.842382600f, -0.538879909f, + 0.843208240f, -0.537587076f, + 0.844031895f, -0.536292979f, + 0.844853565f, -0.534997620f, + 0.845673247f, -0.533701002f, + 0.846490939f, -0.532403128f, + 0.847306639f, -0.531104001f, + 0.848120345f, -0.529803625f, + 0.848932055f, -0.528502002f, + 0.849741768f, -0.527199135f, + 0.850549481f, -0.525895027f, + 0.851355193f, -0.524589683f, + 0.852158902f, -0.523283103f, + 0.852960605f, -0.521975293f, + 0.853760301f, -0.520666254f, + 0.854557988f, -0.519355990f, + 0.855353665f, -0.518044504f, + 0.856147328f, -0.516731799f, + 0.856938977f, -0.515417878f, + 0.857728610f, -0.514102744f, + 0.858516224f, -0.512786401f, + 0.859301818f, -0.511468850f, + 0.860085390f, -0.510150097f, + 0.860866939f, -0.508830143f, + 0.861646461f, -0.507508991f, + 0.862423956f, -0.506186645f, + 0.863199422f, -0.504863109f, + 0.863972856f, -0.503538384f, + 0.864744258f, -0.502212474f, + 0.865513624f, -0.500885383f, + 0.866280954f, -0.499557113f, + 0.867046246f, -0.498227667f, + 0.867809497f, -0.496897049f, + 0.868570706f, -0.495565262f, + 0.869329871f, -0.494232309f, + 0.870086991f, -0.492898192f, + 0.870842063f, -0.491562916f, + 0.871595087f, -0.490226483f, + 0.872346059f, -0.488888897f, + 0.873094978f, -0.487550160f, + 0.873841843f, -0.486210276f, + 0.874586652f, -0.484869248f, + 0.875329403f, -0.483527079f, + 0.876070094f, -0.482183772f, + 0.876808724f, -0.480839331f, + 0.877545290f, -0.479493758f, + 0.878279792f, -0.478147056f, + 0.879012226f, -0.476799230f, + 0.879742593f, -0.475450282f, + 0.880470889f, -0.474100215f, + 0.881197113f, -0.472749032f, + 0.881921264f, -0.471396737f, + 0.882643340f, -0.470043332f, + 0.883363339f, -0.468688822f, + 0.884081259f, -0.467333209f, + 0.884797098f, -0.465976496f, + 0.885510856f, -0.464618686f, + 0.886222530f, -0.463259784f, + 0.886932119f, -0.461899791f, + 0.887639620f, -0.460538711f, + 0.888345033f, -0.459176548f, + 0.889048356f, -0.457813304f, + 0.889749586f, -0.456448982f, + 0.890448723f, -0.455083587f, + 0.891145765f, -0.453717121f, + 0.891840709f, -0.452349587f, + 0.892533555f, -0.450980989f, + 0.893224301f, -0.449611330f, + 0.893912945f, -0.448240612f, + 0.894599486f, -0.446868840f, + 0.895283921f, -0.445496017f, + 0.895966250f, -0.444122145f, + 0.896646470f, -0.442747228f, + 0.897324581f, -0.441371269f, + 0.898000580f, -0.439994271f, + 0.898674466f, -0.438616239f, + 0.899346237f, -0.437237174f, + 0.900015892f, -0.435857080f, + 0.900683429f, -0.434475961f, + 0.901348847f, -0.433093819f, + 0.902012144f, -0.431710658f, + 0.902673318f, -0.430326481f, + 0.903332368f, -0.428941292f, + 0.903989293f, -0.427555093f, + 0.904644091f, -0.426167889f, + 0.905296759f, -0.424779681f, + 0.905947298f, -0.423390474f, + 0.906595705f, -0.422000271f, + 0.907241978f, -0.420609074f, + 0.907886116f, -0.419216888f, + 0.908528119f, -0.417823716f, + 0.909167983f, -0.416429560f, + 0.909805708f, -0.415034424f, + 0.910441292f, -0.413638312f, + 0.911074734f, -0.412241227f, + 0.911706032f, -0.410843171f, + 0.912335185f, -0.409444149f, + 0.912962190f, -0.408044163f, + 0.913587048f, -0.406643217f, + 0.914209756f, -0.405241314f, + 0.914830312f, -0.403838458f, + 0.915448716f, -0.402434651f, + 0.916064966f, -0.401029897f, + 0.916679060f, -0.399624200f, + 0.917290997f, -0.398217562f, + 0.917900776f, -0.396809987f, + 0.918508394f, -0.395401479f, + 0.919113852f, -0.393992040f, + 0.919717146f, -0.392581674f, + 0.920318277f, -0.391170384f, + 0.920917242f, -0.389758174f, + 0.921514039f, -0.388345047f, + 0.922108669f, -0.386931006f, + 0.922701128f, -0.385516054f, + 0.923291417f, -0.384100195f, + 0.923879533f, -0.382683432f, + 0.924465474f, -0.381265769f, + 0.925049241f, -0.379847209f, + 0.925630831f, -0.378427755f, + 0.926210242f, -0.377007410f, + 0.926787474f, -0.375586178f, + 0.927362526f, -0.374164063f, + 0.927935395f, -0.372741067f, + 0.928506080f, -0.371317194f, + 0.929074581f, -0.369892447f, + 0.929640896f, -0.368466830f, + 0.930205023f, -0.367040346f, + 0.930766961f, -0.365612998f, + 0.931326709f, -0.364184790f, + 0.931884266f, -0.362755724f, + 0.932439629f, -0.361325806f, + 0.932992799f, -0.359895037f, + 0.933543773f, -0.358463421f, + 0.934092550f, -0.357030961f, + 0.934639130f, -0.355597662f, + 0.935183510f, -0.354163525f, + 0.935725689f, -0.352728556f, + 0.936265667f, -0.351292756f, + 0.936803442f, -0.349856130f, + 0.937339012f, -0.348418680f, + 0.937872376f, -0.346980411f, + 0.938403534f, -0.345541325f, + 0.938932484f, -0.344101426f, + 0.939459224f, -0.342660717f, + 0.939983753f, -0.341219202f, + 0.940506071f, -0.339776884f, + 0.941026175f, -0.338333767f, + 0.941544065f, -0.336889853f, + 0.942059740f, -0.335445147f, + 0.942573198f, -0.333999651f, + 0.943084437f, -0.332553370f, + 0.943593458f, -0.331106306f, + 0.944100258f, -0.329658463f, + 0.944604837f, -0.328209844f, + 0.945107193f, -0.326760452f, + 0.945607325f, -0.325310292f, + 0.946105232f, -0.323859367f, + 0.946600913f, -0.322407679f, + 0.947094366f, -0.320955232f, + 0.947585591f, -0.319502031f, + 0.948074586f, -0.318048077f, + 0.948561350f, -0.316593376f, + 0.949045882f, -0.315137929f, + 0.949528181f, -0.313681740f, + 0.950008245f, -0.312224814f, + 0.950486074f, -0.310767153f, + 0.950961666f, -0.309308760f, + 0.951435021f, -0.307849640f, + 0.951906137f, -0.306389795f, + 0.952375013f, -0.304929230f, + 0.952841648f, -0.303467947f, + 0.953306040f, -0.302005949f, + 0.953768190f, -0.300543241f, + 0.954228095f, -0.299079826f, + 0.954685755f, -0.297615707f, + 0.955141168f, -0.296150888f, + 0.955594334f, -0.294685372f, + 0.956045251f, -0.293219163f, + 0.956493919f, -0.291752263f, + 0.956940336f, -0.290284677f, + 0.957384501f, -0.288816408f, + 0.957826413f, -0.287347460f, + 0.958266071f, -0.285877835f, + 0.958703475f, -0.284407537f, + 0.959138622f, -0.282936570f, + 0.959571513f, -0.281464938f, + 0.960002146f, -0.279992643f, + 0.960430519f, -0.278519689f, + 0.960856633f, -0.277046080f, + 0.961280486f, -0.275571819f, + 0.961702077f, -0.274096910f, + 0.962121404f, -0.272621355f, + 0.962538468f, -0.271145160f, + 0.962953267f, -0.269668326f, + 0.963365800f, -0.268190857f, + 0.963776066f, -0.266712757f, + 0.964184064f, -0.265234030f, + 0.964589793f, -0.263754679f, + 0.964993253f, -0.262274707f, + 0.965394442f, -0.260794118f, + 0.965793359f, -0.259312915f, + 0.966190003f, -0.257831102f, + 0.966584374f, -0.256348682f, + 0.966976471f, -0.254865660f, + 0.967366292f, -0.253382037f, + 0.967753837f, -0.251897818f, + 0.968139105f, -0.250413007f, + 0.968522094f, -0.248927606f, + 0.968902805f, -0.247441619f, + 0.969281235f, -0.245955050f, + 0.969657385f, -0.244467903f, + 0.970031253f, -0.242980180f, + 0.970402839f, -0.241491885f, + 0.970772141f, -0.240003022f, + 0.971139158f, -0.238513595f, + 0.971503891f, -0.237023606f, + 0.971866337f, -0.235533059f, + 0.972226497f, -0.234041959f, + 0.972584369f, -0.232550307f, + 0.972939952f, -0.231058108f, + 0.973293246f, -0.229565366f, + 0.973644250f, -0.228072083f, + 0.973992962f, -0.226578264f, + 0.974339383f, -0.225083911f, + 0.974683511f, -0.223589029f, + 0.975025345f, -0.222093621f, + 0.975364885f, -0.220597690f, + 0.975702130f, -0.219101240f, + 0.976037079f, -0.217604275f, + 0.976369731f, -0.216106797f, + 0.976700086f, -0.214608811f, + 0.977028143f, -0.213110320f, + 0.977353900f, -0.211611327f, + 0.977677358f, -0.210111837f, + 0.977998515f, -0.208611852f, + 0.978317371f, -0.207111376f, + 0.978633924f, -0.205610413f, + 0.978948175f, -0.204108966f, + 0.979260123f, -0.202607039f, + 0.979569766f, -0.201104635f, + 0.979877104f, -0.199601758f, + 0.980182136f, -0.198098411f, + 0.980484862f, -0.196594598f, + 0.980785280f, -0.195090322f, + 0.981083391f, -0.193585587f, + 0.981379193f, -0.192080397f, + 0.981672686f, -0.190574755f, + 0.981963869f, -0.189068664f, + 0.982252741f, -0.187562129f, + 0.982539302f, -0.186055152f, + 0.982823551f, -0.184547737f, + 0.983105487f, -0.183039888f, + 0.983385110f, -0.181531608f, + 0.983662419f, -0.180022901f, + 0.983937413f, -0.178513771f, + 0.984210092f, -0.177004220f, + 0.984480455f, -0.175494253f, + 0.984748502f, -0.173983873f, + 0.985014231f, -0.172473084f, + 0.985277642f, -0.170961889f, + 0.985538735f, -0.169450291f, + 0.985797509f, -0.167938295f, + 0.986053963f, -0.166425904f, + 0.986308097f, -0.164913120f, + 0.986559910f, -0.163399949f, + 0.986809402f, -0.161886394f, + 0.987056571f, -0.160372457f, + 0.987301418f, -0.158858143f, + 0.987543942f, -0.157343456f, + 0.987784142f, -0.155828398f, + 0.988022017f, -0.154312973f, + 0.988257568f, -0.152797185f, + 0.988490793f, -0.151281038f, + 0.988721692f, -0.149764535f, + 0.988950265f, -0.148247679f, + 0.989176510f, -0.146730474f, + 0.989400428f, -0.145212925f, + 0.989622017f, -0.143695033f, + 0.989841278f, -0.142176804f, + 0.990058210f, -0.140658239f, + 0.990272812f, -0.139139344f, + 0.990485084f, -0.137620122f, + 0.990695025f, -0.136100575f, + 0.990902635f, -0.134580709f, + 0.991107914f, -0.133060525f, + 0.991310860f, -0.131540029f, + 0.991511473f, -0.130019223f, + 0.991709754f, -0.128498111f, + 0.991905700f, -0.126976696f, + 0.992099313f, -0.125454983f, + 0.992290591f, -0.123932975f, + 0.992479535f, -0.122410675f, + 0.992666142f, -0.120888087f, + 0.992850414f, -0.119365215f, + 0.993032350f, -0.117842062f, + 0.993211949f, -0.116318631f, + 0.993389211f, -0.114794927f, + 0.993564136f, -0.113270952f, + 0.993736722f, -0.111746711f, + 0.993906970f, -0.110222207f, + 0.994074879f, -0.108697444f, + 0.994240449f, -0.107172425f, + 0.994403680f, -0.105647154f, + 0.994564571f, -0.104121634f, + 0.994723121f, -0.102595869f, + 0.994879331f, -0.101069863f, + 0.995033199f, -0.099543619f, + 0.995184727f, -0.098017140f, + 0.995333912f, -0.096490431f, + 0.995480755f, -0.094963495f, + 0.995625256f, -0.093436336f, + 0.995767414f, -0.091908956f, + 0.995907229f, -0.090381361f, + 0.996044701f, -0.088853553f, + 0.996179829f, -0.087325535f, + 0.996312612f, -0.085797312f, + 0.996443051f, -0.084268888f, + 0.996571146f, -0.082740265f, + 0.996696895f, -0.081211447f, + 0.996820299f, -0.079682438f, + 0.996941358f, -0.078153242f, + 0.997060070f, -0.076623861f, + 0.997176437f, -0.075094301f, + 0.997290457f, -0.073564564f, + 0.997402130f, -0.072034653f, + 0.997511456f, -0.070504573f, + 0.997618435f, -0.068974328f, + 0.997723067f, -0.067443920f, + 0.997825350f, -0.065913353f, + 0.997925286f, -0.064382631f, + 0.998022874f, -0.062851758f, + 0.998118113f, -0.061320736f, + 0.998211003f, -0.059789571f, + 0.998301545f, -0.058258265f, + 0.998389737f, -0.056726821f, + 0.998475581f, -0.055195244f, + 0.998559074f, -0.053663538f, + 0.998640218f, -0.052131705f, + 0.998719012f, -0.050599749f, + 0.998795456f, -0.049067674f, + 0.998869550f, -0.047535484f, + 0.998941293f, -0.046003182f, + 0.999010686f, -0.044470772f, + 0.999077728f, -0.042938257f, + 0.999142419f, -0.041405641f, + 0.999204759f, -0.039872928f, + 0.999264747f, -0.038340120f, + 0.999322385f, -0.036807223f, + 0.999377670f, -0.035274239f, + 0.999430605f, -0.033741172f, + 0.999481187f, -0.032208025f, + 0.999529418f, -0.030674803f, + 0.999575296f, -0.029141509f, + 0.999618822f, -0.027608146f, + 0.999659997f, -0.026074718f, + 0.999698819f, -0.024541229f, + 0.999735288f, -0.023007681f, + 0.999769405f, -0.021474080f, + 0.999801170f, -0.019940429f, + 0.999830582f, -0.018406730f, + 0.999857641f, -0.016872988f, + 0.999882347f, -0.015339206f, + 0.999904701f, -0.013805389f, + 0.999924702f, -0.012271538f, + 0.999942350f, -0.010737659f, + 0.999957645f, -0.009203755f, + 0.999970586f, -0.007669829f, + 0.999981175f, -0.006135885f, + 0.999989411f, -0.004601926f, + 0.999995294f, -0.003067957f, + 0.999998823f, -0.001533980f +}; + +/* +* @brief Q31 Twiddle factors Table +*/ + + +/** +* \par +* Example code for Q31 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 16 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q31(Fixed point 1.31): +* round(twiddleCoefQ31(i) * pow(2, 31)) +* +*/ +const q31_t twiddleCoef_16_q31[24] = { + (q31_t)0x7FFFFFFF, (q31_t)0x00000000, + (q31_t)0x7641AF3C, (q31_t)0x30FBC54D, + (q31_t)0x5A82799A, (q31_t)0x5A82799A, + (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, + (q31_t)0x00000000, (q31_t)0x7FFFFFFF, + (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, + (q31_t)0xA57D8666, (q31_t)0x5A82799A, + (q31_t)0x89BE50C3, (q31_t)0x30FBC54D, + (q31_t)0x80000000, (q31_t)0x00000000, + (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, + (q31_t)0xA57D8666, (q31_t)0xA57D8666, + (q31_t)0xCF043AB2, (q31_t)0x89BE50C3 +}; + +/** +* \par +* Example code for Q31 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 32 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q31(Fixed point 1.31): +* round(twiddleCoefQ31(i) * pow(2, 31)) +* +*/ +const q31_t twiddleCoef_32_q31[48] = { + (q31_t)0x7FFFFFFF, (q31_t)0x00000000, + (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C, + (q31_t)0x7641AF3C, (q31_t)0x30FBC54D, + (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, + (q31_t)0x5A82799A, (q31_t)0x5A82799A, + (q31_t)0x471CECE6, (q31_t)0x6A6D98A4, + (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, + (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F, + (q31_t)0x00000000, (q31_t)0x7FFFFFFF, + (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, + (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, + (q31_t)0xB8E31319, (q31_t)0x6A6D98A4, + (q31_t)0xA57D8666, (q31_t)0x5A82799A, + (q31_t)0x9592675B, (q31_t)0x471CECE6, + (q31_t)0x89BE50C3, (q31_t)0x30FBC54D, + (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, + (q31_t)0x80000000, (q31_t)0x00000000, + (q31_t)0x8275A0C0, (q31_t)0xE70747C3, + (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, + (q31_t)0x9592675B, (q31_t)0xB8E31319, + (q31_t)0xA57D8666, (q31_t)0xA57D8666, + (q31_t)0xB8E31319, (q31_t)0x9592675B, + (q31_t)0xCF043AB2, (q31_t)0x89BE50C3, + (q31_t)0xE70747C3, (q31_t)0x8275A0C0 +}; + +/** +* \par +* Example code for Q31 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 64 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q31(Fixed point 1.31): +* round(twiddleCoefQ31(i) * pow(2, 31)) +* +*/ +const q31_t twiddleCoef_64_q31[96] = { + (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7F62368F, + (q31_t)0x0C8BD35E, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C, + (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7641AF3C, + (q31_t)0x30FBC54D, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70, + (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x62F201AC, + (q31_t)0x5133CC94, (q31_t)0x5A82799A, (q31_t)0x5A82799A, + (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x471CECE6, + (q31_t)0x6A6D98A4, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6, + (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x25280C5D, + (q31_t)0x7A7D055B, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F, + (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x00000000, + (q31_t)0x7FFFFFFF, (q31_t)0xF3742CA1, (q31_t)0x7F62368F, + (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xDAD7F3A2, + (q31_t)0x7A7D055B, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, + (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xB8E31319, + (q31_t)0x6A6D98A4, (q31_t)0xAECC336B, (q31_t)0x62F201AC, + (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0x9D0DFE53, + (q31_t)0x5133CC94, (q31_t)0x9592675B, (q31_t)0x471CECE6, + (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x89BE50C3, + (q31_t)0x30FBC54D, (q31_t)0x8582FAA4, (q31_t)0x25280C5D, + (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x809DC970, + (q31_t)0x0C8BD35E, (q31_t)0x80000000, (q31_t)0x00000000, + (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x8275A0C0, + (q31_t)0xE70747C3, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2, + (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8F1D343A, + (q31_t)0xC3A9458F, (q31_t)0x9592675B, (q31_t)0xB8E31319, + (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0xA57D8666, + (q31_t)0xA57D8666, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53, + (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xC3A9458F, + (q31_t)0x8F1D343A, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3, + (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xE70747C3, + (q31_t)0x8275A0C0, (q31_t)0xF3742CA1, (q31_t)0x809DC970 +}; + +/** +* \par +* Example code for Q31 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 128 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q31(Fixed point 1.31): +* round(twiddleCoefQ31(i) * pow(2, 31)) +* +*/ +const q31_t twiddleCoef_128_q31[192] = { + (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FD8878D, + (q31_t)0x0647D97C, (q31_t)0x7F62368F, (q31_t)0x0C8BD35E, + (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7D8A5F3F, + (q31_t)0x18F8B83C, (q31_t)0x7C29FBEE, (q31_t)0x1F19F97B, + (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x78848413, + (q31_t)0x2B1F34EB, (q31_t)0x7641AF3C, (q31_t)0x30FBC54D, + (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x70E2CBC6, + (q31_t)0x3C56BA70, (q31_t)0x6DCA0D14, (q31_t)0x41CE1E64, + (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x66CF811F, + (q31_t)0x4C3FDFF3, (q31_t)0x62F201AC, (q31_t)0x5133CC94, + (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5A82799A, + (q31_t)0x5A82799A, (q31_t)0x55F5A4D2, (q31_t)0x5ED77C89, + (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x4C3FDFF3, + (q31_t)0x66CF811F, (q31_t)0x471CECE6, (q31_t)0x6A6D98A4, + (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x3C56BA70, + (q31_t)0x70E2CBC6, (q31_t)0x36BA2013, (q31_t)0x73B5EBD0, + (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x2B1F34EB, + (q31_t)0x78848413, (q31_t)0x25280C5D, (q31_t)0x7A7D055B, + (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x18F8B83C, + (q31_t)0x7D8A5F3F, (q31_t)0x12C8106E, (q31_t)0x7E9D55FC, + (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0647D97C, + (q31_t)0x7FD8878D, (q31_t)0x00000000, (q31_t)0x7FFFFFFF, + (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF3742CA1, + (q31_t)0x7F62368F, (q31_t)0xED37EF91, (q31_t)0x7E9D55FC, + (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE0E60684, + (q31_t)0x7C29FBEE, (q31_t)0xDAD7F3A2, (q31_t)0x7A7D055B, + (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xCF043AB2, + (q31_t)0x7641AF3C, (q31_t)0xC945DFEC, (q31_t)0x73B5EBD0, + (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xBE31E19B, + (q31_t)0x6DCA0D14, (q31_t)0xB8E31319, (q31_t)0x6A6D98A4, + (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xAECC336B, + (q31_t)0x62F201AC, (q31_t)0xAA0A5B2D, (q31_t)0x5ED77C89, + (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA1288376, + (q31_t)0x55F5A4D2, (q31_t)0x9D0DFE53, (q31_t)0x5133CC94, + (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9592675B, + (q31_t)0x471CECE6, (q31_t)0x9235F2EB, (q31_t)0x41CE1E64, + (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8C4A142F, + (q31_t)0x36BA2013, (q31_t)0x89BE50C3, (q31_t)0x30FBC54D, + (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8582FAA4, + (q31_t)0x25280C5D, (q31_t)0x83D60411, (q31_t)0x1F19F97B, + (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x8162AA03, + (q31_t)0x12C8106E, (q31_t)0x809DC970, (q31_t)0x0C8BD35E, + (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x80000000, + (q31_t)0x00000000, (q31_t)0x80277872, (q31_t)0xF9B82683, + (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x8162AA03, + (q31_t)0xED37EF91, (q31_t)0x8275A0C0, (q31_t)0xE70747C3, + (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x8582FAA4, + (q31_t)0xDAD7F3A2, (q31_t)0x877B7BEC, (q31_t)0xD4E0CB14, + (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8C4A142F, + (q31_t)0xC945DFEC, (q31_t)0x8F1D343A, (q31_t)0xC3A9458F, + (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x9592675B, + (q31_t)0xB8E31319, (q31_t)0x99307EE0, (q31_t)0xB3C0200C, + (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0xA1288376, + (q31_t)0xAA0A5B2D, (q31_t)0xA57D8666, (q31_t)0xA57D8666, + (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAECC336B, + (q31_t)0x9D0DFE53, (q31_t)0xB3C0200C, (q31_t)0x99307EE0, + (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xBE31E19B, + (q31_t)0x9235F2EB, (q31_t)0xC3A9458F, (q31_t)0x8F1D343A, + (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xCF043AB2, + (q31_t)0x89BE50C3, (q31_t)0xD4E0CB14, (q31_t)0x877B7BEC, + (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xE0E60684, + (q31_t)0x83D60411, (q31_t)0xE70747C3, (q31_t)0x8275A0C0, + (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xF3742CA1, + (q31_t)0x809DC970, (q31_t)0xF9B82683, (q31_t)0x80277872 +}; + +/** +* \par +* Example code for Q31 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 256 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q31(Fixed point 1.31): +* round(twiddleCoefQ31(i) * pow(2, 31)) +* +*/ +const q31_t twiddleCoef_256_q31[384] = { + (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FF62182, + (q31_t)0x03242ABF, (q31_t)0x7FD8878D, (q31_t)0x0647D97C, + (q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F62368F, + (q31_t)0x0C8BD35E, (q31_t)0x7F0991C3, (q31_t)0x0FAB272B, + (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E1D93E9, + (q31_t)0x15E21444, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C, + (q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7C29FBEE, + (q31_t)0x1F19F97B, (q31_t)0x7B5D039D, (q31_t)0x2223A4C5, + (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x798A23B1, + (q31_t)0x2826B928, (q31_t)0x78848413, (q31_t)0x2B1F34EB, + (q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x7641AF3C, + (q31_t)0x30FBC54D, (q31_t)0x7504D345, (q31_t)0x33DEF287, + (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x72552C84, + (q31_t)0x398CDD32, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70, + (q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6DCA0D14, + (q31_t)0x41CE1E64, (q31_t)0x6C242960, (q31_t)0x447ACD50, + (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x68A69E81, + (q31_t)0x49B41533, (q31_t)0x66CF811F, (q31_t)0x4C3FDFF3, + (q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x62F201AC, + (q31_t)0x5133CC94, (q31_t)0x60EC3830, (q31_t)0x539B2AEF, + (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5CB420DF, + (q31_t)0x5842DD54, (q31_t)0x5A82799A, (q31_t)0x5A82799A, + (q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x55F5A4D2, + (q31_t)0x5ED77C89, (q31_t)0x539B2AEF, (q31_t)0x60EC3830, + (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x4EBFE8A4, + (q31_t)0x64E88926, (q31_t)0x4C3FDFF3, (q31_t)0x66CF811F, + (q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x471CECE6, + (q31_t)0x6A6D98A4, (q31_t)0x447ACD50, (q31_t)0x6C242960, + (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x3F1749B7, + (q31_t)0x6F5F02B1, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6, + (q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x36BA2013, + (q31_t)0x73B5EBD0, (q31_t)0x33DEF287, (q31_t)0x7504D345, + (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x2E110A62, + (q31_t)0x776C4EDB, (q31_t)0x2B1F34EB, (q31_t)0x78848413, + (q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x25280C5D, + (q31_t)0x7A7D055B, (q31_t)0x2223A4C5, (q31_t)0x7B5D039D, + (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1C0B826A, + (q31_t)0x7CE3CEB1, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F, + (q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x12C8106E, + (q31_t)0x7E9D55FC, (q31_t)0x0FAB272B, (q31_t)0x7F0991C3, + (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x096A9049, + (q31_t)0x7FA736B4, (q31_t)0x0647D97C, (q31_t)0x7FD8878D, + (q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x00000000, + (q31_t)0x7FFFFFFF, (q31_t)0xFCDBD541, (q31_t)0x7FF62182, + (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF6956FB6, + (q31_t)0x7FA736B4, (q31_t)0xF3742CA1, (q31_t)0x7F62368F, + (q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xED37EF91, + (q31_t)0x7E9D55FC, (q31_t)0xEA1DEBBB, (q31_t)0x7E1D93E9, + (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE3F47D95, + (q31_t)0x7CE3CEB1, (q31_t)0xE0E60684, (q31_t)0x7C29FBEE, + (q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDAD7F3A2, + (q31_t)0x7A7D055B, (q31_t)0xD7D946D7, (q31_t)0x798A23B1, + (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD1EEF59E, + (q31_t)0x776C4EDB, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, + (q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xC945DFEC, + (q31_t)0x73B5EBD0, (q31_t)0xC67322CD, (q31_t)0x72552C84, + (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC0E8B648, + (q31_t)0x6F5F02B1, (q31_t)0xBE31E19B, (q31_t)0x6DCA0D14, + (q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xB8E31319, + (q31_t)0x6A6D98A4, (q31_t)0xB64BEACC, (q31_t)0x68A69E81, + (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB140175B, + (q31_t)0x64E88926, (q31_t)0xAECC336B, (q31_t)0x62F201AC, + (q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAA0A5B2D, + (q31_t)0x5ED77C89, (q31_t)0xA7BD22AB, (q31_t)0x5CB420DF, + (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA34BDF20, + (q31_t)0x5842DD54, (q31_t)0xA1288376, (q31_t)0x55F5A4D2, + (q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9D0DFE53, + (q31_t)0x5133CC94, (q31_t)0x9B1776D9, (q31_t)0x4EBFE8A4, + (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9759617E, + (q31_t)0x49B41533, (q31_t)0x9592675B, (q31_t)0x471CECE6, + (q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x9235F2EB, + (q31_t)0x41CE1E64, (q31_t)0x90A0FD4E, (q31_t)0x3F1749B7, + (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8DAAD37B, + (q31_t)0x398CDD32, (q31_t)0x8C4A142F, (q31_t)0x36BA2013, + (q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x89BE50C3, + (q31_t)0x30FBC54D, (q31_t)0x8893B124, (q31_t)0x2E110A62, + (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8675DC4E, + (q31_t)0x2826B928, (q31_t)0x8582FAA4, (q31_t)0x25280C5D, + (q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x83D60411, + (q31_t)0x1F19F97B, (q31_t)0x831C314E, (q31_t)0x1C0B826A, + (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x81E26C16, + (q31_t)0x15E21444, (q31_t)0x8162AA03, (q31_t)0x12C8106E, + (q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x809DC970, + (q31_t)0x0C8BD35E, (q31_t)0x8058C94C, (q31_t)0x096A9049, + (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x8009DE7D, + (q31_t)0x03242ABF, (q31_t)0x80000000, (q31_t)0x00000000, + (q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x80277872, + (q31_t)0xF9B82683, (q31_t)0x8058C94C, (q31_t)0xF6956FB6, + (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80F66E3C, + (q31_t)0xF054D8D4, (q31_t)0x8162AA03, (q31_t)0xED37EF91, + (q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x8275A0C0, + (q31_t)0xE70747C3, (q31_t)0x831C314E, (q31_t)0xE3F47D95, + (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x84A2FC62, + (q31_t)0xDDDC5B3A, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2, + (q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x877B7BEC, + (q31_t)0xD4E0CB14, (q31_t)0x8893B124, (q31_t)0xD1EEF59E, + (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8AFB2CBA, + (q31_t)0xCC210D78, (q31_t)0x8C4A142F, (q31_t)0xC945DFEC, + (q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8F1D343A, + (q31_t)0xC3A9458F, (q31_t)0x90A0FD4E, (q31_t)0xC0E8B648, + (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x93DBD69F, + (q31_t)0xBB8532AF, (q31_t)0x9592675B, (q31_t)0xB8E31319, + (q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x99307EE0, + (q31_t)0xB3C0200C, (q31_t)0x9B1776D9, (q31_t)0xB140175B, + (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9F13C7D0, + (q31_t)0xAC64D510, (q31_t)0xA1288376, (q31_t)0xAA0A5B2D, + (q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA57D8666, + (q31_t)0xA57D8666, (q31_t)0xA7BD22AB, (q31_t)0xA34BDF20, + (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAC64D510, + (q31_t)0x9F13C7D0, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53, + (q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB3C0200C, + (q31_t)0x99307EE0, (q31_t)0xB64BEACC, (q31_t)0x9759617E, + (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xBB8532AF, + (q31_t)0x93DBD69F, (q31_t)0xBE31E19B, (q31_t)0x9235F2EB, + (q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC3A9458F, + (q31_t)0x8F1D343A, (q31_t)0xC67322CD, (q31_t)0x8DAAD37B, + (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xCC210D78, + (q31_t)0x8AFB2CBA, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3, + (q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD4E0CB14, + (q31_t)0x877B7BEC, (q31_t)0xD7D946D7, (q31_t)0x8675DC4E, + (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDDDC5B3A, + (q31_t)0x84A2FC62, (q31_t)0xE0E60684, (q31_t)0x83D60411, + (q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE70747C3, + (q31_t)0x8275A0C0, (q31_t)0xEA1DEBBB, (q31_t)0x81E26C16, + (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xF054D8D4, + (q31_t)0x80F66E3C, (q31_t)0xF3742CA1, (q31_t)0x809DC970, + (q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF9B82683, + (q31_t)0x80277872, (q31_t)0xFCDBD541, (q31_t)0x8009DE7D +}; + +/** +* \par +* Example code for Q31 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 512 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q31(Fixed point 1.31): +* round(twiddleCoefQ31(i) * pow(2, 31)) +* +*/ +const q31_t twiddleCoef_512_q31[768] = { + (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFD885A, + (q31_t)0x01921D1F, (q31_t)0x7FF62182, (q31_t)0x03242ABF, + (q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FD8878D, + (q31_t)0x0647D97C, (q31_t)0x7FC25596, (q31_t)0x07D95B9E, + (q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F872BF3, + (q31_t)0x0AFB6805, (q31_t)0x7F62368F, (q31_t)0x0C8BD35E, + (q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F0991C3, + (q31_t)0x0FAB272B, (q31_t)0x7ED5E5C6, (q31_t)0x1139F0CE, + (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E5FE493, + (q31_t)0x145576B1, (q31_t)0x7E1D93E9, (q31_t)0x15E21444, + (q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7D8A5F3F, + (q31_t)0x18F8B83C, (q31_t)0x7D3980EC, (q31_t)0x1A82A025, + (q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7C894BDD, + (q31_t)0x1D934FE5, (q31_t)0x7C29FBEE, (q31_t)0x1F19F97B, + (q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7B5D039D, + (q31_t)0x2223A4C5, (q31_t)0x7AEF6323, (q31_t)0x23A6887E, + (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A05EEAD, + (q31_t)0x26A82185, (q31_t)0x798A23B1, (q31_t)0x2826B928, + (q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78848413, + (q31_t)0x2B1F34EB, (q31_t)0x77FAB988, (q31_t)0x2C98FBBA, + (q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x76D94988, + (q31_t)0x2F875262, (q31_t)0x7641AF3C, (q31_t)0x30FBC54D, + (q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x7504D345, + (q31_t)0x33DEF287, (q31_t)0x745F9DD1, (q31_t)0x354D9056, + (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x7307C3D0, + (q31_t)0x382493B0, (q31_t)0x72552C84, (q31_t)0x398CDD32, + (q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x70E2CBC6, + (q31_t)0x3C56BA70, (q31_t)0x70231099, (q31_t)0x3DB832A5, + (q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6E96A99C, + (q31_t)0x4073F21D, (q31_t)0x6DCA0D14, (q31_t)0x41CE1E64, + (q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6C242960, + (q31_t)0x447ACD50, (q31_t)0x6B4AF278, (q31_t)0x45CD358F, + (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x698C246C, + (q31_t)0x4869E664, (q31_t)0x68A69E81, (q31_t)0x49B41533, + (q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x66CF811F, + (q31_t)0x4C3FDFF3, (q31_t)0x65DDFBD3, (q31_t)0x4D8162C4, + (q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x63EF328F, + (q31_t)0x4FFB654D, (q31_t)0x62F201AC, (q31_t)0x5133CC94, + (q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x60EC3830, + (q31_t)0x539B2AEF, (q31_t)0x5FE3B38D, (q31_t)0x54CA0A4A, + (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5DC79D7C, + (q31_t)0x571DEEF9, (q31_t)0x5CB420DF, (q31_t)0x5842DD54, + (q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5A82799A, + (q31_t)0x5A82799A, (q31_t)0x59646497, (q31_t)0x5B9D1153, + (q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x571DEEF9, + (q31_t)0x5DC79D7C, (q31_t)0x55F5A4D2, (q31_t)0x5ED77C89, + (q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x539B2AEF, + (q31_t)0x60EC3830, (q31_t)0x5269126E, (q31_t)0x61F1003E, + (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x4FFB654D, + (q31_t)0x63EF328F, (q31_t)0x4EBFE8A4, (q31_t)0x64E88926, + (q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4C3FDFF3, + (q31_t)0x66CF811F, (q31_t)0x4AFB6C97, (q31_t)0x67BD0FBC, + (q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x4869E664, + (q31_t)0x698C246C, (q31_t)0x471CECE6, (q31_t)0x6A6D98A4, + (q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x447ACD50, + (q31_t)0x6C242960, (q31_t)0x4325C135, (q31_t)0x6CF934FB, + (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x4073F21D, + (q31_t)0x6E96A99C, (q31_t)0x3F1749B7, (q31_t)0x6F5F02B1, + (q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3C56BA70, + (q31_t)0x70E2CBC6, (q31_t)0x3AF2EEB7, (q31_t)0x719E2CD2, + (q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x382493B0, + (q31_t)0x7307C3D0, (q31_t)0x36BA2013, (q31_t)0x73B5EBD0, + (q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x33DEF287, + (q31_t)0x7504D345, (q31_t)0x326E54C7, (q31_t)0x75A585CF, + (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x2F875262, + (q31_t)0x76D94988, (q31_t)0x2E110A62, (q31_t)0x776C4EDB, + (q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2B1F34EB, + (q31_t)0x78848413, (q31_t)0x29A3C484, (q31_t)0x7909A92C, + (q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x26A82185, + (q31_t)0x7A05EEAD, (q31_t)0x25280C5D, (q31_t)0x7A7D055B, + (q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x2223A4C5, + (q31_t)0x7B5D039D, (q31_t)0x209F701C, (q31_t)0x7BC5E28F, + (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1D934FE5, + (q31_t)0x7C894BDD, (q31_t)0x1C0B826A, (q31_t)0x7CE3CEB1, + (q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x18F8B83C, + (q31_t)0x7D8A5F3F, (q31_t)0x176DD9DE, (q31_t)0x7DD6668E, + (q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x145576B1, + (q31_t)0x7E5FE493, (q31_t)0x12C8106E, (q31_t)0x7E9D55FC, + (q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x0FAB272B, + (q31_t)0x7F0991C3, (q31_t)0x0E1BC2E3, (q31_t)0x7F3857F5, + (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0AFB6805, + (q31_t)0x7F872BF3, (q31_t)0x096A9049, (q31_t)0x7FA736B4, + (q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x0647D97C, + (q31_t)0x7FD8878D, (q31_t)0x04B6195D, (q31_t)0x7FE9CBC0, + (q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x01921D1F, + (q31_t)0x7FFD885A, (q31_t)0x00000000, (q31_t)0x7FFFFFFF, + (q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFCDBD541, + (q31_t)0x7FF62182, (q31_t)0xFB49E6A2, (q31_t)0x7FE9CBC0, + (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF826A461, + (q31_t)0x7FC25596, (q31_t)0xF6956FB6, (q31_t)0x7FA736B4, + (q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF3742CA1, + (q31_t)0x7F62368F, (q31_t)0xF1E43D1C, (q31_t)0x7F3857F5, + (q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xEEC60F31, + (q31_t)0x7ED5E5C6, (q31_t)0xED37EF91, (q31_t)0x7E9D55FC, + (q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEA1DEBBB, + (q31_t)0x7E1D93E9, (q31_t)0xE8922621, (q31_t)0x7DD6668E, + (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE57D5FDA, + (q31_t)0x7D3980EC, (q31_t)0xE3F47D95, (q31_t)0x7CE3CEB1, + (q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE0E60684, + (q31_t)0x7C29FBEE, (q31_t)0xDF608FE3, (q31_t)0x7BC5E28F, + (q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDC597781, + (q31_t)0x7AEF6323, (q31_t)0xDAD7F3A2, (q31_t)0x7A7D055B, + (q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD7D946D7, + (q31_t)0x798A23B1, (q31_t)0xD65C3B7B, (q31_t)0x7909A92C, + (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD3670445, + (q31_t)0x77FAB988, (q31_t)0xD1EEF59E, (q31_t)0x776C4EDB, + (q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xCF043AB2, + (q31_t)0x7641AF3C, (q31_t)0xCD91AB38, (q31_t)0x75A585CF, + (q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCAB26FA9, + (q31_t)0x745F9DD1, (q31_t)0xC945DFEC, (q31_t)0x73B5EBD0, + (q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC67322CD, + (q31_t)0x72552C84, (q31_t)0xC50D1148, (q31_t)0x719E2CD2, + (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC247CD5A, + (q31_t)0x70231099, (q31_t)0xC0E8B648, (q31_t)0x6F5F02B1, + (q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBE31E19B, + (q31_t)0x6DCA0D14, (q31_t)0xBCDA3ECA, (q31_t)0x6CF934FB, + (q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBA32CA70, + (q31_t)0x6B4AF278, (q31_t)0xB8E31319, (q31_t)0x6A6D98A4, + (q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB64BEACC, + (q31_t)0x68A69E81, (q31_t)0xB5049368, (q31_t)0x67BD0FBC, + (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB27E9D3B, + (q31_t)0x65DDFBD3, (q31_t)0xB140175B, (q31_t)0x64E88926, + (q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAECC336B, + (q31_t)0x62F201AC, (q31_t)0xAD96ED91, (q31_t)0x61F1003E, + (q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAB35F5B5, + (q31_t)0x5FE3B38D, (q31_t)0xAA0A5B2D, (q31_t)0x5ED77C89, + (q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA7BD22AB, + (q31_t)0x5CB420DF, (q31_t)0xA69B9B68, (q31_t)0x5B9D1153, + (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA462EEAC, + (q31_t)0x59646497, (q31_t)0xA34BDF20, (q31_t)0x5842DD54, + (q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA1288376, + (q31_t)0x55F5A4D2, (q31_t)0xA01C4C72, (q31_t)0x54CA0A4A, + (q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9E0EFFC1, + (q31_t)0x5269126E, (q31_t)0x9D0DFE53, (q31_t)0x5133CC94, + (q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9B1776D9, + (q31_t)0x4EBFE8A4, (q31_t)0x9A22042C, (q31_t)0x4D8162C4, + (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9842F043, + (q31_t)0x4AFB6C97, (q31_t)0x9759617E, (q31_t)0x49B41533, + (q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x9592675B, + (q31_t)0x471CECE6, (q31_t)0x94B50D87, (q31_t)0x45CD358F, + (q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x9306CB04, + (q31_t)0x4325C135, (q31_t)0x9235F2EB, (q31_t)0x41CE1E64, + (q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x90A0FD4E, + (q31_t)0x3F1749B7, (q31_t)0x8FDCEF66, (q31_t)0x3DB832A5, + (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8E61D32D, + (q31_t)0x3AF2EEB7, (q31_t)0x8DAAD37B, (q31_t)0x398CDD32, + (q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8C4A142F, + (q31_t)0x36BA2013, (q31_t)0x8BA0622F, (q31_t)0x354D9056, + (q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8A5A7A30, + (q31_t)0x326E54C7, (q31_t)0x89BE50C3, (q31_t)0x30FBC54D, + (q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x8893B124, + (q31_t)0x2E110A62, (q31_t)0x88054677, (q31_t)0x2C98FBBA, + (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x86F656D3, + (q31_t)0x29A3C484, (q31_t)0x8675DC4E, (q31_t)0x2826B928, + (q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x8582FAA4, + (q31_t)0x25280C5D, (q31_t)0x85109CDC, (q31_t)0x23A6887E, + (q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x843A1D70, + (q31_t)0x209F701C, (q31_t)0x83D60411, (q31_t)0x1F19F97B, + (q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x831C314E, + (q31_t)0x1C0B826A, (q31_t)0x82C67F13, (q31_t)0x1A82A025, + (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x82299971, + (q31_t)0x176DD9DE, (q31_t)0x81E26C16, (q31_t)0x15E21444, + (q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x8162AA03, + (q31_t)0x12C8106E, (q31_t)0x812A1A39, (q31_t)0x1139F0CE, + (q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80C7A80A, + (q31_t)0x0E1BC2E3, (q31_t)0x809DC970, (q31_t)0x0C8BD35E, + (q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x8058C94C, + (q31_t)0x096A9049, (q31_t)0x803DAA69, (q31_t)0x07D95B9E, + (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x80163440, + (q31_t)0x04B6195D, (q31_t)0x8009DE7D, (q31_t)0x03242ABF, + (q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x80000000, + (q31_t)0x00000000, (q31_t)0x800277A5, (q31_t)0xFE6DE2E0, + (q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x80163440, + (q31_t)0xFB49E6A2, (q31_t)0x80277872, (q31_t)0xF9B82683, + (q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x8058C94C, + (q31_t)0xF6956FB6, (q31_t)0x8078D40D, (q31_t)0xF50497FA, + (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80C7A80A, + (q31_t)0xF1E43D1C, (q31_t)0x80F66E3C, (q31_t)0xF054D8D4, + (q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8162AA03, + (q31_t)0xED37EF91, (q31_t)0x81A01B6C, (q31_t)0xEBAA894E, + (q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x82299971, + (q31_t)0xE8922621, (q31_t)0x8275A0C0, (q31_t)0xE70747C3, + (q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x831C314E, + (q31_t)0xE3F47D95, (q31_t)0x8376B422, (q31_t)0xE26CB01A, + (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x843A1D70, + (q31_t)0xDF608FE3, (q31_t)0x84A2FC62, (q31_t)0xDDDC5B3A, + (q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x8582FAA4, + (q31_t)0xDAD7F3A2, (q31_t)0x85FA1152, (q31_t)0xD957DE7A, + (q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x86F656D3, + (q31_t)0xD65C3B7B, (q31_t)0x877B7BEC, (q31_t)0xD4E0CB14, + (q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x8893B124, + (q31_t)0xD1EEF59E, (q31_t)0x8926B677, (q31_t)0xD078AD9D, + (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8A5A7A30, + (q31_t)0xCD91AB38, (q31_t)0x8AFB2CBA, (q31_t)0xCC210D78, + (q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8C4A142F, + (q31_t)0xC945DFEC, (q31_t)0x8CF83C30, (q31_t)0xC7DB6C50, + (q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8E61D32D, + (q31_t)0xC50D1148, (q31_t)0x8F1D343A, (q31_t)0xC3A9458F, + (q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x90A0FD4E, + (q31_t)0xC0E8B648, (q31_t)0x91695663, (q31_t)0xBF8C0DE2, + (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x9306CB04, + (q31_t)0xBCDA3ECA, (q31_t)0x93DBD69F, (q31_t)0xBB8532AF, + (q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x9592675B, + (q31_t)0xB8E31319, (q31_t)0x9673DB94, (q31_t)0xB796199B, + (q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x9842F043, + (q31_t)0xB5049368, (q31_t)0x99307EE0, (q31_t)0xB3C0200C, + (q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9B1776D9, + (q31_t)0xB140175B, (q31_t)0x9C10CD70, (q31_t)0xB0049AB2, + (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9E0EFFC1, + (q31_t)0xAD96ED91, (q31_t)0x9F13C7D0, (q31_t)0xAC64D510, + (q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA1288376, + (q31_t)0xAA0A5B2D, (q31_t)0xA2386283, (q31_t)0xA8E21106, + (q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA462EEAC, + (q31_t)0xA69B9B68, (q31_t)0xA57D8666, (q31_t)0xA57D8666, + (q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA7BD22AB, + (q31_t)0xA34BDF20, (q31_t)0xA8E21106, (q31_t)0xA2386283, + (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAB35F5B5, + (q31_t)0xA01C4C72, (q31_t)0xAC64D510, (q31_t)0x9F13C7D0, + (q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xAECC336B, + (q31_t)0x9D0DFE53, (q31_t)0xB0049AB2, (q31_t)0x9C10CD70, + (q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB27E9D3B, + (q31_t)0x9A22042C, (q31_t)0xB3C0200C, (q31_t)0x99307EE0, + (q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB64BEACC, + (q31_t)0x9759617E, (q31_t)0xB796199B, (q31_t)0x9673DB94, + (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xBA32CA70, + (q31_t)0x94B50D87, (q31_t)0xBB8532AF, (q31_t)0x93DBD69F, + (q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBE31E19B, + (q31_t)0x9235F2EB, (q31_t)0xBF8C0DE2, (q31_t)0x91695663, + (q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC247CD5A, + (q31_t)0x8FDCEF66, (q31_t)0xC3A9458F, (q31_t)0x8F1D343A, + (q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC67322CD, + (q31_t)0x8DAAD37B, (q31_t)0xC7DB6C50, (q31_t)0x8CF83C30, + (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xCAB26FA9, + (q31_t)0x8BA0622F, (q31_t)0xCC210D78, (q31_t)0x8AFB2CBA, + (q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCF043AB2, + (q31_t)0x89BE50C3, (q31_t)0xD078AD9D, (q31_t)0x8926B677, + (q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD3670445, + (q31_t)0x88054677, (q31_t)0xD4E0CB14, (q31_t)0x877B7BEC, + (q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD7D946D7, + (q31_t)0x8675DC4E, (q31_t)0xD957DE7A, (q31_t)0x85FA1152, + (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDC597781, + (q31_t)0x85109CDC, (q31_t)0xDDDC5B3A, (q31_t)0x84A2FC62, + (q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xE0E60684, + (q31_t)0x83D60411, (q31_t)0xE26CB01A, (q31_t)0x8376B422, + (q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE57D5FDA, + (q31_t)0x82C67F13, (q31_t)0xE70747C3, (q31_t)0x8275A0C0, + (q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xEA1DEBBB, + (q31_t)0x81E26C16, (q31_t)0xEBAA894E, (q31_t)0x81A01B6C, + (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xEEC60F31, + (q31_t)0x812A1A39, (q31_t)0xF054D8D4, (q31_t)0x80F66E3C, + (q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF3742CA1, + (q31_t)0x809DC970, (q31_t)0xF50497FA, (q31_t)0x8078D40D, + (q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF826A461, + (q31_t)0x803DAA69, (q31_t)0xF9B82683, (q31_t)0x80277872, + (q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFCDBD541, + (q31_t)0x8009DE7D, (q31_t)0xFE6DE2E0, (q31_t)0x800277A5 +}; + +/** +* \par +* Example code for Q31 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 1024 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q31(Fixed point 1.31): +* round(twiddleCoefQ31(i) * pow(2, 31)) +* +*/ +const q31_t twiddleCoef_1024_q31[1536] = { + (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFF6216, + (q31_t)0x00C90F88, (q31_t)0x7FFD885A, (q31_t)0x01921D1F, + (q31_t)0x7FFA72D1, (q31_t)0x025B26D7, (q31_t)0x7FF62182, + (q31_t)0x03242ABF, (q31_t)0x7FF09477, (q31_t)0x03ED26E6, + (q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FE1C76B, + (q31_t)0x057F0034, (q31_t)0x7FD8878D, (q31_t)0x0647D97C, + (q31_t)0x7FCE0C3E, (q31_t)0x0710A344, (q31_t)0x7FC25596, + (q31_t)0x07D95B9E, (q31_t)0x7FB563B2, (q31_t)0x08A2009A, + (q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F97CEBC, + (q31_t)0x0A3308BC, (q31_t)0x7F872BF3, (q31_t)0x0AFB6805, + (q31_t)0x7F754E7F, (q31_t)0x0BC3AC35, (q31_t)0x7F62368F, + (q31_t)0x0C8BD35E, (q31_t)0x7F4DE450, (q31_t)0x0D53DB92, + (q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F2191B4, + (q31_t)0x0EE38765, (q31_t)0x7F0991C3, (q31_t)0x0FAB272B, + (q31_t)0x7EF0585F, (q31_t)0x1072A047, (q31_t)0x7ED5E5C6, + (q31_t)0x1139F0CE, (q31_t)0x7EBA3A39, (q31_t)0x120116D4, + (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E7F3956, + (q31_t)0x138EDBB0, (q31_t)0x7E5FE493, (q31_t)0x145576B1, + (q31_t)0x7E3F57FE, (q31_t)0x151BDF85, (q31_t)0x7E1D93E9, + (q31_t)0x15E21444, (q31_t)0x7DFA98A7, (q31_t)0x16A81305, + (q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7DB0FDF7, + (q31_t)0x183366E8, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C, + (q31_t)0x7D628AC5, (q31_t)0x19BDCBF2, (q31_t)0x7D3980EC, + (q31_t)0x1A82A025, (q31_t)0x7D0F4218, (q31_t)0x1B4732EF, + (q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7CB72724, + (q31_t)0x1CCF8CB3, (q31_t)0x7C894BDD, (q31_t)0x1D934FE5, + (q31_t)0x7C5A3D4F, (q31_t)0x1E56CA1E, (q31_t)0x7C29FBEE, + (q31_t)0x1F19F97B, (q31_t)0x7BF88830, (q31_t)0x1FDCDC1A, + (q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7B920B89, + (q31_t)0x2161B39F, (q31_t)0x7B5D039D, (q31_t)0x2223A4C5, + (q31_t)0x7B26CB4F, (q31_t)0x22E541AE, (q31_t)0x7AEF6323, + (q31_t)0x23A6887E, (q31_t)0x7AB6CBA3, (q31_t)0x24677757, + (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A4210D8, + (q31_t)0x25E845B5, (q31_t)0x7A05EEAD, (q31_t)0x26A82185, + (q31_t)0x79C89F6D, (q31_t)0x27679DF4, (q31_t)0x798A23B1, + (q31_t)0x2826B928, (q31_t)0x794A7C11, (q31_t)0x28E5714A, + (q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78C7ABA1, + (q31_t)0x2A61B101, (q31_t)0x78848413, (q31_t)0x2B1F34EB, + (q31_t)0x78403328, (q31_t)0x2BDC4E6F, (q31_t)0x77FAB988, + (q31_t)0x2C98FBBA, (q31_t)0x77B417DF, (q31_t)0x2D553AFB, + (q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x77235F2D, + (q31_t)0x2ECC681E, (q31_t)0x76D94988, (q31_t)0x2F875262, + (q31_t)0x768E0EA5, (q31_t)0x3041C760, (q31_t)0x7641AF3C, + (q31_t)0x30FBC54D, (q31_t)0x75F42C0A, (q31_t)0x31B54A5D, + (q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x7555BD4B, + (q31_t)0x3326E2C2, (q31_t)0x7504D345, (q31_t)0x33DEF287, + (q31_t)0x74B2C883, (q31_t)0x3496824F, (q31_t)0x745F9DD1, + (q31_t)0x354D9056, (q31_t)0x740B53FA, (q31_t)0x36041AD9, + (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x735F6626, + (q31_t)0x376F9E46, (q31_t)0x7307C3D0, (q31_t)0x382493B0, + (q31_t)0x72AF05A6, (q31_t)0x38D8FE93, (q31_t)0x72552C84, + (q31_t)0x398CDD32, (q31_t)0x71FA3948, (q31_t)0x3A402DD1, + (q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x71410804, + (q31_t)0x3BA51E29, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70, + (q31_t)0x708378FE, (q31_t)0x3D07C1D5, (q31_t)0x70231099, + (q31_t)0x3DB832A5, (q31_t)0x6FC19385, (q31_t)0x3E680B2C, + (q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6EFB5F12, + (q31_t)0x3FC5EC97, (q31_t)0x6E96A99C, (q31_t)0x4073F21D, + (q31_t)0x6E30E349, (q31_t)0x4121589A, (q31_t)0x6DCA0D14, + (q31_t)0x41CE1E64, (q31_t)0x6D6227FA, (q31_t)0x427A41D0, + (q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6C8F351C, + (q31_t)0x43D09AEC, (q31_t)0x6C242960, (q31_t)0x447ACD50, + (q31_t)0x6BB812D0, (q31_t)0x452456BC, (q31_t)0x6B4AF278, + (q31_t)0x45CD358F, (q31_t)0x6ADCC964, (q31_t)0x46756827, + (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x69FD614A, + (q31_t)0x47C3C22E, (q31_t)0x698C246C, (q31_t)0x4869E664, + (q31_t)0x6919E320, (q31_t)0x490F57EE, (q31_t)0x68A69E81, + (q31_t)0x49B41533, (q31_t)0x683257AA, (q31_t)0x4A581C9D, + (q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x6746C7D7, + (q31_t)0x4B9E038F, (q31_t)0x66CF811F, (q31_t)0x4C3FDFF3, + (q31_t)0x66573CBB, (q31_t)0x4CE10034, (q31_t)0x65DDFBD3, + (q31_t)0x4D8162C4, (q31_t)0x6563BF92, (q31_t)0x4E210617, + (q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x646C59BF, + (q31_t)0x4F5E08E3, (q31_t)0x63EF328F, (q31_t)0x4FFB654D, + (q31_t)0x637114CC, (q31_t)0x5097FC5E, (q31_t)0x62F201AC, + (q31_t)0x5133CC94, (q31_t)0x6271FA69, (q31_t)0x51CED46E, + (q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x616F146B, + (q31_t)0x53028517, (q31_t)0x60EC3830, (q31_t)0x539B2AEF, + (q31_t)0x60686CCE, (q31_t)0x5433027D, (q31_t)0x5FE3B38D, + (q31_t)0x54CA0A4A, (q31_t)0x5F5E0DB3, (q31_t)0x556040E2, + (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5E50015D, + (q31_t)0x568A34A9, (q31_t)0x5DC79D7C, (q31_t)0x571DEEF9, + (q31_t)0x5D3E5236, (q31_t)0x57B0D256, (q31_t)0x5CB420DF, + (q31_t)0x5842DD54, (q31_t)0x5C290ACC, (q31_t)0x58D40E8C, + (q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5B1035CF, + (q31_t)0x59F3DE12, (q31_t)0x5A82799A, (q31_t)0x5A82799A, + (q31_t)0x59F3DE12, (q31_t)0x5B1035CF, (q31_t)0x59646497, + (q31_t)0x5B9D1153, (q31_t)0x58D40E8C, (q31_t)0x5C290ACC, + (q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x57B0D256, + (q31_t)0x5D3E5236, (q31_t)0x571DEEF9, (q31_t)0x5DC79D7C, + (q31_t)0x568A34A9, (q31_t)0x5E50015D, (q31_t)0x55F5A4D2, + (q31_t)0x5ED77C89, (q31_t)0x556040E2, (q31_t)0x5F5E0DB3, + (q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x5433027D, + (q31_t)0x60686CCE, (q31_t)0x539B2AEF, (q31_t)0x60EC3830, + (q31_t)0x53028517, (q31_t)0x616F146B, (q31_t)0x5269126E, + (q31_t)0x61F1003E, (q31_t)0x51CED46E, (q31_t)0x6271FA69, + (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x5097FC5E, + (q31_t)0x637114CC, (q31_t)0x4FFB654D, (q31_t)0x63EF328F, + (q31_t)0x4F5E08E3, (q31_t)0x646C59BF, (q31_t)0x4EBFE8A4, + (q31_t)0x64E88926, (q31_t)0x4E210617, (q31_t)0x6563BF92, + (q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4CE10034, + (q31_t)0x66573CBB, (q31_t)0x4C3FDFF3, (q31_t)0x66CF811F, + (q31_t)0x4B9E038F, (q31_t)0x6746C7D7, (q31_t)0x4AFB6C97, + (q31_t)0x67BD0FBC, (q31_t)0x4A581C9D, (q31_t)0x683257AA, + (q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x490F57EE, + (q31_t)0x6919E320, (q31_t)0x4869E664, (q31_t)0x698C246C, + (q31_t)0x47C3C22E, (q31_t)0x69FD614A, (q31_t)0x471CECE6, + (q31_t)0x6A6D98A4, (q31_t)0x46756827, (q31_t)0x6ADCC964, + (q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x452456BC, + (q31_t)0x6BB812D0, (q31_t)0x447ACD50, (q31_t)0x6C242960, + (q31_t)0x43D09AEC, (q31_t)0x6C8F351C, (q31_t)0x4325C135, + (q31_t)0x6CF934FB, (q31_t)0x427A41D0, (q31_t)0x6D6227FA, + (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x4121589A, + (q31_t)0x6E30E349, (q31_t)0x4073F21D, (q31_t)0x6E96A99C, + (q31_t)0x3FC5EC97, (q31_t)0x6EFB5F12, (q31_t)0x3F1749B7, + (q31_t)0x6F5F02B1, (q31_t)0x3E680B2C, (q31_t)0x6FC19385, + (q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3D07C1D5, + (q31_t)0x708378FE, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6, + (q31_t)0x3BA51E29, (q31_t)0x71410804, (q31_t)0x3AF2EEB7, + (q31_t)0x719E2CD2, (q31_t)0x3A402DD1, (q31_t)0x71FA3948, + (q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x38D8FE93, + (q31_t)0x72AF05A6, (q31_t)0x382493B0, (q31_t)0x7307C3D0, + (q31_t)0x376F9E46, (q31_t)0x735F6626, (q31_t)0x36BA2013, + (q31_t)0x73B5EBD0, (q31_t)0x36041AD9, (q31_t)0x740B53FA, + (q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x3496824F, + (q31_t)0x74B2C883, (q31_t)0x33DEF287, (q31_t)0x7504D345, + (q31_t)0x3326E2C2, (q31_t)0x7555BD4B, (q31_t)0x326E54C7, + (q31_t)0x75A585CF, (q31_t)0x31B54A5D, (q31_t)0x75F42C0A, + (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x3041C760, + (q31_t)0x768E0EA5, (q31_t)0x2F875262, (q31_t)0x76D94988, + (q31_t)0x2ECC681E, (q31_t)0x77235F2D, (q31_t)0x2E110A62, + (q31_t)0x776C4EDB, (q31_t)0x2D553AFB, (q31_t)0x77B417DF, + (q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2BDC4E6F, + (q31_t)0x78403328, (q31_t)0x2B1F34EB, (q31_t)0x78848413, + (q31_t)0x2A61B101, (q31_t)0x78C7ABA1, (q31_t)0x29A3C484, + (q31_t)0x7909A92C, (q31_t)0x28E5714A, (q31_t)0x794A7C11, + (q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x27679DF4, + (q31_t)0x79C89F6D, (q31_t)0x26A82185, (q31_t)0x7A05EEAD, + (q31_t)0x25E845B5, (q31_t)0x7A4210D8, (q31_t)0x25280C5D, + (q31_t)0x7A7D055B, (q31_t)0x24677757, (q31_t)0x7AB6CBA3, + (q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x22E541AE, + (q31_t)0x7B26CB4F, (q31_t)0x2223A4C5, (q31_t)0x7B5D039D, + (q31_t)0x2161B39F, (q31_t)0x7B920B89, (q31_t)0x209F701C, + (q31_t)0x7BC5E28F, (q31_t)0x1FDCDC1A, (q31_t)0x7BF88830, + (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1E56CA1E, + (q31_t)0x7C5A3D4F, (q31_t)0x1D934FE5, (q31_t)0x7C894BDD, + (q31_t)0x1CCF8CB3, (q31_t)0x7CB72724, (q31_t)0x1C0B826A, + (q31_t)0x7CE3CEB1, (q31_t)0x1B4732EF, (q31_t)0x7D0F4218, + (q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x19BDCBF2, + (q31_t)0x7D628AC5, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F, + (q31_t)0x183366E8, (q31_t)0x7DB0FDF7, (q31_t)0x176DD9DE, + (q31_t)0x7DD6668E, (q31_t)0x16A81305, (q31_t)0x7DFA98A7, + (q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x151BDF85, + (q31_t)0x7E3F57FE, (q31_t)0x145576B1, (q31_t)0x7E5FE493, + (q31_t)0x138EDBB0, (q31_t)0x7E7F3956, (q31_t)0x12C8106E, + (q31_t)0x7E9D55FC, (q31_t)0x120116D4, (q31_t)0x7EBA3A39, + (q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x1072A047, + (q31_t)0x7EF0585F, (q31_t)0x0FAB272B, (q31_t)0x7F0991C3, + (q31_t)0x0EE38765, (q31_t)0x7F2191B4, (q31_t)0x0E1BC2E3, + (q31_t)0x7F3857F5, (q31_t)0x0D53DB92, (q31_t)0x7F4DE450, + (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0BC3AC35, + (q31_t)0x7F754E7F, (q31_t)0x0AFB6805, (q31_t)0x7F872BF3, + (q31_t)0x0A3308BC, (q31_t)0x7F97CEBC, (q31_t)0x096A9049, + (q31_t)0x7FA736B4, (q31_t)0x08A2009A, (q31_t)0x7FB563B2, + (q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x0710A344, + (q31_t)0x7FCE0C3E, (q31_t)0x0647D97C, (q31_t)0x7FD8878D, + (q31_t)0x057F0034, (q31_t)0x7FE1C76B, (q31_t)0x04B6195D, + (q31_t)0x7FE9CBC0, (q31_t)0x03ED26E6, (q31_t)0x7FF09477, + (q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x025B26D7, + (q31_t)0x7FFA72D1, (q31_t)0x01921D1F, (q31_t)0x7FFD885A, + (q31_t)0x00C90F88, (q31_t)0x7FFF6216, (q31_t)0x00000000, + (q31_t)0x7FFFFFFF, (q31_t)0xFF36F078, (q31_t)0x7FFF6216, + (q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFDA4D928, + (q31_t)0x7FFA72D1, (q31_t)0xFCDBD541, (q31_t)0x7FF62182, + (q31_t)0xFC12D919, (q31_t)0x7FF09477, (q31_t)0xFB49E6A2, + (q31_t)0x7FE9CBC0, (q31_t)0xFA80FFCB, (q31_t)0x7FE1C76B, + (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF8EF5CBB, + (q31_t)0x7FCE0C3E, (q31_t)0xF826A461, (q31_t)0x7FC25596, + (q31_t)0xF75DFF65, (q31_t)0x7FB563B2, (q31_t)0xF6956FB6, + (q31_t)0x7FA736B4, (q31_t)0xF5CCF743, (q31_t)0x7F97CEBC, + (q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF43C53CA, + (q31_t)0x7F754E7F, (q31_t)0xF3742CA1, (q31_t)0x7F62368F, + (q31_t)0xF2AC246D, (q31_t)0x7F4DE450, (q31_t)0xF1E43D1C, + (q31_t)0x7F3857F5, (q31_t)0xF11C789A, (q31_t)0x7F2191B4, + (q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xEF8D5FB8, + (q31_t)0x7EF0585F, (q31_t)0xEEC60F31, (q31_t)0x7ED5E5C6, + (q31_t)0xEDFEE92B, (q31_t)0x7EBA3A39, (q31_t)0xED37EF91, + (q31_t)0x7E9D55FC, (q31_t)0xEC71244F, (q31_t)0x7E7F3956, + (q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEAE4207A, + (q31_t)0x7E3F57FE, (q31_t)0xEA1DEBBB, (q31_t)0x7E1D93E9, + (q31_t)0xE957ECFB, (q31_t)0x7DFA98A7, (q31_t)0xE8922621, + (q31_t)0x7DD6668E, (q31_t)0xE7CC9917, (q31_t)0x7DB0FDF7, + (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE642340D, + (q31_t)0x7D628AC5, (q31_t)0xE57D5FDA, (q31_t)0x7D3980EC, + (q31_t)0xE4B8CD10, (q31_t)0x7D0F4218, (q31_t)0xE3F47D95, + (q31_t)0x7CE3CEB1, (q31_t)0xE330734C, (q31_t)0x7CB72724, + (q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE1A935E1, + (q31_t)0x7C5A3D4F, (q31_t)0xE0E60684, (q31_t)0x7C29FBEE, + (q31_t)0xE02323E5, (q31_t)0x7BF88830, (q31_t)0xDF608FE3, + (q31_t)0x7BC5E28F, (q31_t)0xDE9E4C60, (q31_t)0x7B920B89, + (q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDD1ABE51, + (q31_t)0x7B26CB4F, (q31_t)0xDC597781, (q31_t)0x7AEF6323, + (q31_t)0xDB9888A8, (q31_t)0x7AB6CBA3, (q31_t)0xDAD7F3A2, + (q31_t)0x7A7D055B, (q31_t)0xDA17BA4A, (q31_t)0x7A4210D8, + (q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD898620C, + (q31_t)0x79C89F6D, (q31_t)0xD7D946D7, (q31_t)0x798A23B1, + (q31_t)0xD71A8EB5, (q31_t)0x794A7C11, (q31_t)0xD65C3B7B, + (q31_t)0x7909A92C, (q31_t)0xD59E4EFE, (q31_t)0x78C7ABA1, + (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD423B190, + (q31_t)0x78403328, (q31_t)0xD3670445, (q31_t)0x77FAB988, + (q31_t)0xD2AAC504, (q31_t)0x77B417DF, (q31_t)0xD1EEF59E, + (q31_t)0x776C4EDB, (q31_t)0xD13397E1, (q31_t)0x77235F2D, + (q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xCFBE389F, + (q31_t)0x768E0EA5, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, + (q31_t)0xCE4AB5A2, (q31_t)0x75F42C0A, (q31_t)0xCD91AB38, + (q31_t)0x75A585CF, (q31_t)0xCCD91D3D, (q31_t)0x7555BD4B, + (q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCB697DB0, + (q31_t)0x74B2C883, (q31_t)0xCAB26FA9, (q31_t)0x745F9DD1, + (q31_t)0xC9FBE527, (q31_t)0x740B53FA, (q31_t)0xC945DFEC, + (q31_t)0x73B5EBD0, (q31_t)0xC89061BA, (q31_t)0x735F6626, + (q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC727016C, + (q31_t)0x72AF05A6, (q31_t)0xC67322CD, (q31_t)0x72552C84, + (q31_t)0xC5BFD22E, (q31_t)0x71FA3948, (q31_t)0xC50D1148, + (q31_t)0x719E2CD2, (q31_t)0xC45AE1D7, (q31_t)0x71410804, + (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC2F83E2A, + (q31_t)0x708378FE, (q31_t)0xC247CD5A, (q31_t)0x70231099, + (q31_t)0xC197F4D3, (q31_t)0x6FC19385, (q31_t)0xC0E8B648, + (q31_t)0x6F5F02B1, (q31_t)0xC03A1368, (q31_t)0x6EFB5F12, + (q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBEDEA765, + (q31_t)0x6E30E349, (q31_t)0xBE31E19B, (q31_t)0x6DCA0D14, + (q31_t)0xBD85BE2F, (q31_t)0x6D6227FA, (q31_t)0xBCDA3ECA, + (q31_t)0x6CF934FB, (q31_t)0xBC2F6513, (q31_t)0x6C8F351C, + (q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBADBA943, + (q31_t)0x6BB812D0, (q31_t)0xBA32CA70, (q31_t)0x6B4AF278, + (q31_t)0xB98A97D8, (q31_t)0x6ADCC964, (q31_t)0xB8E31319, + (q31_t)0x6A6D98A4, (q31_t)0xB83C3DD1, (q31_t)0x69FD614A, + (q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB6F0A811, + (q31_t)0x6919E320, (q31_t)0xB64BEACC, (q31_t)0x68A69E81, + (q31_t)0xB5A7E362, (q31_t)0x683257AA, (q31_t)0xB5049368, + (q31_t)0x67BD0FBC, (q31_t)0xB461FC70, (q31_t)0x6746C7D7, + (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB31EFFCB, + (q31_t)0x66573CBB, (q31_t)0xB27E9D3B, (q31_t)0x65DDFBD3, + (q31_t)0xB1DEF9E8, (q31_t)0x6563BF92, (q31_t)0xB140175B, + (q31_t)0x64E88926, (q31_t)0xB0A1F71C, (q31_t)0x646C59BF, + (q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAF6803A1, + (q31_t)0x637114CC, (q31_t)0xAECC336B, (q31_t)0x62F201AC, + (q31_t)0xAE312B91, (q31_t)0x6271FA69, (q31_t)0xAD96ED91, + (q31_t)0x61F1003E, (q31_t)0xACFD7AE8, (q31_t)0x616F146B, + (q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xABCCFD82, + (q31_t)0x60686CCE, (q31_t)0xAB35F5B5, (q31_t)0x5FE3B38D, + (q31_t)0xAA9FBF1D, (q31_t)0x5F5E0DB3, (q31_t)0xAA0A5B2D, + (q31_t)0x5ED77C89, (q31_t)0xA975CB56, (q31_t)0x5E50015D, + (q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA84F2DA9, + (q31_t)0x5D3E5236, (q31_t)0xA7BD22AB, (q31_t)0x5CB420DF, + (q31_t)0xA72BF173, (q31_t)0x5C290ACC, (q31_t)0xA69B9B68, + (q31_t)0x5B9D1153, (q31_t)0xA60C21ED, (q31_t)0x5B1035CF, + (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA4EFCA31, + (q31_t)0x59F3DE12, (q31_t)0xA462EEAC, (q31_t)0x59646497, + (q31_t)0xA3D6F533, (q31_t)0x58D40E8C, (q31_t)0xA34BDF20, + (q31_t)0x5842DD54, (q31_t)0xA2C1ADC9, (q31_t)0x57B0D256, + (q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA1AFFEA2, + (q31_t)0x568A34A9, (q31_t)0xA1288376, (q31_t)0x55F5A4D2, + (q31_t)0xA0A1F24C, (q31_t)0x556040E2, (q31_t)0xA01C4C72, + (q31_t)0x54CA0A4A, (q31_t)0x9F979331, (q31_t)0x5433027D, + (q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9E90EB94, + (q31_t)0x53028517, (q31_t)0x9E0EFFC1, (q31_t)0x5269126E, + (q31_t)0x9D8E0596, (q31_t)0x51CED46E, (q31_t)0x9D0DFE53, + (q31_t)0x5133CC94, (q31_t)0x9C8EEB33, (q31_t)0x5097FC5E, + (q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9B93A640, + (q31_t)0x4F5E08E3, (q31_t)0x9B1776D9, (q31_t)0x4EBFE8A4, + (q31_t)0x9A9C406D, (q31_t)0x4E210617, (q31_t)0x9A22042C, + (q31_t)0x4D8162C4, (q31_t)0x99A8C344, (q31_t)0x4CE10034, + (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x98B93828, + (q31_t)0x4B9E038F, (q31_t)0x9842F043, (q31_t)0x4AFB6C97, + (q31_t)0x97CDA855, (q31_t)0x4A581C9D, (q31_t)0x9759617E, + (q31_t)0x49B41533, (q31_t)0x96E61CDF, (q31_t)0x490F57EE, + (q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x96029EB5, + (q31_t)0x47C3C22E, (q31_t)0x9592675B, (q31_t)0x471CECE6, + (q31_t)0x9523369B, (q31_t)0x46756827, (q31_t)0x94B50D87, + (q31_t)0x45CD358F, (q31_t)0x9447ED2F, (q31_t)0x452456BC, + (q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x9370CAE4, + (q31_t)0x43D09AEC, (q31_t)0x9306CB04, (q31_t)0x4325C135, + (q31_t)0x929DD805, (q31_t)0x427A41D0, (q31_t)0x9235F2EB, + (q31_t)0x41CE1E64, (q31_t)0x91CF1CB6, (q31_t)0x4121589A, + (q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x9104A0ED, + (q31_t)0x3FC5EC97, (q31_t)0x90A0FD4E, (q31_t)0x3F1749B7, + (q31_t)0x903E6C7A, (q31_t)0x3E680B2C, (q31_t)0x8FDCEF66, + (q31_t)0x3DB832A5, (q31_t)0x8F7C8701, (q31_t)0x3D07C1D5, + (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8EBEF7FB, + (q31_t)0x3BA51E29, (q31_t)0x8E61D32D, (q31_t)0x3AF2EEB7, + (q31_t)0x8E05C6B7, (q31_t)0x3A402DD1, (q31_t)0x8DAAD37B, + (q31_t)0x398CDD32, (q31_t)0x8D50FA59, (q31_t)0x38D8FE93, + (q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8CA099D9, + (q31_t)0x376F9E46, (q31_t)0x8C4A142F, (q31_t)0x36BA2013, + (q31_t)0x8BF4AC05, (q31_t)0x36041AD9, (q31_t)0x8BA0622F, + (q31_t)0x354D9056, (q31_t)0x8B4D377C, (q31_t)0x3496824F, + (q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8AAA42B4, + (q31_t)0x3326E2C2, (q31_t)0x8A5A7A30, (q31_t)0x326E54C7, + (q31_t)0x8A0BD3F5, (q31_t)0x31B54A5D, (q31_t)0x89BE50C3, + (q31_t)0x30FBC54D, (q31_t)0x8971F15A, (q31_t)0x3041C760, + (q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x88DCA0D3, + (q31_t)0x2ECC681E, (q31_t)0x8893B124, (q31_t)0x2E110A62, + (q31_t)0x884BE820, (q31_t)0x2D553AFB, (q31_t)0x88054677, + (q31_t)0x2C98FBBA, (q31_t)0x87BFCCD7, (q31_t)0x2BDC4E6F, + (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8738545E, + (q31_t)0x2A61B101, (q31_t)0x86F656D3, (q31_t)0x29A3C484, + (q31_t)0x86B583EE, (q31_t)0x28E5714A, (q31_t)0x8675DC4E, + (q31_t)0x2826B928, (q31_t)0x86376092, (q31_t)0x27679DF4, + (q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x85BDEF27, + (q31_t)0x25E845B5, (q31_t)0x8582FAA4, (q31_t)0x25280C5D, + (q31_t)0x8549345C, (q31_t)0x24677757, (q31_t)0x85109CDC, + (q31_t)0x23A6887E, (q31_t)0x84D934B0, (q31_t)0x22E541AE, + (q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x846DF476, + (q31_t)0x2161B39F, (q31_t)0x843A1D70, (q31_t)0x209F701C, + (q31_t)0x840777CF, (q31_t)0x1FDCDC1A, (q31_t)0x83D60411, + (q31_t)0x1F19F97B, (q31_t)0x83A5C2B0, (q31_t)0x1E56CA1E, + (q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x8348D8DB, + (q31_t)0x1CCF8CB3, (q31_t)0x831C314E, (q31_t)0x1C0B826A, + (q31_t)0x82F0BDE8, (q31_t)0x1B4732EF, (q31_t)0x82C67F13, + (q31_t)0x1A82A025, (q31_t)0x829D753A, (q31_t)0x19BDCBF2, + (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x824F0208, + (q31_t)0x183366E8, (q31_t)0x82299971, (q31_t)0x176DD9DE, + (q31_t)0x82056758, (q31_t)0x16A81305, (q31_t)0x81E26C16, + (q31_t)0x15E21444, (q31_t)0x81C0A801, (q31_t)0x151BDF85, + (q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x8180C6A9, + (q31_t)0x138EDBB0, (q31_t)0x8162AA03, (q31_t)0x12C8106E, + (q31_t)0x8145C5C6, (q31_t)0x120116D4, (q31_t)0x812A1A39, + (q31_t)0x1139F0CE, (q31_t)0x810FA7A0, (q31_t)0x1072A047, + (q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80DE6E4C, + (q31_t)0x0EE38765, (q31_t)0x80C7A80A, (q31_t)0x0E1BC2E3, + (q31_t)0x80B21BAF, (q31_t)0x0D53DB92, (q31_t)0x809DC970, + (q31_t)0x0C8BD35E, (q31_t)0x808AB180, (q31_t)0x0BC3AC35, + (q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x80683143, + (q31_t)0x0A3308BC, (q31_t)0x8058C94C, (q31_t)0x096A9049, + (q31_t)0x804A9C4D, (q31_t)0x08A2009A, (q31_t)0x803DAA69, + (q31_t)0x07D95B9E, (q31_t)0x8031F3C1, (q31_t)0x0710A344, + (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x801E3894, + (q31_t)0x057F0034, (q31_t)0x80163440, (q31_t)0x04B6195D, + (q31_t)0x800F6B88, (q31_t)0x03ED26E6, (q31_t)0x8009DE7D, + (q31_t)0x03242ABF, (q31_t)0x80058D2E, (q31_t)0x025B26D7, + (q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x80009DE9, + (q31_t)0x00C90F88, (q31_t)0x80000000, (q31_t)0x00000000, + (q31_t)0x80009DE9, (q31_t)0xFF36F078, (q31_t)0x800277A5, + (q31_t)0xFE6DE2E0, (q31_t)0x80058D2E, (q31_t)0xFDA4D928, + (q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x800F6B88, + (q31_t)0xFC12D919, (q31_t)0x80163440, (q31_t)0xFB49E6A2, + (q31_t)0x801E3894, (q31_t)0xFA80FFCB, (q31_t)0x80277872, + (q31_t)0xF9B82683, (q31_t)0x8031F3C1, (q31_t)0xF8EF5CBB, + (q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x804A9C4D, + (q31_t)0xF75DFF65, (q31_t)0x8058C94C, (q31_t)0xF6956FB6, + (q31_t)0x80683143, (q31_t)0xF5CCF743, (q31_t)0x8078D40D, + (q31_t)0xF50497FA, (q31_t)0x808AB180, (q31_t)0xF43C53CA, + (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80B21BAF, + (q31_t)0xF2AC246D, (q31_t)0x80C7A80A, (q31_t)0xF1E43D1C, + (q31_t)0x80DE6E4C, (q31_t)0xF11C789A, (q31_t)0x80F66E3C, + (q31_t)0xF054D8D4, (q31_t)0x810FA7A0, (q31_t)0xEF8D5FB8, + (q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8145C5C6, + (q31_t)0xEDFEE92B, (q31_t)0x8162AA03, (q31_t)0xED37EF91, + (q31_t)0x8180C6A9, (q31_t)0xEC71244F, (q31_t)0x81A01B6C, + (q31_t)0xEBAA894E, (q31_t)0x81C0A801, (q31_t)0xEAE4207A, + (q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x82056758, + (q31_t)0xE957ECFB, (q31_t)0x82299971, (q31_t)0xE8922621, + (q31_t)0x824F0208, (q31_t)0xE7CC9917, (q31_t)0x8275A0C0, + (q31_t)0xE70747C3, (q31_t)0x829D753A, (q31_t)0xE642340D, + (q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x82F0BDE8, + (q31_t)0xE4B8CD10, (q31_t)0x831C314E, (q31_t)0xE3F47D95, + (q31_t)0x8348D8DB, (q31_t)0xE330734C, (q31_t)0x8376B422, + (q31_t)0xE26CB01A, (q31_t)0x83A5C2B0, (q31_t)0xE1A935E1, + (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x840777CF, + (q31_t)0xE02323E5, (q31_t)0x843A1D70, (q31_t)0xDF608FE3, + (q31_t)0x846DF476, (q31_t)0xDE9E4C60, (q31_t)0x84A2FC62, + (q31_t)0xDDDC5B3A, (q31_t)0x84D934B0, (q31_t)0xDD1ABE51, + (q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x8549345C, + (q31_t)0xDB9888A8, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2, + (q31_t)0x85BDEF27, (q31_t)0xDA17BA4A, (q31_t)0x85FA1152, + (q31_t)0xD957DE7A, (q31_t)0x86376092, (q31_t)0xD898620C, + (q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x86B583EE, + (q31_t)0xD71A8EB5, (q31_t)0x86F656D3, (q31_t)0xD65C3B7B, + (q31_t)0x8738545E, (q31_t)0xD59E4EFE, (q31_t)0x877B7BEC, + (q31_t)0xD4E0CB14, (q31_t)0x87BFCCD7, (q31_t)0xD423B190, + (q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x884BE820, + (q31_t)0xD2AAC504, (q31_t)0x8893B124, (q31_t)0xD1EEF59E, + (q31_t)0x88DCA0D3, (q31_t)0xD13397E1, (q31_t)0x8926B677, + (q31_t)0xD078AD9D, (q31_t)0x8971F15A, (q31_t)0xCFBE389F, + (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x8A0BD3F5, + (q31_t)0xCE4AB5A2, (q31_t)0x8A5A7A30, (q31_t)0xCD91AB38, + (q31_t)0x8AAA42B4, (q31_t)0xCCD91D3D, (q31_t)0x8AFB2CBA, + (q31_t)0xCC210D78, (q31_t)0x8B4D377C, (q31_t)0xCB697DB0, + (q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8BF4AC05, + (q31_t)0xC9FBE527, (q31_t)0x8C4A142F, (q31_t)0xC945DFEC, + (q31_t)0x8CA099D9, (q31_t)0xC89061BA, (q31_t)0x8CF83C30, + (q31_t)0xC7DB6C50, (q31_t)0x8D50FA59, (q31_t)0xC727016C, + (q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8E05C6B7, + (q31_t)0xC5BFD22E, (q31_t)0x8E61D32D, (q31_t)0xC50D1148, + (q31_t)0x8EBEF7FB, (q31_t)0xC45AE1D7, (q31_t)0x8F1D343A, + (q31_t)0xC3A9458F, (q31_t)0x8F7C8701, (q31_t)0xC2F83E2A, + (q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x903E6C7A, + (q31_t)0xC197F4D3, (q31_t)0x90A0FD4E, (q31_t)0xC0E8B648, + (q31_t)0x9104A0ED, (q31_t)0xC03A1368, (q31_t)0x91695663, + (q31_t)0xBF8C0DE2, (q31_t)0x91CF1CB6, (q31_t)0xBEDEA765, + (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x929DD805, + (q31_t)0xBD85BE2F, (q31_t)0x9306CB04, (q31_t)0xBCDA3ECA, + (q31_t)0x9370CAE4, (q31_t)0xBC2F6513, (q31_t)0x93DBD69F, + (q31_t)0xBB8532AF, (q31_t)0x9447ED2F, (q31_t)0xBADBA943, + (q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x9523369B, + (q31_t)0xB98A97D8, (q31_t)0x9592675B, (q31_t)0xB8E31319, + (q31_t)0x96029EB5, (q31_t)0xB83C3DD1, (q31_t)0x9673DB94, + (q31_t)0xB796199B, (q31_t)0x96E61CDF, (q31_t)0xB6F0A811, + (q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x97CDA855, + (q31_t)0xB5A7E362, (q31_t)0x9842F043, (q31_t)0xB5049368, + (q31_t)0x98B93828, (q31_t)0xB461FC70, (q31_t)0x99307EE0, + (q31_t)0xB3C0200C, (q31_t)0x99A8C344, (q31_t)0xB31EFFCB, + (q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9A9C406D, + (q31_t)0xB1DEF9E8, (q31_t)0x9B1776D9, (q31_t)0xB140175B, + (q31_t)0x9B93A640, (q31_t)0xB0A1F71C, (q31_t)0x9C10CD70, + (q31_t)0xB0049AB2, (q31_t)0x9C8EEB33, (q31_t)0xAF6803A1, + (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9D8E0596, + (q31_t)0xAE312B91, (q31_t)0x9E0EFFC1, (q31_t)0xAD96ED91, + (q31_t)0x9E90EB94, (q31_t)0xACFD7AE8, (q31_t)0x9F13C7D0, + (q31_t)0xAC64D510, (q31_t)0x9F979331, (q31_t)0xABCCFD82, + (q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA0A1F24C, + (q31_t)0xAA9FBF1D, (q31_t)0xA1288376, (q31_t)0xAA0A5B2D, + (q31_t)0xA1AFFEA2, (q31_t)0xA975CB56, (q31_t)0xA2386283, + (q31_t)0xA8E21106, (q31_t)0xA2C1ADC9, (q31_t)0xA84F2DA9, + (q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA3D6F533, + (q31_t)0xA72BF173, (q31_t)0xA462EEAC, (q31_t)0xA69B9B68, + (q31_t)0xA4EFCA31, (q31_t)0xA60C21ED, (q31_t)0xA57D8666, + (q31_t)0xA57D8666, (q31_t)0xA60C21ED, (q31_t)0xA4EFCA31, + (q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA72BF173, + (q31_t)0xA3D6F533, (q31_t)0xA7BD22AB, (q31_t)0xA34BDF20, + (q31_t)0xA84F2DA9, (q31_t)0xA2C1ADC9, (q31_t)0xA8E21106, + (q31_t)0xA2386283, (q31_t)0xA975CB56, (q31_t)0xA1AFFEA2, + (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAA9FBF1D, + (q31_t)0xA0A1F24C, (q31_t)0xAB35F5B5, (q31_t)0xA01C4C72, + (q31_t)0xABCCFD82, (q31_t)0x9F979331, (q31_t)0xAC64D510, + (q31_t)0x9F13C7D0, (q31_t)0xACFD7AE8, (q31_t)0x9E90EB94, + (q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xAE312B91, + (q31_t)0x9D8E0596, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53, + (q31_t)0xAF6803A1, (q31_t)0x9C8EEB33, (q31_t)0xB0049AB2, + (q31_t)0x9C10CD70, (q31_t)0xB0A1F71C, (q31_t)0x9B93A640, + (q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB1DEF9E8, + (q31_t)0x9A9C406D, (q31_t)0xB27E9D3B, (q31_t)0x9A22042C, + (q31_t)0xB31EFFCB, (q31_t)0x99A8C344, (q31_t)0xB3C0200C, + (q31_t)0x99307EE0, (q31_t)0xB461FC70, (q31_t)0x98B93828, + (q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB5A7E362, + (q31_t)0x97CDA855, (q31_t)0xB64BEACC, (q31_t)0x9759617E, + (q31_t)0xB6F0A811, (q31_t)0x96E61CDF, (q31_t)0xB796199B, + (q31_t)0x9673DB94, (q31_t)0xB83C3DD1, (q31_t)0x96029EB5, + (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xB98A97D8, + (q31_t)0x9523369B, (q31_t)0xBA32CA70, (q31_t)0x94B50D87, + (q31_t)0xBADBA943, (q31_t)0x9447ED2F, (q31_t)0xBB8532AF, + (q31_t)0x93DBD69F, (q31_t)0xBC2F6513, (q31_t)0x9370CAE4, + (q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBD85BE2F, + (q31_t)0x929DD805, (q31_t)0xBE31E19B, (q31_t)0x9235F2EB, + (q31_t)0xBEDEA765, (q31_t)0x91CF1CB6, (q31_t)0xBF8C0DE2, + (q31_t)0x91695663, (q31_t)0xC03A1368, (q31_t)0x9104A0ED, + (q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC197F4D3, + (q31_t)0x903E6C7A, (q31_t)0xC247CD5A, (q31_t)0x8FDCEF66, + (q31_t)0xC2F83E2A, (q31_t)0x8F7C8701, (q31_t)0xC3A9458F, + (q31_t)0x8F1D343A, (q31_t)0xC45AE1D7, (q31_t)0x8EBEF7FB, + (q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC5BFD22E, + (q31_t)0x8E05C6B7, (q31_t)0xC67322CD, (q31_t)0x8DAAD37B, + (q31_t)0xC727016C, (q31_t)0x8D50FA59, (q31_t)0xC7DB6C50, + (q31_t)0x8CF83C30, (q31_t)0xC89061BA, (q31_t)0x8CA099D9, + (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xC9FBE527, + (q31_t)0x8BF4AC05, (q31_t)0xCAB26FA9, (q31_t)0x8BA0622F, + (q31_t)0xCB697DB0, (q31_t)0x8B4D377C, (q31_t)0xCC210D78, + (q31_t)0x8AFB2CBA, (q31_t)0xCCD91D3D, (q31_t)0x8AAA42B4, + (q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCE4AB5A2, + (q31_t)0x8A0BD3F5, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3, + (q31_t)0xCFBE389F, (q31_t)0x8971F15A, (q31_t)0xD078AD9D, + (q31_t)0x8926B677, (q31_t)0xD13397E1, (q31_t)0x88DCA0D3, + (q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD2AAC504, + (q31_t)0x884BE820, (q31_t)0xD3670445, (q31_t)0x88054677, + (q31_t)0xD423B190, (q31_t)0x87BFCCD7, (q31_t)0xD4E0CB14, + (q31_t)0x877B7BEC, (q31_t)0xD59E4EFE, (q31_t)0x8738545E, + (q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD71A8EB5, + (q31_t)0x86B583EE, (q31_t)0xD7D946D7, (q31_t)0x8675DC4E, + (q31_t)0xD898620C, (q31_t)0x86376092, (q31_t)0xD957DE7A, + (q31_t)0x85FA1152, (q31_t)0xDA17BA4A, (q31_t)0x85BDEF27, + (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDB9888A8, + (q31_t)0x8549345C, (q31_t)0xDC597781, (q31_t)0x85109CDC, + (q31_t)0xDD1ABE51, (q31_t)0x84D934B0, (q31_t)0xDDDC5B3A, + (q31_t)0x84A2FC62, (q31_t)0xDE9E4C60, (q31_t)0x846DF476, + (q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xE02323E5, + (q31_t)0x840777CF, (q31_t)0xE0E60684, (q31_t)0x83D60411, + (q31_t)0xE1A935E1, (q31_t)0x83A5C2B0, (q31_t)0xE26CB01A, + (q31_t)0x8376B422, (q31_t)0xE330734C, (q31_t)0x8348D8DB, + (q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE4B8CD10, + (q31_t)0x82F0BDE8, (q31_t)0xE57D5FDA, (q31_t)0x82C67F13, + (q31_t)0xE642340D, (q31_t)0x829D753A, (q31_t)0xE70747C3, + (q31_t)0x8275A0C0, (q31_t)0xE7CC9917, (q31_t)0x824F0208, + (q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xE957ECFB, + (q31_t)0x82056758, (q31_t)0xEA1DEBBB, (q31_t)0x81E26C16, + (q31_t)0xEAE4207A, (q31_t)0x81C0A801, (q31_t)0xEBAA894E, + (q31_t)0x81A01B6C, (q31_t)0xEC71244F, (q31_t)0x8180C6A9, + (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xEDFEE92B, + (q31_t)0x8145C5C6, (q31_t)0xEEC60F31, (q31_t)0x812A1A39, + (q31_t)0xEF8D5FB8, (q31_t)0x810FA7A0, (q31_t)0xF054D8D4, + (q31_t)0x80F66E3C, (q31_t)0xF11C789A, (q31_t)0x80DE6E4C, + (q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF2AC246D, + (q31_t)0x80B21BAF, (q31_t)0xF3742CA1, (q31_t)0x809DC970, + (q31_t)0xF43C53CA, (q31_t)0x808AB180, (q31_t)0xF50497FA, + (q31_t)0x8078D40D, (q31_t)0xF5CCF743, (q31_t)0x80683143, + (q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF75DFF65, + (q31_t)0x804A9C4D, (q31_t)0xF826A461, (q31_t)0x803DAA69, + (q31_t)0xF8EF5CBB, (q31_t)0x8031F3C1, (q31_t)0xF9B82683, + (q31_t)0x80277872, (q31_t)0xFA80FFCB, (q31_t)0x801E3894, + (q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFC12D919, + (q31_t)0x800F6B88, (q31_t)0xFCDBD541, (q31_t)0x8009DE7D, + (q31_t)0xFDA4D928, (q31_t)0x80058D2E, (q31_t)0xFE6DE2E0, + (q31_t)0x800277A5, (q31_t)0xFF36F078, (q31_t)0x80009DE9 +}; + +/** +* \par +* Example code for Q31 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 2048 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q31(Fixed point 1.31): +* round(twiddleCoefQ31(i) * pow(2, 31)) +* +*/ +const q31_t twiddleCoef_2048_q31[3072] = { + (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFFD885, + (q31_t)0x006487E3, (q31_t)0x7FFF6216, (q31_t)0x00C90F88, + (q31_t)0x7FFE9CB2, (q31_t)0x012D96B0, (q31_t)0x7FFD885A, + (q31_t)0x01921D1F, (q31_t)0x7FFC250F, (q31_t)0x01F6A296, + (q31_t)0x7FFA72D1, (q31_t)0x025B26D7, (q31_t)0x7FF871A1, + (q31_t)0x02BFA9A4, (q31_t)0x7FF62182, (q31_t)0x03242ABF, + (q31_t)0x7FF38273, (q31_t)0x0388A9E9, (q31_t)0x7FF09477, + (q31_t)0x03ED26E6, (q31_t)0x7FED5790, (q31_t)0x0451A176, + (q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FE5F108, + (q31_t)0x051A8E5C, (q31_t)0x7FE1C76B, (q31_t)0x057F0034, + (q31_t)0x7FDD4EEC, (q31_t)0x05E36EA9, (q31_t)0x7FD8878D, + (q31_t)0x0647D97C, (q31_t)0x7FD37152, (q31_t)0x06AC406F, + (q31_t)0x7FCE0C3E, (q31_t)0x0710A344, (q31_t)0x7FC85853, + (q31_t)0x077501BE, (q31_t)0x7FC25596, (q31_t)0x07D95B9E, + (q31_t)0x7FBC040A, (q31_t)0x083DB0A7, (q31_t)0x7FB563B2, + (q31_t)0x08A2009A, (q31_t)0x7FAE7494, (q31_t)0x09064B3A, + (q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7F9FAA15, + (q31_t)0x09CECF89, (q31_t)0x7F97CEBC, (q31_t)0x0A3308BC, + (q31_t)0x7F8FA4AF, (q31_t)0x0A973BA5, (q31_t)0x7F872BF3, + (q31_t)0x0AFB6805, (q31_t)0x7F7E648B, (q31_t)0x0B5F8D9F, + (q31_t)0x7F754E7F, (q31_t)0x0BC3AC35, (q31_t)0x7F6BE9D4, + (q31_t)0x0C27C389, (q31_t)0x7F62368F, (q31_t)0x0C8BD35E, + (q31_t)0x7F5834B6, (q31_t)0x0CEFDB75, (q31_t)0x7F4DE450, + (q31_t)0x0D53DB92, (q31_t)0x7F434563, (q31_t)0x0DB7D376, + (q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F2D1C0E, + (q31_t)0x0E7FA99D, (q31_t)0x7F2191B4, (q31_t)0x0EE38765, + (q31_t)0x7F15B8EE, (q31_t)0x0F475BFE, (q31_t)0x7F0991C3, + (q31_t)0x0FAB272B, (q31_t)0x7EFD1C3C, (q31_t)0x100EE8AD, + (q31_t)0x7EF0585F, (q31_t)0x1072A047, (q31_t)0x7EE34635, + (q31_t)0x10D64DBC, (q31_t)0x7ED5E5C6, (q31_t)0x1139F0CE, + (q31_t)0x7EC8371A, (q31_t)0x119D8940, (q31_t)0x7EBA3A39, + (q31_t)0x120116D4, (q31_t)0x7EABEF2C, (q31_t)0x1264994E, + (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E8E6EB1, + (q31_t)0x132B7BF9, (q31_t)0x7E7F3956, (q31_t)0x138EDBB0, + (q31_t)0x7E6FB5F3, (q31_t)0x13F22F57, (q31_t)0x7E5FE493, + (q31_t)0x145576B1, (q31_t)0x7E4FC53E, (q31_t)0x14B8B17F, + (q31_t)0x7E3F57FE, (q31_t)0x151BDF85, (q31_t)0x7E2E9CDF, + (q31_t)0x157F0086, (q31_t)0x7E1D93E9, (q31_t)0x15E21444, + (q31_t)0x7E0C3D29, (q31_t)0x16451A83, (q31_t)0x7DFA98A7, + (q31_t)0x16A81305, (q31_t)0x7DE8A670, (q31_t)0x170AFD8D, + (q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7DC3D90D, + (q31_t)0x17D0A7BB, (q31_t)0x7DB0FDF7, (q31_t)0x183366E8, + (q31_t)0x7D9DD55A, (q31_t)0x18961727, (q31_t)0x7D8A5F3F, + (q31_t)0x18F8B83C, (q31_t)0x7D769BB5, (q31_t)0x195B49E9, + (q31_t)0x7D628AC5, (q31_t)0x19BDCBF2, (q31_t)0x7D4E2C7E, + (q31_t)0x1A203E1B, (q31_t)0x7D3980EC, (q31_t)0x1A82A025, + (q31_t)0x7D24881A, (q31_t)0x1AE4F1D6, (q31_t)0x7D0F4218, + (q31_t)0x1B4732EF, (q31_t)0x7CF9AEF0, (q31_t)0x1BA96334, + (q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7CCDA168, + (q31_t)0x1C6D9053, (q31_t)0x7CB72724, (q31_t)0x1CCF8CB3, + (q31_t)0x7CA05FF1, (q31_t)0x1D31774D, (q31_t)0x7C894BDD, + (q31_t)0x1D934FE5, (q31_t)0x7C71EAF8, (q31_t)0x1DF5163F, + (q31_t)0x7C5A3D4F, (q31_t)0x1E56CA1E, (q31_t)0x7C4242F2, + (q31_t)0x1EB86B46, (q31_t)0x7C29FBEE, (q31_t)0x1F19F97B, + (q31_t)0x7C116853, (q31_t)0x1F7B7480, (q31_t)0x7BF88830, + (q31_t)0x1FDCDC1A, (q31_t)0x7BDF5B94, (q31_t)0x203E300D, + (q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7BAC1D31, + (q31_t)0x21009C0B, (q31_t)0x7B920B89, (q31_t)0x2161B39F, + (q31_t)0x7B77ADA8, (q31_t)0x21C2B69C, (q31_t)0x7B5D039D, + (q31_t)0x2223A4C5, (q31_t)0x7B420D7A, (q31_t)0x22847DDF, + (q31_t)0x7B26CB4F, (q31_t)0x22E541AE, (q31_t)0x7B0B3D2C, + (q31_t)0x2345EFF7, (q31_t)0x7AEF6323, (q31_t)0x23A6887E, + (q31_t)0x7AD33D45, (q31_t)0x24070B07, (q31_t)0x7AB6CBA3, + (q31_t)0x24677757, (q31_t)0x7A9A0E4F, (q31_t)0x24C7CD32, + (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A5FB0D8, + (q31_t)0x2588349D, (q31_t)0x7A4210D8, (q31_t)0x25E845B5, + (q31_t)0x7A24256E, (q31_t)0x26483F6C, (q31_t)0x7A05EEAD, + (q31_t)0x26A82185, (q31_t)0x79E76CA6, (q31_t)0x2707EBC6, + (q31_t)0x79C89F6D, (q31_t)0x27679DF4, (q31_t)0x79A98715, + (q31_t)0x27C737D2, (q31_t)0x798A23B1, (q31_t)0x2826B928, + (q31_t)0x796A7554, (q31_t)0x288621B9, (q31_t)0x794A7C11, + (q31_t)0x28E5714A, (q31_t)0x792A37FE, (q31_t)0x2944A7A2, + (q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78E8CFB1, + (q31_t)0x2A02C7B8, (q31_t)0x78C7ABA1, (q31_t)0x2A61B101, + (q31_t)0x78A63D10, (q31_t)0x2AC08025, (q31_t)0x78848413, + (q31_t)0x2B1F34EB, (q31_t)0x786280BF, (q31_t)0x2B7DCF17, + (q31_t)0x78403328, (q31_t)0x2BDC4E6F, (q31_t)0x781D9B64, + (q31_t)0x2C3AB2B9, (q31_t)0x77FAB988, (q31_t)0x2C98FBBA, + (q31_t)0x77D78DAA, (q31_t)0x2CF72939, (q31_t)0x77B417DF, + (q31_t)0x2D553AFB, (q31_t)0x7790583D, (q31_t)0x2DB330C7, + (q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x7747FBCE, + (q31_t)0x2E6EC792, (q31_t)0x77235F2D, (q31_t)0x2ECC681E, + (q31_t)0x76FE790E, (q31_t)0x2F29EBCC, (q31_t)0x76D94988, + (q31_t)0x2F875262, (q31_t)0x76B3D0B3, (q31_t)0x2FE49BA6, + (q31_t)0x768E0EA5, (q31_t)0x3041C760, (q31_t)0x76680376, + (q31_t)0x309ED555, (q31_t)0x7641AF3C, (q31_t)0x30FBC54D, + (q31_t)0x761B1211, (q31_t)0x3158970D, (q31_t)0x75F42C0A, + (q31_t)0x31B54A5D, (q31_t)0x75CCFD42, (q31_t)0x3211DF03, + (q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x757DC5CA, + (q31_t)0x32CAAB6F, (q31_t)0x7555BD4B, (q31_t)0x3326E2C2, + (q31_t)0x752D6C6C, (q31_t)0x3382FA88, (q31_t)0x7504D345, + (q31_t)0x33DEF287, (q31_t)0x74DBF1EF, (q31_t)0x343ACA87, + (q31_t)0x74B2C883, (q31_t)0x3496824F, (q31_t)0x7489571B, + (q31_t)0x34F219A7, (q31_t)0x745F9DD1, (q31_t)0x354D9056, + (q31_t)0x74359CBD, (q31_t)0x35A8E624, (q31_t)0x740B53FA, + (q31_t)0x36041AD9, (q31_t)0x73E0C3A3, (q31_t)0x365F2E3B, + (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x738ACC9E, + (q31_t)0x3714F02A, (q31_t)0x735F6626, (q31_t)0x376F9E46, + (q31_t)0x7333B883, (q31_t)0x37CA2A30, (q31_t)0x7307C3D0, + (q31_t)0x382493B0, (q31_t)0x72DB8828, (q31_t)0x387EDA8E, + (q31_t)0x72AF05A6, (q31_t)0x38D8FE93, (q31_t)0x72823C66, + (q31_t)0x3932FF87, (q31_t)0x72552C84, (q31_t)0x398CDD32, + (q31_t)0x7227D61C, (q31_t)0x39E6975D, (q31_t)0x71FA3948, + (q31_t)0x3A402DD1, (q31_t)0x71CC5626, (q31_t)0x3A99A057, + (q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x716FBD68, + (q31_t)0x3B4C18BA, (q31_t)0x71410804, (q31_t)0x3BA51E29, + (q31_t)0x71120CC5, (q31_t)0x3BFDFECD, (q31_t)0x70E2CBC6, + (q31_t)0x3C56BA70, (q31_t)0x70B34524, (q31_t)0x3CAF50DA, + (q31_t)0x708378FE, (q31_t)0x3D07C1D5, (q31_t)0x70536771, + (q31_t)0x3D600D2B, (q31_t)0x70231099, (q31_t)0x3DB832A5, + (q31_t)0x6FF27496, (q31_t)0x3E10320D, (q31_t)0x6FC19385, + (q31_t)0x3E680B2C, (q31_t)0x6F906D84, (q31_t)0x3EBFBDCC, + (q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6F2D532C, + (q31_t)0x3F6EAEB8, (q31_t)0x6EFB5F12, (q31_t)0x3FC5EC97, + (q31_t)0x6EC92682, (q31_t)0x401D0320, (q31_t)0x6E96A99C, + (q31_t)0x4073F21D, (q31_t)0x6E63E87F, (q31_t)0x40CAB957, + (q31_t)0x6E30E349, (q31_t)0x4121589A, (q31_t)0x6DFD9A1B, + (q31_t)0x4177CFB0, (q31_t)0x6DCA0D14, (q31_t)0x41CE1E64, + (q31_t)0x6D963C54, (q31_t)0x42244480, (q31_t)0x6D6227FA, + (q31_t)0x427A41D0, (q31_t)0x6D2DD027, (q31_t)0x42D0161E, + (q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6CC45697, + (q31_t)0x437B42E1, (q31_t)0x6C8F351C, (q31_t)0x43D09AEC, + (q31_t)0x6C59D0A9, (q31_t)0x4425C923, (q31_t)0x6C242960, + (q31_t)0x447ACD50, (q31_t)0x6BEE3F62, (q31_t)0x44CFA73F, + (q31_t)0x6BB812D0, (q31_t)0x452456BC, (q31_t)0x6B81A3CD, + (q31_t)0x4578DB93, (q31_t)0x6B4AF278, (q31_t)0x45CD358F, + (q31_t)0x6B13FEF5, (q31_t)0x4621647C, (q31_t)0x6ADCC964, + (q31_t)0x46756827, (q31_t)0x6AA551E8, (q31_t)0x46C9405C, + (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x6A359DB9, + (q31_t)0x47706D93, (q31_t)0x69FD614A, (q31_t)0x47C3C22E, + (q31_t)0x69C4E37A, (q31_t)0x4816EA85, (q31_t)0x698C246C, + (q31_t)0x4869E664, (q31_t)0x69532442, (q31_t)0x48BCB598, + (q31_t)0x6919E320, (q31_t)0x490F57EE, (q31_t)0x68E06129, + (q31_t)0x4961CD32, (q31_t)0x68A69E81, (q31_t)0x49B41533, + (q31_t)0x686C9B4B, (q31_t)0x4A062FBD, (q31_t)0x683257AA, + (q31_t)0x4A581C9D, (q31_t)0x67F7D3C4, (q31_t)0x4AA9DBA1, + (q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x67820BB6, + (q31_t)0x4B4CCF4D, (q31_t)0x6746C7D7, (q31_t)0x4B9E038F, + (q31_t)0x670B4443, (q31_t)0x4BEF092D, (q31_t)0x66CF811F, + (q31_t)0x4C3FDFF3, (q31_t)0x66937E90, (q31_t)0x4C9087B1, + (q31_t)0x66573CBB, (q31_t)0x4CE10034, (q31_t)0x661ABBC5, + (q31_t)0x4D31494B, (q31_t)0x65DDFBD3, (q31_t)0x4D8162C4, + (q31_t)0x65A0FD0B, (q31_t)0x4DD14C6E, (q31_t)0x6563BF92, + (q31_t)0x4E210617, (q31_t)0x6526438E, (q31_t)0x4E708F8F, + (q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x64AA907F, + (q31_t)0x4F0F1126, (q31_t)0x646C59BF, (q31_t)0x4F5E08E3, + (q31_t)0x642DE50D, (q31_t)0x4FACCFAB, (q31_t)0x63EF328F, + (q31_t)0x4FFB654D, (q31_t)0x63B0426D, (q31_t)0x5049C999, + (q31_t)0x637114CC, (q31_t)0x5097FC5E, (q31_t)0x6331A9D4, + (q31_t)0x50E5FD6C, (q31_t)0x62F201AC, (q31_t)0x5133CC94, + (q31_t)0x62B21C7B, (q31_t)0x518169A4, (q31_t)0x6271FA69, + (q31_t)0x51CED46E, (q31_t)0x62319B9D, (q31_t)0x521C0CC1, + (q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x61B02876, + (q31_t)0x52B5E545, (q31_t)0x616F146B, (q31_t)0x53028517, + (q31_t)0x612DC446, (q31_t)0x534EF1B5, (q31_t)0x60EC3830, + (q31_t)0x539B2AEF, (q31_t)0x60AA704F, (q31_t)0x53E73097, + (q31_t)0x60686CCE, (q31_t)0x5433027D, (q31_t)0x60262DD5, + (q31_t)0x547EA073, (q31_t)0x5FE3B38D, (q31_t)0x54CA0A4A, + (q31_t)0x5FA0FE1E, (q31_t)0x55153FD4, (q31_t)0x5F5E0DB3, + (q31_t)0x556040E2, (q31_t)0x5F1AE273, (q31_t)0x55AB0D46, + (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5E93DC1F, + (q31_t)0x56400757, (q31_t)0x5E50015D, (q31_t)0x568A34A9, + (q31_t)0x5E0BEC6E, (q31_t)0x56D42C99, (q31_t)0x5DC79D7C, + (q31_t)0x571DEEF9, (q31_t)0x5D8314B0, (q31_t)0x57677B9D, + (q31_t)0x5D3E5236, (q31_t)0x57B0D256, (q31_t)0x5CF95638, + (q31_t)0x57F9F2F7, (q31_t)0x5CB420DF, (q31_t)0x5842DD54, + (q31_t)0x5C6EB258, (q31_t)0x588B913F, (q31_t)0x5C290ACC, + (q31_t)0x58D40E8C, (q31_t)0x5BE32A67, (q31_t)0x591C550E, + (q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5B56BFBD, + (q31_t)0x59AC3CFD, (q31_t)0x5B1035CF, (q31_t)0x59F3DE12, + (q31_t)0x5AC973B4, (q31_t)0x5A3B47AA, (q31_t)0x5A82799A, + (q31_t)0x5A82799A, (q31_t)0x5A3B47AA, (q31_t)0x5AC973B4, + (q31_t)0x59F3DE12, (q31_t)0x5B1035CF, (q31_t)0x59AC3CFD, + (q31_t)0x5B56BFBD, (q31_t)0x59646497, (q31_t)0x5B9D1153, + (q31_t)0x591C550E, (q31_t)0x5BE32A67, (q31_t)0x58D40E8C, + (q31_t)0x5C290ACC, (q31_t)0x588B913F, (q31_t)0x5C6EB258, + (q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x57F9F2F7, + (q31_t)0x5CF95638, (q31_t)0x57B0D256, (q31_t)0x5D3E5236, + (q31_t)0x57677B9D, (q31_t)0x5D8314B0, (q31_t)0x571DEEF9, + (q31_t)0x5DC79D7C, (q31_t)0x56D42C99, (q31_t)0x5E0BEC6E, + (q31_t)0x568A34A9, (q31_t)0x5E50015D, (q31_t)0x56400757, + (q31_t)0x5E93DC1F, (q31_t)0x55F5A4D2, (q31_t)0x5ED77C89, + (q31_t)0x55AB0D46, (q31_t)0x5F1AE273, (q31_t)0x556040E2, + (q31_t)0x5F5E0DB3, (q31_t)0x55153FD4, (q31_t)0x5FA0FE1E, + (q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x547EA073, + (q31_t)0x60262DD5, (q31_t)0x5433027D, (q31_t)0x60686CCE, + (q31_t)0x53E73097, (q31_t)0x60AA704F, (q31_t)0x539B2AEF, + (q31_t)0x60EC3830, (q31_t)0x534EF1B5, (q31_t)0x612DC446, + (q31_t)0x53028517, (q31_t)0x616F146B, (q31_t)0x52B5E545, + (q31_t)0x61B02876, (q31_t)0x5269126E, (q31_t)0x61F1003E, + (q31_t)0x521C0CC1, (q31_t)0x62319B9D, (q31_t)0x51CED46E, + (q31_t)0x6271FA69, (q31_t)0x518169A4, (q31_t)0x62B21C7B, + (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x50E5FD6C, + (q31_t)0x6331A9D4, (q31_t)0x5097FC5E, (q31_t)0x637114CC, + (q31_t)0x5049C999, (q31_t)0x63B0426D, (q31_t)0x4FFB654D, + (q31_t)0x63EF328F, (q31_t)0x4FACCFAB, (q31_t)0x642DE50D, + (q31_t)0x4F5E08E3, (q31_t)0x646C59BF, (q31_t)0x4F0F1126, + (q31_t)0x64AA907F, (q31_t)0x4EBFE8A4, (q31_t)0x64E88926, + (q31_t)0x4E708F8F, (q31_t)0x6526438E, (q31_t)0x4E210617, + (q31_t)0x6563BF92, (q31_t)0x4DD14C6E, (q31_t)0x65A0FD0B, + (q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4D31494B, + (q31_t)0x661ABBC5, (q31_t)0x4CE10034, (q31_t)0x66573CBB, + (q31_t)0x4C9087B1, (q31_t)0x66937E90, (q31_t)0x4C3FDFF3, + (q31_t)0x66CF811F, (q31_t)0x4BEF092D, (q31_t)0x670B4443, + (q31_t)0x4B9E038F, (q31_t)0x6746C7D7, (q31_t)0x4B4CCF4D, + (q31_t)0x67820BB6, (q31_t)0x4AFB6C97, (q31_t)0x67BD0FBC, + (q31_t)0x4AA9DBA1, (q31_t)0x67F7D3C4, (q31_t)0x4A581C9D, + (q31_t)0x683257AA, (q31_t)0x4A062FBD, (q31_t)0x686C9B4B, + (q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x4961CD32, + (q31_t)0x68E06129, (q31_t)0x490F57EE, (q31_t)0x6919E320, + (q31_t)0x48BCB598, (q31_t)0x69532442, (q31_t)0x4869E664, + (q31_t)0x698C246C, (q31_t)0x4816EA85, (q31_t)0x69C4E37A, + (q31_t)0x47C3C22E, (q31_t)0x69FD614A, (q31_t)0x47706D93, + (q31_t)0x6A359DB9, (q31_t)0x471CECE6, (q31_t)0x6A6D98A4, + (q31_t)0x46C9405C, (q31_t)0x6AA551E8, (q31_t)0x46756827, + (q31_t)0x6ADCC964, (q31_t)0x4621647C, (q31_t)0x6B13FEF5, + (q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x4578DB93, + (q31_t)0x6B81A3CD, (q31_t)0x452456BC, (q31_t)0x6BB812D0, + (q31_t)0x44CFA73F, (q31_t)0x6BEE3F62, (q31_t)0x447ACD50, + (q31_t)0x6C242960, (q31_t)0x4425C923, (q31_t)0x6C59D0A9, + (q31_t)0x43D09AEC, (q31_t)0x6C8F351C, (q31_t)0x437B42E1, + (q31_t)0x6CC45697, (q31_t)0x4325C135, (q31_t)0x6CF934FB, + (q31_t)0x42D0161E, (q31_t)0x6D2DD027, (q31_t)0x427A41D0, + (q31_t)0x6D6227FA, (q31_t)0x42244480, (q31_t)0x6D963C54, + (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x4177CFB0, + (q31_t)0x6DFD9A1B, (q31_t)0x4121589A, (q31_t)0x6E30E349, + (q31_t)0x40CAB957, (q31_t)0x6E63E87F, (q31_t)0x4073F21D, + (q31_t)0x6E96A99C, (q31_t)0x401D0320, (q31_t)0x6EC92682, + (q31_t)0x3FC5EC97, (q31_t)0x6EFB5F12, (q31_t)0x3F6EAEB8, + (q31_t)0x6F2D532C, (q31_t)0x3F1749B7, (q31_t)0x6F5F02B1, + (q31_t)0x3EBFBDCC, (q31_t)0x6F906D84, (q31_t)0x3E680B2C, + (q31_t)0x6FC19385, (q31_t)0x3E10320D, (q31_t)0x6FF27496, + (q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3D600D2B, + (q31_t)0x70536771, (q31_t)0x3D07C1D5, (q31_t)0x708378FE, + (q31_t)0x3CAF50DA, (q31_t)0x70B34524, (q31_t)0x3C56BA70, + (q31_t)0x70E2CBC6, (q31_t)0x3BFDFECD, (q31_t)0x71120CC5, + (q31_t)0x3BA51E29, (q31_t)0x71410804, (q31_t)0x3B4C18BA, + (q31_t)0x716FBD68, (q31_t)0x3AF2EEB7, (q31_t)0x719E2CD2, + (q31_t)0x3A99A057, (q31_t)0x71CC5626, (q31_t)0x3A402DD1, + (q31_t)0x71FA3948, (q31_t)0x39E6975D, (q31_t)0x7227D61C, + (q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x3932FF87, + (q31_t)0x72823C66, (q31_t)0x38D8FE93, (q31_t)0x72AF05A6, + (q31_t)0x387EDA8E, (q31_t)0x72DB8828, (q31_t)0x382493B0, + (q31_t)0x7307C3D0, (q31_t)0x37CA2A30, (q31_t)0x7333B883, + (q31_t)0x376F9E46, (q31_t)0x735F6626, (q31_t)0x3714F02A, + (q31_t)0x738ACC9E, (q31_t)0x36BA2013, (q31_t)0x73B5EBD0, + (q31_t)0x365F2E3B, (q31_t)0x73E0C3A3, (q31_t)0x36041AD9, + (q31_t)0x740B53FA, (q31_t)0x35A8E624, (q31_t)0x74359CBD, + (q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x34F219A7, + (q31_t)0x7489571B, (q31_t)0x3496824F, (q31_t)0x74B2C883, + (q31_t)0x343ACA87, (q31_t)0x74DBF1EF, (q31_t)0x33DEF287, + (q31_t)0x7504D345, (q31_t)0x3382FA88, (q31_t)0x752D6C6C, + (q31_t)0x3326E2C2, (q31_t)0x7555BD4B, (q31_t)0x32CAAB6F, + (q31_t)0x757DC5CA, (q31_t)0x326E54C7, (q31_t)0x75A585CF, + (q31_t)0x3211DF03, (q31_t)0x75CCFD42, (q31_t)0x31B54A5D, + (q31_t)0x75F42C0A, (q31_t)0x3158970D, (q31_t)0x761B1211, + (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x309ED555, + (q31_t)0x76680376, (q31_t)0x3041C760, (q31_t)0x768E0EA5, + (q31_t)0x2FE49BA6, (q31_t)0x76B3D0B3, (q31_t)0x2F875262, + (q31_t)0x76D94988, (q31_t)0x2F29EBCC, (q31_t)0x76FE790E, + (q31_t)0x2ECC681E, (q31_t)0x77235F2D, (q31_t)0x2E6EC792, + (q31_t)0x7747FBCE, (q31_t)0x2E110A62, (q31_t)0x776C4EDB, + (q31_t)0x2DB330C7, (q31_t)0x7790583D, (q31_t)0x2D553AFB, + (q31_t)0x77B417DF, (q31_t)0x2CF72939, (q31_t)0x77D78DAA, + (q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2C3AB2B9, + (q31_t)0x781D9B64, (q31_t)0x2BDC4E6F, (q31_t)0x78403328, + (q31_t)0x2B7DCF17, (q31_t)0x786280BF, (q31_t)0x2B1F34EB, + (q31_t)0x78848413, (q31_t)0x2AC08025, (q31_t)0x78A63D10, + (q31_t)0x2A61B101, (q31_t)0x78C7ABA1, (q31_t)0x2A02C7B8, + (q31_t)0x78E8CFB1, (q31_t)0x29A3C484, (q31_t)0x7909A92C, + (q31_t)0x2944A7A2, (q31_t)0x792A37FE, (q31_t)0x28E5714A, + (q31_t)0x794A7C11, (q31_t)0x288621B9, (q31_t)0x796A7554, + (q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x27C737D2, + (q31_t)0x79A98715, (q31_t)0x27679DF4, (q31_t)0x79C89F6D, + (q31_t)0x2707EBC6, (q31_t)0x79E76CA6, (q31_t)0x26A82185, + (q31_t)0x7A05EEAD, (q31_t)0x26483F6C, (q31_t)0x7A24256E, + (q31_t)0x25E845B5, (q31_t)0x7A4210D8, (q31_t)0x2588349D, + (q31_t)0x7A5FB0D8, (q31_t)0x25280C5D, (q31_t)0x7A7D055B, + (q31_t)0x24C7CD32, (q31_t)0x7A9A0E4F, (q31_t)0x24677757, + (q31_t)0x7AB6CBA3, (q31_t)0x24070B07, (q31_t)0x7AD33D45, + (q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x2345EFF7, + (q31_t)0x7B0B3D2C, (q31_t)0x22E541AE, (q31_t)0x7B26CB4F, + (q31_t)0x22847DDF, (q31_t)0x7B420D7A, (q31_t)0x2223A4C5, + (q31_t)0x7B5D039D, (q31_t)0x21C2B69C, (q31_t)0x7B77ADA8, + (q31_t)0x2161B39F, (q31_t)0x7B920B89, (q31_t)0x21009C0B, + (q31_t)0x7BAC1D31, (q31_t)0x209F701C, (q31_t)0x7BC5E28F, + (q31_t)0x203E300D, (q31_t)0x7BDF5B94, (q31_t)0x1FDCDC1A, + (q31_t)0x7BF88830, (q31_t)0x1F7B7480, (q31_t)0x7C116853, + (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1EB86B46, + (q31_t)0x7C4242F2, (q31_t)0x1E56CA1E, (q31_t)0x7C5A3D4F, + (q31_t)0x1DF5163F, (q31_t)0x7C71EAF8, (q31_t)0x1D934FE5, + (q31_t)0x7C894BDD, (q31_t)0x1D31774D, (q31_t)0x7CA05FF1, + (q31_t)0x1CCF8CB3, (q31_t)0x7CB72724, (q31_t)0x1C6D9053, + (q31_t)0x7CCDA168, (q31_t)0x1C0B826A, (q31_t)0x7CE3CEB1, + (q31_t)0x1BA96334, (q31_t)0x7CF9AEF0, (q31_t)0x1B4732EF, + (q31_t)0x7D0F4218, (q31_t)0x1AE4F1D6, (q31_t)0x7D24881A, + (q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x1A203E1B, + (q31_t)0x7D4E2C7E, (q31_t)0x19BDCBF2, (q31_t)0x7D628AC5, + (q31_t)0x195B49E9, (q31_t)0x7D769BB5, (q31_t)0x18F8B83C, + (q31_t)0x7D8A5F3F, (q31_t)0x18961727, (q31_t)0x7D9DD55A, + (q31_t)0x183366E8, (q31_t)0x7DB0FDF7, (q31_t)0x17D0A7BB, + (q31_t)0x7DC3D90D, (q31_t)0x176DD9DE, (q31_t)0x7DD6668E, + (q31_t)0x170AFD8D, (q31_t)0x7DE8A670, (q31_t)0x16A81305, + (q31_t)0x7DFA98A7, (q31_t)0x16451A83, (q31_t)0x7E0C3D29, + (q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x157F0086, + (q31_t)0x7E2E9CDF, (q31_t)0x151BDF85, (q31_t)0x7E3F57FE, + (q31_t)0x14B8B17F, (q31_t)0x7E4FC53E, (q31_t)0x145576B1, + (q31_t)0x7E5FE493, (q31_t)0x13F22F57, (q31_t)0x7E6FB5F3, + (q31_t)0x138EDBB0, (q31_t)0x7E7F3956, (q31_t)0x132B7BF9, + (q31_t)0x7E8E6EB1, (q31_t)0x12C8106E, (q31_t)0x7E9D55FC, + (q31_t)0x1264994E, (q31_t)0x7EABEF2C, (q31_t)0x120116D4, + (q31_t)0x7EBA3A39, (q31_t)0x119D8940, (q31_t)0x7EC8371A, + (q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x10D64DBC, + (q31_t)0x7EE34635, (q31_t)0x1072A047, (q31_t)0x7EF0585F, + (q31_t)0x100EE8AD, (q31_t)0x7EFD1C3C, (q31_t)0x0FAB272B, + (q31_t)0x7F0991C3, (q31_t)0x0F475BFE, (q31_t)0x7F15B8EE, + (q31_t)0x0EE38765, (q31_t)0x7F2191B4, (q31_t)0x0E7FA99D, + (q31_t)0x7F2D1C0E, (q31_t)0x0E1BC2E3, (q31_t)0x7F3857F5, + (q31_t)0x0DB7D376, (q31_t)0x7F434563, (q31_t)0x0D53DB92, + (q31_t)0x7F4DE450, (q31_t)0x0CEFDB75, (q31_t)0x7F5834B6, + (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0C27C389, + (q31_t)0x7F6BE9D4, (q31_t)0x0BC3AC35, (q31_t)0x7F754E7F, + (q31_t)0x0B5F8D9F, (q31_t)0x7F7E648B, (q31_t)0x0AFB6805, + (q31_t)0x7F872BF3, (q31_t)0x0A973BA5, (q31_t)0x7F8FA4AF, + (q31_t)0x0A3308BC, (q31_t)0x7F97CEBC, (q31_t)0x09CECF89, + (q31_t)0x7F9FAA15, (q31_t)0x096A9049, (q31_t)0x7FA736B4, + (q31_t)0x09064B3A, (q31_t)0x7FAE7494, (q31_t)0x08A2009A, + (q31_t)0x7FB563B2, (q31_t)0x083DB0A7, (q31_t)0x7FBC040A, + (q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x077501BE, + (q31_t)0x7FC85853, (q31_t)0x0710A344, (q31_t)0x7FCE0C3E, + (q31_t)0x06AC406F, (q31_t)0x7FD37152, (q31_t)0x0647D97C, + (q31_t)0x7FD8878D, (q31_t)0x05E36EA9, (q31_t)0x7FDD4EEC, + (q31_t)0x057F0034, (q31_t)0x7FE1C76B, (q31_t)0x051A8E5C, + (q31_t)0x7FE5F108, (q31_t)0x04B6195D, (q31_t)0x7FE9CBC0, + (q31_t)0x0451A176, (q31_t)0x7FED5790, (q31_t)0x03ED26E6, + (q31_t)0x7FF09477, (q31_t)0x0388A9E9, (q31_t)0x7FF38273, + (q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x02BFA9A4, + (q31_t)0x7FF871A1, (q31_t)0x025B26D7, (q31_t)0x7FFA72D1, + (q31_t)0x01F6A296, (q31_t)0x7FFC250F, (q31_t)0x01921D1F, + (q31_t)0x7FFD885A, (q31_t)0x012D96B0, (q31_t)0x7FFE9CB2, + (q31_t)0x00C90F88, (q31_t)0x7FFF6216, (q31_t)0x006487E3, + (q31_t)0x7FFFD885, (q31_t)0x00000000, (q31_t)0x7FFFFFFF, + (q31_t)0xFF9B781D, (q31_t)0x7FFFD885, (q31_t)0xFF36F078, + (q31_t)0x7FFF6216, (q31_t)0xFED2694F, (q31_t)0x7FFE9CB2, + (q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFE095D69, + (q31_t)0x7FFC250F, (q31_t)0xFDA4D928, (q31_t)0x7FFA72D1, + (q31_t)0xFD40565B, (q31_t)0x7FF871A1, (q31_t)0xFCDBD541, + (q31_t)0x7FF62182, (q31_t)0xFC775616, (q31_t)0x7FF38273, + (q31_t)0xFC12D919, (q31_t)0x7FF09477, (q31_t)0xFBAE5E89, + (q31_t)0x7FED5790, (q31_t)0xFB49E6A2, (q31_t)0x7FE9CBC0, + (q31_t)0xFAE571A4, (q31_t)0x7FE5F108, (q31_t)0xFA80FFCB, + (q31_t)0x7FE1C76B, (q31_t)0xFA1C9156, (q31_t)0x7FDD4EEC, + (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF953BF90, + (q31_t)0x7FD37152, (q31_t)0xF8EF5CBB, (q31_t)0x7FCE0C3E, + (q31_t)0xF88AFE41, (q31_t)0x7FC85853, (q31_t)0xF826A461, + (q31_t)0x7FC25596, (q31_t)0xF7C24F58, (q31_t)0x7FBC040A, + (q31_t)0xF75DFF65, (q31_t)0x7FB563B2, (q31_t)0xF6F9B4C5, + (q31_t)0x7FAE7494, (q31_t)0xF6956FB6, (q31_t)0x7FA736B4, + (q31_t)0xF6313076, (q31_t)0x7F9FAA15, (q31_t)0xF5CCF743, + (q31_t)0x7F97CEBC, (q31_t)0xF568C45A, (q31_t)0x7F8FA4AF, + (q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF4A07260, + (q31_t)0x7F7E648B, (q31_t)0xF43C53CA, (q31_t)0x7F754E7F, + (q31_t)0xF3D83C76, (q31_t)0x7F6BE9D4, (q31_t)0xF3742CA1, + (q31_t)0x7F62368F, (q31_t)0xF310248A, (q31_t)0x7F5834B6, + (q31_t)0xF2AC246D, (q31_t)0x7F4DE450, (q31_t)0xF2482C89, + (q31_t)0x7F434563, (q31_t)0xF1E43D1C, (q31_t)0x7F3857F5, + (q31_t)0xF1805662, (q31_t)0x7F2D1C0E, (q31_t)0xF11C789A, + (q31_t)0x7F2191B4, (q31_t)0xF0B8A401, (q31_t)0x7F15B8EE, + (q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xEFF11752, + (q31_t)0x7EFD1C3C, (q31_t)0xEF8D5FB8, (q31_t)0x7EF0585F, + (q31_t)0xEF29B243, (q31_t)0x7EE34635, (q31_t)0xEEC60F31, + (q31_t)0x7ED5E5C6, (q31_t)0xEE6276BF, (q31_t)0x7EC8371A, + (q31_t)0xEDFEE92B, (q31_t)0x7EBA3A39, (q31_t)0xED9B66B2, + (q31_t)0x7EABEF2C, (q31_t)0xED37EF91, (q31_t)0x7E9D55FC, + (q31_t)0xECD48406, (q31_t)0x7E8E6EB1, (q31_t)0xEC71244F, + (q31_t)0x7E7F3956, (q31_t)0xEC0DD0A8, (q31_t)0x7E6FB5F3, + (q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEB474E80, + (q31_t)0x7E4FC53E, (q31_t)0xEAE4207A, (q31_t)0x7E3F57FE, + (q31_t)0xEA80FF79, (q31_t)0x7E2E9CDF, (q31_t)0xEA1DEBBB, + (q31_t)0x7E1D93E9, (q31_t)0xE9BAE57C, (q31_t)0x7E0C3D29, + (q31_t)0xE957ECFB, (q31_t)0x7DFA98A7, (q31_t)0xE8F50273, + (q31_t)0x7DE8A670, (q31_t)0xE8922621, (q31_t)0x7DD6668E, + (q31_t)0xE82F5844, (q31_t)0x7DC3D90D, (q31_t)0xE7CC9917, + (q31_t)0x7DB0FDF7, (q31_t)0xE769E8D8, (q31_t)0x7D9DD55A, + (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE6A4B616, + (q31_t)0x7D769BB5, (q31_t)0xE642340D, (q31_t)0x7D628AC5, + (q31_t)0xE5DFC1E4, (q31_t)0x7D4E2C7E, (q31_t)0xE57D5FDA, + (q31_t)0x7D3980EC, (q31_t)0xE51B0E2A, (q31_t)0x7D24881A, + (q31_t)0xE4B8CD10, (q31_t)0x7D0F4218, (q31_t)0xE4569CCB, + (q31_t)0x7CF9AEF0, (q31_t)0xE3F47D95, (q31_t)0x7CE3CEB1, + (q31_t)0xE3926FAC, (q31_t)0x7CCDA168, (q31_t)0xE330734C, + (q31_t)0x7CB72724, (q31_t)0xE2CE88B2, (q31_t)0x7CA05FF1, + (q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE20AE9C1, + (q31_t)0x7C71EAF8, (q31_t)0xE1A935E1, (q31_t)0x7C5A3D4F, + (q31_t)0xE14794B9, (q31_t)0x7C4242F2, (q31_t)0xE0E60684, + (q31_t)0x7C29FBEE, (q31_t)0xE0848B7F, (q31_t)0x7C116853, + (q31_t)0xE02323E5, (q31_t)0x7BF88830, (q31_t)0xDFC1CFF2, + (q31_t)0x7BDF5B94, (q31_t)0xDF608FE3, (q31_t)0x7BC5E28F, + (q31_t)0xDEFF63F4, (q31_t)0x7BAC1D31, (q31_t)0xDE9E4C60, + (q31_t)0x7B920B89, (q31_t)0xDE3D4963, (q31_t)0x7B77ADA8, + (q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDD7B8220, + (q31_t)0x7B420D7A, (q31_t)0xDD1ABE51, (q31_t)0x7B26CB4F, + (q31_t)0xDCBA1008, (q31_t)0x7B0B3D2C, (q31_t)0xDC597781, + (q31_t)0x7AEF6323, (q31_t)0xDBF8F4F8, (q31_t)0x7AD33D45, + (q31_t)0xDB9888A8, (q31_t)0x7AB6CBA3, (q31_t)0xDB3832CD, + (q31_t)0x7A9A0E4F, (q31_t)0xDAD7F3A2, (q31_t)0x7A7D055B, + (q31_t)0xDA77CB62, (q31_t)0x7A5FB0D8, (q31_t)0xDA17BA4A, + (q31_t)0x7A4210D8, (q31_t)0xD9B7C093, (q31_t)0x7A24256E, + (q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD8F81439, + (q31_t)0x79E76CA6, (q31_t)0xD898620C, (q31_t)0x79C89F6D, + (q31_t)0xD838C82D, (q31_t)0x79A98715, (q31_t)0xD7D946D7, + (q31_t)0x798A23B1, (q31_t)0xD779DE46, (q31_t)0x796A7554, + (q31_t)0xD71A8EB5, (q31_t)0x794A7C11, (q31_t)0xD6BB585D, + (q31_t)0x792A37FE, (q31_t)0xD65C3B7B, (q31_t)0x7909A92C, + (q31_t)0xD5FD3847, (q31_t)0x78E8CFB1, (q31_t)0xD59E4EFE, + (q31_t)0x78C7ABA1, (q31_t)0xD53F7FDA, (q31_t)0x78A63D10, + (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD48230E8, + (q31_t)0x786280BF, (q31_t)0xD423B190, (q31_t)0x78403328, + (q31_t)0xD3C54D46, (q31_t)0x781D9B64, (q31_t)0xD3670445, + (q31_t)0x77FAB988, (q31_t)0xD308D6C6, (q31_t)0x77D78DAA, + (q31_t)0xD2AAC504, (q31_t)0x77B417DF, (q31_t)0xD24CCF38, + (q31_t)0x7790583D, (q31_t)0xD1EEF59E, (q31_t)0x776C4EDB, + (q31_t)0xD191386D, (q31_t)0x7747FBCE, (q31_t)0xD13397E1, + (q31_t)0x77235F2D, (q31_t)0xD0D61433, (q31_t)0x76FE790E, + (q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xD01B6459, + (q31_t)0x76B3D0B3, (q31_t)0xCFBE389F, (q31_t)0x768E0EA5, + (q31_t)0xCF612AAA, (q31_t)0x76680376, (q31_t)0xCF043AB2, + (q31_t)0x7641AF3C, (q31_t)0xCEA768F2, (q31_t)0x761B1211, + (q31_t)0xCE4AB5A2, (q31_t)0x75F42C0A, (q31_t)0xCDEE20FC, + (q31_t)0x75CCFD42, (q31_t)0xCD91AB38, (q31_t)0x75A585CF, + (q31_t)0xCD355490, (q31_t)0x757DC5CA, (q31_t)0xCCD91D3D, + (q31_t)0x7555BD4B, (q31_t)0xCC7D0577, (q31_t)0x752D6C6C, + (q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCBC53578, + (q31_t)0x74DBF1EF, (q31_t)0xCB697DB0, (q31_t)0x74B2C883, + (q31_t)0xCB0DE658, (q31_t)0x7489571B, (q31_t)0xCAB26FA9, + (q31_t)0x745F9DD1, (q31_t)0xCA5719DB, (q31_t)0x74359CBD, + (q31_t)0xC9FBE527, (q31_t)0x740B53FA, (q31_t)0xC9A0D1C4, + (q31_t)0x73E0C3A3, (q31_t)0xC945DFEC, (q31_t)0x73B5EBD0, + (q31_t)0xC8EB0FD6, (q31_t)0x738ACC9E, (q31_t)0xC89061BA, + (q31_t)0x735F6626, (q31_t)0xC835D5D0, (q31_t)0x7333B883, + (q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC7812571, + (q31_t)0x72DB8828, (q31_t)0xC727016C, (q31_t)0x72AF05A6, + (q31_t)0xC6CD0079, (q31_t)0x72823C66, (q31_t)0xC67322CD, + (q31_t)0x72552C84, (q31_t)0xC61968A2, (q31_t)0x7227D61C, + (q31_t)0xC5BFD22E, (q31_t)0x71FA3948, (q31_t)0xC5665FA8, + (q31_t)0x71CC5626, (q31_t)0xC50D1148, (q31_t)0x719E2CD2, + (q31_t)0xC4B3E746, (q31_t)0x716FBD68, (q31_t)0xC45AE1D7, + (q31_t)0x71410804, (q31_t)0xC4020132, (q31_t)0x71120CC5, + (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC350AF25, + (q31_t)0x70B34524, (q31_t)0xC2F83E2A, (q31_t)0x708378FE, + (q31_t)0xC29FF2D4, (q31_t)0x70536771, (q31_t)0xC247CD5A, + (q31_t)0x70231099, (q31_t)0xC1EFCDF2, (q31_t)0x6FF27496, + (q31_t)0xC197F4D3, (q31_t)0x6FC19385, (q31_t)0xC1404233, + (q31_t)0x6F906D84, (q31_t)0xC0E8B648, (q31_t)0x6F5F02B1, + (q31_t)0xC0915147, (q31_t)0x6F2D532C, (q31_t)0xC03A1368, + (q31_t)0x6EFB5F12, (q31_t)0xBFE2FCDF, (q31_t)0x6EC92682, + (q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBF3546A8, + (q31_t)0x6E63E87F, (q31_t)0xBEDEA765, (q31_t)0x6E30E349, + (q31_t)0xBE88304F, (q31_t)0x6DFD9A1B, (q31_t)0xBE31E19B, + (q31_t)0x6DCA0D14, (q31_t)0xBDDBBB7F, (q31_t)0x6D963C54, + (q31_t)0xBD85BE2F, (q31_t)0x6D6227FA, (q31_t)0xBD2FE9E1, + (q31_t)0x6D2DD027, (q31_t)0xBCDA3ECA, (q31_t)0x6CF934FB, + (q31_t)0xBC84BD1E, (q31_t)0x6CC45697, (q31_t)0xBC2F6513, + (q31_t)0x6C8F351C, (q31_t)0xBBDA36DC, (q31_t)0x6C59D0A9, + (q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBB3058C0, + (q31_t)0x6BEE3F62, (q31_t)0xBADBA943, (q31_t)0x6BB812D0, + (q31_t)0xBA87246C, (q31_t)0x6B81A3CD, (q31_t)0xBA32CA70, + (q31_t)0x6B4AF278, (q31_t)0xB9DE9B83, (q31_t)0x6B13FEF5, + (q31_t)0xB98A97D8, (q31_t)0x6ADCC964, (q31_t)0xB936BFA3, + (q31_t)0x6AA551E8, (q31_t)0xB8E31319, (q31_t)0x6A6D98A4, + (q31_t)0xB88F926C, (q31_t)0x6A359DB9, (q31_t)0xB83C3DD1, + (q31_t)0x69FD614A, (q31_t)0xB7E9157A, (q31_t)0x69C4E37A, + (q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB7434A67, + (q31_t)0x69532442, (q31_t)0xB6F0A811, (q31_t)0x6919E320, + (q31_t)0xB69E32CD, (q31_t)0x68E06129, (q31_t)0xB64BEACC, + (q31_t)0x68A69E81, (q31_t)0xB5F9D042, (q31_t)0x686C9B4B, + (q31_t)0xB5A7E362, (q31_t)0x683257AA, (q31_t)0xB556245E, + (q31_t)0x67F7D3C4, (q31_t)0xB5049368, (q31_t)0x67BD0FBC, + (q31_t)0xB4B330B2, (q31_t)0x67820BB6, (q31_t)0xB461FC70, + (q31_t)0x6746C7D7, (q31_t)0xB410F6D2, (q31_t)0x670B4443, + (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB36F784E, + (q31_t)0x66937E90, (q31_t)0xB31EFFCB, (q31_t)0x66573CBB, + (q31_t)0xB2CEB6B5, (q31_t)0x661ABBC5, (q31_t)0xB27E9D3B, + (q31_t)0x65DDFBD3, (q31_t)0xB22EB392, (q31_t)0x65A0FD0B, + (q31_t)0xB1DEF9E8, (q31_t)0x6563BF92, (q31_t)0xB18F7070, + (q31_t)0x6526438E, (q31_t)0xB140175B, (q31_t)0x64E88926, + (q31_t)0xB0F0EEDA, (q31_t)0x64AA907F, (q31_t)0xB0A1F71C, + (q31_t)0x646C59BF, (q31_t)0xB0533055, (q31_t)0x642DE50D, + (q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAFB63667, + (q31_t)0x63B0426D, (q31_t)0xAF6803A1, (q31_t)0x637114CC, + (q31_t)0xAF1A0293, (q31_t)0x6331A9D4, (q31_t)0xAECC336B, + (q31_t)0x62F201AC, (q31_t)0xAE7E965B, (q31_t)0x62B21C7B, + (q31_t)0xAE312B91, (q31_t)0x6271FA69, (q31_t)0xADE3F33E, + (q31_t)0x62319B9D, (q31_t)0xAD96ED91, (q31_t)0x61F1003E, + (q31_t)0xAD4A1ABA, (q31_t)0x61B02876, (q31_t)0xACFD7AE8, + (q31_t)0x616F146B, (q31_t)0xACB10E4A, (q31_t)0x612DC446, + (q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAC18CF68, + (q31_t)0x60AA704F, (q31_t)0xABCCFD82, (q31_t)0x60686CCE, + (q31_t)0xAB815F8C, (q31_t)0x60262DD5, (q31_t)0xAB35F5B5, + (q31_t)0x5FE3B38D, (q31_t)0xAAEAC02B, (q31_t)0x5FA0FE1E, + (q31_t)0xAA9FBF1D, (q31_t)0x5F5E0DB3, (q31_t)0xAA54F2B9, + (q31_t)0x5F1AE273, (q31_t)0xAA0A5B2D, (q31_t)0x5ED77C89, + (q31_t)0xA9BFF8A8, (q31_t)0x5E93DC1F, (q31_t)0xA975CB56, + (q31_t)0x5E50015D, (q31_t)0xA92BD366, (q31_t)0x5E0BEC6E, + (q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA8988463, + (q31_t)0x5D8314B0, (q31_t)0xA84F2DA9, (q31_t)0x5D3E5236, + (q31_t)0xA8060D08, (q31_t)0x5CF95638, (q31_t)0xA7BD22AB, + (q31_t)0x5CB420DF, (q31_t)0xA7746EC0, (q31_t)0x5C6EB258, + (q31_t)0xA72BF173, (q31_t)0x5C290ACC, (q31_t)0xA6E3AAF2, + (q31_t)0x5BE32A67, (q31_t)0xA69B9B68, (q31_t)0x5B9D1153, + (q31_t)0xA653C302, (q31_t)0x5B56BFBD, (q31_t)0xA60C21ED, + (q31_t)0x5B1035CF, (q31_t)0xA5C4B855, (q31_t)0x5AC973B4, + (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA5368C4B, + (q31_t)0x5A3B47AA, (q31_t)0xA4EFCA31, (q31_t)0x59F3DE12, + (q31_t)0xA4A94042, (q31_t)0x59AC3CFD, (q31_t)0xA462EEAC, + (q31_t)0x59646497, (q31_t)0xA41CD598, (q31_t)0x591C550E, + (q31_t)0xA3D6F533, (q31_t)0x58D40E8C, (q31_t)0xA3914DA7, + (q31_t)0x588B913F, (q31_t)0xA34BDF20, (q31_t)0x5842DD54, + (q31_t)0xA306A9C7, (q31_t)0x57F9F2F7, (q31_t)0xA2C1ADC9, + (q31_t)0x57B0D256, (q31_t)0xA27CEB4F, (q31_t)0x57677B9D, + (q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA1F41391, + (q31_t)0x56D42C99, (q31_t)0xA1AFFEA2, (q31_t)0x568A34A9, + (q31_t)0xA16C23E1, (q31_t)0x56400757, (q31_t)0xA1288376, + (q31_t)0x55F5A4D2, (q31_t)0xA0E51D8C, (q31_t)0x55AB0D46, + (q31_t)0xA0A1F24C, (q31_t)0x556040E2, (q31_t)0xA05F01E1, + (q31_t)0x55153FD4, (q31_t)0xA01C4C72, (q31_t)0x54CA0A4A, + (q31_t)0x9FD9D22A, (q31_t)0x547EA073, (q31_t)0x9F979331, + (q31_t)0x5433027D, (q31_t)0x9F558FB0, (q31_t)0x53E73097, + (q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9ED23BB9, + (q31_t)0x534EF1B5, (q31_t)0x9E90EB94, (q31_t)0x53028517, + (q31_t)0x9E4FD789, (q31_t)0x52B5E545, (q31_t)0x9E0EFFC1, + (q31_t)0x5269126E, (q31_t)0x9DCE6462, (q31_t)0x521C0CC1, + (q31_t)0x9D8E0596, (q31_t)0x51CED46E, (q31_t)0x9D4DE384, + (q31_t)0x518169A4, (q31_t)0x9D0DFE53, (q31_t)0x5133CC94, + (q31_t)0x9CCE562B, (q31_t)0x50E5FD6C, (q31_t)0x9C8EEB33, + (q31_t)0x5097FC5E, (q31_t)0x9C4FBD92, (q31_t)0x5049C999, + (q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9BD21AF2, + (q31_t)0x4FACCFAB, (q31_t)0x9B93A640, (q31_t)0x4F5E08E3, + (q31_t)0x9B556F80, (q31_t)0x4F0F1126, (q31_t)0x9B1776D9, + (q31_t)0x4EBFE8A4, (q31_t)0x9AD9BC71, (q31_t)0x4E708F8F, + (q31_t)0x9A9C406D, (q31_t)0x4E210617, (q31_t)0x9A5F02F5, + (q31_t)0x4DD14C6E, (q31_t)0x9A22042C, (q31_t)0x4D8162C4, + (q31_t)0x99E5443A, (q31_t)0x4D31494B, (q31_t)0x99A8C344, + (q31_t)0x4CE10034, (q31_t)0x996C816F, (q31_t)0x4C9087B1, + (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x98F4BBBC, + (q31_t)0x4BEF092D, (q31_t)0x98B93828, (q31_t)0x4B9E038F, + (q31_t)0x987DF449, (q31_t)0x4B4CCF4D, (q31_t)0x9842F043, + (q31_t)0x4AFB6C97, (q31_t)0x98082C3B, (q31_t)0x4AA9DBA1, + (q31_t)0x97CDA855, (q31_t)0x4A581C9D, (q31_t)0x979364B5, + (q31_t)0x4A062FBD, (q31_t)0x9759617E, (q31_t)0x49B41533, + (q31_t)0x971F9ED6, (q31_t)0x4961CD32, (q31_t)0x96E61CDF, + (q31_t)0x490F57EE, (q31_t)0x96ACDBBD, (q31_t)0x48BCB598, + (q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x963B1C85, + (q31_t)0x4816EA85, (q31_t)0x96029EB5, (q31_t)0x47C3C22E, + (q31_t)0x95CA6246, (q31_t)0x47706D93, (q31_t)0x9592675B, + (q31_t)0x471CECE6, (q31_t)0x955AAE17, (q31_t)0x46C9405C, + (q31_t)0x9523369B, (q31_t)0x46756827, (q31_t)0x94EC010B, + (q31_t)0x4621647C, (q31_t)0x94B50D87, (q31_t)0x45CD358F, + (q31_t)0x947E5C32, (q31_t)0x4578DB93, (q31_t)0x9447ED2F, + (q31_t)0x452456BC, (q31_t)0x9411C09D, (q31_t)0x44CFA73F, + (q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x93A62F56, + (q31_t)0x4425C923, (q31_t)0x9370CAE4, (q31_t)0x43D09AEC, + (q31_t)0x933BA968, (q31_t)0x437B42E1, (q31_t)0x9306CB04, + (q31_t)0x4325C135, (q31_t)0x92D22FD8, (q31_t)0x42D0161E, + (q31_t)0x929DD805, (q31_t)0x427A41D0, (q31_t)0x9269C3AC, + (q31_t)0x42244480, (q31_t)0x9235F2EB, (q31_t)0x41CE1E64, + (q31_t)0x920265E4, (q31_t)0x4177CFB0, (q31_t)0x91CF1CB6, + (q31_t)0x4121589A, (q31_t)0x919C1780, (q31_t)0x40CAB957, + (q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x9136D97D, + (q31_t)0x401D0320, (q31_t)0x9104A0ED, (q31_t)0x3FC5EC97, + (q31_t)0x90D2ACD3, (q31_t)0x3F6EAEB8, (q31_t)0x90A0FD4E, + (q31_t)0x3F1749B7, (q31_t)0x906F927B, (q31_t)0x3EBFBDCC, + (q31_t)0x903E6C7A, (q31_t)0x3E680B2C, (q31_t)0x900D8B69, + (q31_t)0x3E10320D, (q31_t)0x8FDCEF66, (q31_t)0x3DB832A5, + (q31_t)0x8FAC988E, (q31_t)0x3D600D2B, (q31_t)0x8F7C8701, + (q31_t)0x3D07C1D5, (q31_t)0x8F4CBADB, (q31_t)0x3CAF50DA, + (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8EEDF33B, + (q31_t)0x3BFDFECD, (q31_t)0x8EBEF7FB, (q31_t)0x3BA51E29, + (q31_t)0x8E904298, (q31_t)0x3B4C18BA, (q31_t)0x8E61D32D, + (q31_t)0x3AF2EEB7, (q31_t)0x8E33A9D9, (q31_t)0x3A99A057, + (q31_t)0x8E05C6B7, (q31_t)0x3A402DD1, (q31_t)0x8DD829E4, + (q31_t)0x39E6975D, (q31_t)0x8DAAD37B, (q31_t)0x398CDD32, + (q31_t)0x8D7DC399, (q31_t)0x3932FF87, (q31_t)0x8D50FA59, + (q31_t)0x38D8FE93, (q31_t)0x8D2477D8, (q31_t)0x387EDA8E, + (q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8CCC477D, + (q31_t)0x37CA2A30, (q31_t)0x8CA099D9, (q31_t)0x376F9E46, + (q31_t)0x8C753361, (q31_t)0x3714F02A, (q31_t)0x8C4A142F, + (q31_t)0x36BA2013, (q31_t)0x8C1F3C5C, (q31_t)0x365F2E3B, + (q31_t)0x8BF4AC05, (q31_t)0x36041AD9, (q31_t)0x8BCA6342, + (q31_t)0x35A8E624, (q31_t)0x8BA0622F, (q31_t)0x354D9056, + (q31_t)0x8B76A8E4, (q31_t)0x34F219A7, (q31_t)0x8B4D377C, + (q31_t)0x3496824F, (q31_t)0x8B240E10, (q31_t)0x343ACA87, + (q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8AD29393, + (q31_t)0x3382FA88, (q31_t)0x8AAA42B4, (q31_t)0x3326E2C2, + (q31_t)0x8A823A35, (q31_t)0x32CAAB6F, (q31_t)0x8A5A7A30, + (q31_t)0x326E54C7, (q31_t)0x8A3302BD, (q31_t)0x3211DF03, + (q31_t)0x8A0BD3F5, (q31_t)0x31B54A5D, (q31_t)0x89E4EDEE, + (q31_t)0x3158970D, (q31_t)0x89BE50C3, (q31_t)0x30FBC54D, + (q31_t)0x8997FC89, (q31_t)0x309ED555, (q31_t)0x8971F15A, + (q31_t)0x3041C760, (q31_t)0x894C2F4C, (q31_t)0x2FE49BA6, + (q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x890186F1, + (q31_t)0x2F29EBCC, (q31_t)0x88DCA0D3, (q31_t)0x2ECC681E, + (q31_t)0x88B80431, (q31_t)0x2E6EC792, (q31_t)0x8893B124, + (q31_t)0x2E110A62, (q31_t)0x886FA7C2, (q31_t)0x2DB330C7, + (q31_t)0x884BE820, (q31_t)0x2D553AFB, (q31_t)0x88287255, + (q31_t)0x2CF72939, (q31_t)0x88054677, (q31_t)0x2C98FBBA, + (q31_t)0x87E2649B, (q31_t)0x2C3AB2B9, (q31_t)0x87BFCCD7, + (q31_t)0x2BDC4E6F, (q31_t)0x879D7F40, (q31_t)0x2B7DCF17, + (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x8759C2EF, + (q31_t)0x2AC08025, (q31_t)0x8738545E, (q31_t)0x2A61B101, + (q31_t)0x8717304E, (q31_t)0x2A02C7B8, (q31_t)0x86F656D3, + (q31_t)0x29A3C484, (q31_t)0x86D5C802, (q31_t)0x2944A7A2, + (q31_t)0x86B583EE, (q31_t)0x28E5714A, (q31_t)0x86958AAB, + (q31_t)0x288621B9, (q31_t)0x8675DC4E, (q31_t)0x2826B928, + (q31_t)0x865678EA, (q31_t)0x27C737D2, (q31_t)0x86376092, + (q31_t)0x27679DF4, (q31_t)0x86189359, (q31_t)0x2707EBC6, + (q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x85DBDA91, + (q31_t)0x26483F6C, (q31_t)0x85BDEF27, (q31_t)0x25E845B5, + (q31_t)0x85A04F28, (q31_t)0x2588349D, (q31_t)0x8582FAA4, + (q31_t)0x25280C5D, (q31_t)0x8565F1B0, (q31_t)0x24C7CD32, + (q31_t)0x8549345C, (q31_t)0x24677757, (q31_t)0x852CC2BA, + (q31_t)0x24070B07, (q31_t)0x85109CDC, (q31_t)0x23A6887E, + (q31_t)0x84F4C2D3, (q31_t)0x2345EFF7, (q31_t)0x84D934B0, + (q31_t)0x22E541AE, (q31_t)0x84BDF285, (q31_t)0x22847DDF, + (q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x84885257, + (q31_t)0x21C2B69C, (q31_t)0x846DF476, (q31_t)0x2161B39F, + (q31_t)0x8453E2CE, (q31_t)0x21009C0B, (q31_t)0x843A1D70, + (q31_t)0x209F701C, (q31_t)0x8420A46B, (q31_t)0x203E300D, + (q31_t)0x840777CF, (q31_t)0x1FDCDC1A, (q31_t)0x83EE97AC, + (q31_t)0x1F7B7480, (q31_t)0x83D60411, (q31_t)0x1F19F97B, + (q31_t)0x83BDBD0D, (q31_t)0x1EB86B46, (q31_t)0x83A5C2B0, + (q31_t)0x1E56CA1E, (q31_t)0x838E1507, (q31_t)0x1DF5163F, + (q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x835FA00E, + (q31_t)0x1D31774D, (q31_t)0x8348D8DB, (q31_t)0x1CCF8CB3, + (q31_t)0x83325E97, (q31_t)0x1C6D9053, (q31_t)0x831C314E, + (q31_t)0x1C0B826A, (q31_t)0x8306510F, (q31_t)0x1BA96334, + (q31_t)0x82F0BDE8, (q31_t)0x1B4732EF, (q31_t)0x82DB77E5, + (q31_t)0x1AE4F1D6, (q31_t)0x82C67F13, (q31_t)0x1A82A025, + (q31_t)0x82B1D381, (q31_t)0x1A203E1B, (q31_t)0x829D753A, + (q31_t)0x19BDCBF2, (q31_t)0x8289644A, (q31_t)0x195B49E9, + (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x82622AA5, + (q31_t)0x18961727, (q31_t)0x824F0208, (q31_t)0x183366E8, + (q31_t)0x823C26F2, (q31_t)0x17D0A7BB, (q31_t)0x82299971, + (q31_t)0x176DD9DE, (q31_t)0x8217598F, (q31_t)0x170AFD8D, + (q31_t)0x82056758, (q31_t)0x16A81305, (q31_t)0x81F3C2D7, + (q31_t)0x16451A83, (q31_t)0x81E26C16, (q31_t)0x15E21444, + (q31_t)0x81D16320, (q31_t)0x157F0086, (q31_t)0x81C0A801, + (q31_t)0x151BDF85, (q31_t)0x81B03AC1, (q31_t)0x14B8B17F, + (q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x81904A0C, + (q31_t)0x13F22F57, (q31_t)0x8180C6A9, (q31_t)0x138EDBB0, + (q31_t)0x8171914E, (q31_t)0x132B7BF9, (q31_t)0x8162AA03, + (q31_t)0x12C8106E, (q31_t)0x815410D3, (q31_t)0x1264994E, + (q31_t)0x8145C5C6, (q31_t)0x120116D4, (q31_t)0x8137C8E6, + (q31_t)0x119D8940, (q31_t)0x812A1A39, (q31_t)0x1139F0CE, + (q31_t)0x811CB9CA, (q31_t)0x10D64DBC, (q31_t)0x810FA7A0, + (q31_t)0x1072A047, (q31_t)0x8102E3C3, (q31_t)0x100EE8AD, + (q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80EA4712, + (q31_t)0x0F475BFE, (q31_t)0x80DE6E4C, (q31_t)0x0EE38765, + (q31_t)0x80D2E3F1, (q31_t)0x0E7FA99D, (q31_t)0x80C7A80A, + (q31_t)0x0E1BC2E3, (q31_t)0x80BCBA9C, (q31_t)0x0DB7D376, + (q31_t)0x80B21BAF, (q31_t)0x0D53DB92, (q31_t)0x80A7CB49, + (q31_t)0x0CEFDB75, (q31_t)0x809DC970, (q31_t)0x0C8BD35E, + (q31_t)0x8094162B, (q31_t)0x0C27C389, (q31_t)0x808AB180, + (q31_t)0x0BC3AC35, (q31_t)0x80819B74, (q31_t)0x0B5F8D9F, + (q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x80705B50, + (q31_t)0x0A973BA5, (q31_t)0x80683143, (q31_t)0x0A3308BC, + (q31_t)0x806055EA, (q31_t)0x09CECF89, (q31_t)0x8058C94C, + (q31_t)0x096A9049, (q31_t)0x80518B6B, (q31_t)0x09064B3A, + (q31_t)0x804A9C4D, (q31_t)0x08A2009A, (q31_t)0x8043FBF6, + (q31_t)0x083DB0A7, (q31_t)0x803DAA69, (q31_t)0x07D95B9E, + (q31_t)0x8037A7AC, (q31_t)0x077501BE, (q31_t)0x8031F3C1, + (q31_t)0x0710A344, (q31_t)0x802C8EAD, (q31_t)0x06AC406F, + (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x8022B113, + (q31_t)0x05E36EA9, (q31_t)0x801E3894, (q31_t)0x057F0034, + (q31_t)0x801A0EF7, (q31_t)0x051A8E5C, (q31_t)0x80163440, + (q31_t)0x04B6195D, (q31_t)0x8012A86F, (q31_t)0x0451A176, + (q31_t)0x800F6B88, (q31_t)0x03ED26E6, (q31_t)0x800C7D8C, + (q31_t)0x0388A9E9, (q31_t)0x8009DE7D, (q31_t)0x03242ABF, + (q31_t)0x80078E5E, (q31_t)0x02BFA9A4, (q31_t)0x80058D2E, + (q31_t)0x025B26D7, (q31_t)0x8003DAF0, (q31_t)0x01F6A296, + (q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x8001634D, + (q31_t)0x012D96B0, (q31_t)0x80009DE9, (q31_t)0x00C90F88, + (q31_t)0x8000277A, (q31_t)0x006487E3, (q31_t)0x80000000, + (q31_t)0x00000000, (q31_t)0x8000277A, (q31_t)0xFF9B781D, + (q31_t)0x80009DE9, (q31_t)0xFF36F078, (q31_t)0x8001634D, + (q31_t)0xFED2694F, (q31_t)0x800277A5, (q31_t)0xFE6DE2E0, + (q31_t)0x8003DAF0, (q31_t)0xFE095D69, (q31_t)0x80058D2E, + (q31_t)0xFDA4D928, (q31_t)0x80078E5E, (q31_t)0xFD40565B, + (q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x800C7D8C, + (q31_t)0xFC775616, (q31_t)0x800F6B88, (q31_t)0xFC12D919, + (q31_t)0x8012A86F, (q31_t)0xFBAE5E89, (q31_t)0x80163440, + (q31_t)0xFB49E6A2, (q31_t)0x801A0EF7, (q31_t)0xFAE571A4, + (q31_t)0x801E3894, (q31_t)0xFA80FFCB, (q31_t)0x8022B113, + (q31_t)0xFA1C9156, (q31_t)0x80277872, (q31_t)0xF9B82683, + (q31_t)0x802C8EAD, (q31_t)0xF953BF90, (q31_t)0x8031F3C1, + (q31_t)0xF8EF5CBB, (q31_t)0x8037A7AC, (q31_t)0xF88AFE41, + (q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x8043FBF6, + (q31_t)0xF7C24F58, (q31_t)0x804A9C4D, (q31_t)0xF75DFF65, + (q31_t)0x80518B6B, (q31_t)0xF6F9B4C5, (q31_t)0x8058C94C, + (q31_t)0xF6956FB6, (q31_t)0x806055EA, (q31_t)0xF6313076, + (q31_t)0x80683143, (q31_t)0xF5CCF743, (q31_t)0x80705B50, + (q31_t)0xF568C45A, (q31_t)0x8078D40D, (q31_t)0xF50497FA, + (q31_t)0x80819B74, (q31_t)0xF4A07260, (q31_t)0x808AB180, + (q31_t)0xF43C53CA, (q31_t)0x8094162B, (q31_t)0xF3D83C76, + (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80A7CB49, + (q31_t)0xF310248A, (q31_t)0x80B21BAF, (q31_t)0xF2AC246D, + (q31_t)0x80BCBA9C, (q31_t)0xF2482C89, (q31_t)0x80C7A80A, + (q31_t)0xF1E43D1C, (q31_t)0x80D2E3F1, (q31_t)0xF1805662, + (q31_t)0x80DE6E4C, (q31_t)0xF11C789A, (q31_t)0x80EA4712, + (q31_t)0xF0B8A401, (q31_t)0x80F66E3C, (q31_t)0xF054D8D4, + (q31_t)0x8102E3C3, (q31_t)0xEFF11752, (q31_t)0x810FA7A0, + (q31_t)0xEF8D5FB8, (q31_t)0x811CB9CA, (q31_t)0xEF29B243, + (q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8137C8E6, + (q31_t)0xEE6276BF, (q31_t)0x8145C5C6, (q31_t)0xEDFEE92B, + (q31_t)0x815410D3, (q31_t)0xED9B66B2, (q31_t)0x8162AA03, + (q31_t)0xED37EF91, (q31_t)0x8171914E, (q31_t)0xECD48406, + (q31_t)0x8180C6A9, (q31_t)0xEC71244F, (q31_t)0x81904A0C, + (q31_t)0xEC0DD0A8, (q31_t)0x81A01B6C, (q31_t)0xEBAA894E, + (q31_t)0x81B03AC1, (q31_t)0xEB474E80, (q31_t)0x81C0A801, + (q31_t)0xEAE4207A, (q31_t)0x81D16320, (q31_t)0xEA80FF79, + (q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x81F3C2D7, + (q31_t)0xE9BAE57C, (q31_t)0x82056758, (q31_t)0xE957ECFB, + (q31_t)0x8217598F, (q31_t)0xE8F50273, (q31_t)0x82299971, + (q31_t)0xE8922621, (q31_t)0x823C26F2, (q31_t)0xE82F5844, + (q31_t)0x824F0208, (q31_t)0xE7CC9917, (q31_t)0x82622AA5, + (q31_t)0xE769E8D8, (q31_t)0x8275A0C0, (q31_t)0xE70747C3, + (q31_t)0x8289644A, (q31_t)0xE6A4B616, (q31_t)0x829D753A, + (q31_t)0xE642340D, (q31_t)0x82B1D381, (q31_t)0xE5DFC1E4, + (q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x82DB77E5, + (q31_t)0xE51B0E2A, (q31_t)0x82F0BDE8, (q31_t)0xE4B8CD10, + (q31_t)0x8306510F, (q31_t)0xE4569CCB, (q31_t)0x831C314E, + (q31_t)0xE3F47D95, (q31_t)0x83325E97, (q31_t)0xE3926FAC, + (q31_t)0x8348D8DB, (q31_t)0xE330734C, (q31_t)0x835FA00E, + (q31_t)0xE2CE88B2, (q31_t)0x8376B422, (q31_t)0xE26CB01A, + (q31_t)0x838E1507, (q31_t)0xE20AE9C1, (q31_t)0x83A5C2B0, + (q31_t)0xE1A935E1, (q31_t)0x83BDBD0D, (q31_t)0xE14794B9, + (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x83EE97AC, + (q31_t)0xE0848B7F, (q31_t)0x840777CF, (q31_t)0xE02323E5, + (q31_t)0x8420A46B, (q31_t)0xDFC1CFF2, (q31_t)0x843A1D70, + (q31_t)0xDF608FE3, (q31_t)0x8453E2CE, (q31_t)0xDEFF63F4, + (q31_t)0x846DF476, (q31_t)0xDE9E4C60, (q31_t)0x84885257, + (q31_t)0xDE3D4963, (q31_t)0x84A2FC62, (q31_t)0xDDDC5B3A, + (q31_t)0x84BDF285, (q31_t)0xDD7B8220, (q31_t)0x84D934B0, + (q31_t)0xDD1ABE51, (q31_t)0x84F4C2D3, (q31_t)0xDCBA1008, + (q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x852CC2BA, + (q31_t)0xDBF8F4F8, (q31_t)0x8549345C, (q31_t)0xDB9888A8, + (q31_t)0x8565F1B0, (q31_t)0xDB3832CD, (q31_t)0x8582FAA4, + (q31_t)0xDAD7F3A2, (q31_t)0x85A04F28, (q31_t)0xDA77CB62, + (q31_t)0x85BDEF27, (q31_t)0xDA17BA4A, (q31_t)0x85DBDA91, + (q31_t)0xD9B7C093, (q31_t)0x85FA1152, (q31_t)0xD957DE7A, + (q31_t)0x86189359, (q31_t)0xD8F81439, (q31_t)0x86376092, + (q31_t)0xD898620C, (q31_t)0x865678EA, (q31_t)0xD838C82D, + (q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x86958AAB, + (q31_t)0xD779DE46, (q31_t)0x86B583EE, (q31_t)0xD71A8EB5, + (q31_t)0x86D5C802, (q31_t)0xD6BB585D, (q31_t)0x86F656D3, + (q31_t)0xD65C3B7B, (q31_t)0x8717304E, (q31_t)0xD5FD3847, + (q31_t)0x8738545E, (q31_t)0xD59E4EFE, (q31_t)0x8759C2EF, + (q31_t)0xD53F7FDA, (q31_t)0x877B7BEC, (q31_t)0xD4E0CB14, + (q31_t)0x879D7F40, (q31_t)0xD48230E8, (q31_t)0x87BFCCD7, + (q31_t)0xD423B190, (q31_t)0x87E2649B, (q31_t)0xD3C54D46, + (q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x88287255, + (q31_t)0xD308D6C6, (q31_t)0x884BE820, (q31_t)0xD2AAC504, + (q31_t)0x886FA7C2, (q31_t)0xD24CCF38, (q31_t)0x8893B124, + (q31_t)0xD1EEF59E, (q31_t)0x88B80431, (q31_t)0xD191386D, + (q31_t)0x88DCA0D3, (q31_t)0xD13397E1, (q31_t)0x890186F1, + (q31_t)0xD0D61433, (q31_t)0x8926B677, (q31_t)0xD078AD9D, + (q31_t)0x894C2F4C, (q31_t)0xD01B6459, (q31_t)0x8971F15A, + (q31_t)0xCFBE389F, (q31_t)0x8997FC89, (q31_t)0xCF612AAA, + (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x89E4EDEE, + (q31_t)0xCEA768F2, (q31_t)0x8A0BD3F5, (q31_t)0xCE4AB5A2, + (q31_t)0x8A3302BD, (q31_t)0xCDEE20FC, (q31_t)0x8A5A7A30, + (q31_t)0xCD91AB38, (q31_t)0x8A823A35, (q31_t)0xCD355490, + (q31_t)0x8AAA42B4, (q31_t)0xCCD91D3D, (q31_t)0x8AD29393, + (q31_t)0xCC7D0577, (q31_t)0x8AFB2CBA, (q31_t)0xCC210D78, + (q31_t)0x8B240E10, (q31_t)0xCBC53578, (q31_t)0x8B4D377C, + (q31_t)0xCB697DB0, (q31_t)0x8B76A8E4, (q31_t)0xCB0DE658, + (q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8BCA6342, + (q31_t)0xCA5719DB, (q31_t)0x8BF4AC05, (q31_t)0xC9FBE527, + (q31_t)0x8C1F3C5C, (q31_t)0xC9A0D1C4, (q31_t)0x8C4A142F, + (q31_t)0xC945DFEC, (q31_t)0x8C753361, (q31_t)0xC8EB0FD6, + (q31_t)0x8CA099D9, (q31_t)0xC89061BA, (q31_t)0x8CCC477D, + (q31_t)0xC835D5D0, (q31_t)0x8CF83C30, (q31_t)0xC7DB6C50, + (q31_t)0x8D2477D8, (q31_t)0xC7812571, (q31_t)0x8D50FA59, + (q31_t)0xC727016C, (q31_t)0x8D7DC399, (q31_t)0xC6CD0079, + (q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8DD829E4, + (q31_t)0xC61968A2, (q31_t)0x8E05C6B7, (q31_t)0xC5BFD22E, + (q31_t)0x8E33A9D9, (q31_t)0xC5665FA8, (q31_t)0x8E61D32D, + (q31_t)0xC50D1148, (q31_t)0x8E904298, (q31_t)0xC4B3E746, + (q31_t)0x8EBEF7FB, (q31_t)0xC45AE1D7, (q31_t)0x8EEDF33B, + (q31_t)0xC4020132, (q31_t)0x8F1D343A, (q31_t)0xC3A9458F, + (q31_t)0x8F4CBADB, (q31_t)0xC350AF25, (q31_t)0x8F7C8701, + (q31_t)0xC2F83E2A, (q31_t)0x8FAC988E, (q31_t)0xC29FF2D4, + (q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x900D8B69, + (q31_t)0xC1EFCDF2, (q31_t)0x903E6C7A, (q31_t)0xC197F4D3, + (q31_t)0x906F927B, (q31_t)0xC1404233, (q31_t)0x90A0FD4E, + (q31_t)0xC0E8B648, (q31_t)0x90D2ACD3, (q31_t)0xC0915147, + (q31_t)0x9104A0ED, (q31_t)0xC03A1368, (q31_t)0x9136D97D, + (q31_t)0xBFE2FCDF, (q31_t)0x91695663, (q31_t)0xBF8C0DE2, + (q31_t)0x919C1780, (q31_t)0xBF3546A8, (q31_t)0x91CF1CB6, + (q31_t)0xBEDEA765, (q31_t)0x920265E4, (q31_t)0xBE88304F, + (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x9269C3AC, + (q31_t)0xBDDBBB7F, (q31_t)0x929DD805, (q31_t)0xBD85BE2F, + (q31_t)0x92D22FD8, (q31_t)0xBD2FE9E1, (q31_t)0x9306CB04, + (q31_t)0xBCDA3ECA, (q31_t)0x933BA968, (q31_t)0xBC84BD1E, + (q31_t)0x9370CAE4, (q31_t)0xBC2F6513, (q31_t)0x93A62F56, + (q31_t)0xBBDA36DC, (q31_t)0x93DBD69F, (q31_t)0xBB8532AF, + (q31_t)0x9411C09D, (q31_t)0xBB3058C0, (q31_t)0x9447ED2F, + (q31_t)0xBADBA943, (q31_t)0x947E5C32, (q31_t)0xBA87246C, + (q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x94EC010B, + (q31_t)0xB9DE9B83, (q31_t)0x9523369B, (q31_t)0xB98A97D8, + (q31_t)0x955AAE17, (q31_t)0xB936BFA3, (q31_t)0x9592675B, + (q31_t)0xB8E31319, (q31_t)0x95CA6246, (q31_t)0xB88F926C, + (q31_t)0x96029EB5, (q31_t)0xB83C3DD1, (q31_t)0x963B1C85, + (q31_t)0xB7E9157A, (q31_t)0x9673DB94, (q31_t)0xB796199B, + (q31_t)0x96ACDBBD, (q31_t)0xB7434A67, (q31_t)0x96E61CDF, + (q31_t)0xB6F0A811, (q31_t)0x971F9ED6, (q31_t)0xB69E32CD, + (q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x979364B5, + (q31_t)0xB5F9D042, (q31_t)0x97CDA855, (q31_t)0xB5A7E362, + (q31_t)0x98082C3B, (q31_t)0xB556245E, (q31_t)0x9842F043, + (q31_t)0xB5049368, (q31_t)0x987DF449, (q31_t)0xB4B330B2, + (q31_t)0x98B93828, (q31_t)0xB461FC70, (q31_t)0x98F4BBBC, + (q31_t)0xB410F6D2, (q31_t)0x99307EE0, (q31_t)0xB3C0200C, + (q31_t)0x996C816F, (q31_t)0xB36F784E, (q31_t)0x99A8C344, + (q31_t)0xB31EFFCB, (q31_t)0x99E5443A, (q31_t)0xB2CEB6B5, + (q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9A5F02F5, + (q31_t)0xB22EB392, (q31_t)0x9A9C406D, (q31_t)0xB1DEF9E8, + (q31_t)0x9AD9BC71, (q31_t)0xB18F7070, (q31_t)0x9B1776D9, + (q31_t)0xB140175B, (q31_t)0x9B556F80, (q31_t)0xB0F0EEDA, + (q31_t)0x9B93A640, (q31_t)0xB0A1F71C, (q31_t)0x9BD21AF2, + (q31_t)0xB0533055, (q31_t)0x9C10CD70, (q31_t)0xB0049AB2, + (q31_t)0x9C4FBD92, (q31_t)0xAFB63667, (q31_t)0x9C8EEB33, + (q31_t)0xAF6803A1, (q31_t)0x9CCE562B, (q31_t)0xAF1A0293, + (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9D4DE384, + (q31_t)0xAE7E965B, (q31_t)0x9D8E0596, (q31_t)0xAE312B91, + (q31_t)0x9DCE6462, (q31_t)0xADE3F33E, (q31_t)0x9E0EFFC1, + (q31_t)0xAD96ED91, (q31_t)0x9E4FD789, (q31_t)0xAD4A1ABA, + (q31_t)0x9E90EB94, (q31_t)0xACFD7AE8, (q31_t)0x9ED23BB9, + (q31_t)0xACB10E4A, (q31_t)0x9F13C7D0, (q31_t)0xAC64D510, + (q31_t)0x9F558FB0, (q31_t)0xAC18CF68, (q31_t)0x9F979331, + (q31_t)0xABCCFD82, (q31_t)0x9FD9D22A, (q31_t)0xAB815F8C, + (q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA05F01E1, + (q31_t)0xAAEAC02B, (q31_t)0xA0A1F24C, (q31_t)0xAA9FBF1D, + (q31_t)0xA0E51D8C, (q31_t)0xAA54F2B9, (q31_t)0xA1288376, + (q31_t)0xAA0A5B2D, (q31_t)0xA16C23E1, (q31_t)0xA9BFF8A8, + (q31_t)0xA1AFFEA2, (q31_t)0xA975CB56, (q31_t)0xA1F41391, + (q31_t)0xA92BD366, (q31_t)0xA2386283, (q31_t)0xA8E21106, + (q31_t)0xA27CEB4F, (q31_t)0xA8988463, (q31_t)0xA2C1ADC9, + (q31_t)0xA84F2DA9, (q31_t)0xA306A9C7, (q31_t)0xA8060D08, + (q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA3914DA7, + (q31_t)0xA7746EC0, (q31_t)0xA3D6F533, (q31_t)0xA72BF173, + (q31_t)0xA41CD598, (q31_t)0xA6E3AAF2, (q31_t)0xA462EEAC, + (q31_t)0xA69B9B68, (q31_t)0xA4A94042, (q31_t)0xA653C302, + (q31_t)0xA4EFCA31, (q31_t)0xA60C21ED, (q31_t)0xA5368C4B, + (q31_t)0xA5C4B855, (q31_t)0xA57D8666, (q31_t)0xA57D8666, + (q31_t)0xA5C4B855, (q31_t)0xA5368C4B, (q31_t)0xA60C21ED, + (q31_t)0xA4EFCA31, (q31_t)0xA653C302, (q31_t)0xA4A94042, + (q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA6E3AAF2, + (q31_t)0xA41CD598, (q31_t)0xA72BF173, (q31_t)0xA3D6F533, + (q31_t)0xA7746EC0, (q31_t)0xA3914DA7, (q31_t)0xA7BD22AB, + (q31_t)0xA34BDF20, (q31_t)0xA8060D08, (q31_t)0xA306A9C7, + (q31_t)0xA84F2DA9, (q31_t)0xA2C1ADC9, (q31_t)0xA8988463, + (q31_t)0xA27CEB4F, (q31_t)0xA8E21106, (q31_t)0xA2386283, + (q31_t)0xA92BD366, (q31_t)0xA1F41391, (q31_t)0xA975CB56, + (q31_t)0xA1AFFEA2, (q31_t)0xA9BFF8A8, (q31_t)0xA16C23E1, + (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAA54F2B9, + (q31_t)0xA0E51D8C, (q31_t)0xAA9FBF1D, (q31_t)0xA0A1F24C, + (q31_t)0xAAEAC02B, (q31_t)0xA05F01E1, (q31_t)0xAB35F5B5, + (q31_t)0xA01C4C72, (q31_t)0xAB815F8C, (q31_t)0x9FD9D22A, + (q31_t)0xABCCFD82, (q31_t)0x9F979331, (q31_t)0xAC18CF68, + (q31_t)0x9F558FB0, (q31_t)0xAC64D510, (q31_t)0x9F13C7D0, + (q31_t)0xACB10E4A, (q31_t)0x9ED23BB9, (q31_t)0xACFD7AE8, + (q31_t)0x9E90EB94, (q31_t)0xAD4A1ABA, (q31_t)0x9E4FD789, + (q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xADE3F33E, + (q31_t)0x9DCE6462, (q31_t)0xAE312B91, (q31_t)0x9D8E0596, + (q31_t)0xAE7E965B, (q31_t)0x9D4DE384, (q31_t)0xAECC336B, + (q31_t)0x9D0DFE53, (q31_t)0xAF1A0293, (q31_t)0x9CCE562B, + (q31_t)0xAF6803A1, (q31_t)0x9C8EEB33, (q31_t)0xAFB63667, + (q31_t)0x9C4FBD92, (q31_t)0xB0049AB2, (q31_t)0x9C10CD70, + (q31_t)0xB0533055, (q31_t)0x9BD21AF2, (q31_t)0xB0A1F71C, + (q31_t)0x9B93A640, (q31_t)0xB0F0EEDA, (q31_t)0x9B556F80, + (q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB18F7070, + (q31_t)0x9AD9BC71, (q31_t)0xB1DEF9E8, (q31_t)0x9A9C406D, + (q31_t)0xB22EB392, (q31_t)0x9A5F02F5, (q31_t)0xB27E9D3B, + (q31_t)0x9A22042C, (q31_t)0xB2CEB6B5, (q31_t)0x99E5443A, + (q31_t)0xB31EFFCB, (q31_t)0x99A8C344, (q31_t)0xB36F784E, + (q31_t)0x996C816F, (q31_t)0xB3C0200C, (q31_t)0x99307EE0, + (q31_t)0xB410F6D2, (q31_t)0x98F4BBBC, (q31_t)0xB461FC70, + (q31_t)0x98B93828, (q31_t)0xB4B330B2, (q31_t)0x987DF449, + (q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB556245E, + (q31_t)0x98082C3B, (q31_t)0xB5A7E362, (q31_t)0x97CDA855, + (q31_t)0xB5F9D042, (q31_t)0x979364B5, (q31_t)0xB64BEACC, + (q31_t)0x9759617E, (q31_t)0xB69E32CD, (q31_t)0x971F9ED6, + (q31_t)0xB6F0A811, (q31_t)0x96E61CDF, (q31_t)0xB7434A67, + (q31_t)0x96ACDBBD, (q31_t)0xB796199B, (q31_t)0x9673DB94, + (q31_t)0xB7E9157A, (q31_t)0x963B1C85, (q31_t)0xB83C3DD1, + (q31_t)0x96029EB5, (q31_t)0xB88F926C, (q31_t)0x95CA6246, + (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xB936BFA3, + (q31_t)0x955AAE17, (q31_t)0xB98A97D8, (q31_t)0x9523369B, + (q31_t)0xB9DE9B83, (q31_t)0x94EC010B, (q31_t)0xBA32CA70, + (q31_t)0x94B50D87, (q31_t)0xBA87246C, (q31_t)0x947E5C32, + (q31_t)0xBADBA943, (q31_t)0x9447ED2F, (q31_t)0xBB3058C0, + (q31_t)0x9411C09D, (q31_t)0xBB8532AF, (q31_t)0x93DBD69F, + (q31_t)0xBBDA36DC, (q31_t)0x93A62F56, (q31_t)0xBC2F6513, + (q31_t)0x9370CAE4, (q31_t)0xBC84BD1E, (q31_t)0x933BA968, + (q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBD2FE9E1, + (q31_t)0x92D22FD8, (q31_t)0xBD85BE2F, (q31_t)0x929DD805, + (q31_t)0xBDDBBB7F, (q31_t)0x9269C3AC, (q31_t)0xBE31E19B, + (q31_t)0x9235F2EB, (q31_t)0xBE88304F, (q31_t)0x920265E4, + (q31_t)0xBEDEA765, (q31_t)0x91CF1CB6, (q31_t)0xBF3546A8, + (q31_t)0x919C1780, (q31_t)0xBF8C0DE2, (q31_t)0x91695663, + (q31_t)0xBFE2FCDF, (q31_t)0x9136D97D, (q31_t)0xC03A1368, + (q31_t)0x9104A0ED, (q31_t)0xC0915147, (q31_t)0x90D2ACD3, + (q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC1404233, + (q31_t)0x906F927B, (q31_t)0xC197F4D3, (q31_t)0x903E6C7A, + (q31_t)0xC1EFCDF2, (q31_t)0x900D8B69, (q31_t)0xC247CD5A, + (q31_t)0x8FDCEF66, (q31_t)0xC29FF2D4, (q31_t)0x8FAC988E, + (q31_t)0xC2F83E2A, (q31_t)0x8F7C8701, (q31_t)0xC350AF25, + (q31_t)0x8F4CBADB, (q31_t)0xC3A9458F, (q31_t)0x8F1D343A, + (q31_t)0xC4020132, (q31_t)0x8EEDF33B, (q31_t)0xC45AE1D7, + (q31_t)0x8EBEF7FB, (q31_t)0xC4B3E746, (q31_t)0x8E904298, + (q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC5665FA8, + (q31_t)0x8E33A9D9, (q31_t)0xC5BFD22E, (q31_t)0x8E05C6B7, + (q31_t)0xC61968A2, (q31_t)0x8DD829E4, (q31_t)0xC67322CD, + (q31_t)0x8DAAD37B, (q31_t)0xC6CD0079, (q31_t)0x8D7DC399, + (q31_t)0xC727016C, (q31_t)0x8D50FA59, (q31_t)0xC7812571, + (q31_t)0x8D2477D8, (q31_t)0xC7DB6C50, (q31_t)0x8CF83C30, + (q31_t)0xC835D5D0, (q31_t)0x8CCC477D, (q31_t)0xC89061BA, + (q31_t)0x8CA099D9, (q31_t)0xC8EB0FD6, (q31_t)0x8C753361, + (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xC9A0D1C4, + (q31_t)0x8C1F3C5C, (q31_t)0xC9FBE527, (q31_t)0x8BF4AC05, + (q31_t)0xCA5719DB, (q31_t)0x8BCA6342, (q31_t)0xCAB26FA9, + (q31_t)0x8BA0622F, (q31_t)0xCB0DE658, (q31_t)0x8B76A8E4, + (q31_t)0xCB697DB0, (q31_t)0x8B4D377C, (q31_t)0xCBC53578, + (q31_t)0x8B240E10, (q31_t)0xCC210D78, (q31_t)0x8AFB2CBA, + (q31_t)0xCC7D0577, (q31_t)0x8AD29393, (q31_t)0xCCD91D3D, + (q31_t)0x8AAA42B4, (q31_t)0xCD355490, (q31_t)0x8A823A35, + (q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCDEE20FC, + (q31_t)0x8A3302BD, (q31_t)0xCE4AB5A2, (q31_t)0x8A0BD3F5, + (q31_t)0xCEA768F2, (q31_t)0x89E4EDEE, (q31_t)0xCF043AB2, + (q31_t)0x89BE50C3, (q31_t)0xCF612AAA, (q31_t)0x8997FC89, + (q31_t)0xCFBE389F, (q31_t)0x8971F15A, (q31_t)0xD01B6459, + (q31_t)0x894C2F4C, (q31_t)0xD078AD9D, (q31_t)0x8926B677, + (q31_t)0xD0D61433, (q31_t)0x890186F1, (q31_t)0xD13397E1, + (q31_t)0x88DCA0D3, (q31_t)0xD191386D, (q31_t)0x88B80431, + (q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD24CCF38, + (q31_t)0x886FA7C2, (q31_t)0xD2AAC504, (q31_t)0x884BE820, + (q31_t)0xD308D6C6, (q31_t)0x88287255, (q31_t)0xD3670445, + (q31_t)0x88054677, (q31_t)0xD3C54D46, (q31_t)0x87E2649B, + (q31_t)0xD423B190, (q31_t)0x87BFCCD7, (q31_t)0xD48230E8, + (q31_t)0x879D7F40, (q31_t)0xD4E0CB14, (q31_t)0x877B7BEC, + (q31_t)0xD53F7FDA, (q31_t)0x8759C2EF, (q31_t)0xD59E4EFE, + (q31_t)0x8738545E, (q31_t)0xD5FD3847, (q31_t)0x8717304E, + (q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD6BB585D, + (q31_t)0x86D5C802, (q31_t)0xD71A8EB5, (q31_t)0x86B583EE, + (q31_t)0xD779DE46, (q31_t)0x86958AAB, (q31_t)0xD7D946D7, + (q31_t)0x8675DC4E, (q31_t)0xD838C82D, (q31_t)0x865678EA, + (q31_t)0xD898620C, (q31_t)0x86376092, (q31_t)0xD8F81439, + (q31_t)0x86189359, (q31_t)0xD957DE7A, (q31_t)0x85FA1152, + (q31_t)0xD9B7C093, (q31_t)0x85DBDA91, (q31_t)0xDA17BA4A, + (q31_t)0x85BDEF27, (q31_t)0xDA77CB62, (q31_t)0x85A04F28, + (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDB3832CD, + (q31_t)0x8565F1B0, (q31_t)0xDB9888A8, (q31_t)0x8549345C, + (q31_t)0xDBF8F4F8, (q31_t)0x852CC2BA, (q31_t)0xDC597781, + (q31_t)0x85109CDC, (q31_t)0xDCBA1008, (q31_t)0x84F4C2D3, + (q31_t)0xDD1ABE51, (q31_t)0x84D934B0, (q31_t)0xDD7B8220, + (q31_t)0x84BDF285, (q31_t)0xDDDC5B3A, (q31_t)0x84A2FC62, + (q31_t)0xDE3D4963, (q31_t)0x84885257, (q31_t)0xDE9E4C60, + (q31_t)0x846DF476, (q31_t)0xDEFF63F4, (q31_t)0x8453E2CE, + (q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xDFC1CFF2, + (q31_t)0x8420A46B, (q31_t)0xE02323E5, (q31_t)0x840777CF, + (q31_t)0xE0848B7F, (q31_t)0x83EE97AC, (q31_t)0xE0E60684, + (q31_t)0x83D60411, (q31_t)0xE14794B9, (q31_t)0x83BDBD0D, + (q31_t)0xE1A935E1, (q31_t)0x83A5C2B0, (q31_t)0xE20AE9C1, + (q31_t)0x838E1507, (q31_t)0xE26CB01A, (q31_t)0x8376B422, + (q31_t)0xE2CE88B2, (q31_t)0x835FA00E, (q31_t)0xE330734C, + (q31_t)0x8348D8DB, (q31_t)0xE3926FAC, (q31_t)0x83325E97, + (q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE4569CCB, + (q31_t)0x8306510F, (q31_t)0xE4B8CD10, (q31_t)0x82F0BDE8, + (q31_t)0xE51B0E2A, (q31_t)0x82DB77E5, (q31_t)0xE57D5FDA, + (q31_t)0x82C67F13, (q31_t)0xE5DFC1E4, (q31_t)0x82B1D381, + (q31_t)0xE642340D, (q31_t)0x829D753A, (q31_t)0xE6A4B616, + (q31_t)0x8289644A, (q31_t)0xE70747C3, (q31_t)0x8275A0C0, + (q31_t)0xE769E8D8, (q31_t)0x82622AA5, (q31_t)0xE7CC9917, + (q31_t)0x824F0208, (q31_t)0xE82F5844, (q31_t)0x823C26F2, + (q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xE8F50273, + (q31_t)0x8217598F, (q31_t)0xE957ECFB, (q31_t)0x82056758, + (q31_t)0xE9BAE57C, (q31_t)0x81F3C2D7, (q31_t)0xEA1DEBBB, + (q31_t)0x81E26C16, (q31_t)0xEA80FF79, (q31_t)0x81D16320, + (q31_t)0xEAE4207A, (q31_t)0x81C0A801, (q31_t)0xEB474E80, + (q31_t)0x81B03AC1, (q31_t)0xEBAA894E, (q31_t)0x81A01B6C, + (q31_t)0xEC0DD0A8, (q31_t)0x81904A0C, (q31_t)0xEC71244F, + (q31_t)0x8180C6A9, (q31_t)0xECD48406, (q31_t)0x8171914E, + (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xED9B66B2, + (q31_t)0x815410D3, (q31_t)0xEDFEE92B, (q31_t)0x8145C5C6, + (q31_t)0xEE6276BF, (q31_t)0x8137C8E6, (q31_t)0xEEC60F31, + (q31_t)0x812A1A39, (q31_t)0xEF29B243, (q31_t)0x811CB9CA, + (q31_t)0xEF8D5FB8, (q31_t)0x810FA7A0, (q31_t)0xEFF11752, + (q31_t)0x8102E3C3, (q31_t)0xF054D8D4, (q31_t)0x80F66E3C, + (q31_t)0xF0B8A401, (q31_t)0x80EA4712, (q31_t)0xF11C789A, + (q31_t)0x80DE6E4C, (q31_t)0xF1805662, (q31_t)0x80D2E3F1, + (q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF2482C89, + (q31_t)0x80BCBA9C, (q31_t)0xF2AC246D, (q31_t)0x80B21BAF, + (q31_t)0xF310248A, (q31_t)0x80A7CB49, (q31_t)0xF3742CA1, + (q31_t)0x809DC970, (q31_t)0xF3D83C76, (q31_t)0x8094162B, + (q31_t)0xF43C53CA, (q31_t)0x808AB180, (q31_t)0xF4A07260, + (q31_t)0x80819B74, (q31_t)0xF50497FA, (q31_t)0x8078D40D, + (q31_t)0xF568C45A, (q31_t)0x80705B50, (q31_t)0xF5CCF743, + (q31_t)0x80683143, (q31_t)0xF6313076, (q31_t)0x806055EA, + (q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF6F9B4C5, + (q31_t)0x80518B6B, (q31_t)0xF75DFF65, (q31_t)0x804A9C4D, + (q31_t)0xF7C24F58, (q31_t)0x8043FBF6, (q31_t)0xF826A461, + (q31_t)0x803DAA69, (q31_t)0xF88AFE41, (q31_t)0x8037A7AC, + (q31_t)0xF8EF5CBB, (q31_t)0x8031F3C1, (q31_t)0xF953BF90, + (q31_t)0x802C8EAD, (q31_t)0xF9B82683, (q31_t)0x80277872, + (q31_t)0xFA1C9156, (q31_t)0x8022B113, (q31_t)0xFA80FFCB, + (q31_t)0x801E3894, (q31_t)0xFAE571A4, (q31_t)0x801A0EF7, + (q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFBAE5E89, + (q31_t)0x8012A86F, (q31_t)0xFC12D919, (q31_t)0x800F6B88, + (q31_t)0xFC775616, (q31_t)0x800C7D8C, (q31_t)0xFCDBD541, + (q31_t)0x8009DE7D, (q31_t)0xFD40565B, (q31_t)0x80078E5E, + (q31_t)0xFDA4D928, (q31_t)0x80058D2E, (q31_t)0xFE095D69, + (q31_t)0x8003DAF0, (q31_t)0xFE6DE2E0, (q31_t)0x800277A5, + (q31_t)0xFED2694F, (q31_t)0x8001634D, (q31_t)0xFF36F078, + (q31_t)0x80009DE9, (q31_t)0xFF9B781D, (q31_t)0x8000277A +}; + +/** +* \par +* Example code for Q31 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefQ31[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefQ31[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 4096 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to Q31(Fixed point 1.31): +* round(twiddleCoefQ31(i) * pow(2, 31)) +* +*/ +const q31_t twiddleCoef_4096_q31[6144] = +{ + (q31_t)0x7FFFFFFF, (q31_t)0x00000000, (q31_t)0x7FFFF621, + (q31_t)0x003243F5, (q31_t)0x7FFFD885, (q31_t)0x006487E3, + (q31_t)0x7FFFA72C, (q31_t)0x0096CBC1, (q31_t)0x7FFF6216, + (q31_t)0x00C90F88, (q31_t)0x7FFF0942, (q31_t)0x00FB532F, + (q31_t)0x7FFE9CB2, (q31_t)0x012D96B0, (q31_t)0x7FFE1C64, + (q31_t)0x015FDA03, (q31_t)0x7FFD885A, (q31_t)0x01921D1F, + (q31_t)0x7FFCE093, (q31_t)0x01C45FFE, (q31_t)0x7FFC250F, + (q31_t)0x01F6A296, (q31_t)0x7FFB55CE, (q31_t)0x0228E4E1, + (q31_t)0x7FFA72D1, (q31_t)0x025B26D7, (q31_t)0x7FF97C17, + (q31_t)0x028D6870, (q31_t)0x7FF871A1, (q31_t)0x02BFA9A4, + (q31_t)0x7FF7536F, (q31_t)0x02F1EA6B, (q31_t)0x7FF62182, + (q31_t)0x03242ABF, (q31_t)0x7FF4DBD8, (q31_t)0x03566A96, + (q31_t)0x7FF38273, (q31_t)0x0388A9E9, (q31_t)0x7FF21553, + (q31_t)0x03BAE8B1, (q31_t)0x7FF09477, (q31_t)0x03ED26E6, + (q31_t)0x7FEEFFE1, (q31_t)0x041F647F, (q31_t)0x7FED5790, + (q31_t)0x0451A176, (q31_t)0x7FEB9B85, (q31_t)0x0483DDC3, + (q31_t)0x7FE9CBC0, (q31_t)0x04B6195D, (q31_t)0x7FE7E840, + (q31_t)0x04E8543D, (q31_t)0x7FE5F108, (q31_t)0x051A8E5C, + (q31_t)0x7FE3E616, (q31_t)0x054CC7B0, (q31_t)0x7FE1C76B, + (q31_t)0x057F0034, (q31_t)0x7FDF9508, (q31_t)0x05B137DF, + (q31_t)0x7FDD4EEC, (q31_t)0x05E36EA9, (q31_t)0x7FDAF518, + (q31_t)0x0615A48A, (q31_t)0x7FD8878D, (q31_t)0x0647D97C, + (q31_t)0x7FD6064B, (q31_t)0x067A0D75, (q31_t)0x7FD37152, + (q31_t)0x06AC406F, (q31_t)0x7FD0C8A3, (q31_t)0x06DE7261, + (q31_t)0x7FCE0C3E, (q31_t)0x0710A344, (q31_t)0x7FCB3C23, + (q31_t)0x0742D310, (q31_t)0x7FC85853, (q31_t)0x077501BE, + (q31_t)0x7FC560CF, (q31_t)0x07A72F45, (q31_t)0x7FC25596, + (q31_t)0x07D95B9E, (q31_t)0x7FBF36A9, (q31_t)0x080B86C1, + (q31_t)0x7FBC040A, (q31_t)0x083DB0A7, (q31_t)0x7FB8BDB7, + (q31_t)0x086FD947, (q31_t)0x7FB563B2, (q31_t)0x08A2009A, + (q31_t)0x7FB1F5FC, (q31_t)0x08D42698, (q31_t)0x7FAE7494, + (q31_t)0x09064B3A, (q31_t)0x7FAADF7C, (q31_t)0x09386E77, + (q31_t)0x7FA736B4, (q31_t)0x096A9049, (q31_t)0x7FA37A3C, + (q31_t)0x099CB0A7, (q31_t)0x7F9FAA15, (q31_t)0x09CECF89, + (q31_t)0x7F9BC63F, (q31_t)0x0A00ECE8, (q31_t)0x7F97CEBC, + (q31_t)0x0A3308BC, (q31_t)0x7F93C38C, (q31_t)0x0A6522FE, + (q31_t)0x7F8FA4AF, (q31_t)0x0A973BA5, (q31_t)0x7F8B7226, + (q31_t)0x0AC952AA, (q31_t)0x7F872BF3, (q31_t)0x0AFB6805, + (q31_t)0x7F82D214, (q31_t)0x0B2D7BAE, (q31_t)0x7F7E648B, + (q31_t)0x0B5F8D9F, (q31_t)0x7F79E35A, (q31_t)0x0B919DCE, + (q31_t)0x7F754E7F, (q31_t)0x0BC3AC35, (q31_t)0x7F70A5FD, + (q31_t)0x0BF5B8CB, (q31_t)0x7F6BE9D4, (q31_t)0x0C27C389, + (q31_t)0x7F671A04, (q31_t)0x0C59CC67, (q31_t)0x7F62368F, + (q31_t)0x0C8BD35E, (q31_t)0x7F5D3F75, (q31_t)0x0CBDD865, + (q31_t)0x7F5834B6, (q31_t)0x0CEFDB75, (q31_t)0x7F531654, + (q31_t)0x0D21DC87, (q31_t)0x7F4DE450, (q31_t)0x0D53DB92, + (q31_t)0x7F489EAA, (q31_t)0x0D85D88F, (q31_t)0x7F434563, + (q31_t)0x0DB7D376, (q31_t)0x7F3DD87C, (q31_t)0x0DE9CC3F, + (q31_t)0x7F3857F5, (q31_t)0x0E1BC2E3, (q31_t)0x7F32C3D0, + (q31_t)0x0E4DB75B, (q31_t)0x7F2D1C0E, (q31_t)0x0E7FA99D, + (q31_t)0x7F2760AF, (q31_t)0x0EB199A3, (q31_t)0x7F2191B4, + (q31_t)0x0EE38765, (q31_t)0x7F1BAF1E, (q31_t)0x0F1572DC, + (q31_t)0x7F15B8EE, (q31_t)0x0F475BFE, (q31_t)0x7F0FAF24, + (q31_t)0x0F7942C6, (q31_t)0x7F0991C3, (q31_t)0x0FAB272B, + (q31_t)0x7F0360CB, (q31_t)0x0FDD0925, (q31_t)0x7EFD1C3C, + (q31_t)0x100EE8AD, (q31_t)0x7EF6C418, (q31_t)0x1040C5BB, + (q31_t)0x7EF0585F, (q31_t)0x1072A047, (q31_t)0x7EE9D913, + (q31_t)0x10A4784A, (q31_t)0x7EE34635, (q31_t)0x10D64DBC, + (q31_t)0x7EDC9FC6, (q31_t)0x11082096, (q31_t)0x7ED5E5C6, + (q31_t)0x1139F0CE, (q31_t)0x7ECF1837, (q31_t)0x116BBE5F, + (q31_t)0x7EC8371A, (q31_t)0x119D8940, (q31_t)0x7EC1426F, + (q31_t)0x11CF516A, (q31_t)0x7EBA3A39, (q31_t)0x120116D4, + (q31_t)0x7EB31E77, (q31_t)0x1232D978, (q31_t)0x7EABEF2C, + (q31_t)0x1264994E, (q31_t)0x7EA4AC58, (q31_t)0x1296564D, + (q31_t)0x7E9D55FC, (q31_t)0x12C8106E, (q31_t)0x7E95EC19, + (q31_t)0x12F9C7AA, (q31_t)0x7E8E6EB1, (q31_t)0x132B7BF9, + (q31_t)0x7E86DDC5, (q31_t)0x135D2D53, (q31_t)0x7E7F3956, + (q31_t)0x138EDBB0, (q31_t)0x7E778165, (q31_t)0x13C0870A, + (q31_t)0x7E6FB5F3, (q31_t)0x13F22F57, (q31_t)0x7E67D702, + (q31_t)0x1423D492, (q31_t)0x7E5FE493, (q31_t)0x145576B1, + (q31_t)0x7E57DEA6, (q31_t)0x148715AD, (q31_t)0x7E4FC53E, + (q31_t)0x14B8B17F, (q31_t)0x7E47985B, (q31_t)0x14EA4A1F, + (q31_t)0x7E3F57FE, (q31_t)0x151BDF85, (q31_t)0x7E37042A, + (q31_t)0x154D71AA, (q31_t)0x7E2E9CDF, (q31_t)0x157F0086, + (q31_t)0x7E26221E, (q31_t)0x15B08C11, (q31_t)0x7E1D93E9, + (q31_t)0x15E21444, (q31_t)0x7E14F242, (q31_t)0x16139917, + (q31_t)0x7E0C3D29, (q31_t)0x16451A83, (q31_t)0x7E03749F, + (q31_t)0x1676987F, (q31_t)0x7DFA98A7, (q31_t)0x16A81305, + (q31_t)0x7DF1A942, (q31_t)0x16D98A0C, (q31_t)0x7DE8A670, + (q31_t)0x170AFD8D, (q31_t)0x7DDF9034, (q31_t)0x173C6D80, + (q31_t)0x7DD6668E, (q31_t)0x176DD9DE, (q31_t)0x7DCD2981, + (q31_t)0x179F429F, (q31_t)0x7DC3D90D, (q31_t)0x17D0A7BB, + (q31_t)0x7DBA7534, (q31_t)0x1802092C, (q31_t)0x7DB0FDF7, + (q31_t)0x183366E8, (q31_t)0x7DA77359, (q31_t)0x1864C0E9, + (q31_t)0x7D9DD55A, (q31_t)0x18961727, (q31_t)0x7D9423FB, + (q31_t)0x18C7699B, (q31_t)0x7D8A5F3F, (q31_t)0x18F8B83C, + (q31_t)0x7D808727, (q31_t)0x192A0303, (q31_t)0x7D769BB5, + (q31_t)0x195B49E9, (q31_t)0x7D6C9CE9, (q31_t)0x198C8CE6, + (q31_t)0x7D628AC5, (q31_t)0x19BDCBF2, (q31_t)0x7D58654C, + (q31_t)0x19EF0706, (q31_t)0x7D4E2C7E, (q31_t)0x1A203E1B, + (q31_t)0x7D43E05E, (q31_t)0x1A517127, (q31_t)0x7D3980EC, + (q31_t)0x1A82A025, (q31_t)0x7D2F0E2A, (q31_t)0x1AB3CB0C, + (q31_t)0x7D24881A, (q31_t)0x1AE4F1D6, (q31_t)0x7D19EEBE, + (q31_t)0x1B161479, (q31_t)0x7D0F4218, (q31_t)0x1B4732EF, + (q31_t)0x7D048228, (q31_t)0x1B784D30, (q31_t)0x7CF9AEF0, + (q31_t)0x1BA96334, (q31_t)0x7CEEC873, (q31_t)0x1BDA74F5, + (q31_t)0x7CE3CEB1, (q31_t)0x1C0B826A, (q31_t)0x7CD8C1AD, + (q31_t)0x1C3C8B8C, (q31_t)0x7CCDA168, (q31_t)0x1C6D9053, + (q31_t)0x7CC26DE5, (q31_t)0x1C9E90B8, (q31_t)0x7CB72724, + (q31_t)0x1CCF8CB3, (q31_t)0x7CABCD27, (q31_t)0x1D00843C, + (q31_t)0x7CA05FF1, (q31_t)0x1D31774D, (q31_t)0x7C94DF82, + (q31_t)0x1D6265DD, (q31_t)0x7C894BDD, (q31_t)0x1D934FE5, + (q31_t)0x7C7DA504, (q31_t)0x1DC4355D, (q31_t)0x7C71EAF8, + (q31_t)0x1DF5163F, (q31_t)0x7C661DBB, (q31_t)0x1E25F281, + (q31_t)0x7C5A3D4F, (q31_t)0x1E56CA1E, (q31_t)0x7C4E49B6, + (q31_t)0x1E879D0C, (q31_t)0x7C4242F2, (q31_t)0x1EB86B46, + (q31_t)0x7C362904, (q31_t)0x1EE934C2, (q31_t)0x7C29FBEE, + (q31_t)0x1F19F97B, (q31_t)0x7C1DBBB2, (q31_t)0x1F4AB967, + (q31_t)0x7C116853, (q31_t)0x1F7B7480, (q31_t)0x7C0501D1, + (q31_t)0x1FAC2ABF, (q31_t)0x7BF88830, (q31_t)0x1FDCDC1A, + (q31_t)0x7BEBFB70, (q31_t)0x200D888C, (q31_t)0x7BDF5B94, + (q31_t)0x203E300D, (q31_t)0x7BD2A89E, (q31_t)0x206ED295, + (q31_t)0x7BC5E28F, (q31_t)0x209F701C, (q31_t)0x7BB9096A, + (q31_t)0x20D0089B, (q31_t)0x7BAC1D31, (q31_t)0x21009C0B, + (q31_t)0x7B9F1DE5, (q31_t)0x21312A65, (q31_t)0x7B920B89, + (q31_t)0x2161B39F, (q31_t)0x7B84E61E, (q31_t)0x219237B4, + (q31_t)0x7B77ADA8, (q31_t)0x21C2B69C, (q31_t)0x7B6A6227, + (q31_t)0x21F3304E, (q31_t)0x7B5D039D, (q31_t)0x2223A4C5, + (q31_t)0x7B4F920E, (q31_t)0x225413F8, (q31_t)0x7B420D7A, + (q31_t)0x22847DDF, (q31_t)0x7B3475E4, (q31_t)0x22B4E274, + (q31_t)0x7B26CB4F, (q31_t)0x22E541AE, (q31_t)0x7B190DBB, + (q31_t)0x23159B87, (q31_t)0x7B0B3D2C, (q31_t)0x2345EFF7, + (q31_t)0x7AFD59A3, (q31_t)0x23763EF7, (q31_t)0x7AEF6323, + (q31_t)0x23A6887E, (q31_t)0x7AE159AE, (q31_t)0x23D6CC86, + (q31_t)0x7AD33D45, (q31_t)0x24070B07, (q31_t)0x7AC50DEB, + (q31_t)0x243743FA, (q31_t)0x7AB6CBA3, (q31_t)0x24677757, + (q31_t)0x7AA8766E, (q31_t)0x2497A517, (q31_t)0x7A9A0E4F, + (q31_t)0x24C7CD32, (q31_t)0x7A8B9348, (q31_t)0x24F7EFA1, + (q31_t)0x7A7D055B, (q31_t)0x25280C5D, (q31_t)0x7A6E648A, + (q31_t)0x2558235E, (q31_t)0x7A5FB0D8, (q31_t)0x2588349D, + (q31_t)0x7A50EA46, (q31_t)0x25B84012, (q31_t)0x7A4210D8, + (q31_t)0x25E845B5, (q31_t)0x7A33248F, (q31_t)0x26184581, + (q31_t)0x7A24256E, (q31_t)0x26483F6C, (q31_t)0x7A151377, + (q31_t)0x26783370, (q31_t)0x7A05EEAD, (q31_t)0x26A82185, + (q31_t)0x79F6B711, (q31_t)0x26D809A5, (q31_t)0x79E76CA6, + (q31_t)0x2707EBC6, (q31_t)0x79D80F6F, (q31_t)0x2737C7E3, + (q31_t)0x79C89F6D, (q31_t)0x27679DF4, (q31_t)0x79B91CA4, + (q31_t)0x27976DF1, (q31_t)0x79A98715, (q31_t)0x27C737D2, + (q31_t)0x7999DEC3, (q31_t)0x27F6FB92, (q31_t)0x798A23B1, + (q31_t)0x2826B928, (q31_t)0x797A55E0, (q31_t)0x2856708C, + (q31_t)0x796A7554, (q31_t)0x288621B9, (q31_t)0x795A820E, + (q31_t)0x28B5CCA5, (q31_t)0x794A7C11, (q31_t)0x28E5714A, + (q31_t)0x793A6360, (q31_t)0x29150FA1, (q31_t)0x792A37FE, + (q31_t)0x2944A7A2, (q31_t)0x7919F9EB, (q31_t)0x29743945, + (q31_t)0x7909A92C, (q31_t)0x29A3C484, (q31_t)0x78F945C3, + (q31_t)0x29D34958, (q31_t)0x78E8CFB1, (q31_t)0x2A02C7B8, + (q31_t)0x78D846FB, (q31_t)0x2A323F9D, (q31_t)0x78C7ABA1, + (q31_t)0x2A61B101, (q31_t)0x78B6FDA8, (q31_t)0x2A911BDB, + (q31_t)0x78A63D10, (q31_t)0x2AC08025, (q31_t)0x789569DE, + (q31_t)0x2AEFDDD8, (q31_t)0x78848413, (q31_t)0x2B1F34EB, + (q31_t)0x78738BB3, (q31_t)0x2B4E8558, (q31_t)0x786280BF, + (q31_t)0x2B7DCF17, (q31_t)0x7851633B, (q31_t)0x2BAD1221, + (q31_t)0x78403328, (q31_t)0x2BDC4E6F, (q31_t)0x782EF08B, + (q31_t)0x2C0B83F9, (q31_t)0x781D9B64, (q31_t)0x2C3AB2B9, + (q31_t)0x780C33B8, (q31_t)0x2C69DAA6, (q31_t)0x77FAB988, + (q31_t)0x2C98FBBA, (q31_t)0x77E92CD8, (q31_t)0x2CC815ED, + (q31_t)0x77D78DAA, (q31_t)0x2CF72939, (q31_t)0x77C5DC01, + (q31_t)0x2D263595, (q31_t)0x77B417DF, (q31_t)0x2D553AFB, + (q31_t)0x77A24148, (q31_t)0x2D843963, (q31_t)0x7790583D, + (q31_t)0x2DB330C7, (q31_t)0x777E5CC3, (q31_t)0x2DE2211E, + (q31_t)0x776C4EDB, (q31_t)0x2E110A62, (q31_t)0x775A2E88, + (q31_t)0x2E3FEC8B, (q31_t)0x7747FBCE, (q31_t)0x2E6EC792, + (q31_t)0x7735B6AE, (q31_t)0x2E9D9B70, (q31_t)0x77235F2D, + (q31_t)0x2ECC681E, (q31_t)0x7710F54B, (q31_t)0x2EFB2D94, + (q31_t)0x76FE790E, (q31_t)0x2F29EBCC, (q31_t)0x76EBEA77, + (q31_t)0x2F58A2BD, (q31_t)0x76D94988, (q31_t)0x2F875262, + (q31_t)0x76C69646, (q31_t)0x2FB5FAB2, (q31_t)0x76B3D0B3, + (q31_t)0x2FE49BA6, (q31_t)0x76A0F8D2, (q31_t)0x30133538, + (q31_t)0x768E0EA5, (q31_t)0x3041C760, (q31_t)0x767B1230, + (q31_t)0x30705217, (q31_t)0x76680376, (q31_t)0x309ED555, + (q31_t)0x7654E279, (q31_t)0x30CD5114, (q31_t)0x7641AF3C, + (q31_t)0x30FBC54D, (q31_t)0x762E69C3, (q31_t)0x312A31F8, + (q31_t)0x761B1211, (q31_t)0x3158970D, (q31_t)0x7607A827, + (q31_t)0x3186F487, (q31_t)0x75F42C0A, (q31_t)0x31B54A5D, + (q31_t)0x75E09DBD, (q31_t)0x31E39889, (q31_t)0x75CCFD42, + (q31_t)0x3211DF03, (q31_t)0x75B94A9C, (q31_t)0x32401DC5, + (q31_t)0x75A585CF, (q31_t)0x326E54C7, (q31_t)0x7591AEDD, + (q31_t)0x329C8402, (q31_t)0x757DC5CA, (q31_t)0x32CAAB6F, + (q31_t)0x7569CA98, (q31_t)0x32F8CB07, (q31_t)0x7555BD4B, + (q31_t)0x3326E2C2, (q31_t)0x75419DE6, (q31_t)0x3354F29A, + (q31_t)0x752D6C6C, (q31_t)0x3382FA88, (q31_t)0x751928E0, + (q31_t)0x33B0FA84, (q31_t)0x7504D345, (q31_t)0x33DEF287, + (q31_t)0x74F06B9E, (q31_t)0x340CE28A, (q31_t)0x74DBF1EF, + (q31_t)0x343ACA87, (q31_t)0x74C7663A, (q31_t)0x3468AA76, + (q31_t)0x74B2C883, (q31_t)0x3496824F, (q31_t)0x749E18CD, + (q31_t)0x34C4520D, (q31_t)0x7489571B, (q31_t)0x34F219A7, + (q31_t)0x74748371, (q31_t)0x351FD917, (q31_t)0x745F9DD1, + (q31_t)0x354D9056, (q31_t)0x744AA63E, (q31_t)0x357B3F5D, + (q31_t)0x74359CBD, (q31_t)0x35A8E624, (q31_t)0x74208150, + (q31_t)0x35D684A5, (q31_t)0x740B53FA, (q31_t)0x36041AD9, + (q31_t)0x73F614C0, (q31_t)0x3631A8B7, (q31_t)0x73E0C3A3, + (q31_t)0x365F2E3B, (q31_t)0x73CB60A7, (q31_t)0x368CAB5C, + (q31_t)0x73B5EBD0, (q31_t)0x36BA2013, (q31_t)0x73A06522, + (q31_t)0x36E78C5A, (q31_t)0x738ACC9E, (q31_t)0x3714F02A, + (q31_t)0x73752249, (q31_t)0x37424B7A, (q31_t)0x735F6626, + (q31_t)0x376F9E46, (q31_t)0x73499838, (q31_t)0x379CE884, + (q31_t)0x7333B883, (q31_t)0x37CA2A30, (q31_t)0x731DC709, + (q31_t)0x37F76340, (q31_t)0x7307C3D0, (q31_t)0x382493B0, + (q31_t)0x72F1AED8, (q31_t)0x3851BB76, (q31_t)0x72DB8828, + (q31_t)0x387EDA8E, (q31_t)0x72C54FC0, (q31_t)0x38ABF0EF, + (q31_t)0x72AF05A6, (q31_t)0x38D8FE93, (q31_t)0x7298A9DC, + (q31_t)0x39060372, (q31_t)0x72823C66, (q31_t)0x3932FF87, + (q31_t)0x726BBD48, (q31_t)0x395FF2C9, (q31_t)0x72552C84, + (q31_t)0x398CDD32, (q31_t)0x723E8A1F, (q31_t)0x39B9BEBB, + (q31_t)0x7227D61C, (q31_t)0x39E6975D, (q31_t)0x7211107D, + (q31_t)0x3A136712, (q31_t)0x71FA3948, (q31_t)0x3A402DD1, + (q31_t)0x71E3507F, (q31_t)0x3A6CEB95, (q31_t)0x71CC5626, + (q31_t)0x3A99A057, (q31_t)0x71B54A40, (q31_t)0x3AC64C0F, + (q31_t)0x719E2CD2, (q31_t)0x3AF2EEB7, (q31_t)0x7186FDDE, + (q31_t)0x3B1F8847, (q31_t)0x716FBD68, (q31_t)0x3B4C18BA, + (q31_t)0x71586B73, (q31_t)0x3B78A007, (q31_t)0x71410804, + (q31_t)0x3BA51E29, (q31_t)0x7129931E, (q31_t)0x3BD19317, + (q31_t)0x71120CC5, (q31_t)0x3BFDFECD, (q31_t)0x70FA74FB, + (q31_t)0x3C2A6142, (q31_t)0x70E2CBC6, (q31_t)0x3C56BA70, + (q31_t)0x70CB1127, (q31_t)0x3C830A4F, (q31_t)0x70B34524, + (q31_t)0x3CAF50DA, (q31_t)0x709B67C0, (q31_t)0x3CDB8E09, + (q31_t)0x708378FE, (q31_t)0x3D07C1D5, (q31_t)0x706B78E3, + (q31_t)0x3D33EC39, (q31_t)0x70536771, (q31_t)0x3D600D2B, + (q31_t)0x703B44AC, (q31_t)0x3D8C24A7, (q31_t)0x70231099, + (q31_t)0x3DB832A5, (q31_t)0x700ACB3B, (q31_t)0x3DE4371F, + (q31_t)0x6FF27496, (q31_t)0x3E10320D, (q31_t)0x6FDA0CAD, + (q31_t)0x3E3C2369, (q31_t)0x6FC19385, (q31_t)0x3E680B2C, + (q31_t)0x6FA90920, (q31_t)0x3E93E94F, (q31_t)0x6F906D84, + (q31_t)0x3EBFBDCC, (q31_t)0x6F77C0B3, (q31_t)0x3EEB889C, + (q31_t)0x6F5F02B1, (q31_t)0x3F1749B7, (q31_t)0x6F463383, + (q31_t)0x3F430118, (q31_t)0x6F2D532C, (q31_t)0x3F6EAEB8, + (q31_t)0x6F1461AF, (q31_t)0x3F9A528F, (q31_t)0x6EFB5F12, + (q31_t)0x3FC5EC97, (q31_t)0x6EE24B57, (q31_t)0x3FF17CCA, + (q31_t)0x6EC92682, (q31_t)0x401D0320, (q31_t)0x6EAFF098, + (q31_t)0x40487F93, (q31_t)0x6E96A99C, (q31_t)0x4073F21D, + (q31_t)0x6E7D5193, (q31_t)0x409F5AB6, (q31_t)0x6E63E87F, + (q31_t)0x40CAB957, (q31_t)0x6E4A6E65, (q31_t)0x40F60DFB, + (q31_t)0x6E30E349, (q31_t)0x4121589A, (q31_t)0x6E17472F, + (q31_t)0x414C992E, (q31_t)0x6DFD9A1B, (q31_t)0x4177CFB0, + (q31_t)0x6DE3DC11, (q31_t)0x41A2FC1A, (q31_t)0x6DCA0D14, + (q31_t)0x41CE1E64, (q31_t)0x6DB02D29, (q31_t)0x41F93688, + (q31_t)0x6D963C54, (q31_t)0x42244480, (q31_t)0x6D7C3A98, + (q31_t)0x424F4845, (q31_t)0x6D6227FA, (q31_t)0x427A41D0, + (q31_t)0x6D48047E, (q31_t)0x42A5311A, (q31_t)0x6D2DD027, + (q31_t)0x42D0161E, (q31_t)0x6D138AFA, (q31_t)0x42FAF0D4, + (q31_t)0x6CF934FB, (q31_t)0x4325C135, (q31_t)0x6CDECE2E, + (q31_t)0x4350873C, (q31_t)0x6CC45697, (q31_t)0x437B42E1, + (q31_t)0x6CA9CE3A, (q31_t)0x43A5F41E, (q31_t)0x6C8F351C, + (q31_t)0x43D09AEC, (q31_t)0x6C748B3F, (q31_t)0x43FB3745, + (q31_t)0x6C59D0A9, (q31_t)0x4425C923, (q31_t)0x6C3F055D, + (q31_t)0x4450507E, (q31_t)0x6C242960, (q31_t)0x447ACD50, + (q31_t)0x6C093CB6, (q31_t)0x44A53F93, (q31_t)0x6BEE3F62, + (q31_t)0x44CFA73F, (q31_t)0x6BD3316A, (q31_t)0x44FA044F, + (q31_t)0x6BB812D0, (q31_t)0x452456BC, (q31_t)0x6B9CE39B, + (q31_t)0x454E9E80, (q31_t)0x6B81A3CD, (q31_t)0x4578DB93, + (q31_t)0x6B66536A, (q31_t)0x45A30DF0, (q31_t)0x6B4AF278, + (q31_t)0x45CD358F, (q31_t)0x6B2F80FA, (q31_t)0x45F7526B, + (q31_t)0x6B13FEF5, (q31_t)0x4621647C, (q31_t)0x6AF86C6C, + (q31_t)0x464B6BBD, (q31_t)0x6ADCC964, (q31_t)0x46756827, + (q31_t)0x6AC115E1, (q31_t)0x469F59B4, (q31_t)0x6AA551E8, + (q31_t)0x46C9405C, (q31_t)0x6A897D7D, (q31_t)0x46F31C1A, + (q31_t)0x6A6D98A4, (q31_t)0x471CECE6, (q31_t)0x6A51A361, + (q31_t)0x4746B2BC, (q31_t)0x6A359DB9, (q31_t)0x47706D93, + (q31_t)0x6A1987B0, (q31_t)0x479A1D66, (q31_t)0x69FD614A, + (q31_t)0x47C3C22E, (q31_t)0x69E12A8C, (q31_t)0x47ED5BE6, + (q31_t)0x69C4E37A, (q31_t)0x4816EA85, (q31_t)0x69A88C18, + (q31_t)0x48406E07, (q31_t)0x698C246C, (q31_t)0x4869E664, + (q31_t)0x696FAC78, (q31_t)0x48935397, (q31_t)0x69532442, + (q31_t)0x48BCB598, (q31_t)0x69368BCE, (q31_t)0x48E60C62, + (q31_t)0x6919E320, (q31_t)0x490F57EE, (q31_t)0x68FD2A3D, + (q31_t)0x49389836, (q31_t)0x68E06129, (q31_t)0x4961CD32, + (q31_t)0x68C387E9, (q31_t)0x498AF6DE, (q31_t)0x68A69E81, + (q31_t)0x49B41533, (q31_t)0x6889A4F5, (q31_t)0x49DD282A, + (q31_t)0x686C9B4B, (q31_t)0x4A062FBD, (q31_t)0x684F8186, + (q31_t)0x4A2F2BE5, (q31_t)0x683257AA, (q31_t)0x4A581C9D, + (q31_t)0x68151DBE, (q31_t)0x4A8101DE, (q31_t)0x67F7D3C4, + (q31_t)0x4AA9DBA1, (q31_t)0x67DA79C2, (q31_t)0x4AD2A9E1, + (q31_t)0x67BD0FBC, (q31_t)0x4AFB6C97, (q31_t)0x679F95B7, + (q31_t)0x4B2423BD, (q31_t)0x67820BB6, (q31_t)0x4B4CCF4D, + (q31_t)0x676471C0, (q31_t)0x4B756F3F, (q31_t)0x6746C7D7, + (q31_t)0x4B9E038F, (q31_t)0x67290E02, (q31_t)0x4BC68C36, + (q31_t)0x670B4443, (q31_t)0x4BEF092D, (q31_t)0x66ED6AA1, + (q31_t)0x4C177A6E, (q31_t)0x66CF811F, (q31_t)0x4C3FDFF3, + (q31_t)0x66B187C3, (q31_t)0x4C6839B6, (q31_t)0x66937E90, + (q31_t)0x4C9087B1, (q31_t)0x6675658C, (q31_t)0x4CB8C9DD, + (q31_t)0x66573CBB, (q31_t)0x4CE10034, (q31_t)0x66390422, + (q31_t)0x4D092AB0, (q31_t)0x661ABBC5, (q31_t)0x4D31494B, + (q31_t)0x65FC63A9, (q31_t)0x4D595BFE, (q31_t)0x65DDFBD3, + (q31_t)0x4D8162C4, (q31_t)0x65BF8447, (q31_t)0x4DA95D96, + (q31_t)0x65A0FD0B, (q31_t)0x4DD14C6E, (q31_t)0x65826622, + (q31_t)0x4DF92F45, (q31_t)0x6563BF92, (q31_t)0x4E210617, + (q31_t)0x6545095F, (q31_t)0x4E48D0DC, (q31_t)0x6526438E, + (q31_t)0x4E708F8F, (q31_t)0x65076E24, (q31_t)0x4E984229, + (q31_t)0x64E88926, (q31_t)0x4EBFE8A4, (q31_t)0x64C99498, + (q31_t)0x4EE782FA, (q31_t)0x64AA907F, (q31_t)0x4F0F1126, + (q31_t)0x648B7CDF, (q31_t)0x4F369320, (q31_t)0x646C59BF, + (q31_t)0x4F5E08E3, (q31_t)0x644D2722, (q31_t)0x4F857268, + (q31_t)0x642DE50D, (q31_t)0x4FACCFAB, (q31_t)0x640E9385, + (q31_t)0x4FD420A3, (q31_t)0x63EF328F, (q31_t)0x4FFB654D, + (q31_t)0x63CFC230, (q31_t)0x50229DA0, (q31_t)0x63B0426D, + (q31_t)0x5049C999, (q31_t)0x6390B34A, (q31_t)0x5070E92F, + (q31_t)0x637114CC, (q31_t)0x5097FC5E, (q31_t)0x635166F8, + (q31_t)0x50BF031F, (q31_t)0x6331A9D4, (q31_t)0x50E5FD6C, + (q31_t)0x6311DD63, (q31_t)0x510CEB40, (q31_t)0x62F201AC, + (q31_t)0x5133CC94, (q31_t)0x62D216B2, (q31_t)0x515AA162, + (q31_t)0x62B21C7B, (q31_t)0x518169A4, (q31_t)0x6292130C, + (q31_t)0x51A82555, (q31_t)0x6271FA69, (q31_t)0x51CED46E, + (q31_t)0x6251D297, (q31_t)0x51F576E9, (q31_t)0x62319B9D, + (q31_t)0x521C0CC1, (q31_t)0x6211557D, (q31_t)0x524295EF, + (q31_t)0x61F1003E, (q31_t)0x5269126E, (q31_t)0x61D09BE5, + (q31_t)0x528F8237, (q31_t)0x61B02876, (q31_t)0x52B5E545, + (q31_t)0x618FA5F6, (q31_t)0x52DC3B92, (q31_t)0x616F146B, + (q31_t)0x53028517, (q31_t)0x614E73D9, (q31_t)0x5328C1D0, + (q31_t)0x612DC446, (q31_t)0x534EF1B5, (q31_t)0x610D05B7, + (q31_t)0x537514C1, (q31_t)0x60EC3830, (q31_t)0x539B2AEF, + (q31_t)0x60CB5BB6, (q31_t)0x53C13438, (q31_t)0x60AA704F, + (q31_t)0x53E73097, (q31_t)0x60897600, (q31_t)0x540D2005, + (q31_t)0x60686CCE, (q31_t)0x5433027D, (q31_t)0x604754BE, + (q31_t)0x5458D7F9, (q31_t)0x60262DD5, (q31_t)0x547EA073, + (q31_t)0x6004F818, (q31_t)0x54A45BE5, (q31_t)0x5FE3B38D, + (q31_t)0x54CA0A4A, (q31_t)0x5FC26038, (q31_t)0x54EFAB9C, + (q31_t)0x5FA0FE1E, (q31_t)0x55153FD4, (q31_t)0x5F7F8D46, + (q31_t)0x553AC6ED, (q31_t)0x5F5E0DB3, (q31_t)0x556040E2, + (q31_t)0x5F3C7F6B, (q31_t)0x5585ADAC, (q31_t)0x5F1AE273, + (q31_t)0x55AB0D46, (q31_t)0x5EF936D1, (q31_t)0x55D05FAA, + (q31_t)0x5ED77C89, (q31_t)0x55F5A4D2, (q31_t)0x5EB5B3A1, + (q31_t)0x561ADCB8, (q31_t)0x5E93DC1F, (q31_t)0x56400757, + (q31_t)0x5E71F606, (q31_t)0x566524AA, (q31_t)0x5E50015D, + (q31_t)0x568A34A9, (q31_t)0x5E2DFE28, (q31_t)0x56AF3750, + (q31_t)0x5E0BEC6E, (q31_t)0x56D42C99, (q31_t)0x5DE9CC32, + (q31_t)0x56F9147E, (q31_t)0x5DC79D7C, (q31_t)0x571DEEF9, + (q31_t)0x5DA5604E, (q31_t)0x5742BC05, (q31_t)0x5D8314B0, + (q31_t)0x57677B9D, (q31_t)0x5D60BAA6, (q31_t)0x578C2DB9, + (q31_t)0x5D3E5236, (q31_t)0x57B0D256, (q31_t)0x5D1BDB65, + (q31_t)0x57D5696C, (q31_t)0x5CF95638, (q31_t)0x57F9F2F7, + (q31_t)0x5CD6C2B4, (q31_t)0x581E6EF1, (q31_t)0x5CB420DF, + (q31_t)0x5842DD54, (q31_t)0x5C9170BF, (q31_t)0x58673E1B, + (q31_t)0x5C6EB258, (q31_t)0x588B913F, (q31_t)0x5C4BE5B0, + (q31_t)0x58AFD6BC, (q31_t)0x5C290ACC, (q31_t)0x58D40E8C, + (q31_t)0x5C0621B2, (q31_t)0x58F838A9, (q31_t)0x5BE32A67, + (q31_t)0x591C550E, (q31_t)0x5BC024F0, (q31_t)0x594063B4, + (q31_t)0x5B9D1153, (q31_t)0x59646497, (q31_t)0x5B79EF96, + (q31_t)0x598857B1, (q31_t)0x5B56BFBD, (q31_t)0x59AC3CFD, + (q31_t)0x5B3381CE, (q31_t)0x59D01474, (q31_t)0x5B1035CF, + (q31_t)0x59F3DE12, (q31_t)0x5AECDBC4, (q31_t)0x5A1799D0, + (q31_t)0x5AC973B4, (q31_t)0x5A3B47AA, (q31_t)0x5AA5FDA4, + (q31_t)0x5A5EE79A, (q31_t)0x5A82799A, (q31_t)0x5A82799A, + (q31_t)0x5A5EE79A, (q31_t)0x5AA5FDA4, (q31_t)0x5A3B47AA, + (q31_t)0x5AC973B4, (q31_t)0x5A1799D0, (q31_t)0x5AECDBC4, + (q31_t)0x59F3DE12, (q31_t)0x5B1035CF, (q31_t)0x59D01474, + (q31_t)0x5B3381CE, (q31_t)0x59AC3CFD, (q31_t)0x5B56BFBD, + (q31_t)0x598857B1, (q31_t)0x5B79EF96, (q31_t)0x59646497, + (q31_t)0x5B9D1153, (q31_t)0x594063B4, (q31_t)0x5BC024F0, + (q31_t)0x591C550E, (q31_t)0x5BE32A67, (q31_t)0x58F838A9, + (q31_t)0x5C0621B2, (q31_t)0x58D40E8C, (q31_t)0x5C290ACC, + (q31_t)0x58AFD6BC, (q31_t)0x5C4BE5B0, (q31_t)0x588B913F, + (q31_t)0x5C6EB258, (q31_t)0x58673E1B, (q31_t)0x5C9170BF, + (q31_t)0x5842DD54, (q31_t)0x5CB420DF, (q31_t)0x581E6EF1, + (q31_t)0x5CD6C2B4, (q31_t)0x57F9F2F7, (q31_t)0x5CF95638, + (q31_t)0x57D5696C, (q31_t)0x5D1BDB65, (q31_t)0x57B0D256, + (q31_t)0x5D3E5236, (q31_t)0x578C2DB9, (q31_t)0x5D60BAA6, + (q31_t)0x57677B9D, (q31_t)0x5D8314B0, (q31_t)0x5742BC05, + (q31_t)0x5DA5604E, (q31_t)0x571DEEF9, (q31_t)0x5DC79D7C, + (q31_t)0x56F9147E, (q31_t)0x5DE9CC32, (q31_t)0x56D42C99, + (q31_t)0x5E0BEC6E, (q31_t)0x56AF3750, (q31_t)0x5E2DFE28, + (q31_t)0x568A34A9, (q31_t)0x5E50015D, (q31_t)0x566524AA, + (q31_t)0x5E71F606, (q31_t)0x56400757, (q31_t)0x5E93DC1F, + (q31_t)0x561ADCB8, (q31_t)0x5EB5B3A1, (q31_t)0x55F5A4D2, + (q31_t)0x5ED77C89, (q31_t)0x55D05FAA, (q31_t)0x5EF936D1, + (q31_t)0x55AB0D46, (q31_t)0x5F1AE273, (q31_t)0x5585ADAC, + (q31_t)0x5F3C7F6B, (q31_t)0x556040E2, (q31_t)0x5F5E0DB3, + (q31_t)0x553AC6ED, (q31_t)0x5F7F8D46, (q31_t)0x55153FD4, + (q31_t)0x5FA0FE1E, (q31_t)0x54EFAB9C, (q31_t)0x5FC26038, + (q31_t)0x54CA0A4A, (q31_t)0x5FE3B38D, (q31_t)0x54A45BE5, + (q31_t)0x6004F818, (q31_t)0x547EA073, (q31_t)0x60262DD5, + (q31_t)0x5458D7F9, (q31_t)0x604754BE, (q31_t)0x5433027D, + (q31_t)0x60686CCE, (q31_t)0x540D2005, (q31_t)0x60897600, + (q31_t)0x53E73097, (q31_t)0x60AA704F, (q31_t)0x53C13438, + (q31_t)0x60CB5BB6, (q31_t)0x539B2AEF, (q31_t)0x60EC3830, + (q31_t)0x537514C1, (q31_t)0x610D05B7, (q31_t)0x534EF1B5, + (q31_t)0x612DC446, (q31_t)0x5328C1D0, (q31_t)0x614E73D9, + (q31_t)0x53028517, (q31_t)0x616F146B, (q31_t)0x52DC3B92, + (q31_t)0x618FA5F6, (q31_t)0x52B5E545, (q31_t)0x61B02876, + (q31_t)0x528F8237, (q31_t)0x61D09BE5, (q31_t)0x5269126E, + (q31_t)0x61F1003E, (q31_t)0x524295EF, (q31_t)0x6211557D, + (q31_t)0x521C0CC1, (q31_t)0x62319B9D, (q31_t)0x51F576E9, + (q31_t)0x6251D297, (q31_t)0x51CED46E, (q31_t)0x6271FA69, + (q31_t)0x51A82555, (q31_t)0x6292130C, (q31_t)0x518169A4, + (q31_t)0x62B21C7B, (q31_t)0x515AA162, (q31_t)0x62D216B2, + (q31_t)0x5133CC94, (q31_t)0x62F201AC, (q31_t)0x510CEB40, + (q31_t)0x6311DD63, (q31_t)0x50E5FD6C, (q31_t)0x6331A9D4, + (q31_t)0x50BF031F, (q31_t)0x635166F8, (q31_t)0x5097FC5E, + (q31_t)0x637114CC, (q31_t)0x5070E92F, (q31_t)0x6390B34A, + (q31_t)0x5049C999, (q31_t)0x63B0426D, (q31_t)0x50229DA0, + (q31_t)0x63CFC230, (q31_t)0x4FFB654D, (q31_t)0x63EF328F, + (q31_t)0x4FD420A3, (q31_t)0x640E9385, (q31_t)0x4FACCFAB, + (q31_t)0x642DE50D, (q31_t)0x4F857268, (q31_t)0x644D2722, + (q31_t)0x4F5E08E3, (q31_t)0x646C59BF, (q31_t)0x4F369320, + (q31_t)0x648B7CDF, (q31_t)0x4F0F1126, (q31_t)0x64AA907F, + (q31_t)0x4EE782FA, (q31_t)0x64C99498, (q31_t)0x4EBFE8A4, + (q31_t)0x64E88926, (q31_t)0x4E984229, (q31_t)0x65076E24, + (q31_t)0x4E708F8F, (q31_t)0x6526438E, (q31_t)0x4E48D0DC, + (q31_t)0x6545095F, (q31_t)0x4E210617, (q31_t)0x6563BF92, + (q31_t)0x4DF92F45, (q31_t)0x65826622, (q31_t)0x4DD14C6E, + (q31_t)0x65A0FD0B, (q31_t)0x4DA95D96, (q31_t)0x65BF8447, + (q31_t)0x4D8162C4, (q31_t)0x65DDFBD3, (q31_t)0x4D595BFE, + (q31_t)0x65FC63A9, (q31_t)0x4D31494B, (q31_t)0x661ABBC5, + (q31_t)0x4D092AB0, (q31_t)0x66390422, (q31_t)0x4CE10034, + (q31_t)0x66573CBB, (q31_t)0x4CB8C9DD, (q31_t)0x6675658C, + (q31_t)0x4C9087B1, (q31_t)0x66937E90, (q31_t)0x4C6839B6, + (q31_t)0x66B187C3, (q31_t)0x4C3FDFF3, (q31_t)0x66CF811F, + (q31_t)0x4C177A6E, (q31_t)0x66ED6AA1, (q31_t)0x4BEF092D, + (q31_t)0x670B4443, (q31_t)0x4BC68C36, (q31_t)0x67290E02, + (q31_t)0x4B9E038F, (q31_t)0x6746C7D7, (q31_t)0x4B756F3F, + (q31_t)0x676471C0, (q31_t)0x4B4CCF4D, (q31_t)0x67820BB6, + (q31_t)0x4B2423BD, (q31_t)0x679F95B7, (q31_t)0x4AFB6C97, + (q31_t)0x67BD0FBC, (q31_t)0x4AD2A9E1, (q31_t)0x67DA79C2, + (q31_t)0x4AA9DBA1, (q31_t)0x67F7D3C4, (q31_t)0x4A8101DE, + (q31_t)0x68151DBE, (q31_t)0x4A581C9D, (q31_t)0x683257AA, + (q31_t)0x4A2F2BE5, (q31_t)0x684F8186, (q31_t)0x4A062FBD, + (q31_t)0x686C9B4B, (q31_t)0x49DD282A, (q31_t)0x6889A4F5, + (q31_t)0x49B41533, (q31_t)0x68A69E81, (q31_t)0x498AF6DE, + (q31_t)0x68C387E9, (q31_t)0x4961CD32, (q31_t)0x68E06129, + (q31_t)0x49389836, (q31_t)0x68FD2A3D, (q31_t)0x490F57EE, + (q31_t)0x6919E320, (q31_t)0x48E60C62, (q31_t)0x69368BCE, + (q31_t)0x48BCB598, (q31_t)0x69532442, (q31_t)0x48935397, + (q31_t)0x696FAC78, (q31_t)0x4869E664, (q31_t)0x698C246C, + (q31_t)0x48406E07, (q31_t)0x69A88C18, (q31_t)0x4816EA85, + (q31_t)0x69C4E37A, (q31_t)0x47ED5BE6, (q31_t)0x69E12A8C, + (q31_t)0x47C3C22E, (q31_t)0x69FD614A, (q31_t)0x479A1D66, + (q31_t)0x6A1987B0, (q31_t)0x47706D93, (q31_t)0x6A359DB9, + (q31_t)0x4746B2BC, (q31_t)0x6A51A361, (q31_t)0x471CECE6, + (q31_t)0x6A6D98A4, (q31_t)0x46F31C1A, (q31_t)0x6A897D7D, + (q31_t)0x46C9405C, (q31_t)0x6AA551E8, (q31_t)0x469F59B4, + (q31_t)0x6AC115E1, (q31_t)0x46756827, (q31_t)0x6ADCC964, + (q31_t)0x464B6BBD, (q31_t)0x6AF86C6C, (q31_t)0x4621647C, + (q31_t)0x6B13FEF5, (q31_t)0x45F7526B, (q31_t)0x6B2F80FA, + (q31_t)0x45CD358F, (q31_t)0x6B4AF278, (q31_t)0x45A30DF0, + (q31_t)0x6B66536A, (q31_t)0x4578DB93, (q31_t)0x6B81A3CD, + (q31_t)0x454E9E80, (q31_t)0x6B9CE39B, (q31_t)0x452456BC, + (q31_t)0x6BB812D0, (q31_t)0x44FA044F, (q31_t)0x6BD3316A, + (q31_t)0x44CFA73F, (q31_t)0x6BEE3F62, (q31_t)0x44A53F93, + (q31_t)0x6C093CB6, (q31_t)0x447ACD50, (q31_t)0x6C242960, + (q31_t)0x4450507E, (q31_t)0x6C3F055D, (q31_t)0x4425C923, + (q31_t)0x6C59D0A9, (q31_t)0x43FB3745, (q31_t)0x6C748B3F, + (q31_t)0x43D09AEC, (q31_t)0x6C8F351C, (q31_t)0x43A5F41E, + (q31_t)0x6CA9CE3A, (q31_t)0x437B42E1, (q31_t)0x6CC45697, + (q31_t)0x4350873C, (q31_t)0x6CDECE2E, (q31_t)0x4325C135, + (q31_t)0x6CF934FB, (q31_t)0x42FAF0D4, (q31_t)0x6D138AFA, + (q31_t)0x42D0161E, (q31_t)0x6D2DD027, (q31_t)0x42A5311A, + (q31_t)0x6D48047E, (q31_t)0x427A41D0, (q31_t)0x6D6227FA, + (q31_t)0x424F4845, (q31_t)0x6D7C3A98, (q31_t)0x42244480, + (q31_t)0x6D963C54, (q31_t)0x41F93688, (q31_t)0x6DB02D29, + (q31_t)0x41CE1E64, (q31_t)0x6DCA0D14, (q31_t)0x41A2FC1A, + (q31_t)0x6DE3DC11, (q31_t)0x4177CFB0, (q31_t)0x6DFD9A1B, + (q31_t)0x414C992E, (q31_t)0x6E17472F, (q31_t)0x4121589A, + (q31_t)0x6E30E349, (q31_t)0x40F60DFB, (q31_t)0x6E4A6E65, + (q31_t)0x40CAB957, (q31_t)0x6E63E87F, (q31_t)0x409F5AB6, + (q31_t)0x6E7D5193, (q31_t)0x4073F21D, (q31_t)0x6E96A99C, + (q31_t)0x40487F93, (q31_t)0x6EAFF098, (q31_t)0x401D0320, + (q31_t)0x6EC92682, (q31_t)0x3FF17CCA, (q31_t)0x6EE24B57, + (q31_t)0x3FC5EC97, (q31_t)0x6EFB5F12, (q31_t)0x3F9A528F, + (q31_t)0x6F1461AF, (q31_t)0x3F6EAEB8, (q31_t)0x6F2D532C, + (q31_t)0x3F430118, (q31_t)0x6F463383, (q31_t)0x3F1749B7, + (q31_t)0x6F5F02B1, (q31_t)0x3EEB889C, (q31_t)0x6F77C0B3, + (q31_t)0x3EBFBDCC, (q31_t)0x6F906D84, (q31_t)0x3E93E94F, + (q31_t)0x6FA90920, (q31_t)0x3E680B2C, (q31_t)0x6FC19385, + (q31_t)0x3E3C2369, (q31_t)0x6FDA0CAD, (q31_t)0x3E10320D, + (q31_t)0x6FF27496, (q31_t)0x3DE4371F, (q31_t)0x700ACB3B, + (q31_t)0x3DB832A5, (q31_t)0x70231099, (q31_t)0x3D8C24A7, + (q31_t)0x703B44AC, (q31_t)0x3D600D2B, (q31_t)0x70536771, + (q31_t)0x3D33EC39, (q31_t)0x706B78E3, (q31_t)0x3D07C1D5, + (q31_t)0x708378FE, (q31_t)0x3CDB8E09, (q31_t)0x709B67C0, + (q31_t)0x3CAF50DA, (q31_t)0x70B34524, (q31_t)0x3C830A4F, + (q31_t)0x70CB1127, (q31_t)0x3C56BA70, (q31_t)0x70E2CBC6, + (q31_t)0x3C2A6142, (q31_t)0x70FA74FB, (q31_t)0x3BFDFECD, + (q31_t)0x71120CC5, (q31_t)0x3BD19317, (q31_t)0x7129931E, + (q31_t)0x3BA51E29, (q31_t)0x71410804, (q31_t)0x3B78A007, + (q31_t)0x71586B73, (q31_t)0x3B4C18BA, (q31_t)0x716FBD68, + (q31_t)0x3B1F8847, (q31_t)0x7186FDDE, (q31_t)0x3AF2EEB7, + (q31_t)0x719E2CD2, (q31_t)0x3AC64C0F, (q31_t)0x71B54A40, + (q31_t)0x3A99A057, (q31_t)0x71CC5626, (q31_t)0x3A6CEB95, + (q31_t)0x71E3507F, (q31_t)0x3A402DD1, (q31_t)0x71FA3948, + (q31_t)0x3A136712, (q31_t)0x7211107D, (q31_t)0x39E6975D, + (q31_t)0x7227D61C, (q31_t)0x39B9BEBB, (q31_t)0x723E8A1F, + (q31_t)0x398CDD32, (q31_t)0x72552C84, (q31_t)0x395FF2C9, + (q31_t)0x726BBD48, (q31_t)0x3932FF87, (q31_t)0x72823C66, + (q31_t)0x39060372, (q31_t)0x7298A9DC, (q31_t)0x38D8FE93, + (q31_t)0x72AF05A6, (q31_t)0x38ABF0EF, (q31_t)0x72C54FC0, + (q31_t)0x387EDA8E, (q31_t)0x72DB8828, (q31_t)0x3851BB76, + (q31_t)0x72F1AED8, (q31_t)0x382493B0, (q31_t)0x7307C3D0, + (q31_t)0x37F76340, (q31_t)0x731DC709, (q31_t)0x37CA2A30, + (q31_t)0x7333B883, (q31_t)0x379CE884, (q31_t)0x73499838, + (q31_t)0x376F9E46, (q31_t)0x735F6626, (q31_t)0x37424B7A, + (q31_t)0x73752249, (q31_t)0x3714F02A, (q31_t)0x738ACC9E, + (q31_t)0x36E78C5A, (q31_t)0x73A06522, (q31_t)0x36BA2013, + (q31_t)0x73B5EBD0, (q31_t)0x368CAB5C, (q31_t)0x73CB60A7, + (q31_t)0x365F2E3B, (q31_t)0x73E0C3A3, (q31_t)0x3631A8B7, + (q31_t)0x73F614C0, (q31_t)0x36041AD9, (q31_t)0x740B53FA, + (q31_t)0x35D684A5, (q31_t)0x74208150, (q31_t)0x35A8E624, + (q31_t)0x74359CBD, (q31_t)0x357B3F5D, (q31_t)0x744AA63E, + (q31_t)0x354D9056, (q31_t)0x745F9DD1, (q31_t)0x351FD917, + (q31_t)0x74748371, (q31_t)0x34F219A7, (q31_t)0x7489571B, + (q31_t)0x34C4520D, (q31_t)0x749E18CD, (q31_t)0x3496824F, + (q31_t)0x74B2C883, (q31_t)0x3468AA76, (q31_t)0x74C7663A, + (q31_t)0x343ACA87, (q31_t)0x74DBF1EF, (q31_t)0x340CE28A, + (q31_t)0x74F06B9E, (q31_t)0x33DEF287, (q31_t)0x7504D345, + (q31_t)0x33B0FA84, (q31_t)0x751928E0, (q31_t)0x3382FA88, + (q31_t)0x752D6C6C, (q31_t)0x3354F29A, (q31_t)0x75419DE6, + (q31_t)0x3326E2C2, (q31_t)0x7555BD4B, (q31_t)0x32F8CB07, + (q31_t)0x7569CA98, (q31_t)0x32CAAB6F, (q31_t)0x757DC5CA, + (q31_t)0x329C8402, (q31_t)0x7591AEDD, (q31_t)0x326E54C7, + (q31_t)0x75A585CF, (q31_t)0x32401DC5, (q31_t)0x75B94A9C, + (q31_t)0x3211DF03, (q31_t)0x75CCFD42, (q31_t)0x31E39889, + (q31_t)0x75E09DBD, (q31_t)0x31B54A5D, (q31_t)0x75F42C0A, + (q31_t)0x3186F487, (q31_t)0x7607A827, (q31_t)0x3158970D, + (q31_t)0x761B1211, (q31_t)0x312A31F8, (q31_t)0x762E69C3, + (q31_t)0x30FBC54D, (q31_t)0x7641AF3C, (q31_t)0x30CD5114, + (q31_t)0x7654E279, (q31_t)0x309ED555, (q31_t)0x76680376, + (q31_t)0x30705217, (q31_t)0x767B1230, (q31_t)0x3041C760, + (q31_t)0x768E0EA5, (q31_t)0x30133538, (q31_t)0x76A0F8D2, + (q31_t)0x2FE49BA6, (q31_t)0x76B3D0B3, (q31_t)0x2FB5FAB2, + (q31_t)0x76C69646, (q31_t)0x2F875262, (q31_t)0x76D94988, + (q31_t)0x2F58A2BD, (q31_t)0x76EBEA77, (q31_t)0x2F29EBCC, + (q31_t)0x76FE790E, (q31_t)0x2EFB2D94, (q31_t)0x7710F54B, + (q31_t)0x2ECC681E, (q31_t)0x77235F2D, (q31_t)0x2E9D9B70, + (q31_t)0x7735B6AE, (q31_t)0x2E6EC792, (q31_t)0x7747FBCE, + (q31_t)0x2E3FEC8B, (q31_t)0x775A2E88, (q31_t)0x2E110A62, + (q31_t)0x776C4EDB, (q31_t)0x2DE2211E, (q31_t)0x777E5CC3, + (q31_t)0x2DB330C7, (q31_t)0x7790583D, (q31_t)0x2D843963, + (q31_t)0x77A24148, (q31_t)0x2D553AFB, (q31_t)0x77B417DF, + (q31_t)0x2D263595, (q31_t)0x77C5DC01, (q31_t)0x2CF72939, + (q31_t)0x77D78DAA, (q31_t)0x2CC815ED, (q31_t)0x77E92CD8, + (q31_t)0x2C98FBBA, (q31_t)0x77FAB988, (q31_t)0x2C69DAA6, + (q31_t)0x780C33B8, (q31_t)0x2C3AB2B9, (q31_t)0x781D9B64, + (q31_t)0x2C0B83F9, (q31_t)0x782EF08B, (q31_t)0x2BDC4E6F, + (q31_t)0x78403328, (q31_t)0x2BAD1221, (q31_t)0x7851633B, + (q31_t)0x2B7DCF17, (q31_t)0x786280BF, (q31_t)0x2B4E8558, + (q31_t)0x78738BB3, (q31_t)0x2B1F34EB, (q31_t)0x78848413, + (q31_t)0x2AEFDDD8, (q31_t)0x789569DE, (q31_t)0x2AC08025, + (q31_t)0x78A63D10, (q31_t)0x2A911BDB, (q31_t)0x78B6FDA8, + (q31_t)0x2A61B101, (q31_t)0x78C7ABA1, (q31_t)0x2A323F9D, + (q31_t)0x78D846FB, (q31_t)0x2A02C7B8, (q31_t)0x78E8CFB1, + (q31_t)0x29D34958, (q31_t)0x78F945C3, (q31_t)0x29A3C484, + (q31_t)0x7909A92C, (q31_t)0x29743945, (q31_t)0x7919F9EB, + (q31_t)0x2944A7A2, (q31_t)0x792A37FE, (q31_t)0x29150FA1, + (q31_t)0x793A6360, (q31_t)0x28E5714A, (q31_t)0x794A7C11, + (q31_t)0x28B5CCA5, (q31_t)0x795A820E, (q31_t)0x288621B9, + (q31_t)0x796A7554, (q31_t)0x2856708C, (q31_t)0x797A55E0, + (q31_t)0x2826B928, (q31_t)0x798A23B1, (q31_t)0x27F6FB92, + (q31_t)0x7999DEC3, (q31_t)0x27C737D2, (q31_t)0x79A98715, + (q31_t)0x27976DF1, (q31_t)0x79B91CA4, (q31_t)0x27679DF4, + (q31_t)0x79C89F6D, (q31_t)0x2737C7E3, (q31_t)0x79D80F6F, + (q31_t)0x2707EBC6, (q31_t)0x79E76CA6, (q31_t)0x26D809A5, + (q31_t)0x79F6B711, (q31_t)0x26A82185, (q31_t)0x7A05EEAD, + (q31_t)0x26783370, (q31_t)0x7A151377, (q31_t)0x26483F6C, + (q31_t)0x7A24256E, (q31_t)0x26184581, (q31_t)0x7A33248F, + (q31_t)0x25E845B5, (q31_t)0x7A4210D8, (q31_t)0x25B84012, + (q31_t)0x7A50EA46, (q31_t)0x2588349D, (q31_t)0x7A5FB0D8, + (q31_t)0x2558235E, (q31_t)0x7A6E648A, (q31_t)0x25280C5D, + (q31_t)0x7A7D055B, (q31_t)0x24F7EFA1, (q31_t)0x7A8B9348, + (q31_t)0x24C7CD32, (q31_t)0x7A9A0E4F, (q31_t)0x2497A517, + (q31_t)0x7AA8766E, (q31_t)0x24677757, (q31_t)0x7AB6CBA3, + (q31_t)0x243743FA, (q31_t)0x7AC50DEB, (q31_t)0x24070B07, + (q31_t)0x7AD33D45, (q31_t)0x23D6CC86, (q31_t)0x7AE159AE, + (q31_t)0x23A6887E, (q31_t)0x7AEF6323, (q31_t)0x23763EF7, + (q31_t)0x7AFD59A3, (q31_t)0x2345EFF7, (q31_t)0x7B0B3D2C, + (q31_t)0x23159B87, (q31_t)0x7B190DBB, (q31_t)0x22E541AE, + (q31_t)0x7B26CB4F, (q31_t)0x22B4E274, (q31_t)0x7B3475E4, + (q31_t)0x22847DDF, (q31_t)0x7B420D7A, (q31_t)0x225413F8, + (q31_t)0x7B4F920E, (q31_t)0x2223A4C5, (q31_t)0x7B5D039D, + (q31_t)0x21F3304E, (q31_t)0x7B6A6227, (q31_t)0x21C2B69C, + (q31_t)0x7B77ADA8, (q31_t)0x219237B4, (q31_t)0x7B84E61E, + (q31_t)0x2161B39F, (q31_t)0x7B920B89, (q31_t)0x21312A65, + (q31_t)0x7B9F1DE5, (q31_t)0x21009C0B, (q31_t)0x7BAC1D31, + (q31_t)0x20D0089B, (q31_t)0x7BB9096A, (q31_t)0x209F701C, + (q31_t)0x7BC5E28F, (q31_t)0x206ED295, (q31_t)0x7BD2A89E, + (q31_t)0x203E300D, (q31_t)0x7BDF5B94, (q31_t)0x200D888C, + (q31_t)0x7BEBFB70, (q31_t)0x1FDCDC1A, (q31_t)0x7BF88830, + (q31_t)0x1FAC2ABF, (q31_t)0x7C0501D1, (q31_t)0x1F7B7480, + (q31_t)0x7C116853, (q31_t)0x1F4AB967, (q31_t)0x7C1DBBB2, + (q31_t)0x1F19F97B, (q31_t)0x7C29FBEE, (q31_t)0x1EE934C2, + (q31_t)0x7C362904, (q31_t)0x1EB86B46, (q31_t)0x7C4242F2, + (q31_t)0x1E879D0C, (q31_t)0x7C4E49B6, (q31_t)0x1E56CA1E, + (q31_t)0x7C5A3D4F, (q31_t)0x1E25F281, (q31_t)0x7C661DBB, + (q31_t)0x1DF5163F, (q31_t)0x7C71EAF8, (q31_t)0x1DC4355D, + (q31_t)0x7C7DA504, (q31_t)0x1D934FE5, (q31_t)0x7C894BDD, + (q31_t)0x1D6265DD, (q31_t)0x7C94DF82, (q31_t)0x1D31774D, + (q31_t)0x7CA05FF1, (q31_t)0x1D00843C, (q31_t)0x7CABCD27, + (q31_t)0x1CCF8CB3, (q31_t)0x7CB72724, (q31_t)0x1C9E90B8, + (q31_t)0x7CC26DE5, (q31_t)0x1C6D9053, (q31_t)0x7CCDA168, + (q31_t)0x1C3C8B8C, (q31_t)0x7CD8C1AD, (q31_t)0x1C0B826A, + (q31_t)0x7CE3CEB1, (q31_t)0x1BDA74F5, (q31_t)0x7CEEC873, + (q31_t)0x1BA96334, (q31_t)0x7CF9AEF0, (q31_t)0x1B784D30, + (q31_t)0x7D048228, (q31_t)0x1B4732EF, (q31_t)0x7D0F4218, + (q31_t)0x1B161479, (q31_t)0x7D19EEBE, (q31_t)0x1AE4F1D6, + (q31_t)0x7D24881A, (q31_t)0x1AB3CB0C, (q31_t)0x7D2F0E2A, + (q31_t)0x1A82A025, (q31_t)0x7D3980EC, (q31_t)0x1A517127, + (q31_t)0x7D43E05E, (q31_t)0x1A203E1B, (q31_t)0x7D4E2C7E, + (q31_t)0x19EF0706, (q31_t)0x7D58654C, (q31_t)0x19BDCBF2, + (q31_t)0x7D628AC5, (q31_t)0x198C8CE6, (q31_t)0x7D6C9CE9, + (q31_t)0x195B49E9, (q31_t)0x7D769BB5, (q31_t)0x192A0303, + (q31_t)0x7D808727, (q31_t)0x18F8B83C, (q31_t)0x7D8A5F3F, + (q31_t)0x18C7699B, (q31_t)0x7D9423FB, (q31_t)0x18961727, + (q31_t)0x7D9DD55A, (q31_t)0x1864C0E9, (q31_t)0x7DA77359, + (q31_t)0x183366E8, (q31_t)0x7DB0FDF7, (q31_t)0x1802092C, + (q31_t)0x7DBA7534, (q31_t)0x17D0A7BB, (q31_t)0x7DC3D90D, + (q31_t)0x179F429F, (q31_t)0x7DCD2981, (q31_t)0x176DD9DE, + (q31_t)0x7DD6668E, (q31_t)0x173C6D80, (q31_t)0x7DDF9034, + (q31_t)0x170AFD8D, (q31_t)0x7DE8A670, (q31_t)0x16D98A0C, + (q31_t)0x7DF1A942, (q31_t)0x16A81305, (q31_t)0x7DFA98A7, + (q31_t)0x1676987F, (q31_t)0x7E03749F, (q31_t)0x16451A83, + (q31_t)0x7E0C3D29, (q31_t)0x16139917, (q31_t)0x7E14F242, + (q31_t)0x15E21444, (q31_t)0x7E1D93E9, (q31_t)0x15B08C11, + (q31_t)0x7E26221E, (q31_t)0x157F0086, (q31_t)0x7E2E9CDF, + (q31_t)0x154D71AA, (q31_t)0x7E37042A, (q31_t)0x151BDF85, + (q31_t)0x7E3F57FE, (q31_t)0x14EA4A1F, (q31_t)0x7E47985B, + (q31_t)0x14B8B17F, (q31_t)0x7E4FC53E, (q31_t)0x148715AD, + (q31_t)0x7E57DEA6, (q31_t)0x145576B1, (q31_t)0x7E5FE493, + (q31_t)0x1423D492, (q31_t)0x7E67D702, (q31_t)0x13F22F57, + (q31_t)0x7E6FB5F3, (q31_t)0x13C0870A, (q31_t)0x7E778165, + (q31_t)0x138EDBB0, (q31_t)0x7E7F3956, (q31_t)0x135D2D53, + (q31_t)0x7E86DDC5, (q31_t)0x132B7BF9, (q31_t)0x7E8E6EB1, + (q31_t)0x12F9C7AA, (q31_t)0x7E95EC19, (q31_t)0x12C8106E, + (q31_t)0x7E9D55FC, (q31_t)0x1296564D, (q31_t)0x7EA4AC58, + (q31_t)0x1264994E, (q31_t)0x7EABEF2C, (q31_t)0x1232D978, + (q31_t)0x7EB31E77, (q31_t)0x120116D4, (q31_t)0x7EBA3A39, + (q31_t)0x11CF516A, (q31_t)0x7EC1426F, (q31_t)0x119D8940, + (q31_t)0x7EC8371A, (q31_t)0x116BBE5F, (q31_t)0x7ECF1837, + (q31_t)0x1139F0CE, (q31_t)0x7ED5E5C6, (q31_t)0x11082096, + (q31_t)0x7EDC9FC6, (q31_t)0x10D64DBC, (q31_t)0x7EE34635, + (q31_t)0x10A4784A, (q31_t)0x7EE9D913, (q31_t)0x1072A047, + (q31_t)0x7EF0585F, (q31_t)0x1040C5BB, (q31_t)0x7EF6C418, + (q31_t)0x100EE8AD, (q31_t)0x7EFD1C3C, (q31_t)0x0FDD0925, + (q31_t)0x7F0360CB, (q31_t)0x0FAB272B, (q31_t)0x7F0991C3, + (q31_t)0x0F7942C6, (q31_t)0x7F0FAF24, (q31_t)0x0F475BFE, + (q31_t)0x7F15B8EE, (q31_t)0x0F1572DC, (q31_t)0x7F1BAF1E, + (q31_t)0x0EE38765, (q31_t)0x7F2191B4, (q31_t)0x0EB199A3, + (q31_t)0x7F2760AF, (q31_t)0x0E7FA99D, (q31_t)0x7F2D1C0E, + (q31_t)0x0E4DB75B, (q31_t)0x7F32C3D0, (q31_t)0x0E1BC2E3, + (q31_t)0x7F3857F5, (q31_t)0x0DE9CC3F, (q31_t)0x7F3DD87C, + (q31_t)0x0DB7D376, (q31_t)0x7F434563, (q31_t)0x0D85D88F, + (q31_t)0x7F489EAA, (q31_t)0x0D53DB92, (q31_t)0x7F4DE450, + (q31_t)0x0D21DC87, (q31_t)0x7F531654, (q31_t)0x0CEFDB75, + (q31_t)0x7F5834B6, (q31_t)0x0CBDD865, (q31_t)0x7F5D3F75, + (q31_t)0x0C8BD35E, (q31_t)0x7F62368F, (q31_t)0x0C59CC67, + (q31_t)0x7F671A04, (q31_t)0x0C27C389, (q31_t)0x7F6BE9D4, + (q31_t)0x0BF5B8CB, (q31_t)0x7F70A5FD, (q31_t)0x0BC3AC35, + (q31_t)0x7F754E7F, (q31_t)0x0B919DCE, (q31_t)0x7F79E35A, + (q31_t)0x0B5F8D9F, (q31_t)0x7F7E648B, (q31_t)0x0B2D7BAE, + (q31_t)0x7F82D214, (q31_t)0x0AFB6805, (q31_t)0x7F872BF3, + (q31_t)0x0AC952AA, (q31_t)0x7F8B7226, (q31_t)0x0A973BA5, + (q31_t)0x7F8FA4AF, (q31_t)0x0A6522FE, (q31_t)0x7F93C38C, + (q31_t)0x0A3308BC, (q31_t)0x7F97CEBC, (q31_t)0x0A00ECE8, + (q31_t)0x7F9BC63F, (q31_t)0x09CECF89, (q31_t)0x7F9FAA15, + (q31_t)0x099CB0A7, (q31_t)0x7FA37A3C, (q31_t)0x096A9049, + (q31_t)0x7FA736B4, (q31_t)0x09386E77, (q31_t)0x7FAADF7C, + (q31_t)0x09064B3A, (q31_t)0x7FAE7494, (q31_t)0x08D42698, + (q31_t)0x7FB1F5FC, (q31_t)0x08A2009A, (q31_t)0x7FB563B2, + (q31_t)0x086FD947, (q31_t)0x7FB8BDB7, (q31_t)0x083DB0A7, + (q31_t)0x7FBC040A, (q31_t)0x080B86C1, (q31_t)0x7FBF36A9, + (q31_t)0x07D95B9E, (q31_t)0x7FC25596, (q31_t)0x07A72F45, + (q31_t)0x7FC560CF, (q31_t)0x077501BE, (q31_t)0x7FC85853, + (q31_t)0x0742D310, (q31_t)0x7FCB3C23, (q31_t)0x0710A344, + (q31_t)0x7FCE0C3E, (q31_t)0x06DE7261, (q31_t)0x7FD0C8A3, + (q31_t)0x06AC406F, (q31_t)0x7FD37152, (q31_t)0x067A0D75, + (q31_t)0x7FD6064B, (q31_t)0x0647D97C, (q31_t)0x7FD8878D, + (q31_t)0x0615A48A, (q31_t)0x7FDAF518, (q31_t)0x05E36EA9, + (q31_t)0x7FDD4EEC, (q31_t)0x05B137DF, (q31_t)0x7FDF9508, + (q31_t)0x057F0034, (q31_t)0x7FE1C76B, (q31_t)0x054CC7B0, + (q31_t)0x7FE3E616, (q31_t)0x051A8E5C, (q31_t)0x7FE5F108, + (q31_t)0x04E8543D, (q31_t)0x7FE7E840, (q31_t)0x04B6195D, + (q31_t)0x7FE9CBC0, (q31_t)0x0483DDC3, (q31_t)0x7FEB9B85, + (q31_t)0x0451A176, (q31_t)0x7FED5790, (q31_t)0x041F647F, + (q31_t)0x7FEEFFE1, (q31_t)0x03ED26E6, (q31_t)0x7FF09477, + (q31_t)0x03BAE8B1, (q31_t)0x7FF21553, (q31_t)0x0388A9E9, + (q31_t)0x7FF38273, (q31_t)0x03566A96, (q31_t)0x7FF4DBD8, + (q31_t)0x03242ABF, (q31_t)0x7FF62182, (q31_t)0x02F1EA6B, + (q31_t)0x7FF7536F, (q31_t)0x02BFA9A4, (q31_t)0x7FF871A1, + (q31_t)0x028D6870, (q31_t)0x7FF97C17, (q31_t)0x025B26D7, + (q31_t)0x7FFA72D1, (q31_t)0x0228E4E1, (q31_t)0x7FFB55CE, + (q31_t)0x01F6A296, (q31_t)0x7FFC250F, (q31_t)0x01C45FFE, + (q31_t)0x7FFCE093, (q31_t)0x01921D1F, (q31_t)0x7FFD885A, + (q31_t)0x015FDA03, (q31_t)0x7FFE1C64, (q31_t)0x012D96B0, + (q31_t)0x7FFE9CB2, (q31_t)0x00FB532F, (q31_t)0x7FFF0942, + (q31_t)0x00C90F88, (q31_t)0x7FFF6216, (q31_t)0x0096CBC1, + (q31_t)0x7FFFA72C, (q31_t)0x006487E3, (q31_t)0x7FFFD885, + (q31_t)0x003243F5, (q31_t)0x7FFFF621, (q31_t)0x00000000, + (q31_t)0x7FFFFFFF, (q31_t)0xFFCDBC0A, (q31_t)0x7FFFF621, + (q31_t)0xFF9B781D, (q31_t)0x7FFFD885, (q31_t)0xFF69343E, + (q31_t)0x7FFFA72C, (q31_t)0xFF36F078, (q31_t)0x7FFF6216, + (q31_t)0xFF04ACD0, (q31_t)0x7FFF0942, (q31_t)0xFED2694F, + (q31_t)0x7FFE9CB2, (q31_t)0xFEA025FC, (q31_t)0x7FFE1C64, + (q31_t)0xFE6DE2E0, (q31_t)0x7FFD885A, (q31_t)0xFE3BA001, + (q31_t)0x7FFCE093, (q31_t)0xFE095D69, (q31_t)0x7FFC250F, + (q31_t)0xFDD71B1E, (q31_t)0x7FFB55CE, (q31_t)0xFDA4D928, + (q31_t)0x7FFA72D1, (q31_t)0xFD72978F, (q31_t)0x7FF97C17, + (q31_t)0xFD40565B, (q31_t)0x7FF871A1, (q31_t)0xFD0E1594, + (q31_t)0x7FF7536F, (q31_t)0xFCDBD541, (q31_t)0x7FF62182, + (q31_t)0xFCA99569, (q31_t)0x7FF4DBD8, (q31_t)0xFC775616, + (q31_t)0x7FF38273, (q31_t)0xFC45174E, (q31_t)0x7FF21553, + (q31_t)0xFC12D919, (q31_t)0x7FF09477, (q31_t)0xFBE09B80, + (q31_t)0x7FEEFFE1, (q31_t)0xFBAE5E89, (q31_t)0x7FED5790, + (q31_t)0xFB7C223C, (q31_t)0x7FEB9B85, (q31_t)0xFB49E6A2, + (q31_t)0x7FE9CBC0, (q31_t)0xFB17ABC2, (q31_t)0x7FE7E840, + (q31_t)0xFAE571A4, (q31_t)0x7FE5F108, (q31_t)0xFAB3384F, + (q31_t)0x7FE3E616, (q31_t)0xFA80FFCB, (q31_t)0x7FE1C76B, + (q31_t)0xFA4EC820, (q31_t)0x7FDF9508, (q31_t)0xFA1C9156, + (q31_t)0x7FDD4EEC, (q31_t)0xF9EA5B75, (q31_t)0x7FDAF518, + (q31_t)0xF9B82683, (q31_t)0x7FD8878D, (q31_t)0xF985F28A, + (q31_t)0x7FD6064B, (q31_t)0xF953BF90, (q31_t)0x7FD37152, + (q31_t)0xF9218D9E, (q31_t)0x7FD0C8A3, (q31_t)0xF8EF5CBB, + (q31_t)0x7FCE0C3E, (q31_t)0xF8BD2CEF, (q31_t)0x7FCB3C23, + (q31_t)0xF88AFE41, (q31_t)0x7FC85853, (q31_t)0xF858D0BA, + (q31_t)0x7FC560CF, (q31_t)0xF826A461, (q31_t)0x7FC25596, + (q31_t)0xF7F4793E, (q31_t)0x7FBF36A9, (q31_t)0xF7C24F58, + (q31_t)0x7FBC040A, (q31_t)0xF79026B8, (q31_t)0x7FB8BDB7, + (q31_t)0xF75DFF65, (q31_t)0x7FB563B2, (q31_t)0xF72BD967, + (q31_t)0x7FB1F5FC, (q31_t)0xF6F9B4C5, (q31_t)0x7FAE7494, + (q31_t)0xF6C79188, (q31_t)0x7FAADF7C, (q31_t)0xF6956FB6, + (q31_t)0x7FA736B4, (q31_t)0xF6634F58, (q31_t)0x7FA37A3C, + (q31_t)0xF6313076, (q31_t)0x7F9FAA15, (q31_t)0xF5FF1317, + (q31_t)0x7F9BC63F, (q31_t)0xF5CCF743, (q31_t)0x7F97CEBC, + (q31_t)0xF59ADD01, (q31_t)0x7F93C38C, (q31_t)0xF568C45A, + (q31_t)0x7F8FA4AF, (q31_t)0xF536AD55, (q31_t)0x7F8B7226, + (q31_t)0xF50497FA, (q31_t)0x7F872BF3, (q31_t)0xF4D28451, + (q31_t)0x7F82D214, (q31_t)0xF4A07260, (q31_t)0x7F7E648B, + (q31_t)0xF46E6231, (q31_t)0x7F79E35A, (q31_t)0xF43C53CA, + (q31_t)0x7F754E7F, (q31_t)0xF40A4734, (q31_t)0x7F70A5FD, + (q31_t)0xF3D83C76, (q31_t)0x7F6BE9D4, (q31_t)0xF3A63398, + (q31_t)0x7F671A04, (q31_t)0xF3742CA1, (q31_t)0x7F62368F, + (q31_t)0xF342279A, (q31_t)0x7F5D3F75, (q31_t)0xF310248A, + (q31_t)0x7F5834B6, (q31_t)0xF2DE2378, (q31_t)0x7F531654, + (q31_t)0xF2AC246D, (q31_t)0x7F4DE450, (q31_t)0xF27A2770, + (q31_t)0x7F489EAA, (q31_t)0xF2482C89, (q31_t)0x7F434563, + (q31_t)0xF21633C0, (q31_t)0x7F3DD87C, (q31_t)0xF1E43D1C, + (q31_t)0x7F3857F5, (q31_t)0xF1B248A5, (q31_t)0x7F32C3D0, + (q31_t)0xF1805662, (q31_t)0x7F2D1C0E, (q31_t)0xF14E665C, + (q31_t)0x7F2760AF, (q31_t)0xF11C789A, (q31_t)0x7F2191B4, + (q31_t)0xF0EA8D23, (q31_t)0x7F1BAF1E, (q31_t)0xF0B8A401, + (q31_t)0x7F15B8EE, (q31_t)0xF086BD39, (q31_t)0x7F0FAF24, + (q31_t)0xF054D8D4, (q31_t)0x7F0991C3, (q31_t)0xF022F6DA, + (q31_t)0x7F0360CB, (q31_t)0xEFF11752, (q31_t)0x7EFD1C3C, + (q31_t)0xEFBF3A44, (q31_t)0x7EF6C418, (q31_t)0xEF8D5FB8, + (q31_t)0x7EF0585F, (q31_t)0xEF5B87B5, (q31_t)0x7EE9D913, + (q31_t)0xEF29B243, (q31_t)0x7EE34635, (q31_t)0xEEF7DF6A, + (q31_t)0x7EDC9FC6, (q31_t)0xEEC60F31, (q31_t)0x7ED5E5C6, + (q31_t)0xEE9441A0, (q31_t)0x7ECF1837, (q31_t)0xEE6276BF, + (q31_t)0x7EC8371A, (q31_t)0xEE30AE95, (q31_t)0x7EC1426F, + (q31_t)0xEDFEE92B, (q31_t)0x7EBA3A39, (q31_t)0xEDCD2687, + (q31_t)0x7EB31E77, (q31_t)0xED9B66B2, (q31_t)0x7EABEF2C, + (q31_t)0xED69A9B2, (q31_t)0x7EA4AC58, (q31_t)0xED37EF91, + (q31_t)0x7E9D55FC, (q31_t)0xED063855, (q31_t)0x7E95EC19, + (q31_t)0xECD48406, (q31_t)0x7E8E6EB1, (q31_t)0xECA2D2AC, + (q31_t)0x7E86DDC5, (q31_t)0xEC71244F, (q31_t)0x7E7F3956, + (q31_t)0xEC3F78F5, (q31_t)0x7E778165, (q31_t)0xEC0DD0A8, + (q31_t)0x7E6FB5F3, (q31_t)0xEBDC2B6D, (q31_t)0x7E67D702, + (q31_t)0xEBAA894E, (q31_t)0x7E5FE493, (q31_t)0xEB78EA52, + (q31_t)0x7E57DEA6, (q31_t)0xEB474E80, (q31_t)0x7E4FC53E, + (q31_t)0xEB15B5E0, (q31_t)0x7E47985B, (q31_t)0xEAE4207A, + (q31_t)0x7E3F57FE, (q31_t)0xEAB28E55, (q31_t)0x7E37042A, + (q31_t)0xEA80FF79, (q31_t)0x7E2E9CDF, (q31_t)0xEA4F73EE, + (q31_t)0x7E26221E, (q31_t)0xEA1DEBBB, (q31_t)0x7E1D93E9, + (q31_t)0xE9EC66E8, (q31_t)0x7E14F242, (q31_t)0xE9BAE57C, + (q31_t)0x7E0C3D29, (q31_t)0xE9896780, (q31_t)0x7E03749F, + (q31_t)0xE957ECFB, (q31_t)0x7DFA98A7, (q31_t)0xE92675F4, + (q31_t)0x7DF1A942, (q31_t)0xE8F50273, (q31_t)0x7DE8A670, + (q31_t)0xE8C3927F, (q31_t)0x7DDF9034, (q31_t)0xE8922621, + (q31_t)0x7DD6668E, (q31_t)0xE860BD60, (q31_t)0x7DCD2981, + (q31_t)0xE82F5844, (q31_t)0x7DC3D90D, (q31_t)0xE7FDF6D3, + (q31_t)0x7DBA7534, (q31_t)0xE7CC9917, (q31_t)0x7DB0FDF7, + (q31_t)0xE79B3F16, (q31_t)0x7DA77359, (q31_t)0xE769E8D8, + (q31_t)0x7D9DD55A, (q31_t)0xE7389664, (q31_t)0x7D9423FB, + (q31_t)0xE70747C3, (q31_t)0x7D8A5F3F, (q31_t)0xE6D5FCFC, + (q31_t)0x7D808727, (q31_t)0xE6A4B616, (q31_t)0x7D769BB5, + (q31_t)0xE6737319, (q31_t)0x7D6C9CE9, (q31_t)0xE642340D, + (q31_t)0x7D628AC5, (q31_t)0xE610F8F9, (q31_t)0x7D58654C, + (q31_t)0xE5DFC1E4, (q31_t)0x7D4E2C7E, (q31_t)0xE5AE8ED8, + (q31_t)0x7D43E05E, (q31_t)0xE57D5FDA, (q31_t)0x7D3980EC, + (q31_t)0xE54C34F3, (q31_t)0x7D2F0E2A, (q31_t)0xE51B0E2A, + (q31_t)0x7D24881A, (q31_t)0xE4E9EB86, (q31_t)0x7D19EEBE, + (q31_t)0xE4B8CD10, (q31_t)0x7D0F4218, (q31_t)0xE487B2CF, + (q31_t)0x7D048228, (q31_t)0xE4569CCB, (q31_t)0x7CF9AEF0, + (q31_t)0xE4258B0A, (q31_t)0x7CEEC873, (q31_t)0xE3F47D95, + (q31_t)0x7CE3CEB1, (q31_t)0xE3C37473, (q31_t)0x7CD8C1AD, + (q31_t)0xE3926FAC, (q31_t)0x7CCDA168, (q31_t)0xE3616F47, + (q31_t)0x7CC26DE5, (q31_t)0xE330734C, (q31_t)0x7CB72724, + (q31_t)0xE2FF7BC3, (q31_t)0x7CABCD27, (q31_t)0xE2CE88B2, + (q31_t)0x7CA05FF1, (q31_t)0xE29D9A22, (q31_t)0x7C94DF82, + (q31_t)0xE26CB01A, (q31_t)0x7C894BDD, (q31_t)0xE23BCAA2, + (q31_t)0x7C7DA504, (q31_t)0xE20AE9C1, (q31_t)0x7C71EAF8, + (q31_t)0xE1DA0D7E, (q31_t)0x7C661DBB, (q31_t)0xE1A935E1, + (q31_t)0x7C5A3D4F, (q31_t)0xE17862F3, (q31_t)0x7C4E49B6, + (q31_t)0xE14794B9, (q31_t)0x7C4242F2, (q31_t)0xE116CB3D, + (q31_t)0x7C362904, (q31_t)0xE0E60684, (q31_t)0x7C29FBEE, + (q31_t)0xE0B54698, (q31_t)0x7C1DBBB2, (q31_t)0xE0848B7F, + (q31_t)0x7C116853, (q31_t)0xE053D541, (q31_t)0x7C0501D1, + (q31_t)0xE02323E5, (q31_t)0x7BF88830, (q31_t)0xDFF27773, + (q31_t)0x7BEBFB70, (q31_t)0xDFC1CFF2, (q31_t)0x7BDF5B94, + (q31_t)0xDF912D6A, (q31_t)0x7BD2A89E, (q31_t)0xDF608FE3, + (q31_t)0x7BC5E28F, (q31_t)0xDF2FF764, (q31_t)0x7BB9096A, + (q31_t)0xDEFF63F4, (q31_t)0x7BAC1D31, (q31_t)0xDECED59B, + (q31_t)0x7B9F1DE5, (q31_t)0xDE9E4C60, (q31_t)0x7B920B89, + (q31_t)0xDE6DC84B, (q31_t)0x7B84E61E, (q31_t)0xDE3D4963, + (q31_t)0x7B77ADA8, (q31_t)0xDE0CCFB1, (q31_t)0x7B6A6227, + (q31_t)0xDDDC5B3A, (q31_t)0x7B5D039D, (q31_t)0xDDABEC07, + (q31_t)0x7B4F920E, (q31_t)0xDD7B8220, (q31_t)0x7B420D7A, + (q31_t)0xDD4B1D8B, (q31_t)0x7B3475E4, (q31_t)0xDD1ABE51, + (q31_t)0x7B26CB4F, (q31_t)0xDCEA6478, (q31_t)0x7B190DBB, + (q31_t)0xDCBA1008, (q31_t)0x7B0B3D2C, (q31_t)0xDC89C108, + (q31_t)0x7AFD59A3, (q31_t)0xDC597781, (q31_t)0x7AEF6323, + (q31_t)0xDC293379, (q31_t)0x7AE159AE, (q31_t)0xDBF8F4F8, + (q31_t)0x7AD33D45, (q31_t)0xDBC8BC05, (q31_t)0x7AC50DEB, + (q31_t)0xDB9888A8, (q31_t)0x7AB6CBA3, (q31_t)0xDB685AE8, + (q31_t)0x7AA8766E, (q31_t)0xDB3832CD, (q31_t)0x7A9A0E4F, + (q31_t)0xDB08105E, (q31_t)0x7A8B9348, (q31_t)0xDAD7F3A2, + (q31_t)0x7A7D055B, (q31_t)0xDAA7DCA1, (q31_t)0x7A6E648A, + (q31_t)0xDA77CB62, (q31_t)0x7A5FB0D8, (q31_t)0xDA47BFED, + (q31_t)0x7A50EA46, (q31_t)0xDA17BA4A, (q31_t)0x7A4210D8, + (q31_t)0xD9E7BA7E, (q31_t)0x7A33248F, (q31_t)0xD9B7C093, + (q31_t)0x7A24256E, (q31_t)0xD987CC8F, (q31_t)0x7A151377, + (q31_t)0xD957DE7A, (q31_t)0x7A05EEAD, (q31_t)0xD927F65B, + (q31_t)0x79F6B711, (q31_t)0xD8F81439, (q31_t)0x79E76CA6, + (q31_t)0xD8C8381C, (q31_t)0x79D80F6F, (q31_t)0xD898620C, + (q31_t)0x79C89F6D, (q31_t)0xD868920F, (q31_t)0x79B91CA4, + (q31_t)0xD838C82D, (q31_t)0x79A98715, (q31_t)0xD809046D, + (q31_t)0x7999DEC3, (q31_t)0xD7D946D7, (q31_t)0x798A23B1, + (q31_t)0xD7A98F73, (q31_t)0x797A55E0, (q31_t)0xD779DE46, + (q31_t)0x796A7554, (q31_t)0xD74A335A, (q31_t)0x795A820E, + (q31_t)0xD71A8EB5, (q31_t)0x794A7C11, (q31_t)0xD6EAF05E, + (q31_t)0x793A6360, (q31_t)0xD6BB585D, (q31_t)0x792A37FE, + (q31_t)0xD68BC6BA, (q31_t)0x7919F9EB, (q31_t)0xD65C3B7B, + (q31_t)0x7909A92C, (q31_t)0xD62CB6A7, (q31_t)0x78F945C3, + (q31_t)0xD5FD3847, (q31_t)0x78E8CFB1, (q31_t)0xD5CDC062, + (q31_t)0x78D846FB, (q31_t)0xD59E4EFE, (q31_t)0x78C7ABA1, + (q31_t)0xD56EE424, (q31_t)0x78B6FDA8, (q31_t)0xD53F7FDA, + (q31_t)0x78A63D10, (q31_t)0xD5102227, (q31_t)0x789569DE, + (q31_t)0xD4E0CB14, (q31_t)0x78848413, (q31_t)0xD4B17AA7, + (q31_t)0x78738BB3, (q31_t)0xD48230E8, (q31_t)0x786280BF, + (q31_t)0xD452EDDE, (q31_t)0x7851633B, (q31_t)0xD423B190, + (q31_t)0x78403328, (q31_t)0xD3F47C06, (q31_t)0x782EF08B, + (q31_t)0xD3C54D46, (q31_t)0x781D9B64, (q31_t)0xD3962559, + (q31_t)0x780C33B8, (q31_t)0xD3670445, (q31_t)0x77FAB988, + (q31_t)0xD337EA12, (q31_t)0x77E92CD8, (q31_t)0xD308D6C6, + (q31_t)0x77D78DAA, (q31_t)0xD2D9CA6A, (q31_t)0x77C5DC01, + (q31_t)0xD2AAC504, (q31_t)0x77B417DF, (q31_t)0xD27BC69C, + (q31_t)0x77A24148, (q31_t)0xD24CCF38, (q31_t)0x7790583D, + (q31_t)0xD21DDEE1, (q31_t)0x777E5CC3, (q31_t)0xD1EEF59E, + (q31_t)0x776C4EDB, (q31_t)0xD1C01374, (q31_t)0x775A2E88, + (q31_t)0xD191386D, (q31_t)0x7747FBCE, (q31_t)0xD162648F, + (q31_t)0x7735B6AE, (q31_t)0xD13397E1, (q31_t)0x77235F2D, + (q31_t)0xD104D26B, (q31_t)0x7710F54B, (q31_t)0xD0D61433, + (q31_t)0x76FE790E, (q31_t)0xD0A75D42, (q31_t)0x76EBEA77, + (q31_t)0xD078AD9D, (q31_t)0x76D94988, (q31_t)0xD04A054D, + (q31_t)0x76C69646, (q31_t)0xD01B6459, (q31_t)0x76B3D0B3, + (q31_t)0xCFECCAC7, (q31_t)0x76A0F8D2, (q31_t)0xCFBE389F, + (q31_t)0x768E0EA5, (q31_t)0xCF8FADE8, (q31_t)0x767B1230, + (q31_t)0xCF612AAA, (q31_t)0x76680376, (q31_t)0xCF32AEEB, + (q31_t)0x7654E279, (q31_t)0xCF043AB2, (q31_t)0x7641AF3C, + (q31_t)0xCED5CE08, (q31_t)0x762E69C3, (q31_t)0xCEA768F2, + (q31_t)0x761B1211, (q31_t)0xCE790B78, (q31_t)0x7607A827, + (q31_t)0xCE4AB5A2, (q31_t)0x75F42C0A, (q31_t)0xCE1C6776, + (q31_t)0x75E09DBD, (q31_t)0xCDEE20FC, (q31_t)0x75CCFD42, + (q31_t)0xCDBFE23A, (q31_t)0x75B94A9C, (q31_t)0xCD91AB38, + (q31_t)0x75A585CF, (q31_t)0xCD637BFD, (q31_t)0x7591AEDD, + (q31_t)0xCD355490, (q31_t)0x757DC5CA, (q31_t)0xCD0734F8, + (q31_t)0x7569CA98, (q31_t)0xCCD91D3D, (q31_t)0x7555BD4B, + (q31_t)0xCCAB0D65, (q31_t)0x75419DE6, (q31_t)0xCC7D0577, + (q31_t)0x752D6C6C, (q31_t)0xCC4F057B, (q31_t)0x751928E0, + (q31_t)0xCC210D78, (q31_t)0x7504D345, (q31_t)0xCBF31D75, + (q31_t)0x74F06B9E, (q31_t)0xCBC53578, (q31_t)0x74DBF1EF, + (q31_t)0xCB975589, (q31_t)0x74C7663A, (q31_t)0xCB697DB0, + (q31_t)0x74B2C883, (q31_t)0xCB3BADF2, (q31_t)0x749E18CD, + (q31_t)0xCB0DE658, (q31_t)0x7489571B, (q31_t)0xCAE026E8, + (q31_t)0x74748371, (q31_t)0xCAB26FA9, (q31_t)0x745F9DD1, + (q31_t)0xCA84C0A2, (q31_t)0x744AA63E, (q31_t)0xCA5719DB, + (q31_t)0x74359CBD, (q31_t)0xCA297B5A, (q31_t)0x74208150, + (q31_t)0xC9FBE527, (q31_t)0x740B53FA, (q31_t)0xC9CE5748, + (q31_t)0x73F614C0, (q31_t)0xC9A0D1C4, (q31_t)0x73E0C3A3, + (q31_t)0xC97354A3, (q31_t)0x73CB60A7, (q31_t)0xC945DFEC, + (q31_t)0x73B5EBD0, (q31_t)0xC91873A5, (q31_t)0x73A06522, + (q31_t)0xC8EB0FD6, (q31_t)0x738ACC9E, (q31_t)0xC8BDB485, + (q31_t)0x73752249, (q31_t)0xC89061BA, (q31_t)0x735F6626, + (q31_t)0xC863177B, (q31_t)0x73499838, (q31_t)0xC835D5D0, + (q31_t)0x7333B883, (q31_t)0xC8089CBF, (q31_t)0x731DC709, + (q31_t)0xC7DB6C50, (q31_t)0x7307C3D0, (q31_t)0xC7AE4489, + (q31_t)0x72F1AED8, (q31_t)0xC7812571, (q31_t)0x72DB8828, + (q31_t)0xC7540F10, (q31_t)0x72C54FC0, (q31_t)0xC727016C, + (q31_t)0x72AF05A6, (q31_t)0xC6F9FC8D, (q31_t)0x7298A9DC, + (q31_t)0xC6CD0079, (q31_t)0x72823C66, (q31_t)0xC6A00D36, + (q31_t)0x726BBD48, (q31_t)0xC67322CD, (q31_t)0x72552C84, + (q31_t)0xC6464144, (q31_t)0x723E8A1F, (q31_t)0xC61968A2, + (q31_t)0x7227D61C, (q31_t)0xC5EC98ED, (q31_t)0x7211107D, + (q31_t)0xC5BFD22E, (q31_t)0x71FA3948, (q31_t)0xC593146A, + (q31_t)0x71E3507F, (q31_t)0xC5665FA8, (q31_t)0x71CC5626, + (q31_t)0xC539B3F0, (q31_t)0x71B54A40, (q31_t)0xC50D1148, + (q31_t)0x719E2CD2, (q31_t)0xC4E077B8, (q31_t)0x7186FDDE, + (q31_t)0xC4B3E746, (q31_t)0x716FBD68, (q31_t)0xC4875FF8, + (q31_t)0x71586B73, (q31_t)0xC45AE1D7, (q31_t)0x71410804, + (q31_t)0xC42E6CE8, (q31_t)0x7129931E, (q31_t)0xC4020132, + (q31_t)0x71120CC5, (q31_t)0xC3D59EBD, (q31_t)0x70FA74FB, + (q31_t)0xC3A9458F, (q31_t)0x70E2CBC6, (q31_t)0xC37CF5B0, + (q31_t)0x70CB1127, (q31_t)0xC350AF25, (q31_t)0x70B34524, + (q31_t)0xC32471F6, (q31_t)0x709B67C0, (q31_t)0xC2F83E2A, + (q31_t)0x708378FE, (q31_t)0xC2CC13C7, (q31_t)0x706B78E3, + (q31_t)0xC29FF2D4, (q31_t)0x70536771, (q31_t)0xC273DB58, + (q31_t)0x703B44AC, (q31_t)0xC247CD5A, (q31_t)0x70231099, + (q31_t)0xC21BC8E0, (q31_t)0x700ACB3B, (q31_t)0xC1EFCDF2, + (q31_t)0x6FF27496, (q31_t)0xC1C3DC96, (q31_t)0x6FDA0CAD, + (q31_t)0xC197F4D3, (q31_t)0x6FC19385, (q31_t)0xC16C16B0, + (q31_t)0x6FA90920, (q31_t)0xC1404233, (q31_t)0x6F906D84, + (q31_t)0xC1147763, (q31_t)0x6F77C0B3, (q31_t)0xC0E8B648, + (q31_t)0x6F5F02B1, (q31_t)0xC0BCFEE7, (q31_t)0x6F463383, + (q31_t)0xC0915147, (q31_t)0x6F2D532C, (q31_t)0xC065AD70, + (q31_t)0x6F1461AF, (q31_t)0xC03A1368, (q31_t)0x6EFB5F12, + (q31_t)0xC00E8335, (q31_t)0x6EE24B57, (q31_t)0xBFE2FCDF, + (q31_t)0x6EC92682, (q31_t)0xBFB7806C, (q31_t)0x6EAFF098, + (q31_t)0xBF8C0DE2, (q31_t)0x6E96A99C, (q31_t)0xBF60A54A, + (q31_t)0x6E7D5193, (q31_t)0xBF3546A8, (q31_t)0x6E63E87F, + (q31_t)0xBF09F204, (q31_t)0x6E4A6E65, (q31_t)0xBEDEA765, + (q31_t)0x6E30E349, (q31_t)0xBEB366D1, (q31_t)0x6E17472F, + (q31_t)0xBE88304F, (q31_t)0x6DFD9A1B, (q31_t)0xBE5D03E5, + (q31_t)0x6DE3DC11, (q31_t)0xBE31E19B, (q31_t)0x6DCA0D14, + (q31_t)0xBE06C977, (q31_t)0x6DB02D29, (q31_t)0xBDDBBB7F, + (q31_t)0x6D963C54, (q31_t)0xBDB0B7BA, (q31_t)0x6D7C3A98, + (q31_t)0xBD85BE2F, (q31_t)0x6D6227FA, (q31_t)0xBD5ACEE5, + (q31_t)0x6D48047E, (q31_t)0xBD2FE9E1, (q31_t)0x6D2DD027, + (q31_t)0xBD050F2C, (q31_t)0x6D138AFA, (q31_t)0xBCDA3ECA, + (q31_t)0x6CF934FB, (q31_t)0xBCAF78C3, (q31_t)0x6CDECE2E, + (q31_t)0xBC84BD1E, (q31_t)0x6CC45697, (q31_t)0xBC5A0BE1, + (q31_t)0x6CA9CE3A, (q31_t)0xBC2F6513, (q31_t)0x6C8F351C, + (q31_t)0xBC04C8BA, (q31_t)0x6C748B3F, (q31_t)0xBBDA36DC, + (q31_t)0x6C59D0A9, (q31_t)0xBBAFAF81, (q31_t)0x6C3F055D, + (q31_t)0xBB8532AF, (q31_t)0x6C242960, (q31_t)0xBB5AC06C, + (q31_t)0x6C093CB6, (q31_t)0xBB3058C0, (q31_t)0x6BEE3F62, + (q31_t)0xBB05FBB0, (q31_t)0x6BD3316A, (q31_t)0xBADBA943, + (q31_t)0x6BB812D0, (q31_t)0xBAB1617F, (q31_t)0x6B9CE39B, + (q31_t)0xBA87246C, (q31_t)0x6B81A3CD, (q31_t)0xBA5CF210, + (q31_t)0x6B66536A, (q31_t)0xBA32CA70, (q31_t)0x6B4AF278, + (q31_t)0xBA08AD94, (q31_t)0x6B2F80FA, (q31_t)0xB9DE9B83, + (q31_t)0x6B13FEF5, (q31_t)0xB9B49442, (q31_t)0x6AF86C6C, + (q31_t)0xB98A97D8, (q31_t)0x6ADCC964, (q31_t)0xB960A64B, + (q31_t)0x6AC115E1, (q31_t)0xB936BFA3, (q31_t)0x6AA551E8, + (q31_t)0xB90CE3E6, (q31_t)0x6A897D7D, (q31_t)0xB8E31319, + (q31_t)0x6A6D98A4, (q31_t)0xB8B94D44, (q31_t)0x6A51A361, + (q31_t)0xB88F926C, (q31_t)0x6A359DB9, (q31_t)0xB865E299, + (q31_t)0x6A1987B0, (q31_t)0xB83C3DD1, (q31_t)0x69FD614A, + (q31_t)0xB812A419, (q31_t)0x69E12A8C, (q31_t)0xB7E9157A, + (q31_t)0x69C4E37A, (q31_t)0xB7BF91F8, (q31_t)0x69A88C18, + (q31_t)0xB796199B, (q31_t)0x698C246C, (q31_t)0xB76CAC68, + (q31_t)0x696FAC78, (q31_t)0xB7434A67, (q31_t)0x69532442, + (q31_t)0xB719F39D, (q31_t)0x69368BCE, (q31_t)0xB6F0A811, + (q31_t)0x6919E320, (q31_t)0xB6C767CA, (q31_t)0x68FD2A3D, + (q31_t)0xB69E32CD, (q31_t)0x68E06129, (q31_t)0xB6750921, + (q31_t)0x68C387E9, (q31_t)0xB64BEACC, (q31_t)0x68A69E81, + (q31_t)0xB622D7D5, (q31_t)0x6889A4F5, (q31_t)0xB5F9D042, + (q31_t)0x686C9B4B, (q31_t)0xB5D0D41A, (q31_t)0x684F8186, + (q31_t)0xB5A7E362, (q31_t)0x683257AA, (q31_t)0xB57EFE21, + (q31_t)0x68151DBE, (q31_t)0xB556245E, (q31_t)0x67F7D3C4, + (q31_t)0xB52D561E, (q31_t)0x67DA79C2, (q31_t)0xB5049368, + (q31_t)0x67BD0FBC, (q31_t)0xB4DBDC42, (q31_t)0x679F95B7, + (q31_t)0xB4B330B2, (q31_t)0x67820BB6, (q31_t)0xB48A90C0, + (q31_t)0x676471C0, (q31_t)0xB461FC70, (q31_t)0x6746C7D7, + (q31_t)0xB43973C9, (q31_t)0x67290E02, (q31_t)0xB410F6D2, + (q31_t)0x670B4443, (q31_t)0xB3E88591, (q31_t)0x66ED6AA1, + (q31_t)0xB3C0200C, (q31_t)0x66CF811F, (q31_t)0xB397C649, + (q31_t)0x66B187C3, (q31_t)0xB36F784E, (q31_t)0x66937E90, + (q31_t)0xB3473622, (q31_t)0x6675658C, (q31_t)0xB31EFFCB, + (q31_t)0x66573CBB, (q31_t)0xB2F6D54F, (q31_t)0x66390422, + (q31_t)0xB2CEB6B5, (q31_t)0x661ABBC5, (q31_t)0xB2A6A401, + (q31_t)0x65FC63A9, (q31_t)0xB27E9D3B, (q31_t)0x65DDFBD3, + (q31_t)0xB256A26A, (q31_t)0x65BF8447, (q31_t)0xB22EB392, + (q31_t)0x65A0FD0B, (q31_t)0xB206D0BA, (q31_t)0x65826622, + (q31_t)0xB1DEF9E8, (q31_t)0x6563BF92, (q31_t)0xB1B72F23, + (q31_t)0x6545095F, (q31_t)0xB18F7070, (q31_t)0x6526438E, + (q31_t)0xB167BDD6, (q31_t)0x65076E24, (q31_t)0xB140175B, + (q31_t)0x64E88926, (q31_t)0xB1187D05, (q31_t)0x64C99498, + (q31_t)0xB0F0EEDA, (q31_t)0x64AA907F, (q31_t)0xB0C96CDF, + (q31_t)0x648B7CDF, (q31_t)0xB0A1F71C, (q31_t)0x646C59BF, + (q31_t)0xB07A8D97, (q31_t)0x644D2722, (q31_t)0xB0533055, + (q31_t)0x642DE50D, (q31_t)0xB02BDF5C, (q31_t)0x640E9385, + (q31_t)0xB0049AB2, (q31_t)0x63EF328F, (q31_t)0xAFDD625F, + (q31_t)0x63CFC230, (q31_t)0xAFB63667, (q31_t)0x63B0426D, + (q31_t)0xAF8F16D0, (q31_t)0x6390B34A, (q31_t)0xAF6803A1, + (q31_t)0x637114CC, (q31_t)0xAF40FCE0, (q31_t)0x635166F8, + (q31_t)0xAF1A0293, (q31_t)0x6331A9D4, (q31_t)0xAEF314BF, + (q31_t)0x6311DD63, (q31_t)0xAECC336B, (q31_t)0x62F201AC, + (q31_t)0xAEA55E9D, (q31_t)0x62D216B2, (q31_t)0xAE7E965B, + (q31_t)0x62B21C7B, (q31_t)0xAE57DAAA, (q31_t)0x6292130C, + (q31_t)0xAE312B91, (q31_t)0x6271FA69, (q31_t)0xAE0A8916, + (q31_t)0x6251D297, (q31_t)0xADE3F33E, (q31_t)0x62319B9D, + (q31_t)0xADBD6A10, (q31_t)0x6211557D, (q31_t)0xAD96ED91, + (q31_t)0x61F1003E, (q31_t)0xAD707DC8, (q31_t)0x61D09BE5, + (q31_t)0xAD4A1ABA, (q31_t)0x61B02876, (q31_t)0xAD23C46D, + (q31_t)0x618FA5F6, (q31_t)0xACFD7AE8, (q31_t)0x616F146B, + (q31_t)0xACD73E30, (q31_t)0x614E73D9, (q31_t)0xACB10E4A, + (q31_t)0x612DC446, (q31_t)0xAC8AEB3E, (q31_t)0x610D05B7, + (q31_t)0xAC64D510, (q31_t)0x60EC3830, (q31_t)0xAC3ECBC7, + (q31_t)0x60CB5BB6, (q31_t)0xAC18CF68, (q31_t)0x60AA704F, + (q31_t)0xABF2DFFA, (q31_t)0x60897600, (q31_t)0xABCCFD82, + (q31_t)0x60686CCE, (q31_t)0xABA72806, (q31_t)0x604754BE, + (q31_t)0xAB815F8C, (q31_t)0x60262DD5, (q31_t)0xAB5BA41A, + (q31_t)0x6004F818, (q31_t)0xAB35F5B5, (q31_t)0x5FE3B38D, + (q31_t)0xAB105464, (q31_t)0x5FC26038, (q31_t)0xAAEAC02B, + (q31_t)0x5FA0FE1E, (q31_t)0xAAC53912, (q31_t)0x5F7F8D46, + (q31_t)0xAA9FBF1D, (q31_t)0x5F5E0DB3, (q31_t)0xAA7A5253, + (q31_t)0x5F3C7F6B, (q31_t)0xAA54F2B9, (q31_t)0x5F1AE273, + (q31_t)0xAA2FA055, (q31_t)0x5EF936D1, (q31_t)0xAA0A5B2D, + (q31_t)0x5ED77C89, (q31_t)0xA9E52347, (q31_t)0x5EB5B3A1, + (q31_t)0xA9BFF8A8, (q31_t)0x5E93DC1F, (q31_t)0xA99ADB56, + (q31_t)0x5E71F606, (q31_t)0xA975CB56, (q31_t)0x5E50015D, + (q31_t)0xA950C8AF, (q31_t)0x5E2DFE28, (q31_t)0xA92BD366, + (q31_t)0x5E0BEC6E, (q31_t)0xA906EB81, (q31_t)0x5DE9CC32, + (q31_t)0xA8E21106, (q31_t)0x5DC79D7C, (q31_t)0xA8BD43FA, + (q31_t)0x5DA5604E, (q31_t)0xA8988463, (q31_t)0x5D8314B0, + (q31_t)0xA873D246, (q31_t)0x5D60BAA6, (q31_t)0xA84F2DA9, + (q31_t)0x5D3E5236, (q31_t)0xA82A9693, (q31_t)0x5D1BDB65, + (q31_t)0xA8060D08, (q31_t)0x5CF95638, (q31_t)0xA7E1910E, + (q31_t)0x5CD6C2B4, (q31_t)0xA7BD22AB, (q31_t)0x5CB420DF, + (q31_t)0xA798C1E4, (q31_t)0x5C9170BF, (q31_t)0xA7746EC0, + (q31_t)0x5C6EB258, (q31_t)0xA7502943, (q31_t)0x5C4BE5B0, + (q31_t)0xA72BF173, (q31_t)0x5C290ACC, (q31_t)0xA707C756, + (q31_t)0x5C0621B2, (q31_t)0xA6E3AAF2, (q31_t)0x5BE32A67, + (q31_t)0xA6BF9C4B, (q31_t)0x5BC024F0, (q31_t)0xA69B9B68, + (q31_t)0x5B9D1153, (q31_t)0xA677A84E, (q31_t)0x5B79EF96, + (q31_t)0xA653C302, (q31_t)0x5B56BFBD, (q31_t)0xA62FEB8B, + (q31_t)0x5B3381CE, (q31_t)0xA60C21ED, (q31_t)0x5B1035CF, + (q31_t)0xA5E8662F, (q31_t)0x5AECDBC4, (q31_t)0xA5C4B855, + (q31_t)0x5AC973B4, (q31_t)0xA5A11865, (q31_t)0x5AA5FDA4, + (q31_t)0xA57D8666, (q31_t)0x5A82799A, (q31_t)0xA55A025B, + (q31_t)0x5A5EE79A, (q31_t)0xA5368C4B, (q31_t)0x5A3B47AA, + (q31_t)0xA513243B, (q31_t)0x5A1799D0, (q31_t)0xA4EFCA31, + (q31_t)0x59F3DE12, (q31_t)0xA4CC7E31, (q31_t)0x59D01474, + (q31_t)0xA4A94042, (q31_t)0x59AC3CFD, (q31_t)0xA4861069, + (q31_t)0x598857B1, (q31_t)0xA462EEAC, (q31_t)0x59646497, + (q31_t)0xA43FDB0F, (q31_t)0x594063B4, (q31_t)0xA41CD598, + (q31_t)0x591C550E, (q31_t)0xA3F9DE4D, (q31_t)0x58F838A9, + (q31_t)0xA3D6F533, (q31_t)0x58D40E8C, (q31_t)0xA3B41A4F, + (q31_t)0x58AFD6BC, (q31_t)0xA3914DA7, (q31_t)0x588B913F, + (q31_t)0xA36E8F40, (q31_t)0x58673E1B, (q31_t)0xA34BDF20, + (q31_t)0x5842DD54, (q31_t)0xA3293D4B, (q31_t)0x581E6EF1, + (q31_t)0xA306A9C7, (q31_t)0x57F9F2F7, (q31_t)0xA2E4249A, + (q31_t)0x57D5696C, (q31_t)0xA2C1ADC9, (q31_t)0x57B0D256, + (q31_t)0xA29F4559, (q31_t)0x578C2DB9, (q31_t)0xA27CEB4F, + (q31_t)0x57677B9D, (q31_t)0xA25A9FB1, (q31_t)0x5742BC05, + (q31_t)0xA2386283, (q31_t)0x571DEEF9, (q31_t)0xA21633CD, + (q31_t)0x56F9147E, (q31_t)0xA1F41391, (q31_t)0x56D42C99, + (q31_t)0xA1D201D7, (q31_t)0x56AF3750, (q31_t)0xA1AFFEA2, + (q31_t)0x568A34A9, (q31_t)0xA18E09F9, (q31_t)0x566524AA, + (q31_t)0xA16C23E1, (q31_t)0x56400757, (q31_t)0xA14A4C5E, + (q31_t)0x561ADCB8, (q31_t)0xA1288376, (q31_t)0x55F5A4D2, + (q31_t)0xA106C92E, (q31_t)0x55D05FAA, (q31_t)0xA0E51D8C, + (q31_t)0x55AB0D46, (q31_t)0xA0C38094, (q31_t)0x5585ADAC, + (q31_t)0xA0A1F24C, (q31_t)0x556040E2, (q31_t)0xA08072BA, + (q31_t)0x553AC6ED, (q31_t)0xA05F01E1, (q31_t)0x55153FD4, + (q31_t)0xA03D9FC7, (q31_t)0x54EFAB9C, (q31_t)0xA01C4C72, + (q31_t)0x54CA0A4A, (q31_t)0x9FFB07E7, (q31_t)0x54A45BE5, + (q31_t)0x9FD9D22A, (q31_t)0x547EA073, (q31_t)0x9FB8AB41, + (q31_t)0x5458D7F9, (q31_t)0x9F979331, (q31_t)0x5433027D, + (q31_t)0x9F7689FF, (q31_t)0x540D2005, (q31_t)0x9F558FB0, + (q31_t)0x53E73097, (q31_t)0x9F34A449, (q31_t)0x53C13438, + (q31_t)0x9F13C7D0, (q31_t)0x539B2AEF, (q31_t)0x9EF2FA48, + (q31_t)0x537514C1, (q31_t)0x9ED23BB9, (q31_t)0x534EF1B5, + (q31_t)0x9EB18C26, (q31_t)0x5328C1D0, (q31_t)0x9E90EB94, + (q31_t)0x53028517, (q31_t)0x9E705A09, (q31_t)0x52DC3B92, + (q31_t)0x9E4FD789, (q31_t)0x52B5E545, (q31_t)0x9E2F641A, + (q31_t)0x528F8237, (q31_t)0x9E0EFFC1, (q31_t)0x5269126E, + (q31_t)0x9DEEAA82, (q31_t)0x524295EF, (q31_t)0x9DCE6462, + (q31_t)0x521C0CC1, (q31_t)0x9DAE2D68, (q31_t)0x51F576E9, + (q31_t)0x9D8E0596, (q31_t)0x51CED46E, (q31_t)0x9D6DECF4, + (q31_t)0x51A82555, (q31_t)0x9D4DE384, (q31_t)0x518169A4, + (q31_t)0x9D2DE94D, (q31_t)0x515AA162, (q31_t)0x9D0DFE53, + (q31_t)0x5133CC94, (q31_t)0x9CEE229C, (q31_t)0x510CEB40, + (q31_t)0x9CCE562B, (q31_t)0x50E5FD6C, (q31_t)0x9CAE9907, + (q31_t)0x50BF031F, (q31_t)0x9C8EEB33, (q31_t)0x5097FC5E, + (q31_t)0x9C6F4CB5, (q31_t)0x5070E92F, (q31_t)0x9C4FBD92, + (q31_t)0x5049C999, (q31_t)0x9C303DCF, (q31_t)0x50229DA0, + (q31_t)0x9C10CD70, (q31_t)0x4FFB654D, (q31_t)0x9BF16C7A, + (q31_t)0x4FD420A3, (q31_t)0x9BD21AF2, (q31_t)0x4FACCFAB, + (q31_t)0x9BB2D8DD, (q31_t)0x4F857268, (q31_t)0x9B93A640, + (q31_t)0x4F5E08E3, (q31_t)0x9B748320, (q31_t)0x4F369320, + (q31_t)0x9B556F80, (q31_t)0x4F0F1126, (q31_t)0x9B366B67, + (q31_t)0x4EE782FA, (q31_t)0x9B1776D9, (q31_t)0x4EBFE8A4, + (q31_t)0x9AF891DB, (q31_t)0x4E984229, (q31_t)0x9AD9BC71, + (q31_t)0x4E708F8F, (q31_t)0x9ABAF6A0, (q31_t)0x4E48D0DC, + (q31_t)0x9A9C406D, (q31_t)0x4E210617, (q31_t)0x9A7D99DD, + (q31_t)0x4DF92F45, (q31_t)0x9A5F02F5, (q31_t)0x4DD14C6E, + (q31_t)0x9A407BB8, (q31_t)0x4DA95D96, (q31_t)0x9A22042C, + (q31_t)0x4D8162C4, (q31_t)0x9A039C56, (q31_t)0x4D595BFE, + (q31_t)0x99E5443A, (q31_t)0x4D31494B, (q31_t)0x99C6FBDE, + (q31_t)0x4D092AB0, (q31_t)0x99A8C344, (q31_t)0x4CE10034, + (q31_t)0x998A9A73, (q31_t)0x4CB8C9DD, (q31_t)0x996C816F, + (q31_t)0x4C9087B1, (q31_t)0x994E783C, (q31_t)0x4C6839B6, + (q31_t)0x99307EE0, (q31_t)0x4C3FDFF3, (q31_t)0x9912955E, + (q31_t)0x4C177A6E, (q31_t)0x98F4BBBC, (q31_t)0x4BEF092D, + (q31_t)0x98D6F1FE, (q31_t)0x4BC68C36, (q31_t)0x98B93828, + (q31_t)0x4B9E038F, (q31_t)0x989B8E3F, (q31_t)0x4B756F3F, + (q31_t)0x987DF449, (q31_t)0x4B4CCF4D, (q31_t)0x98606A48, + (q31_t)0x4B2423BD, (q31_t)0x9842F043, (q31_t)0x4AFB6C97, + (q31_t)0x9825863D, (q31_t)0x4AD2A9E1, (q31_t)0x98082C3B, + (q31_t)0x4AA9DBA1, (q31_t)0x97EAE241, (q31_t)0x4A8101DE, + (q31_t)0x97CDA855, (q31_t)0x4A581C9D, (q31_t)0x97B07E7A, + (q31_t)0x4A2F2BE5, (q31_t)0x979364B5, (q31_t)0x4A062FBD, + (q31_t)0x97765B0A, (q31_t)0x49DD282A, (q31_t)0x9759617E, + (q31_t)0x49B41533, (q31_t)0x973C7816, (q31_t)0x498AF6DE, + (q31_t)0x971F9ED6, (q31_t)0x4961CD32, (q31_t)0x9702D5C2, + (q31_t)0x49389836, (q31_t)0x96E61CDF, (q31_t)0x490F57EE, + (q31_t)0x96C97431, (q31_t)0x48E60C62, (q31_t)0x96ACDBBD, + (q31_t)0x48BCB598, (q31_t)0x96905387, (q31_t)0x48935397, + (q31_t)0x9673DB94, (q31_t)0x4869E664, (q31_t)0x965773E7, + (q31_t)0x48406E07, (q31_t)0x963B1C85, (q31_t)0x4816EA85, + (q31_t)0x961ED573, (q31_t)0x47ED5BE6, (q31_t)0x96029EB5, + (q31_t)0x47C3C22E, (q31_t)0x95E6784F, (q31_t)0x479A1D66, + (q31_t)0x95CA6246, (q31_t)0x47706D93, (q31_t)0x95AE5C9E, + (q31_t)0x4746B2BC, (q31_t)0x9592675B, (q31_t)0x471CECE6, + (q31_t)0x95768282, (q31_t)0x46F31C1A, (q31_t)0x955AAE17, + (q31_t)0x46C9405C, (q31_t)0x953EEA1E, (q31_t)0x469F59B4, + (q31_t)0x9523369B, (q31_t)0x46756827, (q31_t)0x95079393, + (q31_t)0x464B6BBD, (q31_t)0x94EC010B, (q31_t)0x4621647C, + (q31_t)0x94D07F05, (q31_t)0x45F7526B, (q31_t)0x94B50D87, + (q31_t)0x45CD358F, (q31_t)0x9499AC95, (q31_t)0x45A30DF0, + (q31_t)0x947E5C32, (q31_t)0x4578DB93, (q31_t)0x94631C64, + (q31_t)0x454E9E80, (q31_t)0x9447ED2F, (q31_t)0x452456BC, + (q31_t)0x942CCE95, (q31_t)0x44FA044F, (q31_t)0x9411C09D, + (q31_t)0x44CFA73F, (q31_t)0x93F6C34A, (q31_t)0x44A53F93, + (q31_t)0x93DBD69F, (q31_t)0x447ACD50, (q31_t)0x93C0FAA2, + (q31_t)0x4450507E, (q31_t)0x93A62F56, (q31_t)0x4425C923, + (q31_t)0x938B74C0, (q31_t)0x43FB3745, (q31_t)0x9370CAE4, + (q31_t)0x43D09AEC, (q31_t)0x935631C5, (q31_t)0x43A5F41E, + (q31_t)0x933BA968, (q31_t)0x437B42E1, (q31_t)0x932131D1, + (q31_t)0x4350873C, (q31_t)0x9306CB04, (q31_t)0x4325C135, + (q31_t)0x92EC7505, (q31_t)0x42FAF0D4, (q31_t)0x92D22FD8, + (q31_t)0x42D0161E, (q31_t)0x92B7FB82, (q31_t)0x42A5311A, + (q31_t)0x929DD805, (q31_t)0x427A41D0, (q31_t)0x9283C567, + (q31_t)0x424F4845, (q31_t)0x9269C3AC, (q31_t)0x42244480, + (q31_t)0x924FD2D6, (q31_t)0x41F93688, (q31_t)0x9235F2EB, + (q31_t)0x41CE1E64, (q31_t)0x921C23EE, (q31_t)0x41A2FC1A, + (q31_t)0x920265E4, (q31_t)0x4177CFB0, (q31_t)0x91E8B8D0, + (q31_t)0x414C992E, (q31_t)0x91CF1CB6, (q31_t)0x4121589A, + (q31_t)0x91B5919A, (q31_t)0x40F60DFB, (q31_t)0x919C1780, + (q31_t)0x40CAB957, (q31_t)0x9182AE6C, (q31_t)0x409F5AB6, + (q31_t)0x91695663, (q31_t)0x4073F21D, (q31_t)0x91500F67, + (q31_t)0x40487F93, (q31_t)0x9136D97D, (q31_t)0x401D0320, + (q31_t)0x911DB4A8, (q31_t)0x3FF17CCA, (q31_t)0x9104A0ED, + (q31_t)0x3FC5EC97, (q31_t)0x90EB9E50, (q31_t)0x3F9A528F, + (q31_t)0x90D2ACD3, (q31_t)0x3F6EAEB8, (q31_t)0x90B9CC7C, + (q31_t)0x3F430118, (q31_t)0x90A0FD4E, (q31_t)0x3F1749B7, + (q31_t)0x90883F4C, (q31_t)0x3EEB889C, (q31_t)0x906F927B, + (q31_t)0x3EBFBDCC, (q31_t)0x9056F6DF, (q31_t)0x3E93E94F, + (q31_t)0x903E6C7A, (q31_t)0x3E680B2C, (q31_t)0x9025F352, + (q31_t)0x3E3C2369, (q31_t)0x900D8B69, (q31_t)0x3E10320D, + (q31_t)0x8FF534C4, (q31_t)0x3DE4371F, (q31_t)0x8FDCEF66, + (q31_t)0x3DB832A5, (q31_t)0x8FC4BB53, (q31_t)0x3D8C24A7, + (q31_t)0x8FAC988E, (q31_t)0x3D600D2B, (q31_t)0x8F94871D, + (q31_t)0x3D33EC39, (q31_t)0x8F7C8701, (q31_t)0x3D07C1D5, + (q31_t)0x8F64983F, (q31_t)0x3CDB8E09, (q31_t)0x8F4CBADB, + (q31_t)0x3CAF50DA, (q31_t)0x8F34EED8, (q31_t)0x3C830A4F, + (q31_t)0x8F1D343A, (q31_t)0x3C56BA70, (q31_t)0x8F058B04, + (q31_t)0x3C2A6142, (q31_t)0x8EEDF33B, (q31_t)0x3BFDFECD, + (q31_t)0x8ED66CE1, (q31_t)0x3BD19317, (q31_t)0x8EBEF7FB, + (q31_t)0x3BA51E29, (q31_t)0x8EA7948C, (q31_t)0x3B78A007, + (q31_t)0x8E904298, (q31_t)0x3B4C18BA, (q31_t)0x8E790222, + (q31_t)0x3B1F8847, (q31_t)0x8E61D32D, (q31_t)0x3AF2EEB7, + (q31_t)0x8E4AB5BF, (q31_t)0x3AC64C0F, (q31_t)0x8E33A9D9, + (q31_t)0x3A99A057, (q31_t)0x8E1CAF80, (q31_t)0x3A6CEB95, + (q31_t)0x8E05C6B7, (q31_t)0x3A402DD1, (q31_t)0x8DEEEF82, + (q31_t)0x3A136712, (q31_t)0x8DD829E4, (q31_t)0x39E6975D, + (q31_t)0x8DC175E0, (q31_t)0x39B9BEBB, (q31_t)0x8DAAD37B, + (q31_t)0x398CDD32, (q31_t)0x8D9442B7, (q31_t)0x395FF2C9, + (q31_t)0x8D7DC399, (q31_t)0x3932FF87, (q31_t)0x8D675623, + (q31_t)0x39060372, (q31_t)0x8D50FA59, (q31_t)0x38D8FE93, + (q31_t)0x8D3AB03F, (q31_t)0x38ABF0EF, (q31_t)0x8D2477D8, + (q31_t)0x387EDA8E, (q31_t)0x8D0E5127, (q31_t)0x3851BB76, + (q31_t)0x8CF83C30, (q31_t)0x382493B0, (q31_t)0x8CE238F6, + (q31_t)0x37F76340, (q31_t)0x8CCC477D, (q31_t)0x37CA2A30, + (q31_t)0x8CB667C7, (q31_t)0x379CE884, (q31_t)0x8CA099D9, + (q31_t)0x376F9E46, (q31_t)0x8C8ADDB6, (q31_t)0x37424B7A, + (q31_t)0x8C753361, (q31_t)0x3714F02A, (q31_t)0x8C5F9ADD, + (q31_t)0x36E78C5A, (q31_t)0x8C4A142F, (q31_t)0x36BA2013, + (q31_t)0x8C349F58, (q31_t)0x368CAB5C, (q31_t)0x8C1F3C5C, + (q31_t)0x365F2E3B, (q31_t)0x8C09EB40, (q31_t)0x3631A8B7, + (q31_t)0x8BF4AC05, (q31_t)0x36041AD9, (q31_t)0x8BDF7EAF, + (q31_t)0x35D684A5, (q31_t)0x8BCA6342, (q31_t)0x35A8E624, + (q31_t)0x8BB559C1, (q31_t)0x357B3F5D, (q31_t)0x8BA0622F, + (q31_t)0x354D9056, (q31_t)0x8B8B7C8F, (q31_t)0x351FD917, + (q31_t)0x8B76A8E4, (q31_t)0x34F219A7, (q31_t)0x8B61E732, + (q31_t)0x34C4520D, (q31_t)0x8B4D377C, (q31_t)0x3496824F, + (q31_t)0x8B3899C5, (q31_t)0x3468AA76, (q31_t)0x8B240E10, + (q31_t)0x343ACA87, (q31_t)0x8B0F9461, (q31_t)0x340CE28A, + (q31_t)0x8AFB2CBA, (q31_t)0x33DEF287, (q31_t)0x8AE6D71F, + (q31_t)0x33B0FA84, (q31_t)0x8AD29393, (q31_t)0x3382FA88, + (q31_t)0x8ABE6219, (q31_t)0x3354F29A, (q31_t)0x8AAA42B4, + (q31_t)0x3326E2C2, (q31_t)0x8A963567, (q31_t)0x32F8CB07, + (q31_t)0x8A823A35, (q31_t)0x32CAAB6F, (q31_t)0x8A6E5122, + (q31_t)0x329C8402, (q31_t)0x8A5A7A30, (q31_t)0x326E54C7, + (q31_t)0x8A46B563, (q31_t)0x32401DC5, (q31_t)0x8A3302BD, + (q31_t)0x3211DF03, (q31_t)0x8A1F6242, (q31_t)0x31E39889, + (q31_t)0x8A0BD3F5, (q31_t)0x31B54A5D, (q31_t)0x89F857D8, + (q31_t)0x3186F487, (q31_t)0x89E4EDEE, (q31_t)0x3158970D, + (q31_t)0x89D1963C, (q31_t)0x312A31F8, (q31_t)0x89BE50C3, + (q31_t)0x30FBC54D, (q31_t)0x89AB1D86, (q31_t)0x30CD5114, + (q31_t)0x8997FC89, (q31_t)0x309ED555, (q31_t)0x8984EDCF, + (q31_t)0x30705217, (q31_t)0x8971F15A, (q31_t)0x3041C760, + (q31_t)0x895F072D, (q31_t)0x30133538, (q31_t)0x894C2F4C, + (q31_t)0x2FE49BA6, (q31_t)0x893969B9, (q31_t)0x2FB5FAB2, + (q31_t)0x8926B677, (q31_t)0x2F875262, (q31_t)0x89141589, + (q31_t)0x2F58A2BD, (q31_t)0x890186F1, (q31_t)0x2F29EBCC, + (q31_t)0x88EF0AB4, (q31_t)0x2EFB2D94, (q31_t)0x88DCA0D3, + (q31_t)0x2ECC681E, (q31_t)0x88CA4951, (q31_t)0x2E9D9B70, + (q31_t)0x88B80431, (q31_t)0x2E6EC792, (q31_t)0x88A5D177, + (q31_t)0x2E3FEC8B, (q31_t)0x8893B124, (q31_t)0x2E110A62, + (q31_t)0x8881A33C, (q31_t)0x2DE2211E, (q31_t)0x886FA7C2, + (q31_t)0x2DB330C7, (q31_t)0x885DBEB7, (q31_t)0x2D843963, + (q31_t)0x884BE820, (q31_t)0x2D553AFB, (q31_t)0x883A23FE, + (q31_t)0x2D263595, (q31_t)0x88287255, (q31_t)0x2CF72939, + (q31_t)0x8816D327, (q31_t)0x2CC815ED, (q31_t)0x88054677, + (q31_t)0x2C98FBBA, (q31_t)0x87F3CC47, (q31_t)0x2C69DAA6, + (q31_t)0x87E2649B, (q31_t)0x2C3AB2B9, (q31_t)0x87D10F75, + (q31_t)0x2C0B83F9, (q31_t)0x87BFCCD7, (q31_t)0x2BDC4E6F, + (q31_t)0x87AE9CC5, (q31_t)0x2BAD1221, (q31_t)0x879D7F40, + (q31_t)0x2B7DCF17, (q31_t)0x878C744C, (q31_t)0x2B4E8558, + (q31_t)0x877B7BEC, (q31_t)0x2B1F34EB, (q31_t)0x876A9621, + (q31_t)0x2AEFDDD8, (q31_t)0x8759C2EF, (q31_t)0x2AC08025, + (q31_t)0x87490257, (q31_t)0x2A911BDB, (q31_t)0x8738545E, + (q31_t)0x2A61B101, (q31_t)0x8727B904, (q31_t)0x2A323F9D, + (q31_t)0x8717304E, (q31_t)0x2A02C7B8, (q31_t)0x8706BA3C, + (q31_t)0x29D34958, (q31_t)0x86F656D3, (q31_t)0x29A3C484, + (q31_t)0x86E60614, (q31_t)0x29743945, (q31_t)0x86D5C802, + (q31_t)0x2944A7A2, (q31_t)0x86C59C9F, (q31_t)0x29150FA1, + (q31_t)0x86B583EE, (q31_t)0x28E5714A, (q31_t)0x86A57DF1, + (q31_t)0x28B5CCA5, (q31_t)0x86958AAB, (q31_t)0x288621B9, + (q31_t)0x8685AA1F, (q31_t)0x2856708C, (q31_t)0x8675DC4E, + (q31_t)0x2826B928, (q31_t)0x8666213C, (q31_t)0x27F6FB92, + (q31_t)0x865678EA, (q31_t)0x27C737D2, (q31_t)0x8646E35B, + (q31_t)0x27976DF1, (q31_t)0x86376092, (q31_t)0x27679DF4, + (q31_t)0x8627F090, (q31_t)0x2737C7E3, (q31_t)0x86189359, + (q31_t)0x2707EBC6, (q31_t)0x860948EE, (q31_t)0x26D809A5, + (q31_t)0x85FA1152, (q31_t)0x26A82185, (q31_t)0x85EAEC88, + (q31_t)0x26783370, (q31_t)0x85DBDA91, (q31_t)0x26483F6C, + (q31_t)0x85CCDB70, (q31_t)0x26184581, (q31_t)0x85BDEF27, + (q31_t)0x25E845B5, (q31_t)0x85AF15B9, (q31_t)0x25B84012, + (q31_t)0x85A04F28, (q31_t)0x2588349D, (q31_t)0x85919B75, + (q31_t)0x2558235E, (q31_t)0x8582FAA4, (q31_t)0x25280C5D, + (q31_t)0x85746CB7, (q31_t)0x24F7EFA1, (q31_t)0x8565F1B0, + (q31_t)0x24C7CD32, (q31_t)0x85578991, (q31_t)0x2497A517, + (q31_t)0x8549345C, (q31_t)0x24677757, (q31_t)0x853AF214, + (q31_t)0x243743FA, (q31_t)0x852CC2BA, (q31_t)0x24070B07, + (q31_t)0x851EA652, (q31_t)0x23D6CC86, (q31_t)0x85109CDC, + (q31_t)0x23A6887E, (q31_t)0x8502A65C, (q31_t)0x23763EF7, + (q31_t)0x84F4C2D3, (q31_t)0x2345EFF7, (q31_t)0x84E6F244, + (q31_t)0x23159B87, (q31_t)0x84D934B0, (q31_t)0x22E541AE, + (q31_t)0x84CB8A1B, (q31_t)0x22B4E274, (q31_t)0x84BDF285, + (q31_t)0x22847DDF, (q31_t)0x84B06DF1, (q31_t)0x225413F8, + (q31_t)0x84A2FC62, (q31_t)0x2223A4C5, (q31_t)0x84959DD9, + (q31_t)0x21F3304E, (q31_t)0x84885257, (q31_t)0x21C2B69C, + (q31_t)0x847B19E1, (q31_t)0x219237B4, (q31_t)0x846DF476, + (q31_t)0x2161B39F, (q31_t)0x8460E21A, (q31_t)0x21312A65, + (q31_t)0x8453E2CE, (q31_t)0x21009C0B, (q31_t)0x8446F695, + (q31_t)0x20D0089B, (q31_t)0x843A1D70, (q31_t)0x209F701C, + (q31_t)0x842D5761, (q31_t)0x206ED295, (q31_t)0x8420A46B, + (q31_t)0x203E300D, (q31_t)0x8414048F, (q31_t)0x200D888C, + (q31_t)0x840777CF, (q31_t)0x1FDCDC1A, (q31_t)0x83FAFE2E, + (q31_t)0x1FAC2ABF, (q31_t)0x83EE97AC, (q31_t)0x1F7B7480, + (q31_t)0x83E2444D, (q31_t)0x1F4AB967, (q31_t)0x83D60411, + (q31_t)0x1F19F97B, (q31_t)0x83C9D6FB, (q31_t)0x1EE934C2, + (q31_t)0x83BDBD0D, (q31_t)0x1EB86B46, (q31_t)0x83B1B649, + (q31_t)0x1E879D0C, (q31_t)0x83A5C2B0, (q31_t)0x1E56CA1E, + (q31_t)0x8399E244, (q31_t)0x1E25F281, (q31_t)0x838E1507, + (q31_t)0x1DF5163F, (q31_t)0x83825AFB, (q31_t)0x1DC4355D, + (q31_t)0x8376B422, (q31_t)0x1D934FE5, (q31_t)0x836B207D, + (q31_t)0x1D6265DD, (q31_t)0x835FA00E, (q31_t)0x1D31774D, + (q31_t)0x835432D8, (q31_t)0x1D00843C, (q31_t)0x8348D8DB, + (q31_t)0x1CCF8CB3, (q31_t)0x833D921A, (q31_t)0x1C9E90B8, + (q31_t)0x83325E97, (q31_t)0x1C6D9053, (q31_t)0x83273E52, + (q31_t)0x1C3C8B8C, (q31_t)0x831C314E, (q31_t)0x1C0B826A, + (q31_t)0x8311378C, (q31_t)0x1BDA74F5, (q31_t)0x8306510F, + (q31_t)0x1BA96334, (q31_t)0x82FB7DD8, (q31_t)0x1B784D30, + (q31_t)0x82F0BDE8, (q31_t)0x1B4732EF, (q31_t)0x82E61141, + (q31_t)0x1B161479, (q31_t)0x82DB77E5, (q31_t)0x1AE4F1D6, + (q31_t)0x82D0F1D5, (q31_t)0x1AB3CB0C, (q31_t)0x82C67F13, + (q31_t)0x1A82A025, (q31_t)0x82BC1FA1, (q31_t)0x1A517127, + (q31_t)0x82B1D381, (q31_t)0x1A203E1B, (q31_t)0x82A79AB3, + (q31_t)0x19EF0706, (q31_t)0x829D753A, (q31_t)0x19BDCBF2, + (q31_t)0x82936316, (q31_t)0x198C8CE6, (q31_t)0x8289644A, + (q31_t)0x195B49E9, (q31_t)0x827F78D8, (q31_t)0x192A0303, + (q31_t)0x8275A0C0, (q31_t)0x18F8B83C, (q31_t)0x826BDC04, + (q31_t)0x18C7699B, (q31_t)0x82622AA5, (q31_t)0x18961727, + (q31_t)0x82588CA6, (q31_t)0x1864C0E9, (q31_t)0x824F0208, + (q31_t)0x183366E8, (q31_t)0x82458ACB, (q31_t)0x1802092C, + (q31_t)0x823C26F2, (q31_t)0x17D0A7BB, (q31_t)0x8232D67E, + (q31_t)0x179F429F, (q31_t)0x82299971, (q31_t)0x176DD9DE, + (q31_t)0x82206FCB, (q31_t)0x173C6D80, (q31_t)0x8217598F, + (q31_t)0x170AFD8D, (q31_t)0x820E56BE, (q31_t)0x16D98A0C, + (q31_t)0x82056758, (q31_t)0x16A81305, (q31_t)0x81FC8B60, + (q31_t)0x1676987F, (q31_t)0x81F3C2D7, (q31_t)0x16451A83, + (q31_t)0x81EB0DBD, (q31_t)0x16139917, (q31_t)0x81E26C16, + (q31_t)0x15E21444, (q31_t)0x81D9DDE1, (q31_t)0x15B08C11, + (q31_t)0x81D16320, (q31_t)0x157F0086, (q31_t)0x81C8FBD5, + (q31_t)0x154D71AA, (q31_t)0x81C0A801, (q31_t)0x151BDF85, + (q31_t)0x81B867A4, (q31_t)0x14EA4A1F, (q31_t)0x81B03AC1, + (q31_t)0x14B8B17F, (q31_t)0x81A82159, (q31_t)0x148715AD, + (q31_t)0x81A01B6C, (q31_t)0x145576B1, (q31_t)0x819828FD, + (q31_t)0x1423D492, (q31_t)0x81904A0C, (q31_t)0x13F22F57, + (q31_t)0x81887E9A, (q31_t)0x13C0870A, (q31_t)0x8180C6A9, + (q31_t)0x138EDBB0, (q31_t)0x8179223A, (q31_t)0x135D2D53, + (q31_t)0x8171914E, (q31_t)0x132B7BF9, (q31_t)0x816A13E6, + (q31_t)0x12F9C7AA, (q31_t)0x8162AA03, (q31_t)0x12C8106E, + (q31_t)0x815B53A8, (q31_t)0x1296564D, (q31_t)0x815410D3, + (q31_t)0x1264994E, (q31_t)0x814CE188, (q31_t)0x1232D978, + (q31_t)0x8145C5C6, (q31_t)0x120116D4, (q31_t)0x813EBD90, + (q31_t)0x11CF516A, (q31_t)0x8137C8E6, (q31_t)0x119D8940, + (q31_t)0x8130E7C8, (q31_t)0x116BBE5F, (q31_t)0x812A1A39, + (q31_t)0x1139F0CE, (q31_t)0x81236039, (q31_t)0x11082096, + (q31_t)0x811CB9CA, (q31_t)0x10D64DBC, (q31_t)0x811626EC, + (q31_t)0x10A4784A, (q31_t)0x810FA7A0, (q31_t)0x1072A047, + (q31_t)0x81093BE8, (q31_t)0x1040C5BB, (q31_t)0x8102E3C3, + (q31_t)0x100EE8AD, (q31_t)0x80FC9F35, (q31_t)0x0FDD0925, + (q31_t)0x80F66E3C, (q31_t)0x0FAB272B, (q31_t)0x80F050DB, + (q31_t)0x0F7942C6, (q31_t)0x80EA4712, (q31_t)0x0F475BFE, + (q31_t)0x80E450E2, (q31_t)0x0F1572DC, (q31_t)0x80DE6E4C, + (q31_t)0x0EE38765, (q31_t)0x80D89F51, (q31_t)0x0EB199A3, + (q31_t)0x80D2E3F1, (q31_t)0x0E7FA99D, (q31_t)0x80CD3C2F, + (q31_t)0x0E4DB75B, (q31_t)0x80C7A80A, (q31_t)0x0E1BC2E3, + (q31_t)0x80C22783, (q31_t)0x0DE9CC3F, (q31_t)0x80BCBA9C, + (q31_t)0x0DB7D376, (q31_t)0x80B76155, (q31_t)0x0D85D88F, + (q31_t)0x80B21BAF, (q31_t)0x0D53DB92, (q31_t)0x80ACE9AB, + (q31_t)0x0D21DC87, (q31_t)0x80A7CB49, (q31_t)0x0CEFDB75, + (q31_t)0x80A2C08B, (q31_t)0x0CBDD865, (q31_t)0x809DC970, + (q31_t)0x0C8BD35E, (q31_t)0x8098E5FB, (q31_t)0x0C59CC67, + (q31_t)0x8094162B, (q31_t)0x0C27C389, (q31_t)0x808F5A02, + (q31_t)0x0BF5B8CB, (q31_t)0x808AB180, (q31_t)0x0BC3AC35, + (q31_t)0x80861CA5, (q31_t)0x0B919DCE, (q31_t)0x80819B74, + (q31_t)0x0B5F8D9F, (q31_t)0x807D2DEB, (q31_t)0x0B2D7BAE, + (q31_t)0x8078D40D, (q31_t)0x0AFB6805, (q31_t)0x80748DD9, + (q31_t)0x0AC952AA, (q31_t)0x80705B50, (q31_t)0x0A973BA5, + (q31_t)0x806C3C73, (q31_t)0x0A6522FE, (q31_t)0x80683143, + (q31_t)0x0A3308BC, (q31_t)0x806439C0, (q31_t)0x0A00ECE8, + (q31_t)0x806055EA, (q31_t)0x09CECF89, (q31_t)0x805C85C3, + (q31_t)0x099CB0A7, (q31_t)0x8058C94C, (q31_t)0x096A9049, + (q31_t)0x80552083, (q31_t)0x09386E77, (q31_t)0x80518B6B, + (q31_t)0x09064B3A, (q31_t)0x804E0A03, (q31_t)0x08D42698, + (q31_t)0x804A9C4D, (q31_t)0x08A2009A, (q31_t)0x80474248, + (q31_t)0x086FD947, (q31_t)0x8043FBF6, (q31_t)0x083DB0A7, + (q31_t)0x8040C956, (q31_t)0x080B86C1, (q31_t)0x803DAA69, + (q31_t)0x07D95B9E, (q31_t)0x803A9F31, (q31_t)0x07A72F45, + (q31_t)0x8037A7AC, (q31_t)0x077501BE, (q31_t)0x8034C3DC, + (q31_t)0x0742D310, (q31_t)0x8031F3C1, (q31_t)0x0710A344, + (q31_t)0x802F375C, (q31_t)0x06DE7261, (q31_t)0x802C8EAD, + (q31_t)0x06AC406F, (q31_t)0x8029F9B4, (q31_t)0x067A0D75, + (q31_t)0x80277872, (q31_t)0x0647D97C, (q31_t)0x80250AE7, + (q31_t)0x0615A48A, (q31_t)0x8022B113, (q31_t)0x05E36EA9, + (q31_t)0x80206AF8, (q31_t)0x05B137DF, (q31_t)0x801E3894, + (q31_t)0x057F0034, (q31_t)0x801C19E9, (q31_t)0x054CC7B0, + (q31_t)0x801A0EF7, (q31_t)0x051A8E5C, (q31_t)0x801817BF, + (q31_t)0x04E8543D, (q31_t)0x80163440, (q31_t)0x04B6195D, + (q31_t)0x8014647A, (q31_t)0x0483DDC3, (q31_t)0x8012A86F, + (q31_t)0x0451A176, (q31_t)0x8011001E, (q31_t)0x041F647F, + (q31_t)0x800F6B88, (q31_t)0x03ED26E6, (q31_t)0x800DEAAC, + (q31_t)0x03BAE8B1, (q31_t)0x800C7D8C, (q31_t)0x0388A9E9, + (q31_t)0x800B2427, (q31_t)0x03566A96, (q31_t)0x8009DE7D, + (q31_t)0x03242ABF, (q31_t)0x8008AC90, (q31_t)0x02F1EA6B, + (q31_t)0x80078E5E, (q31_t)0x02BFA9A4, (q31_t)0x800683E8, + (q31_t)0x028D6870, (q31_t)0x80058D2E, (q31_t)0x025B26D7, + (q31_t)0x8004AA31, (q31_t)0x0228E4E1, (q31_t)0x8003DAF0, + (q31_t)0x01F6A296, (q31_t)0x80031F6C, (q31_t)0x01C45FFE, + (q31_t)0x800277A5, (q31_t)0x01921D1F, (q31_t)0x8001E39B, + (q31_t)0x015FDA03, (q31_t)0x8001634D, (q31_t)0x012D96B0, + (q31_t)0x8000F6BD, (q31_t)0x00FB532F, (q31_t)0x80009DE9, + (q31_t)0x00C90F88, (q31_t)0x800058D3, (q31_t)0x0096CBC1, + (q31_t)0x8000277A, (q31_t)0x006487E3, (q31_t)0x800009DE, + (q31_t)0x003243F5, (q31_t)0x80000000, (q31_t)0x00000000, + (q31_t)0x800009DE, (q31_t)0xFFCDBC0A, (q31_t)0x8000277A, + (q31_t)0xFF9B781D, (q31_t)0x800058D3, (q31_t)0xFF69343E, + (q31_t)0x80009DE9, (q31_t)0xFF36F078, (q31_t)0x8000F6BD, + (q31_t)0xFF04ACD0, (q31_t)0x8001634D, (q31_t)0xFED2694F, + (q31_t)0x8001E39B, (q31_t)0xFEA025FC, (q31_t)0x800277A5, + (q31_t)0xFE6DE2E0, (q31_t)0x80031F6C, (q31_t)0xFE3BA001, + (q31_t)0x8003DAF0, (q31_t)0xFE095D69, (q31_t)0x8004AA31, + (q31_t)0xFDD71B1E, (q31_t)0x80058D2E, (q31_t)0xFDA4D928, + (q31_t)0x800683E8, (q31_t)0xFD72978F, (q31_t)0x80078E5E, + (q31_t)0xFD40565B, (q31_t)0x8008AC90, (q31_t)0xFD0E1594, + (q31_t)0x8009DE7D, (q31_t)0xFCDBD541, (q31_t)0x800B2427, + (q31_t)0xFCA99569, (q31_t)0x800C7D8C, (q31_t)0xFC775616, + (q31_t)0x800DEAAC, (q31_t)0xFC45174E, (q31_t)0x800F6B88, + (q31_t)0xFC12D919, (q31_t)0x8011001E, (q31_t)0xFBE09B80, + (q31_t)0x8012A86F, (q31_t)0xFBAE5E89, (q31_t)0x8014647A, + (q31_t)0xFB7C223C, (q31_t)0x80163440, (q31_t)0xFB49E6A2, + (q31_t)0x801817BF, (q31_t)0xFB17ABC2, (q31_t)0x801A0EF7, + (q31_t)0xFAE571A4, (q31_t)0x801C19E9, (q31_t)0xFAB3384F, + (q31_t)0x801E3894, (q31_t)0xFA80FFCB, (q31_t)0x80206AF8, + (q31_t)0xFA4EC820, (q31_t)0x8022B113, (q31_t)0xFA1C9156, + (q31_t)0x80250AE7, (q31_t)0xF9EA5B75, (q31_t)0x80277872, + (q31_t)0xF9B82683, (q31_t)0x8029F9B4, (q31_t)0xF985F28A, + (q31_t)0x802C8EAD, (q31_t)0xF953BF90, (q31_t)0x802F375C, + (q31_t)0xF9218D9E, (q31_t)0x8031F3C1, (q31_t)0xF8EF5CBB, + (q31_t)0x8034C3DC, (q31_t)0xF8BD2CEF, (q31_t)0x8037A7AC, + (q31_t)0xF88AFE41, (q31_t)0x803A9F31, (q31_t)0xF858D0BA, + (q31_t)0x803DAA69, (q31_t)0xF826A461, (q31_t)0x8040C956, + (q31_t)0xF7F4793E, (q31_t)0x8043FBF6, (q31_t)0xF7C24F58, + (q31_t)0x80474248, (q31_t)0xF79026B8, (q31_t)0x804A9C4D, + (q31_t)0xF75DFF65, (q31_t)0x804E0A03, (q31_t)0xF72BD967, + (q31_t)0x80518B6B, (q31_t)0xF6F9B4C5, (q31_t)0x80552083, + (q31_t)0xF6C79188, (q31_t)0x8058C94C, (q31_t)0xF6956FB6, + (q31_t)0x805C85C3, (q31_t)0xF6634F58, (q31_t)0x806055EA, + (q31_t)0xF6313076, (q31_t)0x806439C0, (q31_t)0xF5FF1317, + (q31_t)0x80683143, (q31_t)0xF5CCF743, (q31_t)0x806C3C73, + (q31_t)0xF59ADD01, (q31_t)0x80705B50, (q31_t)0xF568C45A, + (q31_t)0x80748DD9, (q31_t)0xF536AD55, (q31_t)0x8078D40D, + (q31_t)0xF50497FA, (q31_t)0x807D2DEB, (q31_t)0xF4D28451, + (q31_t)0x80819B74, (q31_t)0xF4A07260, (q31_t)0x80861CA5, + (q31_t)0xF46E6231, (q31_t)0x808AB180, (q31_t)0xF43C53CA, + (q31_t)0x808F5A02, (q31_t)0xF40A4734, (q31_t)0x8094162B, + (q31_t)0xF3D83C76, (q31_t)0x8098E5FB, (q31_t)0xF3A63398, + (q31_t)0x809DC970, (q31_t)0xF3742CA1, (q31_t)0x80A2C08B, + (q31_t)0xF342279A, (q31_t)0x80A7CB49, (q31_t)0xF310248A, + (q31_t)0x80ACE9AB, (q31_t)0xF2DE2378, (q31_t)0x80B21BAF, + (q31_t)0xF2AC246D, (q31_t)0x80B76155, (q31_t)0xF27A2770, + (q31_t)0x80BCBA9C, (q31_t)0xF2482C89, (q31_t)0x80C22783, + (q31_t)0xF21633C0, (q31_t)0x80C7A80A, (q31_t)0xF1E43D1C, + (q31_t)0x80CD3C2F, (q31_t)0xF1B248A5, (q31_t)0x80D2E3F1, + (q31_t)0xF1805662, (q31_t)0x80D89F51, (q31_t)0xF14E665C, + (q31_t)0x80DE6E4C, (q31_t)0xF11C789A, (q31_t)0x80E450E2, + (q31_t)0xF0EA8D23, (q31_t)0x80EA4712, (q31_t)0xF0B8A401, + (q31_t)0x80F050DB, (q31_t)0xF086BD39, (q31_t)0x80F66E3C, + (q31_t)0xF054D8D4, (q31_t)0x80FC9F35, (q31_t)0xF022F6DA, + (q31_t)0x8102E3C3, (q31_t)0xEFF11752, (q31_t)0x81093BE8, + (q31_t)0xEFBF3A44, (q31_t)0x810FA7A0, (q31_t)0xEF8D5FB8, + (q31_t)0x811626EC, (q31_t)0xEF5B87B5, (q31_t)0x811CB9CA, + (q31_t)0xEF29B243, (q31_t)0x81236039, (q31_t)0xEEF7DF6A, + (q31_t)0x812A1A39, (q31_t)0xEEC60F31, (q31_t)0x8130E7C8, + (q31_t)0xEE9441A0, (q31_t)0x8137C8E6, (q31_t)0xEE6276BF, + (q31_t)0x813EBD90, (q31_t)0xEE30AE95, (q31_t)0x8145C5C6, + (q31_t)0xEDFEE92B, (q31_t)0x814CE188, (q31_t)0xEDCD2687, + (q31_t)0x815410D3, (q31_t)0xED9B66B2, (q31_t)0x815B53A8, + (q31_t)0xED69A9B2, (q31_t)0x8162AA03, (q31_t)0xED37EF91, + (q31_t)0x816A13E6, (q31_t)0xED063855, (q31_t)0x8171914E, + (q31_t)0xECD48406, (q31_t)0x8179223A, (q31_t)0xECA2D2AC, + (q31_t)0x8180C6A9, (q31_t)0xEC71244F, (q31_t)0x81887E9A, + (q31_t)0xEC3F78F5, (q31_t)0x81904A0C, (q31_t)0xEC0DD0A8, + (q31_t)0x819828FD, (q31_t)0xEBDC2B6D, (q31_t)0x81A01B6C, + (q31_t)0xEBAA894E, (q31_t)0x81A82159, (q31_t)0xEB78EA52, + (q31_t)0x81B03AC1, (q31_t)0xEB474E80, (q31_t)0x81B867A4, + (q31_t)0xEB15B5E0, (q31_t)0x81C0A801, (q31_t)0xEAE4207A, + (q31_t)0x81C8FBD5, (q31_t)0xEAB28E55, (q31_t)0x81D16320, + (q31_t)0xEA80FF79, (q31_t)0x81D9DDE1, (q31_t)0xEA4F73EE, + (q31_t)0x81E26C16, (q31_t)0xEA1DEBBB, (q31_t)0x81EB0DBD, + (q31_t)0xE9EC66E8, (q31_t)0x81F3C2D7, (q31_t)0xE9BAE57C, + (q31_t)0x81FC8B60, (q31_t)0xE9896780, (q31_t)0x82056758, + (q31_t)0xE957ECFB, (q31_t)0x820E56BE, (q31_t)0xE92675F4, + (q31_t)0x8217598F, (q31_t)0xE8F50273, (q31_t)0x82206FCB, + (q31_t)0xE8C3927F, (q31_t)0x82299971, (q31_t)0xE8922621, + (q31_t)0x8232D67E, (q31_t)0xE860BD60, (q31_t)0x823C26F2, + (q31_t)0xE82F5844, (q31_t)0x82458ACB, (q31_t)0xE7FDF6D3, + (q31_t)0x824F0208, (q31_t)0xE7CC9917, (q31_t)0x82588CA6, + (q31_t)0xE79B3F16, (q31_t)0x82622AA5, (q31_t)0xE769E8D8, + (q31_t)0x826BDC04, (q31_t)0xE7389664, (q31_t)0x8275A0C0, + (q31_t)0xE70747C3, (q31_t)0x827F78D8, (q31_t)0xE6D5FCFC, + (q31_t)0x8289644A, (q31_t)0xE6A4B616, (q31_t)0x82936316, + (q31_t)0xE6737319, (q31_t)0x829D753A, (q31_t)0xE642340D, + (q31_t)0x82A79AB3, (q31_t)0xE610F8F9, (q31_t)0x82B1D381, + (q31_t)0xE5DFC1E4, (q31_t)0x82BC1FA1, (q31_t)0xE5AE8ED8, + (q31_t)0x82C67F13, (q31_t)0xE57D5FDA, (q31_t)0x82D0F1D5, + (q31_t)0xE54C34F3, (q31_t)0x82DB77E5, (q31_t)0xE51B0E2A, + (q31_t)0x82E61141, (q31_t)0xE4E9EB86, (q31_t)0x82F0BDE8, + (q31_t)0xE4B8CD10, (q31_t)0x82FB7DD8, (q31_t)0xE487B2CF, + (q31_t)0x8306510F, (q31_t)0xE4569CCB, (q31_t)0x8311378C, + (q31_t)0xE4258B0A, (q31_t)0x831C314E, (q31_t)0xE3F47D95, + (q31_t)0x83273E52, (q31_t)0xE3C37473, (q31_t)0x83325E97, + (q31_t)0xE3926FAC, (q31_t)0x833D921A, (q31_t)0xE3616F47, + (q31_t)0x8348D8DB, (q31_t)0xE330734C, (q31_t)0x835432D8, + (q31_t)0xE2FF7BC3, (q31_t)0x835FA00E, (q31_t)0xE2CE88B2, + (q31_t)0x836B207D, (q31_t)0xE29D9A22, (q31_t)0x8376B422, + (q31_t)0xE26CB01A, (q31_t)0x83825AFB, (q31_t)0xE23BCAA2, + (q31_t)0x838E1507, (q31_t)0xE20AE9C1, (q31_t)0x8399E244, + (q31_t)0xE1DA0D7E, (q31_t)0x83A5C2B0, (q31_t)0xE1A935E1, + (q31_t)0x83B1B649, (q31_t)0xE17862F3, (q31_t)0x83BDBD0D, + (q31_t)0xE14794B9, (q31_t)0x83C9D6FB, (q31_t)0xE116CB3D, + (q31_t)0x83D60411, (q31_t)0xE0E60684, (q31_t)0x83E2444D, + (q31_t)0xE0B54698, (q31_t)0x83EE97AC, (q31_t)0xE0848B7F, + (q31_t)0x83FAFE2E, (q31_t)0xE053D541, (q31_t)0x840777CF, + (q31_t)0xE02323E5, (q31_t)0x8414048F, (q31_t)0xDFF27773, + (q31_t)0x8420A46B, (q31_t)0xDFC1CFF2, (q31_t)0x842D5761, + (q31_t)0xDF912D6A, (q31_t)0x843A1D70, (q31_t)0xDF608FE3, + (q31_t)0x8446F695, (q31_t)0xDF2FF764, (q31_t)0x8453E2CE, + (q31_t)0xDEFF63F4, (q31_t)0x8460E21A, (q31_t)0xDECED59B, + (q31_t)0x846DF476, (q31_t)0xDE9E4C60, (q31_t)0x847B19E1, + (q31_t)0xDE6DC84B, (q31_t)0x84885257, (q31_t)0xDE3D4963, + (q31_t)0x84959DD9, (q31_t)0xDE0CCFB1, (q31_t)0x84A2FC62, + (q31_t)0xDDDC5B3A, (q31_t)0x84B06DF1, (q31_t)0xDDABEC07, + (q31_t)0x84BDF285, (q31_t)0xDD7B8220, (q31_t)0x84CB8A1B, + (q31_t)0xDD4B1D8B, (q31_t)0x84D934B0, (q31_t)0xDD1ABE51, + (q31_t)0x84E6F244, (q31_t)0xDCEA6478, (q31_t)0x84F4C2D3, + (q31_t)0xDCBA1008, (q31_t)0x8502A65C, (q31_t)0xDC89C108, + (q31_t)0x85109CDC, (q31_t)0xDC597781, (q31_t)0x851EA652, + (q31_t)0xDC293379, (q31_t)0x852CC2BA, (q31_t)0xDBF8F4F8, + (q31_t)0x853AF214, (q31_t)0xDBC8BC05, (q31_t)0x8549345C, + (q31_t)0xDB9888A8, (q31_t)0x85578991, (q31_t)0xDB685AE8, + (q31_t)0x8565F1B0, (q31_t)0xDB3832CD, (q31_t)0x85746CB7, + (q31_t)0xDB08105E, (q31_t)0x8582FAA4, (q31_t)0xDAD7F3A2, + (q31_t)0x85919B75, (q31_t)0xDAA7DCA1, (q31_t)0x85A04F28, + (q31_t)0xDA77CB62, (q31_t)0x85AF15B9, (q31_t)0xDA47BFED, + (q31_t)0x85BDEF27, (q31_t)0xDA17BA4A, (q31_t)0x85CCDB70, + (q31_t)0xD9E7BA7E, (q31_t)0x85DBDA91, (q31_t)0xD9B7C093, + (q31_t)0x85EAEC88, (q31_t)0xD987CC8F, (q31_t)0x85FA1152, + (q31_t)0xD957DE7A, (q31_t)0x860948EE, (q31_t)0xD927F65B, + (q31_t)0x86189359, (q31_t)0xD8F81439, (q31_t)0x8627F090, + (q31_t)0xD8C8381C, (q31_t)0x86376092, (q31_t)0xD898620C, + (q31_t)0x8646E35B, (q31_t)0xD868920F, (q31_t)0x865678EA, + (q31_t)0xD838C82D, (q31_t)0x8666213C, (q31_t)0xD809046D, + (q31_t)0x8675DC4E, (q31_t)0xD7D946D7, (q31_t)0x8685AA1F, + (q31_t)0xD7A98F73, (q31_t)0x86958AAB, (q31_t)0xD779DE46, + (q31_t)0x86A57DF1, (q31_t)0xD74A335A, (q31_t)0x86B583EE, + (q31_t)0xD71A8EB5, (q31_t)0x86C59C9F, (q31_t)0xD6EAF05E, + (q31_t)0x86D5C802, (q31_t)0xD6BB585D, (q31_t)0x86E60614, + (q31_t)0xD68BC6BA, (q31_t)0x86F656D3, (q31_t)0xD65C3B7B, + (q31_t)0x8706BA3C, (q31_t)0xD62CB6A7, (q31_t)0x8717304E, + (q31_t)0xD5FD3847, (q31_t)0x8727B904, (q31_t)0xD5CDC062, + (q31_t)0x8738545E, (q31_t)0xD59E4EFE, (q31_t)0x87490257, + (q31_t)0xD56EE424, (q31_t)0x8759C2EF, (q31_t)0xD53F7FDA, + (q31_t)0x876A9621, (q31_t)0xD5102227, (q31_t)0x877B7BEC, + (q31_t)0xD4E0CB14, (q31_t)0x878C744C, (q31_t)0xD4B17AA7, + (q31_t)0x879D7F40, (q31_t)0xD48230E8, (q31_t)0x87AE9CC5, + (q31_t)0xD452EDDE, (q31_t)0x87BFCCD7, (q31_t)0xD423B190, + (q31_t)0x87D10F75, (q31_t)0xD3F47C06, (q31_t)0x87E2649B, + (q31_t)0xD3C54D46, (q31_t)0x87F3CC47, (q31_t)0xD3962559, + (q31_t)0x88054677, (q31_t)0xD3670445, (q31_t)0x8816D327, + (q31_t)0xD337EA12, (q31_t)0x88287255, (q31_t)0xD308D6C6, + (q31_t)0x883A23FE, (q31_t)0xD2D9CA6A, (q31_t)0x884BE820, + (q31_t)0xD2AAC504, (q31_t)0x885DBEB7, (q31_t)0xD27BC69C, + (q31_t)0x886FA7C2, (q31_t)0xD24CCF38, (q31_t)0x8881A33C, + (q31_t)0xD21DDEE1, (q31_t)0x8893B124, (q31_t)0xD1EEF59E, + (q31_t)0x88A5D177, (q31_t)0xD1C01374, (q31_t)0x88B80431, + (q31_t)0xD191386D, (q31_t)0x88CA4951, (q31_t)0xD162648F, + (q31_t)0x88DCA0D3, (q31_t)0xD13397E1, (q31_t)0x88EF0AB4, + (q31_t)0xD104D26B, (q31_t)0x890186F1, (q31_t)0xD0D61433, + (q31_t)0x89141589, (q31_t)0xD0A75D42, (q31_t)0x8926B677, + (q31_t)0xD078AD9D, (q31_t)0x893969B9, (q31_t)0xD04A054D, + (q31_t)0x894C2F4C, (q31_t)0xD01B6459, (q31_t)0x895F072D, + (q31_t)0xCFECCAC7, (q31_t)0x8971F15A, (q31_t)0xCFBE389F, + (q31_t)0x8984EDCF, (q31_t)0xCF8FADE8, (q31_t)0x8997FC89, + (q31_t)0xCF612AAA, (q31_t)0x89AB1D86, (q31_t)0xCF32AEEB, + (q31_t)0x89BE50C3, (q31_t)0xCF043AB2, (q31_t)0x89D1963C, + (q31_t)0xCED5CE08, (q31_t)0x89E4EDEE, (q31_t)0xCEA768F2, + (q31_t)0x89F857D8, (q31_t)0xCE790B78, (q31_t)0x8A0BD3F5, + (q31_t)0xCE4AB5A2, (q31_t)0x8A1F6242, (q31_t)0xCE1C6776, + (q31_t)0x8A3302BD, (q31_t)0xCDEE20FC, (q31_t)0x8A46B563, + (q31_t)0xCDBFE23A, (q31_t)0x8A5A7A30, (q31_t)0xCD91AB38, + (q31_t)0x8A6E5122, (q31_t)0xCD637BFD, (q31_t)0x8A823A35, + (q31_t)0xCD355490, (q31_t)0x8A963567, (q31_t)0xCD0734F8, + (q31_t)0x8AAA42B4, (q31_t)0xCCD91D3D, (q31_t)0x8ABE6219, + (q31_t)0xCCAB0D65, (q31_t)0x8AD29393, (q31_t)0xCC7D0577, + (q31_t)0x8AE6D71F, (q31_t)0xCC4F057B, (q31_t)0x8AFB2CBA, + (q31_t)0xCC210D78, (q31_t)0x8B0F9461, (q31_t)0xCBF31D75, + (q31_t)0x8B240E10, (q31_t)0xCBC53578, (q31_t)0x8B3899C5, + (q31_t)0xCB975589, (q31_t)0x8B4D377C, (q31_t)0xCB697DB0, + (q31_t)0x8B61E732, (q31_t)0xCB3BADF2, (q31_t)0x8B76A8E4, + (q31_t)0xCB0DE658, (q31_t)0x8B8B7C8F, (q31_t)0xCAE026E8, + (q31_t)0x8BA0622F, (q31_t)0xCAB26FA9, (q31_t)0x8BB559C1, + (q31_t)0xCA84C0A2, (q31_t)0x8BCA6342, (q31_t)0xCA5719DB, + (q31_t)0x8BDF7EAF, (q31_t)0xCA297B5A, (q31_t)0x8BF4AC05, + (q31_t)0xC9FBE527, (q31_t)0x8C09EB40, (q31_t)0xC9CE5748, + (q31_t)0x8C1F3C5C, (q31_t)0xC9A0D1C4, (q31_t)0x8C349F58, + (q31_t)0xC97354A3, (q31_t)0x8C4A142F, (q31_t)0xC945DFEC, + (q31_t)0x8C5F9ADD, (q31_t)0xC91873A5, (q31_t)0x8C753361, + (q31_t)0xC8EB0FD6, (q31_t)0x8C8ADDB6, (q31_t)0xC8BDB485, + (q31_t)0x8CA099D9, (q31_t)0xC89061BA, (q31_t)0x8CB667C7, + (q31_t)0xC863177B, (q31_t)0x8CCC477D, (q31_t)0xC835D5D0, + (q31_t)0x8CE238F6, (q31_t)0xC8089CBF, (q31_t)0x8CF83C30, + (q31_t)0xC7DB6C50, (q31_t)0x8D0E5127, (q31_t)0xC7AE4489, + (q31_t)0x8D2477D8, (q31_t)0xC7812571, (q31_t)0x8D3AB03F, + (q31_t)0xC7540F10, (q31_t)0x8D50FA59, (q31_t)0xC727016C, + (q31_t)0x8D675623, (q31_t)0xC6F9FC8D, (q31_t)0x8D7DC399, + (q31_t)0xC6CD0079, (q31_t)0x8D9442B7, (q31_t)0xC6A00D36, + (q31_t)0x8DAAD37B, (q31_t)0xC67322CD, (q31_t)0x8DC175E0, + (q31_t)0xC6464144, (q31_t)0x8DD829E4, (q31_t)0xC61968A2, + (q31_t)0x8DEEEF82, (q31_t)0xC5EC98ED, (q31_t)0x8E05C6B7, + (q31_t)0xC5BFD22E, (q31_t)0x8E1CAF80, (q31_t)0xC593146A, + (q31_t)0x8E33A9D9, (q31_t)0xC5665FA8, (q31_t)0x8E4AB5BF, + (q31_t)0xC539B3F0, (q31_t)0x8E61D32D, (q31_t)0xC50D1148, + (q31_t)0x8E790222, (q31_t)0xC4E077B8, (q31_t)0x8E904298, + (q31_t)0xC4B3E746, (q31_t)0x8EA7948C, (q31_t)0xC4875FF8, + (q31_t)0x8EBEF7FB, (q31_t)0xC45AE1D7, (q31_t)0x8ED66CE1, + (q31_t)0xC42E6CE8, (q31_t)0x8EEDF33B, (q31_t)0xC4020132, + (q31_t)0x8F058B04, (q31_t)0xC3D59EBD, (q31_t)0x8F1D343A, + (q31_t)0xC3A9458F, (q31_t)0x8F34EED8, (q31_t)0xC37CF5B0, + (q31_t)0x8F4CBADB, (q31_t)0xC350AF25, (q31_t)0x8F64983F, + (q31_t)0xC32471F6, (q31_t)0x8F7C8701, (q31_t)0xC2F83E2A, + (q31_t)0x8F94871D, (q31_t)0xC2CC13C7, (q31_t)0x8FAC988E, + (q31_t)0xC29FF2D4, (q31_t)0x8FC4BB53, (q31_t)0xC273DB58, + (q31_t)0x8FDCEF66, (q31_t)0xC247CD5A, (q31_t)0x8FF534C4, + (q31_t)0xC21BC8E0, (q31_t)0x900D8B69, (q31_t)0xC1EFCDF2, + (q31_t)0x9025F352, (q31_t)0xC1C3DC96, (q31_t)0x903E6C7A, + (q31_t)0xC197F4D3, (q31_t)0x9056F6DF, (q31_t)0xC16C16B0, + (q31_t)0x906F927B, (q31_t)0xC1404233, (q31_t)0x90883F4C, + (q31_t)0xC1147763, (q31_t)0x90A0FD4E, (q31_t)0xC0E8B648, + (q31_t)0x90B9CC7C, (q31_t)0xC0BCFEE7, (q31_t)0x90D2ACD3, + (q31_t)0xC0915147, (q31_t)0x90EB9E50, (q31_t)0xC065AD70, + (q31_t)0x9104A0ED, (q31_t)0xC03A1368, (q31_t)0x911DB4A8, + (q31_t)0xC00E8335, (q31_t)0x9136D97D, (q31_t)0xBFE2FCDF, + (q31_t)0x91500F67, (q31_t)0xBFB7806C, (q31_t)0x91695663, + (q31_t)0xBF8C0DE2, (q31_t)0x9182AE6C, (q31_t)0xBF60A54A, + (q31_t)0x919C1780, (q31_t)0xBF3546A8, (q31_t)0x91B5919A, + (q31_t)0xBF09F204, (q31_t)0x91CF1CB6, (q31_t)0xBEDEA765, + (q31_t)0x91E8B8D0, (q31_t)0xBEB366D1, (q31_t)0x920265E4, + (q31_t)0xBE88304F, (q31_t)0x921C23EE, (q31_t)0xBE5D03E5, + (q31_t)0x9235F2EB, (q31_t)0xBE31E19B, (q31_t)0x924FD2D6, + (q31_t)0xBE06C977, (q31_t)0x9269C3AC, (q31_t)0xBDDBBB7F, + (q31_t)0x9283C567, (q31_t)0xBDB0B7BA, (q31_t)0x929DD805, + (q31_t)0xBD85BE2F, (q31_t)0x92B7FB82, (q31_t)0xBD5ACEE5, + (q31_t)0x92D22FD8, (q31_t)0xBD2FE9E1, (q31_t)0x92EC7505, + (q31_t)0xBD050F2C, (q31_t)0x9306CB04, (q31_t)0xBCDA3ECA, + (q31_t)0x932131D1, (q31_t)0xBCAF78C3, (q31_t)0x933BA968, + (q31_t)0xBC84BD1E, (q31_t)0x935631C5, (q31_t)0xBC5A0BE1, + (q31_t)0x9370CAE4, (q31_t)0xBC2F6513, (q31_t)0x938B74C0, + (q31_t)0xBC04C8BA, (q31_t)0x93A62F56, (q31_t)0xBBDA36DC, + (q31_t)0x93C0FAA2, (q31_t)0xBBAFAF81, (q31_t)0x93DBD69F, + (q31_t)0xBB8532AF, (q31_t)0x93F6C34A, (q31_t)0xBB5AC06C, + (q31_t)0x9411C09D, (q31_t)0xBB3058C0, (q31_t)0x942CCE95, + (q31_t)0xBB05FBB0, (q31_t)0x9447ED2F, (q31_t)0xBADBA943, + (q31_t)0x94631C64, (q31_t)0xBAB1617F, (q31_t)0x947E5C32, + (q31_t)0xBA87246C, (q31_t)0x9499AC95, (q31_t)0xBA5CF210, + (q31_t)0x94B50D87, (q31_t)0xBA32CA70, (q31_t)0x94D07F05, + (q31_t)0xBA08AD94, (q31_t)0x94EC010B, (q31_t)0xB9DE9B83, + (q31_t)0x95079393, (q31_t)0xB9B49442, (q31_t)0x9523369B, + (q31_t)0xB98A97D8, (q31_t)0x953EEA1E, (q31_t)0xB960A64B, + (q31_t)0x955AAE17, (q31_t)0xB936BFA3, (q31_t)0x95768282, + (q31_t)0xB90CE3E6, (q31_t)0x9592675B, (q31_t)0xB8E31319, + (q31_t)0x95AE5C9E, (q31_t)0xB8B94D44, (q31_t)0x95CA6246, + (q31_t)0xB88F926C, (q31_t)0x95E6784F, (q31_t)0xB865E299, + (q31_t)0x96029EB5, (q31_t)0xB83C3DD1, (q31_t)0x961ED573, + (q31_t)0xB812A419, (q31_t)0x963B1C85, (q31_t)0xB7E9157A, + (q31_t)0x965773E7, (q31_t)0xB7BF91F8, (q31_t)0x9673DB94, + (q31_t)0xB796199B, (q31_t)0x96905387, (q31_t)0xB76CAC68, + (q31_t)0x96ACDBBD, (q31_t)0xB7434A67, (q31_t)0x96C97431, + (q31_t)0xB719F39D, (q31_t)0x96E61CDF, (q31_t)0xB6F0A811, + (q31_t)0x9702D5C2, (q31_t)0xB6C767CA, (q31_t)0x971F9ED6, + (q31_t)0xB69E32CD, (q31_t)0x973C7816, (q31_t)0xB6750921, + (q31_t)0x9759617E, (q31_t)0xB64BEACC, (q31_t)0x97765B0A, + (q31_t)0xB622D7D5, (q31_t)0x979364B5, (q31_t)0xB5F9D042, + (q31_t)0x97B07E7A, (q31_t)0xB5D0D41A, (q31_t)0x97CDA855, + (q31_t)0xB5A7E362, (q31_t)0x97EAE241, (q31_t)0xB57EFE21, + (q31_t)0x98082C3B, (q31_t)0xB556245E, (q31_t)0x9825863D, + (q31_t)0xB52D561E, (q31_t)0x9842F043, (q31_t)0xB5049368, + (q31_t)0x98606A48, (q31_t)0xB4DBDC42, (q31_t)0x987DF449, + (q31_t)0xB4B330B2, (q31_t)0x989B8E3F, (q31_t)0xB48A90C0, + (q31_t)0x98B93828, (q31_t)0xB461FC70, (q31_t)0x98D6F1FE, + (q31_t)0xB43973C9, (q31_t)0x98F4BBBC, (q31_t)0xB410F6D2, + (q31_t)0x9912955E, (q31_t)0xB3E88591, (q31_t)0x99307EE0, + (q31_t)0xB3C0200C, (q31_t)0x994E783C, (q31_t)0xB397C649, + (q31_t)0x996C816F, (q31_t)0xB36F784E, (q31_t)0x998A9A73, + (q31_t)0xB3473622, (q31_t)0x99A8C344, (q31_t)0xB31EFFCB, + (q31_t)0x99C6FBDE, (q31_t)0xB2F6D54F, (q31_t)0x99E5443A, + (q31_t)0xB2CEB6B5, (q31_t)0x9A039C56, (q31_t)0xB2A6A401, + (q31_t)0x9A22042C, (q31_t)0xB27E9D3B, (q31_t)0x9A407BB8, + (q31_t)0xB256A26A, (q31_t)0x9A5F02F5, (q31_t)0xB22EB392, + (q31_t)0x9A7D99DD, (q31_t)0xB206D0BA, (q31_t)0x9A9C406D, + (q31_t)0xB1DEF9E8, (q31_t)0x9ABAF6A0, (q31_t)0xB1B72F23, + (q31_t)0x9AD9BC71, (q31_t)0xB18F7070, (q31_t)0x9AF891DB, + (q31_t)0xB167BDD6, (q31_t)0x9B1776D9, (q31_t)0xB140175B, + (q31_t)0x9B366B67, (q31_t)0xB1187D05, (q31_t)0x9B556F80, + (q31_t)0xB0F0EEDA, (q31_t)0x9B748320, (q31_t)0xB0C96CDF, + (q31_t)0x9B93A640, (q31_t)0xB0A1F71C, (q31_t)0x9BB2D8DD, + (q31_t)0xB07A8D97, (q31_t)0x9BD21AF2, (q31_t)0xB0533055, + (q31_t)0x9BF16C7A, (q31_t)0xB02BDF5C, (q31_t)0x9C10CD70, + (q31_t)0xB0049AB2, (q31_t)0x9C303DCF, (q31_t)0xAFDD625F, + (q31_t)0x9C4FBD92, (q31_t)0xAFB63667, (q31_t)0x9C6F4CB5, + (q31_t)0xAF8F16D0, (q31_t)0x9C8EEB33, (q31_t)0xAF6803A1, + (q31_t)0x9CAE9907, (q31_t)0xAF40FCE0, (q31_t)0x9CCE562B, + (q31_t)0xAF1A0293, (q31_t)0x9CEE229C, (q31_t)0xAEF314BF, + (q31_t)0x9D0DFE53, (q31_t)0xAECC336B, (q31_t)0x9D2DE94D, + (q31_t)0xAEA55E9D, (q31_t)0x9D4DE384, (q31_t)0xAE7E965B, + (q31_t)0x9D6DECF4, (q31_t)0xAE57DAAA, (q31_t)0x9D8E0596, + (q31_t)0xAE312B91, (q31_t)0x9DAE2D68, (q31_t)0xAE0A8916, + (q31_t)0x9DCE6462, (q31_t)0xADE3F33E, (q31_t)0x9DEEAA82, + (q31_t)0xADBD6A10, (q31_t)0x9E0EFFC1, (q31_t)0xAD96ED91, + (q31_t)0x9E2F641A, (q31_t)0xAD707DC8, (q31_t)0x9E4FD789, + (q31_t)0xAD4A1ABA, (q31_t)0x9E705A09, (q31_t)0xAD23C46D, + (q31_t)0x9E90EB94, (q31_t)0xACFD7AE8, (q31_t)0x9EB18C26, + (q31_t)0xACD73E30, (q31_t)0x9ED23BB9, (q31_t)0xACB10E4A, + (q31_t)0x9EF2FA48, (q31_t)0xAC8AEB3E, (q31_t)0x9F13C7D0, + (q31_t)0xAC64D510, (q31_t)0x9F34A449, (q31_t)0xAC3ECBC7, + (q31_t)0x9F558FB0, (q31_t)0xAC18CF68, (q31_t)0x9F7689FF, + (q31_t)0xABF2DFFA, (q31_t)0x9F979331, (q31_t)0xABCCFD82, + (q31_t)0x9FB8AB41, (q31_t)0xABA72806, (q31_t)0x9FD9D22A, + (q31_t)0xAB815F8C, (q31_t)0x9FFB07E7, (q31_t)0xAB5BA41A, + (q31_t)0xA01C4C72, (q31_t)0xAB35F5B5, (q31_t)0xA03D9FC7, + (q31_t)0xAB105464, (q31_t)0xA05F01E1, (q31_t)0xAAEAC02B, + (q31_t)0xA08072BA, (q31_t)0xAAC53912, (q31_t)0xA0A1F24C, + (q31_t)0xAA9FBF1D, (q31_t)0xA0C38094, (q31_t)0xAA7A5253, + (q31_t)0xA0E51D8C, (q31_t)0xAA54F2B9, (q31_t)0xA106C92E, + (q31_t)0xAA2FA055, (q31_t)0xA1288376, (q31_t)0xAA0A5B2D, + (q31_t)0xA14A4C5E, (q31_t)0xA9E52347, (q31_t)0xA16C23E1, + (q31_t)0xA9BFF8A8, (q31_t)0xA18E09F9, (q31_t)0xA99ADB56, + (q31_t)0xA1AFFEA2, (q31_t)0xA975CB56, (q31_t)0xA1D201D7, + (q31_t)0xA950C8AF, (q31_t)0xA1F41391, (q31_t)0xA92BD366, + (q31_t)0xA21633CD, (q31_t)0xA906EB81, (q31_t)0xA2386283, + (q31_t)0xA8E21106, (q31_t)0xA25A9FB1, (q31_t)0xA8BD43FA, + (q31_t)0xA27CEB4F, (q31_t)0xA8988463, (q31_t)0xA29F4559, + (q31_t)0xA873D246, (q31_t)0xA2C1ADC9, (q31_t)0xA84F2DA9, + (q31_t)0xA2E4249A, (q31_t)0xA82A9693, (q31_t)0xA306A9C7, + (q31_t)0xA8060D08, (q31_t)0xA3293D4B, (q31_t)0xA7E1910E, + (q31_t)0xA34BDF20, (q31_t)0xA7BD22AB, (q31_t)0xA36E8F40, + (q31_t)0xA798C1E4, (q31_t)0xA3914DA7, (q31_t)0xA7746EC0, + (q31_t)0xA3B41A4F, (q31_t)0xA7502943, (q31_t)0xA3D6F533, + (q31_t)0xA72BF173, (q31_t)0xA3F9DE4D, (q31_t)0xA707C756, + (q31_t)0xA41CD598, (q31_t)0xA6E3AAF2, (q31_t)0xA43FDB0F, + (q31_t)0xA6BF9C4B, (q31_t)0xA462EEAC, (q31_t)0xA69B9B68, + (q31_t)0xA4861069, (q31_t)0xA677A84E, (q31_t)0xA4A94042, + (q31_t)0xA653C302, (q31_t)0xA4CC7E31, (q31_t)0xA62FEB8B, + (q31_t)0xA4EFCA31, (q31_t)0xA60C21ED, (q31_t)0xA513243B, + (q31_t)0xA5E8662F, (q31_t)0xA5368C4B, (q31_t)0xA5C4B855, + (q31_t)0xA55A025B, (q31_t)0xA5A11865, (q31_t)0xA57D8666, + (q31_t)0xA57D8666, (q31_t)0xA5A11865, (q31_t)0xA55A025B, + (q31_t)0xA5C4B855, (q31_t)0xA5368C4B, (q31_t)0xA5E8662F, + (q31_t)0xA513243B, (q31_t)0xA60C21ED, (q31_t)0xA4EFCA31, + (q31_t)0xA62FEB8B, (q31_t)0xA4CC7E31, (q31_t)0xA653C302, + (q31_t)0xA4A94042, (q31_t)0xA677A84E, (q31_t)0xA4861069, + (q31_t)0xA69B9B68, (q31_t)0xA462EEAC, (q31_t)0xA6BF9C4B, + (q31_t)0xA43FDB0F, (q31_t)0xA6E3AAF2, (q31_t)0xA41CD598, + (q31_t)0xA707C756, (q31_t)0xA3F9DE4D, (q31_t)0xA72BF173, + (q31_t)0xA3D6F533, (q31_t)0xA7502943, (q31_t)0xA3B41A4F, + (q31_t)0xA7746EC0, (q31_t)0xA3914DA7, (q31_t)0xA798C1E4, + (q31_t)0xA36E8F40, (q31_t)0xA7BD22AB, (q31_t)0xA34BDF20, + (q31_t)0xA7E1910E, (q31_t)0xA3293D4B, (q31_t)0xA8060D08, + (q31_t)0xA306A9C7, (q31_t)0xA82A9693, (q31_t)0xA2E4249A, + (q31_t)0xA84F2DA9, (q31_t)0xA2C1ADC9, (q31_t)0xA873D246, + (q31_t)0xA29F4559, (q31_t)0xA8988463, (q31_t)0xA27CEB4F, + (q31_t)0xA8BD43FA, (q31_t)0xA25A9FB1, (q31_t)0xA8E21106, + (q31_t)0xA2386283, (q31_t)0xA906EB81, (q31_t)0xA21633CD, + (q31_t)0xA92BD366, (q31_t)0xA1F41391, (q31_t)0xA950C8AF, + (q31_t)0xA1D201D7, (q31_t)0xA975CB56, (q31_t)0xA1AFFEA2, + (q31_t)0xA99ADB56, (q31_t)0xA18E09F9, (q31_t)0xA9BFF8A8, + (q31_t)0xA16C23E1, (q31_t)0xA9E52347, (q31_t)0xA14A4C5E, + (q31_t)0xAA0A5B2D, (q31_t)0xA1288376, (q31_t)0xAA2FA055, + (q31_t)0xA106C92E, (q31_t)0xAA54F2B9, (q31_t)0xA0E51D8C, + (q31_t)0xAA7A5253, (q31_t)0xA0C38094, (q31_t)0xAA9FBF1D, + (q31_t)0xA0A1F24C, (q31_t)0xAAC53912, (q31_t)0xA08072BA, + (q31_t)0xAAEAC02B, (q31_t)0xA05F01E1, (q31_t)0xAB105464, + (q31_t)0xA03D9FC7, (q31_t)0xAB35F5B5, (q31_t)0xA01C4C72, + (q31_t)0xAB5BA41A, (q31_t)0x9FFB07E7, (q31_t)0xAB815F8C, + (q31_t)0x9FD9D22A, (q31_t)0xABA72806, (q31_t)0x9FB8AB41, + (q31_t)0xABCCFD82, (q31_t)0x9F979331, (q31_t)0xABF2DFFA, + (q31_t)0x9F7689FF, (q31_t)0xAC18CF68, (q31_t)0x9F558FB0, + (q31_t)0xAC3ECBC7, (q31_t)0x9F34A449, (q31_t)0xAC64D510, + (q31_t)0x9F13C7D0, (q31_t)0xAC8AEB3E, (q31_t)0x9EF2FA48, + (q31_t)0xACB10E4A, (q31_t)0x9ED23BB9, (q31_t)0xACD73E30, + (q31_t)0x9EB18C26, (q31_t)0xACFD7AE8, (q31_t)0x9E90EB94, + (q31_t)0xAD23C46D, (q31_t)0x9E705A09, (q31_t)0xAD4A1ABA, + (q31_t)0x9E4FD789, (q31_t)0xAD707DC8, (q31_t)0x9E2F641A, + (q31_t)0xAD96ED91, (q31_t)0x9E0EFFC1, (q31_t)0xADBD6A10, + (q31_t)0x9DEEAA82, (q31_t)0xADE3F33E, (q31_t)0x9DCE6462, + (q31_t)0xAE0A8916, (q31_t)0x9DAE2D68, (q31_t)0xAE312B91, + (q31_t)0x9D8E0596, (q31_t)0xAE57DAAA, (q31_t)0x9D6DECF4, + (q31_t)0xAE7E965B, (q31_t)0x9D4DE384, (q31_t)0xAEA55E9D, + (q31_t)0x9D2DE94D, (q31_t)0xAECC336B, (q31_t)0x9D0DFE53, + (q31_t)0xAEF314BF, (q31_t)0x9CEE229C, (q31_t)0xAF1A0293, + (q31_t)0x9CCE562B, (q31_t)0xAF40FCE0, (q31_t)0x9CAE9907, + (q31_t)0xAF6803A1, (q31_t)0x9C8EEB33, (q31_t)0xAF8F16D0, + (q31_t)0x9C6F4CB5, (q31_t)0xAFB63667, (q31_t)0x9C4FBD92, + (q31_t)0xAFDD625F, (q31_t)0x9C303DCF, (q31_t)0xB0049AB2, + (q31_t)0x9C10CD70, (q31_t)0xB02BDF5C, (q31_t)0x9BF16C7A, + (q31_t)0xB0533055, (q31_t)0x9BD21AF2, (q31_t)0xB07A8D97, + (q31_t)0x9BB2D8DD, (q31_t)0xB0A1F71C, (q31_t)0x9B93A640, + (q31_t)0xB0C96CDF, (q31_t)0x9B748320, (q31_t)0xB0F0EEDA, + (q31_t)0x9B556F80, (q31_t)0xB1187D05, (q31_t)0x9B366B67, + (q31_t)0xB140175B, (q31_t)0x9B1776D9, (q31_t)0xB167BDD6, + (q31_t)0x9AF891DB, (q31_t)0xB18F7070, (q31_t)0x9AD9BC71, + (q31_t)0xB1B72F23, (q31_t)0x9ABAF6A0, (q31_t)0xB1DEF9E8, + (q31_t)0x9A9C406D, (q31_t)0xB206D0BA, (q31_t)0x9A7D99DD, + (q31_t)0xB22EB392, (q31_t)0x9A5F02F5, (q31_t)0xB256A26A, + (q31_t)0x9A407BB8, (q31_t)0xB27E9D3B, (q31_t)0x9A22042C, + (q31_t)0xB2A6A401, (q31_t)0x9A039C56, (q31_t)0xB2CEB6B5, + (q31_t)0x99E5443A, (q31_t)0xB2F6D54F, (q31_t)0x99C6FBDE, + (q31_t)0xB31EFFCB, (q31_t)0x99A8C344, (q31_t)0xB3473622, + (q31_t)0x998A9A73, (q31_t)0xB36F784E, (q31_t)0x996C816F, + (q31_t)0xB397C649, (q31_t)0x994E783C, (q31_t)0xB3C0200C, + (q31_t)0x99307EE0, (q31_t)0xB3E88591, (q31_t)0x9912955E, + (q31_t)0xB410F6D2, (q31_t)0x98F4BBBC, (q31_t)0xB43973C9, + (q31_t)0x98D6F1FE, (q31_t)0xB461FC70, (q31_t)0x98B93828, + (q31_t)0xB48A90C0, (q31_t)0x989B8E3F, (q31_t)0xB4B330B2, + (q31_t)0x987DF449, (q31_t)0xB4DBDC42, (q31_t)0x98606A48, + (q31_t)0xB5049368, (q31_t)0x9842F043, (q31_t)0xB52D561E, + (q31_t)0x9825863D, (q31_t)0xB556245E, (q31_t)0x98082C3B, + (q31_t)0xB57EFE21, (q31_t)0x97EAE241, (q31_t)0xB5A7E362, + (q31_t)0x97CDA855, (q31_t)0xB5D0D41A, (q31_t)0x97B07E7A, + (q31_t)0xB5F9D042, (q31_t)0x979364B5, (q31_t)0xB622D7D5, + (q31_t)0x97765B0A, (q31_t)0xB64BEACC, (q31_t)0x9759617E, + (q31_t)0xB6750921, (q31_t)0x973C7816, (q31_t)0xB69E32CD, + (q31_t)0x971F9ED6, (q31_t)0xB6C767CA, (q31_t)0x9702D5C2, + (q31_t)0xB6F0A811, (q31_t)0x96E61CDF, (q31_t)0xB719F39D, + (q31_t)0x96C97431, (q31_t)0xB7434A67, (q31_t)0x96ACDBBD, + (q31_t)0xB76CAC68, (q31_t)0x96905387, (q31_t)0xB796199B, + (q31_t)0x9673DB94, (q31_t)0xB7BF91F8, (q31_t)0x965773E7, + (q31_t)0xB7E9157A, (q31_t)0x963B1C85, (q31_t)0xB812A419, + (q31_t)0x961ED573, (q31_t)0xB83C3DD1, (q31_t)0x96029EB5, + (q31_t)0xB865E299, (q31_t)0x95E6784F, (q31_t)0xB88F926C, + (q31_t)0x95CA6246, (q31_t)0xB8B94D44, (q31_t)0x95AE5C9E, + (q31_t)0xB8E31319, (q31_t)0x9592675B, (q31_t)0xB90CE3E6, + (q31_t)0x95768282, (q31_t)0xB936BFA3, (q31_t)0x955AAE17, + (q31_t)0xB960A64B, (q31_t)0x953EEA1E, (q31_t)0xB98A97D8, + (q31_t)0x9523369B, (q31_t)0xB9B49442, (q31_t)0x95079393, + (q31_t)0xB9DE9B83, (q31_t)0x94EC010B, (q31_t)0xBA08AD94, + (q31_t)0x94D07F05, (q31_t)0xBA32CA70, (q31_t)0x94B50D87, + (q31_t)0xBA5CF210, (q31_t)0x9499AC95, (q31_t)0xBA87246C, + (q31_t)0x947E5C32, (q31_t)0xBAB1617F, (q31_t)0x94631C64, + (q31_t)0xBADBA943, (q31_t)0x9447ED2F, (q31_t)0xBB05FBB0, + (q31_t)0x942CCE95, (q31_t)0xBB3058C0, (q31_t)0x9411C09D, + (q31_t)0xBB5AC06C, (q31_t)0x93F6C34A, (q31_t)0xBB8532AF, + (q31_t)0x93DBD69F, (q31_t)0xBBAFAF81, (q31_t)0x93C0FAA2, + (q31_t)0xBBDA36DC, (q31_t)0x93A62F56, (q31_t)0xBC04C8BA, + (q31_t)0x938B74C0, (q31_t)0xBC2F6513, (q31_t)0x9370CAE4, + (q31_t)0xBC5A0BE1, (q31_t)0x935631C5, (q31_t)0xBC84BD1E, + (q31_t)0x933BA968, (q31_t)0xBCAF78C3, (q31_t)0x932131D1, + (q31_t)0xBCDA3ECA, (q31_t)0x9306CB04, (q31_t)0xBD050F2C, + (q31_t)0x92EC7505, (q31_t)0xBD2FE9E1, (q31_t)0x92D22FD8, + (q31_t)0xBD5ACEE5, (q31_t)0x92B7FB82, (q31_t)0xBD85BE2F, + (q31_t)0x929DD805, (q31_t)0xBDB0B7BA, (q31_t)0x9283C567, + (q31_t)0xBDDBBB7F, (q31_t)0x9269C3AC, (q31_t)0xBE06C977, + (q31_t)0x924FD2D6, (q31_t)0xBE31E19B, (q31_t)0x9235F2EB, + (q31_t)0xBE5D03E5, (q31_t)0x921C23EE, (q31_t)0xBE88304F, + (q31_t)0x920265E4, (q31_t)0xBEB366D1, (q31_t)0x91E8B8D0, + (q31_t)0xBEDEA765, (q31_t)0x91CF1CB6, (q31_t)0xBF09F204, + (q31_t)0x91B5919A, (q31_t)0xBF3546A8, (q31_t)0x919C1780, + (q31_t)0xBF60A54A, (q31_t)0x9182AE6C, (q31_t)0xBF8C0DE2, + (q31_t)0x91695663, (q31_t)0xBFB7806C, (q31_t)0x91500F67, + (q31_t)0xBFE2FCDF, (q31_t)0x9136D97D, (q31_t)0xC00E8335, + (q31_t)0x911DB4A8, (q31_t)0xC03A1368, (q31_t)0x9104A0ED, + (q31_t)0xC065AD70, (q31_t)0x90EB9E50, (q31_t)0xC0915147, + (q31_t)0x90D2ACD3, (q31_t)0xC0BCFEE7, (q31_t)0x90B9CC7C, + (q31_t)0xC0E8B648, (q31_t)0x90A0FD4E, (q31_t)0xC1147763, + (q31_t)0x90883F4C, (q31_t)0xC1404233, (q31_t)0x906F927B, + (q31_t)0xC16C16B0, (q31_t)0x9056F6DF, (q31_t)0xC197F4D3, + (q31_t)0x903E6C7A, (q31_t)0xC1C3DC96, (q31_t)0x9025F352, + (q31_t)0xC1EFCDF2, (q31_t)0x900D8B69, (q31_t)0xC21BC8E0, + (q31_t)0x8FF534C4, (q31_t)0xC247CD5A, (q31_t)0x8FDCEF66, + (q31_t)0xC273DB58, (q31_t)0x8FC4BB53, (q31_t)0xC29FF2D4, + (q31_t)0x8FAC988E, (q31_t)0xC2CC13C7, (q31_t)0x8F94871D, + (q31_t)0xC2F83E2A, (q31_t)0x8F7C8701, (q31_t)0xC32471F6, + (q31_t)0x8F64983F, (q31_t)0xC350AF25, (q31_t)0x8F4CBADB, + (q31_t)0xC37CF5B0, (q31_t)0x8F34EED8, (q31_t)0xC3A9458F, + (q31_t)0x8F1D343A, (q31_t)0xC3D59EBD, (q31_t)0x8F058B04, + (q31_t)0xC4020132, (q31_t)0x8EEDF33B, (q31_t)0xC42E6CE8, + (q31_t)0x8ED66CE1, (q31_t)0xC45AE1D7, (q31_t)0x8EBEF7FB, + (q31_t)0xC4875FF8, (q31_t)0x8EA7948C, (q31_t)0xC4B3E746, + (q31_t)0x8E904298, (q31_t)0xC4E077B8, (q31_t)0x8E790222, + (q31_t)0xC50D1148, (q31_t)0x8E61D32D, (q31_t)0xC539B3F0, + (q31_t)0x8E4AB5BF, (q31_t)0xC5665FA8, (q31_t)0x8E33A9D9, + (q31_t)0xC593146A, (q31_t)0x8E1CAF80, (q31_t)0xC5BFD22E, + (q31_t)0x8E05C6B7, (q31_t)0xC5EC98ED, (q31_t)0x8DEEEF82, + (q31_t)0xC61968A2, (q31_t)0x8DD829E4, (q31_t)0xC6464144, + (q31_t)0x8DC175E0, (q31_t)0xC67322CD, (q31_t)0x8DAAD37B, + (q31_t)0xC6A00D36, (q31_t)0x8D9442B7, (q31_t)0xC6CD0079, + (q31_t)0x8D7DC399, (q31_t)0xC6F9FC8D, (q31_t)0x8D675623, + (q31_t)0xC727016C, (q31_t)0x8D50FA59, (q31_t)0xC7540F10, + (q31_t)0x8D3AB03F, (q31_t)0xC7812571, (q31_t)0x8D2477D8, + (q31_t)0xC7AE4489, (q31_t)0x8D0E5127, (q31_t)0xC7DB6C50, + (q31_t)0x8CF83C30, (q31_t)0xC8089CBF, (q31_t)0x8CE238F6, + (q31_t)0xC835D5D0, (q31_t)0x8CCC477D, (q31_t)0xC863177B, + (q31_t)0x8CB667C7, (q31_t)0xC89061BA, (q31_t)0x8CA099D9, + (q31_t)0xC8BDB485, (q31_t)0x8C8ADDB6, (q31_t)0xC8EB0FD6, + (q31_t)0x8C753361, (q31_t)0xC91873A5, (q31_t)0x8C5F9ADD, + (q31_t)0xC945DFEC, (q31_t)0x8C4A142F, (q31_t)0xC97354A3, + (q31_t)0x8C349F58, (q31_t)0xC9A0D1C4, (q31_t)0x8C1F3C5C, + (q31_t)0xC9CE5748, (q31_t)0x8C09EB40, (q31_t)0xC9FBE527, + (q31_t)0x8BF4AC05, (q31_t)0xCA297B5A, (q31_t)0x8BDF7EAF, + (q31_t)0xCA5719DB, (q31_t)0x8BCA6342, (q31_t)0xCA84C0A2, + (q31_t)0x8BB559C1, (q31_t)0xCAB26FA9, (q31_t)0x8BA0622F, + (q31_t)0xCAE026E8, (q31_t)0x8B8B7C8F, (q31_t)0xCB0DE658, + (q31_t)0x8B76A8E4, (q31_t)0xCB3BADF2, (q31_t)0x8B61E732, + (q31_t)0xCB697DB0, (q31_t)0x8B4D377C, (q31_t)0xCB975589, + (q31_t)0x8B3899C5, (q31_t)0xCBC53578, (q31_t)0x8B240E10, + (q31_t)0xCBF31D75, (q31_t)0x8B0F9461, (q31_t)0xCC210D78, + (q31_t)0x8AFB2CBA, (q31_t)0xCC4F057B, (q31_t)0x8AE6D71F, + (q31_t)0xCC7D0577, (q31_t)0x8AD29393, (q31_t)0xCCAB0D65, + (q31_t)0x8ABE6219, (q31_t)0xCCD91D3D, (q31_t)0x8AAA42B4, + (q31_t)0xCD0734F8, (q31_t)0x8A963567, (q31_t)0xCD355490, + (q31_t)0x8A823A35, (q31_t)0xCD637BFD, (q31_t)0x8A6E5122, + (q31_t)0xCD91AB38, (q31_t)0x8A5A7A30, (q31_t)0xCDBFE23A, + (q31_t)0x8A46B563, (q31_t)0xCDEE20FC, (q31_t)0x8A3302BD, + (q31_t)0xCE1C6776, (q31_t)0x8A1F6242, (q31_t)0xCE4AB5A2, + (q31_t)0x8A0BD3F5, (q31_t)0xCE790B78, (q31_t)0x89F857D8, + (q31_t)0xCEA768F2, (q31_t)0x89E4EDEE, (q31_t)0xCED5CE08, + (q31_t)0x89D1963C, (q31_t)0xCF043AB2, (q31_t)0x89BE50C3, + (q31_t)0xCF32AEEB, (q31_t)0x89AB1D86, (q31_t)0xCF612AAA, + (q31_t)0x8997FC89, (q31_t)0xCF8FADE8, (q31_t)0x8984EDCF, + (q31_t)0xCFBE389F, (q31_t)0x8971F15A, (q31_t)0xCFECCAC7, + (q31_t)0x895F072D, (q31_t)0xD01B6459, (q31_t)0x894C2F4C, + (q31_t)0xD04A054D, (q31_t)0x893969B9, (q31_t)0xD078AD9D, + (q31_t)0x8926B677, (q31_t)0xD0A75D42, (q31_t)0x89141589, + (q31_t)0xD0D61433, (q31_t)0x890186F1, (q31_t)0xD104D26B, + (q31_t)0x88EF0AB4, (q31_t)0xD13397E1, (q31_t)0x88DCA0D3, + (q31_t)0xD162648F, (q31_t)0x88CA4951, (q31_t)0xD191386D, + (q31_t)0x88B80431, (q31_t)0xD1C01374, (q31_t)0x88A5D177, + (q31_t)0xD1EEF59E, (q31_t)0x8893B124, (q31_t)0xD21DDEE1, + (q31_t)0x8881A33C, (q31_t)0xD24CCF38, (q31_t)0x886FA7C2, + (q31_t)0xD27BC69C, (q31_t)0x885DBEB7, (q31_t)0xD2AAC504, + (q31_t)0x884BE820, (q31_t)0xD2D9CA6A, (q31_t)0x883A23FE, + (q31_t)0xD308D6C6, (q31_t)0x88287255, (q31_t)0xD337EA12, + (q31_t)0x8816D327, (q31_t)0xD3670445, (q31_t)0x88054677, + (q31_t)0xD3962559, (q31_t)0x87F3CC47, (q31_t)0xD3C54D46, + (q31_t)0x87E2649B, (q31_t)0xD3F47C06, (q31_t)0x87D10F75, + (q31_t)0xD423B190, (q31_t)0x87BFCCD7, (q31_t)0xD452EDDE, + (q31_t)0x87AE9CC5, (q31_t)0xD48230E8, (q31_t)0x879D7F40, + (q31_t)0xD4B17AA7, (q31_t)0x878C744C, (q31_t)0xD4E0CB14, + (q31_t)0x877B7BEC, (q31_t)0xD5102227, (q31_t)0x876A9621, + (q31_t)0xD53F7FDA, (q31_t)0x8759C2EF, (q31_t)0xD56EE424, + (q31_t)0x87490257, (q31_t)0xD59E4EFE, (q31_t)0x8738545E, + (q31_t)0xD5CDC062, (q31_t)0x8727B904, (q31_t)0xD5FD3847, + (q31_t)0x8717304E, (q31_t)0xD62CB6A7, (q31_t)0x8706BA3C, + (q31_t)0xD65C3B7B, (q31_t)0x86F656D3, (q31_t)0xD68BC6BA, + (q31_t)0x86E60614, (q31_t)0xD6BB585D, (q31_t)0x86D5C802, + (q31_t)0xD6EAF05E, (q31_t)0x86C59C9F, (q31_t)0xD71A8EB5, + (q31_t)0x86B583EE, (q31_t)0xD74A335A, (q31_t)0x86A57DF1, + (q31_t)0xD779DE46, (q31_t)0x86958AAB, (q31_t)0xD7A98F73, + (q31_t)0x8685AA1F, (q31_t)0xD7D946D7, (q31_t)0x8675DC4E, + (q31_t)0xD809046D, (q31_t)0x8666213C, (q31_t)0xD838C82D, + (q31_t)0x865678EA, (q31_t)0xD868920F, (q31_t)0x8646E35B, + (q31_t)0xD898620C, (q31_t)0x86376092, (q31_t)0xD8C8381C, + (q31_t)0x8627F090, (q31_t)0xD8F81439, (q31_t)0x86189359, + (q31_t)0xD927F65B, (q31_t)0x860948EE, (q31_t)0xD957DE7A, + (q31_t)0x85FA1152, (q31_t)0xD987CC8F, (q31_t)0x85EAEC88, + (q31_t)0xD9B7C093, (q31_t)0x85DBDA91, (q31_t)0xD9E7BA7E, + (q31_t)0x85CCDB70, (q31_t)0xDA17BA4A, (q31_t)0x85BDEF27, + (q31_t)0xDA47BFED, (q31_t)0x85AF15B9, (q31_t)0xDA77CB62, + (q31_t)0x85A04F28, (q31_t)0xDAA7DCA1, (q31_t)0x85919B75, + (q31_t)0xDAD7F3A2, (q31_t)0x8582FAA4, (q31_t)0xDB08105E, + (q31_t)0x85746CB7, (q31_t)0xDB3832CD, (q31_t)0x8565F1B0, + (q31_t)0xDB685AE8, (q31_t)0x85578991, (q31_t)0xDB9888A8, + (q31_t)0x8549345C, (q31_t)0xDBC8BC05, (q31_t)0x853AF214, + (q31_t)0xDBF8F4F8, (q31_t)0x852CC2BA, (q31_t)0xDC293379, + (q31_t)0x851EA652, (q31_t)0xDC597781, (q31_t)0x85109CDC, + (q31_t)0xDC89C108, (q31_t)0x8502A65C, (q31_t)0xDCBA1008, + (q31_t)0x84F4C2D3, (q31_t)0xDCEA6478, (q31_t)0x84E6F244, + (q31_t)0xDD1ABE51, (q31_t)0x84D934B0, (q31_t)0xDD4B1D8B, + (q31_t)0x84CB8A1B, (q31_t)0xDD7B8220, (q31_t)0x84BDF285, + (q31_t)0xDDABEC07, (q31_t)0x84B06DF1, (q31_t)0xDDDC5B3A, + (q31_t)0x84A2FC62, (q31_t)0xDE0CCFB1, (q31_t)0x84959DD9, + (q31_t)0xDE3D4963, (q31_t)0x84885257, (q31_t)0xDE6DC84B, + (q31_t)0x847B19E1, (q31_t)0xDE9E4C60, (q31_t)0x846DF476, + (q31_t)0xDECED59B, (q31_t)0x8460E21A, (q31_t)0xDEFF63F4, + (q31_t)0x8453E2CE, (q31_t)0xDF2FF764, (q31_t)0x8446F695, + (q31_t)0xDF608FE3, (q31_t)0x843A1D70, (q31_t)0xDF912D6A, + (q31_t)0x842D5761, (q31_t)0xDFC1CFF2, (q31_t)0x8420A46B, + (q31_t)0xDFF27773, (q31_t)0x8414048F, (q31_t)0xE02323E5, + (q31_t)0x840777CF, (q31_t)0xE053D541, (q31_t)0x83FAFE2E, + (q31_t)0xE0848B7F, (q31_t)0x83EE97AC, (q31_t)0xE0B54698, + (q31_t)0x83E2444D, (q31_t)0xE0E60684, (q31_t)0x83D60411, + (q31_t)0xE116CB3D, (q31_t)0x83C9D6FB, (q31_t)0xE14794B9, + (q31_t)0x83BDBD0D, (q31_t)0xE17862F3, (q31_t)0x83B1B649, + (q31_t)0xE1A935E1, (q31_t)0x83A5C2B0, (q31_t)0xE1DA0D7E, + (q31_t)0x8399E244, (q31_t)0xE20AE9C1, (q31_t)0x838E1507, + (q31_t)0xE23BCAA2, (q31_t)0x83825AFB, (q31_t)0xE26CB01A, + (q31_t)0x8376B422, (q31_t)0xE29D9A22, (q31_t)0x836B207D, + (q31_t)0xE2CE88B2, (q31_t)0x835FA00E, (q31_t)0xE2FF7BC3, + (q31_t)0x835432D8, (q31_t)0xE330734C, (q31_t)0x8348D8DB, + (q31_t)0xE3616F47, (q31_t)0x833D921A, (q31_t)0xE3926FAC, + (q31_t)0x83325E97, (q31_t)0xE3C37473, (q31_t)0x83273E52, + (q31_t)0xE3F47D95, (q31_t)0x831C314E, (q31_t)0xE4258B0A, + (q31_t)0x8311378C, (q31_t)0xE4569CCB, (q31_t)0x8306510F, + (q31_t)0xE487B2CF, (q31_t)0x82FB7DD8, (q31_t)0xE4B8CD10, + (q31_t)0x82F0BDE8, (q31_t)0xE4E9EB86, (q31_t)0x82E61141, + (q31_t)0xE51B0E2A, (q31_t)0x82DB77E5, (q31_t)0xE54C34F3, + (q31_t)0x82D0F1D5, (q31_t)0xE57D5FDA, (q31_t)0x82C67F13, + (q31_t)0xE5AE8ED8, (q31_t)0x82BC1FA1, (q31_t)0xE5DFC1E4, + (q31_t)0x82B1D381, (q31_t)0xE610F8F9, (q31_t)0x82A79AB3, + (q31_t)0xE642340D, (q31_t)0x829D753A, (q31_t)0xE6737319, + (q31_t)0x82936316, (q31_t)0xE6A4B616, (q31_t)0x8289644A, + (q31_t)0xE6D5FCFC, (q31_t)0x827F78D8, (q31_t)0xE70747C3, + (q31_t)0x8275A0C0, (q31_t)0xE7389664, (q31_t)0x826BDC04, + (q31_t)0xE769E8D8, (q31_t)0x82622AA5, (q31_t)0xE79B3F16, + (q31_t)0x82588CA6, (q31_t)0xE7CC9917, (q31_t)0x824F0208, + (q31_t)0xE7FDF6D3, (q31_t)0x82458ACB, (q31_t)0xE82F5844, + (q31_t)0x823C26F2, (q31_t)0xE860BD60, (q31_t)0x8232D67E, + (q31_t)0xE8922621, (q31_t)0x82299971, (q31_t)0xE8C3927F, + (q31_t)0x82206FCB, (q31_t)0xE8F50273, (q31_t)0x8217598F, + (q31_t)0xE92675F4, (q31_t)0x820E56BE, (q31_t)0xE957ECFB, + (q31_t)0x82056758, (q31_t)0xE9896780, (q31_t)0x81FC8B60, + (q31_t)0xE9BAE57C, (q31_t)0x81F3C2D7, (q31_t)0xE9EC66E8, + (q31_t)0x81EB0DBD, (q31_t)0xEA1DEBBB, (q31_t)0x81E26C16, + (q31_t)0xEA4F73EE, (q31_t)0x81D9DDE1, (q31_t)0xEA80FF79, + (q31_t)0x81D16320, (q31_t)0xEAB28E55, (q31_t)0x81C8FBD5, + (q31_t)0xEAE4207A, (q31_t)0x81C0A801, (q31_t)0xEB15B5E0, + (q31_t)0x81B867A4, (q31_t)0xEB474E80, (q31_t)0x81B03AC1, + (q31_t)0xEB78EA52, (q31_t)0x81A82159, (q31_t)0xEBAA894E, + (q31_t)0x81A01B6C, (q31_t)0xEBDC2B6D, (q31_t)0x819828FD, + (q31_t)0xEC0DD0A8, (q31_t)0x81904A0C, (q31_t)0xEC3F78F5, + (q31_t)0x81887E9A, (q31_t)0xEC71244F, (q31_t)0x8180C6A9, + (q31_t)0xECA2D2AC, (q31_t)0x8179223A, (q31_t)0xECD48406, + (q31_t)0x8171914E, (q31_t)0xED063855, (q31_t)0x816A13E6, + (q31_t)0xED37EF91, (q31_t)0x8162AA03, (q31_t)0xED69A9B2, + (q31_t)0x815B53A8, (q31_t)0xED9B66B2, (q31_t)0x815410D3, + (q31_t)0xEDCD2687, (q31_t)0x814CE188, (q31_t)0xEDFEE92B, + (q31_t)0x8145C5C6, (q31_t)0xEE30AE95, (q31_t)0x813EBD90, + (q31_t)0xEE6276BF, (q31_t)0x8137C8E6, (q31_t)0xEE9441A0, + (q31_t)0x8130E7C8, (q31_t)0xEEC60F31, (q31_t)0x812A1A39, + (q31_t)0xEEF7DF6A, (q31_t)0x81236039, (q31_t)0xEF29B243, + (q31_t)0x811CB9CA, (q31_t)0xEF5B87B5, (q31_t)0x811626EC, + (q31_t)0xEF8D5FB8, (q31_t)0x810FA7A0, (q31_t)0xEFBF3A44, + (q31_t)0x81093BE8, (q31_t)0xEFF11752, (q31_t)0x8102E3C3, + (q31_t)0xF022F6DA, (q31_t)0x80FC9F35, (q31_t)0xF054D8D4, + (q31_t)0x80F66E3C, (q31_t)0xF086BD39, (q31_t)0x80F050DB, + (q31_t)0xF0B8A401, (q31_t)0x80EA4712, (q31_t)0xF0EA8D23, + (q31_t)0x80E450E2, (q31_t)0xF11C789A, (q31_t)0x80DE6E4C, + (q31_t)0xF14E665C, (q31_t)0x80D89F51, (q31_t)0xF1805662, + (q31_t)0x80D2E3F1, (q31_t)0xF1B248A5, (q31_t)0x80CD3C2F, + (q31_t)0xF1E43D1C, (q31_t)0x80C7A80A, (q31_t)0xF21633C0, + (q31_t)0x80C22783, (q31_t)0xF2482C89, (q31_t)0x80BCBA9C, + (q31_t)0xF27A2770, (q31_t)0x80B76155, (q31_t)0xF2AC246D, + (q31_t)0x80B21BAF, (q31_t)0xF2DE2378, (q31_t)0x80ACE9AB, + (q31_t)0xF310248A, (q31_t)0x80A7CB49, (q31_t)0xF342279A, + (q31_t)0x80A2C08B, (q31_t)0xF3742CA1, (q31_t)0x809DC970, + (q31_t)0xF3A63398, (q31_t)0x8098E5FB, (q31_t)0xF3D83C76, + (q31_t)0x8094162B, (q31_t)0xF40A4734, (q31_t)0x808F5A02, + (q31_t)0xF43C53CA, (q31_t)0x808AB180, (q31_t)0xF46E6231, + (q31_t)0x80861CA5, (q31_t)0xF4A07260, (q31_t)0x80819B74, + (q31_t)0xF4D28451, (q31_t)0x807D2DEB, (q31_t)0xF50497FA, + (q31_t)0x8078D40D, (q31_t)0xF536AD55, (q31_t)0x80748DD9, + (q31_t)0xF568C45A, (q31_t)0x80705B50, (q31_t)0xF59ADD01, + (q31_t)0x806C3C73, (q31_t)0xF5CCF743, (q31_t)0x80683143, + (q31_t)0xF5FF1317, (q31_t)0x806439C0, (q31_t)0xF6313076, + (q31_t)0x806055EA, (q31_t)0xF6634F58, (q31_t)0x805C85C3, + (q31_t)0xF6956FB6, (q31_t)0x8058C94C, (q31_t)0xF6C79188, + (q31_t)0x80552083, (q31_t)0xF6F9B4C5, (q31_t)0x80518B6B, + (q31_t)0xF72BD967, (q31_t)0x804E0A03, (q31_t)0xF75DFF65, + (q31_t)0x804A9C4D, (q31_t)0xF79026B8, (q31_t)0x80474248, + (q31_t)0xF7C24F58, (q31_t)0x8043FBF6, (q31_t)0xF7F4793E, + (q31_t)0x8040C956, (q31_t)0xF826A461, (q31_t)0x803DAA69, + (q31_t)0xF858D0BA, (q31_t)0x803A9F31, (q31_t)0xF88AFE41, + (q31_t)0x8037A7AC, (q31_t)0xF8BD2CEF, (q31_t)0x8034C3DC, + (q31_t)0xF8EF5CBB, (q31_t)0x8031F3C1, (q31_t)0xF9218D9E, + (q31_t)0x802F375C, (q31_t)0xF953BF90, (q31_t)0x802C8EAD, + (q31_t)0xF985F28A, (q31_t)0x8029F9B4, (q31_t)0xF9B82683, + (q31_t)0x80277872, (q31_t)0xF9EA5B75, (q31_t)0x80250AE7, + (q31_t)0xFA1C9156, (q31_t)0x8022B113, (q31_t)0xFA4EC820, + (q31_t)0x80206AF8, (q31_t)0xFA80FFCB, (q31_t)0x801E3894, + (q31_t)0xFAB3384F, (q31_t)0x801C19E9, (q31_t)0xFAE571A4, + (q31_t)0x801A0EF7, (q31_t)0xFB17ABC2, (q31_t)0x801817BF, + (q31_t)0xFB49E6A2, (q31_t)0x80163440, (q31_t)0xFB7C223C, + (q31_t)0x8014647A, (q31_t)0xFBAE5E89, (q31_t)0x8012A86F, + (q31_t)0xFBE09B80, (q31_t)0x8011001E, (q31_t)0xFC12D919, + (q31_t)0x800F6B88, (q31_t)0xFC45174E, (q31_t)0x800DEAAC, + (q31_t)0xFC775616, (q31_t)0x800C7D8C, (q31_t)0xFCA99569, + (q31_t)0x800B2427, (q31_t)0xFCDBD541, (q31_t)0x8009DE7D, + (q31_t)0xFD0E1594, (q31_t)0x8008AC90, (q31_t)0xFD40565B, + (q31_t)0x80078E5E, (q31_t)0xFD72978F, (q31_t)0x800683E8, + (q31_t)0xFDA4D928, (q31_t)0x80058D2E, (q31_t)0xFDD71B1E, + (q31_t)0x8004AA31, (q31_t)0xFE095D69, (q31_t)0x8003DAF0, + (q31_t)0xFE3BA001, (q31_t)0x80031F6C, (q31_t)0xFE6DE2E0, + (q31_t)0x800277A5, (q31_t)0xFEA025FC, (q31_t)0x8001E39B, + (q31_t)0xFED2694F, (q31_t)0x8001634D, (q31_t)0xFF04ACD0, + (q31_t)0x8000F6BD, (q31_t)0xFF36F078, (q31_t)0x80009DE9, + (q31_t)0xFF69343E, (q31_t)0x800058D3, (q31_t)0xFF9B781D, + (q31_t)0x8000277A, (q31_t)0xFFCDBC0A, (q31_t)0x800009DE +}; + + + +/* +* @brief q15 Twiddle factors Table +*/ + + +/** +* \par +* Example code for q15 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 16 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to q15(Fixed point 1.15): +* round(twiddleCoefq15(i) * pow(2, 15)) +* +*/ +const q15_t twiddleCoef_16_q15[24] = { + (q15_t)0x7FFF, (q15_t)0x0000, + (q15_t)0x7641, (q15_t)0x30FB, + (q15_t)0x5A82, (q15_t)0x5A82, + (q15_t)0x30FB, (q15_t)0x7641, + (q15_t)0x0000, (q15_t)0x7FFF, + (q15_t)0xCF04, (q15_t)0x7641, + (q15_t)0xA57D, (q15_t)0x5A82, + (q15_t)0x89BE, (q15_t)0x30FB, + (q15_t)0x8000, (q15_t)0x0000, + (q15_t)0x89BE, (q15_t)0xCF04, + (q15_t)0xA57D, (q15_t)0xA57D, + (q15_t)0xCF04, (q15_t)0x89BE +}; + +/** +* \par +* Example code for q15 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 32 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to q15(Fixed point 1.15): +* round(twiddleCoefq15(i) * pow(2, 15)) +* +*/ +const q15_t twiddleCoef_32_q15[48] = { + (q15_t)0x7FFF, (q15_t)0x0000, + (q15_t)0x7D8A, (q15_t)0x18F8, + (q15_t)0x7641, (q15_t)0x30FB, + (q15_t)0x6A6D, (q15_t)0x471C, + (q15_t)0x5A82, (q15_t)0x5A82, + (q15_t)0x471C, (q15_t)0x6A6D, + (q15_t)0x30FB, (q15_t)0x7641, + (q15_t)0x18F8, (q15_t)0x7D8A, + (q15_t)0x0000, (q15_t)0x7FFF, + (q15_t)0xE707, (q15_t)0x7D8A, + (q15_t)0xCF04, (q15_t)0x7641, + (q15_t)0xB8E3, (q15_t)0x6A6D, + (q15_t)0xA57D, (q15_t)0x5A82, + (q15_t)0x9592, (q15_t)0x471C, + (q15_t)0x89BE, (q15_t)0x30FB, + (q15_t)0x8275, (q15_t)0x18F8, + (q15_t)0x8000, (q15_t)0x0000, + (q15_t)0x8275, (q15_t)0xE707, + (q15_t)0x89BE, (q15_t)0xCF04, + (q15_t)0x9592, (q15_t)0xB8E3, + (q15_t)0xA57D, (q15_t)0xA57D, + (q15_t)0xB8E3, (q15_t)0x9592, + (q15_t)0xCF04, (q15_t)0x89BE, + (q15_t)0xE707, (q15_t)0x8275 +}; + +/** +* \par +* Example code for q15 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 64 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to q15(Fixed point 1.15): +* round(twiddleCoefq15(i) * pow(2, 15)) +* +*/ +const q15_t twiddleCoef_64_q15[96] = { + (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7F62, (q15_t)0x0C8B, + (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7A7D, (q15_t)0x2528, + (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x70E2, (q15_t)0x3C56, + (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x62F2, (q15_t)0x5133, + (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5133, (q15_t)0x62F2, + (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x3C56, (q15_t)0x70E2, + (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2528, (q15_t)0x7A7D, + (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x0C8B, (q15_t)0x7F62, + (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xF374, (q15_t)0x7F62, + (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xDAD7, (q15_t)0x7A7D, + (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xC3A9, (q15_t)0x70E2, + (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xAECC, (q15_t)0x62F2, + (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0x9D0D, (q15_t)0x5133, + (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x8F1D, (q15_t)0x3C56, + (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8582, (q15_t)0x2528, + (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x809D, (q15_t)0x0C8B, + (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x809D, (q15_t)0xF374, + (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x8582, (q15_t)0xDAD7, + (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8F1D, (q15_t)0xC3A9, + (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9D0D, (q15_t)0xAECC, + (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xAECC, (q15_t)0x9D0D, + (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xC3A9, (q15_t)0x8F1D, + (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xDAD7, (q15_t)0x8582, + (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xF374, (q15_t)0x809D +}; + +/** +* \par +* Example code for q15 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 128 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to q15(Fixed point 1.15): +* round(twiddleCoefq15(i) * pow(2, 15)) +* +*/ +const q15_t twiddleCoef_128_q15[192] = { + (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FD8, (q15_t)0x0647, + (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7E9D, (q15_t)0x12C8, + (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7C29, (q15_t)0x1F19, + (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7884, (q15_t)0x2B1F, + (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x73B5, (q15_t)0x36BA, + (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x6DCA, (q15_t)0x41CE, + (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x66CF, (q15_t)0x4C3F, + (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x5ED7, (q15_t)0x55F5, + (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x55F5, (q15_t)0x5ED7, + (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x4C3F, (q15_t)0x66CF, + (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x41CE, (q15_t)0x6DCA, + (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x36BA, (q15_t)0x73B5, + (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2B1F, (q15_t)0x7884, + (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x1F19, (q15_t)0x7C29, + (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x12C8, (q15_t)0x7E9D, + (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0647, (q15_t)0x7FD8, + (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xF9B8, (q15_t)0x7FD8, + (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xED37, (q15_t)0x7E9D, + (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE0E6, (q15_t)0x7C29, + (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xD4E0, (q15_t)0x7884, + (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xC945, (q15_t)0x73B5, + (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xBE31, (q15_t)0x6DCA, + (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB3C0, (q15_t)0x66CF, + (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAA0A, (q15_t)0x5ED7, + (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA128, (q15_t)0x55F5, + (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9930, (q15_t)0x4C3F, + (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x9235, (q15_t)0x41CE, + (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8C4A, (q15_t)0x36BA, + (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x877B, (q15_t)0x2B1F, + (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x83D6, (q15_t)0x1F19, + (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x8162, (q15_t)0x12C8, + (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8027, (q15_t)0x0647, + (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8027, (q15_t)0xF9B8, + (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x8162, (q15_t)0xED37, + (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x83D6, (q15_t)0xE0E6, + (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x877B, (q15_t)0xD4E0, + (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8C4A, (q15_t)0xC945, + (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x9235, (q15_t)0xBE31, + (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9930, (q15_t)0xB3C0, + (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0xA128, (q15_t)0xAA0A, + (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xAA0A, (q15_t)0xA128, + (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xB3C0, (q15_t)0x9930, + (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xBE31, (q15_t)0x9235, + (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC945, (q15_t)0x8C4A, + (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xD4E0, (q15_t)0x877B, + (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xE0E6, (q15_t)0x83D6, + (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xED37, (q15_t)0x8162, + (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF9B8, (q15_t)0x8027 +}; + +/** +* \par +* Example code for q15 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 256 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to q15(Fixed point 1.15): +* round(twiddleCoefq15(i) * pow(2, 15)) +* +*/ +const q15_t twiddleCoef_256_q15[384] = { + (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FF6, (q15_t)0x0324, + (q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FA7, (q15_t)0x096A, + (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F09, (q15_t)0x0FAB, + (q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E1D, (q15_t)0x15E2, + (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7CE3, (q15_t)0x1C0B, + (q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7B5D, (q15_t)0x2223, + (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x798A, (q15_t)0x2826, + (q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x776C, (q15_t)0x2E11, + (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x7504, (q15_t)0x33DE, + (q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x7255, (q15_t)0x398C, + (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x6F5F, (q15_t)0x3F17, + (q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6C24, (q15_t)0x447A, + (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x68A6, (q15_t)0x49B4, + (q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x64E8, (q15_t)0x4EBF, + (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x60EC, (q15_t)0x539B, + (q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5CB4, (q15_t)0x5842, + (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5842, (q15_t)0x5CB4, + (q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x539B, (q15_t)0x60EC, + (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x4EBF, (q15_t)0x64E8, + (q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x49B4, (q15_t)0x68A6, + (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x447A, (q15_t)0x6C24, + (q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x3F17, (q15_t)0x6F5F, + (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x398C, (q15_t)0x7255, + (q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x33DE, (q15_t)0x7504, + (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2E11, (q15_t)0x776C, + (q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2826, (q15_t)0x798A, + (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x2223, (q15_t)0x7B5D, + (q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1C0B, (q15_t)0x7CE3, + (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x15E2, (q15_t)0x7E1D, + (q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x0FAB, (q15_t)0x7F09, + (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x096A, (q15_t)0x7FA7, + (q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x0324, (q15_t)0x7FF6, + (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFCDB, (q15_t)0x7FF6, + (q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF695, (q15_t)0x7FA7, + (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF054, (q15_t)0x7F09, + (q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xEA1D, (q15_t)0x7E1D, + (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE3F4, (q15_t)0x7CE3, + (q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xDDDC, (q15_t)0x7B5D, + (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xD7D9, (q15_t)0x798A, + (q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD1EE, (q15_t)0x776C, + (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCC21, (q15_t)0x7504, + (q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC673, (q15_t)0x7255, + (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC0E8, (q15_t)0x6F5F, + (q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBB85, (q15_t)0x6C24, + (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB64B, (q15_t)0x68A6, + (q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB140, (q15_t)0x64E8, + (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAC64, (q15_t)0x60EC, + (q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA7BD, (q15_t)0x5CB4, + (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA34B, (q15_t)0x5842, + (q15_t)0xA128, (q15_t)0x55F5, (q15_t)0x9F13, (q15_t)0x539B, + (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9B17, (q15_t)0x4EBF, + (q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x9759, (q15_t)0x49B4, + (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x93DB, (q15_t)0x447A, + (q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x90A0, (q15_t)0x3F17, + (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8DAA, (q15_t)0x398C, + (q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8AFB, (q15_t)0x33DE, + (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8893, (q15_t)0x2E11, + (q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x8675, (q15_t)0x2826, + (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x84A2, (q15_t)0x2223, + (q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x831C, (q15_t)0x1C0B, + (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x81E2, (q15_t)0x15E2, + (q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x80F6, (q15_t)0x0FAB, + (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8058, (q15_t)0x096A, + (q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8009, (q15_t)0x0324, + (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8009, (q15_t)0xFCDB, + (q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x8058, (q15_t)0xF695, + (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80F6, (q15_t)0xF054, + (q15_t)0x8162, (q15_t)0xED37, (q15_t)0x81E2, (q15_t)0xEA1D, + (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x831C, (q15_t)0xE3F4, + (q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x84A2, (q15_t)0xDDDC, + (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x8675, (q15_t)0xD7D9, + (q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x8893, (q15_t)0xD1EE, + (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8AFB, (q15_t)0xCC21, + (q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8DAA, (q15_t)0xC673, + (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x90A0, (q15_t)0xC0E8, + (q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x93DB, (q15_t)0xBB85, + (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9759, (q15_t)0xB64B, + (q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x9B17, (q15_t)0xB140, + (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9F13, (q15_t)0xAC64, + (q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA34B, (q15_t)0xA7BD, + (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA7BD, (q15_t)0xA34B, + (q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAC64, (q15_t)0x9F13, + (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xB140, (q15_t)0x9B17, + (q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB64B, (q15_t)0x9759, + (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xBB85, (q15_t)0x93DB, + (q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xC0E8, (q15_t)0x90A0, + (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC673, (q15_t)0x8DAA, + (q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xCC21, (q15_t)0x8AFB, + (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xD1EE, (q15_t)0x8893, + (q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD7D9, (q15_t)0x8675, + (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDDDC, (q15_t)0x84A2, + (q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE3F4, (q15_t)0x831C, + (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xEA1D, (q15_t)0x81E2, + (q15_t)0xED37, (q15_t)0x8162, (q15_t)0xF054, (q15_t)0x80F6, + (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF695, (q15_t)0x8058, + (q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFCDB, (q15_t)0x8009 +}; + +/** +* \par +* Example code for q15 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 512 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to q15(Fixed point 1.15): +* round(twiddleCoefq15(i) * pow(2, 15)) +* +*/ +const q15_t twiddleCoef_512_q15[768] = { + (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFD, (q15_t)0x0192, + (q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FE9, (q15_t)0x04B6, + (q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FC2, (q15_t)0x07D9, + (q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7F87, (q15_t)0x0AFB, + (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F38, (q15_t)0x0E1B, + (q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7ED5, (q15_t)0x1139, + (q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E5F, (q15_t)0x1455, + (q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7DD6, (q15_t)0x176D, + (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D39, (q15_t)0x1A82, + (q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7C89, (q15_t)0x1D93, + (q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7BC5, (q15_t)0x209F, + (q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7AEF, (q15_t)0x23A6, + (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A05, (q15_t)0x26A8, + (q15_t)0x798A, (q15_t)0x2826, (q15_t)0x7909, (q15_t)0x29A3, + (q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x77FA, (q15_t)0x2C98, + (q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x76D9, (q15_t)0x2F87, + (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x75A5, (q15_t)0x326E, + (q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x745F, (q15_t)0x354D, + (q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x7307, (q15_t)0x3824, + (q15_t)0x7255, (q15_t)0x398C, (q15_t)0x719E, (q15_t)0x3AF2, + (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x7023, (q15_t)0x3DB8, + (q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6E96, (q15_t)0x4073, + (q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6CF9, (q15_t)0x4325, + (q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6B4A, (q15_t)0x45CD, + (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x698C, (q15_t)0x4869, + (q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x67BD, (q15_t)0x4AFB, + (q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x65DD, (q15_t)0x4D81, + (q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x63EF, (q15_t)0x4FFB, + (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x61F1, (q15_t)0x5269, + (q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x5FE3, (q15_t)0x54CA, + (q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5DC7, (q15_t)0x571D, + (q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5B9D, (q15_t)0x5964, + (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5964, (q15_t)0x5B9D, + (q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x571D, (q15_t)0x5DC7, + (q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x54CA, (q15_t)0x5FE3, + (q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x5269, (q15_t)0x61F1, + (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x4FFB, (q15_t)0x63EF, + (q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4D81, (q15_t)0x65DD, + (q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4AFB, (q15_t)0x67BD, + (q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x4869, (q15_t)0x698C, + (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x45CD, (q15_t)0x6B4A, + (q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x4325, (q15_t)0x6CF9, + (q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x4073, (q15_t)0x6E96, + (q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3DB8, (q15_t)0x7023, + (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3AF2, (q15_t)0x719E, + (q15_t)0x398C, (q15_t)0x7255, (q15_t)0x3824, (q15_t)0x7307, + (q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x354D, (q15_t)0x745F, + (q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x326E, (q15_t)0x75A5, + (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x2F87, (q15_t)0x76D9, + (q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2C98, (q15_t)0x77FA, + (q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x29A3, (q15_t)0x7909, + (q15_t)0x2826, (q15_t)0x798A, (q15_t)0x26A8, (q15_t)0x7A05, + (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x23A6, (q15_t)0x7AEF, + (q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x209F, (q15_t)0x7BC5, + (q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1D93, (q15_t)0x7C89, + (q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1A82, (q15_t)0x7D39, + (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x176D, (q15_t)0x7DD6, + (q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x1455, (q15_t)0x7E5F, + (q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1139, (q15_t)0x7ED5, + (q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0E1B, (q15_t)0x7F38, + (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0AFB, (q15_t)0x7F87, + (q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x07D9, (q15_t)0x7FC2, + (q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x04B6, (q15_t)0x7FE9, + (q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x0192, (q15_t)0x7FFD, + (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFE6D, (q15_t)0x7FFD, + (q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFB49, (q15_t)0x7FE9, + (q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF826, (q15_t)0x7FC2, + (q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF504, (q15_t)0x7F87, + (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF1E4, (q15_t)0x7F38, + (q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xEEC6, (q15_t)0x7ED5, + (q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xEBAA, (q15_t)0x7E5F, + (q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE892, (q15_t)0x7DD6, + (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE57D, (q15_t)0x7D39, + (q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE26C, (q15_t)0x7C89, + (q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xDF60, (q15_t)0x7BC5, + (q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDC59, (q15_t)0x7AEF, + (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xD957, (q15_t)0x7A05, + (q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD65C, (q15_t)0x7909, + (q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD367, (q15_t)0x77FA, + (q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD078, (q15_t)0x76D9, + (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCD91, (q15_t)0x75A5, + (q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCAB2, (q15_t)0x745F, + (q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC7DB, (q15_t)0x7307, + (q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC50D, (q15_t)0x719E, + (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC247, (q15_t)0x7023, + (q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xBF8C, (q15_t)0x6E96, + (q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBCDA, (q15_t)0x6CF9, + (q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBA32, (q15_t)0x6B4A, + (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB796, (q15_t)0x698C, + (q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB504, (q15_t)0x67BD, + (q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB27E, (q15_t)0x65DD, + (q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB004, (q15_t)0x63EF, + (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAD96, (q15_t)0x61F1, + (q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xAB35, (q15_t)0x5FE3, + (q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA8E2, (q15_t)0x5DC7, + (q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA69B, (q15_t)0x5B9D, + (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA462, (q15_t)0x5964, + (q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA238, (q15_t)0x571D, + (q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA01C, (q15_t)0x54CA, + (q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9E0E, (q15_t)0x5269, + (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9C10, (q15_t)0x4FFB, + (q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9A22, (q15_t)0x4D81, + (q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x9842, (q15_t)0x4AFB, + (q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x9673, (q15_t)0x4869, + (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x94B5, (q15_t)0x45CD, + (q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x9306, (q15_t)0x4325, + (q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x9169, (q15_t)0x4073, + (q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x8FDC, (q15_t)0x3DB8, + (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8E61, (q15_t)0x3AF2, + (q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8CF8, (q15_t)0x3824, + (q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8BA0, (q15_t)0x354D, + (q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8A5A, (q15_t)0x326E, + (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8926, (q15_t)0x2F87, + (q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x8805, (q15_t)0x2C98, + (q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x86F6, (q15_t)0x29A3, + (q15_t)0x8675, (q15_t)0x2826, (q15_t)0x85FA, (q15_t)0x26A8, + (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8510, (q15_t)0x23A6, + (q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x843A, (q15_t)0x209F, + (q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x8376, (q15_t)0x1D93, + (q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x82C6, (q15_t)0x1A82, + (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x8229, (q15_t)0x176D, + (q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81A0, (q15_t)0x1455, + (q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x812A, (q15_t)0x1139, + (q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80C7, (q15_t)0x0E1B, + (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8078, (q15_t)0x0AFB, + (q15_t)0x8058, (q15_t)0x096A, (q15_t)0x803D, (q15_t)0x07D9, + (q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8016, (q15_t)0x04B6, + (q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8002, (q15_t)0x0192, + (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8002, (q15_t)0xFE6D, + (q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x8016, (q15_t)0xFB49, + (q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x803D, (q15_t)0xF826, + (q15_t)0x8058, (q15_t)0xF695, (q15_t)0x8078, (q15_t)0xF504, + (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80C7, (q15_t)0xF1E4, + (q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x812A, (q15_t)0xEEC6, + (q15_t)0x8162, (q15_t)0xED37, (q15_t)0x81A0, (q15_t)0xEBAA, + (q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x8229, (q15_t)0xE892, + (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x82C6, (q15_t)0xE57D, + (q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8376, (q15_t)0xE26C, + (q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x843A, (q15_t)0xDF60, + (q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x8510, (q15_t)0xDC59, + (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x85FA, (q15_t)0xD957, + (q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x86F6, (q15_t)0xD65C, + (q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x8805, (q15_t)0xD367, + (q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x8926, (q15_t)0xD078, + (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8A5A, (q15_t)0xCD91, + (q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8BA0, (q15_t)0xCAB2, + (q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8CF8, (q15_t)0xC7DB, + (q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8E61, (q15_t)0xC50D, + (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8FDC, (q15_t)0xC247, + (q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x9169, (q15_t)0xBF8C, + (q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x9306, (q15_t)0xBCDA, + (q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x94B5, (q15_t)0xBA32, + (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9673, (q15_t)0xB796, + (q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x9842, (q15_t)0xB504, + (q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x9A22, (q15_t)0xB27E, + (q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9C10, (q15_t)0xB004, + (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9E0E, (q15_t)0xAD96, + (q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0xA01C, (q15_t)0xAB35, + (q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA238, (q15_t)0xA8E2, + (q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA462, (q15_t)0xA69B, + (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA69B, (q15_t)0xA462, + (q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA8E2, (q15_t)0xA238, + (q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAB35, (q15_t)0xA01C, + (q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xAD96, (q15_t)0x9E0E, + (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xB004, (q15_t)0x9C10, + (q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB27E, (q15_t)0x9A22, + (q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB504, (q15_t)0x9842, + (q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB796, (q15_t)0x9673, + (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xBA32, (q15_t)0x94B5, + (q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBCDA, (q15_t)0x9306, + (q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBF8C, (q15_t)0x9169, + (q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC247, (q15_t)0x8FDC, + (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC50D, (q15_t)0x8E61, + (q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC7DB, (q15_t)0x8CF8, + (q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xCAB2, (q15_t)0x8BA0, + (q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCD91, (q15_t)0x8A5A, + (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xD078, (q15_t)0x8926, + (q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD367, (q15_t)0x8805, + (q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD65C, (q15_t)0x86F6, + (q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD957, (q15_t)0x85FA, + (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDC59, (q15_t)0x8510, + (q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDF60, (q15_t)0x843A, + (q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE26C, (q15_t)0x8376, + (q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE57D, (q15_t)0x82C6, + (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE892, (q15_t)0x8229, + (q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEBAA, (q15_t)0x81A0, + (q15_t)0xED37, (q15_t)0x8162, (q15_t)0xEEC6, (q15_t)0x812A, + (q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF1E4, (q15_t)0x80C7, + (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF504, (q15_t)0x8078, + (q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF826, (q15_t)0x803D, + (q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFB49, (q15_t)0x8016, + (q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFE6D, (q15_t)0x8002 +}; + +/** +* \par +* Example code for q15 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 1024 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to q15(Fixed point 1.15): +* round(twiddleCoefq15(i) * pow(2, 15)) +* +*/ +const q15_t twiddleCoef_1024_q15[1536] = { + (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0x00C9, + (q15_t)0x7FFD, (q15_t)0x0192, (q15_t)0x7FFA, (q15_t)0x025B, + (q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FF0, (q15_t)0x03ED, + (q15_t)0x7FE9, (q15_t)0x04B6, (q15_t)0x7FE1, (q15_t)0x057F, + (q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FCE, (q15_t)0x0710, + (q15_t)0x7FC2, (q15_t)0x07D9, (q15_t)0x7FB5, (q15_t)0x08A2, + (q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7F97, (q15_t)0x0A33, + (q15_t)0x7F87, (q15_t)0x0AFB, (q15_t)0x7F75, (q15_t)0x0BC3, + (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F4D, (q15_t)0x0D53, + (q15_t)0x7F38, (q15_t)0x0E1B, (q15_t)0x7F21, (q15_t)0x0EE3, + (q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7EF0, (q15_t)0x1072, + (q15_t)0x7ED5, (q15_t)0x1139, (q15_t)0x7EBA, (q15_t)0x1201, + (q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E7F, (q15_t)0x138E, + (q15_t)0x7E5F, (q15_t)0x1455, (q15_t)0x7E3F, (q15_t)0x151B, + (q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7DFA, (q15_t)0x16A8, + (q15_t)0x7DD6, (q15_t)0x176D, (q15_t)0x7DB0, (q15_t)0x1833, + (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D62, (q15_t)0x19BD, + (q15_t)0x7D39, (q15_t)0x1A82, (q15_t)0x7D0F, (q15_t)0x1B47, + (q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7CB7, (q15_t)0x1CCF, + (q15_t)0x7C89, (q15_t)0x1D93, (q15_t)0x7C5A, (q15_t)0x1E56, + (q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7BF8, (q15_t)0x1FDC, + (q15_t)0x7BC5, (q15_t)0x209F, (q15_t)0x7B92, (q15_t)0x2161, + (q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7B26, (q15_t)0x22E5, + (q15_t)0x7AEF, (q15_t)0x23A6, (q15_t)0x7AB6, (q15_t)0x2467, + (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A42, (q15_t)0x25E8, + (q15_t)0x7A05, (q15_t)0x26A8, (q15_t)0x79C8, (q15_t)0x2767, + (q15_t)0x798A, (q15_t)0x2826, (q15_t)0x794A, (q15_t)0x28E5, + (q15_t)0x7909, (q15_t)0x29A3, (q15_t)0x78C7, (q15_t)0x2A61, + (q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x7840, (q15_t)0x2BDC, + (q15_t)0x77FA, (q15_t)0x2C98, (q15_t)0x77B4, (q15_t)0x2D55, + (q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x7723, (q15_t)0x2ECC, + (q15_t)0x76D9, (q15_t)0x2F87, (q15_t)0x768E, (q15_t)0x3041, + (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x75F4, (q15_t)0x31B5, + (q15_t)0x75A5, (q15_t)0x326E, (q15_t)0x7555, (q15_t)0x3326, + (q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x74B2, (q15_t)0x3496, + (q15_t)0x745F, (q15_t)0x354D, (q15_t)0x740B, (q15_t)0x3604, + (q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x735F, (q15_t)0x376F, + (q15_t)0x7307, (q15_t)0x3824, (q15_t)0x72AF, (q15_t)0x38D8, + (q15_t)0x7255, (q15_t)0x398C, (q15_t)0x71FA, (q15_t)0x3A40, + (q15_t)0x719E, (q15_t)0x3AF2, (q15_t)0x7141, (q15_t)0x3BA5, + (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x7083, (q15_t)0x3D07, + (q15_t)0x7023, (q15_t)0x3DB8, (q15_t)0x6FC1, (q15_t)0x3E68, + (q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6EFB, (q15_t)0x3FC5, + (q15_t)0x6E96, (q15_t)0x4073, (q15_t)0x6E30, (q15_t)0x4121, + (q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6D62, (q15_t)0x427A, + (q15_t)0x6CF9, (q15_t)0x4325, (q15_t)0x6C8F, (q15_t)0x43D0, + (q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6BB8, (q15_t)0x4524, + (q15_t)0x6B4A, (q15_t)0x45CD, (q15_t)0x6ADC, (q15_t)0x4675, + (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x69FD, (q15_t)0x47C3, + (q15_t)0x698C, (q15_t)0x4869, (q15_t)0x6919, (q15_t)0x490F, + (q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x6832, (q15_t)0x4A58, + (q15_t)0x67BD, (q15_t)0x4AFB, (q15_t)0x6746, (q15_t)0x4B9E, + (q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x6657, (q15_t)0x4CE1, + (q15_t)0x65DD, (q15_t)0x4D81, (q15_t)0x6563, (q15_t)0x4E21, + (q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x646C, (q15_t)0x4F5E, + (q15_t)0x63EF, (q15_t)0x4FFB, (q15_t)0x6371, (q15_t)0x5097, + (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x6271, (q15_t)0x51CE, + (q15_t)0x61F1, (q15_t)0x5269, (q15_t)0x616F, (q15_t)0x5302, + (q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x6068, (q15_t)0x5433, + (q15_t)0x5FE3, (q15_t)0x54CA, (q15_t)0x5F5E, (q15_t)0x5560, + (q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5E50, (q15_t)0x568A, + (q15_t)0x5DC7, (q15_t)0x571D, (q15_t)0x5D3E, (q15_t)0x57B0, + (q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5C29, (q15_t)0x58D4, + (q15_t)0x5B9D, (q15_t)0x5964, (q15_t)0x5B10, (q15_t)0x59F3, + (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x59F3, (q15_t)0x5B10, + (q15_t)0x5964, (q15_t)0x5B9D, (q15_t)0x58D4, (q15_t)0x5C29, + (q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x57B0, (q15_t)0x5D3E, + (q15_t)0x571D, (q15_t)0x5DC7, (q15_t)0x568A, (q15_t)0x5E50, + (q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x5560, (q15_t)0x5F5E, + (q15_t)0x54CA, (q15_t)0x5FE3, (q15_t)0x5433, (q15_t)0x6068, + (q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x5302, (q15_t)0x616F, + (q15_t)0x5269, (q15_t)0x61F1, (q15_t)0x51CE, (q15_t)0x6271, + (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x5097, (q15_t)0x6371, + (q15_t)0x4FFB, (q15_t)0x63EF, (q15_t)0x4F5E, (q15_t)0x646C, + (q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4E21, (q15_t)0x6563, + (q15_t)0x4D81, (q15_t)0x65DD, (q15_t)0x4CE1, (q15_t)0x6657, + (q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4B9E, (q15_t)0x6746, + (q15_t)0x4AFB, (q15_t)0x67BD, (q15_t)0x4A58, (q15_t)0x6832, + (q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x490F, (q15_t)0x6919, + (q15_t)0x4869, (q15_t)0x698C, (q15_t)0x47C3, (q15_t)0x69FD, + (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x4675, (q15_t)0x6ADC, + (q15_t)0x45CD, (q15_t)0x6B4A, (q15_t)0x4524, (q15_t)0x6BB8, + (q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x43D0, (q15_t)0x6C8F, + (q15_t)0x4325, (q15_t)0x6CF9, (q15_t)0x427A, (q15_t)0x6D62, + (q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x4121, (q15_t)0x6E30, + (q15_t)0x4073, (q15_t)0x6E96, (q15_t)0x3FC5, (q15_t)0x6EFB, + (q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3E68, (q15_t)0x6FC1, + (q15_t)0x3DB8, (q15_t)0x7023, (q15_t)0x3D07, (q15_t)0x7083, + (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3BA5, (q15_t)0x7141, + (q15_t)0x3AF2, (q15_t)0x719E, (q15_t)0x3A40, (q15_t)0x71FA, + (q15_t)0x398C, (q15_t)0x7255, (q15_t)0x38D8, (q15_t)0x72AF, + (q15_t)0x3824, (q15_t)0x7307, (q15_t)0x376F, (q15_t)0x735F, + (q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x3604, (q15_t)0x740B, + (q15_t)0x354D, (q15_t)0x745F, (q15_t)0x3496, (q15_t)0x74B2, + (q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x3326, (q15_t)0x7555, + (q15_t)0x326E, (q15_t)0x75A5, (q15_t)0x31B5, (q15_t)0x75F4, + (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x3041, (q15_t)0x768E, + (q15_t)0x2F87, (q15_t)0x76D9, (q15_t)0x2ECC, (q15_t)0x7723, + (q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2D55, (q15_t)0x77B4, + (q15_t)0x2C98, (q15_t)0x77FA, (q15_t)0x2BDC, (q15_t)0x7840, + (q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2A61, (q15_t)0x78C7, + (q15_t)0x29A3, (q15_t)0x7909, (q15_t)0x28E5, (q15_t)0x794A, + (q15_t)0x2826, (q15_t)0x798A, (q15_t)0x2767, (q15_t)0x79C8, + (q15_t)0x26A8, (q15_t)0x7A05, (q15_t)0x25E8, (q15_t)0x7A42, + (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x2467, (q15_t)0x7AB6, + (q15_t)0x23A6, (q15_t)0x7AEF, (q15_t)0x22E5, (q15_t)0x7B26, + (q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x2161, (q15_t)0x7B92, + (q15_t)0x209F, (q15_t)0x7BC5, (q15_t)0x1FDC, (q15_t)0x7BF8, + (q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1E56, (q15_t)0x7C5A, + (q15_t)0x1D93, (q15_t)0x7C89, (q15_t)0x1CCF, (q15_t)0x7CB7, + (q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1B47, (q15_t)0x7D0F, + (q15_t)0x1A82, (q15_t)0x7D39, (q15_t)0x19BD, (q15_t)0x7D62, + (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x1833, (q15_t)0x7DB0, + (q15_t)0x176D, (q15_t)0x7DD6, (q15_t)0x16A8, (q15_t)0x7DFA, + (q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x151B, (q15_t)0x7E3F, + (q15_t)0x1455, (q15_t)0x7E5F, (q15_t)0x138E, (q15_t)0x7E7F, + (q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1201, (q15_t)0x7EBA, + (q15_t)0x1139, (q15_t)0x7ED5, (q15_t)0x1072, (q15_t)0x7EF0, + (q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0EE3, (q15_t)0x7F21, + (q15_t)0x0E1B, (q15_t)0x7F38, (q15_t)0x0D53, (q15_t)0x7F4D, + (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0BC3, (q15_t)0x7F75, + (q15_t)0x0AFB, (q15_t)0x7F87, (q15_t)0x0A33, (q15_t)0x7F97, + (q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x08A2, (q15_t)0x7FB5, + (q15_t)0x07D9, (q15_t)0x7FC2, (q15_t)0x0710, (q15_t)0x7FCE, + (q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x057F, (q15_t)0x7FE1, + (q15_t)0x04B6, (q15_t)0x7FE9, (q15_t)0x03ED, (q15_t)0x7FF0, + (q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x025B, (q15_t)0x7FFA, + (q15_t)0x0192, (q15_t)0x7FFD, (q15_t)0x00C9, (q15_t)0x7FFF, + (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFF36, (q15_t)0x7FFF, + (q15_t)0xFE6D, (q15_t)0x7FFD, (q15_t)0xFDA4, (q15_t)0x7FFA, + (q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFC12, (q15_t)0x7FF0, + (q15_t)0xFB49, (q15_t)0x7FE9, (q15_t)0xFA80, (q15_t)0x7FE1, + (q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF8EF, (q15_t)0x7FCE, + (q15_t)0xF826, (q15_t)0x7FC2, (q15_t)0xF75D, (q15_t)0x7FB5, + (q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF5CC, (q15_t)0x7F97, + (q15_t)0xF504, (q15_t)0x7F87, (q15_t)0xF43C, (q15_t)0x7F75, + (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF2AC, (q15_t)0x7F4D, + (q15_t)0xF1E4, (q15_t)0x7F38, (q15_t)0xF11C, (q15_t)0x7F21, + (q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xEF8D, (q15_t)0x7EF0, + (q15_t)0xEEC6, (q15_t)0x7ED5, (q15_t)0xEDFE, (q15_t)0x7EBA, + (q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xEC71, (q15_t)0x7E7F, + (q15_t)0xEBAA, (q15_t)0x7E5F, (q15_t)0xEAE4, (q15_t)0x7E3F, + (q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE957, (q15_t)0x7DFA, + (q15_t)0xE892, (q15_t)0x7DD6, (q15_t)0xE7CC, (q15_t)0x7DB0, + (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE642, (q15_t)0x7D62, + (q15_t)0xE57D, (q15_t)0x7D39, (q15_t)0xE4B8, (q15_t)0x7D0F, + (q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE330, (q15_t)0x7CB7, + (q15_t)0xE26C, (q15_t)0x7C89, (q15_t)0xE1A9, (q15_t)0x7C5A, + (q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xE023, (q15_t)0x7BF8, + (q15_t)0xDF60, (q15_t)0x7BC5, (q15_t)0xDE9E, (q15_t)0x7B92, + (q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDD1A, (q15_t)0x7B26, + (q15_t)0xDC59, (q15_t)0x7AEF, (q15_t)0xDB98, (q15_t)0x7AB6, + (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xDA17, (q15_t)0x7A42, + (q15_t)0xD957, (q15_t)0x7A05, (q15_t)0xD898, (q15_t)0x79C8, + (q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD71A, (q15_t)0x794A, + (q15_t)0xD65C, (q15_t)0x7909, (q15_t)0xD59E, (q15_t)0x78C7, + (q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD423, (q15_t)0x7840, + (q15_t)0xD367, (q15_t)0x77FA, (q15_t)0xD2AA, (q15_t)0x77B4, + (q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD133, (q15_t)0x7723, + (q15_t)0xD078, (q15_t)0x76D9, (q15_t)0xCFBE, (q15_t)0x768E, + (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCE4A, (q15_t)0x75F4, + (q15_t)0xCD91, (q15_t)0x75A5, (q15_t)0xCCD9, (q15_t)0x7555, + (q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCB69, (q15_t)0x74B2, + (q15_t)0xCAB2, (q15_t)0x745F, (q15_t)0xC9FB, (q15_t)0x740B, + (q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC890, (q15_t)0x735F, + (q15_t)0xC7DB, (q15_t)0x7307, (q15_t)0xC727, (q15_t)0x72AF, + (q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC5BF, (q15_t)0x71FA, + (q15_t)0xC50D, (q15_t)0x719E, (q15_t)0xC45A, (q15_t)0x7141, + (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC2F8, (q15_t)0x7083, + (q15_t)0xC247, (q15_t)0x7023, (q15_t)0xC197, (q15_t)0x6FC1, + (q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xC03A, (q15_t)0x6EFB, + (q15_t)0xBF8C, (q15_t)0x6E96, (q15_t)0xBEDE, (q15_t)0x6E30, + (q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBD85, (q15_t)0x6D62, + (q15_t)0xBCDA, (q15_t)0x6CF9, (q15_t)0xBC2F, (q15_t)0x6C8F, + (q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBADB, (q15_t)0x6BB8, + (q15_t)0xBA32, (q15_t)0x6B4A, (q15_t)0xB98A, (q15_t)0x6ADC, + (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB83C, (q15_t)0x69FD, + (q15_t)0xB796, (q15_t)0x698C, (q15_t)0xB6F0, (q15_t)0x6919, + (q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB5A7, (q15_t)0x6832, + (q15_t)0xB504, (q15_t)0x67BD, (q15_t)0xB461, (q15_t)0x6746, + (q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB31E, (q15_t)0x6657, + (q15_t)0xB27E, (q15_t)0x65DD, (q15_t)0xB1DE, (q15_t)0x6563, + (q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB0A1, (q15_t)0x646C, + (q15_t)0xB004, (q15_t)0x63EF, (q15_t)0xAF68, (q15_t)0x6371, + (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAE31, (q15_t)0x6271, + (q15_t)0xAD96, (q15_t)0x61F1, (q15_t)0xACFD, (q15_t)0x616F, + (q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xABCC, (q15_t)0x6068, + (q15_t)0xAB35, (q15_t)0x5FE3, (q15_t)0xAA9F, (q15_t)0x5F5E, + (q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA975, (q15_t)0x5E50, + (q15_t)0xA8E2, (q15_t)0x5DC7, (q15_t)0xA84F, (q15_t)0x5D3E, + (q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA72B, (q15_t)0x5C29, + (q15_t)0xA69B, (q15_t)0x5B9D, (q15_t)0xA60C, (q15_t)0x5B10, + (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA4EF, (q15_t)0x59F3, + (q15_t)0xA462, (q15_t)0x5964, (q15_t)0xA3D6, (q15_t)0x58D4, + (q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA2C1, (q15_t)0x57B0, + (q15_t)0xA238, (q15_t)0x571D, (q15_t)0xA1AF, (q15_t)0x568A, + (q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA0A1, (q15_t)0x5560, + (q15_t)0xA01C, (q15_t)0x54CA, (q15_t)0x9F97, (q15_t)0x5433, + (q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9E90, (q15_t)0x5302, + (q15_t)0x9E0E, (q15_t)0x5269, (q15_t)0x9D8E, (q15_t)0x51CE, + (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9C8E, (q15_t)0x5097, + (q15_t)0x9C10, (q15_t)0x4FFB, (q15_t)0x9B93, (q15_t)0x4F5E, + (q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9A9C, (q15_t)0x4E21, + (q15_t)0x9A22, (q15_t)0x4D81, (q15_t)0x99A8, (q15_t)0x4CE1, + (q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x98B9, (q15_t)0x4B9E, + (q15_t)0x9842, (q15_t)0x4AFB, (q15_t)0x97CD, (q15_t)0x4A58, + (q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x96E6, (q15_t)0x490F, + (q15_t)0x9673, (q15_t)0x4869, (q15_t)0x9602, (q15_t)0x47C3, + (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x9523, (q15_t)0x4675, + (q15_t)0x94B5, (q15_t)0x45CD, (q15_t)0x9447, (q15_t)0x4524, + (q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x9370, (q15_t)0x43D0, + (q15_t)0x9306, (q15_t)0x4325, (q15_t)0x929D, (q15_t)0x427A, + (q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x91CF, (q15_t)0x4121, + (q15_t)0x9169, (q15_t)0x4073, (q15_t)0x9104, (q15_t)0x3FC5, + (q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x903E, (q15_t)0x3E68, + (q15_t)0x8FDC, (q15_t)0x3DB8, (q15_t)0x8F7C, (q15_t)0x3D07, + (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8EBE, (q15_t)0x3BA5, + (q15_t)0x8E61, (q15_t)0x3AF2, (q15_t)0x8E05, (q15_t)0x3A40, + (q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8D50, (q15_t)0x38D8, + (q15_t)0x8CF8, (q15_t)0x3824, (q15_t)0x8CA0, (q15_t)0x376F, + (q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8BF4, (q15_t)0x3604, + (q15_t)0x8BA0, (q15_t)0x354D, (q15_t)0x8B4D, (q15_t)0x3496, + (q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8AAA, (q15_t)0x3326, + (q15_t)0x8A5A, (q15_t)0x326E, (q15_t)0x8A0B, (q15_t)0x31B5, + (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8971, (q15_t)0x3041, + (q15_t)0x8926, (q15_t)0x2F87, (q15_t)0x88DC, (q15_t)0x2ECC, + (q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x884B, (q15_t)0x2D55, + (q15_t)0x8805, (q15_t)0x2C98, (q15_t)0x87BF, (q15_t)0x2BDC, + (q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x8738, (q15_t)0x2A61, + (q15_t)0x86F6, (q15_t)0x29A3, (q15_t)0x86B5, (q15_t)0x28E5, + (q15_t)0x8675, (q15_t)0x2826, (q15_t)0x8637, (q15_t)0x2767, + (q15_t)0x85FA, (q15_t)0x26A8, (q15_t)0x85BD, (q15_t)0x25E8, + (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8549, (q15_t)0x2467, + (q15_t)0x8510, (q15_t)0x23A6, (q15_t)0x84D9, (q15_t)0x22E5, + (q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x846D, (q15_t)0x2161, + (q15_t)0x843A, (q15_t)0x209F, (q15_t)0x8407, (q15_t)0x1FDC, + (q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x83A5, (q15_t)0x1E56, + (q15_t)0x8376, (q15_t)0x1D93, (q15_t)0x8348, (q15_t)0x1CCF, + (q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x82F0, (q15_t)0x1B47, + (q15_t)0x82C6, (q15_t)0x1A82, (q15_t)0x829D, (q15_t)0x19BD, + (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x824F, (q15_t)0x1833, + (q15_t)0x8229, (q15_t)0x176D, (q15_t)0x8205, (q15_t)0x16A8, + (q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81C0, (q15_t)0x151B, + (q15_t)0x81A0, (q15_t)0x1455, (q15_t)0x8180, (q15_t)0x138E, + (q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x8145, (q15_t)0x1201, + (q15_t)0x812A, (q15_t)0x1139, (q15_t)0x810F, (q15_t)0x1072, + (q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80DE, (q15_t)0x0EE3, + (q15_t)0x80C7, (q15_t)0x0E1B, (q15_t)0x80B2, (q15_t)0x0D53, + (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x808A, (q15_t)0x0BC3, + (q15_t)0x8078, (q15_t)0x0AFB, (q15_t)0x8068, (q15_t)0x0A33, + (q15_t)0x8058, (q15_t)0x096A, (q15_t)0x804A, (q15_t)0x08A2, + (q15_t)0x803D, (q15_t)0x07D9, (q15_t)0x8031, (q15_t)0x0710, + (q15_t)0x8027, (q15_t)0x0647, (q15_t)0x801E, (q15_t)0x057F, + (q15_t)0x8016, (q15_t)0x04B6, (q15_t)0x800F, (q15_t)0x03ED, + (q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8005, (q15_t)0x025B, + (q15_t)0x8002, (q15_t)0x0192, (q15_t)0x8000, (q15_t)0x00C9, + (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8000, (q15_t)0xFF36, + (q15_t)0x8002, (q15_t)0xFE6D, (q15_t)0x8005, (q15_t)0xFDA4, + (q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x800F, (q15_t)0xFC12, + (q15_t)0x8016, (q15_t)0xFB49, (q15_t)0x801E, (q15_t)0xFA80, + (q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x8031, (q15_t)0xF8EF, + (q15_t)0x803D, (q15_t)0xF826, (q15_t)0x804A, (q15_t)0xF75D, + (q15_t)0x8058, (q15_t)0xF695, (q15_t)0x8068, (q15_t)0xF5CC, + (q15_t)0x8078, (q15_t)0xF504, (q15_t)0x808A, (q15_t)0xF43C, + (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80B2, (q15_t)0xF2AC, + (q15_t)0x80C7, (q15_t)0xF1E4, (q15_t)0x80DE, (q15_t)0xF11C, + (q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x810F, (q15_t)0xEF8D, + (q15_t)0x812A, (q15_t)0xEEC6, (q15_t)0x8145, (q15_t)0xEDFE, + (q15_t)0x8162, (q15_t)0xED37, (q15_t)0x8180, (q15_t)0xEC71, + (q15_t)0x81A0, (q15_t)0xEBAA, (q15_t)0x81C0, (q15_t)0xEAE4, + (q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x8205, (q15_t)0xE957, + (q15_t)0x8229, (q15_t)0xE892, (q15_t)0x824F, (q15_t)0xE7CC, + (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x829D, (q15_t)0xE642, + (q15_t)0x82C6, (q15_t)0xE57D, (q15_t)0x82F0, (q15_t)0xE4B8, + (q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8348, (q15_t)0xE330, + (q15_t)0x8376, (q15_t)0xE26C, (q15_t)0x83A5, (q15_t)0xE1A9, + (q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x8407, (q15_t)0xE023, + (q15_t)0x843A, (q15_t)0xDF60, (q15_t)0x846D, (q15_t)0xDE9E, + (q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x84D9, (q15_t)0xDD1A, + (q15_t)0x8510, (q15_t)0xDC59, (q15_t)0x8549, (q15_t)0xDB98, + (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x85BD, (q15_t)0xDA17, + (q15_t)0x85FA, (q15_t)0xD957, (q15_t)0x8637, (q15_t)0xD898, + (q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x86B5, (q15_t)0xD71A, + (q15_t)0x86F6, (q15_t)0xD65C, (q15_t)0x8738, (q15_t)0xD59E, + (q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x87BF, (q15_t)0xD423, + (q15_t)0x8805, (q15_t)0xD367, (q15_t)0x884B, (q15_t)0xD2AA, + (q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x88DC, (q15_t)0xD133, + (q15_t)0x8926, (q15_t)0xD078, (q15_t)0x8971, (q15_t)0xCFBE, + (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x8A0B, (q15_t)0xCE4A, + (q15_t)0x8A5A, (q15_t)0xCD91, (q15_t)0x8AAA, (q15_t)0xCCD9, + (q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8B4D, (q15_t)0xCB69, + (q15_t)0x8BA0, (q15_t)0xCAB2, (q15_t)0x8BF4, (q15_t)0xC9FB, + (q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8CA0, (q15_t)0xC890, + (q15_t)0x8CF8, (q15_t)0xC7DB, (q15_t)0x8D50, (q15_t)0xC727, + (q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8E05, (q15_t)0xC5BF, + (q15_t)0x8E61, (q15_t)0xC50D, (q15_t)0x8EBE, (q15_t)0xC45A, + (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8F7C, (q15_t)0xC2F8, + (q15_t)0x8FDC, (q15_t)0xC247, (q15_t)0x903E, (q15_t)0xC197, + (q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x9104, (q15_t)0xC03A, + (q15_t)0x9169, (q15_t)0xBF8C, (q15_t)0x91CF, (q15_t)0xBEDE, + (q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x929D, (q15_t)0xBD85, + (q15_t)0x9306, (q15_t)0xBCDA, (q15_t)0x9370, (q15_t)0xBC2F, + (q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x9447, (q15_t)0xBADB, + (q15_t)0x94B5, (q15_t)0xBA32, (q15_t)0x9523, (q15_t)0xB98A, + (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x9602, (q15_t)0xB83C, + (q15_t)0x9673, (q15_t)0xB796, (q15_t)0x96E6, (q15_t)0xB6F0, + (q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x97CD, (q15_t)0xB5A7, + (q15_t)0x9842, (q15_t)0xB504, (q15_t)0x98B9, (q15_t)0xB461, + (q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x99A8, (q15_t)0xB31E, + (q15_t)0x9A22, (q15_t)0xB27E, (q15_t)0x9A9C, (q15_t)0xB1DE, + (q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9B93, (q15_t)0xB0A1, + (q15_t)0x9C10, (q15_t)0xB004, (q15_t)0x9C8E, (q15_t)0xAF68, + (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9D8E, (q15_t)0xAE31, + (q15_t)0x9E0E, (q15_t)0xAD96, (q15_t)0x9E90, (q15_t)0xACFD, + (q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0x9F97, (q15_t)0xABCC, + (q15_t)0xA01C, (q15_t)0xAB35, (q15_t)0xA0A1, (q15_t)0xAA9F, + (q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA1AF, (q15_t)0xA975, + (q15_t)0xA238, (q15_t)0xA8E2, (q15_t)0xA2C1, (q15_t)0xA84F, + (q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA3D6, (q15_t)0xA72B, + (q15_t)0xA462, (q15_t)0xA69B, (q15_t)0xA4EF, (q15_t)0xA60C, + (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA60C, (q15_t)0xA4EF, + (q15_t)0xA69B, (q15_t)0xA462, (q15_t)0xA72B, (q15_t)0xA3D6, + (q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA84F, (q15_t)0xA2C1, + (q15_t)0xA8E2, (q15_t)0xA238, (q15_t)0xA975, (q15_t)0xA1AF, + (q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAA9F, (q15_t)0xA0A1, + (q15_t)0xAB35, (q15_t)0xA01C, (q15_t)0xABCC, (q15_t)0x9F97, + (q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xACFD, (q15_t)0x9E90, + (q15_t)0xAD96, (q15_t)0x9E0E, (q15_t)0xAE31, (q15_t)0x9D8E, + (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xAF68, (q15_t)0x9C8E, + (q15_t)0xB004, (q15_t)0x9C10, (q15_t)0xB0A1, (q15_t)0x9B93, + (q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB1DE, (q15_t)0x9A9C, + (q15_t)0xB27E, (q15_t)0x9A22, (q15_t)0xB31E, (q15_t)0x99A8, + (q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB461, (q15_t)0x98B9, + (q15_t)0xB504, (q15_t)0x9842, (q15_t)0xB5A7, (q15_t)0x97CD, + (q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB6F0, (q15_t)0x96E6, + (q15_t)0xB796, (q15_t)0x9673, (q15_t)0xB83C, (q15_t)0x9602, + (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xB98A, (q15_t)0x9523, + (q15_t)0xBA32, (q15_t)0x94B5, (q15_t)0xBADB, (q15_t)0x9447, + (q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBC2F, (q15_t)0x9370, + (q15_t)0xBCDA, (q15_t)0x9306, (q15_t)0xBD85, (q15_t)0x929D, + (q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBEDE, (q15_t)0x91CF, + (q15_t)0xBF8C, (q15_t)0x9169, (q15_t)0xC03A, (q15_t)0x9104, + (q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC197, (q15_t)0x903E, + (q15_t)0xC247, (q15_t)0x8FDC, (q15_t)0xC2F8, (q15_t)0x8F7C, + (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC45A, (q15_t)0x8EBE, + (q15_t)0xC50D, (q15_t)0x8E61, (q15_t)0xC5BF, (q15_t)0x8E05, + (q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC727, (q15_t)0x8D50, + (q15_t)0xC7DB, (q15_t)0x8CF8, (q15_t)0xC890, (q15_t)0x8CA0, + (q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xC9FB, (q15_t)0x8BF4, + (q15_t)0xCAB2, (q15_t)0x8BA0, (q15_t)0xCB69, (q15_t)0x8B4D, + (q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCCD9, (q15_t)0x8AAA, + (q15_t)0xCD91, (q15_t)0x8A5A, (q15_t)0xCE4A, (q15_t)0x8A0B, + (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xCFBE, (q15_t)0x8971, + (q15_t)0xD078, (q15_t)0x8926, (q15_t)0xD133, (q15_t)0x88DC, + (q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD2AA, (q15_t)0x884B, + (q15_t)0xD367, (q15_t)0x8805, (q15_t)0xD423, (q15_t)0x87BF, + (q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD59E, (q15_t)0x8738, + (q15_t)0xD65C, (q15_t)0x86F6, (q15_t)0xD71A, (q15_t)0x86B5, + (q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD898, (q15_t)0x8637, + (q15_t)0xD957, (q15_t)0x85FA, (q15_t)0xDA17, (q15_t)0x85BD, + (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDB98, (q15_t)0x8549, + (q15_t)0xDC59, (q15_t)0x8510, (q15_t)0xDD1A, (q15_t)0x84D9, + (q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDE9E, (q15_t)0x846D, + (q15_t)0xDF60, (q15_t)0x843A, (q15_t)0xE023, (q15_t)0x8407, + (q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE1A9, (q15_t)0x83A5, + (q15_t)0xE26C, (q15_t)0x8376, (q15_t)0xE330, (q15_t)0x8348, + (q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE4B8, (q15_t)0x82F0, + (q15_t)0xE57D, (q15_t)0x82C6, (q15_t)0xE642, (q15_t)0x829D, + (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE7CC, (q15_t)0x824F, + (q15_t)0xE892, (q15_t)0x8229, (q15_t)0xE957, (q15_t)0x8205, + (q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEAE4, (q15_t)0x81C0, + (q15_t)0xEBAA, (q15_t)0x81A0, (q15_t)0xEC71, (q15_t)0x8180, + (q15_t)0xED37, (q15_t)0x8162, (q15_t)0xEDFE, (q15_t)0x8145, + (q15_t)0xEEC6, (q15_t)0x812A, (q15_t)0xEF8D, (q15_t)0x810F, + (q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF11C, (q15_t)0x80DE, + (q15_t)0xF1E4, (q15_t)0x80C7, (q15_t)0xF2AC, (q15_t)0x80B2, + (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF43C, (q15_t)0x808A, + (q15_t)0xF504, (q15_t)0x8078, (q15_t)0xF5CC, (q15_t)0x8068, + (q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF75D, (q15_t)0x804A, + (q15_t)0xF826, (q15_t)0x803D, (q15_t)0xF8EF, (q15_t)0x8031, + (q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFA80, (q15_t)0x801E, + (q15_t)0xFB49, (q15_t)0x8016, (q15_t)0xFC12, (q15_t)0x800F, + (q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFDA4, (q15_t)0x8005, + (q15_t)0xFE6D, (q15_t)0x8002, (q15_t)0xFF36, (q15_t)0x8000 +}; + +/** +* \par +* Example code for q15 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 2048 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to q15(Fixed point 1.15): +* round(twiddleCoefq15(i) * pow(2, 15)) +* +*/ +const q15_t twiddleCoef_2048_q15[3072] = { + (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0x0064, + (q15_t)0x7FFF, (q15_t)0x00C9, (q15_t)0x7FFE, (q15_t)0x012D, + (q15_t)0x7FFD, (q15_t)0x0192, (q15_t)0x7FFC, (q15_t)0x01F6, + (q15_t)0x7FFA, (q15_t)0x025B, (q15_t)0x7FF8, (q15_t)0x02BF, + (q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FF3, (q15_t)0x0388, + (q15_t)0x7FF0, (q15_t)0x03ED, (q15_t)0x7FED, (q15_t)0x0451, + (q15_t)0x7FE9, (q15_t)0x04B6, (q15_t)0x7FE5, (q15_t)0x051A, + (q15_t)0x7FE1, (q15_t)0x057F, (q15_t)0x7FDD, (q15_t)0x05E3, + (q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FD3, (q15_t)0x06AC, + (q15_t)0x7FCE, (q15_t)0x0710, (q15_t)0x7FC8, (q15_t)0x0775, + (q15_t)0x7FC2, (q15_t)0x07D9, (q15_t)0x7FBC, (q15_t)0x083D, + (q15_t)0x7FB5, (q15_t)0x08A2, (q15_t)0x7FAE, (q15_t)0x0906, + (q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7F9F, (q15_t)0x09CE, + (q15_t)0x7F97, (q15_t)0x0A33, (q15_t)0x7F8F, (q15_t)0x0A97, + (q15_t)0x7F87, (q15_t)0x0AFB, (q15_t)0x7F7E, (q15_t)0x0B5F, + (q15_t)0x7F75, (q15_t)0x0BC3, (q15_t)0x7F6B, (q15_t)0x0C27, + (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F58, (q15_t)0x0CEF, + (q15_t)0x7F4D, (q15_t)0x0D53, (q15_t)0x7F43, (q15_t)0x0DB7, + (q15_t)0x7F38, (q15_t)0x0E1B, (q15_t)0x7F2D, (q15_t)0x0E7F, + (q15_t)0x7F21, (q15_t)0x0EE3, (q15_t)0x7F15, (q15_t)0x0F47, + (q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7EFD, (q15_t)0x100E, + (q15_t)0x7EF0, (q15_t)0x1072, (q15_t)0x7EE3, (q15_t)0x10D6, + (q15_t)0x7ED5, (q15_t)0x1139, (q15_t)0x7EC8, (q15_t)0x119D, + (q15_t)0x7EBA, (q15_t)0x1201, (q15_t)0x7EAB, (q15_t)0x1264, + (q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E8E, (q15_t)0x132B, + (q15_t)0x7E7F, (q15_t)0x138E, (q15_t)0x7E6F, (q15_t)0x13F2, + (q15_t)0x7E5F, (q15_t)0x1455, (q15_t)0x7E4F, (q15_t)0x14B8, + (q15_t)0x7E3F, (q15_t)0x151B, (q15_t)0x7E2E, (q15_t)0x157F, + (q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7E0C, (q15_t)0x1645, + (q15_t)0x7DFA, (q15_t)0x16A8, (q15_t)0x7DE8, (q15_t)0x170A, + (q15_t)0x7DD6, (q15_t)0x176D, (q15_t)0x7DC3, (q15_t)0x17D0, + (q15_t)0x7DB0, (q15_t)0x1833, (q15_t)0x7D9D, (q15_t)0x1896, + (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D76, (q15_t)0x195B, + (q15_t)0x7D62, (q15_t)0x19BD, (q15_t)0x7D4E, (q15_t)0x1A20, + (q15_t)0x7D39, (q15_t)0x1A82, (q15_t)0x7D24, (q15_t)0x1AE4, + (q15_t)0x7D0F, (q15_t)0x1B47, (q15_t)0x7CF9, (q15_t)0x1BA9, + (q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7CCD, (q15_t)0x1C6D, + (q15_t)0x7CB7, (q15_t)0x1CCF, (q15_t)0x7CA0, (q15_t)0x1D31, + (q15_t)0x7C89, (q15_t)0x1D93, (q15_t)0x7C71, (q15_t)0x1DF5, + (q15_t)0x7C5A, (q15_t)0x1E56, (q15_t)0x7C42, (q15_t)0x1EB8, + (q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7C11, (q15_t)0x1F7B, + (q15_t)0x7BF8, (q15_t)0x1FDC, (q15_t)0x7BDF, (q15_t)0x203E, + (q15_t)0x7BC5, (q15_t)0x209F, (q15_t)0x7BAC, (q15_t)0x2100, + (q15_t)0x7B92, (q15_t)0x2161, (q15_t)0x7B77, (q15_t)0x21C2, + (q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7B42, (q15_t)0x2284, + (q15_t)0x7B26, (q15_t)0x22E5, (q15_t)0x7B0B, (q15_t)0x2345, + (q15_t)0x7AEF, (q15_t)0x23A6, (q15_t)0x7AD3, (q15_t)0x2407, + (q15_t)0x7AB6, (q15_t)0x2467, (q15_t)0x7A9A, (q15_t)0x24C7, + (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A5F, (q15_t)0x2588, + (q15_t)0x7A42, (q15_t)0x25E8, (q15_t)0x7A24, (q15_t)0x2648, + (q15_t)0x7A05, (q15_t)0x26A8, (q15_t)0x79E7, (q15_t)0x2707, + (q15_t)0x79C8, (q15_t)0x2767, (q15_t)0x79A9, (q15_t)0x27C7, + (q15_t)0x798A, (q15_t)0x2826, (q15_t)0x796A, (q15_t)0x2886, + (q15_t)0x794A, (q15_t)0x28E5, (q15_t)0x792A, (q15_t)0x2944, + (q15_t)0x7909, (q15_t)0x29A3, (q15_t)0x78E8, (q15_t)0x2A02, + (q15_t)0x78C7, (q15_t)0x2A61, (q15_t)0x78A6, (q15_t)0x2AC0, + (q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x7862, (q15_t)0x2B7D, + (q15_t)0x7840, (q15_t)0x2BDC, (q15_t)0x781D, (q15_t)0x2C3A, + (q15_t)0x77FA, (q15_t)0x2C98, (q15_t)0x77D7, (q15_t)0x2CF7, + (q15_t)0x77B4, (q15_t)0x2D55, (q15_t)0x7790, (q15_t)0x2DB3, + (q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x7747, (q15_t)0x2E6E, + (q15_t)0x7723, (q15_t)0x2ECC, (q15_t)0x76FE, (q15_t)0x2F29, + (q15_t)0x76D9, (q15_t)0x2F87, (q15_t)0x76B3, (q15_t)0x2FE4, + (q15_t)0x768E, (q15_t)0x3041, (q15_t)0x7668, (q15_t)0x309E, + (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x761B, (q15_t)0x3158, + (q15_t)0x75F4, (q15_t)0x31B5, (q15_t)0x75CC, (q15_t)0x3211, + (q15_t)0x75A5, (q15_t)0x326E, (q15_t)0x757D, (q15_t)0x32CA, + (q15_t)0x7555, (q15_t)0x3326, (q15_t)0x752D, (q15_t)0x3382, + (q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x74DB, (q15_t)0x343A, + (q15_t)0x74B2, (q15_t)0x3496, (q15_t)0x7489, (q15_t)0x34F2, + (q15_t)0x745F, (q15_t)0x354D, (q15_t)0x7435, (q15_t)0x35A8, + (q15_t)0x740B, (q15_t)0x3604, (q15_t)0x73E0, (q15_t)0x365F, + (q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x738A, (q15_t)0x3714, + (q15_t)0x735F, (q15_t)0x376F, (q15_t)0x7333, (q15_t)0x37CA, + (q15_t)0x7307, (q15_t)0x3824, (q15_t)0x72DB, (q15_t)0x387E, + (q15_t)0x72AF, (q15_t)0x38D8, (q15_t)0x7282, (q15_t)0x3932, + (q15_t)0x7255, (q15_t)0x398C, (q15_t)0x7227, (q15_t)0x39E6, + (q15_t)0x71FA, (q15_t)0x3A40, (q15_t)0x71CC, (q15_t)0x3A99, + (q15_t)0x719E, (q15_t)0x3AF2, (q15_t)0x716F, (q15_t)0x3B4C, + (q15_t)0x7141, (q15_t)0x3BA5, (q15_t)0x7112, (q15_t)0x3BFD, + (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x70B3, (q15_t)0x3CAF, + (q15_t)0x7083, (q15_t)0x3D07, (q15_t)0x7053, (q15_t)0x3D60, + (q15_t)0x7023, (q15_t)0x3DB8, (q15_t)0x6FF2, (q15_t)0x3E10, + (q15_t)0x6FC1, (q15_t)0x3E68, (q15_t)0x6F90, (q15_t)0x3EBF, + (q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6F2D, (q15_t)0x3F6E, + (q15_t)0x6EFB, (q15_t)0x3FC5, (q15_t)0x6EC9, (q15_t)0x401D, + (q15_t)0x6E96, (q15_t)0x4073, (q15_t)0x6E63, (q15_t)0x40CA, + (q15_t)0x6E30, (q15_t)0x4121, (q15_t)0x6DFD, (q15_t)0x4177, + (q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6D96, (q15_t)0x4224, + (q15_t)0x6D62, (q15_t)0x427A, (q15_t)0x6D2D, (q15_t)0x42D0, + (q15_t)0x6CF9, (q15_t)0x4325, (q15_t)0x6CC4, (q15_t)0x437B, + (q15_t)0x6C8F, (q15_t)0x43D0, (q15_t)0x6C59, (q15_t)0x4425, + (q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6BEE, (q15_t)0x44CF, + (q15_t)0x6BB8, (q15_t)0x4524, (q15_t)0x6B81, (q15_t)0x4578, + (q15_t)0x6B4A, (q15_t)0x45CD, (q15_t)0x6B13, (q15_t)0x4621, + (q15_t)0x6ADC, (q15_t)0x4675, (q15_t)0x6AA5, (q15_t)0x46C9, + (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x6A35, (q15_t)0x4770, + (q15_t)0x69FD, (q15_t)0x47C3, (q15_t)0x69C4, (q15_t)0x4816, + (q15_t)0x698C, (q15_t)0x4869, (q15_t)0x6953, (q15_t)0x48BC, + (q15_t)0x6919, (q15_t)0x490F, (q15_t)0x68E0, (q15_t)0x4961, + (q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x686C, (q15_t)0x4A06, + (q15_t)0x6832, (q15_t)0x4A58, (q15_t)0x67F7, (q15_t)0x4AA9, + (q15_t)0x67BD, (q15_t)0x4AFB, (q15_t)0x6782, (q15_t)0x4B4C, + (q15_t)0x6746, (q15_t)0x4B9E, (q15_t)0x670B, (q15_t)0x4BEF, + (q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x6693, (q15_t)0x4C90, + (q15_t)0x6657, (q15_t)0x4CE1, (q15_t)0x661A, (q15_t)0x4D31, + (q15_t)0x65DD, (q15_t)0x4D81, (q15_t)0x65A0, (q15_t)0x4DD1, + (q15_t)0x6563, (q15_t)0x4E21, (q15_t)0x6526, (q15_t)0x4E70, + (q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x64AA, (q15_t)0x4F0F, + (q15_t)0x646C, (q15_t)0x4F5E, (q15_t)0x642D, (q15_t)0x4FAC, + (q15_t)0x63EF, (q15_t)0x4FFB, (q15_t)0x63B0, (q15_t)0x5049, + (q15_t)0x6371, (q15_t)0x5097, (q15_t)0x6331, (q15_t)0x50E5, + (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x62B2, (q15_t)0x5181, + (q15_t)0x6271, (q15_t)0x51CE, (q15_t)0x6231, (q15_t)0x521C, + (q15_t)0x61F1, (q15_t)0x5269, (q15_t)0x61B0, (q15_t)0x52B5, + (q15_t)0x616F, (q15_t)0x5302, (q15_t)0x612D, (q15_t)0x534E, + (q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x60AA, (q15_t)0x53E7, + (q15_t)0x6068, (q15_t)0x5433, (q15_t)0x6026, (q15_t)0x547E, + (q15_t)0x5FE3, (q15_t)0x54CA, (q15_t)0x5FA0, (q15_t)0x5515, + (q15_t)0x5F5E, (q15_t)0x5560, (q15_t)0x5F1A, (q15_t)0x55AB, + (q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5E93, (q15_t)0x5640, + (q15_t)0x5E50, (q15_t)0x568A, (q15_t)0x5E0B, (q15_t)0x56D4, + (q15_t)0x5DC7, (q15_t)0x571D, (q15_t)0x5D83, (q15_t)0x5767, + (q15_t)0x5D3E, (q15_t)0x57B0, (q15_t)0x5CF9, (q15_t)0x57F9, + (q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5C6E, (q15_t)0x588B, + (q15_t)0x5C29, (q15_t)0x58D4, (q15_t)0x5BE3, (q15_t)0x591C, + (q15_t)0x5B9D, (q15_t)0x5964, (q15_t)0x5B56, (q15_t)0x59AC, + (q15_t)0x5B10, (q15_t)0x59F3, (q15_t)0x5AC9, (q15_t)0x5A3B, + (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5A3B, (q15_t)0x5AC9, + (q15_t)0x59F3, (q15_t)0x5B10, (q15_t)0x59AC, (q15_t)0x5B56, + (q15_t)0x5964, (q15_t)0x5B9D, (q15_t)0x591C, (q15_t)0x5BE3, + (q15_t)0x58D4, (q15_t)0x5C29, (q15_t)0x588B, (q15_t)0x5C6E, + (q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x57F9, (q15_t)0x5CF9, + (q15_t)0x57B0, (q15_t)0x5D3E, (q15_t)0x5767, (q15_t)0x5D83, + (q15_t)0x571D, (q15_t)0x5DC7, (q15_t)0x56D4, (q15_t)0x5E0B, + (q15_t)0x568A, (q15_t)0x5E50, (q15_t)0x5640, (q15_t)0x5E93, + (q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x55AB, (q15_t)0x5F1A, + (q15_t)0x5560, (q15_t)0x5F5E, (q15_t)0x5515, (q15_t)0x5FA0, + (q15_t)0x54CA, (q15_t)0x5FE3, (q15_t)0x547E, (q15_t)0x6026, + (q15_t)0x5433, (q15_t)0x6068, (q15_t)0x53E7, (q15_t)0x60AA, + (q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x534E, (q15_t)0x612D, + (q15_t)0x5302, (q15_t)0x616F, (q15_t)0x52B5, (q15_t)0x61B0, + (q15_t)0x5269, (q15_t)0x61F1, (q15_t)0x521C, (q15_t)0x6231, + (q15_t)0x51CE, (q15_t)0x6271, (q15_t)0x5181, (q15_t)0x62B2, + (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x50E5, (q15_t)0x6331, + (q15_t)0x5097, (q15_t)0x6371, (q15_t)0x5049, (q15_t)0x63B0, + (q15_t)0x4FFB, (q15_t)0x63EF, (q15_t)0x4FAC, (q15_t)0x642D, + (q15_t)0x4F5E, (q15_t)0x646C, (q15_t)0x4F0F, (q15_t)0x64AA, + (q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4E70, (q15_t)0x6526, + (q15_t)0x4E21, (q15_t)0x6563, (q15_t)0x4DD1, (q15_t)0x65A0, + (q15_t)0x4D81, (q15_t)0x65DD, (q15_t)0x4D31, (q15_t)0x661A, + (q15_t)0x4CE1, (q15_t)0x6657, (q15_t)0x4C90, (q15_t)0x6693, + (q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4BEF, (q15_t)0x670B, + (q15_t)0x4B9E, (q15_t)0x6746, (q15_t)0x4B4C, (q15_t)0x6782, + (q15_t)0x4AFB, (q15_t)0x67BD, (q15_t)0x4AA9, (q15_t)0x67F7, + (q15_t)0x4A58, (q15_t)0x6832, (q15_t)0x4A06, (q15_t)0x686C, + (q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x4961, (q15_t)0x68E0, + (q15_t)0x490F, (q15_t)0x6919, (q15_t)0x48BC, (q15_t)0x6953, + (q15_t)0x4869, (q15_t)0x698C, (q15_t)0x4816, (q15_t)0x69C4, + (q15_t)0x47C3, (q15_t)0x69FD, (q15_t)0x4770, (q15_t)0x6A35, + (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x46C9, (q15_t)0x6AA5, + (q15_t)0x4675, (q15_t)0x6ADC, (q15_t)0x4621, (q15_t)0x6B13, + (q15_t)0x45CD, (q15_t)0x6B4A, (q15_t)0x4578, (q15_t)0x6B81, + (q15_t)0x4524, (q15_t)0x6BB8, (q15_t)0x44CF, (q15_t)0x6BEE, + (q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x4425, (q15_t)0x6C59, + (q15_t)0x43D0, (q15_t)0x6C8F, (q15_t)0x437B, (q15_t)0x6CC4, + (q15_t)0x4325, (q15_t)0x6CF9, (q15_t)0x42D0, (q15_t)0x6D2D, + (q15_t)0x427A, (q15_t)0x6D62, (q15_t)0x4224, (q15_t)0x6D96, + (q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x4177, (q15_t)0x6DFD, + (q15_t)0x4121, (q15_t)0x6E30, (q15_t)0x40CA, (q15_t)0x6E63, + (q15_t)0x4073, (q15_t)0x6E96, (q15_t)0x401D, (q15_t)0x6EC9, + (q15_t)0x3FC5, (q15_t)0x6EFB, (q15_t)0x3F6E, (q15_t)0x6F2D, + (q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3EBF, (q15_t)0x6F90, + (q15_t)0x3E68, (q15_t)0x6FC1, (q15_t)0x3E10, (q15_t)0x6FF2, + (q15_t)0x3DB8, (q15_t)0x7023, (q15_t)0x3D60, (q15_t)0x7053, + (q15_t)0x3D07, (q15_t)0x7083, (q15_t)0x3CAF, (q15_t)0x70B3, + (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3BFD, (q15_t)0x7112, + (q15_t)0x3BA5, (q15_t)0x7141, (q15_t)0x3B4C, (q15_t)0x716F, + (q15_t)0x3AF2, (q15_t)0x719E, (q15_t)0x3A99, (q15_t)0x71CC, + (q15_t)0x3A40, (q15_t)0x71FA, (q15_t)0x39E6, (q15_t)0x7227, + (q15_t)0x398C, (q15_t)0x7255, (q15_t)0x3932, (q15_t)0x7282, + (q15_t)0x38D8, (q15_t)0x72AF, (q15_t)0x387E, (q15_t)0x72DB, + (q15_t)0x3824, (q15_t)0x7307, (q15_t)0x37CA, (q15_t)0x7333, + (q15_t)0x376F, (q15_t)0x735F, (q15_t)0x3714, (q15_t)0x738A, + (q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x365F, (q15_t)0x73E0, + (q15_t)0x3604, (q15_t)0x740B, (q15_t)0x35A8, (q15_t)0x7435, + (q15_t)0x354D, (q15_t)0x745F, (q15_t)0x34F2, (q15_t)0x7489, + (q15_t)0x3496, (q15_t)0x74B2, (q15_t)0x343A, (q15_t)0x74DB, + (q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x3382, (q15_t)0x752D, + (q15_t)0x3326, (q15_t)0x7555, (q15_t)0x32CA, (q15_t)0x757D, + (q15_t)0x326E, (q15_t)0x75A5, (q15_t)0x3211, (q15_t)0x75CC, + (q15_t)0x31B5, (q15_t)0x75F4, (q15_t)0x3158, (q15_t)0x761B, + (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x309E, (q15_t)0x7668, + (q15_t)0x3041, (q15_t)0x768E, (q15_t)0x2FE4, (q15_t)0x76B3, + (q15_t)0x2F87, (q15_t)0x76D9, (q15_t)0x2F29, (q15_t)0x76FE, + (q15_t)0x2ECC, (q15_t)0x7723, (q15_t)0x2E6E, (q15_t)0x7747, + (q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2DB3, (q15_t)0x7790, + (q15_t)0x2D55, (q15_t)0x77B4, (q15_t)0x2CF7, (q15_t)0x77D7, + (q15_t)0x2C98, (q15_t)0x77FA, (q15_t)0x2C3A, (q15_t)0x781D, + (q15_t)0x2BDC, (q15_t)0x7840, (q15_t)0x2B7D, (q15_t)0x7862, + (q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2AC0, (q15_t)0x78A6, + (q15_t)0x2A61, (q15_t)0x78C7, (q15_t)0x2A02, (q15_t)0x78E8, + (q15_t)0x29A3, (q15_t)0x7909, (q15_t)0x2944, (q15_t)0x792A, + (q15_t)0x28E5, (q15_t)0x794A, (q15_t)0x2886, (q15_t)0x796A, + (q15_t)0x2826, (q15_t)0x798A, (q15_t)0x27C7, (q15_t)0x79A9, + (q15_t)0x2767, (q15_t)0x79C8, (q15_t)0x2707, (q15_t)0x79E7, + (q15_t)0x26A8, (q15_t)0x7A05, (q15_t)0x2648, (q15_t)0x7A24, + (q15_t)0x25E8, (q15_t)0x7A42, (q15_t)0x2588, (q15_t)0x7A5F, + (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x24C7, (q15_t)0x7A9A, + (q15_t)0x2467, (q15_t)0x7AB6, (q15_t)0x2407, (q15_t)0x7AD3, + (q15_t)0x23A6, (q15_t)0x7AEF, (q15_t)0x2345, (q15_t)0x7B0B, + (q15_t)0x22E5, (q15_t)0x7B26, (q15_t)0x2284, (q15_t)0x7B42, + (q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x21C2, (q15_t)0x7B77, + (q15_t)0x2161, (q15_t)0x7B92, (q15_t)0x2100, (q15_t)0x7BAC, + (q15_t)0x209F, (q15_t)0x7BC5, (q15_t)0x203E, (q15_t)0x7BDF, + (q15_t)0x1FDC, (q15_t)0x7BF8, (q15_t)0x1F7B, (q15_t)0x7C11, + (q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1EB8, (q15_t)0x7C42, + (q15_t)0x1E56, (q15_t)0x7C5A, (q15_t)0x1DF5, (q15_t)0x7C71, + (q15_t)0x1D93, (q15_t)0x7C89, (q15_t)0x1D31, (q15_t)0x7CA0, + (q15_t)0x1CCF, (q15_t)0x7CB7, (q15_t)0x1C6D, (q15_t)0x7CCD, + (q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1BA9, (q15_t)0x7CF9, + (q15_t)0x1B47, (q15_t)0x7D0F, (q15_t)0x1AE4, (q15_t)0x7D24, + (q15_t)0x1A82, (q15_t)0x7D39, (q15_t)0x1A20, (q15_t)0x7D4E, + (q15_t)0x19BD, (q15_t)0x7D62, (q15_t)0x195B, (q15_t)0x7D76, + (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x1896, (q15_t)0x7D9D, + (q15_t)0x1833, (q15_t)0x7DB0, (q15_t)0x17D0, (q15_t)0x7DC3, + (q15_t)0x176D, (q15_t)0x7DD6, (q15_t)0x170A, (q15_t)0x7DE8, + (q15_t)0x16A8, (q15_t)0x7DFA, (q15_t)0x1645, (q15_t)0x7E0C, + (q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x157F, (q15_t)0x7E2E, + (q15_t)0x151B, (q15_t)0x7E3F, (q15_t)0x14B8, (q15_t)0x7E4F, + (q15_t)0x1455, (q15_t)0x7E5F, (q15_t)0x13F2, (q15_t)0x7E6F, + (q15_t)0x138E, (q15_t)0x7E7F, (q15_t)0x132B, (q15_t)0x7E8E, + (q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1264, (q15_t)0x7EAB, + (q15_t)0x1201, (q15_t)0x7EBA, (q15_t)0x119D, (q15_t)0x7EC8, + (q15_t)0x1139, (q15_t)0x7ED5, (q15_t)0x10D6, (q15_t)0x7EE3, + (q15_t)0x1072, (q15_t)0x7EF0, (q15_t)0x100E, (q15_t)0x7EFD, + (q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0F47, (q15_t)0x7F15, + (q15_t)0x0EE3, (q15_t)0x7F21, (q15_t)0x0E7F, (q15_t)0x7F2D, + (q15_t)0x0E1B, (q15_t)0x7F38, (q15_t)0x0DB7, (q15_t)0x7F43, + (q15_t)0x0D53, (q15_t)0x7F4D, (q15_t)0x0CEF, (q15_t)0x7F58, + (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0C27, (q15_t)0x7F6B, + (q15_t)0x0BC3, (q15_t)0x7F75, (q15_t)0x0B5F, (q15_t)0x7F7E, + (q15_t)0x0AFB, (q15_t)0x7F87, (q15_t)0x0A97, (q15_t)0x7F8F, + (q15_t)0x0A33, (q15_t)0x7F97, (q15_t)0x09CE, (q15_t)0x7F9F, + (q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x0906, (q15_t)0x7FAE, + (q15_t)0x08A2, (q15_t)0x7FB5, (q15_t)0x083D, (q15_t)0x7FBC, + (q15_t)0x07D9, (q15_t)0x7FC2, (q15_t)0x0775, (q15_t)0x7FC8, + (q15_t)0x0710, (q15_t)0x7FCE, (q15_t)0x06AC, (q15_t)0x7FD3, + (q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x05E3, (q15_t)0x7FDD, + (q15_t)0x057F, (q15_t)0x7FE1, (q15_t)0x051A, (q15_t)0x7FE5, + (q15_t)0x04B6, (q15_t)0x7FE9, (q15_t)0x0451, (q15_t)0x7FED, + (q15_t)0x03ED, (q15_t)0x7FF0, (q15_t)0x0388, (q15_t)0x7FF3, + (q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x02BF, (q15_t)0x7FF8, + (q15_t)0x025B, (q15_t)0x7FFA, (q15_t)0x01F6, (q15_t)0x7FFC, + (q15_t)0x0192, (q15_t)0x7FFD, (q15_t)0x012D, (q15_t)0x7FFE, + (q15_t)0x00C9, (q15_t)0x7FFF, (q15_t)0x0064, (q15_t)0x7FFF, + (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFF9B, (q15_t)0x7FFF, + (q15_t)0xFF36, (q15_t)0x7FFF, (q15_t)0xFED2, (q15_t)0x7FFE, + (q15_t)0xFE6D, (q15_t)0x7FFD, (q15_t)0xFE09, (q15_t)0x7FFC, + (q15_t)0xFDA4, (q15_t)0x7FFA, (q15_t)0xFD40, (q15_t)0x7FF8, + (q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFC77, (q15_t)0x7FF3, + (q15_t)0xFC12, (q15_t)0x7FF0, (q15_t)0xFBAE, (q15_t)0x7FED, + (q15_t)0xFB49, (q15_t)0x7FE9, (q15_t)0xFAE5, (q15_t)0x7FE5, + (q15_t)0xFA80, (q15_t)0x7FE1, (q15_t)0xFA1C, (q15_t)0x7FDD, + (q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF953, (q15_t)0x7FD3, + (q15_t)0xF8EF, (q15_t)0x7FCE, (q15_t)0xF88A, (q15_t)0x7FC8, + (q15_t)0xF826, (q15_t)0x7FC2, (q15_t)0xF7C2, (q15_t)0x7FBC, + (q15_t)0xF75D, (q15_t)0x7FB5, (q15_t)0xF6F9, (q15_t)0x7FAE, + (q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF631, (q15_t)0x7F9F, + (q15_t)0xF5CC, (q15_t)0x7F97, (q15_t)0xF568, (q15_t)0x7F8F, + (q15_t)0xF504, (q15_t)0x7F87, (q15_t)0xF4A0, (q15_t)0x7F7E, + (q15_t)0xF43C, (q15_t)0x7F75, (q15_t)0xF3D8, (q15_t)0x7F6B, + (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF310, (q15_t)0x7F58, + (q15_t)0xF2AC, (q15_t)0x7F4D, (q15_t)0xF248, (q15_t)0x7F43, + (q15_t)0xF1E4, (q15_t)0x7F38, (q15_t)0xF180, (q15_t)0x7F2D, + (q15_t)0xF11C, (q15_t)0x7F21, (q15_t)0xF0B8, (q15_t)0x7F15, + (q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xEFF1, (q15_t)0x7EFD, + (q15_t)0xEF8D, (q15_t)0x7EF0, (q15_t)0xEF29, (q15_t)0x7EE3, + (q15_t)0xEEC6, (q15_t)0x7ED5, (q15_t)0xEE62, (q15_t)0x7EC8, + (q15_t)0xEDFE, (q15_t)0x7EBA, (q15_t)0xED9B, (q15_t)0x7EAB, + (q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xECD4, (q15_t)0x7E8E, + (q15_t)0xEC71, (q15_t)0x7E7F, (q15_t)0xEC0D, (q15_t)0x7E6F, + (q15_t)0xEBAA, (q15_t)0x7E5F, (q15_t)0xEB47, (q15_t)0x7E4F, + (q15_t)0xEAE4, (q15_t)0x7E3F, (q15_t)0xEA80, (q15_t)0x7E2E, + (q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE9BA, (q15_t)0x7E0C, + (q15_t)0xE957, (q15_t)0x7DFA, (q15_t)0xE8F5, (q15_t)0x7DE8, + (q15_t)0xE892, (q15_t)0x7DD6, (q15_t)0xE82F, (q15_t)0x7DC3, + (q15_t)0xE7CC, (q15_t)0x7DB0, (q15_t)0xE769, (q15_t)0x7D9D, + (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE6A4, (q15_t)0x7D76, + (q15_t)0xE642, (q15_t)0x7D62, (q15_t)0xE5DF, (q15_t)0x7D4E, + (q15_t)0xE57D, (q15_t)0x7D39, (q15_t)0xE51B, (q15_t)0x7D24, + (q15_t)0xE4B8, (q15_t)0x7D0F, (q15_t)0xE456, (q15_t)0x7CF9, + (q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE392, (q15_t)0x7CCD, + (q15_t)0xE330, (q15_t)0x7CB7, (q15_t)0xE2CE, (q15_t)0x7CA0, + (q15_t)0xE26C, (q15_t)0x7C89, (q15_t)0xE20A, (q15_t)0x7C71, + (q15_t)0xE1A9, (q15_t)0x7C5A, (q15_t)0xE147, (q15_t)0x7C42, + (q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xE084, (q15_t)0x7C11, + (q15_t)0xE023, (q15_t)0x7BF8, (q15_t)0xDFC1, (q15_t)0x7BDF, + (q15_t)0xDF60, (q15_t)0x7BC5, (q15_t)0xDEFF, (q15_t)0x7BAC, + (q15_t)0xDE9E, (q15_t)0x7B92, (q15_t)0xDE3D, (q15_t)0x7B77, + (q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDD7B, (q15_t)0x7B42, + (q15_t)0xDD1A, (q15_t)0x7B26, (q15_t)0xDCBA, (q15_t)0x7B0B, + (q15_t)0xDC59, (q15_t)0x7AEF, (q15_t)0xDBF8, (q15_t)0x7AD3, + (q15_t)0xDB98, (q15_t)0x7AB6, (q15_t)0xDB38, (q15_t)0x7A9A, + (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xDA77, (q15_t)0x7A5F, + (q15_t)0xDA17, (q15_t)0x7A42, (q15_t)0xD9B7, (q15_t)0x7A24, + (q15_t)0xD957, (q15_t)0x7A05, (q15_t)0xD8F8, (q15_t)0x79E7, + (q15_t)0xD898, (q15_t)0x79C8, (q15_t)0xD838, (q15_t)0x79A9, + (q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD779, (q15_t)0x796A, + (q15_t)0xD71A, (q15_t)0x794A, (q15_t)0xD6BB, (q15_t)0x792A, + (q15_t)0xD65C, (q15_t)0x7909, (q15_t)0xD5FD, (q15_t)0x78E8, + (q15_t)0xD59E, (q15_t)0x78C7, (q15_t)0xD53F, (q15_t)0x78A6, + (q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD482, (q15_t)0x7862, + (q15_t)0xD423, (q15_t)0x7840, (q15_t)0xD3C5, (q15_t)0x781D, + (q15_t)0xD367, (q15_t)0x77FA, (q15_t)0xD308, (q15_t)0x77D7, + (q15_t)0xD2AA, (q15_t)0x77B4, (q15_t)0xD24C, (q15_t)0x7790, + (q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD191, (q15_t)0x7747, + (q15_t)0xD133, (q15_t)0x7723, (q15_t)0xD0D6, (q15_t)0x76FE, + (q15_t)0xD078, (q15_t)0x76D9, (q15_t)0xD01B, (q15_t)0x76B3, + (q15_t)0xCFBE, (q15_t)0x768E, (q15_t)0xCF61, (q15_t)0x7668, + (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCEA7, (q15_t)0x761B, + (q15_t)0xCE4A, (q15_t)0x75F4, (q15_t)0xCDEE, (q15_t)0x75CC, + (q15_t)0xCD91, (q15_t)0x75A5, (q15_t)0xCD35, (q15_t)0x757D, + (q15_t)0xCCD9, (q15_t)0x7555, (q15_t)0xCC7D, (q15_t)0x752D, + (q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCBC5, (q15_t)0x74DB, + (q15_t)0xCB69, (q15_t)0x74B2, (q15_t)0xCB0D, (q15_t)0x7489, + (q15_t)0xCAB2, (q15_t)0x745F, (q15_t)0xCA57, (q15_t)0x7435, + (q15_t)0xC9FB, (q15_t)0x740B, (q15_t)0xC9A0, (q15_t)0x73E0, + (q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC8EB, (q15_t)0x738A, + (q15_t)0xC890, (q15_t)0x735F, (q15_t)0xC835, (q15_t)0x7333, + (q15_t)0xC7DB, (q15_t)0x7307, (q15_t)0xC781, (q15_t)0x72DB, + (q15_t)0xC727, (q15_t)0x72AF, (q15_t)0xC6CD, (q15_t)0x7282, + (q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC619, (q15_t)0x7227, + (q15_t)0xC5BF, (q15_t)0x71FA, (q15_t)0xC566, (q15_t)0x71CC, + (q15_t)0xC50D, (q15_t)0x719E, (q15_t)0xC4B3, (q15_t)0x716F, + (q15_t)0xC45A, (q15_t)0x7141, (q15_t)0xC402, (q15_t)0x7112, + (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC350, (q15_t)0x70B3, + (q15_t)0xC2F8, (q15_t)0x7083, (q15_t)0xC29F, (q15_t)0x7053, + (q15_t)0xC247, (q15_t)0x7023, (q15_t)0xC1EF, (q15_t)0x6FF2, + (q15_t)0xC197, (q15_t)0x6FC1, (q15_t)0xC140, (q15_t)0x6F90, + (q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xC091, (q15_t)0x6F2D, + (q15_t)0xC03A, (q15_t)0x6EFB, (q15_t)0xBFE2, (q15_t)0x6EC9, + (q15_t)0xBF8C, (q15_t)0x6E96, (q15_t)0xBF35, (q15_t)0x6E63, + (q15_t)0xBEDE, (q15_t)0x6E30, (q15_t)0xBE88, (q15_t)0x6DFD, + (q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBDDB, (q15_t)0x6D96, + (q15_t)0xBD85, (q15_t)0x6D62, (q15_t)0xBD2F, (q15_t)0x6D2D, + (q15_t)0xBCDA, (q15_t)0x6CF9, (q15_t)0xBC84, (q15_t)0x6CC4, + (q15_t)0xBC2F, (q15_t)0x6C8F, (q15_t)0xBBDA, (q15_t)0x6C59, + (q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBB30, (q15_t)0x6BEE, + (q15_t)0xBADB, (q15_t)0x6BB8, (q15_t)0xBA87, (q15_t)0x6B81, + (q15_t)0xBA32, (q15_t)0x6B4A, (q15_t)0xB9DE, (q15_t)0x6B13, + (q15_t)0xB98A, (q15_t)0x6ADC, (q15_t)0xB936, (q15_t)0x6AA5, + (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB88F, (q15_t)0x6A35, + (q15_t)0xB83C, (q15_t)0x69FD, (q15_t)0xB7E9, (q15_t)0x69C4, + (q15_t)0xB796, (q15_t)0x698C, (q15_t)0xB743, (q15_t)0x6953, + (q15_t)0xB6F0, (q15_t)0x6919, (q15_t)0xB69E, (q15_t)0x68E0, + (q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB5F9, (q15_t)0x686C, + (q15_t)0xB5A7, (q15_t)0x6832, (q15_t)0xB556, (q15_t)0x67F7, + (q15_t)0xB504, (q15_t)0x67BD, (q15_t)0xB4B3, (q15_t)0x6782, + (q15_t)0xB461, (q15_t)0x6746, (q15_t)0xB410, (q15_t)0x670B, + (q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB36F, (q15_t)0x6693, + (q15_t)0xB31E, (q15_t)0x6657, (q15_t)0xB2CE, (q15_t)0x661A, + (q15_t)0xB27E, (q15_t)0x65DD, (q15_t)0xB22E, (q15_t)0x65A0, + (q15_t)0xB1DE, (q15_t)0x6563, (q15_t)0xB18F, (q15_t)0x6526, + (q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB0F0, (q15_t)0x64AA, + (q15_t)0xB0A1, (q15_t)0x646C, (q15_t)0xB053, (q15_t)0x642D, + (q15_t)0xB004, (q15_t)0x63EF, (q15_t)0xAFB6, (q15_t)0x63B0, + (q15_t)0xAF68, (q15_t)0x6371, (q15_t)0xAF1A, (q15_t)0x6331, + (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAE7E, (q15_t)0x62B2, + (q15_t)0xAE31, (q15_t)0x6271, (q15_t)0xADE3, (q15_t)0x6231, + (q15_t)0xAD96, (q15_t)0x61F1, (q15_t)0xAD4A, (q15_t)0x61B0, + (q15_t)0xACFD, (q15_t)0x616F, (q15_t)0xACB1, (q15_t)0x612D, + (q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xAC18, (q15_t)0x60AA, + (q15_t)0xABCC, (q15_t)0x6068, (q15_t)0xAB81, (q15_t)0x6026, + (q15_t)0xAB35, (q15_t)0x5FE3, (q15_t)0xAAEA, (q15_t)0x5FA0, + (q15_t)0xAA9F, (q15_t)0x5F5E, (q15_t)0xAA54, (q15_t)0x5F1A, + (q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA9BF, (q15_t)0x5E93, + (q15_t)0xA975, (q15_t)0x5E50, (q15_t)0xA92B, (q15_t)0x5E0B, + (q15_t)0xA8E2, (q15_t)0x5DC7, (q15_t)0xA898, (q15_t)0x5D83, + (q15_t)0xA84F, (q15_t)0x5D3E, (q15_t)0xA806, (q15_t)0x5CF9, + (q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA774, (q15_t)0x5C6E, + (q15_t)0xA72B, (q15_t)0x5C29, (q15_t)0xA6E3, (q15_t)0x5BE3, + (q15_t)0xA69B, (q15_t)0x5B9D, (q15_t)0xA653, (q15_t)0x5B56, + (q15_t)0xA60C, (q15_t)0x5B10, (q15_t)0xA5C4, (q15_t)0x5AC9, + (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA536, (q15_t)0x5A3B, + (q15_t)0xA4EF, (q15_t)0x59F3, (q15_t)0xA4A9, (q15_t)0x59AC, + (q15_t)0xA462, (q15_t)0x5964, (q15_t)0xA41C, (q15_t)0x591C, + (q15_t)0xA3D6, (q15_t)0x58D4, (q15_t)0xA391, (q15_t)0x588B, + (q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA306, (q15_t)0x57F9, + (q15_t)0xA2C1, (q15_t)0x57B0, (q15_t)0xA27C, (q15_t)0x5767, + (q15_t)0xA238, (q15_t)0x571D, (q15_t)0xA1F4, (q15_t)0x56D4, + (q15_t)0xA1AF, (q15_t)0x568A, (q15_t)0xA16C, (q15_t)0x5640, + (q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA0E5, (q15_t)0x55AB, + (q15_t)0xA0A1, (q15_t)0x5560, (q15_t)0xA05F, (q15_t)0x5515, + (q15_t)0xA01C, (q15_t)0x54CA, (q15_t)0x9FD9, (q15_t)0x547E, + (q15_t)0x9F97, (q15_t)0x5433, (q15_t)0x9F55, (q15_t)0x53E7, + (q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9ED2, (q15_t)0x534E, + (q15_t)0x9E90, (q15_t)0x5302, (q15_t)0x9E4F, (q15_t)0x52B5, + (q15_t)0x9E0E, (q15_t)0x5269, (q15_t)0x9DCE, (q15_t)0x521C, + (q15_t)0x9D8E, (q15_t)0x51CE, (q15_t)0x9D4D, (q15_t)0x5181, + (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9CCE, (q15_t)0x50E5, + (q15_t)0x9C8E, (q15_t)0x5097, (q15_t)0x9C4F, (q15_t)0x5049, + (q15_t)0x9C10, (q15_t)0x4FFB, (q15_t)0x9BD2, (q15_t)0x4FAC, + (q15_t)0x9B93, (q15_t)0x4F5E, (q15_t)0x9B55, (q15_t)0x4F0F, + (q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9AD9, (q15_t)0x4E70, + (q15_t)0x9A9C, (q15_t)0x4E21, (q15_t)0x9A5F, (q15_t)0x4DD1, + (q15_t)0x9A22, (q15_t)0x4D81, (q15_t)0x99E5, (q15_t)0x4D31, + (q15_t)0x99A8, (q15_t)0x4CE1, (q15_t)0x996C, (q15_t)0x4C90, + (q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x98F4, (q15_t)0x4BEF, + (q15_t)0x98B9, (q15_t)0x4B9E, (q15_t)0x987D, (q15_t)0x4B4C, + (q15_t)0x9842, (q15_t)0x4AFB, (q15_t)0x9808, (q15_t)0x4AA9, + (q15_t)0x97CD, (q15_t)0x4A58, (q15_t)0x9793, (q15_t)0x4A06, + (q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x971F, (q15_t)0x4961, + (q15_t)0x96E6, (q15_t)0x490F, (q15_t)0x96AC, (q15_t)0x48BC, + (q15_t)0x9673, (q15_t)0x4869, (q15_t)0x963B, (q15_t)0x4816, + (q15_t)0x9602, (q15_t)0x47C3, (q15_t)0x95CA, (q15_t)0x4770, + (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x955A, (q15_t)0x46C9, + (q15_t)0x9523, (q15_t)0x4675, (q15_t)0x94EC, (q15_t)0x4621, + (q15_t)0x94B5, (q15_t)0x45CD, (q15_t)0x947E, (q15_t)0x4578, + (q15_t)0x9447, (q15_t)0x4524, (q15_t)0x9411, (q15_t)0x44CF, + (q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x93A6, (q15_t)0x4425, + (q15_t)0x9370, (q15_t)0x43D0, (q15_t)0x933B, (q15_t)0x437B, + (q15_t)0x9306, (q15_t)0x4325, (q15_t)0x92D2, (q15_t)0x42D0, + (q15_t)0x929D, (q15_t)0x427A, (q15_t)0x9269, (q15_t)0x4224, + (q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x9202, (q15_t)0x4177, + (q15_t)0x91CF, (q15_t)0x4121, (q15_t)0x919C, (q15_t)0x40CA, + (q15_t)0x9169, (q15_t)0x4073, (q15_t)0x9136, (q15_t)0x401D, + (q15_t)0x9104, (q15_t)0x3FC5, (q15_t)0x90D2, (q15_t)0x3F6E, + (q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x906F, (q15_t)0x3EBF, + (q15_t)0x903E, (q15_t)0x3E68, (q15_t)0x900D, (q15_t)0x3E10, + (q15_t)0x8FDC, (q15_t)0x3DB8, (q15_t)0x8FAC, (q15_t)0x3D60, + (q15_t)0x8F7C, (q15_t)0x3D07, (q15_t)0x8F4C, (q15_t)0x3CAF, + (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8EED, (q15_t)0x3BFD, + (q15_t)0x8EBE, (q15_t)0x3BA5, (q15_t)0x8E90, (q15_t)0x3B4C, + (q15_t)0x8E61, (q15_t)0x3AF2, (q15_t)0x8E33, (q15_t)0x3A99, + (q15_t)0x8E05, (q15_t)0x3A40, (q15_t)0x8DD8, (q15_t)0x39E6, + (q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8D7D, (q15_t)0x3932, + (q15_t)0x8D50, (q15_t)0x38D8, (q15_t)0x8D24, (q15_t)0x387E, + (q15_t)0x8CF8, (q15_t)0x3824, (q15_t)0x8CCC, (q15_t)0x37CA, + (q15_t)0x8CA0, (q15_t)0x376F, (q15_t)0x8C75, (q15_t)0x3714, + (q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8C1F, (q15_t)0x365F, + (q15_t)0x8BF4, (q15_t)0x3604, (q15_t)0x8BCA, (q15_t)0x35A8, + (q15_t)0x8BA0, (q15_t)0x354D, (q15_t)0x8B76, (q15_t)0x34F2, + (q15_t)0x8B4D, (q15_t)0x3496, (q15_t)0x8B24, (q15_t)0x343A, + (q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8AD2, (q15_t)0x3382, + (q15_t)0x8AAA, (q15_t)0x3326, (q15_t)0x8A82, (q15_t)0x32CA, + (q15_t)0x8A5A, (q15_t)0x326E, (q15_t)0x8A33, (q15_t)0x3211, + (q15_t)0x8A0B, (q15_t)0x31B5, (q15_t)0x89E4, (q15_t)0x3158, + (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x8997, (q15_t)0x309E, + (q15_t)0x8971, (q15_t)0x3041, (q15_t)0x894C, (q15_t)0x2FE4, + (q15_t)0x8926, (q15_t)0x2F87, (q15_t)0x8901, (q15_t)0x2F29, + (q15_t)0x88DC, (q15_t)0x2ECC, (q15_t)0x88B8, (q15_t)0x2E6E, + (q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x886F, (q15_t)0x2DB3, + (q15_t)0x884B, (q15_t)0x2D55, (q15_t)0x8828, (q15_t)0x2CF7, + (q15_t)0x8805, (q15_t)0x2C98, (q15_t)0x87E2, (q15_t)0x2C3A, + (q15_t)0x87BF, (q15_t)0x2BDC, (q15_t)0x879D, (q15_t)0x2B7D, + (q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x8759, (q15_t)0x2AC0, + (q15_t)0x8738, (q15_t)0x2A61, (q15_t)0x8717, (q15_t)0x2A02, + (q15_t)0x86F6, (q15_t)0x29A3, (q15_t)0x86D5, (q15_t)0x2944, + (q15_t)0x86B5, (q15_t)0x28E5, (q15_t)0x8695, (q15_t)0x2886, + (q15_t)0x8675, (q15_t)0x2826, (q15_t)0x8656, (q15_t)0x27C7, + (q15_t)0x8637, (q15_t)0x2767, (q15_t)0x8618, (q15_t)0x2707, + (q15_t)0x85FA, (q15_t)0x26A8, (q15_t)0x85DB, (q15_t)0x2648, + (q15_t)0x85BD, (q15_t)0x25E8, (q15_t)0x85A0, (q15_t)0x2588, + (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8565, (q15_t)0x24C7, + (q15_t)0x8549, (q15_t)0x2467, (q15_t)0x852C, (q15_t)0x2407, + (q15_t)0x8510, (q15_t)0x23A6, (q15_t)0x84F4, (q15_t)0x2345, + (q15_t)0x84D9, (q15_t)0x22E5, (q15_t)0x84BD, (q15_t)0x2284, + (q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x8488, (q15_t)0x21C2, + (q15_t)0x846D, (q15_t)0x2161, (q15_t)0x8453, (q15_t)0x2100, + (q15_t)0x843A, (q15_t)0x209F, (q15_t)0x8420, (q15_t)0x203E, + (q15_t)0x8407, (q15_t)0x1FDC, (q15_t)0x83EE, (q15_t)0x1F7B, + (q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x83BD, (q15_t)0x1EB8, + (q15_t)0x83A5, (q15_t)0x1E56, (q15_t)0x838E, (q15_t)0x1DF5, + (q15_t)0x8376, (q15_t)0x1D93, (q15_t)0x835F, (q15_t)0x1D31, + (q15_t)0x8348, (q15_t)0x1CCF, (q15_t)0x8332, (q15_t)0x1C6D, + (q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x8306, (q15_t)0x1BA9, + (q15_t)0x82F0, (q15_t)0x1B47, (q15_t)0x82DB, (q15_t)0x1AE4, + (q15_t)0x82C6, (q15_t)0x1A82, (q15_t)0x82B1, (q15_t)0x1A20, + (q15_t)0x829D, (q15_t)0x19BD, (q15_t)0x8289, (q15_t)0x195B, + (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x8262, (q15_t)0x1896, + (q15_t)0x824F, (q15_t)0x1833, (q15_t)0x823C, (q15_t)0x17D0, + (q15_t)0x8229, (q15_t)0x176D, (q15_t)0x8217, (q15_t)0x170A, + (q15_t)0x8205, (q15_t)0x16A8, (q15_t)0x81F3, (q15_t)0x1645, + (q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81D1, (q15_t)0x157F, + (q15_t)0x81C0, (q15_t)0x151B, (q15_t)0x81B0, (q15_t)0x14B8, + (q15_t)0x81A0, (q15_t)0x1455, (q15_t)0x8190, (q15_t)0x13F2, + (q15_t)0x8180, (q15_t)0x138E, (q15_t)0x8171, (q15_t)0x132B, + (q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x8154, (q15_t)0x1264, + (q15_t)0x8145, (q15_t)0x1201, (q15_t)0x8137, (q15_t)0x119D, + (q15_t)0x812A, (q15_t)0x1139, (q15_t)0x811C, (q15_t)0x10D6, + (q15_t)0x810F, (q15_t)0x1072, (q15_t)0x8102, (q15_t)0x100E, + (q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80EA, (q15_t)0x0F47, + (q15_t)0x80DE, (q15_t)0x0EE3, (q15_t)0x80D2, (q15_t)0x0E7F, + (q15_t)0x80C7, (q15_t)0x0E1B, (q15_t)0x80BC, (q15_t)0x0DB7, + (q15_t)0x80B2, (q15_t)0x0D53, (q15_t)0x80A7, (q15_t)0x0CEF, + (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8094, (q15_t)0x0C27, + (q15_t)0x808A, (q15_t)0x0BC3, (q15_t)0x8081, (q15_t)0x0B5F, + (q15_t)0x8078, (q15_t)0x0AFB, (q15_t)0x8070, (q15_t)0x0A97, + (q15_t)0x8068, (q15_t)0x0A33, (q15_t)0x8060, (q15_t)0x09CE, + (q15_t)0x8058, (q15_t)0x096A, (q15_t)0x8051, (q15_t)0x0906, + (q15_t)0x804A, (q15_t)0x08A2, (q15_t)0x8043, (q15_t)0x083D, + (q15_t)0x803D, (q15_t)0x07D9, (q15_t)0x8037, (q15_t)0x0775, + (q15_t)0x8031, (q15_t)0x0710, (q15_t)0x802C, (q15_t)0x06AC, + (q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8022, (q15_t)0x05E3, + (q15_t)0x801E, (q15_t)0x057F, (q15_t)0x801A, (q15_t)0x051A, + (q15_t)0x8016, (q15_t)0x04B6, (q15_t)0x8012, (q15_t)0x0451, + (q15_t)0x800F, (q15_t)0x03ED, (q15_t)0x800C, (q15_t)0x0388, + (q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8007, (q15_t)0x02BF, + (q15_t)0x8005, (q15_t)0x025B, (q15_t)0x8003, (q15_t)0x01F6, + (q15_t)0x8002, (q15_t)0x0192, (q15_t)0x8001, (q15_t)0x012D, + (q15_t)0x8000, (q15_t)0x00C9, (q15_t)0x8000, (q15_t)0x0064, + (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8000, (q15_t)0xFF9B, + (q15_t)0x8000, (q15_t)0xFF36, (q15_t)0x8001, (q15_t)0xFED2, + (q15_t)0x8002, (q15_t)0xFE6D, (q15_t)0x8003, (q15_t)0xFE09, + (q15_t)0x8005, (q15_t)0xFDA4, (q15_t)0x8007, (q15_t)0xFD40, + (q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x800C, (q15_t)0xFC77, + (q15_t)0x800F, (q15_t)0xFC12, (q15_t)0x8012, (q15_t)0xFBAE, + (q15_t)0x8016, (q15_t)0xFB49, (q15_t)0x801A, (q15_t)0xFAE5, + (q15_t)0x801E, (q15_t)0xFA80, (q15_t)0x8022, (q15_t)0xFA1C, + (q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x802C, (q15_t)0xF953, + (q15_t)0x8031, (q15_t)0xF8EF, (q15_t)0x8037, (q15_t)0xF88A, + (q15_t)0x803D, (q15_t)0xF826, (q15_t)0x8043, (q15_t)0xF7C2, + (q15_t)0x804A, (q15_t)0xF75D, (q15_t)0x8051, (q15_t)0xF6F9, + (q15_t)0x8058, (q15_t)0xF695, (q15_t)0x8060, (q15_t)0xF631, + (q15_t)0x8068, (q15_t)0xF5CC, (q15_t)0x8070, (q15_t)0xF568, + (q15_t)0x8078, (q15_t)0xF504, (q15_t)0x8081, (q15_t)0xF4A0, + (q15_t)0x808A, (q15_t)0xF43C, (q15_t)0x8094, (q15_t)0xF3D8, + (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80A7, (q15_t)0xF310, + (q15_t)0x80B2, (q15_t)0xF2AC, (q15_t)0x80BC, (q15_t)0xF248, + (q15_t)0x80C7, (q15_t)0xF1E4, (q15_t)0x80D2, (q15_t)0xF180, + (q15_t)0x80DE, (q15_t)0xF11C, (q15_t)0x80EA, (q15_t)0xF0B8, + (q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x8102, (q15_t)0xEFF1, + (q15_t)0x810F, (q15_t)0xEF8D, (q15_t)0x811C, (q15_t)0xEF29, + (q15_t)0x812A, (q15_t)0xEEC6, (q15_t)0x8137, (q15_t)0xEE62, + (q15_t)0x8145, (q15_t)0xEDFE, (q15_t)0x8154, (q15_t)0xED9B, + (q15_t)0x8162, (q15_t)0xED37, (q15_t)0x8171, (q15_t)0xECD4, + (q15_t)0x8180, (q15_t)0xEC71, (q15_t)0x8190, (q15_t)0xEC0D, + (q15_t)0x81A0, (q15_t)0xEBAA, (q15_t)0x81B0, (q15_t)0xEB47, + (q15_t)0x81C0, (q15_t)0xEAE4, (q15_t)0x81D1, (q15_t)0xEA80, + (q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x81F3, (q15_t)0xE9BA, + (q15_t)0x8205, (q15_t)0xE957, (q15_t)0x8217, (q15_t)0xE8F5, + (q15_t)0x8229, (q15_t)0xE892, (q15_t)0x823C, (q15_t)0xE82F, + (q15_t)0x824F, (q15_t)0xE7CC, (q15_t)0x8262, (q15_t)0xE769, + (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x8289, (q15_t)0xE6A4, + (q15_t)0x829D, (q15_t)0xE642, (q15_t)0x82B1, (q15_t)0xE5DF, + (q15_t)0x82C6, (q15_t)0xE57D, (q15_t)0x82DB, (q15_t)0xE51B, + (q15_t)0x82F0, (q15_t)0xE4B8, (q15_t)0x8306, (q15_t)0xE456, + (q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8332, (q15_t)0xE392, + (q15_t)0x8348, (q15_t)0xE330, (q15_t)0x835F, (q15_t)0xE2CE, + (q15_t)0x8376, (q15_t)0xE26C, (q15_t)0x838E, (q15_t)0xE20A, + (q15_t)0x83A5, (q15_t)0xE1A9, (q15_t)0x83BD, (q15_t)0xE147, + (q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x83EE, (q15_t)0xE084, + (q15_t)0x8407, (q15_t)0xE023, (q15_t)0x8420, (q15_t)0xDFC1, + (q15_t)0x843A, (q15_t)0xDF60, (q15_t)0x8453, (q15_t)0xDEFF, + (q15_t)0x846D, (q15_t)0xDE9E, (q15_t)0x8488, (q15_t)0xDE3D, + (q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x84BD, (q15_t)0xDD7B, + (q15_t)0x84D9, (q15_t)0xDD1A, (q15_t)0x84F4, (q15_t)0xDCBA, + (q15_t)0x8510, (q15_t)0xDC59, (q15_t)0x852C, (q15_t)0xDBF8, + (q15_t)0x8549, (q15_t)0xDB98, (q15_t)0x8565, (q15_t)0xDB38, + (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x85A0, (q15_t)0xDA77, + (q15_t)0x85BD, (q15_t)0xDA17, (q15_t)0x85DB, (q15_t)0xD9B7, + (q15_t)0x85FA, (q15_t)0xD957, (q15_t)0x8618, (q15_t)0xD8F8, + (q15_t)0x8637, (q15_t)0xD898, (q15_t)0x8656, (q15_t)0xD838, + (q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x8695, (q15_t)0xD779, + (q15_t)0x86B5, (q15_t)0xD71A, (q15_t)0x86D5, (q15_t)0xD6BB, + (q15_t)0x86F6, (q15_t)0xD65C, (q15_t)0x8717, (q15_t)0xD5FD, + (q15_t)0x8738, (q15_t)0xD59E, (q15_t)0x8759, (q15_t)0xD53F, + (q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x879D, (q15_t)0xD482, + (q15_t)0x87BF, (q15_t)0xD423, (q15_t)0x87E2, (q15_t)0xD3C5, + (q15_t)0x8805, (q15_t)0xD367, (q15_t)0x8828, (q15_t)0xD308, + (q15_t)0x884B, (q15_t)0xD2AA, (q15_t)0x886F, (q15_t)0xD24C, + (q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x88B8, (q15_t)0xD191, + (q15_t)0x88DC, (q15_t)0xD133, (q15_t)0x8901, (q15_t)0xD0D6, + (q15_t)0x8926, (q15_t)0xD078, (q15_t)0x894C, (q15_t)0xD01B, + (q15_t)0x8971, (q15_t)0xCFBE, (q15_t)0x8997, (q15_t)0xCF61, + (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x89E4, (q15_t)0xCEA7, + (q15_t)0x8A0B, (q15_t)0xCE4A, (q15_t)0x8A33, (q15_t)0xCDEE, + (q15_t)0x8A5A, (q15_t)0xCD91, (q15_t)0x8A82, (q15_t)0xCD35, + (q15_t)0x8AAA, (q15_t)0xCCD9, (q15_t)0x8AD2, (q15_t)0xCC7D, + (q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8B24, (q15_t)0xCBC5, + (q15_t)0x8B4D, (q15_t)0xCB69, (q15_t)0x8B76, (q15_t)0xCB0D, + (q15_t)0x8BA0, (q15_t)0xCAB2, (q15_t)0x8BCA, (q15_t)0xCA57, + (q15_t)0x8BF4, (q15_t)0xC9FB, (q15_t)0x8C1F, (q15_t)0xC9A0, + (q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8C75, (q15_t)0xC8EB, + (q15_t)0x8CA0, (q15_t)0xC890, (q15_t)0x8CCC, (q15_t)0xC835, + (q15_t)0x8CF8, (q15_t)0xC7DB, (q15_t)0x8D24, (q15_t)0xC781, + (q15_t)0x8D50, (q15_t)0xC727, (q15_t)0x8D7D, (q15_t)0xC6CD, + (q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8DD8, (q15_t)0xC619, + (q15_t)0x8E05, (q15_t)0xC5BF, (q15_t)0x8E33, (q15_t)0xC566, + (q15_t)0x8E61, (q15_t)0xC50D, (q15_t)0x8E90, (q15_t)0xC4B3, + (q15_t)0x8EBE, (q15_t)0xC45A, (q15_t)0x8EED, (q15_t)0xC402, + (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8F4C, (q15_t)0xC350, + (q15_t)0x8F7C, (q15_t)0xC2F8, (q15_t)0x8FAC, (q15_t)0xC29F, + (q15_t)0x8FDC, (q15_t)0xC247, (q15_t)0x900D, (q15_t)0xC1EF, + (q15_t)0x903E, (q15_t)0xC197, (q15_t)0x906F, (q15_t)0xC140, + (q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x90D2, (q15_t)0xC091, + (q15_t)0x9104, (q15_t)0xC03A, (q15_t)0x9136, (q15_t)0xBFE2, + (q15_t)0x9169, (q15_t)0xBF8C, (q15_t)0x919C, (q15_t)0xBF35, + (q15_t)0x91CF, (q15_t)0xBEDE, (q15_t)0x9202, (q15_t)0xBE88, + (q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x9269, (q15_t)0xBDDB, + (q15_t)0x929D, (q15_t)0xBD85, (q15_t)0x92D2, (q15_t)0xBD2F, + (q15_t)0x9306, (q15_t)0xBCDA, (q15_t)0x933B, (q15_t)0xBC84, + (q15_t)0x9370, (q15_t)0xBC2F, (q15_t)0x93A6, (q15_t)0xBBDA, + (q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x9411, (q15_t)0xBB30, + (q15_t)0x9447, (q15_t)0xBADB, (q15_t)0x947E, (q15_t)0xBA87, + (q15_t)0x94B5, (q15_t)0xBA32, (q15_t)0x94EC, (q15_t)0xB9DE, + (q15_t)0x9523, (q15_t)0xB98A, (q15_t)0x955A, (q15_t)0xB936, + (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x95CA, (q15_t)0xB88F, + (q15_t)0x9602, (q15_t)0xB83C, (q15_t)0x963B, (q15_t)0xB7E9, + (q15_t)0x9673, (q15_t)0xB796, (q15_t)0x96AC, (q15_t)0xB743, + (q15_t)0x96E6, (q15_t)0xB6F0, (q15_t)0x971F, (q15_t)0xB69E, + (q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x9793, (q15_t)0xB5F9, + (q15_t)0x97CD, (q15_t)0xB5A7, (q15_t)0x9808, (q15_t)0xB556, + (q15_t)0x9842, (q15_t)0xB504, (q15_t)0x987D, (q15_t)0xB4B3, + (q15_t)0x98B9, (q15_t)0xB461, (q15_t)0x98F4, (q15_t)0xB410, + (q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x996C, (q15_t)0xB36F, + (q15_t)0x99A8, (q15_t)0xB31E, (q15_t)0x99E5, (q15_t)0xB2CE, + (q15_t)0x9A22, (q15_t)0xB27E, (q15_t)0x9A5F, (q15_t)0xB22E, + (q15_t)0x9A9C, (q15_t)0xB1DE, (q15_t)0x9AD9, (q15_t)0xB18F, + (q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9B55, (q15_t)0xB0F0, + (q15_t)0x9B93, (q15_t)0xB0A1, (q15_t)0x9BD2, (q15_t)0xB053, + (q15_t)0x9C10, (q15_t)0xB004, (q15_t)0x9C4F, (q15_t)0xAFB6, + (q15_t)0x9C8E, (q15_t)0xAF68, (q15_t)0x9CCE, (q15_t)0xAF1A, + (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9D4D, (q15_t)0xAE7E, + (q15_t)0x9D8E, (q15_t)0xAE31, (q15_t)0x9DCE, (q15_t)0xADE3, + (q15_t)0x9E0E, (q15_t)0xAD96, (q15_t)0x9E4F, (q15_t)0xAD4A, + (q15_t)0x9E90, (q15_t)0xACFD, (q15_t)0x9ED2, (q15_t)0xACB1, + (q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0x9F55, (q15_t)0xAC18, + (q15_t)0x9F97, (q15_t)0xABCC, (q15_t)0x9FD9, (q15_t)0xAB81, + (q15_t)0xA01C, (q15_t)0xAB35, (q15_t)0xA05F, (q15_t)0xAAEA, + (q15_t)0xA0A1, (q15_t)0xAA9F, (q15_t)0xA0E5, (q15_t)0xAA54, + (q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA16C, (q15_t)0xA9BF, + (q15_t)0xA1AF, (q15_t)0xA975, (q15_t)0xA1F4, (q15_t)0xA92B, + (q15_t)0xA238, (q15_t)0xA8E2, (q15_t)0xA27C, (q15_t)0xA898, + (q15_t)0xA2C1, (q15_t)0xA84F, (q15_t)0xA306, (q15_t)0xA806, + (q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA391, (q15_t)0xA774, + (q15_t)0xA3D6, (q15_t)0xA72B, (q15_t)0xA41C, (q15_t)0xA6E3, + (q15_t)0xA462, (q15_t)0xA69B, (q15_t)0xA4A9, (q15_t)0xA653, + (q15_t)0xA4EF, (q15_t)0xA60C, (q15_t)0xA536, (q15_t)0xA5C4, + (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA5C4, (q15_t)0xA536, + (q15_t)0xA60C, (q15_t)0xA4EF, (q15_t)0xA653, (q15_t)0xA4A9, + (q15_t)0xA69B, (q15_t)0xA462, (q15_t)0xA6E3, (q15_t)0xA41C, + (q15_t)0xA72B, (q15_t)0xA3D6, (q15_t)0xA774, (q15_t)0xA391, + (q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA806, (q15_t)0xA306, + (q15_t)0xA84F, (q15_t)0xA2C1, (q15_t)0xA898, (q15_t)0xA27C, + (q15_t)0xA8E2, (q15_t)0xA238, (q15_t)0xA92B, (q15_t)0xA1F4, + (q15_t)0xA975, (q15_t)0xA1AF, (q15_t)0xA9BF, (q15_t)0xA16C, + (q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAA54, (q15_t)0xA0E5, + (q15_t)0xAA9F, (q15_t)0xA0A1, (q15_t)0xAAEA, (q15_t)0xA05F, + (q15_t)0xAB35, (q15_t)0xA01C, (q15_t)0xAB81, (q15_t)0x9FD9, + (q15_t)0xABCC, (q15_t)0x9F97, (q15_t)0xAC18, (q15_t)0x9F55, + (q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xACB1, (q15_t)0x9ED2, + (q15_t)0xACFD, (q15_t)0x9E90, (q15_t)0xAD4A, (q15_t)0x9E4F, + (q15_t)0xAD96, (q15_t)0x9E0E, (q15_t)0xADE3, (q15_t)0x9DCE, + (q15_t)0xAE31, (q15_t)0x9D8E, (q15_t)0xAE7E, (q15_t)0x9D4D, + (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xAF1A, (q15_t)0x9CCE, + (q15_t)0xAF68, (q15_t)0x9C8E, (q15_t)0xAFB6, (q15_t)0x9C4F, + (q15_t)0xB004, (q15_t)0x9C10, (q15_t)0xB053, (q15_t)0x9BD2, + (q15_t)0xB0A1, (q15_t)0x9B93, (q15_t)0xB0F0, (q15_t)0x9B55, + (q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB18F, (q15_t)0x9AD9, + (q15_t)0xB1DE, (q15_t)0x9A9C, (q15_t)0xB22E, (q15_t)0x9A5F, + (q15_t)0xB27E, (q15_t)0x9A22, (q15_t)0xB2CE, (q15_t)0x99E5, + (q15_t)0xB31E, (q15_t)0x99A8, (q15_t)0xB36F, (q15_t)0x996C, + (q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB410, (q15_t)0x98F4, + (q15_t)0xB461, (q15_t)0x98B9, (q15_t)0xB4B3, (q15_t)0x987D, + (q15_t)0xB504, (q15_t)0x9842, (q15_t)0xB556, (q15_t)0x9808, + (q15_t)0xB5A7, (q15_t)0x97CD, (q15_t)0xB5F9, (q15_t)0x9793, + (q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB69E, (q15_t)0x971F, + (q15_t)0xB6F0, (q15_t)0x96E6, (q15_t)0xB743, (q15_t)0x96AC, + (q15_t)0xB796, (q15_t)0x9673, (q15_t)0xB7E9, (q15_t)0x963B, + (q15_t)0xB83C, (q15_t)0x9602, (q15_t)0xB88F, (q15_t)0x95CA, + (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xB936, (q15_t)0x955A, + (q15_t)0xB98A, (q15_t)0x9523, (q15_t)0xB9DE, (q15_t)0x94EC, + (q15_t)0xBA32, (q15_t)0x94B5, (q15_t)0xBA87, (q15_t)0x947E, + (q15_t)0xBADB, (q15_t)0x9447, (q15_t)0xBB30, (q15_t)0x9411, + (q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBBDA, (q15_t)0x93A6, + (q15_t)0xBC2F, (q15_t)0x9370, (q15_t)0xBC84, (q15_t)0x933B, + (q15_t)0xBCDA, (q15_t)0x9306, (q15_t)0xBD2F, (q15_t)0x92D2, + (q15_t)0xBD85, (q15_t)0x929D, (q15_t)0xBDDB, (q15_t)0x9269, + (q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBE88, (q15_t)0x9202, + (q15_t)0xBEDE, (q15_t)0x91CF, (q15_t)0xBF35, (q15_t)0x919C, + (q15_t)0xBF8C, (q15_t)0x9169, (q15_t)0xBFE2, (q15_t)0x9136, + (q15_t)0xC03A, (q15_t)0x9104, (q15_t)0xC091, (q15_t)0x90D2, + (q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC140, (q15_t)0x906F, + (q15_t)0xC197, (q15_t)0x903E, (q15_t)0xC1EF, (q15_t)0x900D, + (q15_t)0xC247, (q15_t)0x8FDC, (q15_t)0xC29F, (q15_t)0x8FAC, + (q15_t)0xC2F8, (q15_t)0x8F7C, (q15_t)0xC350, (q15_t)0x8F4C, + (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC402, (q15_t)0x8EED, + (q15_t)0xC45A, (q15_t)0x8EBE, (q15_t)0xC4B3, (q15_t)0x8E90, + (q15_t)0xC50D, (q15_t)0x8E61, (q15_t)0xC566, (q15_t)0x8E33, + (q15_t)0xC5BF, (q15_t)0x8E05, (q15_t)0xC619, (q15_t)0x8DD8, + (q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC6CD, (q15_t)0x8D7D, + (q15_t)0xC727, (q15_t)0x8D50, (q15_t)0xC781, (q15_t)0x8D24, + (q15_t)0xC7DB, (q15_t)0x8CF8, (q15_t)0xC835, (q15_t)0x8CCC, + (q15_t)0xC890, (q15_t)0x8CA0, (q15_t)0xC8EB, (q15_t)0x8C75, + (q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xC9A0, (q15_t)0x8C1F, + (q15_t)0xC9FB, (q15_t)0x8BF4, (q15_t)0xCA57, (q15_t)0x8BCA, + (q15_t)0xCAB2, (q15_t)0x8BA0, (q15_t)0xCB0D, (q15_t)0x8B76, + (q15_t)0xCB69, (q15_t)0x8B4D, (q15_t)0xCBC5, (q15_t)0x8B24, + (q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCC7D, (q15_t)0x8AD2, + (q15_t)0xCCD9, (q15_t)0x8AAA, (q15_t)0xCD35, (q15_t)0x8A82, + (q15_t)0xCD91, (q15_t)0x8A5A, (q15_t)0xCDEE, (q15_t)0x8A33, + (q15_t)0xCE4A, (q15_t)0x8A0B, (q15_t)0xCEA7, (q15_t)0x89E4, + (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xCF61, (q15_t)0x8997, + (q15_t)0xCFBE, (q15_t)0x8971, (q15_t)0xD01B, (q15_t)0x894C, + (q15_t)0xD078, (q15_t)0x8926, (q15_t)0xD0D6, (q15_t)0x8901, + (q15_t)0xD133, (q15_t)0x88DC, (q15_t)0xD191, (q15_t)0x88B8, + (q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD24C, (q15_t)0x886F, + (q15_t)0xD2AA, (q15_t)0x884B, (q15_t)0xD308, (q15_t)0x8828, + (q15_t)0xD367, (q15_t)0x8805, (q15_t)0xD3C5, (q15_t)0x87E2, + (q15_t)0xD423, (q15_t)0x87BF, (q15_t)0xD482, (q15_t)0x879D, + (q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD53F, (q15_t)0x8759, + (q15_t)0xD59E, (q15_t)0x8738, (q15_t)0xD5FD, (q15_t)0x8717, + (q15_t)0xD65C, (q15_t)0x86F6, (q15_t)0xD6BB, (q15_t)0x86D5, + (q15_t)0xD71A, (q15_t)0x86B5, (q15_t)0xD779, (q15_t)0x8695, + (q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD838, (q15_t)0x8656, + (q15_t)0xD898, (q15_t)0x8637, (q15_t)0xD8F8, (q15_t)0x8618, + (q15_t)0xD957, (q15_t)0x85FA, (q15_t)0xD9B7, (q15_t)0x85DB, + (q15_t)0xDA17, (q15_t)0x85BD, (q15_t)0xDA77, (q15_t)0x85A0, + (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDB38, (q15_t)0x8565, + (q15_t)0xDB98, (q15_t)0x8549, (q15_t)0xDBF8, (q15_t)0x852C, + (q15_t)0xDC59, (q15_t)0x8510, (q15_t)0xDCBA, (q15_t)0x84F4, + (q15_t)0xDD1A, (q15_t)0x84D9, (q15_t)0xDD7B, (q15_t)0x84BD, + (q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDE3D, (q15_t)0x8488, + (q15_t)0xDE9E, (q15_t)0x846D, (q15_t)0xDEFF, (q15_t)0x8453, + (q15_t)0xDF60, (q15_t)0x843A, (q15_t)0xDFC1, (q15_t)0x8420, + (q15_t)0xE023, (q15_t)0x8407, (q15_t)0xE084, (q15_t)0x83EE, + (q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE147, (q15_t)0x83BD, + (q15_t)0xE1A9, (q15_t)0x83A5, (q15_t)0xE20A, (q15_t)0x838E, + (q15_t)0xE26C, (q15_t)0x8376, (q15_t)0xE2CE, (q15_t)0x835F, + (q15_t)0xE330, (q15_t)0x8348, (q15_t)0xE392, (q15_t)0x8332, + (q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE456, (q15_t)0x8306, + (q15_t)0xE4B8, (q15_t)0x82F0, (q15_t)0xE51B, (q15_t)0x82DB, + (q15_t)0xE57D, (q15_t)0x82C6, (q15_t)0xE5DF, (q15_t)0x82B1, + (q15_t)0xE642, (q15_t)0x829D, (q15_t)0xE6A4, (q15_t)0x8289, + (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE769, (q15_t)0x8262, + (q15_t)0xE7CC, (q15_t)0x824F, (q15_t)0xE82F, (q15_t)0x823C, + (q15_t)0xE892, (q15_t)0x8229, (q15_t)0xE8F5, (q15_t)0x8217, + (q15_t)0xE957, (q15_t)0x8205, (q15_t)0xE9BA, (q15_t)0x81F3, + (q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEA80, (q15_t)0x81D1, + (q15_t)0xEAE4, (q15_t)0x81C0, (q15_t)0xEB47, (q15_t)0x81B0, + (q15_t)0xEBAA, (q15_t)0x81A0, (q15_t)0xEC0D, (q15_t)0x8190, + (q15_t)0xEC71, (q15_t)0x8180, (q15_t)0xECD4, (q15_t)0x8171, + (q15_t)0xED37, (q15_t)0x8162, (q15_t)0xED9B, (q15_t)0x8154, + (q15_t)0xEDFE, (q15_t)0x8145, (q15_t)0xEE62, (q15_t)0x8137, + (q15_t)0xEEC6, (q15_t)0x812A, (q15_t)0xEF29, (q15_t)0x811C, + (q15_t)0xEF8D, (q15_t)0x810F, (q15_t)0xEFF1, (q15_t)0x8102, + (q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF0B8, (q15_t)0x80EA, + (q15_t)0xF11C, (q15_t)0x80DE, (q15_t)0xF180, (q15_t)0x80D2, + (q15_t)0xF1E4, (q15_t)0x80C7, (q15_t)0xF248, (q15_t)0x80BC, + (q15_t)0xF2AC, (q15_t)0x80B2, (q15_t)0xF310, (q15_t)0x80A7, + (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF3D8, (q15_t)0x8094, + (q15_t)0xF43C, (q15_t)0x808A, (q15_t)0xF4A0, (q15_t)0x8081, + (q15_t)0xF504, (q15_t)0x8078, (q15_t)0xF568, (q15_t)0x8070, + (q15_t)0xF5CC, (q15_t)0x8068, (q15_t)0xF631, (q15_t)0x8060, + (q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF6F9, (q15_t)0x8051, + (q15_t)0xF75D, (q15_t)0x804A, (q15_t)0xF7C2, (q15_t)0x8043, + (q15_t)0xF826, (q15_t)0x803D, (q15_t)0xF88A, (q15_t)0x8037, + (q15_t)0xF8EF, (q15_t)0x8031, (q15_t)0xF953, (q15_t)0x802C, + (q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xFA1C, (q15_t)0x8022, + (q15_t)0xFA80, (q15_t)0x801E, (q15_t)0xFAE5, (q15_t)0x801A, + (q15_t)0xFB49, (q15_t)0x8016, (q15_t)0xFBAE, (q15_t)0x8012, + (q15_t)0xFC12, (q15_t)0x800F, (q15_t)0xFC77, (q15_t)0x800C, + (q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFD40, (q15_t)0x8007, + (q15_t)0xFDA4, (q15_t)0x8005, (q15_t)0xFE09, (q15_t)0x8003, + (q15_t)0xFE6D, (q15_t)0x8002, (q15_t)0xFED2, (q15_t)0x8001, + (q15_t)0xFF36, (q15_t)0x8000, (q15_t)0xFF9B, (q15_t)0x8000 +}; + +/** +* \par +* Example code for q15 Twiddle factors Generation:: +* \par +*
for(i = 0; i< 3N/4; i++)
+* {
+*    twiddleCoefq15[2*i]= cos(i * 2*PI/(float)N);
+*    twiddleCoefq15[2*i+1]= sin(i * 2*PI/(float)N);
+* } 
+* \par +* where N = 4096 and PI = 3.14159265358979 +* \par +* Cos and Sin values are interleaved fashion +* \par +* Convert Floating point to q15(Fixed point 1.15): +* round(twiddleCoefq15(i) * pow(2, 15)) +* +*/ +const q15_t twiddleCoef_4096_q15[6144] = +{ + (q15_t)0x7FFF, (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0x0032, + (q15_t)0x7FFF, (q15_t)0x0064, (q15_t)0x7FFF, (q15_t)0x0096, + (q15_t)0x7FFF, (q15_t)0x00C9, (q15_t)0x7FFF, (q15_t)0x00FB, + (q15_t)0x7FFE, (q15_t)0x012D, (q15_t)0x7FFE, (q15_t)0x015F, + (q15_t)0x7FFD, (q15_t)0x0192, (q15_t)0x7FFC, (q15_t)0x01C4, + (q15_t)0x7FFC, (q15_t)0x01F6, (q15_t)0x7FFB, (q15_t)0x0228, + (q15_t)0x7FFA, (q15_t)0x025B, (q15_t)0x7FF9, (q15_t)0x028D, + (q15_t)0x7FF8, (q15_t)0x02BF, (q15_t)0x7FF7, (q15_t)0x02F1, + (q15_t)0x7FF6, (q15_t)0x0324, (q15_t)0x7FF4, (q15_t)0x0356, + (q15_t)0x7FF3, (q15_t)0x0388, (q15_t)0x7FF2, (q15_t)0x03BA, + (q15_t)0x7FF0, (q15_t)0x03ED, (q15_t)0x7FEE, (q15_t)0x041F, + (q15_t)0x7FED, (q15_t)0x0451, (q15_t)0x7FEB, (q15_t)0x0483, + (q15_t)0x7FE9, (q15_t)0x04B6, (q15_t)0x7FE7, (q15_t)0x04E8, + (q15_t)0x7FE5, (q15_t)0x051A, (q15_t)0x7FE3, (q15_t)0x054C, + (q15_t)0x7FE1, (q15_t)0x057F, (q15_t)0x7FDF, (q15_t)0x05B1, + (q15_t)0x7FDD, (q15_t)0x05E3, (q15_t)0x7FDA, (q15_t)0x0615, + (q15_t)0x7FD8, (q15_t)0x0647, (q15_t)0x7FD6, (q15_t)0x067A, + (q15_t)0x7FD3, (q15_t)0x06AC, (q15_t)0x7FD0, (q15_t)0x06DE, + (q15_t)0x7FCE, (q15_t)0x0710, (q15_t)0x7FCB, (q15_t)0x0742, + (q15_t)0x7FC8, (q15_t)0x0775, (q15_t)0x7FC5, (q15_t)0x07A7, + (q15_t)0x7FC2, (q15_t)0x07D9, (q15_t)0x7FBF, (q15_t)0x080B, + (q15_t)0x7FBC, (q15_t)0x083D, (q15_t)0x7FB8, (q15_t)0x086F, + (q15_t)0x7FB5, (q15_t)0x08A2, (q15_t)0x7FB1, (q15_t)0x08D4, + (q15_t)0x7FAE, (q15_t)0x0906, (q15_t)0x7FAA, (q15_t)0x0938, + (q15_t)0x7FA7, (q15_t)0x096A, (q15_t)0x7FA3, (q15_t)0x099C, + (q15_t)0x7F9F, (q15_t)0x09CE, (q15_t)0x7F9B, (q15_t)0x0A00, + (q15_t)0x7F97, (q15_t)0x0A33, (q15_t)0x7F93, (q15_t)0x0A65, + (q15_t)0x7F8F, (q15_t)0x0A97, (q15_t)0x7F8B, (q15_t)0x0AC9, + (q15_t)0x7F87, (q15_t)0x0AFB, (q15_t)0x7F82, (q15_t)0x0B2D, + (q15_t)0x7F7E, (q15_t)0x0B5F, (q15_t)0x7F79, (q15_t)0x0B91, + (q15_t)0x7F75, (q15_t)0x0BC3, (q15_t)0x7F70, (q15_t)0x0BF5, + (q15_t)0x7F6B, (q15_t)0x0C27, (q15_t)0x7F67, (q15_t)0x0C59, + (q15_t)0x7F62, (q15_t)0x0C8B, (q15_t)0x7F5D, (q15_t)0x0CBD, + (q15_t)0x7F58, (q15_t)0x0CEF, (q15_t)0x7F53, (q15_t)0x0D21, + (q15_t)0x7F4D, (q15_t)0x0D53, (q15_t)0x7F48, (q15_t)0x0D85, + (q15_t)0x7F43, (q15_t)0x0DB7, (q15_t)0x7F3D, (q15_t)0x0DE9, + (q15_t)0x7F38, (q15_t)0x0E1B, (q15_t)0x7F32, (q15_t)0x0E4D, + (q15_t)0x7F2D, (q15_t)0x0E7F, (q15_t)0x7F27, (q15_t)0x0EB1, + (q15_t)0x7F21, (q15_t)0x0EE3, (q15_t)0x7F1B, (q15_t)0x0F15, + (q15_t)0x7F15, (q15_t)0x0F47, (q15_t)0x7F0F, (q15_t)0x0F79, + (q15_t)0x7F09, (q15_t)0x0FAB, (q15_t)0x7F03, (q15_t)0x0FDD, + (q15_t)0x7EFD, (q15_t)0x100E, (q15_t)0x7EF6, (q15_t)0x1040, + (q15_t)0x7EF0, (q15_t)0x1072, (q15_t)0x7EE9, (q15_t)0x10A4, + (q15_t)0x7EE3, (q15_t)0x10D6, (q15_t)0x7EDC, (q15_t)0x1108, + (q15_t)0x7ED5, (q15_t)0x1139, (q15_t)0x7ECF, (q15_t)0x116B, + (q15_t)0x7EC8, (q15_t)0x119D, (q15_t)0x7EC1, (q15_t)0x11CF, + (q15_t)0x7EBA, (q15_t)0x1201, (q15_t)0x7EB3, (q15_t)0x1232, + (q15_t)0x7EAB, (q15_t)0x1264, (q15_t)0x7EA4, (q15_t)0x1296, + (q15_t)0x7E9D, (q15_t)0x12C8, (q15_t)0x7E95, (q15_t)0x12F9, + (q15_t)0x7E8E, (q15_t)0x132B, (q15_t)0x7E86, (q15_t)0x135D, + (q15_t)0x7E7F, (q15_t)0x138E, (q15_t)0x7E77, (q15_t)0x13C0, + (q15_t)0x7E6F, (q15_t)0x13F2, (q15_t)0x7E67, (q15_t)0x1423, + (q15_t)0x7E5F, (q15_t)0x1455, (q15_t)0x7E57, (q15_t)0x1487, + (q15_t)0x7E4F, (q15_t)0x14B8, (q15_t)0x7E47, (q15_t)0x14EA, + (q15_t)0x7E3F, (q15_t)0x151B, (q15_t)0x7E37, (q15_t)0x154D, + (q15_t)0x7E2E, (q15_t)0x157F, (q15_t)0x7E26, (q15_t)0x15B0, + (q15_t)0x7E1D, (q15_t)0x15E2, (q15_t)0x7E14, (q15_t)0x1613, + (q15_t)0x7E0C, (q15_t)0x1645, (q15_t)0x7E03, (q15_t)0x1676, + (q15_t)0x7DFA, (q15_t)0x16A8, (q15_t)0x7DF1, (q15_t)0x16D9, + (q15_t)0x7DE8, (q15_t)0x170A, (q15_t)0x7DDF, (q15_t)0x173C, + (q15_t)0x7DD6, (q15_t)0x176D, (q15_t)0x7DCD, (q15_t)0x179F, + (q15_t)0x7DC3, (q15_t)0x17D0, (q15_t)0x7DBA, (q15_t)0x1802, + (q15_t)0x7DB0, (q15_t)0x1833, (q15_t)0x7DA7, (q15_t)0x1864, + (q15_t)0x7D9D, (q15_t)0x1896, (q15_t)0x7D94, (q15_t)0x18C7, + (q15_t)0x7D8A, (q15_t)0x18F8, (q15_t)0x7D80, (q15_t)0x192A, + (q15_t)0x7D76, (q15_t)0x195B, (q15_t)0x7D6C, (q15_t)0x198C, + (q15_t)0x7D62, (q15_t)0x19BD, (q15_t)0x7D58, (q15_t)0x19EF, + (q15_t)0x7D4E, (q15_t)0x1A20, (q15_t)0x7D43, (q15_t)0x1A51, + (q15_t)0x7D39, (q15_t)0x1A82, (q15_t)0x7D2F, (q15_t)0x1AB3, + (q15_t)0x7D24, (q15_t)0x1AE4, (q15_t)0x7D19, (q15_t)0x1B16, + (q15_t)0x7D0F, (q15_t)0x1B47, (q15_t)0x7D04, (q15_t)0x1B78, + (q15_t)0x7CF9, (q15_t)0x1BA9, (q15_t)0x7CEE, (q15_t)0x1BDA, + (q15_t)0x7CE3, (q15_t)0x1C0B, (q15_t)0x7CD8, (q15_t)0x1C3C, + (q15_t)0x7CCD, (q15_t)0x1C6D, (q15_t)0x7CC2, (q15_t)0x1C9E, + (q15_t)0x7CB7, (q15_t)0x1CCF, (q15_t)0x7CAB, (q15_t)0x1D00, + (q15_t)0x7CA0, (q15_t)0x1D31, (q15_t)0x7C94, (q15_t)0x1D62, + (q15_t)0x7C89, (q15_t)0x1D93, (q15_t)0x7C7D, (q15_t)0x1DC4, + (q15_t)0x7C71, (q15_t)0x1DF5, (q15_t)0x7C66, (q15_t)0x1E25, + (q15_t)0x7C5A, (q15_t)0x1E56, (q15_t)0x7C4E, (q15_t)0x1E87, + (q15_t)0x7C42, (q15_t)0x1EB8, (q15_t)0x7C36, (q15_t)0x1EE9, + (q15_t)0x7C29, (q15_t)0x1F19, (q15_t)0x7C1D, (q15_t)0x1F4A, + (q15_t)0x7C11, (q15_t)0x1F7B, (q15_t)0x7C05, (q15_t)0x1FAC, + (q15_t)0x7BF8, (q15_t)0x1FDC, (q15_t)0x7BEB, (q15_t)0x200D, + (q15_t)0x7BDF, (q15_t)0x203E, (q15_t)0x7BD2, (q15_t)0x206E, + (q15_t)0x7BC5, (q15_t)0x209F, (q15_t)0x7BB9, (q15_t)0x20D0, + (q15_t)0x7BAC, (q15_t)0x2100, (q15_t)0x7B9F, (q15_t)0x2131, + (q15_t)0x7B92, (q15_t)0x2161, (q15_t)0x7B84, (q15_t)0x2192, + (q15_t)0x7B77, (q15_t)0x21C2, (q15_t)0x7B6A, (q15_t)0x21F3, + (q15_t)0x7B5D, (q15_t)0x2223, (q15_t)0x7B4F, (q15_t)0x2254, + (q15_t)0x7B42, (q15_t)0x2284, (q15_t)0x7B34, (q15_t)0x22B4, + (q15_t)0x7B26, (q15_t)0x22E5, (q15_t)0x7B19, (q15_t)0x2315, + (q15_t)0x7B0B, (q15_t)0x2345, (q15_t)0x7AFD, (q15_t)0x2376, + (q15_t)0x7AEF, (q15_t)0x23A6, (q15_t)0x7AE1, (q15_t)0x23D6, + (q15_t)0x7AD3, (q15_t)0x2407, (q15_t)0x7AC5, (q15_t)0x2437, + (q15_t)0x7AB6, (q15_t)0x2467, (q15_t)0x7AA8, (q15_t)0x2497, + (q15_t)0x7A9A, (q15_t)0x24C7, (q15_t)0x7A8B, (q15_t)0x24F7, + (q15_t)0x7A7D, (q15_t)0x2528, (q15_t)0x7A6E, (q15_t)0x2558, + (q15_t)0x7A5F, (q15_t)0x2588, (q15_t)0x7A50, (q15_t)0x25B8, + (q15_t)0x7A42, (q15_t)0x25E8, (q15_t)0x7A33, (q15_t)0x2618, + (q15_t)0x7A24, (q15_t)0x2648, (q15_t)0x7A15, (q15_t)0x2678, + (q15_t)0x7A05, (q15_t)0x26A8, (q15_t)0x79F6, (q15_t)0x26D8, + (q15_t)0x79E7, (q15_t)0x2707, (q15_t)0x79D8, (q15_t)0x2737, + (q15_t)0x79C8, (q15_t)0x2767, (q15_t)0x79B9, (q15_t)0x2797, + (q15_t)0x79A9, (q15_t)0x27C7, (q15_t)0x7999, (q15_t)0x27F6, + (q15_t)0x798A, (q15_t)0x2826, (q15_t)0x797A, (q15_t)0x2856, + (q15_t)0x796A, (q15_t)0x2886, (q15_t)0x795A, (q15_t)0x28B5, + (q15_t)0x794A, (q15_t)0x28E5, (q15_t)0x793A, (q15_t)0x2915, + (q15_t)0x792A, (q15_t)0x2944, (q15_t)0x7919, (q15_t)0x2974, + (q15_t)0x7909, (q15_t)0x29A3, (q15_t)0x78F9, (q15_t)0x29D3, + (q15_t)0x78E8, (q15_t)0x2A02, (q15_t)0x78D8, (q15_t)0x2A32, + (q15_t)0x78C7, (q15_t)0x2A61, (q15_t)0x78B6, (q15_t)0x2A91, + (q15_t)0x78A6, (q15_t)0x2AC0, (q15_t)0x7895, (q15_t)0x2AEF, + (q15_t)0x7884, (q15_t)0x2B1F, (q15_t)0x7873, (q15_t)0x2B4E, + (q15_t)0x7862, (q15_t)0x2B7D, (q15_t)0x7851, (q15_t)0x2BAD, + (q15_t)0x7840, (q15_t)0x2BDC, (q15_t)0x782E, (q15_t)0x2C0B, + (q15_t)0x781D, (q15_t)0x2C3A, (q15_t)0x780C, (q15_t)0x2C69, + (q15_t)0x77FA, (q15_t)0x2C98, (q15_t)0x77E9, (q15_t)0x2CC8, + (q15_t)0x77D7, (q15_t)0x2CF7, (q15_t)0x77C5, (q15_t)0x2D26, + (q15_t)0x77B4, (q15_t)0x2D55, (q15_t)0x77A2, (q15_t)0x2D84, + (q15_t)0x7790, (q15_t)0x2DB3, (q15_t)0x777E, (q15_t)0x2DE2, + (q15_t)0x776C, (q15_t)0x2E11, (q15_t)0x775A, (q15_t)0x2E3F, + (q15_t)0x7747, (q15_t)0x2E6E, (q15_t)0x7735, (q15_t)0x2E9D, + (q15_t)0x7723, (q15_t)0x2ECC, (q15_t)0x7710, (q15_t)0x2EFB, + (q15_t)0x76FE, (q15_t)0x2F29, (q15_t)0x76EB, (q15_t)0x2F58, + (q15_t)0x76D9, (q15_t)0x2F87, (q15_t)0x76C6, (q15_t)0x2FB5, + (q15_t)0x76B3, (q15_t)0x2FE4, (q15_t)0x76A0, (q15_t)0x3013, + (q15_t)0x768E, (q15_t)0x3041, (q15_t)0x767B, (q15_t)0x3070, + (q15_t)0x7668, (q15_t)0x309E, (q15_t)0x7654, (q15_t)0x30CD, + (q15_t)0x7641, (q15_t)0x30FB, (q15_t)0x762E, (q15_t)0x312A, + (q15_t)0x761B, (q15_t)0x3158, (q15_t)0x7607, (q15_t)0x3186, + (q15_t)0x75F4, (q15_t)0x31B5, (q15_t)0x75E0, (q15_t)0x31E3, + (q15_t)0x75CC, (q15_t)0x3211, (q15_t)0x75B9, (q15_t)0x3240, + (q15_t)0x75A5, (q15_t)0x326E, (q15_t)0x7591, (q15_t)0x329C, + (q15_t)0x757D, (q15_t)0x32CA, (q15_t)0x7569, (q15_t)0x32F8, + (q15_t)0x7555, (q15_t)0x3326, (q15_t)0x7541, (q15_t)0x3354, + (q15_t)0x752D, (q15_t)0x3382, (q15_t)0x7519, (q15_t)0x33B0, + (q15_t)0x7504, (q15_t)0x33DE, (q15_t)0x74F0, (q15_t)0x340C, + (q15_t)0x74DB, (q15_t)0x343A, (q15_t)0x74C7, (q15_t)0x3468, + (q15_t)0x74B2, (q15_t)0x3496, (q15_t)0x749E, (q15_t)0x34C4, + (q15_t)0x7489, (q15_t)0x34F2, (q15_t)0x7474, (q15_t)0x351F, + (q15_t)0x745F, (q15_t)0x354D, (q15_t)0x744A, (q15_t)0x357B, + (q15_t)0x7435, (q15_t)0x35A8, (q15_t)0x7420, (q15_t)0x35D6, + (q15_t)0x740B, (q15_t)0x3604, (q15_t)0x73F6, (q15_t)0x3631, + (q15_t)0x73E0, (q15_t)0x365F, (q15_t)0x73CB, (q15_t)0x368C, + (q15_t)0x73B5, (q15_t)0x36BA, (q15_t)0x73A0, (q15_t)0x36E7, + (q15_t)0x738A, (q15_t)0x3714, (q15_t)0x7375, (q15_t)0x3742, + (q15_t)0x735F, (q15_t)0x376F, (q15_t)0x7349, (q15_t)0x379C, + (q15_t)0x7333, (q15_t)0x37CA, (q15_t)0x731D, (q15_t)0x37F7, + (q15_t)0x7307, (q15_t)0x3824, (q15_t)0x72F1, (q15_t)0x3851, + (q15_t)0x72DB, (q15_t)0x387E, (q15_t)0x72C5, (q15_t)0x38AB, + (q15_t)0x72AF, (q15_t)0x38D8, (q15_t)0x7298, (q15_t)0x3906, + (q15_t)0x7282, (q15_t)0x3932, (q15_t)0x726B, (q15_t)0x395F, + (q15_t)0x7255, (q15_t)0x398C, (q15_t)0x723E, (q15_t)0x39B9, + (q15_t)0x7227, (q15_t)0x39E6, (q15_t)0x7211, (q15_t)0x3A13, + (q15_t)0x71FA, (q15_t)0x3A40, (q15_t)0x71E3, (q15_t)0x3A6C, + (q15_t)0x71CC, (q15_t)0x3A99, (q15_t)0x71B5, (q15_t)0x3AC6, + (q15_t)0x719E, (q15_t)0x3AF2, (q15_t)0x7186, (q15_t)0x3B1F, + (q15_t)0x716F, (q15_t)0x3B4C, (q15_t)0x7158, (q15_t)0x3B78, + (q15_t)0x7141, (q15_t)0x3BA5, (q15_t)0x7129, (q15_t)0x3BD1, + (q15_t)0x7112, (q15_t)0x3BFD, (q15_t)0x70FA, (q15_t)0x3C2A, + (q15_t)0x70E2, (q15_t)0x3C56, (q15_t)0x70CB, (q15_t)0x3C83, + (q15_t)0x70B3, (q15_t)0x3CAF, (q15_t)0x709B, (q15_t)0x3CDB, + (q15_t)0x7083, (q15_t)0x3D07, (q15_t)0x706B, (q15_t)0x3D33, + (q15_t)0x7053, (q15_t)0x3D60, (q15_t)0x703B, (q15_t)0x3D8C, + (q15_t)0x7023, (q15_t)0x3DB8, (q15_t)0x700A, (q15_t)0x3DE4, + (q15_t)0x6FF2, (q15_t)0x3E10, (q15_t)0x6FDA, (q15_t)0x3E3C, + (q15_t)0x6FC1, (q15_t)0x3E68, (q15_t)0x6FA9, (q15_t)0x3E93, + (q15_t)0x6F90, (q15_t)0x3EBF, (q15_t)0x6F77, (q15_t)0x3EEB, + (q15_t)0x6F5F, (q15_t)0x3F17, (q15_t)0x6F46, (q15_t)0x3F43, + (q15_t)0x6F2D, (q15_t)0x3F6E, (q15_t)0x6F14, (q15_t)0x3F9A, + (q15_t)0x6EFB, (q15_t)0x3FC5, (q15_t)0x6EE2, (q15_t)0x3FF1, + (q15_t)0x6EC9, (q15_t)0x401D, (q15_t)0x6EAF, (q15_t)0x4048, + (q15_t)0x6E96, (q15_t)0x4073, (q15_t)0x6E7D, (q15_t)0x409F, + (q15_t)0x6E63, (q15_t)0x40CA, (q15_t)0x6E4A, (q15_t)0x40F6, + (q15_t)0x6E30, (q15_t)0x4121, (q15_t)0x6E17, (q15_t)0x414C, + (q15_t)0x6DFD, (q15_t)0x4177, (q15_t)0x6DE3, (q15_t)0x41A2, + (q15_t)0x6DCA, (q15_t)0x41CE, (q15_t)0x6DB0, (q15_t)0x41F9, + (q15_t)0x6D96, (q15_t)0x4224, (q15_t)0x6D7C, (q15_t)0x424F, + (q15_t)0x6D62, (q15_t)0x427A, (q15_t)0x6D48, (q15_t)0x42A5, + (q15_t)0x6D2D, (q15_t)0x42D0, (q15_t)0x6D13, (q15_t)0x42FA, + (q15_t)0x6CF9, (q15_t)0x4325, (q15_t)0x6CDE, (q15_t)0x4350, + (q15_t)0x6CC4, (q15_t)0x437B, (q15_t)0x6CA9, (q15_t)0x43A5, + (q15_t)0x6C8F, (q15_t)0x43D0, (q15_t)0x6C74, (q15_t)0x43FB, + (q15_t)0x6C59, (q15_t)0x4425, (q15_t)0x6C3F, (q15_t)0x4450, + (q15_t)0x6C24, (q15_t)0x447A, (q15_t)0x6C09, (q15_t)0x44A5, + (q15_t)0x6BEE, (q15_t)0x44CF, (q15_t)0x6BD3, (q15_t)0x44FA, + (q15_t)0x6BB8, (q15_t)0x4524, (q15_t)0x6B9C, (q15_t)0x454E, + (q15_t)0x6B81, (q15_t)0x4578, (q15_t)0x6B66, (q15_t)0x45A3, + (q15_t)0x6B4A, (q15_t)0x45CD, (q15_t)0x6B2F, (q15_t)0x45F7, + (q15_t)0x6B13, (q15_t)0x4621, (q15_t)0x6AF8, (q15_t)0x464B, + (q15_t)0x6ADC, (q15_t)0x4675, (q15_t)0x6AC1, (q15_t)0x469F, + (q15_t)0x6AA5, (q15_t)0x46C9, (q15_t)0x6A89, (q15_t)0x46F3, + (q15_t)0x6A6D, (q15_t)0x471C, (q15_t)0x6A51, (q15_t)0x4746, + (q15_t)0x6A35, (q15_t)0x4770, (q15_t)0x6A19, (q15_t)0x479A, + (q15_t)0x69FD, (q15_t)0x47C3, (q15_t)0x69E1, (q15_t)0x47ED, + (q15_t)0x69C4, (q15_t)0x4816, (q15_t)0x69A8, (q15_t)0x4840, + (q15_t)0x698C, (q15_t)0x4869, (q15_t)0x696F, (q15_t)0x4893, + (q15_t)0x6953, (q15_t)0x48BC, (q15_t)0x6936, (q15_t)0x48E6, + (q15_t)0x6919, (q15_t)0x490F, (q15_t)0x68FD, (q15_t)0x4938, + (q15_t)0x68E0, (q15_t)0x4961, (q15_t)0x68C3, (q15_t)0x498A, + (q15_t)0x68A6, (q15_t)0x49B4, (q15_t)0x6889, (q15_t)0x49DD, + (q15_t)0x686C, (q15_t)0x4A06, (q15_t)0x684F, (q15_t)0x4A2F, + (q15_t)0x6832, (q15_t)0x4A58, (q15_t)0x6815, (q15_t)0x4A81, + (q15_t)0x67F7, (q15_t)0x4AA9, (q15_t)0x67DA, (q15_t)0x4AD2, + (q15_t)0x67BD, (q15_t)0x4AFB, (q15_t)0x679F, (q15_t)0x4B24, + (q15_t)0x6782, (q15_t)0x4B4C, (q15_t)0x6764, (q15_t)0x4B75, + (q15_t)0x6746, (q15_t)0x4B9E, (q15_t)0x6729, (q15_t)0x4BC6, + (q15_t)0x670B, (q15_t)0x4BEF, (q15_t)0x66ED, (q15_t)0x4C17, + (q15_t)0x66CF, (q15_t)0x4C3F, (q15_t)0x66B1, (q15_t)0x4C68, + (q15_t)0x6693, (q15_t)0x4C90, (q15_t)0x6675, (q15_t)0x4CB8, + (q15_t)0x6657, (q15_t)0x4CE1, (q15_t)0x6639, (q15_t)0x4D09, + (q15_t)0x661A, (q15_t)0x4D31, (q15_t)0x65FC, (q15_t)0x4D59, + (q15_t)0x65DD, (q15_t)0x4D81, (q15_t)0x65BF, (q15_t)0x4DA9, + (q15_t)0x65A0, (q15_t)0x4DD1, (q15_t)0x6582, (q15_t)0x4DF9, + (q15_t)0x6563, (q15_t)0x4E21, (q15_t)0x6545, (q15_t)0x4E48, + (q15_t)0x6526, (q15_t)0x4E70, (q15_t)0x6507, (q15_t)0x4E98, + (q15_t)0x64E8, (q15_t)0x4EBF, (q15_t)0x64C9, (q15_t)0x4EE7, + (q15_t)0x64AA, (q15_t)0x4F0F, (q15_t)0x648B, (q15_t)0x4F36, + (q15_t)0x646C, (q15_t)0x4F5E, (q15_t)0x644D, (q15_t)0x4F85, + (q15_t)0x642D, (q15_t)0x4FAC, (q15_t)0x640E, (q15_t)0x4FD4, + (q15_t)0x63EF, (q15_t)0x4FFB, (q15_t)0x63CF, (q15_t)0x5022, + (q15_t)0x63B0, (q15_t)0x5049, (q15_t)0x6390, (q15_t)0x5070, + (q15_t)0x6371, (q15_t)0x5097, (q15_t)0x6351, (q15_t)0x50BF, + (q15_t)0x6331, (q15_t)0x50E5, (q15_t)0x6311, (q15_t)0x510C, + (q15_t)0x62F2, (q15_t)0x5133, (q15_t)0x62D2, (q15_t)0x515A, + (q15_t)0x62B2, (q15_t)0x5181, (q15_t)0x6292, (q15_t)0x51A8, + (q15_t)0x6271, (q15_t)0x51CE, (q15_t)0x6251, (q15_t)0x51F5, + (q15_t)0x6231, (q15_t)0x521C, (q15_t)0x6211, (q15_t)0x5242, + (q15_t)0x61F1, (q15_t)0x5269, (q15_t)0x61D0, (q15_t)0x528F, + (q15_t)0x61B0, (q15_t)0x52B5, (q15_t)0x618F, (q15_t)0x52DC, + (q15_t)0x616F, (q15_t)0x5302, (q15_t)0x614E, (q15_t)0x5328, + (q15_t)0x612D, (q15_t)0x534E, (q15_t)0x610D, (q15_t)0x5375, + (q15_t)0x60EC, (q15_t)0x539B, (q15_t)0x60CB, (q15_t)0x53C1, + (q15_t)0x60AA, (q15_t)0x53E7, (q15_t)0x6089, (q15_t)0x540D, + (q15_t)0x6068, (q15_t)0x5433, (q15_t)0x6047, (q15_t)0x5458, + (q15_t)0x6026, (q15_t)0x547E, (q15_t)0x6004, (q15_t)0x54A4, + (q15_t)0x5FE3, (q15_t)0x54CA, (q15_t)0x5FC2, (q15_t)0x54EF, + (q15_t)0x5FA0, (q15_t)0x5515, (q15_t)0x5F7F, (q15_t)0x553A, + (q15_t)0x5F5E, (q15_t)0x5560, (q15_t)0x5F3C, (q15_t)0x5585, + (q15_t)0x5F1A, (q15_t)0x55AB, (q15_t)0x5EF9, (q15_t)0x55D0, + (q15_t)0x5ED7, (q15_t)0x55F5, (q15_t)0x5EB5, (q15_t)0x561A, + (q15_t)0x5E93, (q15_t)0x5640, (q15_t)0x5E71, (q15_t)0x5665, + (q15_t)0x5E50, (q15_t)0x568A, (q15_t)0x5E2D, (q15_t)0x56AF, + (q15_t)0x5E0B, (q15_t)0x56D4, (q15_t)0x5DE9, (q15_t)0x56F9, + (q15_t)0x5DC7, (q15_t)0x571D, (q15_t)0x5DA5, (q15_t)0x5742, + (q15_t)0x5D83, (q15_t)0x5767, (q15_t)0x5D60, (q15_t)0x578C, + (q15_t)0x5D3E, (q15_t)0x57B0, (q15_t)0x5D1B, (q15_t)0x57D5, + (q15_t)0x5CF9, (q15_t)0x57F9, (q15_t)0x5CD6, (q15_t)0x581E, + (q15_t)0x5CB4, (q15_t)0x5842, (q15_t)0x5C91, (q15_t)0x5867, + (q15_t)0x5C6E, (q15_t)0x588B, (q15_t)0x5C4B, (q15_t)0x58AF, + (q15_t)0x5C29, (q15_t)0x58D4, (q15_t)0x5C06, (q15_t)0x58F8, + (q15_t)0x5BE3, (q15_t)0x591C, (q15_t)0x5BC0, (q15_t)0x5940, + (q15_t)0x5B9D, (q15_t)0x5964, (q15_t)0x5B79, (q15_t)0x5988, + (q15_t)0x5B56, (q15_t)0x59AC, (q15_t)0x5B33, (q15_t)0x59D0, + (q15_t)0x5B10, (q15_t)0x59F3, (q15_t)0x5AEC, (q15_t)0x5A17, + (q15_t)0x5AC9, (q15_t)0x5A3B, (q15_t)0x5AA5, (q15_t)0x5A5E, + (q15_t)0x5A82, (q15_t)0x5A82, (q15_t)0x5A5E, (q15_t)0x5AA5, + (q15_t)0x5A3B, (q15_t)0x5AC9, (q15_t)0x5A17, (q15_t)0x5AEC, + (q15_t)0x59F3, (q15_t)0x5B10, (q15_t)0x59D0, (q15_t)0x5B33, + (q15_t)0x59AC, (q15_t)0x5B56, (q15_t)0x5988, (q15_t)0x5B79, + (q15_t)0x5964, (q15_t)0x5B9D, (q15_t)0x5940, (q15_t)0x5BC0, + (q15_t)0x591C, (q15_t)0x5BE3, (q15_t)0x58F8, (q15_t)0x5C06, + (q15_t)0x58D4, (q15_t)0x5C29, (q15_t)0x58AF, (q15_t)0x5C4B, + (q15_t)0x588B, (q15_t)0x5C6E, (q15_t)0x5867, (q15_t)0x5C91, + (q15_t)0x5842, (q15_t)0x5CB4, (q15_t)0x581E, (q15_t)0x5CD6, + (q15_t)0x57F9, (q15_t)0x5CF9, (q15_t)0x57D5, (q15_t)0x5D1B, + (q15_t)0x57B0, (q15_t)0x5D3E, (q15_t)0x578C, (q15_t)0x5D60, + (q15_t)0x5767, (q15_t)0x5D83, (q15_t)0x5742, (q15_t)0x5DA5, + (q15_t)0x571D, (q15_t)0x5DC7, (q15_t)0x56F9, (q15_t)0x5DE9, + (q15_t)0x56D4, (q15_t)0x5E0B, (q15_t)0x56AF, (q15_t)0x5E2D, + (q15_t)0x568A, (q15_t)0x5E50, (q15_t)0x5665, (q15_t)0x5E71, + (q15_t)0x5640, (q15_t)0x5E93, (q15_t)0x561A, (q15_t)0x5EB5, + (q15_t)0x55F5, (q15_t)0x5ED7, (q15_t)0x55D0, (q15_t)0x5EF9, + (q15_t)0x55AB, (q15_t)0x5F1A, (q15_t)0x5585, (q15_t)0x5F3C, + (q15_t)0x5560, (q15_t)0x5F5E, (q15_t)0x553A, (q15_t)0x5F7F, + (q15_t)0x5515, (q15_t)0x5FA0, (q15_t)0x54EF, (q15_t)0x5FC2, + (q15_t)0x54CA, (q15_t)0x5FE3, (q15_t)0x54A4, (q15_t)0x6004, + (q15_t)0x547E, (q15_t)0x6026, (q15_t)0x5458, (q15_t)0x6047, + (q15_t)0x5433, (q15_t)0x6068, (q15_t)0x540D, (q15_t)0x6089, + (q15_t)0x53E7, (q15_t)0x60AA, (q15_t)0x53C1, (q15_t)0x60CB, + (q15_t)0x539B, (q15_t)0x60EC, (q15_t)0x5375, (q15_t)0x610D, + (q15_t)0x534E, (q15_t)0x612D, (q15_t)0x5328, (q15_t)0x614E, + (q15_t)0x5302, (q15_t)0x616F, (q15_t)0x52DC, (q15_t)0x618F, + (q15_t)0x52B5, (q15_t)0x61B0, (q15_t)0x528F, (q15_t)0x61D0, + (q15_t)0x5269, (q15_t)0x61F1, (q15_t)0x5242, (q15_t)0x6211, + (q15_t)0x521C, (q15_t)0x6231, (q15_t)0x51F5, (q15_t)0x6251, + (q15_t)0x51CE, (q15_t)0x6271, (q15_t)0x51A8, (q15_t)0x6292, + (q15_t)0x5181, (q15_t)0x62B2, (q15_t)0x515A, (q15_t)0x62D2, + (q15_t)0x5133, (q15_t)0x62F2, (q15_t)0x510C, (q15_t)0x6311, + (q15_t)0x50E5, (q15_t)0x6331, (q15_t)0x50BF, (q15_t)0x6351, + (q15_t)0x5097, (q15_t)0x6371, (q15_t)0x5070, (q15_t)0x6390, + (q15_t)0x5049, (q15_t)0x63B0, (q15_t)0x5022, (q15_t)0x63CF, + (q15_t)0x4FFB, (q15_t)0x63EF, (q15_t)0x4FD4, (q15_t)0x640E, + (q15_t)0x4FAC, (q15_t)0x642D, (q15_t)0x4F85, (q15_t)0x644D, + (q15_t)0x4F5E, (q15_t)0x646C, (q15_t)0x4F36, (q15_t)0x648B, + (q15_t)0x4F0F, (q15_t)0x64AA, (q15_t)0x4EE7, (q15_t)0x64C9, + (q15_t)0x4EBF, (q15_t)0x64E8, (q15_t)0x4E98, (q15_t)0x6507, + (q15_t)0x4E70, (q15_t)0x6526, (q15_t)0x4E48, (q15_t)0x6545, + (q15_t)0x4E21, (q15_t)0x6563, (q15_t)0x4DF9, (q15_t)0x6582, + (q15_t)0x4DD1, (q15_t)0x65A0, (q15_t)0x4DA9, (q15_t)0x65BF, + (q15_t)0x4D81, (q15_t)0x65DD, (q15_t)0x4D59, (q15_t)0x65FC, + (q15_t)0x4D31, (q15_t)0x661A, (q15_t)0x4D09, (q15_t)0x6639, + (q15_t)0x4CE1, (q15_t)0x6657, (q15_t)0x4CB8, (q15_t)0x6675, + (q15_t)0x4C90, (q15_t)0x6693, (q15_t)0x4C68, (q15_t)0x66B1, + (q15_t)0x4C3F, (q15_t)0x66CF, (q15_t)0x4C17, (q15_t)0x66ED, + (q15_t)0x4BEF, (q15_t)0x670B, (q15_t)0x4BC6, (q15_t)0x6729, + (q15_t)0x4B9E, (q15_t)0x6746, (q15_t)0x4B75, (q15_t)0x6764, + (q15_t)0x4B4C, (q15_t)0x6782, (q15_t)0x4B24, (q15_t)0x679F, + (q15_t)0x4AFB, (q15_t)0x67BD, (q15_t)0x4AD2, (q15_t)0x67DA, + (q15_t)0x4AA9, (q15_t)0x67F7, (q15_t)0x4A81, (q15_t)0x6815, + (q15_t)0x4A58, (q15_t)0x6832, (q15_t)0x4A2F, (q15_t)0x684F, + (q15_t)0x4A06, (q15_t)0x686C, (q15_t)0x49DD, (q15_t)0x6889, + (q15_t)0x49B4, (q15_t)0x68A6, (q15_t)0x498A, (q15_t)0x68C3, + (q15_t)0x4961, (q15_t)0x68E0, (q15_t)0x4938, (q15_t)0x68FD, + (q15_t)0x490F, (q15_t)0x6919, (q15_t)0x48E6, (q15_t)0x6936, + (q15_t)0x48BC, (q15_t)0x6953, (q15_t)0x4893, (q15_t)0x696F, + (q15_t)0x4869, (q15_t)0x698C, (q15_t)0x4840, (q15_t)0x69A8, + (q15_t)0x4816, (q15_t)0x69C4, (q15_t)0x47ED, (q15_t)0x69E1, + (q15_t)0x47C3, (q15_t)0x69FD, (q15_t)0x479A, (q15_t)0x6A19, + (q15_t)0x4770, (q15_t)0x6A35, (q15_t)0x4746, (q15_t)0x6A51, + (q15_t)0x471C, (q15_t)0x6A6D, (q15_t)0x46F3, (q15_t)0x6A89, + (q15_t)0x46C9, (q15_t)0x6AA5, (q15_t)0x469F, (q15_t)0x6AC1, + (q15_t)0x4675, (q15_t)0x6ADC, (q15_t)0x464B, (q15_t)0x6AF8, + (q15_t)0x4621, (q15_t)0x6B13, (q15_t)0x45F7, (q15_t)0x6B2F, + (q15_t)0x45CD, (q15_t)0x6B4A, (q15_t)0x45A3, (q15_t)0x6B66, + (q15_t)0x4578, (q15_t)0x6B81, (q15_t)0x454E, (q15_t)0x6B9C, + (q15_t)0x4524, (q15_t)0x6BB8, (q15_t)0x44FA, (q15_t)0x6BD3, + (q15_t)0x44CF, (q15_t)0x6BEE, (q15_t)0x44A5, (q15_t)0x6C09, + (q15_t)0x447A, (q15_t)0x6C24, (q15_t)0x4450, (q15_t)0x6C3F, + (q15_t)0x4425, (q15_t)0x6C59, (q15_t)0x43FB, (q15_t)0x6C74, + (q15_t)0x43D0, (q15_t)0x6C8F, (q15_t)0x43A5, (q15_t)0x6CA9, + (q15_t)0x437B, (q15_t)0x6CC4, (q15_t)0x4350, (q15_t)0x6CDE, + (q15_t)0x4325, (q15_t)0x6CF9, (q15_t)0x42FA, (q15_t)0x6D13, + (q15_t)0x42D0, (q15_t)0x6D2D, (q15_t)0x42A5, (q15_t)0x6D48, + (q15_t)0x427A, (q15_t)0x6D62, (q15_t)0x424F, (q15_t)0x6D7C, + (q15_t)0x4224, (q15_t)0x6D96, (q15_t)0x41F9, (q15_t)0x6DB0, + (q15_t)0x41CE, (q15_t)0x6DCA, (q15_t)0x41A2, (q15_t)0x6DE3, + (q15_t)0x4177, (q15_t)0x6DFD, (q15_t)0x414C, (q15_t)0x6E17, + (q15_t)0x4121, (q15_t)0x6E30, (q15_t)0x40F6, (q15_t)0x6E4A, + (q15_t)0x40CA, (q15_t)0x6E63, (q15_t)0x409F, (q15_t)0x6E7D, + (q15_t)0x4073, (q15_t)0x6E96, (q15_t)0x4048, (q15_t)0x6EAF, + (q15_t)0x401D, (q15_t)0x6EC9, (q15_t)0x3FF1, (q15_t)0x6EE2, + (q15_t)0x3FC5, (q15_t)0x6EFB, (q15_t)0x3F9A, (q15_t)0x6F14, + (q15_t)0x3F6E, (q15_t)0x6F2D, (q15_t)0x3F43, (q15_t)0x6F46, + (q15_t)0x3F17, (q15_t)0x6F5F, (q15_t)0x3EEB, (q15_t)0x6F77, + (q15_t)0x3EBF, (q15_t)0x6F90, (q15_t)0x3E93, (q15_t)0x6FA9, + (q15_t)0x3E68, (q15_t)0x6FC1, (q15_t)0x3E3C, (q15_t)0x6FDA, + (q15_t)0x3E10, (q15_t)0x6FF2, (q15_t)0x3DE4, (q15_t)0x700A, + (q15_t)0x3DB8, (q15_t)0x7023, (q15_t)0x3D8C, (q15_t)0x703B, + (q15_t)0x3D60, (q15_t)0x7053, (q15_t)0x3D33, (q15_t)0x706B, + (q15_t)0x3D07, (q15_t)0x7083, (q15_t)0x3CDB, (q15_t)0x709B, + (q15_t)0x3CAF, (q15_t)0x70B3, (q15_t)0x3C83, (q15_t)0x70CB, + (q15_t)0x3C56, (q15_t)0x70E2, (q15_t)0x3C2A, (q15_t)0x70FA, + (q15_t)0x3BFD, (q15_t)0x7112, (q15_t)0x3BD1, (q15_t)0x7129, + (q15_t)0x3BA5, (q15_t)0x7141, (q15_t)0x3B78, (q15_t)0x7158, + (q15_t)0x3B4C, (q15_t)0x716F, (q15_t)0x3B1F, (q15_t)0x7186, + (q15_t)0x3AF2, (q15_t)0x719E, (q15_t)0x3AC6, (q15_t)0x71B5, + (q15_t)0x3A99, (q15_t)0x71CC, (q15_t)0x3A6C, (q15_t)0x71E3, + (q15_t)0x3A40, (q15_t)0x71FA, (q15_t)0x3A13, (q15_t)0x7211, + (q15_t)0x39E6, (q15_t)0x7227, (q15_t)0x39B9, (q15_t)0x723E, + (q15_t)0x398C, (q15_t)0x7255, (q15_t)0x395F, (q15_t)0x726B, + (q15_t)0x3932, (q15_t)0x7282, (q15_t)0x3906, (q15_t)0x7298, + (q15_t)0x38D8, (q15_t)0x72AF, (q15_t)0x38AB, (q15_t)0x72C5, + (q15_t)0x387E, (q15_t)0x72DB, (q15_t)0x3851, (q15_t)0x72F1, + (q15_t)0x3824, (q15_t)0x7307, (q15_t)0x37F7, (q15_t)0x731D, + (q15_t)0x37CA, (q15_t)0x7333, (q15_t)0x379C, (q15_t)0x7349, + (q15_t)0x376F, (q15_t)0x735F, (q15_t)0x3742, (q15_t)0x7375, + (q15_t)0x3714, (q15_t)0x738A, (q15_t)0x36E7, (q15_t)0x73A0, + (q15_t)0x36BA, (q15_t)0x73B5, (q15_t)0x368C, (q15_t)0x73CB, + (q15_t)0x365F, (q15_t)0x73E0, (q15_t)0x3631, (q15_t)0x73F6, + (q15_t)0x3604, (q15_t)0x740B, (q15_t)0x35D6, (q15_t)0x7420, + (q15_t)0x35A8, (q15_t)0x7435, (q15_t)0x357B, (q15_t)0x744A, + (q15_t)0x354D, (q15_t)0x745F, (q15_t)0x351F, (q15_t)0x7474, + (q15_t)0x34F2, (q15_t)0x7489, (q15_t)0x34C4, (q15_t)0x749E, + (q15_t)0x3496, (q15_t)0x74B2, (q15_t)0x3468, (q15_t)0x74C7, + (q15_t)0x343A, (q15_t)0x74DB, (q15_t)0x340C, (q15_t)0x74F0, + (q15_t)0x33DE, (q15_t)0x7504, (q15_t)0x33B0, (q15_t)0x7519, + (q15_t)0x3382, (q15_t)0x752D, (q15_t)0x3354, (q15_t)0x7541, + (q15_t)0x3326, (q15_t)0x7555, (q15_t)0x32F8, (q15_t)0x7569, + (q15_t)0x32CA, (q15_t)0x757D, (q15_t)0x329C, (q15_t)0x7591, + (q15_t)0x326E, (q15_t)0x75A5, (q15_t)0x3240, (q15_t)0x75B9, + (q15_t)0x3211, (q15_t)0x75CC, (q15_t)0x31E3, (q15_t)0x75E0, + (q15_t)0x31B5, (q15_t)0x75F4, (q15_t)0x3186, (q15_t)0x7607, + (q15_t)0x3158, (q15_t)0x761B, (q15_t)0x312A, (q15_t)0x762E, + (q15_t)0x30FB, (q15_t)0x7641, (q15_t)0x30CD, (q15_t)0x7654, + (q15_t)0x309E, (q15_t)0x7668, (q15_t)0x3070, (q15_t)0x767B, + (q15_t)0x3041, (q15_t)0x768E, (q15_t)0x3013, (q15_t)0x76A0, + (q15_t)0x2FE4, (q15_t)0x76B3, (q15_t)0x2FB5, (q15_t)0x76C6, + (q15_t)0x2F87, (q15_t)0x76D9, (q15_t)0x2F58, (q15_t)0x76EB, + (q15_t)0x2F29, (q15_t)0x76FE, (q15_t)0x2EFB, (q15_t)0x7710, + (q15_t)0x2ECC, (q15_t)0x7723, (q15_t)0x2E9D, (q15_t)0x7735, + (q15_t)0x2E6E, (q15_t)0x7747, (q15_t)0x2E3F, (q15_t)0x775A, + (q15_t)0x2E11, (q15_t)0x776C, (q15_t)0x2DE2, (q15_t)0x777E, + (q15_t)0x2DB3, (q15_t)0x7790, (q15_t)0x2D84, (q15_t)0x77A2, + (q15_t)0x2D55, (q15_t)0x77B4, (q15_t)0x2D26, (q15_t)0x77C5, + (q15_t)0x2CF7, (q15_t)0x77D7, (q15_t)0x2CC8, (q15_t)0x77E9, + (q15_t)0x2C98, (q15_t)0x77FA, (q15_t)0x2C69, (q15_t)0x780C, + (q15_t)0x2C3A, (q15_t)0x781D, (q15_t)0x2C0B, (q15_t)0x782E, + (q15_t)0x2BDC, (q15_t)0x7840, (q15_t)0x2BAD, (q15_t)0x7851, + (q15_t)0x2B7D, (q15_t)0x7862, (q15_t)0x2B4E, (q15_t)0x7873, + (q15_t)0x2B1F, (q15_t)0x7884, (q15_t)0x2AEF, (q15_t)0x7895, + (q15_t)0x2AC0, (q15_t)0x78A6, (q15_t)0x2A91, (q15_t)0x78B6, + (q15_t)0x2A61, (q15_t)0x78C7, (q15_t)0x2A32, (q15_t)0x78D8, + (q15_t)0x2A02, (q15_t)0x78E8, (q15_t)0x29D3, (q15_t)0x78F9, + (q15_t)0x29A3, (q15_t)0x7909, (q15_t)0x2974, (q15_t)0x7919, + (q15_t)0x2944, (q15_t)0x792A, (q15_t)0x2915, (q15_t)0x793A, + (q15_t)0x28E5, (q15_t)0x794A, (q15_t)0x28B5, (q15_t)0x795A, + (q15_t)0x2886, (q15_t)0x796A, (q15_t)0x2856, (q15_t)0x797A, + (q15_t)0x2826, (q15_t)0x798A, (q15_t)0x27F6, (q15_t)0x7999, + (q15_t)0x27C7, (q15_t)0x79A9, (q15_t)0x2797, (q15_t)0x79B9, + (q15_t)0x2767, (q15_t)0x79C8, (q15_t)0x2737, (q15_t)0x79D8, + (q15_t)0x2707, (q15_t)0x79E7, (q15_t)0x26D8, (q15_t)0x79F6, + (q15_t)0x26A8, (q15_t)0x7A05, (q15_t)0x2678, (q15_t)0x7A15, + (q15_t)0x2648, (q15_t)0x7A24, (q15_t)0x2618, (q15_t)0x7A33, + (q15_t)0x25E8, (q15_t)0x7A42, (q15_t)0x25B8, (q15_t)0x7A50, + (q15_t)0x2588, (q15_t)0x7A5F, (q15_t)0x2558, (q15_t)0x7A6E, + (q15_t)0x2528, (q15_t)0x7A7D, (q15_t)0x24F7, (q15_t)0x7A8B, + (q15_t)0x24C7, (q15_t)0x7A9A, (q15_t)0x2497, (q15_t)0x7AA8, + (q15_t)0x2467, (q15_t)0x7AB6, (q15_t)0x2437, (q15_t)0x7AC5, + (q15_t)0x2407, (q15_t)0x7AD3, (q15_t)0x23D6, (q15_t)0x7AE1, + (q15_t)0x23A6, (q15_t)0x7AEF, (q15_t)0x2376, (q15_t)0x7AFD, + (q15_t)0x2345, (q15_t)0x7B0B, (q15_t)0x2315, (q15_t)0x7B19, + (q15_t)0x22E5, (q15_t)0x7B26, (q15_t)0x22B4, (q15_t)0x7B34, + (q15_t)0x2284, (q15_t)0x7B42, (q15_t)0x2254, (q15_t)0x7B4F, + (q15_t)0x2223, (q15_t)0x7B5D, (q15_t)0x21F3, (q15_t)0x7B6A, + (q15_t)0x21C2, (q15_t)0x7B77, (q15_t)0x2192, (q15_t)0x7B84, + (q15_t)0x2161, (q15_t)0x7B92, (q15_t)0x2131, (q15_t)0x7B9F, + (q15_t)0x2100, (q15_t)0x7BAC, (q15_t)0x20D0, (q15_t)0x7BB9, + (q15_t)0x209F, (q15_t)0x7BC5, (q15_t)0x206E, (q15_t)0x7BD2, + (q15_t)0x203E, (q15_t)0x7BDF, (q15_t)0x200D, (q15_t)0x7BEB, + (q15_t)0x1FDC, (q15_t)0x7BF8, (q15_t)0x1FAC, (q15_t)0x7C05, + (q15_t)0x1F7B, (q15_t)0x7C11, (q15_t)0x1F4A, (q15_t)0x7C1D, + (q15_t)0x1F19, (q15_t)0x7C29, (q15_t)0x1EE9, (q15_t)0x7C36, + (q15_t)0x1EB8, (q15_t)0x7C42, (q15_t)0x1E87, (q15_t)0x7C4E, + (q15_t)0x1E56, (q15_t)0x7C5A, (q15_t)0x1E25, (q15_t)0x7C66, + (q15_t)0x1DF5, (q15_t)0x7C71, (q15_t)0x1DC4, (q15_t)0x7C7D, + (q15_t)0x1D93, (q15_t)0x7C89, (q15_t)0x1D62, (q15_t)0x7C94, + (q15_t)0x1D31, (q15_t)0x7CA0, (q15_t)0x1D00, (q15_t)0x7CAB, + (q15_t)0x1CCF, (q15_t)0x7CB7, (q15_t)0x1C9E, (q15_t)0x7CC2, + (q15_t)0x1C6D, (q15_t)0x7CCD, (q15_t)0x1C3C, (q15_t)0x7CD8, + (q15_t)0x1C0B, (q15_t)0x7CE3, (q15_t)0x1BDA, (q15_t)0x7CEE, + (q15_t)0x1BA9, (q15_t)0x7CF9, (q15_t)0x1B78, (q15_t)0x7D04, + (q15_t)0x1B47, (q15_t)0x7D0F, (q15_t)0x1B16, (q15_t)0x7D19, + (q15_t)0x1AE4, (q15_t)0x7D24, (q15_t)0x1AB3, (q15_t)0x7D2F, + (q15_t)0x1A82, (q15_t)0x7D39, (q15_t)0x1A51, (q15_t)0x7D43, + (q15_t)0x1A20, (q15_t)0x7D4E, (q15_t)0x19EF, (q15_t)0x7D58, + (q15_t)0x19BD, (q15_t)0x7D62, (q15_t)0x198C, (q15_t)0x7D6C, + (q15_t)0x195B, (q15_t)0x7D76, (q15_t)0x192A, (q15_t)0x7D80, + (q15_t)0x18F8, (q15_t)0x7D8A, (q15_t)0x18C7, (q15_t)0x7D94, + (q15_t)0x1896, (q15_t)0x7D9D, (q15_t)0x1864, (q15_t)0x7DA7, + (q15_t)0x1833, (q15_t)0x7DB0, (q15_t)0x1802, (q15_t)0x7DBA, + (q15_t)0x17D0, (q15_t)0x7DC3, (q15_t)0x179F, (q15_t)0x7DCD, + (q15_t)0x176D, (q15_t)0x7DD6, (q15_t)0x173C, (q15_t)0x7DDF, + (q15_t)0x170A, (q15_t)0x7DE8, (q15_t)0x16D9, (q15_t)0x7DF1, + (q15_t)0x16A8, (q15_t)0x7DFA, (q15_t)0x1676, (q15_t)0x7E03, + (q15_t)0x1645, (q15_t)0x7E0C, (q15_t)0x1613, (q15_t)0x7E14, + (q15_t)0x15E2, (q15_t)0x7E1D, (q15_t)0x15B0, (q15_t)0x7E26, + (q15_t)0x157F, (q15_t)0x7E2E, (q15_t)0x154D, (q15_t)0x7E37, + (q15_t)0x151B, (q15_t)0x7E3F, (q15_t)0x14EA, (q15_t)0x7E47, + (q15_t)0x14B8, (q15_t)0x7E4F, (q15_t)0x1487, (q15_t)0x7E57, + (q15_t)0x1455, (q15_t)0x7E5F, (q15_t)0x1423, (q15_t)0x7E67, + (q15_t)0x13F2, (q15_t)0x7E6F, (q15_t)0x13C0, (q15_t)0x7E77, + (q15_t)0x138E, (q15_t)0x7E7F, (q15_t)0x135D, (q15_t)0x7E86, + (q15_t)0x132B, (q15_t)0x7E8E, (q15_t)0x12F9, (q15_t)0x7E95, + (q15_t)0x12C8, (q15_t)0x7E9D, (q15_t)0x1296, (q15_t)0x7EA4, + (q15_t)0x1264, (q15_t)0x7EAB, (q15_t)0x1232, (q15_t)0x7EB3, + (q15_t)0x1201, (q15_t)0x7EBA, (q15_t)0x11CF, (q15_t)0x7EC1, + (q15_t)0x119D, (q15_t)0x7EC8, (q15_t)0x116B, (q15_t)0x7ECF, + (q15_t)0x1139, (q15_t)0x7ED5, (q15_t)0x1108, (q15_t)0x7EDC, + (q15_t)0x10D6, (q15_t)0x7EE3, (q15_t)0x10A4, (q15_t)0x7EE9, + (q15_t)0x1072, (q15_t)0x7EF0, (q15_t)0x1040, (q15_t)0x7EF6, + (q15_t)0x100E, (q15_t)0x7EFD, (q15_t)0x0FDD, (q15_t)0x7F03, + (q15_t)0x0FAB, (q15_t)0x7F09, (q15_t)0x0F79, (q15_t)0x7F0F, + (q15_t)0x0F47, (q15_t)0x7F15, (q15_t)0x0F15, (q15_t)0x7F1B, + (q15_t)0x0EE3, (q15_t)0x7F21, (q15_t)0x0EB1, (q15_t)0x7F27, + (q15_t)0x0E7F, (q15_t)0x7F2D, (q15_t)0x0E4D, (q15_t)0x7F32, + (q15_t)0x0E1B, (q15_t)0x7F38, (q15_t)0x0DE9, (q15_t)0x7F3D, + (q15_t)0x0DB7, (q15_t)0x7F43, (q15_t)0x0D85, (q15_t)0x7F48, + (q15_t)0x0D53, (q15_t)0x7F4D, (q15_t)0x0D21, (q15_t)0x7F53, + (q15_t)0x0CEF, (q15_t)0x7F58, (q15_t)0x0CBD, (q15_t)0x7F5D, + (q15_t)0x0C8B, (q15_t)0x7F62, (q15_t)0x0C59, (q15_t)0x7F67, + (q15_t)0x0C27, (q15_t)0x7F6B, (q15_t)0x0BF5, (q15_t)0x7F70, + (q15_t)0x0BC3, (q15_t)0x7F75, (q15_t)0x0B91, (q15_t)0x7F79, + (q15_t)0x0B5F, (q15_t)0x7F7E, (q15_t)0x0B2D, (q15_t)0x7F82, + (q15_t)0x0AFB, (q15_t)0x7F87, (q15_t)0x0AC9, (q15_t)0x7F8B, + (q15_t)0x0A97, (q15_t)0x7F8F, (q15_t)0x0A65, (q15_t)0x7F93, + (q15_t)0x0A33, (q15_t)0x7F97, (q15_t)0x0A00, (q15_t)0x7F9B, + (q15_t)0x09CE, (q15_t)0x7F9F, (q15_t)0x099C, (q15_t)0x7FA3, + (q15_t)0x096A, (q15_t)0x7FA7, (q15_t)0x0938, (q15_t)0x7FAA, + (q15_t)0x0906, (q15_t)0x7FAE, (q15_t)0x08D4, (q15_t)0x7FB1, + (q15_t)0x08A2, (q15_t)0x7FB5, (q15_t)0x086F, (q15_t)0x7FB8, + (q15_t)0x083D, (q15_t)0x7FBC, (q15_t)0x080B, (q15_t)0x7FBF, + (q15_t)0x07D9, (q15_t)0x7FC2, (q15_t)0x07A7, (q15_t)0x7FC5, + (q15_t)0x0775, (q15_t)0x7FC8, (q15_t)0x0742, (q15_t)0x7FCB, + (q15_t)0x0710, (q15_t)0x7FCE, (q15_t)0x06DE, (q15_t)0x7FD0, + (q15_t)0x06AC, (q15_t)0x7FD3, (q15_t)0x067A, (q15_t)0x7FD6, + (q15_t)0x0647, (q15_t)0x7FD8, (q15_t)0x0615, (q15_t)0x7FDA, + (q15_t)0x05E3, (q15_t)0x7FDD, (q15_t)0x05B1, (q15_t)0x7FDF, + (q15_t)0x057F, (q15_t)0x7FE1, (q15_t)0x054C, (q15_t)0x7FE3, + (q15_t)0x051A, (q15_t)0x7FE5, (q15_t)0x04E8, (q15_t)0x7FE7, + (q15_t)0x04B6, (q15_t)0x7FE9, (q15_t)0x0483, (q15_t)0x7FEB, + (q15_t)0x0451, (q15_t)0x7FED, (q15_t)0x041F, (q15_t)0x7FEE, + (q15_t)0x03ED, (q15_t)0x7FF0, (q15_t)0x03BA, (q15_t)0x7FF2, + (q15_t)0x0388, (q15_t)0x7FF3, (q15_t)0x0356, (q15_t)0x7FF4, + (q15_t)0x0324, (q15_t)0x7FF6, (q15_t)0x02F1, (q15_t)0x7FF7, + (q15_t)0x02BF, (q15_t)0x7FF8, (q15_t)0x028D, (q15_t)0x7FF9, + (q15_t)0x025B, (q15_t)0x7FFA, (q15_t)0x0228, (q15_t)0x7FFB, + (q15_t)0x01F6, (q15_t)0x7FFC, (q15_t)0x01C4, (q15_t)0x7FFC, + (q15_t)0x0192, (q15_t)0x7FFD, (q15_t)0x015F, (q15_t)0x7FFE, + (q15_t)0x012D, (q15_t)0x7FFE, (q15_t)0x00FB, (q15_t)0x7FFF, + (q15_t)0x00C9, (q15_t)0x7FFF, (q15_t)0x0096, (q15_t)0x7FFF, + (q15_t)0x0064, (q15_t)0x7FFF, (q15_t)0x0032, (q15_t)0x7FFF, + (q15_t)0x0000, (q15_t)0x7FFF, (q15_t)0xFFCD, (q15_t)0x7FFF, + (q15_t)0xFF9B, (q15_t)0x7FFF, (q15_t)0xFF69, (q15_t)0x7FFF, + (q15_t)0xFF36, (q15_t)0x7FFF, (q15_t)0xFF04, (q15_t)0x7FFF, + (q15_t)0xFED2, (q15_t)0x7FFE, (q15_t)0xFEA0, (q15_t)0x7FFE, + (q15_t)0xFE6D, (q15_t)0x7FFD, (q15_t)0xFE3B, (q15_t)0x7FFC, + (q15_t)0xFE09, (q15_t)0x7FFC, (q15_t)0xFDD7, (q15_t)0x7FFB, + (q15_t)0xFDA4, (q15_t)0x7FFA, (q15_t)0xFD72, (q15_t)0x7FF9, + (q15_t)0xFD40, (q15_t)0x7FF8, (q15_t)0xFD0E, (q15_t)0x7FF7, + (q15_t)0xFCDB, (q15_t)0x7FF6, (q15_t)0xFCA9, (q15_t)0x7FF4, + (q15_t)0xFC77, (q15_t)0x7FF3, (q15_t)0xFC45, (q15_t)0x7FF2, + (q15_t)0xFC12, (q15_t)0x7FF0, (q15_t)0xFBE0, (q15_t)0x7FEE, + (q15_t)0xFBAE, (q15_t)0x7FED, (q15_t)0xFB7C, (q15_t)0x7FEB, + (q15_t)0xFB49, (q15_t)0x7FE9, (q15_t)0xFB17, (q15_t)0x7FE7, + (q15_t)0xFAE5, (q15_t)0x7FE5, (q15_t)0xFAB3, (q15_t)0x7FE3, + (q15_t)0xFA80, (q15_t)0x7FE1, (q15_t)0xFA4E, (q15_t)0x7FDF, + (q15_t)0xFA1C, (q15_t)0x7FDD, (q15_t)0xF9EA, (q15_t)0x7FDA, + (q15_t)0xF9B8, (q15_t)0x7FD8, (q15_t)0xF985, (q15_t)0x7FD6, + (q15_t)0xF953, (q15_t)0x7FD3, (q15_t)0xF921, (q15_t)0x7FD0, + (q15_t)0xF8EF, (q15_t)0x7FCE, (q15_t)0xF8BD, (q15_t)0x7FCB, + (q15_t)0xF88A, (q15_t)0x7FC8, (q15_t)0xF858, (q15_t)0x7FC5, + (q15_t)0xF826, (q15_t)0x7FC2, (q15_t)0xF7F4, (q15_t)0x7FBF, + (q15_t)0xF7C2, (q15_t)0x7FBC, (q15_t)0xF790, (q15_t)0x7FB8, + (q15_t)0xF75D, (q15_t)0x7FB5, (q15_t)0xF72B, (q15_t)0x7FB1, + (q15_t)0xF6F9, (q15_t)0x7FAE, (q15_t)0xF6C7, (q15_t)0x7FAA, + (q15_t)0xF695, (q15_t)0x7FA7, (q15_t)0xF663, (q15_t)0x7FA3, + (q15_t)0xF631, (q15_t)0x7F9F, (q15_t)0xF5FF, (q15_t)0x7F9B, + (q15_t)0xF5CC, (q15_t)0x7F97, (q15_t)0xF59A, (q15_t)0x7F93, + (q15_t)0xF568, (q15_t)0x7F8F, (q15_t)0xF536, (q15_t)0x7F8B, + (q15_t)0xF504, (q15_t)0x7F87, (q15_t)0xF4D2, (q15_t)0x7F82, + (q15_t)0xF4A0, (q15_t)0x7F7E, (q15_t)0xF46E, (q15_t)0x7F79, + (q15_t)0xF43C, (q15_t)0x7F75, (q15_t)0xF40A, (q15_t)0x7F70, + (q15_t)0xF3D8, (q15_t)0x7F6B, (q15_t)0xF3A6, (q15_t)0x7F67, + (q15_t)0xF374, (q15_t)0x7F62, (q15_t)0xF342, (q15_t)0x7F5D, + (q15_t)0xF310, (q15_t)0x7F58, (q15_t)0xF2DE, (q15_t)0x7F53, + (q15_t)0xF2AC, (q15_t)0x7F4D, (q15_t)0xF27A, (q15_t)0x7F48, + (q15_t)0xF248, (q15_t)0x7F43, (q15_t)0xF216, (q15_t)0x7F3D, + (q15_t)0xF1E4, (q15_t)0x7F38, (q15_t)0xF1B2, (q15_t)0x7F32, + (q15_t)0xF180, (q15_t)0x7F2D, (q15_t)0xF14E, (q15_t)0x7F27, + (q15_t)0xF11C, (q15_t)0x7F21, (q15_t)0xF0EA, (q15_t)0x7F1B, + (q15_t)0xF0B8, (q15_t)0x7F15, (q15_t)0xF086, (q15_t)0x7F0F, + (q15_t)0xF054, (q15_t)0x7F09, (q15_t)0xF022, (q15_t)0x7F03, + (q15_t)0xEFF1, (q15_t)0x7EFD, (q15_t)0xEFBF, (q15_t)0x7EF6, + (q15_t)0xEF8D, (q15_t)0x7EF0, (q15_t)0xEF5B, (q15_t)0x7EE9, + (q15_t)0xEF29, (q15_t)0x7EE3, (q15_t)0xEEF7, (q15_t)0x7EDC, + (q15_t)0xEEC6, (q15_t)0x7ED5, (q15_t)0xEE94, (q15_t)0x7ECF, + (q15_t)0xEE62, (q15_t)0x7EC8, (q15_t)0xEE30, (q15_t)0x7EC1, + (q15_t)0xEDFE, (q15_t)0x7EBA, (q15_t)0xEDCD, (q15_t)0x7EB3, + (q15_t)0xED9B, (q15_t)0x7EAB, (q15_t)0xED69, (q15_t)0x7EA4, + (q15_t)0xED37, (q15_t)0x7E9D, (q15_t)0xED06, (q15_t)0x7E95, + (q15_t)0xECD4, (q15_t)0x7E8E, (q15_t)0xECA2, (q15_t)0x7E86, + (q15_t)0xEC71, (q15_t)0x7E7F, (q15_t)0xEC3F, (q15_t)0x7E77, + (q15_t)0xEC0D, (q15_t)0x7E6F, (q15_t)0xEBDC, (q15_t)0x7E67, + (q15_t)0xEBAA, (q15_t)0x7E5F, (q15_t)0xEB78, (q15_t)0x7E57, + (q15_t)0xEB47, (q15_t)0x7E4F, (q15_t)0xEB15, (q15_t)0x7E47, + (q15_t)0xEAE4, (q15_t)0x7E3F, (q15_t)0xEAB2, (q15_t)0x7E37, + (q15_t)0xEA80, (q15_t)0x7E2E, (q15_t)0xEA4F, (q15_t)0x7E26, + (q15_t)0xEA1D, (q15_t)0x7E1D, (q15_t)0xE9EC, (q15_t)0x7E14, + (q15_t)0xE9BA, (q15_t)0x7E0C, (q15_t)0xE989, (q15_t)0x7E03, + (q15_t)0xE957, (q15_t)0x7DFA, (q15_t)0xE926, (q15_t)0x7DF1, + (q15_t)0xE8F5, (q15_t)0x7DE8, (q15_t)0xE8C3, (q15_t)0x7DDF, + (q15_t)0xE892, (q15_t)0x7DD6, (q15_t)0xE860, (q15_t)0x7DCD, + (q15_t)0xE82F, (q15_t)0x7DC3, (q15_t)0xE7FD, (q15_t)0x7DBA, + (q15_t)0xE7CC, (q15_t)0x7DB0, (q15_t)0xE79B, (q15_t)0x7DA7, + (q15_t)0xE769, (q15_t)0x7D9D, (q15_t)0xE738, (q15_t)0x7D94, + (q15_t)0xE707, (q15_t)0x7D8A, (q15_t)0xE6D5, (q15_t)0x7D80, + (q15_t)0xE6A4, (q15_t)0x7D76, (q15_t)0xE673, (q15_t)0x7D6C, + (q15_t)0xE642, (q15_t)0x7D62, (q15_t)0xE610, (q15_t)0x7D58, + (q15_t)0xE5DF, (q15_t)0x7D4E, (q15_t)0xE5AE, (q15_t)0x7D43, + (q15_t)0xE57D, (q15_t)0x7D39, (q15_t)0xE54C, (q15_t)0x7D2F, + (q15_t)0xE51B, (q15_t)0x7D24, (q15_t)0xE4E9, (q15_t)0x7D19, + (q15_t)0xE4B8, (q15_t)0x7D0F, (q15_t)0xE487, (q15_t)0x7D04, + (q15_t)0xE456, (q15_t)0x7CF9, (q15_t)0xE425, (q15_t)0x7CEE, + (q15_t)0xE3F4, (q15_t)0x7CE3, (q15_t)0xE3C3, (q15_t)0x7CD8, + (q15_t)0xE392, (q15_t)0x7CCD, (q15_t)0xE361, (q15_t)0x7CC2, + (q15_t)0xE330, (q15_t)0x7CB7, (q15_t)0xE2FF, (q15_t)0x7CAB, + (q15_t)0xE2CE, (q15_t)0x7CA0, (q15_t)0xE29D, (q15_t)0x7C94, + (q15_t)0xE26C, (q15_t)0x7C89, (q15_t)0xE23B, (q15_t)0x7C7D, + (q15_t)0xE20A, (q15_t)0x7C71, (q15_t)0xE1DA, (q15_t)0x7C66, + (q15_t)0xE1A9, (q15_t)0x7C5A, (q15_t)0xE178, (q15_t)0x7C4E, + (q15_t)0xE147, (q15_t)0x7C42, (q15_t)0xE116, (q15_t)0x7C36, + (q15_t)0xE0E6, (q15_t)0x7C29, (q15_t)0xE0B5, (q15_t)0x7C1D, + (q15_t)0xE084, (q15_t)0x7C11, (q15_t)0xE053, (q15_t)0x7C05, + (q15_t)0xE023, (q15_t)0x7BF8, (q15_t)0xDFF2, (q15_t)0x7BEB, + (q15_t)0xDFC1, (q15_t)0x7BDF, (q15_t)0xDF91, (q15_t)0x7BD2, + (q15_t)0xDF60, (q15_t)0x7BC5, (q15_t)0xDF2F, (q15_t)0x7BB9, + (q15_t)0xDEFF, (q15_t)0x7BAC, (q15_t)0xDECE, (q15_t)0x7B9F, + (q15_t)0xDE9E, (q15_t)0x7B92, (q15_t)0xDE6D, (q15_t)0x7B84, + (q15_t)0xDE3D, (q15_t)0x7B77, (q15_t)0xDE0C, (q15_t)0x7B6A, + (q15_t)0xDDDC, (q15_t)0x7B5D, (q15_t)0xDDAB, (q15_t)0x7B4F, + (q15_t)0xDD7B, (q15_t)0x7B42, (q15_t)0xDD4B, (q15_t)0x7B34, + (q15_t)0xDD1A, (q15_t)0x7B26, (q15_t)0xDCEA, (q15_t)0x7B19, + (q15_t)0xDCBA, (q15_t)0x7B0B, (q15_t)0xDC89, (q15_t)0x7AFD, + (q15_t)0xDC59, (q15_t)0x7AEF, (q15_t)0xDC29, (q15_t)0x7AE1, + (q15_t)0xDBF8, (q15_t)0x7AD3, (q15_t)0xDBC8, (q15_t)0x7AC5, + (q15_t)0xDB98, (q15_t)0x7AB6, (q15_t)0xDB68, (q15_t)0x7AA8, + (q15_t)0xDB38, (q15_t)0x7A9A, (q15_t)0xDB08, (q15_t)0x7A8B, + (q15_t)0xDAD7, (q15_t)0x7A7D, (q15_t)0xDAA7, (q15_t)0x7A6E, + (q15_t)0xDA77, (q15_t)0x7A5F, (q15_t)0xDA47, (q15_t)0x7A50, + (q15_t)0xDA17, (q15_t)0x7A42, (q15_t)0xD9E7, (q15_t)0x7A33, + (q15_t)0xD9B7, (q15_t)0x7A24, (q15_t)0xD987, (q15_t)0x7A15, + (q15_t)0xD957, (q15_t)0x7A05, (q15_t)0xD927, (q15_t)0x79F6, + (q15_t)0xD8F8, (q15_t)0x79E7, (q15_t)0xD8C8, (q15_t)0x79D8, + (q15_t)0xD898, (q15_t)0x79C8, (q15_t)0xD868, (q15_t)0x79B9, + (q15_t)0xD838, (q15_t)0x79A9, (q15_t)0xD809, (q15_t)0x7999, + (q15_t)0xD7D9, (q15_t)0x798A, (q15_t)0xD7A9, (q15_t)0x797A, + (q15_t)0xD779, (q15_t)0x796A, (q15_t)0xD74A, (q15_t)0x795A, + (q15_t)0xD71A, (q15_t)0x794A, (q15_t)0xD6EA, (q15_t)0x793A, + (q15_t)0xD6BB, (q15_t)0x792A, (q15_t)0xD68B, (q15_t)0x7919, + (q15_t)0xD65C, (q15_t)0x7909, (q15_t)0xD62C, (q15_t)0x78F9, + (q15_t)0xD5FD, (q15_t)0x78E8, (q15_t)0xD5CD, (q15_t)0x78D8, + (q15_t)0xD59E, (q15_t)0x78C7, (q15_t)0xD56E, (q15_t)0x78B6, + (q15_t)0xD53F, (q15_t)0x78A6, (q15_t)0xD510, (q15_t)0x7895, + (q15_t)0xD4E0, (q15_t)0x7884, (q15_t)0xD4B1, (q15_t)0x7873, + (q15_t)0xD482, (q15_t)0x7862, (q15_t)0xD452, (q15_t)0x7851, + (q15_t)0xD423, (q15_t)0x7840, (q15_t)0xD3F4, (q15_t)0x782E, + (q15_t)0xD3C5, (q15_t)0x781D, (q15_t)0xD396, (q15_t)0x780C, + (q15_t)0xD367, (q15_t)0x77FA, (q15_t)0xD337, (q15_t)0x77E9, + (q15_t)0xD308, (q15_t)0x77D7, (q15_t)0xD2D9, (q15_t)0x77C5, + (q15_t)0xD2AA, (q15_t)0x77B4, (q15_t)0xD27B, (q15_t)0x77A2, + (q15_t)0xD24C, (q15_t)0x7790, (q15_t)0xD21D, (q15_t)0x777E, + (q15_t)0xD1EE, (q15_t)0x776C, (q15_t)0xD1C0, (q15_t)0x775A, + (q15_t)0xD191, (q15_t)0x7747, (q15_t)0xD162, (q15_t)0x7735, + (q15_t)0xD133, (q15_t)0x7723, (q15_t)0xD104, (q15_t)0x7710, + (q15_t)0xD0D6, (q15_t)0x76FE, (q15_t)0xD0A7, (q15_t)0x76EB, + (q15_t)0xD078, (q15_t)0x76D9, (q15_t)0xD04A, (q15_t)0x76C6, + (q15_t)0xD01B, (q15_t)0x76B3, (q15_t)0xCFEC, (q15_t)0x76A0, + (q15_t)0xCFBE, (q15_t)0x768E, (q15_t)0xCF8F, (q15_t)0x767B, + (q15_t)0xCF61, (q15_t)0x7668, (q15_t)0xCF32, (q15_t)0x7654, + (q15_t)0xCF04, (q15_t)0x7641, (q15_t)0xCED5, (q15_t)0x762E, + (q15_t)0xCEA7, (q15_t)0x761B, (q15_t)0xCE79, (q15_t)0x7607, + (q15_t)0xCE4A, (q15_t)0x75F4, (q15_t)0xCE1C, (q15_t)0x75E0, + (q15_t)0xCDEE, (q15_t)0x75CC, (q15_t)0xCDBF, (q15_t)0x75B9, + (q15_t)0xCD91, (q15_t)0x75A5, (q15_t)0xCD63, (q15_t)0x7591, + (q15_t)0xCD35, (q15_t)0x757D, (q15_t)0xCD07, (q15_t)0x7569, + (q15_t)0xCCD9, (q15_t)0x7555, (q15_t)0xCCAB, (q15_t)0x7541, + (q15_t)0xCC7D, (q15_t)0x752D, (q15_t)0xCC4F, (q15_t)0x7519, + (q15_t)0xCC21, (q15_t)0x7504, (q15_t)0xCBF3, (q15_t)0x74F0, + (q15_t)0xCBC5, (q15_t)0x74DB, (q15_t)0xCB97, (q15_t)0x74C7, + (q15_t)0xCB69, (q15_t)0x74B2, (q15_t)0xCB3B, (q15_t)0x749E, + (q15_t)0xCB0D, (q15_t)0x7489, (q15_t)0xCAE0, (q15_t)0x7474, + (q15_t)0xCAB2, (q15_t)0x745F, (q15_t)0xCA84, (q15_t)0x744A, + (q15_t)0xCA57, (q15_t)0x7435, (q15_t)0xCA29, (q15_t)0x7420, + (q15_t)0xC9FB, (q15_t)0x740B, (q15_t)0xC9CE, (q15_t)0x73F6, + (q15_t)0xC9A0, (q15_t)0x73E0, (q15_t)0xC973, (q15_t)0x73CB, + (q15_t)0xC945, (q15_t)0x73B5, (q15_t)0xC918, (q15_t)0x73A0, + (q15_t)0xC8EB, (q15_t)0x738A, (q15_t)0xC8BD, (q15_t)0x7375, + (q15_t)0xC890, (q15_t)0x735F, (q15_t)0xC863, (q15_t)0x7349, + (q15_t)0xC835, (q15_t)0x7333, (q15_t)0xC808, (q15_t)0x731D, + (q15_t)0xC7DB, (q15_t)0x7307, (q15_t)0xC7AE, (q15_t)0x72F1, + (q15_t)0xC781, (q15_t)0x72DB, (q15_t)0xC754, (q15_t)0x72C5, + (q15_t)0xC727, (q15_t)0x72AF, (q15_t)0xC6F9, (q15_t)0x7298, + (q15_t)0xC6CD, (q15_t)0x7282, (q15_t)0xC6A0, (q15_t)0x726B, + (q15_t)0xC673, (q15_t)0x7255, (q15_t)0xC646, (q15_t)0x723E, + (q15_t)0xC619, (q15_t)0x7227, (q15_t)0xC5EC, (q15_t)0x7211, + (q15_t)0xC5BF, (q15_t)0x71FA, (q15_t)0xC593, (q15_t)0x71E3, + (q15_t)0xC566, (q15_t)0x71CC, (q15_t)0xC539, (q15_t)0x71B5, + (q15_t)0xC50D, (q15_t)0x719E, (q15_t)0xC4E0, (q15_t)0x7186, + (q15_t)0xC4B3, (q15_t)0x716F, (q15_t)0xC487, (q15_t)0x7158, + (q15_t)0xC45A, (q15_t)0x7141, (q15_t)0xC42E, (q15_t)0x7129, + (q15_t)0xC402, (q15_t)0x7112, (q15_t)0xC3D5, (q15_t)0x70FA, + (q15_t)0xC3A9, (q15_t)0x70E2, (q15_t)0xC37C, (q15_t)0x70CB, + (q15_t)0xC350, (q15_t)0x70B3, (q15_t)0xC324, (q15_t)0x709B, + (q15_t)0xC2F8, (q15_t)0x7083, (q15_t)0xC2CC, (q15_t)0x706B, + (q15_t)0xC29F, (q15_t)0x7053, (q15_t)0xC273, (q15_t)0x703B, + (q15_t)0xC247, (q15_t)0x7023, (q15_t)0xC21B, (q15_t)0x700A, + (q15_t)0xC1EF, (q15_t)0x6FF2, (q15_t)0xC1C3, (q15_t)0x6FDA, + (q15_t)0xC197, (q15_t)0x6FC1, (q15_t)0xC16C, (q15_t)0x6FA9, + (q15_t)0xC140, (q15_t)0x6F90, (q15_t)0xC114, (q15_t)0x6F77, + (q15_t)0xC0E8, (q15_t)0x6F5F, (q15_t)0xC0BC, (q15_t)0x6F46, + (q15_t)0xC091, (q15_t)0x6F2D, (q15_t)0xC065, (q15_t)0x6F14, + (q15_t)0xC03A, (q15_t)0x6EFB, (q15_t)0xC00E, (q15_t)0x6EE2, + (q15_t)0xBFE2, (q15_t)0x6EC9, (q15_t)0xBFB7, (q15_t)0x6EAF, + (q15_t)0xBF8C, (q15_t)0x6E96, (q15_t)0xBF60, (q15_t)0x6E7D, + (q15_t)0xBF35, (q15_t)0x6E63, (q15_t)0xBF09, (q15_t)0x6E4A, + (q15_t)0xBEDE, (q15_t)0x6E30, (q15_t)0xBEB3, (q15_t)0x6E17, + (q15_t)0xBE88, (q15_t)0x6DFD, (q15_t)0xBE5D, (q15_t)0x6DE3, + (q15_t)0xBE31, (q15_t)0x6DCA, (q15_t)0xBE06, (q15_t)0x6DB0, + (q15_t)0xBDDB, (q15_t)0x6D96, (q15_t)0xBDB0, (q15_t)0x6D7C, + (q15_t)0xBD85, (q15_t)0x6D62, (q15_t)0xBD5A, (q15_t)0x6D48, + (q15_t)0xBD2F, (q15_t)0x6D2D, (q15_t)0xBD05, (q15_t)0x6D13, + (q15_t)0xBCDA, (q15_t)0x6CF9, (q15_t)0xBCAF, (q15_t)0x6CDE, + (q15_t)0xBC84, (q15_t)0x6CC4, (q15_t)0xBC5A, (q15_t)0x6CA9, + (q15_t)0xBC2F, (q15_t)0x6C8F, (q15_t)0xBC04, (q15_t)0x6C74, + (q15_t)0xBBDA, (q15_t)0x6C59, (q15_t)0xBBAF, (q15_t)0x6C3F, + (q15_t)0xBB85, (q15_t)0x6C24, (q15_t)0xBB5A, (q15_t)0x6C09, + (q15_t)0xBB30, (q15_t)0x6BEE, (q15_t)0xBB05, (q15_t)0x6BD3, + (q15_t)0xBADB, (q15_t)0x6BB8, (q15_t)0xBAB1, (q15_t)0x6B9C, + (q15_t)0xBA87, (q15_t)0x6B81, (q15_t)0xBA5C, (q15_t)0x6B66, + (q15_t)0xBA32, (q15_t)0x6B4A, (q15_t)0xBA08, (q15_t)0x6B2F, + (q15_t)0xB9DE, (q15_t)0x6B13, (q15_t)0xB9B4, (q15_t)0x6AF8, + (q15_t)0xB98A, (q15_t)0x6ADC, (q15_t)0xB960, (q15_t)0x6AC1, + (q15_t)0xB936, (q15_t)0x6AA5, (q15_t)0xB90C, (q15_t)0x6A89, + (q15_t)0xB8E3, (q15_t)0x6A6D, (q15_t)0xB8B9, (q15_t)0x6A51, + (q15_t)0xB88F, (q15_t)0x6A35, (q15_t)0xB865, (q15_t)0x6A19, + (q15_t)0xB83C, (q15_t)0x69FD, (q15_t)0xB812, (q15_t)0x69E1, + (q15_t)0xB7E9, (q15_t)0x69C4, (q15_t)0xB7BF, (q15_t)0x69A8, + (q15_t)0xB796, (q15_t)0x698C, (q15_t)0xB76C, (q15_t)0x696F, + (q15_t)0xB743, (q15_t)0x6953, (q15_t)0xB719, (q15_t)0x6936, + (q15_t)0xB6F0, (q15_t)0x6919, (q15_t)0xB6C7, (q15_t)0x68FD, + (q15_t)0xB69E, (q15_t)0x68E0, (q15_t)0xB675, (q15_t)0x68C3, + (q15_t)0xB64B, (q15_t)0x68A6, (q15_t)0xB622, (q15_t)0x6889, + (q15_t)0xB5F9, (q15_t)0x686C, (q15_t)0xB5D0, (q15_t)0x684F, + (q15_t)0xB5A7, (q15_t)0x6832, (q15_t)0xB57E, (q15_t)0x6815, + (q15_t)0xB556, (q15_t)0x67F7, (q15_t)0xB52D, (q15_t)0x67DA, + (q15_t)0xB504, (q15_t)0x67BD, (q15_t)0xB4DB, (q15_t)0x679F, + (q15_t)0xB4B3, (q15_t)0x6782, (q15_t)0xB48A, (q15_t)0x6764, + (q15_t)0xB461, (q15_t)0x6746, (q15_t)0xB439, (q15_t)0x6729, + (q15_t)0xB410, (q15_t)0x670B, (q15_t)0xB3E8, (q15_t)0x66ED, + (q15_t)0xB3C0, (q15_t)0x66CF, (q15_t)0xB397, (q15_t)0x66B1, + (q15_t)0xB36F, (q15_t)0x6693, (q15_t)0xB347, (q15_t)0x6675, + (q15_t)0xB31E, (q15_t)0x6657, (q15_t)0xB2F6, (q15_t)0x6639, + (q15_t)0xB2CE, (q15_t)0x661A, (q15_t)0xB2A6, (q15_t)0x65FC, + (q15_t)0xB27E, (q15_t)0x65DD, (q15_t)0xB256, (q15_t)0x65BF, + (q15_t)0xB22E, (q15_t)0x65A0, (q15_t)0xB206, (q15_t)0x6582, + (q15_t)0xB1DE, (q15_t)0x6563, (q15_t)0xB1B7, (q15_t)0x6545, + (q15_t)0xB18F, (q15_t)0x6526, (q15_t)0xB167, (q15_t)0x6507, + (q15_t)0xB140, (q15_t)0x64E8, (q15_t)0xB118, (q15_t)0x64C9, + (q15_t)0xB0F0, (q15_t)0x64AA, (q15_t)0xB0C9, (q15_t)0x648B, + (q15_t)0xB0A1, (q15_t)0x646C, (q15_t)0xB07A, (q15_t)0x644D, + (q15_t)0xB053, (q15_t)0x642D, (q15_t)0xB02B, (q15_t)0x640E, + (q15_t)0xB004, (q15_t)0x63EF, (q15_t)0xAFDD, (q15_t)0x63CF, + (q15_t)0xAFB6, (q15_t)0x63B0, (q15_t)0xAF8F, (q15_t)0x6390, + (q15_t)0xAF68, (q15_t)0x6371, (q15_t)0xAF40, (q15_t)0x6351, + (q15_t)0xAF1A, (q15_t)0x6331, (q15_t)0xAEF3, (q15_t)0x6311, + (q15_t)0xAECC, (q15_t)0x62F2, (q15_t)0xAEA5, (q15_t)0x62D2, + (q15_t)0xAE7E, (q15_t)0x62B2, (q15_t)0xAE57, (q15_t)0x6292, + (q15_t)0xAE31, (q15_t)0x6271, (q15_t)0xAE0A, (q15_t)0x6251, + (q15_t)0xADE3, (q15_t)0x6231, (q15_t)0xADBD, (q15_t)0x6211, + (q15_t)0xAD96, (q15_t)0x61F1, (q15_t)0xAD70, (q15_t)0x61D0, + (q15_t)0xAD4A, (q15_t)0x61B0, (q15_t)0xAD23, (q15_t)0x618F, + (q15_t)0xACFD, (q15_t)0x616F, (q15_t)0xACD7, (q15_t)0x614E, + (q15_t)0xACB1, (q15_t)0x612D, (q15_t)0xAC8A, (q15_t)0x610D, + (q15_t)0xAC64, (q15_t)0x60EC, (q15_t)0xAC3E, (q15_t)0x60CB, + (q15_t)0xAC18, (q15_t)0x60AA, (q15_t)0xABF2, (q15_t)0x6089, + (q15_t)0xABCC, (q15_t)0x6068, (q15_t)0xABA7, (q15_t)0x6047, + (q15_t)0xAB81, (q15_t)0x6026, (q15_t)0xAB5B, (q15_t)0x6004, + (q15_t)0xAB35, (q15_t)0x5FE3, (q15_t)0xAB10, (q15_t)0x5FC2, + (q15_t)0xAAEA, (q15_t)0x5FA0, (q15_t)0xAAC5, (q15_t)0x5F7F, + (q15_t)0xAA9F, (q15_t)0x5F5E, (q15_t)0xAA7A, (q15_t)0x5F3C, + (q15_t)0xAA54, (q15_t)0x5F1A, (q15_t)0xAA2F, (q15_t)0x5EF9, + (q15_t)0xAA0A, (q15_t)0x5ED7, (q15_t)0xA9E5, (q15_t)0x5EB5, + (q15_t)0xA9BF, (q15_t)0x5E93, (q15_t)0xA99A, (q15_t)0x5E71, + (q15_t)0xA975, (q15_t)0x5E50, (q15_t)0xA950, (q15_t)0x5E2D, + (q15_t)0xA92B, (q15_t)0x5E0B, (q15_t)0xA906, (q15_t)0x5DE9, + (q15_t)0xA8E2, (q15_t)0x5DC7, (q15_t)0xA8BD, (q15_t)0x5DA5, + (q15_t)0xA898, (q15_t)0x5D83, (q15_t)0xA873, (q15_t)0x5D60, + (q15_t)0xA84F, (q15_t)0x5D3E, (q15_t)0xA82A, (q15_t)0x5D1B, + (q15_t)0xA806, (q15_t)0x5CF9, (q15_t)0xA7E1, (q15_t)0x5CD6, + (q15_t)0xA7BD, (q15_t)0x5CB4, (q15_t)0xA798, (q15_t)0x5C91, + (q15_t)0xA774, (q15_t)0x5C6E, (q15_t)0xA750, (q15_t)0x5C4B, + (q15_t)0xA72B, (q15_t)0x5C29, (q15_t)0xA707, (q15_t)0x5C06, + (q15_t)0xA6E3, (q15_t)0x5BE3, (q15_t)0xA6BF, (q15_t)0x5BC0, + (q15_t)0xA69B, (q15_t)0x5B9D, (q15_t)0xA677, (q15_t)0x5B79, + (q15_t)0xA653, (q15_t)0x5B56, (q15_t)0xA62F, (q15_t)0x5B33, + (q15_t)0xA60C, (q15_t)0x5B10, (q15_t)0xA5E8, (q15_t)0x5AEC, + (q15_t)0xA5C4, (q15_t)0x5AC9, (q15_t)0xA5A1, (q15_t)0x5AA5, + (q15_t)0xA57D, (q15_t)0x5A82, (q15_t)0xA55A, (q15_t)0x5A5E, + (q15_t)0xA536, (q15_t)0x5A3B, (q15_t)0xA513, (q15_t)0x5A17, + (q15_t)0xA4EF, (q15_t)0x59F3, (q15_t)0xA4CC, (q15_t)0x59D0, + (q15_t)0xA4A9, (q15_t)0x59AC, (q15_t)0xA486, (q15_t)0x5988, + (q15_t)0xA462, (q15_t)0x5964, (q15_t)0xA43F, (q15_t)0x5940, + (q15_t)0xA41C, (q15_t)0x591C, (q15_t)0xA3F9, (q15_t)0x58F8, + (q15_t)0xA3D6, (q15_t)0x58D4, (q15_t)0xA3B4, (q15_t)0x58AF, + (q15_t)0xA391, (q15_t)0x588B, (q15_t)0xA36E, (q15_t)0x5867, + (q15_t)0xA34B, (q15_t)0x5842, (q15_t)0xA329, (q15_t)0x581E, + (q15_t)0xA306, (q15_t)0x57F9, (q15_t)0xA2E4, (q15_t)0x57D5, + (q15_t)0xA2C1, (q15_t)0x57B0, (q15_t)0xA29F, (q15_t)0x578C, + (q15_t)0xA27C, (q15_t)0x5767, (q15_t)0xA25A, (q15_t)0x5742, + (q15_t)0xA238, (q15_t)0x571D, (q15_t)0xA216, (q15_t)0x56F9, + (q15_t)0xA1F4, (q15_t)0x56D4, (q15_t)0xA1D2, (q15_t)0x56AF, + (q15_t)0xA1AF, (q15_t)0x568A, (q15_t)0xA18E, (q15_t)0x5665, + (q15_t)0xA16C, (q15_t)0x5640, (q15_t)0xA14A, (q15_t)0x561A, + (q15_t)0xA128, (q15_t)0x55F5, (q15_t)0xA106, (q15_t)0x55D0, + (q15_t)0xA0E5, (q15_t)0x55AB, (q15_t)0xA0C3, (q15_t)0x5585, + (q15_t)0xA0A1, (q15_t)0x5560, (q15_t)0xA080, (q15_t)0x553A, + (q15_t)0xA05F, (q15_t)0x5515, (q15_t)0xA03D, (q15_t)0x54EF, + (q15_t)0xA01C, (q15_t)0x54CA, (q15_t)0x9FFB, (q15_t)0x54A4, + (q15_t)0x9FD9, (q15_t)0x547E, (q15_t)0x9FB8, (q15_t)0x5458, + (q15_t)0x9F97, (q15_t)0x5433, (q15_t)0x9F76, (q15_t)0x540D, + (q15_t)0x9F55, (q15_t)0x53E7, (q15_t)0x9F34, (q15_t)0x53C1, + (q15_t)0x9F13, (q15_t)0x539B, (q15_t)0x9EF2, (q15_t)0x5375, + (q15_t)0x9ED2, (q15_t)0x534E, (q15_t)0x9EB1, (q15_t)0x5328, + (q15_t)0x9E90, (q15_t)0x5302, (q15_t)0x9E70, (q15_t)0x52DC, + (q15_t)0x9E4F, (q15_t)0x52B5, (q15_t)0x9E2F, (q15_t)0x528F, + (q15_t)0x9E0E, (q15_t)0x5269, (q15_t)0x9DEE, (q15_t)0x5242, + (q15_t)0x9DCE, (q15_t)0x521C, (q15_t)0x9DAE, (q15_t)0x51F5, + (q15_t)0x9D8E, (q15_t)0x51CE, (q15_t)0x9D6D, (q15_t)0x51A8, + (q15_t)0x9D4D, (q15_t)0x5181, (q15_t)0x9D2D, (q15_t)0x515A, + (q15_t)0x9D0D, (q15_t)0x5133, (q15_t)0x9CEE, (q15_t)0x510C, + (q15_t)0x9CCE, (q15_t)0x50E5, (q15_t)0x9CAE, (q15_t)0x50BF, + (q15_t)0x9C8E, (q15_t)0x5097, (q15_t)0x9C6F, (q15_t)0x5070, + (q15_t)0x9C4F, (q15_t)0x5049, (q15_t)0x9C30, (q15_t)0x5022, + (q15_t)0x9C10, (q15_t)0x4FFB, (q15_t)0x9BF1, (q15_t)0x4FD4, + (q15_t)0x9BD2, (q15_t)0x4FAC, (q15_t)0x9BB2, (q15_t)0x4F85, + (q15_t)0x9B93, (q15_t)0x4F5E, (q15_t)0x9B74, (q15_t)0x4F36, + (q15_t)0x9B55, (q15_t)0x4F0F, (q15_t)0x9B36, (q15_t)0x4EE7, + (q15_t)0x9B17, (q15_t)0x4EBF, (q15_t)0x9AF8, (q15_t)0x4E98, + (q15_t)0x9AD9, (q15_t)0x4E70, (q15_t)0x9ABA, (q15_t)0x4E48, + (q15_t)0x9A9C, (q15_t)0x4E21, (q15_t)0x9A7D, (q15_t)0x4DF9, + (q15_t)0x9A5F, (q15_t)0x4DD1, (q15_t)0x9A40, (q15_t)0x4DA9, + (q15_t)0x9A22, (q15_t)0x4D81, (q15_t)0x9A03, (q15_t)0x4D59, + (q15_t)0x99E5, (q15_t)0x4D31, (q15_t)0x99C6, (q15_t)0x4D09, + (q15_t)0x99A8, (q15_t)0x4CE1, (q15_t)0x998A, (q15_t)0x4CB8, + (q15_t)0x996C, (q15_t)0x4C90, (q15_t)0x994E, (q15_t)0x4C68, + (q15_t)0x9930, (q15_t)0x4C3F, (q15_t)0x9912, (q15_t)0x4C17, + (q15_t)0x98F4, (q15_t)0x4BEF, (q15_t)0x98D6, (q15_t)0x4BC6, + (q15_t)0x98B9, (q15_t)0x4B9E, (q15_t)0x989B, (q15_t)0x4B75, + (q15_t)0x987D, (q15_t)0x4B4C, (q15_t)0x9860, (q15_t)0x4B24, + (q15_t)0x9842, (q15_t)0x4AFB, (q15_t)0x9825, (q15_t)0x4AD2, + (q15_t)0x9808, (q15_t)0x4AA9, (q15_t)0x97EA, (q15_t)0x4A81, + (q15_t)0x97CD, (q15_t)0x4A58, (q15_t)0x97B0, (q15_t)0x4A2F, + (q15_t)0x9793, (q15_t)0x4A06, (q15_t)0x9776, (q15_t)0x49DD, + (q15_t)0x9759, (q15_t)0x49B4, (q15_t)0x973C, (q15_t)0x498A, + (q15_t)0x971F, (q15_t)0x4961, (q15_t)0x9702, (q15_t)0x4938, + (q15_t)0x96E6, (q15_t)0x490F, (q15_t)0x96C9, (q15_t)0x48E6, + (q15_t)0x96AC, (q15_t)0x48BC, (q15_t)0x9690, (q15_t)0x4893, + (q15_t)0x9673, (q15_t)0x4869, (q15_t)0x9657, (q15_t)0x4840, + (q15_t)0x963B, (q15_t)0x4816, (q15_t)0x961E, (q15_t)0x47ED, + (q15_t)0x9602, (q15_t)0x47C3, (q15_t)0x95E6, (q15_t)0x479A, + (q15_t)0x95CA, (q15_t)0x4770, (q15_t)0x95AE, (q15_t)0x4746, + (q15_t)0x9592, (q15_t)0x471C, (q15_t)0x9576, (q15_t)0x46F3, + (q15_t)0x955A, (q15_t)0x46C9, (q15_t)0x953E, (q15_t)0x469F, + (q15_t)0x9523, (q15_t)0x4675, (q15_t)0x9507, (q15_t)0x464B, + (q15_t)0x94EC, (q15_t)0x4621, (q15_t)0x94D0, (q15_t)0x45F7, + (q15_t)0x94B5, (q15_t)0x45CD, (q15_t)0x9499, (q15_t)0x45A3, + (q15_t)0x947E, (q15_t)0x4578, (q15_t)0x9463, (q15_t)0x454E, + (q15_t)0x9447, (q15_t)0x4524, (q15_t)0x942C, (q15_t)0x44FA, + (q15_t)0x9411, (q15_t)0x44CF, (q15_t)0x93F6, (q15_t)0x44A5, + (q15_t)0x93DB, (q15_t)0x447A, (q15_t)0x93C0, (q15_t)0x4450, + (q15_t)0x93A6, (q15_t)0x4425, (q15_t)0x938B, (q15_t)0x43FB, + (q15_t)0x9370, (q15_t)0x43D0, (q15_t)0x9356, (q15_t)0x43A5, + (q15_t)0x933B, (q15_t)0x437B, (q15_t)0x9321, (q15_t)0x4350, + (q15_t)0x9306, (q15_t)0x4325, (q15_t)0x92EC, (q15_t)0x42FA, + (q15_t)0x92D2, (q15_t)0x42D0, (q15_t)0x92B7, (q15_t)0x42A5, + (q15_t)0x929D, (q15_t)0x427A, (q15_t)0x9283, (q15_t)0x424F, + (q15_t)0x9269, (q15_t)0x4224, (q15_t)0x924F, (q15_t)0x41F9, + (q15_t)0x9235, (q15_t)0x41CE, (q15_t)0x921C, (q15_t)0x41A2, + (q15_t)0x9202, (q15_t)0x4177, (q15_t)0x91E8, (q15_t)0x414C, + (q15_t)0x91CF, (q15_t)0x4121, (q15_t)0x91B5, (q15_t)0x40F6, + (q15_t)0x919C, (q15_t)0x40CA, (q15_t)0x9182, (q15_t)0x409F, + (q15_t)0x9169, (q15_t)0x4073, (q15_t)0x9150, (q15_t)0x4048, + (q15_t)0x9136, (q15_t)0x401D, (q15_t)0x911D, (q15_t)0x3FF1, + (q15_t)0x9104, (q15_t)0x3FC5, (q15_t)0x90EB, (q15_t)0x3F9A, + (q15_t)0x90D2, (q15_t)0x3F6E, (q15_t)0x90B9, (q15_t)0x3F43, + (q15_t)0x90A0, (q15_t)0x3F17, (q15_t)0x9088, (q15_t)0x3EEB, + (q15_t)0x906F, (q15_t)0x3EBF, (q15_t)0x9056, (q15_t)0x3E93, + (q15_t)0x903E, (q15_t)0x3E68, (q15_t)0x9025, (q15_t)0x3E3C, + (q15_t)0x900D, (q15_t)0x3E10, (q15_t)0x8FF5, (q15_t)0x3DE4, + (q15_t)0x8FDC, (q15_t)0x3DB8, (q15_t)0x8FC4, (q15_t)0x3D8C, + (q15_t)0x8FAC, (q15_t)0x3D60, (q15_t)0x8F94, (q15_t)0x3D33, + (q15_t)0x8F7C, (q15_t)0x3D07, (q15_t)0x8F64, (q15_t)0x3CDB, + (q15_t)0x8F4C, (q15_t)0x3CAF, (q15_t)0x8F34, (q15_t)0x3C83, + (q15_t)0x8F1D, (q15_t)0x3C56, (q15_t)0x8F05, (q15_t)0x3C2A, + (q15_t)0x8EED, (q15_t)0x3BFD, (q15_t)0x8ED6, (q15_t)0x3BD1, + (q15_t)0x8EBE, (q15_t)0x3BA5, (q15_t)0x8EA7, (q15_t)0x3B78, + (q15_t)0x8E90, (q15_t)0x3B4C, (q15_t)0x8E79, (q15_t)0x3B1F, + (q15_t)0x8E61, (q15_t)0x3AF2, (q15_t)0x8E4A, (q15_t)0x3AC6, + (q15_t)0x8E33, (q15_t)0x3A99, (q15_t)0x8E1C, (q15_t)0x3A6C, + (q15_t)0x8E05, (q15_t)0x3A40, (q15_t)0x8DEE, (q15_t)0x3A13, + (q15_t)0x8DD8, (q15_t)0x39E6, (q15_t)0x8DC1, (q15_t)0x39B9, + (q15_t)0x8DAA, (q15_t)0x398C, (q15_t)0x8D94, (q15_t)0x395F, + (q15_t)0x8D7D, (q15_t)0x3932, (q15_t)0x8D67, (q15_t)0x3906, + (q15_t)0x8D50, (q15_t)0x38D8, (q15_t)0x8D3A, (q15_t)0x38AB, + (q15_t)0x8D24, (q15_t)0x387E, (q15_t)0x8D0E, (q15_t)0x3851, + (q15_t)0x8CF8, (q15_t)0x3824, (q15_t)0x8CE2, (q15_t)0x37F7, + (q15_t)0x8CCC, (q15_t)0x37CA, (q15_t)0x8CB6, (q15_t)0x379C, + (q15_t)0x8CA0, (q15_t)0x376F, (q15_t)0x8C8A, (q15_t)0x3742, + (q15_t)0x8C75, (q15_t)0x3714, (q15_t)0x8C5F, (q15_t)0x36E7, + (q15_t)0x8C4A, (q15_t)0x36BA, (q15_t)0x8C34, (q15_t)0x368C, + (q15_t)0x8C1F, (q15_t)0x365F, (q15_t)0x8C09, (q15_t)0x3631, + (q15_t)0x8BF4, (q15_t)0x3604, (q15_t)0x8BDF, (q15_t)0x35D6, + (q15_t)0x8BCA, (q15_t)0x35A8, (q15_t)0x8BB5, (q15_t)0x357B, + (q15_t)0x8BA0, (q15_t)0x354D, (q15_t)0x8B8B, (q15_t)0x351F, + (q15_t)0x8B76, (q15_t)0x34F2, (q15_t)0x8B61, (q15_t)0x34C4, + (q15_t)0x8B4D, (q15_t)0x3496, (q15_t)0x8B38, (q15_t)0x3468, + (q15_t)0x8B24, (q15_t)0x343A, (q15_t)0x8B0F, (q15_t)0x340C, + (q15_t)0x8AFB, (q15_t)0x33DE, (q15_t)0x8AE6, (q15_t)0x33B0, + (q15_t)0x8AD2, (q15_t)0x3382, (q15_t)0x8ABE, (q15_t)0x3354, + (q15_t)0x8AAA, (q15_t)0x3326, (q15_t)0x8A96, (q15_t)0x32F8, + (q15_t)0x8A82, (q15_t)0x32CA, (q15_t)0x8A6E, (q15_t)0x329C, + (q15_t)0x8A5A, (q15_t)0x326E, (q15_t)0x8A46, (q15_t)0x3240, + (q15_t)0x8A33, (q15_t)0x3211, (q15_t)0x8A1F, (q15_t)0x31E3, + (q15_t)0x8A0B, (q15_t)0x31B5, (q15_t)0x89F8, (q15_t)0x3186, + (q15_t)0x89E4, (q15_t)0x3158, (q15_t)0x89D1, (q15_t)0x312A, + (q15_t)0x89BE, (q15_t)0x30FB, (q15_t)0x89AB, (q15_t)0x30CD, + (q15_t)0x8997, (q15_t)0x309E, (q15_t)0x8984, (q15_t)0x3070, + (q15_t)0x8971, (q15_t)0x3041, (q15_t)0x895F, (q15_t)0x3013, + (q15_t)0x894C, (q15_t)0x2FE4, (q15_t)0x8939, (q15_t)0x2FB5, + (q15_t)0x8926, (q15_t)0x2F87, (q15_t)0x8914, (q15_t)0x2F58, + (q15_t)0x8901, (q15_t)0x2F29, (q15_t)0x88EF, (q15_t)0x2EFB, + (q15_t)0x88DC, (q15_t)0x2ECC, (q15_t)0x88CA, (q15_t)0x2E9D, + (q15_t)0x88B8, (q15_t)0x2E6E, (q15_t)0x88A5, (q15_t)0x2E3F, + (q15_t)0x8893, (q15_t)0x2E11, (q15_t)0x8881, (q15_t)0x2DE2, + (q15_t)0x886F, (q15_t)0x2DB3, (q15_t)0x885D, (q15_t)0x2D84, + (q15_t)0x884B, (q15_t)0x2D55, (q15_t)0x883A, (q15_t)0x2D26, + (q15_t)0x8828, (q15_t)0x2CF7, (q15_t)0x8816, (q15_t)0x2CC8, + (q15_t)0x8805, (q15_t)0x2C98, (q15_t)0x87F3, (q15_t)0x2C69, + (q15_t)0x87E2, (q15_t)0x2C3A, (q15_t)0x87D1, (q15_t)0x2C0B, + (q15_t)0x87BF, (q15_t)0x2BDC, (q15_t)0x87AE, (q15_t)0x2BAD, + (q15_t)0x879D, (q15_t)0x2B7D, (q15_t)0x878C, (q15_t)0x2B4E, + (q15_t)0x877B, (q15_t)0x2B1F, (q15_t)0x876A, (q15_t)0x2AEF, + (q15_t)0x8759, (q15_t)0x2AC0, (q15_t)0x8749, (q15_t)0x2A91, + (q15_t)0x8738, (q15_t)0x2A61, (q15_t)0x8727, (q15_t)0x2A32, + (q15_t)0x8717, (q15_t)0x2A02, (q15_t)0x8706, (q15_t)0x29D3, + (q15_t)0x86F6, (q15_t)0x29A3, (q15_t)0x86E6, (q15_t)0x2974, + (q15_t)0x86D5, (q15_t)0x2944, (q15_t)0x86C5, (q15_t)0x2915, + (q15_t)0x86B5, (q15_t)0x28E5, (q15_t)0x86A5, (q15_t)0x28B5, + (q15_t)0x8695, (q15_t)0x2886, (q15_t)0x8685, (q15_t)0x2856, + (q15_t)0x8675, (q15_t)0x2826, (q15_t)0x8666, (q15_t)0x27F6, + (q15_t)0x8656, (q15_t)0x27C7, (q15_t)0x8646, (q15_t)0x2797, + (q15_t)0x8637, (q15_t)0x2767, (q15_t)0x8627, (q15_t)0x2737, + (q15_t)0x8618, (q15_t)0x2707, (q15_t)0x8609, (q15_t)0x26D8, + (q15_t)0x85FA, (q15_t)0x26A8, (q15_t)0x85EA, (q15_t)0x2678, + (q15_t)0x85DB, (q15_t)0x2648, (q15_t)0x85CC, (q15_t)0x2618, + (q15_t)0x85BD, (q15_t)0x25E8, (q15_t)0x85AF, (q15_t)0x25B8, + (q15_t)0x85A0, (q15_t)0x2588, (q15_t)0x8591, (q15_t)0x2558, + (q15_t)0x8582, (q15_t)0x2528, (q15_t)0x8574, (q15_t)0x24F7, + (q15_t)0x8565, (q15_t)0x24C7, (q15_t)0x8557, (q15_t)0x2497, + (q15_t)0x8549, (q15_t)0x2467, (q15_t)0x853A, (q15_t)0x2437, + (q15_t)0x852C, (q15_t)0x2407, (q15_t)0x851E, (q15_t)0x23D6, + (q15_t)0x8510, (q15_t)0x23A6, (q15_t)0x8502, (q15_t)0x2376, + (q15_t)0x84F4, (q15_t)0x2345, (q15_t)0x84E6, (q15_t)0x2315, + (q15_t)0x84D9, (q15_t)0x22E5, (q15_t)0x84CB, (q15_t)0x22B4, + (q15_t)0x84BD, (q15_t)0x2284, (q15_t)0x84B0, (q15_t)0x2254, + (q15_t)0x84A2, (q15_t)0x2223, (q15_t)0x8495, (q15_t)0x21F3, + (q15_t)0x8488, (q15_t)0x21C2, (q15_t)0x847B, (q15_t)0x2192, + (q15_t)0x846D, (q15_t)0x2161, (q15_t)0x8460, (q15_t)0x2131, + (q15_t)0x8453, (q15_t)0x2100, (q15_t)0x8446, (q15_t)0x20D0, + (q15_t)0x843A, (q15_t)0x209F, (q15_t)0x842D, (q15_t)0x206E, + (q15_t)0x8420, (q15_t)0x203E, (q15_t)0x8414, (q15_t)0x200D, + (q15_t)0x8407, (q15_t)0x1FDC, (q15_t)0x83FA, (q15_t)0x1FAC, + (q15_t)0x83EE, (q15_t)0x1F7B, (q15_t)0x83E2, (q15_t)0x1F4A, + (q15_t)0x83D6, (q15_t)0x1F19, (q15_t)0x83C9, (q15_t)0x1EE9, + (q15_t)0x83BD, (q15_t)0x1EB8, (q15_t)0x83B1, (q15_t)0x1E87, + (q15_t)0x83A5, (q15_t)0x1E56, (q15_t)0x8399, (q15_t)0x1E25, + (q15_t)0x838E, (q15_t)0x1DF5, (q15_t)0x8382, (q15_t)0x1DC4, + (q15_t)0x8376, (q15_t)0x1D93, (q15_t)0x836B, (q15_t)0x1D62, + (q15_t)0x835F, (q15_t)0x1D31, (q15_t)0x8354, (q15_t)0x1D00, + (q15_t)0x8348, (q15_t)0x1CCF, (q15_t)0x833D, (q15_t)0x1C9E, + (q15_t)0x8332, (q15_t)0x1C6D, (q15_t)0x8327, (q15_t)0x1C3C, + (q15_t)0x831C, (q15_t)0x1C0B, (q15_t)0x8311, (q15_t)0x1BDA, + (q15_t)0x8306, (q15_t)0x1BA9, (q15_t)0x82FB, (q15_t)0x1B78, + (q15_t)0x82F0, (q15_t)0x1B47, (q15_t)0x82E6, (q15_t)0x1B16, + (q15_t)0x82DB, (q15_t)0x1AE4, (q15_t)0x82D0, (q15_t)0x1AB3, + (q15_t)0x82C6, (q15_t)0x1A82, (q15_t)0x82BC, (q15_t)0x1A51, + (q15_t)0x82B1, (q15_t)0x1A20, (q15_t)0x82A7, (q15_t)0x19EF, + (q15_t)0x829D, (q15_t)0x19BD, (q15_t)0x8293, (q15_t)0x198C, + (q15_t)0x8289, (q15_t)0x195B, (q15_t)0x827F, (q15_t)0x192A, + (q15_t)0x8275, (q15_t)0x18F8, (q15_t)0x826B, (q15_t)0x18C7, + (q15_t)0x8262, (q15_t)0x1896, (q15_t)0x8258, (q15_t)0x1864, + (q15_t)0x824F, (q15_t)0x1833, (q15_t)0x8245, (q15_t)0x1802, + (q15_t)0x823C, (q15_t)0x17D0, (q15_t)0x8232, (q15_t)0x179F, + (q15_t)0x8229, (q15_t)0x176D, (q15_t)0x8220, (q15_t)0x173C, + (q15_t)0x8217, (q15_t)0x170A, (q15_t)0x820E, (q15_t)0x16D9, + (q15_t)0x8205, (q15_t)0x16A8, (q15_t)0x81FC, (q15_t)0x1676, + (q15_t)0x81F3, (q15_t)0x1645, (q15_t)0x81EB, (q15_t)0x1613, + (q15_t)0x81E2, (q15_t)0x15E2, (q15_t)0x81D9, (q15_t)0x15B0, + (q15_t)0x81D1, (q15_t)0x157F, (q15_t)0x81C8, (q15_t)0x154D, + (q15_t)0x81C0, (q15_t)0x151B, (q15_t)0x81B8, (q15_t)0x14EA, + (q15_t)0x81B0, (q15_t)0x14B8, (q15_t)0x81A8, (q15_t)0x1487, + (q15_t)0x81A0, (q15_t)0x1455, (q15_t)0x8198, (q15_t)0x1423, + (q15_t)0x8190, (q15_t)0x13F2, (q15_t)0x8188, (q15_t)0x13C0, + (q15_t)0x8180, (q15_t)0x138E, (q15_t)0x8179, (q15_t)0x135D, + (q15_t)0x8171, (q15_t)0x132B, (q15_t)0x816A, (q15_t)0x12F9, + (q15_t)0x8162, (q15_t)0x12C8, (q15_t)0x815B, (q15_t)0x1296, + (q15_t)0x8154, (q15_t)0x1264, (q15_t)0x814C, (q15_t)0x1232, + (q15_t)0x8145, (q15_t)0x1201, (q15_t)0x813E, (q15_t)0x11CF, + (q15_t)0x8137, (q15_t)0x119D, (q15_t)0x8130, (q15_t)0x116B, + (q15_t)0x812A, (q15_t)0x1139, (q15_t)0x8123, (q15_t)0x1108, + (q15_t)0x811C, (q15_t)0x10D6, (q15_t)0x8116, (q15_t)0x10A4, + (q15_t)0x810F, (q15_t)0x1072, (q15_t)0x8109, (q15_t)0x1040, + (q15_t)0x8102, (q15_t)0x100E, (q15_t)0x80FC, (q15_t)0x0FDD, + (q15_t)0x80F6, (q15_t)0x0FAB, (q15_t)0x80F0, (q15_t)0x0F79, + (q15_t)0x80EA, (q15_t)0x0F47, (q15_t)0x80E4, (q15_t)0x0F15, + (q15_t)0x80DE, (q15_t)0x0EE3, (q15_t)0x80D8, (q15_t)0x0EB1, + (q15_t)0x80D2, (q15_t)0x0E7F, (q15_t)0x80CD, (q15_t)0x0E4D, + (q15_t)0x80C7, (q15_t)0x0E1B, (q15_t)0x80C2, (q15_t)0x0DE9, + (q15_t)0x80BC, (q15_t)0x0DB7, (q15_t)0x80B7, (q15_t)0x0D85, + (q15_t)0x80B2, (q15_t)0x0D53, (q15_t)0x80AC, (q15_t)0x0D21, + (q15_t)0x80A7, (q15_t)0x0CEF, (q15_t)0x80A2, (q15_t)0x0CBD, + (q15_t)0x809D, (q15_t)0x0C8B, (q15_t)0x8098, (q15_t)0x0C59, + (q15_t)0x8094, (q15_t)0x0C27, (q15_t)0x808F, (q15_t)0x0BF5, + (q15_t)0x808A, (q15_t)0x0BC3, (q15_t)0x8086, (q15_t)0x0B91, + (q15_t)0x8081, (q15_t)0x0B5F, (q15_t)0x807D, (q15_t)0x0B2D, + (q15_t)0x8078, (q15_t)0x0AFB, (q15_t)0x8074, (q15_t)0x0AC9, + (q15_t)0x8070, (q15_t)0x0A97, (q15_t)0x806C, (q15_t)0x0A65, + (q15_t)0x8068, (q15_t)0x0A33, (q15_t)0x8064, (q15_t)0x0A00, + (q15_t)0x8060, (q15_t)0x09CE, (q15_t)0x805C, (q15_t)0x099C, + (q15_t)0x8058, (q15_t)0x096A, (q15_t)0x8055, (q15_t)0x0938, + (q15_t)0x8051, (q15_t)0x0906, (q15_t)0x804E, (q15_t)0x08D4, + (q15_t)0x804A, (q15_t)0x08A2, (q15_t)0x8047, (q15_t)0x086F, + (q15_t)0x8043, (q15_t)0x083D, (q15_t)0x8040, (q15_t)0x080B, + (q15_t)0x803D, (q15_t)0x07D9, (q15_t)0x803A, (q15_t)0x07A7, + (q15_t)0x8037, (q15_t)0x0775, (q15_t)0x8034, (q15_t)0x0742, + (q15_t)0x8031, (q15_t)0x0710, (q15_t)0x802F, (q15_t)0x06DE, + (q15_t)0x802C, (q15_t)0x06AC, (q15_t)0x8029, (q15_t)0x067A, + (q15_t)0x8027, (q15_t)0x0647, (q15_t)0x8025, (q15_t)0x0615, + (q15_t)0x8022, (q15_t)0x05E3, (q15_t)0x8020, (q15_t)0x05B1, + (q15_t)0x801E, (q15_t)0x057F, (q15_t)0x801C, (q15_t)0x054C, + (q15_t)0x801A, (q15_t)0x051A, (q15_t)0x8018, (q15_t)0x04E8, + (q15_t)0x8016, (q15_t)0x04B6, (q15_t)0x8014, (q15_t)0x0483, + (q15_t)0x8012, (q15_t)0x0451, (q15_t)0x8011, (q15_t)0x041F, + (q15_t)0x800F, (q15_t)0x03ED, (q15_t)0x800D, (q15_t)0x03BA, + (q15_t)0x800C, (q15_t)0x0388, (q15_t)0x800B, (q15_t)0x0356, + (q15_t)0x8009, (q15_t)0x0324, (q15_t)0x8008, (q15_t)0x02F1, + (q15_t)0x8007, (q15_t)0x02BF, (q15_t)0x8006, (q15_t)0x028D, + (q15_t)0x8005, (q15_t)0x025B, (q15_t)0x8004, (q15_t)0x0228, + (q15_t)0x8003, (q15_t)0x01F6, (q15_t)0x8003, (q15_t)0x01C4, + (q15_t)0x8002, (q15_t)0x0192, (q15_t)0x8001, (q15_t)0x015F, + (q15_t)0x8001, (q15_t)0x012D, (q15_t)0x8000, (q15_t)0x00FB, + (q15_t)0x8000, (q15_t)0x00C9, (q15_t)0x8000, (q15_t)0x0096, + (q15_t)0x8000, (q15_t)0x0064, (q15_t)0x8000, (q15_t)0x0032, + (q15_t)0x8000, (q15_t)0x0000, (q15_t)0x8000, (q15_t)0xFFCD, + (q15_t)0x8000, (q15_t)0xFF9B, (q15_t)0x8000, (q15_t)0xFF69, + (q15_t)0x8000, (q15_t)0xFF36, (q15_t)0x8000, (q15_t)0xFF04, + (q15_t)0x8001, (q15_t)0xFED2, (q15_t)0x8001, (q15_t)0xFEA0, + (q15_t)0x8002, (q15_t)0xFE6D, (q15_t)0x8003, (q15_t)0xFE3B, + (q15_t)0x8003, (q15_t)0xFE09, (q15_t)0x8004, (q15_t)0xFDD7, + (q15_t)0x8005, (q15_t)0xFDA4, (q15_t)0x8006, (q15_t)0xFD72, + (q15_t)0x8007, (q15_t)0xFD40, (q15_t)0x8008, (q15_t)0xFD0E, + (q15_t)0x8009, (q15_t)0xFCDB, (q15_t)0x800B, (q15_t)0xFCA9, + (q15_t)0x800C, (q15_t)0xFC77, (q15_t)0x800D, (q15_t)0xFC45, + (q15_t)0x800F, (q15_t)0xFC12, (q15_t)0x8011, (q15_t)0xFBE0, + (q15_t)0x8012, (q15_t)0xFBAE, (q15_t)0x8014, (q15_t)0xFB7C, + (q15_t)0x8016, (q15_t)0xFB49, (q15_t)0x8018, (q15_t)0xFB17, + (q15_t)0x801A, (q15_t)0xFAE5, (q15_t)0x801C, (q15_t)0xFAB3, + (q15_t)0x801E, (q15_t)0xFA80, (q15_t)0x8020, (q15_t)0xFA4E, + (q15_t)0x8022, (q15_t)0xFA1C, (q15_t)0x8025, (q15_t)0xF9EA, + (q15_t)0x8027, (q15_t)0xF9B8, (q15_t)0x8029, (q15_t)0xF985, + (q15_t)0x802C, (q15_t)0xF953, (q15_t)0x802F, (q15_t)0xF921, + (q15_t)0x8031, (q15_t)0xF8EF, (q15_t)0x8034, (q15_t)0xF8BD, + (q15_t)0x8037, (q15_t)0xF88A, (q15_t)0x803A, (q15_t)0xF858, + (q15_t)0x803D, (q15_t)0xF826, (q15_t)0x8040, (q15_t)0xF7F4, + (q15_t)0x8043, (q15_t)0xF7C2, (q15_t)0x8047, (q15_t)0xF790, + (q15_t)0x804A, (q15_t)0xF75D, (q15_t)0x804E, (q15_t)0xF72B, + (q15_t)0x8051, (q15_t)0xF6F9, (q15_t)0x8055, (q15_t)0xF6C7, + (q15_t)0x8058, (q15_t)0xF695, (q15_t)0x805C, (q15_t)0xF663, + (q15_t)0x8060, (q15_t)0xF631, (q15_t)0x8064, (q15_t)0xF5FF, + (q15_t)0x8068, (q15_t)0xF5CC, (q15_t)0x806C, (q15_t)0xF59A, + (q15_t)0x8070, (q15_t)0xF568, (q15_t)0x8074, (q15_t)0xF536, + (q15_t)0x8078, (q15_t)0xF504, (q15_t)0x807D, (q15_t)0xF4D2, + (q15_t)0x8081, (q15_t)0xF4A0, (q15_t)0x8086, (q15_t)0xF46E, + (q15_t)0x808A, (q15_t)0xF43C, (q15_t)0x808F, (q15_t)0xF40A, + (q15_t)0x8094, (q15_t)0xF3D8, (q15_t)0x8098, (q15_t)0xF3A6, + (q15_t)0x809D, (q15_t)0xF374, (q15_t)0x80A2, (q15_t)0xF342, + (q15_t)0x80A7, (q15_t)0xF310, (q15_t)0x80AC, (q15_t)0xF2DE, + (q15_t)0x80B2, (q15_t)0xF2AC, (q15_t)0x80B7, (q15_t)0xF27A, + (q15_t)0x80BC, (q15_t)0xF248, (q15_t)0x80C2, (q15_t)0xF216, + (q15_t)0x80C7, (q15_t)0xF1E4, (q15_t)0x80CD, (q15_t)0xF1B2, + (q15_t)0x80D2, (q15_t)0xF180, (q15_t)0x80D8, (q15_t)0xF14E, + (q15_t)0x80DE, (q15_t)0xF11C, (q15_t)0x80E4, (q15_t)0xF0EA, + (q15_t)0x80EA, (q15_t)0xF0B8, (q15_t)0x80F0, (q15_t)0xF086, + (q15_t)0x80F6, (q15_t)0xF054, (q15_t)0x80FC, (q15_t)0xF022, + (q15_t)0x8102, (q15_t)0xEFF1, (q15_t)0x8109, (q15_t)0xEFBF, + (q15_t)0x810F, (q15_t)0xEF8D, (q15_t)0x8116, (q15_t)0xEF5B, + (q15_t)0x811C, (q15_t)0xEF29, (q15_t)0x8123, (q15_t)0xEEF7, + (q15_t)0x812A, (q15_t)0xEEC6, (q15_t)0x8130, (q15_t)0xEE94, + (q15_t)0x8137, (q15_t)0xEE62, (q15_t)0x813E, (q15_t)0xEE30, + (q15_t)0x8145, (q15_t)0xEDFE, (q15_t)0x814C, (q15_t)0xEDCD, + (q15_t)0x8154, (q15_t)0xED9B, (q15_t)0x815B, (q15_t)0xED69, + (q15_t)0x8162, (q15_t)0xED37, (q15_t)0x816A, (q15_t)0xED06, + (q15_t)0x8171, (q15_t)0xECD4, (q15_t)0x8179, (q15_t)0xECA2, + (q15_t)0x8180, (q15_t)0xEC71, (q15_t)0x8188, (q15_t)0xEC3F, + (q15_t)0x8190, (q15_t)0xEC0D, (q15_t)0x8198, (q15_t)0xEBDC, + (q15_t)0x81A0, (q15_t)0xEBAA, (q15_t)0x81A8, (q15_t)0xEB78, + (q15_t)0x81B0, (q15_t)0xEB47, (q15_t)0x81B8, (q15_t)0xEB15, + (q15_t)0x81C0, (q15_t)0xEAE4, (q15_t)0x81C8, (q15_t)0xEAB2, + (q15_t)0x81D1, (q15_t)0xEA80, (q15_t)0x81D9, (q15_t)0xEA4F, + (q15_t)0x81E2, (q15_t)0xEA1D, (q15_t)0x81EB, (q15_t)0xE9EC, + (q15_t)0x81F3, (q15_t)0xE9BA, (q15_t)0x81FC, (q15_t)0xE989, + (q15_t)0x8205, (q15_t)0xE957, (q15_t)0x820E, (q15_t)0xE926, + (q15_t)0x8217, (q15_t)0xE8F5, (q15_t)0x8220, (q15_t)0xE8C3, + (q15_t)0x8229, (q15_t)0xE892, (q15_t)0x8232, (q15_t)0xE860, + (q15_t)0x823C, (q15_t)0xE82F, (q15_t)0x8245, (q15_t)0xE7FD, + (q15_t)0x824F, (q15_t)0xE7CC, (q15_t)0x8258, (q15_t)0xE79B, + (q15_t)0x8262, (q15_t)0xE769, (q15_t)0x826B, (q15_t)0xE738, + (q15_t)0x8275, (q15_t)0xE707, (q15_t)0x827F, (q15_t)0xE6D5, + (q15_t)0x8289, (q15_t)0xE6A4, (q15_t)0x8293, (q15_t)0xE673, + (q15_t)0x829D, (q15_t)0xE642, (q15_t)0x82A7, (q15_t)0xE610, + (q15_t)0x82B1, (q15_t)0xE5DF, (q15_t)0x82BC, (q15_t)0xE5AE, + (q15_t)0x82C6, (q15_t)0xE57D, (q15_t)0x82D0, (q15_t)0xE54C, + (q15_t)0x82DB, (q15_t)0xE51B, (q15_t)0x82E6, (q15_t)0xE4E9, + (q15_t)0x82F0, (q15_t)0xE4B8, (q15_t)0x82FB, (q15_t)0xE487, + (q15_t)0x8306, (q15_t)0xE456, (q15_t)0x8311, (q15_t)0xE425, + (q15_t)0x831C, (q15_t)0xE3F4, (q15_t)0x8327, (q15_t)0xE3C3, + (q15_t)0x8332, (q15_t)0xE392, (q15_t)0x833D, (q15_t)0xE361, + (q15_t)0x8348, (q15_t)0xE330, (q15_t)0x8354, (q15_t)0xE2FF, + (q15_t)0x835F, (q15_t)0xE2CE, (q15_t)0x836B, (q15_t)0xE29D, + (q15_t)0x8376, (q15_t)0xE26C, (q15_t)0x8382, (q15_t)0xE23B, + (q15_t)0x838E, (q15_t)0xE20A, (q15_t)0x8399, (q15_t)0xE1DA, + (q15_t)0x83A5, (q15_t)0xE1A9, (q15_t)0x83B1, (q15_t)0xE178, + (q15_t)0x83BD, (q15_t)0xE147, (q15_t)0x83C9, (q15_t)0xE116, + (q15_t)0x83D6, (q15_t)0xE0E6, (q15_t)0x83E2, (q15_t)0xE0B5, + (q15_t)0x83EE, (q15_t)0xE084, (q15_t)0x83FA, (q15_t)0xE053, + (q15_t)0x8407, (q15_t)0xE023, (q15_t)0x8414, (q15_t)0xDFF2, + (q15_t)0x8420, (q15_t)0xDFC1, (q15_t)0x842D, (q15_t)0xDF91, + (q15_t)0x843A, (q15_t)0xDF60, (q15_t)0x8446, (q15_t)0xDF2F, + (q15_t)0x8453, (q15_t)0xDEFF, (q15_t)0x8460, (q15_t)0xDECE, + (q15_t)0x846D, (q15_t)0xDE9E, (q15_t)0x847B, (q15_t)0xDE6D, + (q15_t)0x8488, (q15_t)0xDE3D, (q15_t)0x8495, (q15_t)0xDE0C, + (q15_t)0x84A2, (q15_t)0xDDDC, (q15_t)0x84B0, (q15_t)0xDDAB, + (q15_t)0x84BD, (q15_t)0xDD7B, (q15_t)0x84CB, (q15_t)0xDD4B, + (q15_t)0x84D9, (q15_t)0xDD1A, (q15_t)0x84E6, (q15_t)0xDCEA, + (q15_t)0x84F4, (q15_t)0xDCBA, (q15_t)0x8502, (q15_t)0xDC89, + (q15_t)0x8510, (q15_t)0xDC59, (q15_t)0x851E, (q15_t)0xDC29, + (q15_t)0x852C, (q15_t)0xDBF8, (q15_t)0x853A, (q15_t)0xDBC8, + (q15_t)0x8549, (q15_t)0xDB98, (q15_t)0x8557, (q15_t)0xDB68, + (q15_t)0x8565, (q15_t)0xDB38, (q15_t)0x8574, (q15_t)0xDB08, + (q15_t)0x8582, (q15_t)0xDAD7, (q15_t)0x8591, (q15_t)0xDAA7, + (q15_t)0x85A0, (q15_t)0xDA77, (q15_t)0x85AF, (q15_t)0xDA47, + (q15_t)0x85BD, (q15_t)0xDA17, (q15_t)0x85CC, (q15_t)0xD9E7, + (q15_t)0x85DB, (q15_t)0xD9B7, (q15_t)0x85EA, (q15_t)0xD987, + (q15_t)0x85FA, (q15_t)0xD957, (q15_t)0x8609, (q15_t)0xD927, + (q15_t)0x8618, (q15_t)0xD8F8, (q15_t)0x8627, (q15_t)0xD8C8, + (q15_t)0x8637, (q15_t)0xD898, (q15_t)0x8646, (q15_t)0xD868, + (q15_t)0x8656, (q15_t)0xD838, (q15_t)0x8666, (q15_t)0xD809, + (q15_t)0x8675, (q15_t)0xD7D9, (q15_t)0x8685, (q15_t)0xD7A9, + (q15_t)0x8695, (q15_t)0xD779, (q15_t)0x86A5, (q15_t)0xD74A, + (q15_t)0x86B5, (q15_t)0xD71A, (q15_t)0x86C5, (q15_t)0xD6EA, + (q15_t)0x86D5, (q15_t)0xD6BB, (q15_t)0x86E6, (q15_t)0xD68B, + (q15_t)0x86F6, (q15_t)0xD65C, (q15_t)0x8706, (q15_t)0xD62C, + (q15_t)0x8717, (q15_t)0xD5FD, (q15_t)0x8727, (q15_t)0xD5CD, + (q15_t)0x8738, (q15_t)0xD59E, (q15_t)0x8749, (q15_t)0xD56E, + (q15_t)0x8759, (q15_t)0xD53F, (q15_t)0x876A, (q15_t)0xD510, + (q15_t)0x877B, (q15_t)0xD4E0, (q15_t)0x878C, (q15_t)0xD4B1, + (q15_t)0x879D, (q15_t)0xD482, (q15_t)0x87AE, (q15_t)0xD452, + (q15_t)0x87BF, (q15_t)0xD423, (q15_t)0x87D1, (q15_t)0xD3F4, + (q15_t)0x87E2, (q15_t)0xD3C5, (q15_t)0x87F3, (q15_t)0xD396, + (q15_t)0x8805, (q15_t)0xD367, (q15_t)0x8816, (q15_t)0xD337, + (q15_t)0x8828, (q15_t)0xD308, (q15_t)0x883A, (q15_t)0xD2D9, + (q15_t)0x884B, (q15_t)0xD2AA, (q15_t)0x885D, (q15_t)0xD27B, + (q15_t)0x886F, (q15_t)0xD24C, (q15_t)0x8881, (q15_t)0xD21D, + (q15_t)0x8893, (q15_t)0xD1EE, (q15_t)0x88A5, (q15_t)0xD1C0, + (q15_t)0x88B8, (q15_t)0xD191, (q15_t)0x88CA, (q15_t)0xD162, + (q15_t)0x88DC, (q15_t)0xD133, (q15_t)0x88EF, (q15_t)0xD104, + (q15_t)0x8901, (q15_t)0xD0D6, (q15_t)0x8914, (q15_t)0xD0A7, + (q15_t)0x8926, (q15_t)0xD078, (q15_t)0x8939, (q15_t)0xD04A, + (q15_t)0x894C, (q15_t)0xD01B, (q15_t)0x895F, (q15_t)0xCFEC, + (q15_t)0x8971, (q15_t)0xCFBE, (q15_t)0x8984, (q15_t)0xCF8F, + (q15_t)0x8997, (q15_t)0xCF61, (q15_t)0x89AB, (q15_t)0xCF32, + (q15_t)0x89BE, (q15_t)0xCF04, (q15_t)0x89D1, (q15_t)0xCED5, + (q15_t)0x89E4, (q15_t)0xCEA7, (q15_t)0x89F8, (q15_t)0xCE79, + (q15_t)0x8A0B, (q15_t)0xCE4A, (q15_t)0x8A1F, (q15_t)0xCE1C, + (q15_t)0x8A33, (q15_t)0xCDEE, (q15_t)0x8A46, (q15_t)0xCDBF, + (q15_t)0x8A5A, (q15_t)0xCD91, (q15_t)0x8A6E, (q15_t)0xCD63, + (q15_t)0x8A82, (q15_t)0xCD35, (q15_t)0x8A96, (q15_t)0xCD07, + (q15_t)0x8AAA, (q15_t)0xCCD9, (q15_t)0x8ABE, (q15_t)0xCCAB, + (q15_t)0x8AD2, (q15_t)0xCC7D, (q15_t)0x8AE6, (q15_t)0xCC4F, + (q15_t)0x8AFB, (q15_t)0xCC21, (q15_t)0x8B0F, (q15_t)0xCBF3, + (q15_t)0x8B24, (q15_t)0xCBC5, (q15_t)0x8B38, (q15_t)0xCB97, + (q15_t)0x8B4D, (q15_t)0xCB69, (q15_t)0x8B61, (q15_t)0xCB3B, + (q15_t)0x8B76, (q15_t)0xCB0D, (q15_t)0x8B8B, (q15_t)0xCAE0, + (q15_t)0x8BA0, (q15_t)0xCAB2, (q15_t)0x8BB5, (q15_t)0xCA84, + (q15_t)0x8BCA, (q15_t)0xCA57, (q15_t)0x8BDF, (q15_t)0xCA29, + (q15_t)0x8BF4, (q15_t)0xC9FB, (q15_t)0x8C09, (q15_t)0xC9CE, + (q15_t)0x8C1F, (q15_t)0xC9A0, (q15_t)0x8C34, (q15_t)0xC973, + (q15_t)0x8C4A, (q15_t)0xC945, (q15_t)0x8C5F, (q15_t)0xC918, + (q15_t)0x8C75, (q15_t)0xC8EB, (q15_t)0x8C8A, (q15_t)0xC8BD, + (q15_t)0x8CA0, (q15_t)0xC890, (q15_t)0x8CB6, (q15_t)0xC863, + (q15_t)0x8CCC, (q15_t)0xC835, (q15_t)0x8CE2, (q15_t)0xC808, + (q15_t)0x8CF8, (q15_t)0xC7DB, (q15_t)0x8D0E, (q15_t)0xC7AE, + (q15_t)0x8D24, (q15_t)0xC781, (q15_t)0x8D3A, (q15_t)0xC754, + (q15_t)0x8D50, (q15_t)0xC727, (q15_t)0x8D67, (q15_t)0xC6F9, + (q15_t)0x8D7D, (q15_t)0xC6CD, (q15_t)0x8D94, (q15_t)0xC6A0, + (q15_t)0x8DAA, (q15_t)0xC673, (q15_t)0x8DC1, (q15_t)0xC646, + (q15_t)0x8DD8, (q15_t)0xC619, (q15_t)0x8DEE, (q15_t)0xC5EC, + (q15_t)0x8E05, (q15_t)0xC5BF, (q15_t)0x8E1C, (q15_t)0xC593, + (q15_t)0x8E33, (q15_t)0xC566, (q15_t)0x8E4A, (q15_t)0xC539, + (q15_t)0x8E61, (q15_t)0xC50D, (q15_t)0x8E79, (q15_t)0xC4E0, + (q15_t)0x8E90, (q15_t)0xC4B3, (q15_t)0x8EA7, (q15_t)0xC487, + (q15_t)0x8EBE, (q15_t)0xC45A, (q15_t)0x8ED6, (q15_t)0xC42E, + (q15_t)0x8EED, (q15_t)0xC402, (q15_t)0x8F05, (q15_t)0xC3D5, + (q15_t)0x8F1D, (q15_t)0xC3A9, (q15_t)0x8F34, (q15_t)0xC37C, + (q15_t)0x8F4C, (q15_t)0xC350, (q15_t)0x8F64, (q15_t)0xC324, + (q15_t)0x8F7C, (q15_t)0xC2F8, (q15_t)0x8F94, (q15_t)0xC2CC, + (q15_t)0x8FAC, (q15_t)0xC29F, (q15_t)0x8FC4, (q15_t)0xC273, + (q15_t)0x8FDC, (q15_t)0xC247, (q15_t)0x8FF5, (q15_t)0xC21B, + (q15_t)0x900D, (q15_t)0xC1EF, (q15_t)0x9025, (q15_t)0xC1C3, + (q15_t)0x903E, (q15_t)0xC197, (q15_t)0x9056, (q15_t)0xC16C, + (q15_t)0x906F, (q15_t)0xC140, (q15_t)0x9088, (q15_t)0xC114, + (q15_t)0x90A0, (q15_t)0xC0E8, (q15_t)0x90B9, (q15_t)0xC0BC, + (q15_t)0x90D2, (q15_t)0xC091, (q15_t)0x90EB, (q15_t)0xC065, + (q15_t)0x9104, (q15_t)0xC03A, (q15_t)0x911D, (q15_t)0xC00E, + (q15_t)0x9136, (q15_t)0xBFE2, (q15_t)0x9150, (q15_t)0xBFB7, + (q15_t)0x9169, (q15_t)0xBF8C, (q15_t)0x9182, (q15_t)0xBF60, + (q15_t)0x919C, (q15_t)0xBF35, (q15_t)0x91B5, (q15_t)0xBF09, + (q15_t)0x91CF, (q15_t)0xBEDE, (q15_t)0x91E8, (q15_t)0xBEB3, + (q15_t)0x9202, (q15_t)0xBE88, (q15_t)0x921C, (q15_t)0xBE5D, + (q15_t)0x9235, (q15_t)0xBE31, (q15_t)0x924F, (q15_t)0xBE06, + (q15_t)0x9269, (q15_t)0xBDDB, (q15_t)0x9283, (q15_t)0xBDB0, + (q15_t)0x929D, (q15_t)0xBD85, (q15_t)0x92B7, (q15_t)0xBD5A, + (q15_t)0x92D2, (q15_t)0xBD2F, (q15_t)0x92EC, (q15_t)0xBD05, + (q15_t)0x9306, (q15_t)0xBCDA, (q15_t)0x9321, (q15_t)0xBCAF, + (q15_t)0x933B, (q15_t)0xBC84, (q15_t)0x9356, (q15_t)0xBC5A, + (q15_t)0x9370, (q15_t)0xBC2F, (q15_t)0x938B, (q15_t)0xBC04, + (q15_t)0x93A6, (q15_t)0xBBDA, (q15_t)0x93C0, (q15_t)0xBBAF, + (q15_t)0x93DB, (q15_t)0xBB85, (q15_t)0x93F6, (q15_t)0xBB5A, + (q15_t)0x9411, (q15_t)0xBB30, (q15_t)0x942C, (q15_t)0xBB05, + (q15_t)0x9447, (q15_t)0xBADB, (q15_t)0x9463, (q15_t)0xBAB1, + (q15_t)0x947E, (q15_t)0xBA87, (q15_t)0x9499, (q15_t)0xBA5C, + (q15_t)0x94B5, (q15_t)0xBA32, (q15_t)0x94D0, (q15_t)0xBA08, + (q15_t)0x94EC, (q15_t)0xB9DE, (q15_t)0x9507, (q15_t)0xB9B4, + (q15_t)0x9523, (q15_t)0xB98A, (q15_t)0x953E, (q15_t)0xB960, + (q15_t)0x955A, (q15_t)0xB936, (q15_t)0x9576, (q15_t)0xB90C, + (q15_t)0x9592, (q15_t)0xB8E3, (q15_t)0x95AE, (q15_t)0xB8B9, + (q15_t)0x95CA, (q15_t)0xB88F, (q15_t)0x95E6, (q15_t)0xB865, + (q15_t)0x9602, (q15_t)0xB83C, (q15_t)0x961E, (q15_t)0xB812, + (q15_t)0x963B, (q15_t)0xB7E9, (q15_t)0x9657, (q15_t)0xB7BF, + (q15_t)0x9673, (q15_t)0xB796, (q15_t)0x9690, (q15_t)0xB76C, + (q15_t)0x96AC, (q15_t)0xB743, (q15_t)0x96C9, (q15_t)0xB719, + (q15_t)0x96E6, (q15_t)0xB6F0, (q15_t)0x9702, (q15_t)0xB6C7, + (q15_t)0x971F, (q15_t)0xB69E, (q15_t)0x973C, (q15_t)0xB675, + (q15_t)0x9759, (q15_t)0xB64B, (q15_t)0x9776, (q15_t)0xB622, + (q15_t)0x9793, (q15_t)0xB5F9, (q15_t)0x97B0, (q15_t)0xB5D0, + (q15_t)0x97CD, (q15_t)0xB5A7, (q15_t)0x97EA, (q15_t)0xB57E, + (q15_t)0x9808, (q15_t)0xB556, (q15_t)0x9825, (q15_t)0xB52D, + (q15_t)0x9842, (q15_t)0xB504, (q15_t)0x9860, (q15_t)0xB4DB, + (q15_t)0x987D, (q15_t)0xB4B3, (q15_t)0x989B, (q15_t)0xB48A, + (q15_t)0x98B9, (q15_t)0xB461, (q15_t)0x98D6, (q15_t)0xB439, + (q15_t)0x98F4, (q15_t)0xB410, (q15_t)0x9912, (q15_t)0xB3E8, + (q15_t)0x9930, (q15_t)0xB3C0, (q15_t)0x994E, (q15_t)0xB397, + (q15_t)0x996C, (q15_t)0xB36F, (q15_t)0x998A, (q15_t)0xB347, + (q15_t)0x99A8, (q15_t)0xB31E, (q15_t)0x99C6, (q15_t)0xB2F6, + (q15_t)0x99E5, (q15_t)0xB2CE, (q15_t)0x9A03, (q15_t)0xB2A6, + (q15_t)0x9A22, (q15_t)0xB27E, (q15_t)0x9A40, (q15_t)0xB256, + (q15_t)0x9A5F, (q15_t)0xB22E, (q15_t)0x9A7D, (q15_t)0xB206, + (q15_t)0x9A9C, (q15_t)0xB1DE, (q15_t)0x9ABA, (q15_t)0xB1B7, + (q15_t)0x9AD9, (q15_t)0xB18F, (q15_t)0x9AF8, (q15_t)0xB167, + (q15_t)0x9B17, (q15_t)0xB140, (q15_t)0x9B36, (q15_t)0xB118, + (q15_t)0x9B55, (q15_t)0xB0F0, (q15_t)0x9B74, (q15_t)0xB0C9, + (q15_t)0x9B93, (q15_t)0xB0A1, (q15_t)0x9BB2, (q15_t)0xB07A, + (q15_t)0x9BD2, (q15_t)0xB053, (q15_t)0x9BF1, (q15_t)0xB02B, + (q15_t)0x9C10, (q15_t)0xB004, (q15_t)0x9C30, (q15_t)0xAFDD, + (q15_t)0x9C4F, (q15_t)0xAFB6, (q15_t)0x9C6F, (q15_t)0xAF8F, + (q15_t)0x9C8E, (q15_t)0xAF68, (q15_t)0x9CAE, (q15_t)0xAF40, + (q15_t)0x9CCE, (q15_t)0xAF1A, (q15_t)0x9CEE, (q15_t)0xAEF3, + (q15_t)0x9D0D, (q15_t)0xAECC, (q15_t)0x9D2D, (q15_t)0xAEA5, + (q15_t)0x9D4D, (q15_t)0xAE7E, (q15_t)0x9D6D, (q15_t)0xAE57, + (q15_t)0x9D8E, (q15_t)0xAE31, (q15_t)0x9DAE, (q15_t)0xAE0A, + (q15_t)0x9DCE, (q15_t)0xADE3, (q15_t)0x9DEE, (q15_t)0xADBD, + (q15_t)0x9E0E, (q15_t)0xAD96, (q15_t)0x9E2F, (q15_t)0xAD70, + (q15_t)0x9E4F, (q15_t)0xAD4A, (q15_t)0x9E70, (q15_t)0xAD23, + (q15_t)0x9E90, (q15_t)0xACFD, (q15_t)0x9EB1, (q15_t)0xACD7, + (q15_t)0x9ED2, (q15_t)0xACB1, (q15_t)0x9EF2, (q15_t)0xAC8A, + (q15_t)0x9F13, (q15_t)0xAC64, (q15_t)0x9F34, (q15_t)0xAC3E, + (q15_t)0x9F55, (q15_t)0xAC18, (q15_t)0x9F76, (q15_t)0xABF2, + (q15_t)0x9F97, (q15_t)0xABCC, (q15_t)0x9FB8, (q15_t)0xABA7, + (q15_t)0x9FD9, (q15_t)0xAB81, (q15_t)0x9FFB, (q15_t)0xAB5B, + (q15_t)0xA01C, (q15_t)0xAB35, (q15_t)0xA03D, (q15_t)0xAB10, + (q15_t)0xA05F, (q15_t)0xAAEA, (q15_t)0xA080, (q15_t)0xAAC5, + (q15_t)0xA0A1, (q15_t)0xAA9F, (q15_t)0xA0C3, (q15_t)0xAA7A, + (q15_t)0xA0E5, (q15_t)0xAA54, (q15_t)0xA106, (q15_t)0xAA2F, + (q15_t)0xA128, (q15_t)0xAA0A, (q15_t)0xA14A, (q15_t)0xA9E5, + (q15_t)0xA16C, (q15_t)0xA9BF, (q15_t)0xA18E, (q15_t)0xA99A, + (q15_t)0xA1AF, (q15_t)0xA975, (q15_t)0xA1D2, (q15_t)0xA950, + (q15_t)0xA1F4, (q15_t)0xA92B, (q15_t)0xA216, (q15_t)0xA906, + (q15_t)0xA238, (q15_t)0xA8E2, (q15_t)0xA25A, (q15_t)0xA8BD, + (q15_t)0xA27C, (q15_t)0xA898, (q15_t)0xA29F, (q15_t)0xA873, + (q15_t)0xA2C1, (q15_t)0xA84F, (q15_t)0xA2E4, (q15_t)0xA82A, + (q15_t)0xA306, (q15_t)0xA806, (q15_t)0xA329, (q15_t)0xA7E1, + (q15_t)0xA34B, (q15_t)0xA7BD, (q15_t)0xA36E, (q15_t)0xA798, + (q15_t)0xA391, (q15_t)0xA774, (q15_t)0xA3B4, (q15_t)0xA750, + (q15_t)0xA3D6, (q15_t)0xA72B, (q15_t)0xA3F9, (q15_t)0xA707, + (q15_t)0xA41C, (q15_t)0xA6E3, (q15_t)0xA43F, (q15_t)0xA6BF, + (q15_t)0xA462, (q15_t)0xA69B, (q15_t)0xA486, (q15_t)0xA677, + (q15_t)0xA4A9, (q15_t)0xA653, (q15_t)0xA4CC, (q15_t)0xA62F, + (q15_t)0xA4EF, (q15_t)0xA60C, (q15_t)0xA513, (q15_t)0xA5E8, + (q15_t)0xA536, (q15_t)0xA5C4, (q15_t)0xA55A, (q15_t)0xA5A1, + (q15_t)0xA57D, (q15_t)0xA57D, (q15_t)0xA5A1, (q15_t)0xA55A, + (q15_t)0xA5C4, (q15_t)0xA536, (q15_t)0xA5E8, (q15_t)0xA513, + (q15_t)0xA60C, (q15_t)0xA4EF, (q15_t)0xA62F, (q15_t)0xA4CC, + (q15_t)0xA653, (q15_t)0xA4A9, (q15_t)0xA677, (q15_t)0xA486, + (q15_t)0xA69B, (q15_t)0xA462, (q15_t)0xA6BF, (q15_t)0xA43F, + (q15_t)0xA6E3, (q15_t)0xA41C, (q15_t)0xA707, (q15_t)0xA3F9, + (q15_t)0xA72B, (q15_t)0xA3D6, (q15_t)0xA750, (q15_t)0xA3B4, + (q15_t)0xA774, (q15_t)0xA391, (q15_t)0xA798, (q15_t)0xA36E, + (q15_t)0xA7BD, (q15_t)0xA34B, (q15_t)0xA7E1, (q15_t)0xA329, + (q15_t)0xA806, (q15_t)0xA306, (q15_t)0xA82A, (q15_t)0xA2E4, + (q15_t)0xA84F, (q15_t)0xA2C1, (q15_t)0xA873, (q15_t)0xA29F, + (q15_t)0xA898, (q15_t)0xA27C, (q15_t)0xA8BD, (q15_t)0xA25A, + (q15_t)0xA8E2, (q15_t)0xA238, (q15_t)0xA906, (q15_t)0xA216, + (q15_t)0xA92B, (q15_t)0xA1F4, (q15_t)0xA950, (q15_t)0xA1D2, + (q15_t)0xA975, (q15_t)0xA1AF, (q15_t)0xA99A, (q15_t)0xA18E, + (q15_t)0xA9BF, (q15_t)0xA16C, (q15_t)0xA9E5, (q15_t)0xA14A, + (q15_t)0xAA0A, (q15_t)0xA128, (q15_t)0xAA2F, (q15_t)0xA106, + (q15_t)0xAA54, (q15_t)0xA0E5, (q15_t)0xAA7A, (q15_t)0xA0C3, + (q15_t)0xAA9F, (q15_t)0xA0A1, (q15_t)0xAAC5, (q15_t)0xA080, + (q15_t)0xAAEA, (q15_t)0xA05F, (q15_t)0xAB10, (q15_t)0xA03D, + (q15_t)0xAB35, (q15_t)0xA01C, (q15_t)0xAB5B, (q15_t)0x9FFB, + (q15_t)0xAB81, (q15_t)0x9FD9, (q15_t)0xABA7, (q15_t)0x9FB8, + (q15_t)0xABCC, (q15_t)0x9F97, (q15_t)0xABF2, (q15_t)0x9F76, + (q15_t)0xAC18, (q15_t)0x9F55, (q15_t)0xAC3E, (q15_t)0x9F34, + (q15_t)0xAC64, (q15_t)0x9F13, (q15_t)0xAC8A, (q15_t)0x9EF2, + (q15_t)0xACB1, (q15_t)0x9ED2, (q15_t)0xACD7, (q15_t)0x9EB1, + (q15_t)0xACFD, (q15_t)0x9E90, (q15_t)0xAD23, (q15_t)0x9E70, + (q15_t)0xAD4A, (q15_t)0x9E4F, (q15_t)0xAD70, (q15_t)0x9E2F, + (q15_t)0xAD96, (q15_t)0x9E0E, (q15_t)0xADBD, (q15_t)0x9DEE, + (q15_t)0xADE3, (q15_t)0x9DCE, (q15_t)0xAE0A, (q15_t)0x9DAE, + (q15_t)0xAE31, (q15_t)0x9D8E, (q15_t)0xAE57, (q15_t)0x9D6D, + (q15_t)0xAE7E, (q15_t)0x9D4D, (q15_t)0xAEA5, (q15_t)0x9D2D, + (q15_t)0xAECC, (q15_t)0x9D0D, (q15_t)0xAEF3, (q15_t)0x9CEE, + (q15_t)0xAF1A, (q15_t)0x9CCE, (q15_t)0xAF40, (q15_t)0x9CAE, + (q15_t)0xAF68, (q15_t)0x9C8E, (q15_t)0xAF8F, (q15_t)0x9C6F, + (q15_t)0xAFB6, (q15_t)0x9C4F, (q15_t)0xAFDD, (q15_t)0x9C30, + (q15_t)0xB004, (q15_t)0x9C10, (q15_t)0xB02B, (q15_t)0x9BF1, + (q15_t)0xB053, (q15_t)0x9BD2, (q15_t)0xB07A, (q15_t)0x9BB2, + (q15_t)0xB0A1, (q15_t)0x9B93, (q15_t)0xB0C9, (q15_t)0x9B74, + (q15_t)0xB0F0, (q15_t)0x9B55, (q15_t)0xB118, (q15_t)0x9B36, + (q15_t)0xB140, (q15_t)0x9B17, (q15_t)0xB167, (q15_t)0x9AF8, + (q15_t)0xB18F, (q15_t)0x9AD9, (q15_t)0xB1B7, (q15_t)0x9ABA, + (q15_t)0xB1DE, (q15_t)0x9A9C, (q15_t)0xB206, (q15_t)0x9A7D, + (q15_t)0xB22E, (q15_t)0x9A5F, (q15_t)0xB256, (q15_t)0x9A40, + (q15_t)0xB27E, (q15_t)0x9A22, (q15_t)0xB2A6, (q15_t)0x9A03, + (q15_t)0xB2CE, (q15_t)0x99E5, (q15_t)0xB2F6, (q15_t)0x99C6, + (q15_t)0xB31E, (q15_t)0x99A8, (q15_t)0xB347, (q15_t)0x998A, + (q15_t)0xB36F, (q15_t)0x996C, (q15_t)0xB397, (q15_t)0x994E, + (q15_t)0xB3C0, (q15_t)0x9930, (q15_t)0xB3E8, (q15_t)0x9912, + (q15_t)0xB410, (q15_t)0x98F4, (q15_t)0xB439, (q15_t)0x98D6, + (q15_t)0xB461, (q15_t)0x98B9, (q15_t)0xB48A, (q15_t)0x989B, + (q15_t)0xB4B3, (q15_t)0x987D, (q15_t)0xB4DB, (q15_t)0x9860, + (q15_t)0xB504, (q15_t)0x9842, (q15_t)0xB52D, (q15_t)0x9825, + (q15_t)0xB556, (q15_t)0x9808, (q15_t)0xB57E, (q15_t)0x97EA, + (q15_t)0xB5A7, (q15_t)0x97CD, (q15_t)0xB5D0, (q15_t)0x97B0, + (q15_t)0xB5F9, (q15_t)0x9793, (q15_t)0xB622, (q15_t)0x9776, + (q15_t)0xB64B, (q15_t)0x9759, (q15_t)0xB675, (q15_t)0x973C, + (q15_t)0xB69E, (q15_t)0x971F, (q15_t)0xB6C7, (q15_t)0x9702, + (q15_t)0xB6F0, (q15_t)0x96E6, (q15_t)0xB719, (q15_t)0x96C9, + (q15_t)0xB743, (q15_t)0x96AC, (q15_t)0xB76C, (q15_t)0x9690, + (q15_t)0xB796, (q15_t)0x9673, (q15_t)0xB7BF, (q15_t)0x9657, + (q15_t)0xB7E9, (q15_t)0x963B, (q15_t)0xB812, (q15_t)0x961E, + (q15_t)0xB83C, (q15_t)0x9602, (q15_t)0xB865, (q15_t)0x95E6, + (q15_t)0xB88F, (q15_t)0x95CA, (q15_t)0xB8B9, (q15_t)0x95AE, + (q15_t)0xB8E3, (q15_t)0x9592, (q15_t)0xB90C, (q15_t)0x9576, + (q15_t)0xB936, (q15_t)0x955A, (q15_t)0xB960, (q15_t)0x953E, + (q15_t)0xB98A, (q15_t)0x9523, (q15_t)0xB9B4, (q15_t)0x9507, + (q15_t)0xB9DE, (q15_t)0x94EC, (q15_t)0xBA08, (q15_t)0x94D0, + (q15_t)0xBA32, (q15_t)0x94B5, (q15_t)0xBA5C, (q15_t)0x9499, + (q15_t)0xBA87, (q15_t)0x947E, (q15_t)0xBAB1, (q15_t)0x9463, + (q15_t)0xBADB, (q15_t)0x9447, (q15_t)0xBB05, (q15_t)0x942C, + (q15_t)0xBB30, (q15_t)0x9411, (q15_t)0xBB5A, (q15_t)0x93F6, + (q15_t)0xBB85, (q15_t)0x93DB, (q15_t)0xBBAF, (q15_t)0x93C0, + (q15_t)0xBBDA, (q15_t)0x93A6, (q15_t)0xBC04, (q15_t)0x938B, + (q15_t)0xBC2F, (q15_t)0x9370, (q15_t)0xBC5A, (q15_t)0x9356, + (q15_t)0xBC84, (q15_t)0x933B, (q15_t)0xBCAF, (q15_t)0x9321, + (q15_t)0xBCDA, (q15_t)0x9306, (q15_t)0xBD05, (q15_t)0x92EC, + (q15_t)0xBD2F, (q15_t)0x92D2, (q15_t)0xBD5A, (q15_t)0x92B7, + (q15_t)0xBD85, (q15_t)0x929D, (q15_t)0xBDB0, (q15_t)0x9283, + (q15_t)0xBDDB, (q15_t)0x9269, (q15_t)0xBE06, (q15_t)0x924F, + (q15_t)0xBE31, (q15_t)0x9235, (q15_t)0xBE5D, (q15_t)0x921C, + (q15_t)0xBE88, (q15_t)0x9202, (q15_t)0xBEB3, (q15_t)0x91E8, + (q15_t)0xBEDE, (q15_t)0x91CF, (q15_t)0xBF09, (q15_t)0x91B5, + (q15_t)0xBF35, (q15_t)0x919C, (q15_t)0xBF60, (q15_t)0x9182, + (q15_t)0xBF8C, (q15_t)0x9169, (q15_t)0xBFB7, (q15_t)0x9150, + (q15_t)0xBFE2, (q15_t)0x9136, (q15_t)0xC00E, (q15_t)0x911D, + (q15_t)0xC03A, (q15_t)0x9104, (q15_t)0xC065, (q15_t)0x90EB, + (q15_t)0xC091, (q15_t)0x90D2, (q15_t)0xC0BC, (q15_t)0x90B9, + (q15_t)0xC0E8, (q15_t)0x90A0, (q15_t)0xC114, (q15_t)0x9088, + (q15_t)0xC140, (q15_t)0x906F, (q15_t)0xC16C, (q15_t)0x9056, + (q15_t)0xC197, (q15_t)0x903E, (q15_t)0xC1C3, (q15_t)0x9025, + (q15_t)0xC1EF, (q15_t)0x900D, (q15_t)0xC21B, (q15_t)0x8FF5, + (q15_t)0xC247, (q15_t)0x8FDC, (q15_t)0xC273, (q15_t)0x8FC4, + (q15_t)0xC29F, (q15_t)0x8FAC, (q15_t)0xC2CC, (q15_t)0x8F94, + (q15_t)0xC2F8, (q15_t)0x8F7C, (q15_t)0xC324, (q15_t)0x8F64, + (q15_t)0xC350, (q15_t)0x8F4C, (q15_t)0xC37C, (q15_t)0x8F34, + (q15_t)0xC3A9, (q15_t)0x8F1D, (q15_t)0xC3D5, (q15_t)0x8F05, + (q15_t)0xC402, (q15_t)0x8EED, (q15_t)0xC42E, (q15_t)0x8ED6, + (q15_t)0xC45A, (q15_t)0x8EBE, (q15_t)0xC487, (q15_t)0x8EA7, + (q15_t)0xC4B3, (q15_t)0x8E90, (q15_t)0xC4E0, (q15_t)0x8E79, + (q15_t)0xC50D, (q15_t)0x8E61, (q15_t)0xC539, (q15_t)0x8E4A, + (q15_t)0xC566, (q15_t)0x8E33, (q15_t)0xC593, (q15_t)0x8E1C, + (q15_t)0xC5BF, (q15_t)0x8E05, (q15_t)0xC5EC, (q15_t)0x8DEE, + (q15_t)0xC619, (q15_t)0x8DD8, (q15_t)0xC646, (q15_t)0x8DC1, + (q15_t)0xC673, (q15_t)0x8DAA, (q15_t)0xC6A0, (q15_t)0x8D94, + (q15_t)0xC6CD, (q15_t)0x8D7D, (q15_t)0xC6F9, (q15_t)0x8D67, + (q15_t)0xC727, (q15_t)0x8D50, (q15_t)0xC754, (q15_t)0x8D3A, + (q15_t)0xC781, (q15_t)0x8D24, (q15_t)0xC7AE, (q15_t)0x8D0E, + (q15_t)0xC7DB, (q15_t)0x8CF8, (q15_t)0xC808, (q15_t)0x8CE2, + (q15_t)0xC835, (q15_t)0x8CCC, (q15_t)0xC863, (q15_t)0x8CB6, + (q15_t)0xC890, (q15_t)0x8CA0, (q15_t)0xC8BD, (q15_t)0x8C8A, + (q15_t)0xC8EB, (q15_t)0x8C75, (q15_t)0xC918, (q15_t)0x8C5F, + (q15_t)0xC945, (q15_t)0x8C4A, (q15_t)0xC973, (q15_t)0x8C34, + (q15_t)0xC9A0, (q15_t)0x8C1F, (q15_t)0xC9CE, (q15_t)0x8C09, + (q15_t)0xC9FB, (q15_t)0x8BF4, (q15_t)0xCA29, (q15_t)0x8BDF, + (q15_t)0xCA57, (q15_t)0x8BCA, (q15_t)0xCA84, (q15_t)0x8BB5, + (q15_t)0xCAB2, (q15_t)0x8BA0, (q15_t)0xCAE0, (q15_t)0x8B8B, + (q15_t)0xCB0D, (q15_t)0x8B76, (q15_t)0xCB3B, (q15_t)0x8B61, + (q15_t)0xCB69, (q15_t)0x8B4D, (q15_t)0xCB97, (q15_t)0x8B38, + (q15_t)0xCBC5, (q15_t)0x8B24, (q15_t)0xCBF3, (q15_t)0x8B0F, + (q15_t)0xCC21, (q15_t)0x8AFB, (q15_t)0xCC4F, (q15_t)0x8AE6, + (q15_t)0xCC7D, (q15_t)0x8AD2, (q15_t)0xCCAB, (q15_t)0x8ABE, + (q15_t)0xCCD9, (q15_t)0x8AAA, (q15_t)0xCD07, (q15_t)0x8A96, + (q15_t)0xCD35, (q15_t)0x8A82, (q15_t)0xCD63, (q15_t)0x8A6E, + (q15_t)0xCD91, (q15_t)0x8A5A, (q15_t)0xCDBF, (q15_t)0x8A46, + (q15_t)0xCDEE, (q15_t)0x8A33, (q15_t)0xCE1C, (q15_t)0x8A1F, + (q15_t)0xCE4A, (q15_t)0x8A0B, (q15_t)0xCE79, (q15_t)0x89F8, + (q15_t)0xCEA7, (q15_t)0x89E4, (q15_t)0xCED5, (q15_t)0x89D1, + (q15_t)0xCF04, (q15_t)0x89BE, (q15_t)0xCF32, (q15_t)0x89AB, + (q15_t)0xCF61, (q15_t)0x8997, (q15_t)0xCF8F, (q15_t)0x8984, + (q15_t)0xCFBE, (q15_t)0x8971, (q15_t)0xCFEC, (q15_t)0x895F, + (q15_t)0xD01B, (q15_t)0x894C, (q15_t)0xD04A, (q15_t)0x8939, + (q15_t)0xD078, (q15_t)0x8926, (q15_t)0xD0A7, (q15_t)0x8914, + (q15_t)0xD0D6, (q15_t)0x8901, (q15_t)0xD104, (q15_t)0x88EF, + (q15_t)0xD133, (q15_t)0x88DC, (q15_t)0xD162, (q15_t)0x88CA, + (q15_t)0xD191, (q15_t)0x88B8, (q15_t)0xD1C0, (q15_t)0x88A5, + (q15_t)0xD1EE, (q15_t)0x8893, (q15_t)0xD21D, (q15_t)0x8881, + (q15_t)0xD24C, (q15_t)0x886F, (q15_t)0xD27B, (q15_t)0x885D, + (q15_t)0xD2AA, (q15_t)0x884B, (q15_t)0xD2D9, (q15_t)0x883A, + (q15_t)0xD308, (q15_t)0x8828, (q15_t)0xD337, (q15_t)0x8816, + (q15_t)0xD367, (q15_t)0x8805, (q15_t)0xD396, (q15_t)0x87F3, + (q15_t)0xD3C5, (q15_t)0x87E2, (q15_t)0xD3F4, (q15_t)0x87D1, + (q15_t)0xD423, (q15_t)0x87BF, (q15_t)0xD452, (q15_t)0x87AE, + (q15_t)0xD482, (q15_t)0x879D, (q15_t)0xD4B1, (q15_t)0x878C, + (q15_t)0xD4E0, (q15_t)0x877B, (q15_t)0xD510, (q15_t)0x876A, + (q15_t)0xD53F, (q15_t)0x8759, (q15_t)0xD56E, (q15_t)0x8749, + (q15_t)0xD59E, (q15_t)0x8738, (q15_t)0xD5CD, (q15_t)0x8727, + (q15_t)0xD5FD, (q15_t)0x8717, (q15_t)0xD62C, (q15_t)0x8706, + (q15_t)0xD65C, (q15_t)0x86F6, (q15_t)0xD68B, (q15_t)0x86E6, + (q15_t)0xD6BB, (q15_t)0x86D5, (q15_t)0xD6EA, (q15_t)0x86C5, + (q15_t)0xD71A, (q15_t)0x86B5, (q15_t)0xD74A, (q15_t)0x86A5, + (q15_t)0xD779, (q15_t)0x8695, (q15_t)0xD7A9, (q15_t)0x8685, + (q15_t)0xD7D9, (q15_t)0x8675, (q15_t)0xD809, (q15_t)0x8666, + (q15_t)0xD838, (q15_t)0x8656, (q15_t)0xD868, (q15_t)0x8646, + (q15_t)0xD898, (q15_t)0x8637, (q15_t)0xD8C8, (q15_t)0x8627, + (q15_t)0xD8F8, (q15_t)0x8618, (q15_t)0xD927, (q15_t)0x8609, + (q15_t)0xD957, (q15_t)0x85FA, (q15_t)0xD987, (q15_t)0x85EA, + (q15_t)0xD9B7, (q15_t)0x85DB, (q15_t)0xD9E7, (q15_t)0x85CC, + (q15_t)0xDA17, (q15_t)0x85BD, (q15_t)0xDA47, (q15_t)0x85AF, + (q15_t)0xDA77, (q15_t)0x85A0, (q15_t)0xDAA7, (q15_t)0x8591, + (q15_t)0xDAD7, (q15_t)0x8582, (q15_t)0xDB08, (q15_t)0x8574, + (q15_t)0xDB38, (q15_t)0x8565, (q15_t)0xDB68, (q15_t)0x8557, + (q15_t)0xDB98, (q15_t)0x8549, (q15_t)0xDBC8, (q15_t)0x853A, + (q15_t)0xDBF8, (q15_t)0x852C, (q15_t)0xDC29, (q15_t)0x851E, + (q15_t)0xDC59, (q15_t)0x8510, (q15_t)0xDC89, (q15_t)0x8502, + (q15_t)0xDCBA, (q15_t)0x84F4, (q15_t)0xDCEA, (q15_t)0x84E6, + (q15_t)0xDD1A, (q15_t)0x84D9, (q15_t)0xDD4B, (q15_t)0x84CB, + (q15_t)0xDD7B, (q15_t)0x84BD, (q15_t)0xDDAB, (q15_t)0x84B0, + (q15_t)0xDDDC, (q15_t)0x84A2, (q15_t)0xDE0C, (q15_t)0x8495, + (q15_t)0xDE3D, (q15_t)0x8488, (q15_t)0xDE6D, (q15_t)0x847B, + (q15_t)0xDE9E, (q15_t)0x846D, (q15_t)0xDECE, (q15_t)0x8460, + (q15_t)0xDEFF, (q15_t)0x8453, (q15_t)0xDF2F, (q15_t)0x8446, + (q15_t)0xDF60, (q15_t)0x843A, (q15_t)0xDF91, (q15_t)0x842D, + (q15_t)0xDFC1, (q15_t)0x8420, (q15_t)0xDFF2, (q15_t)0x8414, + (q15_t)0xE023, (q15_t)0x8407, (q15_t)0xE053, (q15_t)0x83FA, + (q15_t)0xE084, (q15_t)0x83EE, (q15_t)0xE0B5, (q15_t)0x83E2, + (q15_t)0xE0E6, (q15_t)0x83D6, (q15_t)0xE116, (q15_t)0x83C9, + (q15_t)0xE147, (q15_t)0x83BD, (q15_t)0xE178, (q15_t)0x83B1, + (q15_t)0xE1A9, (q15_t)0x83A5, (q15_t)0xE1DA, (q15_t)0x8399, + (q15_t)0xE20A, (q15_t)0x838E, (q15_t)0xE23B, (q15_t)0x8382, + (q15_t)0xE26C, (q15_t)0x8376, (q15_t)0xE29D, (q15_t)0x836B, + (q15_t)0xE2CE, (q15_t)0x835F, (q15_t)0xE2FF, (q15_t)0x8354, + (q15_t)0xE330, (q15_t)0x8348, (q15_t)0xE361, (q15_t)0x833D, + (q15_t)0xE392, (q15_t)0x8332, (q15_t)0xE3C3, (q15_t)0x8327, + (q15_t)0xE3F4, (q15_t)0x831C, (q15_t)0xE425, (q15_t)0x8311, + (q15_t)0xE456, (q15_t)0x8306, (q15_t)0xE487, (q15_t)0x82FB, + (q15_t)0xE4B8, (q15_t)0x82F0, (q15_t)0xE4E9, (q15_t)0x82E6, + (q15_t)0xE51B, (q15_t)0x82DB, (q15_t)0xE54C, (q15_t)0x82D0, + (q15_t)0xE57D, (q15_t)0x82C6, (q15_t)0xE5AE, (q15_t)0x82BC, + (q15_t)0xE5DF, (q15_t)0x82B1, (q15_t)0xE610, (q15_t)0x82A7, + (q15_t)0xE642, (q15_t)0x829D, (q15_t)0xE673, (q15_t)0x8293, + (q15_t)0xE6A4, (q15_t)0x8289, (q15_t)0xE6D5, (q15_t)0x827F, + (q15_t)0xE707, (q15_t)0x8275, (q15_t)0xE738, (q15_t)0x826B, + (q15_t)0xE769, (q15_t)0x8262, (q15_t)0xE79B, (q15_t)0x8258, + (q15_t)0xE7CC, (q15_t)0x824F, (q15_t)0xE7FD, (q15_t)0x8245, + (q15_t)0xE82F, (q15_t)0x823C, (q15_t)0xE860, (q15_t)0x8232, + (q15_t)0xE892, (q15_t)0x8229, (q15_t)0xE8C3, (q15_t)0x8220, + (q15_t)0xE8F5, (q15_t)0x8217, (q15_t)0xE926, (q15_t)0x820E, + (q15_t)0xE957, (q15_t)0x8205, (q15_t)0xE989, (q15_t)0x81FC, + (q15_t)0xE9BA, (q15_t)0x81F3, (q15_t)0xE9EC, (q15_t)0x81EB, + (q15_t)0xEA1D, (q15_t)0x81E2, (q15_t)0xEA4F, (q15_t)0x81D9, + (q15_t)0xEA80, (q15_t)0x81D1, (q15_t)0xEAB2, (q15_t)0x81C8, + (q15_t)0xEAE4, (q15_t)0x81C0, (q15_t)0xEB15, (q15_t)0x81B8, + (q15_t)0xEB47, (q15_t)0x81B0, (q15_t)0xEB78, (q15_t)0x81A8, + (q15_t)0xEBAA, (q15_t)0x81A0, (q15_t)0xEBDC, (q15_t)0x8198, + (q15_t)0xEC0D, (q15_t)0x8190, (q15_t)0xEC3F, (q15_t)0x8188, + (q15_t)0xEC71, (q15_t)0x8180, (q15_t)0xECA2, (q15_t)0x8179, + (q15_t)0xECD4, (q15_t)0x8171, (q15_t)0xED06, (q15_t)0x816A, + (q15_t)0xED37, (q15_t)0x8162, (q15_t)0xED69, (q15_t)0x815B, + (q15_t)0xED9B, (q15_t)0x8154, (q15_t)0xEDCD, (q15_t)0x814C, + (q15_t)0xEDFE, (q15_t)0x8145, (q15_t)0xEE30, (q15_t)0x813E, + (q15_t)0xEE62, (q15_t)0x8137, (q15_t)0xEE94, (q15_t)0x8130, + (q15_t)0xEEC6, (q15_t)0x812A, (q15_t)0xEEF7, (q15_t)0x8123, + (q15_t)0xEF29, (q15_t)0x811C, (q15_t)0xEF5B, (q15_t)0x8116, + (q15_t)0xEF8D, (q15_t)0x810F, (q15_t)0xEFBF, (q15_t)0x8109, + (q15_t)0xEFF1, (q15_t)0x8102, (q15_t)0xF022, (q15_t)0x80FC, + (q15_t)0xF054, (q15_t)0x80F6, (q15_t)0xF086, (q15_t)0x80F0, + (q15_t)0xF0B8, (q15_t)0x80EA, (q15_t)0xF0EA, (q15_t)0x80E4, + (q15_t)0xF11C, (q15_t)0x80DE, (q15_t)0xF14E, (q15_t)0x80D8, + (q15_t)0xF180, (q15_t)0x80D2, (q15_t)0xF1B2, (q15_t)0x80CD, + (q15_t)0xF1E4, (q15_t)0x80C7, (q15_t)0xF216, (q15_t)0x80C2, + (q15_t)0xF248, (q15_t)0x80BC, (q15_t)0xF27A, (q15_t)0x80B7, + (q15_t)0xF2AC, (q15_t)0x80B2, (q15_t)0xF2DE, (q15_t)0x80AC, + (q15_t)0xF310, (q15_t)0x80A7, (q15_t)0xF342, (q15_t)0x80A2, + (q15_t)0xF374, (q15_t)0x809D, (q15_t)0xF3A6, (q15_t)0x8098, + (q15_t)0xF3D8, (q15_t)0x8094, (q15_t)0xF40A, (q15_t)0x808F, + (q15_t)0xF43C, (q15_t)0x808A, (q15_t)0xF46E, (q15_t)0x8086, + (q15_t)0xF4A0, (q15_t)0x8081, (q15_t)0xF4D2, (q15_t)0x807D, + (q15_t)0xF504, (q15_t)0x8078, (q15_t)0xF536, (q15_t)0x8074, + (q15_t)0xF568, (q15_t)0x8070, (q15_t)0xF59A, (q15_t)0x806C, + (q15_t)0xF5CC, (q15_t)0x8068, (q15_t)0xF5FF, (q15_t)0x8064, + (q15_t)0xF631, (q15_t)0x8060, (q15_t)0xF663, (q15_t)0x805C, + (q15_t)0xF695, (q15_t)0x8058, (q15_t)0xF6C7, (q15_t)0x8055, + (q15_t)0xF6F9, (q15_t)0x8051, (q15_t)0xF72B, (q15_t)0x804E, + (q15_t)0xF75D, (q15_t)0x804A, (q15_t)0xF790, (q15_t)0x8047, + (q15_t)0xF7C2, (q15_t)0x8043, (q15_t)0xF7F4, (q15_t)0x8040, + (q15_t)0xF826, (q15_t)0x803D, (q15_t)0xF858, (q15_t)0x803A, + (q15_t)0xF88A, (q15_t)0x8037, (q15_t)0xF8BD, (q15_t)0x8034, + (q15_t)0xF8EF, (q15_t)0x8031, (q15_t)0xF921, (q15_t)0x802F, + (q15_t)0xF953, (q15_t)0x802C, (q15_t)0xF985, (q15_t)0x8029, + (q15_t)0xF9B8, (q15_t)0x8027, (q15_t)0xF9EA, (q15_t)0x8025, + (q15_t)0xFA1C, (q15_t)0x8022, (q15_t)0xFA4E, (q15_t)0x8020, + (q15_t)0xFA80, (q15_t)0x801E, (q15_t)0xFAB3, (q15_t)0x801C, + (q15_t)0xFAE5, (q15_t)0x801A, (q15_t)0xFB17, (q15_t)0x8018, + (q15_t)0xFB49, (q15_t)0x8016, (q15_t)0xFB7C, (q15_t)0x8014, + (q15_t)0xFBAE, (q15_t)0x8012, (q15_t)0xFBE0, (q15_t)0x8011, + (q15_t)0xFC12, (q15_t)0x800F, (q15_t)0xFC45, (q15_t)0x800D, + (q15_t)0xFC77, (q15_t)0x800C, (q15_t)0xFCA9, (q15_t)0x800B, + (q15_t)0xFCDB, (q15_t)0x8009, (q15_t)0xFD0E, (q15_t)0x8008, + (q15_t)0xFD40, (q15_t)0x8007, (q15_t)0xFD72, (q15_t)0x8006, + (q15_t)0xFDA4, (q15_t)0x8005, (q15_t)0xFDD7, (q15_t)0x8004, + (q15_t)0xFE09, (q15_t)0x8003, (q15_t)0xFE3B, (q15_t)0x8003, + (q15_t)0xFE6D, (q15_t)0x8002, (q15_t)0xFEA0, (q15_t)0x8001, + (q15_t)0xFED2, (q15_t)0x8001, (q15_t)0xFF04, (q15_t)0x8000, + (q15_t)0xFF36, (q15_t)0x8000, (q15_t)0xFF69, (q15_t)0x8000, + (q15_t)0xFF9B, (q15_t)0x8000, (q15_t)0xFFCD, (q15_t)0x8000 +}; + + +/** +* @} end of CFFT_CIFFT group +*/ + +/* +* @brief Q15 table for reciprocal +*/ +const q15_t ALIGN4 armRecipTableQ15[64] = { + 0x7F03, 0x7D13, 0x7B31, 0x795E, 0x7798, 0x75E0, + 0x7434, 0x7294, 0x70FF, 0x6F76, 0x6DF6, 0x6C82, + 0x6B16, 0x69B5, 0x685C, 0x670C, 0x65C4, 0x6484, + 0x634C, 0x621C, 0x60F3, 0x5FD0, 0x5EB5, 0x5DA0, + 0x5C91, 0x5B88, 0x5A85, 0x5988, 0x5890, 0x579E, + 0x56B0, 0x55C8, 0x54E4, 0x5405, 0x532B, 0x5255, + 0x5183, 0x50B6, 0x4FEC, 0x4F26, 0x4E64, 0x4DA6, + 0x4CEC, 0x4C34, 0x4B81, 0x4AD0, 0x4A23, 0x4978, + 0x48D1, 0x482D, 0x478C, 0x46ED, 0x4651, 0x45B8, + 0x4521, 0x448D, 0x43FC, 0x436C, 0x42DF, 0x4255, + 0x41CC, 0x4146, 0x40C2, 0x4040 +}; + +/* +* @brief Q31 table for reciprocal +*/ +const q31_t armRecipTableQ31[64] = { + 0x7F03F03F, 0x7D137420, 0x7B31E739, 0x795E9F94, 0x7798FD29, 0x75E06928, + 0x7434554D, 0x72943B4B, 0x70FF9C40, 0x6F760031, 0x6DF6F593, 0x6C8210E3, + 0x6B16EC3A, 0x69B526F6, 0x685C655F, 0x670C505D, 0x65C4952D, 0x6484E519, + 0x634CF53E, 0x621C7E4F, 0x60F33C61, 0x5FD0EEB3, 0x5EB55785, 0x5DA03BEB, + 0x5C9163A1, 0x5B8898E6, 0x5A85A85A, 0x598860DF, 0x58909373, 0x579E1318, + 0x56B0B4B8, 0x55C84F0B, 0x54E4BA80, 0x5405D124, 0x532B6E8F, 0x52556FD0, + 0x5183B35A, 0x50B618F3, 0x4FEC81A2, 0x4F26CFA2, 0x4E64E64E, 0x4DA6AA1D, + 0x4CEC008B, 0x4C34D010, 0x4B810016, 0x4AD078EF, 0x4A2323C4, 0x4978EA96, + 0x48D1B827, 0x482D77FE, 0x478C1657, 0x46ED801D, 0x4651A2E5, 0x45B86CE2, + 0x4521CCE1, 0x448DB244, 0x43FC0CFA, 0x436CCD78, 0x42DFE4B4, 0x42554426, + 0x41CCDDB6, 0x4146A3C6, 0x40C28923, 0x40408102 +}; + +const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE_16_TABLE_LENGTH] = +{ + /* 8x2, size 20 */ + 8,64, 24,72, 16,64, 40,80, 32,64, 56,88, 48,72, 88,104, 72,96, 104,112 +}; + +const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE_32_TABLE_LENGTH] = +{ + /* 8x4, size 48 */ + 8,64, 16,128, 24,192, 32,64, 40,72, 48,136, 56,200, 64,128, 72,80, 88,208, + 80,144, 96,192, 104,208, 112,152, 120,216, 136,192, 144,160, 168,208, + 152,224, 176,208, 184,232, 216,240, 200,224, 232,240 +}; + +const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE_64_TABLE_LENGTH] = +{ + /* radix 8, size 56 */ + 8,64, 16,128, 24,192, 32,256, 40,320, 48,384, 56,448, 80,136, 88,200, + 96,264, 104,328, 112,392, 120,456, 152,208, 160,272, 168,336, 176,400, + 184,464, 224,280, 232,344, 240,408, 248,472, 296,352, 304,416, 312,480, + 368,424, 376,488, 440,496 +}; + +const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH] = +{ + /* 8x2, size 208 */ + 8,512, 16,64, 24,576, 32,128, 40,640, 48,192, 56,704, 64,256, 72,768, + 80,320, 88,832, 96,384, 104,896, 112,448, 120,960, 128,512, 136,520, + 144,768, 152,584, 160,520, 168,648, 176,200, 184,712, 192,264, 200,776, + 208,328, 216,840, 224,392, 232,904, 240,456, 248,968, 264,528, 272,320, + 280,592, 288,768, 296,656, 304,328, 312,720, 328,784, 344,848, 352,400, + 360,912, 368,464, 376,976, 384,576, 392,536, 400,832, 408,600, 416,584, + 424,664, 432,840, 440,728, 448,592, 456,792, 464,848, 472,856, 480,600, + 488,920, 496,856, 504,984, 520,544, 528,576, 536,608, 552,672, 560,608, + 568,736, 576,768, 584,800, 592,832, 600,864, 608,800, 616,928, 624,864, + 632,992, 648,672, 656,896, 664,928, 688,904, 696,744, 704,896, 712,808, + 720,912, 728,872, 736,928, 744,936, 752,920, 760,1000, 776,800, 784,832, + 792,864, 808,904, 816,864, 824,920, 840,864, 856,880, 872,944, 888,1008, + 904,928, 912,960, 920,992, 944,968, 952,1000, 968,992, 984,1008 +}; + +const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH] = +{ + /* 8x4, size 440 */ + 8,512, 16,1024, 24,1536, 32,64, 40,576, 48,1088, 56,1600, 64,128, 72,640, + 80,1152, 88,1664, 96,192, 104,704, 112,1216, 120,1728, 128,256, 136,768, + 144,1280, 152,1792, 160,320, 168,832, 176,1344, 184,1856, 192,384, + 200,896, 208,1408, 216,1920, 224,448, 232,960, 240,1472, 248,1984, + 256,512, 264,520, 272,1032, 280,1544, 288,640, 296,584, 304,1096, 312,1608, + 320,768, 328,648, 336,1160, 344,1672, 352,896, 360,712, 368,1224, 376,1736, + 384,520, 392,776, 400,1288, 408,1800, 416,648, 424,840, 432,1352, 440,1864, + 448,776, 456,904, 464,1416, 472,1928, 480,904, 488,968, 496,1480, 504,1992, + 520,528, 512,1024, 528,1040, 536,1552, 544,1152, 552,592, 560,1104, + 568,1616, 576,1280, 584,656, 592,1168, 600,1680, 608,1408, 616,720, + 624,1232, 632,1744, 640,1032, 648,784, 656,1296, 664,1808, 672,1160, + 680,848, 688,1360, 696,1872, 704,1288, 712,912, 720,1424, 728,1936, + 736,1416, 744,976, 752,1488, 760,2000, 768,1536, 776,1552, 784,1048, + 792,1560, 800,1664, 808,1680, 816,1112, 824,1624, 832,1792, 840,1808, + 848,1176, 856,1688, 864,1920, 872,1936, 880,1240, 888,1752, 896,1544, + 904,1560, 912,1304, 920,1816, 928,1672, 936,1688, 944,1368, 952,1880, + 960,1800, 968,1816, 976,1432, 984,1944, 992,1928, 1000,1944, 1008,1496, + 1016,2008, 1032,1152, 1040,1056, 1048,1568, 1064,1408, 1072,1120, + 1080,1632, 1088,1536, 1096,1160, 1104,1184, 1112,1696, 1120,1552, + 1128,1416, 1136,1248, 1144,1760, 1160,1664, 1168,1312, 1176,1824, + 1184,1544, 1192,1920, 1200,1376, 1208,1888, 1216,1568, 1224,1672, + 1232,1440, 1240,1952, 1248,1560, 1256,1928, 1264,1504, 1272,2016, + 1288,1312, 1296,1408, 1304,1576, 1320,1424, 1328,1416, 1336,1640, + 1344,1792, 1352,1824, 1360,1920, 1368,1704, 1376,1800, 1384,1432, + 1392,1928, 1400,1768, 1416,1680, 1432,1832, 1440,1576, 1448,1936, + 1456,1832, 1464,1896, 1472,1808, 1480,1688, 1488,1936, 1496,1960, + 1504,1816, 1512,1944, 1520,1944, 1528,2024, 1560,1584, 1592,1648, + 1600,1792, 1608,1920, 1616,1800, 1624,1712, 1632,1808, 1640,1936, + 1648,1816, 1656,1776, 1672,1696, 1688,1840, 1704,1952, 1712,1928, + 1720,1904, 1728,1824, 1736,1952, 1744,1832, 1752,1968, 1760,1840, + 1768,1960, 1776,1944, 1784,2032, 1864,1872, 1848,1944, 1872,1888, + 1880,1904, 1888,1984, 1896,2000, 1912,2032, 1904,2016, 1976,2032, + 1960,1968, 2008,2032, 1992,2016, 2024,2032 +}; + +const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH] = +{ + /* radix 8, size 448 */ + 8,512, 16,1024, 24,1536, 32,2048, 40,2560, 48,3072, 56,3584, 72,576, + 80,1088, 88,1600, 96,2112, 104,2624, 112,3136, 120,3648, 136,640, 144,1152, + 152,1664, 160,2176, 168,2688, 176,3200, 184,3712, 200,704, 208,1216, + 216,1728, 224,2240, 232,2752, 240,3264, 248,3776, 264,768, 272,1280, + 280,1792, 288,2304, 296,2816, 304,3328, 312,3840, 328,832, 336,1344, + 344,1856, 352,2368, 360,2880, 368,3392, 376,3904, 392,896, 400,1408, + 408,1920, 416,2432, 424,2944, 432,3456, 440,3968, 456,960, 464,1472, + 472,1984, 480,2496, 488,3008, 496,3520, 504,4032, 528,1032, 536,1544, + 544,2056, 552,2568, 560,3080, 568,3592, 592,1096, 600,1608, 608,2120, + 616,2632, 624,3144, 632,3656, 656,1160, 664,1672, 672,2184, 680,2696, + 688,3208, 696,3720, 720,1224, 728,1736, 736,2248, 744,2760, 752,3272, + 760,3784, 784,1288, 792,1800, 800,2312, 808,2824, 816,3336, 824,3848, + 848,1352, 856,1864, 864,2376, 872,2888, 880,3400, 888,3912, 912,1416, + 920,1928, 928,2440, 936,2952, 944,3464, 952,3976, 976,1480, 984,1992, + 992,2504, 1000,3016, 1008,3528, 1016,4040, 1048,1552, 1056,2064, 1064,2576, + 1072,3088, 1080,3600, 1112,1616, 1120,2128, 1128,2640, 1136,3152, + 1144,3664, 1176,1680, 1184,2192, 1192,2704, 1200,3216, 1208,3728, + 1240,1744, 1248,2256, 1256,2768, 1264,3280, 1272,3792, 1304,1808, + 1312,2320, 1320,2832, 1328,3344, 1336,3856, 1368,1872, 1376,2384, + 1384,2896, 1392,3408, 1400,3920, 1432,1936, 1440,2448, 1448,2960, + 1456,3472, 1464,3984, 1496,2000, 1504,2512, 1512,3024, 1520,3536, + 1528,4048, 1568,2072, 1576,2584, 1584,3096, 1592,3608, 1632,2136, + 1640,2648, 1648,3160, 1656,3672, 1696,2200, 1704,2712, 1712,3224, + 1720,3736, 1760,2264, 1768,2776, 1776,3288, 1784,3800, 1824,2328, + 1832,2840, 1840,3352, 1848,3864, 1888,2392, 1896,2904, 1904,3416, + 1912,3928, 1952,2456, 1960,2968, 1968,3480, 1976,3992, 2016,2520, + 2024,3032, 2032,3544, 2040,4056, 2088,2592, 2096,3104, 2104,3616, + 2152,2656, 2160,3168, 2168,3680, 2216,2720, 2224,3232, 2232,3744, + 2280,2784, 2288,3296, 2296,3808, 2344,2848, 2352,3360, 2360,3872, + 2408,2912, 2416,3424, 2424,3936, 2472,2976, 2480,3488, 2488,4000, + 2536,3040, 2544,3552, 2552,4064, 2608,3112, 2616,3624, 2672,3176, + 2680,3688, 2736,3240, 2744,3752, 2800,3304, 2808,3816, 2864,3368, + 2872,3880, 2928,3432, 2936,3944, 2992,3496, 3000,4008, 3056,3560, + 3064,4072, 3128,3632, 3192,3696, 3256,3760, 3320,3824, 3384,3888, + 3448,3952, 3512,4016, 3576,4080 +}; + +const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE_1024_TABLE_LENGTH] = +{ + /* 8x2, size 1800 */ + 8,4096, 16,512, 24,4608, 32,1024, 40,5120, 48,1536, 56,5632, 64,2048, + 72,6144, 80,2560, 88,6656, 96,3072, 104,7168, 112,3584, 120,7680, 128,2048, + 136,4160, 144,576, 152,4672, 160,1088, 168,5184, 176,1600, 184,5696, + 192,2112, 200,6208, 208,2624, 216,6720, 224,3136, 232,7232, 240,3648, + 248,7744, 256,2048, 264,4224, 272,640, 280,4736, 288,1152, 296,5248, + 304,1664, 312,5760, 320,2176, 328,6272, 336,2688, 344,6784, 352,3200, + 360,7296, 368,3712, 376,7808, 384,2112, 392,4288, 400,704, 408,4800, + 416,1216, 424,5312, 432,1728, 440,5824, 448,2240, 456,6336, 464,2752, + 472,6848, 480,3264, 488,7360, 496,3776, 504,7872, 512,2048, 520,4352, + 528,768, 536,4864, 544,1280, 552,5376, 560,1792, 568,5888, 576,2304, + 584,6400, 592,2816, 600,6912, 608,3328, 616,7424, 624,3840, 632,7936, + 640,2176, 648,4416, 656,832, 664,4928, 672,1344, 680,5440, 688,1856, + 696,5952, 704,2368, 712,6464, 720,2880, 728,6976, 736,3392, 744,7488, + 752,3904, 760,8000, 768,2112, 776,4480, 784,896, 792,4992, 800,1408, + 808,5504, 816,1920, 824,6016, 832,2432, 840,6528, 848,2944, 856,7040, + 864,3456, 872,7552, 880,3968, 888,8064, 896,2240, 904,4544, 912,960, + 920,5056, 928,1472, 936,5568, 944,1984, 952,6080, 960,2496, 968,6592, + 976,3008, 984,7104, 992,3520, 1000,7616, 1008,4032, 1016,8128, 1024,4096, + 1032,4104, 1040,4352, 1048,4616, 1056,4104, 1064,5128, 1072,1544, + 1080,5640, 1088,2056, 1096,6152, 1104,2568, 1112,6664, 1120,3080, + 1128,7176, 1136,3592, 1144,7688, 1152,6144, 1160,4168, 1168,6400, + 1176,4680, 1184,6152, 1192,5192, 1200,1608, 1208,5704, 1216,2120, + 1224,6216, 1232,2632, 1240,6728, 1248,3144, 1256,7240, 1264,3656, + 1272,7752, 1280,4160, 1288,4232, 1296,4416, 1304,4744, 1312,4168, + 1320,5256, 1328,1672, 1336,5768, 1344,2184, 1352,6280, 1360,2696, + 1368,6792, 1376,3208, 1384,7304, 1392,3720, 1400,7816, 1408,6208, + 1416,4296, 1424,6464, 1432,4808, 1440,6216, 1448,5320, 1456,1736, + 1464,5832, 1472,2248, 1480,6344, 1488,2760, 1496,6856, 1504,3272, + 1512,7368, 1520,3784, 1528,7880, 1536,4224, 1544,4360, 1552,4480, + 1560,4872, 1568,4232, 1576,5384, 1584,1800, 1592,5896, 1600,2312, + 1608,6408, 1616,2824, 1624,6920, 1632,3336, 1640,7432, 1648,3848, + 1656,7944, 1664,6272, 1672,4424, 1680,6528, 1688,4936, 1696,6280, + 1704,5448, 1712,1864, 1720,5960, 1728,2376, 1736,6472, 1744,2888, + 1752,6984, 1760,3400, 1768,7496, 1776,3912, 1784,8008, 1792,4288, + 1800,4488, 1808,4544, 1816,5000, 1824,4296, 1832,5512, 1840,1928, + 1848,6024, 1856,2440, 1864,6536, 1872,2952, 1880,7048, 1888,3464, + 1896,7560, 1904,3976, 1912,8072, 1920,6336, 1928,4552, 1936,6592, + 1944,5064, 1952,6344, 1960,5576, 1968,1992, 1976,6088, 1984,2504, + 1992,6600, 2000,3016, 2008,7112, 2016,3528, 2024,7624, 2032,4040, + 2040,8136, 2056,4112, 2064,2112, 2072,4624, 2080,4352, 2088,5136, + 2096,4480, 2104,5648, 2120,6160, 2128,2576, 2136,6672, 2144,3088, + 2152,7184, 2160,3600, 2168,7696, 2176,2560, 2184,4176, 2192,2816, + 2200,4688, 2208,2568, 2216,5200, 2224,2824, 2232,5712, 2240,2576, + 2248,6224, 2256,2640, 2264,6736, 2272,3152, 2280,7248, 2288,3664, + 2296,7760, 2312,4240, 2320,2432, 2328,4752, 2336,6400, 2344,5264, + 2352,6528, 2360,5776, 2368,2816, 2376,6288, 2384,2704, 2392,6800, + 2400,3216, 2408,7312, 2416,3728, 2424,7824, 2432,2624, 2440,4304, + 2448,2880, 2456,4816, 2464,2632, 2472,5328, 2480,2888, 2488,5840, + 2496,2640, 2504,6352, 2512,2768, 2520,6864, 2528,3280, 2536,7376, + 2544,3792, 2552,7888, 2568,4368, 2584,4880, 2592,4416, 2600,5392, + 2608,4544, 2616,5904, 2632,6416, 2640,2832, 2648,6928, 2656,3344, + 2664,7440, 2672,3856, 2680,7952, 2696,4432, 2704,2944, 2712,4944, + 2720,4432, 2728,5456, 2736,2952, 2744,5968, 2752,2944, 2760,6480, + 2768,2896, 2776,6992, 2784,3408, 2792,7504, 2800,3920, 2808,8016, + 2824,4496, 2840,5008, 2848,6464, 2856,5520, 2864,6592, 2872,6032, + 2888,6544, 2896,2960, 2904,7056, 2912,3472, 2920,7568, 2928,3984, + 2936,8080, 2952,4560, 2960,3008, 2968,5072, 2976,6480, 2984,5584, + 2992,3016, 3000,6096, 3016,6608, 3032,7120, 3040,3536, 3048,7632, + 3056,4048, 3064,8144, 3072,4608, 3080,4120, 3088,4864, 3096,4632, + 3104,4616, 3112,5144, 3120,4872, 3128,5656, 3136,4624, 3144,6168, + 3152,4880, 3160,6680, 3168,4632, 3176,7192, 3184,3608, 3192,7704, + 3200,6656, 3208,4184, 3216,6912, 3224,4696, 3232,6664, 3240,5208, + 3248,6920, 3256,5720, 3264,6672, 3272,6232, 3280,6928, 3288,6744, + 3296,6680, 3304,7256, 3312,3672, 3320,7768, 3328,4672, 3336,4248, + 3344,4928, 3352,4760, 3360,4680, 3368,5272, 3376,4936, 3384,5784, + 3392,4688, 3400,6296, 3408,4944, 3416,6808, 3424,4696, 3432,7320, + 3440,3736, 3448,7832, 3456,6720, 3464,4312, 3472,6976, 3480,4824, + 3488,6728, 3496,5336, 3504,6984, 3512,5848, 3520,6736, 3528,6360, + 3536,6992, 3544,6872, 3552,6744, 3560,7384, 3568,3800, 3576,7896, + 3584,4736, 3592,4376, 3600,4992, 3608,4888, 3616,4744, 3624,5400, + 3632,5000, 3640,5912, 3648,4752, 3656,6424, 3664,5008, 3672,6936, + 3680,4760, 3688,7448, 3696,3864, 3704,7960, 3712,6784, 3720,4440, + 3728,7040, 3736,4952, 3744,6792, 3752,5464, 3760,7048, 3768,5976, + 3776,6800, 3784,6488, 3792,7056, 3800,7000, 3808,6808, 3816,7512, + 3824,3928, 3832,8024, 3840,4800, 3848,4504, 3856,5056, 3864,5016, + 3872,4808, 3880,5528, 3888,5064, 3896,6040, 3904,4816, 3912,6552, + 3920,5072, 3928,7064, 3936,4824, 3944,7576, 3952,3992, 3960,8088, + 3968,6848, 3976,4568, 3984,7104, 3992,5080, 4000,6856, 4008,5592, + 4016,7112, 4024,6104, 4032,6864, 4040,6616, 4048,7120, 4056,7128, + 4064,6872, 4072,7640, 4080,7128, 4088,8152, 4104,4128, 4112,4160, + 4120,4640, 4136,5152, 4144,4232, 4152,5664, 4160,4352, 4168,6176, + 4176,4416, 4184,6688, 4192,4616, 4200,7200, 4208,4744, 4216,7712, + 4224,4608, 4232,4616, 4240,4672, 4248,4704, 4256,4640, 4264,5216, + 4272,4704, 4280,5728, 4288,4864, 4296,6240, 4304,4928, 4312,6752, + 4320,4632, 4328,7264, 4336,4760, 4344,7776, 4360,4640, 4368,4416, + 4376,4768, 4384,6152, 4392,5280, 4400,6280, 4408,5792, 4424,6304, + 4440,6816, 4448,6664, 4456,7328, 4464,6792, 4472,7840, 4480,4624, + 4488,4632, 4496,4688, 4504,4832, 4512,6168, 4520,5344, 4528,6296, + 4536,5856, 4544,4880, 4552,6368, 4560,4944, 4568,6880, 4576,6680, + 4584,7392, 4592,6808, 4600,7904, 4608,6144, 4616,6152, 4624,6208, + 4632,4896, 4640,6176, 4648,5408, 4656,6240, 4664,5920, 4672,6400, + 4680,6432, 4688,6464, 4696,6944, 4704,6432, 4712,7456, 4720,4808, + 4728,7968, 4736,6656, 4744,6664, 4752,6720, 4760,4960, 4768,6688, + 4776,5472, 4784,6752, 4792,5984, 4800,6912, 4808,6496, 4816,6976, + 4824,7008, 4832,6944, 4840,7520, 4848,7008, 4856,8032, 4864,6160, + 4872,6168, 4880,6224, 4888,5024, 4896,6216, 4904,5536, 4912,6344, + 4920,6048, 4928,6416, 4936,6560, 4944,6480, 4952,7072, 4960,6728, + 4968,7584, 4976,6856, 4984,8096, 4992,6672, 5000,6680, 5008,6736, + 5016,5088, 5024,6232, 5032,5600, 5040,6360, 5048,6112, 5056,6928, + 5064,6624, 5072,6992, 5080,7136, 5088,6744, 5096,7648, 5104,6872, + 5112,8160, 5128,5152, 5136,5376, 5144,5408, 5168,5384, 5176,5672, + 5184,5376, 5192,6184, 5200,5392, 5208,6696, 5216,5408, 5224,7208, + 5232,5400, 5240,7720, 5248,7168, 5256,7200, 5264,7424, 5272,7456, + 5280,7176, 5288,7208, 5296,7432, 5304,5736, 5312,7184, 5320,6248, + 5328,7440, 5336,6760, 5344,7192, 5352,7272, 5360,7448, 5368,7784, + 5384,5408, 5392,5440, 5400,5472, 5408,6184, 5416,7208, 5424,5448, + 5432,5800, 5448,6312, 5464,6824, 5472,6696, 5480,7336, 5488,6824, + 5496,7848, 5504,7232, 5512,7264, 5520,7488, 5528,7520, 5536,7240, + 5544,7272, 5552,7496, 5560,5864, 5568,7248, 5576,6376, 5584,7504, + 5592,6888, 5600,7256, 5608,7400, 5616,7512, 5624,7912, 5632,7168, + 5640,7176, 5648,7232, 5656,7240, 5664,7200, 5672,7208, 5680,7264, + 5688,5928, 5696,7424, 5704,6440, 5712,7488, 5720,6952, 5728,7456, + 5736,7464, 5744,7520, 5752,7976, 5760,7296, 5768,7328, 5776,7552, + 5784,7584, 5792,7304, 5800,7336, 5808,7560, 5816,5992, 5824,7312, + 5832,6504, 5840,7568, 5848,7016, 5856,7320, 5864,7528, 5872,7576, + 5880,8040, 5888,7184, 5896,7192, 5904,7248, 5912,7256, 5920,6248, + 5928,7272, 5936,6376, 5944,6056, 5952,7440, 5960,6568, 5968,7504, + 5976,7080, 5984,6760, 5992,7592, 6000,6888, 6008,8104, 6016,7360, + 6024,7392, 6032,7616, 6040,7648, 6048,7368, 6056,7400, 6064,7624, + 6072,6120, 6080,7376, 6088,6632, 6096,7632, 6104,7144, 6112,7384, + 6120,7656, 6128,7640, 6136,8168, 6168,6240, 6192,6216, 6200,7264, + 6232,6704, 6248,7216, 6256,6680, 6264,7728, 6272,6656, 6280,6664, + 6288,6912, 6296,6496, 6304,6688, 6312,6696, 6320,6944, 6328,7520, + 6336,6672, 6344,6680, 6352,6928, 6360,6768, 6368,6704, 6376,7280, + 6384,6744, 6392,7792, 6408,6432, 6424,6752, 6440,7432, 6448,6536, + 6456,7560, 6472,6944, 6488,6832, 6496,6920, 6504,7344, 6512,7048, + 6520,7856, 6528,6720, 6536,6728, 6544,6976, 6552,7008, 6560,6752, + 6568,7448, 6576,7008, 6584,7576, 6592,6736, 6600,6744, 6608,6992, + 6616,6896, 6624,6936, 6632,7408, 6640,7064, 6648,7920, 6712,7280, + 6744,6960, 6760,7472, 6768,6936, 6776,7984, 6800,6848, 6808,6856, + 6832,6880, 6840,6888, 6848,7040, 6856,7048, 6864,7104, 6872,7024, + 6880,7072, 6888,7536, 6896,7136, 6904,8048, 6952,7496, 6968,7624, + 6984,7008, 7000,7088, 7016,7600, 7024,7112, 7032,8112, 7056,7104, + 7064,7112, 7080,7512, 7088,7136, 7096,7640, 7128,7152, 7144,7664, + 7160,8176, 7176,7200, 7192,7216, 7224,7272, 7240,7264, 7256,7280, + 7288,7736, 7296,7680, 7304,7712, 7312,7936, 7320,7968, 7328,7688, + 7336,7720, 7344,7944, 7352,7976, 7360,7696, 7368,7728, 7376,7952, + 7384,7984, 7392,7704, 7400,7736, 7408,7960, 7416,7800, 7432,7456, + 7448,7472, 7480,7592, 7496,7520, 7512,7536, 7528,7976, 7544,7864, + 7552,7744, 7560,7776, 7568,8000, 7576,8032, 7584,7752, 7592,7784, + 7600,8008, 7608,8040, 7616,7760, 7624,7792, 7632,8016, 7640,8048, + 7648,7768, 7656,7800, 7664,8024, 7672,7928, 7688,7712, 7704,7728, + 7752,7776, 7768,7792, 7800,7992, 7816,7840, 7824,8064, 7832,8096, + 7856,8072, 7864,8104, 7872,8064, 7880,8072, 7888,8080, 7896,8112, + 7904,8096, 7912,8104, 7920,8088, 7928,8056, 7944,7968, 7960,7984, + 8008,8032, 8024,8048, 8056,8120, 8072,8096, 8080,8128, 8088,8160, + 8112,8136, 8120,8168, 8136,8160, 8152,8176 +}; + +const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE_2048_TABLE_LENGTH] = +{ + /* 8x2, size 3808 */ + 8,4096, 16,8192, 24,12288, 32,512, 40,4608, 48,8704, 56,12800, 64,1024, + 72,5120, 80,9216, 88,13312, 96,1536, 104,5632, 112,9728, 120,13824, + 128,2048, 136,6144, 144,10240, 152,14336, 160,2560, 168,6656, 176,10752, + 184,14848, 192,3072, 200,7168, 208,11264, 216,15360, 224,3584, 232,7680, + 240,11776, 248,15872, 256,1024, 264,4160, 272,8256, 280,12352, 288,576, + 296,4672, 304,8768, 312,12864, 320,1088, 328,5184, 336,9280, 344,13376, + 352,1600, 360,5696, 368,9792, 376,13888, 384,2112, 392,6208, 400,10304, + 408,14400, 416,2624, 424,6720, 432,10816, 440,14912, 448,3136, 456,7232, + 464,11328, 472,15424, 480,3648, 488,7744, 496,11840, 504,15936, 512,2048, + 520,4224, 528,8320, 536,12416, 544,640, 552,4736, 560,8832, 568,12928, + 576,1152, 584,5248, 592,9344, 600,13440, 608,1664, 616,5760, 624,9856, + 632,13952, 640,2176, 648,6272, 656,10368, 664,14464, 672,2688, 680,6784, + 688,10880, 696,14976, 704,3200, 712,7296, 720,11392, 728,15488, 736,3712, + 744,7808, 752,11904, 760,16000, 768,3072, 776,4288, 784,8384, 792,12480, + 800,3200, 808,4800, 816,8896, 824,12992, 832,1216, 840,5312, 848,9408, + 856,13504, 864,1728, 872,5824, 880,9920, 888,14016, 896,2240, 904,6336, + 912,10432, 920,14528, 928,2752, 936,6848, 944,10944, 952,15040, 960,3264, + 968,7360, 976,11456, 984,15552, 992,3776, 1000,7872, 1008,11968, 1016,16064, + 1032,4352, 1040,8448, 1048,12544, 1056,3072, 1064,4864, 1072,8960, + 1080,13056, 1088,1280, 1096,5376, 1104,9472, 1112,13568, 1120,1792, + 1128,5888, 1136,9984, 1144,14080, 1152,2304, 1160,6400, 1168,10496, + 1176,14592, 1184,2816, 1192,6912, 1200,11008, 1208,15104, 1216,3328, + 1224,7424, 1232,11520, 1240,15616, 1248,3840, 1256,7936, 1264,12032, + 1272,16128, 1288,4416, 1296,8512, 1304,12608, 1312,3328, 1320,4928, + 1328,9024, 1336,13120, 1352,5440, 1360,9536, 1368,13632, 1376,1856, + 1384,5952, 1392,10048, 1400,14144, 1408,2368, 1416,6464, 1424,10560, + 1432,14656, 1440,2880, 1448,6976, 1456,11072, 1464,15168, 1472,3392, + 1480,7488, 1488,11584, 1496,15680, 1504,3904, 1512,8000, 1520,12096, + 1528,16192, 1536,2112, 1544,4480, 1552,8576, 1560,12672, 1568,2240, + 1576,4992, 1584,9088, 1592,13184, 1600,2368, 1608,5504, 1616,9600, + 1624,13696, 1632,1920, 1640,6016, 1648,10112, 1656,14208, 1664,2432, + 1672,6528, 1680,10624, 1688,14720, 1696,2944, 1704,7040, 1712,11136, + 1720,15232, 1728,3456, 1736,7552, 1744,11648, 1752,15744, 1760,3968, + 1768,8064, 1776,12160, 1784,16256, 1792,3136, 1800,4544, 1808,8640, + 1816,12736, 1824,3264, 1832,5056, 1840,9152, 1848,13248, 1856,3392, + 1864,5568, 1872,9664, 1880,13760, 1888,1984, 1896,6080, 1904,10176, + 1912,14272, 1920,2496, 1928,6592, 1936,10688, 1944,14784, 1952,3008, + 1960,7104, 1968,11200, 1976,15296, 1984,3520, 1992,7616, 2000,11712, + 2008,15808, 2016,4032, 2024,8128, 2032,12224, 2040,16320, 2048,4096, + 2056,4104, 2064,8200, 2072,12296, 2080,4224, 2088,4616, 2096,8712, + 2104,12808, 2112,4352, 2120,5128, 2128,9224, 2136,13320, 2144,4480, + 2152,5640, 2160,9736, 2168,13832, 2176,4104, 2184,6152, 2192,10248, + 2200,14344, 2208,2568, 2216,6664, 2224,10760, 2232,14856, 2240,3080, + 2248,7176, 2256,11272, 2264,15368, 2272,3592, 2280,7688, 2288,11784, + 2296,15880, 2304,5120, 2312,4168, 2320,8264, 2328,12360, 2336,5248, + 2344,4680, 2352,8776, 2360,12872, 2368,5376, 2376,5192, 2384,9288, + 2392,13384, 2400,5504, 2408,5704, 2416,9800, 2424,13896, 2432,5128, + 2440,6216, 2448,10312, 2456,14408, 2464,2632, 2472,6728, 2480,10824, + 2488,14920, 2496,3144, 2504,7240, 2512,11336, 2520,15432, 2528,3656, + 2536,7752, 2544,11848, 2552,15944, 2560,6144, 2568,4232, 2576,8328, + 2584,12424, 2592,6272, 2600,4744, 2608,8840, 2616,12936, 2624,6400, + 2632,5256, 2640,9352, 2648,13448, 2656,6528, 2664,5768, 2672,9864, + 2680,13960, 2688,6152, 2696,6280, 2704,10376, 2712,14472, 2720,6280, + 2728,6792, 2736,10888, 2744,14984, 2752,3208, 2760,7304, 2768,11400, + 2776,15496, 2784,3720, 2792,7816, 2800,11912, 2808,16008, 2816,7168, + 2824,4296, 2832,8392, 2840,12488, 2848,7296, 2856,4808, 2864,8904, + 2872,13000, 2880,7424, 2888,5320, 2896,9416, 2904,13512, 2912,7552, + 2920,5832, 2928,9928, 2936,14024, 2944,7176, 2952,6344, 2960,10440, + 2968,14536, 2976,7304, 2984,6856, 2992,10952, 3000,15048, 3008,3272, + 3016,7368, 3024,11464, 3032,15560, 3040,3784, 3048,7880, 3056,11976, + 3064,16072, 3072,4160, 3080,4360, 3088,8456, 3096,12552, 3104,4288, + 3112,4872, 3120,8968, 3128,13064, 3136,4416, 3144,5384, 3152,9480, + 3160,13576, 3168,4544, 3176,5896, 3184,9992, 3192,14088, 3200,4168, + 3208,6408, 3216,10504, 3224,14600, 3232,4296, 3240,6920, 3248,11016, + 3256,15112, 3264,3336, 3272,7432, 3280,11528, 3288,15624, 3296,3848, + 3304,7944, 3312,12040, 3320,16136, 3328,5184, 3336,4424, 3344,8520, + 3352,12616, 3360,5312, 3368,4936, 3376,9032, 3384,13128, 3392,5440, + 3400,5448, 3408,9544, 3416,13640, 3424,5568, 3432,5960, 3440,10056, + 3448,14152, 3456,5192, 3464,6472, 3472,10568, 3480,14664, 3488,5320, + 3496,6984, 3504,11080, 3512,15176, 3520,5448, 3528,7496, 3536,11592, + 3544,15688, 3552,3912, 3560,8008, 3568,12104, 3576,16200, 3584,6208, + 3592,4488, 3600,8584, 3608,12680, 3616,6336, 3624,5000, 3632,9096, + 3640,13192, 3648,6464, 3656,5512, 3664,9608, 3672,13704, 3680,6592, + 3688,6024, 3696,10120, 3704,14216, 3712,6216, 3720,6536, 3728,10632, + 3736,14728, 3744,6344, 3752,7048, 3760,11144, 3768,15240, 3776,6472, + 3784,7560, 3792,11656, 3800,15752, 3808,3976, 3816,8072, 3824,12168, + 3832,16264, 3840,7232, 3848,4552, 3856,8648, 3864,12744, 3872,7360, + 3880,5064, 3888,9160, 3896,13256, 3904,7488, 3912,5576, 3920,9672, + 3928,13768, 3936,7616, 3944,6088, 3952,10184, 3960,14280, 3968,7240, + 3976,6600, 3984,10696, 3992,14792, 4000,7368, 4008,7112, 4016,11208, + 4024,15304, 4032,7496, 4040,7624, 4048,11720, 4056,15816, 4064,7624, + 4072,8136, 4080,12232, 4088,16328, 4096,8192, 4104,4112, 4112,8208, + 4120,12304, 4128,8320, 4136,4624, 4144,8720, 4152,12816, 4160,8448, + 4168,5136, 4176,9232, 4184,13328, 4192,8576, 4200,5648, 4208,9744, + 4216,13840, 4224,8200, 4232,6160, 4240,10256, 4248,14352, 4256,8328, + 4264,6672, 4272,10768, 4280,14864, 4288,8456, 4296,7184, 4304,11280, + 4312,15376, 4320,8584, 4328,7696, 4336,11792, 4344,15888, 4352,9216, + 4360,9232, 4368,8272, 4376,12368, 4384,9344, 4392,4688, 4400,8784, + 4408,12880, 4416,9472, 4424,5200, 4432,9296, 4440,13392, 4448,9600, + 4456,5712, 4464,9808, 4472,13904, 4480,9224, 4488,6224, 4496,10320, + 4504,14416, 4512,9352, 4520,6736, 4528,10832, 4536,14928, 4544,9480, + 4552,7248, 4560,11344, 4568,15440, 4576,9608, 4584,7760, 4592,11856, + 4600,15952, 4608,10240, 4616,10256, 4624,8336, 4632,12432, 4640,10368, + 4648,4752, 4656,8848, 4664,12944, 4672,10496, 4680,5264, 4688,9360, + 4696,13456, 4704,10624, 4712,5776, 4720,9872, 4728,13968, 4736,10248, + 4744,6288, 4752,10384, 4760,14480, 4768,10376, 4776,6800, 4784,10896, + 4792,14992, 4800,10504, 4808,7312, 4816,11408, 4824,15504, 4832,10632, + 4840,7824, 4848,11920, 4856,16016, 4864,11264, 4872,11280, 4880,8400, + 4888,12496, 4896,11392, 4904,11408, 4912,8912, 4920,13008, 4928,11520, + 4936,5328, 4944,9424, 4952,13520, 4960,11648, 4968,5840, 4976,9936, + 4984,14032, 4992,11272, 5000,6352, 5008,10448, 5016,14544, 5024,11400, + 5032,6864, 5040,10960, 5048,15056, 5056,11528, 5064,7376, 5072,11472, + 5080,15568, 5088,11656, 5096,7888, 5104,11984, 5112,16080, 5120,8256, + 5128,8272, 5136,8464, 5144,12560, 5152,8384, 5160,8400, 5168,8976, + 5176,13072, 5184,8512, 5192,5392, 5200,9488, 5208,13584, 5216,8640, + 5224,5904, 5232,10000, 5240,14096, 5248,8264, 5256,6416, 5264,10512, + 5272,14608, 5280,8392, 5288,6928, 5296,11024, 5304,15120, 5312,8520, + 5320,7440, 5328,11536, 5336,15632, 5344,8648, 5352,7952, 5360,12048, + 5368,16144, 5376,9280, 5384,9296, 5392,8528, 5400,12624, 5408,9408, + 5416,9424, 5424,9040, 5432,13136, 5440,9536, 5448,5456, 5456,9552, + 5464,13648, 5472,9664, 5480,5968, 5488,10064, 5496,14160, 5504,9288, + 5512,6480, 5520,10576, 5528,14672, 5536,9416, 5544,6992, 5552,11088, + 5560,15184, 5568,9544, 5576,7504, 5584,11600, 5592,15696, 5600,9672, + 5608,8016, 5616,12112, 5624,16208, 5632,10304, 5640,10320, 5648,8592, + 5656,12688, 5664,10432, 5672,10448, 5680,9104, 5688,13200, 5696,10560, + 5704,10576, 5712,9616, 5720,13712, 5728,10688, 5736,6032, 5744,10128, + 5752,14224, 5760,10312, 5768,6544, 5776,10640, 5784,14736, 5792,10440, + 5800,7056, 5808,11152, 5816,15248, 5824,10568, 5832,7568, 5840,11664, + 5848,15760, 5856,10696, 5864,8080, 5872,12176, 5880,16272, 5888,11328, + 5896,11344, 5904,8656, 5912,12752, 5920,11456, 5928,11472, 5936,9168, + 5944,13264, 5952,11584, 5960,11600, 5968,9680, 5976,13776, 5984,11712, + 5992,6096, 6000,10192, 6008,14288, 6016,11336, 6024,6608, 6032,10704, + 6040,14800, 6048,11464, 6056,7120, 6064,11216, 6072,15312, 6080,11592, + 6088,7632, 6096,11728, 6104,15824, 6112,11720, 6120,8144, 6128,12240, + 6136,16336, 6144,12288, 6152,12304, 6160,8216, 6168,12312, 6176,12416, + 6184,12432, 6192,8728, 6200,12824, 6208,12544, 6216,12560, 6224,9240, + 6232,13336, 6240,12672, 6248,12688, 6256,9752, 6264,13848, 6272,12296, + 6280,12312, 6288,10264, 6296,14360, 6304,12424, 6312,6680, 6320,10776, + 6328,14872, 6336,12552, 6344,7192, 6352,11288, 6360,15384, 6368,12680, + 6376,7704, 6384,11800, 6392,15896, 6400,13312, 6408,13328, 6416,8280, + 6424,12376, 6432,13440, 6440,13456, 6448,8792, 6456,12888, 6464,13568, + 6472,13584, 6480,9304, 6488,13400, 6496,13696, 6504,13712, 6512,9816, + 6520,13912, 6528,13320, 6536,13336, 6544,10328, 6552,14424, 6560,13448, + 6568,6744, 6576,10840, 6584,14936, 6592,13576, 6600,7256, 6608,11352, + 6616,15448, 6624,13704, 6632,7768, 6640,11864, 6648,15960, 6656,14336, + 6664,14352, 6672,8344, 6680,12440, 6688,14464, 6696,14480, 6704,8856, + 6712,12952, 6720,14592, 6728,14608, 6736,9368, 6744,13464, 6752,14720, + 6760,14736, 6768,9880, 6776,13976, 6784,14344, 6792,14360, 6800,10392, + 6808,14488, 6816,14472, 6824,14488, 6832,10904, 6840,15000, 6848,14600, + 6856,7320, 6864,11416, 6872,15512, 6880,14728, 6888,7832, 6896,11928, + 6904,16024, 6912,15360, 6920,15376, 6928,8408, 6936,12504, 6944,15488, + 6952,15504, 6960,8920, 6968,13016, 6976,15616, 6984,15632, 6992,9432, + 7000,13528, 7008,15744, 7016,15760, 7024,9944, 7032,14040, 7040,15368, + 7048,15384, 7056,10456, 7064,14552, 7072,15496, 7080,15512, 7088,10968, + 7096,15064, 7104,15624, 7112,7384, 7120,11480, 7128,15576, 7136,15752, + 7144,7896, 7152,11992, 7160,16088, 7168,12352, 7176,12368, 7184,8472, + 7192,12568, 7200,12480, 7208,12496, 7216,8984, 7224,13080, 7232,12608, + 7240,12624, 7248,9496, 7256,13592, 7264,12736, 7272,12752, 7280,10008, + 7288,14104, 7296,12360, 7304,12376, 7312,10520, 7320,14616, 7328,12488, + 7336,12504, 7344,11032, 7352,15128, 7360,12616, 7368,7448, 7376,11544, + 7384,15640, 7392,12744, 7400,7960, 7408,12056, 7416,16152, 7424,13376, + 7432,13392, 7440,8536, 7448,12632, 7456,13504, 7464,13520, 7472,9048, + 7480,13144, 7488,13632, 7496,13648, 7504,9560, 7512,13656, 7520,13760, + 7528,13776, 7536,10072, 7544,14168, 7552,13384, 7560,13400, 7568,10584, + 7576,14680, 7584,13512, 7592,13528, 7600,11096, 7608,15192, 7616,13640, + 7624,13656, 7632,11608, 7640,15704, 7648,13768, 7656,8024, 7664,12120, + 7672,16216, 7680,14400, 7688,14416, 7696,8600, 7704,12696, 7712,14528, + 7720,14544, 7728,9112, 7736,13208, 7744,14656, 7752,14672, 7760,9624, + 7768,13720, 7776,14784, 7784,14800, 7792,10136, 7800,14232, 7808,14408, + 7816,14424, 7824,10648, 7832,14744, 7840,14536, 7848,14552, 7856,11160, + 7864,15256, 7872,14664, 7880,14680, 7888,11672, 7896,15768, 7904,14792, + 7912,8088, 7920,12184, 7928,16280, 7936,15424, 7944,15440, 7952,8664, + 7960,12760, 7968,15552, 7976,15568, 7984,9176, 7992,13272, 8000,15680, + 8008,15696, 8016,9688, 8024,13784, 8032,15808, 8040,15824, 8048,10200, + 8056,14296, 8064,15432, 8072,15448, 8080,10712, 8088,14808, 8096,15560, + 8104,15576, 8112,11224, 8120,15320, 8128,15688, 8136,15704, 8144,11736, + 8152,15832, 8160,15816, 8168,15832, 8176,12248, 8184,16344, 8200,8320, + 8208,8224, 8216,12320, 8232,10368, 8240,8736, 8248,12832, 8256,8448, + 8264,8384, 8272,9248, 8280,13344, 8288,9232, 8296,10432, 8304,9760, + 8312,13856, 8328,12416, 8336,10272, 8344,14368, 8352,12296, 8360,14464, + 8368,10784, 8376,14880, 8384,8456, 8392,12480, 8400,11296, 8408,15392, + 8416,12552, 8424,14528, 8432,11808, 8440,15904, 8448,9216, 8456,8576, + 8464,9232, 8472,12384, 8480,9248, 8488,10624, 8496,8800, 8504,12896, + 8512,9472, 8520,8640, 8528,9312, 8536,13408, 8544,9296, 8552,10688, + 8560,9824, 8568,13920, 8576,9224, 8584,12672, 8592,10336, 8600,14432, + 8608,13320, 8616,14720, 8624,10848, 8632,14944, 8640,9480, 8648,12736, + 8656,11360, 8664,15456, 8672,13576, 8680,14784, 8688,11872, 8696,15968, + 8704,12288, 8712,12416, 8720,12296, 8728,12448, 8736,12304, 8744,10376, + 8752,8864, 8760,12960, 8768,12352, 8776,12480, 8784,9376, 8792,13472, + 8800,12368, 8808,10440, 8816,9888, 8824,13984, 8832,12320, 8840,12424, + 8848,10400, 8856,14496, 8864,12312, 8872,14472, 8880,10912, 8888,15008, + 8896,12384, 8904,12488, 8912,11424, 8920,15520, 8928,12568, 8936,14536, + 8944,11936, 8952,16032, 8960,12544, 8968,12672, 8976,12552, 8984,12512, + 8992,12560, 9000,10632, 9008,12568, 9016,13024, 9024,12608, 9032,12736, + 9040,9440, 9048,13536, 9056,12624, 9064,10696, 9072,9952, 9080,14048, + 9088,9240, 9096,12680, 9104,10464, 9112,14560, 9120,13336, 9128,14728, + 9136,10976, 9144,15072, 9152,9496, 9160,12744, 9168,11488, 9176,15584, + 9184,13592, 9192,14792, 9200,12000, 9208,16096, 9224,9344, 9232,9248, + 9240,12576, 9256,11392, 9264,12560, 9272,13088, 9280,9472, 9288,9408, + 9296,9504, 9304,13600, 9312,9488, 9320,11456, 9328,10016, 9336,14112, + 9352,13440, 9360,10528, 9368,14624, 9376,12360, 9384,15488, 9392,11040, + 9400,15136, 9408,9480, 9416,13504, 9424,11552, 9432,15648, 9440,12616, + 9448,15552, 9456,12064, 9464,16160, 9480,9600, 9488,9504, 9496,12640, + 9512,11648, 9520,12624, 9528,13152, 9544,9664, 9552,9568, 9560,13664, + 9576,11712, 9584,10080, 9592,14176, 9608,13696, 9616,10592, 9624,14688, + 9632,13384, 9640,15744, 9648,11104, 9656,15200, 9672,13760, 9680,11616, + 9688,15712, 9696,13640, 9704,15808, 9712,12128, 9720,16224, 9728,13312, + 9736,13440, 9744,13320, 9752,12704, 9760,13328, 9768,11400, 9776,13336, + 9784,13216, 9792,13376, 9800,13504, 9808,13384, 9816,13728, 9824,13392, + 9832,11464, 9840,10144, 9848,14240, 9856,13344, 9864,13448, 9872,10656, + 9880,14752, 9888,12376, 9896,15496, 9904,11168, 9912,15264, 9920,13408, + 9928,13512, 9936,11680, 9944,15776, 9952,12632, 9960,15560, 9968,12192, + 9976,16288, 9984,13568, 9992,13696, 10000,13576, 10008,12768, 10016,13584, + 10024,11656, 10032,13592, 10040,13280, 10048,13632, 10056,13760, + 10064,13640, 10072,13792, 10080,13648, 10088,11720, 10096,10208, + 10104,14304, 10112,13600, 10120,13704, 10128,10720, 10136,14816, + 10144,13400, 10152,15752, 10160,11232, 10168,15328, 10176,13664, + 10184,13768, 10192,11744, 10200,15840, 10208,13656, 10216,15816, + 10224,12256, 10232,16352, 10248,10272, 10256,10368, 10264,12328, + 10280,10384, 10288,10376, 10296,12840, 10304,11264, 10312,11296, + 10320,11392, 10328,13352, 10336,11272, 10344,10448, 10352,11400, + 10360,13864, 10376,12432, 10392,14376, 10400,12328, 10408,14480, + 10416,10792, 10424,14888, 10432,11280, 10440,12496, 10448,11304, + 10456,15400, 10464,11288, 10472,14544, 10480,11816, 10488,15912, + 10496,11264, 10504,11272, 10512,11280, 10520,12392, 10528,11296, + 10536,10640, 10544,12496, 10552,12904, 10560,11328, 10568,11360, + 10576,11456, 10584,13416, 10592,11336, 10600,10704, 10608,11464, + 10616,13928, 10624,11392, 10632,12688, 10640,11304, 10648,14440, + 10656,13352, 10664,14736, 10672,10856, 10680,14952, 10688,11344, + 10696,12752, 10704,11368, 10712,15464, 10720,11352, 10728,14800, + 10736,11880, 10744,15976, 10752,14336, 10760,14368, 10768,14464, + 10776,12456, 10784,14344, 10792,14376, 10800,14472, 10808,12968, + 10816,15360, 10824,15392, 10832,15488, 10840,13480, 10848,15368, + 10856,15400, 10864,15496, 10872,13992, 10880,14352, 10888,12440, + 10896,14480, 10904,14504, 10912,14360, 10920,14488, 10928,14488, + 10936,15016, 10944,15376, 10952,12504, 10960,11432, 10968,15528, + 10976,15384, 10984,14552, 10992,11944, 11000,16040, 11008,14400, + 11016,14432, 11024,14528, 11032,12520, 11040,14408, 11048,14440, + 11056,14536, 11064,13032, 11072,15424, 11080,15456, 11088,15552, + 11096,13544, 11104,15432, 11112,15464, 11120,15560, 11128,14056, + 11136,14416, 11144,12696, 11152,14544, 11160,14568, 11168,14424, + 11176,14744, 11184,14552, 11192,15080, 11200,15440, 11208,12760, + 11216,11496, 11224,15592, 11232,15448, 11240,14808, 11248,12008, + 11256,16104, 11272,11296, 11280,11392, 11288,12584, 11304,11408, + 11312,12688, 11320,13096, 11328,11520, 11336,11552, 11344,11648, + 11352,13608, 11360,11528, 11368,11472, 11376,11656, 11384,14120, + 11400,13456, 11416,14632, 11424,12392, 11432,15504, 11440,14440, + 11448,15144, 11456,11536, 11464,13520, 11472,11560, 11480,15656, + 11488,11544, 11496,15568, 11504,12072, 11512,16168, 11528,11552, + 11536,11648, 11544,12648, 11560,11664, 11568,12752, 11576,13160, + 11592,11616, 11600,11712, 11608,13672, 11624,11728, 11632,11720, + 11640,14184, 11656,13712, 11672,14696, 11680,13416, 11688,15760, + 11696,15464, 11704,15208, 11720,13776, 11736,15720, 11744,13672, + 11752,15824, 11760,12136, 11768,16232, 11776,14592, 11784,14624, + 11792,14720, 11800,12712, 11808,14600, 11816,14632, 11824,14728, + 11832,13224, 11840,15616, 11848,15648, 11856,15744, 11864,13736, + 11872,15624, 11880,15656, 11888,15752, 11896,14248, 11904,14608, + 11912,13464, 11920,14736, 11928,14760, 11936,14616, 11944,15512, + 11952,14744, 11960,15272, 11968,15632, 11976,13528, 11984,15760, + 11992,15784, 12000,15640, 12008,15576, 12016,12200, 12024,16296, + 12032,14656, 12040,14688, 12048,14784, 12056,12776, 12064,14664, + 12072,14696, 12080,14792, 12088,13288, 12096,15680, 12104,15712, + 12112,15808, 12120,13800, 12128,15688, 12136,15720, 12144,15816, + 12152,14312, 12160,14672, 12168,13720, 12176,14800, 12184,14824, + 12192,14680, 12200,15768, 12208,14808, 12216,15336, 12224,15696, + 12232,13784, 12240,15824, 12248,15848, 12256,15704, 12264,15832, + 12272,15832, 12280,16360, 12312,12336, 12344,12848, 12352,12544, + 12360,12552, 12368,12560, 12376,13360, 12384,12576, 12392,12584, + 12400,13336, 12408,13872, 12424,12448, 12440,14384, 12456,14496, + 12464,14472, 12472,14896, 12480,12672, 12488,12512, 12496,12688, + 12504,15408, 12512,12680, 12520,14560, 12528,14728, 12536,15920, + 12544,13312, 12552,13320, 12560,13328, 12568,13336, 12576,13344, + 12584,13352, 12592,13360, 12600,12912, 12608,13568, 12616,13576, + 12624,13584, 12632,13424, 12640,13600, 12648,13608, 12656,13400, + 12664,13936, 12672,13440, 12680,12704, 12688,13456, 12696,14448, + 12704,13448, 12712,14752, 12720,15496, 12728,14960, 12736,13696, + 12744,12768, 12752,13712, 12760,15472, 12768,13704, 12776,14816, + 12784,15752, 12792,15984, 12800,14336, 12808,14464, 12816,14344, + 12824,14472, 12832,14352, 12840,14480, 12848,14360, 12856,12976, + 12864,14400, 12872,14528, 12880,14408, 12888,13488, 12896,14416, + 12904,14544, 12912,14424, 12920,14000, 12928,14368, 12936,14496, + 12944,14376, 12952,14512, 12960,14384, 12968,14504, 12976,14488, + 12984,15024, 12992,14432, 13000,14560, 13008,14440, 13016,15536, + 13024,14448, 13032,14568, 13040,14744, 13048,16048, 13056,14592, + 13064,14720, 13072,14600, 13080,14728, 13088,14608, 13096,14736, + 13104,14616, 13112,14744, 13120,14656, 13128,14784, 13136,14664, + 13144,13552, 13152,14672, 13160,14800, 13168,14680, 13176,14064, + 13184,14624, 13192,14752, 13200,14632, 13208,14576, 13216,13464, + 13224,14760, 13232,15512, 13240,15088, 13248,14688, 13256,14816, + 13264,14696, 13272,15600, 13280,13720, 13288,14824, 13296,15768, + 13304,16112, 13336,13360, 13368,14616, 13376,13568, 13384,13576, + 13392,13584, 13400,13616, 13408,13600, 13416,13608, 13424,13592, + 13432,14128, 13448,13472, 13464,14640, 13480,15520, 13488,14536, + 13496,15152, 13504,13696, 13512,13536, 13520,13712, 13528,15664, + 13536,13704, 13544,15584, 13552,14792, 13560,16176, 13592,13616, + 13624,14680, 13656,13680, 13688,14192, 13704,13728, 13720,14704, + 13736,15776, 13744,15560, 13752,15216, 13768,13792, 13784,15728, + 13800,15840, 13808,15816, 13816,16240, 13824,15360, 13832,15488, + 13840,15368, 13848,15496, 13856,15376, 13864,15504, 13872,15384, + 13880,15512, 13888,15424, 13896,15552, 13904,15432, 13912,15560, + 13920,15440, 13928,15568, 13936,15448, 13944,14256, 13952,15392, + 13960,15520, 13968,15400, 13976,14768, 13984,15408, 13992,15528, + 14000,14552, 14008,15280, 14016,15456, 14024,15584, 14032,15464, + 14040,15792, 14048,15472, 14056,15592, 14064,14808, 14072,16304, + 14080,15616, 14088,15744, 14096,15624, 14104,15752, 14112,15632, + 14120,15760, 14128,15640, 14136,15768, 14144,15680, 14152,15808, + 14160,15688, 14168,15816, 14176,15696, 14184,15824, 14192,15704, + 14200,14320, 14208,15648, 14216,15776, 14224,15656, 14232,14832, + 14240,15664, 14248,15784, 14256,15576, 14264,15344, 14272,15712, + 14280,15840, 14288,15720, 14296,15856, 14304,15728, 14312,15848, + 14320,15832, 14328,16368, 14392,14488, 14400,14592, 14408,14600, + 14416,14608, 14424,14616, 14432,14624, 14440,14632, 14448,14640, + 14456,15512, 14504,14512, 14520,14904, 14528,14720, 14536,14728, + 14544,14736, 14552,15416, 14560,14752, 14568,14576, 14584,15928, + 14576,14760, 14592,15360, 14600,15368, 14608,15376, 14616,15384, + 14624,15392, 14632,15400, 14640,15408, 14648,15416, 14656,15616, + 14664,15624, 14672,15632, 14680,15640, 14688,15648, 14696,15656, + 14704,15664, 14712,15576, 14720,15488, 14728,15496, 14736,15504, + 14744,15512, 14752,15520, 14760,14768, 14776,14968, 14768,15528, + 14784,15744, 14792,15752, 14800,15760, 14808,15480, 14816,15776, + 14824,14832, 14840,15992, 14832,15784, 14856,14864, 14864,14880, + 14872,14896, 14880,14976, 14888,14992, 14896,15008, 14904,15024, + 14912,15104, 14920,15120, 14928,15136, 14936,15152, 14944,15232, + 14952,15248, 14960,15264, 14968,15280, 14984,15008, 15000,15024, + 15016,15024, 15040,15112, 15048,15128, 15056,15144, 15064,15544, + 15072,15240, 15080,15256, 15088,15272, 15096,16056, 15104,15872, + 15112,15888, 15120,15904, 15128,15920, 15136,16000, 15144,16016, + 15152,16032, 15160,16048, 15168,16128, 15176,16144, 15184,16160, + 15192,16176, 15200,16256, 15208,16272, 15216,16288, 15224,16304, + 15232,15880, 15240,15896, 15248,15912, 15256,15928, 15264,16008, + 15272,16024, 15280,16040, 15288,16056, 15296,16136, 15304,16152, + 15312,16168, 15320,15608, 15328,16264, 15336,16280, 15344,16296, + 15352,16120, 15416,15512, 15424,15616, 15432,15624, 15440,15632, + 15448,15640, 15456,15648, 15464,15656, 15472,15664, 15480,15768, + 15528,15536, 15544,16048, 15552,15744, 15560,15752, 15568,15760, + 15576,15672, 15584,15776, 15592,15600, 15600,15784, 15608,16184, + 15672,15768, 15736,15832, 15784,15792, 15800,16304, 15848,15856, + 15880,16000, 15864,16248, 15888,16000, 15896,16008, 15904,16000, + 15912,16016, 15920,16008, 15928,16024, 15936,16128, 15944,16160, + 15952,16256, 15960,16288, 15968,16136, 15976,16168, 15984,16264, + 15992,16296, 16008,16032, 16024,16040, 16064,16144, 16040,16048, + 16072,16176, 16080,16272, 16088,16304, 16096,16152, 16104,16184, + 16112,16280, 16136,16256, 16120,16312, 16144,16256, 16152,16264, + 16160,16256, 16168,16272, 16176,16264, 16184,16280, 16200,16208, + 16208,16224, 16216,16240, 16224,16320, 16232,16336, 16240,16352, + 16248,16368, 16264,16288, 16280,16296, 16296,16304, 16344,16368, + 16328,16352, 16360,16368 +}; + +const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE_4096_TABLE_LENGTH] = +{ + /* radix 8, size 4032 */ + 8,4096, 16,8192, 24,12288, 32,16384, 40,20480, 48,24576, 56,28672, 64,512, + 72,4608, 80,8704, 88,12800, 96,16896, 104,20992, 112,25088, 120,29184, + 128,1024, 136,5120, 144,9216, 152,13312, 160,17408, 168,21504, 176,25600, + 184,29696, 192,1536, 200,5632, 208,9728, 216,13824, 224,17920, 232,22016, + 240,26112, 248,30208, 256,2048, 264,6144, 272,10240, 280,14336, 288,18432, + 296,22528, 304,26624, 312,30720, 320,2560, 328,6656, 336,10752, 344,14848, + 352,18944, 360,23040, 368,27136, 376,31232, 384,3072, 392,7168, 400,11264, + 408,15360, 416,19456, 424,23552, 432,27648, 440,31744, 448,3584, 456,7680, + 464,11776, 472,15872, 480,19968, 488,24064, 496,28160, 504,32256, 520,4160, + 528,8256, 536,12352, 544,16448, 552,20544, 560,24640, 568,28736, 584,4672, + 592,8768, 600,12864, 608,16960, 616,21056, 624,25152, 632,29248, 640,1088, + 648,5184, 656,9280, 664,13376, 672,17472, 680,21568, 688,25664, 696,29760, + 704,1600, 712,5696, 720,9792, 728,13888, 736,17984, 744,22080, 752,26176, + 760,30272, 768,2112, 776,6208, 784,10304, 792,14400, 800,18496, 808,22592, + 816,26688, 824,30784, 832,2624, 840,6720, 848,10816, 856,14912, 864,19008, + 872,23104, 880,27200, 888,31296, 896,3136, 904,7232, 912,11328, 920,15424, + 928,19520, 936,23616, 944,27712, 952,31808, 960,3648, 968,7744, 976,11840, + 984,15936, 992,20032, 1000,24128, 1008,28224, 1016,32320, 1032,4224, + 1040,8320, 1048,12416, 1056,16512, 1064,20608, 1072,24704, 1080,28800, + 1096,4736, 1104,8832, 1112,12928, 1120,17024, 1128,21120, 1136,25216, + 1144,29312, 1160,5248, 1168,9344, 1176,13440, 1184,17536, 1192,21632, + 1200,25728, 1208,29824, 1216,1664, 1224,5760, 1232,9856, 1240,13952, + 1248,18048, 1256,22144, 1264,26240, 1272,30336, 1280,2176, 1288,6272, + 1296,10368, 1304,14464, 1312,18560, 1320,22656, 1328,26752, 1336,30848, + 1344,2688, 1352,6784, 1360,10880, 1368,14976, 1376,19072, 1384,23168, + 1392,27264, 1400,31360, 1408,3200, 1416,7296, 1424,11392, 1432,15488, + 1440,19584, 1448,23680, 1456,27776, 1464,31872, 1472,3712, 1480,7808, + 1488,11904, 1496,16000, 1504,20096, 1512,24192, 1520,28288, 1528,32384, + 1544,4288, 1552,8384, 1560,12480, 1568,16576, 1576,20672, 1584,24768, + 1592,28864, 1608,4800, 1616,8896, 1624,12992, 1632,17088, 1640,21184, + 1648,25280, 1656,29376, 1672,5312, 1680,9408, 1688,13504, 1696,17600, + 1704,21696, 1712,25792, 1720,29888, 1736,5824, 1744,9920, 1752,14016, + 1760,18112, 1768,22208, 1776,26304, 1784,30400, 1792,2240, 1800,6336, + 1808,10432, 1816,14528, 1824,18624, 1832,22720, 1840,26816, 1848,30912, + 1856,2752, 1864,6848, 1872,10944, 1880,15040, 1888,19136, 1896,23232, + 1904,27328, 1912,31424, 1920,3264, 1928,7360, 1936,11456, 1944,15552, + 1952,19648, 1960,23744, 1968,27840, 1976,31936, 1984,3776, 1992,7872, + 2000,11968, 2008,16064, 2016,20160, 2024,24256, 2032,28352, 2040,32448, + 2056,4352, 2064,8448, 2072,12544, 2080,16640, 2088,20736, 2096,24832, + 2104,28928, 2120,4864, 2128,8960, 2136,13056, 2144,17152, 2152,21248, + 2160,25344, 2168,29440, 2184,5376, 2192,9472, 2200,13568, 2208,17664, + 2216,21760, 2224,25856, 2232,29952, 2248,5888, 2256,9984, 2264,14080, + 2272,18176, 2280,22272, 2288,26368, 2296,30464, 2312,6400, 2320,10496, + 2328,14592, 2336,18688, 2344,22784, 2352,26880, 2360,30976, 2368,2816, + 2376,6912, 2384,11008, 2392,15104, 2400,19200, 2408,23296, 2416,27392, + 2424,31488, 2432,3328, 2440,7424, 2448,11520, 2456,15616, 2464,19712, + 2472,23808, 2480,27904, 2488,32000, 2496,3840, 2504,7936, 2512,12032, + 2520,16128, 2528,20224, 2536,24320, 2544,28416, 2552,32512, 2568,4416, + 2576,8512, 2584,12608, 2592,16704, 2600,20800, 2608,24896, 2616,28992, + 2632,4928, 2640,9024, 2648,13120, 2656,17216, 2664,21312, 2672,25408, + 2680,29504, 2696,5440, 2704,9536, 2712,13632, 2720,17728, 2728,21824, + 2736,25920, 2744,30016, 2760,5952, 2768,10048, 2776,14144, 2784,18240, + 2792,22336, 2800,26432, 2808,30528, 2824,6464, 2832,10560, 2840,14656, + 2848,18752, 2856,22848, 2864,26944, 2872,31040, 2888,6976, 2896,11072, + 2904,15168, 2912,19264, 2920,23360, 2928,27456, 2936,31552, 2944,3392, + 2952,7488, 2960,11584, 2968,15680, 2976,19776, 2984,23872, 2992,27968, + 3000,32064, 3008,3904, 3016,8000, 3024,12096, 3032,16192, 3040,20288, + 3048,24384, 3056,28480, 3064,32576, 3080,4480, 3088,8576, 3096,12672, + 3104,16768, 3112,20864, 3120,24960, 3128,29056, 3144,4992, 3152,9088, + 3160,13184, 3168,17280, 3176,21376, 3184,25472, 3192,29568, 3208,5504, + 3216,9600, 3224,13696, 3232,17792, 3240,21888, 3248,25984, 3256,30080, + 3272,6016, 3280,10112, 3288,14208, 3296,18304, 3304,22400, 3312,26496, + 3320,30592, 3336,6528, 3344,10624, 3352,14720, 3360,18816, 3368,22912, + 3376,27008, 3384,31104, 3400,7040, 3408,11136, 3416,15232, 3424,19328, + 3432,23424, 3440,27520, 3448,31616, 3464,7552, 3472,11648, 3480,15744, + 3488,19840, 3496,23936, 3504,28032, 3512,32128, 3520,3968, 3528,8064, + 3536,12160, 3544,16256, 3552,20352, 3560,24448, 3568,28544, 3576,32640, + 3592,4544, 3600,8640, 3608,12736, 3616,16832, 3624,20928, 3632,25024, + 3640,29120, 3656,5056, 3664,9152, 3672,13248, 3680,17344, 3688,21440, + 3696,25536, 3704,29632, 3720,5568, 3728,9664, 3736,13760, 3744,17856, + 3752,21952, 3760,26048, 3768,30144, 3784,6080, 3792,10176, 3800,14272, + 3808,18368, 3816,22464, 3824,26560, 3832,30656, 3848,6592, 3856,10688, + 3864,14784, 3872,18880, 3880,22976, 3888,27072, 3896,31168, 3912,7104, + 3920,11200, 3928,15296, 3936,19392, 3944,23488, 3952,27584, 3960,31680, + 3976,7616, 3984,11712, 3992,15808, 4000,19904, 4008,24000, 4016,28096, + 4024,32192, 4040,8128, 4048,12224, 4056,16320, 4064,20416, 4072,24512, + 4080,28608, 4088,32704, 4112,8200, 4120,12296, 4128,16392, 4136,20488, + 4144,24584, 4152,28680, 4168,4616, 4176,8712, 4184,12808, 4192,16904, + 4200,21000, 4208,25096, 4216,29192, 4232,5128, 4240,9224, 4248,13320, + 4256,17416, 4264,21512, 4272,25608, 4280,29704, 4296,5640, 4304,9736, + 4312,13832, 4320,17928, 4328,22024, 4336,26120, 4344,30216, 4360,6152, + 4368,10248, 4376,14344, 4384,18440, 4392,22536, 4400,26632, 4408,30728, + 4424,6664, 4432,10760, 4440,14856, 4448,18952, 4456,23048, 4464,27144, + 4472,31240, 4488,7176, 4496,11272, 4504,15368, 4512,19464, 4520,23560, + 4528,27656, 4536,31752, 4552,7688, 4560,11784, 4568,15880, 4576,19976, + 4584,24072, 4592,28168, 4600,32264, 4624,8264, 4632,12360, 4640,16456, + 4648,20552, 4656,24648, 4664,28744, 4688,8776, 4696,12872, 4704,16968, + 4712,21064, 4720,25160, 4728,29256, 4744,5192, 4752,9288, 4760,13384, + 4768,17480, 4776,21576, 4784,25672, 4792,29768, 4808,5704, 4816,9800, + 4824,13896, 4832,17992, 4840,22088, 4848,26184, 4856,30280, 4872,6216, + 4880,10312, 4888,14408, 4896,18504, 4904,22600, 4912,26696, 4920,30792, + 4936,6728, 4944,10824, 4952,14920, 4960,19016, 4968,23112, 4976,27208, + 4984,31304, 5000,7240, 5008,11336, 5016,15432, 5024,19528, 5032,23624, + 5040,27720, 5048,31816, 5064,7752, 5072,11848, 5080,15944, 5088,20040, + 5096,24136, 5104,28232, 5112,32328, 5136,8328, 5144,12424, 5152,16520, + 5160,20616, 5168,24712, 5176,28808, 5200,8840, 5208,12936, 5216,17032, + 5224,21128, 5232,25224, 5240,29320, 5264,9352, 5272,13448, 5280,17544, + 5288,21640, 5296,25736, 5304,29832, 5320,5768, 5328,9864, 5336,13960, + 5344,18056, 5352,22152, 5360,26248, 5368,30344, 5384,6280, 5392,10376, + 5400,14472, 5408,18568, 5416,22664, 5424,26760, 5432,30856, 5448,6792, + 5456,10888, 5464,14984, 5472,19080, 5480,23176, 5488,27272, 5496,31368, + 5512,7304, 5520,11400, 5528,15496, 5536,19592, 5544,23688, 5552,27784, + 5560,31880, 5576,7816, 5584,11912, 5592,16008, 5600,20104, 5608,24200, + 5616,28296, 5624,32392, 5648,8392, 5656,12488, 5664,16584, 5672,20680, + 5680,24776, 5688,28872, 5712,8904, 5720,13000, 5728,17096, 5736,21192, + 5744,25288, 5752,29384, 5776,9416, 5784,13512, 5792,17608, 5800,21704, + 5808,25800, 5816,29896, 5840,9928, 5848,14024, 5856,18120, 5864,22216, + 5872,26312, 5880,30408, 5896,6344, 5904,10440, 5912,14536, 5920,18632, + 5928,22728, 5936,26824, 5944,30920, 5960,6856, 5968,10952, 5976,15048, + 5984,19144, 5992,23240, 6000,27336, 6008,31432, 6024,7368, 6032,11464, + 6040,15560, 6048,19656, 6056,23752, 6064,27848, 6072,31944, 6088,7880, + 6096,11976, 6104,16072, 6112,20168, 6120,24264, 6128,28360, 6136,32456, + 6160,8456, 6168,12552, 6176,16648, 6184,20744, 6192,24840, 6200,28936, + 6224,8968, 6232,13064, 6240,17160, 6248,21256, 6256,25352, 6264,29448, + 6288,9480, 6296,13576, 6304,17672, 6312,21768, 6320,25864, 6328,29960, + 6352,9992, 6360,14088, 6368,18184, 6376,22280, 6384,26376, 6392,30472, + 6416,10504, 6424,14600, 6432,18696, 6440,22792, 6448,26888, 6456,30984, + 6472,6920, 6480,11016, 6488,15112, 6496,19208, 6504,23304, 6512,27400, + 6520,31496, 6536,7432, 6544,11528, 6552,15624, 6560,19720, 6568,23816, + 6576,27912, 6584,32008, 6600,7944, 6608,12040, 6616,16136, 6624,20232, + 6632,24328, 6640,28424, 6648,32520, 6672,8520, 6680,12616, 6688,16712, + 6696,20808, 6704,24904, 6712,29000, 6736,9032, 6744,13128, 6752,17224, + 6760,21320, 6768,25416, 6776,29512, 6800,9544, 6808,13640, 6816,17736, + 6824,21832, 6832,25928, 6840,30024, 6864,10056, 6872,14152, 6880,18248, + 6888,22344, 6896,26440, 6904,30536, 6928,10568, 6936,14664, 6944,18760, + 6952,22856, 6960,26952, 6968,31048, 6992,11080, 7000,15176, 7008,19272, + 7016,23368, 7024,27464, 7032,31560, 7048,7496, 7056,11592, 7064,15688, + 7072,19784, 7080,23880, 7088,27976, 7096,32072, 7112,8008, 7120,12104, + 7128,16200, 7136,20296, 7144,24392, 7152,28488, 7160,32584, 7184,8584, + 7192,12680, 7200,16776, 7208,20872, 7216,24968, 7224,29064, 7248,9096, + 7256,13192, 7264,17288, 7272,21384, 7280,25480, 7288,29576, 7312,9608, + 7320,13704, 7328,17800, 7336,21896, 7344,25992, 7352,30088, 7376,10120, + 7384,14216, 7392,18312, 7400,22408, 7408,26504, 7416,30600, 7440,10632, + 7448,14728, 7456,18824, 7464,22920, 7472,27016, 7480,31112, 7504,11144, + 7512,15240, 7520,19336, 7528,23432, 7536,27528, 7544,31624, 7568,11656, + 7576,15752, 7584,19848, 7592,23944, 7600,28040, 7608,32136, 7624,8072, + 7632,12168, 7640,16264, 7648,20360, 7656,24456, 7664,28552, 7672,32648, + 7696,8648, 7704,12744, 7712,16840, 7720,20936, 7728,25032, 7736,29128, + 7760,9160, 7768,13256, 7776,17352, 7784,21448, 7792,25544, 7800,29640, + 7824,9672, 7832,13768, 7840,17864, 7848,21960, 7856,26056, 7864,30152, + 7888,10184, 7896,14280, 7904,18376, 7912,22472, 7920,26568, 7928,30664, + 7952,10696, 7960,14792, 7968,18888, 7976,22984, 7984,27080, 7992,31176, + 8016,11208, 8024,15304, 8032,19400, 8040,23496, 8048,27592, 8056,31688, + 8080,11720, 8088,15816, 8096,19912, 8104,24008, 8112,28104, 8120,32200, + 8144,12232, 8152,16328, 8160,20424, 8168,24520, 8176,28616, 8184,32712, + 8216,12304, 8224,16400, 8232,20496, 8240,24592, 8248,28688, 8272,8720, + 8280,12816, 8288,16912, 8296,21008, 8304,25104, 8312,29200, 8336,9232, + 8344,13328, 8352,17424, 8360,21520, 8368,25616, 8376,29712, 8400,9744, + 8408,13840, 8416,17936, 8424,22032, 8432,26128, 8440,30224, 8464,10256, + 8472,14352, 8480,18448, 8488,22544, 8496,26640, 8504,30736, 8528,10768, + 8536,14864, 8544,18960, 8552,23056, 8560,27152, 8568,31248, 8592,11280, + 8600,15376, 8608,19472, 8616,23568, 8624,27664, 8632,31760, 8656,11792, + 8664,15888, 8672,19984, 8680,24080, 8688,28176, 8696,32272, 8728,12368, + 8736,16464, 8744,20560, 8752,24656, 8760,28752, 8792,12880, 8800,16976, + 8808,21072, 8816,25168, 8824,29264, 8848,9296, 8856,13392, 8864,17488, + 8872,21584, 8880,25680, 8888,29776, 8912,9808, 8920,13904, 8928,18000, + 8936,22096, 8944,26192, 8952,30288, 8976,10320, 8984,14416, 8992,18512, + 9000,22608, 9008,26704, 9016,30800, 9040,10832, 9048,14928, 9056,19024, + 9064,23120, 9072,27216, 9080,31312, 9104,11344, 9112,15440, 9120,19536, + 9128,23632, 9136,27728, 9144,31824, 9168,11856, 9176,15952, 9184,20048, + 9192,24144, 9200,28240, 9208,32336, 9240,12432, 9248,16528, 9256,20624, + 9264,24720, 9272,28816, 9304,12944, 9312,17040, 9320,21136, 9328,25232, + 9336,29328, 9368,13456, 9376,17552, 9384,21648, 9392,25744, 9400,29840, + 9424,9872, 9432,13968, 9440,18064, 9448,22160, 9456,26256, 9464,30352, + 9488,10384, 9496,14480, 9504,18576, 9512,22672, 9520,26768, 9528,30864, + 9552,10896, 9560,14992, 9568,19088, 9576,23184, 9584,27280, 9592,31376, + 9616,11408, 9624,15504, 9632,19600, 9640,23696, 9648,27792, 9656,31888, + 9680,11920, 9688,16016, 9696,20112, 9704,24208, 9712,28304, 9720,32400, + 9752,12496, 9760,16592, 9768,20688, 9776,24784, 9784,28880, 9816,13008, + 9824,17104, 9832,21200, 9840,25296, 9848,29392, 9880,13520, 9888,17616, + 9896,21712, 9904,25808, 9912,29904, 9944,14032, 9952,18128, 9960,22224, + 9968,26320, 9976,30416, 10000,10448, 10008,14544, 10016,18640, 10024,22736, + 10032,26832, 10040,30928, 10064,10960, 10072,15056, 10080,19152, + 10088,23248, 10096,27344, 10104,31440, 10128,11472, 10136,15568, + 10144,19664, 10152,23760, 10160,27856, 10168,31952, 10192,11984, + 10200,16080, 10208,20176, 10216,24272, 10224,28368, 10232,32464, + 10264,12560, 10272,16656, 10280,20752, 10288,24848, 10296,28944, + 10328,13072, 10336,17168, 10344,21264, 10352,25360, 10360,29456, + 10392,13584, 10400,17680, 10408,21776, 10416,25872, 10424,29968, + 10456,14096, 10464,18192, 10472,22288, 10480,26384, 10488,30480, + 10520,14608, 10528,18704, 10536,22800, 10544,26896, 10552,30992, + 10576,11024, 10584,15120, 10592,19216, 10600,23312, 10608,27408, + 10616,31504, 10640,11536, 10648,15632, 10656,19728, 10664,23824, + 10672,27920, 10680,32016, 10704,12048, 10712,16144, 10720,20240, + 10728,24336, 10736,28432, 10744,32528, 10776,12624, 10784,16720, + 10792,20816, 10800,24912, 10808,29008, 10840,13136, 10848,17232, + 10856,21328, 10864,25424, 10872,29520, 10904,13648, 10912,17744, + 10920,21840, 10928,25936, 10936,30032, 10968,14160, 10976,18256, + 10984,22352, 10992,26448, 11000,30544, 11032,14672, 11040,18768, + 11048,22864, 11056,26960, 11064,31056, 11096,15184, 11104,19280, + 11112,23376, 11120,27472, 11128,31568, 11152,11600, 11160,15696, + 11168,19792, 11176,23888, 11184,27984, 11192,32080, 11216,12112, + 11224,16208, 11232,20304, 11240,24400, 11248,28496, 11256,32592, + 11288,12688, 11296,16784, 11304,20880, 11312,24976, 11320,29072, + 11352,13200, 11360,17296, 11368,21392, 11376,25488, 11384,29584, + 11416,13712, 11424,17808, 11432,21904, 11440,26000, 11448,30096, + 11480,14224, 11488,18320, 11496,22416, 11504,26512, 11512,30608, + 11544,14736, 11552,18832, 11560,22928, 11568,27024, 11576,31120, + 11608,15248, 11616,19344, 11624,23440, 11632,27536, 11640,31632, + 11672,15760, 11680,19856, 11688,23952, 11696,28048, 11704,32144, + 11728,12176, 11736,16272, 11744,20368, 11752,24464, 11760,28560, + 11768,32656, 11800,12752, 11808,16848, 11816,20944, 11824,25040, + 11832,29136, 11864,13264, 11872,17360, 11880,21456, 11888,25552, + 11896,29648, 11928,13776, 11936,17872, 11944,21968, 11952,26064, + 11960,30160, 11992,14288, 12000,18384, 12008,22480, 12016,26576, + 12024,30672, 12056,14800, 12064,18896, 12072,22992, 12080,27088, + 12088,31184, 12120,15312, 12128,19408, 12136,23504, 12144,27600, + 12152,31696, 12184,15824, 12192,19920, 12200,24016, 12208,28112, + 12216,32208, 12248,16336, 12256,20432, 12264,24528, 12272,28624, + 12280,32720, 12320,16408, 12328,20504, 12336,24600, 12344,28696, + 12376,12824, 12384,16920, 12392,21016, 12400,25112, 12408,29208, + 12440,13336, 12448,17432, 12456,21528, 12464,25624, 12472,29720, + 12504,13848, 12512,17944, 12520,22040, 12528,26136, 12536,30232, + 12568,14360, 12576,18456, 12584,22552, 12592,26648, 12600,30744, + 12632,14872, 12640,18968, 12648,23064, 12656,27160, 12664,31256, + 12696,15384, 12704,19480, 12712,23576, 12720,27672, 12728,31768, + 12760,15896, 12768,19992, 12776,24088, 12784,28184, 12792,32280, + 12832,16472, 12840,20568, 12848,24664, 12856,28760, 12896,16984, + 12904,21080, 12912,25176, 12920,29272, 12952,13400, 12960,17496, + 12968,21592, 12976,25688, 12984,29784, 13016,13912, 13024,18008, + 13032,22104, 13040,26200, 13048,30296, 13080,14424, 13088,18520, + 13096,22616, 13104,26712, 13112,30808, 13144,14936, 13152,19032, + 13160,23128, 13168,27224, 13176,31320, 13208,15448, 13216,19544, + 13224,23640, 13232,27736, 13240,31832, 13272,15960, 13280,20056, + 13288,24152, 13296,28248, 13304,32344, 13344,16536, 13352,20632, + 13360,24728, 13368,28824, 13408,17048, 13416,21144, 13424,25240, + 13432,29336, 13472,17560, 13480,21656, 13488,25752, 13496,29848, + 13528,13976, 13536,18072, 13544,22168, 13552,26264, 13560,30360, + 13592,14488, 13600,18584, 13608,22680, 13616,26776, 13624,30872, + 13656,15000, 13664,19096, 13672,23192, 13680,27288, 13688,31384, + 13720,15512, 13728,19608, 13736,23704, 13744,27800, 13752,31896, + 13784,16024, 13792,20120, 13800,24216, 13808,28312, 13816,32408, + 13856,16600, 13864,20696, 13872,24792, 13880,28888, 13920,17112, + 13928,21208, 13936,25304, 13944,29400, 13984,17624, 13992,21720, + 14000,25816, 14008,29912, 14048,18136, 14056,22232, 14064,26328, + 14072,30424, 14104,14552, 14112,18648, 14120,22744, 14128,26840, + 14136,30936, 14168,15064, 14176,19160, 14184,23256, 14192,27352, + 14200,31448, 14232,15576, 14240,19672, 14248,23768, 14256,27864, + 14264,31960, 14296,16088, 14304,20184, 14312,24280, 14320,28376, + 14328,32472, 14368,16664, 14376,20760, 14384,24856, 14392,28952, + 14432,17176, 14440,21272, 14448,25368, 14456,29464, 14496,17688, + 14504,21784, 14512,25880, 14520,29976, 14560,18200, 14568,22296, + 14576,26392, 14584,30488, 14624,18712, 14632,22808, 14640,26904, + 14648,31000, 14680,15128, 14688,19224, 14696,23320, 14704,27416, + 14712,31512, 14744,15640, 14752,19736, 14760,23832, 14768,27928, + 14776,32024, 14808,16152, 14816,20248, 14824,24344, 14832,28440, + 14840,32536, 14880,16728, 14888,20824, 14896,24920, 14904,29016, + 14944,17240, 14952,21336, 14960,25432, 14968,29528, 15008,17752, + 15016,21848, 15024,25944, 15032,30040, 15072,18264, 15080,22360, + 15088,26456, 15096,30552, 15136,18776, 15144,22872, 15152,26968, + 15160,31064, 15200,19288, 15208,23384, 15216,27480, 15224,31576, + 15256,15704, 15264,19800, 15272,23896, 15280,27992, 15288,32088, + 15320,16216, 15328,20312, 15336,24408, 15344,28504, 15352,32600, + 15392,16792, 15400,20888, 15408,24984, 15416,29080, 15456,17304, + 15464,21400, 15472,25496, 15480,29592, 15520,17816, 15528,21912, + 15536,26008, 15544,30104, 15584,18328, 15592,22424, 15600,26520, + 15608,30616, 15648,18840, 15656,22936, 15664,27032, 15672,31128, + 15712,19352, 15720,23448, 15728,27544, 15736,31640, 15776,19864, + 15784,23960, 15792,28056, 15800,32152, 15832,16280, 15840,20376, + 15848,24472, 15856,28568, 15864,32664, 15904,16856, 15912,20952, + 15920,25048, 15928,29144, 15968,17368, 15976,21464, 15984,25560, + 15992,29656, 16032,17880, 16040,21976, 16048,26072, 16056,30168, + 16096,18392, 16104,22488, 16112,26584, 16120,30680, 16160,18904, + 16168,23000, 16176,27096, 16184,31192, 16224,19416, 16232,23512, + 16240,27608, 16248,31704, 16288,19928, 16296,24024, 16304,28120, + 16312,32216, 16352,20440, 16360,24536, 16368,28632, 16376,32728, + 16424,20512, 16432,24608, 16440,28704, 16480,16928, 16488,21024, + 16496,25120, 16504,29216, 16544,17440, 16552,21536, 16560,25632, + 16568,29728, 16608,17952, 16616,22048, 16624,26144, 16632,30240, + 16672,18464, 16680,22560, 16688,26656, 16696,30752, 16736,18976, + 16744,23072, 16752,27168, 16760,31264, 16800,19488, 16808,23584, + 16816,27680, 16824,31776, 16864,20000, 16872,24096, 16880,28192, + 16888,32288, 16936,20576, 16944,24672, 16952,28768, 17000,21088, + 17008,25184, 17016,29280, 17056,17504, 17064,21600, 17072,25696, + 17080,29792, 17120,18016, 17128,22112, 17136,26208, 17144,30304, + 17184,18528, 17192,22624, 17200,26720, 17208,30816, 17248,19040, + 17256,23136, 17264,27232, 17272,31328, 17312,19552, 17320,23648, + 17328,27744, 17336,31840, 17376,20064, 17384,24160, 17392,28256, + 17400,32352, 17448,20640, 17456,24736, 17464,28832, 17512,21152, + 17520,25248, 17528,29344, 17576,21664, 17584,25760, 17592,29856, + 17632,18080, 17640,22176, 17648,26272, 17656,30368, 17696,18592, + 17704,22688, 17712,26784, 17720,30880, 17760,19104, 17768,23200, + 17776,27296, 17784,31392, 17824,19616, 17832,23712, 17840,27808, + 17848,31904, 17888,20128, 17896,24224, 17904,28320, 17912,32416, + 17960,20704, 17968,24800, 17976,28896, 18024,21216, 18032,25312, + 18040,29408, 18088,21728, 18096,25824, 18104,29920, 18152,22240, + 18160,26336, 18168,30432, 18208,18656, 18216,22752, 18224,26848, + 18232,30944, 18272,19168, 18280,23264, 18288,27360, 18296,31456, + 18336,19680, 18344,23776, 18352,27872, 18360,31968, 18400,20192, + 18408,24288, 18416,28384, 18424,32480, 18472,20768, 18480,24864, + 18488,28960, 18536,21280, 18544,25376, 18552,29472, 18600,21792, + 18608,25888, 18616,29984, 18664,22304, 18672,26400, 18680,30496, + 18728,22816, 18736,26912, 18744,31008, 18784,19232, 18792,23328, + 18800,27424, 18808,31520, 18848,19744, 18856,23840, 18864,27936, + 18872,32032, 18912,20256, 18920,24352, 18928,28448, 18936,32544, + 18984,20832, 18992,24928, 19000,29024, 19048,21344, 19056,25440, + 19064,29536, 19112,21856, 19120,25952, 19128,30048, 19176,22368, + 19184,26464, 19192,30560, 19240,22880, 19248,26976, 19256,31072, + 19304,23392, 19312,27488, 19320,31584, 19360,19808, 19368,23904, + 19376,28000, 19384,32096, 19424,20320, 19432,24416, 19440,28512, + 19448,32608, 19496,20896, 19504,24992, 19512,29088, 19560,21408, + 19568,25504, 19576,29600, 19624,21920, 19632,26016, 19640,30112, + 19688,22432, 19696,26528, 19704,30624, 19752,22944, 19760,27040, + 19768,31136, 19816,23456, 19824,27552, 19832,31648, 19880,23968, + 19888,28064, 19896,32160, 19936,20384, 19944,24480, 19952,28576, + 19960,32672, 20008,20960, 20016,25056, 20024,29152, 20072,21472, + 20080,25568, 20088,29664, 20136,21984, 20144,26080, 20152,30176, + 20200,22496, 20208,26592, 20216,30688, 20264,23008, 20272,27104, + 20280,31200, 20328,23520, 20336,27616, 20344,31712, 20392,24032, + 20400,28128, 20408,32224, 20456,24544, 20464,28640, 20472,32736, + 20528,24616, 20536,28712, 20584,21032, 20592,25128, 20600,29224, + 20648,21544, 20656,25640, 20664,29736, 20712,22056, 20720,26152, + 20728,30248, 20776,22568, 20784,26664, 20792,30760, 20840,23080, + 20848,27176, 20856,31272, 20904,23592, 20912,27688, 20920,31784, + 20968,24104, 20976,28200, 20984,32296, 21040,24680, 21048,28776, + 21104,25192, 21112,29288, 21160,21608, 21168,25704, 21176,29800, + 21224,22120, 21232,26216, 21240,30312, 21288,22632, 21296,26728, + 21304,30824, 21352,23144, 21360,27240, 21368,31336, 21416,23656, + 21424,27752, 21432,31848, 21480,24168, 21488,28264, 21496,32360, + 21552,24744, 21560,28840, 21616,25256, 21624,29352, 21680,25768, + 21688,29864, 21736,22184, 21744,26280, 21752,30376, 21800,22696, + 21808,26792, 21816,30888, 21864,23208, 21872,27304, 21880,31400, + 21928,23720, 21936,27816, 21944,31912, 21992,24232, 22000,28328, + 22008,32424, 22064,24808, 22072,28904, 22128,25320, 22136,29416, + 22192,25832, 22200,29928, 22256,26344, 22264,30440, 22312,22760, + 22320,26856, 22328,30952, 22376,23272, 22384,27368, 22392,31464, + 22440,23784, 22448,27880, 22456,31976, 22504,24296, 22512,28392, + 22520,32488, 22576,24872, 22584,28968, 22640,25384, 22648,29480, + 22704,25896, 22712,29992, 22768,26408, 22776,30504, 22832,26920, + 22840,31016, 22888,23336, 22896,27432, 22904,31528, 22952,23848, + 22960,27944, 22968,32040, 23016,24360, 23024,28456, 23032,32552, + 23088,24936, 23096,29032, 23152,25448, 23160,29544, 23216,25960, + 23224,30056, 23280,26472, 23288,30568, 23344,26984, 23352,31080, + 23408,27496, 23416,31592, 23464,23912, 23472,28008, 23480,32104, + 23528,24424, 23536,28520, 23544,32616, 23600,25000, 23608,29096, + 23664,25512, 23672,29608, 23728,26024, 23736,30120, 23792,26536, + 23800,30632, 23856,27048, 23864,31144, 23920,27560, 23928,31656, + 23984,28072, 23992,32168, 24040,24488, 24048,28584, 24056,32680, + 24112,25064, 24120,29160, 24176,25576, 24184,29672, 24240,26088, + 24248,30184, 24304,26600, 24312,30696, 24368,27112, 24376,31208, + 24432,27624, 24440,31720, 24496,28136, 24504,32232, 24560,28648, + 24568,32744, 24632,28720, 24688,25136, 24696,29232, 24752,25648, + 24760,29744, 24816,26160, 24824,30256, 24880,26672, 24888,30768, + 24944,27184, 24952,31280, 25008,27696, 25016,31792, 25072,28208, + 25080,32304, 25144,28784, 25208,29296, 25264,25712, 25272,29808, + 25328,26224, 25336,30320, 25392,26736, 25400,30832, 25456,27248, + 25464,31344, 25520,27760, 25528,31856, 25584,28272, 25592,32368, + 25656,28848, 25720,29360, 25784,29872, 25840,26288, 25848,30384, + 25904,26800, 25912,30896, 25968,27312, 25976,31408, 26032,27824, + 26040,31920, 26096,28336, 26104,32432, 26168,28912, 26232,29424, + 26296,29936, 26360,30448, 26416,26864, 26424,30960, 26480,27376, + 26488,31472, 26544,27888, 26552,31984, 26608,28400, 26616,32496, + 26680,28976, 26744,29488, 26808,30000, 26872,30512, 26936,31024, + 26992,27440, 27000,31536, 27056,27952, 27064,32048, 27120,28464, + 27128,32560, 27192,29040, 27256,29552, 27320,30064, 27384,30576, + 27448,31088, 27512,31600, 27568,28016, 27576,32112, 27632,28528, + 27640,32624, 27704,29104, 27768,29616, 27832,30128, 27896,30640, + 27960,31152, 28024,31664, 28088,32176, 28144,28592, 28152,32688, + 28216,29168, 28280,29680, 28344,30192, 28408,30704, 28472,31216, + 28536,31728, 28600,32240, 28664,32752, 28792,29240, 28856,29752, + 28920,30264, 28984,30776, 29048,31288, 29112,31800, 29176,32312, + 29368,29816, 29432,30328, 29496,30840, 29560,31352, 29624,31864, + 29688,32376, 29944,30392, 30008,30904, 30072,31416, 30136,31928, + 30200,32440, 30520,30968, 30584,31480, 30648,31992, 30712,32504, + 31096,31544, 31160,32056, 31224,32568, 31672,32120, 31736,32632, + 32248,32696 +}; + + +const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH] = +{ + /* radix 4, size 12 */ + 8,64, 16,32, 24,96, 40,80, 56,112, 88,104 +}; + +const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH] = +{ + /* 4x2, size 24 */ + 8,128, 16,64, 24,192, 40,160, 48,96, 56,224, 72,144, + 88,208, 104,176, 120,240, 152,200, 184,232 +}; + +const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH] = +{ + /* radix 4, size 56 */ + 8,256, 16,128, 24,384, 32,64, 40,320, 48,192, 56,448, 72,288, 80,160, 88,416, 104,352, + 112,224, 120,480, 136,272, 152,400, 168,336, 176,208, 184,464, 200,304, 216,432, + 232,368, 248,496, 280,392, 296,328, 312,456, 344,424, 376,488, 440,472 +}; + +const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH] = +{ + /* 4x2, size 112 */ + 8,512, 16,256, 24,768, 32,128, 40,640, 48,384, 56,896, 72,576, 80,320, 88,832, 96,192, + 104,704, 112,448, 120,960, 136,544, 144,288, 152,800, 168,672, 176,416, 184,928, 200,608, + 208,352, 216,864, 232,736, 240,480, 248,992, 264,528, 280,784, 296,656, 304,400, 312,912, + 328,592, 344,848, 360,720, 368,464, 376,976, 392,560, 408,816, 424,688, 440,944, 456,624, + 472,880, 488,752, 504,1008, 536,776, 552,648, 568,904, 600,840, 616,712, 632,968, + 664,808, 696,936, 728,872, 760,1000, 824,920, 888,984 +}; + +const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH] = +{ + /* radix 4, size 240 */ + 8,1024, 16,512, 24,1536, 32,256, 40,1280, 48,768, 56,1792, 64,128, 72,1152, 80,640, + 88,1664, 96,384, 104,1408, 112,896, 120,1920, 136,1088, 144,576, 152,1600, 160,320, + 168,1344, 176,832, 184,1856, 200,1216, 208,704, 216,1728, 224,448, 232,1472, 240,960, + 248,1984, 264,1056, 272,544, 280,1568, 296,1312, 304,800, 312,1824, 328,1184, 336,672, + 344,1696, 352,416, 360,1440, 368,928, 376,1952, 392,1120, 400,608, 408,1632, 424,1376, + 432,864, 440,1888, 456,1248, 464,736, 472,1760, 488,1504, 496,992, 504,2016, 520,1040, + 536,1552, 552,1296, 560,784, 568,1808, 584,1168, 592,656, 600,1680, 616,1424, 624,912, + 632,1936, 648,1104, 664,1616, 680,1360, 688,848, 696,1872, 712,1232, 728,1744, 744,1488, + 752,976, 760,2000, 776,1072, 792,1584, 808,1328, 824,1840, 840,1200, 856,1712, 872,1456, + 880,944, 888,1968, 904,1136, 920,1648, 936,1392, 952,1904, 968,1264, 984,1776, 1000,1520, + 1016,2032, 1048,1544, 1064,1288, 1080,1800, 1096,1160, 1112,1672, 1128,1416, 1144,1928, + 1176,1608, 1192,1352, 1208,1864, 1240,1736, 1256,1480, 1272,1992, 1304,1576, 1336,1832, + 1368,1704, 1384,1448, 1400,1960, 1432,1640, 1464,1896, 1496,1768, 1528,2024, 1592,1816, + 1624,1688, 1656,1944, 1720,1880, 1784,2008, 1912,1976 +}; + +const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH] = +{ + /* 4x2, size 480 */ + 8,2048, 16,1024, 24,3072, 32,512, 40,2560, 48,1536, 56,3584, 64,256, 72,2304, 80,1280, + 88,3328, 96,768, 104,2816, 112,1792, 120,3840, 136,2176, 144,1152, 152,3200, 160,640, + 168,2688, 176,1664, 184,3712, 192,384, 200,2432, 208,1408, 216,3456, 224,896, 232,2944, + 240,1920, 248,3968, 264,2112, 272,1088, 280,3136, 288,576, 296,2624, 304,1600, 312,3648, + 328,2368, 336,1344, 344,3392, 352,832, 360,2880, 368,1856, 376,3904, 392,2240, 400,1216, + 408,3264, 416,704, 424,2752, 432,1728, 440,3776, 456,2496, 464,1472, 472,3520, 480,960, + 488,3008, 496,1984, 504,4032, 520,2080, 528,1056, 536,3104, 552,2592, 560,1568, 568,3616, + 584,2336, 592,1312, 600,3360, 608,800, 616,2848, 624,1824, 632,3872, 648,2208, 656,1184, + 664,3232, 680,2720, 688,1696, 696,3744, 712,2464, 720,1440, 728,3488, 736,928, 744,2976, + 752,1952, 760,4000, 776,2144, 784,1120, 792,3168, 808,2656, 816,1632, 824,3680, 840,2400, + 848,1376, 856,3424, 872,2912, 880,1888, 888,3936, 904,2272, 912,1248, 920,3296, 936,2784, + 944,1760, 952,3808, 968,2528, 976,1504, 984,3552, 1000,3040, 1008,2016, 1016,4064, + 1032,2064, 1048,3088, 1064,2576, 1072,1552, 1080,3600, 1096,2320, 1104,1296, 1112,3344, + 1128,2832, 1136,1808, 1144,3856, 1160,2192, 1176,3216, 1192,2704, 1200,1680, 1208,3728, + 1224,2448, 1232,1424, 1240,3472, 1256,2960, 1264,1936, 1272,3984, 1288,2128, 1304,3152, + 1320,2640, 1328,1616, 1336,3664, 1352,2384, 1368,3408, 1384,2896, 1392,1872, 1400,3920, + 1416,2256, 1432,3280, 1448,2768, 1456,1744, 1464,3792, 1480,2512, 1496,3536, 1512,3024, + 1520,2000, 1528,4048, 1544,2096, 1560,3120, 1576,2608, 1592,3632, 1608,2352, 1624,3376, + 1640,2864, 1648,1840, 1656,3888, 1672,2224, 1688,3248, 1704,2736, 1720,3760, 1736,2480, + 1752,3504, 1768,2992, 1776,1968, 1784,4016, 1800,2160, 1816,3184, 1832,2672, 1848,3696, + 1864,2416, 1880,3440, 1896,2928, 1912,3952, 1928,2288, 1944,3312, 1960,2800, 1976,3824, + 1992,2544, 2008,3568, 2024,3056, 2040,4080, 2072,3080, 2088,2568, 2104,3592, 2120,2312, + 2136,3336, 2152,2824, 2168,3848, 2200,3208, 2216,2696, 2232,3720, 2248,2440, 2264,3464, + 2280,2952, 2296,3976, 2328,3144, 2344,2632, 2360,3656, 2392,3400, 2408,2888, 2424,3912, + 2456,3272, 2472,2760, 2488,3784, 2520,3528, 2536,3016, 2552,4040, 2584,3112, 2616,3624, + 2648,3368, 2664,2856, 2680,3880, 2712,3240, 2744,3752, 2776,3496, 2792,2984, 2808,4008, + 2840,3176, 2872,3688, 2904,3432, 2936,3944, 2968,3304, 3000,3816, 3032,3560, 3064,4072, + 3128,3608, 3160,3352, 3192,3864, 3256,3736, 3288,3480, 3320,3992, 3384,3672, 3448,3928, + 3512,3800, 3576,4056, 3704,3896, 3832,4024 +}; + +const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH] = +{ + /* radix 4, size 992 */ + 8,4096, 16,2048, 24,6144, 32,1024, 40,5120, 48,3072, 56,7168, 64,512, 72,4608, + 80,2560, 88,6656, 96,1536, 104,5632, 112,3584, 120,7680, 128,256, 136,4352, + 144,2304, 152,6400, 160,1280, 168,5376, 176,3328, 184,7424, 192,768, 200,4864, + 208,2816, 216,6912, 224,1792, 232,5888, 240,3840, 248,7936, 264,4224, 272,2176, + 280,6272, 288,1152, 296,5248, 304,3200, 312,7296, 320,640, 328,4736, 336,2688, + 344,6784, 352,1664, 360,5760, 368,3712, 376,7808, 392,4480, 400,2432, 408,6528, + 416,1408, 424,5504, 432,3456, 440,7552, 448,896, 456,4992, 464,2944, 472,7040, + 480,1920, 488,6016, 496,3968, 504,8064, 520,4160, 528,2112, 536,6208, 544,1088, + 552,5184, 560,3136, 568,7232, 584,4672, 592,2624, 600,6720, 608,1600, 616,5696, + 624,3648, 632,7744, 648,4416, 656,2368, 664,6464, 672,1344, 680,5440, 688,3392, + 696,7488, 704,832, 712,4928, 720,2880, 728,6976, 736,1856, 744,5952, 752,3904, + 760,8000, 776,4288, 784,2240, 792,6336, 800,1216, 808,5312, 816,3264, 824,7360, + 840,4800, 848,2752, 856,6848, 864,1728, 872,5824, 880,3776, 888,7872, 904,4544, + 912,2496, 920,6592, 928,1472, 936,5568, 944,3520, 952,7616, 968,5056, 976,3008, + 984,7104, 992,1984, 1000,6080, 1008,4032, 1016,8128, 1032,4128, 1040,2080, + 1048,6176, 1064,5152, 1072,3104, 1080,7200, 1096,4640, 1104,2592, 1112,6688, + 1120,1568, 1128,5664, 1136,3616, 1144,7712, 1160,4384, 1168,2336, 1176,6432, + 1184,1312, 1192,5408, 1200,3360, 1208,7456, 1224,4896, 1232,2848, 1240,6944, + 1248,1824, 1256,5920, 1264,3872, 1272,7968, 1288,4256, 1296,2208, 1304,6304, + 1320,5280, 1328,3232, 1336,7328, 1352,4768, 1360,2720, 1368,6816, 1376,1696, + 1384,5792, 1392,3744, 1400,7840, 1416,4512, 1424,2464, 1432,6560, 1448,5536, + 1456,3488, 1464,7584, 1480,5024, 1488,2976, 1496,7072, 1504,1952, 1512,6048, + 1520,4000, 1528,8096, 1544,4192, 1552,2144, 1560,6240, 1576,5216, 1584,3168, + 1592,7264, 1608,4704, 1616,2656, 1624,6752, 1640,5728, 1648,3680, 1656,7776, + 1672,4448, 1680,2400, 1688,6496, 1704,5472, 1712,3424, 1720,7520, 1736,4960, + 1744,2912, 1752,7008, 1760,1888, 1768,5984, 1776,3936, 1784,8032, 1800,4320, + 1808,2272, 1816,6368, 1832,5344, 1840,3296, 1848,7392, 1864,4832, 1872,2784, + 1880,6880, 1896,5856, 1904,3808, 1912,7904, 1928,4576, 1936,2528, 1944,6624, + 1960,5600, 1968,3552, 1976,7648, 1992,5088, 2000,3040, 2008,7136, 2024,6112, + 2032,4064, 2040,8160, 2056,4112, 2072,6160, 2088,5136, 2096,3088, 2104,7184, + 2120,4624, 2128,2576, 2136,6672, 2152,5648, 2160,3600, 2168,7696, 2184,4368, + 2192,2320, 2200,6416, 2216,5392, 2224,3344, 2232,7440, 2248,4880, 2256,2832, + 2264,6928, 2280,5904, 2288,3856, 2296,7952, 2312,4240, 2328,6288, 2344,5264, + 2352,3216, 2360,7312, 2376,4752, 2384,2704, 2392,6800, 2408,5776, 2416,3728, + 2424,7824, 2440,4496, 2456,6544, 2472,5520, 2480,3472, 2488,7568, 2504,5008, + 2512,2960, 2520,7056, 2536,6032, 2544,3984, 2552,8080, 2568,4176, 2584,6224, + 2600,5200, 2608,3152, 2616,7248, 2632,4688, 2648,6736, 2664,5712, 2672,3664, + 2680,7760, 2696,4432, 2712,6480, 2728,5456, 2736,3408, 2744,7504, 2760,4944, + 2768,2896, 2776,6992, 2792,5968, 2800,3920, 2808,8016, 2824,4304, 2840,6352, + 2856,5328, 2864,3280, 2872,7376, 2888,4816, 2904,6864, 2920,5840, 2928,3792, + 2936,7888, 2952,4560, 2968,6608, 2984,5584, 2992,3536, 3000,7632, 3016,5072, + 3032,7120, 3048,6096, 3056,4048, 3064,8144, 3080,4144, 3096,6192, 3112,5168, + 3128,7216, 3144,4656, 3160,6704, 3176,5680, 3184,3632, 3192,7728, 3208,4400, + 3224,6448, 3240,5424, 3248,3376, 3256,7472, 3272,4912, 3288,6960, 3304,5936, + 3312,3888, 3320,7984, 3336,4272, 3352,6320, 3368,5296, 3384,7344, 3400,4784, + 3416,6832, 3432,5808, 3440,3760, 3448,7856, 3464,4528, 3480,6576, 3496,5552, + 3512,7600, 3528,5040, 3544,7088, 3560,6064, 3568,4016, 3576,8112, 3592,4208, + 3608,6256, 3624,5232, 3640,7280, 3656,4720, 3672,6768, 3688,5744, 3704,7792, + 3720,4464, 3736,6512, 3752,5488, 3768,7536, 3784,4976, 3800,7024, 3816,6000, + 3824,3952, 3832,8048, 3848,4336, 3864,6384, 3880,5360, 3896,7408, 3912,4848, + 3928,6896, 3944,5872, 3960,7920, 3976,4592, 3992,6640, 4008,5616, 4024,7664, + 4040,5104, 4056,7152, 4072,6128, 4088,8176, 4120,6152, 4136,5128, 4152,7176, + 4168,4616, 4184,6664, 4200,5640, 4216,7688, 4232,4360, 4248,6408, 4264,5384, + 4280,7432, 4296,4872, 4312,6920, 4328,5896, 4344,7944, 4376,6280, 4392,5256, + 4408,7304, 4424,4744, 4440,6792, 4456,5768, 4472,7816, 4504,6536, 4520,5512, + 4536,7560, 4552,5000, 4568,7048, 4584,6024, 4600,8072, 4632,6216, 4648,5192, + 4664,7240, 4696,6728, 4712,5704, 4728,7752, 4760,6472, 4776,5448, 4792,7496, + 4808,4936, 4824,6984, 4840,5960, 4856,8008, 4888,6344, 4904,5320, 4920,7368, + 4952,6856, 4968,5832, 4984,7880, 5016,6600, 5032,5576, 5048,7624, 5080,7112, + 5096,6088, 5112,8136, 5144,6184, 5176,7208, 5208,6696, 5224,5672, 5240,7720, + 5272,6440, 5288,5416, 5304,7464, 5336,6952, 5352,5928, 5368,7976, 5400,6312, + 5432,7336, 5464,6824, 5480,5800, 5496,7848, 5528,6568, 5560,7592, 5592,7080, + 5608,6056, 5624,8104, 5656,6248, 5688,7272, 5720,6760, 5752,7784, 5784,6504, + 5816,7528, 5848,7016, 5864,5992, 5880,8040, 5912,6376, 5944,7400, 5976,6888, + 6008,7912, 6040,6632, 6072,7656, 6104,7144, 6136,8168, 6200,7192, 6232,6680, + 6264,7704, 6296,6424, 6328,7448, 6360,6936, 6392,7960, 6456,7320, 6488,6808, + 6520,7832, 6584,7576, 6616,7064, 6648,8088, 6712,7256, 6776,7768, 6840,7512, + 6872,7000, 6904,8024, 6968,7384, 7032,7896, 7096,7640, 7160,8152, 7288,7736, + 7352,7480, 7416,7992, 7544,7864, 7672,8120, 7928,8056 +}; + +const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH] = +{ + /* 4x2, size 1984 */ + 8,8192, 16,4096, 24,12288, 32,2048, 40,10240, 48,6144, 56,14336, 64,1024, + 72,9216, 80,5120, 88,13312, 96,3072, 104,11264, 112,7168, 120,15360, 128,512, + 136,8704, 144,4608, 152,12800, 160,2560, 168,10752, 176,6656, 184,14848, + 192,1536, 200,9728, 208,5632, 216,13824, 224,3584, 232,11776, 240,7680, + 248,15872, 264,8448, 272,4352, 280,12544, 288,2304, 296,10496, 304,6400, + 312,14592, 320,1280, 328,9472, 336,5376, 344,13568, 352,3328, 360,11520, + 368,7424, 376,15616, 384,768, 392,8960, 400,4864, 408,13056, 416,2816, + 424,11008, 432,6912, 440,15104, 448,1792, 456,9984, 464,5888, 472,14080, + 480,3840, 488,12032, 496,7936, 504,16128, 520,8320, 528,4224, 536,12416, + 544,2176, 552,10368, 560,6272, 568,14464, 576,1152, 584,9344, 592,5248, + 600,13440, 608,3200, 616,11392, 624,7296, 632,15488, 648,8832, 656,4736, + 664,12928, 672,2688, 680,10880, 688,6784, 696,14976, 704,1664, 712,9856, + 720,5760, 728,13952, 736,3712, 744,11904, 752,7808, 760,16000, 776,8576, + 784,4480, 792,12672, 800,2432, 808,10624, 816,6528, 824,14720, 832,1408, + 840,9600, 848,5504, 856,13696, 864,3456, 872,11648, 880,7552, 888,15744, + 904,9088, 912,4992, 920,13184, 928,2944, 936,11136, 944,7040, 952,15232, + 960,1920, 968,10112, 976,6016, 984,14208, 992,3968, 1000,12160, 1008,8064, + 1016,16256, 1032,8256, 1040,4160, 1048,12352, 1056,2112, 1064,10304, 1072,6208, + 1080,14400, 1096,9280, 1104,5184, 1112,13376, 1120,3136, 1128,11328, 1136,7232, + 1144,15424, 1160,8768, 1168,4672, 1176,12864, 1184,2624, 1192,10816, 1200,6720, + 1208,14912, 1216,1600, 1224,9792, 1232,5696, 1240,13888, 1248,3648, 1256,11840, + 1264,7744, 1272,15936, 1288,8512, 1296,4416, 1304,12608, 1312,2368, 1320,10560, + 1328,6464, 1336,14656, 1352,9536, 1360,5440, 1368,13632, 1376,3392, 1384,11584, + 1392,7488, 1400,15680, 1416,9024, 1424,4928, 1432,13120, 1440,2880, 1448,11072, + 1456,6976, 1464,15168, 1472,1856, 1480,10048, 1488,5952, 1496,14144, 1504,3904, + 1512,12096, 1520,8000, 1528,16192, 1544,8384, 1552,4288, 1560,12480, 1568,2240, + 1576,10432, 1584,6336, 1592,14528, 1608,9408, 1616,5312, 1624,13504, 1632,3264, + 1640,11456, 1648,7360, 1656,15552, 1672,8896, 1680,4800, 1688,12992, 1696,2752, + 1704,10944, 1712,6848, 1720,15040, 1736,9920, 1744,5824, 1752,14016, 1760,3776, + 1768,11968, 1776,7872, 1784,16064, 1800,8640, 1808,4544, 1816,12736, 1824,2496, + 1832,10688, 1840,6592, 1848,14784, 1864,9664, 1872,5568, 1880,13760, 1888,3520, + 1896,11712, 1904,7616, 1912,15808, 1928,9152, 1936,5056, 1944,13248, 1952,3008, + 1960,11200, 1968,7104, 1976,15296, 1992,10176, 2000,6080, 2008,14272, 2016,4032, + 2024,12224, 2032,8128, 2040,16320, 2056,8224, 2064,4128, 2072,12320, 2088,10272, + 2096,6176, 2104,14368, 2120,9248, 2128,5152, 2136,13344, 2144,3104, 2152,11296, + 2160,7200, 2168,15392, 2184,8736, 2192,4640, 2200,12832, 2208,2592, 2216,10784, + 2224,6688, 2232,14880, 2248,9760, 2256,5664, 2264,13856, 2272,3616, 2280,11808, + 2288,7712, 2296,15904, 2312,8480, 2320,4384, 2328,12576, 2344,10528, 2352,6432, + 2360,14624, 2376,9504, 2384,5408, 2392,13600, 2400,3360, 2408,11552, 2416,7456, + 2424,15648, 2440,8992, 2448,4896, 2456,13088, 2464,2848, 2472,11040, 2480,6944, + 2488,15136, 2504,10016, 2512,5920, 2520,14112, 2528,3872, 2536,12064, 2544,7968, + 2552,16160, 2568,8352, 2576,4256, 2584,12448, 2600,10400, 2608,6304, 2616,14496, + 2632,9376, 2640,5280, 2648,13472, 2656,3232, 2664,11424, 2672,7328, 2680,15520, + 2696,8864, 2704,4768, 2712,12960, 2728,10912, 2736,6816, 2744,15008, 2760,9888, + 2768,5792, 2776,13984, 2784,3744, 2792,11936, 2800,7840, 2808,16032, 2824,8608, + 2832,4512, 2840,12704, 2856,10656, 2864,6560, 2872,14752, 2888,9632, 2896,5536, + 2904,13728, 2912,3488, 2920,11680, 2928,7584, 2936,15776, 2952,9120, 2960,5024, + 2968,13216, 2984,11168, 2992,7072, 3000,15264, 3016,10144, 3024,6048, + 3032,14240, 3040,4000, 3048,12192, 3056,8096, 3064,16288, 3080,8288, 3088,4192, + 3096,12384, 3112,10336, 3120,6240, 3128,14432, 3144,9312, 3152,5216, 3160,13408, + 3176,11360, 3184,7264, 3192,15456, 3208,8800, 3216,4704, 3224,12896, 3240,10848, + 3248,6752, 3256,14944, 3272,9824, 3280,5728, 3288,13920, 3296,3680, 3304,11872, + 3312,7776, 3320,15968, 3336,8544, 3344,4448, 3352,12640, 3368,10592, 3376,6496, + 3384,14688, 3400,9568, 3408,5472, 3416,13664, 3432,11616, 3440,7520, 3448,15712, + 3464,9056, 3472,4960, 3480,13152, 3496,11104, 3504,7008, 3512,15200, 3528,10080, + 3536,5984, 3544,14176, 3552,3936, 3560,12128, 3568,8032, 3576,16224, 3592,8416, + 3600,4320, 3608,12512, 3624,10464, 3632,6368, 3640,14560, 3656,9440, 3664,5344, + 3672,13536, 3688,11488, 3696,7392, 3704,15584, 3720,8928, 3728,4832, 3736,13024, + 3752,10976, 3760,6880, 3768,15072, 3784,9952, 3792,5856, 3800,14048, 3816,12000, + 3824,7904, 3832,16096, 3848,8672, 3856,4576, 3864,12768, 3880,10720, 3888,6624, + 3896,14816, 3912,9696, 3920,5600, 3928,13792, 3944,11744, 3952,7648, 3960,15840, + 3976,9184, 3984,5088, 3992,13280, 4008,11232, 4016,7136, 4024,15328, 4040,10208, + 4048,6112, 4056,14304, 4072,12256, 4080,8160, 4088,16352, 4104,8208, 4120,12304, + 4136,10256, 4144,6160, 4152,14352, 4168,9232, 4176,5136, 4184,13328, 4200,11280, + 4208,7184, 4216,15376, 4232,8720, 4240,4624, 4248,12816, 4264,10768, 4272,6672, + 4280,14864, 4296,9744, 4304,5648, 4312,13840, 4328,11792, 4336,7696, 4344,15888, + 4360,8464, 4376,12560, 4392,10512, 4400,6416, 4408,14608, 4424,9488, 4432,5392, + 4440,13584, 4456,11536, 4464,7440, 4472,15632, 4488,8976, 4496,4880, 4504,13072, + 4520,11024, 4528,6928, 4536,15120, 4552,10000, 4560,5904, 4568,14096, + 4584,12048, 4592,7952, 4600,16144, 4616,8336, 4632,12432, 4648,10384, 4656,6288, + 4664,14480, 4680,9360, 4688,5264, 4696,13456, 4712,11408, 4720,7312, 4728,15504, + 4744,8848, 4760,12944, 4776,10896, 4784,6800, 4792,14992, 4808,9872, 4816,5776, + 4824,13968, 4840,11920, 4848,7824, 4856,16016, 4872,8592, 4888,12688, + 4904,10640, 4912,6544, 4920,14736, 4936,9616, 4944,5520, 4952,13712, 4968,11664, + 4976,7568, 4984,15760, 5000,9104, 5016,13200, 5032,11152, 5040,7056, 5048,15248, + 5064,10128, 5072,6032, 5080,14224, 5096,12176, 5104,8080, 5112,16272, 5128,8272, + 5144,12368, 5160,10320, 5168,6224, 5176,14416, 5192,9296, 5208,13392, + 5224,11344, 5232,7248, 5240,15440, 5256,8784, 5272,12880, 5288,10832, 5296,6736, + 5304,14928, 5320,9808, 5328,5712, 5336,13904, 5352,11856, 5360,7760, 5368,15952, + 5384,8528, 5400,12624, 5416,10576, 5424,6480, 5432,14672, 5448,9552, 5464,13648, + 5480,11600, 5488,7504, 5496,15696, 5512,9040, 5528,13136, 5544,11088, 5552,6992, + 5560,15184, 5576,10064, 5584,5968, 5592,14160, 5608,12112, 5616,8016, + 5624,16208, 5640,8400, 5656,12496, 5672,10448, 5680,6352, 5688,14544, 5704,9424, + 5720,13520, 5736,11472, 5744,7376, 5752,15568, 5768,8912, 5784,13008, + 5800,10960, 5808,6864, 5816,15056, 5832,9936, 5848,14032, 5864,11984, 5872,7888, + 5880,16080, 5896,8656, 5912,12752, 5928,10704, 5936,6608, 5944,14800, 5960,9680, + 5976,13776, 5992,11728, 6000,7632, 6008,15824, 6024,9168, 6040,13264, + 6056,11216, 6064,7120, 6072,15312, 6088,10192, 6104,14288, 6120,12240, + 6128,8144, 6136,16336, 6152,8240, 6168,12336, 6184,10288, 6200,14384, 6216,9264, + 6232,13360, 6248,11312, 6256,7216, 6264,15408, 6280,8752, 6296,12848, + 6312,10800, 6320,6704, 6328,14896, 6344,9776, 6360,13872, 6376,11824, 6384,7728, + 6392,15920, 6408,8496, 6424,12592, 6440,10544, 6456,14640, 6472,9520, + 6488,13616, 6504,11568, 6512,7472, 6520,15664, 6536,9008, 6552,13104, + 6568,11056, 6576,6960, 6584,15152, 6600,10032, 6616,14128, 6632,12080, + 6640,7984, 6648,16176, 6664,8368, 6680,12464, 6696,10416, 6712,14512, 6728,9392, + 6744,13488, 6760,11440, 6768,7344, 6776,15536, 6792,8880, 6808,12976, + 6824,10928, 6840,15024, 6856,9904, 6872,14000, 6888,11952, 6896,7856, + 6904,16048, 6920,8624, 6936,12720, 6952,10672, 6968,14768, 6984,9648, + 7000,13744, 7016,11696, 7024,7600, 7032,15792, 7048,9136, 7064,13232, + 7080,11184, 7096,15280, 7112,10160, 7128,14256, 7144,12208, 7152,8112, + 7160,16304, 7176,8304, 7192,12400, 7208,10352, 7224,14448, 7240,9328, + 7256,13424, 7272,11376, 7288,15472, 7304,8816, 7320,12912, 7336,10864, + 7352,14960, 7368,9840, 7384,13936, 7400,11888, 7408,7792, 7416,15984, 7432,8560, + 7448,12656, 7464,10608, 7480,14704, 7496,9584, 7512,13680, 7528,11632, + 7544,15728, 7560,9072, 7576,13168, 7592,11120, 7608,15216, 7624,10096, + 7640,14192, 7656,12144, 7664,8048, 7672,16240, 7688,8432, 7704,12528, + 7720,10480, 7736,14576, 7752,9456, 7768,13552, 7784,11504, 7800,15600, + 7816,8944, 7832,13040, 7848,10992, 7864,15088, 7880,9968, 7896,14064, + 7912,12016, 7928,16112, 7944,8688, 7960,12784, 7976,10736, 7992,14832, + 8008,9712, 8024,13808, 8040,11760, 8056,15856, 8072,9200, 8088,13296, + 8104,11248, 8120,15344, 8136,10224, 8152,14320, 8168,12272, 8184,16368, + 8216,12296, 8232,10248, 8248,14344, 8264,9224, 8280,13320, 8296,11272, + 8312,15368, 8328,8712, 8344,12808, 8360,10760, 8376,14856, 8392,9736, + 8408,13832, 8424,11784, 8440,15880, 8472,12552, 8488,10504, 8504,14600, + 8520,9480, 8536,13576, 8552,11528, 8568,15624, 8584,8968, 8600,13064, + 8616,11016, 8632,15112, 8648,9992, 8664,14088, 8680,12040, 8696,16136, + 8728,12424, 8744,10376, 8760,14472, 8776,9352, 8792,13448, 8808,11400, + 8824,15496, 8856,12936, 8872,10888, 8888,14984, 8904,9864, 8920,13960, + 8936,11912, 8952,16008, 8984,12680, 9000,10632, 9016,14728, 9032,9608, + 9048,13704, 9064,11656, 9080,15752, 9112,13192, 9128,11144, 9144,15240, + 9160,10120, 9176,14216, 9192,12168, 9208,16264, 9240,12360, 9256,10312, + 9272,14408, 9304,13384, 9320,11336, 9336,15432, 9368,12872, 9384,10824, + 9400,14920, 9416,9800, 9432,13896, 9448,11848, 9464,15944, 9496,12616, + 9512,10568, 9528,14664, 9560,13640, 9576,11592, 9592,15688, 9624,13128, + 9640,11080, 9656,15176, 9672,10056, 9688,14152, 9704,12104, 9720,16200, + 9752,12488, 9768,10440, 9784,14536, 9816,13512, 9832,11464, 9848,15560, + 9880,13000, 9896,10952, 9912,15048, 9944,14024, 9960,11976, 9976,16072, + 10008,12744, 10024,10696, 10040,14792, 10072,13768, 10088,11720, 10104,15816, + 10136,13256, 10152,11208, 10168,15304, 10200,14280, 10216,12232, 10232,16328, + 10264,12328, 10296,14376, 10328,13352, 10344,11304, 10360,15400, 10392,12840, + 10408,10792, 10424,14888, 10456,13864, 10472,11816, 10488,15912, 10520,12584, + 10552,14632, 10584,13608, 10600,11560, 10616,15656, 10648,13096, 10664,11048, + 10680,15144, 10712,14120, 10728,12072, 10744,16168, 10776,12456, 10808,14504, + 10840,13480, 10856,11432, 10872,15528, 10904,12968, 10936,15016, 10968,13992, + 10984,11944, 11000,16040, 11032,12712, 11064,14760, 11096,13736, 11112,11688, + 11128,15784, 11160,13224, 11192,15272, 11224,14248, 11240,12200, 11256,16296, + 11288,12392, 11320,14440, 11352,13416, 11384,15464, 11416,12904, 11448,14952, + 11480,13928, 11496,11880, 11512,15976, 11544,12648, 11576,14696, 11608,13672, + 11640,15720, 11672,13160, 11704,15208, 11736,14184, 11752,12136, 11768,16232, + 11800,12520, 11832,14568, 11864,13544, 11896,15592, 11928,13032, 11960,15080, + 11992,14056, 12024,16104, 12056,12776, 12088,14824, 12120,13800, 12152,15848, + 12184,13288, 12216,15336, 12248,14312, 12280,16360, 12344,14360, 12376,13336, + 12408,15384, 12440,12824, 12472,14872, 12504,13848, 12536,15896, 12600,14616, + 12632,13592, 12664,15640, 12696,13080, 12728,15128, 12760,14104, 12792,16152, + 12856,14488, 12888,13464, 12920,15512, 12984,15000, 13016,13976, 13048,16024, + 13112,14744, 13144,13720, 13176,15768, 13240,15256, 13272,14232, 13304,16280, + 13368,14424, 13432,15448, 13496,14936, 13528,13912, 13560,15960, 13624,14680, + 13688,15704, 13752,15192, 13784,14168, 13816,16216, 13880,14552, 13944,15576, + 14008,15064, 14072,16088, 14136,14808, 14200,15832, 14264,15320, 14328,16344, + 14456,15416, 14520,14904, 14584,15928, 14712,15672, 14776,15160, 14840,16184, + 14968,15544, 15096,16056, 15224,15800, 15352,16312, 15608,15992, 15864,16248 +}; + +const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH] = +{ + /* radix 4, size 4032 */ + 8,16384, 16,8192, 24,24576, 32,4096, 40,20480, 48,12288, 56,28672, 64,2048, + 72,18432, 80,10240, 88,26624, 96,6144, 104,22528, 112,14336, 120,30720, + 128,1024, 136,17408, 144,9216, 152,25600, 160,5120, 168,21504, 176,13312, + 184,29696, 192,3072, 200,19456, 208,11264, 216,27648, 224,7168, 232,23552, + 240,15360, 248,31744, 256,512, 264,16896, 272,8704, 280,25088, 288,4608, + 296,20992, 304,12800, 312,29184, 320,2560, 328,18944, 336,10752, 344,27136, + 352,6656, 360,23040, 368,14848, 376,31232, 384,1536, 392,17920, 400,9728, + 408,26112, 416,5632, 424,22016, 432,13824, 440,30208, 448,3584, 456,19968, + 464,11776, 472,28160, 480,7680, 488,24064, 496,15872, 504,32256, 520,16640, + 528,8448, 536,24832, 544,4352, 552,20736, 560,12544, 568,28928, 576,2304, + 584,18688, 592,10496, 600,26880, 608,6400, 616,22784, 624,14592, 632,30976, + 640,1280, 648,17664, 656,9472, 664,25856, 672,5376, 680,21760, 688,13568, + 696,29952, 704,3328, 712,19712, 720,11520, 728,27904, 736,7424, 744,23808, + 752,15616, 760,32000, 776,17152, 784,8960, 792,25344, 800,4864, 808,21248, + 816,13056, 824,29440, 832,2816, 840,19200, 848,11008, 856,27392, 864,6912, + 872,23296, 880,15104, 888,31488, 896,1792, 904,18176, 912,9984, 920,26368, + 928,5888, 936,22272, 944,14080, 952,30464, 960,3840, 968,20224, 976,12032, + 984,28416, 992,7936, 1000,24320, 1008,16128, 1016,32512, 1032,16512, 1040,8320, + 1048,24704, 1056,4224, 1064,20608, 1072,12416, 1080,28800, 1088,2176, + 1096,18560, 1104,10368, 1112,26752, 1120,6272, 1128,22656, 1136,14464, + 1144,30848, 1160,17536, 1168,9344, 1176,25728, 1184,5248, 1192,21632, + 1200,13440, 1208,29824, 1216,3200, 1224,19584, 1232,11392, 1240,27776, + 1248,7296, 1256,23680, 1264,15488, 1272,31872, 1288,17024, 1296,8832, + 1304,25216, 1312,4736, 1320,21120, 1328,12928, 1336,29312, 1344,2688, + 1352,19072, 1360,10880, 1368,27264, 1376,6784, 1384,23168, 1392,14976, + 1400,31360, 1408,1664, 1416,18048, 1424,9856, 1432,26240, 1440,5760, 1448,22144, + 1456,13952, 1464,30336, 1472,3712, 1480,20096, 1488,11904, 1496,28288, + 1504,7808, 1512,24192, 1520,16000, 1528,32384, 1544,16768, 1552,8576, + 1560,24960, 1568,4480, 1576,20864, 1584,12672, 1592,29056, 1600,2432, + 1608,18816, 1616,10624, 1624,27008, 1632,6528, 1640,22912, 1648,14720, + 1656,31104, 1672,17792, 1680,9600, 1688,25984, 1696,5504, 1704,21888, + 1712,13696, 1720,30080, 1728,3456, 1736,19840, 1744,11648, 1752,28032, + 1760,7552, 1768,23936, 1776,15744, 1784,32128, 1800,17280, 1808,9088, + 1816,25472, 1824,4992, 1832,21376, 1840,13184, 1848,29568, 1856,2944, + 1864,19328, 1872,11136, 1880,27520, 1888,7040, 1896,23424, 1904,15232, + 1912,31616, 1928,18304, 1936,10112, 1944,26496, 1952,6016, 1960,22400, + 1968,14208, 1976,30592, 1984,3968, 1992,20352, 2000,12160, 2008,28544, + 2016,8064, 2024,24448, 2032,16256, 2040,32640, 2056,16448, 2064,8256, + 2072,24640, 2080,4160, 2088,20544, 2096,12352, 2104,28736, 2120,18496, + 2128,10304, 2136,26688, 2144,6208, 2152,22592, 2160,14400, 2168,30784, + 2184,17472, 2192,9280, 2200,25664, 2208,5184, 2216,21568, 2224,13376, + 2232,29760, 2240,3136, 2248,19520, 2256,11328, 2264,27712, 2272,7232, + 2280,23616, 2288,15424, 2296,31808, 2312,16960, 2320,8768, 2328,25152, + 2336,4672, 2344,21056, 2352,12864, 2360,29248, 2368,2624, 2376,19008, + 2384,10816, 2392,27200, 2400,6720, 2408,23104, 2416,14912, 2424,31296, + 2440,17984, 2448,9792, 2456,26176, 2464,5696, 2472,22080, 2480,13888, + 2488,30272, 2496,3648, 2504,20032, 2512,11840, 2520,28224, 2528,7744, + 2536,24128, 2544,15936, 2552,32320, 2568,16704, 2576,8512, 2584,24896, + 2592,4416, 2600,20800, 2608,12608, 2616,28992, 2632,18752, 2640,10560, + 2648,26944, 2656,6464, 2664,22848, 2672,14656, 2680,31040, 2696,17728, + 2704,9536, 2712,25920, 2720,5440, 2728,21824, 2736,13632, 2744,30016, 2752,3392, + 2760,19776, 2768,11584, 2776,27968, 2784,7488, 2792,23872, 2800,15680, + 2808,32064, 2824,17216, 2832,9024, 2840,25408, 2848,4928, 2856,21312, + 2864,13120, 2872,29504, 2888,19264, 2896,11072, 2904,27456, 2912,6976, + 2920,23360, 2928,15168, 2936,31552, 2952,18240, 2960,10048, 2968,26432, + 2976,5952, 2984,22336, 2992,14144, 3000,30528, 3008,3904, 3016,20288, + 3024,12096, 3032,28480, 3040,8000, 3048,24384, 3056,16192, 3064,32576, + 3080,16576, 3088,8384, 3096,24768, 3104,4288, 3112,20672, 3120,12480, + 3128,28864, 3144,18624, 3152,10432, 3160,26816, 3168,6336, 3176,22720, + 3184,14528, 3192,30912, 3208,17600, 3216,9408, 3224,25792, 3232,5312, + 3240,21696, 3248,13504, 3256,29888, 3272,19648, 3280,11456, 3288,27840, + 3296,7360, 3304,23744, 3312,15552, 3320,31936, 3336,17088, 3344,8896, + 3352,25280, 3360,4800, 3368,21184, 3376,12992, 3384,29376, 3400,19136, + 3408,10944, 3416,27328, 3424,6848, 3432,23232, 3440,15040, 3448,31424, + 3464,18112, 3472,9920, 3480,26304, 3488,5824, 3496,22208, 3504,14016, + 3512,30400, 3520,3776, 3528,20160, 3536,11968, 3544,28352, 3552,7872, + 3560,24256, 3568,16064, 3576,32448, 3592,16832, 3600,8640, 3608,25024, + 3616,4544, 3624,20928, 3632,12736, 3640,29120, 3656,18880, 3664,10688, + 3672,27072, 3680,6592, 3688,22976, 3696,14784, 3704,31168, 3720,17856, + 3728,9664, 3736,26048, 3744,5568, 3752,21952, 3760,13760, 3768,30144, + 3784,19904, 3792,11712, 3800,28096, 3808,7616, 3816,24000, 3824,15808, + 3832,32192, 3848,17344, 3856,9152, 3864,25536, 3872,5056, 3880,21440, + 3888,13248, 3896,29632, 3912,19392, 3920,11200, 3928,27584, 3936,7104, + 3944,23488, 3952,15296, 3960,31680, 3976,18368, 3984,10176, 3992,26560, + 4000,6080, 4008,22464, 4016,14272, 4024,30656, 4040,20416, 4048,12224, + 4056,28608, 4064,8128, 4072,24512, 4080,16320, 4088,32704, 4104,16416, + 4112,8224, 4120,24608, 4136,20512, 4144,12320, 4152,28704, 4168,18464, + 4176,10272, 4184,26656, 4192,6176, 4200,22560, 4208,14368, 4216,30752, + 4232,17440, 4240,9248, 4248,25632, 4256,5152, 4264,21536, 4272,13344, + 4280,29728, 4296,19488, 4304,11296, 4312,27680, 4320,7200, 4328,23584, + 4336,15392, 4344,31776, 4360,16928, 4368,8736, 4376,25120, 4384,4640, + 4392,21024, 4400,12832, 4408,29216, 4424,18976, 4432,10784, 4440,27168, + 4448,6688, 4456,23072, 4464,14880, 4472,31264, 4488,17952, 4496,9760, + 4504,26144, 4512,5664, 4520,22048, 4528,13856, 4536,30240, 4552,20000, + 4560,11808, 4568,28192, 4576,7712, 4584,24096, 4592,15904, 4600,32288, + 4616,16672, 4624,8480, 4632,24864, 4648,20768, 4656,12576, 4664,28960, + 4680,18720, 4688,10528, 4696,26912, 4704,6432, 4712,22816, 4720,14624, + 4728,31008, 4744,17696, 4752,9504, 4760,25888, 4768,5408, 4776,21792, + 4784,13600, 4792,29984, 4808,19744, 4816,11552, 4824,27936, 4832,7456, + 4840,23840, 4848,15648, 4856,32032, 4872,17184, 4880,8992, 4888,25376, + 4904,21280, 4912,13088, 4920,29472, 4936,19232, 4944,11040, 4952,27424, + 4960,6944, 4968,23328, 4976,15136, 4984,31520, 5000,18208, 5008,10016, + 5016,26400, 5024,5920, 5032,22304, 5040,14112, 5048,30496, 5064,20256, + 5072,12064, 5080,28448, 5088,7968, 5096,24352, 5104,16160, 5112,32544, + 5128,16544, 5136,8352, 5144,24736, 5160,20640, 5168,12448, 5176,28832, + 5192,18592, 5200,10400, 5208,26784, 5216,6304, 5224,22688, 5232,14496, + 5240,30880, 5256,17568, 5264,9376, 5272,25760, 5288,21664, 5296,13472, + 5304,29856, 5320,19616, 5328,11424, 5336,27808, 5344,7328, 5352,23712, + 5360,15520, 5368,31904, 5384,17056, 5392,8864, 5400,25248, 5416,21152, + 5424,12960, 5432,29344, 5448,19104, 5456,10912, 5464,27296, 5472,6816, + 5480,23200, 5488,15008, 5496,31392, 5512,18080, 5520,9888, 5528,26272, + 5536,5792, 5544,22176, 5552,13984, 5560,30368, 5576,20128, 5584,11936, + 5592,28320, 5600,7840, 5608,24224, 5616,16032, 5624,32416, 5640,16800, + 5648,8608, 5656,24992, 5672,20896, 5680,12704, 5688,29088, 5704,18848, + 5712,10656, 5720,27040, 5728,6560, 5736,22944, 5744,14752, 5752,31136, + 5768,17824, 5776,9632, 5784,26016, 5800,21920, 5808,13728, 5816,30112, + 5832,19872, 5840,11680, 5848,28064, 5856,7584, 5864,23968, 5872,15776, + 5880,32160, 5896,17312, 5904,9120, 5912,25504, 5928,21408, 5936,13216, + 5944,29600, 5960,19360, 5968,11168, 5976,27552, 5984,7072, 5992,23456, + 6000,15264, 6008,31648, 6024,18336, 6032,10144, 6040,26528, 6056,22432, + 6064,14240, 6072,30624, 6088,20384, 6096,12192, 6104,28576, 6112,8096, + 6120,24480, 6128,16288, 6136,32672, 6152,16480, 6160,8288, 6168,24672, + 6184,20576, 6192,12384, 6200,28768, 6216,18528, 6224,10336, 6232,26720, + 6248,22624, 6256,14432, 6264,30816, 6280,17504, 6288,9312, 6296,25696, + 6312,21600, 6320,13408, 6328,29792, 6344,19552, 6352,11360, 6360,27744, + 6368,7264, 6376,23648, 6384,15456, 6392,31840, 6408,16992, 6416,8800, + 6424,25184, 6440,21088, 6448,12896, 6456,29280, 6472,19040, 6480,10848, + 6488,27232, 6496,6752, 6504,23136, 6512,14944, 6520,31328, 6536,18016, + 6544,9824, 6552,26208, 6568,22112, 6576,13920, 6584,30304, 6600,20064, + 6608,11872, 6616,28256, 6624,7776, 6632,24160, 6640,15968, 6648,32352, + 6664,16736, 6672,8544, 6680,24928, 6696,20832, 6704,12640, 6712,29024, + 6728,18784, 6736,10592, 6744,26976, 6760,22880, 6768,14688, 6776,31072, + 6792,17760, 6800,9568, 6808,25952, 6824,21856, 6832,13664, 6840,30048, + 6856,19808, 6864,11616, 6872,28000, 6880,7520, 6888,23904, 6896,15712, + 6904,32096, 6920,17248, 6928,9056, 6936,25440, 6952,21344, 6960,13152, + 6968,29536, 6984,19296, 6992,11104, 7000,27488, 7016,23392, 7024,15200, + 7032,31584, 7048,18272, 7056,10080, 7064,26464, 7080,22368, 7088,14176, + 7096,30560, 7112,20320, 7120,12128, 7128,28512, 7136,8032, 7144,24416, + 7152,16224, 7160,32608, 7176,16608, 7184,8416, 7192,24800, 7208,20704, + 7216,12512, 7224,28896, 7240,18656, 7248,10464, 7256,26848, 7272,22752, + 7280,14560, 7288,30944, 7304,17632, 7312,9440, 7320,25824, 7336,21728, + 7344,13536, 7352,29920, 7368,19680, 7376,11488, 7384,27872, 7400,23776, + 7408,15584, 7416,31968, 7432,17120, 7440,8928, 7448,25312, 7464,21216, + 7472,13024, 7480,29408, 7496,19168, 7504,10976, 7512,27360, 7528,23264, + 7536,15072, 7544,31456, 7560,18144, 7568,9952, 7576,26336, 7592,22240, + 7600,14048, 7608,30432, 7624,20192, 7632,12000, 7640,28384, 7648,7904, + 7656,24288, 7664,16096, 7672,32480, 7688,16864, 7696,8672, 7704,25056, + 7720,20960, 7728,12768, 7736,29152, 7752,18912, 7760,10720, 7768,27104, + 7784,23008, 7792,14816, 7800,31200, 7816,17888, 7824,9696, 7832,26080, + 7848,21984, 7856,13792, 7864,30176, 7880,19936, 7888,11744, 7896,28128, + 7912,24032, 7920,15840, 7928,32224, 7944,17376, 7952,9184, 7960,25568, + 7976,21472, 7984,13280, 7992,29664, 8008,19424, 8016,11232, 8024,27616, + 8040,23520, 8048,15328, 8056,31712, 8072,18400, 8080,10208, 8088,26592, + 8104,22496, 8112,14304, 8120,30688, 8136,20448, 8144,12256, 8152,28640, + 8168,24544, 8176,16352, 8184,32736, 8200,16400, 8216,24592, 8232,20496, + 8240,12304, 8248,28688, 8264,18448, 8272,10256, 8280,26640, 8296,22544, + 8304,14352, 8312,30736, 8328,17424, 8336,9232, 8344,25616, 8360,21520, + 8368,13328, 8376,29712, 8392,19472, 8400,11280, 8408,27664, 8424,23568, + 8432,15376, 8440,31760, 8456,16912, 8464,8720, 8472,25104, 8488,21008, + 8496,12816, 8504,29200, 8520,18960, 8528,10768, 8536,27152, 8552,23056, + 8560,14864, 8568,31248, 8584,17936, 8592,9744, 8600,26128, 8616,22032, + 8624,13840, 8632,30224, 8648,19984, 8656,11792, 8664,28176, 8680,24080, + 8688,15888, 8696,32272, 8712,16656, 8728,24848, 8744,20752, 8752,12560, + 8760,28944, 8776,18704, 8784,10512, 8792,26896, 8808,22800, 8816,14608, + 8824,30992, 8840,17680, 8848,9488, 8856,25872, 8872,21776, 8880,13584, + 8888,29968, 8904,19728, 8912,11536, 8920,27920, 8936,23824, 8944,15632, + 8952,32016, 8968,17168, 8984,25360, 9000,21264, 9008,13072, 9016,29456, + 9032,19216, 9040,11024, 9048,27408, 9064,23312, 9072,15120, 9080,31504, + 9096,18192, 9104,10000, 9112,26384, 9128,22288, 9136,14096, 9144,30480, + 9160,20240, 9168,12048, 9176,28432, 9192,24336, 9200,16144, 9208,32528, + 9224,16528, 9240,24720, 9256,20624, 9264,12432, 9272,28816, 9288,18576, + 9296,10384, 9304,26768, 9320,22672, 9328,14480, 9336,30864, 9352,17552, + 9368,25744, 9384,21648, 9392,13456, 9400,29840, 9416,19600, 9424,11408, + 9432,27792, 9448,23696, 9456,15504, 9464,31888, 9480,17040, 9496,25232, + 9512,21136, 9520,12944, 9528,29328, 9544,19088, 9552,10896, 9560,27280, + 9576,23184, 9584,14992, 9592,31376, 9608,18064, 9616,9872, 9624,26256, + 9640,22160, 9648,13968, 9656,30352, 9672,20112, 9680,11920, 9688,28304, + 9704,24208, 9712,16016, 9720,32400, 9736,16784, 9752,24976, 9768,20880, + 9776,12688, 9784,29072, 9800,18832, 9808,10640, 9816,27024, 9832,22928, + 9840,14736, 9848,31120, 9864,17808, 9880,26000, 9896,21904, 9904,13712, + 9912,30096, 9928,19856, 9936,11664, 9944,28048, 9960,23952, 9968,15760, + 9976,32144, 9992,17296, 10008,25488, 10024,21392, 10032,13200, 10040,29584, + 10056,19344, 10064,11152, 10072,27536, 10088,23440, 10096,15248, 10104,31632, + 10120,18320, 10136,26512, 10152,22416, 10160,14224, 10168,30608, 10184,20368, + 10192,12176, 10200,28560, 10216,24464, 10224,16272, 10232,32656, 10248,16464, + 10264,24656, 10280,20560, 10288,12368, 10296,28752, 10312,18512, 10328,26704, + 10344,22608, 10352,14416, 10360,30800, 10376,17488, 10392,25680, 10408,21584, + 10416,13392, 10424,29776, 10440,19536, 10448,11344, 10456,27728, 10472,23632, + 10480,15440, 10488,31824, 10504,16976, 10520,25168, 10536,21072, 10544,12880, + 10552,29264, 10568,19024, 10576,10832, 10584,27216, 10600,23120, 10608,14928, + 10616,31312, 10632,18000, 10648,26192, 10664,22096, 10672,13904, 10680,30288, + 10696,20048, 10704,11856, 10712,28240, 10728,24144, 10736,15952, 10744,32336, + 10760,16720, 10776,24912, 10792,20816, 10800,12624, 10808,29008, 10824,18768, + 10840,26960, 10856,22864, 10864,14672, 10872,31056, 10888,17744, 10904,25936, + 10920,21840, 10928,13648, 10936,30032, 10952,19792, 10960,11600, 10968,27984, + 10984,23888, 10992,15696, 11000,32080, 11016,17232, 11032,25424, 11048,21328, + 11056,13136, 11064,29520, 11080,19280, 11096,27472, 11112,23376, 11120,15184, + 11128,31568, 11144,18256, 11160,26448, 11176,22352, 11184,14160, 11192,30544, + 11208,20304, 11216,12112, 11224,28496, 11240,24400, 11248,16208, 11256,32592, + 11272,16592, 11288,24784, 11304,20688, 11312,12496, 11320,28880, 11336,18640, + 11352,26832, 11368,22736, 11376,14544, 11384,30928, 11400,17616, 11416,25808, + 11432,21712, 11440,13520, 11448,29904, 11464,19664, 11480,27856, 11496,23760, + 11504,15568, 11512,31952, 11528,17104, 11544,25296, 11560,21200, 11568,13008, + 11576,29392, 11592,19152, 11608,27344, 11624,23248, 11632,15056, 11640,31440, + 11656,18128, 11672,26320, 11688,22224, 11696,14032, 11704,30416, 11720,20176, + 11728,11984, 11736,28368, 11752,24272, 11760,16080, 11768,32464, 11784,16848, + 11800,25040, 11816,20944, 11824,12752, 11832,29136, 11848,18896, 11864,27088, + 11880,22992, 11888,14800, 11896,31184, 11912,17872, 11928,26064, 11944,21968, + 11952,13776, 11960,30160, 11976,19920, 11992,28112, 12008,24016, 12016,15824, + 12024,32208, 12040,17360, 12056,25552, 12072,21456, 12080,13264, 12088,29648, + 12104,19408, 12120,27600, 12136,23504, 12144,15312, 12152,31696, 12168,18384, + 12184,26576, 12200,22480, 12208,14288, 12216,30672, 12232,20432, 12248,28624, + 12264,24528, 12272,16336, 12280,32720, 12296,16432, 12312,24624, 12328,20528, + 12344,28720, 12360,18480, 12376,26672, 12392,22576, 12400,14384, 12408,30768, + 12424,17456, 12440,25648, 12456,21552, 12464,13360, 12472,29744, 12488,19504, + 12504,27696, 12520,23600, 12528,15408, 12536,31792, 12552,16944, 12568,25136, + 12584,21040, 12592,12848, 12600,29232, 12616,18992, 12632,27184, 12648,23088, + 12656,14896, 12664,31280, 12680,17968, 12696,26160, 12712,22064, 12720,13872, + 12728,30256, 12744,20016, 12760,28208, 12776,24112, 12784,15920, 12792,32304, + 12808,16688, 12824,24880, 12840,20784, 12856,28976, 12872,18736, 12888,26928, + 12904,22832, 12912,14640, 12920,31024, 12936,17712, 12952,25904, 12968,21808, + 12976,13616, 12984,30000, 13000,19760, 13016,27952, 13032,23856, 13040,15664, + 13048,32048, 13064,17200, 13080,25392, 13096,21296, 13112,29488, 13128,19248, + 13144,27440, 13160,23344, 13168,15152, 13176,31536, 13192,18224, 13208,26416, + 13224,22320, 13232,14128, 13240,30512, 13256,20272, 13272,28464, 13288,24368, + 13296,16176, 13304,32560, 13320,16560, 13336,24752, 13352,20656, 13368,28848, + 13384,18608, 13400,26800, 13416,22704, 13424,14512, 13432,30896, 13448,17584, + 13464,25776, 13480,21680, 13496,29872, 13512,19632, 13528,27824, 13544,23728, + 13552,15536, 13560,31920, 13576,17072, 13592,25264, 13608,21168, 13624,29360, + 13640,19120, 13656,27312, 13672,23216, 13680,15024, 13688,31408, 13704,18096, + 13720,26288, 13736,22192, 13744,14000, 13752,30384, 13768,20144, 13784,28336, + 13800,24240, 13808,16048, 13816,32432, 13832,16816, 13848,25008, 13864,20912, + 13880,29104, 13896,18864, 13912,27056, 13928,22960, 13936,14768, 13944,31152, + 13960,17840, 13976,26032, 13992,21936, 14008,30128, 14024,19888, 14040,28080, + 14056,23984, 14064,15792, 14072,32176, 14088,17328, 14104,25520, 14120,21424, + 14136,29616, 14152,19376, 14168,27568, 14184,23472, 14192,15280, 14200,31664, + 14216,18352, 14232,26544, 14248,22448, 14264,30640, 14280,20400, 14296,28592, + 14312,24496, 14320,16304, 14328,32688, 14344,16496, 14360,24688, 14376,20592, + 14392,28784, 14408,18544, 14424,26736, 14440,22640, 14456,30832, 14472,17520, + 14488,25712, 14504,21616, 14520,29808, 14536,19568, 14552,27760, 14568,23664, + 14576,15472, 14584,31856, 14600,17008, 14616,25200, 14632,21104, 14648,29296, + 14664,19056, 14680,27248, 14696,23152, 14704,14960, 14712,31344, 14728,18032, + 14744,26224, 14760,22128, 14776,30320, 14792,20080, 14808,28272, 14824,24176, + 14832,15984, 14840,32368, 14856,16752, 14872,24944, 14888,20848, 14904,29040, + 14920,18800, 14936,26992, 14952,22896, 14968,31088, 14984,17776, 15000,25968, + 15016,21872, 15032,30064, 15048,19824, 15064,28016, 15080,23920, 15088,15728, + 15096,32112, 15112,17264, 15128,25456, 15144,21360, 15160,29552, 15176,19312, + 15192,27504, 15208,23408, 15224,31600, 15240,18288, 15256,26480, 15272,22384, + 15288,30576, 15304,20336, 15320,28528, 15336,24432, 15344,16240, 15352,32624, + 15368,16624, 15384,24816, 15400,20720, 15416,28912, 15432,18672, 15448,26864, + 15464,22768, 15480,30960, 15496,17648, 15512,25840, 15528,21744, 15544,29936, + 15560,19696, 15576,27888, 15592,23792, 15608,31984, 15624,17136, 15640,25328, + 15656,21232, 15672,29424, 15688,19184, 15704,27376, 15720,23280, 15736,31472, + 15752,18160, 15768,26352, 15784,22256, 15800,30448, 15816,20208, 15832,28400, + 15848,24304, 15856,16112, 15864,32496, 15880,16880, 15896,25072, 15912,20976, + 15928,29168, 15944,18928, 15960,27120, 15976,23024, 15992,31216, 16008,17904, + 16024,26096, 16040,22000, 16056,30192, 16072,19952, 16088,28144, 16104,24048, + 16120,32240, 16136,17392, 16152,25584, 16168,21488, 16184,29680, 16200,19440, + 16216,27632, 16232,23536, 16248,31728, 16264,18416, 16280,26608, 16296,22512, + 16312,30704, 16328,20464, 16344,28656, 16360,24560, 16376,32752, 16408,24584, + 16424,20488, 16440,28680, 16456,18440, 16472,26632, 16488,22536, 16504,30728, + 16520,17416, 16536,25608, 16552,21512, 16568,29704, 16584,19464, 16600,27656, + 16616,23560, 16632,31752, 16648,16904, 16664,25096, 16680,21000, 16696,29192, + 16712,18952, 16728,27144, 16744,23048, 16760,31240, 16776,17928, 16792,26120, + 16808,22024, 16824,30216, 16840,19976, 16856,28168, 16872,24072, 16888,32264, + 16920,24840, 16936,20744, 16952,28936, 16968,18696, 16984,26888, 17000,22792, + 17016,30984, 17032,17672, 17048,25864, 17064,21768, 17080,29960, 17096,19720, + 17112,27912, 17128,23816, 17144,32008, 17176,25352, 17192,21256, 17208,29448, + 17224,19208, 17240,27400, 17256,23304, 17272,31496, 17288,18184, 17304,26376, + 17320,22280, 17336,30472, 17352,20232, 17368,28424, 17384,24328, 17400,32520, + 17432,24712, 17448,20616, 17464,28808, 17480,18568, 17496,26760, 17512,22664, + 17528,30856, 17560,25736, 17576,21640, 17592,29832, 17608,19592, 17624,27784, + 17640,23688, 17656,31880, 17688,25224, 17704,21128, 17720,29320, 17736,19080, + 17752,27272, 17768,23176, 17784,31368, 17800,18056, 17816,26248, 17832,22152, + 17848,30344, 17864,20104, 17880,28296, 17896,24200, 17912,32392, 17944,24968, + 17960,20872, 17976,29064, 17992,18824, 18008,27016, 18024,22920, 18040,31112, + 18072,25992, 18088,21896, 18104,30088, 18120,19848, 18136,28040, 18152,23944, + 18168,32136, 18200,25480, 18216,21384, 18232,29576, 18248,19336, 18264,27528, + 18280,23432, 18296,31624, 18328,26504, 18344,22408, 18360,30600, 18376,20360, + 18392,28552, 18408,24456, 18424,32648, 18456,24648, 18472,20552, 18488,28744, + 18520,26696, 18536,22600, 18552,30792, 18584,25672, 18600,21576, 18616,29768, + 18632,19528, 18648,27720, 18664,23624, 18680,31816, 18712,25160, 18728,21064, + 18744,29256, 18760,19016, 18776,27208, 18792,23112, 18808,31304, 18840,26184, + 18856,22088, 18872,30280, 18888,20040, 18904,28232, 18920,24136, 18936,32328, + 18968,24904, 18984,20808, 19000,29000, 19032,26952, 19048,22856, 19064,31048, + 19096,25928, 19112,21832, 19128,30024, 19144,19784, 19160,27976, 19176,23880, + 19192,32072, 19224,25416, 19240,21320, 19256,29512, 19288,27464, 19304,23368, + 19320,31560, 19352,26440, 19368,22344, 19384,30536, 19400,20296, 19416,28488, + 19432,24392, 19448,32584, 19480,24776, 19496,20680, 19512,28872, 19544,26824, + 19560,22728, 19576,30920, 19608,25800, 19624,21704, 19640,29896, 19672,27848, + 19688,23752, 19704,31944, 19736,25288, 19752,21192, 19768,29384, 19800,27336, + 19816,23240, 19832,31432, 19864,26312, 19880,22216, 19896,30408, 19912,20168, + 19928,28360, 19944,24264, 19960,32456, 19992,25032, 20008,20936, 20024,29128, + 20056,27080, 20072,22984, 20088,31176, 20120,26056, 20136,21960, 20152,30152, + 20184,28104, 20200,24008, 20216,32200, 20248,25544, 20264,21448, 20280,29640, + 20312,27592, 20328,23496, 20344,31688, 20376,26568, 20392,22472, 20408,30664, + 20440,28616, 20456,24520, 20472,32712, 20504,24616, 20536,28712, 20568,26664, + 20584,22568, 20600,30760, 20632,25640, 20648,21544, 20664,29736, 20696,27688, + 20712,23592, 20728,31784, 20760,25128, 20776,21032, 20792,29224, 20824,27176, + 20840,23080, 20856,31272, 20888,26152, 20904,22056, 20920,30248, 20952,28200, + 20968,24104, 20984,32296, 21016,24872, 21048,28968, 21080,26920, 21096,22824, + 21112,31016, 21144,25896, 21160,21800, 21176,29992, 21208,27944, 21224,23848, + 21240,32040, 21272,25384, 21304,29480, 21336,27432, 21352,23336, 21368,31528, + 21400,26408, 21416,22312, 21432,30504, 21464,28456, 21480,24360, 21496,32552, + 21528,24744, 21560,28840, 21592,26792, 21608,22696, 21624,30888, 21656,25768, + 21688,29864, 21720,27816, 21736,23720, 21752,31912, 21784,25256, 21816,29352, + 21848,27304, 21864,23208, 21880,31400, 21912,26280, 21928,22184, 21944,30376, + 21976,28328, 21992,24232, 22008,32424, 22040,25000, 22072,29096, 22104,27048, + 22120,22952, 22136,31144, 22168,26024, 22200,30120, 22232,28072, 22248,23976, + 22264,32168, 22296,25512, 22328,29608, 22360,27560, 22376,23464, 22392,31656, + 22424,26536, 22456,30632, 22488,28584, 22504,24488, 22520,32680, 22552,24680, + 22584,28776, 22616,26728, 22648,30824, 22680,25704, 22712,29800, 22744,27752, + 22760,23656, 22776,31848, 22808,25192, 22840,29288, 22872,27240, 22888,23144, + 22904,31336, 22936,26216, 22968,30312, 23000,28264, 23016,24168, 23032,32360, + 23064,24936, 23096,29032, 23128,26984, 23160,31080, 23192,25960, 23224,30056, + 23256,28008, 23272,23912, 23288,32104, 23320,25448, 23352,29544, 23384,27496, + 23416,31592, 23448,26472, 23480,30568, 23512,28520, 23528,24424, 23544,32616, + 23576,24808, 23608,28904, 23640,26856, 23672,30952, 23704,25832, 23736,29928, + 23768,27880, 23800,31976, 23832,25320, 23864,29416, 23896,27368, 23928,31464, + 23960,26344, 23992,30440, 24024,28392, 24040,24296, 24056,32488, 24088,25064, + 24120,29160, 24152,27112, 24184,31208, 24216,26088, 24248,30184, 24280,28136, + 24312,32232, 24344,25576, 24376,29672, 24408,27624, 24440,31720, 24472,26600, + 24504,30696, 24536,28648, 24568,32744, 24632,28696, 24664,26648, 24696,30744, + 24728,25624, 24760,29720, 24792,27672, 24824,31768, 24856,25112, 24888,29208, + 24920,27160, 24952,31256, 24984,26136, 25016,30232, 25048,28184, 25080,32280, + 25144,28952, 25176,26904, 25208,31000, 25240,25880, 25272,29976, 25304,27928, + 25336,32024, 25400,29464, 25432,27416, 25464,31512, 25496,26392, 25528,30488, + 25560,28440, 25592,32536, 25656,28824, 25688,26776, 25720,30872, 25784,29848, + 25816,27800, 25848,31896, 25912,29336, 25944,27288, 25976,31384, 26008,26264, + 26040,30360, 26072,28312, 26104,32408, 26168,29080, 26200,27032, 26232,31128, + 26296,30104, 26328,28056, 26360,32152, 26424,29592, 26456,27544, 26488,31640, + 26552,30616, 26584,28568, 26616,32664, 26680,28760, 26744,30808, 26808,29784, + 26840,27736, 26872,31832, 26936,29272, 26968,27224, 27000,31320, 27064,30296, + 27096,28248, 27128,32344, 27192,29016, 27256,31064, 27320,30040, 27352,27992, + 27384,32088, 27448,29528, 27512,31576, 27576,30552, 27608,28504, 27640,32600, + 27704,28888, 27768,30936, 27832,29912, 27896,31960, 27960,29400, 28024,31448, + 28088,30424, 28120,28376, 28152,32472, 28216,29144, 28280,31192, 28344,30168, + 28408,32216, 28472,29656, 28536,31704, 28600,30680, 28664,32728, 28792,30776, + 28856,29752, 28920,31800, 28984,29240, 29048,31288, 29112,30264, 29176,32312, + 29304,31032, 29368,30008, 29432,32056, 29560,31544, 29624,30520, 29688,32568, + 29816,30904, 29944,31928, 30072,31416, 30136,30392, 30200,32440, 30328,31160, + 30456,32184, 30584,31672, 30712,32696, 30968,31864, 31096,31352, 31224,32376, + 31480,32120, 31736,32632, 32248,32504 +}; + +/** +* \par +* Example code for Floating-point RFFT Twiddle factors Generation: +* \par +*
TW = exp(2*pi*i*[0:L/2-1]/L - pi/2*i).' 
+* \par +* Real and Imag values are in interleaved fashion +*/ +const float32_t twiddleCoef_rfft_32[32] = { + 0.000000000f, 1.000000000f, + 0.195090322f, 0.980785280f, + 0.382683432f, 0.923879533f, + 0.555570233f, 0.831469612f, + 0.707106781f, 0.707106781f, + 0.831469612f, 0.555570233f, + 0.923879533f, 0.382683432f, + 0.980785280f, 0.195090322f, + 1.000000000f, 0.000000000f, + 0.980785280f, -0.195090322f, + 0.923879533f, -0.382683432f, + 0.831469612f, -0.555570233f, + 0.707106781f, -0.707106781f, + 0.555570233f, -0.831469612f, + 0.382683432f, -0.923879533f, + 0.195090322f, -0.980785280f +}; + +const float32_t twiddleCoef_rfft_64[64] = { + 0.000000000000000f, 1.000000000000000f, + 0.098017140329561f, 0.995184726672197f, + 0.195090322016128f, 0.980785280403230f, + 0.290284677254462f, 0.956940335732209f, + 0.382683432365090f, 0.923879532511287f, + 0.471396736825998f, 0.881921264348355f, + 0.555570233019602f, 0.831469612302545f, + 0.634393284163645f, 0.773010453362737f, + 0.707106781186547f, 0.707106781186548f, + 0.773010453362737f, 0.634393284163645f, + 0.831469612302545f, 0.555570233019602f, + 0.881921264348355f, 0.471396736825998f, + 0.923879532511287f, 0.382683432365090f, + 0.956940335732209f, 0.290284677254462f, + 0.980785280403230f, 0.195090322016128f, + 0.995184726672197f, 0.098017140329561f, + 1.000000000000000f, 0.000000000000000f, + 0.995184726672197f, -0.098017140329561f, + 0.980785280403230f, -0.195090322016128f, + 0.956940335732209f, -0.290284677254462f, + 0.923879532511287f, -0.382683432365090f, + 0.881921264348355f, -0.471396736825998f, + 0.831469612302545f, -0.555570233019602f, + 0.773010453362737f, -0.634393284163645f, + 0.707106781186548f, -0.707106781186547f, + 0.634393284163645f, -0.773010453362737f, + 0.555570233019602f, -0.831469612302545f, + 0.471396736825998f, -0.881921264348355f, + 0.382683432365090f, -0.923879532511287f, + 0.290284677254462f, -0.956940335732209f, + 0.195090322016129f, -0.980785280403230f, + 0.098017140329561f, -0.995184726672197f +}; + +const float32_t twiddleCoef_rfft_128[128] = { + 0.000000000f, 1.000000000f, + 0.049067674f, 0.998795456f, + 0.098017140f, 0.995184727f, + 0.146730474f, 0.989176510f, + 0.195090322f, 0.980785280f, + 0.242980180f, 0.970031253f, + 0.290284677f, 0.956940336f, + 0.336889853f, 0.941544065f, + 0.382683432f, 0.923879533f, + 0.427555093f, 0.903989293f, + 0.471396737f, 0.881921264f, + 0.514102744f, 0.857728610f, + 0.555570233f, 0.831469612f, + 0.595699304f, 0.803207531f, + 0.634393284f, 0.773010453f, + 0.671558955f, 0.740951125f, + 0.707106781f, 0.707106781f, + 0.740951125f, 0.671558955f, + 0.773010453f, 0.634393284f, + 0.803207531f, 0.595699304f, + 0.831469612f, 0.555570233f, + 0.857728610f, 0.514102744f, + 0.881921264f, 0.471396737f, + 0.903989293f, 0.427555093f, + 0.923879533f, 0.382683432f, + 0.941544065f, 0.336889853f, + 0.956940336f, 0.290284677f, + 0.970031253f, 0.242980180f, + 0.980785280f, 0.195090322f, + 0.989176510f, 0.146730474f, + 0.995184727f, 0.098017140f, + 0.998795456f, 0.049067674f, + 1.000000000f, 0.000000000f, + 0.998795456f, -0.049067674f, + 0.995184727f, -0.098017140f, + 0.989176510f, -0.146730474f, + 0.980785280f, -0.195090322f, + 0.970031253f, -0.242980180f, + 0.956940336f, -0.290284677f, + 0.941544065f, -0.336889853f, + 0.923879533f, -0.382683432f, + 0.903989293f, -0.427555093f, + 0.881921264f, -0.471396737f, + 0.857728610f, -0.514102744f, + 0.831469612f, -0.555570233f, + 0.803207531f, -0.595699304f, + 0.773010453f, -0.634393284f, + 0.740951125f, -0.671558955f, + 0.707106781f, -0.707106781f, + 0.671558955f, -0.740951125f, + 0.634393284f, -0.773010453f, + 0.595699304f, -0.803207531f, + 0.555570233f, -0.831469612f, + 0.514102744f, -0.857728610f, + 0.471396737f, -0.881921264f, + 0.427555093f, -0.903989293f, + 0.382683432f, -0.923879533f, + 0.336889853f, -0.941544065f, + 0.290284677f, -0.956940336f, + 0.242980180f, -0.970031253f, + 0.195090322f, -0.980785280f, + 0.146730474f, -0.989176510f, + 0.098017140f, -0.995184727f, + 0.049067674f, -0.998795456f +}; + +const float32_t twiddleCoef_rfft_256[256] = { + 0.000000000f, 1.000000000f, + 0.024541229f, 0.999698819f, + 0.049067674f, 0.998795456f, + 0.073564564f, 0.997290457f, + 0.098017140f, 0.995184727f, + 0.122410675f, 0.992479535f, + 0.146730474f, 0.989176510f, + 0.170961889f, 0.985277642f, + 0.195090322f, 0.980785280f, + 0.219101240f, 0.975702130f, + 0.242980180f, 0.970031253f, + 0.266712757f, 0.963776066f, + 0.290284677f, 0.956940336f, + 0.313681740f, 0.949528181f, + 0.336889853f, 0.941544065f, + 0.359895037f, 0.932992799f, + 0.382683432f, 0.923879533f, + 0.405241314f, 0.914209756f, + 0.427555093f, 0.903989293f, + 0.449611330f, 0.893224301f, + 0.471396737f, 0.881921264f, + 0.492898192f, 0.870086991f, + 0.514102744f, 0.857728610f, + 0.534997620f, 0.844853565f, + 0.555570233f, 0.831469612f, + 0.575808191f, 0.817584813f, + 0.595699304f, 0.803207531f, + 0.615231591f, 0.788346428f, + 0.634393284f, 0.773010453f, + 0.653172843f, 0.757208847f, + 0.671558955f, 0.740951125f, + 0.689540545f, 0.724247083f, + 0.707106781f, 0.707106781f, + 0.724247083f, 0.689540545f, + 0.740951125f, 0.671558955f, + 0.757208847f, 0.653172843f, + 0.773010453f, 0.634393284f, + 0.788346428f, 0.615231591f, + 0.803207531f, 0.595699304f, + 0.817584813f, 0.575808191f, + 0.831469612f, 0.555570233f, + 0.844853565f, 0.534997620f, + 0.857728610f, 0.514102744f, + 0.870086991f, 0.492898192f, + 0.881921264f, 0.471396737f, + 0.893224301f, 0.449611330f, + 0.903989293f, 0.427555093f, + 0.914209756f, 0.405241314f, + 0.923879533f, 0.382683432f, + 0.932992799f, 0.359895037f, + 0.941544065f, 0.336889853f, + 0.949528181f, 0.313681740f, + 0.956940336f, 0.290284677f, + 0.963776066f, 0.266712757f, + 0.970031253f, 0.242980180f, + 0.975702130f, 0.219101240f, + 0.980785280f, 0.195090322f, + 0.985277642f, 0.170961889f, + 0.989176510f, 0.146730474f, + 0.992479535f, 0.122410675f, + 0.995184727f, 0.098017140f, + 0.997290457f, 0.073564564f, + 0.998795456f, 0.049067674f, + 0.999698819f, 0.024541229f, + 1.000000000f, 0.000000000f, + 0.999698819f, -0.024541229f, + 0.998795456f, -0.049067674f, + 0.997290457f, -0.073564564f, + 0.995184727f, -0.098017140f, + 0.992479535f, -0.122410675f, + 0.989176510f, -0.146730474f, + 0.985277642f, -0.170961889f, + 0.980785280f, -0.195090322f, + 0.975702130f, -0.219101240f, + 0.970031253f, -0.242980180f, + 0.963776066f, -0.266712757f, + 0.956940336f, -0.290284677f, + 0.949528181f, -0.313681740f, + 0.941544065f, -0.336889853f, + 0.932992799f, -0.359895037f, + 0.923879533f, -0.382683432f, + 0.914209756f, -0.405241314f, + 0.903989293f, -0.427555093f, + 0.893224301f, -0.449611330f, + 0.881921264f, -0.471396737f, + 0.870086991f, -0.492898192f, + 0.857728610f, -0.514102744f, + 0.844853565f, -0.534997620f, + 0.831469612f, -0.555570233f, + 0.817584813f, -0.575808191f, + 0.803207531f, -0.595699304f, + 0.788346428f, -0.615231591f, + 0.773010453f, -0.634393284f, + 0.757208847f, -0.653172843f, + 0.740951125f, -0.671558955f, + 0.724247083f, -0.689540545f, + 0.707106781f, -0.707106781f, + 0.689540545f, -0.724247083f, + 0.671558955f, -0.740951125f, + 0.653172843f, -0.757208847f, + 0.634393284f, -0.773010453f, + 0.615231591f, -0.788346428f, + 0.595699304f, -0.803207531f, + 0.575808191f, -0.817584813f, + 0.555570233f, -0.831469612f, + 0.534997620f, -0.844853565f, + 0.514102744f, -0.857728610f, + 0.492898192f, -0.870086991f, + 0.471396737f, -0.881921264f, + 0.449611330f, -0.893224301f, + 0.427555093f, -0.903989293f, + 0.405241314f, -0.914209756f, + 0.382683432f, -0.923879533f, + 0.359895037f, -0.932992799f, + 0.336889853f, -0.941544065f, + 0.313681740f, -0.949528181f, + 0.290284677f, -0.956940336f, + 0.266712757f, -0.963776066f, + 0.242980180f, -0.970031253f, + 0.219101240f, -0.975702130f, + 0.195090322f, -0.980785280f, + 0.170961889f, -0.985277642f, + 0.146730474f, -0.989176510f, + 0.122410675f, -0.992479535f, + 0.098017140f, -0.995184727f, + 0.073564564f, -0.997290457f, + 0.049067674f, -0.998795456f, + 0.024541229f, -0.999698819f +}; + +const float32_t twiddleCoef_rfft_512[512] = { + 0.000000000f, 1.000000000f, + 0.012271538f, 0.999924702f, + 0.024541229f, 0.999698819f, + 0.036807223f, 0.999322385f, + 0.049067674f, 0.998795456f, + 0.061320736f, 0.998118113f, + 0.073564564f, 0.997290457f, + 0.085797312f, 0.996312612f, + 0.098017140f, 0.995184727f, + 0.110222207f, 0.993906970f, + 0.122410675f, 0.992479535f, + 0.134580709f, 0.990902635f, + 0.146730474f, 0.989176510f, + 0.158858143f, 0.987301418f, + 0.170961889f, 0.985277642f, + 0.183039888f, 0.983105487f, + 0.195090322f, 0.980785280f, + 0.207111376f, 0.978317371f, + 0.219101240f, 0.975702130f, + 0.231058108f, 0.972939952f, + 0.242980180f, 0.970031253f, + 0.254865660f, 0.966976471f, + 0.266712757f, 0.963776066f, + 0.278519689f, 0.960430519f, + 0.290284677f, 0.956940336f, + 0.302005949f, 0.953306040f, + 0.313681740f, 0.949528181f, + 0.325310292f, 0.945607325f, + 0.336889853f, 0.941544065f, + 0.348418680f, 0.937339012f, + 0.359895037f, 0.932992799f, + 0.371317194f, 0.928506080f, + 0.382683432f, 0.923879533f, + 0.393992040f, 0.919113852f, + 0.405241314f, 0.914209756f, + 0.416429560f, 0.909167983f, + 0.427555093f, 0.903989293f, + 0.438616239f, 0.898674466f, + 0.449611330f, 0.893224301f, + 0.460538711f, 0.887639620f, + 0.471396737f, 0.881921264f, + 0.482183772f, 0.876070094f, + 0.492898192f, 0.870086991f, + 0.503538384f, 0.863972856f, + 0.514102744f, 0.857728610f, + 0.524589683f, 0.851355193f, + 0.534997620f, 0.844853565f, + 0.545324988f, 0.838224706f, + 0.555570233f, 0.831469612f, + 0.565731811f, 0.824589303f, + 0.575808191f, 0.817584813f, + 0.585797857f, 0.810457198f, + 0.595699304f, 0.803207531f, + 0.605511041f, 0.795836905f, + 0.615231591f, 0.788346428f, + 0.624859488f, 0.780737229f, + 0.634393284f, 0.773010453f, + 0.643831543f, 0.765167266f, + 0.653172843f, 0.757208847f, + 0.662415778f, 0.749136395f, + 0.671558955f, 0.740951125f, + 0.680600998f, 0.732654272f, + 0.689540545f, 0.724247083f, + 0.698376249f, 0.715730825f, + 0.707106781f, 0.707106781f, + 0.715730825f, 0.698376249f, + 0.724247083f, 0.689540545f, + 0.732654272f, 0.680600998f, + 0.740951125f, 0.671558955f, + 0.749136395f, 0.662415778f, + 0.757208847f, 0.653172843f, + 0.765167266f, 0.643831543f, + 0.773010453f, 0.634393284f, + 0.780737229f, 0.624859488f, + 0.788346428f, 0.615231591f, + 0.795836905f, 0.605511041f, + 0.803207531f, 0.595699304f, + 0.810457198f, 0.585797857f, + 0.817584813f, 0.575808191f, + 0.824589303f, 0.565731811f, + 0.831469612f, 0.555570233f, + 0.838224706f, 0.545324988f, + 0.844853565f, 0.534997620f, + 0.851355193f, 0.524589683f, + 0.857728610f, 0.514102744f, + 0.863972856f, 0.503538384f, + 0.870086991f, 0.492898192f, + 0.876070094f, 0.482183772f, + 0.881921264f, 0.471396737f, + 0.887639620f, 0.460538711f, + 0.893224301f, 0.449611330f, + 0.898674466f, 0.438616239f, + 0.903989293f, 0.427555093f, + 0.909167983f, 0.416429560f, + 0.914209756f, 0.405241314f, + 0.919113852f, 0.393992040f, + 0.923879533f, 0.382683432f, + 0.928506080f, 0.371317194f, + 0.932992799f, 0.359895037f, + 0.937339012f, 0.348418680f, + 0.941544065f, 0.336889853f, + 0.945607325f, 0.325310292f, + 0.949528181f, 0.313681740f, + 0.953306040f, 0.302005949f, + 0.956940336f, 0.290284677f, + 0.960430519f, 0.278519689f, + 0.963776066f, 0.266712757f, + 0.966976471f, 0.254865660f, + 0.970031253f, 0.242980180f, + 0.972939952f, 0.231058108f, + 0.975702130f, 0.219101240f, + 0.978317371f, 0.207111376f, + 0.980785280f, 0.195090322f, + 0.983105487f, 0.183039888f, + 0.985277642f, 0.170961889f, + 0.987301418f, 0.158858143f, + 0.989176510f, 0.146730474f, + 0.990902635f, 0.134580709f, + 0.992479535f, 0.122410675f, + 0.993906970f, 0.110222207f, + 0.995184727f, 0.098017140f, + 0.996312612f, 0.085797312f, + 0.997290457f, 0.073564564f, + 0.998118113f, 0.061320736f, + 0.998795456f, 0.049067674f, + 0.999322385f, 0.036807223f, + 0.999698819f, 0.024541229f, + 0.999924702f, 0.012271538f, + 1.000000000f, 0.000000000f, + 0.999924702f, -0.012271538f, + 0.999698819f, -0.024541229f, + 0.999322385f, -0.036807223f, + 0.998795456f, -0.049067674f, + 0.998118113f, -0.061320736f, + 0.997290457f, -0.073564564f, + 0.996312612f, -0.085797312f, + 0.995184727f, -0.098017140f, + 0.993906970f, -0.110222207f, + 0.992479535f, -0.122410675f, + 0.990902635f, -0.134580709f, + 0.989176510f, -0.146730474f, + 0.987301418f, -0.158858143f, + 0.985277642f, -0.170961889f, + 0.983105487f, -0.183039888f, + 0.980785280f, -0.195090322f, + 0.978317371f, -0.207111376f, + 0.975702130f, -0.219101240f, + 0.972939952f, -0.231058108f, + 0.970031253f, -0.242980180f, + 0.966976471f, -0.254865660f, + 0.963776066f, -0.266712757f, + 0.960430519f, -0.278519689f, + 0.956940336f, -0.290284677f, + 0.953306040f, -0.302005949f, + 0.949528181f, -0.313681740f, + 0.945607325f, -0.325310292f, + 0.941544065f, -0.336889853f, + 0.937339012f, -0.348418680f, + 0.932992799f, -0.359895037f, + 0.928506080f, -0.371317194f, + 0.923879533f, -0.382683432f, + 0.919113852f, -0.393992040f, + 0.914209756f, -0.405241314f, + 0.909167983f, -0.416429560f, + 0.903989293f, -0.427555093f, + 0.898674466f, -0.438616239f, + 0.893224301f, -0.449611330f, + 0.887639620f, -0.460538711f, + 0.881921264f, -0.471396737f, + 0.876070094f, -0.482183772f, + 0.870086991f, -0.492898192f, + 0.863972856f, -0.503538384f, + 0.857728610f, -0.514102744f, + 0.851355193f, -0.524589683f, + 0.844853565f, -0.534997620f, + 0.838224706f, -0.545324988f, + 0.831469612f, -0.555570233f, + 0.824589303f, -0.565731811f, + 0.817584813f, -0.575808191f, + 0.810457198f, -0.585797857f, + 0.803207531f, -0.595699304f, + 0.795836905f, -0.605511041f, + 0.788346428f, -0.615231591f, + 0.780737229f, -0.624859488f, + 0.773010453f, -0.634393284f, + 0.765167266f, -0.643831543f, + 0.757208847f, -0.653172843f, + 0.749136395f, -0.662415778f, + 0.740951125f, -0.671558955f, + 0.732654272f, -0.680600998f, + 0.724247083f, -0.689540545f, + 0.715730825f, -0.698376249f, + 0.707106781f, -0.707106781f, + 0.698376249f, -0.715730825f, + 0.689540545f, -0.724247083f, + 0.680600998f, -0.732654272f, + 0.671558955f, -0.740951125f, + 0.662415778f, -0.749136395f, + 0.653172843f, -0.757208847f, + 0.643831543f, -0.765167266f, + 0.634393284f, -0.773010453f, + 0.624859488f, -0.780737229f, + 0.615231591f, -0.788346428f, + 0.605511041f, -0.795836905f, + 0.595699304f, -0.803207531f, + 0.585797857f, -0.810457198f, + 0.575808191f, -0.817584813f, + 0.565731811f, -0.824589303f, + 0.555570233f, -0.831469612f, + 0.545324988f, -0.838224706f, + 0.534997620f, -0.844853565f, + 0.524589683f, -0.851355193f, + 0.514102744f, -0.857728610f, + 0.503538384f, -0.863972856f, + 0.492898192f, -0.870086991f, + 0.482183772f, -0.876070094f, + 0.471396737f, -0.881921264f, + 0.460538711f, -0.887639620f, + 0.449611330f, -0.893224301f, + 0.438616239f, -0.898674466f, + 0.427555093f, -0.903989293f, + 0.416429560f, -0.909167983f, + 0.405241314f, -0.914209756f, + 0.393992040f, -0.919113852f, + 0.382683432f, -0.923879533f, + 0.371317194f, -0.928506080f, + 0.359895037f, -0.932992799f, + 0.348418680f, -0.937339012f, + 0.336889853f, -0.941544065f, + 0.325310292f, -0.945607325f, + 0.313681740f, -0.949528181f, + 0.302005949f, -0.953306040f, + 0.290284677f, -0.956940336f, + 0.278519689f, -0.960430519f, + 0.266712757f, -0.963776066f, + 0.254865660f, -0.966976471f, + 0.242980180f, -0.970031253f, + 0.231058108f, -0.972939952f, + 0.219101240f, -0.975702130f, + 0.207111376f, -0.978317371f, + 0.195090322f, -0.980785280f, + 0.183039888f, -0.983105487f, + 0.170961889f, -0.985277642f, + 0.158858143f, -0.987301418f, + 0.146730474f, -0.989176510f, + 0.134580709f, -0.990902635f, + 0.122410675f, -0.992479535f, + 0.110222207f, -0.993906970f, + 0.098017140f, -0.995184727f, + 0.085797312f, -0.996312612f, + 0.073564564f, -0.997290457f, + 0.061320736f, -0.998118113f, + 0.049067674f, -0.998795456f, + 0.036807223f, -0.999322385f, + 0.024541229f, -0.999698819f, + 0.012271538f, -0.999924702f +}; + +const float32_t twiddleCoef_rfft_1024[1024] = { + 0.000000000f, 1.000000000f, + 0.006135885f, 0.999981175f, + 0.012271538f, 0.999924702f, + 0.018406730f, 0.999830582f, + 0.024541229f, 0.999698819f, + 0.030674803f, 0.999529418f, + 0.036807223f, 0.999322385f, + 0.042938257f, 0.999077728f, + 0.049067674f, 0.998795456f, + 0.055195244f, 0.998475581f, + 0.061320736f, 0.998118113f, + 0.067443920f, 0.997723067f, + 0.073564564f, 0.997290457f, + 0.079682438f, 0.996820299f, + 0.085797312f, 0.996312612f, + 0.091908956f, 0.995767414f, + 0.098017140f, 0.995184727f, + 0.104121634f, 0.994564571f, + 0.110222207f, 0.993906970f, + 0.116318631f, 0.993211949f, + 0.122410675f, 0.992479535f, + 0.128498111f, 0.991709754f, + 0.134580709f, 0.990902635f, + 0.140658239f, 0.990058210f, + 0.146730474f, 0.989176510f, + 0.152797185f, 0.988257568f, + 0.158858143f, 0.987301418f, + 0.164913120f, 0.986308097f, + 0.170961889f, 0.985277642f, + 0.177004220f, 0.984210092f, + 0.183039888f, 0.983105487f, + 0.189068664f, 0.981963869f, + 0.195090322f, 0.980785280f, + 0.201104635f, 0.979569766f, + 0.207111376f, 0.978317371f, + 0.213110320f, 0.977028143f, + 0.219101240f, 0.975702130f, + 0.225083911f, 0.974339383f, + 0.231058108f, 0.972939952f, + 0.237023606f, 0.971503891f, + 0.242980180f, 0.970031253f, + 0.248927606f, 0.968522094f, + 0.254865660f, 0.966976471f, + 0.260794118f, 0.965394442f, + 0.266712757f, 0.963776066f, + 0.272621355f, 0.962121404f, + 0.278519689f, 0.960430519f, + 0.284407537f, 0.958703475f, + 0.290284677f, 0.956940336f, + 0.296150888f, 0.955141168f, + 0.302005949f, 0.953306040f, + 0.307849640f, 0.951435021f, + 0.313681740f, 0.949528181f, + 0.319502031f, 0.947585591f, + 0.325310292f, 0.945607325f, + 0.331106306f, 0.943593458f, + 0.336889853f, 0.941544065f, + 0.342660717f, 0.939459224f, + 0.348418680f, 0.937339012f, + 0.354163525f, 0.935183510f, + 0.359895037f, 0.932992799f, + 0.365612998f, 0.930766961f, + 0.371317194f, 0.928506080f, + 0.377007410f, 0.926210242f, + 0.382683432f, 0.923879533f, + 0.388345047f, 0.921514039f, + 0.393992040f, 0.919113852f, + 0.399624200f, 0.916679060f, + 0.405241314f, 0.914209756f, + 0.410843171f, 0.911706032f, + 0.416429560f, 0.909167983f, + 0.422000271f, 0.906595705f, + 0.427555093f, 0.903989293f, + 0.433093819f, 0.901348847f, + 0.438616239f, 0.898674466f, + 0.444122145f, 0.895966250f, + 0.449611330f, 0.893224301f, + 0.455083587f, 0.890448723f, + 0.460538711f, 0.887639620f, + 0.465976496f, 0.884797098f, + 0.471396737f, 0.881921264f, + 0.476799230f, 0.879012226f, + 0.482183772f, 0.876070094f, + 0.487550160f, 0.873094978f, + 0.492898192f, 0.870086991f, + 0.498227667f, 0.867046246f, + 0.503538384f, 0.863972856f, + 0.508830143f, 0.860866939f, + 0.514102744f, 0.857728610f, + 0.519355990f, 0.854557988f, + 0.524589683f, 0.851355193f, + 0.529803625f, 0.848120345f, + 0.534997620f, 0.844853565f, + 0.540171473f, 0.841554977f, + 0.545324988f, 0.838224706f, + 0.550457973f, 0.834862875f, + 0.555570233f, 0.831469612f, + 0.560661576f, 0.828045045f, + 0.565731811f, 0.824589303f, + 0.570780746f, 0.821102515f, + 0.575808191f, 0.817584813f, + 0.580813958f, 0.814036330f, + 0.585797857f, 0.810457198f, + 0.590759702f, 0.806847554f, + 0.595699304f, 0.803207531f, + 0.600616479f, 0.799537269f, + 0.605511041f, 0.795836905f, + 0.610382806f, 0.792106577f, + 0.615231591f, 0.788346428f, + 0.620057212f, 0.784556597f, + 0.624859488f, 0.780737229f, + 0.629638239f, 0.776888466f, + 0.634393284f, 0.773010453f, + 0.639124445f, 0.769103338f, + 0.643831543f, 0.765167266f, + 0.648514401f, 0.761202385f, + 0.653172843f, 0.757208847f, + 0.657806693f, 0.753186799f, + 0.662415778f, 0.749136395f, + 0.666999922f, 0.745057785f, + 0.671558955f, 0.740951125f, + 0.676092704f, 0.736816569f, + 0.680600998f, 0.732654272f, + 0.685083668f, 0.728464390f, + 0.689540545f, 0.724247083f, + 0.693971461f, 0.720002508f, + 0.698376249f, 0.715730825f, + 0.702754744f, 0.711432196f, + 0.707106781f, 0.707106781f, + 0.711432196f, 0.702754744f, + 0.715730825f, 0.698376249f, + 0.720002508f, 0.693971461f, + 0.724247083f, 0.689540545f, + 0.728464390f, 0.685083668f, + 0.732654272f, 0.680600998f, + 0.736816569f, 0.676092704f, + 0.740951125f, 0.671558955f, + 0.745057785f, 0.666999922f, + 0.749136395f, 0.662415778f, + 0.753186799f, 0.657806693f, + 0.757208847f, 0.653172843f, + 0.761202385f, 0.648514401f, + 0.765167266f, 0.643831543f, + 0.769103338f, 0.639124445f, + 0.773010453f, 0.634393284f, + 0.776888466f, 0.629638239f, + 0.780737229f, 0.624859488f, + 0.784556597f, 0.620057212f, + 0.788346428f, 0.615231591f, + 0.792106577f, 0.610382806f, + 0.795836905f, 0.605511041f, + 0.799537269f, 0.600616479f, + 0.803207531f, 0.595699304f, + 0.806847554f, 0.590759702f, + 0.810457198f, 0.585797857f, + 0.814036330f, 0.580813958f, + 0.817584813f, 0.575808191f, + 0.821102515f, 0.570780746f, + 0.824589303f, 0.565731811f, + 0.828045045f, 0.560661576f, + 0.831469612f, 0.555570233f, + 0.834862875f, 0.550457973f, + 0.838224706f, 0.545324988f, + 0.841554977f, 0.540171473f, + 0.844853565f, 0.534997620f, + 0.848120345f, 0.529803625f, + 0.851355193f, 0.524589683f, + 0.854557988f, 0.519355990f, + 0.857728610f, 0.514102744f, + 0.860866939f, 0.508830143f, + 0.863972856f, 0.503538384f, + 0.867046246f, 0.498227667f, + 0.870086991f, 0.492898192f, + 0.873094978f, 0.487550160f, + 0.876070094f, 0.482183772f, + 0.879012226f, 0.476799230f, + 0.881921264f, 0.471396737f, + 0.884797098f, 0.465976496f, + 0.887639620f, 0.460538711f, + 0.890448723f, 0.455083587f, + 0.893224301f, 0.449611330f, + 0.895966250f, 0.444122145f, + 0.898674466f, 0.438616239f, + 0.901348847f, 0.433093819f, + 0.903989293f, 0.427555093f, + 0.906595705f, 0.422000271f, + 0.909167983f, 0.416429560f, + 0.911706032f, 0.410843171f, + 0.914209756f, 0.405241314f, + 0.916679060f, 0.399624200f, + 0.919113852f, 0.393992040f, + 0.921514039f, 0.388345047f, + 0.923879533f, 0.382683432f, + 0.926210242f, 0.377007410f, + 0.928506080f, 0.371317194f, + 0.930766961f, 0.365612998f, + 0.932992799f, 0.359895037f, + 0.935183510f, 0.354163525f, + 0.937339012f, 0.348418680f, + 0.939459224f, 0.342660717f, + 0.941544065f, 0.336889853f, + 0.943593458f, 0.331106306f, + 0.945607325f, 0.325310292f, + 0.947585591f, 0.319502031f, + 0.949528181f, 0.313681740f, + 0.951435021f, 0.307849640f, + 0.953306040f, 0.302005949f, + 0.955141168f, 0.296150888f, + 0.956940336f, 0.290284677f, + 0.958703475f, 0.284407537f, + 0.960430519f, 0.278519689f, + 0.962121404f, 0.272621355f, + 0.963776066f, 0.266712757f, + 0.965394442f, 0.260794118f, + 0.966976471f, 0.254865660f, + 0.968522094f, 0.248927606f, + 0.970031253f, 0.242980180f, + 0.971503891f, 0.237023606f, + 0.972939952f, 0.231058108f, + 0.974339383f, 0.225083911f, + 0.975702130f, 0.219101240f, + 0.977028143f, 0.213110320f, + 0.978317371f, 0.207111376f, + 0.979569766f, 0.201104635f, + 0.980785280f, 0.195090322f, + 0.981963869f, 0.189068664f, + 0.983105487f, 0.183039888f, + 0.984210092f, 0.177004220f, + 0.985277642f, 0.170961889f, + 0.986308097f, 0.164913120f, + 0.987301418f, 0.158858143f, + 0.988257568f, 0.152797185f, + 0.989176510f, 0.146730474f, + 0.990058210f, 0.140658239f, + 0.990902635f, 0.134580709f, + 0.991709754f, 0.128498111f, + 0.992479535f, 0.122410675f, + 0.993211949f, 0.116318631f, + 0.993906970f, 0.110222207f, + 0.994564571f, 0.104121634f, + 0.995184727f, 0.098017140f, + 0.995767414f, 0.091908956f, + 0.996312612f, 0.085797312f, + 0.996820299f, 0.079682438f, + 0.997290457f, 0.073564564f, + 0.997723067f, 0.067443920f, + 0.998118113f, 0.061320736f, + 0.998475581f, 0.055195244f, + 0.998795456f, 0.049067674f, + 0.999077728f, 0.042938257f, + 0.999322385f, 0.036807223f, + 0.999529418f, 0.030674803f, + 0.999698819f, 0.024541229f, + 0.999830582f, 0.018406730f, + 0.999924702f, 0.012271538f, + 0.999981175f, 0.006135885f, + 1.000000000f, 0.000000000f, + 0.999981175f, -0.006135885f, + 0.999924702f, -0.012271538f, + 0.999830582f, -0.018406730f, + 0.999698819f, -0.024541229f, + 0.999529418f, -0.030674803f, + 0.999322385f, -0.036807223f, + 0.999077728f, -0.042938257f, + 0.998795456f, -0.049067674f, + 0.998475581f, -0.055195244f, + 0.998118113f, -0.061320736f, + 0.997723067f, -0.067443920f, + 0.997290457f, -0.073564564f, + 0.996820299f, -0.079682438f, + 0.996312612f, -0.085797312f, + 0.995767414f, -0.091908956f, + 0.995184727f, -0.098017140f, + 0.994564571f, -0.104121634f, + 0.993906970f, -0.110222207f, + 0.993211949f, -0.116318631f, + 0.992479535f, -0.122410675f, + 0.991709754f, -0.128498111f, + 0.990902635f, -0.134580709f, + 0.990058210f, -0.140658239f, + 0.989176510f, -0.146730474f, + 0.988257568f, -0.152797185f, + 0.987301418f, -0.158858143f, + 0.986308097f, -0.164913120f, + 0.985277642f, -0.170961889f, + 0.984210092f, -0.177004220f, + 0.983105487f, -0.183039888f, + 0.981963869f, -0.189068664f, + 0.980785280f, -0.195090322f, + 0.979569766f, -0.201104635f, + 0.978317371f, -0.207111376f, + 0.977028143f, -0.213110320f, + 0.975702130f, -0.219101240f, + 0.974339383f, -0.225083911f, + 0.972939952f, -0.231058108f, + 0.971503891f, -0.237023606f, + 0.970031253f, -0.242980180f, + 0.968522094f, -0.248927606f, + 0.966976471f, -0.254865660f, + 0.965394442f, -0.260794118f, + 0.963776066f, -0.266712757f, + 0.962121404f, -0.272621355f, + 0.960430519f, -0.278519689f, + 0.958703475f, -0.284407537f, + 0.956940336f, -0.290284677f, + 0.955141168f, -0.296150888f, + 0.953306040f, -0.302005949f, + 0.951435021f, -0.307849640f, + 0.949528181f, -0.313681740f, + 0.947585591f, -0.319502031f, + 0.945607325f, -0.325310292f, + 0.943593458f, -0.331106306f, + 0.941544065f, -0.336889853f, + 0.939459224f, -0.342660717f, + 0.937339012f, -0.348418680f, + 0.935183510f, -0.354163525f, + 0.932992799f, -0.359895037f, + 0.930766961f, -0.365612998f, + 0.928506080f, -0.371317194f, + 0.926210242f, -0.377007410f, + 0.923879533f, -0.382683432f, + 0.921514039f, -0.388345047f, + 0.919113852f, -0.393992040f, + 0.916679060f, -0.399624200f, + 0.914209756f, -0.405241314f, + 0.911706032f, -0.410843171f, + 0.909167983f, -0.416429560f, + 0.906595705f, -0.422000271f, + 0.903989293f, -0.427555093f, + 0.901348847f, -0.433093819f, + 0.898674466f, -0.438616239f, + 0.895966250f, -0.444122145f, + 0.893224301f, -0.449611330f, + 0.890448723f, -0.455083587f, + 0.887639620f, -0.460538711f, + 0.884797098f, -0.465976496f, + 0.881921264f, -0.471396737f, + 0.879012226f, -0.476799230f, + 0.876070094f, -0.482183772f, + 0.873094978f, -0.487550160f, + 0.870086991f, -0.492898192f, + 0.867046246f, -0.498227667f, + 0.863972856f, -0.503538384f, + 0.860866939f, -0.508830143f, + 0.857728610f, -0.514102744f, + 0.854557988f, -0.519355990f, + 0.851355193f, -0.524589683f, + 0.848120345f, -0.529803625f, + 0.844853565f, -0.534997620f, + 0.841554977f, -0.540171473f, + 0.838224706f, -0.545324988f, + 0.834862875f, -0.550457973f, + 0.831469612f, -0.555570233f, + 0.828045045f, -0.560661576f, + 0.824589303f, -0.565731811f, + 0.821102515f, -0.570780746f, + 0.817584813f, -0.575808191f, + 0.814036330f, -0.580813958f, + 0.810457198f, -0.585797857f, + 0.806847554f, -0.590759702f, + 0.803207531f, -0.595699304f, + 0.799537269f, -0.600616479f, + 0.795836905f, -0.605511041f, + 0.792106577f, -0.610382806f, + 0.788346428f, -0.615231591f, + 0.784556597f, -0.620057212f, + 0.780737229f, -0.624859488f, + 0.776888466f, -0.629638239f, + 0.773010453f, -0.634393284f, + 0.769103338f, -0.639124445f, + 0.765167266f, -0.643831543f, + 0.761202385f, -0.648514401f, + 0.757208847f, -0.653172843f, + 0.753186799f, -0.657806693f, + 0.749136395f, -0.662415778f, + 0.745057785f, -0.666999922f, + 0.740951125f, -0.671558955f, + 0.736816569f, -0.676092704f, + 0.732654272f, -0.680600998f, + 0.728464390f, -0.685083668f, + 0.724247083f, -0.689540545f, + 0.720002508f, -0.693971461f, + 0.715730825f, -0.698376249f, + 0.711432196f, -0.702754744f, + 0.707106781f, -0.707106781f, + 0.702754744f, -0.711432196f, + 0.698376249f, -0.715730825f, + 0.693971461f, -0.720002508f, + 0.689540545f, -0.724247083f, + 0.685083668f, -0.728464390f, + 0.680600998f, -0.732654272f, + 0.676092704f, -0.736816569f, + 0.671558955f, -0.740951125f, + 0.666999922f, -0.745057785f, + 0.662415778f, -0.749136395f, + 0.657806693f, -0.753186799f, + 0.653172843f, -0.757208847f, + 0.648514401f, -0.761202385f, + 0.643831543f, -0.765167266f, + 0.639124445f, -0.769103338f, + 0.634393284f, -0.773010453f, + 0.629638239f, -0.776888466f, + 0.624859488f, -0.780737229f, + 0.620057212f, -0.784556597f, + 0.615231591f, -0.788346428f, + 0.610382806f, -0.792106577f, + 0.605511041f, -0.795836905f, + 0.600616479f, -0.799537269f, + 0.595699304f, -0.803207531f, + 0.590759702f, -0.806847554f, + 0.585797857f, -0.810457198f, + 0.580813958f, -0.814036330f, + 0.575808191f, -0.817584813f, + 0.570780746f, -0.821102515f, + 0.565731811f, -0.824589303f, + 0.560661576f, -0.828045045f, + 0.555570233f, -0.831469612f, + 0.550457973f, -0.834862875f, + 0.545324988f, -0.838224706f, + 0.540171473f, -0.841554977f, + 0.534997620f, -0.844853565f, + 0.529803625f, -0.848120345f, + 0.524589683f, -0.851355193f, + 0.519355990f, -0.854557988f, + 0.514102744f, -0.857728610f, + 0.508830143f, -0.860866939f, + 0.503538384f, -0.863972856f, + 0.498227667f, -0.867046246f, + 0.492898192f, -0.870086991f, + 0.487550160f, -0.873094978f, + 0.482183772f, -0.876070094f, + 0.476799230f, -0.879012226f, + 0.471396737f, -0.881921264f, + 0.465976496f, -0.884797098f, + 0.460538711f, -0.887639620f, + 0.455083587f, -0.890448723f, + 0.449611330f, -0.893224301f, + 0.444122145f, -0.895966250f, + 0.438616239f, -0.898674466f, + 0.433093819f, -0.901348847f, + 0.427555093f, -0.903989293f, + 0.422000271f, -0.906595705f, + 0.416429560f, -0.909167983f, + 0.410843171f, -0.911706032f, + 0.405241314f, -0.914209756f, + 0.399624200f, -0.916679060f, + 0.393992040f, -0.919113852f, + 0.388345047f, -0.921514039f, + 0.382683432f, -0.923879533f, + 0.377007410f, -0.926210242f, + 0.371317194f, -0.928506080f, + 0.365612998f, -0.930766961f, + 0.359895037f, -0.932992799f, + 0.354163525f, -0.935183510f, + 0.348418680f, -0.937339012f, + 0.342660717f, -0.939459224f, + 0.336889853f, -0.941544065f, + 0.331106306f, -0.943593458f, + 0.325310292f, -0.945607325f, + 0.319502031f, -0.947585591f, + 0.313681740f, -0.949528181f, + 0.307849640f, -0.951435021f, + 0.302005949f, -0.953306040f, + 0.296150888f, -0.955141168f, + 0.290284677f, -0.956940336f, + 0.284407537f, -0.958703475f, + 0.278519689f, -0.960430519f, + 0.272621355f, -0.962121404f, + 0.266712757f, -0.963776066f, + 0.260794118f, -0.965394442f, + 0.254865660f, -0.966976471f, + 0.248927606f, -0.968522094f, + 0.242980180f, -0.970031253f, + 0.237023606f, -0.971503891f, + 0.231058108f, -0.972939952f, + 0.225083911f, -0.974339383f, + 0.219101240f, -0.975702130f, + 0.213110320f, -0.977028143f, + 0.207111376f, -0.978317371f, + 0.201104635f, -0.979569766f, + 0.195090322f, -0.980785280f, + 0.189068664f, -0.981963869f, + 0.183039888f, -0.983105487f, + 0.177004220f, -0.984210092f, + 0.170961889f, -0.985277642f, + 0.164913120f, -0.986308097f, + 0.158858143f, -0.987301418f, + 0.152797185f, -0.988257568f, + 0.146730474f, -0.989176510f, + 0.140658239f, -0.990058210f, + 0.134580709f, -0.990902635f, + 0.128498111f, -0.991709754f, + 0.122410675f, -0.992479535f, + 0.116318631f, -0.993211949f, + 0.110222207f, -0.993906970f, + 0.104121634f, -0.994564571f, + 0.098017140f, -0.995184727f, + 0.091908956f, -0.995767414f, + 0.085797312f, -0.996312612f, + 0.079682438f, -0.996820299f, + 0.073564564f, -0.997290457f, + 0.067443920f, -0.997723067f, + 0.061320736f, -0.998118113f, + 0.055195244f, -0.998475581f, + 0.049067674f, -0.998795456f, + 0.042938257f, -0.999077728f, + 0.036807223f, -0.999322385f, + 0.030674803f, -0.999529418f, + 0.024541229f, -0.999698819f, + 0.018406730f, -0.999830582f, + 0.012271538f, -0.999924702f, + 0.006135885f, -0.999981175f +}; + +const float32_t twiddleCoef_rfft_2048[2048] = { + 0.000000000f, 1.000000000f, + 0.003067957f, 0.999995294f, + 0.006135885f, 0.999981175f, + 0.009203755f, 0.999957645f, + 0.012271538f, 0.999924702f, + 0.015339206f, 0.999882347f, + 0.018406730f, 0.999830582f, + 0.021474080f, 0.999769405f, + 0.024541229f, 0.999698819f, + 0.027608146f, 0.999618822f, + 0.030674803f, 0.999529418f, + 0.033741172f, 0.999430605f, + 0.036807223f, 0.999322385f, + 0.039872928f, 0.999204759f, + 0.042938257f, 0.999077728f, + 0.046003182f, 0.998941293f, + 0.049067674f, 0.998795456f, + 0.052131705f, 0.998640218f, + 0.055195244f, 0.998475581f, + 0.058258265f, 0.998301545f, + 0.061320736f, 0.998118113f, + 0.064382631f, 0.997925286f, + 0.067443920f, 0.997723067f, + 0.070504573f, 0.997511456f, + 0.073564564f, 0.997290457f, + 0.076623861f, 0.997060070f, + 0.079682438f, 0.996820299f, + 0.082740265f, 0.996571146f, + 0.085797312f, 0.996312612f, + 0.088853553f, 0.996044701f, + 0.091908956f, 0.995767414f, + 0.094963495f, 0.995480755f, + 0.098017140f, 0.995184727f, + 0.101069863f, 0.994879331f, + 0.104121634f, 0.994564571f, + 0.107172425f, 0.994240449f, + 0.110222207f, 0.993906970f, + 0.113270952f, 0.993564136f, + 0.116318631f, 0.993211949f, + 0.119365215f, 0.992850414f, + 0.122410675f, 0.992479535f, + 0.125454983f, 0.992099313f, + 0.128498111f, 0.991709754f, + 0.131540029f, 0.991310860f, + 0.134580709f, 0.990902635f, + 0.137620122f, 0.990485084f, + 0.140658239f, 0.990058210f, + 0.143695033f, 0.989622017f, + 0.146730474f, 0.989176510f, + 0.149764535f, 0.988721692f, + 0.152797185f, 0.988257568f, + 0.155828398f, 0.987784142f, + 0.158858143f, 0.987301418f, + 0.161886394f, 0.986809402f, + 0.164913120f, 0.986308097f, + 0.167938295f, 0.985797509f, + 0.170961889f, 0.985277642f, + 0.173983873f, 0.984748502f, + 0.177004220f, 0.984210092f, + 0.180022901f, 0.983662419f, + 0.183039888f, 0.983105487f, + 0.186055152f, 0.982539302f, + 0.189068664f, 0.981963869f, + 0.192080397f, 0.981379193f, + 0.195090322f, 0.980785280f, + 0.198098411f, 0.980182136f, + 0.201104635f, 0.979569766f, + 0.204108966f, 0.978948175f, + 0.207111376f, 0.978317371f, + 0.210111837f, 0.977677358f, + 0.213110320f, 0.977028143f, + 0.216106797f, 0.976369731f, + 0.219101240f, 0.975702130f, + 0.222093621f, 0.975025345f, + 0.225083911f, 0.974339383f, + 0.228072083f, 0.973644250f, + 0.231058108f, 0.972939952f, + 0.234041959f, 0.972226497f, + 0.237023606f, 0.971503891f, + 0.240003022f, 0.970772141f, + 0.242980180f, 0.970031253f, + 0.245955050f, 0.969281235f, + 0.248927606f, 0.968522094f, + 0.251897818f, 0.967753837f, + 0.254865660f, 0.966976471f, + 0.257831102f, 0.966190003f, + 0.260794118f, 0.965394442f, + 0.263754679f, 0.964589793f, + 0.266712757f, 0.963776066f, + 0.269668326f, 0.962953267f, + 0.272621355f, 0.962121404f, + 0.275571819f, 0.961280486f, + 0.278519689f, 0.960430519f, + 0.281464938f, 0.959571513f, + 0.284407537f, 0.958703475f, + 0.287347460f, 0.957826413f, + 0.290284677f, 0.956940336f, + 0.293219163f, 0.956045251f, + 0.296150888f, 0.955141168f, + 0.299079826f, 0.954228095f, + 0.302005949f, 0.953306040f, + 0.304929230f, 0.952375013f, + 0.307849640f, 0.951435021f, + 0.310767153f, 0.950486074f, + 0.313681740f, 0.949528181f, + 0.316593376f, 0.948561350f, + 0.319502031f, 0.947585591f, + 0.322407679f, 0.946600913f, + 0.325310292f, 0.945607325f, + 0.328209844f, 0.944604837f, + 0.331106306f, 0.943593458f, + 0.333999651f, 0.942573198f, + 0.336889853f, 0.941544065f, + 0.339776884f, 0.940506071f, + 0.342660717f, 0.939459224f, + 0.345541325f, 0.938403534f, + 0.348418680f, 0.937339012f, + 0.351292756f, 0.936265667f, + 0.354163525f, 0.935183510f, + 0.357030961f, 0.934092550f, + 0.359895037f, 0.932992799f, + 0.362755724f, 0.931884266f, + 0.365612998f, 0.930766961f, + 0.368466830f, 0.929640896f, + 0.371317194f, 0.928506080f, + 0.374164063f, 0.927362526f, + 0.377007410f, 0.926210242f, + 0.379847209f, 0.925049241f, + 0.382683432f, 0.923879533f, + 0.385516054f, 0.922701128f, + 0.388345047f, 0.921514039f, + 0.391170384f, 0.920318277f, + 0.393992040f, 0.919113852f, + 0.396809987f, 0.917900776f, + 0.399624200f, 0.916679060f, + 0.402434651f, 0.915448716f, + 0.405241314f, 0.914209756f, + 0.408044163f, 0.912962190f, + 0.410843171f, 0.911706032f, + 0.413638312f, 0.910441292f, + 0.416429560f, 0.909167983f, + 0.419216888f, 0.907886116f, + 0.422000271f, 0.906595705f, + 0.424779681f, 0.905296759f, + 0.427555093f, 0.903989293f, + 0.430326481f, 0.902673318f, + 0.433093819f, 0.901348847f, + 0.435857080f, 0.900015892f, + 0.438616239f, 0.898674466f, + 0.441371269f, 0.897324581f, + 0.444122145f, 0.895966250f, + 0.446868840f, 0.894599486f, + 0.449611330f, 0.893224301f, + 0.452349587f, 0.891840709f, + 0.455083587f, 0.890448723f, + 0.457813304f, 0.889048356f, + 0.460538711f, 0.887639620f, + 0.463259784f, 0.886222530f, + 0.465976496f, 0.884797098f, + 0.468688822f, 0.883363339f, + 0.471396737f, 0.881921264f, + 0.474100215f, 0.880470889f, + 0.476799230f, 0.879012226f, + 0.479493758f, 0.877545290f, + 0.482183772f, 0.876070094f, + 0.484869248f, 0.874586652f, + 0.487550160f, 0.873094978f, + 0.490226483f, 0.871595087f, + 0.492898192f, 0.870086991f, + 0.495565262f, 0.868570706f, + 0.498227667f, 0.867046246f, + 0.500885383f, 0.865513624f, + 0.503538384f, 0.863972856f, + 0.506186645f, 0.862423956f, + 0.508830143f, 0.860866939f, + 0.511468850f, 0.859301818f, + 0.514102744f, 0.857728610f, + 0.516731799f, 0.856147328f, + 0.519355990f, 0.854557988f, + 0.521975293f, 0.852960605f, + 0.524589683f, 0.851355193f, + 0.527199135f, 0.849741768f, + 0.529803625f, 0.848120345f, + 0.532403128f, 0.846490939f, + 0.534997620f, 0.844853565f, + 0.537587076f, 0.843208240f, + 0.540171473f, 0.841554977f, + 0.542750785f, 0.839893794f, + 0.545324988f, 0.838224706f, + 0.547894059f, 0.836547727f, + 0.550457973f, 0.834862875f, + 0.553016706f, 0.833170165f, + 0.555570233f, 0.831469612f, + 0.558118531f, 0.829761234f, + 0.560661576f, 0.828045045f, + 0.563199344f, 0.826321063f, + 0.565731811f, 0.824589303f, + 0.568258953f, 0.822849781f, + 0.570780746f, 0.821102515f, + 0.573297167f, 0.819347520f, + 0.575808191f, 0.817584813f, + 0.578313796f, 0.815814411f, + 0.580813958f, 0.814036330f, + 0.583308653f, 0.812250587f, + 0.585797857f, 0.810457198f, + 0.588281548f, 0.808656182f, + 0.590759702f, 0.806847554f, + 0.593232295f, 0.805031331f, + 0.595699304f, 0.803207531f, + 0.598160707f, 0.801376172f, + 0.600616479f, 0.799537269f, + 0.603066599f, 0.797690841f, + 0.605511041f, 0.795836905f, + 0.607949785f, 0.793975478f, + 0.610382806f, 0.792106577f, + 0.612810082f, 0.790230221f, + 0.615231591f, 0.788346428f, + 0.617647308f, 0.786455214f, + 0.620057212f, 0.784556597f, + 0.622461279f, 0.782650596f, + 0.624859488f, 0.780737229f, + 0.627251815f, 0.778816512f, + 0.629638239f, 0.776888466f, + 0.632018736f, 0.774953107f, + 0.634393284f, 0.773010453f, + 0.636761861f, 0.771060524f, + 0.639124445f, 0.769103338f, + 0.641481013f, 0.767138912f, + 0.643831543f, 0.765167266f, + 0.646176013f, 0.763188417f, + 0.648514401f, 0.761202385f, + 0.650846685f, 0.759209189f, + 0.653172843f, 0.757208847f, + 0.655492853f, 0.755201377f, + 0.657806693f, 0.753186799f, + 0.660114342f, 0.751165132f, + 0.662415778f, 0.749136395f, + 0.664710978f, 0.747100606f, + 0.666999922f, 0.745057785f, + 0.669282588f, 0.743007952f, + 0.671558955f, 0.740951125f, + 0.673829000f, 0.738887324f, + 0.676092704f, 0.736816569f, + 0.678350043f, 0.734738878f, + 0.680600998f, 0.732654272f, + 0.682845546f, 0.730562769f, + 0.685083668f, 0.728464390f, + 0.687315341f, 0.726359155f, + 0.689540545f, 0.724247083f, + 0.691759258f, 0.722128194f, + 0.693971461f, 0.720002508f, + 0.696177131f, 0.717870045f, + 0.698376249f, 0.715730825f, + 0.700568794f, 0.713584869f, + 0.702754744f, 0.711432196f, + 0.704934080f, 0.709272826f, + 0.707106781f, 0.707106781f, + 0.709272826f, 0.704934080f, + 0.711432196f, 0.702754744f, + 0.713584869f, 0.700568794f, + 0.715730825f, 0.698376249f, + 0.717870045f, 0.696177131f, + 0.720002508f, 0.693971461f, + 0.722128194f, 0.691759258f, + 0.724247083f, 0.689540545f, + 0.726359155f, 0.687315341f, + 0.728464390f, 0.685083668f, + 0.730562769f, 0.682845546f, + 0.732654272f, 0.680600998f, + 0.734738878f, 0.678350043f, + 0.736816569f, 0.676092704f, + 0.738887324f, 0.673829000f, + 0.740951125f, 0.671558955f, + 0.743007952f, 0.669282588f, + 0.745057785f, 0.666999922f, + 0.747100606f, 0.664710978f, + 0.749136395f, 0.662415778f, + 0.751165132f, 0.660114342f, + 0.753186799f, 0.657806693f, + 0.755201377f, 0.655492853f, + 0.757208847f, 0.653172843f, + 0.759209189f, 0.650846685f, + 0.761202385f, 0.648514401f, + 0.763188417f, 0.646176013f, + 0.765167266f, 0.643831543f, + 0.767138912f, 0.641481013f, + 0.769103338f, 0.639124445f, + 0.771060524f, 0.636761861f, + 0.773010453f, 0.634393284f, + 0.774953107f, 0.632018736f, + 0.776888466f, 0.629638239f, + 0.778816512f, 0.627251815f, + 0.780737229f, 0.624859488f, + 0.782650596f, 0.622461279f, + 0.784556597f, 0.620057212f, + 0.786455214f, 0.617647308f, + 0.788346428f, 0.615231591f, + 0.790230221f, 0.612810082f, + 0.792106577f, 0.610382806f, + 0.793975478f, 0.607949785f, + 0.795836905f, 0.605511041f, + 0.797690841f, 0.603066599f, + 0.799537269f, 0.600616479f, + 0.801376172f, 0.598160707f, + 0.803207531f, 0.595699304f, + 0.805031331f, 0.593232295f, + 0.806847554f, 0.590759702f, + 0.808656182f, 0.588281548f, + 0.810457198f, 0.585797857f, + 0.812250587f, 0.583308653f, + 0.814036330f, 0.580813958f, + 0.815814411f, 0.578313796f, + 0.817584813f, 0.575808191f, + 0.819347520f, 0.573297167f, + 0.821102515f, 0.570780746f, + 0.822849781f, 0.568258953f, + 0.824589303f, 0.565731811f, + 0.826321063f, 0.563199344f, + 0.828045045f, 0.560661576f, + 0.829761234f, 0.558118531f, + 0.831469612f, 0.555570233f, + 0.833170165f, 0.553016706f, + 0.834862875f, 0.550457973f, + 0.836547727f, 0.547894059f, + 0.838224706f, 0.545324988f, + 0.839893794f, 0.542750785f, + 0.841554977f, 0.540171473f, + 0.843208240f, 0.537587076f, + 0.844853565f, 0.534997620f, + 0.846490939f, 0.532403128f, + 0.848120345f, 0.529803625f, + 0.849741768f, 0.527199135f, + 0.851355193f, 0.524589683f, + 0.852960605f, 0.521975293f, + 0.854557988f, 0.519355990f, + 0.856147328f, 0.516731799f, + 0.857728610f, 0.514102744f, + 0.859301818f, 0.511468850f, + 0.860866939f, 0.508830143f, + 0.862423956f, 0.506186645f, + 0.863972856f, 0.503538384f, + 0.865513624f, 0.500885383f, + 0.867046246f, 0.498227667f, + 0.868570706f, 0.495565262f, + 0.870086991f, 0.492898192f, + 0.871595087f, 0.490226483f, + 0.873094978f, 0.487550160f, + 0.874586652f, 0.484869248f, + 0.876070094f, 0.482183772f, + 0.877545290f, 0.479493758f, + 0.879012226f, 0.476799230f, + 0.880470889f, 0.474100215f, + 0.881921264f, 0.471396737f, + 0.883363339f, 0.468688822f, + 0.884797098f, 0.465976496f, + 0.886222530f, 0.463259784f, + 0.887639620f, 0.460538711f, + 0.889048356f, 0.457813304f, + 0.890448723f, 0.455083587f, + 0.891840709f, 0.452349587f, + 0.893224301f, 0.449611330f, + 0.894599486f, 0.446868840f, + 0.895966250f, 0.444122145f, + 0.897324581f, 0.441371269f, + 0.898674466f, 0.438616239f, + 0.900015892f, 0.435857080f, + 0.901348847f, 0.433093819f, + 0.902673318f, 0.430326481f, + 0.903989293f, 0.427555093f, + 0.905296759f, 0.424779681f, + 0.906595705f, 0.422000271f, + 0.907886116f, 0.419216888f, + 0.909167983f, 0.416429560f, + 0.910441292f, 0.413638312f, + 0.911706032f, 0.410843171f, + 0.912962190f, 0.408044163f, + 0.914209756f, 0.405241314f, + 0.915448716f, 0.402434651f, + 0.916679060f, 0.399624200f, + 0.917900776f, 0.396809987f, + 0.919113852f, 0.393992040f, + 0.920318277f, 0.391170384f, + 0.921514039f, 0.388345047f, + 0.922701128f, 0.385516054f, + 0.923879533f, 0.382683432f, + 0.925049241f, 0.379847209f, + 0.926210242f, 0.377007410f, + 0.927362526f, 0.374164063f, + 0.928506080f, 0.371317194f, + 0.929640896f, 0.368466830f, + 0.930766961f, 0.365612998f, + 0.931884266f, 0.362755724f, + 0.932992799f, 0.359895037f, + 0.934092550f, 0.357030961f, + 0.935183510f, 0.354163525f, + 0.936265667f, 0.351292756f, + 0.937339012f, 0.348418680f, + 0.938403534f, 0.345541325f, + 0.939459224f, 0.342660717f, + 0.940506071f, 0.339776884f, + 0.941544065f, 0.336889853f, + 0.942573198f, 0.333999651f, + 0.943593458f, 0.331106306f, + 0.944604837f, 0.328209844f, + 0.945607325f, 0.325310292f, + 0.946600913f, 0.322407679f, + 0.947585591f, 0.319502031f, + 0.948561350f, 0.316593376f, + 0.949528181f, 0.313681740f, + 0.950486074f, 0.310767153f, + 0.951435021f, 0.307849640f, + 0.952375013f, 0.304929230f, + 0.953306040f, 0.302005949f, + 0.954228095f, 0.299079826f, + 0.955141168f, 0.296150888f, + 0.956045251f, 0.293219163f, + 0.956940336f, 0.290284677f, + 0.957826413f, 0.287347460f, + 0.958703475f, 0.284407537f, + 0.959571513f, 0.281464938f, + 0.960430519f, 0.278519689f, + 0.961280486f, 0.275571819f, + 0.962121404f, 0.272621355f, + 0.962953267f, 0.269668326f, + 0.963776066f, 0.266712757f, + 0.964589793f, 0.263754679f, + 0.965394442f, 0.260794118f, + 0.966190003f, 0.257831102f, + 0.966976471f, 0.254865660f, + 0.967753837f, 0.251897818f, + 0.968522094f, 0.248927606f, + 0.969281235f, 0.245955050f, + 0.970031253f, 0.242980180f, + 0.970772141f, 0.240003022f, + 0.971503891f, 0.237023606f, + 0.972226497f, 0.234041959f, + 0.972939952f, 0.231058108f, + 0.973644250f, 0.228072083f, + 0.974339383f, 0.225083911f, + 0.975025345f, 0.222093621f, + 0.975702130f, 0.219101240f, + 0.976369731f, 0.216106797f, + 0.977028143f, 0.213110320f, + 0.977677358f, 0.210111837f, + 0.978317371f, 0.207111376f, + 0.978948175f, 0.204108966f, + 0.979569766f, 0.201104635f, + 0.980182136f, 0.198098411f, + 0.980785280f, 0.195090322f, + 0.981379193f, 0.192080397f, + 0.981963869f, 0.189068664f, + 0.982539302f, 0.186055152f, + 0.983105487f, 0.183039888f, + 0.983662419f, 0.180022901f, + 0.984210092f, 0.177004220f, + 0.984748502f, 0.173983873f, + 0.985277642f, 0.170961889f, + 0.985797509f, 0.167938295f, + 0.986308097f, 0.164913120f, + 0.986809402f, 0.161886394f, + 0.987301418f, 0.158858143f, + 0.987784142f, 0.155828398f, + 0.988257568f, 0.152797185f, + 0.988721692f, 0.149764535f, + 0.989176510f, 0.146730474f, + 0.989622017f, 0.143695033f, + 0.990058210f, 0.140658239f, + 0.990485084f, 0.137620122f, + 0.990902635f, 0.134580709f, + 0.991310860f, 0.131540029f, + 0.991709754f, 0.128498111f, + 0.992099313f, 0.125454983f, + 0.992479535f, 0.122410675f, + 0.992850414f, 0.119365215f, + 0.993211949f, 0.116318631f, + 0.993564136f, 0.113270952f, + 0.993906970f, 0.110222207f, + 0.994240449f, 0.107172425f, + 0.994564571f, 0.104121634f, + 0.994879331f, 0.101069863f, + 0.995184727f, 0.098017140f, + 0.995480755f, 0.094963495f, + 0.995767414f, 0.091908956f, + 0.996044701f, 0.088853553f, + 0.996312612f, 0.085797312f, + 0.996571146f, 0.082740265f, + 0.996820299f, 0.079682438f, + 0.997060070f, 0.076623861f, + 0.997290457f, 0.073564564f, + 0.997511456f, 0.070504573f, + 0.997723067f, 0.067443920f, + 0.997925286f, 0.064382631f, + 0.998118113f, 0.061320736f, + 0.998301545f, 0.058258265f, + 0.998475581f, 0.055195244f, + 0.998640218f, 0.052131705f, + 0.998795456f, 0.049067674f, + 0.998941293f, 0.046003182f, + 0.999077728f, 0.042938257f, + 0.999204759f, 0.039872928f, + 0.999322385f, 0.036807223f, + 0.999430605f, 0.033741172f, + 0.999529418f, 0.030674803f, + 0.999618822f, 0.027608146f, + 0.999698819f, 0.024541229f, + 0.999769405f, 0.021474080f, + 0.999830582f, 0.018406730f, + 0.999882347f, 0.015339206f, + 0.999924702f, 0.012271538f, + 0.999957645f, 0.009203755f, + 0.999981175f, 0.006135885f, + 0.999995294f, 0.003067957f, + 1.000000000f, 0.000000000f, + 0.999995294f, -0.003067957f, + 0.999981175f, -0.006135885f, + 0.999957645f, -0.009203755f, + 0.999924702f, -0.012271538f, + 0.999882347f, -0.015339206f, + 0.999830582f, -0.018406730f, + 0.999769405f, -0.021474080f, + 0.999698819f, -0.024541229f, + 0.999618822f, -0.027608146f, + 0.999529418f, -0.030674803f, + 0.999430605f, -0.033741172f, + 0.999322385f, -0.036807223f, + 0.999204759f, -0.039872928f, + 0.999077728f, -0.042938257f, + 0.998941293f, -0.046003182f, + 0.998795456f, -0.049067674f, + 0.998640218f, -0.052131705f, + 0.998475581f, -0.055195244f, + 0.998301545f, -0.058258265f, + 0.998118113f, -0.061320736f, + 0.997925286f, -0.064382631f, + 0.997723067f, -0.067443920f, + 0.997511456f, -0.070504573f, + 0.997290457f, -0.073564564f, + 0.997060070f, -0.076623861f, + 0.996820299f, -0.079682438f, + 0.996571146f, -0.082740265f, + 0.996312612f, -0.085797312f, + 0.996044701f, -0.088853553f, + 0.995767414f, -0.091908956f, + 0.995480755f, -0.094963495f, + 0.995184727f, -0.098017140f, + 0.994879331f, -0.101069863f, + 0.994564571f, -0.104121634f, + 0.994240449f, -0.107172425f, + 0.993906970f, -0.110222207f, + 0.993564136f, -0.113270952f, + 0.993211949f, -0.116318631f, + 0.992850414f, -0.119365215f, + 0.992479535f, -0.122410675f, + 0.992099313f, -0.125454983f, + 0.991709754f, -0.128498111f, + 0.991310860f, -0.131540029f, + 0.990902635f, -0.134580709f, + 0.990485084f, -0.137620122f, + 0.990058210f, -0.140658239f, + 0.989622017f, -0.143695033f, + 0.989176510f, -0.146730474f, + 0.988721692f, -0.149764535f, + 0.988257568f, -0.152797185f, + 0.987784142f, -0.155828398f, + 0.987301418f, -0.158858143f, + 0.986809402f, -0.161886394f, + 0.986308097f, -0.164913120f, + 0.985797509f, -0.167938295f, + 0.985277642f, -0.170961889f, + 0.984748502f, -0.173983873f, + 0.984210092f, -0.177004220f, + 0.983662419f, -0.180022901f, + 0.983105487f, -0.183039888f, + 0.982539302f, -0.186055152f, + 0.981963869f, -0.189068664f, + 0.981379193f, -0.192080397f, + 0.980785280f, -0.195090322f, + 0.980182136f, -0.198098411f, + 0.979569766f, -0.201104635f, + 0.978948175f, -0.204108966f, + 0.978317371f, -0.207111376f, + 0.977677358f, -0.210111837f, + 0.977028143f, -0.213110320f, + 0.976369731f, -0.216106797f, + 0.975702130f, -0.219101240f, + 0.975025345f, -0.222093621f, + 0.974339383f, -0.225083911f, + 0.973644250f, -0.228072083f, + 0.972939952f, -0.231058108f, + 0.972226497f, -0.234041959f, + 0.971503891f, -0.237023606f, + 0.970772141f, -0.240003022f, + 0.970031253f, -0.242980180f, + 0.969281235f, -0.245955050f, + 0.968522094f, -0.248927606f, + 0.967753837f, -0.251897818f, + 0.966976471f, -0.254865660f, + 0.966190003f, -0.257831102f, + 0.965394442f, -0.260794118f, + 0.964589793f, -0.263754679f, + 0.963776066f, -0.266712757f, + 0.962953267f, -0.269668326f, + 0.962121404f, -0.272621355f, + 0.961280486f, -0.275571819f, + 0.960430519f, -0.278519689f, + 0.959571513f, -0.281464938f, + 0.958703475f, -0.284407537f, + 0.957826413f, -0.287347460f, + 0.956940336f, -0.290284677f, + 0.956045251f, -0.293219163f, + 0.955141168f, -0.296150888f, + 0.954228095f, -0.299079826f, + 0.953306040f, -0.302005949f, + 0.952375013f, -0.304929230f, + 0.951435021f, -0.307849640f, + 0.950486074f, -0.310767153f, + 0.949528181f, -0.313681740f, + 0.948561350f, -0.316593376f, + 0.947585591f, -0.319502031f, + 0.946600913f, -0.322407679f, + 0.945607325f, -0.325310292f, + 0.944604837f, -0.328209844f, + 0.943593458f, -0.331106306f, + 0.942573198f, -0.333999651f, + 0.941544065f, -0.336889853f, + 0.940506071f, -0.339776884f, + 0.939459224f, -0.342660717f, + 0.938403534f, -0.345541325f, + 0.937339012f, -0.348418680f, + 0.936265667f, -0.351292756f, + 0.935183510f, -0.354163525f, + 0.934092550f, -0.357030961f, + 0.932992799f, -0.359895037f, + 0.931884266f, -0.362755724f, + 0.930766961f, -0.365612998f, + 0.929640896f, -0.368466830f, + 0.928506080f, -0.371317194f, + 0.927362526f, -0.374164063f, + 0.926210242f, -0.377007410f, + 0.925049241f, -0.379847209f, + 0.923879533f, -0.382683432f, + 0.922701128f, -0.385516054f, + 0.921514039f, -0.388345047f, + 0.920318277f, -0.391170384f, + 0.919113852f, -0.393992040f, + 0.917900776f, -0.396809987f, + 0.916679060f, -0.399624200f, + 0.915448716f, -0.402434651f, + 0.914209756f, -0.405241314f, + 0.912962190f, -0.408044163f, + 0.911706032f, -0.410843171f, + 0.910441292f, -0.413638312f, + 0.909167983f, -0.416429560f, + 0.907886116f, -0.419216888f, + 0.906595705f, -0.422000271f, + 0.905296759f, -0.424779681f, + 0.903989293f, -0.427555093f, + 0.902673318f, -0.430326481f, + 0.901348847f, -0.433093819f, + 0.900015892f, -0.435857080f, + 0.898674466f, -0.438616239f, + 0.897324581f, -0.441371269f, + 0.895966250f, -0.444122145f, + 0.894599486f, -0.446868840f, + 0.893224301f, -0.449611330f, + 0.891840709f, -0.452349587f, + 0.890448723f, -0.455083587f, + 0.889048356f, -0.457813304f, + 0.887639620f, -0.460538711f, + 0.886222530f, -0.463259784f, + 0.884797098f, -0.465976496f, + 0.883363339f, -0.468688822f, + 0.881921264f, -0.471396737f, + 0.880470889f, -0.474100215f, + 0.879012226f, -0.476799230f, + 0.877545290f, -0.479493758f, + 0.876070094f, -0.482183772f, + 0.874586652f, -0.484869248f, + 0.873094978f, -0.487550160f, + 0.871595087f, -0.490226483f, + 0.870086991f, -0.492898192f, + 0.868570706f, -0.495565262f, + 0.867046246f, -0.498227667f, + 0.865513624f, -0.500885383f, + 0.863972856f, -0.503538384f, + 0.862423956f, -0.506186645f, + 0.860866939f, -0.508830143f, + 0.859301818f, -0.511468850f, + 0.857728610f, -0.514102744f, + 0.856147328f, -0.516731799f, + 0.854557988f, -0.519355990f, + 0.852960605f, -0.521975293f, + 0.851355193f, -0.524589683f, + 0.849741768f, -0.527199135f, + 0.848120345f, -0.529803625f, + 0.846490939f, -0.532403128f, + 0.844853565f, -0.534997620f, + 0.843208240f, -0.537587076f, + 0.841554977f, -0.540171473f, + 0.839893794f, -0.542750785f, + 0.838224706f, -0.545324988f, + 0.836547727f, -0.547894059f, + 0.834862875f, -0.550457973f, + 0.833170165f, -0.553016706f, + 0.831469612f, -0.555570233f, + 0.829761234f, -0.558118531f, + 0.828045045f, -0.560661576f, + 0.826321063f, -0.563199344f, + 0.824589303f, -0.565731811f, + 0.822849781f, -0.568258953f, + 0.821102515f, -0.570780746f, + 0.819347520f, -0.573297167f, + 0.817584813f, -0.575808191f, + 0.815814411f, -0.578313796f, + 0.814036330f, -0.580813958f, + 0.812250587f, -0.583308653f, + 0.810457198f, -0.585797857f, + 0.808656182f, -0.588281548f, + 0.806847554f, -0.590759702f, + 0.805031331f, -0.593232295f, + 0.803207531f, -0.595699304f, + 0.801376172f, -0.598160707f, + 0.799537269f, -0.600616479f, + 0.797690841f, -0.603066599f, + 0.795836905f, -0.605511041f, + 0.793975478f, -0.607949785f, + 0.792106577f, -0.610382806f, + 0.790230221f, -0.612810082f, + 0.788346428f, -0.615231591f, + 0.786455214f, -0.617647308f, + 0.784556597f, -0.620057212f, + 0.782650596f, -0.622461279f, + 0.780737229f, -0.624859488f, + 0.778816512f, -0.627251815f, + 0.776888466f, -0.629638239f, + 0.774953107f, -0.632018736f, + 0.773010453f, -0.634393284f, + 0.771060524f, -0.636761861f, + 0.769103338f, -0.639124445f, + 0.767138912f, -0.641481013f, + 0.765167266f, -0.643831543f, + 0.763188417f, -0.646176013f, + 0.761202385f, -0.648514401f, + 0.759209189f, -0.650846685f, + 0.757208847f, -0.653172843f, + 0.755201377f, -0.655492853f, + 0.753186799f, -0.657806693f, + 0.751165132f, -0.660114342f, + 0.749136395f, -0.662415778f, + 0.747100606f, -0.664710978f, + 0.745057785f, -0.666999922f, + 0.743007952f, -0.669282588f, + 0.740951125f, -0.671558955f, + 0.738887324f, -0.673829000f, + 0.736816569f, -0.676092704f, + 0.734738878f, -0.678350043f, + 0.732654272f, -0.680600998f, + 0.730562769f, -0.682845546f, + 0.728464390f, -0.685083668f, + 0.726359155f, -0.687315341f, + 0.724247083f, -0.689540545f, + 0.722128194f, -0.691759258f, + 0.720002508f, -0.693971461f, + 0.717870045f, -0.696177131f, + 0.715730825f, -0.698376249f, + 0.713584869f, -0.700568794f, + 0.711432196f, -0.702754744f, + 0.709272826f, -0.704934080f, + 0.707106781f, -0.707106781f, + 0.704934080f, -0.709272826f, + 0.702754744f, -0.711432196f, + 0.700568794f, -0.713584869f, + 0.698376249f, -0.715730825f, + 0.696177131f, -0.717870045f, + 0.693971461f, -0.720002508f, + 0.691759258f, -0.722128194f, + 0.689540545f, -0.724247083f, + 0.687315341f, -0.726359155f, + 0.685083668f, -0.728464390f, + 0.682845546f, -0.730562769f, + 0.680600998f, -0.732654272f, + 0.678350043f, -0.734738878f, + 0.676092704f, -0.736816569f, + 0.673829000f, -0.738887324f, + 0.671558955f, -0.740951125f, + 0.669282588f, -0.743007952f, + 0.666999922f, -0.745057785f, + 0.664710978f, -0.747100606f, + 0.662415778f, -0.749136395f, + 0.660114342f, -0.751165132f, + 0.657806693f, -0.753186799f, + 0.655492853f, -0.755201377f, + 0.653172843f, -0.757208847f, + 0.650846685f, -0.759209189f, + 0.648514401f, -0.761202385f, + 0.646176013f, -0.763188417f, + 0.643831543f, -0.765167266f, + 0.641481013f, -0.767138912f, + 0.639124445f, -0.769103338f, + 0.636761861f, -0.771060524f, + 0.634393284f, -0.773010453f, + 0.632018736f, -0.774953107f, + 0.629638239f, -0.776888466f, + 0.627251815f, -0.778816512f, + 0.624859488f, -0.780737229f, + 0.622461279f, -0.782650596f, + 0.620057212f, -0.784556597f, + 0.617647308f, -0.786455214f, + 0.615231591f, -0.788346428f, + 0.612810082f, -0.790230221f, + 0.610382806f, -0.792106577f, + 0.607949785f, -0.793975478f, + 0.605511041f, -0.795836905f, + 0.603066599f, -0.797690841f, + 0.600616479f, -0.799537269f, + 0.598160707f, -0.801376172f, + 0.595699304f, -0.803207531f, + 0.593232295f, -0.805031331f, + 0.590759702f, -0.806847554f, + 0.588281548f, -0.808656182f, + 0.585797857f, -0.810457198f, + 0.583308653f, -0.812250587f, + 0.580813958f, -0.814036330f, + 0.578313796f, -0.815814411f, + 0.575808191f, -0.817584813f, + 0.573297167f, -0.819347520f, + 0.570780746f, -0.821102515f, + 0.568258953f, -0.822849781f, + 0.565731811f, -0.824589303f, + 0.563199344f, -0.826321063f, + 0.560661576f, -0.828045045f, + 0.558118531f, -0.829761234f, + 0.555570233f, -0.831469612f, + 0.553016706f, -0.833170165f, + 0.550457973f, -0.834862875f, + 0.547894059f, -0.836547727f, + 0.545324988f, -0.838224706f, + 0.542750785f, -0.839893794f, + 0.540171473f, -0.841554977f, + 0.537587076f, -0.843208240f, + 0.534997620f, -0.844853565f, + 0.532403128f, -0.846490939f, + 0.529803625f, -0.848120345f, + 0.527199135f, -0.849741768f, + 0.524589683f, -0.851355193f, + 0.521975293f, -0.852960605f, + 0.519355990f, -0.854557988f, + 0.516731799f, -0.856147328f, + 0.514102744f, -0.857728610f, + 0.511468850f, -0.859301818f, + 0.508830143f, -0.860866939f, + 0.506186645f, -0.862423956f, + 0.503538384f, -0.863972856f, + 0.500885383f, -0.865513624f, + 0.498227667f, -0.867046246f, + 0.495565262f, -0.868570706f, + 0.492898192f, -0.870086991f, + 0.490226483f, -0.871595087f, + 0.487550160f, -0.873094978f, + 0.484869248f, -0.874586652f, + 0.482183772f, -0.876070094f, + 0.479493758f, -0.877545290f, + 0.476799230f, -0.879012226f, + 0.474100215f, -0.880470889f, + 0.471396737f, -0.881921264f, + 0.468688822f, -0.883363339f, + 0.465976496f, -0.884797098f, + 0.463259784f, -0.886222530f, + 0.460538711f, -0.887639620f, + 0.457813304f, -0.889048356f, + 0.455083587f, -0.890448723f, + 0.452349587f, -0.891840709f, + 0.449611330f, -0.893224301f, + 0.446868840f, -0.894599486f, + 0.444122145f, -0.895966250f, + 0.441371269f, -0.897324581f, + 0.438616239f, -0.898674466f, + 0.435857080f, -0.900015892f, + 0.433093819f, -0.901348847f, + 0.430326481f, -0.902673318f, + 0.427555093f, -0.903989293f, + 0.424779681f, -0.905296759f, + 0.422000271f, -0.906595705f, + 0.419216888f, -0.907886116f, + 0.416429560f, -0.909167983f, + 0.413638312f, -0.910441292f, + 0.410843171f, -0.911706032f, + 0.408044163f, -0.912962190f, + 0.405241314f, -0.914209756f, + 0.402434651f, -0.915448716f, + 0.399624200f, -0.916679060f, + 0.396809987f, -0.917900776f, + 0.393992040f, -0.919113852f, + 0.391170384f, -0.920318277f, + 0.388345047f, -0.921514039f, + 0.385516054f, -0.922701128f, + 0.382683432f, -0.923879533f, + 0.379847209f, -0.925049241f, + 0.377007410f, -0.926210242f, + 0.374164063f, -0.927362526f, + 0.371317194f, -0.928506080f, + 0.368466830f, -0.929640896f, + 0.365612998f, -0.930766961f, + 0.362755724f, -0.931884266f, + 0.359895037f, -0.932992799f, + 0.357030961f, -0.934092550f, + 0.354163525f, -0.935183510f, + 0.351292756f, -0.936265667f, + 0.348418680f, -0.937339012f, + 0.345541325f, -0.938403534f, + 0.342660717f, -0.939459224f, + 0.339776884f, -0.940506071f, + 0.336889853f, -0.941544065f, + 0.333999651f, -0.942573198f, + 0.331106306f, -0.943593458f, + 0.328209844f, -0.944604837f, + 0.325310292f, -0.945607325f, + 0.322407679f, -0.946600913f, + 0.319502031f, -0.947585591f, + 0.316593376f, -0.948561350f, + 0.313681740f, -0.949528181f, + 0.310767153f, -0.950486074f, + 0.307849640f, -0.951435021f, + 0.304929230f, -0.952375013f, + 0.302005949f, -0.953306040f, + 0.299079826f, -0.954228095f, + 0.296150888f, -0.955141168f, + 0.293219163f, -0.956045251f, + 0.290284677f, -0.956940336f, + 0.287347460f, -0.957826413f, + 0.284407537f, -0.958703475f, + 0.281464938f, -0.959571513f, + 0.278519689f, -0.960430519f, + 0.275571819f, -0.961280486f, + 0.272621355f, -0.962121404f, + 0.269668326f, -0.962953267f, + 0.266712757f, -0.963776066f, + 0.263754679f, -0.964589793f, + 0.260794118f, -0.965394442f, + 0.257831102f, -0.966190003f, + 0.254865660f, -0.966976471f, + 0.251897818f, -0.967753837f, + 0.248927606f, -0.968522094f, + 0.245955050f, -0.969281235f, + 0.242980180f, -0.970031253f, + 0.240003022f, -0.970772141f, + 0.237023606f, -0.971503891f, + 0.234041959f, -0.972226497f, + 0.231058108f, -0.972939952f, + 0.228072083f, -0.973644250f, + 0.225083911f, -0.974339383f, + 0.222093621f, -0.975025345f, + 0.219101240f, -0.975702130f, + 0.216106797f, -0.976369731f, + 0.213110320f, -0.977028143f, + 0.210111837f, -0.977677358f, + 0.207111376f, -0.978317371f, + 0.204108966f, -0.978948175f, + 0.201104635f, -0.979569766f, + 0.198098411f, -0.980182136f, + 0.195090322f, -0.980785280f, + 0.192080397f, -0.981379193f, + 0.189068664f, -0.981963869f, + 0.186055152f, -0.982539302f, + 0.183039888f, -0.983105487f, + 0.180022901f, -0.983662419f, + 0.177004220f, -0.984210092f, + 0.173983873f, -0.984748502f, + 0.170961889f, -0.985277642f, + 0.167938295f, -0.985797509f, + 0.164913120f, -0.986308097f, + 0.161886394f, -0.986809402f, + 0.158858143f, -0.987301418f, + 0.155828398f, -0.987784142f, + 0.152797185f, -0.988257568f, + 0.149764535f, -0.988721692f, + 0.146730474f, -0.989176510f, + 0.143695033f, -0.989622017f, + 0.140658239f, -0.990058210f, + 0.137620122f, -0.990485084f, + 0.134580709f, -0.990902635f, + 0.131540029f, -0.991310860f, + 0.128498111f, -0.991709754f, + 0.125454983f, -0.992099313f, + 0.122410675f, -0.992479535f, + 0.119365215f, -0.992850414f, + 0.116318631f, -0.993211949f, + 0.113270952f, -0.993564136f, + 0.110222207f, -0.993906970f, + 0.107172425f, -0.994240449f, + 0.104121634f, -0.994564571f, + 0.101069863f, -0.994879331f, + 0.098017140f, -0.995184727f, + 0.094963495f, -0.995480755f, + 0.091908956f, -0.995767414f, + 0.088853553f, -0.996044701f, + 0.085797312f, -0.996312612f, + 0.082740265f, -0.996571146f, + 0.079682438f, -0.996820299f, + 0.076623861f, -0.997060070f, + 0.073564564f, -0.997290457f, + 0.070504573f, -0.997511456f, + 0.067443920f, -0.997723067f, + 0.064382631f, -0.997925286f, + 0.061320736f, -0.998118113f, + 0.058258265f, -0.998301545f, + 0.055195244f, -0.998475581f, + 0.052131705f, -0.998640218f, + 0.049067674f, -0.998795456f, + 0.046003182f, -0.998941293f, + 0.042938257f, -0.999077728f, + 0.039872928f, -0.999204759f, + 0.036807223f, -0.999322385f, + 0.033741172f, -0.999430605f, + 0.030674803f, -0.999529418f, + 0.027608146f, -0.999618822f, + 0.024541229f, -0.999698819f, + 0.021474080f, -0.999769405f, + 0.018406730f, -0.999830582f, + 0.015339206f, -0.999882347f, + 0.012271538f, -0.999924702f, + 0.009203755f, -0.999957645f, + 0.006135885f, -0.999981175f, + 0.003067957f, -0.999995294f +}; + +const float32_t twiddleCoef_rfft_4096[4096] = { + 0.000000000f, 1.000000000f, + 0.001533980f, 0.999998823f, + 0.003067957f, 0.999995294f, + 0.004601926f, 0.999989411f, + 0.006135885f, 0.999981175f, + 0.007669829f, 0.999970586f, + 0.009203755f, 0.999957645f, + 0.010737659f, 0.999942350f, + 0.012271538f, 0.999924702f, + 0.013805389f, 0.999904701f, + 0.015339206f, 0.999882347f, + 0.016872988f, 0.999857641f, + 0.018406730f, 0.999830582f, + 0.019940429f, 0.999801170f, + 0.021474080f, 0.999769405f, + 0.023007681f, 0.999735288f, + 0.024541229f, 0.999698819f, + 0.026074718f, 0.999659997f, + 0.027608146f, 0.999618822f, + 0.029141509f, 0.999575296f, + 0.030674803f, 0.999529418f, + 0.032208025f, 0.999481187f, + 0.033741172f, 0.999430605f, + 0.035274239f, 0.999377670f, + 0.036807223f, 0.999322385f, + 0.038340120f, 0.999264747f, + 0.039872928f, 0.999204759f, + 0.041405641f, 0.999142419f, + 0.042938257f, 0.999077728f, + 0.044470772f, 0.999010686f, + 0.046003182f, 0.998941293f, + 0.047535484f, 0.998869550f, + 0.049067674f, 0.998795456f, + 0.050599749f, 0.998719012f, + 0.052131705f, 0.998640218f, + 0.053663538f, 0.998559074f, + 0.055195244f, 0.998475581f, + 0.056726821f, 0.998389737f, + 0.058258265f, 0.998301545f, + 0.059789571f, 0.998211003f, + 0.061320736f, 0.998118113f, + 0.062851758f, 0.998022874f, + 0.064382631f, 0.997925286f, + 0.065913353f, 0.997825350f, + 0.067443920f, 0.997723067f, + 0.068974328f, 0.997618435f, + 0.070504573f, 0.997511456f, + 0.072034653f, 0.997402130f, + 0.073564564f, 0.997290457f, + 0.075094301f, 0.997176437f, + 0.076623861f, 0.997060070f, + 0.078153242f, 0.996941358f, + 0.079682438f, 0.996820299f, + 0.081211447f, 0.996696895f, + 0.082740265f, 0.996571146f, + 0.084268888f, 0.996443051f, + 0.085797312f, 0.996312612f, + 0.087325535f, 0.996179829f, + 0.088853553f, 0.996044701f, + 0.090381361f, 0.995907229f, + 0.091908956f, 0.995767414f, + 0.093436336f, 0.995625256f, + 0.094963495f, 0.995480755f, + 0.096490431f, 0.995333912f, + 0.098017140f, 0.995184727f, + 0.099543619f, 0.995033199f, + 0.101069863f, 0.994879331f, + 0.102595869f, 0.994723121f, + 0.104121634f, 0.994564571f, + 0.105647154f, 0.994403680f, + 0.107172425f, 0.994240449f, + 0.108697444f, 0.994074879f, + 0.110222207f, 0.993906970f, + 0.111746711f, 0.993736722f, + 0.113270952f, 0.993564136f, + 0.114794927f, 0.993389211f, + 0.116318631f, 0.993211949f, + 0.117842062f, 0.993032350f, + 0.119365215f, 0.992850414f, + 0.120888087f, 0.992666142f, + 0.122410675f, 0.992479535f, + 0.123932975f, 0.992290591f, + 0.125454983f, 0.992099313f, + 0.126976696f, 0.991905700f, + 0.128498111f, 0.991709754f, + 0.130019223f, 0.991511473f, + 0.131540029f, 0.991310860f, + 0.133060525f, 0.991107914f, + 0.134580709f, 0.990902635f, + 0.136100575f, 0.990695025f, + 0.137620122f, 0.990485084f, + 0.139139344f, 0.990272812f, + 0.140658239f, 0.990058210f, + 0.142176804f, 0.989841278f, + 0.143695033f, 0.989622017f, + 0.145212925f, 0.989400428f, + 0.146730474f, 0.989176510f, + 0.148247679f, 0.988950265f, + 0.149764535f, 0.988721692f, + 0.151281038f, 0.988490793f, + 0.152797185f, 0.988257568f, + 0.154312973f, 0.988022017f, + 0.155828398f, 0.987784142f, + 0.157343456f, 0.987543942f, + 0.158858143f, 0.987301418f, + 0.160372457f, 0.987056571f, + 0.161886394f, 0.986809402f, + 0.163399949f, 0.986559910f, + 0.164913120f, 0.986308097f, + 0.166425904f, 0.986053963f, + 0.167938295f, 0.985797509f, + 0.169450291f, 0.985538735f, + 0.170961889f, 0.985277642f, + 0.172473084f, 0.985014231f, + 0.173983873f, 0.984748502f, + 0.175494253f, 0.984480455f, + 0.177004220f, 0.984210092f, + 0.178513771f, 0.983937413f, + 0.180022901f, 0.983662419f, + 0.181531608f, 0.983385110f, + 0.183039888f, 0.983105487f, + 0.184547737f, 0.982823551f, + 0.186055152f, 0.982539302f, + 0.187562129f, 0.982252741f, + 0.189068664f, 0.981963869f, + 0.190574755f, 0.981672686f, + 0.192080397f, 0.981379193f, + 0.193585587f, 0.981083391f, + 0.195090322f, 0.980785280f, + 0.196594598f, 0.980484862f, + 0.198098411f, 0.980182136f, + 0.199601758f, 0.979877104f, + 0.201104635f, 0.979569766f, + 0.202607039f, 0.979260123f, + 0.204108966f, 0.978948175f, + 0.205610413f, 0.978633924f, + 0.207111376f, 0.978317371f, + 0.208611852f, 0.977998515f, + 0.210111837f, 0.977677358f, + 0.211611327f, 0.977353900f, + 0.213110320f, 0.977028143f, + 0.214608811f, 0.976700086f, + 0.216106797f, 0.976369731f, + 0.217604275f, 0.976037079f, + 0.219101240f, 0.975702130f, + 0.220597690f, 0.975364885f, + 0.222093621f, 0.975025345f, + 0.223589029f, 0.974683511f, + 0.225083911f, 0.974339383f, + 0.226578264f, 0.973992962f, + 0.228072083f, 0.973644250f, + 0.229565366f, 0.973293246f, + 0.231058108f, 0.972939952f, + 0.232550307f, 0.972584369f, + 0.234041959f, 0.972226497f, + 0.235533059f, 0.971866337f, + 0.237023606f, 0.971503891f, + 0.238513595f, 0.971139158f, + 0.240003022f, 0.970772141f, + 0.241491885f, 0.970402839f, + 0.242980180f, 0.970031253f, + 0.244467903f, 0.969657385f, + 0.245955050f, 0.969281235f, + 0.247441619f, 0.968902805f, + 0.248927606f, 0.968522094f, + 0.250413007f, 0.968139105f, + 0.251897818f, 0.967753837f, + 0.253382037f, 0.967366292f, + 0.254865660f, 0.966976471f, + 0.256348682f, 0.966584374f, + 0.257831102f, 0.966190003f, + 0.259312915f, 0.965793359f, + 0.260794118f, 0.965394442f, + 0.262274707f, 0.964993253f, + 0.263754679f, 0.964589793f, + 0.265234030f, 0.964184064f, + 0.266712757f, 0.963776066f, + 0.268190857f, 0.963365800f, + 0.269668326f, 0.962953267f, + 0.271145160f, 0.962538468f, + 0.272621355f, 0.962121404f, + 0.274096910f, 0.961702077f, + 0.275571819f, 0.961280486f, + 0.277046080f, 0.960856633f, + 0.278519689f, 0.960430519f, + 0.279992643f, 0.960002146f, + 0.281464938f, 0.959571513f, + 0.282936570f, 0.959138622f, + 0.284407537f, 0.958703475f, + 0.285877835f, 0.958266071f, + 0.287347460f, 0.957826413f, + 0.288816408f, 0.957384501f, + 0.290284677f, 0.956940336f, + 0.291752263f, 0.956493919f, + 0.293219163f, 0.956045251f, + 0.294685372f, 0.955594334f, + 0.296150888f, 0.955141168f, + 0.297615707f, 0.954685755f, + 0.299079826f, 0.954228095f, + 0.300543241f, 0.953768190f, + 0.302005949f, 0.953306040f, + 0.303467947f, 0.952841648f, + 0.304929230f, 0.952375013f, + 0.306389795f, 0.951906137f, + 0.307849640f, 0.951435021f, + 0.309308760f, 0.950961666f, + 0.310767153f, 0.950486074f, + 0.312224814f, 0.950008245f, + 0.313681740f, 0.949528181f, + 0.315137929f, 0.949045882f, + 0.316593376f, 0.948561350f, + 0.318048077f, 0.948074586f, + 0.319502031f, 0.947585591f, + 0.320955232f, 0.947094366f, + 0.322407679f, 0.946600913f, + 0.323859367f, 0.946105232f, + 0.325310292f, 0.945607325f, + 0.326760452f, 0.945107193f, + 0.328209844f, 0.944604837f, + 0.329658463f, 0.944100258f, + 0.331106306f, 0.943593458f, + 0.332553370f, 0.943084437f, + 0.333999651f, 0.942573198f, + 0.335445147f, 0.942059740f, + 0.336889853f, 0.941544065f, + 0.338333767f, 0.941026175f, + 0.339776884f, 0.940506071f, + 0.341219202f, 0.939983753f, + 0.342660717f, 0.939459224f, + 0.344101426f, 0.938932484f, + 0.345541325f, 0.938403534f, + 0.346980411f, 0.937872376f, + 0.348418680f, 0.937339012f, + 0.349856130f, 0.936803442f, + 0.351292756f, 0.936265667f, + 0.352728556f, 0.935725689f, + 0.354163525f, 0.935183510f, + 0.355597662f, 0.934639130f, + 0.357030961f, 0.934092550f, + 0.358463421f, 0.933543773f, + 0.359895037f, 0.932992799f, + 0.361325806f, 0.932439629f, + 0.362755724f, 0.931884266f, + 0.364184790f, 0.931326709f, + 0.365612998f, 0.930766961f, + 0.367040346f, 0.930205023f, + 0.368466830f, 0.929640896f, + 0.369892447f, 0.929074581f, + 0.371317194f, 0.928506080f, + 0.372741067f, 0.927935395f, + 0.374164063f, 0.927362526f, + 0.375586178f, 0.926787474f, + 0.377007410f, 0.926210242f, + 0.378427755f, 0.925630831f, + 0.379847209f, 0.925049241f, + 0.381265769f, 0.924465474f, + 0.382683432f, 0.923879533f, + 0.384100195f, 0.923291417f, + 0.385516054f, 0.922701128f, + 0.386931006f, 0.922108669f, + 0.388345047f, 0.921514039f, + 0.389758174f, 0.920917242f, + 0.391170384f, 0.920318277f, + 0.392581674f, 0.919717146f, + 0.393992040f, 0.919113852f, + 0.395401479f, 0.918508394f, + 0.396809987f, 0.917900776f, + 0.398217562f, 0.917290997f, + 0.399624200f, 0.916679060f, + 0.401029897f, 0.916064966f, + 0.402434651f, 0.915448716f, + 0.403838458f, 0.914830312f, + 0.405241314f, 0.914209756f, + 0.406643217f, 0.913587048f, + 0.408044163f, 0.912962190f, + 0.409444149f, 0.912335185f, + 0.410843171f, 0.911706032f, + 0.412241227f, 0.911074734f, + 0.413638312f, 0.910441292f, + 0.415034424f, 0.909805708f, + 0.416429560f, 0.909167983f, + 0.417823716f, 0.908528119f, + 0.419216888f, 0.907886116f, + 0.420609074f, 0.907241978f, + 0.422000271f, 0.906595705f, + 0.423390474f, 0.905947298f, + 0.424779681f, 0.905296759f, + 0.426167889f, 0.904644091f, + 0.427555093f, 0.903989293f, + 0.428941292f, 0.903332368f, + 0.430326481f, 0.902673318f, + 0.431710658f, 0.902012144f, + 0.433093819f, 0.901348847f, + 0.434475961f, 0.900683429f, + 0.435857080f, 0.900015892f, + 0.437237174f, 0.899346237f, + 0.438616239f, 0.898674466f, + 0.439994271f, 0.898000580f, + 0.441371269f, 0.897324581f, + 0.442747228f, 0.896646470f, + 0.444122145f, 0.895966250f, + 0.445496017f, 0.895283921f, + 0.446868840f, 0.894599486f, + 0.448240612f, 0.893912945f, + 0.449611330f, 0.893224301f, + 0.450980989f, 0.892533555f, + 0.452349587f, 0.891840709f, + 0.453717121f, 0.891145765f, + 0.455083587f, 0.890448723f, + 0.456448982f, 0.889749586f, + 0.457813304f, 0.889048356f, + 0.459176548f, 0.888345033f, + 0.460538711f, 0.887639620f, + 0.461899791f, 0.886932119f, + 0.463259784f, 0.886222530f, + 0.464618686f, 0.885510856f, + 0.465976496f, 0.884797098f, + 0.467333209f, 0.884081259f, + 0.468688822f, 0.883363339f, + 0.470043332f, 0.882643340f, + 0.471396737f, 0.881921264f, + 0.472749032f, 0.881197113f, + 0.474100215f, 0.880470889f, + 0.475450282f, 0.879742593f, + 0.476799230f, 0.879012226f, + 0.478147056f, 0.878279792f, + 0.479493758f, 0.877545290f, + 0.480839331f, 0.876808724f, + 0.482183772f, 0.876070094f, + 0.483527079f, 0.875329403f, + 0.484869248f, 0.874586652f, + 0.486210276f, 0.873841843f, + 0.487550160f, 0.873094978f, + 0.488888897f, 0.872346059f, + 0.490226483f, 0.871595087f, + 0.491562916f, 0.870842063f, + 0.492898192f, 0.870086991f, + 0.494232309f, 0.869329871f, + 0.495565262f, 0.868570706f, + 0.496897049f, 0.867809497f, + 0.498227667f, 0.867046246f, + 0.499557113f, 0.866280954f, + 0.500885383f, 0.865513624f, + 0.502212474f, 0.864744258f, + 0.503538384f, 0.863972856f, + 0.504863109f, 0.863199422f, + 0.506186645f, 0.862423956f, + 0.507508991f, 0.861646461f, + 0.508830143f, 0.860866939f, + 0.510150097f, 0.860085390f, + 0.511468850f, 0.859301818f, + 0.512786401f, 0.858516224f, + 0.514102744f, 0.857728610f, + 0.515417878f, 0.856938977f, + 0.516731799f, 0.856147328f, + 0.518044504f, 0.855353665f, + 0.519355990f, 0.854557988f, + 0.520666254f, 0.853760301f, + 0.521975293f, 0.852960605f, + 0.523283103f, 0.852158902f, + 0.524589683f, 0.851355193f, + 0.525895027f, 0.850549481f, + 0.527199135f, 0.849741768f, + 0.528502002f, 0.848932055f, + 0.529803625f, 0.848120345f, + 0.531104001f, 0.847306639f, + 0.532403128f, 0.846490939f, + 0.533701002f, 0.845673247f, + 0.534997620f, 0.844853565f, + 0.536292979f, 0.844031895f, + 0.537587076f, 0.843208240f, + 0.538879909f, 0.842382600f, + 0.540171473f, 0.841554977f, + 0.541461766f, 0.840725375f, + 0.542750785f, 0.839893794f, + 0.544038527f, 0.839060237f, + 0.545324988f, 0.838224706f, + 0.546610167f, 0.837387202f, + 0.547894059f, 0.836547727f, + 0.549176662f, 0.835706284f, + 0.550457973f, 0.834862875f, + 0.551737988f, 0.834017501f, + 0.553016706f, 0.833170165f, + 0.554294121f, 0.832320868f, + 0.555570233f, 0.831469612f, + 0.556845037f, 0.830616400f, + 0.558118531f, 0.829761234f, + 0.559390712f, 0.828904115f, + 0.560661576f, 0.828045045f, + 0.561931121f, 0.827184027f, + 0.563199344f, 0.826321063f, + 0.564466242f, 0.825456154f, + 0.565731811f, 0.824589303f, + 0.566996049f, 0.823720511f, + 0.568258953f, 0.822849781f, + 0.569520519f, 0.821977115f, + 0.570780746f, 0.821102515f, + 0.572039629f, 0.820225983f, + 0.573297167f, 0.819347520f, + 0.574553355f, 0.818467130f, + 0.575808191f, 0.817584813f, + 0.577061673f, 0.816700573f, + 0.578313796f, 0.815814411f, + 0.579564559f, 0.814926329f, + 0.580813958f, 0.814036330f, + 0.582061990f, 0.813144415f, + 0.583308653f, 0.812250587f, + 0.584553943f, 0.811354847f, + 0.585797857f, 0.810457198f, + 0.587040394f, 0.809557642f, + 0.588281548f, 0.808656182f, + 0.589521319f, 0.807752818f, + 0.590759702f, 0.806847554f, + 0.591996695f, 0.805940391f, + 0.593232295f, 0.805031331f, + 0.594466499f, 0.804120377f, + 0.595699304f, 0.803207531f, + 0.596930708f, 0.802292796f, + 0.598160707f, 0.801376172f, + 0.599389298f, 0.800457662f, + 0.600616479f, 0.799537269f, + 0.601842247f, 0.798614995f, + 0.603066599f, 0.797690841f, + 0.604289531f, 0.796764810f, + 0.605511041f, 0.795836905f, + 0.606731127f, 0.794907126f, + 0.607949785f, 0.793975478f, + 0.609167012f, 0.793041960f, + 0.610382806f, 0.792106577f, + 0.611597164f, 0.791169330f, + 0.612810082f, 0.790230221f, + 0.614021559f, 0.789289253f, + 0.615231591f, 0.788346428f, + 0.616440175f, 0.787401747f, + 0.617647308f, 0.786455214f, + 0.618852988f, 0.785506830f, + 0.620057212f, 0.784556597f, + 0.621259977f, 0.783604519f, + 0.622461279f, 0.782650596f, + 0.623661118f, 0.781694832f, + 0.624859488f, 0.780737229f, + 0.626056388f, 0.779777788f, + 0.627251815f, 0.778816512f, + 0.628445767f, 0.777853404f, + 0.629638239f, 0.776888466f, + 0.630829230f, 0.775921699f, + 0.632018736f, 0.774953107f, + 0.633206755f, 0.773982691f, + 0.634393284f, 0.773010453f, + 0.635578320f, 0.772036397f, + 0.636761861f, 0.771060524f, + 0.637943904f, 0.770082837f, + 0.639124445f, 0.769103338f, + 0.640303482f, 0.768122029f, + 0.641481013f, 0.767138912f, + 0.642657034f, 0.766153990f, + 0.643831543f, 0.765167266f, + 0.645004537f, 0.764178741f, + 0.646176013f, 0.763188417f, + 0.647345969f, 0.762196298f, + 0.648514401f, 0.761202385f, + 0.649681307f, 0.760206682f, + 0.650846685f, 0.759209189f, + 0.652010531f, 0.758209910f, + 0.653172843f, 0.757208847f, + 0.654333618f, 0.756206001f, + 0.655492853f, 0.755201377f, + 0.656650546f, 0.754194975f, + 0.657806693f, 0.753186799f, + 0.658961293f, 0.752176850f, + 0.660114342f, 0.751165132f, + 0.661265838f, 0.750151646f, + 0.662415778f, 0.749136395f, + 0.663564159f, 0.748119380f, + 0.664710978f, 0.747100606f, + 0.665856234f, 0.746080074f, + 0.666999922f, 0.745057785f, + 0.668142041f, 0.744033744f, + 0.669282588f, 0.743007952f, + 0.670421560f, 0.741980412f, + 0.671558955f, 0.740951125f, + 0.672694769f, 0.739920095f, + 0.673829000f, 0.738887324f, + 0.674961646f, 0.737852815f, + 0.676092704f, 0.736816569f, + 0.677222170f, 0.735778589f, + 0.678350043f, 0.734738878f, + 0.679476320f, 0.733697438f, + 0.680600998f, 0.732654272f, + 0.681724074f, 0.731609381f, + 0.682845546f, 0.730562769f, + 0.683965412f, 0.729514438f, + 0.685083668f, 0.728464390f, + 0.686200312f, 0.727412629f, + 0.687315341f, 0.726359155f, + 0.688428753f, 0.725303972f, + 0.689540545f, 0.724247083f, + 0.690650714f, 0.723188489f, + 0.691759258f, 0.722128194f, + 0.692866175f, 0.721066199f, + 0.693971461f, 0.720002508f, + 0.695075114f, 0.718937122f, + 0.696177131f, 0.717870045f, + 0.697277511f, 0.716801279f, + 0.698376249f, 0.715730825f, + 0.699473345f, 0.714658688f, + 0.700568794f, 0.713584869f, + 0.701662595f, 0.712509371f, + 0.702754744f, 0.711432196f, + 0.703845241f, 0.710353347f, + 0.704934080f, 0.709272826f, + 0.706021261f, 0.708190637f, + 0.707106781f, 0.707106781f, + 0.708190637f, 0.706021261f, + 0.709272826f, 0.704934080f, + 0.710353347f, 0.703845241f, + 0.711432196f, 0.702754744f, + 0.712509371f, 0.701662595f, + 0.713584869f, 0.700568794f, + 0.714658688f, 0.699473345f, + 0.715730825f, 0.698376249f, + 0.716801279f, 0.697277511f, + 0.717870045f, 0.696177131f, + 0.718937122f, 0.695075114f, + 0.720002508f, 0.693971461f, + 0.721066199f, 0.692866175f, + 0.722128194f, 0.691759258f, + 0.723188489f, 0.690650714f, + 0.724247083f, 0.689540545f, + 0.725303972f, 0.688428753f, + 0.726359155f, 0.687315341f, + 0.727412629f, 0.686200312f, + 0.728464390f, 0.685083668f, + 0.729514438f, 0.683965412f, + 0.730562769f, 0.682845546f, + 0.731609381f, 0.681724074f, + 0.732654272f, 0.680600998f, + 0.733697438f, 0.679476320f, + 0.734738878f, 0.678350043f, + 0.735778589f, 0.677222170f, + 0.736816569f, 0.676092704f, + 0.737852815f, 0.674961646f, + 0.738887324f, 0.673829000f, + 0.739920095f, 0.672694769f, + 0.740951125f, 0.671558955f, + 0.741980412f, 0.670421560f, + 0.743007952f, 0.669282588f, + 0.744033744f, 0.668142041f, + 0.745057785f, 0.666999922f, + 0.746080074f, 0.665856234f, + 0.747100606f, 0.664710978f, + 0.748119380f, 0.663564159f, + 0.749136395f, 0.662415778f, + 0.750151646f, 0.661265838f, + 0.751165132f, 0.660114342f, + 0.752176850f, 0.658961293f, + 0.753186799f, 0.657806693f, + 0.754194975f, 0.656650546f, + 0.755201377f, 0.655492853f, + 0.756206001f, 0.654333618f, + 0.757208847f, 0.653172843f, + 0.758209910f, 0.652010531f, + 0.759209189f, 0.650846685f, + 0.760206682f, 0.649681307f, + 0.761202385f, 0.648514401f, + 0.762196298f, 0.647345969f, + 0.763188417f, 0.646176013f, + 0.764178741f, 0.645004537f, + 0.765167266f, 0.643831543f, + 0.766153990f, 0.642657034f, + 0.767138912f, 0.641481013f, + 0.768122029f, 0.640303482f, + 0.769103338f, 0.639124445f, + 0.770082837f, 0.637943904f, + 0.771060524f, 0.636761861f, + 0.772036397f, 0.635578320f, + 0.773010453f, 0.634393284f, + 0.773982691f, 0.633206755f, + 0.774953107f, 0.632018736f, + 0.775921699f, 0.630829230f, + 0.776888466f, 0.629638239f, + 0.777853404f, 0.628445767f, + 0.778816512f, 0.627251815f, + 0.779777788f, 0.626056388f, + 0.780737229f, 0.624859488f, + 0.781694832f, 0.623661118f, + 0.782650596f, 0.622461279f, + 0.783604519f, 0.621259977f, + 0.784556597f, 0.620057212f, + 0.785506830f, 0.618852988f, + 0.786455214f, 0.617647308f, + 0.787401747f, 0.616440175f, + 0.788346428f, 0.615231591f, + 0.789289253f, 0.614021559f, + 0.790230221f, 0.612810082f, + 0.791169330f, 0.611597164f, + 0.792106577f, 0.610382806f, + 0.793041960f, 0.609167012f, + 0.793975478f, 0.607949785f, + 0.794907126f, 0.606731127f, + 0.795836905f, 0.605511041f, + 0.796764810f, 0.604289531f, + 0.797690841f, 0.603066599f, + 0.798614995f, 0.601842247f, + 0.799537269f, 0.600616479f, + 0.800457662f, 0.599389298f, + 0.801376172f, 0.598160707f, + 0.802292796f, 0.596930708f, + 0.803207531f, 0.595699304f, + 0.804120377f, 0.594466499f, + 0.805031331f, 0.593232295f, + 0.805940391f, 0.591996695f, + 0.806847554f, 0.590759702f, + 0.807752818f, 0.589521319f, + 0.808656182f, 0.588281548f, + 0.809557642f, 0.587040394f, + 0.810457198f, 0.585797857f, + 0.811354847f, 0.584553943f, + 0.812250587f, 0.583308653f, + 0.813144415f, 0.582061990f, + 0.814036330f, 0.580813958f, + 0.814926329f, 0.579564559f, + 0.815814411f, 0.578313796f, + 0.816700573f, 0.577061673f, + 0.817584813f, 0.575808191f, + 0.818467130f, 0.574553355f, + 0.819347520f, 0.573297167f, + 0.820225983f, 0.572039629f, + 0.821102515f, 0.570780746f, + 0.821977115f, 0.569520519f, + 0.822849781f, 0.568258953f, + 0.823720511f, 0.566996049f, + 0.824589303f, 0.565731811f, + 0.825456154f, 0.564466242f, + 0.826321063f, 0.563199344f, + 0.827184027f, 0.561931121f, + 0.828045045f, 0.560661576f, + 0.828904115f, 0.559390712f, + 0.829761234f, 0.558118531f, + 0.830616400f, 0.556845037f, + 0.831469612f, 0.555570233f, + 0.832320868f, 0.554294121f, + 0.833170165f, 0.553016706f, + 0.834017501f, 0.551737988f, + 0.834862875f, 0.550457973f, + 0.835706284f, 0.549176662f, + 0.836547727f, 0.547894059f, + 0.837387202f, 0.546610167f, + 0.838224706f, 0.545324988f, + 0.839060237f, 0.544038527f, + 0.839893794f, 0.542750785f, + 0.840725375f, 0.541461766f, + 0.841554977f, 0.540171473f, + 0.842382600f, 0.538879909f, + 0.843208240f, 0.537587076f, + 0.844031895f, 0.536292979f, + 0.844853565f, 0.534997620f, + 0.845673247f, 0.533701002f, + 0.846490939f, 0.532403128f, + 0.847306639f, 0.531104001f, + 0.848120345f, 0.529803625f, + 0.848932055f, 0.528502002f, + 0.849741768f, 0.527199135f, + 0.850549481f, 0.525895027f, + 0.851355193f, 0.524589683f, + 0.852158902f, 0.523283103f, + 0.852960605f, 0.521975293f, + 0.853760301f, 0.520666254f, + 0.854557988f, 0.519355990f, + 0.855353665f, 0.518044504f, + 0.856147328f, 0.516731799f, + 0.856938977f, 0.515417878f, + 0.857728610f, 0.514102744f, + 0.858516224f, 0.512786401f, + 0.859301818f, 0.511468850f, + 0.860085390f, 0.510150097f, + 0.860866939f, 0.508830143f, + 0.861646461f, 0.507508991f, + 0.862423956f, 0.506186645f, + 0.863199422f, 0.504863109f, + 0.863972856f, 0.503538384f, + 0.864744258f, 0.502212474f, + 0.865513624f, 0.500885383f, + 0.866280954f, 0.499557113f, + 0.867046246f, 0.498227667f, + 0.867809497f, 0.496897049f, + 0.868570706f, 0.495565262f, + 0.869329871f, 0.494232309f, + 0.870086991f, 0.492898192f, + 0.870842063f, 0.491562916f, + 0.871595087f, 0.490226483f, + 0.872346059f, 0.488888897f, + 0.873094978f, 0.487550160f, + 0.873841843f, 0.486210276f, + 0.874586652f, 0.484869248f, + 0.875329403f, 0.483527079f, + 0.876070094f, 0.482183772f, + 0.876808724f, 0.480839331f, + 0.877545290f, 0.479493758f, + 0.878279792f, 0.478147056f, + 0.879012226f, 0.476799230f, + 0.879742593f, 0.475450282f, + 0.880470889f, 0.474100215f, + 0.881197113f, 0.472749032f, + 0.881921264f, 0.471396737f, + 0.882643340f, 0.470043332f, + 0.883363339f, 0.468688822f, + 0.884081259f, 0.467333209f, + 0.884797098f, 0.465976496f, + 0.885510856f, 0.464618686f, + 0.886222530f, 0.463259784f, + 0.886932119f, 0.461899791f, + 0.887639620f, 0.460538711f, + 0.888345033f, 0.459176548f, + 0.889048356f, 0.457813304f, + 0.889749586f, 0.456448982f, + 0.890448723f, 0.455083587f, + 0.891145765f, 0.453717121f, + 0.891840709f, 0.452349587f, + 0.892533555f, 0.450980989f, + 0.893224301f, 0.449611330f, + 0.893912945f, 0.448240612f, + 0.894599486f, 0.446868840f, + 0.895283921f, 0.445496017f, + 0.895966250f, 0.444122145f, + 0.896646470f, 0.442747228f, + 0.897324581f, 0.441371269f, + 0.898000580f, 0.439994271f, + 0.898674466f, 0.438616239f, + 0.899346237f, 0.437237174f, + 0.900015892f, 0.435857080f, + 0.900683429f, 0.434475961f, + 0.901348847f, 0.433093819f, + 0.902012144f, 0.431710658f, + 0.902673318f, 0.430326481f, + 0.903332368f, 0.428941292f, + 0.903989293f, 0.427555093f, + 0.904644091f, 0.426167889f, + 0.905296759f, 0.424779681f, + 0.905947298f, 0.423390474f, + 0.906595705f, 0.422000271f, + 0.907241978f, 0.420609074f, + 0.907886116f, 0.419216888f, + 0.908528119f, 0.417823716f, + 0.909167983f, 0.416429560f, + 0.909805708f, 0.415034424f, + 0.910441292f, 0.413638312f, + 0.911074734f, 0.412241227f, + 0.911706032f, 0.410843171f, + 0.912335185f, 0.409444149f, + 0.912962190f, 0.408044163f, + 0.913587048f, 0.406643217f, + 0.914209756f, 0.405241314f, + 0.914830312f, 0.403838458f, + 0.915448716f, 0.402434651f, + 0.916064966f, 0.401029897f, + 0.916679060f, 0.399624200f, + 0.917290997f, 0.398217562f, + 0.917900776f, 0.396809987f, + 0.918508394f, 0.395401479f, + 0.919113852f, 0.393992040f, + 0.919717146f, 0.392581674f, + 0.920318277f, 0.391170384f, + 0.920917242f, 0.389758174f, + 0.921514039f, 0.388345047f, + 0.922108669f, 0.386931006f, + 0.922701128f, 0.385516054f, + 0.923291417f, 0.384100195f, + 0.923879533f, 0.382683432f, + 0.924465474f, 0.381265769f, + 0.925049241f, 0.379847209f, + 0.925630831f, 0.378427755f, + 0.926210242f, 0.377007410f, + 0.926787474f, 0.375586178f, + 0.927362526f, 0.374164063f, + 0.927935395f, 0.372741067f, + 0.928506080f, 0.371317194f, + 0.929074581f, 0.369892447f, + 0.929640896f, 0.368466830f, + 0.930205023f, 0.367040346f, + 0.930766961f, 0.365612998f, + 0.931326709f, 0.364184790f, + 0.931884266f, 0.362755724f, + 0.932439629f, 0.361325806f, + 0.932992799f, 0.359895037f, + 0.933543773f, 0.358463421f, + 0.934092550f, 0.357030961f, + 0.934639130f, 0.355597662f, + 0.935183510f, 0.354163525f, + 0.935725689f, 0.352728556f, + 0.936265667f, 0.351292756f, + 0.936803442f, 0.349856130f, + 0.937339012f, 0.348418680f, + 0.937872376f, 0.346980411f, + 0.938403534f, 0.345541325f, + 0.938932484f, 0.344101426f, + 0.939459224f, 0.342660717f, + 0.939983753f, 0.341219202f, + 0.940506071f, 0.339776884f, + 0.941026175f, 0.338333767f, + 0.941544065f, 0.336889853f, + 0.942059740f, 0.335445147f, + 0.942573198f, 0.333999651f, + 0.943084437f, 0.332553370f, + 0.943593458f, 0.331106306f, + 0.944100258f, 0.329658463f, + 0.944604837f, 0.328209844f, + 0.945107193f, 0.326760452f, + 0.945607325f, 0.325310292f, + 0.946105232f, 0.323859367f, + 0.946600913f, 0.322407679f, + 0.947094366f, 0.320955232f, + 0.947585591f, 0.319502031f, + 0.948074586f, 0.318048077f, + 0.948561350f, 0.316593376f, + 0.949045882f, 0.315137929f, + 0.949528181f, 0.313681740f, + 0.950008245f, 0.312224814f, + 0.950486074f, 0.310767153f, + 0.950961666f, 0.309308760f, + 0.951435021f, 0.307849640f, + 0.951906137f, 0.306389795f, + 0.952375013f, 0.304929230f, + 0.952841648f, 0.303467947f, + 0.953306040f, 0.302005949f, + 0.953768190f, 0.300543241f, + 0.954228095f, 0.299079826f, + 0.954685755f, 0.297615707f, + 0.955141168f, 0.296150888f, + 0.955594334f, 0.294685372f, + 0.956045251f, 0.293219163f, + 0.956493919f, 0.291752263f, + 0.956940336f, 0.290284677f, + 0.957384501f, 0.288816408f, + 0.957826413f, 0.287347460f, + 0.958266071f, 0.285877835f, + 0.958703475f, 0.284407537f, + 0.959138622f, 0.282936570f, + 0.959571513f, 0.281464938f, + 0.960002146f, 0.279992643f, + 0.960430519f, 0.278519689f, + 0.960856633f, 0.277046080f, + 0.961280486f, 0.275571819f, + 0.961702077f, 0.274096910f, + 0.962121404f, 0.272621355f, + 0.962538468f, 0.271145160f, + 0.962953267f, 0.269668326f, + 0.963365800f, 0.268190857f, + 0.963776066f, 0.266712757f, + 0.964184064f, 0.265234030f, + 0.964589793f, 0.263754679f, + 0.964993253f, 0.262274707f, + 0.965394442f, 0.260794118f, + 0.965793359f, 0.259312915f, + 0.966190003f, 0.257831102f, + 0.966584374f, 0.256348682f, + 0.966976471f, 0.254865660f, + 0.967366292f, 0.253382037f, + 0.967753837f, 0.251897818f, + 0.968139105f, 0.250413007f, + 0.968522094f, 0.248927606f, + 0.968902805f, 0.247441619f, + 0.969281235f, 0.245955050f, + 0.969657385f, 0.244467903f, + 0.970031253f, 0.242980180f, + 0.970402839f, 0.241491885f, + 0.970772141f, 0.240003022f, + 0.971139158f, 0.238513595f, + 0.971503891f, 0.237023606f, + 0.971866337f, 0.235533059f, + 0.972226497f, 0.234041959f, + 0.972584369f, 0.232550307f, + 0.972939952f, 0.231058108f, + 0.973293246f, 0.229565366f, + 0.973644250f, 0.228072083f, + 0.973992962f, 0.226578264f, + 0.974339383f, 0.225083911f, + 0.974683511f, 0.223589029f, + 0.975025345f, 0.222093621f, + 0.975364885f, 0.220597690f, + 0.975702130f, 0.219101240f, + 0.976037079f, 0.217604275f, + 0.976369731f, 0.216106797f, + 0.976700086f, 0.214608811f, + 0.977028143f, 0.213110320f, + 0.977353900f, 0.211611327f, + 0.977677358f, 0.210111837f, + 0.977998515f, 0.208611852f, + 0.978317371f, 0.207111376f, + 0.978633924f, 0.205610413f, + 0.978948175f, 0.204108966f, + 0.979260123f, 0.202607039f, + 0.979569766f, 0.201104635f, + 0.979877104f, 0.199601758f, + 0.980182136f, 0.198098411f, + 0.980484862f, 0.196594598f, + 0.980785280f, 0.195090322f, + 0.981083391f, 0.193585587f, + 0.981379193f, 0.192080397f, + 0.981672686f, 0.190574755f, + 0.981963869f, 0.189068664f, + 0.982252741f, 0.187562129f, + 0.982539302f, 0.186055152f, + 0.982823551f, 0.184547737f, + 0.983105487f, 0.183039888f, + 0.983385110f, 0.181531608f, + 0.983662419f, 0.180022901f, + 0.983937413f, 0.178513771f, + 0.984210092f, 0.177004220f, + 0.984480455f, 0.175494253f, + 0.984748502f, 0.173983873f, + 0.985014231f, 0.172473084f, + 0.985277642f, 0.170961889f, + 0.985538735f, 0.169450291f, + 0.985797509f, 0.167938295f, + 0.986053963f, 0.166425904f, + 0.986308097f, 0.164913120f, + 0.986559910f, 0.163399949f, + 0.986809402f, 0.161886394f, + 0.987056571f, 0.160372457f, + 0.987301418f, 0.158858143f, + 0.987543942f, 0.157343456f, + 0.987784142f, 0.155828398f, + 0.988022017f, 0.154312973f, + 0.988257568f, 0.152797185f, + 0.988490793f, 0.151281038f, + 0.988721692f, 0.149764535f, + 0.988950265f, 0.148247679f, + 0.989176510f, 0.146730474f, + 0.989400428f, 0.145212925f, + 0.989622017f, 0.143695033f, + 0.989841278f, 0.142176804f, + 0.990058210f, 0.140658239f, + 0.990272812f, 0.139139344f, + 0.990485084f, 0.137620122f, + 0.990695025f, 0.136100575f, + 0.990902635f, 0.134580709f, + 0.991107914f, 0.133060525f, + 0.991310860f, 0.131540029f, + 0.991511473f, 0.130019223f, + 0.991709754f, 0.128498111f, + 0.991905700f, 0.126976696f, + 0.992099313f, 0.125454983f, + 0.992290591f, 0.123932975f, + 0.992479535f, 0.122410675f, + 0.992666142f, 0.120888087f, + 0.992850414f, 0.119365215f, + 0.993032350f, 0.117842062f, + 0.993211949f, 0.116318631f, + 0.993389211f, 0.114794927f, + 0.993564136f, 0.113270952f, + 0.993736722f, 0.111746711f, + 0.993906970f, 0.110222207f, + 0.994074879f, 0.108697444f, + 0.994240449f, 0.107172425f, + 0.994403680f, 0.105647154f, + 0.994564571f, 0.104121634f, + 0.994723121f, 0.102595869f, + 0.994879331f, 0.101069863f, + 0.995033199f, 0.099543619f, + 0.995184727f, 0.098017140f, + 0.995333912f, 0.096490431f, + 0.995480755f, 0.094963495f, + 0.995625256f, 0.093436336f, + 0.995767414f, 0.091908956f, + 0.995907229f, 0.090381361f, + 0.996044701f, 0.088853553f, + 0.996179829f, 0.087325535f, + 0.996312612f, 0.085797312f, + 0.996443051f, 0.084268888f, + 0.996571146f, 0.082740265f, + 0.996696895f, 0.081211447f, + 0.996820299f, 0.079682438f, + 0.996941358f, 0.078153242f, + 0.997060070f, 0.076623861f, + 0.997176437f, 0.075094301f, + 0.997290457f, 0.073564564f, + 0.997402130f, 0.072034653f, + 0.997511456f, 0.070504573f, + 0.997618435f, 0.068974328f, + 0.997723067f, 0.067443920f, + 0.997825350f, 0.065913353f, + 0.997925286f, 0.064382631f, + 0.998022874f, 0.062851758f, + 0.998118113f, 0.061320736f, + 0.998211003f, 0.059789571f, + 0.998301545f, 0.058258265f, + 0.998389737f, 0.056726821f, + 0.998475581f, 0.055195244f, + 0.998559074f, 0.053663538f, + 0.998640218f, 0.052131705f, + 0.998719012f, 0.050599749f, + 0.998795456f, 0.049067674f, + 0.998869550f, 0.047535484f, + 0.998941293f, 0.046003182f, + 0.999010686f, 0.044470772f, + 0.999077728f, 0.042938257f, + 0.999142419f, 0.041405641f, + 0.999204759f, 0.039872928f, + 0.999264747f, 0.038340120f, + 0.999322385f, 0.036807223f, + 0.999377670f, 0.035274239f, + 0.999430605f, 0.033741172f, + 0.999481187f, 0.032208025f, + 0.999529418f, 0.030674803f, + 0.999575296f, 0.029141509f, + 0.999618822f, 0.027608146f, + 0.999659997f, 0.026074718f, + 0.999698819f, 0.024541229f, + 0.999735288f, 0.023007681f, + 0.999769405f, 0.021474080f, + 0.999801170f, 0.019940429f, + 0.999830582f, 0.018406730f, + 0.999857641f, 0.016872988f, + 0.999882347f, 0.015339206f, + 0.999904701f, 0.013805389f, + 0.999924702f, 0.012271538f, + 0.999942350f, 0.010737659f, + 0.999957645f, 0.009203755f, + 0.999970586f, 0.007669829f, + 0.999981175f, 0.006135885f, + 0.999989411f, 0.004601926f, + 0.999995294f, 0.003067957f, + 0.999998823f, 0.001533980f, + 1.000000000f, 0.000000000f, + 0.999998823f, -0.001533980f, + 0.999995294f, -0.003067957f, + 0.999989411f, -0.004601926f, + 0.999981175f, -0.006135885f, + 0.999970586f, -0.007669829f, + 0.999957645f, -0.009203755f, + 0.999942350f, -0.010737659f, + 0.999924702f, -0.012271538f, + 0.999904701f, -0.013805389f, + 0.999882347f, -0.015339206f, + 0.999857641f, -0.016872988f, + 0.999830582f, -0.018406730f, + 0.999801170f, -0.019940429f, + 0.999769405f, -0.021474080f, + 0.999735288f, -0.023007681f, + 0.999698819f, -0.024541229f, + 0.999659997f, -0.026074718f, + 0.999618822f, -0.027608146f, + 0.999575296f, -0.029141509f, + 0.999529418f, -0.030674803f, + 0.999481187f, -0.032208025f, + 0.999430605f, -0.033741172f, + 0.999377670f, -0.035274239f, + 0.999322385f, -0.036807223f, + 0.999264747f, -0.038340120f, + 0.999204759f, -0.039872928f, + 0.999142419f, -0.041405641f, + 0.999077728f, -0.042938257f, + 0.999010686f, -0.044470772f, + 0.998941293f, -0.046003182f, + 0.998869550f, -0.047535484f, + 0.998795456f, -0.049067674f, + 0.998719012f, -0.050599749f, + 0.998640218f, -0.052131705f, + 0.998559074f, -0.053663538f, + 0.998475581f, -0.055195244f, + 0.998389737f, -0.056726821f, + 0.998301545f, -0.058258265f, + 0.998211003f, -0.059789571f, + 0.998118113f, -0.061320736f, + 0.998022874f, -0.062851758f, + 0.997925286f, -0.064382631f, + 0.997825350f, -0.065913353f, + 0.997723067f, -0.067443920f, + 0.997618435f, -0.068974328f, + 0.997511456f, -0.070504573f, + 0.997402130f, -0.072034653f, + 0.997290457f, -0.073564564f, + 0.997176437f, -0.075094301f, + 0.997060070f, -0.076623861f, + 0.996941358f, -0.078153242f, + 0.996820299f, -0.079682438f, + 0.996696895f, -0.081211447f, + 0.996571146f, -0.082740265f, + 0.996443051f, -0.084268888f, + 0.996312612f, -0.085797312f, + 0.996179829f, -0.087325535f, + 0.996044701f, -0.088853553f, + 0.995907229f, -0.090381361f, + 0.995767414f, -0.091908956f, + 0.995625256f, -0.093436336f, + 0.995480755f, -0.094963495f, + 0.995333912f, -0.096490431f, + 0.995184727f, -0.098017140f, + 0.995033199f, -0.099543619f, + 0.994879331f, -0.101069863f, + 0.994723121f, -0.102595869f, + 0.994564571f, -0.104121634f, + 0.994403680f, -0.105647154f, + 0.994240449f, -0.107172425f, + 0.994074879f, -0.108697444f, + 0.993906970f, -0.110222207f, + 0.993736722f, -0.111746711f, + 0.993564136f, -0.113270952f, + 0.993389211f, -0.114794927f, + 0.993211949f, -0.116318631f, + 0.993032350f, -0.117842062f, + 0.992850414f, -0.119365215f, + 0.992666142f, -0.120888087f, + 0.992479535f, -0.122410675f, + 0.992290591f, -0.123932975f, + 0.992099313f, -0.125454983f, + 0.991905700f, -0.126976696f, + 0.991709754f, -0.128498111f, + 0.991511473f, -0.130019223f, + 0.991310860f, -0.131540029f, + 0.991107914f, -0.133060525f, + 0.990902635f, -0.134580709f, + 0.990695025f, -0.136100575f, + 0.990485084f, -0.137620122f, + 0.990272812f, -0.139139344f, + 0.990058210f, -0.140658239f, + 0.989841278f, -0.142176804f, + 0.989622017f, -0.143695033f, + 0.989400428f, -0.145212925f, + 0.989176510f, -0.146730474f, + 0.988950265f, -0.148247679f, + 0.988721692f, -0.149764535f, + 0.988490793f, -0.151281038f, + 0.988257568f, -0.152797185f, + 0.988022017f, -0.154312973f, + 0.987784142f, -0.155828398f, + 0.987543942f, -0.157343456f, + 0.987301418f, -0.158858143f, + 0.987056571f, -0.160372457f, + 0.986809402f, -0.161886394f, + 0.986559910f, -0.163399949f, + 0.986308097f, -0.164913120f, + 0.986053963f, -0.166425904f, + 0.985797509f, -0.167938295f, + 0.985538735f, -0.169450291f, + 0.985277642f, -0.170961889f, + 0.985014231f, -0.172473084f, + 0.984748502f, -0.173983873f, + 0.984480455f, -0.175494253f, + 0.984210092f, -0.177004220f, + 0.983937413f, -0.178513771f, + 0.983662419f, -0.180022901f, + 0.983385110f, -0.181531608f, + 0.983105487f, -0.183039888f, + 0.982823551f, -0.184547737f, + 0.982539302f, -0.186055152f, + 0.982252741f, -0.187562129f, + 0.981963869f, -0.189068664f, + 0.981672686f, -0.190574755f, + 0.981379193f, -0.192080397f, + 0.981083391f, -0.193585587f, + 0.980785280f, -0.195090322f, + 0.980484862f, -0.196594598f, + 0.980182136f, -0.198098411f, + 0.979877104f, -0.199601758f, + 0.979569766f, -0.201104635f, + 0.979260123f, -0.202607039f, + 0.978948175f, -0.204108966f, + 0.978633924f, -0.205610413f, + 0.978317371f, -0.207111376f, + 0.977998515f, -0.208611852f, + 0.977677358f, -0.210111837f, + 0.977353900f, -0.211611327f, + 0.977028143f, -0.213110320f, + 0.976700086f, -0.214608811f, + 0.976369731f, -0.216106797f, + 0.976037079f, -0.217604275f, + 0.975702130f, -0.219101240f, + 0.975364885f, -0.220597690f, + 0.975025345f, -0.222093621f, + 0.974683511f, -0.223589029f, + 0.974339383f, -0.225083911f, + 0.973992962f, -0.226578264f, + 0.973644250f, -0.228072083f, + 0.973293246f, -0.229565366f, + 0.972939952f, -0.231058108f, + 0.972584369f, -0.232550307f, + 0.972226497f, -0.234041959f, + 0.971866337f, -0.235533059f, + 0.971503891f, -0.237023606f, + 0.971139158f, -0.238513595f, + 0.970772141f, -0.240003022f, + 0.970402839f, -0.241491885f, + 0.970031253f, -0.242980180f, + 0.969657385f, -0.244467903f, + 0.969281235f, -0.245955050f, + 0.968902805f, -0.247441619f, + 0.968522094f, -0.248927606f, + 0.968139105f, -0.250413007f, + 0.967753837f, -0.251897818f, + 0.967366292f, -0.253382037f, + 0.966976471f, -0.254865660f, + 0.966584374f, -0.256348682f, + 0.966190003f, -0.257831102f, + 0.965793359f, -0.259312915f, + 0.965394442f, -0.260794118f, + 0.964993253f, -0.262274707f, + 0.964589793f, -0.263754679f, + 0.964184064f, -0.265234030f, + 0.963776066f, -0.266712757f, + 0.963365800f, -0.268190857f, + 0.962953267f, -0.269668326f, + 0.962538468f, -0.271145160f, + 0.962121404f, -0.272621355f, + 0.961702077f, -0.274096910f, + 0.961280486f, -0.275571819f, + 0.960856633f, -0.277046080f, + 0.960430519f, -0.278519689f, + 0.960002146f, -0.279992643f, + 0.959571513f, -0.281464938f, + 0.959138622f, -0.282936570f, + 0.958703475f, -0.284407537f, + 0.958266071f, -0.285877835f, + 0.957826413f, -0.287347460f, + 0.957384501f, -0.288816408f, + 0.956940336f, -0.290284677f, + 0.956493919f, -0.291752263f, + 0.956045251f, -0.293219163f, + 0.955594334f, -0.294685372f, + 0.955141168f, -0.296150888f, + 0.954685755f, -0.297615707f, + 0.954228095f, -0.299079826f, + 0.953768190f, -0.300543241f, + 0.953306040f, -0.302005949f, + 0.952841648f, -0.303467947f, + 0.952375013f, -0.304929230f, + 0.951906137f, -0.306389795f, + 0.951435021f, -0.307849640f, + 0.950961666f, -0.309308760f, + 0.950486074f, -0.310767153f, + 0.950008245f, -0.312224814f, + 0.949528181f, -0.313681740f, + 0.949045882f, -0.315137929f, + 0.948561350f, -0.316593376f, + 0.948074586f, -0.318048077f, + 0.947585591f, -0.319502031f, + 0.947094366f, -0.320955232f, + 0.946600913f, -0.322407679f, + 0.946105232f, -0.323859367f, + 0.945607325f, -0.325310292f, + 0.945107193f, -0.326760452f, + 0.944604837f, -0.328209844f, + 0.944100258f, -0.329658463f, + 0.943593458f, -0.331106306f, + 0.943084437f, -0.332553370f, + 0.942573198f, -0.333999651f, + 0.942059740f, -0.335445147f, + 0.941544065f, -0.336889853f, + 0.941026175f, -0.338333767f, + 0.940506071f, -0.339776884f, + 0.939983753f, -0.341219202f, + 0.939459224f, -0.342660717f, + 0.938932484f, -0.344101426f, + 0.938403534f, -0.345541325f, + 0.937872376f, -0.346980411f, + 0.937339012f, -0.348418680f, + 0.936803442f, -0.349856130f, + 0.936265667f, -0.351292756f, + 0.935725689f, -0.352728556f, + 0.935183510f, -0.354163525f, + 0.934639130f, -0.355597662f, + 0.934092550f, -0.357030961f, + 0.933543773f, -0.358463421f, + 0.932992799f, -0.359895037f, + 0.932439629f, -0.361325806f, + 0.931884266f, -0.362755724f, + 0.931326709f, -0.364184790f, + 0.930766961f, -0.365612998f, + 0.930205023f, -0.367040346f, + 0.929640896f, -0.368466830f, + 0.929074581f, -0.369892447f, + 0.928506080f, -0.371317194f, + 0.927935395f, -0.372741067f, + 0.927362526f, -0.374164063f, + 0.926787474f, -0.375586178f, + 0.926210242f, -0.377007410f, + 0.925630831f, -0.378427755f, + 0.925049241f, -0.379847209f, + 0.924465474f, -0.381265769f, + 0.923879533f, -0.382683432f, + 0.923291417f, -0.384100195f, + 0.922701128f, -0.385516054f, + 0.922108669f, -0.386931006f, + 0.921514039f, -0.388345047f, + 0.920917242f, -0.389758174f, + 0.920318277f, -0.391170384f, + 0.919717146f, -0.392581674f, + 0.919113852f, -0.393992040f, + 0.918508394f, -0.395401479f, + 0.917900776f, -0.396809987f, + 0.917290997f, -0.398217562f, + 0.916679060f, -0.399624200f, + 0.916064966f, -0.401029897f, + 0.915448716f, -0.402434651f, + 0.914830312f, -0.403838458f, + 0.914209756f, -0.405241314f, + 0.913587048f, -0.406643217f, + 0.912962190f, -0.408044163f, + 0.912335185f, -0.409444149f, + 0.911706032f, -0.410843171f, + 0.911074734f, -0.412241227f, + 0.910441292f, -0.413638312f, + 0.909805708f, -0.415034424f, + 0.909167983f, -0.416429560f, + 0.908528119f, -0.417823716f, + 0.907886116f, -0.419216888f, + 0.907241978f, -0.420609074f, + 0.906595705f, -0.422000271f, + 0.905947298f, -0.423390474f, + 0.905296759f, -0.424779681f, + 0.904644091f, -0.426167889f, + 0.903989293f, -0.427555093f, + 0.903332368f, -0.428941292f, + 0.902673318f, -0.430326481f, + 0.902012144f, -0.431710658f, + 0.901348847f, -0.433093819f, + 0.900683429f, -0.434475961f, + 0.900015892f, -0.435857080f, + 0.899346237f, -0.437237174f, + 0.898674466f, -0.438616239f, + 0.898000580f, -0.439994271f, + 0.897324581f, -0.441371269f, + 0.896646470f, -0.442747228f, + 0.895966250f, -0.444122145f, + 0.895283921f, -0.445496017f, + 0.894599486f, -0.446868840f, + 0.893912945f, -0.448240612f, + 0.893224301f, -0.449611330f, + 0.892533555f, -0.450980989f, + 0.891840709f, -0.452349587f, + 0.891145765f, -0.453717121f, + 0.890448723f, -0.455083587f, + 0.889749586f, -0.456448982f, + 0.889048356f, -0.457813304f, + 0.888345033f, -0.459176548f, + 0.887639620f, -0.460538711f, + 0.886932119f, -0.461899791f, + 0.886222530f, -0.463259784f, + 0.885510856f, -0.464618686f, + 0.884797098f, -0.465976496f, + 0.884081259f, -0.467333209f, + 0.883363339f, -0.468688822f, + 0.882643340f, -0.470043332f, + 0.881921264f, -0.471396737f, + 0.881197113f, -0.472749032f, + 0.880470889f, -0.474100215f, + 0.879742593f, -0.475450282f, + 0.879012226f, -0.476799230f, + 0.878279792f, -0.478147056f, + 0.877545290f, -0.479493758f, + 0.876808724f, -0.480839331f, + 0.876070094f, -0.482183772f, + 0.875329403f, -0.483527079f, + 0.874586652f, -0.484869248f, + 0.873841843f, -0.486210276f, + 0.873094978f, -0.487550160f, + 0.872346059f, -0.488888897f, + 0.871595087f, -0.490226483f, + 0.870842063f, -0.491562916f, + 0.870086991f, -0.492898192f, + 0.869329871f, -0.494232309f, + 0.868570706f, -0.495565262f, + 0.867809497f, -0.496897049f, + 0.867046246f, -0.498227667f, + 0.866280954f, -0.499557113f, + 0.865513624f, -0.500885383f, + 0.864744258f, -0.502212474f, + 0.863972856f, -0.503538384f, + 0.863199422f, -0.504863109f, + 0.862423956f, -0.506186645f, + 0.861646461f, -0.507508991f, + 0.860866939f, -0.508830143f, + 0.860085390f, -0.510150097f, + 0.859301818f, -0.511468850f, + 0.858516224f, -0.512786401f, + 0.857728610f, -0.514102744f, + 0.856938977f, -0.515417878f, + 0.856147328f, -0.516731799f, + 0.855353665f, -0.518044504f, + 0.854557988f, -0.519355990f, + 0.853760301f, -0.520666254f, + 0.852960605f, -0.521975293f, + 0.852158902f, -0.523283103f, + 0.851355193f, -0.524589683f, + 0.850549481f, -0.525895027f, + 0.849741768f, -0.527199135f, + 0.848932055f, -0.528502002f, + 0.848120345f, -0.529803625f, + 0.847306639f, -0.531104001f, + 0.846490939f, -0.532403128f, + 0.845673247f, -0.533701002f, + 0.844853565f, -0.534997620f, + 0.844031895f, -0.536292979f, + 0.843208240f, -0.537587076f, + 0.842382600f, -0.538879909f, + 0.841554977f, -0.540171473f, + 0.840725375f, -0.541461766f, + 0.839893794f, -0.542750785f, + 0.839060237f, -0.544038527f, + 0.838224706f, -0.545324988f, + 0.837387202f, -0.546610167f, + 0.836547727f, -0.547894059f, + 0.835706284f, -0.549176662f, + 0.834862875f, -0.550457973f, + 0.834017501f, -0.551737988f, + 0.833170165f, -0.553016706f, + 0.832320868f, -0.554294121f, + 0.831469612f, -0.555570233f, + 0.830616400f, -0.556845037f, + 0.829761234f, -0.558118531f, + 0.828904115f, -0.559390712f, + 0.828045045f, -0.560661576f, + 0.827184027f, -0.561931121f, + 0.826321063f, -0.563199344f, + 0.825456154f, -0.564466242f, + 0.824589303f, -0.565731811f, + 0.823720511f, -0.566996049f, + 0.822849781f, -0.568258953f, + 0.821977115f, -0.569520519f, + 0.821102515f, -0.570780746f, + 0.820225983f, -0.572039629f, + 0.819347520f, -0.573297167f, + 0.818467130f, -0.574553355f, + 0.817584813f, -0.575808191f, + 0.816700573f, -0.577061673f, + 0.815814411f, -0.578313796f, + 0.814926329f, -0.579564559f, + 0.814036330f, -0.580813958f, + 0.813144415f, -0.582061990f, + 0.812250587f, -0.583308653f, + 0.811354847f, -0.584553943f, + 0.810457198f, -0.585797857f, + 0.809557642f, -0.587040394f, + 0.808656182f, -0.588281548f, + 0.807752818f, -0.589521319f, + 0.806847554f, -0.590759702f, + 0.805940391f, -0.591996695f, + 0.805031331f, -0.593232295f, + 0.804120377f, -0.594466499f, + 0.803207531f, -0.595699304f, + 0.802292796f, -0.596930708f, + 0.801376172f, -0.598160707f, + 0.800457662f, -0.599389298f, + 0.799537269f, -0.600616479f, + 0.798614995f, -0.601842247f, + 0.797690841f, -0.603066599f, + 0.796764810f, -0.604289531f, + 0.795836905f, -0.605511041f, + 0.794907126f, -0.606731127f, + 0.793975478f, -0.607949785f, + 0.793041960f, -0.609167012f, + 0.792106577f, -0.610382806f, + 0.791169330f, -0.611597164f, + 0.790230221f, -0.612810082f, + 0.789289253f, -0.614021559f, + 0.788346428f, -0.615231591f, + 0.787401747f, -0.616440175f, + 0.786455214f, -0.617647308f, + 0.785506830f, -0.618852988f, + 0.784556597f, -0.620057212f, + 0.783604519f, -0.621259977f, + 0.782650596f, -0.622461279f, + 0.781694832f, -0.623661118f, + 0.780737229f, -0.624859488f, + 0.779777788f, -0.626056388f, + 0.778816512f, -0.627251815f, + 0.777853404f, -0.628445767f, + 0.776888466f, -0.629638239f, + 0.775921699f, -0.630829230f, + 0.774953107f, -0.632018736f, + 0.773982691f, -0.633206755f, + 0.773010453f, -0.634393284f, + 0.772036397f, -0.635578320f, + 0.771060524f, -0.636761861f, + 0.770082837f, -0.637943904f, + 0.769103338f, -0.639124445f, + 0.768122029f, -0.640303482f, + 0.767138912f, -0.641481013f, + 0.766153990f, -0.642657034f, + 0.765167266f, -0.643831543f, + 0.764178741f, -0.645004537f, + 0.763188417f, -0.646176013f, + 0.762196298f, -0.647345969f, + 0.761202385f, -0.648514401f, + 0.760206682f, -0.649681307f, + 0.759209189f, -0.650846685f, + 0.758209910f, -0.652010531f, + 0.757208847f, -0.653172843f, + 0.756206001f, -0.654333618f, + 0.755201377f, -0.655492853f, + 0.754194975f, -0.656650546f, + 0.753186799f, -0.657806693f, + 0.752176850f, -0.658961293f, + 0.751165132f, -0.660114342f, + 0.750151646f, -0.661265838f, + 0.749136395f, -0.662415778f, + 0.748119380f, -0.663564159f, + 0.747100606f, -0.664710978f, + 0.746080074f, -0.665856234f, + 0.745057785f, -0.666999922f, + 0.744033744f, -0.668142041f, + 0.743007952f, -0.669282588f, + 0.741980412f, -0.670421560f, + 0.740951125f, -0.671558955f, + 0.739920095f, -0.672694769f, + 0.738887324f, -0.673829000f, + 0.737852815f, -0.674961646f, + 0.736816569f, -0.676092704f, + 0.735778589f, -0.677222170f, + 0.734738878f, -0.678350043f, + 0.733697438f, -0.679476320f, + 0.732654272f, -0.680600998f, + 0.731609381f, -0.681724074f, + 0.730562769f, -0.682845546f, + 0.729514438f, -0.683965412f, + 0.728464390f, -0.685083668f, + 0.727412629f, -0.686200312f, + 0.726359155f, -0.687315341f, + 0.725303972f, -0.688428753f, + 0.724247083f, -0.689540545f, + 0.723188489f, -0.690650714f, + 0.722128194f, -0.691759258f, + 0.721066199f, -0.692866175f, + 0.720002508f, -0.693971461f, + 0.718937122f, -0.695075114f, + 0.717870045f, -0.696177131f, + 0.716801279f, -0.697277511f, + 0.715730825f, -0.698376249f, + 0.714658688f, -0.699473345f, + 0.713584869f, -0.700568794f, + 0.712509371f, -0.701662595f, + 0.711432196f, -0.702754744f, + 0.710353347f, -0.703845241f, + 0.709272826f, -0.704934080f, + 0.708190637f, -0.706021261f, + 0.707106781f, -0.707106781f, + 0.706021261f, -0.708190637f, + 0.704934080f, -0.709272826f, + 0.703845241f, -0.710353347f, + 0.702754744f, -0.711432196f, + 0.701662595f, -0.712509371f, + 0.700568794f, -0.713584869f, + 0.699473345f, -0.714658688f, + 0.698376249f, -0.715730825f, + 0.697277511f, -0.716801279f, + 0.696177131f, -0.717870045f, + 0.695075114f, -0.718937122f, + 0.693971461f, -0.720002508f, + 0.692866175f, -0.721066199f, + 0.691759258f, -0.722128194f, + 0.690650714f, -0.723188489f, + 0.689540545f, -0.724247083f, + 0.688428753f, -0.725303972f, + 0.687315341f, -0.726359155f, + 0.686200312f, -0.727412629f, + 0.685083668f, -0.728464390f, + 0.683965412f, -0.729514438f, + 0.682845546f, -0.730562769f, + 0.681724074f, -0.731609381f, + 0.680600998f, -0.732654272f, + 0.679476320f, -0.733697438f, + 0.678350043f, -0.734738878f, + 0.677222170f, -0.735778589f, + 0.676092704f, -0.736816569f, + 0.674961646f, -0.737852815f, + 0.673829000f, -0.738887324f, + 0.672694769f, -0.739920095f, + 0.671558955f, -0.740951125f, + 0.670421560f, -0.741980412f, + 0.669282588f, -0.743007952f, + 0.668142041f, -0.744033744f, + 0.666999922f, -0.745057785f, + 0.665856234f, -0.746080074f, + 0.664710978f, -0.747100606f, + 0.663564159f, -0.748119380f, + 0.662415778f, -0.749136395f, + 0.661265838f, -0.750151646f, + 0.660114342f, -0.751165132f, + 0.658961293f, -0.752176850f, + 0.657806693f, -0.753186799f, + 0.656650546f, -0.754194975f, + 0.655492853f, -0.755201377f, + 0.654333618f, -0.756206001f, + 0.653172843f, -0.757208847f, + 0.652010531f, -0.758209910f, + 0.650846685f, -0.759209189f, + 0.649681307f, -0.760206682f, + 0.648514401f, -0.761202385f, + 0.647345969f, -0.762196298f, + 0.646176013f, -0.763188417f, + 0.645004537f, -0.764178741f, + 0.643831543f, -0.765167266f, + 0.642657034f, -0.766153990f, + 0.641481013f, -0.767138912f, + 0.640303482f, -0.768122029f, + 0.639124445f, -0.769103338f, + 0.637943904f, -0.770082837f, + 0.636761861f, -0.771060524f, + 0.635578320f, -0.772036397f, + 0.634393284f, -0.773010453f, + 0.633206755f, -0.773982691f, + 0.632018736f, -0.774953107f, + 0.630829230f, -0.775921699f, + 0.629638239f, -0.776888466f, + 0.628445767f, -0.777853404f, + 0.627251815f, -0.778816512f, + 0.626056388f, -0.779777788f, + 0.624859488f, -0.780737229f, + 0.623661118f, -0.781694832f, + 0.622461279f, -0.782650596f, + 0.621259977f, -0.783604519f, + 0.620057212f, -0.784556597f, + 0.618852988f, -0.785506830f, + 0.617647308f, -0.786455214f, + 0.616440175f, -0.787401747f, + 0.615231591f, -0.788346428f, + 0.614021559f, -0.789289253f, + 0.612810082f, -0.790230221f, + 0.611597164f, -0.791169330f, + 0.610382806f, -0.792106577f, + 0.609167012f, -0.793041960f, + 0.607949785f, -0.793975478f, + 0.606731127f, -0.794907126f, + 0.605511041f, -0.795836905f, + 0.604289531f, -0.796764810f, + 0.603066599f, -0.797690841f, + 0.601842247f, -0.798614995f, + 0.600616479f, -0.799537269f, + 0.599389298f, -0.800457662f, + 0.598160707f, -0.801376172f, + 0.596930708f, -0.802292796f, + 0.595699304f, -0.803207531f, + 0.594466499f, -0.804120377f, + 0.593232295f, -0.805031331f, + 0.591996695f, -0.805940391f, + 0.590759702f, -0.806847554f, + 0.589521319f, -0.807752818f, + 0.588281548f, -0.808656182f, + 0.587040394f, -0.809557642f, + 0.585797857f, -0.810457198f, + 0.584553943f, -0.811354847f, + 0.583308653f, -0.812250587f, + 0.582061990f, -0.813144415f, + 0.580813958f, -0.814036330f, + 0.579564559f, -0.814926329f, + 0.578313796f, -0.815814411f, + 0.577061673f, -0.816700573f, + 0.575808191f, -0.817584813f, + 0.574553355f, -0.818467130f, + 0.573297167f, -0.819347520f, + 0.572039629f, -0.820225983f, + 0.570780746f, -0.821102515f, + 0.569520519f, -0.821977115f, + 0.568258953f, -0.822849781f, + 0.566996049f, -0.823720511f, + 0.565731811f, -0.824589303f, + 0.564466242f, -0.825456154f, + 0.563199344f, -0.826321063f, + 0.561931121f, -0.827184027f, + 0.560661576f, -0.828045045f, + 0.559390712f, -0.828904115f, + 0.558118531f, -0.829761234f, + 0.556845037f, -0.830616400f, + 0.555570233f, -0.831469612f, + 0.554294121f, -0.832320868f, + 0.553016706f, -0.833170165f, + 0.551737988f, -0.834017501f, + 0.550457973f, -0.834862875f, + 0.549176662f, -0.835706284f, + 0.547894059f, -0.836547727f, + 0.546610167f, -0.837387202f, + 0.545324988f, -0.838224706f, + 0.544038527f, -0.839060237f, + 0.542750785f, -0.839893794f, + 0.541461766f, -0.840725375f, + 0.540171473f, -0.841554977f, + 0.538879909f, -0.842382600f, + 0.537587076f, -0.843208240f, + 0.536292979f, -0.844031895f, + 0.534997620f, -0.844853565f, + 0.533701002f, -0.845673247f, + 0.532403128f, -0.846490939f, + 0.531104001f, -0.847306639f, + 0.529803625f, -0.848120345f, + 0.528502002f, -0.848932055f, + 0.527199135f, -0.849741768f, + 0.525895027f, -0.850549481f, + 0.524589683f, -0.851355193f, + 0.523283103f, -0.852158902f, + 0.521975293f, -0.852960605f, + 0.520666254f, -0.853760301f, + 0.519355990f, -0.854557988f, + 0.518044504f, -0.855353665f, + 0.516731799f, -0.856147328f, + 0.515417878f, -0.856938977f, + 0.514102744f, -0.857728610f, + 0.512786401f, -0.858516224f, + 0.511468850f, -0.859301818f, + 0.510150097f, -0.860085390f, + 0.508830143f, -0.860866939f, + 0.507508991f, -0.861646461f, + 0.506186645f, -0.862423956f, + 0.504863109f, -0.863199422f, + 0.503538384f, -0.863972856f, + 0.502212474f, -0.864744258f, + 0.500885383f, -0.865513624f, + 0.499557113f, -0.866280954f, + 0.498227667f, -0.867046246f, + 0.496897049f, -0.867809497f, + 0.495565262f, -0.868570706f, + 0.494232309f, -0.869329871f, + 0.492898192f, -0.870086991f, + 0.491562916f, -0.870842063f, + 0.490226483f, -0.871595087f, + 0.488888897f, -0.872346059f, + 0.487550160f, -0.873094978f, + 0.486210276f, -0.873841843f, + 0.484869248f, -0.874586652f, + 0.483527079f, -0.875329403f, + 0.482183772f, -0.876070094f, + 0.480839331f, -0.876808724f, + 0.479493758f, -0.877545290f, + 0.478147056f, -0.878279792f, + 0.476799230f, -0.879012226f, + 0.475450282f, -0.879742593f, + 0.474100215f, -0.880470889f, + 0.472749032f, -0.881197113f, + 0.471396737f, -0.881921264f, + 0.470043332f, -0.882643340f, + 0.468688822f, -0.883363339f, + 0.467333209f, -0.884081259f, + 0.465976496f, -0.884797098f, + 0.464618686f, -0.885510856f, + 0.463259784f, -0.886222530f, + 0.461899791f, -0.886932119f, + 0.460538711f, -0.887639620f, + 0.459176548f, -0.888345033f, + 0.457813304f, -0.889048356f, + 0.456448982f, -0.889749586f, + 0.455083587f, -0.890448723f, + 0.453717121f, -0.891145765f, + 0.452349587f, -0.891840709f, + 0.450980989f, -0.892533555f, + 0.449611330f, -0.893224301f, + 0.448240612f, -0.893912945f, + 0.446868840f, -0.894599486f, + 0.445496017f, -0.895283921f, + 0.444122145f, -0.895966250f, + 0.442747228f, -0.896646470f, + 0.441371269f, -0.897324581f, + 0.439994271f, -0.898000580f, + 0.438616239f, -0.898674466f, + 0.437237174f, -0.899346237f, + 0.435857080f, -0.900015892f, + 0.434475961f, -0.900683429f, + 0.433093819f, -0.901348847f, + 0.431710658f, -0.902012144f, + 0.430326481f, -0.902673318f, + 0.428941292f, -0.903332368f, + 0.427555093f, -0.903989293f, + 0.426167889f, -0.904644091f, + 0.424779681f, -0.905296759f, + 0.423390474f, -0.905947298f, + 0.422000271f, -0.906595705f, + 0.420609074f, -0.907241978f, + 0.419216888f, -0.907886116f, + 0.417823716f, -0.908528119f, + 0.416429560f, -0.909167983f, + 0.415034424f, -0.909805708f, + 0.413638312f, -0.910441292f, + 0.412241227f, -0.911074734f, + 0.410843171f, -0.911706032f, + 0.409444149f, -0.912335185f, + 0.408044163f, -0.912962190f, + 0.406643217f, -0.913587048f, + 0.405241314f, -0.914209756f, + 0.403838458f, -0.914830312f, + 0.402434651f, -0.915448716f, + 0.401029897f, -0.916064966f, + 0.399624200f, -0.916679060f, + 0.398217562f, -0.917290997f, + 0.396809987f, -0.917900776f, + 0.395401479f, -0.918508394f, + 0.393992040f, -0.919113852f, + 0.392581674f, -0.919717146f, + 0.391170384f, -0.920318277f, + 0.389758174f, -0.920917242f, + 0.388345047f, -0.921514039f, + 0.386931006f, -0.922108669f, + 0.385516054f, -0.922701128f, + 0.384100195f, -0.923291417f, + 0.382683432f, -0.923879533f, + 0.381265769f, -0.924465474f, + 0.379847209f, -0.925049241f, + 0.378427755f, -0.925630831f, + 0.377007410f, -0.926210242f, + 0.375586178f, -0.926787474f, + 0.374164063f, -0.927362526f, + 0.372741067f, -0.927935395f, + 0.371317194f, -0.928506080f, + 0.369892447f, -0.929074581f, + 0.368466830f, -0.929640896f, + 0.367040346f, -0.930205023f, + 0.365612998f, -0.930766961f, + 0.364184790f, -0.931326709f, + 0.362755724f, -0.931884266f, + 0.361325806f, -0.932439629f, + 0.359895037f, -0.932992799f, + 0.358463421f, -0.933543773f, + 0.357030961f, -0.934092550f, + 0.355597662f, -0.934639130f, + 0.354163525f, -0.935183510f, + 0.352728556f, -0.935725689f, + 0.351292756f, -0.936265667f, + 0.349856130f, -0.936803442f, + 0.348418680f, -0.937339012f, + 0.346980411f, -0.937872376f, + 0.345541325f, -0.938403534f, + 0.344101426f, -0.938932484f, + 0.342660717f, -0.939459224f, + 0.341219202f, -0.939983753f, + 0.339776884f, -0.940506071f, + 0.338333767f, -0.941026175f, + 0.336889853f, -0.941544065f, + 0.335445147f, -0.942059740f, + 0.333999651f, -0.942573198f, + 0.332553370f, -0.943084437f, + 0.331106306f, -0.943593458f, + 0.329658463f, -0.944100258f, + 0.328209844f, -0.944604837f, + 0.326760452f, -0.945107193f, + 0.325310292f, -0.945607325f, + 0.323859367f, -0.946105232f, + 0.322407679f, -0.946600913f, + 0.320955232f, -0.947094366f, + 0.319502031f, -0.947585591f, + 0.318048077f, -0.948074586f, + 0.316593376f, -0.948561350f, + 0.315137929f, -0.949045882f, + 0.313681740f, -0.949528181f, + 0.312224814f, -0.950008245f, + 0.310767153f, -0.950486074f, + 0.309308760f, -0.950961666f, + 0.307849640f, -0.951435021f, + 0.306389795f, -0.951906137f, + 0.304929230f, -0.952375013f, + 0.303467947f, -0.952841648f, + 0.302005949f, -0.953306040f, + 0.300543241f, -0.953768190f, + 0.299079826f, -0.954228095f, + 0.297615707f, -0.954685755f, + 0.296150888f, -0.955141168f, + 0.294685372f, -0.955594334f, + 0.293219163f, -0.956045251f, + 0.291752263f, -0.956493919f, + 0.290284677f, -0.956940336f, + 0.288816408f, -0.957384501f, + 0.287347460f, -0.957826413f, + 0.285877835f, -0.958266071f, + 0.284407537f, -0.958703475f, + 0.282936570f, -0.959138622f, + 0.281464938f, -0.959571513f, + 0.279992643f, -0.960002146f, + 0.278519689f, -0.960430519f, + 0.277046080f, -0.960856633f, + 0.275571819f, -0.961280486f, + 0.274096910f, -0.961702077f, + 0.272621355f, -0.962121404f, + 0.271145160f, -0.962538468f, + 0.269668326f, -0.962953267f, + 0.268190857f, -0.963365800f, + 0.266712757f, -0.963776066f, + 0.265234030f, -0.964184064f, + 0.263754679f, -0.964589793f, + 0.262274707f, -0.964993253f, + 0.260794118f, -0.965394442f, + 0.259312915f, -0.965793359f, + 0.257831102f, -0.966190003f, + 0.256348682f, -0.966584374f, + 0.254865660f, -0.966976471f, + 0.253382037f, -0.967366292f, + 0.251897818f, -0.967753837f, + 0.250413007f, -0.968139105f, + 0.248927606f, -0.968522094f, + 0.247441619f, -0.968902805f, + 0.245955050f, -0.969281235f, + 0.244467903f, -0.969657385f, + 0.242980180f, -0.970031253f, + 0.241491885f, -0.970402839f, + 0.240003022f, -0.970772141f, + 0.238513595f, -0.971139158f, + 0.237023606f, -0.971503891f, + 0.235533059f, -0.971866337f, + 0.234041959f, -0.972226497f, + 0.232550307f, -0.972584369f, + 0.231058108f, -0.972939952f, + 0.229565366f, -0.973293246f, + 0.228072083f, -0.973644250f, + 0.226578264f, -0.973992962f, + 0.225083911f, -0.974339383f, + 0.223589029f, -0.974683511f, + 0.222093621f, -0.975025345f, + 0.220597690f, -0.975364885f, + 0.219101240f, -0.975702130f, + 0.217604275f, -0.976037079f, + 0.216106797f, -0.976369731f, + 0.214608811f, -0.976700086f, + 0.213110320f, -0.977028143f, + 0.211611327f, -0.977353900f, + 0.210111837f, -0.977677358f, + 0.208611852f, -0.977998515f, + 0.207111376f, -0.978317371f, + 0.205610413f, -0.978633924f, + 0.204108966f, -0.978948175f, + 0.202607039f, -0.979260123f, + 0.201104635f, -0.979569766f, + 0.199601758f, -0.979877104f, + 0.198098411f, -0.980182136f, + 0.196594598f, -0.980484862f, + 0.195090322f, -0.980785280f, + 0.193585587f, -0.981083391f, + 0.192080397f, -0.981379193f, + 0.190574755f, -0.981672686f, + 0.189068664f, -0.981963869f, + 0.187562129f, -0.982252741f, + 0.186055152f, -0.982539302f, + 0.184547737f, -0.982823551f, + 0.183039888f, -0.983105487f, + 0.181531608f, -0.983385110f, + 0.180022901f, -0.983662419f, + 0.178513771f, -0.983937413f, + 0.177004220f, -0.984210092f, + 0.175494253f, -0.984480455f, + 0.173983873f, -0.984748502f, + 0.172473084f, -0.985014231f, + 0.170961889f, -0.985277642f, + 0.169450291f, -0.985538735f, + 0.167938295f, -0.985797509f, + 0.166425904f, -0.986053963f, + 0.164913120f, -0.986308097f, + 0.163399949f, -0.986559910f, + 0.161886394f, -0.986809402f, + 0.160372457f, -0.987056571f, + 0.158858143f, -0.987301418f, + 0.157343456f, -0.987543942f, + 0.155828398f, -0.987784142f, + 0.154312973f, -0.988022017f, + 0.152797185f, -0.988257568f, + 0.151281038f, -0.988490793f, + 0.149764535f, -0.988721692f, + 0.148247679f, -0.988950265f, + 0.146730474f, -0.989176510f, + 0.145212925f, -0.989400428f, + 0.143695033f, -0.989622017f, + 0.142176804f, -0.989841278f, + 0.140658239f, -0.990058210f, + 0.139139344f, -0.990272812f, + 0.137620122f, -0.990485084f, + 0.136100575f, -0.990695025f, + 0.134580709f, -0.990902635f, + 0.133060525f, -0.991107914f, + 0.131540029f, -0.991310860f, + 0.130019223f, -0.991511473f, + 0.128498111f, -0.991709754f, + 0.126976696f, -0.991905700f, + 0.125454983f, -0.992099313f, + 0.123932975f, -0.992290591f, + 0.122410675f, -0.992479535f, + 0.120888087f, -0.992666142f, + 0.119365215f, -0.992850414f, + 0.117842062f, -0.993032350f, + 0.116318631f, -0.993211949f, + 0.114794927f, -0.993389211f, + 0.113270952f, -0.993564136f, + 0.111746711f, -0.993736722f, + 0.110222207f, -0.993906970f, + 0.108697444f, -0.994074879f, + 0.107172425f, -0.994240449f, + 0.105647154f, -0.994403680f, + 0.104121634f, -0.994564571f, + 0.102595869f, -0.994723121f, + 0.101069863f, -0.994879331f, + 0.099543619f, -0.995033199f, + 0.098017140f, -0.995184727f, + 0.096490431f, -0.995333912f, + 0.094963495f, -0.995480755f, + 0.093436336f, -0.995625256f, + 0.091908956f, -0.995767414f, + 0.090381361f, -0.995907229f, + 0.088853553f, -0.996044701f, + 0.087325535f, -0.996179829f, + 0.085797312f, -0.996312612f, + 0.084268888f, -0.996443051f, + 0.082740265f, -0.996571146f, + 0.081211447f, -0.996696895f, + 0.079682438f, -0.996820299f, + 0.078153242f, -0.996941358f, + 0.076623861f, -0.997060070f, + 0.075094301f, -0.997176437f, + 0.073564564f, -0.997290457f, + 0.072034653f, -0.997402130f, + 0.070504573f, -0.997511456f, + 0.068974328f, -0.997618435f, + 0.067443920f, -0.997723067f, + 0.065913353f, -0.997825350f, + 0.064382631f, -0.997925286f, + 0.062851758f, -0.998022874f, + 0.061320736f, -0.998118113f, + 0.059789571f, -0.998211003f, + 0.058258265f, -0.998301545f, + 0.056726821f, -0.998389737f, + 0.055195244f, -0.998475581f, + 0.053663538f, -0.998559074f, + 0.052131705f, -0.998640218f, + 0.050599749f, -0.998719012f, + 0.049067674f, -0.998795456f, + 0.047535484f, -0.998869550f, + 0.046003182f, -0.998941293f, + 0.044470772f, -0.999010686f, + 0.042938257f, -0.999077728f, + 0.041405641f, -0.999142419f, + 0.039872928f, -0.999204759f, + 0.038340120f, -0.999264747f, + 0.036807223f, -0.999322385f, + 0.035274239f, -0.999377670f, + 0.033741172f, -0.999430605f, + 0.032208025f, -0.999481187f, + 0.030674803f, -0.999529418f, + 0.029141509f, -0.999575296f, + 0.027608146f, -0.999618822f, + 0.026074718f, -0.999659997f, + 0.024541229f, -0.999698819f, + 0.023007681f, -0.999735288f, + 0.021474080f, -0.999769405f, + 0.019940429f, -0.999801170f, + 0.018406730f, -0.999830582f, + 0.016872988f, -0.999857641f, + 0.015339206f, -0.999882347f, + 0.013805389f, -0.999904701f, + 0.012271538f, -0.999924702f, + 0.010737659f, -0.999942350f, + 0.009203755f, -0.999957645f, + 0.007669829f, -0.999970586f, + 0.006135885f, -0.999981175f, + 0.004601926f, -0.999989411f, + 0.003067957f, -0.999995294f, + 0.001533980f, -0.999998823f +}; + + +/** + * \par + * Example code for the generation of the floating-point sine table: + *
+ * tableSize = 512;
+ * for(n = 0; n < (tableSize + 1); n++)
+ * {
+ *	sinTable[n]=sin(2*pi*n/tableSize);
+ * }
+ * \par + * where pi value is 3.14159265358979 + */ + +const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1] = { + 0.00000000f, 0.01227154f, 0.02454123f, 0.03680722f, 0.04906767f, 0.06132074f, + 0.07356456f, 0.08579731f, 0.09801714f, 0.11022221f, 0.12241068f, 0.13458071f, + 0.14673047f, 0.15885814f, 0.17096189f, 0.18303989f, 0.19509032f, 0.20711138f, + 0.21910124f, 0.23105811f, 0.24298018f, 0.25486566f, 0.26671276f, 0.27851969f, + 0.29028468f, 0.30200595f, 0.31368174f, 0.32531029f, 0.33688985f, 0.34841868f, + 0.35989504f, 0.37131719f, 0.38268343f, 0.39399204f, 0.40524131f, 0.41642956f, + 0.42755509f, 0.43861624f, 0.44961133f, 0.46053871f, 0.47139674f, 0.48218377f, + 0.49289819f, 0.50353838f, 0.51410274f, 0.52458968f, 0.53499762f, 0.54532499f, + 0.55557023f, 0.56573181f, 0.57580819f, 0.58579786f, 0.59569930f, 0.60551104f, + 0.61523159f, 0.62485949f, 0.63439328f, 0.64383154f, 0.65317284f, 0.66241578f, + 0.67155895f, 0.68060100f, 0.68954054f, 0.69837625f, 0.70710678f, 0.71573083f, + 0.72424708f, 0.73265427f, 0.74095113f, 0.74913639f, 0.75720885f, 0.76516727f, + 0.77301045f, 0.78073723f, 0.78834643f, 0.79583690f, 0.80320753f, 0.81045720f, + 0.81758481f, 0.82458930f, 0.83146961f, 0.83822471f, 0.84485357f, 0.85135519f, + 0.85772861f, 0.86397286f, 0.87008699f, 0.87607009f, 0.88192126f, 0.88763962f, + 0.89322430f, 0.89867447f, 0.90398929f, 0.90916798f, 0.91420976f, 0.91911385f, + 0.92387953f, 0.92850608f, 0.93299280f, 0.93733901f, 0.94154407f, 0.94560733f, + 0.94952818f, 0.95330604f, 0.95694034f, 0.96043052f, 0.96377607f, 0.96697647f, + 0.97003125f, 0.97293995f, 0.97570213f, 0.97831737f, 0.98078528f, 0.98310549f, + 0.98527764f, 0.98730142f, 0.98917651f, 0.99090264f, 0.99247953f, 0.99390697f, + 0.99518473f, 0.99631261f, 0.99729046f, 0.99811811f, 0.99879546f, 0.99932238f, + 0.99969882f, 0.99992470f, 1.00000000f, 0.99992470f, 0.99969882f, 0.99932238f, + 0.99879546f, 0.99811811f, 0.99729046f, 0.99631261f, 0.99518473f, 0.99390697f, + 0.99247953f, 0.99090264f, 0.98917651f, 0.98730142f, 0.98527764f, 0.98310549f, + 0.98078528f, 0.97831737f, 0.97570213f, 0.97293995f, 0.97003125f, 0.96697647f, + 0.96377607f, 0.96043052f, 0.95694034f, 0.95330604f, 0.94952818f, 0.94560733f, + 0.94154407f, 0.93733901f, 0.93299280f, 0.92850608f, 0.92387953f, 0.91911385f, + 0.91420976f, 0.90916798f, 0.90398929f, 0.89867447f, 0.89322430f, 0.88763962f, + 0.88192126f, 0.87607009f, 0.87008699f, 0.86397286f, 0.85772861f, 0.85135519f, + 0.84485357f, 0.83822471f, 0.83146961f, 0.82458930f, 0.81758481f, 0.81045720f, + 0.80320753f, 0.79583690f, 0.78834643f, 0.78073723f, 0.77301045f, 0.76516727f, + 0.75720885f, 0.74913639f, 0.74095113f, 0.73265427f, 0.72424708f, 0.71573083f, + 0.70710678f, 0.69837625f, 0.68954054f, 0.68060100f, 0.67155895f, 0.66241578f, + 0.65317284f, 0.64383154f, 0.63439328f, 0.62485949f, 0.61523159f, 0.60551104f, + 0.59569930f, 0.58579786f, 0.57580819f, 0.56573181f, 0.55557023f, 0.54532499f, + 0.53499762f, 0.52458968f, 0.51410274f, 0.50353838f, 0.49289819f, 0.48218377f, + 0.47139674f, 0.46053871f, 0.44961133f, 0.43861624f, 0.42755509f, 0.41642956f, + 0.40524131f, 0.39399204f, 0.38268343f, 0.37131719f, 0.35989504f, 0.34841868f, + 0.33688985f, 0.32531029f, 0.31368174f, 0.30200595f, 0.29028468f, 0.27851969f, + 0.26671276f, 0.25486566f, 0.24298018f, 0.23105811f, 0.21910124f, 0.20711138f, + 0.19509032f, 0.18303989f, 0.17096189f, 0.15885814f, 0.14673047f, 0.13458071f, + 0.12241068f, 0.11022221f, 0.09801714f, 0.08579731f, 0.07356456f, 0.06132074f, + 0.04906767f, 0.03680722f, 0.02454123f, 0.01227154f, 0.00000000f, -0.01227154f, + -0.02454123f, -0.03680722f, -0.04906767f, -0.06132074f, -0.07356456f, + -0.08579731f, -0.09801714f, -0.11022221f, -0.12241068f, -0.13458071f, + -0.14673047f, -0.15885814f, -0.17096189f, -0.18303989f, -0.19509032f, + -0.20711138f, -0.21910124f, -0.23105811f, -0.24298018f, -0.25486566f, + -0.26671276f, -0.27851969f, -0.29028468f, -0.30200595f, -0.31368174f, + -0.32531029f, -0.33688985f, -0.34841868f, -0.35989504f, -0.37131719f, + -0.38268343f, -0.39399204f, -0.40524131f, -0.41642956f, -0.42755509f, + -0.43861624f, -0.44961133f, -0.46053871f, -0.47139674f, -0.48218377f, + -0.49289819f, -0.50353838f, -0.51410274f, -0.52458968f, -0.53499762f, + -0.54532499f, -0.55557023f, -0.56573181f, -0.57580819f, -0.58579786f, + -0.59569930f, -0.60551104f, -0.61523159f, -0.62485949f, -0.63439328f, + -0.64383154f, -0.65317284f, -0.66241578f, -0.67155895f, -0.68060100f, + -0.68954054f, -0.69837625f, -0.70710678f, -0.71573083f, -0.72424708f, + -0.73265427f, -0.74095113f, -0.74913639f, -0.75720885f, -0.76516727f, + -0.77301045f, -0.78073723f, -0.78834643f, -0.79583690f, -0.80320753f, + -0.81045720f, -0.81758481f, -0.82458930f, -0.83146961f, -0.83822471f, + -0.84485357f, -0.85135519f, -0.85772861f, -0.86397286f, -0.87008699f, + -0.87607009f, -0.88192126f, -0.88763962f, -0.89322430f, -0.89867447f, + -0.90398929f, -0.90916798f, -0.91420976f, -0.91911385f, -0.92387953f, + -0.92850608f, -0.93299280f, -0.93733901f, -0.94154407f, -0.94560733f, + -0.94952818f, -0.95330604f, -0.95694034f, -0.96043052f, -0.96377607f, + -0.96697647f, -0.97003125f, -0.97293995f, -0.97570213f, -0.97831737f, + -0.98078528f, -0.98310549f, -0.98527764f, -0.98730142f, -0.98917651f, + -0.99090264f, -0.99247953f, -0.99390697f, -0.99518473f, -0.99631261f, + -0.99729046f, -0.99811811f, -0.99879546f, -0.99932238f, -0.99969882f, + -0.99992470f, -1.00000000f, -0.99992470f, -0.99969882f, -0.99932238f, + -0.99879546f, -0.99811811f, -0.99729046f, -0.99631261f, -0.99518473f, + -0.99390697f, -0.99247953f, -0.99090264f, -0.98917651f, -0.98730142f, + -0.98527764f, -0.98310549f, -0.98078528f, -0.97831737f, -0.97570213f, + -0.97293995f, -0.97003125f, -0.96697647f, -0.96377607f, -0.96043052f, + -0.95694034f, -0.95330604f, -0.94952818f, -0.94560733f, -0.94154407f, + -0.93733901f, -0.93299280f, -0.92850608f, -0.92387953f, -0.91911385f, + -0.91420976f, -0.90916798f, -0.90398929f, -0.89867447f, -0.89322430f, + -0.88763962f, -0.88192126f, -0.87607009f, -0.87008699f, -0.86397286f, + -0.85772861f, -0.85135519f, -0.84485357f, -0.83822471f, -0.83146961f, + -0.82458930f, -0.81758481f, -0.81045720f, -0.80320753f, -0.79583690f, + -0.78834643f, -0.78073723f, -0.77301045f, -0.76516727f, -0.75720885f, + -0.74913639f, -0.74095113f, -0.73265427f, -0.72424708f, -0.71573083f, + -0.70710678f, -0.69837625f, -0.68954054f, -0.68060100f, -0.67155895f, + -0.66241578f, -0.65317284f, -0.64383154f, -0.63439328f, -0.62485949f, + -0.61523159f, -0.60551104f, -0.59569930f, -0.58579786f, -0.57580819f, + -0.56573181f, -0.55557023f, -0.54532499f, -0.53499762f, -0.52458968f, + -0.51410274f, -0.50353838f, -0.49289819f, -0.48218377f, -0.47139674f, + -0.46053871f, -0.44961133f, -0.43861624f, -0.42755509f, -0.41642956f, + -0.40524131f, -0.39399204f, -0.38268343f, -0.37131719f, -0.35989504f, + -0.34841868f, -0.33688985f, -0.32531029f, -0.31368174f, -0.30200595f, + -0.29028468f, -0.27851969f, -0.26671276f, -0.25486566f, -0.24298018f, + -0.23105811f, -0.21910124f, -0.20711138f, -0.19509032f, -0.18303989f, + -0.17096189f, -0.15885814f, -0.14673047f, -0.13458071f, -0.12241068f, + -0.11022221f, -0.09801714f, -0.08579731f, -0.07356456f, -0.06132074f, + -0.04906767f, -0.03680722f, -0.02454123f, -0.01227154f, -0.00000000f +}; + +/** + * \par + * Table values are in Q31 (1.31 fixed-point format) and generation is done in + * three steps. First, generate sin values in floating point: + *
+ * tableSize = 512;
+ * for(n = 0; n < (tableSize + 1); n++)
+ * {
+ *	sinTable[n]= sin(2*pi*n/tableSize);
+ * } 
+ * where pi value is 3.14159265358979 + * \par + * Second, convert floating-point to Q31 (Fixed point): + * (sinTable[i] * pow(2, 31)) + * \par + * Finally, round to the nearest integer value: + * sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5); + */ +const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1] = { + 0L, 26352928L, 52701887L, 79042909L, 105372028L, 131685278L, 157978697L, + 184248325L, 210490206L, 236700388L, 262874923L, 289009871L, 315101295L, + 341145265L, 367137861L, 393075166L, 418953276L, 444768294L, 470516330L, + 496193509L, 521795963L, 547319836L, 572761285L, 598116479L, 623381598L, + 648552838L, 673626408L, 698598533L, 723465451L, 748223418L, 772868706L, + 797397602L, 821806413L, 846091463L, 870249095L, 894275671L, 918167572L, + 941921200L, 965532978L, 988999351L, 1012316784L, 1035481766L, 1058490808L, + 1081340445L, 1104027237L, 1126547765L, 1148898640L, 1171076495L, 1193077991L, + 1214899813L, 1236538675L, 1257991320L, 1279254516L, 1300325060L, 1321199781L, + 1341875533L, 1362349204L, 1382617710L, 1402678000L, 1422527051L, 1442161874L, + 1461579514L, 1480777044L, 1499751576L, 1518500250L, 1537020244L, 1555308768L, + 1573363068L, 1591180426L, 1608758157L, 1626093616L, 1643184191L, 1660027308L, + 1676620432L, 1692961062L, 1709046739L, 1724875040L, 1740443581L, 1755750017L, + 1770792044L, 1785567396L, 1800073849L, 1814309216L, 1828271356L, 1841958164L, + 1855367581L, 1868497586L, 1881346202L, 1893911494L, 1906191570L, 1918184581L, + 1929888720L, 1941302225L, 1952423377L, 1963250501L, 1973781967L, 1984016189L, + 1993951625L, 2003586779L, 2012920201L, 2021950484L, 2030676269L, 2039096241L, + 2047209133L, 2055013723L, 2062508835L, 2069693342L, 2076566160L, 2083126254L, + 2089372638L, 2095304370L, 2100920556L, 2106220352L, 2111202959L, 2115867626L, + 2120213651L, 2124240380L, 2127947206L, 2131333572L, 2134398966L, 2137142927L, + 2139565043L, 2141664948L, 2143442326L, 2144896910L, 2146028480L, 2146836866L, + 2147321946L, 2147483647L, 2147321946L, 2146836866L, 2146028480L, 2144896910L, + 2143442326L, 2141664948L, 2139565043L, 2137142927L, 2134398966L, 2131333572L, + 2127947206L, 2124240380L, 2120213651L, 2115867626L, 2111202959L, 2106220352L, + 2100920556L, 2095304370L, 2089372638L, 2083126254L, 2076566160L, 2069693342L, + 2062508835L, 2055013723L, 2047209133L, 2039096241L, 2030676269L, 2021950484L, + 2012920201L, 2003586779L, 1993951625L, 1984016189L, 1973781967L, 1963250501L, + 1952423377L, 1941302225L, 1929888720L, 1918184581L, 1906191570L, 1893911494L, + 1881346202L, 1868497586L, 1855367581L, 1841958164L, 1828271356L, 1814309216L, + 1800073849L, 1785567396L, 1770792044L, 1755750017L, 1740443581L, 1724875040L, + 1709046739L, 1692961062L, 1676620432L, 1660027308L, 1643184191L, 1626093616L, + 1608758157L, 1591180426L, 1573363068L, 1555308768L, 1537020244L, 1518500250L, + 1499751576L, 1480777044L, 1461579514L, 1442161874L, 1422527051L, 1402678000L, + 1382617710L, 1362349204L, 1341875533L, 1321199781L, 1300325060L, 1279254516L, + 1257991320L, 1236538675L, 1214899813L, 1193077991L, 1171076495L, 1148898640L, + 1126547765L, 1104027237L, 1081340445L, 1058490808L, 1035481766L, 1012316784L, + 988999351L, 965532978L, 941921200L, 918167572L, 894275671L, 870249095L, + 846091463L, 821806413L, 797397602L, 772868706L, 748223418L, 723465451L, + 698598533L, 673626408L, 648552838L, 623381598L, 598116479L, 572761285L, + 547319836L, 521795963L, 496193509L, 470516330L, 444768294L, 418953276L, + 393075166L, 367137861L, 341145265L, 315101295L, 289009871L, 262874923L, + 236700388L, 210490206L, 184248325L, 157978697L, 131685278L, 105372028L, + 79042909L, 52701887L, 26352928L, 0L, -26352928L, -52701887L, -79042909L, + -105372028L, -131685278L, -157978697L, -184248325L, -210490206L, -236700388L, + -262874923L, -289009871L, -315101295L, -341145265L, -367137861L, -393075166L, + -418953276L, -444768294L, -470516330L, -496193509L, -521795963L, -547319836L, + -572761285L, -598116479L, -623381598L, -648552838L, -673626408L, -698598533L, + -723465451L, -748223418L, -772868706L, -797397602L, -821806413L, -846091463L, + -870249095L, -894275671L, -918167572L, -941921200L, -965532978L, -988999351L, + -1012316784L, -1035481766L, -1058490808L, -1081340445L, -1104027237L, + -1126547765L, -1148898640L, -1171076495L, -1193077991L, -1214899813L, + -1236538675L, -1257991320L, -1279254516L, -1300325060L, -1321199781L, + -1341875533L, -1362349204L, -1382617710L, -1402678000L, -1422527051L, + -1442161874L, -1461579514L, -1480777044L, -1499751576L, -1518500250L, + -1537020244L, -1555308768L, -1573363068L, -1591180426L, -1608758157L, + -1626093616L, -1643184191L, -1660027308L, -1676620432L, -1692961062L, + -1709046739L, -1724875040L, -1740443581L, -1755750017L, -1770792044L, + -1785567396L, -1800073849L, -1814309216L, -1828271356L, -1841958164L, + -1855367581L, -1868497586L, -1881346202L, -1893911494L, -1906191570L, + -1918184581L, -1929888720L, -1941302225L, -1952423377L, -1963250501L, + -1973781967L, -1984016189L, -1993951625L, -2003586779L, -2012920201L, + -2021950484L, -2030676269L, -2039096241L, -2047209133L, -2055013723L, + -2062508835L, -2069693342L, -2076566160L, -2083126254L, -2089372638L, + -2095304370L, -2100920556L, -2106220352L, -2111202959L, -2115867626L, + -2120213651L, -2124240380L, -2127947206L, -2131333572L, -2134398966L, + -2137142927L, -2139565043L, -2141664948L, -2143442326L, -2144896910L, + -2146028480L, -2146836866L, -2147321946L, (q31_t)0x80000000, -2147321946L, + -2146836866L, -2146028480L, -2144896910L, -2143442326L, -2141664948L, + -2139565043L, -2137142927L, -2134398966L, -2131333572L, -2127947206L, + -2124240380L, -2120213651L, -2115867626L, -2111202959L, -2106220352L, + -2100920556L, -2095304370L, -2089372638L, -2083126254L, -2076566160L, + -2069693342L, -2062508835L, -2055013723L, -2047209133L, -2039096241L, + -2030676269L, -2021950484L, -2012920201L, -2003586779L, -1993951625L, + -1984016189L, -1973781967L, -1963250501L, -1952423377L, -1941302225L, + -1929888720L, -1918184581L, -1906191570L, -1893911494L, -1881346202L, + -1868497586L, -1855367581L, -1841958164L, -1828271356L, -1814309216L, + -1800073849L, -1785567396L, -1770792044L, -1755750017L, -1740443581L, + -1724875040L, -1709046739L, -1692961062L, -1676620432L, -1660027308L, + -1643184191L, -1626093616L, -1608758157L, -1591180426L, -1573363068L, + -1555308768L, -1537020244L, -1518500250L, -1499751576L, -1480777044L, + -1461579514L, -1442161874L, -1422527051L, -1402678000L, -1382617710L, + -1362349204L, -1341875533L, -1321199781L, -1300325060L, -1279254516L, + -1257991320L, -1236538675L, -1214899813L, -1193077991L, -1171076495L, + -1148898640L, -1126547765L, -1104027237L, -1081340445L, -1058490808L, + -1035481766L, -1012316784L, -988999351L, -965532978L, -941921200L, + -918167572L, -894275671L, -870249095L, -846091463L, -821806413L, -797397602L, + -772868706L, -748223418L, -723465451L, -698598533L, -673626408L, -648552838L, + -623381598L, -598116479L, -572761285L, -547319836L, -521795963L, -496193509L, + -470516330L, -444768294L, -418953276L, -393075166L, -367137861L, -341145265L, + -315101295L, -289009871L, -262874923L, -236700388L, -210490206L, -184248325L, + -157978697L, -131685278L, -105372028L, -79042909L, -52701887L, -26352928L, 0 +}; + +/** + * \par + * Table values are in Q15 (1.15 fixed-point format) and generation is done in + * three steps. First, generate sin values in floating point: + *
+ * tableSize = 512;
+ * for(n = 0; n < (tableSize + 1); n++)
+ * {
+ *	sinTable[n]= sin(2*pi*n/tableSize);
+ * } 
+ * where pi value is 3.14159265358979 + * \par + * Second, convert floating-point to Q15 (Fixed point): + * (sinTable[i] * pow(2, 15)) + * \par + * Finally, round to the nearest integer value: + * sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5); + */ +const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1] = { + 0, 402, 804, 1206, 1608, 2009, 2411, 2811, 3212, 3612, 4011, 4410, 4808, + 5205, 5602, 5998, 6393, 6787, 7180, 7571, 7962, 8351, 8740, 9127, 9512, + 9896, 10279, 10660, 11039, 11417, 11793, 12167, 12540, 12910, 13279, + 13646, 14010, 14373, 14733, 15091, 15447, 15800, 16151, 16500, 16846, + 17190, 17531, 17869, 18205, 18538, 18868, 19195, 19520, 19841, 20160, + 20475, 20788, 21097, 21403, 21706, 22006, 22302, 22595, 22884, 23170, + 23453, 23732, 24008, 24279, 24548, 24812, 25073, 25330, 25583, 25833, + 26078, 26320, 26557, 26791, 27020, 27246, 27467, 27684, 27897, 28106, + 28311, 28511, 28707, 28899, 29086, 29269, 29448, 29622, 29792, 29957, + 30118, 30274, 30425, 30572, 30715, 30853, 30986, 31114, 31238, 31357, + 31471, 31581, 31686, 31786, 31881, 31972, 32058, 32138, 32214, 32286, + 32352, 32413, 32470, 32522, 32568, 32610, 32647, 32679, 32706, 32729, + 32746, 32758, 32766, 32767, 32766, 32758, 32746, 32729, 32706, 32679, + 32647, 32610, 32568, 32522, 32470, 32413, 32352, 32286, 32214, 32138, + 32058, 31972, 31881, 31786, 31686, 31581, 31471, 31357, 31238, 31114, + 30986, 30853, 30715, 30572, 30425, 30274, 30118, 29957, 29792, 29622, + 29448, 29269, 29086, 28899, 28707, 28511, 28311, 28106, 27897, 27684, + 27467, 27246, 27020, 26791, 26557, 26320, 26078, 25833, 25583, 25330, + 25073, 24812, 24548, 24279, 24008, 23732, 23453, 23170, 22884, 22595, + 22302, 22006, 21706, 21403, 21097, 20788, 20475, 20160, 19841, 19520, + 19195, 18868, 18538, 18205, 17869, 17531, 17190, 16846, 16500, 16151, + 15800, 15447, 15091, 14733, 14373, 14010, 13646, 13279, 12910, 12540, + 12167, 11793, 11417, 11039, 10660, 10279, 9896, 9512, 9127, 8740, 8351, + 7962, 7571, 7180, 6787, 6393, 5998, 5602, 5205, 4808, 4410, 4011, 3612, + 3212, 2811, 2411, 2009, 1608, 1206, 804, 402, 0, -402, -804, -1206, + -1608, -2009, -2411, -2811, -3212, -3612, -4011, -4410, -4808, -5205, + -5602, -5998, -6393, -6787, -7180, -7571, -7962, -8351, -8740, -9127, + -9512, -9896, -10279, -10660, -11039, -11417, -11793, -12167, -12540, + -12910, -13279, -13646, -14010, -14373, -14733, -15091, -15447, -15800, + -16151, -16500, -16846, -17190, -17531, -17869, -18205, -18538, -18868, + -19195, -19520, -19841, -20160, -20475, -20788, -21097, -21403, -21706, + -22006, -22302, -22595, -22884, -23170, -23453, -23732, -24008, -24279, + -24548, -24812, -25073, -25330, -25583, -25833, -26078, -26320, -26557, + -26791, -27020, -27246, -27467, -27684, -27897, -28106, -28311, -28511, + -28707, -28899, -29086, -29269, -29448, -29622, -29792, -29957, -30118, + -30274, -30425, -30572, -30715, -30853, -30986, -31114, -31238, -31357, + -31471, -31581, -31686, -31786, -31881, -31972, -32058, -32138, -32214, + -32286, -32352, -32413, -32470, -32522, -32568, -32610, -32647, -32679, + -32706, -32729, -32746, -32758, -32766, -32768, -32766, -32758, -32746, + -32729, -32706, -32679, -32647, -32610, -32568, -32522, -32470, -32413, + -32352, -32286, -32214, -32138, -32058, -31972, -31881, -31786, -31686, + -31581, -31471, -31357, -31238, -31114, -30986, -30853, -30715, -30572, + -30425, -30274, -30118, -29957, -29792, -29622, -29448, -29269, -29086, + -28899, -28707, -28511, -28311, -28106, -27897, -27684, -27467, -27246, + -27020, -26791, -26557, -26320, -26078, -25833, -25583, -25330, -25073, + -24812, -24548, -24279, -24008, -23732, -23453, -23170, -22884, -22595, + -22302, -22006, -21706, -21403, -21097, -20788, -20475, -20160, -19841, + -19520, -19195, -18868, -18538, -18205, -17869, -17531, -17190, -16846, + -16500, -16151, -15800, -15447, -15091, -14733, -14373, -14010, -13646, + -13279, -12910, -12540, -12167, -11793, -11417, -11039, -10660, -10279, + -9896, -9512, -9127, -8740, -8351, -7962, -7571, -7180, -6787, -6393, + -5998, -5602, -5205, -4808, -4410, -4011, -3612, -3212, -2811, -2411, + -2009, -1608, -1206, -804, -402, 0 +}; diff --git a/Drivers/CMSIS/DSP/Source/CommonTables/arm_const_structs.c b/Drivers/CMSIS/DSP/Source/CommonTables/arm_const_structs.c new file mode 100644 index 0000000..96808d3 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/CommonTables/arm_const_structs.c @@ -0,0 +1,379 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_const_structs.c + * Description: Constant structs that are initialized for user convenience. + * For example, some can be given as arguments to the arm_cfft_f32() or arm_rfft_f32() functions. + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_const_structs.h" + +/* Floating-point structs */ +const arm_cfft_instance_f32 arm_cfft_sR_f32_len16 = { + 16, twiddleCoef_16, armBitRevIndexTable16, ARMBITREVINDEXTABLE_16_TABLE_LENGTH +}; + +const arm_cfft_instance_f32 arm_cfft_sR_f32_len32 = { + 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH +}; + +const arm_cfft_instance_f32 arm_cfft_sR_f32_len64 = { + 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH +}; + +const arm_cfft_instance_f32 arm_cfft_sR_f32_len128 = { + 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH +}; + +const arm_cfft_instance_f32 arm_cfft_sR_f32_len256 = { + 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH +}; + +const arm_cfft_instance_f32 arm_cfft_sR_f32_len512 = { + 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH +}; + +const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = { + 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH +}; + +const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048 = { + 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH +}; + +const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096 = { + 4096, twiddleCoef_4096, armBitRevIndexTable4096, ARMBITREVINDEXTABLE_4096_TABLE_LENGTH +}; + +/* Fixed-point structs */ +const arm_cfft_instance_q31 arm_cfft_sR_q31_len16 = { + 16, twiddleCoef_16_q31, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH +}; + +const arm_cfft_instance_q31 arm_cfft_sR_q31_len32 = { + 32, twiddleCoef_32_q31, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH +}; + +const arm_cfft_instance_q31 arm_cfft_sR_q31_len64 = { + 64, twiddleCoef_64_q31, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH +}; + +const arm_cfft_instance_q31 arm_cfft_sR_q31_len128 = { + 128, twiddleCoef_128_q31, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH +}; + +const arm_cfft_instance_q31 arm_cfft_sR_q31_len256 = { + 256, twiddleCoef_256_q31, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH +}; + +const arm_cfft_instance_q31 arm_cfft_sR_q31_len512 = { + 512, twiddleCoef_512_q31, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH +}; + +const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024 = { + 1024, twiddleCoef_1024_q31, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH +}; + +const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048 = { + 2048, twiddleCoef_2048_q31, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH +}; + +const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096 = { + 4096, twiddleCoef_4096_q31, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH +}; + +const arm_cfft_instance_q15 arm_cfft_sR_q15_len16 = { + 16, twiddleCoef_16_q15, armBitRevIndexTable_fixed_16, ARMBITREVINDEXTABLE_FIXED_16_TABLE_LENGTH +}; + +const arm_cfft_instance_q15 arm_cfft_sR_q15_len32 = { + 32, twiddleCoef_32_q15, armBitRevIndexTable_fixed_32, ARMBITREVINDEXTABLE_FIXED_32_TABLE_LENGTH +}; + +const arm_cfft_instance_q15 arm_cfft_sR_q15_len64 = { + 64, twiddleCoef_64_q15, armBitRevIndexTable_fixed_64, ARMBITREVINDEXTABLE_FIXED_64_TABLE_LENGTH +}; + +const arm_cfft_instance_q15 arm_cfft_sR_q15_len128 = { + 128, twiddleCoef_128_q15, armBitRevIndexTable_fixed_128, ARMBITREVINDEXTABLE_FIXED_128_TABLE_LENGTH +}; + +const arm_cfft_instance_q15 arm_cfft_sR_q15_len256 = { + 256, twiddleCoef_256_q15, armBitRevIndexTable_fixed_256, ARMBITREVINDEXTABLE_FIXED_256_TABLE_LENGTH +}; + +const arm_cfft_instance_q15 arm_cfft_sR_q15_len512 = { + 512, twiddleCoef_512_q15, armBitRevIndexTable_fixed_512, ARMBITREVINDEXTABLE_FIXED_512_TABLE_LENGTH +}; + +const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024 = { + 1024, twiddleCoef_1024_q15, armBitRevIndexTable_fixed_1024, ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH +}; + +const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048 = { + 2048, twiddleCoef_2048_q15, armBitRevIndexTable_fixed_2048, ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH +}; + +const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096 = { + 4096, twiddleCoef_4096_q15, armBitRevIndexTable_fixed_4096, ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH +}; + +/* Structure for real-value inputs */ +/* Floating-point structs */ +const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len32 = { + { 16, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_16_TABLE_LENGTH }, + 32U, + (float32_t *)twiddleCoef_rfft_32 +}; + +const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len64 = { + { 32, twiddleCoef_32, armBitRevIndexTable32, ARMBITREVINDEXTABLE_32_TABLE_LENGTH }, + 64U, + (float32_t *)twiddleCoef_rfft_64 +}; + +const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len128 = { + { 64, twiddleCoef_64, armBitRevIndexTable64, ARMBITREVINDEXTABLE_64_TABLE_LENGTH }, + 128U, + (float32_t *)twiddleCoef_rfft_128 +}; + +const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len256 = { + { 128, twiddleCoef_128, armBitRevIndexTable128, ARMBITREVINDEXTABLE_128_TABLE_LENGTH }, + 256U, + (float32_t *)twiddleCoef_rfft_256 +}; + +const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len512 = { + { 256, twiddleCoef_256, armBitRevIndexTable256, ARMBITREVINDEXTABLE_256_TABLE_LENGTH }, + 512U, + (float32_t *)twiddleCoef_rfft_512 +}; + +const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len1024 = { + { 512, twiddleCoef_512, armBitRevIndexTable512, ARMBITREVINDEXTABLE_512_TABLE_LENGTH }, + 1024U, + (float32_t *)twiddleCoef_rfft_1024 +}; + +const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len2048 = { + { 1024, twiddleCoef_1024, armBitRevIndexTable1024, ARMBITREVINDEXTABLE_1024_TABLE_LENGTH }, + 2048U, + (float32_t *)twiddleCoef_rfft_2048 +}; + +const arm_rfft_fast_instance_f32 arm_rfft_fast_sR_f32_len4096 = { + { 2048, twiddleCoef_2048, armBitRevIndexTable2048, ARMBITREVINDEXTABLE_2048_TABLE_LENGTH }, + 4096U, + (float32_t *)twiddleCoef_rfft_4096 +}; + +/* Fixed-point structs */ +/* q31_t */ +extern const q31_t realCoefAQ31[8192]; +extern const q31_t realCoefBQ31[8192]; + +const arm_rfft_instance_q31 arm_rfft_sR_q31_len32 = { + 32U, + 0, + 1, + 256U, + (q31_t*)realCoefAQ31, + (q31_t*)realCoefBQ31, + &arm_cfft_sR_q31_len16 +}; + +const arm_rfft_instance_q31 arm_rfft_sR_q31_len64 = { + 64U, + 0, + 1, + 128U, + (q31_t*)realCoefAQ31, + (q31_t*)realCoefBQ31, + &arm_cfft_sR_q31_len32 +}; + +const arm_rfft_instance_q31 arm_rfft_sR_q31_len128 = { + 128U, + 0, + 1, + 64U, + (q31_t*)realCoefAQ31, + (q31_t*)realCoefBQ31, + &arm_cfft_sR_q31_len64 +}; + +const arm_rfft_instance_q31 arm_rfft_sR_q31_len256 = { + 256U, + 0, + 1, + 32U, + (q31_t*)realCoefAQ31, + (q31_t*)realCoefBQ31, + &arm_cfft_sR_q31_len128 +}; + +const arm_rfft_instance_q31 arm_rfft_sR_q31_len512 = { + 512U, + 0, + 1, + 16U, + (q31_t*)realCoefAQ31, + (q31_t*)realCoefBQ31, + &arm_cfft_sR_q31_len256 +}; + +const arm_rfft_instance_q31 arm_rfft_sR_q31_len1024 = { + 1024U, + 0, + 1, + 8U, + (q31_t*)realCoefAQ31, + (q31_t*)realCoefBQ31, + &arm_cfft_sR_q31_len512 +}; + +const arm_rfft_instance_q31 arm_rfft_sR_q31_len2048 = { + 2048U, + 0, + 1, + 4U, + (q31_t*)realCoefAQ31, + (q31_t*)realCoefBQ31, + &arm_cfft_sR_q31_len1024 +}; + +const arm_rfft_instance_q31 arm_rfft_sR_q31_len4096 = { + 4096U, + 0, + 1, + 2U, + (q31_t*)realCoefAQ31, + (q31_t*)realCoefBQ31, + &arm_cfft_sR_q31_len2048 +}; + +const arm_rfft_instance_q31 arm_rfft_sR_q31_len8192 = { + 8192U, + 0, + 1, + 1U, + (q31_t*)realCoefAQ31, + (q31_t*)realCoefBQ31, + &arm_cfft_sR_q31_len4096 +}; + +/* q15_t */ +extern const q15_t realCoefAQ15[8192]; +extern const q15_t realCoefBQ15[8192]; + +const arm_rfft_instance_q15 arm_rfft_sR_q15_len32 = { + 32U, + 0, + 1, + 256U, + (q15_t*)realCoefAQ15, + (q15_t*)realCoefBQ15, + &arm_cfft_sR_q15_len16 +}; + +const arm_rfft_instance_q15 arm_rfft_sR_q15_len64 = { + 64U, + 0, + 1, + 128U, + (q15_t*)realCoefAQ15, + (q15_t*)realCoefBQ15, + &arm_cfft_sR_q15_len32 +}; + +const arm_rfft_instance_q15 arm_rfft_sR_q15_len128 = { + 128U, + 0, + 1, + 64U, + (q15_t*)realCoefAQ15, + (q15_t*)realCoefBQ15, + &arm_cfft_sR_q15_len64 +}; + +const arm_rfft_instance_q15 arm_rfft_sR_q15_len256 = { + 256U, + 0, + 1, + 32U, + (q15_t*)realCoefAQ15, + (q15_t*)realCoefBQ15, + &arm_cfft_sR_q15_len128 +}; + +const arm_rfft_instance_q15 arm_rfft_sR_q15_len512 = { + 512U, + 0, + 1, + 16U, + (q15_t*)realCoefAQ15, + (q15_t*)realCoefBQ15, + &arm_cfft_sR_q15_len256 +}; + +const arm_rfft_instance_q15 arm_rfft_sR_q15_len1024 = { + 1024U, + 0, + 1, + 8U, + (q15_t*)realCoefAQ15, + (q15_t*)realCoefBQ15, + &arm_cfft_sR_q15_len512 +}; + +const arm_rfft_instance_q15 arm_rfft_sR_q15_len2048 = { + 2048U, + 0, + 1, + 4U, + (q15_t*)realCoefAQ15, + (q15_t*)realCoefBQ15, + &arm_cfft_sR_q15_len1024 +}; + +const arm_rfft_instance_q15 arm_rfft_sR_q15_len4096 = { + 4096U, + 0, + 1, + 2U, + (q15_t*)realCoefAQ15, + (q15_t*)realCoefBQ15, + &arm_cfft_sR_q15_len2048 +}; + +const arm_rfft_instance_q15 arm_rfft_sR_q15_len8192 = { + 8192U, + 0, + 1, + 1U, + (q15_t*)realCoefAQ15, + (q15_t*)realCoefBQ15, + &arm_cfft_sR_q15_len4096 +}; diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c new file mode 100644 index 0000000..29e74bc --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c @@ -0,0 +1,171 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cmplx_conj_f32.c + * Description: Floating-point complex conjugate + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupCmplxMath + */ + +/** + * @defgroup cmplx_conj Complex Conjugate + * + * Conjugates the elements of a complex data vector. + * + * The pSrc points to the source data and + * pDst points to the where the result should be written. + * numSamples specifies the number of complex samples + * and the data in each array is stored in an interleaved fashion + * (real, imag, real, imag, ...). + * Each array has a total of 2*numSamples values. + * The underlying algorithm is used: + * + *
+ * for(n=0; n
+ *
+ * There are separate functions for floating-point, Q15, and Q31 data types.
+ */
+
+/**
+ * @addtogroup cmplx_conj
+ * @{
+ */
+
+/**
+ * @brief  Floating-point complex conjugate.
+ * @param  *pSrc points to the input vector
+ * @param  *pDst points to the output vector
+ * @param  numSamples number of complex samples in each vector
+ * @return none.
+ */
+
+void arm_cmplx_conj_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  uint32_t blkCnt;                               /* loop counter */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t inR1, inR2, inR3, inR4;
+  float32_t inI1, inI2, inI3, inI4;
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    /* read real input samples */
+    inR1 = pSrc[0];
+    /* store real samples to destination */
+    pDst[0] = inR1;
+    inR2 = pSrc[2];
+    pDst[2] = inR2;
+    inR3 = pSrc[4];
+    pDst[4] = inR3;
+    inR4 = pSrc[6];
+    pDst[6] = inR4;
+
+    /* read imaginary input samples */
+    inI1 = pSrc[1];
+    inI2 = pSrc[3];
+
+    /* conjugate input */
+    inI1 = -inI1;
+
+    /* read imaginary input samples */
+    inI3 = pSrc[5];
+
+    /* conjugate input */
+    inI2 = -inI2;
+
+    /* read imaginary input samples */
+    inI4 = pSrc[7];
+
+    /* conjugate input */
+    inI3 = -inI3;
+
+    /* store imaginary samples to destination */
+    pDst[1] = inI1;
+    pDst[3] = inI2;
+
+    /* conjugate input */
+    inI4 = -inI4;
+
+    /* store imaginary samples to destination */
+    pDst[5] = inI3;
+
+    /* increment source pointer by 8 to process next sampels */
+    pSrc += 8U;
+
+    /* store imaginary sample to destination */
+    pDst[7] = inI4;
+
+    /* increment destination pointer by 8 to store next samples */
+    pDst += 8U;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = numSamples;
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+  while (blkCnt > 0U)
+  {
+    /* realOut + j (imagOut) = realIn + j (-1) imagIn */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = -*pSrc++;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**
+ * @} end of cmplx_conj group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
new file mode 100644
index 0000000..1e371bd
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
@@ -0,0 +1,149 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_conj_q15.c
+ * Description:  Q15 complex conjugate
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup cmplx_conj
+ * @{
+ */
+
+/**
+ * @brief  Q15 complex conjugate.
+ * @param  *pSrc points to the input vector
+ * @param  *pDst points to the output vector
+ * @param  numSamples number of complex samples in each vector
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function uses saturating arithmetic.
+ * The Q15 value -1 (0x8000) will be saturated to the maximum allowable positive value 0x7FFF.
+ */
+
+void arm_cmplx_conj_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in1, in2, in3, in4;
+  q31_t zero = 0;
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    in1 = *__SIMD32(pSrc)++;
+    in2 = *__SIMD32(pSrc)++;
+    in3 = *__SIMD32(pSrc)++;
+    in4 = *__SIMD32(pSrc)++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    in1 = __QASX(zero, in1);
+    in2 = __QASX(zero, in2);
+    in3 = __QASX(zero, in3);
+    in4 = __QASX(zero, in4);
+
+#else
+
+    in1 = __QSAX(zero, in1);
+    in2 = __QSAX(zero, in2);
+    in3 = __QSAX(zero, in3);
+    in4 = __QSAX(zero, in4);
+
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
+
+    in1 = ((uint32_t) in1 >> 16) | ((uint32_t) in1 << 16);
+    in2 = ((uint32_t) in2 >> 16) | ((uint32_t) in2 << 16);
+    in3 = ((uint32_t) in3 >> 16) | ((uint32_t) in3 << 16);
+    in4 = ((uint32_t) in4 >> 16) | ((uint32_t) in4 << 16);
+
+    *__SIMD32(pDst)++ = in1;
+    *__SIMD32(pDst)++ = in2;
+    *__SIMD32(pDst)++ = in3;
+    *__SIMD32(pDst)++ = in4;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    *pDst++ = __SSAT(-*pSrc++, 16);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  q15_t in;
+
+  /* Run the below code for Cortex-M0 */
+
+  while (numSamples > 0U)
+  {
+    /* realOut + j (imagOut) = realIn+ j (-1) imagIn */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    *pDst++ = *pSrc++;
+    in = *pSrc++;
+    *pDst++ = (in == (q15_t) 0x8000) ? 0x7fff : -in;
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+}
+
+/**
+ * @} end of cmplx_conj group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
new file mode 100644
index 0000000..af14414
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
@@ -0,0 +1,169 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_conj_q31.c
+ * Description:  Q31 complex conjugate
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup cmplx_conj
+ * @{
+ */
+
+/**
+ * @brief  Q31 complex conjugate.
+ * @param  *pSrc points to the input vector
+ * @param  *pDst points to the output vector
+ * @param  numSamples number of complex samples in each vector
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function uses saturating arithmetic.
+ * The Q31 value -1 (0x80000000) will be saturated to the maximum allowable positive value 0x7FFFFFFF.
+ */
+
+void arm_cmplx_conj_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in;                                      /* Input value */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t inR1, inR2, inR3, inR4;                  /* Temporary real variables */
+  q31_t inI1, inI2, inI3, inI4;                  /* Temporary imaginary variables */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    /* Saturated to 0x7fffffff if the input is -1(0x80000000) */
+    /* read real input sample */
+    inR1 = pSrc[0];
+    /* store real input sample */
+    pDst[0] = inR1;
+
+    /* read imaginary input sample */
+    inI1 = pSrc[1];
+
+    /* read real input sample */
+    inR2 = pSrc[2];
+    /* store real input sample */
+    pDst[2] = inR2;
+
+    /* read imaginary input sample */
+    inI2 = pSrc[3];
+
+    /* negate imaginary input sample */
+    inI1 = __QSUB(0, inI1);
+
+    /* read real input sample */
+    inR3 = pSrc[4];
+    /* store real input sample */
+    pDst[4] = inR3;
+
+    /* read imaginary input sample */
+    inI3 = pSrc[5];
+
+    /* negate imaginary input sample */
+    inI2 = __QSUB(0, inI2);
+
+    /* read real input sample */
+    inR4 = pSrc[6];
+    /* store real input sample */
+    pDst[6] = inR4;
+
+    /* negate imaginary input sample */
+    inI3 = __QSUB(0, inI3);
+
+    /* store imaginary input sample */
+    inI4 = pSrc[7];
+
+    /* store imaginary input samples */
+    pDst[1] = inI1;
+
+    /* negate imaginary input sample */
+    inI4 = __QSUB(0, inI4);
+
+    /* store imaginary input samples */
+    pDst[3] = inI2;
+
+    /* increment source pointer by 8 to proecess next samples */
+    pSrc += 8U;
+
+    /* store imaginary input samples */
+    pDst[5] = inI3;
+    pDst[7] = inI4;
+
+    /* increment destination pointer by 8 to process next samples */
+    pDst += 8U;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = numSamples;
+
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+  while (blkCnt > 0U)
+  {
+    /* C[0]+jC[1] = A[0]+ j (-1) A[1] */
+    /* Calculate Complex Conjugate and then store the results in the destination buffer. */
+    /* Saturated to 0x7fffffff if the input is -1(0x80000000) */
+    *pDst++ = *pSrc++;
+    in = *pSrc++;
+    *pDst++ = (in == INT32_MIN) ? INT32_MAX : -in;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**
+ * @} end of cmplx_conj group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
new file mode 100644
index 0000000..aac177f
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
@@ -0,0 +1,191 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_dot_prod_f32.c
+ * Description:  Floating-point complex dot product
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @defgroup cmplx_dot_prod Complex Dot Product
+ *
+ * Computes the dot product of two complex vectors.
+ * The vectors are multiplied element-by-element and then summed.
+ *
+ * The pSrcA points to the first complex input vector and
+ * pSrcB points to the second complex input vector.
+ * numSamples specifies the number of complex samples
+ * and the data in each array is stored in an interleaved fashion
+ * (real, imag, real, imag, ...).
+ * Each array has a total of 2*numSamples values.
+ *
+ * The underlying algorithm is used:
+ * 
+ * realResult=0;
+ * imagResult=0;
+ * for(n=0; n
+ *
+ * There are separate functions for floating-point, Q15, and Q31 data types.
+ */
+
+/**
+ * @addtogroup cmplx_dot_prod
+ * @{
+ */
+
+/**
+ * @brief  Floating-point complex dot product
+ * @param  *pSrcA points to the first input vector
+ * @param  *pSrcB points to the second input vector
+ * @param  numSamples number of complex samples in each vector
+ * @param  *realResult real part of the result returned here
+ * @param  *imagResult imaginary part of the result returned here
+ * @return none.
+ */
+
+void arm_cmplx_dot_prod_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  uint32_t numSamples,
+  float32_t * realResult,
+  float32_t * imagResult)
+{
+  float32_t real_sum = 0.0f, imag_sum = 0.0f;    /* Temporary result storage */
+  float32_t a0,b0,c0,d0;
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples & 0x3U;
+
+  while (blkCnt > 0U)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while (numSamples > 0U)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+      /* Decrement the loop counter */
+      numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+  /* Store the real and imaginary results in the destination buffers */
+  *realResult = real_sum;
+  *imagResult = imag_sum;
+}
+
+/**
+ * @} end of cmplx_dot_prod group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
new file mode 100644
index 0000000..efe72a2
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
@@ -0,0 +1,177 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_dot_prod_q15.c
+ * Description:  Processing function for the Q15 Complex Dot product
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup cmplx_dot_prod
+ * @{
+ */
+
+/**
+ * @brief  Q15 complex dot product
+ * @param  *pSrcA points to the first input vector
+ * @param  *pSrcB points to the second input vector
+ * @param  numSamples number of complex samples in each vector
+ * @param  *realResult real part of the result returned here
+ * @param  *imagResult imaginary part of the result returned here
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function is implemented using an internal 64-bit accumulator.
+ * The intermediate 1.15 by 1.15 multiplications are performed with full precision and yield a 2.30 result.
+ * These are accumulated in a 64-bit accumulator with 34.30 precision.
+ * As a final step, the accumulators are converted to 8.24 format.
+ * The return results realResult and imagResult are in 8.24 format.
+ */
+
+void arm_cmplx_dot_prod_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  uint32_t numSamples,
+  q31_t * realResult,
+  q31_t * imagResult)
+{
+  q63_t real_sum = 0, imag_sum = 0;              /* Temporary result storage */
+  q15_t a0,b0,c0,d0;
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += (q31_t)a0 * c0;
+      imag_sum += (q31_t)a0 * d0;
+      real_sum -= (q31_t)b0 * d0;
+      imag_sum += (q31_t)b0 * c0;
+
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += (q31_t)a0 * c0;
+      imag_sum += (q31_t)a0 * d0;
+      real_sum -= (q31_t)b0 * d0;
+      imag_sum += (q31_t)b0 * c0;
+
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += (q31_t)a0 * c0;
+      imag_sum += (q31_t)a0 * d0;
+      real_sum -= (q31_t)b0 * d0;
+      imag_sum += (q31_t)b0 * c0;
+
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += (q31_t)a0 * c0;
+      imag_sum += (q31_t)a0 * d0;
+      real_sum -= (q31_t)b0 * d0;
+      imag_sum += (q31_t)b0 * c0;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += (q31_t)a0 * c0;
+      imag_sum += (q31_t)a0 * d0;
+      real_sum -= (q31_t)b0 * d0;
+      imag_sum += (q31_t)b0 * c0;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while (numSamples > 0U)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += a0 * c0;
+      imag_sum += a0 * d0;
+      real_sum -= b0 * d0;
+      imag_sum += b0 * c0;
+
+
+      /* Decrement the loop counter */
+      numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+  /* Store the real and imaginary results in 8.24 format  */
+  /* Convert real data in 34.30 to 8.24 by 6 right shifts */
+  *realResult = (q31_t) (real_sum >> 6);
+  /* Convert imaginary data in 34.30 to 8.24 by 6 right shifts */
+  *imagResult = (q31_t) (imag_sum >> 6);
+}
+
+/**
+ * @} end of cmplx_dot_prod group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
new file mode 100644
index 0000000..dfd3a4b
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
@@ -0,0 +1,175 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_dot_prod_q31.c
+ * Description:  Q31 complex dot product
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup cmplx_dot_prod
+ * @{
+ */
+
+/**
+ * @brief  Q31 complex dot product
+ * @param  *pSrcA points to the first input vector
+ * @param  *pSrcB points to the second input vector
+ * @param  numSamples number of complex samples in each vector
+ * @param  *realResult real part of the result returned here
+ * @param  *imagResult imaginary part of the result returned here
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function is implemented using an internal 64-bit accumulator.
+ * The intermediate 1.31 by 1.31 multiplications are performed with 64-bit precision and then shifted to 16.48 format.
+ * The internal real and imaginary accumulators are in 16.48 format and provide 15 guard bits.
+ * Additions are nonsaturating and no overflow will occur as long as numSamples is less than 32768.
+ * The return results realResult and imagResult are in 16.48 format.
+ * Input down scaling is not required.
+ */
+
+void arm_cmplx_dot_prod_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  uint32_t numSamples,
+  q63_t * realResult,
+  q63_t * imagResult)
+{
+  q63_t real_sum = 0, imag_sum = 0;              /* Temporary result storage */
+  q31_t a0,b0,c0,d0;
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+  /* If the numSamples  is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+
+      /* Decrement the loop counter */
+      blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while (numSamples > 0U)
+  {
+      a0 = *pSrcA++;
+      b0 = *pSrcA++;
+      c0 = *pSrcB++;
+      d0 = *pSrcB++;
+
+      real_sum += ((q63_t)a0 * c0) >> 14;
+      imag_sum += ((q63_t)a0 * d0) >> 14;
+      real_sum -= ((q63_t)b0 * d0) >> 14;
+      imag_sum += ((q63_t)b0 * c0) >> 14;
+
+      /* Decrement the loop counter */
+      numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+  /* Store the real and imaginary results in 16.48 format  */
+  *realResult = real_sum;
+  *imagResult = imag_sum;
+}
+
+/**
+ * @} end of cmplx_dot_prod group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
new file mode 100644
index 0000000..6c8be8f
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
@@ -0,0 +1,153 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mag_f32.c
+ * Description:  Floating-point complex magnitude
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @defgroup cmplx_mag Complex Magnitude
+ *
+ * Computes the magnitude of the elements of a complex data vector.
+ *
+ * The pSrc points to the source data and
+ * pDst points to the where the result should be written.
+ * numSamples specifies the number of complex samples
+ * in the input array and the data is stored in an interleaved fashion
+ * (real, imag, real, imag, ...).
+ * The input array has a total of 2*numSamples values;
+ * the output array has a total of numSamples values.
+ * The underlying algorithm is used:
+ *
+ * 
+ * for(n=0; n
+ *
+ * There are separate functions for floating-point, Q15, and Q31 data types.
+ */
+
+/**
+ * @addtogroup cmplx_mag
+ * @{
+ */
+/**
+ * @brief Floating-point complex magnitude.
+ * @param[in]       *pSrc points to complex input buffer
+ * @param[out]      *pDst points to real output buffer
+ * @param[in]       numSamples number of complex samples in the input vector
+ * @return none.
+ *
+ */
+
+
+void arm_cmplx_mag_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  float32_t realIn, imagIn;                      /* Temporary variables to hold input values */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    /* store the result in the destination buffer. */
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    /* store the result in the destination buffer. */
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while (numSamples > 0U)
+  {
+    /* out = sqrt((real * real) + (imag * imag)) */
+    realIn = *pSrc++;
+    imagIn = *pSrc++;
+    /* store the result in the destination buffer. */
+    arm_sqrt_f32((realIn * realIn) + (imagIn * imagIn), pDst++);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+}
+
+/**
+ * @} end of cmplx_mag group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
new file mode 100644
index 0000000..445c996
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
@@ -0,0 +1,141 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mag_q15.c
+ * Description:  Q15 complex magnitude
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup cmplx_mag
+ * @{
+ */
+
+
+/**
+ * @brief  Q15 complex magnitude
+ * @param  *pSrc points to the complex input vector
+ * @param  *pDst points to the real output vector
+ * @param  numSamples number of complex samples in the input vector
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function implements 1.15 by 1.15 multiplications and finally output is converted into 2.14 format.
+ */
+
+void arm_cmplx_mag_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t acc0, acc1;                              /* Accumulators */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in1, in2, in3, in4;
+  q31_t acc2, acc3;
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    in1 = *__SIMD32(pSrc)++;
+    in2 = *__SIMD32(pSrc)++;
+    in3 = *__SIMD32(pSrc)++;
+    in4 = *__SIMD32(pSrc)++;
+
+    acc0 = __SMUAD(in1, in1);
+    acc1 = __SMUAD(in2, in2);
+    acc2 = __SMUAD(in3, in3);
+    acc3 = __SMUAD(in4, in4);
+
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) ((acc0) >> 17), pDst++);
+    arm_sqrt_q15((q15_t) ((acc1) >> 17), pDst++);
+    arm_sqrt_q15((q15_t) ((acc2) >> 17), pDst++);
+    arm_sqrt_q15((q15_t) ((acc3) >> 17), pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    in1 = *__SIMD32(pSrc)++;
+    acc0 = __SMUAD(in1, in1);
+
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) (acc0 >> 17), pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q15_t real, imag;                              /* Temporary variables to hold input values */
+
+  while (numSamples > 0U)
+  {
+    /* out = sqrt(real * real + imag * imag) */
+    real = *pSrc++;
+    imag = *pSrc++;
+
+    acc0 = (real * real);
+    acc1 = (imag * imag);
+
+    /* store the result in 2.14 format in the destination buffer. */
+    arm_sqrt_q15((q15_t) (((q63_t) acc0 + acc1) >> 17), pDst++);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+}
+
+/**
+ * @} end of cmplx_mag group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
new file mode 100644
index 0000000..c1fdfdf
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
@@ -0,0 +1,173 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mag_q31.c
+ * Description:  Q31 complex magnitude
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup cmplx_mag
+ * @{
+ */
+
+/**
+ * @brief  Q31 complex magnitude
+ * @param  *pSrc points to the complex input vector
+ * @param  *pDst points to the real output vector
+ * @param  numSamples number of complex samples in the input vector
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function implements 1.31 by 1.31 multiplications and finally output is converted into 2.30 format.
+ * Input down scaling is not required.
+ */
+
+void arm_cmplx_mag_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t real, imag;                              /* Temporary variables to hold input values */
+  q31_t acc0, acc1;                              /* Accumulators */
+  uint32_t blkCnt;                               /* loop counter */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  q31_t real1, real2, imag1, imag2;              /* Temporary variables to hold input values */
+  q31_t out1, out2, out3, out4;                  /* Accumulators */
+  q63_t mul1, mul2, mul3, mul4;                  /* Temporary variables */
+
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* read complex input from source buffer */
+    real1 = pSrc[0];
+    imag1 = pSrc[1];
+    real2 = pSrc[2];
+    imag2 = pSrc[3];
+
+    /* calculate power of input values */
+    mul1 = (q63_t) real1 *real1;
+    mul2 = (q63_t) imag1 *imag1;
+    mul3 = (q63_t) real2 *real2;
+    mul4 = (q63_t) imag2 *imag2;
+
+    /* get the result to 3.29 format */
+    out1 = (q31_t) (mul1 >> 33);
+    out2 = (q31_t) (mul2 >> 33);
+    out3 = (q31_t) (mul3 >> 33);
+    out4 = (q31_t) (mul4 >> 33);
+
+    /* add real and imaginary accumulators */
+    out1 = out1 + out2;
+    out3 = out3 + out4;
+
+    /* read complex input from source buffer */
+    real1 = pSrc[4];
+    imag1 = pSrc[5];
+    real2 = pSrc[6];
+    imag2 = pSrc[7];
+
+    /* calculate square root */
+    arm_sqrt_q31(out1, &pDst[0]);
+
+    /* calculate power of input values */
+    mul1 = (q63_t) real1 *real1;
+
+    /* calculate square root */
+    arm_sqrt_q31(out3, &pDst[1]);
+
+    /* calculate power of input values */
+    mul2 = (q63_t) imag1 *imag1;
+    mul3 = (q63_t) real2 *real2;
+    mul4 = (q63_t) imag2 *imag2;
+
+    /* get the result to 3.29 format */
+    out1 = (q31_t) (mul1 >> 33);
+    out2 = (q31_t) (mul2 >> 33);
+    out3 = (q31_t) (mul3 >> 33);
+    out4 = (q31_t) (mul4 >> 33);
+
+    /* add real and imaginary accumulators */
+    out1 = out1 + out2;
+    out3 = out3 + out4;
+
+    /* calculate square root */
+    arm_sqrt_q31(out1, &pDst[2]);
+
+    /* increment destination by 8 to process next samples */
+    pSrc += 8U;
+
+    /* calculate square root */
+    arm_sqrt_q31(out3, &pDst[3]);
+
+    /* increment destination by 4 to process next samples */
+    pDst += 4U;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = numSamples;
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+  while (blkCnt > 0U)
+  {
+    /* C[0] = sqrt(A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 2.30 format in the destination buffer. */
+    arm_sqrt_q31(acc0 + acc1, pDst++);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**
+ * @} end of cmplx_mag group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
new file mode 100644
index 0000000..a7a34a3
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
@@ -0,0 +1,204 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mag_squared_f32.c
+ * Description:  Floating-point complex magnitude squared
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @defgroup cmplx_mag_squared Complex Magnitude Squared
+ *
+ * Computes the magnitude squared of the elements of a complex data vector.
+ *
+ * The pSrc points to the source data and
+ * pDst points to the where the result should be written.
+ * numSamples specifies the number of complex samples
+ * in the input array and the data is stored in an interleaved fashion
+ * (real, imag, real, imag, ...).
+ * The input array has a total of 2*numSamples values;
+ * the output array has a total of numSamples values.
+ *
+ * The underlying algorithm is used:
+ *
+ * 
+ * for(n=0; n
+ *
+ * There are separate functions for floating-point, Q15, and Q31 data types.
+ */
+
+/**
+ * @addtogroup cmplx_mag_squared
+ * @{
+ */
+
+
+/**
+ * @brief  Floating-point complex magnitude squared
+ * @param[in]  *pSrc points to the complex input vector
+ * @param[out]  *pDst points to the real output vector
+ * @param[in]  numSamples number of complex samples in the input vector
+ * @return none.
+ */
+
+void arm_cmplx_mag_squared_f32(
+  float32_t * pSrc,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  float32_t real, imag;                          /* Temporary variables to store real and imaginary values */
+  uint32_t blkCnt;                               /* loop counter */
+
+#if defined (ARM_MATH_DSP)
+  float32_t real1, real2, real3, real4;          /* Temporary variables to hold real values */
+  float32_t imag1, imag2, imag3, imag4;          /* Temporary variables to hold imaginary values */
+  float32_t mul1, mul2, mul3, mul4;              /* Temporary variables */
+  float32_t mul5, mul6, mul7, mul8;              /* Temporary variables */
+  float32_t out1, out2, out3, out4;              /* Temporary variables to hold output values */
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    /* read real input sample from source buffer */
+    real1 = pSrc[0];
+    /* read imaginary input sample from source buffer */
+    imag1 = pSrc[1];
+
+    /* calculate power of real value */
+    mul1 = real1 * real1;
+
+    /* read real input sample from source buffer */
+    real2 = pSrc[2];
+
+    /* calculate power of imaginary value */
+    mul2 = imag1 * imag1;
+
+    /* read imaginary input sample from source buffer */
+    imag2 = pSrc[3];
+
+    /* calculate power of real value */
+    mul3 = real2 * real2;
+
+    /* read real input sample from source buffer */
+    real3 = pSrc[4];
+
+    /* calculate power of imaginary value */
+    mul4 = imag2 * imag2;
+
+    /* read imaginary input sample from source buffer */
+    imag3 = pSrc[5];
+
+    /* calculate power of real value */
+    mul5 = real3 * real3;
+    /* calculate power of imaginary value */
+    mul6 = imag3 * imag3;
+
+    /* read real input sample from source buffer */
+    real4 = pSrc[6];
+
+    /* accumulate real and imaginary powers */
+    out1 = mul1 + mul2;
+
+    /* read imaginary input sample from source buffer */
+    imag4 = pSrc[7];
+
+    /* accumulate real and imaginary powers */
+    out2 = mul3 + mul4;
+
+    /* calculate power of real value */
+    mul7 = real4 * real4;
+    /* calculate power of imaginary value */
+    mul8 = imag4 * imag4;
+
+    /* store output to destination */
+    pDst[0] = out1;
+
+    /* accumulate real and imaginary powers */
+    out3 = mul5 + mul6;
+
+    /* store output to destination */
+    pDst[1] = out2;
+
+    /* accumulate real and imaginary powers */
+    out4 = mul7 + mul8;
+
+    /* store output to destination */
+    pDst[2] = out3;
+
+    /* increment destination pointer by 8 to process next samples */
+    pSrc += 8U;
+
+    /* store output to destination */
+    pDst[3] = out4;
+
+    /* increment destination pointer by 4 to process next samples */
+    pDst += 4U;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  blkCnt = numSamples;
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+  while (blkCnt > 0U)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+
+    /* out = (real * real) + (imag * imag) */
+    /* store the result in the destination buffer. */
+    *pDst++ = (real * real) + (imag * imag);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+}
+
+/**
+ * @} end of cmplx_mag_squared group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
new file mode 100644
index 0000000..7876cdc
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
@@ -0,0 +1,136 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mag_squared_q15.c
+ * Description:  Q15 complex magnitude squared
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup cmplx_mag_squared
+ * @{
+ */
+
+/**
+ * @brief  Q15 complex magnitude squared
+ * @param  *pSrc points to the complex input vector
+ * @param  *pDst points to the real output vector
+ * @param  numSamples number of complex samples in the input vector
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.
+ */
+
+void arm_cmplx_mag_squared_q15(
+  q15_t * pSrc,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t acc0, acc1;                              /* Accumulators */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+  q31_t in1, in2, in3, in4;
+  q31_t acc2, acc3;
+
+  /*loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    in1 = *__SIMD32(pSrc)++;
+    in2 = *__SIMD32(pSrc)++;
+    in3 = *__SIMD32(pSrc)++;
+    in4 = *__SIMD32(pSrc)++;
+
+    acc0 = __SMUAD(in1, in1);
+    acc1 = __SMUAD(in2, in2);
+    acc2 = __SMUAD(in3, in3);
+    acc3 = __SMUAD(in4, in4);
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (acc0 >> 17);
+    *pDst++ = (q15_t) (acc1 >> 17);
+    *pDst++ = (q15_t) (acc2 >> 17);
+    *pDst++ = (q15_t) (acc3 >> 17);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    in1 = *__SIMD32(pSrc)++;
+    acc0 = __SMUAD(in1, in1);
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (acc0 >> 17);
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  q15_t real, imag;                              /* Temporary variables to store real and imaginary values */
+
+  while (numSamples > 0U)
+  {
+    /* out = ((real * real) + (imag * imag)) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (real * real);
+    acc1 = (imag * imag);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ = (q15_t) (((q63_t) acc0 + acc1) >> 17);
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+}
+
+/**
+ * @} end of cmplx_mag_squared group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
new file mode 100644
index 0000000..b9c0c0c
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
@@ -0,0 +1,149 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mag_squared_q31.c
+ * Description:  Q31 complex magnitude squared
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup cmplx_mag_squared
+ * @{
+ */
+
+
+/**
+ * @brief  Q31 complex magnitude squared
+ * @param  *pSrc points to the complex input vector
+ * @param  *pDst points to the real output vector
+ * @param  numSamples number of complex samples in the input vector
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format.
+ * Input down scaling is not required.
+ */
+
+void arm_cmplx_mag_squared_q31(
+  q31_t * pSrc,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t real, imag;                              /* Temporary variables to store real and imaginary values */
+  q31_t acc0, acc1;                              /* Accumulators */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counter */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+    /* C[0] = (A[0] * A[0] + A[1] * A[1]) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    /* Decrement the loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while (numSamples > 0U)
+  {
+    /* out = ((real * real) + (imag * imag)) */
+    real = *pSrc++;
+    imag = *pSrc++;
+    acc0 = (q31_t) (((q63_t) real * real) >> 33);
+    acc1 = (q31_t) (((q63_t) imag * imag) >> 33);
+    /* store the result in 3.29 format in the destination buffer. */
+    *pDst++ = acc0 + acc1;
+
+    /* Decrement the loop counter */
+    numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+}
+
+/**
+ * @} end of cmplx_mag_squared group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
new file mode 100644
index 0000000..90af35a
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
@@ -0,0 +1,196 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mult_cmplx_f32.c
+ * Description:  Floating-point complex-by-complex multiplication
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @defgroup CmplxByCmplxMult Complex-by-Complex Multiplication
+ *
+ * Multiplies a complex vector by another complex vector and generates a complex result.
+ * The data in the complex arrays is stored in an interleaved fashion
+ * (real, imag, real, imag, ...).
+ * The parameter numSamples represents the number of complex
+ * samples processed.  The complex arrays have a total of 2*numSamples
+ * real values.
+ *
+ * The underlying algorithm is used:
+ *
+ * 
+ * for(n=0; n
+ *
+ * There are separate functions for floating-point, Q15, and Q31 data types.
+ */
+
+/**
+ * @addtogroup CmplxByCmplxMult
+ * @{
+ */
+
+
+/**
+ * @brief  Floating-point complex-by-complex multiplication
+ * @param[in]  *pSrcA points to the first input vector
+ * @param[in]  *pSrcB points to the second input vector
+ * @param[out]  *pDst  points to the output vector
+ * @param[in]  numSamples number of complex samples in each vector
+ * @return none.
+ */
+
+void arm_cmplx_mult_cmplx_f32(
+  float32_t * pSrcA,
+  float32_t * pSrcB,
+  float32_t * pDst,
+  uint32_t numSamples)
+{
+  float32_t a1, b1, c1, d1;                      /* Temporary variables to store real and imaginary values */
+  uint32_t blkCnt;                               /* loop counters */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t a2, b2, c2, d2;                      /* Temporary variables to store real and imaginary values */
+  float32_t acc1, acc2, acc3, acc4;
+
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a1 = *pSrcA;                /* A[2 * i] */
+    c1 = *pSrcB;                /* B[2 * i] */
+
+    b1 = *(pSrcA + 1);          /* A[2 * i + 1] */
+    acc1 = a1 * c1;             /* acc1 = A[2 * i] * B[2 * i] */
+
+    a2 = *(pSrcA + 2);          /* A[2 * i + 2] */
+    acc2 = (b1 * c1);           /* acc2 = A[2 * i + 1] * B[2 * i] */
+
+    d1 = *(pSrcB + 1);          /* B[2 * i + 1] */
+    c2 = *(pSrcB + 2);          /* B[2 * i + 2] */
+    acc1 -= b1 * d1;            /* acc1 =      A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1] */
+
+    d2 = *(pSrcB + 3);          /* B[2 * i + 3] */
+    acc3 = a2 * c2;             /* acc3 =       A[2 * i + 2] * B[2 * i + 2] */
+
+    b2 = *(pSrcA + 3);          /* A[2 * i + 3] */
+    acc2 += (a1 * d1);          /* acc2 =      A[2 * i + 1] * B[2 * i] + A[2 * i] * B[2 * i + 1] */
+
+    a1 = *(pSrcA + 4);          /* A[2 * i + 4] */
+    acc4 = (a2 * d2);           /* acc4 =   A[2 * i + 2] * B[2 * i + 3] */
+
+    c1 = *(pSrcB + 4);          /* B[2 * i + 4] */
+    acc3 -= (b2 * d2);          /* acc3 =       A[2 * i + 2] * B[2 * i + 2] - A[2 * i + 3] * B[2 * i + 3] */
+    *pDst = acc1;               /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1] */
+
+    b1 = *(pSrcA + 5);          /* A[2 * i + 5] */
+    acc4 += b2 * c2;            /* acc4 =   A[2 * i + 2] * B[2 * i + 3] + A[2 * i + 3] * B[2 * i + 2] */
+
+    *(pDst + 1) = acc2;         /* C[2 * i + 1] = A[2 * i + 1] * B[2 * i] + A[2 * i] * B[2 * i + 1]  */
+    acc1 = (a1 * c1);
+
+    d1 = *(pSrcB + 5);
+    acc2 = (b1 * c1);
+
+    *(pDst + 2) = acc3;
+    *(pDst + 3) = acc4;
+
+    a2 = *(pSrcA + 6);
+    acc1 -= (b1 * d1);
+
+    c2 = *(pSrcB + 6);
+    acc2 += (a1 * d1);
+
+    b2 = *(pSrcA + 7);
+    acc3 = (a2 * c2);
+
+    d2 = *(pSrcB + 7);
+    acc4 = (b2 * c2);
+
+    *(pDst + 4) = acc1;
+    pSrcA += 8U;
+
+    acc3 -= (b2 * d2);
+    acc4 += (a2 * d2);
+
+    *(pDst + 5) = acc2;
+    pSrcB += 8U;
+
+    *(pDst + 6) = acc3;
+    *(pDst + 7) = acc4;
+
+    pDst += 8U;
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = numSamples;
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a1 = *pSrcA++;
+    b1 = *pSrcA++;
+    c1 = *pSrcB++;
+    d1 = *pSrcB++;
+
+    /* store the result in the destination buffer. */
+    *pDst++ = (a1 * c1) - (b1 * d1);
+    *pDst++ = (a1 * d1) + (b1 * c1);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+}
+
+/**
+ * @} end of CmplxByCmplxMult group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
new file mode 100644
index 0000000..1dce470
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
@@ -0,0 +1,181 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mult_cmplx_q15.c
+ * Description:  Q15 complex-by-complex multiplication
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup CmplxByCmplxMult
+ * @{
+ */
+
+/**
+ * @brief  Q15 complex-by-complex multiplication
+ * @param[in]  *pSrcA points to the first input vector
+ * @param[in]  *pSrcB points to the second input vector
+ * @param[out]  *pDst  points to the output vector
+ * @param[in]  numSamples number of complex samples in each vector
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function implements 1.15 by 1.15 multiplications and finally output is converted into 3.13 format.
+ */
+
+void arm_cmplx_mult_cmplx_q15(
+  q15_t * pSrcA,
+  q15_t * pSrcB,
+  q15_t * pDst,
+  uint32_t numSamples)
+{
+  q15_t a, b, c, d;                              /* Temporary variables to store real and imaginary values */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while (numSamples > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * c) >> 17) - (((q31_t) b * d) >> 17);
+    /* store the result in 3.13 format in the destination buffer. */
+    *pDst++ =
+      (q15_t) (q31_t) (((q31_t) a * d) >> 17) + (((q31_t) b * c) >> 17);
+
+    /* Decrement the blockSize loop counter */
+    numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+}
+
+/**
+ * @} end of CmplxByCmplxMult group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
new file mode 100644
index 0000000..2eed4e8
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
@@ -0,0 +1,314 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mult_cmplx_q31.c
+ * Description:  Q31 complex-by-complex multiplication
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup CmplxByCmplxMult
+ * @{
+ */
+
+
+/**
+ * @brief  Q31 complex-by-complex multiplication
+ * @param[in]  *pSrcA points to the first input vector
+ * @param[in]  *pSrcB points to the second input vector
+ * @param[out]  *pDst  points to the output vector
+ * @param[in]  numSamples number of complex samples in each vector
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function implements 1.31 by 1.31 multiplications and finally output is converted into 3.29 format.
+ * Input down scaling is not required.
+ */
+
+void arm_cmplx_mult_cmplx_q31(
+  q31_t * pSrcA,
+  q31_t * pSrcB,
+  q31_t * pDst,
+  uint32_t numSamples)
+{
+  q31_t a, b, c, d;                              /* Temporary variables to store real and imaginary values */
+  uint32_t blkCnt;                               /* loop counters */
+  q31_t mul1, mul2, mul3, mul4;
+  q31_t out1, out2;
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 1U;
+
+  /* First part of the processing with loop unrolling.  Compute 2 outputs at a time.
+   ** a second loop below computes the remaining 1 sample. */
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+  /* If the blockSize is not a multiple of 2, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x2U;
+
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[2 * i] - A[2 * i + 1] * B[2 * i + 1].  */
+    /* C[2 * i + 1] = A[2 * i] * B[2 * i + 1] + A[2 * i + 1] * B[2 * i].  */
+    a = *pSrcA++;
+    b = *pSrcA++;
+    c = *pSrcB++;
+    d = *pSrcB++;
+
+    mul1 = (q31_t) (((q63_t) a * c) >> 32);
+    mul2 = (q31_t) (((q63_t) b * d) >> 32);
+    mul3 = (q31_t) (((q63_t) a * d) >> 32);
+    mul4 = (q31_t) (((q63_t) b * c) >> 32);
+
+    mul1 = (mul1 >> 1);
+    mul2 = (mul2 >> 1);
+    mul3 = (mul3 >> 1);
+    mul4 = (mul4 >> 1);
+
+    out1 = mul1 - mul2;
+    out2 = mul3 + mul4;
+
+    /* store the real result in 3.29 format in the destination buffer. */
+    *pDst++ = out1;
+    /* store the imag result in 3.29 format in the destination buffer. */
+    *pDst++ = out2;
+
+    /* Decrement the blockSize loop counter */
+    blkCnt--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+}
+
+/**
+ * @} end of CmplxByCmplxMult group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
new file mode 100644
index 0000000..6f45804
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
@@ -0,0 +1,213 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mult_real_f32.c
+ * Description:  Floating-point complex by real multiplication
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @defgroup CmplxByRealMult Complex-by-Real Multiplication
+ *
+ * Multiplies a complex vector by a real vector and generates a complex result.
+ * The data in the complex arrays is stored in an interleaved fashion
+ * (real, imag, real, imag, ...).
+ * The parameter numSamples represents the number of complex
+ * samples processed.  The complex arrays have a total of 2*numSamples
+ * real values while the real array has a total of numSamples
+ * real values.
+ *
+ * The underlying algorithm is used:
+ *
+ * 
+ * for(n=0; n
+ *
+ * There are separate functions for floating-point, Q15, and Q31 data types.
+ */
+
+/**
+ * @addtogroup CmplxByRealMult
+ * @{
+ */
+
+
+/**
+ * @brief  Floating-point complex-by-real multiplication
+ * @param[in]  *pSrcCmplx points to the complex input vector
+ * @param[in]  *pSrcReal points to the real input vector
+ * @param[out]  *pCmplxDst points to the complex output vector
+ * @param[in]  numSamples number of samples in each vector
+ * @return none.
+ */
+
+void arm_cmplx_mult_real_f32(
+  float32_t * pSrcCmplx,
+  float32_t * pSrcReal,
+  float32_t * pCmplxDst,
+  uint32_t numSamples)
+{
+  float32_t in;                                  /* Temporary variable to store input value */
+  uint32_t blkCnt;                               /* loop counters */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  float32_t inA1, inA2, inA3, inA4;              /* Temporary variables to hold input data */
+  float32_t inA5, inA6, inA7, inA8;              /* Temporary variables to hold input data */
+  float32_t inB1, inB2, inB3, inB4;              /* Temporary variables to hold input data */
+  float32_t out1, out2, out3, out4;              /* Temporary variables to hold output data */
+  float32_t out5, out6, out7, out8;              /* Temporary variables to hold output data */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    /* read input from complex input buffer */
+    inA1 = pSrcCmplx[0];
+    inA2 = pSrcCmplx[1];
+    /* read input from real input buffer */
+    inB1 = pSrcReal[0];
+
+    /* read input from complex input buffer */
+    inA3 = pSrcCmplx[2];
+
+    /* multiply complex buffer real input with real buffer input */
+    out1 = inA1 * inB1;
+
+    /* read input from complex input buffer */
+    inA4 = pSrcCmplx[3];
+
+    /* multiply complex buffer imaginary input with real buffer input */
+    out2 = inA2 * inB1;
+
+    /* read input from real input buffer */
+    inB2 = pSrcReal[1];
+    /* read input from complex input buffer */
+    inA5 = pSrcCmplx[4];
+
+    /* multiply complex buffer real input with real buffer input */
+    out3 = inA3 * inB2;
+
+    /* read input from complex input buffer */
+    inA6 = pSrcCmplx[5];
+    /* read input from real input buffer */
+    inB3 = pSrcReal[2];
+
+    /* multiply complex buffer imaginary input with real buffer input */
+    out4 = inA4 * inB2;
+
+    /* read input from complex input buffer */
+    inA7 = pSrcCmplx[6];
+
+    /* multiply complex buffer real input with real buffer input */
+    out5 = inA5 * inB3;
+
+    /* read input from complex input buffer */
+    inA8 = pSrcCmplx[7];
+
+    /* multiply complex buffer imaginary input with real buffer input */
+    out6 = inA6 * inB3;
+
+    /* read input from real input buffer */
+    inB4 = pSrcReal[3];
+
+    /* store result to destination bufer */
+    pCmplxDst[0] = out1;
+
+    /* multiply complex buffer real input with real buffer input */
+    out7 = inA7 * inB4;
+
+    /* store result to destination bufer */
+    pCmplxDst[1] = out2;
+
+    /* multiply complex buffer imaginary input with real buffer input */
+    out8 = inA8 * inB4;
+
+    /* store result to destination bufer */
+    pCmplxDst[2] = out3;
+    pCmplxDst[3] = out4;
+    pCmplxDst[4] = out5;
+
+    /* incremnet complex input buffer by 8 to process next samples */
+    pSrcCmplx += 8U;
+
+    /* store result to destination bufer */
+    pCmplxDst[5] = out6;
+
+    /* increment real input buffer by 4 to process next samples */
+    pSrcReal += 4U;
+
+    /* store result to destination bufer */
+    pCmplxDst[6] = out7;
+    pCmplxDst[7] = out8;
+
+    /* increment destination buffer by 8 to process next sampels */
+    pCmplxDst += 8U;
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+  blkCnt = numSamples;
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+    *pCmplxDst++ = (*pSrcCmplx++) * (in);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+}
+
+/**
+ * @} end of CmplxByRealMult group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
new file mode 100644
index 0000000..abafc3b
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
@@ -0,0 +1,191 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mult_real_q15.c
+ * Description:  Q15 complex by real multiplication
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup CmplxByRealMult
+ * @{
+ */
+
+
+/**
+ * @brief  Q15 complex-by-real multiplication
+ * @param[in]  *pSrcCmplx points to the complex input vector
+ * @param[in]  *pSrcReal points to the real input vector
+ * @param[out]  *pCmplxDst points to the complex output vector
+ * @param[in]  numSamples number of samples in each vector
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function uses saturating arithmetic.
+ * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated.
+ */
+
+void arm_cmplx_mult_real_q15(
+  q15_t * pSrcCmplx,
+  q15_t * pSrcReal,
+  q15_t * pCmplxDst,
+  uint32_t numSamples)
+{
+  q15_t in;                                      /* Temporary variable to store input value */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+  q31_t inA1, inA2;                              /* Temporary variables to hold input data */
+  q31_t inB1;                                    /* Temporary variables to hold input data */
+  q15_t out1, out2, out3, out4;                  /* Temporary variables to hold output data */
+  q31_t mul1, mul2, mul3, mul4;                  /* Temporary variables to hold intermediate data */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    /* read complex number both real and imaginary from complex input buffer */
+    inA1 = *__SIMD32(pSrcCmplx)++;
+    /* read two real values at a time from real input buffer */
+    inB1 = *__SIMD32(pSrcReal)++;
+    /* read complex number both real and imaginary from complex input buffer */
+    inA2 = *__SIMD32(pSrcCmplx)++;
+
+    /* multiply complex number with real numbers */
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    mul1 = (q31_t) ((q15_t) (inA1) * (q15_t) (inB1));
+    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1));
+    mul3 = (q31_t) ((q15_t) (inA2) * (q15_t) (inB1 >> 16));
+    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB1 >> 16));
+
+#else
+
+    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));
+    mul1 = (q31_t) ((q15_t) inA1 * (q15_t) (inB1 >> 16));
+    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) inB1);
+    mul3 = (q31_t) ((q15_t) inA2 * (q15_t) inB1);
+
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
+
+    /* saturate the result */
+    out1 = (q15_t) __SSAT(mul1 >> 15U, 16);
+    out2 = (q15_t) __SSAT(mul2 >> 15U, 16);
+    out3 = (q15_t) __SSAT(mul3 >> 15U, 16);
+    out4 = (q15_t) __SSAT(mul4 >> 15U, 16);
+
+    /* pack real and imaginary outputs and store them to destination */
+    *__SIMD32(pCmplxDst)++ = __PKHBT(out1, out2, 16);
+    *__SIMD32(pCmplxDst)++ = __PKHBT(out3, out4, 16);
+
+    inA1 = *__SIMD32(pSrcCmplx)++;
+    inB1 = *__SIMD32(pSrcReal)++;
+    inA2 = *__SIMD32(pSrcCmplx)++;
+
+#ifndef ARM_MATH_BIG_ENDIAN
+
+    mul1 = (q31_t) ((q15_t) (inA1) * (q15_t) (inB1));
+    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1));
+    mul3 = (q31_t) ((q15_t) (inA2) * (q15_t) (inB1 >> 16));
+    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB1 >> 16));
+
+#else
+
+    mul2 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16));
+    mul1 = (q31_t) ((q15_t) inA1 * (q15_t) (inB1 >> 16));
+    mul4 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) inB1);
+    mul3 = (q31_t) ((q15_t) inA2 * (q15_t) inB1);
+
+#endif /* #ifndef ARM_MATH_BIG_ENDIAN */
+
+    out1 = (q15_t) __SSAT(mul1 >> 15U, 16);
+    out2 = (q15_t) __SSAT(mul2 >> 15U, 16);
+    out3 = (q15_t) __SSAT(mul3 >> 15U, 16);
+    out4 = (q15_t) __SSAT(mul4 >> 15U, 16);
+
+    *__SIMD32(pCmplxDst)++ = __PKHBT(out1, out2, 16);
+    *__SIMD32(pCmplxDst)++ = __PKHBT(out3, out4, 16);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while (numSamples > 0U)
+  {
+    /* realOut = realA * realB.            */
+    /* imagOut = imagA * realB.                */
+    in = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+    *pCmplxDst++ =
+      (q15_t) __SSAT((((q31_t) (*pSrcCmplx++) * (in)) >> 15), 16);
+
+    /* Decrement the numSamples loop counter */
+    numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+}
+
+/**
+ * @} end of CmplxByRealMult group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
new file mode 100644
index 0000000..aaa3ec0
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
@@ -0,0 +1,211 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cmplx_mult_real_q31.c
+ * Description:  Q31 complex by real multiplication
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+/**
+ * @ingroup groupCmplxMath
+ */
+
+/**
+ * @addtogroup CmplxByRealMult
+ * @{
+ */
+
+
+/**
+ * @brief  Q31 complex-by-real multiplication
+ * @param[in]  *pSrcCmplx points to the complex input vector
+ * @param[in]  *pSrcReal points to the real input vector
+ * @param[out]  *pCmplxDst points to the complex output vector
+ * @param[in]  numSamples number of samples in each vector
+ * @return none.
+ *
+ * Scaling and Overflow Behavior:
+ * \par
+ * The function uses saturating arithmetic.
+ * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated.
+ */
+
+void arm_cmplx_mult_real_q31(
+  q31_t * pSrcCmplx,
+  q31_t * pSrcReal,
+  q31_t * pCmplxDst,
+  uint32_t numSamples)
+{
+  q31_t inA1;                                    /* Temporary variable to store input value */
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+  uint32_t blkCnt;                               /* loop counters */
+  q31_t inA2, inA3, inA4;                        /* Temporary variables to hold input data */
+  q31_t inB1, inB2;                              /* Temporary variabels to hold input data */
+  q31_t out1, out2, out3, out4;                  /* Temporary variables to hold output data */
+
+  /* loop Unrolling */
+  blkCnt = numSamples >> 2U;
+
+  /* First part of the processing with loop unrolling.  Compute 4 outputs at a time.
+   ** a second loop below computes the remaining 1 to 3 samples. */
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    /* read real input from complex input buffer */
+    inA1 = *pSrcCmplx++;
+    inA2 = *pSrcCmplx++;
+    /* read input from real input bufer */
+    inB1 = *pSrcReal++;
+    inB2 = *pSrcReal++;
+    /* read imaginary input from complex input buffer */
+    inA3 = *pSrcCmplx++;
+    inA4 = *pSrcCmplx++;
+
+    /* multiply complex input with real input */
+    out1 = ((q63_t) inA1 * inB1) >> 32;
+    out2 = ((q63_t) inA2 * inB1) >> 32;
+    out3 = ((q63_t) inA3 * inB2) >> 32;
+    out4 = ((q63_t) inA4 * inB2) >> 32;
+
+    /* sature the result */
+    out1 = __SSAT(out1, 31);
+    out2 = __SSAT(out2, 31);
+    out3 = __SSAT(out3, 31);
+    out4 = __SSAT(out4, 31);
+
+    /* get result in 1.31 format */
+    out1 = out1 << 1;
+    out2 = out2 << 1;
+    out3 = out3 << 1;
+    out4 = out4 << 1;
+
+    /* store the result to destination buffer */
+    *pCmplxDst++ = out1;
+    *pCmplxDst++ = out2;
+    *pCmplxDst++ = out3;
+    *pCmplxDst++ = out4;
+
+    /* read real input from complex input buffer */
+    inA1 = *pSrcCmplx++;
+    inA2 = *pSrcCmplx++;
+    /* read input from real input bufer */
+    inB1 = *pSrcReal++;
+    inB2 = *pSrcReal++;
+    /* read imaginary input from complex input buffer */
+    inA3 = *pSrcCmplx++;
+    inA4 = *pSrcCmplx++;
+
+    /* multiply complex input with real input */
+    out1 = ((q63_t) inA1 * inB1) >> 32;
+    out2 = ((q63_t) inA2 * inB1) >> 32;
+    out3 = ((q63_t) inA3 * inB2) >> 32;
+    out4 = ((q63_t) inA4 * inB2) >> 32;
+
+    /* sature the result */
+    out1 = __SSAT(out1, 31);
+    out2 = __SSAT(out2, 31);
+    out3 = __SSAT(out3, 31);
+    out4 = __SSAT(out4, 31);
+
+    /* get result in 1.31 format */
+    out1 = out1 << 1;
+    out2 = out2 << 1;
+    out3 = out3 << 1;
+    out4 = out4 << 1;
+
+    /* store the result to destination buffer */
+    *pCmplxDst++ = out1;
+    *pCmplxDst++ = out2;
+    *pCmplxDst++ = out3;
+    *pCmplxDst++ = out4;
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+  /* If the numSamples is not a multiple of 4, compute any remaining output samples here.
+   ** No loop unrolling is used. */
+  blkCnt = numSamples % 0x4U;
+
+  while (blkCnt > 0U)
+  {
+    /* C[2 * i] = A[2 * i] * B[i].            */
+    /* C[2 * i + 1] = A[2 * i + 1] * B[i].        */
+    /* read real input from complex input buffer */
+    inA1 = *pSrcCmplx++;
+    inA2 = *pSrcCmplx++;
+    /* read input from real input bufer */
+    inB1 = *pSrcReal++;
+
+    /* multiply complex input with real input */
+    out1 = ((q63_t) inA1 * inB1) >> 32;
+    out2 = ((q63_t) inA2 * inB1) >> 32;
+
+    /* sature the result */
+    out1 = __SSAT(out1, 31);
+    out2 = __SSAT(out2, 31);
+
+    /* get result in 1.31 format */
+    out1 = out1 << 1;
+    out2 = out2 << 1;
+
+    /* store the result to destination buffer */
+    *pCmplxDst++ = out1;
+    *pCmplxDst++ = out2;
+
+    /* Decrement the numSamples loop counter */
+    blkCnt--;
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  while (numSamples > 0U)
+  {
+    /* realOut = realA * realB.            */
+    /* imagReal = imagA * realB.               */
+    inA1 = *pSrcReal++;
+    /* store the result in the destination buffer. */
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * inA1) >> 31);
+    *pCmplxDst++ =
+      (q31_t) clip_q63_to_q31(((q63_t) * pSrcCmplx++ * inA1) >> 31);
+
+    /* Decrement the numSamples loop counter */
+    numSamples--;
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+}
+
+/**
+ * @} end of CmplxByRealMult group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c
new file mode 100644
index 0000000..e729500
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_f32.c
@@ -0,0 +1,74 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_pid_init_f32.c
+ * Description:  Floating-point PID Control initialization function
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+ /**
+ * @addtogroup PID
+ * @{
+ */
+
+/**
+ * @brief  Initialization function for the floating-point PID Control.
+ * @param[in,out] *S points to an instance of the PID structure.
+ * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state & 1 = reset the state.
+ * @return none.
+ * \par Description:
+ * \par
+ * The resetStateFlag specifies whether to set state to zero or not. \n
+ * The function computes the structure fields: A0, A1 A2
+ * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)
+ * also sets the state variables to all zeros.
+ */
+
+void arm_pid_init_f32(
+  arm_pid_instance_f32 * S,
+  int32_t resetStateFlag)
+{
+
+  /* Derived coefficient A0 */
+  S->A0 = S->Kp + S->Ki + S->Kd;
+
+  /* Derived coefficient A1 */
+  S->A1 = (-S->Kp) - ((float32_t) 2.0 * S->Kd);
+
+  /* Derived coefficient A2 */
+  S->A2 = S->Kd;
+
+  /* Check whether state needs reset or not */
+  if (resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3U * sizeof(float32_t));
+  }
+
+}
+
+/**
+ * @} end of PID group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c
new file mode 100644
index 0000000..0f83f35
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q15.c
@@ -0,0 +1,110 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_pid_init_q15.c
+ * Description:  Q15 PID Control initialization function
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+ /**
+ * @addtogroup PID
+ * @{
+ */
+
+/**
+ * @details
+ * @param[in,out] *S points to an instance of the Q15 PID structure.
+ * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
+ * @return none.
+ * \par Description:
+ * \par
+ * The resetStateFlag specifies whether to set state to zero or not. \n
+ * The function computes the structure fields: A0, A1 A2
+ * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)
+ * also sets the state variables to all zeros.
+ */
+
+void arm_pid_init_q15(
+  arm_pid_instance_q15 * S,
+  int32_t resetStateFlag)
+{
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Derived coefficient A0 */
+  S->A0 = __QADD16(__QADD16(S->Kp, S->Ki), S->Kd);
+
+  /* Derived coefficients and pack into A1 */
+
+#ifndef  ARM_MATH_BIG_ENDIAN
+
+  S->A1 = __PKHBT(-__QADD16(__QADD16(S->Kd, S->Kd), S->Kp), S->Kd, 16);
+
+#else
+
+  S->A1 = __PKHBT(S->Kd, -__QADD16(__QADD16(S->Kd, S->Kd), S->Kp), 16);
+
+#endif /*      #ifndef  ARM_MATH_BIG_ENDIAN    */
+
+  /* Check whether state needs reset or not */
+  if (resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3U * sizeof(q15_t));
+  }
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t temp;                                    /*to store the sum */
+
+  /* Derived coefficient A0 */
+  temp = S->Kp + S->Ki + S->Kd;
+  S->A0 = (q15_t) __SSAT(temp, 16);
+
+  /* Derived coefficients and pack into A1 */
+  temp = -(S->Kd + S->Kd + S->Kp);
+  S->A1 = (q15_t) __SSAT(temp, 16);
+  S->A2 = S->Kd;
+
+
+
+  /* Check whether state needs reset or not */
+  if (resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3U * sizeof(q15_t));
+  }
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+}
+
+/**
+ * @} end of PID group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c
new file mode 100644
index 0000000..ce2936e
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_init_q31.c
@@ -0,0 +1,95 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_pid_init_q31.c
+ * Description:  Q31 PID Control initialization function
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+ /**
+ * @addtogroup PID
+ * @{
+ */
+
+/**
+ * @brief  Initialization function for the Q31 PID Control.
+ * @param[in,out] *S points to an instance of the Q31 PID structure.
+ * @param[in]     resetStateFlag  flag to reset the state. 0 = no change in state 1 = reset the state.
+ * @return none.
+ * \par Description:
+ * \par
+ * The resetStateFlag specifies whether to set state to zero or not. \n
+ * The function computes the structure fields: A0, A1 A2
+ * using the proportional gain( \c Kp), integral gain( \c Ki) and derivative gain( \c Kd)
+ * also sets the state variables to all zeros.
+ */
+
+void arm_pid_init_q31(
+  arm_pid_instance_q31 * S,
+  int32_t resetStateFlag)
+{
+
+#if defined (ARM_MATH_DSP)
+
+  /* Run the below code for Cortex-M4 and Cortex-M3 */
+
+  /* Derived coefficient A0 */
+  S->A0 = __QADD(__QADD(S->Kp, S->Ki), S->Kd);
+
+  /* Derived coefficient A1 */
+  S->A1 = -__QADD(__QADD(S->Kd, S->Kd), S->Kp);
+
+
+#else
+
+  /* Run the below code for Cortex-M0 */
+
+  q31_t temp;
+
+  /* Derived coefficient A0 */
+  temp = clip_q63_to_q31((q63_t) S->Kp + S->Ki);
+  S->A0 = clip_q63_to_q31((q63_t) temp + S->Kd);
+
+  /* Derived coefficient A1 */
+  temp = clip_q63_to_q31((q63_t) S->Kd + S->Kd);
+  S->A1 = -clip_q63_to_q31((q63_t) temp + S->Kp);
+
+#endif /* #if defined (ARM_MATH_DSP) */
+
+  /* Derived coefficient A2 */
+  S->A2 = S->Kd;
+
+  /* Check whether state needs reset or not */
+  if (resetStateFlag)
+  {
+    /* Clear the state buffer.  The size will be always 3 samples */
+    memset(S->state, 0, 3U * sizeof(q31_t));
+  }
+
+}
+
+/**
+ * @} end of PID group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c
new file mode 100644
index 0000000..acc1709
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_f32.c
@@ -0,0 +1,53 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_pid_reset_f32.c
+ * Description:  Floating-point PID Control reset function
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+ /**
+ * @addtogroup PID
+ * @{
+ */
+
+/**
+* @brief  Reset function for the floating-point PID Control.
+* @param[in] *S	Instance pointer of PID control data structure.
+* @return none.
+* \par Description:
+* The function resets the state buffer to zeros.
+*/
+void arm_pid_reset_f32(
+  arm_pid_instance_f32 * S)
+{
+
+  /* Clear the state buffer.  The size will be always 3 samples */
+  memset(S->state, 0, 3U * sizeof(float32_t));
+}
+
+/**
+ * @} end of PID group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c
new file mode 100644
index 0000000..59c4416
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q15.c
@@ -0,0 +1,52 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_pid_reset_q15.c
+ * Description:  Q15 PID Control reset function
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+ /**
+ * @addtogroup PID
+ * @{
+ */
+
+/**
+* @brief  Reset function for the Q15 PID Control.
+* @param[in] *S		Instance pointer of PID control data structure.
+* @return none.
+* \par Description:
+* The function resets the state buffer to zeros.
+*/
+void arm_pid_reset_q15(
+  arm_pid_instance_q15 * S)
+{
+  /* Reset state to zero, The size will be always 3 samples */
+  memset(S->state, 0, 3U * sizeof(q15_t));
+}
+
+/**
+ * @} end of PID group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c
new file mode 100644
index 0000000..7112a77
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_pid_reset_q31.c
@@ -0,0 +1,53 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_pid_reset_q31.c
+ * Description:  Q31 PID Control reset function
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+
+ /**
+ * @addtogroup PID
+ * @{
+ */
+
+/**
+* @brief  Reset function for the Q31 PID Control.
+* @param[in] *S	Instance pointer of PID control data structure.
+* @return none.
+* \par Description:
+* The function resets the state buffer to zeros.
+*/
+void arm_pid_reset_q31(
+  arm_pid_instance_q31 * S)
+{
+
+  /* Clear the state buffer.  The size will be always 3 samples */
+  memset(S->state, 0, 3U * sizeof(q31_t));
+}
+
+/**
+ * @} end of PID group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c
new file mode 100644
index 0000000..2aff091
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_f32.c
@@ -0,0 +1,144 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_sin_cos_f32.c
+ * Description:  Sine and Cosine calculation for floating-point values
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**
+ * @ingroup groupController
+ */
+
+/**
+ * @defgroup SinCos Sine Cosine
+ *
+ * Computes the trigonometric sine and cosine values using a combination of table lookup
+ * and linear interpolation.
+ * There are separate functions for Q31 and floating-point data types.
+ * The input to the floating-point version is in degrees while the
+ * fixed-point Q31 have a scaled input with the range
+ * [-1 0.9999] mapping to [-180 +180] degrees.
+ *
+ * The floating point function also allows values that are out of the usual range. When this happens, the function will
+ * take extra time to adjust the input value to the range of [-180 180].
+ *
+ * The result is accurate to 5 digits after the decimal point.
+ *
+ * The implementation is based on table lookup using 360 values together with linear interpolation.
+ * The steps used are:
+ *  -# Calculation of the nearest integer table index.
+ *  -# Compute the fractional portion (fract) of the input.
+ *  -# Fetch the value corresponding to \c index from sine table to \c y0 and also value from \c index+1 to \c y1.
+ *  -# Sine value is computed as  *psinVal = y0 + (fract * (y1 - y0)).
+ *  -# Fetch the value corresponding to \c index from cosine table to \c y0 and also value from \c index+1 to \c y1.
+ *  -# Cosine value is computed as  *pcosVal = y0 + (fract * (y1 - y0)).
+ */
+
+ /**
+ * @addtogroup SinCos
+ * @{
+ */
+
+/**
+ * @brief  Floating-point sin_cos function.
+ * @param[in]  theta    input value in degrees
+ * @param[out] *pSinVal points to the processed sine output.
+ * @param[out] *pCosVal points to the processed cos output.
+ * @return none.
+ */
+
+void arm_sin_cos_f32(
+                      float32_t theta,
+                      float32_t * pSinVal,
+                      float32_t * pCosVal)
+{
+    float32_t fract, in;                             /* Temporary variables for input, output */
+    uint16_t indexS, indexC;                         /* Index variable */
+    float32_t f1, f2, d1, d2;                        /* Two nearest output values */
+    float32_t findex, Dn, Df, temp;
+
+    /* input x is in degrees */
+    /* Scale the input, divide input by 360, for cosine add 0.25 (pi/2) to read sine table */
+    in = theta * 0.00277777777778f;
+
+    if (in < 0.0f)
+    {
+        in = -in;
+    }
+
+    in = in - (int32_t)in;
+
+    /* Calculation of index of the table */
+    findex = (float32_t) FAST_MATH_TABLE_SIZE * in;
+    indexS = ((uint16_t)findex) & 0x1ff;
+    indexC = (indexS + (FAST_MATH_TABLE_SIZE / 4)) & 0x1ff;
+
+    /* fractional value calculation */
+    fract = findex - (float32_t) indexS;
+
+    /* Read two nearest values of input value from the cos & sin tables */
+    f1 = sinTable_f32[indexC+0];
+    f2 = sinTable_f32[indexC+1];
+    d1 = -sinTable_f32[indexS+0];
+    d2 = -sinTable_f32[indexS+1];
+
+    temp = (1.0f - fract) * f1 + fract * f2;
+
+    Dn = 0.0122718463030f; // delta between the two points (fixed), in this case 2*pi/FAST_MATH_TABLE_SIZE
+    Df = f2 - f1;          // delta between the values of the functions
+
+    temp = Dn *(d1 + d2) - 2 * Df;
+    temp = fract * temp + (3 * Df - (d2 + 2 * d1) * Dn);
+    temp = fract * temp + d1 * Dn;
+
+    /* Calculation of cosine value */
+    *pCosVal = fract * temp + f1;
+
+    /* Read two nearest values of input value from the cos & sin tables */
+    f1 = sinTable_f32[indexS+0];
+    f2 = sinTable_f32[indexS+1];
+    d1 = sinTable_f32[indexC+0];
+    d2 = sinTable_f32[indexC+1];
+
+    temp = (1.0f - fract) * f1 + fract * f2;
+
+    Df = f2 - f1; // delta between the values of the functions
+    temp = Dn*(d1 + d2) - 2*Df;
+    temp = fract*temp + (3*Df - (d2 + 2*d1)*Dn);
+    temp = fract*temp + d1*Dn;
+
+    /* Calculation of sine value */
+    *pSinVal = fract*temp + f1;
+
+    if (theta < 0.0f)
+    {
+        *pSinVal = -*pSinVal;
+    }
+}
+/**
+ * @} end of SinCos group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c
new file mode 100644
index 0000000..c1c33ec
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/ControllerFunctions/arm_sin_cos_q31.c
@@ -0,0 +1,110 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_sin_cos_q31.c
+ * Description:  Cosine & Sine calculation for Q31 values
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+
+/**
+ * @ingroup groupController
+ */
+
+ /**
+ * @addtogroup SinCos
+ * @{
+ */
+
+/**
+ * @brief  Q31 sin_cos function.
+ * @param[in]  theta    scaled input value in degrees
+ * @param[out] *pSinVal points to the processed sine output.
+ * @param[out] *pCosVal points to the processed cosine output.
+ * @return none.
+ *
+ * The Q31 input value is in the range [-1 0.999999] and is mapped to a degree value in the range [-180 179].
+ *
+ */
+
+void arm_sin_cos_q31(
+  q31_t theta,
+  q31_t * pSinVal,
+  q31_t * pCosVal)
+{
+  q31_t fract;                                 /* Temporary variables for input, output */
+  uint16_t indexS, indexC;                     /* Index variable */
+  q31_t f1, f2, d1, d2;                        /* Two nearest output values */
+  q31_t Dn, Df;
+  q63_t temp;
+
+  /* Calculate the nearest index */
+  indexS = (uint32_t)theta >> CONTROLLER_Q31_SHIFT;
+  indexC = (indexS + 128) & 0x1ff;
+
+  /* Calculation of fractional value */
+  fract = (theta - (indexS << CONTROLLER_Q31_SHIFT)) << 8;
+
+  /* Read two nearest values of input value from the cos & sin tables */
+  f1 = sinTable_q31[indexC+0];
+  f2 = sinTable_q31[indexC+1];
+  d1 = -sinTable_q31[indexS+0];
+  d2 = -sinTable_q31[indexS+1];
+
+  Dn = 0x1921FB5; // delta between the two points (fixed), in this case 2*pi/FAST_MATH_TABLE_SIZE
+  Df = f2 - f1; // delta between the values of the functions
+  temp = Dn*((q63_t)d1 + d2);
+  temp = temp - ((q63_t)Df << 32);
+  temp = (q63_t)fract*(temp >> 31);
+  temp = temp + ((3*(q63_t)Df << 31) - (d2 + ((q63_t)d1 << 1))*Dn);
+  temp = (q63_t)fract*(temp >> 31);
+  temp = temp + (q63_t)d1*Dn;
+  temp = (q63_t)fract*(temp >> 31);
+
+  /* Calculation of cosine value */
+  *pCosVal = clip_q63_to_q31((temp >> 31) + (q63_t)f1);
+
+  /* Read two nearest values of input value from the cos & sin tables */
+  f1 = sinTable_q31[indexS+0];
+  f2 = sinTable_q31[indexS+1];
+  d1 = sinTable_q31[indexC+0];
+  d2 = sinTable_q31[indexC+1];
+
+  Df = f2 - f1; // delta between the values of the functions
+  temp = Dn*((q63_t)d1 + d2);
+  temp = temp - ((q63_t)Df << 32);
+  temp = (q63_t)fract*(temp >> 31);
+  temp = temp + ((3*(q63_t)Df << 31) - (d2 + ((q63_t)d1 << 1))*Dn);
+  temp = (q63_t)fract*(temp >> 31);
+  temp = temp + (q63_t)d1*Dn;
+  temp = (q63_t)fract*(temp >> 31);
+
+  /* Calculation of sine value */
+  *pSinVal = clip_q63_to_q31((temp >> 31) + (q63_t)f1);
+}
+
+/**
+ * @} end of SinCos group
+ */
diff --git a/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c
new file mode 100644
index 0000000..44efbd5
--- /dev/null
+++ b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_f32.c
@@ -0,0 +1,115 @@
+/* ----------------------------------------------------------------------
+ * Project:      CMSIS DSP Library
+ * Title:        arm_cos_f32.c
+ * Description:  Fast cosine calculation for floating-point values
+ *
+ * $Date:        27. January 2017
+ * $Revision:    V.1.5.1
+ *
+ * Target Processor: Cortex-M cores
+ * -------------------------------------------------------------------- */
+/*
+ * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "arm_math.h"
+#include "arm_common_tables.h"
+/**
+ * @ingroup groupFastMath
+ */
+
+/**
+ * @defgroup cos Cosine
+ *
+ * Computes the trigonometric cosine function using a combination of table lookup
+ * and linear interpolation.  There are separate functions for
+ * Q15, Q31, and floating-point data types.
+ * The input to the floating-point version is in radians and in the range [0 2*pi) while the
+ * fixed-point Q15 and Q31 have a scaled input with the range
+ * [0 +0.9999] mapping to [0 2*pi).  The fixed-point range is chosen so that a
+ * value of 2*pi wraps around to 0.
+ *
+ * The implementation is based on table lookup using 256 values together with linear interpolation.
+ * The steps used are:
+ *  -# Calculation of the nearest integer table index
+ *  -# Compute the fractional portion (fract) of the table index.
+ *  -# The final result equals (1.0f-fract)*a + fract*b;
+ *
+ * where
+ * 
+ *    b=Table[index+0];
+ *    c=Table[index+1];
+ * 
+ */ + + /** + * @addtogroup cos + * @{ + */ + +/** + * @brief Fast approximation to the trigonometric cosine function for floating-point data. + * @param[in] x input value in radians. + * @return cos(x). + */ + +float32_t arm_cos_f32( + float32_t x) +{ + float32_t cosVal, fract, in; /* Temporary variables for input, output */ + uint16_t index; /* Index variable */ + float32_t a, b; /* Two nearest output values */ + int32_t n; + float32_t findex; + + /* input x is in radians */ + /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi, add 0.25 (pi/2) to read sine table */ + in = x * 0.159154943092f + 0.25f; + + /* Calculation of floor value of input */ + n = (int32_t) in; + + /* Make negative values towards -infinity */ + if (in < 0.0f) + { + n--; + } + + /* Map input value to [0 1] */ + in = in - (float32_t) n; + + /* Calculation of index of the table */ + findex = (float32_t) FAST_MATH_TABLE_SIZE * in; + index = ((uint16_t)findex) & 0x1ff; + + /* fractional value calculation */ + fract = findex - (float32_t) index; + + /* Read two nearest values of input value from the cos table */ + a = sinTable_f32[index]; + b = sinTable_f32[index+1]; + + /* Linear interpolation process */ + cosVal = (1.0f-fract)*a + fract*b; + + /* Return the output value */ + return (cosVal); +} + +/** + * @} end of cos group + */ diff --git a/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c new file mode 100644 index 0000000..036c5d7 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q15.c @@ -0,0 +1,84 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cos_q15.c + * Description: Fast cosine calculation for Q15 values + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupFastMath + */ + + /** + * @addtogroup cos + * @{ + */ + +/** + * @brief Fast approximation to the trigonometric cosine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + * + * The Q15 input value is in the range [0 +0.9999] and is mapped to a radian + * value in the range [0 2*pi). + */ + +q15_t arm_cos_q15( + q15_t x) +{ + q15_t cosVal; /* Temporary variables for input, output */ + int32_t index; /* Index variables */ + q15_t a, b; /* Four nearest output values */ + q15_t fract; /* Temporary values for fractional values */ + + /* add 0.25 (pi/2) to read sine table */ + x = (uint16_t)x + 0x2000; + if (x < 0) + { /* convert negative numbers to corresponding positive ones */ + x = (uint16_t)x + 0x8000; + } + + /* Calculate the nearest index */ + index = (uint32_t)x >> FAST_MATH_Q15_SHIFT; + + /* Calculation of fractional value */ + fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9; + + /* Read two nearest values of input value from the sin table */ + a = sinTable_q15[index]; + b = sinTable_q15[index+1]; + + /* Linear interpolation process */ + cosVal = (q31_t)(0x8000-fract)*a >> 16; + cosVal = (q15_t)((((q31_t)cosVal << 16) + ((q31_t)fract*b)) >> 16); + + return cosVal << 1; +} + +/** + * @} end of cos group + */ diff --git a/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c new file mode 100644 index 0000000..105addb --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_cos_q31.c @@ -0,0 +1,84 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cos_q31.c + * Description: Fast cosine calculation for Q31 values + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupFastMath + */ + + /** + * @addtogroup cos + * @{ + */ + +/** + * @brief Fast approximation to the trigonometric cosine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + * + * The Q31 input value is in the range [0 +0.9999] and is mapped to a radian + * value in the range [0 2*pi). + */ + +q31_t arm_cos_q31( + q31_t x) +{ + q31_t cosVal; /* Temporary variables for input, output */ + int32_t index; /* Index variables */ + q31_t a, b; /* Four nearest output values */ + q31_t fract; /* Temporary values for fractional values */ + + /* add 0.25 (pi/2) to read sine table */ + x = (uint32_t)x + 0x20000000; + if (x < 0) + { /* convert negative numbers to corresponding positive ones */ + x = (uint32_t)x + 0x80000000; + } + + /* Calculate the nearest index */ + index = (uint32_t)x >> FAST_MATH_Q31_SHIFT; + + /* Calculation of fractional value */ + fract = (x - (index << FAST_MATH_Q31_SHIFT)) << 9; + + /* Read two nearest values of input value from the sin table */ + a = sinTable_q31[index]; + b = sinTable_q31[index+1]; + + /* Linear interpolation process */ + cosVal = (q63_t)(0x80000000-fract)*a >> 32; + cosVal = (q31_t)((((q63_t)cosVal << 32) + ((q63_t)fract*b)) >> 32); + + return cosVal << 1; +} + +/** + * @} end of cos group + */ diff --git a/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c new file mode 100644 index 0000000..3fb5153 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_f32.c @@ -0,0 +1,123 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_sin_f32.c + * Description: Fast sine calculation for floating-point values + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" +#include + +/** + * @ingroup groupFastMath + */ + +/** + * @defgroup sin Sine + * + * Computes the trigonometric sine function using a combination of table lookup + * and linear interpolation. There are separate functions for + * Q15, Q31, and floating-point data types. + * The input to the floating-point version is in radians and in the range [0 2*pi) while the + * fixed-point Q15 and Q31 have a scaled input with the range + * [0 +0.9999] mapping to [0 2*pi). The fixed-point range is chosen so that a + * value of 2*pi wraps around to 0. + * + * The implementation is based on table lookup using 256 values together with linear interpolation. + * The steps used are: + * -# Calculation of the nearest integer table index + * -# Compute the fractional portion (fract) of the table index. + * -# The final result equals (1.0f-fract)*a + fract*b; + * + * where + *
+ *    b=Table[index+0];
+ *    c=Table[index+1];
+ * 
+ */ + +/** + * @addtogroup sin + * @{ + */ + +/** + * @brief Fast approximation to the trigonometric sine function for floating-point data. + * @param[in] x input value in radians. + * @return sin(x). + */ + +float32_t arm_sin_f32( + float32_t x) +{ + float32_t sinVal, fract, in; /* Temporary variables for input, output */ + uint16_t index; /* Index variable */ + float32_t a, b; /* Two nearest output values */ + int32_t n; + float32_t findex; + + /* Special case for small negative inputs */ + if ((x < 0.0f) && (x >= -1.9e-7f)) { + return x; + } + + /* input x is in radians */ + /* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi */ + in = x * 0.159154943092f; + + /* Calculation of floor value of input */ + n = (int32_t) in; + + /* Make negative values towards -infinity */ + if (x < 0.0f) + { + n--; + } + + /* Map input value to [0 1] */ + in = in - (float32_t) n; + + /* Calculation of index of the table */ + findex = (float32_t) FAST_MATH_TABLE_SIZE * in; + + index = ((uint16_t)findex) & 0x1ff; + + /* fractional value calculation */ + fract = findex - (float32_t) index; + + /* Read two nearest values of input value from the sin table */ + a = sinTable_f32[index]; + b = sinTable_f32[index+1]; + + /* Linear interpolation process */ + sinVal = (1.0f-fract)*a + fract*b; + + /* Return the output value */ + return (sinVal); +} + +/** + * @} end of sin group + */ diff --git a/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c new file mode 100644 index 0000000..9eecaa9 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q15.c @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_sin_q15.c + * Description: Fast sine calculation for Q15 values + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupFastMath + */ + + /** + * @addtogroup sin + * @{ + */ + +/** + * @brief Fast approximation to the trigonometric sine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + * + * The Q15 input value is in the range [0 +0.9999] and is mapped to a radian value in the range [0 2*pi). + */ + +q15_t arm_sin_q15( + q15_t x) +{ + q15_t sinVal; /* Temporary variables for input, output */ + int32_t index; /* Index variables */ + q15_t a, b; /* Four nearest output values */ + q15_t fract; /* Temporary values for fractional values */ + + /* Calculate the nearest index */ + index = (uint32_t)x >> FAST_MATH_Q15_SHIFT; + + /* Calculation of fractional value */ + fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9; + + /* Read two nearest values of input value from the sin table */ + a = sinTable_q15[index]; + b = sinTable_q15[index+1]; + + /* Linear interpolation process */ + sinVal = (q31_t)(0x8000-fract)*a >> 16; + sinVal = (q15_t)((((q31_t)sinVal << 16) + ((q31_t)fract*b)) >> 16); + + return sinVal << 1; +} + +/** + * @} end of sin group + */ diff --git a/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c new file mode 100644 index 0000000..2119016 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sin_q31.c @@ -0,0 +1,75 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_sin_q31.c + * Description: Fast sine calculation for Q31 values + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupFastMath + */ + + /** + * @addtogroup sin + * @{ + */ + +/** + * @brief Fast approximation to the trigonometric sine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + * + * The Q31 input value is in the range [0 +0.9999] and is mapped to a radian value in the range [0 2*pi). */ + +q31_t arm_sin_q31( + q31_t x) +{ + q31_t sinVal; /* Temporary variables for input, output */ + int32_t index; /* Index variables */ + q31_t a, b; /* Four nearest output values */ + q31_t fract; /* Temporary values for fractional values */ + + /* Calculate the nearest index */ + index = (uint32_t)x >> FAST_MATH_Q31_SHIFT; + + /* Calculation of fractional value */ + fract = (x - (index << FAST_MATH_Q31_SHIFT)) << 9; + + /* Read two nearest values of input value from the sin table */ + a = sinTable_q31[index]; + b = sinTable_q31[index+1]; + + /* Linear interpolation process */ + sinVal = (q63_t)(0x80000000-fract)*a >> 32; + sinVal = (q31_t)((((q63_t)sinVal << 32) + ((q63_t)fract*b)) >> 32); + + return sinVal << 1; +} + +/** + * @} end of sin group + */ diff --git a/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c new file mode 100644 index 0000000..83e4ddd --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q15.c @@ -0,0 +1,144 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_sqrt_q15.c + * Description: Q15 square root function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + + +/** + * @ingroup groupFastMath + */ + +/** + * @addtogroup SQRT + * @{ + */ + + /** + * @brief Q15 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. + * @param[out] *pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if the input value is positive + * and ARM_MATH_ARGUMENT_ERROR if the input is negative. For + * negative inputs, the function returns *pOut = 0. + */ + +arm_status arm_sqrt_q15( + q15_t in, + q15_t * pOut) +{ + q15_t number, temp1, var1, signBits1, half; + q31_t bits_val1; + float32_t temp_float1; + union + { + q31_t fracval; + float32_t floatval; + } tempconv; + + number = in; + + /* If the input is a positive number then compute the signBits. */ + if (number > 0) + { + signBits1 = __CLZ(number) - 17; + + /* Shift by the number of signBits1 */ + if ((signBits1 % 2) == 0) + { + number = number << signBits1; + } + else + { + number = number << (signBits1 - 1); + } + + /* Calculate half value of the number */ + half = number >> 1; + /* Store the number for later use */ + temp1 = number; + + /* Convert to float */ + temp_float1 = number * 3.051757812500000e-005f; + /*Store as integer */ + tempconv.floatval = temp_float1; + bits_val1 = tempconv.fracval; + /* Subtract the shifted value from the magic number to give intial guess */ + bits_val1 = 0x5f3759df - (bits_val1 >> 1); /* gives initial guess */ + /* Store as float */ + tempconv.fracval = bits_val1; + temp_float1 = tempconv.floatval; + /* Convert to integer format */ + var1 = (q31_t) (temp_float1 * 16384); + + /* 1st iteration */ + var1 = ((q15_t) ((q31_t) var1 * (0x3000 - + ((q15_t) + ((((q15_t) + (((q31_t) var1 * var1) >> 15)) * + (q31_t) half) >> 15))) >> 15)) << 2; + /* 2nd iteration */ + var1 = ((q15_t) ((q31_t) var1 * (0x3000 - + ((q15_t) + ((((q15_t) + (((q31_t) var1 * var1) >> 15)) * + (q31_t) half) >> 15))) >> 15)) << 2; + /* 3rd iteration */ + var1 = ((q15_t) ((q31_t) var1 * (0x3000 - + ((q15_t) + ((((q15_t) + (((q31_t) var1 * var1) >> 15)) * + (q31_t) half) >> 15))) >> 15)) << 2; + + /* Multiply the inverse square root with the original value */ + var1 = ((q15_t) (((q31_t) temp1 * var1) >> 15)) << 1; + + /* Shift the output down accordingly */ + if ((signBits1 % 2) == 0) + { + var1 = var1 >> (signBits1 / 2); + } + else + { + var1 = var1 >> ((signBits1 - 1) / 2); + } + *pOut = var1; + + return (ARM_MATH_SUCCESS); + } + /* If the number is a negative number then store zero as its square root value */ + else + { + *pOut = 0; + return (ARM_MATH_ARGUMENT_ERROR); + } +} + +/** + * @} end of SQRT group + */ diff --git a/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c new file mode 100644 index 0000000..de8c35f --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FastMathFunctions/arm_sqrt_q31.c @@ -0,0 +1,142 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_sqrt_q31.c + * Description: Q31 square root function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupFastMath + */ + +/** + * @addtogroup SQRT + * @{ + */ + +/** + * @brief Q31 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. + * @param[out] *pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if the input value is positive + * and ARM_MATH_ARGUMENT_ERROR if the input is negative. For + * negative inputs, the function returns *pOut = 0. + */ + +arm_status arm_sqrt_q31( + q31_t in, + q31_t * pOut) +{ + q31_t number, temp1, bits_val1, var1, signBits1, half; + float32_t temp_float1; + union + { + q31_t fracval; + float32_t floatval; + } tempconv; + + number = in; + + /* If the input is a positive number then compute the signBits. */ + if (number > 0) + { + signBits1 = __CLZ(number) - 1; + + /* Shift by the number of signBits1 */ + if ((signBits1 % 2) == 0) + { + number = number << signBits1; + } + else + { + number = number << (signBits1 - 1); + } + + /* Calculate half value of the number */ + half = number >> 1; + /* Store the number for later use */ + temp1 = number; + + /*Convert to float */ + temp_float1 = number * 4.6566128731e-010f; + /*Store as integer */ + tempconv.floatval = temp_float1; + bits_val1 = tempconv.fracval; + /* Subtract the shifted value from the magic number to give intial guess */ + bits_val1 = 0x5f3759df - (bits_val1 >> 1); /* gives initial guess */ + /* Store as float */ + tempconv.fracval = bits_val1; + temp_float1 = tempconv.floatval; + /* Convert to integer format */ + var1 = (q31_t) (temp_float1 * 1073741824); + + /* 1st iteration */ + var1 = ((q31_t) ((q63_t) var1 * (0x30000000 - + ((q31_t) + ((((q31_t) + (((q63_t) var1 * var1) >> 31)) * + (q63_t) half) >> 31))) >> 31)) << 2; + /* 2nd iteration */ + var1 = ((q31_t) ((q63_t) var1 * (0x30000000 - + ((q31_t) + ((((q31_t) + (((q63_t) var1 * var1) >> 31)) * + (q63_t) half) >> 31))) >> 31)) << 2; + /* 3rd iteration */ + var1 = ((q31_t) ((q63_t) var1 * (0x30000000 - + ((q31_t) + ((((q31_t) + (((q63_t) var1 * var1) >> 31)) * + (q63_t) half) >> 31))) >> 31)) << 2; + + /* Multiply the inverse square root with the original value */ + var1 = ((q31_t) (((q63_t) temp1 * var1) >> 31)) << 1; + + /* Shift the output down accordingly */ + if ((signBits1 % 2) == 0) + { + var1 = var1 >> (signBits1 / 2); + } + else + { + var1 = var1 >> ((signBits1 - 1) / 2); + } + *pOut = var1; + + return (ARM_MATH_SUCCESS); + } + /* If the number is a negative number then store zero as its square root value */ + else + { + *pOut = 0; + return (ARM_MATH_ARGUMENT_ERROR); + } +} + +/** + * @} end of SQRT group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c new file mode 100644 index 0000000..8a29213 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df1_32x64_init_q31.c + * Description: High precision Q31 Biquad cascade filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1_32x64 + * @{ + */ + +/** + * @details + * + * @param[in,out] *S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] postShift Shift to be applied after the accumulator. Varies according to the coefficients format. + * @return none + * + * Coefficient and State Ordering: + * + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
+ * 
+ * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 5*numStages values. + * + * \par + * The pState points to state variables array and size of each state variable is 1.63 format. + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. + * The state variables are arranged in the state array as: + *
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}
+ * 
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + */ + +void arm_biquad_cas_df1_32x64_init_q31( + arm_biquad_cas_df1_32x64_ins_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q63_t * pState, + uint8_t postShift) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign postShift to be applied to the output */ + S->postShift = postShift; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 4 * numStages */ + memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(q63_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF1_32x64 group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c new file mode 100644 index 0000000..d241f76 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c @@ -0,0 +1,549 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df1_32x64_q31.c + * Description: High precision Q31 Biquad cascade filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup BiquadCascadeDF1_32x64 High Precision Q31 Biquad Cascade Filter + * + * This function implements a high precision Biquad cascade filter which operates on + * Q31 data values. The filter coefficients are in 1.31 format and the state variables + * are in 1.63 format. The double precision state variables reduce quantization noise + * in the filter and provide a cleaner output. + * These filters are particularly useful when implementing filters in which the + * singularities are close to the unit circle. This is common for low pass or high + * pass filters with very low cutoff frequencies. + * + * The function operates on blocks of input and output data + * and each call to the function processes blockSize samples through + * the filter. pSrc and pDst points to input and output arrays + * containing blockSize Q31 values. + * + * \par Algorithm + * Each Biquad stage implements a second order filter using the difference equation: + *
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]
+ * 
+ * A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage. + * \image html Biquad.gif "Single Biquad filter stage" + * Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. + * Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. + * Pay careful attention to the sign of the feedback coefficients. + * Some design tools use the difference equation + *
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]
+ * 
+ * In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. + * + * \par + * Higher order filters are realized as a cascade of second order sections. + * numStages refers to the number of second order stages used. + * For example, an 8th order filter would be realized with numStages=4 second order stages. + * \image html BiquadCascade.gif "8th order filter using a cascade of Biquad stages" + * A 9th order filter would be realized with numStages=5 second order stages with the coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). + * + * \par + * The pState points to state variables array . + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2] and each state variable in 1.63 format to improve precision. + * The state variables are arranged in the array as: + *
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}
+ * 
+ * + * \par + * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values of data in 1.63 format. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. + * + * \par Init Function + * There is also an associated initialization function which performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * To do this manually without calling the init function, assign the follow subfields of the instance structure: + * numStages, pCoeffs, postShift, pState. Also set all of the values in pState to zero. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros before static initialization. + * For example, to statically initialize the filter instance structure use + *
+ *     arm_biquad_cas_df1_32x64_ins_q31 S1 = {numStages, pState, pCoeffs, postShift};
+ * 
+ * where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer; + * pCoeffs is the address of the coefficient buffer; postShift shift to be applied which is described in detail below. + * \par Fixed-Point Behavior + * Care must be taken while using Biquad Cascade 32x64 filter function. + * Following issues must be considered: + * - Scaling of coefficients + * - Filter gain + * - Overflow and saturation + * + * \par + * Filter coefficients are represented as fractional values and + * restricted to lie in the range [-1 +1). + * The processing function has an additional scaling parameter postShift + * which allows the filter coefficients to exceed the range [+1 -1). + * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. + * \image html BiquadPostshift.gif "Fixed-point Biquad with shift by postShift bits after accumulator" + * This essentially scales the filter coefficients by 2^postShift. + * For example, to realize the coefficients + *
+ *    {1.5, -0.8, 1.2, 1.6, -0.9}
+ * 
+ * set the Coefficient array to: + *
+ *    {0.75, -0.4, 0.6, 0.8, -0.45}
+ * 
+ * and set postShift=1 + * + * \par + * The second thing to keep in mind is the gain through the filter. + * The frequency response of a Biquad filter is a function of its coefficients. + * It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies. + * This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter. + * To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed. + * + * \par + * The third item to consider is the overflow and saturation behavior of the fixed-point Q31 version. + * This is described in the function specific documentation below. + */ + +/** + * @addtogroup BiquadCascadeDF1_32x64 + * @{ + */ + +/** + * @details + + * @param[in] *S points to an instance of the high precision Q31 Biquad cascade filter. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + * + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25). + * After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by postShift bits and the result truncated to + * 1.31 format by discarding the low 32 bits. + * + * \par + * Two related functions are provided in the CMSIS DSP library. + * arm_biquad_cascade_df1_q31() implements a Biquad cascade with 32-bit coefficients and state variables with a Q63 accumulator. + * arm_biquad_cascade_df1_fast_q31() implements a Biquad cascade with 32-bit coefficients and state variables with a Q31 accumulator. + */ + +void arm_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* input pointer initialization */ + q31_t *pOut = pDst; /* output pointer initialization */ + q63_t *pState = S->pState; /* state pointer initialization */ + q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ + q63_t acc; /* accumulator */ + q31_t Xn1, Xn2; /* Input Filter state variables */ + q63_t Yn1, Yn2; /* Output Filter state variables */ + q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q31_t Xn; /* temporary input */ + int32_t shift = (int32_t) S->postShift + 1; /* Shift to be applied to the output */ + uint32_t sample, stage = S->numStages; /* loop counters */ + q31_t acc_l, acc_h; /* temporary output */ + uint32_t uShift = ((uint32_t) S->postShift + 1U); + uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = (q31_t) (pState[0]); + Xn2 = (q31_t) (pState[1]); + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + /* The variable acc hold output value that is being computed and + * stored in the destination buffer + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) Xn *b0; + + /* acc += b1 * x[n-1] */ + acc += (q63_t) Xn1 *b1; + + /* acc += b[2] * x[n-2] */ + acc += (q63_t) Xn2 *b2; + + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn1, a1); + + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn2, a2); + + /* The result is converted to 1.63 , Yn2 variable is reused */ + Yn2 = acc << shift; + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the output in the destination buffer in 1.31 format. */ + *pOut = acc_h; + + /* Read the second input into Xn2, to reuse the value */ + Xn2 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc += b1 * x[n-1] */ + acc = (q63_t) Xn *b1; + + /* acc = b0 * x[n] */ + acc += (q63_t) Xn2 *b0; + + /* acc += b[2] * x[n-2] */ + acc += (q63_t) Xn1 *b2; + + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn2, a1); + + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn1, a2); + + /* The result is converted to 1.63, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Read the third input into Xn1, to reuse the value */ + Xn1 = *pIn++; + + /* The result is converted to 1.31 */ + /* Store the output in the destination buffer. */ + *(pOut + 1U) = acc_h; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) Xn1 *b0; + + /* acc += b1 * x[n-1] */ + acc += (q63_t) Xn2 *b1; + + /* acc += b[2] * x[n-2] */ + acc += (q63_t) Xn *b2; + + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn1, a1); + + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn2, a2); + + /* The result is converted to 1.63, Yn2 variable is reused */ + Yn2 = acc << shift; + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the output in the destination buffer in 1.31 format. */ + *(pOut + 2U) = acc_h; + + /* Read the fourth input into Xn, to reuse the value */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q63_t) Xn *b0; + + /* acc += b1 * x[n-1] */ + acc += (q63_t) Xn1 *b1; + + /* acc += b[2] * x[n-2] */ + acc += (q63_t) Xn2 *b2; + + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn2, a1); + + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn1, a2); + + /* The result is converted to 1.63, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the output in the destination buffer in 1.31 format. */ + *(pOut + 3U) = acc_h; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + + /* update output pointer */ + pOut += 4U; + + /* decrement the loop counter */ + sample--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + sample = (blockSize & 0x3U); + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) Xn *b0; + /* acc += b1 * x[n-1] */ + acc += (q63_t) Xn1 *b1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) Xn2 *b2; + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn1, a1); + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn2, a2); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + /* The result is converted to 1.63, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the output in the destination buffer in 1.31 format. */ + *pOut++ = acc_h; + /* Yn1 = acc << shift; */ + + /* Store the output in the destination buffer in 1.31 format. */ +/* *pOut++ = (q31_t) (acc >> (32 - shift)); */ + + /* decrement the loop counter */ + sample--; + } + + /* The first stage output is given as input to the second stage. */ + pIn = pDst; + + /* Reset to destination buffer working pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + /* Store the updated state variables back into the pState array */ + *pState++ = (q63_t) Xn1; + *pState++ = (q63_t) Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); + +#else + + /* Run the below code for Cortex-M0 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* The variable acc hold output value that is being computed and + * stored in the destination buffer + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q63_t) Xn *b0; + /* acc += b1 * x[n-1] */ + acc += (q63_t) Xn1 *b1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) Xn2 *b2; + /* acc += a1 * y[n-1] */ + acc += mult32x64(Yn1, a1); + /* acc += a2 * y[n-2] */ + acc += mult32x64(Yn2, a2); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + + /* The result is converted to 1.63, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc_h = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the output in the destination buffer in 1.31 format. */ + *pOut++ = acc_h; + + /* Yn1 = acc << shift; */ + + /* Store the output in the destination buffer in 1.31 format. */ + /* *pOut++ = (q31_t) (acc >> (32 - shift)); */ + + /* decrement the loop counter */ + sample--; + } + + /* The first stage output is given as input to the second stage. */ + pIn = pDst; + + /* Reset to destination buffer working pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = (q63_t) Xn1; + *pState++ = (q63_t) Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); + +#endif /* #if defined (ARM_MATH_DSP) */ +} + + /** + * @} end of BiquadCascadeDF1_32x64 group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c new file mode 100644 index 0000000..658e395 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c @@ -0,0 +1,412 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df1_f32.c + * Description: Processing function for the floating-point Biquad cascade DirectFormI(DF1) filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup BiquadCascadeDF1 Biquad Cascade IIR Filters Using Direct Form I Structure + * + * This set of functions implements arbitrary order recursive (IIR) filters. + * The filters are implemented as a cascade of second order Biquad sections. + * The functions support Q15, Q31 and floating-point data types. + * Fast version of Q15 and Q31 also supported on CortexM4 and Cortex-M3. + * + * The functions operate on blocks of input and output data and each call to the function + * processes blockSize samples through the filter. + * pSrc points to the array of input data and + * pDst points to the array of output data. + * Both arrays contain blockSize values. + * + * \par Algorithm + * Each Biquad stage implements a second order filter using the difference equation: + *
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2]
+ * 
+ * A Direct Form I algorithm is used with 5 coefficients and 4 state variables per stage. + * \image html Biquad.gif "Single Biquad filter stage" + * Coefficients b0, b1 and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. + * Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. + * Pay careful attention to the sign of the feedback coefficients. + * Some design tools use the difference equation + *
+ *     y[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] - a1 * y[n-1] - a2 * y[n-2]
+ * 
+ * In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. + * + * \par + * Higher order filters are realized as a cascade of second order sections. + * numStages refers to the number of second order stages used. + * For example, an 8th order filter would be realized with numStages=4 second order stages. + * \image html BiquadCascade.gif "8th order filter using a cascade of Biquad stages" + * A 9th order filter would be realized with numStages=5 second order stages with the coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). + * + * \par + * The pState points to state variables array. + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. + * The state variables are arranged in the pState array as: + *
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}
+ * 
+ * + * \par + * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values. + * The state variables are updated after each block of data is processed, the coefficients are untouched. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Init Functions + * There is also an associated initialization function for each data type. + * The initialization function performs following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * To do this manually without calling the init function, assign the follow subfields of the instance structure: + * numStages, pCoeffs, pState. Also set all of the values in pState to zero. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros before static initialization. + * The code below statically initializes each of the 3 different data type filter instance structures + *
+ *     arm_biquad_casd_df1_inst_f32 S1 = {numStages, pState, pCoeffs};
+ *     arm_biquad_casd_df1_inst_q15 S2 = {numStages, pState, pCoeffs, postShift};
+ *     arm_biquad_casd_df1_inst_q31 S3 = {numStages, pState, pCoeffs, postShift};
+ * 
+ * where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer; + * pCoeffs is the address of the coefficient buffer; postShift shift to be applied. + * + * \par Fixed-Point Behavior + * Care must be taken when using the Q15 and Q31 versions of the Biquad Cascade filter functions. + * Following issues must be considered: + * - Scaling of coefficients + * - Filter gain + * - Overflow and saturation + * + * \par + * Scaling of coefficients: + * Filter coefficients are represented as fractional values and + * coefficients are restricted to lie in the range [-1 +1). + * The fixed-point functions have an additional scaling parameter postShift + * which allow the filter coefficients to exceed the range [+1 -1). + * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. + * \image html BiquadPostshift.gif "Fixed-point Biquad with shift by postShift bits after accumulator" + * This essentially scales the filter coefficients by 2^postShift. + * For example, to realize the coefficients + *
+ *    {1.5, -0.8, 1.2, 1.6, -0.9}
+ * 
+ * set the pCoeffs array to: + *
+ *    {0.75, -0.4, 0.6, 0.8, -0.45}
+ * 
+ * and set postShift=1 + * + * \par + * Filter gain: + * The frequency response of a Biquad filter is a function of its coefficients. + * It is possible for the gain through the filter to exceed 1.0 meaning that the filter increases the amplitude of certain frequencies. + * This means that an input signal with amplitude < 1.0 may result in an output > 1.0 and these are saturated or overflowed based on the implementation of the filter. + * To avoid this behavior the filter needs to be scaled down such that its peak gain < 1.0 or the input signal must be scaled down so that the combination of input and filter are never overflowed. + * + * \par + * Overflow and saturation: + * For Q15 and Q31 versions, it is described separately as part of the function specific documentation below. + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @param[in] *S points to an instance of the floating-point Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + */ + +void arm_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* source pointer */ + float32_t *pOut = pDst; /* destination pointer */ + float32_t *pState = S->pState; /* pState pointer */ + float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ + float32_t acc; /* Simulates the accumulator */ + float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ + float32_t Xn1, Xn2, Yn1, Yn2; /* Filter pState variables */ + float32_t Xn; /* temporary input */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the pState values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + /* The variable acc hold output values that are being computed: + * + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (sample > 0U) + { + /* Read the first input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + Yn2 = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = Yn2; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + + /* Read the second input */ + Xn2 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + Yn1 = (b0 * Xn2) + (b1 * Xn) + (b2 * Xn1) + (a1 * Yn2) + (a2 * Yn1); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = Yn1; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + + /* Read the third input */ + Xn1 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + Yn2 = (b0 * Xn1) + (b1 * Xn2) + (b2 * Xn) + (a1 * Yn1) + (a2 * Yn2); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = Yn2; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + + /* Read the forth input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + Yn1 = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn2) + (a2 * Yn1); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = Yn1; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + + /* decrement the loop counter */ + sample--; + + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + sample = blockSize & 0x3U; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = acc; + + /* decrement the loop counter */ + sample--; + + } + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent numStages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset the output pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); + +#else + + /* Run the below code for Cortex-M0 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the pState values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* The variables acc holds the output value that is computed: + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + acc = (b0 * Xn) + (b1 * Xn1) + (b2 * Xn2) + (a1 * Yn1) + (a2 * Yn2); + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = acc; + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent numStages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset the output pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + + + /** + * @} end of BiquadCascadeDF1 group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c new file mode 100644 index 0000000..2a08968 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c @@ -0,0 +1,273 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df1_fast_q15.c + * Description: Fast processing function for the Q15 Biquad cascade filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @details + * @param[in] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around and distorts the result. + * In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25). + * The 2.30 accumulator is then shifted by postShift bits and the result truncated to 1.15 format by discarding the low 16 bits. + * + * \par + * Refer to the function arm_biquad_cascade_df1_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. Both the slow and the fast versions use the same instance structure. + * Use the function arm_biquad_cascade_df1_init_q15() to initialize the filter structure. + * + */ + +void arm_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pIn = pSrc; /* Source pointer */ + q15_t *pOut = pDst; /* Destination pointer */ + q31_t in; /* Temporary variable to hold input value */ + q31_t out; /* Temporary variable to hold output value */ + q31_t b0; /* Temporary variable to hold bo value */ + q31_t b1, a1; /* Filter coefficients */ + q31_t state_in, state_out; /* Filter state variables */ + q31_t acc; /* Accumulator */ + int32_t shift = (int32_t) (15 - S->postShift); /* Post shift */ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + uint32_t sample, stage = S->numStages; /* Stage loop counter */ + + + + do + { + + /* Read the b0 and 0 coefficients using SIMD */ + b0 = *__SIMD32(pCoeffs)++; + + /* Read the b1 and b2 coefficients using SIMD */ + b1 = *__SIMD32(pCoeffs)++; + + /* Read the a1 and a2 coefficients using SIMD */ + a1 = *__SIMD32(pCoeffs)++; + + /* Read the input state values from the state buffer: x[n-1], x[n-2] */ + state_in = *__SIMD32(pState)++; + + /* Read the output state values from the state buffer: y[n-1], y[n-2] */ + state_out = *__SIMD32(pState)--; + + /* Apply loop unrolling and compute 2 output values simultaneously. */ + /* The variable acc hold output values that are being computed: + * + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + sample = blockSize >> 1U; + + /* First part of the processing with loop unrolling. Compute 2 outputs at a time. + ** a second loop below computes the remaining 1 sample. */ + while (sample > 0U) + { + + /* Read the input */ + in = *__SIMD32(pIn)++; + + /* out = b0 * x[n] + 0 * 0 */ + out = __SMUAD(b0, in); + /* acc = b1 * x[n-1] + acc += b2 * x[n-2] + out */ + acc = __SMLAD(b1, state_in, out); + /* acc += a1 * y[n-1] + acc += a2 * y[n-2] */ + acc = __SMLAD(a1, state_out, acc); + + /* The result is converted from 3.29 to 1.31 and then saturation is applied */ + out = __SSAT((acc >> shift), 16); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, (in >> 16), 16); + state_out = __PKHBT(state_out >> 16, (out), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* out = b0 * x[n] + 0 * 0 */ + out = __SMUADX(b0, in); + /* acc0 = b1 * x[n-1] , acc0 += b2 * x[n-2] + out */ + acc = __SMLAD(b1, state_in, out); + /* acc += a1 * y[n-1] + acc += a2 * y[n-2] */ + acc = __SMLAD(a1, state_out, acc); + + /* The result is converted from 3.29 to 1.31 and then saturation is applied */ + out = __SSAT((acc >> shift), 16); + + + /* Store the output in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = __PKHBT(state_out, out, 16); + +#else + + *__SIMD32(pOut)++ = __PKHBT(out, state_out >> 16, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in >> 16, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, in, 16); + state_out = __PKHBT(state_out >> 16, out, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + /* Decrement the loop counter */ + sample--; + + } + + /* If the blockSize is not a multiple of 2, compute any remaining output samples here. + ** No loop unrolling is used. */ + + if ((blockSize & 0x1U) != 0U) + { + /* Read the input */ + in = *pIn++; + + /* out = b0 * x[n] + 0 * 0 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + out = __SMUAD(b0, in); + +#else + + out = __SMUADX(b0, in); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc = b1 * x[n-1], acc += b2 * x[n-2] + out */ + acc = __SMLAD(b1, state_in, out); + /* acc += a1 * y[n-1] + acc += a2 * y[n-2] */ + acc = __SMLAD(a1, state_out, acc); + + /* The result is converted from 3.29 to 1.31 and then saturation is applied */ + out = __SSAT((acc >> shift), 16); + + /* Store the output in the destination buffer. */ + *pOut++ = (q15_t) out; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, in, 16); + state_out = __PKHBT(state_out >> 16, out, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent (numStages - 1) occur in-place in the output buffer */ + pIn = pDst; + + /* Reset the output pointer */ + pOut = pDst; + + /* Store the updated state variables back into the state array */ + *__SIMD32(pState)++ = state_in; + *__SIMD32(pState)++ = state_out; + + + /* Decrement the loop counter */ + stage--; + + } while (stage > 0U); +} + + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c new file mode 100644 index 0000000..5e41faa --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c @@ -0,0 +1,292 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df1_fast_q31.c + * Description: Processing function for the Q31 Fast Biquad cascade DirectFormI(DF1) filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @details + * + * @param[in] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * This function is optimized for speed at the expense of fixed-point precision and overflow protection. + * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. + * These intermediate results are added to a 2.30 accumulator. + * Finally, the accumulator is saturated and converted to a 1.31 result. + * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signal must be scaled down by two bits and lie in the range [-0.25 +0.25). Use the intialization function + * arm_biquad_cascade_df1_init_q31() to initialize filter structure. + * + * \par + * Refer to the function arm_biquad_cascade_df1_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision. Both the slow and the fast versions use the same instance structure. + * Use the function arm_biquad_cascade_df1_init_q31() to initialize the filter structure. + */ + +void arm_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t acc = 0; /* accumulator */ + q31_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q31_t *pIn = pSrc; /* input pointer initialization */ + q31_t *pOut = pDst; /* output pointer initialization */ + q31_t *pState = S->pState; /* pState pointer initialization */ + q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ + q31_t Xn; /* temporary input */ + int32_t shift = (int32_t) S->postShift + 1; /* Shift to be applied to the output */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + /* The variables acc ... acc3 hold output values that are being computed: + * + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + /*acc = (q31_t) (((q63_t) b1 * Xn1) >> 32);*/ + mult_32x32_keep32_R(acc, b1, Xn1); + /* acc += b1 * x[n-1] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b0 * (Xn))) >> 32);*/ + multAcc_32x32_keep32_R(acc, b0, Xn); + /* acc += b[2] * x[n-2] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/ + multAcc_32x32_keep32_R(acc, b2, Xn2); + /* acc += a1 * y[n-1] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/ + multAcc_32x32_keep32_R(acc, a1, Yn1); + /* acc += a2 * y[n-2] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/ + multAcc_32x32_keep32_R(acc, a2, Yn2); + + /* The result is converted to 1.31 , Yn2 variable is reused */ + Yn2 = acc << shift; + + /* Read the second input */ + Xn2 = *(pIn + 1U); + + /* Store the output in the destination buffer. */ + *pOut = Yn2; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + /*acc = (q31_t) (((q63_t) b0 * (Xn2)) >> 32);*/ + mult_32x32_keep32_R(acc, b0, Xn2); + /* acc += b1 * x[n-1] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn))) >> 32);*/ + multAcc_32x32_keep32_R(acc, b1, Xn); + /* acc += b[2] * x[n-2] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn1))) >> 32);*/ + multAcc_32x32_keep32_R(acc, b2, Xn1); + /* acc += a1 * y[n-1] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);*/ + multAcc_32x32_keep32_R(acc, a1, Yn2); + /* acc += a2 * y[n-2] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);*/ + multAcc_32x32_keep32_R(acc, a2, Yn1); + + /* The result is converted to 1.31, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* Read the third input */ + Xn1 = *(pIn + 2U); + + /* Store the output in the destination buffer. */ + *(pOut + 1U) = Yn1; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + /*acc = (q31_t) (((q63_t) b0 * (Xn1)) >> 32);*/ + mult_32x32_keep32_R(acc, b0, Xn1); + /* acc += b1 * x[n-1] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn2))) >> 32);*/ + multAcc_32x32_keep32_R(acc, b1, Xn2); + /* acc += b[2] * x[n-2] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn))) >> 32);*/ + multAcc_32x32_keep32_R(acc, b2, Xn); + /* acc += a1 * y[n-1] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/ + multAcc_32x32_keep32_R(acc, a1, Yn1); + /* acc += a2 * y[n-2] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/ + multAcc_32x32_keep32_R(acc, a2, Yn2); + + /* The result is converted to 1.31, Yn2 variable is reused */ + Yn2 = acc << shift; + + /* Read the forth input */ + Xn = *(pIn + 3U); + + /* Store the output in the destination buffer. */ + *(pOut + 2U) = Yn2; + pIn += 4U; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + /*acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);*/ + mult_32x32_keep32_R(acc, b0, Xn); + /* acc += b1 * x[n-1] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);*/ + multAcc_32x32_keep32_R(acc, b1, Xn1); + /* acc += b[2] * x[n-2] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/ + multAcc_32x32_keep32_R(acc, b2, Xn2); + /* acc += a1 * y[n-1] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn2))) >> 32);*/ + multAcc_32x32_keep32_R(acc, a1, Yn2); + /* acc += a2 * y[n-2] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn1))) >> 32);*/ + multAcc_32x32_keep32_R(acc, a2, Yn1); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + Xn2 = Xn1; + + /* The result is converted to 1.31, Yn1 variable is reused */ + Yn1 = acc << shift; + + /* Xn1 = Xn */ + Xn1 = Xn; + + /* Store the output in the destination buffer. */ + *(pOut + 3U) = Yn1; + pOut += 4U; + + /* decrement the loop counter */ + sample--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + sample = (blockSize & 0x3U); + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + /*acc = (q31_t) (((q63_t) b0 * (Xn)) >> 32);*/ + mult_32x32_keep32_R(acc, b0, Xn); + /* acc += b1 * x[n-1] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b1 * (Xn1))) >> 32);*/ + multAcc_32x32_keep32_R(acc, b1, Xn1); + /* acc += b[2] * x[n-2] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) b2 * (Xn2))) >> 32);*/ + multAcc_32x32_keep32_R(acc, b2, Xn2); + /* acc += a1 * y[n-1] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a1 * (Yn1))) >> 32);*/ + multAcc_32x32_keep32_R(acc, a1, Yn1); + /* acc += a2 * y[n-2] */ + /*acc = (q31_t) ((((q63_t) acc << 32) + ((q63_t) a2 * (Yn2))) >> 32);*/ + multAcc_32x32_keep32_R(acc, a2, Yn2); + + /* The result is converted to 1.31 */ + acc = acc << shift; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = acc; + + /* Store the output in the destination buffer. */ + *pOut++ = acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); +} + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c new file mode 100644 index 0000000..147c8c5 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c @@ -0,0 +1,97 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df1_init_f32.c + * Description: Floating-point Biquad cascade DirectFormI(DF1) filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @details + * @brief Initialization function for the floating-point Biquad cascade filter. + * @param[in,out] *S points to an instance of the floating-point Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients array. + * @param[in] *pState points to the state array. + * @return none + * + * + * Coefficient and State Ordering: + * + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
+ * 
+ * + * \par + * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 5*numStages values. + * + * \par + * The pState is a pointer to state array. + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. + * The state variables are arranged in the pState array as: + *
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}
+ * 
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + * + */ + +void arm_biquad_cascade_df1_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 4 * numStages */ + memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c new file mode 100644 index 0000000..dd46fb4 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c @@ -0,0 +1,99 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df1_init_q15.c + * Description: Q15 Biquad cascade DirectFormI(DF1) filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @details + * + * @param[in,out] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] postShift Shift to be applied to the accumulator result. Varies according to the coefficients format + * @return none + * + * Coefficient and State Ordering: + * + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
+ *     {b10, 0, b11, b12, a11, a12, b20, 0, b21, b22, a21, a22, ...}
+ * 
+ * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 6*numStages values. + * The zero coefficient between b1 and b2 facilities use of 16-bit SIMD instructions on the Cortex-M4. + * + * \par + * The state variables are stored in the array pState. + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. + * The state variables are arranged in the pState array as: + *
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}
+ * 
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + */ + +void arm_biquad_cascade_df1_init_q15( + arm_biquad_casd_df1_inst_q15 * S, + uint8_t numStages, + q15_t * pCoeffs, + q15_t * pState, + int8_t postShift) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign postShift to be applied to the output */ + S->postShift = postShift; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 4 * numStages */ + memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c new file mode 100644 index 0000000..10fb6bc --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df1_init_q31.c + * Description: Q31 Biquad cascade DirectFormI(DF1) filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @details + * + * @param[in,out] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients buffer. + * @param[in] *pState points to the state buffer. + * @param[in] postShift Shift to be applied after the accumulator. Varies according to the coefficients format + * @return none + * + * Coefficient and State Ordering: + * + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
+ * 
+ * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 5*numStages values. + * + * \par + * The pState points to state variables array. + * Each Biquad stage has 4 state variables x[n-1], x[n-2], y[n-1], and y[n-2]. + * The state variables are arranged in the pState array as: + *
+ *     {x[n-1], x[n-2], y[n-1], y[n-2]}
+ * 
+ * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. + * The state array has a total length of 4*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + */ + +void arm_biquad_cascade_df1_init_q31( + arm_biquad_casd_df1_inst_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q31_t * pState, + int8_t postShift) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign postShift to be applied to the output */ + S->postShift = postShift; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 4 * numStages */ + memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c new file mode 100644 index 0000000..c524756 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c @@ -0,0 +1,398 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df1_q15.c + * Description: Processing function for the Q15 Biquad cascade DirectFormI(DF1) filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @brief Processing function for the Q15 Biquad cascade filter. + * @param[in] *S points to an instance of the Q15 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * The accumulator is then shifted by postShift bits to truncate the result to 1.15 format by discarding the low 16 bits. + * Finally, the result is saturated to 1.15 format. + * + * \par + * Refer to the function arm_biquad_cascade_df1_fast_q15() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4. + */ + +void arm_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *pIn = pSrc; /* Source pointer */ + q15_t *pOut = pDst; /* Destination pointer */ + q31_t in; /* Temporary variable to hold input value */ + q31_t out; /* Temporary variable to hold output value */ + q31_t b0; /* Temporary variable to hold bo value */ + q31_t b1, a1; /* Filter coefficients */ + q31_t state_in, state_out; /* Filter state variables */ + q31_t acc_l, acc_h; + q63_t acc; /* Accumulator */ + int32_t lShift = (15 - (int32_t) S->postShift); /* Post shift */ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + uint32_t sample, stage = (uint32_t) S->numStages; /* Stage loop counter */ + int32_t uShift = (32 - lShift); + + do + { + /* Read the b0 and 0 coefficients using SIMD */ + b0 = *__SIMD32(pCoeffs)++; + + /* Read the b1 and b2 coefficients using SIMD */ + b1 = *__SIMD32(pCoeffs)++; + + /* Read the a1 and a2 coefficients using SIMD */ + a1 = *__SIMD32(pCoeffs)++; + + /* Read the input state values from the state buffer: x[n-1], x[n-2] */ + state_in = *__SIMD32(pState)++; + + /* Read the output state values from the state buffer: y[n-1], y[n-2] */ + state_out = *__SIMD32(pState)--; + + /* Apply loop unrolling and compute 2 output values simultaneously. */ + /* The variable acc hold output values that are being computed: + * + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + sample = blockSize >> 1U; + + /* First part of the processing with loop unrolling. Compute 2 outputs at a time. + ** a second loop below computes the remaining 1 sample. */ + while (sample > 0U) + { + + /* Read the input */ + in = *__SIMD32(pIn)++; + + /* out = b0 * x[n] + 0 * 0 */ + out = __SMUAD(b0, in); + + /* acc += b1 * x[n-1] + b2 * x[n-2] + out */ + acc = __SMLALD(b1, state_in, out); + /* acc += a1 * y[n-1] + a2 * y[n-2] */ + acc = __SMLALD(a1, state_out, acc); + + /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + out = (uint32_t) acc_l >> lShift | acc_h << uShift; + + out = __SSAT(out, 16); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, (in >> 16), 16); + state_out = __PKHBT(state_out >> 16, (out), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* out = b0 * x[n] + 0 * 0 */ + out = __SMUADX(b0, in); + /* acc += b1 * x[n-1] + b2 * x[n-2] + out */ + acc = __SMLALD(b1, state_in, out); + /* acc += a1 * y[n-1] + a2 * y[n-2] */ + acc = __SMLALD(a1, state_out, acc); + + /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + out = (uint32_t) acc_l >> lShift | acc_h << uShift; + + out = __SSAT(out, 16); + + /* Store the output in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = __PKHBT(state_out, out, 16); + +#else + + *__SIMD32(pOut)++ = __PKHBT(out, state_out >> 16, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in >> 16, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, in, 16); + state_out = __PKHBT(state_out >> 16, out, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + /* Decrement the loop counter */ + sample--; + + } + + /* If the blockSize is not a multiple of 2, compute any remaining output samples here. + ** No loop unrolling is used. */ + + if ((blockSize & 0x1U) != 0U) + { + /* Read the input */ + in = *pIn++; + + /* out = b0 * x[n] + 0 * 0 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + out = __SMUAD(b0, in); + +#else + + out = __SMUADX(b0, in); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc = b1 * x[n-1] + b2 * x[n-2] + out */ + acc = __SMLALD(b1, state_in, out); + /* acc += a1 * y[n-1] + a2 * y[n-2] */ + acc = __SMLALD(a1, state_out, acc); + + /* The result is converted from 3.29 to 1.31 if postShift = 1, and then saturation is applied */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + out = (uint32_t) acc_l >> lShift | acc_h << uShift; + + out = __SSAT(out, 16); + + /* Store the output in the destination buffer. */ + *pOut++ = (q15_t) out; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + /* x[n-N], x[n-N-1] are packed together to make state_in of type q31 */ + /* y[n-N], y[n-N-1] are packed together to make state_out of type q31 */ + +#ifndef ARM_MATH_BIG_ENDIAN + + state_in = __PKHBT(in, state_in, 16); + state_out = __PKHBT(out, state_out, 16); + +#else + + state_in = __PKHBT(state_in >> 16, in, 16); + state_out = __PKHBT(state_out >> 16, out, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + } + + /* The first stage goes from the input wire to the output wire. */ + /* Subsequent numStages occur in-place in the output wire */ + pIn = pDst; + + /* Reset the output pointer */ + pOut = pDst; + + /* Store the updated state variables back into the state array */ + *__SIMD32(pState)++ = state_in; + *__SIMD32(pState)++ = state_out; + + + /* Decrement the loop counter */ + stage--; + + } while (stage > 0U); + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t *pIn = pSrc; /* Source pointer */ + q15_t *pOut = pDst; /* Destination pointer */ + q15_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q15_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q15_t Xn; /* temporary input */ + q63_t acc; /* Accumulator */ + int32_t shift = (15 - (int32_t) S->postShift); /* Post shift */ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + uint32_t sample, stage = (uint32_t) S->numStages; /* Stage loop counter */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + pCoeffs++; // skip the 0 coefficient + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* The variables acc holds the output value that is computed: + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q31_t) b0 *Xn; + + /* acc += b1 * x[n-1] */ + acc += (q31_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q31_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q31_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q31_t) a2 *Yn2; + + /* The result is converted to 1.31 */ + acc = __SSAT((acc >> shift), 16); + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = (q15_t) acc; + + /* Store the output in the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c new file mode 100644 index 0000000..da367ec --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c @@ -0,0 +1,392 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df1_q31.c + * Description: Processing function for the Q31 Biquad cascade filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF1 + * @{ + */ + +/** + * @brief Processing function for the Q31 Biquad cascade filter. + * @param[in] *S points to an instance of the Q31 Biquad cascade structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2 bits and lie in the range [-0.25 +0.25). + * After all 5 multiply-accumulates are performed, the 2.62 accumulator is shifted by postShift bits and the result truncated to + * 1.31 format by discarding the low 32 bits. + * + * \par + * Refer to the function arm_biquad_cascade_df1_fast_q31() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4. + */ + +void arm_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q63_t acc; /* accumulator */ + uint32_t uShift = ((uint32_t) S->postShift + 1U); + uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ + q31_t *pIn = pSrc; /* input pointer initialization */ + q31_t *pOut = pDst; /* output pointer initialization */ + q31_t *pState = S->pState; /* pState pointer initialization */ + q31_t *pCoeffs = S->pCoeffs; /* coeff pointer initialization */ + q31_t Xn1, Xn2, Yn1, Yn2; /* Filter state variables */ + q31_t b0, b1, b2, a1, a2; /* Filter coefficients */ + q31_t Xn; /* temporary input */ + uint32_t sample, stage = S->numStages; /* loop counters */ + + +#if defined (ARM_MATH_DSP) + + q31_t acc_l, acc_h; /* temporary output variables */ + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + /* The variable acc hold output values that are being computed: + * + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn; + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn2; + + /* The result is converted to 1.31 , Yn2 variable is reused */ + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + Yn2 = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the output in the destination buffer. */ + *pOut++ = Yn2; + + /* Read the second input */ + Xn2 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn2; + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn1; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn2; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn1; + + + /* The result is converted to 1.31, Yn1 variable is reused */ + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + + /* Apply shift for lower part of acc and upper part of acc */ + Yn1 = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the output in the destination buffer. */ + *pOut++ = Yn1; + + /* Read the third input */ + Xn1 = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn1; + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn2; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn2; + + /* The result is converted to 1.31, Yn2 variable is reused */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + + /* Apply shift for lower part of acc and upper part of acc */ + Yn2 = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the output in the destination buffer. */ + *pOut++ = Yn2; + + /* Read the forth input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn; + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn2; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn1; + + /* The result is converted to 1.31, Yn1 variable is reused */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + Yn1 = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + + /* Store the output in the destination buffer. */ + *pOut++ = Yn1; + + /* decrement the loop counter */ + sample--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + sample = (blockSize & 0x3U); + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn; + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn2; + + /* The result is converted to 1.31 */ + acc = acc >> lShift; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = (q31_t) acc; + + /* Store the output in the destination buffer. */ + *pOut++ = (q31_t) acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); + +#else + + /* Run the below code for Cortex-M0 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /* Reading the state values */ + Xn1 = pState[0]; + Xn2 = pState[1]; + Yn1 = pState[2]; + Yn2 = pState[3]; + + /* The variables acc holds the output value that is computed: + * acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] + */ + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn = *pIn++; + + /* acc = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y[n-1] + a2 * y[n-2] */ + /* acc = b0 * x[n] */ + acc = (q63_t) b0 *Xn; + + /* acc += b1 * x[n-1] */ + acc += (q63_t) b1 *Xn1; + /* acc += b[2] * x[n-2] */ + acc += (q63_t) b2 *Xn2; + /* acc += a1 * y[n-1] */ + acc += (q63_t) a1 *Yn1; + /* acc += a2 * y[n-2] */ + acc += (q63_t) a2 *Yn2; + + /* The result is converted to 1.31 */ + acc = acc >> lShift; + + /* Every time after the output is computed state should be updated. */ + /* The states should be updated as: */ + /* Xn2 = Xn1 */ + /* Xn1 = Xn */ + /* Yn2 = Yn1 */ + /* Yn1 = acc */ + Xn2 = Xn1; + Xn1 = Xn; + Yn2 = Yn1; + Yn1 = (q31_t) acc; + + /* Store the output in the destination buffer. */ + *pOut++ = (q31_t) acc; + + /* decrement the loop counter */ + sample--; + } + + /* The first stage goes from the input buffer to the output buffer. */ + /* Subsequent stages occur in-place in the output buffer */ + pIn = pDst; + + /* Reset to destination pointer */ + pOut = pDst; + + /* Store the updated state variables back into the pState array */ + *pState++ = Xn1; + *pState++ = Xn2; + *pState++ = Yn1; + *pState++ = Yn2; + + } while (--stage); + +#endif /* #if defined (ARM_MATH_DSP) */ +} + + + + +/** + * @} end of BiquadCascadeDF1 group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c new file mode 100644 index 0000000..3f1ce03 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c @@ -0,0 +1,590 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df2T_f32.c + * Description: Processing function for floating-point transposed direct form II Biquad cascade filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** +* @ingroup groupFilters +*/ + +/** +* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure +* +* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure. +* The filters are implemented as a cascade of second order Biquad sections. +* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions. +* Only floating-point data is supported. +* +* This function operate on blocks of input and output data and each call to the function +* processes blockSize samples through the filter. +* pSrc points to the array of input data and +* pDst points to the array of output data. +* Both arrays contain blockSize values. +* +* \par Algorithm +* Each Biquad stage implements a second order filter using the difference equation: +*
+*    y[n] = b0 * x[n] + d1
+*    d1 = b1 * x[n] + a1 * y[n] + d2
+*    d2 = b2 * x[n] + a2 * y[n]
+* 
+* where d1 and d2 represent the two state values. +* +* \par +* A Biquad filter using a transposed Direct Form II structure is shown below. +* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad" +* Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. +* Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. +* Pay careful attention to the sign of the feedback coefficients. +* Some design tools flip the sign of the feedback coefficients: +*
+*    y[n] = b0 * x[n] + d1;
+*    d1 = b1 * x[n] - a1 * y[n] + d2;
+*    d2 = b2 * x[n] - a2 * y[n];
+* 
+* In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. +* +* \par +* Higher order filters are realized as a cascade of second order sections. +* numStages refers to the number of second order stages used. +* For example, an 8th order filter would be realized with numStages=4 second order stages. +* A 9th order filter would be realized with numStages=5 second order stages with the +* coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). +* +* \par +* pState points to the state variable array. +* Each Biquad stage has 2 state variables d1 and d2. +* The state variables are arranged in the pState array as: +*
+*     {d11, d12, d21, d22, ...}
+* 
+* where d1x refers to the state variables for the first Biquad and +* d2x refers to the state variables for the second Biquad. +* The state array has a total length of 2*numStages values. +* The state variables are updated after each block of data is processed; the coefficients are untouched. +* +* \par +* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II. +* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types. +* That is why the Direct Form I structure supports Q15 and Q31 data types. +* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables d1 and d2. +* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad. +* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage. +* +* \par Instance Structure +* The coefficients and state variables for a filter are stored together in an instance data structure. +* A separate instance structure must be defined for each filter. +* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. +* +* \par Init Functions +* There is also an associated initialization function. +* The initialization function performs following operations: +* - Sets the values of the internal structure fields. +* - Zeros out the values in the state buffer. +* To do this manually without calling the init function, assign the follow subfields of the instance structure: +* numStages, pCoeffs, pState. Also set all of the values in pState to zero. +* +* \par +* Use of the initialization function is optional. +* However, if the initialization function is used, then the instance structure cannot be placed into a const data section. +* To place an instance structure into a const data section, the instance structure must be manually initialized. +* Set the values in the state buffer to zeros before static initialization. +* For example, to statically initialize the instance structure use +*
+*     arm_biquad_cascade_df2T_instance_f32 S1 = {numStages, pState, pCoeffs};
+* 
+* where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer. +* pCoeffs is the address of the coefficient buffer; +* +*/ + +/** +* @addtogroup BiquadCascadeDF2T +* @{ +*/ + +/** +* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. +* @param[in] *S points to an instance of the filter data structure. +* @param[in] *pSrc points to the block of input data. +* @param[out] *pDst points to the block of output data +* @param[in] blockSize number of samples to process. +* @return none. +*/ + + +LOW_OPTIMIZATION_ENTER +void arm_biquad_cascade_df2T_f32( +const arm_biquad_cascade_df2T_instance_f32 * S, +float32_t * pSrc, +float32_t * pDst, +uint32_t blockSize) +{ + + float32_t *pIn = pSrc; /* source pointer */ + float32_t *pOut = pDst; /* destination pointer */ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ + float32_t acc1; /* accumulator */ + float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ + float32_t Xn1; /* temporary input */ + float32_t d1, d2; /* state variables */ + uint32_t sample, stage = S->numStages; /* loop counters */ + +#if defined(ARM_MATH_CM7) + + float32_t Xn2, Xn3, Xn4, Xn5, Xn6, Xn7, Xn8; /* Input State variables */ + float32_t Xn9, Xn10, Xn11, Xn12, Xn13, Xn14, Xn15, Xn16; + float32_t acc2, acc3, acc4, acc5, acc6, acc7; /* Simulates the accumulator */ + float32_t acc8, acc9, acc10, acc11, acc12, acc13, acc14, acc15, acc16; + + do + { + /* Reading the coefficients */ + b0 = pCoeffs[0]; + b1 = pCoeffs[1]; + b2 = pCoeffs[2]; + a1 = pCoeffs[3]; + /* Apply loop unrolling and compute 16 output values simultaneously. */ + sample = blockSize >> 4U; + a2 = pCoeffs[4]; + + /*Reading the state values */ + d1 = pState[0]; + d2 = pState[1]; + + pCoeffs += 5U; + + + /* First part of the processing with loop unrolling. Compute 16 outputs at a time. + ** a second loop below computes the remaining 1 to 15 samples. */ + while (sample > 0U) { + + /* y[n] = b0 * x[n] + d1 */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + /* d2 = b2 * x[n] + a2 * y[n] */ + + /* Read the first 2 inputs. 2 cycles */ + Xn1 = pIn[0 ]; + Xn2 = pIn[1 ]; + + /* Sample 1. 5 cycles */ + Xn3 = pIn[2 ]; + acc1 = b0 * Xn1 + d1; + + Xn4 = pIn[3 ]; + d1 = b1 * Xn1 + d2; + + Xn5 = pIn[4 ]; + d2 = b2 * Xn1; + + Xn6 = pIn[5 ]; + d1 += a1 * acc1; + + Xn7 = pIn[6 ]; + d2 += a2 * acc1; + + /* Sample 2. 5 cycles */ + Xn8 = pIn[7 ]; + acc2 = b0 * Xn2 + d1; + + Xn9 = pIn[8 ]; + d1 = b1 * Xn2 + d2; + + Xn10 = pIn[9 ]; + d2 = b2 * Xn2; + + Xn11 = pIn[10]; + d1 += a1 * acc2; + + Xn12 = pIn[11]; + d2 += a2 * acc2; + + /* Sample 3. 5 cycles */ + Xn13 = pIn[12]; + acc3 = b0 * Xn3 + d1; + + Xn14 = pIn[13]; + d1 = b1 * Xn3 + d2; + + Xn15 = pIn[14]; + d2 = b2 * Xn3; + + Xn16 = pIn[15]; + d1 += a1 * acc3; + + pIn += 16; + d2 += a2 * acc3; + + /* Sample 4. 5 cycles */ + acc4 = b0 * Xn4 + d1; + d1 = b1 * Xn4 + d2; + d2 = b2 * Xn4; + d1 += a1 * acc4; + d2 += a2 * acc4; + + /* Sample 5. 5 cycles */ + acc5 = b0 * Xn5 + d1; + d1 = b1 * Xn5 + d2; + d2 = b2 * Xn5; + d1 += a1 * acc5; + d2 += a2 * acc5; + + /* Sample 6. 5 cycles */ + acc6 = b0 * Xn6 + d1; + d1 = b1 * Xn6 + d2; + d2 = b2 * Xn6; + d1 += a1 * acc6; + d2 += a2 * acc6; + + /* Sample 7. 5 cycles */ + acc7 = b0 * Xn7 + d1; + d1 = b1 * Xn7 + d2; + d2 = b2 * Xn7; + d1 += a1 * acc7; + d2 += a2 * acc7; + + /* Sample 8. 5 cycles */ + acc8 = b0 * Xn8 + d1; + d1 = b1 * Xn8 + d2; + d2 = b2 * Xn8; + d1 += a1 * acc8; + d2 += a2 * acc8; + + /* Sample 9. 5 cycles */ + acc9 = b0 * Xn9 + d1; + d1 = b1 * Xn9 + d2; + d2 = b2 * Xn9; + d1 += a1 * acc9; + d2 += a2 * acc9; + + /* Sample 10. 5 cycles */ + acc10 = b0 * Xn10 + d1; + d1 = b1 * Xn10 + d2; + d2 = b2 * Xn10; + d1 += a1 * acc10; + d2 += a2 * acc10; + + /* Sample 11. 5 cycles */ + acc11 = b0 * Xn11 + d1; + d1 = b1 * Xn11 + d2; + d2 = b2 * Xn11; + d1 += a1 * acc11; + d2 += a2 * acc11; + + /* Sample 12. 5 cycles */ + acc12 = b0 * Xn12 + d1; + d1 = b1 * Xn12 + d2; + d2 = b2 * Xn12; + d1 += a1 * acc12; + d2 += a2 * acc12; + + /* Sample 13. 5 cycles */ + acc13 = b0 * Xn13 + d1; + d1 = b1 * Xn13 + d2; + d2 = b2 * Xn13; + + pOut[0 ] = acc1 ; + d1 += a1 * acc13; + + pOut[1 ] = acc2 ; + d2 += a2 * acc13; + + /* Sample 14. 5 cycles */ + pOut[2 ] = acc3 ; + acc14 = b0 * Xn14 + d1; + + pOut[3 ] = acc4 ; + d1 = b1 * Xn14 + d2; + + pOut[4 ] = acc5 ; + d2 = b2 * Xn14; + + pOut[5 ] = acc6 ; + d1 += a1 * acc14; + + pOut[6 ] = acc7 ; + d2 += a2 * acc14; + + /* Sample 15. 5 cycles */ + pOut[7 ] = acc8 ; + pOut[8 ] = acc9 ; + acc15 = b0 * Xn15 + d1; + + pOut[9 ] = acc10; + d1 = b1 * Xn15 + d2; + + pOut[10] = acc11; + d2 = b2 * Xn15; + + pOut[11] = acc12; + d1 += a1 * acc15; + + pOut[12] = acc13; + d2 += a2 * acc15; + + /* Sample 16. 5 cycles */ + pOut[13] = acc14; + acc16 = b0 * Xn16 + d1; + + pOut[14] = acc15; + d1 = b1 * Xn16 + d2; + + pOut[15] = acc16; + d2 = b2 * Xn16; + + sample--; + d1 += a1 * acc16; + + pOut += 16; + d2 += a2 * acc16; + } + + sample = blockSize & 0xFu; + while (sample > 0U) { + Xn1 = *pIn; + acc1 = b0 * Xn1 + d1; + + pIn++; + d1 = b1 * Xn1 + d2; + + *pOut = acc1; + d2 = b2 * Xn1; + + pOut++; + d1 += a1 * acc1; + + sample--; + d2 += a2 * acc1; + } + + /* Store the updated state variables back into the state array */ + pState[0] = d1; + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + pState[1] = d2; + /* decrement the loop counter */ + stage--; + + pState += 2U; + + /*Reset the output working pointer */ + pOut = pDst; + + } while (stage > 0U); + +#elif defined(ARM_MATH_CM0_FAMILY) + + /* Run the below code for Cortex-M0 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /*Reading the state values */ + d1 = pState[0]; + d2 = pState[1]; + + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn1 = *pIn++; + + /* y[n] = b0 * x[n] + d1 */ + acc1 = (b0 * Xn1) + d1; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc1; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1 = ((b1 * Xn1) + (a1 * acc1)) + d2; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2 = (b2 * Xn1) + (a2 * acc1); + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1; + *pState++ = d2; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); + +#else + + float32_t Xn2, Xn3, Xn4; /* Input State variables */ + float32_t acc2, acc3, acc4; /* accumulator */ + + + float32_t p0, p1, p2, p3, p4, A1; + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + + /*Reading the state values */ + d1 = pState[0]; + d2 = pState[1]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + sample = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (sample > 0U) { + + /* y[n] = b0 * x[n] + d1 */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + /* d2 = b2 * x[n] + a2 * y[n] */ + + /* Read the four inputs */ + Xn1 = pIn[0]; + Xn2 = pIn[1]; + Xn3 = pIn[2]; + Xn4 = pIn[3]; + pIn += 4; + + p0 = b0 * Xn1; + p1 = b1 * Xn1; + acc1 = p0 + d1; + p0 = b0 * Xn2; + p3 = a1 * acc1; + p2 = b2 * Xn1; + A1 = p1 + p3; + p4 = a2 * acc1; + d1 = A1 + d2; + d2 = p2 + p4; + + p1 = b1 * Xn2; + acc2 = p0 + d1; + p0 = b0 * Xn3; + p3 = a1 * acc2; + p2 = b2 * Xn2; + A1 = p1 + p3; + p4 = a2 * acc2; + d1 = A1 + d2; + d2 = p2 + p4; + + p1 = b1 * Xn3; + acc3 = p0 + d1; + p0 = b0 * Xn4; + p3 = a1 * acc3; + p2 = b2 * Xn3; + A1 = p1 + p3; + p4 = a2 * acc3; + d1 = A1 + d2; + d2 = p2 + p4; + + acc4 = p0 + d1; + p1 = b1 * Xn4; + p3 = a1 * acc4; + p2 = b2 * Xn4; + A1 = p1 + p3; + p4 = a2 * acc4; + d1 = A1 + d2; + d2 = p2 + p4; + + pOut[0] = acc1; + pOut[1] = acc2; + pOut[2] = acc3; + pOut[3] = acc4; + pOut += 4; + + sample--; + } + + sample = blockSize & 0x3U; + while (sample > 0U) { + Xn1 = *pIn++; + + p0 = b0 * Xn1; + p1 = b1 * Xn1; + acc1 = p0 + d1; + p3 = a1 * acc1; + p2 = b2 * Xn1; + A1 = p1 + p3; + p4 = a2 * acc1; + d1 = A1 + d2; + d2 = p2 + p4; + + *pOut++ = acc1; + + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1; + *pState++ = d2; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); + +#endif + +} +LOW_OPTIMIZATION_EXIT + +/** + * @} end of BiquadCascadeDF2T group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c new file mode 100644 index 0000000..8f8a830 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c @@ -0,0 +1,590 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df2T_f64.c + * Description: Processing function for floating-point transposed direct form II Biquad cascade filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** +* @ingroup groupFilters +*/ + +/** +* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure +* +* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure. +* The filters are implemented as a cascade of second order Biquad sections. +* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions. +* Only floating-point data is supported. +* +* This function operate on blocks of input and output data and each call to the function +* processes blockSize samples through the filter. +* pSrc points to the array of input data and +* pDst points to the array of output data. +* Both arrays contain blockSize values. +* +* \par Algorithm +* Each Biquad stage implements a second order filter using the difference equation: +*
+*    y[n] = b0 * x[n] + d1
+*    d1 = b1 * x[n] + a1 * y[n] + d2
+*    d2 = b2 * x[n] + a2 * y[n]
+* 
+* where d1 and d2 represent the two state values. +* +* \par +* A Biquad filter using a transposed Direct Form II structure is shown below. +* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad" +* Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. +* Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. +* Pay careful attention to the sign of the feedback coefficients. +* Some design tools flip the sign of the feedback coefficients: +*
+*    y[n] = b0 * x[n] + d1;
+*    d1 = b1 * x[n] - a1 * y[n] + d2;
+*    d2 = b2 * x[n] - a2 * y[n];
+* 
+* In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. +* +* \par +* Higher order filters are realized as a cascade of second order sections. +* numStages refers to the number of second order stages used. +* For example, an 8th order filter would be realized with numStages=4 second order stages. +* A 9th order filter would be realized with numStages=5 second order stages with the +* coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). +* +* \par +* pState points to the state variable array. +* Each Biquad stage has 2 state variables d1 and d2. +* The state variables are arranged in the pState array as: +*
+*     {d11, d12, d21, d22, ...}
+* 
+* where d1x refers to the state variables for the first Biquad and +* d2x refers to the state variables for the second Biquad. +* The state array has a total length of 2*numStages values. +* The state variables are updated after each block of data is processed; the coefficients are untouched. +* +* \par +* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II. +* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types. +* That is why the Direct Form I structure supports Q15 and Q31 data types. +* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables d1 and d2. +* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad. +* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage. +* +* \par Instance Structure +* The coefficients and state variables for a filter are stored together in an instance data structure. +* A separate instance structure must be defined for each filter. +* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. +* +* \par Init Functions +* There is also an associated initialization function. +* The initialization function performs following operations: +* - Sets the values of the internal structure fields. +* - Zeros out the values in the state buffer. +* To do this manually without calling the init function, assign the follow subfields of the instance structure: +* numStages, pCoeffs, pState. Also set all of the values in pState to zero. +* +* \par +* Use of the initialization function is optional. +* However, if the initialization function is used, then the instance structure cannot be placed into a const data section. +* To place an instance structure into a const data section, the instance structure must be manually initialized. +* Set the values in the state buffer to zeros before static initialization. +* For example, to statically initialize the instance structure use +*
+*     arm_biquad_cascade_df2T_instance_f64 S1 = {numStages, pState, pCoeffs};
+* 
+* where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer. +* pCoeffs is the address of the coefficient buffer; +* +*/ + +/** +* @addtogroup BiquadCascadeDF2T +* @{ +*/ + +/** +* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. +* @param[in] *S points to an instance of the filter data structure. +* @param[in] *pSrc points to the block of input data. +* @param[out] *pDst points to the block of output data +* @param[in] blockSize number of samples to process. +* @return none. +*/ + + +LOW_OPTIMIZATION_ENTER +void arm_biquad_cascade_df2T_f64( +const arm_biquad_cascade_df2T_instance_f64 * S, +float64_t * pSrc, +float64_t * pDst, +uint32_t blockSize) +{ + + float64_t *pIn = pSrc; /* source pointer */ + float64_t *pOut = pDst; /* destination pointer */ + float64_t *pState = S->pState; /* State pointer */ + float64_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ + float64_t acc1; /* accumulator */ + float64_t b0, b1, b2, a1, a2; /* Filter coefficients */ + float64_t Xn1; /* temporary input */ + float64_t d1, d2; /* state variables */ + uint32_t sample, stage = S->numStages; /* loop counters */ + +#if defined(ARM_MATH_CM7) + + float64_t Xn2, Xn3, Xn4, Xn5, Xn6, Xn7, Xn8; /* Input State variables */ + float64_t Xn9, Xn10, Xn11, Xn12, Xn13, Xn14, Xn15, Xn16; + float64_t acc2, acc3, acc4, acc5, acc6, acc7; /* Simulates the accumulator */ + float64_t acc8, acc9, acc10, acc11, acc12, acc13, acc14, acc15, acc16; + + do + { + /* Reading the coefficients */ + b0 = pCoeffs[0]; + b1 = pCoeffs[1]; + b2 = pCoeffs[2]; + a1 = pCoeffs[3]; + /* Apply loop unrolling and compute 16 output values simultaneously. */ + sample = blockSize >> 4U; + a2 = pCoeffs[4]; + + /*Reading the state values */ + d1 = pState[0]; + d2 = pState[1]; + + pCoeffs += 5U; + + + /* First part of the processing with loop unrolling. Compute 16 outputs at a time. + ** a second loop below computes the remaining 1 to 15 samples. */ + while (sample > 0U) { + + /* y[n] = b0 * x[n] + d1 */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + /* d2 = b2 * x[n] + a2 * y[n] */ + + /* Read the first 2 inputs. 2 cycles */ + Xn1 = pIn[0 ]; + Xn2 = pIn[1 ]; + + /* Sample 1. 5 cycles */ + Xn3 = pIn[2 ]; + acc1 = b0 * Xn1 + d1; + + Xn4 = pIn[3 ]; + d1 = b1 * Xn1 + d2; + + Xn5 = pIn[4 ]; + d2 = b2 * Xn1; + + Xn6 = pIn[5 ]; + d1 += a1 * acc1; + + Xn7 = pIn[6 ]; + d2 += a2 * acc1; + + /* Sample 2. 5 cycles */ + Xn8 = pIn[7 ]; + acc2 = b0 * Xn2 + d1; + + Xn9 = pIn[8 ]; + d1 = b1 * Xn2 + d2; + + Xn10 = pIn[9 ]; + d2 = b2 * Xn2; + + Xn11 = pIn[10]; + d1 += a1 * acc2; + + Xn12 = pIn[11]; + d2 += a2 * acc2; + + /* Sample 3. 5 cycles */ + Xn13 = pIn[12]; + acc3 = b0 * Xn3 + d1; + + Xn14 = pIn[13]; + d1 = b1 * Xn3 + d2; + + Xn15 = pIn[14]; + d2 = b2 * Xn3; + + Xn16 = pIn[15]; + d1 += a1 * acc3; + + pIn += 16; + d2 += a2 * acc3; + + /* Sample 4. 5 cycles */ + acc4 = b0 * Xn4 + d1; + d1 = b1 * Xn4 + d2; + d2 = b2 * Xn4; + d1 += a1 * acc4; + d2 += a2 * acc4; + + /* Sample 5. 5 cycles */ + acc5 = b0 * Xn5 + d1; + d1 = b1 * Xn5 + d2; + d2 = b2 * Xn5; + d1 += a1 * acc5; + d2 += a2 * acc5; + + /* Sample 6. 5 cycles */ + acc6 = b0 * Xn6 + d1; + d1 = b1 * Xn6 + d2; + d2 = b2 * Xn6; + d1 += a1 * acc6; + d2 += a2 * acc6; + + /* Sample 7. 5 cycles */ + acc7 = b0 * Xn7 + d1; + d1 = b1 * Xn7 + d2; + d2 = b2 * Xn7; + d1 += a1 * acc7; + d2 += a2 * acc7; + + /* Sample 8. 5 cycles */ + acc8 = b0 * Xn8 + d1; + d1 = b1 * Xn8 + d2; + d2 = b2 * Xn8; + d1 += a1 * acc8; + d2 += a2 * acc8; + + /* Sample 9. 5 cycles */ + acc9 = b0 * Xn9 + d1; + d1 = b1 * Xn9 + d2; + d2 = b2 * Xn9; + d1 += a1 * acc9; + d2 += a2 * acc9; + + /* Sample 10. 5 cycles */ + acc10 = b0 * Xn10 + d1; + d1 = b1 * Xn10 + d2; + d2 = b2 * Xn10; + d1 += a1 * acc10; + d2 += a2 * acc10; + + /* Sample 11. 5 cycles */ + acc11 = b0 * Xn11 + d1; + d1 = b1 * Xn11 + d2; + d2 = b2 * Xn11; + d1 += a1 * acc11; + d2 += a2 * acc11; + + /* Sample 12. 5 cycles */ + acc12 = b0 * Xn12 + d1; + d1 = b1 * Xn12 + d2; + d2 = b2 * Xn12; + d1 += a1 * acc12; + d2 += a2 * acc12; + + /* Sample 13. 5 cycles */ + acc13 = b0 * Xn13 + d1; + d1 = b1 * Xn13 + d2; + d2 = b2 * Xn13; + + pOut[0 ] = acc1 ; + d1 += a1 * acc13; + + pOut[1 ] = acc2 ; + d2 += a2 * acc13; + + /* Sample 14. 5 cycles */ + pOut[2 ] = acc3 ; + acc14 = b0 * Xn14 + d1; + + pOut[3 ] = acc4 ; + d1 = b1 * Xn14 + d2; + + pOut[4 ] = acc5 ; + d2 = b2 * Xn14; + + pOut[5 ] = acc6 ; + d1 += a1 * acc14; + + pOut[6 ] = acc7 ; + d2 += a2 * acc14; + + /* Sample 15. 5 cycles */ + pOut[7 ] = acc8 ; + pOut[8 ] = acc9 ; + acc15 = b0 * Xn15 + d1; + + pOut[9 ] = acc10; + d1 = b1 * Xn15 + d2; + + pOut[10] = acc11; + d2 = b2 * Xn15; + + pOut[11] = acc12; + d1 += a1 * acc15; + + pOut[12] = acc13; + d2 += a2 * acc15; + + /* Sample 16. 5 cycles */ + pOut[13] = acc14; + acc16 = b0 * Xn16 + d1; + + pOut[14] = acc15; + d1 = b1 * Xn16 + d2; + + pOut[15] = acc16; + d2 = b2 * Xn16; + + sample--; + d1 += a1 * acc16; + + pOut += 16; + d2 += a2 * acc16; + } + + sample = blockSize & 0xFu; + while (sample > 0U) { + Xn1 = *pIn; + acc1 = b0 * Xn1 + d1; + + pIn++; + d1 = b1 * Xn1 + d2; + + *pOut = acc1; + d2 = b2 * Xn1; + + pOut++; + d1 += a1 * acc1; + + sample--; + d2 += a2 * acc1; + } + + /* Store the updated state variables back into the state array */ + pState[0] = d1; + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + pState[1] = d2; + /* decrement the loop counter */ + stage--; + + pState += 2U; + + /*Reset the output working pointer */ + pOut = pDst; + + } while (stage > 0U); + +#elif defined(ARM_MATH_CM0_FAMILY) + + /* Run the below code for Cortex-M0 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /*Reading the state values */ + d1 = pState[0]; + d2 = pState[1]; + + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn1 = *pIn++; + + /* y[n] = b0 * x[n] + d1 */ + acc1 = (b0 * Xn1) + d1; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc1; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1 = ((b1 * Xn1) + (a1 * acc1)) + d2; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2 = (b2 * Xn1) + (a2 * acc1); + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1; + *pState++ = d2; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); + +#else + + float64_t Xn2, Xn3, Xn4; /* Input State variables */ + float64_t acc2, acc3, acc4; /* accumulator */ + + + float64_t p0, p1, p2, p3, p4, A1; + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + + /*Reading the state values */ + d1 = pState[0]; + d2 = pState[1]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + sample = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (sample > 0U) { + + /* y[n] = b0 * x[n] + d1 */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + /* d2 = b2 * x[n] + a2 * y[n] */ + + /* Read the four inputs */ + Xn1 = pIn[0]; + Xn2 = pIn[1]; + Xn3 = pIn[2]; + Xn4 = pIn[3]; + pIn += 4; + + p0 = b0 * Xn1; + p1 = b1 * Xn1; + acc1 = p0 + d1; + p0 = b0 * Xn2; + p3 = a1 * acc1; + p2 = b2 * Xn1; + A1 = p1 + p3; + p4 = a2 * acc1; + d1 = A1 + d2; + d2 = p2 + p4; + + p1 = b1 * Xn2; + acc2 = p0 + d1; + p0 = b0 * Xn3; + p3 = a1 * acc2; + p2 = b2 * Xn2; + A1 = p1 + p3; + p4 = a2 * acc2; + d1 = A1 + d2; + d2 = p2 + p4; + + p1 = b1 * Xn3; + acc3 = p0 + d1; + p0 = b0 * Xn4; + p3 = a1 * acc3; + p2 = b2 * Xn3; + A1 = p1 + p3; + p4 = a2 * acc3; + d1 = A1 + d2; + d2 = p2 + p4; + + acc4 = p0 + d1; + p1 = b1 * Xn4; + p3 = a1 * acc4; + p2 = b2 * Xn4; + A1 = p1 + p3; + p4 = a2 * acc4; + d1 = A1 + d2; + d2 = p2 + p4; + + pOut[0] = acc1; + pOut[1] = acc2; + pOut[2] = acc3; + pOut[3] = acc4; + pOut += 4; + + sample--; + } + + sample = blockSize & 0x3U; + while (sample > 0U) { + Xn1 = *pIn++; + + p0 = b0 * Xn1; + p1 = b1 * Xn1; + acc1 = p0 + d1; + p3 = a1 * acc1; + p2 = b2 * Xn1; + A1 = p1 + p3; + p4 = a2 * acc1; + d1 = A1 + d2; + d2 = p2 + p4; + + *pOut++ = acc1; + + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1; + *pState++ = d2; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); + +#endif + +} +LOW_OPTIMIZATION_EXIT + +/** + * @} end of BiquadCascadeDF2T group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c new file mode 100644 index 0000000..6dfc985 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c @@ -0,0 +1,89 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df2T_init_f32.c + * Description: Initialization function for floating-point transposed direct form II Biquad cascade filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF2T + * @{ + */ + +/** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] *S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @return none + * + * Coefficient and State Ordering: + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
+ * 
+ * + * \par + * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 5*numStages values. + * + * \par + * The pState is a pointer to state array. + * Each Biquad stage has 2 state variables d1, and d2. + * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on. + * The state array has a total length of 2*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + */ + +void arm_biquad_cascade_df2T_init_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 2 * numStages */ + memset(pState, 0, (2U * (uint32_t) numStages) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF2T group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c new file mode 100644 index 0000000..8141da5 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c @@ -0,0 +1,89 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_df2T_init_f64.c + * Description: Initialization function for floating-point transposed direct form II Biquad cascade filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF2T + * @{ + */ + +/** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] *S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @return none + * + * Coefficient and State Ordering: + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
+ * 
+ * + * \par + * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 5*numStages values. + * + * \par + * The pState is a pointer to state array. + * Each Biquad stage has 2 state variables d1, and d2. + * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on. + * The state array has a total length of 2*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + */ + +void arm_biquad_cascade_df2T_init_f64( + arm_biquad_cascade_df2T_instance_f64 * S, + uint8_t numStages, + float64_t * pCoeffs, + float64_t * pState) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 2 * numStages */ + memset(pState, 0, (2U * (uint32_t) numStages) * sizeof(float64_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF2T group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c new file mode 100644 index 0000000..36084e5 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c @@ -0,0 +1,670 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_stereo_df2T_f32.c + * Description: Processing function for floating-point transposed direct form II Biquad cascade filter. 2 channels + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** +* @ingroup groupFilters +*/ + +/** +* @defgroup BiquadCascadeDF2T Biquad Cascade IIR Filters Using a Direct Form II Transposed Structure +* +* This set of functions implements arbitrary order recursive (IIR) filters using a transposed direct form II structure. +* The filters are implemented as a cascade of second order Biquad sections. +* These functions provide a slight memory savings as compared to the direct form I Biquad filter functions. +* Only floating-point data is supported. +* +* This function operate on blocks of input and output data and each call to the function +* processes blockSize samples through the filter. +* pSrc points to the array of input data and +* pDst points to the array of output data. +* Both arrays contain blockSize values. +* +* \par Algorithm +* Each Biquad stage implements a second order filter using the difference equation: +*
+*    y[n] = b0 * x[n] + d1
+*    d1 = b1 * x[n] + a1 * y[n] + d2
+*    d2 = b2 * x[n] + a2 * y[n]
+* 
+* where d1 and d2 represent the two state values. +* +* \par +* A Biquad filter using a transposed Direct Form II structure is shown below. +* \image html BiquadDF2Transposed.gif "Single transposed Direct Form II Biquad" +* Coefficients b0, b1, and b2 multiply the input signal x[n] and are referred to as the feedforward coefficients. +* Coefficients a1 and a2 multiply the output signal y[n] and are referred to as the feedback coefficients. +* Pay careful attention to the sign of the feedback coefficients. +* Some design tools flip the sign of the feedback coefficients: +*
+*    y[n] = b0 * x[n] + d1;
+*    d1 = b1 * x[n] - a1 * y[n] + d2;
+*    d2 = b2 * x[n] - a2 * y[n];
+* 
+* In this case the feedback coefficients a1 and a2 must be negated when used with the CMSIS DSP Library. +* +* \par +* Higher order filters are realized as a cascade of second order sections. +* numStages refers to the number of second order stages used. +* For example, an 8th order filter would be realized with numStages=4 second order stages. +* A 9th order filter would be realized with numStages=5 second order stages with the +* coefficients for one of the stages configured as a first order filter (b2=0 and a2=0). +* +* \par +* pState points to the state variable array. +* Each Biquad stage has 2 state variables d1 and d2. +* The state variables are arranged in the pState array as: +*
+*     {d11, d12, d21, d22, ...}
+* 
+* where d1x refers to the state variables for the first Biquad and +* d2x refers to the state variables for the second Biquad. +* The state array has a total length of 2*numStages values. +* The state variables are updated after each block of data is processed; the coefficients are untouched. +* +* \par +* The CMSIS library contains Biquad filters in both Direct Form I and transposed Direct Form II. +* The advantage of the Direct Form I structure is that it is numerically more robust for fixed-point data types. +* That is why the Direct Form I structure supports Q15 and Q31 data types. +* The transposed Direct Form II structure, on the other hand, requires a wide dynamic range for the state variables d1 and d2. +* Because of this, the CMSIS library only has a floating-point version of the Direct Form II Biquad. +* The advantage of the Direct Form II Biquad is that it requires half the number of state variables, 2 rather than 4, per Biquad stage. +* +* \par Instance Structure +* The coefficients and state variables for a filter are stored together in an instance data structure. +* A separate instance structure must be defined for each filter. +* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. +* +* \par Init Functions +* There is also an associated initialization function. +* The initialization function performs following operations: +* - Sets the values of the internal structure fields. +* - Zeros out the values in the state buffer. +* To do this manually without calling the init function, assign the follow subfields of the instance structure: +* numStages, pCoeffs, pState. Also set all of the values in pState to zero. +* +* \par +* Use of the initialization function is optional. +* However, if the initialization function is used, then the instance structure cannot be placed into a const data section. +* To place an instance structure into a const data section, the instance structure must be manually initialized. +* Set the values in the state buffer to zeros before static initialization. +* For example, to statically initialize the instance structure use +*
+*     arm_biquad_cascade_df2T_instance_f32 S1 = {numStages, pState, pCoeffs};
+* 
+* where numStages is the number of Biquad stages in the filter; pState is the address of the state buffer. +* pCoeffs is the address of the coefficient buffer; +* +*/ + +/** +* @addtogroup BiquadCascadeDF2T +* @{ +*/ + +/** +* @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. +* @param[in] *S points to an instance of the filter data structure. +* @param[in] *pSrc points to the block of input data. +* @param[out] *pDst points to the block of output data +* @param[in] blockSize number of samples to process. +* @return none. +*/ + + +LOW_OPTIMIZATION_ENTER +void arm_biquad_cascade_stereo_df2T_f32( +const arm_biquad_cascade_stereo_df2T_instance_f32 * S, +float32_t * pSrc, +float32_t * pDst, +uint32_t blockSize) +{ + + float32_t *pIn = pSrc; /* source pointer */ + float32_t *pOut = pDst; /* destination pointer */ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* coefficient pointer */ + float32_t acc1a, acc1b; /* accumulator */ + float32_t b0, b1, b2, a1, a2; /* Filter coefficients */ + float32_t Xn1a, Xn1b; /* temporary input */ + float32_t d1a, d2a, d1b, d2b; /* state variables */ + uint32_t sample, stage = S->numStages; /* loop counters */ + +#if defined(ARM_MATH_CM7) + + float32_t Xn2a, Xn3a, Xn4a, Xn5a, Xn6a, Xn7a, Xn8a; /* Input State variables */ + float32_t Xn2b, Xn3b, Xn4b, Xn5b, Xn6b, Xn7b, Xn8b; /* Input State variables */ + float32_t acc2a, acc3a, acc4a, acc5a, acc6a, acc7a, acc8a; /* Simulates the accumulator */ + float32_t acc2b, acc3b, acc4b, acc5b, acc6b, acc7b, acc8b; /* Simulates the accumulator */ + + do + { + /* Reading the coefficients */ + b0 = pCoeffs[0]; + b1 = pCoeffs[1]; + b2 = pCoeffs[2]; + a1 = pCoeffs[3]; + /* Apply loop unrolling and compute 8 output values simultaneously. */ + sample = blockSize >> 3U; + a2 = pCoeffs[4]; + + /*Reading the state values */ + d1a = pState[0]; + d2a = pState[1]; + d1b = pState[2]; + d2b = pState[3]; + + pCoeffs += 5U; + + /* First part of the processing with loop unrolling. Compute 8 outputs at a time. + ** a second loop below computes the remaining 1 to 7 samples. */ + while (sample > 0U) { + + /* y[n] = b0 * x[n] + d1 */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + /* d2 = b2 * x[n] + a2 * y[n] */ + + /* Read the first 2 inputs. 2 cycles */ + Xn1a = pIn[0 ]; + Xn1b = pIn[1 ]; + + /* Sample 1. 5 cycles */ + Xn2a = pIn[2 ]; + acc1a = b0 * Xn1a + d1a; + + Xn2b = pIn[3 ]; + d1a = b1 * Xn1a + d2a; + + Xn3a = pIn[4 ]; + d2a = b2 * Xn1a; + + Xn3b = pIn[5 ]; + d1a += a1 * acc1a; + + Xn4a = pIn[6 ]; + d2a += a2 * acc1a; + + /* Sample 2. 5 cycles */ + Xn4b = pIn[7 ]; + acc1b = b0 * Xn1b + d1b; + + Xn5a = pIn[8 ]; + d1b = b1 * Xn1b + d2b; + + Xn5b = pIn[9 ]; + d2b = b2 * Xn1b; + + Xn6a = pIn[10]; + d1b += a1 * acc1b; + + Xn6b = pIn[11]; + d2b += a2 * acc1b; + + /* Sample 3. 5 cycles */ + Xn7a = pIn[12]; + acc2a = b0 * Xn2a + d1a; + + Xn7b = pIn[13]; + d1a = b1 * Xn2a + d2a; + + Xn8a = pIn[14]; + d2a = b2 * Xn2a; + + Xn8b = pIn[15]; + d1a += a1 * acc2a; + + pIn += 16; + d2a += a2 * acc2a; + + /* Sample 4. 5 cycles */ + acc2b = b0 * Xn2b + d1b; + d1b = b1 * Xn2b + d2b; + d2b = b2 * Xn2b; + d1b += a1 * acc2b; + d2b += a2 * acc2b; + + /* Sample 5. 5 cycles */ + acc3a = b0 * Xn3a + d1a; + d1a = b1 * Xn3a + d2a; + d2a = b2 * Xn3a; + d1a += a1 * acc3a; + d2a += a2 * acc3a; + + /* Sample 6. 5 cycles */ + acc3b = b0 * Xn3b + d1b; + d1b = b1 * Xn3b + d2b; + d2b = b2 * Xn3b; + d1b += a1 * acc3b; + d2b += a2 * acc3b; + + /* Sample 7. 5 cycles */ + acc4a = b0 * Xn4a + d1a; + d1a = b1 * Xn4a + d2a; + d2a = b2 * Xn4a; + d1a += a1 * acc4a; + d2a += a2 * acc4a; + + /* Sample 8. 5 cycles */ + acc4b = b0 * Xn4b + d1b; + d1b = b1 * Xn4b + d2b; + d2b = b2 * Xn4b; + d1b += a1 * acc4b; + d2b += a2 * acc4b; + + /* Sample 9. 5 cycles */ + acc5a = b0 * Xn5a + d1a; + d1a = b1 * Xn5a + d2a; + d2a = b2 * Xn5a; + d1a += a1 * acc5a; + d2a += a2 * acc5a; + + /* Sample 10. 5 cycles */ + acc5b = b0 * Xn5b + d1b; + d1b = b1 * Xn5b + d2b; + d2b = b2 * Xn5b; + d1b += a1 * acc5b; + d2b += a2 * acc5b; + + /* Sample 11. 5 cycles */ + acc6a = b0 * Xn6a + d1a; + d1a = b1 * Xn6a + d2a; + d2a = b2 * Xn6a; + d1a += a1 * acc6a; + d2a += a2 * acc6a; + + /* Sample 12. 5 cycles */ + acc6b = b0 * Xn6b + d1b; + d1b = b1 * Xn6b + d2b; + d2b = b2 * Xn6b; + d1b += a1 * acc6b; + d2b += a2 * acc6b; + + /* Sample 13. 5 cycles */ + acc7a = b0 * Xn7a + d1a; + d1a = b1 * Xn7a + d2a; + + pOut[0 ] = acc1a ; + d2a = b2 * Xn7a; + + pOut[1 ] = acc1b ; + d1a += a1 * acc7a; + + pOut[2 ] = acc2a ; + d2a += a2 * acc7a; + + /* Sample 14. 5 cycles */ + pOut[3 ] = acc2b ; + acc7b = b0 * Xn7b + d1b; + + pOut[4 ] = acc3a ; + d1b = b1 * Xn7b + d2b; + + pOut[5 ] = acc3b ; + d2b = b2 * Xn7b; + + pOut[6 ] = acc4a ; + d1b += a1 * acc7b; + + pOut[7 ] = acc4b ; + d2b += a2 * acc7b; + + /* Sample 15. 5 cycles */ + pOut[8 ] = acc5a ; + acc8a = b0 * Xn8a + d1a; + + pOut[9 ] = acc5b; + d1a = b1 * Xn8a + d2a; + + pOut[10] = acc6a; + d2a = b2 * Xn8a; + + pOut[11] = acc6b; + d1a += a1 * acc8a; + + pOut[12] = acc7a; + d2a += a2 * acc8a; + + /* Sample 16. 5 cycles */ + pOut[13] = acc7b; + acc8b = b0 * Xn8b + d1b; + + pOut[14] = acc8a; + d1b = b1 * Xn8b + d2b; + + pOut[15] = acc8b; + d2b = b2 * Xn8b; + + sample--; + d1b += a1 * acc8b; + + pOut += 16; + d2b += a2 * acc8b; + } + + sample = blockSize & 0x7U; + while (sample > 0U) { + /* Read the input */ + Xn1a = *pIn++; //Channel a + Xn1b = *pIn++; //Channel b + + /* y[n] = b0 * x[n] + d1 */ + acc1a = (b0 * Xn1a) + d1a; + acc1b = (b0 * Xn1b) + d1b; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc1a; + *pOut++ = acc1b; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a; + d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2a = (b2 * Xn1a) + (a2 * acc1a); + d2b = (b2 * Xn1b) + (a2 * acc1b); + + sample--; + } + + /* Store the updated state variables back into the state array */ + pState[0] = d1a; + pState[1] = d2a; + + pState[2] = d1b; + pState[3] = d2b; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + /* decrement the loop counter */ + stage--; + + pState += 4U; + /*Reset the output working pointer */ + pOut = pDst; + + } while (stage > 0U); + +#elif defined(ARM_MATH_CM0_FAMILY) + + /* Run the below code for Cortex-M0 */ + + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /*Reading the state values */ + d1a = pState[0]; + d2a = pState[1]; + d1b = pState[2]; + d2b = pState[3]; + + + sample = blockSize; + + while (sample > 0U) + { + /* Read the input */ + Xn1a = *pIn++; //Channel a + Xn1b = *pIn++; //Channel b + + /* y[n] = b0 * x[n] + d1 */ + acc1a = (b0 * Xn1a) + d1a; + acc1b = (b0 * Xn1b) + d1b; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc1a; + *pOut++ = acc1b; + + /* Every time after the output is computed state should be updated. */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + d1a = ((b1 * Xn1a) + (a1 * acc1a)) + d2a; + d1b = ((b1 * Xn1b) + (a1 * acc1b)) + d2b; + + /* d2 = b2 * x[n] + a2 * y[n] */ + d2a = (b2 * Xn1a) + (a2 * acc1a); + d2b = (b2 * Xn1b) + (a2 * acc1b); + + /* decrement the loop counter */ + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1a; + *pState++ = d2a; + *pState++ = d1b; + *pState++ = d2b; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); + +#else + + float32_t Xn2a, Xn3a, Xn4a; /* Input State variables */ + float32_t Xn2b, Xn3b, Xn4b; /* Input State variables */ + float32_t acc2a, acc3a, acc4a; /* accumulator */ + float32_t acc2b, acc3b, acc4b; /* accumulator */ + float32_t p0a, p1a, p2a, p3a, p4a, A1a; + float32_t p0b, p1b, p2b, p3b, p4b, A1b; + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + do + { + /* Reading the coefficients */ + b0 = *pCoeffs++; + b1 = *pCoeffs++; + b2 = *pCoeffs++; + a1 = *pCoeffs++; + a2 = *pCoeffs++; + + /*Reading the state values */ + d1a = pState[0]; + d2a = pState[1]; + d1b = pState[2]; + d2b = pState[3]; + + /* Apply loop unrolling and compute 4 output values simultaneously. */ + sample = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (sample > 0U) { + + /* y[n] = b0 * x[n] + d1 */ + /* d1 = b1 * x[n] + a1 * y[n] + d2 */ + /* d2 = b2 * x[n] + a2 * y[n] */ + + /* Read the four inputs */ + Xn1a = pIn[0]; + Xn1b = pIn[1]; + Xn2a = pIn[2]; + Xn2b = pIn[3]; + Xn3a = pIn[4]; + Xn3b = pIn[5]; + Xn4a = pIn[6]; + Xn4b = pIn[7]; + pIn += 8; + + p0a = b0 * Xn1a; + p0b = b0 * Xn1b; + p1a = b1 * Xn1a; + p1b = b1 * Xn1b; + acc1a = p0a + d1a; + acc1b = p0b + d1b; + p0a = b0 * Xn2a; + p0b = b0 * Xn2b; + p3a = a1 * acc1a; + p3b = a1 * acc1b; + p2a = b2 * Xn1a; + p2b = b2 * Xn1b; + A1a = p1a + p3a; + A1b = p1b + p3b; + p4a = a2 * acc1a; + p4b = a2 * acc1b; + d1a = A1a + d2a; + d1b = A1b + d2b; + d2a = p2a + p4a; + d2b = p2b + p4b; + + p1a = b1 * Xn2a; + p1b = b1 * Xn2b; + acc2a = p0a + d1a; + acc2b = p0b + d1b; + p0a = b0 * Xn3a; + p0b = b0 * Xn3b; + p3a = a1 * acc2a; + p3b = a1 * acc2b; + p2a = b2 * Xn2a; + p2b = b2 * Xn2b; + A1a = p1a + p3a; + A1b = p1b + p3b; + p4a = a2 * acc2a; + p4b = a2 * acc2b; + d1a = A1a + d2a; + d1b = A1b + d2b; + d2a = p2a + p4a; + d2b = p2b + p4b; + + p1a = b1 * Xn3a; + p1b = b1 * Xn3b; + acc3a = p0a + d1a; + acc3b = p0b + d1b; + p0a = b0 * Xn4a; + p0b = b0 * Xn4b; + p3a = a1 * acc3a; + p3b = a1 * acc3b; + p2a = b2 * Xn3a; + p2b = b2 * Xn3b; + A1a = p1a + p3a; + A1b = p1b + p3b; + p4a = a2 * acc3a; + p4b = a2 * acc3b; + d1a = A1a + d2a; + d1b = A1b + d2b; + d2a = p2a + p4a; + d2b = p2b + p4b; + + acc4a = p0a + d1a; + acc4b = p0b + d1b; + p1a = b1 * Xn4a; + p1b = b1 * Xn4b; + p3a = a1 * acc4a; + p3b = a1 * acc4b; + p2a = b2 * Xn4a; + p2b = b2 * Xn4b; + A1a = p1a + p3a; + A1b = p1b + p3b; + p4a = a2 * acc4a; + p4b = a2 * acc4b; + d1a = A1a + d2a; + d1b = A1b + d2b; + d2a = p2a + p4a; + d2b = p2b + p4b; + + pOut[0] = acc1a; + pOut[1] = acc1b; + pOut[2] = acc2a; + pOut[3] = acc2b; + pOut[4] = acc3a; + pOut[5] = acc3b; + pOut[6] = acc4a; + pOut[7] = acc4b; + pOut += 8; + + sample--; + } + + sample = blockSize & 0x3U; + while (sample > 0U) { + Xn1a = *pIn++; + Xn1b = *pIn++; + + p0a = b0 * Xn1a; + p0b = b0 * Xn1b; + p1a = b1 * Xn1a; + p1b = b1 * Xn1b; + acc1a = p0a + d1a; + acc1b = p0b + d1b; + p3a = a1 * acc1a; + p3b = a1 * acc1b; + p2a = b2 * Xn1a; + p2b = b2 * Xn1b; + A1a = p1a + p3a; + A1b = p1b + p3b; + p4a = a2 * acc1a; + p4b = a2 * acc1b; + d1a = A1a + d2a; + d1b = A1b + d2b; + d2a = p2a + p4a; + d2b = p2b + p4b; + + *pOut++ = acc1a; + *pOut++ = acc1b; + + sample--; + } + + /* Store the updated state variables back into the state array */ + *pState++ = d1a; + *pState++ = d2a; + *pState++ = d1b; + *pState++ = d2b; + + /* The current stage input is given as the output to the next stage */ + pIn = pDst; + + /*Reset the output working pointer */ + pOut = pDst; + + /* decrement the loop counter */ + stage--; + + } while (stage > 0U); + +#endif + +} +LOW_OPTIMIZATION_EXIT + +/** + * @} end of BiquadCascadeDF2T group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c new file mode 100644 index 0000000..b847c6e --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c @@ -0,0 +1,89 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_biquad_cascade_stereo_df2T_init_f32.c + * Description: Initialization function for floating-point transposed direct form II Biquad cascade filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup BiquadCascadeDF2T + * @{ + */ + +/** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] *S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @return none + * + * Coefficient and State Ordering: + * \par + * The coefficients are stored in the array pCoeffs in the following order: + *
+ *     {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...}
+ * 
+ * + * \par + * where b1x and a1x are the coefficients for the first stage, + * b2x and a2x are the coefficients for the second stage, + * and so on. The pCoeffs array contains a total of 5*numStages values. + * + * \par + * The pState is a pointer to state array. + * Each Biquad stage has 2 state variables d1, and d2 for each channel. + * The 2 state variables for stage 1 are first, then the 2 state variables for stage 2, and so on. + * The state array has a total length of 2*numStages values. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + */ + +void arm_biquad_cascade_stereo_df2T_init_f32( + arm_biquad_cascade_stereo_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState) +{ + /* Assign filter stages */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always 4 * numStages */ + memset(pState, 0, (4U * (uint32_t) numStages) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; +} + +/** + * @} end of BiquadCascadeDF2T group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c new file mode 100644 index 0000000..906f7ab --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_f32.c @@ -0,0 +1,635 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_f32.c + * Description: Convolution of floating-point sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup Conv Convolution + * + * Convolution is a mathematical operation that operates on two finite length vectors to generate a finite length output vector. + * Convolution is similar to correlation and is frequently used in filtering and data analysis. + * The CMSIS DSP library contains functions for convolving Q7, Q15, Q31, and floating-point data types. + * The library also provides fast versions of the Q15 and Q31 functions on Cortex-M4 and Cortex-M3. + * + * \par Algorithm + * Let a[n] and b[n] be sequences of length srcALen and srcBLen samples respectively. + * Then the convolution + * + *
+ *                   c[n] = a[n] * b[n]
+ * 
+ * + * \par + * is defined as + * \image html ConvolutionEquation.gif + * \par + * Note that c[n] is of length srcALen + srcBLen - 1 and is defined over the interval n=0, 1, 2, ..., srcALen + srcBLen - 2. + * pSrcA points to the first input vector of length srcALen and + * pSrcB points to the second input vector of length srcBLen. + * The output result is written to pDst and the calling function must allocate srcALen+srcBLen-1 words for the result. + * + * \par + * Conceptually, when two signals a[n] and b[n] are convolved, + * the signal b[n] slides over a[n]. + * For each offset \c n, the overlapping portions of a[n] and b[n] are multiplied and summed together. + * + * \par + * Note that convolution is a commutative operation: + * + *
+ *                   a[n] * b[n] = b[n] * a[n].
+ * 
+ * + * \par + * This means that switching the A and B arguments to the convolution functions has no effect. + * + * Fixed-Point Behavior + * + * \par + * Convolution requires summing up a large number of intermediate products. + * As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation. + * Refer to the function specific documentation below for further details of the particular algorithm used. + * + * + * Fast Versions + * + * \par + * Fast versions are supported for Q31 and Q15. Cycles for Fast versions are less compared to Q31 and Q15 of conv and the design requires + * the input signals should be scaled down to avoid intermediate overflows. + * + * + * Opt Versions + * + * \par + * Opt versions are supported for Q15 and Q7. Design uses internal scratch buffer for getting good optimisation. + * These versions are optimised in cycles and consumes more memory(Scratch memory) compared to Q15 and Q7 versions + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + */ + +void arm_conv_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst) +{ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t *pIn1; /* inputA pointer */ + float32_t *pIn2; /* inputB pointer */ + float32_t *pOut = pDst; /* output pointer */ + float32_t *px; /* Intermediate inputA pointer */ + float32_t *py; /* Intermediate inputB pointer */ + float32_t *pSrc1, *pSrc2; /* Intermediate pointers */ + float32_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + float32_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counters */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 1] */ + sum += *px++ * *py--; + + /* x[1] * y[srcBLen - 2] */ + sum += *px++ * *py--; + + /* x[2] * y[srcBLen - 3] */ + sum += *px++ * *py--; + + /* x[3] * y[srcBLen - 4] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + + /* Read x[3] sample */ + x3 = *(px); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 += x0 * c0; + + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 += x1 * c0; + + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 += x2 * c0; + + /* acc3 += x[3] * y[srcBLen - 1] */ + acc3 += x3 * c0; + + /* Read y[srcBLen - 2] sample */ + c0 = *(py--); + + /* Read x[4] sample */ + x0 = *(px + 1U); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 += x1 * c0; + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 += x2 * c0; + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 += x3 * c0; + /* acc3 += x[4] * y[srcBLen - 2] */ + acc3 += x0 * c0; + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + + /* Read x[5] sample */ + x1 = *(px + 2U); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 += x2 * c0; + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 += x3 * c0; + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 += x0 * c0; + /* acc3 += x[5] * y[srcBLen - 2] */ + acc3 += x1 * c0; + + /* Read y[srcBLen - 4] sample */ + c0 = *(py--); + + /* Read x[6] sample */ + x2 = *(px + 3U); + px += 4U; + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[srcBLen - 4] */ + acc0 += x3 * c0; + /* acc1 += x[4] * y[srcBLen - 4] */ + acc1 += x0 * c0; + /* acc2 += x[5] * y[srcBLen - 4] */ + acc2 += x1 * c0; + /* acc3 += x[6] * y[srcBLen - 4] */ + acc3 += x2 * c0; + + + } while (--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += x0 * c0; + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += x1 * c0; + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += x2 * c0; + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 += x3 * c0; + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc0; + *pOut++ = acc1; + *pOut++ = acc2; + *pOut++ = acc3; + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + + /* Decrement the loop counter */ + blkCnt--; + } + + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += *px++ * *py--; + sum += *px++ * *py--; + sum += *px++ * *py--; + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t *pIn1 = pSrcA; /* inputA pointer */ + float32_t *pIn2 = pSrcB; /* inputB pointer */ + float32_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + + /* Loop to calculate convolution for output length number of times */ + for (i = 0U; i < ((srcALen + srcBLen) - 1U); i++) + { + /* Initialize sum with zero to carry out MAC operations */ + sum = 0.0f; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += pIn1[j] * pIn2[i - j]; + } + } + /* Store the output in the destination buffer */ + pDst[i] = sum; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of Conv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c new file mode 100644 index 0000000..26c37f0 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_opt_q15.c @@ -0,0 +1,531 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_fast_opt_q15.c + * Description: Fast Q15 Convolution + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return none. + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit + * + * Scaling and Overflow Behavior: + * + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results + * but provides only a single guard bit. There is no saturation on intermediate additions. + * Thus, if the accumulator overflows it wraps around and distorts the result. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, + * as maximum of min(srcALen, srcBLen) number of additions are carried internally. + * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result. + * + * \par + * See arm_conv_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. + */ + +void arm_conv_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2) +{ + q31_t acc0, acc1, acc2, acc3; /* Accumulators */ + q31_t x1, x2, x3; /* Temporary variables to hold state and coefficient values */ + q31_t y1, y2; /* State variables */ + q15_t *pOut = pDst; /* output pointer */ + q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ + q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + uint32_t j, k, blkCnt; /* loop counter */ + uint32_t tapCnt; /* loop count */ +#ifdef UNALIGNED_SUPPORT_DISABLE + + q15_t a, b; + +#endif /* #ifdef UNALIGNED_SUPPORT_DISABLE */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Pointer to take end of scratch2 buffer */ + pScr2 = pScratch2 + srcBLen - 1; + + /* points to smaller length sequence */ + px = pIn2; + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + + /* Copy smaller length input sequence in reverse order into second scratch buffer */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* Initialze temporary scratch pointer */ + pScr1 = pScratch1; + + /* Assuming scratch1 buffer is aligned by 32-bit */ + /* Fill (srcBLen - 1U) zeros in scratch1 buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr1 += (srcBLen - 1U); + + /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Copy (srcALen) samples in scratch buffer */ + arm_copy_q15(pIn1, pScr1, srcALen); + + /* Update pointers */ + pScr1 += srcALen; + +#else + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcALen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcALen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = *pIn1++; + + /* Decrement the loop counter */ + k--; + } + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update pointer */ + pScr1 += (srcBLen - 1U); + +#else + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = (srcBLen - 1U) >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = (srcBLen - 1U) % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Temporary pointer for scratch2 */ + py = pScratch2; + + + /* Initialization of pIn2 pointer */ + pIn2 = py; + + /* First part of the processing with loop unrolling process 4 data points at a time. + ** a second loop below process for the remaining 1 to 3 samples. */ + + /* Actual convolution process starts here */ + blkCnt = (srcALen + srcBLen - 1U) >> 2; + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* Read next two samples from scratch1 buffer */ + x2 = *__SIMD32(pScr1)++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pIn2); + y2 = _SIMD32_OFFSET(pIn2 + 2U); + + /* multiply and accumlate */ + acc0 = __SMLAD(x1, y1, acc0); + acc2 = __SMLAD(x2, y1, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + /* multiply and accumlate */ + acc1 = __SMLADX(x3, y1, acc1); + + /* Read next two samples from scratch1 buffer */ + x1 = _SIMD32_OFFSET(pScr1); + + /* multiply and accumlate */ + acc0 = __SMLAD(x2, y2, acc0); + acc2 = __SMLAD(x1, y2, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + acc1 = __SMLADX(x3, y2, acc1); + + x2 = _SIMD32_OFFSET(pScr1 + 2U); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLADX(x3, y2, acc3); + +#else + + /* Read four samples from smaller buffer */ + a = *pIn2; + b = *(pIn2 + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + y1 = __PKHBT(a, b, 16); +#else + y1 = __PKHBT(b, a, 16); +#endif + + a = *(pIn2 + 2); + b = *(pIn2 + 3); +#ifndef ARM_MATH_BIG_ENDIAN + y2 = __PKHBT(a, b, 16); +#else + y2 = __PKHBT(b, a, 16); +#endif + + acc0 = __SMLAD(x1, y1, acc0); + + acc2 = __SMLAD(x2, y1, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc1 = __SMLADX(x3, y1, acc1); + + a = *pScr1; + b = *(pScr1 + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(a, b, 16); +#else + x1 = __PKHBT(b, a, 16); +#endif + + acc0 = __SMLAD(x2, y2, acc0); + + acc2 = __SMLAD(x1, y2, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + + acc1 = __SMLADX(x3, y2, acc1); + + a = *(pScr1 + 2); + b = *(pScr1 + 3); + +#ifndef ARM_MATH_BIG_ENDIAN + x2 = __PKHBT(a, b, 16); +#else + x2 = __PKHBT(b, a, 16); +#endif + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLADX(x3, y2, acc3); + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* update scratch pointers */ + pIn2 += 4U; + pScr1 += 4U; + + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr1 -= 4U; + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2); + acc1 += (*pScr1++ * *pIn2); + acc2 += (*pScr1++ * *pIn2); + acc3 += (*pScr1++ * *pIn2++); + + pScr1 -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + + /* Store the results in the accumulators in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + + +#else + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + + + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 4U; + + } + + + blkCnt = (srcALen + srcBLen - 1U) & 0x3; + + /* Calculate convolution for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + + acc0 += (*pScr1++ * *pIn2++); + acc0 += (*pScr1++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* The result is in 2.30 format. Convert to 1.15 with saturation. + ** Then store the output in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 1U; + + } + +} + +/** + * @} end of Conv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c new file mode 100644 index 0000000..16b0424 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q15.c @@ -0,0 +1,1398 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_fast_q15.c + * Description: Fast Q15 Convolution + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + * + * Scaling and Overflow Behavior: + * + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results + * but provides only a single guard bit. There is no saturation on intermediate additions. + * Thus, if the accumulator overflows it wraps around and distorts the result. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, + * as maximum of min(srcALen, srcBLen) number of additions are carried internally. + * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result. + * + * \par + * See arm_conv_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. + */ + +void arm_conv_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ +#ifndef UNALIGNED_SUPPORT_DISABLE + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt; /* loop counter */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations less than 4 */ + /* Second part of this stage computes the MAC operations greater than or equal to 4 */ + + /* The first part of the stage starts here */ + while ((count < 4U) && (blockSize1 > 0U)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over number of MAC operations between + * inputA samples and inputB samples */ + k = count; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* The second part of the stage starts here */ + /* The internal loop, over count, is unrolled by 4 */ + /* To, read the last two inputB samples using SIMD: + * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ + py = py - 1; + + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1U; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + (count - 1U); + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is the index by which the pointer pIn1 to be incremented */ + count = 0U; + + + /* -------------------- + * Stage2 process + * -------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + py = py - 1U; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + + /* read x[0], x[1] samples */ + x0 = *__SIMD32(px); + /* read x[1], x[2] samples */ + x1 = _SIMD32_OFFSET(px+1); + px+= 2U; + + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the last two inputB samples using SIMD: + * y[srcBLen - 1] and y[srcBLen - 2] */ + c0 = *__SIMD32(py)--; + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLADX(x0, c0, acc0); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLADX(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *__SIMD32(px); + + /* Read x[3], x[4] */ + x3 = _SIMD32_OFFSET(px+1); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLADX(x2, c0, acc2); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLADX(x3, c0, acc3); + + /* Read y[srcBLen - 3] and y[srcBLen - 4] */ + c0 = *__SIMD32(py)--; + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLADX(x2, c0, acc0); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLADX(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = _SIMD32_OFFSET(px+2); + + /* Read x[5], x[6] */ + x1 = _SIMD32_OFFSET(px+3); + px += 4U; + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLADX(x0, c0, acc2); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLADX(x1, c0, acc3); + + } while (--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + if (k == 1U) + { + /* Read y[srcBLen - 5] */ + c0 = *(py+1); + +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + x3 = *__SIMD32(px); + px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLADX(x1, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + if (k == 2U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = _SIMD32_OFFSET(py); + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px+1); + px += 2U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + } + + if (k == 3U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = _SIMD32_OFFSET(py); + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px+1); + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + + /* Read y[srcBLen - 7] */ + c0 = *(py-1); +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; +#else + + c0 = c0 & 0x0000FFFF; +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + x3 = _SIMD32_OFFSET(px+2); + px += 3U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x1, c0, acc0); + acc1 = __SMLAD(x2, c0, acc1); + acc2 = __SMLADX(x2, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + /* Store the results in the accumulators in the destination buffer. */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = __PKHBT((acc0 >> 15), (acc1 >> 15), 16); + *__SIMD32(pOut)++ = __PKHBT((acc2 >> 15), (acc3 >> 15), 16); + +#else + + *__SIMD32(pOut)++ = __PKHBT((acc1 >> 15), (acc0 >> 15), 16); + *__SIMD32(pOut)++ = __PKHBT((acc3 >> 15), (acc2 >> 15), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + pIn2 = pSrc2 - 1U; + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations greater than 4 */ + /* Second part of this stage computes the MAC operations less than or equal to 4 */ + + /* The first part of the stage starts here */ + j = blockSize3 >> 2U; + + while ((j > 0U) && (blockSize3 > 0U)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied + * with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied + * with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1U; + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4U; + + while (k > 0U) + { + /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the loop counter */ + blockSize3--; + + j--; + } + + /* The second part of the stage starts here */ + /* SIMD is not used for the next MAC operations, + * so pointer py is updated to read only one sample at a time */ + py = py + 1U; + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt; /* loop counter */ + q15_t a, b; + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations less than 4 */ + /* Second part of this stage computes the MAC operations greater than or equal to 4 */ + + /* The first part of the stage starts here */ + while ((count < 4U) && (blockSize1 > 0U)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over number of MAC operations between + * inputA samples and inputB samples */ + k = count; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* The second part of the stage starts here */ + /* The internal loop, over count, is unrolled by 4 */ + /* To, read the last two inputB samples using SIMD: + * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ + py = py - 1; + + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + py++; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + (count - 1U); + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is the index by which the pointer pIn1 to be incremented */ + count = 0U; + + + /* -------------------- + * Stage2 process + * -------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + py = py - 1U; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1] samples */ + a = *px++; + b = *px++; + +#ifndef ARM_MATH_BIG_ENDIAN + + x0 = __PKHBT(a, b, 16); + a = *px; + x1 = __PKHBT(b, a, 16); + +#else + + x0 = __PKHBT(b, a, 16); + a = *px; + x1 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the last two inputB samples using SIMD: + * y[srcBLen - 1] and y[srcBLen - 2] */ + a = *py; + b = *(py+1); + py -= 2; + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLADX(x0, c0, acc0); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLADX(x1, c0, acc1); + + a = *px; + b = *(px + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + x2 = __PKHBT(a, b, 16); + a = *(px + 2); + x3 = __PKHBT(b, a, 16); + +#else + + x2 = __PKHBT(b, a, 16); + a = *(px + 2); + x3 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLADX(x2, c0, acc2); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLADX(x3, c0, acc3); + + /* Read y[srcBLen - 3] and y[srcBLen - 4] */ + a = *py; + b = *(py+1); + py -= 2; + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLADX(x2, c0, acc0); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLADX(x3, c0, acc1); + + /* Read x[4], x[5], x[6] */ + a = *(px + 2); + b = *(px + 3); + +#ifndef ARM_MATH_BIG_ENDIAN + + x0 = __PKHBT(a, b, 16); + a = *(px + 4); + x1 = __PKHBT(b, a, 16); + +#else + + x0 = __PKHBT(b, a, 16); + a = *(px + 4); + x1 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + px += 4U; + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLADX(x0, c0, acc2); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLADX(x1, c0, acc3); + + } while (--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + if (k == 1U) + { + /* Read y[srcBLen - 5] */ + c0 = *(py+1); + +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + a = *px; + b = *(px+1); + px++; + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + +#else + + x3 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLADX(x1, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + if (k == 2U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + a = *py; + b = *(py+1); + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7], x[8], x[9] */ + a = *px; + b = *(px + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + a = *(px + 2); + x2 = __PKHBT(b, a, 16); + +#else + + x3 = __PKHBT(b, a, 16); + a = *(px + 2); + x2 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + px += 2U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + } + + if (k == 3U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + a = *py; + b = *(py+1); + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7], x[8], x[9] */ + a = *px; + b = *(px + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + a = *(px + 2); + x2 = __PKHBT(b, a, 16); + +#else + + x3 = __PKHBT(b, a, 16); + a = *(px + 2); + x2 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + + /* Read y[srcBLen - 7] */ + c0 = *(py-1); +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; +#else + + c0 = c0 & 0x0000FFFF; +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + a = *(px+2); + b = *(px+3); + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + +#else + + x3 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + px += 3U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x1, c0, acc0); + acc1 = __SMLAD(x2, c0, acc1); + acc2 = __SMLADX(x2, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + /* Store the results in the accumulators in the destination buffer. */ + *pOut++ = (q15_t)(acc0 >> 15); + *pOut++ = (q15_t)(acc1 >> 15); + *pOut++ = (q15_t)(acc2 >> 15); + *pOut++ = (q15_t)(acc3 >> 15); + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + pIn2 = pSrc2 - 1U; + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations greater than 4 */ + /* Second part of this stage computes the MAC operations less than or equal to 4 */ + + /* The first part of the stage starts here */ + j = blockSize3 >> 2U; + + while ((j > 0U) && (blockSize3 > 0U)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + py++; + + while (k > 0U) + { + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4U; + + while (k > 0U) + { + /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the loop counter */ + blockSize3--; + + j--; + } + + /* The second part of the stage starts here */ + /* SIMD is not used for the next MAC operations, + * so pointer py is updated to read only one sample at a time */ + py = py + 1U; + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ +} + +/** + * @} end of Conv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c new file mode 100644 index 0000000..bc57221 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_fast_q31.c @@ -0,0 +1,565 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_fast_q31.c + * Description: Fast Q31 Convolution + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * This function is optimized for speed at the expense of fixed-point precision and overflow protection. + * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. + * These intermediate results are accumulated in a 32-bit register in 2.30 format. + * Finally, the accumulator is saturated and converted to a 1.31 result. + * + * \par + * The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signals must be scaled down. + * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, + * as maximum of min(srcALen, srcBLen) number of additions are carried internally. + * + * \par + * See arm_conv_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision. + */ + +void arm_conv_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counter */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[1] * y[srcBLen - 2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[2] * y[srcBLen - 3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[3] * y[srcBLen - 4] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + + /* acc3 += x[3] * y[srcBLen - 1] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Read y[srcBLen - 2] sample */ + c0 = *(py--); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc3 += x[4] * y[srcBLen - 2] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc1 += x[3] * y[srcBLen - 3] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc2 += x[4] * y[srcBLen - 3] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc3 += x[5] * y[srcBLen - 3] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* Read y[srcBLen - 4] sample */ + c0 = *(py--); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[srcBLen - 4] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc1 += x[4] * y[srcBLen - 4] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc2 += x[5] * y[srcBLen - 4] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc3 += x[6] * y[srcBLen - 4] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32); + + + } while (--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the results in the accumulators in the destination buffer. */ + *pOut++ = (q31_t) (acc0 << 1); + *pOut++ = (q31_t) (acc1 << 1); + *pOut++ = (q31_t) (acc2 << 1); + *pOut++ = (q31_t) (acc3 << 1); + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +} + +/** + * @} end of Conv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c new file mode 100644 index 0000000..47f6f84 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q15.c @@ -0,0 +1,533 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_opt_q15.c + * Description: Convolution of Q15 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return none. + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit + * + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both inputs are in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * This approach provides 33 guard bits and there is no risk of overflow. + * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format. + * + * + * \par + * Refer to arm_conv_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + * + * + */ + +void arm_conv_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2) +{ + q63_t acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t x1, x2, x3; /* Temporary variables to hold state and coefficient values */ + q31_t y1, y2; /* State variables */ + q15_t *pOut = pDst; /* output pointer */ + q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ + q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + uint32_t j, k, blkCnt; /* loop counter */ + uint32_t tapCnt; /* loop count */ +#ifdef UNALIGNED_SUPPORT_DISABLE + + q15_t a, b; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* pointer to take end of scratch2 buffer */ + pScr2 = pScratch2 + srcBLen - 1; + + /* points to smaller length sequence */ + px = pIn2; + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + /* Copy smaller length input sequence in reverse order into second scratch buffer */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* Initialze temporary scratch pointer */ + pScr1 = pScratch1; + + /* Assuming scratch1 buffer is aligned by 32-bit */ + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr1 += (srcBLen - 1U); + + /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Copy (srcALen) samples in scratch buffer */ + arm_copy_q15(pIn1, pScr1, srcALen); + + /* Update pointers */ + pScr1 += srcALen; + +#else + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcALen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcALen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = *pIn1++; + + /* Decrement the loop counter */ + k--; + } + +#endif + + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update pointer */ + pScr1 += (srcBLen - 1U); + +#else + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = (srcBLen - 1U) >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = (srcBLen - 1U) % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + +#endif + + /* Temporary pointer for scratch2 */ + py = pScratch2; + + + /* Initialization of pIn2 pointer */ + pIn2 = py; + + /* First part of the processing with loop unrolling process 4 data points at a time. + ** a second loop below process for the remaining 1 to 3 samples. */ + + /* Actual convolution process starts here */ + blkCnt = (srcALen + srcBLen - 1U) >> 2; + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* Read next two samples from scratch1 buffer */ + x2 = *__SIMD32(pScr1)++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pIn2); + y2 = _SIMD32_OFFSET(pIn2 + 2U); + + /* multiply and accumlate */ + acc0 = __SMLALD(x1, y1, acc0); + acc2 = __SMLALD(x2, y1, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + /* multiply and accumlate */ + acc1 = __SMLALDX(x3, y1, acc1); + + /* Read next two samples from scratch1 buffer */ + x1 = _SIMD32_OFFSET(pScr1); + + /* multiply and accumlate */ + acc0 = __SMLALD(x2, y2, acc0); + acc2 = __SMLALD(x1, y2, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLALDX(x3, y1, acc3); + acc1 = __SMLALDX(x3, y2, acc1); + + x2 = _SIMD32_OFFSET(pScr1 + 2U); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLALDX(x3, y2, acc3); + +#else + + /* Read four samples from smaller buffer */ + a = *pIn2; + b = *(pIn2 + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + y1 = __PKHBT(a, b, 16); +#else + y1 = __PKHBT(b, a, 16); +#endif + + a = *(pIn2 + 2); + b = *(pIn2 + 3); +#ifndef ARM_MATH_BIG_ENDIAN + y2 = __PKHBT(a, b, 16); +#else + y2 = __PKHBT(b, a, 16); +#endif + + acc0 = __SMLALD(x1, y1, acc0); + + acc2 = __SMLALD(x2, y1, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc1 = __SMLALDX(x3, y1, acc1); + + a = *pScr1; + b = *(pScr1 + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(a, b, 16); +#else + x1 = __PKHBT(b, a, 16); +#endif + + acc0 = __SMLALD(x2, y2, acc0); + + acc2 = __SMLALD(x1, y2, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLALDX(x3, y1, acc3); + + acc1 = __SMLALDX(x3, y2, acc1); + + a = *(pScr1 + 2); + b = *(pScr1 + 3); + +#ifndef ARM_MATH_BIG_ENDIAN + x2 = __PKHBT(a, b, 16); +#else + x2 = __PKHBT(b, a, 16); +#endif + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLALDX(x3, y2, acc3); + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + pIn2 += 4U; + pScr1 += 4U; + + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr1 -= 4U; + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2); + acc1 += (*pScr1++ * *pIn2); + acc2 += (*pScr1++ * *pIn2); + acc3 += (*pScr1++ * *pIn2++); + + pScr1 -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + + /* Store the results in the accumulators in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 4U; + + } + + + blkCnt = (srcALen + srcBLen - 1U) & 0x3; + + /* Calculate convolution for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + + /* Read next two samples from scratch1 buffer */ + acc0 += (*pScr1++ * *pIn2++); + acc0 += (*pScr1++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* The result is in 2.30 format. Convert to 1.15 with saturation. + ** Then store the output in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 1U; + + } + +} + + +/** + * @} end of Conv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c new file mode 100644 index 0000000..1dc2e49 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_opt_q7.c @@ -0,0 +1,423 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_opt_q7.c + * Description: Convolution of Q7 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + * @return none. + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 32-bit internal accumulator. + * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. + * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. + * This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. + * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format. + * + */ + +void arm_conv_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2) +{ + + q15_t *pScr2, *pScr1; /* Intermediate pointers for scratch pointers */ + q15_t x4; /* Temporary input variable */ + q7_t *pIn1, *pIn2; /* inputA and inputB pointer */ + uint32_t j, k, blkCnt, tapCnt; /* loop counter */ + q7_t *px; /* Temporary input1 pointer */ + q15_t *py; /* Temporary input2 pointer */ + q31_t acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t x1, x2, x3, y1; /* Temporary input variables */ + q7_t *pOut = pDst; /* output pointer */ + q7_t out0, out1, out2, out3; /* temporary variables */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* pointer to take end of scratch2 buffer */ + pScr2 = pScratch2; + + /* points to smaller length sequence */ + px = pIn2 + srcBLen - 1; + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + x4 = (q15_t) * px--; + *pScr2++ = x4; + x4 = (q15_t) * px--; + *pScr2++ = x4; + x4 = (q15_t) * px--; + *pScr2++ = x4; + x4 = (q15_t) * px--; + *pScr2++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + x4 = (q15_t) * px--; + *pScr2++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* Initialze temporary scratch pointer */ + pScr1 = pScratch1; + + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr1 += (srcBLen - 1U); + + /* Copy (srcALen) samples in scratch buffer */ + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcALen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcALen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + + /* Decrement the loop counter */ + k--; + } + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update pointer */ + pScr1 += (srcBLen - 1U); + +#else + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = (srcBLen - 1U) >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = (srcBLen - 1U) % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + +#endif + + /* Temporary pointer for scratch2 */ + py = pScratch2; + + /* Initialization of pIn2 pointer */ + pIn2 = (q7_t *) py; + + pScr2 = py; + + /* Actual convolution process starts here */ + blkCnt = (srcALen + srcBLen - 1U) >> 2; + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* Read next two samples from scratch1 buffer */ + x2 = *__SIMD32(pScr1)++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pScr2); + + /* multiply and accumlate */ + acc0 = __SMLAD(x1, y1, acc0); + acc2 = __SMLAD(x2, y1, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + /* multiply and accumlate */ + acc1 = __SMLADX(x3, y1, acc1); + + /* Read next two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pScr2 + 2U); + + acc0 = __SMLAD(x2, y1, acc0); + + acc2 = __SMLAD(x1, y1, acc2); + + acc1 = __SMLADX(x3, y1, acc1); + + x2 = *__SIMD32(pScr1)++; + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + + pScr2 += 4U; + + + /* Decrement the loop counter */ + tapCnt--; + } + + + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr1 -= 4U; + + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pScr2); + acc1 += (*pScr1++ * *pScr2); + acc2 += (*pScr1++ * *pScr2); + acc3 += (*pScr1++ * *pScr2++); + + pScr1 -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + out0 = (q7_t) (__SSAT(acc0 >> 7U, 8)); + out1 = (q7_t) (__SSAT(acc1 >> 7U, 8)); + out2 = (q7_t) (__SSAT(acc2 >> 7U, 8)); + out3 = (q7_t) (__SSAT(acc3 >> 7U, 8)); + + *__SIMD32(pOut)++ = __PACKq7(out0, out1, out2, out3); + + /* Initialization of inputB pointer */ + pScr2 = py; + + pScratch1 += 4U; + + } + + + blkCnt = (srcALen + srcBLen - 1U) & 0x3; + + /* Calculate convolution for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + acc0 += (*pScr1++ * *pScr2++); + acc0 += (*pScr1++ * *pScr2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pScr2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8)); + + /* Initialization of inputB pointer */ + pScr2 = py; + + pScratch1 += 1U; + + } + +} + + +/** + * @} end of Conv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c new file mode 100644 index 0000000..9eae124 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_f32.c @@ -0,0 +1,678 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_partial_f32.c + * Description: Partial convolution of floating-point sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup PartialConv Partial Convolution + * + * Partial Convolution is equivalent to Convolution except that a subset of the output samples is generated. + * Each function has two additional arguments. + * firstIndex specifies the starting index of the subset of output samples. + * numPoints is the number of output samples to compute. + * The function computes the output in the range + * [firstIndex, ..., firstIndex+numPoints-1]. + * The output array pDst contains numPoints values. + * + * The allowable range of output indices is [0 srcALen+srcBLen-2]. + * If the requested subset does not fall in this range then the functions return ARM_MATH_ARGUMENT_ERROR. + * Otherwise the functions return ARM_MATH_SUCCESS. + * \note Refer arm_conv_f32() for details on fixed point behavior. + * + * + * Fast Versions + * + * \par + * Fast versions are supported for Q31 and Q15 of partial convolution. Cycles for Fast versions are less compared to Q31 and Q15 of partial conv and the design requires + * the input signals should be scaled down to avoid intermediate overflows. + * + * + * Opt Versions + * + * \par + * Opt versions are supported for Q15 and Q7. Design uses internal scratch buffer for getting good optimisation. + * These versions are optimised in cycles and consumes more memory(Scratch memory) compared to Q15 and Q7 versions of partial convolution + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + +arm_status arm_conv_partial_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t *pIn1 = pSrcA; /* inputA pointer */ + float32_t *pIn2 = pSrcB; /* inputB pointer */ + float32_t *pOut = pDst; /* output pointer */ + float32_t *px; /* Intermediate inputA pointer */ + float32_t *py; /* Intermediate inputB pointer */ + float32_t *pSrc1, *pSrc2; /* Intermediate pointers */ + float32_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + float32_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t j, k, count = 0U, blkCnt, check; + int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; + blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; + blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex; + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = ((int32_t) check - blockSize3) - + (blockSize1 + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1U + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + firstIndex; + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while (blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 1] */ + sum += *px++ * *py--; + + /* x[1] * y[srcBLen - 2] */ + sum += *px++ * *py--; + + /* x[2] * y[srcBLen - 3] */ + sum += *px++ * *py--; + + /* x[3] * y[srcBLen - 4] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc1; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1; + } + else + { + px = pIn1; + } + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = ((uint32_t) blockSize2 >> 2U); + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 += x0 * c0; + + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 += x1 * c0; + + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 += x2 * c0; + + /* acc3 += x[3] * y[srcBLen - 1] */ + acc3 += x3 * c0; + + /* Read y[srcBLen - 2] sample */ + c0 = *(py--); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 += x1 * c0; + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 += x2 * c0; + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 += x3 * c0; + /* acc3 += x[4] * y[srcBLen - 2] */ + acc3 += x0 * c0; + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 += x2 * c0; + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 += x3 * c0; + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 += x0 * c0; + /* acc3 += x[5] * y[srcBLen - 2] */ + acc3 += x1 * c0; + + /* Read y[srcBLen - 4] sample */ + c0 = *(py--); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[srcBLen - 4] */ + acc0 += x3 * c0; + /* acc1 += x[4] * y[srcBLen - 4] */ + acc1 += x0 * c0; + /* acc2 += x[5] * y[srcBLen - 4] */ + acc2 += x1 * c0; + /* acc3 += x[6] * y[srcBLen - 4] */ + acc3 += x2 * c0; + + + } while (--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += x0 * c0; + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += x1 * c0; + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += x2 * c0; + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 += x3 * c0; + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = acc0; + *pOut++ = acc1; + *pOut++ = acc2; + *pOut++ = acc3; + + /* Increment the pointer pIn1 index, count by 1 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += *px++ * *py--; + sum += *px++ * *py--; + sum += *px++ * *py--; + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + while (blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + sum += *px++ * *py--; + + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum += *px++ * *py--; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t *pIn1 = pSrcA; /* inputA pointer */ + float32_t *pIn2 = pSrcB; /* inputB pointer */ + float32_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + /* Loop to calculate convolution for output length number of values */ + for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0.0f; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations for inputs */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += pIn1[j] * pIn2[i - j]; + } + } + /* Store the output in the destination buffer */ + pDst[i] = sum; + } + /* set status as ARM_SUCCESS as there are no argument errors */ + status = ARM_MATH_SUCCESS; + } + return (status); + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of PartialConv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c new file mode 100644 index 0000000..f469d1f --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c @@ -0,0 +1,756 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_partial_fast_opt_q15.c + * Description: Fast Q15 Partial convolution + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * See arm_conv_partial_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion. + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit + * + */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + +arm_status arm_conv_partial_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2) +{ + + q15_t *pOut = pDst; /* output pointer */ + q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ + q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ + q31_t acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t x1, x2, x3; /* Temporary variables to hold state and coefficient values */ + q31_t y1, y2; /* State variables */ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + uint32_t j, k, blkCnt; /* loop counter */ + arm_status status; + + uint32_t tapCnt; /* loop count */ + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Temporary pointer for scratch2 */ + py = pScratch2; + + /* pointer to take end of scratch2 buffer */ + pScr2 = pScratch2 + srcBLen - 1; + + /* points to smaller length sequence */ + px = pIn2; + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + + /* Copy smaller length input sequence in reverse order into second scratch buffer */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* Initialze temporary scratch pointer */ + pScr1 = pScratch1; + + /* Assuming scratch1 buffer is aligned by 32-bit */ + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr1 += (srcBLen - 1U); + + /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ + + /* Copy (srcALen) samples in scratch buffer */ + arm_copy_q15(pIn1, pScr1, srcALen); + + /* Update pointers */ + pScr1 += srcALen; + + /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update pointer */ + pScr1 += (srcBLen - 1U); + + /* Initialization of pIn2 pointer */ + pIn2 = py; + + pScratch1 += firstIndex; + + pOut = pDst + firstIndex; + + /* First part of the processing with loop unrolling process 4 data points at a time. + ** a second loop below process for the remaining 1 to 3 samples. */ + + /* Actual convolution process starts here */ + blkCnt = (numPoints) >> 2; + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* Read next two samples from scratch1 buffer */ + x2 = *__SIMD32(pScr1)++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pIn2); + y2 = _SIMD32_OFFSET(pIn2 + 2U); + + /* multiply and accumlate */ + acc0 = __SMLAD(x1, y1, acc0); + acc2 = __SMLAD(x2, y1, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + /* multiply and accumlate */ + acc1 = __SMLADX(x3, y1, acc1); + + /* Read next two samples from scratch1 buffer */ + x1 = _SIMD32_OFFSET(pScr1); + + /* multiply and accumlate */ + acc0 = __SMLAD(x2, y2, acc0); + + acc2 = __SMLAD(x1, y2, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + acc1 = __SMLADX(x3, y2, acc1); + + x2 = _SIMD32_OFFSET(pScr1 + 2U); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLADX(x3, y2, acc3); + + /* update scratch pointers */ + pIn2 += 4U; + pScr1 += 4U; + + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr1 -= 4U; + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2); + acc1 += (*pScr1++ * *pIn2); + acc2 += (*pScr1++ * *pIn2); + acc3 += (*pScr1++ * *pIn2++); + + pScr1 -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + + /* Store the results in the accumulators in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 4U; + + } + + + blkCnt = numPoints & 0x3; + + /* Calculate convolution for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + + /* Read next two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* Read two samples from smaller buffer */ + y1 = *__SIMD32(pIn2)++; + + acc0 = __SMLAD(x1, y1, acc0); + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* The result is in 2.30 format. Convert to 1.15 with saturation. + ** Then store the output in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 1U; + + } + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + /* Return to application */ + return (status); +} + +#else + +arm_status arm_conv_partial_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2) +{ + + q15_t *pOut = pDst; /* output pointer */ + q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ + q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ + q31_t acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + uint32_t j, k, blkCnt; /* loop counter */ + arm_status status; /* Status variable */ + uint32_t tapCnt; /* loop count */ + q15_t x10, x11, x20, x21; /* Temporary variables to hold srcA buffer */ + q15_t y10, y11; /* Temporary variables to hold srcB buffer */ + + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Temporary pointer for scratch2 */ + py = pScratch2; + + /* pointer to take end of scratch2 buffer */ + pScr2 = pScratch2 + srcBLen - 1; + + /* points to smaller length sequence */ + px = pIn2; + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* Initialze temporary scratch pointer */ + pScr1 = pScratch1; + + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr1 += (srcBLen - 1U); + + /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ + + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcALen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcALen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = *pIn1++; + + /* Decrement the loop counter */ + k--; + } + + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = (srcBLen - 1U) >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = (srcBLen - 1U) % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + + + /* Initialization of pIn2 pointer */ + pIn2 = py; + + pScratch1 += firstIndex; + + pOut = pDst + firstIndex; + + /* Actual convolution process starts here */ + blkCnt = (numPoints) >> 2; + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read two samples from scratch1 buffer */ + x10 = *pScr1++; + x11 = *pScr1++; + + /* Read next two samples from scratch1 buffer */ + x20 = *pScr1++; + x21 = *pScr1++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + + /* Read two samples from smaller buffer */ + y10 = *pIn2; + y11 = *(pIn2 + 1U); + + /* multiply and accumlate */ + acc0 += (q31_t) x10 *y10; + acc0 += (q31_t) x11 *y11; + acc2 += (q31_t) x20 *y10; + acc2 += (q31_t) x21 *y11; + + /* multiply and accumlate */ + acc1 += (q31_t) x11 *y10; + acc1 += (q31_t) x20 *y11; + + /* Read next two samples from scratch1 buffer */ + x10 = *pScr1; + x11 = *(pScr1 + 1U); + + /* multiply and accumlate */ + acc3 += (q31_t) x21 *y10; + acc3 += (q31_t) x10 *y11; + + /* Read next two samples from scratch2 buffer */ + y10 = *(pIn2 + 2U); + y11 = *(pIn2 + 3U); + + /* multiply and accumlate */ + acc0 += (q31_t) x20 *y10; + acc0 += (q31_t) x21 *y11; + acc2 += (q31_t) x10 *y10; + acc2 += (q31_t) x11 *y11; + acc1 += (q31_t) x21 *y10; + acc1 += (q31_t) x10 *y11; + + /* Read next two samples from scratch1 buffer */ + x20 = *(pScr1 + 2); + x21 = *(pScr1 + 3); + + /* multiply and accumlate */ + acc3 += (q31_t) x11 *y10; + acc3 += (q31_t) x20 *y11; + + /* update scratch pointers */ + pIn2 += 4U; + pScr1 += 4U; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr1 -= 4U; + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2); + acc1 += (*pScr1++ * *pIn2); + acc2 += (*pScr1++ * *pIn2); + acc3 += (*pScr1++ * *pIn2++); + + pScr1 -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + + /* Store the results in the accumulators in the destination buffer. */ + *pOut++ = __SSAT((acc0 >> 15), 16); + *pOut++ = __SSAT((acc1 >> 15), 16); + *pOut++ = __SSAT((acc2 >> 15), 16); + *pOut++ = __SSAT((acc3 >> 15), 16); + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 4U; + + } + + + blkCnt = numPoints & 0x3; + + /* Calculate convolution for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + + /* Read next two samples from scratch1 buffer */ + x10 = *pScr1++; + x11 = *pScr1++; + + /* Read two samples from smaller buffer */ + y10 = *pIn2++; + y11 = *pIn2++; + + /* multiply and accumlate */ + acc0 += (q31_t) x10 *y10; + acc0 += (q31_t) x11 *y11; + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 1U; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + + } + + /* Return to application */ + return (status); +} + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + +/** + * @} end of PartialConv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c new file mode 100644 index 0000000..0d4486a --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q15.c @@ -0,0 +1,1494 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_partial_fast_q15.c + * Description: Fast Q15 Partial convolution + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * See arm_conv_partial_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion. + */ + + +arm_status arm_conv_partial_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ +#ifndef UNALIGNED_SUPPORT_DISABLE + + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >=srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; + blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; + blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1U + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations less than 4 */ + /* Second part of this stage computes the MAC operations greater than or equal to 4 */ + + /* The first part of the stage starts here */ + while ((count < 4U) && (blockSize1 > 0)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over number of MAC operations between + * inputA samples and inputB samples */ + k = count; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* The second part of the stage starts here */ + /* The internal loop, over count, is unrolled by 4 */ + /* To, read the last two inputB samples using SIMD: + * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ + py = py - 1; + + while (blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1U; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2 - 1U; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1; + } + else + { + px = pIn1; + } + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is the index by which the pointer pIn1 to be incremented */ + count = 0U; + + + /* -------------------- + * Stage2 process + * -------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = ((uint32_t) blockSize2 >> 2U); + + while (blkCnt > 0U) + { + py = py - 1U; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + + /* read x[0], x[1] samples */ + x0 = *__SIMD32(px); + /* read x[1], x[2] samples */ + x1 = _SIMD32_OFFSET(px+1); + px+= 2U; + + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the last two inputB samples using SIMD: + * y[srcBLen - 1] and y[srcBLen - 2] */ + c0 = *__SIMD32(py)--; + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLADX(x0, c0, acc0); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLADX(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *__SIMD32(px); + + /* Read x[3], x[4] */ + x3 = _SIMD32_OFFSET(px+1); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLADX(x2, c0, acc2); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLADX(x3, c0, acc3); + + /* Read y[srcBLen - 3] and y[srcBLen - 4] */ + c0 = *__SIMD32(py)--; + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLADX(x2, c0, acc0); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLADX(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = _SIMD32_OFFSET(px+2); + + /* Read x[5], x[6] */ + x1 = _SIMD32_OFFSET(px+3); + px += 4U; + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLADX(x0, c0, acc2); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLADX(x1, c0, acc3); + + } while (--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + if (k == 1U) + { + /* Read y[srcBLen - 5] */ + c0 = *(py+1); +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + x3 = *__SIMD32(px); + px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLADX(x1, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + if (k == 2U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = _SIMD32_OFFSET(py); + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px+1); + px += 2U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + } + + if (k == 3U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = _SIMD32_OFFSET(py); + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px+1); + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + + c0 = *(py-1); +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; +#else + + c0 = c0 & 0x0000FFFF; +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + x3 = _SIMD32_OFFSET(px+2); + px += 3U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x1, c0, acc0); + acc1 = __SMLAD(x2, c0, acc1); + acc2 = __SMLADX(x2, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + /* Store the results in the accumulators in the destination buffer. */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = __PKHBT(acc0 >> 15, acc1 >> 15, 16); + *__SIMD32(pOut)++ = __PKHBT(acc2 >> 15, acc3 >> 15, 16); + +#else + + *__SIMD32(pOut)++ = __PKHBT(acc1 >> 15, acc0 >> 15, 16); + *__SIMD32(pOut)++ = __PKHBT(acc3 >> 15, acc2 >> 15, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + pIn2 = pSrc2 - 1U; + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations greater than 4 */ + /* Second part of this stage computes the MAC operations less than or equal to 4 */ + + /* The first part of the stage starts here */ + j = count >> 2U; + + while ((j > 0U) && (blockSize3 > 0)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied + * with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied + * with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLADX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1U; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + j--; + } + + /* The second part of the stage starts here */ + /* SIMD is not used for the next MAC operations, + * so pointer py is updated to read only one sample at a time */ + py = py + 1U; + + while (blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum = __SMLAD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +#else + + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ + arm_status status; /* status of Partial convolution */ + q15_t a, b; + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >=srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; + blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; + blockSize1 = ((int32_t) srcBLen - 1) - (int32_t) firstIndex; + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = ((int32_t) check - blockSize3) - + (blockSize1 + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1U + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations less than 4 */ + /* Second part of this stage computes the MAC operations greater than or equal to 4 */ + + /* The first part of the stage starts here */ + while ((count < 4U) && (blockSize1 > 0)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over number of MAC operations between + * inputA samples and inputB samples */ + k = count; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* The second part of the stage starts here */ + /* The internal loop, over count, is unrolled by 4 */ + /* To, read the last two inputB samples using SIMD: + * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ + py = py - 1; + + while (blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + py++; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2 - 1U; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1; + } + else + { + px = pIn1; + } + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is the index by which the pointer pIn1 to be incremented */ + count = 0U; + + + /* -------------------- + * Stage2 process + * -------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = ((uint32_t) blockSize2 >> 2U); + + while (blkCnt > 0U) + { + py = py - 1U; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1] samples */ + a = *px++; + b = *px++; + +#ifndef ARM_MATH_BIG_ENDIAN + + x0 = __PKHBT(a, b, 16); + a = *px; + x1 = __PKHBT(b, a, 16); + +#else + + x0 = __PKHBT(b, a, 16); + a = *px; + x1 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the last two inputB samples using SIMD: + * y[srcBLen - 1] and y[srcBLen - 2] */ + a = *py; + b = *(py+1); + py -= 2; + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLADX(x0, c0, acc0); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLADX(x1, c0, acc1); + + a = *px; + b = *(px + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + x2 = __PKHBT(a, b, 16); + a = *(px + 2); + x3 = __PKHBT(b, a, 16); + +#else + + x2 = __PKHBT(b, a, 16); + a = *(px + 2); + x3 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLADX(x2, c0, acc2); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLADX(x3, c0, acc3); + + /* Read y[srcBLen - 3] and y[srcBLen - 4] */ + a = *py; + b = *(py+1); + py -= 2; + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLADX(x2, c0, acc0); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLADX(x3, c0, acc1); + + /* Read x[4], x[5], x[6] */ + a = *(px + 2); + b = *(px + 3); + +#ifndef ARM_MATH_BIG_ENDIAN + + x0 = __PKHBT(a, b, 16); + a = *(px + 4); + x1 = __PKHBT(b, a, 16); + +#else + + x0 = __PKHBT(b, a, 16); + a = *(px + 4); + x1 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + px += 4U; + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLADX(x0, c0, acc2); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLADX(x1, c0, acc3); + + } while (--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + if (k == 1U) + { + /* Read y[srcBLen - 5] */ + c0 = *(py+1); + +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + a = *px; + b = *(px+1); + px++; + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + +#else + + x3 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLADX(x1, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + if (k == 2U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + a = *py; + b = *(py+1); + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7], x[8], x[9] */ + a = *px; + b = *(px + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + a = *(px + 2); + x2 = __PKHBT(b, a, 16); + +#else + + x3 = __PKHBT(b, a, 16); + a = *(px + 2); + x2 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + px += 2U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + } + + if (k == 3U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + a = *py; + b = *(py+1); + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7], x[8], x[9] */ + a = *px; + b = *(px + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + a = *(px + 2); + x2 = __PKHBT(b, a, 16); + +#else + + x3 = __PKHBT(b, a, 16); + a = *(px + 2); + x2 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x0, c0, acc0); + acc1 = __SMLADX(x1, c0, acc1); + acc2 = __SMLADX(x3, c0, acc2); + acc3 = __SMLADX(x2, c0, acc3); + + /* Read y[srcBLen - 7] */ + c0 = *(py-1); +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; +#else + + c0 = c0 & 0x0000FFFF; +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + a = *(px+2); + b = *(px+3); + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + +#else + + x3 = __PKHBT(b, a, 16);; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + px += 3U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x1, c0, acc0); + acc1 = __SMLAD(x2, c0, acc1); + acc2 = __SMLADX(x2, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + /* Store the results in the accumulators in the destination buffer. */ + *pOut++ = (q15_t)(acc0 >> 15); + *pOut++ = (q15_t)(acc1 >> 15); + *pOut++ = (q15_t)(acc2 >> 15); + *pOut++ = (q15_t)(acc3 >> 15); + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + pIn2 = pSrc2 - 1U; + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations greater than 4 */ + /* Second part of this stage computes the MAC operations less than or equal to 4 */ + + /* The first part of the stage starts here */ + j = count >> 2U; + + while ((j > 0U) && (blockSize3 > 0)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + py++; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + sum += ((q31_t) * px++ * *py--); + /* Decrement the loop counter */ + k--; + } + + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + j--; + } + + /* The second part of the stage starts here */ + /* SIMD is not used for the next MAC operations, + * so pointer py is updated to read only one sample at a time */ + py = py + 1U; + + while (blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (sum >> 15); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ +} + +/** + * @} end of PartialConv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c new file mode 100644 index 0000000..e845947 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_fast_q31.c @@ -0,0 +1,620 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_partial_fast_q31.c + * Description: Fast Q31 Partial convolution + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * \par + * See arm_conv_partial_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. + */ + +arm_status arm_conv_partial_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q31_t x0, x1, x2, x3, c0; + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; + blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; + blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1U + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first loop starts here */ + while (blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[1] * y[srcBLen - 2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[2] * y[srcBLen - 3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* x[3] * y[srcBLen - 4] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1; + } + else + { + px = pIn1; + } + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2 */ + blkCnt = ((uint32_t) blockSize2 >> 2U); + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + + /* acc3 += x[3] * y[srcBLen - 1] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Read y[srcBLen - 2] sample */ + c0 = *(py--); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc3 += x[4] * y[srcBLen - 2] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc3 += x[5] * y[srcBLen - 2] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* Read y[srcBLen - 4] sample */ + c0 = *(py--); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[srcBLen - 4] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc1 += x[4] * y[srcBLen - 4] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc2 += x[5] * y[srcBLen - 4] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc3 += x[6] * y[srcBLen - 4] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32); + + + } while (--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (acc0 << 1); + *pOut++ = (q31_t) (acc1 << 1); + *pOut++ = (q31_t) (acc2 << 1); + *pOut++ = (q31_t) (acc3 << 1); + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py--))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = sum << 1; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +} + +/** + * @} end of PartialConv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c new file mode 100644 index 0000000..78dd548 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q15.c @@ -0,0 +1,753 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_partial_opt_q15.c + * Description: Partial convolution of Q15 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] *pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] *pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, state buffers should be aligned by 32-bit + * + * Refer to arm_conv_partial_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + * + * + */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + +arm_status arm_conv_partial_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2) +{ + + q15_t *pOut = pDst; /* output pointer */ + q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ + q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ + q63_t acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t x1, x2, x3; /* Temporary variables to hold state and coefficient values */ + q31_t y1, y2; /* State variables */ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + uint32_t j, k, blkCnt; /* loop counter */ + arm_status status; /* Status variable */ + uint32_t tapCnt; /* loop count */ + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Temporary pointer for scratch2 */ + py = pScratch2; + + /* pointer to take end of scratch2 buffer */ + pScr2 = pScratch2 + srcBLen - 1; + + /* points to smaller length sequence */ + px = pIn2; + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* Initialze temporary scratch pointer */ + pScr1 = pScratch1; + + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr1 += (srcBLen - 1U); + + /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ + + /* Copy (srcALen) samples in scratch buffer */ + arm_copy_q15(pIn1, pScr1, srcALen); + + /* Update pointers */ + pScr1 += srcALen; + + /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update pointer */ + pScr1 += (srcBLen - 1U); + + /* Initialization of pIn2 pointer */ + pIn2 = py; + + pScratch1 += firstIndex; + + pOut = pDst + firstIndex; + + /* Actual convolution process starts here */ + blkCnt = (numPoints) >> 2; + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* Read next two samples from scratch1 buffer */ + x2 = *__SIMD32(pScr1)++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pIn2); + y2 = _SIMD32_OFFSET(pIn2 + 2U); + + /* multiply and accumlate */ + acc0 = __SMLALD(x1, y1, acc0); + acc2 = __SMLALD(x2, y1, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + /* multiply and accumlate */ + acc1 = __SMLALDX(x3, y1, acc1); + + /* Read next two samples from scratch1 buffer */ + x1 = _SIMD32_OFFSET(pScr1); + + /* multiply and accumlate */ + acc0 = __SMLALD(x2, y2, acc0); + acc2 = __SMLALD(x1, y2, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLALDX(x3, y1, acc3); + acc1 = __SMLALDX(x3, y2, acc1); + + x2 = _SIMD32_OFFSET(pScr1 + 2U); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLALDX(x3, y2, acc3); + + /* update scratch pointers */ + pIn2 += 4U; + pScr1 += 4U; + + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr1 -= 4U; + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2); + acc1 += (*pScr1++ * *pIn2); + acc2 += (*pScr1++ * *pIn2); + acc3 += (*pScr1++ * *pIn2++); + + pScr1 -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + + /* Store the results in the accumulators in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 4U; + + } + + + blkCnt = numPoints & 0x3; + + /* Calculate convolution for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + + /* Read next two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* Read two samples from smaller buffer */ + y1 = *__SIMD32(pIn2)++; + + acc0 = __SMLALD(x1, y1, acc0); + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 1U; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + + } + + /* Return to application */ + return (status); +} + +#else + +arm_status arm_conv_partial_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2) +{ + + q15_t *pOut = pDst; /* output pointer */ + q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch1 */ + q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch1 */ + q63_t acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + uint32_t j, k, blkCnt; /* loop counter */ + arm_status status; /* Status variable */ + uint32_t tapCnt; /* loop count */ + q15_t x10, x11, x20, x21; /* Temporary variables to hold srcA buffer */ + q15_t y10, y11; /* Temporary variables to hold srcB buffer */ + + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Temporary pointer for scratch2 */ + py = pScratch2; + + /* pointer to take end of scratch2 buffer */ + pScr2 = pScratch2 + srcBLen - 1; + + /* points to smaller length sequence */ + px = pIn2; + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr2-- = *px++; + + /* Decrement the loop counter */ + k--; + } + + /* Initialze temporary scratch pointer */ + pScr1 = pScratch1; + + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr1 += (srcBLen - 1U); + + /* Copy bigger length sequence(srcALen) samples in scratch1 buffer */ + + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcALen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + *pScr1++ = *pIn1++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcALen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = *pIn1++; + + /* Decrement the loop counter */ + k--; + } + + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = (srcBLen - 1U) >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = (srcBLen - 1U) % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + + + /* Initialization of pIn2 pointer */ + pIn2 = py; + + pScratch1 += firstIndex; + + pOut = pDst + firstIndex; + + /* Actual convolution process starts here */ + blkCnt = (numPoints) >> 2; + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read two samples from scratch1 buffer */ + x10 = *pScr1++; + x11 = *pScr1++; + + /* Read next two samples from scratch1 buffer */ + x20 = *pScr1++; + x21 = *pScr1++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + + /* Read two samples from smaller buffer */ + y10 = *pIn2; + y11 = *(pIn2 + 1U); + + /* multiply and accumlate */ + acc0 += (q63_t) x10 *y10; + acc0 += (q63_t) x11 *y11; + acc2 += (q63_t) x20 *y10; + acc2 += (q63_t) x21 *y11; + + /* multiply and accumlate */ + acc1 += (q63_t) x11 *y10; + acc1 += (q63_t) x20 *y11; + + /* Read next two samples from scratch1 buffer */ + x10 = *pScr1; + x11 = *(pScr1 + 1U); + + /* multiply and accumlate */ + acc3 += (q63_t) x21 *y10; + acc3 += (q63_t) x10 *y11; + + /* Read next two samples from scratch2 buffer */ + y10 = *(pIn2 + 2U); + y11 = *(pIn2 + 3U); + + /* multiply and accumlate */ + acc0 += (q63_t) x20 *y10; + acc0 += (q63_t) x21 *y11; + acc2 += (q63_t) x10 *y10; + acc2 += (q63_t) x11 *y11; + acc1 += (q63_t) x21 *y10; + acc1 += (q63_t) x10 *y11; + + /* Read next two samples from scratch1 buffer */ + x20 = *(pScr1 + 2); + x21 = *(pScr1 + 3); + + /* multiply and accumlate */ + acc3 += (q63_t) x11 *y10; + acc3 += (q63_t) x20 *y11; + + /* update scratch pointers */ + pIn2 += 4U; + pScr1 += 4U; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr1 -= 4U; + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2); + acc1 += (*pScr1++ * *pIn2); + acc2 += (*pScr1++ * *pIn2); + acc3 += (*pScr1++ * *pIn2++); + + pScr1 -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + + /* Store the results in the accumulators in the destination buffer. */ + *pOut++ = __SSAT((acc0 >> 15), 16); + *pOut++ = __SSAT((acc1 >> 15), 16); + *pOut++ = __SSAT((acc2 >> 15), 16); + *pOut++ = __SSAT((acc3 >> 15), 16); + + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 4U; + + } + + + blkCnt = numPoints & 0x3; + + /* Calculate convolution for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + + /* Read next two samples from scratch1 buffer */ + x10 = *pScr1++; + x11 = *pScr1++; + + /* Read two samples from smaller buffer */ + y10 = *pIn2++; + y11 = *pIn2++; + + /* multiply and accumlate */ + acc0 += (q63_t) x10 *y10; + acc0 += (q63_t) x11 *y11; + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch1 += 1U; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + + } + + /* Return to application */ + return (status); +} + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + +/** + * @} end of PartialConv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c new file mode 100644 index 0000000..351c290 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_opt_q7.c @@ -0,0 +1,791 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_partial_opt_q7.c + * Description: Partial convolution of Q7 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit + * + * + * + */ + + +#ifndef UNALIGNED_SUPPORT_DISABLE + +arm_status arm_conv_partial_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2) +{ + + q15_t *pScr2, *pScr1; /* Intermediate pointers for scratch pointers */ + q15_t x4; /* Temporary input variable */ + q7_t *pIn1, *pIn2; /* inputA and inputB pointer */ + uint32_t j, k, blkCnt, tapCnt; /* loop counter */ + q7_t *px; /* Temporary input1 pointer */ + q15_t *py; /* Temporary input2 pointer */ + q31_t acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t x1, x2, x3, y1; /* Temporary input variables */ + arm_status status; + q7_t *pOut = pDst; /* output pointer */ + q7_t out0, out1, out2, out3; /* temporary variables */ + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* pointer to take end of scratch2 buffer */ + pScr2 = pScratch2; + + /* points to smaller length sequence */ + px = pIn2 + srcBLen - 1; + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + x4 = (q15_t) * px--; + *pScr2++ = x4; + x4 = (q15_t) * px--; + *pScr2++ = x4; + x4 = (q15_t) * px--; + *pScr2++ = x4; + x4 = (q15_t) * px--; + *pScr2++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + x4 = (q15_t) * px--; + *pScr2++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* Initialze temporary scratch pointer */ + pScr1 = pScratch1; + + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr1 += (srcBLen - 1U); + + /* Copy (srcALen) samples in scratch buffer */ + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcALen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcALen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update pointer */ + pScr1 += (srcBLen - 1U); + + + /* Temporary pointer for scratch2 */ + py = pScratch2; + + /* Initialization of pIn2 pointer */ + pIn2 = (q7_t *) py; + + pScr2 = py; + + pOut = pDst + firstIndex; + + pScratch1 += firstIndex; + + /* Actual convolution process starts here */ + blkCnt = (numPoints) >> 2; + + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* Read next two samples from scratch1 buffer */ + x2 = *__SIMD32(pScr1)++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pScr2); + + /* multiply and accumlate */ + acc0 = __SMLAD(x1, y1, acc0); + acc2 = __SMLAD(x2, y1, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + /* multiply and accumlate */ + acc1 = __SMLADX(x3, y1, acc1); + + /* Read next two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pScr2 + 2U); + + acc0 = __SMLAD(x2, y1, acc0); + + acc2 = __SMLAD(x1, y1, acc2); + + acc1 = __SMLADX(x3, y1, acc1); + + x2 = *__SIMD32(pScr1)++; + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + + pScr2 += 4U; + + + /* Decrement the loop counter */ + tapCnt--; + } + + + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr1 -= 4U; + + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pScr2); + acc1 += (*pScr1++ * *pScr2); + acc2 += (*pScr1++ * *pScr2); + acc3 += (*pScr1++ * *pScr2++); + + pScr1 -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + out0 = (q7_t) (__SSAT(acc0 >> 7U, 8)); + out1 = (q7_t) (__SSAT(acc1 >> 7U, 8)); + out2 = (q7_t) (__SSAT(acc2 >> 7U, 8)); + out3 = (q7_t) (__SSAT(acc3 >> 7U, 8)); + + *__SIMD32(pOut)++ = __PACKq7(out0, out1, out2, out3); + + /* Initialization of inputB pointer */ + pScr2 = py; + + pScratch1 += 4U; + + } + + blkCnt = (numPoints) & 0x3; + + /* Calculate convolution for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + + /* Read next two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* Read two samples from smaller buffer */ + y1 = *__SIMD32(pScr2)++; + + acc0 = __SMLAD(x1, y1, acc0); + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pScr2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8)); + + /* Initialization of inputB pointer */ + pScr2 = py; + + pScratch1 += 1U; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + + + } + + return (status); + +} + +#else + +arm_status arm_conv_partial_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2) +{ + + q15_t *pScr2, *pScr1; /* Intermediate pointers for scratch pointers */ + q15_t x4; /* Temporary input variable */ + q7_t *pIn1, *pIn2; /* inputA and inputB pointer */ + uint32_t j, k, blkCnt, tapCnt; /* loop counter */ + q7_t *px; /* Temporary input1 pointer */ + q15_t *py; /* Temporary input2 pointer */ + q31_t acc0, acc1, acc2, acc3; /* Accumulator */ + arm_status status; + q7_t *pOut = pDst; /* output pointer */ + q15_t x10, x11, x20, x21; /* Temporary input variables */ + q15_t y10, y11; /* Temporary input variables */ + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* pointer to take end of scratch2 buffer */ + pScr2 = pScratch2; + + /* points to smaller length sequence */ + px = pIn2 + srcBLen - 1; + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + x4 = (q15_t) * px--; + *pScr2++ = x4; + x4 = (q15_t) * px--; + *pScr2++ = x4; + x4 = (q15_t) * px--; + *pScr2++ = x4; + x4 = (q15_t) * px--; + *pScr2++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + x4 = (q15_t) * px--; + *pScr2++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* Initialze temporary scratch pointer */ + pScr1 = pScratch1; + + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr1 += (srcBLen - 1U); + + /* Copy (srcALen) samples in scratch buffer */ + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = srcALen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcALen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + k = (srcBLen - 1U) >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = (srcBLen - 1U) % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + + + /* Temporary pointer for scratch2 */ + py = pScratch2; + + /* Initialization of pIn2 pointer */ + pIn2 = (q7_t *) py; + + pScr2 = py; + + pOut = pDst + firstIndex; + + pScratch1 += firstIndex; + + /* Actual convolution process starts here */ + blkCnt = (numPoints) >> 2; + + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read two samples from scratch1 buffer */ + x10 = *pScr1++; + x11 = *pScr1++; + + /* Read next two samples from scratch1 buffer */ + x20 = *pScr1++; + x21 = *pScr1++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + + /* Read four samples from smaller buffer */ + y10 = *pScr2; + y11 = *(pScr2 + 1U); + + /* multiply and accumlate */ + acc0 += (q31_t) x10 *y10; + acc0 += (q31_t) x11 *y11; + acc2 += (q31_t) x20 *y10; + acc2 += (q31_t) x21 *y11; + + + acc1 += (q31_t) x11 *y10; + acc1 += (q31_t) x20 *y11; + + /* Read next two samples from scratch1 buffer */ + x10 = *pScr1; + x11 = *(pScr1 + 1U); + + /* multiply and accumlate */ + acc3 += (q31_t) x21 *y10; + acc3 += (q31_t) x10 *y11; + + /* Read next two samples from scratch2 buffer */ + y10 = *(pScr2 + 2U); + y11 = *(pScr2 + 3U); + + /* multiply and accumlate */ + acc0 += (q31_t) x20 *y10; + acc0 += (q31_t) x21 *y11; + acc2 += (q31_t) x10 *y10; + acc2 += (q31_t) x11 *y11; + acc1 += (q31_t) x21 *y10; + acc1 += (q31_t) x10 *y11; + + /* Read next two samples from scratch1 buffer */ + x20 = *(pScr1 + 2); + x21 = *(pScr1 + 3); + + /* multiply and accumlate */ + acc3 += (q31_t) x11 *y10; + acc3 += (q31_t) x20 *y11; + + /* update scratch pointers */ + + pScr1 += 4U; + pScr2 += 4U; + + /* Decrement the loop counter */ + tapCnt--; + } + + + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr1 -= 4U; + + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pScr2); + acc1 += (*pScr1++ * *pScr2); + acc2 += (*pScr1++ * *pScr2); + acc3 += (*pScr1++ * *pScr2++); + + pScr1 -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8)); + *pOut++ = (q7_t) (__SSAT(acc1 >> 7U, 8)); + *pOut++ = (q7_t) (__SSAT(acc2 >> 7U, 8)); + *pOut++ = (q7_t) (__SSAT(acc3 >> 7U, 8)); + + /* Initialization of inputB pointer */ + pScr2 = py; + + pScratch1 += 4U; + + } + + blkCnt = (numPoints) & 0x3; + + /* Calculate convolution for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + + /* Read next two samples from scratch1 buffer */ + x10 = *pScr1++; + x11 = *pScr1++; + + /* Read two samples from smaller buffer */ + y10 = *pScr2++; + y11 = *pScr2++; + + /* multiply and accumlate */ + acc0 += (q31_t) x10 *y10; + acc0 += (q31_t) x11 *y11; + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pScr2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8)); + + /* Initialization of inputB pointer */ + pScr2 = py; + + pScratch1 += 1U; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + + } + + return (status); + +} + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + + +/** + * @} end of PartialConv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c new file mode 100644 index 0000000..43d2b35 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q15.c @@ -0,0 +1,795 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_partial_q15.c + * Description: Partial convolution of Q15 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * Refer to arm_conv_partial_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + * + * \par + * Refer the function arm_conv_partial_opt_q15() for a faster implementation of this function using scratch buffers. + * + */ + +arm_status arm_conv_partial_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + + +#if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q63_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* Temporary input variables */ + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counter */ + arm_status status; /* status of Partial convolution */ + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; + blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; + blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1U + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations less than 4 */ + /* Second part of this stage computes the MAC operations greater than or equal to 4 */ + + /* The first part of the stage starts here */ + while ((count < 4U) && (blockSize1 > 0)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over number of MAC operations between + * inputA samples and inputB samples */ + k = count; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* The second part of the stage starts here */ + /* The internal loop, over count, is unrolled by 4 */ + /* To, read the last two inputB samples using SIMD: + * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ + py = py - 1; + + while (blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1U; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2 - 1U; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1; + } + else + { + px = pIn1; + } + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is the index by which the pointer pIn1 to be incremented */ + count = 0U; + + + /* -------------------- + * Stage2 process + * -------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + py = py - 1U; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + + /* read x[0], x[1] samples */ + x0 = *__SIMD32(px); + /* read x[1], x[2] samples */ + x1 = _SIMD32_OFFSET(px+1); + px+= 2U; + + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the last two inputB samples using SIMD: + * y[srcBLen - 1] and y[srcBLen - 2] */ + c0 = *__SIMD32(py)--; + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLALDX(x0, c0, acc0); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLALDX(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *__SIMD32(px); + + /* Read x[3], x[4] */ + x3 = _SIMD32_OFFSET(px+1); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLALDX(x2, c0, acc2); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLALDX(x3, c0, acc3); + + /* Read y[srcBLen - 3] and y[srcBLen - 4] */ + c0 = *__SIMD32(py)--; + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLALDX(x2, c0, acc0); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLALDX(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = _SIMD32_OFFSET(px+2); + + /* Read x[5], x[6] */ + x1 = _SIMD32_OFFSET(px+3); + px += 4U; + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLALDX(x0, c0, acc2); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLALDX(x1, c0, acc3); + + } while (--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + if (k == 1U) + { + /* Read y[srcBLen - 5] */ + c0 = *(py+1); + +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + x3 = *__SIMD32(px); + px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALDX(x1, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + if (k == 2U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = _SIMD32_OFFSET(py); + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px+1); + px += 2U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x0, c0, acc0); + acc1 = __SMLALDX(x1, c0, acc1); + acc2 = __SMLALDX(x3, c0, acc2); + acc3 = __SMLALDX(x2, c0, acc3); + } + + if (k == 3U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = _SIMD32_OFFSET(py); + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px+1); + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x0, c0, acc0); + acc1 = __SMLALDX(x1, c0, acc1); + acc2 = __SMLALDX(x3, c0, acc2); + acc3 = __SMLALDX(x2, c0, acc3); + + c0 = *(py-1); + +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; +#else + + c0 = c0 & 0x0000FFFF; +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + x3 = _SIMD32_OFFSET(px+2); + px += 3U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x1, c0, acc0); + acc1 = __SMLALD(x2, c0, acc1); + acc2 = __SMLALDX(x2, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + + /* Store the results in the accumulators in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + pIn2 = pSrc2 - 1U; + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations greater than 4 */ + /* Second part of this stage computes the MAC operations less than or equal to 4 */ + + /* The first part of the stage starts here */ + j = count >> 2U; + + while ((j > 0U) && (blockSize3 > 0)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied + * with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied + * with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1U; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + j--; + } + + /* The second part of the stage starts here */ + /* SIMD is not used for the next MAC operations, + * so pointer py is updated to read only one sample at a time */ + py = py + 1U; + + while (blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t *pIn1 = pSrcA; /* inputA pointer */ + q15_t *pIn2 = pSrcB; /* inputB pointer */ + q63_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + /* Loop to calculate convolution for output length number of values */ + for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if (((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q31_t) pIn1[j] * (pIn2[i - j])); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q15_t) __SSAT((sum >> 15U), 16U); + } + /* set status as ARM_SUCCESS as there are no argument errors */ + status = ARM_MATH_SUCCESS; + } + return (status); + +#endif /* #if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) */ + +} + +/** + * @} end of PartialConv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c new file mode 100644 index 0000000..3a108e0 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q31.c @@ -0,0 +1,616 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_partial_q31.c + * Description: Partial convolution of Q31 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q31 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * See arm_conv_partial_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +arm_status arm_conv_partial_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q63_t sum, acc0, acc1, acc2; /* Accumulator */ + q31_t x0, x1, x2, c0; + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counter */ + arm_status status; /* status of Partial convolution */ + + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; + blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; + blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1U + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first loop starts here */ + while (blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 1] */ + sum += (q63_t) * px++ * (*py--); + /* x[1] * y[srcBLen - 2] */ + sum += (q63_t) * px++ * (*py--); + /* x[2] * y[srcBLen - 3] */ + sum += (q63_t) * px++ * (*py--); + /* x[3] * y[srcBLen - 4] */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1; + } + else + { + px = pIn1; + } + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blkCnt */ + + blkCnt = blockSize2 / 3; + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + + /* read x[0], x[1] samples */ + x0 = *(px++); + x1 = *(px++); + + /* Apply loop unrolling and compute 3 MACs simultaneously. */ + k = srcBLen / 3; + + /* First part of the processing with loop unrolling. Compute 3 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 2 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py); + + /* Read x[2] sample */ + x2 = *(px); + + /* Perform the multiply-accumulates */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 += (q63_t) x0 *c0; + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 += (q63_t) x1 *c0; + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 += (q63_t) x2 *c0; + + /* Read y[srcBLen - 2] sample */ + c0 = *(py - 1U); + + /* Read x[3] sample */ + x0 = *(px + 1U); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 += (q63_t) x1 *c0; + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 += (q63_t) x2 *c0; + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 += (q63_t) x0 *c0; + + /* Read y[srcBLen - 3] sample */ + c0 = *(py - 2U); + + /* Read x[4] sample */ + x1 = *(px + 2U); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 += (q63_t) x2 *c0; + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 += (q63_t) x0 *c0; + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 += (q63_t) x1 *c0; + + + px += 3U; + + py -= 3U; + + } while (--k); + + /* If the srcBLen is not a multiple of 3, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen - (3 * (srcBLen / 3)); + + while (k > 0U) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += (q63_t) x0 *c0; + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += (q63_t) x1 *c0; + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += (q63_t) x2 *c0; + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (acc0 >> 31); + *pOut++ = (q31_t) (acc1 >> 31); + *pOut++ = (q31_t) (acc2 >> 31); + + /* Increment the pointer pIn1 index, count by 3 */ + count += 3U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 3, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 - 3 * (blockSize2 / 3); + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t *pIn1 = pSrcA; /* inputA pointer */ + q31_t *pIn2 = pSrcB; /* inputB pointer */ + q63_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + /* Loop to calculate convolution for output length number of values */ + for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if (((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q63_t) pIn1[j] * (pIn2[i - j])); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q31_t) (sum >> 31U); + } + /* set status as ARM_SUCCESS as there are no argument errors */ + status = ARM_MATH_SUCCESS; + } + return (status); + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of PartialConv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c new file mode 100644 index 0000000..cb4c562 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_partial_q7.c @@ -0,0 +1,750 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_partial_q7.c + * Description: Partial convolution of Q7 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup PartialConv + * @{ + */ + +/** + * @brief Partial convolution of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + * + * \par + * Refer the function arm_conv_partial_opt_q7() for a faster implementation of this function. + * + */ + +arm_status arm_conv_partial_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints) +{ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t *pIn1; /* inputA pointer */ + q7_t *pIn2; /* inputB pointer */ + q7_t *pOut = pDst; /* output pointer */ + q7_t *px; /* Intermediate inputA pointer */ + q7_t *py; /* Intermediate inputB pointer */ + q7_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t input1, input2; + q15_t in1, in2; + q7_t x0, x1, x2, x3, c0, c1; + uint32_t j, k, count, check, blkCnt; + int32_t blockSize1, blockSize2, blockSize3; /* loop counter */ + arm_status status; + + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_MATH_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* Conditions to check which loopCounter holds + * the first and last indices of the output samples to be calculated. */ + check = firstIndex + numPoints; + blockSize3 = ((int32_t)check > (int32_t)srcALen) ? (int32_t)check - (int32_t)srcALen : 0; + blockSize3 = ((int32_t)firstIndex > (int32_t)srcALen - 1) ? blockSize3 - (int32_t)firstIndex + (int32_t)srcALen : blockSize3; + blockSize1 = (((int32_t) srcBLen - 1) - (int32_t) firstIndex); + blockSize1 = (blockSize1 > 0) ? ((check > (srcBLen - 1U)) ? blockSize1 : + (int32_t) numPoints) : 0; + blockSize2 = (int32_t) check - ((blockSize3 + blockSize1) + + (int32_t) firstIndex); + blockSize2 = (blockSize2 > 0) ? blockSize2 : 0; + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* Set the output pointer to point to the firstIndex + * of the output sample to be calculated. */ + pOut = pDst + firstIndex; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed. + Since the partial convolution starts from from firstIndex + Number of Macs to be performed is firstIndex + 1 */ + count = 1U + firstIndex; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + firstIndex; + py = pSrc2; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while (blockSize1 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] , x[1] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 1] , y[srcBLen - 2] */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* x[0] * y[srcBLen - 1] */ + /* x[1] * y[srcBLen - 2] */ + sum = __SMLAD(input1, input2, sum); + + /* x[2] , x[3] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 3] , y[srcBLen - 4] */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* x[2] * y[srcBLen - 3] */ + /* x[3] * y[srcBLen - 4] */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = ++pSrc2; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1; + } + else + { + px = pIn1; + } + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = ((uint32_t) blockSize2 >> 2U); + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + /* Read y[srcBLen - 2] sample */ + c1 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* x[0] and x[1] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 1] and y[srcBLen - 2] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[1] and x[2] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[4] sample */ + x0 = *(px++); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLAD(input1, input2, acc3); + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + /* Read y[srcBLen - 4] sample */ + c1 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 3] and y[srcBLen - 4] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[4] and x[5] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[6] sample */ + x2 = *(px++); + + /* x[5] and x[6] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLAD(input1, input2, acc3); + + } while (--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += ((q31_t) x0 * c0); + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += ((q31_t) x1 * c0); + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += ((q31_t) x2 * c0); + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 += ((q31_t) x3 * c0); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(acc0 >> 7, 8)); + *pOut++ = (q7_t) (__SSAT(acc1 >> 7, 8)); + *pOut++ = (q7_t) (__SSAT(acc2 >> 7, 8)); + *pOut++ = (q7_t) (__SSAT(acc3 >> 7, 8)); + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = (uint32_t) blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + if ((int32_t)firstIndex - (int32_t)srcBLen + 1 > 0) + { + px = pIn1 + firstIndex - srcBLen + 1 + count; + } + else + { + px = pIn1 + count; + } + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Reading two inputs, x[srcALen - srcBLen + 1] and x[srcALen - srcBLen + 2] of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs, y[srcBLen - 1] and y[srcBLen - 2] of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs, x[srcALen - srcBLen + 3] and x[srcALen - srcBLen + 4] of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs, y[srcBLen - 3] and y[srcBLen - 4] of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum += ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); + +#else + + /* Run the below code for Cortex-M0 */ + + q7_t *pIn1 = pSrcA; /* inputA pointer */ + q7_t *pIn2 = pSrcB; /* inputB pointer */ + q31_t sum; /* Accumulator */ + uint32_t i, j; /* loop counters */ + arm_status status; /* status of Partial convolution */ + + /* Check for range of output samples to be calculated */ + if ((firstIndex + numPoints) > ((srcALen + (srcBLen - 1U)))) + { + /* Set status as ARM_ARGUMENT_ERROR */ + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + /* Loop to calculate convolution for output length number of values */ + for (i = firstIndex; i <= (firstIndex + numPoints - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if (((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q15_t) pIn1[j] * (pIn2[i - j])); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q7_t) __SSAT((sum >> 7U), 8U); + } + /* set status as ARM_SUCCESS as there are no argument errors */ + status = ARM_MATH_SUCCESS; + } + return (status); + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of PartialConv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c new file mode 100644 index 0000000..c6721e0 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q15.c @@ -0,0 +1,722 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_q15.c + * Description: Convolution of Q15 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both inputs are in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * This approach provides 33 guard bits and there is no risk of overflow. + * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format. + * + * \par + * Refer to arm_conv_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + * + * \par + * Refer the function arm_conv_opt_q15() for a faster implementation of this function using scratch buffers. + * + */ + +void arm_conv_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ + +#if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q63_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t blockSize1, blockSize2, blockSize3, j, k, count, blkCnt; /* loop counter */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations less than 4 */ + /* Second part of this stage computes the MAC operations greater than or equal to 4 */ + + /* The first part of the stage starts here */ + while ((count < 4U) && (blockSize1 > 0U)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over number of MAC operations between + * inputA samples and inputB samples */ + k = count; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* The second part of the stage starts here */ + /* The internal loop, over count, is unrolled by 4 */ + /* To, read the last two inputB samples using SIMD: + * y[srcBLen] and y[srcBLen-1] coefficients, py is decremented by 1 */ + py = py - 1; + + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* x[0], x[1] are multiplied with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[2], x[3] are multiplied with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1U; + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + (count - 1U); + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is the index by which the pointer pIn1 to be incremented */ + count = 0U; + + + /* -------------------- + * Stage2 process + * -------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + py = py - 1U; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + + /* read x[0], x[1] samples */ + x0 = *__SIMD32(px); + /* read x[1], x[2] samples */ + x1 = _SIMD32_OFFSET(px+1); + px+= 2U; + + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the last two inputB samples using SIMD: + * y[srcBLen - 1] and y[srcBLen - 2] */ + c0 = *__SIMD32(py)--; + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLALDX(x0, c0, acc0); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLALDX(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *__SIMD32(px); + + /* Read x[3], x[4] */ + x3 = _SIMD32_OFFSET(px+1); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLALDX(x2, c0, acc2); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLALDX(x3, c0, acc3); + + /* Read y[srcBLen - 3] and y[srcBLen - 4] */ + c0 = *__SIMD32(py)--; + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLALDX(x2, c0, acc0); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLALDX(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = _SIMD32_OFFSET(px+2); + + /* Read x[5], x[6] */ + x1 = _SIMD32_OFFSET(px+3); + px += 4U; + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLALDX(x0, c0, acc2); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLALDX(x1, c0, acc3); + + } while (--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + if (k == 1U) + { + /* Read y[srcBLen - 5] */ + c0 = *(py+1); + +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + /* Read x[7] */ + x3 = *__SIMD32(px); + px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALDX(x1, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + if (k == 2U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = _SIMD32_OFFSET(py); + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px+1); + px += 2U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x0, c0, acc0); + acc1 = __SMLALDX(x1, c0, acc1); + acc2 = __SMLALDX(x3, c0, acc2); + acc3 = __SMLALDX(x2, c0, acc3); + } + + if (k == 3U) + { + /* Read y[srcBLen - 5], y[srcBLen - 6] */ + c0 = _SIMD32_OFFSET(py); + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px+1); + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x0, c0, acc0); + acc1 = __SMLALDX(x1, c0, acc1); + acc2 = __SMLALDX(x3, c0, acc2); + acc3 = __SMLALDX(x2, c0, acc3); + + c0 = *(py-1); + +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; +#else + + c0 = c0 & 0x0000FFFF; +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + /* Read x[10] */ + x3 = _SIMD32_OFFSET(px+2); + px += 3U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x1, c0, acc0); + acc1 = __SMLALD(x2, c0, acc1); + acc2 = __SMLALDX(x2, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + + /* Store the results in the accumulators in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + *__SIMD32(pOut)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) ((q31_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT(sum >> 15, 16)); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + blockSize3 = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + pIn2 = pSrc2 - 1U; + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + /* For loop unrolling by 4, this stage is divided into two. */ + /* First part of this stage computes the MAC operations greater than 4 */ + /* Second part of this stage computes the MAC operations less than or equal to 4 */ + + /* The first part of the stage starts here */ + j = blockSize3 >> 2U; + + while ((j > 0U) && (blockSize3 > 0U)) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[srcALen - srcBLen + 1], x[srcALen - srcBLen + 2] are multiplied + * with y[srcBLen - 1], y[srcBLen - 2] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + /* x[srcALen - srcBLen + 3], x[srcALen - srcBLen + 4] are multiplied + * with y[srcBLen - 3], y[srcBLen - 4] respectively */ + sum = __SMLALDX(*__SIMD32(px)++, *__SIMD32(py)--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* For the next MAC operations, the pointer py is used without SIMD + * So, py is incremented by 1 */ + py = py + 1U; + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4U; + + while (k > 0U) + { + /* sum += x[srcALen - srcBLen + 5] * y[srcBLen - 5] */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the loop counter */ + blockSize3--; + + j--; + } + + /* The second part of the stage starts here */ + /* SIMD is not used for the next MAC operations, + * so pointer py is updated to read only one sample at a time */ + py = py + 1U; + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen-1] * y[srcBLen-1] */ + sum = __SMLALD(*px++, *py--, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + q15_t *pIn1 = pSrcA; /* input pointer */ + q15_t *pIn2 = pSrcB; /* coefficient pointer */ + q63_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < (srcALen + srcBLen - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if (((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += (q31_t) pIn1[j] * (pIn2[i - j]); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q15_t) __SSAT((sum >> 15U), 16U); + } + +#endif /* #if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) */ + +} + +/** + * @} end of Conv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c new file mode 100644 index 0000000..14e5f86 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q31.c @@ -0,0 +1,553 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_q31.c + * Description: Convolution of Q31 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q31 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * There is no saturation on intermediate additions. + * Thus, if the accumulator overflows it wraps around and distorts the result. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down the inputs by log2(min(srcALen, srcBLen)) (log2 is read as log to the base 2) times to avoid overflows, + * as maximum of min(srcALen, srcBLen) number of additions are carried internally. + * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. + * + * \par + * See arm_conv_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +void arm_conv_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q63_t sum; /* Accumulator */ + q63_t acc0, acc1, acc2; /* Accumulator */ + q31_t x0, x1, x2, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counter */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (q31_t *) pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = (q31_t *) pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 1] */ + sum += (q63_t) * px++ * (*py--); + /* x[1] * y[srcBLen - 2] */ + sum += (q63_t) * px++ * (*py--); + /* x[2] * y[srcBLen - 3] */ + sum += (q63_t) * px++ * (*py--); + /* x[3] * y[srcBLen - 4] */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll by 3 */ + blkCnt = blockSize2 / 3; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + + /* Apply loop unrolling and compute 3 MACs simultaneously. */ + k = srcBLen / 3; + + /* First part of the processing with loop unrolling. Compute 3 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 2 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py); + + /* Read x[3] sample */ + x2 = *(px); + + /* Perform the multiply-accumulates */ + /* acc0 += x[0] * y[srcBLen - 1] */ + acc0 += ((q63_t) x0 * c0); + /* acc1 += x[1] * y[srcBLen - 1] */ + acc1 += ((q63_t) x1 * c0); + /* acc2 += x[2] * y[srcBLen - 1] */ + acc2 += ((q63_t) x2 * c0); + + /* Read y[srcBLen - 2] sample */ + c0 = *(py - 1U); + + /* Read x[4] sample */ + x0 = *(px + 1U); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[srcBLen - 2] */ + acc0 += ((q63_t) x1 * c0); + /* acc1 += x[2] * y[srcBLen - 2] */ + acc1 += ((q63_t) x2 * c0); + /* acc2 += x[3] * y[srcBLen - 2] */ + acc2 += ((q63_t) x0 * c0); + + /* Read y[srcBLen - 3] sample */ + c0 = *(py - 2U); + + /* Read x[5] sample */ + x1 = *(px + 2U); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[srcBLen - 3] */ + acc0 += ((q63_t) x2 * c0); + /* acc1 += x[3] * y[srcBLen - 2] */ + acc1 += ((q63_t) x0 * c0); + /* acc2 += x[4] * y[srcBLen - 2] */ + acc2 += ((q63_t) x1 * c0); + + /* update scratch pointers */ + px += 3U; + py -= 3U; + + } while (--k); + + /* If the srcBLen is not a multiple of 3, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen - (3 * (srcBLen / 3)); + + while (k > 0U) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += ((q63_t) x0 * c0); + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += ((q63_t) x1 * c0); + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += ((q63_t) x2 * c0); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + + /* Decrement the loop counter */ + k--; + } + + /* Store the results in the accumulators in the destination buffer. */ + *pOut++ = (q31_t) (acc0 >> 31); + *pOut++ = (q31_t) (acc1 >> 31); + *pOut++ = (q31_t) (acc2 >> 31); + + /* Increment the pointer pIn1 index, count by 3 */ + count += 3U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 3, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 - 3 * (blockSize2 / 3); + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + sum += (q63_t) * px++ * (*py--); + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum += (q63_t) * px++ * (*py--); + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + sum += (q63_t) * px++ * (*py--); + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q31_t) (sum >> 31); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t *pIn1 = pSrcA; /* input pointer */ + q31_t *pIn2 = pSrcB; /* coefficient pointer */ + q63_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < (srcALen + srcBLen - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if (((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q63_t) pIn1[j] * (pIn2[i - j])); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q31_t) (sum >> 31U); + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of Conv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c new file mode 100644 index 0000000..6c4dd3c --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_conv_q7.c @@ -0,0 +1,678 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_conv_q7.c + * Description: Convolution of Q7 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Conv + * @{ + */ + +/** + * @brief Convolution of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 32-bit internal accumulator. + * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. + * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. + * This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. + * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and then saturated to 1.7 format. + * + * \par + * Refer the function arm_conv_opt_q7() for a faster implementation of this function. + * + */ + +void arm_conv_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst) +{ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t *pIn1; /* inputA pointer */ + q7_t *pIn2; /* inputB pointer */ + q7_t *pOut = pDst; /* output pointer */ + q7_t *px; /* Intermediate inputA pointer */ + q7_t *py; /* Intermediate inputB pointer */ + q7_t *pSrc1, *pSrc2; /* Intermediate pointers */ + q7_t x0, x1, x2, x3, c0, c1; /* Temporary variables to hold state and coefficient values */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulator */ + q31_t input1, input2; /* Temporary input variables */ + q15_t in1, in2; /* Temporary input variables */ + uint32_t j, k, count, blkCnt, blockSize1, blockSize2, blockSize3; /* loop counter */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + } + + /* conv(x,y) at n = x[n] * y[0] + x[n-1] * y[1] + x[n-2] * y[2] + ...+ x[n-N+1] * y[N -1] */ + /* The function is internally + * divided into three stages according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first stage of the + * algorithm, the multiplications increase by one for every iteration. + * In the second stage of the algorithm, srcBLen number of multiplications are done. + * In the third stage of the algorithm, the multiplications decrease by one + * for every iteration. */ + + /* The algorithm is implemented in three stages. + The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = (srcALen - srcBLen) + 1U; + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[0] + * sum = x[0] * y[1] + x[1] * y[0] + * .... + * sum = x[0] * y[srcBlen - 1] + x[1] * y[srcBlen - 2] +...+ x[srcBLen - 1] * y[0] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] , x[1] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* y[srcBLen - 1] , y[srcBLen - 2] */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* x[0] * y[srcBLen - 1] */ + /* x[1] * y[srcBLen - 2] */ + sum = __SMLAD(input1, input2, sum); + + /* x[2] , x[3] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* y[srcBLen - 3] , y[srcBLen - 4] */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* x[2] * y[srcBLen - 3] */ + /* x[3] * y[srcBLen - 4] */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q15_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pIn2 + count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[srcBLen-1] + x[1] * y[srcBLen-2] +...+ x[srcBLen-1] * y[0] + * sum = x[1] * y[srcBLen-1] + x[2] * y[srcBLen-2] +...+ x[srcBLen] * y[0] + * .... + * sum = x[srcALen-srcBLen-2] * y[srcBLen-1] + x[srcALen] * y[srcBLen-2] +...+ x[srcALen-1] * y[0] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[srcBLen - 1] sample */ + c0 = *(py--); + /* Read y[srcBLen - 2] sample */ + c1 = *(py--); + + /* Read x[3] sample */ + x3 = *(px++); + + /* x[0] and x[1] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* y[srcBLen - 1] and y[srcBLen - 2] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* acc0 += x[0] * y[srcBLen - 1] + x[1] * y[srcBLen - 2] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[1] and x[2] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* acc1 += x[1] * y[srcBLen - 1] + x[2] * y[srcBLen - 2] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* acc2 += x[2] * y[srcBLen - 1] + x[3] * y[srcBLen - 2] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[4] sample */ + x0 = *(px++); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* acc3 += x[3] * y[srcBLen - 1] + x[4] * y[srcBLen - 2] */ + acc3 = __SMLAD(input1, input2, acc3); + + /* Read y[srcBLen - 3] sample */ + c0 = *(py--); + /* Read y[srcBLen - 4] sample */ + c1 = *(py--); + + /* Read x[5] sample */ + x1 = *(px++); + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* y[srcBLen - 3] and y[srcBLen - 4] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* acc0 += x[2] * y[srcBLen - 3] + x[3] * y[srcBLen - 4] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* acc1 += x[3] * y[srcBLen - 3] + x[4] * y[srcBLen - 4] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[4] and x[5] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* acc2 += x[4] * y[srcBLen - 3] + x[5] * y[srcBLen - 4] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[6] sample */ + x2 = *(px++); + + /* x[5] and x[6] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* acc3 += x[5] * y[srcBLen - 3] + x[6] * y[srcBLen - 4] */ + acc3 = __SMLAD(input1, input2, acc3); + + } while (--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Read y[srcBLen - 5] sample */ + c0 = *(py--); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[srcBLen - 5] */ + acc0 += ((q15_t) x0 * c0); + /* acc1 += x[5] * y[srcBLen - 5] */ + acc1 += ((q15_t) x1 * c0); + /* acc2 += x[6] * y[srcBLen - 5] */ + acc2 += ((q15_t) x2 * c0); + /* acc3 += x[7] * y[srcBLen - 5] */ + acc3 += ((q15_t) x3 * c0); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(acc0 >> 7U, 8)); + *pOut++ = (q7_t) (__SSAT(acc1 >> 7U, 8)); + *pOut++ = (q7_t) (__SSAT(acc2 >> 7U, 8)); + *pOut++ = (q7_t) (__SSAT(acc3 >> 7U, 8)); + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q15_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8)); + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* srcBLen number of MACS should be performed */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += ((q15_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8)); + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pSrc2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[srcBLen-1] + x[srcALen-srcBLen+2] * y[srcBLen-2] +...+ x[srcALen-1] * y[1] + * sum += x[srcALen-srcBLen+2] * y[srcBLen-1] + x[srcALen-srcBLen+3] * y[srcBLen-2] +...+ x[srcALen-1] * y[2] + * .... + * sum += x[srcALen-2] * y[srcBLen-1] + x[srcALen-1] * y[srcBLen-2] + * sum += x[srcALen-1] * y[srcBLen-1] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The blockSize3 variable holds the number of MAC operations performed */ + + /* Working pointer of inputA */ + pSrc1 = pIn1 + (srcALen - (srcBLen - 1U)); + px = pSrc1; + + /* Working pointer of inputB */ + pSrc2 = pIn2 + (srcBLen - 1U); + py = pSrc2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = blockSize3 >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Reading two inputs, x[srcALen - srcBLen + 1] and x[srcALen - srcBLen + 2] of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* Reading two inputs, y[srcBLen - 1] and y[srcBLen - 2] of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* sum += x[srcALen - srcBLen + 1] * y[srcBLen - 1] */ + /* sum += x[srcALen - srcBLen + 2] * y[srcBLen - 2] */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs, x[srcALen - srcBLen + 3] and x[srcALen - srcBLen + 4] of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* Reading two inputs, y[srcBLen - 3] and y[srcBLen - 4] of SrcB buffer and packing */ + in1 = (q15_t) * py--; + in2 = (q15_t) * py--; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16U); + + /* sum += x[srcALen - srcBLen + 3] * y[srcBLen - 3] */ + /* sum += x[srcALen - srcBLen + 4] * y[srcBLen - 4] */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the blockSize3 is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = blockSize3 % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q15_t) * px++ * *py--); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut++ = (q7_t) (__SSAT(sum >> 7U, 8)); + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pSrc2; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q7_t *pIn1 = pSrcA; /* input pointer */ + q7_t *pIn2 = pSrcB; /* coefficient pointer */ + q31_t sum; /* Accumulator */ + uint32_t i, j; /* loop counter */ + + /* Loop to calculate output of convolution for output length number of times */ + for (i = 0; i < (srcALen + srcBLen - 1); i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0; j <= i; j++) + { + /* Check the array limitations */ + if (((i - j) < srcBLen) && (j < srcALen)) + { + /* z[i] += x[i-j] * y[j] */ + sum += (q15_t) pIn1[j] * (pIn2[i - j]); + } + } + + /* Store the output in the destination buffer */ + pDst[i] = (q7_t) __SSAT((sum >> 7U), 8U); + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of Conv group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c new file mode 100644 index 0000000..9451887 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_f32.c @@ -0,0 +1,727 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_correlate_f32.c + * Description: Correlation of floating-point sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup Corr Correlation + * + * Correlation is a mathematical operation that is similar to convolution. + * As with convolution, correlation uses two signals to produce a third signal. + * The underlying algorithms in correlation and convolution are identical except that one of the inputs is flipped in convolution. + * Correlation is commonly used to measure the similarity between two signals. + * It has applications in pattern recognition, cryptanalysis, and searching. + * The CMSIS library provides correlation functions for Q7, Q15, Q31 and floating-point data types. + * Fast versions of the Q15 and Q31 functions are also provided. + * + * \par Algorithm + * Let a[n] and b[n] be sequences of length srcALen and srcBLen samples respectively. + * The convolution of the two signals is denoted by + *
+ *                   c[n] = a[n] * b[n]
+ * 
+ * In correlation, one of the signals is flipped in time + *
+ *                   c[n] = a[n] * b[-n]
+ * 
+ * + * \par + * and this is mathematically defined as + * \image html CorrelateEquation.gif + * \par + * The pSrcA points to the first input vector of length srcALen and pSrcB points to the second input vector of length srcBLen. + * The result c[n] is of length 2 * max(srcALen, srcBLen) - 1 and is defined over the interval n=0, 1, 2, ..., (2 * max(srcALen, srcBLen) - 2). + * The output result is written to pDst and the calling function must allocate 2 * max(srcALen, srcBLen) - 1 words for the result. + * + * Note + * \par + * The pDst should be initialized to all zeros before being used. + * + * Fixed-Point Behavior + * \par + * Correlation requires summing up a large number of intermediate products. + * As such, the Q7, Q15, and Q31 functions run a risk of overflow and saturation. + * Refer to the function specific documentation below for further details of the particular algorithm used. + * + * + * Fast Versions + * + * \par + * Fast versions are supported for Q31 and Q15. Cycles for Fast versions are less compared to Q31 and Q15 of correlate and the design requires + * the input signals should be scaled down to avoid intermediate overflows. + * + * + * Opt Versions + * + * \par + * Opt versions are supported for Q15 and Q7. Design uses internal scratch buffer for getting good optimisation. + * These versions are optimised in cycles and consumes more memory(Scratch memory) compared to Q15 and Q7 versions of correlate + */ + +/** + * @addtogroup Corr + * @{ + */ +/** + * @brief Correlation of floating-point sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + */ + +void arm_correlate_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst) +{ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t *pIn1; /* inputA pointer */ + float32_t *pIn2; /* inputB pointer */ + float32_t *pOut = pDst; /* output pointer */ + float32_t *px; /* Intermediate inputA pointer */ + float32_t *py; /* Intermediate inputB pointer */ + float32_t *pSrc1; /* Intermediate pointers */ + float32_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + float32_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counters */ + int32_t inc = 1; /* Destination address modifier */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we assume zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = pSrcA; + + /* Initialization of inputB pointer */ + pIn2 = pSrcB; + + /* Number of output samples is calculated */ + outBlockSize = (2U * srcALen) - 1U; + + /* When srcALen > srcBLen, zero padding has to be done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1U)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + //while (j > 0U) + //{ + // /* Zero is stored in the destination buffer */ + // *pOut++ = 0.0f; + + // /* Decrement the loop counter */ + // j--; + //} + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = pSrcB; + + /* Initialization of inputB pointer */ + pIn2 = pSrcA; + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2U); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen-2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1U); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 4] */ + sum += *px++ * *py++; + /* x[1] * y[srcBLen - 3] */ + sum += *px++ * *py++; + /* x[2] * y[srcBLen - 2] */ + sum += *px++ * *py++; + /* x[3] * y[srcBLen - 1] */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + /* x[0] * y[srcBLen - 1] */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[0] sample */ + c0 = *(py++); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[0] */ + acc0 += x0 * c0; + /* acc1 += x[1] * y[0] */ + acc1 += x1 * c0; + /* acc2 += x[2] * y[0] */ + acc2 += x2 * c0; + /* acc3 += x[3] * y[0] */ + acc3 += x3 * c0; + + /* Read y[1] sample */ + c0 = *(py++); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[1] * y[1] */ + acc0 += x1 * c0; + /* acc1 += x[2] * y[1] */ + acc1 += x2 * c0; + /* acc2 += x[3] * y[1] */ + acc2 += x3 * c0; + /* acc3 += x[4] * y[1] */ + acc3 += x0 * c0; + + /* Read y[2] sample */ + c0 = *(py++); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[2] */ + acc0 += x2 * c0; + /* acc1 += x[3] * y[2] */ + acc1 += x3 * c0; + /* acc2 += x[4] * y[2] */ + acc2 += x0 * c0; + /* acc3 += x[5] * y[2] */ + acc3 += x1 * c0; + + /* Read y[3] sample */ + c0 = *(py++); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[3] */ + acc0 += x3 * c0; + /* acc1 += x[4] * y[3] */ + acc1 += x0 * c0; + /* acc2 += x[5] * y[3] */ + acc2 += x1 * c0; + /* acc3 += x[6] * y[3] */ + acc3 += x2 * c0; + + + } while (--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Read y[4] sample */ + c0 = *(py++); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[4] */ + acc0 += x0 * c0; + /* acc1 += x[5] * y[4] */ + acc1 += x1 * c0; + /* acc2 += x[6] * y[4] */ + acc2 += x2 * c0; + /* acc3 += x[7] * y[4] */ + acc3 += x3 * c0; + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = acc0; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = acc1; + pOut += inc; + + *pOut = acc2; + pOut += inc; + + *pOut = acc3; + pOut += inc; + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += *px++ * *py++; + sum += *px++ * *py++; + sum += *px++ * *py++; + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Loop over srcBLen */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = pIn1 + (srcALen - (srcBLen - 1U)); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0.0f; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen - srcBLen + 4] * y[3] */ + sum += *px++ * *py++; + /* sum += x[srcALen - srcBLen + 3] * y[2] */ + sum += *px++ * *py++; + /* sum += x[srcALen - srcBLen + 2] * y[1] */ + sum += *px++ * *py++; + /* sum += x[srcALen - srcBLen + 1] * y[0] */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += *px++ * *py++; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t *pIn1 = pSrcA; /* inputA pointer */ + float32_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + float32_t sum; /* Accumulator */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and a varaible, inv is set to 1 */ + /* If lengths are not equal then zero pad has to be done to make the two + * inputs of same length. But to improve the performance, we assume zeroes + * in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the + * starting of the output buffer */ + /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the + * ending of the output buffer */ + /* Once the zero padding is done the remaining of the output is calcualted + * using convolution but with the shorter signal time shifted. */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2U); + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1U); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0.0f; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += pIn1[j] * pIn2[-((int32_t) i - j)]; + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = sum; + else + *pDst++ = sum; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of Corr group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c new file mode 100644 index 0000000..baebc49 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c @@ -0,0 +1,500 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_correlate_fast_opt_q15.c + * Description: Fast Q15 Correlation + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] *pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @return none. + * + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, scratch buffers should be aligned by 32-bit + * + * + * Scaling and Overflow Behavior: + * + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * There is no saturation on intermediate additions. + * Thus, if the accumulator overflows it wraps around and distorts the result. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down one of the inputs by 1/min(srcALen, srcBLen) to avoid overflow since a + * maximum of min(srcALen, srcBLen) number of additions is carried internally. + * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result. + * + * \par + * See arm_correlate_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion. + */ + +void arm_correlate_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch) +{ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q31_t acc0, acc1, acc2, acc3; /* Accumulators */ + q15_t *py; /* Intermediate inputB pointer */ + q31_t x1, x2, x3; /* temporary variables for holding input and coefficient values */ + uint32_t j, blkCnt, outBlockSize; /* loop counter */ + int32_t inc = 1; /* Destination address modifier */ + uint32_t tapCnt; + q31_t y1, y2; + q15_t *pScr; /* Intermediate pointers */ + q15_t *pOut = pDst; /* output pointer */ +#ifdef UNALIGNED_SUPPORT_DISABLE + + q15_t a, b; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2U * srcALen) - 1U; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1U)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2U); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + pScr = pScratch; + + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr += (srcBLen - 1U); + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Copy (srcALen) samples in scratch buffer */ + arm_copy_q15(pIn1, pScr, srcALen); + + /* Update pointers */ + pScr += srcALen; + +#else + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + j = srcALen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (j > 0U) + { + /* copy second buffer in reversal manner */ + *pScr++ = *pIn1++; + *pScr++ = *pIn1++; + *pScr++ = *pIn1++; + *pScr++ = *pIn1++; + + /* Decrement the loop counter */ + j--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + j = srcALen % 0x4U; + + while (j > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr++ = *pIn1++; + + /* Decrement the loop counter */ + j--; + } + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ + arm_fill_q15(0, pScr, (srcBLen - 1U)); + + /* Update pointer */ + pScr += (srcBLen - 1U); + +#else + +/* Apply loop unrolling and do 4 Copies simultaneously. */ + j = (srcBLen - 1U) >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (j > 0U) + { + /* copy second buffer in reversal manner */ + *pScr++ = 0; + *pScr++ = 0; + *pScr++ = 0; + *pScr++ = 0; + + /* Decrement the loop counter */ + j--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + j = (srcBLen - 1U) % 0x4U; + + while (j > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr++ = 0; + + /* Decrement the loop counter */ + j--; + } + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Temporary pointer for scratch2 */ + py = pIn2; + + + /* Actual correlation process starts here */ + blkCnt = (srcALen + srcBLen - 1U) >> 2; + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr = pScratch; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read four samples from scratch1 buffer */ + x1 = *__SIMD32(pScr)++; + + /* Read next four samples from scratch1 buffer */ + x2 = *__SIMD32(pScr)++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pIn2); + y2 = _SIMD32_OFFSET(pIn2 + 2U); + + acc0 = __SMLAD(x1, y1, acc0); + + acc2 = __SMLAD(x2, y1, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc1 = __SMLADX(x3, y1, acc1); + + x1 = _SIMD32_OFFSET(pScr); + + acc0 = __SMLAD(x2, y2, acc0); + + acc2 = __SMLAD(x1, y2, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + + acc1 = __SMLADX(x3, y2, acc1); + + x2 = _SIMD32_OFFSET(pScr + 2U); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLADX(x3, y2, acc3); +#else + + /* Read four samples from smaller buffer */ + a = *pIn2; + b = *(pIn2 + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + y1 = __PKHBT(a, b, 16); +#else + y1 = __PKHBT(b, a, 16); +#endif + + a = *(pIn2 + 2); + b = *(pIn2 + 3); +#ifndef ARM_MATH_BIG_ENDIAN + y2 = __PKHBT(a, b, 16); +#else + y2 = __PKHBT(b, a, 16); +#endif + + acc0 = __SMLAD(x1, y1, acc0); + + acc2 = __SMLAD(x2, y1, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc1 = __SMLADX(x3, y1, acc1); + + a = *pScr; + b = *(pScr + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(a, b, 16); +#else + x1 = __PKHBT(b, a, 16); +#endif + + acc0 = __SMLAD(x2, y2, acc0); + + acc2 = __SMLAD(x1, y2, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + + acc1 = __SMLADX(x3, y2, acc1); + + a = *(pScr + 2); + b = *(pScr + 3); + +#ifndef ARM_MATH_BIG_ENDIAN + x2 = __PKHBT(a, b, 16); +#else + x2 = __PKHBT(b, a, 16); +#endif + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLADX(x3, y2, acc3); + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + pIn2 += 4U; + + pScr += 4U; + + + /* Decrement the loop counter */ + tapCnt--; + } + + + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr -= 4U; + + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr++ * *pIn2); + acc1 += (*pScr++ * *pIn2); + acc2 += (*pScr++ * *pIn2); + acc3 += (*pScr++ * *pIn2++); + + pScr -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + + /* Store the results in the accumulators in the destination buffer. */ + *pOut = (__SSAT(acc0 >> 15U, 16)); + pOut += inc; + *pOut = (__SSAT(acc1 >> 15U, 16)); + pOut += inc; + *pOut = (__SSAT(acc2 >> 15U, 16)); + pOut += inc; + *pOut = (__SSAT(acc3 >> 15U, 16)); + pOut += inc; + + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch += 4U; + + } + + + blkCnt = (srcALen + srcBLen - 1U) & 0x3; + + /* Calculate correlation for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr = pScratch; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + + acc0 += (*pScr++ * *pIn2++); + acc0 += (*pScr++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + + *pOut = (q15_t) (__SSAT((acc0 >> 15), 16)); + + pOut += inc; + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch += 1U; + + } +} + +/** + * @} end of Corr group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c new file mode 100644 index 0000000..7b676d0 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q15.c @@ -0,0 +1,1307 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_correlate_fast_q15.c + * Description: Fast Q15 Correlation + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + * + * Scaling and Overflow Behavior: + * + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * There is no saturation on intermediate additions. + * Thus, if the accumulator overflows it wraps around and distorts the result. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down one of the inputs by 1/min(srcALen, srcBLen) to avoid overflow since a + * maximum of min(srcALen, srcBLen) number of additions is carried internally. + * The 2.30 accumulator is right shifted by 15 bits and then saturated to 1.15 format to yield the final result. + * + * \par + * See arm_correlate_q15() for a slower implementation of this function which uses a 64-bit accumulator to avoid wrap around distortion. + */ + +void arm_correlate_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ +#ifndef UNALIGNED_SUPPORT_DISABLE + + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; /* Destination address modifier */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2U * srcALen) - 1U; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1U)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2U); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1U); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first loop starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */ + sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + /* x[3] * y[srcBLen - 1] , x[2] * y[srcBLen - 2] */ + sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum = __SMLAD(*px++, *py++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1] samples */ + x0 = *__SIMD32(px); + /* read x[1], x[2] samples */ + x1 = _SIMD32_OFFSET(px + 1); + px += 2U; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the first two inputB samples using SIMD: + * y[0] and y[1] */ + c0 = *__SIMD32(py)++; + + /* acc0 += x[0] * y[0] + x[1] * y[1] */ + acc0 = __SMLAD(x0, c0, acc0); + + /* acc1 += x[1] * y[0] + x[2] * y[1] */ + acc1 = __SMLAD(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *__SIMD32(px); + + /* Read x[3], x[4] */ + x3 = _SIMD32_OFFSET(px + 1); + + /* acc2 += x[2] * y[0] + x[3] * y[1] */ + acc2 = __SMLAD(x2, c0, acc2); + + /* acc3 += x[3] * y[0] + x[4] * y[1] */ + acc3 = __SMLAD(x3, c0, acc3); + + /* Read y[2] and y[3] */ + c0 = *__SIMD32(py)++; + + /* acc0 += x[2] * y[2] + x[3] * y[3] */ + acc0 = __SMLAD(x2, c0, acc0); + + /* acc1 += x[3] * y[2] + x[4] * y[3] */ + acc1 = __SMLAD(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = _SIMD32_OFFSET(px + 2); + + /* Read x[5], x[6] */ + x1 = _SIMD32_OFFSET(px + 3); + px += 4U; + + /* acc2 += x[4] * y[2] + x[5] * y[3] */ + acc2 = __SMLAD(x0, c0, acc2); + + /* acc3 += x[5] * y[2] + x[6] * y[3] */ + acc3 = __SMLAD(x1, c0, acc3); + + } while (--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + if (k == 1U) + { + /* Read y[4] */ + c0 = *py; +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + x3 = *__SIMD32(px); + px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLADX(x1, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + if (k == 2U) + { + /* Read y[4], y[5] */ + c0 = *__SIMD32(py); + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px + 1); + px += 2U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLAD(x3, c0, acc2); + acc3 = __SMLAD(x2, c0, acc3); + } + + if (k == 3U) + { + /* Read y[4], y[5] */ + c0 = *__SIMD32(py)++; + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px + 1); + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLAD(x3, c0, acc2); + acc3 = __SMLAD(x2, c0, acc3); + + c0 = (*py); + /* Read y[6] */ +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; +#else + + c0 = c0 & 0x0000FFFF; +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + x3 = _SIMD32_OFFSET(px + 2); + px += 3U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x1, c0, acc0); + acc1 = __SMLAD(x2, c0, acc1); + acc2 = __SMLADX(x2, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (acc0 >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q15_t) (acc1 >> 15); + pOut += inc; + + *pOut = (q15_t) (acc2 >> 15); + pOut += inc; + + *pOut = (q15_t) (acc3 >> 15); + pOut += inc; + + /* Increment the pointer pIn1 index, count by 1 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen - srcBLen + 4] * y[3] , sum += x[srcALen - srcBLen + 3] * y[2] */ + sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + /* sum += x[srcALen - srcBLen + 2] * y[1] , sum += x[srcALen - srcBLen + 1] * y[0] */ + sum = __SMLAD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = __SMLAD(*px++, *py++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; /* Destination address modifier */ + q15_t a, b; + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2U * srcALen) - 1U; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1U)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2U); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1U); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first loop starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */ + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + a = *px; + b = *(px + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + x0 = __PKHBT(a, b, 16); + a = *(px + 2); + x1 = __PKHBT(b, a, 16); + +#else + + x0 = __PKHBT(b, a, 16); + a = *(px + 2); + x1 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + px += 2U; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the first two inputB samples using SIMD: + * y[0] and y[1] */ + a = *py; + b = *(py + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc0 += x[0] * y[0] + x[1] * y[1] */ + acc0 = __SMLAD(x0, c0, acc0); + + /* acc1 += x[1] * y[0] + x[2] * y[1] */ + acc1 = __SMLAD(x1, c0, acc1); + + /* Read x[2], x[3], x[4] */ + a = *px; + b = *(px + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + x2 = __PKHBT(a, b, 16); + a = *(px + 2); + x3 = __PKHBT(b, a, 16); + +#else + + x2 = __PKHBT(b, a, 16); + a = *(px + 2); + x3 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc2 += x[2] * y[0] + x[3] * y[1] */ + acc2 = __SMLAD(x2, c0, acc2); + + /* acc3 += x[3] * y[0] + x[4] * y[1] */ + acc3 = __SMLAD(x3, c0, acc3); + + /* Read y[2] and y[3] */ + a = *(py + 2); + b = *(py + 3); + + py += 4U; + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* acc0 += x[2] * y[2] + x[3] * y[3] */ + acc0 = __SMLAD(x2, c0, acc0); + + /* acc1 += x[3] * y[2] + x[4] * y[3] */ + acc1 = __SMLAD(x3, c0, acc1); + + /* Read x[4], x[5], x[6] */ + a = *(px + 2); + b = *(px + 3); + +#ifndef ARM_MATH_BIG_ENDIAN + + x0 = __PKHBT(a, b, 16); + a = *(px + 4); + x1 = __PKHBT(b, a, 16); + +#else + + x0 = __PKHBT(b, a, 16); + a = *(px + 4); + x1 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + px += 4U; + + /* acc2 += x[4] * y[2] + x[5] * y[3] */ + acc2 = __SMLAD(x0, c0, acc2); + + /* acc3 += x[5] * y[2] + x[6] * y[3] */ + acc3 = __SMLAD(x1, c0, acc3); + + } while (--k); + + /* For the next MAC operations, SIMD is not used + * So, the 16 bit pointer if inputB, py is updated */ + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + if (k == 1U) + { + /* Read y[4] */ + c0 = *py; +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7] */ + a = *px; + b = *(px + 1); + + px++;; + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + +#else + + x3 = __PKHBT(b, a, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLADX(x1, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + if (k == 2U) + { + /* Read y[4], y[5] */ + a = *py; + b = *(py + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Read x[7], x[8], x[9] */ + a = *px; + b = *(px + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + a = *(px + 2); + x2 = __PKHBT(b, a, 16); + +#else + + x3 = __PKHBT(b, a, 16); + a = *(px + 2); + x2 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + px += 2U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLAD(x3, c0, acc2); + acc3 = __SMLAD(x2, c0, acc3); + } + + if (k == 3U) + { + /* Read y[4], y[5] */ + a = *py; + b = *(py + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + c0 = __PKHBT(a, b, 16); + +#else + + c0 = __PKHBT(b, a, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + py += 2U; + + /* Read x[7], x[8], x[9] */ + a = *px; + b = *(px + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + a = *(px + 2); + x2 = __PKHBT(b, a, 16); + +#else + + x3 = __PKHBT(b, a, 16); + a = *(px + 2); + x2 = __PKHBT(a, b, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + acc2 = __SMLAD(x3, c0, acc2); + acc3 = __SMLAD(x2, c0, acc3); + + c0 = (*py); + /* Read y[6] */ +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; +#else + + c0 = c0 & 0x0000FFFF; +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + + /* Read x[10] */ + b = *(px + 3); + +#ifndef ARM_MATH_BIG_ENDIAN + + x3 = __PKHBT(a, b, 16); + +#else + + x3 = __PKHBT(b, a, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + px += 3U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLADX(x1, c0, acc0); + acc1 = __SMLAD(x2, c0, acc1); + acc2 = __SMLADX(x2, c0, acc2); + acc3 = __SMLADX(x3, c0, acc3); + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (acc0 >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q15_t) (acc1 >> 15); + pOut += inc; + + *pOut = (q15_t) (acc2 >> 15); + pOut += inc; + + *pOut = (q15_t) (acc3 >> 15); + pOut += inc; + + /* Increment the pointer pIn1 index, count by 1 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q31_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (sum >> 15); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + +} + +/** + * @} end of Corr group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c new file mode 100644 index 0000000..53373ac --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_fast_q31.c @@ -0,0 +1,600 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_correlate_fast_q31.c + * Description: Fast Q31 Correlation + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * This function is optimized for speed at the expense of fixed-point precision and overflow protection. + * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. + * These intermediate results are accumulated in a 32-bit register in 2.30 format. + * Finally, the accumulator is saturated and converted to a 1.31 result. + * + * \par + * The fast version has the same overflow behavior as the standard version but provides less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signals must be scaled down. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a + * maximum of min(srcALen, srcBLen) number of additions is carried internally. + * + * \par + * See arm_correlate_q31() for a slower implementation of this function which uses 64-bit accumulation to provide higher precision. + */ + +void arm_correlate_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1; /* Intermediate pointers */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; /* Destination address modifier */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2U * srcALen) - 1U; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1U)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2U); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1U); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 4] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* x[1] * y[srcBLen - 3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* x[2] * y[srcBLen - 2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* x[3] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum << 1; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[0] sample */ + c0 = *(py++); + + /* Read x[3] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[0] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc1 += x[1] * y[0] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc2 += x[2] * y[0] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc3 += x[3] * y[0] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Read y[1] sample */ + c0 = *(py++); + + /* Read x[4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[1] * y[1] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc1 += x[2] * y[1] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc2 += x[3] * y[1] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc3 += x[4] * y[1] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Read y[2] sample */ + c0 = *(py++); + + /* Read x[5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[2] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc1 += x[3] * y[2] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc2 += x[4] * y[2] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc3 += x[5] * y[2] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* Read y[3] sample */ + c0 = *(py++); + + /* Read x[6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[3] * y[3] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x3 * c0)) >> 32); + /* acc1 += x[4] * y[3] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc2 += x[5] * y[3] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc3 += x[6] * y[3] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x2 * c0)) >> 32); + + + } while (--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Read y[4] sample */ + c0 = *(py++); + + /* Read x[7] sample */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[4] */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + /* acc1 += x[5] * y[4] */ + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + /* acc2 += x[6] * y[4] */ + acc2 = (q31_t) ((((q63_t) acc2 << 32) + ((q63_t) x2 * c0)) >> 32); + /* acc3 += x[7] * y[4] */ + acc3 = (q31_t) ((((q63_t) acc3 << 32) + ((q63_t) x3 * c0)) >> 32); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (acc0 << 1); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q31_t) (acc1 << 1); + pOut += inc; + + *pOut = (q31_t) (acc2 << 1); + pOut += inc; + + *pOut = (q31_t) (acc3 << 1); + pOut += inc; + + /* Increment the pointer pIn1 index, count by 4 */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum << 1; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum << 1; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = ((pIn1 + srcALen) - srcBLen) + 1U; + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen - srcBLen + 4] * y[3] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* sum += x[srcALen - srcBLen + 3] * y[2] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* sum += x[srcALen - srcBLen + 2] * y[1] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + /* sum += x[srcALen - srcBLen + 1] * y[0] */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = (q31_t) ((((q63_t) sum << 32) + + ((q63_t) * px++ * (*py++))) >> 32); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = sum << 1; + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +} + +/** + * @} end of Corr group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c new file mode 100644 index 0000000..c021b05 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q15.c @@ -0,0 +1,501 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_correlate_opt_q15.c + * Description: Correlation of Q15 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] *pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @return none. + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, scratch buffers should be aligned by 32-bit + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both inputs are in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * This approach provides 33 guard bits and there is no risk of overflow. + * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format. + * + * \par + * Refer to arm_correlate_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + * + * + */ + + +void arm_correlate_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch) +{ + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q63_t acc0, acc1, acc2, acc3; /* Accumulators */ + q15_t *py; /* Intermediate inputB pointer */ + q31_t x1, x2, x3; /* temporary variables for holding input1 and input2 values */ + uint32_t j, blkCnt, outBlockSize; /* loop counter */ + int32_t inc = 1; /* output pointer increment */ + uint32_t tapCnt; + q31_t y1, y2; + q15_t *pScr; /* Intermediate pointers */ + q15_t *pOut = pDst; /* output pointer */ +#ifdef UNALIGNED_SUPPORT_DISABLE + + q15_t a, b; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2U * srcALen) - 1U; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1U)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2U); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + pScr = pScratch; + + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr += (srcBLen - 1U); + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Copy (srcALen) samples in scratch buffer */ + arm_copy_q15(pIn1, pScr, srcALen); + + /* Update pointers */ + //pIn1 += srcALen; + pScr += srcALen; + +#else + + /* Apply loop unrolling and do 4 Copies simultaneously. */ + j = srcALen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (j > 0U) + { + /* copy second buffer in reversal manner */ + *pScr++ = *pIn1++; + *pScr++ = *pIn1++; + *pScr++ = *pIn1++; + *pScr++ = *pIn1++; + + /* Decrement the loop counter */ + j--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + j = srcALen % 0x4U; + + while (j > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr++ = *pIn1++; + + /* Decrement the loop counter */ + j--; + } + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ + arm_fill_q15(0, pScr, (srcBLen - 1U)); + + /* Update pointer */ + pScr += (srcBLen - 1U); + +#else + +/* Apply loop unrolling and do 4 Copies simultaneously. */ + j = (srcBLen - 1U) >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (j > 0U) + { + /* copy second buffer in reversal manner */ + *pScr++ = 0; + *pScr++ = 0; + *pScr++ = 0; + *pScr++ = 0; + + /* Decrement the loop counter */ + j--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + j = (srcBLen - 1U) % 0x4U; + + while (j > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr++ = 0; + + /* Decrement the loop counter */ + j--; + } + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Temporary pointer for scratch2 */ + py = pIn2; + + + /* Actual correlation process starts here */ + blkCnt = (srcALen + srcBLen - 1U) >> 2; + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr = pScratch; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read four samples from scratch1 buffer */ + x1 = *__SIMD32(pScr)++; + + /* Read next four samples from scratch1 buffer */ + x2 = *__SIMD32(pScr)++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pIn2); + y2 = _SIMD32_OFFSET(pIn2 + 2U); + + acc0 = __SMLALD(x1, y1, acc0); + + acc2 = __SMLALD(x2, y1, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc1 = __SMLALDX(x3, y1, acc1); + + x1 = _SIMD32_OFFSET(pScr); + + acc0 = __SMLALD(x2, y2, acc0); + + acc2 = __SMLALD(x1, y2, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLALDX(x3, y1, acc3); + + acc1 = __SMLALDX(x3, y2, acc1); + + x2 = _SIMD32_OFFSET(pScr + 2U); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLALDX(x3, y2, acc3); + +#else + + /* Read four samples from smaller buffer */ + a = *pIn2; + b = *(pIn2 + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + y1 = __PKHBT(a, b, 16); +#else + y1 = __PKHBT(b, a, 16); +#endif + + a = *(pIn2 + 2); + b = *(pIn2 + 3); +#ifndef ARM_MATH_BIG_ENDIAN + y2 = __PKHBT(a, b, 16); +#else + y2 = __PKHBT(b, a, 16); +#endif + + acc0 = __SMLALD(x1, y1, acc0); + + acc2 = __SMLALD(x2, y1, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc1 = __SMLALDX(x3, y1, acc1); + + a = *pScr; + b = *(pScr + 1); + +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(a, b, 16); +#else + x1 = __PKHBT(b, a, 16); +#endif + + acc0 = __SMLALD(x2, y2, acc0); + + acc2 = __SMLALD(x1, y2, acc2); + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLALDX(x3, y1, acc3); + + acc1 = __SMLALDX(x3, y2, acc1); + + a = *(pScr + 2); + b = *(pScr + 3); + +#ifndef ARM_MATH_BIG_ENDIAN + x2 = __PKHBT(a, b, 16); +#else + x2 = __PKHBT(b, a, 16); +#endif + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLALDX(x3, y2, acc3); + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + pIn2 += 4U; + + pScr += 4U; + + + /* Decrement the loop counter */ + tapCnt--; + } + + + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr -= 4U; + + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr++ * *pIn2); + acc1 += (*pScr++ * *pIn2); + acc2 += (*pScr++ * *pIn2); + acc3 += (*pScr++ * *pIn2++); + + pScr -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + + /* Store the results in the accumulators in the destination buffer. */ + *pOut = (__SSAT(acc0 >> 15U, 16)); + pOut += inc; + *pOut = (__SSAT(acc1 >> 15U, 16)); + pOut += inc; + *pOut = (__SSAT(acc2 >> 15U, 16)); + pOut += inc; + *pOut = (__SSAT(acc3 >> 15U, 16)); + pOut += inc; + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch += 4U; + + } + + + blkCnt = (srcALen + srcBLen - 1U) & 0x3; + + /* Calculate correlation for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr = pScratch; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + + acc0 += (*pScr++ * *pIn2++); + acc0 += (*pScr++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr++ * *pIn2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT((acc0 >> 15), 16)); + + pOut += inc; + + /* Initialization of inputB pointer */ + pIn2 = py; + + pScratch += 1U; + + } + + +} + +/** + * @} end of Corr group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c new file mode 100644 index 0000000..dbffd5d --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_opt_q7.c @@ -0,0 +1,452 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_correlate_opt_q7.c + * Description: Correlation of Q7 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] *pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] *pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + * @return none. + * + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, scratch1 and scratch2 buffers should be aligned by 32-bit + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 32-bit internal accumulator. + * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. + * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. + * This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. + * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and saturated to 1.7 format. + * + * + */ + + + +void arm_correlate_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2) +{ + q7_t *pOut = pDst; /* output pointer */ + q15_t *pScr1 = pScratch1; /* Temporary pointer for scratch */ + q15_t *pScr2 = pScratch2; /* Temporary pointer for scratch */ + q7_t *pIn1; /* inputA pointer */ + q7_t *pIn2; /* inputB pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q31_t acc0, acc1, acc2, acc3; /* Accumulators */ + uint32_t j, k = 0U, blkCnt; /* loop counter */ + int32_t inc = 1; /* output pointer increment */ + uint32_t outBlockSize; /* loop counter */ + q15_t x4; /* Temporary input variable */ + uint32_t tapCnt; /* loop counter */ + q31_t x1, x2, x3, y1; /* Temporary input variables */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2U * srcALen) - 1U; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1U)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2U); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + + /* Copy (srcBLen) samples in scratch buffer */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + x4 = (q15_t) * pIn2++; + *pScr2++ = x4; + x4 = (q15_t) * pIn2++; + *pScr2++ = x4; + x4 = (q15_t) * pIn2++; + *pScr2++ = x4; + x4 = (q15_t) * pIn2++; + *pScr2++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + x4 = (q15_t) * pIn2++; + *pScr2++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* Fill (srcBLen - 1U) zeros in scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update temporary scratch pointer */ + pScr1 += (srcBLen - 1U); + + /* Copy (srcALen) samples in scratch buffer */ + k = srcALen >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = srcALen % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + x4 = (q15_t) * pIn1++; + *pScr1++ = x4; + + /* Decrement the loop counter */ + k--; + } + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Fill (srcBLen - 1U) zeros at end of scratch buffer */ + arm_fill_q15(0, pScr1, (srcBLen - 1U)); + + /* Update pointer */ + pScr1 += (srcBLen - 1U); + +#else + +/* Apply loop unrolling and do 4 Copies simultaneously. */ + k = (srcBLen - 1U) >> 2U; + + /* First part of the processing with loop unrolling copies 4 data points at a time. + ** a second loop below copies for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* copy second buffer in reversal manner */ + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, copy remaining samples here. + ** No loop unrolling is used. */ + k = (srcBLen - 1U) % 0x4U; + + while (k > 0U) + { + /* copy second buffer in reversal manner for remaining samples */ + *pScr1++ = 0; + + /* Decrement the loop counter */ + k--; + } + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Temporary pointer for second sequence */ + py = pScratch2; + + /* Initialization of pScr2 pointer */ + pScr2 = pScratch2; + + /* Actual correlation process starts here */ + blkCnt = (srcALen + srcBLen - 1U) >> 2; + + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Read two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* Read next two samples from scratch1 buffer */ + x2 = *__SIMD32(pScr1)++; + + tapCnt = (srcBLen) >> 2U; + + while (tapCnt > 0U) + { + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pScr2); + + /* multiply and accumlate */ + acc0 = __SMLAD(x1, y1, acc0); + acc2 = __SMLAD(x2, y1, acc2); + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + /* multiply and accumlate */ + acc1 = __SMLADX(x3, y1, acc1); + + /* Read next two samples from scratch1 buffer */ + x1 = *__SIMD32(pScr1)++; + + /* pack input data */ +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x1, x2, 0); +#else + x3 = __PKHBT(x2, x1, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + + /* Read four samples from smaller buffer */ + y1 = _SIMD32_OFFSET(pScr2 + 2U); + + acc0 = __SMLAD(x2, y1, acc0); + + acc2 = __SMLAD(x1, y1, acc2); + + acc1 = __SMLADX(x3, y1, acc1); + + x2 = *__SIMD32(pScr1)++; + +#ifndef ARM_MATH_BIG_ENDIAN + x3 = __PKHBT(x2, x1, 0); +#else + x3 = __PKHBT(x1, x2, 0); +#endif + + acc3 = __SMLADX(x3, y1, acc3); + + pScr2 += 4U; + + + /* Decrement the loop counter */ + tapCnt--; + } + + + + /* Update scratch pointer for remaining samples of smaller length sequence */ + pScr1 -= 4U; + + + /* apply same above for remaining samples of smaller length sequence */ + tapCnt = (srcBLen) & 3U; + + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pScr2); + acc1 += (*pScr1++ * *pScr2); + acc2 += (*pScr1++ * *pScr2); + acc3 += (*pScr1++ * *pScr2++); + + pScr1 -= 3U; + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(acc0 >> 7U, 8)); + pOut += inc; + *pOut = (q7_t) (__SSAT(acc1 >> 7U, 8)); + pOut += inc; + *pOut = (q7_t) (__SSAT(acc2 >> 7U, 8)); + pOut += inc; + *pOut = (q7_t) (__SSAT(acc3 >> 7U, 8)); + pOut += inc; + + /* Initialization of inputB pointer */ + pScr2 = py; + + pScratch1 += 4U; + + } + + + blkCnt = (srcALen + srcBLen - 1U) & 0x3; + + /* Calculate correlation for remaining samples of Bigger length sequence */ + while (blkCnt > 0) + { + /* Initialze temporary scratch pointer as scratch1 */ + pScr1 = pScratch1; + + /* Clear Accumlators */ + acc0 = 0; + + tapCnt = (srcBLen) >> 1U; + + while (tapCnt > 0U) + { + acc0 += (*pScr1++ * *pScr2++); + acc0 += (*pScr1++ * *pScr2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (srcBLen) & 1U; + + /* apply same above for remaining samples of smaller length sequence */ + while (tapCnt > 0U) + { + + /* accumlate the results */ + acc0 += (*pScr1++ * *pScr2++); + + /* Decrement the loop counter */ + tapCnt--; + } + + blkCnt--; + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(acc0 >> 7U, 8)); + + pOut += inc; + + /* Initialization of inputB pointer */ + pScr2 = py; + + pScratch1 += 1U; + + } + +} + +/** + * @} end of Corr group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c new file mode 100644 index 0000000..fdff6db --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q15.c @@ -0,0 +1,707 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_correlate_q15.c + * Description: Correlation of Q15 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q15 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both inputs are in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * This approach provides 33 guard bits and there is no risk of overflow. + * The 34.30 result is then truncated to 34.15 format by discarding the low 15 bits and then saturated to 1.15 format. + * + * \par + * Refer to arm_correlate_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + * + * \par + * Refer the function arm_correlate_opt_q15() for a faster implementation of this function using scratch buffers. + * + */ + +void arm_correlate_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst) +{ + +#if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *pIn1; /* inputA pointer */ + q15_t *pIn2; /* inputB pointer */ + q15_t *pOut = pDst; /* output pointer */ + q63_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q15_t *px; /* Intermediate inputA pointer */ + q15_t *py; /* Intermediate inputB pointer */ + q15_t *pSrc1; /* Intermediate pointers */ + q31_t x0, x1, x2, x3, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; /* Destination address modifier */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2U * srcALen) - 1U; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1U)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2U); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1U); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first loop starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 4] , x[1] * y[srcBLen - 3] */ + sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + /* x[3] * y[srcBLen - 1] , x[2] * y[srcBLen - 2] */ + sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum = __SMLALD(*px++, *py++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT((sum >> 15), 16)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4, to loop unroll the srcBLen loop */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1] samples */ + x0 = *__SIMD32(px); + /* read x[1], x[2] samples */ + x1 = _SIMD32_OFFSET(px + 1); + px += 2U; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read the first two inputB samples using SIMD: + * y[0] and y[1] */ + c0 = *__SIMD32(py)++; + + /* acc0 += x[0] * y[0] + x[1] * y[1] */ + acc0 = __SMLALD(x0, c0, acc0); + + /* acc1 += x[1] * y[0] + x[2] * y[1] */ + acc1 = __SMLALD(x1, c0, acc1); + + /* Read x[2], x[3] */ + x2 = *__SIMD32(px); + + /* Read x[3], x[4] */ + x3 = _SIMD32_OFFSET(px + 1); + + /* acc2 += x[2] * y[0] + x[3] * y[1] */ + acc2 = __SMLALD(x2, c0, acc2); + + /* acc3 += x[3] * y[0] + x[4] * y[1] */ + acc3 = __SMLALD(x3, c0, acc3); + + /* Read y[2] and y[3] */ + c0 = *__SIMD32(py)++; + + /* acc0 += x[2] * y[2] + x[3] * y[3] */ + acc0 = __SMLALD(x2, c0, acc0); + + /* acc1 += x[3] * y[2] + x[4] * y[3] */ + acc1 = __SMLALD(x3, c0, acc1); + + /* Read x[4], x[5] */ + x0 = _SIMD32_OFFSET(px + 2); + + /* Read x[5], x[6] */ + x1 = _SIMD32_OFFSET(px + 3); + + px += 4U; + + /* acc2 += x[4] * y[2] + x[5] * y[3] */ + acc2 = __SMLALD(x0, c0, acc2); + + /* acc3 += x[5] * y[2] + x[6] * y[3] */ + acc3 = __SMLALD(x1, c0, acc3); + + } while (--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + if (k == 1U) + { + /* Read y[4] */ + c0 = *py; +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; + +#else + + c0 = c0 & 0x0000FFFF; + +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + /* Read x[7] */ + x3 = *__SIMD32(px); + px++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALDX(x1, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + if (k == 2U) + { + /* Read y[4], y[5] */ + c0 = *__SIMD32(py); + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px + 1); + px += 2U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALD(x3, c0, acc2); + acc3 = __SMLALD(x2, c0, acc3); + } + + if (k == 3U) + { + /* Read y[4], y[5] */ + c0 = *__SIMD32(py)++; + + /* Read x[7], x[8] */ + x3 = *__SIMD32(px); + + /* Read x[9] */ + x2 = _SIMD32_OFFSET(px + 1); + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALD(x3, c0, acc2); + acc3 = __SMLALD(x2, c0, acc3); + + c0 = (*py); + + /* Read y[6] */ +#ifdef ARM_MATH_BIG_ENDIAN + + c0 = c0 << 16U; +#else + + c0 = c0 & 0x0000FFFF; +#endif /* #ifdef ARM_MATH_BIG_ENDIAN */ + /* Read x[10] */ + x3 = _SIMD32_OFFSET(px + 2); + px += 3U; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALDX(x1, c0, acc0); + acc1 = __SMLALD(x2, c0, acc1); + acc2 = __SMLALDX(x2, c0, acc2); + acc3 = __SMLALDX(x3, c0, acc3); + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT(acc0 >> 15, 16)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q15_t) (__SSAT(acc1 >> 15, 16)); + pOut += inc; + + *pOut = (q15_t) (__SSAT(acc2 >> 15, 16)); + pOut += inc; + + *pOut = (q15_t) (__SSAT(acc3 >> 15, 16)); + pOut += inc; + + /* Increment the count by 4 as 4 output values are computed */ + count += 4U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q63_t) * px++ * *py++); + sum += ((q63_t) * px++ * *py++); + sum += ((q63_t) * px++ * *py++); + sum += ((q63_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q63_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT(sum >> 15, 16)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment count by 1, as one output value is computed */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += ((q63_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT(sum >> 15, 16)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = (pIn1 + srcALen) - (srcBLen - 1U); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen - srcBLen + 4] * y[3] , sum += x[srcALen - srcBLen + 3] * y[2] */ + sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + /* sum += x[srcALen - srcBLen + 2] * y[1] , sum += x[srcALen - srcBLen + 1] * y[0] */ + sum = __SMLALD(*__SIMD32(px)++, *__SIMD32(py)++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum = __SMLALD(*px++, *py++, sum); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q15_t) (__SSAT((sum >> 15), 16)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + q15_t *pIn1 = pSrcA; /* inputA pointer */ + q15_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + q63_t sum; /* Accumulators */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and a varaible, inv is set to 1 */ + /* If lengths are not equal then zero pad has to be done to make the two + * inputs of same length. But to improve the performance, we include zeroes + * in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the + * starting of the output buffer */ + /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the + * ending of the output buffer */ + /* Once the zero padding is done the remaining of the output is calcualted + * using convolution but with the shorter signal time shifted. */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2U); + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1U); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q31_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = (q15_t) __SSAT((sum >> 15U), 16U); + else + *pDst++ = (q15_t) __SSAT((sum >> 15U), 16U); + } + +#endif /* #if (defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3)) && !defined(UNALIGNED_SUPPORT_DISABLE) */ + +} + +/** + * @} end of Corr group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c new file mode 100644 index 0000000..f2e946a --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q31.c @@ -0,0 +1,653 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_correlate_q31.c + * Description: Correlation of Q31 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q31 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * There is no saturation on intermediate additions. + * Thus, if the accumulator overflows it wraps around and distorts the result. + * The input signals should be scaled down to avoid intermediate overflows. + * Scale down one of the inputs by 1/min(srcALen, srcBLen)to avoid overflows since a + * maximum of min(srcALen, srcBLen) number of additions is carried internally. + * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. + * + * \par + * See arm_correlate_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +void arm_correlate_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst) +{ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t *pIn1; /* inputA pointer */ + q31_t *pIn2; /* inputB pointer */ + q31_t *pOut = pDst; /* output pointer */ + q31_t *px; /* Intermediate inputA pointer */ + q31_t *py; /* Intermediate inputB pointer */ + q31_t *pSrc1; /* Intermediate pointers */ + q63_t sum, acc0, acc1, acc2; /* Accumulators */ + q31_t x0, x1, x2, c0; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; /* Destination address modifier */ + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2U * srcALen) - 1U; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1U)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2U); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1U); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] * y[srcBLen - 4] */ + sum += (q63_t) * px++ * (*py++); + /* x[1] * y[srcBLen - 3] */ + sum += (q63_t) * px++ * (*py++); + /* x[2] * y[srcBLen - 2] */ + sum += (q63_t) * px++ * (*py++); + /* x[3] * y[srcBLen - 1] */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (sum >> 31); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll by 3 */ + blkCnt = blockSize2 / 3; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + + /* read x[0], x[1] samples */ + x0 = *(px++); + x1 = *(px++); + + /* Apply loop unrolling and compute 3 MACs simultaneously. */ + k = srcBLen / 3; + + /* First part of the processing with loop unrolling. Compute 3 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 2 samples. */ + do + { + /* Read y[0] sample */ + c0 = *(py); + + /* Read x[2] sample */ + x2 = *(px); + + /* Perform the multiply-accumulate */ + /* acc0 += x[0] * y[0] */ + acc0 += ((q63_t) x0 * c0); + /* acc1 += x[1] * y[0] */ + acc1 += ((q63_t) x1 * c0); + /* acc2 += x[2] * y[0] */ + acc2 += ((q63_t) x2 * c0); + + /* Read y[1] sample */ + c0 = *(py + 1U); + + /* Read x[3] sample */ + x0 = *(px + 1U); + + /* Perform the multiply-accumulates */ + /* acc0 += x[1] * y[1] */ + acc0 += ((q63_t) x1 * c0); + /* acc1 += x[2] * y[1] */ + acc1 += ((q63_t) x2 * c0); + /* acc2 += x[3] * y[1] */ + acc2 += ((q63_t) x0 * c0); + + /* Read y[2] sample */ + c0 = *(py + 2U); + + /* Read x[4] sample */ + x1 = *(px + 2U); + + /* Perform the multiply-accumulates */ + /* acc0 += x[2] * y[2] */ + acc0 += ((q63_t) x2 * c0); + /* acc1 += x[3] * y[2] */ + acc1 += ((q63_t) x0 * c0); + /* acc2 += x[4] * y[2] */ + acc2 += ((q63_t) x1 * c0); + + /* update scratch pointers */ + px += 3U; + py += 3U; + + } while (--k); + + /* If the srcBLen is not a multiple of 3, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen - (3 * (srcBLen / 3)); + + while (k > 0U) + { + /* Read y[4] sample */ + c0 = *(py++); + + /* Read x[7] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[4] */ + acc0 += ((q63_t) x0 * c0); + /* acc1 += x[5] * y[4] */ + acc1 += ((q63_t) x1 * c0); + /* acc2 += x[6] * y[4] */ + acc2 += ((q63_t) x2 * c0); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (acc0 >> 31); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q31_t) (acc1 >> 31); + pOut += inc; + + *pOut = (q31_t) (acc2 >> 31); + pOut += inc; + + /* Increment the pointer pIn1 index, count by 3 */ + count += 3U; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 3, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 - 3 * (blockSize2 / 3); + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) * px++ * (*py++); + sum += (q63_t) * px++ * (*py++); + sum += (q63_t) * px++ * (*py++); + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (sum >> 31); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (sum >> 31); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = pIn1 + (srcALen - (srcBLen - 1U)); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* sum += x[srcALen - srcBLen + 4] * y[3] */ + sum += (q63_t) * px++ * (*py++); + /* sum += x[srcALen - srcBLen + 3] * y[2] */ + sum += (q63_t) * px++ * (*py++); + /* sum += x[srcALen - srcBLen + 2] * y[1] */ + sum += (q63_t) * px++ * (*py++); + /* sum += x[srcALen - srcBLen + 1] * y[0] */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += (q63_t) * px++ * (*py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q31_t) (sum >> 31); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t *pIn1 = pSrcA; /* inputA pointer */ + q31_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + q63_t sum; /* Accumulators */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and a varaible, inv is set to 1 */ + /* If lengths are not equal then zero pad has to be done to make the two + * inputs of same length. But to improve the performance, we include zeroes + * in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the + * starting of the output buffer */ + /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the + * ending of the output buffer */ + /* Once the zero padding is done the remaining of the output is calcualted + * using correlation but with the shorter signal time shifted. */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2U); + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1U); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate correlation for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to correlation equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q63_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = (q31_t) (sum >> 31U); + else + *pDst++ = (q31_t) (sum >> 31U); + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of Corr group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c new file mode 100644 index 0000000..f8b1df5 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_correlate_q7.c @@ -0,0 +1,778 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_correlate_q7.c + * Description: Correlation of Q7 sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup Corr + * @{ + */ + +/** + * @brief Correlation of Q7 sequences. + * @param[in] *pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] *pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] *pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 32-bit internal accumulator. + * Both the inputs are represented in 1.7 format and multiplications yield a 2.14 result. + * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. + * This approach provides 17 guard bits and there is no risk of overflow as long as max(srcALen, srcBLen)<131072. + * The 18.14 result is then truncated to 18.7 format by discarding the low 7 bits and saturated to 1.7 format. + * + * \par + * Refer the function arm_correlate_opt_q7() for a faster implementation of this function. + * + */ + +void arm_correlate_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst) +{ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t *pIn1; /* inputA pointer */ + q7_t *pIn2; /* inputB pointer */ + q7_t *pOut = pDst; /* output pointer */ + q7_t *px; /* Intermediate inputA pointer */ + q7_t *py; /* Intermediate inputB pointer */ + q7_t *pSrc1; /* Intermediate pointers */ + q31_t sum, acc0, acc1, acc2, acc3; /* Accumulators */ + q31_t input1, input2; /* temporary variables */ + q15_t in1, in2; /* temporary variables */ + q7_t x0, x1, x2, x3, c0, c1; /* temporary variables for holding input and coefficient values */ + uint32_t j, k = 0U, count, blkCnt, outBlockSize, blockSize1, blockSize2, blockSize3; /* loop counter */ + int32_t inc = 1; + + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and the destination pointer modifier, inc is set to -1 */ + /* If srcALen > srcBLen, zero pad has to be done to srcB to make the two inputs of same length */ + /* But to improve the performance, + * we include zeroes in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, + * (srcALen - srcBLen) zeroes has to included in the starting of the output buffer */ + /* If srcALen < srcBLen, + * (srcALen - srcBLen) zeroes has to included in the ending of the output buffer */ + if (srcALen >= srcBLen) + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcA); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcB); + + /* Number of output samples is calculated */ + outBlockSize = (2U * srcALen) - 1U; + + /* When srcALen > srcBLen, zero padding is done to srcB + * to make their lengths equal. + * Instead, (outBlockSize - (srcALen + srcBLen - 1)) + * number of output samples are made zero */ + j = outBlockSize - (srcALen + (srcBLen - 1U)); + + /* Updating the pointer position to non zero value */ + pOut += j; + + } + else + { + /* Initialization of inputA pointer */ + pIn1 = (pSrcB); + + /* Initialization of inputB pointer */ + pIn2 = (pSrcA); + + /* srcBLen is always considered as shorter or equal to srcALen */ + j = srcBLen; + srcBLen = srcALen; + srcALen = j; + + /* CORR(x, y) = Reverse order(CORR(y, x)) */ + /* Hence set the destination pointer to point to the last output sample */ + pOut = pDst + ((srcALen + srcBLen) - 2U); + + /* Destination address modifier is set to -1 */ + inc = -1; + + } + + /* The function is internally + * divided into three parts according to the number of multiplications that has to be + * taken place between inputA samples and inputB samples. In the first part of the + * algorithm, the multiplications increase by one for every iteration. + * In the second part of the algorithm, srcBLen number of multiplications are done. + * In the third part of the algorithm, the multiplications decrease by one + * for every iteration.*/ + /* The algorithm is implemented in three stages. + * The loop counters of each stage is initiated here. */ + blockSize1 = srcBLen - 1U; + blockSize2 = srcALen - (srcBLen - 1U); + blockSize3 = blockSize1; + + /* -------------------------- + * Initializations of stage1 + * -------------------------*/ + + /* sum = x[0] * y[srcBlen - 1] + * sum = x[0] * y[srcBlen - 2] + x[1] * y[srcBlen - 1] + * .... + * sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen - 1] * y[srcBLen - 1] + */ + + /* In this stage the MAC operations are increased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = 1U; + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + pSrc1 = pIn2 + (srcBLen - 1U); + py = pSrc1; + + /* ------------------------ + * Stage1 process + * ----------------------*/ + + /* The first stage starts here */ + while (blockSize1 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[0] , x[1] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 4] , y[srcBLen - 3] */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* x[0] * y[srcBLen - 4] */ + /* x[1] * y[srcBLen - 3] */ + sum = __SMLAD(input1, input2, sum); + + /* x[2] , x[3] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[srcBLen - 2] , y[srcBLen - 1] */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* x[2] * y[srcBLen - 2] */ + /* x[3] * y[srcBLen - 1] */ + sum = __SMLAD(input1, input2, sum); + + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + /* x[0] * y[srcBLen - 1] */ + sum += (q31_t) ((q15_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(sum >> 7, 8)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + py = pSrc1 - count; + px = pIn1; + + /* Increment the MAC count */ + count++; + + /* Decrement the loop counter */ + blockSize1--; + } + + /* -------------------------- + * Initializations of stage2 + * ------------------------*/ + + /* sum = x[0] * y[0] + x[1] * y[1] +...+ x[srcBLen-1] * y[srcBLen-1] + * sum = x[1] * y[0] + x[2] * y[1] +...+ x[srcBLen] * y[srcBLen-1] + * .... + * sum = x[srcALen-srcBLen-2] * y[0] + x[srcALen-srcBLen-1] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + */ + + /* Working pointer of inputA */ + px = pIn1; + + /* Working pointer of inputB */ + py = pIn2; + + /* count is index by which the pointer pIn1 to be incremented */ + count = 0U; + + /* ------------------- + * Stage2 process + * ------------------*/ + + /* Stage2 depends on srcBLen as in this stage srcBLen number of MACS are performed. + * So, to loop unroll over blockSize2, + * srcBLen should be greater than or equal to 4 */ + if (srcBLen >= 4U) + { + /* Loop unroll over blockSize2, by 4 */ + blkCnt = blockSize2 >> 2U; + + while (blkCnt > 0U) + { + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* read x[0], x[1], x[2] samples */ + x0 = *px++; + x1 = *px++; + x2 = *px++; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + do + { + /* Read y[0] sample */ + c0 = *py++; + /* Read y[1] sample */ + c1 = *py++; + + /* Read x[3] sample */ + x3 = *px++; + + /* x[0] and x[1] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[0] and y[1] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc0 += x[0] * y[0] + x[1] * y[1] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[1] and x[2] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc1 += x[1] * y[0] + x[2] * y[1] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc2 += x[2] * y[0] + x[3] * y[1] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[4] sample */ + x0 = *(px++); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc3 += x[3] * y[0] + x[4] * y[1] */ + acc3 = __SMLAD(input1, input2, acc3); + + /* Read y[2] sample */ + c0 = *py++; + /* Read y[3] sample */ + c1 = *py++; + + /* Read x[5] sample */ + x1 = *px++; + + /* x[2] and x[3] are packed */ + in1 = (q15_t) x2; + in2 = (q15_t) x3; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[2] and y[3] are packed */ + in1 = (q15_t) c0; + in2 = (q15_t) c1; + + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc0 += x[2] * y[2] + x[3] * y[3] */ + acc0 = __SMLAD(input1, input2, acc0); + + /* x[3] and x[4] are packed */ + in1 = (q15_t) x3; + in2 = (q15_t) x0; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc1 += x[3] * y[2] + x[4] * y[3] */ + acc1 = __SMLAD(input1, input2, acc1); + + /* x[4] and x[5] are packed */ + in1 = (q15_t) x0; + in2 = (q15_t) x1; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc2 += x[4] * y[2] + x[5] * y[3] */ + acc2 = __SMLAD(input1, input2, acc2); + + /* Read x[6] sample */ + x2 = *px++; + + /* x[5] and x[6] are packed */ + in1 = (q15_t) x1; + in2 = (q15_t) x2; + + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* acc3 += x[5] * y[2] + x[6] * y[3] */ + acc3 = __SMLAD(input1, input2, acc3); + + } while (--k); + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Read y[4] sample */ + c0 = *py++; + + /* Read x[7] sample */ + x3 = *px++; + + /* Perform the multiply-accumulates */ + /* acc0 += x[4] * y[4] */ + acc0 += ((q15_t) x0 * c0); + /* acc1 += x[5] * y[4] */ + acc1 += ((q15_t) x1 * c0); + /* acc2 += x[6] * y[4] */ + acc2 += ((q15_t) x2 * c0); + /* acc3 += x[7] * y[4] */ + acc3 += ((q15_t) x3 * c0); + + /* Reuse the present samples for the next MAC */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(acc0 >> 7, 8)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + *pOut = (q7_t) (__SSAT(acc1 >> 7, 8)); + pOut += inc; + + *pOut = (q7_t) (__SSAT(acc2 >> 7, 8)); + pOut += inc; + + *pOut = (q7_t) (__SSAT(acc3 >> 7, 8)); + pOut += inc; + + count += 4U; + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize2 is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize2 % 0x4U; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = srcBLen >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Reading two inputs of SrcA buffer and packing */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Reading two inputs of SrcB buffer and packing */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* Perform the multiply-accumulates */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the srcBLen is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = srcBLen % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q15_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(sum >> 7, 8)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the pointer pIn1 index, count by 1 */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + /* Decrement the loop counter */ + blkCnt--; + } + } + else + { + /* If the srcBLen is not a multiple of 4, + * the blockSize2 loop cannot be unrolled by 4 */ + blkCnt = blockSize2; + + while (blkCnt > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Loop over srcBLen */ + k = srcBLen; + + while (k > 0U) + { + /* Perform the multiply-accumulate */ + sum += ((q15_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(sum >> 7, 8)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Increment the MAC count */ + count++; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = pIn1 + count; + py = pIn2; + + + /* Decrement the loop counter */ + blkCnt--; + } + } + + /* -------------------------- + * Initializations of stage3 + * -------------------------*/ + + /* sum += x[srcALen-srcBLen+1] * y[0] + x[srcALen-srcBLen+2] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * sum += x[srcALen-srcBLen+2] * y[0] + x[srcALen-srcBLen+3] * y[1] +...+ x[srcALen-1] * y[srcBLen-1] + * .... + * sum += x[srcALen-2] * y[0] + x[srcALen-1] * y[1] + * sum += x[srcALen-1] * y[0] + */ + + /* In this stage the MAC operations are decreased by 1 for every iteration. + The count variable holds the number of MAC operations performed */ + count = srcBLen - 1U; + + /* Working pointer of inputA */ + pSrc1 = pIn1 + (srcALen - (srcBLen - 1U)); + px = pSrc1; + + /* Working pointer of inputB */ + py = pIn2; + + /* ------------------- + * Stage3 process + * ------------------*/ + + while (blockSize3 > 0U) + { + /* Accumulator is made zero for every iteration */ + sum = 0; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + k = count >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 MACs at a time. + ** a second loop below computes MACs for the remaining 1 to 3 samples. */ + while (k > 0U) + { + /* x[srcALen - srcBLen + 1] , x[srcALen - srcBLen + 2] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[0] , y[1] */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* sum += x[srcALen - srcBLen + 1] * y[0] */ + /* sum += x[srcALen - srcBLen + 2] * y[1] */ + sum = __SMLAD(input1, input2, sum); + + /* x[srcALen - srcBLen + 3] , x[srcALen - srcBLen + 4] */ + in1 = (q15_t) * px++; + in2 = (q15_t) * px++; + input1 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* y[2] , y[3] */ + in1 = (q15_t) * py++; + in2 = (q15_t) * py++; + input2 = ((q31_t) in1 & 0x0000FFFF) | ((q31_t) in2 << 16); + + /* sum += x[srcALen - srcBLen + 3] * y[2] */ + /* sum += x[srcALen - srcBLen + 4] * y[3] */ + sum = __SMLAD(input1, input2, sum); + + /* Decrement the loop counter */ + k--; + } + + /* If the count is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + k = count % 0x4U; + + while (k > 0U) + { + /* Perform the multiply-accumulates */ + sum += ((q15_t) * px++ * *py++); + + /* Decrement the loop counter */ + k--; + } + + /* Store the result in the accumulator in the destination buffer. */ + *pOut = (q7_t) (__SSAT(sum >> 7, 8)); + /* Destination pointer is updated according to the address modifier, inc */ + pOut += inc; + + /* Update the inputA and inputB pointers for next MAC calculation */ + px = ++pSrc1; + py = pIn2; + + /* Decrement the MAC count */ + count--; + + /* Decrement the loop counter */ + blockSize3--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + q7_t *pIn1 = pSrcA; /* inputA pointer */ + q7_t *pIn2 = pSrcB + (srcBLen - 1U); /* inputB pointer */ + q31_t sum; /* Accumulator */ + uint32_t i = 0U, j; /* loop counters */ + uint32_t inv = 0U; /* Reverse order flag */ + uint32_t tot = 0U; /* Length */ + + /* The algorithm implementation is based on the lengths of the inputs. */ + /* srcB is always made to slide across srcA. */ + /* So srcBLen is always considered as shorter or equal to srcALen */ + /* But CORR(x, y) is reverse of CORR(y, x) */ + /* So, when srcBLen > srcALen, output pointer is made to point to the end of the output buffer */ + /* and a varaible, inv is set to 1 */ + /* If lengths are not equal then zero pad has to be done to make the two + * inputs of same length. But to improve the performance, we include zeroes + * in the output instead of zero padding either of the the inputs*/ + /* If srcALen > srcBLen, (srcALen - srcBLen) zeroes has to included in the + * starting of the output buffer */ + /* If srcALen < srcBLen, (srcALen - srcBLen) zeroes has to included in the + * ending of the output buffer */ + /* Once the zero padding is done the remaining of the output is calcualted + * using convolution but with the shorter signal time shifted. */ + + /* Calculate the length of the remaining sequence */ + tot = ((srcALen + srcBLen) - 2U); + + if (srcALen > srcBLen) + { + /* Calculating the number of zeros to be padded to the output */ + j = srcALen - srcBLen; + + /* Initialise the pointer after zero padding */ + pDst += j; + } + + else if (srcALen < srcBLen) + { + /* Initialization to inputB pointer */ + pIn1 = pSrcB; + + /* Initialization to the end of inputA pointer */ + pIn2 = pSrcA + (srcALen - 1U); + + /* Initialisation of the pointer after zero padding */ + pDst = pDst + tot; + + /* Swapping the lengths */ + j = srcALen; + srcALen = srcBLen; + srcBLen = j; + + /* Setting the reverse flag */ + inv = 1; + + } + + /* Loop to calculate convolution for output length number of times */ + for (i = 0U; i <= tot; i++) + { + /* Initialize sum with zero to carry on MAC operations */ + sum = 0; + + /* Loop to perform MAC operations according to convolution equation */ + for (j = 0U; j <= i; j++) + { + /* Check the array limitations */ + if ((((i - j) < srcBLen) && (j < srcALen))) + { + /* z[i] += x[i-j] * y[j] */ + sum += ((q15_t) pIn1[j] * pIn2[-((int32_t) i - j)]); + } + } + /* Store the output in the destination buffer */ + if (inv == 1) + *pDst-- = (q7_t) __SSAT((sum >> 7U), 8U); + else + *pDst++ = (q7_t) __SSAT((sum >> 7U), 8U); + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of Corr group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c new file mode 100644 index 0000000..fd8e237 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_f32.c @@ -0,0 +1,512 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_decimate_f32.c + * Description: FIR decimation for floating-point sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup FIR_decimate Finite Impulse Response (FIR) Decimator + * + * These functions combine an FIR filter together with a decimator. + * They are used in multirate systems for reducing the sample rate of a signal without introducing aliasing distortion. + * Conceptually, the functions are equivalent to the block diagram below: + * \image html FIRDecimator.gif "Components included in the FIR Decimator functions" + * When decimating by a factor of M, the signal should be prefiltered by a lowpass filter with a normalized + * cutoff frequency of 1/M in order to prevent aliasing distortion. + * The user of the function is responsible for providing the filter coefficients. + * + * The FIR decimator functions provided in the CMSIS DSP Library combine the FIR filter and the decimator in an efficient manner. + * Instead of calculating all of the FIR filter outputs and discarding M-1 out of every M, only the + * samples output by the decimator are computed. + * The functions operate on blocks of input and output data. + * pSrc points to an array of blockSize input values and + * pDst points to an array of blockSize/M output values. + * In order to have an integer number of output samples blockSize + * must always be a multiple of the decimation factor M. + * + * The library provides separate functions for Q15, Q31 and floating-point data types. + * + * \par Algorithm: + * The FIR portion of the algorithm uses the standard form filter: + *
+ *    y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]
+ * 
+ * where, b[n] are the filter coefficients. + * \par + * The pCoeffs points to a coefficient array of size numTaps. + * Coefficients are stored in time reversed order. + * \par + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * \par + * pState points to a state array of size numTaps + blockSize - 1. + * Samples in the state buffer are stored in the order: + * \par + *
+ *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}
+ * 
+ * The state variables are updated after each block of data is processed, the coefficients are untouched. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable array should be allocated separately. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * - Checks to make sure that the size of the input is a multiple of the decimation factor. + * To do this manually without calling the init function, assign the follow subfields of the instance structure: + * numTaps, pCoeffs, M (decimation factor), pState. Also set all of the values in pState to zero. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * The code below statically initializes each of the 3 different data type filter instance structures + *
+ *arm_fir_decimate_instance_f32 S = {M, numTaps, pCoeffs, pState};
+ *arm_fir_decimate_instance_q31 S = {M, numTaps, pCoeffs, pState};
+ *arm_fir_decimate_instance_q15 S = {M, numTaps, pCoeffs, pState};
+ * 
+ * where M is the decimation factor; numTaps is the number of filter coefficients in the filter; + * pCoeffs is the address of the coefficient buffer; + * pState is the address of the state buffer. + * Be sure to set the values in the state buffer to zeros when doing static initialization. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the FIR decimate filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + + /** + * @brief Processing function for the floating-point FIR decimator. + * @param[in] *S points to an instance of the floating-point FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + +void arm_fir_decimate_f32( + const arm_fir_decimate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + float32_t sum0; /* Accumulator */ + float32_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + +#if defined (ARM_MATH_DSP) + + uint32_t blkCntN4; + float32_t *px0, *px1, *px2, *px3; + float32_t acc0, acc1, acc2, acc3; + float32_t x1, x2, x3; + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize / 4; + blkCntN4 = outBlockSize - (4 * blkCnt); + + while (blkCnt > 0U) + { + /* Copy 4 * decimation factor number of new input samples into the state buffer */ + i = 4 * S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulators to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + + /* Initialize state pointer for all the samples */ + px0 = pState; + px1 = pState + S->M; + px2 = pState + 2 * S->M; + px3 = pState + 3 * S->M; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + + while (tapCnt > 0U) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-1] sample for acc0 */ + x0 = *(px0++); + /* Read x[n-numTaps-1] sample for acc1 */ + x1 = *(px1++); + /* Read x[n-numTaps-1] sample for acc2 */ + x2 = *(px2++); + /* Read x[n-numTaps-1] sample for acc3 */ + x3 = *(px3++); + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + acc2 += x2 * c0; + acc3 += x3 * c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-2] sample for acc0, acc1, acc2, acc3 */ + x0 = *(px0++); + x1 = *(px1++); + x2 = *(px2++); + x3 = *(px3++); + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + acc2 += x2 * c0; + acc3 += x3 * c0; + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample acc0, acc1, acc2, acc3 */ + x0 = *(px0++); + x1 = *(px1++); + x2 = *(px2++); + x3 = *(px3++); + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + acc2 += x2 * c0; + acc3 += x3 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample acc0, acc1, acc2, acc3 */ + x0 = *(px0++); + x1 = *(px1++); + x2 = *(px2++); + x3 = *(px3++); + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + acc2 += x2 * c0; + acc3 += x3 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch state variables for acc0, acc1, acc2, acc3 */ + x0 = *(px0++); + x1 = *(px1++); + x2 = *(px2++); + x3 = *(px3++); + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + acc2 += x2 * c0; + acc3 += x3 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + 4 * S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = acc0; + *pDst++ = acc1; + *pDst++ = acc2; + *pDst++ = acc3; + + /* Decrement the loop counter */ + blkCnt--; + } + + while (blkCntN4 > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + sum0 = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-1] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-2] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = sum0; + + /* Decrement the loop counter */ + blkCntN4--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1U) >> 2; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1U) % 0x04U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + sum0 = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = sum0; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy numTaps number of values */ + i = (numTaps - 1U); + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c new file mode 100644 index 0000000..684640e --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c @@ -0,0 +1,586 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_decimate_fast_q15.c + * Description: Fast Q15 FIR Decimator + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, state buffers should be aligned by 32-bit + * + * Scaling and Overflow Behavior: + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around and distorts the result. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (log2 is read as log to the base 2). + * The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result. + * + * \par + * Refer to the function arm_fir_decimate_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. + * Both the slow and the fast versions use the same instance structure. + * Use the function arm_fir_decimate_init_q15() to initialize the filter structure. + */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + +void arm_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px; /* Temporary pointer for state buffer */ + q15_t *pb; /* Temporary pointer coefficient buffer */ + q31_t x0, x1, c0, c1; /* Temporary variables to hold state and coefficient values */ + q31_t sum0; /* Accumulators */ + q31_t acc0, acc1; + q15_t *px0, *px1; + uint32_t blkCntN3; + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize / 2; + blkCntN3 = outBlockSize - (2 * blkCnt); + + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = 2 * S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + acc0 = 0; + acc1 = 0; + + /* Initialize state pointer */ + px0 = pState; + + px1 = pState + S->M; + + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the Read b[numTaps-1] and b[numTaps-2] coefficients */ + c0 = *__SIMD32(pb)++; + + /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */ + x0 = *__SIMD32(px0)++; + + x1 = *__SIMD32(px1)++; + + /* Perform the multiply-accumulate */ + acc0 = __SMLAD(x0, c0, acc0); + + acc1 = __SMLAD(x1, c0, acc1); + + /* Read the b[numTaps-3] and b[numTaps-4] coefficient */ + c0 = *__SIMD32(pb)++; + + /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */ + x0 = *__SIMD32(px0)++; + + x1 = *__SIMD32(px1)++; + + /* Perform the multiply-accumulate */ + acc0 = __SMLAD(x0, c0, acc0); + + acc1 = __SMLAD(x1, c0, acc1); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px0++; + + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 = __SMLAD(x0, c0, acc0); + acc1 = __SMLAD(x1, c0, acc1); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M * 2; + + /* Store filter output, smlad returns the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16)); + + /* Decrement the loop counter */ + blkCnt--; + } + + + + while (blkCntN3 > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /*Set sum to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the Read b[numTaps-1] and b[numTaps-2] coefficients */ + c0 = *__SIMD32(pb)++; + + /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */ + x0 = *__SIMD32(px)++; + + /* Read the b[numTaps-3] and b[numTaps-4] coefficient */ + c1 = *__SIMD32(pb)++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLAD(x0, c0, sum0); + + /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */ + x0 = *__SIMD32(px)++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLAD(x0, c1, sum0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLAD(x0, c0, sum0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* Store filter output, smlad returns the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); + + /* Decrement the loop counter */ + blkCntN3--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1U) >> 2U; + + /* copy data */ + while (i > 0U) + { + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1U) % 0x04U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + +#else + + +void arm_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px; /* Temporary pointer for state buffer */ + q15_t *pb; /* Temporary pointer coefficient buffer */ + q15_t x0, x1, c0; /* Temporary variables to hold state and coefficient values */ + q31_t sum0; /* Accumulators */ + q31_t acc0, acc1; + q15_t *px0, *px1; + uint32_t blkCntN3; + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize / 2; + blkCntN3 = outBlockSize - (2 * blkCnt); + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = 2 * S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + acc0 = 0; + acc1 = 0; + + /* Initialize state pointer */ + px0 = pState; + + px1 = pState + S->M; + + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the Read b[numTaps-1] coefficients */ + c0 = *pb++; + + /* Read x[n-numTaps-1] for sample 0 and for sample 1 */ + x0 = *px0++; + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *pb++; + + /* Read x[n-numTaps-2] for sample 0 and sample 1 */ + x0 = *px0++; + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + + /* Read the b[numTaps-3] coefficients */ + c0 = *pb++; + + /* Read x[n-numTaps-3] for sample 0 and sample 1 */ + x0 = *px0++; + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *pb++; + + /* Read x[n-numTaps-4] for sample 0 and sample 1 */ + x0 = *px0++; + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px0++; + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M * 2; + + /* Store filter output, smlad returns the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + + *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16)); + + + /* Decrement the loop counter */ + blkCnt--; + } + + while (blkCntN3 > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /*Set sum to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the Read b[numTaps-1] coefficients */ + c0 = *pb++; + + /* Read x[n-numTaps-1] and sample */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *pb++; + + /* Read x[n-numTaps-2] and sample */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-3] coefficients */ + c0 = *pb++; + + /* Read x[n-numTaps-3] sample */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *pb++; + + /* Read x[n-numTaps-4] sample */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* Store filter output, smlad returns the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); + + /* Decrement the loop counter */ + blkCntN3--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1U) >> 2U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1U) % 0x04U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + +/** + * @} end of FIR_decimate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c new file mode 100644 index 0000000..46b7d3d --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c @@ -0,0 +1,339 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_decimate_fast_q31.c + * Description: Fast Q31 FIR Decimator + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + * + * Scaling and Overflow Behavior: + * + * \par + * This function is optimized for speed at the expense of fixed-point precision and overflow protection. + * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. + * These intermediate results are added to a 2.30 accumulator. + * Finally, the accumulator is saturated and converted to a 1.31 result. + * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2). + * + * \par + * Refer to the function arm_fir_decimate_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. + * Both the slow and the fast versions use the same instance structure. + * Use the function arm_fir_decimate_init_q31() to initialize the filter structure. + */ + +void arm_fir_decimate_fast_q31( + arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q31_t *px; /* Temporary pointers for state buffer */ + q31_t *pb; /* Temporary pointers for coefficient buffer */ + q31_t sum0; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + uint32_t blkCntN2; + q31_t x1; + q31_t acc0, acc1; + q31_t *px0, *px1; + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + /* Total number of output samples to be computed */ + + blkCnt = outBlockSize / 2; + blkCntN2 = outBlockSize - (2 * blkCnt); + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = 2 * S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + acc0 = 0; + acc1 = 0; + + /* Initialize state pointer */ + px0 = pState; + px1 = pState + S->M; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb); + + /* Read x[n-numTaps-1] for sample 0 sample 1 */ + x0 = *(px0); + x1 = *(px1); + + /* Perform the multiply-accumulate */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb + 1U); + + /* Read x[n-numTaps-2] for sample 0 sample 1 */ + x0 = *(px0 + 1U); + x1 = *(px1 + 1U); + + /* Perform the multiply-accumulate */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb + 2U); + + /* Read x[n-numTaps-3] for sample 0 sample 1 */ + x0 = *(px0 + 2U); + x1 = *(px1 + 2U); + pb += 4U; + + /* Perform the multiply-accumulate */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb - 1U); + + /* Read x[n-numTaps-4] for sample 0 sample 1 */ + x0 = *(px0 + 3U); + x1 = *(px1 + 3U); + + + /* Perform the multiply-accumulate */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* update state pointers */ + px0 += 4U; + px1 += 4U; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x0 = *(px0++); + x1 = *(px1++); + + /* Perform the multiply-accumulate */ + acc0 = (q31_t) ((((q63_t) acc0 << 32) + ((q63_t) x0 * c0)) >> 32); + acc1 = (q31_t) ((((q63_t) acc1 << 32) + ((q63_t) x1 * c0)) >> 32); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M * 2; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (acc0 << 1); + *pDst++ = (q31_t) (acc1 << 1); + + /* Decrement the loop counter */ + blkCnt--; + } + + while (blkCntN2 > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-1] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-2] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 = (q31_t) ((((q63_t) sum0 << 32) + ((q63_t) x0 * c0)) >> 32); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum0 << 1); + + /* Decrement the loop counter */ + blkCntN2--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1U) >> 2U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1U) % 0x04U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + +/** + * @} end of FIR_decimate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c new file mode 100644 index 0000000..45797dc --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_f32.c @@ -0,0 +1,105 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_decimate_init_f32.c + * Description: Floating-point FIR Decimator initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Initialization function for the floating-point FIR decimator. + * @param[in,out] *S points to an instance of the floating-point FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples passed to arm_fir_decimate_f32(). + * M is the decimation factor. + */ + +arm_status arm_fir_decimate_init_f32( + arm_fir_decimate_instance_f32 * S, + uint16_t numTaps, + uint8_t M, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize) +{ + arm_status status; + + /* The size of the input block must be a multiple of the decimation factor */ + if ((blockSize % M) != 0U) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Decimation Factor */ + S->M = M; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c new file mode 100644 index 0000000..7314711 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q15.c @@ -0,0 +1,107 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_decimate_init_q15.c + * Description: Initialization function for the Q15 FIR Decimator + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Initialization function for the Q15 FIR decimator. + * @param[in,out] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples + * to the call arm_fir_decimate_q15(). + * M is the decimation factor. + */ + +arm_status arm_fir_decimate_init_q15( + arm_fir_decimate_instance_q15 * S, + uint16_t numTaps, + uint8_t M, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize) +{ + + arm_status status; + + /* The size of the input block must be a multiple of the decimation factor */ + if ((blockSize % M) != 0U) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear the state buffer. The size of buffer is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Decimation factor */ + S->M = M; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c new file mode 100644 index 0000000..f6f3fb2 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_init_q31.c @@ -0,0 +1,105 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_decimate_init_q31.c + * Description: Initialization function for Q31 FIR Decimation filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Initialization function for the Q31 FIR decimator. + * @param[in,out] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] *pCoeffs points to the filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 words where blockSize is the number of input samples passed to arm_fir_decimate_q31(). + * M is the decimation factor. + */ + +arm_status arm_fir_decimate_init_q31( + arm_fir_decimate_instance_q31 * S, + uint16_t numTaps, + uint8_t M, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize) +{ + arm_status status; + + /* The size of the input block must be a multiple of the decimation factor */ + if ((blockSize % M) != 0U) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1)) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Decimation factor */ + S->M = M; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c new file mode 100644 index 0000000..56f12fb --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q15.c @@ -0,0 +1,684 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_decimate_q15.c + * Description: Q15 FIR Decimator + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Processing function for the Q15 FIR decimator. + * @param[in] *S points to an instance of the Q15 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the location where the output result is written. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + * + * \par + * Refer to the function arm_fir_decimate_fast_q15() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +#if defined (ARM_MATH_DSP) + +#ifndef UNALIGNED_SUPPORT_DISABLE + +void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px; /* Temporary pointer for state buffer */ + q15_t *pb; /* Temporary pointer coefficient buffer */ + q31_t x0, x1, c0, c1; /* Temporary variables to hold state and coefficient values */ + q63_t sum0; /* Accumulators */ + q63_t acc0, acc1; + q15_t *px0, *px1; + uint32_t blkCntN3; + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize / 2; + blkCntN3 = outBlockSize - (2 * blkCnt); + + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = 2 * S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + acc0 = 0; + acc1 = 0; + + /* Initialize state pointer */ + px0 = pState; + + px1 = pState + S->M; + + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the Read b[numTaps-1] and b[numTaps-2] coefficients */ + c0 = *__SIMD32(pb)++; + + /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */ + x0 = *__SIMD32(px0)++; + + x1 = *__SIMD32(px1)++; + + /* Perform the multiply-accumulate */ + acc0 = __SMLALD(x0, c0, acc0); + + acc1 = __SMLALD(x1, c0, acc1); + + /* Read the b[numTaps-3] and b[numTaps-4] coefficient */ + c0 = *__SIMD32(pb)++; + + /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */ + x0 = *__SIMD32(px0)++; + + x1 = *__SIMD32(px1)++; + + /* Perform the multiply-accumulate */ + acc0 = __SMLALD(x0, c0, acc0); + + acc1 = __SMLALD(x1, c0, acc1); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px0++; + + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 = __SMLALD(x0, c0, acc0); + acc1 = __SMLALD(x1, c0, acc1); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M * 2; + + /* Store filter output, smlad returns the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16)); + + /* Decrement the loop counter */ + blkCnt--; + } + + + + while (blkCntN3 > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /*Set sum to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the Read b[numTaps-1] and b[numTaps-2] coefficients */ + c0 = *__SIMD32(pb)++; + + /* Read x[n-numTaps-1] and x[n-numTaps-2]sample */ + x0 = *__SIMD32(px)++; + + /* Read the b[numTaps-3] and b[numTaps-4] coefficient */ + c1 = *__SIMD32(pb)++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLALD(x0, c0, sum0); + + /* Read x[n-numTaps-2] and x[n-numTaps-3] sample */ + x0 = *__SIMD32(px)++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLALD(x0, c1, sum0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 = __SMLALD(x0, c0, sum0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* Store filter output, smlad returns the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); + + /* Decrement the loop counter */ + blkCntN3--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1U) >> 2U; + + /* copy data */ + while (i > 0U) + { + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1U) % 0x04U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + +#else + + +void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px; /* Temporary pointer for state buffer */ + q15_t *pb; /* Temporary pointer coefficient buffer */ + q15_t x0, x1, c0; /* Temporary variables to hold state and coefficient values */ + q63_t sum0; /* Accumulators */ + q63_t acc0, acc1; + q15_t *px0, *px1; + uint32_t blkCntN3; + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize / 2; + blkCntN3 = outBlockSize - (2 * blkCnt); + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = 2 * S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + acc0 = 0; + acc1 = 0; + + /* Initialize state pointer */ + px0 = pState; + + px1 = pState + S->M; + + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the Read b[numTaps-1] coefficients */ + c0 = *pb++; + + /* Read x[n-numTaps-1] for sample 0 and for sample 1 */ + x0 = *px0++; + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *pb++; + + /* Read x[n-numTaps-2] for sample 0 and sample 1 */ + x0 = *px0++; + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + + /* Read the b[numTaps-3] coefficients */ + c0 = *pb++; + + /* Read x[n-numTaps-3] for sample 0 and sample 1 */ + x0 = *px0++; + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *pb++; + + /* Read x[n-numTaps-4] for sample 0 and sample 1 */ + x0 = *px0++; + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px0++; + x1 = *px1++; + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M * 2; + + /* Store filter output, smlad returns the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + + *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + *pDst++ = (q15_t) (__SSAT((acc1 >> 15), 16)); + + /* Decrement the loop counter */ + blkCnt--; + } + + while (blkCntN3 > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /*Set sum to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the Read b[numTaps-1] coefficients */ + c0 = *pb++; + + /* Read x[n-numTaps-1] and sample */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *pb++; + + /* Read x[n-numTaps-2] and sample */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-3] coefficients */ + c0 = *pb++; + + /* Read x[n-numTaps-3] sample */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *pb++; + + /* Read x[n-numTaps-4] sample */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* Store filter output, smlad returns the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); + + /* Decrement the loop counter */ + blkCntN3--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1U) >> 2U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1U) % 0x04U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + +#else + + +void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px; /* Temporary pointer for state buffer */ + q15_t *pb; /* Temporary pointer coefficient buffer */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q63_t sum0; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, blkCnt, tapCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + + + +/* Run the below code for Cortex-M0 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /*Set sum to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += (q31_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /*Store filter output , smlad will return the values in 2.14 format */ + /* so downsacle by 15 to get output in 1.15 */ + *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = numTaps - 1U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + + +} +#endif /* #if defined (ARM_MATH_DSP) */ + + +/** + * @} end of FIR_decimate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c new file mode 100644 index 0000000..6a13cb5 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_decimate_q31.c @@ -0,0 +1,299 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_decimate_q31.c + * Description: Q31 FIR Decimator + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_decimate + * @{ + */ + +/** + * @brief Processing function for the Q31 FIR decimator. + * @param[in] *S points to an instance of the Q31 FIR decimator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + * @return none + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits (where log2 is read as log to the base 2). + * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + * + * \par + * Refer to the function arm_fir_decimate_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + */ + +void arm_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + q31_t *px; /* Temporary pointers for state buffer */ + q31_t *pb; /* Temporary pointers for coefficient buffer */ + q63_t sum0; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Number of taps */ + uint32_t i, tapCnt, blkCnt, outBlockSize = blockSize / S->M; /* Loop counters */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + while (tapCnt > 0U) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-1] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-2] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum0 >> 31); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (numTaps - 1U) >> 2U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + + i = (numTaps - 1U) % 0x04U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + /* Total number of output samples to be computed */ + blkCnt = outBlockSize; + + while (blkCnt > 0U) + { + /* Copy decimation factor number of new input samples into the state buffer */ + i = S->M; + + do + { + *pStateCurnt++ = *pSrc++; + + } while (--i); + + /* Set accumulator to zero */ + sum0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = pCoeffs; + + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *pb++; + + /* Fetch 1 state variable */ + x0 = *px++; + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by the decimation factor + * to process the next group of decimation factor number samples */ + pState = pState + S->M; + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum0 >> 31); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = numTaps - 1U; + + /* copy data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR_decimate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c new file mode 100644 index 0000000..812f9df --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_f32.c @@ -0,0 +1,985 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_f32.c + * Description: Floating-point FIR filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** +* @ingroup groupFilters +*/ + +/** +* @defgroup FIR Finite Impulse Response (FIR) Filters +* +* This set of functions implements Finite Impulse Response (FIR) filters +* for Q7, Q15, Q31, and floating-point data types. Fast versions of Q15 and Q31 are also provided. +* The functions operate on blocks of input and output data and each call to the function processes +* blockSize samples through the filter. pSrc and +* pDst points to input and output arrays containing blockSize values. +* +* \par Algorithm: +* The FIR filter algorithm is based upon a sequence of multiply-accumulate (MAC) operations. +* Each filter coefficient b[n] is multiplied by a state variable which equals a previous input sample x[n]. +*
+*    y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]
+* 
+* \par +* \image html FIR.gif "Finite Impulse Response filter" +* \par +* pCoeffs points to a coefficient array of size numTaps. +* Coefficients are stored in time reversed order. +* \par +*
+*    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+* 
+* \par +* pState points to a state array of size numTaps + blockSize - 1. +* Samples in the state buffer are stored in the following order. +* \par +*
+*    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}
+* 
+* \par +* Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1. +* The increased state buffer length allows circular addressing, which is traditionally used in the FIR filters, +* to be avoided and yields a significant speed improvement. +* The state variables are updated after each block of data is processed; the coefficients are untouched. +* \par Instance Structure +* The coefficients and state variables for a filter are stored together in an instance data structure. +* A separate instance structure must be defined for each filter. +* Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. +* There are separate instance structure declarations for each of the 4 supported data types. +* +* \par Initialization Functions +* There is also an associated initialization function for each data type. +* The initialization function performs the following operations: +* - Sets the values of the internal structure fields. +* - Zeros out the values in the state buffer. +* To do this manually without calling the init function, assign the follow subfields of the instance structure: +* numTaps, pCoeffs, pState. Also set all of the values in pState to zero. +* +* \par +* Use of the initialization function is optional. +* However, if the initialization function is used, then the instance structure cannot be placed into a const data section. +* To place an instance structure into a const data section, the instance structure must be manually initialized. +* Set the values in the state buffer to zeros before static initialization. +* The code below statically initializes each of the 4 different data type filter instance structures +*
+*arm_fir_instance_f32 S = {numTaps, pState, pCoeffs};
+*arm_fir_instance_q31 S = {numTaps, pState, pCoeffs};
+*arm_fir_instance_q15 S = {numTaps, pState, pCoeffs};
+*arm_fir_instance_q7 S =  {numTaps, pState, pCoeffs};
+* 
+* +* where numTaps is the number of filter coefficients in the filter; pState is the address of the state buffer; +* pCoeffs is the address of the coefficient buffer. +* +* \par Fixed-Point Behavior +* Care must be taken when using the fixed-point versions of the FIR filter functions. +* In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. +* Refer to the function specific documentation below for usage guidelines. +*/ + +/** +* @addtogroup FIR +* @{ +*/ + +/** +* +* @param[in] *S points to an instance of the floating-point FIR filter structure. +* @param[in] *pSrc points to the block of input data. +* @param[out] *pDst points to the block of output data. +* @param[in] blockSize number of samples to process per call. +* @return none. +* +*/ + +#if defined(ARM_MATH_CM7) + +void arm_fir_f32( +const arm_fir_instance_f32 * S, +float32_t * pSrc, +float32_t * pDst, +uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + float32_t acc0, acc1, acc2, acc3, acc4, acc5, acc6, acc7; /* Accumulators */ + float32_t x0, x1, x2, x3, x4, x5, x6, x7, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Apply loop unrolling and compute 8 output values simultaneously. + * The variables acc0 ... acc7 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize >> 3; + + /* First part of the processing with loop unrolling. Compute 8 outputs at a time. + ** a second loop below computes the remaining 1 to 7 samples. */ + while (blkCnt > 0U) + { + /* Copy four new input samples into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Set all accumulators to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + acc4 = 0.0f; + acc5 = 0.0f; + acc6 = 0.0f; + acc7 = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* This is separated from the others to avoid + * a call to __aeabi_memmove which would be slower + */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Read the first seven samples from the state buffer: x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ + x0 = *px++; + x1 = *px++; + x2 = *px++; + x3 = *px++; + x4 = *px++; + x5 = *px++; + x6 = *px++; + + /* Loop unrolling. Process 8 taps at a time. */ + tapCnt = numTaps >> 3U; + + /* Loop over the number of taps. Unroll by a factor of 8. + ** Repeat until we've computed numTaps-8 coefficients. */ + while (tapCnt > 0U) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x7 = *(px++); + + /* acc0 += b[numTaps-1] * x[n-numTaps] */ + acc0 += x0 * c0; + + /* acc1 += b[numTaps-1] * x[n-numTaps-1] */ + acc1 += x1 * c0; + + /* acc2 += b[numTaps-1] * x[n-numTaps-2] */ + acc2 += x2 * c0; + + /* acc3 += b[numTaps-1] * x[n-numTaps-3] */ + acc3 += x3 * c0; + + /* acc4 += b[numTaps-1] * x[n-numTaps-4] */ + acc4 += x4 * c0; + + /* acc1 += b[numTaps-1] * x[n-numTaps-5] */ + acc5 += x5 * c0; + + /* acc2 += b[numTaps-1] * x[n-numTaps-6] */ + acc6 += x6 * c0; + + /* acc3 += b[numTaps-1] * x[n-numTaps-7] */ + acc7 += x7 * c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + /* Perform the multiply-accumulate */ + acc0 += x1 * c0; + acc1 += x2 * c0; + acc2 += x3 * c0; + acc3 += x4 * c0; + acc4 += x5 * c0; + acc5 += x6 * c0; + acc6 += x7 * c0; + acc7 += x0 * c0; + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-5] sample */ + x1 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += x2 * c0; + acc1 += x3 * c0; + acc2 += x4 * c0; + acc3 += x5 * c0; + acc4 += x6 * c0; + acc5 += x7 * c0; + acc6 += x0 * c0; + acc7 += x1 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += x3 * c0; + acc1 += x4 * c0; + acc2 += x5 * c0; + acc3 += x6 * c0; + acc4 += x7 * c0; + acc5 += x0 * c0; + acc6 += x1 * c0; + acc7 += x2 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x3 = *(px++); + /* Perform the multiply-accumulates */ + acc0 += x4 * c0; + acc1 += x5 * c0; + acc2 += x6 * c0; + acc3 += x7 * c0; + acc4 += x0 * c0; + acc5 += x1 * c0; + acc6 += x2 * c0; + acc7 += x3 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x4 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += x5 * c0; + acc1 += x6 * c0; + acc2 += x7 * c0; + acc3 += x0 * c0; + acc4 += x1 * c0; + acc5 += x2 * c0; + acc6 += x3 * c0; + acc7 += x4 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x5 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += x6 * c0; + acc1 += x7 * c0; + acc2 += x0 * c0; + acc3 += x1 * c0; + acc4 += x2 * c0; + acc5 += x3 * c0; + acc6 += x4 * c0; + acc7 += x5 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x6 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += x7 * c0; + acc1 += x0 * c0; + acc2 += x1 * c0; + acc3 += x2 * c0; + acc4 += x3 * c0; + acc5 += x4 * c0; + acc6 += x5 * c0; + acc7 += x6 * c0; + + tapCnt--; + } + + /* If the filter length is not a multiple of 8, compute the remaining filter taps */ + tapCnt = numTaps % 0x8U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x7 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += x0 * c0; + acc1 += x1 * c0; + acc2 += x2 * c0; + acc3 += x3 * c0; + acc4 += x4 * c0; + acc5 += x5 * c0; + acc6 += x6 * c0; + acc7 += x7 * c0; + + /* Reuse the present sample states for next sample */ + x0 = x1; + x1 = x2; + x2 = x3; + x3 = x4; + x4 = x5; + x5 = x6; + x6 = x7; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by 8 to process the next group of 8 samples */ + pState = pState + 8; + + /* The results in the 8 accumulators, store in the destination buffer. */ + *pDst++ = acc0; + *pDst++ = acc1; + *pDst++ = acc2; + *pDst++ = acc3; + *pDst++ = acc4; + *pDst++ = acc5; + *pDst++ = acc6; + *pDst++ = acc7; + + blkCnt--; + } + + /* If the blockSize is not a multiple of 8, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x8U; + + while (blkCnt > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = (pCoeffs); + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + acc0 += *px++ * *pb++; + i--; + + } while (i > 0U); + + /* The result is store in the destination buffer. */ + *pDst++ = acc0; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (numTaps - 1U) >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +#elif defined(ARM_MATH_CM0_FAMILY) + +void arm_fir_f32( +const arm_fir_instance_f32 * S, +float32_t * pSrc, +float32_t * pDst, +uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + + /* Run the below code for Cortex-M0 */ + + float32_t acc; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Initialize blkCnt with blockSize */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = pCoeffs; + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ + acc += *px++ * *pb++; + i--; + + } while (i > 0U); + + /* The result is store in the destination buffer. */ + *pDst++ = acc; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the starting of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy numTaps number of values */ + tapCnt = numTaps - 1U; + + /* Copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +} + +#else + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + +void arm_fir_f32( +const arm_fir_instance_f32 * S, +float32_t * pSrc, +float32_t * pDst, +uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + float32_t acc0, acc1, acc2, acc3, acc4, acc5, acc6, acc7; /* Accumulators */ + float32_t x0, x1, x2, x3, x4, x5, x6, x7, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + float32_t p0,p1,p2,p3,p4,p5,p6,p7; /* Temporary product values */ + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Apply loop unrolling and compute 8 output values simultaneously. + * The variables acc0 ... acc7 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize >> 3; + + /* First part of the processing with loop unrolling. Compute 8 outputs at a time. + ** a second loop below computes the remaining 1 to 7 samples. */ + while (blkCnt > 0U) + { + /* Copy four new input samples into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Set all accumulators to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + acc4 = 0.0f; + acc5 = 0.0f; + acc6 = 0.0f; + acc7 = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* This is separated from the others to avoid + * a call to __aeabi_memmove which would be slower + */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Read the first seven samples from the state buffer: x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ + x0 = *px++; + x1 = *px++; + x2 = *px++; + x3 = *px++; + x4 = *px++; + x5 = *px++; + x6 = *px++; + + /* Loop unrolling. Process 8 taps at a time. */ + tapCnt = numTaps >> 3U; + + /* Loop over the number of taps. Unroll by a factor of 8. + ** Repeat until we've computed numTaps-8 coefficients. */ + while (tapCnt > 0U) + { + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-3] sample */ + x7 = *(px++); + + /* acc0 += b[numTaps-1] * x[n-numTaps] */ + p0 = x0 * c0; + + /* acc1 += b[numTaps-1] * x[n-numTaps-1] */ + p1 = x1 * c0; + + /* acc2 += b[numTaps-1] * x[n-numTaps-2] */ + p2 = x2 * c0; + + /* acc3 += b[numTaps-1] * x[n-numTaps-3] */ + p3 = x3 * c0; + + /* acc4 += b[numTaps-1] * x[n-numTaps-4] */ + p4 = x4 * c0; + + /* acc1 += b[numTaps-1] * x[n-numTaps-5] */ + p5 = x5 * c0; + + /* acc2 += b[numTaps-1] * x[n-numTaps-6] */ + p6 = x6 * c0; + + /* acc3 += b[numTaps-1] * x[n-numTaps-7] */ + p7 = x7 * c0; + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px++); + + acc0 += p0; + acc1 += p1; + acc2 += p2; + acc3 += p3; + acc4 += p4; + acc5 += p5; + acc6 += p6; + acc7 += p7; + + + /* Perform the multiply-accumulate */ + p0 = x1 * c0; + p1 = x2 * c0; + p2 = x3 * c0; + p3 = x4 * c0; + p4 = x5 * c0; + p5 = x6 * c0; + p6 = x7 * c0; + p7 = x0 * c0; + + /* Read the b[numTaps-3] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-5] sample */ + x1 = *(px++); + + acc0 += p0; + acc1 += p1; + acc2 += p2; + acc3 += p3; + acc4 += p4; + acc5 += p5; + acc6 += p6; + acc7 += p7; + + /* Perform the multiply-accumulates */ + p0 = x2 * c0; + p1 = x3 * c0; + p2 = x4 * c0; + p3 = x5 * c0; + p4 = x6 * c0; + p5 = x7 * c0; + p6 = x0 * c0; + p7 = x1 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x2 = *(px++); + + acc0 += p0; + acc1 += p1; + acc2 += p2; + acc3 += p3; + acc4 += p4; + acc5 += p5; + acc6 += p6; + acc7 += p7; + + /* Perform the multiply-accumulates */ + p0 = x3 * c0; + p1 = x4 * c0; + p2 = x5 * c0; + p3 = x6 * c0; + p4 = x7 * c0; + p5 = x0 * c0; + p6 = x1 * c0; + p7 = x2 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x3 = *(px++); + + acc0 += p0; + acc1 += p1; + acc2 += p2; + acc3 += p3; + acc4 += p4; + acc5 += p5; + acc6 += p6; + acc7 += p7; + + /* Perform the multiply-accumulates */ + p0 = x4 * c0; + p1 = x5 * c0; + p2 = x6 * c0; + p3 = x7 * c0; + p4 = x0 * c0; + p5 = x1 * c0; + p6 = x2 * c0; + p7 = x3 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x4 = *(px++); + + acc0 += p0; + acc1 += p1; + acc2 += p2; + acc3 += p3; + acc4 += p4; + acc5 += p5; + acc6 += p6; + acc7 += p7; + + /* Perform the multiply-accumulates */ + p0 = x5 * c0; + p1 = x6 * c0; + p2 = x7 * c0; + p3 = x0 * c0; + p4 = x1 * c0; + p5 = x2 * c0; + p6 = x3 * c0; + p7 = x4 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x5 = *(px++); + + acc0 += p0; + acc1 += p1; + acc2 += p2; + acc3 += p3; + acc4 += p4; + acc5 += p5; + acc6 += p6; + acc7 += p7; + + /* Perform the multiply-accumulates */ + p0 = x6 * c0; + p1 = x7 * c0; + p2 = x0 * c0; + p3 = x1 * c0; + p4 = x2 * c0; + p5 = x3 * c0; + p6 = x4 * c0; + p7 = x5 * c0; + + /* Read the b[numTaps-4] coefficient */ + c0 = *(pb++); + + /* Read x[n-numTaps-6] sample */ + x6 = *(px++); + + acc0 += p0; + acc1 += p1; + acc2 += p2; + acc3 += p3; + acc4 += p4; + acc5 += p5; + acc6 += p6; + acc7 += p7; + + /* Perform the multiply-accumulates */ + p0 = x7 * c0; + p1 = x0 * c0; + p2 = x1 * c0; + p3 = x2 * c0; + p4 = x3 * c0; + p5 = x4 * c0; + p6 = x5 * c0; + p7 = x6 * c0; + + tapCnt--; + + acc0 += p0; + acc1 += p1; + acc2 += p2; + acc3 += p3; + acc4 += p4; + acc5 += p5; + acc6 += p6; + acc7 += p7; + } + + /* If the filter length is not a multiple of 8, compute the remaining filter taps */ + tapCnt = numTaps % 0x8U; + + while (tapCnt > 0U) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x7 = *(px++); + + /* Perform the multiply-accumulates */ + p0 = x0 * c0; + p1 = x1 * c0; + p2 = x2 * c0; + p3 = x3 * c0; + p4 = x4 * c0; + p5 = x5 * c0; + p6 = x6 * c0; + p7 = x7 * c0; + + /* Reuse the present sample states for next sample */ + x0 = x1; + x1 = x2; + x2 = x3; + x3 = x4; + x4 = x5; + x5 = x6; + x6 = x7; + + acc0 += p0; + acc1 += p1; + acc2 += p2; + acc3 += p3; + acc4 += p4; + acc5 += p5; + acc6 += p6; + acc7 += p7; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance the state pointer by 8 to process the next group of 8 samples */ + pState = pState + 8; + + /* The results in the 8 accumulators, store in the destination buffer. */ + *pDst++ = acc0; + *pDst++ = acc1; + *pDst++ = acc2; + *pDst++ = acc3; + *pDst++ = acc4; + *pDst++ = acc5; + *pDst++ = acc6; + *pDst++ = acc7; + + blkCnt--; + } + + /* If the blockSize is not a multiple of 8, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x8U; + + while (blkCnt > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0.0f; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = (pCoeffs); + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + acc0 += *px++ * *pb++; + i--; + + } while (i > 0U); + + /* The result is store in the destination buffer. */ + *pDst++ = acc0; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (numTaps - 1U) >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +#endif + +/** +* @} end of FIR group +*/ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c new file mode 100644 index 0000000..35e431b --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q15.c @@ -0,0 +1,333 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_fast_q15.c + * Description: Q15 Fast FIR filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @param[in] *S points to an instance of the Q15 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * This fast version uses a 32-bit accumulator with 2.30 format. + * The accumulator maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around and distorts the result. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. + * The 2.30 accumulator is then truncated to 2.15 format and saturated to yield the 1.15 result. + * + * \par + * Refer to the function arm_fir_q15() for a slower implementation of this function which uses 64-bit accumulation to avoid wrap around distortion. Both the slow and the fast versions use the same instance structure. + * Use the function arm_fir_init_q15() to initialize the filter structure. + */ + +void arm_fir_fast_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t acc0, acc1, acc2, acc3; /* Accumulators */ + q15_t *pb; /* Temporary pointer for coefficient buffer */ + q15_t *px; /* Temporary q31 pointer for SIMD state buffer accesses */ + q31_t x0, x1, x2, c0; /* Temporary variables to hold SIMD state and coefficient values */ + uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Copy four new input samples into the state buffer. + ** Use 32-bit SIMD to move the 16-bit data. Only requires two copies. */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Typecast q15_t pointer to q31_t pointer for state reading in q31_t */ + px = pState; + + /* Typecast q15_t pointer to q31_t pointer for coefficient reading in q31_t */ + pb = pCoeffs; + + /* Read the first two samples from the state buffer: x[n-N], x[n-N-1] */ + x0 = *__SIMD32(px)++; + + /* Read the third and forth samples from the state buffer: x[n-N-2], x[n-N-3] */ + x2 = *__SIMD32(px)++; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(numTaps%4) coefficients. */ + tapCnt = numTaps >> 2; + + while (tapCnt > 0) + { + /* Read the first two coefficients using SIMD: b[N] and b[N-1] coefficients */ + c0 = *__SIMD32(pb)++; + + /* acc0 += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ + acc0 = __SMLAD(x0, c0, acc0); + + /* acc2 += b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */ + acc2 = __SMLAD(x2, c0, acc2); + + /* pack x[n-N-1] and x[n-N-2] */ +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(x2, x0, 0); +#else + x1 = __PKHBT(x0, x2, 0); +#endif + + /* Read state x[n-N-4], x[n-N-5] */ + x0 = _SIMD32_OFFSET(px); + + /* acc1 += b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */ + acc1 = __SMLADX(x1, c0, acc1); + + /* pack x[n-N-3] and x[n-N-4] */ +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(x0, x2, 0); +#else + x1 = __PKHBT(x2, x0, 0); +#endif + + /* acc3 += b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */ + acc3 = __SMLADX(x1, c0, acc3); + + /* Read coefficients b[N-2], b[N-3] */ + c0 = *__SIMD32(pb)++; + + /* acc0 += b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */ + acc0 = __SMLAD(x2, c0, acc0); + + /* Read state x[n-N-6], x[n-N-7] with offset */ + x2 = _SIMD32_OFFSET(px + 2U); + + /* acc2 += b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */ + acc2 = __SMLAD(x0, c0, acc2); + + /* acc1 += b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */ + acc1 = __SMLADX(x1, c0, acc1); + + /* pack x[n-N-5] and x[n-N-6] */ +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(x2, x0, 0); +#else + x1 = __PKHBT(x0, x2, 0); +#endif + + /* acc3 += b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */ + acc3 = __SMLADX(x1, c0, acc3); + + /* Update state pointer for next state reading */ + px += 4U; + + /* Decrement tap count */ + tapCnt--; + + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps. + ** This is always be 2 taps since the filter length is even. */ + if ((numTaps & 0x3U) != 0U) + { + + /* Read last two coefficients */ + c0 = *__SIMD32(pb)++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLAD(x0, c0, acc0); + acc2 = __SMLAD(x2, c0, acc2); + + /* pack state variables */ +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(x2, x0, 0); +#else + x1 = __PKHBT(x0, x2, 0); +#endif + + /* Read last state variables */ + x0 = *__SIMD32(px); + + /* Perform the multiply-accumulates */ + acc1 = __SMLADX(x1, c0, acc1); + + /* pack state variables */ +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(x0, x2, 0); +#else + x1 = __PKHBT(x2, x0, 0); +#endif + + /* Perform the multiply-accumulates */ + acc3 = __SMLADX(x1, c0, acc3); + } + + /* The results in the 4 accumulators are in 2.30 format. Convert to 1.15 with saturation. + ** Then store the 4 outputs in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + while (blkCnt > 0U) + { + /* Copy two samples into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Use SIMD to hold states and coefficients */ + px = pState; + pb = pCoeffs; + + tapCnt = numTaps >> 1U; + + do + { + + acc0 += (q31_t) * px++ * *pb++; + acc0 += (q31_t) * px++ * *pb++; + + tapCnt--; + } + while (tapCnt > 0U); + + /* The result is in 2.30 format. Convert to 1.15 with saturation. + ** Then store the output in the destination buffer. */ + *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Calculation of count for copying integer writes */ + tapCnt = (numTaps - 1U) >> 2; + + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + tapCnt--; + + } + + /* Calculation of count for remaining q15_t data */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* copy remaining data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +} + +/** + * @} end of FIR group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c new file mode 100644 index 0000000..bd9c686 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_fast_q31.c @@ -0,0 +1,293 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_fast_q31.c + * Description: Processing function for the Q31 Fast FIR filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @param[in] *S points to an instance of the Q31 structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * + * \par + * This function is optimized for speed at the expense of fixed-point precision and overflow protection. + * The result of each 1.31 x 1.31 multiplication is truncated to 2.30 format. + * These intermediate results are added to a 2.30 accumulator. + * Finally, the accumulator is saturated and converted to a 1.31 result. + * The fast version has the same overflow behavior as the standard version and provides less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. + * + * \par + * Refer to the function arm_fir_q31() for a slower implementation of this function which uses a 64-bit accumulator to provide higher precision. Both the slow and the fast versions use the same instance structure. + * Use the function arm_fir_init_q31() to initialize the filter structure. + */ + +IAR_ONLY_LOW_OPTIMIZATION_ENTER +void arm_fir_fast_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t x0, x1, x2, x3; /* Temporary variables to hold state */ + q31_t c0; /* Temporary variable to hold coefficient value */ + q31_t *px; /* Temporary pointer for state */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + q31_t acc0, acc1, acc2, acc3; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Copy four new input samples into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Read the first three samples from the state buffer: + * x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + i = tapCnt; + + while (i > 0U) + { + /* Read the b[numTaps] coefficient */ + c0 = *pb; + + /* Read x[n-numTaps-3] sample */ + x3 = *px; + + /* acc0 += b[numTaps] * x[n-numTaps] */ + multAcc_32x32_keep32_R(acc0, x0, c0); + + /* acc1 += b[numTaps] * x[n-numTaps-1] */ + multAcc_32x32_keep32_R(acc1, x1, c0); + + /* acc2 += b[numTaps] * x[n-numTaps-2] */ + multAcc_32x32_keep32_R(acc2, x2, c0); + + /* acc3 += b[numTaps] * x[n-numTaps-3] */ + multAcc_32x32_keep32_R(acc3, x3, c0); + + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb + 1U); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px + 1U); + + /* Perform the multiply-accumulates */ + multAcc_32x32_keep32_R(acc0, x1, c0); + multAcc_32x32_keep32_R(acc1, x2, c0); + multAcc_32x32_keep32_R(acc2, x3, c0); + multAcc_32x32_keep32_R(acc3, x0, c0); + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb + 2U); + + /* Read x[n-numTaps-5] sample */ + x1 = *(px + 2U); + + /* Perform the multiply-accumulates */ + multAcc_32x32_keep32_R(acc0, x2, c0); + multAcc_32x32_keep32_R(acc1, x3, c0); + multAcc_32x32_keep32_R(acc2, x0, c0); + multAcc_32x32_keep32_R(acc3, x1, c0); + + /* Read the b[numTaps-3] coefficients */ + c0 = *(pb + 3U); + + /* Read x[n-numTaps-6] sample */ + x2 = *(px + 3U); + + /* Perform the multiply-accumulates */ + multAcc_32x32_keep32_R(acc0, x3, c0); + multAcc_32x32_keep32_R(acc1, x0, c0); + multAcc_32x32_keep32_R(acc2, x1, c0); + multAcc_32x32_keep32_R(acc3, x2, c0); + + /* update coefficient pointer */ + pb += 4U; + px += 4U; + + /* Decrement the loop counter */ + i--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + + i = numTaps - (tapCnt * 4U); + while (i > 0U) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + multAcc_32x32_keep32_R(acc0, x0, c0); + multAcc_32x32_keep32_R(acc1, x1, c0); + multAcc_32x32_keep32_R(acc2, x2, c0); + multAcc_32x32_keep32_R(acc3, x3, c0); + + /* Reuse the present sample states for next sample */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4; + + /* The results in the 4 accumulators are in 2.30 format. Convert to 1.31 + ** Then store the 4 outputs in the destination buffer. */ + *pDst++ = (q31_t) (acc0 << 1); + *pDst++ = (q31_t) (acc1 << 1); + *pDst++ = (q31_t) (acc2 << 1); + *pDst++ = (q31_t) (acc3 << 1); + + /* Decrement the samples loop counter */ + blkCnt--; + } + + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 4U; + + while (blkCnt > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = (pCoeffs); + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + multAcc_32x32_keep32_R(acc0, (*px++), (*(pb++))); + i--; + } while (i > 0U); + + /* The result is in 2.30 format. Convert to 1.31 + ** Then store the output in the destination buffer. */ + *pDst++ = (q31_t) (acc0 << 1); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1U); + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + +} +IAR_ONLY_LOW_OPTIMIZATION_EXIT +/** + * @} end of FIR group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c new file mode 100644 index 0000000..25fcb01 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_f32.c @@ -0,0 +1,84 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_init_f32.c + * Description: Floating-point FIR filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @details + * + * @param[in,out] *S points to an instance of the floating-point FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed per call. + * @return none. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_f32(). + */ + +void arm_fir_init_f32( + arm_fir_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and the size of state buffer is (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c new file mode 100644 index 0000000..a5638d5 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q15.c @@ -0,0 +1,142 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_init_q15.c + * Description: Q15 FIR filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @param[in,out] *S points to an instance of the Q15 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. + * @param[in] *pCoeffs points to the filter coefficients buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize is number of samples processed per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if + * numTaps is not greater than or equal to 4 and even. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * Note that numTaps must be even and greater than or equal to 4. + * To implement an odd length filter simply increase numTaps by 1 and set the last coefficient to zero. + * For example, to implement a filter with numTaps=3 and coefficients + *
+ *     {0.3, -0.8, 0.3}
+ * 
+ * set numTaps=4 and use the coefficients: + *
+ *     {0.3, -0.8, 0.3, 0}.
+ * 
+ * Similarly, to implement a two point filter + *
+ *     {0.3, -0.3}
+ * 
+ * set numTaps=4 and use the coefficients: + *
+ *     {0.3, -0.3, 0, 0}.
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize, when running on Cortex-M4 and Cortex-M3 and is of length numTaps+blockSize-1, when running on Cortex-M0 where blockSize is the number of input samples processed by each call to arm_fir_q15(). + */ + +arm_status arm_fir_init_q15( + arm_fir_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize) +{ + arm_status status; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* The Number of filter coefficients in the filter must be even and at least 4 */ + if (numTaps & 0x1U) + { + status = ARM_MATH_ARGUMENT_ERROR; + } + else + { + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear the state buffer. The size is always (blockSize + numTaps ) */ + memset(pState, 0, (numTaps + (blockSize)) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +#else + + /* Run the below code for Cortex-M0 */ + + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + status = ARM_MATH_SUCCESS; + + return (status); + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c new file mode 100644 index 0000000..2367a65 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q31.c @@ -0,0 +1,84 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_init_q31.c + * Description: Q31 FIR filter initialization function. + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @details + * + * @param[in,out] *S points to an instance of the Q31 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed per call. + * @return none. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_q31(). + */ + +void arm_fir_init_q31( + arm_fir_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and state array size is (blockSize + numTaps - 1) */ + memset(pState, 0, (blockSize + ((uint32_t) numTaps - 1U)) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c new file mode 100644 index 0000000..5a91fb8 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_init_q7.c @@ -0,0 +1,82 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_init_q7.c + * Description: Q7 FIR filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ +/** + * @param[in,out] *S points to an instance of the Q7 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficients buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of samples that are processed per call. + * @return none + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * \par + * pState points to the array of state variables. + * pState is of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_fir_q7(). + */ + +void arm_fir_init_q7( + arm_fir_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + uint32_t blockSize) +{ + + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear the state buffer. The size is always (blockSize + numTaps - 1) */ + memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q7_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c new file mode 100644 index 0000000..5f9d19c --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_f32.c @@ -0,0 +1,569 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_interpolate_f32.c + * Description: Floating-point FIR interpolation sequences + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @defgroup FIR_Interpolate Finite Impulse Response (FIR) Interpolator + * + * These functions combine an upsampler (zero stuffer) and an FIR filter. + * They are used in multirate systems for increasing the sample rate of a signal without introducing high frequency images. + * Conceptually, the functions are equivalent to the block diagram below: + * \image html FIRInterpolator.gif "Components included in the FIR Interpolator functions" + * After upsampling by a factor of L, the signal should be filtered by a lowpass filter with a normalized + * cutoff frequency of 1/L in order to eliminate high frequency copies of the spectrum. + * The user of the function is responsible for providing the filter coefficients. + * + * The FIR interpolator functions provided in the CMSIS DSP Library combine the upsampler and FIR filter in an efficient manner. + * The upsampler inserts L-1 zeros between each sample. + * Instead of multiplying by these zero values, the FIR filter is designed to skip them. + * This leads to an efficient implementation without any wasted effort. + * The functions operate on blocks of input and output data. + * pSrc points to an array of blockSize input values and + * pDst points to an array of blockSize*L output values. + * + * The library provides separate functions for Q15, Q31, and floating-point data types. + * + * \par Algorithm: + * The functions use a polyphase filter structure: + *
+ *    y[n] = b[0] * x[n] + b[L]   * x[n-1] + ... + b[L*(phaseLength-1)] * x[n-phaseLength+1]
+ *    y[n+1] = b[1] * x[n] + b[L+1] * x[n-1] + ... + b[L*(phaseLength-1)+1] * x[n-phaseLength+1]
+ *    ...
+ *    y[n+(L-1)] = b[L-1] * x[n] + b[2*L-1] * x[n-1] + ....+ b[L*(phaseLength-1)+(L-1)] * x[n-phaseLength+1]
+ * 
+ * This approach is more efficient than straightforward upsample-then-filter algorithms. + * With this method the computation is reduced by a factor of 1/L when compared to using a standard FIR filter. + * \par + * pCoeffs points to a coefficient array of size numTaps. + * numTaps must be a multiple of the interpolation factor L and this is checked by the + * initialization functions. + * Internally, the function divides the FIR filter's impulse response into shorter filters of length + * phaseLength=numTaps/L. + * Coefficients are stored in time reversed order. + * \par + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * \par + * pState points to a state array of size blockSize + phaseLength - 1. + * Samples in the state buffer are stored in the order: + * \par + *
+ *    {x[n-phaseLength+1], x[n-phaseLength], x[n-phaseLength-1], x[n-phaseLength-2]....x[0], x[1], ..., x[blockSize-1]}
+ * 
+ * The state variables are updated after each block of data is processed, the coefficients are untouched. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable array should be allocated separately. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * - Checks to make sure that the length of the filter is a multiple of the interpolation factor. + * To do this manually without calling the init function, assign the follow subfields of the instance structure: + * L (interpolation factor), pCoeffs, phaseLength (numTaps / L), pState. Also set all of the values in pState to zero. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * The code below statically initializes each of the 3 different data type filter instance structures + *
+ * arm_fir_interpolate_instance_f32 S = {L, phaseLength, pCoeffs, pState};
+ * arm_fir_interpolate_instance_q31 S = {L, phaseLength, pCoeffs, pState};
+ * arm_fir_interpolate_instance_q15 S = {L, phaseLength, pCoeffs, pState};
+ * 
+ * where L is the interpolation factor; phaseLength=numTaps/L is the + * length of each of the shorter FIR filters used internally, + * pCoeffs is the address of the coefficient buffer; + * pState is the address of the state buffer. + * Be sure to set the values in the state buffer to zeros when doing static initialization. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the FIR interpolate filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + +/** + * @brief Processing function for the floating-point FIR interpolator. + * @param[in] *S points to an instance of the floating-point FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + +void arm_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + float32_t sum0; /* Accumulators */ + float32_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt, j; /* Loop counters */ + uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ + float32_t acc0, acc1, acc2, acc3; + float32_t x1, x2, x3; + uint32_t blkCntN4; + float32_t c1, c2, c3; + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (phaseLen - 1U); + + /* Initialise blkCnt */ + blkCnt = blockSize / 4; + blkCntN4 = blockSize - (4 * blkCnt); + + /* Samples loop unrolled by 4 */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Address modifier index of coefficient buffer */ + j = 1U; + + /* Loop over the Interpolation factor. */ + i = (S->L); + + while (i > 0U) + { + /* Set accumulator to zero */ + acc0 = 0.0f; + acc1 = 0.0f; + acc2 = 0.0f; + acc3 = 0.0f; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (S->L - j); + + /* Loop over the polyPhase length. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ + tapCnt = phaseLen >> 2U; + + x0 = *(ptr1++); + x1 = *(ptr1++); + x2 = *(ptr1++); + + while (tapCnt > 0U) + { + + /* Read the input sample */ + x3 = *(ptr1++); + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + acc2 += x2 * c0; + acc3 += x3 * c0; + + /* Read the coefficient */ + c1 = *(ptr2 + S->L); + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + acc0 += x1 * c1; + acc1 += x2 * c1; + acc2 += x3 * c1; + acc3 += x0 * c1; + + /* Read the coefficient */ + c2 = *(ptr2 + S->L * 2); + + /* Read the input sample */ + x1 = *(ptr1++); + + /* Perform the multiply-accumulate */ + acc0 += x2 * c2; + acc1 += x3 * c2; + acc2 += x0 * c2; + acc3 += x1 * c2; + + /* Read the coefficient */ + c3 = *(ptr2 + S->L * 3); + + /* Read the input sample */ + x2 = *(ptr1++); + + /* Perform the multiply-accumulate */ + acc0 += x3 * c3; + acc1 += x0 * c3; + acc2 += x1 * c3; + acc3 += x2 * c3; + + + /* Upsampling is done by stuffing L-1 zeros between each sample. + * So instead of multiplying zeros with coefficients, + * Increment the coefficient pointer by interpolation factor times. */ + ptr2 += 4 * S->L; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = phaseLen % 0x4U; + + while (tapCnt > 0U) + { + + /* Read the input sample */ + x3 = *(ptr1++); + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Perform the multiply-accumulate */ + acc0 += x0 * c0; + acc1 += x1 * c0; + acc2 += x2 * c0; + acc3 += x3 * c0; + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* update states for next sample processing */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst = acc0; + *(pDst + S->L) = acc1; + *(pDst + 2 * S->L) = acc2; + *(pDst + 3 * S->L) = acc3; + + pDst++; + + /* Increment the address modifier index of coefficient buffer */ + j++; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 4; + + pDst += S->L * 3; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + + while (blkCntN4 > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Address modifier index of coefficient buffer */ + j = 1U; + + /* Loop over the Interpolation factor. */ + i = S->L; + while (i > 0U) + { + /* Set accumulator to zero */ + sum0 = 0.0f; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (S->L - j); + + /* Loop over the polyPhase length. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ + tapCnt = phaseLen >> 2U; + while (tapCnt > 0U) + { + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Upsampling is done by stuffing L-1 zeros between each sample. + * So instead of multiplying zeros with coefficients, + * Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += x0 * c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = phaseLen % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + sum0 += *(ptr1++) * (*ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = sum0; + + /* Increment the address modifier index of coefficient buffer */ + j++; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCntN4--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (phaseLen - 1U) >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (phaseLen - 1U) % 0x04U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +#else + + /* Run the below code for Cortex-M0 */ + +void arm_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + + + float32_t sum; /* Accumulator */ + uint32_t i, blkCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (phaseLen - 1U); + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Loop over the Interpolation factor. */ + i = S->L; + + while (i > 0U) + { + /* Set accumulator to zero */ + sum = 0.0f; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (i - 1U); + + /* Loop over the polyPhase length */ + tapCnt = phaseLen; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + sum += *ptr1++ * *ptr2; + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = sum; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = phaseLen - 1U; + + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +} + +#endif /* #if defined (ARM_MATH_DSP) */ + + + + /** + * @} end of FIR_Interpolate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c new file mode 100644 index 0000000..415c8da --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c @@ -0,0 +1,109 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_interpolate_init_f32.c + * Description: Floating-point FIR interpolator initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + +/** + * @brief Initialization function for the floating-point FIR interpolator. + * @param[in,out] *S points to an instance of the floating-point FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}
+ * 
+ * The length of the filter numTaps must be a multiple of the interpolation factor L. + * \par + * pState points to the array of state variables. + * pState is of length (numTaps/L)+blockSize-1 words + * where blockSize is the number of input samples processed by each call to arm_fir_interpolate_f32(). + */ + +arm_status arm_fir_interpolate_init_f32( + arm_fir_interpolate_instance_f32 * S, + uint8_t L, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize) +{ + arm_status status; + + /* The filter length must be a multiple of the interpolation factor */ + if ((numTaps % L) != 0U) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign Interpolation factor */ + S->L = L; + + /* Assign polyPhaseLength */ + S->phaseLength = numTaps / L; + + /* Clear state buffer and size of state array is always phaseLength + blockSize - 1 */ + memset(pState, 0, + (blockSize + + ((uint32_t) S->phaseLength - 1U)) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + + /** + * @} end of FIR_Interpolate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c new file mode 100644 index 0000000..6dce943 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c @@ -0,0 +1,108 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_interpolate_init_q15.c + * Description: Q15 FIR interpolator initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + +/** + * @brief Initialization function for the Q15 FIR interpolator. + * @param[in,out] *S points to an instance of the Q15 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}
+ * 
+ * The length of the filter numTaps must be a multiple of the interpolation factor L. + * \par + * pState points to the array of state variables. + * pState is of length (numTaps/L)+blockSize-1 words + * where blockSize is the number of input samples processed by each call to arm_fir_interpolate_q15(). + */ + +arm_status arm_fir_interpolate_init_q15( + arm_fir_interpolate_instance_q15 * S, + uint8_t L, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize) +{ + arm_status status; + + /* The filter length must be a multiple of the interpolation factor */ + if ((numTaps % L) != 0U) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign Interpolation factor */ + S->L = L; + + /* Assign polyPhaseLength */ + S->phaseLength = numTaps / L; + + /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */ + memset(pState, 0, + (blockSize + ((uint32_t) S->phaseLength - 1U)) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + + /** + * @} end of FIR_Interpolate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c new file mode 100644 index 0000000..9875aa8 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c @@ -0,0 +1,109 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_interpolate_init_q31.c + * Description: Q31 FIR interpolator initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + + +/** + * @brief Initialization function for the Q31 FIR interpolator. + * @param[in,out] *S points to an instance of the Q31 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] *pCoeffs points to the filter coefficient buffer. + * @param[in] *pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]}
+ * 
+ * The length of the filter numTaps must be a multiple of the interpolation factor L. + * \par + * pState points to the array of state variables. + * pState is of length (numTaps/L)+blockSize-1 words + * where blockSize is the number of input samples processed by each call to arm_fir_interpolate_q31(). + */ + +arm_status arm_fir_interpolate_init_q31( + arm_fir_interpolate_instance_q31 * S, + uint8_t L, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize) +{ + arm_status status; + + /* The filter length must be a multiple of the interpolation factor */ + if ((numTaps % L) != 0U) + { + /* Set status as ARM_MATH_LENGTH_ERROR */ + status = ARM_MATH_LENGTH_ERROR; + } + else + { + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign Interpolation factor */ + S->L = L; + + /* Assign polyPhaseLength */ + S->phaseLength = numTaps / L; + + /* Clear state buffer and size of buffer is always phaseLength + blockSize - 1 */ + memset(pState, 0, + (blockSize + ((uint32_t) S->phaseLength - 1U)) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + + status = ARM_MATH_SUCCESS; + } + + return (status); + +} + + /** + * @} end of FIR_Interpolate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c new file mode 100644 index 0000000..1cedd25 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q15.c @@ -0,0 +1,496 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_interpolate_q15.c + * Description: Q15 FIR interpolation + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + +/** + * @brief Processing function for the Q15 FIR interpolator. + * @param[in] *S points to an instance of the Q15 FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + +void arm_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + q63_t sum0; /* Accumulators */ + q15_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt, j, tapCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength; /* Length of each polyphase filter component */ + uint32_t blkCntN2; + q63_t acc0, acc1; + q15_t x1; + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + ((q31_t) phaseLen - 1); + + /* Initialise blkCnt */ + blkCnt = blockSize / 2; + blkCntN2 = blockSize - (2 * blkCnt); + + /* Samples loop unrolled by 2 */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Address modifier index of coefficient buffer */ + j = 1U; + + /* Loop over the Interpolation factor. */ + i = (S->L); + + while (i > 0U) + { + /* Set accumulator to zero */ + acc0 = 0; + acc1 = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (S->L - j); + + /* Loop over the polyPhase length. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ + tapCnt = phaseLen >> 2U; + + x0 = *(ptr1++); + + while (tapCnt > 0U) + { + + /* Read the input sample */ + x1 = *(ptr1++); + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Perform the multiply-accumulate */ + acc0 += (q63_t) x0 *c0; + acc1 += (q63_t) x1 *c0; + + + /* Read the coefficient */ + c0 = *(ptr2 + S->L); + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + acc0 += (q63_t) x1 *c0; + acc1 += (q63_t) x0 *c0; + + + /* Read the coefficient */ + c0 = *(ptr2 + S->L * 2); + + /* Read the input sample */ + x1 = *(ptr1++); + + /* Perform the multiply-accumulate */ + acc0 += (q63_t) x0 *c0; + acc1 += (q63_t) x1 *c0; + + /* Read the coefficient */ + c0 = *(ptr2 + S->L * 3); + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + acc0 += (q63_t) x1 *c0; + acc1 += (q63_t) x0 *c0; + + + /* Upsampling is done by stuffing L-1 zeros between each sample. + * So instead of multiplying zeros with coefficients, + * Increment the coefficient pointer by interpolation factor times. */ + ptr2 += 4 * S->L; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = phaseLen % 0x4U; + + while (tapCnt > 0U) + { + + /* Read the input sample */ + x1 = *(ptr1++); + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Perform the multiply-accumulate */ + acc0 += (q63_t) x0 *c0; + acc1 += (q63_t) x1 *c0; + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* update states for next sample processing */ + x0 = x1; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst = (q15_t) (__SSAT((acc0 >> 15), 16)); + *(pDst + S->L) = (q15_t) (__SSAT((acc1 >> 15), 16)); + + pDst++; + + /* Increment the address modifier index of coefficient buffer */ + j++; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 2; + + pDst += S->L; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 2, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blkCntN2; + + /* Loop over the blockSize. */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Address modifier index of coefficient buffer */ + j = 1U; + + /* Loop over the Interpolation factor. */ + i = S->L; + while (i > 0U) + { + /* Set accumulator to zero */ + sum0 = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (S->L - j); + + /* Loop over the polyPhase length. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ + tapCnt = phaseLen >> 2; + while (tapCnt > 0U) + { + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Upsampling is done by stuffing L-1 zeros between each sample. + * So instead of multiplying zeros with coefficients, + * Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = phaseLen & 0x3U; + + while (tapCnt > 0U) + { + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q15_t) (__SSAT((sum0 >> 15), 16)); + + j++; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = ((uint32_t) phaseLen - 1U) >> 2U; + + /* copy data */ + while (i > 0U) + { +#ifndef UNALIGNED_SUPPORT_DISABLE + + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + +#else + + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Decrement the loop counter */ + i--; + } + + i = ((uint32_t) phaseLen - 1U) % 0x04U; + + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } +} + +#else + + /* Run the below code for Cortex-M0 */ + +void arm_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + q63_t sum; /* Accumulator */ + q15_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt, tapCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (phaseLen - 1U); + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Loop over the Interpolation factor. */ + i = S->L; + + while (i > 0U) + { + /* Set accumulator to zero */ + sum = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (i - 1U); + + /* Loop over the polyPhase length */ + tapCnt = (uint32_t) phaseLen; + + while (tapCnt > 0U) + { + /* Read the coefficient */ + c0 = *ptr2; + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *ptr1++; + + /* Perform the multiply-accumulate */ + sum += ((q31_t) x0 * c0); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Store the result after converting to 1.15 format in the destination buffer */ + *pDst++ = (q15_t) (__SSAT((sum >> 15), 16)); + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the start of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + i = (uint32_t) phaseLen - 1U; + + while (i > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + i--; + } + +} + +#endif /* #if defined (ARM_MATH_DSP) */ + + + /** + * @} end of FIR_Interpolate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c new file mode 100644 index 0000000..2c0f522 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_interpolate_q31.c @@ -0,0 +1,492 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_interpolate_q31.c + * Description: Q31 FIR interpolation + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Interpolate + * @{ + */ + +/** + * @brief Processing function for the Q31 FIR interpolator. + * @param[in] *S points to an instance of the Q31 FIR interpolator structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 1/(numTaps/L). + * since numTaps/L additions occur per output sample. + * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + +void arm_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + q63_t sum0; /* Accumulators */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt, j; /* Loop counters */ + uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ + + uint32_t blkCntN2; + q63_t acc0, acc1; + q31_t x1; + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + ((q31_t) phaseLen - 1); + + /* Initialise blkCnt */ + blkCnt = blockSize / 2; + blkCntN2 = blockSize - (2 * blkCnt); + + /* Samples loop unrolled by 2 */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Address modifier index of coefficient buffer */ + j = 1U; + + /* Loop over the Interpolation factor. */ + i = (S->L); + + while (i > 0U) + { + /* Set accumulator to zero */ + acc0 = 0; + acc1 = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (S->L - j); + + /* Loop over the polyPhase length. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ + tapCnt = phaseLen >> 2U; + + x0 = *(ptr1++); + + while (tapCnt > 0U) + { + + /* Read the input sample */ + x1 = *(ptr1++); + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Perform the multiply-accumulate */ + acc0 += (q63_t) x0 *c0; + acc1 += (q63_t) x1 *c0; + + + /* Read the coefficient */ + c0 = *(ptr2 + S->L); + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + acc0 += (q63_t) x1 *c0; + acc1 += (q63_t) x0 *c0; + + + /* Read the coefficient */ + c0 = *(ptr2 + S->L * 2); + + /* Read the input sample */ + x1 = *(ptr1++); + + /* Perform the multiply-accumulate */ + acc0 += (q63_t) x0 *c0; + acc1 += (q63_t) x1 *c0; + + /* Read the coefficient */ + c0 = *(ptr2 + S->L * 3); + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + acc0 += (q63_t) x1 *c0; + acc1 += (q63_t) x0 *c0; + + + /* Upsampling is done by stuffing L-1 zeros between each sample. + * So instead of multiplying zeros with coefficients, + * Increment the coefficient pointer by interpolation factor times. */ + ptr2 += 4 * S->L; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = phaseLen % 0x4U; + + while (tapCnt > 0U) + { + + /* Read the input sample */ + x1 = *(ptr1++); + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Perform the multiply-accumulate */ + acc0 += (q63_t) x0 *c0; + acc1 += (q63_t) x1 *c0; + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* update states for next sample processing */ + x0 = x1; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst = (q31_t) (acc0 >> 31); + *(pDst + S->L) = (q31_t) (acc1 >> 31); + + + pDst++; + + /* Increment the address modifier index of coefficient buffer */ + j++; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 2; + + pDst += S->L; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 2, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blkCntN2; + + /* Loop over the blockSize. */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Address modifier index of coefficient buffer */ + j = 1U; + + /* Loop over the Interpolation factor. */ + i = S->L; + while (i > 0U) + { + /* Set accumulator to zero */ + sum0 = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (S->L - j); + + /* Loop over the polyPhase length. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(4*S->L) coefficients. */ + tapCnt = phaseLen >> 2; + while (tapCnt > 0U) + { + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Upsampling is done by stuffing L-1 zeros between each sample. + * So instead of multiplying zeros with coefficients, + * Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the polyPhase length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = phaseLen & 0x3U; + + while (tapCnt > 0U) + { + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *(ptr1++); + + /* Perform the multiply-accumulate */ + sum0 += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum0 >> 31); + + /* Increment the address modifier index of coefficient buffer */ + j++; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (phaseLen - 1U) >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + tapCnt = (phaseLen - 1U) % 0x04U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +} + + +#else + +void arm_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t *ptr1, *ptr2; /* Temporary pointers for state and coefficient buffers */ + + /* Run the below code for Cortex-M0 */ + + q63_t sum; /* Accumulator */ + q31_t x0, c0; /* Temporary variables to hold state and coefficient values */ + uint32_t i, blkCnt; /* Loop counters */ + uint16_t phaseLen = S->phaseLength, tapCnt; /* Length of each polyphase filter component */ + + + /* S->pState buffer contains previous frame (phaseLen - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + ((q31_t) phaseLen - 1); + + /* Total number of intput samples */ + blkCnt = blockSize; + + /* Loop over the blockSize. */ + while (blkCnt > 0U) + { + /* Copy new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Loop over the Interpolation factor. */ + i = S->L; + + while (i > 0U) + { + /* Set accumulator to zero */ + sum = 0; + + /* Initialize state pointer */ + ptr1 = pState; + + /* Initialize coefficient pointer */ + ptr2 = pCoeffs + (i - 1U); + + tapCnt = phaseLen; + + while (tapCnt > 0U) + { + /* Read the coefficient */ + c0 = *(ptr2); + + /* Increment the coefficient pointer by interpolation factor times. */ + ptr2 += S->L; + + /* Read the input sample */ + x0 = *ptr1++; + + /* Perform the multiply-accumulate */ + sum += (q63_t) x0 *c0; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is in the accumulator, store in the destination buffer. */ + *pDst++ = (q31_t) (sum >> 31); + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 1 + * to process the next group of interpolation factor number samples */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last phaseLen - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = phaseLen - 1U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +} + +#endif /* #if defined (ARM_MATH_DSP) */ + + /** + * @} end of FIR_Interpolate group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c new file mode 100644 index 0000000..1b6d0fb --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_f32.c @@ -0,0 +1,494 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_lattice_f32.c + * Description: Processing function for the floating-point FIR Lattice filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup FIR_Lattice Finite Impulse Response (FIR) Lattice Filters + * + * This set of functions implements Finite Impulse Response (FIR) lattice filters + * for Q15, Q31 and floating-point data types. Lattice filters are used in a + * variety of adaptive filter applications. The filter structure is feedforward and + * the net impulse response is finite length. + * The functions operate on blocks + * of input and output data and each call to the function processes + * blockSize samples through the filter. pSrc and + * pDst point to input and output arrays containing blockSize values. + * + * \par Algorithm: + * \image html FIRLattice.gif "Finite Impulse Response Lattice filter" + * The following difference equation is implemented: + *
+ *    f0[n] = g0[n] = x[n]
+ *    fm[n] = fm-1[n] + km * gm-1[n-1] for m = 1, 2, ...M
+ *    gm[n] = km * fm-1[n] + gm-1[n-1] for m = 1, 2, ...M
+ *    y[n] = fM[n]
+ * 
+ * \par + * pCoeffs points to tha array of reflection coefficients of size numStages. + * Reflection Coefficients are stored in the following order. + * \par + *
+ *    {k1, k2, ..., kM}
+ * 
+ * where M is number of stages + * \par + * pState points to a state array of size numStages. + * The state variables (g values) hold previous inputs and are stored in the following order. + *
+ *    {g0[n], g1[n], g2[n] ...gM-1[n]}
+ * 
+ * The state variables are updated after each block of data is processed; the coefficients are untouched. + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * To do this manually without calling the init function, assign the follow subfields of the instance structure: + * numStages, pCoeffs, pState. Also set all of the values in pState to zero. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros and then manually initialize the instance structure as follows: + *
+ *arm_fir_lattice_instance_f32 S = {numStages, pState, pCoeffs};
+ *arm_fir_lattice_instance_q31 S = {numStages, pState, pCoeffs};
+ *arm_fir_lattice_instance_q15 S = {numStages, pState, pCoeffs};
+ * 
+ * \par + * where numStages is the number of stages in the filter; pState is the address of the state buffer; + * pCoeffs is the address of the coefficient buffer. + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the FIR Lattice filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + + + /** + * @brief Processing function for the floating-point FIR lattice filter. + * @param[in] *S points to an instance of the floating-point FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t *pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *px; /* temporary state pointer */ + float32_t *pk; /* temporary coefficient pointer */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t fcurr1, fnext1, gcurr1, gnext1; /* temporary variables for first sample in loop unrolling */ + float32_t fcurr2, fnext2, gnext2; /* temporary variables for second sample in loop unrolling */ + float32_t fcurr3, fnext3, gnext3; /* temporary variables for third sample in loop unrolling */ + float32_t fcurr4, fnext4, gnext4; /* temporary variables for fourth sample in loop unrolling */ + uint32_t numStages = S->numStages; /* Number of stages in the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + gcurr1 = 0.0f; + pState = &S->pState[0]; + + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + + /* Read two samples from input buffer */ + /* f0(n) = x(n) */ + fcurr1 = *pSrc++; + fcurr2 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* Read g0(n-1) from state */ + gcurr1 = *px; + + /* Process first sample for first tap */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (fcurr1 * (*pk)) + gcurr1; + + /* Process second sample for first tap */ + /* for sample 2 processing */ + fnext2 = fcurr2 + ((*pk) * fcurr1); + gnext2 = (fcurr2 * (*pk)) + fcurr1; + + /* Read next two samples from input buffer */ + /* f0(n+2) = x(n+2) */ + fcurr3 = *pSrc++; + fcurr4 = *pSrc++; + + /* Copy only last input samples into the state buffer + which will be used for next four samples processing */ + *px++ = fcurr4; + + /* Process third sample for first tap */ + fnext3 = fcurr3 + ((*pk) * fcurr2); + gnext3 = (fcurr3 * (*pk)) + fcurr2; + + /* Process fourth sample for first tap */ + fnext4 = fcurr4 + ((*pk) * fcurr3); + gnext4 = (fcurr4 * (*pk++)) + fcurr3; + + /* Update of f values for next coefficient set processing */ + fcurr1 = fnext1; + fcurr2 = fnext2; + fcurr3 = fnext3; + fcurr4 = fnext4; + + /* Loop unrolling. Process 4 taps at a time . */ + stageCnt = (numStages - 1U) >> 2U; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numStages-3 coefficients. */ + + /* Process 2nd, 3rd, 4th and 5th taps ... here */ + while (stageCnt > 0U) + { + /* Read g1(n-1), g3(n-1) .... from state */ + gcurr1 = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext4; + + /* Process first sample for 2nd, 6th .. tap */ + /* Sample processing for K2, K6.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + /* Process second sample for 2nd, 6th .. tap */ + /* for sample 2 processing */ + fnext2 = fcurr2 + ((*pk) * gnext1); + /* Process third sample for 2nd, 6th .. tap */ + fnext3 = fcurr3 + ((*pk) * gnext2); + /* Process fourth sample for 2nd, 6th .. tap */ + fnext4 = fcurr4 + ((*pk) * gnext3); + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + /* Calculation of state values for next stage */ + gnext4 = (fcurr4 * (*pk)) + gnext3; + gnext3 = (fcurr3 * (*pk)) + gnext2; + gnext2 = (fcurr2 * (*pk)) + gnext1; + gnext1 = (fcurr1 * (*pk++)) + gcurr1; + + + /* Read g2(n-1), g4(n-1) .... from state */ + gcurr1 = *px; + + /* save g2(n) in state buffer */ + *px++ = gnext4; + + /* Sample processing for K3, K7.... */ + /* Process first sample for 3rd, 7th .. tap */ + /* f3(n) = f2(n) + K3 * g2(n-1) */ + fcurr1 = fnext1 + ((*pk) * gcurr1); + /* Process second sample for 3rd, 7th .. tap */ + fcurr2 = fnext2 + ((*pk) * gnext1); + /* Process third sample for 3rd, 7th .. tap */ + fcurr3 = fnext3 + ((*pk) * gnext2); + /* Process fourth sample for 3rd, 7th .. tap */ + fcurr4 = fnext4 + ((*pk) * gnext3); + + /* Calculation of state values for next stage */ + /* g3(n) = f2(n) * K3 + g2(n-1) */ + gnext4 = (fnext4 * (*pk)) + gnext3; + gnext3 = (fnext3 * (*pk)) + gnext2; + gnext2 = (fnext2 * (*pk)) + gnext1; + gnext1 = (fnext1 * (*pk++)) + gcurr1; + + + /* Read g1(n-1), g3(n-1) .... from state */ + gcurr1 = *px; + + /* save g3(n) in state buffer */ + *px++ = gnext4; + + /* Sample processing for K4, K8.... */ + /* Process first sample for 4th, 8th .. tap */ + /* f4(n) = f3(n) + K4 * g3(n-1) */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + /* Process second sample for 4th, 8th .. tap */ + /* for sample 2 processing */ + fnext2 = fcurr2 + ((*pk) * gnext1); + /* Process third sample for 4th, 8th .. tap */ + fnext3 = fcurr3 + ((*pk) * gnext2); + /* Process fourth sample for 4th, 8th .. tap */ + fnext4 = fcurr4 + ((*pk) * gnext3); + + /* g4(n) = f3(n) * K4 + g3(n-1) */ + /* Calculation of state values for next stage */ + gnext4 = (fcurr4 * (*pk)) + gnext3; + gnext3 = (fcurr3 * (*pk)) + gnext2; + gnext2 = (fcurr2 * (*pk)) + gnext1; + gnext1 = (fcurr1 * (*pk++)) + gcurr1; + + /* Read g2(n-1), g4(n-1) .... from state */ + gcurr1 = *px; + + /* save g4(n) in state buffer */ + *px++ = gnext4; + + /* Sample processing for K5, K9.... */ + /* Process first sample for 5th, 9th .. tap */ + /* f5(n) = f4(n) + K5 * g4(n-1) */ + fcurr1 = fnext1 + ((*pk) * gcurr1); + /* Process second sample for 5th, 9th .. tap */ + fcurr2 = fnext2 + ((*pk) * gnext1); + /* Process third sample for 5th, 9th .. tap */ + fcurr3 = fnext3 + ((*pk) * gnext2); + /* Process fourth sample for 5th, 9th .. tap */ + fcurr4 = fnext4 + ((*pk) * gnext3); + + /* Calculation of state values for next stage */ + /* g5(n) = f4(n) * K5 + g4(n-1) */ + gnext4 = (fnext4 * (*pk)) + gnext3; + gnext3 = (fnext3 * (*pk)) + gnext2; + gnext2 = (fnext2 * (*pk)) + gnext1; + gnext1 = (fnext1 * (*pk++)) + gcurr1; + + stageCnt--; + } + + /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */ + stageCnt = (numStages - 1U) % 0x4U; + + while (stageCnt > 0U) + { + gcurr1 = *px; + + /* save g value in state buffer */ + *px++ = gnext4; + + /* Process four samples for last three taps here */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + fnext2 = fcurr2 + ((*pk) * gnext1); + fnext3 = fcurr3 + ((*pk) * gnext2); + fnext4 = fcurr4 + ((*pk) * gnext3); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext4 = (fcurr4 * (*pk)) + gnext3; + gnext3 = (fcurr3 * (*pk)) + gnext2; + gnext2 = (fcurr2 * (*pk)) + gnext1; + gnext1 = (fcurr1 * (*pk++)) + gcurr1; + + /* Update of f values for next coefficient set processing */ + fcurr1 = fnext1; + fcurr2 = fnext2; + fcurr3 = fnext3; + fcurr4 = fnext4; + + stageCnt--; + + } + + /* The results in the 4 accumulators, store in the destination buffer. */ + /* y(n) = fN(n) */ + *pDst++ = fcurr1; + *pDst++ = fcurr2; + *pDst++ = fcurr3; + *pDst++ = fcurr4; + + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* f0(n) = x(n) */ + fcurr1 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g2(n) from state buffer */ + gcurr1 = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (fcurr1 * (*pk++)) + gcurr1; + + /* save g1(n) in state buffer */ + *px++ = fcurr1; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr1 = fnext1; + + stageCnt = (numStages - 1U); + + /* stage loop */ + while (stageCnt > 0U) + { + /* read g2(n) from state buffer */ + gcurr1 = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext1; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext1 = fcurr1 + ((*pk) * gcurr1); + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext1 = (fcurr1 * (*pk++)) + gcurr1; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr1 = fnext1; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = fcurr1; + + blkCnt--; + + } + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t fcurr, fnext, gcurr, gnext; /* temporary variables */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* f0(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize coeff pointer */ + pk = pCoeffs; + + /* Initialize state pointer */ + px = pState; + + /* read g0(n-1) from state buffer */ + gcurr = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext = fcurr + ((*pk) * gcurr); + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext = (fcurr * (*pk++)) + gcurr; + + /* save f0(n) in state buffer */ + *px++ = fcurr; + + /* f1(n) is saved in fcurr + for next stage processing */ + fcurr = fnext; + + stageCnt = (numStages - 1U); + + /* stage loop */ + while (stageCnt > 0U) + { + /* read g2(n) from state buffer */ + gcurr = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext = fcurr + ((*pk) * gcurr); + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext = (fcurr * (*pk++)) + gcurr; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr = fnext; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = fcurr; + + blkCnt--; + + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c new file mode 100644 index 0000000..55520eb --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_f32.c @@ -0,0 +1,71 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_lattice_init_f32.c + * Description: Floating-point FIR Lattice filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + +/** + * @brief Initialization function for the floating-point FIR lattice filter. + * @param[in] *S points to an instance of the floating-point FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + +void arm_fir_lattice_init_f32( + arm_fir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pCoeffs, + float32_t * pState) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always numStages */ + memset(pState, 0, (numStages) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c new file mode 100644 index 0000000..59cf496 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q15.c @@ -0,0 +1,71 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_lattice_init_q15.c + * Description: Q15 FIR Lattice filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + + /** + * @brief Initialization function for the Q15 FIR lattice filter. + * @param[in] *S points to an instance of the Q15 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + +void arm_fir_lattice_init_q15( + arm_fir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pCoeffs, + q15_t * pState) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always numStages */ + memset(pState, 0, (numStages) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c new file mode 100644 index 0000000..abdd76f --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_init_q31.c @@ -0,0 +1,71 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_lattice_init_q31.c + * Description: Q31 FIR lattice filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + + /** + * @brief Initialization function for the Q31 FIR lattice filter. + * @param[in] *S points to an instance of the Q31 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] *pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] *pState points to the state buffer. The array is of length numStages. + * @return none. + */ + +void arm_fir_lattice_init_q31( + arm_fir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pCoeffs, + q31_t * pState) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always numStages */ + memset(pState, 0, (numStages) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c new file mode 100644 index 0000000..fb95ab6 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q15.c @@ -0,0 +1,524 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_lattice_q15.c + * Description: Q15 FIR lattice filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + + +/** + * @brief Processing function for the Q15 FIR lattice filter. + * @param[in] *S points to an instance of the Q15 FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *px; /* temporary state pointer */ + q15_t *pk; /* temporary coefficient pointer */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t fcurnt1, fnext1, gcurnt1 = 0, gnext1; /* temporary variables for first sample in loop unrolling */ + q31_t fcurnt2, fnext2, gnext2; /* temporary variables for second sample in loop unrolling */ + q31_t fcurnt3, fnext3, gnext3; /* temporary variables for third sample in loop unrolling */ + q31_t fcurnt4, fnext4, gnext4; /* temporary variables for fourth sample in loop unrolling */ + uint32_t numStages = S->numStages; /* Number of stages in the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + + /* Read two samples from input buffer */ + /* f0(n) = x(n) */ + fcurnt1 = *pSrc++; + fcurnt2 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* Read g0(n-1) from state */ + gcurnt1 = *px; + + /* Process first sample for first tap */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (q31_t) ((fcurnt1 * (*pk)) >> 15U) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + /* Process second sample for first tap */ + /* for sample 2 processing */ + fnext2 = (q31_t) ((fcurnt1 * (*pk)) >> 15U) + fcurnt2; + fnext2 = __SSAT(fnext2, 16); + + gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15U) + fcurnt1; + gnext2 = __SSAT(gnext2, 16); + + + /* Read next two samples from input buffer */ + /* f0(n+2) = x(n+2) */ + fcurnt3 = *pSrc++; + fcurnt4 = *pSrc++; + + /* Copy only last input samples into the state buffer + which is used for next four samples processing */ + *px++ = (q15_t) fcurnt4; + + /* Process third sample for first tap */ + fnext3 = (q31_t) ((fcurnt2 * (*pk)) >> 15U) + fcurnt3; + fnext3 = __SSAT(fnext3, 16); + gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15U) + fcurnt2; + gnext3 = __SSAT(gnext3, 16); + + /* Process fourth sample for first tap */ + fnext4 = (q31_t) ((fcurnt3 * (*pk)) >> 15U) + fcurnt4; + fnext4 = __SSAT(fnext4, 16); + gnext4 = (q31_t) ((fcurnt4 * (*pk++)) >> 15U) + fcurnt3; + gnext4 = __SSAT(gnext4, 16); + + /* Update of f values for next coefficient set processing */ + fcurnt1 = fnext1; + fcurnt2 = fnext2; + fcurnt3 = fnext3; + fcurnt4 = fnext4; + + + /* Loop unrolling. Process 4 taps at a time . */ + stageCnt = (numStages - 1U) >> 2; + + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numStages-3 coefficients. */ + + /* Process 2nd, 3rd, 4th and 5th taps ... here */ + while (stageCnt > 0U) + { + /* Read g1(n-1), g3(n-1) .... from state */ + gcurnt1 = *px; + + /* save g1(n) in state buffer */ + *px++ = (q15_t) gnext4; + + /* Process first sample for 2nd, 6th .. tap */ + /* Sample processing for K2, K6.... */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + + + /* Process second sample for 2nd, 6th .. tap */ + /* for sample 2 processing */ + fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fcurnt2; + fnext2 = __SSAT(fnext2, 16); + /* Process third sample for 2nd, 6th .. tap */ + fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fcurnt3; + fnext3 = __SSAT(fnext3, 16); + /* Process fourth sample for 2nd, 6th .. tap */ + /* fnext4 = fcurnt4 + (*pk) * gnext3; */ + fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15U) + fcurnt4; + fnext4 = __SSAT(fnext4, 16); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + /* Calculation of state values for next stage */ + gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15U) + gnext3; + gnext4 = __SSAT(gnext4, 16); + gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15U) + gnext2; + gnext3 = __SSAT(gnext3, 16); + + gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15U) + gnext1; + gnext2 = __SSAT(gnext2, 16); + + gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15U) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + + /* Read g2(n-1), g4(n-1) .... from state */ + gcurnt1 = *px; + + /* save g1(n) in state buffer */ + *px++ = (q15_t) gnext4; + + /* Sample processing for K3, K7.... */ + /* Process first sample for 3rd, 7th .. tap */ + /* f3(n) = f2(n) + K3 * g2(n-1) */ + fcurnt1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fnext1; + fcurnt1 = __SSAT(fcurnt1, 16); + + /* Process second sample for 3rd, 7th .. tap */ + fcurnt2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fnext2; + fcurnt2 = __SSAT(fcurnt2, 16); + + /* Process third sample for 3rd, 7th .. tap */ + fcurnt3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fnext3; + fcurnt3 = __SSAT(fcurnt3, 16); + + /* Process fourth sample for 3rd, 7th .. tap */ + fcurnt4 = (q31_t) ((gnext3 * (*pk)) >> 15U) + fnext4; + fcurnt4 = __SSAT(fcurnt4, 16); + + /* Calculation of state values for next stage */ + /* g3(n) = f2(n) * K3 + g2(n-1) */ + gnext4 = (q31_t) ((fnext4 * (*pk)) >> 15U) + gnext3; + gnext4 = __SSAT(gnext4, 16); + + gnext3 = (q31_t) ((fnext3 * (*pk)) >> 15U) + gnext2; + gnext3 = __SSAT(gnext3, 16); + + gnext2 = (q31_t) ((fnext2 * (*pk)) >> 15U) + gnext1; + gnext2 = __SSAT(gnext2, 16); + + gnext1 = (q31_t) ((fnext1 * (*pk++)) >> 15U) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + /* Read g1(n-1), g3(n-1) .... from state */ + gcurnt1 = *px; + + /* save g1(n) in state buffer */ + *px++ = (q15_t) gnext4; + + /* Sample processing for K4, K8.... */ + /* Process first sample for 4th, 8th .. tap */ + /* f4(n) = f3(n) + K4 * g3(n-1) */ + fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + + /* Process second sample for 4th, 8th .. tap */ + /* for sample 2 processing */ + fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fcurnt2; + fnext2 = __SSAT(fnext2, 16); + + /* Process third sample for 4th, 8th .. tap */ + fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fcurnt3; + fnext3 = __SSAT(fnext3, 16); + + /* Process fourth sample for 4th, 8th .. tap */ + fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15U) + fcurnt4; + fnext4 = __SSAT(fnext4, 16); + + /* g4(n) = f3(n) * K4 + g3(n-1) */ + /* Calculation of state values for next stage */ + gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15U) + gnext3; + gnext4 = __SSAT(gnext4, 16); + + gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15U) + gnext2; + gnext3 = __SSAT(gnext3, 16); + + gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15U) + gnext1; + gnext2 = __SSAT(gnext2, 16); + gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15U) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + + /* Read g2(n-1), g4(n-1) .... from state */ + gcurnt1 = *px; + + /* save g4(n) in state buffer */ + *px++ = (q15_t) gnext4; + + /* Sample processing for K5, K9.... */ + /* Process first sample for 5th, 9th .. tap */ + /* f5(n) = f4(n) + K5 * g4(n-1) */ + fcurnt1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fnext1; + fcurnt1 = __SSAT(fcurnt1, 16); + + /* Process second sample for 5th, 9th .. tap */ + fcurnt2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fnext2; + fcurnt2 = __SSAT(fcurnt2, 16); + + /* Process third sample for 5th, 9th .. tap */ + fcurnt3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fnext3; + fcurnt3 = __SSAT(fcurnt3, 16); + + /* Process fourth sample for 5th, 9th .. tap */ + fcurnt4 = (q31_t) ((gnext3 * (*pk)) >> 15U) + fnext4; + fcurnt4 = __SSAT(fcurnt4, 16); + + /* Calculation of state values for next stage */ + /* g5(n) = f4(n) * K5 + g4(n-1) */ + gnext4 = (q31_t) ((fnext4 * (*pk)) >> 15U) + gnext3; + gnext4 = __SSAT(gnext4, 16); + gnext3 = (q31_t) ((fnext3 * (*pk)) >> 15U) + gnext2; + gnext3 = __SSAT(gnext3, 16); + gnext2 = (q31_t) ((fnext2 * (*pk)) >> 15U) + gnext1; + gnext2 = __SSAT(gnext2, 16); + gnext1 = (q31_t) ((fnext1 * (*pk++)) >> 15U) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + stageCnt--; + } + + /* If the (filter length -1) is not a multiple of 4, compute the remaining filter taps */ + stageCnt = (numStages - 1U) % 0x4U; + + while (stageCnt > 0U) + { + gcurnt1 = *px; + + /* save g value in state buffer */ + *px++ = (q15_t) gnext4; + + /* Process four samples for last three taps here */ + fnext1 = (q31_t) ((gcurnt1 * (*pk)) >> 15U) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + fnext2 = (q31_t) ((gnext1 * (*pk)) >> 15U) + fcurnt2; + fnext2 = __SSAT(fnext2, 16); + + fnext3 = (q31_t) ((gnext2 * (*pk)) >> 15U) + fcurnt3; + fnext3 = __SSAT(fnext3, 16); + + fnext4 = (q31_t) ((gnext3 * (*pk)) >> 15U) + fcurnt4; + fnext4 = __SSAT(fnext4, 16); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext4 = (q31_t) ((fcurnt4 * (*pk)) >> 15U) + gnext3; + gnext4 = __SSAT(gnext4, 16); + gnext3 = (q31_t) ((fcurnt3 * (*pk)) >> 15U) + gnext2; + gnext3 = __SSAT(gnext3, 16); + gnext2 = (q31_t) ((fcurnt2 * (*pk)) >> 15U) + gnext1; + gnext2 = __SSAT(gnext2, 16); + gnext1 = (q31_t) ((fcurnt1 * (*pk++)) >> 15U) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + /* Update of f values for next coefficient set processing */ + fcurnt1 = fnext1; + fcurnt2 = fnext2; + fcurnt3 = fnext3; + fcurnt4 = fnext4; + + stageCnt--; + + } + + /* The results in the 4 accumulators, store in the destination buffer. */ + /* y(n) = fN(n) */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT(fcurnt1, fcurnt2, 16); + *__SIMD32(pDst)++ = __PKHBT(fcurnt3, fcurnt4, 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT(fcurnt2, fcurnt1, 16); + *__SIMD32(pDst)++ = __PKHBT(fcurnt4, fcurnt3, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* f0(n) = x(n) */ + fcurnt1 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g2(n) from state buffer */ + gcurnt1 = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = (((q31_t) gcurnt1 * (*pk)) >> 15U) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (((q31_t) fcurnt1 * (*pk++)) >> 15U) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + /* save g1(n) in state buffer */ + *px++ = (q15_t) fcurnt1; + + /* f1(n) is saved in fcurnt1 + for next stage processing */ + fcurnt1 = fnext1; + + stageCnt = (numStages - 1U); + + /* stage loop */ + while (stageCnt > 0U) + { + /* read g2(n) from state buffer */ + gcurnt1 = *px; + + /* save g1(n) in state buffer */ + *px++ = (q15_t) gnext1; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext1 = (((q31_t) gcurnt1 * (*pk)) >> 15U) + fcurnt1; + fnext1 = __SSAT(fnext1, 16); + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext1 = (((q31_t) fcurnt1 * (*pk++)) >> 15U) + gcurnt1; + gnext1 = __SSAT(gnext1, 16); + + + /* f1(n) is saved in fcurnt1 + for next stage processing */ + fcurnt1 = fnext1; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = __SSAT(fcurnt1, 16); + + + blkCnt--; + + } + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t fcurnt, fnext, gcurnt, gnext; /* temporary variables */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* f0(n) = x(n) */ + fcurnt = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g0(n-1) from state buffer */ + gcurnt = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext = ((gcurnt * (*pk)) >> 15U) + fcurnt; + fnext = __SSAT(fnext, 16); + + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext = ((fcurnt * (*pk++)) >> 15U) + gcurnt; + gnext = __SSAT(gnext, 16); + + /* save f0(n) in state buffer */ + *px++ = (q15_t) fcurnt; + + /* f1(n) is saved in fcurnt + for next stage processing */ + fcurnt = fnext; + + stageCnt = (numStages - 1U); + + /* stage loop */ + while (stageCnt > 0U) + { + /* read g1(n-1) from state buffer */ + gcurnt = *px; + + /* save g0(n-1) in state buffer */ + *px++ = (q15_t) gnext; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext = ((gcurnt * (*pk)) >> 15U) + fcurnt; + fnext = __SSAT(fnext, 16); + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext = ((fcurnt * (*pk++)) >> 15U) + gcurnt; + gnext = __SSAT(gnext, 16); + + + /* f1(n) is saved in fcurnt + for next stage processing */ + fcurnt = fnext; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = __SSAT(fcurnt, 16); + + + blkCnt--; + + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c new file mode 100644 index 0000000..9d52bbc --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_lattice_q31.c @@ -0,0 +1,341 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_lattice_q31.c + * Description: Q31 FIR lattice filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Lattice + * @{ + */ + + +/** + * @brief Processing function for the Q31 FIR lattice filter. + * @param[in] *S points to an instance of the Q31 FIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] blockSize number of samples to process. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * In order to avoid overflows the input signal must be scaled down by 2*log2(numStages) bits. + */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + +void arm_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *px; /* temporary state pointer */ + q31_t *pk; /* temporary coefficient pointer */ + q31_t fcurr1, fnext1, gcurr1 = 0, gnext1; /* temporary variables for first sample in loop unrolling */ + q31_t fcurr2, fnext2, gnext2; /* temporary variables for second sample in loop unrolling */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + q31_t k; + + pState = &S->pState[0]; + + blkCnt = blockSize >> 1U; + + /* First part of the processing with loop unrolling. Compute 2 outputs at a time. + a second loop below computes the remaining 1 sample. */ + while (blkCnt > 0U) + { + /* f0(n) = x(n) */ + fcurr1 = *pSrc++; + + /* f0(n) = x(n) */ + fcurr2 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g0(n - 1) from state buffer */ + gcurr1 = *px; + + /* Read the reflection coefficient */ + k = *pk++; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32); + fnext1 = fcurr1 + (fnext1 << 1U); + gnext1 = gcurr1 + (gnext1 << 1U); + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext2 = (q31_t) (((q63_t) fcurr1 * k) >> 32); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext2 = (q31_t) (((q63_t) fcurr2 * (k)) >> 32); + fnext2 = fcurr2 + (fnext2 << 1U); + gnext2 = fcurr1 + (gnext2 << 1U); + + /* save g1(n) in state buffer */ + *px++ = fcurr2; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr1 = fnext1; + fcurr2 = fnext2; + + stageCnt = (numStages - 1U); + + /* stage loop */ + while (stageCnt > 0U) + { + + /* Read the reflection coefficient */ + k = *pk++; + + /* read g2(n) from state buffer */ + gcurr1 = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext2; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32); + fnext2 = (q31_t) (((q63_t) gnext1 * k) >> 32); + + fnext1 = fcurr1 + (fnext1 << 1U); + fnext2 = fcurr2 + (fnext2 << 1U); + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext2 = (q31_t) (((q63_t) fcurr2 * (k)) >> 32); + gnext2 = gnext1 + (gnext2 << 1U); + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32); + gnext1 = gcurr1 + (gnext1 << 1U); + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr1 = fnext1; + fcurr2 = fnext2; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = fcurr1; + *pDst++ = fcurr2; + + blkCnt--; + + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x2U; + + while (blkCnt > 0U) + { + /* f0(n) = x(n) */ + fcurr1 = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g0(n - 1) from state buffer */ + gcurr1 = *px; + + /* Read the reflection coefficient */ + k = *pk++; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32); + fnext1 = fcurr1 + (fnext1 << 1U); + + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32); + gnext1 = gcurr1 + (gnext1 << 1U); + + /* save g1(n) in state buffer */ + *px++ = fcurr1; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr1 = fnext1; + + stageCnt = (numStages - 1U); + + /* stage loop */ + while (stageCnt > 0U) + { + /* Read the reflection coefficient */ + k = *pk++; + + /* read g2(n) from state buffer */ + gcurr1 = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext1; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext1 = (q31_t) (((q63_t) gcurr1 * k) >> 32); + fnext1 = fcurr1 + (fnext1 << 1U); + + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext1 = (q31_t) (((q63_t) fcurr1 * (k)) >> 32); + gnext1 = gcurr1 + (gnext1 << 1U); + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr1 = fnext1; + + stageCnt--; + + } + + + /* y(n) = fN(n) */ + *pDst++ = fcurr1; + + blkCnt--; + + } + + +} + + +#else + +/* Run the below code for Cortex-M0 */ + +void arm_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *px; /* temporary state pointer */ + q31_t *pk; /* temporary coefficient pointer */ + q31_t fcurr, fnext, gcurr, gnext; /* temporary variables */ + uint32_t numStages = S->numStages; /* Length of the filter */ + uint32_t blkCnt, stageCnt; /* temporary variables for counts */ + + pState = &S->pState[0]; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* f0(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize coeff pointer */ + pk = (pCoeffs); + + /* Initialize state pointer */ + px = pState; + + /* read g0(n-1) from state buffer */ + gcurr = *px; + + /* for sample 1 processing */ + /* f1(n) = f0(n) + K1 * g0(n-1) */ + fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr; + /* g1(n) = f0(n) * K1 + g0(n-1) */ + gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr; + /* save g1(n) in state buffer */ + *px++ = fcurr; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr = fnext; + + stageCnt = (numStages - 1U); + + /* stage loop */ + while (stageCnt > 0U) + { + /* read g2(n) from state buffer */ + gcurr = *px; + + /* save g1(n) in state buffer */ + *px++ = gnext; + + /* Sample processing for K2, K3.... */ + /* f2(n) = f1(n) + K2 * g1(n-1) */ + fnext = (q31_t) (((q63_t) gcurr * (*pk)) >> 31) + fcurr; + /* g2(n) = f1(n) * K2 + g1(n-1) */ + gnext = (q31_t) (((q63_t) fcurr * (*pk++)) >> 31) + gcurr; + + /* f1(n) is saved in fcurr1 + for next stage processing */ + fcurr = fnext; + + stageCnt--; + + } + + /* y(n) = fN(n) */ + *pDst++ = fcurr; + + blkCnt--; + + } + +} + +#endif /* #if defined (ARM_MATH_DSP) */ + + +/** + * @} end of FIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c new file mode 100644 index 0000000..a979783 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q15.c @@ -0,0 +1,679 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_q15.c + * Description: Q15 FIR filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @brief Processing function for the Q15 FIR filter. + * @param[in] *S points to an instance of the Q15 FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, state buffers should be aligned by 32-bit + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + * + * \par + * Refer to the function arm_fir_fast_q15() for a faster but less precise implementation of this function. + */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + + +void arm_fir_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px1; /* Temporary q15 pointer for state buffer */ + q15_t *pb; /* Temporary pointer for coefficient buffer */ + q31_t x0, x1, x2, x3, c0; /* Temporary variables to hold SIMD state and coefficient values */ + q63_t acc0, acc1, acc2, acc3; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Copy four new input samples into the state buffer. + ** Use 32-bit SIMD to move the 16-bit data. Only requires two copies. */ + *__SIMD32(pStateCurnt)++ = *__SIMD32(pSrc)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pSrc)++; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Initialize state pointer of type q15 */ + px1 = pState; + + /* Initialize coeff pointer of type q31 */ + pb = pCoeffs; + + /* Read the first two samples from the state buffer: x[n-N], x[n-N-1] */ + x0 = _SIMD32_OFFSET(px1); + + /* Read the third and forth samples from the state buffer: x[n-N-1], x[n-N-2] */ + x1 = _SIMD32_OFFSET(px1 + 1U); + + px1 += 2U; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-4 coefficients. */ + tapCnt = numTaps >> 2; + + while (tapCnt > 0U) + { + /* Read the first two coefficients using SIMD: b[N] and b[N-1] coefficients */ + c0 = *__SIMD32(pb)++; + + /* acc0 += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ + acc0 = __SMLALD(x0, c0, acc0); + + /* acc1 += b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */ + acc1 = __SMLALD(x1, c0, acc1); + + /* Read state x[n-N-2], x[n-N-3] */ + x2 = _SIMD32_OFFSET(px1); + + /* Read state x[n-N-3], x[n-N-4] */ + x3 = _SIMD32_OFFSET(px1 + 1U); + + /* acc2 += b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */ + acc2 = __SMLALD(x2, c0, acc2); + + /* acc3 += b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */ + acc3 = __SMLALD(x3, c0, acc3); + + /* Read coefficients b[N-2], b[N-3] */ + c0 = *__SIMD32(pb)++; + + /* acc0 += b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */ + acc0 = __SMLALD(x2, c0, acc0); + + /* acc1 += b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */ + acc1 = __SMLALD(x3, c0, acc1); + + /* Read state x[n-N-4], x[n-N-5] */ + x0 = _SIMD32_OFFSET(px1 + 2U); + + /* Read state x[n-N-5], x[n-N-6] */ + x1 = _SIMD32_OFFSET(px1 + 3U); + + /* acc2 += b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */ + acc2 = __SMLALD(x0, c0, acc2); + + /* acc3 += b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */ + acc3 = __SMLALD(x1, c0, acc3); + + px1 += 4U; + + tapCnt--; + + } + + + /* If the filter length is not a multiple of 4, compute the remaining filter taps. + ** This is always be 2 taps since the filter length is even. */ + if ((numTaps & 0x3U) != 0U) + { + /* Read 2 coefficients */ + c0 = *__SIMD32(pb)++; + + /* Fetch 4 state variables */ + x2 = _SIMD32_OFFSET(px1); + + x3 = _SIMD32_OFFSET(px1 + 1U); + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + + px1 += 2U; + + acc1 = __SMLALD(x1, c0, acc1); + acc2 = __SMLALD(x2, c0, acc2); + acc3 = __SMLALD(x3, c0, acc3); + } + + /* The results in the 4 accumulators are in 2.30 format. Convert to 1.15 with saturation. + ** Then store the 4 outputs in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + while (blkCnt > 0U) + { + /* Copy two samples into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Initialize state pointer of type q15 */ + px1 = pState; + + /* Initialize coeff pointer of type q31 */ + pb = pCoeffs; + + tapCnt = numTaps >> 1; + + do + { + + c0 = *__SIMD32(pb)++; + x0 = *__SIMD32(px1)++; + + acc0 = __SMLALD(x0, c0, acc0); + tapCnt--; + } + while (tapCnt > 0U); + + /* The result is in 2.30 format. Convert to 1.15 with saturation. + ** Then store the output in the destination buffer. */ + *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Calculation of count for copying integer writes */ + tapCnt = (numTaps - 1U) >> 2; + + while (tapCnt > 0U) + { + + /* Copy state values to start of state buffer */ + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + + tapCnt--; + + } + + /* Calculation of count for remaining q15_t data */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* copy remaining data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +#else /* UNALIGNED_SUPPORT_DISABLE */ + +void arm_fir_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q63_t acc0, acc1, acc2, acc3; /* Accumulators */ + q15_t *pb; /* Temporary pointer for coefficient buffer */ + q15_t *px; /* Temporary q31 pointer for SIMD state buffer accesses */ + q31_t x0, x1, x2, c0; /* Temporary variables to hold SIMD state and coefficient values */ + uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Copy four new input samples into the state buffer. + ** Use 32-bit SIMD to move the 16-bit data. Only requires two copies. */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Typecast q15_t pointer to q31_t pointer for state reading in q31_t */ + px = pState; + + /* Typecast q15_t pointer to q31_t pointer for coefficient reading in q31_t */ + pb = pCoeffs; + + /* Read the first two samples from the state buffer: x[n-N], x[n-N-1] */ + x0 = *__SIMD32(px)++; + + /* Read the third and forth samples from the state buffer: x[n-N-2], x[n-N-3] */ + x2 = *__SIMD32(px)++; + + /* Loop over the number of taps. Unroll by a factor of 4. + ** Repeat until we've computed numTaps-(numTaps%4) coefficients. */ + tapCnt = numTaps >> 2; + + while (tapCnt > 0) + { + /* Read the first two coefficients using SIMD: b[N] and b[N-1] coefficients */ + c0 = *__SIMD32(pb)++; + + /* acc0 += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ + acc0 = __SMLALD(x0, c0, acc0); + + /* acc2 += b[N] * x[n-N-2] + b[N-1] * x[n-N-3] */ + acc2 = __SMLALD(x2, c0, acc2); + + /* pack x[n-N-1] and x[n-N-2] */ +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(x2, x0, 0); +#else + x1 = __PKHBT(x0, x2, 0); +#endif + + /* Read state x[n-N-4], x[n-N-5] */ + x0 = _SIMD32_OFFSET(px); + + /* acc1 += b[N] * x[n-N-1] + b[N-1] * x[n-N-2] */ + acc1 = __SMLALDX(x1, c0, acc1); + + /* pack x[n-N-3] and x[n-N-4] */ +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(x0, x2, 0); +#else + x1 = __PKHBT(x2, x0, 0); +#endif + + /* acc3 += b[N] * x[n-N-3] + b[N-1] * x[n-N-4] */ + acc3 = __SMLALDX(x1, c0, acc3); + + /* Read coefficients b[N-2], b[N-3] */ + c0 = *__SIMD32(pb)++; + + /* acc0 += b[N-2] * x[n-N-2] + b[N-3] * x[n-N-3] */ + acc0 = __SMLALD(x2, c0, acc0); + + /* Read state x[n-N-6], x[n-N-7] with offset */ + x2 = _SIMD32_OFFSET(px + 2U); + + /* acc2 += b[N-2] * x[n-N-4] + b[N-3] * x[n-N-5] */ + acc2 = __SMLALD(x0, c0, acc2); + + /* acc1 += b[N-2] * x[n-N-3] + b[N-3] * x[n-N-4] */ + acc1 = __SMLALDX(x1, c0, acc1); + + /* pack x[n-N-5] and x[n-N-6] */ +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(x2, x0, 0); +#else + x1 = __PKHBT(x0, x2, 0); +#endif + + /* acc3 += b[N-2] * x[n-N-5] + b[N-3] * x[n-N-6] */ + acc3 = __SMLALDX(x1, c0, acc3); + + /* Update state pointer for next state reading */ + px += 4U; + + /* Decrement tap count */ + tapCnt--; + + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps. + ** This is always be 2 taps since the filter length is even. */ + if ((numTaps & 0x3U) != 0U) + { + + /* Read last two coefficients */ + c0 = *__SIMD32(pb)++; + + /* Perform the multiply-accumulates */ + acc0 = __SMLALD(x0, c0, acc0); + acc2 = __SMLALD(x2, c0, acc2); + + /* pack state variables */ +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(x2, x0, 0); +#else + x1 = __PKHBT(x0, x2, 0); +#endif + + /* Read last state variables */ + x0 = *__SIMD32(px); + + /* Perform the multiply-accumulates */ + acc1 = __SMLALDX(x1, c0, acc1); + + /* pack state variables */ +#ifndef ARM_MATH_BIG_ENDIAN + x1 = __PKHBT(x0, x2, 0); +#else + x1 = __PKHBT(x2, x0, 0); +#endif + + /* Perform the multiply-accumulates */ + acc3 = __SMLALDX(x1, c0, acc3); + } + + /* The results in the 4 accumulators are in 2.30 format. Convert to 1.15 with saturation. + ** Then store the 4 outputs in the destination buffer. */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc0 >> 15), 16), __SSAT((acc1 >> 15), 16), 16); + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc2 >> 15), 16), __SSAT((acc3 >> 15), 16), 16); + +#else + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc1 >> 15), 16), __SSAT((acc0 >> 15), 16), 16); + + *__SIMD32(pDst)++ = + __PKHBT(__SSAT((acc3 >> 15), 16), __SSAT((acc2 >> 15), 16), 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + while (blkCnt > 0U) + { + /* Copy two samples into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Use SIMD to hold states and coefficients */ + px = pState; + pb = pCoeffs; + + tapCnt = numTaps >> 1U; + + do + { + acc0 += (q31_t) * px++ * *pb++; + acc0 += (q31_t) * px++ * *pb++; + tapCnt--; + } + while (tapCnt > 0U); + + /* The result is in 2.30 format. Convert to 1.15 with saturation. + ** Then store the output in the destination buffer. */ + *pDst++ = (q15_t) (__SSAT((acc0 >> 15), 16)); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Calculation of count for copying integer writes */ + tapCnt = (numTaps - 1U) >> 2; + + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + tapCnt--; + + } + + /* Calculation of count for remaining q15_t data */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* copy remaining data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + +#else /* ARM_MATH_CM0_FAMILY */ + + +/* Run the below code for Cortex-M0 */ + +void arm_fir_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + + + + q15_t *px; /* Temporary pointer for state buffer */ + q15_t *pb; /* Temporary pointer for coefficient buffer */ + q63_t acc; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Number of nTaps in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Initialize blkCnt with blockSize */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = pCoeffs; + + tapCnt = numTaps; + + /* Perform the multiply-accumulates */ + do + { + /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ + acc += (q31_t) * px++ * *pb++; + tapCnt--; + } while (tapCnt > 0U); + + /* The result is in 2.30 format. Convert to 1.15 + ** Then store the output in the destination buffer. */ + *pDst++ = (q15_t) __SSAT((acc >> 15U), 16); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy numTaps number of values */ + tapCnt = (numTaps - 1U); + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +} + +#endif /* #if defined (ARM_MATH_DSP) */ + + + + +/** + * @} end of FIR group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c new file mode 100644 index 0000000..b0a2723 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q31.c @@ -0,0 +1,353 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_q31.c + * Description: Q31 FIR filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @param[in] *S points to an instance of the Q31 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by log2(numTaps) bits. + * After all multiply-accumulates are performed, the 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. + * + * \par + * Refer to the function arm_fir_fast_q31() for a faster but less precise implementation of this filter for Cortex-M3 and Cortex-M4. + */ + +void arm_fir_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t x0, x1, x2; /* Temporary variables to hold state */ + q31_t c0; /* Temporary variable to hold coefficient value */ + q31_t *px; /* Temporary pointer for state */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + q63_t acc0, acc1, acc2; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt, tapCntN3; /* Loop counters */ + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize / 3; + blockSize = blockSize - (3 * blkCnt); + + tapCnt = numTaps / 3; + tapCntN3 = numTaps - (3 * tapCnt); + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Copy three new input samples into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Read the first two samples from the state buffer: + * x[n-numTaps], x[n-numTaps-1] */ + x0 = *(px++); + x1 = *(px++); + + /* Loop unrolling. Process 3 taps at a time. */ + i = tapCnt; + + while (i > 0U) + { + /* Read the b[numTaps] coefficient */ + c0 = *pb; + + /* Read x[n-numTaps-2] sample */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q63_t) x0 * c0); + acc1 += ((q63_t) x1 * c0); + acc2 += ((q63_t) x2 * c0); + + /* Read the coefficient and state */ + c0 = *(pb + 1U); + x0 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q63_t) x1 * c0); + acc1 += ((q63_t) x2 * c0); + acc2 += ((q63_t) x0 * c0); + + /* Read the coefficient and state */ + c0 = *(pb + 2U); + x1 = *(px++); + + /* update coefficient pointer */ + pb += 3U; + + /* Perform the multiply-accumulates */ + acc0 += ((q63_t) x2 * c0); + acc1 += ((q63_t) x0 * c0); + acc2 += ((q63_t) x1 * c0); + + /* Decrement the loop counter */ + i--; + } + + /* If the filter length is not a multiple of 3, compute the remaining filter taps */ + + i = tapCntN3; + + while (i > 0U) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x2 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q63_t) x0 * c0); + acc1 += ((q63_t) x1 * c0); + acc2 += ((q63_t) x2 * c0); + + /* Reuse the present sample states for next sample */ + x0 = x1; + x1 = x2; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 3 to process the next group of 3 samples */ + pState = pState + 3; + + /* The results in the 3 accumulators are in 2.30 format. Convert to 1.31 + ** Then store the 3 outputs in the destination buffer. */ + *pDst++ = (q31_t) (acc0 >> 31U); + *pDst++ = (q31_t) (acc1 >> 31U); + *pDst++ = (q31_t) (acc2 >> 31U); + + /* Decrement the samples loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 3, compute any remaining output samples here. + ** No loop unrolling is used. */ + + while (blockSize > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = (pCoeffs); + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + acc0 += (q63_t) * (px++) * (*(pb++)); + i--; + } while (i > 0U); + + /* The result is in 2.62 format. Convert to 1.31 + ** Then store the output in the destination buffer. */ + *pDst++ = (q31_t) (acc0 >> 31U); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the samples loop counter */ + blockSize--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (numTaps - 1U) >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + q31_t *px; /* Temporary pointer for state */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + q63_t acc; /* Accumulator */ + uint32_t numTaps = S->numTaps; /* Length of the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + + /* S->pState buffer contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Initialize blkCnt with blockSize */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = pCoeffs; + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ + acc += (q63_t) * px++ * *pb++; + i--; + } while (i > 0U); + + /* The result is in 2.62 format. Convert to 1.31 + ** Then store the output in the destination buffer. */ + *pDst++ = (q31_t) (acc >> 31U); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the starting of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + /* Copy numTaps number of values */ + tapCnt = numTaps - 1U; + + /* Copy the data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c new file mode 100644 index 0000000..4f795d7 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_q7.c @@ -0,0 +1,385 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_q7.c + * Description: Q7 FIR filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR + * @{ + */ + +/** + * @param[in] *S points to an instance of the Q7 FIR filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 32-bit internal accumulator. + * Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result. + * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * The accumulator is converted to 18.7 format by discarding the low 7 bits. + * Finally, the result is truncated to 1.7 format. + */ + +void arm_fir_q7( + const arm_fir_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t *pState = S->pState; /* State pointer */ + q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q7_t *pStateCurnt; /* Points to the current sample of the state */ + q7_t x0, x1, x2, x3; /* Temporary variables to hold state */ + q7_t c0; /* Temporary variable to hold coefficient value */ + q7_t *px; /* Temporary pointer for state */ + q7_t *pb; /* Temporary pointer for coefficient buffer */ + q31_t acc0, acc1, acc2, acc3; /* Accumulators */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t i, tapCnt, blkCnt; /* Loop counters */ + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Apply loop unrolling and compute 4 output values simultaneously. + * The variables acc0 ... acc3 hold output values that are being computed: + * + * acc0 = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] + * acc1 = b[numTaps-1] * x[n-numTaps] + b[numTaps-2] * x[n-numTaps-1] + b[numTaps-3] * x[n-numTaps-2] +...+ b[0] * x[1] + * acc2 = b[numTaps-1] * x[n-numTaps+1] + b[numTaps-2] * x[n-numTaps] + b[numTaps-3] * x[n-numTaps-1] +...+ b[0] * x[2] + * acc3 = b[numTaps-1] * x[n-numTaps+2] + b[numTaps-2] * x[n-numTaps+1] + b[numTaps-3] * x[n-numTaps] +...+ b[0] * x[3] + */ + blkCnt = blockSize >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Copy four new input samples into the state buffer */ + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + *pStateCurnt++ = *pSrc++; + + /* Set all accumulators to zero */ + acc0 = 0; + acc1 = 0; + acc2 = 0; + acc3 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Read the first three samples from the state buffer: + * x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2] */ + x0 = *(px++); + x1 = *(px++); + x2 = *(px++); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + i = tapCnt; + + while (i > 0U) + { + /* Read the b[numTaps] coefficient */ + c0 = *pb; + + /* Read x[n-numTaps-3] sample */ + x3 = *px; + + /* acc0 += b[numTaps] * x[n-numTaps] */ + acc0 += ((q15_t) x0 * c0); + + /* acc1 += b[numTaps] * x[n-numTaps-1] */ + acc1 += ((q15_t) x1 * c0); + + /* acc2 += b[numTaps] * x[n-numTaps-2] */ + acc2 += ((q15_t) x2 * c0); + + /* acc3 += b[numTaps] * x[n-numTaps-3] */ + acc3 += ((q15_t) x3 * c0); + + /* Read the b[numTaps-1] coefficient */ + c0 = *(pb + 1U); + + /* Read x[n-numTaps-4] sample */ + x0 = *(px + 1U); + + /* Perform the multiply-accumulates */ + acc0 += ((q15_t) x1 * c0); + acc1 += ((q15_t) x2 * c0); + acc2 += ((q15_t) x3 * c0); + acc3 += ((q15_t) x0 * c0); + + /* Read the b[numTaps-2] coefficient */ + c0 = *(pb + 2U); + + /* Read x[n-numTaps-5] sample */ + x1 = *(px + 2U); + + /* Perform the multiply-accumulates */ + acc0 += ((q15_t) x2 * c0); + acc1 += ((q15_t) x3 * c0); + acc2 += ((q15_t) x0 * c0); + acc3 += ((q15_t) x1 * c0); + + /* Read the b[numTaps-3] coefficients */ + c0 = *(pb + 3U); + + /* Read x[n-numTaps-6] sample */ + x2 = *(px + 3U); + + /* Perform the multiply-accumulates */ + acc0 += ((q15_t) x3 * c0); + acc1 += ((q15_t) x0 * c0); + acc2 += ((q15_t) x1 * c0); + acc3 += ((q15_t) x2 * c0); + + /* update coefficient pointer */ + pb += 4U; + px += 4U; + + /* Decrement the loop counter */ + i--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + + i = numTaps - (tapCnt * 4U); + while (i > 0U) + { + /* Read coefficients */ + c0 = *(pb++); + + /* Fetch 1 state variable */ + x3 = *(px++); + + /* Perform the multiply-accumulates */ + acc0 += ((q15_t) x0 * c0); + acc1 += ((q15_t) x1 * c0); + acc2 += ((q15_t) x2 * c0); + acc3 += ((q15_t) x3 * c0); + + /* Reuse the present sample states for next sample */ + x0 = x1; + x1 = x2; + x2 = x3; + + /* Decrement the loop counter */ + i--; + } + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 4; + + /* The results in the 4 accumulators are in 2.62 format. Convert to 1.31 + ** Then store the 4 outputs in the destination buffer. */ + acc0 = __SSAT((acc0 >> 7U), 8); + *pDst++ = acc0; + acc1 = __SSAT((acc1 >> 7U), 8); + *pDst++ = acc1; + acc2 = __SSAT((acc2 >> 7U), 8); + *pDst++ = acc2; + acc3 = __SSAT((acc3 >> 7U), 8); + *pDst++ = acc3; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 4U; + + while (blkCnt > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set the accumulator to zero */ + acc0 = 0; + + /* Initialize state pointer */ + px = pState; + + /* Initialize Coefficient pointer */ + pb = (pCoeffs); + + i = numTaps; + + /* Perform the multiply-accumulates */ + do + { + acc0 += (q15_t) * (px++) * (*(pb++)); + i--; + } while (i > 0U); + + /* The result is in 2.14 format. Convert to 1.7 + ** Then store the output in the destination buffer. */ + *pDst++ = __SSAT((acc0 >> 7U), 8); + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the samples loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + tapCnt = (numTaps - 1U) >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + uint32_t numTaps = S->numTaps; /* Number of taps in the filter */ + uint32_t i, blkCnt; /* Loop counters */ + q7_t *pState = S->pState; /* State pointer */ + q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q7_t *px, *pb; /* Temporary pointers to state and coeff */ + q31_t acc = 0; /* Accumlator */ + q7_t *pStateCurnt; /* Points to the current sample of the state */ + + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = S->pState + (numTaps - 1U); + + /* Initialize blkCnt with blockSize */ + blkCnt = blockSize; + + /* Perform filtering upto BlockSize - BlockSize%4 */ + while (blkCnt > 0U) + { + /* Copy one sample at a time into state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Set accumulator to zero */ + acc = 0; + + /* Initialize state pointer of type q7 */ + px = pState; + + /* Initialize coeff pointer of type q7 */ + pb = pCoeffs; + + + i = numTaps; + + while (i > 0U) + { + /* acc = b[numTaps-1] * x[n-numTaps-1] + b[numTaps-2] * x[n-numTaps-2] + b[numTaps-3] * x[n-numTaps-3] +...+ b[0] * x[0] */ + acc += (q15_t) * px++ * *pb++; + i--; + } + + /* Store the 1.7 format filter output in destination buffer */ + *pDst++ = (q7_t) __SSAT((acc >> 7), 8); + + /* Advance the state pointer by 1 to process the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. + ** Now copy the last numTaps - 1 samples to the satrt of the state buffer. + ** This prepares the state buffer for the next function call. */ + + + /* Points to the start of the state buffer */ + pStateCurnt = S->pState; + + + /* Copy numTaps number of values */ + i = (numTaps - 1U); + + /* Copy q7_t data */ + while (i > 0U) + { + *pStateCurnt++ = *pState++; + i--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c new file mode 100644 index 0000000..fe9aacd --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_f32.c @@ -0,0 +1,433 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_sparse_f32.c + * Description: Floating-point sparse FIR filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup FIR_Sparse Finite Impulse Response (FIR) Sparse Filters + * + * This group of functions implements sparse FIR filters. + * Sparse FIR filters are equivalent to standard FIR filters except that most of the coefficients are equal to zero. + * Sparse filters are used for simulating reflections in communications and audio applications. + * + * There are separate functions for Q7, Q15, Q31, and floating-point data types. + * The functions operate on blocks of input and output data and each call to the function processes + * blockSize samples through the filter. pSrc and + * pDst points to input and output arrays respectively containing blockSize values. + * + * \par Algorithm: + * The sparse filter instant structure contains an array of tap indices pTapDelay which specifies the locations of the non-zero coefficients. + * This is in addition to the coefficient array b. + * The implementation essentially skips the multiplications by zero and leads to an efficient realization. + *
+ *     y[n] = b[0] * x[n-pTapDelay[0]] + b[1] * x[n-pTapDelay[1]] + b[2] * x[n-pTapDelay[2]] + ...+ b[numTaps-1] * x[n-pTapDelay[numTaps-1]]
+ * 
+ * \par + * \image html FIRSparse.gif "Sparse FIR filter. b[n] represents the filter coefficients" + * \par + * pCoeffs points to a coefficient array of size numTaps; + * pTapDelay points to an array of nonzero indices and is also of size numTaps; + * pState points to a state array of size maxDelay + blockSize, where + * maxDelay is the largest offset value that is ever used in the pTapDelay array. + * Some of the processing functions also require temporary working buffers. + * + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient and offset arrays may be shared among several instances while state variable arrays cannot be shared. + * There are separate instance structure declarations for each of the 4 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * To do this manually without calling the init function, assign the follow subfields of the instance structure: + * numTaps, pCoeffs, pTapDelay, maxDelay, stateIndex, pState. Also set all of the values in pState to zero. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros before static initialization. + * The code below statically initializes each of the 4 different data type filter instance structures + *
+ *arm_fir_sparse_instance_f32 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};
+ *arm_fir_sparse_instance_q31 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};
+ *arm_fir_sparse_instance_q15 S = {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};
+ *arm_fir_sparse_instance_q7 S =  {numTaps, 0, pState, pCoeffs, maxDelay, pTapDelay};
+ * 
+ * \par + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the sparse FIR filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Processing function for the floating-point sparse FIR filter. + * @param[in] *S points to an instance of the floating-point sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + */ + +void arm_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize) +{ + + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *px; /* Scratch buffer pointer */ + float32_t *py = pState; /* Temporary pointers for state buffer */ + float32_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + float32_t *pOut; /* Destination pointer */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + float32_t coeff = *pCoeffs++; /* Read the first coefficient value */ + + + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1, + (int32_t *) pSrc, 1, blockSize); + + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer */ + px = pb; + + /* Working pointer for destination buffer */ + pOut = pDst; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 Multiplications at a time. */ + blkCnt = blockSize >> 2U; + + while (blkCnt > 0U) + { + /* Perform Multiplications and store in destination buffer */ + *pOut++ = *px++ * coeff; + *pOut++ = *px++ * coeff; + *pOut++ = *px++ * coeff; + *pOut++ = *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform Multiplications and store in destination buffer */ + *pOut++ = *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 2U; + + while (tapCnt > 0U) + { + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer */ + px = pb; + + /* Working pointer for destination buffer */ + pOut = pDst; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2U; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pOut++ += *px++ * coeff; + *pOut++ += *px++ * coeff; + *pOut++ += *px++ * coeff; + *pOut++ += *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pOut++ += *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - + (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Compute last tap without the final read of pTapDelay */ + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer */ + px = pb; + + /* Working pointer for destination buffer */ + pOut = pDst; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2U; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pOut++ += *px++ * coeff; + *pOut++ += *px++ * coeff; + *pOut++ += *px++ * coeff; + *pOut++ += *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pOut++ += *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + +/* Run the below code for Cortex-M0 */ + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiplications and store in destination buffer */ + *pOut++ = *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 2U; + + while (tapCnt > 0U) + { + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer */ + px = pb; + + /* Working pointer for destination buffer */ + pOut = pDst; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pOut++ += *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = + ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Compute last tap without the final read of pTapDelay */ + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer */ + px = pb; + + /* Working pointer for destination buffer */ + pOut = pDst; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pOut++ += *px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c new file mode 100644 index 0000000..191f8bb --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_f32.c @@ -0,0 +1,95 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_sparse_init_f32.c + * Description: Floating-point sparse FIR filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Initialization function for the floating-point sparse FIR filter. + * @param[in,out] *S points to an instance of the floating-point sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + * + * Description: + * \par + * pCoeffs holds the filter coefficients and has length numTaps. + * pState holds the filter's state variables and must be of length + * maxDelay + blockSize, where maxDelay + * is the maximum number of delay line values. + * blockSize is the + * number of samples processed by the arm_fir_sparse_f32() function. + */ + +void arm_fir_sparse_init_f32( + arm_fir_sparse_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign TapDelay pointer */ + S->pTapDelay = pTapDelay; + + /* Assign MaxDelay */ + S->maxDelay = maxDelay; + + /* reset the stateIndex to 0 */ + S->stateIndex = 0U; + + /* Clear state buffer and size is always maxDelay + blockSize */ + memset(pState, 0, (maxDelay + blockSize) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c new file mode 100644 index 0000000..297c5fa --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q15.c @@ -0,0 +1,95 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_sparse_init_q15.c + * Description: Q15 sparse FIR filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Initialization function for the Q15 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q15 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + * + * Description: + * \par + * pCoeffs holds the filter coefficients and has length numTaps. + * pState holds the filter's state variables and must be of length + * maxDelay + blockSize, where maxDelay + * is the maximum number of delay line values. + * blockSize is the + * number of words processed by arm_fir_sparse_q15() function. + */ + +void arm_fir_sparse_init_q15( + arm_fir_sparse_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign TapDelay pointer */ + S->pTapDelay = pTapDelay; + + /* Assign MaxDelay */ + S->maxDelay = maxDelay; + + /* reset the stateIndex to 0 */ + S->stateIndex = 0U; + + /* Clear state buffer and size is always maxDelay + blockSize */ + memset(pState, 0, (maxDelay + blockSize) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c new file mode 100644 index 0000000..3eb8d47 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q31.c @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_sparse_init_q31.c + * Description: Q31 sparse FIR filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Initialization function for the Q31 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q31 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + * + * Description: + * \par + * pCoeffs holds the filter coefficients and has length numTaps. + * pState holds the filter's state variables and must be of length + * maxDelay + blockSize, where maxDelay + * is the maximum number of delay line values. + * blockSize is the number of words processed by arm_fir_sparse_q31() function. + */ + +void arm_fir_sparse_init_q31( + arm_fir_sparse_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign TapDelay pointer */ + S->pTapDelay = pTapDelay; + + /* Assign MaxDelay */ + S->maxDelay = maxDelay; + + /* reset the stateIndex to 0 */ + S->stateIndex = 0U; + + /* Clear state buffer and size is always maxDelay + blockSize */ + memset(pState, 0, (maxDelay + blockSize) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c new file mode 100644 index 0000000..c2cb7b0 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_init_q7.c @@ -0,0 +1,95 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_sparse_init_q7.c + * Description: Q7 sparse FIR filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Initialization function for the Q7 sparse FIR filter. + * @param[in,out] *S points to an instance of the Q7 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] *pCoeffs points to the array of filter coefficients. + * @param[in] *pState points to the state buffer. + * @param[in] *pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + * @return none + * + * Description: + * \par + * pCoeffs holds the filter coefficients and has length numTaps. + * pState holds the filter's state variables and must be of length + * maxDelay + blockSize, where maxDelay + * is the maximum number of delay line values. + * blockSize is the + * number of samples processed by the arm_fir_sparse_q7() function. + */ + +void arm_fir_sparse_init_q7( + arm_fir_sparse_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Assign TapDelay pointer */ + S->pTapDelay = pTapDelay; + + /* Assign MaxDelay */ + S->maxDelay = maxDelay; + + /* reset the stateIndex to 0 */ + S->stateIndex = 0U; + + /* Clear state buffer and size is always maxDelay + blockSize */ + memset(pState, 0, (maxDelay + blockSize) * sizeof(q7_t)); + + /* Assign state pointer */ + S->pState = pState; + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c new file mode 100644 index 0000000..663b6e0 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q15.c @@ -0,0 +1,470 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_sparse_q15.c + * Description: Q15 sparse FIR filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Processing function for the Q15 sparse FIR filter. + * @param[in] *S points to an instance of the Q15 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] *pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The 1.15 x 1.15 multiplications yield a 2.30 result and these are added to a 2.30 accumulator. + * Thus the full precision of the multiplications is maintained but there is only a single guard bit in the accumulator. + * If the accumulator result overflows it will wrap around rather than saturate. + * After all multiply-accumulates are performed, the 2.30 accumulator is truncated to 2.15 format and then saturated to 1.15 format. + * In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits. + */ + + +void arm_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize) +{ + + q15_t *pState = S->pState; /* State pointer */ + q15_t *pIn = pSrc; /* Working pointer for input */ + q15_t *pOut = pDst; /* Working pointer for output */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *px; /* Temporary pointers for scratch buffer */ + q15_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + q15_t *py = pState; /* Temporary pointers for state buffer */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Filter order */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + q15_t coeff = *pCoeffs++; /* Read the first coefficient value */ + q31_t *pScr2 = pScratchOut; /* Working pointer for pScratchOut */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in1, in2; /* Temporary variables */ + + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_q15(py, delaySize, &S->stateIndex, 1, pIn, 1, blockSize); + + /* Loop over the number of taps. */ + tapCnt = numTaps; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 multiplications at a time. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 2U; + + while (tapCnt > 0U) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pScratchOut++ += (q31_t) * px++ * coeff; + *pScratchOut++ += (q31_t) * px++ * coeff; + *pScratchOut++ += (q31_t) * px++ * coeff; + *pScratchOut++ += (q31_t) * px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pScratchOut++ += (q31_t) * px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Compute last tap without the final read of pTapDelay */ + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pScratchOut++ += (q31_t) * px++ * coeff; + *pScratchOut++ += (q31_t) * px++ * coeff; + *pScratchOut++ += (q31_t) * px++ * coeff; + *pScratchOut++ += (q31_t) * px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pScratchOut++ += (q31_t) * px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* All the output values are in pScratchOut buffer. + Convert them into 1.15 format, saturate and store in the destination buffer. */ + /* Loop over the blockSize. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + in1 = *pScr2++; + in2 = *pScr2++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT((q15_t) __SSAT(in1 >> 15, 16), (q15_t) __SSAT(in2 >> 15, 16), + 16); + +#else + *__SIMD32(pOut)++ = + __PKHBT((q15_t) __SSAT(in2 >> 15, 16), (q15_t) __SSAT(in1 >> 15, 16), + 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + in1 = *pScr2++; + + in2 = *pScr2++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pOut)++ = + __PKHBT((q15_t) __SSAT(in1 >> 15, 16), (q15_t) __SSAT(in2 >> 15, 16), + 16); + +#else + + *__SIMD32(pOut)++ = + __PKHBT((q15_t) __SSAT(in2 >> 15, 16), (q15_t) __SSAT(in1 >> 15, 16), + 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + + blkCnt--; + + } + + /* If the blockSize is not a multiple of 4, + remaining samples are processed in the below loop */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16); + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_q15(py, delaySize, &S->stateIndex, 1, pIn, 1, blockSize); + + /* Loop over the number of taps. */ + tapCnt = numTaps; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 2U; + + while (tapCnt > 0U) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pScratchOut++ += (q31_t) * px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Compute last tap without the final read of pTapDelay */ + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q15(py, delaySize, &readIndex, 1, + pb, pb, blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + *pScratchOut++ += (q31_t) * px++ * coeff; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* All the output values are in pScratchOut buffer. + Convert them into 1.15 format, saturate and store in the destination buffer. */ + /* Loop over the blockSize. */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + *pOut++ = (q15_t) __SSAT(*pScr2++ >> 15, 16); + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c new file mode 100644 index 0000000..3fd3da0 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q31.c @@ -0,0 +1,450 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_sparse_q31.c + * Description: Q31 sparse FIR filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + + +/** + * @addtogroup FIR_Sparse + * @{ + */ + +/** + * @brief Processing function for the Q31 sparse FIR filter. + * @param[in] *S points to an instance of the Q31 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The 1.31 x 1.31 multiplications are truncated to 2.30 format. + * This leads to loss of precision on the intermediate multiplications and provides only a single guard bit. + * If the accumulator result overflows, it wraps around rather than saturate. + * In order to avoid overflows the input signal or coefficients must be scaled down by log2(numTaps) bits. + */ + +void arm_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize) +{ + + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *px; /* Scratch buffer pointer */ + q31_t *py = pState; /* Temporary pointers for state buffer */ + q31_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + q31_t *pOut; /* Destination pointer */ + q63_t out; /* Temporary output variable */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Filter order */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + q31_t coeff = *pCoeffs++; /* Read the first coefficient value */ + q31_t in; + + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_f32((int32_t *) py, delaySize, &S->stateIndex, 1, + (int32_t *) pSrc, 1, blockSize); + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pOut = pDst; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 Multiplications at a time. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + /* Perform Multiplications and store in the destination buffer */ + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform Multiplications and store in the destination buffer */ + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 2U; + + while (tapCnt > 0U) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pOut = pDst; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Compute last tap without the final read of pTapDelay */ + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pOut = pDst; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Working output pointer is updated */ + pOut = pDst; + + /* Output is converted into 1.31 format. */ + /* Loop over the blockSize. Unroll by a factor of 4. + * process 4 output samples at a time. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + in = *pOut << 1; + *pOut++ = in; + in = *pOut << 1; + *pOut++ = in; + in = *pOut << 1; + *pOut++ = in; + in = *pOut << 1; + *pOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * process the remaining output samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + in = *pOut << 1; + *pOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiplications and store in the destination buffer */ + *pOut++ = (q31_t) (((q63_t) * px++ * coeff) >> 32); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 2U; + + while (tapCnt > 0U) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pOut = pDst; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = (int32_t) (S->stateIndex - blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Compute last tap without the final read of pTapDelay */ + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_f32((int32_t *) py, delaySize, &readIndex, 1, + (int32_t *) pb, (int32_t *) pb, blockSize, 1, + blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pOut = pDst; + + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + out = *pOut; + out += ((q63_t) * px++ * coeff) >> 32; + *pOut++ = (q31_t) (out); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Working output pointer is updated */ + pOut = pDst; + + /* Output is converted into 1.31 format. */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + in = *pOut << 1; + *pOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c new file mode 100644 index 0000000..252ba95 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_fir_sparse_q7.c @@ -0,0 +1,469 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fir_sparse_q7.c + * Description: Q7 sparse FIR filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup FIR_Sparse + * @{ + */ + + +/** + * @brief Processing function for the Q7 sparse FIR filter. + * @param[in] *S points to an instance of the Q7 sparse FIR structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data + * @param[in] *pScratchIn points to a temporary buffer of size blockSize. + * @param[in] *pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 32-bit internal accumulator. + * Both coefficients and state variables are represented in 1.7 format and multiplications yield a 2.14 result. + * The 2.14 intermediate results are accumulated in a 32-bit accumulator in 18.14 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * The accumulator is then converted to 18.7 format by discarding the low 7 bits. + * Finally, the result is truncated to 1.7 format. + */ + +void arm_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + q7_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize) +{ + + q7_t *pState = S->pState; /* State pointer */ + q7_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q7_t *px; /* Scratch buffer pointer */ + q7_t *py = pState; /* Temporary pointers for state buffer */ + q7_t *pb = pScratchIn; /* Temporary pointers for scratch buffer */ + q7_t *pOut = pDst; /* Destination pointer */ + int32_t *pTapDelay = S->pTapDelay; /* Pointer to the array containing offset of the non-zero tap values. */ + uint32_t delaySize = S->maxDelay + blockSize; /* state length */ + uint16_t numTaps = S->numTaps; /* Filter order */ + int32_t readIndex; /* Read index of the state buffer */ + uint32_t tapCnt, blkCnt; /* loop counters */ + q7_t coeff = *pCoeffs++; /* Read the coefficient value */ + q31_t *pScr2 = pScratchOut; /* Working pointer for scratch buffer of output values */ + q31_t in; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t in1, in2, in3, in4; + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1, + blockSize); + + /* Loop over the number of taps. */ + tapCnt = numTaps; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 multiplications at a time. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 2U; + + while (tapCnt > 0U) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - + (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Compute last tap without the final read of pTapDelay */ + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize. Unroll by a factor of 4. + * Compute 4 MACS at a time. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + * compute the remaining samples */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* All the output values are in pScratchOut buffer. + Convert them into 1.15 format, saturate and store in the destination buffer. */ + /* Loop over the blockSize. */ + blkCnt = blockSize >> 2; + + while (blkCnt > 0U) + { + in1 = (q7_t) __SSAT(*pScr2++ >> 7, 8); + in2 = (q7_t) __SSAT(*pScr2++ >> 7, 8); + in3 = (q7_t) __SSAT(*pScr2++ >> 7, 8); + in4 = (q7_t) __SSAT(*pScr2++ >> 7, 8); + + *__SIMD32(pOut)++ = __PACKq7(in1, in2, in3, in4); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, + remaining samples are processed in the below loop */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* BlockSize of Input samples are copied into the state buffer */ + /* StateIndex points to the starting position to write in the state buffer */ + arm_circularWrite_q7(py, (int32_t) delaySize, &S->stateIndex, 1, pSrc, 1, + blockSize); + + /* Loop over the number of taps. */ + tapCnt = numTaps; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform multiplication and store in the scratch buffer */ + *pScratchOut++ = ((q31_t) * px++ * coeff); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Loop over the number of taps. */ + tapCnt = (uint32_t) numTaps - 2U; + + while (tapCnt > 0U) + { + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Load the coefficient value and + * increment the coefficient buffer for the next set of state values */ + coeff = *pCoeffs++; + + /* Read Index, from where the state buffer should be read, is calculated. */ + readIndex = + ((int32_t) S->stateIndex - (int32_t) blockSize) - *pTapDelay++; + + /* Wraparound of readIndex */ + if (readIndex < 0) + { + readIndex += (int32_t) delaySize; + } + + /* Decrement the tap loop counter */ + tapCnt--; + } + + /* Compute last tap without the final read of pTapDelay */ + + /* Working pointer for state buffer is updated */ + py = pState; + + /* blockSize samples are read from the state buffer */ + arm_circularRead_q7(py, (int32_t) delaySize, &readIndex, 1, pb, pb, + (int32_t) blockSize, 1, blockSize); + + /* Working pointer for the scratch buffer of state values */ + px = pb; + + /* Working pointer for scratch buffer of output values */ + pScratchOut = pScr2; + + /* Loop over the blockSize */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Perform Multiply-Accumulate */ + in = *pScratchOut + ((q31_t) * px++ * coeff); + *pScratchOut++ = in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* All the output values are in pScratchOut buffer. + Convert them into 1.15 format, saturate and store in the destination buffer. */ + /* Loop over the blockSize. */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + *pOut++ = (q7_t) __SSAT(*pScr2++ >> 7, 8); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of FIR_Sparse group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c new file mode 100644 index 0000000..7cccd4a --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_f32.c @@ -0,0 +1,435 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_iir_lattice_f32.c + * Description: Floating-point IIR Lattice filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup IIR_Lattice Infinite Impulse Response (IIR) Lattice Filters + * + * This set of functions implements lattice filters + * for Q15, Q31 and floating-point data types. Lattice filters are used in a + * variety of adaptive filter applications. The filter structure has feedforward and + * feedback components and the net impulse response is infinite length. + * The functions operate on blocks + * of input and output data and each call to the function processes + * blockSize samples through the filter. pSrc and + * pDst point to input and output arrays containing blockSize values. + + * \par Algorithm: + * \image html IIRLattice.gif "Infinite Impulse Response Lattice filter" + *
+ *    fN(n)   =  x(n)
+ *    fm-1(n) = fm(n) - km * gm-1(n-1)   for m = N, N-1, ...1
+ *    gm(n)   = km * fm-1(n) + gm-1(n-1) for m = N, N-1, ...1
+ *    y(n)    = vN * gN(n) + vN-1 * gN-1(n) + ...+ v0 * g0(n)
+ * 
+ * \par + * pkCoeffs points to array of reflection coefficients of size numStages. + * Reflection coefficients are stored in time-reversed order. + * \par + *
+ *    {kN, kN-1, ....k1}
+ * 
+ * pvCoeffs points to the array of ladder coefficients of size (numStages+1). + * Ladder coefficients are stored in time-reversed order. + * \par + *
+ *    {vN, vN-1, ...v0}
+ * 
+ * pState points to a state array of size numStages + blockSize. + * The state variables shown in the figure above (the g values) are stored in the pState array. + * The state variables are updated after each block of data is processed; the coefficients are untouched. + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter. + * Coefficient arrays may be shared among several instances while state variable arrays cannot be shared. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * To do this manually without calling the init function, assign the follow subfields of the instance structure: + * numStages, pkCoeffs, pvCoeffs, pState. Also set all of the values in pState to zero. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros and then manually initialize the instance structure as follows: + *
+ *arm_iir_lattice_instance_f32 S = {numStages, pState, pkCoeffs, pvCoeffs};
+ *arm_iir_lattice_instance_q31 S = {numStages, pState, pkCoeffs, pvCoeffs};
+ *arm_iir_lattice_instance_q15 S = {numStages, pState, pkCoeffs, pvCoeffs};
+ * 
+ * \par + * where numStages is the number of stages in the filter; pState points to the state buffer array; + * pkCoeffs points to array of the reflection coefficients; pvCoeffs points to the array of ladder coefficients. + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the IIR lattice filter functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + +/** + * @brief Processing function for the floating-point IIR lattice filter. + * @param[in] *S points to an instance of the floating-point IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + +void arm_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t fnext1, gcurr1, gnext; /* Temporary variables for lattice stages */ + float32_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* temporary variables for counts */ + float32_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + float32_t *pState; /* State pointer */ + float32_t *pStateCurnt; /* State current pointer */ + float32_t k1, k2; + float32_t v1, v2, v3, v4; + float32_t gcurr2; + float32_t fnext2; + + /* initialise loop count */ + blkCnt = blockSize; + + /* initialise state pointer */ + pState = &S->pState[0]; + + /* Sample processing */ + while (blkCnt > 0U) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fnext2 = *pSrc++; + + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + + /* Set accumulator to zero */ + acc = 0.0; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = (numStages) >> 2; + + while (tapCnt > 0U) + { + /* Read gN-1(n-1) from state buffer */ + gcurr1 = *px1; + + /* read reflection coefficient kN */ + k1 = *pk; + + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext1 = fnext2 - (k1 * gcurr1); + + /* read ladder coefficient vN */ + v1 = *pv; + + /* read next reflection coefficient kN-1 */ + k2 = *(pk + 1U); + + /* Read gN-2(n-1) from state buffer */ + gcurr2 = *(px1 + 1U); + + /* read next ladder coefficient vN-1 */ + v2 = *(pv + 1U); + + /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */ + fnext2 = fnext1 - (k2 * gcurr2); + + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = gcurr1 + (k1 * fnext1); + + /* read reflection coefficient kN-2 */ + k1 = *(pk + 2U); + + /* write gN(n) into state for next sample processing */ + *px2++ = gnext; + + /* Read gN-3(n-1) from state buffer */ + gcurr1 = *(px1 + 2U); + + /* y(n) += gN(n) * vN */ + acc += (gnext * v1); + + /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */ + fnext1 = fnext2 - (k1 * gcurr1); + + /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */ + gnext = gcurr2 + (k2 * fnext2); + + /* Read gN-4(n-1) from state buffer */ + gcurr2 = *(px1 + 3U); + + /* y(n) += gN-1(n) * vN-1 */ + acc += (gnext * v2); + + /* read reflection coefficient kN-3 */ + k2 = *(pk + 3U); + + /* write gN-1(n) into state for next sample processing */ + *px2++ = gnext; + + /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */ + fnext2 = fnext1 - (k2 * gcurr2); + + /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */ + gnext = gcurr1 + (k1 * fnext1); + + /* read ladder coefficient vN-2 */ + v3 = *(pv + 2U); + + /* y(n) += gN-2(n) * vN-2 */ + acc += (gnext * v3); + + /* write gN-2(n) into state for next sample processing */ + *px2++ = gnext; + + /* update pointer */ + pk += 4U; + + /* gN-3(n) = kN-3 * fN-4(n) + gN-4(n-1) */ + gnext = (fnext2 * k2) + gcurr2; + + /* read next ladder coefficient vN-3 */ + v4 = *(pv + 3U); + + /* y(n) += gN-4(n) * vN-4 */ + acc += (gnext * v4); + + /* write gN-3(n) into state for next sample processing */ + *px2++ = gnext; + + /* update pointers */ + px1 += 4U; + pv += 4U; + + tapCnt--; + + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = (numStages) % 0x4U; + + while (tapCnt > 0U) + { + gcurr1 = *px1++; + /* Process sample for last taps */ + fnext1 = fnext2 - ((*pk) * gcurr1); + gnext = (fnext1 * (*pk++)) + gcurr1; + /* Output samples for last taps */ + acc += (gnext * (*pv++)); + *px2++ = gnext; + fnext2 = fnext1; + + tapCnt--; + + } + + /* y(n) += g0(n) * v0 */ + acc += (fnext2 * (*pv)); + + *px2++ = fnext2; + + /* write out into pDst */ + *pDst++ = acc; + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 1U; + + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + tapCnt = numStages >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + + } + + /* Calculate remaining number of copies */ + tapCnt = (numStages) % 0x4U; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } +} + +#else + +void arm_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + float32_t fcurr, fnext = 0, gcurr, gnext; /* Temporary variables for lattice stages */ + float32_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* temporary variables for counts */ + float32_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + float32_t *pState; /* State pointer */ + float32_t *pStateCurnt; /* State current pointer */ + + + /* Run the below code for Cortex-M0 */ + + blkCnt = blockSize; + + pState = &S->pState[0]; + + /* Sample processing */ + while (blkCnt > 0U) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0.0f; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + + /* Process sample for numStages */ + tapCnt = numStages; + + while (tapCnt > 0U) + { + gcurr = *px1++; + /* Process sample for last taps */ + fnext = fcurr - ((*pk) * gcurr); + gnext = (fnext * (*pk++)) + gcurr; + + /* Output samples for last taps */ + acc += (gnext * (*pv++)); + *px2++ = gnext; + fcurr = fnext; + + /* Decrementing loop counter */ + tapCnt--; + + } + + /* y(n) += g0(n) * v0 */ + acc += (fnext * (*pv)); + + *px2++ = fnext; + + /* write out into pDst */ + *pDst++ = acc; + + /* Advance the state pointer by 1 to process the next group of samples */ + pState = pState + 1U; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + tapCnt = numStages; + + /* Copy the data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +} + +#endif /* #if defined (ARM_MATH_DSP) */ + + +/** + * @} end of IIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c new file mode 100644 index 0000000..f20a21b --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_f32.c @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_iir_lattice_init_f32.c + * Description: Floating-point IIR lattice filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + +/** + * @brief Initialization function for the floating-point IIR lattice filter. + * @param[in] *S points to an instance of the floating-point IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_iir_lattice_init_f32( + arm_iir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pkCoeffs, + float32_t * pvCoeffs, + float32_t * pState, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign reflection coefficient pointer */ + S->pkCoeffs = pkCoeffs; + + /* Assign ladder coefficient pointer */ + S->pvCoeffs = pvCoeffs; + + /* Clear state buffer and size is always blockSize + numStages */ + memset(pState, 0, (numStages + blockSize) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + + +} + + /** + * @} end of IIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c new file mode 100644 index 0000000..6cae944 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q15.c @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_iir_lattice_init_q15.c + * Description: Q15 IIR lattice filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + + /** + * @brief Initialization function for the Q15 IIR lattice filter. + * @param[in] *S points to an instance of the Q15 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process per call. + * @return none. + */ + +void arm_iir_lattice_init_q15( + arm_iir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pkCoeffs, + q15_t * pvCoeffs, + q15_t * pState, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign reflection coefficient pointer */ + S->pkCoeffs = pkCoeffs; + + /* Assign ladder coefficient pointer */ + S->pvCoeffs = pvCoeffs; + + /* Clear state buffer and size is always blockSize + numStages */ + memset(pState, 0, (numStages + blockSize) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + +} + +/** + * @} end of IIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c new file mode 100644 index 0000000..fe9869e --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_init_q31.c @@ -0,0 +1,79 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_iir_lattice_init_q31.c + * Description: Initialization function for the Q31 IIR lattice filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + + /** + * @brief Initialization function for the Q31 IIR lattice filter. + * @param[in] *S points to an instance of the Q31 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] *pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] *pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] *pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_iir_lattice_init_q31( + arm_iir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pkCoeffs, + q31_t * pvCoeffs, + q31_t * pState, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numStages = numStages; + + /* Assign reflection coefficient pointer */ + S->pkCoeffs = pkCoeffs; + + /* Assign ladder coefficient pointer */ + S->pvCoeffs = pvCoeffs; + + /* Clear state buffer and size is always blockSize + numStages */ + memset(pState, 0, (numStages + blockSize) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + + +} + +/** + * @} end of IIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c new file mode 100644 index 0000000..9c70b68 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q15.c @@ -0,0 +1,452 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_iir_lattice_q15.c + * Description: Q15 IIR lattice filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + +/** + * @brief Processing function for the Q15 IIR lattice filter. + * @param[in] *S points to an instance of the Q15 IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ + +void arm_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t fcurr, fnext, gcurr = 0, gnext; /* Temporary variables for lattice stages */ + q15_t gnext1, gnext2; /* Temporary variables for lattice stages */ + uint32_t stgCnt; /* Temporary variables for counts */ + q63_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ + q15_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + q15_t *pState; /* State pointer */ + q15_t *pStateCurnt; /* State current pointer */ + q15_t out; /* Temporary variable for output */ + q31_t v; /* Temporary variable for ladder coefficient */ +#ifdef UNALIGNED_SUPPORT_DISABLE + q15_t v1, v2; +#endif + + + blkCnt = blockSize; + + pState = &S->pState[0]; + + /* Sample processing */ + while (blkCnt > 0U) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + + /* Process sample for first tap */ + gcurr = *px1++; + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); + fnext = __SSAT(fnext, 16); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; + gnext = __SSAT(gnext, 16); + /* write gN(n) into state for next sample processing */ + *px2++ = (q15_t) gnext; + /* y(n) += gN(n) * vN */ + acc += (q31_t) ((gnext * (*pv++))); + + + /* Update f values for next coefficient processing */ + fcurr = fnext; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = (numStages - 1U) >> 2; + + while (tapCnt > 0U) + { + + /* Process sample for 2nd, 6th ...taps */ + /* Read gN-2(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 2nd, 6th .. taps */ + /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */ + fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); + fnext = __SSAT(fnext, 16); + /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */ + gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; + gnext1 = (q15_t) __SSAT(gnext, 16); + /* write gN-1(n) into state */ + *px2++ = (q15_t) gnext1; + + + /* Process sample for 3nd, 7th ...taps */ + /* Read gN-3(n-1) from state */ + gcurr = *px1++; + /* Process sample for 3rd, 7th .. taps */ + /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */ + fcurr = fnext - (((q31_t) gcurr * (*pk)) >> 15); + fcurr = __SSAT(fcurr, 16); + /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */ + gnext = (((q31_t) fcurr * (*pk++)) >> 15) + gcurr; + gnext2 = (q15_t) __SSAT(gnext, 16); + /* write gN-2(n) into state */ + *px2++ = (q15_t) gnext2; + + /* Read vN-1 and vN-2 at a time */ +#ifndef UNALIGNED_SUPPORT_DISABLE + + v = *__SIMD32(pv)++; + +#else + + v1 = *pv++; + v2 = *pv++; + +#ifndef ARM_MATH_BIG_ENDIAN + + v = __PKHBT(v1, v2, 16); + +#else + + v = __PKHBT(v2, v1, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + + /* Pack gN-1(n) and gN-2(n) */ + +#ifndef ARM_MATH_BIG_ENDIAN + + gnext = __PKHBT(gnext1, gnext2, 16); + +#else + + gnext = __PKHBT(gnext2, gnext1, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* y(n) += gN-1(n) * vN-1 */ + /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */ + /* y(n) += gN-2(n) * vN-2 */ + /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */ + acc = __SMLALD(gnext, v, acc); + + + /* Process sample for 4th, 8th ...taps */ + /* Read gN-4(n-1) from state */ + gcurr = *px1++; + /* Process sample for 4th, 8th .. taps */ + /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */ + fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); + fnext = __SSAT(fnext, 16); + /* gN-3(n) = kN-3 * fN-1(n) + gN-1(n-1) */ + gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; + gnext1 = (q15_t) __SSAT(gnext, 16); + /* write gN-3(n) for the next sample process */ + *px2++ = (q15_t) gnext1; + + + /* Process sample for 5th, 9th ...taps */ + /* Read gN-5(n-1) from state */ + gcurr = *px1++; + /* Process sample for 5th, 9th .. taps */ + /* fN-5(n) = fN-4(n) - kN-4 * gN-5(n-1) */ + fcurr = fnext - (((q31_t) gcurr * (*pk)) >> 15); + fcurr = __SSAT(fcurr, 16); + /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */ + gnext = (((q31_t) fcurr * (*pk++)) >> 15) + gcurr; + gnext2 = (q15_t) __SSAT(gnext, 16); + /* write gN-4(n) for the next sample process */ + *px2++ = (q15_t) gnext2; + + /* Read vN-3 and vN-4 at a time */ +#ifndef UNALIGNED_SUPPORT_DISABLE + + v = *__SIMD32(pv)++; + +#else + + v1 = *pv++; + v2 = *pv++; + +#ifndef ARM_MATH_BIG_ENDIAN + + v = __PKHBT(v1, v2, 16); + +#else + + v = __PKHBT(v2, v1, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + + /* Pack gN-3(n) and gN-4(n) */ +#ifndef ARM_MATH_BIG_ENDIAN + + gnext = __PKHBT(gnext1, gnext2, 16); + +#else + + gnext = __PKHBT(gnext2, gnext1, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* y(n) += gN-4(n) * vN-4 */ + /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */ + /* y(n) += gN-3(n) * vN-3 */ + /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */ + acc = __SMLALD(gnext, v, acc); + + tapCnt--; + + } + + fnext = fcurr; + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = (numStages - 1U) % 0x4U; + + while (tapCnt > 0U) + { + gcurr = *px1++; + /* Process sample for last taps */ + fnext = fcurr - (((q31_t) gcurr * (*pk)) >> 15); + fnext = __SSAT(fnext, 16); + gnext = (((q31_t) fnext * (*pk++)) >> 15) + gcurr; + gnext = __SSAT(gnext, 16); + /* Output samples for last taps */ + acc += (q31_t) (((q31_t) gnext * (*pv++))); + *px2++ = (q15_t) gnext; + fcurr = fnext; + + tapCnt--; + } + + /* y(n) += g0(n) * v0 */ + acc += (q31_t) (((q31_t) fnext * (*pv++))); + + out = (q15_t) __SSAT(acc >> 15, 16); + *px2++ = (q15_t) fnext; + + /* write out into pDst */ + *pDst++ = out; + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 1U; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + stgCnt = (numStages >> 2U); + + /* copy data */ + while (stgCnt > 0U) + { +#ifndef UNALIGNED_SUPPORT_DISABLE + + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + +#else + + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Decrement the loop counter */ + stgCnt--; + + } + + /* Calculation of count for remaining q15_t data */ + stgCnt = (numStages) % 0x4U; + + /* copy data */ + while (stgCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + stgCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t fcurr, fnext = 0, gcurr = 0, gnext; /* Temporary variables for lattice stages */ + uint32_t stgCnt; /* Temporary variables for counts */ + q63_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ + q15_t *px1, *px2, *pk, *pv; /* temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + q15_t *pState; /* State pointer */ + q15_t *pStateCurnt; /* State current pointer */ + q15_t out; /* Temporary variable for output */ + + + blkCnt = blockSize; + + pState = &S->pState[0]; + + /* Sample processing */ + while (blkCnt > 0U) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + tapCnt = numStages; + + while (tapCnt > 0U) + { + gcurr = *px1++; + /* Process sample */ + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = fcurr - ((gcurr * (*pk)) >> 15); + fnext = __SSAT(fnext, 16); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = ((fnext * (*pk++)) >> 15) + gcurr; + gnext = __SSAT(gnext, 16); + /* Output samples */ + /* y(n) += gN(n) * vN */ + acc += (q31_t) ((gnext * (*pv++))); + /* write gN(n) into state for next sample processing */ + *px2++ = (q15_t) gnext; + /* Update f values for next coefficient processing */ + fcurr = fnext; + + tapCnt--; + } + + /* y(n) += g0(n) * v0 */ + acc += (q31_t) ((fnext * (*pv++))); + + out = (q15_t) __SSAT(acc >> 15, 16); + *px2++ = (q15_t) fnext; + + /* write out into pDst */ + *pDst++ = out; + + /* Advance the state pointer by 1 to process the next group of samples */ + pState = pState + 1U; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + stgCnt = numStages; + + /* copy data */ + while (stgCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + stgCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + + + + +/** + * @} end of IIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c new file mode 100644 index 0000000..736cbc0 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_iir_lattice_q31.c @@ -0,0 +1,338 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_iir_lattice_q31.c + * Description: Q31 IIR lattice filter processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup IIR_Lattice + * @{ + */ + +/** + * @brief Processing function for the Q31 IIR lattice filter. + * @param[in] *S points to an instance of the Q31 IIR lattice structure. + * @param[in] *pSrc points to the block of input data. + * @param[out] *pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2*log2(numStages) bits. + * After all multiply-accumulates are performed, the 2.62 accumulator is saturated to 1.32 format and then truncated to 1.31 format. + */ + +void arm_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q31_t fcurr, fnext = 0, gcurr = 0, gnext; /* Temporary variables for lattice stages */ + q63_t acc; /* Accumlator */ + uint32_t blkCnt, tapCnt; /* Temporary variables for counts */ + q31_t *px1, *px2, *pk, *pv; /* Temporary pointers for state and coef */ + uint32_t numStages = S->numStages; /* number of stages */ + q31_t *pState; /* State pointer */ + q31_t *pStateCurnt; /* State current pointer */ + + blkCnt = blockSize; + + pState = &S->pState[0]; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Sample processing */ + while (blkCnt > 0U) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + + /* Process sample for first tap */ + gcurr = *px1++; + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); + /* write gN-1(n-1) into state for next sample processing */ + *px2++ = gnext; + /* y(n) += gN(n) * vN */ + acc += ((q63_t) gnext * *pv++); + + /* Update f values for next coefficient processing */ + fcurr = fnext; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = (numStages - 1U) >> 2; + + while (tapCnt > 0U) + { + + /* Process sample for 2nd, 6th .. taps */ + /* Read gN-2(n-1) from state buffer */ + gcurr = *px1++; + /* fN-2(n) = fN-1(n) - kN-1 * gN-2(n-1) */ + fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + /* gN-1(n) = kN-1 * fN-2(n) + gN-2(n-1) */ + gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); + /* y(n) += gN-1(n) * vN-1 */ + /* process for gN-5(n) * vN-5, gN-9(n) * vN-9 ... */ + acc += ((q63_t) gnext * *pv++); + /* write gN-1(n) into state for next sample processing */ + *px2++ = gnext; + + /* Process sample for 3nd, 7th ...taps */ + /* Read gN-3(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 3rd, 7th .. taps */ + /* fN-3(n) = fN-2(n) - kN-2 * gN-3(n-1) */ + fcurr = __QSUB(fnext, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + /* gN-2(n) = kN-2 * fN-3(n) + gN-3(n-1) */ + gnext = __QADD(gcurr, (q31_t) (((q63_t) fcurr * (*pk++)) >> 31)); + /* y(n) += gN-2(n) * vN-2 */ + /* process for gN-6(n) * vN-6, gN-10(n) * vN-10 ... */ + acc += ((q63_t) gnext * *pv++); + /* write gN-2(n) into state for next sample processing */ + *px2++ = gnext; + + + /* Process sample for 4th, 8th ...taps */ + /* Read gN-4(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 4th, 8th .. taps */ + /* fN-4(n) = fN-3(n) - kN-3 * gN-4(n-1) */ + fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + /* gN-3(n) = kN-3 * fN-4(n) + gN-4(n-1) */ + gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); + /* y(n) += gN-3(n) * vN-3 */ + /* process for gN-7(n) * vN-7, gN-11(n) * vN-11 ... */ + acc += ((q63_t) gnext * *pv++); + /* write gN-3(n) into state for next sample processing */ + *px2++ = gnext; + + + /* Process sample for 5th, 9th ...taps */ + /* Read gN-5(n-1) from state buffer */ + gcurr = *px1++; + /* Process sample for 5th, 9th .. taps */ + /* fN-5(n) = fN-4(n) - kN-4 * gN-1(n-1) */ + fcurr = __QSUB(fnext, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + /* gN-4(n) = kN-4 * fN-5(n) + gN-5(n-1) */ + gnext = __QADD(gcurr, (q31_t) (((q63_t) fcurr * (*pk++)) >> 31)); + /* y(n) += gN-4(n) * vN-4 */ + /* process for gN-8(n) * vN-8, gN-12(n) * vN-12 ... */ + acc += ((q63_t) gnext * *pv++); + /* write gN-4(n) into state for next sample processing */ + *px2++ = gnext; + + tapCnt--; + + } + + fnext = fcurr; + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = (numStages - 1U) % 0x4U; + + while (tapCnt > 0U) + { + gcurr = *px1++; + /* Process sample for last taps */ + fnext = __QSUB(fcurr, (q31_t) (((q63_t) gcurr * (*pk)) >> 31)); + gnext = __QADD(gcurr, (q31_t) (((q63_t) fnext * (*pk++)) >> 31)); + /* Output samples for last taps */ + acc += ((q63_t) gnext * *pv++); + *px2++ = gnext; + fcurr = fnext; + + tapCnt--; + + } + + /* y(n) += g0(n) * v0 */ + acc += (q63_t) fnext *( + *pv++); + + *px2++ = fnext; + + /* write out into pDst */ + *pDst++ = (q31_t) (acc >> 31U); + + /* Advance the state pointer by 4 to process the next group of 4 samples */ + pState = pState + 1U; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + tapCnt = numStages >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + + } + + /* Calculate remaining number of copies */ + tapCnt = (numStages) % 0x4U; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + }; + +#else + + /* Run the below code for Cortex-M0 */ + /* Sample processing */ + while (blkCnt > 0U) + { + /* Read Sample from input buffer */ + /* fN(n) = x(n) */ + fcurr = *pSrc++; + + /* Initialize state read pointer */ + px1 = pState; + /* Initialize state write pointer */ + px2 = pState; + /* Set accumulator to zero */ + acc = 0; + /* Initialize Ladder coeff pointer */ + pv = &S->pvCoeffs[0]; + /* Initialize Reflection coeff pointer */ + pk = &S->pkCoeffs[0]; + + tapCnt = numStages; + + while (tapCnt > 0U) + { + gcurr = *px1++; + /* Process sample */ + /* fN-1(n) = fN(n) - kN * gN-1(n-1) */ + fnext = + clip_q63_to_q31(((q63_t) fcurr - + ((q31_t) (((q63_t) gcurr * (*pk)) >> 31)))); + /* gN(n) = kN * fN-1(n) + gN-1(n-1) */ + gnext = + clip_q63_to_q31(((q63_t) gcurr + + ((q31_t) (((q63_t) fnext * (*pk++)) >> 31)))); + /* Output samples */ + /* y(n) += gN(n) * vN */ + acc += ((q63_t) gnext * *pv++); + /* write gN-1(n-1) into state for next sample processing */ + *px2++ = gnext; + /* Update f values for next coefficient processing */ + fcurr = fnext; + + tapCnt--; + } + + /* y(n) += g0(n) * v0 */ + acc += (q63_t) fnext *( + *pv++); + + *px2++ = fnext; + + /* write out into pDst */ + *pDst++ = (q31_t) (acc >> 31U); + + /* Advance the state pointer by 1 to process the next group of samples */ + pState = pState + 1U; + blkCnt--; + + } + + /* Processing is complete. Now copy last S->numStages samples to start of the buffer + for the preperation of next frame process */ + + /* Points to the start of the state buffer */ + pStateCurnt = &S->pState[0]; + pState = &S->pState[blockSize]; + + tapCnt = numStages; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + + + + +/** + * @} end of IIR_Lattice group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c new file mode 100644 index 0000000..3975f00 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_f32.c @@ -0,0 +1,430 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_f32.c + * Description: Processing function for the floating-point LMS filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup LMS Least Mean Square (LMS) Filters + * + * LMS filters are a class of adaptive filters that are able to "learn" an unknown transfer functions. + * LMS filters use a gradient descent method in which the filter coefficients are updated based on the instantaneous error signal. + * Adaptive filters are often used in communication systems, equalizers, and noise removal. + * The CMSIS DSP Library contains LMS filter functions that operate on Q15, Q31, and floating-point data types. + * The library also contains normalized LMS filters in which the filter coefficient adaptation is indepedent of the level of the input signal. + * + * An LMS filter consists of two components as shown below. + * The first component is a standard transversal or FIR filter. + * The second component is a coefficient update mechanism. + * The LMS filter has two input signals. + * The "input" feeds the FIR filter while the "reference input" corresponds to the desired output of the FIR filter. + * That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input. + * The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input. + * This "error signal" tends towards zero as the filter adapts. + * The LMS processing functions accept the input and reference input signals and generate the filter output and error signal. + * \image html LMS.gif "Internal structure of the Least Mean Square filter" + * + * The functions operate on blocks of data and each call to the function processes + * blockSize samples through the filter. + * pSrc points to input signal, pRef points to reference signal, + * pOut points to output signal and pErr points to error signal. + * All arrays contain blockSize values. + * + * The functions operate on a block-by-block basis. + * Internally, the filter coefficients b[n] are updated on a sample-by-sample basis. + * The convergence of the LMS filter is slower compared to the normalized LMS algorithm. + * + * \par Algorithm: + * The output signal y[n] is computed by a standard FIR filter: + *
+ *     y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]
+ * 
+ * + * \par + * The error signal equals the difference between the reference signal d[n] and the filter output: + *
+ *     e[n] = d[n] - y[n].
+ * 
+ * + * \par + * After each sample of the error signal is computed, the filter coefficients b[k] are updated on a sample-by-sample basis: + *
+ *     b[k] = b[k] + e[n] * mu * x[n-k],  for k=0, 1, ..., numTaps-1
+ * 
+ * where mu is the step size and controls the rate of coefficient convergence. + *\par + * In the APIs, pCoeffs points to a coefficient array of size numTaps. + * Coefficients are stored in time reversed order. + * \par + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * \par + * pState points to a state array of size numTaps + blockSize - 1. + * Samples in the state buffer are stored in the order: + * \par + *
+ *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}
+ * 
+ * \par + * Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1 samples. + * The increased state buffer length allows circular addressing, which is traditionally used in FIR filters, + * to be avoided and yields a significant speed improvement. + * The state variables are updated after each block of data is processed. + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter and + * coefficient and state arrays cannot be shared among instances. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * To do this manually without calling the init function, assign the follow subfields of the instance structure: + * numTaps, pCoeffs, mu, postShift (not for f32), pState. Also set all of the values in pState to zero. + * + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Set the values in the state buffer to zeros before static initialization. + * The code below statically initializes each of the 3 different data type filter instance structures + *
+ *    arm_lms_instance_f32 S = {numTaps, pState, pCoeffs, mu};
+ *    arm_lms_instance_q31 S = {numTaps, pState, pCoeffs, mu, postShift};
+ *    arm_lms_instance_q15 S = {numTaps, pState, pCoeffs, mu, postShift};
+ * 
+ * where numTaps is the number of filter coefficients in the filter; pState is the address of the state buffer; + * pCoeffs is the address of the coefficient buffer; mu is the step size parameter; and postShift is the shift applied to coefficients. + * + * \par Fixed-Point Behavior: + * Care must be taken when using the Q15 and Q31 versions of the LMS filter. + * The following issues must be considered: + * - Scaling of coefficients + * - Overflow and saturation + * + * \par Scaling of Coefficients: + * Filter coefficients are represented as fractional values and + * coefficients are restricted to lie in the range [-1 +1). + * The fixed-point functions have an additional scaling parameter postShift. + * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. + * This essentially scales the filter coefficients by 2^postShift and + * allows the filter coefficients to exceed the range [+1 -1). + * The value of postShift is set by the user based on the expected gain through the system being modeled. + * + * \par Overflow and Saturation: + * Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are + * described separately as part of the function specific documentation below. + */ + +/** + * @addtogroup LMS + * @{ + */ + +/** + * @details + * This function operates on floating-point data types. + * + * @brief Processing function for floating-point LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_lms_f32( + const arm_lms_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + float32_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + float32_t sum, e, d; /* accumulator, error, reference data sample */ + float32_t w = 0.0f; /* weight factor */ + + e = 0.0f; + d = 0.0f; + + /* S->pState points to state array which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + blkCnt = blockSize; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Set the accumulator to zero */ + sum = 0.0f; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result in the accumulator, store in the destination buffer. */ + *pOut++ = sum; + + /* Compute and store error */ + d = (float32_t) (*pRef++); + e = d - sum; + *pErr++ = e; + + /* Calculation of Weighting factor for the updating filter coefficients */ + w = e * mu; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Update filter coefficients */ + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + *pb = *pb + (w * (*px++)); + pb++; + + *pb = *pb + (w * (*px++)); + pb++; + + *pb = *pb + (w * (*px++)); + pb++; + + *pb = *pb + (w * (*px++)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + *pb = *pb + (w * (*px++)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop unrolling for (numTaps - 1U) samples copy */ + tapCnt = (numTaps - 1U) >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + sum = 0.0f; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result is stored in the destination buffer. */ + *pOut++ = sum; + + /* Compute and store error */ + d = (float32_t) (*pRef++); + e = d - sum; + *pErr++ = e; + + /* Weighting factor for the LMS version */ + w = e * mu; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + *pb = *pb + (w * (*px++)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + * start of the state buffer. This prepares the state buffer for the + * next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Copy (numTaps - 1U) samples */ + tapCnt = (numTaps - 1U); + + /* Copy the data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of LMS group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c new file mode 100644 index 0000000..73158bb --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_f32.c @@ -0,0 +1,83 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_init_f32.c + * Description: Floating-point LMS filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @addtogroup LMS + * @{ + */ + + /** + * @brief Initialization function for floating-point LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to the coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +/** + * \par Description: + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * The initial filter coefficients serve as a starting point for the adaptive filter. + * pState points to an array of length numTaps+blockSize-1 samples, where blockSize is the number of input samples processed by each call to arm_lms_f32(). + */ + +void arm_lms_init_f32( + arm_lms_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps */ + memset(pState, 0, (numTaps + (blockSize - 1)) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; +} + +/** + * @} end of LMS group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c new file mode 100644 index 0000000..001287d --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q15.c @@ -0,0 +1,93 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_init_q15.c + * Description: Q15 LMS filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS + * @{ + */ + +/** +* @brief Initialization function for the Q15 LMS filter. +* @param[in] *S points to an instance of the Q15 LMS filter structure. +* @param[in] numTaps number of filter coefficients. +* @param[in] *pCoeffs points to the coefficient buffer. +* @param[in] *pState points to the state buffer. +* @param[in] mu step size that controls filter coefficient updates. +* @param[in] blockSize number of samples to process. +* @param[in] postShift bit shift applied to coefficients. +* @return none. +* +* \par Description: +* pCoeffs points to the array of filter coefficients stored in time reversed order: +*
+*    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+* 
+* The initial filter coefficients serve as a starting point for the adaptive filter. +* pState points to the array of state variables and size of array is +* numTaps+blockSize-1 samples, where blockSize is the number of +* input samples processed by each call to arm_lms_q15(). +*/ + +void arm_lms_init_q15( + arm_lms_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint32_t postShift) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps - 1 */ + memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; + + /* Assign postShift value to be applied */ + S->postShift = postShift; + +} + +/** + * @} end of LMS group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c new file mode 100644 index 0000000..7d95d97 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_init_q31.c @@ -0,0 +1,93 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_init_q31.c + * Description: Q31 LMS filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS + * @{ + */ + + /** + * @brief Initialization function for Q31 LMS filter. + * @param[in] *S points to an instance of the Q31 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + * + * \par Description: + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * The initial filter coefficients serve as a starting point for the adaptive filter. + * pState points to an array of length numTaps+blockSize-1 samples, + * where blockSize is the number of input samples processed by each call to + * arm_lms_q31(). + */ + +void arm_lms_init_q31( + arm_lms_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint32_t postShift) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps - 1 */ + memset(pState, 0, ((uint32_t) numTaps + (blockSize - 1U)) * sizeof(q31_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; + + /* Assign postShift value to be applied */ + S->postShift = postShift; + +} + +/** + * @} end of LMS group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c new file mode 100644 index 0000000..a365b33 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_f32.c @@ -0,0 +1,454 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_norm_f32.c + * Description: Processing function for the floating-point Normalised LMS + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @defgroup LMS_NORM Normalized LMS Filters + * + * This set of functions implements a commonly used adaptive filter. + * It is related to the Least Mean Square (LMS) adaptive filter and includes an additional normalization + * factor which increases the adaptation rate of the filter. + * The CMSIS DSP Library contains normalized LMS filter functions that operate on Q15, Q31, and floating-point data types. + * + * A normalized least mean square (NLMS) filter consists of two components as shown below. + * The first component is a standard transversal or FIR filter. + * The second component is a coefficient update mechanism. + * The NLMS filter has two input signals. + * The "input" feeds the FIR filter while the "reference input" corresponds to the desired output of the FIR filter. + * That is, the FIR filter coefficients are updated so that the output of the FIR filter matches the reference input. + * The filter coefficient update mechanism is based on the difference between the FIR filter output and the reference input. + * This "error signal" tends towards zero as the filter adapts. + * The NLMS processing functions accept the input and reference input signals and generate the filter output and error signal. + * \image html LMS.gif "Internal structure of the NLMS adaptive filter" + * + * The functions operate on blocks of data and each call to the function processes + * blockSize samples through the filter. + * pSrc points to input signal, pRef points to reference signal, + * pOut points to output signal and pErr points to error signal. + * All arrays contain blockSize values. + * + * The functions operate on a block-by-block basis. + * Internally, the filter coefficients b[n] are updated on a sample-by-sample basis. + * The convergence of the LMS filter is slower compared to the normalized LMS algorithm. + * + * \par Algorithm: + * The output signal y[n] is computed by a standard FIR filter: + *
+ *     y[n] = b[0] * x[n] + b[1] * x[n-1] + b[2] * x[n-2] + ...+ b[numTaps-1] * x[n-numTaps+1]
+ * 
+ * + * \par + * The error signal equals the difference between the reference signal d[n] and the filter output: + *
+ *     e[n] = d[n] - y[n].
+ * 
+ * + * \par + * After each sample of the error signal is computed the instanteous energy of the filter state variables is calculated: + *
+ *    E = x[n]^2 + x[n-1]^2 + ... + x[n-numTaps+1]^2.
+ * 
+ * The filter coefficients b[k] are then updated on a sample-by-sample basis: + *
+ *     b[k] = b[k] + e[n] * (mu/E) * x[n-k],  for k=0, 1, ..., numTaps-1
+ * 
+ * where mu is the step size and controls the rate of coefficient convergence. + *\par + * In the APIs, pCoeffs points to a coefficient array of size numTaps. + * Coefficients are stored in time reversed order. + * \par + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * \par + * pState points to a state array of size numTaps + blockSize - 1. + * Samples in the state buffer are stored in the order: + * \par + *
+ *    {x[n-numTaps+1], x[n-numTaps], x[n-numTaps-1], x[n-numTaps-2]....x[0], x[1], ..., x[blockSize-1]}
+ * 
+ * \par + * Note that the length of the state buffer exceeds the length of the coefficient array by blockSize-1 samples. + * The increased state buffer length allows circular addressing, which is traditionally used in FIR filters, + * to be avoided and yields a significant speed improvement. + * The state variables are updated after each block of data is processed. + * \par Instance Structure + * The coefficients and state variables for a filter are stored together in an instance data structure. + * A separate instance structure must be defined for each filter and + * coefficient and state arrays cannot be shared among instances. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Zeros out the values in the state buffer. + * To do this manually without calling the init function, assign the follow subfields of the instance structure: + * numTaps, pCoeffs, mu, energy, x0, pState. Also set all of the values in pState to zero. + * For Q7, Q15, and Q31 the following fields must also be initialized; + * recipTable, postShift + * + * \par + * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. + * \par Fixed-Point Behavior: + * Care must be taken when using the Q15 and Q31 versions of the normalised LMS filter. + * The following issues must be considered: + * - Scaling of coefficients + * - Overflow and saturation + * + * \par Scaling of Coefficients: + * Filter coefficients are represented as fractional values and + * coefficients are restricted to lie in the range [-1 +1). + * The fixed-point functions have an additional scaling parameter postShift. + * At the output of the filter's accumulator is a shift register which shifts the result by postShift bits. + * This essentially scales the filter coefficients by 2^postShift and + * allows the filter coefficients to exceed the range [+1 -1). + * The value of postShift is set by the user based on the expected gain through the system being modeled. + * + * \par Overflow and Saturation: + * Overflow and saturation behavior of the fixed-point Q15 and Q31 versions are + * described separately as part of the function specific documentation below. + */ + + +/** + * @addtogroup LMS_NORM + * @{ + */ + + + /** + * @brief Processing function for floating-point normalized LMS filter. + * @param[in] *S points to an instance of the floating-point normalized LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + */ + +void arm_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize) +{ + float32_t *pState = S->pState; /* State pointer */ + float32_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + float32_t *pStateCurnt; /* Points to the current sample of the state */ + float32_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + float32_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + float32_t energy; /* Energy of the input */ + float32_t sum, e, d; /* accumulator, error, reference data sample */ + float32_t w, x0, in; /* weight factor, temporary variable to hold input sample and state */ + + /* Initializations of error, difference, Coefficient update */ + e = 0.0f; + d = 0.0f; + w = 0.0f; + + energy = S->energy; + x0 = S->x0; + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy -= x0 * x0; + energy += in * in; + + /* Set the accumulator to zero */ + sum = 0.0f; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result in the accumulator, store in the destination buffer. */ + *pOut++ = sum; + + /* Compute and store error */ + d = (float32_t) (*pRef++); + e = d - sum; + *pErr++ = e; + + /* Calculation of Weighting factor for updating filter coefficients */ + /* epsilon value 0.000000119209289f */ + w = (e * mu) / (energy + 0.000000119209289f); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Update filter coefficients */ + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + *pb += w * (*px++); + pb++; + + *pb += w * (*px++); + pb++; + + *pb += w * (*px++); + pb++; + + *pb += w * (*px++); + pb++; + + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + *pb += w * (*px++); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + S->energy = energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop unrolling for (numTaps - 1U)/4 samples copy */ + tapCnt = (numTaps - 1U) >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy -= x0 * x0; + energy += in * in; + + /* Set the accumulator to zero */ + sum = 0.0f; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + sum += (*px++) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* The result in the accumulator is stored in the destination buffer. */ + *pOut++ = sum; + + /* Compute and store error */ + d = (float32_t) (*pRef++); + e = d - sum; + *pErr++ = e; + + /* Calculation of Weighting factor for updating filter coefficients */ + /* epsilon value 0.000000119209289f */ + w = (e * mu) / (energy + 0.000000119209289f); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCcoeffs pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + *pb += w * (*px++); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + S->energy = energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Copy (numTaps - 1U) samples */ + tapCnt = (numTaps - 1U); + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of LMS_NORM group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c new file mode 100644 index 0000000..49272f8 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_f32.c @@ -0,0 +1,93 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_norm_init_f32.c + * Description: Floating-point NLMS filter initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS_NORM + * @{ + */ + + /** + * @brief Initialization function for floating-point normalized LMS filter. + * @param[in] *S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @return none. + * + * \par Description: + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * The initial filter coefficients serve as a starting point for the adaptive filter. + * pState points to an array of length numTaps+blockSize-1 samples, + * where blockSize is the number of input samples processed by each call to arm_lms_norm_f32(). + */ + +void arm_lms_norm_init_f32( + arm_lms_norm_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps - 1 */ + memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(float32_t)); + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; + + /* Initialise Energy to zero */ + S->energy = 0.0f; + + /* Initialise x0 to zero */ + S->x0 = 0.0f; + +} + +/** + * @} end of LMS_NORM group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c new file mode 100644 index 0000000..0624222 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q15.c @@ -0,0 +1,100 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_norm_init_q15.c + * Description: Q15 NLMS initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @addtogroup LMS_NORM + * @{ + */ + + /** + * @brief Initialization function for Q15 normalized LMS filter. + * @param[in] *S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * The initial filter coefficients serve as a starting point for the adaptive filter. + * pState points to the array of state variables and size of array is + * numTaps+blockSize-1 samples, where blockSize is the number of input samples processed + * by each call to arm_lms_norm_q15(). + */ + +void arm_lms_norm_init_q15( + arm_lms_norm_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint8_t postShift) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps - 1 */ + memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q15_t)); + + /* Assign post Shift value applied to coefficients */ + S->postShift = postShift; + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; + + /* Initialize reciprocal pointer table */ + S->recipTable = (q15_t *) armRecipTableQ15; + + /* Initialise Energy to zero */ + S->energy = 0; + + /* Initialise x0 to zero */ + S->x0 = 0; + +} + +/** + * @} end of LMS_NORM group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c new file mode 100644 index 0000000..4f70408 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_init_q31.c @@ -0,0 +1,99 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_norm_init_q31.c + * Description: Q31 NLMS initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @addtogroup LMS_NORM + * @{ + */ + + /** + * @brief Initialization function for Q31 normalized LMS filter. + * @param[in] *S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] *pCoeffs points to coefficient buffer. + * @param[in] *pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + * @return none. + * + * Description: + * \par + * pCoeffs points to the array of filter coefficients stored in time reversed order: + *
+ *    {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]}
+ * 
+ * The initial filter coefficients serve as a starting point for the adaptive filter. + * pState points to an array of length numTaps+blockSize-1 samples, + * where blockSize is the number of input samples processed by each call to arm_lms_norm_q31(). + */ + +void arm_lms_norm_init_q31( + arm_lms_norm_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint8_t postShift) +{ + /* Assign filter taps */ + S->numTaps = numTaps; + + /* Assign coefficient pointer */ + S->pCoeffs = pCoeffs; + + /* Clear state buffer and size is always blockSize + numTaps - 1 */ + memset(pState, 0, (numTaps + (blockSize - 1U)) * sizeof(q31_t)); + + /* Assign post Shift value applied to coefficients */ + S->postShift = postShift; + + /* Assign state pointer */ + S->pState = pState; + + /* Assign Step size value */ + S->mu = mu; + + /* Initialize reciprocal pointer table */ + S->recipTable = (q31_t *) armRecipTableQ31; + + /* Initialise Energy to zero */ + S->energy = 0; + + /* Initialise x0 to zero */ + S->x0 = 0; + +} + +/** + * @} end of LMS_NORM group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c new file mode 100644 index 0000000..00bde39 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q15.c @@ -0,0 +1,428 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_norm_q15.c + * Description: Q15 NLMS filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS_NORM + * @{ + */ + +/** +* @brief Processing function for Q15 normalized LMS filter. +* @param[in] *S points to an instance of the Q15 normalized LMS filter structure. +* @param[in] *pSrc points to the block of input data. +* @param[in] *pRef points to the block of reference data. +* @param[out] *pOut points to the block of output data. +* @param[out] *pErr points to the block of error data. +* @param[in] blockSize number of samples to process. +* @return none. +* +* Scaling and Overflow Behavior: +* \par +* The function is implemented using a 64-bit internal accumulator. +* Both coefficients and state variables are represented in 1.15 format and +* multiplications yield a 2.30 result. The 2.30 intermediate results are +* accumulated in a 64-bit accumulator in 34.30 format. +* There is no risk of internal overflow with this approach and the full +* precision of intermediate multiplications is preserved. After all additions +* have been performed, the accumulator is truncated to 34.15 format by +* discarding low 15 bits. Lastly, the accumulator is saturated to yield a +* result in 1.15 format. +* +* \par +* In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted. +* + */ + +void arm_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + q15_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q31_t energy; /* Energy of the input */ + q63_t acc; /* Accumulator */ + q15_t e = 0, d = 0; /* error, reference data sample */ + q15_t w = 0, in; /* weight factor and state */ + q15_t x0; /* temporary variable to hold input sample */ + //uint32_t shift = (uint32_t) S->postShift + 1U; /* Shift to be applied to the output */ + q15_t errorXmu, oneByEnergy; /* Temporary variables to store error and mu product and reciprocal of energy */ + q15_t postShift; /* Post shift to be applied to weight after reciprocal calculation */ + q31_t coef; /* Teporary variable for coefficient */ + q31_t acc_l, acc_h; + int32_t lShift = (15 - (int32_t) S->postShift); /* Post shift */ + int32_t uShift = (32 - lShift); + + energy = S->energy; + x0 = S->x0; + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy -= (((q31_t) x0 * (x0)) >> 15); + energy += (((q31_t) in * (in)) >> 15); + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + while (tapCnt > 0U) + { + + /* Perform the multiply-accumulate */ +#ifndef UNALIGNED_SUPPORT_DISABLE + + acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); + acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); + +#else + + acc += (((q31_t) * px++ * (*pb++))); + acc += (((q31_t) * px++ * (*pb++))); + acc += (((q31_t) * px++ * (*pb++))); + acc += (((q31_t) * px++ * (*pb++))); + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += (((q31_t) * px++ * (*pb++))); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Converting the result to 1.15 format and saturate the output */ + acc = __SSAT(acc, 16U); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* Compute and store error */ + d = *pRef++; + e = d - (q15_t) acc; + *pErr++ = e; + + /* Calculation of 1/energy */ + postShift = arm_recip_q15((q15_t) energy + DELTA_Q15, + &oneByEnergy, S->recipTable); + + /* Calculation of e * mu value */ + errorXmu = (q15_t) (((q31_t) e * mu) >> 15); + + /* Calculation of (e * mu) * (1/energy) value */ + acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift)); + + /* Weighting factor for the normalized version */ + w = (q15_t) __SSAT((q31_t) acc, 16); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Update filter coefficients */ + while (tapCnt > 0U) + { + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Read the sample from state buffer */ + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Save energy and x0 values for the next frame */ + S->energy = (q15_t) energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Calculation of count for copying integer writes */ + tapCnt = (numTaps - 1U) >> 2; + + while (tapCnt > 0U) + { + +#ifndef UNALIGNED_SUPPORT_DISABLE + + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + +#else + + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + +#endif + + tapCnt--; + + } + + /* Calculation of count for remaining q15_t data */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy -= (((q31_t) x0 * (x0)) >> 15); + energy += (((q31_t) in * (in)) >> 15); + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += (((q31_t) * px++ * (*pb++))); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Converting the result to 1.15 format and saturate the output */ + acc = __SSAT(acc, 16U); + + /* Converting the result to 1.15 format */ + //acc = __SSAT((acc >> (16U - shift)), 16U); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* Compute and store error */ + d = *pRef++; + e = d - (q15_t) acc; + *pErr++ = e; + + /* Calculation of 1/energy */ + postShift = arm_recip_q15((q15_t) energy + DELTA_Q15, + &oneByEnergy, S->recipTable); + + /* Calculation of e * mu value */ + errorXmu = (q15_t) (((q31_t) e * mu) >> 15); + + /* Calculation of (e * mu) * (1/energy) value */ + acc = (((q31_t) errorXmu * oneByEnergy) >> (15 - postShift)); + + /* Weighting factor for the normalized version */ + w = (q15_t) __SSAT((q31_t) acc, 16); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + coef = *pb + (((q31_t) w * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Read the sample from state buffer */ + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Save energy and x0 values for the next frame */ + S->energy = (q15_t) energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* copy (numTaps - 1U) data */ + tapCnt = (numTaps - 1U); + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + + +/** + * @} end of LMS_NORM group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c new file mode 100644 index 0000000..bc65fa6 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_norm_q31.c @@ -0,0 +1,419 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_norm_q31.c + * Description: Processing function for the Q31 NLMS filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS_NORM + * @{ + */ + +/** +* @brief Processing function for Q31 normalized LMS filter. +* @param[in] *S points to an instance of the Q31 normalized LMS filter structure. +* @param[in] *pSrc points to the block of input data. +* @param[in] *pRef points to the block of reference data. +* @param[out] *pOut points to the block of output data. +* @param[out] *pErr points to the block of error data. +* @param[in] blockSize number of samples to process. +* @return none. +* +* Scaling and Overflow Behavior: +* \par +* The function is implemented using an internal 64-bit accumulator. +* The accumulator has a 2.62 format and maintains full precision of the intermediate +* multiplication results but provides only a single guard bit. +* Thus, if the accumulator result overflows it wraps around rather than clip. +* In order to avoid overflows completely the input signal must be scaled down by +* log2(numTaps) bits. The reference signal should not be scaled down. +* After all multiply-accumulates are performed, the 2.62 accumulator is shifted +* and saturated to 1.31 format to yield the final result. +* The output signal and error signal are in 1.31 format. +* +* \par +* In this filter, filter coefficients are updated for each sample and the +* updation of filter cofficients are saturted. +* +*/ + +void arm_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t *px, *pb; /* Temporary pointers for state and coefficient buffers */ + q31_t mu = S->mu; /* Adaptive factor */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q63_t energy; /* Energy of the input */ + q63_t acc; /* Accumulator */ + q31_t e = 0, d = 0; /* error, reference data sample */ + q31_t w = 0, in; /* weight factor and state */ + q31_t x0; /* temporary variable to hold input sample */ +// uint32_t shift = 32U - ((uint32_t) S->postShift + 1U); /* Shift to be applied to the output */ + q31_t errorXmu, oneByEnergy; /* Temporary variables to store error and mu product and reciprocal of energy */ + q31_t postShift; /* Post shift to be applied to weight after reciprocal calculation */ + q31_t coef; /* Temporary variable for coef */ + q31_t acc_l, acc_h; /* temporary input */ + uint32_t uShift = ((uint32_t) S->postShift + 1U); + uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ + + energy = S->energy; + x0 = S->x0; + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + while (blkCnt > 0U) + { + + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy = (q31_t) ((((q63_t) energy << 32) - + (((q63_t) x0 * x0) << 1)) >> 32); + energy = (q31_t) (((((q63_t) in * in) << 1) + (energy << 32)) >> 32); + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + acc += ((q63_t) (*px++)) * (*pb++); + acc += ((q63_t) (*px++)) * (*pb++); + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.31 format */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + acc = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q31_t) acc; + + /* Compute and store error */ + d = *pRef++; + e = d - (q31_t) acc; + *pErr++ = e; + + /* Calculates the reciprocal of energy */ + postShift = arm_recip_q31(energy + DELTA_Q31, + &oneByEnergy, &S->recipTable[0]); + + /* Calculation of product of (e * mu) */ + errorXmu = (q31_t) (((q63_t) e * mu) >> 31); + + /* Weighting factor for the normalized version */ + w = clip_q63_to_q31(((q63_t) errorXmu * oneByEnergy) >> (31 - postShift)); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Update filter coefficients */ + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + + /* coef is in 2.30 format */ + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + /* get coef in 1.31 format by left shifting */ + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + /* update coefficient buffer to next coefficient */ + pb++; + + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + pb++; + + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + pb++; + + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Read the sample from state buffer */ + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Save energy and x0 values for the next frame */ + S->energy = (q31_t) energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop unrolling for (numTaps - 1U) samples copy */ + tapCnt = (numTaps - 1U) >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + while (blkCnt > 0U) + { + + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Read the sample from input buffer */ + in = *pSrc++; + + /* Update the energy calculation */ + energy = + (q31_t) ((((q63_t) energy << 32) - (((q63_t) x0 * x0) << 1)) >> 32); + energy = (q31_t) (((((q63_t) in * in) << 1) + (energy << 32)) >> 32); + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.31 format */ + /* Converting the result to 1.31 format */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + acc = (uint32_t) acc_l >> lShift | acc_h << uShift; + + + //acc = (q31_t) (acc >> shift); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q31_t) acc; + + /* Compute and store error */ + d = *pRef++; + e = d - (q31_t) acc; + *pErr++ = e; + + /* Calculates the reciprocal of energy */ + postShift = + arm_recip_q31(energy + DELTA_Q31, &oneByEnergy, &S->recipTable[0]); + + /* Calculation of product of (e * mu) */ + errorXmu = (q31_t) (((q63_t) e * mu) >> 31); + + /* Weighting factor for the normalized version */ + w = clip_q63_to_q31(((q63_t) errorXmu * oneByEnergy) >> (31 - postShift)); + + /* Initialize pState pointer */ + px = pState; + + /* Initialize coeff pointer */ + pb = (pCoeffs); + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + /* coef is in 2.30 format */ + coef = (q31_t) (((q63_t) w * (*px++)) >> (32)); + /* get coef in 1.31 format by left shifting */ + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + /* update coefficient buffer to next coefficient */ + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Read the sample from state buffer */ + x0 = *pState; + + /* Advance state pointer by 1 for the next sample */ + pState = pState + 1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Save energy and x0 values for the next frame */ + S->energy = (q31_t) energy; + S->x0 = x0; + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + start of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop for (numTaps - 1U) samples copy */ + tapCnt = (numTaps - 1U); + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of LMS_NORM group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c new file mode 100644 index 0000000..8d5226e --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q15.c @@ -0,0 +1,368 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_q15.c + * Description: Processing function for the Q15 LMS filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS + * @{ + */ + + /** + * @brief Processing function for Q15 LMS filter. + * @param[in] *S points to an instance of the Q15 LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + * + * \par Scaling and Overflow Behavior: + * The function is implemented using a 64-bit internal accumulator. + * Both coefficients and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + * + * \par + * In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted. + * + */ + +void arm_lms_q15( + const arm_lms_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize) +{ + q15_t *pState = S->pState; /* State pointer */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + q15_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q15_t *pStateCurnt; /* Points to the current sample of the state */ + q15_t mu = S->mu; /* Adaptive factor */ + q15_t *px; /* Temporary pointer for state */ + q15_t *pb; /* Temporary pointer for coefficient buffer */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q63_t acc; /* Accumulator */ + q15_t e = 0; /* error of data sample */ + q15_t alpha; /* Intermediate constant for taps update */ + q31_t coef; /* Teporary variable for coefficient */ + q31_t acc_l, acc_h; + int32_t lShift = (15 - (int32_t) S->postShift); /* Post shift */ + int32_t uShift = (32 - lShift); + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Initializing blkCnt with blockSize */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2U; + + while (tapCnt > 0U) + { + /* acc += b[N] * x[n-N] + b[N-1] * x[n-N-1] */ + /* Perform the multiply-accumulate */ +#ifndef UNALIGNED_SUPPORT_DISABLE + + acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); + acc = __SMLALD(*__SIMD32(px)++, (*__SIMD32(pb)++), acc); + +#else + + acc += (q63_t) (((q31_t) (*px++) * (*pb++))); + acc += (q63_t) (((q31_t) (*px++) * (*pb++))); + acc += (q63_t) (((q31_t) (*px++) * (*pb++))); + acc += (q63_t) (((q31_t) (*px++) * (*pb++))); + + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += (q63_t) (((q31_t) (*px++) * (*pb++))); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Converting the result to 1.15 format and saturate the output */ + acc = __SSAT(acc, 16); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* Compute and store error */ + e = *pRef++ - (q15_t) acc; + + *pErr++ = (q15_t) e; + + /* Compute alpha i.e. intermediate constant for taps update */ + alpha = (q15_t) (((q31_t) e * (mu)) >> 15); + + /* Initialize state pointer */ + /* Advance state pointer by 1 for the next sample */ + px = pState++; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2U; + + /* Update filter coefficients */ + while (tapCnt > 0U) + { + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Decrement the loop counter */ + blkCnt--; + + } + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Calculation of count for copying integer writes */ + tapCnt = (numTaps - 1U) >> 2; + + while (tapCnt > 0U) + { + +#ifndef UNALIGNED_SUPPORT_DISABLE + + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; + *__SIMD32(pStateCurnt)++ = *__SIMD32(pState)++; +#else + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; +#endif + + tapCnt--; + + } + + /* Calculation of count for remaining q15_t data */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += (q63_t) ((q31_t) (*px++) * (*pb++)); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + /* Apply shift for lower part of acc and upper part of acc */ + acc = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Converting the result to 1.15 format and saturate the output */ + acc = __SSAT(acc, 16); + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q15_t) acc; + + /* Compute and store error */ + e = *pRef++ - (q15_t) acc; + + *pErr++ = (q15_t) e; + + /* Compute alpha i.e. intermediate constant for taps update */ + alpha = (q15_t) (((q31_t) e * (mu)) >> 15); + + /* Initialize pState pointer */ + /* Advance state pointer by 1 for the next sample */ + px = pState++; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + coef = (q31_t) * pb + (((q31_t) alpha * (*px++)) >> 15); + *pb++ = (q15_t) __SSAT((coef), 16); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Decrement the loop counter */ + blkCnt--; + + } + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + start of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Copy (numTaps - 1U) samples */ + tapCnt = (numTaps - 1U); + + /* Copy the data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of LMS group + */ diff --git a/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c new file mode 100644 index 0000000..66b2a91 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/FilteringFunctions/arm_lms_q31.c @@ -0,0 +1,357 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_lms_q31.c + * Description: Processing function for the Q31 LMS filter + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +/** + * @ingroup groupFilters + */ + +/** + * @addtogroup LMS + * @{ + */ + + /** + * @brief Processing function for Q31 LMS filter. + * @param[in] *S points to an instance of the Q15 LMS filter structure. + * @param[in] *pSrc points to the block of input data. + * @param[in] *pRef points to the block of reference data. + * @param[out] *pOut points to the block of output data. + * @param[out] *pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + * @return none. + * + * \par Scaling and Overflow Behavior: + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate + * multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clips. + * In order to avoid overflows completely the input signal must be scaled down by + * log2(numTaps) bits. + * The reference signal should not be scaled down. + * After all multiply-accumulates are performed, the 2.62 accumulator is shifted + * and saturated to 1.31 format to yield the final result. + * The output signal and error signal are in 1.31 format. + * + * \par + * In this filter, filter coefficients are updated for each sample and the updation of filter cofficients are saturted. + */ + +void arm_lms_q31( + const arm_lms_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize) +{ + q31_t *pState = S->pState; /* State pointer */ + uint32_t numTaps = S->numTaps; /* Number of filter coefficients in the filter */ + q31_t *pCoeffs = S->pCoeffs; /* Coefficient pointer */ + q31_t *pStateCurnt; /* Points to the current sample of the state */ + q31_t mu = S->mu; /* Adaptive factor */ + q31_t *px; /* Temporary pointer for state */ + q31_t *pb; /* Temporary pointer for coefficient buffer */ + uint32_t tapCnt, blkCnt; /* Loop counters */ + q63_t acc; /* Accumulator */ + q31_t e = 0; /* error of data sample */ + q31_t alpha; /* Intermediate constant for taps update */ + q31_t coef; /* Temporary variable for coef */ + q31_t acc_l, acc_h; /* temporary input */ + uint32_t uShift = ((uint32_t) S->postShift + 1U); + uint32_t lShift = 32U - uShift; /* Shift to be applied to the output */ + + /* S->pState points to buffer which contains previous frame (numTaps - 1) samples */ + /* pStateCurnt points to the location where the new input data should be written */ + pStateCurnt = &(S->pState[(numTaps - 1U)]); + + /* Initializing blkCnt with blockSize */ + blkCnt = blockSize; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize state pointer */ + px = pState; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + /* acc += b[N] * x[n-N] */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* acc += b[N-1] * x[n-N-1] */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* acc += b[N-2] * x[n-N-2] */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* acc += b[N-3] * x[n-N-3] */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.31 format */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + acc = (uint32_t) acc_l >> lShift | acc_h << uShift; + + /* Store the result from accumulator into the destination buffer. */ + *pOut++ = (q31_t) acc; + + /* Compute and store error */ + e = *pRef++ - (q31_t) acc; + + *pErr++ = (q31_t) e; + + /* Compute alpha i.e. intermediate constant for taps update */ + alpha = (q31_t) (((q63_t) e * mu) >> 31); + + /* Initialize state pointer */ + /* Advance state pointer by 1 for the next sample */ + px = pState++; + + /* Initialize coefficient pointer */ + pb = pCoeffs; + + /* Loop unrolling. Process 4 taps at a time. */ + tapCnt = numTaps >> 2; + + /* Update filter coefficients */ + while (tapCnt > 0U) + { + /* coef is in 2.30 format */ + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + /* get coef in 1.31 format by left shifting */ + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + /* update coefficient buffer to next coefficient */ + pb++; + + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + pb++; + + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + pb++; + + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* If the filter length is not a multiple of 4, compute the remaining filter taps */ + tapCnt = numTaps % 0x4U; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + satrt of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Loop unrolling for (numTaps - 1U) samples copy */ + tapCnt = (numTaps - 1U) >> 2U; + + /* copy data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Calculate remaining number of copies */ + tapCnt = (numTaps - 1U) % 0x4U; + + /* Copy the remaining q31_t data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + while (blkCnt > 0U) + { + /* Copy the new input sample into the state buffer */ + *pStateCurnt++ = *pSrc++; + + /* Initialize pState pointer */ + px = pState; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Set the accumulator to zero */ + acc = 0; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + acc += ((q63_t) (*px++)) * (*pb++); + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Converting the result to 1.31 format */ + /* Store the result from accumulator into the destination buffer. */ + /* Calc lower part of acc */ + acc_l = acc & 0xffffffff; + + /* Calc upper part of acc */ + acc_h = (acc >> 32) & 0xffffffff; + + acc = (uint32_t) acc_l >> lShift | acc_h << uShift; + + *pOut++ = (q31_t) acc; + + /* Compute and store error */ + e = *pRef++ - (q31_t) acc; + + *pErr++ = (q31_t) e; + + /* Weighting factor for the LMS version */ + alpha = (q31_t) (((q63_t) e * mu) >> 31); + + /* Initialize pState pointer */ + /* Advance state pointer by 1 for the next sample */ + px = pState++; + + /* Initialize pCoeffs pointer */ + pb = pCoeffs; + + /* Loop over numTaps number of values */ + tapCnt = numTaps; + + while (tapCnt > 0U) + { + /* Perform the multiply-accumulate */ + coef = (q31_t) (((q63_t) alpha * (*px++)) >> (32)); + *pb = clip_q63_to_q31((q63_t) * pb + (coef << 1U)); + pb++; + + /* Decrement the loop counter */ + tapCnt--; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Processing is complete. Now copy the last numTaps - 1 samples to the + start of the state buffer. This prepares the state buffer for the + next function call. */ + + /* Points to the start of the pState buffer */ + pStateCurnt = S->pState; + + /* Copy (numTaps - 1U) samples */ + tapCnt = (numTaps - 1U); + + /* Copy the data */ + while (tapCnt > 0U) + { + *pStateCurnt++ = *pState++; + + /* Decrement the loop counter */ + tapCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of LMS group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c new file mode 100644 index 0000000..9b609be --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_f32.c @@ -0,0 +1,196 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_add_f32.c + * Description: Floating-point matrix addition + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixAdd Matrix Addition + * + * Adds two matrices. + * \image html MatrixAddition.gif "Addition of two 3 x 3 matrices" + * + * The functions check to make sure that + * pSrcA, pSrcB, and pDst have the same + * number of rows and columns. + */ + +/** + * @addtogroup MatrixAdd + * @{ + */ + + +/** + * @brief Floating-point matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + +#if defined (ARM_MATH_DSP) + + float32_t inA1, inA2, inB1, inB2, out1, out2; /* temporary variables */ + +#endif // #if defined (ARM_MATH_DSP) + + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix addition */ + +#ifdef ARM_MATH_MATRIX_CHECK + /* Check for matrix mismatch condition */ + if ((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif + { + + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + +#if defined (ARM_MATH_DSP) + + /* Loop unrolling */ + blkCnt = numSamples >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add and then store the results in the destination buffer. */ + /* Read values from source A */ + inA1 = pIn1[0]; + + /* Read values from source B */ + inB1 = pIn2[0]; + + /* Read values from source A */ + inA2 = pIn1[1]; + + /* out = sourceA + sourceB */ + out1 = inA1 + inB1; + + /* Read values from source B */ + inB2 = pIn2[1]; + + /* Read values from source A */ + inA1 = pIn1[2]; + + /* out = sourceA + sourceB */ + out2 = inA2 + inB2; + + /* Read values from source B */ + inB1 = pIn2[2]; + + /* Store result in destination */ + pOut[0] = out1; + pOut[1] = out2; + + /* Read values from source A */ + inA2 = pIn1[3]; + + /* Read values from source B */ + inB2 = pIn2[3]; + + /* out = sourceA + sourceB */ + out1 = inA1 + inB1; + + /* out = sourceA + sourceB */ + out2 = inA2 + inB2; + + /* Store result in destination */ + pOut[2] = out1; + + /* Store result in destination */ + pOut[3] = out2; + + + /* update pointers to process next sampels */ + pIn1 += 4U; + pIn2 += 4U; + pOut += 4U; + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add and then store the results in the destination buffer. */ + *pOut++ = (*pIn1++) + (*pIn2++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixAdd group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c new file mode 100644 index 0000000..e6737fa --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q15.c @@ -0,0 +1,151 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_add_q15.c + * Description: Q15 matrix addition + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixAdd + * @{ + */ + +/** + * @brief Q15 matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +arm_status arm_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst) +{ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B */ + q15_t *pOut = pDst->pData; /* output data matrix pointer */ + uint16_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix addition */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Total number of samples in the input matrix */ + numSamples = (uint16_t) (pSrcA->numRows * pSrcA->numCols); + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop unrolling */ + blkCnt = (uint32_t) numSamples >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, Saturate and then store the results in the destination buffer. */ + *__SIMD32(pOut)++ = __QADD16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); + *__SIMD32(pOut)++ = __QADD16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = (uint32_t) numSamples % 0x4U; + + /* q15 pointers of input and output are initialized */ + + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, Saturate and then store the results in the destination buffer. */ + *pOut++ = (q15_t) __QADD16(*pInA++, *pInB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = (uint32_t) numSamples; + + + /* q15 pointers of input and output are initialized */ + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, Saturate and then store the results in the destination buffer. */ + *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ + *pInB++), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixAdd group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c new file mode 100644 index 0000000..4119563 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_add_q31.c @@ -0,0 +1,195 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_add_q31.c + * Description: Q31 matrix addition + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixAdd + * @{ + */ + +/** + * @brief Q31 matrix addition. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. + */ + +arm_status arm_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + q31_t inA1, inB1; /* temporary variables */ + +#if defined (ARM_MATH_DSP) + + q31_t inA2, inB2; /* temporary variables */ + q31_t out1, out2; /* temporary variables */ + +#endif // #if defined (ARM_MATH_DSP) + + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix addition */ + +#ifdef ARM_MATH_MATRIX_CHECK + /* Check for matrix mismatch condition */ + if ((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop Unrolling */ + blkCnt = numSamples >> 2U; + + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, saturate and then store the results in the destination buffer. */ + /* Read values from source A */ + inA1 = pIn1[0]; + + /* Read values from source B */ + inB1 = pIn2[0]; + + /* Read values from source A */ + inA2 = pIn1[1]; + + /* Add and saturate */ + out1 = __QADD(inA1, inB1); + + /* Read values from source B */ + inB2 = pIn2[1]; + + /* Read values from source A */ + inA1 = pIn1[2]; + + /* Add and saturate */ + out2 = __QADD(inA2, inB2); + + /* Read values from source B */ + inB1 = pIn2[2]; + + /* Store result in destination */ + pOut[0] = out1; + pOut[1] = out2; + + /* Read values from source A */ + inA2 = pIn1[3]; + + /* Read values from source B */ + inB2 = pIn2[3]; + + /* Add and saturate */ + out1 = __QADD(inA1, inB1); + out2 = __QADD(inA2, inB2); + + /* Store result in destination */ + pOut[2] = out1; + pOut[3] = out2; + + /* update pointers to process next sampels */ + pIn1 += 4U; + pIn2 += 4U; + pOut += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) + B(m,n) */ + /* Add, saturate and then store the results in the destination buffer. */ + inA1 = *pIn1++; + inB1 = *pIn2++; + + inA1 = __QADD(inA1, inB1); + + /* Decrement the loop counter */ + blkCnt--; + + *pOut++ = inA1; + + } + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixAdd group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c new file mode 100644 index 0000000..9b2f532 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c @@ -0,0 +1,272 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_cmplx_mult_f32.c + * Description: Floating-point matrix multiplication + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup CmplxMatrixMult Complex Matrix Multiplication + * + * Complex Matrix multiplication is only defined if the number of columns of the + * first matrix equals the number of rows of the second matrix. + * Multiplying an M x N matrix with an N x P matrix results + * in an M x P matrix. + * When matrix size checking is enabled, the functions check: (1) that the inner dimensions of + * pSrcA and pSrcB are equal; and (2) that the size of the output + * matrix equals the outer dimensions of pSrcA and pSrcB. + */ + + +/** + * @addtogroup CmplxMatrixMult + * @{ + */ + +/** + * @brief Floating-point Complex matrix multiplication. + * @param[in] *pSrcA points to the first input complex matrix structure + * @param[in] *pSrcB points to the second input complex matrix structure + * @param[out] *pDst points to output complex matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_cmplx_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + float32_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + float32_t *px; /* Temporary output data matrix pointer */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + float32_t sumReal1, sumImag1; /* accumulator */ + float32_t a0, b0, c0, d0; + float32_t a1, b1, c1, d1; + float32_t sumReal2, sumImag2; /* accumulator */ + + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + uint16_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + 2 * i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + j = 0U; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sumReal1 = 0.0f; + sumImag1 = 0.0f; + + sumReal2 = 0.0f; + sumImag2 = 0.0f; + + /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ + pIn1 = pInA; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + colCnt = numColsA >> 2; + + /* matrix multiplication */ + while (colCnt > 0U) + { + + /* Reading real part of complex matrix A */ + a0 = *pIn1; + + /* Reading real part of complex matrix B */ + c0 = *pIn2; + + /* Reading imaginary part of complex matrix A */ + b0 = *(pIn1 + 1U); + + /* Reading imaginary part of complex matrix B */ + d0 = *(pIn2 + 1U); + + sumReal1 += a0 * c0; + sumImag1 += b0 * c0; + + pIn1 += 2U; + pIn2 += 2 * numColsB; + + sumReal2 -= b0 * d0; + sumImag2 += a0 * d0; + + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + + a1 = *pIn1; + c1 = *pIn2; + + b1 = *(pIn1 + 1U); + d1 = *(pIn2 + 1U); + + sumReal1 += a1 * c1; + sumImag1 += b1 * c1; + + pIn1 += 2U; + pIn2 += 2 * numColsB; + + sumReal2 -= b1 * d1; + sumImag2 += a1 * d1; + + a0 = *pIn1; + c0 = *pIn2; + + b0 = *(pIn1 + 1U); + d0 = *(pIn2 + 1U); + + sumReal1 += a0 * c0; + sumImag1 += b0 * c0; + + pIn1 += 2U; + pIn2 += 2 * numColsB; + + sumReal2 -= b0 * d0; + sumImag2 += a0 * d0; + + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + + a1 = *pIn1; + c1 = *pIn2; + + b1 = *(pIn1 + 1U); + d1 = *(pIn2 + 1U); + + sumReal1 += a1 * c1; + sumImag1 += b1 * c1; + + pIn1 += 2U; + pIn2 += 2 * numColsB; + + sumReal2 -= b1 * d1; + sumImag2 += a1 * d1; + + /* Decrement the loop count */ + colCnt--; + } + + /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + colCnt = numColsA % 0x4U; + + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + a1 = *pIn1; + c1 = *pIn2; + + b1 = *(pIn1 + 1U); + d1 = *(pIn2 + 1U); + + sumReal1 += a1 * c1; + sumImag1 += b1 * c1; + + pIn1 += 2U; + pIn2 += 2 * numColsB; + + sumReal2 -= b1 * d1; + sumImag2 += a1 * d1; + + /* Decrement the loop counter */ + colCnt--; + } + + sumReal1 += sumReal2; + sumImag1 += sumImag2; + + /* Store the result in the destination buffer */ + *px++ = sumReal1; + *px++ = sumImag1; + + /* Update the pointer pIn2 to point to the starting address of the next column */ + j++; + pIn2 = pSrcB->pData + 2U * j; + + /* Decrement the column loop counter */ + col--; + + } while (col > 0U); + + /* Update the pointer pInA to point to the starting address of the next row */ + i = i + numColsB; + pInA = pInA + 2 * numColsA; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c new file mode 100644 index 0000000..b1578a5 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c @@ -0,0 +1,413 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cmplx_mat_mult_q15.c + * Description: Q15 complex matrix multiplication + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup CmplxMatrixMult + * @{ + */ + + +/** + * @brief Q15 Complex matrix multiplication + * @param[in] *pSrcA points to the first input complex matrix structure + * @param[in] *pSrcB points to the second input complex matrix structure + * @param[out] *pDst points to output complex matrix structure + * @param[in] *pScratch points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * \par Conditions for optimum performance + * Input, output and state buffers should be aligned by 32-bit + * + * \par Restrictions + * If the silicon does not support unaligned memory access enable the macro UNALIGNED_SUPPORT_DISABLE + * In this case input, output, scratch buffers should be aligned by 32-bit + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. The inputs to the + * multiplications are in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate + * results are accumulated in a 64-bit accumulator in 34.30 format. This approach + * provides 33 guard bits and there is no risk of overflow. The 34.30 result is then + * truncated to 34.15 format by discarding the low 15 bits and then saturated to + * 1.15 format. + * + * \par + * Refer to arm_mat_mult_fast_q15() for a faster but less precise version of this function. + * + */ + + + + +arm_status arm_mat_cmplx_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pScratch) +{ + /* accumulator */ + q15_t *pSrcBT = pScratch; /* input data matrix pointer for transpose */ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ + q15_t *px; /* Temporary output data matrix pointer */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + uint16_t numRowsB = pSrcB->numRows; /* number of rows of input matrix A */ + uint16_t col, i = 0U, row = numRowsB, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + q63_t sumReal, sumImag; + +#ifdef UNALIGNED_SUPPORT_DISABLE + q15_t in; /* Temporary variable to hold the input value */ + q15_t a, b, c, d; +#else + q31_t in; /* Temporary variable to hold the input value */ + q31_t prod1, prod2; + q31_t pSourceA, pSourceB; +#endif + +#ifdef ARM_MATH_MATRIX_CHECK + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif + { + /* Matrix transpose */ + do + { + /* Apply loop unrolling and exchange the columns with row elements */ + col = numColsB >> 2; + + /* The pointer px is set to starting address of the column being processed */ + px = pSrcBT + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (col > 0U) + { +#ifdef UNALIGNED_SUPPORT_DISABLE + /* Read two elements from the row */ + in = *pInB++; + *px = in; + in = *pInB++; + px[1] = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB * 2; + + /* Read two elements from the row */ + in = *pInB++; + *px = in; + in = *pInB++; + px[1] = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB * 2; + + /* Read two elements from the row */ + in = *pInB++; + *px = in; + in = *pInB++; + px[1] = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB * 2; + + /* Read two elements from the row */ + in = *pInB++; + *px = in; + in = *pInB++; + px[1] = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB * 2; + + /* Decrement the column loop counter */ + col--; + } + + /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + col = numColsB % 0x4U; + + while (col > 0U) + { + /* Read two elements from the row */ + in = *pInB++; + *px = in; + in = *pInB++; + px[1] = in; +#else + + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + *__SIMD32(px) = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB * 2; + + + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + *__SIMD32(px) = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB * 2; + + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + *__SIMD32(px) = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB * 2; + + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + *__SIMD32(px) = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB * 2; + + /* Decrement the column loop counter */ + col--; + } + + /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + col = numColsB % 0x4U; + + while (col > 0U) + { + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + *__SIMD32(px) = in; +#endif + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB * 2; + + /* Decrement the column loop counter */ + col--; + } + + i = i + 2U; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + + /* Reset the variables for the usage in the following multiplication process */ + row = numRowsA; + i = 0U; + px = pDst->pData; + + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the transposed pSrcB data */ + pInB = pSrcBT; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sumReal = 0; + sumImag = 0; + + /* Apply loop unrolling and compute 2 MACs simultaneously. */ + colCnt = numColsA >> 1; + + /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ + pInA = pSrcA->pData + i * 2; + + + /* matrix multiplication */ + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + +#ifdef UNALIGNED_SUPPORT_DISABLE + + /* read real and imag values from pSrcA buffer */ + a = *pInA; + b = *(pInA + 1U); + /* read real and imag values from pSrcB buffer */ + c = *pInB; + d = *(pInB + 1U); + + /* Multiply and Accumlates */ + sumReal += (q31_t) a *c; + sumImag += (q31_t) a *d; + sumReal -= (q31_t) b *d; + sumImag += (q31_t) b *c; + + /* read next real and imag values from pSrcA buffer */ + a = *(pInA + 2U); + b = *(pInA + 3U); + /* read next real and imag values from pSrcB buffer */ + c = *(pInB + 2U); + d = *(pInB + 3U); + + /* update pointer */ + pInA += 4U; + + /* Multiply and Accumlates */ + sumReal += (q31_t) a *c; + sumImag += (q31_t) a *d; + sumReal -= (q31_t) b *d; + sumImag += (q31_t) b *c; + /* update pointer */ + pInB += 4U; +#else + /* read real and imag values from pSrcA and pSrcB buffer */ + pSourceA = *__SIMD32(pInA)++; + pSourceB = *__SIMD32(pInB)++; + + /* Multiply and Accumlates */ +#ifdef ARM_MATH_BIG_ENDIAN + prod1 = -__SMUSD(pSourceA, pSourceB); +#else + prod1 = __SMUSD(pSourceA, pSourceB); +#endif + prod2 = __SMUADX(pSourceA, pSourceB); + sumReal += (q63_t) prod1; + sumImag += (q63_t) prod2; + + /* read real and imag values from pSrcA and pSrcB buffer */ + pSourceA = *__SIMD32(pInA)++; + pSourceB = *__SIMD32(pInB)++; + + /* Multiply and Accumlates */ +#ifdef ARM_MATH_BIG_ENDIAN + prod1 = -__SMUSD(pSourceA, pSourceB); +#else + prod1 = __SMUSD(pSourceA, pSourceB); +#endif + prod2 = __SMUADX(pSourceA, pSourceB); + sumReal += (q63_t) prod1; + sumImag += (q63_t) prod2; + +#endif /* #ifdef UNALIGNED_SUPPORT_DISABLE */ + + /* Decrement the loop counter */ + colCnt--; + } + + /* process odd column samples */ + if ((numColsA & 0x1U) > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + +#ifdef UNALIGNED_SUPPORT_DISABLE + + /* read real and imag values from pSrcA and pSrcB buffer */ + a = *pInA++; + b = *pInA++; + c = *pInB++; + d = *pInB++; + + /* Multiply and Accumlates */ + sumReal += (q31_t) a *c; + sumImag += (q31_t) a *d; + sumReal -= (q31_t) b *d; + sumImag += (q31_t) b *c; + +#else + /* read real and imag values from pSrcA and pSrcB buffer */ + pSourceA = *__SIMD32(pInA)++; + pSourceB = *__SIMD32(pInB)++; + + /* Multiply and Accumlates */ +#ifdef ARM_MATH_BIG_ENDIAN + prod1 = -__SMUSD(pSourceA, pSourceB); +#else + prod1 = __SMUSD(pSourceA, pSourceB); +#endif + prod2 = __SMUADX(pSourceA, pSourceB); + sumReal += (q63_t) prod1; + sumImag += (q63_t) prod2; + +#endif /* #ifdef UNALIGNED_SUPPORT_DISABLE */ + + } + + /* Saturate and store the result in the destination buffer */ + + *px++ = (q15_t) (__SSAT(sumReal >> 15, 16)); + *px++ = (q15_t) (__SSAT(sumImag >> 15, 16)); + + /* Decrement the column loop counter */ + col--; + + } while (col > 0U); + + i = i + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c new file mode 100644 index 0000000..a05440e --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c @@ -0,0 +1,282 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_cmplx_mult_q31.c + * Description: Floating-point matrix multiplication + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup CmplxMatrixMult + * @{ + */ + +/** + * @brief Q31 Complex matrix multiplication + * @param[in] *pSrcA points to the first input complex matrix structure + * @param[in] *pSrcB points to the second input complex matrix structure + * @param[out] *pDst points to output complex matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate + * multiplication results but provides only a single guard bit. There is no saturation + * on intermediate additions. Thus, if the accumulator overflows it wraps around and + * distorts the result. The input signals should be scaled down to avoid intermediate + * overflows. The input is thus scaled down by log2(numColsA) bits + * to avoid overflows, as a total of numColsA additions are performed internally. + * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. + * + * + */ + +arm_status arm_mat_cmplx_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + q31_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + q31_t *px; /* Temporary output data matrix pointer */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + q63_t sumReal1, sumImag1; /* accumulator */ + q31_t a0, b0, c0, d0; + q31_t a1, b1, c1, d1; + + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + uint16_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + 2 * i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + j = 0U; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sumReal1 = 0.0; + sumImag1 = 0.0; + + /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ + pIn1 = pInA; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + colCnt = numColsA >> 2; + + /* matrix multiplication */ + while (colCnt > 0U) + { + + /* Reading real part of complex matrix A */ + a0 = *pIn1; + + /* Reading real part of complex matrix B */ + c0 = *pIn2; + + /* Reading imaginary part of complex matrix A */ + b0 = *(pIn1 + 1U); + + /* Reading imaginary part of complex matrix B */ + d0 = *(pIn2 + 1U); + + /* Multiply and Accumlates */ + sumReal1 += (q63_t) a0 *c0; + sumImag1 += (q63_t) b0 *c0; + + /* update pointers */ + pIn1 += 2U; + pIn2 += 2 * numColsB; + + /* Multiply and Accumlates */ + sumReal1 -= (q63_t) b0 *d0; + sumImag1 += (q63_t) a0 *d0; + + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + + /* read real and imag values from pSrcA and pSrcB buffer */ + a1 = *pIn1; + c1 = *pIn2; + b1 = *(pIn1 + 1U); + d1 = *(pIn2 + 1U); + + /* Multiply and Accumlates */ + sumReal1 += (q63_t) a1 *c1; + sumImag1 += (q63_t) b1 *c1; + + /* update pointers */ + pIn1 += 2U; + pIn2 += 2 * numColsB; + + /* Multiply and Accumlates */ + sumReal1 -= (q63_t) b1 *d1; + sumImag1 += (q63_t) a1 *d1; + + a0 = *pIn1; + c0 = *pIn2; + + b0 = *(pIn1 + 1U); + d0 = *(pIn2 + 1U); + + /* Multiply and Accumlates */ + sumReal1 += (q63_t) a0 *c0; + sumImag1 += (q63_t) b0 *c0; + + /* update pointers */ + pIn1 += 2U; + pIn2 += 2 * numColsB; + + /* Multiply and Accumlates */ + sumReal1 -= (q63_t) b0 *d0; + sumImag1 += (q63_t) a0 *d0; + + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + + a1 = *pIn1; + c1 = *pIn2; + + b1 = *(pIn1 + 1U); + d1 = *(pIn2 + 1U); + + /* Multiply and Accumlates */ + sumReal1 += (q63_t) a1 *c1; + sumImag1 += (q63_t) b1 *c1; + + /* update pointers */ + pIn1 += 2U; + pIn2 += 2 * numColsB; + + /* Multiply and Accumlates */ + sumReal1 -= (q63_t) b1 *d1; + sumImag1 += (q63_t) a1 *d1; + + /* Decrement the loop count */ + colCnt--; + } + + /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + colCnt = numColsA % 0x4U; + + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + a1 = *pIn1; + c1 = *pIn2; + + b1 = *(pIn1 + 1U); + d1 = *(pIn2 + 1U); + + /* Multiply and Accumlates */ + sumReal1 += (q63_t) a1 *c1; + sumImag1 += (q63_t) b1 *c1; + + /* update pointers */ + pIn1 += 2U; + pIn2 += 2 * numColsB; + + /* Multiply and Accumlates */ + sumReal1 -= (q63_t) b1 *d1; + sumImag1 += (q63_t) a1 *d1; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Store the result in the destination buffer */ + *px++ = (q31_t) clip_q63_to_q31(sumReal1 >> 31); + *px++ = (q31_t) clip_q63_to_q31(sumImag1 >> 31); + + /* Update the pointer pIn2 to point to the starting address of the next column */ + j++; + pIn2 = pSrcB->pData + 2U * j; + + /* Decrement the column loop counter */ + col--; + + } while (col > 0U); + + /* Update the pointer pInA to point to the starting address of the next row */ + i = i + numColsB; + pInA = pInA + 2 * numColsA; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c new file mode 100644 index 0000000..34399c7 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_f32.c @@ -0,0 +1,76 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_init_f32.c + * Description: Floating-point matrix initialization + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixInit Matrix Initialization + * + * Initializes the underlying matrix data structure. + * The functions set the numRows, + * numCols, and pData fields + * of the matrix data structure. + */ + +/** + * @addtogroup MatrixInit + * @{ + */ + +/** + * @brief Floating-point matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + +void arm_mat_init_f32( + arm_matrix_instance_f32 * S, + uint16_t nRows, + uint16_t nColumns, + float32_t * pData) +{ + /* Assign Number of Rows */ + S->numRows = nRows; + + /* Assign Number of Columns */ + S->numCols = nColumns; + + /* Assign Data pointer */ + S->pData = pData; +} + +/** + * @} end of MatrixInit group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c new file mode 100644 index 0000000..6be7387 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q15.c @@ -0,0 +1,67 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_init_q15.c + * Description: Q15 matrix initialization + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixInit + * @{ + */ + + /** + * @brief Q15 matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + +void arm_mat_init_q15( + arm_matrix_instance_q15 * S, + uint16_t nRows, + uint16_t nColumns, + q15_t * pData) +{ + /* Assign Number of Rows */ + S->numRows = nRows; + + /* Assign Number of Columns */ + S->numCols = nColumns; + + /* Assign Data pointer */ + S->pData = pData; +} + +/** + * @} end of MatrixInit group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c new file mode 100644 index 0000000..c8a0839 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_init_q31.c @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_init_q31.c + * Description: Q31 matrix initialization + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixInit Matrix Initialization + * + */ + +/** + * @addtogroup MatrixInit + * @{ + */ + + /** + * @brief Q31 matrix initialization. + * @param[in,out] *S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] *pData points to the matrix data array. + * @return none + */ + +void arm_mat_init_q31( + arm_matrix_instance_q31 * S, + uint16_t nRows, + uint16_t nColumns, + q31_t * pData) +{ + /* Assign Number of Rows */ + S->numRows = nRows; + + /* Assign Number of Columns */ + S->numCols = nColumns; + + /* Assign Data pointer */ + S->pData = pData; +} + +/** + * @} end of MatrixInit group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c new file mode 100644 index 0000000..c0f8fc4 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f32.c @@ -0,0 +1,691 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_inverse_f32.c + * Description: Floating-point matrix inverse + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixInv Matrix Inverse + * + * Computes the inverse of a matrix. + * + * The inverse is defined only if the input matrix is square and non-singular (the determinant + * is non-zero). The function checks that the input and output matrices are square and of the + * same size. + * + * Matrix inversion is numerically sensitive and the CMSIS DSP library only supports matrix + * inversion of floating-point matrices. + * + * \par Algorithm + * The Gauss-Jordan method is used to find the inverse. + * The algorithm performs a sequence of elementary row-operations until it + * reduces the input matrix to an identity matrix. Applying the same sequence + * of elementary row-operations to an identity matrix yields the inverse matrix. + * If the input matrix is singular, then the algorithm terminates and returns error status + * ARM_MATH_SINGULAR. + * \image html MatrixInverse.gif "Matrix Inverse of a 3 x 3 matrix using Gauss-Jordan Method" + */ + +/** + * @addtogroup MatrixInv + * @{ + */ + +/** + * @brief Floating-point matrix inverse. + * @param[in] *pSrc points to input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns + * ARM_MATH_SIZE_MISMATCH if the input matrix is not square or if the size + * of the output matrix does not match the size of the input matrix. + * If the input matrix is found to be singular (non-invertible), then the function returns + * ARM_MATH_SINGULAR. Otherwise, the function returns ARM_MATH_SUCCESS. + */ + +arm_status arm_mat_inverse_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn = pSrc->pData; /* input data matrix pointer */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + float32_t *pInT1, *pInT2; /* Temporary input data matrix pointer */ + float32_t *pOutT1, *pOutT2; /* Temporary output data matrix pointer */ + float32_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst; /* Temporary input and output data matrix pointer */ + uint32_t numRows = pSrc->numRows; /* Number of rows in the matrix */ + uint32_t numCols = pSrc->numCols; /* Number of Cols in the matrix */ + +#if defined (ARM_MATH_DSP) + float32_t maxC; /* maximum value in the column */ + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t Xchg, in = 0.0f, in1; /* Temporary input values */ + uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l; /* loop counters */ + arm_status status; /* status of matrix inverse */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols) + || (pSrc->numRows != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + + /*-------------------------------------------------------------------------------------------------------------- + * Matrix Inverse can be solved using elementary row operations. + * + * Gauss-Jordan Method: + * + * 1. First combine the identity matrix and the input matrix separated by a bar to form an + * augmented matrix as follows: + * _ _ _ _ + * | a11 a12 | 1 0 | | X11 X12 | + * | | | = | | + * |_ a21 a22 | 0 1 _| |_ X21 X21 _| + * + * 2. In our implementation, pDst Matrix is used as identity matrix. + * + * 3. Begin with the first row. Let i = 1. + * + * 4. Check to see if the pivot for column i is the greatest of the column. + * The pivot is the element of the main diagonal that is on the current row. + * For instance, if working with row i, then the pivot element is aii. + * If the pivot is not the most significant of the columns, exchange that row with a row + * below it that does contain the most significant value in column i. If the most + * significant value of the column is zero, then an inverse to that matrix does not exist. + * The most significant value of the column is the absolute maximum. + * + * 5. Divide every element of row i by the pivot. + * + * 6. For every row below and row i, replace that row with the sum of that row and + * a multiple of row i so that each new element in column i below row i is zero. + * + * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros + * for every element below and above the main diagonal. + * + * 8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc). + * Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst). + *----------------------------------------------------------------------------------------------------------------*/ + + /* Working pointer for destination matrix */ + pOutT1 = pOut; + + /* Loop over the number of rows */ + rowCnt = numRows; + + /* Making the destination matrix as identity matrix */ + while (rowCnt > 0U) + { + /* Writing all zeroes in lower triangle of the destination matrix */ + j = numRows - rowCnt; + while (j > 0U) + { + *pOutT1++ = 0.0f; + j--; + } + + /* Writing all ones in the diagonal of the destination matrix */ + *pOutT1++ = 1.0f; + + /* Writing all zeroes in upper triangle of the destination matrix */ + j = rowCnt - 1U; + while (j > 0U) + { + *pOutT1++ = 0.0f; + j--; + } + + /* Decrement the loop counter */ + rowCnt--; + } + + /* Loop over the number of columns of the input matrix. + All the elements in each column are processed by the row operations */ + loopCnt = numCols; + + /* Index modifier to navigate through the columns */ + l = 0U; + + while (loopCnt > 0U) + { + /* Check if the pivot element is zero.. + * If it is zero then interchange the row with non zero row below. + * If there is no non zero element to replace in the rows below, + * then the matrix is Singular. */ + + /* Working pointer for the input matrix that points + * to the pivot element of the particular row */ + pInT1 = pIn + (l * numCols); + + /* Working pointer for the destination matrix that points + * to the pivot element of the particular row */ + pOutT1 = pOut + (l * numCols); + + /* Temporary variable to hold the pivot value */ + in = *pInT1; + + /* Grab the most significant value from column l */ + maxC = 0; + for (i = l; i < numRows; i++) + { + maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC); + pInT1 += numCols; + } + + /* Update the status if the matrix is singular */ + if (maxC == 0.0f) + { + return ARM_MATH_SINGULAR; + } + + /* Restore pInT1 */ + pInT1 = pIn; + + /* Destination pointer modifier */ + k = 1U; + + /* Check if the pivot element is the most significant of the column */ + if ( (in > 0.0f ? in : -in) != maxC) + { + /* Loop over the number rows present below */ + i = numRows - (l + 1U); + + while (i > 0U) + { + /* Update the input and destination pointers */ + pInT2 = pInT1 + (numCols * l); + pOutT2 = pOutT1 + (numCols * k); + + /* Look for the most significant element to + * replace in the rows below */ + if ((*pInT2 > 0.0f ? *pInT2: -*pInT2) == maxC) + { + /* Loop over number of columns + * to the right of the pilot element */ + j = numCols - l; + + while (j > 0U) + { + /* Exchange the row elements of the input matrix */ + Xchg = *pInT2; + *pInT2++ = *pInT1; + *pInT1++ = Xchg; + + /* Decrement the loop counter */ + j--; + } + + /* Loop over number of columns of the destination matrix */ + j = numCols; + + while (j > 0U) + { + /* Exchange the row elements of the destination matrix */ + Xchg = *pOutT2; + *pOutT2++ = *pOutT1; + *pOutT1++ = Xchg; + + /* Decrement the loop counter */ + j--; + } + + /* Flag to indicate whether exchange is done or not */ + flag = 1U; + + /* Break after exchange is done */ + break; + } + + /* Update the destination pointer modifier */ + k++; + + /* Decrement the loop counter */ + i--; + } + } + + /* Update the status if the matrix is singular */ + if ((flag != 1U) && (in == 0.0f)) + { + return ARM_MATH_SINGULAR; + } + + /* Points to the pivot row of input and destination matrices */ + pPivotRowIn = pIn + (l * numCols); + pPivotRowDst = pOut + (l * numCols); + + /* Temporary pointers to the pivot row pointers */ + pInT1 = pPivotRowIn; + pInT2 = pPivotRowDst; + + /* Pivot element of the row */ + in = *pPivotRowIn; + + /* Loop over number of columns + * to the right of the pilot element */ + j = (numCols - l); + + while (j > 0U) + { + /* Divide each element of the row of the input matrix + * by the pivot element */ + in1 = *pInT1; + *pInT1++ = in1 / in; + + /* Decrement the loop counter */ + j--; + } + + /* Loop over number of columns of the destination matrix */ + j = numCols; + + while (j > 0U) + { + /* Divide each element of the row of the destination matrix + * by the pivot element */ + in1 = *pInT2; + *pInT2++ = in1 / in; + + /* Decrement the loop counter */ + j--; + } + + /* Replace the rows with the sum of that row and a multiple of row i + * so that each new element in column i above row i is zero.*/ + + /* Temporary pointers for input and destination matrices */ + pInT1 = pIn; + pInT2 = pOut; + + /* index used to check for pivot element */ + i = 0U; + + /* Loop over number of rows */ + /* to be replaced by the sum of that row and a multiple of row i */ + k = numRows; + + while (k > 0U) + { + /* Check for the pivot element */ + if (i == l) + { + /* If the processing element is the pivot element, + only the columns to the right are to be processed */ + pInT1 += numCols - l; + + pInT2 += numCols; + } + else + { + /* Element of the reference row */ + in = *pInT1; + + /* Working pointers for input and destination pivot rows */ + pPRT_in = pPivotRowIn; + pPRT_pDst = pPivotRowDst; + + /* Loop over the number of columns to the right of the pivot element, + to replace the elements in the input matrix */ + j = (numCols - l); + + while (j > 0U) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + in1 = *pInT1; + *pInT1++ = in1 - (in * *pPRT_in++); + + /* Decrement the loop counter */ + j--; + } + + /* Loop over the number of columns to + replace the elements in the destination matrix */ + j = numCols; + + while (j > 0U) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + in1 = *pInT2; + *pInT2++ = in1 - (in * *pPRT_pDst++); + + /* Decrement the loop counter */ + j--; + } + + } + + /* Increment the temporary input pointer */ + pInT1 = pInT1 + l; + + /* Decrement the loop counter */ + k--; + + /* Increment the pivot index */ + i++; + } + + /* Increment the input pointer */ + pIn++; + + /* Decrement the loop counter */ + loopCnt--; + + /* Increment the index modifier */ + l++; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t Xchg, in = 0.0f; /* Temporary input values */ + uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l; /* loop counters */ + arm_status status; /* status of matrix inverse */ + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols) + || (pSrc->numRows != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + { + + /*-------------------------------------------------------------------------------------------------------------- + * Matrix Inverse can be solved using elementary row operations. + * + * Gauss-Jordan Method: + * + * 1. First combine the identity matrix and the input matrix separated by a bar to form an + * augmented matrix as follows: + * _ _ _ _ _ _ _ _ + * | | a11 a12 | | | 1 0 | | | X11 X12 | + * | | | | | | | = | | + * |_ |_ a21 a22 _| | |_0 1 _| _| |_ X21 X21 _| + * + * 2. In our implementation, pDst Matrix is used as identity matrix. + * + * 3. Begin with the first row. Let i = 1. + * + * 4. Check to see if the pivot for row i is zero. + * The pivot is the element of the main diagonal that is on the current row. + * For instance, if working with row i, then the pivot element is aii. + * If the pivot is zero, exchange that row with a row below it that does not + * contain a zero in column i. If this is not possible, then an inverse + * to that matrix does not exist. + * + * 5. Divide every element of row i by the pivot. + * + * 6. For every row below and row i, replace that row with the sum of that row and + * a multiple of row i so that each new element in column i below row i is zero. + * + * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros + * for every element below and above the main diagonal. + * + * 8. Now an identical matrix is formed to the left of the bar(input matrix, src). + * Therefore, the matrix to the right of the bar is our solution(dst matrix, dst). + *----------------------------------------------------------------------------------------------------------------*/ + + /* Working pointer for destination matrix */ + pOutT1 = pOut; + + /* Loop over the number of rows */ + rowCnt = numRows; + + /* Making the destination matrix as identity matrix */ + while (rowCnt > 0U) + { + /* Writing all zeroes in lower triangle of the destination matrix */ + j = numRows - rowCnt; + while (j > 0U) + { + *pOutT1++ = 0.0f; + j--; + } + + /* Writing all ones in the diagonal of the destination matrix */ + *pOutT1++ = 1.0f; + + /* Writing all zeroes in upper triangle of the destination matrix */ + j = rowCnt - 1U; + while (j > 0U) + { + *pOutT1++ = 0.0f; + j--; + } + + /* Decrement the loop counter */ + rowCnt--; + } + + /* Loop over the number of columns of the input matrix. + All the elements in each column are processed by the row operations */ + loopCnt = numCols; + + /* Index modifier to navigate through the columns */ + l = 0U; + //for(loopCnt = 0U; loopCnt < numCols; loopCnt++) + while (loopCnt > 0U) + { + /* Check if the pivot element is zero.. + * If it is zero then interchange the row with non zero row below. + * If there is no non zero element to replace in the rows below, + * then the matrix is Singular. */ + + /* Working pointer for the input matrix that points + * to the pivot element of the particular row */ + pInT1 = pIn + (l * numCols); + + /* Working pointer for the destination matrix that points + * to the pivot element of the particular row */ + pOutT1 = pOut + (l * numCols); + + /* Temporary variable to hold the pivot value */ + in = *pInT1; + + /* Destination pointer modifier */ + k = 1U; + + /* Check if the pivot element is zero */ + if (*pInT1 == 0.0f) + { + /* Loop over the number rows present below */ + for (i = (l + 1U); i < numRows; i++) + { + /* Update the input and destination pointers */ + pInT2 = pInT1 + (numCols * l); + pOutT2 = pOutT1 + (numCols * k); + + /* Check if there is a non zero pivot element to + * replace in the rows below */ + if (*pInT2 != 0.0f) + { + /* Loop over number of columns + * to the right of the pilot element */ + for (j = 0U; j < (numCols - l); j++) + { + /* Exchange the row elements of the input matrix */ + Xchg = *pInT2; + *pInT2++ = *pInT1; + *pInT1++ = Xchg; + } + + for (j = 0U; j < numCols; j++) + { + Xchg = *pOutT2; + *pOutT2++ = *pOutT1; + *pOutT1++ = Xchg; + } + + /* Flag to indicate whether exchange is done or not */ + flag = 1U; + + /* Break after exchange is done */ + break; + } + + /* Update the destination pointer modifier */ + k++; + } + } + + /* Update the status if the matrix is singular */ + if ((flag != 1U) && (in == 0.0f)) + { + return ARM_MATH_SINGULAR; + } + + /* Points to the pivot row of input and destination matrices */ + pPivotRowIn = pIn + (l * numCols); + pPivotRowDst = pOut + (l * numCols); + + /* Temporary pointers to the pivot row pointers */ + pInT1 = pPivotRowIn; + pOutT1 = pPivotRowDst; + + /* Pivot element of the row */ + in = *(pIn + (l * numCols)); + + /* Loop over number of columns + * to the right of the pilot element */ + for (j = 0U; j < (numCols - l); j++) + { + /* Divide each element of the row of the input matrix + * by the pivot element */ + *pInT1 = *pInT1 / in; + pInT1++; + } + for (j = 0U; j < numCols; j++) + { + /* Divide each element of the row of the destination matrix + * by the pivot element */ + *pOutT1 = *pOutT1 / in; + pOutT1++; + } + + /* Replace the rows with the sum of that row and a multiple of row i + * so that each new element in column i above row i is zero.*/ + + /* Temporary pointers for input and destination matrices */ + pInT1 = pIn; + pOutT1 = pOut; + + for (i = 0U; i < numRows; i++) + { + /* Check for the pivot element */ + if (i == l) + { + /* If the processing element is the pivot element, + only the columns to the right are to be processed */ + pInT1 += numCols - l; + pOutT1 += numCols; + } + else + { + /* Element of the reference row */ + in = *pInT1; + + /* Working pointers for input and destination pivot rows */ + pPRT_in = pPivotRowIn; + pPRT_pDst = pPivotRowDst; + + /* Loop over the number of columns to the right of the pivot element, + to replace the elements in the input matrix */ + for (j = 0U; j < (numCols - l); j++) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + *pInT1 = *pInT1 - (in * *pPRT_in++); + pInT1++; + } + /* Loop over the number of columns to + replace the elements in the destination matrix */ + for (j = 0U; j < numCols; j++) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + *pOutT1 = *pOutT1 - (in * *pPRT_pDst++); + pOutT1++; + } + + } + /* Increment the temporary input pointer */ + pInT1 = pInT1 + l; + } + /* Increment the input pointer */ + pIn++; + + /* Decrement the loop counter */ + loopCnt--; + /* Increment the index modifier */ + l++; + } + + +#endif /* #if defined (ARM_MATH_DSP) */ + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + + if ((flag != 1U) && (in == 0.0f)) + { + pIn = pSrc->pData; + for (i = 0; i < numRows * numCols; i++) + { + if (pIn[i] != 0.0f) + break; + } + + if (i == numRows * numCols) + status = ARM_MATH_SINGULAR; + } + } + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixInv group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c new file mode 100644 index 0000000..441376b --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_inverse_f64.c @@ -0,0 +1,691 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_inverse_f64.c + * Description: Floating-point matrix inverse + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixInv Matrix Inverse + * + * Computes the inverse of a matrix. + * + * The inverse is defined only if the input matrix is square and non-singular (the determinant + * is non-zero). The function checks that the input and output matrices are square and of the + * same size. + * + * Matrix inversion is numerically sensitive and the CMSIS DSP library only supports matrix + * inversion of floating-point matrices. + * + * \par Algorithm + * The Gauss-Jordan method is used to find the inverse. + * The algorithm performs a sequence of elementary row-operations until it + * reduces the input matrix to an identity matrix. Applying the same sequence + * of elementary row-operations to an identity matrix yields the inverse matrix. + * If the input matrix is singular, then the algorithm terminates and returns error status + * ARM_MATH_SINGULAR. + * \image html MatrixInverse.gif "Matrix Inverse of a 3 x 3 matrix using Gauss-Jordan Method" + */ + +/** + * @addtogroup MatrixInv + * @{ + */ + +/** + * @brief Floating-point matrix inverse. + * @param[in] *pSrc points to input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns + * ARM_MATH_SIZE_MISMATCH if the input matrix is not square or if the size + * of the output matrix does not match the size of the input matrix. + * If the input matrix is found to be singular (non-invertible), then the function returns + * ARM_MATH_SINGULAR. Otherwise, the function returns ARM_MATH_SUCCESS. + */ + +arm_status arm_mat_inverse_f64( + const arm_matrix_instance_f64 * pSrc, + arm_matrix_instance_f64 * pDst) +{ + float64_t *pIn = pSrc->pData; /* input data matrix pointer */ + float64_t *pOut = pDst->pData; /* output data matrix pointer */ + float64_t *pInT1, *pInT2; /* Temporary input data matrix pointer */ + float64_t *pOutT1, *pOutT2; /* Temporary output data matrix pointer */ + float64_t *pPivotRowIn, *pPRT_in, *pPivotRowDst, *pPRT_pDst; /* Temporary input and output data matrix pointer */ + uint32_t numRows = pSrc->numRows; /* Number of rows in the matrix */ + uint32_t numCols = pSrc->numCols; /* Number of Cols in the matrix */ + +#if defined (ARM_MATH_DSP) + float64_t maxC; /* maximum value in the column */ + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float64_t Xchg, in = 0.0f, in1; /* Temporary input values */ + uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l; /* loop counters */ + arm_status status; /* status of matrix inverse */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols) + || (pSrc->numRows != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + + /*-------------------------------------------------------------------------------------------------------------- + * Matrix Inverse can be solved using elementary row operations. + * + * Gauss-Jordan Method: + * + * 1. First combine the identity matrix and the input matrix separated by a bar to form an + * augmented matrix as follows: + * _ _ _ _ + * | a11 a12 | 1 0 | | X11 X12 | + * | | | = | | + * |_ a21 a22 | 0 1 _| |_ X21 X21 _| + * + * 2. In our implementation, pDst Matrix is used as identity matrix. + * + * 3. Begin with the first row. Let i = 1. + * + * 4. Check to see if the pivot for column i is the greatest of the column. + * The pivot is the element of the main diagonal that is on the current row. + * For instance, if working with row i, then the pivot element is aii. + * If the pivot is not the most significant of the columns, exchange that row with a row + * below it that does contain the most significant value in column i. If the most + * significant value of the column is zero, then an inverse to that matrix does not exist. + * The most significant value of the column is the absolute maximum. + * + * 5. Divide every element of row i by the pivot. + * + * 6. For every row below and row i, replace that row with the sum of that row and + * a multiple of row i so that each new element in column i below row i is zero. + * + * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros + * for every element below and above the main diagonal. + * + * 8. Now an identical matrix is formed to the left of the bar(input matrix, pSrc). + * Therefore, the matrix to the right of the bar is our solution(pDst matrix, pDst). + *----------------------------------------------------------------------------------------------------------------*/ + + /* Working pointer for destination matrix */ + pOutT1 = pOut; + + /* Loop over the number of rows */ + rowCnt = numRows; + + /* Making the destination matrix as identity matrix */ + while (rowCnt > 0U) + { + /* Writing all zeroes in lower triangle of the destination matrix */ + j = numRows - rowCnt; + while (j > 0U) + { + *pOutT1++ = 0.0f; + j--; + } + + /* Writing all ones in the diagonal of the destination matrix */ + *pOutT1++ = 1.0f; + + /* Writing all zeroes in upper triangle of the destination matrix */ + j = rowCnt - 1U; + while (j > 0U) + { + *pOutT1++ = 0.0f; + j--; + } + + /* Decrement the loop counter */ + rowCnt--; + } + + /* Loop over the number of columns of the input matrix. + All the elements in each column are processed by the row operations */ + loopCnt = numCols; + + /* Index modifier to navigate through the columns */ + l = 0U; + + while (loopCnt > 0U) + { + /* Check if the pivot element is zero.. + * If it is zero then interchange the row with non zero row below. + * If there is no non zero element to replace in the rows below, + * then the matrix is Singular. */ + + /* Working pointer for the input matrix that points + * to the pivot element of the particular row */ + pInT1 = pIn + (l * numCols); + + /* Working pointer for the destination matrix that points + * to the pivot element of the particular row */ + pOutT1 = pOut + (l * numCols); + + /* Temporary variable to hold the pivot value */ + in = *pInT1; + + /* Grab the most significant value from column l */ + maxC = 0; + for (i = l; i < numRows; i++) + { + maxC = *pInT1 > 0 ? (*pInT1 > maxC ? *pInT1 : maxC) : (-*pInT1 > maxC ? -*pInT1 : maxC); + pInT1 += numCols; + } + + /* Update the status if the matrix is singular */ + if (maxC == 0.0f) + { + return ARM_MATH_SINGULAR; + } + + /* Restore pInT1 */ + pInT1 = pIn; + + /* Destination pointer modifier */ + k = 1U; + + /* Check if the pivot element is the most significant of the column */ + if ( (in > 0.0f ? in : -in) != maxC) + { + /* Loop over the number rows present below */ + i = numRows - (l + 1U); + + while (i > 0U) + { + /* Update the input and destination pointers */ + pInT2 = pInT1 + (numCols * l); + pOutT2 = pOutT1 + (numCols * k); + + /* Look for the most significant element to + * replace in the rows below */ + if ((*pInT2 > 0.0f ? *pInT2: -*pInT2) == maxC) + { + /* Loop over number of columns + * to the right of the pilot element */ + j = numCols - l; + + while (j > 0U) + { + /* Exchange the row elements of the input matrix */ + Xchg = *pInT2; + *pInT2++ = *pInT1; + *pInT1++ = Xchg; + + /* Decrement the loop counter */ + j--; + } + + /* Loop over number of columns of the destination matrix */ + j = numCols; + + while (j > 0U) + { + /* Exchange the row elements of the destination matrix */ + Xchg = *pOutT2; + *pOutT2++ = *pOutT1; + *pOutT1++ = Xchg; + + /* Decrement the loop counter */ + j--; + } + + /* Flag to indicate whether exchange is done or not */ + flag = 1U; + + /* Break after exchange is done */ + break; + } + + /* Update the destination pointer modifier */ + k++; + + /* Decrement the loop counter */ + i--; + } + } + + /* Update the status if the matrix is singular */ + if ((flag != 1U) && (in == 0.0f)) + { + return ARM_MATH_SINGULAR; + } + + /* Points to the pivot row of input and destination matrices */ + pPivotRowIn = pIn + (l * numCols); + pPivotRowDst = pOut + (l * numCols); + + /* Temporary pointers to the pivot row pointers */ + pInT1 = pPivotRowIn; + pInT2 = pPivotRowDst; + + /* Pivot element of the row */ + in = *pPivotRowIn; + + /* Loop over number of columns + * to the right of the pilot element */ + j = (numCols - l); + + while (j > 0U) + { + /* Divide each element of the row of the input matrix + * by the pivot element */ + in1 = *pInT1; + *pInT1++ = in1 / in; + + /* Decrement the loop counter */ + j--; + } + + /* Loop over number of columns of the destination matrix */ + j = numCols; + + while (j > 0U) + { + /* Divide each element of the row of the destination matrix + * by the pivot element */ + in1 = *pInT2; + *pInT2++ = in1 / in; + + /* Decrement the loop counter */ + j--; + } + + /* Replace the rows with the sum of that row and a multiple of row i + * so that each new element in column i above row i is zero.*/ + + /* Temporary pointers for input and destination matrices */ + pInT1 = pIn; + pInT2 = pOut; + + /* index used to check for pivot element */ + i = 0U; + + /* Loop over number of rows */ + /* to be replaced by the sum of that row and a multiple of row i */ + k = numRows; + + while (k > 0U) + { + /* Check for the pivot element */ + if (i == l) + { + /* If the processing element is the pivot element, + only the columns to the right are to be processed */ + pInT1 += numCols - l; + + pInT2 += numCols; + } + else + { + /* Element of the reference row */ + in = *pInT1; + + /* Working pointers for input and destination pivot rows */ + pPRT_in = pPivotRowIn; + pPRT_pDst = pPivotRowDst; + + /* Loop over the number of columns to the right of the pivot element, + to replace the elements in the input matrix */ + j = (numCols - l); + + while (j > 0U) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + in1 = *pInT1; + *pInT1++ = in1 - (in * *pPRT_in++); + + /* Decrement the loop counter */ + j--; + } + + /* Loop over the number of columns to + replace the elements in the destination matrix */ + j = numCols; + + while (j > 0U) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + in1 = *pInT2; + *pInT2++ = in1 - (in * *pPRT_pDst++); + + /* Decrement the loop counter */ + j--; + } + + } + + /* Increment the temporary input pointer */ + pInT1 = pInT1 + l; + + /* Decrement the loop counter */ + k--; + + /* Increment the pivot index */ + i++; + } + + /* Increment the input pointer */ + pIn++; + + /* Decrement the loop counter */ + loopCnt--; + + /* Increment the index modifier */ + l++; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + float64_t Xchg, in = 0.0f; /* Temporary input values */ + uint32_t i, rowCnt, flag = 0U, j, loopCnt, k, l; /* loop counters */ + arm_status status; /* status of matrix inverse */ + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pSrc->numCols) || (pDst->numRows != pDst->numCols) + || (pSrc->numRows != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + { + + /*-------------------------------------------------------------------------------------------------------------- + * Matrix Inverse can be solved using elementary row operations. + * + * Gauss-Jordan Method: + * + * 1. First combine the identity matrix and the input matrix separated by a bar to form an + * augmented matrix as follows: + * _ _ _ _ _ _ _ _ + * | | a11 a12 | | | 1 0 | | | X11 X12 | + * | | | | | | | = | | + * |_ |_ a21 a22 _| | |_0 1 _| _| |_ X21 X21 _| + * + * 2. In our implementation, pDst Matrix is used as identity matrix. + * + * 3. Begin with the first row. Let i = 1. + * + * 4. Check to see if the pivot for row i is zero. + * The pivot is the element of the main diagonal that is on the current row. + * For instance, if working with row i, then the pivot element is aii. + * If the pivot is zero, exchange that row with a row below it that does not + * contain a zero in column i. If this is not possible, then an inverse + * to that matrix does not exist. + * + * 5. Divide every element of row i by the pivot. + * + * 6. For every row below and row i, replace that row with the sum of that row and + * a multiple of row i so that each new element in column i below row i is zero. + * + * 7. Move to the next row and column and repeat steps 2 through 5 until you have zeros + * for every element below and above the main diagonal. + * + * 8. Now an identical matrix is formed to the left of the bar(input matrix, src). + * Therefore, the matrix to the right of the bar is our solution(dst matrix, dst). + *----------------------------------------------------------------------------------------------------------------*/ + + /* Working pointer for destination matrix */ + pOutT1 = pOut; + + /* Loop over the number of rows */ + rowCnt = numRows; + + /* Making the destination matrix as identity matrix */ + while (rowCnt > 0U) + { + /* Writing all zeroes in lower triangle of the destination matrix */ + j = numRows - rowCnt; + while (j > 0U) + { + *pOutT1++ = 0.0f; + j--; + } + + /* Writing all ones in the diagonal of the destination matrix */ + *pOutT1++ = 1.0f; + + /* Writing all zeroes in upper triangle of the destination matrix */ + j = rowCnt - 1U; + while (j > 0U) + { + *pOutT1++ = 0.0f; + j--; + } + + /* Decrement the loop counter */ + rowCnt--; + } + + /* Loop over the number of columns of the input matrix. + All the elements in each column are processed by the row operations */ + loopCnt = numCols; + + /* Index modifier to navigate through the columns */ + l = 0U; + //for(loopCnt = 0U; loopCnt < numCols; loopCnt++) + while (loopCnt > 0U) + { + /* Check if the pivot element is zero.. + * If it is zero then interchange the row with non zero row below. + * If there is no non zero element to replace in the rows below, + * then the matrix is Singular. */ + + /* Working pointer for the input matrix that points + * to the pivot element of the particular row */ + pInT1 = pIn + (l * numCols); + + /* Working pointer for the destination matrix that points + * to the pivot element of the particular row */ + pOutT1 = pOut + (l * numCols); + + /* Temporary variable to hold the pivot value */ + in = *pInT1; + + /* Destination pointer modifier */ + k = 1U; + + /* Check if the pivot element is zero */ + if (*pInT1 == 0.0f) + { + /* Loop over the number rows present below */ + for (i = (l + 1U); i < numRows; i++) + { + /* Update the input and destination pointers */ + pInT2 = pInT1 + (numCols * l); + pOutT2 = pOutT1 + (numCols * k); + + /* Check if there is a non zero pivot element to + * replace in the rows below */ + if (*pInT2 != 0.0f) + { + /* Loop over number of columns + * to the right of the pilot element */ + for (j = 0U; j < (numCols - l); j++) + { + /* Exchange the row elements of the input matrix */ + Xchg = *pInT2; + *pInT2++ = *pInT1; + *pInT1++ = Xchg; + } + + for (j = 0U; j < numCols; j++) + { + Xchg = *pOutT2; + *pOutT2++ = *pOutT1; + *pOutT1++ = Xchg; + } + + /* Flag to indicate whether exchange is done or not */ + flag = 1U; + + /* Break after exchange is done */ + break; + } + + /* Update the destination pointer modifier */ + k++; + } + } + + /* Update the status if the matrix is singular */ + if ((flag != 1U) && (in == 0.0f)) + { + return ARM_MATH_SINGULAR; + } + + /* Points to the pivot row of input and destination matrices */ + pPivotRowIn = pIn + (l * numCols); + pPivotRowDst = pOut + (l * numCols); + + /* Temporary pointers to the pivot row pointers */ + pInT1 = pPivotRowIn; + pOutT1 = pPivotRowDst; + + /* Pivot element of the row */ + in = *(pIn + (l * numCols)); + + /* Loop over number of columns + * to the right of the pilot element */ + for (j = 0U; j < (numCols - l); j++) + { + /* Divide each element of the row of the input matrix + * by the pivot element */ + *pInT1 = *pInT1 / in; + pInT1++; + } + for (j = 0U; j < numCols; j++) + { + /* Divide each element of the row of the destination matrix + * by the pivot element */ + *pOutT1 = *pOutT1 / in; + pOutT1++; + } + + /* Replace the rows with the sum of that row and a multiple of row i + * so that each new element in column i above row i is zero.*/ + + /* Temporary pointers for input and destination matrices */ + pInT1 = pIn; + pOutT1 = pOut; + + for (i = 0U; i < numRows; i++) + { + /* Check for the pivot element */ + if (i == l) + { + /* If the processing element is the pivot element, + only the columns to the right are to be processed */ + pInT1 += numCols - l; + pOutT1 += numCols; + } + else + { + /* Element of the reference row */ + in = *pInT1; + + /* Working pointers for input and destination pivot rows */ + pPRT_in = pPivotRowIn; + pPRT_pDst = pPivotRowDst; + + /* Loop over the number of columns to the right of the pivot element, + to replace the elements in the input matrix */ + for (j = 0U; j < (numCols - l); j++) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + *pInT1 = *pInT1 - (in * *pPRT_in++); + pInT1++; + } + /* Loop over the number of columns to + replace the elements in the destination matrix */ + for (j = 0U; j < numCols; j++) + { + /* Replace the element by the sum of that row + and a multiple of the reference row */ + *pOutT1 = *pOutT1 - (in * *pPRT_pDst++); + pOutT1++; + } + + } + /* Increment the temporary input pointer */ + pInT1 = pInT1 + l; + } + /* Increment the input pointer */ + pIn++; + + /* Decrement the loop counter */ + loopCnt--; + /* Increment the index modifier */ + l++; + } + + +#endif /* #if defined (ARM_MATH_DSP) */ + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + + if ((flag != 1U) && (in == 0.0f)) + { + pIn = pSrc->pData; + for (i = 0; i < numRows * numCols; i++) + { + if (pIn[i] != 0.0f) + break; + } + + if (i == numRows * numCols) + status = ARM_MATH_SINGULAR; + } + } + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixInv group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c new file mode 100644 index 0000000..fa9f03f --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_f32.c @@ -0,0 +1,274 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_mult_f32.c + * Description: Floating-point matrix multiplication + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixMult Matrix Multiplication + * + * Multiplies two matrices. + * + * \image html MatrixMultiplication.gif "Multiplication of two 3 x 3 matrices" + + * Matrix multiplication is only defined if the number of columns of the + * first matrix equals the number of rows of the second matrix. + * Multiplying an M x N matrix with an N x P matrix results + * in an M x P matrix. + * When matrix size checking is enabled, the functions check: (1) that the inner dimensions of + * pSrcA and pSrcB are equal; and (2) that the size of the output + * matrix equals the outer dimensions of pSrcA and pSrcB. + */ + + +/** + * @addtogroup MatrixMult + * @{ + */ + +/** + * @brief Floating-point matrix multiplication. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + float32_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + float32_t *px; /* Temporary output data matrix pointer */ + float32_t sum; /* Accumulator */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t in1, in2, in3, in4; + uint16_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + j = 0U; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0.0f; + + /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ + pIn1 = pInA; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + colCnt = numColsA >> 2U; + + /* matrix multiplication */ + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + in3 = *pIn2; + pIn2 += numColsB; + in1 = pIn1[0]; + in2 = pIn1[1]; + sum += in1 * in3; + in4 = *pIn2; + pIn2 += numColsB; + sum += in2 * in4; + + in3 = *pIn2; + pIn2 += numColsB; + in1 = pIn1[2]; + in2 = pIn1[3]; + sum += in1 * in3; + in4 = *pIn2; + pIn2 += numColsB; + sum += in2 * in4; + pIn1 += 4U; + + /* Decrement the loop count */ + colCnt--; + } + + /* If the columns of pSrcA is not a multiple of 4, compute any remaining MACs here. + ** No loop unrolling is used. */ + colCnt = numColsA % 0x4U; + + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum += *pIn1++ * (*pIn2); + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Store the result in the destination buffer */ + *px++ = sum; + + /* Update the pointer pIn2 to point to the starting address of the next column */ + j++; + pIn2 = pSrcB->pData + j; + + /* Decrement the column loop counter */ + col--; + + } while (col > 0U); + +#else + + /* Run the below code for Cortex-M0 */ + + float32_t *pInB = pSrcB->pData; /* input data matrix pointer B */ + uint16_t col, i = 0U, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pInA with each column in pInB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0.0f; + + /* Initialize the pointer pIn1 to point to the starting address of the row being processed */ + pIn1 = pInA; + + /* Matrix A columns number of MAC operations are to be performed */ + colCnt = numColsA; + + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum += *pIn1++ * (*pIn2); + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Store the result in the destination buffer */ + *px++ = sum; + + /* Decrement the column loop counter */ + col--; + + /* Update the pointer pIn2 to point to the starting address of the next column */ + pIn2 = pInB + (numColsB - col); + + } while (col > 0U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + /* Update the pointer pInA to point to the starting address of the next row */ + i = i + numColsB; + pInA = pInA + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c new file mode 100644 index 0000000..796df88 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q15.c @@ -0,0 +1,525 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_mult_fast_q15.c + * Description: Q15 matrix multiplication (fast variant) + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixMult + * @{ + */ + + +/** + * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @param[in] *pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The difference between the function arm_mat_mult_q15() and this fast variant is that + * the fast variant use a 32-bit rather than a 64-bit accumulator. + * The result of each 1.15 x 1.15 multiplication is truncated to + * 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30 + * format. Finally, the accumulator is saturated and converted to a 1.15 result. + * + * \par + * The fast version has the same overflow behavior as the standard version but provides + * less precision since it discards the low 16 bits of each multiplication result. + * In order to avoid overflows completely the input signals must be scaled down. + * Scale down one of the input matrices by log2(numColsA) bits to + * avoid overflows, as a total of numColsA additions are computed internally for each + * output element. + * + * \par + * See arm_mat_mult_q15() for a slower implementation of this function + * which uses 64-bit accumulation to provide higher precision. + */ + +arm_status arm_mat_mult_fast_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState) +{ + q31_t sum; /* accumulator */ + q15_t *pSrcBT = pState; /* input data matrix pointer for transpose */ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ + q15_t *px; /* Temporary output data matrix pointer */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + uint16_t numRowsB = pSrcB->numRows; /* number of rows of input matrix A */ + uint32_t col, i = 0U, row = numRowsB, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + + q31_t in; /* Temporary variable to hold the input value */ + q31_t inA1, inA2, inB1, inB2; + q31_t sum2, sum3, sum4; + q15_t *pInA2, *pInB2, *px2; + uint32_t j = 0; + +#else + + q15_t in; /* Temporary variable to hold the input value */ + q15_t inA1, inA2, inB1, inB2; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + +#ifdef ARM_MATH_MATRIX_CHECK + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif + { + /* Matrix transpose */ + do + { + /* Apply loop unrolling and exchange the columns with row elements */ + col = numColsB >> 2; + + /* The pointer px is set to starting address of the column being processed */ + px = pSrcBT + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (col > 0U) + { +#ifndef UNALIGNED_SUPPORT_DISABLE + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) in; + +#else + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Unpack and store the second element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *px = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) in; + +#else + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Unpack and store the second element in the destination */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *px = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + +#else + + /* Read one element from the row */ + in = *pInB++; + + /* Store one element in the destination */ + *px = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Read one element from the row */ + in = *pInB++; + + /* Store one element in the destination */ + *px = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Read one element from the row */ + in = *pInB++; + + /* Store one element in the destination */ + *px = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Read one element from the row */ + in = *pInB++; + + /* Store one element in the destination */ + *px = in; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Decrement the column loop counter */ + col--; + } + + /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + col = numColsB % 0x4U; + + while (col > 0U) + { + /* Read and store the input element in the destination */ + *px = *pInB++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Decrement the column loop counter */ + col--; + } + + i++; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + + /* Reset the variables for the usage in the following multiplication process */ + row = numRowsA; + i = 0U; + px = pDst->pData; + +#ifndef UNALIGNED_SUPPORT_DISABLE + /* Process two rows from matrix A at a time and output two rows at a time */ + row = row >> 1; + px2 = px + numColsB; +#endif + + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + while (row > 0U) + { + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the transposed pSrcB data */ + pInB = pSrcBT; + +#ifndef UNALIGNED_SUPPORT_DISABLE + /* Process two (transposed) columns from matrix B at a time */ + col = col >> 1; + j = 0; +#endif + + /* column loop */ + while (col > 0U) + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Initiate the pointer pInA to point to the starting address of the column being processed */ + pInA = pSrcA->pData + i; + +#ifndef UNALIGNED_SUPPORT_DISABLE + sum2 = 0; + sum3 = 0; + sum4 = 0; + pInB = pSrcBT + j; + pInA2 = pInA + numColsA; + pInB2 = pInB + numRowsB; + + /* Read in two elements at once - alows dual MAC instruction */ + colCnt = numColsA >> 1; +#else + colCnt = numColsA >> 2; +#endif + + /* matrix multiplication */ + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ +#ifndef UNALIGNED_SUPPORT_DISABLE + + inA1 = *__SIMD32(pInA)++; + inB1 = *__SIMD32(pInB)++; + inA2 = *__SIMD32(pInA2)++; + inB2 = *__SIMD32(pInB2)++; + + sum = __SMLAD(inA1, inB1, sum); + sum2 = __SMLAD(inA1, inB2, sum2); + sum3 = __SMLAD(inA2, inB1, sum3); + sum4 = __SMLAD(inA2, inB2, sum4); + +#else + + inA1 = *pInA; + inB1 = *pInB; + sum += inA1 * inB1; + + inA2 = pInA[1]; + inB2 = pInB[1]; + sum += inA2 * inB2; + + inA1 = pInA[2]; + inB1 = pInB[2]; + sum += inA1 * inB1; + + inA2 = pInA[3]; + inB2 = pInB[3]; + sum += inA2 * inB2; + + pInA += 4; + pInB += 4; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Decrement the loop counter */ + colCnt--; + } + + /* process odd column samples */ +#ifndef UNALIGNED_SUPPORT_DISABLE + if (numColsA & 1U) { + inA1 = *pInA++; + inB1 = *pInB++; + inA2 = *pInA2++; + inB2 = *pInB2++; + sum += inA1 * inB1; + sum2 += inA1 * inB2; + sum3 += inA2 * inB1; + sum4 += inA2 * inB2; + } +#else + colCnt = numColsA % 0x4U; + + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum += (q31_t) (*pInA++) * (*pInB++); + + colCnt--; + } +#endif + + /* Saturate and store the result in the destination buffer */ + *px++ = (q15_t) (sum >> 15); + +#ifndef UNALIGNED_SUPPORT_DISABLE + *px++ = (q15_t) (sum2 >> 15); + *px2++ = (q15_t) (sum3 >> 15); + *px2++ = (q15_t) (sum4 >> 15); + j += numRowsB * 2; +#endif + + /* Decrement the column loop counter */ + col--; + + } + + i = i + numColsA; + +#ifndef UNALIGNED_SUPPORT_DISABLE + i = i + numColsA; + px = px2 + (numColsB & 1U); + px2 = px + numColsB; +#endif + + /* Decrement the row loop counter */ + row--; + + } + + /* Compute any remaining odd row/column below */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Compute remaining output column */ + if (numColsB & 1U) { + + /* Avoid redundant computation of last element */ + row = numRowsA & (~0x1); + + /* Point to remaining unfilled column in output matrix */ + px = pDst->pData+numColsB-1; + pInA = pSrcA->pData; + + /* row loop */ + while (row > 0) + { + + /* point to last column in matrix B */ + pInB = pSrcBT + numRowsB*(numColsB-1); + + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Compute 4 columns at once */ + colCnt = numColsA >> 2; + + /* matrix multiplication */ + while (colCnt > 0U) + { + inA1 = *__SIMD32(pInA)++; + inA2 = *__SIMD32(pInA)++; + inB1 = *__SIMD32(pInB)++; + inB2 = *__SIMD32(pInB)++; + + sum = __SMLAD(inA1, inB1, sum); + sum = __SMLAD(inA2, inB2, sum); + + /* Decrement the loop counter */ + colCnt--; + } + + colCnt = numColsA & 3U; + while (colCnt > 0U) { + sum += (q31_t) (*pInA++) * (*pInB++); + colCnt--; + } + + /* Store the result in the destination buffer */ + *px = (q15_t) (sum >> 15); + px += numColsB; + + /* Decrement the row loop counter */ + row--; + } + } + + /* Compute remaining output row */ + if (numRowsA & 1U) { + + /* point to last row in output matrix */ + px = pDst->pData+(numColsB)*(numRowsA-1); + + pInB = pSrcBT; + col = numColsB; + i = 0U; + + /* col loop */ + while (col > 0) + { + + /* point to last row in matrix A */ + pInA = pSrcA->pData + (numRowsA-1)*numColsA; + + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Compute 4 columns at once */ + colCnt = numColsA >> 2; + + /* matrix multiplication */ + while (colCnt > 0U) + { + inA1 = *__SIMD32(pInA)++; + inA2 = *__SIMD32(pInA)++; + inB1 = *__SIMD32(pInB)++; + inB2 = *__SIMD32(pInB)++; + + sum = __SMLAD(inA1, inB1, sum); + sum = __SMLAD(inA2, inB2, sum); + + /* Decrement the loop counter */ + colCnt--; + } + + colCnt = numColsA & 3U; + while (colCnt > 0U) { + sum += (q31_t) (*pInA++) * (*pInB++); + colCnt--; + } + + /* Store the result in the destination buffer */ + *px++ = (q15_t) (sum >> 15); + + /* Decrement the col loop counter */ + col--; + } + } + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c new file mode 100644 index 0000000..bff3177 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_fast_q31.c @@ -0,0 +1,384 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_mult_fast_q31.c + * Description: Q31 matrix multiplication (fast variant) + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixMult + * @{ + */ + +/** + * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The difference between the function arm_mat_mult_q31() and this fast variant is that + * the fast variant use a 32-bit rather than a 64-bit accumulator. + * The result of each 1.31 x 1.31 multiplication is truncated to + * 2.30 format. These intermediate results are accumulated in a 32-bit register in 2.30 + * format. Finally, the accumulator is saturated and converted to a 1.31 result. + * + * \par + * The fast version has the same overflow behavior as the standard version but provides + * less precision since it discards the low 32 bits of each multiplication result. + * In order to avoid overflows completely the input signals must be scaled down. + * Scale down one of the input matrices by log2(numColsA) bits to + * avoid overflows, as a total of numColsA additions are computed internally for each + * output element. + * + * \par + * See arm_mat_mult_q31() for a slower implementation of this function + * which uses 64-bit accumulation to provide higher precision. + */ + +arm_status arm_mat_mult_fast_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pInB = pSrcB->pData; /* input data matrix pointer B */ + q31_t *px; /* Temporary output data matrix pointer */ + q31_t sum; /* Accumulator */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + uint32_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + q31_t inA1, inB1; + +#if defined (ARM_MATH_DSP) + + q31_t sum2, sum3, sum4; + q31_t inA2, inB2; + q31_t *pInA2; + q31_t *px2; + +#endif + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + + px = pDst->pData; + +#if defined (ARM_MATH_DSP) + row = row >> 1; + px2 = px + numColsB; +#endif + + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + while (row > 0U) + { + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pInB = pSrcB->pData; + + j = 0U; + +#if defined (ARM_MATH_DSP) + col = col >> 1; +#endif + + /* column loop */ + while (col > 0U) + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Initiate data pointers */ + pInA = pSrcA->pData + i; + pInB = pSrcB->pData + j; + +#if defined (ARM_MATH_DSP) + sum2 = 0; + sum3 = 0; + sum4 = 0; + pInA2 = pInA + numColsA; + colCnt = numColsA; +#else + colCnt = numColsA >> 2; +#endif + + /* matrix multiplication */ + while (colCnt > 0U) + { + +#if defined (ARM_MATH_DSP) + inA1 = *pInA++; + inB1 = pInB[0]; + inA2 = *pInA2++; + inB2 = pInB[1]; + pInB += numColsB; + + sum = __SMMLA(inA1, inB1, sum); + sum2 = __SMMLA(inA1, inB2, sum2); + sum3 = __SMMLA(inA2, inB1, sum3); + sum4 = __SMMLA(inA2, inB2, sum4); +#else + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + inB1 = *pInB; + pInB += numColsB; + inA1 = pInA[0]; + sum = __SMMLA(inA1, inB1, sum); + + inB1 = *pInB; + pInB += numColsB; + inA1 = pInA[1]; + sum = __SMMLA(inA1, inB1, sum); + + inB1 = *pInB; + pInB += numColsB; + inA1 = pInA[2]; + sum = __SMMLA(inA1, inB1, sum); + + inB1 = *pInB; + pInB += numColsB; + inA1 = pInA[3]; + sum = __SMMLA(inA1, inB1, sum); + + pInA += 4U; +#endif + + /* Decrement the loop counter */ + colCnt--; + } + +#ifdef ARM_MATH_CM0_FAMILY + /* If the columns of pSrcA is not a multiple of 4, compute any remaining output samples here. */ + colCnt = numColsA % 0x4U; + while (colCnt > 0U) + { + sum = __SMMLA(*pInA++, *pInB, sum); + pInB += numColsB; + colCnt--; + } + j++; +#endif + + /* Convert the result from 2.30 to 1.31 format and store in destination buffer */ + *px++ = sum << 1; + +#if defined (ARM_MATH_DSP) + *px++ = sum2 << 1; + *px2++ = sum3 << 1; + *px2++ = sum4 << 1; + j += 2; +#endif + + /* Decrement the column loop counter */ + col--; + + } + + i = i + numColsA; + +#if defined (ARM_MATH_DSP) + i = i + numColsA; + px = px2 + (numColsB & 1U); + px2 = px + numColsB; +#endif + + /* Decrement the row loop counter */ + row--; + + } + + /* Compute any remaining odd row/column below */ + +#if defined (ARM_MATH_DSP) + + /* Compute remaining output column */ + if (numColsB & 1U) { + + /* Avoid redundant computation of last element */ + row = numRowsA & (~0x1); + + /* Point to remaining unfilled column in output matrix */ + px = pDst->pData+numColsB-1; + pInA = pSrcA->pData; + + /* row loop */ + while (row > 0) + { + + /* point to last column in matrix B */ + pInB = pSrcB->pData + numColsB-1; + + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Compute 4 columns at once */ + colCnt = numColsA >> 2; + + /* matrix multiplication */ + while (colCnt > 0U) + { + inA1 = *pInA++; + inA2 = *pInA++; + inB1 = *pInB; + pInB += numColsB; + inB2 = *pInB; + pInB += numColsB; + sum = __SMMLA(inA1, inB1, sum); + sum = __SMMLA(inA2, inB2, sum); + + inA1 = *pInA++; + inA2 = *pInA++; + inB1 = *pInB; + pInB += numColsB; + inB2 = *pInB; + pInB += numColsB; + sum = __SMMLA(inA1, inB1, sum); + sum = __SMMLA(inA2, inB2, sum); + + /* Decrement the loop counter */ + colCnt--; + } + + colCnt = numColsA & 3U; + while (colCnt > 0U) { + sum = __SMMLA(*pInA++, *pInB, sum); + pInB += numColsB; + colCnt--; + } + + /* Convert the result from 2.30 to 1.31 format and store in destination buffer */ + *px = sum << 1; + px += numColsB; + + /* Decrement the row loop counter */ + row--; + } + } + + /* Compute remaining output row */ + if (numRowsA & 1U) { + + /* point to last row in output matrix */ + px = pDst->pData+(numColsB)*(numRowsA-1); + + col = numColsB; + i = 0U; + + /* col loop */ + while (col > 0) + { + + /* point to last row in matrix A */ + pInA = pSrcA->pData + (numRowsA-1)*numColsA; + pInB = pSrcB->pData + i; + + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Compute 4 columns at once */ + colCnt = numColsA >> 2; + + /* matrix multiplication */ + while (colCnt > 0U) + { + inA1 = *pInA++; + inA2 = *pInA++; + inB1 = *pInB; + pInB += numColsB; + inB2 = *pInB; + pInB += numColsB; + sum = __SMMLA(inA1, inB1, sum); + sum = __SMMLA(inA2, inB2, sum); + + inA1 = *pInA++; + inA2 = *pInA++; + inB1 = *pInB; + pInB += numColsB; + inB2 = *pInB; + pInB += numColsB; + sum = __SMMLA(inA1, inB1, sum); + sum = __SMMLA(inA2, inB2, sum); + + /* Decrement the loop counter */ + colCnt--; + } + + colCnt = numColsA & 3U; + while (colCnt > 0U) { + sum = __SMMLA(*pInA++, *pInB, sum); + pInB += numColsB; + colCnt--; + } + + /* Saturate and store the result in the destination buffer */ + *px++ = sum << 1; + i++; + + /* Decrement the col loop counter */ + col--; + } + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c new file mode 100644 index 0000000..abd55bd --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q15.c @@ -0,0 +1,457 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_mult_q15.c + * Description: Q15 matrix multiplication + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixMult + * @{ + */ + + +/** + * @brief Q15 matrix multiplication + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @param[in] *pState points to the array for storing intermediate results (Unused) + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. The inputs to the + * multiplications are in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate + * results are accumulated in a 64-bit accumulator in 34.30 format. This approach + * provides 33 guard bits and there is no risk of overflow. The 34.30 result is then + * truncated to 34.15 format by discarding the low 15 bits and then saturated to + * 1.15 format. + * + * \par + * Refer to arm_mat_mult_fast_q15() for a faster but less precise version of this function for Cortex-M3 and Cortex-M4. + * + */ + +arm_status arm_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState) +{ + q63_t sum; /* accumulator */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t *pSrcBT = pState; /* input data matrix pointer for transpose */ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ + q15_t *px; /* Temporary output data matrix pointer */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + uint16_t numRowsB = pSrcB->numRows; /* number of rows of input matrix A */ + uint16_t col, i = 0U, row = numRowsB, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifndef UNALIGNED_SUPPORT_DISABLE + + q31_t in; /* Temporary variable to hold the input value */ + q31_t pSourceA1, pSourceB1, pSourceA2, pSourceB2; + +#else + + q15_t in; /* Temporary variable to hold the input value */ + q15_t inA1, inB1, inA2, inB2; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + +#ifdef ARM_MATH_MATRIX_CHECK + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + { + /* Matrix transpose */ + do + { + /* Apply loop unrolling and exchange the columns with row elements */ + col = numColsB >> 2; + + /* The pointer px is set to starting address of the column being processed */ + px = pSrcBT + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (col > 0U) + { +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) in; + +#else + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Unpack and store the second element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *px = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Read two elements from the row */ + in = *__SIMD32(pInB)++; + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) in; + +#else + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Unpack and store the second element in the destination */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *px = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *px = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + +#else + + /* Read one element from the row */ + in = *pInB++; + + /* Store one element in the destination */ + *px = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Read one element from the row */ + in = *pInB++; + + /* Store one element in the destination */ + *px = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Read one element from the row */ + in = *pInB++; + + /* Store one element in the destination */ + *px = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Read one element from the row */ + in = *pInB++; + + /* Store one element in the destination */ + *px = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Decrement the column loop counter */ + col--; + } + + /* If the columns of pSrcB is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + col = numColsB % 0x4U; + + while (col > 0U) + { + /* Read and store the input element in the destination */ + *px = *pInB++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += numRowsB; + + /* Decrement the column loop counter */ + col--; + } + + i++; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + + /* Reset the variables for the usage in the following multiplication process */ + row = numRowsA; + i = 0U; + px = pDst->pData; + + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the transposed pSrcB data */ + pInB = pSrcBT; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Apply loop unrolling and compute 2 MACs simultaneously. */ + colCnt = numColsA >> 2; + + /* Initiate the pointer pIn1 to point to the starting address of the column being processed */ + pInA = pSrcA->pData + i; + + + /* matrix multiplication */ + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* read real and imag values from pSrcA and pSrcB buffer */ + pSourceA1 = *__SIMD32(pInA)++; + pSourceB1 = *__SIMD32(pInB)++; + + pSourceA2 = *__SIMD32(pInA)++; + pSourceB2 = *__SIMD32(pInB)++; + + /* Multiply and Accumlates */ + sum = __SMLALD(pSourceA1, pSourceB1, sum); + sum = __SMLALD(pSourceA2, pSourceB2, sum); + +#else + /* read real and imag values from pSrcA and pSrcB buffer */ + inA1 = *pInA++; + inB1 = *pInB++; + inA2 = *pInA++; + /* Multiply and Accumlates */ + sum += inA1 * inB1; + inB2 = *pInB++; + + inA1 = *pInA++; + inB1 = *pInB++; + /* Multiply and Accumlates */ + sum += inA2 * inB2; + inA2 = *pInA++; + inB2 = *pInB++; + + /* Multiply and Accumlates */ + sum += inA1 * inB1; + sum += inA2 * inB2; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Decrement the loop counter */ + colCnt--; + } + + /* process remaining column samples */ + colCnt = numColsA & 3U; + + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + sum += *pInA++ * *pInB++; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Saturate and store the result in the destination buffer */ + *px = (q15_t) (__SSAT((sum >> 15), 16)); + px++; + + /* Decrement the column loop counter */ + col--; + + } while (col > 0U); + + i = i + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + q15_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A of Q15 type */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B of Q15 type */ + q15_t *pOut = pDst->pData; /* output data matrix pointer */ + q15_t *px; /* Temporary output data matrix pointer */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t col, i = 0U, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Initiate the pointer pIn1 to point to the starting address of pSrcA */ + pIn1 = pInA; + + /* Matrix A columns number of MAC operations are to be performed */ + colCnt = numColsA; + + /* matrix multiplication */ + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + sum += (q31_t) * pIn1++ * *pIn2; + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Convert the result from 34.30 to 1.15 format and store the saturated value in destination buffer */ + /* Saturate and store the result in the destination buffer */ + *px++ = (q15_t) __SSAT((sum >> 15), 16); + + /* Decrement the column loop counter */ + col--; + + /* Update the pointer pIn2 to point to the starting address of the next column */ + pIn2 = pInB + (numColsB - col); + + } while (col > 0U); + + /* Update the pointer pSrcA to point to the starting address of the next row */ + i = i + numColsB; + pInA = pInA + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + +#endif /* #if defined (ARM_MATH_DSP) */ + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c new file mode 100644 index 0000000..2ce3637 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_mult_q31.c @@ -0,0 +1,282 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_mult_q31.c + * Description: Q31 matrix multiplication + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixMult + * @{ + */ + +/** + * @brief Q31 matrix multiplication + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate + * multiplication results but provides only a single guard bit. There is no saturation + * on intermediate additions. Thus, if the accumulator overflows it wraps around and + * distorts the result. The input signals should be scaled down to avoid intermediate + * overflows. The input is thus scaled down by log2(numColsA) bits + * to avoid overflows, as a total of numColsA additions are performed internally. + * The 2.62 accumulator is right shifted by 31 bits and saturated to 1.31 format to yield the final result. + * + * \par + * See arm_mat_mult_fast_q31() for a faster but less precise implementation of this function for Cortex-M3 and Cortex-M4. + * + */ + +arm_status arm_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + q31_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + q31_t *px; /* Temporary output data matrix pointer */ + q63_t sum; /* Accumulator */ + uint16_t numRowsA = pSrcA->numRows; /* number of rows of input matrix A */ + uint16_t numColsB = pSrcB->numCols; /* number of columns of input matrix B */ + uint16_t numColsA = pSrcA->numCols; /* number of columns of input matrix A */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + uint16_t col, i = 0U, j, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + q31_t a0, a1, a2, a3, b0, b1, b2, b3; + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + j = 0U; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Initiate the pointer pIn1 to point to the starting address of pInA */ + pIn1 = pInA; + + /* Apply loop unrolling and compute 4 MACs simultaneously. */ + colCnt = numColsA >> 2; + + + /* matrix multiplication */ + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + b0 = *pIn2; + pIn2 += numColsB; + + a0 = *pIn1++; + a1 = *pIn1++; + + b1 = *pIn2; + pIn2 += numColsB; + b2 = *pIn2; + pIn2 += numColsB; + + sum += (q63_t) a0 *b0; + sum += (q63_t) a1 *b1; + + a2 = *pIn1++; + a3 = *pIn1++; + + b3 = *pIn2; + pIn2 += numColsB; + + sum += (q63_t) a2 *b2; + sum += (q63_t) a3 *b3; + + /* Decrement the loop counter */ + colCnt--; + } + + /* If the columns of pSrcA is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + colCnt = numColsA % 0x4U; + + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + sum += (q63_t) * pIn1++ * *pIn2; + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Convert the result from 2.62 to 1.31 format and store in destination buffer */ + *px++ = (q31_t) (sum >> 31); + + /* Update the pointer pIn2 to point to the starting address of the next column */ + j++; + pIn2 = (pSrcB->pData) + j; + + /* Decrement the column loop counter */ + col--; + + } while (col > 0U); + +#else + + /* Run the below code for Cortex-M0 */ + + q31_t *pInB = pSrcB->pData; /* input data matrix pointer B */ + uint16_t col, i = 0U, row = numRowsA, colCnt; /* loop counters */ + arm_status status; /* status of matrix multiplication */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if ((pSrcA->numCols != pSrcB->numRows) || + (pSrcA->numRows != pDst->numRows) || (pSrcB->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* The following loop performs the dot-product of each row in pSrcA with each column in pSrcB */ + /* row loop */ + do + { + /* Output pointer is set to starting address of the row being processed */ + px = pOut + i; + + /* For every row wise process, the column loop counter is to be initiated */ + col = numColsB; + + /* For every row wise process, the pIn2 pointer is set + ** to the starting address of the pSrcB data */ + pIn2 = pSrcB->pData; + + /* column loop */ + do + { + /* Set the variable sum, that acts as accumulator, to zero */ + sum = 0; + + /* Initiate the pointer pIn1 to point to the starting address of pInA */ + pIn1 = pInA; + + /* Matrix A columns number of MAC operations are to be performed */ + colCnt = numColsA; + + /* matrix multiplication */ + while (colCnt > 0U) + { + /* c(m,n) = a(1,1)*b(1,1) + a(1,2) * b(2,1) + .... + a(m,p)*b(p,n) */ + /* Perform the multiply-accumulates */ + sum += (q63_t) * pIn1++ * *pIn2; + pIn2 += numColsB; + + /* Decrement the loop counter */ + colCnt--; + } + + /* Convert the result from 2.62 to 1.31 format and store in destination buffer */ + *px++ = (q31_t) clip_q63_to_q31(sum >> 31); + + /* Decrement the column loop counter */ + col--; + + /* Update the pointer pIn2 to point to the starting address of the next column */ + pIn2 = pInB + (numColsB - col); + + } while (col > 0U); + +#endif + + /* Update the pointer pInA to point to the starting address of the next row */ + i = i + numColsB; + pInA = pInA + numColsA; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixMult group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c new file mode 100644 index 0000000..3e4f5f7 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_f32.c @@ -0,0 +1,169 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_scale_f32.c + * Description: Multiplies a floating-point matrix by a scalar + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixScale Matrix Scale + * + * Multiplies a matrix by a scalar. This is accomplished by multiplying each element in the + * matrix by the scalar. For example: + * \image html MatrixScale.gif "Matrix Scaling of a 3 x 3 matrix" + * + * The function checks to make sure that the input and output matrices are of the same size. + * + * In the fixed-point Q15 and Q31 functions, scale is represented by + * a fractional multiplication scaleFract and an arithmetic shift shift. + * The shift allows the gain of the scaling operation to exceed 1.0. + * The overall scale factor applied to the fixed-point data is + *
+ *     scale = scaleFract * 2^shift.
+ * 
+ */ + +/** + * @addtogroup MatrixScale + * @{ + */ + +/** + * @brief Floating-point matrix scaling. + * @param[in] *pSrc points to input matrix structure + * @param[in] scale scale factor to be applied + * @param[out] *pDst points to output matrix structure + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + * + */ + +arm_status arm_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn = pSrc->pData; /* input data matrix pointer */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix scaling */ + +#if defined (ARM_MATH_DSP) + + float32_t in1, in2, in3, in4; /* temporary variables */ + float32_t out1, out2, out3, out4; /* temporary variables */ + +#endif // #if defined (ARM_MATH_DSP) + +#ifdef ARM_MATH_MATRIX_CHECK + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop Unrolling */ + blkCnt = numSamples >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) * scale */ + /* Scaling and results are stored in the destination buffer. */ + in1 = pIn[0]; + in2 = pIn[1]; + in3 = pIn[2]; + in4 = pIn[3]; + + out1 = in1 * scale; + out2 = in2 * scale; + out3 = in3 * scale; + out4 = in4 * scale; + + + pOut[0] = out1; + pOut[1] = out2; + pOut[2] = out3; + pOut[3] = out4; + + /* update pointers to process next sampels */ + pIn += 4U; + pOut += 4U; + + /* Decrement the numSamples loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) * scale */ + /* The results are stored in the destination buffer. */ + *pOut++ = (*pIn++) * scale; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixScale group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c new file mode 100644 index 0000000..4eff925 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q15.c @@ -0,0 +1,171 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_scale_q15.c + * Description: Multiplies a Q15 matrix by a scalar + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixScale + * @{ + */ + +/** + * @brief Q15 matrix scaling. + * @param[in] *pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The input data *pSrc and scaleFract are in 1.15 format. + * These are multiplied to yield a 2.30 intermediate result and this is shifted with saturation to 1.15 format. + */ + +arm_status arm_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scaleFract, + int32_t shift, + arm_matrix_instance_q15 * pDst) +{ + q15_t *pIn = pSrc->pData; /* input data matrix pointer */ + q15_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + int32_t totShift = 15 - shift; /* total shift to apply after scaling */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix scaling */ + +#if defined (ARM_MATH_DSP) + + q15_t in1, in2, in3, in4; + q31_t out1, out2, out3, out4; + q31_t inA1, inA2; + +#endif // #if defined (ARM_MATH_DSP) + +#ifdef ARM_MATH_MATRIX_CHECK + /* Check for matrix mismatch */ + if ((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif // #ifdef ARM_MATH_MATRIX_CHECK + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + /* Loop Unrolling */ + blkCnt = numSamples >> 2; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) * k */ + /* Scale, saturate and then store the results in the destination buffer. */ + /* Reading 2 inputs from memory */ + inA1 = _SIMD32_OFFSET(pIn); + inA2 = _SIMD32_OFFSET(pIn + 2); + + /* C = A * scale */ + /* Scale the inputs and then store the 2 results in the destination buffer + * in single cycle by packing the outputs */ + out1 = (q31_t) ((q15_t) (inA1 >> 16) * scaleFract); + out2 = (q31_t) ((q15_t) inA1 * scaleFract); + out3 = (q31_t) ((q15_t) (inA2 >> 16) * scaleFract); + out4 = (q31_t) ((q15_t) inA2 * scaleFract); + + out1 = out1 >> totShift; + inA1 = _SIMD32_OFFSET(pIn + 4); + out2 = out2 >> totShift; + inA2 = _SIMD32_OFFSET(pIn + 6); + out3 = out3 >> totShift; + out4 = out4 >> totShift; + + in1 = (q15_t) (__SSAT(out1, 16)); + in2 = (q15_t) (__SSAT(out2, 16)); + in3 = (q15_t) (__SSAT(out3, 16)); + in4 = (q15_t) (__SSAT(out4, 16)); + + _SIMD32_OFFSET(pOut) = __PKHBT(in2, in1, 16); + _SIMD32_OFFSET(pOut + 2) = __PKHBT(in4, in3, 16); + + /* update pointers to process next sampels */ + pIn += 4U; + pOut += 4U; + + + /* Decrement the numSamples loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) * k */ + /* Scale, saturate and then store the results in the destination buffer. */ + *pOut++ = + (q15_t) (__SSAT(((q31_t) (*pIn++) * scaleFract) >> totShift, 16)); + + /* Decrement the numSamples loop counter */ + blkCnt--; + } + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixScale group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c new file mode 100644 index 0000000..1b2b373 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_scale_q31.c @@ -0,0 +1,191 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_scale_q31.c + * Description: Multiplies a Q31 matrix by a scalar + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixScale + * @{ + */ + +/** + * @brief Q31 matrix scaling. + * @param[in] *pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The input data *pSrc and scaleFract are in 1.31 format. + * These are multiplied to yield a 2.62 intermediate result and this is shifted with saturation to 1.31 format. + */ + +arm_status arm_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scaleFract, + int32_t shift, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn = pSrc->pData; /* input data matrix pointer */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + int32_t totShift = shift + 1; /* shift to apply after scaling */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix scaling */ + q31_t in1, in2, out1; /* temporary variabels */ + +#if defined (ARM_MATH_DSP) + + q31_t in3, in4, out2, out3, out4; /* temporary variables */ + +#endif // #ifndef ARM_MAT_CM0 + +#ifdef ARM_MATH_MATRIX_CHECK + /* Check for matrix mismatch */ + if ((pSrc->numRows != pDst->numRows) || (pSrc->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif // #ifdef ARM_MATH_MATRIX_CHECK + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrc->numRows * pSrc->numCols; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop Unrolling */ + blkCnt = numSamples >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) * k */ + /* Read values from input */ + in1 = *pIn; + in2 = *(pIn + 1); + in3 = *(pIn + 2); + in4 = *(pIn + 3); + + /* multiply input with scaler value */ + in1 = ((q63_t) in1 * scaleFract) >> 32; + in2 = ((q63_t) in2 * scaleFract) >> 32; + in3 = ((q63_t) in3 * scaleFract) >> 32; + in4 = ((q63_t) in4 * scaleFract) >> 32; + + /* apply shifting */ + out1 = in1 << totShift; + out2 = in2 << totShift; + + /* saturate the results. */ + if (in1 != (out1 >> totShift)) + out1 = 0x7FFFFFFF ^ (in1 >> 31); + + if (in2 != (out2 >> totShift)) + out2 = 0x7FFFFFFF ^ (in2 >> 31); + + out3 = in3 << totShift; + out4 = in4 << totShift; + + *pOut = out1; + *(pOut + 1) = out2; + + if (in3 != (out3 >> totShift)) + out3 = 0x7FFFFFFF ^ (in3 >> 31); + + if (in4 != (out4 >> totShift)) + out4 = 0x7FFFFFFF ^ (in4 >> 31); + + + *(pOut + 2) = out3; + *(pOut + 3) = out4; + + /* update pointers to process next sampels */ + pIn += 4U; + pOut += 4U; + + + /* Decrement the numSamples loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) * k */ + /* Scale, saturate and then store the results in the destination buffer. */ + in1 = *pIn++; + + in2 = ((q63_t) in1 * scaleFract) >> 32; + + out1 = in2 << totShift; + + if (in2 != (out1 >> totShift)) + out1 = 0x7FFFFFFF ^ (in2 >> 31); + + *pOut++ = out1; + + /* Decrement the numSamples loop counter */ + blkCnt--; + } + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixScale group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c new file mode 100644 index 0000000..42eaadb --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_f32.c @@ -0,0 +1,197 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_sub_f32.c + * Description: Floating-point matrix subtraction + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @defgroup MatrixSub Matrix Subtraction + * + * Subtract two matrices. + * \image html MatrixSubtraction.gif "Subraction of two 3 x 3 matrices" + * + * The functions check to make sure that + * pSrcA, pSrcB, and pDst have the same + * number of rows and columns. + */ + +/** + * @addtogroup MatrixSub + * @{ + */ + +/** + * @brief Floating-point matrix subtraction + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + float32_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + +#if defined (ARM_MATH_DSP) + + float32_t inA1, inA2, inB1, inB2, out1, out2; /* temporary variables */ + +#endif // #if defined (ARM_MATH_DSP) + + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix subtraction */ + +#ifdef ARM_MATH_MATRIX_CHECK + /* Check for matrix mismatch condition */ + if ((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop Unrolling */ + blkCnt = numSamples >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract and then store the results in the destination buffer. */ + /* Read values from source A */ + inA1 = pIn1[0]; + + /* Read values from source B */ + inB1 = pIn2[0]; + + /* Read values from source A */ + inA2 = pIn1[1]; + + /* out = sourceA - sourceB */ + out1 = inA1 - inB1; + + /* Read values from source B */ + inB2 = pIn2[1]; + + /* Read values from source A */ + inA1 = pIn1[2]; + + /* out = sourceA - sourceB */ + out2 = inA2 - inB2; + + /* Read values from source B */ + inB1 = pIn2[2]; + + /* Store result in destination */ + pOut[0] = out1; + pOut[1] = out2; + + /* Read values from source A */ + inA2 = pIn1[3]; + + /* Read values from source B */ + inB2 = pIn2[3]; + + /* out = sourceA - sourceB */ + out1 = inA1 - inB1; + + + /* out = sourceA - sourceB */ + out2 = inA2 - inB2; + + /* Store result in destination */ + pOut[2] = out1; + + /* Store result in destination */ + pOut[3] = out2; + + + /* update pointers to process next sampels */ + pIn1 += 4U; + pIn2 += 4U; + pOut += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract and then store the results in the destination buffer. */ + *pOut++ = (*pIn1++) - (*pIn2++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixSub group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c new file mode 100644 index 0000000..07818dc --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q15.c @@ -0,0 +1,148 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_sub_q15.c + * Description: Q15 Matrix subtraction + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixSub + * @{ + */ + +/** + * @brief Q15 matrix subtraction. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +arm_status arm_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst) +{ + q15_t *pInA = pSrcA->pData; /* input data matrix pointer A */ + q15_t *pInB = pSrcB->pData; /* input data matrix pointer B */ + q15_t *pOut = pDst->pData; /* output data matrix pointer */ + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix subtraction */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Apply loop unrolling */ + blkCnt = numSamples >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract, Saturate and then store the results in the destination buffer. */ + *__SIMD32(pOut)++ = __QSUB16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); + *__SIMD32(pOut)++ = __QSUB16(*__SIMD32(pInA)++, *__SIMD32(pInB)++); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4U; + + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract and then store the results in the destination buffer. */ + *pOut++ = (q15_t) __QSUB16(*pInA++, *pInB++); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract and then store the results in the destination buffer. */ + *pOut++ = (q15_t) __SSAT(((q31_t) * pInA++ - *pInB++), 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixSub group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c new file mode 100644 index 0000000..ebfd09d --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_sub_q31.c @@ -0,0 +1,196 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_sub_q31.c + * Description: Q31 matrix subtraction + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixSub + * @{ + */ + +/** + * @brief Q31 matrix subtraction. + * @param[in] *pSrcA points to the first input matrix structure + * @param[in] *pSrcB points to the second input matrix structure + * @param[out] *pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range [0x80000000 0x7FFFFFFF] will be saturated. + */ + + +arm_status arm_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn1 = pSrcA->pData; /* input data matrix pointer A */ + q31_t *pIn2 = pSrcB->pData; /* input data matrix pointer B */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + q31_t inA1, inB1; /* temporary variables */ + +#if defined (ARM_MATH_DSP) + + q31_t inA2, inB2; /* temporary variables */ + q31_t out1, out2; /* temporary variables */ + +#endif // #if defined (ARM_MATH_DSP) + + uint32_t numSamples; /* total number of elements in the matrix */ + uint32_t blkCnt; /* loop counters */ + arm_status status; /* status of matrix subtraction */ + + +#ifdef ARM_MATH_MATRIX_CHECK + /* Check for matrix mismatch condition */ + if ((pSrcA->numRows != pSrcB->numRows) || + (pSrcA->numCols != pSrcB->numCols) || + (pSrcA->numRows != pDst->numRows) || (pSrcA->numCols != pDst->numCols)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif + { + /* Total number of samples in the input matrix */ + numSamples = (uint32_t) pSrcA->numRows * pSrcA->numCols; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Loop Unrolling */ + blkCnt = numSamples >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract, saturate and then store the results in the destination buffer. */ + /* Read values from source A */ + inA1 = pIn1[0]; + + /* Read values from source B */ + inB1 = pIn2[0]; + + /* Read values from source A */ + inA2 = pIn1[1]; + + /* Subtract and saturate */ + out1 = __QSUB(inA1, inB1); + + /* Read values from source B */ + inB2 = pIn2[1]; + + /* Read values from source A */ + inA1 = pIn1[2]; + + /* Subtract and saturate */ + out2 = __QSUB(inA2, inB2); + + /* Read values from source B */ + inB1 = pIn2[2]; + + /* Store result in destination */ + pOut[0] = out1; + pOut[1] = out2; + + /* Read values from source A */ + inA2 = pIn1[3]; + + /* Read values from source B */ + inB2 = pIn2[3]; + + /* Subtract and saturate */ + out1 = __QSUB(inA1, inB1); + + /* Subtract and saturate */ + out2 = __QSUB(inA2, inB2); + + /* Store result in destination */ + pOut[2] = out1; + pOut[3] = out2; + + /* update pointers to process next samples */ + pIn1 += 4U; + pIn2 += 4U; + pOut += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the numSamples is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = numSamples % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = numSamples; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C(m,n) = A(m,n) - B(m,n) */ + /* Subtract, saturate and then store the results in the destination buffer. */ + inA1 = *pIn1++; + inB1 = *pIn2++; + + inA1 = __QSUB(inA1, inB1); + + *pOut++ = inA1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixSub group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c new file mode 100644 index 0000000..aaedb9d --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_f32.c @@ -0,0 +1,206 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_trans_f32.c + * Description: Floating-point matrix transpose + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @defgroup MatrixTrans Matrix Transpose + * + * Tranposes a matrix. + * Transposing an M x N matrix flips it around the center diagonal and results in an N x M matrix. + * \image html MatrixTranspose.gif "Transpose of a 3 x 3 matrix" + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixTrans + * @{ + */ + +/** + * @brief Floating-point matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + + +arm_status arm_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst) +{ + float32_t *pIn = pSrc->pData; /* input data matrix pointer */ + float32_t *pOut = pDst->pData; /* output data matrix pointer */ + float32_t *px; /* Temporary output data matrix pointer */ + uint16_t nRows = pSrc->numRows; /* number of rows */ + uint16_t nColumns = pSrc->numCols; /* number of columns */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + uint16_t blkCnt, i = 0U, row = nRows; /* loop counters */ + arm_status status; /* status of matrix transpose */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* Loop Unrolling */ + blkCnt = nColumns >> 2; + + /* The pointer px is set to starting address of the column being processed */ + px = pOut + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) /* column loop */ + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + blkCnt--; + } + + /* Perform matrix transpose for last 3 samples here. */ + blkCnt = nColumns % 0x4U; + + while (blkCnt > 0U) + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + uint16_t col, i = 0U, row = nRows; /* loop counters */ + arm_status status; /* status of matrix transpose */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* The pointer px is set to starting address of the column being processed */ + px = pOut + i; + + /* Initialize column loop counter */ + col = nColumns; + + while (col > 0U) + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + col--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + i++; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); /* row loop end */ + + /* Set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixTrans group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c new file mode 100644 index 0000000..817210c --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q15.c @@ -0,0 +1,272 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_trans_q15.c + * Description: Q15 matrix transpose + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixTrans + * @{ + */ + +/* + * @brief Q15 matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst) +{ + q15_t *pSrcA = pSrc->pData; /* input data matrix pointer */ + q15_t *pOut = pDst->pData; /* output data matrix pointer */ + uint16_t nRows = pSrc->numRows; /* number of nRows */ + uint16_t nColumns = pSrc->numCols; /* number of nColumns */ + uint16_t col, row = nRows, i = 0U; /* row and column loop counters */ + arm_status status; /* status of matrix transpose */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ +#ifndef UNALIGNED_SUPPORT_DISABLE + + q31_t in; /* variable to hold temporary output */ + +#else + + q15_t in; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + + /* Apply loop unrolling and exchange the columns with row elements */ + col = nColumns >> 2U; + + /* The pointer pOut is set to starting address of the column being processed */ + pOut = pDst->pData + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (col > 0U) + { +#ifndef UNALIGNED_SUPPORT_DISABLE + + /* Read two elements from the row */ + in = *__SIMD32(pSrcA)++; + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *pOut = (q15_t) in; + +#else + + *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer pOut to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Unpack and store the second element in the destination */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *pOut = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer pOut to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Read two elements from the row */ +#ifndef ARM_MATH_BIG_ENDIAN + + in = *__SIMD32(pSrcA)++; + +#else + + in = *__SIMD32(pSrcA)++; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Unpack and store one element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *pOut = (q15_t) in; + +#else + + *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Update the pointer pOut to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Unpack and store the second element in the destination */ +#ifndef ARM_MATH_BIG_ENDIAN + + *pOut = (q15_t) ((in & (q31_t) 0xffff0000) >> 16); + +#else + + *pOut = (q15_t) in; + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + +#else + /* Read one element from the row */ + in = *pSrcA++; + + /* Store one element in the destination */ + *pOut = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Read one element from the row */ + in = *pSrcA++; + + /* Store one element in the destination */ + *pOut = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Read one element from the row */ + in = *pSrcA++; + + /* Store one element in the destination */ + *pOut = in; + + /* Update the pointer px to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Read one element from the row */ + in = *pSrcA++; + + /* Store one element in the destination */ + *pOut = in; + +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /* Update the pointer pOut to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Decrement the column loop counter */ + col--; + } + + /* Perform matrix transpose for last 3 samples here. */ + col = nColumns % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* The pointer pOut is set to starting address of the column being processed */ + pOut = pDst->pData + i; + + /* Initialize column loop counter */ + col = nColumns; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (col > 0U) + { + /* Read and store the input element in the destination */ + *pOut = *pSrcA++; + + /* Update the pointer pOut to point to the next row of the transposed matrix */ + pOut += nRows; + + /* Decrement the column loop counter */ + col--; + } + + i++; + + /* Decrement the row loop counter */ + row--; + + } while (row > 0U); + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixTrans group + */ diff --git a/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c new file mode 100644 index 0000000..9f94938 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/MatrixFunctions/arm_mat_trans_q31.c @@ -0,0 +1,198 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mat_trans_q31.c + * Description: Q31 matrix transpose + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupMatrix + */ + +/** + * @addtogroup MatrixTrans + * @{ + */ + +/* + * @brief Q31 matrix transpose. + * @param[in] *pSrc points to the input matrix + * @param[out] *pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + +arm_status arm_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst) +{ + q31_t *pIn = pSrc->pData; /* input data matrix pointer */ + q31_t *pOut = pDst->pData; /* output data matrix pointer */ + q31_t *px; /* Temporary output data matrix pointer */ + uint16_t nRows = pSrc->numRows; /* number of nRows */ + uint16_t nColumns = pSrc->numCols; /* number of nColumns */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + uint16_t blkCnt, i = 0U, row = nRows; /* loop counters */ + arm_status status; /* status of matrix transpose */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* Apply loop unrolling and exchange the columns with row elements */ + blkCnt = nColumns >> 2U; + + /* The pointer px is set to starting address of the column being processed */ + px = pOut + i; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + blkCnt--; + } + + /* Perform matrix transpose for last 3 samples here. */ + blkCnt = nColumns % 0x4U; + + while (blkCnt > 0U) + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + blkCnt--; + } + +#else + + /* Run the below code for Cortex-M0 */ + + uint16_t col, i = 0U, row = nRows; /* loop counters */ + arm_status status; /* status of matrix transpose */ + + +#ifdef ARM_MATH_MATRIX_CHECK + + /* Check for matrix mismatch condition */ + if ((pSrc->numRows != pDst->numCols) || (pSrc->numCols != pDst->numRows)) + { + /* Set status as ARM_MATH_SIZE_MISMATCH */ + status = ARM_MATH_SIZE_MISMATCH; + } + else +#endif /* #ifdef ARM_MATH_MATRIX_CHECK */ + + { + /* Matrix transpose by exchanging the rows with columns */ + /* row loop */ + do + { + /* The pointer px is set to starting address of the column being processed */ + px = pOut + i; + + /* Initialize column loop counter */ + col = nColumns; + + while (col > 0U) + { + /* Read and store the input element in the destination */ + *px = *pIn++; + + /* Update the pointer px to point to the next row of the transposed matrix */ + px += nRows; + + /* Decrement the column loop counter */ + col--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + i++; + + /* Decrement the row loop counter */ + row--; + + } + while (row > 0U); /* row loop end */ + + /* set status as ARM_MATH_SUCCESS */ + status = ARM_MATH_SUCCESS; + } + + /* Return to application */ + return (status); +} + +/** + * @} end of MatrixTrans group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c new file mode 100644 index 0000000..3a77a9f --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_f32.c @@ -0,0 +1,170 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_max_f32.c + * Description: Maximum value of a floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup Max Maximum + * + * Computes the maximum value of an array of data. + * The function returns both the maximum value and its position within the array. + * There are separate functions for floating-point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup Max + * @{ + */ + + +/** + * @brief Maximum value of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + +void arm_max_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex) +{ +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t maxVal1, maxVal2, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex, count; /* loop counter */ + + /* Initialise the count value. */ + count = 0U; + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop unrolling */ + blkCnt = (blockSize - 1U) >> 2U; + + while (blkCnt > 0U) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + maxVal2 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and its index */ + out = maxVal1; + outIndex = count + 1U; + } + + /* compare for the maximum value */ + if (out < maxVal2) + { + /* Update the maximum value and its index */ + out = maxVal2; + outIndex = count + 2U; + } + + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + maxVal2 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and its index */ + out = maxVal1; + outIndex = count + 3U; + } + + /* compare for the maximum value */ + if (out < maxVal2) + { + /* Update the maximum value and its index */ + out = maxVal2; + outIndex = count + 4U; + } + + count += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* if (blockSize - 1U) is not multiple of 4 */ + blkCnt = (blockSize - 1U) % 4U; + +#else + /* Run the below code for Cortex-M0 */ + + float32_t maxVal1, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + blkCnt = (blockSize - 1U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and it's index */ + out = maxVal1; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the maximum value and it's index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Max group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c new file mode 100644 index 0000000..c2fead2 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q15.c @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_max_q15.c + * Description: Maximum value of a Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup Max + * @{ + */ + + +/** + * @brief Maximum value of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + +void arm_max_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex) +{ +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t maxVal1, maxVal2, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex, count; /* loop counter */ + + /* Initialise the count value. */ + count = 0U; + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop unrolling */ + blkCnt = (blockSize - 1U) >> 2U; + + while (blkCnt > 0U) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + maxVal2 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and its index */ + out = maxVal1; + outIndex = count + 1U; + } + + /* compare for the maximum value */ + if (out < maxVal2) + { + /* Update the maximum value and its index */ + out = maxVal2; + outIndex = count + 2U; + } + + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + maxVal2 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and its index */ + out = maxVal1; + outIndex = count + 3U; + } + + /* compare for the maximum value */ + if (out < maxVal2) + { + /* Update the maximum value and its index */ + out = maxVal2; + outIndex = count + 4U; + } + + count += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* if (blockSize - 1U) is not multiple of 4 */ + blkCnt = (blockSize - 1U) % 4U; + +#else + /* Run the below code for Cortex-M0 */ + + q15_t maxVal1, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + blkCnt = (blockSize - 1U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and it's index */ + out = maxVal1; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the maximum value and it's index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Max group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c new file mode 100644 index 0000000..5e90693 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q31.c @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_max_q31.c + * Description: Maximum value of a Q31 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup Max + * @{ + */ + + +/** + * @brief Maximum value of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + +void arm_max_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex) +{ +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t maxVal1, maxVal2, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex, count; /* loop counter */ + + /* Initialise the count value. */ + count = 0U; + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop unrolling */ + blkCnt = (blockSize - 1U) >> 2U; + + while (blkCnt > 0U) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + maxVal2 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and its index */ + out = maxVal1; + outIndex = count + 1U; + } + + /* compare for the maximum value */ + if (out < maxVal2) + { + /* Update the maximum value and its index */ + out = maxVal2; + outIndex = count + 2U; + } + + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + maxVal2 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and its index */ + out = maxVal1; + outIndex = count + 3U; + } + + /* compare for the maximum value */ + if (out < maxVal2) + { + /* Update the maximum value and its index */ + out = maxVal2; + outIndex = count + 4U; + } + + count += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* if (blockSize - 1U) is not multiple of 4 */ + blkCnt = (blockSize - 1U) % 4U; + +#else + /* Run the below code for Cortex-M0 */ + + q31_t maxVal1, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + blkCnt = (blockSize - 1U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and it's index */ + out = maxVal1; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the maximum value and it's index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Max group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c new file mode 100644 index 0000000..6cd6f60 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_max_q7.c @@ -0,0 +1,162 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_max_q7.c + * Description: Maximum value of a Q7 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup Max + * @{ + */ + + +/** + * @brief Maximum value of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult maximum value returned here + * @param[out] *pIndex index of maximum value returned here + * @return none. + */ + +void arm_max_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex) +{ +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t maxVal1, maxVal2, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex, count; /* loop counter */ + + /* Initialise the count value. */ + count = 0U; + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop unrolling */ + blkCnt = (blockSize - 1U) >> 2U; + + while (blkCnt > 0U) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + maxVal2 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and its index */ + out = maxVal1; + outIndex = count + 1U; + } + + /* compare for the maximum value */ + if (out < maxVal2) + { + /* Update the maximum value and its index */ + out = maxVal2; + outIndex = count + 2U; + } + + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + maxVal2 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and its index */ + out = maxVal1; + outIndex = count + 3U; + } + + /* compare for the maximum value */ + if (out < maxVal2) + { + /* Update the maximum value and its index */ + out = maxVal2; + outIndex = count + 4U; + } + + count += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* if (blockSize - 1U) is not multiple of 4 */ + blkCnt = (blockSize - 1U) % 4U; + +#else + /* Run the below code for Cortex-M0 */ + + q7_t maxVal1, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + blkCnt = (blockSize - 1U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* Initialize maxVal to the next consecutive values one by one */ + maxVal1 = *pSrc++; + + /* compare for the maximum value */ + if (out < maxVal1) + { + /* Update the maximum value and it's index */ + out = maxVal1; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the maximum value and it's index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Max group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c new file mode 100644 index 0000000..8a59188 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_f32.c @@ -0,0 +1,125 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mean_f32.c + * Description: Mean value of a floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup mean Mean + * + * Calculates the mean of the input vector. Mean is defined as the average of the elements in the vector. + * The underlying algorithm is used: + * + *
+ * 	Result = (pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]) / blockSize;
+ * 
+ * + * There are separate functions for floating-point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup mean + * @{ + */ + + +/** + * @brief Mean value of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult mean value returned here + * @return none. + */ + +void arm_mean_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + float32_t sum = 0.0f; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t in1, in2, in3, in4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + sum += in1; + sum += in2; + sum += in3; + sum += in4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ + /* Store the result to the destination */ + *pResult = sum / (float32_t) blockSize; +} + +/** + * @} end of mean group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c new file mode 100644 index 0000000..9ef0914 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q15.c @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mean_q15.c + * Description: Mean value of a Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup mean + * @{ + */ + + +/** + * @brief Mean value of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult mean value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 32-bit internal accumulator. + * The input is represented in 1.15 format and is accumulated in a 32-bit + * accumulator in 17.15 format. + * There is no risk of internal overflow with this approach, and the + * full precision of intermediate result is preserved. + * Finally, the accumulator is saturated and truncated to yield a result of 1.15 format. + * + */ + +void arm_mean_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult) +{ + q31_t sum = 0; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + in = *__SIMD32(pSrc)++; + sum += ((in << 16U) >> 16U); + sum += (in >> 16U); + in = *__SIMD32(pSrc)++; + sum += ((in << 16U) >> 16U); + sum += (in >> 16U); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ + /* Store the result to the destination */ + *pResult = (q15_t) (sum / (q31_t)blockSize); +} + +/** + * @} end of mean group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c new file mode 100644 index 0000000..def314a --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q31.c @@ -0,0 +1,123 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mean_q31.c + * Description: Mean value of a Q31 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup mean + * @{ + */ + + +/** + * @brief Mean value of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult mean value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + *\par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.31 format and is accumulated in a 64-bit + * accumulator in 33.31 format. + * There is no risk of internal overflow with this approach, and the + * full precision of intermediate result is preserved. + * Finally, the accumulator is truncated to yield a result of 1.31 format. + * + */ + +void arm_mean_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult) +{ + q63_t sum = 0; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in1, in2, in3, in4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + sum += in1; + sum += in2; + sum += in3; + sum += in4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ + /* Store the result to the destination */ + *pResult = (q31_t) (sum / (int32_t) blockSize); +} + +/** + * @} end of mean group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c new file mode 100644 index 0000000..ae60869 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_mean_q7.c @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_mean_q7.c + * Description: Mean value of a Q7 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup mean + * @{ + */ + + +/** + * @brief Mean value of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult mean value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 32-bit internal accumulator. + * The input is represented in 1.7 format and is accumulated in a 32-bit + * accumulator in 25.7 format. + * There is no risk of internal overflow with this approach, and the + * full precision of intermediate result is preserved. + * Finally, the accumulator is truncated to yield a result of 1.7 format. + * + */ + +void arm_mean_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult) +{ + q31_t sum = 0; /* Temporary result storage */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + in = *__SIMD32(pSrc)++; + + sum += ((in << 24U) >> 24U); + sum += ((in << 16U) >> 24U); + sum += ((in << 8U) >> 24U); + sum += (in >> 24U); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ + /* Store the result to the destination */ + *pResult = (q7_t) (sum / (int32_t) blockSize); +} + +/** + * @} end of mean group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c new file mode 100644 index 0000000..6ef11f9 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_f32.c @@ -0,0 +1,170 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_min_f32.c + * Description: Minimum value of a floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup Min Minimum + * + * Computes the minimum value of an array of data. + * The function returns both the minimum value and its position within the array. + * There are separate functions for floating-point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup Min + * @{ + */ + + +/** + * @brief Minimum value of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult minimum value returned here + * @param[out] *pIndex index of minimum value returned here + * @return none. + */ + +void arm_min_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex) +{ +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t minVal1, minVal2, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex, count; /* loop counter */ + + /* Initialise the count value. */ + count = 0U; + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop unrolling */ + blkCnt = (blockSize - 1U) >> 2U; + + while (blkCnt > 0U) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + minVal2 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and its index */ + out = minVal1; + outIndex = count + 1U; + } + + /* compare for the minimum value */ + if (out > minVal2) + { + /* Update the minimum value and its index */ + out = minVal2; + outIndex = count + 2U; + } + + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + minVal2 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and its index */ + out = minVal1; + outIndex = count + 3U; + } + + /* compare for the minimum value */ + if (out > minVal2) + { + /* Update the minimum value and its index */ + out = minVal2; + outIndex = count + 4U; + } + + count += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* if (blockSize - 1U) is not multiple of 4 */ + blkCnt = (blockSize - 1U) % 4U; + +#else + /* Run the below code for Cortex-M0 */ + + float32_t minVal1, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + blkCnt = (blockSize - 1U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and it's index */ + out = minVal1; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the minimum value and it's index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Min group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c new file mode 100644 index 0000000..aa7e424 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q15.c @@ -0,0 +1,163 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_min_q15.c + * Description: Minimum value of a Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + + +/** + * @addtogroup Min + * @{ + */ + + +/** + * @brief Minimum value of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult minimum value returned here + * @param[out] *pIndex index of minimum value returned here + * @return none. + */ + +void arm_min_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex) +{ +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q15_t minVal1, minVal2, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex, count; /* loop counter */ + + /* Initialise the count value. */ + count = 0U; + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop unrolling */ + blkCnt = (blockSize - 1U) >> 2U; + + while (blkCnt > 0U) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + minVal2 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and its index */ + out = minVal1; + outIndex = count + 1U; + } + + /* compare for the minimum value */ + if (out > minVal2) + { + /* Update the minimum value and its index */ + out = minVal2; + outIndex = count + 2U; + } + + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + minVal2 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and its index */ + out = minVal1; + outIndex = count + 3U; + } + + /* compare for the minimum value */ + if (out > minVal2) + { + /* Update the minimum value and its index */ + out = minVal2; + outIndex = count + 4U; + } + + count += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* if (blockSize - 1U) is not multiple of 4 */ + blkCnt = (blockSize - 1U) % 4U; + +#else + /* Run the below code for Cortex-M0 */ + + q15_t minVal1, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + blkCnt = (blockSize - 1U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and it's index */ + out = minVal1; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the minimum value and it's index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Min group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c new file mode 100644 index 0000000..57dd195 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q31.c @@ -0,0 +1,163 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_min_q31.c + * Description: Minimum value of a Q31 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + + +/** + * @addtogroup Min + * @{ + */ + + +/** + * @brief Minimum value of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult minimum value returned here + * @param[out] *pIndex index of minimum value returned here + * @return none. + */ + +void arm_min_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex) +{ +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t minVal1, minVal2, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex, count; /* loop counter */ + + /* Initialise the count value. */ + count = 0U; + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop unrolling */ + blkCnt = (blockSize - 1U) >> 2U; + + while (blkCnt > 0U) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + minVal2 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and its index */ + out = minVal1; + outIndex = count + 1U; + } + + /* compare for the minimum value */ + if (out > minVal2) + { + /* Update the minimum value and its index */ + out = minVal2; + outIndex = count + 2U; + } + + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + minVal2 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and its index */ + out = minVal1; + outIndex = count + 3U; + } + + /* compare for the minimum value */ + if (out > minVal2) + { + /* Update the minimum value and its index */ + out = minVal2; + outIndex = count + 4U; + } + + count += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* if (blockSize - 1U) is not multiple of 4 */ + blkCnt = (blockSize - 1U) % 4U; + +#else + /* Run the below code for Cortex-M0 */ + + q31_t minVal1, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + blkCnt = (blockSize - 1U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and it's index */ + out = minVal1; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the minimum value and it's index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Min group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c new file mode 100644 index 0000000..ac96603 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_min_q7.c @@ -0,0 +1,163 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_min_q7.c + * Description: Minimum value of a Q7 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + + +/** + * @addtogroup Min + * @{ + */ + + +/** + * @brief Minimum value of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult minimum value returned here + * @param[out] *pIndex index of minimum value returned here + * @return none. + */ + +void arm_min_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex) +{ +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q7_t minVal1, minVal2, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex, count; /* loop counter */ + + /* Initialise the count value. */ + count = 0U; + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + /* Loop unrolling */ + blkCnt = (blockSize - 1U) >> 2U; + + while (blkCnt > 0U) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + minVal2 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and its index */ + out = minVal1; + outIndex = count + 1U; + } + + /* compare for the minimum value */ + if (out > minVal2) + { + /* Update the minimum value and its index */ + out = minVal2; + outIndex = count + 2U; + } + + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + minVal2 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and its index */ + out = minVal1; + outIndex = count + 3U; + } + + /* compare for the minimum value */ + if (out > minVal2) + { + /* Update the minimum value and its index */ + out = minVal2; + outIndex = count + 4U; + } + + count += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* if (blockSize - 1U) is not multiple of 4 */ + blkCnt = (blockSize - 1U) % 4U; + +#else + /* Run the below code for Cortex-M0 */ + + q7_t minVal1, out; /* Temporary variables to store the output value. */ + uint32_t blkCnt, outIndex; /* loop counter */ + + /* Initialise the index value to zero. */ + outIndex = 0U; + /* Load first input value that act as reference value for comparision */ + out = *pSrc++; + + blkCnt = (blockSize - 1U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* Initialize minVal to the next consecutive values one by one */ + minVal1 = *pSrc++; + + /* compare for the minimum value */ + if (out > minVal1) + { + /* Update the minimum value and it's index */ + out = minVal1; + outIndex = blockSize - blkCnt; + } + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the minimum value and it's index into destination pointers */ + *pResult = out; + *pIndex = outIndex; +} + +/** + * @} end of Min group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c new file mode 100644 index 0000000..bfe4dd3 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_f32.c @@ -0,0 +1,129 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_power_f32.c + * Description: Sum of the squares of the elements of a floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup power Power + * + * Calculates the sum of the squares of the elements in the input vector. + * The underlying algorithm is used: + * + *
+ * 	Result = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + pSrc[2] * pSrc[2] + ... + pSrc[blockSize-1] * pSrc[blockSize-1];
+ * 
+ * + * There are separate functions for floating point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup power + * @{ + */ + + +/** + * @brief Sum of the squares of the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult sum of the squares value returned here + * @return none. + * + */ + + +void arm_power_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + float32_t sum = 0.0f; /* accumulator */ + float32_t in; /* Temporary variable to store input value */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* compute power and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the result to the destination */ + *pResult = sum; +} + +/** + * @} end of power group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c new file mode 100644 index 0000000..fbe73d1 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q15.c @@ -0,0 +1,138 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_power_q15.c + * Description: Sum of the squares of the elements of a Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup power + * @{ + */ + +/** + * @brief Sum of the squares of the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult sum of the squares value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.15 format. + * Intermediate multiplication yields a 2.30 format, and this + * result is added without saturation to a 64-bit accumulator in 34.30 format. + * With 33 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the return result is in 34.30 format. + * + */ + +void arm_power_q15( + q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult) +{ + q63_t sum = 0; /* Temporary result storage */ + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in32; /* Temporary variable to store input value */ + q15_t in16; /* Temporary variable to store input value */ + uint32_t blkCnt; /* loop counter */ + + + /* loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in32 = *__SIMD32(pSrc)++; + sum = __SMLALD(in32, in32, sum); + in32 = *__SIMD32(pSrc)++; + sum = __SMLALD(in32, in32, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in16 = *pSrc++; + sum = __SMLALD(in16, in16, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + +#else + /* Run the below code for Cortex-M0 */ + + q15_t in; /* Temporary variable to store input value */ + uint32_t blkCnt; /* loop counter */ + + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += ((q31_t) in * in); + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + + /* Store the results in 34.30 format */ + *pResult = sum; +} + +/** + * @} end of power group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c new file mode 100644 index 0000000..498face --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q31.c @@ -0,0 +1,129 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_power_q31.c + * Description: Sum of the squares of the elements of a Q31 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup power + * @{ + */ + +/** + * @brief Sum of the squares of the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult sum of the squares value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.31 format. + * Intermediate multiplication yields a 2.62 format, and this + * result is truncated to 2.48 format by discarding the lower 14 bits. + * The 2.48 result is then added without saturation to a 64-bit accumulator in 16.48 format. + * With 15 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the return result is in 16.48 format. + * + */ + +void arm_power_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult) +{ + q63_t sum = 0; /* Temporary result storage */ + q31_t in; + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power then shift intermediate results by 14 bits to maintain 16.48 format and then store the result in a temporary variable sum, providing 15 guard bits. */ + in = *pSrc++; + sum += ((q63_t) in * in) >> 14U; + + in = *pSrc++; + sum += ((q63_t) in * in) >> 14U; + + in = *pSrc++; + sum += ((q63_t) in * in) >> 14U; + + in = *pSrc++; + sum += ((q63_t) in * in) >> 14U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += ((q63_t) in * in) >> 14U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the results in 16.48 format */ + *pResult = sum; +} + +/** + * @} end of power group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c new file mode 100644 index 0000000..3b8335a --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_power_q7.c @@ -0,0 +1,127 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_power_q7.c + * Description: Sum of the squares of the elements of a Q7 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup power + * @{ + */ + +/** + * @brief Sum of the squares of the elements of a Q7 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult sum of the squares value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 32-bit internal accumulator. + * The input is represented in 1.7 format. + * Intermediate multiplication yields a 2.14 format, and this + * result is added without saturation to an accumulator in 18.14 format. + * With 17 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the return result is in 18.14 format. + * + */ + +void arm_power_q7( + q7_t * pSrc, + uint32_t blockSize, + q31_t * pResult) +{ + q31_t sum = 0; /* Temporary result storage */ + q7_t in; /* Temporary variable to store input */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t input1; /* Temporary variable to store packed input */ + q31_t in1, in2; /* Temporary variables to store input */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* Reading two inputs of pSrc vector and packing */ + input1 = *__SIMD32(pSrc)++; + + in1 = __SXTB16(__ROR(input1, 8)); + in2 = __SXTB16(input1); + + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* calculate power and accumulate to accumulator */ + sum = __SMLAD(in1, in1, sum); + sum = __SMLAD(in2, in2, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute Power and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += ((q15_t) in * in); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Store the result in 18.14 format */ + *pResult = sum; +} + +/** + * @} end of power group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c new file mode 100644 index 0000000..3089d40 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_f32.c @@ -0,0 +1,127 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_rms_f32.c + * Description: Root mean square value of an array of F32 type + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup RMS Root mean square (RMS) + * + * + * Calculates the Root Mean Sqaure of the elements in the input vector. + * The underlying algorithm is used: + * + *
+ * 	Result = sqrt(((pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]) / blockSize));
+ * 
+ * + * There are separate functions for floating point, Q31, and Q15 data types. + */ + +/** + * @addtogroup RMS + * @{ + */ + + +/** + * @brief Root Mean Square of the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult rms value returned here + * @return none. + * + */ + +void arm_rms_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + float32_t sum = 0.0f; /* Accumulator */ + float32_t in; /* Tempoprary variable to store input value */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute sum of the squares and then store the result in a temporary variable, sum */ + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in = *pSrc++; + sum += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Rms and store the result in the destination */ + arm_sqrt_f32(sum / (float32_t) blockSize, pResult); +} + +/** + * @} end of RMS group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c new file mode 100644 index 0000000..7cc2e12 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q15.c @@ -0,0 +1,139 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_rms_q15.c + * Description: Root Mean Square of the elements of a Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @addtogroup RMS + * @{ + */ + +/** + * @brief Root Mean Square of the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult rms value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.15 format. + * Intermediate multiplication yields a 2.30 format, and this + * result is added without saturation to a 64-bit accumulator in 34.30 format. + * With 33 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower + * 15 bits, and then saturated to yield a result in 1.15 format. + * + */ + +void arm_rms_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult) +{ + q63_t sum = 0; /* accumulator */ + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in; /* temporary variable to store the input value */ + q15_t in1; /* temporary variable to store the input value */ + uint32_t blkCnt; /* loop counter */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in = *__SIMD32(pSrc)++; + sum = __SMLALD(in, in, sum); + in = *__SIMD32(pSrc)++; + sum = __SMLALD(in, in, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in1 = *pSrc++; + sum = __SMLALD(in1, in1, sum); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Truncating and saturating the accumulator to 1.15 format */ + /* Store the result in the destination */ + arm_sqrt_q15(__SSAT((sum / (q63_t)blockSize) >> 15, 16), pResult); + +#else + /* Run the below code for Cortex-M0 */ + + q15_t in; /* temporary variable to store the input value */ + uint32_t blkCnt; /* loop counter */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in = *pSrc++; + sum += ((q31_t) in * in); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Truncating and saturating the accumulator to 1.15 format */ + /* Store the result in the destination */ + arm_sqrt_q15(__SSAT((sum / (q63_t)blockSize) >> 15, 16), pResult); + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of RMS group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c new file mode 100644 index 0000000..7cb9149 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_rms_q31.c @@ -0,0 +1,137 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_rms_q31.c + * Description: Root Mean Square of the elements of a Q31 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @addtogroup RMS + * @{ + */ + + +/** + * @brief Root Mean Square of the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult rms value returned here + * @return none. + * + * @details + * Scaling and Overflow Behavior: + * + *\par + * The function is implemented using an internal 64-bit accumulator. + * The input is represented in 1.31 format, and intermediate multiplication + * yields a 2.62 format. + * The accumulator maintains full precision of the intermediate multiplication results, + * but provides only a single guard bit. + * There is no saturation on intermediate additions. + * If the accumulator overflows, it wraps around and distorts the result. + * In order to avoid overflows completely, the input signal must be scaled down by + * log2(blockSize) bits, as a total of blockSize additions are performed internally. + * Finally, the 2.62 accumulator is right shifted by 31 bits to yield a 1.31 format value. + * + */ + +void arm_rms_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult) +{ + q63_t sum = 0; /* accumulator */ + q31_t in; /* Temporary variable to store the input */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t in1, in2, in3, in4; /* Temporary input variables */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 8 outputs at a time. + ** a second loop below computes the remaining 1 to 7 samples. */ + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute sum of the squares and then store the result in a temporary variable, sum */ + /* read two samples from source buffer */ + in1 = pSrc[0]; + in2 = pSrc[1]; + + /* calculate power and accumulate to accumulator */ + sum += (q63_t) in1 *in1; + sum += (q63_t) in2 *in2; + + /* read two samples from source buffer */ + in3 = pSrc[2]; + in4 = pSrc[3]; + + /* calculate power and accumulate to accumulator */ + sum += (q63_t) in3 *in3; + sum += (q63_t) in4 *in4; + + + /* update source buffer to process next samples */ + pSrc += 4U; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 8, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + /* Run the below code for Cortex-M0 */ + + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A[0] * A[0] + A[1] * A[1] + A[2] * A[2] + ... + A[blockSize-1] * A[blockSize-1] */ + /* Compute sum of the squares and then store the results in a temporary variable, sum */ + in = *pSrc++; + sum += (q63_t) in *in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Convert data in 2.62 to 1.31 by 31 right shifts and saturate */ + /* Compute Rms and store the result in the destination vector */ + arm_sqrt_q31(clip_q63_to_q31((sum / (q63_t) blockSize) >> 31), pResult); +} + +/** + * @} end of RMS group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c new file mode 100644 index 0000000..e082fc6 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_f32.c @@ -0,0 +1,186 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_std_f32.c + * Description: Standard deviation of the elements of a floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup STD Standard deviation + * + * Calculates the standard deviation of the elements in the input vector. + * The underlying algorithm is used: + * + *
+ *   Result = sqrt((sumOfSquares - sum2 / blockSize) / (blockSize - 1))
+ *
+ *     where, sumOfSquares = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1]
+ *
+ *                     sum = pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1]
+ * 
+ * + * There are separate functions for floating point, Q31, and Q15 data types. + */ + +/** + * @addtogroup STD + * @{ + */ + + +/** + * @brief Standard deviation of the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult standard deviation value returned here + * @return none. + */ + +void arm_std_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + float32_t sum = 0.0f; /* Temporary result storage */ + float32_t sumOfSquares = 0.0f; /* Sum of squares */ + float32_t in; /* input value */ + uint32_t blkCnt; /* loop counter */ +#if defined (ARM_MATH_DSP) + float32_t meanOfSquares, mean, squareOfMean; /* Temporary variables */ +#else + float32_t squareOfSum; /* Square of Sum */ + float32_t var; /* Temporary varaince storage */ +#endif + + if (blockSize == 1U) + { + *pResult = 0; + return; + } + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += in; + sumOfSquares += in * in; + in = *pSrc++; + sum += in; + sumOfSquares += in * in; + in = *pSrc++; + sum += in; + sumOfSquares += in * in; + in = *pSrc++; + sum += in; + sumOfSquares += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++; + sum += in; + sumOfSquares += in * in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = sumOfSquares / ((float32_t) blockSize - 1.0f); + + /* Compute mean of all input values */ + mean = sum / (float32_t) blockSize; + + /* Compute square of mean */ + squareOfMean = (mean * mean) * (((float32_t) blockSize) / + ((float32_t) blockSize - 1.0f)); + + /* Compute standard deviation and then store the result to the destination */ + arm_sqrt_f32((meanOfSquares - squareOfMean), pResult); + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++; + sumOfSquares += in * in; + + /* C = (A[0] + A[1] + ... + A[blockSize-1]) */ + /* Compute Sum of the input samples + * and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute the square of sum */ + squareOfSum = ((sum * sum) / (float32_t) blockSize); + + /* Compute the variance */ + var = ((sumOfSquares - squareOfSum) / (float32_t) (blockSize - 1.0f)); + + /* Compute standard deviation and then store the result to the destination */ + arm_sqrt_f32(var, pResult); + +#endif /* #if defined (ARM_MATH_DSP) */ +} + +/** + * @} end of STD group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c new file mode 100644 index 0000000..e3626d8 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q15.c @@ -0,0 +1,174 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_std_q15.c + * Description: Standard deviation of an array of Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup STD + * @{ + */ + +/** + * @brief Standard deviation of the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult standard deviation value returned here + * @return none. + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.15 format. + * Intermediate multiplication yields a 2.30 format, and this + * result is added without saturation to a 64-bit accumulator in 34.30 format. + * With 33 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower + * 15 bits, and then saturated to yield a result in 1.15 format. + */ + +void arm_std_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult) +{ + q31_t sum = 0; /* Accumulator */ + q31_t meanOfSquares, squareOfMean; /* square of mean and mean of square */ + uint32_t blkCnt; /* loop counter */ + q63_t sumOfSquares = 0; /* Accumulator */ +#if defined (ARM_MATH_DSP) + q31_t in; /* input value */ + q15_t in1; /* input value */ +#else + q15_t in; /* input value */ +#endif + + if (blockSize == 1U) + { + *pResult = 0; + return; + } + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *__SIMD32(pSrc)++; + sum += ((in << 16U) >> 16U); + sum += (in >> 16U); + sumOfSquares = __SMLALD(in, in, sumOfSquares); + in = *__SIMD32(pSrc)++; + sum += ((in << 16U) >> 16U); + sum += (in >> 16U); + sumOfSquares = __SMLALD(in, in, sumOfSquares); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in1 = *pSrc++; + sumOfSquares = __SMLALD(in1, in1, sumOfSquares); + sum += in1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1U)); + + /* Compute square of mean */ + squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1U))); + + /* mean of the squares minus the square of the mean. */ + /* Compute standard deviation and store the result to the destination */ + arm_sqrt_q15(__SSAT((meanOfSquares - squareOfMean) >> 15U, 16U), pResult); + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++; + sumOfSquares += (in * in); + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1U)); + + /* Compute square of mean */ + squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1U))); + + /* mean of the squares minus the square of the mean. */ + /* Compute standard deviation and store the result to the destination */ + arm_sqrt_q15(__SSAT((meanOfSquares - squareOfMean) >> 15U, 16U), pResult); + +#endif /* #if defined (ARM_MATH_DSP) */ +} + +/** + * @} end of STD group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c new file mode 100644 index 0000000..806a90e --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_std_q31.c @@ -0,0 +1,169 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_std_q31.c + * Description: Standard deviation of an array of Q31 type. + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup STD + * @{ + */ + +/** + * @brief Standard deviation of the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult standard deviation value returned here + * @return none. + * @details + * Scaling and Overflow Behavior: + * + *\par + * The function is implemented using an internal 64-bit accumulator. + * The input is represented in 1.31 format, which is then downshifted by 8 bits + * which yields 1.23, and intermediate multiplication yields a 2.46 format. + * The accumulator maintains full precision of the intermediate multiplication results, + * but provides only a 16 guard bits. + * There is no saturation on intermediate additions. + * If the accumulator overflows it wraps around and distorts the result. + * In order to avoid overflows completely the input signal must be scaled down by + * log2(blockSize)-8 bits, as a total of blockSize additions are performed internally. + * After division, internal variables should be Q18.46 + * Finally, the 18.46 accumulator is right shifted by 15 bits to yield a 1.31 format value. + * + */ + +void arm_std_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult) +{ + q63_t sum = 0; /* Accumulator */ + q63_t meanOfSquares, squareOfMean; /* square of mean and mean of square */ + q31_t in; /* input value */ + uint32_t blkCnt; /* loop counter */ + q63_t sumOfSquares = 0; /* Accumulator */ + + if (blockSize == 1U) + { + *pResult = 0; + return; + } + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++ >> 8U; + sum += in; + sumOfSquares += ((q63_t) (in) * (in)); + in = *pSrc++ >> 8U; + sum += in; + sumOfSquares += ((q63_t) (in) * (in)); + in = *pSrc++ >> 8U; + sum += in; + sumOfSquares += ((q63_t) (in) * (in)); + in = *pSrc++ >> 8U; + sum += in; + sumOfSquares += ((q63_t) (in) * (in)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++ >> 8U; + sum += in; + sumOfSquares += ((q63_t) (in) * (in)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1U); + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++ >> 8U; + sumOfSquares += ((q63_t) (in) * (in)); + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + /* Compute square of mean */ + squareOfMean = sum * sum / (q63_t)(blockSize * (blockSize - 1U)); + + /* Compute standard deviation and then store the result to the destination */ + arm_sqrt_q31((meanOfSquares - squareOfMean) >> 15U, pResult); +} + +/** + * @} end of STD group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c new file mode 100644 index 0000000..a366f5c --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_f32.c @@ -0,0 +1,181 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_var_f32.c + * Description: Variance of the elements of a floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @defgroup variance Variance + * + * Calculates the variance of the elements in the input vector. + * The underlying algorithm used is the direct method sometimes referred to as the two-pass method: + * + *
+ *   Result = sum(element - meanOfElements)^2) / numElement - 1
+ *
+ *     where, meanOfElements = ( pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] ) / blockSize
+ *
+ * 
+ * + * There are separate functions for floating point, Q31, and Q15 data types. + */ + +/** + * @addtogroup variance + * @{ + */ + + +/** + * @brief Variance of the elements of a floating-point vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult variance value returned here + * @return none. + */ + +void arm_var_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult) +{ + float32_t fMean, fValue; + uint32_t blkCnt; /* loop counter */ + float32_t * pInput = pSrc; + float32_t sum = 0.0f; + float32_t fSum = 0.0f; + #if defined(ARM_MATH_DSP) + float32_t in1, in2, in3, in4; + #endif + + if (blockSize <= 1U) + { + *pResult = 0; + return; + } + + #if defined(ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M7 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + in1 = *pInput++; + in2 = *pInput++; + in3 = *pInput++; + in4 = *pInput++; + + sum += in1; + sum += in2; + sum += in3; + sum += in4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + #else + /* Run the below code for Cortex-M0 or Cortex-M3 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + #endif + + while (blkCnt > 0U) + { + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + sum += *pInput++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) / blockSize */ + fMean = sum / (float32_t) blockSize; + + pInput = pSrc; + + #if defined(ARM_MATH_DSP) + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + fValue = *pInput++ - fMean; + fSum += fValue * fValue; + fValue = *pInput++ - fMean; + fSum += fValue * fValue; + fValue = *pInput++ - fMean; + fSum += fValue * fValue; + fValue = *pInput++ - fMean; + fSum += fValue * fValue; + + /* Decrement the loop counter */ + blkCnt--; + } + + blkCnt = blockSize % 0x4U; + #else + /* Run the below code for Cortex-M0 or Cortex-M3 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + #endif + + while (blkCnt > 0U) + { + fValue = *pInput++ - fMean; + fSum += fValue * fValue; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Variance */ + *pResult = fSum / (float32_t)(blockSize - 1.0f); +} + +/** + * @} end of variance group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c new file mode 100644 index 0000000..ff9972a --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q15.c @@ -0,0 +1,172 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_var_q15.c + * Description: Variance of an array of Q15 type + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup variance + * @{ + */ + +/** + * @brief Variance of the elements of a Q15 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult variance value returned here + * @return none. + * @details + * Scaling and Overflow Behavior: + * + * \par + * The function is implemented using a 64-bit internal accumulator. + * The input is represented in 1.15 format. + * Intermediate multiplication yields a 2.30 format, and this + * result is added without saturation to a 64-bit accumulator in 34.30 format. + * With 33 guard bits in the accumulator, there is no risk of overflow, and the + * full precision of the intermediate multiplication is preserved. + * Finally, the 34.30 result is truncated to 34.15 format by discarding the lower + * 15 bits, and then saturated to yield a result in 1.15 format. + */ + +void arm_var_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult) +{ + q31_t sum = 0; /* Accumulator */ + q31_t meanOfSquares, squareOfMean; /* square of mean and mean of square */ + uint32_t blkCnt; /* loop counter */ + q63_t sumOfSquares = 0; /* Accumulator */ +#if defined (ARM_MATH_DSP) + q31_t in; /* input value */ + q15_t in1; /* input value */ +#else + q15_t in; /* input value */ +#endif + + if (blockSize == 1U) + { + *pResult = 0; + return; + } + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *__SIMD32(pSrc)++; + sum += ((in << 16U) >> 16U); + sum += (in >> 16U); + sumOfSquares = __SMLALD(in, in, sumOfSquares); + in = *__SIMD32(pSrc)++; + sum += ((in << 16U) >> 16U); + sum += (in >> 16U); + sumOfSquares = __SMLALD(in, in, sumOfSquares); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in1 = *pSrc++; + sumOfSquares = __SMLALD(in1, in1, sumOfSquares); + sum += in1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1U)); + + /* Compute square of mean */ + squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1U))); + + /* mean of the squares minus the square of the mean. */ + *pResult = (meanOfSquares - squareOfMean) >> 15U; + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++; + sumOfSquares += (in * in); + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = (q31_t)(sumOfSquares / (q63_t)(blockSize - 1U)); + + /* Compute square of mean */ + squareOfMean = (q31_t)((q63_t)sum * sum / (q63_t)(blockSize * (blockSize - 1U))); + + /* mean of the squares minus the square of the mean. */ + *pResult = (meanOfSquares - squareOfMean) >> 15; + +#endif /* #if defined (ARM_MATH_DSP) */ +} + +/** + * @} end of variance group + */ diff --git a/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c new file mode 100644 index 0000000..08e80fe --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/StatisticsFunctions/arm_var_q31.c @@ -0,0 +1,169 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_var_q31.c + * Description: Variance of an array of Q31 type + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupStats + */ + +/** + * @addtogroup variance + * @{ + */ + +/** + * @brief Variance of the elements of a Q31 vector. + * @param[in] *pSrc points to the input vector + * @param[in] blockSize length of the input vector + * @param[out] *pResult variance value returned here + * @return none. + * @details + * Scaling and Overflow Behavior: + * + *\par + * The function is implemented using an internal 64-bit accumulator. + * The input is represented in 1.31 format, which is then downshifted by 8 bits + * which yields 1.23, and intermediate multiplication yields a 2.46 format. + * The accumulator maintains full precision of the intermediate multiplication results, + * but provides only a 16 guard bits. + * There is no saturation on intermediate additions. + * If the accumulator overflows it wraps around and distorts the result. + * In order to avoid overflows completely the input signal must be scaled down by + * log2(blockSize)-8 bits, as a total of blockSize additions are performed internally. + * After division, internal variables should be Q18.46 + * Finally, the 18.46 accumulator is right shifted by 15 bits to yield a 1.31 format value. + * + */ + +void arm_var_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult) +{ + q63_t sum = 0; /* Accumulator */ + q63_t meanOfSquares, squareOfMean; /* square of mean and mean of square */ + q31_t in; /* input value */ + uint32_t blkCnt; /* loop counter */ + q63_t sumOfSquares = 0; /* Accumulator */ + + if (blockSize == 1U) + { + *pResult = 0; + return; + } + +#if defined (ARM_MATH_DSP) + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++ >> 8U; + sum += in; + sumOfSquares += ((q63_t) (in) * (in)); + in = *pSrc++ >> 8U; + sum += in; + sumOfSquares += ((q63_t) (in) * (in)); + in = *pSrc++ >> 8U; + sum += in; + sumOfSquares += ((q63_t) (in) * (in)); + in = *pSrc++ >> 8U; + sum += in; + sumOfSquares += ((q63_t) (in) * (in)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sum. */ + in = *pSrc++ >> 8U; + sum += in; + sumOfSquares += ((q63_t) (in) * (in)); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1U); + +#else + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + /* C = (A[0] * A[0] + A[1] * A[1] + ... + A[blockSize-1] * A[blockSize-1]) */ + /* Compute Sum of squares of the input samples + * and then store the result in a temporary variable, sumOfSquares. */ + in = *pSrc++ >> 8U; + sumOfSquares += ((q63_t) (in) * (in)); + + /* C = (A[0] + A[1] + A[2] + ... + A[blockSize-1]) */ + /* Compute sum of all input values and then store the result in a temporary variable, sum. */ + sum += in; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* Compute Mean of squares of the input samples + * and then store the result in a temporary variable, meanOfSquares. */ + meanOfSquares = sumOfSquares / (q63_t)(blockSize - 1U); + +#endif /* #if defined (ARM_MATH_DSP) */ + + /* Compute square of mean */ + squareOfMean = sum * sum / (q63_t)(blockSize * (blockSize - 1U)); + + /* Compute standard deviation and then store the result to the destination */ + *pResult = (meanOfSquares - squareOfMean) >> 15U; +} + +/** + * @} end of variance group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c new file mode 100644 index 0000000..13245b6 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_f32.c @@ -0,0 +1,123 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_copy_f32.c + * Description: Copies the elements of a floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup copy Vector Copy + * + * Copies sample by sample from source vector to destination vector. + * + *
+ * 	pDst[n] = pSrc[n];   0 <= n < blockSize.
+ * 
+ * + * There are separate functions for floating point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup copy + * @{ + */ + +/** + * @brief Copies the elements of a floating-point vector. + * @param[in] *pSrc points to input vector + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the input vector + * @return none. + * + */ + + +void arm_copy_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + float32_t in1, in2, in3, in4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A */ + /* Copy and then store the results in the destination buffer */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + *pDst++ = in1; + *pDst++ = in2; + *pDst++ = in3; + *pDst++ = in4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A */ + /* Copy and then store the results in the destination buffer */ + *pDst++ = *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicCopy group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c new file mode 100644 index 0000000..28b60d9 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q15.c @@ -0,0 +1,102 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_copy_q15.c + * Description: Copies the elements of a Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup copy + * @{ + */ +/** + * @brief Copies the elements of a Q15 vector. + * @param[in] *pSrc points to input vector + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the input vector + * @return none. + * + */ + +void arm_copy_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A */ + /* Read two inputs */ + *__SIMD32(pDst)++ = *__SIMD32(pSrc)++; + *__SIMD32(pDst)++ = *__SIMD32(pSrc)++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A */ + /* Copy and then store the value in the destination buffer */ + *pDst++ = *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicCopy group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c new file mode 100644 index 0000000..b0bdd05 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q31.c @@ -0,0 +1,111 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_copy_q31.c + * Description: Copies the elements of a Q31 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup copy + * @{ + */ + +/** + * @brief Copies the elements of a Q31 vector. + * @param[in] *pSrc points to input vector + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the input vector + * @return none. + * + */ + +void arm_copy_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t in1, in2, in3, in4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A */ + /* Copy and then store the values in the destination buffer */ + in1 = *pSrc++; + in2 = *pSrc++; + in3 = *pSrc++; + in4 = *pSrc++; + + *pDst++ = in1; + *pDst++ = in2; + *pDst++ = in3; + *pDst++ = in4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = A */ + /* Copy and then store the value in the destination buffer */ + *pDst++ = *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicCopy group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c new file mode 100644 index 0000000..a3afa36 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_copy_q7.c @@ -0,0 +1,103 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_copy_q7.c + * Description: Copies the elements of a Q7 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup copy + * @{ + */ + +/** + * @brief Copies the elements of a Q7 vector. + * @param[in] *pSrc points to input vector + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the input vector + * @return none. + * + */ + +void arm_copy_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A */ + /* Copy and then store the results in the destination buffer */ + /* 4 samples are copied and stored at a time using SIMD */ + *__SIMD32(pDst)++ = *__SIMD32(pSrc)++; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = A */ + /* Copy and then store the results in the destination buffer */ + *pDst++ = *pSrc++; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of BasicCopy group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c new file mode 100644 index 0000000..5a70608 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_f32.c @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fill_f32.c + * Description: Fills a constant value into a floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup Fill Vector Fill + * + * Fills the destination vector with a constant value. + * + *
+ * 	pDst[n] = value;   0 <= n < blockSize.
+ * 
+ * + * There are separate functions for floating point, Q31, Q15, and Q7 data types. + */ + +/** + * @addtogroup Fill + * @{ + */ + +/** + * @brief Fills a constant value into a floating-point vector. + * @param[in] value input value to be filled + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the output vector + * @return none. + * + */ + + +void arm_fill_f32( + float32_t value, + float32_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + float32_t in1 = value; + float32_t in2 = value; + float32_t in3 = value; + float32_t in4 = value; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = in1; + *pDst++ = in2; + *pDst++ = in3; + *pDst++ = in4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = value; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of Fill group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c new file mode 100644 index 0000000..8f27def --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q15.c @@ -0,0 +1,108 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fill_q15.c + * Description: Fills a constant value into a Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup Fill + * @{ + */ + +/** + * @brief Fills a constant value into a Q15 vector. + * @param[in] value input value to be filled + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the output vector + * @return none. + * + */ + +void arm_fill_q15( + q15_t value, + q15_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t packedValue; /* value packed to 32 bits */ + + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* Packing two 16 bit values to 32 bit value in order to use SIMD */ + packedValue = __PKHBT(value, value, 16U); + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *__SIMD32(pDst)++ = packedValue; + *__SIMD32(pDst)++ = packedValue; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = value; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of Fill group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c new file mode 100644 index 0000000..3769f4d --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q31.c @@ -0,0 +1,109 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fill_q31.c + * Description: Fills a constant value into a Q31 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup Fill + * @{ + */ + +/** + * @brief Fills a constant value into a Q31 vector. + * @param[in] value input value to be filled + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the output vector + * @return none. + * + */ + +void arm_fill_q31( + q31_t value, + q31_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t in1 = value; + q31_t in2 = value; + q31_t in3 = value; + q31_t in4 = value; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = in1; + *pDst++ = in2; + *pDst++ = in3; + *pDst++ = in4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = value; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of Fill group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c new file mode 100644 index 0000000..fa718b7 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_fill_q7.c @@ -0,0 +1,106 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_fill_q7.c + * Description: Fills a constant value into a Q7 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup Fill + * @{ + */ + +/** + * @brief Fills a constant value into a Q7 vector. + * @param[in] value input value to be filled + * @param[out] *pDst points to output vector + * @param[in] blockSize length of the output vector + * @return none. + * + */ + +void arm_fill_q7( + q7_t value, + q7_t * pDst, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t packedValue; /* value packed to 32 bits */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* Packing four 8 bit values to 32 bit value in order to use SIMD */ + packedValue = __PACKq7(value, value, value, value); + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *__SIMD32(pDst)++ = packedValue; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = value */ + /* Fill the value in the destination buffer */ + *pDst++ = value; + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of Fill group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c new file mode 100644 index 0000000..b652e7c --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q15.c @@ -0,0 +1,192 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_float_to_q15.c + * Description: Converts the elements of the floating-point vector to Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup float_to_x + * @{ + */ + +/** + * @brief Converts the elements of the floating-point vector to Q15 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * \par + * The equation used for the conversion process is: + *
+ * 	pDst[n] = (q15_t)(pSrc[n] * 32768);   0 <= n < blockSize.
+ * 
+ * \par Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + * \note + * In order to apply rounding, the library should be rebuilt with the ROUNDING macro + * defined in the preprocessor section of project options. + * + */ + + +void arm_float_to_q15( + float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifdef ARM_MATH_ROUNDING + + float32_t in; + +#endif /* #ifdef ARM_MATH_ROUNDING */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + +#ifdef ARM_MATH_ROUNDING + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 32768.0f); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + + in = *pIn++; + in = (in * 32768.0f); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + + in = *pIn++; + in = (in * 32768.0f); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + + in = *pIn++; + in = (in * 32768.0f); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + +#else + + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + +#ifdef ARM_MATH_ROUNDING + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 32768.0f); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + +#else + + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + +#ifdef ARM_MATH_ROUNDING + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 32768.0f); + in += in > 0 ? 0.5f : -0.5f; + *pDst++ = (q15_t) (__SSAT((q31_t) (in), 16)); + +#else + + /* C = A * 32768 */ + /* convert from float to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) __SSAT((q31_t) (*pIn++ * 32768.0f), 16); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of float_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c new file mode 100644 index 0000000..7ce1402 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q31.c @@ -0,0 +1,199 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_float_to_q31.c + * Description: Converts the elements of the floating-point vector to Q31 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup float_to_x Convert 32-bit floating point value + */ + +/** + * @addtogroup float_to_x + * @{ + */ + +/** + * @brief Converts the elements of the floating-point vector to Q31 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + *\par Description: + * \par + * The equation used for the conversion process is: + * + *
+ * 	pDst[n] = (q31_t)(pSrc[n] * 2147483648);   0 <= n < blockSize.
+ * 
+ * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q31 range[0x80000000 0x7FFFFFFF] will be saturated. + * + * \note In order to apply rounding, the library should be rebuilt with the ROUNDING macro + * defined in the preprocessor section of project options. + */ + + +void arm_float_to_q31( + float32_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifdef ARM_MATH_ROUNDING + + float32_t in; + +#endif /* #ifdef ARM_MATH_ROUNDING */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + +#ifdef ARM_MATH_ROUNDING + + /* C = A * 32768 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + +#else + + /* C = A * 2147483648 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + +#ifdef ARM_MATH_ROUNDING + + /* C = A * 2147483648 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + +#else + + /* C = A * 2147483648 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { + +#ifdef ARM_MATH_ROUNDING + + /* C = A * 2147483648 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 2147483648.0f); + in += in > 0 ? 0.5f : -0.5f; + *pDst++ = clip_q63_to_q31((q63_t) (in)); + +#else + + /* C = A * 2147483648 */ + /* convert from float to Q31 and then store the results in the destination buffer */ + *pDst++ = clip_q63_to_q31((q63_t) (*pIn++ * 2147483648.0f)); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of float_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c new file mode 100644 index 0000000..7fd3f2c --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_float_to_q7.c @@ -0,0 +1,191 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_float_to_q7.c + * Description: Converts the elements of the floating-point vector to Q7 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup float_to_x + * @{ + */ + +/** + * @brief Converts the elements of the floating-point vector to Q7 vector. + * @param[in] *pSrc points to the floating-point input vector + * @param[out] *pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + *\par Description: + * \par + * The equation used for the conversion process is: + *
+ * 	pDst[n] = (q7_t)(pSrc[n] * 128);   0 <= n < blockSize.
+ * 
+ * \par Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. + * \note + * In order to apply rounding, the library should be rebuilt with the ROUNDING macro + * defined in the preprocessor section of project options. + */ + + +void arm_float_to_q7( + float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + float32_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifdef ARM_MATH_ROUNDING + + float32_t in; + +#endif /* #ifdef ARM_MATH_ROUNDING */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + +#ifdef ARM_MATH_ROUNDING + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 128); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); + + in = *pIn++; + in = (in * 128); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); + + in = *pIn++; + in = (in * 128); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); + + in = *pIn++; + in = (in * 128); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); + +#else + + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); + *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); + *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); + *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + + while (blkCnt > 0U) + { + +#ifdef ARM_MATH_ROUNDING + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 128); + in += in > 0.0f ? 0.5f : -0.5f; + *pDst++ = (q7_t) (__SSAT((q15_t) (in), 8)); + +#else + + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + *pDst++ = __SSAT((q31_t) (*pIn++ * 128.0f), 8); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + + +#else + + /* Run the below code for Cortex-M0 */ + + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + + while (blkCnt > 0U) + { +#ifdef ARM_MATH_ROUNDING + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + in = *pIn++; + in = (in * 128.0f); + in += in > 0 ? 0.5f : -0.5f; + *pDst++ = (q7_t) (__SSAT((q31_t) (in), 8)); + +#else + + /* C = A * 128 */ + /* convert from float to q7 and then store the results in the destination buffer */ + *pDst++ = (q7_t) __SSAT((q31_t) (*pIn++ * 128.0f), 8); + +#endif /* #ifdef ARM_MATH_ROUNDING */ + + /* Decrement the loop counter */ + blkCnt--; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of float_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c new file mode 100644 index 0000000..442ba9f --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_float.c @@ -0,0 +1,122 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_q15_to_float.c + * Description: Converts the elements of the Q15 vector to floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup q15_to_x Convert 16-bit Integer value + */ + +/** + * @addtogroup q15_to_x + * @{ + */ + + + + +/** + * @brief Converts the elements of the Q15 vector to floating-point vector. + * @param[in] *pSrc points to the Q15 input vector + * @param[out] *pDst points to the floating-point output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
+ * 	pDst[n] = (float32_t) pSrc[n] / 32768;   0 <= n < blockSize.
+ * 
+ * + */ + + +void arm_q15_to_float( + q15_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + q15_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (float32_t) A / 32768 */ + /* convert from q15 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 32768.0f); + *pDst++ = ((float32_t) * pIn++ / 32768.0f); + *pDst++ = ((float32_t) * pIn++ / 32768.0f); + *pDst++ = ((float32_t) * pIn++ / 32768.0f); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (float32_t) A / 32768 */ + /* convert from q15 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 32768.0f); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of q15_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c new file mode 100644 index 0000000..2dff322 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q31.c @@ -0,0 +1,144 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_q15_to_q31.c + * Description: Converts the elements of the Q15 vector to Q31 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q15_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q15 vector to Q31 vector. + * @param[in] *pSrc points to the Q15 input vector + * @param[out] *pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
+ * 	pDst[n] = (q31_t) pSrc[n] << 16;   0 <= n < blockSize.
+ * 
+ * + */ + + +void arm_q15_to_q31( + q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q15_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t in1, in2; + q31_t out1, out2, out3, out4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (q31_t)A << 16 */ + /* convert from q15 to q31 and then store the results in the destination buffer */ + in1 = *__SIMD32(pIn)++; + in2 = *__SIMD32(pIn)++; + +#ifndef ARM_MATH_BIG_ENDIAN + + /* extract lower 16 bits to 32 bit result */ + out1 = in1 << 16U; + /* extract upper 16 bits to 32 bit result */ + out2 = in1 & 0xFFFF0000; + /* extract lower 16 bits to 32 bit result */ + out3 = in2 << 16U; + /* extract upper 16 bits to 32 bit result */ + out4 = in2 & 0xFFFF0000; + +#else + + /* extract upper 16 bits to 32 bit result */ + out1 = in1 & 0xFFFF0000; + /* extract lower 16 bits to 32 bit result */ + out2 = in1 << 16U; + /* extract upper 16 bits to 32 bit result */ + out3 = in2 & 0xFFFF0000; + /* extract lower 16 bits to 32 bit result */ + out4 = in2 << 16U; + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + *pDst++ = out1; + *pDst++ = out2; + *pDst++ = out3; + *pDst++ = out4; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (q31_t)A << 16 */ + /* convert from q15 to q31 and then store the results in the destination buffer */ + *pDst++ = (q31_t) * pIn++ << 16; + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q15_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c new file mode 100644 index 0000000..26a35e7 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q15_to_q7.c @@ -0,0 +1,142 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_q15_to_q7.c + * Description: Converts the elements of the Q15 vector to Q7 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q15_to_x + * @{ + */ + + +/** + * @brief Converts the elements of the Q15 vector to Q7 vector. + * @param[in] *pSrc points to the Q15 input vector + * @param[out] *pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
+ * 	pDst[n] = (q7_t) pSrc[n] >> 8;   0 <= n < blockSize.
+ * 
+ * + */ + + +void arm_q15_to_q7( + q15_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + q15_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t in1, in2; + q31_t out1, out2; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (q7_t) A >> 8 */ + /* convert from q15 to q7 and then store the results in the destination buffer */ + in1 = *__SIMD32(pIn)++; + in2 = *__SIMD32(pIn)++; + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __PKHTB(in2, in1, 16); + out2 = __PKHBT(in2, in1, 16); + +#else + + out1 = __PKHTB(in1, in2, 16); + out2 = __PKHBT(in1, in2, 16); + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + /* rotate packed value by 24 */ + out2 = ((uint32_t) out2 << 8) | ((uint32_t) out2 >> 24); + + /* anding with 0xff00ff00 to get two 8 bit values */ + out1 = out1 & 0xFF00FF00; + /* anding with 0x00ff00ff to get two 8 bit values */ + out2 = out2 & 0x00FF00FF; + + /* oring two values(contains two 8 bit values) to get four packed 8 bit values */ + out1 = out1 | out2; + + /* store 4 samples at a time to destiantion buffer */ + *__SIMD32(pDst)++ = out1; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (q7_t) A >> 8 */ + /* convert from q15 to q7 and then store the results in the destination buffer */ + *pDst++ = (q7_t) (*pIn++ >> 8); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q15_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c new file mode 100644 index 0000000..b15d90e --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_float.c @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_q31_to_float.c + * Description: Converts the elements of the Q31 vector to floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup q31_to_x Convert 32-bit Integer value + */ + +/** + * @addtogroup q31_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q31 vector to floating-point vector. + * @param[in] *pSrc points to the Q31 input vector + * @param[out] *pDst points to the floating-point output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
+ * 	pDst[n] = (float32_t) pSrc[n] / 2147483648;   0 <= n < blockSize.
+ * 
+ * + */ + + +void arm_q31_to_float( + q31_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (float32_t) A / 2147483648 */ + /* convert from q31 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); + *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); + *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); + *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (float32_t) A / 2147483648 */ + /* convert from q31 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 2147483648.0f); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of q31_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c new file mode 100644 index 0000000..2fd305b --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q15.c @@ -0,0 +1,133 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_q31_to_q15.c + * Description: Converts the elements of the Q31 vector to Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q31_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q31 vector to Q15 vector. + * @param[in] *pSrc points to the Q31 input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
+ * 	pDst[n] = (q15_t) pSrc[n] >> 16;   0 <= n < blockSize.
+ * 
+ * + */ + + +void arm_q31_to_q15( + q31_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t in1, in2, in3, in4; + q31_t out1, out2; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (q15_t) A >> 16 */ + /* convert from q31 to q15 and then store the results in the destination buffer */ + in1 = *pIn++; + in2 = *pIn++; + in3 = *pIn++; + in4 = *pIn++; + + /* pack two higher 16-bit values from two 32-bit values */ +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __PKHTB(in2, in1, 16); + out2 = __PKHTB(in4, in3, 16); + +#else + + out1 = __PKHTB(in1, in2, 16); + out2 = __PKHTB(in3, in4, 16); + +#endif // #ifdef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = out1; + *__SIMD32(pDst)++ = out2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (q15_t) A >> 16 */ + /* convert from q31 to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) (*pIn++ >> 16); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q31_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c new file mode 100644 index 0000000..6586861 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q31_to_q7.c @@ -0,0 +1,124 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_q31_to_q7.c + * Description: Converts the elements of the Q31 vector to Q7 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q31_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q31 vector to Q7 vector. + * @param[in] *pSrc points to the Q31 input vector + * @param[out] *pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
+ * 	pDst[n] = (q7_t) pSrc[n] >> 24;   0 <= n < blockSize.
+ * 
+ * + */ + + +void arm_q31_to_q7( + q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize) +{ + q31_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t in1, in2, in3, in4; + q7_t out1, out2, out3, out4; + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (q7_t) A >> 24 */ + /* convert from q31 to q7 and then store the results in the destination buffer */ + in1 = *pIn++; + in2 = *pIn++; + in3 = *pIn++; + in4 = *pIn++; + + out1 = (q7_t) (in1 >> 24); + out2 = (q7_t) (in2 >> 24); + out3 = (q7_t) (in3 >> 24); + out4 = (q7_t) (in4 >> 24); + + *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (q7_t) A >> 24 */ + /* convert from q31 to q7 and then store the results in the destination buffer */ + *pDst++ = (q7_t) (*pIn++ >> 24); + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q31_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c new file mode 100644 index 0000000..d866501 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_float.c @@ -0,0 +1,119 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_q7_to_float.c + * Description: Converts the elements of the Q7 vector to floating-point vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @defgroup q7_to_x Convert 8-bit Integer value + */ + +/** + * @addtogroup q7_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q7 vector to floating-point vector. + * @param[in] *pSrc points to the Q7 input vector + * @param[out] *pDst points to the floating-point output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
+ * 	pDst[n] = (float32_t) pSrc[n] / 128;   0 <= n < blockSize.
+ * 
+ * + */ + + +void arm_q7_to_float( + q7_t * pSrc, + float32_t * pDst, + uint32_t blockSize) +{ + q7_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (float32_t) A / 128 */ + /* convert from q7 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 128.0f); + *pDst++ = ((float32_t) * pIn++ / 128.0f); + *pDst++ = ((float32_t) * pIn++ / 128.0f); + *pDst++ = ((float32_t) * pIn++ / 128.0f); + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (float32_t) A / 128 */ + /* convert from q7 to float and then store the results in the destination buffer */ + *pDst++ = ((float32_t) * pIn++ / 128.0f); + + /* Decrement the loop counter */ + blkCnt--; + } +} + +/** + * @} end of q7_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c new file mode 100644 index 0000000..5bc5a56 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q15.c @@ -0,0 +1,145 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_q7_to_q15.c + * Description: Converts the elements of the Q7 vector to Q15 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q7_to_x + * @{ + */ + + + + +/** + * @brief Converts the elements of the Q7 vector to Q15 vector. + * @param[in] *pSrc points to the Q7 input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
+ * 	pDst[n] = (q15_t) pSrc[n] << 8;   0 <= n < blockSize.
+ * 
+ * + */ + + +void arm_q7_to_q15( + q7_t * pSrc, + q15_t * pDst, + uint32_t blockSize) +{ + q7_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + q31_t in; + q31_t in1, in2; + q31_t out1, out2; + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (q15_t) A << 8 */ + /* convert from q7 to q15 and then store the results in the destination buffer */ + in = *__SIMD32(pIn)++; + + /* rotatate in by 8 and extend two q7_t values to q15_t values */ + in1 = __SXTB16(__ROR(in, 8)); + + /* extend remainig two q7_t values to q15_t values */ + in2 = __SXTB16(in); + + in1 = in1 << 8U; + in2 = in2 << 8U; + + in1 = in1 & 0xFF00FF00; + in2 = in2 & 0xFF00FF00; + +#ifndef ARM_MATH_BIG_ENDIAN + + out2 = __PKHTB(in1, in2, 16); + out1 = __PKHBT(in2, in1, 16); + +#else + + out1 = __PKHTB(in1, in2, 16); + out2 = __PKHBT(in2, in1, 16); + +#endif + + *__SIMD32(pDst)++ = out1; + *__SIMD32(pDst)++ = out2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (q15_t) A << 8 */ + /* convert from q7 to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) * pIn++ << 8; + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q7_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c new file mode 100644 index 0000000..abbda7f --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/SupportFunctions/arm_q7_to_q31.c @@ -0,0 +1,130 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_q7_to_q31.c + * Description: Converts the elements of the Q7 vector to Q31 vector + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup q7_to_x + * @{ + */ + +/** + * @brief Converts the elements of the Q7 vector to Q31 vector. + * @param[in] *pSrc points to the Q7 input vector + * @param[out] *pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
+ * 	pDst[n] = (q31_t) pSrc[n] << 24;   0 <= n < blockSize.
+ * 
+ * + */ + + +void arm_q7_to_q31( + q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize) +{ + q7_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#if defined (ARM_MATH_DSP) + + q31_t in; + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = (q31_t) A << 24 */ + /* convert from q7 to q31 and then store the results in the destination buffer */ + in = *__SIMD32(pIn)++; + +#ifndef ARM_MATH_BIG_ENDIAN + + *pDst++ = (__ROR(in, 8)) & 0xFF000000; + *pDst++ = (__ROR(in, 16)) & 0xFF000000; + *pDst++ = (__ROR(in, 24)) & 0xFF000000; + *pDst++ = (in & 0xFF000000); + +#else + + *pDst++ = (in & 0xFF000000); + *pDst++ = (__ROR(in, 24)) & 0xFF000000; + *pDst++ = (__ROR(in, 16)) & 0xFF000000; + *pDst++ = (__ROR(in, 8)) & 0xFF000000; + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + while (blkCnt > 0U) + { + /* C = (q31_t) A << 24 */ + /* convert from q7 to q31 and then store the results in the destination buffer */ + *pDst++ = (q31_t) * pIn++ << 24; + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q7_to_x group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c new file mode 100644 index 0000000..3119769 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal.c @@ -0,0 +1,230 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_bitreversal.c + * Description: Bitreversal functions + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/* +* @brief In-place bit reversal function. +* @param[in, out] *pSrc points to the in-place buffer of floating-point data type. +* @param[in] fftSize length of the FFT. +* @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table. +* @param[in] *pBitRevTab points to the bit reversal table. +* @return none. +*/ + +void arm_bitreversal_f32( +float32_t * pSrc, +uint16_t fftSize, +uint16_t bitRevFactor, +uint16_t * pBitRevTab) +{ + uint16_t fftLenBy2, fftLenBy2p1; + uint16_t i, j; + float32_t in; + + /* Initializations */ + j = 0U; + fftLenBy2 = fftSize >> 1U; + fftLenBy2p1 = (fftSize >> 1U) + 1U; + + /* Bit Reversal Implementation */ + for (i = 0U; i <= (fftLenBy2 - 2U); i += 2U) + { + if (i < j) + { + /* pSrc[i] <-> pSrc[j]; */ + in = pSrc[2U * i]; + pSrc[2U * i] = pSrc[2U * j]; + pSrc[2U * j] = in; + + /* pSrc[i+1U] <-> pSrc[j+1U] */ + in = pSrc[(2U * i) + 1U]; + pSrc[(2U * i) + 1U] = pSrc[(2U * j) + 1U]; + pSrc[(2U * j) + 1U] = in; + + /* pSrc[i+fftLenBy2p1] <-> pSrc[j+fftLenBy2p1] */ + in = pSrc[2U * (i + fftLenBy2p1)]; + pSrc[2U * (i + fftLenBy2p1)] = pSrc[2U * (j + fftLenBy2p1)]; + pSrc[2U * (j + fftLenBy2p1)] = in; + + /* pSrc[i+fftLenBy2p1+1U] <-> pSrc[j+fftLenBy2p1+1U] */ + in = pSrc[(2U * (i + fftLenBy2p1)) + 1U]; + pSrc[(2U * (i + fftLenBy2p1)) + 1U] = + pSrc[(2U * (j + fftLenBy2p1)) + 1U]; + pSrc[(2U * (j + fftLenBy2p1)) + 1U] = in; + + } + + /* pSrc[i+1U] <-> pSrc[j+1U] */ + in = pSrc[2U * (i + 1U)]; + pSrc[2U * (i + 1U)] = pSrc[2U * (j + fftLenBy2)]; + pSrc[2U * (j + fftLenBy2)] = in; + + /* pSrc[i+2U] <-> pSrc[j+2U] */ + in = pSrc[(2U * (i + 1U)) + 1U]; + pSrc[(2U * (i + 1U)) + 1U] = pSrc[(2U * (j + fftLenBy2)) + 1U]; + pSrc[(2U * (j + fftLenBy2)) + 1U] = in; + + /* Reading the index for the bit reversal */ + j = *pBitRevTab; + + /* Updating the bit reversal index depending on the fft length */ + pBitRevTab += bitRevFactor; + } +} + + + +/* +* @brief In-place bit reversal function. +* @param[in, out] *pSrc points to the in-place buffer of Q31 data type. +* @param[in] fftLen length of the FFT. +* @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table +* @param[in] *pBitRevTab points to bit reversal table. +* @return none. +*/ + +void arm_bitreversal_q31( +q31_t * pSrc, +uint32_t fftLen, +uint16_t bitRevFactor, +uint16_t * pBitRevTable) +{ + uint32_t fftLenBy2, fftLenBy2p1, i, j; + q31_t in; + + /* Initializations */ + j = 0U; + fftLenBy2 = fftLen / 2U; + fftLenBy2p1 = (fftLen / 2U) + 1U; + + /* Bit Reversal Implementation */ + for (i = 0U; i <= (fftLenBy2 - 2U); i += 2U) + { + if (i < j) + { + /* pSrc[i] <-> pSrc[j]; */ + in = pSrc[2U * i]; + pSrc[2U * i] = pSrc[2U * j]; + pSrc[2U * j] = in; + + /* pSrc[i+1U] <-> pSrc[j+1U] */ + in = pSrc[(2U * i) + 1U]; + pSrc[(2U * i) + 1U] = pSrc[(2U * j) + 1U]; + pSrc[(2U * j) + 1U] = in; + + /* pSrc[i+fftLenBy2p1] <-> pSrc[j+fftLenBy2p1] */ + in = pSrc[2U * (i + fftLenBy2p1)]; + pSrc[2U * (i + fftLenBy2p1)] = pSrc[2U * (j + fftLenBy2p1)]; + pSrc[2U * (j + fftLenBy2p1)] = in; + + /* pSrc[i+fftLenBy2p1+1U] <-> pSrc[j+fftLenBy2p1+1U] */ + in = pSrc[(2U * (i + fftLenBy2p1)) + 1U]; + pSrc[(2U * (i + fftLenBy2p1)) + 1U] = + pSrc[(2U * (j + fftLenBy2p1)) + 1U]; + pSrc[(2U * (j + fftLenBy2p1)) + 1U] = in; + + } + + /* pSrc[i+1U] <-> pSrc[j+1U] */ + in = pSrc[2U * (i + 1U)]; + pSrc[2U * (i + 1U)] = pSrc[2U * (j + fftLenBy2)]; + pSrc[2U * (j + fftLenBy2)] = in; + + /* pSrc[i+2U] <-> pSrc[j+2U] */ + in = pSrc[(2U * (i + 1U)) + 1U]; + pSrc[(2U * (i + 1U)) + 1U] = pSrc[(2U * (j + fftLenBy2)) + 1U]; + pSrc[(2U * (j + fftLenBy2)) + 1U] = in; + + /* Reading the index for the bit reversal */ + j = *pBitRevTable; + + /* Updating the bit reversal index depending on the fft length */ + pBitRevTable += bitRevFactor; + } +} + + + +/* + * @brief In-place bit reversal function. + * @param[in, out] *pSrc points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] bitRevFactor bit reversal modifier that supports different size FFTs with the same bit reversal table + * @param[in] *pBitRevTab points to bit reversal table. + * @return none. +*/ + +void arm_bitreversal_q15( +q15_t * pSrc16, +uint32_t fftLen, +uint16_t bitRevFactor, +uint16_t * pBitRevTab) +{ + q31_t *pSrc = (q31_t *) pSrc16; + q31_t in; + uint32_t fftLenBy2, fftLenBy2p1; + uint32_t i, j; + + /* Initializations */ + j = 0U; + fftLenBy2 = fftLen / 2U; + fftLenBy2p1 = (fftLen / 2U) + 1U; + + /* Bit Reversal Implementation */ + for (i = 0U; i <= (fftLenBy2 - 2U); i += 2U) + { + if (i < j) + { + /* pSrc[i] <-> pSrc[j]; */ + /* pSrc[i+1U] <-> pSrc[j+1U] */ + in = pSrc[i]; + pSrc[i] = pSrc[j]; + pSrc[j] = in; + + /* pSrc[i + fftLenBy2p1] <-> pSrc[j + fftLenBy2p1]; */ + /* pSrc[i + fftLenBy2p1+1U] <-> pSrc[j + fftLenBy2p1+1U] */ + in = pSrc[i + fftLenBy2p1]; + pSrc[i + fftLenBy2p1] = pSrc[j + fftLenBy2p1]; + pSrc[j + fftLenBy2p1] = in; + } + + /* pSrc[i+1U] <-> pSrc[j+fftLenBy2]; */ + /* pSrc[i+2] <-> pSrc[j+fftLenBy2+1U] */ + in = pSrc[i + 1U]; + pSrc[i + 1U] = pSrc[j + fftLenBy2]; + pSrc[j + fftLenBy2] = in; + + /* Reading the index for the bit reversal */ + j = *pBitRevTab; + + /* Updating the bit reversal index depending on the fft length */ + pBitRevTab += bitRevFactor; + } +} diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.S b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.S new file mode 100644 index 0000000..cde264c --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_bitreversal2.S @@ -0,0 +1,216 @@ +;/* ---------------------------------------------------------------------- +; * Project: CMSIS DSP Library +; * Title: arm_bitreversal2.S +; * Description: arm_bitreversal_32 function done in assembly for maximum speed. +; * Called after doing an fft to reorder the output. +; * The function is loop unrolled by 2. arm_bitreversal_16 as well. +; * +; * $Date: 27. January 2017 +; * $Revision: V.1.5.1 +; * +; * Target Processor: Cortex-M cores +; * -------------------------------------------------------------------- */ +;/* +; * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. +; * +; * SPDX-License-Identifier: Apache-2.0 +; * +; * Licensed under the Apache License, Version 2.0 (the License); you may +; * not use this file except in compliance with the License. +; * You may obtain a copy of the License at +; * +; * www.apache.org/licenses/LICENSE-2.0 +; * +; * Unless required by applicable law or agreed to in writing, software +; * distributed under the License is distributed on an AS IS BASIS, WITHOUT +; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; * See the License for the specific language governing permissions and +; * limitations under the License. +; */ + +#if defined ( __CC_ARM ) /* Keil */ + #define CODESECT AREA ||.text||, CODE, READONLY, ALIGN=2 + #define LABEL +#elif defined ( __IASMARM__ ) /* IAR */ + #define CODESECT SECTION `.text`:CODE + #define PROC + #define LABEL + #define ENDP + #define EXPORT PUBLIC +#elif defined ( __CSMC__ ) /* Cosmic */ + #define CODESECT switch .text + #define THUMB + #define EXPORT xdef + #define PROC : + #define LABEL : + #define ENDP + #define arm_bitreversal_32 _arm_bitreversal_32 +#elif defined ( __TI_ARM__ ) /* TI ARM */ + #define THUMB .thumb + #define CODESECT .text + #define EXPORT .global + #define PROC : .asmfunc + #define LABEL : + #define ENDP .endasmfunc + #define END +#elif defined ( __GNUC__ ) /* GCC */ + #define THUMB .thumb + #define CODESECT .section .text + #define EXPORT .global + #define PROC : + #define LABEL : + #define ENDP + #define END + + .syntax unified +#endif + + CODESECT + THUMB + +;/* +;* @brief In-place bit reversal function. +;* @param[in, out] *pSrc points to the in-place buffer of unknown 32-bit data type. +;* @param[in] bitRevLen bit reversal table length +;* @param[in] *pBitRevTab points to bit reversal table. +;* @return none. +;*/ + EXPORT arm_bitreversal_32 + EXPORT arm_bitreversal_16 + +#if defined ( __CC_ARM ) /* Keil */ +#elif defined ( __IASMARM__ ) /* IAR */ +#elif defined ( __CSMC__ ) /* Cosmic */ +#elif defined ( __TI_ARM__ ) /* TI ARM */ +#elif defined ( __GNUC__ ) /* GCC */ + .type arm_bitreversal_16, %function + .type arm_bitreversal_32, %function +#endif + +#if defined(ARM_MATH_CM0) || defined(ARM_MATH_CM0PLUS) || defined(ARM_MATH_ARMV8MBL) + +arm_bitreversal_32 PROC + ADDS r3,r1,#1 + PUSH {r4-r6} + ADDS r1,r2,#0 + LSRS r3,r3,#1 +arm_bitreversal_32_0 LABEL + LDRH r2,[r1,#2] + LDRH r6,[r1,#0] + ADD r2,r0,r2 + ADD r6,r0,r6 + LDR r5,[r2,#0] + LDR r4,[r6,#0] + STR r5,[r6,#0] + STR r4,[r2,#0] + LDR r5,[r2,#4] + LDR r4,[r6,#4] + STR r5,[r6,#4] + STR r4,[r2,#4] + ADDS r1,r1,#4 + SUBS r3,r3,#1 + BNE arm_bitreversal_32_0 + POP {r4-r6} + BX lr + ENDP + +arm_bitreversal_16 PROC + ADDS r3,r1,#1 + PUSH {r4-r6} + ADDS r1,r2,#0 + LSRS r3,r3,#1 +arm_bitreversal_16_0 LABEL + LDRH r2,[r1,#2] + LDRH r6,[r1,#0] + LSRS r2,r2,#1 + LSRS r6,r6,#1 + ADD r2,r0,r2 + ADD r6,r0,r6 + LDR r5,[r2,#0] + LDR r4,[r6,#0] + STR r5,[r6,#0] + STR r4,[r2,#0] + ADDS r1,r1,#4 + SUBS r3,r3,#1 + BNE arm_bitreversal_16_0 + POP {r4-r6} + BX lr + ENDP + +#else + +arm_bitreversal_32 PROC + ADDS r3,r1,#1 + CMP r3,#1 + IT LS + BXLS lr + PUSH {r4-r9} + ADDS r1,r2,#2 + LSRS r3,r3,#2 +arm_bitreversal_32_0 LABEL ;/* loop unrolled by 2 */ + LDRH r8,[r1,#4] + LDRH r9,[r1,#2] + LDRH r2,[r1,#0] + LDRH r12,[r1,#-2] + ADD r8,r0,r8 + ADD r9,r0,r9 + ADD r2,r0,r2 + ADD r12,r0,r12 + LDR r7,[r9,#0] + LDR r6,[r8,#0] + LDR r5,[r2,#0] + LDR r4,[r12,#0] + STR r6,[r9,#0] + STR r7,[r8,#0] + STR r5,[r12,#0] + STR r4,[r2,#0] + LDR r7,[r9,#4] + LDR r6,[r8,#4] + LDR r5,[r2,#4] + LDR r4,[r12,#4] + STR r6,[r9,#4] + STR r7,[r8,#4] + STR r5,[r12,#4] + STR r4,[r2,#4] + ADDS r1,r1,#8 + SUBS r3,r3,#1 + BNE arm_bitreversal_32_0 + POP {r4-r9} + BX lr + ENDP + +arm_bitreversal_16 PROC + ADDS r3,r1,#1 + CMP r3,#1 + IT LS + BXLS lr + PUSH {r4-r9} + ADDS r1,r2,#2 + LSRS r3,r3,#2 +arm_bitreversal_16_0 LABEL ;/* loop unrolled by 2 */ + LDRH r8,[r1,#4] + LDRH r9,[r1,#2] + LDRH r2,[r1,#0] + LDRH r12,[r1,#-2] + ADD r8,r0,r8,LSR #1 + ADD r9,r0,r9,LSR #1 + ADD r2,r0,r2,LSR #1 + ADD r12,r0,r12,LSR #1 + LDR r7,[r9,#0] + LDR r6,[r8,#0] + LDR r5,[r2,#0] + LDR r4,[r12,#0] + STR r6,[r9,#0] + STR r7,[r8,#0] + STR r5,[r12,#0] + STR r4,[r2,#0] + ADDS r1,r1,#8 + SUBS r3,r3,#1 + BNE arm_bitreversal_16_0 + POP {r4-r9} + BX lr + ENDP + +#endif + + END diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c new file mode 100644 index 0000000..2593202 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_f32.c @@ -0,0 +1,620 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_f32.c + * Description: Combined Radix Decimation in Frequency CFFT Floating point processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +extern void arm_radix8_butterfly_f32( + float32_t * pSrc, + uint16_t fftLen, + const float32_t * pCoef, + uint16_t twidCoefModifier); + +extern void arm_bitreversal_32( + uint32_t * pSrc, + const uint16_t bitRevLen, + const uint16_t * pBitRevTable); + +/** +* @ingroup groupTransforms +*/ + +/** +* @defgroup ComplexFFT Complex FFT Functions +* +* \par +* The Fast Fourier Transform (FFT) is an efficient algorithm for computing the +* Discrete Fourier Transform (DFT). The FFT can be orders of magnitude faster +* than the DFT, especially for long lengths. +* The algorithms described in this section +* operate on complex data. A separate set of functions is devoted to handling +* of real sequences. +* \par +* There are separate algorithms for handling floating-point, Q15, and Q31 data +* types. The algorithms available for each data type are described next. +* \par +* The FFT functions operate in-place. That is, the array holding the input data +* will also be used to hold the corresponding result. The input data is complex +* and contains 2*fftLen interleaved values as shown below. +*
 {real[0], imag[0], real[1], imag[1],..} 
+* The FFT result will be contained in the same array and the frequency domain +* values will have the same interleaving. +* +* \par Floating-point +* The floating-point complex FFT uses a mixed-radix algorithm. Multiple radix-8 +* stages are performed along with a single radix-2 or radix-4 stage, as needed. +* The algorithm supports lengths of [16, 32, 64, ..., 4096] and each length uses +* a different twiddle factor table. +* \par +* The function uses the standard FFT definition and output values may grow by a +* factor of fftLen when computing the forward transform. The +* inverse transform includes a scale of 1/fftLen as part of the +* calculation and this matches the textbook definition of the inverse FFT. +* \par +* Pre-initialized data structures containing twiddle factors and bit reversal +* tables are provided and defined in arm_const_structs.h. Include +* this header in your function and then pass one of the constant structures as +* an argument to arm_cfft_f32. For example: +* \par +* arm_cfft_f32(arm_cfft_sR_f32_len64, pSrc, 1, 1) +* \par +* computes a 64-point inverse complex FFT including bit reversal. +* The data structures are treated as constant data and not modified during the +* calculation. The same data structure can be reused for multiple transforms +* including mixing forward and inverse transforms. +* \par +* Earlier releases of the library provided separate radix-2 and radix-4 +* algorithms that operated on floating-point data. These functions are still +* provided but are deprecated. The older functions are slower and less general +* than the new functions. +* \par +* An example of initialization of the constants for the arm_cfft_f32 function follows: +* \code +* const static arm_cfft_instance_f32 *S; +* ... +* switch (length) { +* case 16: +* S = &arm_cfft_sR_f32_len16; +* break; +* case 32: +* S = &arm_cfft_sR_f32_len32; +* break; +* case 64: +* S = &arm_cfft_sR_f32_len64; +* break; +* case 128: +* S = &arm_cfft_sR_f32_len128; +* break; +* case 256: +* S = &arm_cfft_sR_f32_len256; +* break; +* case 512: +* S = &arm_cfft_sR_f32_len512; +* break; +* case 1024: +* S = &arm_cfft_sR_f32_len1024; +* break; +* case 2048: +* S = &arm_cfft_sR_f32_len2048; +* break; +* case 4096: +* S = &arm_cfft_sR_f32_len4096; +* break; +* } +* \endcode +* \par Q15 and Q31 +* The floating-point complex FFT uses a mixed-radix algorithm. Multiple radix-4 +* stages are performed along with a single radix-2 stage, as needed. +* The algorithm supports lengths of [16, 32, 64, ..., 4096] and each length uses +* a different twiddle factor table. +* \par +* The function uses the standard FFT definition and output values may grow by a +* factor of fftLen when computing the forward transform. The +* inverse transform includes a scale of 1/fftLen as part of the +* calculation and this matches the textbook definition of the inverse FFT. +* \par +* Pre-initialized data structures containing twiddle factors and bit reversal +* tables are provided and defined in arm_const_structs.h. Include +* this header in your function and then pass one of the constant structures as +* an argument to arm_cfft_q31. For example: +* \par +* arm_cfft_q31(arm_cfft_sR_q31_len64, pSrc, 1, 1) +* \par +* computes a 64-point inverse complex FFT including bit reversal. +* The data structures are treated as constant data and not modified during the +* calculation. The same data structure can be reused for multiple transforms +* including mixing forward and inverse transforms. +* \par +* Earlier releases of the library provided separate radix-2 and radix-4 +* algorithms that operated on floating-point data. These functions are still +* provided but are deprecated. The older functions are slower and less general +* than the new functions. +* \par +* An example of initialization of the constants for the arm_cfft_q31 function follows: +* \code +* const static arm_cfft_instance_q31 *S; +* ... +* switch (length) { +* case 16: +* S = &arm_cfft_sR_q31_len16; +* break; +* case 32: +* S = &arm_cfft_sR_q31_len32; +* break; +* case 64: +* S = &arm_cfft_sR_q31_len64; +* break; +* case 128: +* S = &arm_cfft_sR_q31_len128; +* break; +* case 256: +* S = &arm_cfft_sR_q31_len256; +* break; +* case 512: +* S = &arm_cfft_sR_q31_len512; +* break; +* case 1024: +* S = &arm_cfft_sR_q31_len1024; +* break; +* case 2048: +* S = &arm_cfft_sR_q31_len2048; +* break; +* case 4096: +* S = &arm_cfft_sR_q31_len4096; +* break; +* } +* \endcode +* +*/ + +void arm_cfft_radix8by2_f32( arm_cfft_instance_f32 * S, float32_t * p1) +{ + uint32_t L = S->fftLen; + float32_t * pCol1, * pCol2, * pMid1, * pMid2; + float32_t * p2 = p1 + L; + const float32_t * tw = (float32_t *) S->pTwiddle; + float32_t t1[4], t2[4], t3[4], t4[4], twR, twI; + float32_t m0, m1, m2, m3; + uint32_t l; + + pCol1 = p1; + pCol2 = p2; + + // Define new length + L >>= 1; + // Initialize mid pointers + pMid1 = p1 + L; + pMid2 = p2 + L; + + // do two dot Fourier transform + for ( l = L >> 2; l > 0; l-- ) + { + t1[0] = p1[0]; + t1[1] = p1[1]; + t1[2] = p1[2]; + t1[3] = p1[3]; + + t2[0] = p2[0]; + t2[1] = p2[1]; + t2[2] = p2[2]; + t2[3] = p2[3]; + + t3[0] = pMid1[0]; + t3[1] = pMid1[1]; + t3[2] = pMid1[2]; + t3[3] = pMid1[3]; + + t4[0] = pMid2[0]; + t4[1] = pMid2[1]; + t4[2] = pMid2[2]; + t4[3] = pMid2[3]; + + *p1++ = t1[0] + t2[0]; + *p1++ = t1[1] + t2[1]; + *p1++ = t1[2] + t2[2]; + *p1++ = t1[3] + t2[3]; // col 1 + + t2[0] = t1[0] - t2[0]; + t2[1] = t1[1] - t2[1]; + t2[2] = t1[2] - t2[2]; + t2[3] = t1[3] - t2[3]; // for col 2 + + *pMid1++ = t3[0] + t4[0]; + *pMid1++ = t3[1] + t4[1]; + *pMid1++ = t3[2] + t4[2]; + *pMid1++ = t3[3] + t4[3]; // col 1 + + t4[0] = t4[0] - t3[0]; + t4[1] = t4[1] - t3[1]; + t4[2] = t4[2] - t3[2]; + t4[3] = t4[3] - t3[3]; // for col 2 + + twR = *tw++; + twI = *tw++; + + // multiply by twiddle factors + m0 = t2[0] * twR; + m1 = t2[1] * twI; + m2 = t2[1] * twR; + m3 = t2[0] * twI; + + // R = R * Tr - I * Ti + *p2++ = m0 + m1; + // I = I * Tr + R * Ti + *p2++ = m2 - m3; + + // use vertical symmetry + // 0.9988 - 0.0491i <==> -0.0491 - 0.9988i + m0 = t4[0] * twI; + m1 = t4[1] * twR; + m2 = t4[1] * twI; + m3 = t4[0] * twR; + + *pMid2++ = m0 - m1; + *pMid2++ = m2 + m3; + + twR = *tw++; + twI = *tw++; + + m0 = t2[2] * twR; + m1 = t2[3] * twI; + m2 = t2[3] * twR; + m3 = t2[2] * twI; + + *p2++ = m0 + m1; + *p2++ = m2 - m3; + + m0 = t4[2] * twI; + m1 = t4[3] * twR; + m2 = t4[3] * twI; + m3 = t4[2] * twR; + + *pMid2++ = m0 - m1; + *pMid2++ = m2 + m3; + } + + // first col + arm_radix8_butterfly_f32( pCol1, L, (float32_t *) S->pTwiddle, 2U); + // second col + arm_radix8_butterfly_f32( pCol2, L, (float32_t *) S->pTwiddle, 2U); +} + +void arm_cfft_radix8by4_f32( arm_cfft_instance_f32 * S, float32_t * p1) +{ + uint32_t L = S->fftLen >> 1; + float32_t * pCol1, *pCol2, *pCol3, *pCol4, *pEnd1, *pEnd2, *pEnd3, *pEnd4; + const float32_t *tw2, *tw3, *tw4; + float32_t * p2 = p1 + L; + float32_t * p3 = p2 + L; + float32_t * p4 = p3 + L; + float32_t t2[4], t3[4], t4[4], twR, twI; + float32_t p1ap3_0, p1sp3_0, p1ap3_1, p1sp3_1; + float32_t m0, m1, m2, m3; + uint32_t l, twMod2, twMod3, twMod4; + + pCol1 = p1; // points to real values by default + pCol2 = p2; + pCol3 = p3; + pCol4 = p4; + pEnd1 = p2 - 1; // points to imaginary values by default + pEnd2 = p3 - 1; + pEnd3 = p4 - 1; + pEnd4 = pEnd3 + L; + + tw2 = tw3 = tw4 = (float32_t *) S->pTwiddle; + + L >>= 1; + + // do four dot Fourier transform + + twMod2 = 2; + twMod3 = 4; + twMod4 = 6; + + // TOP + p1ap3_0 = p1[0] + p3[0]; + p1sp3_0 = p1[0] - p3[0]; + p1ap3_1 = p1[1] + p3[1]; + p1sp3_1 = p1[1] - p3[1]; + + // col 2 + t2[0] = p1sp3_0 + p2[1] - p4[1]; + t2[1] = p1sp3_1 - p2[0] + p4[0]; + // col 3 + t3[0] = p1ap3_0 - p2[0] - p4[0]; + t3[1] = p1ap3_1 - p2[1] - p4[1]; + // col 4 + t4[0] = p1sp3_0 - p2[1] + p4[1]; + t4[1] = p1sp3_1 + p2[0] - p4[0]; + // col 1 + *p1++ = p1ap3_0 + p2[0] + p4[0]; + *p1++ = p1ap3_1 + p2[1] + p4[1]; + + // Twiddle factors are ones + *p2++ = t2[0]; + *p2++ = t2[1]; + *p3++ = t3[0]; + *p3++ = t3[1]; + *p4++ = t4[0]; + *p4++ = t4[1]; + + tw2 += twMod2; + tw3 += twMod3; + tw4 += twMod4; + + for (l = (L - 2) >> 1; l > 0; l-- ) + { + // TOP + p1ap3_0 = p1[0] + p3[0]; + p1sp3_0 = p1[0] - p3[0]; + p1ap3_1 = p1[1] + p3[1]; + p1sp3_1 = p1[1] - p3[1]; + // col 2 + t2[0] = p1sp3_0 + p2[1] - p4[1]; + t2[1] = p1sp3_1 - p2[0] + p4[0]; + // col 3 + t3[0] = p1ap3_0 - p2[0] - p4[0]; + t3[1] = p1ap3_1 - p2[1] - p4[1]; + // col 4 + t4[0] = p1sp3_0 - p2[1] + p4[1]; + t4[1] = p1sp3_1 + p2[0] - p4[0]; + // col 1 - top + *p1++ = p1ap3_0 + p2[0] + p4[0]; + *p1++ = p1ap3_1 + p2[1] + p4[1]; + + // BOTTOM + p1ap3_1 = pEnd1[-1] + pEnd3[-1]; + p1sp3_1 = pEnd1[-1] - pEnd3[-1]; + p1ap3_0 = pEnd1[0] + pEnd3[0]; + p1sp3_0 = pEnd1[0] - pEnd3[0]; + // col 2 + t2[2] = pEnd2[0] - pEnd4[0] + p1sp3_1; + t2[3] = pEnd1[0] - pEnd3[0] - pEnd2[-1] + pEnd4[-1]; + // col 3 + t3[2] = p1ap3_1 - pEnd2[-1] - pEnd4[-1]; + t3[3] = p1ap3_0 - pEnd2[0] - pEnd4[0]; + // col 4 + t4[2] = pEnd2[0] - pEnd4[0] - p1sp3_1; + t4[3] = pEnd4[-1] - pEnd2[-1] - p1sp3_0; + // col 1 - Bottom + *pEnd1-- = p1ap3_0 + pEnd2[0] + pEnd4[0]; + *pEnd1-- = p1ap3_1 + pEnd2[-1] + pEnd4[-1]; + + // COL 2 + // read twiddle factors + twR = *tw2++; + twI = *tw2++; + // multiply by twiddle factors + // let Z1 = a + i(b), Z2 = c + i(d) + // => Z1 * Z2 = (a*c - b*d) + i(b*c + a*d) + + // Top + m0 = t2[0] * twR; + m1 = t2[1] * twI; + m2 = t2[1] * twR; + m3 = t2[0] * twI; + + *p2++ = m0 + m1; + *p2++ = m2 - m3; + // use vertical symmetry col 2 + // 0.9997 - 0.0245i <==> 0.0245 - 0.9997i + // Bottom + m0 = t2[3] * twI; + m1 = t2[2] * twR; + m2 = t2[2] * twI; + m3 = t2[3] * twR; + + *pEnd2-- = m0 - m1; + *pEnd2-- = m2 + m3; + + // COL 3 + twR = tw3[0]; + twI = tw3[1]; + tw3 += twMod3; + // Top + m0 = t3[0] * twR; + m1 = t3[1] * twI; + m2 = t3[1] * twR; + m3 = t3[0] * twI; + + *p3++ = m0 + m1; + *p3++ = m2 - m3; + // use vertical symmetry col 3 + // 0.9988 - 0.0491i <==> -0.9988 - 0.0491i + // Bottom + m0 = -t3[3] * twR; + m1 = t3[2] * twI; + m2 = t3[2] * twR; + m3 = t3[3] * twI; + + *pEnd3-- = m0 - m1; + *pEnd3-- = m3 - m2; + + // COL 4 + twR = tw4[0]; + twI = tw4[1]; + tw4 += twMod4; + // Top + m0 = t4[0] * twR; + m1 = t4[1] * twI; + m2 = t4[1] * twR; + m3 = t4[0] * twI; + + *p4++ = m0 + m1; + *p4++ = m2 - m3; + // use vertical symmetry col 4 + // 0.9973 - 0.0736i <==> -0.0736 + 0.9973i + // Bottom + m0 = t4[3] * twI; + m1 = t4[2] * twR; + m2 = t4[2] * twI; + m3 = t4[3] * twR; + + *pEnd4-- = m0 - m1; + *pEnd4-- = m2 + m3; + } + + //MIDDLE + // Twiddle factors are + // 1.0000 0.7071-0.7071i -1.0000i -0.7071-0.7071i + p1ap3_0 = p1[0] + p3[0]; + p1sp3_0 = p1[0] - p3[0]; + p1ap3_1 = p1[1] + p3[1]; + p1sp3_1 = p1[1] - p3[1]; + + // col 2 + t2[0] = p1sp3_0 + p2[1] - p4[1]; + t2[1] = p1sp3_1 - p2[0] + p4[0]; + // col 3 + t3[0] = p1ap3_0 - p2[0] - p4[0]; + t3[1] = p1ap3_1 - p2[1] - p4[1]; + // col 4 + t4[0] = p1sp3_0 - p2[1] + p4[1]; + t4[1] = p1sp3_1 + p2[0] - p4[0]; + // col 1 - Top + *p1++ = p1ap3_0 + p2[0] + p4[0]; + *p1++ = p1ap3_1 + p2[1] + p4[1]; + + // COL 2 + twR = tw2[0]; + twI = tw2[1]; + + m0 = t2[0] * twR; + m1 = t2[1] * twI; + m2 = t2[1] * twR; + m3 = t2[0] * twI; + + *p2++ = m0 + m1; + *p2++ = m2 - m3; + // COL 3 + twR = tw3[0]; + twI = tw3[1]; + + m0 = t3[0] * twR; + m1 = t3[1] * twI; + m2 = t3[1] * twR; + m3 = t3[0] * twI; + + *p3++ = m0 + m1; + *p3++ = m2 - m3; + // COL 4 + twR = tw4[0]; + twI = tw4[1]; + + m0 = t4[0] * twR; + m1 = t4[1] * twI; + m2 = t4[1] * twR; + m3 = t4[0] * twI; + + *p4++ = m0 + m1; + *p4++ = m2 - m3; + + // first col + arm_radix8_butterfly_f32( pCol1, L, (float32_t *) S->pTwiddle, 4U); + // second col + arm_radix8_butterfly_f32( pCol2, L, (float32_t *) S->pTwiddle, 4U); + // third col + arm_radix8_butterfly_f32( pCol3, L, (float32_t *) S->pTwiddle, 4U); + // fourth col + arm_radix8_butterfly_f32( pCol4, L, (float32_t *) S->pTwiddle, 4U); +} + +/** +* @addtogroup ComplexFFT +* @{ +*/ + +/** +* @details +* @brief Processing function for the floating-point complex FFT. +* @param[in] *S points to an instance of the floating-point CFFT structure. +* @param[in, out] *p1 points to the complex data buffer of size 2*fftLen. Processing occurs in-place. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return none. +*/ + +void arm_cfft_f32( + const arm_cfft_instance_f32 * S, + float32_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + uint32_t L = S->fftLen, l; + float32_t invL, * pSrc; + + if (ifftFlag == 1U) + { + /* Conjugate input data */ + pSrc = p1 + 1; + for(l=0; lpTwiddle, 1); + break; + } + + if ( bitReverseFlag ) + arm_bitreversal_32((uint32_t*)p1,S->bitRevLength,S->pBitRevTable); + + if (ifftFlag == 1U) + { + invL = 1.0f/(float32_t)L; + /* Conjugate and scale output data */ + pSrc = p1; + for(l=0; l2*fftLen. Processing occurs in-place. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return none. +*/ + +void arm_cfft_q15( + const arm_cfft_instance_q15 * S, + q15_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + uint32_t L = S->fftLen; + + if (ifftFlag == 1U) + { + switch (L) + { + case 16: + case 64: + case 256: + case 1024: + case 4096: + arm_radix4_butterfly_inverse_q15 ( p1, L, (q15_t*)S->pTwiddle, 1 ); + break; + + case 32: + case 128: + case 512: + case 2048: + arm_cfft_radix4by2_inverse_q15 ( p1, L, S->pTwiddle ); + break; + } + } + else + { + switch (L) + { + case 16: + case 64: + case 256: + case 1024: + case 4096: + arm_radix4_butterfly_q15 ( p1, L, (q15_t*)S->pTwiddle, 1 ); + break; + + case 32: + case 128: + case 512: + case 2048: + arm_cfft_radix4by2_q15 ( p1, L, S->pTwiddle ); + break; + } + } + + if ( bitReverseFlag ) + arm_bitreversal_16((uint16_t*)p1,S->bitRevLength,S->pBitRevTable); +} + +/** +* @} end of ComplexFFT group +*/ + +void arm_cfft_radix4by2_q15( + q15_t * pSrc, + uint32_t fftLen, + const q15_t * pCoef) +{ + uint32_t i; + uint32_t n2; + q15_t p0, p1, p2, p3; +#if defined (ARM_MATH_DSP) + q31_t T, S, R; + q31_t coeff, out1, out2; + const q15_t *pC = pCoef; + q15_t *pSi = pSrc; + q15_t *pSl = pSrc + fftLen; +#else + uint32_t ia, l; + q15_t xt, yt, cosVal, sinVal; +#endif + + n2 = fftLen >> 1; + +#if defined (ARM_MATH_DSP) + + for (i = n2; i > 0; i--) + { + coeff = _SIMD32_OFFSET(pC); + pC += 2; + + T = _SIMD32_OFFSET(pSi); + T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1 + + S = _SIMD32_OFFSET(pSl); + S = __SHADD16(S, 0); // this is just a SIMD arithmetic shift right by 1 + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSi) = __SHADD16(T, S); + pSi += 2; + + #ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUAD(coeff, R) >> 16; + out2 = __SMUSDX(coeff, R); + + #else + + out1 = __SMUSDX(R, coeff) >> 16U; + out2 = __SMUAD(coeff, R); + + #endif // #ifndef ARM_MATH_BIG_ENDIAN + + _SIMD32_OFFSET(pSl) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSl += 2; + } + +#else // #if defined (ARM_MATH_DSP) + + ia = 0; + for (i = 0; i < n2; i++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia++; + + l = i + n2; + + xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); + pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; + + yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); + pSrc[2 * i + 1] = + ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; + + pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) + + ((int16_t) (((q31_t) yt * sinVal) >> 16))); + + pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) - + ((int16_t) (((q31_t) xt * sinVal) >> 16))); + } + +#endif // #if defined (ARM_MATH_DSP) + + // first col + arm_radix4_butterfly_q15( pSrc, n2, (q15_t*)pCoef, 2U); + // second col + arm_radix4_butterfly_q15( pSrc + fftLen, n2, (q15_t*)pCoef, 2U); + + for (i = 0; i < fftLen >> 1; i++) + { + p0 = pSrc[4*i+0]; + p1 = pSrc[4*i+1]; + p2 = pSrc[4*i+2]; + p3 = pSrc[4*i+3]; + + p0 <<= 1; + p1 <<= 1; + p2 <<= 1; + p3 <<= 1; + + pSrc[4*i+0] = p0; + pSrc[4*i+1] = p1; + pSrc[4*i+2] = p2; + pSrc[4*i+3] = p3; + } +} + +void arm_cfft_radix4by2_inverse_q15( + q15_t * pSrc, + uint32_t fftLen, + const q15_t * pCoef) +{ + uint32_t i; + uint32_t n2; + q15_t p0, p1, p2, p3; +#if defined (ARM_MATH_DSP) + q31_t T, S, R; + q31_t coeff, out1, out2; + const q15_t *pC = pCoef; + q15_t *pSi = pSrc; + q15_t *pSl = pSrc + fftLen; +#else + uint32_t ia, l; + q15_t xt, yt, cosVal, sinVal; +#endif + + n2 = fftLen >> 1; + +#if defined (ARM_MATH_DSP) + + for (i = n2; i > 0; i--) + { + coeff = _SIMD32_OFFSET(pC); + pC += 2; + + T = _SIMD32_OFFSET(pSi); + T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1 + + S = _SIMD32_OFFSET(pSl); + S = __SHADD16(S, 0); // this is just a SIMD arithmetic shift right by 1 + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSi) = __SHADD16(T, S); + pSi += 2; + + #ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUSD(coeff, R) >> 16; + out2 = __SMUADX(coeff, R); + #else + + out1 = __SMUADX(R, coeff) >> 16U; + out2 = __SMUSD(__QSUB(0, coeff), R); + + #endif // #ifndef ARM_MATH_BIG_ENDIAN + + _SIMD32_OFFSET(pSl) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSl += 2; + } + +#else // #if defined (ARM_MATH_DSP) + + ia = 0; + for (i = 0; i < n2; i++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia++; + + l = i + n2; + xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); + pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; + + yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); + pSrc[2 * i + 1] = + ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; + + pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) - + ((int16_t) (((q31_t) yt * sinVal) >> 16))); + + pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) + + ((int16_t) (((q31_t) xt * sinVal) >> 16))); + } + +#endif // #if defined (ARM_MATH_DSP) + + // first col + arm_radix4_butterfly_inverse_q15( pSrc, n2, (q15_t*)pCoef, 2U); + // second col + arm_radix4_butterfly_inverse_q15( pSrc + fftLen, n2, (q15_t*)pCoef, 2U); + + for (i = 0; i < fftLen >> 1; i++) + { + p0 = pSrc[4*i+0]; + p1 = pSrc[4*i+1]; + p2 = pSrc[4*i+2]; + p3 = pSrc[4*i+3]; + + p0 <<= 1; + p1 <<= 1; + p2 <<= 1; + p3 <<= 1; + + pSrc[4*i+0] = p0; + pSrc[4*i+1] = p1; + pSrc[4*i+2] = p2; + pSrc[4*i+3] = p3; + } +} + diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c new file mode 100644 index 0000000..934a3fc --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_q31.c @@ -0,0 +1,252 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_q31.c + * Description: Combined Radix Decimation in Frequency CFFT fixed point processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +extern void arm_radix4_butterfly_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pCoef, + uint32_t twidCoefModifier); + +extern void arm_radix4_butterfly_inverse_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pCoef, + uint32_t twidCoefModifier); + +extern void arm_bitreversal_32( + uint32_t * pSrc, + const uint16_t bitRevLen, + const uint16_t * pBitRevTable); + +void arm_cfft_radix4by2_q31( + q31_t * pSrc, + uint32_t fftLen, + const q31_t * pCoef); + +void arm_cfft_radix4by2_inverse_q31( + q31_t * pSrc, + uint32_t fftLen, + const q31_t * pCoef); + +/** +* @ingroup groupTransforms +*/ + +/** +* @addtogroup ComplexFFT +* @{ +*/ + +/** +* @details +* @brief Processing function for the fixed-point complex FFT in Q31 format. +* @param[in] *S points to an instance of the fixed-point CFFT structure. +* @param[in, out] *p1 points to the complex data buffer of size 2*fftLen. Processing occurs in-place. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return none. +*/ + +void arm_cfft_q31( + const arm_cfft_instance_q31 * S, + q31_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + uint32_t L = S->fftLen; + + if (ifftFlag == 1U) + { + switch (L) + { + case 16: + case 64: + case 256: + case 1024: + case 4096: + arm_radix4_butterfly_inverse_q31 ( p1, L, (q31_t*)S->pTwiddle, 1 ); + break; + + case 32: + case 128: + case 512: + case 2048: + arm_cfft_radix4by2_inverse_q31 ( p1, L, S->pTwiddle ); + break; + } + } + else + { + switch (L) + { + case 16: + case 64: + case 256: + case 1024: + case 4096: + arm_radix4_butterfly_q31 ( p1, L, (q31_t*)S->pTwiddle, 1 ); + break; + + case 32: + case 128: + case 512: + case 2048: + arm_cfft_radix4by2_q31 ( p1, L, S->pTwiddle ); + break; + } + } + + if ( bitReverseFlag ) + arm_bitreversal_32((uint32_t*)p1,S->bitRevLength,S->pBitRevTable); +} + +/** +* @} end of ComplexFFT group +*/ + +void arm_cfft_radix4by2_q31( + q31_t * pSrc, + uint32_t fftLen, + const q31_t * pCoef) +{ + uint32_t i, l; + uint32_t n2, ia; + q31_t xt, yt, cosVal, sinVal; + q31_t p0, p1; + + n2 = fftLen >> 1; + ia = 0; + for (i = 0; i < n2; i++) + { + cosVal = pCoef[2*ia]; + sinVal = pCoef[2*ia + 1]; + ia++; + + l = i + n2; + xt = (pSrc[2 * i] >> 2) - (pSrc[2 * l] >> 2); + pSrc[2 * i] = (pSrc[2 * i] >> 2) + (pSrc[2 * l] >> 2); + + yt = (pSrc[2 * i + 1] >> 2) - (pSrc[2 * l + 1] >> 2); + pSrc[2 * i + 1] = (pSrc[2 * l + 1] >> 2) + (pSrc[2 * i + 1] >> 2); + + mult_32x32_keep32_R(p0, xt, cosVal); + mult_32x32_keep32_R(p1, yt, cosVal); + multAcc_32x32_keep32_R(p0, yt, sinVal); + multSub_32x32_keep32_R(p1, xt, sinVal); + + pSrc[2U * l] = p0 << 1; + pSrc[2U * l + 1U] = p1 << 1; + + } + + // first col + arm_radix4_butterfly_q31( pSrc, n2, (q31_t*)pCoef, 2U); + // second col + arm_radix4_butterfly_q31( pSrc + fftLen, n2, (q31_t*)pCoef, 2U); + + for (i = 0; i < fftLen >> 1; i++) + { + p0 = pSrc[4*i+0]; + p1 = pSrc[4*i+1]; + xt = pSrc[4*i+2]; + yt = pSrc[4*i+3]; + + p0 <<= 1; + p1 <<= 1; + xt <<= 1; + yt <<= 1; + + pSrc[4*i+0] = p0; + pSrc[4*i+1] = p1; + pSrc[4*i+2] = xt; + pSrc[4*i+3] = yt; + } + +} + +void arm_cfft_radix4by2_inverse_q31( + q31_t * pSrc, + uint32_t fftLen, + const q31_t * pCoef) +{ + uint32_t i, l; + uint32_t n2, ia; + q31_t xt, yt, cosVal, sinVal; + q31_t p0, p1; + + n2 = fftLen >> 1; + ia = 0; + for (i = 0; i < n2; i++) + { + cosVal = pCoef[2*ia]; + sinVal = pCoef[2*ia + 1]; + ia++; + + l = i + n2; + xt = (pSrc[2 * i] >> 2) - (pSrc[2 * l] >> 2); + pSrc[2 * i] = (pSrc[2 * i] >> 2) + (pSrc[2 * l] >> 2); + + yt = (pSrc[2 * i + 1] >> 2) - (pSrc[2 * l + 1] >> 2); + pSrc[2 * i + 1] = (pSrc[2 * l + 1] >> 2) + (pSrc[2 * i + 1] >> 2); + + mult_32x32_keep32_R(p0, xt, cosVal); + mult_32x32_keep32_R(p1, yt, cosVal); + multSub_32x32_keep32_R(p0, yt, sinVal); + multAcc_32x32_keep32_R(p1, xt, sinVal); + + pSrc[2U * l] = p0 << 1; + pSrc[2U * l + 1U] = p1 << 1; + + } + + // first col + arm_radix4_butterfly_inverse_q31( pSrc, n2, (q31_t*)pCoef, 2U); + // second col + arm_radix4_butterfly_inverse_q31( pSrc + fftLen, n2, (q31_t*)pCoef, 2U); + + for (i = 0; i < fftLen >> 1; i++) + { + p0 = pSrc[4*i+0]; + p1 = pSrc[4*i+1]; + xt = pSrc[4*i+2]; + yt = pSrc[4*i+3]; + + p0 <<= 1; + p1 <<= 1; + xt <<= 1; + yt <<= 1; + + pSrc[4*i+0] = p0; + pSrc[4*i+1] = p1; + pSrc[4*i+2] = xt; + pSrc[4*i+3] = yt; + } +} + diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c new file mode 100644 index 0000000..45bcc3b --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_f32.c @@ -0,0 +1,472 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix2_f32.c + * Description: Radix-2 Decimation in Frequency CFFT & CIFFT Floating point processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +void arm_radix2_butterfly_f32( + float32_t * pSrc, + uint32_t fftLen, + float32_t * pCoef, + uint16_t twidCoefModifier); + +void arm_radix2_butterfly_inverse_f32( + float32_t * pSrc, + uint32_t fftLen, + float32_t * pCoef, + uint16_t twidCoefModifier, + float32_t onebyfftLen); + +extern void arm_bitreversal_f32( + float32_t * pSrc, + uint16_t fftSize, + uint16_t bitRevFactor, + uint16_t * pBitRevTab); + +/** +* @ingroup groupTransforms +*/ + +/** +* @addtogroup ComplexFFT +* @{ +*/ + +/** +* @details +* @brief Radix-2 CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_f32 and will be removed +* in the future. +* @param[in] *S points to an instance of the floating-point Radix-2 CFFT/CIFFT structure. +* @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. +* @return none. +*/ + +void arm_cfft_radix2_f32( +const arm_cfft_radix2_instance_f32 * S, +float32_t * pSrc) +{ + + if (S->ifftFlag == 1U) + { + /* Complex IFFT radix-2 */ + arm_radix2_butterfly_inverse_f32(pSrc, S->fftLen, S->pTwiddle, + S->twidCoefModifier, S->onebyfftLen); + } + else + { + /* Complex FFT radix-2 */ + arm_radix2_butterfly_f32(pSrc, S->fftLen, S->pTwiddle, + S->twidCoefModifier); + } + + if (S->bitReverseFlag == 1U) + { + /* Bit Reversal */ + arm_bitreversal_f32(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); + } + +} + + +/** +* @} end of ComplexFFT group +*/ + + + +/* ---------------------------------------------------------------------- +** Internal helper function used by the FFTs +** ------------------------------------------------------------------- */ + +/* +* @brief Core function for the floating-point CFFT butterfly process. +* @param[in, out] *pSrc points to the in-place buffer of floating-point data type. +* @param[in] fftLen length of the FFT. +* @param[in] *pCoef points to the twiddle coefficient buffer. +* @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. +* @return none. +*/ + +void arm_radix2_butterfly_f32( +float32_t * pSrc, +uint32_t fftLen, +float32_t * pCoef, +uint16_t twidCoefModifier) +{ + + uint32_t i, j, k, l; + uint32_t n1, n2, ia; + float32_t xt, yt, cosVal, sinVal; + float32_t p0, p1, p2, p3; + float32_t a0, a1; + +#if defined (ARM_MATH_DSP) + + /* Initializations for the first stage */ + n2 = fftLen >> 1; + ia = 0; + i = 0; + + // loop for groups + for (k = n2; k > 0; k--) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + + /* Twiddle coefficients index modifier */ + ia += twidCoefModifier; + + /* index calculation for the input as, */ + /* pSrc[i + 0], pSrc[i + fftLen/1] */ + l = i + n2; + + /* Butterfly implementation */ + a0 = pSrc[2 * i] + pSrc[2 * l]; + xt = pSrc[2 * i] - pSrc[2 * l]; + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; + + p0 = xt * cosVal; + p1 = yt * sinVal; + p2 = yt * cosVal; + p3 = xt * sinVal; + + pSrc[2 * i] = a0; + pSrc[2 * i + 1] = a1; + + pSrc[2 * l] = p0 + p1; + pSrc[2 * l + 1] = p2 - p3; + + i++; + } // groups loop end + + twidCoefModifier <<= 1U; + + // loop for stage + for (k = n2; k > 2; k = k >> 1) + { + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + j = 0; + do + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia += twidCoefModifier; + + // loop for butterfly + i = j; + do + { + l = i + n2; + a0 = pSrc[2 * i] + pSrc[2 * l]; + xt = pSrc[2 * i] - pSrc[2 * l]; + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; + + p0 = xt * cosVal; + p1 = yt * sinVal; + p2 = yt * cosVal; + p3 = xt * sinVal; + + pSrc[2 * i] = a0; + pSrc[2 * i + 1] = a1; + + pSrc[2 * l] = p0 + p1; + pSrc[2 * l + 1] = p2 - p3; + + i += n1; + } while ( i < fftLen ); // butterfly loop end + j++; + } while ( j < n2); // groups loop end + twidCoefModifier <<= 1U; + } // stages loop end + + // loop for butterfly + for (i = 0; i < fftLen; i += 2) + { + a0 = pSrc[2 * i] + pSrc[2 * i + 2]; + xt = pSrc[2 * i] - pSrc[2 * i + 2]; + + yt = pSrc[2 * i + 1] - pSrc[2 * i + 3]; + a1 = pSrc[2 * i + 3] + pSrc[2 * i + 1]; + + pSrc[2 * i] = a0; + pSrc[2 * i + 1] = a1; + pSrc[2 * i + 2] = xt; + pSrc[2 * i + 3] = yt; + } // groups loop end + +#else + + n2 = fftLen; + + // loop for stage + for (k = fftLen; k > 1; k = k >> 1) + { + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + j = 0; + do + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia += twidCoefModifier; + + // loop for butterfly + i = j; + do + { + l = i + n2; + a0 = pSrc[2 * i] + pSrc[2 * l]; + xt = pSrc[2 * i] - pSrc[2 * l]; + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; + + p0 = xt * cosVal; + p1 = yt * sinVal; + p2 = yt * cosVal; + p3 = xt * sinVal; + + pSrc[2 * i] = a0; + pSrc[2 * i + 1] = a1; + + pSrc[2 * l] = p0 + p1; + pSrc[2 * l + 1] = p2 - p3; + + i += n1; + } while (i < fftLen); + j++; + } while (j < n2); + twidCoefModifier <<= 1U; + } + +#endif // #if defined (ARM_MATH_DSP) + +} + + +void arm_radix2_butterfly_inverse_f32( +float32_t * pSrc, +uint32_t fftLen, +float32_t * pCoef, +uint16_t twidCoefModifier, +float32_t onebyfftLen) +{ + + uint32_t i, j, k, l; + uint32_t n1, n2, ia; + float32_t xt, yt, cosVal, sinVal; + float32_t p0, p1, p2, p3; + float32_t a0, a1; + +#if defined (ARM_MATH_DSP) + + n2 = fftLen >> 1; + ia = 0; + + // loop for groups + for (i = 0; i < n2; i++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia += twidCoefModifier; + + l = i + n2; + a0 = pSrc[2 * i] + pSrc[2 * l]; + xt = pSrc[2 * i] - pSrc[2 * l]; + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; + + p0 = xt * cosVal; + p1 = yt * sinVal; + p2 = yt * cosVal; + p3 = xt * sinVal; + + pSrc[2 * i] = a0; + pSrc[2 * i + 1] = a1; + + pSrc[2 * l] = p0 - p1; + pSrc[2 * l + 1] = p2 + p3; + } // groups loop end + + twidCoefModifier <<= 1U; + + // loop for stage + for (k = fftLen / 2; k > 2; k = k >> 1) + { + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + j = 0; + do + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia += twidCoefModifier; + + // loop for butterfly + i = j; + do + { + l = i + n2; + a0 = pSrc[2 * i] + pSrc[2 * l]; + xt = pSrc[2 * i] - pSrc[2 * l]; + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; + + p0 = xt * cosVal; + p1 = yt * sinVal; + p2 = yt * cosVal; + p3 = xt * sinVal; + + pSrc[2 * i] = a0; + pSrc[2 * i + 1] = a1; + + pSrc[2 * l] = p0 - p1; + pSrc[2 * l + 1] = p2 + p3; + + i += n1; + } while ( i < fftLen ); // butterfly loop end + j++; + } while (j < n2); // groups loop end + + twidCoefModifier <<= 1U; + } // stages loop end + + // loop for butterfly + for (i = 0; i < fftLen; i += 2) + { + a0 = pSrc[2 * i] + pSrc[2 * i + 2]; + xt = pSrc[2 * i] - pSrc[2 * i + 2]; + + a1 = pSrc[2 * i + 3] + pSrc[2 * i + 1]; + yt = pSrc[2 * i + 1] - pSrc[2 * i + 3]; + + p0 = a0 * onebyfftLen; + p2 = xt * onebyfftLen; + p1 = a1 * onebyfftLen; + p3 = yt * onebyfftLen; + + pSrc[2 * i] = p0; + pSrc[2 * i + 1] = p1; + pSrc[2 * i + 2] = p2; + pSrc[2 * i + 3] = p3; + } // butterfly loop end + +#else + + n2 = fftLen; + + // loop for stage + for (k = fftLen; k > 2; k = k >> 1) + { + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + j = 0; + do + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + // loop for butterfly + i = j; + do + { + l = i + n2; + a0 = pSrc[2 * i] + pSrc[2 * l]; + xt = pSrc[2 * i] - pSrc[2 * l]; + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; + + p0 = xt * cosVal; + p1 = yt * sinVal; + p2 = yt * cosVal; + p3 = xt * sinVal; + + pSrc[2 * i] = a0; + pSrc[2 * i + 1] = a1; + + pSrc[2 * l] = p0 - p1; + pSrc[2 * l + 1] = p2 + p3; + + i += n1; + } while ( i < fftLen ); // butterfly loop end + j++; + } while ( j < n2 ); // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + } // stages loop end + + n1 = n2; + n2 = n2 >> 1; + + // loop for butterfly + for (i = 0; i < fftLen; i += n1) + { + l = i + n2; + + a0 = pSrc[2 * i] + pSrc[2 * l]; + xt = pSrc[2 * i] - pSrc[2 * l]; + + a1 = pSrc[2 * l + 1] + pSrc[2 * i + 1]; + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + + p0 = a0 * onebyfftLen; + p2 = xt * onebyfftLen; + p1 = a1 * onebyfftLen; + p3 = yt * onebyfftLen; + + pSrc[2 * i] = p0; + pSrc[2U * l] = p2; + + pSrc[2 * i + 1] = p1; + pSrc[2U * l + 1U] = p3; + } // butterfly loop end + +#endif // #if defined (ARM_MATH_DSP) + +} diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c new file mode 100644 index 0000000..0f423eb --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_f32.c @@ -0,0 +1,192 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix2_init_f32.c + * Description: Radix-2 Decimation in Frequency Floating-point CFFT & CIFFT Initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup ComplexFFT + * @{ + */ + +/** +* @brief Initialization function for the floating-point CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_f32 and will be removed +* in the future. +* @param[in,out] *S points to an instance of the floating-point CFFT/CIFFT structure. +* @param[in] fftLen length of the FFT. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. +* +* \par Description: +* \par +* The parameter ifftFlag controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. +* \par +* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. +*/ +arm_status arm_cfft_radix2_init_f32( + arm_cfft_radix2_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialise the FFT length */ + S->fftLen = fftLen; + + /* Initialise the Twiddle coefficient pointer */ + S->pTwiddle = (float32_t *) twiddleCoef; + + /* Initialise the Flag for selection of CFFT or CIFFT */ + S->ifftFlag = ifftFlag; + + /* Initialise the Flag for calculation Bit reversal or not */ + S->bitReverseFlag = bitReverseFlag; + + /* Initializations of structure parameters depending on the FFT length */ + switch (S->fftLen) + { + + case 4096U: + /* Initializations of structure parameters for 4096 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 1U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 1U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) armBitRevTable; + /* Initialise the 1/fftLen Value */ + S->onebyfftLen = 0.000244140625; + break; + + case 2048U: + /* Initializations of structure parameters for 2048 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 2U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 2U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) & armBitRevTable[1]; + /* Initialise the 1/fftLen Value */ + S->onebyfftLen = 0.00048828125; + break; + + case 1024U: + /* Initializations of structure parameters for 1024 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 4U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 4U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; + /* Initialise the 1/fftLen Value */ + S->onebyfftLen = 0.0009765625f; + break; + + case 512U: + /* Initializations of structure parameters for 512 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 8U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 8U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) & armBitRevTable[7]; + /* Initialise the 1/fftLen Value */ + S->onebyfftLen = 0.001953125; + break; + + case 256U: + /* Initializations of structure parameters for 256 point FFT */ + S->twidCoefModifier = 16U; + S->bitRevFactor = 16U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; + S->onebyfftLen = 0.00390625f; + break; + + case 128U: + /* Initializations of structure parameters for 128 point FFT */ + S->twidCoefModifier = 32U; + S->bitRevFactor = 32U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[31]; + S->onebyfftLen = 0.0078125; + break; + + case 64U: + /* Initializations of structure parameters for 64 point FFT */ + S->twidCoefModifier = 64U; + S->bitRevFactor = 64U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; + S->onebyfftLen = 0.015625f; + break; + + case 32U: + /* Initializations of structure parameters for 64 point FFT */ + S->twidCoefModifier = 128U; + S->bitRevFactor = 128U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[127]; + S->onebyfftLen = 0.03125; + break; + + case 16U: + /* Initializations of structure parameters for 16 point FFT */ + S->twidCoefModifier = 256U; + S->bitRevFactor = 256U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; + S->onebyfftLen = 0.0625f; + break; + + + default: + /* Reporting argument error if fftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + return (status); +} + +/** + * @} end of ComplexFFT group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c new file mode 100644 index 0000000..54f4e84 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q15.c @@ -0,0 +1,177 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix2_init_q15.c + * Description: Radix-2 Decimation in Frequency Q15 FFT & IFFT initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupTransforms + */ + + +/** + * @addtogroup ComplexFFT + * @{ + */ + +/** +* @brief Initialization function for the Q15 CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed +* @param[in,out] *S points to an instance of the Q15 CFFT/CIFFT structure. +* @param[in] fftLen length of the FFT. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. +* +* \par Description: +* \par +* The parameter ifftFlag controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. +* \par +* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. +*/ + +arm_status arm_cfft_radix2_init_q15( + arm_cfft_radix2_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialise the FFT length */ + S->fftLen = fftLen; + + /* Initialise the Twiddle coefficient pointer */ + S->pTwiddle = (q15_t *) twiddleCoef_4096_q15; + /* Initialise the Flag for selection of CFFT or CIFFT */ + S->ifftFlag = ifftFlag; + /* Initialise the Flag for calculation Bit reversal or not */ + S->bitReverseFlag = bitReverseFlag; + + /* Initializations of structure parameters depending on the FFT length */ + switch (S->fftLen) + { + case 4096U: + /* Initializations of structure parameters for 4096 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 1U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 1U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) armBitRevTable; + + break; + + case 2048U: + /* Initializations of structure parameters for 2048 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 2U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 2U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) & armBitRevTable[1]; + + break; + + case 1024U: + /* Initializations of structure parameters for 1024 point FFT */ + S->twidCoefModifier = 4U; + S->bitRevFactor = 4U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; + + break; + + case 512U: + /* Initializations of structure parameters for 512 point FFT */ + S->twidCoefModifier = 8U; + S->bitRevFactor = 8U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[7]; + + break; + + case 256U: + /* Initializations of structure parameters for 256 point FFT */ + S->twidCoefModifier = 16U; + S->bitRevFactor = 16U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; + + break; + + case 128U: + /* Initializations of structure parameters for 128 point FFT */ + S->twidCoefModifier = 32U; + S->bitRevFactor = 32U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[31]; + + break; + + case 64U: + /* Initializations of structure parameters for 64 point FFT */ + S->twidCoefModifier = 64U; + S->bitRevFactor = 64U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; + + break; + + case 32U: + /* Initializations of structure parameters for 32 point FFT */ + S->twidCoefModifier = 128U; + S->bitRevFactor = 128U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[127]; + + break; + + case 16U: + /* Initializations of structure parameters for 16 point FFT */ + S->twidCoefModifier = 256U; + S->bitRevFactor = 256U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; + + break; + + default: + /* Reporting argument error if fftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + return (status); +} + +/** + * @} end of ComplexFFT group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c new file mode 100644 index 0000000..41ad965 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_init_q31.c @@ -0,0 +1,174 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix2_init_q31.c + * Description: Radix-2 Decimation in Frequency Fixed-point CFFT & CIFFT Initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup ComplexFFT + * @{ + */ + + +/** +* +* @brief Initialization function for the Q31 CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed +* @param[in,out] *S points to an instance of the Q31 CFFT/CIFFT structure. +* @param[in] fftLen length of the FFT. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. +* +* \par Description: +* \par +* The parameter ifftFlag controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. +* \par +* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. +*/ + +arm_status arm_cfft_radix2_init_q31( + arm_cfft_radix2_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialise the FFT length */ + S->fftLen = fftLen; + + /* Initialise the Twiddle coefficient pointer */ + S->pTwiddle = (q31_t *) twiddleCoef_4096_q31; + /* Initialise the Flag for selection of CFFT or CIFFT */ + S->ifftFlag = ifftFlag; + /* Initialise the Flag for calculation Bit reversal or not */ + S->bitReverseFlag = bitReverseFlag; + + /* Initializations of Instance structure depending on the FFT length */ + switch (S->fftLen) + { + /* Initializations of structure parameters for 4096 point FFT */ + case 4096U: + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 1U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 1U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) armBitRevTable; + break; + + /* Initializations of structure parameters for 2048 point FFT */ + case 2048U: + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 2U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 2U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) & armBitRevTable[1]; + break; + + /* Initializations of structure parameters for 1024 point FFT */ + case 1024U: + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 4U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 4U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; + break; + + /* Initializations of structure parameters for 512 point FFT */ + case 512U: + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 8U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 8U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) & armBitRevTable[7]; + break; + + case 256U: + /* Initializations of structure parameters for 256 point FFT */ + S->twidCoefModifier = 16U; + S->bitRevFactor = 16U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; + break; + + case 128U: + /* Initializations of structure parameters for 128 point FFT */ + S->twidCoefModifier = 32U; + S->bitRevFactor = 32U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[31]; + break; + + case 64U: + /* Initializations of structure parameters for 64 point FFT */ + S->twidCoefModifier = 64U; + S->bitRevFactor = 64U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; + break; + + case 32U: + /* Initializations of structure parameters for 32 point FFT */ + S->twidCoefModifier = 128U; + S->bitRevFactor = 128U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[127]; + break; + + case 16U: + /* Initializations of structure parameters for 16 point FFT */ + S->twidCoefModifier = 256U; + S->bitRevFactor = 256U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; + break; + + + default: + /* Reporting argument error if fftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + return (status); +} + +/** + * @} end of ComplexFFT group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c new file mode 100644 index 0000000..c7a9bdf --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q15.c @@ -0,0 +1,729 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix2_q15.c + * Description: Radix-2 Decimation in Frequency CFFT & CIFFT Fixed point processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +void arm_radix2_butterfly_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pCoef, + uint16_t twidCoefModifier); + +void arm_radix2_butterfly_inverse_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pCoef, + uint16_t twidCoefModifier); + +void arm_bitreversal_q15( + q15_t * pSrc, + uint32_t fftLen, + uint16_t bitRevFactor, + uint16_t * pBitRevTab); + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup ComplexFFT + * @{ + */ + +/** + * @details + * @brief Processing function for the fixed-point CFFT/CIFFT. + * @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed + * @param[in] *S points to an instance of the fixed-point CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. + * @return none. + */ + +void arm_cfft_radix2_q15( + const arm_cfft_radix2_instance_q15 * S, + q15_t * pSrc) +{ + + if (S->ifftFlag == 1U) + { + arm_radix2_butterfly_inverse_q15(pSrc, S->fftLen, + S->pTwiddle, S->twidCoefModifier); + } + else + { + arm_radix2_butterfly_q15(pSrc, S->fftLen, + S->pTwiddle, S->twidCoefModifier); + } + + arm_bitreversal_q15(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); +} + +/** + * @} end of ComplexFFT group + */ + +void arm_radix2_butterfly_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pCoef, + uint16_t twidCoefModifier) +{ +#if defined (ARM_MATH_DSP) + + unsigned i, j, k, l; + unsigned n1, n2, ia; + q15_t in; + q31_t T, S, R; + q31_t coeff, out1, out2; + + //N = fftLen; + n2 = fftLen; + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (i = 0; i < n2; i++) + { + coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); + + ia = ia + twidCoefModifier; + + l = i + n2; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + in = ((int16_t) (T & 0xFFFF)) >> 1; + T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + in = ((int16_t) (S & 0xFFFF)) >> 1; + S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUAD(coeff, R) >> 16; + out2 = __SMUSDX(coeff, R); + +#else + + out1 = __SMUSDX(R, coeff) >> 16U; + out2 = __SMUAD(coeff, R); + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + _SIMD32_OFFSET(pSrc + (2U * l)) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); + + ia = ia + twidCoefModifier; + + // loop for butterfly + i++; + l++; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + in = ((int16_t) (T & 0xFFFF)) >> 1; + T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + in = ((int16_t) (S & 0xFFFF)) >> 1; + S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUAD(coeff, R) >> 16; + out2 = __SMUSDX(coeff, R); + +#else + + out1 = __SMUSDX(R, coeff) >> 16U; + out2 = __SMUAD(coeff, R); + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + _SIMD32_OFFSET(pSrc + (2U * l)) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + + // loop for stage + for (k = fftLen / 2; k > 2; k = k >> 1) + { + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (j = 0; j < n2; j++) + { + coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); + + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = j; i < fftLen; i += n1) + { + l = i + n2; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUAD(coeff, R) >> 16; + out2 = __SMUSDX(coeff, R); + +#else + + out1 = __SMUSDX(R, coeff) >> 16U; + out2 = __SMUAD(coeff, R); + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + _SIMD32_OFFSET(pSrc + (2U * l)) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + i += n1; + + l = i + n2; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUAD(coeff, R) >> 16; + out2 = __SMUSDX(coeff, R); + +#else + + out1 = __SMUSDX(R, coeff) >> 16U; + out2 = __SMUAD(coeff, R); + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + _SIMD32_OFFSET(pSrc + (2U * l)) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + } // butterfly loop end + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + } // stages loop end + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); + + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = 0; i < fftLen; i += n1) + { + l = i + n2; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __QADD16(T, S); + + _SIMD32_OFFSET(pSrc + (2U * l)) = R; + + i += n1; + l = i + n2; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __QADD16(T, S); + + _SIMD32_OFFSET(pSrc + (2U * l)) = R; + + } // groups loop end + + +#else + + unsigned i, j, k, l; + unsigned n1, n2, ia; + q15_t xt, yt, cosVal, sinVal; + + + //N = fftLen; + n2 = fftLen; + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (j = 0; j < n2; j++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = j; i < fftLen; i += n1) + { + l = i + n2; + xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); + pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; + + yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); + pSrc[2 * i + 1] = + ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; + + pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) + + ((int16_t) (((q31_t) yt * sinVal) >> 16))); + + pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) - + ((int16_t) (((q31_t) xt * sinVal) >> 16))); + + } // butterfly loop end + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + + // loop for stage + for (k = fftLen / 2; k > 2; k = k >> 1) + { + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (j = 0; j < n2; j++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = j; i < fftLen; i += n1) + { + l = i + n2; + xt = pSrc[2 * i] - pSrc[2 * l]; + pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U; + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U; + + pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) + + ((int16_t) (((q31_t) yt * sinVal) >> 16))); + + pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) - + ((int16_t) (((q31_t) xt * sinVal) >> 16))); + + } // butterfly loop end + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + } // stages loop end + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (j = 0; j < n2; j++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = j; i < fftLen; i += n1) + { + l = i + n2; + xt = pSrc[2 * i] - pSrc[2 * l]; + pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); + + pSrc[2U * l] = xt; + + pSrc[2U * l + 1U] = yt; + + } // butterfly loop end + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + +#endif // #if defined (ARM_MATH_DSP) + +} + + +void arm_radix2_butterfly_inverse_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pCoef, + uint16_t twidCoefModifier) +{ +#if defined (ARM_MATH_DSP) + + unsigned i, j, k, l; + unsigned n1, n2, ia; + q15_t in; + q31_t T, S, R; + q31_t coeff, out1, out2; + + //N = fftLen; + n2 = fftLen; + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (i = 0; i < n2; i++) + { + coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); + + ia = ia + twidCoefModifier; + + l = i + n2; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + in = ((int16_t) (T & 0xFFFF)) >> 1; + T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + in = ((int16_t) (S & 0xFFFF)) >> 1; + S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUSD(coeff, R) >> 16; + out2 = __SMUADX(coeff, R); +#else + + out1 = __SMUADX(R, coeff) >> 16U; + out2 = __SMUSD(__QSUB(0, coeff), R); + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + _SIMD32_OFFSET(pSrc + (2U * l)) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); + + ia = ia + twidCoefModifier; + + // loop for butterfly + i++; + l++; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + in = ((int16_t) (T & 0xFFFF)) >> 1; + T = ((T >> 1) & 0xFFFF0000) | (in & 0xFFFF); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + in = ((int16_t) (S & 0xFFFF)) >> 1; + S = ((S >> 1) & 0xFFFF0000) | (in & 0xFFFF); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUSD(coeff, R) >> 16; + out2 = __SMUADX(coeff, R); +#else + + out1 = __SMUADX(R, coeff) >> 16U; + out2 = __SMUSD(__QSUB(0, coeff), R); + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + _SIMD32_OFFSET(pSrc + (2U * l)) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + + // loop for stage + for (k = fftLen / 2; k > 2; k = k >> 1) + { + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (j = 0; j < n2; j++) + { + coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); + + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = j; i < fftLen; i += n1) + { + l = i + n2; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUSD(coeff, R) >> 16; + out2 = __SMUADX(coeff, R); + +#else + + out1 = __SMUADX(R, coeff) >> 16U; + out2 = __SMUSD(__QSUB(0, coeff), R); + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + _SIMD32_OFFSET(pSrc + (2U * l)) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + i += n1; + + l = i + n2; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __SHADD16(T, S); + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUSD(coeff, R) >> 16; + out2 = __SMUADX(coeff, R); +#else + + out1 = __SMUADX(R, coeff) >> 16U; + out2 = __SMUSD(__QSUB(0, coeff), R); + +#endif // #ifndef ARM_MATH_BIG_ENDIAN + + _SIMD32_OFFSET(pSrc + (2U * l)) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + + } // butterfly loop end + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + } // stages loop end + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (j = 0; j < n2; j++) + { + coeff = _SIMD32_OFFSET(pCoef + (ia * 2U)); + + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = j; i < fftLen; i += n1) + { + l = i + n2; + + T = _SIMD32_OFFSET(pSrc + (2 * i)); + + S = _SIMD32_OFFSET(pSrc + (2 * l)); + + R = __QSUB16(T, S); + + _SIMD32_OFFSET(pSrc + (2 * i)) = __QADD16(T, S); + + _SIMD32_OFFSET(pSrc + (2U * l)) = R; + + } // butterfly loop end + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + +#else + + + unsigned i, j, k, l; + unsigned n1, n2, ia; + q15_t xt, yt, cosVal, sinVal; + + //N = fftLen; + n2 = fftLen; + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (j = 0; j < n2; j++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = j; i < fftLen; i += n1) + { + l = i + n2; + xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); + pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; + + yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); + pSrc[2 * i + 1] = + ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; + + pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) - + ((int16_t) (((q31_t) yt * sinVal) >> 16))); + + pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) + + ((int16_t) (((q31_t) xt * sinVal) >> 16))); + + } // butterfly loop end + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + + // loop for stage + for (k = fftLen / 2; k > 2; k = k >> 1) + { + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (j = 0; j < n2; j++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = j; i < fftLen; i += n1) + { + l = i + n2; + xt = pSrc[2 * i] - pSrc[2 * l]; + pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U; + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U; + + pSrc[2U * l] = (((int16_t) (((q31_t) xt * cosVal) >> 16)) - + ((int16_t) (((q31_t) yt * sinVal) >> 16))); + + pSrc[2U * l + 1U] = (((int16_t) (((q31_t) yt * cosVal) >> 16)) + + ((int16_t) (((q31_t) xt * sinVal) >> 16))); + + } // butterfly loop end + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + } // stages loop end + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = 0; i < fftLen; i += n1) + { + l = i + n2; + xt = pSrc[2 * i] - pSrc[2 * l]; + pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); + + pSrc[2U * l] = xt; + + pSrc[2U * l + 1U] = yt; + + } // groups loop end + + +#endif // #if defined (ARM_MATH_DSP) + +} diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c new file mode 100644 index 0000000..e69400c --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix2_q31.c @@ -0,0 +1,338 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix2_q31.c + * Description: Radix-2 Decimation in Frequency CFFT & CIFFT Fixed point processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +void arm_radix2_butterfly_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pCoef, + uint16_t twidCoefModifier); + +void arm_radix2_butterfly_inverse_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pCoef, + uint16_t twidCoefModifier); + +void arm_bitreversal_q31( + q31_t * pSrc, + uint32_t fftLen, + uint16_t bitRevFactor, + uint16_t * pBitRevTab); + +/** +* @ingroup groupTransforms +*/ + +/** +* @addtogroup ComplexFFT +* @{ +*/ + +/** +* @details +* @brief Processing function for the fixed-point CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed +* @param[in] *S points to an instance of the fixed-point CFFT/CIFFT structure. +* @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. +* @return none. +*/ + +void arm_cfft_radix2_q31( +const arm_cfft_radix2_instance_q31 * S, +q31_t * pSrc) +{ + + if (S->ifftFlag == 1U) + { + arm_radix2_butterfly_inverse_q31(pSrc, S->fftLen, + S->pTwiddle, S->twidCoefModifier); + } + else + { + arm_radix2_butterfly_q31(pSrc, S->fftLen, + S->pTwiddle, S->twidCoefModifier); + } + + arm_bitreversal_q31(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); +} + +/** +* @} end of ComplexFFT group +*/ + +void arm_radix2_butterfly_q31( +q31_t * pSrc, +uint32_t fftLen, +q31_t * pCoef, +uint16_t twidCoefModifier) +{ + + unsigned i, j, k, l, m; + unsigned n1, n2, ia; + q31_t xt, yt, cosVal, sinVal; + q31_t p0, p1; + + //N = fftLen; + n2 = fftLen; + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (i = 0; i < n2; i++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + l = i + n2; + xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); + pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; + + yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); + pSrc[2 * i + 1] = + ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; + + mult_32x32_keep32_R(p0, xt, cosVal); + mult_32x32_keep32_R(p1, yt, cosVal); + multAcc_32x32_keep32_R(p0, yt, sinVal); + multSub_32x32_keep32_R(p1, xt, sinVal); + + pSrc[2U * l] = p0; + pSrc[2U * l + 1U] = p1; + + } // groups loop end + + twidCoefModifier <<= 1U; + + // loop for stage + for (k = fftLen / 2; k > 2; k = k >> 1) + { + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (j = 0; j < n2; j++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + // loop for butterfly + i = j; + m = fftLen / n1; + do + { + l = i + n2; + xt = pSrc[2 * i] - pSrc[2 * l]; + pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U; + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U; + + mult_32x32_keep32_R(p0, xt, cosVal); + mult_32x32_keep32_R(p1, yt, cosVal); + multAcc_32x32_keep32_R(p0, yt, sinVal); + multSub_32x32_keep32_R(p1, xt, sinVal); + + pSrc[2U * l] = p0; + pSrc[2U * l + 1U] = p1; + i += n1; + m--; + } while ( m > 0); // butterfly loop end + + } // groups loop end + + twidCoefModifier <<= 1U; + } // stages loop end + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = 0; i < fftLen; i += n1) + { + l = i + n2; + xt = pSrc[2 * i] - pSrc[2 * l]; + pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); + + pSrc[2U * l] = xt; + + pSrc[2U * l + 1U] = yt; + + i += n1; + l = i + n2; + + xt = pSrc[2 * i] - pSrc[2 * l]; + pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); + + pSrc[2U * l] = xt; + + pSrc[2U * l + 1U] = yt; + + } // butterfly loop end + +} + + +void arm_radix2_butterfly_inverse_q31( +q31_t * pSrc, +uint32_t fftLen, +q31_t * pCoef, +uint16_t twidCoefModifier) +{ + + unsigned i, j, k, l; + unsigned n1, n2, ia; + q31_t xt, yt, cosVal, sinVal; + q31_t p0, p1; + + //N = fftLen; + n2 = fftLen; + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (i = 0; i < n2; i++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + l = i + n2; + xt = (pSrc[2 * i] >> 1U) - (pSrc[2 * l] >> 1U); + pSrc[2 * i] = ((pSrc[2 * i] >> 1U) + (pSrc[2 * l] >> 1U)) >> 1U; + + yt = (pSrc[2 * i + 1] >> 1U) - (pSrc[2 * l + 1] >> 1U); + pSrc[2 * i + 1] = + ((pSrc[2 * l + 1] >> 1U) + (pSrc[2 * i + 1] >> 1U)) >> 1U; + + mult_32x32_keep32_R(p0, xt, cosVal); + mult_32x32_keep32_R(p1, yt, cosVal); + multSub_32x32_keep32_R(p0, yt, sinVal); + multAcc_32x32_keep32_R(p1, xt, sinVal); + + pSrc[2U * l] = p0; + pSrc[2U * l + 1U] = p1; + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + + // loop for stage + for (k = fftLen / 2; k > 2; k = k >> 1) + { + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + // loop for groups + for (j = 0; j < n2; j++) + { + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = j; i < fftLen; i += n1) + { + l = i + n2; + xt = pSrc[2 * i] - pSrc[2 * l]; + pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]) >> 1U; + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]) >> 1U; + + mult_32x32_keep32_R(p0, xt, cosVal); + mult_32x32_keep32_R(p1, yt, cosVal); + multSub_32x32_keep32_R(p0, yt, sinVal); + multAcc_32x32_keep32_R(p1, xt, sinVal); + + pSrc[2U * l] = p0; + pSrc[2U * l + 1U] = p1; + } // butterfly loop end + + } // groups loop end + + twidCoefModifier = twidCoefModifier << 1U; + } // stages loop end + + n1 = n2; + n2 = n2 >> 1; + ia = 0; + + cosVal = pCoef[ia * 2]; + sinVal = pCoef[(ia * 2) + 1]; + ia = ia + twidCoefModifier; + + // loop for butterfly + for (i = 0; i < fftLen; i += n1) + { + l = i + n2; + xt = pSrc[2 * i] - pSrc[2 * l]; + pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); + + pSrc[2U * l] = xt; + + pSrc[2U * l + 1U] = yt; + + i += n1; + l = i + n2; + + xt = pSrc[2 * i] - pSrc[2 * l]; + pSrc[2 * i] = (pSrc[2 * i] + pSrc[2 * l]); + + yt = pSrc[2 * i + 1] - pSrc[2 * l + 1]; + pSrc[2 * i + 1] = (pSrc[2 * l + 1] + pSrc[2 * i + 1]); + + pSrc[2U * l] = xt; + + pSrc[2U * l + 1U] = yt; + + } // butterfly loop end + +} diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c new file mode 100644 index 0000000..dbbcca7 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_f32.c @@ -0,0 +1,1209 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix4_f32.c + * Description: Radix-4 Decimation in Frequency CFFT & CIFFT Floating point processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +extern void arm_bitreversal_f32( +float32_t * pSrc, +uint16_t fftSize, +uint16_t bitRevFactor, +uint16_t * pBitRevTab); + +void arm_radix4_butterfly_f32( +float32_t * pSrc, +uint16_t fftLen, +float32_t * pCoef, +uint16_t twidCoefModifier); + +void arm_radix4_butterfly_inverse_f32( +float32_t * pSrc, +uint16_t fftLen, +float32_t * pCoef, +uint16_t twidCoefModifier, +float32_t onebyfftLen); + + +/** +* @ingroup groupTransforms +*/ + +/** +* @addtogroup ComplexFFT +* @{ +*/ + +/** +* @details +* @brief Processing function for the floating-point Radix-4 CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_f32 and will be removed +* in the future. +* @param[in] *S points to an instance of the floating-point Radix-4 CFFT/CIFFT structure. +* @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. +* @return none. +*/ + +void arm_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc) +{ + if (S->ifftFlag == 1U) + { + /* Complex IFFT radix-4 */ + arm_radix4_butterfly_inverse_f32(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier, S->onebyfftLen); + } + else + { + /* Complex FFT radix-4 */ + arm_radix4_butterfly_f32(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); + } + + if (S->bitReverseFlag == 1U) + { + /* Bit Reversal */ + arm_bitreversal_f32(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); + } + +} + +/** +* @} end of ComplexFFT group +*/ + +/* ---------------------------------------------------------------------- + * Internal helper function used by the FFTs + * ---------------------------------------------------------------------- */ + +/* +* @brief Core function for the floating-point CFFT butterfly process. +* @param[in, out] *pSrc points to the in-place buffer of floating-point data type. +* @param[in] fftLen length of the FFT. +* @param[in] *pCoef points to the twiddle coefficient buffer. +* @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. +* @return none. +*/ + +void arm_radix4_butterfly_f32( +float32_t * pSrc, +uint16_t fftLen, +float32_t * pCoef, +uint16_t twidCoefModifier) +{ + + float32_t co1, co2, co3, si1, si2, si3; + uint32_t ia1, ia2, ia3; + uint32_t i0, i1, i2, i3; + uint32_t n1, n2, j, k; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + float32_t xaIn, yaIn, xbIn, ybIn, xcIn, ycIn, xdIn, ydIn; + float32_t Xaplusc, Xbplusd, Yaplusc, Ybplusd, Xaminusc, Xbminusd, Yaminusc, + Ybminusd; + float32_t Xb12C_out, Yb12C_out, Xc12C_out, Yc12C_out, Xd12C_out, Yd12C_out; + float32_t Xb12_out, Yb12_out, Xc12_out, Yc12_out, Xd12_out, Yd12_out; + float32_t *ptr1; + float32_t p0,p1,p2,p3,p4,p5; + float32_t a0,a1,a2,a3,a4,a5,a6,a7; + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2U; + i0 = 0U; + ia1 = 0U; + + j = n2; + + /* Calculation of first stage */ + do + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + xaIn = pSrc[(2U * i0)]; + yaIn = pSrc[(2U * i0) + 1U]; + + xbIn = pSrc[(2U * i1)]; + ybIn = pSrc[(2U * i1) + 1U]; + + xcIn = pSrc[(2U * i2)]; + ycIn = pSrc[(2U * i2) + 1U]; + + xdIn = pSrc[(2U * i3)]; + ydIn = pSrc[(2U * i3) + 1U]; + + /* xa + xc */ + Xaplusc = xaIn + xcIn; + /* xb + xd */ + Xbplusd = xbIn + xdIn; + /* ya + yc */ + Yaplusc = yaIn + ycIn; + /* yb + yd */ + Ybplusd = ybIn + ydIn; + + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + + /* xa - xc */ + Xaminusc = xaIn - xcIn; + /* xb - xd */ + Xbminusd = xbIn - xdIn; + /* ya - yc */ + Yaminusc = yaIn - ycIn; + /* yb - yd */ + Ybminusd = ybIn - ydIn; + + /* xa' = xa + xb + xc + xd */ + pSrc[(2U * i0)] = Xaplusc + Xbplusd; + /* ya' = ya + yb + yc + yd */ + pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd; + + /* (xa - xc) + (yb - yd) */ + Xb12C_out = (Xaminusc + Ybminusd); + /* (ya - yc) + (xb - xd) */ + Yb12C_out = (Yaminusc - Xbminusd); + /* (xa + xc) - (xb + xd) */ + Xc12C_out = (Xaplusc - Xbplusd); + /* (ya + yc) - (yb + yd) */ + Yc12C_out = (Yaplusc - Ybplusd); + /* (xa - xc) - (yb - yd) */ + Xd12C_out = (Xaminusc - Ybminusd); + /* (ya - yc) + (xb - xd) */ + Yd12C_out = (Xbminusd + Yaminusc); + + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + + /* index calculation for the coefficients */ + ia3 = ia2 + ia1; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + + Xb12_out = Xb12C_out * co1; + Yb12_out = Yb12C_out * co1; + Xc12_out = Xc12C_out * co2; + Yc12_out = Yc12C_out * co2; + Xd12_out = Xd12C_out * co3; + Yd12_out = Yd12C_out * co3; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + //Xb12_out -= Yb12C_out * si1; + p0 = Yb12C_out * si1; + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + //Yb12_out += Xb12C_out * si1; + p1 = Xb12C_out * si1; + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + //Xc12_out -= Yc12C_out * si2; + p2 = Yc12C_out * si2; + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + //Yc12_out += Xc12C_out * si2; + p3 = Xc12C_out * si2; + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + //Xd12_out -= Yd12C_out * si3; + p4 = Yd12C_out * si3; + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + //Yd12_out += Xd12C_out * si3; + p5 = Xd12C_out * si3; + + Xb12_out += p0; + Yb12_out -= p1; + Xc12_out += p2; + Yc12_out -= p3; + Xd12_out += p4; + Yd12_out -= p5; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = Xc12_out; + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2U * i1) + 1U] = Yc12_out; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = Xb12_out; + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = Yb12_out; + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2U * i3] = Xd12_out; + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = Yd12_out; + + /* Twiddle coefficients index modifier */ + ia1 += twidCoefModifier; + + /* Updating input index */ + i0++; + + } + while (--j); + + twidCoefModifier <<= 2U; + + /* Calculation of second stage to excluding last stage */ + for (k = fftLen >> 2U; k > 4U; k >>= 2U) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2U; + ia1 = 0U; + + /* Calculation of first stage */ + j = 0; + do + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + + /* Twiddle coefficients index modifier */ + ia1 += twidCoefModifier; + + i0 = j; + do + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + xaIn = pSrc[(2U * i0)]; + yaIn = pSrc[(2U * i0) + 1U]; + + xbIn = pSrc[(2U * i1)]; + ybIn = pSrc[(2U * i1) + 1U]; + + xcIn = pSrc[(2U * i2)]; + ycIn = pSrc[(2U * i2) + 1U]; + + xdIn = pSrc[(2U * i3)]; + ydIn = pSrc[(2U * i3) + 1U]; + + /* xa - xc */ + Xaminusc = xaIn - xcIn; + /* (xb - xd) */ + Xbminusd = xbIn - xdIn; + /* ya - yc */ + Yaminusc = yaIn - ycIn; + /* (yb - yd) */ + Ybminusd = ybIn - ydIn; + + /* xa + xc */ + Xaplusc = xaIn + xcIn; + /* xb + xd */ + Xbplusd = xbIn + xdIn; + /* ya + yc */ + Yaplusc = yaIn + ycIn; + /* yb + yd */ + Ybplusd = ybIn + ydIn; + + /* (xa - xc) + (yb - yd) */ + Xb12C_out = (Xaminusc + Ybminusd); + /* (ya - yc) - (xb - xd) */ + Yb12C_out = (Yaminusc - Xbminusd); + /* xa + xc -(xb + xd) */ + Xc12C_out = (Xaplusc - Xbplusd); + /* (ya + yc) - (yb + yd) */ + Yc12C_out = (Yaplusc - Ybplusd); + /* (xa - xc) - (yb - yd) */ + Xd12C_out = (Xaminusc - Ybminusd); + /* (ya - yc) + (xb - xd) */ + Yd12C_out = (Xbminusd + Yaminusc); + + pSrc[(2U * i0)] = Xaplusc + Xbplusd; + pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd; + + Xb12_out = Xb12C_out * co1; + Yb12_out = Yb12C_out * co1; + Xc12_out = Xc12C_out * co2; + Yc12_out = Yc12C_out * co2; + Xd12_out = Xd12C_out * co3; + Yd12_out = Yd12C_out * co3; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + //Xb12_out -= Yb12C_out * si1; + p0 = Yb12C_out * si1; + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + //Yb12_out += Xb12C_out * si1; + p1 = Xb12C_out * si1; + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + //Xc12_out -= Yc12C_out * si2; + p2 = Yc12C_out * si2; + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + //Yc12_out += Xc12C_out * si2; + p3 = Xc12C_out * si2; + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + //Xd12_out -= Yd12C_out * si3; + p4 = Yd12C_out * si3; + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + //Yd12_out += Xd12C_out * si3; + p5 = Xd12C_out * si3; + + Xb12_out += p0; + Yb12_out -= p1; + Xc12_out += p2; + Yc12_out -= p3; + Xd12_out += p4; + Yd12_out -= p5; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = Xc12_out; + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2U * i1) + 1U] = Yc12_out; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = Xb12_out; + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = Yb12_out; + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2U * i3] = Xd12_out; + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = Yd12_out; + + i0 += n1; + } while (i0 < fftLen); + j++; + } while (j <= (n2 - 1U)); + twidCoefModifier <<= 2U; + } + + j = fftLen >> 2; + ptr1 = &pSrc[0]; + + /* Calculations of last stage */ + do + { + xaIn = ptr1[0]; + yaIn = ptr1[1]; + xbIn = ptr1[2]; + ybIn = ptr1[3]; + xcIn = ptr1[4]; + ycIn = ptr1[5]; + xdIn = ptr1[6]; + ydIn = ptr1[7]; + + /* xa + xc */ + Xaplusc = xaIn + xcIn; + + /* xa - xc */ + Xaminusc = xaIn - xcIn; + + /* ya + yc */ + Yaplusc = yaIn + ycIn; + + /* ya - yc */ + Yaminusc = yaIn - ycIn; + + /* xb + xd */ + Xbplusd = xbIn + xdIn; + + /* yb + yd */ + Ybplusd = ybIn + ydIn; + + /* (xb-xd) */ + Xbminusd = xbIn - xdIn; + + /* (yb-yd) */ + Ybminusd = ybIn - ydIn; + + /* xa' = xa + xb + xc + xd */ + a0 = (Xaplusc + Xbplusd); + /* ya' = ya + yb + yc + yd */ + a1 = (Yaplusc + Ybplusd); + /* xc' = (xa-xb+xc-xd) */ + a2 = (Xaplusc - Xbplusd); + /* yc' = (ya-yb+yc-yd) */ + a3 = (Yaplusc - Ybplusd); + /* xb' = (xa+yb-xc-yd) */ + a4 = (Xaminusc + Ybminusd); + /* yb' = (ya-xb-yc+xd) */ + a5 = (Yaminusc - Xbminusd); + /* xd' = (xa-yb-xc+yd)) */ + a6 = (Xaminusc - Ybminusd); + /* yd' = (ya+xb-yc-xd) */ + a7 = (Xbminusd + Yaminusc); + + ptr1[0] = a0; + ptr1[1] = a1; + ptr1[2] = a2; + ptr1[3] = a3; + ptr1[4] = a4; + ptr1[5] = a5; + ptr1[6] = a6; + ptr1[7] = a7; + + /* increment pointer by 8 */ + ptr1 += 8U; + } while (--j); + +#else + + float32_t t1, t2, r1, r2, s1, s2; + + /* Run the below code for Cortex-M0 */ + + /* Initializations for the fft calculation */ + n2 = fftLen; + n1 = n2; + for (k = fftLen; k > 1U; k >>= 2U) + { + /* Initializations for the fft calculation */ + n1 = n2; + n2 >>= 2U; + ia1 = 0U; + + /* FFT Calculation */ + j = 0; + do + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + i0 = j; + do + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* xa + xc */ + r1 = pSrc[(2U * i0)] + pSrc[(2U * i2)]; + + /* xa - xc */ + r2 = pSrc[(2U * i0)] - pSrc[(2U * i2)]; + + /* ya + yc */ + s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U]; + + /* ya - yc */ + s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U]; + + /* xb + xd */ + t1 = pSrc[2U * i1] + pSrc[2U * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2U * i0] = r1 + t1; + + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2U * i0) + 1U] = s1 + t2; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U]; + + /* (xb - xd) */ + t2 = pSrc[2U * i1] - pSrc[2U * i3]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = (r1 * co2) + (s1 * si2); + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2U * i1) + 1U] = (s1 * co2) - (r1 * si2); + + /* (xa - xc) + (yb - yd) */ + r1 = r2 + t1; + + /* (xa - xc) - (yb - yd) */ + r2 = r2 - t1; + + /* (ya - yc) - (xb - xd) */ + s1 = s2 - t2; + + /* (ya - yc) + (xb - xd) */ + s2 = s2 + t2; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = (r1 * co1) + (s1 * si1); + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = (s1 * co1) - (r1 * si1); + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2U * i3] = (r2 * co3) + (s2 * si3); + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = (s2 * co3) - (r2 * si3); + + i0 += n1; + } while ( i0 < fftLen); + j++; + } while (j <= (n2 - 1U)); + twidCoefModifier <<= 2U; + } + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/* +* @brief Core function for the floating-point CIFFT butterfly process. +* @param[in, out] *pSrc points to the in-place buffer of floating-point data type. +* @param[in] fftLen length of the FFT. +* @param[in] *pCoef points to twiddle coefficient buffer. +* @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. +* @param[in] onebyfftLen value of 1/fftLen. +* @return none. +*/ + +void arm_radix4_butterfly_inverse_f32( +float32_t * pSrc, +uint16_t fftLen, +float32_t * pCoef, +uint16_t twidCoefModifier, +float32_t onebyfftLen) +{ + float32_t co1, co2, co3, si1, si2, si3; + uint32_t ia1, ia2, ia3; + uint32_t i0, i1, i2, i3; + uint32_t n1, n2, j, k; + +#if defined (ARM_MATH_DSP) + + float32_t xaIn, yaIn, xbIn, ybIn, xcIn, ycIn, xdIn, ydIn; + float32_t Xaplusc, Xbplusd, Yaplusc, Ybplusd, Xaminusc, Xbminusd, Yaminusc, + Ybminusd; + float32_t Xb12C_out, Yb12C_out, Xc12C_out, Yc12C_out, Xd12C_out, Yd12C_out; + float32_t Xb12_out, Yb12_out, Xc12_out, Yc12_out, Xd12_out, Yd12_out; + float32_t *ptr1; + float32_t p0,p1,p2,p3,p4,p5,p6,p7; + float32_t a0,a1,a2,a3,a4,a5,a6,a7; + + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2U; + i0 = 0U; + ia1 = 0U; + + j = n2; + + /* Calculation of first stage */ + do + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + xaIn = pSrc[(2U * i0)]; + yaIn = pSrc[(2U * i0) + 1U]; + + xcIn = pSrc[(2U * i2)]; + ycIn = pSrc[(2U * i2) + 1U]; + + xbIn = pSrc[(2U * i1)]; + ybIn = pSrc[(2U * i1) + 1U]; + + xdIn = pSrc[(2U * i3)]; + ydIn = pSrc[(2U * i3) + 1U]; + + /* xa + xc */ + Xaplusc = xaIn + xcIn; + /* xb + xd */ + Xbplusd = xbIn + xdIn; + /* ya + yc */ + Yaplusc = yaIn + ycIn; + /* yb + yd */ + Ybplusd = ybIn + ydIn; + + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + + /* xa - xc */ + Xaminusc = xaIn - xcIn; + /* xb - xd */ + Xbminusd = xbIn - xdIn; + /* ya - yc */ + Yaminusc = yaIn - ycIn; + /* yb - yd */ + Ybminusd = ybIn - ydIn; + + /* xa' = xa + xb + xc + xd */ + pSrc[(2U * i0)] = Xaplusc + Xbplusd; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd; + + /* (xa - xc) - (yb - yd) */ + Xb12C_out = (Xaminusc - Ybminusd); + /* (ya - yc) + (xb - xd) */ + Yb12C_out = (Yaminusc + Xbminusd); + /* (xa + xc) - (xb + xd) */ + Xc12C_out = (Xaplusc - Xbplusd); + /* (ya + yc) - (yb + yd) */ + Yc12C_out = (Yaplusc - Ybplusd); + /* (xa - xc) + (yb - yd) */ + Xd12C_out = (Xaminusc + Ybminusd); + /* (ya - yc) - (xb - xd) */ + Yd12C_out = (Yaminusc - Xbminusd); + + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + + /* index calculation for the coefficients */ + ia3 = ia2 + ia1; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + + Xb12_out = Xb12C_out * co1; + Yb12_out = Yb12C_out * co1; + Xc12_out = Xc12C_out * co2; + Yc12_out = Yc12C_out * co2; + Xd12_out = Xd12C_out * co3; + Yd12_out = Yd12C_out * co3; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + //Xb12_out -= Yb12C_out * si1; + p0 = Yb12C_out * si1; + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + //Yb12_out += Xb12C_out * si1; + p1 = Xb12C_out * si1; + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + //Xc12_out -= Yc12C_out * si2; + p2 = Yc12C_out * si2; + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + //Yc12_out += Xc12C_out * si2; + p3 = Xc12C_out * si2; + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + //Xd12_out -= Yd12C_out * si3; + p4 = Yd12C_out * si3; + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + //Yd12_out += Xd12C_out * si3; + p5 = Xd12C_out * si3; + + Xb12_out -= p0; + Yb12_out += p1; + Xc12_out -= p2; + Yc12_out += p3; + Xd12_out -= p4; + Yd12_out += p5; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = Xc12_out; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2U * i1) + 1U] = Yc12_out; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = Xb12_out; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = Yb12_out; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2U * i3] = Xd12_out; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = Yd12_out; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1U; + + } while (--j); + + twidCoefModifier <<= 2U; + + /* Calculation of second stage to excluding last stage */ + for (k = fftLen >> 2U; k > 4U; k >>= 2U) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2U; + ia1 = 0U; + + /* Calculation of first stage */ + j = 0; + do + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + i0 = j; + do + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + xaIn = pSrc[(2U * i0)]; + yaIn = pSrc[(2U * i0) + 1U]; + + xbIn = pSrc[(2U * i1)]; + ybIn = pSrc[(2U * i1) + 1U]; + + xcIn = pSrc[(2U * i2)]; + ycIn = pSrc[(2U * i2) + 1U]; + + xdIn = pSrc[(2U * i3)]; + ydIn = pSrc[(2U * i3) + 1U]; + + /* xa - xc */ + Xaminusc = xaIn - xcIn; + /* (xb - xd) */ + Xbminusd = xbIn - xdIn; + /* ya - yc */ + Yaminusc = yaIn - ycIn; + /* (yb - yd) */ + Ybminusd = ybIn - ydIn; + + /* xa + xc */ + Xaplusc = xaIn + xcIn; + /* xb + xd */ + Xbplusd = xbIn + xdIn; + /* ya + yc */ + Yaplusc = yaIn + ycIn; + /* yb + yd */ + Ybplusd = ybIn + ydIn; + + /* (xa - xc) - (yb - yd) */ + Xb12C_out = (Xaminusc - Ybminusd); + /* (ya - yc) + (xb - xd) */ + Yb12C_out = (Yaminusc + Xbminusd); + /* xa + xc -(xb + xd) */ + Xc12C_out = (Xaplusc - Xbplusd); + /* (ya + yc) - (yb + yd) */ + Yc12C_out = (Yaplusc - Ybplusd); + /* (xa - xc) + (yb - yd) */ + Xd12C_out = (Xaminusc + Ybminusd); + /* (ya - yc) - (xb - xd) */ + Yd12C_out = (Yaminusc - Xbminusd); + + pSrc[(2U * i0)] = Xaplusc + Xbplusd; + pSrc[(2U * i0) + 1U] = Yaplusc + Ybplusd; + + Xb12_out = Xb12C_out * co1; + Yb12_out = Yb12C_out * co1; + Xc12_out = Xc12C_out * co2; + Yc12_out = Yc12C_out * co2; + Xd12_out = Xd12C_out * co3; + Yd12_out = Yd12C_out * co3; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + //Xb12_out -= Yb12C_out * si1; + p0 = Yb12C_out * si1; + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + //Yb12_out += Xb12C_out * si1; + p1 = Xb12C_out * si1; + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + //Xc12_out -= Yc12C_out * si2; + p2 = Yc12C_out * si2; + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + //Yc12_out += Xc12C_out * si2; + p3 = Xc12C_out * si2; + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + //Xd12_out -= Yd12C_out * si3; + p4 = Yd12C_out * si3; + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + //Yd12_out += Xd12C_out * si3; + p5 = Xd12C_out * si3; + + Xb12_out -= p0; + Yb12_out += p1; + Xc12_out -= p2; + Yc12_out += p3; + Xd12_out -= p4; + Yd12_out += p5; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = Xc12_out; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2U * i1) + 1U] = Yc12_out; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = Xb12_out; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = Yb12_out; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2U * i3] = Xd12_out; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = Yd12_out; + + i0 += n1; + } while (i0 < fftLen); + j++; + } while (j <= (n2 - 1U)); + twidCoefModifier <<= 2U; + } + /* Initializations of last stage */ + + j = fftLen >> 2; + ptr1 = &pSrc[0]; + + /* Calculations of last stage */ + do + { + xaIn = ptr1[0]; + yaIn = ptr1[1]; + xbIn = ptr1[2]; + ybIn = ptr1[3]; + xcIn = ptr1[4]; + ycIn = ptr1[5]; + xdIn = ptr1[6]; + ydIn = ptr1[7]; + + /* Butterfly implementation */ + /* xa + xc */ + Xaplusc = xaIn + xcIn; + + /* xa - xc */ + Xaminusc = xaIn - xcIn; + + /* ya + yc */ + Yaplusc = yaIn + ycIn; + + /* ya - yc */ + Yaminusc = yaIn - ycIn; + + /* xb + xd */ + Xbplusd = xbIn + xdIn; + + /* yb + yd */ + Ybplusd = ybIn + ydIn; + + /* (xb-xd) */ + Xbminusd = xbIn - xdIn; + + /* (yb-yd) */ + Ybminusd = ybIn - ydIn; + + /* xa' = (xa+xb+xc+xd) * onebyfftLen */ + a0 = (Xaplusc + Xbplusd); + /* ya' = (ya+yb+yc+yd) * onebyfftLen */ + a1 = (Yaplusc + Ybplusd); + /* xc' = (xa-xb+xc-xd) * onebyfftLen */ + a2 = (Xaplusc - Xbplusd); + /* yc' = (ya-yb+yc-yd) * onebyfftLen */ + a3 = (Yaplusc - Ybplusd); + /* xb' = (xa-yb-xc+yd) * onebyfftLen */ + a4 = (Xaminusc - Ybminusd); + /* yb' = (ya+xb-yc-xd) * onebyfftLen */ + a5 = (Yaminusc + Xbminusd); + /* xd' = (xa-yb-xc+yd) * onebyfftLen */ + a6 = (Xaminusc + Ybminusd); + /* yd' = (ya-xb-yc+xd) * onebyfftLen */ + a7 = (Yaminusc - Xbminusd); + + p0 = a0 * onebyfftLen; + p1 = a1 * onebyfftLen; + p2 = a2 * onebyfftLen; + p3 = a3 * onebyfftLen; + p4 = a4 * onebyfftLen; + p5 = a5 * onebyfftLen; + p6 = a6 * onebyfftLen; + p7 = a7 * onebyfftLen; + + /* xa' = (xa+xb+xc+xd) * onebyfftLen */ + ptr1[0] = p0; + /* ya' = (ya+yb+yc+yd) * onebyfftLen */ + ptr1[1] = p1; + /* xc' = (xa-xb+xc-xd) * onebyfftLen */ + ptr1[2] = p2; + /* yc' = (ya-yb+yc-yd) * onebyfftLen */ + ptr1[3] = p3; + /* xb' = (xa-yb-xc+yd) * onebyfftLen */ + ptr1[4] = p4; + /* yb' = (ya+xb-yc-xd) * onebyfftLen */ + ptr1[5] = p5; + /* xd' = (xa-yb-xc+yd) * onebyfftLen */ + ptr1[6] = p6; + /* yd' = (ya-xb-yc+xd) * onebyfftLen */ + ptr1[7] = p7; + + /* increment source pointer by 8 for next calculations */ + ptr1 = ptr1 + 8U; + + } while (--j); + +#else + + float32_t t1, t2, r1, r2, s1, s2; + + /* Run the below code for Cortex-M0 */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* Calculation of first stage */ + for (k = fftLen; k > 4U; k >>= 2U) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2U; + ia1 = 0U; + + /* Calculation of first stage */ + j = 0; + do + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + i0 = j; + do + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* xa + xc */ + r1 = pSrc[(2U * i0)] + pSrc[(2U * i2)]; + + /* xa - xc */ + r2 = pSrc[(2U * i0)] - pSrc[(2U * i2)]; + + /* ya + yc */ + s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U]; + + /* ya - yc */ + s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U]; + + /* xb + xd */ + t1 = pSrc[2U * i1] + pSrc[2U * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2U * i0] = r1 + t1; + + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2U * i0) + 1U] = s1 + t2; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U]; + + /* (xb - xd) */ + t2 = pSrc[2U * i1] - pSrc[2U * i3]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = (r1 * co2) - (s1 * si2); + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2U * i1) + 1U] = (s1 * co2) + (r1 * si2); + + /* (xa - xc) - (yb - yd) */ + r1 = r2 - t1; + + /* (xa - xc) + (yb - yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb - xd) */ + s1 = s2 + t2; + + /* (ya - yc) - (xb - xd) */ + s2 = s2 - t2; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = (r1 * co1) - (s1 * si1); + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = (s1 * co1) + (r1 * si1); + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2U * i3] = (r2 * co3) - (s2 * si3); + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = (s2 * co3) + (r2 * si3); + + i0 += n1; + } while ( i0 < fftLen); + j++; + } while (j <= (n2 - 1U)); + twidCoefModifier <<= 2U; + } + /* Initializations of last stage */ + n1 = n2; + n2 >>= 2U; + + /* Calculations of last stage */ + for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSrc[2U * i0] + pSrc[2U * i2]; + + /* xa - xc */ + r2 = pSrc[2U * i0] - pSrc[2U * i2]; + + /* ya + yc */ + s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U]; + + /* ya - yc */ + s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U]; + + /* xc + xd */ + t1 = pSrc[2U * i1] + pSrc[2U * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2U * i0] = (r1 + t1) * onebyfftLen; + + /* (xa + xb) - (xc + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U]; + + /* ya' = ya + yb + yc + yd */ + pSrc[(2U * i0) + 1U] = (s1 + t2) * onebyfftLen; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb-yd) */ + t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U]; + + /* (xb-xd) */ + t2 = pSrc[2U * i1] - pSrc[2U * i3]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = r1 * onebyfftLen; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2U * i1) + 1U] = s1 * onebyfftLen; + + /* (xa - xc) - (yb-yd) */ + r1 = r2 - t1; + + /* (xa - xc) + (yb-yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb-xd) */ + s1 = s2 + t2; + + /* (ya - yc) - (xb-xd) */ + s2 = s2 - t2; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = r1 * onebyfftLen; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = s1 * onebyfftLen; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2U * i3] = r2 * onebyfftLen; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = s2 * onebyfftLen; + } + +#endif /* #if defined (ARM_MATH_DSP) */ +} + + diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c new file mode 100644 index 0000000..5383771 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_f32.c @@ -0,0 +1,152 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix4_init_f32.c + * Description: Radix-4 Decimation in Frequency Floating-point CFFT & CIFFT Initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup ComplexFFT + * @{ + */ + +/** +* @brief Initialization function for the floating-point CFFT/CIFFT. +* @deprecated Do not use this function. It has been superceded by \ref arm_cfft_f32 and will be removed +* in the future. +* @param[in,out] *S points to an instance of the floating-point CFFT/CIFFT structure. +* @param[in] fftLen length of the FFT. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. +* +* \par Description: +* \par +* The parameter ifftFlag controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. +* \par +* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. +*/ + +arm_status arm_cfft_radix4_init_f32( + arm_cfft_radix4_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialise the FFT length */ + S->fftLen = fftLen; + + /* Initialise the Twiddle coefficient pointer */ + S->pTwiddle = (float32_t *) twiddleCoef; + + /* Initialise the Flag for selection of CFFT or CIFFT */ + S->ifftFlag = ifftFlag; + + /* Initialise the Flag for calculation Bit reversal or not */ + S->bitReverseFlag = bitReverseFlag; + + /* Initializations of structure parameters depending on the FFT length */ + switch (S->fftLen) + { + + case 4096U: + /* Initializations of structure parameters for 4096 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 1U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 1U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) armBitRevTable; + /* Initialise the 1/fftLen Value */ + S->onebyfftLen = 0.000244140625; + break; + + case 1024U: + /* Initializations of structure parameters for 1024 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 4U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 4U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; + /* Initialise the 1/fftLen Value */ + S->onebyfftLen = 0.0009765625f; + break; + + + case 256U: + /* Initializations of structure parameters for 256 point FFT */ + S->twidCoefModifier = 16U; + S->bitRevFactor = 16U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; + S->onebyfftLen = 0.00390625f; + break; + + case 64U: + /* Initializations of structure parameters for 64 point FFT */ + S->twidCoefModifier = 64U; + S->bitRevFactor = 64U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; + S->onebyfftLen = 0.015625f; + break; + + case 16U: + /* Initializations of structure parameters for 16 point FFT */ + S->twidCoefModifier = 256U; + S->bitRevFactor = 256U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; + S->onebyfftLen = 0.0625f; + break; + + + default: + /* Reporting argument error if fftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + return (status); +} + +/** + * @} end of ComplexFFT group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c new file mode 100644 index 0000000..b2e38b4 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q15.c @@ -0,0 +1,140 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix4_init_q15.c + * Description: Radix-4 Decimation in Frequency Q15 FFT & IFFT initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupTransforms + */ + + +/** + * @addtogroup ComplexFFT + * @{ + */ + + +/** +* @brief Initialization function for the Q15 CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed +* @param[in,out] *S points to an instance of the Q15 CFFT/CIFFT structure. +* @param[in] fftLen length of the FFT. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. +* +* \par Description: +* \par +* The parameter ifftFlag controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. +* \par +* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. +*/ + +arm_status arm_cfft_radix4_init_q15( + arm_cfft_radix4_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + /* Initialise the FFT length */ + S->fftLen = fftLen; + /* Initialise the Twiddle coefficient pointer */ + S->pTwiddle = (q15_t *) twiddleCoef_4096_q15; + /* Initialise the Flag for selection of CFFT or CIFFT */ + S->ifftFlag = ifftFlag; + /* Initialise the Flag for calculation Bit reversal or not */ + S->bitReverseFlag = bitReverseFlag; + + /* Initializations of structure parameters depending on the FFT length */ + switch (S->fftLen) + { + case 4096U: + /* Initializations of structure parameters for 4096 point FFT */ + + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 1U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 1U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) armBitRevTable; + + break; + + case 1024U: + /* Initializations of structure parameters for 1024 point FFT */ + S->twidCoefModifier = 4U; + S->bitRevFactor = 4U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; + + break; + + case 256U: + /* Initializations of structure parameters for 256 point FFT */ + S->twidCoefModifier = 16U; + S->bitRevFactor = 16U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; + + break; + + case 64U: + /* Initializations of structure parameters for 64 point FFT */ + S->twidCoefModifier = 64U; + S->bitRevFactor = 64U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; + + break; + + case 16U: + /* Initializations of structure parameters for 16 point FFT */ + S->twidCoefModifier = 256U; + S->bitRevFactor = 256U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; + + break; + + default: + /* Reporting argument error if fftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + return (status); +} + +/** + * @} end of ComplexFFT group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c new file mode 100644 index 0000000..9c11754 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_init_q31.c @@ -0,0 +1,136 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix4_init_q31.c + * Description: Radix-4 Decimation in Frequency Q31 FFT & IFFT initialization function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup ComplexFFT + * @{ + */ + +/** +* +* @brief Initialization function for the Q31 CFFT/CIFFT. +* @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed +* @param[in,out] *S points to an instance of the Q31 CFFT/CIFFT structure. +* @param[in] fftLen length of the FFT. +* @param[in] ifftFlag flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. +* +* \par Description: +* \par +* The parameter ifftFlag controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlag for calculation of CIFFT otherwise CFFT is calculated +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* The parameter fftLen Specifies length of CFFT/CIFFT process. Supported FFT Lengths are 16, 64, 256, 1024. +* \par +* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. +*/ + +arm_status arm_cfft_radix4_init_q31( + arm_cfft_radix4_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + /* Initialise the FFT length */ + S->fftLen = fftLen; + /* Initialise the Twiddle coefficient pointer */ + S->pTwiddle = (q31_t *) twiddleCoef_4096_q31; + /* Initialise the Flag for selection of CFFT or CIFFT */ + S->ifftFlag = ifftFlag; + /* Initialise the Flag for calculation Bit reversal or not */ + S->bitReverseFlag = bitReverseFlag; + + /* Initializations of Instance structure depending on the FFT length */ + switch (S->fftLen) + { + /* Initializations of structure parameters for 4096 point FFT */ + case 4096U: + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 1U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 1U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) armBitRevTable; + break; + + /* Initializations of structure parameters for 1024 point FFT */ + case 1024U: + /* Initialise the twiddle coef modifier value */ + S->twidCoefModifier = 4U; + /* Initialise the bit reversal table modifier */ + S->bitRevFactor = 4U; + /* Initialise the bit reversal table pointer */ + S->pBitRevTable = (uint16_t *) & armBitRevTable[3]; + break; + + case 256U: + /* Initializations of structure parameters for 256 point FFT */ + S->twidCoefModifier = 16U; + S->bitRevFactor = 16U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[15]; + break; + + case 64U: + /* Initializations of structure parameters for 64 point FFT */ + S->twidCoefModifier = 64U; + S->bitRevFactor = 64U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[63]; + break; + + case 16U: + /* Initializations of structure parameters for 16 point FFT */ + S->twidCoefModifier = 256U; + S->bitRevFactor = 256U; + S->pBitRevTable = (uint16_t *) & armBitRevTable[255]; + break; + + default: + /* Reporting argument error if fftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + return (status); +} + +/** + * @} end of ComplexFFT group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c new file mode 100644 index 0000000..140fa53 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q15.c @@ -0,0 +1,1910 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix4_q15.c + * Description: This file has function definition of Radix-4 FFT & IFFT function and + * In-place bit reversal using bit reversal table + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + + +void arm_radix4_butterfly_q15( + q15_t * pSrc16, + uint32_t fftLen, + q15_t * pCoef16, + uint32_t twidCoefModifier); + +void arm_radix4_butterfly_inverse_q15( + q15_t * pSrc16, + uint32_t fftLen, + q15_t * pCoef16, + uint32_t twidCoefModifier); + +void arm_bitreversal_q15( + q15_t * pSrc, + uint32_t fftLen, + uint16_t bitRevFactor, + uint16_t * pBitRevTab); + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup ComplexFFT + * @{ + */ + + +/** + * @details + * @brief Processing function for the Q15 CFFT/CIFFT. + * @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q15 and will be removed + * @param[in] *S points to an instance of the Q15 CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer. Processing occurs in-place. + * @return none. + * + * \par Input and output formats: + * \par + * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. + * Hence the output format is different for different FFT sizes. + * The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT: + * \par + * \image html CFFTQ15.gif "Input and Output Formats for Q15 CFFT" + * \image html CIFFTQ15.gif "Input and Output Formats for Q15 CIFFT" + */ + +void arm_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc) +{ + if (S->ifftFlag == 1U) + { + /* Complex IFFT radix-4 */ + arm_radix4_butterfly_inverse_q15(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); + } + else + { + /* Complex FFT radix-4 */ + arm_radix4_butterfly_q15(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); + } + + if (S->bitReverseFlag == 1U) + { + /* Bit Reversal */ + arm_bitreversal_q15(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); + } + +} + +/** + * @} end of ComplexFFT group + */ + +/* +* Radix-4 FFT algorithm used is : +* +* Input real and imaginary data: +* x(n) = xa + j * ya +* x(n+N/4 ) = xb + j * yb +* x(n+N/2 ) = xc + j * yc +* x(n+3N 4) = xd + j * yd +* +* +* Output real and imaginary data: +* x(4r) = xa'+ j * ya' +* x(4r+1) = xb'+ j * yb' +* x(4r+2) = xc'+ j * yc' +* x(4r+3) = xd'+ j * yd' +* +* +* Twiddle factors for radix-4 FFT: +* Wn = co1 + j * (- si1) +* W2n = co2 + j * (- si2) +* W3n = co3 + j * (- si3) + +* The real and imaginary output values for the radix-4 butterfly are +* xa' = xa + xb + xc + xd +* ya' = ya + yb + yc + yd +* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) +* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) +* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) +* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) +* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) +* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) +* +*/ + +/** + * @brief Core function for the Q15 CFFT butterfly process. + * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef16 points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_radix4_butterfly_q15( + q15_t * pSrc16, + uint32_t fftLen, + q15_t * pCoef16, + uint32_t twidCoefModifier) +{ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t R, S, T, U; + q31_t C1, C2, C3, out1, out2; + uint32_t n1, n2, ic, i0, j, k; + + q15_t *ptr1; + q15_t *pSi0; + q15_t *pSi1; + q15_t *pSi2; + q15_t *pSi3; + + q31_t xaya, xbyb, xcyc, xdyd; + + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2U; + + /* Index for twiddle coefficient */ + ic = 0U; + + /* Index for input read and output write */ + j = n2; + + pSi0 = pSrc16; + pSi1 = pSi0 + 2 * n2; + pSi2 = pSi1 + 2 * n2; + pSi3 = pSi2 + 2 * n2; + + /* Input is in 1.15(q15) format */ + + /* start of first stage process */ + do + { + /* Butterfly implementation */ + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T = _SIMD32_OFFSET(pSi0); + T = __SHADD16(T, 0); // this is just a SIMD arithmetic shift right by 1 + T = __SHADD16(T, 0); // it turns out doing this twice is 2 cycles, the alternative takes 3 cycles + //in = ((int16_t) (T & 0xFFFF)) >> 2; // alternative code that takes 3 cycles + //T = ((T >> 2) & 0xFFFF0000) | (in & 0xFFFF); + + /* Read yc (real), xc(imag) input */ + S = _SIMD32_OFFSET(pSi2); + S = __SHADD16(S, 0); + S = __SHADD16(S, 0); + + /* R = packed((ya + yc), (xa + xc) ) */ + R = __QADD16(T, S); + + /* S = packed((ya - yc), (xa - xc) ) */ + S = __QSUB16(T, S); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T = _SIMD32_OFFSET(pSi1); + T = __SHADD16(T, 0); + T = __SHADD16(T, 0); + + /* Read yd (real), xd(imag) input */ + U = _SIMD32_OFFSET(pSi3); + U = __SHADD16(U, 0); + U = __SHADD16(U, 0); + + /* T = packed((yb + yd), (xb + xd) ) */ + T = __QADD16(T, U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + _SIMD32_OFFSET(pSi0) = __SHADD16(R, T); + pSi0 += 2; + + /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */ + R = __QSUB16(R, T); + + /* co2 & si2 are read from SIMD Coefficient pointer */ + C2 = _SIMD32_OFFSET(pCoef16 + (4U * ic)); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + out1 = __SMUAD(C2, R) >> 16U; + /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out2 = __SMUSDX(C2, R); + +#else + + /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out1 = __SMUSDX(R, C2) >> 16U; + /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + out2 = __SMUAD(C2, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Reading i0+fftLen/4 */ + /* T = packed(yb, xb) */ + T = _SIMD32_OFFSET(pSi1); + T = __SHADD16(T, 0); + T = __SHADD16(T, 0); + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* writing output(xc', yc') in little endian format */ + _SIMD32_OFFSET(pSi1) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSi1 += 2; + + /* Butterfly calculations */ + /* U = packed(yd, xd) */ + U = _SIMD32_OFFSET(pSi3); + U = __SHADD16(U, 0); + U = __SHADD16(U, 0); + + /* T = packed(yb-yd, xb-xd) */ + T = __QSUB16(T, U); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __QASX(S, T); + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __QSAX(S, T); + +#else + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __QSAX(S, T); + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __QASX(S, T); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* co1 & si1 are read from SIMD Coefficient pointer */ + C1 = _SIMD32_OFFSET(pCoef16 + (2U * ic)); + /* Butterfly process for the i0+fftLen/2 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + out1 = __SMUAD(C1, S) >> 16U; + /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + out2 = __SMUSDX(C1, S); + +#else + + /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + out1 = __SMUSDX(S, C1) >> 16U; + /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + out2 = __SMUAD(C1, S); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* writing output(xb', yb') in little endian format */ + _SIMD32_OFFSET(pSi2) = + ((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF); + pSi2 += 2; + + + /* co3 & si3 are read from SIMD Coefficient pointer */ + C3 = _SIMD32_OFFSET(pCoef16 + (6U * ic)); + /* Butterfly process for the i0+3fftLen/4 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ + out1 = __SMUAD(C3, R) >> 16U; + /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ + out2 = __SMUSDX(C3, R); + +#else + + /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ + out1 = __SMUSDX(R, C3) >> 16U; + /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ + out2 = __SMUAD(C3, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* writing output(xd', yd') in little endian format */ + _SIMD32_OFFSET(pSi3) = + ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSi3 += 2; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + } while (--j); + /* data is in 4.11(q11) format */ + + /* end of first stage process */ + + + /* start of middle stage process */ + + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2U; + + /* Calculation of Middle stage */ + for (k = fftLen / 4U; k > 4U; k >>= 2U) + { + /* Initializations for the middle stage */ + n1 = n2; + n2 >>= 2U; + ic = 0U; + + for (j = 0U; j <= (n2 - 1U); j++) + { + /* index calculation for the coefficients */ + C1 = _SIMD32_OFFSET(pCoef16 + (2U * ic)); + C2 = _SIMD32_OFFSET(pCoef16 + (4U * ic)); + C3 = _SIMD32_OFFSET(pCoef16 + (6U * ic)); + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + pSi0 = pSrc16 + 2 * j; + pSi1 = pSi0 + 2 * n2; + pSi2 = pSi1 + 2 * n2; + pSi3 = pSi2 + 2 * n2; + + /* Butterfly implementation */ + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T = _SIMD32_OFFSET(pSi0); + + /* Read yc (real), xc(imag) input */ + S = _SIMD32_OFFSET(pSi2); + + /* R = packed( (ya + yc), (xa + xc)) */ + R = __QADD16(T, S); + + /* S = packed((ya - yc), (xa - xc)) */ + S = __QSUB16(T, S); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T = _SIMD32_OFFSET(pSi1); + + /* Read yd (real), xd(imag) input */ + U = _SIMD32_OFFSET(pSi3); + + /* T = packed( (yb + yd), (xb + xd)) */ + T = __QADD16(T, U); + + /* writing the butterfly processed i0 sample */ + + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + out1 = __SHADD16(R, T); + out1 = __SHADD16(out1, 0); + _SIMD32_OFFSET(pSi0) = out1; + pSi0 += 2 * n1; + + /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */ + R = __SHSUB16(R, T); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ + out1 = __SMUAD(C2, R) >> 16U; + + /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out2 = __SMUSDX(C2, R); + +#else + + /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out1 = __SMUSDX(R, C2) >> 16U; + + /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ + out2 = __SMUAD(C2, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Reading i0+3fftLen/4 */ + /* Read yb (real), xb(imag) input */ + T = _SIMD32_OFFSET(pSi1); + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + _SIMD32_OFFSET(pSi1) = + ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSi1 += 2 * n1; + + /* Butterfly calculations */ + + /* Read yd (real), xd(imag) input */ + U = _SIMD32_OFFSET(pSi3); + + /* T = packed(yb-yd, xb-xd) */ + T = __QSUB16(T, U); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __SHASX(S, T); + + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __SHSAX(S, T); + + + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = __SMUAD(C1, S) >> 16U; + out2 = __SMUSDX(C1, S); + +#else + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __SHSAX(S, T); + + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __SHASX(S, T); + + + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = __SMUSDX(S, C1) >> 16U; + out2 = __SMUAD(C1, S); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + _SIMD32_OFFSET(pSi2) = + ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSi2 += 2 * n1; + + /* Butterfly process for the i0+3fftLen/4 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUAD(C3, R) >> 16U; + out2 = __SMUSDX(C3, R); + +#else + + out1 = __SMUSDX(R, C3) >> 16U; + out2 = __SMUAD(C3, R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ + /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ + _SIMD32_OFFSET(pSi3) = + ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSi3 += 2 * n1; + } + } + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2U; + } + /* end of middle stage process */ + + + /* data is in 10.6(q6) format for the 1024 point */ + /* data is in 8.8(q8) format for the 256 point */ + /* data is in 6.10(q10) format for the 64 point */ + /* data is in 4.12(q12) format for the 16 point */ + + /* Initializations for the last stage */ + j = fftLen >> 2; + + ptr1 = &pSrc16[0]; + + /* start of last stage process */ + + /* Butterfly implementation */ + do + { + /* Read xa (real), ya(imag) input */ + xaya = *__SIMD32(ptr1)++; + + /* Read xb (real), yb(imag) input */ + xbyb = *__SIMD32(ptr1)++; + + /* Read xc (real), yc(imag) input */ + xcyc = *__SIMD32(ptr1)++; + + /* Read xd (real), yd(imag) input */ + xdyd = *__SIMD32(ptr1)++; + + /* R = packed((ya + yc), (xa + xc)) */ + R = __QADD16(xaya, xcyc); + + /* T = packed((yb + yd), (xb + xd)) */ + T = __QADD16(xbyb, xdyd); + + /* pointer updation for writing */ + ptr1 = ptr1 - 8U; + + + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + *__SIMD32(ptr1)++ = __SHADD16(R, T); + + /* T = packed((yb + yd), (xb + xd)) */ + T = __QADD16(xbyb, xdyd); + + /* xc' = (xa-xb+xc-xd) */ + /* yc' = (ya-yb+yc-yd) */ + *__SIMD32(ptr1)++ = __SHSUB16(R, T); + + /* S = packed((ya - yc), (xa - xc)) */ + S = __QSUB16(xaya, xcyc); + + /* Read yd (real), xd(imag) input */ + /* T = packed( (yb - yd), (xb - xd)) */ + U = __QSUB16(xbyb, xdyd); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xb' = (xa+yb-xc-yd) */ + /* yb' = (ya-xb-yc+xd) */ + *__SIMD32(ptr1)++ = __SHSAX(S, U); + + + /* xd' = (xa-yb-xc+yd) */ + /* yd' = (ya+xb-yc-xd) */ + *__SIMD32(ptr1)++ = __SHASX(S, U); + +#else + + /* xb' = (xa+yb-xc-yd) */ + /* yb' = (ya-xb-yc+xd) */ + *__SIMD32(ptr1)++ = __SHASX(S, U); + + + /* xd' = (xa-yb-xc+yd) */ + /* yd' = (ya+xb-yc-xd) */ + *__SIMD32(ptr1)++ = __SHSAX(S, U); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + } while (--j); + + /* end of last stage process */ + + /* output is in 11.5(q5) format for the 1024 point */ + /* output is in 9.7(q7) format for the 256 point */ + /* output is in 7.9(q9) format for the 64 point */ + /* output is in 5.11(q11) format for the 16 point */ + + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t R0, R1, S0, S1, T0, T1, U0, U1; + q15_t Co1, Si1, Co2, Si2, Co3, Si3, out1, out2; + uint32_t n1, n2, ic, i0, i1, i2, i3, j, k; + + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2U; + + /* Index for twiddle coefficient */ + ic = 0U; + + /* Index for input read and output write */ + i0 = 0U; + j = n2; + + /* Input is in 1.15(q15) format */ + + /* start of first stage process */ + do + { + /* Butterfly implementation */ + + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + + /* input is down scale by 4 to avoid overflow */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2U] >> 2U; + T1 = pSrc16[(i0 * 2U) + 1U] >> 2U; + + /* input is down scale by 4 to avoid overflow */ + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2U] >> 2U; + S1 = pSrc16[(i2 * 2U) + 1U] >> 2U; + + /* R0 = (ya + yc) */ + R0 = __SSAT(T0 + S0, 16U); + /* R1 = (xa + xc) */ + R1 = __SSAT(T1 + S1, 16U); + + /* S0 = (ya - yc) */ + S0 = __SSAT(T0 - S0, 16); + /* S1 = (xa - xc) */ + S1 = __SSAT(T1 - S1, 16); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* input is down scale by 4 to avoid overflow */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2U] >> 2U; + T1 = pSrc16[(i1 * 2U) + 1U] >> 2U; + + /* input is down scale by 4 to avoid overflow */ + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2U] >> 2U; + U1 = pSrc16[(i3 * 2U) + 1] >> 2U; + + /* T0 = (yb + yd) */ + T0 = __SSAT(T0 + U0, 16U); + /* T1 = (xb + xd) */ + T1 = __SSAT(T1 + U1, 16U); + + /* writing the butterfly processed i0 sample */ + /* ya' = ya + yb + yc + yd */ + /* xa' = xa + xb + xc + xd */ + pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U); + pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U); + + /* R0 = (ya + yc) - (yb + yd) */ + /* R1 = (xa + xc) - (xb + xd) */ + R0 = __SSAT(R0 - T0, 16U); + R1 = __SSAT(R1 - T1, 16U); + + /* co2 & si2 are read from Coefficient pointer */ + Co2 = pCoef16[2U * ic * 2U]; + Si2 = pCoef16[(2U * ic * 2U) + 1]; + + /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + out1 = (q15_t) ((Co2 * R0 + Si2 * R1) >> 16U); + /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16U); + + /* Reading i0+fftLen/4 */ + /* input is down scale by 4 to avoid overflow */ + /* T0 = yb, T1 = xb */ + T0 = pSrc16[i1 * 2U] >> 2; + T1 = pSrc16[(i1 * 2U) + 1] >> 2; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* writing output(xc', yc') in little endian format */ + pSrc16[i1 * 2U] = out1; + pSrc16[(i1 * 2U) + 1] = out2; + + /* Butterfly calculations */ + /* input is down scale by 4 to avoid overflow */ + /* U0 = yd, U1 = xd */ + U0 = pSrc16[i3 * 2U] >> 2; + U1 = pSrc16[(i3 * 2U) + 1] >> 2; + /* T0 = yb-yd */ + T0 = __SSAT(T0 - U0, 16); + /* T1 = xb-xd */ + T1 = __SSAT(T1 - U1, 16); + + /* R1 = (ya-yc) + (xb- xd), R0 = (xa-xc) - (yb-yd)) */ + R0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16); + R1 = (q15_t) __SSAT((q31_t) (S1 + T0), 16); + + /* S1 = (ya-yc) - (xb- xd), S0 = (xa-xc) + (yb-yd)) */ + S0 = (q15_t) __SSAT(((q31_t) S0 + T1), 16U); + S1 = (q15_t) __SSAT(((q31_t) S1 - T0), 16U); + + /* co1 & si1 are read from Coefficient pointer */ + Co1 = pCoef16[ic * 2U]; + Si1 = pCoef16[(ic * 2U) + 1]; + /* Butterfly process for the i0+fftLen/2 sample */ + /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + out1 = (q15_t) ((Si1 * S1 + Co1 * S0) >> 16); + /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16); + + /* writing output(xb', yb') in little endian format */ + pSrc16[i2 * 2U] = out1; + pSrc16[(i2 * 2U) + 1] = out2; + + /* Co3 & si3 are read from Coefficient pointer */ + Co3 = pCoef16[3U * (ic * 2U)]; + Si3 = pCoef16[(3U * (ic * 2U)) + 1]; + /* Butterfly process for the i0+3fftLen/4 sample */ + /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */ + out1 = (q15_t) ((Si3 * R1 + Co3 * R0) >> 16U); + /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */ + out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16U); + /* writing output(xd', yd') in little endian format */ + pSrc16[i3 * 2U] = out1; + pSrc16[(i3 * 2U) + 1] = out2; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1U; + + } while (--j); + /* data is in 4.11(q11) format */ + + /* end of first stage process */ + + + /* start of middle stage process */ + + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2U; + + /* Calculation of Middle stage */ + for (k = fftLen / 4U; k > 4U; k >>= 2U) + { + /* Initializations for the middle stage */ + n1 = n2; + n2 >>= 2U; + ic = 0U; + + for (j = 0U; j <= (n2 - 1U); j++) + { + /* index calculation for the coefficients */ + Co1 = pCoef16[ic * 2U]; + Si1 = pCoef16[(ic * 2U) + 1U]; + Co2 = pCoef16[2U * (ic * 2U)]; + Si2 = pCoef16[(2U * (ic * 2U)) + 1U]; + Co3 = pCoef16[3U * (ic * 2U)]; + Si3 = pCoef16[(3U * (ic * 2U)) + 1U]; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Butterfly implementation */ + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2U]; + T1 = pSrc16[(i0 * 2U) + 1U]; + + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2U]; + S1 = pSrc16[(i2 * 2U) + 1U]; + + /* R0 = (ya + yc), R1 = (xa + xc) */ + R0 = __SSAT(T0 + S0, 16); + R1 = __SSAT(T1 + S1, 16); + + /* S0 = (ya - yc), S1 =(xa - xc) */ + S0 = __SSAT(T0 - S0, 16); + S1 = __SSAT(T1 - S1, 16); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2U]; + T1 = pSrc16[(i1 * 2U) + 1U]; + + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2U]; + U1 = pSrc16[(i3 * 2U) + 1U]; + + + /* T0 = (yb + yd), T1 = (xb + xd) */ + T0 = __SSAT(T0 + U0, 16); + T1 = __SSAT(T1 + U1, 16); + + /* writing the butterfly processed i0 sample */ + + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + out1 = ((R0 >> 1U) + (T0 >> 1U)) >> 1U; + out2 = ((R1 >> 1U) + (T1 >> 1U)) >> 1U; + + pSrc16[i0 * 2U] = out1; + pSrc16[(2U * i0) + 1U] = out2; + + /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ + R0 = (R0 >> 1U) - (T0 >> 1U); + R1 = (R1 >> 1U) - (T1 >> 1U); + + /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ + out1 = (q15_t) ((Co2 * R0 + Si2 * R1) >> 16U); + + /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out2 = (q15_t) ((-Si2 * R0 + Co2 * R1) >> 16U); + + /* Reading i0+3fftLen/4 */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2U]; + T1 = pSrc16[(i1 * 2U) + 1U]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + pSrc16[i1 * 2U] = out1; + pSrc16[(i1 * 2U) + 1U] = out2; + + /* Butterfly calculations */ + + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2U]; + U1 = pSrc16[(i3 * 2U) + 1U]; + + /* T0 = yb-yd, T1 = xb-xd */ + T0 = __SSAT(T0 - U0, 16); + T1 = __SSAT(T1 - U1, 16); + + /* R0 = (ya-yc) + (xb- xd), R1 = (xa-xc) - (yb-yd)) */ + R0 = (S0 >> 1U) - (T1 >> 1U); + R1 = (S1 >> 1U) + (T0 >> 1U); + + /* S0 = (ya-yc) - (xb- xd), S1 = (xa-xc) + (yb-yd)) */ + S0 = (S0 >> 1U) + (T1 >> 1U); + S1 = (S1 >> 1U) - (T0 >> 1U); + + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = (q15_t) ((Co1 * S0 + Si1 * S1) >> 16U); + + out2 = (q15_t) ((-Si1 * S0 + Co1 * S1) >> 16U); + + /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + pSrc16[i2 * 2U] = out1; + pSrc16[(i2 * 2U) + 1U] = out2; + + /* Butterfly process for the i0+3fftLen/4 sample */ + out1 = (q15_t) ((Si3 * R1 + Co3 * R0) >> 16U); + + out2 = (q15_t) ((-Si3 * R0 + Co3 * R1) >> 16U); + /* xd' = (xa-yb-xc+yd)* Co3 + (ya+xb-yc-xd)* (si3) */ + /* yd' = (ya+xb-yc-xd)* Co3 - (xa-yb-xc+yd)* (si3) */ + pSrc16[i3 * 2U] = out1; + pSrc16[(i3 * 2U) + 1U] = out2; + } + } + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2U; + } + /* end of middle stage process */ + + + /* data is in 10.6(q6) format for the 1024 point */ + /* data is in 8.8(q8) format for the 256 point */ + /* data is in 6.10(q10) format for the 64 point */ + /* data is in 4.12(q12) format for the 16 point */ + + /* Initializations for the last stage */ + n1 = n2; + n2 >>= 2U; + + /* start of last stage process */ + + /* Butterfly implementation */ + for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2U]; + T1 = pSrc16[(i0 * 2U) + 1U]; + + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2U]; + S1 = pSrc16[(i2 * 2U) + 1U]; + + /* R0 = (ya + yc), R1 = (xa + xc) */ + R0 = __SSAT(T0 + S0, 16U); + R1 = __SSAT(T1 + S1, 16U); + + /* S0 = (ya - yc), S1 = (xa - xc) */ + S0 = __SSAT(T0 - S0, 16U); + S1 = __SSAT(T1 - S1, 16U); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2U]; + T1 = pSrc16[(i1 * 2U) + 1U]; + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2U]; + U1 = pSrc16[(i3 * 2U) + 1U]; + + /* T0 = (yb + yd), T1 = (xb + xd)) */ + T0 = __SSAT(T0 + U0, 16U); + T1 = __SSAT(T1 + U1, 16U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U); + pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U); + + /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ + R0 = (R0 >> 1U) - (T0 >> 1U); + R1 = (R1 >> 1U) - (T1 >> 1U); + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2U]; + T1 = pSrc16[(i1 * 2U) + 1U]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd) */ + /* yc' = (ya-yb+yc-yd) */ + pSrc16[i1 * 2U] = R0; + pSrc16[(i1 * 2U) + 1U] = R1; + + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2U]; + U1 = pSrc16[(i3 * 2U) + 1U]; + /* T0 = (yb - yd), T1 = (xb - xd) */ + T0 = __SSAT(T0 - U0, 16U); + T1 = __SSAT(T1 - U1, 16U); + + /* writing the butterfly processed i0 + fftLen/2 sample */ + /* xb' = (xa+yb-xc-yd) */ + /* yb' = (ya-xb-yc+xd) */ + pSrc16[i2 * 2U] = (S0 >> 1U) + (T1 >> 1U); + pSrc16[(i2 * 2U) + 1U] = (S1 >> 1U) - (T0 >> 1U); + + /* writing the butterfly processed i0 + 3fftLen/4 sample */ + /* xd' = (xa-yb-xc+yd) */ + /* yd' = (ya+xb-yc-xd) */ + pSrc16[i3 * 2U] = (S0 >> 1U) - (T1 >> 1U); + pSrc16[(i3 * 2U) + 1U] = (S1 >> 1U) + (T0 >> 1U); + + } + + /* end of last stage process */ + + /* output is in 11.5(q5) format for the 1024 point */ + /* output is in 9.7(q7) format for the 256 point */ + /* output is in 7.9(q9) format for the 64 point */ + /* output is in 5.11(q11) format for the 16 point */ + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + + +/** + * @brief Core function for the Q15 CIFFT butterfly process. + * @param[in, out] *pSrc16 points to the in-place buffer of Q15 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef16 points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +/* +* Radix-4 IFFT algorithm used is : +* +* CIFFT uses same twiddle coefficients as CFFT function +* x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4] +* +* +* IFFT is implemented with following changes in equations from FFT +* +* Input real and imaginary data: +* x(n) = xa + j * ya +* x(n+N/4 ) = xb + j * yb +* x(n+N/2 ) = xc + j * yc +* x(n+3N 4) = xd + j * yd +* +* +* Output real and imaginary data: +* x(4r) = xa'+ j * ya' +* x(4r+1) = xb'+ j * yb' +* x(4r+2) = xc'+ j * yc' +* x(4r+3) = xd'+ j * yd' +* +* +* Twiddle factors for radix-4 IFFT: +* Wn = co1 + j * (si1) +* W2n = co2 + j * (si2) +* W3n = co3 + j * (si3) + +* The real and imaginary output values for the radix-4 butterfly are +* xa' = xa + xb + xc + xd +* ya' = ya + yb + yc + yd +* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) +* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) +* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) +* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) +* xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3) +* yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3) +* +*/ + +void arm_radix4_butterfly_inverse_q15( + q15_t * pSrc16, + uint32_t fftLen, + q15_t * pCoef16, + uint32_t twidCoefModifier) +{ + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + q31_t R, S, T, U; + q31_t C1, C2, C3, out1, out2; + uint32_t n1, n2, ic, i0, j, k; + + q15_t *ptr1; + q15_t *pSi0; + q15_t *pSi1; + q15_t *pSi2; + q15_t *pSi3; + + q31_t xaya, xbyb, xcyc, xdyd; + + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2U; + + /* Index for twiddle coefficient */ + ic = 0U; + + /* Index for input read and output write */ + j = n2; + + pSi0 = pSrc16; + pSi1 = pSi0 + 2 * n2; + pSi2 = pSi1 + 2 * n2; + pSi3 = pSi2 + 2 * n2; + + /* Input is in 1.15(q15) format */ + + /* start of first stage process */ + do + { + /* Butterfly implementation */ + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T = _SIMD32_OFFSET(pSi0); + T = __SHADD16(T, 0); + T = __SHADD16(T, 0); + + /* Read yc (real), xc(imag) input */ + S = _SIMD32_OFFSET(pSi2); + S = __SHADD16(S, 0); + S = __SHADD16(S, 0); + + /* R = packed((ya + yc), (xa + xc) ) */ + R = __QADD16(T, S); + + /* S = packed((ya - yc), (xa - xc) ) */ + S = __QSUB16(T, S); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T = _SIMD32_OFFSET(pSi1); + T = __SHADD16(T, 0); + T = __SHADD16(T, 0); + + /* Read yd (real), xd(imag) input */ + U = _SIMD32_OFFSET(pSi3); + U = __SHADD16(U, 0); + U = __SHADD16(U, 0); + + /* T = packed((yb + yd), (xb + xd) ) */ + T = __QADD16(T, U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + _SIMD32_OFFSET(pSi0) = __SHADD16(R, T); + pSi0 += 2; + + /* R = packed((ya + yc) - (yb + yd), (xa + xc)- (xb + xd)) */ + R = __QSUB16(R, T); + + /* co2 & si2 are read from SIMD Coefficient pointer */ + C2 = _SIMD32_OFFSET(pCoef16 + (4U * ic)); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + out1 = __SMUSD(C2, R) >> 16U; + /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out2 = __SMUADX(C2, R); + +#else + + /* xc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out1 = __SMUADX(C2, R) >> 16U; + /* yc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + out2 = __SMUSD(__QSUB16(0, C2), R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Reading i0+fftLen/4 */ + /* T = packed(yb, xb) */ + T = _SIMD32_OFFSET(pSi1); + T = __SHADD16(T, 0); + T = __SHADD16(T, 0); + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* writing output(xc', yc') in little endian format */ + _SIMD32_OFFSET(pSi1) = + (q31_t) ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSi1 += 2; + + /* Butterfly calculations */ + /* U = packed(yd, xd) */ + U = _SIMD32_OFFSET(pSi3); + U = __SHADD16(U, 0); + U = __SHADD16(U, 0); + + /* T = packed(yb-yd, xb-xd) */ + T = __QSUB16(T, U); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __QSAX(S, T); + /* S = packed((ya-yc) + (xb- xd), (xa-xc) - (yb-yd)) */ + S = __QASX(S, T); + +#else + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __QASX(S, T); + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __QSAX(S, T); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* co1 & si1 are read from SIMD Coefficient pointer */ + C1 = _SIMD32_OFFSET(pCoef16 + (2U * ic)); + /* Butterfly process for the i0+fftLen/2 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + out1 = __SMUSD(C1, S) >> 16U; + /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + out2 = __SMUADX(C1, S); + +#else + + /* xb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + out1 = __SMUADX(C1, S) >> 16U; + /* yb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + out2 = __SMUSD(__QSUB16(0, C1), S); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* writing output(xb', yb') in little endian format */ + _SIMD32_OFFSET(pSi2) = + ((out2) & 0xFFFF0000) | ((out1) & 0x0000FFFF); + pSi2 += 2; + + + /* co3 & si3 are read from SIMD Coefficient pointer */ + C3 = _SIMD32_OFFSET(pCoef16 + (6U * ic)); + /* Butterfly process for the i0+3fftLen/4 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ + out1 = __SMUSD(C3, R) >> 16U; + /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ + out2 = __SMUADX(C3, R); + +#else + + /* xd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ + out1 = __SMUADX(C3, R) >> 16U; + /* yd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ + out2 = __SMUSD(__QSUB16(0, C3), R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* writing output(xd', yd') in little endian format */ + _SIMD32_OFFSET(pSi3) = + ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSi3 += 2; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + } while (--j); + /* data is in 4.11(q11) format */ + + /* end of first stage process */ + + + /* start of middle stage process */ + + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2U; + + /* Calculation of Middle stage */ + for (k = fftLen / 4U; k > 4U; k >>= 2U) + { + /* Initializations for the middle stage */ + n1 = n2; + n2 >>= 2U; + ic = 0U; + + for (j = 0U; j <= (n2 - 1U); j++) + { + /* index calculation for the coefficients */ + C1 = _SIMD32_OFFSET(pCoef16 + (2U * ic)); + C2 = _SIMD32_OFFSET(pCoef16 + (4U * ic)); + C3 = _SIMD32_OFFSET(pCoef16 + (6U * ic)); + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + pSi0 = pSrc16 + 2 * j; + pSi1 = pSi0 + 2 * n2; + pSi2 = pSi1 + 2 * n2; + pSi3 = pSi2 + 2 * n2; + + /* Butterfly implementation */ + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T = _SIMD32_OFFSET(pSi0); + + /* Read yc (real), xc(imag) input */ + S = _SIMD32_OFFSET(pSi2); + + /* R = packed( (ya + yc), (xa + xc)) */ + R = __QADD16(T, S); + + /* S = packed((ya - yc), (xa - xc)) */ + S = __QSUB16(T, S); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T = _SIMD32_OFFSET(pSi1); + + /* Read yd (real), xd(imag) input */ + U = _SIMD32_OFFSET(pSi3); + + /* T = packed( (yb + yd), (xb + xd)) */ + T = __QADD16(T, U); + + /* writing the butterfly processed i0 sample */ + + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + out1 = __SHADD16(R, T); + out1 = __SHADD16(out1, 0); + _SIMD32_OFFSET(pSi0) = out1; + pSi0 += 2 * n1; + + /* R = packed( (ya + yc) - (yb + yd), (xa + xc) - (xb + xd)) */ + R = __SHSUB16(R, T); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ + out1 = __SMUSD(C2, R) >> 16U; + + /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out2 = __SMUADX(C2, R); + +#else + + /* (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + out1 = __SMUADX(R, C2) >> 16U; + + /* (ya-yb+yc-yd)* (si2) + (xa-xb+xc-xd)* co2 */ + out2 = __SMUSD(__QSUB16(0, C2), R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Reading i0+3fftLen/4 */ + /* Read yb (real), xb(imag) input */ + T = _SIMD32_OFFSET(pSi1); + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) */ + /* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) */ + _SIMD32_OFFSET(pSi1) = + ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSi1 += 2 * n1; + + /* Butterfly calculations */ + + /* Read yd (real), xd(imag) input */ + U = _SIMD32_OFFSET(pSi3); + + /* T = packed(yb-yd, xb-xd) */ + T = __QSUB16(T, U); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __SHSAX(S, T); + + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __SHASX(S, T); + + + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = __SMUSD(C1, S) >> 16U; + out2 = __SMUADX(C1, S); + +#else + + /* R = packed((ya-yc) + (xb- xd) , (xa-xc) - (yb-yd)) */ + R = __SHASX(S, T); + + /* S = packed((ya-yc) - (xb- xd), (xa-xc) + (yb-yd)) */ + S = __SHSAX(S, T); + + + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = __SMUADX(S, C1) >> 16U; + out2 = __SMUSD(__QSUB16(0, C1), S); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) */ + /* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) */ + _SIMD32_OFFSET(pSi2) = + ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSi2 += 2 * n1; + + /* Butterfly process for the i0+3fftLen/4 sample */ + +#ifndef ARM_MATH_BIG_ENDIAN + + out1 = __SMUSD(C3, R) >> 16U; + out2 = __SMUADX(C3, R); + +#else + + out1 = __SMUADX(C3, R) >> 16U; + out2 = __SMUSD(__QSUB16(0, C3), R); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) */ + /* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) */ + _SIMD32_OFFSET(pSi3) = + ((out2) & 0xFFFF0000) | (out1 & 0x0000FFFF); + pSi3 += 2 * n1; + } + } + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2U; + } + /* end of middle stage process */ + + /* data is in 10.6(q6) format for the 1024 point */ + /* data is in 8.8(q8) format for the 256 point */ + /* data is in 6.10(q10) format for the 64 point */ + /* data is in 4.12(q12) format for the 16 point */ + + /* Initializations for the last stage */ + j = fftLen >> 2; + + ptr1 = &pSrc16[0]; + + /* start of last stage process */ + + /* Butterfly implementation */ + do + { + /* Read xa (real), ya(imag) input */ + xaya = *__SIMD32(ptr1)++; + + /* Read xb (real), yb(imag) input */ + xbyb = *__SIMD32(ptr1)++; + + /* Read xc (real), yc(imag) input */ + xcyc = *__SIMD32(ptr1)++; + + /* Read xd (real), yd(imag) input */ + xdyd = *__SIMD32(ptr1)++; + + /* R = packed((ya + yc), (xa + xc)) */ + R = __QADD16(xaya, xcyc); + + /* T = packed((yb + yd), (xb + xd)) */ + T = __QADD16(xbyb, xdyd); + + /* pointer updation for writing */ + ptr1 = ptr1 - 8U; + + + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + *__SIMD32(ptr1)++ = __SHADD16(R, T); + + /* T = packed((yb + yd), (xb + xd)) */ + T = __QADD16(xbyb, xdyd); + + /* xc' = (xa-xb+xc-xd) */ + /* yc' = (ya-yb+yc-yd) */ + *__SIMD32(ptr1)++ = __SHSUB16(R, T); + + /* S = packed((ya - yc), (xa - xc)) */ + S = __QSUB16(xaya, xcyc); + + /* Read yd (real), xd(imag) input */ + /* T = packed( (yb - yd), (xb - xd)) */ + U = __QSUB16(xbyb, xdyd); + +#ifndef ARM_MATH_BIG_ENDIAN + + /* xb' = (xa+yb-xc-yd) */ + /* yb' = (ya-xb-yc+xd) */ + *__SIMD32(ptr1)++ = __SHASX(S, U); + + + /* xd' = (xa-yb-xc+yd) */ + /* yd' = (ya+xb-yc-xd) */ + *__SIMD32(ptr1)++ = __SHSAX(S, U); + +#else + + /* xb' = (xa+yb-xc-yd) */ + /* yb' = (ya-xb-yc+xd) */ + *__SIMD32(ptr1)++ = __SHSAX(S, U); + + + /* xd' = (xa-yb-xc+yd) */ + /* yd' = (ya+xb-yc-xd) */ + *__SIMD32(ptr1)++ = __SHASX(S, U); + + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + } while (--j); + + /* end of last stage process */ + + /* output is in 11.5(q5) format for the 1024 point */ + /* output is in 9.7(q7) format for the 256 point */ + /* output is in 7.9(q9) format for the 64 point */ + /* output is in 5.11(q11) format for the 16 point */ + + +#else + + /* Run the below code for Cortex-M0 */ + + q15_t R0, R1, S0, S1, T0, T1, U0, U1; + q15_t Co1, Si1, Co2, Si2, Co3, Si3, out1, out2; + uint32_t n1, n2, ic, i0, i1, i2, i3, j, k; + + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + + /* n2 = fftLen/4 */ + n2 >>= 2U; + + /* Index for twiddle coefficient */ + ic = 0U; + + /* Index for input read and output write */ + i0 = 0U; + + j = n2; + + /* Input is in 1.15(q15) format */ + + /* Start of first stage process */ + do + { + /* Butterfly implementation */ + + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* input is down scale by 4 to avoid overflow */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2U] >> 2U; + T1 = pSrc16[(i0 * 2U) + 1U] >> 2U; + /* input is down scale by 4 to avoid overflow */ + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2U] >> 2U; + S1 = pSrc16[(i2 * 2U) + 1U] >> 2U; + + /* R0 = (ya + yc), R1 = (xa + xc) */ + R0 = __SSAT(T0 + S0, 16U); + R1 = __SSAT(T1 + S1, 16U); + /* S0 = (ya - yc), S1 = (xa - xc) */ + S0 = __SSAT(T0 - S0, 16U); + S1 = __SSAT(T1 - S1, 16U); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* input is down scale by 4 to avoid overflow */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2U] >> 2U; + T1 = pSrc16[(i1 * 2U) + 1U] >> 2U; + /* Read yd (real), xd(imag) input */ + /* input is down scale by 4 to avoid overflow */ + U0 = pSrc16[i3 * 2U] >> 2U; + U1 = pSrc16[(i3 * 2U) + 1U] >> 2U; + + /* T0 = (yb + yd), T1 = (xb + xd) */ + T0 = __SSAT(T0 + U0, 16U); + T1 = __SSAT(T1 + U1, 16U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U); + pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U); + + /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc)- (xb + xd) */ + R0 = __SSAT(R0 - T0, 16U); + R1 = __SSAT(R1 - T1, 16U); + /* co2 & si2 are read from Coefficient pointer */ + Co2 = pCoef16[2U * ic * 2U]; + Si2 = pCoef16[(2U * ic * 2U) + 1U]; + /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ + out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16U); + /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + out2 = (q15_t) ((Si2 * R0 + Co2 * R1) >> 16U); + + /* Reading i0+fftLen/4 */ + /* input is down scale by 4 to avoid overflow */ + /* T0 = yb, T1 = xb */ + T0 = pSrc16[i1 * 2U] >> 2U; + T1 = pSrc16[(i1 * 2U) + 1U] >> 2U; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* writing output(xc', yc') in little endian format */ + pSrc16[i1 * 2U] = out1; + pSrc16[(i1 * 2U) + 1U] = out2; + + /* Butterfly calculations */ + /* input is down scale by 4 to avoid overflow */ + /* U0 = yd, U1 = xd) */ + U0 = pSrc16[i3 * 2U] >> 2U; + U1 = pSrc16[(i3 * 2U) + 1U] >> 2U; + + /* T0 = yb-yd, T1 = xb-xd) */ + T0 = __SSAT(T0 - U0, 16U); + T1 = __SSAT(T1 - U1, 16U); + /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */ + R0 = (q15_t) __SSAT((q31_t) (S0 + T1), 16); + R1 = (q15_t) __SSAT((q31_t) (S1 - T0), 16); + /* S = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */ + S0 = (q15_t) __SSAT((q31_t) (S0 - T1), 16); + S1 = (q15_t) __SSAT((q31_t) (S1 + T0), 16); + + /* co1 & si1 are read from Coefficient pointer */ + Co1 = pCoef16[ic * 2U]; + Si1 = pCoef16[(ic * 2U) + 1U]; + /* Butterfly process for the i0+fftLen/2 sample */ + /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ + out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16U); + /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ + out2 = (q15_t) ((Si1 * S0 + Co1 * S1) >> 16U); + /* writing output(xb', yb') in little endian format */ + pSrc16[i2 * 2U] = out1; + pSrc16[(i2 * 2U) + 1U] = out2; + + /* Co3 & si3 are read from Coefficient pointer */ + Co3 = pCoef16[3U * ic * 2U]; + Si3 = pCoef16[(3U * ic * 2U) + 1U]; + /* Butterfly process for the i0+3fftLen/4 sample */ + /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */ + out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16U); + /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */ + out2 = (q15_t) ((Si3 * R0 + Co3 * R1) >> 16U); + /* writing output(xd', yd') in little endian format */ + pSrc16[i3 * 2U] = out1; + pSrc16[(i3 * 2U) + 1U] = out2; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1U; + + } while (--j); + + /* End of first stage process */ + + /* data is in 4.11(q11) format */ + + + /* Start of Middle stage process */ + + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2U; + + /* Calculation of Middle stage */ + for (k = fftLen / 4U; k > 4U; k >>= 2U) + { + /* Initializations for the middle stage */ + n1 = n2; + n2 >>= 2U; + ic = 0U; + + for (j = 0U; j <= (n2 - 1U); j++) + { + /* index calculation for the coefficients */ + Co1 = pCoef16[ic * 2U]; + Si1 = pCoef16[(ic * 2U) + 1U]; + Co2 = pCoef16[2U * ic * 2U]; + Si2 = pCoef16[2U * ic * 2U + 1U]; + Co3 = pCoef16[3U * ic * 2U]; + Si3 = pCoef16[(3U * ic * 2U) + 1U]; + + /* Twiddle coefficients index modifier */ + ic = ic + twidCoefModifier; + + /* Butterfly implementation */ + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2U]; + T1 = pSrc16[(i0 * 2U) + 1U]; + + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2U]; + S1 = pSrc16[(i2 * 2U) + 1U]; + + + /* R0 = (ya + yc), R1 = (xa + xc) */ + R0 = __SSAT(T0 + S0, 16U); + R1 = __SSAT(T1 + S1, 16U); + /* S0 = (ya - yc), S1 = (xa - xc) */ + S0 = __SSAT(T0 - S0, 16U); + S1 = __SSAT(T1 - S1, 16U); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2U]; + T1 = pSrc16[(i1 * 2U) + 1U]; + + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2U]; + U1 = pSrc16[(i3 * 2U) + 1U]; + + /* T0 = (yb + yd), T1 = (xb + xd) */ + T0 = __SSAT(T0 + U0, 16U); + T1 = __SSAT(T1 + U1, 16U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc16[i0 * 2U] = ((R0 >> 1U) + (T0 >> 1U)) >> 1U; + pSrc16[(i0 * 2U) + 1U] = ((R1 >> 1U) + (T1 >> 1U)) >> 1U; + + /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ + R0 = (R0 >> 1U) - (T0 >> 1U); + R1 = (R1 >> 1U) - (T1 >> 1U); + + /* (ya-yb+yc-yd)* (si2) - (xa-xb+xc-xd)* co2 */ + out1 = (q15_t) ((Co2 * R0 - Si2 * R1) >> 16); + /* (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + out2 = (q15_t) ((Si2 * R0 + Co2 * R1) >> 16); + + /* Reading i0+3fftLen/4 */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2U]; + T1 = pSrc16[(i1 * 2U) + 1U]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) */ + /* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) */ + pSrc16[i1 * 2U] = out1; + pSrc16[(i1 * 2U) + 1U] = out2; + + /* Butterfly calculations */ + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2U]; + U1 = pSrc16[(i3 * 2U) + 1U]; + + /* T0 = yb-yd, T1 = xb-xd) */ + T0 = __SSAT(T0 - U0, 16U); + T1 = __SSAT(T1 - U1, 16U); + + /* R0 = (ya-yc) - (xb- xd) , R1 = (xa-xc) + (yb-yd) */ + R0 = (S0 >> 1U) + (T1 >> 1U); + R1 = (S1 >> 1U) - (T0 >> 1U); + + /* S1 = (ya-yc) + (xb- xd), S1 = (xa-xc) - (yb-yd) */ + S0 = (S0 >> 1U) - (T1 >> 1U); + S1 = (S1 >> 1U) + (T0 >> 1U); + + /* Butterfly process for the i0+fftLen/2 sample */ + out1 = (q15_t) ((Co1 * S0 - Si1 * S1) >> 16U); + out2 = (q15_t) ((Si1 * S0 + Co1 * S1) >> 16U); + /* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) */ + /* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) */ + pSrc16[i2 * 2U] = out1; + pSrc16[(i2 * 2U) + 1U] = out2; + + /* Butterfly process for the i0+3fftLen/4 sample */ + out1 = (q15_t) ((Co3 * R0 - Si3 * R1) >> 16U); + + out2 = (q15_t) ((Si3 * R0 + Co3 * R1) >> 16U); + /* xd' = (xa+yb-xc-yd)* Co3 - (ya-xb-yc+xd)* (si3) */ + /* yd' = (ya-xb-yc+xd)* Co3 + (xa+yb-xc-yd)* (si3) */ + pSrc16[i3 * 2U] = out1; + pSrc16[(i3 * 2U) + 1U] = out2; + + + } + } + /* Twiddle coefficients index modifier */ + twidCoefModifier <<= 2U; + } + /* End of Middle stages process */ + + + /* data is in 10.6(q6) format for the 1024 point */ + /* data is in 8.8(q8) format for the 256 point */ + /* data is in 6.10(q10) format for the 64 point */ + /* data is in 4.12(q12) format for the 16 point */ + + /* start of last stage process */ + + + /* Initializations for the last stage */ + n1 = n2; + n2 >>= 2U; + + /* Butterfly implementation */ + for (i0 = 0U; i0 <= (fftLen - n1); i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc16[i0 + 0], pSrc16[i0 + fftLen/4], pSrc16[i0 + fftLen/2], pSrc16[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Reading i0, i0+fftLen/2 inputs */ + /* Read ya (real), xa(imag) input */ + T0 = pSrc16[i0 * 2U]; + T1 = pSrc16[(i0 * 2U) + 1U]; + /* Read yc (real), xc(imag) input */ + S0 = pSrc16[i2 * 2U]; + S1 = pSrc16[(i2 * 2U) + 1U]; + + /* R0 = (ya + yc), R1 = (xa + xc) */ + R0 = __SSAT(T0 + S0, 16U); + R1 = __SSAT(T1 + S1, 16U); + /* S0 = (ya - yc), S1 = (xa - xc) */ + S0 = __SSAT(T0 - S0, 16U); + S1 = __SSAT(T1 - S1, 16U); + + /* Reading i0+fftLen/4 , i0+3fftLen/4 inputs */ + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2U]; + T1 = pSrc16[(i1 * 2U) + 1U]; + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2U]; + U1 = pSrc16[(i3 * 2U) + 1U]; + + /* T0 = (yb + yd), T1 = (xb + xd) */ + T0 = __SSAT(T0 + U0, 16U); + T1 = __SSAT(T1 + U1, 16U); + + /* writing the butterfly processed i0 sample */ + /* xa' = xa + xb + xc + xd */ + /* ya' = ya + yb + yc + yd */ + pSrc16[i0 * 2U] = (R0 >> 1U) + (T0 >> 1U); + pSrc16[(i0 * 2U) + 1U] = (R1 >> 1U) + (T1 >> 1U); + + /* R0 = (ya + yc) - (yb + yd), R1 = (xa + xc) - (xb + xd) */ + R0 = (R0 >> 1U) - (T0 >> 1U); + R1 = (R1 >> 1U) - (T1 >> 1U); + + /* Read yb (real), xb(imag) input */ + T0 = pSrc16[i1 * 2U]; + T1 = pSrc16[(i1 * 2U) + 1U]; + + /* writing the butterfly processed i0 + fftLen/4 sample */ + /* xc' = (xa-xb+xc-xd) */ + /* yc' = (ya-yb+yc-yd) */ + pSrc16[i1 * 2U] = R0; + pSrc16[(i1 * 2U) + 1U] = R1; + + /* Read yd (real), xd(imag) input */ + U0 = pSrc16[i3 * 2U]; + U1 = pSrc16[(i3 * 2U) + 1U]; + /* T0 = (yb - yd), T1 = (xb - xd) */ + T0 = __SSAT(T0 - U0, 16U); + T1 = __SSAT(T1 - U1, 16U); + + /* writing the butterfly processed i0 + fftLen/2 sample */ + /* xb' = (xa-yb-xc+yd) */ + /* yb' = (ya+xb-yc-xd) */ + pSrc16[i2 * 2U] = (S0 >> 1U) - (T1 >> 1U); + pSrc16[(i2 * 2U) + 1U] = (S1 >> 1U) + (T0 >> 1U); + + + /* writing the butterfly processed i0 + 3fftLen/4 sample */ + /* xd' = (xa+yb-xc-yd) */ + /* yd' = (ya-xb-yc+xd) */ + pSrc16[i3 * 2U] = (S0 >> 1U) + (T1 >> 1U); + pSrc16[(i3 * 2U) + 1U] = (S1 >> 1U) - (T0 >> 1U); + } + /* end of last stage process */ + + /* output is in 11.5(q5) format for the 1024 point */ + /* output is in 9.7(q7) format for the 256 point */ + /* output is in 7.9(q9) format for the 64 point */ + /* output is in 5.11(q11) format for the 16 point */ + +#endif /* #if defined (ARM_MATH_DSP) */ + +} diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c new file mode 100644 index 0000000..35025bb --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix4_q31.c @@ -0,0 +1,1389 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix4_q31.c + * Description: This file has function definition of Radix-4 FFT & IFFT function and + * In-place bit reversal using bit reversal table + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +void arm_radix4_butterfly_inverse_q31( +q31_t * pSrc, +uint32_t fftLen, +q31_t * pCoef, +uint32_t twidCoefModifier); + +void arm_radix4_butterfly_q31( +q31_t * pSrc, +uint32_t fftLen, +q31_t * pCoef, +uint32_t twidCoefModifier); + +void arm_bitreversal_q31( +q31_t * pSrc, +uint32_t fftLen, +uint16_t bitRevFactor, +uint16_t * pBitRevTab); + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup ComplexFFT + * @{ + */ + +/** + * @details + * @brief Processing function for the Q31 CFFT/CIFFT. + * @deprecated Do not use this function. It has been superseded by \ref arm_cfft_q31 and will be removed + * @param[in] *S points to an instance of the Q31 CFFT/CIFFT structure. + * @param[in, out] *pSrc points to the complex data buffer of size 2*fftLen. Processing occurs in-place. + * @return none. + * + * \par Input and output formats: + * \par + * Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. + * Hence the output format is different for different FFT sizes. + * The input and output formats for different FFT sizes and number of bits to upscale are mentioned in the tables below for CFFT and CIFFT: + * \par + * \image html CFFTQ31.gif "Input and Output Formats for Q31 CFFT" + * \image html CIFFTQ31.gif "Input and Output Formats for Q31 CIFFT" + * + */ + +void arm_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc) +{ + if (S->ifftFlag == 1U) + { + /* Complex IFFT radix-4 */ + arm_radix4_butterfly_inverse_q31(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); + } + else + { + /* Complex FFT radix-4 */ + arm_radix4_butterfly_q31(pSrc, S->fftLen, S->pTwiddle, S->twidCoefModifier); + } + + if (S->bitReverseFlag == 1U) + { + /* Bit Reversal */ + arm_bitreversal_q31(pSrc, S->fftLen, S->bitRevFactor, S->pBitRevTable); + } + +} + +/** + * @} end of ComplexFFT group + */ + +/* +* Radix-4 FFT algorithm used is : +* +* Input real and imaginary data: +* x(n) = xa + j * ya +* x(n+N/4 ) = xb + j * yb +* x(n+N/2 ) = xc + j * yc +* x(n+3N 4) = xd + j * yd +* +* +* Output real and imaginary data: +* x(4r) = xa'+ j * ya' +* x(4r+1) = xb'+ j * yb' +* x(4r+2) = xc'+ j * yc' +* x(4r+3) = xd'+ j * yd' +* +* +* Twiddle factors for radix-4 FFT: +* Wn = co1 + j * (- si1) +* W2n = co2 + j * (- si2) +* W3n = co3 + j * (- si3) +* +* Butterfly implementation: +* xa' = xa + xb + xc + xd +* ya' = ya + yb + yc + yd +* xb' = (xa+yb-xc-yd)* co1 + (ya-xb-yc+xd)* (si1) +* yb' = (ya-xb-yc+xd)* co1 - (xa+yb-xc-yd)* (si1) +* xc' = (xa-xb+xc-xd)* co2 + (ya-yb+yc-yd)* (si2) +* yc' = (ya-yb+yc-yd)* co2 - (xa-xb+xc-xd)* (si2) +* xd' = (xa-yb-xc+yd)* co3 + (ya+xb-yc-xd)* (si3) +* yd' = (ya+xb-yc-xd)* co3 - (xa-yb-xc+yd)* (si3) +* +*/ + +/** + * @brief Core function for the Q31 CFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_radix4_butterfly_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pCoef, + uint32_t twidCoefModifier) +{ +#if defined(ARM_MATH_CM7) + uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k; + q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3; + + q31_t xa, xb, xc, xd; + q31_t ya, yb, yc, yd; + q31_t xa_out, xb_out, xc_out, xd_out; + q31_t ya_out, yb_out, yc_out, yd_out; + + q31_t *ptr1; + q63_t xaya, xbyb, xcyc, xdyd; + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + + /* start of first stage process */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + /* n2 = fftLen/4 */ + n2 >>= 2U; + i0 = 0U; + ia1 = 0U; + + j = n2; + + /* Calculation of first stage */ + do + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* input is in 1.31(q31) format and provide 4 guard bits for the input */ + + /* Butterfly implementation */ + /* xa + xc */ + r1 = (pSrc[(2U * i0)] >> 4U) + (pSrc[(2U * i2)] >> 4U); + /* xa - xc */ + r2 = (pSrc[2U * i0] >> 4U) - (pSrc[2U * i2] >> 4U); + + /* xb + xd */ + t1 = (pSrc[2U * i1] >> 4U) + (pSrc[2U * i3] >> 4U); + + /* ya + yc */ + s1 = (pSrc[(2U * i0) + 1U] >> 4U) + (pSrc[(2U * i2) + 1U] >> 4U); + /* ya - yc */ + s2 = (pSrc[(2U * i0) + 1U] >> 4U) - (pSrc[(2U * i2) + 1U] >> 4U); + + /* xa' = xa + xb + xc + xd */ + pSrc[2U * i0] = (r1 + t1); + /* (xa + xc) - (xb + xd) */ + r1 = r1 - t1; + /* yb + yd */ + t2 = (pSrc[(2U * i1) + 1U] >> 4U) + (pSrc[(2U * i3) + 1U] >> 4U); + + /* ya' = ya + yb + yc + yd */ + pSrc[(2U * i0) + 1U] = (s1 + t2); + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* yb - yd */ + t1 = (pSrc[(2U * i1) + 1U] >> 4U) - (pSrc[(2U * i3) + 1U] >> 4U); + /* xb - xd */ + t2 = (pSrc[2U * i1] >> 4U) - (pSrc[2U * i3] >> 4U); + + /* index calculation for the coefficients */ + ia2 = 2U * ia1; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) + + ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1U; + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2U * i1) + 1U] = (((int32_t) (((q63_t) s1 * co2) >> 32)) - + ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1U; + + /* (xa - xc) + (yb - yd) */ + r1 = r2 + t1; + /* (xa - xc) - (yb - yd) */ + r2 = r2 - t1; + + /* (ya - yc) - (xb - xd) */ + s1 = s2 - t2; + /* (ya - yc) + (xb - xd) */ + s2 = s2 + t2; + + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) + + ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1U; + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) - + ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1U; + + /* index calculation for the coefficients */ + ia3 = 3U * ia1; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2U * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) + + ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1U; + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) - + ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1U; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1U; + + } while (--j); + + /* end of first stage process */ + + /* data is in 5.27(q27) format */ + + + /* start of Middle stages process */ + + + /* each stage in middle stages provides two down scaling of the input */ + + twidCoefModifier <<= 2U; + + + for (k = fftLen / 4U; k > 4U; k >>= 2U) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2U; + ia1 = 0U; + + /* Calculation of first stage */ + for (j = 0U; j <= (n2 - 1U); j++) + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSrc[2U * i0] + pSrc[2U * i2]; + /* xa - xc */ + r2 = pSrc[2U * i0] - pSrc[2U * i2]; + + /* ya + yc */ + s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U]; + /* ya - yc */ + s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U]; + + /* xb + xd */ + t1 = pSrc[2U * i1] + pSrc[2U * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2U * i0] = (r1 + t1) >> 2U; + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U]; + /* ya' = ya + yb + yc + yd */ + pSrc[(2U * i0) + 1U] = (s1 + t2) >> 2U; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U]; + /* (xb - xd) */ + t2 = pSrc[2U * i1] - pSrc[2U * i3]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) + + ((int32_t) (((q63_t) s1 * si2) >> 32))) >> 1U; + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSrc[(2U * i1) + 1U] = (((int32_t) (((q63_t) s1 * co2) >> 32)) - + ((int32_t) (((q63_t) r1 * si2) >> 32))) >> 1U; + + /* (xa - xc) + (yb - yd) */ + r1 = r2 + t1; + /* (xa - xc) - (yb - yd) */ + r2 = r2 - t1; + + /* (ya - yc) - (xb - xd) */ + s1 = s2 - t2; + /* (ya - yc) + (xb - xd) */ + s2 = s2 + t2; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) + + ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1U; + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) - + ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1U; + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSrc[2U * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) + + ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1U; + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) - + ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1U; + } + } + twidCoefModifier <<= 2U; + } +#else + uint32_t n1, n2, ia1, ia2, ia3, i0, j, k; + q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3; + + q31_t xa, xb, xc, xd; + q31_t ya, yb, yc, yd; + q31_t xa_out, xb_out, xc_out, xd_out; + q31_t ya_out, yb_out, yc_out, yd_out; + + q31_t *ptr1; + q31_t *pSi0; + q31_t *pSi1; + q31_t *pSi2; + q31_t *pSi3; + q63_t xaya, xbyb, xcyc, xdyd; + /* Total process is divided into three stages */ + + /* process first stage, middle stages, & last stage */ + + + /* start of first stage process */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + /* n2 = fftLen/4 */ + n2 >>= 2U; + + ia1 = 0U; + + j = n2; + + pSi0 = pSrc; + pSi1 = pSi0 + 2 * n2; + pSi2 = pSi1 + 2 * n2; + pSi3 = pSi2 + 2 * n2; + + /* Calculation of first stage */ + do + { + /* input is in 1.31(q31) format and provide 4 guard bits for the input */ + + /* Butterfly implementation */ + /* xa + xc */ + r1 = (pSi0[0] >> 4U) + (pSi2[0] >> 4U); + /* xa - xc */ + r2 = (pSi0[0] >> 4U) - (pSi2[0] >> 4U); + + /* xb + xd */ + t1 = (pSi1[0] >> 4U) + (pSi3[0] >> 4U); + + /* ya + yc */ + s1 = (pSi0[1] >> 4U) + (pSi2[1] >> 4U); + /* ya - yc */ + s2 = (pSi0[1] >> 4U) - (pSi2[1] >> 4U); + + /* xa' = xa + xb + xc + xd */ + *pSi0++ = (r1 + t1); + /* (xa + xc) - (xb + xd) */ + r1 = r1 - t1; + /* yb + yd */ + t2 = (pSi1[1] >> 4U) + (pSi3[1] >> 4U); + + /* ya' = ya + yb + yc + yd */ + *pSi0++ = (s1 + t2); + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* yb - yd */ + t1 = (pSi1[1] >> 4U) - (pSi3[1] >> 4U); + /* xb - xd */ + t2 = (pSi1[0] >> 4U) - (pSi3[0] >> 4U); + + /* index calculation for the coefficients */ + ia2 = 2U * ia1; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + *pSi1++ = (((int32_t) (((q63_t) r1 * co2) >> 32)) + + ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1U; + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + *pSi1++ = (((int32_t) (((q63_t) s1 * co2) >> 32)) - + ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1U; + + /* (xa - xc) + (yb - yd) */ + r1 = r2 + t1; + /* (xa - xc) - (yb - yd) */ + r2 = r2 - t1; + + /* (ya - yc) - (xb - xd) */ + s1 = s2 - t2; + /* (ya - yc) + (xb - xd) */ + s2 = s2 + t2; + + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + *pSi2++ = (((int32_t) (((q63_t) r1 * co1) >> 32)) + + ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1U; + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + *pSi2++ = (((int32_t) (((q63_t) s1 * co1) >> 32)) - + ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1U; + + /* index calculation for the coefficients */ + ia3 = 3U * ia1; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + *pSi3++ = (((int32_t) (((q63_t) r2 * co3) >> 32)) + + ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1U; + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + *pSi3++ = (((int32_t) (((q63_t) s2 * co3) >> 32)) - + ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1U; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + } while (--j); + + /* end of first stage process */ + + /* data is in 5.27(q27) format */ + + + /* start of Middle stages process */ + + + /* each stage in middle stages provides two down scaling of the input */ + + twidCoefModifier <<= 2U; + + + for (k = fftLen / 4U; k > 4U; k >>= 2U) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2U; + ia1 = 0U; + + /* Calculation of first stage */ + for (j = 0U; j <= (n2 - 1U); j++) + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + pSi0 = pSrc + 2 * j; + pSi1 = pSi0 + 2 * n2; + pSi2 = pSi1 + 2 * n2; + pSi3 = pSi2 + 2 * n2; + + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSi0[0] + pSi2[0]; + + /* xa - xc */ + r2 = pSi0[0] - pSi2[0]; + + + /* ya + yc */ + s1 = pSi0[1] + pSi2[1]; + + /* ya - yc */ + s2 = pSi0[1] - pSi2[1]; + + + /* xb + xd */ + t1 = pSi1[0] + pSi3[0]; + + + /* xa' = xa + xb + xc + xd */ + pSi0[0] = (r1 + t1) >> 2U; + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + + /* yb + yd */ + t2 = pSi1[1] + pSi3[1]; + + /* ya' = ya + yb + yc + yd */ + pSi0[1] = (s1 + t2) >> 2U; + pSi0 += 2 * n1; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSi1[1] - pSi3[1]; + + /* (xb - xd) */ + t2 = pSi1[0] - pSi3[0]; + + + /* xc' = (xa-xb+xc-xd)co2 + (ya-yb+yc-yd)(si2) */ + pSi1[0] = (((int32_t) (((q63_t) r1 * co2) >> 32)) + + ((int32_t) (((q63_t) s1 * si2) >> 32))) >> 1U; + + /* yc' = (ya-yb+yc-yd)co2 - (xa-xb+xc-xd)(si2) */ + pSi1[1] = (((int32_t) (((q63_t) s1 * co2) >> 32)) - + ((int32_t) (((q63_t) r1 * si2) >> 32))) >> 1U; + pSi1 += 2 * n1; + + /* (xa - xc) + (yb - yd) */ + r1 = r2 + t1; + /* (xa - xc) - (yb - yd) */ + r2 = r2 - t1; + + /* (ya - yc) - (xb - xd) */ + s1 = s2 - t2; + /* (ya - yc) + (xb - xd) */ + s2 = s2 + t2; + + /* xb' = (xa+yb-xc-yd)co1 + (ya-xb-yc+xd)(si1) */ + pSi2[0] = (((int32_t) (((q63_t) r1 * co1) >> 32)) + + ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1U; + + /* yb' = (ya-xb-yc+xd)co1 - (xa+yb-xc-yd)(si1) */ + pSi2[1] = (((int32_t) (((q63_t) s1 * co1) >> 32)) - + ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1U; + pSi2 += 2 * n1; + + /* xd' = (xa-yb-xc+yd)co3 + (ya+xb-yc-xd)(si3) */ + pSi3[0] = (((int32_t) (((q63_t) r2 * co3) >> 32)) + + ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1U; + + /* yd' = (ya+xb-yc-xd)co3 - (xa-yb-xc+yd)(si3) */ + pSi3[1] = (((int32_t) (((q63_t) s2 * co3) >> 32)) - + ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1U; + pSi3 += 2 * n1; + } + } + twidCoefModifier <<= 2U; + } +#endif + + /* End of Middle stages process */ + + /* data is in 11.21(q21) format for the 1024 point as there are 3 middle stages */ + /* data is in 9.23(q23) format for the 256 point as there are 2 middle stages */ + /* data is in 7.25(q25) format for the 64 point as there are 1 middle stage */ + /* data is in 5.27(q27) format for the 16 point as there are no middle stages */ + + + /* start of Last stage process */ + /* Initializations for the last stage */ + j = fftLen >> 2; + ptr1 = &pSrc[0]; + + /* Calculations of last stage */ + do + { + +#ifndef ARM_MATH_BIG_ENDIAN + + /* Read xa (real), ya(imag) input */ + xaya = *__SIMD64(ptr1)++; + xa = (q31_t) xaya; + ya = (q31_t) (xaya >> 32); + + /* Read xb (real), yb(imag) input */ + xbyb = *__SIMD64(ptr1)++; + xb = (q31_t) xbyb; + yb = (q31_t) (xbyb >> 32); + + /* Read xc (real), yc(imag) input */ + xcyc = *__SIMD64(ptr1)++; + xc = (q31_t) xcyc; + yc = (q31_t) (xcyc >> 32); + + /* Read xc (real), yc(imag) input */ + xdyd = *__SIMD64(ptr1)++; + xd = (q31_t) xdyd; + yd = (q31_t) (xdyd >> 32); + +#else + + /* Read xa (real), ya(imag) input */ + xaya = *__SIMD64(ptr1)++; + ya = (q31_t) xaya; + xa = (q31_t) (xaya >> 32); + + /* Read xb (real), yb(imag) input */ + xbyb = *__SIMD64(ptr1)++; + yb = (q31_t) xbyb; + xb = (q31_t) (xbyb >> 32); + + /* Read xc (real), yc(imag) input */ + xcyc = *__SIMD64(ptr1)++; + yc = (q31_t) xcyc; + xc = (q31_t) (xcyc >> 32); + + /* Read xc (real), yc(imag) input */ + xdyd = *__SIMD64(ptr1)++; + yd = (q31_t) xdyd; + xd = (q31_t) (xdyd >> 32); + + +#endif + + /* xa' = xa + xb + xc + xd */ + xa_out = xa + xb + xc + xd; + + /* ya' = ya + yb + yc + yd */ + ya_out = ya + yb + yc + yd; + + /* pointer updation for writing */ + ptr1 = ptr1 - 8U; + + /* writing xa' and ya' */ + *ptr1++ = xa_out; + *ptr1++ = ya_out; + + xc_out = (xa - xb + xc - xd); + yc_out = (ya - yb + yc - yd); + + /* writing xc' and yc' */ + *ptr1++ = xc_out; + *ptr1++ = yc_out; + + xb_out = (xa + yb - xc - yd); + yb_out = (ya - xb - yc + xd); + + /* writing xb' and yb' */ + *ptr1++ = xb_out; + *ptr1++ = yb_out; + + xd_out = (xa - yb - xc + yd); + yd_out = (ya + xb - yc - xd); + + /* writing xd' and yd' */ + *ptr1++ = xd_out; + *ptr1++ = yd_out; + + + } while (--j); + + /* output is in 11.21(q21) format for the 1024 point */ + /* output is in 9.23(q23) format for the 256 point */ + /* output is in 7.25(q25) format for the 64 point */ + /* output is in 5.27(q27) format for the 16 point */ + + /* End of last stage process */ + +} + + +/** + * @brief Core function for the Q31 CIFFT butterfly process. + * @param[in, out] *pSrc points to the in-place buffer of Q31 data type. + * @param[in] fftLen length of the FFT. + * @param[in] *pCoef points to twiddle coefficient buffer. + * @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + + +/* +* Radix-4 IFFT algorithm used is : +* +* CIFFT uses same twiddle coefficients as CFFT Function +* x[k] = x[n] + (j)k * x[n + fftLen/4] + (-1)k * x[n+fftLen/2] + (-j)k * x[n+3*fftLen/4] +* +* +* IFFT is implemented with following changes in equations from FFT +* +* Input real and imaginary data: +* x(n) = xa + j * ya +* x(n+N/4 ) = xb + j * yb +* x(n+N/2 ) = xc + j * yc +* x(n+3N 4) = xd + j * yd +* +* +* Output real and imaginary data: +* x(4r) = xa'+ j * ya' +* x(4r+1) = xb'+ j * yb' +* x(4r+2) = xc'+ j * yc' +* x(4r+3) = xd'+ j * yd' +* +* +* Twiddle factors for radix-4 IFFT: +* Wn = co1 + j * (si1) +* W2n = co2 + j * (si2) +* W3n = co3 + j * (si3) + +* The real and imaginary output values for the radix-4 butterfly are +* xa' = xa + xb + xc + xd +* ya' = ya + yb + yc + yd +* xb' = (xa-yb-xc+yd)* co1 - (ya+xb-yc-xd)* (si1) +* yb' = (ya+xb-yc-xd)* co1 + (xa-yb-xc+yd)* (si1) +* xc' = (xa-xb+xc-xd)* co2 - (ya-yb+yc-yd)* (si2) +* yc' = (ya-yb+yc-yd)* co2 + (xa-xb+xc-xd)* (si2) +* xd' = (xa+yb-xc-yd)* co3 - (ya-xb-yc+xd)* (si3) +* yd' = (ya-xb-yc+xd)* co3 + (xa+yb-xc-yd)* (si3) +* +*/ + +void arm_radix4_butterfly_inverse_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pCoef, + uint32_t twidCoefModifier) +{ +#if defined(ARM_MATH_CM7) + uint32_t n1, n2, ia1, ia2, ia3, i0, i1, i2, i3, j, k; + q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3; + q31_t xa, xb, xc, xd; + q31_t ya, yb, yc, yd; + q31_t xa_out, xb_out, xc_out, xd_out; + q31_t ya_out, yb_out, yc_out, yd_out; + + q31_t *ptr1; + q63_t xaya, xbyb, xcyc, xdyd; + + /* input is be 1.31(q31) format for all FFT sizes */ + /* Total process is divided into three stages */ + /* process first stage, middle stages, & last stage */ + + /* Start of first stage process */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + /* n2 = fftLen/4 */ + n2 >>= 2U; + i0 = 0U; + ia1 = 0U; + + j = n2; + + do + { + + /* input is in 1.31(q31) format and provide 4 guard bits for the input */ + + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = (pSrc[2U * i0] >> 4U) + (pSrc[2U * i2] >> 4U); + /* xa - xc */ + r2 = (pSrc[2U * i0] >> 4U) - (pSrc[2U * i2] >> 4U); + + /* xb + xd */ + t1 = (pSrc[2U * i1] >> 4U) + (pSrc[2U * i3] >> 4U); + + /* ya + yc */ + s1 = (pSrc[(2U * i0) + 1U] >> 4U) + (pSrc[(2U * i2) + 1U] >> 4U); + /* ya - yc */ + s2 = (pSrc[(2U * i0) + 1U] >> 4U) - (pSrc[(2U * i2) + 1U] >> 4U); + + /* xa' = xa + xb + xc + xd */ + pSrc[2U * i0] = (r1 + t1); + /* (xa + xc) - (xb + xd) */ + r1 = r1 - t1; + /* yb + yd */ + t2 = (pSrc[(2U * i1) + 1U] >> 4U) + (pSrc[(2U * i3) + 1U] >> 4U); + /* ya' = ya + yb + yc + yd */ + pSrc[(2U * i0) + 1U] = (s1 + t2); + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* yb - yd */ + t1 = (pSrc[(2U * i1) + 1U] >> 4U) - (pSrc[(2U * i3) + 1U] >> 4U); + /* xb - xd */ + t2 = (pSrc[2U * i1] >> 4U) - (pSrc[2U * i3] >> 4U); + + /* index calculation for the coefficients */ + ia2 = 2U * ia1; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32)) - + ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1U; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[2U * i1 + 1U] = (((int32_t) (((q63_t) s1 * co2) >> 32)) + + ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1U; + + /* (xa - xc) - (yb - yd) */ + r1 = r2 - t1; + /* (xa - xc) + (yb - yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb - xd) */ + s1 = s2 + t2; + /* (ya - yc) - (xb - xd) */ + s2 = s2 - t2; + + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) - + ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1U; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) + + ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1U; + + /* index calculation for the coefficients */ + ia3 = 3U * ia1; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[2U * i3] = (((int32_t) (((q63_t) r2 * co3) >> 32)) - + ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1U; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) + + ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1U; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + /* Updating input index */ + i0 = i0 + 1U; + + } while (--j); + + /* data is in 5.27(q27) format */ + /* each stage provides two down scaling of the input */ + + + /* Start of Middle stages process */ + + twidCoefModifier <<= 2U; + + /* Calculation of second stage to excluding last stage */ + for (k = fftLen / 4U; k > 4U; k >>= 2U) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2U; + ia1 = 0U; + + for (j = 0; j <= (n2 - 1U); j++) + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* index calculation for the input as, */ + /* pSrc[i0 + 0], pSrc[i0 + fftLen/4], pSrc[i0 + fftLen/2U], pSrc[i0 + 3fftLen/4] */ + i1 = i0 + n2; + i2 = i1 + n2; + i3 = i2 + n2; + + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSrc[2U * i0] + pSrc[2U * i2]; + /* xa - xc */ + r2 = pSrc[2U * i0] - pSrc[2U * i2]; + + /* ya + yc */ + s1 = pSrc[(2U * i0) + 1U] + pSrc[(2U * i2) + 1U]; + /* ya - yc */ + s2 = pSrc[(2U * i0) + 1U] - pSrc[(2U * i2) + 1U]; + + /* xb + xd */ + t1 = pSrc[2U * i1] + pSrc[2U * i3]; + + /* xa' = xa + xb + xc + xd */ + pSrc[2U * i0] = (r1 + t1) >> 2U; + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + /* yb + yd */ + t2 = pSrc[(2U * i1) + 1U] + pSrc[(2U * i3) + 1U]; + /* ya' = ya + yb + yc + yd */ + pSrc[(2U * i0) + 1U] = (s1 + t2) >> 2U; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSrc[(2U * i1) + 1U] - pSrc[(2U * i3) + 1U]; + /* (xb - xd) */ + t2 = pSrc[2U * i1] - pSrc[2U * i3]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSrc[2U * i1] = (((int32_t) (((q63_t) r1 * co2) >> 32U)) - + ((int32_t) (((q63_t) s1 * si2) >> 32U))) >> 1U; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSrc[(2U * i1) + 1U] = + (((int32_t) (((q63_t) s1 * co2) >> 32U)) + + ((int32_t) (((q63_t) r1 * si2) >> 32U))) >> 1U; + + /* (xa - xc) - (yb - yd) */ + r1 = r2 - t1; + /* (xa - xc) + (yb - yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb - xd) */ + s1 = s2 + t2; + /* (ya - yc) - (xb - xd) */ + s2 = s2 - t2; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSrc[2U * i2] = (((int32_t) (((q63_t) r1 * co1) >> 32)) - + ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1U; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSrc[(2U * i2) + 1U] = (((int32_t) (((q63_t) s1 * co1) >> 32)) + + ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1U; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSrc[(2U * i3)] = (((int32_t) (((q63_t) r2 * co3) >> 32)) - + ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1U; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSrc[(2U * i3) + 1U] = (((int32_t) (((q63_t) s2 * co3) >> 32)) + + ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1U; + } + } + twidCoefModifier <<= 2U; + } +#else + uint32_t n1, n2, ia1, ia2, ia3, i0, j, k; + q31_t t1, t2, r1, r2, s1, s2, co1, co2, co3, si1, si2, si3; + q31_t xa, xb, xc, xd; + q31_t ya, yb, yc, yd; + q31_t xa_out, xb_out, xc_out, xd_out; + q31_t ya_out, yb_out, yc_out, yd_out; + + q31_t *ptr1; + q31_t *pSi0; + q31_t *pSi1; + q31_t *pSi2; + q31_t *pSi3; + q63_t xaya, xbyb, xcyc, xdyd; + + /* input is be 1.31(q31) format for all FFT sizes */ + /* Total process is divided into three stages */ + /* process first stage, middle stages, & last stage */ + + /* Start of first stage process */ + + /* Initializations for the first stage */ + n2 = fftLen; + n1 = n2; + /* n2 = fftLen/4 */ + n2 >>= 2U; + + ia1 = 0U; + + j = n2; + + pSi0 = pSrc; + pSi1 = pSi0 + 2 * n2; + pSi2 = pSi1 + 2 * n2; + pSi3 = pSi2 + 2 * n2; + + do + { + /* Butterfly implementation */ + /* xa + xc */ + r1 = (pSi0[0] >> 4U) + (pSi2[0] >> 4U); + /* xa - xc */ + r2 = (pSi0[0] >> 4U) - (pSi2[0] >> 4U); + + /* xb + xd */ + t1 = (pSi1[0] >> 4U) + (pSi3[0] >> 4U); + + /* ya + yc */ + s1 = (pSi0[1] >> 4U) + (pSi2[1] >> 4U); + /* ya - yc */ + s2 = (pSi0[1] >> 4U) - (pSi2[1] >> 4U); + + /* xa' = xa + xb + xc + xd */ + *pSi0++ = (r1 + t1); + /* (xa + xc) - (xb + xd) */ + r1 = r1 - t1; + /* yb + yd */ + t2 = (pSi1[1] >> 4U) + (pSi3[1] >> 4U); + /* ya' = ya + yb + yc + yd */ + *pSi0++ = (s1 + t2); + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* yb - yd */ + t1 = (pSi1[1] >> 4U) - (pSi3[1] >> 4U); + /* xb - xd */ + t2 = (pSi1[0] >> 4U) - (pSi3[0] >> 4U); + + /* index calculation for the coefficients */ + ia2 = 2U * ia1; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + *pSi1++ = (((int32_t) (((q63_t) r1 * co2) >> 32)) - + ((int32_t) (((q63_t) s1 * si2) >> 32))) << 1U; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + *pSi1++ = (((int32_t) (((q63_t) s1 * co2) >> 32)) + + ((int32_t) (((q63_t) r1 * si2) >> 32))) << 1U; + + /* (xa - xc) - (yb - yd) */ + r1 = r2 - t1; + /* (xa - xc) + (yb - yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb - xd) */ + s1 = s2 + t2; + /* (ya - yc) - (xb - xd) */ + s2 = s2 - t2; + + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + *pSi2++ = (((int32_t) (((q63_t) r1 * co1) >> 32)) - + ((int32_t) (((q63_t) s1 * si1) >> 32))) << 1U; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + *pSi2++ = (((int32_t) (((q63_t) s1 * co1) >> 32)) + + ((int32_t) (((q63_t) r1 * si1) >> 32))) << 1U; + + /* index calculation for the coefficients */ + ia3 = 3U * ia1; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + *pSi3++ = (((int32_t) (((q63_t) r2 * co3) >> 32)) - + ((int32_t) (((q63_t) s2 * si3) >> 32))) << 1U; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + *pSi3++ = (((int32_t) (((q63_t) s2 * co3) >> 32)) + + ((int32_t) (((q63_t) r2 * si3) >> 32))) << 1U; + + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + } while (--j); + + /* data is in 5.27(q27) format */ + /* each stage provides two down scaling of the input */ + + + /* Start of Middle stages process */ + + twidCoefModifier <<= 2U; + + /* Calculation of second stage to excluding last stage */ + for (k = fftLen / 4U; k > 4U; k >>= 2U) + { + /* Initializations for the first stage */ + n1 = n2; + n2 >>= 2U; + ia1 = 0U; + + for (j = 0; j <= (n2 - 1U); j++) + { + /* index calculation for the coefficients */ + ia2 = ia1 + ia1; + ia3 = ia2 + ia1; + co1 = pCoef[ia1 * 2U]; + si1 = pCoef[(ia1 * 2U) + 1U]; + co2 = pCoef[ia2 * 2U]; + si2 = pCoef[(ia2 * 2U) + 1U]; + co3 = pCoef[ia3 * 2U]; + si3 = pCoef[(ia3 * 2U) + 1U]; + /* Twiddle coefficients index modifier */ + ia1 = ia1 + twidCoefModifier; + + pSi0 = pSrc + 2 * j; + pSi1 = pSi0 + 2 * n2; + pSi2 = pSi1 + 2 * n2; + pSi3 = pSi2 + 2 * n2; + + for (i0 = j; i0 < fftLen; i0 += n1) + { + /* Butterfly implementation */ + /* xa + xc */ + r1 = pSi0[0] + pSi2[0]; + + /* xa - xc */ + r2 = pSi0[0] - pSi2[0]; + + + /* ya + yc */ + s1 = pSi0[1] + pSi2[1]; + + /* ya - yc */ + s2 = pSi0[1] - pSi2[1]; + + + /* xb + xd */ + t1 = pSi1[0] + pSi3[0]; + + + /* xa' = xa + xb + xc + xd */ + pSi0[0] = (r1 + t1) >> 2U; + /* xa + xc -(xb + xd) */ + r1 = r1 - t1; + /* yb + yd */ + t2 = pSi1[1] + pSi3[1]; + + /* ya' = ya + yb + yc + yd */ + pSi0[1] = (s1 + t2) >> 2U; + pSi0 += 2 * n1; + + /* (ya + yc) - (yb + yd) */ + s1 = s1 - t2; + + /* (yb - yd) */ + t1 = pSi1[1] - pSi3[1]; + + /* (xb - xd) */ + t2 = pSi1[0] - pSi3[0]; + + + /* xc' = (xa-xb+xc-xd)co2 - (ya-yb+yc-yd)(si2) */ + pSi1[0] = (((int32_t) (((q63_t) r1 * co2) >> 32U)) - + ((int32_t) (((q63_t) s1 * si2) >> 32U))) >> 1U; + + /* yc' = (ya-yb+yc-yd)co2 + (xa-xb+xc-xd)(si2) */ + pSi1[1] = + + (((int32_t) (((q63_t) s1 * co2) >> 32U)) + + ((int32_t) (((q63_t) r1 * si2) >> 32U))) >> 1U; + pSi1 += 2 * n1; + + /* (xa - xc) - (yb - yd) */ + r1 = r2 - t1; + /* (xa - xc) + (yb - yd) */ + r2 = r2 + t1; + + /* (ya - yc) + (xb - xd) */ + s1 = s2 + t2; + /* (ya - yc) - (xb - xd) */ + s2 = s2 - t2; + + /* xb' = (xa+yb-xc-yd)co1 - (ya-xb-yc+xd)(si1) */ + pSi2[0] = (((int32_t) (((q63_t) r1 * co1) >> 32)) - + ((int32_t) (((q63_t) s1 * si1) >> 32))) >> 1U; + + /* yb' = (ya-xb-yc+xd)co1 + (xa+yb-xc-yd)(si1) */ + pSi2[1] = (((int32_t) (((q63_t) s1 * co1) >> 32)) + + ((int32_t) (((q63_t) r1 * si1) >> 32))) >> 1U; + pSi2 += 2 * n1; + + /* xd' = (xa-yb-xc+yd)co3 - (ya+xb-yc-xd)(si3) */ + pSi3[0] = (((int32_t) (((q63_t) r2 * co3) >> 32)) - + ((int32_t) (((q63_t) s2 * si3) >> 32))) >> 1U; + + /* yd' = (ya+xb-yc-xd)co3 + (xa-yb-xc+yd)(si3) */ + pSi3[1] = (((int32_t) (((q63_t) s2 * co3) >> 32)) + + ((int32_t) (((q63_t) r2 * si3) >> 32))) >> 1U; + pSi3 += 2 * n1; + } + } + twidCoefModifier <<= 2U; + } +#endif + + /* End of Middle stages process */ + + /* data is in 11.21(q21) format for the 1024 point as there are 3 middle stages */ + /* data is in 9.23(q23) format for the 256 point as there are 2 middle stages */ + /* data is in 7.25(q25) format for the 64 point as there are 1 middle stage */ + /* data is in 5.27(q27) format for the 16 point as there are no middle stages */ + + + /* Start of last stage process */ + + + /* Initializations for the last stage */ + j = fftLen >> 2; + ptr1 = &pSrc[0]; + + /* Calculations of last stage */ + do + { +#ifndef ARM_MATH_BIG_ENDIAN + /* Read xa (real), ya(imag) input */ + xaya = *__SIMD64(ptr1)++; + xa = (q31_t) xaya; + ya = (q31_t) (xaya >> 32); + + /* Read xb (real), yb(imag) input */ + xbyb = *__SIMD64(ptr1)++; + xb = (q31_t) xbyb; + yb = (q31_t) (xbyb >> 32); + + /* Read xc (real), yc(imag) input */ + xcyc = *__SIMD64(ptr1)++; + xc = (q31_t) xcyc; + yc = (q31_t) (xcyc >> 32); + + /* Read xc (real), yc(imag) input */ + xdyd = *__SIMD64(ptr1)++; + xd = (q31_t) xdyd; + yd = (q31_t) (xdyd >> 32); + +#else + + /* Read xa (real), ya(imag) input */ + xaya = *__SIMD64(ptr1)++; + ya = (q31_t) xaya; + xa = (q31_t) (xaya >> 32); + + /* Read xb (real), yb(imag) input */ + xbyb = *__SIMD64(ptr1)++; + yb = (q31_t) xbyb; + xb = (q31_t) (xbyb >> 32); + + /* Read xc (real), yc(imag) input */ + xcyc = *__SIMD64(ptr1)++; + yc = (q31_t) xcyc; + xc = (q31_t) (xcyc >> 32); + + /* Read xc (real), yc(imag) input */ + xdyd = *__SIMD64(ptr1)++; + yd = (q31_t) xdyd; + xd = (q31_t) (xdyd >> 32); + + +#endif + + /* xa' = xa + xb + xc + xd */ + xa_out = xa + xb + xc + xd; + + /* ya' = ya + yb + yc + yd */ + ya_out = ya + yb + yc + yd; + + /* pointer updation for writing */ + ptr1 = ptr1 - 8U; + + /* writing xa' and ya' */ + *ptr1++ = xa_out; + *ptr1++ = ya_out; + + xc_out = (xa - xb + xc - xd); + yc_out = (ya - yb + yc - yd); + + /* writing xc' and yc' */ + *ptr1++ = xc_out; + *ptr1++ = yc_out; + + xb_out = (xa - yb - xc + yd); + yb_out = (ya + xb - yc - xd); + + /* writing xb' and yb' */ + *ptr1++ = xb_out; + *ptr1++ = yb_out; + + xd_out = (xa + yb - xc - yd); + yd_out = (ya - xb - yc + xd); + + /* writing xd' and yd' */ + *ptr1++ = xd_out; + *ptr1++ = yd_out; + + } while (--j); + + /* output is in 11.21(q21) format for the 1024 point */ + /* output is in 9.23(q23) format for the 256 point */ + /* output is in 7.25(q25) format for the 64 point */ + /* output is in 5.27(q27) format for the 16 point */ + + /* End of last stage process */ +} diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c new file mode 100644 index 0000000..69ed5a6 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_cfft_radix8_f32.c @@ -0,0 +1,285 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_radix8_f32.c + * Description: Radix-8 Decimation in Frequency CFFT & CIFFT Floating point processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + + +/* ---------------------------------------------------------------------- + * Internal helper function used by the FFTs + * -------------------------------------------------------------------- */ + +/* +* @brief Core function for the floating-point CFFT butterfly process. +* @param[in, out] *pSrc points to the in-place buffer of floating-point data type. +* @param[in] fftLen length of the FFT. +* @param[in] *pCoef points to the twiddle coefficient buffer. +* @param[in] twidCoefModifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. +* @return none. +*/ + +void arm_radix8_butterfly_f32( +float32_t * pSrc, +uint16_t fftLen, +const float32_t * pCoef, +uint16_t twidCoefModifier) +{ + uint32_t ia1, ia2, ia3, ia4, ia5, ia6, ia7; + uint32_t i1, i2, i3, i4, i5, i6, i7, i8; + uint32_t id; + uint32_t n1, n2, j; + + float32_t r1, r2, r3, r4, r5, r6, r7, r8; + float32_t t1, t2; + float32_t s1, s2, s3, s4, s5, s6, s7, s8; + float32_t p1, p2, p3, p4; + float32_t co2, co3, co4, co5, co6, co7, co8; + float32_t si2, si3, si4, si5, si6, si7, si8; + const float32_t C81 = 0.70710678118f; + + n2 = fftLen; + + do + { + n1 = n2; + n2 = n2 >> 3; + i1 = 0; + + do + { + i2 = i1 + n2; + i3 = i2 + n2; + i4 = i3 + n2; + i5 = i4 + n2; + i6 = i5 + n2; + i7 = i6 + n2; + i8 = i7 + n2; + r1 = pSrc[2 * i1] + pSrc[2 * i5]; + r5 = pSrc[2 * i1] - pSrc[2 * i5]; + r2 = pSrc[2 * i2] + pSrc[2 * i6]; + r6 = pSrc[2 * i2] - pSrc[2 * i6]; + r3 = pSrc[2 * i3] + pSrc[2 * i7]; + r7 = pSrc[2 * i3] - pSrc[2 * i7]; + r4 = pSrc[2 * i4] + pSrc[2 * i8]; + r8 = pSrc[2 * i4] - pSrc[2 * i8]; + t1 = r1 - r3; + r1 = r1 + r3; + r3 = r2 - r4; + r2 = r2 + r4; + pSrc[2 * i1] = r1 + r2; + pSrc[2 * i5] = r1 - r2; + r1 = pSrc[2 * i1 + 1] + pSrc[2 * i5 + 1]; + s5 = pSrc[2 * i1 + 1] - pSrc[2 * i5 + 1]; + r2 = pSrc[2 * i2 + 1] + pSrc[2 * i6 + 1]; + s6 = pSrc[2 * i2 + 1] - pSrc[2 * i6 + 1]; + s3 = pSrc[2 * i3 + 1] + pSrc[2 * i7 + 1]; + s7 = pSrc[2 * i3 + 1] - pSrc[2 * i7 + 1]; + r4 = pSrc[2 * i4 + 1] + pSrc[2 * i8 + 1]; + s8 = pSrc[2 * i4 + 1] - pSrc[2 * i8 + 1]; + t2 = r1 - s3; + r1 = r1 + s3; + s3 = r2 - r4; + r2 = r2 + r4; + pSrc[2 * i1 + 1] = r1 + r2; + pSrc[2 * i5 + 1] = r1 - r2; + pSrc[2 * i3] = t1 + s3; + pSrc[2 * i7] = t1 - s3; + pSrc[2 * i3 + 1] = t2 - r3; + pSrc[2 * i7 + 1] = t2 + r3; + r1 = (r6 - r8) * C81; + r6 = (r6 + r8) * C81; + r2 = (s6 - s8) * C81; + s6 = (s6 + s8) * C81; + t1 = r5 - r1; + r5 = r5 + r1; + r8 = r7 - r6; + r7 = r7 + r6; + t2 = s5 - r2; + s5 = s5 + r2; + s8 = s7 - s6; + s7 = s7 + s6; + pSrc[2 * i2] = r5 + s7; + pSrc[2 * i8] = r5 - s7; + pSrc[2 * i6] = t1 + s8; + pSrc[2 * i4] = t1 - s8; + pSrc[2 * i2 + 1] = s5 - r7; + pSrc[2 * i8 + 1] = s5 + r7; + pSrc[2 * i6 + 1] = t2 - r8; + pSrc[2 * i4 + 1] = t2 + r8; + + i1 += n1; + } while (i1 < fftLen); + + if (n2 < 8) + break; + + ia1 = 0; + j = 1; + + do + { + /* index calculation for the coefficients */ + id = ia1 + twidCoefModifier; + ia1 = id; + ia2 = ia1 + id; + ia3 = ia2 + id; + ia4 = ia3 + id; + ia5 = ia4 + id; + ia6 = ia5 + id; + ia7 = ia6 + id; + + co2 = pCoef[2 * ia1]; + co3 = pCoef[2 * ia2]; + co4 = pCoef[2 * ia3]; + co5 = pCoef[2 * ia4]; + co6 = pCoef[2 * ia5]; + co7 = pCoef[2 * ia6]; + co8 = pCoef[2 * ia7]; + si2 = pCoef[2 * ia1 + 1]; + si3 = pCoef[2 * ia2 + 1]; + si4 = pCoef[2 * ia3 + 1]; + si5 = pCoef[2 * ia4 + 1]; + si6 = pCoef[2 * ia5 + 1]; + si7 = pCoef[2 * ia6 + 1]; + si8 = pCoef[2 * ia7 + 1]; + + i1 = j; + + do + { + /* index calculation for the input */ + i2 = i1 + n2; + i3 = i2 + n2; + i4 = i3 + n2; + i5 = i4 + n2; + i6 = i5 + n2; + i7 = i6 + n2; + i8 = i7 + n2; + r1 = pSrc[2 * i1] + pSrc[2 * i5]; + r5 = pSrc[2 * i1] - pSrc[2 * i5]; + r2 = pSrc[2 * i2] + pSrc[2 * i6]; + r6 = pSrc[2 * i2] - pSrc[2 * i6]; + r3 = pSrc[2 * i3] + pSrc[2 * i7]; + r7 = pSrc[2 * i3] - pSrc[2 * i7]; + r4 = pSrc[2 * i4] + pSrc[2 * i8]; + r8 = pSrc[2 * i4] - pSrc[2 * i8]; + t1 = r1 - r3; + r1 = r1 + r3; + r3 = r2 - r4; + r2 = r2 + r4; + pSrc[2 * i1] = r1 + r2; + r2 = r1 - r2; + s1 = pSrc[2 * i1 + 1] + pSrc[2 * i5 + 1]; + s5 = pSrc[2 * i1 + 1] - pSrc[2 * i5 + 1]; + s2 = pSrc[2 * i2 + 1] + pSrc[2 * i6 + 1]; + s6 = pSrc[2 * i2 + 1] - pSrc[2 * i6 + 1]; + s3 = pSrc[2 * i3 + 1] + pSrc[2 * i7 + 1]; + s7 = pSrc[2 * i3 + 1] - pSrc[2 * i7 + 1]; + s4 = pSrc[2 * i4 + 1] + pSrc[2 * i8 + 1]; + s8 = pSrc[2 * i4 + 1] - pSrc[2 * i8 + 1]; + t2 = s1 - s3; + s1 = s1 + s3; + s3 = s2 - s4; + s2 = s2 + s4; + r1 = t1 + s3; + t1 = t1 - s3; + pSrc[2 * i1 + 1] = s1 + s2; + s2 = s1 - s2; + s1 = t2 - r3; + t2 = t2 + r3; + p1 = co5 * r2; + p2 = si5 * s2; + p3 = co5 * s2; + p4 = si5 * r2; + pSrc[2 * i5] = p1 + p2; + pSrc[2 * i5 + 1] = p3 - p4; + p1 = co3 * r1; + p2 = si3 * s1; + p3 = co3 * s1; + p4 = si3 * r1; + pSrc[2 * i3] = p1 + p2; + pSrc[2 * i3 + 1] = p3 - p4; + p1 = co7 * t1; + p2 = si7 * t2; + p3 = co7 * t2; + p4 = si7 * t1; + pSrc[2 * i7] = p1 + p2; + pSrc[2 * i7 + 1] = p3 - p4; + r1 = (r6 - r8) * C81; + r6 = (r6 + r8) * C81; + s1 = (s6 - s8) * C81; + s6 = (s6 + s8) * C81; + t1 = r5 - r1; + r5 = r5 + r1; + r8 = r7 - r6; + r7 = r7 + r6; + t2 = s5 - s1; + s5 = s5 + s1; + s8 = s7 - s6; + s7 = s7 + s6; + r1 = r5 + s7; + r5 = r5 - s7; + r6 = t1 + s8; + t1 = t1 - s8; + s1 = s5 - r7; + s5 = s5 + r7; + s6 = t2 - r8; + t2 = t2 + r8; + p1 = co2 * r1; + p2 = si2 * s1; + p3 = co2 * s1; + p4 = si2 * r1; + pSrc[2 * i2] = p1 + p2; + pSrc[2 * i2 + 1] = p3 - p4; + p1 = co8 * r5; + p2 = si8 * s5; + p3 = co8 * s5; + p4 = si8 * r5; + pSrc[2 * i8] = p1 + p2; + pSrc[2 * i8 + 1] = p3 - p4; + p1 = co6 * r6; + p2 = si6 * s6; + p3 = co6 * s6; + p4 = si6 * r6; + pSrc[2 * i6] = p1 + p2; + pSrc[2 * i6 + 1] = p3 - p4; + p1 = co4 * t1; + p2 = si4 * t2; + p3 = co4 * t2; + p4 = si4 * t1; + pSrc[2 * i4] = p1 + p2; + pSrc[2 * i4 + 1] = p3 - p4; + + i1 += n1; + } while (i1 < fftLen); + + j++; + } while (j < n2); + + twidCoefModifier <<= 3; + } while (n2 > 7); +} diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c new file mode 100644 index 0000000..ccb3c52 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_f32.c @@ -0,0 +1,449 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_dct4_f32.c + * Description: Processing function of DCT4 & IDCT4 F32 + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @defgroup DCT4_IDCT4 DCT Type IV Functions + * Representation of signals by minimum number of values is important for storage and transmission. + * The possibility of large discontinuity between the beginning and end of a period of a signal + * in DFT can be avoided by extending the signal so that it is even-symmetric. + * Discrete Cosine Transform (DCT) is constructed such that its energy is heavily concentrated in the lower part of the + * spectrum and is very widely used in signal and image coding applications. + * The family of DCTs (DCT type- 1,2,3,4) is the outcome of different combinations of homogeneous boundary conditions. + * DCT has an excellent energy-packing capability, hence has many applications and in data compression in particular. + * + * DCT is essentially the Discrete Fourier Transform(DFT) of an even-extended real signal. + * Reordering of the input data makes the computation of DCT just a problem of + * computing the DFT of a real signal with a few additional operations. + * This approach provides regular, simple, and very efficient DCT algorithms for practical hardware and software implementations. + * + * DCT type-II can be implemented using Fast fourier transform (FFT) internally, as the transform is applied on real values, Real FFT can be used. + * DCT4 is implemented using DCT2 as their implementations are similar except with some added pre-processing and post-processing. + * DCT2 implementation can be described in the following steps: + * - Re-ordering input + * - Calculating Real FFT + * - Multiplication of weights and Real FFT output and getting real part from the product. + * + * This process is explained by the block diagram below: + * \image html DCT4.gif "Discrete Cosine Transform - type-IV" + * + * \par Algorithm: + * The N-point type-IV DCT is defined as a real, linear transformation by the formula: + * \image html DCT4Equation.gif + * where k = 0,1,2,.....N-1 + *\par + * Its inverse is defined as follows: + * \image html IDCT4Equation.gif + * where n = 0,1,2,.....N-1 + *\par + * The DCT4 matrices become involutory (i.e. they are self-inverse) by multiplying with an overall scale factor of sqrt(2/N). + * The symmetry of the transform matrix indicates that the fast algorithms for the forward + * and inverse transform computation are identical. + * Note that the implementation of Inverse DCT4 and DCT4 is same, hence same process function can be used for both. + * + * \par Lengths supported by the transform: + * As DCT4 internally uses Real FFT, it supports all the lengths 128, 512, 2048 and 8192. + * The library provides separate functions for Q15, Q31, and floating-point data types. + * \par Instance Structure + * The instances for Real FFT and FFT, cosine values table and twiddle factor table are stored in an instance data structure. + * A separate instance structure must be defined for each transform. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Initializes Real FFT as its process function is used internally in DCT4, by calling arm_rfft_init_f32(). + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure cannot be placed into a const data section. + * To place an instance structure into a const data section, the instance structure must be manually initialized. + * Manually initialize the instance structure as follows: + *
+ *arm_dct4_instance_f32 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};
+ *arm_dct4_instance_q31 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};
+ *arm_dct4_instance_q15 S = {N, Nby2, normalize, pTwiddle, pCosFactor, pRfft, pCfft};
+ * 
+ * where \c N is the length of the DCT4; \c Nby2 is half of the length of the DCT4; + * \c normalize is normalizing factor used and is equal to sqrt(2/N); + * \c pTwiddle points to the twiddle factor table; + * \c pCosFactor points to the cosFactor table; + * \c pRfft points to the real FFT instance; + * \c pCfft points to the complex FFT instance; + * The CFFT and RFFT structures also needs to be initialized, refer to arm_cfft_radix4_f32() + * and arm_rfft_f32() respectively for details regarding static initialization. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the DCT4 transform functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/** + * @brief Processing function for the floating-point DCT4/IDCT4. + * @param[in] *S points to an instance of the floating-point DCT4/IDCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + */ + +void arm_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer) +{ + uint32_t i; /* Loop counter */ + float32_t *weights = S->pTwiddle; /* Pointer to the Weights table */ + float32_t *cosFact = S->pCosFactor; /* Pointer to the cos factors table */ + float32_t *pS1, *pS2, *pbuff; /* Temporary pointers for input buffer and pState buffer */ + float32_t in; /* Temporary variable */ + + + /* DCT4 computation involves DCT2 (which is calculated using RFFT) + * along with some pre-processing and post-processing. + * Computational procedure is explained as follows: + * (a) Pre-processing involves multiplying input with cos factor, + * r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n)) + * where, + * r(n) -- output of preprocessing + * u(n) -- input to preprocessing(actual Source buffer) + * (b) Calculation of DCT2 using FFT is divided into three steps: + * Step1: Re-ordering of even and odd elements of input. + * Step2: Calculating FFT of the re-ordered input. + * Step3: Taking the real part of the product of FFT output and weights. + * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation: + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * where, + * Y4 -- DCT4 output, Y2 -- DCT2 output + * (d) Multiplying the output with the normalizing factor sqrt(2/N). + */ + + /*-------- Pre-processing ------------*/ + /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */ + arm_scale_f32(pInlineBuffer, 2.0f, pInlineBuffer, S->N); + arm_mult_f32(pInlineBuffer, cosFact, pInlineBuffer, S->N); + + /* ---------------------------------------------------------------- + * Step1: Re-ordering of even and odd elements as, + * pState[i] = pInlineBuffer[2*i] and + * pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2 + ---------------------------------------------------------------------*/ + + /* pS1 initialized to pState */ + pS1 = pState; + + /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */ + pS2 = pState + (S->N - 1U); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */ + i = (uint32_t) S->Nby2 >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = (uint32_t) S->N >> 2U; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. + * Compute 4 outputs at a time */ + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_f32(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_f32(pState, weights, pState, S->N); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */ + i = ((uint32_t) S->N - 1U) >> 2U; + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ * (float32_t) 0.5; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + i = ((uint32_t) S->N - 1U) % 0x4U; + + while (i > 0U) + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + /* Decrement the loop counter */ + i--; + } + + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = (uint32_t) S->N >> 2U; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. Compute 4 outputs at a time */ + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = in * S->normalize; + + in = *pbuff; + *pbuff++ = in * S->normalize; + + in = *pbuff; + *pbuff++ = in * S->normalize; + + in = *pbuff; + *pbuff++ = in * S->normalize; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initializing the loop counter to N/2 */ + i = (uint32_t) S->Nby2; + + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter */ + i = (uint32_t) S->N; + + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_f32(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_f32(pState, weights, pState, S->N); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ * (float32_t) 0.5; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + /* Initializing the loop counter */ + i = ((uint32_t) S->N - 1U); + + do + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter */ + i = (uint32_t) S->N; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = in * S->normalize; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c new file mode 100644 index 0000000..19b46f5 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_f32.c @@ -0,0 +1,16513 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_dct4_init_f32.c + * Description: Initialization function of DCT-4 & IDCT4 F32 + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup DCT4_IDCT4 + */ + +/** + * @addtogroup DCT4_IDCT4_Table DCT Type IV Tables + * @{ + */ + +/* +* @brief Weights Table +*/ + +/** + * \par + * Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
+ * \par + * C command to generate the table + *
+ * for(i = 0; i< N; i++)
+ * {
+ *    weights[2*i]= cos(i*c);
+ *    weights[(2*i)+1]= -sin(i * c);
+ * } 
+ * \par + * Where N is the Number of weights to be calculated and c is pi/(2*N) + * \par + * In the tables below the real and imaginary values are placed alternatively, hence the + * array length is 2*N. + */ + +static const float32_t Weights_128[256] = { + 1.000000000000000000f, 0.000000000000000000f, 0.999924701839144500f, + -0.012271538285719925f, + 0.999698818696204250f, -0.024541228522912288f, 0.999322384588349540f, + -0.036807222941358832f, + 0.998795456205172410f, -0.049067674327418015f, 0.998118112900149180f, + -0.061320736302208578f, + 0.997290456678690210f, -0.073564563599667426f, 0.996312612182778000f, + -0.085797312344439894f, + 0.995184726672196930f, -0.098017140329560604f, 0.993906970002356060f, + -0.110222207293883060f, + 0.992479534598709970f, -0.122410675199216200f, 0.990902635427780010f, + -0.134580708507126170f, + 0.989176509964781010f, -0.146730474455361750f, 0.987301418157858430f, + -0.158858143333861450f, + 0.985277642388941220f, -0.170961888760301220f, 0.983105487431216290f, + -0.183039887955140950f, + 0.980785280403230430f, -0.195090322016128250f, 0.978317370719627650f, + -0.207111376192218560f, + 0.975702130038528570f, -0.219101240156869800f, 0.972939952205560180f, + -0.231058108280671110f, + 0.970031253194543970f, -0.242980179903263870f, 0.966976471044852070f, + -0.254865659604514570f, + 0.963776065795439840f, -0.266712757474898370f, 0.960430519415565790f, + -0.278519689385053060f, + 0.956940335732208820f, -0.290284677254462330f, 0.953306040354193860f, + -0.302005949319228080f, + 0.949528180593036670f, -0.313681740398891520f, 0.945607325380521280f, + -0.325310292162262930f, + 0.941544065183020810f, -0.336889853392220050f, 0.937339011912574960f, + -0.348418680249434560f, + 0.932992798834738960f, -0.359895036534988110f, 0.928506080473215590f, + -0.371317193951837540f, + 0.923879532511286740f, -0.382683432365089780f, 0.919113851690057770f, + -0.393992040061048100f, + 0.914209755703530690f, -0.405241314004989860f, 0.909167983090522380f, + -0.416429560097637150f, + 0.903989293123443340f, -0.427555093430282080f, 0.898674465693953820f, + -0.438616238538527660f, + 0.893224301195515320f, -0.449611329654606540f, 0.887639620402853930f, + -0.460538710958240010f, + 0.881921264348355050f, -0.471396736825997640f, 0.876070094195406600f, + -0.482183772079122720f, + 0.870086991108711460f, -0.492898192229784040f, 0.863972856121586810f, + -0.503538383725717580f, + 0.857728610000272120f, -0.514102744193221660f, 0.851355193105265200f, + -0.524589682678468950f, + 0.844853565249707120f, -0.534997619887097150f, 0.838224705554838080f, + -0.545324988422046460f, + 0.831469612302545240f, -0.555570233019602180f, 0.824589302785025290f, + -0.565731810783613120f, + 0.817584813151583710f, -0.575808191417845340f, 0.810457198252594770f, + -0.585797857456438860f, + 0.803207531480644940f, -0.595699304492433360f, 0.795836904608883570f, + -0.605511041404325550f, + 0.788346427626606340f, -0.615231590580626820f, 0.780737228572094490f, + -0.624859488142386340f, + 0.773010453362736990f, -0.634393284163645490f, 0.765167265622458960f, + -0.643831542889791390f, + 0.757208846506484570f, -0.653172842953776760f, 0.749136394523459370f, + -0.662415777590171780f, + 0.740951125354959110f, -0.671558954847018330f, 0.732654271672412820f, + -0.680600997795453020f, + 0.724247082951467000f, -0.689540544737066830f, 0.715730825283818590f, + -0.698376249408972920f, + 0.707106781186547570f, -0.707106781186547460f, 0.698376249408972920f, + -0.715730825283818590f, + 0.689540544737066940f, -0.724247082951466890f, 0.680600997795453130f, + -0.732654271672412820f, + 0.671558954847018330f, -0.740951125354959110f, 0.662415777590171780f, + -0.749136394523459260f, + 0.653172842953776760f, -0.757208846506484460f, 0.643831542889791500f, + -0.765167265622458960f, + 0.634393284163645490f, -0.773010453362736990f, 0.624859488142386450f, + -0.780737228572094380f, + 0.615231590580626820f, -0.788346427626606230f, 0.605511041404325550f, + -0.795836904608883460f, + 0.595699304492433470f, -0.803207531480644830f, 0.585797857456438860f, + -0.810457198252594770f, + 0.575808191417845340f, -0.817584813151583710f, 0.565731810783613230f, + -0.824589302785025290f, + 0.555570233019602290f, -0.831469612302545240f, 0.545324988422046460f, + -0.838224705554837970f, + 0.534997619887097260f, -0.844853565249707010f, 0.524589682678468840f, + -0.851355193105265200f, + 0.514102744193221660f, -0.857728610000272120f, 0.503538383725717580f, + -0.863972856121586700f, + 0.492898192229784090f, -0.870086991108711350f, 0.482183772079122830f, + -0.876070094195406600f, + 0.471396736825997810f, -0.881921264348354940f, 0.460538710958240010f, + -0.887639620402853930f, + 0.449611329654606600f, -0.893224301195515320f, 0.438616238538527710f, + -0.898674465693953820f, + 0.427555093430282200f, -0.903989293123443340f, 0.416429560097637320f, + -0.909167983090522270f, + 0.405241314004989860f, -0.914209755703530690f, 0.393992040061048100f, + -0.919113851690057770f, + 0.382683432365089840f, -0.923879532511286740f, 0.371317193951837600f, + -0.928506080473215480f, + 0.359895036534988280f, -0.932992798834738850f, 0.348418680249434510f, + -0.937339011912574960f, + 0.336889853392220050f, -0.941544065183020810f, 0.325310292162262980f, + -0.945607325380521280f, + 0.313681740398891570f, -0.949528180593036670f, 0.302005949319228200f, + -0.953306040354193750f, + 0.290284677254462330f, -0.956940335732208940f, 0.278519689385053060f, + -0.960430519415565790f, + 0.266712757474898420f, -0.963776065795439840f, 0.254865659604514630f, + -0.966976471044852070f, + 0.242980179903263980f, -0.970031253194543970f, 0.231058108280671280f, + -0.972939952205560070f, + 0.219101240156869770f, -0.975702130038528570f, 0.207111376192218560f, + -0.978317370719627650f, + 0.195090322016128330f, -0.980785280403230430f, 0.183039887955141060f, + -0.983105487431216290f, + 0.170961888760301360f, -0.985277642388941220f, 0.158858143333861390f, + -0.987301418157858430f, + 0.146730474455361750f, -0.989176509964781010f, 0.134580708507126220f, + -0.990902635427780010f, + 0.122410675199216280f, -0.992479534598709970f, 0.110222207293883180f, + -0.993906970002356060f, + 0.098017140329560770f, -0.995184726672196820f, 0.085797312344439880f, + -0.996312612182778000f, + 0.073564563599667454f, -0.997290456678690210f, 0.061320736302208648f, + -0.998118112900149180f, + 0.049067674327418126f, -0.998795456205172410f, 0.036807222941358991f, + -0.999322384588349540f, + 0.024541228522912264f, -0.999698818696204250f, 0.012271538285719944f, + -0.999924701839144500f +}; + +static const float32_t Weights_512[1024] = { + 1.000000000000000000f, 0.000000000000000000f, 0.999995293809576190f, + -0.003067956762965976f, + 0.999981175282601110f, -0.006135884649154475f, 0.999957644551963900f, + -0.009203754782059819f, + 0.999924701839144500f, -0.012271538285719925f, 0.999882347454212560f, + -0.015339206284988100f, + 0.999830581795823400f, -0.018406729905804820f, 0.999769405351215280f, + -0.021474080275469508f, + 0.999698818696204250f, -0.024541228522912288f, 0.999618822495178640f, + -0.027608145778965740f, + 0.999529417501093140f, -0.030674803176636626f, 0.999430604555461730f, + -0.033741171851377580f, + 0.999322384588349540f, -0.036807222941358832f, 0.999204758618363890f, + -0.039872927587739811f, + 0.999077727752645360f, -0.042938256934940820f, 0.998941293186856870f, + -0.046003182130914623f, + 0.998795456205172410f, -0.049067674327418015f, 0.998640218180265270f, + -0.052131704680283324f, + 0.998475580573294770f, -0.055195244349689934f, 0.998301544933892890f, + -0.058258264500435752f, + 0.998118112900149180f, -0.061320736302208578f, 0.997925286198596000f, + -0.064382630929857465f, + 0.997723066644191640f, -0.067443919563664051f, 0.997511456140303450f, + -0.070504573389613856f, + 0.997290456678690210f, -0.073564563599667426f, 0.997060070339482960f, + -0.076623861392031492f, + 0.996820299291165670f, -0.079682437971430126f, 0.996571145790554840f, + -0.082740264549375692f, + 0.996312612182778000f, -0.085797312344439894f, 0.996044700901251970f, + -0.088853552582524600f, + 0.995767414467659820f, -0.091908956497132724f, 0.995480755491926940f, + -0.094963495329638992f, + 0.995184726672196930f, -0.098017140329560604f, 0.994879330794805620f, + -0.101069862754827820f, + 0.994564570734255420f, -0.104121633872054590f, 0.994240449453187900f, + -0.107172424956808840f, + 0.993906970002356060f, -0.110222207293883060f, 0.993564135520595300f, + -0.113270952177564350f, + 0.993211949234794500f, -0.116318630911904750f, 0.992850414459865100f, + -0.119365214810991350f, + 0.992479534598709970f, -0.122410675199216200f, 0.992099313142191800f, + -0.125454983411546230f, + 0.991709753669099530f, -0.128498110793793170f, 0.991310859846115440f, + -0.131540028702883120f, + 0.990902635427780010f, -0.134580708507126170f, 0.990485084256457090f, + -0.137620121586486040f, + 0.990058210262297120f, -0.140658239332849210f, 0.989622017463200890f, + -0.143695033150294470f, + 0.989176509964781010f, -0.146730474455361750f, 0.988721691960323780f, + -0.149764534677321510f, + 0.988257567730749460f, -0.152797185258443440f, 0.987784141644572180f, + -0.155828397654265230f, + 0.987301418157858430f, -0.158858143333861450f, 0.986809401814185530f, + -0.161886393780111830f, + 0.986308097244598670f, -0.164913120489969890f, 0.985797509167567480f, + -0.167938294974731170f, + 0.985277642388941220f, -0.170961888760301220f, 0.984748501801904210f, + -0.173983873387463820f, + 0.984210092386929030f, -0.177004220412148750f, 0.983662419211730250f, + -0.180022901405699510f, + 0.983105487431216290f, -0.183039887955140950f, 0.982539302287441240f, + -0.186055151663446630f, + 0.981963869109555240f, -0.189068664149806190f, 0.981379193313754560f, + -0.192080397049892440f, + 0.980785280403230430f, -0.195090322016128250f, 0.980182135968117430f, + -0.198098410717953560f, + 0.979569765685440520f, -0.201104634842091900f, 0.978948175319062200f, + -0.204108966092816870f, + 0.978317370719627650f, -0.207111376192218560f, 0.977677357824509930f, + -0.210111836880469610f, + 0.977028142657754390f, -0.213110319916091360f, 0.976369731330021140f, + -0.216106797076219520f, + 0.975702130038528570f, -0.219101240156869800f, 0.975025345066994120f, + -0.222093620973203510f, + 0.974339382785575860f, -0.225083911359792830f, 0.973644249650811980f, + -0.228072083170885730f, + 0.972939952205560180f, -0.231058108280671110f, 0.972226497078936270f, + -0.234041958583543430f, + 0.971503890986251780f, -0.237023605994367200f, 0.970772140728950350f, + -0.240003022448741500f, + 0.970031253194543970f, -0.242980179903263870f, 0.969281235356548530f, + -0.245955050335794590f, + 0.968522094274417380f, -0.248927605745720150f, 0.967753837093475510f, + -0.251897818154216970f, + 0.966976471044852070f, -0.254865659604514570f, 0.966190003445412500f, + -0.257831102162158990f, + 0.965394441697689400f, -0.260794117915275510f, 0.964589793289812760f, + -0.263754678974831350f, + 0.963776065795439840f, -0.266712757474898370f, 0.962953266873683880f, + -0.269668325572915090f, + 0.962121404269041580f, -0.272621355449948980f, 0.961280485811320640f, + -0.275571819310958140f, + 0.960430519415565790f, -0.278519689385053060f, 0.959571513081984520f, + -0.281464937925757940f, + 0.958703474895871600f, -0.284407537211271880f, 0.957826413027532910f, + -0.287347459544729510f, + 0.956940335732208820f, -0.290284677254462330f, 0.956045251349996410f, + -0.293219162694258630f, + 0.955141168305770780f, -0.296150888243623790f, 0.954228095109105670f, + -0.299079826308040480f, + 0.953306040354193860f, -0.302005949319228080f, 0.952375012719765880f, + -0.304929229735402370f, + 0.951435020969008340f, -0.307849640041534870f, 0.950486073949481700f, + -0.310767152749611470f, + 0.949528180593036670f, -0.313681740398891520f, 0.948561349915730270f, + -0.316593375556165850f, + 0.947585591017741090f, -0.319502030816015690f, 0.946600913083283530f, + -0.322407678801069850f, + 0.945607325380521280f, -0.325310292162262930f, 0.944604837261480260f, + -0.328209843579092500f, + 0.943593458161960390f, -0.331106305759876430f, 0.942573197601446870f, + -0.333999651442009380f, + 0.941544065183020810f, -0.336889853392220050f, 0.940506070593268300f, + -0.339776884406826850f, + 0.939459223602189920f, -0.342660717311994380f, 0.938403534063108060f, + -0.345541324963989090f, + 0.937339011912574960f, -0.348418680249434560f, 0.936265667170278260f, + -0.351292756085567090f, + 0.935183509938947610f, -0.354163525420490340f, 0.934092550404258980f, + -0.357030961233429980f, + 0.932992798834738960f, -0.359895036534988110f, 0.931884265581668150f, + -0.362755724367397230f, + 0.930766961078983710f, -0.365612997804773850f, 0.929640895843181330f, + -0.368466829953372320f, + 0.928506080473215590f, -0.371317193951837540f, 0.927362525650401110f, + -0.374164062971457930f, + 0.926210242138311380f, -0.377007410216418260f, 0.925049240782677580f, + -0.379847208924051160f, + 0.923879532511286740f, -0.382683432365089780f, 0.922701128333878630f, + -0.385516053843918850f, + 0.921514039342042010f, -0.388345046698826250f, 0.920318276709110590f, + -0.391170384302253870f, + 0.919113851690057770f, -0.393992040061048100f, 0.917900775621390500f, + -0.396809987416710310f, + 0.916679059921042700f, -0.399624199845646790f, 0.915448716088267830f, + -0.402434650859418430f, + 0.914209755703530690f, -0.405241314004989860f, 0.912962190428398210f, + -0.408044162864978690f, + 0.911706032005429880f, -0.410843171057903910f, 0.910441292258067250f, + -0.413638312238434500f, + 0.909167983090522380f, -0.416429560097637150f, 0.907886116487666260f, + -0.419216888363223910f, + 0.906595704514915330f, -0.422000270799799680f, 0.905296759318118820f, + -0.424779681209108810f, + 0.903989293123443340f, -0.427555093430282080f, 0.902673318237258830f, + -0.430326481340082610f, + 0.901348847046022030f, -0.433093818853151960f, 0.900015892016160280f, + -0.435857079922255470f, + 0.898674465693953820f, -0.438616238538527660f, 0.897324580705418320f, + -0.441371268731716670f, + 0.895966249756185220f, -0.444122144570429200f, 0.894599485631382700f, + -0.446868840162374160f, + 0.893224301195515320f, -0.449611329654606540f, 0.891840709392342720f, + -0.452349587233770890f, + 0.890448723244757880f, -0.455083587126343840f, 0.889048355854664570f, + -0.457813303598877170f, + 0.887639620402853930f, -0.460538710958240010f, 0.886222530148880640f, + -0.463259783551860150f, + 0.884797098430937790f, -0.465976495767966180f, 0.883363338665731580f, + -0.468688822035827900f, + 0.881921264348355050f, -0.471396736825997640f, 0.880470889052160750f, + -0.474100214650549970f, + 0.879012226428633530f, -0.476799230063322090f, 0.877545290207261350f, + -0.479493757660153010f, + 0.876070094195406600f, -0.482183772079122720f, 0.874586652278176110f, + -0.484869248000791060f, + 0.873094978418290090f, -0.487550160148436000f, 0.871595086655950980f, + -0.490226483288291160f, + 0.870086991108711460f, -0.492898192229784040f, 0.868570705971340900f, + -0.495565261825772540f, + 0.867046245515692650f, -0.498227666972781870f, 0.865513624090569090f, + -0.500885382611240710f, + 0.863972856121586810f, -0.503538383725717580f, 0.862423956111040610f, + -0.506186645345155230f, + 0.860866938637767310f, -0.508830142543106990f, 0.859301818357008470f, + -0.511468850437970300f, + 0.857728610000272120f, -0.514102744193221660f, 0.856147328375194470f, + -0.516731799017649870f, + 0.854557988365400530f, -0.519355990165589640f, 0.852960604930363630f, + -0.521975292937154390f, + 0.851355193105265200f, -0.524589682678468950f, 0.849741768000852550f, + -0.527199134781901280f, + 0.848120344803297230f, -0.529803624686294610f, 0.846490938774052130f, + -0.532403127877197900f, + 0.844853565249707120f, -0.534997619887097150f, 0.843208239641845440f, + -0.537587076295645390f, + 0.841554977436898440f, -0.540171472729892850f, 0.839893794195999520f, + -0.542750784864515890f, + 0.838224705554838080f, -0.545324988422046460f, 0.836547727223512010f, + -0.547894059173100190f, + 0.834862874986380010f, -0.550457972936604810f, 0.833170164701913190f, + -0.553016705580027470f, + 0.831469612302545240f, -0.555570233019602180f, 0.829761233794523050f, + -0.558118531220556100f, + 0.828045045257755800f, -0.560661576197336030f, 0.826321062845663530f, + -0.563199344013834090f, + 0.824589302785025290f, -0.565731810783613120f, 0.822849781375826430f, + -0.568258952670131490f, + 0.821102514991104650f, -0.570780745886967260f, 0.819347520076796900f, + -0.573297166698042200f, + 0.817584813151583710f, -0.575808191417845340f, 0.815814410806733780f, + -0.578313796411655590f, + 0.814036329705948410f, -0.580813958095764530f, 0.812250586585203880f, + -0.583308652937698290f, + 0.810457198252594770f, -0.585797857456438860f, 0.808656181588174980f, + -0.588281548222645220f, + 0.806847553543799330f, -0.590759701858874160f, 0.805031331142963660f, + -0.593232295039799800f, + 0.803207531480644940f, -0.595699304492433360f, 0.801376171723140240f, + -0.598160706996342270f, + 0.799537269107905010f, -0.600616479383868970f, 0.797690840943391160f, + -0.603066598540348160f, + 0.795836904608883570f, -0.605511041404325550f, 0.793975477554337170f, + -0.607949784967773630f, + 0.792106577300212390f, -0.610382806276309480f, 0.790230221437310030f, + -0.612810082429409710f, + 0.788346427626606340f, -0.615231590580626820f, 0.786455213599085770f, + -0.617647307937803870f, + 0.784556597155575240f, -0.620057211763289100f, 0.782650596166575730f, + -0.622461279374149970f, + 0.780737228572094490f, -0.624859488142386340f, 0.778816512381475980f, + -0.627251815495144080f, + 0.776888465673232440f, -0.629638238914926980f, 0.774953106594873930f, + -0.632018735939809060f, + 0.773010453362736990f, -0.634393284163645490f, 0.771060524261813820f, + -0.636761861236284200f, + 0.769103337645579700f, -0.639124444863775730f, 0.767138911935820400f, + -0.641481012808583160f, + 0.765167265622458960f, -0.643831542889791390f, 0.763188417263381270f, + -0.646176012983316280f, + 0.761202385484261780f, -0.648514401022112440f, 0.759209188978388070f, + -0.650846684996380880f, + 0.757208846506484570f, -0.653172842953776760f, 0.755201376896536550f, + -0.655492852999615350f, + 0.753186799043612520f, -0.657806693297078640f, 0.751165131909686480f, + -0.660114342067420480f, + 0.749136394523459370f, -0.662415777590171780f, 0.747100605980180130f, + -0.664710978203344790f, + 0.745057785441466060f, -0.666999922303637470f, 0.743007952135121720f, + -0.669282588346636010f, + 0.740951125354959110f, -0.671558954847018330f, 0.738887324460615110f, + -0.673829000378756040f, + 0.736816568877369900f, -0.676092703575315920f, 0.734738878095963500f, + -0.678350043129861470f, + 0.732654271672412820f, -0.680600997795453020f, 0.730562769227827590f, + -0.682845546385248080f, + 0.728464390448225200f, -0.685083667772700360f, 0.726359155084346010f, + -0.687315340891759050f, + 0.724247082951467000f, -0.689540544737066830f, 0.722128193929215350f, + -0.691759258364157750f, + 0.720002507961381650f, -0.693971460889654000f, 0.717870045055731710f, + -0.696177131491462990f, + 0.715730825283818590f, -0.698376249408972920f, 0.713584868780793640f, + -0.700568793943248340f, + 0.711432195745216430f, -0.702754744457225300f, 0.709272826438865690f, + -0.704934080375904880f, + 0.707106781186547570f, -0.707106781186547460f, 0.704934080375904990f, + -0.709272826438865580f, + 0.702754744457225300f, -0.711432195745216430f, 0.700568793943248450f, + -0.713584868780793520f, + 0.698376249408972920f, -0.715730825283818590f, 0.696177131491462990f, + -0.717870045055731710f, + 0.693971460889654000f, -0.720002507961381650f, 0.691759258364157750f, + -0.722128193929215350f, + 0.689540544737066940f, -0.724247082951466890f, 0.687315340891759160f, + -0.726359155084346010f, + 0.685083667772700360f, -0.728464390448225200f, 0.682845546385248080f, + -0.730562769227827590f, + 0.680600997795453130f, -0.732654271672412820f, 0.678350043129861580f, + -0.734738878095963390f, + 0.676092703575316030f, -0.736816568877369790f, 0.673829000378756150f, + -0.738887324460615110f, + 0.671558954847018330f, -0.740951125354959110f, 0.669282588346636010f, + -0.743007952135121720f, + 0.666999922303637470f, -0.745057785441465950f, 0.664710978203344900f, + -0.747100605980180130f, + 0.662415777590171780f, -0.749136394523459260f, 0.660114342067420480f, + -0.751165131909686370f, + 0.657806693297078640f, -0.753186799043612410f, 0.655492852999615460f, + -0.755201376896536550f, + 0.653172842953776760f, -0.757208846506484460f, 0.650846684996380990f, + -0.759209188978387960f, + 0.648514401022112550f, -0.761202385484261780f, 0.646176012983316390f, + -0.763188417263381270f, + 0.643831542889791500f, -0.765167265622458960f, 0.641481012808583160f, + -0.767138911935820400f, + 0.639124444863775730f, -0.769103337645579590f, 0.636761861236284200f, + -0.771060524261813710f, + 0.634393284163645490f, -0.773010453362736990f, 0.632018735939809060f, + -0.774953106594873820f, + 0.629638238914927100f, -0.776888465673232440f, 0.627251815495144190f, + -0.778816512381475870f, + 0.624859488142386450f, -0.780737228572094380f, 0.622461279374150080f, + -0.782650596166575730f, + 0.620057211763289210f, -0.784556597155575240f, 0.617647307937803980f, + -0.786455213599085770f, + 0.615231590580626820f, -0.788346427626606230f, 0.612810082429409710f, + -0.790230221437310030f, + 0.610382806276309480f, -0.792106577300212390f, 0.607949784967773740f, + -0.793975477554337170f, + 0.605511041404325550f, -0.795836904608883460f, 0.603066598540348280f, + -0.797690840943391040f, + 0.600616479383868970f, -0.799537269107905010f, 0.598160706996342380f, + -0.801376171723140130f, + 0.595699304492433470f, -0.803207531480644830f, 0.593232295039799800f, + -0.805031331142963660f, + 0.590759701858874280f, -0.806847553543799220f, 0.588281548222645330f, + -0.808656181588174980f, + 0.585797857456438860f, -0.810457198252594770f, 0.583308652937698290f, + -0.812250586585203880f, + 0.580813958095764530f, -0.814036329705948300f, 0.578313796411655590f, + -0.815814410806733780f, + 0.575808191417845340f, -0.817584813151583710f, 0.573297166698042320f, + -0.819347520076796900f, + 0.570780745886967370f, -0.821102514991104650f, 0.568258952670131490f, + -0.822849781375826320f, + 0.565731810783613230f, -0.824589302785025290f, 0.563199344013834090f, + -0.826321062845663420f, + 0.560661576197336030f, -0.828045045257755800f, 0.558118531220556100f, + -0.829761233794523050f, + 0.555570233019602290f, -0.831469612302545240f, 0.553016705580027580f, + -0.833170164701913190f, + 0.550457972936604810f, -0.834862874986380010f, 0.547894059173100190f, + -0.836547727223511890f, + 0.545324988422046460f, -0.838224705554837970f, 0.542750784864516000f, + -0.839893794195999410f, + 0.540171472729892970f, -0.841554977436898330f, 0.537587076295645510f, + -0.843208239641845440f, + 0.534997619887097260f, -0.844853565249707010f, 0.532403127877198010f, + -0.846490938774052020f, + 0.529803624686294830f, -0.848120344803297120f, 0.527199134781901390f, + -0.849741768000852440f, + 0.524589682678468840f, -0.851355193105265200f, 0.521975292937154390f, + -0.852960604930363630f, + 0.519355990165589530f, -0.854557988365400530f, 0.516731799017649980f, + -0.856147328375194470f, + 0.514102744193221660f, -0.857728610000272120f, 0.511468850437970520f, + -0.859301818357008360f, + 0.508830142543106990f, -0.860866938637767310f, 0.506186645345155450f, + -0.862423956111040500f, + 0.503538383725717580f, -0.863972856121586700f, 0.500885382611240940f, + -0.865513624090568980f, + 0.498227666972781870f, -0.867046245515692650f, 0.495565261825772490f, + -0.868570705971340900f, + 0.492898192229784090f, -0.870086991108711350f, 0.490226483288291100f, + -0.871595086655951090f, + 0.487550160148436050f, -0.873094978418290090f, 0.484869248000791120f, + -0.874586652278176110f, + 0.482183772079122830f, -0.876070094195406600f, 0.479493757660153010f, + -0.877545290207261240f, + 0.476799230063322250f, -0.879012226428633410f, 0.474100214650550020f, + -0.880470889052160750f, + 0.471396736825997810f, -0.881921264348354940f, 0.468688822035827960f, + -0.883363338665731580f, + 0.465976495767966130f, -0.884797098430937790f, 0.463259783551860260f, + -0.886222530148880640f, + 0.460538710958240010f, -0.887639620402853930f, 0.457813303598877290f, + -0.889048355854664570f, + 0.455083587126343840f, -0.890448723244757880f, 0.452349587233771000f, + -0.891840709392342720f, + 0.449611329654606600f, -0.893224301195515320f, 0.446868840162374330f, + -0.894599485631382580f, + 0.444122144570429260f, -0.895966249756185110f, 0.441371268731716620f, + -0.897324580705418320f, + 0.438616238538527710f, -0.898674465693953820f, 0.435857079922255470f, + -0.900015892016160280f, + 0.433093818853152010f, -0.901348847046022030f, 0.430326481340082610f, + -0.902673318237258830f, + 0.427555093430282200f, -0.903989293123443340f, 0.424779681209108810f, + -0.905296759318118820f, + 0.422000270799799790f, -0.906595704514915330f, 0.419216888363223960f, + -0.907886116487666150f, + 0.416429560097637320f, -0.909167983090522270f, 0.413638312238434560f, + -0.910441292258067140f, + 0.410843171057903910f, -0.911706032005429880f, 0.408044162864978740f, + -0.912962190428398100f, + 0.405241314004989860f, -0.914209755703530690f, 0.402434650859418540f, + -0.915448716088267830f, + 0.399624199845646790f, -0.916679059921042700f, 0.396809987416710420f, + -0.917900775621390390f, + 0.393992040061048100f, -0.919113851690057770f, 0.391170384302253980f, + -0.920318276709110480f, + 0.388345046698826300f, -0.921514039342041900f, 0.385516053843919020f, + -0.922701128333878520f, + 0.382683432365089840f, -0.923879532511286740f, 0.379847208924051110f, + -0.925049240782677580f, + 0.377007410216418310f, -0.926210242138311270f, 0.374164062971457990f, + -0.927362525650401110f, + 0.371317193951837600f, -0.928506080473215480f, 0.368466829953372320f, + -0.929640895843181330f, + 0.365612997804773960f, -0.930766961078983710f, 0.362755724367397230f, + -0.931884265581668150f, + 0.359895036534988280f, -0.932992798834738850f, 0.357030961233430030f, + -0.934092550404258870f, + 0.354163525420490510f, -0.935183509938947500f, 0.351292756085567150f, + -0.936265667170278260f, + 0.348418680249434510f, -0.937339011912574960f, 0.345541324963989150f, + -0.938403534063108060f, + 0.342660717311994380f, -0.939459223602189920f, 0.339776884406826960f, + -0.940506070593268300f, + 0.336889853392220050f, -0.941544065183020810f, 0.333999651442009490f, + -0.942573197601446870f, + 0.331106305759876430f, -0.943593458161960390f, 0.328209843579092660f, + -0.944604837261480260f, + 0.325310292162262980f, -0.945607325380521280f, 0.322407678801070020f, + -0.946600913083283530f, + 0.319502030816015750f, -0.947585591017741090f, 0.316593375556165850f, + -0.948561349915730270f, + 0.313681740398891570f, -0.949528180593036670f, 0.310767152749611470f, + -0.950486073949481700f, + 0.307849640041534980f, -0.951435020969008340f, 0.304929229735402430f, + -0.952375012719765880f, + 0.302005949319228200f, -0.953306040354193750f, 0.299079826308040480f, + -0.954228095109105670f, + 0.296150888243623960f, -0.955141168305770670f, 0.293219162694258680f, + -0.956045251349996410f, + 0.290284677254462330f, -0.956940335732208940f, 0.287347459544729570f, + -0.957826413027532910f, + 0.284407537211271820f, -0.958703474895871600f, 0.281464937925758050f, + -0.959571513081984520f, + 0.278519689385053060f, -0.960430519415565790f, 0.275571819310958250f, + -0.961280485811320640f, + 0.272621355449948980f, -0.962121404269041580f, 0.269668325572915200f, + -0.962953266873683880f, + 0.266712757474898420f, -0.963776065795439840f, 0.263754678974831510f, + -0.964589793289812650f, + 0.260794117915275570f, -0.965394441697689400f, 0.257831102162158930f, + -0.966190003445412620f, + 0.254865659604514630f, -0.966976471044852070f, 0.251897818154216910f, + -0.967753837093475510f, + 0.248927605745720260f, -0.968522094274417270f, 0.245955050335794590f, + -0.969281235356548530f, + 0.242980179903263980f, -0.970031253194543970f, 0.240003022448741500f, + -0.970772140728950350f, + 0.237023605994367340f, -0.971503890986251780f, 0.234041958583543460f, + -0.972226497078936270f, + 0.231058108280671280f, -0.972939952205560070f, 0.228072083170885790f, + -0.973644249650811870f, + 0.225083911359792780f, -0.974339382785575860f, 0.222093620973203590f, + -0.975025345066994120f, + 0.219101240156869770f, -0.975702130038528570f, 0.216106797076219600f, + -0.976369731330021140f, + 0.213110319916091360f, -0.977028142657754390f, 0.210111836880469720f, + -0.977677357824509930f, + 0.207111376192218560f, -0.978317370719627650f, 0.204108966092817010f, + -0.978948175319062200f, + 0.201104634842091960f, -0.979569765685440520f, 0.198098410717953730f, + -0.980182135968117320f, + 0.195090322016128330f, -0.980785280403230430f, 0.192080397049892380f, + -0.981379193313754560f, + 0.189068664149806280f, -0.981963869109555240f, 0.186055151663446630f, + -0.982539302287441240f, + 0.183039887955141060f, -0.983105487431216290f, 0.180022901405699510f, + -0.983662419211730250f, + 0.177004220412148860f, -0.984210092386929030f, 0.173983873387463850f, + -0.984748501801904210f, + 0.170961888760301360f, -0.985277642388941220f, 0.167938294974731230f, + -0.985797509167567370f, + 0.164913120489970090f, -0.986308097244598670f, 0.161886393780111910f, + -0.986809401814185420f, + 0.158858143333861390f, -0.987301418157858430f, 0.155828397654265320f, + -0.987784141644572180f, + 0.152797185258443410f, -0.988257567730749460f, 0.149764534677321620f, + -0.988721691960323780f, + 0.146730474455361750f, -0.989176509964781010f, 0.143695033150294580f, + -0.989622017463200780f, + 0.140658239332849240f, -0.990058210262297120f, 0.137620121586486180f, + -0.990485084256456980f, + 0.134580708507126220f, -0.990902635427780010f, 0.131540028702883280f, + -0.991310859846115440f, + 0.128498110793793220f, -0.991709753669099530f, 0.125454983411546210f, + -0.992099313142191800f, + 0.122410675199216280f, -0.992479534598709970f, 0.119365214810991350f, + -0.992850414459865100f, + 0.116318630911904880f, -0.993211949234794500f, 0.113270952177564360f, + -0.993564135520595300f, + 0.110222207293883180f, -0.993906970002356060f, 0.107172424956808870f, + -0.994240449453187900f, + 0.104121633872054730f, -0.994564570734255420f, 0.101069862754827880f, + -0.994879330794805620f, + 0.098017140329560770f, -0.995184726672196820f, 0.094963495329639061f, + -0.995480755491926940f, + 0.091908956497132696f, -0.995767414467659820f, 0.088853552582524684f, + -0.996044700901251970f, + 0.085797312344439880f, -0.996312612182778000f, 0.082740264549375803f, + -0.996571145790554840f, + 0.079682437971430126f, -0.996820299291165670f, 0.076623861392031617f, + -0.997060070339482960f, + 0.073564563599667454f, -0.997290456678690210f, 0.070504573389614009f, + -0.997511456140303450f, + 0.067443919563664106f, -0.997723066644191640f, 0.064382630929857410f, + -0.997925286198596000f, + 0.061320736302208648f, -0.998118112900149180f, 0.058258264500435732f, + -0.998301544933892890f, + 0.055195244349690031f, -0.998475580573294770f, 0.052131704680283317f, + -0.998640218180265270f, + 0.049067674327418126f, -0.998795456205172410f, 0.046003182130914644f, + -0.998941293186856870f, + 0.042938256934940959f, -0.999077727752645360f, 0.039872927587739845f, + -0.999204758618363890f, + 0.036807222941358991f, -0.999322384588349540f, 0.033741171851377642f, + -0.999430604555461730f, + 0.030674803176636581f, -0.999529417501093140f, 0.027608145778965820f, + -0.999618822495178640f, + 0.024541228522912264f, -0.999698818696204250f, 0.021474080275469605f, + -0.999769405351215280f, + 0.018406729905804820f, -0.999830581795823400f, 0.015339206284988220f, + -0.999882347454212560f, + 0.012271538285719944f, -0.999924701839144500f, 0.009203754782059960f, + -0.999957644551963900f, + 0.006135884649154515f, -0.999981175282601110f, 0.003067956762966138f, + -0.999995293809576190f +}; + +static const float32_t Weights_2048[4096] = { + 1.000000000000000000f, 0.000000000000000000f, 0.999999705862882230f, + -0.000766990318742704f, + 0.999998823451701880f, -0.001533980186284766f, 0.999997352766978210f, + -0.002300969151425805f, + 0.999995293809576190f, -0.003067956762965976f, 0.999992646580707190f, + -0.003834942569706228f, + 0.999989411081928400f, -0.004601926120448571f, 0.999985587315143200f, + -0.005368906963996343f, + 0.999981175282601110f, -0.006135884649154475f, 0.999976174986897610f, + -0.006902858724729756f, + 0.999970586430974140f, -0.007669828739531097f, 0.999964409618118280f, + -0.008436794242369799f, + 0.999957644551963900f, -0.009203754782059819f, 0.999950291236490480f, + -0.009970709907418031f, + 0.999942349676023910f, -0.010737659167264491f, 0.999933819875236000f, + -0.011504602110422714f, + 0.999924701839144500f, -0.012271538285719925f, 0.999914995573113470f, + -0.013038467241987334f, + 0.999904701082852900f, -0.013805388528060391f, 0.999893818374418490f, + -0.014572301692779064f, + 0.999882347454212560f, -0.015339206284988100f, 0.999870288328982950f, + -0.016106101853537287f, + 0.999857641005823860f, -0.016872987947281710f, 0.999844405492175240f, + -0.017639864115082053f, + 0.999830581795823400f, -0.018406729905804820f, 0.999816169924900410f, + -0.019173584868322623f, + 0.999801169887884260f, -0.019940428551514441f, 0.999785581693599210f, + -0.020707260504265895f, + 0.999769405351215280f, -0.021474080275469508f, 0.999752640870248840f, + -0.022240887414024961f, + 0.999735288260561680f, -0.023007681468839369f, 0.999717347532362190f, + -0.023774461988827555f, + 0.999698818696204250f, -0.024541228522912288f, 0.999679701762987930f, + -0.025307980620024571f, + 0.999659996743959220f, -0.026074717829103901f, 0.999639703650710200f, + -0.026841439699098531f, + 0.999618822495178640f, -0.027608145778965740f, 0.999597353289648380f, + -0.028374835617672099f, + 0.999575296046749220f, -0.029141508764193722f, 0.999552650779456990f, + -0.029908164767516555f, + 0.999529417501093140f, -0.030674803176636626f, 0.999505596225325310f, + -0.031441423540560301f, + 0.999481186966166950f, -0.032208025408304586f, 0.999456189737977340f, + -0.032974608328897335f, + 0.999430604555461730f, -0.033741171851377580f, 0.999404431433671300f, + -0.034507715524795750f, + 0.999377670388002850f, -0.035274238898213947f, 0.999350321434199440f, + -0.036040741520706229f, + 0.999322384588349540f, -0.036807222941358832f, 0.999293859866887790f, + -0.037573682709270494f, + 0.999264747286594420f, -0.038340120373552694f, 0.999235046864595850f, + -0.039106535483329888f, + 0.999204758618363890f, -0.039872927587739811f, 0.999173882565716380f, + -0.040639296235933736f, + 0.999142418724816910f, -0.041405640977076739f, 0.999110367114174890f, + -0.042171961360347947f, + 0.999077727752645360f, -0.042938256934940820f, 0.999044500659429290f, + -0.043704527250063421f, + 0.999010685854073380f, -0.044470771854938668f, 0.998976283356469820f, + -0.045236990298804590f, + 0.998941293186856870f, -0.046003182130914623f, 0.998905715365818290f, + -0.046769346900537863f, + 0.998869549914283560f, -0.047535484156959303f, 0.998832796853527990f, + -0.048301593449480144f, + 0.998795456205172410f, -0.049067674327418015f, 0.998757527991183340f, + -0.049833726340107277f, + 0.998719012233872940f, -0.050599749036899282f, 0.998679908955899090f, + -0.051365741967162593f, + 0.998640218180265270f, -0.052131704680283324f, 0.998599939930320370f, + -0.052897636725665324f, + 0.998559074229759310f, -0.053663537652730520f, 0.998517621102622210f, + -0.054429407010919133f, + 0.998475580573294770f, -0.055195244349689934f, 0.998432952666508440f, + -0.055961049218520569f, + 0.998389737407340160f, -0.056726821166907748f, 0.998345934821212370f, + -0.057492559744367566f, + 0.998301544933892890f, -0.058258264500435752f, 0.998256567771495180f, + -0.059023934984667931f, + 0.998211003360478190f, -0.059789570746639868f, 0.998164851727646240f, + -0.060555171335947788f, + 0.998118112900149180f, -0.061320736302208578f, 0.998070786905482340f, + -0.062086265195060088f, + 0.998022873771486240f, -0.062851757564161406f, 0.997974373526346990f, + -0.063617212959193106f, + 0.997925286198596000f, -0.064382630929857465f, 0.997875611817110150f, + -0.065148011025878833f, + 0.997825350411111640f, -0.065913352797003805f, 0.997774502010167820f, + -0.066678655793001557f, + 0.997723066644191640f, -0.067443919563664051f, 0.997671044343441000f, + -0.068209143658806329f, + 0.997618435138519550f, -0.068974327628266746f, 0.997565239060375750f, + -0.069739471021907307f, + 0.997511456140303450f, -0.070504573389613856f, 0.997457086409941910f, + -0.071269634281296401f, + 0.997402129901275300f, -0.072034653246889332f, 0.997346586646633230f, + -0.072799629836351673f, + 0.997290456678690210f, -0.073564563599667426f, 0.997233740030466280f, + -0.074329454086845756f, + 0.997176436735326190f, -0.075094300847921305f, 0.997118546826979980f, + -0.075859103432954447f, + 0.997060070339482960f, -0.076623861392031492f, 0.997001007307235290f, + -0.077388574275265049f, + 0.996941357764982160f, -0.078153241632794232f, 0.996881121747813850f, + -0.078917863014784942f, + 0.996820299291165670f, -0.079682437971430126f, 0.996758890430818000f, + -0.080446966052950014f, + 0.996696895202896060f, -0.081211446809592441f, 0.996634313643869900f, + -0.081975879791633066f, + 0.996571145790554840f, -0.082740264549375692f, 0.996507391680110820f, + -0.083504600633152432f, + 0.996443051350042630f, -0.084268887593324071f, 0.996378124838200210f, + -0.085033124980280275f, + 0.996312612182778000f, -0.085797312344439894f, 0.996246513422315520f, + -0.086561449236251170f, + 0.996179828595696980f, -0.087325535206192059f, 0.996112557742151130f, + -0.088089569804770507f, + 0.996044700901251970f, -0.088853552582524600f, 0.995976258112917790f, + -0.089617483090022959f, + 0.995907229417411720f, -0.090381360877864983f, 0.995837614855341610f, + -0.091145185496681005f, + 0.995767414467659820f, -0.091908956497132724f, 0.995696628295663520f, + -0.092672673429913310f, + 0.995625256380994310f, -0.093436335845747787f, 0.995553298765638470f, + -0.094199943295393204f, + 0.995480755491926940f, -0.094963495329638992f, 0.995407626602534900f, + -0.095726991499307162f, + 0.995333912140482280f, -0.096490431355252593f, 0.995259612149133390f, + -0.097253814448363271f, + 0.995184726672196930f, -0.098017140329560604f, 0.995109255753726110f, + -0.098780408549799623f, + 0.995033199438118630f, -0.099543618660069319f, 0.994956557770116380f, + -0.100306770211392860f, + 0.994879330794805620f, -0.101069862754827820f, 0.994801518557617110f, + -0.101832895841466530f, + 0.994723121104325700f, -0.102595869022436280f, 0.994644138481050710f, + -0.103358781848899610f, + 0.994564570734255420f, -0.104121633872054590f, 0.994484417910747600f, + -0.104884424643134970f, + 0.994403680057679100f, -0.105647153713410620f, 0.994322357222545810f, + -0.106409820634187680f, + 0.994240449453187900f, -0.107172424956808840f, 0.994157956797789730f, + -0.107934966232653650f, + 0.994074879304879370f, -0.108697444013138720f, 0.993991217023329380f, + -0.109459857849717980f, + 0.993906970002356060f, -0.110222207293883060f, 0.993822138291519660f, + -0.110984491897163390f, + 0.993736721940724600f, -0.111746711211126590f, 0.993650721000219120f, + -0.112508864787378690f, + 0.993564135520595300f, -0.113270952177564350f, 0.993476965552789190f, + -0.114032972933367200f, + 0.993389211148080650f, -0.114794926606510080f, 0.993300872358093280f, + -0.115556812748755260f, + 0.993211949234794500f, -0.116318630911904750f, 0.993122441830495580f, + -0.117080380647800590f, + 0.993032350197851410f, -0.117842061508324980f, 0.992941674389860470f, + -0.118603673045400720f, + 0.992850414459865100f, -0.119365214810991350f, 0.992758570461551140f, + -0.120126686357101500f, + 0.992666142448948020f, -0.120888087235777080f, 0.992573130476428810f, + -0.121649416999105530f, + 0.992479534598709970f, -0.122410675199216200f, 0.992385354870851670f, + -0.123171861388280480f, + 0.992290591348257370f, -0.123932975118512160f, 0.992195244086673920f, + -0.124694015942167640f, + 0.992099313142191800f, -0.125454983411546230f, 0.992002798571244520f, + -0.126215877078990350f, + 0.991905700430609330f, -0.126976696496885870f, 0.991808018777406430f, + -0.127737441217662310f, + 0.991709753669099530f, -0.128498110793793170f, 0.991610905163495370f, + -0.129258704777796140f, + 0.991511473318743900f, -0.130019222722233350f, 0.991411458193338540f, + -0.130779664179711710f, + 0.991310859846115440f, -0.131540028702883120f, 0.991209678336254060f, + -0.132300315844444650f, + 0.991107913723276890f, -0.133060525157139060f, 0.991005566067049370f, + -0.133820656193754720f, + 0.990902635427780010f, -0.134580708507126170f, 0.990799121866020370f, + -0.135340681650134210f, + 0.990695025442664630f, -0.136100575175706200f, 0.990590346218950150f, + -0.136860388636816380f, + 0.990485084256457090f, -0.137620121586486040f, 0.990379239617108160f, + -0.138379773577783890f, + 0.990272812363169110f, -0.139139344163826200f, 0.990165802557248400f, + -0.139898832897777210f, + 0.990058210262297120f, -0.140658239332849210f, 0.989950035541608990f, + -0.141417563022303020f, + 0.989841278458820530f, -0.142176803519448030f, 0.989731939077910570f, + -0.142935960377642670f, + 0.989622017463200890f, -0.143695033150294470f, 0.989511513679355190f, + -0.144454021390860470f, + 0.989400427791380380f, -0.145212924652847460f, 0.989288759864625170f, + -0.145971742489812210f, + 0.989176509964781010f, -0.146730474455361750f, 0.989063678157881540f, + -0.147489120103153570f, + 0.988950264510302990f, -0.148247678986896030f, 0.988836269088763540f, + -0.149006150660348450f, + 0.988721691960323780f, -0.149764534677321510f, 0.988606533192386450f, + -0.150522830591677400f, + 0.988490792852696590f, -0.151281037957330220f, 0.988374471009341280f, + -0.152039156328246050f, + 0.988257567730749460f, -0.152797185258443440f, 0.988140083085692570f, + -0.153555124301993450f, + 0.988022017143283530f, -0.154312973013020100f, 0.987903369972977790f, + -0.155070730945700510f, + 0.987784141644572180f, -0.155828397654265230f, 0.987664332228205710f, + -0.156585972692998430f, + 0.987543941794359230f, -0.157343455616238250f, 0.987422970413855410f, + -0.158100845978376980f, + 0.987301418157858430f, -0.158858143333861450f, 0.987179285097874340f, + -0.159615347237193060f, + 0.987056571305750970f, -0.160372457242928280f, 0.986933276853677710f, + -0.161129472905678810f, + 0.986809401814185530f, -0.161886393780111830f, 0.986684946260146690f, + -0.162643219420950310f, + 0.986559910264775410f, -0.163399949382973230f, 0.986434293901627180f, + -0.164156583221015810f, + 0.986308097244598670f, -0.164913120489969890f, 0.986181320367928270f, + -0.165669560744784120f, + 0.986053963346195440f, -0.166425903540464100f, 0.985926026254321130f, + -0.167182148432072940f, + 0.985797509167567480f, -0.167938294974731170f, 0.985668412161537550f, + -0.168694342723617330f, + 0.985538735312176060f, -0.169450291233967960f, 0.985408478695768420f, + -0.170206140061078070f, + 0.985277642388941220f, -0.170961888760301220f, 0.985146226468662230f, + -0.171717536887049970f, + 0.985014231012239840f, -0.172473083996795950f, 0.984881656097323700f, + -0.173228529645070320f, + 0.984748501801904210f, -0.173983873387463820f, 0.984614768204312600f, + -0.174739114779627200f, + 0.984480455383220930f, -0.175494253377271430f, 0.984345563417641900f, + -0.176249288736167880f, + 0.984210092386929030f, -0.177004220412148750f, 0.984074042370776450f, + -0.177759047961107170f, + 0.983937413449218920f, -0.178513770938997510f, 0.983800205702631600f, + -0.179268388901835750f, + 0.983662419211730250f, -0.180022901405699510f, 0.983524054057571260f, + -0.180777308006728590f, + 0.983385110321551180f, -0.181531608261124970f, 0.983245588085407070f, + -0.182285801725153300f, + 0.983105487431216290f, -0.183039887955140950f, 0.982964808441396440f, + -0.183793866507478450f, + 0.982823551198705240f, -0.184547736938619620f, 0.982681715786240860f, + -0.185301498805081900f, + 0.982539302287441240f, -0.186055151663446630f, 0.982396310786084690f, + -0.186808695070359270f, + 0.982252741366289370f, -0.187562128582529600f, 0.982108594112513610f, + -0.188315451756732120f, + 0.981963869109555240f, -0.189068664149806190f, 0.981818566442552500f, + -0.189821765318656410f, + 0.981672686196983110f, -0.190574754820252740f, 0.981526228458664770f, + -0.191327632211630900f, + 0.981379193313754560f, -0.192080397049892440f, 0.981231580848749730f, + -0.192833048892205230f, + 0.981083391150486710f, -0.193585587295803610f, 0.980934624306141640f, + -0.194338011817988600f, + 0.980785280403230430f, -0.195090322016128250f, 0.980635359529608120f, + -0.195842517447657850f, + 0.980484861773469380f, -0.196594597670080220f, 0.980333787223347960f, + -0.197346562240965920f, + 0.980182135968117430f, -0.198098410717953560f, 0.980029908096990090f, + -0.198850142658750090f, + 0.979877103699517640f, -0.199601757621130970f, 0.979723722865591170f, + -0.200353255162940450f, + 0.979569765685440520f, -0.201104634842091900f, 0.979415232249634780f, + -0.201855896216568050f, + 0.979260122649082020f, -0.202607038844421130f, 0.979104436975029250f, + -0.203358062283773320f, + 0.978948175319062200f, -0.204108966092816870f, 0.978791337773105670f, + -0.204859749829814420f, + 0.978633924429423210f, -0.205610413053099240f, 0.978475935380616830f, + -0.206360955321075510f, + 0.978317370719627650f, -0.207111376192218560f, 0.978158230539735050f, + -0.207861675225075070f, + 0.977998514934557140f, -0.208611851978263490f, 0.977838223998050430f, + -0.209361906010474160f, + 0.977677357824509930f, -0.210111836880469610f, 0.977515916508569280f, + -0.210861644147084860f, + 0.977353900145199960f, -0.211611327369227550f, 0.977191308829712280f, + -0.212360886105878420f, + 0.977028142657754390f, -0.213110319916091360f, 0.976864401725312640f, + -0.213859628358993750f, + 0.976700086128711840f, -0.214608810993786760f, 0.976535195964614470f, + -0.215357867379745550f, + 0.976369731330021140f, -0.216106797076219520f, 0.976203692322270560f, + -0.216855599642632620f, + 0.976037079039039020f, -0.217604274638483640f, 0.975869891578341030f, + -0.218352821623346320f, + 0.975702130038528570f, -0.219101240156869800f, 0.975533794518291360f, + -0.219849529798778700f, + 0.975364885116656980f, -0.220597690108873510f, 0.975195401932990370f, + -0.221345720647030810f, + 0.975025345066994120f, -0.222093620973203510f, 0.974854714618708430f, + -0.222841390647421120f, + 0.974683510688510670f, -0.223589029229789990f, 0.974511733377115720f, + -0.224336536280493600f, + 0.974339382785575860f, -0.225083911359792830f, 0.974166459015280320f, + -0.225831154028026170f, + 0.973992962167955830f, -0.226578263845610000f, 0.973818892345666100f, + -0.227325240373038860f, + 0.973644249650811980f, -0.228072083170885730f, 0.973469034186131070f, + -0.228818791799802220f, + 0.973293246054698250f, -0.229565365820518870f, 0.973116885359925130f, + -0.230311804793845440f, + 0.972939952205560180f, -0.231058108280671110f, 0.972762446695688570f, + -0.231804275841964780f, + 0.972584368934732210f, -0.232550307038775240f, 0.972405719027449770f, + -0.233296201432231590f, + 0.972226497078936270f, -0.234041958583543430f, 0.972046703194623500f, + -0.234787578054000970f, + 0.971866337480279400f, -0.235533059404975490f, 0.971685400042008540f, + -0.236278402197919570f, + 0.971503890986251780f, -0.237023605994367200f, 0.971321810419786160f, + -0.237768670355934190f, + 0.971139158449725090f, -0.238513594844318420f, 0.970955935183517970f, + -0.239258379021299980f, + 0.970772140728950350f, -0.240003022448741500f, 0.970587775194143630f, + -0.240747524688588430f, + 0.970402838687555500f, -0.241491885302869330f, 0.970217331317979160f, + -0.242236103853696010f, + 0.970031253194543970f, -0.242980179903263870f, 0.969844604426714830f, + -0.243724113013852160f, + 0.969657385124292450f, -0.244467902747824150f, 0.969469595397413060f, + -0.245211548667627540f, + 0.969281235356548530f, -0.245955050335794590f, 0.969092305112506210f, + -0.246698407314942410f, + 0.968902804776428870f, -0.247441619167773270f, 0.968712734459794780f, + -0.248184685457074780f, + 0.968522094274417380f, -0.248927605745720150f, 0.968330884332445190f, + -0.249670379596668570f, + 0.968139104746362440f, -0.250413006572965220f, 0.967946755628987800f, + -0.251155486237741920f, + 0.967753837093475510f, -0.251897818154216970f, 0.967560349253314360f, + -0.252640001885695520f, + 0.967366292222328510f, -0.253382036995570160f, 0.967171666114676640f, + -0.254123923047320620f, + 0.966976471044852070f, -0.254865659604514570f, 0.966780707127683270f, + -0.255607246230807380f, + 0.966584374478333120f, -0.256348682489942910f, 0.966387473212298900f, + -0.257089967945753120f, + 0.966190003445412500f, -0.257831102162158990f, 0.965991965293840570f, + -0.258572084703170340f, + 0.965793358874083680f, -0.259312915132886230f, 0.965594184302976830f, + -0.260053593015495190f, + 0.965394441697689400f, -0.260794117915275510f, 0.965194131175724720f, + -0.261534489396595520f, + 0.964993252854920320f, -0.262274707023913590f, 0.964791806853447900f, + -0.263014770361779000f, + 0.964589793289812760f, -0.263754678974831350f, 0.964387212282854290f, + -0.264494432427801630f, + 0.964184063951745830f, -0.265234030285511790f, 0.963980348415994110f, + -0.265973472112875590f, + 0.963776065795439840f, -0.266712757474898370f, 0.963571216210257320f, + -0.267451885936677620f, + 0.963365799780954050f, -0.268190857063403180f, 0.963159816628371360f, + -0.268929670420357260f, + 0.962953266873683880f, -0.269668325572915090f, 0.962746150638399410f, + -0.270406822086544820f, + 0.962538468044359160f, -0.271145159526808010f, 0.962330219213737400f, + -0.271883337459359720f, + 0.962121404269041580f, -0.272621355449948980f, 0.961912023333112210f, + -0.273359213064418680f, + 0.961702076529122540f, -0.274096909868706380f, 0.961491563980579000f, + -0.274834445428843940f, + 0.961280485811320640f, -0.275571819310958140f, 0.961068842145519350f, + -0.276309031081271080f, + 0.960856633107679660f, -0.277046080306099900f, 0.960643858822638590f, + -0.277782966551857690f, + 0.960430519415565790f, -0.278519689385053060f, 0.960216615011963430f, + -0.279256248372291180f, + 0.960002145737665960f, -0.279992643080273220f, 0.959787111718839900f, + -0.280728873075797190f, + 0.959571513081984520f, -0.281464937925757940f, 0.959355349953930790f, + -0.282200837197147560f, + 0.959138622461841890f, -0.282936570457055390f, 0.958921330733213170f, + -0.283672137272668430f, + 0.958703474895871600f, -0.284407537211271880f, 0.958485055077976100f, + -0.285142769840248670f, + 0.958266071408017670f, -0.285877834727080620f, 0.958046524014818600f, + -0.286612731439347790f, + 0.957826413027532910f, -0.287347459544729510f, 0.957605738575646350f, + -0.288082018611004130f, + 0.957384500788975860f, -0.288816408206049480f, 0.957162699797670210f, + -0.289550627897843030f, + 0.956940335732208820f, -0.290284677254462330f, 0.956717408723403050f, + -0.291018555844085090f, + 0.956493918902395100f, -0.291752263234989260f, 0.956269866400658030f, + -0.292485798995553880f, + 0.956045251349996410f, -0.293219162694258630f, 0.955820073882545420f, + -0.293952353899684660f, + 0.955594334130771110f, -0.294685372180514330f, 0.955368032227470350f, + -0.295418217105532010f, + 0.955141168305770780f, -0.296150888243623790f, 0.954913742499130520f, + -0.296883385163778270f, + 0.954685754941338340f, -0.297615707435086200f, 0.954457205766513490f, + -0.298347854626741400f, + 0.954228095109105670f, -0.299079826308040480f, 0.953998423103894490f, + -0.299811622048383350f, + 0.953768189885990330f, -0.300543241417273450f, 0.953537395590833280f, + -0.301274683984317950f, + 0.953306040354193860f, -0.302005949319228080f, 0.953074124312172200f, + -0.302737036991819140f, + 0.952841647601198720f, -0.303467946572011320f, 0.952608610358033350f, + -0.304198677629829110f, + 0.952375012719765880f, -0.304929229735402370f, 0.952140854823815830f, + -0.305659602458966120f, + 0.951906136807932350f, -0.306389795370860920f, 0.951670858810193860f, + -0.307119808041533100f, + 0.951435020969008340f, -0.307849640041534870f, 0.951198623423113230f, + -0.308579290941525090f, + 0.950961666311575080f, -0.309308760312268730f, 0.950724149773789610f, + -0.310038047724637890f, + 0.950486073949481700f, -0.310767152749611470f, 0.950247438978705230f, + -0.311496074958275910f, + 0.950008245001843000f, -0.312224813921824880f, 0.949768492159606680f, + -0.312953369211560200f, + 0.949528180593036670f, -0.313681740398891520f, 0.949287310443502120f, + -0.314409927055336660f, + 0.949045881852700560f, -0.315137928752522440f, 0.948803894962658490f, + -0.315865745062183960f, + 0.948561349915730270f, -0.316593375556165850f, 0.948318246854599090f, + -0.317320819806421740f, + 0.948074585922276230f, -0.318048077385014950f, 0.947830367262101010f, + -0.318775147864118480f, + 0.947585591017741090f, -0.319502030816015690f, 0.947340257333192050f, + -0.320228725813099860f, + 0.947094366352777220f, -0.320955232427875210f, 0.946847918221148000f, + -0.321681550232956580f, + 0.946600913083283530f, -0.322407678801069850f, 0.946353351084490590f, + -0.323133617705052330f, + 0.946105232370403450f, -0.323859366517852850f, 0.945856557086983910f, + -0.324584924812532150f, + 0.945607325380521280f, -0.325310292162262930f, 0.945357537397632290f, + -0.326035468140330240f, + 0.945107193285260610f, -0.326760452320131730f, 0.944856293190677210f, + -0.327485244275178000f, + 0.944604837261480260f, -0.328209843579092500f, 0.944352825645594750f, + -0.328934249805612200f, + 0.944100258491272660f, -0.329658462528587490f, 0.943847135947092690f, + -0.330382481321982780f, + 0.943593458161960390f, -0.331106305759876430f, 0.943339225285107720f, + -0.331829935416461110f, + 0.943084437466093490f, -0.332553369866044220f, 0.942829094854802710f, + -0.333276608683047930f, + 0.942573197601446870f, -0.333999651442009380f, 0.942316745856563780f, + -0.334722497717581220f, + 0.942059739771017310f, -0.335445147084531600f, 0.941802179495997650f, + -0.336167599117744520f, + 0.941544065183020810f, -0.336889853392220050f, 0.941285396983928660f, + -0.337611909483074620f, + 0.941026175050889260f, -0.338333766965541130f, 0.940766399536396070f, + -0.339055425414969640f, + 0.940506070593268300f, -0.339776884406826850f, 0.940245188374650880f, + -0.340498143516697160f, + 0.939983753034014050f, -0.341219202320282360f, 0.939721764725153340f, + -0.341940060393402190f, + 0.939459223602189920f, -0.342660717311994380f, 0.939196129819569900f, + -0.343381172652115040f, + 0.938932483532064600f, -0.344101425989938810f, 0.938668284894770170f, + -0.344821476901759290f, + 0.938403534063108060f, -0.345541324963989090f, 0.938138231192824360f, + -0.346260969753160010f, + 0.937872376439989890f, -0.346980410845923680f, 0.937605969960999990f, + -0.347699647819051380f, + 0.937339011912574960f, -0.348418680249434560f, 0.937071502451759190f, + -0.349137507714084970f, + 0.936803441735921560f, -0.349856129790134920f, 0.936534829922755500f, + -0.350574546054837510f, + 0.936265667170278260f, -0.351292756085567090f, 0.935995953636831410f, + -0.352010759459819080f, + 0.935725689481080370f, -0.352728555755210730f, 0.935454874862014620f, + -0.353446144549480810f, + 0.935183509938947610f, -0.354163525420490340f, 0.934911594871516090f, + -0.354880697946222790f, + 0.934639129819680780f, -0.355597661704783850f, 0.934366114943725790f, + -0.356314416274402410f, + 0.934092550404258980f, -0.357030961233429980f, 0.933818436362210960f, + -0.357747296160341900f, + 0.933543772978836170f, -0.358463420633736540f, 0.933268560415712050f, + -0.359179334232336500f, + 0.932992798834738960f, -0.359895036534988110f, 0.932716488398140250f, + -0.360610527120662270f, + 0.932439629268462360f, -0.361325805568454280f, 0.932162221608574430f, + -0.362040871457584180f, + 0.931884265581668150f, -0.362755724367397230f, 0.931605761351257830f, + -0.363470363877363760f, + 0.931326709081180430f, -0.364184789567079890f, 0.931047108935595280f, + -0.364899001016267320f, + 0.930766961078983710f, -0.365612997804773850f, 0.930486265676149780f, + -0.366326779512573590f, + 0.930205022892219070f, -0.367040345719767180f, 0.929923232892639670f, + -0.367753696006581980f, + 0.929640895843181330f, -0.368466829953372320f, 0.929358011909935500f, + -0.369179747140620020f, + 0.929074581259315860f, -0.369892447148934100f, 0.928790604058057020f, + -0.370604929559051670f, + 0.928506080473215590f, -0.371317193951837540f, 0.928221010672169440f, + -0.372029239908285010f, + 0.927935394822617890f, -0.372741067009515760f, 0.927649233092581180f, + -0.373452674836780300f, + 0.927362525650401110f, -0.374164062971457930f, 0.927075272664740100f, + -0.374875230995057540f, + 0.926787474304581750f, -0.375586178489217220f, 0.926499130739230510f, + -0.376296905035704790f, + 0.926210242138311380f, -0.377007410216418260f, 0.925920808671770070f, + -0.377717693613385640f, + 0.925630830509872720f, -0.378427754808765560f, 0.925340307823206310f, + -0.379137593384847320f, + 0.925049240782677580f, -0.379847208924051160f, 0.924757629559513910f, + -0.380556601008928520f, + 0.924465474325262600f, -0.381265769222162380f, 0.924172775251791200f, + -0.381974713146567220f, + 0.923879532511286740f, -0.382683432365089780f, 0.923585746276256670f, + -0.383391926460808660f, + 0.923291416719527640f, -0.384100195016935040f, 0.922996544014246250f, + -0.384808237616812880f, + 0.922701128333878630f, -0.385516053843918850f, 0.922405169852209880f, + -0.386223643281862980f, + 0.922108668743345180f, -0.386931005514388580f, 0.921811625181708120f, + -0.387638140125372730f, + 0.921514039342042010f, -0.388345046698826250f, 0.921215911399408730f, + -0.389051724818894380f, + 0.920917241529189520f, -0.389758174069856410f, 0.920618029907083970f, + -0.390464394036126590f, + 0.920318276709110590f, -0.391170384302253870f, 0.920017982111606570f, + -0.391876144452922350f, + 0.919717146291227360f, -0.392581674072951470f, 0.919415769424947070f, + -0.393286972747296400f, + 0.919113851690057770f, -0.393992040061048100f, 0.918811393264170050f, + -0.394696875599433560f, + 0.918508394325212250f, -0.395401478947816350f, 0.918204855051430900f, + -0.396105849691696270f, + 0.917900775621390500f, -0.396809987416710310f, 0.917596156213972950f, + -0.397513891708632330f, + 0.917290997008377910f, -0.398217562153373560f, 0.916985298184123000f, + -0.398920998336982910f, + 0.916679059921042700f, -0.399624199845646790f, 0.916372282399289140f, + -0.400327166265690090f, + 0.916064965799331720f, -0.401029897183575620f, 0.915757110301956720f, + -0.401732392185905010f, + 0.915448716088267830f, -0.402434650859418430f, 0.915139783339685260f, + -0.403136672790995300f, + 0.914830312237946200f, -0.403838457567654070f, 0.914520302965104450f, + -0.404540004776553000f, + 0.914209755703530690f, -0.405241314004989860f, 0.913898670635911680f, + -0.405942384840402510f, + 0.913587047945250810f, -0.406643216870369030f, 0.913274887814867760f, + -0.407343809682607970f, + 0.912962190428398210f, -0.408044162864978690f, 0.912648955969793900f, + -0.408744276005481360f, + 0.912335184623322750f, -0.409444148692257590f, 0.912020876573568340f, + -0.410143780513590240f, + 0.911706032005429880f, -0.410843171057903910f, 0.911390651104122430f, + -0.411542319913765220f, + 0.911074734055176360f, -0.412241226669882890f, 0.910758281044437570f, + -0.412939890915108080f, + 0.910441292258067250f, -0.413638312238434500f, 0.910123767882541680f, + -0.414336490228999100f, + 0.909805708104652220f, -0.415034424476081630f, 0.909487113111505430f, + -0.415732114569105360f, + 0.909167983090522380f, -0.416429560097637150f, 0.908848318229439120f, + -0.417126760651387870f, + 0.908528118716306120f, -0.417823715820212270f, 0.908207384739488700f, + -0.418520425194109700f, + 0.907886116487666260f, -0.419216888363223910f, 0.907564314149832630f, + -0.419913104917843620f, + 0.907241977915295820f, -0.420609074448402510f, 0.906919107973678140f, + -0.421304796545479640f, + 0.906595704514915330f, -0.422000270799799680f, 0.906271767729257660f, + -0.422695496802232950f, + 0.905947297807268460f, -0.423390474143796050f, 0.905622294939825270f, + -0.424085202415651560f, + 0.905296759318118820f, -0.424779681209108810f, 0.904970691133653250f, + -0.425473910115623800f, + 0.904644090578246240f, -0.426167888726799620f, 0.904316957844028320f, + -0.426861616634386430f, + 0.903989293123443340f, -0.427555093430282080f, 0.903661096609247980f, + -0.428248318706531960f, + 0.903332368494511820f, -0.428941292055329490f, 0.903003108972617150f, + -0.429634013069016380f, + 0.902673318237258830f, -0.430326481340082610f, 0.902342996482444200f, + -0.431018696461167030f, + 0.902012143902493180f, -0.431710658025057260f, 0.901680760692037730f, + -0.432402365624690140f, + 0.901348847046022030f, -0.433093818853151960f, 0.901016403159702330f, + -0.433785017303678520f, + 0.900683429228646970f, -0.434475960569655650f, 0.900349925448735600f, + -0.435166648244619260f, + 0.900015892016160280f, -0.435857079922255470f, 0.899681329127423930f, + -0.436547255196401200f, + 0.899346236979341570f, -0.437237173661044090f, 0.899010615769039070f, + -0.437926834910322860f, + 0.898674465693953820f, -0.438616238538527660f, 0.898337786951834310f, + -0.439305384140099950f, + 0.898000579740739880f, -0.439994271309633260f, 0.897662844259040860f, + -0.440682899641872900f, + 0.897324580705418320f, -0.441371268731716670f, 0.896985789278863970f, + -0.442059378174214700f, + 0.896646470178680150f, -0.442747227564570020f, 0.896306623604479550f, + -0.443434816498138480f, + 0.895966249756185220f, -0.444122144570429200f, 0.895625348834030110f, + -0.444809211377104880f, + 0.895283921038557580f, -0.445496016513981740f, 0.894941966570620750f, + -0.446182559577030070f, + 0.894599485631382700f, -0.446868840162374160f, 0.894256478422316040f, + -0.447554857866293010f, + 0.893912945145203250f, -0.448240612285219890f, 0.893568886002135910f, + -0.448926103015743260f, + 0.893224301195515320f, -0.449611329654606540f, 0.892879190928051680f, + -0.450296291798708610f, + 0.892533555402764580f, -0.450980989045103860f, 0.892187394822982480f, + -0.451665420991002490f, + 0.891840709392342720f, -0.452349587233770890f, 0.891493499314791380f, + -0.453033487370931580f, + 0.891145764794583180f, -0.453717121000163870f, 0.890797506036281490f, + -0.454400487719303580f, + 0.890448723244757880f, -0.455083587126343840f, 0.890099416625192320f, + -0.455766418819434640f, + 0.889749586383072780f, -0.456448982396883920f, 0.889399232724195520f, + -0.457131277457156980f, + 0.889048355854664570f, -0.457813303598877170f, 0.888696955980891600f, + -0.458495060420826270f, + 0.888345033309596350f, -0.459176547521944090f, 0.887992588047805560f, + -0.459857764501329540f, + 0.887639620402853930f, -0.460538710958240010f, 0.887286130582383150f, + -0.461219386492092380f, + 0.886932118794342190f, -0.461899790702462730f, 0.886577585246987040f, + -0.462579923189086810f, + 0.886222530148880640f, -0.463259783551860150f, 0.885866953708892790f, + -0.463939371390838520f, + 0.885510856136199950f, -0.464618686306237820f, 0.885154237640285110f, + -0.465297727898434600f, + 0.884797098430937790f, -0.465976495767966180f, 0.884439438718253810f, + -0.466654989515530920f, + 0.884081258712634990f, -0.467333208741988420f, 0.883722558624789660f, + -0.468011153048359830f, + 0.883363338665731580f, -0.468688822035827900f, 0.883003599046780830f, + -0.469366215305737520f, + 0.882643339979562790f, -0.470043332459595620f, 0.882282561676008710f, + -0.470720173099071600f, + 0.881921264348355050f, -0.471396736825997640f, 0.881559448209143780f, + -0.472073023242368660f, + 0.881197113471222090f, -0.472749031950342790f, 0.880834260347742040f, + -0.473424762552241530f, + 0.880470889052160750f, -0.474100214650549970f, 0.880106999798240360f, + -0.474775387847917120f, + 0.879742592800047410f, -0.475450281747155870f, 0.879377668271953290f, + -0.476124895951243580f, + 0.879012226428633530f, -0.476799230063322090f, 0.878646267485068130f, + -0.477473283686698060f, + 0.878279791656541580f, -0.478147056424843010f, 0.877912799158641840f, + -0.478820547881393890f, + 0.877545290207261350f, -0.479493757660153010f, 0.877177265018595940f, + -0.480166685365088390f, + 0.876808723809145650f, -0.480839330600333960f, 0.876439666795713610f, + -0.481511692970189860f, + 0.876070094195406600f, -0.482183772079122720f, 0.875700006225634600f, + -0.482855567531765670f, + 0.875329403104110890f, -0.483527078932918740f, 0.874958285048851650f, + -0.484198305887549030f, + 0.874586652278176110f, -0.484869248000791060f, 0.874214505010706300f, + -0.485539904877946960f, + 0.873841843465366860f, -0.486210276124486420f, 0.873468667861384880f, + -0.486880361346047340f, + 0.873094978418290090f, -0.487550160148436000f, 0.872720775355914300f, + -0.488219672137626790f, + 0.872346058894391540f, -0.488888896919763170f, 0.871970829254157810f, + -0.489557834101157440f, + 0.871595086655950980f, -0.490226483288291160f, 0.871218831320811020f, + -0.490894844087815090f, + 0.870842063470078980f, -0.491562916106549900f, 0.870464783325397670f, + -0.492230698951486020f, + 0.870086991108711460f, -0.492898192229784040f, 0.869708687042265670f, + -0.493565395548774770f, + 0.869329871348606840f, -0.494232308515959670f, 0.868950544250582380f, + -0.494898930739011260f, + 0.868570705971340900f, -0.495565261825772540f, 0.868190356734331310f, + -0.496231301384258250f, + 0.867809496763303320f, -0.496897049022654470f, 0.867428126282306920f, + -0.497562504349319150f, + 0.867046245515692650f, -0.498227666972781870f, 0.866663854688111130f, + -0.498892536501744590f, + 0.866280954024512990f, -0.499557112545081840f, 0.865897543750148820f, + -0.500221394711840680f, + 0.865513624090569090f, -0.500885382611240710f, 0.865129195271623800f, + -0.501549075852675390f, + 0.864744257519462380f, -0.502212474045710790f, 0.864358811060534030f, + -0.502875576800086990f, + 0.863972856121586810f, -0.503538383725717580f, 0.863586392929668100f, + -0.504200894432690340f, + 0.863199421712124160f, -0.504863108531267590f, 0.862811942696600330f, + -0.505525025631885390f, + 0.862423956111040610f, -0.506186645345155230f, 0.862035462183687210f, + -0.506847967281863210f, + 0.861646461143081300f, -0.507508991052970870f, 0.861256953218062170f, + -0.508169716269614600f, + 0.860866938637767310f, -0.508830142543106990f, 0.860476417631632070f, + -0.509490269484936360f, + 0.860085390429390140f, -0.510150096706766810f, 0.859693857261072610f, + -0.510809623820439040f, + 0.859301818357008470f, -0.511468850437970300f, 0.858909273947823900f, + -0.512127776171554690f, + 0.858516224264442740f, -0.512786400633562960f, 0.858122669538086140f, + -0.513444723436543460f, + 0.857728610000272120f, -0.514102744193221660f, 0.857334045882815590f, + -0.514760462516501200f, + 0.856938977417828760f, -0.515417878019462930f, 0.856543404837719960f, + -0.516074990315366630f, + 0.856147328375194470f, -0.516731799017649870f, 0.855750748263253920f, + -0.517388303739929060f, + 0.855353664735196030f, -0.518044504095999340f, 0.854956078024614930f, + -0.518700399699834950f, + 0.854557988365400530f, -0.519355990165589640f, 0.854159395991738850f, + -0.520011275107596040f, + 0.853760301138111410f, -0.520666254140367160f, 0.853360704039295430f, + -0.521320926878595660f, + 0.852960604930363630f, -0.521975292937154390f, 0.852560004046684080f, + -0.522629351931096610f, + 0.852158901623919830f, -0.523283103475656430f, 0.851757297898029120f, + -0.523936547186248600f, + 0.851355193105265200f, -0.524589682678468950f, 0.850952587482175730f, + -0.525242509568094710f, + 0.850549481265603480f, -0.525895027471084630f, 0.850145874692685210f, + -0.526547236003579440f, + 0.849741768000852550f, -0.527199134781901280f, 0.849337161427830780f, + -0.527850723422555230f, + 0.848932055211639610f, -0.528502001542228480f, 0.848526449590592650f, + -0.529152968757790610f, + 0.848120344803297230f, -0.529803624686294610f, 0.847713741088654380f, + -0.530453968944976320f, + 0.847306638685858320f, -0.531104001151255000f, 0.846899037834397240f, + -0.531753720922733320f, + 0.846490938774052130f, -0.532403127877197900f, 0.846082341744897050f, + -0.533052221632619450f, + 0.845673246987299070f, -0.533701001807152960f, 0.845263654741918220f, + -0.534349468019137520f, + 0.844853565249707120f, -0.534997619887097150f, 0.844442978751910660f, + -0.535645457029741090f, + 0.844031895490066410f, -0.536292979065963180f, 0.843620315706004150f, + -0.536940185614842910f, + 0.843208239641845440f, -0.537587076295645390f, 0.842795667540004120f, + -0.538233650727821700f, + 0.842382599643185850f, -0.538879908531008420f, 0.841969036194387680f, + -0.539525849325028890f, + 0.841554977436898440f, -0.540171472729892850f, 0.841140423614298080f, + -0.540816778365796670f, + 0.840725374970458070f, -0.541461765853123440f, 0.840309831749540770f, + -0.542106434812443920f, + 0.839893794195999520f, -0.542750784864515890f, 0.839477262554578550f, + -0.543394815630284800f, + 0.839060237070312740f, -0.544038526730883820f, 0.838642717988527300f, + -0.544681917787634530f, + 0.838224705554838080f, -0.545324988422046460f, 0.837806200015150940f, + -0.545967738255817570f, + 0.837387201615661940f, -0.546610166910834860f, 0.836967710602857020f, + -0.547252274009174090f, + 0.836547727223512010f, -0.547894059173100190f, 0.836127251724692270f, + -0.548535522025067390f, + 0.835706284353752600f, -0.549176662187719660f, 0.835284825358337370f, + -0.549817479283890910f, + 0.834862874986380010f, -0.550457972936604810f, 0.834440433486103190f, + -0.551098142769075430f, + 0.834017501106018130f, -0.551737988404707340f, 0.833594078094925140f, + -0.552377509467096070f, + 0.833170164701913190f, -0.553016705580027470f, 0.832745761176359460f, + -0.553655576367479310f, + 0.832320867767929680f, -0.554294121453620000f, 0.831895484726577590f, + -0.554932340462810370f, + 0.831469612302545240f, -0.555570233019602180f, 0.831043250746362320f, + -0.556207798748739930f, + 0.830616400308846310f, -0.556845037275160100f, 0.830189061241102370f, + -0.557481948223991550f, + 0.829761233794523050f, -0.558118531220556100f, 0.829332918220788250f, + -0.558754785890368310f, + 0.828904114771864870f, -0.559390711859136140f, 0.828474823700007130f, + -0.560026308752760380f, + 0.828045045257755800f, -0.560661576197336030f, 0.827614779697938400f, + -0.561296513819151470f, + 0.827184027273669130f, -0.561931121244689470f, 0.826752788238348520f, + -0.562565398100626560f, + 0.826321062845663530f, -0.563199344013834090f, 0.825888851349586780f, + -0.563832958611378170f, + 0.825456154004377550f, -0.564466241520519500f, 0.825022971064580220f, + -0.565099192368713980f, + 0.824589302785025290f, -0.565731810783613120f, 0.824155149420828570f, + -0.566364096393063840f, + 0.823720511227391430f, -0.566996048825108680f, 0.823285388460400110f, + -0.567627667707986230f, + 0.822849781375826430f, -0.568258952670131490f, 0.822413690229926390f, + -0.568889903340175860f, + 0.821977115279241550f, -0.569520519346947140f, 0.821540056780597610f, + -0.570150800319470300f, + 0.821102514991104650f, -0.570780745886967260f, 0.820664490168157460f, + -0.571410355678857230f, + 0.820225982569434690f, -0.572039629324757050f, 0.819786992452898990f, + -0.572668566454481160f, + 0.819347520076796900f, -0.573297166698042200f, 0.818907565699658950f, + -0.573925429685650750f, + 0.818467129580298660f, -0.574553355047715760f, 0.818026211977813440f, + -0.575180942414845080f, + 0.817584813151583710f, -0.575808191417845340f, 0.817142933361272970f, + -0.576435101687721830f, + 0.816700572866827850f, -0.577061672855679440f, 0.816257731928477390f, + -0.577687904553122800f, + 0.815814410806733780f, -0.578313796411655590f, 0.815370609762391290f, + -0.578939348063081780f, + 0.814926329056526620f, -0.579564559139405630f, 0.814481568950498610f, + -0.580189429272831680f, + 0.814036329705948410f, -0.580813958095764530f, 0.813590611584798510f, + -0.581438145240810170f, + 0.813144414849253590f, -0.582061990340775440f, 0.812697739761799490f, + -0.582685493028668460f, + 0.812250586585203880f, -0.583308652937698290f, 0.811802955582515470f, + -0.583931469701276180f, + 0.811354847017063730f, -0.584553942953015330f, 0.810906261152459670f, + -0.585176072326730410f, + 0.810457198252594770f, -0.585797857456438860f, 0.810007658581641140f, + -0.586419297976360500f, + 0.809557642404051260f, -0.587040393520917970f, 0.809107149984558240f, + -0.587661143724736660f, + 0.808656181588174980f, -0.588281548222645220f, 0.808204737480194720f, + -0.588901606649675720f, + 0.807752817926190360f, -0.589521318641063940f, 0.807300423192014450f, + -0.590140683832248820f, + 0.806847553543799330f, -0.590759701858874160f, 0.806394209247956240f, + -0.591378372356787580f, + 0.805940390571176280f, -0.591996694962040990f, 0.805486097780429230f, + -0.592614669310891130f, + 0.805031331142963660f, -0.593232295039799800f, 0.804576090926307110f, + -0.593849571785433630f, + 0.804120377398265810f, -0.594466499184664430f, 0.803664190826924090f, + -0.595083076874569960f, + 0.803207531480644940f, -0.595699304492433360f, 0.802750399628069160f, + -0.596315181675743710f, + 0.802292795538115720f, -0.596930708062196500f, 0.801834719479981310f, + -0.597545883289693160f, + 0.801376171723140240f, -0.598160706996342270f, 0.800917152537344300f, + -0.598775178820458720f, + 0.800457662192622820f, -0.599389298400564540f, 0.799997700959281910f, + -0.600003065375388940f, + 0.799537269107905010f, -0.600616479383868970f, 0.799076366909352350f, + -0.601229540065148500f, + 0.798614994634760820f, -0.601842247058580030f, 0.798153152555543750f, + -0.602454600003723750f, + 0.797690840943391160f, -0.603066598540348160f, 0.797228060070268810f, + -0.603678242308430370f, + 0.796764810208418830f, -0.604289530948155960f, 0.796301091630359110f, + -0.604900464099919820f, + 0.795836904608883570f, -0.605511041404325550f, 0.795372249417061310f, + -0.606121262502186120f, + 0.794907126328237010f, -0.606731127034524480f, 0.794441535616030590f, + -0.607340634642572930f, + 0.793975477554337170f, -0.607949784967773630f, 0.793508952417326660f, + -0.608558577651779450f, + 0.793041960479443640f, -0.609167012336453210f, 0.792574502015407690f, + -0.609775088663868430f, + 0.792106577300212390f, -0.610382806276309480f, 0.791638186609125880f, + -0.610990164816271660f, + 0.791169330217690200f, -0.611597163926461910f, 0.790700008401721610f, + -0.612203803249797950f, + 0.790230221437310030f, -0.612810082429409710f, 0.789759969600819070f, + -0.613416001108638590f, + 0.789289253168885650f, -0.614021558931038380f, 0.788818072418420280f, + -0.614626755540375050f, + 0.788346427626606340f, -0.615231590580626820f, 0.787874319070900220f, + -0.615836063695985090f, + 0.787401747029031430f, -0.616440174530853650f, 0.786928711779001810f, + -0.617043922729849760f, + 0.786455213599085770f, -0.617647307937803870f, 0.785981252767830150f, + -0.618250329799760250f, + 0.785506829564053930f, -0.618852987960976320f, 0.785031944266848080f, + -0.619455282066924020f, + 0.784556597155575240f, -0.620057211763289100f, 0.784080788509869950f, + -0.620658776695972140f, + 0.783604518609638200f, -0.621259976511087550f, 0.783127787735057310f, + -0.621860810854965360f, + 0.782650596166575730f, -0.622461279374149970f, 0.782172944184913010f, + -0.623061381715401260f, + 0.781694832071059390f, -0.623661117525694530f, 0.781216260106276090f, + -0.624260486452220650f, + 0.780737228572094490f, -0.624859488142386340f, 0.780257737750316590f, + -0.625458122243814360f, + 0.779777787923014550f, -0.626056388404343520f, 0.779297379372530300f, + -0.626654286272029350f, + 0.778816512381475980f, -0.627251815495144080f, 0.778335187232733210f, + -0.627848975722176460f, + 0.777853404209453150f, -0.628445766601832710f, 0.777371163595056310f, + -0.629042187783036000f, + 0.776888465673232440f, -0.629638238914926980f, 0.776405310727940390f, + -0.630233919646864370f, + 0.775921699043407690f, -0.630829229628424470f, 0.775437630904130540f, + -0.631424168509401860f, + 0.774953106594873930f, -0.632018735939809060f, 0.774468126400670860f, + -0.632612931569877410f, + 0.773982690606822900f, -0.633206755050057190f, 0.773496799498899050f, + -0.633800206031017280f, + 0.773010453362736990f, -0.634393284163645490f, 0.772523652484441330f, + -0.634985989099049460f, + 0.772036397150384520f, -0.635578320488556110f, 0.771548687647206300f, + -0.636170277983712170f, + 0.771060524261813820f, -0.636761861236284200f, 0.770571907281380810f, + -0.637353069898259130f, + 0.770082836993347900f, -0.637943903621844060f, 0.769593313685422940f, + -0.638534362059466790f, + 0.769103337645579700f, -0.639124444863775730f, 0.768612909162058380f, + -0.639714151687640450f, + 0.768122028523365420f, -0.640303482184151670f, 0.767630696018273380f, + -0.640892436006621380f, + 0.767138911935820400f, -0.641481012808583160f, 0.766646676565310380f, + -0.642069212243792540f, + 0.766153990196312920f, -0.642657033966226860f, 0.765660853118662500f, + -0.643244477630085850f, + 0.765167265622458960f, -0.643831542889791390f, 0.764673227998067140f, + -0.644418229399988380f, + 0.764178740536116670f, -0.645004536815543930f, 0.763683803527501870f, + -0.645590464791548690f, + 0.763188417263381270f, -0.646176012983316280f, 0.762692582035177980f, + -0.646761181046383920f, + 0.762196298134578900f, -0.647345968636512060f, 0.761699565853535380f, + -0.647930375409685340f, + 0.761202385484261780f, -0.648514401022112440f, 0.760704757319236920f, + -0.649098045130225950f, + 0.760206681651202420f, -0.649681307390683190f, 0.759708158773163440f, + -0.650264187460365850f, + 0.759209188978388070f, -0.650846684996380880f, 0.758709772560407390f, + -0.651428799656059820f, + 0.758209909813015280f, -0.652010531096959500f, 0.757709601030268080f, + -0.652591878976862440f, + 0.757208846506484570f, -0.653172842953776760f, 0.756707646536245670f, + -0.653753422685936060f, + 0.756206001414394540f, -0.654333617831800440f, 0.755703911436035880f, + -0.654913428050056030f, + 0.755201376896536550f, -0.655492852999615350f, 0.754698398091524500f, + -0.656071892339617600f, + 0.754194975316889170f, -0.656650545729428940f, 0.753691108868781210f, + -0.657228812828642540f, + 0.753186799043612520f, -0.657806693297078640f, 0.752682046138055340f, + -0.658384186794785050f, + 0.752176850449042810f, -0.658961292982037320f, 0.751671212273768430f, + -0.659538011519338660f, + 0.751165131909686480f, -0.660114342067420480f, 0.750658609654510700f, + -0.660690284287242300f, + 0.750151645806215070f, -0.661265837839992270f, 0.749644240663033480f, + -0.661841002387086870f, + 0.749136394523459370f, -0.662415777590171780f, 0.748628107686245440f, + -0.662990163111121470f, + 0.748119380450403600f, -0.663564158612039770f, 0.747610213115205150f, + -0.664137763755260010f, + 0.747100605980180130f, -0.664710978203344790f, 0.746590559345117310f, + -0.665283801619087180f, + 0.746080073510063780f, -0.665856233665509720f, 0.745569148775325430f, + -0.666428274005865240f, + 0.745057785441466060f, -0.666999922303637470f, 0.744545983809307370f, + -0.667571178222540310f, + 0.744033744179929290f, -0.668142041426518450f, 0.743521066854669120f, + -0.668712511579747980f, + 0.743007952135121720f, -0.669282588346636010f, 0.742494400323139180f, + -0.669852271391821020f, + 0.741980411720831070f, -0.670421560380173090f, 0.741465986630563290f, + -0.670990454976794220f, + 0.740951125354959110f, -0.671558954847018330f, 0.740435828196898020f, + -0.672127059656411730f, + 0.739920095459516200f, -0.672694769070772860f, 0.739403927446205760f, + -0.673262082756132970f, + 0.738887324460615110f, -0.673829000378756040f, 0.738370286806648620f, + -0.674395521605139050f, + 0.737852814788465980f, -0.674961646102011930f, 0.737334908710482910f, + -0.675527373536338520f, + 0.736816568877369900f, -0.676092703575315920f, 0.736297795594053170f, + -0.676657635886374950f, + 0.735778589165713590f, -0.677222170137180330f, 0.735258949897786840f, + -0.677786305995631500f, + 0.734738878095963500f, -0.678350043129861470f, 0.734218374066188280f, + -0.678913381208238410f, + 0.733697438114660370f, -0.679476319899364970f, 0.733176070547832740f, + -0.680038858872078930f, + 0.732654271672412820f, -0.680600997795453020f, 0.732132041795361290f, + -0.681162736338795430f, + 0.731609381223892630f, -0.681724074171649710f, 0.731086290265474340f, + -0.682285010963795570f, + 0.730562769227827590f, -0.682845546385248080f, 0.730038818418926260f, + -0.683405680106258680f, + 0.729514438146997010f, -0.683965411797315400f, 0.728989628720519420f, + -0.684524741129142300f, + 0.728464390448225200f, -0.685083667772700360f, 0.727938723639098620f, + -0.685642191399187470f, + 0.727412628602375770f, -0.686200311680038590f, 0.726886105647544970f, + -0.686758028286925890f, + 0.726359155084346010f, -0.687315340891759050f, 0.725831777222770370f, + -0.687872249166685550f, + 0.725303972373060770f, -0.688428752784090440f, 0.724775740845711280f, + -0.688984851416597040f, + 0.724247082951467000f, -0.689540544737066830f, 0.723717999001323500f, + -0.690095832418599950f, + 0.723188489306527460f, -0.690650714134534600f, 0.722658554178575610f, + -0.691205189558448450f, + 0.722128193929215350f, -0.691759258364157750f, 0.721597408870443770f, + -0.692312920225718220f, + 0.721066199314508110f, -0.692866174817424630f, 0.720534565573905270f, + -0.693419021813811760f, + 0.720002507961381650f, -0.693971460889654000f, 0.719470026789932990f, + -0.694523491719965520f, + 0.718937122372804490f, -0.695075113980000880f, 0.718403795023489830f, + -0.695626327345254870f, + 0.717870045055731710f, -0.696177131491462990f, 0.717335872783521730f, + -0.696727526094601200f, + 0.716801278521099540f, -0.697277510830886520f, 0.716266262582953120f, + -0.697827085376777290f, + 0.715730825283818590f, -0.698376249408972920f, 0.715194966938680120f, + -0.698925002604414150f, + 0.714658687862769090f, -0.699473344640283770f, 0.714121988371564820f, + -0.700021275194006250f, + 0.713584868780793640f, -0.700568793943248340f, 0.713047329406429340f, + -0.701115900565918660f, + 0.712509370564692320f, -0.701662594740168450f, 0.711970992572050100f, + -0.702208876144391870f, + 0.711432195745216430f, -0.702754744457225300f, 0.710892980401151680f, + -0.703300199357548730f, + 0.710353346857062420f, -0.703845240524484940f, 0.709813295430400840f, + -0.704389867637400410f, + 0.709272826438865690f, -0.704934080375904880f, 0.708731940200400650f, + -0.705477878419852100f, + 0.708190637033195400f, -0.706021261449339740f, 0.707648917255684350f, + -0.706564229144709510f, + 0.707106781186547570f, -0.707106781186547460f, 0.706564229144709620f, + -0.707648917255684350f, + 0.706021261449339740f, -0.708190637033195290f, 0.705477878419852210f, + -0.708731940200400650f, + 0.704934080375904990f, -0.709272826438865580f, 0.704389867637400410f, + -0.709813295430400840f, + 0.703845240524484940f, -0.710353346857062310f, 0.703300199357548730f, + -0.710892980401151680f, + 0.702754744457225300f, -0.711432195745216430f, 0.702208876144391870f, + -0.711970992572049990f, + 0.701662594740168570f, -0.712509370564692320f, 0.701115900565918660f, + -0.713047329406429230f, + 0.700568793943248450f, -0.713584868780793520f, 0.700021275194006360f, + -0.714121988371564710f, + 0.699473344640283770f, -0.714658687862768980f, 0.698925002604414150f, + -0.715194966938680010f, + 0.698376249408972920f, -0.715730825283818590f, 0.697827085376777290f, + -0.716266262582953120f, + 0.697277510830886630f, -0.716801278521099540f, 0.696727526094601200f, + -0.717335872783521730f, + 0.696177131491462990f, -0.717870045055731710f, 0.695626327345254870f, + -0.718403795023489720f, + 0.695075113980000880f, -0.718937122372804380f, 0.694523491719965520f, + -0.719470026789932990f, + 0.693971460889654000f, -0.720002507961381650f, 0.693419021813811880f, + -0.720534565573905270f, + 0.692866174817424740f, -0.721066199314508110f, 0.692312920225718220f, + -0.721597408870443660f, + 0.691759258364157750f, -0.722128193929215350f, 0.691205189558448450f, + -0.722658554178575610f, + 0.690650714134534720f, -0.723188489306527350f, 0.690095832418599950f, + -0.723717999001323390f, + 0.689540544737066940f, -0.724247082951466890f, 0.688984851416597150f, + -0.724775740845711280f, + 0.688428752784090550f, -0.725303972373060660f, 0.687872249166685550f, + -0.725831777222770370f, + 0.687315340891759160f, -0.726359155084346010f, 0.686758028286925890f, + -0.726886105647544970f, + 0.686200311680038700f, -0.727412628602375770f, 0.685642191399187470f, + -0.727938723639098620f, + 0.685083667772700360f, -0.728464390448225200f, 0.684524741129142300f, + -0.728989628720519310f, + 0.683965411797315510f, -0.729514438146996900f, 0.683405680106258790f, + -0.730038818418926150f, + 0.682845546385248080f, -0.730562769227827590f, 0.682285010963795570f, + -0.731086290265474230f, + 0.681724074171649820f, -0.731609381223892520f, 0.681162736338795430f, + -0.732132041795361290f, + 0.680600997795453130f, -0.732654271672412820f, 0.680038858872079040f, + -0.733176070547832740f, + 0.679476319899365080f, -0.733697438114660260f, 0.678913381208238410f, + -0.734218374066188170f, + 0.678350043129861580f, -0.734738878095963390f, 0.677786305995631500f, + -0.735258949897786730f, + 0.677222170137180450f, -0.735778589165713480f, 0.676657635886374950f, + -0.736297795594053060f, + 0.676092703575316030f, -0.736816568877369790f, 0.675527373536338630f, + -0.737334908710482790f, + 0.674961646102012040f, -0.737852814788465980f, 0.674395521605139050f, + -0.738370286806648510f, + 0.673829000378756150f, -0.738887324460615110f, 0.673262082756132970f, + -0.739403927446205760f, + 0.672694769070772970f, -0.739920095459516090f, 0.672127059656411840f, + -0.740435828196898020f, + 0.671558954847018330f, -0.740951125354959110f, 0.670990454976794220f, + -0.741465986630563290f, + 0.670421560380173090f, -0.741980411720830960f, 0.669852271391821130f, + -0.742494400323139180f, + 0.669282588346636010f, -0.743007952135121720f, 0.668712511579748090f, + -0.743521066854669120f, + 0.668142041426518560f, -0.744033744179929180f, 0.667571178222540310f, + -0.744545983809307250f, + 0.666999922303637470f, -0.745057785441465950f, 0.666428274005865350f, + -0.745569148775325430f, + 0.665856233665509720f, -0.746080073510063780f, 0.665283801619087180f, + -0.746590559345117310f, + 0.664710978203344900f, -0.747100605980180130f, 0.664137763755260010f, + -0.747610213115205150f, + 0.663564158612039880f, -0.748119380450403490f, 0.662990163111121470f, + -0.748628107686245330f, + 0.662415777590171780f, -0.749136394523459260f, 0.661841002387086870f, + -0.749644240663033480f, + 0.661265837839992270f, -0.750151645806214960f, 0.660690284287242300f, + -0.750658609654510590f, + 0.660114342067420480f, -0.751165131909686370f, 0.659538011519338770f, + -0.751671212273768430f, + 0.658961292982037320f, -0.752176850449042700f, 0.658384186794785050f, + -0.752682046138055230f, + 0.657806693297078640f, -0.753186799043612410f, 0.657228812828642650f, + -0.753691108868781210f, + 0.656650545729429050f, -0.754194975316889170f, 0.656071892339617710f, + -0.754698398091524390f, + 0.655492852999615460f, -0.755201376896536550f, 0.654913428050056150f, + -0.755703911436035880f, + 0.654333617831800550f, -0.756206001414394540f, 0.653753422685936170f, + -0.756707646536245670f, + 0.653172842953776760f, -0.757208846506484460f, 0.652591878976862550f, + -0.757709601030268080f, + 0.652010531096959500f, -0.758209909813015280f, 0.651428799656059820f, + -0.758709772560407390f, + 0.650846684996380990f, -0.759209188978387960f, 0.650264187460365960f, + -0.759708158773163440f, + 0.649681307390683190f, -0.760206681651202420f, 0.649098045130226060f, + -0.760704757319236920f, + 0.648514401022112550f, -0.761202385484261780f, 0.647930375409685460f, + -0.761699565853535270f, + 0.647345968636512060f, -0.762196298134578900f, 0.646761181046383920f, + -0.762692582035177870f, + 0.646176012983316390f, -0.763188417263381270f, 0.645590464791548800f, + -0.763683803527501870f, + 0.645004536815544040f, -0.764178740536116670f, 0.644418229399988380f, + -0.764673227998067140f, + 0.643831542889791500f, -0.765167265622458960f, 0.643244477630085850f, + -0.765660853118662390f, + 0.642657033966226860f, -0.766153990196312810f, 0.642069212243792540f, + -0.766646676565310380f, + 0.641481012808583160f, -0.767138911935820400f, 0.640892436006621380f, + -0.767630696018273270f, + 0.640303482184151670f, -0.768122028523365310f, 0.639714151687640450f, + -0.768612909162058270f, + 0.639124444863775730f, -0.769103337645579590f, 0.638534362059466790f, + -0.769593313685422940f, + 0.637943903621844170f, -0.770082836993347900f, 0.637353069898259130f, + -0.770571907281380700f, + 0.636761861236284200f, -0.771060524261813710f, 0.636170277983712170f, + -0.771548687647206300f, + 0.635578320488556230f, -0.772036397150384410f, 0.634985989099049460f, + -0.772523652484441330f, + 0.634393284163645490f, -0.773010453362736990f, 0.633800206031017280f, + -0.773496799498899050f, + 0.633206755050057190f, -0.773982690606822790f, 0.632612931569877520f, + -0.774468126400670860f, + 0.632018735939809060f, -0.774953106594873820f, 0.631424168509401860f, + -0.775437630904130430f, + 0.630829229628424470f, -0.775921699043407580f, 0.630233919646864480f, + -0.776405310727940390f, + 0.629638238914927100f, -0.776888465673232440f, 0.629042187783036000f, + -0.777371163595056200f, + 0.628445766601832710f, -0.777853404209453040f, 0.627848975722176570f, + -0.778335187232733090f, + 0.627251815495144190f, -0.778816512381475870f, 0.626654286272029460f, + -0.779297379372530300f, + 0.626056388404343520f, -0.779777787923014440f, 0.625458122243814360f, + -0.780257737750316590f, + 0.624859488142386450f, -0.780737228572094380f, 0.624260486452220650f, + -0.781216260106276090f, + 0.623661117525694640f, -0.781694832071059390f, 0.623061381715401370f, + -0.782172944184912900f, + 0.622461279374150080f, -0.782650596166575730f, 0.621860810854965360f, + -0.783127787735057310f, + 0.621259976511087660f, -0.783604518609638200f, 0.620658776695972140f, + -0.784080788509869950f, + 0.620057211763289210f, -0.784556597155575240f, 0.619455282066924020f, + -0.785031944266848080f, + 0.618852987960976320f, -0.785506829564053930f, 0.618250329799760250f, + -0.785981252767830150f, + 0.617647307937803980f, -0.786455213599085770f, 0.617043922729849760f, + -0.786928711779001700f, + 0.616440174530853650f, -0.787401747029031320f, 0.615836063695985090f, + -0.787874319070900110f, + 0.615231590580626820f, -0.788346427626606230f, 0.614626755540375050f, + -0.788818072418420170f, + 0.614021558931038490f, -0.789289253168885650f, 0.613416001108638590f, + -0.789759969600819070f, + 0.612810082429409710f, -0.790230221437310030f, 0.612203803249798060f, + -0.790700008401721610f, + 0.611597163926462020f, -0.791169330217690090f, 0.610990164816271770f, + -0.791638186609125770f, + 0.610382806276309480f, -0.792106577300212390f, 0.609775088663868430f, + -0.792574502015407580f, + 0.609167012336453210f, -0.793041960479443640f, 0.608558577651779450f, + -0.793508952417326660f, + 0.607949784967773740f, -0.793975477554337170f, 0.607340634642572930f, + -0.794441535616030590f, + 0.606731127034524480f, -0.794907126328237010f, 0.606121262502186230f, + -0.795372249417061190f, + 0.605511041404325550f, -0.795836904608883460f, 0.604900464099919930f, + -0.796301091630359110f, + 0.604289530948156070f, -0.796764810208418720f, 0.603678242308430370f, + -0.797228060070268700f, + 0.603066598540348280f, -0.797690840943391040f, 0.602454600003723860f, + -0.798153152555543750f, + 0.601842247058580030f, -0.798614994634760820f, 0.601229540065148620f, + -0.799076366909352350f, + 0.600616479383868970f, -0.799537269107905010f, 0.600003065375389060f, + -0.799997700959281910f, + 0.599389298400564540f, -0.800457662192622710f, 0.598775178820458720f, + -0.800917152537344300f, + 0.598160706996342380f, -0.801376171723140130f, 0.597545883289693270f, + -0.801834719479981310f, + 0.596930708062196500f, -0.802292795538115720f, 0.596315181675743820f, + -0.802750399628069160f, + 0.595699304492433470f, -0.803207531480644830f, 0.595083076874569960f, + -0.803664190826924090f, + 0.594466499184664540f, -0.804120377398265700f, 0.593849571785433630f, + -0.804576090926307000f, + 0.593232295039799800f, -0.805031331142963660f, 0.592614669310891130f, + -0.805486097780429120f, + 0.591996694962040990f, -0.805940390571176280f, 0.591378372356787580f, + -0.806394209247956240f, + 0.590759701858874280f, -0.806847553543799220f, 0.590140683832248940f, + -0.807300423192014450f, + 0.589521318641063940f, -0.807752817926190360f, 0.588901606649675840f, + -0.808204737480194720f, + 0.588281548222645330f, -0.808656181588174980f, 0.587661143724736770f, + -0.809107149984558130f, + 0.587040393520918080f, -0.809557642404051260f, 0.586419297976360500f, + -0.810007658581641140f, + 0.585797857456438860f, -0.810457198252594770f, 0.585176072326730410f, + -0.810906261152459670f, + 0.584553942953015330f, -0.811354847017063730f, 0.583931469701276300f, + -0.811802955582515360f, + 0.583308652937698290f, -0.812250586585203880f, 0.582685493028668460f, + -0.812697739761799490f, + 0.582061990340775550f, -0.813144414849253590f, 0.581438145240810280f, + -0.813590611584798510f, + 0.580813958095764530f, -0.814036329705948300f, 0.580189429272831680f, + -0.814481568950498610f, + 0.579564559139405740f, -0.814926329056526620f, 0.578939348063081890f, + -0.815370609762391290f, + 0.578313796411655590f, -0.815814410806733780f, 0.577687904553122800f, + -0.816257731928477390f, + 0.577061672855679550f, -0.816700572866827850f, 0.576435101687721830f, + -0.817142933361272970f, + 0.575808191417845340f, -0.817584813151583710f, 0.575180942414845190f, + -0.818026211977813440f, + 0.574553355047715760f, -0.818467129580298660f, 0.573925429685650750f, + -0.818907565699658950f, + 0.573297166698042320f, -0.819347520076796900f, 0.572668566454481160f, + -0.819786992452898990f, + 0.572039629324757050f, -0.820225982569434690f, 0.571410355678857340f, + -0.820664490168157460f, + 0.570780745886967370f, -0.821102514991104650f, 0.570150800319470300f, + -0.821540056780597610f, + 0.569520519346947250f, -0.821977115279241550f, 0.568889903340175970f, + -0.822413690229926390f, + 0.568258952670131490f, -0.822849781375826320f, 0.567627667707986230f, + -0.823285388460400110f, + 0.566996048825108680f, -0.823720511227391320f, 0.566364096393063950f, + -0.824155149420828570f, + 0.565731810783613230f, -0.824589302785025290f, 0.565099192368714090f, + -0.825022971064580220f, + 0.564466241520519500f, -0.825456154004377440f, 0.563832958611378170f, + -0.825888851349586780f, + 0.563199344013834090f, -0.826321062845663420f, 0.562565398100626560f, + -0.826752788238348520f, + 0.561931121244689470f, -0.827184027273669020f, 0.561296513819151470f, + -0.827614779697938400f, + 0.560661576197336030f, -0.828045045257755800f, 0.560026308752760380f, + -0.828474823700007130f, + 0.559390711859136140f, -0.828904114771864870f, 0.558754785890368310f, + -0.829332918220788250f, + 0.558118531220556100f, -0.829761233794523050f, 0.557481948223991660f, + -0.830189061241102370f, + 0.556845037275160100f, -0.830616400308846200f, 0.556207798748739930f, + -0.831043250746362320f, + 0.555570233019602290f, -0.831469612302545240f, 0.554932340462810370f, + -0.831895484726577590f, + 0.554294121453620110f, -0.832320867767929680f, 0.553655576367479310f, + -0.832745761176359460f, + 0.553016705580027580f, -0.833170164701913190f, 0.552377509467096070f, + -0.833594078094925140f, + 0.551737988404707450f, -0.834017501106018130f, 0.551098142769075430f, + -0.834440433486103190f, + 0.550457972936604810f, -0.834862874986380010f, 0.549817479283891020f, + -0.835284825358337370f, + 0.549176662187719770f, -0.835706284353752600f, 0.548535522025067390f, + -0.836127251724692160f, + 0.547894059173100190f, -0.836547727223511890f, 0.547252274009174090f, + -0.836967710602857020f, + 0.546610166910834860f, -0.837387201615661940f, 0.545967738255817680f, + -0.837806200015150940f, + 0.545324988422046460f, -0.838224705554837970f, 0.544681917787634530f, + -0.838642717988527300f, + 0.544038526730883930f, -0.839060237070312630f, 0.543394815630284800f, + -0.839477262554578550f, + 0.542750784864516000f, -0.839893794195999410f, 0.542106434812444030f, + -0.840309831749540770f, + 0.541461765853123560f, -0.840725374970458070f, 0.540816778365796670f, + -0.841140423614298080f, + 0.540171472729892970f, -0.841554977436898330f, 0.539525849325029010f, + -0.841969036194387680f, + 0.538879908531008420f, -0.842382599643185960f, 0.538233650727821700f, + -0.842795667540004120f, + 0.537587076295645510f, -0.843208239641845440f, 0.536940185614843020f, + -0.843620315706004040f, + 0.536292979065963180f, -0.844031895490066410f, 0.535645457029741090f, + -0.844442978751910660f, + 0.534997619887097260f, -0.844853565249707010f, 0.534349468019137520f, + -0.845263654741918220f, + 0.533701001807152960f, -0.845673246987299070f, 0.533052221632619670f, + -0.846082341744896940f, + 0.532403127877198010f, -0.846490938774052020f, 0.531753720922733320f, + -0.846899037834397350f, + 0.531104001151255000f, -0.847306638685858320f, 0.530453968944976320f, + -0.847713741088654270f, + 0.529803624686294830f, -0.848120344803297120f, 0.529152968757790720f, + -0.848526449590592650f, + 0.528502001542228480f, -0.848932055211639610f, 0.527850723422555460f, + -0.849337161427830670f, + 0.527199134781901390f, -0.849741768000852440f, 0.526547236003579330f, + -0.850145874692685210f, + 0.525895027471084740f, -0.850549481265603370f, 0.525242509568094710f, + -0.850952587482175730f, + 0.524589682678468840f, -0.851355193105265200f, 0.523936547186248600f, + -0.851757297898029120f, + 0.523283103475656430f, -0.852158901623919830f, 0.522629351931096720f, + -0.852560004046683970f, + 0.521975292937154390f, -0.852960604930363630f, 0.521320926878595550f, + -0.853360704039295430f, + 0.520666254140367270f, -0.853760301138111300f, 0.520011275107596040f, + -0.854159395991738730f, + 0.519355990165589530f, -0.854557988365400530f, 0.518700399699835170f, + -0.854956078024614820f, + 0.518044504095999340f, -0.855353664735196030f, 0.517388303739929060f, + -0.855750748263253920f, + 0.516731799017649980f, -0.856147328375194470f, 0.516074990315366630f, + -0.856543404837719960f, + 0.515417878019463150f, -0.856938977417828650f, 0.514760462516501200f, + -0.857334045882815590f, + 0.514102744193221660f, -0.857728610000272120f, 0.513444723436543570f, + -0.858122669538086020f, + 0.512786400633563070f, -0.858516224264442740f, 0.512127776171554690f, + -0.858909273947823900f, + 0.511468850437970520f, -0.859301818357008360f, 0.510809623820439040f, + -0.859693857261072610f, + 0.510150096706766700f, -0.860085390429390140f, 0.509490269484936360f, + -0.860476417631632070f, + 0.508830142543106990f, -0.860866938637767310f, 0.508169716269614710f, + -0.861256953218062060f, + 0.507508991052970870f, -0.861646461143081300f, 0.506847967281863320f, + -0.862035462183687210f, + 0.506186645345155450f, -0.862423956111040500f, 0.505525025631885510f, + -0.862811942696600330f, + 0.504863108531267480f, -0.863199421712124160f, 0.504200894432690560f, + -0.863586392929667990f, + 0.503538383725717580f, -0.863972856121586700f, 0.502875576800086880f, + -0.864358811060534030f, + 0.502212474045710900f, -0.864744257519462380f, 0.501549075852675390f, + -0.865129195271623690f, + 0.500885382611240940f, -0.865513624090568980f, 0.500221394711840680f, + -0.865897543750148820f, + 0.499557112545081890f, -0.866280954024512990f, 0.498892536501744750f, + -0.866663854688111020f, + 0.498227666972781870f, -0.867046245515692650f, 0.497562504349319090f, + -0.867428126282306920f, + 0.496897049022654640f, -0.867809496763303210f, 0.496231301384258310f, + -0.868190356734331310f, + 0.495565261825772490f, -0.868570705971340900f, 0.494898930739011310f, + -0.868950544250582380f, + 0.494232308515959730f, -0.869329871348606730f, 0.493565395548774880f, + -0.869708687042265560f, + 0.492898192229784090f, -0.870086991108711350f, 0.492230698951486080f, + -0.870464783325397670f, + 0.491562916106550060f, -0.870842063470078860f, 0.490894844087815140f, + -0.871218831320810900f, + 0.490226483288291100f, -0.871595086655951090f, 0.489557834101157550f, + -0.871970829254157700f, + 0.488888896919763230f, -0.872346058894391540f, 0.488219672137626740f, + -0.872720775355914300f, + 0.487550160148436050f, -0.873094978418290090f, 0.486880361346047400f, + -0.873468667861384880f, + 0.486210276124486530f, -0.873841843465366750f, 0.485539904877947020f, + -0.874214505010706300f, + 0.484869248000791120f, -0.874586652278176110f, 0.484198305887549140f, + -0.874958285048851540f, + 0.483527078932918740f, -0.875329403104110780f, 0.482855567531765670f, + -0.875700006225634600f, + 0.482183772079122830f, -0.876070094195406600f, 0.481511692970189920f, + -0.876439666795713610f, + 0.480839330600333900f, -0.876808723809145760f, 0.480166685365088440f, + -0.877177265018595940f, + 0.479493757660153010f, -0.877545290207261240f, 0.478820547881394050f, + -0.877912799158641730f, + 0.478147056424843120f, -0.878279791656541460f, 0.477473283686698060f, + -0.878646267485068130f, + 0.476799230063322250f, -0.879012226428633410f, 0.476124895951243630f, + -0.879377668271953180f, + 0.475450281747155870f, -0.879742592800047410f, 0.474775387847917230f, + -0.880106999798240360f, + 0.474100214650550020f, -0.880470889052160750f, 0.473424762552241530f, + -0.880834260347742040f, + 0.472749031950342900f, -0.881197113471221980f, 0.472073023242368660f, + -0.881559448209143780f, + 0.471396736825997810f, -0.881921264348354940f, 0.470720173099071710f, + -0.882282561676008600f, + 0.470043332459595620f, -0.882643339979562790f, 0.469366215305737630f, + -0.883003599046780720f, + 0.468688822035827960f, -0.883363338665731580f, 0.468011153048359830f, + -0.883722558624789660f, + 0.467333208741988530f, -0.884081258712634990f, 0.466654989515530970f, + -0.884439438718253700f, + 0.465976495767966130f, -0.884797098430937790f, 0.465297727898434650f, + -0.885154237640285110f, + 0.464618686306237820f, -0.885510856136199950f, 0.463939371390838460f, + -0.885866953708892790f, + 0.463259783551860260f, -0.886222530148880640f, 0.462579923189086810f, + -0.886577585246987040f, + 0.461899790702462840f, -0.886932118794342080f, 0.461219386492092430f, + -0.887286130582383150f, + 0.460538710958240010f, -0.887639620402853930f, 0.459857764501329650f, + -0.887992588047805560f, + 0.459176547521944150f, -0.888345033309596240f, 0.458495060420826220f, + -0.888696955980891710f, + 0.457813303598877290f, -0.889048355854664570f, 0.457131277457156980f, + -0.889399232724195520f, + 0.456448982396883860f, -0.889749586383072890f, 0.455766418819434750f, + -0.890099416625192210f, + 0.455083587126343840f, -0.890448723244757880f, 0.454400487719303750f, + -0.890797506036281490f, + 0.453717121000163930f, -0.891145764794583180f, 0.453033487370931580f, + -0.891493499314791380f, + 0.452349587233771000f, -0.891840709392342720f, 0.451665420991002540f, + -0.892187394822982480f, + 0.450980989045103810f, -0.892533555402764690f, 0.450296291798708730f, + -0.892879190928051680f, + 0.449611329654606600f, -0.893224301195515320f, 0.448926103015743260f, + -0.893568886002136020f, + 0.448240612285220000f, -0.893912945145203250f, 0.447554857866293010f, + -0.894256478422316040f, + 0.446868840162374330f, -0.894599485631382580f, 0.446182559577030120f, + -0.894941966570620750f, + 0.445496016513981740f, -0.895283921038557580f, 0.444809211377105000f, + -0.895625348834030000f, + 0.444122144570429260f, -0.895966249756185110f, 0.443434816498138430f, + -0.896306623604479660f, + 0.442747227564570130f, -0.896646470178680150f, 0.442059378174214760f, + -0.896985789278863970f, + 0.441371268731716620f, -0.897324580705418320f, 0.440682899641873020f, + -0.897662844259040750f, + 0.439994271309633260f, -0.898000579740739880f, 0.439305384140100060f, + -0.898337786951834190f, + 0.438616238538527710f, -0.898674465693953820f, 0.437926834910322860f, + -0.899010615769039070f, + 0.437237173661044200f, -0.899346236979341460f, 0.436547255196401250f, + -0.899681329127423930f, + 0.435857079922255470f, -0.900015892016160280f, 0.435166648244619370f, + -0.900349925448735600f, + 0.434475960569655710f, -0.900683429228646860f, 0.433785017303678520f, + -0.901016403159702330f, + 0.433093818853152010f, -0.901348847046022030f, 0.432402365624690140f, + -0.901680760692037730f, + 0.431710658025057370f, -0.902012143902493070f, 0.431018696461167080f, + -0.902342996482444200f, + 0.430326481340082610f, -0.902673318237258830f, 0.429634013069016500f, + -0.903003108972617040f, + 0.428941292055329550f, -0.903332368494511820f, 0.428248318706531910f, + -0.903661096609247980f, + 0.427555093430282200f, -0.903989293123443340f, 0.426861616634386490f, + -0.904316957844028320f, + 0.426167888726799620f, -0.904644090578246240f, 0.425473910115623910f, + -0.904970691133653250f, + 0.424779681209108810f, -0.905296759318118820f, 0.424085202415651670f, + -0.905622294939825160f, + 0.423390474143796100f, -0.905947297807268460f, 0.422695496802232950f, + -0.906271767729257660f, + 0.422000270799799790f, -0.906595704514915330f, 0.421304796545479700f, + -0.906919107973678030f, + 0.420609074448402510f, -0.907241977915295930f, 0.419913104917843730f, + -0.907564314149832520f, + 0.419216888363223960f, -0.907886116487666150f, 0.418520425194109700f, + -0.908207384739488700f, + 0.417823715820212380f, -0.908528118716306120f, 0.417126760651387870f, + -0.908848318229439120f, + 0.416429560097637320f, -0.909167983090522270f, 0.415732114569105420f, + -0.909487113111505430f, + 0.415034424476081630f, -0.909805708104652220f, 0.414336490228999210f, + -0.910123767882541570f, + 0.413638312238434560f, -0.910441292258067140f, 0.412939890915108020f, + -0.910758281044437570f, + 0.412241226669883000f, -0.911074734055176250f, 0.411542319913765280f, + -0.911390651104122320f, + 0.410843171057903910f, -0.911706032005429880f, 0.410143780513590350f, + -0.912020876573568230f, + 0.409444148692257590f, -0.912335184623322750f, 0.408744276005481520f, + -0.912648955969793900f, + 0.408044162864978740f, -0.912962190428398100f, 0.407343809682607970f, + -0.913274887814867760f, + 0.406643216870369140f, -0.913587047945250810f, 0.405942384840402570f, + -0.913898670635911680f, + 0.405241314004989860f, -0.914209755703530690f, 0.404540004776553110f, + -0.914520302965104450f, + 0.403838457567654130f, -0.914830312237946090f, 0.403136672790995240f, + -0.915139783339685260f, + 0.402434650859418540f, -0.915448716088267830f, 0.401732392185905010f, + -0.915757110301956720f, + 0.401029897183575790f, -0.916064965799331610f, 0.400327166265690150f, + -0.916372282399289140f, + 0.399624199845646790f, -0.916679059921042700f, 0.398920998336983020f, + -0.916985298184122890f, + 0.398217562153373620f, -0.917290997008377910f, 0.397513891708632330f, + -0.917596156213972950f, + 0.396809987416710420f, -0.917900775621390390f, 0.396105849691696320f, + -0.918204855051430900f, + 0.395401478947816300f, -0.918508394325212250f, 0.394696875599433670f, + -0.918811393264169940f, + 0.393992040061048100f, -0.919113851690057770f, 0.393286972747296570f, + -0.919415769424946960f, + 0.392581674072951530f, -0.919717146291227360f, 0.391876144452922350f, + -0.920017982111606570f, + 0.391170384302253980f, -0.920318276709110480f, 0.390464394036126650f, + -0.920618029907083860f, + 0.389758174069856410f, -0.920917241529189520f, 0.389051724818894500f, + -0.921215911399408730f, + 0.388345046698826300f, -0.921514039342041900f, 0.387638140125372680f, + -0.921811625181708120f, + 0.386931005514388690f, -0.922108668743345070f, 0.386223643281862980f, + -0.922405169852209880f, + 0.385516053843919020f, -0.922701128333878520f, 0.384808237616812930f, + -0.922996544014246250f, + 0.384100195016935040f, -0.923291416719527640f, 0.383391926460808770f, + -0.923585746276256560f, + 0.382683432365089840f, -0.923879532511286740f, 0.381974713146567220f, + -0.924172775251791200f, + 0.381265769222162490f, -0.924465474325262600f, 0.380556601008928570f, + -0.924757629559513910f, + 0.379847208924051110f, -0.925049240782677580f, 0.379137593384847430f, + -0.925340307823206200f, + 0.378427754808765620f, -0.925630830509872720f, 0.377717693613385810f, + -0.925920808671769960f, + 0.377007410216418310f, -0.926210242138311270f, 0.376296905035704790f, + -0.926499130739230510f, + 0.375586178489217330f, -0.926787474304581750f, 0.374875230995057600f, + -0.927075272664740100f, + 0.374164062971457990f, -0.927362525650401110f, 0.373452674836780410f, + -0.927649233092581180f, + 0.372741067009515810f, -0.927935394822617890f, 0.372029239908284960f, + -0.928221010672169440f, + 0.371317193951837600f, -0.928506080473215480f, 0.370604929559051670f, + -0.928790604058057020f, + 0.369892447148934270f, -0.929074581259315750f, 0.369179747140620070f, + -0.929358011909935500f, + 0.368466829953372320f, -0.929640895843181330f, 0.367753696006582090f, + -0.929923232892639560f, + 0.367040345719767240f, -0.930205022892219070f, 0.366326779512573590f, + -0.930486265676149780f, + 0.365612997804773960f, -0.930766961078983710f, 0.364899001016267380f, + -0.931047108935595170f, + 0.364184789567079840f, -0.931326709081180430f, 0.363470363877363870f, + -0.931605761351257830f, + 0.362755724367397230f, -0.931884265581668150f, 0.362040871457584350f, + -0.932162221608574320f, + 0.361325805568454340f, -0.932439629268462360f, 0.360610527120662270f, + -0.932716488398140250f, + 0.359895036534988280f, -0.932992798834738850f, 0.359179334232336560f, + -0.933268560415712050f, + 0.358463420633736540f, -0.933543772978836170f, 0.357747296160342010f, + -0.933818436362210960f, + 0.357030961233430030f, -0.934092550404258870f, 0.356314416274402360f, + -0.934366114943725900f, + 0.355597661704783960f, -0.934639129819680780f, 0.354880697946222790f, + -0.934911594871516090f, + 0.354163525420490510f, -0.935183509938947500f, 0.353446144549480870f, + -0.935454874862014620f, + 0.352728555755210730f, -0.935725689481080370f, 0.352010759459819240f, + -0.935995953636831300f, + 0.351292756085567150f, -0.936265667170278260f, 0.350574546054837570f, + -0.936534829922755500f, + 0.349856129790135030f, -0.936803441735921560f, 0.349137507714085030f, + -0.937071502451759190f, + 0.348418680249434510f, -0.937339011912574960f, 0.347699647819051490f, + -0.937605969960999990f, + 0.346980410845923680f, -0.937872376439989890f, 0.346260969753160170f, + -0.938138231192824360f, + 0.345541324963989150f, -0.938403534063108060f, 0.344821476901759290f, + -0.938668284894770170f, + 0.344101425989938980f, -0.938932483532064490f, 0.343381172652115100f, + -0.939196129819569900f, + 0.342660717311994380f, -0.939459223602189920f, 0.341940060393402300f, + -0.939721764725153340f, + 0.341219202320282410f, -0.939983753034013940f, 0.340498143516697100f, + -0.940245188374650880f, + 0.339776884406826960f, -0.940506070593268300f, 0.339055425414969640f, + -0.940766399536396070f, + 0.338333766965541290f, -0.941026175050889260f, 0.337611909483074680f, + -0.941285396983928660f, + 0.336889853392220050f, -0.941544065183020810f, 0.336167599117744690f, + -0.941802179495997650f, + 0.335445147084531660f, -0.942059739771017310f, 0.334722497717581220f, + -0.942316745856563780f, + 0.333999651442009490f, -0.942573197601446870f, 0.333276608683047980f, + -0.942829094854802710f, + 0.332553369866044220f, -0.943084437466093490f, 0.331829935416461220f, + -0.943339225285107720f, + 0.331106305759876430f, -0.943593458161960390f, 0.330382481321982950f, + -0.943847135947092690f, + 0.329658462528587550f, -0.944100258491272660f, 0.328934249805612200f, + -0.944352825645594750f, + 0.328209843579092660f, -0.944604837261480260f, 0.327485244275178060f, + -0.944856293190677210f, + 0.326760452320131790f, -0.945107193285260610f, 0.326035468140330350f, + -0.945357537397632290f, + 0.325310292162262980f, -0.945607325380521280f, 0.324584924812532150f, + -0.945856557086983910f, + 0.323859366517852960f, -0.946105232370403340f, 0.323133617705052330f, + -0.946353351084490590f, + 0.322407678801070020f, -0.946600913083283530f, 0.321681550232956640f, + -0.946847918221148000f, + 0.320955232427875210f, -0.947094366352777220f, 0.320228725813100020f, + -0.947340257333191940f, + 0.319502030816015750f, -0.947585591017741090f, 0.318775147864118480f, + -0.947830367262101010f, + 0.318048077385015060f, -0.948074585922276230f, 0.317320819806421790f, + -0.948318246854599090f, + 0.316593375556165850f, -0.948561349915730270f, 0.315865745062184070f, + -0.948803894962658380f, + 0.315137928752522440f, -0.949045881852700560f, 0.314409927055336820f, + -0.949287310443502010f, + 0.313681740398891570f, -0.949528180593036670f, 0.312953369211560200f, + -0.949768492159606680f, + 0.312224813921825050f, -0.950008245001843000f, 0.311496074958275970f, + -0.950247438978705230f, + 0.310767152749611470f, -0.950486073949481700f, 0.310038047724638000f, + -0.950724149773789610f, + 0.309308760312268780f, -0.950961666311575080f, 0.308579290941525030f, + -0.951198623423113230f, + 0.307849640041534980f, -0.951435020969008340f, 0.307119808041533100f, + -0.951670858810193860f, + 0.306389795370861080f, -0.951906136807932230f, 0.305659602458966230f, + -0.952140854823815830f, + 0.304929229735402430f, -0.952375012719765880f, 0.304198677629829270f, + -0.952608610358033240f, + 0.303467946572011370f, -0.952841647601198720f, 0.302737036991819140f, + -0.953074124312172200f, + 0.302005949319228200f, -0.953306040354193750f, 0.301274683984318000f, + -0.953537395590833280f, + 0.300543241417273400f, -0.953768189885990330f, 0.299811622048383460f, + -0.953998423103894490f, + 0.299079826308040480f, -0.954228095109105670f, 0.298347854626741570f, + -0.954457205766513490f, + 0.297615707435086310f, -0.954685754941338340f, 0.296883385163778270f, + -0.954913742499130520f, + 0.296150888243623960f, -0.955141168305770670f, 0.295418217105532070f, + -0.955368032227470240f, + 0.294685372180514330f, -0.955594334130771110f, 0.293952353899684770f, + -0.955820073882545420f, + 0.293219162694258680f, -0.956045251349996410f, 0.292485798995553830f, + -0.956269866400658140f, + 0.291752263234989370f, -0.956493918902394990f, 0.291018555844085090f, + -0.956717408723403050f, + 0.290284677254462330f, -0.956940335732208940f, 0.289550627897843140f, + -0.957162699797670100f, + 0.288816408206049480f, -0.957384500788975860f, 0.288082018611004300f, + -0.957605738575646240f, + 0.287347459544729570f, -0.957826413027532910f, 0.286612731439347790f, + -0.958046524014818600f, + 0.285877834727080730f, -0.958266071408017670f, 0.285142769840248720f, + -0.958485055077976100f, + 0.284407537211271820f, -0.958703474895871600f, 0.283672137272668550f, + -0.958921330733213060f, + 0.282936570457055390f, -0.959138622461841890f, 0.282200837197147500f, + -0.959355349953930790f, + 0.281464937925758050f, -0.959571513081984520f, 0.280728873075797190f, + -0.959787111718839900f, + 0.279992643080273380f, -0.960002145737665850f, 0.279256248372291240f, + -0.960216615011963430f, + 0.278519689385053060f, -0.960430519415565790f, 0.277782966551857800f, + -0.960643858822638470f, + 0.277046080306099950f, -0.960856633107679660f, 0.276309031081271030f, + -0.961068842145519350f, + 0.275571819310958250f, -0.961280485811320640f, 0.274834445428843940f, + -0.961491563980579000f, + 0.274096909868706330f, -0.961702076529122540f, 0.273359213064418790f, + -0.961912023333112100f, + 0.272621355449948980f, -0.962121404269041580f, 0.271883337459359890f, + -0.962330219213737400f, + 0.271145159526808070f, -0.962538468044359160f, 0.270406822086544820f, + -0.962746150638399410f, + 0.269668325572915200f, -0.962953266873683880f, 0.268929670420357310f, + -0.963159816628371360f, + 0.268190857063403180f, -0.963365799780954050f, 0.267451885936677740f, + -0.963571216210257210f, + 0.266712757474898420f, -0.963776065795439840f, 0.265973472112875530f, + -0.963980348415994110f, + 0.265234030285511900f, -0.964184063951745720f, 0.264494432427801630f, + -0.964387212282854290f, + 0.263754678974831510f, -0.964589793289812650f, 0.263014770361779060f, + -0.964791806853447900f, + 0.262274707023913590f, -0.964993252854920320f, 0.261534489396595630f, + -0.965194131175724720f, + 0.260794117915275570f, -0.965394441697689400f, 0.260053593015495130f, + -0.965594184302976830f, + 0.259312915132886350f, -0.965793358874083570f, 0.258572084703170390f, + -0.965991965293840570f, + 0.257831102162158930f, -0.966190003445412620f, 0.257089967945753230f, + -0.966387473212298790f, + 0.256348682489942910f, -0.966584374478333120f, 0.255607246230807550f, + -0.966780707127683270f, + 0.254865659604514630f, -0.966976471044852070f, 0.254123923047320620f, + -0.967171666114676640f, + 0.253382036995570270f, -0.967366292222328510f, 0.252640001885695580f, + -0.967560349253314360f, + 0.251897818154216910f, -0.967753837093475510f, 0.251155486237742030f, + -0.967946755628987800f, + 0.250413006572965280f, -0.968139104746362330f, 0.249670379596668520f, + -0.968330884332445300f, + 0.248927605745720260f, -0.968522094274417270f, 0.248184685457074780f, + -0.968712734459794780f, + 0.247441619167773440f, -0.968902804776428870f, 0.246698407314942500f, + -0.969092305112506100f, + 0.245955050335794590f, -0.969281235356548530f, 0.245211548667627680f, + -0.969469595397412950f, + 0.244467902747824210f, -0.969657385124292450f, 0.243724113013852130f, + -0.969844604426714830f, + 0.242980179903263980f, -0.970031253194543970f, 0.242236103853696070f, + -0.970217331317979160f, + 0.241491885302869300f, -0.970402838687555500f, 0.240747524688588540f, + -0.970587775194143630f, + 0.240003022448741500f, -0.970772140728950350f, 0.239258379021300120f, + -0.970955935183517970f, + 0.238513594844318500f, -0.971139158449725090f, 0.237768670355934210f, + -0.971321810419786160f, + 0.237023605994367340f, -0.971503890986251780f, 0.236278402197919620f, + -0.971685400042008540f, + 0.235533059404975460f, -0.971866337480279400f, 0.234787578054001080f, + -0.972046703194623500f, + 0.234041958583543460f, -0.972226497078936270f, 0.233296201432231560f, + -0.972405719027449770f, + 0.232550307038775330f, -0.972584368934732210f, 0.231804275841964780f, + -0.972762446695688570f, + 0.231058108280671280f, -0.972939952205560070f, 0.230311804793845530f, + -0.973116885359925130f, + 0.229565365820518870f, -0.973293246054698250f, 0.228818791799802360f, + -0.973469034186130950f, + 0.228072083170885790f, -0.973644249650811870f, 0.227325240373038830f, + -0.973818892345666100f, + 0.226578263845610110f, -0.973992962167955830f, 0.225831154028026200f, + -0.974166459015280320f, + 0.225083911359792780f, -0.974339382785575860f, 0.224336536280493690f, + -0.974511733377115720f, + 0.223589029229790020f, -0.974683510688510670f, 0.222841390647421280f, + -0.974854714618708430f, + 0.222093620973203590f, -0.975025345066994120f, 0.221345720647030810f, + -0.975195401932990370f, + 0.220597690108873650f, -0.975364885116656870f, 0.219849529798778750f, + -0.975533794518291360f, + 0.219101240156869770f, -0.975702130038528570f, 0.218352821623346430f, + -0.975869891578341030f, + 0.217604274638483670f, -0.976037079039039020f, 0.216855599642632570f, + -0.976203692322270560f, + 0.216106797076219600f, -0.976369731330021140f, 0.215357867379745550f, + -0.976535195964614470f, + 0.214608810993786920f, -0.976700086128711840f, 0.213859628358993830f, + -0.976864401725312640f, + 0.213110319916091360f, -0.977028142657754390f, 0.212360886105878580f, + -0.977191308829712280f, + 0.211611327369227610f, -0.977353900145199960f, 0.210861644147084830f, + -0.977515916508569280f, + 0.210111836880469720f, -0.977677357824509930f, 0.209361906010474190f, + -0.977838223998050430f, + 0.208611851978263460f, -0.977998514934557140f, 0.207861675225075150f, + -0.978158230539735050f, + 0.207111376192218560f, -0.978317370719627650f, 0.206360955321075680f, + -0.978475935380616830f, + 0.205610413053099320f, -0.978633924429423100f, 0.204859749829814420f, + -0.978791337773105670f, + 0.204108966092817010f, -0.978948175319062200f, 0.203358062283773370f, + -0.979104436975029250f, + 0.202607038844421110f, -0.979260122649082020f, 0.201855896216568160f, + -0.979415232249634780f, + 0.201104634842091960f, -0.979569765685440520f, 0.200353255162940420f, + -0.979723722865591170f, + 0.199601757621131050f, -0.979877103699517640f, 0.198850142658750120f, + -0.980029908096989980f, + 0.198098410717953730f, -0.980182135968117320f, 0.197346562240966000f, + -0.980333787223347960f, + 0.196594597670080220f, -0.980484861773469380f, 0.195842517447657990f, + -0.980635359529608120f, + 0.195090322016128330f, -0.980785280403230430f, 0.194338011817988600f, + -0.980934624306141640f, + 0.193585587295803750f, -0.981083391150486590f, 0.192833048892205290f, + -0.981231580848749730f, + 0.192080397049892380f, -0.981379193313754560f, 0.191327632211630990f, + -0.981526228458664660f, + 0.190574754820252800f, -0.981672686196983110f, 0.189821765318656580f, + -0.981818566442552500f, + 0.189068664149806280f, -0.981963869109555240f, 0.188315451756732120f, + -0.982108594112513610f, + 0.187562128582529740f, -0.982252741366289370f, 0.186808695070359330f, + -0.982396310786084690f, + 0.186055151663446630f, -0.982539302287441240f, 0.185301498805082040f, + -0.982681715786240860f, + 0.184547736938619640f, -0.982823551198705240f, 0.183793866507478390f, + -0.982964808441396440f, + 0.183039887955141060f, -0.983105487431216290f, 0.182285801725153320f, + -0.983245588085407070f, + 0.181531608261125130f, -0.983385110321551180f, 0.180777308006728670f, + -0.983524054057571260f, + 0.180022901405699510f, -0.983662419211730250f, 0.179268388901835880f, + -0.983800205702631490f, + 0.178513770938997590f, -0.983937413449218920f, 0.177759047961107140f, + -0.984074042370776450f, + 0.177004220412148860f, -0.984210092386929030f, 0.176249288736167940f, + -0.984345563417641900f, + 0.175494253377271400f, -0.984480455383220930f, 0.174739114779627310f, + -0.984614768204312600f, + 0.173983873387463850f, -0.984748501801904210f, 0.173228529645070490f, + -0.984881656097323700f, + 0.172473083996796030f, -0.985014231012239840f, 0.171717536887049970f, + -0.985146226468662230f, + 0.170961888760301360f, -0.985277642388941220f, 0.170206140061078120f, + -0.985408478695768420f, + 0.169450291233967930f, -0.985538735312176060f, 0.168694342723617440f, + -0.985668412161537550f, + 0.167938294974731230f, -0.985797509167567370f, 0.167182148432072880f, + -0.985926026254321130f, + 0.166425903540464220f, -0.986053963346195440f, 0.165669560744784140f, + -0.986181320367928270f, + 0.164913120489970090f, -0.986308097244598670f, 0.164156583221015890f, + -0.986434293901627070f, + 0.163399949382973230f, -0.986559910264775410f, 0.162643219420950450f, + -0.986684946260146690f, + 0.161886393780111910f, -0.986809401814185420f, 0.161129472905678780f, + -0.986933276853677710f, + 0.160372457242928400f, -0.987056571305750970f, 0.159615347237193090f, + -0.987179285097874340f, + 0.158858143333861390f, -0.987301418157858430f, 0.158100845978377090f, + -0.987422970413855410f, + 0.157343455616238280f, -0.987543941794359230f, 0.156585972692998590f, + -0.987664332228205710f, + 0.155828397654265320f, -0.987784141644572180f, 0.155070730945700510f, + -0.987903369972977790f, + 0.154312973013020240f, -0.988022017143283530f, 0.153555124301993500f, + -0.988140083085692570f, + 0.152797185258443410f, -0.988257567730749460f, 0.152039156328246160f, + -0.988374471009341280f, + 0.151281037957330250f, -0.988490792852696590f, 0.150522830591677370f, + -0.988606533192386450f, + 0.149764534677321620f, -0.988721691960323780f, 0.149006150660348470f, + -0.988836269088763540f, + 0.148247678986896200f, -0.988950264510302990f, 0.147489120103153680f, + -0.989063678157881540f, + 0.146730474455361750f, -0.989176509964781010f, 0.145971742489812370f, + -0.989288759864625170f, + 0.145212924652847520f, -0.989400427791380380f, 0.144454021390860440f, + -0.989511513679355190f, + 0.143695033150294580f, -0.989622017463200780f, 0.142935960377642700f, + -0.989731939077910570f, + 0.142176803519448000f, -0.989841278458820530f, 0.141417563022303130f, + -0.989950035541608990f, + 0.140658239332849240f, -0.990058210262297120f, 0.139898832897777380f, + -0.990165802557248400f, + 0.139139344163826280f, -0.990272812363169110f, 0.138379773577783890f, + -0.990379239617108160f, + 0.137620121586486180f, -0.990485084256456980f, 0.136860388636816430f, + -0.990590346218950150f, + 0.136100575175706200f, -0.990695025442664630f, 0.135340681650134330f, + -0.990799121866020370f, + 0.134580708507126220f, -0.990902635427780010f, 0.133820656193754690f, + -0.991005566067049370f, + 0.133060525157139180f, -0.991107913723276780f, 0.132300315844444680f, + -0.991209678336254060f, + 0.131540028702883280f, -0.991310859846115440f, 0.130779664179711790f, + -0.991411458193338540f, + 0.130019222722233350f, -0.991511473318743900f, 0.129258704777796270f, + -0.991610905163495370f, + 0.128498110793793220f, -0.991709753669099530f, 0.127737441217662280f, + -0.991808018777406430f, + 0.126976696496885980f, -0.991905700430609330f, 0.126215877078990400f, + -0.992002798571244520f, + 0.125454983411546210f, -0.992099313142191800f, 0.124694015942167770f, + -0.992195244086673920f, + 0.123932975118512200f, -0.992290591348257370f, 0.123171861388280650f, + -0.992385354870851670f, + 0.122410675199216280f, -0.992479534598709970f, 0.121649416999105540f, + -0.992573130476428810f, + 0.120888087235777220f, -0.992666142448948020f, 0.120126686357101580f, + -0.992758570461551140f, + 0.119365214810991350f, -0.992850414459865100f, 0.118603673045400840f, + -0.992941674389860470f, + 0.117842061508325020f, -0.993032350197851410f, 0.117080380647800550f, + -0.993122441830495580f, + 0.116318630911904880f, -0.993211949234794500f, 0.115556812748755290f, + -0.993300872358093280f, + 0.114794926606510250f, -0.993389211148080650f, 0.114032972933367300f, + -0.993476965552789190f, + 0.113270952177564360f, -0.993564135520595300f, 0.112508864787378830f, + -0.993650721000219120f, + 0.111746711211126660f, -0.993736721940724600f, 0.110984491897163380f, + -0.993822138291519660f, + 0.110222207293883180f, -0.993906970002356060f, 0.109459857849718030f, + -0.993991217023329380f, + 0.108697444013138670f, -0.994074879304879370f, 0.107934966232653760f, + -0.994157956797789730f, + 0.107172424956808870f, -0.994240449453187900f, 0.106409820634187840f, + -0.994322357222545810f, + 0.105647153713410700f, -0.994403680057679100f, 0.104884424643134970f, + -0.994484417910747600f, + 0.104121633872054730f, -0.994564570734255420f, 0.103358781848899700f, + -0.994644138481050710f, + 0.102595869022436280f, -0.994723121104325700f, 0.101832895841466670f, + -0.994801518557617110f, + 0.101069862754827880f, -0.994879330794805620f, 0.100306770211392820f, + -0.994956557770116380f, + 0.099543618660069444f, -0.995033199438118630f, 0.098780408549799664f, + -0.995109255753726110f, + 0.098017140329560770f, -0.995184726672196820f, 0.097253814448363354f, + -0.995259612149133390f, + 0.096490431355252607f, -0.995333912140482280f, 0.095726991499307315f, + -0.995407626602534900f, + 0.094963495329639061f, -0.995480755491926940f, 0.094199943295393190f, + -0.995553298765638470f, + 0.093436335845747912f, -0.995625256380994310f, 0.092672673429913366f, + -0.995696628295663520f, + 0.091908956497132696f, -0.995767414467659820f, 0.091145185496681130f, + -0.995837614855341610f, + 0.090381360877865011f, -0.995907229417411720f, 0.089617483090022917f, + -0.995976258112917790f, + 0.088853552582524684f, -0.996044700901251970f, 0.088089569804770507f, + -0.996112557742151130f, + 0.087325535206192226f, -0.996179828595696870f, 0.086561449236251239f, + -0.996246513422315520f, + 0.085797312344439880f, -0.996312612182778000f, 0.085033124980280414f, + -0.996378124838200210f, + 0.084268887593324127f, -0.996443051350042630f, 0.083504600633152404f, + -0.996507391680110820f, + 0.082740264549375803f, -0.996571145790554840f, 0.081975879791633108f, + -0.996634313643869900f, + 0.081211446809592386f, -0.996696895202896060f, 0.080446966052950097f, + -0.996758890430818000f, + 0.079682437971430126f, -0.996820299291165670f, 0.078917863014785095f, + -0.996881121747813850f, + 0.078153241632794315f, -0.996941357764982160f, 0.077388574275265049f, + -0.997001007307235290f, + 0.076623861392031617f, -0.997060070339482960f, 0.075859103432954503f, + -0.997118546826979980f, + 0.075094300847921291f, -0.997176436735326190f, 0.074329454086845867f, + -0.997233740030466160f, + 0.073564563599667454f, -0.997290456678690210f, 0.072799629836351618f, + -0.997346586646633230f, + 0.072034653246889416f, -0.997402129901275300f, 0.071269634281296415f, + -0.997457086409941910f, + 0.070504573389614009f, -0.997511456140303450f, 0.069739471021907376f, + -0.997565239060375750f, + 0.068974327628266732f, -0.997618435138519550f, 0.068209143658806454f, + -0.997671044343441000f, + 0.067443919563664106f, -0.997723066644191640f, 0.066678655793001543f, + -0.997774502010167820f, + 0.065913352797003930f, -0.997825350411111640f, 0.065148011025878860f, + -0.997875611817110150f, + 0.064382630929857410f, -0.997925286198596000f, 0.063617212959193190f, + -0.997974373526346990f, + 0.062851757564161420f, -0.998022873771486240f, 0.062086265195060247f, + -0.998070786905482340f, + 0.061320736302208648f, -0.998118112900149180f, 0.060555171335947781f, + -0.998164851727646240f, + 0.059789570746640007f, -0.998211003360478190f, 0.059023934984667986f, + -0.998256567771495180f, + 0.058258264500435732f, -0.998301544933892890f, 0.057492559744367684f, + -0.998345934821212370f, + 0.056726821166907783f, -0.998389737407340160f, 0.055961049218520520f, + -0.998432952666508440f, + 0.055195244349690031f, -0.998475580573294770f, 0.054429407010919147f, + -0.998517621102622210f, + 0.053663537652730679f, -0.998559074229759310f, 0.052897636725665401f, + -0.998599939930320370f, + 0.052131704680283317f, -0.998640218180265270f, 0.051365741967162731f, + -0.998679908955899090f, + 0.050599749036899337f, -0.998719012233872940f, 0.049833726340107257f, + -0.998757527991183340f, + 0.049067674327418126f, -0.998795456205172410f, 0.048301593449480172f, + -0.998832796853527990f, + 0.047535484156959261f, -0.998869549914283560f, 0.046769346900537960f, + -0.998905715365818290f, + 0.046003182130914644f, -0.998941293186856870f, 0.045236990298804750f, + -0.998976283356469820f, + 0.044470771854938744f, -0.999010685854073380f, 0.043704527250063421f, + -0.999044500659429290f, + 0.042938256934940959f, -0.999077727752645360f, 0.042171961360348002f, + -0.999110367114174890f, + 0.041405640977076712f, -0.999142418724816910f, 0.040639296235933854f, + -0.999173882565716380f, + 0.039872927587739845f, -0.999204758618363890f, 0.039106535483329839f, + -0.999235046864595850f, + 0.038340120373552791f, -0.999264747286594420f, 0.037573682709270514f, + -0.999293859866887790f, + 0.036807222941358991f, -0.999322384588349540f, 0.036040741520706299f, + -0.999350321434199440f, + 0.035274238898213947f, -0.999377670388002850f, 0.034507715524795889f, + -0.999404431433671300f, + 0.033741171851377642f, -0.999430604555461730f, 0.032974608328897315f, + -0.999456189737977340f, + 0.032208025408304704f, -0.999481186966166950f, 0.031441423540560343f, + -0.999505596225325310f, + 0.030674803176636581f, -0.999529417501093140f, 0.029908164767516655f, + -0.999552650779456990f, + 0.029141508764193740f, -0.999575296046749220f, 0.028374835617672258f, + -0.999597353289648380f, + 0.027608145778965820f, -0.999618822495178640f, 0.026841439699098527f, + -0.999639703650710200f, + 0.026074717829104040f, -0.999659996743959220f, 0.025307980620024630f, + -0.999679701762987930f, + 0.024541228522912264f, -0.999698818696204250f, 0.023774461988827676f, + -0.999717347532362190f, + 0.023007681468839410f, -0.999735288260561680f, 0.022240887414024919f, + -0.999752640870248840f, + 0.021474080275469605f, -0.999769405351215280f, 0.020707260504265912f, + -0.999785581693599210f, + 0.019940428551514598f, -0.999801169887884260f, 0.019173584868322699f, + -0.999816169924900410f, + 0.018406729905804820f, -0.999830581795823400f, 0.017639864115082195f, + -0.999844405492175240f, + 0.016872987947281773f, -0.999857641005823860f, 0.016106101853537263f, + -0.999870288328982950f, + 0.015339206284988220f, -0.999882347454212560f, 0.014572301692779104f, + -0.999893818374418490f, + 0.013805388528060349f, -0.999904701082852900f, 0.013038467241987433f, + -0.999914995573113470f, + 0.012271538285719944f, -0.999924701839144500f, 0.011504602110422875f, + -0.999933819875236000f, + 0.010737659167264572f, -0.999942349676023910f, 0.009970709907418029f, + -0.999950291236490480f, + 0.009203754782059960f, -0.999957644551963900f, 0.008436794242369860f, + -0.999964409618118280f, + 0.007669828739531077f, -0.999970586430974140f, 0.006902858724729877f, + -0.999976174986897610f, + 0.006135884649154515f, -0.999981175282601110f, 0.005368906963996303f, + -0.999985587315143200f, + 0.004601926120448672f, -0.999989411081928400f, 0.003834942569706248f, + -0.999992646580707190f, + 0.003067956762966138f, -0.999995293809576190f, 0.002300969151425887f, + -0.999997352766978210f, + 0.001533980186284766f, -0.999998823451701880f, 0.000766990318742846f, + -0.999999705862882230f +}; + +static const float32_t Weights_8192[16384] = { + 1.000000000000000000f, -0.000000000000000000f, 0.999999981616429330f, + -0.000191747597310703f, + 0.999999926465717890f, -0.000383495187571396f, 0.999999834547867670f, + -0.000575242763732066f, + 0.999999705862882230f, -0.000766990318742704f, 0.999999540410766110f, + -0.000958737845553301f, + 0.999999338191525530f, -0.001150485337113849f, 0.999999099205167830f, + -0.001342232786374338f, + 0.999998823451701880f, -0.001533980186284766f, 0.999998510931137790f, + -0.001725727529795126f, + 0.999998161643486980f, -0.001917474809855419f, 0.999997775588762350f, + -0.002109222019415644f, + 0.999997352766978210f, -0.002300969151425805f, 0.999996893178149880f, + -0.002492716198835908f, + 0.999996396822294350f, -0.002684463154595962f, 0.999995863699429940f, + -0.002876210011655979f, + 0.999995293809576190f, -0.003067956762965976f, 0.999994687152754080f, + -0.003259703401475973f, + 0.999994043728985820f, -0.003451449920135994f, 0.999993363538295150f, + -0.003643196311896068f, + 0.999992646580707190f, -0.003834942569706228f, 0.999991892856248010f, + -0.004026688686516512f, + 0.999991102364945590f, -0.004218434655276963f, 0.999990275106828920f, + -0.004410180468937631f, + 0.999989411081928400f, -0.004601926120448571f, 0.999988510290275690f, + -0.004793671602759841f, + 0.999987572731904080f, -0.004985416908821511f, 0.999986598406848000f, + -0.005177162031583651f, + 0.999985587315143200f, -0.005368906963996343f, 0.999984539456826970f, + -0.005560651699009674f, + 0.999983454831937730f, -0.005752396229573736f, 0.999982333440515350f, + -0.005944140548638633f, + 0.999981175282601110f, -0.006135884649154475f, 0.999979980358237650f, + -0.006327628524071378f, + 0.999978748667468830f, -0.006519372166339468f, 0.999977480210339940f, + -0.006711115568908879f, + 0.999976174986897610f, -0.006902858724729756f, 0.999974832997189810f, + -0.007094601626752250f, + 0.999973454241265940f, -0.007286344267926521f, 0.999972038719176730f, + -0.007478086641202744f, + 0.999970586430974140f, -0.007669828739531097f, 0.999969097376711580f, + -0.007861570555861772f, + 0.999967571556443780f, -0.008053312083144972f, 0.999966008970226920f, + -0.008245053314330906f, + 0.999964409618118280f, -0.008436794242369799f, 0.999962773500176930f, + -0.008628534860211886f, + 0.999961100616462820f, -0.008820275160807412f, 0.999959390967037450f, + -0.009012015137106633f, + 0.999957644551963900f, -0.009203754782059819f, 0.999955861371306100f, + -0.009395494088617252f, + 0.999954041425129780f, -0.009587233049729225f, 0.999952184713501780f, + -0.009778971658346044f, + 0.999950291236490480f, -0.009970709907418031f, 0.999948360994165400f, + -0.010162447789895513f, + 0.999946393986597460f, -0.010354185298728842f, 0.999944390213859060f, + -0.010545922426868378f, + 0.999942349676023910f, -0.010737659167264491f, 0.999940272373166960f, + -0.010929395512867571f, + 0.999938158305364590f, -0.011121131456628021f, 0.999936007472694620f, + -0.011312866991496258f, + 0.999933819875236000f, -0.011504602110422714f, 0.999931595513069200f, + -0.011696336806357838f, + 0.999929334386276070f, -0.011888071072252092f, 0.999927036494939640f, + -0.012079804901055957f, + 0.999924701839144500f, -0.012271538285719925f, 0.999922330418976490f, + -0.012463271219194511f, + 0.999919922234522750f, -0.012655003694430242f, 0.999917477285871770f, + -0.012846735704377662f, + 0.999914995573113470f, -0.013038467241987334f, 0.999912477096339240f, + -0.013230198300209835f, + 0.999909921855641540f, -0.013421928871995765f, 0.999907329851114300f, + -0.013613658950295740f, + 0.999904701082852900f, -0.013805388528060391f, 0.999902035550953920f, + -0.013997117598240367f, + 0.999899333255515390f, -0.014188846153786345f, 0.999896594196636680f, + -0.014380574187649006f, + 0.999893818374418490f, -0.014572301692779064f, 0.999891005788962950f, + -0.014764028662127246f, + 0.999888156440373320f, -0.014955755088644296f, 0.999885270328754520f, + -0.015147480965280987f, + 0.999882347454212560f, -0.015339206284988100f, 0.999879387816854930f, + -0.015530931040716447f, + 0.999876391416790410f, -0.015722655225416857f, 0.999873358254129260f, + -0.015914378832040183f, + 0.999870288328982950f, -0.016106101853537287f, 0.999867181641464380f, + -0.016297824282859065f, + 0.999864038191687680f, -0.016489546112956437f, 0.999860857979768540f, + -0.016681267336780332f, + 0.999857641005823860f, -0.016872987947281710f, 0.999854387269971890f, + -0.017064707937411563f, + 0.999851096772332190f, -0.017256427300120877f, 0.999847769513025900f, + -0.017448146028360693f, + 0.999844405492175240f, -0.017639864115082053f, 0.999841004709904000f, + -0.017831581553236039f, + 0.999837567166337090f, -0.018023298335773746f, 0.999834092861600960f, + -0.018215014455646290f, + 0.999830581795823400f, -0.018406729905804820f, 0.999827033969133420f, + -0.018598444679200511f, + 0.999823449381661570f, -0.018790158768784555f, 0.999819828033539420f, + -0.018981872167508178f, + 0.999816169924900410f, -0.019173584868322623f, 0.999812475055878780f, + -0.019365296864179156f, + 0.999808743426610520f, -0.019557008148029083f, 0.999804975037232870f, + -0.019748718712823729f, + 0.999801169887884260f, -0.019940428551514441f, 0.999797327978704690f, + -0.020132137657052594f, + 0.999793449309835270f, -0.020323846022389593f, 0.999789533881418780f, + -0.020515553640476875f, + 0.999785581693599210f, -0.020707260504265895f, 0.999781592746521670f, + -0.020898966606708137f, + 0.999777567040332940f, -0.021090671940755121f, 0.999773504575180990f, + -0.021282376499358387f, + 0.999769405351215280f, -0.021474080275469508f, 0.999765269368586450f, + -0.021665783262040078f, + 0.999761096627446610f, -0.021857485452021735f, 0.999756887127949080f, + -0.022049186838366135f, + 0.999752640870248840f, -0.022240887414024961f, 0.999748357854501780f, + -0.022432587171949934f, + 0.999744038080865430f, -0.022624286105092803f, 0.999739681549498660f, + -0.022815984206405345f, + 0.999735288260561680f, -0.023007681468839369f, 0.999730858214216030f, + -0.023199377885346720f, + 0.999726391410624470f, -0.023391073448879258f, 0.999721887849951310f, + -0.023582768152388894f, + 0.999717347532362190f, -0.023774461988827555f, 0.999712770458023870f, + -0.023966154951147210f, + 0.999708156627104880f, -0.024157847032299864f, 0.999703506039774650f, + -0.024349538225237534f, + 0.999698818696204250f, -0.024541228522912288f, 0.999694094596566000f, + -0.024732917918276223f, + 0.999689333741033640f, -0.024924606404281468f, 0.999684536129782140f, + -0.025116293973880186f, + 0.999679701762987930f, -0.025307980620024571f, 0.999674830640828740f, + -0.025499666335666853f, + 0.999669922763483760f, -0.025691351113759295f, 0.999664978131133310f, + -0.025883034947254198f, + 0.999659996743959220f, -0.026074717829103901f, 0.999654978602144690f, + -0.026266399752260760f, + 0.999649923705874240f, -0.026458080709677187f, 0.999644832055333610f, + -0.026649760694305618f, + 0.999639703650710200f, -0.026841439699098531f, 0.999634538492192300f, + -0.027033117717008431f, + 0.999629336579970110f, -0.027224794740987875f, 0.999624097914234570f, + -0.027416470763989436f, + 0.999618822495178640f, -0.027608145778965740f, 0.999613510322995950f, + -0.027799819778869445f, + 0.999608161397882110f, -0.027991492756653243f, 0.999602775720033530f, + -0.028183164705269874f, + 0.999597353289648380f, -0.028374835617672099f, 0.999591894106925950f, + -0.028566505486812728f, + 0.999586398172067070f, -0.028758174305644615f, 0.999580865485273700f, + -0.028949842067120635f, + 0.999575296046749220f, -0.029141508764193722f, 0.999569689856698580f, + -0.029333174389816835f, + 0.999564046915327740f, -0.029524838936942976f, 0.999558367222844300f, + -0.029716502398525191f, + 0.999552650779456990f, -0.029908164767516555f, 0.999546897585375960f, + -0.030099826036870198f, + 0.999541107640812940f, -0.030291486199539284f, 0.999535280945980540f, + -0.030483145248477009f, + 0.999529417501093140f, -0.030674803176636626f, 0.999523517306366350f, + -0.030866459976971412f, + 0.999517580362016990f, -0.031058115642434700f, 0.999511606668263440f, + -0.031249770165979861f, + 0.999505596225325310f, -0.031441423540560301f, 0.999499549033423640f, + -0.031633075759129478f, + 0.999493465092780590f, -0.031824726814640887f, 0.999487344403620080f, + -0.032016376700048060f, + 0.999481186966166950f, -0.032208025408304586f, 0.999474992780647780f, + -0.032399672932364086f, + 0.999468761847290050f, -0.032591319265180226f, 0.999462494166323160f, + -0.032782964399706724f, + 0.999456189737977340f, -0.032974608328897335f, 0.999449848562484530f, + -0.033166251045705857f, + 0.999443470640077770f, -0.033357892543086139f, 0.999437055970991530f, + -0.033549532813992068f, + 0.999430604555461730f, -0.033741171851377580f, 0.999424116393725640f, + -0.033932809648196664f, + 0.999417591486021720f, -0.034124446197403326f, 0.999411029832589780f, + -0.034316081491951651f, + 0.999404431433671300f, -0.034507715524795750f, 0.999397796289508640f, + -0.034699348288889799f, + 0.999391124400346050f, -0.034890979777188004f, 0.999384415766428560f, + -0.035082609982644619f, + 0.999377670388002850f, -0.035274238898213947f, 0.999370888265317170f, + -0.035465866516850353f, + 0.999364069398620550f, -0.035657492831508222f, 0.999357213788164000f, + -0.035849117835142018f, + 0.999350321434199440f, -0.036040741520706229f, 0.999343392336980220f, + -0.036232363881155395f, + 0.999336426496761240f, -0.036423984909444110f, 0.999329423913798420f, + -0.036615604598527030f, + 0.999322384588349540f, -0.036807222941358832f, 0.999315308520673070f, + -0.036998839930894263f, + 0.999308195711029470f, -0.037190455560088119f, 0.999301046159680070f, + -0.037382069821895229f, + 0.999293859866887790f, -0.037573682709270494f, 0.999286636832916740f, + -0.037765294215168860f, + 0.999279377058032710f, -0.037956904332545310f, 0.999272080542502610f, + -0.038148513054354891f, + 0.999264747286594420f, -0.038340120373552694f, 0.999257377290578060f, + -0.038531726283093870f, + 0.999249970554724420f, -0.038723330775933623f, 0.999242527079305830f, + -0.038914933845027193f, + 0.999235046864595850f, -0.039106535483329888f, 0.999227529910869610f, + -0.039298135683797059f, + 0.999219976218403530f, -0.039489734439384118f, 0.999212385787475290f, + -0.039681331743046527f, + 0.999204758618363890f, -0.039872927587739811f, 0.999197094711349880f, + -0.040064521966419520f, + 0.999189394066714920f, -0.040256114872041282f, 0.999181656684742350f, + -0.040447706297560782f, + 0.999173882565716380f, -0.040639296235933736f, 0.999166071709923000f, + -0.040830884680115948f, + 0.999158224117649430f, -0.041022471623063238f, 0.999150339789184110f, + -0.041214057057731519f, + 0.999142418724816910f, -0.041405640977076739f, 0.999134460924839150f, + -0.041597223374054894f, + 0.999126466389543390f, -0.041788804241622061f, 0.999118435119223490f, + -0.041980383572734356f, + 0.999110367114174890f, -0.042171961360347947f, 0.999102262374694130f, + -0.042363537597419072f, + 0.999094120901079070f, -0.042555112276904020f, 0.999085942693629270f, + -0.042746685391759132f, + 0.999077727752645360f, -0.042938256934940820f, 0.999069476078429330f, + -0.043129826899405546f, + 0.999061187671284600f, -0.043321395278109825f, 0.999052862531515930f, + -0.043512962064010237f, + 0.999044500659429290f, -0.043704527250063421f, 0.999036102055332330f, + -0.043896090829226068f, + 0.999027666719533690f, -0.044087652794454944f, 0.999019194652343460f, + -0.044279213138706849f, + 0.999010685854073380f, -0.044470771854938668f, 0.999002140325035980f, + -0.044662328936107325f, + 0.998993558065545680f, -0.044853884375169815f, 0.998984939075918010f, + -0.045045438165083197f, + 0.998976283356469820f, -0.045236990298804590f, 0.998967590907519300f, + -0.045428540769291155f, + 0.998958861729386080f, -0.045620089569500144f, 0.998950095822391250f, + -0.045811636692388844f, + 0.998941293186856870f, -0.046003182130914623f, 0.998932453823106690f, + -0.046194725878034908f, + 0.998923577731465780f, -0.046386267926707157f, 0.998914664912260440f, + -0.046577808269888943f, + 0.998905715365818290f, -0.046769346900537863f, 0.998896729092468410f, + -0.046960883811611592f, + 0.998887706092541290f, -0.047152418996067869f, 0.998878646366368690f, + -0.047343952446864478f, + 0.998869549914283560f, -0.047535484156959303f, 0.998860416736620520f, + -0.047727014119310254f, + 0.998851246833715180f, -0.047918542326875327f, 0.998842040205904840f, + -0.048110068772612591f, + 0.998832796853527990f, -0.048301593449480144f, 0.998823516776924490f, + -0.048493116350436176f, + 0.998814199976435390f, -0.048684637468438943f, 0.998804846452403420f, + -0.048876156796446760f, + 0.998795456205172410f, -0.049067674327418015f, 0.998786029235087640f, + -0.049259190054311140f, + 0.998776565542495610f, -0.049450703970084664f, 0.998767065127744380f, + -0.049642216067697156f, + 0.998757527991183340f, -0.049833726340107277f, 0.998747954133162860f, + -0.050025234780273729f, + 0.998738343554035230f, -0.050216741381155311f, 0.998728696254153720f, + -0.050408246135710856f, + 0.998719012233872940f, -0.050599749036899282f, 0.998709291493549030f, + -0.050791250077679581f, + 0.998699534033539280f, -0.050982749251010803f, 0.998689739854202620f, + -0.051174246549852080f, + 0.998679908955899090f, -0.051365741967162593f, 0.998670041338990070f, + -0.051557235495901611f, + 0.998660137003838490f, -0.051748727129028456f, 0.998650195950808280f, + -0.051940216859502536f, + 0.998640218180265270f, -0.052131704680283324f, 0.998630203692576050f, + -0.052323190584330347f, + 0.998620152488108870f, -0.052514674564603223f, 0.998610064567233340f, + -0.052706156614061632f, + 0.998599939930320370f, -0.052897636725665324f, 0.998589778577742230f, + -0.053089114892374133f, + 0.998579580509872500f, -0.053280591107147945f, 0.998569345727086110f, + -0.053472065362946727f, + 0.998559074229759310f, -0.053663537652730520f, 0.998548766018269920f, + -0.053855007969459440f, + 0.998538421092996730f, -0.054046476306093660f, 0.998528039454320230f, + -0.054237942655593452f, + 0.998517621102622210f, -0.054429407010919133f, 0.998507166038285490f, + -0.054620869365031105f, + 0.998496674261694640f, -0.054812329710889854f, 0.998486145773235360f, + -0.055003788041455920f, + 0.998475580573294770f, -0.055195244349689934f, 0.998464978662261250f, + -0.055386698628552597f, + 0.998454340040524800f, -0.055578150871004678f, 0.998443664708476340f, + -0.055769601070007030f, + 0.998432952666508440f, -0.055961049218520569f, 0.998422203915015020f, + -0.056152495309506292f, + 0.998411418454391300f, -0.056343939335925290f, 0.998400596285033640f, + -0.056535381290738700f, + 0.998389737407340160f, -0.056726821166907748f, 0.998378841821709990f, + -0.056918258957393740f, + 0.998367909528543820f, -0.057109694655158062f, 0.998356940528243420f, + -0.057301128253162158f, + 0.998345934821212370f, -0.057492559744367566f, 0.998334892407855000f, + -0.057683989121735904f, + 0.998323813288577560f, -0.057875416378228857f, 0.998312697463787260f, + -0.058066841506808194f, + 0.998301544933892890f, -0.058258264500435752f, 0.998290355699304350f, + -0.058449685352073476f, + 0.998279129760433200f, -0.058641104054683341f, 0.998267867117692110f, + -0.058832520601227435f, + 0.998256567771495180f, -0.059023934984667931f, 0.998245231722257880f, + -0.059215347197967061f, + 0.998233858970396850f, -0.059406757234087150f, 0.998222449516330550f, + -0.059598165085990591f, + 0.998211003360478190f, -0.059789570746639868f, 0.998199520503260660f, + -0.059980974208997548f, + 0.998188000945100300f, -0.060172375466026259f, 0.998176444686420530f, + -0.060363774510688743f, + 0.998164851727646240f, -0.060555171335947788f, 0.998153222069203760f, + -0.060746565934766288f, + 0.998141555711520520f, -0.060937958300107203f, 0.998129852655025630f, + -0.061129348424933588f, + 0.998118112900149180f, -0.061320736302208578f, 0.998106336447323050f, + -0.061512121924895378f, + 0.998094523296980010f, -0.061703505285957298f, 0.998082673449554590f, + -0.061894886378357716f, + 0.998070786905482340f, -0.062086265195060088f, 0.998058863665200250f, + -0.062277641729027972f, + 0.998046903729146840f, -0.062469015973224996f, 0.998034907097761770f, + -0.062660387920614874f, + 0.998022873771486240f, -0.062851757564161406f, 0.998010803750762450f, + -0.063043124896828492f, + 0.997998697036034390f, -0.063234489911580066f, 0.997986553627747020f, + -0.063425852601380228f, + 0.997974373526346990f, -0.063617212959193106f, 0.997962156732281950f, + -0.063808570977982898f, + 0.997949903246001190f, -0.063999926650713940f, 0.997937613067955250f, + -0.064191279970350637f, + 0.997925286198596000f, -0.064382630929857465f, 0.997912922638376610f, + -0.064573979522198982f, + 0.997900522387751620f, -0.064765325740339885f, 0.997888085447177110f, + -0.064956669577244872f, + 0.997875611817110150f, -0.065148011025878833f, 0.997863101498009500f, + -0.065339350079206632f, + 0.997850554490335110f, -0.065530686730193327f, 0.997837970794548280f, + -0.065722020971803990f, + 0.997825350411111640f, -0.065913352797003805f, 0.997812693340489280f, + -0.066104682198758077f, + 0.997799999583146470f, -0.066296009170032130f, 0.997787269139549960f, + -0.066487333703791451f, + 0.997774502010167820f, -0.066678655793001557f, 0.997761698195469560f, + -0.066869975430628115f, + 0.997748857695925690f, -0.067061292609636822f, 0.997735980512008620f, + -0.067252607322993499f, + 0.997723066644191640f, -0.067443919563664051f, 0.997710116092949570f, + -0.067635229324614479f, + 0.997697128858758500f, -0.067826536598810869f, 0.997684104942096030f, + -0.068017841379219388f, + 0.997671044343441000f, -0.068209143658806329f, 0.997657947063273710f, + -0.068400443430538013f, + 0.997644813102075420f, -0.068591740687380942f, 0.997631642460329320f, + -0.068783035422301630f, + 0.997618435138519550f, -0.068974327628266746f, 0.997605191137131640f, + -0.069165617298242985f, + 0.997591910456652630f, -0.069356904425197208f, 0.997578593097570800f, + -0.069548189002096306f, + 0.997565239060375750f, -0.069739471021907307f, 0.997551848345558430f, + -0.069930750477597309f, + 0.997538420953611340f, -0.070122027362133521f, 0.997524956885027960f, + -0.070313301668483250f, + 0.997511456140303450f, -0.070504573389613856f, 0.997497918719934210f, + -0.070695842518492855f, + 0.997484344624417930f, -0.070887109048087801f, 0.997470733854253670f, + -0.071078372971366405f, + 0.997457086409941910f, -0.071269634281296401f, 0.997443402291984360f, + -0.071460892970845680f, + 0.997429681500884180f, -0.071652149032982212f, 0.997415924037145960f, + -0.071843402460674027f, + 0.997402129901275300f, -0.072034653246889332f, 0.997388299093779460f, + -0.072225901384596322f, + 0.997374431615167150f, -0.072417146866763413f, 0.997360527465947940f, + -0.072608389686358993f, + 0.997346586646633230f, -0.072799629836351673f, 0.997332609157735470f, + -0.072990867309710036f, + 0.997318594999768600f, -0.073182102099402888f, 0.997304544173247990f, + -0.073373334198399032f, + 0.997290456678690210f, -0.073564563599667426f, 0.997276332516613180f, + -0.073755790296177098f, + 0.997262171687536170f, -0.073947014280897200f, 0.997247974191979860f, + -0.074138235546796979f, + 0.997233740030466280f, -0.074329454086845756f, 0.997219469203518670f, + -0.074520669894013000f, + 0.997205161711661850f, -0.074711882961268211f, 0.997190817555421940f, + -0.074903093281581082f, + 0.997176436735326190f, -0.075094300847921305f, 0.997162019251903290f, + -0.075285505653258769f, + 0.997147565105683480f, -0.075476707690563388f, 0.997133074297198110f, + -0.075667906952805231f, + 0.997118546826979980f, -0.075859103432954447f, 0.997103982695563330f, + -0.076050297123981259f, + 0.997089381903483400f, -0.076241488018856066f, 0.997074744451277310f, + -0.076432676110549283f, + 0.997060070339482960f, -0.076623861392031492f, 0.997045359568640040f, + -0.076815043856273343f, + 0.997030612139289450f, -0.077006223496245640f, 0.997015828051973310f, + -0.077197400304919200f, + 0.997001007307235290f, -0.077388574275265049f, 0.996986149905620180f, + -0.077579745400254224f, + 0.996971255847674320f, -0.077770913672857947f, 0.996956325133945280f, + -0.077962079086047492f, + 0.996941357764982160f, -0.078153241632794232f, 0.996926353741335090f, + -0.078344401306069705f, + 0.996911313063555740f, -0.078535558098845479f, 0.996896235732197210f, + -0.078726712004093299f, + 0.996881121747813850f, -0.078917863014784942f, 0.996865971110961310f, + -0.079109011123892375f, + 0.996850783822196610f, -0.079300156324387597f, 0.996835559882078170f, + -0.079491298609242769f, + 0.996820299291165670f, -0.079682437971430126f, 0.996805002050020430f, + -0.079873574403921996f, + 0.996789668159204560f, -0.080064707899690890f, 0.996774297619282050f, + -0.080255838451709319f, + 0.996758890430818000f, -0.080446966052950014f, 0.996743446594378860f, + -0.080638090696385709f, + 0.996727966110532490f, -0.080829212374989329f, 0.996712448979848010f, + -0.081020331081733857f, + 0.996696895202896060f, -0.081211446809592441f, 0.996681304780248300f, + -0.081402559551538245f, + 0.996665677712478160f, -0.081593669300544652f, 0.996650014000160070f, + -0.081784776049585076f, + 0.996634313643869900f, -0.081975879791633066f, 0.996618576644185070f, + -0.082166980519662314f, + 0.996602803001684130f, -0.082358078226646536f, 0.996586992716946950f, + -0.082549172905559673f, + 0.996571145790554840f, -0.082740264549375692f, 0.996555262223090540f, + -0.082931353151068699f, + 0.996539342015137940f, -0.083122438703612911f, 0.996523385167282450f, + -0.083313521199982685f, + 0.996507391680110820f, -0.083504600633152432f, 0.996491361554210920f, + -0.083695676996096716f, + 0.996475294790172160f, -0.083886750281790226f, 0.996459191388585410f, + -0.084077820483207694f, + 0.996443051350042630f, -0.084268887593324071f, 0.996426874675137240f, + -0.084459951605114325f, + 0.996410661364464100f, -0.084651012511553617f, 0.996394411418619290f, + -0.084842070305617134f, + 0.996378124838200210f, -0.085033124980280275f, 0.996361801623805720f, + -0.085224176528518478f, + 0.996345441776035900f, -0.085415224943307333f, 0.996329045295492380f, + -0.085606270217622529f, + 0.996312612182778000f, -0.085797312344439894f, 0.996296142438496850f, + -0.085988351316735337f, + 0.996279636063254650f, -0.086179387127484894f, 0.996263093057658140f, + -0.086370419769664752f, + 0.996246513422315520f, -0.086561449236251170f, 0.996229897157836500f, + -0.086752475520220543f, + 0.996213244264832040f, -0.086943498614549378f, 0.996196554743914220f, + -0.087134518512214307f, + 0.996179828595696980f, -0.087325535206192059f, 0.996163065820794950f, + -0.087516548689459531f, + 0.996146266419824620f, -0.087707558954993659f, 0.996129430393403740f, + -0.087898565995771588f, + 0.996112557742151130f, -0.088089569804770507f, 0.996095648466687300f, + -0.088280570374967740f, + 0.996078702567633980f, -0.088471567699340767f, 0.996061720045614000f, + -0.088662561770867149f, + 0.996044700901251970f, -0.088853552582524600f, 0.996027645135173610f, + -0.089044540127290892f, + 0.996010552748005870f, -0.089235524398144014f, 0.995993423740377360f, + -0.089426505388061961f, + 0.995976258112917790f, -0.089617483090022959f, 0.995959055866258320f, + -0.089808457497005278f, + 0.995941817001031350f, -0.089999428601987341f, 0.995924541517870800f, + -0.090190396397947695f, + 0.995907229417411720f, -0.090381360877864983f, 0.995889880700290720f, + -0.090572322034717989f, + 0.995872495367145730f, -0.090763279861485621f, 0.995855073418615790f, + -0.090954234351146926f, + 0.995837614855341610f, -0.091145185496681005f, 0.995820119677964910f, + -0.091336133291067184f, + 0.995802587887129160f, -0.091527077727284828f, 0.995785019483478750f, + -0.091718018798313455f, + 0.995767414467659820f, -0.091908956497132724f, 0.995749772840319510f, + -0.092099890816722388f, + 0.995732094602106430f, -0.092290821750062355f, 0.995714379753670610f, + -0.092481749290132600f, + 0.995696628295663520f, -0.092672673429913310f, 0.995678840228737540f, + -0.092863594162384724f, + 0.995661015553546910f, -0.093054511480527249f, 0.995643154270746900f, + -0.093245425377321375f, + 0.995625256380994310f, -0.093436335845747787f, 0.995607321884947050f, + -0.093627242878787195f, + 0.995589350783264600f, -0.093818146469420549f, 0.995571343076607770f, + -0.094009046610628838f, + 0.995553298765638470f, -0.094199943295393204f, 0.995535217851020390f, + -0.094390836516694943f, + 0.995517100333418110f, -0.094581726267515445f, 0.995498946213497770f, + -0.094772612540836243f, + 0.995480755491926940f, -0.094963495329638992f, 0.995462528169374420f, + -0.095154374626905486f, + 0.995444264246510340f, -0.095345250425617617f, 0.995425963724006160f, + -0.095536122718757471f, + 0.995407626602534900f, -0.095726991499307162f, 0.995389252882770690f, + -0.095917856760249040f, + 0.995370842565388990f, -0.096108718494565509f, 0.995352395651066810f, + -0.096299576695239128f, + 0.995333912140482280f, -0.096490431355252593f, 0.995315392034315070f, + -0.096681282467588725f, + 0.995296835333246090f, -0.096872130025230471f, 0.995278242037957670f, + -0.097062974021160917f, + 0.995259612149133390f, -0.097253814448363271f, 0.995240945667458130f, + -0.097444651299820870f, + 0.995222242593618360f, -0.097635484568517200f, 0.995203502928301510f, + -0.097826314247435861f, + 0.995184726672196930f, -0.098017140329560604f, 0.995165913825994620f, + -0.098207962807875276f, + 0.995147064390386470f, -0.098398781675363881f, 0.995128178366065490f, + -0.098589596925010584f, + 0.995109255753726110f, -0.098780408549799623f, 0.995090296554064000f, + -0.098971216542715429f, + 0.995071300767776170f, -0.099162020896742503f, 0.995052268395561050f, + -0.099352821604865540f, + 0.995033199438118630f, -0.099543618660069319f, 0.995014093896149700f, + -0.099734412055338825f, + 0.994994951770357020f, -0.099925201783659073f, 0.994975773061444140f, + -0.100115987838015310f, + 0.994956557770116380f, -0.100306770211392860f, 0.994937305897080070f, + -0.100497548896777200f, + 0.994918017443043200f, -0.100688323887153960f, 0.994898692408714870f, + -0.100879095175508860f, + 0.994879330794805620f, -0.101069862754827820f, 0.994859932602027320f, + -0.101260626618096830f, + 0.994840497831093180f, -0.101451386758302080f, 0.994821026482717860f, + -0.101642143168429830f, + 0.994801518557617110f, -0.101832895841466530f, 0.994781974056508260f, + -0.102023644770398740f, + 0.994762392980109930f, -0.102214389948213210f, 0.994742775329142010f, + -0.102405131367896720f, + 0.994723121104325700f, -0.102595869022436280f, 0.994703430306383860f, + -0.102786602904819040f, + 0.994683702936040250f, -0.102977333008032220f, 0.994663938994020390f, + -0.103168059325063230f, + 0.994644138481050710f, -0.103358781848899610f, 0.994624301397859400f, + -0.103549500572529070f, + 0.994604427745175660f, -0.103740215488939370f, 0.994584517523730340f, + -0.103930926591118510f, + 0.994564570734255420f, -0.104121633872054590f, 0.994544587377484300f, + -0.104312337324735800f, + 0.994524567454151740f, -0.104503036942150570f, 0.994504510964993700f, + -0.104693732717287390f, + 0.994484417910747600f, -0.104884424643134970f, 0.994464288292152390f, + -0.105075112712682040f, + 0.994444122109948040f, -0.105265796918917600f, 0.994423919364875950f, + -0.105456477254830710f, + 0.994403680057679100f, -0.105647153713410620f, 0.994383404189101430f, + -0.105837826287646670f, + 0.994363091759888570f, -0.106028494970528410f, 0.994342742770787270f, + -0.106219159755045480f, + 0.994322357222545810f, -0.106409820634187680f, 0.994301935115913580f, + -0.106600477600944960f, + 0.994281476451641550f, -0.106791130648307390f, 0.994260981230481790f, + -0.106981779769265230f, + 0.994240449453187900f, -0.107172424956808840f, 0.994219881120514960f, + -0.107363066203928760f, + 0.994199276233218910f, -0.107553703503615620f, 0.994178634792057590f, + -0.107744336848860280f, + 0.994157956797789730f, -0.107934966232653650f, 0.994137242251175720f, + -0.108125591647986870f, + 0.994116491152977070f, -0.108316213087851170f, 0.994095703503956930f, + -0.108506830545237920f, + 0.994074879304879370f, -0.108697444013138720f, 0.994054018556510210f, + -0.108888053484545190f, + 0.994033121259616400f, -0.109078658952449240f, 0.994012187414966220f, + -0.109269260409842780f, + 0.993991217023329380f, -0.109459857849717980f, 0.993970210085476920f, + -0.109650451265067100f, + 0.993949166602181130f, -0.109841040648882600f, 0.993928086574215830f, + -0.110031625994157000f, + 0.993906970002356060f, -0.110222207293883060f, 0.993885816887378090f, + -0.110412784541053630f, + 0.993864627230059750f, -0.110603357728661730f, 0.993843401031180180f, + -0.110793926849700560f, + 0.993822138291519660f, -0.110984491897163390f, 0.993800839011860120f, + -0.111175052864043720f, + 0.993779503192984580f, -0.111365609743335160f, 0.993758130835677430f, + -0.111556162528031480f, + 0.993736721940724600f, -0.111746711211126590f, 0.993715276508913230f, + -0.111937255785614570f, + 0.993693794541031790f, -0.112127796244489640f, 0.993672276037870010f, + -0.112318332580746170f, + 0.993650721000219120f, -0.112508864787378690f, 0.993629129428871720f, + -0.112699392857381860f, + 0.993607501324621610f, -0.112889916783750520f, 0.993585836688263950f, + -0.113080436559479620f, + 0.993564135520595300f, -0.113270952177564350f, 0.993542397822413600f, + -0.113461463630999950f, + 0.993520623594518090f, -0.113651970912781870f, 0.993498812837709360f, + -0.113842474015905710f, + 0.993476965552789190f, -0.114032972933367200f, 0.993455081740560960f, + -0.114223467658162260f, + 0.993433161401829360f, -0.114413958183286920f, 0.993411204537400060f, + -0.114604444501737420f, + 0.993389211148080650f, -0.114794926606510080f, 0.993367181234679600f, + -0.114985404490601460f, + 0.993345114798006910f, -0.115175878147008190f, 0.993323011838873950f, + -0.115366347568727140f, + 0.993300872358093280f, -0.115556812748755260f, 0.993278696356479030f, + -0.115747273680089720f, + 0.993256483834846440f, -0.115937730355727780f, 0.993234234794012290f, + -0.116128182768666930f, + 0.993211949234794500f, -0.116318630911904750f, 0.993189627158012620f, + -0.116509074778439040f, + 0.993167268564487230f, -0.116699514361267690f, 0.993144873455040430f, + -0.116889949653388780f, + 0.993122441830495580f, -0.117080380647800590f, 0.993099973691677570f, + -0.117270807337501460f, + 0.993077469039412300f, -0.117461229715489990f, 0.993054927874527320f, + -0.117651647774764860f, + 0.993032350197851410f, -0.117842061508324980f, 0.993009736010214580f, + -0.118032470909169340f, + 0.992987085312448390f, -0.118222875970297170f, 0.992964398105385610f, + -0.118413276684707790f, + 0.992941674389860470f, -0.118603673045400720f, 0.992918914166708300f, + -0.118794065045375640f, + 0.992896117436765980f, -0.118984452677632340f, 0.992873284200871730f, + -0.119174835935170880f, + 0.992850414459865100f, -0.119365214810991350f, 0.992827508214586760f, + -0.119555589298094110f, + 0.992804565465879140f, -0.119745959389479600f, 0.992781586214585570f, + -0.119936325078148470f, + 0.992758570461551140f, -0.120126686357101500f, 0.992735518207621850f, + -0.120317043219339680f, + 0.992712429453645460f, -0.120507395657864130f, 0.992689304200470750f, + -0.120697743665676110f, + 0.992666142448948020f, -0.120888087235777080f, 0.992642944199928820f, + -0.121078426361168640f, + 0.992619709454266140f, -0.121268761034852600f, 0.992596438212814290f, + -0.121459091249830840f, + 0.992573130476428810f, -0.121649416999105530f, 0.992549786245966680f, + -0.121839738275678890f, + 0.992526405522286100f, -0.122030055072553360f, 0.992502988306246950f, + -0.122220367382731540f, + 0.992479534598709970f, -0.122410675199216200f, 0.992456044400537700f, + -0.122600978515010240f, + 0.992432517712593660f, -0.122791277323116770f, 0.992408954535742850f, + -0.122981571616539050f, + 0.992385354870851670f, -0.123171861388280480f, 0.992361718718787870f, + -0.123362146631344680f, + 0.992338046080420420f, -0.123552427338735370f, 0.992314336956619640f, + -0.123742703503456510f, + 0.992290591348257370f, -0.123932975118512160f, 0.992266809256206580f, + -0.124123242176906600f, + 0.992242990681341700f, -0.124313504671644230f, 0.992219135624538450f, + -0.124503762595729660f, + 0.992195244086673920f, -0.124694015942167640f, 0.992171316068626520f, + -0.124884264703963130f, + 0.992147351571276090f, -0.125074508874121170f, 0.992123350595503720f, + -0.125264748445647060f, + 0.992099313142191800f, -0.125454983411546230f, 0.992075239212224070f, + -0.125645213764824290f, + 0.992051128806485720f, -0.125835439498487000f, 0.992026981925863360f, + -0.126025660605540320f, + 0.992002798571244520f, -0.126215877078990350f, 0.991978578743518580f, + -0.126406088911843380f, + 0.991954322443575950f, -0.126596296097105850f, 0.991930029672308480f, + -0.126786498627784410f, + 0.991905700430609330f, -0.126976696496885870f, 0.991881334719373010f, + -0.127166889697417160f, + 0.991856932539495470f, -0.127357078222385400f, 0.991832493891873780f, + -0.127547262064797970f, + 0.991808018777406430f, -0.127737441217662310f, 0.991783507196993490f, + -0.127927615673986080f, + 0.991758959151536110f, -0.128117785426777130f, 0.991734374641936810f, + -0.128307950469043420f, + 0.991709753669099530f, -0.128498110793793170f, 0.991685096233929420f, + -0.128688266394034690f, + 0.991660402337333210f, -0.128878417262776550f, 0.991635671980218740f, + -0.129068563393027410f, + 0.991610905163495370f, -0.129258704777796140f, 0.991586101888073500f, + -0.129448841410091780f, + 0.991561262154865290f, -0.129638973282923560f, 0.991536385964783880f, + -0.129829100389300930f, + 0.991511473318743900f, -0.130019222722233350f, 0.991486524217661480f, + -0.130209340274730630f, + 0.991461538662453790f, -0.130399453039802690f, 0.991436516654039420f, + -0.130589561010459650f, + 0.991411458193338540f, -0.130779664179711710f, 0.991386363281272280f, + -0.130969762540569380f, + 0.991361231918763460f, -0.131159856086043270f, 0.991336064106736140f, + -0.131349944809144190f, + 0.991310859846115440f, -0.131540028702883120f, 0.991285619137828200f, + -0.131730107760271160f, + 0.991260341982802440f, -0.131920181974319790f, 0.991235028381967420f, + -0.132110251338040360f, + 0.991209678336254060f, -0.132300315844444650f, 0.991184291846594180f, + -0.132490375486544550f, + 0.991158868913921350f, -0.132680430257352070f, 0.991133409539170170f, + -0.132870480149879430f, + 0.991107913723276890f, -0.133060525157139060f, 0.991082381467178640f, + -0.133250565272143570f, + 0.991056812771814340f, -0.133440600487905680f, 0.991031207638124130f, + -0.133630630797438340f, + 0.991005566067049370f, -0.133820656193754720f, 0.990979888059532740f, + -0.134010676669868130f, + 0.990954173616518500f, -0.134200692218792020f, 0.990928422738951990f, + -0.134390702833540070f, + 0.990902635427780010f, -0.134580708507126170f, 0.990876811683950700f, + -0.134770709232564350f, + 0.990850951508413620f, -0.134960705002868750f, 0.990825054902119470f, + -0.135150695811053850f, + 0.990799121866020370f, -0.135340681650134210f, 0.990773152401069780f, + -0.135530662513124590f, + 0.990747146508222710f, -0.135720638393039910f, 0.990721104188435180f, + -0.135910609282895330f, + 0.990695025442664630f, -0.136100575175706200f, 0.990668910271870100f, + -0.136290536064487960f, + 0.990642758677011570f, -0.136480491942256280f, 0.990616570659050620f, + -0.136670442802027090f, + 0.990590346218950150f, -0.136860388636816380f, 0.990564085357674370f, + -0.137050329439640410f, + 0.990537788076188750f, -0.137240265203515590f, 0.990511454375460290f, + -0.137430195921458550f, + 0.990485084256457090f, -0.137620121586486040f, 0.990458677720148620f, + -0.137810042191615080f, + 0.990432234767505970f, -0.137999957729862790f, 0.990405755399501260f, + -0.138189868194246560f, + 0.990379239617108160f, -0.138379773577783890f, 0.990352687421301450f, + -0.138569673873492500f, + 0.990326098813057330f, -0.138759569074390350f, 0.990299473793353590f, + -0.138949459173495490f, + 0.990272812363169110f, -0.139139344163826200f, 0.990246114523483990f, + -0.139329224038400980f, + 0.990219380275280000f, -0.139519098790238490f, 0.990192609619540030f, + -0.139708968412357550f, + 0.990165802557248400f, -0.139898832897777210f, 0.990138959089390650f, + -0.140088692239516670f, + 0.990112079216953770f, -0.140278546430595420f, 0.990085162940925970f, + -0.140468395464033000f, + 0.990058210262297120f, -0.140658239332849210f, 0.990031221182058000f, + -0.140848078030064080f, + 0.990004195701200910f, -0.141037911548697710f, 0.989977133820719610f, + -0.141227739881770510f, + 0.989950035541608990f, -0.141417563022303020f, 0.989922900864865450f, + -0.141607380963316020f, + 0.989895729791486660f, -0.141797193697830390f, 0.989868522322471580f, + -0.141987001218867290f, + 0.989841278458820530f, -0.142176803519448030f, 0.989813998201535260f, + -0.142366600592594180f, + 0.989786681551618640f, -0.142556392431327340f, 0.989759328510075200f, + -0.142746179028669460f, + 0.989731939077910570f, -0.142935960377642670f, 0.989704513256131850f, + -0.143125736471269190f, + 0.989677051045747210f, -0.143315507302571500f, 0.989649552447766530f, + -0.143505272864572290f, + 0.989622017463200890f, -0.143695033150294470f, 0.989594446093062460f, + -0.143884788152760980f, + 0.989566838338365120f, -0.144074537864995160f, 0.989539194200123930f, + -0.144264282280020440f, + 0.989511513679355190f, -0.144454021390860470f, 0.989483796777076760f, + -0.144643755190539040f, + 0.989456043494307710f, -0.144833483672080210f, 0.989428253832068230f, + -0.145023206828508220f, + 0.989400427791380380f, -0.145212924652847460f, 0.989372565373267010f, + -0.145402637138122570f, + 0.989344666578752640f, -0.145592344277358340f, 0.989316731408863000f, + -0.145782046063579860f, + 0.989288759864625170f, -0.145971742489812210f, 0.989260751947067640f, + -0.146161433549080900f, + 0.989232707657220050f, -0.146351119234411460f, 0.989204626996113780f, + -0.146540799538829760f, + 0.989176509964781010f, -0.146730474455361750f, 0.989148356564255590f, + -0.146920143977033620f, + 0.989120166795572690f, -0.147109808096871820f, 0.989091940659768800f, + -0.147299466807902850f, + 0.989063678157881540f, -0.147489120103153570f, 0.989035379290950310f, + -0.147678767975650970f, + 0.989007044060015270f, -0.147868410418422220f, 0.988978672466118480f, + -0.148058047424494720f, + 0.988950264510302990f, -0.148247678986896030f, 0.988921820193613190f, + -0.148437305098653970f, + 0.988893339517095130f, -0.148626925752796540f, 0.988864822481795640f, + -0.148816540942351920f, + 0.988836269088763540f, -0.149006150660348450f, 0.988807679339048450f, + -0.149195754899814820f, + 0.988779053233701520f, -0.149385353653779720f, 0.988750390773775360f, + -0.149574946915272230f, + 0.988721691960323780f, -0.149764534677321510f, 0.988692956794401940f, + -0.149954116932956960f, + 0.988664185277066230f, -0.150143693675208190f, 0.988635377409374790f, + -0.150333264897105000f, + 0.988606533192386450f, -0.150522830591677400f, 0.988577652627162020f, + -0.150712390751955610f, + 0.988548735714763200f, -0.150901945370970040f, 0.988519782456253270f, + -0.151091494441751300f, + 0.988490792852696590f, -0.151281037957330220f, 0.988461766905159300f, + -0.151470575910737810f, + 0.988432704614708340f, -0.151660108295005310f, 0.988403605982412390f, + -0.151849635103164180f, + 0.988374471009341280f, -0.152039156328246050f, 0.988345299696566150f, + -0.152228671963282740f, + 0.988316092045159690f, -0.152418182001306330f, 0.988286848056195820f, + -0.152607686435349050f, + 0.988257567730749460f, -0.152797185258443440f, 0.988228251069897420f, + -0.152986678463622040f, + 0.988198898074717610f, -0.153176166043917840f, 0.988169508746289060f, + -0.153365647992363880f, + 0.988140083085692570f, -0.153555124301993450f, 0.988110621094009820f, + -0.153744594965840030f, + 0.988081122772324070f, -0.153934059976937350f, 0.988051588121720110f, + -0.154123519328319360f, + 0.988022017143283530f, -0.154312973013020100f, 0.987992409838101880f, + -0.154502421024073940f, + 0.987962766207263420f, -0.154691863354515430f, 0.987933086251858380f, + -0.154881299997379320f, + 0.987903369972977790f, -0.155070730945700510f, 0.987873617371714200f, + -0.155260156192514240f, + 0.987843828449161740f, -0.155449575730855850f, 0.987814003206415550f, + -0.155638989553760900f, + 0.987784141644572180f, -0.155828397654265230f, 0.987754243764729530f, + -0.156017800025404800f, + 0.987724309567986960f, -0.156207196660215900f, 0.987694339055445130f, + -0.156396587551734880f, + 0.987664332228205710f, -0.156585972692998430f, 0.987634289087372160f, + -0.156775352077043350f, + 0.987604209634049160f, -0.156964725696906780f, 0.987574093869342360f, + -0.157154093545625900f, + 0.987543941794359230f, -0.157343455616238250f, 0.987513753410208420f, + -0.157532811901781530f, + 0.987483528717999710f, -0.157722162395293630f, 0.987453267718844560f, + -0.157911507089812660f, + 0.987422970413855410f, -0.158100845978376980f, 0.987392636804146240f, + -0.158290179054025180f, + 0.987362266890832400f, -0.158479506309795960f, 0.987331860675030430f, + -0.158668827738728310f, + 0.987301418157858430f, -0.158858143333861450f, 0.987270939340435420f, + -0.159047453088234760f, + 0.987240424223882250f, -0.159236756994887850f, 0.987209872809320820f, + -0.159426055046860580f, + 0.987179285097874340f, -0.159615347237193060f, 0.987148661090667570f, + -0.159804633558925440f, + 0.987118000788826280f, -0.159993914005098270f, 0.987087304193477900f, + -0.160183188568752220f, + 0.987056571305750970f, -0.160372457242928280f, 0.987025802126775600f, + -0.160561720020667490f, + 0.986994996657682980f, -0.160750976895011220f, 0.986964154899605650f, + -0.160940227859001080f, + 0.986933276853677710f, -0.161129472905678810f, 0.986902362521034470f, + -0.161318712028086400f, + 0.986871411902812470f, -0.161507945219266120f, 0.986840425000149680f, + -0.161697172472260400f, + 0.986809401814185530f, -0.161886393780111830f, 0.986778342346060430f, + -0.162075609135863330f, + 0.986747246596916590f, -0.162264818532558000f, 0.986716114567897100f, + -0.162454021963239190f, + 0.986684946260146690f, -0.162643219420950310f, 0.986653741674811350f, + -0.162832410898735210f, + 0.986622500813038480f, -0.163021596389637840f, 0.986591223675976400f, + -0.163210775886702380f, + 0.986559910264775410f, -0.163399949382973230f, 0.986528560580586690f, + -0.163589116871495020f, + 0.986497174624562880f, -0.163778278345312670f, 0.986465752397857940f, + -0.163967433797471170f, + 0.986434293901627180f, -0.164156583221015810f, 0.986402799137027220f, + -0.164345726608992190f, + 0.986371268105216030f, -0.164534863954446000f, 0.986339700807353000f, + -0.164723995250423170f, + 0.986308097244598670f, -0.164913120489969890f, 0.986276457418115090f, + -0.165102239666132660f, + 0.986244781329065460f, -0.165291352771958000f, 0.986213068978614490f, + -0.165480459800492780f, + 0.986181320367928270f, -0.165669560744784120f, 0.986149535498173860f, + -0.165858655597879300f, + 0.986117714370520090f, -0.166047744352825790f, 0.986085856986136820f, + -0.166236827002671420f, + 0.986053963346195440f, -0.166425903540464100f, 0.986022033451868560f, + -0.166614973959252090f, + 0.985990067304330140f, -0.166804038252083730f, 0.985958064904755460f, + -0.166993096412007710f, + 0.985926026254321130f, -0.167182148432072940f, 0.985893951354205210f, + -0.167371194305328430f, + 0.985861840205586980f, -0.167560234024823560f, 0.985829692809647050f, + -0.167749267583607890f, + 0.985797509167567480f, -0.167938294974731170f, 0.985765289280531310f, + -0.168127316191243410f, + 0.985733033149723490f, -0.168316331226194830f, 0.985700740776329850f, + -0.168505340072635900f, + 0.985668412161537550f, -0.168694342723617330f, 0.985636047306535420f, + -0.168883339172189980f, + 0.985603646212513400f, -0.169072329411405010f, 0.985571208880662740f, + -0.169261313434313830f, + 0.985538735312176060f, -0.169450291233967960f, 0.985506225508247290f, + -0.169639262803419290f, + 0.985473679470071810f, -0.169828228135719850f, 0.985441097198846210f, + -0.170017187223921950f, + 0.985408478695768420f, -0.170206140061078070f, 0.985375823962037710f, + -0.170395086640240940f, + 0.985343132998854790f, -0.170584026954463590f, 0.985310405807421570f, + -0.170772960996799230f, + 0.985277642388941220f, -0.170961888760301220f, 0.985244842744618540f, + -0.171150810238023280f, + 0.985212006875659350f, -0.171339725423019310f, 0.985179134783271130f, + -0.171528634308343420f, + 0.985146226468662230f, -0.171717536887049970f, 0.985113281933042710f, + -0.171906433152193530f, + 0.985080301177623800f, -0.172095323096829010f, 0.985047284203618200f, + -0.172284206714011370f, + 0.985014231012239840f, -0.172473083996795950f, 0.984981141604703960f, + -0.172661954938238270f, + 0.984948015982227030f, -0.172850819531394080f, 0.984914854146027200f, + -0.173039677769319360f, + 0.984881656097323700f, -0.173228529645070320f, 0.984848421837337010f, + -0.173417375151703470f, + 0.984815151367289140f, -0.173606214282275410f, 0.984781844688403350f, + -0.173795047029843160f, + 0.984748501801904210f, -0.173983873387463820f, 0.984715122709017620f, + -0.174172693348194820f, + 0.984681707410970940f, -0.174361506905093750f, 0.984648255908992630f, + -0.174550314051218510f, + 0.984614768204312600f, -0.174739114779627200f, 0.984581244298162180f, + -0.174927909083378160f, + 0.984547684191773960f, -0.175116696955529920f, 0.984514087886381840f, + -0.175305478389141320f, + 0.984480455383220930f, -0.175494253377271430f, 0.984446786683527920f, + -0.175683021912979490f, + 0.984413081788540700f, -0.175871783989325040f, 0.984379340699498510f, + -0.176060539599367820f, + 0.984345563417641900f, -0.176249288736167880f, 0.984311749944212780f, + -0.176438031392785410f, + 0.984277900280454370f, -0.176626767562280880f, 0.984244014427611110f, + -0.176815497237715000f, + 0.984210092386929030f, -0.177004220412148750f, 0.984176134159655320f, + -0.177192937078643280f, + 0.984142139747038570f, -0.177381647230260040f, 0.984108109150328540f, + -0.177570350860060710f, + 0.984074042370776450f, -0.177759047961107170f, 0.984039939409634970f, + -0.177947738526461560f, + 0.984005800268157870f, -0.178136422549186300f, 0.983971624947600270f, + -0.178325100022344000f, + 0.983937413449218920f, -0.178513770938997510f, 0.983903165774271500f, + -0.178702435292209970f, + 0.983868881924017220f, -0.178891093075044720f, 0.983834561899716630f, + -0.179079744280565390f, + 0.983800205702631600f, -0.179268388901835750f, 0.983765813334025240f, + -0.179457026931919890f, + 0.983731384795162090f, -0.179645658363882160f, 0.983696920087308140f, + -0.179834283190787090f, + 0.983662419211730250f, -0.180022901405699510f, 0.983627882169697210f, + -0.180211513001684450f, + 0.983593308962478650f, -0.180400117971807240f, 0.983558699591345900f, + -0.180588716309133340f, + 0.983524054057571260f, -0.180777308006728590f, 0.983489372362428730f, + -0.180965893057658980f, + 0.983454654507193270f, -0.181154471454990810f, 0.983419900493141540f, + -0.181343043191790540f, + 0.983385110321551180f, -0.181531608261124970f, 0.983350283993701500f, + -0.181720166656061110f, + 0.983315421510872810f, -0.181908718369666160f, 0.983280522874346970f, + -0.182097263395007650f, + 0.983245588085407070f, -0.182285801725153300f, 0.983210617145337640f, + -0.182474333353171120f, + 0.983175610055424420f, -0.182662858272129270f, 0.983140566816954500f, + -0.182851376475096330f, + 0.983105487431216290f, -0.183039887955140950f, 0.983070371899499640f, + -0.183228392705332140f, + 0.983035220223095640f, -0.183416890718739100f, 0.983000032403296590f, + -0.183605381988431270f, + 0.982964808441396440f, -0.183793866507478450f, 0.982929548338690170f, + -0.183982344268950520f, + 0.982894252096474070f, -0.184170815265917720f, 0.982858919716046110f, + -0.184359279491450510f, + 0.982823551198705240f, -0.184547736938619620f, 0.982788146545751970f, + -0.184736187600495950f, + 0.982752705758487830f, -0.184924631470150790f, 0.982717228838215990f, + -0.185113068540655540f, + 0.982681715786240860f, -0.185301498805081900f, 0.982646166603868050f, + -0.185489922256501880f, + 0.982610581292404750f, -0.185678338887987630f, 0.982574959853159240f, + -0.185866748692611660f, + 0.982539302287441240f, -0.186055151663446630f, 0.982503608596561830f, + -0.186243547793565560f, + 0.982467878781833170f, -0.186431937076041610f, 0.982432112844569110f, + -0.186620319503948280f, + 0.982396310786084690f, -0.186808695070359270f, 0.982360472607696210f, + -0.186997063768348540f, + 0.982324598310721280f, -0.187185425590990330f, 0.982288687896478830f, + -0.187373780531359110f, + 0.982252741366289370f, -0.187562128582529600f, 0.982216758721474510f, + -0.187750469737576780f, + 0.982180739963357090f, -0.187938803989575910f, 0.982144685093261580f, + -0.188127131331602420f, + 0.982108594112513610f, -0.188315451756732120f, 0.982072467022440000f, + -0.188503765258040940f, + 0.982036303824369020f, -0.188692071828605230f, 0.982000104519630490f, + -0.188880371461501380f, + 0.981963869109555240f, -0.189068664149806190f, 0.981927597595475540f, + -0.189256949886596750f, + 0.981891289978725100f, -0.189445228664950230f, 0.981854946260638630f, + -0.189633500477944190f, + 0.981818566442552500f, -0.189821765318656410f, 0.981782150525804310f, + -0.190010023180164990f, + 0.981745698511732990f, -0.190198274055548150f, 0.981709210401678800f, + -0.190386517937884470f, + 0.981672686196983110f, -0.190574754820252740f, 0.981636125898989080f, + -0.190762984695732110f, + 0.981599529509040720f, -0.190951207557401800f, 0.981562897028483650f, + -0.191139423398341450f, + 0.981526228458664770f, -0.191327632211630900f, 0.981489523800932130f, + -0.191515833990350210f, + 0.981452783056635520f, -0.191704028727579800f, 0.981416006227125550f, + -0.191892216416400220f, + 0.981379193313754560f, -0.192080397049892440f, 0.981342344317876040f, + -0.192268570621137500f, + 0.981305459240844670f, -0.192456737123216840f, 0.981268538084016710f, + -0.192644896549212100f, + 0.981231580848749730f, -0.192833048892205230f, 0.981194587536402320f, + -0.193021194145278380f, + 0.981157558148334830f, -0.193209332301513960f, 0.981120492685908730f, + -0.193397463353994740f, + 0.981083391150486710f, -0.193585587295803610f, 0.981046253543432780f, + -0.193773704120023820f, + 0.981009079866112630f, -0.193961813819738840f, 0.980971870119892840f, + -0.194149916388032450f, + 0.980934624306141640f, -0.194338011817988600f, 0.980897342426228390f, + -0.194526100102691610f, + 0.980860024481523870f, -0.194714181235225960f, 0.980822670473400100f, + -0.194902255208676520f, + 0.980785280403230430f, -0.195090322016128250f, 0.980747854272389750f, + -0.195278381650666550f, + 0.980710392082253970f, -0.195466434105376980f, 0.980672893834200530f, + -0.195654479373345370f, + 0.980635359529608120f, -0.195842517447657850f, 0.980597789169856850f, + -0.196030548321400790f, + 0.980560182756327840f, -0.196218571987660880f, 0.980522540290404090f, + -0.196406588439524970f, + 0.980484861773469380f, -0.196594597670080220f, 0.980447147206909060f, + -0.196782599672414100f, + 0.980409396592109910f, -0.196970594439614340f, 0.980371609930459800f, + -0.197158581964768880f, + 0.980333787223347960f, -0.197346562240965920f, 0.980295928472165290f, + -0.197534535261294030f, + 0.980258033678303550f, -0.197722501018841920f, 0.980220102843156080f, + -0.197910459506698670f, + 0.980182135968117430f, -0.198098410717953560f, 0.980144133054583590f, + -0.198286354645696220f, + 0.980106094103951770f, -0.198474291283016390f, 0.980068019117620650f, + -0.198662220623004200f, + 0.980029908096990090f, -0.198850142658750090f, 0.979991761043461200f, + -0.199038057383344680f, + 0.979953577958436740f, -0.199225964789878830f, 0.979915358843320480f, + -0.199413864871443770f, + 0.979877103699517640f, -0.199601757621130970f, 0.979838812528434740f, + -0.199789643032032090f, + 0.979800485331479790f, -0.199977521097239150f, 0.979762122110061750f, + -0.200165391809844440f, + 0.979723722865591170f, -0.200353255162940450f, 0.979685287599479930f, + -0.200541111149619980f, + 0.979646816313141210f, -0.200728959762976140f, 0.979608309007989450f, + -0.200916800996102230f, + 0.979569765685440520f, -0.201104634842091900f, 0.979531186346911500f, + -0.201292461294039020f, + 0.979492570993820810f, -0.201480280345037730f, 0.979453919627588210f, + -0.201668091988182530f, + 0.979415232249634780f, -0.201855896216568050f, 0.979376508861383170f, + -0.202043693023289260f, + 0.979337749464256780f, -0.202231482401441450f, 0.979298954059681040f, + -0.202419264344120160f, + 0.979260122649082020f, -0.202607038844421130f, 0.979221255233887700f, + -0.202794805895440440f, + 0.979182351815526930f, -0.202982565490274440f, 0.979143412395430230f, + -0.203170317622019790f, + 0.979104436975029250f, -0.203358062283773320f, 0.979065425555756930f, + -0.203545799468632190f, + 0.979026378139047580f, -0.203733529169693920f, 0.978987294726337050f, + -0.203921251380056120f, + 0.978948175319062200f, -0.204108966092816870f, 0.978909019918661310f, + -0.204296673301074370f, + 0.978869828526574120f, -0.204484372997927240f, 0.978830601144241470f, + -0.204672065176474210f, + 0.978791337773105670f, -0.204859749829814420f, 0.978752038414610340f, + -0.205047426951047250f, + 0.978712703070200420f, -0.205235096533272350f, 0.978673331741322210f, + -0.205422758569589610f, + 0.978633924429423210f, -0.205610413053099240f, 0.978594481135952270f, + -0.205798059976901790f, + 0.978555001862359550f, -0.205985699334097910f, 0.978515486610096910f, + -0.206173331117788710f, + 0.978475935380616830f, -0.206360955321075510f, 0.978436348175373730f, + -0.206548571937059890f, + 0.978396724995823090f, -0.206736180958843690f, 0.978357065843421640f, + -0.206923782379529100f, + 0.978317370719627650f, -0.207111376192218560f, 0.978277639625900530f, + -0.207298962390014750f, + 0.978237872563701090f, -0.207486540966020650f, 0.978198069534491400f, + -0.207674111913339570f, + 0.978158230539735050f, -0.207861675225075070f, 0.978118355580896660f, + -0.208049230894330940f, + 0.978078444659442380f, -0.208236778914211330f, 0.978038497776839600f, + -0.208424319277820600f, + 0.977998514934557140f, -0.208611851978263490f, 0.977958496134064830f, + -0.208799377008644900f, + 0.977918441376834370f, -0.208986894362070070f, 0.977878350664338150f, + -0.209174404031644580f, + 0.977838223998050430f, -0.209361906010474160f, 0.977798061379446360f, + -0.209549400291664940f, + 0.977757862810002760f, -0.209736886868323290f, 0.977717628291197460f, + -0.209924365733555880f, + 0.977677357824509930f, -0.210111836880469610f, 0.977637051411420770f, + -0.210299300302171730f, + 0.977596709053411890f, -0.210486755991769720f, 0.977556330751966460f, + -0.210674203942371440f, + 0.977515916508569280f, -0.210861644147084860f, 0.977475466324706170f, + -0.211049076599018390f, + 0.977434980201864260f, -0.211236501291280710f, 0.977394458141532250f, + -0.211423918216980670f, + 0.977353900145199960f, -0.211611327369227550f, 0.977313306214358750f, + -0.211798728741130840f, + 0.977272676350500860f, -0.211986122325800330f, 0.977232010555120320f, + -0.212173508116346080f, + 0.977191308829712280f, -0.212360886105878420f, 0.977150571175773200f, + -0.212548256287508060f, + 0.977109797594800880f, -0.212735618654345930f, 0.977068988088294450f, + -0.212922973199503180f, + 0.977028142657754390f, -0.213110319916091360f, 0.976987261304682390f, + -0.213297658797222320f, + 0.976946344030581670f, -0.213484989836008050f, 0.976905390836956490f, + -0.213672313025560970f, + 0.976864401725312640f, -0.213859628358993750f, 0.976823376697157240f, + -0.214046935829419360f, + 0.976782315753998650f, -0.214234235429950990f, 0.976741218897346550f, + -0.214421527153702160f, + 0.976700086128711840f, -0.214608810993786760f, 0.976658917449606980f, + -0.214796086943318860f, + 0.976617712861545640f, -0.214983354995412820f, 0.976576472366042610f, + -0.215170615143183390f, + 0.976535195964614470f, -0.215357867379745550f, 0.976493883658778650f, + -0.215545111698214500f, + 0.976452535450054060f, -0.215732348091705880f, 0.976411151339961040f, + -0.215919576553335490f, + 0.976369731330021140f, -0.216106797076219520f, 0.976328275421757260f, + -0.216294009653474340f, + 0.976286783616693630f, -0.216481214278216730f, 0.976245255916355800f, + -0.216668410943563730f, + 0.976203692322270560f, -0.216855599642632620f, 0.976162092835966110f, + -0.217042780368540990f, + 0.976120457458971910f, -0.217229953114406790f, 0.976078786192818850f, + -0.217417117873348190f, + 0.976037079039039020f, -0.217604274638483640f, 0.975995335999165990f, + -0.217791423402931950f, + 0.975953557074734300f, -0.217978564159812200f, 0.975911742267280170f, + -0.218165696902243800f, + 0.975869891578341030f, -0.218352821623346320f, 0.975828005009455660f, + -0.218539938316239770f, + 0.975786082562163930f, -0.218727046974044440f, 0.975744124238007270f, + -0.218914147589880840f, + 0.975702130038528570f, -0.219101240156869800f, 0.975660099965271590f, + -0.219288324668132470f, + 0.975618034019781750f, -0.219475401116790310f, 0.975575932203605720f, + -0.219662469495965050f, + 0.975533794518291360f, -0.219849529798778700f, 0.975491620965388110f, + -0.220036582018353580f, + 0.975449411546446380f, -0.220223626147812380f, 0.975407166263018270f, + -0.220410662180277940f, + 0.975364885116656980f, -0.220597690108873510f, 0.975322568108916930f, + -0.220784709926722610f, + 0.975280215241354220f, -0.220971721626949110f, 0.975237826515525820f, + -0.221158725202677010f, + 0.975195401932990370f, -0.221345720647030810f, 0.975152941495307620f, + -0.221532707953135230f, + 0.975110445204038890f, -0.221719687114115220f, 0.975067913060746470f, + -0.221906658123096100f, + 0.975025345066994120f, -0.222093620973203510f, 0.974982741224347140f, + -0.222280575657563370f, + 0.974940101534371830f, -0.222467522169301880f, 0.974897425998635820f, + -0.222654460501545500f, + 0.974854714618708430f, -0.222841390647421120f, 0.974811967396159830f, + -0.223028312600055820f, + 0.974769184332561770f, -0.223215226352576980f, 0.974726365429487320f, + -0.223402131898112370f, + 0.974683510688510670f, -0.223589029229789990f, 0.974640620111207560f, + -0.223775918340738150f, + 0.974597693699155050f, -0.223962799224085460f, 0.974554731453931230f, + -0.224149671872960870f, + 0.974511733377115720f, -0.224336536280493600f, 0.974468699470289580f, + -0.224523392439813170f, + 0.974425629735034990f, -0.224710240344049430f, 0.974382524172935470f, + -0.224897079986332490f, + 0.974339382785575860f, -0.225083911359792830f, 0.974296205574542440f, + -0.225270734457561160f, + 0.974252992541422500f, -0.225457549272768540f, 0.974209743687805220f, + -0.225644355798546330f, + 0.974166459015280320f, -0.225831154028026170f, 0.974123138525439640f, + -0.226017943954340020f, + 0.974079782219875680f, -0.226204725570620190f, 0.974036390100182610f, + -0.226391498869999240f, + 0.973992962167955830f, -0.226578263845610000f, 0.973949498424792170f, + -0.226765020490585690f, + 0.973905998872289570f, -0.226951768798059810f, 0.973862463512047300f, + -0.227138508761166170f, + 0.973818892345666100f, -0.227325240373038860f, 0.973775285374748110f, + -0.227511963626812280f, + 0.973731642600896400f, -0.227698678515621170f, 0.973687964025715670f, + -0.227885385032600530f, + 0.973644249650811980f, -0.228072083170885730f, 0.973600499477792370f, + -0.228258772923612380f, + 0.973556713508265560f, -0.228445454283916470f, 0.973512891743841370f, + -0.228632127244934230f, + 0.973469034186131070f, -0.228818791799802220f, 0.973425140836747030f, + -0.229005447941657340f, + 0.973381211697303290f, -0.229192095663636770f, 0.973337246769414910f, + -0.229378734958878010f, + 0.973293246054698250f, -0.229565365820518870f, 0.973249209554771230f, + -0.229751988241697490f, + 0.973205137271252800f, -0.229938602215552210f, 0.973161029205763530f, + -0.230125207735221850f, + 0.973116885359925130f, -0.230311804793845440f, 0.973072705735360530f, + -0.230498393384562350f, + 0.973028490333694210f, -0.230684973500512200f, 0.972984239156551740f, + -0.230871545134835020f, + 0.972939952205560180f, -0.231058108280671110f, 0.972895629482347760f, + -0.231244662931161050f, + 0.972851270988544180f, -0.231431209079445750f, 0.972806876725780370f, + -0.231617746718666470f, + 0.972762446695688570f, -0.231804275841964780f, 0.972717980899902250f, + -0.231990796442482440f, + 0.972673479340056430f, -0.232177308513361710f, 0.972628942017787270f, + -0.232363812047745030f, + 0.972584368934732210f, -0.232550307038775240f, 0.972539760092530180f, + -0.232736793479595390f, + 0.972495115492821190f, -0.232923271363348980f, 0.972450435137246830f, + -0.233109740683179690f, + 0.972405719027449770f, -0.233296201432231590f, 0.972360967165074140f, + -0.233482653603649090f, + 0.972316179551765300f, -0.233669097190576820f, 0.972271356189170040f, + -0.233855532186159840f, + 0.972226497078936270f, -0.234041958583543430f, 0.972181602222713440f, + -0.234228376375873210f, + 0.972136671622152230f, -0.234414785556295160f, 0.972091705278904430f, + -0.234601186117955550f, + 0.972046703194623500f, -0.234787578054000970f, 0.972001665370963890f, + -0.234973961357578250f, + 0.971956591809581720f, -0.235160336021834730f, 0.971911482512134000f, + -0.235346702039917840f, + 0.971866337480279400f, -0.235533059404975490f, 0.971821156715677700f, + -0.235719408110155820f, + 0.971775940219990140f, -0.235905748148607370f, 0.971730687994879160f, + -0.236092079513478910f, + 0.971685400042008540f, -0.236278402197919570f, 0.971640076363043390f, + -0.236464716195078780f, + 0.971594716959650160f, -0.236651021498106380f, 0.971549321833496630f, + -0.236837318100152380f, + 0.971503890986251780f, -0.237023605994367200f, 0.971458424419585960f, + -0.237209885173901600f, + 0.971412922135170940f, -0.237396155631906610f, 0.971367384134679490f, + -0.237582417361533570f, + 0.971321810419786160f, -0.237768670355934190f, 0.971276200992166490f, + -0.237954914608260540f, + 0.971230555853497380f, -0.238141150111664840f, 0.971184875005457030f, + -0.238327376859299810f, + 0.971139158449725090f, -0.238513594844318420f, 0.971093406187982460f, + -0.238699804059873980f, + 0.971047618221911100f, -0.238886004499120040f, 0.971001794553194690f, + -0.239072196155210610f, + 0.970955935183517970f, -0.239258379021299980f, 0.970910040114567050f, + -0.239444553090542630f, + 0.970864109348029470f, -0.239630718356093560f, 0.970818142885593870f, + -0.239816874811108000f, + 0.970772140728950350f, -0.240003022448741500f, 0.970726102879790110f, + -0.240189161262149900f, + 0.970680029339806130f, -0.240375291244489450f, 0.970633920110692160f, + -0.240561412388916650f, + 0.970587775194143630f, -0.240747524688588430f, 0.970541594591857070f, + -0.240933628136661910f, + 0.970495378305530560f, -0.241119722726294590f, 0.970449126336863090f, + -0.241305808450644370f, + 0.970402838687555500f, -0.241491885302869330f, 0.970356515359309450f, + -0.241677953276128010f, + 0.970310156353828110f, -0.241864012363579180f, 0.970263761672816140f, + -0.242050062558382070f, + 0.970217331317979160f, -0.242236103853696010f, 0.970170865291024480f, + -0.242422136242680890f, + 0.970124363593660280f, -0.242608159718496810f, 0.970077826227596420f, + -0.242794174274304220f, + 0.970031253194543970f, -0.242980179903263870f, 0.969984644496215240f, + -0.243166176598536900f, + 0.969938000134323960f, -0.243352164353284740f, 0.969891320110585100f, + -0.243538143160669130f, + 0.969844604426714830f, -0.243724113013852160f, 0.969797853084430890f, + -0.243910073905996260f, + 0.969751066085452140f, -0.244096025830264210f, 0.969704243431498860f, + -0.244281968779819030f, + 0.969657385124292450f, -0.244467902747824150f, 0.969610491165555870f, + -0.244653827727443320f, + 0.969563561557013180f, -0.244839743711840670f, 0.969516596300390000f, + -0.245025650694180470f, + 0.969469595397413060f, -0.245211548667627540f, 0.969422558849810320f, + -0.245397437625346960f, + 0.969375486659311280f, -0.245583317560504060f, 0.969328378827646660f, + -0.245769188466264580f, + 0.969281235356548530f, -0.245955050335794590f, 0.969234056247750050f, + -0.246140903162260530f, + 0.969186841502985950f, -0.246326746938829030f, 0.969139591123992280f, + -0.246512581658667210f, + 0.969092305112506210f, -0.246698407314942410f, 0.969044983470266240f, + -0.246884223900822430f, + 0.968997626199012420f, -0.247070031409475250f, 0.968950233300485800f, + -0.247255829834069300f, + 0.968902804776428870f, -0.247441619167773270f, 0.968855340628585580f, + -0.247627399403756280f, + 0.968807840858700970f, -0.247813170535187670f, 0.968760305468521430f, + -0.247998932555237110f, + 0.968712734459794780f, -0.248184685457074780f, 0.968665127834270060f, + -0.248370429233870980f, + 0.968617485593697540f, -0.248556163878796560f, 0.968569807739828930f, + -0.248741889385022480f, + 0.968522094274417380f, -0.248927605745720150f, 0.968474345199216820f, + -0.249113312954061360f, + 0.968426560515983190f, -0.249299011003218190f, 0.968378740226473300f, + -0.249484699886362960f, + 0.968330884332445190f, -0.249670379596668550f, 0.968282992835658660f, + -0.249856050127307990f, + 0.968235065737874320f, -0.250041711471454650f, 0.968187103040854420f, + -0.250227363622282370f, + 0.968139104746362440f, -0.250413006572965220f, 0.968091070856162970f, + -0.250598640316677670f, + 0.968043001372022260f, -0.250784264846594500f, 0.967994896295707670f, + -0.250969880155890720f, + 0.967946755628987800f, -0.251155486237741920f, 0.967898579373632660f, + -0.251341083085323880f, + 0.967850367531413620f, -0.251526670691812610f, 0.967802120104103270f, + -0.251712249050384700f, + 0.967753837093475510f, -0.251897818154216970f, 0.967705518501305480f, + -0.252083377996486450f, + 0.967657164329369880f, -0.252268928570370810f, 0.967608774579446500f, + -0.252454469869047740f, + 0.967560349253314360f, -0.252640001885695520f, 0.967511888352754150f, + -0.252825524613492610f, + 0.967463391879547550f, -0.253011038045617860f, 0.967414859835477480f, + -0.253196542175250560f, + 0.967366292222328510f, -0.253382036995570160f, 0.967317689041886310f, + -0.253567522499756560f, + 0.967269050295937790f, -0.253752998680989990f, 0.967220375986271420f, + -0.253938465532451090f, + 0.967171666114676640f, -0.254123923047320620f, 0.967122920682944360f, + -0.254309371218780000f, + 0.967074139692867040f, -0.254494810040010730f, 0.967025323146238010f, + -0.254680239504194830f, + 0.966976471044852070f, -0.254865659604514570f, 0.966927583390505660f, + -0.255051070334152470f, + 0.966878660184995910f, -0.255236471686291710f, 0.966829701430121810f, + -0.255421863654115460f, + 0.966780707127683270f, -0.255607246230807380f, 0.966731677279481840f, + -0.255792619409551610f, + 0.966682611887320080f, -0.255977983183532430f, 0.966633510953002100f, + -0.256163337545934460f, + 0.966584374478333120f, -0.256348682489942910f, 0.966535202465119700f, + -0.256534018008743040f, + 0.966485994915169840f, -0.256719344095520660f, 0.966436751830292650f, + -0.256904660743461910f, + 0.966387473212298900f, -0.257089967945753120f, 0.966338159063000130f, + -0.257275265695581120f, + 0.966288809384209690f, -0.257460553986133100f, 0.966239424177741890f, + -0.257645832810596390f, + 0.966190003445412500f, -0.257831102162158990f, 0.966140547189038750f, + -0.258016362034009020f, + 0.966091055410438830f, -0.258201612419334870f, 0.966041528111432400f, + -0.258386853311325600f, + 0.965991965293840570f, -0.258572084703170340f, 0.965942366959485540f, + -0.258757306588058680f, + 0.965892733110190860f, -0.258942518959180520f, 0.965843063747781510f, + -0.259127721809726150f, + 0.965793358874083680f, -0.259312915132886230f, 0.965743618490924830f, + -0.259498098921851660f, + 0.965693842600133690f, -0.259683273169813770f, 0.965644031203540590f, + -0.259868437869964270f, + 0.965594184302976830f, -0.260053593015495190f, 0.965544301900275180f, + -0.260238738599598840f, + 0.965494383997269500f, -0.260423874615468010f, 0.965444430595795430f, + -0.260609001056295750f, + 0.965394441697689400f, -0.260794117915275510f, 0.965344417304789370f, + -0.260979225185601070f, + 0.965294357418934660f, -0.261164322860466480f, 0.965244262041965780f, + -0.261349410933066350f, + 0.965194131175724720f, -0.261534489396595520f, 0.965143964822054450f, + -0.261719558244249030f, + 0.965093762982799590f, -0.261904617469222610f, 0.965043525659805890f, + -0.262089667064712040f, + 0.964993252854920320f, -0.262274707023913590f, 0.964942944569991410f, + -0.262459737340023980f, + 0.964892600806868890f, -0.262644758006240040f, 0.964842221567403620f, + -0.262829769015759160f, + 0.964791806853447900f, -0.263014770361779000f, 0.964741356666855340f, + -0.263199762037497560f, + 0.964690871009481030f, -0.263384744036113280f, 0.964640349883180930f, + -0.263569716350824880f, + 0.964589793289812760f, -0.263754678974831350f, 0.964539201231235150f, + -0.263939631901332350f, + 0.964488573709308410f, -0.264124575123527550f, 0.964437910725893910f, + -0.264309508634617110f, + 0.964387212282854290f, -0.264494432427801630f, 0.964336478382053720f, + -0.264679346496281890f, + 0.964285709025357480f, -0.264864250833259260f, 0.964234904214632200f, + -0.265049145431935250f, + 0.964184063951745830f, -0.265234030285511790f, 0.964133188238567640f, + -0.265418905387191260f, + 0.964082277076968140f, -0.265603770730176330f, 0.964031330468819280f, + -0.265788626307669920f, + 0.963980348415994110f, -0.265973472112875590f, 0.963929330920367140f, + -0.266158308138996990f, + 0.963878277983814200f, -0.266343134379238180f, 0.963827189608212340f, + -0.266527950826803690f, + 0.963776065795439840f, -0.266712757474898370f, 0.963724906547376530f, + -0.266897554316727350f, + 0.963673711865903230f, -0.267082341345496300f, 0.963622481752902220f, + -0.267267118554410930f, + 0.963571216210257320f, -0.267451885936677620f, 0.963519915239853140f, + -0.267636643485503090f, + 0.963468578843575950f, -0.267821391194094150f, 0.963417207023313350f, + -0.268006129055658290f, + 0.963365799780954050f, -0.268190857063403180f, 0.963314357118388200f, + -0.268375575210536900f, + 0.963262879037507070f, -0.268560283490267890f, 0.963211365540203480f, + -0.268744981895804980f, + 0.963159816628371360f, -0.268929670420357260f, 0.963108232303906190f, + -0.269114349057134380f, + 0.963056612568704340f, -0.269299017799346120f, 0.963004957424663850f, + -0.269483676640202840f, + 0.962953266873683880f, -0.269668325572915090f, 0.962901540917665000f, + -0.269852964590693860f, + 0.962849779558509030f, -0.270037593686750570f, 0.962797982798119010f, + -0.270222212854296870f, + 0.962746150638399410f, -0.270406822086544820f, 0.962694283081255930f, + -0.270591421376706940f, + 0.962642380128595710f, -0.270776010717996010f, 0.962590441782326890f, + -0.270960590103625170f, + 0.962538468044359160f, -0.271145159526808010f, 0.962486458916603450f, + -0.271329718980758420f, + 0.962434414400972100f, -0.271514268458690700f, 0.962382334499378380f, + -0.271698807953819510f, + 0.962330219213737400f, -0.271883337459359720f, 0.962278068545965090f, + -0.272067856968526920f, + 0.962225882497979020f, -0.272252366474536710f, 0.962173661071697880f, + -0.272436865970605240f, + 0.962121404269041580f, -0.272621355449948980f, 0.962069112091931580f, + -0.272805834905784810f, + 0.962016784542290560f, -0.272990304331329920f, 0.961964421622042320f, + -0.273174763719801930f, + 0.961912023333112210f, -0.273359213064418680f, 0.961859589677426570f, + -0.273543652358398730f, + 0.961807120656913540f, -0.273728081594960540f, 0.961754616273502010f, + -0.273912500767323260f, + 0.961702076529122540f, -0.274096909868706380f, 0.961649501425706820f, + -0.274281308892329660f, + 0.961596890965187860f, -0.274465697831413220f, 0.961544245149499990f, + -0.274650076679177680f, + 0.961491563980579000f, -0.274834445428843940f, 0.961438847460361680f, + -0.275018804073633220f, + 0.961386095590786250f, -0.275203152606767310f, 0.961333308373792270f, + -0.275387491021468140f, + 0.961280485811320640f, -0.275571819310958140f, 0.961227627905313460f, + -0.275756137468460120f, + 0.961174734657714080f, -0.275940445487197150f, 0.961121806070467380f, + -0.276124743360392830f, + 0.961068842145519350f, -0.276309031081271080f, 0.961015842884817230f, + -0.276493308643055990f, + 0.960962808290309780f, -0.276677576038972420f, 0.960909738363946770f, + -0.276861833262245280f, + 0.960856633107679660f, -0.277046080306099900f, 0.960803492523460760f, + -0.277230317163762170f, + 0.960750316613243950f, -0.277414543828458090f, 0.960697105378984450f, + -0.277598760293414290f, + 0.960643858822638590f, -0.277782966551857690f, 0.960590576946164120f, + -0.277967162597015370f, + 0.960537259751520050f, -0.278151348422115090f, 0.960483907240666790f, + -0.278335524020384920f, + 0.960430519415565790f, -0.278519689385053060f, 0.960377096278180130f, + -0.278703844509348490f, + 0.960323637830473920f, -0.278887989386500280f, 0.960270144074412800f, + -0.279072124009737800f, + 0.960216615011963430f, -0.279256248372291180f, 0.960163050645094000f, + -0.279440362467390510f, + 0.960109450975773940f, -0.279624466288266590f, 0.960055816005973890f, + -0.279808559828150390f, + 0.960002145737665960f, -0.279992643080273220f, 0.959948440172823210f, + -0.280176716037866980f, + 0.959894699313420530f, -0.280360778694163810f, 0.959840923161433770f, + -0.280544831042396250f, + 0.959787111718839900f, -0.280728873075797190f, 0.959733264987617680f, + -0.280912904787600000f, + 0.959679382969746750f, -0.281096926171038260f, 0.959625465667208190f, + -0.281280937219346110f, + 0.959571513081984520f, -0.281464937925757940f, 0.959517525216059260f, + -0.281648928283508630f, + 0.959463502071417510f, -0.281832908285833350f, 0.959409443650045550f, + -0.282016877925967640f, + 0.959355349953930790f, -0.282200837197147560f, 0.959301220985062210f, + -0.282384786092609360f, + 0.959247056745430090f, -0.282568724605589740f, 0.959192857237025740f, + -0.282752652729325930f, + 0.959138622461841890f, -0.282936570457055390f, 0.959084352421872730f, + -0.283120477782015820f, + 0.959030047119113660f, -0.283304374697445740f, 0.958975706555561080f, + -0.283488261196583550f, + 0.958921330733213170f, -0.283672137272668430f, 0.958866919654069010f, + -0.283856002918939750f, + 0.958812473320129310f, -0.284039858128637190f, 0.958757991733395710f, + -0.284223702895001040f, + 0.958703474895871600f, -0.284407537211271880f, 0.958648922809561150f, + -0.284591361070690440f, + 0.958594335476470220f, -0.284775174466498300f, 0.958539712898605730f, + -0.284958977391937040f, + 0.958485055077976100f, -0.285142769840248670f, 0.958430362016590930f, + -0.285326551804675870f, + 0.958375633716461170f, -0.285510323278461260f, 0.958320870179598880f, + -0.285694084254848320f, + 0.958266071408017670f, -0.285877834727080620f, 0.958211237403732260f, + -0.286061574688402040f, + 0.958156368168758820f, -0.286245304132057120f, 0.958101463705114730f, + -0.286429023051290700f, + 0.958046524014818600f, -0.286612731439347790f, 0.957991549099890370f, + -0.286796429289474080f, + 0.957936538962351420f, -0.286980116594915570f, 0.957881493604224370f, + -0.287163793348918390f, + 0.957826413027532910f, -0.287347459544729510f, 0.957771297234302320f, + -0.287531115175595930f, + 0.957716146226558870f, -0.287714760234765170f, 0.957660960006330610f, + -0.287898394715485170f, + 0.957605738575646350f, -0.288082018611004130f, 0.957550481936536470f, + -0.288265631914570770f, + 0.957495190091032570f, -0.288449234619434220f, 0.957439863041167680f, + -0.288632826718843830f, + 0.957384500788975860f, -0.288816408206049480f, 0.957329103336492790f, + -0.288999979074301420f, + 0.957273670685755200f, -0.289183539316850200f, 0.957218202838801210f, + -0.289367088926947010f, + 0.957162699797670210f, -0.289550627897843030f, 0.957107161564402790f, + -0.289734156222790250f, + 0.957051588141040970f, -0.289917673895040750f, 0.956995979529628230f, + -0.290101180907847090f, + 0.956940335732208820f, -0.290284677254462330f, 0.956884656750828900f, + -0.290468162928139820f, + 0.956828942587535370f, -0.290651637922133220f, 0.956773193244376930f, + -0.290835102229696830f, + 0.956717408723403050f, -0.291018555844085090f, 0.956661589026665090f, + -0.291201998758552900f, + 0.956605734156215080f, -0.291385430966355660f, 0.956549844114106820f, + -0.291568852460749040f, + 0.956493918902395100f, -0.291752263234989260f, 0.956437958523136180f, + -0.291935663282332780f, + 0.956381962978387730f, -0.292119052596036380f, 0.956325932270208230f, + -0.292302431169357560f, + 0.956269866400658030f, -0.292485798995553880f, 0.956213765371798470f, + -0.292669156067883460f, + 0.956157629185692140f, -0.292852502379604810f, 0.956101457844403040f, + -0.293035837923976810f, + 0.956045251349996410f, -0.293219162694258630f, 0.955989009704538930f, + -0.293402476683710110f, + 0.955932732910098280f, -0.293585779885591200f, 0.955876420968743590f, + -0.293769072293162400f, + 0.955820073882545420f, -0.293952353899684660f, 0.955763691653575440f, + -0.294135624698419030f, + 0.955707274283906560f, -0.294318884682627400f, 0.955650821775613330f, + -0.294502133845571670f, + 0.955594334130771110f, -0.294685372180514330f, 0.955537811351456880f, + -0.294868599680718270f, + 0.955481253439748770f, -0.295051816339446720f, 0.955424660397726330f, + -0.295235022149963220f, + 0.955368032227470350f, -0.295418217105532010f, 0.955311368931062720f, + -0.295601401199417360f, + 0.955254670510586990f, -0.295784574424884260f, 0.955197936968127710f, + -0.295967736775197890f, + 0.955141168305770780f, -0.296150888243623790f, 0.955084364525603410f, + -0.296334028823428190f, + 0.955027525629714160f, -0.296517158507877470f, 0.954970651620192790f, + -0.296700277290238350f, + 0.954913742499130520f, -0.296883385163778270f, 0.954856798268619580f, + -0.297066482121764730f, + 0.954799818930753720f, -0.297249568157465840f, 0.954742804487627940f, + -0.297432643264150030f, + 0.954685754941338340f, -0.297615707435086200f, 0.954628670293982680f, + -0.297798760663543550f, + 0.954571550547659630f, -0.297981802942791810f, 0.954514395704469500f, + -0.298164834266100850f, + 0.954457205766513490f, -0.298347854626741400f, 0.954399980735894490f, + -0.298530864017984120f, + 0.954342720614716480f, -0.298713862433100330f, 0.954285425405084650f, + -0.298896849865361800f, + 0.954228095109105670f, -0.299079826308040480f, 0.954170729728887280f, + -0.299262791754408840f, + 0.954113329266538800f, -0.299445746197739890f, 0.954055893724170660f, + -0.299628689631306790f, + 0.953998423103894490f, -0.299811622048383350f, 0.953940917407823500f, + -0.299994543442243580f, + 0.953883376638071770f, -0.300177453806161950f, 0.953825800796755050f, + -0.300360353133413530f, + 0.953768189885990330f, -0.300543241417273450f, 0.953710543907895670f, + -0.300726118651017500f, + 0.953652862864590500f, -0.300908984827921890f, 0.953595146758195680f, + -0.301091839941263100f, + 0.953537395590833280f, -0.301274683984317950f, 0.953479609364626610f, + -0.301457516950363940f, + 0.953421788081700310f, -0.301640338832678770f, 0.953363931744180330f, + -0.301823149624540650f, + 0.953306040354193860f, -0.302005949319228080f, 0.953248113913869320f, + -0.302188737910019990f, + 0.953190152425336670f, -0.302371515390195970f, 0.953132155890726750f, + -0.302554281753035610f, + 0.953074124312172200f, -0.302737036991819140f, 0.953016057691806530f, + -0.302919781099827310f, + 0.952957956031764700f, -0.303102514070341060f, 0.952899819334182880f, + -0.303285235896641750f, + 0.952841647601198720f, -0.303467946572011320f, 0.952783440834950920f, + -0.303650646089731910f, + 0.952725199037579570f, -0.303833334443086360f, 0.952666922211226170f, + -0.304016011625357570f, + 0.952608610358033350f, -0.304198677629829110f, 0.952550263480144930f, + -0.304381332449784880f, + 0.952491881579706320f, -0.304563976078509100f, 0.952433464658864030f, + -0.304746608509286530f, + 0.952375012719765880f, -0.304929229735402370f, 0.952316525764560940f, + -0.305111839750142110f, + 0.952258003795399600f, -0.305294438546791670f, 0.952199446814433580f, + -0.305477026118637420f, + 0.952140854823815830f, -0.305659602458966120f, 0.952082227825700620f, + -0.305842167561065080f, + 0.952023565822243570f, -0.306024721418221790f, 0.951964868815601380f, + -0.306207264023724220f, + 0.951906136807932350f, -0.306389795370860920f, 0.951847369801395620f, + -0.306572315452920740f, + 0.951788567798152130f, -0.306754824263192780f, 0.951729730800363830f, + -0.306937321794966910f, + 0.951670858810193860f, -0.307119808041533100f, 0.951611951829806850f, + -0.307302282996181790f, + 0.951553009861368590f, -0.307484746652204100f, 0.951494032907046370f, + -0.307667199002891190f, + 0.951435020969008340f, -0.307849640041534870f, 0.951375974049424420f, + -0.308032069761427330f, + 0.951316892150465550f, -0.308214488155861050f, 0.951257775274304000f, + -0.308396895218129190f, + 0.951198623423113230f, -0.308579290941525090f, 0.951139436599068190f, + -0.308761675319342450f, + 0.951080214804345010f, -0.308944048344875710f, 0.951020958041121080f, + -0.309126410011419440f, + 0.950961666311575080f, -0.309308760312268730f, 0.950902339617887060f, + -0.309491099240719100f, + 0.950842977962238160f, -0.309673426790066380f, 0.950783581346811070f, + -0.309855742953607070f, + 0.950724149773789610f, -0.310038047724637890f, 0.950664683245358910f, + -0.310220341096455850f, + 0.950605181763705340f, -0.310402623062358720f, 0.950545645331016600f, + -0.310584893615644450f, + 0.950486073949481700f, -0.310767152749611470f, 0.950426467621290900f, + -0.310949400457558640f, + 0.950366826348635780f, -0.311131636732785270f, 0.950307150133709260f, + -0.311313861568590920f, + 0.950247438978705230f, -0.311496074958275910f, 0.950187692885819280f, + -0.311678276895140550f, + 0.950127911857248100f, -0.311860467372486020f, 0.950068095895189590f, + -0.312042646383613510f, + 0.950008245001843000f, -0.312224813921824880f, 0.949948359179409010f, + -0.312406969980422440f, + 0.949888438430089300f, -0.312589114552708710f, 0.949828482756087110f, + -0.312771247631986770f, + 0.949768492159606680f, -0.312953369211560200f, 0.949708466642853800f, + -0.313135479284732840f, + 0.949648406208035480f, -0.313317577844809010f, 0.949588310857359950f, + -0.313499664885093510f, + 0.949528180593036670f, -0.313681740398891520f, 0.949468015417276550f, + -0.313863804379508500f, + 0.949407815332291570f, -0.314045856820250710f, 0.949347580340295210f, + -0.314227897714424440f, + 0.949287310443502120f, -0.314409927055336660f, 0.949227005644128210f, + -0.314591944836294660f, + 0.949166665944390700f, -0.314773951050606070f, 0.949106291346508260f, + -0.314955945691579140f, + 0.949045881852700560f, -0.315137928752522440f, 0.948985437465188710f, + -0.315319900226744890f, + 0.948924958186195160f, -0.315501860107555990f, 0.948864444017943340f, + -0.315683808388265650f, + 0.948803894962658490f, -0.315865745062183960f, 0.948743311022566480f, + -0.316047670122621860f, + 0.948682692199895090f, -0.316229583562890330f, 0.948622038496872990f, + -0.316411485376300980f, + 0.948561349915730270f, -0.316593375556165850f, 0.948500626458698260f, + -0.316775254095797270f, + 0.948439868128009620f, -0.316957120988508150f, 0.948379074925898120f, + -0.317138976227611780f, + 0.948318246854599090f, -0.317320819806421740f, 0.948257383916349060f, + -0.317502651718252260f, + 0.948196486113385580f, -0.317684471956417970f, 0.948135553447947980f, + -0.317866280514233660f, + 0.948074585922276230f, -0.318048077385014950f, 0.948013583538612200f, + -0.318229862562077530f, + 0.947952546299198670f, -0.318411636038737790f, 0.947891474206279840f, + -0.318593397808312420f, + 0.947830367262101010f, -0.318775147864118480f, 0.947769225468909180f, + -0.318956886199473650f, + 0.947708048828952100f, -0.319138612807695900f, 0.947646837344479300f, + -0.319320327682103610f, + 0.947585591017741090f, -0.319502030816015690f, 0.947524309850989570f, + -0.319683722202751430f, + 0.947462993846477700f, -0.319865401835630500f, 0.947401643006459900f, + -0.320047069707973140f, + 0.947340257333192050f, -0.320228725813099860f, 0.947278836828930880f, + -0.320410370144331820f, + 0.947217381495934820f, -0.320592002694990330f, 0.947155891336463270f, + -0.320773623458397330f, + 0.947094366352777220f, -0.320955232427875210f, 0.947032806547138620f, + -0.321136829596746660f, + 0.946971211921810880f, -0.321318414958334850f, 0.946909582479058760f, + -0.321499988505963510f, + 0.946847918221148000f, -0.321681550232956580f, 0.946786219150346000f, + -0.321863100132638580f, + 0.946724485268921170f, -0.322044638198334510f, 0.946662716579143360f, + -0.322226164423369600f, + 0.946600913083283530f, -0.322407678801069850f, 0.946539074783614100f, + -0.322589181324761330f, + 0.946477201682408680f, -0.322770671987770710f, 0.946415293781942110f, + -0.322952150783425260f, + 0.946353351084490590f, -0.323133617705052330f, 0.946291373592331620f, + -0.323315072745979980f, + 0.946229361307743820f, -0.323496515899536710f, 0.946167314233007370f, + -0.323677947159051240f, + 0.946105232370403450f, -0.323859366517852850f, 0.946043115722214560f, + -0.324040773969271450f, + 0.945980964290724760f, -0.324222169506636960f, 0.945918778078219110f, + -0.324403553123280230f, + 0.945856557086983910f, -0.324584924812532150f, 0.945794301319306970f, + -0.324766284567724220f, + 0.945732010777477150f, -0.324947632382188430f, 0.945669685463784710f, + -0.325128968249257080f, + 0.945607325380521280f, -0.325310292162262930f, 0.945544930529979680f, + -0.325491604114539310f, + 0.945482500914453740f, -0.325672904099419850f, 0.945420036536239070f, + -0.325854192110238580f, + 0.945357537397632290f, -0.326035468140330240f, 0.945295003500931210f, + -0.326216732183029710f, + 0.945232434848435000f, -0.326397984231672490f, 0.945169831442444150f, + -0.326579224279594400f, + 0.945107193285260610f, -0.326760452320131730f, 0.945044520379187070f, + -0.326941668346621420f, + 0.944981812726528150f, -0.327122872352400510f, 0.944919070329589220f, + -0.327304064330806670f, + 0.944856293190677210f, -0.327485244275178000f, 0.944793481312100280f, + -0.327666412178853120f, + 0.944730634696167800f, -0.327847568035170840f, 0.944667753345190490f, + -0.328028711837470680f, + 0.944604837261480260f, -0.328209843579092500f, 0.944541886447350490f, + -0.328390963253376580f, + 0.944478900905115550f, -0.328572070853663740f, 0.944415880637091250f, + -0.328753166373294990f, + 0.944352825645594750f, -0.328934249805612200f, 0.944289735932944410f, + -0.329115321143957250f, + 0.944226611501459810f, -0.329296380381672750f, 0.944163452353461770f, + -0.329477427512101740f, + 0.944100258491272660f, -0.329658462528587490f, 0.944037029917215830f, + -0.329839485424473940f, + 0.943973766633615980f, -0.330020496193105420f, 0.943910468642799150f, + -0.330201494827826570f, + 0.943847135947092690f, -0.330382481321982780f, 0.943783768548825060f, + -0.330563455668919540f, + 0.943720366450326200f, -0.330744417861982890f, 0.943656929653927220f, + -0.330925367894519540f, + 0.943593458161960390f, -0.331106305759876430f, 0.943529951976759480f, + -0.331287231451400820f, + 0.943466411100659320f, -0.331468144962440870f, 0.943402835535996240f, + -0.331649046286344670f, + 0.943339225285107720f, -0.331829935416461110f, 0.943275580350332540f, + -0.332010812346139380f, + 0.943211900734010620f, -0.332191677068729150f, 0.943148186438483420f, + -0.332372529577580620f, + 0.943084437466093490f, -0.332553369866044220f, 0.943020653819184650f, + -0.332734197927471050f, + 0.942956835500102120f, -0.332915013755212650f, 0.942892982511192250f, + -0.333095817342620780f, + 0.942829094854802710f, -0.333276608683047930f, 0.942765172533282510f, + -0.333457387769846850f, + 0.942701215548981900f, -0.333638154596370860f, 0.942637223904252530f, + -0.333818909155973620f, + 0.942573197601446870f, -0.333999651442009380f, 0.942509136642919240f, + -0.334180381447832690f, + 0.942445041031024890f, -0.334361099166798740f, 0.942380910768120470f, + -0.334541804592262900f, + 0.942316745856563780f, -0.334722497717581220f, 0.942252546298714020f, + -0.334903178536110180f, + 0.942188312096931770f, -0.335083847041206580f, 0.942124043253578570f, + -0.335264503226227810f, + 0.942059739771017310f, -0.335445147084531600f, 0.941995401651612550f, + -0.335625778609476290f, + 0.941931028897729620f, -0.335806397794420450f, 0.941866621511735280f, + -0.335987004632723350f, + 0.941802179495997650f, -0.336167599117744520f, 0.941737702852886160f, + -0.336348181242844050f, + 0.941673191584771360f, -0.336528751001382410f, 0.941608645694025250f, + -0.336709308386720580f, + 0.941544065183020810f, -0.336889853392220050f, 0.941479450054132580f, + -0.337070386011242620f, + 0.941414800309736340f, -0.337250906237150590f, 0.941350115952208970f, + -0.337431414063306840f, + 0.941285396983928660f, -0.337611909483074620f, 0.941220643407275180f, + -0.337792392489817460f, + 0.941155855224629190f, -0.337972863076899720f, 0.941091032438372780f, + -0.338153321237685930f, + 0.941026175050889260f, -0.338333766965541130f, 0.940961283064563280f, + -0.338514200253830940f, + 0.940896356481780830f, -0.338694621095921190f, 0.940831395304928870f, + -0.338875029485178450f, + 0.940766399536396070f, -0.339055425414969640f, 0.940701369178571940f, + -0.339235808878661950f, + 0.940636304233847590f, -0.339416179869623360f, 0.940571204704615190f, + -0.339596538381222110f, + 0.940506070593268300f, -0.339776884406826850f, 0.940440901902201750f, + -0.339957217939806880f, + 0.940375698633811540f, -0.340137538973531720f, 0.940310460790495070f, + -0.340317847501371670f, + 0.940245188374650880f, -0.340498143516697160f, 0.940179881388678920f, + -0.340678427012879200f, + 0.940114539834980280f, -0.340858697983289440f, 0.940049163715957370f, + -0.341038956421299720f, + 0.939983753034014050f, -0.341219202320282360f, 0.939918307791555050f, + -0.341399435673610420f, + 0.939852827990986680f, -0.341579656474657160f, 0.939787313634716570f, + -0.341759864716796310f, + 0.939721764725153340f, -0.341940060393402190f, 0.939656181264707180f, + -0.342120243497849530f, + 0.939590563255789270f, -0.342300414023513520f, 0.939524910700812230f, + -0.342480571963769800f, + 0.939459223602189920f, -0.342660717311994380f, 0.939393501962337510f, + -0.342840850061563950f, + 0.939327745783671400f, -0.343020970205855540f, 0.939261955068609210f, + -0.343201077738246540f, + 0.939196129819569900f, -0.343381172652115040f, 0.939130270038973650f, + -0.343561254940839390f, + 0.939064375729241950f, -0.343741324597798490f, 0.938998446892797540f, + -0.343921381616371700f, + 0.938932483532064600f, -0.344101425989938810f, 0.938866485649468060f, + -0.344281457711880180f, + 0.938800453247434770f, -0.344461476775576540f, 0.938734386328392460f, + -0.344641483174408960f, + 0.938668284894770170f, -0.344821476901759290f, 0.938602148948998400f, + -0.345001457951009670f, + 0.938535978493508560f, -0.345181426315542550f, 0.938469773530733800f, + -0.345361381988741220f, + 0.938403534063108060f, -0.345541324963989090f, 0.938337260093066950f, + -0.345721255234670120f, + 0.938270951623047190f, -0.345901172794168990f, 0.938204608655486490f, + -0.346081077635870430f, + 0.938138231192824360f, -0.346260969753160010f, 0.938071819237501270f, + -0.346440849139423520f, + 0.938005372791958840f, -0.346620715788047320f, 0.937938891858640320f, + -0.346800569692418290f, + 0.937872376439989890f, -0.346980410845923680f, 0.937805826538453120f, + -0.347160239241951160f, + 0.937739242156476970f, -0.347340054873889140f, 0.937672623296509470f, + -0.347519857735126110f, + 0.937605969960999990f, -0.347699647819051380f, 0.937539282152399230f, + -0.347879425119054510f, + 0.937472559873159250f, -0.348059189628525610f, 0.937405803125732960f, + -0.348238941340855260f, + 0.937339011912574960f, -0.348418680249434560f, 0.937272186236140950f, + -0.348598406347654930f, + 0.937205326098887960f, -0.348778119628908420f, 0.937138431503274140f, + -0.348957820086587490f, + 0.937071502451759190f, -0.349137507714084970f, 0.937004538946803690f, + -0.349317182504794380f, + 0.936937540990869900f, -0.349496844452109550f, 0.936870508586420960f, + -0.349676493549424760f, + 0.936803441735921560f, -0.349856129790134920f, 0.936736340441837620f, + -0.350035753167635240f, + 0.936669204706636170f, -0.350215363675321580f, 0.936602034532785570f, + -0.350394961306590150f, + 0.936534829922755500f, -0.350574546054837510f, 0.936467590879016990f, + -0.350754117913461060f, + 0.936400317404042060f, -0.350933676875858360f, 0.936333009500304180f, + -0.351113222935427460f, + 0.936265667170278260f, -0.351292756085567090f, 0.936198290416440090f, + -0.351472276319676310f, + 0.936130879241267030f, -0.351651783631154570f, 0.936063433647237540f, + -0.351831278013402030f, + 0.935995953636831410f, -0.352010759459819080f, 0.935928439212529660f, + -0.352190227963806830f, + 0.935860890376814640f, -0.352369683518766630f, 0.935793307132169900f, + -0.352549126118100460f, + 0.935725689481080370f, -0.352728555755210730f, 0.935658037426032040f, + -0.352907972423500250f, + 0.935590350969512370f, -0.353087376116372480f, 0.935522630114009930f, + -0.353266766827231240f, + 0.935454874862014620f, -0.353446144549480810f, 0.935387085216017770f, + -0.353625509276525970f, + 0.935319261178511610f, -0.353804861001772050f, 0.935251402751989920f, + -0.353984199718624770f, + 0.935183509938947610f, -0.354163525420490340f, 0.935115582741880890f, + -0.354342838100775550f, + 0.935047621163287430f, -0.354522137752887430f, 0.934979625205665800f, + -0.354701424370233830f, + 0.934911594871516090f, -0.354880697946222790f, 0.934843530163339540f, + -0.355059958474262860f, + 0.934775431083638700f, -0.355239205947763310f, 0.934707297634917440f, + -0.355418440360133650f, + 0.934639129819680780f, -0.355597661704783850f, 0.934570927640435030f, + -0.355776869975124640f, + 0.934502691099687870f, -0.355956065164566850f, 0.934434420199948050f, + -0.356135247266522130f, + 0.934366114943725790f, -0.356314416274402410f, 0.934297775333532530f, + -0.356493572181620090f, + 0.934229401371880820f, -0.356672714981588260f, 0.934160993061284530f, + -0.356851844667720300f, + 0.934092550404258980f, -0.357030961233429980f, 0.934024073403320390f, + -0.357210064672131960f, + 0.933955562060986730f, -0.357389154977240940f, 0.933887016379776890f, + -0.357568232142172260f, + 0.933818436362210960f, -0.357747296160341900f, 0.933749822010810580f, + -0.357926347025166010f, + 0.933681173328098410f, -0.358105384730061590f, 0.933612490316598540f, + -0.358284409268445850f, + 0.933543772978836170f, -0.358463420633736540f, 0.933475021317337950f, + -0.358642418819351990f, + 0.933406235334631520f, -0.358821403818710860f, 0.933337415033246190f, + -0.359000375625232460f, + 0.933268560415712050f, -0.359179334232336500f, 0.933199671484560730f, + -0.359358279633443130f, + 0.933130748242325230f, -0.359537211821973070f, 0.933061790691539380f, + -0.359716130791347570f, + 0.932992798834738960f, -0.359895036534988110f, 0.932923772674460140f, + -0.360073929046317020f, + 0.932854712213241120f, -0.360252808318756890f, 0.932785617453621100f, + -0.360431674345730700f, + 0.932716488398140250f, -0.360610527120662270f, 0.932647325049340450f, + -0.360789366636975580f, + 0.932578127409764420f, -0.360968192888095230f, 0.932508895481956590f, + -0.361147005867446250f, + 0.932439629268462360f, -0.361325805568454280f, 0.932370328771828460f, + -0.361504591984545260f, + 0.932300993994602760f, -0.361683365109145840f, 0.932231624939334540f, + -0.361862124935682980f, + 0.932162221608574430f, -0.362040871457584180f, 0.932092784004874050f, + -0.362219604668277460f, + 0.932023312130786490f, -0.362398324561191310f, 0.931953805988866010f, + -0.362577031129754760f, + 0.931884265581668150f, -0.362755724367397230f, 0.931814690911749730f, + -0.362934404267548640f, + 0.931745081981668720f, -0.363113070823639470f, 0.931675438793984620f, + -0.363291724029100760f, + 0.931605761351257830f, -0.363470363877363760f, 0.931536049656050300f, + -0.363648990361860550f, + 0.931466303710925090f, -0.363827603476023500f, 0.931396523518446600f, + -0.364006203213285470f, + 0.931326709081180430f, -0.364184789567079890f, 0.931256860401693420f, + -0.364363362530840620f, + 0.931186977482553750f, -0.364541922098002120f, 0.931117060326330790f, + -0.364720468261999280f, + 0.931047108935595280f, -0.364899001016267320f, 0.930977123312918930f, + -0.365077520354242180f, + 0.930907103460875130f, -0.365256026269360320f, 0.930837049382038150f, + -0.365434518755058390f, + 0.930766961078983710f, -0.365612997804773850f, 0.930696838554288860f, + -0.365791463411944570f, + 0.930626681810531760f, -0.365969915570008740f, 0.930556490850291800f, + -0.366148354272405330f, + 0.930486265676149780f, -0.366326779512573590f, 0.930416006290687550f, + -0.366505191283953370f, + 0.930345712696488470f, -0.366683589579984930f, 0.930275384896137150f, + -0.366861974394109060f, + 0.930205022892219070f, -0.367040345719767180f, 0.930134626687321390f, + -0.367218703550400980f, + 0.930064196284032360f, -0.367397047879452710f, 0.929993731684941480f, + -0.367575378700365330f, + 0.929923232892639670f, -0.367753696006581980f, 0.929852699909718750f, + -0.367931999791546450f, + 0.929782132738772190f, -0.368110290048703050f, 0.929711531382394370f, + -0.368288566771496570f, + 0.929640895843181330f, -0.368466829953372320f, 0.929570226123729860f, + -0.368645079587776040f, + 0.929499522226638560f, -0.368823315668153910f, 0.929428784154506800f, + -0.369001538187952780f, + 0.929358011909935500f, -0.369179747140620020f, 0.929287205495526790f, + -0.369357942519603130f, + 0.929216364913884040f, -0.369536124318350650f, 0.929145490167611720f, + -0.369714292530311240f, + 0.929074581259315860f, -0.369892447148934100f, 0.929003638191603360f, + -0.370070588167669080f, + 0.928932660967082820f, -0.370248715579966360f, 0.928861649588363700f, + -0.370426829379276790f, + 0.928790604058057020f, -0.370604929559051670f, 0.928719524378774810f, + -0.370783016112742560f, + 0.928648410553130520f, -0.370961089033801980f, 0.928577262583738850f, + -0.371139148315682570f, + 0.928506080473215590f, -0.371317193951837540f, 0.928434864224177980f, + -0.371495225935720760f, + 0.928363613839244370f, -0.371673244260786520f, 0.928292329321034670f, + -0.371851248920489490f, + 0.928221010672169440f, -0.372029239908285010f, 0.928149657895271150f, + -0.372207217217628840f, + 0.928078270992963140f, -0.372385180841977360f, 0.928006849967869970f, + -0.372563130774787250f, + 0.927935394822617890f, -0.372741067009515760f, 0.927863905559833780f, + -0.372918989539620830f, + 0.927792382182146320f, -0.373096898358560640f, 0.927720824692185200f, + -0.373274793459793970f, + 0.927649233092581180f, -0.373452674836780300f, 0.927577607385966730f, + -0.373630542482979280f, + 0.927505947574975180f, -0.373808396391851210f, 0.927434253662241300f, + -0.373986236556857030f, + 0.927362525650401110f, -0.374164062971457930f, 0.927290763542091720f, + -0.374341875629115920f, + 0.927218967339951790f, -0.374519674523293210f, 0.927147137046620880f, + -0.374697459647452600f, + 0.927075272664740100f, -0.374875230995057540f, 0.927003374196951670f, + -0.375052988559571920f, + 0.926931441645899130f, -0.375230732334459920f, 0.926859475014227160f, + -0.375408462313186590f, + 0.926787474304581750f, -0.375586178489217220f, 0.926715439519610330f, + -0.375763880856017700f, + 0.926643370661961230f, -0.375941569407054420f, 0.926571267734284330f, + -0.376119244135794340f, + 0.926499130739230510f, -0.376296905035704790f, 0.926426959679452210f, + -0.376474552100253770f, + 0.926354754557602860f, -0.376652185322909560f, 0.926282515376337210f, + -0.376829804697141280f, + 0.926210242138311380f, -0.377007410216418260f, 0.926137934846182560f, + -0.377185001874210450f, + 0.926065593502609310f, -0.377362579663988340f, 0.925993218110251480f, + -0.377540143579222940f, + 0.925920808671770070f, -0.377717693613385640f, 0.925848365189827270f, + -0.377895229759948490f, + 0.925775887667086740f, -0.378072752012383990f, 0.925703376106213230f, + -0.378250260364165200f, + 0.925630830509872720f, -0.378427754808765560f, 0.925558250880732740f, + -0.378605235339659120f, + 0.925485637221461490f, -0.378782701950320540f, 0.925412989534729060f, + -0.378960154634224720f, + 0.925340307823206310f, -0.379137593384847320f, 0.925267592089565660f, + -0.379315018195664430f, + 0.925194842336480530f, -0.379492429060152630f, 0.925122058566625880f, + -0.379669825971788940f, + 0.925049240782677580f, -0.379847208924051160f, 0.924976388987313160f, + -0.380024577910417270f, + 0.924903503183210910f, -0.380201932924366050f, 0.924830583373050800f, + -0.380379273959376600f, + 0.924757629559513910f, -0.380556601008928520f, 0.924684641745282420f, + -0.380733914066502140f, + 0.924611619933039970f, -0.380911213125578070f, 0.924538564125471420f, + -0.381088498179637520f, + 0.924465474325262600f, -0.381265769222162380f, 0.924392350535101050f, + -0.381443026246634730f, + 0.924319192757675160f, -0.381620269246537360f, 0.924246000995674890f, + -0.381797498215353640f, + 0.924172775251791200f, -0.381974713146567220f, 0.924099515528716280f, + -0.382151914033662610f, + 0.924026221829143850f, -0.382329100870124510f, 0.923952894155768640f, + -0.382506273649438230f, + 0.923879532511286740f, -0.382683432365089780f, 0.923806136898395410f, + -0.382860577010565420f, + 0.923732707319793290f, -0.383037707579352020f, 0.923659243778179980f, + -0.383214824064937180f, + 0.923585746276256670f, -0.383391926460808660f, 0.923512214816725630f, + -0.383569014760454910f, + 0.923438649402290370f, -0.383746088957365010f, 0.923365050035655720f, + -0.383923149045028390f, + 0.923291416719527640f, -0.384100195016935040f, 0.923217749456613500f, + -0.384277226866575510f, + 0.923144048249621930f, -0.384454244587440820f, 0.923070313101262420f, + -0.384631248173022580f, + 0.922996544014246250f, -0.384808237616812880f, 0.922922740991285680f, + -0.384985212912304200f, + 0.922848904035094120f, -0.385162174052989860f, 0.922775033148386380f, + -0.385339121032363340f, + 0.922701128333878630f, -0.385516053843918850f, 0.922627189594287910f, + -0.385692972481151140f, + 0.922553216932332830f, -0.385869876937555310f, 0.922479210350733210f, + -0.386046767206627170f, + 0.922405169852209880f, -0.386223643281862980f, 0.922331095439485440f, + -0.386400505156759440f, + 0.922256987115283030f, -0.386577352824813920f, 0.922182844882327600f, + -0.386754186279524180f, + 0.922108668743345180f, -0.386931005514388580f, 0.922034458701062820f, + -0.387107810522905990f, + 0.921960214758209220f, -0.387284601298575840f, 0.921885936917513970f, + -0.387461377834897870f, + 0.921811625181708120f, -0.387638140125372730f, 0.921737279553523910f, + -0.387814888163501180f, + 0.921662900035694730f, -0.387991621942784860f, 0.921588486630955490f, + -0.388168341456725740f, + 0.921514039342042010f, -0.388345046698826250f, 0.921439558171691430f, + -0.388521737662589570f, + 0.921365043122642340f, -0.388698414341519190f, 0.921290494197634540f, + -0.388875076729119250f, + 0.921215911399408730f, -0.389051724818894380f, 0.921141294730707270f, + -0.389228358604349730f, + 0.921066644194273640f, -0.389404978078990940f, 0.920991959792852310f, + -0.389581583236324300f, + 0.920917241529189520f, -0.389758174069856410f, 0.920842489406032190f, + -0.389934750573094730f, + 0.920767703426128790f, -0.390111312739546910f, 0.920692883592229120f, + -0.390287860562721190f, + 0.920618029907083970f, -0.390464394036126590f, 0.920543142373445480f, + -0.390640913153272430f, + 0.920468220994067110f, -0.390817417907668500f, 0.920393265771703550f, + -0.390993908292825380f, + 0.920318276709110590f, -0.391170384302253870f, 0.920243253809045370f, + -0.391346845929465560f, + 0.920168197074266340f, -0.391523293167972410f, 0.920093106507533180f, + -0.391699726011286940f, + 0.920017982111606570f, -0.391876144452922350f, 0.919942823889248640f, + -0.392052548486392090f, + 0.919867631843222950f, -0.392228938105210310f, 0.919792405976293860f, + -0.392405313302891690f, + 0.919717146291227360f, -0.392581674072951470f, 0.919641852790790470f, + -0.392758020408905280f, + 0.919566525477751530f, -0.392934352304269490f, 0.919491164354880100f, + -0.393110669752560760f, + 0.919415769424947070f, -0.393286972747296400f, 0.919340340690724340f, + -0.393463261281994330f, + 0.919264878154985370f, -0.393639535350172880f, 0.919189381820504470f, + -0.393815794945351020f, + 0.919113851690057770f, -0.393992040061048100f, 0.919038287766422050f, + -0.394168270690784080f, + 0.918962690052375630f, -0.394344486828079600f, 0.918887058550697970f, + -0.394520688466455600f, + 0.918811393264170050f, -0.394696875599433560f, 0.918735694195573550f, + -0.394873048220535760f, + 0.918659961347691900f, -0.395049206323284770f, 0.918584194723309540f, + -0.395225349901203670f, + 0.918508394325212250f, -0.395401478947816350f, 0.918432560156186910f, + -0.395577593456646840f, + 0.918356692219021720f, -0.395753693421220080f, 0.918280790516506130f, + -0.395929778835061250f, + 0.918204855051430900f, -0.396105849691696270f, 0.918128885826588030f, + -0.396281905984651520f, + 0.918052882844770380f, -0.396457947707453910f, 0.917976846108772730f, + -0.396633974853630830f, + 0.917900775621390500f, -0.396809987416710310f, 0.917824671385420570f, + -0.396985985390220900f, + 0.917748533403661250f, -0.397161968767691610f, 0.917672361678911860f, + -0.397337937542652060f, + 0.917596156213972950f, -0.397513891708632330f, 0.917519917011646260f, + -0.397689831259163180f, + 0.917443644074735220f, -0.397865756187775750f, 0.917367337406043930f, + -0.398041666488001770f, + 0.917290997008377910f, -0.398217562153373560f, 0.917214622884544250f, + -0.398393443177423980f, + 0.917138215037350710f, -0.398569309553686300f, 0.917061773469606820f, + -0.398745161275694430f, + 0.916985298184123000f, -0.398920998336982910f, 0.916908789183710990f, + -0.399096820731086540f, + 0.916832246471183890f, -0.399272628451540990f, 0.916755670049355990f, + -0.399448421491882140f, + 0.916679059921042700f, -0.399624199845646790f, 0.916602416089060790f, + -0.399799963506371980f, + 0.916525738556228210f, -0.399975712467595330f, 0.916449027325364150f, + -0.400151446722855130f, + 0.916372282399289140f, -0.400327166265690090f, 0.916295503780824800f, + -0.400502871089639500f, + 0.916218691472794220f, -0.400678561188243240f, 0.916141845478021350f, + -0.400854236555041650f, + 0.916064965799331720f, -0.401029897183575620f, 0.915988052439551950f, + -0.401205543067386710f, + 0.915911105401509880f, -0.401381174200016790f, 0.915834124688034710f, + -0.401556790575008540f, + 0.915757110301956720f, -0.401732392185905010f, 0.915680062246107650f, + -0.401907979026249700f, + 0.915602980523320230f, -0.402083551089586990f, 0.915525865136428530f, + -0.402259108369461490f, + 0.915448716088267830f, -0.402434650859418430f, 0.915371533381674760f, + -0.402610178553003680f, + 0.915294317019487050f, -0.402785691443763530f, 0.915217067004543860f, + -0.402961189525244900f, + 0.915139783339685260f, -0.403136672790995300f, 0.915062466027752760f, + -0.403312141234562550f, + 0.914985115071589310f, -0.403487594849495310f, 0.914907730474038730f, + -0.403663033629342640f, + 0.914830312237946200f, -0.403838457567654070f, 0.914752860366158220f, + -0.404013866657979890f, + 0.914675374861522390f, -0.404189260893870690f, 0.914597855726887790f, + -0.404364640268877810f, + 0.914520302965104450f, -0.404540004776553000f, 0.914442716579023870f, + -0.404715354410448650f, + 0.914365096571498560f, -0.404890689164117580f, 0.914287442945382440f, + -0.405066009031113340f, + 0.914209755703530690f, -0.405241314004989860f, 0.914132034848799460f, + -0.405416604079301630f, + 0.914054280384046570f, -0.405591879247603870f, 0.913976492312130630f, + -0.405767139503452060f, + 0.913898670635911680f, -0.405942384840402510f, 0.913820815358251100f, + -0.406117615252011840f, + 0.913742926482011390f, -0.406292830731837360f, 0.913665004010056350f, + -0.406468031273437000f, + 0.913587047945250810f, -0.406643216870369030f, 0.913509058290461140f, + -0.406818387516192310f, + 0.913431035048554720f, -0.406993543204466510f, 0.913352978222400250f, + -0.407168683928751550f, + 0.913274887814867760f, -0.407343809682607970f, 0.913196763828828200f, + -0.407518920459596920f, + 0.913118606267154240f, -0.407694016253280110f, 0.913040415132719160f, + -0.407869097057219800f, + 0.912962190428398210f, -0.408044162864978690f, 0.912883932157067200f, + -0.408219213670120100f, + 0.912805640321603500f, -0.408394249466208000f, 0.912727314924885900f, + -0.408569270246806780f, + 0.912648955969793900f, -0.408744276005481360f, 0.912570563459208730f, + -0.408919266735797430f, + 0.912492137396012650f, -0.409094242431320980f, 0.912413677783089020f, + -0.409269203085618590f, + 0.912335184623322750f, -0.409444148692257590f, 0.912256657919599760f, + -0.409619079244805670f, + 0.912178097674807180f, -0.409793994736831150f, 0.912099503891833470f, + -0.409968895161902880f, + 0.912020876573568340f, -0.410143780513590240f, 0.911942215722902570f, + -0.410318650785463260f, + 0.911863521342728520f, -0.410493505971092410f, 0.911784793435939430f, + -0.410668346064048730f, + 0.911706032005429880f, -0.410843171057903910f, 0.911627237054095650f, + -0.411017980946230210f, + 0.911548408584833990f, -0.411192775722600160f, 0.911469546600543020f, + -0.411367555380587220f, + 0.911390651104122430f, -0.411542319913765220f, 0.911311722098472780f, + -0.411717069315708560f, + 0.911232759586496190f, -0.411891803579992170f, 0.911153763571095900f, + -0.412066522700191560f, + 0.911074734055176360f, -0.412241226669882890f, 0.910995671041643140f, + -0.412415915482642730f, + 0.910916574533403360f, -0.412590589132048210f, 0.910837444533365010f, + -0.412765247611677270f, + 0.910758281044437570f, -0.412939890915108080f, 0.910679084069531570f, + -0.413114519035919450f, + 0.910599853611558930f, -0.413289131967690960f, 0.910520589673432750f, + -0.413463729704002410f, + 0.910441292258067250f, -0.413638312238434500f, 0.910361961368377990f, + -0.413812879564568300f, + 0.910282597007281760f, -0.413987431675985400f, 0.910203199177696540f, + -0.414161968566268080f, + 0.910123767882541680f, -0.414336490228999100f, 0.910044303124737500f, + -0.414510996657761750f, + 0.909964804907205660f, -0.414685487846140010f, 0.909885273232869160f, + -0.414859963787718330f, + 0.909805708104652220f, -0.415034424476081630f, 0.909726109525480160f, + -0.415208869904815590f, + 0.909646477498279540f, -0.415383300067506230f, 0.909566812025978330f, + -0.415557714957740410f, + 0.909487113111505430f, -0.415732114569105360f, 0.909407380757791260f, + -0.415906498895188770f, + 0.909327614967767260f, -0.416080867929579210f, 0.909247815744366310f, + -0.416255221665865480f, + 0.909167983090522380f, -0.416429560097637150f, 0.909088117009170580f, + -0.416603883218484350f, + 0.909008217503247450f, -0.416778191021997650f, 0.908928284575690640f, + -0.416952483501768170f, + 0.908848318229439120f, -0.417126760651387870f, 0.908768318467432890f, + -0.417301022464448890f, + 0.908688285292613360f, -0.417475268934544290f, 0.908608218707923190f, + -0.417649500055267410f, + 0.908528118716306120f, -0.417823715820212270f, 0.908447985320707250f, + -0.417997916222973550f, + 0.908367818524072890f, -0.418172101257146320f, 0.908287618329350450f, + -0.418346270916326260f, + 0.908207384739488700f, -0.418520425194109700f, 0.908127117757437600f, + -0.418694564084093560f, + 0.908046817386148340f, -0.418868687579875050f, 0.907966483628573350f, + -0.419042795675052370f, + 0.907886116487666260f, -0.419216888363223910f, 0.907805715966381930f, + -0.419390965637988890f, + 0.907725282067676440f, -0.419565027492946880f, 0.907644814794507200f, + -0.419739073921698180f, + 0.907564314149832630f, -0.419913104917843620f, 0.907483780136612570f, + -0.420087120474984530f, + 0.907403212757808110f, -0.420261120586722880f, 0.907322612016381420f, + -0.420435105246661170f, + 0.907241977915295820f, -0.420609074448402510f, 0.907161310457516250f, + -0.420783028185550520f, + 0.907080609646008450f, -0.420956966451709440f, 0.906999875483739610f, + -0.421130889240483970f, + 0.906919107973678140f, -0.421304796545479640f, 0.906838307118793430f, + -0.421478688360302280f, + 0.906757472922056550f, -0.421652564678558330f, 0.906676605386439460f, + -0.421826425493854910f, + 0.906595704514915330f, -0.422000270799799680f, 0.906514770310458800f, + -0.422174100590000770f, + 0.906433802776045460f, -0.422347914858067050f, 0.906352801914652400f, + -0.422521713597607820f, + 0.906271767729257660f, -0.422695496802232950f, 0.906190700222840650f, + -0.422869264465553060f, + 0.906109599398381980f, -0.423043016581179040f, 0.906028465258863600f, + -0.423216753142722610f, + 0.905947297807268460f, -0.423390474143796050f, 0.905866097046580940f, + -0.423564179578011960f, + 0.905784862979786550f, -0.423737869438983840f, 0.905703595609872010f, + -0.423911543720325580f, + 0.905622294939825270f, -0.424085202415651560f, 0.905540960972635590f, + -0.424258845518576950f, + 0.905459593711293250f, -0.424432473022717420f, 0.905378193158790090f, + -0.424606084921689110f, + 0.905296759318118820f, -0.424779681209108810f, 0.905215292192273590f, + -0.424953261878593890f, + 0.905133791784249690f, -0.425126826923762360f, 0.905052258097043590f, + -0.425300376338232640f, + 0.904970691133653250f, -0.425473910115623800f, 0.904889090897077470f, + -0.425647428249555590f, + 0.904807457390316540f, -0.425820930733648240f, 0.904725790616371930f, + -0.425994417561522400f, + 0.904644090578246240f, -0.426167888726799620f, 0.904562357278943300f, + -0.426341344223101830f, + 0.904480590721468250f, -0.426514784044051520f, 0.904398790908827350f, + -0.426688208183271860f, + 0.904316957844028320f, -0.426861616634386430f, 0.904235091530079750f, + -0.427035009391019680f, + 0.904153191969991780f, -0.427208386446796320f, 0.904071259166775440f, + -0.427381747795341770f, + 0.903989293123443340f, -0.427555093430282080f, 0.903907293843009050f, + -0.427728423345243800f, + 0.903825261328487510f, -0.427901737533854080f, 0.903743195582894620f, + -0.428075035989740730f, + 0.903661096609247980f, -0.428248318706531960f, 0.903578964410566070f, + -0.428421585677856650f, + 0.903496798989868450f, -0.428594836897344400f, 0.903414600350176290f, + -0.428768072358625070f, + 0.903332368494511820f, -0.428941292055329490f, 0.903250103425898400f, + -0.429114495981088750f, + 0.903167805147360720f, -0.429287684129534610f, 0.903085473661924600f, + -0.429460856494299490f, + 0.903003108972617150f, -0.429634013069016380f, 0.902920711082466740f, + -0.429807153847318710f, + 0.902838279994502830f, -0.429980278822840620f, 0.902755815711756120f, + -0.430153387989216870f, + 0.902673318237258830f, -0.430326481340082610f, 0.902590787574043870f, + -0.430499558869073820f, + 0.902508223725145940f, -0.430672620569826800f, 0.902425626693600380f, + -0.430845666435978660f, + 0.902342996482444200f, -0.431018696461167030f, 0.902260333094715540f, + -0.431191710639029950f, + 0.902177636533453620f, -0.431364708963206330f, 0.902094906801698900f, + -0.431537691427335500f, + 0.902012143902493180f, -0.431710658025057260f, 0.901929347838879460f, + -0.431883608750012250f, + 0.901846518613901750f, -0.432056543595841500f, 0.901763656230605730f, + -0.432229462556186720f, + 0.901680760692037730f, -0.432402365624690140f, 0.901597832001245660f, + -0.432575252794994650f, + 0.901514870161278740f, -0.432748124060743700f, 0.901431875175186970f, + -0.432920979415581280f, + 0.901348847046022030f, -0.433093818853151960f, 0.901265785776836580f, + -0.433266642367100940f, + 0.901182691370684520f, -0.433439449951074090f, 0.901099563830620950f, + -0.433612241598717580f, + 0.901016403159702330f, -0.433785017303678520f, 0.900933209360986200f, + -0.433957777059604420f, + 0.900849982437531450f, -0.434130520860143310f, 0.900766722392397860f, + -0.434303248698943990f, + 0.900683429228646970f, -0.434475960569655650f, 0.900600102949340900f, + -0.434648656465928320f, + 0.900516743557543520f, -0.434821336381412290f, 0.900433351056319830f, + -0.434994000309758710f, + 0.900349925448735600f, -0.435166648244619260f, 0.900266466737858480f, + -0.435339280179646070f, + 0.900182974926756810f, -0.435511896108492000f, 0.900099450018500450f, + -0.435684496024810460f, + 0.900015892016160280f, -0.435857079922255470f, 0.899932300922808510f, + -0.436029647794481560f, + 0.899848676741518580f, -0.436202199635143950f, 0.899765019475365140f, + -0.436374735437898340f, + 0.899681329127423930f, -0.436547255196401200f, 0.899597605700772180f, + -0.436719758904309360f, + 0.899513849198487980f, -0.436892246555280360f, 0.899430059623650860f, + -0.437064718142972370f, + 0.899346236979341570f, -0.437237173661044090f, 0.899262381268642000f, + -0.437409613103154790f, + 0.899178492494635330f, -0.437582036462964400f, 0.899094570660405770f, + -0.437754443734133410f, + 0.899010615769039070f, -0.437926834910322860f, 0.898926627823621870f, + -0.438099209985194470f, + 0.898842606827242370f, -0.438271568952410430f, 0.898758552782989440f, + -0.438443911805633690f, + 0.898674465693953820f, -0.438616238538527660f, 0.898590345563227030f, + -0.438788549144756290f, + 0.898506192393901950f, -0.438960843617984320f, 0.898422006189072530f, + -0.439133121951876930f, + 0.898337786951834310f, -0.439305384140099950f, 0.898253534685283570f, + -0.439477630176319800f, + 0.898169249392518080f, -0.439649860054203480f, 0.898084931076636780f, + -0.439822073767418500f, + 0.898000579740739880f, -0.439994271309633260f, 0.897916195387928660f, + -0.440166452674516320f, + 0.897831778021305650f, -0.440338617855737250f, 0.897747327643974690f, + -0.440510766846965940f, + 0.897662844259040860f, -0.440682899641872900f, 0.897578327869610230f, + -0.440855016234129430f, + 0.897493778478790310f, -0.441027116617407230f, 0.897409196089689720f, + -0.441199200785378660f, + 0.897324580705418320f, -0.441371268731716670f, 0.897239932329087160f, + -0.441543320450094870f, + 0.897155250963808550f, -0.441715355934187310f, 0.897070536612695870f, + -0.441887375177668850f, + 0.896985789278863970f, -0.442059378174214700f, 0.896901008965428790f, + -0.442231364917500980f, + 0.896816195675507300f, -0.442403335401204080f, 0.896731349412217880f, + -0.442575289619001170f, + 0.896646470178680150f, -0.442747227564570020f, 0.896561557978014960f, + -0.442919149231588980f, + 0.896476612813344120f, -0.443091054613736880f, 0.896391634687790820f, + -0.443262943704693320f, + 0.896306623604479550f, -0.443434816498138480f, 0.896221579566536030f, + -0.443606672987752970f, + 0.896136502577086770f, -0.443778513167218220f, 0.896051392639260150f, + -0.443950337030216140f, + 0.895966249756185220f, -0.444122144570429200f, 0.895881073930992370f, + -0.444293935781540580f, + 0.895795865166813530f, -0.444465710657234000f, 0.895710623466781320f, + -0.444637469191193790f, + 0.895625348834030110f, -0.444809211377104880f, 0.895540041271694950f, + -0.444980937208652730f, + 0.895454700782912450f, -0.445152646679523640f, 0.895369327370820310f, + -0.445324339783404190f, + 0.895283921038557580f, -0.445496016513981740f, 0.895198481789264200f, + -0.445667676864944300f, + 0.895113009626081760f, -0.445839320829980290f, 0.895027504552152630f, + -0.446010948402778940f, + 0.894941966570620750f, -0.446182559577030070f, 0.894856395684631050f, + -0.446354154346423840f, + 0.894770791897329550f, -0.446525732704651350f, 0.894685155211863980f, + -0.446697294645404090f, + 0.894599485631382700f, -0.446868840162374160f, 0.894513783159035620f, + -0.447040369249254440f, + 0.894428047797973800f, -0.447211881899738320f, 0.894342279551349480f, + -0.447383378107519600f, + 0.894256478422316040f, -0.447554857866293010f, 0.894170644414028270f, + -0.447726321169753580f, + 0.894084777529641990f, -0.447897768011597310f, 0.893998877772314240f, + -0.448069198385520400f, + 0.893912945145203250f, -0.448240612285219890f, 0.893826979651468620f, + -0.448412009704393430f, + 0.893740981294271040f, -0.448583390636739240f, 0.893654950076772540f, + -0.448754755075955970f, + 0.893568886002135910f, -0.448926103015743260f, 0.893482789073525850f, + -0.449097434449801050f, + 0.893396659294107720f, -0.449268749371829920f, 0.893310496667048200f, + -0.449440047775531150f, + 0.893224301195515320f, -0.449611329654606540f, 0.893138072882678320f, + -0.449782595002758690f, + 0.893051811731707450f, -0.449953843813690520f, 0.892965517745774370f, + -0.450125076081105690f, + 0.892879190928051680f, -0.450296291798708610f, 0.892792831281713610f, + -0.450467490960204110f, + 0.892706438809935390f, -0.450638673559297600f, 0.892620013515893150f, + -0.450809839589695280f, + 0.892533555402764580f, -0.450980989045103860f, 0.892447064473728680f, + -0.451152121919230600f, + 0.892360540731965360f, -0.451323238205783520f, 0.892273984180655840f, + -0.451494337898471100f, + 0.892187394822982480f, -0.451665420991002490f, 0.892100772662129060f, + -0.451836487477087490f, + 0.892014117701280470f, -0.452007537350436420f, 0.891927429943622510f, + -0.452178570604760350f, + 0.891840709392342720f, -0.452349587233770890f, 0.891753956050629460f, + -0.452520587231180050f, + 0.891667169921672280f, -0.452691570590700920f, 0.891580351008662290f, + -0.452862537306046750f, + 0.891493499314791380f, -0.453033487370931580f, 0.891406614843252900f, + -0.453204420779070190f, + 0.891319697597241390f, -0.453375337524177750f, 0.891232747579952520f, + -0.453546237599970090f, + 0.891145764794583180f, -0.453717121000163870f, 0.891058749244331590f, + -0.453887987718476050f, + 0.890971700932396860f, -0.454058837748624430f, 0.890884619861979530f, + -0.454229671084327320f, + 0.890797506036281490f, -0.454400487719303580f, 0.890710359458505630f, + -0.454571287647272950f, + 0.890623180131855930f, -0.454742070861955450f, 0.890535968059537830f, + -0.454912837357071940f, + 0.890448723244757880f, -0.455083587126343840f, 0.890361445690723840f, + -0.455254320163493100f, + 0.890274135400644600f, -0.455425036462242360f, 0.890186792377730240f, + -0.455595736016314980f, + 0.890099416625192320f, -0.455766418819434640f, 0.890012008146243260f, + -0.455937084865326030f, + 0.889924566944096720f, -0.456107734147714110f, 0.889837093021967900f, + -0.456278366660324620f, + 0.889749586383072780f, -0.456448982396883920f, 0.889662047030628900f, + -0.456619581351118910f, + 0.889574474967854580f, -0.456790163516757160f, 0.889486870197969900f, + -0.456960728887526980f, + 0.889399232724195520f, -0.457131277457156980f, 0.889311562549753850f, + -0.457301809219376630f, + 0.889223859677868210f, -0.457472324167916060f, 0.889136124111763240f, + -0.457642822296505770f, + 0.889048355854664570f, -0.457813303598877170f, 0.888960554909799310f, + -0.457983768068762120f, + 0.888872721280395630f, -0.458154215699893060f, 0.888784854969682850f, + -0.458324646486003240f, + 0.888696955980891600f, -0.458495060420826270f, 0.888609024317253860f, + -0.458665457498096560f, + 0.888521059982002260f, -0.458835837711549120f, 0.888433062978371320f, + -0.459006201054919630f, + 0.888345033309596350f, -0.459176547521944090f, 0.888256970978913870f, + -0.459346877106359630f, + 0.888168875989561730f, -0.459517189801903480f, 0.888080748344778900f, + -0.459687485602313870f, + 0.887992588047805560f, -0.459857764501329540f, 0.887904395101883240f, + -0.460028026492689650f, + 0.887816169510254440f, -0.460198271570134320f, 0.887727911276163020f, + -0.460368499727404010f, + 0.887639620402853930f, -0.460538710958240010f, 0.887551296893573370f, + -0.460708905256384080f, + 0.887462940751568840f, -0.460879082615578690f, 0.887374551980088850f, + -0.461049243029566900f, + 0.887286130582383150f, -0.461219386492092380f, 0.887197676561702900f, + -0.461389512996899450f, + 0.887109189921300170f, -0.461559622537733080f, 0.887020670664428360f, + -0.461729715108338770f, + 0.886932118794342190f, -0.461899790702462730f, 0.886843534314297410f, + -0.462069849313851750f, + 0.886754917227550840f, -0.462239890936253340f, 0.886666267537361000f, + -0.462409915563415430f, + 0.886577585246987040f, -0.462579923189086810f, 0.886488870359689600f, + -0.462749913807016740f, + 0.886400122878730600f, -0.462919887410955080f, 0.886311342807372780f, + -0.463089843994652530f, + 0.886222530148880640f, -0.463259783551860150f, 0.886133684906519340f, + -0.463429706076329830f, + 0.886044807083555600f, -0.463599611561814010f, 0.885955896683257030f, + -0.463769500002065630f, + 0.885866953708892790f, -0.463939371390838520f, 0.885777978163732940f, + -0.464109225721886950f, + 0.885688970051048960f, -0.464279062988965760f, 0.885599929374113360f, + -0.464448883185830660f, + 0.885510856136199950f, -0.464618686306237820f, 0.885421750340583680f, + -0.464788472343943990f, + 0.885332611990540590f, -0.464958241292706690f, 0.885243441089348270f, + -0.465127993146283950f, + 0.885154237640285110f, -0.465297727898434600f, 0.885065001646630930f, + -0.465467445542917800f, + 0.884975733111666660f, -0.465637146073493660f, 0.884886432038674560f, + -0.465806829483922710f, + 0.884797098430937790f, -0.465976495767966180f, 0.884707732291741040f, + -0.466146144919385890f, + 0.884618333624369920f, -0.466315776931944430f, 0.884528902432111460f, + -0.466485391799404900f, + 0.884439438718253810f, -0.466654989515530920f, 0.884349942486086120f, + -0.466824570074086950f, + 0.884260413738899190f, -0.466994133468838000f, 0.884170852479984500f, + -0.467163679693549770f, + 0.884081258712634990f, -0.467333208741988420f, 0.883991632440144890f, + -0.467502720607920920f, + 0.883901973665809470f, -0.467672215285114770f, 0.883812282392925090f, + -0.467841692767338170f, + 0.883722558624789660f, -0.468011153048359830f, 0.883632802364701870f, + -0.468180596121949290f, + 0.883543013615961880f, -0.468350021981876530f, 0.883453192381870920f, + -0.468519430621912310f, + 0.883363338665731580f, -0.468688822035827900f, 0.883273452470847430f, + -0.468858196217395330f, + 0.883183533800523390f, -0.469027553160387130f, 0.883093582658065370f, + -0.469196892858576580f, + 0.883003599046780830f, -0.469366215305737520f, 0.882913582969978020f, + -0.469535520495644450f, + 0.882823534430966620f, -0.469704808422072460f, 0.882733453433057650f, + -0.469874079078797360f, + 0.882643339979562790f, -0.470043332459595620f, 0.882553194073795510f, + -0.470212568558244170f, + 0.882463015719070150f, -0.470381787368520650f, 0.882372804918702290f, + -0.470550988884203550f, + 0.882282561676008710f, -0.470720173099071600f, 0.882192285994307430f, + -0.470889340006904520f, + 0.882101977876917580f, -0.471058489601482500f, 0.882011637327159590f, + -0.471227621876586340f, + 0.881921264348355050f, -0.471396736825997640f, 0.881830858943826620f, + -0.471565834443498420f, + 0.881740421116898320f, -0.471734914722871430f, 0.881649950870895260f, + -0.471903977657900210f, + 0.881559448209143780f, -0.472073023242368660f, 0.881468913134971440f, + -0.472242051470061490f, + 0.881378345651706920f, -0.472411062334764040f, 0.881287745762680100f, + -0.472580055830262250f, + 0.881197113471222090f, -0.472749031950342790f, 0.881106448780665130f, + -0.472917990688792760f, + 0.881015751694342870f, -0.473086932039400050f, 0.880925022215589880f, + -0.473255855995953320f, + 0.880834260347742040f, -0.473424762552241530f, 0.880743466094136340f, + -0.473593651702054530f, + 0.880652639458111010f, -0.473762523439182850f, 0.880561780443005700f, + -0.473931377757417450f, + 0.880470889052160750f, -0.474100214650549970f, 0.880379965288918150f, + -0.474269034112372980f, + 0.880289009156621010f, -0.474437836136679230f, 0.880198020658613190f, + -0.474606620717262560f, + 0.880106999798240360f, -0.474775387847917120f, 0.880015946578849070f, + -0.474944137522437800f, + 0.879924861003786860f, -0.475112869734620300f, 0.879833743076402940f, + -0.475281584478260740f, + 0.879742592800047410f, -0.475450281747155870f, 0.879651410178071580f, + -0.475618961535103300f, + 0.879560195213827890f, -0.475787623835901120f, 0.879468947910670210f, + -0.475956268643348060f, + 0.879377668271953290f, -0.476124895951243580f, 0.879286356301033250f, + -0.476293505753387690f, + 0.879195012001267480f, -0.476462098043581190f, 0.879103635376014330f, + -0.476630672815625320f, + 0.879012226428633530f, -0.476799230063322090f, 0.878920785162485840f, + -0.476967769780474170f, + 0.878829311580933360f, -0.477136291960884810f, 0.878737805687339390f, + -0.477304796598357890f, + 0.878646267485068130f, -0.477473283686698060f, 0.878554696977485450f, + -0.477641753219710470f, + 0.878463094167957870f, -0.477810205191200990f, 0.878371459059853480f, + -0.477978639594976160f, + 0.878279791656541580f, -0.478147056424843010f, 0.878188091961392250f, + -0.478315455674609480f, + 0.878096359977777130f, -0.478483837338083970f, 0.878004595709069080f, + -0.478652201409075500f, + 0.877912799158641840f, -0.478820547881393890f, 0.877820970329870500f, + -0.478988876748849490f, + 0.877729109226131570f, -0.479157188005253310f, 0.877637215850802230f, + -0.479325481644417070f, + 0.877545290207261350f, -0.479493757660153010f, 0.877453332298888560f, + -0.479662016046274180f, + 0.877361342129065140f, -0.479830256796594190f, 0.877269319701173170f, + -0.479998479904927280f, + 0.877177265018595940f, -0.480166685365088390f, 0.877085178084718420f, + -0.480334873170893020f, + 0.876993058902925890f, -0.480503043316157510f, 0.876900907476605650f, + -0.480671195794698640f, + 0.876808723809145650f, -0.480839330600333960f, 0.876716507903935400f, + -0.481007447726881590f, + 0.876624259764365310f, -0.481175547168160300f, 0.876531979393827100f, + -0.481343628917989710f, + 0.876439666795713610f, -0.481511692970189860f, 0.876347321973419020f, + -0.481679739318581490f, + 0.876254944930338510f, -0.481847767956986030f, 0.876162535669868460f, + -0.482015778879225590f, + 0.876070094195406600f, -0.482183772079122720f, 0.875977620510351770f, + -0.482351747550500980f, + 0.875885114618103810f, -0.482519705287184350f, 0.875792576522063880f, + -0.482687645282997460f, + 0.875700006225634600f, -0.482855567531765670f, 0.875607403732219350f, + -0.483023472027314880f, + 0.875514769045222850f, -0.483191358763471860f, 0.875422102168050940f, + -0.483359227734063810f, + 0.875329403104110890f, -0.483527078932918740f, 0.875236671856810870f, + -0.483694912353865140f, + 0.875143908429560360f, -0.483862727990732270f, 0.875051112825769970f, + -0.484030525837350010f, + 0.874958285048851650f, -0.484198305887549030f, 0.874865425102218320f, + -0.484366068135160420f, + 0.874772532989284150f, -0.484533812574016180f, 0.874679608713464510f, + -0.484701539197948670f, + 0.874586652278176110f, -0.484869248000791060f, 0.874493663686836560f, + -0.485036938976377290f, + 0.874400642942864790f, -0.485204612118541820f, 0.874307590049680950f, + -0.485372267421119770f, + 0.874214505010706300f, -0.485539904877946960f, 0.874121387829363330f, + -0.485707524482859750f, + 0.874028238509075740f, -0.485875126229695250f, 0.873935057053268240f, + -0.486042710112291330f, + 0.873841843465366860f, -0.486210276124486420f, 0.873748597748798870f, + -0.486377824260119440f, + 0.873655319906992630f, -0.486545354513030270f, 0.873562009943377850f, + -0.486712866877059170f, + 0.873468667861384880f, -0.486880361346047340f, 0.873375293664446000f, + -0.487047837913836380f, + 0.873281887355994210f, -0.487215296574268760f, 0.873188448939463790f, + -0.487382737321187360f, + 0.873094978418290090f, -0.487550160148436000f, 0.873001475795909920f, + -0.487717565049858800f, + 0.872907941075761080f, -0.487884952019301040f, 0.872814374261282390f, + -0.488052321050608250f, + 0.872720775355914300f, -0.488219672137626790f, 0.872627144363097960f, + -0.488387005274203530f, + 0.872533481286276170f, -0.488554320454186180f, 0.872439786128892280f, + -0.488721617671423080f, + 0.872346058894391540f, -0.488888896919763170f, 0.872252299586219860f, + -0.489056158193056030f, + 0.872158508207824480f, -0.489223401485151980f, 0.872064684762653860f, + -0.489390626789901920f, + 0.871970829254157810f, -0.489557834101157440f, 0.871876941685786890f, + -0.489725023412770910f, + 0.871783022060993120f, -0.489892194718595190f, 0.871689070383229740f, + -0.490059348012483850f, + 0.871595086655950980f, -0.490226483288291160f, 0.871501070882612530f, + -0.490393600539871970f, + 0.871407023066670950f, -0.490560699761082020f, 0.871312943211584030f, + -0.490727780945777400f, + 0.871218831320811020f, -0.490894844087815090f, 0.871124687397811900f, + -0.491061889181052650f, + 0.871030511446048260f, -0.491228916219348280f, 0.870936303468982760f, + -0.491395925196560780f, + 0.870842063470078980f, -0.491562916106549900f, 0.870747791452801790f, + -0.491729888943175760f, + 0.870653487420617430f, -0.491896843700299290f, 0.870559151376993250f, + -0.492063780371782000f, + 0.870464783325397670f, -0.492230698951486020f, 0.870370383269300270f, + -0.492397599433274380f, + 0.870275951212171940f, -0.492564481811010590f, 0.870181487157484560f, + -0.492731346078558840f, + 0.870086991108711460f, -0.492898192229784040f, 0.869992463069326870f, + -0.493065020258551700f, + 0.869897903042806340f, -0.493231830158727900f, 0.869803311032626650f, + -0.493398621924179770f, + 0.869708687042265670f, -0.493565395548774770f, 0.869614031075202300f, + -0.493732151026381020f, + 0.869519343134916860f, -0.493898888350867480f, 0.869424623224890890f, + -0.494065607516103570f, + 0.869329871348606840f, -0.494232308515959670f, 0.869235087509548370f, + -0.494398991344306650f, + 0.869140271711200560f, -0.494565655995015950f, 0.869045423957049530f, + -0.494732302461959870f, + 0.868950544250582380f, -0.494898930739011260f, 0.868855632595287860f, + -0.495065540820043560f, + 0.868760688994655310f, -0.495232132698931180f, 0.868665713452175690f, + -0.495398706369549020f, + 0.868570705971340900f, -0.495565261825772540f, 0.868475666555644120f, + -0.495731799061477960f, + 0.868380595208579800f, -0.495898318070542190f, 0.868285491933643350f, + -0.496064818846842890f, + 0.868190356734331310f, -0.496231301384258250f, 0.868095189614141670f, + -0.496397765676667160f, + 0.867999990576573510f, -0.496564211717949290f, 0.867904759625126920f, + -0.496730639501984760f, + 0.867809496763303320f, -0.496897049022654470f, 0.867714201994605140f, + -0.497063440273840250f, + 0.867618875322536230f, -0.497229813249424220f, 0.867523516750601460f, + -0.497396167943289280f, + 0.867428126282306920f, -0.497562504349319150f, 0.867332703921159800f, + -0.497728822461397940f, + 0.867237249670668400f, -0.497895122273410870f, 0.867141763534342470f, + -0.498061403779243410f, + 0.867046245515692650f, -0.498227666972781870f, 0.866950695618230900f, + -0.498393911847913210f, + 0.866855113845470430f, -0.498560138398525140f, 0.866759500200925400f, + -0.498726346618505900f, + 0.866663854688111130f, -0.498892536501744590f, 0.866568177310544470f, + -0.499058708042130870f, + 0.866472468071743050f, -0.499224861233555080f, 0.866376726975225830f, + -0.499390996069908170f, + 0.866280954024512990f, -0.499557112545081840f, 0.866185149223125840f, + -0.499723210652968540f, + 0.866089312574586770f, -0.499889290387461330f, 0.865993444082419520f, + -0.500055351742453860f, + 0.865897543750148820f, -0.500221394711840680f, 0.865801611581300760f, + -0.500387419289516580f, + 0.865705647579402380f, -0.500553425469377420f, 0.865609651747981990f, + -0.500719413245319880f, + 0.865513624090569090f, -0.500885382611240710f, 0.865417564610694410f, + -0.501051333561038040f, + 0.865321473311889800f, -0.501217266088609950f, 0.865225350197688200f, + -0.501383180187855770f, + 0.865129195271623800f, -0.501549075852675390f, 0.865033008537231860f, + -0.501714953076969120f, + 0.864936789998049020f, -0.501880811854638290f, 0.864840539657612870f, + -0.502046652179584660f, + 0.864744257519462380f, -0.502212474045710790f, 0.864647943587137480f, + -0.502378277446919760f, + 0.864551597864179340f, -0.502544062377115690f, 0.864455220354130360f, + -0.502709828830202990f, + 0.864358811060534030f, -0.502875576800086990f, 0.864262369986934950f, + -0.503041306280673450f, + 0.864165897136879300f, -0.503207017265868920f, 0.864069392513913790f, + -0.503372709749581040f, + 0.863972856121586810f, -0.503538383725717580f, 0.863876287963447510f, + -0.503704039188187070f, + 0.863779688043046720f, -0.503869676130898950f, 0.863683056363935830f, + -0.504035294547763190f, + 0.863586392929668100f, -0.504200894432690340f, 0.863489697743797140f, + -0.504366475779592040f, + 0.863392970809878420f, -0.504532038582380270f, 0.863296212131468230f, + -0.504697582834967570f, + 0.863199421712124160f, -0.504863108531267590f, 0.863102599555404910f, + -0.505028615665194080f, + 0.863005745664870320f, -0.505194104230662240f, 0.862908860044081400f, + -0.505359574221587280f, + 0.862811942696600330f, -0.505525025631885390f, 0.862714993625990690f, + -0.505690458455473450f, + 0.862618012835816740f, -0.505855872686268860f, 0.862521000329644520f, + -0.506021268318189720f, + 0.862423956111040610f, -0.506186645345155230f, 0.862326880183573060f, + -0.506352003761084800f, + 0.862229772550811240f, -0.506517343559898530f, 0.862132633216325380f, + -0.506682664735517600f, + 0.862035462183687210f, -0.506847967281863210f, 0.861938259456469290f, + -0.507013251192858230f, + 0.861841025038245330f, -0.507178516462425180f, 0.861743758932590700f, + -0.507343763084487920f, + 0.861646461143081300f, -0.507508991052970870f, 0.861549131673294720f, + -0.507674200361798890f, + 0.861451770526809320f, -0.507839391004897720f, 0.861354377707204910f, + -0.508004562976194010f, + 0.861256953218062170f, -0.508169716269614600f, 0.861159497062963350f, + -0.508334850879087360f, + 0.861062009245491480f, -0.508499966798540930f, 0.860964489769231010f, + -0.508665064021904030f, + 0.860866938637767310f, -0.508830142543106990f, 0.860769355854687170f, + -0.508995202356080090f, + 0.860671741423578380f, -0.509160243454754640f, 0.860574095348029980f, + -0.509325265833062480f, + 0.860476417631632070f, -0.509490269484936360f, 0.860378708277976130f, + -0.509655254404309250f, + 0.860280967290654510f, -0.509820220585115450f, 0.860183194673260990f, + -0.509985168021289460f, + 0.860085390429390140f, -0.510150096706766810f, 0.859987554562638200f, + -0.510315006635483240f, + 0.859889687076602290f, -0.510479897801375700f, 0.859791787974880650f, + -0.510644770198381610f, + 0.859693857261072610f, -0.510809623820439040f, 0.859595894938779080f, + -0.510974458661486830f, + 0.859497901011601730f, -0.511139274715464390f, 0.859399875483143450f, + -0.511304071976312000f, + 0.859301818357008470f, -0.511468850437970300f, 0.859203729636801920f, + -0.511633610094381240f, + 0.859105609326130450f, -0.511798350939486890f, 0.859007457428601520f, + -0.511963072967230200f, + 0.858909273947823900f, -0.512127776171554690f, 0.858811058887407610f, + -0.512292460546404870f, + 0.858712812250963520f, -0.512457126085725690f, 0.858614534042104190f, + -0.512621772783462990f, + 0.858516224264442740f, -0.512786400633562960f, 0.858417882921593930f, + -0.512951009629972980f, + 0.858319510017173440f, -0.513115599766640560f, 0.858221105554798250f, + -0.513280171037514220f, + 0.858122669538086140f, -0.513444723436543460f, 0.858024201970656540f, + -0.513609256957677780f, + 0.857925702856129790f, -0.513773771594868030f, 0.857827172198127430f, + -0.513938267342065380f, + 0.857728610000272120f, -0.514102744193221660f, 0.857630016266187620f, + -0.514267202142289710f, + 0.857531390999499150f, -0.514431641183222820f, 0.857432734203832700f, + -0.514596061309975040f, + 0.857334045882815590f, -0.514760462516501200f, 0.857235326040076460f, + -0.514924844796756490f, + 0.857136574679244980f, -0.515089208144697160f, 0.857037791803951680f, + -0.515253552554280180f, + 0.856938977417828760f, -0.515417878019462930f, 0.856840131524509220f, + -0.515582184534203790f, + 0.856741254127627470f, -0.515746472092461380f, 0.856642345230818840f, + -0.515910740688195650f, + 0.856543404837719960f, -0.516074990315366630f, 0.856444432951968590f, + -0.516239220967935510f, + 0.856345429577203610f, -0.516403432639863990f, 0.856246394717065210f, + -0.516567625325114350f, + 0.856147328375194470f, -0.516731799017649870f, 0.856048230555233940f, + -0.516895953711434150f, + 0.855949101260826910f, -0.517060089400431910f, 0.855849940495618240f, + -0.517224206078608310f, + 0.855750748263253920f, -0.517388303739929060f, 0.855651524567380690f, + -0.517552382378360880f, + 0.855552269411646860f, -0.517716441987871150f, 0.855452982799701830f, + -0.517880482562427690f, + 0.855353664735196030f, -0.518044504095999340f, 0.855254315221780970f, + -0.518208506582555460f, + 0.855154934263109620f, -0.518372490016066110f, 0.855055521862835950f, + -0.518536454390502220f, + 0.854956078024614930f, -0.518700399699834950f, 0.854856602752102850f, + -0.518864325938036890f, + 0.854757096048957220f, -0.519028233099080860f, 0.854657557918836460f, + -0.519192121176940250f, + 0.854557988365400530f, -0.519355990165589640f, 0.854458387392310170f, + -0.519519840059003760f, + 0.854358755003227440f, -0.519683670851158410f, 0.854259091201815530f, + -0.519847482536030190f, + 0.854159395991738850f, -0.520011275107596040f, 0.854059669376662780f, + -0.520175048559833760f, + 0.853959911360254180f, -0.520338802886721960f, 0.853860121946180770f, + -0.520502538082239670f, + 0.853760301138111410f, -0.520666254140367160f, 0.853660448939716380f, + -0.520829951055084670f, + 0.853560565354666840f, -0.520993628820373920f, 0.853460650386635320f, + -0.521157287430216610f, + 0.853360704039295430f, -0.521320926878595660f, 0.853260726316321880f, + -0.521484547159494330f, + 0.853160717221390420f, -0.521648148266897090f, 0.853060676758178320f, + -0.521811730194788550f, + 0.852960604930363630f, -0.521975292937154390f, 0.852860501741625750f, + -0.522138836487980760f, + 0.852760367195645300f, -0.522302360841254590f, 0.852660201296103760f, + -0.522465865990963780f, + 0.852560004046684080f, -0.522629351931096610f, 0.852459775451070100f, + -0.522792818655642090f, + 0.852359515512947090f, -0.522956266158590140f, 0.852259224236001090f, + -0.523119694433931250f, + 0.852158901623919830f, -0.523283103475656430f, 0.852058547680391690f, + -0.523446493277757830f, + 0.851958162409106380f, -0.523609863834227920f, 0.851857745813754840f, + -0.523773215139060170f, + 0.851757297898029120f, -0.523936547186248600f, 0.851656818665622370f, + -0.524099859969787700f, + 0.851556308120228980f, -0.524263153483673360f, 0.851455766265544310f, + -0.524426427721901400f, + 0.851355193105265200f, -0.524589682678468950f, 0.851254588643089120f, + -0.524752918347373360f, + 0.851153952882715340f, -0.524916134722613000f, 0.851053285827843790f, + -0.525079331798186780f, + 0.850952587482175730f, -0.525242509568094710f, 0.850851857849413530f, + -0.525405668026336930f, + 0.850751096933260790f, -0.525568807166914680f, 0.850650304737422090f, + -0.525731926983829760f, + 0.850549481265603480f, -0.525895027471084630f, 0.850448626521511760f, + -0.526058108622682760f, + 0.850347740508854980f, -0.526221170432628060f, 0.850246823231342710f, + -0.526384212894925100f, + 0.850145874692685210f, -0.526547236003579440f, 0.850044894896594180f, + -0.526710239752597010f, + 0.849943883846782210f, -0.526873224135984590f, 0.849842841546963320f, + -0.527036189147750080f, + 0.849741768000852550f, -0.527199134781901280f, 0.849640663212165910f, + -0.527362061032447540f, + 0.849539527184620890f, -0.527524967893398200f, 0.849438359921936060f, + -0.527687855358763720f, + 0.849337161427830780f, -0.527850723422555230f, 0.849235931706025960f, + -0.528013572078784630f, + 0.849134670760243630f, -0.528176401321464370f, 0.849033378594206800f, + -0.528339211144607690f, + 0.848932055211639610f, -0.528502001542228480f, 0.848830700616267530f, + -0.528664772508341320f, + 0.848729314811817130f, -0.528827524036961870f, 0.848627897802015860f, + -0.528990256122106040f, + 0.848526449590592650f, -0.529152968757790610f, 0.848424970181277600f, + -0.529315661938033260f, + 0.848323459577801640f, -0.529478335656851980f, 0.848221917783896990f, + -0.529640989908265910f, + 0.848120344803297230f, -0.529803624686294610f, 0.848018740639736810f, + -0.529966239984958620f, + 0.847917105296951410f, -0.530128835798278960f, 0.847815438778677930f, + -0.530291412120277310f, + 0.847713741088654380f, -0.530453968944976320f, 0.847612012230619660f, + -0.530616506266399330f, + 0.847510252208314330f, -0.530779024078570140f, 0.847408461025479730f, + -0.530941522375513620f, + 0.847306638685858320f, -0.531104001151255000f, 0.847204785193194090f, + -0.531266460399820390f, + 0.847102900551231500f, -0.531428900115236800f, 0.847000984763716880f, + -0.531591320291531670f, + 0.846899037834397240f, -0.531753720922733320f, 0.846797059767020910f, + -0.531916102002870650f, + 0.846695050565337450f, -0.532078463525973540f, 0.846593010233097190f, + -0.532240805486072220f, + 0.846490938774052130f, -0.532403127877197900f, 0.846388836191954930f, + -0.532565430693382580f, + 0.846286702490559710f, -0.532727713928658810f, 0.846184537673621560f, + -0.532889977577059800f, + 0.846082341744897050f, -0.533052221632619450f, 0.845980114708143270f, + -0.533214446089372960f, + 0.845877856567119000f, -0.533376650941355330f, 0.845775567325584010f, + -0.533538836182603120f, + 0.845673246987299070f, -0.533701001807152960f, 0.845570895556026270f, + -0.533863147809042650f, + 0.845468513035528830f, -0.534025274182310380f, 0.845366099429570970f, + -0.534187380920995380f, + 0.845263654741918220f, -0.534349468019137520f, 0.845161178976337140f, + -0.534511535470777120f, + 0.845058672136595470f, -0.534673583269955510f, 0.844956134226462210f, + -0.534835611410714560f, + 0.844853565249707120f, -0.534997619887097150f, 0.844750965210101510f, + -0.535159608693146600f, + 0.844648334111417820f, -0.535321577822907120f, 0.844545671957429240f, + -0.535483527270423370f, + 0.844442978751910660f, -0.535645457029741090f, 0.844340254498637590f, + -0.535807367094906390f, + 0.844237499201387020f, -0.535969257459966710f, 0.844134712863936930f, + -0.536131128118969460f, + 0.844031895490066410f, -0.536292979065963180f, 0.843929047083555870f, + -0.536454810294997090f, + 0.843826167648186740f, -0.536616621800121040f, 0.843723257187741660f, + -0.536778413575385920f, + 0.843620315706004150f, -0.536940185614842910f, 0.843517343206759200f, + -0.537101937912544130f, + 0.843414339693792760f, -0.537263670462542530f, 0.843311305170892140f, + -0.537425383258891550f, + 0.843208239641845440f, -0.537587076295645390f, 0.843105143110442160f, + -0.537748749566859360f, + 0.843002015580472940f, -0.537910403066588880f, 0.842898857055729310f, + -0.538072036788890600f, + 0.842795667540004120f, -0.538233650727821700f, 0.842692447037091670f, + -0.538395244877439950f, + 0.842589195550786710f, -0.538556819231804100f, 0.842485913084885630f, + -0.538718373784973560f, + 0.842382599643185850f, -0.538879908531008420f, 0.842279255229485990f, + -0.539041423463969440f, + 0.842175879847585570f, -0.539202918577918240f, 0.842072473501285560f, + -0.539364393866917040f, + 0.841969036194387680f, -0.539525849325028890f, 0.841865567930695340f, + -0.539687284946317570f, + 0.841762068714012490f, -0.539848700724847590f, 0.841658538548144760f, + -0.540010096654684020f, + 0.841554977436898440f, -0.540171472729892850f, 0.841451385384081260f, + -0.540332828944540710f, + 0.841347762393501950f, -0.540494165292695230f, 0.841244108468970580f, + -0.540655481768424150f, + 0.841140423614298080f, -0.540816778365796670f, 0.841036707833296650f, + -0.540978055078882080f, + 0.840932961129779780f, -0.541139311901750800f, 0.840829183507561640f, + -0.541300548828474120f, + 0.840725374970458070f, -0.541461765853123440f, 0.840621535522285690f, + -0.541622962969771530f, + 0.840517665166862550f, -0.541784140172491550f, 0.840413763908007480f, + -0.541945297455357360f, + 0.840309831749540770f, -0.542106434812443920f, 0.840205868695283580f, + -0.542267552237826520f, + 0.840101874749058400f, -0.542428649725581250f, 0.839997849914688840f, + -0.542589727269785270f, + 0.839893794195999520f, -0.542750784864515890f, 0.839789707596816370f, + -0.542911822503851730f, + 0.839685590120966110f, -0.543072840181871740f, 0.839581441772277120f, + -0.543233837892655890f, + 0.839477262554578550f, -0.543394815630284800f, 0.839373052471700690f, + -0.543555773388839540f, + 0.839268811527475230f, -0.543716711162402280f, 0.839164539725734680f, + -0.543877628945055980f, + 0.839060237070312740f, -0.544038526730883820f, 0.838955903565044460f, + -0.544199404513970310f, + 0.838851539213765760f, -0.544360262288400400f, 0.838747144020313920f, + -0.544521100048259600f, + 0.838642717988527300f, -0.544681917787634530f, 0.838538261122245280f, + -0.544842715500612360f, + 0.838433773425308340f, -0.545003493181281160f, 0.838329254901558300f, + -0.545164250823729320f, + 0.838224705554838080f, -0.545324988422046460f, 0.838120125388991500f, + -0.545485705970322530f, + 0.838015514407863820f, -0.545646403462648590f, 0.837910872615301170f, + -0.545807080893116140f, + 0.837806200015150940f, -0.545967738255817570f, 0.837701496611261700f, + -0.546128375544845950f, + 0.837596762407483040f, -0.546288992754295210f, 0.837491997407665890f, + -0.546449589878259650f, + 0.837387201615661940f, -0.546610166910834860f, 0.837282375035324320f, + -0.546770723846116800f, + 0.837177517670507300f, -0.546931260678202190f, 0.837072629525066000f, + -0.547091777401188530f, + 0.836967710602857020f, -0.547252274009174090f, 0.836862760907737920f, + -0.547412750496257930f, + 0.836757780443567190f, -0.547573206856539760f, 0.836652769214204950f, + -0.547733643084120090f, + 0.836547727223512010f, -0.547894059173100190f, 0.836442654475350380f, + -0.548054455117581880f, + 0.836337550973583530f, -0.548214830911667780f, 0.836232416722075600f, + -0.548375186549461600f, + 0.836127251724692270f, -0.548535522025067390f, 0.836022055985299880f, + -0.548695837332590090f, + 0.835916829507766360f, -0.548856132466135290f, 0.835811572295960700f, + -0.549016407419809390f, + 0.835706284353752600f, -0.549176662187719660f, 0.835600965685013410f, + -0.549336896763974010f, + 0.835495616293615350f, -0.549497111142680960f, 0.835390236183431890f, + -0.549657305317949870f, + 0.835284825358337370f, -0.549817479283890910f, 0.835179383822207690f, + -0.549977633034614890f, + 0.835073911578919410f, -0.550137766564233630f, 0.834968408632350450f, + -0.550297879866859190f, + 0.834862874986380010f, -0.550457972936604810f, 0.834757310644888230f, + -0.550618045767584330f, + 0.834651715611756440f, -0.550778098353912120f, 0.834546089890866870f, + -0.550938130689703880f, + 0.834440433486103190f, -0.551098142769075430f, 0.834334746401350080f, + -0.551258134586143590f, + 0.834229028640493420f, -0.551418106135026060f, 0.834123280207420100f, + -0.551578057409841000f, + 0.834017501106018130f, -0.551737988404707340f, 0.833911691340176840f, + -0.551897899113745210f, + 0.833805850913786340f, -0.552057789531074980f, 0.833699979830738290f, + -0.552217659650817930f, + 0.833594078094925140f, -0.552377509467096070f, 0.833488145710240770f, + -0.552537338974032120f, + 0.833382182680579730f, -0.552697148165749770f, 0.833276189009838240f, + -0.552856937036373290f, + 0.833170164701913190f, -0.553016705580027470f, 0.833064109760702890f, + -0.553176453790838350f, + 0.832958024190106670f, -0.553336181662932300f, 0.832851907994025090f, + -0.553495889190436570f, + 0.832745761176359460f, -0.553655576367479310f, 0.832639583741012770f, + -0.553815243188189090f, + 0.832533375691888680f, -0.553974889646695500f, 0.832427137032892280f, + -0.554134515737128910f, + 0.832320867767929680f, -0.554294121453620000f, 0.832214567900907980f, + -0.554453706790300930f, + 0.832108237435735590f, -0.554613271741304040f, 0.832001876376321950f, + -0.554772816300762470f, + 0.831895484726577590f, -0.554932340462810370f, 0.831789062490414400f, + -0.555091844221582420f, + 0.831682609671745120f, -0.555251327571213980f, 0.831576126274483740f, + -0.555410790505841630f, + 0.831469612302545240f, -0.555570233019602180f, 0.831363067759845920f, + -0.555729655106633410f, + 0.831256492650303210f, -0.555889056761073810f, 0.831149886977835540f, + -0.556048437977062600f, + 0.831043250746362320f, -0.556207798748739930f, 0.830936583959804410f, + -0.556367139070246370f, + 0.830829886622083570f, -0.556526458935723610f, 0.830723158737122880f, + -0.556685758339313890f, + 0.830616400308846310f, -0.556845037275160100f, 0.830509611341179070f, + -0.557004295737405950f, + 0.830402791838047550f, -0.557163533720196220f, 0.830295941803379070f, + -0.557322751217676160f, + 0.830189061241102370f, -0.557481948223991550f, 0.830082150155146970f, + -0.557641124733289420f, + 0.829975208549443950f, -0.557800280739716990f, 0.829868236427924840f, + -0.557959416237422960f, + 0.829761233794523050f, -0.558118531220556100f, 0.829654200653172640f, + -0.558277625683266330f, + 0.829547137007808910f, -0.558436699619704100f, 0.829440042862368170f, + -0.558595753024020760f, + 0.829332918220788250f, -0.558754785890368310f, 0.829225763087007570f, + -0.558913798212899770f, + 0.829118577464965980f, -0.559072789985768480f, 0.829011361358604430f, + -0.559231761203128900f, + 0.828904114771864870f, -0.559390711859136140f, 0.828796837708690610f, + -0.559549641947945760f, + 0.828689530173025820f, -0.559708551463714680f, 0.828582192168815790f, + -0.559867440400600210f, + 0.828474823700007130f, -0.560026308752760380f, 0.828367424770547480f, + -0.560185156514354080f, + 0.828259995384385660f, -0.560343983679540860f, 0.828152535545471410f, + -0.560502790242481060f, + 0.828045045257755800f, -0.560661576197336030f, 0.827937524525190870f, + -0.560820341538267430f, + 0.827829973351729920f, -0.560979086259438150f, 0.827722391741327220f, + -0.561137810355011420f, + 0.827614779697938400f, -0.561296513819151470f, 0.827507137225519830f, + -0.561455196646023280f, + 0.827399464328029470f, -0.561613858829792420f, 0.827291761009425810f, + -0.561772500364625340f, + 0.827184027273669130f, -0.561931121244689470f, 0.827076263124720270f, + -0.562089721464152480f, + 0.826968468566541600f, -0.562248301017183150f, 0.826860643603096190f, + -0.562406859897951140f, + 0.826752788238348520f, -0.562565398100626560f, 0.826644902476264320f, + -0.562723915619380400f, + 0.826536986320809960f, -0.562882412448384440f, 0.826429039775953500f, + -0.563040888581811230f, + 0.826321062845663530f, -0.563199344013834090f, 0.826213055533910220f, + -0.563357778738627020f, + 0.826105017844664610f, -0.563516192750364800f, 0.825996949781899080f, + -0.563674586043223070f, + 0.825888851349586780f, -0.563832958611378170f, 0.825780722551702430f, + -0.563991310449006970f, + 0.825672563392221390f, -0.564149641550287680f, 0.825564373875120490f, + -0.564307951909398640f, + 0.825456154004377550f, -0.564466241520519500f, 0.825347903783971380f, + -0.564624510377830120f, + 0.825239623217882250f, -0.564782758475511400f, 0.825131312310091070f, + -0.564940985807745210f, + 0.825022971064580220f, -0.565099192368713980f, 0.824914599485333190f, + -0.565257378152600800f, + 0.824806197576334330f, -0.565415543153589660f, 0.824697765341569470f, + -0.565573687365865330f, + 0.824589302785025290f, -0.565731810783613120f, 0.824480809910689500f, + -0.565889913401019570f, + 0.824372286722551250f, -0.566047995212271450f, 0.824263733224600560f, + -0.566206056211556730f, + 0.824155149420828570f, -0.566364096393063840f, 0.824046535315227760f, + -0.566522115750982100f, + 0.823937890911791370f, -0.566680114279501600f, 0.823829216214513990f, + -0.566838091972813320f, + 0.823720511227391430f, -0.566996048825108680f, 0.823611775954420260f, + -0.567153984830580100f, + 0.823503010399598500f, -0.567311899983420800f, 0.823394214566925080f, + -0.567469794277824510f, + 0.823285388460400110f, -0.567627667707986230f, 0.823176532084024860f, + -0.567785520268101140f, + 0.823067645441801670f, -0.567943351952365560f, 0.822958728537734000f, + -0.568101162754976460f, + 0.822849781375826430f, -0.568258952670131490f, 0.822740803960084420f, + -0.568416721692029280f, + 0.822631796294514990f, -0.568574469814869140f, 0.822522758383125940f, + -0.568732197032851050f, + 0.822413690229926390f, -0.568889903340175860f, 0.822304591838926350f, + -0.569047588731045110f, + 0.822195463214137170f, -0.569205253199661200f, 0.822086304359571090f, + -0.569362896740227220f, + 0.821977115279241550f, -0.569520519346947140f, 0.821867895977163250f, + -0.569678121014025600f, + 0.821758646457351750f, -0.569835701735668000f, 0.821649366723823940f, + -0.569993261506080540f, + 0.821540056780597610f, -0.570150800319470300f, 0.821430716631691870f, + -0.570308318170044900f, + 0.821321346281126740f, -0.570465815052012990f, 0.821211945732923550f, + -0.570623290959583750f, + 0.821102514991104650f, -0.570780745886967260f, 0.820993054059693580f, + -0.570938179828374360f, + 0.820883562942714580f, -0.571095592778016690f, 0.820774041644193650f, + -0.571252984730106660f, + 0.820664490168157460f, -0.571410355678857230f, 0.820554908518633890f, + -0.571567705618482580f, + 0.820445296699652050f, -0.571725034543197120f, 0.820335654715241840f, + -0.571882342447216590f, + 0.820225982569434690f, -0.572039629324757050f, 0.820116280266262820f, + -0.572196895170035580f, + 0.820006547809759680f, -0.572354139977269920f, 0.819896785203959810f, + -0.572511363740678790f, + 0.819786992452898990f, -0.572668566454481160f, 0.819677169560613870f, + -0.572825748112897550f, + 0.819567316531142230f, -0.572982908710148560f, 0.819457433368523280f, + -0.573140048240455950f, + 0.819347520076796900f, -0.573297166698042200f, 0.819237576660004520f, + -0.573454264077130400f, + 0.819127603122188240f, -0.573611340371944610f, 0.819017599467391500f, + -0.573768395576709560f, + 0.818907565699658950f, -0.573925429685650750f, 0.818797501823036010f, + -0.574082442692994470f, + 0.818687407841569680f, -0.574239434592967890f, 0.818577283759307610f, + -0.574396405379798750f, + 0.818467129580298660f, -0.574553355047715760f, 0.818356945308593150f, + -0.574710283590948330f, + 0.818246730948242070f, -0.574867191003726740f, 0.818136486503297730f, + -0.575024077280281710f, + 0.818026211977813440f, -0.575180942414845080f, 0.817915907375843850f, + -0.575337786401649450f, + 0.817805572701444270f, -0.575494609234928120f, 0.817695207958671680f, + -0.575651410908915140f, + 0.817584813151583710f, -0.575808191417845340f, 0.817474388284239240f, + -0.575964950755954220f, + 0.817363933360698460f, -0.576121688917478280f, 0.817253448385022340f, + -0.576278405896654910f, + 0.817142933361272970f, -0.576435101687721830f, 0.817032388293513880f, + -0.576591776284917760f, + 0.816921813185809480f, -0.576748429682482410f, 0.816811208042225290f, + -0.576905061874655960f, + 0.816700572866827850f, -0.577061672855679440f, 0.816589907663684890f, + -0.577218262619794920f, + 0.816479212436865390f, -0.577374831161244880f, 0.816368487190439200f, + -0.577531378474272720f, + 0.816257731928477390f, -0.577687904553122800f, 0.816146946655052270f, + -0.577844409392039850f, + 0.816036131374236810f, -0.578000892985269910f, 0.815925286090105510f, + -0.578157355327059360f, + 0.815814410806733780f, -0.578313796411655590f, 0.815703505528198260f, + -0.578470216233306630f, + 0.815592570258576790f, -0.578626614786261430f, 0.815481605001947770f, + -0.578782992064769690f, + 0.815370609762391290f, -0.578939348063081780f, 0.815259584543988280f, + -0.579095682775449090f, + 0.815148529350820830f, -0.579251996196123550f, 0.815037444186972220f, + -0.579408288319357870f, + 0.814926329056526620f, -0.579564559139405630f, 0.814815183963569440f, + -0.579720808650521450f, + 0.814704008912187080f, -0.579877036846960350f, 0.814592803906467270f, + -0.580033243722978150f, + 0.814481568950498610f, -0.580189429272831680f, 0.814370304048371070f, + -0.580345593490778300f, + 0.814259009204175270f, -0.580501736371076490f, 0.814147684422003360f, + -0.580657857907985300f, + 0.814036329705948410f, -0.580813958095764530f, 0.813924945060104600f, + -0.580970036928674770f, + 0.813813530488567190f, -0.581126094400977620f, 0.813702085995432700f, + -0.581282130506935000f, + 0.813590611584798510f, -0.581438145240810170f, 0.813479107260763220f, + -0.581594138596866930f, + 0.813367573027426570f, -0.581750110569369650f, 0.813256008888889380f, + -0.581906061152583810f, + 0.813144414849253590f, -0.582061990340775440f, 0.813032790912622040f, + -0.582217898128211670f, + 0.812921137083098770f, -0.582373784509160110f, 0.812809453364789270f, + -0.582529649477889320f, + 0.812697739761799490f, -0.582685493028668460f, 0.812585996278237130f, + -0.582841315155767650f, + 0.812474222918210480f, -0.582997115853457700f, 0.812362419685829230f, + -0.583152895116010430f, + 0.812250586585203880f, -0.583308652937698290f, 0.812138723620446480f, + -0.583464389312794320f, + 0.812026830795669730f, -0.583620104235572760f, 0.811914908114987790f, + -0.583775797700308070f, + 0.811802955582515470f, -0.583931469701276180f, 0.811690973202369050f, + -0.584087120232753440f, + 0.811578960978665890f, -0.584242749289016980f, 0.811466918915524250f, + -0.584398356864344600f, + 0.811354847017063730f, -0.584553942953015330f, 0.811242745287404810f, + -0.584709507549308390f, + 0.811130613730669190f, -0.584865050647504490f, 0.811018452350979470f, + -0.585020572241884530f, + 0.810906261152459670f, -0.585176072326730410f, 0.810794040139234730f, + -0.585331550896324940f, + 0.810681789315430780f, -0.585487007944951340f, 0.810569508685174630f, + -0.585642443466894420f, + 0.810457198252594770f, -0.585797857456438860f, 0.810344858021820550f, + -0.585953249907870570f, + 0.810232487996982330f, -0.586108620815476430f, 0.810120088182211600f, + -0.586263970173543590f, + 0.810007658581641140f, -0.586419297976360500f, 0.809895199199404450f, + -0.586574604218216170f, + 0.809782710039636530f, -0.586729888893400390f, 0.809670191106473090f, + -0.586885151996203950f, + 0.809557642404051260f, -0.587040393520917970f, 0.809445063936509170f, + -0.587195613461834800f, + 0.809332455707985950f, -0.587350811813247660f, 0.809219817722621750f, + -0.587505988569450020f, + 0.809107149984558240f, -0.587661143724736660f, 0.808994452497937670f, + -0.587816277273402910f, + 0.808881725266903610f, -0.587971389209745010f, 0.808768968295600850f, + -0.588126479528059850f, + 0.808656181588174980f, -0.588281548222645220f, 0.808543365148773010f, + -0.588436595287799790f, + 0.808430518981542720f, -0.588591620717822890f, 0.808317643090633250f, + -0.588746624507014540f, + 0.808204737480194720f, -0.588901606649675720f, 0.808091802154378370f, + -0.589056567140108460f, + 0.807978837117336310f, -0.589211505972614960f, 0.807865842373222120f, + -0.589366423141498790f, + 0.807752817926190360f, -0.589521318641063940f, 0.807639763780396480f, + -0.589676192465615420f, + 0.807526679939997160f, -0.589831044609458790f, 0.807413566409150190f, + -0.589985875066900920f, + 0.807300423192014450f, -0.590140683832248820f, 0.807187250292749960f, + -0.590295470899810830f, + 0.807074047715517610f, -0.590450236263895810f, 0.806960815464479730f, + -0.590604979918813330f, + 0.806847553543799330f, -0.590759701858874160f, 0.806734261957640860f, + -0.590914402078389520f, + 0.806620940710169650f, -0.591069080571671400f, 0.806507589805552260f, + -0.591223737333032910f, + 0.806394209247956240f, -0.591378372356787580f, 0.806280799041550480f, + -0.591532985637249990f, + 0.806167359190504420f, -0.591687577168735430f, 0.806053889698989060f, + -0.591842146945560140f, + 0.805940390571176280f, -0.591996694962040990f, 0.805826861811239300f, + -0.592151221212495530f, + 0.805713303423352230f, -0.592305725691242290f, 0.805599715411690060f, + -0.592460208392600830f, + 0.805486097780429230f, -0.592614669310891130f, 0.805372450533747060f, + -0.592769108440434070f, + 0.805258773675822210f, -0.592923525775551300f, 0.805145067210834230f, + -0.593077921310565470f, + 0.805031331142963660f, -0.593232295039799800f, 0.804917565476392260f, + -0.593386646957578480f, + 0.804803770215302920f, -0.593540977058226390f, 0.804689945363879500f, + -0.593695285336069190f, + 0.804576090926307110f, -0.593849571785433630f, 0.804462206906771840f, + -0.594003836400646690f, + 0.804348293309460780f, -0.594158079176036800f, 0.804234350138562260f, + -0.594312300105932830f, + 0.804120377398265810f, -0.594466499184664430f, 0.804006375092761520f, + -0.594620676406562240f, + 0.803892343226241260f, -0.594774831765957580f, 0.803778281802897570f, + -0.594928965257182420f, + 0.803664190826924090f, -0.595083076874569960f, 0.803550070302515680f, + -0.595237166612453850f, + 0.803435920233868120f, -0.595391234465168730f, 0.803321740625178580f, + -0.595545280427049790f, + 0.803207531480644940f, -0.595699304492433360f, 0.803093292804466400f, + -0.595853306655656280f, + 0.802979024600843250f, -0.596007286911056530f, 0.802864726873976700f, + -0.596161245252972540f, + 0.802750399628069160f, -0.596315181675743710f, 0.802636042867324150f, + -0.596469096173710360f, + 0.802521656595946430f, -0.596622988741213220f, 0.802407240818141300f, + -0.596776859372594390f, + 0.802292795538115720f, -0.596930708062196500f, 0.802178320760077450f, + -0.597084534804362740f, + 0.802063816488235440f, -0.597238339593437420f, 0.801949282726799770f, + -0.597392122423765710f, + 0.801834719479981310f, -0.597545883289693160f, 0.801720126751992330f, + -0.597699622185566830f, + 0.801605504547046150f, -0.597853339105733910f, 0.801490852869356950f, + -0.598007034044542700f, + 0.801376171723140240f, -0.598160706996342270f, 0.801261461112612540f, + -0.598314357955482600f, + 0.801146721041991360f, -0.598467986916314310f, 0.801031951515495330f, + -0.598621593873188920f, + 0.800917152537344300f, -0.598775178820458720f, 0.800802324111759110f, + -0.598928741752476900f, + 0.800687466242961610f, -0.599082282663597310f, 0.800572578935174860f, + -0.599235801548174570f, + 0.800457662192622820f, -0.599389298400564540f, 0.800342716019530660f, + -0.599542773215123390f, + 0.800227740420124790f, -0.599696225986208310f, 0.800112735398632370f, + -0.599849656708177250f, + 0.799997700959281910f, -0.600003065375388940f, 0.799882637106302810f, + -0.600156451982203240f, + 0.799767543843925680f, -0.600309816522980430f, 0.799652421176382240f, + -0.600463158992081580f, + 0.799537269107905010f, -0.600616479383868970f, 0.799422087642728040f, + -0.600769777692705230f, + 0.799306876785086160f, -0.600923053912954090f, 0.799191636539215210f, + -0.601076308038980160f, + 0.799076366909352350f, -0.601229540065148500f, 0.798961067899735760f, + -0.601382749985825420f, + 0.798845739514604580f, -0.601535937795377730f, 0.798730381758199210f, + -0.601689103488172950f, + 0.798614994634760820f, -0.601842247058580030f, 0.798499578148532120f, + -0.601995368500968020f, + 0.798384132303756380f, -0.602148467809707210f, 0.798268657104678430f, + -0.602301544979168550f, + 0.798153152555543750f, -0.602454600003723750f, 0.798037618660599410f, + -0.602607632877745440f, + 0.797922055424093000f, -0.602760643595607220f, 0.797806462850273570f, + -0.602913632151683030f, + 0.797690840943391160f, -0.603066598540348160f, 0.797575189707696700f, + -0.603219542755978440f, + 0.797459509147442460f, -0.603372464792950260f, 0.797343799266881700f, + -0.603525364645641550f, + 0.797228060070268700f, -0.603678242308430370f, 0.797112291561858920f, + -0.603831097775695880f, + 0.796996493745908750f, -0.603983931041818020f, 0.796880666626675780f, + -0.604136742101177520f, + 0.796764810208418830f, -0.604289530948155960f, 0.796648924495397260f, + -0.604442297577135860f, + 0.796533009491872000f, -0.604595041982500360f, 0.796417065202104980f, + -0.604747764158633410f, + 0.796301091630359110f, -0.604900464099919820f, 0.796185088780898440f, + -0.605053141800745320f, + 0.796069056657987990f, -0.605205797255496500f, 0.795952995265893910f, + -0.605358430458560530f, + 0.795836904608883570f, -0.605511041404325550f, 0.795720784691225090f, + -0.605663630087180380f, + 0.795604635517188070f, -0.605816196501514970f, 0.795488457091042990f, + -0.605968740641719680f, + 0.795372249417061310f, -0.606121262502186120f, 0.795256012499515610f, + -0.606273762077306430f, + 0.795139746342679590f, -0.606426239361473550f, 0.795023450950828050f, + -0.606578694349081290f, + 0.794907126328237010f, -0.606731127034524480f, 0.794790772479183170f, + -0.606883537412198470f, + 0.794674389407944550f, -0.607035925476499650f, 0.794557977118800380f, + -0.607188291221825160f, + 0.794441535616030590f, -0.607340634642572930f, 0.794325064903916520f, + -0.607492955733141550f, + 0.794208564986740640f, -0.607645254487930830f, 0.794092035868785960f, + -0.607797530901341140f, + 0.793975477554337170f, -0.607949784967773630f, 0.793858890047679730f, + -0.608102016681630440f, + 0.793742273353100210f, -0.608254226037314490f, 0.793625627474886300f, + -0.608406413029229150f, + 0.793508952417326660f, -0.608558577651779450f, 0.793392248184711100f, + -0.608710719899370310f, + 0.793275514781330630f, -0.608862839766408200f, 0.793158752211477140f, + -0.609014937247299830f, + 0.793041960479443640f, -0.609167012336453210f, 0.792925139589524260f, + -0.609319065028276820f, + 0.792808289546014120f, -0.609471095317180240f, 0.792691410353209450f, + -0.609623103197573730f, + 0.792574502015407690f, -0.609775088663868430f, 0.792457564536907080f, + -0.609927051710476120f, + 0.792340597922007170f, -0.610078992331809620f, 0.792223602175008310f, + -0.610230910522282620f, + 0.792106577300212390f, -0.610382806276309480f, 0.791989523301921850f, + -0.610534679588305320f, + 0.791872440184440470f, -0.610686530452686280f, 0.791755327952073150f, + -0.610838358863869170f, + 0.791638186609125880f, -0.610990164816271660f, 0.791521016159905220f, + -0.611141948304312570f, + 0.791403816608719500f, -0.611293709322410890f, 0.791286587959877830f, + -0.611445447864987000f, + 0.791169330217690200f, -0.611597163926461910f, 0.791052043386467950f, + -0.611748857501257290f, + 0.790934727470523290f, -0.611900528583796070f, 0.790817382474169770f, + -0.612052177168501470f, + 0.790700008401721610f, -0.612203803249797950f, 0.790582605257494460f, + -0.612355406822110650f, + 0.790465173045804880f, -0.612506987879865570f, 0.790347711770970520f, + -0.612658546417489290f, + 0.790230221437310030f, -0.612810082429409710f, 0.790112702049143300f, + -0.612961595910055170f, + 0.789995153610791090f, -0.613113086853854910f, 0.789877576126575280f, + -0.613264555255239040f, + 0.789759969600819070f, -0.613416001108638590f, 0.789642334037846340f, + -0.613567424408485330f, + 0.789524669441982190f, -0.613718825149211720f, 0.789406975817552930f, + -0.613870203325251330f, + 0.789289253168885650f, -0.614021558931038380f, 0.789171501500308900f, + -0.614172891961007990f, + 0.789053720816151880f, -0.614324202409595950f, 0.788935911120745240f, + -0.614475490271239040f, + 0.788818072418420280f, -0.614626755540375050f, 0.788700204713509660f, + -0.614777998211442080f, + 0.788582308010347120f, -0.614929218278879590f, 0.788464382313267540f, + -0.615080415737127460f, + 0.788346427626606340f, -0.615231590580626820f, 0.788228443954700490f, + -0.615382742803819220f, + 0.788110431301888070f, -0.615533872401147320f, 0.787992389672507950f, + -0.615684979367054570f, + 0.787874319070900220f, -0.615836063695985090f, 0.787756219501406060f, + -0.615987125382383760f, + 0.787638090968367450f, -0.616138164420696910f, 0.787519933476127810f, + -0.616289180805370980f, + 0.787401747029031430f, -0.616440174530853650f, 0.787283531631423620f, + -0.616591145591593110f, + 0.787165287287651010f, -0.616742093982038720f, 0.787047014002060790f, + -0.616893019696640680f, + 0.786928711779001810f, -0.617043922729849760f, 0.786810380622823490f, + -0.617194803076117630f, + 0.786692020537876790f, -0.617345660729896830f, 0.786573631528513230f, + -0.617496495685640910f, + 0.786455213599085770f, -0.617647307937803870f, 0.786336766753948260f, + -0.617798097480841020f, + 0.786218290997455660f, -0.617948864309208150f, 0.786099786333963930f, + -0.618099608417362000f, + 0.785981252767830150f, -0.618250329799760250f, 0.785862690303412600f, + -0.618401028450860980f, + 0.785744098945070360f, -0.618551704365123740f, 0.785625478697163700f, + -0.618702357537008530f, + 0.785506829564053930f, -0.618852987960976320f, 0.785388151550103550f, + -0.619003595631488660f, + 0.785269444659675850f, -0.619154180543008410f, 0.785150708897135560f, + -0.619304742689998690f, + 0.785031944266848080f, -0.619455282066924020f, 0.784913150773180020f, + -0.619605798668249270f, + 0.784794328420499230f, -0.619756292488440660f, 0.784675477213174320f, + -0.619906763521964720f, + 0.784556597155575240f, -0.620057211763289100f, 0.784437688252072830f, + -0.620207637206882430f, + 0.784318750507038920f, -0.620358039847213720f, 0.784199783924846570f, + -0.620508419678753360f, + 0.784080788509869950f, -0.620658776695972140f, 0.783961764266484120f, + -0.620809110893341900f, + 0.783842711199065230f, -0.620959422265335180f, 0.783723629311990470f, + -0.621109710806425630f, + 0.783604518609638200f, -0.621259976511087550f, 0.783485379096387820f, + -0.621410219373796150f, + 0.783366210776619720f, -0.621560439389027160f, 0.783247013654715380f, + -0.621710636551257690f, + 0.783127787735057310f, -0.621860810854965360f, 0.783008533022029110f, + -0.622010962294628600f, + 0.782889249520015480f, -0.622161090864726820f, 0.782769937233402050f, + -0.622311196559740320f, + 0.782650596166575730f, -0.622461279374149970f, 0.782531226323924240f, + -0.622611339302437730f, + 0.782411827709836530f, -0.622761376339086350f, 0.782292400328702400f, + -0.622911390478579460f, + 0.782172944184913010f, -0.623061381715401260f, 0.782053459282860300f, + -0.623211350044037270f, + 0.781933945626937630f, -0.623361295458973230f, 0.781814403221538830f, + -0.623511217954696440f, + 0.781694832071059390f, -0.623661117525694530f, 0.781575232179895550f, + -0.623810994166456130f, + 0.781455603552444590f, -0.623960847871470660f, 0.781335946193104870f, + -0.624110678635228510f, + 0.781216260106276090f, -0.624260486452220650f, 0.781096545296358520f, + -0.624410271316939270f, + 0.780976801767753750f, -0.624560033223877210f, 0.780857029524864580f, + -0.624709772167528100f, + 0.780737228572094490f, -0.624859488142386340f, 0.780617398913848400f, + -0.625009181142947460f, + 0.780497540554531910f, -0.625158851163707620f, 0.780377653498552040f, + -0.625308498199164010f, + 0.780257737750316590f, -0.625458122243814360f, 0.780137793314234610f, + -0.625607723292157410f, + 0.780017820194715990f, -0.625757301338692900f, 0.779897818396172000f, + -0.625906856377921090f, + 0.779777787923014550f, -0.626056388404343520f, 0.779657728779656890f, + -0.626205897412462130f, + 0.779537640970513260f, -0.626355383396779990f, 0.779417524499998900f, + -0.626504846351800810f, + 0.779297379372530300f, -0.626654286272029350f, 0.779177205592524680f, + -0.626803703151971200f, + 0.779057003164400630f, -0.626953096986132660f, 0.778936772092577500f, + -0.627102467769020900f, + 0.778816512381475980f, -0.627251815495144080f, 0.778696224035517530f, + -0.627401140159011050f, + 0.778575907059125050f, -0.627550441755131530f, 0.778455561456721900f, + -0.627699720278016240f, + 0.778335187232733210f, -0.627848975722176460f, 0.778214784391584540f, + -0.627998208082124700f, + 0.778094352937702790f, -0.628147417352374000f, 0.777973892875516100f, + -0.628296603527438320f, + 0.777853404209453150f, -0.628445766601832710f, 0.777732886943944050f, + -0.628594906570072550f, + 0.777612341083420030f, -0.628744023426674680f, 0.777491766632313010f, + -0.628893117166156480f, + 0.777371163595056310f, -0.629042187783036000f, 0.777250531976084070f, + -0.629191235271832290f, + 0.777129871779831620f, -0.629340259627065630f, 0.777009183010735290f, + -0.629489260843256630f, + 0.776888465673232440f, -0.629638238914926980f, 0.776767719771761510f, + -0.629787193836599200f, + 0.776646945310762060f, -0.629936125602796440f, 0.776526142294674430f, + -0.630085034208043180f, + 0.776405310727940390f, -0.630233919646864370f, 0.776284450615002510f, + -0.630382781913785940f, + 0.776163561960304340f, -0.630531621003334600f, 0.776042644768290770f, + -0.630680436910037940f, + 0.775921699043407690f, -0.630829229628424470f, 0.775800724790101650f, + -0.630977999153023550f, + 0.775679722012820650f, -0.631126745478365340f, 0.775558690716013580f, + -0.631275468598980760f, + 0.775437630904130540f, -0.631424168509401860f, 0.775316542581622530f, + -0.631572845204161020f, + 0.775195425752941420f, -0.631721498677792260f, 0.775074280422540450f, + -0.631870128924829850f, + 0.774953106594873930f, -0.632018735939809060f, 0.774831904274396850f, + -0.632167319717265920f, + 0.774710673465565550f, -0.632315880251737570f, 0.774589414172837550f, + -0.632464417537761840f, + 0.774468126400670860f, -0.632612931569877410f, 0.774346810153525130f, + -0.632761422342624000f, + 0.774225465435860680f, -0.632909889850541750f, 0.774104092252139050f, + -0.633058334088172140f, + 0.773982690606822900f, -0.633206755050057190f, 0.773861260504375540f, + -0.633355152730739950f, + 0.773739801949261840f, -0.633503527124764320f, 0.773618314945947460f, + -0.633651878226674900f, + 0.773496799498899050f, -0.633800206031017280f, 0.773375255612584470f, + -0.633948510532337810f, + 0.773253683291472590f, -0.634096791725183740f, 0.773132082540033070f, + -0.634245049604103330f, + 0.773010453362736990f, -0.634393284163645490f, 0.772888795764056220f, + -0.634541495398360020f, + 0.772767109748463850f, -0.634689683302797740f, 0.772645395320433860f, + -0.634837847871509990f, + 0.772523652484441330f, -0.634985989099049460f, 0.772401881244962450f, + -0.635134106979969190f, + 0.772280081606474320f, -0.635282201508823420f, 0.772158253573455240f, + -0.635430272680167160f, + 0.772036397150384520f, -0.635578320488556110f, 0.771914512341742350f, + -0.635726344928547070f, + 0.771792599152010150f, -0.635874345994697720f, 0.771670657585670330f, + -0.636022323681566300f, + 0.771548687647206300f, -0.636170277983712170f, 0.771426689341102590f, + -0.636318208895695460f, + 0.771304662671844830f, -0.636466116412077180f, 0.771182607643919330f, + -0.636614000527419120f, + 0.771060524261813820f, -0.636761861236284200f, 0.770938412530016940f, + -0.636909698533235870f, + 0.770816272453018540f, -0.637057512412838590f, 0.770694104035309140f, + -0.637205302869657600f, + 0.770571907281380810f, -0.637353069898259130f, 0.770449682195725960f, + -0.637500813493210190f, + 0.770327428782838890f, -0.637648533649078810f, 0.770205147047214210f, + -0.637796230360433540f, + 0.770082836993347900f, -0.637943903621844060f, 0.769960498625737230f, + -0.638091553427880820f, + 0.769838131948879840f, -0.638239179773115280f, 0.769715736967275130f, + -0.638386782652119570f, + 0.769593313685422940f, -0.638534362059466790f, 0.769470862107824670f, + -0.638681917989730730f, + 0.769348382238982280f, -0.638829450437486290f, 0.769225874083399260f, + -0.638976959397309140f, + 0.769103337645579700f, -0.639124444863775730f, 0.768980772930028870f, + -0.639271906831463510f, + 0.768858179941253270f, -0.639419345294950700f, 0.768735558683760310f, + -0.639566760248816310f, + 0.768612909162058380f, -0.639714151687640450f, 0.768490231380656860f, + -0.639861519606003900f, + 0.768367525344066270f, -0.640008863998488440f, 0.768244791056798330f, + -0.640156184859676510f, + 0.768122028523365420f, -0.640303482184151670f, 0.767999237748281270f, + -0.640450755966498140f, + 0.767876418736060610f, -0.640598006201301030f, 0.767753571491219030f, + -0.640745232883146440f, + 0.767630696018273380f, -0.640892436006621380f, 0.767507792321741270f, + -0.641039615566313390f, + 0.767384860406141730f, -0.641186771556811250f, 0.767261900275994500f, + -0.641333903972704290f, + 0.767138911935820400f, -0.641481012808583160f, 0.767015895390141480f, + -0.641628098059038750f, + 0.766892850643480670f, -0.641775159718663500f, 0.766769777700361920f, + -0.641922197782050170f, + 0.766646676565310380f, -0.642069212243792540f, 0.766523547242852210f, + -0.642216203098485370f, + 0.766400389737514230f, -0.642363170340724320f, 0.766277204053824710f, + -0.642510113965105710f, + 0.766153990196312920f, -0.642657033966226860f, 0.766030748169509000f, + -0.642803930338685990f, + 0.765907477977944340f, -0.642950803077082080f, 0.765784179626150970f, + -0.643097652176015110f, + 0.765660853118662500f, -0.643244477630085850f, 0.765537498460013070f, + -0.643391279433895850f, + 0.765414115654738270f, -0.643538057582047740f, 0.765290704707374370f, + -0.643684812069144850f, + 0.765167265622458960f, -0.643831542889791390f, 0.765043798404530520f, + -0.643978250038592660f, + 0.764920303058128410f, -0.644124933510154540f, 0.764796779587793460f, + -0.644271593299083790f, + 0.764673227998067140f, -0.644418229399988380f, 0.764549648293492150f, + -0.644564841807476640f, + 0.764426040478612070f, -0.644711430516158310f, 0.764302404557971720f, + -0.644857995520643710f, + 0.764178740536116670f, -0.645004536815543930f, 0.764055048417593970f, + -0.645151054395471160f, + 0.763931328206951090f, -0.645297548255038380f, 0.763807579908737160f, + -0.645444018388859230f, + 0.763683803527501870f, -0.645590464791548690f, 0.763559999067796150f, + -0.645736887457722290f, + 0.763436166534172010f, -0.645883286381996320f, 0.763312305931182380f, + -0.646029661558988330f, + 0.763188417263381270f, -0.646176012983316280f, 0.763064500535323710f, + -0.646322340649599480f, + 0.762940555751565720f, -0.646468644552457780f, 0.762816582916664430f, + -0.646614924686512050f, + 0.762692582035177980f, -0.646761181046383920f, 0.762568553111665380f, + -0.646907413626696020f, + 0.762444496150687210f, -0.647053622422071540f, 0.762320411156804270f, + -0.647199807427135230f, + 0.762196298134578900f, -0.647345968636512060f, 0.762072157088574560f, + -0.647492106044828100f, + 0.761947988023355390f, -0.647638219646710310f, 0.761823790943486960f, + -0.647784309436786440f, + 0.761699565853535380f, -0.647930375409685340f, 0.761575312758068000f, + -0.648076417560036530f, + 0.761451031661653620f, -0.648222435882470420f, 0.761326722568861360f, + -0.648368430371618290f, + 0.761202385484261780f, -0.648514401022112440f, 0.761078020412426560f, + -0.648660347828585840f, + 0.760953627357928150f, -0.648806270785672550f, 0.760829206325340010f, + -0.648952169888007300f, + 0.760704757319236920f, -0.649098045130225950f, 0.760580280344194450f, + -0.649243896506964900f, + 0.760455775404789260f, -0.649389724012861660f, 0.760331242505599030f, + -0.649535527642554730f, + 0.760206681651202420f, -0.649681307390683190f, 0.760082092846179340f, + -0.649827063251887100f, + 0.759957476095110330f, -0.649972795220807530f, 0.759832831402577400f, + -0.650118503292086200f, + 0.759708158773163440f, -0.650264187460365850f, 0.759583458211452010f, + -0.650409847720290310f, + 0.759458729722028210f, -0.650555484066503880f, 0.759333973309477940f, + -0.650701096493652040f, + 0.759209188978388070f, -0.650846684996380880f, 0.759084376733346610f, + -0.650992249569337660f, + 0.758959536578942440f, -0.651137790207170330f, 0.758834668519765660f, + -0.651283306904527740f, + 0.758709772560407390f, -0.651428799656059820f, 0.758584848705459610f, + -0.651574268456416970f, + 0.758459896959515430f, -0.651719713300250910f, 0.758334917327168960f, + -0.651865134182213920f, + 0.758209909813015280f, -0.652010531096959500f, 0.758084874421650730f, + -0.652155904039141590f, + 0.757959811157672300f, -0.652301253003415460f, 0.757834720025678310f, + -0.652446577984436730f, + 0.757709601030268080f, -0.652591878976862440f, 0.757584454176041810f, + -0.652737155975350310f, + 0.757459279467600720f, -0.652882408974558850f, 0.757334076909547130f, + -0.653027637969147530f, + 0.757208846506484570f, -0.653172842953776760f, 0.757083588263017140f, + -0.653318023923107670f, + 0.756958302183750490f, -0.653463180871802330f, 0.756832988273290820f, + -0.653608313794523890f, + 0.756707646536245670f, -0.653753422685936060f, 0.756582276977223470f, + -0.653898507540703780f, + 0.756456879600833740f, -0.654043568353492640f, 0.756331454411686920f, + -0.654188605118969040f, + 0.756206001414394540f, -0.654333617831800440f, 0.756080520613569120f, + -0.654478606486655350f, + 0.755955012013824420f, -0.654623571078202680f, 0.755829475619774760f, + -0.654768511601112600f, + 0.755703911436035880f, -0.654913428050056030f, 0.755578319467224540f, + -0.655058320419704910f, + 0.755452699717958250f, -0.655203188704731820f, 0.755327052192855670f, + -0.655348032899810470f, + 0.755201376896536550f, -0.655492852999615350f, 0.755075673833621620f, + -0.655637648998821820f, + 0.754949943008732640f, -0.655782420892106030f, 0.754824184426492350f, + -0.655927168674145360f, + 0.754698398091524500f, -0.656071892339617600f, 0.754572584008453840f, + -0.656216591883201920f, + 0.754446742181906440f, -0.656361267299578000f, 0.754320872616508820f, + -0.656505918583426550f, + 0.754194975316889170f, -0.656650545729428940f, 0.754069050287676120f, + -0.656795148732268070f, + 0.753943097533499640f, -0.656939727586627110f, 0.753817117058990790f, + -0.657084282287190180f, + 0.753691108868781210f, -0.657228812828642540f, 0.753565072967504300f, + -0.657373319205670210f, + 0.753439009359793580f, -0.657517801412960120f, 0.753312918050284330f, + -0.657662259445200070f, + 0.753186799043612520f, -0.657806693297078640f, 0.753060652344415100f, + -0.657951102963285520f, + 0.752934477957330150f, -0.658095488438511180f, 0.752808275886996950f, + -0.658239849717446870f, + 0.752682046138055340f, -0.658384186794785050f, 0.752555788715146390f, + -0.658528499665218650f, + 0.752429503622912390f, -0.658672788323441890f, 0.752303190865996400f, + -0.658817052764149480f, + 0.752176850449042810f, -0.658961292982037320f, 0.752050482376696360f, + -0.659105508971802090f, + 0.751924086653603550f, -0.659249700728141490f, 0.751797663284411550f, + -0.659393868245753860f, + 0.751671212273768430f, -0.659538011519338660f, 0.751544733626323680f, + -0.659682130543596150f, + 0.751418227346727470f, -0.659826225313227320f, 0.751291693439630870f, + -0.659970295822934540f, + 0.751165131909686480f, -0.660114342067420480f, 0.751038542761547360f, + -0.660258364041389050f, + 0.750911925999867890f, -0.660402361739545030f, 0.750785281629303690f, + -0.660546335156593890f, + 0.750658609654510700f, -0.660690284287242300f, 0.750531910080146410f, + -0.660834209126197610f, + 0.750405182910869330f, -0.660978109668168060f, 0.750278428151338720f, + -0.661121985907862860f, + 0.750151645806215070f, -0.661265837839992270f, 0.750024835880159780f, + -0.661409665459266940f, + 0.749897998377835330f, -0.661553468760398890f, 0.749771133303905100f, + -0.661697247738101010f, + 0.749644240663033480f, -0.661841002387086870f, 0.749517320459886170f, + -0.661984732702070920f, + 0.749390372699129560f, -0.662128438677768720f, 0.749263397385431130f, + -0.662272120308896590f, + 0.749136394523459370f, -0.662415777590171780f, 0.749009364117883880f, + -0.662559410516312290f, + 0.748882306173375150f, -0.662703019082037440f, 0.748755220694604760f, + -0.662846603282066900f, + 0.748628107686245440f, -0.662990163111121470f, 0.748500967152970430f, + -0.663133698563923010f, + 0.748373799099454560f, -0.663277209635194100f, 0.748246603530373420f, + -0.663420696319658280f, + 0.748119380450403600f, -0.663564158612039770f, 0.747992129864222700f, + -0.663707596507064010f, + 0.747864851776509410f, -0.663851009999457340f, 0.747737546191943330f, + -0.663994399083946640f, + 0.747610213115205150f, -0.664137763755260010f, 0.747482852550976570f, + -0.664281104008126230f, + 0.747355464503940190f, -0.664424419837275180f, 0.747228048978779920f, + -0.664567711237437520f, + 0.747100605980180130f, -0.664710978203344790f, 0.746973135512826850f, + -0.664854220729729660f, + 0.746845637581406540f, -0.664997438811325340f, 0.746718112190607130f, + -0.665140632442866140f, + 0.746590559345117310f, -0.665283801619087180f, 0.746462979049626770f, + -0.665426946334724660f, + 0.746335371308826320f, -0.665570066584515450f, 0.746207736127407760f, + -0.665713162363197550f, + 0.746080073510063780f, -0.665856233665509720f, 0.745952383461488290f, + -0.665999280486191500f, + 0.745824665986376090f, -0.666142302819983540f, 0.745696921089422760f, + -0.666285300661627280f, + 0.745569148775325430f, -0.666428274005865240f, 0.745441349048781680f, + -0.666571222847440640f, + 0.745313521914490520f, -0.666714147181097670f, 0.745185667377151640f, + -0.666857047001581220f, + 0.745057785441466060f, -0.666999922303637470f, 0.744929876112135350f, + -0.667142773082013310f, + 0.744801939393862630f, -0.667285599331456370f, 0.744673975291351710f, + -0.667428401046715520f, + 0.744545983809307370f, -0.667571178222540310f, 0.744417964952435620f, + -0.667713930853681030f, + 0.744289918725443260f, -0.667856658934889320f, 0.744161845133038180f, + -0.667999362460917400f, + 0.744033744179929290f, -0.668142041426518450f, 0.743905615870826490f, + -0.668284695826446670f, + 0.743777460210440890f, -0.668427325655456820f, 0.743649277203484060f, + -0.668569930908304970f, + 0.743521066854669120f, -0.668712511579747980f, 0.743392829168709970f, + -0.668855067664543610f, + 0.743264564150321600f, -0.668997599157450270f, 0.743136271804219820f, + -0.669140106053227600f, + 0.743007952135121720f, -0.669282588346636010f, 0.742879605147745200f, + -0.669425046032436910f, + 0.742751230846809050f, -0.669567479105392490f, 0.742622829237033490f, + -0.669709887560265840f, + 0.742494400323139180f, -0.669852271391821020f, 0.742365944109848460f, + -0.669994630594823000f, + 0.742237460601884000f, -0.670136965164037650f, 0.742108949803969910f, + -0.670279275094231800f, + 0.741980411720831070f, -0.670421560380173090f, 0.741851846357193480f, + -0.670563821016630040f, + 0.741723253717784140f, -0.670706056998372160f, 0.741594633807331150f, + -0.670848268320169640f, + 0.741465986630563290f, -0.670990454976794220f, 0.741337312192210660f, + -0.671132616963017740f, + 0.741208610497004260f, -0.671274754273613490f, 0.741079881549676080f, + -0.671416866903355450f, + 0.740951125354959110f, -0.671558954847018330f, 0.740822341917587330f, + -0.671701018099378320f, + 0.740693531242295760f, -0.671843056655211930f, 0.740564693333820250f, + -0.671985070509296900f, + 0.740435828196898020f, -0.672127059656411730f, 0.740306935836266940f, + -0.672269024091335930f, + 0.740178016256666240f, -0.672410963808849790f, 0.740049069462835550f, + -0.672552878803734710f, + 0.739920095459516200f, -0.672694769070772860f, 0.739791094251449950f, + -0.672836634604747300f, + 0.739662065843380010f, -0.672978475400442090f, 0.739533010240050250f, + -0.673120291452642070f, + 0.739403927446205760f, -0.673262082756132970f, 0.739274817466592520f, + -0.673403849305701740f, + 0.739145680305957510f, -0.673545591096136100f, 0.739016515969048720f, + -0.673687308122224330f, + 0.738887324460615110f, -0.673829000378756040f, 0.738758105785406900f, + -0.673970667860521620f, + 0.738628859948174840f, -0.674112310562312360f, 0.738499586953671130f, + -0.674253928478920410f, + 0.738370286806648620f, -0.674395521605139050f, 0.738240959511861310f, + -0.674537089935762000f, + 0.738111605074064260f, -0.674678633465584540f, 0.737982223498013570f, + -0.674820152189402170f, + 0.737852814788465980f, -0.674961646102011930f, 0.737723378950179700f, + -0.675103115198211420f, + 0.737593915987913570f, -0.675244559472799270f, 0.737464425906427580f, + -0.675385978920574840f, + 0.737334908710482910f, -0.675527373536338520f, 0.737205364404841190f, + -0.675668743314891910f, + 0.737075792994265730f, -0.675810088251036940f, 0.736946194483520280f, + -0.675951408339577010f, + 0.736816568877369900f, -0.676092703575315920f, 0.736686916180580460f, + -0.676233973953058950f, + 0.736557236397919150f, -0.676375219467611590f, 0.736427529534153690f, + -0.676516440113781090f, + 0.736297795594053170f, -0.676657635886374950f, 0.736168034582387330f, + -0.676798806780201770f, + 0.736038246503927350f, -0.676939952790071130f, 0.735908431363445190f, + -0.677081073910793530f, + 0.735778589165713590f, -0.677222170137180330f, 0.735648719915506510f, + -0.677363241464043920f, + 0.735518823617598900f, -0.677504287886197430f, 0.735388900276766730f, + -0.677645309398454910f, + 0.735258949897786840f, -0.677786305995631500f, 0.735128972485437180f, + -0.677927277672543020f, + 0.734998968044496710f, -0.678068224424006600f, 0.734868936579745170f, + -0.678209146244839860f, + 0.734738878095963500f, -0.678350043129861470f, 0.734608792597933550f, + -0.678490915073891140f, + 0.734478680090438370f, -0.678631762071749360f, 0.734348540578261600f, + -0.678772584118257690f, + 0.734218374066188280f, -0.678913381208238410f, 0.734088180559004040f, + -0.679054153336514870f, + 0.733957960061495940f, -0.679194900497911200f, 0.733827712578451700f, + -0.679335622687252560f, + 0.733697438114660370f, -0.679476319899364970f, 0.733567136674911360f, + -0.679616992129075560f, + 0.733436808263995710f, -0.679757639371212030f, 0.733306452886705260f, + -0.679898261620603290f, + 0.733176070547832740f, -0.680038858872078930f, 0.733045661252172080f, + -0.680179431120469750f, + 0.732915225004517780f, -0.680319978360607200f, 0.732784761809665790f, + -0.680460500587323880f, + 0.732654271672412820f, -0.680600997795453020f, 0.732523754597556700f, + -0.680741469979829090f, + 0.732393210589896040f, -0.680881917135287230f, 0.732262639654230770f, + -0.681022339256663670f, + 0.732132041795361290f, -0.681162736338795430f, 0.732001417018089630f, + -0.681303108376520530f, + 0.731870765327218290f, -0.681443455364677870f, 0.731740086727550980f, + -0.681583777298107480f, + 0.731609381223892630f, -0.681724074171649710f, 0.731478648821048520f, + -0.681864345980146670f, + 0.731347889523825570f, -0.682004592718440830f, 0.731217103337031270f, + -0.682144814381375640f, + 0.731086290265474340f, -0.682285010963795570f, 0.730955450313964360f, + -0.682425182460546060f, + 0.730824583487312160f, -0.682565328866473250f, 0.730693689790329000f, + -0.682705450176424590f, + 0.730562769227827590f, -0.682845546385248080f, 0.730431821804621520f, + -0.682985617487792740f, + 0.730300847525525490f, -0.683125663478908680f, 0.730169846395354870f, + -0.683265684353446700f, + 0.730038818418926260f, -0.683405680106258680f, 0.729907763601057140f, + -0.683545650732197530f, + 0.729776681946566090f, -0.683685596226116580f, 0.729645573460272480f, + -0.683825516582870720f, + 0.729514438146997010f, -0.683965411797315400f, 0.729383276011561050f, + -0.684105281864307080f, + 0.729252087058786970f, -0.684245126778703080f, 0.729120871293498230f, + -0.684384946535361750f, + 0.728989628720519420f, -0.684524741129142300f, 0.728858359344675800f, + -0.684664510554904960f, + 0.728727063170793830f, -0.684804254807510620f, 0.728595740203700770f, + -0.684943973881821490f, + 0.728464390448225200f, -0.685083667772700360f, 0.728333013909196360f, + -0.685223336475011210f, + 0.728201610591444610f, -0.685362979983618730f, 0.728070180499801210f, + -0.685502598293388550f, + 0.727938723639098620f, -0.685642191399187470f, 0.727807240014169960f, + -0.685781759295883030f, + 0.727675729629849610f, -0.685921301978343560f, 0.727544192490972800f, + -0.686060819441438710f, + 0.727412628602375770f, -0.686200311680038590f, 0.727281037968895870f, + -0.686339778689014520f, + 0.727149420595371020f, -0.686479220463238950f, 0.727017776486640680f, + -0.686618636997584630f, + 0.726886105647544970f, -0.686758028286925890f, 0.726754408082925020f, + -0.686897394326137610f, + 0.726622683797622850f, -0.687036735110095660f, 0.726490932796481910f, + -0.687176050633676820f, + 0.726359155084346010f, -0.687315340891759050f, 0.726227350666060370f, + -0.687454605879221030f, + 0.726095519546471000f, -0.687593845590942170f, 0.725963661730424930f, + -0.687733060021803230f, + 0.725831777222770370f, -0.687872249166685550f, 0.725699866028356120f, + -0.688011413020471640f, + 0.725567928152032300f, -0.688150551578044830f, 0.725435963598649810f, + -0.688289664834289330f, + 0.725303972373060770f, -0.688428752784090440f, 0.725171954480117950f, + -0.688567815422334250f, + 0.725039909924675370f, -0.688706852743907750f, 0.724907838711587820f, + -0.688845864743699020f, + 0.724775740845711280f, -0.688984851416597040f, 0.724643616331902550f, + -0.689123812757491570f, + 0.724511465175019630f, -0.689262748761273470f, 0.724379287379921190f, + -0.689401659422834270f, + 0.724247082951467000f, -0.689540544737066830f, 0.724114851894517850f, + -0.689679404698864800f, + 0.723982594213935520f, -0.689818239303122470f, 0.723850309914582880f, + -0.689957048544735390f, + 0.723717999001323500f, -0.690095832418599950f, 0.723585661479022150f, + -0.690234590919613370f, + 0.723453297352544380f, -0.690373324042674040f, 0.723320906626756970f, + -0.690512031782681060f, + 0.723188489306527460f, -0.690650714134534600f, 0.723056045396724410f, + -0.690789371093135650f, + 0.722923574902217700f, -0.690928002653386160f, 0.722791077827877550f, + -0.691066608810189220f, + 0.722658554178575610f, -0.691205189558448450f, 0.722526003959184540f, + -0.691343744893068710f, + 0.722393427174577550f, -0.691482274808955850f, 0.722260823829629310f, + -0.691620779301016290f, + 0.722128193929215350f, -0.691759258364157750f, 0.721995537478211880f, + -0.691897711993288760f, + 0.721862854481496340f, -0.692036140183318720f, 0.721730144943947160f, + -0.692174542929158140f, + 0.721597408870443770f, -0.692312920225718220f, 0.721464646265866370f, + -0.692451272067911130f, + 0.721331857135096290f, -0.692589598450650380f, 0.721199041483015720f, + -0.692727899368849820f, + 0.721066199314508110f, -0.692866174817424630f, 0.720933330634457530f, + -0.693004424791290870f, + 0.720800435447749190f, -0.693142649285365400f, 0.720667513759269520f, + -0.693280848294566040f, + 0.720534565573905270f, -0.693419021813811760f, 0.720401590896544760f, + -0.693557169838022290f, + 0.720268589732077190f, -0.693695292362118240f, 0.720135562085392420f, + -0.693833389381021350f, + 0.720002507961381650f, -0.693971460889654000f, 0.719869427364936860f, + -0.694109506882939820f, + 0.719736320300951030f, -0.694247527355803310f, 0.719603186774318120f, + -0.694385522303169740f, + 0.719470026789932990f, -0.694523491719965520f, 0.719336840352691740f, + -0.694661435601117820f, + 0.719203627467491220f, -0.694799353941554900f, 0.719070388139229190f, + -0.694937246736205830f, + 0.718937122372804490f, -0.695075113980000880f, 0.718803830173116890f, + -0.695212955667870780f, + 0.718670511545067230f, -0.695350771794747690f, 0.718537166493557370f, + -0.695488562355564440f, + 0.718403795023489830f, -0.695626327345254870f, 0.718270397139768260f, + -0.695764066758753690f, + 0.718136972847297490f, -0.695901780590996830f, 0.718003522150983180f, + -0.696039468836920690f, + 0.717870045055731710f, -0.696177131491462990f, 0.717736541566450950f, + -0.696314768549562090f, + 0.717603011688049080f, -0.696452380006157830f, 0.717469455425435830f, + -0.696589965856190370f, + 0.717335872783521730f, -0.696727526094601200f, 0.717202263767218070f, + -0.696865060716332470f, + 0.717068628381437480f, -0.697002569716327460f, 0.716934966631093130f, + -0.697140053089530420f, + 0.716801278521099540f, -0.697277510830886520f, 0.716667564056371890f, + -0.697414942935341790f, + 0.716533823241826680f, -0.697552349397843160f, 0.716400056082381000f, + -0.697689730213338800f, + 0.716266262582953120f, -0.697827085376777290f, 0.716132442748462330f, + -0.697964414883108670f, + 0.715998596583828690f, -0.698101718727283770f, 0.715864724093973500f, + -0.698238996904254280f, + 0.715730825283818590f, -0.698376249408972920f, 0.715596900158287470f, + -0.698513476236393040f, + 0.715462948722303760f, -0.698650677381469460f, 0.715328970980792620f, + -0.698787852839157670f, + 0.715194966938680120f, -0.698925002604414150f, 0.715060936600893090f, + -0.699062126672196140f, + 0.714926879972359490f, -0.699199225037462120f, 0.714792797058008240f, + -0.699336297695171140f, + 0.714658687862769090f, -0.699473344640283770f, 0.714524552391572860f, + -0.699610365867761040f, + 0.714390390649351390f, -0.699747361372564990f, 0.714256202641037510f, + -0.699884331149658760f, + 0.714121988371564820f, -0.700021275194006250f, 0.713987747845867830f, + -0.700158193500572730f, + 0.713853481068882470f, -0.700295086064323780f, 0.713719188045545240f, + -0.700431952880226420f, + 0.713584868780793640f, -0.700568793943248340f, 0.713450523279566260f, + -0.700705609248358450f, + 0.713316151546802610f, -0.700842398790526120f, 0.713181753587443180f, + -0.700979162564722370f, + 0.713047329406429340f, -0.701115900565918660f, 0.712912879008703480f, + -0.701252612789087460f, + 0.712778402399208980f, -0.701389299229202230f, 0.712643899582890210f, + -0.701525959881237340f, + 0.712509370564692320f, -0.701662594740168450f, 0.712374815349561710f, + -0.701799203800971720f, + 0.712240233942445510f, -0.701935787058624360f, 0.712105626348291890f, + -0.702072344508104630f, + 0.711970992572050100f, -0.702208876144391870f, 0.711836332618670080f, + -0.702345381962465880f, + 0.711701646493102970f, -0.702481861957308000f, 0.711566934200300700f, + -0.702618316123900130f, + 0.711432195745216430f, -0.702754744457225300f, 0.711297431132803970f, + -0.702891146952267400f, + 0.711162640368018350f, -0.703027523604011220f, 0.711027823455815280f, + -0.703163874407442770f, + 0.710892980401151680f, -0.703300199357548730f, 0.710758111208985350f, + -0.703436498449316660f, + 0.710623215884275020f, -0.703572771677735580f, 0.710488294431980470f, + -0.703709019037794810f, + 0.710353346857062420f, -0.703845240524484940f, 0.710218373164482220f, + -0.703981436132797620f, + 0.710083373359202800f, -0.704117605857725310f, 0.709948347446187400f, + -0.704253749694261470f, + 0.709813295430400840f, -0.704389867637400410f, 0.709678217316808580f, + -0.704525959682137380f, + 0.709543113110376770f, -0.704662025823468820f, 0.709407982816072980f, + -0.704798066056391950f, + 0.709272826438865690f, -0.704934080375904880f, 0.709137643983724030f, + -0.705070068777006840f, + 0.709002435455618250f, -0.705206031254697830f, 0.708867200859519820f, + -0.705341967803978840f, + 0.708731940200400650f, -0.705477878419852100f, 0.708596653483234080f, + -0.705613763097320490f, + 0.708461340712994160f, -0.705749621831387790f, 0.708326001894655890f, + -0.705885454617058980f, + 0.708190637033195400f, -0.706021261449339740f, 0.708055246133589500f, + -0.706157042323237060f, + 0.707919829200816310f, -0.706292797233758480f, 0.707784386239854620f, + -0.706428526175912790f, + 0.707648917255684350f, -0.706564229144709510f, 0.707513422253286280f, + -0.706699906135159430f, + 0.707377901237642100f, -0.706835557142273750f, 0.707242354213734710f, + -0.706971182161065360f, + 0.707106781186547570f, -0.707106781186547460f, 0.706971182161065360f, + -0.707242354213734600f, + 0.706835557142273860f, -0.707377901237642100f, 0.706699906135159430f, + -0.707513422253286170f, + 0.706564229144709620f, -0.707648917255684350f, 0.706428526175912790f, + -0.707784386239854620f, + 0.706292797233758480f, -0.707919829200816310f, 0.706157042323237060f, + -0.708055246133589500f, + 0.706021261449339740f, -0.708190637033195290f, 0.705885454617058980f, + -0.708326001894655780f, + 0.705749621831387790f, -0.708461340712994050f, 0.705613763097320490f, + -0.708596653483234080f, + 0.705477878419852210f, -0.708731940200400650f, 0.705341967803978950f, + -0.708867200859519820f, + 0.705206031254697830f, -0.709002435455618250f, 0.705070068777006840f, + -0.709137643983723920f, + 0.704934080375904990f, -0.709272826438865580f, 0.704798066056391950f, + -0.709407982816072980f, + 0.704662025823468930f, -0.709543113110376770f, 0.704525959682137380f, + -0.709678217316808470f, + 0.704389867637400410f, -0.709813295430400840f, 0.704253749694261580f, + -0.709948347446187400f, + 0.704117605857725430f, -0.710083373359202690f, 0.703981436132797730f, + -0.710218373164482220f, + 0.703845240524484940f, -0.710353346857062310f, 0.703709019037794810f, + -0.710488294431980470f, + 0.703572771677735580f, -0.710623215884275020f, 0.703436498449316770f, + -0.710758111208985350f, + 0.703300199357548730f, -0.710892980401151680f, 0.703163874407442770f, + -0.711027823455815280f, + 0.703027523604011220f, -0.711162640368018350f, 0.702891146952267400f, + -0.711297431132803970f, + 0.702754744457225300f, -0.711432195745216430f, 0.702618316123900130f, + -0.711566934200300700f, + 0.702481861957308000f, -0.711701646493102970f, 0.702345381962465880f, + -0.711836332618670080f, + 0.702208876144391870f, -0.711970992572049990f, 0.702072344508104740f, + -0.712105626348291890f, + 0.701935787058624360f, -0.712240233942445510f, 0.701799203800971720f, + -0.712374815349561710f, + 0.701662594740168570f, -0.712509370564692320f, 0.701525959881237450f, + -0.712643899582890210f, + 0.701389299229202230f, -0.712778402399208870f, 0.701252612789087460f, + -0.712912879008703370f, + 0.701115900565918660f, -0.713047329406429230f, 0.700979162564722480f, + -0.713181753587443070f, + 0.700842398790526230f, -0.713316151546802610f, 0.700705609248358450f, + -0.713450523279566150f, + 0.700568793943248450f, -0.713584868780793520f, 0.700431952880226420f, + -0.713719188045545130f, + 0.700295086064323780f, -0.713853481068882470f, 0.700158193500572730f, + -0.713987747845867830f, + 0.700021275194006360f, -0.714121988371564710f, 0.699884331149658760f, + -0.714256202641037400f, + 0.699747361372564990f, -0.714390390649351390f, 0.699610365867761040f, + -0.714524552391572860f, + 0.699473344640283770f, -0.714658687862768980f, 0.699336297695171250f, + -0.714792797058008130f, + 0.699199225037462120f, -0.714926879972359370f, 0.699062126672196140f, + -0.715060936600892980f, + 0.698925002604414150f, -0.715194966938680010f, 0.698787852839157790f, + -0.715328970980792620f, + 0.698650677381469580f, -0.715462948722303650f, 0.698513476236393040f, + -0.715596900158287360f, + 0.698376249408972920f, -0.715730825283818590f, 0.698238996904254390f, + -0.715864724093973390f, + 0.698101718727283880f, -0.715998596583828690f, 0.697964414883108790f, + -0.716132442748462330f, + 0.697827085376777290f, -0.716266262582953120f, 0.697689730213338800f, + -0.716400056082380890f, + 0.697552349397843270f, -0.716533823241826570f, 0.697414942935341790f, + -0.716667564056371890f, + 0.697277510830886630f, -0.716801278521099540f, 0.697140053089530530f, + -0.716934966631093130f, + 0.697002569716327460f, -0.717068628381437480f, 0.696865060716332470f, + -0.717202263767218070f, + 0.696727526094601200f, -0.717335872783521730f, 0.696589965856190370f, + -0.717469455425435830f, + 0.696452380006157830f, -0.717603011688049080f, 0.696314768549562200f, + -0.717736541566450840f, + 0.696177131491462990f, -0.717870045055731710f, 0.696039468836920690f, + -0.718003522150983060f, + 0.695901780590996830f, -0.718136972847297490f, 0.695764066758753800f, + -0.718270397139768260f, + 0.695626327345254870f, -0.718403795023489720f, 0.695488562355564440f, + -0.718537166493557370f, + 0.695350771794747800f, -0.718670511545067230f, 0.695212955667870890f, + -0.718803830173116890f, + 0.695075113980000880f, -0.718937122372804380f, 0.694937246736205940f, + -0.719070388139229190f, + 0.694799353941554900f, -0.719203627467491220f, 0.694661435601117930f, + -0.719336840352691740f, + 0.694523491719965520f, -0.719470026789932990f, 0.694385522303169860f, + -0.719603186774318000f, + 0.694247527355803310f, -0.719736320300951030f, 0.694109506882939820f, + -0.719869427364936860f, + 0.693971460889654000f, -0.720002507961381650f, 0.693833389381021350f, + -0.720135562085392310f, + 0.693695292362118350f, -0.720268589732077080f, 0.693557169838022400f, + -0.720401590896544760f, + 0.693419021813811880f, -0.720534565573905270f, 0.693280848294566150f, + -0.720667513759269410f, + 0.693142649285365510f, -0.720800435447749190f, 0.693004424791290870f, + -0.720933330634457530f, + 0.692866174817424740f, -0.721066199314508110f, 0.692727899368849820f, + -0.721199041483015720f, + 0.692589598450650380f, -0.721331857135096180f, 0.692451272067911240f, + -0.721464646265866370f, + 0.692312920225718220f, -0.721597408870443660f, 0.692174542929158140f, + -0.721730144943947160f, + 0.692036140183318830f, -0.721862854481496340f, 0.691897711993288760f, + -0.721995537478211880f, + 0.691759258364157750f, -0.722128193929215350f, 0.691620779301016400f, + -0.722260823829629310f, + 0.691482274808955850f, -0.722393427174577550f, 0.691343744893068820f, + -0.722526003959184430f, + 0.691205189558448450f, -0.722658554178575610f, 0.691066608810189220f, + -0.722791077827877550f, + 0.690928002653386280f, -0.722923574902217700f, 0.690789371093135760f, + -0.723056045396724410f, + 0.690650714134534720f, -0.723188489306527350f, 0.690512031782681170f, + -0.723320906626756850f, + 0.690373324042674040f, -0.723453297352544380f, 0.690234590919613370f, + -0.723585661479022040f, + 0.690095832418599950f, -0.723717999001323390f, 0.689957048544735390f, + -0.723850309914582880f, + 0.689818239303122470f, -0.723982594213935520f, 0.689679404698864800f, + -0.724114851894517850f, + 0.689540544737066940f, -0.724247082951466890f, 0.689401659422834380f, + -0.724379287379921080f, + 0.689262748761273470f, -0.724511465175019520f, 0.689123812757491680f, + -0.724643616331902550f, + 0.688984851416597150f, -0.724775740845711280f, 0.688845864743699130f, + -0.724907838711587820f, + 0.688706852743907750f, -0.725039909924675370f, 0.688567815422334360f, + -0.725171954480117840f, + 0.688428752784090550f, -0.725303972373060660f, 0.688289664834289440f, + -0.725435963598649810f, + 0.688150551578044830f, -0.725567928152032300f, 0.688011413020471640f, + -0.725699866028356120f, + 0.687872249166685550f, -0.725831777222770370f, 0.687733060021803230f, + -0.725963661730424930f, + 0.687593845590942170f, -0.726095519546470890f, 0.687454605879221030f, + -0.726227350666060260f, + 0.687315340891759160f, -0.726359155084346010f, 0.687176050633676930f, + -0.726490932796481910f, + 0.687036735110095660f, -0.726622683797622850f, 0.686897394326137610f, + -0.726754408082924910f, + 0.686758028286925890f, -0.726886105647544970f, 0.686618636997584740f, + -0.727017776486640680f, + 0.686479220463238950f, -0.727149420595371020f, 0.686339778689014630f, + -0.727281037968895760f, + 0.686200311680038700f, -0.727412628602375770f, 0.686060819441438710f, + -0.727544192490972800f, + 0.685921301978343670f, -0.727675729629849610f, 0.685781759295883030f, + -0.727807240014169960f, + 0.685642191399187470f, -0.727938723639098620f, 0.685502598293388670f, + -0.728070180499801210f, + 0.685362979983618730f, -0.728201610591444500f, 0.685223336475011210f, + -0.728333013909196360f, + 0.685083667772700360f, -0.728464390448225200f, 0.684943973881821490f, + -0.728595740203700770f, + 0.684804254807510620f, -0.728727063170793720f, 0.684664510554904960f, + -0.728858359344675690f, + 0.684524741129142300f, -0.728989628720519310f, 0.684384946535361750f, + -0.729120871293498230f, + 0.684245126778703080f, -0.729252087058786970f, 0.684105281864307080f, + -0.729383276011561050f, + 0.683965411797315510f, -0.729514438146996900f, 0.683825516582870830f, + -0.729645573460272480f, + 0.683685596226116690f, -0.729776681946565970f, 0.683545650732197530f, + -0.729907763601057140f, + 0.683405680106258790f, -0.730038818418926150f, 0.683265684353446700f, + -0.730169846395354870f, + 0.683125663478908800f, -0.730300847525525380f, 0.682985617487792850f, + -0.730431821804621520f, + 0.682845546385248080f, -0.730562769227827590f, 0.682705450176424590f, + -0.730693689790328890f, + 0.682565328866473250f, -0.730824583487312050f, 0.682425182460546060f, + -0.730955450313964360f, + 0.682285010963795570f, -0.731086290265474230f, 0.682144814381375640f, + -0.731217103337031160f, + 0.682004592718440830f, -0.731347889523825460f, 0.681864345980146780f, + -0.731478648821048520f, + 0.681724074171649820f, -0.731609381223892520f, 0.681583777298107480f, + -0.731740086727550980f, + 0.681443455364677990f, -0.731870765327218290f, 0.681303108376520530f, + -0.732001417018089520f, + 0.681162736338795430f, -0.732132041795361290f, 0.681022339256663670f, + -0.732262639654230660f, + 0.680881917135287340f, -0.732393210589896040f, 0.680741469979829090f, + -0.732523754597556590f, + 0.680600997795453130f, -0.732654271672412820f, 0.680460500587323880f, + -0.732784761809665790f, + 0.680319978360607200f, -0.732915225004517780f, 0.680179431120469750f, + -0.733045661252171970f, + 0.680038858872079040f, -0.733176070547832740f, 0.679898261620603290f, + -0.733306452886705260f, + 0.679757639371212030f, -0.733436808263995710f, 0.679616992129075560f, + -0.733567136674911360f, + 0.679476319899365080f, -0.733697438114660260f, 0.679335622687252670f, + -0.733827712578451700f, + 0.679194900497911200f, -0.733957960061495940f, 0.679054153336514870f, + -0.734088180559004040f, + 0.678913381208238410f, -0.734218374066188170f, 0.678772584118257690f, + -0.734348540578261600f, + 0.678631762071749470f, -0.734478680090438370f, 0.678490915073891250f, + -0.734608792597933550f, + 0.678350043129861580f, -0.734738878095963390f, 0.678209146244839860f, + -0.734868936579745060f, + 0.678068224424006600f, -0.734998968044496600f, 0.677927277672543130f, + -0.735128972485437180f, + 0.677786305995631500f, -0.735258949897786730f, 0.677645309398454910f, + -0.735388900276766620f, + 0.677504287886197430f, -0.735518823617598900f, 0.677363241464044030f, + -0.735648719915506400f, + 0.677222170137180450f, -0.735778589165713480f, 0.677081073910793530f, + -0.735908431363445190f, + 0.676939952790071240f, -0.736038246503927350f, 0.676798806780201770f, + -0.736168034582387330f, + 0.676657635886374950f, -0.736297795594053060f, 0.676516440113781090f, + -0.736427529534153690f, + 0.676375219467611700f, -0.736557236397919150f, 0.676233973953058950f, + -0.736686916180580460f, + 0.676092703575316030f, -0.736816568877369790f, 0.675951408339577010f, + -0.736946194483520170f, + 0.675810088251037060f, -0.737075792994265620f, 0.675668743314891910f, + -0.737205364404841190f, + 0.675527373536338630f, -0.737334908710482790f, 0.675385978920574950f, + -0.737464425906427580f, + 0.675244559472799270f, -0.737593915987913460f, 0.675103115198211530f, + -0.737723378950179590f, + 0.674961646102012040f, -0.737852814788465980f, 0.674820152189402280f, + -0.737982223498013570f, + 0.674678633465584540f, -0.738111605074064260f, 0.674537089935762110f, + -0.738240959511861310f, + 0.674395521605139050f, -0.738370286806648510f, 0.674253928478920520f, + -0.738499586953671130f, + 0.674112310562312360f, -0.738628859948174840f, 0.673970667860521620f, + -0.738758105785406900f, + 0.673829000378756150f, -0.738887324460615110f, 0.673687308122224330f, + -0.739016515969048600f, + 0.673545591096136100f, -0.739145680305957400f, 0.673403849305701850f, + -0.739274817466592520f, + 0.673262082756132970f, -0.739403927446205760f, 0.673120291452642070f, + -0.739533010240050250f, + 0.672978475400442090f, -0.739662065843379900f, 0.672836634604747410f, + -0.739791094251449950f, + 0.672694769070772970f, -0.739920095459516090f, 0.672552878803734820f, + -0.740049069462835550f, + 0.672410963808849900f, -0.740178016256666240f, 0.672269024091336040f, + -0.740306935836266940f, + 0.672127059656411840f, -0.740435828196898020f, 0.671985070509296900f, + -0.740564693333820250f, + 0.671843056655211930f, -0.740693531242295640f, 0.671701018099378320f, + -0.740822341917587330f, + 0.671558954847018330f, -0.740951125354959110f, 0.671416866903355450f, + -0.741079881549676080f, + 0.671274754273613490f, -0.741208610497004260f, 0.671132616963017850f, + -0.741337312192210660f, + 0.670990454976794220f, -0.741465986630563290f, 0.670848268320169750f, + -0.741594633807331150f, + 0.670706056998372160f, -0.741723253717784140f, 0.670563821016630040f, + -0.741851846357193480f, + 0.670421560380173090f, -0.741980411720830960f, 0.670279275094231910f, + -0.742108949803969800f, + 0.670136965164037760f, -0.742237460601884000f, 0.669994630594823000f, + -0.742365944109848460f, + 0.669852271391821130f, -0.742494400323139180f, 0.669709887560265840f, + -0.742622829237033380f, + 0.669567479105392490f, -0.742751230846809050f, 0.669425046032436910f, + -0.742879605147745090f, + 0.669282588346636010f, -0.743007952135121720f, 0.669140106053227710f, + -0.743136271804219820f, + 0.668997599157450270f, -0.743264564150321490f, 0.668855067664543610f, + -0.743392829168709970f, + 0.668712511579748090f, -0.743521066854669120f, 0.668569930908305080f, + -0.743649277203484060f, + 0.668427325655456820f, -0.743777460210440780f, 0.668284695826446670f, + -0.743905615870826490f, + 0.668142041426518560f, -0.744033744179929180f, 0.667999362460917510f, + -0.744161845133038070f, + 0.667856658934889440f, -0.744289918725443140f, 0.667713930853681140f, + -0.744417964952435620f, + 0.667571178222540310f, -0.744545983809307250f, 0.667428401046715640f, + -0.744673975291351600f, + 0.667285599331456480f, -0.744801939393862630f, 0.667142773082013310f, + -0.744929876112135350f, + 0.666999922303637470f, -0.745057785441465950f, 0.666857047001581220f, + -0.745185667377151640f, + 0.666714147181097670f, -0.745313521914490410f, 0.666571222847440750f, + -0.745441349048781680f, + 0.666428274005865350f, -0.745569148775325430f, 0.666285300661627390f, + -0.745696921089422760f, + 0.666142302819983540f, -0.745824665986375980f, 0.665999280486191500f, + -0.745952383461488180f, + 0.665856233665509720f, -0.746080073510063780f, 0.665713162363197660f, + -0.746207736127407650f, + 0.665570066584515560f, -0.746335371308826320f, 0.665426946334724660f, + -0.746462979049626770f, + 0.665283801619087180f, -0.746590559345117310f, 0.665140632442866140f, + -0.746718112190607020f, + 0.664997438811325340f, -0.746845637581406540f, 0.664854220729729660f, + -0.746973135512826740f, + 0.664710978203344900f, -0.747100605980180130f, 0.664567711237437520f, + -0.747228048978779920f, + 0.664424419837275180f, -0.747355464503940190f, 0.664281104008126230f, + -0.747482852550976570f, + 0.664137763755260010f, -0.747610213115205150f, 0.663994399083946640f, + -0.747737546191943330f, + 0.663851009999457340f, -0.747864851776509410f, 0.663707596507064120f, + -0.747992129864222700f, + 0.663564158612039880f, -0.748119380450403490f, 0.663420696319658280f, + -0.748246603530373420f, + 0.663277209635194100f, -0.748373799099454560f, 0.663133698563923010f, + -0.748500967152970430f, + 0.662990163111121470f, -0.748628107686245330f, 0.662846603282066900f, + -0.748755220694604760f, + 0.662703019082037440f, -0.748882306173375030f, 0.662559410516312400f, + -0.749009364117883770f, + 0.662415777590171780f, -0.749136394523459260f, 0.662272120308896590f, + -0.749263397385431020f, + 0.662128438677768720f, -0.749390372699129560f, 0.661984732702071030f, + -0.749517320459886170f, + 0.661841002387086870f, -0.749644240663033480f, 0.661697247738101120f, + -0.749771133303904990f, + 0.661553468760399000f, -0.749897998377835220f, 0.661409665459266940f, + -0.750024835880159780f, + 0.661265837839992270f, -0.750151645806214960f, 0.661121985907862970f, + -0.750278428151338610f, + 0.660978109668168060f, -0.750405182910869220f, 0.660834209126197610f, + -0.750531910080146410f, + 0.660690284287242300f, -0.750658609654510590f, 0.660546335156593890f, + -0.750785281629303580f, + 0.660402361739545030f, -0.750911925999867890f, 0.660258364041389050f, + -0.751038542761547250f, + 0.660114342067420480f, -0.751165131909686370f, 0.659970295822934540f, + -0.751291693439630870f, + 0.659826225313227430f, -0.751418227346727360f, 0.659682130543596150f, + -0.751544733626323570f, + 0.659538011519338770f, -0.751671212273768430f, 0.659393868245753970f, + -0.751797663284411440f, + 0.659249700728141490f, -0.751924086653603550f, 0.659105508971802200f, + -0.752050482376696360f, + 0.658961292982037320f, -0.752176850449042700f, 0.658817052764149480f, + -0.752303190865996400f, + 0.658672788323441890f, -0.752429503622912390f, 0.658528499665218760f, + -0.752555788715146390f, + 0.658384186794785050f, -0.752682046138055230f, 0.658239849717446980f, + -0.752808275886996950f, + 0.658095488438511290f, -0.752934477957330150f, 0.657951102963285630f, + -0.753060652344415100f, + 0.657806693297078640f, -0.753186799043612410f, 0.657662259445200070f, + -0.753312918050284330f, + 0.657517801412960120f, -0.753439009359793580f, 0.657373319205670210f, + -0.753565072967504190f, + 0.657228812828642650f, -0.753691108868781210f, 0.657084282287190180f, + -0.753817117058990680f, + 0.656939727586627110f, -0.753943097533499640f, 0.656795148732268070f, + -0.754069050287676120f, + 0.656650545729429050f, -0.754194975316889170f, 0.656505918583426550f, + -0.754320872616508820f, + 0.656361267299578000f, -0.754446742181906330f, 0.656216591883202030f, + -0.754572584008453840f, + 0.656071892339617710f, -0.754698398091524390f, 0.655927168674145360f, + -0.754824184426492240f, + 0.655782420892106030f, -0.754949943008732640f, 0.655637648998821820f, + -0.755075673833621510f, + 0.655492852999615460f, -0.755201376896536550f, 0.655348032899810580f, + -0.755327052192855560f, + 0.655203188704731930f, -0.755452699717958140f, 0.655058320419704910f, + -0.755578319467224540f, + 0.654913428050056150f, -0.755703911436035880f, 0.654768511601112600f, + -0.755829475619774760f, + 0.654623571078202680f, -0.755955012013824310f, 0.654478606486655350f, + -0.756080520613569120f, + 0.654333617831800550f, -0.756206001414394540f, 0.654188605118969040f, + -0.756331454411686920f, + 0.654043568353492640f, -0.756456879600833630f, 0.653898507540703890f, + -0.756582276977223470f, + 0.653753422685936170f, -0.756707646536245670f, 0.653608313794523890f, + -0.756832988273290820f, + 0.653463180871802330f, -0.756958302183750490f, 0.653318023923107670f, + -0.757083588263017140f, + 0.653172842953776760f, -0.757208846506484460f, 0.653027637969147650f, + -0.757334076909547130f, + 0.652882408974558960f, -0.757459279467600720f, 0.652737155975350420f, + -0.757584454176041810f, + 0.652591878976862550f, -0.757709601030268080f, 0.652446577984436840f, + -0.757834720025678310f, + 0.652301253003415460f, -0.757959811157672300f, 0.652155904039141700f, + -0.758084874421650620f, + 0.652010531096959500f, -0.758209909813015280f, 0.651865134182214030f, + -0.758334917327168960f, + 0.651719713300251020f, -0.758459896959515320f, 0.651574268456417080f, + -0.758584848705459500f, + 0.651428799656059820f, -0.758709772560407390f, 0.651283306904527850f, + -0.758834668519765660f, + 0.651137790207170330f, -0.758959536578942440f, 0.650992249569337660f, + -0.759084376733346500f, + 0.650846684996380990f, -0.759209188978387960f, 0.650701096493652040f, + -0.759333973309477940f, + 0.650555484066503990f, -0.759458729722028210f, 0.650409847720290420f, + -0.759583458211452010f, + 0.650264187460365960f, -0.759708158773163440f, 0.650118503292086200f, + -0.759832831402577400f, + 0.649972795220807530f, -0.759957476095110330f, 0.649827063251887100f, + -0.760082092846179220f, + 0.649681307390683190f, -0.760206681651202420f, 0.649535527642554730f, + -0.760331242505599030f, + 0.649389724012861770f, -0.760455775404789260f, 0.649243896506965010f, + -0.760580280344194340f, + 0.649098045130226060f, -0.760704757319236920f, 0.648952169888007410f, + -0.760829206325340010f, + 0.648806270785672550f, -0.760953627357928040f, 0.648660347828585840f, + -0.761078020412426560f, + 0.648514401022112550f, -0.761202385484261780f, 0.648368430371618400f, + -0.761326722568861250f, + 0.648222435882470420f, -0.761451031661653510f, 0.648076417560036530f, + -0.761575312758068000f, + 0.647930375409685460f, -0.761699565853535270f, 0.647784309436786550f, + -0.761823790943486840f, + 0.647638219646710420f, -0.761947988023355390f, 0.647492106044828100f, + -0.762072157088574560f, + 0.647345968636512060f, -0.762196298134578900f, 0.647199807427135230f, + -0.762320411156804160f, + 0.647053622422071650f, -0.762444496150687100f, 0.646907413626696020f, + -0.762568553111665380f, + 0.646761181046383920f, -0.762692582035177870f, 0.646614924686512050f, + -0.762816582916664320f, + 0.646468644552457890f, -0.762940555751565720f, 0.646322340649599590f, + -0.763064500535323710f, + 0.646176012983316390f, -0.763188417263381270f, 0.646029661558988330f, + -0.763312305931182380f, + 0.645883286381996440f, -0.763436166534172010f, 0.645736887457722290f, + -0.763559999067796150f, + 0.645590464791548800f, -0.763683803527501870f, 0.645444018388859230f, + -0.763807579908737160f, + 0.645297548255038380f, -0.763931328206951090f, 0.645151054395471270f, + -0.764055048417593860f, + 0.645004536815544040f, -0.764178740536116670f, 0.644857995520643710f, + -0.764302404557971720f, + 0.644711430516158420f, -0.764426040478612070f, 0.644564841807476750f, + -0.764549648293492150f, + 0.644418229399988380f, -0.764673227998067140f, 0.644271593299083900f, + -0.764796779587793460f, + 0.644124933510154540f, -0.764920303058128410f, 0.643978250038592660f, + -0.765043798404530410f, + 0.643831542889791500f, -0.765167265622458960f, 0.643684812069144960f, + -0.765290704707374260f, + 0.643538057582047850f, -0.765414115654738160f, 0.643391279433895960f, + -0.765537498460013070f, + 0.643244477630085850f, -0.765660853118662390f, 0.643097652176015110f, + -0.765784179626150970f, + 0.642950803077082080f, -0.765907477977944230f, 0.642803930338686100f, + -0.766030748169509000f, + 0.642657033966226860f, -0.766153990196312810f, 0.642510113965105710f, + -0.766277204053824710f, + 0.642363170340724320f, -0.766400389737514120f, 0.642216203098485370f, + -0.766523547242852100f, + 0.642069212243792540f, -0.766646676565310380f, 0.641922197782050170f, + -0.766769777700361920f, + 0.641775159718663500f, -0.766892850643480670f, 0.641628098059038860f, + -0.767015895390141480f, + 0.641481012808583160f, -0.767138911935820400f, 0.641333903972704290f, + -0.767261900275994390f, + 0.641186771556811250f, -0.767384860406141620f, 0.641039615566313390f, + -0.767507792321741270f, + 0.640892436006621380f, -0.767630696018273270f, 0.640745232883146440f, + -0.767753571491219030f, + 0.640598006201301030f, -0.767876418736060610f, 0.640450755966498140f, + -0.767999237748281270f, + 0.640303482184151670f, -0.768122028523365310f, 0.640156184859676620f, + -0.768244791056798220f, + 0.640008863998488440f, -0.768367525344066270f, 0.639861519606004010f, + -0.768490231380656750f, + 0.639714151687640450f, -0.768612909162058270f, 0.639566760248816420f, + -0.768735558683760310f, + 0.639419345294950700f, -0.768858179941253270f, 0.639271906831463510f, + -0.768980772930028870f, + 0.639124444863775730f, -0.769103337645579590f, 0.638976959397309140f, + -0.769225874083399260f, + 0.638829450437486400f, -0.769348382238982280f, 0.638681917989730840f, + -0.769470862107824560f, + 0.638534362059466790f, -0.769593313685422940f, 0.638386782652119680f, + -0.769715736967275020f, + 0.638239179773115390f, -0.769838131948879840f, 0.638091553427880930f, + -0.769960498625737230f, + 0.637943903621844170f, -0.770082836993347900f, 0.637796230360433540f, + -0.770205147047214100f, + 0.637648533649078810f, -0.770327428782838770f, 0.637500813493210310f, + -0.770449682195725960f, + 0.637353069898259130f, -0.770571907281380700f, 0.637205302869657600f, + -0.770694104035309140f, + 0.637057512412838590f, -0.770816272453018430f, 0.636909698533235870f, + -0.770938412530016940f, + 0.636761861236284200f, -0.771060524261813710f, 0.636614000527419230f, + -0.771182607643919220f, + 0.636466116412077180f, -0.771304662671844720f, 0.636318208895695570f, + -0.771426689341102590f, + 0.636170277983712170f, -0.771548687647206300f, 0.636022323681566300f, + -0.771670657585670330f, + 0.635874345994697720f, -0.771792599152010150f, 0.635726344928547180f, + -0.771914512341742350f, + 0.635578320488556230f, -0.772036397150384410f, 0.635430272680167160f, + -0.772158253573455240f, + 0.635282201508823530f, -0.772280081606474320f, 0.635134106979969300f, + -0.772401881244962340f, + 0.634985989099049460f, -0.772523652484441330f, 0.634837847871510100f, + -0.772645395320433860f, + 0.634689683302797850f, -0.772767109748463740f, 0.634541495398360130f, + -0.772888795764056220f, + 0.634393284163645490f, -0.773010453362736990f, 0.634245049604103330f, + -0.773132082540033070f, + 0.634096791725183740f, -0.773253683291472590f, 0.633948510532337810f, + -0.773375255612584470f, + 0.633800206031017280f, -0.773496799498899050f, 0.633651878226674900f, + -0.773618314945947460f, + 0.633503527124764320f, -0.773739801949261840f, 0.633355152730740060f, + -0.773861260504375540f, + 0.633206755050057190f, -0.773982690606822790f, 0.633058334088172250f, + -0.774104092252138940f, + 0.632909889850541860f, -0.774225465435860570f, 0.632761422342624000f, + -0.774346810153525020f, + 0.632612931569877520f, -0.774468126400670860f, 0.632464417537761840f, + -0.774589414172837550f, + 0.632315880251737680f, -0.774710673465565550f, 0.632167319717266030f, + -0.774831904274396850f, + 0.632018735939809060f, -0.774953106594873820f, 0.631870128924829850f, + -0.775074280422540450f, + 0.631721498677792370f, -0.775195425752941310f, 0.631572845204161130f, + -0.775316542581622410f, + 0.631424168509401860f, -0.775437630904130430f, 0.631275468598980870f, + -0.775558690716013580f, + 0.631126745478365340f, -0.775679722012820540f, 0.630977999153023660f, + -0.775800724790101540f, + 0.630829229628424470f, -0.775921699043407580f, 0.630680436910038060f, + -0.776042644768290770f, + 0.630531621003334600f, -0.776163561960304340f, 0.630382781913785940f, + -0.776284450615002400f, + 0.630233919646864480f, -0.776405310727940390f, 0.630085034208043290f, + -0.776526142294674430f, + 0.629936125602796550f, -0.776646945310762060f, 0.629787193836599200f, + -0.776767719771761510f, + 0.629638238914927100f, -0.776888465673232440f, 0.629489260843256740f, + -0.777009183010735290f, + 0.629340259627065750f, -0.777129871779831620f, 0.629191235271832410f, + -0.777250531976084070f, + 0.629042187783036000f, -0.777371163595056200f, 0.628893117166156480f, + -0.777491766632312900f, + 0.628744023426674790f, -0.777612341083419920f, 0.628594906570072660f, + -0.777732886943944050f, + 0.628445766601832710f, -0.777853404209453040f, 0.628296603527438440f, + -0.777973892875515990f, + 0.628147417352374120f, -0.778094352937702790f, 0.627998208082124810f, + -0.778214784391584420f, + 0.627848975722176570f, -0.778335187232733090f, 0.627699720278016240f, + -0.778455561456721900f, + 0.627550441755131530f, -0.778575907059124940f, 0.627401140159011160f, + -0.778696224035517530f, + 0.627251815495144190f, -0.778816512381475870f, 0.627102467769021010f, + -0.778936772092577500f, + 0.626953096986132770f, -0.779057003164400630f, 0.626803703151971310f, + -0.779177205592524680f, + 0.626654286272029460f, -0.779297379372530300f, 0.626504846351800930f, + -0.779417524499998900f, + 0.626355383396779990f, -0.779537640970513150f, 0.626205897412462130f, + -0.779657728779656780f, + 0.626056388404343520f, -0.779777787923014440f, 0.625906856377921210f, + -0.779897818396171890f, + 0.625757301338692900f, -0.780017820194715990f, 0.625607723292157410f, + -0.780137793314234500f, + 0.625458122243814360f, -0.780257737750316590f, 0.625308498199164010f, + -0.780377653498552040f, + 0.625158851163707730f, -0.780497540554531910f, 0.625009181142947460f, + -0.780617398913848290f, + 0.624859488142386450f, -0.780737228572094380f, 0.624709772167528100f, + -0.780857029524864470f, + 0.624560033223877320f, -0.780976801767753750f, 0.624410271316939380f, + -0.781096545296358410f, + 0.624260486452220650f, -0.781216260106276090f, 0.624110678635228510f, + -0.781335946193104870f, + 0.623960847871470770f, -0.781455603552444480f, 0.623810994166456130f, + -0.781575232179895550f, + 0.623661117525694640f, -0.781694832071059390f, 0.623511217954696550f, + -0.781814403221538830f, + 0.623361295458973340f, -0.781933945626937630f, 0.623211350044037270f, + -0.782053459282860300f, + 0.623061381715401370f, -0.782172944184912900f, 0.622911390478579460f, + -0.782292400328702400f, + 0.622761376339086460f, -0.782411827709836420f, 0.622611339302437730f, + -0.782531226323924240f, + 0.622461279374150080f, -0.782650596166575730f, 0.622311196559740320f, + -0.782769937233402050f, + 0.622161090864726930f, -0.782889249520015480f, 0.622010962294628600f, + -0.783008533022029110f, + 0.621860810854965360f, -0.783127787735057310f, 0.621710636551257690f, + -0.783247013654715380f, + 0.621560439389027270f, -0.783366210776619720f, 0.621410219373796150f, + -0.783485379096387820f, + 0.621259976511087660f, -0.783604518609638200f, 0.621109710806425740f, + -0.783723629311990470f, + 0.620959422265335180f, -0.783842711199065230f, 0.620809110893341900f, + -0.783961764266484010f, + 0.620658776695972140f, -0.784080788509869950f, 0.620508419678753360f, + -0.784199783924846570f, + 0.620358039847213830f, -0.784318750507038920f, 0.620207637206882430f, + -0.784437688252072720f, + 0.620057211763289210f, -0.784556597155575240f, 0.619906763521964830f, + -0.784675477213174320f, + 0.619756292488440660f, -0.784794328420499230f, 0.619605798668249390f, + -0.784913150773180020f, + 0.619455282066924020f, -0.785031944266848080f, 0.619304742689998690f, + -0.785150708897135560f, + 0.619154180543008410f, -0.785269444659675850f, 0.619003595631488770f, + -0.785388151550103550f, + 0.618852987960976320f, -0.785506829564053930f, 0.618702357537008640f, + -0.785625478697163700f, + 0.618551704365123860f, -0.785744098945070360f, 0.618401028450860980f, + -0.785862690303412600f, + 0.618250329799760250f, -0.785981252767830150f, 0.618099608417362110f, + -0.786099786333963820f, + 0.617948864309208260f, -0.786218290997455550f, 0.617798097480841140f, + -0.786336766753948260f, + 0.617647307937803980f, -0.786455213599085770f, 0.617496495685640910f, + -0.786573631528513230f, + 0.617345660729896940f, -0.786692020537876680f, 0.617194803076117630f, + -0.786810380622823490f, + 0.617043922729849760f, -0.786928711779001700f, 0.616893019696640790f, + -0.787047014002060790f, + 0.616742093982038830f, -0.787165287287650890f, 0.616591145591593230f, + -0.787283531631423620f, + 0.616440174530853650f, -0.787401747029031320f, 0.616289180805370980f, + -0.787519933476127810f, + 0.616138164420696910f, -0.787638090968367450f, 0.615987125382383870f, + -0.787756219501405950f, + 0.615836063695985090f, -0.787874319070900110f, 0.615684979367054570f, + -0.787992389672507950f, + 0.615533872401147430f, -0.788110431301888070f, 0.615382742803819330f, + -0.788228443954700490f, + 0.615231590580626820f, -0.788346427626606230f, 0.615080415737127460f, + -0.788464382313267430f, + 0.614929218278879590f, -0.788582308010347120f, 0.614777998211442190f, + -0.788700204713509660f, + 0.614626755540375050f, -0.788818072418420170f, 0.614475490271239160f, + -0.788935911120745130f, + 0.614324202409595950f, -0.789053720816151880f, 0.614172891961007990f, + -0.789171501500308790f, + 0.614021558931038490f, -0.789289253168885650f, 0.613870203325251440f, + -0.789406975817552810f, + 0.613718825149211830f, -0.789524669441982190f, 0.613567424408485330f, + -0.789642334037846340f, + 0.613416001108638590f, -0.789759969600819070f, 0.613264555255239150f, + -0.789877576126575280f, + 0.613113086853854910f, -0.789995153610791090f, 0.612961595910055170f, + -0.790112702049143300f, + 0.612810082429409710f, -0.790230221437310030f, 0.612658546417489290f, + -0.790347711770970520f, + 0.612506987879865570f, -0.790465173045804880f, 0.612355406822110760f, + -0.790582605257494460f, + 0.612203803249798060f, -0.790700008401721610f, 0.612052177168501580f, + -0.790817382474169660f, + 0.611900528583796070f, -0.790934727470523290f, 0.611748857501257400f, + -0.791052043386467950f, + 0.611597163926462020f, -0.791169330217690090f, 0.611445447864987110f, + -0.791286587959877720f, + 0.611293709322411010f, -0.791403816608719500f, 0.611141948304312570f, + -0.791521016159905220f, + 0.610990164816271770f, -0.791638186609125770f, 0.610838358863869280f, + -0.791755327952073150f, + 0.610686530452686280f, -0.791872440184440470f, 0.610534679588305320f, + -0.791989523301921850f, + 0.610382806276309480f, -0.792106577300212390f, 0.610230910522282620f, + -0.792223602175008310f, + 0.610078992331809620f, -0.792340597922007060f, 0.609927051710476230f, + -0.792457564536906970f, + 0.609775088663868430f, -0.792574502015407580f, 0.609623103197573730f, + -0.792691410353209450f, + 0.609471095317180240f, -0.792808289546014120f, 0.609319065028276820f, + -0.792925139589524260f, + 0.609167012336453210f, -0.793041960479443640f, 0.609014937247299940f, + -0.793158752211477140f, + 0.608862839766408200f, -0.793275514781330630f, 0.608710719899370420f, + -0.793392248184711100f, + 0.608558577651779450f, -0.793508952417326660f, 0.608406413029229260f, + -0.793625627474886190f, + 0.608254226037314490f, -0.793742273353100100f, 0.608102016681630550f, + -0.793858890047679620f, + 0.607949784967773740f, -0.793975477554337170f, 0.607797530901341140f, + -0.794092035868785960f, + 0.607645254487930830f, -0.794208564986740640f, 0.607492955733141660f, + -0.794325064903916520f, + 0.607340634642572930f, -0.794441535616030590f, 0.607188291221825160f, + -0.794557977118800270f, + 0.607035925476499760f, -0.794674389407944550f, 0.606883537412198580f, + -0.794790772479183170f, + 0.606731127034524480f, -0.794907126328237010f, 0.606578694349081400f, + -0.795023450950828050f, + 0.606426239361473550f, -0.795139746342679590f, 0.606273762077306430f, + -0.795256012499515500f, + 0.606121262502186230f, -0.795372249417061190f, 0.605968740641719790f, + -0.795488457091042990f, + 0.605816196501515080f, -0.795604635517188070f, 0.605663630087180490f, + -0.795720784691225090f, + 0.605511041404325550f, -0.795836904608883460f, 0.605358430458560530f, + -0.795952995265893910f, + 0.605205797255496500f, -0.796069056657987990f, 0.605053141800745430f, + -0.796185088780898440f, + 0.604900464099919930f, -0.796301091630359110f, 0.604747764158633410f, + -0.796417065202104980f, + 0.604595041982500360f, -0.796533009491872000f, 0.604442297577135970f, + -0.796648924495397150f, + 0.604289530948156070f, -0.796764810208418720f, 0.604136742101177630f, + -0.796880666626675780f, + 0.603983931041818020f, -0.796996493745908750f, 0.603831097775695880f, + -0.797112291561858920f, + 0.603678242308430370f, -0.797228060070268700f, 0.603525364645641550f, + -0.797343799266881700f, + 0.603372464792950370f, -0.797459509147442460f, 0.603219542755978440f, + -0.797575189707696590f, + 0.603066598540348280f, -0.797690840943391040f, 0.602913632151683140f, + -0.797806462850273570f, + 0.602760643595607220f, -0.797922055424093000f, 0.602607632877745550f, + -0.798037618660599410f, + 0.602454600003723860f, -0.798153152555543750f, 0.602301544979168550f, + -0.798268657104678310f, + 0.602148467809707320f, -0.798384132303756380f, 0.601995368500968130f, + -0.798499578148532010f, + 0.601842247058580030f, -0.798614994634760820f, 0.601689103488173060f, + -0.798730381758199210f, + 0.601535937795377730f, -0.798845739514604580f, 0.601382749985825420f, + -0.798961067899735760f, + 0.601229540065148620f, -0.799076366909352350f, 0.601076308038980160f, + -0.799191636539215210f, + 0.600923053912954090f, -0.799306876785086160f, 0.600769777692705230f, + -0.799422087642728040f, + 0.600616479383868970f, -0.799537269107905010f, 0.600463158992081690f, + -0.799652421176382130f, + 0.600309816522980430f, -0.799767543843925680f, 0.600156451982203350f, + -0.799882637106302810f, + 0.600003065375389060f, -0.799997700959281910f, 0.599849656708177360f, + -0.800112735398632370f, + 0.599696225986208310f, -0.800227740420124790f, 0.599542773215123390f, + -0.800342716019530660f, + 0.599389298400564540f, -0.800457662192622710f, 0.599235801548174570f, + -0.800572578935174750f, + 0.599082282663597310f, -0.800687466242961500f, 0.598928741752476900f, + -0.800802324111759110f, + 0.598775178820458720f, -0.800917152537344300f, 0.598621593873188920f, + -0.801031951515495330f, + 0.598467986916314310f, -0.801146721041991250f, 0.598314357955482600f, + -0.801261461112612540f, + 0.598160706996342380f, -0.801376171723140130f, 0.598007034044542700f, + -0.801490852869356840f, + 0.597853339105733910f, -0.801605504547046040f, 0.597699622185566830f, + -0.801720126751992330f, + 0.597545883289693270f, -0.801834719479981310f, 0.597392122423765710f, + -0.801949282726799660f, + 0.597238339593437530f, -0.802063816488235440f, 0.597084534804362740f, + -0.802178320760077450f, + 0.596930708062196500f, -0.802292795538115720f, 0.596776859372594500f, + -0.802407240818141300f, + 0.596622988741213330f, -0.802521656595946320f, 0.596469096173710360f, + -0.802636042867324150f, + 0.596315181675743820f, -0.802750399628069160f, 0.596161245252972540f, + -0.802864726873976590f, + 0.596007286911056530f, -0.802979024600843140f, 0.595853306655656390f, + -0.803093292804466400f, + 0.595699304492433470f, -0.803207531480644830f, 0.595545280427049790f, + -0.803321740625178470f, + 0.595391234465168730f, -0.803435920233868120f, 0.595237166612453850f, + -0.803550070302515570f, + 0.595083076874569960f, -0.803664190826924090f, 0.594928965257182420f, + -0.803778281802897570f, + 0.594774831765957580f, -0.803892343226241260f, 0.594620676406562240f, + -0.804006375092761520f, + 0.594466499184664540f, -0.804120377398265700f, 0.594312300105932830f, + -0.804234350138562260f, + 0.594158079176036800f, -0.804348293309460780f, 0.594003836400646690f, + -0.804462206906771840f, + 0.593849571785433630f, -0.804576090926307000f, 0.593695285336069300f, + -0.804689945363879500f, + 0.593540977058226390f, -0.804803770215302810f, 0.593386646957578480f, + -0.804917565476392150f, + 0.593232295039799800f, -0.805031331142963660f, 0.593077921310565580f, + -0.805145067210834120f, + 0.592923525775551410f, -0.805258773675822210f, 0.592769108440434070f, + -0.805372450533747060f, + 0.592614669310891130f, -0.805486097780429120f, 0.592460208392600940f, + -0.805599715411689950f, + 0.592305725691242400f, -0.805713303423352120f, 0.592151221212495640f, + -0.805826861811239300f, + 0.591996694962040990f, -0.805940390571176280f, 0.591842146945560250f, + -0.806053889698988950f, + 0.591687577168735550f, -0.806167359190504310f, 0.591532985637249990f, + -0.806280799041550370f, + 0.591378372356787580f, -0.806394209247956240f, 0.591223737333032910f, + -0.806507589805552260f, + 0.591069080571671510f, -0.806620940710169650f, 0.590914402078389520f, + -0.806734261957640750f, + 0.590759701858874280f, -0.806847553543799220f, 0.590604979918813440f, + -0.806960815464479620f, + 0.590450236263895920f, -0.807074047715517610f, 0.590295470899810940f, + -0.807187250292749850f, + 0.590140683832248940f, -0.807300423192014450f, 0.589985875066900920f, + -0.807413566409150190f, + 0.589831044609458900f, -0.807526679939997160f, 0.589676192465615420f, + -0.807639763780396370f, + 0.589521318641063940f, -0.807752817926190360f, 0.589366423141498790f, + -0.807865842373222120f, + 0.589211505972615070f, -0.807978837117336310f, 0.589056567140108460f, + -0.808091802154378260f, + 0.588901606649675840f, -0.808204737480194720f, 0.588746624507014650f, + -0.808317643090633250f, + 0.588591620717822890f, -0.808430518981542720f, 0.588436595287799900f, + -0.808543365148773010f, + 0.588281548222645330f, -0.808656181588174980f, 0.588126479528059850f, + -0.808768968295600850f, + 0.587971389209745120f, -0.808881725266903610f, 0.587816277273403020f, + -0.808994452497937560f, + 0.587661143724736770f, -0.809107149984558130f, 0.587505988569450020f, + -0.809219817722621750f, + 0.587350811813247660f, -0.809332455707985840f, 0.587195613461834910f, + -0.809445063936509170f, + 0.587040393520918080f, -0.809557642404051260f, 0.586885151996203950f, + -0.809670191106473090f, + 0.586729888893400500f, -0.809782710039636420f, 0.586574604218216280f, + -0.809895199199404450f, + 0.586419297976360500f, -0.810007658581641140f, 0.586263970173543700f, + -0.810120088182211600f, + 0.586108620815476430f, -0.810232487996982330f, 0.585953249907870680f, + -0.810344858021820550f, + 0.585797857456438860f, -0.810457198252594770f, 0.585642443466894420f, + -0.810569508685174630f, + 0.585487007944951450f, -0.810681789315430670f, 0.585331550896324940f, + -0.810794040139234730f, + 0.585176072326730410f, -0.810906261152459670f, 0.585020572241884530f, + -0.811018452350979470f, + 0.584865050647504490f, -0.811130613730669190f, 0.584709507549308500f, + -0.811242745287404810f, + 0.584553942953015330f, -0.811354847017063730f, 0.584398356864344710f, + -0.811466918915524250f, + 0.584242749289016980f, -0.811578960978665890f, 0.584087120232753550f, + -0.811690973202369050f, + 0.583931469701276300f, -0.811802955582515360f, 0.583775797700308070f, + -0.811914908114987680f, + 0.583620104235572760f, -0.812026830795669730f, 0.583464389312794430f, + -0.812138723620446480f, + 0.583308652937698290f, -0.812250586585203880f, 0.583152895116010540f, + -0.812362419685829120f, + 0.582997115853457700f, -0.812474222918210480f, 0.582841315155767650f, + -0.812585996278237020f, + 0.582685493028668460f, -0.812697739761799490f, 0.582529649477889320f, + -0.812809453364789160f, + 0.582373784509160220f, -0.812921137083098770f, 0.582217898128211790f, + -0.813032790912621930f, + 0.582061990340775550f, -0.813144414849253590f, 0.581906061152583920f, + -0.813256008888889380f, + 0.581750110569369760f, -0.813367573027426570f, 0.581594138596866930f, + -0.813479107260763220f, + 0.581438145240810280f, -0.813590611584798510f, 0.581282130506935110f, + -0.813702085995432700f, + 0.581126094400977620f, -0.813813530488567190f, 0.580970036928674880f, + -0.813924945060104490f, + 0.580813958095764530f, -0.814036329705948300f, 0.580657857907985410f, + -0.814147684422003360f, + 0.580501736371076600f, -0.814259009204175270f, 0.580345593490778300f, + -0.814370304048371070f, + 0.580189429272831680f, -0.814481568950498610f, 0.580033243722978150f, + -0.814592803906467270f, + 0.579877036846960350f, -0.814704008912187080f, 0.579720808650521560f, + -0.814815183963569330f, + 0.579564559139405740f, -0.814926329056526620f, 0.579408288319357980f, + -0.815037444186972220f, + 0.579251996196123550f, -0.815148529350820830f, 0.579095682775449210f, + -0.815259584543988280f, + 0.578939348063081890f, -0.815370609762391290f, 0.578782992064769690f, + -0.815481605001947770f, + 0.578626614786261430f, -0.815592570258576680f, 0.578470216233306740f, + -0.815703505528198260f, + 0.578313796411655590f, -0.815814410806733780f, 0.578157355327059360f, + -0.815925286090105390f, + 0.578000892985269910f, -0.816036131374236700f, 0.577844409392039850f, + -0.816146946655052160f, + 0.577687904553122800f, -0.816257731928477390f, 0.577531378474272830f, + -0.816368487190439200f, + 0.577374831161244880f, -0.816479212436865390f, 0.577218262619794920f, + -0.816589907663684890f, + 0.577061672855679550f, -0.816700572866827850f, 0.576905061874655960f, + -0.816811208042225290f, + 0.576748429682482520f, -0.816921813185809480f, 0.576591776284917870f, + -0.817032388293513880f, + 0.576435101687721830f, -0.817142933361272970f, 0.576278405896654910f, + -0.817253448385022230f, + 0.576121688917478390f, -0.817363933360698460f, 0.575964950755954330f, + -0.817474388284239240f, + 0.575808191417845340f, -0.817584813151583710f, 0.575651410908915250f, + -0.817695207958671680f, + 0.575494609234928230f, -0.817805572701444270f, 0.575337786401649560f, + -0.817915907375843740f, + 0.575180942414845190f, -0.818026211977813440f, 0.575024077280281820f, + -0.818136486503297620f, + 0.574867191003726740f, -0.818246730948241960f, 0.574710283590948450f, + -0.818356945308593150f, + 0.574553355047715760f, -0.818467129580298660f, 0.574396405379798750f, + -0.818577283759307490f, + 0.574239434592967890f, -0.818687407841569570f, 0.574082442692994470f, + -0.818797501823036010f, + 0.573925429685650750f, -0.818907565699658950f, 0.573768395576709560f, + -0.819017599467391500f, + 0.573611340371944610f, -0.819127603122188240f, 0.573454264077130400f, + -0.819237576660004520f, + 0.573297166698042320f, -0.819347520076796900f, 0.573140048240456060f, + -0.819457433368523280f, + 0.572982908710148680f, -0.819567316531142230f, 0.572825748112897550f, + -0.819677169560613760f, + 0.572668566454481160f, -0.819786992452898990f, 0.572511363740678790f, + -0.819896785203959810f, + 0.572354139977270030f, -0.820006547809759680f, 0.572196895170035580f, + -0.820116280266262710f, + 0.572039629324757050f, -0.820225982569434690f, 0.571882342447216590f, + -0.820335654715241840f, + 0.571725034543197120f, -0.820445296699652050f, 0.571567705618482580f, + -0.820554908518633890f, + 0.571410355678857340f, -0.820664490168157460f, 0.571252984730106660f, + -0.820774041644193650f, + 0.571095592778016690f, -0.820883562942714580f, 0.570938179828374360f, + -0.820993054059693470f, + 0.570780745886967370f, -0.821102514991104650f, 0.570623290959583860f, + -0.821211945732923550f, + 0.570465815052012990f, -0.821321346281126740f, 0.570308318170045010f, + -0.821430716631691760f, + 0.570150800319470300f, -0.821540056780597610f, 0.569993261506080650f, + -0.821649366723823830f, + 0.569835701735668110f, -0.821758646457351640f, 0.569678121014025710f, + -0.821867895977163140f, + 0.569520519346947250f, -0.821977115279241550f, 0.569362896740227330f, + -0.822086304359571090f, + 0.569205253199661200f, -0.822195463214137170f, 0.569047588731045220f, + -0.822304591838926350f, + 0.568889903340175970f, -0.822413690229926390f, 0.568732197032851160f, + -0.822522758383125940f, + 0.568574469814869250f, -0.822631796294514990f, 0.568416721692029390f, + -0.822740803960084420f, + 0.568258952670131490f, -0.822849781375826320f, 0.568101162754976570f, + -0.822958728537734000f, + 0.567943351952365670f, -0.823067645441801670f, 0.567785520268101250f, + -0.823176532084024860f, + 0.567627667707986230f, -0.823285388460400110f, 0.567469794277824620f, + -0.823394214566925080f, + 0.567311899983420800f, -0.823503010399598390f, 0.567153984830580100f, + -0.823611775954420260f, + 0.566996048825108680f, -0.823720511227391320f, 0.566838091972813320f, + -0.823829216214513990f, + 0.566680114279501710f, -0.823937890911791370f, 0.566522115750982100f, + -0.824046535315227760f, + 0.566364096393063950f, -0.824155149420828570f, 0.566206056211556840f, + -0.824263733224600450f, + 0.566047995212271560f, -0.824372286722551250f, 0.565889913401019570f, + -0.824480809910689500f, + 0.565731810783613230f, -0.824589302785025290f, 0.565573687365865440f, + -0.824697765341569470f, + 0.565415543153589770f, -0.824806197576334330f, 0.565257378152600910f, + -0.824914599485333080f, + 0.565099192368714090f, -0.825022971064580220f, 0.564940985807745320f, + -0.825131312310090960f, + 0.564782758475511400f, -0.825239623217882130f, 0.564624510377830120f, + -0.825347903783971380f, + 0.564466241520519500f, -0.825456154004377440f, 0.564307951909398750f, + -0.825564373875120490f, + 0.564149641550287680f, -0.825672563392221390f, 0.563991310449007080f, + -0.825780722551702430f, + 0.563832958611378170f, -0.825888851349586780f, 0.563674586043223180f, + -0.825996949781898970f, + 0.563516192750364910f, -0.826105017844664610f, 0.563357778738627020f, + -0.826213055533910110f, + 0.563199344013834090f, -0.826321062845663420f, 0.563040888581811230f, + -0.826429039775953390f, + 0.562882412448384550f, -0.826536986320809960f, 0.562723915619380400f, + -0.826644902476264210f, + 0.562565398100626560f, -0.826752788238348520f, 0.562406859897951140f, + -0.826860643603096080f, + 0.562248301017183150f, -0.826968468566541490f, 0.562089721464152480f, + -0.827076263124720270f, + 0.561931121244689470f, -0.827184027273669020f, 0.561772500364625450f, + -0.827291761009425810f, + 0.561613858829792420f, -0.827399464328029350f, 0.561455196646023280f, + -0.827507137225519830f, + 0.561296513819151470f, -0.827614779697938400f, 0.561137810355011530f, + -0.827722391741327220f, + 0.560979086259438260f, -0.827829973351729810f, 0.560820341538267540f, + -0.827937524525190870f, + 0.560661576197336030f, -0.828045045257755800f, 0.560502790242481060f, + -0.828152535545471410f, + 0.560343983679540860f, -0.828259995384385550f, 0.560185156514354080f, + -0.828367424770547480f, + 0.560026308752760380f, -0.828474823700007130f, 0.559867440400600320f, + -0.828582192168815790f, + 0.559708551463714790f, -0.828689530173025710f, 0.559549641947945870f, + -0.828796837708690610f, + 0.559390711859136140f, -0.828904114771864870f, 0.559231761203129010f, + -0.829011361358604430f, + 0.559072789985768480f, -0.829118577464965980f, 0.558913798212899770f, + -0.829225763087007570f, + 0.558754785890368310f, -0.829332918220788250f, 0.558595753024020760f, + -0.829440042862368170f, + 0.558436699619704100f, -0.829547137007808800f, 0.558277625683266330f, + -0.829654200653172640f, + 0.558118531220556100f, -0.829761233794523050f, 0.557959416237422960f, + -0.829868236427924840f, + 0.557800280739717100f, -0.829975208549443840f, 0.557641124733289420f, + -0.830082150155146970f, + 0.557481948223991660f, -0.830189061241102370f, 0.557322751217676160f, + -0.830295941803379070f, + 0.557163533720196340f, -0.830402791838047550f, 0.557004295737406060f, + -0.830509611341179070f, + 0.556845037275160100f, -0.830616400308846200f, 0.556685758339313890f, + -0.830723158737122880f, + 0.556526458935723720f, -0.830829886622083570f, 0.556367139070246490f, + -0.830936583959804410f, + 0.556207798748739930f, -0.831043250746362320f, 0.556048437977062720f, + -0.831149886977835430f, + 0.555889056761073920f, -0.831256492650303210f, 0.555729655106633520f, + -0.831363067759845920f, + 0.555570233019602290f, -0.831469612302545240f, 0.555410790505841740f, + -0.831576126274483630f, + 0.555251327571214090f, -0.831682609671745120f, 0.555091844221582420f, + -0.831789062490414400f, + 0.554932340462810370f, -0.831895484726577590f, 0.554772816300762580f, + -0.832001876376321840f, + 0.554613271741304040f, -0.832108237435735480f, 0.554453706790301040f, + -0.832214567900907980f, + 0.554294121453620110f, -0.832320867767929680f, 0.554134515737128910f, + -0.832427137032892280f, + 0.553974889646695610f, -0.832533375691888680f, 0.553815243188189090f, + -0.832639583741012770f, + 0.553655576367479310f, -0.832745761176359460f, 0.553495889190436570f, + -0.832851907994024980f, + 0.553336181662932410f, -0.832958024190106670f, 0.553176453790838460f, + -0.833064109760702890f, + 0.553016705580027580f, -0.833170164701913190f, 0.552856937036373290f, + -0.833276189009838240f, + 0.552697148165749770f, -0.833382182680579730f, 0.552537338974032120f, + -0.833488145710240770f, + 0.552377509467096070f, -0.833594078094925140f, 0.552217659650817930f, + -0.833699979830738290f, + 0.552057789531074980f, -0.833805850913786340f, 0.551897899113745320f, + -0.833911691340176730f, + 0.551737988404707450f, -0.834017501106018130f, 0.551578057409841000f, + -0.834123280207419990f, + 0.551418106135026060f, -0.834229028640493420f, 0.551258134586143700f, + -0.834334746401350080f, + 0.551098142769075430f, -0.834440433486103190f, 0.550938130689703880f, + -0.834546089890866760f, + 0.550778098353912230f, -0.834651715611756330f, 0.550618045767584330f, + -0.834757310644888230f, + 0.550457972936604810f, -0.834862874986380010f, 0.550297879866859190f, + -0.834968408632350450f, + 0.550137766564233630f, -0.835073911578919300f, 0.549977633034615000f, + -0.835179383822207580f, + 0.549817479283891020f, -0.835284825358337370f, 0.549657305317949980f, + -0.835390236183431780f, + 0.549497111142680960f, -0.835495616293615350f, 0.549336896763974010f, + -0.835600965685013410f, + 0.549176662187719770f, -0.835706284353752600f, 0.549016407419809390f, + -0.835811572295960590f, + 0.548856132466135290f, -0.835916829507766360f, 0.548695837332590090f, + -0.836022055985299880f, + 0.548535522025067390f, -0.836127251724692160f, 0.548375186549461600f, + -0.836232416722075600f, + 0.548214830911667780f, -0.836337550973583530f, 0.548054455117581880f, + -0.836442654475350380f, + 0.547894059173100190f, -0.836547727223511890f, 0.547733643084120200f, + -0.836652769214204950f, + 0.547573206856539870f, -0.836757780443567190f, 0.547412750496257930f, + -0.836862760907737810f, + 0.547252274009174090f, -0.836967710602857020f, 0.547091777401188530f, + -0.837072629525066000f, + 0.546931260678202190f, -0.837177517670507190f, 0.546770723846116800f, + -0.837282375035324320f, + 0.546610166910834860f, -0.837387201615661940f, 0.546449589878259760f, + -0.837491997407665890f, + 0.546288992754295210f, -0.837596762407483040f, 0.546128375544846060f, + -0.837701496611261700f, + 0.545967738255817680f, -0.837806200015150940f, 0.545807080893116140f, + -0.837910872615301060f, + 0.545646403462648590f, -0.838015514407863700f, 0.545485705970322530f, + -0.838120125388991500f, + 0.545324988422046460f, -0.838224705554837970f, 0.545164250823729320f, + -0.838329254901558300f, + 0.545003493181281160f, -0.838433773425308340f, 0.544842715500612470f, + -0.838538261122245170f, + 0.544681917787634530f, -0.838642717988527300f, 0.544521100048259710f, + -0.838747144020313920f, + 0.544360262288400400f, -0.838851539213765760f, 0.544199404513970420f, + -0.838955903565044350f, + 0.544038526730883930f, -0.839060237070312630f, 0.543877628945055980f, + -0.839164539725734570f, + 0.543716711162402390f, -0.839268811527475230f, 0.543555773388839650f, + -0.839373052471700690f, + 0.543394815630284800f, -0.839477262554578550f, 0.543233837892656000f, + -0.839581441772277120f, + 0.543072840181871850f, -0.839685590120966110f, 0.542911822503851730f, + -0.839789707596816260f, + 0.542750784864516000f, -0.839893794195999410f, 0.542589727269785270f, + -0.839997849914688730f, + 0.542428649725581360f, -0.840101874749058400f, 0.542267552237826520f, + -0.840205868695283580f, + 0.542106434812444030f, -0.840309831749540770f, 0.541945297455357470f, + -0.840413763908007480f, + 0.541784140172491660f, -0.840517665166862440f, 0.541622962969771640f, + -0.840621535522285690f, + 0.541461765853123560f, -0.840725374970458070f, 0.541300548828474120f, + -0.840829183507561640f, + 0.541139311901750910f, -0.840932961129779670f, 0.540978055078882190f, + -0.841036707833296650f, + 0.540816778365796670f, -0.841140423614298080f, 0.540655481768424260f, + -0.841244108468970580f, + 0.540494165292695230f, -0.841347762393501950f, 0.540332828944540820f, + -0.841451385384081260f, + 0.540171472729892970f, -0.841554977436898330f, 0.540010096654684020f, + -0.841658538548144760f, + 0.539848700724847700f, -0.841762068714012490f, 0.539687284946317570f, + -0.841865567930695340f, + 0.539525849325029010f, -0.841969036194387680f, 0.539364393866917150f, + -0.842072473501285450f, + 0.539202918577918240f, -0.842175879847585570f, 0.539041423463969550f, + -0.842279255229485880f, + 0.538879908531008420f, -0.842382599643185960f, 0.538718373784973670f, + -0.842485913084885630f, + 0.538556819231804210f, -0.842589195550786600f, 0.538395244877439950f, + -0.842692447037091560f, + 0.538233650727821700f, -0.842795667540004120f, 0.538072036788890600f, + -0.842898857055729310f, + 0.537910403066588990f, -0.843002015580472830f, 0.537748749566859470f, + -0.843105143110442050f, + 0.537587076295645510f, -0.843208239641845440f, 0.537425383258891660f, + -0.843311305170892030f, + 0.537263670462542530f, -0.843414339693792760f, 0.537101937912544240f, + -0.843517343206759080f, + 0.536940185614843020f, -0.843620315706004040f, 0.536778413575385920f, + -0.843723257187741550f, + 0.536616621800121150f, -0.843826167648186740f, 0.536454810294997090f, + -0.843929047083555870f, + 0.536292979065963180f, -0.844031895490066410f, 0.536131128118969350f, + -0.844134712863936930f, + 0.535969257459966710f, -0.844237499201387020f, 0.535807367094906620f, + -0.844340254498637590f, + 0.535645457029741090f, -0.844442978751910660f, 0.535483527270423370f, + -0.844545671957429240f, + 0.535321577822907010f, -0.844648334111417820f, 0.535159608693146720f, + -0.844750965210101510f, + 0.534997619887097260f, -0.844853565249707010f, 0.534835611410714670f, + -0.844956134226462100f, + 0.534673583269955510f, -0.845058672136595470f, 0.534511535470777010f, + -0.845161178976337140f, + 0.534349468019137520f, -0.845263654741918220f, 0.534187380920995600f, + -0.845366099429570970f, + 0.534025274182310380f, -0.845468513035528830f, 0.533863147809042650f, + -0.845570895556026270f, + 0.533701001807152960f, -0.845673246987299070f, 0.533538836182603120f, + -0.845775567325583900f, + 0.533376650941355560f, -0.845877856567118890f, 0.533214446089372960f, + -0.845980114708143270f, + 0.533052221632619670f, -0.846082341744896940f, 0.532889977577059690f, + -0.846184537673621670f, + 0.532727713928658810f, -0.846286702490559710f, 0.532565430693382580f, + -0.846388836191954930f, + 0.532403127877198010f, -0.846490938774052020f, 0.532240805486072330f, + -0.846593010233097190f, + 0.532078463525973540f, -0.846695050565337450f, 0.531916102002870760f, + -0.846797059767020910f, + 0.531753720922733320f, -0.846899037834397350f, 0.531591320291531780f, + -0.847000984763716880f, + 0.531428900115236910f, -0.847102900551231500f, 0.531266460399820390f, + -0.847204785193193980f, + 0.531104001151255000f, -0.847306638685858320f, 0.530941522375513510f, + -0.847408461025479730f, + 0.530779024078570250f, -0.847510252208314330f, 0.530616506266399450f, + -0.847612012230619660f, + 0.530453968944976320f, -0.847713741088654270f, 0.530291412120277420f, + -0.847815438778677930f, + 0.530128835798278850f, -0.847917105296951410f, 0.529966239984958620f, + -0.848018740639736810f, + 0.529803624686294830f, -0.848120344803297120f, 0.529640989908265910f, + -0.848221917783896990f, + 0.529478335656852090f, -0.848323459577801530f, 0.529315661938033140f, + -0.848424970181277600f, + 0.529152968757790720f, -0.848526449590592650f, 0.528990256122106040f, + -0.848627897802015860f, + 0.528827524036961980f, -0.848729314811817010f, 0.528664772508341540f, + -0.848830700616267530f, + 0.528502001542228480f, -0.848932055211639610f, 0.528339211144607690f, + -0.849033378594206690f, + 0.528176401321464370f, -0.849134670760243630f, 0.528013572078784740f, + -0.849235931706025960f, + 0.527850723422555460f, -0.849337161427830670f, 0.527687855358763720f, + -0.849438359921935950f, + 0.527524967893398200f, -0.849539527184620890f, 0.527362061032447430f, + -0.849640663212165910f, + 0.527199134781901390f, -0.849741768000852440f, 0.527036189147750190f, + -0.849842841546963210f, + 0.526873224135984700f, -0.849943883846782210f, 0.526710239752597010f, + -0.850044894896594070f, + 0.526547236003579330f, -0.850145874692685210f, 0.526384212894925210f, + -0.850246823231342710f, + 0.526221170432628170f, -0.850347740508854980f, 0.526058108622682760f, + -0.850448626521511650f, + 0.525895027471084740f, -0.850549481265603370f, 0.525731926983829640f, + -0.850650304737422200f, + 0.525568807166914680f, -0.850751096933260790f, 0.525405668026336810f, + -0.850851857849413640f, + 0.525242509568094710f, -0.850952587482175730f, 0.525079331798186890f, + -0.851053285827843790f, + 0.524916134722612890f, -0.851153952882715340f, 0.524752918347373360f, + -0.851254588643089120f, + 0.524589682678468840f, -0.851355193105265200f, 0.524426427721901510f, + -0.851455766265544310f, + 0.524263153483673470f, -0.851556308120228870f, 0.524099859969787810f, + -0.851656818665622370f, + 0.523936547186248600f, -0.851757297898029120f, 0.523773215139060170f, + -0.851857745813754840f, + 0.523609863834228030f, -0.851958162409106380f, 0.523446493277757940f, + -0.852058547680391580f, + 0.523283103475656430f, -0.852158901623919830f, 0.523119694433931250f, + -0.852259224236001090f, + 0.522956266158590140f, -0.852359515512947090f, 0.522792818655642200f, + -0.852459775451070100f, + 0.522629351931096720f, -0.852560004046683970f, 0.522465865990963900f, + -0.852660201296103760f, + 0.522302360841254700f, -0.852760367195645300f, 0.522138836487980650f, + -0.852860501741625860f, + 0.521975292937154390f, -0.852960604930363630f, 0.521811730194788550f, + -0.853060676758178320f, + 0.521648148266897090f, -0.853160717221390420f, 0.521484547159494550f, + -0.853260726316321770f, + 0.521320926878595550f, -0.853360704039295430f, 0.521157287430216610f, + -0.853460650386635320f, + 0.520993628820373810f, -0.853560565354666840f, 0.520829951055084780f, + -0.853660448939716270f, + 0.520666254140367270f, -0.853760301138111300f, 0.520502538082239790f, + -0.853860121946180660f, + 0.520338802886721960f, -0.853959911360254060f, 0.520175048559833760f, + -0.854059669376662780f, + 0.520011275107596040f, -0.854159395991738730f, 0.519847482536030300f, + -0.854259091201815420f, + 0.519683670851158520f, -0.854358755003227440f, 0.519519840059003870f, + -0.854458387392310060f, + 0.519355990165589530f, -0.854557988365400530f, 0.519192121176940360f, + -0.854657557918836460f, + 0.519028233099080970f, -0.854757096048957110f, 0.518864325938037000f, + -0.854856602752102850f, + 0.518700399699835170f, -0.854956078024614820f, 0.518536454390502110f, + -0.855055521862835950f, + 0.518372490016066220f, -0.855154934263109620f, 0.518208506582555460f, + -0.855254315221781080f, + 0.518044504095999340f, -0.855353664735196030f, 0.517880482562427800f, + -0.855452982799701830f, + 0.517716441987871150f, -0.855552269411646970f, 0.517552382378360990f, + -0.855651524567380690f, + 0.517388303739929060f, -0.855750748263253920f, 0.517224206078608310f, + -0.855849940495618240f, + 0.517060089400432130f, -0.855949101260826790f, 0.516895953711434260f, + -0.856048230555233820f, + 0.516731799017649980f, -0.856147328375194470f, 0.516567625325114350f, + -0.856246394717065210f, + 0.516403432639863990f, -0.856345429577203610f, 0.516239220967935620f, + -0.856444432951968480f, + 0.516074990315366630f, -0.856543404837719960f, 0.515910740688195650f, + -0.856642345230818720f, + 0.515746472092461380f, -0.856741254127627470f, 0.515582184534203790f, + -0.856840131524509220f, + 0.515417878019463150f, -0.856938977417828650f, 0.515253552554280290f, + -0.857037791803951680f, + 0.515089208144697270f, -0.857136574679244870f, 0.514924844796756490f, + -0.857235326040076460f, + 0.514760462516501200f, -0.857334045882815590f, 0.514596061309975040f, + -0.857432734203832700f, + 0.514431641183222930f, -0.857531390999499040f, 0.514267202142289830f, + -0.857630016266187620f, + 0.514102744193221660f, -0.857728610000272120f, 0.513938267342065490f, + -0.857827172198127320f, + 0.513773771594868030f, -0.857925702856129790f, 0.513609256957677900f, + -0.858024201970656540f, + 0.513444723436543570f, -0.858122669538086020f, 0.513280171037514330f, + -0.858221105554798250f, + 0.513115599766640560f, -0.858319510017173440f, 0.512951009629972860f, + -0.858417882921594040f, + 0.512786400633563070f, -0.858516224264442740f, 0.512621772783463100f, + -0.858614534042104080f, + 0.512457126085725800f, -0.858712812250963520f, 0.512292460546404980f, + -0.858811058887407500f, + 0.512127776171554690f, -0.858909273947823900f, 0.511963072967230200f, + -0.859007457428601410f, + 0.511798350939487000f, -0.859105609326130340f, 0.511633610094381350f, + -0.859203729636801920f, + 0.511468850437970520f, -0.859301818357008360f, 0.511304071976311890f, + -0.859399875483143450f, + 0.511139274715464390f, -0.859497901011601620f, 0.510974458661486720f, + -0.859595894938779080f, + 0.510809623820439040f, -0.859693857261072610f, 0.510644770198381730f, + -0.859791787974880540f, + 0.510479897801375700f, -0.859889687076602290f, 0.510315006635483350f, + -0.859987554562638200f, + 0.510150096706766700f, -0.860085390429390140f, 0.509985168021289570f, + -0.860183194673260880f, + 0.509820220585115560f, -0.860280967290654510f, 0.509655254404309250f, + -0.860378708277976130f, + 0.509490269484936360f, -0.860476417631632070f, 0.509325265833062480f, + -0.860574095348029980f, + 0.509160243454754750f, -0.860671741423578380f, 0.508995202356080310f, + -0.860769355854687060f, + 0.508830142543106990f, -0.860866938637767310f, 0.508665064021904260f, + -0.860964489769230900f, + 0.508499966798540810f, -0.861062009245491480f, 0.508334850879087470f, + -0.861159497062963350f, + 0.508169716269614710f, -0.861256953218062060f, 0.508004562976194010f, + -0.861354377707204800f, + 0.507839391004897940f, -0.861451770526809210f, 0.507674200361798890f, + -0.861549131673294720f, + 0.507508991052970870f, -0.861646461143081300f, 0.507343763084487920f, + -0.861743758932590700f, + 0.507178516462425290f, -0.861841025038245330f, 0.507013251192858340f, + -0.861938259456469180f, + 0.506847967281863320f, -0.862035462183687210f, 0.506682664735517600f, + -0.862132633216325380f, + 0.506517343559898530f, -0.862229772550811240f, 0.506352003761084800f, + -0.862326880183573060f, + 0.506186645345155450f, -0.862423956111040500f, 0.506021268318189830f, + -0.862521000329644520f, + 0.505855872686268860f, -0.862618012835816740f, 0.505690458455473340f, + -0.862714993625990690f, + 0.505525025631885510f, -0.862811942696600330f, 0.505359574221587390f, + -0.862908860044081290f, + 0.505194104230662240f, -0.863005745664870210f, 0.505028615665194300f, + -0.863102599555404800f, + 0.504863108531267480f, -0.863199421712124160f, 0.504697582834967680f, + -0.863296212131468230f, + 0.504532038582380380f, -0.863392970809878310f, 0.504366475779592150f, + -0.863489697743797140f, + 0.504200894432690560f, -0.863586392929667990f, 0.504035294547763080f, + -0.863683056363935940f, + 0.503869676130898950f, -0.863779688043046610f, 0.503704039188186960f, + -0.863876287963447510f, + 0.503538383725717580f, -0.863972856121586700f, 0.503372709749581150f, + -0.864069392513913680f, + 0.503207017265869030f, -0.864165897136879300f, 0.503041306280673450f, + -0.864262369986934950f, + 0.502875576800086880f, -0.864358811060534030f, 0.502709828830203100f, + -0.864455220354130250f, + 0.502544062377115800f, -0.864551597864179230f, 0.502378277446919870f, + -0.864647943587137480f, + 0.502212474045710900f, -0.864744257519462380f, 0.502046652179584660f, + -0.864840539657612980f, + 0.501880811854638400f, -0.864936789998049020f, 0.501714953076969230f, + -0.865033008537231750f, + 0.501549075852675390f, -0.865129195271623690f, 0.501383180187855880f, + -0.865225350197688090f, + 0.501217266088609950f, -0.865321473311889800f, 0.501051333561038040f, + -0.865417564610694410f, + 0.500885382611240940f, -0.865513624090568980f, 0.500719413245319880f, + -0.865609651747981880f, + 0.500553425469377640f, -0.865705647579402270f, 0.500387419289516580f, + -0.865801611581300760f, + 0.500221394711840680f, -0.865897543750148820f, 0.500055351742453860f, + -0.865993444082419520f, + 0.499889290387461380f, -0.866089312574586770f, 0.499723210652968710f, + -0.866185149223125730f, + 0.499557112545081890f, -0.866280954024512990f, 0.499390996069908220f, + -0.866376726975225830f, + 0.499224861233555030f, -0.866472468071743050f, 0.499058708042130930f, + -0.866568177310544360f, + 0.498892536501744750f, -0.866663854688111020f, 0.498726346618505960f, + -0.866759500200925290f, + 0.498560138398525200f, -0.866855113845470320f, 0.498393911847913150f, + -0.866950695618231020f, + 0.498227666972781870f, -0.867046245515692650f, 0.498061403779243520f, + -0.867141763534342360f, + 0.497895122273410930f, -0.867237249670668400f, 0.497728822461398100f, + -0.867332703921159690f, + 0.497562504349319090f, -0.867428126282306920f, 0.497396167943289340f, + -0.867523516750601460f, + 0.497229813249424340f, -0.867618875322536230f, 0.497063440273840310f, + -0.867714201994605140f, + 0.496897049022654640f, -0.867809496763303210f, 0.496730639501984710f, + -0.867904759625126920f, + 0.496564211717949340f, -0.867999990576573400f, 0.496397765676667160f, + -0.868095189614141670f, + 0.496231301384258310f, -0.868190356734331310f, 0.496064818846843060f, + -0.868285491933643240f, + 0.495898318070542240f, -0.868380595208579800f, 0.495731799061478020f, + -0.868475666555644120f, + 0.495565261825772490f, -0.868570705971340900f, 0.495398706369549080f, + -0.868665713452175580f, + 0.495232132698931350f, -0.868760688994655190f, 0.495065540820043610f, + -0.868855632595287750f, + 0.494898930739011310f, -0.868950544250582380f, 0.494732302461959820f, + -0.869045423957049530f, + 0.494565655995016010f, -0.869140271711200560f, 0.494398991344306760f, + -0.869235087509548250f, + 0.494232308515959730f, -0.869329871348606730f, 0.494065607516103730f, + -0.869424623224890780f, + 0.493898888350867430f, -0.869519343134916970f, 0.493732151026381070f, + -0.869614031075202300f, + 0.493565395548774880f, -0.869708687042265560f, 0.493398621924179830f, + -0.869803311032626650f, + 0.493231830158728070f, -0.869897903042806340f, 0.493065020258551650f, + -0.869992463069326870f, + 0.492898192229784090f, -0.870086991108711350f, 0.492731346078558840f, + -0.870181487157484560f, + 0.492564481811010650f, -0.870275951212171830f, 0.492397599433274550f, + -0.870370383269300160f, + 0.492230698951486080f, -0.870464783325397670f, 0.492063780371782060f, + -0.870559151376993250f, + 0.491896843700299240f, -0.870653487420617540f, 0.491729888943175820f, + -0.870747791452801790f, + 0.491562916106550060f, -0.870842063470078860f, 0.491395925196560830f, + -0.870936303468982760f, + 0.491228916219348330f, -0.871030511446048260f, 0.491061889181052590f, + -0.871124687397811900f, + 0.490894844087815140f, -0.871218831320810900f, 0.490727780945777570f, + -0.871312943211583920f, + 0.490560699761082080f, -0.871407023066670950f, 0.490393600539872130f, + -0.871501070882612530f, + 0.490226483288291100f, -0.871595086655951090f, 0.490059348012483910f, + -0.871689070383229740f, + 0.489892194718595300f, -0.871783022060993010f, 0.489725023412770970f, + -0.871876941685786890f, + 0.489557834101157550f, -0.871970829254157700f, 0.489390626789901920f, + -0.872064684762653970f, + 0.489223401485152030f, -0.872158508207824480f, 0.489056158193055980f, + -0.872252299586219860f, + 0.488888896919763230f, -0.872346058894391540f, 0.488721617671423250f, + -0.872439786128892280f, + 0.488554320454186230f, -0.872533481286276060f, 0.488387005274203590f, + -0.872627144363097960f, + 0.488219672137626740f, -0.872720775355914300f, 0.488052321050608310f, + -0.872814374261282390f, + 0.487884952019301210f, -0.872907941075760970f, 0.487717565049858860f, + -0.873001475795909920f, + 0.487550160148436050f, -0.873094978418290090f, 0.487382737321187310f, + -0.873188448939463790f, + 0.487215296574268820f, -0.873281887355994210f, 0.487047837913836550f, + -0.873375293664446000f, + 0.486880361346047400f, -0.873468667861384880f, 0.486712866877059340f, + -0.873562009943377740f, + 0.486545354513030270f, -0.873655319906992630f, 0.486377824260119500f, + -0.873748597748798870f, + 0.486210276124486530f, -0.873841843465366750f, 0.486042710112291390f, + -0.873935057053268130f, + 0.485875126229695420f, -0.874028238509075630f, 0.485707524482859750f, + -0.874121387829363330f, + 0.485539904877947020f, -0.874214505010706300f, 0.485372267421119770f, + -0.874307590049680950f, + 0.485204612118541880f, -0.874400642942864790f, 0.485036938976377450f, + -0.874493663686836450f, + 0.484869248000791120f, -0.874586652278176110f, 0.484701539197948730f, + -0.874679608713464510f, + 0.484533812574016120f, -0.874772532989284150f, 0.484366068135160480f, + -0.874865425102218210f, + 0.484198305887549140f, -0.874958285048851540f, 0.484030525837350010f, + -0.875051112825769970f, + 0.483862727990732320f, -0.875143908429560250f, 0.483694912353865080f, + -0.875236671856810870f, + 0.483527078932918740f, -0.875329403104110780f, 0.483359227734063980f, + -0.875422102168050830f, + 0.483191358763471910f, -0.875514769045222740f, 0.483023472027315050f, + -0.875607403732219240f, + 0.482855567531765670f, -0.875700006225634600f, 0.482687645282997510f, + -0.875792576522063880f, + 0.482519705287184520f, -0.875885114618103700f, 0.482351747550501030f, + -0.875977620510351660f, + 0.482183772079122830f, -0.876070094195406600f, 0.482015778879225530f, + -0.876162535669868460f, + 0.481847767956986080f, -0.876254944930338400f, 0.481679739318581490f, + -0.876347321973419020f, + 0.481511692970189920f, -0.876439666795713610f, 0.481343628917989870f, + -0.876531979393827100f, + 0.481175547168160360f, -0.876624259764365310f, 0.481007447726881640f, + -0.876716507903935400f, + 0.480839330600333900f, -0.876808723809145760f, 0.480671195794698690f, + -0.876900907476605650f, + 0.480503043316157670f, -0.876993058902925780f, 0.480334873170893070f, + -0.877085178084718310f, + 0.480166685365088440f, -0.877177265018595940f, 0.479998479904927220f, + -0.877269319701173170f, + 0.479830256796594250f, -0.877361342129065140f, 0.479662016046274340f, + -0.877453332298888560f, + 0.479493757660153060f, -0.877545290207261240f, 0.479325481644417130f, + -0.877637215850802120f, + 0.479157188005253310f, -0.877729109226131570f, 0.478988876748849550f, + -0.877820970329870500f, + 0.478820547881394050f, -0.877912799158641730f, 0.478652201409075550f, + -0.878004595709069080f, + 0.478483837338084080f, -0.878096359977777130f, 0.478315455674609480f, + -0.878188091961392250f, + 0.478147056424843120f, -0.878279791656541460f, 0.477978639594976110f, + -0.878371459059853590f, + 0.477810205191201040f, -0.878463094167957870f, 0.477641753219710590f, + -0.878554696977485340f, + 0.477473283686698060f, -0.878646267485068130f, 0.477304796598358010f, + -0.878737805687339280f, + 0.477136291960884750f, -0.878829311580933360f, 0.476967769780474230f, + -0.878920785162485840f, + 0.476799230063322250f, -0.879012226428633410f, 0.476630672815625380f, + -0.879103635376014330f, + 0.476462098043581310f, -0.879195012001267370f, 0.476293505753387750f, + -0.879286356301033250f, + 0.476124895951243630f, -0.879377668271953180f, 0.475956268643348220f, + -0.879468947910670100f, + 0.475787623835901120f, -0.879560195213827890f, 0.475618961535103410f, + -0.879651410178071470f, + 0.475450281747155870f, -0.879742592800047410f, 0.475281584478260800f, + -0.879833743076402940f, + 0.475112869734620470f, -0.879924861003786860f, 0.474944137522437860f, + -0.880015946578848960f, + 0.474775387847917230f, -0.880106999798240360f, 0.474606620717262560f, + -0.880198020658613190f, + 0.474437836136679340f, -0.880289009156620890f, 0.474269034112372920f, + -0.880379965288918260f, + 0.474100214650550020f, -0.880470889052160750f, 0.473931377757417560f, + -0.880561780443005590f, + 0.473762523439182850f, -0.880652639458111010f, 0.473593651702054640f, + -0.880743466094136230f, + 0.473424762552241530f, -0.880834260347742040f, 0.473255855995953380f, + -0.880925022215589880f, + 0.473086932039400220f, -0.881015751694342760f, 0.472917990688792760f, + -0.881106448780665130f, + 0.472749031950342900f, -0.881197113471221980f, 0.472580055830262250f, + -0.881287745762680100f, + 0.472411062334764100f, -0.881378345651706810f, 0.472242051470061650f, + -0.881468913134971330f, + 0.472073023242368660f, -0.881559448209143780f, 0.471903977657900320f, + -0.881649950870895260f, + 0.471734914722871430f, -0.881740421116898320f, 0.471565834443498480f, + -0.881830858943826620f, + 0.471396736825997810f, -0.881921264348354940f, 0.471227621876586400f, + -0.882011637327159590f, + 0.471058489601482610f, -0.882101977876917580f, 0.470889340006904520f, + -0.882192285994307430f, + 0.470720173099071710f, -0.882282561676008600f, 0.470550988884203490f, + -0.882372804918702290f, + 0.470381787368520710f, -0.882463015719070040f, 0.470212568558244280f, + -0.882553194073795400f, + 0.470043332459595620f, -0.882643339979562790f, 0.469874079078797470f, + -0.882733453433057540f, + 0.469704808422072460f, -0.882823534430966730f, 0.469535520495644510f, + -0.882913582969978020f, + 0.469366215305737630f, -0.883003599046780720f, 0.469196892858576630f, + -0.883093582658065370f, + 0.469027553160387240f, -0.883183533800523280f, 0.468858196217395330f, + -0.883273452470847430f, + 0.468688822035827960f, -0.883363338665731580f, 0.468519430621912420f, + -0.883453192381870920f, + 0.468350021981876530f, -0.883543013615961880f, 0.468180596121949400f, + -0.883632802364701760f, + 0.468011153048359830f, -0.883722558624789660f, 0.467841692767338220f, + -0.883812282392925090f, + 0.467672215285114710f, -0.883901973665809470f, 0.467502720607920920f, + -0.883991632440144890f, + 0.467333208741988530f, -0.884081258712634990f, 0.467163679693549770f, + -0.884170852479984500f, + 0.466994133468838110f, -0.884260413738899080f, 0.466824570074086950f, + -0.884349942486086120f, + 0.466654989515530970f, -0.884439438718253700f, 0.466485391799405010f, + -0.884528902432111350f, + 0.466315776931944480f, -0.884618333624369920f, 0.466146144919386000f, + -0.884707732291740930f, + 0.465976495767966130f, -0.884797098430937790f, 0.465806829483922770f, + -0.884886432038674560f, + 0.465637146073493770f, -0.884975733111666660f, 0.465467445542917800f, + -0.885065001646630930f, + 0.465297727898434650f, -0.885154237640285110f, 0.465127993146283950f, + -0.885243441089348270f, + 0.464958241292706740f, -0.885332611990540590f, 0.464788472343944160f, + -0.885421750340583570f, + 0.464618686306237820f, -0.885510856136199950f, 0.464448883185830770f, + -0.885599929374113360f, + 0.464279062988965760f, -0.885688970051048960f, 0.464109225721887010f, + -0.885777978163732940f, + 0.463939371390838460f, -0.885866953708892790f, 0.463769500002065680f, + -0.885955896683257030f, + 0.463599611561814120f, -0.886044807083555490f, 0.463429706076329880f, + -0.886133684906519340f, + 0.463259783551860260f, -0.886222530148880640f, 0.463089843994652470f, + -0.886311342807372890f, + 0.462919887410955130f, -0.886400122878730490f, 0.462749913807016850f, + -0.886488870359689600f, + 0.462579923189086810f, -0.886577585246987040f, 0.462409915563415540f, + -0.886666267537360890f, + 0.462239890936253280f, -0.886754917227550950f, 0.462069849313851810f, + -0.886843534314297300f, + 0.461899790702462840f, -0.886932118794342080f, 0.461729715108338770f, + -0.887020670664428360f, + 0.461559622537733190f, -0.887109189921300060f, 0.461389512996899450f, + -0.887197676561702900f, + 0.461219386492092430f, -0.887286130582383150f, 0.461049243029567010f, + -0.887374551980088740f, + 0.460879082615578690f, -0.887462940751568840f, 0.460708905256384190f, + -0.887551296893573370f, + 0.460538710958240010f, -0.887639620402853930f, 0.460368499727404070f, + -0.887727911276163020f, + 0.460198271570134270f, -0.887816169510254550f, 0.460028026492689700f, + -0.887904395101883240f, + 0.459857764501329650f, -0.887992588047805560f, 0.459687485602313870f, + -0.888080748344778900f, + 0.459517189801903590f, -0.888168875989561620f, 0.459346877106359570f, + -0.888256970978913870f, + 0.459176547521944150f, -0.888345033309596240f, 0.459006201054919680f, + -0.888433062978371320f, + 0.458835837711549120f, -0.888521059982002260f, 0.458665457498096670f, + -0.888609024317253750f, + 0.458495060420826220f, -0.888696955980891710f, 0.458324646486003300f, + -0.888784854969682850f, + 0.458154215699893230f, -0.888872721280395520f, 0.457983768068762180f, + -0.888960554909799310f, + 0.457813303598877290f, -0.889048355854664570f, 0.457642822296505770f, + -0.889136124111763240f, + 0.457472324167916110f, -0.889223859677868210f, 0.457301809219376800f, + -0.889311562549753850f, + 0.457131277457156980f, -0.889399232724195520f, 0.456960728887527030f, + -0.889486870197969790f, + 0.456790163516757220f, -0.889574474967854580f, 0.456619581351118960f, + -0.889662047030628790f, + 0.456448982396883860f, -0.889749586383072890f, 0.456278366660324670f, + -0.889837093021967900f, + 0.456107734147714220f, -0.889924566944096720f, 0.455937084865326030f, + -0.890012008146243260f, + 0.455766418819434750f, -0.890099416625192210f, 0.455595736016314920f, + -0.890186792377730240f, + 0.455425036462242420f, -0.890274135400644480f, 0.455254320163493210f, + -0.890361445690723730f, + 0.455083587126343840f, -0.890448723244757880f, 0.454912837357072050f, + -0.890535968059537830f, + 0.454742070861955450f, -0.890623180131855930f, 0.454571287647273000f, + -0.890710359458505520f, + 0.454400487719303750f, -0.890797506036281490f, 0.454229671084327320f, + -0.890884619861979530f, + 0.454058837748624540f, -0.890971700932396750f, 0.453887987718476050f, + -0.891058749244331590f, + 0.453717121000163930f, -0.891145764794583180f, 0.453546237599970260f, + -0.891232747579952520f, + 0.453375337524177750f, -0.891319697597241390f, 0.453204420779070300f, + -0.891406614843252900f, + 0.453033487370931580f, -0.891493499314791380f, 0.452862537306046810f, + -0.891580351008662290f, + 0.452691570590700860f, -0.891667169921672390f, 0.452520587231180100f, + -0.891753956050629460f, + 0.452349587233771000f, -0.891840709392342720f, 0.452178570604760410f, + -0.891927429943622510f, + 0.452007537350436530f, -0.892014117701280360f, 0.451836487477087430f, + -0.892100772662129170f, + 0.451665420991002540f, -0.892187394822982480f, 0.451494337898471210f, + -0.892273984180655730f, + 0.451323238205783520f, -0.892360540731965360f, 0.451152121919230710f, + -0.892447064473728680f, + 0.450980989045103810f, -0.892533555402764690f, 0.450809839589695340f, + -0.892620013515893040f, + 0.450638673559297760f, -0.892706438809935280f, 0.450467490960204110f, + -0.892792831281713610f, + 0.450296291798708730f, -0.892879190928051680f, 0.450125076081105750f, + -0.892965517745774260f, + 0.449953843813690580f, -0.893051811731707450f, 0.449782595002758860f, + -0.893138072882678210f, + 0.449611329654606600f, -0.893224301195515320f, 0.449440047775531260f, + -0.893310496667048090f, + 0.449268749371829920f, -0.893396659294107610f, 0.449097434449801100f, + -0.893482789073525850f, + 0.448926103015743260f, -0.893568886002136020f, 0.448754755075956020f, + -0.893654950076772430f, + 0.448583390636739300f, -0.893740981294271040f, 0.448412009704393430f, + -0.893826979651468620f, + 0.448240612285220000f, -0.893912945145203250f, 0.448069198385520340f, + -0.893998877772314240f, + 0.447897768011597310f, -0.894084777529641990f, 0.447726321169753750f, + -0.894170644414028270f, + 0.447554857866293010f, -0.894256478422316040f, 0.447383378107519710f, + -0.894342279551349480f, + 0.447211881899738260f, -0.894428047797973800f, 0.447040369249254500f, + -0.894513783159035620f, + 0.446868840162374330f, -0.894599485631382580f, 0.446697294645404090f, + -0.894685155211863980f, + 0.446525732704651400f, -0.894770791897329550f, 0.446354154346423840f, + -0.894856395684630930f, + 0.446182559577030120f, -0.894941966570620750f, 0.446010948402779110f, + -0.895027504552152630f, + 0.445839320829980350f, -0.895113009626081760f, 0.445667676864944350f, + -0.895198481789264200f, + 0.445496016513981740f, -0.895283921038557580f, 0.445324339783404240f, + -0.895369327370820310f, + 0.445152646679523590f, -0.895454700782912450f, 0.444980937208652780f, + -0.895540041271694840f, + 0.444809211377105000f, -0.895625348834030000f, 0.444637469191193790f, + -0.895710623466781320f, + 0.444465710657234110f, -0.895795865166813420f, 0.444293935781540580f, + -0.895881073930992370f, + 0.444122144570429260f, -0.895966249756185110f, 0.443950337030216250f, + -0.896051392639260040f, + 0.443778513167218220f, -0.896136502577086770f, 0.443606672987753080f, + -0.896221579566535920f, + 0.443434816498138430f, -0.896306623604479660f, 0.443262943704693380f, + -0.896391634687790820f, + 0.443091054613736990f, -0.896476612813344010f, 0.442919149231588980f, + -0.896561557978014960f, + 0.442747227564570130f, -0.896646470178680150f, 0.442575289619001170f, + -0.896731349412217880f, + 0.442403335401204130f, -0.896816195675507190f, 0.442231364917501090f, + -0.896901008965428680f, + 0.442059378174214760f, -0.896985789278863970f, 0.441887375177668960f, + -0.897070536612695870f, + 0.441715355934187310f, -0.897155250963808550f, 0.441543320450094920f, + -0.897239932329087050f, + 0.441371268731716620f, -0.897324580705418320f, 0.441199200785378660f, + -0.897409196089689720f, + 0.441027116617407340f, -0.897493778478790190f, 0.440855016234129430f, + -0.897578327869610230f, + 0.440682899641873020f, -0.897662844259040750f, 0.440510766846965880f, + -0.897747327643974690f, + 0.440338617855737300f, -0.897831778021305650f, 0.440166452674516480f, + -0.897916195387928550f, + 0.439994271309633260f, -0.898000579740739880f, 0.439822073767418610f, + -0.898084931076636780f, + 0.439649860054203420f, -0.898169249392518080f, 0.439477630176319860f, + -0.898253534685283570f, + 0.439305384140100060f, -0.898337786951834190f, 0.439133121951876930f, + -0.898422006189072530f, + 0.438960843617984430f, -0.898506192393901840f, 0.438788549144756290f, + -0.898590345563227030f, + 0.438616238538527710f, -0.898674465693953820f, 0.438443911805633860f, + -0.898758552782989440f, + 0.438271568952410480f, -0.898842606827242260f, 0.438099209985194580f, + -0.898926627823621870f, + 0.437926834910322860f, -0.899010615769039070f, 0.437754443734133470f, + -0.899094570660405770f, + 0.437582036462964340f, -0.899178492494635330f, 0.437409613103154850f, + -0.899262381268642000f, + 0.437237173661044200f, -0.899346236979341460f, 0.437064718142972370f, + -0.899430059623650860f, + 0.436892246555280470f, -0.899513849198487870f, 0.436719758904309310f, + -0.899597605700772180f, + 0.436547255196401250f, -0.899681329127423930f, 0.436374735437898510f, + -0.899765019475365020f, + 0.436202199635143950f, -0.899848676741518580f, 0.436029647794481670f, + -0.899932300922808400f, + 0.435857079922255470f, -0.900015892016160280f, 0.435684496024810520f, + -0.900099450018500340f, + 0.435511896108492170f, -0.900182974926756700f, 0.435339280179646070f, + -0.900266466737858480f, + 0.435166648244619370f, -0.900349925448735600f, 0.434994000309758710f, + -0.900433351056319830f, + 0.434821336381412350f, -0.900516743557543520f, 0.434648656465928430f, + -0.900600102949340790f, + 0.434475960569655710f, -0.900683429228646860f, 0.434303248698944100f, + -0.900766722392397860f, + 0.434130520860143310f, -0.900849982437531450f, 0.433957777059604480f, + -0.900933209360986200f, + 0.433785017303678520f, -0.901016403159702330f, 0.433612241598717640f, + -0.901099563830620950f, + 0.433439449951074200f, -0.901182691370684410f, 0.433266642367100940f, + -0.901265785776836580f, + 0.433093818853152010f, -0.901348847046022030f, 0.432920979415581220f, + -0.901431875175186970f, + 0.432748124060743760f, -0.901514870161278630f, 0.432575252794994810f, + -0.901597832001245660f, + 0.432402365624690140f, -0.901680760692037730f, 0.432229462556186770f, + -0.901763656230605610f, + 0.432056543595841450f, -0.901846518613901860f, 0.431883608750012300f, + -0.901929347838879350f, + 0.431710658025057370f, -0.902012143902493070f, 0.431537691427335500f, + -0.902094906801698900f, + 0.431364708963206440f, -0.902177636533453510f, 0.431191710639030000f, + -0.902260333094715540f, + 0.431018696461167080f, -0.902342996482444200f, 0.430845666435978820f, + -0.902425626693600270f, + 0.430672620569826860f, -0.902508223725145830f, 0.430499558869073930f, + -0.902590787574043870f, + 0.430326481340082610f, -0.902673318237258830f, 0.430153387989216930f, + -0.902755815711756120f, + 0.429980278822840570f, -0.902838279994502830f, 0.429807153847318770f, + -0.902920711082466630f, + 0.429634013069016500f, -0.903003108972617040f, 0.429460856494299490f, + -0.903085473661924600f, + 0.429287684129534720f, -0.903167805147360610f, 0.429114495981088690f, + -0.903250103425898400f, + 0.428941292055329550f, -0.903332368494511820f, 0.428768072358625240f, + -0.903414600350176290f, + 0.428594836897344400f, -0.903496798989868450f, 0.428421585677856760f, + -0.903578964410565950f, + 0.428248318706531910f, -0.903661096609247980f, 0.428075035989740780f, + -0.903743195582894620f, + 0.427901737533854240f, -0.903825261328487390f, 0.427728423345243860f, + -0.903907293843009050f, + 0.427555093430282200f, -0.903989293123443340f, 0.427381747795341770f, + -0.904071259166775440f, + 0.427208386446796370f, -0.904153191969991670f, 0.427035009391019790f, + -0.904235091530079750f, + 0.426861616634386490f, -0.904316957844028320f, 0.426688208183271970f, + -0.904398790908827350f, + 0.426514784044051520f, -0.904480590721468250f, 0.426341344223101880f, + -0.904562357278943190f, + 0.426167888726799620f, -0.904644090578246240f, 0.425994417561522450f, + -0.904725790616371930f, + 0.425820930733648300f, -0.904807457390316540f, 0.425647428249555590f, + -0.904889090897077470f, + 0.425473910115623910f, -0.904970691133653250f, 0.425300376338232590f, + -0.905052258097043590f, + 0.425126826923762410f, -0.905133791784249580f, 0.424953261878594060f, + -0.905215292192273480f, + 0.424779681209108810f, -0.905296759318118820f, 0.424606084921689220f, + -0.905378193158789980f, + 0.424432473022717420f, -0.905459593711293250f, 0.424258845518577010f, + -0.905540960972635480f, + 0.424085202415651670f, -0.905622294939825160f, 0.423911543720325580f, + -0.905703595609872010f, + 0.423737869438983950f, -0.905784862979786440f, 0.423564179578011960f, + -0.905866097046580940f, + 0.423390474143796100f, -0.905947297807268460f, 0.423216753142722780f, + -0.906028465258863490f, + 0.423043016581179100f, -0.906109599398381980f, 0.422869264465553170f, + -0.906190700222840540f, + 0.422695496802232950f, -0.906271767729257660f, 0.422521713597607870f, + -0.906352801914652280f, + 0.422347914858067000f, -0.906433802776045460f, 0.422174100590000820f, + -0.906514770310458800f, + 0.422000270799799790f, -0.906595704514915330f, 0.421826425493854910f, + -0.906676605386439460f, + 0.421652564678558380f, -0.906757472922056550f, 0.421478688360302220f, + -0.906838307118793540f, + 0.421304796545479700f, -0.906919107973678030f, 0.421130889240484140f, + -0.906999875483739610f, + 0.420956966451709440f, -0.907080609646008450f, 0.420783028185550630f, + -0.907161310457516250f, + 0.420609074448402510f, -0.907241977915295930f, 0.420435105246661220f, + -0.907322612016381310f, + 0.420261120586723050f, -0.907403212757808000f, 0.420087120474984590f, + -0.907483780136612570f, + 0.419913104917843730f, -0.907564314149832520f, 0.419739073921698180f, + -0.907644814794507090f, + 0.419565027492946940f, -0.907725282067676330f, 0.419390965637989050f, + -0.907805715966381820f, + 0.419216888363223960f, -0.907886116487666150f, 0.419042795675052480f, + -0.907966483628573240f, + 0.418868687579875110f, -0.908046817386148340f, 0.418694564084093610f, + -0.908127117757437600f, + 0.418520425194109700f, -0.908207384739488700f, 0.418346270916326310f, + -0.908287618329350450f, + 0.418172101257146430f, -0.908367818524072780f, 0.417997916222973550f, + -0.908447985320707250f, + 0.417823715820212380f, -0.908528118716306120f, 0.417649500055267410f, + -0.908608218707923190f, + 0.417475268934544340f, -0.908688285292613360f, 0.417301022464449060f, + -0.908768318467432780f, + 0.417126760651387870f, -0.908848318229439120f, 0.416952483501768280f, + -0.908928284575690640f, + 0.416778191021997590f, -0.909008217503247450f, 0.416603883218484410f, + -0.909088117009170580f, + 0.416429560097637320f, -0.909167983090522270f, 0.416255221665865480f, + -0.909247815744366310f, + 0.416080867929579320f, -0.909327614967767260f, 0.415906498895188770f, + -0.909407380757791260f, + 0.415732114569105420f, -0.909487113111505430f, 0.415557714957740580f, + -0.909566812025978220f, + 0.415383300067506290f, -0.909646477498279540f, 0.415208869904815650f, + -0.909726109525480160f, + 0.415034424476081630f, -0.909805708104652220f, 0.414859963787718390f, + -0.909885273232869160f, + 0.414685487846140010f, -0.909964804907205660f, 0.414510996657761810f, + -0.910044303124737390f, + 0.414336490228999210f, -0.910123767882541570f, 0.414161968566268080f, + -0.910203199177696540f, + 0.413987431675985510f, -0.910282597007281760f, 0.413812879564568300f, + -0.910361961368377990f, + 0.413638312238434560f, -0.910441292258067140f, 0.413463729704002580f, + -0.910520589673432630f, + 0.413289131967690960f, -0.910599853611558930f, 0.413114519035919560f, + -0.910679084069531570f, + 0.412939890915108020f, -0.910758281044437570f, 0.412765247611677320f, + -0.910837444533365010f, + 0.412590589132048380f, -0.910916574533403240f, 0.412415915482642730f, + -0.910995671041643140f, + 0.412241226669883000f, -0.911074734055176250f, 0.412066522700191560f, + -0.911153763571095900f, + 0.411891803579992220f, -0.911232759586496190f, 0.411717069315708670f, + -0.911311722098472670f, + 0.411542319913765280f, -0.911390651104122320f, 0.411367555380587340f, + -0.911469546600543020f, + 0.411192775722600160f, -0.911548408584833990f, 0.411017980946230270f, + -0.911627237054095650f, + 0.410843171057903910f, -0.911706032005429880f, 0.410668346064048780f, + -0.911784793435939430f, + 0.410493505971092520f, -0.911863521342728520f, 0.410318650785463260f, + -0.911942215722902570f, + 0.410143780513590350f, -0.912020876573568230f, 0.409968895161902820f, + -0.912099503891833470f, + 0.409793994736831200f, -0.912178097674807060f, 0.409619079244805840f, + -0.912256657919599650f, + 0.409444148692257590f, -0.912335184623322750f, 0.409269203085618700f, + -0.912413677783089020f, + 0.409094242431320920f, -0.912492137396012650f, 0.408919266735797480f, + -0.912570563459208730f, + 0.408744276005481520f, -0.912648955969793900f, 0.408569270246806780f, + -0.912727314924885900f, + 0.408394249466208110f, -0.912805640321603500f, 0.408219213670120100f, + -0.912883932157067200f, + 0.408044162864978740f, -0.912962190428398100f, 0.407869097057219960f, + -0.913040415132719160f, + 0.407694016253280170f, -0.913118606267154130f, 0.407518920459597030f, + -0.913196763828828200f, + 0.407343809682607970f, -0.913274887814867760f, 0.407168683928751610f, + -0.913352978222400250f, + 0.406993543204466460f, -0.913431035048554720f, 0.406818387516192370f, + -0.913509058290461140f, + 0.406643216870369140f, -0.913587047945250810f, 0.406468031273437000f, + -0.913665004010056350f, + 0.406292830731837470f, -0.913742926482011390f, 0.406117615252011790f, + -0.913820815358251100f, + 0.405942384840402570f, -0.913898670635911680f, 0.405767139503452220f, + -0.913976492312130520f, + 0.405591879247603870f, -0.914054280384046460f, 0.405416604079301750f, + -0.914132034848799460f, + 0.405241314004989860f, -0.914209755703530690f, 0.405066009031113390f, + -0.914287442945382440f, + 0.404890689164117750f, -0.914365096571498450f, 0.404715354410448650f, + -0.914442716579023870f, + 0.404540004776553110f, -0.914520302965104450f, 0.404364640268877810f, + -0.914597855726887790f, + 0.404189260893870750f, -0.914675374861522390f, 0.404013866657980060f, + -0.914752860366158100f, + 0.403838457567654130f, -0.914830312237946090f, 0.403663033629342750f, + -0.914907730474038620f, + 0.403487594849495310f, -0.914985115071589310f, 0.403312141234562660f, + -0.915062466027752760f, + 0.403136672790995240f, -0.915139783339685260f, 0.402961189525244960f, + -0.915217067004543750f, + 0.402785691443763640f, -0.915294317019487050f, 0.402610178553003680f, + -0.915371533381674760f, + 0.402434650859418540f, -0.915448716088267830f, 0.402259108369461440f, + -0.915525865136428530f, + 0.402083551089587040f, -0.915602980523320230f, 0.401907979026249860f, + -0.915680062246107650f, + 0.401732392185905010f, -0.915757110301956720f, 0.401556790575008650f, + -0.915834124688034710f, + 0.401381174200016790f, -0.915911105401509880f, 0.401205543067386760f, + -0.915988052439551840f, + 0.401029897183575790f, -0.916064965799331610f, 0.400854236555041650f, + -0.916141845478021350f, + 0.400678561188243350f, -0.916218691472794110f, 0.400502871089639500f, + -0.916295503780824800f, + 0.400327166265690150f, -0.916372282399289140f, 0.400151446722855300f, + -0.916449027325364040f, + 0.399975712467595390f, -0.916525738556228100f, 0.399799963506372090f, + -0.916602416089060680f, + 0.399624199845646790f, -0.916679059921042700f, 0.399448421491882260f, + -0.916755670049355990f, + 0.399272628451540930f, -0.916832246471183890f, 0.399096820731086600f, + -0.916908789183710990f, + 0.398920998336983020f, -0.916985298184122890f, 0.398745161275694480f, + -0.917061773469606820f, + 0.398569309553686360f, -0.917138215037350710f, 0.398393443177423920f, + -0.917214622884544250f, + 0.398217562153373620f, -0.917290997008377910f, 0.398041666488001930f, + -0.917367337406043810f, + 0.397865756187775750f, -0.917443644074735220f, 0.397689831259163240f, + -0.917519917011646260f, + 0.397513891708632330f, -0.917596156213972950f, 0.397337937542652120f, + -0.917672361678911750f, + 0.397161968767691720f, -0.917748533403661250f, 0.396985985390220900f, + -0.917824671385420570f, + 0.396809987416710420f, -0.917900775621390390f, 0.396633974853630830f, + -0.917976846108772730f, + 0.396457947707453960f, -0.918052882844770380f, 0.396281905984651680f, + -0.918128885826587910f, + 0.396105849691696320f, -0.918204855051430900f, 0.395929778835061360f, + -0.918280790516506130f, + 0.395753693421220080f, -0.918356692219021720f, 0.395577593456646950f, + -0.918432560156186790f, + 0.395401478947816300f, -0.918508394325212250f, 0.395225349901203730f, + -0.918584194723309540f, + 0.395049206323284880f, -0.918659961347691900f, 0.394873048220535760f, + -0.918735694195573550f, + 0.394696875599433670f, -0.918811393264169940f, 0.394520688466455550f, + -0.918887058550697970f, + 0.394344486828079650f, -0.918962690052375630f, 0.394168270690784250f, + -0.919038287766421940f, + 0.393992040061048100f, -0.919113851690057770f, 0.393815794945351130f, + -0.919189381820504470f, + 0.393639535350172880f, -0.919264878154985250f, 0.393463261281994380f, + -0.919340340690724230f, + 0.393286972747296570f, -0.919415769424946960f, 0.393110669752560760f, + -0.919491164354880100f, + 0.392934352304269600f, -0.919566525477751530f, 0.392758020408905280f, + -0.919641852790790470f, + 0.392581674072951530f, -0.919717146291227360f, 0.392405313302891860f, + -0.919792405976293750f, + 0.392228938105210370f, -0.919867631843222950f, 0.392052548486392200f, + -0.919942823889248640f, + 0.391876144452922350f, -0.920017982111606570f, 0.391699726011287050f, + -0.920093106507533070f, + 0.391523293167972350f, -0.920168197074266450f, 0.391346845929465610f, + -0.920243253809045370f, + 0.391170384302253980f, -0.920318276709110480f, 0.390993908292825380f, + -0.920393265771703550f, + 0.390817417907668610f, -0.920468220994067110f, 0.390640913153272370f, + -0.920543142373445480f, + 0.390464394036126650f, -0.920618029907083860f, 0.390287860562721360f, + -0.920692883592229010f, + 0.390111312739546910f, -0.920767703426128790f, 0.389934750573094790f, + -0.920842489406032080f, + 0.389758174069856410f, -0.920917241529189520f, 0.389581583236324360f, + -0.920991959792852310f, + 0.389404978078991100f, -0.921066644194273530f, 0.389228358604349730f, + -0.921141294730707270f, + 0.389051724818894500f, -0.921215911399408730f, 0.388875076729119250f, + -0.921290494197634540f, + 0.388698414341519250f, -0.921365043122642340f, 0.388521737662589740f, + -0.921439558171691320f, + 0.388345046698826300f, -0.921514039342041900f, 0.388168341456725850f, + -0.921588486630955380f, + 0.387991621942784910f, -0.921662900035694730f, 0.387814888163501290f, + -0.921737279553523800f, + 0.387638140125372680f, -0.921811625181708120f, 0.387461377834897920f, + -0.921885936917513970f, + 0.387284601298575890f, -0.921960214758209110f, 0.387107810522905990f, + -0.922034458701062820f, + 0.386931005514388690f, -0.922108668743345070f, 0.386754186279524130f, + -0.922182844882327600f, + 0.386577352824813980f, -0.922256987115283030f, 0.386400505156759610f, + -0.922331095439485330f, + 0.386223643281862980f, -0.922405169852209880f, 0.386046767206627280f, + -0.922479210350733100f, + 0.385869876937555310f, -0.922553216932332830f, 0.385692972481151200f, + -0.922627189594287800f, + 0.385516053843919020f, -0.922701128333878520f, 0.385339121032363340f, + -0.922775033148386380f, + 0.385162174052989970f, -0.922848904035094120f, 0.384985212912304200f, + -0.922922740991285680f, + 0.384808237616812930f, -0.922996544014246250f, 0.384631248173022740f, + -0.923070313101262420f, + 0.384454244587440870f, -0.923144048249621820f, 0.384277226866575620f, + -0.923217749456613500f, + 0.384100195016935040f, -0.923291416719527640f, 0.383923149045028500f, + -0.923365050035655610f, + 0.383746088957365010f, -0.923438649402290370f, 0.383569014760454960f, + -0.923512214816725520f, + 0.383391926460808770f, -0.923585746276256560f, 0.383214824064937180f, + -0.923659243778179980f, + 0.383037707579352130f, -0.923732707319793180f, 0.382860577010565360f, + -0.923806136898395410f, + 0.382683432365089840f, -0.923879532511286740f, 0.382506273649438400f, + -0.923952894155768640f, + 0.382329100870124510f, -0.924026221829143850f, 0.382151914033662720f, + -0.924099515528716280f, + 0.381974713146567220f, -0.924172775251791200f, 0.381797498215353690f, + -0.924246000995674890f, + 0.381620269246537520f, -0.924319192757675160f, 0.381443026246634730f, + -0.924392350535101050f, + 0.381265769222162490f, -0.924465474325262600f, 0.381088498179637520f, + -0.924538564125471420f, + 0.380911213125578130f, -0.924611619933039970f, 0.380733914066502090f, + -0.924684641745282530f, + 0.380556601008928570f, -0.924757629559513910f, 0.380379273959376710f, + -0.924830583373050800f, + 0.380201932924366050f, -0.924903503183210910f, 0.380024577910417380f, + -0.924976388987313050f, + 0.379847208924051110f, -0.925049240782677580f, 0.379669825971789000f, + -0.925122058566625770f, + 0.379492429060152740f, -0.925194842336480420f, 0.379315018195664430f, + -0.925267592089565550f, + 0.379137593384847430f, -0.925340307823206200f, 0.378960154634224720f, + -0.925412989534729060f, + 0.378782701950320600f, -0.925485637221461490f, 0.378605235339659290f, + -0.925558250880732620f, + 0.378427754808765620f, -0.925630830509872720f, 0.378250260364165310f, + -0.925703376106213120f, + 0.378072752012383990f, -0.925775887667086740f, 0.377895229759948550f, + -0.925848365189827270f, + 0.377717693613385810f, -0.925920808671769960f, 0.377540143579222940f, + -0.925993218110251480f, + 0.377362579663988450f, -0.926065593502609310f, 0.377185001874210450f, + -0.926137934846182560f, + 0.377007410216418310f, -0.926210242138311270f, 0.376829804697141220f, + -0.926282515376337210f, + 0.376652185322909620f, -0.926354754557602860f, 0.376474552100253880f, + -0.926426959679452100f, + 0.376296905035704790f, -0.926499130739230510f, 0.376119244135794390f, + -0.926571267734284220f, + 0.375941569407054420f, -0.926643370661961230f, 0.375763880856017750f, + -0.926715439519610330f, + 0.375586178489217330f, -0.926787474304581750f, 0.375408462313186590f, + -0.926859475014227160f, + 0.375230732334460030f, -0.926931441645899130f, 0.375052988559571860f, + -0.927003374196951670f, + 0.374875230995057600f, -0.927075272664740100f, 0.374697459647452770f, + -0.927147137046620880f, + 0.374519674523293210f, -0.927218967339951790f, 0.374341875629116030f, + -0.927290763542091720f, + 0.374164062971457990f, -0.927362525650401110f, 0.373986236556857090f, + -0.927434253662241300f, + 0.373808396391851370f, -0.927505947574975180f, 0.373630542482979280f, + -0.927577607385966730f, + 0.373452674836780410f, -0.927649233092581180f, 0.373274793459794030f, + -0.927720824692185200f, + 0.373096898358560690f, -0.927792382182146320f, 0.372918989539620770f, + -0.927863905559833780f, + 0.372741067009515810f, -0.927935394822617890f, 0.372563130774787370f, + -0.928006849967869970f, + 0.372385180841977360f, -0.928078270992963140f, 0.372207217217628950f, + -0.928149657895271150f, + 0.372029239908284960f, -0.928221010672169440f, 0.371851248920489540f, + -0.928292329321034560f, + 0.371673244260786630f, -0.928363613839244370f, 0.371495225935720760f, + -0.928434864224177980f, + 0.371317193951837600f, -0.928506080473215480f, 0.371139148315682510f, + -0.928577262583738850f, + 0.370961089033802040f, -0.928648410553130520f, 0.370783016112742720f, + -0.928719524378774700f, + 0.370604929559051670f, -0.928790604058057020f, 0.370426829379276900f, + -0.928861649588363700f, + 0.370248715579966360f, -0.928932660967082820f, 0.370070588167669130f, + -0.929003638191603360f, + 0.369892447148934270f, -0.929074581259315750f, 0.369714292530311240f, + -0.929145490167611720f, + 0.369536124318350760f, -0.929216364913883930f, 0.369357942519603190f, + -0.929287205495526790f, + 0.369179747140620070f, -0.929358011909935500f, 0.369001538187952780f, + -0.929428784154506800f, + 0.368823315668153960f, -0.929499522226638560f, 0.368645079587776150f, + -0.929570226123729860f, + 0.368466829953372320f, -0.929640895843181330f, 0.368288566771496680f, + -0.929711531382394370f, + 0.368110290048703050f, -0.929782132738772190f, 0.367931999791546500f, + -0.929852699909718750f, + 0.367753696006582090f, -0.929923232892639560f, 0.367575378700365330f, + -0.929993731684941480f, + 0.367397047879452820f, -0.930064196284032360f, 0.367218703550400930f, + -0.930134626687321390f, + 0.367040345719767240f, -0.930205022892219070f, 0.366861974394109220f, + -0.930275384896137040f, + 0.366683589579984930f, -0.930345712696488470f, 0.366505191283953480f, + -0.930416006290687550f, + 0.366326779512573590f, -0.930486265676149780f, 0.366148354272405390f, + -0.930556490850291800f, + 0.365969915570008910f, -0.930626681810531650f, 0.365791463411944570f, + -0.930696838554288860f, + 0.365612997804773960f, -0.930766961078983710f, 0.365434518755058390f, + -0.930837049382038150f, + 0.365256026269360380f, -0.930907103460875020f, 0.365077520354242180f, + -0.930977123312918930f, + 0.364899001016267380f, -0.931047108935595170f, 0.364720468261999390f, + -0.931117060326330790f, + 0.364541922098002180f, -0.931186977482553750f, 0.364363362530840730f, + -0.931256860401693420f, + 0.364184789567079840f, -0.931326709081180430f, 0.364006203213285530f, + -0.931396523518446600f, + 0.363827603476023610f, -0.931466303710925090f, 0.363648990361860550f, + -0.931536049656050300f, + 0.363470363877363870f, -0.931605761351257830f, 0.363291724029100700f, + -0.931675438793984620f, + 0.363113070823639530f, -0.931745081981668720f, 0.362934404267548750f, + -0.931814690911749620f, + 0.362755724367397230f, -0.931884265581668150f, 0.362577031129754870f, + -0.931953805988865900f, + 0.362398324561191310f, -0.932023312130786490f, 0.362219604668277570f, + -0.932092784004874050f, + 0.362040871457584350f, -0.932162221608574320f, 0.361862124935682980f, + -0.932231624939334540f, + 0.361683365109145950f, -0.932300993994602640f, 0.361504591984545260f, + -0.932370328771828460f, + 0.361325805568454340f, -0.932439629268462360f, 0.361147005867446190f, + -0.932508895481956700f, + 0.360968192888095290f, -0.932578127409764420f, 0.360789366636975690f, + -0.932647325049340340f, + 0.360610527120662270f, -0.932716488398140250f, 0.360431674345730810f, + -0.932785617453620990f, + 0.360252808318756830f, -0.932854712213241230f, 0.360073929046317080f, + -0.932923772674460140f, + 0.359895036534988280f, -0.932992798834738850f, 0.359716130791347570f, + -0.933061790691539380f, + 0.359537211821973180f, -0.933130748242325110f, 0.359358279633443080f, + -0.933199671484560730f, + 0.359179334232336560f, -0.933268560415712050f, 0.359000375625232630f, + -0.933337415033246080f, + 0.358821403818710920f, -0.933406235334631520f, 0.358642418819352100f, + -0.933475021317337950f, + 0.358463420633736540f, -0.933543772978836170f, 0.358284409268445900f, + -0.933612490316598540f, + 0.358105384730061760f, -0.933681173328098300f, 0.357926347025166070f, + -0.933749822010810580f, + 0.357747296160342010f, -0.933818436362210960f, 0.357568232142172260f, + -0.933887016379776890f, + 0.357389154977241000f, -0.933955562060986730f, 0.357210064672131900f, + -0.934024073403320500f, + 0.357030961233430030f, -0.934092550404258870f, 0.356851844667720410f, + -0.934160993061284420f, + 0.356672714981588260f, -0.934229401371880820f, 0.356493572181620200f, + -0.934297775333532530f, + 0.356314416274402360f, -0.934366114943725900f, 0.356135247266522180f, + -0.934434420199948050f, + 0.355956065164567010f, -0.934502691099687870f, 0.355776869975124640f, + -0.934570927640435030f, + 0.355597661704783960f, -0.934639129819680780f, 0.355418440360133590f, + -0.934707297634917440f, + 0.355239205947763370f, -0.934775431083638700f, 0.355059958474263030f, + -0.934843530163339430f, + 0.354880697946222790f, -0.934911594871516090f, 0.354701424370233940f, + -0.934979625205665800f, + 0.354522137752887430f, -0.935047621163287430f, 0.354342838100775600f, + -0.935115582741880890f, + 0.354163525420490510f, -0.935183509938947500f, 0.353984199718624830f, + -0.935251402751989810f, + 0.353804861001772160f, -0.935319261178511500f, 0.353625509276525970f, + -0.935387085216017770f, + 0.353446144549480870f, -0.935454874862014620f, 0.353266766827231180f, + -0.935522630114009930f, + 0.353087376116372530f, -0.935590350969512370f, 0.352907972423500360f, + -0.935658037426032040f, + 0.352728555755210730f, -0.935725689481080370f, 0.352549126118100580f, + -0.935793307132169900f, + 0.352369683518766630f, -0.935860890376814640f, 0.352190227963806890f, + -0.935928439212529660f, + 0.352010759459819240f, -0.935995953636831300f, 0.351831278013402030f, + -0.936063433647237540f, + 0.351651783631154680f, -0.936130879241266920f, 0.351472276319676260f, + -0.936198290416440090f, + 0.351292756085567150f, -0.936265667170278260f, 0.351113222935427630f, + -0.936333009500304180f, + 0.350933676875858360f, -0.936400317404042060f, 0.350754117913461170f, + -0.936467590879016880f, + 0.350574546054837570f, -0.936534829922755500f, 0.350394961306590200f, + -0.936602034532785570f, + 0.350215363675321740f, -0.936669204706636060f, 0.350035753167635300f, + -0.936736340441837620f, + 0.349856129790135030f, -0.936803441735921560f, 0.349676493549424760f, + -0.936870508586420960f, + 0.349496844452109600f, -0.936937540990869900f, 0.349317182504794320f, + -0.937004538946803690f, + 0.349137507714085030f, -0.937071502451759190f, 0.348957820086587600f, + -0.937138431503274140f, + 0.348778119628908420f, -0.937205326098887960f, 0.348598406347655040f, + -0.937272186236140950f, + 0.348418680249434510f, -0.937339011912574960f, 0.348238941340855310f, + -0.937405803125732850f, + 0.348059189628525780f, -0.937472559873159140f, 0.347879425119054510f, + -0.937539282152399230f, + 0.347699647819051490f, -0.937605969960999990f, 0.347519857735126110f, + -0.937672623296509470f, + 0.347340054873889190f, -0.937739242156476970f, 0.347160239241951330f, + -0.937805826538453010f, + 0.346980410845923680f, -0.937872376439989890f, 0.346800569692418400f, + -0.937938891858640210f, + 0.346620715788047320f, -0.938005372791958840f, 0.346440849139423580f, + -0.938071819237501160f, + 0.346260969753160170f, -0.938138231192824360f, 0.346081077635870480f, + -0.938204608655486490f, + 0.345901172794169100f, -0.938270951623047080f, 0.345721255234670120f, + -0.938337260093066950f, + 0.345541324963989150f, -0.938403534063108060f, 0.345361381988741170f, + -0.938469773530733800f, + 0.345181426315542610f, -0.938535978493508560f, 0.345001457951009780f, + -0.938602148948998290f, + 0.344821476901759290f, -0.938668284894770170f, 0.344641483174409070f, + -0.938734386328392460f, + 0.344461476775576480f, -0.938800453247434770f, 0.344281457711880230f, + -0.938866485649468060f, + 0.344101425989938980f, -0.938932483532064490f, 0.343921381616371700f, + -0.938998446892797540f, + 0.343741324597798600f, -0.939064375729241950f, 0.343561254940839330f, + -0.939130270038973650f, + 0.343381172652115100f, -0.939196129819569900f, 0.343201077738246710f, + -0.939261955068609100f, + 0.343020970205855540f, -0.939327745783671400f, 0.342840850061564060f, + -0.939393501962337510f, + 0.342660717311994380f, -0.939459223602189920f, 0.342480571963769850f, + -0.939524910700812120f, + 0.342300414023513690f, -0.939590563255789160f, 0.342120243497849590f, + -0.939656181264707070f, + 0.341940060393402300f, -0.939721764725153340f, 0.341759864716796310f, + -0.939787313634716570f, + 0.341579656474657210f, -0.939852827990986680f, 0.341399435673610360f, + -0.939918307791555050f, + 0.341219202320282410f, -0.939983753034013940f, 0.341038956421299830f, + -0.940049163715957370f, + 0.340858697983289440f, -0.940114539834980280f, 0.340678427012879310f, + -0.940179881388678810f, + 0.340498143516697100f, -0.940245188374650880f, 0.340317847501371730f, + -0.940310460790495070f, + 0.340137538973531880f, -0.940375698633811540f, 0.339957217939806880f, + -0.940440901902201750f, + 0.339776884406826960f, -0.940506070593268300f, 0.339596538381222060f, + -0.940571204704615190f, + 0.339416179869623410f, -0.940636304233847590f, 0.339235808878662120f, + -0.940701369178571940f, + 0.339055425414969640f, -0.940766399536396070f, 0.338875029485178560f, + -0.940831395304928870f, + 0.338694621095921190f, -0.940896356481780830f, 0.338514200253831000f, + -0.940961283064563280f, + 0.338333766965541290f, -0.941026175050889260f, 0.338153321237685990f, + -0.941091032438372780f, + 0.337972863076899830f, -0.941155855224629190f, 0.337792392489817460f, + -0.941220643407275180f, + 0.337611909483074680f, -0.941285396983928660f, 0.337431414063306790f, + -0.941350115952208970f, + 0.337250906237150650f, -0.941414800309736230f, 0.337070386011242730f, + -0.941479450054132580f, + 0.336889853392220050f, -0.941544065183020810f, 0.336709308386720700f, + -0.941608645694025140f, + 0.336528751001382350f, -0.941673191584771360f, 0.336348181242844100f, + -0.941737702852886160f, + 0.336167599117744690f, -0.941802179495997650f, 0.335987004632723350f, + -0.941866621511735280f, + 0.335806397794420560f, -0.941931028897729510f, 0.335625778609476230f, + -0.941995401651612550f, + 0.335445147084531660f, -0.942059739771017310f, 0.335264503226227970f, + -0.942124043253578460f, + 0.335083847041206580f, -0.942188312096931770f, 0.334903178536110290f, + -0.942252546298714020f, + 0.334722497717581220f, -0.942316745856563780f, 0.334541804592262960f, + -0.942380910768120470f, + 0.334361099166798900f, -0.942445041031024890f, 0.334180381447832740f, + -0.942509136642919240f, + 0.333999651442009490f, -0.942573197601446870f, 0.333818909155973620f, + -0.942637223904252530f, + 0.333638154596370920f, -0.942701215548981900f, 0.333457387769846790f, + -0.942765172533282510f, + 0.333276608683047980f, -0.942829094854802710f, 0.333095817342620890f, + -0.942892982511192130f, + 0.332915013755212650f, -0.942956835500102120f, 0.332734197927471160f, + -0.943020653819184650f, + 0.332553369866044220f, -0.943084437466093490f, 0.332372529577580680f, + -0.943148186438483420f, + 0.332191677068729320f, -0.943211900734010620f, 0.332010812346139380f, + -0.943275580350332540f, + 0.331829935416461220f, -0.943339225285107720f, 0.331649046286344620f, + -0.943402835535996240f, + 0.331468144962440920f, -0.943466411100659320f, 0.331287231451400990f, + -0.943529951976759370f, + 0.331106305759876430f, -0.943593458161960390f, 0.330925367894519650f, + -0.943656929653927110f, + 0.330744417861982890f, -0.943720366450326200f, 0.330563455668919590f, + -0.943783768548825060f, + 0.330382481321982950f, -0.943847135947092690f, 0.330201494827826620f, + -0.943910468642799150f, + 0.330020496193105530f, -0.943973766633615980f, 0.329839485424473940f, + -0.944037029917215830f, + 0.329658462528587550f, -0.944100258491272660f, 0.329477427512101680f, + -0.944163452353461770f, + 0.329296380381672800f, -0.944226611501459810f, 0.329115321143957360f, + -0.944289735932944410f, + 0.328934249805612200f, -0.944352825645594750f, 0.328753166373295100f, + -0.944415880637091250f, + 0.328572070853663690f, -0.944478900905115550f, 0.328390963253376630f, + -0.944541886447350380f, + 0.328209843579092660f, -0.944604837261480260f, 0.328028711837470730f, + -0.944667753345190490f, + 0.327847568035170960f, -0.944730634696167800f, 0.327666412178853060f, + -0.944793481312100280f, + 0.327485244275178060f, -0.944856293190677210f, 0.327304064330806830f, + -0.944919070329589220f, + 0.327122872352400510f, -0.944981812726528150f, 0.326941668346621530f, + -0.945044520379187070f, + 0.326760452320131790f, -0.945107193285260610f, 0.326579224279594460f, + -0.945169831442444150f, + 0.326397984231672660f, -0.945232434848434890f, 0.326216732183029770f, + -0.945295003500931100f, + 0.326035468140330350f, -0.945357537397632290f, 0.325854192110238580f, + -0.945420036536239070f, + 0.325672904099419900f, -0.945482500914453740f, 0.325491604114539260f, + -0.945544930529979680f, + 0.325310292162262980f, -0.945607325380521280f, 0.325128968249257190f, + -0.945669685463784710f, + 0.324947632382188430f, -0.945732010777477150f, 0.324766284567724330f, + -0.945794301319306860f, + 0.324584924812532150f, -0.945856557086983910f, 0.324403553123280290f, + -0.945918778078219110f, + 0.324222169506637130f, -0.945980964290724760f, 0.324040773969271450f, + -0.946043115722214560f, + 0.323859366517852960f, -0.946105232370403340f, 0.323677947159051180f, + -0.946167314233007370f, + 0.323496515899536760f, -0.946229361307743820f, 0.323315072745980150f, + -0.946291373592331510f, + 0.323133617705052330f, -0.946353351084490590f, 0.322952150783425370f, + -0.946415293781942110f, + 0.322770671987770710f, -0.946477201682408680f, 0.322589181324761390f, + -0.946539074783614100f, + 0.322407678801070020f, -0.946600913083283530f, 0.322226164423369650f, + -0.946662716579143360f, + 0.322044638198334620f, -0.946724485268921170f, 0.321863100132638580f, + -0.946786219150346000f, + 0.321681550232956640f, -0.946847918221148000f, 0.321499988505963450f, + -0.946909582479058760f, + 0.321318414958334910f, -0.946971211921810880f, 0.321136829596746780f, + -0.947032806547138620f, + 0.320955232427875210f, -0.947094366352777220f, 0.320773623458397440f, + -0.947155891336463270f, + 0.320592002694990330f, -0.947217381495934820f, 0.320410370144331880f, + -0.947278836828930880f, + 0.320228725813100020f, -0.947340257333191940f, 0.320047069707973140f, + -0.947401643006459900f, + 0.319865401835630610f, -0.947462993846477700f, 0.319683722202751370f, + -0.947524309850989570f, + 0.319502030816015750f, -0.947585591017741090f, 0.319320327682103720f, + -0.947646837344479190f, + 0.319138612807695900f, -0.947708048828952100f, 0.318956886199473770f, + -0.947769225468909180f, + 0.318775147864118480f, -0.947830367262101010f, 0.318593397808312470f, + -0.947891474206279730f, + 0.318411636038737960f, -0.947952546299198560f, 0.318229862562077580f, + -0.948013583538612200f, + 0.318048077385015060f, -0.948074585922276230f, 0.317866280514233660f, + -0.948135553447947980f, + 0.317684471956418020f, -0.948196486113385580f, 0.317502651718252260f, + -0.948257383916349060f, + 0.317320819806421790f, -0.948318246854599090f, 0.317138976227611890f, + -0.948379074925898120f, + 0.316957120988508150f, -0.948439868128009620f, 0.316775254095797380f, + -0.948500626458698260f, + 0.316593375556165850f, -0.948561349915730270f, 0.316411485376301090f, + -0.948622038496872990f, + 0.316229583562890490f, -0.948682692199895090f, 0.316047670122621860f, + -0.948743311022566480f, + 0.315865745062184070f, -0.948803894962658380f, 0.315683808388265600f, + -0.948864444017943340f, + 0.315501860107556040f, -0.948924958186195160f, 0.315319900226745050f, + -0.948985437465188710f, + 0.315137928752522440f, -0.949045881852700560f, 0.314955945691579250f, + -0.949106291346508260f, + 0.314773951050606070f, -0.949166665944390700f, 0.314591944836294710f, + -0.949227005644128210f, + 0.314409927055336820f, -0.949287310443502010f, 0.314227897714424500f, + -0.949347580340295210f, + 0.314045856820250820f, -0.949407815332291460f, 0.313863804379508500f, + -0.949468015417276550f, + 0.313681740398891570f, -0.949528180593036670f, 0.313499664885093450f, + -0.949588310857359950f, + 0.313317577844809070f, -0.949648406208035480f, 0.313135479284732950f, + -0.949708466642853800f, + 0.312953369211560200f, -0.949768492159606680f, 0.312771247631986880f, + -0.949828482756087000f, + 0.312589114552708660f, -0.949888438430089300f, 0.312406969980422500f, + -0.949948359179409010f, + 0.312224813921825050f, -0.950008245001843000f, 0.312042646383613510f, + -0.950068095895189590f, + 0.311860467372486130f, -0.950127911857248100f, 0.311678276895140550f, + -0.950187692885819280f, + 0.311496074958275970f, -0.950247438978705230f, 0.311313861568591090f, + -0.950307150133709140f, + 0.311131636732785270f, -0.950366826348635780f, 0.310949400457558760f, + -0.950426467621290900f, + 0.310767152749611470f, -0.950486073949481700f, 0.310584893615644560f, + -0.950545645331016600f, + 0.310402623062358880f, -0.950605181763705230f, 0.310220341096455910f, + -0.950664683245358910f, + 0.310038047724638000f, -0.950724149773789610f, 0.309855742953607130f, + -0.950783581346811070f, + 0.309673426790066490f, -0.950842977962238160f, 0.309491099240719050f, + -0.950902339617887060f, + 0.309308760312268780f, -0.950961666311575080f, 0.309126410011419550f, + -0.951020958041121080f, + 0.308944048344875710f, -0.951080214804345010f, 0.308761675319342570f, + -0.951139436599068190f, + 0.308579290941525030f, -0.951198623423113230f, 0.308396895218129240f, + -0.951257775274304000f, + 0.308214488155861220f, -0.951316892150465550f, 0.308032069761427330f, + -0.951375974049424420f, + 0.307849640041534980f, -0.951435020969008340f, 0.307667199002891190f, + -0.951494032907046370f, + 0.307484746652204160f, -0.951553009861368590f, 0.307302282996181950f, + -0.951611951829806730f, + 0.307119808041533100f, -0.951670858810193860f, 0.306937321794967020f, + -0.951729730800363720f, + 0.306754824263192780f, -0.951788567798152130f, 0.306572315452920800f, + -0.951847369801395620f, + 0.306389795370861080f, -0.951906136807932230f, 0.306207264023724280f, + -0.951964868815601380f, + 0.306024721418221900f, -0.952023565822243570f, 0.305842167561065080f, + -0.952082227825700620f, + 0.305659602458966230f, -0.952140854823815830f, 0.305477026118637360f, + -0.952199446814433580f, + 0.305294438546791720f, -0.952258003795399600f, 0.305111839750142220f, + -0.952316525764560830f, + 0.304929229735402430f, -0.952375012719765880f, 0.304746608509286640f, + -0.952433464658864030f, + 0.304563976078509050f, -0.952491881579706320f, 0.304381332449784940f, + -0.952550263480144930f, + 0.304198677629829270f, -0.952608610358033240f, 0.304016011625357570f, + -0.952666922211226170f, + 0.303833334443086470f, -0.952725199037579570f, 0.303650646089731910f, + -0.952783440834950920f, + 0.303467946572011370f, -0.952841647601198720f, 0.303285235896641910f, + -0.952899819334182880f, + 0.303102514070341060f, -0.952957956031764700f, 0.302919781099827420f, + -0.953016057691806530f, + 0.302737036991819140f, -0.953074124312172200f, 0.302554281753035670f, + -0.953132155890726750f, + 0.302371515390196130f, -0.953190152425336560f, 0.302188737910020040f, + -0.953248113913869320f, + 0.302005949319228200f, -0.953306040354193750f, 0.301823149624540650f, + -0.953363931744180330f, + 0.301640338832678880f, -0.953421788081700310f, 0.301457516950363940f, + -0.953479609364626610f, + 0.301274683984318000f, -0.953537395590833280f, 0.301091839941263210f, + -0.953595146758195680f, + 0.300908984827921890f, -0.953652862864590500f, 0.300726118651017620f, + -0.953710543907895560f, + 0.300543241417273400f, -0.953768189885990330f, 0.300360353133413580f, + -0.953825800796755050f, + 0.300177453806162120f, -0.953883376638071770f, 0.299994543442243580f, + -0.953940917407823500f, + 0.299811622048383460f, -0.953998423103894490f, 0.299628689631306790f, + -0.954055893724170660f, + 0.299445746197739950f, -0.954113329266538800f, 0.299262791754409010f, + -0.954170729728887280f, + 0.299079826308040480f, -0.954228095109105670f, 0.298896849865361910f, + -0.954285425405084650f, + 0.298713862433100390f, -0.954342720614716480f, 0.298530864017984230f, + -0.954399980735894490f, + 0.298347854626741570f, -0.954457205766513490f, 0.298164834266100910f, + -0.954514395704469500f, + 0.297981802942791920f, -0.954571550547659630f, 0.297798760663543550f, + -0.954628670293982680f, + 0.297615707435086310f, -0.954685754941338340f, 0.297432643264150030f, + -0.954742804487627940f, + 0.297249568157465890f, -0.954799818930753720f, 0.297066482121764840f, + -0.954856798268619580f, + 0.296883385163778270f, -0.954913742499130520f, 0.296700277290238460f, + -0.954970651620192790f, + 0.296517158507877410f, -0.955027525629714160f, 0.296334028823428240f, + -0.955084364525603410f, + 0.296150888243623960f, -0.955141168305770670f, 0.295967736775197890f, + -0.955197936968127710f, + 0.295784574424884370f, -0.955254670510586990f, 0.295601401199417360f, + -0.955311368931062720f, + 0.295418217105532070f, -0.955368032227470240f, 0.295235022149963390f, + -0.955424660397726330f, + 0.295051816339446720f, -0.955481253439748770f, 0.294868599680718380f, + -0.955537811351456770f, + 0.294685372180514330f, -0.955594334130771110f, 0.294502133845571720f, + -0.955650821775613220f, + 0.294318884682627570f, -0.955707274283906560f, 0.294135624698419080f, + -0.955763691653575440f, + 0.293952353899684770f, -0.955820073882545420f, 0.293769072293162400f, + -0.955876420968743590f, + 0.293585779885591310f, -0.955932732910098170f, 0.293402476683710060f, + -0.955989009704538930f, + 0.293219162694258680f, -0.956045251349996410f, 0.293035837923976920f, + -0.956101457844403040f, + 0.292852502379604810f, -0.956157629185692140f, 0.292669156067883570f, + -0.956213765371798470f, + 0.292485798995553830f, -0.956269866400658140f, 0.292302431169357610f, + -0.956325932270208230f, + 0.292119052596036540f, -0.956381962978387620f, 0.291935663282332780f, + -0.956437958523136180f, + 0.291752263234989370f, -0.956493918902394990f, 0.291568852460749040f, + -0.956549844114106820f, + 0.291385430966355720f, -0.956605734156215080f, 0.291201998758553020f, + -0.956661589026664980f, + 0.291018555844085090f, -0.956717408723403050f, 0.290835102229696940f, + -0.956773193244376930f, + 0.290651637922133220f, -0.956828942587535370f, 0.290468162928139870f, + -0.956884656750828900f, + 0.290284677254462330f, -0.956940335732208940f, 0.290101180907847140f, + -0.956995979529628230f, + 0.289917673895040860f, -0.957051588141040970f, 0.289734156222790250f, + -0.957107161564402790f, + 0.289550627897843140f, -0.957162699797670100f, 0.289367088926946960f, + -0.957218202838801210f, + 0.289183539316850310f, -0.957273670685755200f, 0.288999979074301530f, + -0.957329103336492790f, + 0.288816408206049480f, -0.957384500788975860f, 0.288632826718843940f, + -0.957439863041167570f, + 0.288449234619434170f, -0.957495190091032570f, 0.288265631914570830f, + -0.957550481936536470f, + 0.288082018611004300f, -0.957605738575646240f, 0.287898394715485170f, + -0.957660960006330610f, + 0.287714760234765280f, -0.957716146226558870f, 0.287531115175595930f, + -0.957771297234302320f, + 0.287347459544729570f, -0.957826413027532910f, 0.287163793348918560f, + -0.957881493604224250f, + 0.286980116594915570f, -0.957936538962351420f, 0.286796429289474190f, + -0.957991549099890370f, + 0.286612731439347790f, -0.958046524014818600f, 0.286429023051290750f, + -0.958101463705114620f, + 0.286245304132057120f, -0.958156368168758820f, 0.286061574688402100f, + -0.958211237403732260f, + 0.285877834727080730f, -0.958266071408017670f, 0.285694084254848320f, + -0.958320870179598880f, + 0.285510323278461380f, -0.958375633716461170f, 0.285326551804675810f, + -0.958430362016591040f, + 0.285142769840248720f, -0.958485055077976100f, 0.284958977391937150f, + -0.958539712898605730f, + 0.284775174466498300f, -0.958594335476470220f, 0.284591361070690550f, + -0.958648922809561040f, + 0.284407537211271820f, -0.958703474895871600f, 0.284223702895001100f, + -0.958757991733395710f, + 0.284039858128637360f, -0.958812473320129200f, 0.283856002918939750f, + -0.958866919654069010f, + 0.283672137272668550f, -0.958921330733213060f, 0.283488261196583550f, + -0.958975706555561080f, + 0.283304374697445790f, -0.959030047119113550f, 0.283120477782015990f, + -0.959084352421872730f, + 0.282936570457055390f, -0.959138622461841890f, 0.282752652729326040f, + -0.959192857237025740f, + 0.282568724605589740f, -0.959247056745430090f, 0.282384786092609420f, + -0.959301220985062210f, + 0.282200837197147500f, -0.959355349953930790f, 0.282016877925967690f, + -0.959409443650045550f, + 0.281832908285833460f, -0.959463502071417510f, 0.281648928283508680f, + -0.959517525216059260f, + 0.281464937925758050f, -0.959571513081984520f, 0.281280937219346110f, + -0.959625465667208300f, + 0.281096926171038320f, -0.959679382969746750f, 0.280912904787600120f, + -0.959733264987617680f, + 0.280728873075797190f, -0.959787111718839900f, 0.280544831042396360f, + -0.959840923161433660f, + 0.280360778694163810f, -0.959894699313420530f, 0.280176716037867040f, + -0.959948440172823210f, + 0.279992643080273380f, -0.960002145737665850f, 0.279808559828150390f, + -0.960055816005973890f, + 0.279624466288266700f, -0.960109450975773940f, 0.279440362467390510f, + -0.960163050645094000f, + 0.279256248372291240f, -0.960216615011963430f, 0.279072124009737970f, + -0.960270144074412800f, + 0.278887989386500280f, -0.960323637830473920f, 0.278703844509348600f, + -0.960377096278180130f, + 0.278519689385053060f, -0.960430519415565790f, 0.278335524020384970f, + -0.960483907240666790f, + 0.278151348422115090f, -0.960537259751520050f, 0.277967162597015430f, + -0.960590576946164120f, + 0.277782966551857800f, -0.960643858822638470f, 0.277598760293414290f, + -0.960697105378984450f, + 0.277414543828458200f, -0.960750316613243950f, 0.277230317163762120f, + -0.960803492523460760f, + 0.277046080306099950f, -0.960856633107679660f, 0.276861833262245390f, + -0.960909738363946770f, + 0.276677576038972420f, -0.960962808290309780f, 0.276493308643056100f, + -0.961015842884817230f, + 0.276309031081271030f, -0.961068842145519350f, 0.276124743360392890f, + -0.961121806070467380f, + 0.275940445487197320f, -0.961174734657714080f, 0.275756137468460120f, + -0.961227627905313460f, + 0.275571819310958250f, -0.961280485811320640f, 0.275387491021468140f, + -0.961333308373792270f, + 0.275203152606767370f, -0.961386095590786250f, 0.275018804073633380f, + -0.961438847460361570f, + 0.274834445428843940f, -0.961491563980579000f, 0.274650076679177790f, + -0.961544245149499990f, + 0.274465697831413220f, -0.961596890965187860f, 0.274281308892329710f, + -0.961649501425706820f, + 0.274096909868706330f, -0.961702076529122540f, 0.273912500767323320f, + -0.961754616273502010f, + 0.273728081594960650f, -0.961807120656913540f, 0.273543652358398730f, + -0.961859589677426570f, + 0.273359213064418790f, -0.961912023333112100f, 0.273174763719801870f, + -0.961964421622042320f, + 0.272990304331329980f, -0.962016784542290560f, 0.272805834905784920f, + -0.962069112091931580f, + 0.272621355449948980f, -0.962121404269041580f, 0.272436865970605350f, + -0.962173661071697770f, + 0.272252366474536660f, -0.962225882497979020f, 0.272067856968526980f, + -0.962278068545965090f, + 0.271883337459359890f, -0.962330219213737400f, 0.271698807953819510f, + -0.962382334499378380f, + 0.271514268458690810f, -0.962434414400971990f, 0.271329718980758420f, + -0.962486458916603450f, + 0.271145159526808070f, -0.962538468044359160f, 0.270960590103625330f, + -0.962590441782326780f, + 0.270776010717996010f, -0.962642380128595710f, 0.270591421376707050f, + -0.962694283081255930f, + 0.270406822086544820f, -0.962746150638399410f, 0.270222212854296930f, + -0.962797982798119010f, + 0.270037593686750510f, -0.962849779558509030f, 0.269852964590693910f, + -0.962901540917665000f, + 0.269668325572915200f, -0.962953266873683880f, 0.269483676640202840f, + -0.963004957424663850f, + 0.269299017799346230f, -0.963056612568704340f, 0.269114349057134330f, + -0.963108232303906190f, + 0.268929670420357310f, -0.963159816628371360f, 0.268744981895805090f, + -0.963211365540203480f, + 0.268560283490267890f, -0.963262879037507070f, 0.268375575210537010f, + -0.963314357118388090f, + 0.268190857063403180f, -0.963365799780954050f, 0.268006129055658350f, + -0.963417207023313350f, + 0.267821391194094320f, -0.963468578843575950f, 0.267636643485503090f, + -0.963519915239853140f, + 0.267451885936677740f, -0.963571216210257210f, 0.267267118554410930f, + -0.963622481752902220f, + 0.267082341345496350f, -0.963673711865903230f, 0.266897554316727510f, + -0.963724906547376410f, + 0.266712757474898420f, -0.963776065795439840f, 0.266527950826803810f, + -0.963827189608212340f, + 0.266343134379238180f, -0.963878277983814200f, 0.266158308138997050f, + -0.963929330920367140f, + 0.265973472112875530f, -0.963980348415994110f, 0.265788626307669970f, + -0.964031330468819280f, + 0.265603770730176440f, -0.964082277076968140f, 0.265418905387191260f, + -0.964133188238567640f, + 0.265234030285511900f, -0.964184063951745720f, 0.265049145431935200f, + -0.964234904214632200f, + 0.264864250833259320f, -0.964285709025357370f, 0.264679346496282050f, + -0.964336478382053720f, + 0.264494432427801630f, -0.964387212282854290f, 0.264309508634617220f, + -0.964437910725893910f, + 0.264124575123527490f, -0.964488573709308410f, 0.263939631901332410f, + -0.964539201231235150f, + 0.263754678974831510f, -0.964589793289812650f, 0.263569716350824880f, + -0.964640349883180930f, + 0.263384744036113390f, -0.964690871009480920f, 0.263199762037497560f, + -0.964741356666855340f, + 0.263014770361779060f, -0.964791806853447900f, 0.262829769015759330f, + -0.964842221567403510f, + 0.262644758006240100f, -0.964892600806868890f, 0.262459737340024090f, + -0.964942944569991410f, + 0.262274707023913590f, -0.964993252854920320f, 0.262089667064712100f, + -0.965043525659805890f, + 0.261904617469222560f, -0.965093762982799590f, 0.261719558244249080f, + -0.965143964822054450f, + 0.261534489396595630f, -0.965194131175724720f, 0.261349410933066350f, + -0.965244262041965780f, + 0.261164322860466590f, -0.965294357418934660f, 0.260979225185601020f, + -0.965344417304789370f, + 0.260794117915275570f, -0.965394441697689400f, 0.260609001056295920f, + -0.965444430595795430f, + 0.260423874615468010f, -0.965494383997269500f, 0.260238738599598950f, + -0.965544301900275070f, + 0.260053593015495130f, -0.965594184302976830f, 0.259868437869964330f, + -0.965644031203540590f, + 0.259683273169813930f, -0.965693842600133690f, 0.259498098921851660f, + -0.965743618490924830f, + 0.259312915132886350f, -0.965793358874083570f, 0.259127721809726150f, + -0.965843063747781510f, + 0.258942518959180580f, -0.965892733110190860f, 0.258757306588058840f, + -0.965942366959485540f, + 0.258572084703170390f, -0.965991965293840570f, 0.258386853311325710f, + -0.966041528111432400f, + 0.258201612419334870f, -0.966091055410438830f, 0.258016362034009070f, + -0.966140547189038750f, + 0.257831102162158930f, -0.966190003445412620f, 0.257645832810596440f, + -0.966239424177741890f, + 0.257460553986133210f, -0.966288809384209580f, 0.257275265695581120f, + -0.966338159063000130f, + 0.257089967945753230f, -0.966387473212298790f, 0.256904660743461850f, + -0.966436751830292650f, + 0.256719344095520720f, -0.966485994915169840f, 0.256534018008743200f, + -0.966535202465119700f, + 0.256348682489942910f, -0.966584374478333120f, 0.256163337545934570f, + -0.966633510953002100f, + 0.255977983183532380f, -0.966682611887320190f, 0.255792619409551670f, + -0.966731677279481840f, + 0.255607246230807550f, -0.966780707127683270f, 0.255421863654115460f, + -0.966829701430121810f, + 0.255236471686291820f, -0.966878660184995910f, 0.255051070334152530f, + -0.966927583390505660f, + 0.254865659604514630f, -0.966976471044852070f, 0.254680239504194990f, + -0.967025323146237900f, + 0.254494810040010790f, -0.967074139692867040f, 0.254309371218780110f, + -0.967122920682944360f, + 0.254123923047320620f, -0.967171666114676640f, 0.253938465532451140f, + -0.967220375986271310f, + 0.253752998680989940f, -0.967269050295937790f, 0.253567522499756610f, + -0.967317689041886310f, + 0.253382036995570270f, -0.967366292222328510f, 0.253196542175250560f, + -0.967414859835477480f, + 0.253011038045617980f, -0.967463391879547440f, 0.252825524613492610f, + -0.967511888352754150f, + 0.252640001885695580f, -0.967560349253314360f, 0.252454469869047900f, + -0.967608774579446380f, + 0.252268928570370810f, -0.967657164329369880f, 0.252083377996486560f, + -0.967705518501305480f, + 0.251897818154216910f, -0.967753837093475510f, 0.251712249050384750f, + -0.967802120104103270f, + 0.251526670691812780f, -0.967850367531413620f, 0.251341083085323880f, + -0.967898579373632660f, + 0.251155486237742030f, -0.967946755628987800f, 0.250969880155890720f, + -0.967994896295707670f, + 0.250784264846594550f, -0.968043001372022260f, 0.250598640316677830f, + -0.968091070856162970f, + 0.250413006572965280f, -0.968139104746362330f, 0.250227363622282540f, + -0.968187103040854420f, + 0.250041711471454650f, -0.968235065737874320f, 0.249856050127308050f, + -0.968282992835658660f, + 0.249670379596668520f, -0.968330884332445300f, 0.249484699886363010f, + -0.968378740226473300f, + 0.249299011003218300f, -0.968426560515983190f, 0.249113312954061360f, + -0.968474345199216820f, + 0.248927605745720260f, -0.968522094274417270f, 0.248741889385022420f, + -0.968569807739828930f, + 0.248556163878796620f, -0.968617485593697540f, 0.248370429233871150f, + -0.968665127834269950f, + 0.248184685457074780f, -0.968712734459794780f, 0.247998932555237220f, + -0.968760305468521430f, + 0.247813170535187620f, -0.968807840858700970f, 0.247627399403756330f, + -0.968855340628585580f, + 0.247441619167773440f, -0.968902804776428870f, 0.247255829834069320f, + -0.968950233300485800f, + 0.247070031409475370f, -0.968997626199012310f, 0.246884223900822430f, + -0.969044983470266240f, + 0.246698407314942500f, -0.969092305112506100f, 0.246512581658667380f, + -0.969139591123992280f, + 0.246326746938829060f, -0.969186841502985950f, 0.246140903162260640f, + -0.969234056247750050f, + 0.245955050335794590f, -0.969281235356548530f, 0.245769188466264670f, + -0.969328378827646660f, + 0.245583317560504000f, -0.969375486659311280f, 0.245397437625346990f, + -0.969422558849810320f, + 0.245211548667627680f, -0.969469595397412950f, 0.245025650694180470f, + -0.969516596300390000f, + 0.244839743711840750f, -0.969563561557013180f, 0.244653827727443320f, + -0.969610491165555870f, + 0.244467902747824210f, -0.969657385124292450f, 0.244281968779819170f, + -0.969704243431498750f, + 0.244096025830264210f, -0.969751066085452140f, 0.243910073905996370f, + -0.969797853084430890f, + 0.243724113013852130f, -0.969844604426714830f, 0.243538143160669180f, + -0.969891320110585100f, + 0.243352164353284880f, -0.969938000134323960f, 0.243166176598536930f, + -0.969984644496215240f, + 0.242980179903263980f, -0.970031253194543970f, 0.242794174274304190f, + -0.970077826227596420f, + 0.242608159718496890f, -0.970124363593660280f, 0.242422136242681050f, + -0.970170865291024360f, + 0.242236103853696040f, -0.970217331317979160f, 0.242050062558382180f, + -0.970263761672816140f, + 0.241864012363579210f, -0.970310156353828110f, 0.241677953276128090f, + -0.970356515359309450f, + 0.241491885302869300f, -0.970402838687555500f, 0.241305808450644390f, + -0.970449126336863090f, + 0.241119722726294730f, -0.970495378305530450f, 0.240933628136661910f, + -0.970541594591857070f, + 0.240747524688588540f, -0.970587775194143630f, 0.240561412388916620f, + -0.970633920110692160f, + 0.240375291244489500f, -0.970680029339806130f, 0.240189161262150040f, + -0.970726102879790110f, + 0.240003022448741500f, -0.970772140728950350f, 0.239816874811108110f, + -0.970818142885593870f, + 0.239630718356093560f, -0.970864109348029470f, 0.239444553090542720f, + -0.970910040114567050f, + 0.239258379021300120f, -0.970955935183517970f, 0.239072196155210660f, + -0.971001794553194690f, + 0.238886004499120170f, -0.971047618221911100f, 0.238699804059873950f, + -0.971093406187982460f, + 0.238513594844318500f, -0.971139158449725090f, 0.238327376859299970f, + -0.971184875005457030f, + 0.238141150111664870f, -0.971230555853497380f, 0.237954914608260650f, + -0.971276200992166490f, + 0.237768670355934210f, -0.971321810419786160f, 0.237582417361533650f, + -0.971367384134679490f, + 0.237396155631906550f, -0.971412922135170940f, 0.237209885173901620f, + -0.971458424419585960f, + 0.237023605994367340f, -0.971503890986251780f, 0.236837318100152380f, + -0.971549321833496630f, + 0.236651021498106460f, -0.971594716959650160f, 0.236464716195078750f, + -0.971640076363043390f, + 0.236278402197919620f, -0.971685400042008540f, 0.236092079513479050f, + -0.971730687994879160f, + 0.235905748148607370f, -0.971775940219990140f, 0.235719408110155930f, + -0.971821156715677700f, + 0.235533059404975460f, -0.971866337480279400f, 0.235346702039917920f, + -0.971911482512134000f, + 0.235160336021834860f, -0.971956591809581600f, 0.234973961357578310f, + -0.972001665370963890f, + 0.234787578054001080f, -0.972046703194623380f, 0.234601186117955550f, + -0.972091705278904430f, + 0.234414785556295250f, -0.972136671622152120f, 0.234228376375873380f, + -0.972181602222713440f, + 0.234041958583543460f, -0.972226497078936270f, 0.233855532186159950f, + -0.972271356189170040f, + 0.233669097190576820f, -0.972316179551765300f, 0.233482653603649170f, + -0.972360967165074140f, + 0.233296201432231560f, -0.972405719027449770f, 0.233109740683179740f, + -0.972450435137246830f, + 0.232923271363349120f, -0.972495115492821190f, 0.232736793479595420f, + -0.972539760092530180f, + 0.232550307038775330f, -0.972584368934732210f, 0.232363812047745010f, + -0.972628942017787270f, + 0.232177308513361770f, -0.972673479340056430f, 0.231990796442482580f, + -0.972717980899902250f, + 0.231804275841964780f, -0.972762446695688570f, 0.231617746718666580f, + -0.972806876725780370f, + 0.231431209079445730f, -0.972851270988544180f, 0.231244662931161110f, + -0.972895629482347760f, + 0.231058108280671280f, -0.972939952205560070f, 0.230871545134835070f, + -0.972984239156551740f, + 0.230684973500512310f, -0.973028490333694100f, 0.230498393384562320f, + -0.973072705735360530f, + 0.230311804793845530f, -0.973116885359925130f, 0.230125207735222020f, + -0.973161029205763530f, + 0.229938602215552260f, -0.973205137271252800f, 0.229751988241697600f, + -0.973249209554771120f, + 0.229565365820518870f, -0.973293246054698250f, 0.229378734958878120f, + -0.973337246769414800f, + 0.229192095663636740f, -0.973381211697303290f, 0.229005447941657390f, + -0.973425140836747030f, + 0.228818791799802360f, -0.973469034186130950f, 0.228632127244934230f, + -0.973512891743841370f, + 0.228445454283916550f, -0.973556713508265560f, 0.228258772923612350f, + -0.973600499477792370f, + 0.228072083170885790f, -0.973644249650811870f, 0.227885385032600700f, + -0.973687964025715670f, + 0.227698678515621170f, -0.973731642600896400f, 0.227511963626812390f, + -0.973775285374748000f, + 0.227325240373038830f, -0.973818892345666100f, 0.227138508761166260f, + -0.973862463512047300f, + 0.226951768798059980f, -0.973905998872289460f, 0.226765020490585720f, + -0.973949498424792170f, + 0.226578263845610110f, -0.973992962167955830f, 0.226391498869999210f, + -0.974036390100182610f, + 0.226204725570620270f, -0.974079782219875680f, 0.226017943954340190f, + -0.974123138525439520f, + 0.225831154028026200f, -0.974166459015280320f, 0.225644355798546440f, + -0.974209743687805110f, + 0.225457549272768540f, -0.974252992541422500f, 0.225270734457561240f, + -0.974296205574542330f, + 0.225083911359792780f, -0.974339382785575860f, 0.224897079986332540f, + -0.974382524172935470f, + 0.224710240344049570f, -0.974425629735034990f, 0.224523392439813170f, + -0.974468699470289580f, + 0.224336536280493690f, -0.974511733377115720f, 0.224149671872960840f, + -0.974554731453931230f, + 0.223962799224085520f, -0.974597693699155050f, 0.223775918340738290f, + -0.974640620111207560f, + 0.223589029229790020f, -0.974683510688510670f, 0.223402131898112480f, + -0.974726365429487320f, + 0.223215226352576960f, -0.974769184332561770f, 0.223028312600055870f, + -0.974811967396159830f, + 0.222841390647421280f, -0.974854714618708430f, 0.222654460501545550f, + -0.974897425998635820f, + 0.222467522169301990f, -0.974940101534371720f, 0.222280575657563370f, + -0.974982741224347140f, + 0.222093620973203590f, -0.975025345066994120f, 0.221906658123096260f, + -0.975067913060746360f, + 0.221719687114115240f, -0.975110445204038890f, 0.221532707953135340f, + -0.975152941495307620f, + 0.221345720647030810f, -0.975195401932990370f, 0.221158725202677100f, + -0.975237826515525820f, + 0.220971721626949060f, -0.975280215241354220f, 0.220784709926722670f, + -0.975322568108916930f, + 0.220597690108873650f, -0.975364885116656870f, 0.220410662180277940f, + -0.975407166263018270f, + 0.220223626147812460f, -0.975449411546446380f, 0.220036582018353550f, + -0.975491620965388110f, + 0.219849529798778750f, -0.975533794518291360f, 0.219662469495965180f, + -0.975575932203605610f, + 0.219475401116790340f, -0.975618034019781750f, 0.219288324668132580f, + -0.975660099965271590f, + 0.219101240156869770f, -0.975702130038528570f, 0.218914147589880900f, + -0.975744124238007270f, + 0.218727046974044600f, -0.975786082562163930f, 0.218539938316239830f, + -0.975828005009455550f, + 0.218352821623346430f, -0.975869891578341030f, 0.218165696902243770f, + -0.975911742267280170f, + 0.217978564159812290f, -0.975953557074734300f, 0.217791423402932120f, + -0.975995335999165880f, + 0.217604274638483670f, -0.976037079039039020f, 0.217417117873348300f, + -0.976078786192818850f, + 0.217229953114406790f, -0.976120457458971910f, 0.217042780368541080f, + -0.976162092835966110f, + 0.216855599642632570f, -0.976203692322270560f, 0.216668410943563790f, + -0.976245255916355800f, + 0.216481214278216900f, -0.976286783616693630f, 0.216294009653474370f, + -0.976328275421757260f, + 0.216106797076219600f, -0.976369731330021140f, 0.215919576553335460f, + -0.976411151339961040f, + 0.215732348091705940f, -0.976452535450054060f, 0.215545111698214660f, + -0.976493883658778540f, + 0.215357867379745550f, -0.976535195964614470f, 0.215170615143183500f, + -0.976576472366042610f, + 0.214983354995412820f, -0.976617712861545640f, 0.214796086943318920f, + -0.976658917449606980f, + 0.214608810993786920f, -0.976700086128711840f, 0.214421527153702190f, + -0.976741218897346550f, + 0.214234235429951100f, -0.976782315753998650f, 0.214046935829419330f, + -0.976823376697157240f, + 0.213859628358993830f, -0.976864401725312640f, 0.213672313025561140f, + -0.976905390836956490f, + 0.213484989836008080f, -0.976946344030581560f, 0.213297658797222430f, + -0.976987261304682390f, + 0.213110319916091360f, -0.977028142657754390f, 0.212922973199503260f, + -0.977068988088294450f, + 0.212735618654345870f, -0.977109797594800880f, 0.212548256287508120f, + -0.977150571175773200f, + 0.212360886105878580f, -0.977191308829712280f, 0.212173508116346080f, + -0.977232010555120320f, + 0.211986122325800410f, -0.977272676350500860f, 0.211798728741130820f, + -0.977313306214358750f, + 0.211611327369227610f, -0.977353900145199960f, 0.211423918216980810f, + -0.977394458141532250f, + 0.211236501291280710f, -0.977434980201864260f, 0.211049076599018500f, + -0.977475466324706050f, + 0.210861644147084830f, -0.977515916508569280f, 0.210674203942371490f, + -0.977556330751966460f, + 0.210486755991769890f, -0.977596709053411780f, 0.210299300302171750f, + -0.977637051411420770f, + 0.210111836880469720f, -0.977677357824509930f, 0.209924365733555860f, + -0.977717628291197570f, + 0.209736886868323370f, -0.977757862810002760f, 0.209549400291665110f, + -0.977798061379446360f, + 0.209361906010474190f, -0.977838223998050430f, 0.209174404031644700f, + -0.977878350664338150f, + 0.208986894362070070f, -0.977918441376834370f, 0.208799377008644980f, + -0.977958496134064830f, + 0.208611851978263460f, -0.977998514934557140f, 0.208424319277820650f, + -0.978038497776839600f, + 0.208236778914211470f, -0.978078444659442380f, 0.208049230894330940f, + -0.978118355580896660f, + 0.207861675225075150f, -0.978158230539735050f, 0.207674111913339540f, + -0.978198069534491400f, + 0.207486540966020700f, -0.978237872563701090f, 0.207298962390014880f, + -0.978277639625900420f, + 0.207111376192218560f, -0.978317370719627650f, 0.206923782379529210f, + -0.978357065843421640f, + 0.206736180958843660f, -0.978396724995823090f, 0.206548571937059940f, + -0.978436348175373730f, + 0.206360955321075680f, -0.978475935380616830f, 0.206173331117788770f, + -0.978515486610096910f, + 0.205985699334098050f, -0.978555001862359550f, 0.205798059976901760f, + -0.978594481135952270f, + 0.205610413053099320f, -0.978633924429423100f, 0.205422758569589780f, + -0.978673331741322210f, + 0.205235096533272380f, -0.978712703070200420f, 0.205047426951047380f, + -0.978752038414610340f, + 0.204859749829814420f, -0.978791337773105670f, 0.204672065176474290f, + -0.978830601144241470f, + 0.204484372997927180f, -0.978869828526574120f, 0.204296673301074430f, + -0.978909019918661310f, + 0.204108966092817010f, -0.978948175319062200f, 0.203921251380056150f, + -0.978987294726337050f, + 0.203733529169694010f, -0.979026378139047580f, 0.203545799468632190f, + -0.979065425555756930f, + 0.203358062283773370f, -0.979104436975029250f, 0.203170317622019920f, + -0.979143412395430230f, + 0.202982565490274460f, -0.979182351815526930f, 0.202794805895440550f, + -0.979221255233887700f, + 0.202607038844421110f, -0.979260122649082020f, 0.202419264344120220f, + -0.979298954059681040f, + 0.202231482401441620f, -0.979337749464256780f, 0.202043693023289280f, + -0.979376508861383170f, + 0.201855896216568160f, -0.979415232249634780f, 0.201668091988182500f, + -0.979453919627588210f, + 0.201480280345037820f, -0.979492570993820700f, 0.201292461294039190f, + -0.979531186346911390f, + 0.201104634842091960f, -0.979569765685440520f, 0.200916800996102370f, + -0.979608309007989450f, + 0.200728959762976140f, -0.979646816313141210f, 0.200541111149620090f, + -0.979685287599479930f, + 0.200353255162940420f, -0.979723722865591170f, 0.200165391809844500f, + -0.979762122110061640f, + 0.199977521097239290f, -0.979800485331479680f, 0.199789643032032120f, + -0.979838812528434740f, + 0.199601757621131050f, -0.979877103699517640f, 0.199413864871443750f, + -0.979915358843320480f, + 0.199225964789878890f, -0.979953577958436740f, 0.199038057383344820f, + -0.979991761043461200f, + 0.198850142658750120f, -0.980029908096989980f, 0.198662220623004320f, + -0.980068019117620650f, + 0.198474291283016360f, -0.980106094103951770f, 0.198286354645696270f, + -0.980144133054583590f, + 0.198098410717953730f, -0.980182135968117320f, 0.197910459506698720f, + -0.980220102843155970f, + 0.197722501018842030f, -0.980258033678303550f, 0.197534535261294000f, + -0.980295928472165290f, + 0.197346562240966000f, -0.980333787223347960f, 0.197158581964769040f, + -0.980371609930459690f, + 0.196970594439614370f, -0.980409396592109910f, 0.196782599672414240f, + -0.980447147206909060f, + 0.196594597670080220f, -0.980484861773469380f, 0.196406588439525050f, + -0.980522540290404090f, + 0.196218571987660850f, -0.980560182756327950f, 0.196030548321400880f, + -0.980597789169856850f, + 0.195842517447657990f, -0.980635359529608120f, 0.195654479373345370f, + -0.980672893834200530f, + 0.195466434105377090f, -0.980710392082253970f, 0.195278381650666520f, + -0.980747854272389750f, + 0.195090322016128330f, -0.980785280403230430f, 0.194902255208676660f, + -0.980822670473399990f, + 0.194714181235225990f, -0.980860024481523870f, 0.194526100102691720f, + -0.980897342426228390f, + 0.194338011817988600f, -0.980934624306141640f, 0.194149916388032530f, + -0.980971870119892840f, + 0.193961813819739010f, -0.981009079866112630f, 0.193773704120023840f, + -0.981046253543432780f, + 0.193585587295803750f, -0.981083391150486590f, 0.193397463353994740f, + -0.981120492685908730f, + 0.193209332301514080f, -0.981157558148334830f, 0.193021194145278320f, + -0.981194587536402320f, + 0.192833048892205290f, -0.981231580848749730f, 0.192644896549212240f, + -0.981268538084016710f, + 0.192456737123216840f, -0.981305459240844670f, 0.192268570621137590f, + -0.981342344317875930f, + 0.192080397049892380f, -0.981379193313754560f, 0.191892216416400310f, + -0.981416006227125550f, + 0.191704028727579940f, -0.981452783056635520f, 0.191515833990350240f, + -0.981489523800932130f, + 0.191327632211630990f, -0.981526228458664660f, 0.191139423398341420f, + -0.981562897028483650f, + 0.190951207557401860f, -0.981599529509040720f, 0.190762984695732250f, + -0.981636125898989080f, + 0.190574754820252800f, -0.981672686196983110f, 0.190386517937884580f, + -0.981709210401678800f, + 0.190198274055548120f, -0.981745698511732990f, 0.190010023180165050f, + -0.981782150525804310f, + 0.189821765318656580f, -0.981818566442552500f, 0.189633500477944220f, + -0.981854946260638630f, + 0.189445228664950340f, -0.981891289978724990f, 0.189256949886596720f, + -0.981927597595475540f, + 0.189068664149806280f, -0.981963869109555240f, 0.188880371461501330f, + -0.982000104519630490f, + 0.188692071828605260f, -0.982036303824369020f, 0.188503765258041080f, + -0.982072467022439890f, + 0.188315451756732120f, -0.982108594112513610f, 0.188127131331602530f, + -0.982144685093261580f, + 0.187938803989575850f, -0.982180739963357200f, 0.187750469737576840f, + -0.982216758721474510f, + 0.187562128582529740f, -0.982252741366289370f, 0.187373780531359110f, + -0.982288687896478830f, + 0.187185425590990440f, -0.982324598310721160f, 0.186997063768348510f, + -0.982360472607696210f, + 0.186808695070359330f, -0.982396310786084690f, 0.186620319503948420f, + -0.982432112844569110f, + 0.186431937076041640f, -0.982467878781833170f, 0.186243547793565670f, + -0.982503608596561720f, + 0.186055151663446630f, -0.982539302287441240f, 0.185866748692611720f, + -0.982574959853159240f, + 0.185678338887987790f, -0.982610581292404750f, 0.185489922256501900f, + -0.982646166603868050f, + 0.185301498805082040f, -0.982681715786240860f, 0.185113068540655510f, + -0.982717228838215990f, + 0.184924631470150870f, -0.982752705758487830f, 0.184736187600495930f, + -0.982788146545751970f, + 0.184547736938619640f, -0.982823551198705240f, 0.184359279491450640f, + -0.982858919716046110f, + 0.184170815265917720f, -0.982894252096474070f, 0.183982344268950600f, + -0.982929548338690060f, + 0.183793866507478390f, -0.982964808441396440f, 0.183605381988431350f, + -0.983000032403296590f, + 0.183416890718739230f, -0.983035220223095640f, 0.183228392705332140f, + -0.983070371899499640f, + 0.183039887955141060f, -0.983105487431216290f, 0.182851376475096310f, + -0.983140566816954500f, + 0.182662858272129360f, -0.983175610055424420f, 0.182474333353171260f, + -0.983210617145337640f, + 0.182285801725153320f, -0.983245588085407070f, 0.182097263395007760f, + -0.983280522874346970f, + 0.181908718369666160f, -0.983315421510872810f, 0.181720166656061170f, + -0.983350283993701500f, + 0.181531608261125130f, -0.983385110321551180f, 0.181343043191790590f, + -0.983419900493141540f, + 0.181154471454990920f, -0.983454654507193270f, 0.180965893057658980f, + -0.983489372362428730f, + 0.180777308006728670f, -0.983524054057571260f, 0.180588716309133280f, + -0.983558699591345900f, + 0.180400117971807270f, -0.983593308962478650f, 0.180211513001684590f, + -0.983627882169697210f, + 0.180022901405699510f, -0.983662419211730250f, 0.179834283190787180f, + -0.983696920087308020f, + 0.179645658363882100f, -0.983731384795162090f, 0.179457026931919950f, + -0.983765813334025240f, + 0.179268388901835880f, -0.983800205702631490f, 0.179079744280565390f, + -0.983834561899716630f, + 0.178891093075044830f, -0.983868881924017220f, 0.178702435292209940f, + -0.983903165774271500f, + 0.178513770938997590f, -0.983937413449218920f, 0.178325100022344140f, + -0.983971624947600270f, + 0.178136422549186320f, -0.984005800268157870f, 0.177947738526461670f, + -0.984039939409634970f, + 0.177759047961107140f, -0.984074042370776450f, 0.177570350860060790f, + -0.984108109150328540f, + 0.177381647230260200f, -0.984142139747038570f, 0.177192937078643310f, + -0.984176134159655320f, + 0.177004220412148860f, -0.984210092386929030f, 0.176815497237715000f, + -0.984244014427611110f, + 0.176626767562280960f, -0.984277900280454370f, 0.176438031392785350f, + -0.984311749944212780f, + 0.176249288736167940f, -0.984345563417641900f, 0.176060539599367960f, + -0.984379340699498510f, + 0.175871783989325040f, -0.984413081788540700f, 0.175683021912979580f, + -0.984446786683527920f, + 0.175494253377271400f, -0.984480455383220930f, 0.175305478389141370f, + -0.984514087886381840f, + 0.175116696955530060f, -0.984547684191773960f, 0.174927909083378160f, + -0.984581244298162180f, + 0.174739114779627310f, -0.984614768204312600f, 0.174550314051218490f, + -0.984648255908992630f, + 0.174361506905093830f, -0.984681707410970940f, 0.174172693348194960f, + -0.984715122709017620f, + 0.173983873387463850f, -0.984748501801904210f, 0.173795047029843270f, + -0.984781844688403350f, + 0.173606214282275410f, -0.984815151367289140f, 0.173417375151703520f, + -0.984848421837337010f, + 0.173228529645070490f, -0.984881656097323700f, 0.173039677769319390f, + -0.984914854146027200f, + 0.172850819531394200f, -0.984948015982227030f, 0.172661954938238270f, + -0.984981141604703960f, + 0.172473083996796030f, -0.985014231012239840f, 0.172284206714011350f, + -0.985047284203618200f, + 0.172095323096829040f, -0.985080301177623800f, 0.171906433152193700f, + -0.985113281933042590f, + 0.171717536887049970f, -0.985146226468662230f, 0.171528634308343500f, + -0.985179134783271020f, + 0.171339725423019260f, -0.985212006875659460f, 0.171150810238023340f, + -0.985244842744618540f, + 0.170961888760301360f, -0.985277642388941220f, 0.170772960996799230f, + -0.985310405807421570f, + 0.170584026954463700f, -0.985343132998854790f, 0.170395086640240920f, + -0.985375823962037710f, + 0.170206140061078120f, -0.985408478695768420f, 0.170017187223922090f, + -0.985441097198846210f, + 0.169828228135719880f, -0.985473679470071810f, 0.169639262803419400f, + -0.985506225508247290f, + 0.169450291233967930f, -0.985538735312176060f, 0.169261313434313890f, + -0.985571208880662740f, + 0.169072329411405180f, -0.985603646212513400f, 0.168883339172190010f, + -0.985636047306535420f, + 0.168694342723617440f, -0.985668412161537550f, 0.168505340072635900f, + -0.985700740776329850f, + 0.168316331226194910f, -0.985733033149723490f, 0.168127316191243350f, + -0.985765289280531310f, + 0.167938294974731230f, -0.985797509167567370f, 0.167749267583608030f, + -0.985829692809647050f, + 0.167560234024823590f, -0.985861840205586980f, 0.167371194305328540f, + -0.985893951354205210f, + 0.167182148432072880f, -0.985926026254321130f, 0.166993096412007770f, + -0.985958064904755460f, + 0.166804038252083870f, -0.985990067304330030f, 0.166614973959252090f, + -0.986022033451868560f, + 0.166425903540464220f, -0.986053963346195440f, 0.166236827002671390f, + -0.986085856986136820f, + 0.166047744352825850f, -0.986117714370520090f, 0.165858655597879430f, + -0.986149535498173860f, + 0.165669560744784140f, -0.986181320367928270f, 0.165480459800492890f, + -0.986213068978614490f, + 0.165291352771957970f, -0.986244781329065460f, 0.165102239666132720f, + -0.986276457418114980f, + 0.164913120489970090f, -0.986308097244598670f, 0.164723995250423190f, + -0.986339700807353000f, + 0.164534863954446110f, -0.986371268105216030f, 0.164345726608992190f, + -0.986402799137027220f, + 0.164156583221015890f, -0.986434293901627070f, 0.163967433797471110f, + -0.986465752397857940f, + 0.163778278345312690f, -0.986497174624562880f, 0.163589116871495160f, + -0.986528560580586690f, + 0.163399949382973230f, -0.986559910264775410f, 0.163210775886702460f, + -0.986591223675976400f, + 0.163021596389637810f, -0.986622500813038480f, 0.162832410898735260f, + -0.986653741674811350f, + 0.162643219420950450f, -0.986684946260146690f, 0.162454021963239190f, + -0.986716114567897100f, + 0.162264818532558110f, -0.986747246596916480f, 0.162075609135863330f, + -0.986778342346060430f, + 0.161886393780111910f, -0.986809401814185420f, 0.161697172472260540f, + -0.986840425000149680f, + 0.161507945219266150f, -0.986871411902812470f, 0.161318712028086540f, + -0.986902362521034470f, + 0.161129472905678780f, -0.986933276853677710f, 0.160940227859001140f, + -0.986964154899605650f, + 0.160750976895011390f, -0.986994996657682870f, 0.160561720020667510f, + -0.987025802126775600f, + 0.160372457242928400f, -0.987056571305750970f, 0.160183188568752240f, + -0.987087304193477900f, + 0.159993914005098350f, -0.987118000788826280f, 0.159804633558925380f, + -0.987148661090667570f, + 0.159615347237193090f, -0.987179285097874340f, 0.159426055046860750f, + -0.987209872809320820f, + 0.159236756994887850f, -0.987240424223882250f, 0.159047453088234840f, + -0.987270939340435420f, + 0.158858143333861390f, -0.987301418157858430f, 0.158668827738728370f, + -0.987331860675030430f, + 0.158479506309796100f, -0.987362266890832400f, 0.158290179054025180f, + -0.987392636804146240f, + 0.158100845978377090f, -0.987422970413855410f, 0.157911507089812640f, + -0.987453267718844560f, + 0.157722162395293690f, -0.987483528717999710f, 0.157532811901781670f, + -0.987513753410208420f, + 0.157343455616238280f, -0.987543941794359230f, 0.157154093545626010f, + -0.987574093869342360f, + 0.156964725696906750f, -0.987604209634049160f, 0.156775352077043430f, + -0.987634289087372160f, + 0.156585972692998590f, -0.987664332228205710f, 0.156396587551734940f, + -0.987694339055445130f, + 0.156207196660216040f, -0.987724309567986960f, 0.156017800025404830f, + -0.987754243764729530f, + 0.155828397654265320f, -0.987784141644572180f, 0.155638989553760850f, + -0.987814003206415550f, + 0.155449575730855880f, -0.987843828449161740f, 0.155260156192514380f, + -0.987873617371714200f, + 0.155070730945700510f, -0.987903369972977790f, 0.154881299997379400f, + -0.987933086251858380f, + 0.154691863354515400f, -0.987962766207263420f, 0.154502421024073990f, + -0.987992409838101880f, + 0.154312973013020240f, -0.988022017143283530f, 0.154123519328319360f, + -0.988051588121720110f, + 0.153934059976937460f, -0.988081122772324070f, 0.153744594965840000f, + -0.988110621094009820f, + 0.153555124301993500f, -0.988140083085692570f, 0.153365647992364020f, + -0.988169508746289060f, + 0.153176166043917870f, -0.988198898074717610f, 0.152986678463622160f, + -0.988228251069897420f, + 0.152797185258443410f, -0.988257567730749460f, 0.152607686435349140f, + -0.988286848056195710f, + 0.152418182001306500f, -0.988316092045159690f, 0.152228671963282770f, + -0.988345299696566150f, + 0.152039156328246160f, -0.988374471009341280f, 0.151849635103164180f, + -0.988403605982412390f, + 0.151660108295005400f, -0.988432704614708340f, 0.151470575910737760f, + -0.988461766905159300f, + 0.151281037957330250f, -0.988490792852696590f, 0.151091494441751430f, + -0.988519782456253270f, + 0.150901945370970040f, -0.988548735714763200f, 0.150712390751955720f, + -0.988577652627162020f, + 0.150522830591677370f, -0.988606533192386450f, 0.150333264897105050f, + -0.988635377409374790f, + 0.150143693675208330f, -0.988664185277066230f, 0.149954116932956990f, + -0.988692956794401940f, + 0.149764534677321620f, -0.988721691960323780f, 0.149574946915272210f, + -0.988750390773775360f, + 0.149385353653779810f, -0.988779053233701520f, 0.149195754899814960f, + -0.988807679339048340f, + 0.149006150660348470f, -0.988836269088763540f, 0.148816540942352030f, + -0.988864822481795640f, + 0.148626925752796540f, -0.988893339517095130f, 0.148437305098654050f, + -0.988921820193613190f, + 0.148247678986896200f, -0.988950264510302990f, 0.148058047424494740f, + -0.988978672466118480f, + 0.147868410418422360f, -0.989007044060015270f, 0.147678767975650970f, + -0.989035379290950310f, + 0.147489120103153680f, -0.989063678157881540f, 0.147299466807902820f, + -0.989091940659768800f, + 0.147109808096871850f, -0.989120166795572690f, 0.146920143977033760f, + -0.989148356564255590f, + 0.146730474455361750f, -0.989176509964781010f, 0.146540799538829870f, + -0.989204626996113780f, + 0.146351119234411440f, -0.989232707657220050f, 0.146161433549080950f, + -0.989260751947067640f, + 0.145971742489812370f, -0.989288759864625170f, 0.145782046063579860f, + -0.989316731408863000f, + 0.145592344277358450f, -0.989344666578752640f, 0.145402637138122540f, + -0.989372565373267010f, + 0.145212924652847520f, -0.989400427791380380f, 0.145023206828508360f, + -0.989428253832068230f, + 0.144833483672080240f, -0.989456043494307710f, 0.144643755190539150f, + -0.989483796777076760f, + 0.144454021390860440f, -0.989511513679355190f, 0.144264282280020530f, + -0.989539194200123930f, + 0.144074537864995330f, -0.989566838338365120f, 0.143884788152761010f, + -0.989594446093062460f, + 0.143695033150294580f, -0.989622017463200780f, 0.143505272864572290f, + -0.989649552447766530f, + 0.143315507302571590f, -0.989677051045747210f, 0.143125736471269140f, + -0.989704513256131850f, + 0.142935960377642700f, -0.989731939077910570f, 0.142746179028669620f, + -0.989759328510075200f, + 0.142556392431327340f, -0.989786681551618640f, 0.142366600592594260f, + -0.989813998201535260f, + 0.142176803519448000f, -0.989841278458820530f, 0.141987001218867340f, + -0.989868522322471580f, + 0.141797193697830530f, -0.989895729791486660f, 0.141607380963316020f, + -0.989922900864865450f, + 0.141417563022303130f, -0.989950035541608990f, 0.141227739881770480f, + -0.989977133820719610f, + 0.141037911548697770f, -0.990004195701200910f, 0.140848078030064220f, + -0.990031221182058000f, + 0.140658239332849240f, -0.990058210262297120f, 0.140468395464033110f, + -0.990085162940925970f, + 0.140278546430595420f, -0.990112079216953770f, 0.140088692239516780f, + -0.990138959089390650f, + 0.139898832897777380f, -0.990165802557248400f, 0.139708968412357580f, + -0.990192609619540030f, + 0.139519098790238600f, -0.990219380275280000f, 0.139329224038400980f, + -0.990246114523483990f, + 0.139139344163826280f, -0.990272812363169110f, 0.138949459173495440f, + -0.990299473793353590f, + 0.138759569074390380f, -0.990326098813057330f, 0.138569673873492640f, + -0.990352687421301340f, + 0.138379773577783890f, -0.990379239617108160f, 0.138189868194246640f, + -0.990405755399501260f, + 0.137999957729862760f, -0.990432234767505970f, 0.137810042191615130f, + -0.990458677720148620f, + 0.137620121586486180f, -0.990485084256456980f, 0.137430195921458550f, + -0.990511454375460290f, + 0.137240265203515700f, -0.990537788076188750f, 0.137050329439640380f, + -0.990564085357674370f, + 0.136860388636816430f, -0.990590346218950150f, 0.136670442802027230f, + -0.990616570659050620f, + 0.136480491942256310f, -0.990642758677011570f, 0.136290536064488070f, + -0.990668910271869980f, + 0.136100575175706200f, -0.990695025442664630f, 0.135910609282895440f, + -0.990721104188435180f, + 0.135720638393040080f, -0.990747146508222710f, 0.135530662513124620f, + -0.990773152401069780f, + 0.135340681650134330f, -0.990799121866020370f, 0.135150695811053850f, + -0.990825054902119470f, + 0.134960705002868830f, -0.990850951508413620f, 0.134770709232564290f, + -0.990876811683950810f, + 0.134580708507126220f, -0.990902635427780010f, 0.134390702833540240f, + -0.990928422738951990f, + 0.134200692218792020f, -0.990954173616518500f, 0.134010676669868210f, + -0.990979888059532740f, + 0.133820656193754690f, -0.991005566067049370f, 0.133630630797438390f, + -0.991031207638124130f, + 0.133440600487905820f, -0.991056812771814340f, 0.133250565272143570f, + -0.991082381467178640f, + 0.133060525157139180f, -0.991107913723276780f, 0.132870480149879400f, + -0.991133409539170170f, + 0.132680430257352130f, -0.991158868913921350f, 0.132490375486544710f, + -0.991184291846594180f, + 0.132300315844444680f, -0.991209678336254060f, 0.132110251338040470f, + -0.991235028381967420f, + 0.131920181974319760f, -0.991260341982802440f, 0.131730107760271280f, + -0.991285619137828200f, + 0.131540028702883280f, -0.991310859846115440f, 0.131349944809144220f, + -0.991336064106736140f, + 0.131159856086043410f, -0.991361231918763460f, 0.130969762540569380f, + -0.991386363281272280f, + 0.130779664179711790f, -0.991411458193338540f, 0.130589561010459600f, + -0.991436516654039420f, + 0.130399453039802740f, -0.991461538662453790f, 0.130209340274730770f, + -0.991486524217661480f, + 0.130019222722233350f, -0.991511473318743900f, 0.129829100389301010f, + -0.991536385964783880f, + 0.129638973282923540f, -0.991561262154865290f, 0.129448841410091830f, + -0.991586101888073500f, + 0.129258704777796270f, -0.991610905163495370f, 0.129068563393027410f, + -0.991635671980218740f, + 0.128878417262776660f, -0.991660402337333210f, 0.128688266394034690f, + -0.991685096233929530f, + 0.128498110793793220f, -0.991709753669099530f, 0.128307950469043590f, + -0.991734374641936810f, + 0.128117785426777150f, -0.991758959151536110f, 0.127927615673986190f, + -0.991783507196993490f, + 0.127737441217662280f, -0.991808018777406430f, 0.127547262064798050f, + -0.991832493891873780f, + 0.127357078222385570f, -0.991856932539495360f, 0.127166889697417180f, + -0.991881334719373010f, + 0.126976696496885980f, -0.991905700430609330f, 0.126786498627784430f, + -0.991930029672308480f, + 0.126596296097105960f, -0.991954322443575950f, 0.126406088911843320f, + -0.991978578743518580f, + 0.126215877078990400f, -0.992002798571244520f, 0.126025660605540460f, + -0.992026981925863360f, + 0.125835439498487020f, -0.992051128806485720f, 0.125645213764824380f, + -0.992075239212224070f, + 0.125454983411546210f, -0.992099313142191800f, 0.125264748445647110f, + -0.992123350595503720f, + 0.125074508874121300f, -0.992147351571276090f, 0.124884264703963150f, + -0.992171316068626520f, + 0.124694015942167770f, -0.992195244086673920f, 0.124503762595729650f, + -0.992219135624538450f, + 0.124313504671644300f, -0.992242990681341700f, 0.124123242176906760f, + -0.992266809256206580f, + 0.123932975118512200f, -0.992290591348257370f, 0.123742703503456630f, + -0.992314336956619640f, + 0.123552427338735370f, -0.992338046080420420f, 0.123362146631344750f, + -0.992361718718787870f, + 0.123171861388280650f, -0.992385354870851670f, 0.122981571616539080f, + -0.992408954535742850f, + 0.122791277323116900f, -0.992432517712593550f, 0.122600978515010240f, + -0.992456044400537700f, + 0.122410675199216280f, -0.992479534598709970f, 0.122220367382731500f, + -0.992502988306246950f, + 0.122030055072553410f, -0.992526405522286100f, 0.121839738275679020f, + -0.992549786245966570f, + 0.121649416999105540f, -0.992573130476428810f, 0.121459091249830950f, + -0.992596438212814290f, + 0.121268761034852550f, -0.992619709454266140f, 0.121078426361168710f, + -0.992642944199928820f, + 0.120888087235777220f, -0.992666142448948020f, 0.120697743665676120f, + -0.992689304200470750f, + 0.120507395657864240f, -0.992712429453645460f, 0.120317043219339670f, + -0.992735518207621850f, + 0.120126686357101580f, -0.992758570461551140f, 0.119936325078148620f, + -0.992781586214585570f, + 0.119745959389479630f, -0.992804565465879140f, 0.119555589298094230f, + -0.992827508214586760f, + 0.119365214810991350f, -0.992850414459865100f, 0.119174835935170960f, + -0.992873284200871730f, + 0.118984452677632520f, -0.992896117436765980f, 0.118794065045375670f, + -0.992918914166708300f, + 0.118603673045400840f, -0.992941674389860470f, 0.118413276684707770f, + -0.992964398105385610f, + 0.118222875970297250f, -0.992987085312448390f, 0.118032470909169300f, + -0.993009736010214580f, + 0.117842061508325020f, -0.993032350197851410f, 0.117651647774765000f, + -0.993054927874527320f, + 0.117461229715489990f, -0.993077469039412300f, 0.117270807337501560f, + -0.993099973691677570f, + 0.117080380647800550f, -0.993122441830495580f, 0.116889949653388850f, + -0.993144873455040430f, + 0.116699514361267840f, -0.993167268564487230f, 0.116509074778439050f, + -0.993189627158012620f, + 0.116318630911904880f, -0.993211949234794500f, 0.116128182768666920f, + -0.993234234794012290f, + 0.115937730355727850f, -0.993256483834846440f, 0.115747273680089870f, + -0.993278696356479030f, + 0.115556812748755290f, -0.993300872358093280f, 0.115366347568727250f, + -0.993323011838873950f, + 0.115175878147008180f, -0.993345114798006910f, 0.114985404490601530f, + -0.993367181234679600f, + 0.114794926606510250f, -0.993389211148080650f, 0.114604444501737460f, + -0.993411204537400060f, + 0.114413958183287050f, -0.993433161401829360f, 0.114223467658162260f, + -0.993455081740560960f, + 0.114032972933367300f, -0.993476965552789190f, 0.113842474015905660f, + -0.993498812837709360f, + 0.113651970912781920f, -0.993520623594518090f, 0.113461463631000080f, + -0.993542397822413600f, + 0.113270952177564360f, -0.993564135520595300f, 0.113080436559479720f, + -0.993585836688263950f, + 0.112889916783750470f, -0.993607501324621610f, 0.112699392857381910f, + -0.993629129428871720f, + 0.112508864787378830f, -0.993650721000219120f, 0.112318332580746190f, + -0.993672276037870010f, + 0.112127796244489750f, -0.993693794541031680f, 0.111937255785614560f, + -0.993715276508913230f, + 0.111746711211126660f, -0.993736721940724600f, 0.111556162528031630f, + -0.993758130835677430f, + 0.111365609743335190f, -0.993779503192984580f, 0.111175052864043830f, + -0.993800839011860120f, + 0.110984491897163380f, -0.993822138291519660f, 0.110793926849700630f, + -0.993843401031180180f, + 0.110603357728661910f, -0.993864627230059750f, 0.110412784541053660f, + -0.993885816887378090f, + 0.110222207293883180f, -0.993906970002356060f, 0.110031625994157000f, + -0.993928086574215830f, + 0.109841040648882680f, -0.993949166602181130f, 0.109650451265067080f, + -0.993970210085476920f, + 0.109459857849718030f, -0.993991217023329380f, 0.109269260409842920f, + -0.994012187414966220f, + 0.109078658952449240f, -0.994033121259616400f, 0.108888053484545310f, + -0.994054018556510210f, + 0.108697444013138670f, -0.994074879304879370f, 0.108506830545237980f, + -0.994095703503956930f, + 0.108316213087851300f, -0.994116491152977070f, 0.108125591647986880f, + -0.994137242251175720f, + 0.107934966232653760f, -0.994157956797789730f, 0.107744336848860260f, + -0.994178634792057590f, + 0.107553703503615710f, -0.994199276233218910f, 0.107363066203928920f, + -0.994219881120514850f, + 0.107172424956808870f, -0.994240449453187900f, 0.106981779769265340f, + -0.994260981230481790f, + 0.106791130648307380f, -0.994281476451641550f, 0.106600477600945030f, + -0.994301935115913580f, + 0.106409820634187840f, -0.994322357222545810f, 0.106219159755045520f, + -0.994342742770787270f, + 0.106028494970528530f, -0.994363091759888570f, 0.105837826287646670f, + -0.994383404189101430f, + 0.105647153713410700f, -0.994403680057679100f, 0.105456477254830660f, + -0.994423919364875950f, + 0.105265796918917650f, -0.994444122109948040f, 0.105075112712682180f, + -0.994464288292152390f, + 0.104884424643134970f, -0.994484417910747600f, 0.104693732717287500f, + -0.994504510964993590f, + 0.104503036942150550f, -0.994524567454151740f, 0.104312337324735870f, + -0.994544587377484300f, + 0.104121633872054730f, -0.994564570734255420f, 0.103930926591118540f, + -0.994584517523730340f, + 0.103740215488939480f, -0.994604427745175660f, 0.103549500572529040f, + -0.994624301397859400f, + 0.103358781848899700f, -0.994644138481050710f, 0.103168059325063390f, + -0.994663938994020280f, + 0.102977333008032250f, -0.994683702936040250f, 0.102786602904819150f, + -0.994703430306383860f, + 0.102595869022436280f, -0.994723121104325700f, 0.102405131367896790f, + -0.994742775329142010f, + 0.102214389948213370f, -0.994762392980109930f, 0.102023644770398800f, + -0.994781974056508260f, + 0.101832895841466670f, -0.994801518557617110f, 0.101642143168429830f, + -0.994821026482717860f, + 0.101451386758302160f, -0.994840497831093180f, 0.101260626618096800f, + -0.994859932602027320f, + 0.101069862754827880f, -0.994879330794805620f, 0.100879095175509010f, + -0.994898692408714870f, + 0.100688323887153970f, -0.994918017443043200f, 0.100497548896777310f, + -0.994937305897080070f, + 0.100306770211392820f, -0.994956557770116380f, 0.100115987838015370f, + -0.994975773061444140f, + 0.099925201783659226f, -0.994994951770357020f, 0.099734412055338839f, + -0.995014093896149700f, + 0.099543618660069444f, -0.995033199438118630f, 0.099352821604865513f, + -0.995052268395561160f, + 0.099162020896742573f, -0.995071300767776170f, 0.098971216542715582f, + -0.995090296554063890f, + 0.098780408549799664f, -0.995109255753726110f, 0.098589596925010708f, + -0.995128178366065490f, + 0.098398781675363881f, -0.995147064390386470f, 0.098207962807875346f, + -0.995165913825994620f, + 0.098017140329560770f, -0.995184726672196820f, 0.097826314247435903f, + -0.995203502928301510f, + 0.097635484568517339f, -0.995222242593618240f, 0.097444651299820870f, + -0.995240945667458130f, + 0.097253814448363354f, -0.995259612149133390f, 0.097062974021160875f, + -0.995278242037957670f, + 0.096872130025230527f, -0.995296835333246090f, 0.096681282467588864f, + -0.995315392034315070f, + 0.096490431355252607f, -0.995333912140482280f, 0.096299576695239225f, + -0.995352395651066810f, + 0.096108718494565468f, -0.995370842565388990f, 0.095917856760249096f, + -0.995389252882770690f, + 0.095726991499307315f, -0.995407626602534900f, 0.095536122718757485f, + -0.995425963724006160f, + 0.095345250425617742f, -0.995444264246510340f, 0.095154374626905472f, + -0.995462528169374420f, + 0.094963495329639061f, -0.995480755491926940f, 0.094772612540836410f, + -0.995498946213497770f, + 0.094581726267515473f, -0.995517100333418110f, 0.094390836516695067f, + -0.995535217851020390f, + 0.094199943295393190f, -0.995553298765638470f, 0.094009046610628907f, + -0.995571343076607770f, + 0.093818146469420494f, -0.995589350783264600f, 0.093627242878787237f, + -0.995607321884947050f, + 0.093436335845747912f, -0.995625256380994310f, 0.093245425377321389f, + -0.995643154270746900f, + 0.093054511480527333f, -0.995661015553546910f, 0.092863594162384697f, + -0.995678840228737540f, + 0.092672673429913366f, -0.995696628295663520f, 0.092481749290132753f, + -0.995714379753670610f, + 0.092290821750062355f, -0.995732094602106430f, 0.092099890816722485f, + -0.995749772840319400f, + 0.091908956497132696f, -0.995767414467659820f, 0.091718018798313525f, + -0.995785019483478750f, + 0.091527077727284981f, -0.995802587887129160f, 0.091336133291067212f, + -0.995820119677964910f, + 0.091145185496681130f, -0.995837614855341610f, 0.090954234351146898f, + -0.995855073418615790f, + 0.090763279861485704f, -0.995872495367145730f, 0.090572322034718156f, + -0.995889880700290720f, + 0.090381360877865011f, -0.995907229417411720f, 0.090190396397947820f, + -0.995924541517870690f, + 0.089999428601987341f, -0.995941817001031350f, 0.089808457497005362f, + -0.995959055866258320f, + 0.089617483090022917f, -0.995976258112917790f, 0.089426505388062016f, + -0.995993423740377360f, + 0.089235524398144139f, -0.996010552748005870f, 0.089044540127290905f, + -0.996027645135173610f, + 0.088853552582524684f, -0.996044700901251970f, 0.088662561770867121f, + -0.996061720045614000f, + 0.088471567699340822f, -0.996078702567633980f, 0.088280570374967879f, + -0.996095648466687300f, + 0.088089569804770507f, -0.996112557742151130f, 0.087898565995771685f, + -0.996129430393403740f, + 0.087707558954993645f, -0.996146266419824620f, 0.087516548689459586f, + -0.996163065820794950f, + 0.087325535206192226f, -0.996179828595696870f, 0.087134518512214321f, + -0.996196554743914220f, + 0.086943498614549489f, -0.996213244264832040f, 0.086752475520220515f, + -0.996229897157836500f, + 0.086561449236251239f, -0.996246513422315520f, 0.086370419769664919f, + -0.996263093057658030f, + 0.086179387127484922f, -0.996279636063254650f, 0.085988351316735448f, + -0.996296142438496850f, + 0.085797312344439880f, -0.996312612182778000f, 0.085606270217622613f, + -0.996329045295492380f, + 0.085415224943307277f, -0.996345441776035900f, 0.085224176528518519f, + -0.996361801623805720f, + 0.085033124980280414f, -0.996378124838200210f, 0.084842070305617148f, + -0.996394411418619290f, + 0.084651012511553700f, -0.996410661364464100f, 0.084459951605114297f, + -0.996426874675137240f, + 0.084268887593324127f, -0.996443051350042630f, 0.084077820483207846f, + -0.996459191388585410f, + 0.083886750281790226f, -0.996475294790172160f, 0.083695676996096827f, + -0.996491361554210920f, + 0.083504600633152404f, -0.996507391680110820f, 0.083313521199982740f, + -0.996523385167282450f, + 0.083122438703613077f, -0.996539342015137940f, 0.082931353151068726f, + -0.996555262223090540f, + 0.082740264549375803f, -0.996571145790554840f, 0.082549172905559659f, + -0.996586992716946950f, + 0.082358078226646619f, -0.996602803001684130f, 0.082166980519662466f, + -0.996618576644185070f, + 0.081975879791633108f, -0.996634313643869900f, 0.081784776049585201f, + -0.996650014000160070f, + 0.081593669300544638f, -0.996665677712478160f, 0.081402559551538328f, + -0.996681304780248300f, + 0.081211446809592386f, -0.996696895202896060f, 0.081020331081733912f, + -0.996712448979848010f, + 0.080829212374989468f, -0.996727966110532490f, 0.080638090696385709f, + -0.996743446594378860f, + 0.080446966052950097f, -0.996758890430818000f, 0.080255838451709291f, + -0.996774297619282050f, + 0.080064707899690932f, -0.996789668159204560f, 0.079873574403922148f, + -0.996805002050020320f, + 0.079682437971430126f, -0.996820299291165670f, 0.079491298609242866f, + -0.996835559882078170f, + 0.079300156324387569f, -0.996850783822196610f, 0.079109011123892431f, + -0.996865971110961310f, + 0.078917863014785095f, -0.996881121747813850f, 0.078726712004093313f, + -0.996896235732197210f, + 0.078535558098845590f, -0.996911313063555740f, 0.078344401306069678f, + -0.996926353741335090f, + 0.078153241632794315f, -0.996941357764982160f, 0.077962079086047645f, + -0.996956325133945280f, + 0.077770913672857989f, -0.996971255847674320f, 0.077579745400254363f, + -0.996986149905620180f, + 0.077388574275265049f, -0.997001007307235290f, 0.077197400304919297f, + -0.997015828051973310f, + 0.077006223496245585f, -0.997030612139289450f, 0.076815043856273399f, + -0.997045359568640040f, + 0.076623861392031617f, -0.997060070339482960f, 0.076432676110549283f, + -0.997074744451277310f, + 0.076241488018856149f, -0.997089381903483400f, 0.076050297123981231f, + -0.997103982695563330f, + 0.075859103432954503f, -0.997118546826979980f, 0.075667906952805383f, + -0.997133074297198110f, + 0.075476707690563416f, -0.997147565105683480f, 0.075285505653258880f, + -0.997162019251903290f, + 0.075094300847921291f, -0.997176436735326190f, 0.074903093281581137f, + -0.997190817555421940f, + 0.074711882961268378f, -0.997205161711661850f, 0.074520669894013014f, + -0.997219469203518670f, + 0.074329454086845867f, -0.997233740030466160f, 0.074138235546796952f, + -0.997247974191979860f, + 0.073947014280897269f, -0.997262171687536170f, 0.073755790296177265f, + -0.997276332516613180f, + 0.073564563599667454f, -0.997290456678690210f, 0.073373334198399157f, + -0.997304544173247990f, + 0.073182102099402888f, -0.997318594999768600f, 0.072990867309710133f, + -0.997332609157735470f, + 0.072799629836351618f, -0.997346586646633230f, 0.072608389686359048f, + -0.997360527465947940f, + 0.072417146866763538f, -0.997374431615167030f, 0.072225901384596336f, + -0.997388299093779460f, + 0.072034653246889416f, -0.997402129901275300f, 0.071843402460674000f, + -0.997415924037145960f, + 0.071652149032982254f, -0.997429681500884180f, 0.071460892970845832f, + -0.997443402291984360f, + 0.071269634281296415f, -0.997457086409941910f, 0.071078372971366502f, + -0.997470733854253670f, + 0.070887109048087787f, -0.997484344624417930f, 0.070695842518492924f, + -0.997497918719934210f, + 0.070504573389614009f, -0.997511456140303450f, 0.070313301668483263f, + -0.997524956885027960f, + 0.070122027362133646f, -0.997538420953611230f, 0.069930750477597295f, + -0.997551848345558430f, + 0.069739471021907376f, -0.997565239060375750f, 0.069548189002096472f, + -0.997578593097570800f, + 0.069356904425197236f, -0.997591910456652630f, 0.069165617298243109f, + -0.997605191137131640f, + 0.068974327628266732f, -0.997618435138519550f, 0.068783035422301728f, + -0.997631642460329320f, + 0.068591740687380900f, -0.997644813102075420f, 0.068400443430538069f, + -0.997657947063273710f, + 0.068209143658806454f, -0.997671044343441000f, 0.068017841379219388f, + -0.997684104942096030f, + 0.067826536598810966f, -0.997697128858758500f, 0.067635229324614451f, + -0.997710116092949570f, + 0.067443919563664106f, -0.997723066644191640f, 0.067252607322993652f, + -0.997735980512008620f, + 0.067061292609636836f, -0.997748857695925690f, 0.066869975430628226f, + -0.997761698195469560f, + 0.066678655793001543f, -0.997774502010167820f, 0.066487333703791507f, + -0.997787269139549960f, + 0.066296009170032283f, -0.997799999583146470f, 0.066104682198758091f, + -0.997812693340489280f, + 0.065913352797003930f, -0.997825350411111640f, 0.065722020971803977f, + -0.997837970794548280f, + 0.065530686730193397f, -0.997850554490335110f, 0.065339350079206798f, + -0.997863101498009500f, + 0.065148011025878860f, -0.997875611817110150f, 0.064956669577245010f, + -0.997888085447177110f, + 0.064765325740339871f, -0.997900522387751620f, 0.064573979522199065f, + -0.997912922638376610f, + 0.064382630929857410f, -0.997925286198596000f, 0.064191279970350679f, + -0.997937613067955250f, + 0.063999926650714078f, -0.997949903246001190f, 0.063808570977982898f, + -0.997962156732281950f, + 0.063617212959193190f, -0.997974373526346990f, 0.063425852601380200f, + -0.997986553627747020f, + 0.063234489911580136f, -0.997998697036034390f, 0.063043124896828631f, + -0.998010803750762450f, + 0.062851757564161420f, -0.998022873771486240f, 0.062660387920614985f, + -0.998034907097761770f, + 0.062469015973224969f, -0.998046903729146840f, 0.062277641729028041f, + -0.998058863665200250f, + 0.062086265195060247f, -0.998070786905482340f, 0.061894886378357744f, + -0.998082673449554590f, + 0.061703505285957416f, -0.998094523296980010f, 0.061512121924895365f, + -0.998106336447323050f, + 0.061320736302208648f, -0.998118112900149180f, 0.061129348424933755f, + -0.998129852655025520f, + 0.060937958300107238f, -0.998141555711520520f, 0.060746565934766412f, + -0.998153222069203650f, + 0.060555171335947781f, -0.998164851727646240f, 0.060363774510688827f, + -0.998176444686420530f, + 0.060172375466026218f, -0.998188000945100300f, 0.059980974208997596f, + -0.998199520503260660f, + 0.059789570746640007f, -0.998211003360478190f, 0.059598165085990598f, + -0.998222449516330550f, + 0.059406757234087247f, -0.998233858970396850f, 0.059215347197967026f, + -0.998245231722257880f, + 0.059023934984667986f, -0.998256567771495180f, 0.058832520601227581f, + -0.998267867117692110f, + 0.058641104054683348f, -0.998279129760433200f, 0.058449685352073573f, + -0.998290355699304350f, + 0.058258264500435732f, -0.998301544933892890f, 0.058066841506808263f, + -0.998312697463787260f, + 0.057875416378229017f, -0.998323813288577560f, 0.057683989121735932f, + -0.998334892407855000f, + 0.057492559744367684f, -0.998345934821212370f, 0.057301128253162144f, + -0.998356940528243420f, + 0.057109694655158132f, -0.998367909528543820f, 0.056918258957393907f, + -0.998378841821709990f, + 0.056726821166907783f, -0.998389737407340160f, 0.056535381290738825f, + -0.998400596285033640f, + 0.056343939335925283f, -0.998411418454391300f, 0.056152495309506383f, + -0.998422203915015020f, + 0.055961049218520520f, -0.998432952666508440f, 0.055769601070007072f, + -0.998443664708476340f, + 0.055578150871004817f, -0.998454340040524800f, 0.055386698628552604f, + -0.998464978662261250f, + 0.055195244349690031f, -0.998475580573294770f, 0.055003788041455885f, + -0.998486145773235360f, + 0.054812329710889909f, -0.998496674261694640f, 0.054620869365031251f, + -0.998507166038285490f, + 0.054429407010919147f, -0.998517621102622210f, 0.054237942655593556f, + -0.998528039454320230f, + 0.054046476306093640f, -0.998538421092996730f, 0.053855007969459509f, + -0.998548766018269920f, + 0.053663537652730679f, -0.998559074229759310f, 0.053472065362946755f, + -0.998569345727086110f, + 0.053280591107148056f, -0.998579580509872500f, 0.053089114892374119f, + -0.998589778577742230f, + 0.052897636725665401f, -0.998599939930320370f, 0.052706156614061798f, + -0.998610064567233340f, + 0.052514674564603257f, -0.998620152488108870f, 0.052323190584330471f, + -0.998630203692576050f, + 0.052131704680283317f, -0.998640218180265270f, 0.051940216859502626f, + -0.998650195950808280f, + 0.051748727129028414f, -0.998660137003838490f, 0.051557235495901653f, + -0.998670041338990070f, + 0.051365741967162731f, -0.998679908955899090f, 0.051174246549852087f, + -0.998689739854202620f, + 0.050982749251010900f, -0.998699534033539280f, 0.050791250077679546f, + -0.998709291493549030f, + 0.050599749036899337f, -0.998719012233872940f, 0.050408246135710995f, + -0.998728696254153720f, + 0.050216741381155325f, -0.998738343554035230f, 0.050025234780273840f, + -0.998747954133162860f, + 0.049833726340107257f, -0.998757527991183340f, 0.049642216067697226f, + -0.998767065127744380f, + 0.049450703970084824f, -0.998776565542495610f, 0.049259190054311168f, + -0.998786029235087640f, + 0.049067674327418126f, -0.998795456205172410f, 0.048876156796446746f, + -0.998804846452403420f, + 0.048684637468439020f, -0.998814199976435390f, 0.048493116350436342f, + -0.998823516776924380f, + 0.048301593449480172f, -0.998832796853527990f, 0.048110068772612716f, + -0.998842040205904840f, + 0.047918542326875327f, -0.998851246833715180f, 0.047727014119310344f, + -0.998860416736620520f, + 0.047535484156959261f, -0.998869549914283560f, 0.047343952446864526f, + -0.998878646366368690f, + 0.047152418996068000f, -0.998887706092541290f, 0.046960883811611599f, + -0.998896729092468410f, + 0.046769346900537960f, -0.998905715365818290f, 0.046577808269888908f, + -0.998914664912260440f, + 0.046386267926707213f, -0.998923577731465780f, 0.046194725878035046f, + -0.998932453823106690f, + 0.046003182130914644f, -0.998941293186856870f, 0.045811636692388955f, + -0.998950095822391250f, + 0.045620089569500123f, -0.998958861729386080f, 0.045428540769291224f, + -0.998967590907519300f, + 0.045236990298804750f, -0.998976283356469820f, 0.045045438165083225f, + -0.998984939075918010f, + 0.044853884375169933f, -0.998993558065545680f, 0.044662328936107311f, + -0.999002140325035980f, + 0.044470771854938744f, -0.999010685854073380f, 0.044279213138707016f, + -0.999019194652343460f, + 0.044087652794454979f, -0.999027666719533690f, 0.043896090829226200f, + -0.999036102055332330f, + 0.043704527250063421f, -0.999044500659429290f, 0.043512962064010327f, + -0.999052862531515930f, + 0.043321395278109784f, -0.999061187671284600f, 0.043129826899405595f, + -0.999069476078429330f, + 0.042938256934940959f, -0.999077727752645360f, 0.042746685391759139f, + -0.999085942693629270f, + 0.042555112276904117f, -0.999094120901079070f, 0.042363537597419038f, + -0.999102262374694130f, + 0.042171961360348002f, -0.999110367114174890f, 0.041980383572734502f, + -0.999118435119223490f, + 0.041788804241622082f, -0.999126466389543390f, 0.041597223374055005f, + -0.999134460924839150f, + 0.041405640977076712f, -0.999142418724816910f, 0.041214057057731589f, + -0.999150339789184110f, + 0.041022471623063397f, -0.999158224117649430f, 0.040830884680115968f, + -0.999166071709923000f, + 0.040639296235933854f, -0.999173882565716380f, 0.040447706297560768f, + -0.999181656684742350f, + 0.040256114872041358f, -0.999189394066714920f, 0.040064521966419686f, + -0.999197094711349880f, + 0.039872927587739845f, -0.999204758618363890f, 0.039681331743046659f, + -0.999212385787475290f, + 0.039489734439384118f, -0.999219976218403530f, 0.039298135683797149f, + -0.999227529910869610f, + 0.039106535483329839f, -0.999235046864595850f, 0.038914933845027241f, + -0.999242527079305830f, + 0.038723330775933762f, -0.999249970554724420f, 0.038531726283093877f, + -0.999257377290578060f, + 0.038340120373552791f, -0.999264747286594420f, 0.038148513054354856f, + -0.999272080542502610f, + 0.037956904332545366f, -0.999279377058032710f, 0.037765294215169005f, + -0.999286636832916740f, + 0.037573682709270514f, -0.999293859866887790f, 0.037382069821895340f, + -0.999301046159680070f, + 0.037190455560088091f, -0.999308195711029470f, 0.036998839930894332f, + -0.999315308520673070f, + 0.036807222941358991f, -0.999322384588349540f, 0.036615604598527057f, + -0.999329423913798420f, + 0.036423984909444228f, -0.999336426496761240f, 0.036232363881155374f, + -0.999343392336980220f, + 0.036040741520706299f, -0.999350321434199440f, 0.035849117835142184f, + -0.999357213788164000f, + 0.035657492831508264f, -0.999364069398620550f, 0.035465866516850478f, + -0.999370888265317060f, + 0.035274238898213947f, -0.999377670388002850f, 0.035082609982644702f, + -0.999384415766428560f, + 0.034890979777187955f, -0.999391124400346050f, 0.034699348288889847f, + -0.999397796289508640f, + 0.034507715524795889f, -0.999404431433671300f, 0.034316081491951658f, + -0.999411029832589780f, + 0.034124446197403423f, -0.999417591486021720f, 0.033932809648196623f, + -0.999424116393725640f, + 0.033741171851377642f, -0.999430604555461730f, 0.033549532813992221f, + -0.999437055970991530f, + 0.033357892543086159f, -0.999443470640077770f, 0.033166251045705968f, + -0.999449848562484530f, + 0.032974608328897315f, -0.999456189737977340f, 0.032782964399706793f, + -0.999462494166323160f, + 0.032591319265180385f, -0.999468761847290050f, 0.032399672932364114f, + -0.999474992780647780f, + 0.032208025408304704f, -0.999481186966166950f, 0.032016376700048046f, + -0.999487344403620080f, + 0.031824726814640963f, -0.999493465092780590f, 0.031633075759129645f, + -0.999499549033423640f, + 0.031441423540560343f, -0.999505596225325310f, 0.031249770165979990f, + -0.999511606668263440f, + 0.031058115642434700f, -0.999517580362016990f, 0.030866459976971503f, + -0.999523517306366350f, + 0.030674803176636581f, -0.999529417501093140f, 0.030483145248477058f, + -0.999535280945980540f, + 0.030291486199539423f, -0.999541107640812940f, 0.030099826036870208f, + -0.999546897585375960f, + 0.029908164767516655f, -0.999552650779456990f, 0.029716502398525156f, + -0.999558367222844300f, + 0.029524838936943035f, -0.999564046915327740f, 0.029333174389816984f, + -0.999569689856698580f, + 0.029141508764193740f, -0.999575296046749220f, 0.028949842067120746f, + -0.999580865485273700f, + 0.028758174305644590f, -0.999586398172067070f, 0.028566505486812797f, + -0.999591894106925950f, + 0.028374835617672258f, -0.999597353289648380f, 0.028183164705269902f, + -0.999602775720033530f, + 0.027991492756653365f, -0.999608161397882110f, 0.027799819778869434f, + -0.999613510322995950f, + 0.027608145778965820f, -0.999618822495178640f, 0.027416470763989606f, + -0.999624097914234570f, + 0.027224794740987910f, -0.999629336579970110f, 0.027033117717008563f, + -0.999634538492192300f, + 0.026841439699098527f, -0.999639703650710200f, 0.026649760694305708f, + -0.999644832055333610f, + 0.026458080709677145f, -0.999649923705874240f, 0.026266399752260809f, + -0.999654978602144690f, + 0.026074717829104040f, -0.999659996743959220f, 0.025883034947254208f, + -0.999664978131133310f, + 0.025691351113759395f, -0.999669922763483760f, 0.025499666335666818f, + -0.999674830640828740f, + 0.025307980620024630f, -0.999679701762987930f, 0.025116293973880335f, + -0.999684536129782140f, + 0.024924606404281485f, -0.999689333741033640f, 0.024732917918276334f, + -0.999694094596566000f, + 0.024541228522912264f, -0.999698818696204250f, 0.024349538225237600f, + -0.999703506039774650f, + 0.024157847032300020f, -0.999708156627104880f, 0.023966154951147241f, + -0.999712770458023870f, + 0.023774461988827676f, -0.999717347532362190f, 0.023582768152388880f, + -0.999721887849951310f, + 0.023391073448879338f, -0.999726391410624470f, 0.023199377885346890f, + -0.999730858214216030f, + 0.023007681468839410f, -0.999735288260561680f, 0.022815984206405477f, + -0.999739681549498660f, + 0.022624286105092803f, -0.999744038080865430f, 0.022432587171950024f, + -0.999748357854501780f, + 0.022240887414024919f, -0.999752640870248840f, 0.022049186838366180f, + -0.999756887127949080f, + 0.021857485452021874f, -0.999761096627446610f, 0.021665783262040089f, + -0.999765269368586450f, + 0.021474080275469605f, -0.999769405351215280f, 0.021282376499358355f, + -0.999773504575180990f, + 0.021090671940755180f, -0.999777567040332940f, 0.020898966606708289f, + -0.999781592746521670f, + 0.020707260504265912f, -0.999785581693599210f, 0.020515553640476986f, + -0.999789533881418780f, + 0.020323846022389572f, -0.999793449309835270f, 0.020132137657052664f, + -0.999797327978704690f, + 0.019940428551514598f, -0.999801169887884260f, 0.019748718712823757f, + -0.999804975037232870f, + 0.019557008148029204f, -0.999808743426610520f, 0.019365296864179146f, + -0.999812475055878780f, + 0.019173584868322699f, -0.999816169924900410f, 0.018981872167508348f, + -0.999819828033539420f, + 0.018790158768784596f, -0.999823449381661570f, 0.018598444679200642f, + -0.999827033969133420f, + 0.018406729905804820f, -0.999830581795823400f, 0.018215014455646376f, + -0.999834092861600960f, + 0.018023298335773701f, -0.999837567166337090f, 0.017831581553236088f, + -0.999841004709904000f, + 0.017639864115082195f, -0.999844405492175240f, 0.017448146028360704f, + -0.999847769513025900f, + 0.017256427300120978f, -0.999851096772332190f, 0.017064707937411529f, + -0.999854387269971890f, + 0.016872987947281773f, -0.999857641005823860f, 0.016681267336780482f, + -0.999860857979768540f, + 0.016489546112956454f, -0.999864038191687680f, 0.016297824282859176f, + -0.999867181641464380f, + 0.016106101853537263f, -0.999870288328982950f, 0.015914378832040249f, + -0.999873358254129260f, + 0.015722655225417017f, -0.999876391416790410f, 0.015530931040716478f, + -0.999879387816854930f, + 0.015339206284988220f, -0.999882347454212560f, 0.015147480965280975f, + -0.999885270328754520f, + 0.014955755088644378f, -0.999888156440373320f, 0.014764028662127416f, + -0.999891005788962950f, + 0.014572301692779104f, -0.999893818374418490f, 0.014380574187649138f, + -0.999896594196636680f, + 0.014188846153786343f, -0.999899333255515390f, 0.013997117598240459f, + -0.999902035550953920f, + 0.013805388528060349f, -0.999904701082852900f, 0.013613658950295789f, + -0.999907329851114300f, + 0.013421928871995907f, -0.999909921855641540f, 0.013230198300209845f, + -0.999912477096339240f, + 0.013038467241987433f, -0.999914995573113470f, 0.012846735704377631f, + -0.999917477285871770f, + 0.012655003694430301f, -0.999919922234522750f, 0.012463271219194662f, + -0.999922330418976490f, + 0.012271538285719944f, -0.999924701839144500f, 0.012079804901056066f, + -0.999927036494939640f, + 0.011888071072252072f, -0.999929334386276070f, 0.011696336806357907f, + -0.999931595513069200f, + 0.011504602110422875f, -0.999933819875236000f, 0.011312866991496287f, + -0.999936007472694620f, + 0.011121131456628141f, -0.999938158305364590f, 0.010929395512867561f, + -0.999940272373166960f, + 0.010737659167264572f, -0.999942349676023910f, 0.010545922426868548f, + -0.999944390213859060f, + 0.010354185298728884f, -0.999946393986597460f, 0.010162447789895645f, + -0.999948360994165400f, + 0.009970709907418029f, -0.999950291236490480f, 0.009778971658346134f, + -0.999952184713501780f, + 0.009587233049729183f, -0.999954041425129780f, 0.009395494088617302f, + -0.999955861371306100f, + 0.009203754782059960f, -0.999957644551963900f, 0.009012015137106642f, + -0.999959390967037450f, + 0.008820275160807512f, -0.999961100616462820f, 0.008628534860211857f, + -0.999962773500176930f, + 0.008436794242369860f, -0.999964409618118280f, 0.008245053314331058f, + -0.999966008970226920f, + 0.008053312083144991f, -0.999967571556443780f, 0.007861570555861883f, + -0.999969097376711580f, + 0.007669828739531077f, -0.999970586430974140f, 0.007478086641202815f, + -0.999972038719176730f, + 0.007286344267926684f, -0.999973454241265940f, 0.007094601626752279f, + -0.999974832997189810f, + 0.006902858724729877f, -0.999976174986897610f, 0.006711115568908869f, + -0.999977480210339940f, + 0.006519372166339549f, -0.999978748667468830f, 0.006327628524071549f, + -0.999979980358237650f, + 0.006135884649154515f, -0.999981175282601110f, 0.005944140548638765f, + -0.999982333440515350f, + 0.005752396229573737f, -0.999983454831937730f, 0.005560651699009764f, + -0.999984539456826970f, + 0.005368906963996303f, -0.999985587315143200f, 0.005177162031583702f, + -0.999986598406848000f, + 0.004985416908821652f, -0.999987572731904080f, 0.004793671602759852f, + -0.999988510290275690f, + 0.004601926120448672f, -0.999989411081928400f, 0.004410180468937601f, + -0.999990275106828920f, + 0.004218434655277024f, -0.999991102364945590f, 0.004026688686516664f, + -0.999991892856248010f, + 0.003834942569706248f, -0.999992646580707190f, 0.003643196311896179f, + -0.999993363538295150f, + 0.003451449920135975f, -0.999994043728985820f, 0.003259703401476044f, + -0.999994687152754080f, + 0.003067956762966138f, -0.999995293809576190f, 0.002876210011656010f, + -0.999995863699429940f, + 0.002684463154596083f, -0.999996396822294350f, 0.002492716198835898f, + -0.999996893178149880f, + 0.002300969151425887f, -0.999997352766978210f, 0.002109222019415816f, + -0.999997775588762350f, + 0.001917474809855460f, -0.999998161643486980f, 0.001725727529795258f, + -0.999998510931137790f, + 0.001533980186284766f, -0.999998823451701880f, 0.001342232786374430f, + -0.999999099205167830f, + 0.001150485337113809f, -0.999999338191525530f, 0.000958737845553352f, + -0.999999540410766110f, + 0.000766990318742846f, -0.999999705862882230f, 0.000575242763732077f, + -0.999999834547867670f, + 0.000383495187571497f, -0.999999926465717890f, 0.000191747597310674f, + -0.999999981616429330f +}; + +/** +* \par +* cosFactor tables are generated using the formula :
cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))
+* \par +* C command to generate the table +* \par +*
 for(i = 0; i< N; i++)
+* {
+*    cos_factors[i]= 2 * cos((2*i+1)*c/2);
+* } 
+* \par +* where N is the number of factors to generate and c is pi/(2*N) +*/ +static const float32_t cos_factors_128[128] = { + 0.999981175282601110f, 0.999830581795823400f, 0.999529417501093140f, + 0.999077727752645360f, + 0.998475580573294770f, 0.997723066644191640f, 0.996820299291165670f, + 0.995767414467659820f, + 0.994564570734255420f, 0.993211949234794500f, 0.991709753669099530f, + 0.990058210262297120f, + 0.988257567730749460f, 0.986308097244598670f, 0.984210092386929030f, + 0.981963869109555240f, + 0.979569765685440520f, 0.977028142657754390f, 0.974339382785575860f, + 0.971503890986251780f, + 0.968522094274417380f, 0.965394441697689400f, 0.962121404269041580f, + 0.958703474895871600f, + 0.955141168305770780f, 0.951435020969008340f, 0.947585591017741090f, + 0.943593458161960390f, + 0.939459223602189920f, 0.935183509938947610f, 0.930766961078983710f, + 0.926210242138311380f, + 0.921514039342042010f, 0.916679059921042700f, 0.911706032005429880f, + 0.906595704514915330f, + 0.901348847046022030f, 0.895966249756185220f, 0.890448723244757880f, + 0.884797098430937790f, + 0.879012226428633530f, 0.873094978418290090f, 0.867046245515692650f, + 0.860866938637767310f, + 0.854557988365400530f, 0.848120344803297230f, 0.841554977436898440f, + 0.834862874986380010f, + 0.828045045257755800f, 0.821102514991104650f, 0.814036329705948410f, + 0.806847553543799330f, + 0.799537269107905010f, 0.792106577300212390f, 0.784556597155575240f, + 0.776888465673232440f, + 0.769103337645579700f, 0.761202385484261780f, 0.753186799043612520f, + 0.745057785441466060f, + 0.736816568877369900f, 0.728464390448225200f, 0.720002507961381650f, + 0.711432195745216430f, + 0.702754744457225300f, 0.693971460889654000f, 0.685083667772700360f, + 0.676092703575316030f, + 0.666999922303637470f, 0.657806693297078640f, 0.648514401022112550f, + 0.639124444863775730f, + 0.629638238914927100f, 0.620057211763289210f, 0.610382806276309480f, + 0.600616479383868970f, + 0.590759701858874280f, 0.580813958095764530f, 0.570780745886967370f, + 0.560661576197336030f, + 0.550457972936604810f, 0.540171472729892970f, 0.529803624686294830f, + 0.519355990165589530f, + 0.508830142543106990f, 0.498227666972781870f, 0.487550160148436050f, + 0.476799230063322250f, + 0.465976495767966130f, 0.455083587126343840f, 0.444122144570429260f, + 0.433093818853152010f, + 0.422000270799799790f, 0.410843171057903910f, 0.399624199845646790f, + 0.388345046698826300f, + 0.377007410216418310f, 0.365612997804773960f, 0.354163525420490510f, + 0.342660717311994380f, + 0.331106305759876430f, 0.319502030816015750f, 0.307849640041534980f, + 0.296150888243623960f, + 0.284407537211271820f, 0.272621355449948980f, 0.260794117915275570f, + 0.248927605745720260f, + 0.237023605994367340f, 0.225083911359792780f, 0.213110319916091360f, + 0.201104634842091960f, + 0.189068664149806280f, 0.177004220412148860f, 0.164913120489970090f, + 0.152797185258443410f, + 0.140658239332849240f, 0.128498110793793220f, 0.116318630911904880f, + 0.104121633872054730f, + 0.091908956497132696f, 0.079682437971430126f, 0.067443919563664106f, + 0.055195244349690031f, + 0.042938256934940959f, 0.030674803176636581f, 0.018406729905804820f, + 0.006135884649154515f +}; + +static const float32_t cos_factors_512[512] = { + 0.999998823451701880f, 0.999989411081928400f, 0.999970586430974140f, + 0.999942349676023910f, + 0.999904701082852900f, 0.999857641005823860f, 0.999801169887884260f, + 0.999735288260561680f, + 0.999659996743959220f, 0.999575296046749220f, 0.999481186966166950f, + 0.999377670388002850f, + 0.999264747286594420f, 0.999142418724816910f, 0.999010685854073380f, + 0.998869549914283560f, + 0.998719012233872940f, 0.998559074229759310f, 0.998389737407340160f, + 0.998211003360478190f, + 0.998022873771486240f, 0.997825350411111640f, 0.997618435138519550f, + 0.997402129901275300f, + 0.997176436735326190f, 0.996941357764982160f, 0.996696895202896060f, + 0.996443051350042630f, + 0.996179828595696980f, 0.995907229417411720f, 0.995625256380994310f, + 0.995333912140482280f, + 0.995033199438118630f, 0.994723121104325700f, 0.994403680057679100f, + 0.994074879304879370f, + 0.993736721940724600f, 0.993389211148080650f, 0.993032350197851410f, + 0.992666142448948020f, + 0.992290591348257370f, 0.991905700430609330f, 0.991511473318743900f, + 0.991107913723276890f, + 0.990695025442664630f, 0.990272812363169110f, 0.989841278458820530f, + 0.989400427791380380f, + 0.988950264510302990f, 0.988490792852696590f, 0.988022017143283530f, + 0.987543941794359230f, + 0.987056571305750970f, 0.986559910264775410f, 0.986053963346195440f, + 0.985538735312176060f, + 0.985014231012239840f, 0.984480455383220930f, 0.983937413449218920f, + 0.983385110321551180f, + 0.982823551198705240f, 0.982252741366289370f, 0.981672686196983110f, + 0.981083391150486710f, + 0.980484861773469380f, 0.979877103699517640f, 0.979260122649082020f, + 0.978633924429423210f, + 0.977998514934557140f, 0.977353900145199960f, 0.976700086128711840f, + 0.976037079039039020f, + 0.975364885116656980f, 0.974683510688510670f, 0.973992962167955830f, + 0.973293246054698250f, + 0.972584368934732210f, 0.971866337480279400f, 0.971139158449725090f, + 0.970402838687555500f, + 0.969657385124292450f, 0.968902804776428870f, 0.968139104746362440f, + 0.967366292222328510f, + 0.966584374478333120f, 0.965793358874083680f, 0.964993252854920320f, + 0.964184063951745830f, + 0.963365799780954050f, 0.962538468044359160f, 0.961702076529122540f, + 0.960856633107679660f, + 0.960002145737665960f, 0.959138622461841890f, 0.958266071408017670f, + 0.957384500788975860f, + 0.956493918902395100f, 0.955594334130771110f, 0.954685754941338340f, + 0.953768189885990330f, + 0.952841647601198720f, 0.951906136807932350f, 0.950961666311575080f, + 0.950008245001843000f, + 0.949045881852700560f, 0.948074585922276230f, 0.947094366352777220f, + 0.946105232370403450f, + 0.945107193285260610f, 0.944100258491272660f, 0.943084437466093490f, + 0.942059739771017310f, + 0.941026175050889260f, 0.939983753034014050f, 0.938932483532064600f, + 0.937872376439989890f, + 0.936803441735921560f, 0.935725689481080370f, 0.934639129819680780f, + 0.933543772978836170f, + 0.932439629268462360f, 0.931326709081180430f, 0.930205022892219070f, + 0.929074581259315860f, + 0.927935394822617890f, 0.926787474304581750f, 0.925630830509872720f, + 0.924465474325262600f, + 0.923291416719527640f, 0.922108668743345180f, 0.920917241529189520f, + 0.919717146291227360f, + 0.918508394325212250f, 0.917290997008377910f, 0.916064965799331720f, + 0.914830312237946200f, + 0.913587047945250810f, 0.912335184623322750f, 0.911074734055176360f, + 0.909805708104652220f, + 0.908528118716306120f, 0.907241977915295820f, 0.905947297807268460f, + 0.904644090578246240f, + 0.903332368494511820f, 0.902012143902493180f, 0.900683429228646970f, + 0.899346236979341570f, + 0.898000579740739880f, 0.896646470178680150f, 0.895283921038557580f, + 0.893912945145203250f, + 0.892533555402764580f, 0.891145764794583180f, 0.889749586383072780f, + 0.888345033309596350f, + 0.886932118794342190f, 0.885510856136199950f, 0.884081258712634990f, + 0.882643339979562790f, + 0.881197113471222090f, 0.879742592800047410f, 0.878279791656541580f, + 0.876808723809145650f, + 0.875329403104110890f, 0.873841843465366860f, 0.872346058894391540f, + 0.870842063470078980f, + 0.869329871348606840f, 0.867809496763303320f, 0.866280954024512990f, + 0.864744257519462380f, + 0.863199421712124160f, 0.861646461143081300f, 0.860085390429390140f, + 0.858516224264442740f, + 0.856938977417828760f, 0.855353664735196030f, 0.853760301138111410f, + 0.852158901623919830f, + 0.850549481265603480f, 0.848932055211639610f, 0.847306638685858320f, + 0.845673246987299070f, + 0.844031895490066410f, 0.842382599643185850f, 0.840725374970458070f, + 0.839060237070312740f, + 0.837387201615661940f, 0.835706284353752600f, 0.834017501106018130f, + 0.832320867767929680f, + 0.830616400308846310f, 0.828904114771864870f, 0.827184027273669130f, + 0.825456154004377550f, + 0.823720511227391430f, 0.821977115279241550f, 0.820225982569434690f, + 0.818467129580298660f, + 0.816700572866827850f, 0.814926329056526620f, 0.813144414849253590f, + 0.811354847017063730f, + 0.809557642404051260f, 0.807752817926190360f, 0.805940390571176280f, + 0.804120377398265810f, + 0.802292795538115720f, 0.800457662192622820f, 0.798614994634760820f, + 0.796764810208418830f, + 0.794907126328237010f, 0.793041960479443640f, 0.791169330217690200f, + 0.789289253168885650f, + 0.787401747029031430f, 0.785506829564053930f, 0.783604518609638200f, + 0.781694832071059390f, + 0.779777787923014550f, 0.777853404209453150f, 0.775921699043407690f, + 0.773982690606822900f, + 0.772036397150384520f, 0.770082836993347900f, 0.768122028523365420f, + 0.766153990196312920f, + 0.764178740536116670f, 0.762196298134578900f, 0.760206681651202420f, + 0.758209909813015280f, + 0.756206001414394540f, 0.754194975316889170f, 0.752176850449042810f, + 0.750151645806215070f, + 0.748119380450403600f, 0.746080073510063780f, 0.744033744179929290f, + 0.741980411720831070f, + 0.739920095459516200f, 0.737852814788465980f, 0.735778589165713590f, + 0.733697438114660370f, + 0.731609381223892630f, 0.729514438146997010f, 0.727412628602375770f, + 0.725303972373060770f, + 0.723188489306527460f, 0.721066199314508110f, 0.718937122372804490f, + 0.716801278521099540f, + 0.714658687862769090f, 0.712509370564692320f, 0.710353346857062420f, + 0.708190637033195400f, + 0.706021261449339740f, 0.703845240524484940f, 0.701662594740168570f, + 0.699473344640283770f, + 0.697277510830886630f, 0.695075113980000880f, 0.692866174817424740f, + 0.690650714134534720f, + 0.688428752784090550f, 0.686200311680038700f, 0.683965411797315510f, + 0.681724074171649820f, + 0.679476319899365080f, 0.677222170137180450f, 0.674961646102012040f, + 0.672694769070772970f, + 0.670421560380173090f, 0.668142041426518560f, 0.665856233665509720f, + 0.663564158612039880f, + 0.661265837839992270f, 0.658961292982037320f, 0.656650545729429050f, + 0.654333617831800550f, + 0.652010531096959500f, 0.649681307390683190f, 0.647345968636512060f, + 0.645004536815544040f, + 0.642657033966226860f, 0.640303482184151670f, 0.637943903621844170f, + 0.635578320488556230f, + 0.633206755050057190f, 0.630829229628424470f, 0.628445766601832710f, + 0.626056388404343520f, + 0.623661117525694640f, 0.621259976511087660f, 0.618852987960976320f, + 0.616440174530853650f, + 0.614021558931038490f, 0.611597163926462020f, 0.609167012336453210f, + 0.606731127034524480f, + 0.604289530948156070f, 0.601842247058580030f, 0.599389298400564540f, + 0.596930708062196500f, + 0.594466499184664540f, 0.591996694962040990f, 0.589521318641063940f, + 0.587040393520918080f, + 0.584553942953015330f, 0.582061990340775550f, 0.579564559139405740f, + 0.577061672855679550f, + 0.574553355047715760f, 0.572039629324757050f, 0.569520519346947250f, + 0.566996048825108680f, + 0.564466241520519500f, 0.561931121244689470f, 0.559390711859136140f, + 0.556845037275160100f, + 0.554294121453620110f, 0.551737988404707450f, 0.549176662187719770f, + 0.546610166910834860f, + 0.544038526730883930f, 0.541461765853123560f, 0.538879908531008420f, + 0.536292979065963180f, + 0.533701001807152960f, 0.531104001151255000f, 0.528502001542228480f, + 0.525895027471084740f, + 0.523283103475656430f, 0.520666254140367270f, 0.518044504095999340f, + 0.515417878019463150f, + 0.512786400633563070f, 0.510150096706766700f, 0.507508991052970870f, + 0.504863108531267480f, + 0.502212474045710900f, 0.499557112545081890f, 0.496897049022654640f, + 0.494232308515959730f, + 0.491562916106550060f, 0.488888896919763230f, 0.486210276124486530f, + 0.483527078932918740f, + 0.480839330600333900f, 0.478147056424843120f, 0.475450281747155870f, + 0.472749031950342900f, + 0.470043332459595620f, 0.467333208741988530f, 0.464618686306237820f, + 0.461899790702462840f, + 0.459176547521944150f, 0.456448982396883860f, 0.453717121000163930f, + 0.450980989045103810f, + 0.448240612285220000f, 0.445496016513981740f, 0.442747227564570130f, + 0.439994271309633260f, + 0.437237173661044200f, 0.434475960569655710f, 0.431710658025057370f, + 0.428941292055329550f, + 0.426167888726799620f, 0.423390474143796100f, 0.420609074448402510f, + 0.417823715820212380f, + 0.415034424476081630f, 0.412241226669883000f, 0.409444148692257590f, + 0.406643216870369140f, + 0.403838457567654130f, 0.401029897183575790f, 0.398217562153373620f, + 0.395401478947816300f, + 0.392581674072951530f, 0.389758174069856410f, 0.386931005514388690f, + 0.384100195016935040f, + 0.381265769222162490f, 0.378427754808765620f, 0.375586178489217330f, + 0.372741067009515810f, + 0.369892447148934270f, 0.367040345719767240f, 0.364184789567079840f, + 0.361325805568454340f, + 0.358463420633736540f, 0.355597661704783960f, 0.352728555755210730f, + 0.349856129790135030f, + 0.346980410845923680f, 0.344101425989938980f, 0.341219202320282410f, + 0.338333766965541290f, + 0.335445147084531660f, 0.332553369866044220f, 0.329658462528587550f, + 0.326760452320131790f, + 0.323859366517852960f, 0.320955232427875210f, 0.318048077385015060f, + 0.315137928752522440f, + 0.312224813921825050f, 0.309308760312268780f, 0.306389795370861080f, + 0.303467946572011370f, + 0.300543241417273400f, 0.297615707435086310f, 0.294685372180514330f, + 0.291752263234989370f, + 0.288816408206049480f, 0.285877834727080730f, 0.282936570457055390f, + 0.279992643080273380f, + 0.277046080306099950f, 0.274096909868706330f, 0.271145159526808070f, + 0.268190857063403180f, + 0.265234030285511900f, 0.262274707023913590f, 0.259312915132886350f, + 0.256348682489942910f, + 0.253382036995570270f, 0.250413006572965280f, 0.247441619167773440f, + 0.244467902747824210f, + 0.241491885302869300f, 0.238513594844318500f, 0.235533059404975460f, + 0.232550307038775330f, + 0.229565365820518870f, 0.226578263845610110f, 0.223589029229790020f, + 0.220597690108873650f, + 0.217604274638483670f, 0.214608810993786920f, 0.211611327369227610f, + 0.208611851978263460f, + 0.205610413053099320f, 0.202607038844421110f, 0.199601757621131050f, + 0.196594597670080220f, + 0.193585587295803750f, 0.190574754820252800f, 0.187562128582529740f, + 0.184547736938619640f, + 0.181531608261125130f, 0.178513770938997590f, 0.175494253377271400f, + 0.172473083996796030f, + 0.169450291233967930f, 0.166425903540464220f, 0.163399949382973230f, + 0.160372457242928400f, + 0.157343455616238280f, 0.154312973013020240f, 0.151281037957330250f, + 0.148247678986896200f, + 0.145212924652847520f, 0.142176803519448000f, 0.139139344163826280f, + 0.136100575175706200f, + 0.133060525157139180f, 0.130019222722233350f, 0.126976696496885980f, + 0.123932975118512200f, + 0.120888087235777220f, 0.117842061508325020f, 0.114794926606510250f, + 0.111746711211126660f, + 0.108697444013138670f, 0.105647153713410700f, 0.102595869022436280f, + 0.099543618660069444f, + 0.096490431355252607f, 0.093436335845747912f, 0.090381360877865011f, + 0.087325535206192226f, + 0.084268887593324127f, 0.081211446809592386f, 0.078153241632794315f, + 0.075094300847921291f, + 0.072034653246889416f, 0.068974327628266732f, 0.065913352797003930f, + 0.062851757564161420f, + 0.059789570746640007f, 0.056726821166907783f, 0.053663537652730679f, + 0.050599749036899337f, + 0.047535484156959261f, 0.044470771854938744f, 0.041405640977076712f, + 0.038340120373552791f, + 0.035274238898213947f, 0.032208025408304704f, 0.029141508764193740f, + 0.026074717829104040f, + 0.023007681468839410f, 0.019940428551514598f, 0.016872987947281773f, + 0.013805388528060349f, + 0.010737659167264572f, 0.007669828739531077f, 0.004601926120448672f, + 0.001533980186284766f +}; + +static const float32_t cos_factors_2048[2048] = { + 0.999999926465717890f, 0.999999338191525530f, 0.999998161643486980f, + 0.999996396822294350f, + 0.999994043728985820f, 0.999991102364945590f, 0.999987572731904080f, + 0.999983454831937730f, + 0.999978748667468830f, 0.999973454241265940f, 0.999967571556443780f, + 0.999961100616462820f, + 0.999954041425129780f, 0.999946393986597460f, 0.999938158305364590f, + 0.999929334386276070f, + 0.999919922234522750f, 0.999909921855641540f, 0.999899333255515390f, + 0.999888156440373320f, + 0.999876391416790410f, 0.999864038191687680f, 0.999851096772332190f, + 0.999837567166337090f, + 0.999823449381661570f, 0.999808743426610520f, 0.999793449309835270f, + 0.999777567040332940f, + 0.999761096627446610f, 0.999744038080865430f, 0.999726391410624470f, + 0.999708156627104880f, + 0.999689333741033640f, 0.999669922763483760f, 0.999649923705874240f, + 0.999629336579970110f, + 0.999608161397882110f, 0.999586398172067070f, 0.999564046915327740f, + 0.999541107640812940f, + 0.999517580362016990f, 0.999493465092780590f, 0.999468761847290050f, + 0.999443470640077770f, + 0.999417591486021720f, 0.999391124400346050f, 0.999364069398620550f, + 0.999336426496761240f, + 0.999308195711029470f, 0.999279377058032710f, 0.999249970554724420f, + 0.999219976218403530f, + 0.999189394066714920f, 0.999158224117649430f, 0.999126466389543390f, + 0.999094120901079070f, + 0.999061187671284600f, 0.999027666719533690f, 0.998993558065545680f, + 0.998958861729386080f, + 0.998923577731465780f, 0.998887706092541290f, 0.998851246833715180f, + 0.998814199976435390f, + 0.998776565542495610f, 0.998738343554035230f, 0.998699534033539280f, + 0.998660137003838490f, + 0.998620152488108870f, 0.998579580509872500f, 0.998538421092996730f, + 0.998496674261694640f, + 0.998454340040524800f, 0.998411418454391300f, 0.998367909528543820f, + 0.998323813288577560f, + 0.998279129760433200f, 0.998233858970396850f, 0.998188000945100300f, + 0.998141555711520520f, + 0.998094523296980010f, 0.998046903729146840f, 0.997998697036034390f, + 0.997949903246001190f, + 0.997900522387751620f, 0.997850554490335110f, 0.997799999583146470f, + 0.997748857695925690f, + 0.997697128858758500f, 0.997644813102075420f, 0.997591910456652630f, + 0.997538420953611340f, + 0.997484344624417930f, 0.997429681500884180f, 0.997374431615167150f, + 0.997318594999768600f, + 0.997262171687536170f, 0.997205161711661850f, 0.997147565105683480f, + 0.997089381903483400f, + 0.997030612139289450f, 0.996971255847674320f, 0.996911313063555740f, + 0.996850783822196610f, + 0.996789668159204560f, 0.996727966110532490f, 0.996665677712478160f, + 0.996602803001684130f, + 0.996539342015137940f, 0.996475294790172160f, 0.996410661364464100f, + 0.996345441776035900f, + 0.996279636063254650f, 0.996213244264832040f, 0.996146266419824620f, + 0.996078702567633980f, + 0.996010552748005870f, 0.995941817001031350f, 0.995872495367145730f, + 0.995802587887129160f, + 0.995732094602106430f, 0.995661015553546910f, 0.995589350783264600f, + 0.995517100333418110f, + 0.995444264246510340f, 0.995370842565388990f, 0.995296835333246090f, + 0.995222242593618360f, + 0.995147064390386470f, 0.995071300767776170f, 0.994994951770357020f, + 0.994918017443043200f, + 0.994840497831093180f, 0.994762392980109930f, 0.994683702936040250f, + 0.994604427745175660f, + 0.994524567454151740f, 0.994444122109948040f, 0.994363091759888570f, + 0.994281476451641550f, + 0.994199276233218910f, 0.994116491152977070f, 0.994033121259616400f, + 0.993949166602181130f, + 0.993864627230059750f, 0.993779503192984580f, 0.993693794541031790f, + 0.993607501324621610f, + 0.993520623594518090f, 0.993433161401829360f, 0.993345114798006910f, + 0.993256483834846440f, + 0.993167268564487230f, 0.993077469039412300f, 0.992987085312448390f, + 0.992896117436765980f, + 0.992804565465879140f, 0.992712429453645460f, 0.992619709454266140f, + 0.992526405522286100f, + 0.992432517712593660f, 0.992338046080420420f, 0.992242990681341700f, + 0.992147351571276090f, + 0.992051128806485720f, 0.991954322443575950f, 0.991856932539495470f, + 0.991758959151536110f, + 0.991660402337333210f, 0.991561262154865290f, 0.991461538662453790f, + 0.991361231918763460f, + 0.991260341982802440f, 0.991158868913921350f, 0.991056812771814340f, + 0.990954173616518500f, + 0.990850951508413620f, 0.990747146508222710f, 0.990642758677011570f, + 0.990537788076188750f, + 0.990432234767505970f, 0.990326098813057330f, 0.990219380275280000f, + 0.990112079216953770f, + 0.990004195701200910f, 0.989895729791486660f, 0.989786681551618640f, + 0.989677051045747210f, + 0.989566838338365120f, 0.989456043494307710f, 0.989344666578752640f, + 0.989232707657220050f, + 0.989120166795572690f, 0.989007044060015270f, 0.988893339517095130f, + 0.988779053233701520f, + 0.988664185277066230f, 0.988548735714763200f, 0.988432704614708340f, + 0.988316092045159690f, + 0.988198898074717610f, 0.988081122772324070f, 0.987962766207263420f, + 0.987843828449161740f, + 0.987724309567986960f, 0.987604209634049160f, 0.987483528717999710f, + 0.987362266890832400f, + 0.987240424223882250f, 0.987118000788826280f, 0.986994996657682980f, + 0.986871411902812470f, + 0.986747246596916590f, 0.986622500813038480f, 0.986497174624562880f, + 0.986371268105216030f, + 0.986244781329065460f, 0.986117714370520090f, 0.985990067304330140f, + 0.985861840205586980f, + 0.985733033149723490f, 0.985603646212513400f, 0.985473679470071810f, + 0.985343132998854790f, + 0.985212006875659350f, 0.985080301177623800f, 0.984948015982227030f, + 0.984815151367289140f, + 0.984681707410970940f, 0.984547684191773960f, 0.984413081788540700f, + 0.984277900280454370f, + 0.984142139747038570f, 0.984005800268157870f, 0.983868881924017220f, + 0.983731384795162090f, + 0.983593308962478650f, 0.983454654507193270f, 0.983315421510872810f, + 0.983175610055424420f, + 0.983035220223095640f, 0.982894252096474070f, 0.982752705758487830f, + 0.982610581292404750f, + 0.982467878781833170f, 0.982324598310721280f, 0.982180739963357090f, + 0.982036303824369020f, + 0.981891289978725100f, 0.981745698511732990f, 0.981599529509040720f, + 0.981452783056635520f, + 0.981305459240844670f, 0.981157558148334830f, 0.981009079866112630f, + 0.980860024481523870f, + 0.980710392082253970f, 0.980560182756327840f, 0.980409396592109910f, + 0.980258033678303550f, + 0.980106094103951770f, 0.979953577958436740f, 0.979800485331479790f, + 0.979646816313141210f, + 0.979492570993820810f, 0.979337749464256780f, 0.979182351815526930f, + 0.979026378139047580f, + 0.978869828526574120f, 0.978712703070200420f, 0.978555001862359550f, + 0.978396724995823090f, + 0.978237872563701090f, 0.978078444659442380f, 0.977918441376834370f, + 0.977757862810002760f, + 0.977596709053411890f, 0.977434980201864260f, 0.977272676350500860f, + 0.977109797594800880f, + 0.976946344030581670f, 0.976782315753998650f, 0.976617712861545640f, + 0.976452535450054060f, + 0.976286783616693630f, 0.976120457458971910f, 0.975953557074734300f, + 0.975786082562163930f, + 0.975618034019781750f, 0.975449411546446380f, 0.975280215241354220f, + 0.975110445204038890f, + 0.974940101534371830f, 0.974769184332561770f, 0.974597693699155050f, + 0.974425629735034990f, + 0.974252992541422500f, 0.974079782219875680f, 0.973905998872289570f, + 0.973731642600896400f, + 0.973556713508265560f, 0.973381211697303290f, 0.973205137271252800f, + 0.973028490333694210f, + 0.972851270988544180f, 0.972673479340056430f, 0.972495115492821190f, + 0.972316179551765300f, + 0.972136671622152230f, 0.971956591809581720f, 0.971775940219990140f, + 0.971594716959650160f, + 0.971412922135170940f, 0.971230555853497380f, 0.971047618221911100f, + 0.970864109348029470f, + 0.970680029339806130f, 0.970495378305530560f, 0.970310156353828110f, + 0.970124363593660280f, + 0.969938000134323960f, 0.969751066085452140f, 0.969563561557013180f, + 0.969375486659311280f, + 0.969186841502985950f, 0.968997626199012420f, 0.968807840858700970f, + 0.968617485593697540f, + 0.968426560515983190f, 0.968235065737874320f, 0.968043001372022260f, + 0.967850367531413620f, + 0.967657164329369880f, 0.967463391879547550f, 0.967269050295937790f, + 0.967074139692867040f, + 0.966878660184995910f, 0.966682611887320080f, 0.966485994915169840f, + 0.966288809384209690f, + 0.966091055410438830f, 0.965892733110190860f, 0.965693842600133690f, + 0.965494383997269500f, + 0.965294357418934660f, 0.965093762982799590f, 0.964892600806868890f, + 0.964690871009481030f, + 0.964488573709308410f, 0.964285709025357480f, 0.964082277076968140f, + 0.963878277983814200f, + 0.963673711865903230f, 0.963468578843575950f, 0.963262879037507070f, + 0.963056612568704340f, + 0.962849779558509030f, 0.962642380128595710f, 0.962434414400972100f, + 0.962225882497979020f, + 0.962016784542290560f, 0.961807120656913540f, 0.961596890965187860f, + 0.961386095590786250f, + 0.961174734657714080f, 0.960962808290309780f, 0.960750316613243950f, + 0.960537259751520050f, + 0.960323637830473920f, 0.960109450975773940f, 0.959894699313420530f, + 0.959679382969746750f, + 0.959463502071417510f, 0.959247056745430090f, 0.959030047119113660f, + 0.958812473320129310f, + 0.958594335476470220f, 0.958375633716461170f, 0.958156368168758820f, + 0.957936538962351420f, + 0.957716146226558870f, 0.957495190091032570f, 0.957273670685755200f, + 0.957051588141040970f, + 0.956828942587535370f, 0.956605734156215080f, 0.956381962978387730f, + 0.956157629185692140f, + 0.955932732910098280f, 0.955707274283906560f, 0.955481253439748770f, + 0.955254670510586990f, + 0.955027525629714160f, 0.954799818930753720f, 0.954571550547659630f, + 0.954342720614716480f, + 0.954113329266538800f, 0.953883376638071770f, 0.953652862864590500f, + 0.953421788081700310f, + 0.953190152425336670f, 0.952957956031764700f, 0.952725199037579570f, + 0.952491881579706320f, + 0.952258003795399600f, 0.952023565822243570f, 0.951788567798152130f, + 0.951553009861368590f, + 0.951316892150465550f, 0.951080214804345010f, 0.950842977962238160f, + 0.950605181763705340f, + 0.950366826348635780f, 0.950127911857248100f, 0.949888438430089300f, + 0.949648406208035480f, + 0.949407815332291570f, 0.949166665944390700f, 0.948924958186195160f, + 0.948682692199895090f, + 0.948439868128009620f, 0.948196486113385580f, 0.947952546299198670f, + 0.947708048828952100f, + 0.947462993846477700f, 0.947217381495934820f, 0.946971211921810880f, + 0.946724485268921170f, + 0.946477201682408680f, 0.946229361307743820f, 0.945980964290724760f, + 0.945732010777477150f, + 0.945482500914453740f, 0.945232434848435000f, 0.944981812726528150f, + 0.944730634696167800f, + 0.944478900905115550f, 0.944226611501459810f, 0.943973766633615980f, + 0.943720366450326200f, + 0.943466411100659320f, 0.943211900734010620f, 0.942956835500102120f, + 0.942701215548981900f, + 0.942445041031024890f, 0.942188312096931770f, 0.941931028897729620f, + 0.941673191584771360f, + 0.941414800309736340f, 0.941155855224629190f, 0.940896356481780830f, + 0.940636304233847590f, + 0.940375698633811540f, 0.940114539834980280f, 0.939852827990986680f, + 0.939590563255789270f, + 0.939327745783671400f, 0.939064375729241950f, 0.938800453247434770f, + 0.938535978493508560f, + 0.938270951623047190f, 0.938005372791958840f, 0.937739242156476970f, + 0.937472559873159250f, + 0.937205326098887960f, 0.936937540990869900f, 0.936669204706636170f, + 0.936400317404042060f, + 0.936130879241267030f, 0.935860890376814640f, 0.935590350969512370f, + 0.935319261178511610f, + 0.935047621163287430f, 0.934775431083638700f, 0.934502691099687870f, + 0.934229401371880820f, + 0.933955562060986730f, 0.933681173328098410f, 0.933406235334631520f, + 0.933130748242325230f, + 0.932854712213241120f, 0.932578127409764420f, 0.932300993994602760f, + 0.932023312130786490f, + 0.931745081981668720f, 0.931466303710925090f, 0.931186977482553750f, + 0.930907103460875130f, + 0.930626681810531760f, 0.930345712696488470f, 0.930064196284032360f, + 0.929782132738772190f, + 0.929499522226638560f, 0.929216364913884040f, 0.928932660967082820f, + 0.928648410553130520f, + 0.928363613839244370f, 0.928078270992963140f, 0.927792382182146320f, + 0.927505947574975180f, + 0.927218967339951790f, 0.926931441645899130f, 0.926643370661961230f, + 0.926354754557602860f, + 0.926065593502609310f, 0.925775887667086740f, 0.925485637221461490f, + 0.925194842336480530f, + 0.924903503183210910f, 0.924611619933039970f, 0.924319192757675160f, + 0.924026221829143850f, + 0.923732707319793290f, 0.923438649402290370f, 0.923144048249621930f, + 0.922848904035094120f, + 0.922553216932332830f, 0.922256987115283030f, 0.921960214758209220f, + 0.921662900035694730f, + 0.921365043122642340f, 0.921066644194273640f, 0.920767703426128790f, + 0.920468220994067110f, + 0.920168197074266340f, 0.919867631843222950f, 0.919566525477751530f, + 0.919264878154985370f, + 0.918962690052375630f, 0.918659961347691900f, 0.918356692219021720f, + 0.918052882844770380f, + 0.917748533403661250f, 0.917443644074735220f, 0.917138215037350710f, + 0.916832246471183890f, + 0.916525738556228210f, 0.916218691472794220f, 0.915911105401509880f, + 0.915602980523320230f, + 0.915294317019487050f, 0.914985115071589310f, 0.914675374861522390f, + 0.914365096571498560f, + 0.914054280384046570f, 0.913742926482011390f, 0.913431035048554720f, + 0.913118606267154240f, + 0.912805640321603500f, 0.912492137396012650f, 0.912178097674807180f, + 0.911863521342728520f, + 0.911548408584833990f, 0.911232759586496190f, 0.910916574533403360f, + 0.910599853611558930f, + 0.910282597007281760f, 0.909964804907205660f, 0.909646477498279540f, + 0.909327614967767260f, + 0.909008217503247450f, 0.908688285292613360f, 0.908367818524072890f, + 0.908046817386148340f, + 0.907725282067676440f, 0.907403212757808110f, 0.907080609646008450f, + 0.906757472922056550f, + 0.906433802776045460f, 0.906109599398381980f, 0.905784862979786550f, + 0.905459593711293250f, + 0.905133791784249690f, 0.904807457390316540f, 0.904480590721468250f, + 0.904153191969991780f, + 0.903825261328487510f, 0.903496798989868450f, 0.903167805147360720f, + 0.902838279994502830f, + 0.902508223725145940f, 0.902177636533453620f, 0.901846518613901750f, + 0.901514870161278740f, + 0.901182691370684520f, 0.900849982437531450f, 0.900516743557543520f, + 0.900182974926756810f, + 0.899848676741518580f, 0.899513849198487980f, 0.899178492494635330f, + 0.898842606827242370f, + 0.898506192393901950f, 0.898169249392518080f, 0.897831778021305650f, + 0.897493778478790310f, + 0.897155250963808550f, 0.896816195675507300f, 0.896476612813344120f, + 0.896136502577086770f, + 0.895795865166813530f, 0.895454700782912450f, 0.895113009626081760f, + 0.894770791897329550f, + 0.894428047797973800f, 0.894084777529641990f, 0.893740981294271040f, + 0.893396659294107720f, + 0.893051811731707450f, 0.892706438809935390f, 0.892360540731965360f, + 0.892014117701280470f, + 0.891667169921672280f, 0.891319697597241390f, 0.890971700932396860f, + 0.890623180131855930f, + 0.890274135400644600f, 0.889924566944096720f, 0.889574474967854580f, + 0.889223859677868210f, + 0.888872721280395630f, 0.888521059982002260f, 0.888168875989561730f, + 0.887816169510254440f, + 0.887462940751568840f, 0.887109189921300170f, 0.886754917227550840f, + 0.886400122878730600f, + 0.886044807083555600f, 0.885688970051048960f, 0.885332611990540590f, + 0.884975733111666660f, + 0.884618333624369920f, 0.884260413738899190f, 0.883901973665809470f, + 0.883543013615961880f, + 0.883183533800523390f, 0.882823534430966620f, 0.882463015719070150f, + 0.882101977876917580f, + 0.881740421116898320f, 0.881378345651706920f, 0.881015751694342870f, + 0.880652639458111010f, + 0.880289009156621010f, 0.879924861003786860f, 0.879560195213827890f, + 0.879195012001267480f, + 0.878829311580933360f, 0.878463094167957870f, 0.878096359977777130f, + 0.877729109226131570f, + 0.877361342129065140f, 0.876993058902925890f, 0.876624259764365310f, + 0.876254944930338510f, + 0.875885114618103810f, 0.875514769045222850f, 0.875143908429560360f, + 0.874772532989284150f, + 0.874400642942864790f, 0.874028238509075740f, 0.873655319906992630f, + 0.873281887355994210f, + 0.872907941075761080f, 0.872533481286276170f, 0.872158508207824480f, + 0.871783022060993120f, + 0.871407023066670950f, 0.871030511446048260f, 0.870653487420617430f, + 0.870275951212171940f, + 0.869897903042806340f, 0.869519343134916860f, 0.869140271711200560f, + 0.868760688994655310f, + 0.868380595208579800f, 0.867999990576573510f, 0.867618875322536230f, + 0.867237249670668400f, + 0.866855113845470430f, 0.866472468071743050f, 0.866089312574586770f, + 0.865705647579402380f, + 0.865321473311889800f, 0.864936789998049020f, 0.864551597864179340f, + 0.864165897136879300f, + 0.863779688043046720f, 0.863392970809878420f, 0.863005745664870320f, + 0.862618012835816740f, + 0.862229772550811240f, 0.861841025038245330f, 0.861451770526809320f, + 0.861062009245491480f, + 0.860671741423578380f, 0.860280967290654510f, 0.859889687076602290f, + 0.859497901011601730f, + 0.859105609326130450f, 0.858712812250963520f, 0.858319510017173440f, + 0.857925702856129790f, + 0.857531390999499150f, 0.857136574679244980f, 0.856741254127627470f, + 0.856345429577203610f, + 0.855949101260826910f, 0.855552269411646860f, 0.855154934263109620f, + 0.854757096048957220f, + 0.854358755003227440f, 0.853959911360254180f, 0.853560565354666840f, + 0.853160717221390420f, + 0.852760367195645300f, 0.852359515512947090f, 0.851958162409106380f, + 0.851556308120228980f, + 0.851153952882715340f, 0.850751096933260790f, 0.850347740508854980f, + 0.849943883846782210f, + 0.849539527184620890f, 0.849134670760243630f, 0.848729314811817130f, + 0.848323459577801640f, + 0.847917105296951410f, 0.847510252208314330f, 0.847102900551231500f, + 0.846695050565337450f, + 0.846286702490559710f, 0.845877856567119000f, 0.845468513035528830f, + 0.845058672136595470f, + 0.844648334111417820f, 0.844237499201387020f, 0.843826167648186740f, + 0.843414339693792760f, + 0.843002015580472940f, 0.842589195550786710f, 0.842175879847585570f, + 0.841762068714012490f, + 0.841347762393501950f, 0.840932961129779780f, 0.840517665166862550f, + 0.840101874749058400f, + 0.839685590120966110f, 0.839268811527475230f, 0.838851539213765760f, + 0.838433773425308340f, + 0.838015514407863820f, 0.837596762407483040f, 0.837177517670507300f, + 0.836757780443567190f, + 0.836337550973583530f, 0.835916829507766360f, 0.835495616293615350f, + 0.835073911578919410f, + 0.834651715611756440f, 0.834229028640493420f, 0.833805850913786340f, + 0.833382182680579730f, + 0.832958024190106670f, 0.832533375691888680f, 0.832108237435735590f, + 0.831682609671745120f, + 0.831256492650303210f, 0.830829886622083570f, 0.830402791838047550f, + 0.829975208549443950f, + 0.829547137007808910f, 0.829118577464965980f, 0.828689530173025820f, + 0.828259995384385660f, + 0.827829973351729920f, 0.827399464328029470f, 0.826968468566541600f, + 0.826536986320809960f, + 0.826105017844664610f, 0.825672563392221390f, 0.825239623217882250f, + 0.824806197576334330f, + 0.824372286722551250f, 0.823937890911791370f, 0.823503010399598500f, + 0.823067645441801670f, + 0.822631796294514990f, 0.822195463214137170f, 0.821758646457351750f, + 0.821321346281126740f, + 0.820883562942714580f, 0.820445296699652050f, 0.820006547809759680f, + 0.819567316531142230f, + 0.819127603122188240f, 0.818687407841569680f, 0.818246730948242070f, + 0.817805572701444270f, + 0.817363933360698460f, 0.816921813185809480f, 0.816479212436865390f, + 0.816036131374236810f, + 0.815592570258576790f, 0.815148529350820830f, 0.814704008912187080f, + 0.814259009204175270f, + 0.813813530488567190f, 0.813367573027426570f, 0.812921137083098770f, + 0.812474222918210480f, + 0.812026830795669730f, 0.811578960978665890f, 0.811130613730669190f, + 0.810681789315430780f, + 0.810232487996982330f, 0.809782710039636530f, 0.809332455707985950f, + 0.808881725266903610f, + 0.808430518981542720f, 0.807978837117336310f, 0.807526679939997160f, + 0.807074047715517610f, + 0.806620940710169650f, 0.806167359190504420f, 0.805713303423352230f, + 0.805258773675822210f, + 0.804803770215302920f, 0.804348293309460780f, 0.803892343226241260f, + 0.803435920233868120f, + 0.802979024600843250f, 0.802521656595946430f, 0.802063816488235440f, + 0.801605504547046150f, + 0.801146721041991360f, 0.800687466242961610f, 0.800227740420124790f, + 0.799767543843925680f, + 0.799306876785086160f, 0.798845739514604580f, 0.798384132303756380f, + 0.797922055424093000f, + 0.797459509147442460f, 0.796996493745908750f, 0.796533009491872000f, + 0.796069056657987990f, + 0.795604635517188070f, 0.795139746342679590f, 0.794674389407944550f, + 0.794208564986740640f, + 0.793742273353100210f, 0.793275514781330630f, 0.792808289546014120f, + 0.792340597922007170f, + 0.791872440184440470f, 0.791403816608719500f, 0.790934727470523290f, + 0.790465173045804880f, + 0.789995153610791090f, 0.789524669441982190f, 0.789053720816151880f, + 0.788582308010347120f, + 0.788110431301888070f, 0.787638090968367450f, 0.787165287287651010f, + 0.786692020537876790f, + 0.786218290997455660f, 0.785744098945070360f, 0.785269444659675850f, + 0.784794328420499230f, + 0.784318750507038920f, 0.783842711199065230f, 0.783366210776619720f, + 0.782889249520015480f, + 0.782411827709836530f, 0.781933945626937630f, 0.781455603552444590f, + 0.780976801767753750f, + 0.780497540554531910f, 0.780017820194715990f, 0.779537640970513260f, + 0.779057003164400630f, + 0.778575907059125050f, 0.778094352937702790f, 0.777612341083420030f, + 0.777129871779831620f, + 0.776646945310762060f, 0.776163561960304340f, 0.775679722012820650f, + 0.775195425752941420f, + 0.774710673465565550f, 0.774225465435860680f, 0.773739801949261840f, + 0.773253683291472590f, + 0.772767109748463850f, 0.772280081606474320f, 0.771792599152010150f, + 0.771304662671844830f, + 0.770816272453018540f, 0.770327428782838890f, 0.769838131948879840f, + 0.769348382238982280f, + 0.768858179941253270f, 0.768367525344066270f, 0.767876418736060610f, + 0.767384860406141730f, + 0.766892850643480670f, 0.766400389737514230f, 0.765907477977944340f, + 0.765414115654738270f, + 0.764920303058128410f, 0.764426040478612070f, 0.763931328206951090f, + 0.763436166534172010f, + 0.762940555751565720f, 0.762444496150687210f, 0.761947988023355390f, + 0.761451031661653620f, + 0.760953627357928150f, 0.760455775404789260f, 0.759957476095110330f, + 0.759458729722028210f, + 0.758959536578942440f, 0.758459896959515430f, 0.757959811157672300f, + 0.757459279467600720f, + 0.756958302183750490f, 0.756456879600833740f, 0.755955012013824420f, + 0.755452699717958250f, + 0.754949943008732640f, 0.754446742181906440f, 0.753943097533499640f, + 0.753439009359793580f, + 0.752934477957330150f, 0.752429503622912390f, 0.751924086653603550f, + 0.751418227346727470f, + 0.750911925999867890f, 0.750405182910869330f, 0.749897998377835330f, + 0.749390372699129560f, + 0.748882306173375150f, 0.748373799099454560f, 0.747864851776509410f, + 0.747355464503940190f, + 0.746845637581406540f, 0.746335371308826320f, 0.745824665986376090f, + 0.745313521914490520f, + 0.744801939393862630f, 0.744289918725443260f, 0.743777460210440890f, + 0.743264564150321600f, + 0.742751230846809050f, 0.742237460601884000f, 0.741723253717784140f, + 0.741208610497004260f, + 0.740693531242295760f, 0.740178016256666240f, 0.739662065843380010f, + 0.739145680305957510f, + 0.738628859948174840f, 0.738111605074064260f, 0.737593915987913570f, + 0.737075792994265730f, + 0.736557236397919150f, 0.736038246503927350f, 0.735518823617598900f, + 0.734998968044496710f, + 0.734478680090438370f, 0.733957960061495940f, 0.733436808263995710f, + 0.732915225004517780f, + 0.732393210589896040f, 0.731870765327218290f, 0.731347889523825570f, + 0.730824583487312160f, + 0.730300847525525490f, 0.729776681946566090f, 0.729252087058786970f, + 0.728727063170793830f, + 0.728201610591444610f, 0.727675729629849610f, 0.727149420595371020f, + 0.726622683797622850f, + 0.726095519546471000f, 0.725567928152032300f, 0.725039909924675370f, + 0.724511465175019630f, + 0.723982594213935520f, 0.723453297352544380f, 0.722923574902217700f, + 0.722393427174577550f, + 0.721862854481496340f, 0.721331857135096290f, 0.720800435447749190f, + 0.720268589732077190f, + 0.719736320300951030f, 0.719203627467491220f, 0.718670511545067230f, + 0.718136972847297490f, + 0.717603011688049080f, 0.717068628381437480f, 0.716533823241826680f, + 0.715998596583828690f, + 0.715462948722303760f, 0.714926879972359490f, 0.714390390649351390f, + 0.713853481068882470f, + 0.713316151546802610f, 0.712778402399208980f, 0.712240233942445510f, + 0.711701646493102970f, + 0.711162640368018350f, 0.710623215884275020f, 0.710083373359202800f, + 0.709543113110376770f, + 0.709002435455618250f, 0.708461340712994160f, 0.707919829200816310f, + 0.707377901237642100f, + 0.706835557142273860f, 0.706292797233758480f, 0.705749621831387790f, + 0.705206031254697830f, + 0.704662025823468930f, 0.704117605857725430f, 0.703572771677735580f, + 0.703027523604011220f, + 0.702481861957308000f, 0.701935787058624360f, 0.701389299229202230f, + 0.700842398790526230f, + 0.700295086064323780f, 0.699747361372564990f, 0.699199225037462120f, + 0.698650677381469580f, + 0.698101718727283880f, 0.697552349397843270f, 0.697002569716327460f, + 0.696452380006157830f, + 0.695901780590996830f, 0.695350771794747800f, 0.694799353941554900f, + 0.694247527355803310f, + 0.693695292362118350f, 0.693142649285365510f, 0.692589598450650380f, + 0.692036140183318830f, + 0.691482274808955850f, 0.690928002653386280f, 0.690373324042674040f, + 0.689818239303122470f, + 0.689262748761273470f, 0.688706852743907750f, 0.688150551578044830f, + 0.687593845590942170f, + 0.687036735110095660f, 0.686479220463238950f, 0.685921301978343670f, + 0.685362979983618730f, + 0.684804254807510620f, 0.684245126778703080f, 0.683685596226116690f, + 0.683125663478908800f, + 0.682565328866473250f, 0.682004592718440830f, 0.681443455364677990f, + 0.680881917135287340f, + 0.680319978360607200f, 0.679757639371212030f, 0.679194900497911200f, + 0.678631762071749470f, + 0.678068224424006600f, 0.677504287886197430f, 0.676939952790071240f, + 0.676375219467611700f, + 0.675810088251037060f, 0.675244559472799270f, 0.674678633465584540f, + 0.674112310562312360f, + 0.673545591096136100f, 0.672978475400442090f, 0.672410963808849900f, + 0.671843056655211930f, + 0.671274754273613490f, 0.670706056998372160f, 0.670136965164037760f, + 0.669567479105392490f, + 0.668997599157450270f, 0.668427325655456820f, 0.667856658934889440f, + 0.667285599331456480f, + 0.666714147181097670f, 0.666142302819983540f, 0.665570066584515560f, + 0.664997438811325340f, + 0.664424419837275180f, 0.663851009999457340f, 0.663277209635194100f, + 0.662703019082037440f, + 0.662128438677768720f, 0.661553468760399000f, 0.660978109668168060f, + 0.660402361739545030f, + 0.659826225313227430f, 0.659249700728141490f, 0.658672788323441890f, + 0.658095488438511290f, + 0.657517801412960120f, 0.656939727586627110f, 0.656361267299578000f, + 0.655782420892106030f, + 0.655203188704731930f, 0.654623571078202680f, 0.654043568353492640f, + 0.653463180871802330f, + 0.652882408974558960f, 0.652301253003415460f, 0.651719713300251020f, + 0.651137790207170330f, + 0.650555484066503990f, 0.649972795220807530f, 0.649389724012861770f, + 0.648806270785672550f, + 0.648222435882470420f, 0.647638219646710420f, 0.647053622422071650f, + 0.646468644552457890f, + 0.645883286381996440f, 0.645297548255038380f, 0.644711430516158420f, + 0.644124933510154540f, + 0.643538057582047850f, 0.642950803077082080f, 0.642363170340724320f, + 0.641775159718663500f, + 0.641186771556811250f, 0.640598006201301030f, 0.640008863998488440f, + 0.639419345294950700f, + 0.638829450437486400f, 0.638239179773115390f, 0.637648533649078810f, + 0.637057512412838590f, + 0.636466116412077180f, 0.635874345994697720f, 0.635282201508823530f, + 0.634689683302797850f, + 0.634096791725183740f, 0.633503527124764320f, 0.632909889850541860f, + 0.632315880251737680f, + 0.631721498677792370f, 0.631126745478365340f, 0.630531621003334600f, + 0.629936125602796550f, + 0.629340259627065750f, 0.628744023426674790f, 0.628147417352374120f, + 0.627550441755131530f, + 0.626953096986132770f, 0.626355383396779990f, 0.625757301338692900f, + 0.625158851163707730f, + 0.624560033223877320f, 0.623960847871470770f, 0.623361295458973340f, + 0.622761376339086460f, + 0.622161090864726930f, 0.621560439389027270f, 0.620959422265335180f, + 0.620358039847213830f, + 0.619756292488440660f, 0.619154180543008410f, 0.618551704365123860f, + 0.617948864309208260f, + 0.617345660729896940f, 0.616742093982038830f, 0.616138164420696910f, + 0.615533872401147430f, + 0.614929218278879590f, 0.614324202409595950f, 0.613718825149211830f, + 0.613113086853854910f, + 0.612506987879865570f, 0.611900528583796070f, 0.611293709322411010f, + 0.610686530452686280f, + 0.610078992331809620f, 0.609471095317180240f, 0.608862839766408200f, + 0.608254226037314490f, + 0.607645254487930830f, 0.607035925476499760f, 0.606426239361473550f, + 0.605816196501515080f, + 0.605205797255496500f, 0.604595041982500360f, 0.603983931041818020f, + 0.603372464792950370f, + 0.602760643595607220f, 0.602148467809707320f, 0.601535937795377730f, + 0.600923053912954090f, + 0.600309816522980430f, 0.599696225986208310f, 0.599082282663597310f, + 0.598467986916314310f, + 0.597853339105733910f, 0.597238339593437530f, 0.596622988741213330f, + 0.596007286911056530f, + 0.595391234465168730f, 0.594774831765957580f, 0.594158079176036800f, + 0.593540977058226390f, + 0.592923525775551410f, 0.592305725691242400f, 0.591687577168735550f, + 0.591069080571671510f, + 0.590450236263895920f, 0.589831044609458900f, 0.589211505972615070f, + 0.588591620717822890f, + 0.587971389209745120f, 0.587350811813247660f, 0.586729888893400500f, + 0.586108620815476430f, + 0.585487007944951450f, 0.584865050647504490f, 0.584242749289016980f, + 0.583620104235572760f, + 0.582997115853457700f, 0.582373784509160220f, 0.581750110569369760f, + 0.581126094400977620f, + 0.580501736371076600f, 0.579877036846960350f, 0.579251996196123550f, + 0.578626614786261430f, + 0.578000892985269910f, 0.577374831161244880f, 0.576748429682482520f, + 0.576121688917478390f, + 0.575494609234928230f, 0.574867191003726740f, 0.574239434592967890f, + 0.573611340371944610f, + 0.572982908710148680f, 0.572354139977270030f, 0.571725034543197120f, + 0.571095592778016690f, + 0.570465815052012990f, 0.569835701735668110f, 0.569205253199661200f, + 0.568574469814869250f, + 0.567943351952365670f, 0.567311899983420800f, 0.566680114279501710f, + 0.566047995212271560f, + 0.565415543153589770f, 0.564782758475511400f, 0.564149641550287680f, + 0.563516192750364910f, + 0.562882412448384550f, 0.562248301017183150f, 0.561613858829792420f, + 0.560979086259438260f, + 0.560343983679540860f, 0.559708551463714790f, 0.559072789985768480f, + 0.558436699619704100f, + 0.557800280739717100f, 0.557163533720196340f, 0.556526458935723720f, + 0.555889056761073920f, + 0.555251327571214090f, 0.554613271741304040f, 0.553974889646695610f, + 0.553336181662932410f, + 0.552697148165749770f, 0.552057789531074980f, 0.551418106135026060f, + 0.550778098353912230f, + 0.550137766564233630f, 0.549497111142680960f, 0.548856132466135290f, + 0.548214830911667780f, + 0.547573206856539870f, 0.546931260678202190f, 0.546288992754295210f, + 0.545646403462648590f, + 0.545003493181281160f, 0.544360262288400400f, 0.543716711162402390f, + 0.543072840181871850f, + 0.542428649725581360f, 0.541784140172491660f, 0.541139311901750910f, + 0.540494165292695230f, + 0.539848700724847700f, 0.539202918577918240f, 0.538556819231804210f, + 0.537910403066588990f, + 0.537263670462542530f, 0.536616621800121150f, 0.535969257459966710f, + 0.535321577822907010f, + 0.534673583269955510f, 0.534025274182310380f, 0.533376650941355560f, + 0.532727713928658810f, + 0.532078463525973540f, 0.531428900115236910f, 0.530779024078570250f, + 0.530128835798278850f, + 0.529478335656852090f, 0.528827524036961980f, 0.528176401321464370f, + 0.527524967893398200f, + 0.526873224135984700f, 0.526221170432628170f, 0.525568807166914680f, + 0.524916134722612890f, + 0.524263153483673470f, 0.523609863834228030f, 0.522956266158590140f, + 0.522302360841254700f, + 0.521648148266897090f, 0.520993628820373810f, 0.520338802886721960f, + 0.519683670851158520f, + 0.519028233099080970f, 0.518372490016066220f, 0.517716441987871150f, + 0.517060089400432130f, + 0.516403432639863990f, 0.515746472092461380f, 0.515089208144697270f, + 0.514431641183222930f, + 0.513773771594868030f, 0.513115599766640560f, 0.512457126085725800f, + 0.511798350939487000f, + 0.511139274715464390f, 0.510479897801375700f, 0.509820220585115560f, + 0.509160243454754750f, + 0.508499966798540810f, 0.507839391004897940f, 0.507178516462425290f, + 0.506517343559898530f, + 0.505855872686268860f, 0.505194104230662240f, 0.504532038582380380f, + 0.503869676130898950f, + 0.503207017265869030f, 0.502544062377115800f, 0.501880811854638400f, + 0.501217266088609950f, + 0.500553425469377640f, 0.499889290387461380f, 0.499224861233555030f, + 0.498560138398525200f, + 0.497895122273410930f, 0.497229813249424340f, 0.496564211717949340f, + 0.495898318070542240f, + 0.495232132698931350f, 0.494565655995016010f, 0.493898888350867430f, + 0.493231830158728070f, + 0.492564481811010650f, 0.491896843700299240f, 0.491228916219348330f, + 0.490560699761082080f, + 0.489892194718595300f, 0.489223401485152030f, 0.488554320454186230f, + 0.487884952019301210f, + 0.487215296574268820f, 0.486545354513030270f, 0.485875126229695420f, + 0.485204612118541880f, + 0.484533812574016120f, 0.483862727990732320f, 0.483191358763471910f, + 0.482519705287184520f, + 0.481847767956986080f, 0.481175547168160360f, 0.480503043316157670f, + 0.479830256796594250f, + 0.479157188005253310f, 0.478483837338084080f, 0.477810205191201040f, + 0.477136291960884750f, + 0.476462098043581310f, 0.475787623835901120f, 0.475112869734620470f, + 0.474437836136679340f, + 0.473762523439182850f, 0.473086932039400220f, 0.472411062334764100f, + 0.471734914722871430f, + 0.471058489601482610f, 0.470381787368520710f, 0.469704808422072460f, + 0.469027553160387240f, + 0.468350021981876530f, 0.467672215285114710f, 0.466994133468838110f, + 0.466315776931944480f, + 0.465637146073493770f, 0.464958241292706740f, 0.464279062988965760f, + 0.463599611561814120f, + 0.462919887410955130f, 0.462239890936253280f, 0.461559622537733190f, + 0.460879082615578690f, + 0.460198271570134270f, 0.459517189801903590f, 0.458835837711549120f, + 0.458154215699893230f, + 0.457472324167916110f, 0.456790163516757220f, 0.456107734147714220f, + 0.455425036462242420f, + 0.454742070861955450f, 0.454058837748624540f, 0.453375337524177750f, + 0.452691570590700860f, + 0.452007537350436530f, 0.451323238205783520f, 0.450638673559297760f, + 0.449953843813690580f, + 0.449268749371829920f, 0.448583390636739300f, 0.447897768011597360f, + 0.447211881899738260f, + 0.446525732704651400f, 0.445839320829980350f, 0.445152646679523590f, + 0.444465710657234110f, + 0.443778513167218280f, 0.443091054613736990f, 0.442403335401204130f, + 0.441715355934187310f, + 0.441027116617407340f, 0.440338617855737300f, 0.439649860054203420f, + 0.438960843617984430f, + 0.438271568952410480f, 0.437582036462964340f, 0.436892246555280470f, + 0.436202199635143950f, + 0.435511896108492170f, 0.434821336381412350f, 0.434130520860143310f, + 0.433439449951074200f, + 0.432748124060743760f, 0.432056543595841450f, 0.431364708963206440f, + 0.430672620569826860f, + 0.429980278822840570f, 0.429287684129534720f, 0.428594836897344400f, + 0.427901737533854240f, + 0.427208386446796370f, 0.426514784044051520f, 0.425820930733648350f, + 0.425126826923762410f, + 0.424432473022717420f, 0.423737869438983950f, 0.423043016581179100f, + 0.422347914858067000f, + 0.421652564678558380f, 0.420956966451709440f, 0.420261120586723050f, + 0.419565027492946940f, + 0.418868687579875110f, 0.418172101257146430f, 0.417475268934544340f, + 0.416778191021997590f, + 0.416080867929579320f, 0.415383300067506290f, 0.414685487846140010f, + 0.413987431675985510f, + 0.413289131967690960f, 0.412590589132048380f, 0.411891803579992220f, + 0.411192775722600160f, + 0.410493505971092520f, 0.409793994736831200f, 0.409094242431320920f, + 0.408394249466208110f, + 0.407694016253280170f, 0.406993543204466460f, 0.406292830731837470f, + 0.405591879247603870f, + 0.404890689164117750f, 0.404189260893870750f, 0.403487594849495310f, + 0.402785691443763640f, + 0.402083551089587040f, 0.401381174200016790f, 0.400678561188243350f, + 0.399975712467595390f, + 0.399272628451540930f, 0.398569309553686360f, 0.397865756187775750f, + 0.397161968767691720f, + 0.396457947707453960f, 0.395753693421220080f, 0.395049206323284880f, + 0.394344486828079650f, + 0.393639535350172880f, 0.392934352304269600f, 0.392228938105210370f, + 0.391523293167972350f, + 0.390817417907668610f, 0.390111312739546910f, 0.389404978078991100f, + 0.388698414341519250f, + 0.387991621942784910f, 0.387284601298575890f, 0.386577352824813980f, + 0.385869876937555310f, + 0.385162174052989970f, 0.384454244587440870f, 0.383746088957365010f, + 0.383037707579352130f, + 0.382329100870124510f, 0.381620269246537520f, 0.380911213125578130f, + 0.380201932924366050f, + 0.379492429060152740f, 0.378782701950320600f, 0.378072752012383990f, + 0.377362579663988450f, + 0.376652185322909620f, 0.375941569407054420f, 0.375230732334460030f, + 0.374519674523293210f, + 0.373808396391851370f, 0.373096898358560690f, 0.372385180841977360f, + 0.371673244260786630f, + 0.370961089033802040f, 0.370248715579966360f, 0.369536124318350760f, + 0.368823315668153960f, + 0.368110290048703050f, 0.367397047879452820f, 0.366683589579984930f, + 0.365969915570008910f, + 0.365256026269360380f, 0.364541922098002180f, 0.363827603476023610f, + 0.363113070823639530f, + 0.362398324561191310f, 0.361683365109145950f, 0.360968192888095290f, + 0.360252808318756830f, + 0.359537211821973180f, 0.358821403818710860f, 0.358105384730061760f, + 0.357389154977241000f, + 0.356672714981588260f, 0.355956065164567010f, 0.355239205947763370f, + 0.354522137752887430f, + 0.353804861001772160f, 0.353087376116372530f, 0.352369683518766630f, + 0.351651783631154680f, + 0.350933676875858360f, 0.350215363675321740f, 0.349496844452109600f, + 0.348778119628908420f, + 0.348059189628525780f, 0.347340054873889190f, 0.346620715788047320f, + 0.345901172794169100f, + 0.345181426315542610f, 0.344461476775576480f, 0.343741324597798600f, + 0.343020970205855540f, + 0.342300414023513690f, 0.341579656474657210f, 0.340858697983289440f, + 0.340137538973531880f, + 0.339416179869623410f, 0.338694621095921190f, 0.337972863076899830f, + 0.337250906237150650f, + 0.336528751001382350f, 0.335806397794420560f, 0.335083847041206580f, + 0.334361099166798900f, + 0.333638154596370920f, 0.332915013755212650f, 0.332191677068729320f, + 0.331468144962440920f, + 0.330744417861982890f, 0.330020496193105530f, 0.329296380381672800f, + 0.328572070853663690f, + 0.327847568035170960f, 0.327122872352400510f, 0.326397984231672660f, + 0.325672904099419900f, + 0.324947632382188430f, 0.324222169506637130f, 0.323496515899536760f, + 0.322770671987770710f, + 0.322044638198334620f, 0.321318414958334910f, 0.320592002694990330f, + 0.319865401835630610f, + 0.319138612807695900f, 0.318411636038737960f, 0.317684471956418020f, + 0.316957120988508150f, + 0.316229583562890490f, 0.315501860107556040f, 0.314773951050606070f, + 0.314045856820250820f, + 0.313317577844809070f, 0.312589114552708660f, 0.311860467372486130f, + 0.311131636732785270f, + 0.310402623062358880f, 0.309673426790066490f, 0.308944048344875710f, + 0.308214488155861220f, + 0.307484746652204160f, 0.306754824263192780f, 0.306024721418221900f, + 0.305294438546791720f, + 0.304563976078509050f, 0.303833334443086470f, 0.303102514070341060f, + 0.302371515390196130f, + 0.301640338832678880f, 0.300908984827921890f, 0.300177453806162120f, + 0.299445746197739950f, + 0.298713862433100390f, 0.297981802942791920f, 0.297249568157465890f, + 0.296517158507877410f, + 0.295784574424884370f, 0.295051816339446720f, 0.294318884682627570f, + 0.293585779885591310f, + 0.292852502379604810f, 0.292119052596036540f, 0.291385430966355720f, + 0.290651637922133220f, + 0.289917673895040860f, 0.289183539316850310f, 0.288449234619434170f, + 0.287714760234765280f, + 0.286980116594915570f, 0.286245304132057120f, 0.285510323278461380f, + 0.284775174466498300f, + 0.284039858128637360f, 0.283304374697445790f, 0.282568724605589740f, + 0.281832908285833460f, + 0.281096926171038320f, 0.280360778694163810f, 0.279624466288266700f, + 0.278887989386500280f, + 0.278151348422115090f, 0.277414543828458200f, 0.276677576038972420f, + 0.275940445487197320f, + 0.275203152606767370f, 0.274465697831413220f, 0.273728081594960650f, + 0.272990304331329980f, + 0.272252366474536660f, 0.271514268458690810f, 0.270776010717996010f, + 0.270037593686750510f, + 0.269299017799346230f, 0.268560283490267890f, 0.267821391194094320f, + 0.267082341345496350f, + 0.266343134379238180f, 0.265603770730176440f, 0.264864250833259320f, + 0.264124575123527490f, + 0.263384744036113390f, 0.262644758006240100f, 0.261904617469222560f, + 0.261164322860466590f, + 0.260423874615468010f, 0.259683273169813930f, 0.258942518959180580f, + 0.258201612419334870f, + 0.257460553986133210f, 0.256719344095520720f, 0.255977983183532380f, + 0.255236471686291820f, + 0.254494810040010790f, 0.253752998680989940f, 0.253011038045617980f, + 0.252268928570370810f, + 0.251526670691812780f, 0.250784264846594550f, 0.250041711471454650f, + 0.249299011003218300f, + 0.248556163878796620f, 0.247813170535187620f, 0.247070031409475370f, + 0.246326746938829060f, + 0.245583317560504000f, 0.244839743711840750f, 0.244096025830264210f, + 0.243352164353284880f, + 0.242608159718496890f, 0.241864012363579210f, 0.241119722726294730f, + 0.240375291244489500f, + 0.239630718356093560f, 0.238886004499120170f, 0.238141150111664870f, + 0.237396155631906550f, + 0.236651021498106460f, 0.235905748148607370f, 0.235160336021834860f, + 0.234414785556295250f, + 0.233669097190576820f, 0.232923271363349120f, 0.232177308513361770f, + 0.231431209079445730f, + 0.230684973500512310f, 0.229938602215552260f, 0.229192095663636740f, + 0.228445454283916550f, + 0.227698678515621170f, 0.226951768798059980f, 0.226204725570620270f, + 0.225457549272768540f, + 0.224710240344049570f, 0.223962799224085520f, 0.223215226352576960f, + 0.222467522169301990f, + 0.221719687114115240f, 0.220971721626949060f, 0.220223626147812460f, + 0.219475401116790340f, + 0.218727046974044600f, 0.217978564159812290f, 0.217229953114406790f, + 0.216481214278216900f, + 0.215732348091705940f, 0.214983354995412820f, 0.214234235429951100f, + 0.213484989836008080f, + 0.212735618654345870f, 0.211986122325800410f, 0.211236501291280710f, + 0.210486755991769890f, + 0.209736886868323370f, 0.208986894362070070f, 0.208236778914211470f, + 0.207486540966020700f, + 0.206736180958843660f, 0.205985699334098050f, 0.205235096533272380f, + 0.204484372997927180f, + 0.203733529169694010f, 0.202982565490274460f, 0.202231482401441620f, + 0.201480280345037820f, + 0.200728959762976140f, 0.199977521097239290f, 0.199225964789878890f, + 0.198474291283016360f, + 0.197722501018842030f, 0.196970594439614370f, 0.196218571987660850f, + 0.195466434105377090f, + 0.194714181235225990f, 0.193961813819739010f, 0.193209332301514080f, + 0.192456737123216840f, + 0.191704028727579940f, 0.190951207557401860f, 0.190198274055548120f, + 0.189445228664950340f, + 0.188692071828605260f, 0.187938803989575850f, 0.187185425590990440f, + 0.186431937076041640f, + 0.185678338887987790f, 0.184924631470150870f, 0.184170815265917720f, + 0.183416890718739230f, + 0.182662858272129360f, 0.181908718369666160f, 0.181154471454990920f, + 0.180400117971807270f, + 0.179645658363882100f, 0.178891093075044830f, 0.178136422549186320f, + 0.177381647230260200f, + 0.176626767562280960f, 0.175871783989325040f, 0.175116696955530060f, + 0.174361506905093830f, + 0.173606214282275410f, 0.172850819531394200f, 0.172095323096829040f, + 0.171339725423019260f, + 0.170584026954463700f, 0.169828228135719880f, 0.169072329411405180f, + 0.168316331226194910f, + 0.167560234024823590f, 0.166804038252083870f, 0.166047744352825850f, + 0.165291352771957970f, + 0.164534863954446110f, 0.163778278345312690f, 0.163021596389637810f, + 0.162264818532558110f, + 0.161507945219266150f, 0.160750976895011390f, 0.159993914005098350f, + 0.159236756994887850f, + 0.158479506309796100f, 0.157722162395293690f, 0.156964725696906750f, + 0.156207196660216040f, + 0.155449575730855880f, 0.154691863354515400f, 0.153934059976937460f, + 0.153176166043917870f, + 0.152418182001306500f, 0.151660108295005400f, 0.150901945370970040f, + 0.150143693675208330f, + 0.149385353653779810f, 0.148626925752796540f, 0.147868410418422360f, + 0.147109808096871850f, + 0.146351119234411440f, 0.145592344277358450f, 0.144833483672080240f, + 0.144074537864995330f, + 0.143315507302571590f, 0.142556392431327340f, 0.141797193697830530f, + 0.141037911548697770f, + 0.140278546430595420f, 0.139519098790238600f, 0.138759569074390380f, + 0.137999957729862760f, + 0.137240265203515700f, 0.136480491942256310f, 0.135720638393040080f, + 0.134960705002868830f, + 0.134200692218792020f, 0.133440600487905820f, 0.132680430257352130f, + 0.131920181974319760f, + 0.131159856086043410f, 0.130399453039802740f, 0.129638973282923540f, + 0.128878417262776660f, + 0.128117785426777150f, 0.127357078222385570f, 0.126596296097105960f, + 0.125835439498487020f, + 0.125074508874121300f, 0.124313504671644300f, 0.123552427338735370f, + 0.122791277323116900f, + 0.122030055072553410f, 0.121268761034852550f, 0.120507395657864240f, + 0.119745959389479630f, + 0.118984452677632520f, 0.118222875970297250f, 0.117461229715489990f, + 0.116699514361267840f, + 0.115937730355727850f, 0.115175878147008180f, 0.114413958183287050f, + 0.113651970912781920f, + 0.112889916783750470f, 0.112127796244489750f, 0.111365609743335190f, + 0.110603357728661910f, + 0.109841040648882680f, 0.109078658952449240f, 0.108316213087851300f, + 0.107553703503615710f, + 0.106791130648307380f, 0.106028494970528530f, 0.105265796918917650f, + 0.104503036942150550f, + 0.103740215488939480f, 0.102977333008032250f, 0.102214389948213370f, + 0.101451386758302160f, + 0.100688323887153970f, 0.099925201783659226f, 0.099162020896742573f, + 0.098398781675363881f, + 0.097635484568517339f, 0.096872130025230527f, 0.096108718494565468f, + 0.095345250425617742f, + 0.094581726267515473f, 0.093818146469420494f, 0.093054511480527333f, + 0.092290821750062355f, + 0.091527077727284981f, 0.090763279861485704f, 0.089999428601987341f, + 0.089235524398144139f, + 0.088471567699340822f, 0.087707558954993645f, 0.086943498614549489f, + 0.086179387127484922f, + 0.085415224943307277f, 0.084651012511553700f, 0.083886750281790226f, + 0.083122438703613077f, + 0.082358078226646619f, 0.081593669300544638f, 0.080829212374989468f, + 0.080064707899690932f, + 0.079300156324387569f, 0.078535558098845590f, 0.077770913672857989f, + 0.077006223496245585f, + 0.076241488018856149f, 0.075476707690563416f, 0.074711882961268378f, + 0.073947014280897269f, + 0.073182102099402888f, 0.072417146866763538f, 0.071652149032982254f, + 0.070887109048087787f, + 0.070122027362133646f, 0.069356904425197236f, 0.068591740687380900f, + 0.067826536598810966f, + 0.067061292609636836f, 0.066296009170032283f, 0.065530686730193397f, + 0.064765325740339871f, + 0.063999926650714078f, 0.063234489911580136f, 0.062469015973224969f, + 0.061703505285957416f, + 0.060937958300107238f, 0.060172375466026218f, 0.059406757234087247f, + 0.058641104054683348f, + 0.057875416378229017f, 0.057109694655158132f, 0.056343939335925283f, + 0.055578150871004817f, + 0.054812329710889909f, 0.054046476306093640f, 0.053280591107148056f, + 0.052514674564603257f, + 0.051748727129028414f, 0.050982749251010900f, 0.050216741381155325f, + 0.049450703970084824f, + 0.048684637468439020f, 0.047918542326875327f, 0.047152418996068000f, + 0.046386267926707213f, + 0.045620089569500123f, 0.044853884375169933f, 0.044087652794454979f, + 0.043321395278109784f, + 0.042555112276904117f, 0.041788804241622082f, 0.041022471623063397f, + 0.040256114872041358f, + 0.039489734439384118f, 0.038723330775933762f, 0.037956904332545366f, + 0.037190455560088091f, + 0.036423984909444228f, 0.035657492831508264f, 0.034890979777187955f, + 0.034124446197403423f, + 0.033357892543086159f, 0.032591319265180385f, 0.031824726814640963f, + 0.031058115642434700f, + 0.030291486199539423f, 0.029524838936943035f, 0.028758174305644590f, + 0.027991492756653365f, + 0.027224794740987910f, 0.026458080709677145f, 0.025691351113759395f, + 0.024924606404281485f, + 0.024157847032300020f, 0.023391073448879338f, 0.022624286105092803f, + 0.021857485452021874f, + 0.021090671940755180f, 0.020323846022389572f, 0.019557008148029204f, + 0.018790158768784596f, + 0.018023298335773701f, 0.017256427300120978f, 0.016489546112956454f, + 0.015722655225417017f, + 0.014955755088644378f, 0.014188846153786343f, 0.013421928871995907f, + 0.012655003694430301f, + 0.011888071072252072f, 0.011121131456628141f, 0.010354185298728884f, + 0.009587233049729183f, + 0.008820275160807512f, 0.008053312083144991f, 0.007286344267926684f, + 0.006519372166339549f, + 0.005752396229573737f, 0.004985416908821652f, 0.004218434655277024f, + 0.003451449920135975f, + 0.002684463154596083f, 0.001917474809855460f, 0.001150485337113809f, + 0.000383495187571497f +}; + +static const float32_t cos_factors_8192[8192] = { + 1.999999990808214700f, 1.999999917273932200f, 1.999999770205369800f, + 1.999999549602533100f, + 1.999999255465430200f, 1.999998887794072000f, 1.999998446588471700f, + 1.999997931848645600f, + 1.999997343574612800f, 1.999996681766395000f, 1.999995946424016200f, + 1.999995137547503600f, + 1.999994255136887000f, 1.999993299192198700f, 1.999992269713474200f, + 1.999991166700750800f, + 1.999989990154069600f, 1.999988740073473500f, 1.999987416459008600f, + 1.999986019310723500f, + 1.999984548628669600f, 1.999983004412901000f, 1.999981386663474400f, + 1.999979695380449400f, + 1.999977930563888100f, 1.999976092213855400f, 1.999974180330418700f, + 1.999972194913648900f, + 1.999970135963618400f, 1.999968003480403000f, 1.999965797464081200f, + 1.999963517914734100f, + 1.999961164832445800f, 1.999958738217302300f, 1.999956238069392900f, + 1.999953664388809800f, + 1.999951017175647600f, 1.999948296430003500f, 1.999945502151977600f, + 1.999942634341672600f, + 1.999939692999193900f, 1.999936678124649700f, 1.999933589718150700f, + 1.999930427779810900f, + 1.999927192309745900f, 1.999923883308075200f, 1.999920500774920300f, + 1.999917044710405500f, + 1.999913515114657900f, 1.999909911987807200f, 1.999906235329986100f, + 1.999902485141329400f, + 1.999898661421975400f, 1.999894764172064600f, 1.999890793391740000f, + 1.999886749081147800f, + 1.999882631240436700f, 1.999878439869758200f, 1.999874174969266300f, + 1.999869836539117700f, + 1.999865424579472000f, 1.999860939090491600f, 1.999856380072341000f, + 1.999851747525188200f, + 1.999847041449203300f, 1.999842261844559700f, 1.999837408711432600f, + 1.999832482050000900f, + 1.999827481860445300f, 1.999822408142949900f, 1.999817260897701400f, + 1.999812040124888700f, + 1.999806745824704000f, 1.999801377997341800f, 1.999795936642999600f, + 1.999790421761877400f, + 1.999784833354177900f, 1.999779171420106700f, 1.999773435959872000f, + 1.999767626973684400f, + 1.999761744461757700f, 1.999755788424308200f, 1.999749758861554900f, + 1.999743655773719400f, + 1.999737479161026100f, 1.999731229023702200f, 1.999724905361977200f, + 1.999718508176084000f, + 1.999712037466257600f, 1.999705493232735800f, 1.999698875475759600f, + 1.999692184195571900f, + 1.999685419392419000f, 1.999678581066549400f, 1.999671669218214600f, + 1.999664683847668800f, + 1.999657624955168700f, 1.999650492540973900f, 1.999643286605346800f, + 1.999636007148552400f, + 1.999628654170857900f, 1.999621227672533800f, 1.999613727653853500f, + 1.999606154115092500f, + 1.999598507056529000f, 1.999590786478444600f, 1.999582992381123000f, + 1.999575124764850800f, + 1.999567183629917100f, 1.999559168976613900f, 1.999551080805236100f, + 1.999542919116081000f, + 1.999534683909448600f, 1.999526375185641800f, 1.999517992944965800f, + 1.999509537187729200f, + 1.999501007914242600f, 1.999492405124819700f, 1.999483728819776900f, + 1.999474978999432800f, + 1.999466155664109600f, 1.999457258814131500f, 1.999448288449825500f, + 1.999439244571521700f, + 1.999430127179552500f, 1.999420936274252800f, 1.999411671855960900f, + 1.999402333925017300f, + 1.999392922481765500f, 1.999383437526551300f, 1.999373879059723500f, + 1.999364247081633500f, + 1.999354541592635500f, 1.999344762593086500f, 1.999334910083345700f, + 1.999324984063775700f, + 1.999314984534741100f, 1.999304911496609700f, 1.999294764949752100f, + 1.999284544894541100f, + 1.999274251331352400f, 1.999263884260564600f, 1.999253443682558900f, + 1.999242929597719200f, + 1.999232342006432000f, 1.999221680909086400f, 1.999210946306074500f, + 1.999200138197791100f, + 1.999189256584633600f, 1.999178301467001900f, 1.999167272845298900f, + 1.999156170719930100f, + 1.999144995091303600f, 1.999133745959830600f, 1.999122423325924200f, + 1.999111027190001000f, + 1.999099557552479900f, 1.999088014413782800f, 1.999076397774334000f, + 1.999064707634560700f, + 1.999052943994892300f, 1.999041106855761900f, 1.999029196217604100f, + 1.999017212080857400f, + 1.999005154445962200f, 1.998993023313361700f, 1.998980818683502100f, + 1.998968540556831800f, + 1.998956188933802800f, 1.998943763814868800f, 1.998931265200486900f, + 1.998918693091116200f, + 1.998906047487219600f, 1.998893328389261400f, 1.998880535797709700f, + 1.998867669713034500f, + 1.998854730135709400f, 1.998841717066209400f, 1.998828630505013400f, + 1.998815470452602400f, + 1.998802236909460500f, 1.998788929876074100f, 1.998775549352932400f, + 1.998762095340527400f, + 1.998748567839354000f, 1.998734966849909000f, 1.998721292372693100f, + 1.998707544408208700f, + 1.998693722956961500f, 1.998679828019459300f, 1.998665859596213500f, + 1.998651817687737300f, + 1.998637702294547000f, 1.998623513417161700f, 1.998609251056103100f, + 1.998594915211895600f, + 1.998580505885066100f, 1.998566023076144600f, 1.998551466785663400f, + 1.998536837014157900f, + 1.998522133762165900f, 1.998507357030227900f, 1.998492506818887200f, + 1.998477583128690100f, + 1.998462585960185000f, 1.998447515313923400f, 1.998432371190459500f, + 1.998417153590349900f, + 1.998401862514154200f, 1.998386497962434800f, 1.998371059935756300f, + 1.998355548434686400f, + 1.998339963459795400f, 1.998324305011656600f, 1.998308573090845200f, + 1.998292767697940100f, + 1.998276888833522300f, 1.998260936498175400f, 1.998244910692486000f, + 1.998228811417043700f, + 1.998212638672439900f, 1.998196392459269400f, 1.998180072778129600f, + 1.998163679629620500f, + 1.998147213014344900f, 1.998130672932908000f, 1.998114059385918400f, + 1.998097372373986300f, + 1.998080611897725700f, 1.998063777957752600f, 1.998046870554686100f, + 1.998029889689147700f, + 1.998012835361761900f, 1.997995707573155600f, 1.997978506323958600f, + 1.997961231614803200f, + 1.997943883446324800f, 1.997926461819161000f, 1.997908966733952500f, + 1.997891398191342400f, + 1.997873756191977000f, 1.997856040736504500f, 1.997838251825576400f, + 1.997820389459846700f, + 1.997802453639972300f, 1.997784444366612600f, 1.997766361640429800f, + 1.997748205462088500f, + 1.997729975832256600f, 1.997711672751604200f, 1.997693296220804000f, + 1.997674846240532000f, + 1.997656322811466500f, 1.997637725934288300f, 1.997619055609681600f, + 1.997600311838332500f, + 1.997581494620930300f, 1.997562603958166600f, 1.997543639850736200f, + 1.997524602299336500f, + 1.997505491304667000f, 1.997486306867430900f, 1.997467048988333000f, + 1.997447717668082000f, + 1.997428312907388200f, 1.997408834706965000f, 1.997389283067528800f, + 1.997369657989798400f, + 1.997349959474495200f, 1.997330187522343700f, 1.997310342134070800f, + 1.997290423310406100f, + 1.997270431052081900f, 1.997250365359833200f, 1.997230226234397900f, + 1.997210013676516700f, + 1.997189727686932400f, 1.997169368266390900f, 1.997148935415640600f, + 1.997128429135433400f, + 1.997107849426522600f, 1.997087196289665000f, 1.997066469725620200f, + 1.997045669735150000f, + 1.997024796319019300f, 1.997003849477995600f, 1.996982829212848900f, + 1.996961735524351900f, + 1.996940568413280600f, 1.996919327880412900f, 1.996898013926530000f, + 1.996876626552415400f, + 1.996855165758855600f, 1.996833631546639300f, 1.996812023916558800f, + 1.996790342869408000f, + 1.996768588405984300f, 1.996746760527087700f, 1.996724859233520500f, + 1.996702884526087900f, + 1.996680836405598100f, 1.996658714872861800f, 1.996636519928692000f, + 1.996614251573904900f, + 1.996591909809319400f, 1.996569494635756600f, 1.996547006054041100f, + 1.996524444064999400f, + 1.996501808669461000f, 1.996479099868258400f, 1.996456317662226300f, + 1.996433462052202600f, + 1.996410533039027400f, 1.996387530623543900f, 1.996364454806597500f, + 1.996341305589037100f, + 1.996318082971713500f, 1.996294786955480800f, 1.996271417541195300f, + 1.996247974729716200f, + 1.996224458521905600f, 1.996200868918628100f, 1.996177205920750800f, + 1.996153469529144100f, + 1.996129659744680300f, 1.996105776568235100f, 1.996081820000686500f, + 1.996057790042915500f, + 1.996033686695805300f, 1.996009509960242400f, 1.995985259837115500f, + 1.995960936327316300f, + 1.995936539431739000f, 1.995912069151280800f, 1.995887525486841300f, + 1.995862908439323100f, + 1.995838218009630800f, 1.995813454198672700f, 1.995788617007359100f, + 1.995763706436603200f, + 1.995738722487320600f, 1.995713665160430600f, 1.995688534456853800f, + 1.995663330377514400f, + 1.995638052923339300f, 1.995612702095257400f, 1.995587277894201400f, + 1.995561780321105600f, + 1.995536209376907600f, 1.995510565062547800f, 1.995484847378968600f, + 1.995459056327116000f, + 1.995433191907938000f, 1.995407254122385700f, 1.995381242971412600f, + 1.995355158455975200f, + 1.995329000577032800f, 1.995302769335546500f, 1.995276464732481200f, + 1.995250086768804100f, + 1.995223635445484900f, 1.995197110763496000f, 1.995170512723813100f, + 1.995143841327413400f, + 1.995117096575278200f, 1.995090278468390600f, 1.995063387007736600f, + 1.995036422194304700f, + 1.995009384029086800f, 1.994982272513076600f, 1.994955087647271000f, + 1.994927829432669800f, + 1.994900497870274900f, 1.994873092961091200f, 1.994845614706126400f, + 1.994818063106391000f, + 1.994790438162897600f, 1.994762739876662100f, 1.994734968248702800f, + 1.994707123280041100f, + 1.994679204971700100f, 1.994651213324707000f, 1.994623148340090700f, + 1.994595010018883000f, + 1.994566798362118300f, 1.994538513370834200f, 1.994510155046070700f, + 1.994481723388870100f, + 1.994453218400277900f, 1.994424640081342100f, 1.994395988433113700f, + 1.994367263456646100f, + 1.994338465152995000f, 1.994309593523219600f, 1.994280648568381500f, + 1.994251630289544600f, + 1.994222538687776100f, 1.994193373764145500f, 1.994164135519725000f, + 1.994134823955589800f, + 1.994105439072817700f, 1.994075980872488800f, 1.994046449355686200f, + 1.994016844523496000f, + 1.993987166377006600f, 1.993957414917308700f, 1.993927590145496900f, + 1.993897692062667200f, + 1.993867720669919400f, 1.993837675968354700f, 1.993807557959078600f, + 1.993777366643197900f, + 1.993747102021822900f, 1.993716764096066200f, 1.993686352867043200f, + 1.993655868335872300f, + 1.993625310503674100f, 1.993594679371572200f, 1.993563974940692800f, + 1.993533197212164800f, + 1.993502346187119700f, 1.993471421866692200f, 1.993440424252018900f, + 1.993409353344239600f, + 1.993378209144496700f, 1.993346991653935300f, 1.993315700873703200f, + 1.993284336804950900f, + 1.993252899448831400f, 1.993221388806500900f, 1.993189804879117500f, + 1.993158147667842800f, + 1.993126417173840500f, 1.993094613398277400f, 1.993062736342323000f, + 1.993030786007148800f, + 1.992998762393930000f, 1.992966665503844000f, 1.992934495338070800f, + 1.992902251897793000f, + 1.992869935184196300f, 1.992837545198469000f, 1.992805081941801700f, + 1.992772545415388200f, + 1.992739935620424700f, 1.992707252558110200f, 1.992674496229646500f, + 1.992641666636237700f, + 1.992608763779091000f, 1.992575787659416100f, 1.992542738278425300f, + 1.992509615637334100f, + 1.992476419737359900f, 1.992443150579723500f, 1.992409808165648100f, + 1.992376392496359300f, + 1.992342903573086000f, 1.992309341397059600f, 1.992275705969513800f, + 1.992241997291685400f, + 1.992208215364813700f, 1.992174360190140900f, 1.992140431768911500f, + 1.992106430102373400f, + 1.992072355191776300f, 1.992038207038373300f, 1.992003985643419700f, + 1.991969691008174100f, + 1.991935323133897000f, 1.991900882021852200f, 1.991866367673306200f, + 1.991831780089527500f, + 1.991797119271788300f, 1.991762385221362600f, 1.991727577939527600f, + 1.991692697427563300f, + 1.991657743686751700f, 1.991622716718378400f, 1.991587616523731000f, + 1.991552443104099800f, + 1.991517196460778500f, 1.991481876595062800f, 1.991446483508251500f, + 1.991411017201645500f, + 1.991375477676549100f, 1.991339864934268800f, 1.991304178976114100f, + 1.991268419803397200f, + 1.991232587417432600f, 1.991196681819537900f, 1.991160703011033200f, + 1.991124650993241400f, + 1.991088525767488200f, 1.991052327335101300f, 1.991016055697411900f, + 1.990979710855753900f, + 1.990943292811463000f, 1.990906801565878600f, 1.990870237120342400f, + 1.990833599476198800f, + 1.990796888634794400f, 1.990760104597479400f, 1.990723247365606200f, + 1.990686316940529800f, + 1.990649313323608100f, 1.990612236516201300f, 1.990575086519673200f, + 1.990537863335389400f, + 1.990500566964718400f, 1.990463197409031700f, 1.990425754669703100f, + 1.990388238748109100f, + 1.990350649645629600f, 1.990312987363646000f, 1.990275251903543600f, + 1.990237443266709400f, + 1.990199561454533600f, 1.990161606468409300f, 1.990123578309731700f, + 1.990085476979899000f, + 1.990047302480312300f, 1.990009054812374800f, 1.989970733977493000f, + 1.989932339977075900f, + 1.989893872812535000f, 1.989855332485284800f, 1.989816718996742200f, + 1.989778032348326700f, + 1.989739272541461100f, 1.989700439577570400f, 1.989661533458082100f, + 1.989622554184426800f, + 1.989583501758037700f, 1.989544376180350600f, 1.989505177452804100f, + 1.989465905576839600f, + 1.989426560553900500f, 1.989387142385433900f, 1.989347651072888900f, + 1.989308086617717500f, + 1.989268449021374300f, 1.989228738285316900f, 1.989188954411005100f, + 1.989149097399901500f, + 1.989109167253472000f, 1.989069163973184300f, 1.989029087560509700f, + 1.988988938016921000f, + 1.988948715343894900f, 1.988908419542910100f, 1.988868050615448100f, + 1.988827608562993200f, + 1.988787093387032600f, 1.988746505089055600f, 1.988705843670554500f, + 1.988665109133024500f, + 1.988624301477963200f, 1.988583420706871100f, 1.988542466821251000f, + 1.988501439822608900f, + 1.988460339712453200f, 1.988419166492295000f, 1.988377920163648000f, + 1.988336600728029000f, + 1.988295208186956700f, 1.988253742541953800f, 1.988212203794544000f, + 1.988170591946255100f, + 1.988128906998616800f, 1.988087148953161700f, 1.988045317811425700f, + 1.988003413574946000f, + 1.987961436245263800f, 1.987919385823922400f, 1.987877262312467600f, + 1.987835065712448600f, + 1.987792796025416500f, 1.987750453252925500f, 1.987708037396532800f, + 1.987665548457797400f, + 1.987622986438281700f, 1.987580351339550700f, 1.987537643163171700f, + 1.987494861910715100f, + 1.987452007583754100f, 1.987409080183863800f, 1.987366079712622900f, + 1.987323006171612500f, + 1.987279859562415900f, 1.987236639886619700f, 1.987193347145813000f, + 1.987149981341587400f, + 1.987106542475537400f, 1.987063030549260300f, 1.987019445564355700f, + 1.986975787522426100f, + 1.986932056425076800f, 1.986888252273915500f, 1.986844375070552900f, + 1.986800424816602200f, + 1.986756401513679400f, 1.986712305163403000f, 1.986668135767394300f, + 1.986623893327277500f, + 1.986579577844678900f, 1.986535189321228000f, 1.986490727758556800f, + 1.986446193158300400f, + 1.986401585522095600f, 1.986356904851583000f, 1.986312151148405200f, + 1.986267324414207500f, + 1.986222424650638400f, 1.986177451859348200f, 1.986132406041990900f, + 1.986087287200222700f, + 1.986042095335702300f, 1.985996830450091200f, 1.985951492545054100f, + 1.985906081622257300f, + 1.985860597683371000f, 1.985815040730067200f, 1.985769410764020900f, + 1.985723707786909900f, + 1.985677931800414500f, 1.985632082806217900f, 1.985586160806005700f, + 1.985540165801466200f, + 1.985494097794290800f, 1.985447956786173100f, 1.985401742778809500f, + 1.985355455773899500f, + 1.985309095773144500f, 1.985262662778249300f, 1.985216156790921000f, + 1.985169577812869500f, + 1.985122925845807400f, 1.985076200891450000f, 1.985029402951515200f, + 1.984982532027723700f, + 1.984935588121798700f, 1.984888571235466200f, 1.984841481370454900f, + 1.984794318528496200f, + 1.984747082711324100f, 1.984699773920675300f, 1.984652392158289500f, + 1.984604937425908300f, + 1.984557409725276700f, 1.984509809058142300f, 1.984462135426255000f, + 1.984414388831367900f, + 1.984366569275236400f, 1.984318676759618400f, 1.984270711286275200f, + 1.984222672856969800f, + 1.984174561473469200f, 1.984126377137541700f, 1.984078119850959200f, + 1.984029789615495900f, + 1.983981386432928800f, 1.983932910305037400f, 1.983884361233604100f, + 1.983835739220414000f, + 1.983787044267254700f, 1.983738276375916800f, 1.983689435548192900f, + 1.983640521785879200f, + 1.983591535090773800f, 1.983542475464678000f, 1.983493342909395500f, + 1.983444137426732600f, + 1.983394859018498900f, 1.983345507686505900f, 1.983296083432567900f, + 1.983246586258502700f, + 1.983197016166129400f, 1.983147373157271300f, 1.983097657233753100f, + 1.983047868397403100f, + 1.982998006650051400f, 1.982948071993531700f, 1.982898064429679900f, + 1.982847983960334600f, + 1.982797830587336800f, 1.982747604312531200f, 1.982697305137763700f, + 1.982646933064884200f, + 1.982596488095744300f, 1.982545970232199000f, 1.982495379476105800f, + 1.982444715829324600f, + 1.982393979293718200f, 1.982343169871152000f, 1.982292287563494300f, + 1.982241332372615600f, + 1.982190304300389400f, 1.982139203348692200f, 1.982088029519402300f, + 1.982036782814401900f, + 1.981985463235574700f, 1.981934070784807400f, 1.981882605463990200f, + 1.981831067275015000f, + 1.981779456219776600f, 1.981727772300172500f, 1.981676015518103500f, + 1.981624185875472000f, + 1.981572283374183800f, 1.981520308016147200f, 1.981468259803273300f, + 1.981416138737475800f, + 1.981363944820670800f, 1.981311678054777500f, 1.981259338441717400f, + 1.981206925983415300f, + 1.981154440681797800f, 1.981101882538794900f, 1.981049251556338900f, + 1.980996547736364900f, + 1.980943771080810700f, 1.980890921591616600f, 1.980837999270726100f, + 1.980785004120084700f, + 1.980731936141640900f, 1.980678795337345900f, 1.980625581709153600f, + 1.980572295259020600f, + 1.980518935988905700f, 1.980465503900771000f, 1.980411998996581200f, + 1.980358421278303200f, + 1.980304770747907300f, 1.980251047407365600f, 1.980197251258653900f, + 1.980143382303749500f, + 1.980089440544633600f, 1.980035425983289300f, 1.979981338621702200f, + 1.979927178461861500f, + 1.979872945505758000f, 1.979818639755386100f, 1.979764261212742400f, + 1.979709809879825800f, + 1.979655285758638900f, 1.979600688851186100f, 1.979546019159474900f, + 1.979491276685515300f, + 1.979436461431320000f, 1.979381573398904400f, 1.979326612590286400f, + 1.979271579007487100f, + 1.979216472652529900f, 1.979161293527440500f, 1.979106041634248100f, + 1.979050716974983800f, + 1.978995319551682100f, 1.978939849366379700f, 1.978884306421115900f, + 1.978828690717932900f, + 1.978773002258875600f, 1.978717241045991700f, 1.978661407081331100f, + 1.978605500366946700f, + 1.978549520904894000f, 1.978493468697231300f, 1.978437343746019600f, + 1.978381146053322000f, + 1.978324875621205300f, 1.978268532451738200f, 1.978212116546992100f, + 1.978155627909041300f, + 1.978099066539962900f, 1.978042432441836400f, 1.977985725616743900f, + 1.977928946066770600f, + 1.977872093794004200f, 1.977815168800534500f, 1.977758171088455100f, + 1.977701100659861300f, + 1.977643957516851400f, 1.977586741661526500f, 1.977529453095990200f, + 1.977472091822348700f, + 1.977414657842711200f, 1.977357151159189400f, 1.977299571773897700f, + 1.977241919688953000f, + 1.977184194906475000f, 1.977126397428586000f, 1.977068527257411300f, + 1.977010584395078300f, + 1.976952568843717700f, 1.976894480605462500f, 1.976836319682448300f, + 1.976778086076813600f, + 1.976719779790699500f, 1.976661400826249500f, 1.976602949185610500f, + 1.976544424870931400f, + 1.976485827884363800f, 1.976427158228062100f, 1.976368415904183900f, + 1.976309600914888400f, + 1.976250713262338600f, 1.976191752948699200f, 1.976132719976138000f, + 1.976073614346825800f, + 1.976014436062935700f, 1.975955185126643300f, 1.975895861540127200f, + 1.975836465305568400f, + 1.975776996425151000f, 1.975717454901061400f, 1.975657840735488800f, + 1.975598153930624900f, + 1.975538394488664200f, 1.975478562411804100f, 1.975418657702244300f, + 1.975358680362187400f, + 1.975298630393838500f, 1.975238507799405500f, 1.975178312581099100f, + 1.975118044741132300f, + 1.975057704281721000f, 1.974997291205083700f, 1.974936805513442000f, + 1.974876247209019100f, + 1.974815616294042200f, 1.974754912770740200f, 1.974694136641345300f, + 1.974633287908091500f, + 1.974572366573216400f, 1.974511372638960000f, 1.974450306107564900f, + 1.974389166981275900f, + 1.974327955262341400f, 1.974266670953011400f, 1.974205314055540000f, + 1.974143884572182400f, + 1.974082382505197400f, 1.974020807856846400f, 1.973959160629393100f, + 1.973897440825104200f, + 1.973835648446248900f, 1.973773783495099500f, 1.973711845973930000f, + 1.973649835885018100f, + 1.973587753230643400f, 1.973525598013088800f, 1.973463370234639600f, + 1.973401069897583200f, + 1.973338697004211100f, 1.973276251556815600f, 1.973213733557693400f, + 1.973151143009142800f, + 1.973088479913465100f, 1.973025744272964200f, 1.972962936089946800f, + 1.972900055366722000f, + 1.972837102105601900f, 1.972774076308901200f, 1.972710977978936900f, + 1.972647807118029300f, + 1.972584563728500700f, 1.972521247812676600f, 1.972457859372884500f, + 1.972394398411455800f, + 1.972330864930723200f, 1.972267258933022600f, 1.972203580420693000f, + 1.972139829396075200f, + 1.972076005861513700f, 1.972012109819354600f, 1.971948141271947500f, + 1.971884100221644300f, + 1.971819986670799500f, 1.971755800621770400f, 1.971691542076916800f, + 1.971627211038601500f, + 1.971562807509189800f, 1.971498331491049700f, 1.971433782986551400f, + 1.971369161998068400f, + 1.971304468527976800f, 1.971239702578655000f, 1.971174864152484400f, + 1.971109953251848600f, + 1.971044969879134600f, 1.970979914036731500f, 1.970914785727030800f, + 1.970849584952427900f, + 1.970784311715319400f, 1.970718966018105500f, 1.970653547863188600f, + 1.970588057252973900f, + 1.970522494189869800f, 1.970456858676286300f, 1.970391150714636800f, + 1.970325370307337100f, + 1.970259517456806100f, 1.970193592165464700f, 1.970127594435737000f, + 1.970061524270049400f, + 1.969995381670831100f, 1.969929166640514100f, 1.969862879181532700f, + 1.969796519296324300f, + 1.969730086987328900f, 1.969663582256988600f, 1.969597005107748900f, + 1.969530355542057800f, + 1.969463633562365400f, 1.969396839171125200f, 1.969329972370792700f, + 1.969263033163826800f, + 1.969196021552688500f, 1.969128937539841500f, 1.969061781127752400f, + 1.968994552318890300f, + 1.968927251115727200f, 1.968859877520737300f, 1.968792431536398000f, + 1.968724913165188900f, + 1.968657322409592500f, 1.968589659272094000f, 1.968521923755181000f, + 1.968454115861344000f, + 1.968386235593076300f, 1.968318282952873600f, 1.968250257943234200f, + 1.968182160566659000f, + 1.968113990825652200f, 1.968045748722719900f, 1.967977434260371300f, + 1.967909047441118100f, + 1.967840588267474500f, 1.967772056741957900f, 1.967703452867087800f, + 1.967634776645386600f, + 1.967566028079379200f, 1.967497207171593500f, 1.967428313924559600f, + 1.967359348340810700f, + 1.967290310422882700f, 1.967221200173313400f, 1.967152017594644200f, + 1.967082762689418500f, + 1.967013435460182700f, 1.966944035909485600f, 1.966874564039879300f, + 1.966805019853917500f, + 1.966735403354157500f, 1.966665714543159000f, 1.966595953423483800f, + 1.966526119997697100f, + 1.966456214268366600f, 1.966386236238062200f, 1.966316185909357200f, + 1.966246063284826700f, + 1.966175868367049400f, 1.966105601158605600f, 1.966035261662079300f, + 1.965964849880056600f, + 1.965894365815126000f, 1.965823809469879400f, 1.965753180846910900f, + 1.965682479948817100f, + 1.965611706778197700f, 1.965540861337654600f, 1.965469943629792700f, + 1.965398953657219600f, + 1.965327891422544900f, 1.965256756928382100f, 1.965185550177345900f, + 1.965114271172054800f, + 1.965042919915129400f, 1.964971496409193100f, 1.964900000656872000f, + 1.964828432660794500f, + 1.964756792423592200f, 1.964685079947899200f, 1.964613295236352000f, + 1.964541438291590000f, + 1.964469509116255000f, 1.964397507712991800f, 1.964325434084447600f, + 1.964253288233272400f, + 1.964181070162119000f, 1.964108779873642100f, 1.964036417370500300f, + 1.963963982655353400f, + 1.963891475730865400f, 1.963818896599701400f, 1.963746245264530700f, + 1.963673521728023900f, + 1.963600725992855200f, 1.963527858061700600f, 1.963454917937239800f, + 1.963381905622154400f, + 1.963308821119128700f, 1.963235664430850200f, 1.963162435560008100f, + 1.963089134509295300f, + 1.963015761281406800f, 1.962942315879040000f, 1.962868798304895400f, + 1.962795208561676200f, + 1.962721546652088200f, 1.962647812578839400f, 1.962574006344640900f, + 1.962500127952206300f, + 1.962426177404252200f, 1.962352154703497200f, 1.962278059852663000f, + 1.962203892854473800f, + 1.962129653711656800f, 1.962055342426941400f, 1.961980959003059500f, + 1.961906503442746300f, + 1.961831975748739200f, 1.961757375923778700f, 1.961682703970607100f, + 1.961607959891970200f, + 1.961533143690616000f, 1.961458255369295400f, 1.961383294930761700f, + 1.961308262377770900f, + 1.961233157713082200f, 1.961157980939456400f, 1.961082732059657800f, + 1.961007411076453000f, + 1.960932017992611500f, 1.960856552810905200f, 1.960781015534108800f, + 1.960705406164999300f, + 1.960629724706357100f, 1.960553971160964500f, 1.960478145531606700f, + 1.960402247821071900f, + 1.960326278032150200f, 1.960250236167635100f, 1.960174122230322400f, + 1.960097936223010400f, + 1.960021678148500500f, 1.959945348009596500f, 1.959868945809104500f, + 1.959792471549834000f, + 1.959715925234596600f, 1.959639306866206600f, 1.959562616447480900f, + 1.959485853981239600f, + 1.959409019470304700f, 1.959332112917501400f, 1.959255134325657000f, + 1.959178083697602300f, + 1.959100961036169800f, 1.959023766344195200f, 1.958946499624516700f, + 1.958869160879975500f, + 1.958791750113414700f, 1.958714267327680500f, 1.958636712525621900f, + 1.958559085710090500f, + 1.958481386883940100f, 1.958403616050027600f, 1.958325773211212300f, + 1.958247858370356400f, + 1.958169871530324600f, 1.958091812693984400f, 1.958013681864205500f, + 1.957935479043860600f, + 1.957857204235825100f, 1.957778857442976900f, 1.957700438668196700f, + 1.957621947914367500f, + 1.957543385184375300f, 1.957464750481108700f, 1.957386043807458800f, + 1.957307265166319500f, + 1.957228414560587200f, 1.957149491993160900f, 1.957070497466942400f, + 1.956991430984836400f, + 1.956912292549749500f, 1.956833082164591600f, 1.956753799832275300f, + 1.956674445555715000f, + 1.956595019337829000f, 1.956515521181537000f, 1.956435951089762200f, + 1.956356309065430100f, + 1.956276595111468900f, 1.956196809230809500f, 1.956116951426385600f, + 1.956037021701132900f, + 1.955957020057990500f, 1.955876946499899700f, 1.955796801029804800f, + 1.955716583650652000f, + 1.955636294365391300f, 1.955555933176974300f, 1.955475500088355900f, + 1.955394995102493100f, + 1.955314418222346100f, 1.955233769450877200f, 1.955153048791052000f, + 1.955072256245838000f, + 1.954991391818206000f, 1.954910455511129000f, 1.954829447327582900f, + 1.954748367270545900f, + 1.954667215342999600f, 1.954585991547927100f, 1.954504695888315000f, + 1.954423328367152600f, + 1.954341888987431100f, 1.954260377752145000f, 1.954178794664291200f, + 1.954097139726869600f, + 1.954015412942881900f, 1.953933614315333200f, 1.953851743847231100f, + 1.953769801541585400f, + 1.953687787401409400f, 1.953605701429718100f, 1.953523543629529700f, + 1.953441314003864900f, + 1.953359012555747200f, 1.953276639288202400f, 1.953194194204259200f, + 1.953111677306948800f, + 1.953029088599305100f, 1.952946428084364900f, 1.952863695765167100f, + 1.952780891644753500f, + 1.952698015726169100f, 1.952615068012460300f, 1.952532048506677300f, + 1.952448957211872200f, + 1.952365794131100300f, 1.952282559267419100f, 1.952199252623889200f, + 1.952115874203572900f, + 1.952032424009536600f, 1.951948902044847900f, 1.951865308312577900f, + 1.951781642815800100f, + 1.951697905557590700f, 1.951614096541028500f, 1.951530215769194700f, + 1.951446263245173500f, + 1.951362238972051500f, 1.951278142952918200f, 1.951193975190865600f, + 1.951109735688987900f, + 1.951025424450382900f, 1.950941041478150100f, 1.950856586775392200f, + 1.950772060345214300f, + 1.950687462190724200f, 1.950602792315032200f, 1.950518050721251600f, + 1.950433237412498000f, + 1.950348352391889600f, 1.950263395662547700f, 1.950178367227595900f, + 1.950093267090159800f, + 1.950008095253369200f, 1.949922851720355100f, 1.949837536494251700f, + 1.949752149578196000f, + 1.949666690975327100f, 1.949581160688787400f, 1.949495558721721500f, + 1.949409885077276500f, + 1.949324139758602700f, 1.949238322768852800f, 1.949152434111181700f, + 1.949066473788747300f, + 1.948980441804710300f, 1.948894338162233900f, 1.948808162864483600f, + 1.948721915914628100f, + 1.948635597315838200f, 1.948549207071288000f, 1.948462745184153400f, + 1.948376211657613500f, + 1.948289606494849800f, 1.948202929699046800f, 1.948116181273391100f, + 1.948029361221072400f, + 1.947942469545282500f, 1.947855506249216700f, 1.947768471336071700f, + 1.947681364809048100f, + 1.947594186671348000f, 1.947506936926177300f, 1.947419615576743600f, + 1.947332222626257500f, + 1.947244758077932200f, 1.947157221934983500f, 1.947069614200629900f, + 1.946981934878092300f, + 1.946894183970594900f, 1.946806361481363500f, 1.946718467413627300f, + 1.946630501770618000f, + 1.946542464555569800f, 1.946454355771719300f, 1.946366175422306500f, + 1.946277923510573200f, + 1.946189600039764300f, 1.946101205013127000f, 1.946012738433911600f, + 1.945924200305370700f, + 1.945835590630759400f, 1.945746909413335900f, 1.945658156656360700f, + 1.945569332363096700f, + 1.945480436536810100f, 1.945391469180769200f, 1.945302430298244900f, + 1.945213319892511200f, + 1.945124137966844200f, 1.945034884524523100f, 1.944945559568829200f, + 1.944856163103046800f, + 1.944766695130463000f, 1.944677155654366900f, 1.944587544678050900f, + 1.944497862204809900f, + 1.944408108237940700f, 1.944318282780743900f, 1.944228385836521700f, + 1.944138417408579400f, + 1.944048377500225100f, 1.943958266114769200f, 1.943868083255524800f, + 1.943777828925807600f, + 1.943687503128936200f, 1.943597105868231500f, 1.943506637147017300f, + 1.943416096968619400f, + 1.943325485336367300f, 1.943234802253592400f, 1.943144047723628400f, + 1.943053221749812400f, + 1.942962324335484100f, 1.942871355483985200f, 1.942780315198660200f, + 1.942689203482856900f, + 1.942598020339924700f, 1.942506765773216500f, 1.942415439786087300f, + 1.942324042381895000f, + 1.942232573564000000f, 1.942141033335765400f, 1.942049421700556600f, + 1.941957738661741900f, + 1.941865984222692900f, 1.941774158386782200f, 1.941682261157386700f, + 1.941590292537884700f, + 1.941498252531658200f, 1.941406141142090600f, 1.941313958372568900f, + 1.941221704226482500f, + 1.941129378707223000f, 1.941036981818185400f, 1.940944513562766300f, + 1.940851973944365900f, + 1.940759362966386600f, 1.940666680632233200f, 1.940573926945313700f, + 1.940481101909038200f, + 1.940388205526819600f, 1.940295237802073500f, 1.940202198738217900f, + 1.940109088338673600f, + 1.940015906606864300f, 1.939922653546215500f, 1.939829329160156500f, + 1.939735933452118000f, + 1.939642466425534300f, 1.939548928083841800f, 1.939455318430479500f, + 1.939361637468889100f, + 1.939267885202515400f, 1.939174061634805000f, 1.939080166769207700f, + 1.938986200609175600f, + 1.938892163158163700f, 1.938798054419629500f, 1.938703874397032800f, + 1.938609623093837000f, + 1.938515300513506700f, 1.938420906659510600f, 1.938326441535318500f, + 1.938231905144404400f, + 1.938137297490243500f, 1.938042618576314400f, 1.937947868406098500f, + 1.937853046983079300f, + 1.937758154310742900f, 1.937663190392578500f, 1.937568155232077600f, + 1.937473048832734500f, + 1.937377871198045600f, 1.937282622331510500f, 1.937187302236631500f, + 1.937091910916912900f, + 1.936996448375861900f, 1.936900914616988900f, 1.936805309643805800f, + 1.936709633459828200f, + 1.936613886068573500f, 1.936518067473562300f, 1.936422177678317300f, + 1.936326216686364400f, + 1.936230184501231500f, 1.936134081126449800f, 1.936037906565552400f, + 1.935941660822075600f, + 1.935845343899558000f, 1.935748955801540800f, 1.935652496531568000f, + 1.935555966093186300f, + 1.935459364489944500f, 1.935362691725394500f, 1.935265947803090900f, + 1.935169132726590500f, + 1.935072246499453000f, 1.934975289125240500f, 1.934878260607517900f, + 1.934781160949852600f, + 1.934683990155814800f, 1.934586748228977100f, 1.934489435172914900f, + 1.934392050991206300f, + 1.934294595687431300f, 1.934197069265173500f, 1.934099471728018700f, + 1.934001803079554700f, + 1.933904063323373300f, 1.933806252463067500f, 1.933708370502233800f, + 1.933610417444471000f, + 1.933512393293380600f, 1.933414298052566600f, 1.933316131725635800f, + 1.933217894316197300f, + 1.933119585827862900f, 1.933021206264247600f, 1.932922755628968100f, + 1.932824233925644300f, + 1.932725641157898600f, 1.932626977329356100f, 1.932528242443643900f, + 1.932429436504392800f, + 1.932330559515235100f, 1.932231611479806800f, 1.932132592401745400f, + 1.932033502284691700f, + 1.931934341132289100f, 1.931835108948183300f, 1.931735805736022800f, + 1.931636431499459000f, + 1.931536986242145200f, 1.931437469967737900f, 1.931337882679895900f, + 1.931238224382281000f, + 1.931138495078557300f, 1.931038694772391200f, 1.930938823467452500f, + 1.930838881167413100f, + 1.930738867875947400f, 1.930638783596732700f, 1.930538628333448900f, + 1.930438402089778200f, + 1.930338104869405900f, 1.930237736676019500f, 1.930137297513309300f, + 1.930036787384968200f, + 1.929936206294691400f, 1.929835554246177400f, 1.929734831243126600f, + 1.929634037289242400f, + 1.929533172388230700f, 1.929432236543799900f, 1.929331229759661200f, + 1.929230152039528500f, + 1.929129003387117800f, 1.929027783806148300f, 1.928926493300341400f, + 1.928825131873421500f, + 1.928723699529115000f, 1.928622196271151800f, 1.928520622103263400f, + 1.928418977029184600f, + 1.928317261052652700f, 1.928215474177407100f, 1.928113616407190600f, + 1.928011687745748300f, + 1.927909688196827400f, 1.927807617764178300f, 1.927705476451554000f, + 1.927603264262709900f, + 1.927500981201404100f, 1.927398627271397000f, 1.927296202476451900f, + 1.927193706820335100f, + 1.927091140306814500f, 1.926988502939661400f, 1.926885794722649600f, + 1.926783015659555300f, + 1.926680165754157500f, 1.926577245010237400f, 1.926474253431579500f, + 1.926371191021970100f, + 1.926268057785198700f, 1.926164853725057300f, 1.926061578845340600f, + 1.925958233149845000f, + 1.925854816642371000f, 1.925751329326720600f, 1.925647771206698600f, + 1.925544142286112800f, + 1.925440442568773000f, 1.925336672058492300f, 1.925232830759086000f, + 1.925128918674371900f, + 1.925024935808170600f, 1.924920882164305300f, 1.924816757746601800f, + 1.924712562558888100f, + 1.924608296604995800f, 1.924503959888757900f, 1.924399552414010700f, + 1.924295074184593000f, + 1.924190525204346300f, 1.924085905477114400f, 1.923981215006744100f, + 1.923876453797084300f, + 1.923771621851986700f, 1.923666719175306100f, 1.923561745770898900f, + 1.923456701642625200f, + 1.923351586794346900f, 1.923246401229928600f, 1.923141144953238300f, + 1.923035817968145300f, + 1.922930420278522500f, 1.922824951888245000f, 1.922719412801190600f, + 1.922613803021239600f, + 1.922508122552275100f, 1.922402371398182600f, 1.922296549562850100f, + 1.922190657050168800f, + 1.922084693864031700f, 1.921978660008334600f, 1.921872555486976700f, + 1.921766380303858500f, + 1.921660134462884100f, 1.921553817967959900f, 1.921447430822994500f, + 1.921340973031900000f, + 1.921234444598590100f, 1.921127845526981600f, 1.921021175820994100f, + 1.920914435484549100f, + 1.920807624521571700f, 1.920700742935988600f, 1.920593790731729600f, + 1.920486767912727300f, + 1.920379674482916500f, 1.920272510446234400f, 1.920165275806621400f, + 1.920057970568020100f, + 1.919950594734376000f, 1.919843148309637000f, 1.919735631297753400f, + 1.919628043702678300f, + 1.919520385528367300f, 1.919412656778779000f, 1.919304857457874200f, + 1.919196987569616200f, + 1.919089047117971100f, 1.918981036106907700f, 1.918872954540397300f, + 1.918764802422413500f, + 1.918656579756932800f, 1.918548286547934400f, 1.918439922799399800f, + 1.918331488515313300f, + 1.918222983699661600f, 1.918114408356434300f, 1.918005762489623400f, + 1.917897046103223200f, + 1.917788259201231200f, 1.917679401787647100f, 1.917570473866473200f, + 1.917461475441714500f, + 1.917352406517378600f, 1.917243267097475700f, 1.917134057186018300f, + 1.917024776787022100f, + 1.916915425904504700f, 1.916806004542486800f, 1.916696512704991500f, + 1.916586950396044400f, + 1.916477317619674100f, 1.916367614379911100f, 1.916257840680788900f, + 1.916147996526343700f, + 1.916038081920614400f, 1.915928096867641800f, 1.915818041371470000f, + 1.915707915436145200f, + 1.915597719065716700f, 1.915487452264236000f, 1.915377115035757200f, + 1.915266707384337200f, + 1.915156229314035200f, 1.915045680828913400f, 1.914935061933036300f, + 1.914824372630470800f, + 1.914713612925287100f, 1.914602782821557000f, 1.914491882323355700f, + 1.914380911434760500f, + 1.914269870159851700f, 1.914158758502712000f, 1.914047576467426500f, + 1.913936324058083100f, + 1.913825001278772100f, 1.913713608133586600f, 1.913602144626622500f, + 1.913490610761977600f, + 1.913379006543752800f, 1.913267331976051400f, 1.913155587062979500f, + 1.913043771808645700f, + 1.912931886217160900f, 1.912819930292639000f, 1.912707904039196300f, + 1.912595807460951500f, + 1.912483640562026200f, 1.912371403346544400f, 1.912259095818632700f, + 1.912146717982420500f, + 1.912034269842039600f, 1.911921751401624200f, 1.911809162665311500f, + 1.911696503637241100f, + 1.911583774321554700f, 1.911470974722397500f, 1.911358104843916500f, + 1.911245164690262000f, + 1.911132154265586100f, 1.911019073574044200f, 1.910905922619793800f, + 1.910792701406995000f, + 1.910679409939810600f, 1.910566048222406300f, 1.910452616258949900f, + 1.910339114053611900f, + 1.910225541610565800f, 1.910111898933986900f, 1.909998186028053700f, + 1.909884402896947100f, + 1.909770549544850500f, 1.909656625975950200f, 1.909542632194434700f, + 1.909428568204495100f, + 1.909314434010325400f, 1.909200229616121700f, 1.909085955026083200f, + 1.908971610244411600f, + 1.908857195275310800f, 1.908742710122987700f, 1.908628154791651300f, + 1.908513529285513500f, + 1.908398833608789100f, 1.908284067765694900f, 1.908169231760450400f, + 1.908054325597278200f, + 1.907939349280402400f, 1.907824302814050900f, 1.907709186202453600f, + 1.907593999449842800f, + 1.907478742560453600f, 1.907363415538523700f, 1.907248018388293400f, + 1.907132551114005600f, + 1.907017013719905600f, 1.906901406210241200f, 1.906785728589263300f, + 1.906669980861224900f, + 1.906554163030381500f, 1.906438275100991600f, 1.906322317077316300f, + 1.906206288963618700f, + 1.906090190764164700f, 1.905974022483223300f, 1.905857784125065500f, + 1.905741475693964800f, + 1.905625097194197900f, 1.905508648630043700f, 1.905392130005783400f, + 1.905275541325701400f, + 1.905158882594083900f, 1.905042153815220700f, 1.904925354993402900f, + 1.904808486132925300f, + 1.904691547238084800f, 1.904574538313180700f, 1.904457459362515200f, + 1.904340310390393100f, + 1.904223091401121600f, 1.904105802399010300f, 1.903988443388371600f, + 1.903871014373520700f, + 1.903753515358774800f, 1.903635946348454500f, 1.903518307346881800f, + 1.903400598358382600f, + 1.903282819387284200f, 1.903164970437917400f, 1.903047051514615000f, + 1.902929062621712600f, + 1.902811003763547900f, 1.902692874944462300f, 1.902574676168798700f, + 1.902456407440902700f, + 1.902338068765123200f, 1.902219660145810800f, 1.902101181587319000f, + 1.901982633094004200f, + 1.901864014670225000f, 1.901745326320342500f, 1.901626568048721000f, + 1.901507739859726200f, + 1.901388841757727600f, 1.901269873747096600f, 1.901150835832207100f, + 1.901031728017436300f, + 1.900912550307162700f, 1.900793302705768900f, 1.900673985217638900f, + 1.900554597847159400f, + 1.900435140598720500f, 1.900315613476714100f, 1.900196016485534700f, + 1.900076349629579600f, + 1.899956612913248800f, 1.899836806340944300f, 1.899716929917071500f, + 1.899596983646037600f, + 1.899476967532252900f, 1.899356881580129800f, 1.899236725794083600f, + 1.899116500178532200f, + 1.898996204737895900f, 1.898875839476597700f, 1.898755404399062900f, + 1.898634899509719500f, + 1.898514324812998300f, 1.898393680313332600f, 1.898272966015157800f, + 1.898152181922912600f, + 1.898031328041037700f, 1.897910404373976500f, 1.897789410926175000f, + 1.897668347702081900f, + 1.897547214706148300f, 1.897426011942827900f, 1.897304739416577200f, + 1.897183397131854600f, + 1.897061985093121800f, 1.896940503304842800f, 1.896818951771484000f, + 1.896697330497514800f, + 1.896575639487406300f, 1.896453878745633100f, 1.896332048276672100f, + 1.896210148085002400f, + 1.896088178175106200f, 1.895966138551467700f, 1.895844029218574100f, + 1.895721850180915000f, + 1.895599601442982600f, 1.895477283009271400f, 1.895354894884279100f, + 1.895232437072505300f, + 1.895109909578452500f, 1.894987312406625700f, 1.894864645561532100f, + 1.894741909047682500f, + 1.894619102869589100f, 1.894496227031767100f, 1.894373281538734400f, + 1.894250266395011600f, + 1.894127181605121100f, 1.894004027173588700f, 1.893880803104942600f, + 1.893757509403713100f, + 1.893634146074433500f, 1.893510713121639300f, 1.893387210549869000f, + 1.893263638363663400f, + 1.893139996567565900f, 1.893016285166122500f, 1.892892504163881600f, + 1.892768653565394300f, + 1.892644733375214300f, 1.892520743597897700f, 1.892396684238003300f, + 1.892272555300092300f, + 1.892148356788728700f, 1.892024088708479200f, 1.891899751063912200f, + 1.891775343859599400f, + 1.891650867100115300f, 1.891526320790036100f, 1.891401704933941100f, + 1.891277019536412400f, + 1.891152264602033800f, 1.891027440135392600f, 1.890902546141078000f, + 1.890777582623682300f, + 1.890652549587799700f, 1.890527447038027300f, 1.890402274978965100f, + 1.890277033415215200f, + 1.890151722351382200f, 1.890026341792073500f, 1.889900891741899100f, + 1.889775372205471300f, + 1.889649783187405100f, 1.889524124692318200f, 1.889398396724830500f, + 1.889272599289564900f, + 1.889146732391146400f, 1.889020796034202700f, 1.888894790223364600f, + 1.888768714963264400f, + 1.888642570258537700f, 1.888516356113822700f, 1.888390072533759700f, + 1.888263719522991900f, + 1.888137297086165000f, 1.888010805227927000f, 1.887884243952928600f, + 1.887757613265823400f, + 1.887630913171267000f, 1.887504143673917700f, 1.887377304778437000f, + 1.887250396489487800f, + 1.887123418811736500f, 1.886996371749851700f, 1.886869255308504200f, + 1.886742069492368000f, + 1.886614814306119400f, 1.886487489754437300f, 1.886360095842002600f, + 1.886232632573499700f, + 1.886105099953614900f, 1.885977497987037000f, 1.885849826678457800f, + 1.885722086032571200f, + 1.885594276054074300f, 1.885466396747665700f, 1.885338448118047700f, + 1.885210430169924200f, + 1.885082342908002400f, 1.884954186336991400f, 1.884825960461603100f, + 1.884697665286552400f, + 1.884569300816556000f, 1.884440867056333700f, 1.884312364010607600f, + 1.884183791684102400f, + 1.884055150081545200f, 1.883926439207665800f, 1.883797659067196800f, + 1.883668809664872600f, + 1.883539891005431100f, 1.883410903093611900f, 1.883281845934157800f, + 1.883152719531813800f, + 1.883023523891327300f, 1.882894259017448900f, 1.882764924914930700f, + 1.882635521588528400f, + 1.882506049042999700f, 1.882376507283104900f, 1.882246896313606800f, + 1.882117216139270700f, + 1.881987466764865100f, 1.881857648195159900f, 1.881727760434928500f, + 1.881597803488946500f, + 1.881467777361992100f, 1.881337682058845700f, 1.881207517584290600f, + 1.881077283943112900f, + 1.880946981140100500f, 1.880816609180044700f, 1.880686168067738500f, + 1.880555657807977800f, + 1.880425078405561600f, 1.880294429865290600f, 1.880163712191968300f, + 1.880032925390400900f, + 1.879902069465397200f, 1.879771144421768200f, 1.879640150264327600f, + 1.879509086997891900f, + 1.879377954627279700f, 1.879246753157312700f, 1.879115482592814500f, + 1.878984142938611600f, + 1.878852734199532900f, 1.878721256380410100f, 1.878589709486077300f, + 1.878458093521370800f, + 1.878326408491130200f, 1.878194654400196600f, 1.878062831253414900f, + 1.877930939055631100f, + 1.877798977811695200f, 1.877666947526458700f, 1.877534848204775800f, + 1.877402679851504000f, + 1.877270442471502100f, 1.877138136069632400f, 1.877005760650759500f, + 1.876873316219750200f, + 1.876740802781474500f, 1.876608220340804100f, 1.876475568902614000f, + 1.876342848471781200f, + 1.876210059053185600f, 1.876077200651709500f, 1.875944273272237800f, + 1.875811276919657500f, + 1.875678211598858800f, 1.875545077314734000f, 1.875411874072178100f, + 1.875278601876088700f, + 1.875145260731365700f, 1.875011850642911600f, 1.874878371615631900f, + 1.874744823654434000f, + 1.874611206764227800f, 1.874477520949926500f, 1.874343766216444800f, + 1.874209942568701100f, + 1.874076050011615400f, 1.873942088550110400f, 1.873808058189111700f, + 1.873673958933546900f, + 1.873539790788347100f, 1.873405553758444600f, 1.873271247848775400f, + 1.873136873064277000f, + 1.873002429409890600f, 1.872867916890558900f, 1.872733335511227700f, + 1.872598685276845000f, + 1.872463966192361900f, 1.872329178262731200f, 1.872194321492908700f, + 1.872059395887852900f, + 1.871924401452524700f, 1.871789338191887100f, 1.871654206110906500f, + 1.871519005214550700f, + 1.871383735507791100f, 1.871248396995601300f, 1.871112989682956800f, + 1.870977513574836500f, + 1.870841968676221400f, 1.870706354992095000f, 1.870570672527443600f, + 1.870434921287255700f, + 1.870299101276522400f, 1.870163212500237900f, 1.870027254963397800f, + 1.869891228671001200f, + 1.869755133628049600f, 1.869618969839546500f, 1.869482737310498100f, + 1.869346436045913800f, + 1.869210066050804600f, 1.869073627330184700f, 1.868937119889070300f, + 1.868800543732480600f, + 1.868663898865437200f, 1.868527185292963700f, 1.868390403020087100f, + 1.868253552051836200f, + 1.868116632393243000f, 1.867979644049341200f, 1.867842587025167800f, + 1.867705461325761800f, + 1.867568266956164800f, 1.867431003921421500f, 1.867293672226578300f, + 1.867156271876684500f, + 1.867018802876792200f, 1.866881265231955500f, 1.866743658947231300f, + 1.866605984027679000f, + 1.866468240478360600f, 1.866330428304340300f, 1.866192547510685300f, + 1.866054598102465000f, + 1.865916580084751500f, 1.865778493462619100f, 1.865640338241145100f, + 1.865502114425408900f, + 1.865363822020492700f, 1.865225461031480900f, 1.865087031463460900f, + 1.864948533321522300f, + 1.864809966610757400f, 1.864671331336260600f, 1.864532627503129100f, + 1.864393855116463200f, + 1.864255014181364500f, 1.864116104702938000f, 1.863977126686291200f, + 1.863838080136534000f, + 1.863698965058778300f, 1.863559781458139300f, 1.863420529339734100f, + 1.863281208708683000f, + 1.863141819570107900f, 1.863002361929134500f, 1.862862835790889400f, + 1.862723241160503300f, + 1.862583578043108100f, 1.862443846443839300f, 1.862304046367834200f, + 1.862164177820232700f, + 1.862024240806177800f, 1.861884235330814300f, 1.861744161399289600f, + 1.861604019016754200f, + 1.861463808188360500f, 1.861323528919263800f, 1.861183181214621600f, + 1.861042765079594200f, + 1.860902280519344500f, 1.860761727539037300f, 1.860621106143840500f, + 1.860480416338924600f, + 1.860339658129461800f, 1.860198831520627900f, 1.860057936517600700f, + 1.859916973125560000f, + 1.859775941349689000f, 1.859634841195173100f, 1.859493672667199800f, + 1.859352435770959900f, + 1.859211130511645900f, 1.859069756894453400f, 1.858928314924580300f, + 1.858786804607227100f, + 1.858645225947596300f, 1.858503578950893900f, 1.858361863622327400f, + 1.858220079967107600f, + 1.858078227990447300f, 1.857936307697561900f, 1.857794319093669900f, + 1.857652262183991000f, + 1.857510136973749000f, 1.857367943468169100f, 1.857225681672479300f, + 1.857083351591910300f, + 1.856940953231694900f, 1.856798486597069000f, 1.856655951693270600f, + 1.856513348525540300f, + 1.856370677099121100f, 1.856227937419258700f, 1.856085129491201100f, + 1.855942253320199200f, + 1.855799308911506100f, 1.855656296270377300f, 1.855513215402071000f, + 1.855370066311848000f, + 1.855226849004971500f, 1.855083563486706900f, 1.854940209762322700f, + 1.854796787837089500f, + 1.854653297716280400f, 1.854509739405171300f, 1.854366112909040300f, + 1.854222418233168400f, + 1.854078655382838300f, 1.853934824363336200f, 1.853790925179950500f, + 1.853646957837971500f, + 1.853502922342692600f, 1.853358818699409900f, 1.853214646913421200f, + 1.853070406990027500f, + 1.852926098934532200f, 1.852781722752241000f, 1.852637278448462200f, + 1.852492766028506400f, + 1.852348185497687300f, 1.852203536861320600f, 1.852058820124724300f, + 1.851914035293219700f, + 1.851769182372129600f, 1.851624261366780400f, 1.851479272282500000f, + 1.851334215124619300f, + 1.851189089898471800f, 1.851043896609393400f, 1.850898635262721900f, + 1.850753305863798800f, + 1.850607908417967200f, 1.850462442930572900f, 1.850316909406964200f, + 1.850171307852492200f, + 1.850025638272510000f, 1.849879900672373600f, 1.849734095057441200f, + 1.849588221433073700f, + 1.849442279804634600f, 1.849296270177489800f, 1.849150192557007300f, + 1.849004046948558200f, + 1.848857833357515900f, 1.848711551789256300f, 1.848565202249157400f, + 1.848418784742600400f, + 1.848272299274968500f, 1.848125745851647800f, 1.847979124478026100f, + 1.847832435159495000f, + 1.847685677901447200f, 1.847538852709279100f, 1.847391959588388300f, + 1.847244998544176300f, + 1.847097969582046200f, 1.846950872707404000f, 1.846803707925657600f, + 1.846656475242218300f, + 1.846509174662499300f, 1.846361806191916000f, 1.846214369835887500f, + 1.846066865599834000f, + 1.845919293489179000f, 1.845771653509348200f, 1.845623945665770100f, + 1.845476169963875500f, + 1.845328326409097400f, 1.845180415006871800f, 1.845032435762637100f, + 1.844884388681833800f, + 1.844736273769905300f, 1.844588091032297400f, 1.844439840474458200f, + 1.844291522101838800f, + 1.844143135919891900f, 1.843994681934073600f, 1.843846160149842200f, + 1.843697570572658200f, + 1.843548913207985000f, 1.843400188061288000f, 1.843251395138035800f, + 1.843102534443698900f, + 1.842953605983750400f, 1.842804609763666100f, 1.842655545788924000f, + 1.842506414065004900f, + 1.842357214597392100f, 1.842207947391570900f, 1.842058612453029600f, + 1.841909209787258900f, + 1.841759739399751800f, 1.841610201296003800f, 1.841460595481513100f, + 1.841310921961780500f, + 1.841161180742308500f, 1.841011371828603200f, 1.840861495226172600f, + 1.840711550940526700f, + 1.840561538977179200f, 1.840411459341645400f, 1.840261312039443100f, + 1.840111097076092800f, + 1.839960814457117600f, 1.839810464188043100f, 1.839660046274397100f, + 1.839509560721709800f, + 1.839359007535514400f, 1.839208386721346500f, 1.839057698284743500f, + 1.838906942231246100f, + 1.838756118566397200f, 1.838605227295741800f, 1.838454268424828400f, + 1.838303241959206700f, + 1.838152147904429800f, 1.838000986266052900f, 1.837849757049633900f, + 1.837698460260732900f, + 1.837547095904912700f, 1.837395663987738700f, 1.837244164514778600f, + 1.837092597491602100f, + 1.836940962923782700f, 1.836789260816895000f, 1.836637491176516600f, + 1.836485654008228200f, + 1.836333749317611700f, 1.836181777110252900f, 1.836029737391738700f, + 1.835877630167659800f, + 1.835725455443608200f, 1.835573213225179400f, 1.835420903517970500f, + 1.835268526327581900f, + 1.835116081659615700f, 1.834963569519677100f, 1.834810989913373500f, + 1.834658342846314800f, + 1.834505628324113200f, 1.834352846352383700f, 1.834199996936744000f, + 1.834047080082813300f, + 1.833894095796214400f, 1.833741044082571900f, 1.833587924947513100f, + 1.833434738396668000f, + 1.833281484435668400f, 1.833128163070149300f, 1.832974774305747600f, + 1.832821318148103500f, + 1.832667794602858400f, 1.832514203675657600f, 1.832360545372147900f, + 1.832206819697979000f, + 1.832053026658802700f, 1.831899166260273700f, 1.831745238508049300f, + 1.831591243407788300f, + 1.831437180965153100f, 1.831283051185808300f, 1.831128854075420500f, + 1.830974589639659000f, + 1.830820257884196100f, 1.830665858814705600f, 1.830511392436864800f, + 1.830356858756352800f, + 1.830202257778851300f, 1.830047589510044500f, 1.829892853955619200f, + 1.829738051121264600f, + 1.829583181012672400f, 1.829428243635536500f, 1.829273238995553700f, + 1.829118167098423100f, + 1.828963027949846100f, 1.828807821555527000f, 1.828652547921171900f, + 1.828497207052490100f, + 1.828341798955192900f, 1.828186323634994200f, 1.828030781097610400f, + 1.827875171348760400f, + 1.827719494394165500f, 1.827563750239549400f, 1.827407938890638600f, + 1.827252060353161500f, + 1.827096114632849700f, 1.826940101735436500f, 1.826784021666658400f, + 1.826627874432253700f, + 1.826471660037963800f, 1.826315378489531800f, 1.826159029792704400f, + 1.826002613953229500f, + 1.825846130976858100f, 1.825689580869344100f, 1.825532963636443000f, + 1.825376279283913200f, + 1.825219527817515800f, 1.825062709243013800f, 1.824905823566173000f, + 1.824748870792761900f, + 1.824591850928550800f, 1.824434763979313300f, 1.824277609950824700f, + 1.824120388848863300f, + 1.823963100679209600f, 1.823805745447646600f, 1.823648323159960100f, + 1.823490833821937600f, + 1.823333277439369600f, 1.823175654018049300f, 1.823017963563772000f, + 1.822860206082335300f, + 1.822702381579539800f, 1.822544490061187800f, 1.822386531533084900f, + 1.822228506001038800f, + 1.822070413470859600f, 1.821912253948359700f, 1.821754027439354400f, + 1.821595733949661100f, + 1.821437373485099900f, 1.821278946051493100f, 1.821120451654665700f, + 1.820961890300445400f, + 1.820803261994661500f, 1.820644566743146800f, 1.820485804551735800f, + 1.820326975426265600f, + 1.820168079372576300f, 1.820009116396509800f, 1.819850086503910700f, + 1.819690989700625900f, + 1.819531825992505500f, 1.819372595385401000f, 1.819213297885166900f, + 1.819053933497660300f, + 1.818894502228740600f, 1.818735004084269600f, 1.818575439070111200f, + 1.818415807192132600f, + 1.818256108456203000f, 1.818096342868193800f, 1.817936510433979300f, + 1.817776611159436000f, + 1.817616645050443000f, 1.817456612112881900f, 1.817296512352636300f, + 1.817136345775592900f, + 1.816976112387640700f, 1.816815812194670700f, 1.816655445202576700f, + 1.816495011417255300f, + 1.816334510844604700f, 1.816173943490526400f, 1.816013309360923900f, + 1.815852608461703300f, + 1.815691840798773000f, 1.815531006378043900f, 1.815370105205429600f, + 1.815209137286846200f, + 1.815048102628211500f, 1.814887001235446600f, 1.814725833114474700f, + 1.814564598271221300f, + 1.814403296711615000f, 1.814241928441585800f, 1.814080493467067300f, + 1.813918991793994900f, + 1.813757423428306000f, 1.813595788375941700f, 1.813434086642844400f, + 1.813272318234959700f, + 1.813110483158235400f, 1.812948581418621500f, 1.812786613022070700f, + 1.812624577974538000f, + 1.812462476281981200f, 1.812300307950360300f, 1.812138072985637800f, + 1.811975771393778300f, + 1.811813403180749300f, 1.811650968352521000f, 1.811488466915065000f, + 1.811325898874356800f, + 1.811163264236372900f, 1.811000563007093100f, 1.810837795192499400f, + 1.810674960798576600f, + 1.810512059831311400f, 1.810349092296693400f, 1.810186058200714100f, + 1.810022957549368000f, + 1.809859790348652200f, 1.809696556604565300f, 1.809533256323109200f, + 1.809369889510288100f, + 1.809206456172108200f, 1.809042956314578900f, 1.808879389943711200f, + 1.808715757065519200f, + 1.808552057686019200f, 1.808388291811230000f, 1.808224459447172800f, + 1.808060560599871200f, + 1.807896595275351200f, 1.807732563479641300f, 1.807568465218772900f, + 1.807404300498778800f, + 1.807240069325695400f, 1.807075771705560800f, 1.806911407644415700f, + 1.806746977148303300f, + 1.806582480223269500f, 1.806417916875362000f, 1.806253287110631600f, + 1.806088590935131000f, + 1.805923828354915900f, 1.805758999376044100f, 1.805594104004575800f, + 1.805429142246573600f, + 1.805264114108102900f, 1.805099019595231200f, 1.804933858714028700f, + 1.804768631470567500f, + 1.804603337870923000f, 1.804437977921172300f, 1.804272551627395400f, + 1.804107058995674500f, + 1.803941500032094200f, 1.803775874742741500f, 1.803610183133706400f, + 1.803444425211080400f, + 1.803278600980958300f, 1.803112710449436900f, 1.802946753622615400f, + 1.802780730506595700f, + 1.802614641107481900f, 1.802448485431380900f, 1.802282263484401300f, + 1.802115975272655000f, + 1.801949620802255600f, 1.801783200079319900f, 1.801616713109966300f, + 1.801450159900316300f, + 1.801283540456493700f, 1.801116854784624400f, 1.800950102890836800f, + 1.800783284781262200f, + 1.800616400462033800f, 1.800449449939287800f, 1.800282433219162000f, + 1.800115350307797600f, + 1.799948201211337500f, 1.799780985935927300f, 1.799613704487715200f, + 1.799446356872851400f, + 1.799278943097489100f, 1.799111463167783400f, 1.798943917089892000f, + 1.798776304869975200f, + 1.798608626514195800f, 1.798440882028718500f, 1.798273071419711000f, + 1.798105194693343500f, + 1.797937251855787700f, 1.797769242913218800f, 1.797601167871813800f, + 1.797433026737752700f, + 1.797264819517217200f, 1.797096546216391900f, 1.796928206841463800f, + 1.796759801398622100f, + 1.796591329894058800f, 1.796422792333968000f, 1.796254188724546500f, + 1.796085519071992900f, + 1.795916783382509200f, 1.795747981662299200f, 1.795579113917569200f, + 1.795410180154527900f, + 1.795241180379386800f, 1.795072114598359200f, 1.794902982817661500f, + 1.794733785043511900f, + 1.794564521282131300f, 1.794395191539743400f, 1.794225795822573600f, + 1.794056334136850300f, + 1.793886806488804100f, 1.793717212884667900f, 1.793547553330677300f, + 1.793377827833070100f, + 1.793208036398086900f, 1.793038179031970000f, 1.792868255740965000f, + 1.792698266531319400f, + 1.792528211409282900f, 1.792358090381108300f, 1.792187903453050100f, + 1.792017650631366100f, + 1.791847331922315600f, 1.791676947332161000f, 1.791506496867166600f, + 1.791335980533599300f, + 1.791165398337728900f, 1.790994750285827000f, 1.790824036384167900f, + 1.790653256639028100f, + 1.790482411056686800f, 1.790311499643425500f, 1.790140522405528200f, + 1.789969479349281100f, + 1.789798370480973000f, 1.789627195806895200f, 1.789455955333341100f, + 1.789284649066606800f, + 1.789113277012990900f, 1.788941839178794100f, 1.788770335570319700f, + 1.788598766193873600f, + 1.788427131055763600f, 1.788255430162300400f, 1.788083663519796800f, + 1.787911831134568300f, + 1.787739933012932900f, 1.787567969161210300f, 1.787395939585723500f, + 1.787223844292797500f, + 1.787051683288759500f, 1.786879456579939700f, 1.786707164172670200f, + 1.786534806073285700f, + 1.786362382288123400f, 1.786189892823522700f, 1.786017337685825700f, + 1.785844716881376700f, + 1.785672030416522300f, 1.785499278297612000f, 1.785326460530997300f, + 1.785153577123032000f, + 1.784980628080072900f, 1.784807613408478300f, 1.784634533114609800f, + 1.784461387204831400f, + 1.784288175685508700f, 1.784114898563010200f, 1.783941555843707100f, + 1.783768147533972200f, + 1.783594673640181800f, 1.783421134168713800f, 1.783247529125948900f, + 1.783073858518269700f, + 1.782900122352062000f, 1.782726320633713200f, 1.782552453369613800f, + 1.782378520566156200f, + 1.782204522229735600f, 1.782030458366749200f, 1.781856328983596900f, + 1.781682134086680900f, + 1.781507873682406200f, 1.781333547777179200f, 1.781159156377410100f, + 1.780984699489510200f, + 1.780810177119894100f, 1.780635589274978600f, 1.780460935961182300f, + 1.780286217184927000f, + 1.780111432952636600f, 1.779936583270737400f, 1.779761668145658300f, + 1.779586687583830200f, + 1.779411641591686500f, 1.779236530175663600f, 1.779061353342199500f, + 1.778886111097735000f, + 1.778710803448713400f, 1.778535430401580100f, 1.778359991962783000f, + 1.778184488138772900f, + 1.778008918936002000f, 1.777833284360925900f, 1.777657584420002000f, + 1.777481819119690200f, + 1.777305988466453000f, 1.777130092466755200f, 1.776954131127064200f, + 1.776778104453849100f, + 1.776602012453582400f, 1.776425855132738100f, 1.776249632497793200f, + 1.776073344555227000f, + 1.775896991311520800f, 1.775720572773158900f, 1.775544088946627600f, + 1.775367539838415700f, + 1.775190925455014400f, 1.775014245802917200f, 1.774837500888620400f, + 1.774660690718622000f, + 1.774483815299423100f, 1.774306874637527000f, 1.774129868739439100f, + 1.773952797611667100f, + 1.773775661260722100f, 1.773598459693116500f, 1.773421192915365400f, + 1.773243860933986400f, + 1.773066463755499800f, 1.772889001386427800f, 1.772711473833295200f, + 1.772533881102629000f, + 1.772356223200959100f, 1.772178500134817100f, 1.772000711910737700f, + 1.771822858535257600f, + 1.771644940014915700f, 1.771466956356254000f, 1.771288907565816000f, + 1.771110793650148500f, + 1.770932614615799800f, 1.770754370469321400f, 1.770576061217266500f, + 1.770397686866191300f, + 1.770219247422653700f, 1.770040742893215000f, 1.769862173284438000f, + 1.769683538602888000f, + 1.769504838855133100f, 1.769326074047743700f, 1.769147244187292200f, + 1.768968349280353800f, + 1.768789389333506000f, 1.768610364353328600f, 1.768431274346403900f, + 1.768252119319316400f, + 1.768072899278653200f, 1.767893614231003800f, 1.767714264182959500f, + 1.767534849141115100f, + 1.767355369112067100f, 1.767175824102414000f, 1.766996214118757800f, + 1.766816539167701800f, + 1.766636799255852300f, 1.766456994389817600f, 1.766277124576209000f, + 1.766097189821639300f, + 1.765917190132724600f, 1.765737125516083000f, 1.765556995978334800f, + 1.765376801526102700f, + 1.765196542166012100f, 1.765016217904690900f, 1.764835828748768400f, + 1.764655374704877700f, + 1.764474855779653200f, 1.764294271979732100f, 1.764113623311754000f, + 1.763932909782361100f, + 1.763752131398197200f, 1.763571288165909400f, 1.763390380092146400f, + 1.763209407183560200f, + 1.763028369446804500f, 1.762847266888535100f, 1.762666099515411100f, + 1.762484867334093400f, + 1.762303570351245300f, 1.762122208573532600f, 1.761940782007623600f, + 1.761759290660188400f, + 1.761577734537900500f, 1.761396113647435000f, 1.761214427995469100f, + 1.761032677588683800f, + 1.760850862433760700f, 1.760668982537384900f, 1.760487037906243600f, + 1.760305028547026500f, + 1.760122954466425600f, 1.759940815671135100f, 1.759758612167851700f, + 1.759576343963274600f, + 1.759394011064105100f, 1.759211613477047200f, 1.759029151208807400f, + 1.758846624266093800f, + 1.758664032655617500f, 1.758481376384092500f, 1.758298655458233600f, + 1.758115869884759700f, + 1.757933019670390800f, 1.757750104821850000f, 1.757567125345862700f, + 1.757384081249156100f, + 1.757200972538460700f, 1.757017799220508500f, 1.756834561302034400f, + 1.756651258789775800f, + 1.756467891690471700f, 1.756284460010864200f, 1.756100963757697900f, + 1.755917402937718900f, + 1.755733777557676500f, 1.755550087624322000f, 1.755366333144409200f, + 1.755182514124693900f, + 1.754998630571935200f, 1.754814682492893600f, 1.754630669894332600f, + 1.754446592783017500f, + 1.754262451165716300f, 1.754078245049199600f, 1.753893974440240000f, + 1.753709639345612600f, + 1.753525239772095100f, 1.753340775726466700f, 1.753156247215510400f, + 1.752971654246010300f, + 1.752786996824753600f, 1.752602274958529500f, 1.752417488654129700f, + 1.752232637918348200f, + 1.752047722757981600f, 1.751862743179828600f, 1.751677699190690400f, + 1.751492590797370600f, + 1.751307418006674800f, 1.751122180825411800f, 1.750936879260391700f, + 1.750751513318427700f, + 1.750566083006335600f, 1.750380588330932500f, 1.750195029299038900f, + 1.750009405917477100f, + 1.749823718193071800f, 1.749637966132650900f, 1.749452149743043100f, + 1.749266269031080700f, + 1.749080324003598100f, 1.748894314667431800f, 1.748708241029421000f, + 1.748522103096407300f, + 1.748335900875233900f, 1.748149634372747200f, 1.747963303595795500f, + 1.747776908551230000f, + 1.747590449245904000f, 1.747403925686672500f, 1.747217337880393900f, + 1.747030685833928200f, + 1.746843969554138200f, 1.746657189047889200f, 1.746470344322048200f, + 1.746283435383485100f, + 1.746096462239072000f, 1.745909424895683200f, 1.745722323360195900f, + 1.745535157639489100f, + 1.745347927740444200f, 1.745160633669945200f, 1.744973275434878300f, + 1.744785853042132300f, + 1.744598366498598200f, 1.744410815811169300f, 1.744223200986741100f, + 1.744035522032211900f, + 1.743847778954482000f, 1.743659971760454200f, 1.743472100457033700f, + 1.743284165051127700f, + 1.743096165549646400f, 1.742908101959502100f, 1.742719974287608900f, + 1.742531782540884100f, + 1.742343526726246800f, 1.742155206850618800f, 1.741966822920923800f, + 1.741778374944088000f, + 1.741589862927040800f, 1.741401286876712800f, 1.741212646800037300f, + 1.741023942703950200f, + 1.740835174595389600f, 1.740646342481295900f, 1.740457446368612000f, + 1.740268486264283200f, + 1.740079462175256900f, 1.739890374108482600f, 1.739701222070913200f, + 1.739512006069502800f, + 1.739322726111208500f, 1.739133382202989500f, 1.738943974351807600f, + 1.738754502564626700f, + 1.738564966848413100f, 1.738375367210135400f, 1.738185703656765200f, + 1.737995976195275000f, + 1.737806184832640900f, 1.737616329575841300f, 1.737426410431856200f, + 1.737236427407668800f, + 1.737046380510263800f, 1.736856269746629000f, 1.736666095123754000f, + 1.736475856648631400f, + 1.736285554328254900f, 1.736095188169622500f, 1.735904758179732400f, + 1.735714264365586700f, + 1.735523706734189100f, 1.735333085292545900f, 1.735142400047666100f, + 1.734951651006560100f, + 1.734760838176241400f, 1.734569961563725600f, 1.734379021176030600f, + 1.734188017020177100f, + 1.733996949103187500f, 1.733805817432086900f, 1.733614622013902600f, + 1.733423362855664100f, + 1.733232039964403900f, 1.733040653347156300f, 1.732849203010957900f, + 1.732657688962847600f, + 1.732466111209867200f, 1.732274469759060200f, 1.732082764617472800f, + 1.731890995792153600f, + 1.731699163290153100f, 1.731507267118524500f, 1.731315307284323700f, + 1.731123283794607800f, + 1.730931196656437600f, 1.730739045876875200f, 1.730546831462985500f, + 1.730354553421835600f, + 1.730162211760495300f, 1.729969806486036500f, 1.729777337605533000f, + 1.729584805126061400f, + 1.729392209054700900f, 1.729199549398532400f, 1.729006826164639400f, + 1.728814039360108100f, + 1.728621188992026400f, 1.728428275067485100f, 1.728235297593577100f, + 1.728042256577397200f, + 1.727849152026043500f, 1.727655983946615700f, 1.727462752346216000f, + 1.727269457231948900f, + 1.727076098610921500f, 1.726882676490243000f, 1.726689190877025000f, + 1.726495641778381200f, + 1.726302029201427900f, 1.726108353153283900f, 1.725914613641069900f, + 1.725720810671909300f, + 1.725526944252927700f, 1.725333014391252900f, 1.725139021094015200f, + 1.724944964368347000f, + 1.724750844221383500f, 1.724556660660261800f, 1.724362413692121400f, + 1.724168103324104300f, + 1.723973729563354600f, 1.723779292417019200f, 1.723584791892246700f, + 1.723390227996188600f, + 1.723195600735998100f, 1.723000910118831300f, 1.722806156151846400f, + 1.722611338842204000f, + 1.722416458197066900f, 1.722221514223600100f, 1.722026506928971500f, + 1.721831436320350800f, + 1.721636302404910200f, 1.721441105189824000f, 1.721245844682269600f, + 1.721050520889425600f, + 1.720855133818473900f, 1.720659683476597900f, 1.720464169870984200f, + 1.720268593008821100f, + 1.720072952897299100f, 1.719877249543611900f, 1.719681482954954500f, + 1.719485653138524800f, + 1.719289760101522900f, 1.719093803851151400f, 1.718897784394614900f, + 1.718701701739120400f, + 1.718505555891877400f, 1.718309346860097600f, 1.718113074650995200f, + 1.717916739271786500f, + 1.717720340729689700f, 1.717523879031926500f, 1.717327354185719900f, + 1.717130766198295700f, + 1.716934115076881800f, 1.716737400828708400f, 1.716540623461008100f, + 1.716343782981016200f, + 1.716146879395969500f, 1.715949912713108100f, 1.715752882939673300f, + 1.715555790082909900f, + 1.715358634150064000f, 1.715161415148384500f, 1.714964133085122900f, + 1.714766787967532600f, + 1.714569379802868900f, 1.714371908598390800f, 1.714174374361358000f, + 1.713976777099033700f, + 1.713779116818682900f, 1.713581393527573000f, 1.713383607232973600f, + 1.713185757942156800f, + 1.712987845662396800f, 1.712789870400970700f, 1.712591832165157200f, + 1.712393730962237500f, + 1.712195566799495500f, 1.711997339684216700f, 1.711799049623689900f, + 1.711600696625205300f, + 1.711402280696055800f, 1.711203801843536700f, 1.711005260074945200f, + 1.710806655397581600f, + 1.710607987818747700f, 1.710409257345748100f, 1.710210463985889500f, + 1.710011607746480600f, + 1.709812688634833300f, 1.709613706658261100f, 1.709414661824080000f, + 1.709215554139608400f, + 1.709016383612166600f, 1.708817150249077900f, 1.708617854057667300f, + 1.708418495045262300f, + 1.708219073219193300f, 1.708019588586791700f, 1.707820041155392500f, + 1.707620430932332400f, + 1.707420757924950300f, 1.707221022140587900f, 1.707021223586588700f, + 1.706821362270298600f, + 1.706621438199066300f, 1.706421451380242000f, 1.706221401821179200f, + 1.706021289529232800f, + 1.705821114511760300f, 1.705620876776121600f, 1.705420576329679000f, + 1.705220213179796900f, + 1.705019787333842200f, 1.704819298799183700f, 1.704618747583193100f, + 1.704418133693243800f, + 1.704217457136711900f, 1.704016717920976000f, 1.703815916053416300f, + 1.703615051541415900f, + 1.703414124392360000f, 1.703213134613636100f, 1.703012082212634000f, + 1.702810967196746000f, + 1.702609789573366300f, 1.702408549349891500f, 1.702207246533721000f, + 1.702005881132255800f, + 1.701804453152900000f, 1.701602962603059100f, 1.701401409490141300f, + 1.701199793821557300f, + 1.700998115604720000f, 1.700796374847044300f, 1.700594571555948100f, + 1.700392705738850400f, + 1.700190777403173700f, 1.699988786556342300f, 1.699786733205783000f, + 1.699584617358924400f, + 1.699382439023197700f, 1.699180198206036600f, 1.698977894914877100f, + 1.698775529157156700f, + 1.698573100940316400f, 1.698370610271798800f, 1.698168057159048700f, + 1.697965441609513300f, + 1.697762763630642700f, 1.697560023229888200f, 1.697357220414704500f, + 1.697154355192547900f, + 1.696951427570877000f, 1.696748437557152900f, 1.696545385158839200f, + 1.696342270383401200f, + 1.696139093238307400f, 1.695935853731027600f, 1.695732551869034300f, + 1.695529187659802400f, + 1.695325761110809200f, 1.695122272229534000f, 1.694918721023458600f, + 1.694715107500066800f, + 1.694511431666845000f, 1.694307693531282000f, 1.694103893100868100f, + 1.693900030383096900f, + 1.693696105385463800f, 1.693492118115466500f, 1.693288068580604900f, + 1.693083956788381500f, + 1.692879782746300700f, 1.692675546461869900f, 1.692471247942597600f, + 1.692266887195995600f, + 1.692062464229577600f, 1.691857979050859900f, 1.691653431667360600f, + 1.691448822086600400f, + 1.691244150316102000f, 1.691039416363390800f, 1.690834620235994300f, + 1.690629761941442100f, + 1.690424841487266700f, 1.690219858881001800f, 1.690014814130184300f, + 1.689809707242353200f, + 1.689604538225049700f, 1.689399307085817300f, 1.689194013832201500f, + 1.688988658471750600f, + 1.688783241012014700f, 1.688577761460546800f, 1.688372219824901400f, + 1.688166616112636100f, + 1.687960950331309800f, 1.687755222488484600f, 1.687549432591724400f, + 1.687343580648595700f, + 1.687137666666667100f, 1.686931690653509000f, 1.686725652616694900f, + 1.686519552563800400f, + 1.686313390502403000f, 1.686107166440082600f, 1.685900880384421800f, + 1.685694532343004600f, + 1.685488122323418400f, 1.685281650333251900f, 1.685075116380096800f, + 1.684868520471546600f, + 1.684661862615197000f, 1.684455142818646700f, 1.684248361089495800f, + 1.684041517435347400f, + 1.683834611863806100f, 1.683627644382479800f, 1.683420614998977900f, + 1.683213523720911800f, + 1.683006370555896400f, 1.682799155511547600f, 1.682591878595484300f, + 1.682384539815327400f, + 1.682177139178700400f, 1.681969676693228600f, 1.681762152366539600f, + 1.681554566206263900f, + 1.681346918220033800f, 1.681139208415483700f, 1.680931436800250600f, + 1.680723603381973500f, + 1.680515708168294200f, 1.680307751166856300f, 1.680099732385305300f, + 1.679891651831290100f, + 1.679683509512460900f, 1.679475305436470600f, 1.679267039610974300f, + 1.679058712043629300f, + 1.678850322742095200f, 1.678641871714033900f, 1.678433358967109400f, + 1.678224784508988400f, + 1.678016148347339300f, 1.677807450489833300f, 1.677598690944143400f, + 1.677389869717945000f, + 1.677180986818916300f, 1.676972042254736900f, 1.676763036033089600f, + 1.676553968161658600f, + 1.676344838648130600f, 1.676135647500194700f, 1.675926394725542700f, + 1.675717080331867900f, + 1.675507704326866200f, 1.675298266718235900f, 1.675088767513677200f, + 1.674879206720892900f, + 1.674669584347587800f, 1.674459900401469700f, 1.674250154890247300f, + 1.674040347821632800f, + 1.673830479203340000f, 1.673620549043085500f, 1.673410557348587600f, + 1.673200504127567000f, + 1.672990389387746700f, 1.672780213136852300f, 1.672569975382611300f, + 1.672359676132753500f, + 1.672149315395010900f, 1.671938893177118000f, 1.671728409486811500f, + 1.671517864331830000f, + 1.671307257719914800f, 1.671096589658809500f, 1.670885860156259300f, + 1.670675069220012500f, + 1.670464216857819200f, 1.670253303077431800f, 1.670042327886605200f, + 1.669831291293095900f, + 1.669620193304663500f, 1.669409033929069500f, 1.669197813174077200f, + 1.668986531047453000f, + 1.668775187556965000f, 1.668563782710383600f, 1.668352316515481700f, + 1.668140788980034400f, + 1.667929200111818400f, 1.667717549918614100f, 1.667505838408202700f, + 1.667294065588368100f, + 1.667082231466896900f, 1.666870336051577800f, 1.666658379350201000f, + 1.666446361370560000f, + 1.666234282120450100f, 1.666022141607668600f, 1.665809939840015500f, + 1.665597676825292700f, + 1.665385352571304500f, 1.665172967085857700f, 1.664960520376761000f, + 1.664748012451825200f, + 1.664535443318863900f, 1.664322812985692600f, 1.664110121460129000f, + 1.663897368749993400f, + 1.663684554863107800f, 1.663471679807296800f, 1.663258743590387400f, + 1.663045746220208600f, + 1.662832687704591800f, 1.662619568051370500f, 1.662406387268380100f, + 1.662193145363459100f, + 1.661979842344447600f, 1.661766478219188300f, 1.661553052995526000f, + 1.661339566681307600f, + 1.661126019284382200f, 1.660912410812601900f, 1.660698741273819700f, + 1.660485010675892400f, + 1.660271219026677700f, 1.660057366334036300f, 1.659843452605831200f, + 1.659629477849926800f, + 1.659415442074190900f, 1.659201345286492900f, 1.658987187494704200f, + 1.658772968706699000f, + 1.658558688930353400f, 1.658344348173546300f, 1.658129946444157700f, + 1.657915483750071100f, + 1.657700960099171200f, 1.657486375499345900f, 1.657271729958484500f, + 1.657057023484479000f, + 1.656842256085223800f, 1.656627427768615000f, 1.656412538542551200f, + 1.656197588414933600f, + 1.655982577393664700f, 1.655767505486650500f, 1.655552372701798200f, + 1.655337179047017700f, + 1.655121924530220900f, 1.654906609159322500f, 1.654691232942238500f, + 1.654475795886888300f, + 1.654260298001192200f, 1.654044739293073900f, 1.653829119770458900f, + 1.653613439441274500f, + 1.653397698313451300f, 1.653181896394921000f, 1.652966033693617800f, + 1.652750110217479100f, + 1.652534125974443000f, 1.652318080972451400f, 1.652101975219447200f, + 1.651885808723375900f, + 1.651669581492185300f, 1.651453293533826000f, 1.651236944856249600f, + 1.651020535467411200f, + 1.650804065375267400f, 1.650587534587776700f, 1.650370943112901000f, + 1.650154290958603300f, + 1.649937578132849400f, 1.649720804643607400f, 1.649503970498847200f, + 1.649287075706541200f, + 1.649070120274664000f, 1.648853104211192700f, 1.648636027524106100f, + 1.648418890221385400f, + 1.648201692311014300f, 1.647984433800978600f, 1.647767114699266100f, + 1.647549735013867000f, + 1.647332294752774200f, 1.647114793923981600f, 1.646897232535486500f, + 1.646679610595287900f, + 1.646461928111387300f, 1.646244185091788400f, 1.646026381544496400f, + 1.645808517477519700f, + 1.645590592898868600f, 1.645372607816555400f, 1.645154562238594800f, + 1.644936456173004000f, + 1.644718289627801600f, 1.644500062611009300f, 1.644281775130650900f, + 1.644063427194751600f, + 1.643845018811340300f, 1.643626549988446200f, 1.643408020734102600f, + 1.643189431056343700f, + 1.642970780963206800f, 1.642752070462730800f, 1.642533299562957100f, + 1.642314468271929300f, + 1.642095576597693200f, 1.641876624548297000f, 1.641657612131790500f, + 1.641438539356226500f, + 1.641219406229659700f, 1.641000212760146800f, 1.640780958955747200f, + 1.640561644824521700f, + 1.640342270374534500f, 1.640122835613851100f, 1.639903340550539200f, + 1.639683785192669600f, + 1.639464169548314100f, 1.639244493625547900f, 1.639024757432447500f, + 1.638804960977092100f, + 1.638585104267562800f, 1.638365187311943400f, 1.638145210118319400f, + 1.637925172694778800f, + 1.637705075049411800f, 1.637484917190310800f, 1.637264699125570200f, + 1.637044420863286600f, + 1.636824082411559600f, 1.636603683778490100f, 1.636383224972181500f, + 1.636162706000739300f, + 1.635942126872271800f, 1.635721487594888400f, 1.635500788176702100f, + 1.635280028625826900f, + 1.635059208950379700f, 1.634838329158479200f, 1.634617389258246700f, + 1.634396389257805700f, + 1.634175329165281400f, 1.633954208988801700f, 1.633733028736496400f, + 1.633511788416498000f, + 1.633290488036940500f, 1.633069127605960800f, 1.632847707131697600f, + 1.632626226622291700f, + 1.632404686085886300f, 1.632183085530627200f, 1.631961424964661700f, + 1.631739704396139900f, + 1.631517923833213400f, 1.631296083284036900f, 1.631074182756766300f, + 1.630852222259560700f, + 1.630630201800580900f, 1.630408121387990000f, 1.630185981029953000f, + 1.629963780734637400f, + 1.629741520510213000f, 1.629519200364851800f, 1.629296820306727700f, + 1.629074380344017100f, + 1.628851880484898200f, 1.628629320737551700f, 1.628406701110161100f, + 1.628184021610910700f, + 1.627961282247988300f, 1.627738483029583100f, 1.627515623963887000f, + 1.627292705059093700f, + 1.627069726323399500f, 1.626846687765002700f, 1.626623589392103500f, + 1.626400431212904800f, + 1.626177213235611400f, 1.625953935468430500f, 1.625730597919571300f, + 1.625507200597245500f, + 1.625283743509666300f, 1.625060226665050000f, 1.624836650071614500f, + 1.624613013737580000f, + 1.624389317671169500f, 1.624165561880607000f, 1.623941746374119500f, + 1.623717871159936300f, + 1.623493936246288300f, 1.623269941641409400f, 1.623045887353534900f, + 1.622821773390902700f, + 1.622597599761753000f, 1.622373366474327800f, 1.622149073536871800f, + 1.621924720957631300f, + 1.621700308744855200f, 1.621475836906794500f, 1.621251305451702400f, + 1.621026714387834300f, + 1.620802063723447700f, 1.620577353466802700f, 1.620352583626160500f, + 1.620127754209786100f, + 1.619902865225945300f, 1.619677916682906700f, 1.619452908588941300f, + 1.619227840952321800f, + 1.619002713781323200f, 1.618777527084222800f, 1.618552280869300300f, + 1.618326975144837000f, + 1.618101609919117200f, 1.617876185200426600f, 1.617650700997053500f, + 1.617425157317288200f, + 1.617199554169423500f, 1.616973891561754200f, 1.616748169502577200f, + 1.616522388000191500f, + 1.616296547062898500f, 1.616070646699001800f, 1.615844686916807300f, + 1.615618667724622700f, + 1.615392589130757900f, 1.615166451143525300f, 1.614940253771239400f, + 1.614713997022216900f, + 1.614487680904776600f, 1.614261305427239200f, 1.614034870597928400f, + 1.613808376425168900f, + 1.613581822917288900f, 1.613355210082617800f, 1.613128537929487500f, + 1.612901806466232200f, + 1.612675015701188000f, 1.612448165642693400f, 1.612221256299089200f, + 1.611994287678718100f, + 1.611767259789925100f, 1.611540172641057200f, 1.611313026240463800f, + 1.611085820596496600f, + 1.610858555717509200f, 1.610631231611857800f, 1.610403848287899700f, + 1.610176405753995800f, + 1.609948904018508200f, 1.609721343089801600f, 1.609493722976242900f, + 1.609266043686200700f, + 1.609038305228046400f, 1.608810507610153100f, 1.608582650840896200f, + 1.608354734928653800f, + 1.608126759881805400f, 1.607898725708732900f, 1.607670632417820500f, + 1.607442480017454700f, + 1.607214268516024000f, 1.606985997921919000f, 1.606757668243532500f, + 1.606529279489259600f, + 1.606300831667497600f, 1.606072324786645500f, 1.605843758855105300f, + 1.605615133881280700f, + 1.605386449873577300f, 1.605157706840403300f, 1.604928904790168700f, + 1.604700043731286200f, + 1.604471123672170500f, 1.604242144621237800f, 1.604013106586907400f, + 1.603784009577600100f, + 1.603554853601739700f, 1.603325638667751000f, 1.603096364784061900f, + 1.602867031959102100f, + 1.602637640201303400f, 1.602408189519099800f, 1.602178679920927900f, + 1.601949111415226000f, + 1.601719484010434300f, 1.601489797714996000f, 1.601260052537355700f, + 1.601030248485960900f, + 1.600800385569260300f, 1.600570463795705700f, 1.600340483173750400f, + 1.600110443711850300f, + 1.599880345418463100f, 1.599650188302049100f, 1.599419972371070500f, + 1.599189697633991400f, + 1.598959364099278700f, 1.598728971775401000f, 1.598498520670828900f, + 1.598268010794035900f, + 1.598037442153496900f, 1.597806814757689200f, 1.597576128615092200f, + 1.597345383734188000f, + 1.597114580123460100f, 1.596883717791394800f, 1.596652796746479600f, + 1.596421816997205500f, + 1.596190778552064800f, 1.595959681419551800f, 1.595728525608163700f, + 1.595497311126399300f, + 1.595266037982759500f, 1.595034706185747500f, 1.594803315743869000f, + 1.594571866665631700f, + 1.594340358959544800f, 1.594108792634120600f, 1.593877167697873100f, + 1.593645484159318200f, + 1.593413742026974500f, 1.593181941309362400f, 1.592950082015004700f, + 1.592718164152426000f, + 1.592486187730153300f, 1.592254152756715600f, 1.592022059240644400f, + 1.591789907190473100f, + 1.591557696614737100f, 1.591325427521974100f, 1.591093099920724200f, + 1.590860713819529400f, + 1.590628269226933600f, 1.590395766151483400f, 1.590163204601727100f, + 1.589930584586215500f, + 1.589697906113501000f, 1.589465169192139100f, 1.589232373830686400f, + 1.588999520037702300f, + 1.588766607821748200f, 1.588533637191387400f, 1.588300608155185600f, + 1.588067520721711000f, + 1.587834374899533400f, 1.587601170697224600f, 1.587367908123358900f, + 1.587134587186513000f, + 1.586901207895265300f, 1.586667770258196600f, 1.586434274283889500f, + 1.586200719980929200f, + 1.585967107357902700f, 1.585733436423399000f, 1.585499707186010200f, + 1.585265919654329300f, + 1.585032073836952100f, 1.584798169742476400f, 1.584564207379502500f, + 1.584330186756632200f, + 1.584096107882470000f, 1.583861970765622100f, 1.583627775414697000f, + 1.583393521838305700f, + 1.583159210045060900f, 1.582924840043577400f, 1.582690411842472700f, + 1.582455925450365600f, + 1.582221380875877800f, 1.581986778127632700f, 1.581752117214255900f, + 1.581517398144375800f, + 1.581282620926621300f, 1.581047785569625400f, 1.580812892082021900f, + 1.580577940472447200f, + 1.580342930749539800f, 1.580107862921940700f, 1.579872736998292100f, + 1.579637552987239100f, + 1.579402310897428900f, 1.579167010737510600f, 1.578931652516135700f, + 1.578696236241957200f, + 1.578460761923630800f, 1.578225229569814700f, 1.577989639189168100f, + 1.577753990790353500f, + 1.577518284382034800f, 1.577282519972878200f, 1.577046697571552000f, + 1.576810817186727000f, + 1.576574878827075700f, 1.576338882501273000f, 1.576102828217995600f, + 1.575866715985922500f, + 1.575630545813735200f, 1.575394317710116600f, 1.575158031683752300f, + 1.574921687743330300f, + 1.574685285897539800f, 1.574448826155072400f, 1.574212308524622500f, + 1.573975733014886000f, + 1.573739099634561500f, 1.573502408392348600f, 1.573265659296950300f, + 1.573028852357070800f, + 1.572791987581417100f, 1.572555064978698100f, 1.572318084557624800f, + 1.572081046326909900f, + 1.571843950295269000f, 1.571606796471419100f, 1.571369584864080100f, + 1.571132315481973200f, + 1.570894988333822400f, 1.570657603428353300f, 1.570420160774294000f, + 1.570182660380374600f, + 1.569945102255327200f, 1.569707486407886600f, 1.569469812846788500f, + 1.569232081580771900f, + 1.568994292618577400f, 1.568756445968948000f, 1.568518541640628400f, + 1.568280579642366000f, + 1.568042559982909500f, 1.567804482671010500f, 1.567566347715422500f, + 1.567328155124900800f, + 1.567089904908203200f, 1.566851597074089500f, 1.566613231631321500f, + 1.566374808588663300f, + 1.566136327954881000f, 1.565897789738742900f, 1.565659193949019400f, + 1.565420540594482800f, + 1.565181829683907700f, 1.564943061226071100f, 1.564704235229751500f, + 1.564465351703730400f, + 1.564226410656790000f, 1.563987412097716200f, 1.563748356035296000f, + 1.563509242478319000f, + 1.563270071435576500f, 1.563030842915862100f, 1.562791556927971800f, + 1.562552213480703300f, + 1.562312812582856500f, 1.562073354243233700f, 1.561833838470639200f, + 1.561594265273878800f, + 1.561354634661761300f, 1.561114946643096900f, 1.560875201226698900f, + 1.560635398421381400f, + 1.560395538235961800f, 1.560155620679258400f, 1.559915645760092900f, + 1.559675613487288200f, + 1.559435523869669500f, 1.559195376916064700f, 1.558955172635302800f, + 1.558714911036215700f, + 1.558474592127637100f, 1.558234215918402600f, 1.557993782417350400f, + 1.557753291633320500f, + 1.557512743575155000f, 1.557272138251698300f, 1.557031475671796400f, + 1.556790755844298400f, + 1.556549978778054300f, 1.556309144481917300f, 1.556068252964741600f, + 1.555827304235384500f, + 1.555586298302704900f, 1.555345235175563900f, 1.555104114862824600f, + 1.554862937373352500f, + 1.554621702716015000f, 1.554380410899681300f, 1.554139061933223200f, + 1.553897655825514600f, + 1.553656192585431100f, 1.553414672221850700f, 1.553173094743653300f, + 1.552931460159721100f, + 1.552689768478938500f, 1.552448019710191300f, 1.552206213862368500f, + 1.551964350944360100f, + 1.551722430965059000f, 1.551480453933359800f, 1.551238419858159700f, + 1.550996328748356800f, + 1.550754180612852900f, 1.550511975460550500f, 1.550269713300355100f, + 1.550027394141174000f, + 1.549785017991916400f, 1.549542584861493900f, 1.549300094758820000f, + 1.549057547692810600f, + 1.548814943672383300f, 1.548572282706457900f, 1.548329564803956300f, + 1.548086789973802700f, + 1.547843958224923000f, 1.547601069566245900f, 1.547358124006701400f, + 1.547115121555221700f, + 1.546872062220741700f, 1.546628946012197800f, 1.546385772938528600f, + 1.546142543008675300f, + 1.545899256231580300f, 1.545655912616188800f, 1.545412512171447700f, + 1.545169054906306200f, + 1.544925540829715600f, 1.544681969950629300f, 1.544438342278002600f, + 1.544194657820792800f, + 1.543950916587959700f, 1.543707118588464800f, 1.543463263831272000f, + 1.543219352325347200f, + 1.542975384079658300f, 1.542731359103175300f, 1.542487277404870100f, + 1.542243138993717000f, + 1.541998943878692300f, 1.541754692068774600f, 1.541510383572944000f, + 1.541266018400183200f, + 1.541021596559476700f, 1.540777118059811100f, 1.540532582910175500f, + 1.540287991119560600f, + 1.540043342696959100f, 1.539798637651366400f, 1.539553875991779300f, + 1.539309057727197300f, + 1.539064182866621400f, 1.538819251419055100f, 1.538574263393503800f, + 1.538329218798974800f, + 1.538084117644477900f, 1.537838959939025200f, 1.537593745691629500f, + 1.537348474911307300f, + 1.537103147607076200f, 1.536857763787956400f, 1.536612323462969800f, + 1.536366826641140800f, + 1.536121273331495300f, 1.535875663543061700f, 1.535629997284870400f, + 1.535384274565953600f, + 1.535138495395346400f, 1.534892659782085100f, 1.534646767735208000f, + 1.534400819263756400f, + 1.534154814376772700f, 1.533908753083302200f, 1.533662635392391700f, + 1.533416461313090100f, + 1.533170230854448400f, 1.532923944025520200f, 1.532677600835360600f, + 1.532431201293027000f, + 1.532184745407578500f, 1.531938233188077100f, 1.531691664643585900f, + 1.531445039783170500f, + 1.531198358615898800f, 1.530951621150840700f, 1.530704827397067800f, + 1.530457977363654000f, + 1.530211071059675200f, 1.529964108494209700f, 1.529717089676337500f, + 1.529470014615140800f, + 1.529222883319703700f, 1.528975695799112500f, 1.528728452062455600f, + 1.528481152118823700f, + 1.528233795977309400f, 1.527986383647006500f, 1.527738915137012400f, + 1.527491390456425600f, + 1.527243809614346600f, 1.526996172619878900f, 1.526748479482126700f, + 1.526500730210197200f, + 1.526252924813199500f, 1.526005063300244900f, 1.525757145680446200f, + 1.525509171962918800f, + 1.525261142156779900f, 1.525013056271149000f, 1.524764914315147200f, + 1.524516716297898300f, + 1.524268462228527900f, 1.524020152116163200f, 1.523771785969934000f, + 1.523523363798972000f, + 1.523274885612411200f, 1.523026351419387100f, 1.522777761229038100f, + 1.522529115050503600f, + 1.522280412892925900f, 1.522031654765448900f, 1.521782840677218700f, + 1.521533970637383800f, + 1.521285044655094300f, 1.521036062739502300f, 1.520787024899762100f, + 1.520537931145030400f, + 1.520288781484465700f, 1.520039575927228500f, 1.519790314482481100f, + 1.519540997159388300f, + 1.519291623967116600f, 1.519042194914835200f, 1.518792710011714500f, + 1.518543169266927600f, + 1.518293572689648900f, 1.518043920289055900f, 1.517794212074327500f, + 1.517544448054644500f, + 1.517294628239190400f, 1.517044752637150000f, 1.516794821257710500f, + 1.516544834110061600f, + 1.516294791203394200f, 1.516044692546901800f, 1.515794538149779700f, + 1.515544328021225500f, + 1.515294062170438700f, 1.515043740606620800f, 1.514793363338975600f, + 1.514542930376708600f, + 1.514292441729027300f, 1.514041897405141700f, 1.513791297414263800f, + 1.513540641765606800f, + 1.513289930468387300f, 1.513039163531823000f, 1.512788340965133500f, + 1.512537462777541200f, + 1.512286528978270300f, 1.512035539576546600f, 1.511784494581598600f, + 1.511533394002656100f, + 1.511282237848951400f, 1.511031026129719100f, 1.510779758854195400f, + 1.510528436031618900f, + 1.510277057671229400f, 1.510025623782270000f, 1.509774134373984800f, + 1.509522589455620600f, + 1.509270989036425800f, 1.509019333125651200f, 1.508767621732549400f, + 1.508515854866375100f, + 1.508264032536385000f, 1.508012154751837700f, 1.507760221521994700f, + 1.507508232856118200f, + 1.507256188763473200f, 1.507004089253327000f, 1.506751934334948000f, + 1.506499724017607900f, + 1.506247458310579400f, 1.505995137223137500f, 1.505742760764559300f, + 1.505490328944124200f, + 1.505237841771113200f, 1.504985299254809800f, 1.504732701404498900f, + 1.504480048229468000f, + 1.504227339739006500f, 1.503974575942405700f, 1.503721756848958700f, + 1.503468882467961600f, + 1.503215952808711500f, 1.502962967880507600f, 1.502709927692651900f, + 1.502456832254447600f, + 1.502203681575200700f, 1.501950475664218600f, 1.501697214530810700f, + 1.501443898184289200f, + 1.501190526633967600f, 1.500937099889161600f, 1.500683617959188900f, + 1.500430080853369500f, + 1.500176488581024900f, 1.499922841151479600f, 1.499669138574058800f, + 1.499415380858090800f, + 1.499161568012905300f, 1.498907700047834600f, 1.498653776972212600f, + 1.498399798795375000f, + 1.498145765526660300f, 1.497891677175408500f, 1.497637533750961300f, + 1.497383335262663300f, + 1.497129081719860400f, 1.496874773131900800f, 1.496620409508134800f, + 1.496365990857914600f, + 1.496111517190594300f, 1.495856988515530400f, 1.495602404842080800f, + 1.495347766179606400f, + 1.495093072537469100f, 1.494838323925033400f, 1.494583520351665500f, + 1.494328661826734200f, + 1.494073748359609600f, 1.493818779959664300f, 1.493563756636272500f, + 1.493308678398810800f, + 1.493053545256657800f, 1.492798357219194100f, 1.492543114295801900f, + 1.492287816495866200f, + 1.492032463828773200f, 1.491777056303911700f, 1.491521593930672100f, + 1.491266076718446900f, + 1.491010504676631500f, 1.490754877814621800f, 1.490499196141816600f, + 1.490243459667616600f, + 1.489987668401424800f, 1.489731822352645500f, 1.489475921530685900f, + 1.489219965944954300f, + 1.488963955604861500f, 1.488707890519820600f, 1.488451770699245900f, + 1.488195596152554800f, + 1.487939366889165600f, 1.487683082918499300f, 1.487426744249978400f, + 1.487170350893028500f, + 1.486913902857075700f, 1.486657400151549600f, 1.486400842785880100f, + 1.486144230769501000f, + 1.485887564111846500f, 1.485630842822354100f, 1.485374066910462500f, + 1.485117236385612200f, + 1.484860351257246500f, 1.484603411534810300f, 1.484346417227750700f, + 1.484089368345516300f, + 1.483832264897558400f, 1.483575106893329600f, 1.483317894342285100f, + 1.483060627253882000f, + 1.482803305637578900f, 1.482545929502837100f, 1.482288498859119400f, + 1.482031013715890700f, + 1.481773474082618300f, 1.481515879968770900f, 1.481258231383819800f, + 1.481000528337237800f, + 1.480742770838499900f, 1.480484958897083200f, 1.480227092522466500f, + 1.479969171724131200f, + 1.479711196511560100f, 1.479453166894238100f, 1.479195082881652200f, + 1.478936944483291600f, + 1.478678751708647000f, 1.478420504567211900f, 1.478162203068481100f, + 1.477903847221951400f, + 1.477645437037121900f, 1.477386972523493800f, 1.477128453690569800f, + 1.476869880547855300f, + 1.476611253104856700f, 1.476352571371083700f, 1.476093835356046700f, + 1.475835045069259000f, + 1.475576200520235500f, 1.475317301718493300f, 1.475058348673551100f, + 1.474799341394929900f, + 1.474540279892153000f, 1.474281164174744900f, 1.474021994252233000f, + 1.473762770134145800f, + 1.473503491830014300f, 1.473244159349371700f, 1.472984772701752900f, + 1.472725331896694400f, + 1.472465836943735600f, 1.472206287852416900f, 1.471946684632281500f, + 1.471687027292874400f, + 1.471427315843742100f, 1.471167550294433700f, 1.470907730654499800f, + 1.470647856933493300f, + 1.470387929140969200f, 1.470127947286484100f, 1.469867911379596900f, + 1.469607821429868500f, + 1.469347677446861500f, 1.469087479440140300f, 1.468827227419272200f, + 1.468566921393825700f, + 1.468306561373371900f, 1.468046147367482600f, 1.467785679385733300f, + 1.467525157437700200f, + 1.467264581532962100f, 1.467003951681099800f, 1.466743267891695800f, + 1.466482530174334500f, + 1.466221738538602500f, 1.465960892994088800f, 1.465699993550383400f, + 1.465439040217079400f, + 1.465178033003770700f, 1.464916971920054100f, 1.464655856975527900f, + 1.464394688179792900f, + 1.464133465542451200f, 1.463872189073107500f, 1.463610858781367900f, + 1.463349474676840700f, + 1.463088036769136600f, 1.462826545067867700f, 1.462564999582648600f, + 1.462303400323095000f, + 1.462041747298825900f, 1.461780040519460800f, 1.461518279994622200f, + 1.461256465733934400f, + 1.460994597747023600f, 1.460732676043517800f, 1.460470700633046800f, + 1.460208671525243400f, + 1.459946588729741100f, 1.459684452256176300f, 1.459422262114186800f, + 1.459160018313412400f, + 1.458897720863495500f, 1.458635369774079500f, 1.458372965054810700f, + 1.458110506715337000f, + 1.457847994765308200f, 1.457585429214375700f, 1.457322810072193800f, + 1.457060137348418000f, + 1.456797411052706200f, 1.456534631194717800f, 1.456271797784114900f, + 1.456008910830560500f, + 1.455745970343720800f, 1.455482976333263100f, 1.455219928808857200f, + 1.454956827780174100f, + 1.454693673256887600f, 1.454430465248673300f, 1.454167203765208000f, + 1.453903888816171900f, + 1.453640520411245900f, 1.453377098560113100f, 1.453113623272459100f, + 1.452850094557971000f, + 1.452586512426338000f, 1.452322876887251400f, 1.452059187950404100f, + 1.451795445625491300f, + 1.451531649922210200f, 1.451267800850259500f, 1.451003898419340500f, + 1.450739942639155800f, + 1.450475933519410400f, 1.450211871069811300f, 1.449947755300067500f, + 1.449683586219889400f, + 1.449419363838989800f, 1.449155088167083600f, 1.448890759213887100f, + 1.448626376989119400f, + 1.448361941502500900f, 1.448097452763754000f, 1.447832910782603100f, + 1.447568315568775100f, + 1.447303667131997900f, 1.447038965482002200f, 1.446774210628520200f, + 1.446509402581286400f, + 1.446244541350036700f, 1.445979626944509300f, 1.445714659374444500f, + 1.445449638649584500f, + 1.445184564779673500f, 1.444919437774456700f, 1.444654257643682900f, + 1.444389024397101600f, + 1.444123738044464900f, 1.443858398595526400f, 1.443593006060042100f, + 1.443327560447769600f, + 1.443062061768468400f, 1.442796510031900500f, 1.442530905247829200f, + 1.442265247426020200f, + 1.441999536576240800f, 1.441733772708260600f, 1.441467955831850800f, + 1.441202085956784900f, + 1.440936163092837900f, 1.440670187249787600f, 1.440404158437412500f, + 1.440138076665494100f, + 1.439871941943815300f, 1.439605754282161400f, 1.439339513690319100f, + 1.439073220178077400f, + 1.438806873755226900f, 1.438540474431560600f, 1.438274022216873500f, + 1.438007517120961900f, + 1.437740959153624500f, 1.437474348324662100f, 1.437207684643876800f, + 1.436940968121073600f, + 1.436674198766058500f, 1.436407376588640000f, 1.436140501598628400f, + 1.435873573805835900f, + 1.435606593220076600f, 1.435339559851166500f, 1.435072473708924000f, + 1.434805334803169100f, + 1.434538143143723200f, 1.434270898740410700f, 1.434003601603057300f, + 1.433736251741490700f, + 1.433468849165540500f, 1.433201393885038500f, 1.432933885909818000f, + 1.432666325249714700f, + 1.432398711914566200f, 1.432131045914211600f, 1.431863327258492400f, + 1.431595555957251700f, + 1.431327732020334800f, 1.431059855457588600f, 1.430791926278862400f, + 1.430523944494007400f, + 1.430255910112876000f, 1.429987823145323100f, 1.429719683601205800f, + 1.429451491490382900f, + 1.429183246822714800f, 1.428914949608064200f, 1.428646599856295400f, + 1.428378197577275100f, + 1.428109742780871800f, 1.427841235476955400f, 1.427572675675398600f, + 1.427304063386075200f, + 1.427035398618861500f, 1.426766681383635500f, 1.426497911690277000f, + 1.426229089548668200f, + 1.425960214968693000f, 1.425691287960236600f, 1.425422308533187200f, + 1.425153276697434000f, + 1.424884192462868800f, 1.424615055839385300f, 1.424345866836878200f, + 1.424076625465245500f, + 1.423807331734385800f, 1.423537985654200800f, 1.423268587234593400f, + 1.422999136485468600f, + 1.422729633416733200f, 1.422460078038296300f, 1.422190470360068300f, + 1.421920810391962500f, + 1.421651098143893000f, 1.421381333625776600f, 1.421111516847531700f, + 1.420841647819078600f, + 1.420571726550339700f, 1.420301753051239400f, 1.420031727331703800f, + 1.419761649401660500f, + 1.419491519271040000f, 1.419221336949774100f, 1.418951102447796800f, + 1.418680815775043500f, + 1.418410476941452100f, 1.418140085956961900f, 1.417869642831514700f, + 1.417599147575054000f, + 1.417328600197524900f, 1.417058000708874700f, 1.416787349119052600f, + 1.416516645438009600f, + 1.416245889675698900f, 1.415975081842075300f, 1.415704221947095700f, + 1.415433310000718600f, + 1.415162346012905000f, 1.414891329993617200f, 1.414620261952819600f, + 1.414349141900479000f, + 1.414077969846563500f, 1.413806745801043500f, 1.413535469773890700f, + 1.413264141775079300f, + 1.412992761814585400f, 1.412721329902386900f, 1.412449846048463600f, + 1.412178310262796900f, + 1.411906722555370500f, 1.411635082936170100f, 1.411363391415182900f, + 1.411091648002398500f, + 1.410819852707807700f, 1.410548005541404100f, 1.410276106513182400f, + 1.410004155633139500f, + 1.409732152911274500f, 1.409460098357588200f, 1.409187991982083100f, + 1.408915833794763800f, + 1.408643623805636800f, 1.408371362024710500f, 1.408099048461995300f, + 1.407826683127503000f, + 1.407554266031248100f, 1.407281797183246500f, 1.407009276593515800f, + 1.406736704272076400f, + 1.406464080228949600f, 1.406191404474159000f, 1.405918677017730100f, + 1.405645897869690400f, + 1.405373067040069300f, 1.405100184538898000f, 1.404827250376209400f, + 1.404554264562038400f, + 1.404281227106422400f, 1.404008138019399800f, 1.403734997311011600f, + 1.403461804991300100f, + 1.403188561070310100f, 1.402915265558087700f, 1.402641918464681400f, + 1.402368519800141200f, + 1.402095069574519800f, 1.401821567797870300f, 1.401548014480249000f, + 1.401274409631713600f, + 1.401000753262323900f, 1.400727045382141400f, 1.400453286001229800f, + 1.400179475129653700f, + 1.399905612777481200f, 1.399631698954780800f, 1.399357733671623900f, + 1.399083716938083600f, + 1.398809648764234100f, 1.398535529160152400f, 1.398261358135917300f, + 1.397987135701609200f, + 1.397712861867310300f, 1.397438536643105000f, 1.397164160039079200f, + 1.396889732065321300f, + 1.396615252731921100f, 1.396340722048970300f, 1.396066140026562800f, + 1.395791506674794100f, + 1.395516822003761700f, 1.395242086023564800f, 1.394967298744304900f, + 1.394692460176085300f, + 1.394417570329010700f, 1.394142629213188000f, 1.393867636838725900f, + 1.393592593215735600f, + 1.393317498354329300f, 1.393042352264621600f, 1.392767154956728400f, + 1.392491906440768600f, + 1.392216606726861800f, 1.391941255825130100f, 1.391665853745697400f, + 1.391390400498689700f, + 1.391114896094234100f, 1.390839340542460600f, 1.390563733853500200f, + 1.390288076037486500f, + 1.390012367104554600f, 1.389736607064841100f, 1.389460795928485500f, + 1.389184933705628300f, + 1.388909020406412100f, 1.388633056040981600f, 1.388357040619483200f, + 1.388080974152065200f, + 1.387804856648877600f, 1.387528688120072600f, 1.387252468575804100f, + 1.386976198026228100f, + 1.386699876481501900f, 1.386423503951785200f, 1.386147080447239600f, + 1.385870605978028100f, + 1.385594080554316100f, 1.385317504186270900f, 1.385040876884061000f, + 1.384764198657857200f, + 1.384487469517832200f, 1.384210689474160600f, 1.383933858537019100f, + 1.383656976716585600f, + 1.383380044023040400f, 1.383103060466565300f, 1.382826026057344600f, + 1.382548940805563800f, + 1.382271804721410600f, 1.381994617815074400f, 1.381717380096746800f, + 1.381440091576620700f, + 1.381162752264891500f, 1.380885362171756300f, 1.380607921307413400f, + 1.380330429682064000f, + 1.380052887305910400f, 1.379775294189157000f, 1.379497650342010400f, + 1.379219955774678700f, + 1.378942210497371600f, 1.378664414520301500f, 1.378386567853681700f, + 1.378108670507728300f, + 1.377830722492658500f, 1.377552723818691500f, 1.377274674496048700f, + 1.376996574534953300f, + 1.376718423945630000f, 1.376440222738305700f, 1.376161970923209400f, + 1.375883668510570900f, + 1.375605315510623200f, 1.375326911933600200f, 1.375048457789738400f, + 1.374769953089275400f, + 1.374491397842451100f, 1.374212792059507100f, 1.373934135750687100f, + 1.373655428926236400f, + 1.373376671596402400f, 1.373097863771434200f, 1.372819005461582500f, + 1.372540096677100200f, + 1.372261137428242300f, 1.371982127725264800f, 1.371703067578426700f, + 1.371423956997988000f, + 1.371144795994210500f, 1.370865584577358300f, 1.370586322757697500f, + 1.370307010545495500f, + 1.370027647951022100f, 1.369748234984548000f, 1.369468771656347200f, + 1.369189257976694200f, + 1.368909693955866000f, 1.368630079604142000f, 1.368350414931802000f, + 1.368070699949128800f, + 1.367790934666406600f, 1.367511119093921800f, 1.367231253241962200f, + 1.366951337120818000f, + 1.366671370740780500f, 1.366391354112143500f, 1.366111287245202400f, + 1.365831170150254300f, + 1.365551002837598600f, 1.365270785317536100f, 1.364990517600369400f, + 1.364710199696403300f, + 1.364429831615944200f, 1.364149413369300600f, 1.363868944966782900f, + 1.363588426418702600f, + 1.363307857735373900f, 1.363027238927112300f, 1.362746570004235400f, + 1.362465850977062900f, + 1.362185081855915600f, 1.361904262651116900f, 1.361623393372991300f, + 1.361342474031866000f, + 1.361061504638069400f, 1.360780485201932300f, 1.360499415733786400f, + 1.360218296243966200f, + 1.359937126742807300f, 1.359655907240648000f, 1.359374637747827700f, + 1.359093318274687800f, + 1.358811948831571500f, 1.358530529428824400f, 1.358249060076792900f, + 1.357967540785826300f, + 1.357685971566275200f, 1.357404352428492000f, 1.357122683382830900f, + 1.356840964439648200f, + 1.356559195609301700f, 1.356277376902151900f, 1.355995508328559500f, + 1.355713589898888800f, + 1.355431621623504700f, 1.355149603512774400f, 1.354867535577067200f, + 1.354585417826753800f, + 1.354303250272206500f, 1.354021032923800300f, 1.353738765791911100f, + 1.353456448886917200f, + 1.353174082219199100f, 1.352891665799137900f, 1.352609199637117500f, + 1.352326683743523300f, + 1.352044118128742600f, 1.351761502803164900f, 1.351478837777180700f, + 1.351196123061183100f, + 1.350913358665566400f, 1.350630544600727200f, 1.350347680877063800f, + 1.350064767504976400f, + 1.349781804494866600f, 1.349498791857138400f, 1.349215729602197400f, + 1.348932617740450600f, + 1.348649456282307700f, 1.348366245238179500f, 1.348082984618478800f, + 1.347799674433620500f, + 1.347516314694020800f, 1.347232905410098200f, 1.346949446592273100f, + 1.346665938250967100f, + 1.346382380396604000f, 1.346098773039609700f, 1.345815116190411300f, + 1.345531409859438200f, + 1.345247654057121700f, 1.344963848793894200f, 1.344679994080190800f, + 1.344396089926448000f, + 1.344112136343103900f, 1.343828133340598800f, 1.343544080929374800f, + 1.343259979119875600f, + 1.342975827922546600f, 1.342691627347835500f, 1.342407377406191500f, + 1.342123078108065700f, + 1.341838729463910900f, 1.341554331484181600f, 1.341269884179334700f, + 1.340985387559828100f, + 1.340700841636122400f, 1.340416246418678800f, 1.340131601917961900f, + 1.339846908144436600f, + 1.339562165108570700f, 1.339277372820833400f, 1.338992531291695500f, + 1.338707640531629800f, + 1.338422700551110900f, 1.338137711360615200f, 1.337852672970621300f, + 1.337567585391608900f, + 1.337282448634059800f, 1.336997262708457900f, 1.336712027625288600f, + 1.336426743395039000f, + 1.336141410028198500f, 1.335856027535258000f, 1.335570595926709700f, + 1.335285115213048500f, + 1.334999585404770700f, 1.334714006512374400f, 1.334428378546359500f, + 1.334142701517227600f, + 1.333856975435482300f, 1.333571200311629100f, 1.333285376156174700f, + 1.332999502979628700f, + 1.332713580792501500f, 1.332427609605305400f, 1.332141589428554900f, + 1.331855520272766200f, + 1.331569402148457400f, 1.331283235066148100f, 1.330997019036359800f, + 1.330710754069615700f, + 1.330424440176441300f, 1.330138077367363200f, 1.329851665652910500f, + 1.329565205043613800f, + 1.329278695550004700f, 1.328992137182618100f, 1.328705529951989400f, + 1.328418873868656900f, + 1.328132168943159800f, 1.327845415186039000f, 1.327558612607838500f, + 1.327271761219102500f, + 1.326984861030378000f, 1.326697912052213500f, 1.326410914295159400f, + 1.326123867769767500f, + 1.325836772486591800f, 1.325549628456188100f, 1.325262435689113600f, + 1.324975194195928000f, + 1.324687903987191900f, 1.324400565073468300f, 1.324113177465321900f, + 1.323825741173318700f, + 1.323538256208027800f, 1.323250722580018500f, 1.322963140299862500f, + 1.322675509378133900f, + 1.322387829825407700f, 1.322100101652261100f, 1.321812324869273500f, + 1.321524499487024800f, + 1.321236625516098100f, 1.320948702967077400f, 1.320660731850549000f, + 1.320372712177100700f, + 1.320084643957322400f, 1.319796527201805300f, 1.319508361921142500f, + 1.319220148125929100f, + 1.318931885826762000f, 1.318643575034239800f, 1.318355215758962900f, + 1.318066808011533200f, + 1.317778351802554800f, 1.317489847142633300f, 1.317201294042376300f, + 1.316912692512393300f, + 1.316624042563294900f, 1.316335344205694200f, 1.316046597450205800f, + 1.315757802307445900f, + 1.315468958788033000f, 1.315180066902586800f, 1.314891126661728900f, + 1.314602138076083300f, + 1.314313101156274800f, 1.314024015912930600f, 1.313734882356679900f, + 1.313445700498152800f, + 1.313156470347981900f, 1.312867191916801100f, 1.312577865215246900f, + 1.312288490253956900f, + 1.311999067043570200f, 1.311709595594728000f, 1.311420075918073900f, + 1.311130508024252400f, + 1.310840891923910100f, 1.310551227627695400f, 1.310261515146258200f, + 1.309971754490250700f, + 1.309681945670326400f, 1.309392088697140900f, 1.309102183581351200f, + 1.308812230333616500f, + 1.308522228964597500f, 1.308232179484956500f, 1.307942081905358000f, + 1.307651936236467800f, + 1.307361742488954300f, 1.307071500673486800f, 1.306781210800736200f, + 1.306490872881376200f, + 1.306200486926081700f, 1.305910052945529200f, 1.305619570950396800f, + 1.305329040951365100f, + 1.305038462959116100f, 1.304747836984333300f, 1.304457163037702200f, + 1.304166441129910300f, + 1.303875671271646400f, 1.303584853473601200f, 1.303293987746467300f, + 1.303003074100939100f, + 1.302712112547712800f, 1.302421103097485900f, 1.302130045760958100f, + 1.301838940548830600f, + 1.301547787471806900f, 1.301256586540591600f, 1.300965337765891600f, + 1.300674041158414800f, + 1.300382696728871400f, 1.300091304487973800f, 1.299799864446435200f, + 1.299508376614971500f, + 1.299216841004299200f, 1.298925257625137800f, 1.298633626488207500f, + 1.298341947604231300f, + 1.298050220983932900f, 1.297758446638038700f, 1.297466624577275900f, + 1.297174754812374400f, + 1.296882837354065100f, 1.296590872213081200f, 1.296298859400157700f, + 1.296006798926030200f, + 1.295714690801437600f, 1.295422535037119800f, 1.295130331643818500f, + 1.294838080632277000f, + 1.294545782013240900f, 1.294253435797456900f, 1.293961041995673700f, + 1.293668600618642000f, + 1.293376111677113900f, 1.293083575181843500f, 1.292790991143586200f, + 1.292498359573099700f, + 1.292205680481143500f, 1.291912953878477900f, 1.291620179775866400f, + 1.291327358184073200f, + 1.291034489113864100f, 1.290741572576007400f, 1.290448608581273000f, + 1.290155597140431700f, + 1.289862538264257700f, 1.289569431963524900f, 1.289276278249010600f, + 1.288983077131493000f, + 1.288689828621752300f, 1.288396532730570400f, 1.288103189468731400f, + 1.287809798847019800f, + 1.287516360876223500f, 1.287222875567130900f, 1.286929342930532800f, + 1.286635762977221800f, + 1.286342135717991600f, 1.286048461163638000f, 1.285754739324958900f, + 1.285460970212753500f, + 1.285167153837822900f, 1.284873290210969900f, 1.284579379342998700f, + 1.284285421244715900f, + 1.283991415926929400f, 1.283697363400448900f, 1.283403263676086100f, + 1.283109116764654000f, + 1.282814922676967400f, 1.282520681423843000f, 1.282226393016099500f, + 1.281932057464557000f, + 1.281637674780037100f, 1.281343244973363700f, 1.281048768055361900f, + 1.280754244036858900f, + 1.280459672928683500f, 1.280165054741666300f, 1.279870389486639400f, + 1.279575677174437100f, + 1.279280917815894600f, 1.278986111421849900f, 1.278691258003142000f, + 1.278396357570611900f, + 1.278101410135101800f, 1.277806415707456700f, 1.277511374298522200f, + 1.277216285919146500f, + 1.276921150580179200f, 1.276625968292471000f, 1.276330739066875400f, + 1.276035462914247000f, + 1.275740139845442400f, 1.275444769871319600f, 1.275149353002738700f, + 1.274853889250561200f, + 1.274558378625650200f, 1.274262821138871300f, 1.273967216801090900f, + 1.273671565623178100f, + 1.273375867616002300f, 1.273080122790436000f, 1.272784331157352800f, + 1.272488492727628100f, + 1.272192607512139300f, 1.271896675521764900f, 1.271600696767385400f, + 1.271304671259883200f, + 1.271008599010142500f, 1.270712480029048800f, 1.270416314327489800f, + 1.270120101916354600f, + 1.269823842806533800f, 1.269527537008920300f, 1.269231184534408200f, + 1.268934785393893700f, + 1.268638339598274500f, 1.268341847158450200f, 1.268045308085321800f, + 1.267748722389792100f, + 1.267452090082765900f, 1.267155411175149500f, 1.266858685677851000f, + 1.266561913601780100f, + 1.266265094957848000f, 1.265968229756968100f, 1.265671318010055400f, + 1.265374359728026500f, + 1.265077354921799300f, 1.264780303602294200f, 1.264483205780432700f, + 1.264186061467138500f, + 1.263888870673336400f, 1.263591633409954000f, 1.263294349687918800f, + 1.262997019518161700f, + 1.262699642911614600f, 1.262402219879211300f, 1.262104750431887000f, + 1.261807234580578900f, + 1.261509672336225600f, 1.261212063709767900f, 1.260914408712147800f, + 1.260616707354309500f, + 1.260318959647198400f, 1.260021165601761900f, 1.259723325228949000f, + 1.259425438539710300f, + 1.259127505544998600f, 1.258829526255768000f, 1.258531500682973800f, + 1.258233428837574300f, + 1.257935310730528000f, 1.257637146372796400f, 1.257338935775342200f, + 1.257040678949129500f, + 1.256742375905124400f, 1.256444026654294400f, 1.256145631207609400f, + 1.255847189576040100f, + 1.255548701770560000f, 1.255250167802143000f, 1.254951587681765600f, + 1.254652961420405600f, + 1.254354289029042900f, 1.254055570518658500f, 1.253756805900235700f, + 1.253457995184759300f, + 1.253159138383215200f, 1.252860235506592100f, 1.252561286565879300f, + 1.252262291572068900f, + 1.251963250536153500f, 1.251664163469128300f, 1.251365030381989700f, + 1.251065851285736200f, + 1.250766626191367500f, 1.250467355109885500f, 1.250168038052293500f, + 1.249868675029596200f, + 1.249569266052800800f, 1.249269811132915200f, 1.248970310280950200f, + 1.248670763507917100f, + 1.248371170824829300f, 1.248071532242702100f, 1.247771847772552300f, + 1.247472117425398700f, + 1.247172341212261500f, 1.246872519144162300f, 1.246572651232124700f, + 1.246272737487174300f, + 1.245972777920338000f, 1.245672772542644400f, 1.245372721365123600f, + 1.245072624398807900f, + 1.244772481654731000f, 1.244472293143928300f, 1.244172058877436800f, + 1.243871778866295400f, + 1.243571453121544000f, 1.243271081654225400f, 1.242970664475383100f, + 1.242670201596062700f, + 1.242369693027311200f, 1.242069138780177400f, 1.241768538865712000f, + 1.241467893294967200f, + 1.241167202078996800f, 1.240866465228856100f, 1.240565682755603100f, + 1.240264854670295900f, + 1.239963980983995300f, 1.239663061707763700f, 1.239362096852665300f, + 1.239061086429765300f, + 1.238760030450130900f, 1.238458928924831600f, 1.238157781864937400f, + 1.237856589281521000f, + 1.237555351185656500f, 1.237254067588419400f, 1.236952738500886900f, + 1.236651363934138300f, + 1.236349943899254000f, 1.236048478407316500f, 1.235746967469409900f, + 1.235445411096619500f, + 1.235143809300033300f, 1.234842162090739700f, 1.234540469479829900f, + 1.234238731478396000f, + 1.233936948097532400f, 1.233635119348334400f, 1.233333245241899200f, + 1.233031325789326400f, + 1.232729361001716500f, 1.232427350890172000f, 1.232125295465796600f, + 1.231823194739696300f, + 1.231521048722978200f, 1.231218857426751700f, 1.230916620862127400f, + 1.230614339040217800f, + 1.230312011972136500f, 1.230009639668999500f, 1.229707222141924100f, + 1.229404759402029400f, + 1.229102251460436400f, 1.228799698328266700f, 1.228497100016644900f, + 1.228194456536696500f, + 1.227891767899548700f, 1.227589034116330700f, 1.227286255198173100f, + 1.226983431156208200f, + 1.226680562001569900f, 1.226377647745394000f, 1.226074688398817600f, + 1.225771683972980200f, + 1.225468634479021500f, 1.225165539928084300f, 1.224862400331312400f, + 1.224559215699851500f, + 1.224255986044848500f, 1.223952711377453100f, 1.223649391708814700f, + 1.223346027050086400f, + 1.223042617412421600f, 1.222739162806975900f, 1.222435663244906700f, + 1.222132118737372400f, + 1.221828529295533800f, 1.221524894930552800f, 1.221221215653593100f, + 1.220917491475820500f, + 1.220613722408401900f, 1.220309908462505800f, 1.220006049649302800f, + 1.219702145979964600f, + 1.219398197465665400f, 1.219094204117580300f, 1.218790165946886100f, + 1.218486082964761500f, + 1.218181955182386500f, 1.217877782610943700f, 1.217573565261616000f, + 1.217269303145589000f, + 1.216964996274049400f, 1.216660644658185600f, 1.216356248309187600f, + 1.216051807238247800f, + 1.215747321456559300f, 1.215442790975316700f, 1.215138215805717300f, + 1.214833595958959300f, + 1.214528931446242600f, 1.214224222278769100f, 1.213919468467741900f, + 1.213614670024366000f, + 1.213309826959847700f, 1.213004939285395400f, 1.212700007012219100f, + 1.212395030151530300f, + 1.212090008714541600f, 1.211784942712468300f, 1.211479832156526800f, + 1.211174677057934800f, + 1.210869477427912300f, 1.210564233277680500f, 1.210258944618462200f, + 1.209953611461482200f, + 1.209648233817966600f, 1.209342811699143600f, 1.209037345116242400f, + 1.208731834080493800f, + 1.208426278603131200f, 1.208120678695388600f, 1.207815034368502100f, + 1.207509345633709600f, + 1.207203612502250300f, 1.206897834985365000f, 1.206592013094296200f, + 1.206286146840288300f, + 1.205980236234587100f, 1.205674281288440000f, 1.205368282013096200f, + 1.205062238419806200f, + 1.204756150519822300f, 1.204450018324398900f, 1.204143841844791200f, + 1.203837621092256800f, + 1.203531356078054100f, 1.203225046813444000f, 1.202918693309688300f, + 1.202612295578050900f, + 1.202305853629797500f, 1.201999367476194400f, 1.201692837128510700f, + 1.201386262598016500f, + 1.201079643895983700f, 1.200772981033685800f, 1.200466274022397900f, + 1.200159522873396800f, + 1.199852727597960700f, 1.199545888207369700f, 1.199239004712905300f, + 1.198932077125851100f, + 1.198625105457491700f, 1.198318089719113200f, 1.198011029922004400f, + 1.197703926077454200f, + 1.197396778196754700f, 1.197089586291198500f, 1.196782350372080300f, + 1.196475070450696100f, + 1.196167746538343600f, 1.195860378646322700f, 1.195552966785933900f, + 1.195245510968480300f, + 1.194938011205265900f, 1.194630467507596500f, 1.194322879886780000f, + 1.194015248354125100f, + 1.193707572920943000f, 1.193399853598545500f, 1.193092090398246900f, + 1.192784283331362700f, + 1.192476432409210100f, 1.192168537643107900f, 1.191860599044376500f, + 1.191552616624337800f, + 1.191244590394315400f, 1.190936520365635000f, 1.190628406549622900f, + 1.190320248957608100f, + 1.190012047600920200f, 1.189703802490891000f, 1.189395513638853900f, + 1.189087181056143900f, + 1.188778804754097300f, 1.188470384744052100f, 1.188161921037348400f, + 1.187853413645327100f, + 1.187544862579331500f, 1.187236267850706000f, 1.186927629470796900f, + 1.186618947450951600f, + 1.186310221802519900f, 1.186001452536852300f, 1.185692639665301600f, + 1.185383783199222000f, + 1.185074883149969100f, 1.184765939528900500f, 1.184456952347374900f, + 1.184147921616753200f, + 1.183838847348397400f, 1.183529729553671500f, 1.183220568243940300f, + 1.182911363430571200f, + 1.182602115124932900f, 1.182292823338395100f, 1.181983488082330300f, + 1.181674109368111300f, + 1.181364687207113100f, 1.181055221610712400f, 1.180745712590287400f, + 1.180436160157217800f, + 1.180126564322885100f, 1.179816925098671900f, 1.179507242495962900f, + 1.179197516526144600f, + 1.178887747200604300f, 1.178577934530731700f, 1.178268078527917200f, + 1.177958179203553800f, + 1.177648236569035300f, 1.177338250635757700f, 1.177028221415118200f, + 1.176718148918515700f, + 1.176408033157350300f, 1.176097874143024600f, 1.175787671886942000f, + 1.175477426400507700f, + 1.175167137695128900f, 1.174856805782213500f, 1.174546430673171900f, + 1.174236012379415600f, + 1.173925550912357800f, 1.173615046283413200f, 1.173304498503998400f, + 1.172993907585530900f, + 1.172683273539430800f, 1.172372596377118800f, 1.172061876110017700f, + 1.171751112749551900f, + 1.171440306307147200f, 1.171129456794231200f, 1.170818564222232800f, + 1.170507628602582800f, + 1.170196649946713100f, 1.169885628266057900f, 1.169574563572052300f, + 1.169263455876133200f, + 1.168952305189739200f, 1.168641111524310700f, 1.168329874891289400f, + 1.168018595302118000f, + 1.167707272768241800f, 1.167395907301107100f, 1.167084498912162300f, + 1.166773047612856400f, + 1.166461553414641000f, 1.166150016328968600f, 1.165838436367293800f, + 1.165526813541072100f, + 1.165215147861761400f, 1.164903439340820900f, 1.164591687989710500f, + 1.164279893819892800f, + 1.163968056842831700f, 1.163656177069992500f, 1.163344254512841800f, + 1.163032289182848800f, + 1.162720281091483000f, 1.162408230250216100f, 1.162096136670521600f, + 1.161784000363874000f, + 1.161471821341749900f, 1.161159599615627000f, 1.160847335196984800f, + 1.160535028097304600f, + 1.160222678328068700f, 1.159910285900761700f, 1.159597850826869200f, + 1.159285373117878500f, + 1.158972852785278500f, 1.158660289840559800f, 1.158347684295214300f, + 1.158035036160735900f, + 1.157722345448619400f, 1.157409612170361600f, 1.157096836337461000f, + 1.156784017961417500f, + 1.156471157053732300f, 1.156158253625908700f, 1.155845307689450800f, + 1.155532319255865300f, + 1.155219288336659400f, 1.154906214943342700f, 1.154593099087426000f, + 1.154279940780421400f, + 1.153966740033842900f, 1.153653496859206000f, 1.153340211268028000f, + 1.153026883271827300f, + 1.152713512882124400f, 1.152400100110440700f, 1.152086644968299400f, + 1.151773147467225300f, + 1.151459607618745300f, 1.151146025434387000f, 1.150832400925680100f, + 1.150518734104155400f, + 1.150205024981345800f, 1.149891273568785400f, 1.149577479878009800f, + 1.149263643920556800f, + 1.148949765707964600f, 1.148635845251773800f, 1.148321882563526400f, + 1.148007877654766200f, + 1.147693830537038100f, 1.147379741221888500f, 1.147065609720865600f, + 1.146751436045519300f, + 1.146437220207400700f, 1.146122962218062600f, 1.145808662089060000f, + 1.145494319831947800f, + 1.145179935458284100f, 1.144865508979627800f, 1.144551040407539400f, + 1.144236529753581000f, + 1.143921977029316500f, 1.143607382246310600f, 1.143292745416130600f, + 1.142978066550344400f, + 1.142663345660522000f, 1.142348582758234900f, 1.142033777855056000f, + 1.141718930962559500f, + 1.141404042092321500f, 1.141089111255919800f, 1.140774138464933700f, + 1.140459123730943200f, + 1.140144067065530700f, 1.139828968480280300f, 1.139513827986776900f, + 1.139198645596607400f, + 1.138883421321360600f, 1.138568155172625700f, 1.138252847161994400f, + 1.137937497301059600f, + 1.137622105601416000f, 1.137306672074659900f, 1.136991196732388200f, + 1.136675679586200500f, + 1.136360120647697200f, 1.136044519928480800f, 1.135728877440154800f, + 1.135413193194324800f, + 1.135097467202597100f, 1.134781699476580300f, 1.134465890027884300f, + 1.134150038868120500f, + 1.133834146008902100f, 1.133518211461843200f, 1.133202235238559800f, + 1.132886217350669500f, + 1.132570157809791500f, 1.132254056627546300f, 1.131937913815556300f, + 1.131621729385444900f, + 1.131305503348837300f, 1.130989235717360100f, 1.130672926502642100f, + 1.130356575716312500f, + 1.130040183370002900f, 1.129723749475346000f, 1.129407274043976200f, + 1.129090757087529500f, + 1.128774198617643200f, 1.128457598645956600f, 1.128140957184109700f, + 1.127824274243744500f, + 1.127507549836505000f, 1.127190783974035800f, 1.126873976667983800f, + 1.126557127929996800f, + 1.126240237771724700f, 1.125923306204818400f, 1.125606333240930700f, + 1.125289318891715900f, + 1.124972263168829500f, 1.124655166083928800f, 1.124338027648672500f, + 1.124020847874721100f, + 1.123703626773736100f, 1.123386364357381200f, 1.123069060637320600f, + 1.122751715625221400f, + 1.122434329332750800f, 1.122116901771578400f, 1.121799432953375600f, + 1.121481922889814300f, + 1.121164371592568300f, 1.120846779073313400f, 1.120529145343726500f, + 1.120211470415486200f, + 1.119893754300272300f, 1.119575997009766300f, 1.119258198555651300f, + 1.118940358949611900f, + 1.118622478203333800f, 1.118304556328505200f, 1.117986593336814700f, + 1.117668589239953200f, + 1.117350544049612300f, 1.117032457777486200f, 1.116714330435269600f, + 1.116396162034659600f, + 1.116077952587353600f, 1.115759702105052000f, 1.115441410599455500f, + 1.115123078082267000f, + 1.114804704565190500f, 1.114486290059931900f, 1.114167834578198200f, + 1.113849338131698300f, + 1.113530800732142100f, 1.113212222391241500f, 1.112893603120710000f, + 1.112574942932261600f, + 1.112256241837613000f, 1.111937499848481900f, 1.111618716976587700f, + 1.111299893233650600f, + 1.110981028631393700f, 1.110662123181539900f, 1.110343176895814500f, + 1.110024189785944900f, + 1.109705161863658600f, 1.109386093140686000f, 1.109066983628758100f, + 1.108747833339607200f, + 1.108428642284968100f, 1.108109410476576300f, 1.107790137926169200f, + 1.107470824645485600f, + 1.107151470646265300f, 1.106832075940250600f, 1.106512640539184100f, + 1.106193164454811100f, + 1.105873647698877300f, 1.105554090283131100f, 1.105234492219321100f, + 1.104914853519198400f, + 1.104595174194514800f, 1.104275454257024300f, 1.103955693718482200f, + 1.103635892590644900f, + 1.103316050885270600f, 1.102996168614119000f, 1.102676245788951400f, + 1.102356282421530300f, + 1.102036278523620000f, 1.101716234106985700f, 1.101396149183395000f, + 1.101076023764616400f, + 1.100755857862419700f, 1.100435651488577100f, 1.100115404654861100f, + 1.099795117373046200f, + 1.099474789654909100f, 1.099154421512226600f, 1.098834012956778200f, + 1.098513564000344300f, + 1.098193074654706800f, 1.097872544931649100f, 1.097551974842956500f, + 1.097231364400415000f, + 1.096910713615813200f, 1.096590022500939700f, 1.096269291067585700f, + 1.095948519327543800f, + 1.095627707292607700f, 1.095306854974572800f, 1.094985962385235800f, + 1.094665029536395100f, + 1.094344056439850600f, 1.094023043107403200f, 1.093701989550856000f, + 1.093380895782013000f, + 1.093059761812680100f, 1.092738587654664300f, 1.092417373319774200f, + 1.092096118819820200f, + 1.091774824166613600f, 1.091453489371968100f, 1.091132114447697300f, + 1.090810699405617900f, + 1.090489244257547300f, 1.090167749015304300f, 1.089846213690709900f, + 1.089524638295585400f, + 1.089203022841754400f, 1.088881367341041800f, 1.088559671805274100f, + 1.088237936246279100f, + 1.087916160675885800f, 1.087594345105925300f, 1.087272489548229700f, + 1.086950594014632700f, + 1.086628658516969500f, 1.086306683067076900f, 1.085984667676792600f, + 1.085662612357956500f, + 1.085340517122409800f, 1.085018381981994500f, 1.084696206948555300f, + 1.084373992033937000f, + 1.084051737249986900f, 1.083729442608553300f, 1.083407108121486000f, + 1.083084733800636200f, + 1.082762319657857100f, 1.082439865705002500f, 1.082117371953928300f, + 1.081794838416491700f, + 1.081472265104551200f, 1.081149652029967000f, 1.080826999204601100f, + 1.080504306640315500f, + 1.080181574348975500f, 1.079858802342446900f, 1.079535990632596800f, + 1.079213139231294500f, + 1.078890248150409700f, 1.078567317401815100f, 1.078244346997383300f, + 1.077921336948988600f, + 1.077598287268508400f, 1.077275197967819000f, 1.076952069058800400f, + 1.076628900553332700f, + 1.076305692463297900f, 1.075982444800579700f, 1.075659157577062200f, + 1.075335830804633000f, + 1.075012464495178800f, 1.074689058660589700f, 1.074365613312755900f, + 1.074042128463569500f, + 1.073718604124924500f, 1.073395040308715400f, 1.073071437026839500f, + 1.072747794291194300f, + 1.072424112113678600f, 1.072100390506194500f, 1.071776629480643500f, + 1.071452829048929800f, + 1.071128989222958500f, 1.070805110014635900f, 1.070481191435870500f, + 1.070157233498571600f, + 1.069833236214650800f, 1.069509199596019800f, 1.069185123654592600f, + 1.068861008402285200f, + 1.068536853851013600f, 1.068212660012696700f, 1.067888426899253500f, + 1.067564154522606000f, + 1.067239842894676100f, 1.066915492027387600f, 1.066591101932666800f, + 1.066266672622439700f, + 1.065942204108635300f, 1.065617696403183400f, 1.065293149518014500f, + 1.064968563465062100f, + 1.064643938256259400f, 1.064319273903543000f, 1.063994570418849400f, + 1.063669827814116300f, + 1.063345046101285000f, 1.063020225292295300f, 1.062695365399091200f, + 1.062370466433616400f, + 1.062045528407815900f, 1.061720551333637600f, 1.061395535223029500f, + 1.061070480087941800f, + 1.060745385940325500f, 1.060420252792134000f, 1.060095080655320900f, + 1.059769869541841800f, + 1.059444619463654400f, 1.059119330432716700f, 1.058794002460989000f, + 1.058468635560432500f, + 1.058143229743009600f, 1.057817785020685100f, 1.057492301405424500f, + 1.057166778909195000f, + 1.056841217543965200f, 1.056515617321704500f, 1.056189978254385100f, + 1.055864300353978900f, + 1.055538583632461100f, 1.055212828101807200f, 1.054887033773993300f, + 1.054561200660999200f, + 1.054235328774803900f, 1.053909418127389400f, 1.053583468730738200f, + 1.053257480596834700f, + 1.052931453737664600f, 1.052605388165214700f, 1.052279283891473600f, + 1.051953140928431100f, + 1.051626959288079100f, 1.051300738982409800f, 1.050974480023417500f, + 1.050648182423098000f, + 1.050321846193448000f, 1.049995471346466300f, 1.049669057894152800f, + 1.049342605848508200f, + 1.049016115221536000f, 1.048689586025239700f, 1.048363018271625300f, + 1.048036411972699500f, + 1.047709767140470500f, 1.047383083786948700f, 1.047056361924144400f, + 1.046729601564071200f, + 1.046402802718742400f, 1.046075965400174300f, 1.045749089620383200f, + 1.045422175391386800f, + 1.045095222725206200f, 1.044768231633861100f, 1.044441202129375200f, + 1.044114134223771900f, + 1.043787027929076000f, 1.043459883257315400f, 1.043132700220517300f, + 1.042805478830712200f, + 1.042478219099930400f, 1.042150921040204200f, 1.041823584663568200f, + 1.041496209982056600f, + 1.041168797007707000f, 1.040841345752557200f, 1.040513856228645800f, + 1.040186328448014800f, + 1.039858762422705600f, 1.039531158164762400f, 1.039203515686230000f, + 1.038875834999155100f, + 1.038548116115585800f, 1.038220359047570500f, 1.037892563807160800f, + 1.037564730406408200f, + 1.037236858857366600f, 1.036908949172090900f, 1.036581001362636600f, + 1.036253015441062700f, + 1.035924991419427100f, 1.035596929309791300f, 1.035268829124216700f, + 1.034940690874766300f, + 1.034612514573505700f, 1.034284300232500000f, 1.033956047863817500f, + 1.033627757479526700f, + 1.033299429091697700f, 1.032971062712402700f, 1.032642658353714300f, + 1.032314216027707700f, + 1.031985735746457900f, 1.031657217522042900f, 1.031328661366541300f, + 1.031000067292032300f, + 1.030671435310598600f, 1.030342765434322200f, 1.030014057675287900f, + 1.029685312045581100f, + 1.029356528557288300f, 1.029027707222499100f, 1.028698848053302100f, + 1.028369951061789600f, + 1.028041016260053500f, 1.027712043660187600f, 1.027383033274288400f, + 1.027053985114451100f, + 1.026724899192775300f, 1.026395775521359500f, 1.026066614112305600f, + 1.025737414977715200f, + 1.025408178129692000f, 1.025078903580341600f, 1.024749591341769700f, + 1.024420241426085200f, + 1.024090853845396800f, 1.023761428611814600f, 1.023431965737451800f, + 1.023102465234420700f, + 1.022772927114837100f, 1.022443351390816400f, 1.022113738074476300f, + 1.021784087177936000f, + 1.021454398713315600f, 1.021124672692737000f, 1.020794909128323000f, + 1.020465108032198300f, + 1.020135269416488700f, 1.019805393293321100f, 1.019475479674824900f, + 1.019145528573129000f, + 1.018815540000365800f, 1.018485513968667500f, 1.018155450490168000f, + 1.017825349577003300f, + 1.017495211241309800f, 1.017165035495226400f, 1.016834822350892300f, + 1.016504571820448000f, + 1.016174283916036800f, 1.015843958649801600f, 1.015513596033888400f, + 1.015183196080442900f, + 1.014852758801613200f, 1.014522284209548900f, 1.014191772316400000f, + 1.013861223134318900f, + 1.013530636675459100f, 1.013200012951974700f, 1.012869351976022300f, + 1.012538653759758900f, + 1.012207918315344300f, 1.011877145654937400f, 1.011546335790700600f, + 1.011215488734796800f, + 1.010884604499389800f, 1.010553683096645900f, 1.010222724538731600f, + 1.009891728837815700f, + 1.009560696006067900f, 1.009229626055658800f, 1.008898518998761800f, + 1.008567374847549900f, + 1.008236193614199000f, 1.007904975310885300f, 1.007573719949786700f, + 1.007242427543082900f, + 1.006911098102953900f, 1.006579731641582500f, 1.006248328171152100f, + 1.005916887703846500f, + 1.005585410251852700f, 1.005253895827357800f, 1.004922344442551000f, + 1.004590756109621900f, + 1.004259130840762700f, 1.003927468648166100f, 1.003595769544025900f, + 1.003264033540538500f, + 1.002932260649900000f, 1.002600450884309800f, 1.002268604255967200f, + 1.001936720777072400f, + 1.001604800459829000f, 1.001272843316440000f, 1.000940849359111000f, + 1.000608818600048100f, + 1.000276751051459200f, 0.999944646725553720f, 0.999612505634541740f, + 0.999280327790635690f, + 0.998948113206048590f, 0.998615861892994560f, 0.998283573863690270f, + 0.997951249130352380f, + 0.997618887705200020f, 0.997286489600452630f, 0.996954054828332210f, + 0.996621583401061110f, + 0.996289075330862860f, 0.995956530629963810f, 0.995623949310589620f, + 0.995291331384969390f, + 0.994958676865332010f, 0.994625985763907820f, 0.994293258092929790f, + 0.993960493864630480f, + 0.993627693091245660f, 0.993294855785010760f, 0.992961981958163210f, + 0.992629071622942340f, + 0.992296124791587690f, 0.991963141476341460f, 0.991630121689446090f, + 0.991297065443145440f, + 0.990963972749685840f, 0.990630843621313260f, 0.990297678070276800f, + 0.989964476108825210f, + 0.989631237749210020f, 0.989297963003683330f, 0.988964651884498000f, + 0.988631304403909890f, + 0.988297920574174430f, 0.987964500407549910f, 0.987631043916294970f, + 0.987297551112669370f, + 0.986964022008935520f, 0.986630456617355380f, 0.986296854950194260f, + 0.985963217019717120f, + 0.985629542838190490f, 0.985295832417883540f, 0.984962085771065030f, + 0.984628302910006580f, + 0.984294483846980150f, 0.983960628594258810f, 0.983626737164118190f, + 0.983292809568833910f, + 0.982958845820684270f, 0.982624845931947320f, 0.982290809914904140f, + 0.981956737781835790f, + 0.981622629545024770f, 0.981288485216756160f, 0.980954304809314670f, + 0.980620088334987930f, + 0.980285835806063770f, 0.979951547234831130f, 0.979617222633581860f, + 0.979282862014607240f, + 0.978948465390201530f, 0.978614032772659240f, 0.978279564174275860f, + 0.977945059607349900f, + 0.977610519084179290f, 0.977275942617064740f, 0.976941330218307540f, + 0.976606681900209830f, + 0.976271997675076550f, 0.975937277555212310f, 0.975602521552924600f, + 0.975267729680520560f, + 0.974932901950310350f, 0.974598038374604350f, 0.974263138965714040f, + 0.973928203735953460f, + 0.973593232697636530f, 0.973258225863079970f, 0.972923183244600480f, + 0.972588104854516410f, + 0.972252990705148370f, 0.971917840808816710f, 0.971582655177844700f, + 0.971247433824555920f, + 0.970912176761274950f, 0.970576884000329040f, 0.970241555554045230f, + 0.969906191434753320f, + 0.969570791654783330f, 0.969235356226466500f, 0.968899885162136650f, + 0.968564378474127350f, + 0.968228836174775060f, 0.967893258276415700f, 0.967557644791388500f, + 0.967221995732032490f, + 0.966886311110688230f, 0.966550590939698640f, 0.966214835231406500f, + 0.965879043998157160f, + 0.965543217252296420f, 0.965207355006171270f, 0.964871457272131190f, + 0.964535524062525410f, + 0.964199555389706030f, 0.963863551266025300f, 0.963527511703836660f, + 0.963191436715496120f, + 0.962855326313359350f, 0.962519180509785130f, 0.962182999317132030f, + 0.961846782747760140f, + 0.961510530814032040f, 0.961174243528309820f, 0.960837920902958720f, + 0.960501562950343390f, + 0.960165169682831830f, 0.959828741112791590f, 0.959492277252591900f, + 0.959155778114604400f, + 0.958819243711200310f, 0.958482674054753960f, 0.958146069157639560f, + 0.957809429032232760f, + 0.957472753690911670f, 0.957136043146054050f, 0.956799297410040440f, + 0.956462516495251940f, + 0.956125700414070300f, 0.955788849178880300f, 0.955451962802066120f, + 0.955115041296014880f, + 0.954778084673113870f, 0.954441092945751630f, 0.954104066126319150f, + 0.953767004227207060f, + 0.953429907260809120f, 0.953092775239518630f, 0.952755608175731570f, + 0.952418406081844360f, + 0.952081168970254520f, 0.951743896853362140f, 0.951406589743566950f, + 0.951069247653271500f, + 0.950731870594878510f, 0.950394458580791970f, 0.950057011623418380f, + 0.949719529735163940f, + 0.949382012928437600f, 0.949044461215648560f, 0.948706874609207220f, + 0.948369253121526420f, + 0.948031596765018910f, 0.947693905552099870f, 0.947356179495185020f, + 0.947018418606691230f, + 0.946680622899037650f, 0.946342792384643360f, 0.946004927075930090f, + 0.945667026985319680f, + 0.945329092125236190f, 0.944991122508104350f, 0.944653118146349890f, + 0.944315079052401090f, + 0.943977005238685770f, 0.943638896717634900f, 0.943300753501679190f, + 0.942962575603250920f, + 0.942624363034784580f, 0.942286115808714690f, 0.941947833937478270f, + 0.941609517433512730f, + 0.941271166309256450f, 0.940932780577150460f, 0.940594360249635500f, + 0.940255905339155150f, + 0.939917415858152920f, 0.939578891819073720f, 0.939240333234364950f, + 0.938901740116473540f, + 0.938563112477849630f, 0.938224450330942590f, 0.937885753688204820f, + 0.937547022562088990f, + 0.937208256965048840f, 0.936869456909540490f, 0.936530622408019990f, + 0.936191753472946030f, + 0.935852850116777430f, 0.935513912351974450f, 0.935174940190999560f, + 0.934835933646314900f, + 0.934496892730385720f, 0.934157817455677160f, 0.933818707834655590f, + 0.933479563879790030f, + 0.933140385603548840f, 0.932801173018403480f, 0.932461926136825660f, + 0.932122644971287830f, + 0.931783329534265240f, 0.931443979838232900f, 0.931104595895668410f, + 0.930765177719049210f, + 0.930425725320855430f, 0.930086238713567440f, 0.929746717909666790f, + 0.929407162921637610f, + 0.929067573761963250f, 0.928727950443130500f, 0.928388292977625930f, + 0.928048601377937210f, + 0.927708875656554800f, 0.927369115825968480f, 0.927029321898671270f, + 0.926689493887155820f, + 0.926349631803916270f, 0.926009735661449170f, 0.925669805472250860f, + 0.925329841248820340f, + 0.924989843003656610f, 0.924649810749260110f, 0.924309744498133750f, + 0.923969644262779830f, + 0.923629510055703820f, 0.923289341889410480f, 0.922949139776407800f, + 0.922608903729203570f, + 0.922268633760306990f, 0.921928329882229390f, 0.921587992107482210f, + 0.921247620448579440f, + 0.920907214918035070f, 0.920566775528364410f, 0.920226302292085460f, + 0.919885795221715540f, + 0.919545254329774850f, 0.919204679628783720f, 0.918864071131263780f, + 0.918523428849739030f, + 0.918182752796733110f, 0.917842042984772340f, 0.917501299426383480f, + 0.917160522134094160f, + 0.916819711120434700f, 0.916478866397934850f, 0.916137987979127270f, + 0.915797075876544350f, + 0.915456130102721200f, 0.915115150670193110f, 0.914774137591496510f, + 0.914433090879170130f, + 0.914092010545752620f, 0.913750896603785280f, 0.913409749065809520f, + 0.913068567944367970f, + 0.912727353252005710f, 0.912386105001267270f, 0.912044823204700370f, + 0.911703507874852440f, + 0.911362159024272310f, 0.911020776665511290f, 0.910679360811120000f, + 0.910337911473652390f, + 0.909996428665661990f, 0.909654912399703860f, 0.909313362688335290f, + 0.908971779544113350f, + 0.908630162979597760f, 0.908288513007348140f, 0.907946829639926790f, + 0.907605112889895870f, + 0.907263362769819000f, 0.906921579292262250f, 0.906579762469791110f, + 0.906237912314974080f, + 0.905896028840379560f, 0.905554112058577170f, 0.905212161982139160f, + 0.904870178623637170f, + 0.904528161995645670f, 0.904186112110739510f, 0.903844028981494190f, + 0.903501912620488070f, + 0.903159763040298880f, 0.902817580253507450f, 0.902475364272694370f, + 0.902133115110441470f, + 0.901790832779333250f, 0.901448517291953520f, 0.901106168660889110f, + 0.900763786898726380f, + 0.900421372018054500f, 0.900078924031462610f, 0.899736442951541320f, + 0.899393928790883420f, + 0.899051381562081310f, 0.898708801277730340f, 0.898366187950425780f, + 0.898023541592764210f, + 0.897680862217344440f, 0.897338149836764960f, 0.896995404463627350f, + 0.896652626110532870f, + 0.896309814790084090f, 0.895966970514885940f, 0.895624093297543110f, + 0.895281183150662960f, + 0.894938240086852970f, 0.894595264118721810f, 0.894252255258880410f, + 0.893909213519939460f, + 0.893566138914512420f, 0.893223031455212530f, 0.892879891154655380f, + 0.892536718025457090f, + 0.892193512080234670f, 0.891850273331607600f, 0.891507001792195000f, + 0.891163697474618880f, + 0.890820360391500920f, 0.890476990555464480f, 0.890133587979135000f, + 0.889790152675137610f, + 0.889446684656100330f, 0.889103183934650930f, 0.888759650523418650f, + 0.888416084435035060f, + 0.888072485682131150f, 0.887728854277341050f, 0.887385190233298650f, + 0.887041493562639060f, + 0.886697764277999840f, 0.886354002392018110f, 0.886010207917333760f, + 0.885666380866586560f, + 0.885322521252418610f, 0.884978629087472270f, 0.884634704384391180f, + 0.884290747155821230f, + 0.883946757414407980f, 0.883602735172799640f, 0.883258680443644530f, + 0.882914593239592320f, + 0.882570473573294660f, 0.882226321457403320f, 0.881882136904572400f, + 0.881537919927456340f, + 0.881193670538710450f, 0.880849388750992610f, 0.880505074576960370f, + 0.880160728029273920f, + 0.879816349120593590f, 0.879471937863580690f, 0.879127494270899090f, + 0.878783018355212220f, + 0.878438510129186170f, 0.878093969605486800f, 0.877749396796782770f, + 0.877404791715742370f, + 0.877060154375035710f, 0.876715484787334630f, 0.876370782965310900f, + 0.876026048921639160f, + 0.875681282668993700f, 0.875336484220050390f, 0.874991653587487090f, + 0.874646790783981660f, + 0.874301895822214290f, 0.873956968714865500f, 0.873612009474616810f, + 0.873267018114152300f, + 0.872921994646155390f, 0.872576939083312460f, 0.872231851438309840f, + 0.871886731723835020f, + 0.871541579952577750f, 0.871196396137227660f, 0.870851180290476810f, + 0.870505932425017060f, + 0.870160652553543020f, 0.869815340688749220f, 0.869469996843331370f, + 0.869124621029987670f, + 0.868779213261415610f, 0.868433773550315810f, 0.868088301909388680f, + 0.867742798351335720f, + 0.867397262888861100f, 0.867051695534668210f, 0.866706096301463340f, + 0.866360465201952980f, + 0.866014802248844420f, 0.865669107454847490f, 0.865323380832671800f, + 0.864977622395029290f, + 0.864631832154632240f, 0.864286010124194040f, 0.863940156316430170f, + 0.863594270744056040f, + 0.863248353419789670f, 0.862902404356348570f, 0.862556423566453230f, + 0.862210411062823810f, + 0.861864366858181910f, 0.861518290965251340f, 0.861172183396755500f, + 0.860826044165420630f, + 0.860479873283972910f, 0.860133670765139580f, 0.859787436621650360f, + 0.859441170866234390f, + 0.859094873511623840f, 0.858748544570550610f, 0.858402184055747750f, + 0.858055791979950740f, + 0.857709368355894840f, 0.857362913196317630f, 0.857016426513956930f, + 0.856669908321551650f, + 0.856323358631843170f, 0.855976777457572280f, 0.855630164811482460f, + 0.855283520706317080f, + 0.854936845154821930f, 0.854590138169742830f, 0.854243399763827020f, + 0.853896629949823630f, + 0.853549828740481690f, 0.853202996148552880f, 0.852856132186788910f, + 0.852509236867942440f, + 0.852162310204768740f, 0.851815352210022470f, 0.851468362896461110f, + 0.851121342276842110f, + 0.850774290363923820f, 0.850427207170467380f, 0.850080092709233130f, + 0.849732946992984290f, + 0.849385770034483680f, 0.849038561846496730f, 0.848691322441788910f, + 0.848344051833126780f, + 0.847996750033279350f, 0.847649417055015060f, 0.847302052911105160f, + 0.846954657614320980f, + 0.846607231177434640f, 0.846259773613221020f, 0.845912284934454140f, + 0.845564765153910990f, + 0.845217214284368690f, 0.844869632338605130f, 0.844522019329400630f, + 0.844174375269535320f, + 0.843826700171791620f, 0.843478994048952440f, 0.843131256913801420f, + 0.842783488779124570f, + 0.842435689657707650f, 0.842087859562339000f, 0.841739998505806610f, + 0.841392106500900900f, + 0.841044183560412770f, 0.840696229697133760f, 0.840348244923857960f, + 0.840000229253379030f, + 0.839652182698493290f, 0.839304105271996950f, 0.838955996986687550f, + 0.838607857855364740f, + 0.838259687890827830f, 0.837911487105878820f, 0.837563255513319780f, + 0.837214993125953600f, + 0.836866699956585690f, 0.836518376018021260f, 0.836170021323067610f, + 0.835821635884532730f, + 0.835473219715225040f, 0.835124772827955830f, 0.834776295235535540f, + 0.834427786950777460f, + 0.834079247986494690f, 0.833730678355502630f, 0.833382078070616820f, + 0.833033447144653880f, + 0.832684785590432690f, 0.832336093420771970f, 0.831987370648492710f, + 0.831638617286416190f, + 0.831289833347364620f, 0.830941018844162600f, 0.830592173789634240f, + 0.830243298196606360f, + 0.829894392077905720f, 0.829545455446360270f, 0.829196488314800080f, + 0.828847490696055010f, + 0.828498462602957340f, 0.828149404048339590f, 0.827800315045035150f, + 0.827451195605879990f, + 0.827102045743709160f, 0.826752865471360950f, 0.826403654801672770f, + 0.826054413747485010f, + 0.825705142321637720f, 0.825355840536972420f, 0.825006508406332490f, + 0.824657145942561230f, + 0.824307753158504460f, 0.823958330067008030f, 0.823608876680918760f, + 0.823259393013085820f, + 0.822909879076357930f, 0.822560334883586490f, 0.822210760447622980f, + 0.821861155781319800f, + 0.821511520897531660f, 0.821161855809112830f, 0.820812160528920360f, + 0.820462435069811090f, + 0.820112679444643060f, 0.819762893666276530f, 0.819413077747571440f, + 0.819063231701390170f, + 0.818713355540594880f, 0.818363449278050270f, 0.818013512926620940f, + 0.817663546499172720f, + 0.817313550008573640f, 0.816963523467691410f, 0.816613466889396070f, + 0.816263380286557980f, + 0.815913263672048310f, 0.815563117058740630f, 0.815212940459508210f, + 0.814862733887226740f, + 0.814512497354771830f, 0.814162230875020380f, 0.813811934460851430f, + 0.813461608125143560f, + 0.813111251880778150f, 0.812760865740636440f, 0.812410449717600570f, + 0.812060003824555230f, + 0.811709528074384460f, 0.811359022479975040f, 0.811008487054213360f, + 0.810657921809988410f, + 0.810307326760189020f, 0.809956701917705080f, 0.809606047295428950f, + 0.809255362906252440f, + 0.808904648763069890f, 0.808553904878775760f, 0.808203131266265420f, + 0.807852327938436750f, + 0.807501494908186900f, 0.807150632188415760f, 0.806799739792023240f, + 0.806448817731910130f, + 0.806097866020979660f, 0.805746884672134620f, 0.805395873698280360f, + 0.805044833112322000f, + 0.804693762927166100f, 0.804342663155721230f, 0.803991533810895500f, + 0.803640374905599810f, + 0.803289186452744390f, 0.802937968465242240f, 0.802586720956006250f, + 0.802235443937950320f, + 0.801884137423990890f, 0.801532801427043530f, 0.801181435960026780f, + 0.800830041035858750f, + 0.800478616667459010f, 0.800127162867749210f, 0.799775679649650460f, + 0.799424167026086540f, + 0.799072625009981330f, 0.798721053614259490f, 0.798369452851848020f, + 0.798017822735673680f, + 0.797666163278665570f, 0.797314474493752810f, 0.796962756393865600f, + 0.796611008991936490f, + 0.796259232300897350f, 0.795907426333682830f, 0.795555591103226930f, + 0.795203726622466520f, + 0.794851832904338360f, 0.794499909961779990f, 0.794147957807731400f, + 0.793795976455132220f, + 0.793443965916924570f, 0.793091926206050400f, 0.792739857335452710f, + 0.792387759318077150f, + 0.792035632166868230f, 0.791683475894773720f, 0.791331290514740830f, + 0.790979076039718180f, + 0.790626832482656310f, 0.790274559856505520f, 0.789922258174218570f, + 0.789569927448748320f, + 0.789217567693048520f, 0.788865178920075130f, 0.788512761142783790f, + 0.788160314374132590f, + 0.787807838627079260f, 0.787455333914584220f, 0.787102800249607550f, + 0.786750237645110430f, + 0.786397646114056490f, 0.786045025669408700f, 0.785692376324132690f, + 0.785339698091194080f, + 0.784986990983559170f, 0.784634255014197040f, 0.784281490196075850f, + 0.783928696542166680f, + 0.783575874065440270f, 0.783223022778868350f, 0.782870142695425320f, + 0.782517233828084580f, + 0.782164296189822530f, 0.781811329793615120f, 0.781458334652439630f, + 0.781105310779275470f, + 0.780752258187101480f, 0.780399176888899150f, 0.780046066897649550f, + 0.779692928226336290f, + 0.779339760887942880f, 0.778986564895453810f, 0.778633340261856040f, + 0.778280087000135730f, + 0.777926805123281830f, 0.777573494644283050f, 0.777220155576129220f, + 0.776866787931812410f, + 0.776513391724324210f, 0.776159966966658680f, 0.775806513671809860f, + 0.775453031852772920f, + 0.775099521522545020f, 0.774745982694123090f, 0.774392415380506400f, + 0.774038819594694230f, + 0.773685195349686940f, 0.773331542658487140f, 0.772977861534096640f, + 0.772624151989520280f, + 0.772270414037761980f, 0.771916647691828660f, 0.771562852964726710f, + 0.771209029869463940f, + 0.770855178419050050f, 0.770501298626494410f, 0.770147390504808960f, + 0.769793454067005500f, + 0.769439489326096850f, 0.769085496295098040f, 0.768731474987023660f, + 0.768377425414890850f, + 0.768023347591716640f, 0.767669241530518850f, 0.767315107244318060f, + 0.766960944746133740f, + 0.766606754048988260f, 0.766252535165903970f, 0.765898288109903900f, + 0.765544012894013530f, + 0.765189709531257760f, 0.764835378034664170f, 0.764481018417259680f, + 0.764126630692073870f, + 0.763772214872136200f, 0.763417770970477140f, 0.763063299000129260f, + 0.762708798974124800f, + 0.762354270905498450f, 0.761999714807284790f, 0.761645130692519490f, + 0.761290518574240350f, + 0.760935878465484720f, 0.760581210379292380f, 0.760226514328703140f, + 0.759871790326757670f, + 0.759517038386499090f, 0.759162258520969860f, 0.758807450743214760f, + 0.758452615066278920f, + 0.758097751503208020f, 0.757742860067050380f, 0.757387940770853360f, + 0.757032993627667290f, + 0.756678018650541630f, 0.756323015852528700f, 0.755967985246680520f, + 0.755612926846050080f, + 0.755257840663692730f, 0.754902726712663120f, 0.754547585006018600f, + 0.754192415556816380f, + 0.753837218378114460f, 0.753481993482973400f, 0.753126740884452970f, + 0.752771460595615500f, + 0.752416152629523330f, 0.752060816999239660f, 0.751705453717829930f, + 0.751350062798359140f, + 0.750994644253894730f, 0.750639198097504010f, 0.750283724342255320f, + 0.749928223001219310f, + 0.749572694087465850f, 0.749217137614067500f, 0.748861553594096340f, + 0.748505942040627040f, + 0.748150302966733790f, 0.747794636385492150f, 0.747438942309979870f, + 0.747083220753273820f, + 0.746727471728453770f, 0.746371695248599140f, 0.746015891326790470f, + 0.745660059976110400f, + 0.745304201209641030f, 0.744948315040467210f, 0.744592401481673270f, + 0.744236460546344850f, + 0.743880492247569580f, 0.743524496598434670f, 0.743168473612029980f, + 0.742812423301444810f, + 0.742456345679769810f, 0.742100240760097840f, 0.741744108555520860f, + 0.741387949079133860f, + 0.741031762344030790f, 0.740675548363308620f, 0.740319307150063780f, + 0.739963038717393880f, + 0.739606743078398690f, 0.739250420246177380f, 0.738894070233831800f, + 0.738537693054463370f, + 0.738181288721174830f, 0.737824857247070810f, 0.737468398645255490f, + 0.737111912928835710f, + 0.736755400110918000f, 0.736398860204609870f, 0.736042293223021060f, + 0.735685699179260850f, + 0.735329078086440880f, 0.734972429957672760f, 0.734615754806068890f, + 0.734259052644744230f, + 0.733902323486812610f, 0.733545567345390890f, 0.733188784233595240f, + 0.732831974164544150f, + 0.732475137151356370f, 0.732118273207151170f, 0.731761382345050280f, + 0.731404464578174760f, + 0.731047519919648340f, 0.730690548382594280f, 0.730333549980137110f, + 0.729976524725403530f, + 0.729619472631519270f, 0.729262393711613280f, 0.728905287978813600f, + 0.728548155446249730f, + 0.728190996127053180f, 0.727833810034354990f, 0.727476597181288540f, + 0.727119357580987220f, + 0.726762091246585200f, 0.726404798191218950f, 0.726047478428024420f, + 0.725690131970139980f, + 0.725332758830703360f, 0.724975359022855150f, 0.724617932559735390f, + 0.724260479454485130f, + 0.723902999720247850f, 0.723545493370166160f, 0.723187960417385530f, + 0.722830400875050790f, + 0.722472814756308090f, 0.722115202074305680f, 0.721757562842191060f, + 0.721399897073114470f, + 0.721042204780225960f, 0.720684485976676230f, 0.720326740675618530f, + 0.719968968890205230f, + 0.719611170633591480f, 0.719253345918932090f, 0.718895494759382860f, + 0.718537617168101610f, + 0.718179713158245800f, 0.717821782742975370f, 0.717463825935449550f, + 0.717105842748830160f, + 0.716747833196278770f, 0.716389797290958090f, 0.716031735046032900f, + 0.715673646474667140f, + 0.715315531590027700f, 0.714957390405280950f, 0.714599222933594240f, + 0.714241029188137260f, + 0.713882809182079030f, 0.713524562928591010f, 0.713166290440844450f, + 0.712807991732011590f, + 0.712449666815266890f, 0.712091315703784260f, 0.711732938410739810f, + 0.711374534949309800f, + 0.711016105332671340f, 0.710657649574003460f, 0.710299167686484930f, + 0.709940659683296890f, + 0.709582125577619790f, 0.709223565382636760f, 0.708864979111530680f, + 0.708506366777485130f, + 0.708147728393686340f, 0.707789063973319310f, 0.707430373529572170f, + 0.707071657075632460f, + 0.706712914624688770f, 0.706354146189931750f, 0.705995351784551530f, + 0.705636531421740880f, + 0.705277685114692020f, 0.704918812876598410f, 0.704559914720655490f, + 0.704200990660058150f, + 0.703842040708003820f, 0.703483064877689630f, 0.703124063182313690f, + 0.702765035635076310f, + 0.702405982249177160f, 0.702046903037818250f, 0.701687798014201110f, + 0.701328667191529980f, + 0.700969510583008600f, 0.700610328201841660f, 0.700251120061236020f, + 0.699891886174398130f, + 0.699532626554536630f, 0.699173341214860190f, 0.698814030168578240f, + 0.698454693428902320f, + 0.698095331009043640f, 0.697735942922215520f, 0.697376529181631400f, + 0.697017089800505250f, + 0.696657624792053730f, 0.696298134169492380f, 0.695938617946039510f, + 0.695579076134912990f, + 0.695219508749331800f, 0.694859915802517050f, 0.694500297307689140f, + 0.694140653278070950f, + 0.693780983726884790f, 0.693421288667355530f, 0.693061568112707690f, + 0.692701822076166820f, + 0.692342050570960430f, 0.691982253610315510f, 0.691622431207461700f, + 0.691262583375628180f, + 0.690902710128045050f, 0.690542811477944610f, 0.690182887438558710f, + 0.689822938023121220f, + 0.689462963244866330f, 0.689102963117028790f, 0.688742937652845550f, + 0.688382886865552930f, + 0.688022810768389670f, 0.687662709374594510f, 0.687302582697406850f, + 0.686942430750068330f, + 0.686582253545819920f, 0.686222051097905130f, 0.685861823419566700f, + 0.685501570524050140f, + 0.685141292424600310f, 0.684780989134463280f, 0.684420660666887120f, + 0.684060307035119440f, + 0.683699928252410110f, 0.683339524332008840f, 0.682979095287166160f, + 0.682618641131135020f, + 0.682258161877167370f, 0.681897657538517720f, 0.681537128128440470f, + 0.681176573660190910f, + 0.680815994147026320f, 0.680455389602203310f, 0.680094760038981280f, + 0.679734105470619080f, + 0.679373425910376310f, 0.679012721371515250f, 0.678651991867297080f, + 0.678291237410985510f, + 0.677930458015843620f, 0.677569653695137220f, 0.677208824462131490f, + 0.676847970330092700f, + 0.676487091312289350f, 0.676126187421989040f, 0.675765258672461950f, + 0.675404305076978020f, + 0.675043326648808170f, 0.674682323401225250f, 0.674321295347501510f, + 0.673960242500911690f, + 0.673599164874730370f, 0.673238062482232950f, 0.672876935336696900f, + 0.672515783451398950f, + 0.672154606839618470f, 0.671793405514634180f, 0.671432179489727110f, + 0.671070928778178090f, + 0.670709653393269050f, 0.670348353348283690f, 0.669987028656505170f, + 0.669625679331219300f, + 0.669264305385711360f, 0.668902906833267590f, 0.668541483687176590f, + 0.668180035960725840f, + 0.667818563667205600f, 0.667457066819905800f, 0.667095545432117240f, + 0.666733999517132860f, + 0.666372429088244790f, 0.666010834158747840f, 0.665649214741936390f, + 0.665287570851105680f, + 0.664925902499553190f, 0.664564209700575500f, 0.664202492467472090f, + 0.663840750813541210f, + 0.663478984752084110f, 0.663117194296401260f, 0.662755379459794350f, + 0.662393540255567070f, + 0.662031676697022450f, 0.661669788797465960f, 0.661307876570202740f, + 0.660945940028538900f, + 0.660583979185782600f, 0.660221994055241400f, 0.659859984650225110f, + 0.659497950984043510f, + 0.659135893070007080f, 0.658773810921428500f, 0.658411704551619570f, + 0.658049573973894850f, + 0.657687419201568260f, 0.657325240247955020f, 0.656963037126372160f, + 0.656600809850135910f, + 0.656238558432565400f, 0.655876282886978410f, 0.655513983226695960f, + 0.655151659465038060f, + 0.654789311615326050f, 0.654426939690883280f, 0.654064543705032310f, + 0.653702123671098150f, + 0.653339679602405470f, 0.652977211512280050f, 0.652614719414049580f, + 0.652252203321041060f, + 0.651889663246583930f, 0.651527099204007310f, 0.651164511206641320f, + 0.650801899267818060f, + 0.650439263400868990f, 0.650076603619127890f, 0.649713919935928420f, + 0.649351212364604910f, + 0.648988480918494040f, 0.648625725610931460f, 0.648262946455255510f, + 0.647900143464803730f, + 0.647537316652916140f, 0.647174466032932490f, 0.646811591618193350f, + 0.646448693422041360f, + 0.646085771457818310f, 0.645722825738868860f, 0.645359856278536980f, + 0.644996863090167570f, + 0.644633846187107620f, 0.644270805582703550f, 0.643907741290304040f, + 0.643544653323257610f, + 0.643181541694913480f, 0.642818406418622980f, 0.642455247507736860f, + 0.642092064975608220f, + 0.641728858835589830f, 0.641365629101035340f, 0.641002375785300500f, + 0.640639098901740200f, + 0.640275798463712080f, 0.639912474484572560f, 0.639549126977681070f, + 0.639185755956396480f, + 0.638822361434078330f, 0.638458943424088490f, 0.638095501939787920f, + 0.637732036994540290f, + 0.637368548601708660f, 0.637005036774657030f, 0.636641501526751590f, + 0.636277942871357530f, + 0.635914360821842830f, 0.635550755391574910f, 0.635187126593922070f, + 0.634823474442254840f, + 0.634459798949942640f, 0.634096100130357660f, 0.633732377996871770f, + 0.633368632562857470f, + 0.633004863841689520f, 0.632641071846741790f, 0.632277256591390780f, + 0.631913418089012020f, + 0.631549556352983710f, 0.631185671396683470f, 0.630821763233490040f, + 0.630457831876783950f, + 0.630093877339945260f, 0.629729899636356280f, 0.629365898779399080f, + 0.629001874782456500f, + 0.628637827658913300f, 0.628273757422153860f, 0.627909664085564810f, + 0.627545547662532230f, + 0.627181408166443410f, 0.626817245610687520f, 0.626453060008652860f, + 0.626088851373730380f, + 0.625724619719310480f, 0.625360365058784670f, 0.624996087405546350f, + 0.624631786772988030f, + 0.624267463174504880f, 0.623903116623491180f, 0.623538747133343780f, + 0.623174354717459190f, + 0.622809939389234460f, 0.622445501162069090f, 0.622081040049361490f, + 0.621716556064512820f, + 0.621352049220923570f, 0.620987519531995270f, 0.620622967011131400f, + 0.620258391671734690f, + 0.619893793527210410f, 0.619529172590963410f, 0.619164528876399280f, + 0.618799862396925750f, + 0.618435173165949760f, 0.618070461196880800f, 0.617705726503127720f, + 0.617340969098100430f, + 0.616976188995210780f, 0.616611386207870040f, 0.616246560749491690f, + 0.615881712633488340f, + 0.615516841873275490f, 0.615151948482267840f, 0.614787032473881110f, + 0.614422093861533010f, + 0.614057132658640590f, 0.613692148878623000f, 0.613327142534899510f, + 0.612962113640889710f, + 0.612597062210015750f, 0.612231988255698470f, 0.611866891791361560f, + 0.611501772830428060f, + 0.611136631386322020f, 0.610771467472469460f, 0.610406281102295440f, + 0.610041072289227990f, + 0.609675841046694030f, 0.609310587388121830f, 0.608945311326941520f, + 0.608580012876582370f, + 0.608214692050476290f, 0.607849348862054220f, 0.607483983324749510f, + 0.607118595451995420f, + 0.606753185257225550f, 0.606387752753876020f, 0.606022297955381760f, + 0.605656820875180360f, + 0.605291321526709060f, 0.604925799923405670f, 0.604560256078710220f, + 0.604194690006061960f, + 0.603829101718902580f, 0.603463491230673220f, 0.603097858554815790f, + 0.602732203704774650f, + 0.602366526693992930f, 0.602000827535916330f, 0.601635106243990190f, + 0.601269362831660550f, + 0.600903597312375640f, 0.600537809699582810f, 0.600172000006731770f, + 0.599806168247271620f, + 0.599440314434653620f, 0.599074438582328780f, 0.598708540703749010f, + 0.598342620812368000f, + 0.597976678921638860f, 0.597610715045016950f, 0.597244729195957500f, + 0.596878721387916090f, + 0.596512691634350830f, 0.596146639948718640f, 0.595780566344478960f, + 0.595414470835091030f, + 0.595048353434014630f, 0.594682214154711790f, 0.594316053010643270f, + 0.593949870015273000f, + 0.593583665182063740f, 0.593217438524479500f, 0.592851190055986300f, + 0.592484919790049140f, + 0.592118627740135460f, 0.591752313919712170f, 0.591385978342248260f, + 0.591019621021212420f, + 0.590653241970074180f, 0.590286841202305120f, 0.589920418731375800f, + 0.589553974570759530f, + 0.589187508733928890f, 0.588821021234357310f, 0.588454512085520460f, + 0.588087981300892900f, + 0.587721428893951850f, 0.587354854878173850f, 0.586988259267036350f, + 0.586621642074019120f, + 0.586255003312600500f, 0.585888342996261690f, 0.585521661138483250f, + 0.585154957752746730f, + 0.584788232852535560f, 0.584421486451332410f, 0.584054718562622140f, + 0.583687929199888990f, + 0.583321118376619710f, 0.582954286106300290f, 0.582587432402417840f, + 0.582220557278461340f, + 0.581853660747918780f, 0.581486742824280810f, 0.581119803521037650f, + 0.580752842851679940f, + 0.580385860829700780f, 0.580018857468592270f, 0.579651832781848730f, + 0.579284786782964360f, + 0.578917719485433800f, 0.578550630902754050f, 0.578183521048421080f, + 0.577816389935933090f, + 0.577449237578788300f, 0.577082063990485340f, 0.576714869184524860f, + 0.576347653174406840f, + 0.575980415973633590f, 0.575613157595706530f, 0.575245878054129520f, + 0.574878577362406000f, + 0.574511255534040030f, 0.574143912582537940f, 0.573776548521405030f, + 0.573409163364148930f, + 0.573041757124277180f, 0.572674329815297640f, 0.572306881450720390f, + 0.571939412044054740f, + 0.571571921608812320f, 0.571204410158504090f, 0.570836877706642270f, + 0.570469324266740570f, + 0.570101749852312100f, 0.569734154476872480f, 0.569366538153936560f, + 0.568998900897020210f, + 0.568631242719641270f, 0.568263563635316600f, 0.567895863657565500f, + 0.567528142799906490f, + 0.567160401075860410f, 0.566792638498947680f, 0.566424855082689470f, + 0.566057050840608870f, + 0.565689225786228160f, 0.565321379933072190f, 0.564953513294665140f, + 0.564585625884531870f, + 0.564217717716199550f, 0.563849788803194140f, 0.563481839159044150f, + 0.563113868797277870f, + 0.562745877731423820f, 0.562377865975012940f, 0.562009833541575080f, + 0.561641780444642640f, + 0.561273706697747450f, 0.560905612314422150f, 0.560537497308201240f, + 0.560169361692618440f, + 0.559801205481210040f, 0.559433028687510990f, 0.559064831325059240f, + 0.558696613407391630f, + 0.558328374948046320f, 0.557960115960563050f, 0.557591836458480870f, + 0.557223536455341280f, + 0.556855215964685120f, 0.556486875000054000f, 0.556118513574991650f, + 0.555750131703040880f, + 0.555381729397746880f, 0.555013306672654360f, 0.554644863541308600f, + 0.554276400017257090f, + 0.553907916114046440f, 0.553539411845225590f, 0.553170887224342820f, + 0.552802342264947400f, + 0.552433776980590490f, 0.552065191384822350f, 0.551696585491195710f, + 0.551327959313262280f, + 0.550959312864576220f, 0.550590646158691240f, 0.550221959209161620f, + 0.549853252029543830f, + 0.549484524633393480f, 0.549115777034268170f, 0.548747009245725500f, + 0.548378221281323520f, + 0.548009413154622370f, 0.547640584879181100f, 0.547271736468561530f, + 0.546902867936324590f, + 0.546533979296032200f, 0.546165070561248080f, 0.545796141745535150f, + 0.545427192862458780f, + 0.545058223925583670f, 0.544689234948475210f, 0.544320225944701200f, + 0.543951196927828010f, + 0.543582147911424560f, 0.543213078909059120f, 0.542843989934301940f, + 0.542474881000723050f, + 0.542105752121893050f, 0.541736603311384620f, 0.541367434582769480f, + 0.540998245949621760f, + 0.540629037425515050f, 0.540259809024023600f, 0.539890560758723770f, + 0.539521292643190930f, + 0.539152004691002770f, 0.538782696915736770f, 0.538413369330970610f, + 0.538044021950284450f, + 0.537674654787257180f, 0.537305267855470390f, 0.536935861168504670f, + 0.536566434739941920f, + 0.536196988583365510f, 0.535827522712358230f, 0.535458037140505110f, + 0.535088531881390050f, + 0.534719006948599860f, 0.534349462355720230f, 0.533979898116337950f, + 0.533610314244041710f, + 0.533240710752419080f, 0.532871087655060300f, 0.532501444965554960f, + 0.532131782697493170f, + 0.531762100864467290f, 0.531392399480068670f, 0.531022678557890980f, + 0.530652938111527360f, + 0.530283178154571710f, 0.529913398700619820f, 0.529543599763266700f, + 0.529173781356109600f, + 0.528803943492745180f, 0.528434086186771010f, 0.528064209451786560f, + 0.527694313301390160f, + 0.527324397749182720f, 0.526954462808764120f, 0.526584508493736840f, + 0.526214534817702310f, + 0.525844541794263210f, 0.525474529437023890f, 0.525104497759587900f, + 0.524734446775560910f, + 0.524364376498548390f, 0.523994286942156220f, 0.523624178119992400f, + 0.523254050045663940f, + 0.522883902732780290f, 0.522513736194950230f, 0.522143550445783310f, + 0.521773345498891090f, + 0.521403121367884030f, 0.521032878066375100f, 0.520662615607976660f, + 0.520292334006301820f, + 0.519922033274965560f, 0.519551713427582000f, 0.519181374477767470f, + 0.518811016439137520f, + 0.518440639325310040f, 0.518070243149902240f, 0.517699827926532130f, + 0.517329393668819580f, + 0.516958940390383700f, 0.516588468104845820f, 0.516217976825826600f, + 0.515847466566947580f, + 0.515476937341832310f, 0.515106389164103120f, 0.514735822047384990f, + 0.514365236005302040f, + 0.513994631051479240f, 0.513624007199543600f, 0.513253364463121090f, + 0.512882702855839920f, + 0.512512022391327980f, 0.512141323083213470f, 0.511770604945127050f, + 0.511399867990697920f, + 0.511029112233557960f, 0.510658337687338040f, 0.510287544365671140f, + 0.509916732282189920f, + 0.509545901450527690f, 0.509175051884319660f, 0.508804183597200140f, + 0.508433296602805670f, + 0.508062390914772230f, 0.507691466546736580f, 0.507320523512337470f, + 0.506949561825212450f, + 0.506578581499001590f, 0.506207582547344550f, 0.505836564983881190f, + 0.505465528822253710f, + 0.505094474076103310f, 0.504723400759073290f, 0.504352308884806750f, + 0.503981198466947000f, + 0.503610069519139780f, 0.503238922055029400f, 0.502867756088262840f, + 0.502496571632486070f, + 0.502125368701347050f, 0.501754147308493770f, 0.501382907467574190f, + 0.501011649192238950f, + 0.500640372496137020f, 0.500269077392920150f, 0.499897763896239410f, + 0.499526432019746450f, + 0.499155081777094940f, 0.498783713181937540f, 0.498412326247929250f, + 0.498040920988724490f, + 0.497669497417978280f, 0.497298055549347750f, 0.496926595396488870f, + 0.496555116973059980f, + 0.496183620292718900f, 0.495812105369124070f, 0.495440572215935850f, + 0.495069020846813650f, + 0.494697451275419140f, 0.494325863515413130f, 0.493954257580458580f, + 0.493582633484217940f, + 0.493210991240354450f, 0.492839330862533120f, 0.492467652364417970f, + 0.492095955759675460f, + 0.491724241061971320f, 0.491352508284972070f, 0.490980757442346090f, + 0.490608988547760690f, + 0.490237201614885710f, 0.489865396657390210f, 0.489493573688943970f, + 0.489121732723218740f, + 0.488749873773885120f, 0.488377996854616250f, 0.488006101979084450f, + 0.487634189160962910f, + 0.487262258413926560f, 0.486890309751649490f, 0.486518343187807900f, + 0.486146358736077200f, + 0.485774356410135000f, 0.485402336223658360f, 0.485030298190324950f, + 0.484658242323814380f, + 0.484286168637805270f, 0.483914077145978560f, 0.483541967862014480f, + 0.483169840799594130f, + 0.482797695972400300f, 0.482425533394114920f, 0.482053353078422120f, + 0.481681155039005550f, + 0.481308939289549380f, 0.480936705843739820f, 0.480564454715261990f, + 0.480192185917803270f, + 0.479819899465050160f, 0.479447595370691370f, 0.479075273648415010f, + 0.478702934311909910f, + 0.478330577374866780f, 0.477958202850975230f, 0.477585810753927250f, + 0.477213401097414220f, + 0.476840973895128200f, 0.476468529160763100f, 0.476096066908011760f, + 0.475723587150569390f, + 0.475351089902130650f, 0.474978575176390750f, 0.474606042987046840f, + 0.474233493347795020f, + 0.473860926272333670f, 0.473488341774360670f, 0.473115739867574380f, + 0.472743120565675250f, + 0.472370483882362520f, 0.471997829831337810f, 0.471625158426301700f, + 0.471252469680957190f, + 0.470879763609006460f, 0.470507040224152460f, 0.470134299540099940f, + 0.469761541570552780f, + 0.469388766329217000f, 0.469015973829798090f, 0.468643164086002100f, + 0.468270337111537040f, + 0.467897492920109850f, 0.467524631525429830f, 0.467151752941205530f, + 0.466778857181146260f, + 0.466405944258963200f, 0.466033014188366350f, 0.465660066983068220f, + 0.465287102656780530f, + 0.464914121223215740f, 0.464541122696088100f, 0.464168107089110940f, + 0.463795074415999760f, + 0.463422024690469060f, 0.463048957926235630f, 0.462675874137015720f, + 0.462302773336526080f, + 0.461929655538485470f, 0.461556520756611410f, 0.461183369004623920f, + 0.460810200296242310f, + 0.460437014645186440f, 0.460063812065178160f, 0.459690592569938270f, + 0.459317356173189750f, + 0.458944102888655060f, 0.458570832730057170f, 0.458197545711121090f, + 0.457824241845570630f, + 0.457450921147131930f, 0.457077583629530550f, 0.456704229306492570f, + 0.456330858191746010f, + 0.455957470299017840f, 0.455584065642037350f, 0.455210644234532610f, + 0.454837206090234200f, + 0.454463751222871910f, 0.454090279646176210f, 0.453716791373879380f, + 0.453343286419712720f, + 0.452969764797409750f, 0.452596226520703360f, 0.452222671603327130f, + 0.451849100059016350f, + 0.451475511901505420f, 0.451101907144530910f, 0.450728285801828830f, + 0.450354647887135640f, + 0.449980993414189900f, 0.449607322396728900f, 0.449233634848492320f, + 0.448859930783219170f, + 0.448486210214649020f, 0.448112473156523420f, 0.447738719622582710f, + 0.447364949626569590f, + 0.446991163182225700f, 0.446617360303294910f, 0.446243541003520480f, + 0.445869705296646270f, + 0.445495853196417930f, 0.445121984716580210f, 0.444748099870879880f, + 0.444374198673063330f, + 0.444000281136877280f, 0.443626347276070590f, 0.443252397104390790f, + 0.442878430635587910f, + 0.442504447883411090f, 0.442130448861610240f, 0.441756433583937120f, + 0.441382402064142250f, + 0.441008354315978680f, 0.440634290353198510f, 0.440260210189554690f, + 0.439886113838801880f, + 0.439512001314693700f, 0.439137872630986080f, 0.438763727801433690f, + 0.438389566839793740f, + 0.438015389759822630f, 0.437641196575277220f, 0.437266987299916590f, + 0.436892761947498260f, + 0.436518520531782470f, 0.436144263066528480f, 0.435769989565496290f, + 0.435395700042447710f, + 0.435021394511143410f, 0.434647072985346380f, 0.434272735478819010f, + 0.433898382005324050f, + 0.433524012578626440f, 0.433149627212489670f, 0.432775225920679740f, + 0.432400808716961900f, + 0.432026375615101930f, 0.431651926628867530f, 0.431277461772025310f, + 0.430902981058344070f, + 0.430528484501591540f, 0.430153972115537800f, 0.429779443913952170f, + 0.429404899910604490f, + 0.429030340119266550f, 0.428655764553708960f, 0.428281173227704760f, + 0.427906566155026040f, + 0.427531943349445720f, 0.427157304824738350f, 0.426782650594677570f, + 0.426407980673039090f, + 0.426033295073598160f, 0.425658593810130330f, 0.425283876896413280f, + 0.424909144346223290f, + 0.424534396173339160f, 0.424159632391538870f, 0.423784853014600950f, + 0.423410058056305830f, + 0.423035247530432810f, 0.422660421450763490f, 0.422285579831078230f, + 0.421910722685159720f, + 0.421535850026790060f, 0.421160961869751720f, 0.420786058227829220f, + 0.420411139114805770f, + 0.420036204544466940f, 0.419661254530597550f, 0.419286289086983070f, + 0.418911308227410740f, + 0.418536311965666650f, 0.418161300315539220f, 0.417786273290816130f, + 0.417411230905285650f, + 0.417036173172737830f, 0.416661100106961610f, 0.416286011721748230f, + 0.415910908030888200f, + 0.415535789048172620f, 0.415160654787394280f, 0.414785505262345030f, + 0.414410340486818910f, + 0.414035160474608700f, 0.413659965239509710f, 0.413284754795316230f, + 0.412909529155823300f, + 0.412534288334827750f, 0.412159032346125280f, 0.411783761203513790f, + 0.411408474920790520f, + 0.411033173511753220f, 0.410657856990201580f, 0.410282525369933980f, + 0.409907178664751180f, + 0.409531816888453190f, 0.409156440054840590f, 0.408781048177715660f, + 0.408405641270879690f, + 0.408030219348136270f, 0.407654782423288010f, 0.407279330510138260f, + 0.406903863622492260f, + 0.406528381774153900f, 0.406152884978929480f, 0.405777373250624070f, + 0.405401846603045010f, + 0.405026305049998980f, 0.404650748605293040f, 0.404275177282736260f, + 0.403899591096136380f, + 0.403523990059303620f, 0.403148374186047210f, 0.402772743490177110f, + 0.402397097985504990f, + 0.402021437685841480f, 0.401645762604999350f, 0.401270072756790610f, + 0.400894368155027990f, + 0.400518648813525830f, 0.400142914746097480f, 0.399767165966558420f, + 0.399391402488723400f, + 0.399015624326407800f, 0.398639831493428740f, 0.398264024003602220f, + 0.397888201870746420f, + 0.397512365108678430f, 0.397136513731217500f, 0.396760647752182230f, + 0.396384767185391620f, + 0.396008872044666730f, 0.395632962343827170f, 0.395257038096694990f, + 0.394881099317091370f, + 0.394505146018838130f, 0.394129178215758820f, 0.393753195921675850f, + 0.393377199150413860f, + 0.393001187915796750f, 0.392625162231649010f, 0.392249122111796800f, + 0.391873067570065240f, + 0.391496998620281590f, 0.391120915276272410f, 0.390744817551864850f, + 0.390368705460887750f, + 0.389992579017168830f, 0.389616438234538010f, 0.389240283126824070f, + 0.388864113707858060f, + 0.388487929991470140f, 0.388111731991491180f, 0.387735519721753690f, + 0.387359293196089140f, + 0.386983052428331030f, 0.386606797432312350f, 0.386230528221866430f, + 0.385854244810828530f, + 0.385477947213032580f, 0.385101635442314900f, 0.384725309512510880f, + 0.384348969437456610f, + 0.383972615230989860f, 0.383596246906947210f, 0.383219864479167560f, + 0.382843467961488940f, + 0.382467057367749940f, 0.382090632711791060f, 0.381714194007451380f, + 0.381337741268572390f, + 0.380961274508994250f, 0.380584793742559550f, 0.380208298983109930f, + 0.379831790244487540f, + 0.379455267540536490f, 0.379078730885099520f, 0.378702180292021630f, + 0.378325615775147170f, + 0.377949037348320800f, 0.377572445025389230f, 0.377195838820197690f, + 0.376819218746593910f, + 0.376442584818424570f, 0.376065937049537060f, 0.375689275453780500f, + 0.375312600045002780f, + 0.374935910837054080f, 0.374559207843783660f, 0.374182491079041500f, + 0.373805760556679190f, + 0.373429016290547200f, 0.373052258294498230f, 0.372675486582383640f, + 0.372298701168057190f, + 0.371921902065371730f, 0.371545089288180640f, 0.371168262850339210f, + 0.370791422765701320f, + 0.370414569048123140f, 0.370037701711460170f, 0.369660820769568240f, + 0.369283926236305070f, + 0.368907018125527120f, 0.368530096451093140f, 0.368153161226860980f, + 0.367776212466689010f, + 0.367399250184437480f, 0.367022274393965340f, 0.366645285109133750f, + 0.366268282343803150f, + 0.365891266111834370f, 0.365514236427090080f, 0.365137193303431750f, + 0.364760136754723020f, + 0.364383066794826350f, 0.364005983437606320f, 0.363628886696926890f, + 0.363251776586652310f, + 0.362874653120648700f, 0.362497516312780990f, 0.362120366176916230f, + 0.361743202726920790f, + 0.361366025976661450f, 0.360988835940006750f, 0.360611632630824020f, + 0.360234416062982840f, + 0.359857186250351960f, 0.359479943206800550f, 0.359102686946199680f, + 0.358725417482419150f, + 0.358348134829330870f, 0.357970839000806010f, 0.357593530010716310f, + 0.357216207872935120f, + 0.356838872601334680f, 0.356461524209789380f, 0.356084162712172360f, + 0.355706788122359060f, + 0.355329400454223950f, 0.354951999721642100f, 0.354574585938490280f, + 0.354197159118644080f, + 0.353819719275981330f, 0.353442266424378930f, 0.353064800577714280f, + 0.352687321749866610f, + 0.352309829954713830f, 0.351932325206136210f, 0.351554807518012990f, + 0.351177276904224070f, + 0.350799733378650890f, 0.350422176955173910f, 0.350044607647675640f, + 0.349667025470037810f, + 0.349289430436142520f, 0.348911822559873850f, 0.348534201855114360f, + 0.348156568335749040f, + 0.347778922015661520f, 0.347401262908737570f, 0.347023591028862320f, + 0.346645906389921150f, + 0.346268209005801410f, 0.345890498890388980f, 0.345512776057572080f, + 0.345135040521238170f, + 0.344757292295274910f, 0.344379531393571970f, 0.344001757830017680f, + 0.343623971618502560f, + 0.343246172772916250f, 0.342868361307148980f, 0.342490537235092600f, + 0.342112700570637750f, + 0.341734851327677280f, 0.341356989520103240f, 0.340979115161808070f, + 0.340601228266685980f, + 0.340223328848629880f, 0.339845416921535030f, 0.339467492499295200f, + 0.339089555595806560f, + 0.338711606224964210f, 0.338333644400663940f, 0.337955670136803170f, + 0.337577683447278010f, + 0.337199684345986910f, 0.336821672846827290f, 0.336443648963697160f, + 0.336065612710496290f, + 0.335687564101123050f, 0.335309503149478110f, 0.334931429869461230f, + 0.334553344274972690f, + 0.334175246379914470f, 0.333797136198187240f, 0.333419013743693980f, + 0.333040879030336690f, + 0.332662732072017800f, 0.332284572882641680f, 0.331906401476111280f, + 0.331528217866331690f, + 0.331150022067206780f, 0.330771814092642610f, 0.330393593956544440f, + 0.330015361672817750f, + 0.329637117255370090f, 0.329258860718107450f, 0.328880592074938190f, + 0.328502311339769700f, + 0.328124018526509800f, 0.327745713649068180f, 0.327367396721353070f, + 0.326989067757275040f, + 0.326610726770743760f, 0.326232373775669270f, 0.325854008785963320f, + 0.325475631815536570f, + 0.325097242878301660f, 0.324718841988170470f, 0.324340429159055250f, + 0.323962004404870050f, + 0.323583567739527570f, 0.323205119176942720f, 0.322826658731029110f, + 0.322448186415702550f, + 0.322069702244877910f, 0.321691206232470550f, 0.321312698392397570f, + 0.320934178738574720f, + 0.320555647284919980f, 0.320177104045350440f, 0.319798549033783570f, + 0.319419982264138650f, + 0.319041403750333630f, 0.318662813506288670f, 0.318284211545923010f, + 0.317905597883156250f, + 0.317526972531909870f, 0.317148335506103940f, 0.316769686819660780f, + 0.316391026486501690f, + 0.316012354520548600f, 0.315633670935725030f, 0.315254975745953180f, + 0.314876268965157470f, + 0.314497550607261090f, 0.314118820686189180f, 0.313740079215866160f, + 0.313361326210216840f, + 0.312982561683167790f, 0.312603785648644220f, 0.312224998120573420f, + 0.311846199112882030f, + 0.311467388639496860f, 0.311088566714346650f, 0.310709733351358600f, + 0.310330888564462340f, + 0.309952032367586390f, 0.309573164774659850f, 0.309194285799613390f, + 0.308815395456376430f, + 0.308436493758880660f, 0.308057580721056660f, 0.307678656356835560f, + 0.307299720680150270f, + 0.306920773704932260f, 0.306541815445115160f, 0.306162845914631390f, + 0.305783865127415400f, + 0.305404873097400780f, 0.305025869838521590f, 0.304646855364713530f, + 0.304267829689911010f, + 0.303888792828050650f, 0.303509744793068030f, 0.303130685598899270f, + 0.302751615259482190f, + 0.302372533788753170f, 0.301993441200650910f, 0.301614337509113100f, + 0.301235222728077840f, + 0.300856096871485010f, 0.300476959953273060f, 0.300097811987382670f, + 0.299718652987753580f, + 0.299339482968325970f, 0.298960301943041680f, 0.298581109925841300f, + 0.298201906930667390f, + 0.297822692971461410f, 0.297443468062166820f, 0.297064232216726120f, + 0.296684985449082390f, + 0.296305727773180260f, 0.295926459202963120f, 0.295547179752376430f, + 0.295167889435364820f, + 0.294788588265873170f, 0.294409276257848300f, 0.294029953425235520f, + 0.293650619781982260f, + 0.293271275342035120f, 0.292891920119341120f, 0.292512554127848930f, + 0.292133177381505850f, + 0.291753789894261320f, 0.291374391680063520f, 0.290994982752862730f, + 0.290615563126608250f, + 0.290236132815249790f, 0.289856691832738880f, 0.289477240193025510f, + 0.289097777910061970f, + 0.288718304997799550f, 0.288338821470189910f, 0.287959327341186510f, + 0.287579822624741350f, + 0.287200307334808670f, 0.286820781485341620f, 0.286441245090293950f, + 0.286061698163620930f, + 0.285682140719276560f, 0.285302572771216960f, 0.284922994333397350f, + 0.284543405419773240f, + 0.284163806044301910f, 0.283784196220939370f, 0.283404575963643550f, + 0.283024945286371230f, + 0.282645304203081090f, 0.282265652727731130f, 0.281885990874279570f, + 0.281506318656686290f, + 0.281126636088910030f, 0.280746943184911340f, 0.280367239958650150f, + 0.279987526424086530f, + 0.279607802595182420f, 0.279228068485898210f, 0.278848324110196550f, + 0.278468569482039130f, + 0.278088804615388040f, 0.277709029524206950f, 0.277329244222458250f, + 0.276949448724106480f, + 0.276569643043115150f, 0.276189827193448200f, 0.275810001189071290f, + 0.275430165043948570f, + 0.275050318772046500f, 0.274670462387330010f, 0.274290595903766200f, + 0.273910719335321300f, + 0.273530832695961790f, 0.273150935999655950f, 0.272771029260370560f, + 0.272391112492074590f, + 0.272011185708736060f, 0.271631248924323390f, 0.271251302152806570f, + 0.270871345408154380f, + 0.270491378704337540f, 0.270111402055325910f, 0.269731415475089780f, + 0.269351418977600950f, + 0.268971412576829990f, 0.268591396286749500f, 0.268211370121331170f, + 0.267831334094547010f, + 0.267451288220370730f, 0.267071232512774700f, 0.266691166985733360f, + 0.266311091653219700f, + 0.265931006529208920f, 0.265550911627675250f, 0.265170806962593210f, + 0.264790692547939020f, + 0.264410568397687560f, 0.264030434525815760f, 0.263650290946299660f, + 0.263270137673115630f, + 0.262889974720241610f, 0.262509802101654310f, 0.262129619831332370f, + 0.261749427923253670f, + 0.261369226391396310f, 0.260989015249740050f, 0.260608794512263380f, + 0.260228564192946710f, + 0.259848324305769600f, 0.259468074864711960f, 0.259087815883755400f, + 0.258707547376880010f, + 0.258327269358068100f, 0.257946981841300490f, 0.257566684840560170f, + 0.257186378369829110f, + 0.256806062443089680f, 0.256425737074325920f, 0.256045402277520320f, + 0.255665058066657680f, + 0.255284704455721660f, 0.254904341458696390f, 0.254523969089567590f, + 0.254143587362319620f, + 0.253763196290938850f, 0.253382795889410710f, 0.253002386171721110f, + 0.252621967151857420f, + 0.252241538843805680f, 0.251861101261554090f, 0.251480654419089730f, + 0.251100198330400150f, + 0.250719733009474530f, 0.250339258470300590f, 0.249958774726868170f, + 0.249578281793165680f, + 0.249197779683183660f, 0.248817268410911650f, 0.248436747990339490f, + 0.248056218435458720f, + 0.247675679760259450f, 0.247295131978733870f, 0.246914575104873220f, + 0.246534009152669040f, + 0.246153434136114490f, 0.245772850069201410f, 0.245392256965923620f, + 0.245011654840274010f, + 0.244631043706245800f, 0.244250423577833860f, 0.243869794469031620f, + 0.243489156393834590f, + 0.243108509366237320f, 0.242727853400234670f, 0.242347188509823150f, + 0.241966514708997830f, + 0.241585832011755900f, 0.241205140432093070f, 0.240824439984007180f, + 0.240443730681495050f, + 0.240063012538553830f, 0.239682285569182310f, 0.239301549787377890f, + 0.238920805207139960f, + 0.238540051842467020f, 0.238159289707357810f, 0.237778518815812740f, + 0.237397739181830820f, + 0.237016950819413100f, 0.236636153742559610f, 0.236255347965270780f, + 0.235874533501548580f, + 0.235493710365393630f, 0.235112878570808560f, 0.234732038131795020f, + 0.234351189062355030f, + 0.233970331376492150f, 0.233589465088208580f, 0.233208590211508550f, + 0.232827706760394850f, + 0.232446814748872410f, 0.232065914190945020f, 0.231685005100616930f, + 0.231304087491893930f, + 0.230923161378780380f, 0.230542226775282770f, 0.230161283695406500f, + 0.229780332153157300f, + 0.229399372162542610f, 0.229018403737568290f, 0.228637426892242400f, + 0.228256441640571880f, + 0.227875447996564060f, 0.227494445974227850f, 0.227113435587570770f, + 0.226732416850602300f, + 0.226351389777330990f, 0.225970354381765690f, 0.225589310677916880f, + 0.225208258679793520f, + 0.224827198401406690f, 0.224446129856766040f, 0.224065053059883250f, + 0.223683968024768950f, + 0.223302874765434120f, 0.222921773295891380f, 0.222540663630151820f, + 0.222159545782228660f, + 0.221778419766134050f, 0.221397285595880480f, 0.221016143285482050f, + 0.220634992848951380f, + 0.220253834300303180f, 0.219872667653551100f, 0.219491492922709110f, + 0.219110310121792800f, + 0.218729119264816280f, 0.218347920365795780f, 0.217966713438746380f, + 0.217585498497683580f, + 0.217204275556624420f, 0.216823044629584520f, 0.216441805730581500f, + 0.216060558873631570f, + 0.215679304072752960f, 0.215298041341962870f, 0.214916770695278810f, + 0.214535492146719880f, + 0.214154205710303750f, 0.213772911400050090f, 0.213391609229977570f, + 0.213010299214105140f, + 0.212628981366453330f, 0.212247655701041290f, 0.211866322231890090f, + 0.211484980973019880f, + 0.211103631938451000f, 0.210722275142205480f, 0.210340910598303870f, + 0.209959538320768660f, + 0.209578158323621420f, 0.209196770620883960f, 0.208815375226579670f, + 0.208433972154730530f, + 0.208052561419360520f, 0.207671143034492080f, 0.207289717014149830f, + 0.206908283372357230f, + 0.206526842123138070f, 0.206145393280517730f, 0.205763936858520150f, + 0.205382472871171230f, + 0.205001001332495910f, 0.204619522256519300f, 0.204238035657268250f, + 0.203856541548768030f, + 0.203475039945045950f, 0.203093530860128300f, 0.202712014308041620f, + 0.202330490302814110f, + 0.201948958858472420f, 0.201567419989045200f, 0.201185873708560170f, + 0.200804320031045230f, + 0.200422758970529910f, 0.200041190541042220f, 0.199659614756612230f, + 0.199278031631268500f, + 0.198896441179041650f, 0.198514843413961220f, 0.198133238350057030f, + 0.197751626001360480f, + 0.197370006381901520f, 0.196988379505712050f, 0.196606745386822960f, + 0.196225104039265410f, + 0.195843455477072190f, 0.195461799714274460f, 0.195080136764905570f, + 0.194698466642997730f, + 0.194316789362583340f, 0.193935104937696560f, 0.193553413382369890f, + 0.193171714710637930f, + 0.192790008936534220f, 0.192408296074092570f, 0.192026576137348330f, + 0.191644849140335360f, + 0.191263115097089540f, 0.190881374021645320f, 0.190499625928039040f, + 0.190117870830306100f, + 0.189736108742482030f, 0.189354339678604100f, 0.188972563652707950f, + 0.188590780678831250f, + 0.188208990771010640f, 0.187827193943283040f, 0.187445390209686870f, + 0.187063579584259070f, + 0.186681762081038650f, 0.186299937714063470f, 0.185918106497371700f, + 0.185536268445003070f, + 0.185154423570995760f, 0.184772571889390000f, 0.184390713414225000f, + 0.184008848159540110f, + 0.183626976139376310f, 0.183245097367773090f, 0.182863211858771880f, + 0.182481319626412670f, + 0.182099420684737420f, 0.181717515047787020f, 0.181335602729602590f, + 0.180953683744226880f, + 0.180571758105701030f, 0.180189825828068250f, 0.179807886925370670f, + 0.179425941411650660f, + 0.179043989300952110f, 0.178662030607317450f, 0.178280065344791100f, + 0.177898093527416370f, + 0.177516115169236820f, 0.177134130284297610f, 0.176752138886642350f, + 0.176370140990316640f, + 0.175988136609365020f, 0.175606125757832240f, 0.175224108449764660f, + 0.174842084699207030f, + 0.174460054520206240f, 0.174078017926807490f, 0.173695974933058080f, + 0.173313925553004180f, + 0.172931869800692250f, 0.172549807690170230f, 0.172167739235484620f, + 0.171785664450683800f, + 0.171403583349815180f, 0.171021495946926340f, 0.170639402256066410f, + 0.170257302291283000f, + 0.169875196066625710f, 0.169493083596143100f, 0.169110964893883830f, + 0.168728839973898290f, + 0.168346708850235140f, 0.167964571536945220f, 0.167582428048078130f, + 0.167200278397683750f, + 0.166818122599813570f, 0.166435960668517400f, 0.166053792617847200f, + 0.165671618461853270f, + 0.165289438214587970f, 0.164907251890102520f, 0.164525059502448390f, + 0.164142861065678550f, + 0.163760656593844480f, 0.163378446100999640f, 0.162996229601196390f, + 0.162614007108487250f, + 0.162231778636926370f, 0.161849544200566300f, 0.161467303813461580f, + 0.161085057489665670f, + 0.160702805243232240f, 0.160320547088216470f, 0.159938283038672050f, + 0.159556013108654580f, + 0.159173737312218650f, 0.158791455663418930f, 0.158409168176311760f, + 0.158026874864951870f, + 0.157644575743395960f, 0.157262270825699210f, 0.156879960125918730f, + 0.156497643658110590f, + 0.156115321436331000f, 0.155732993474637760f, 0.155350659787087090f, + 0.154968320387737170f, + 0.154585975290645110f, 0.154203624509868190f, 0.153821268059465250f, + 0.153438905953493550f, + 0.153056538206012340f, 0.152674164831079730f, 0.152291785842754070f, + 0.151909401255095250f, + 0.151527011082161540f, 0.151144615338013210f, 0.150762214036709470f, + 0.150379807192309620f, + 0.149997394818874590f, 0.149614976930463660f, 0.149232553541138180f, + 0.148850124664957870f, + 0.148467690315984390f, 0.148085250508278370f, 0.147702805255900570f, + 0.147320354572913260f, + 0.146937898473377210f, 0.146555436971355090f, 0.146172970080908520f, + 0.145790497816099230f, + 0.145408020190990560f, 0.145025537219644170f, 0.144643048916123810f, + 0.144260555294492000f, + 0.143878056368811510f, 0.143495552153146630f, 0.143113042661560050f, + 0.142730527908116440f, + 0.142348007906879320f, 0.141965482671912420f, 0.141582952217280980f, + 0.141200416557048680f, + 0.140817875705281120f, 0.140435329676042390f, 0.140052778483398480f, + 0.139670222141414250f, + 0.139287660664154770f, 0.138905094065686600f, 0.138522522360074780f, + 0.138139945561386200f, + 0.137757363683686740f, 0.137374776741042340f, 0.136992184747520560f, + 0.136609587717187310f, + 0.136226985664110460f, 0.135844378602356760f, 0.135461766545993150f, + 0.135079149509088060f, + 0.134696527505708320f, 0.134313900549922760f, 0.133931268655799020f, + 0.133548631837404950f, + 0.133165990108809860f, 0.132783343484081580f, 0.132400691977289760f, + 0.132018035602502530f, + 0.131635374373789940f, 0.131252708305220960f, 0.130870037410864640f, + 0.130487361704791580f, + 0.130104681201070800f, 0.129721995913773260f, 0.129339305856968730f, + 0.128956611044727220f, + 0.128573911491120210f, 0.128191207210217570f, 0.127808498216091110f, + 0.127425784522811530f, + 0.127043066144449680f, 0.126660343095077900f, 0.126277615388766920f, + 0.125894883039589430f, + 0.125512146061616980f, 0.125129404468921260f, 0.124746658275575490f, + 0.124363907495651240f, + 0.123981152143222060f, 0.123598392232359880f, 0.123215627777138580f, + 0.122832858791630880f, + 0.122450085289909640f, 0.122067307286049230f, 0.121684524794122440f, + 0.121301737828203960f, + 0.120918946402367330f, 0.120536150530686250f, 0.120153350227235940f, + 0.119770545506089950f, + 0.119387736381323830f, 0.119004922867011920f, 0.118622104977228730f, + 0.118239282726050290f, + 0.117856456127550970f, 0.117473625195807100f, 0.117090789944893860f, + 0.116707950388886520f, + 0.116325106541861910f, 0.115942258417895240f, 0.115559406031063570f, + 0.115176549395442460f, + 0.114793688525109290f, 0.114410823434140360f, 0.114027954136612060f, + 0.113645080646602280f, + 0.113262202978187320f, 0.112879321145445350f, 0.112496435162453430f, + 0.112113545043288730f, + 0.111730650802029900f, 0.111347752452754000f, 0.110964850009539970f, + 0.110581943486465610f, + 0.110199032897608850f, 0.109816118257049110f, 0.109433199578864170f, + 0.109050276877133770f, + 0.108667350165936400f, 0.108284419459350770f, 0.107901484771457020f, + 0.107518546116333660f, + 0.107135603508061170f, 0.106752656960718350f, 0.106369706488385940f, + 0.105986752105143480f, + 0.105603793825070680f, 0.105220831662248700f, 0.104837865630757090f, + 0.104454895744677270f, + 0.104071922018089540f, 0.103688944465074300f, 0.103305963099713400f, + 0.102922977936087120f, + 0.102539988988277600f, 0.102156996270365800f, 0.101773999796432830f, + 0.101390999580561250f, + 0.101007995636832020f, 0.100624987979327970f, 0.100241976622130760f, + 0.099858961579322170f, + 0.099475942864985456f, 0.099092920493202258f, 0.098709894478056073f, + 0.098326864833628791f, + 0.097943831574004214f, 0.097560794713264939f, 0.097177754265493674f, + 0.096794710244774623f, + 0.096411662665190329f, 0.096028611540825232f, 0.095645556885762609f, + 0.095262498714085819f, + 0.094879437039879722f, 0.094496371877227495f, 0.094113303240214247f, + 0.093730231142923864f, + 0.093347155599440373f, 0.092964076623849271f, 0.092580994230234359f, + 0.092197908432681386f, + 0.091814819245274432f, 0.091431726682099479f, 0.091048630757241303f, + 0.090665531484784803f, + 0.090282428878816323f, 0.089899322953420582f, 0.089516213722684160f, + 0.089133101200692441f, + 0.088749985401530951f, 0.088366866339286629f, 0.087983744028044805f, + 0.087600618481892656f, + 0.087217489714916191f, 0.086834357741201490f, 0.086451222574836131f, + 0.086068084229906014f, + 0.085684942720498897f, 0.085301798060701386f, 0.084918650264600160f, + 0.084535499346283349f, + 0.084152345319837438f, 0.083769188199350780f, 0.083386027998910095f, + 0.083002864732603973f, + 0.082619698414519799f, 0.082236529058745025f, 0.081853356679368619f, + 0.081470181290477811f, + 0.081087002906161790f, 0.080703821540508452f, 0.080320637207605849f, + 0.079937449921543474f, + 0.079554259696409127f, 0.079171066546292510f, 0.078787870485282088f, + 0.078404671527466441f, + 0.078021469686935602f, 0.077638264977777913f, 0.077255057414083589f, + 0.076871847009941652f, + 0.076488633779441206f, 0.076105417736672773f, 0.075722198895725248f, + 0.075338977270689375f, + 0.074955752875654230f, 0.074572525724710764f, 0.074189295831948693f, + 0.073806063211457842f, + 0.073422827877329483f, 0.073039589843653177f, 0.072656349124520389f, + 0.072273105734021334f, + 0.071889859686246352f, 0.071506610995287156f, 0.071123359675233852f, + 0.070740105740178361f, + 0.070356849204211397f, 0.069973590081423773f, 0.069590328385907715f, + 0.069207064131753759f, + 0.068823797333054326f, 0.068440528003900616f, 0.068057256158383886f, + 0.067673981810596848f, + 0.067290704974630494f, 0.066907425664577733f, 0.066524143894529736f, + 0.066140859678579578f, + 0.065757573030819083f, 0.065374283965340146f, 0.064990992496236119f, + 0.064607698637598646f, + 0.064224402403521202f, 0.063841103808096086f, 0.063457802865415636f, + 0.063074499589573618f, + 0.062691193994662109f, 0.062307886094775049f, 0.061924575904005130f, + 0.061541263436445129f, + 0.061157948706189229f, 0.060774631727329942f, 0.060391312513961619f, + 0.060007991080177375f, + 0.059624667440070382f, 0.059241341607735261f, 0.058858013597264912f, + 0.058474683422754095f, + 0.058091351098295878f, 0.057708016637985186f, 0.057324680055915692f, + 0.056941341366181127f, + 0.056558000582876661f, 0.056174657720095743f, 0.055791312791933681f, + 0.055407965812484541f, + 0.055024616795842439f, 0.054641265756102911f, 0.054257912707359794f, + 0.053874557663708772f, + 0.053491200639244271f, 0.053107841648060788f, 0.052724480704254229f, + 0.052341117821918783f, + 0.051957753015150501f, 0.051574386298044173f, 0.051191017684694640f, + 0.050807647189198162f, + 0.050424274825649297f, 0.050040900608144430f, 0.049657524550778251f, + 0.049274146667647289f, + 0.048890766972846805f, 0.048507385480472134f, 0.048124002204620014f, + 0.047740617159385448f, + 0.047357230358865306f, 0.046973841817155179f, 0.046590451548350717f, + 0.046207059566548990f, + 0.045823665885845313f, 0.045440270520336883f, 0.045056873484119603f, + 0.044673474791289434f, + 0.044290074455943754f, 0.043906672492178188f, 0.043523268914090238f, + 0.043139863735776100f, + 0.042756456971332048f, 0.042373048634855741f, 0.041989638740443119f, + 0.041606227302191955f, + 0.041222814334198304f, 0.040839399850560058f, 0.040455983865373815f, + 0.040072566392736257f, + 0.039689147446745419f, 0.039305727041497644f, 0.038922305191091085f, + 0.038538881909622631f, + 0.038155457211189216f, 0.037772031109889144f, 0.037388603619819022f, + 0.037005174755077273f, + 0.036621744529761024f, 0.036238312957967478f, 0.035854880053795196f, + 0.035471445831341021f, + 0.035088010304703626f, 0.034704573487980395f, 0.034321135395268765f, + 0.033937696040667535f, + 0.033554255438273790f, 0.033170813602186440f, 0.032787370546502645f, + 0.032403926285321405f, + 0.032020480832740429f, 0.031637034202857461f, 0.031253586409771626f, + 0.030870137467580314f, + 0.030486687390382738f, 0.030103236192276818f, 0.029719783887360508f, + 0.029336330489733147f, + 0.028952876013492331f, 0.028569420472737472f, 0.028185963881566689f, + 0.027802506254078142f, + 0.027419047604371360f, 0.027035587946544135f, 0.026652127294696067f, + 0.026268665662925468f, + 0.025885203065330677f, 0.025501739516011413f, 0.025118275029065638f, + 0.024734809618593138f, + 0.024351343298691951f, 0.023967876083461924f, 0.023584407987001611f, + 0.023200939023409587f, + 0.022817469206785804f, 0.022433998551228459f, 0.022050527070837558f, + 0.021667054779711814f, + 0.021283581691949955f, 0.020900107821652084f, 0.020516633182916549f, + 0.020133157789843505f, + 0.019749681656531803f, 0.019366204797080316f, 0.018982727225589285f, + 0.018599248956157190f, + 0.018215770002884327f, 0.017832290379869671f, 0.017448810101212228f, + 0.017065329181012358f, + 0.016681847633368677f, 0.016298365472381587f, 0.015914882712149747f, + 0.015531399366773606f, + 0.015147915450352307f, 0.014764430976985016f, 0.014380945960772247f, + 0.013997460415812761f, + 0.013613974356207112f, 0.013230487796054543f, 0.012847000749454314f, + 0.012463513230507034f, + 0.012080025253311559f, 0.011696536831968529f, 0.011313047980577277f, + 0.010929558713237145f, + 0.010546069044048827f, 0.010162578987111254f, 0.009779088556525145f, + 0.009395597766389905f, + 0.009012106630804949f, 0.008628615163871038f, 0.008245123379687167f, + 0.007861631292354124f, + 0.007478138915970929f, 0.007094646264638386f, 0.006711153352455981f, + 0.006327660193523208f, + 0.005944166801940901f, 0.005560673191808128f, 0.005177179377225743f, + 0.004793685372293270f, + 0.004410191191110246f, 0.004026696847777542f, 0.003643202356394263f, + 0.003259707731061291f, + 0.002876212985878184f, 0.002492718134944503f, 0.002109223192361147f, + 0.001725728172227238f, + 0.001342233088643682f, 0.000958737955710053f, 0.000575242787525925f, + 0.000191747598192208f +}; + +/** + * @} end of DCT4_IDCT4_Table group + */ + +/** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/** + * @brief Initialization function for the floating-point DCT4/IDCT4. + * @param[in,out] *S points to an instance of floating-point DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of floating-point RFFT/RIFFT structure. + * @param[in] *S_CFFT points to an instance of floating-point CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. + * \par Normalizing factor: + * The normalizing factor is sqrt(2/N), which depends on the size of transform N. + * Floating-point normalizing factors are mentioned in the table below for different DCT sizes: + * \image html dct4NormalizingF32Table.gif + */ + +arm_status arm_dct4_init_f32( + arm_dct4_instance_f32 * S, + arm_rfft_instance_f32 * S_RFFT, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint16_t N, + uint16_t Nby2, + float32_t normalize) +{ + /* Initialize the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initializing the pointer array with the weight table base addresses of different lengths */ + float32_t *twiddlePtr[4] = + { (float32_t *) Weights_128, (float32_t *) Weights_512, + (float32_t *) Weights_2048, (float32_t *) Weights_8192 + }; + + /* Initializing the pointer array with the cos factor table base addresses of different lengths */ + float32_t *pCosFactor[4] = + { (float32_t *) cos_factors_128, (float32_t *) cos_factors_512, + (float32_t *) cos_factors_2048, (float32_t *) cos_factors_8192 + }; + + /* Initialize the DCT4 length */ + S->N = N; + + /* Initialize the half of DCT4 length */ + S->Nby2 = Nby2; + + /* Initialize the DCT4 Normalizing factor */ + S->normalize = normalize; + + /* Initialize Real FFT Instance */ + S->pRfft = S_RFFT; + + /* Initialize Complex FFT Instance */ + S->pCfft = S_CFFT; + + switch (N) + { + /* Initialize the table modifier values */ + case 8192U: + S->pTwiddle = twiddlePtr[3]; + S->pCosFactor = pCosFactor[3]; + break; + case 2048U: + S->pTwiddle = twiddlePtr[2]; + S->pCosFactor = pCosFactor[2]; + break; + case 512U: + S->pTwiddle = twiddlePtr[1]; + S->pCosFactor = pCosFactor[1]; + break; + case 128U: + S->pTwiddle = twiddlePtr[0]; + S->pCosFactor = pCosFactor[0]; + break; + default: + status = ARM_MATH_ARGUMENT_ERROR; + } + + /* Initialize the RFFT/RIFFT */ + arm_rfft_init_f32(S->pRfft, S->pCfft, S->N, 0U, 1U); + + /* return the status of DCT4 Init function */ + return (status); +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c new file mode 100644 index 0000000..d3401bc --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q15.c @@ -0,0 +1,4280 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_dct4_init_q15.c + * Description: Initialization function of DCT-4 & IDCT4 Q15 + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup DCT4_IDCT4 + */ + +/** + * @addtogroup DCT4_IDCT4_Table DCT Type IV Tables + * @{ + */ + +/* +* @brief Weights Table +*/ + +/** + * \par + * Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
+ * \par + * C command to generate the table + *
+ * for(i = 0; i< N; i++)
+ * {
+ *   weights[2*i]= cos(i*c);
+ *   weights[(2*i)+1]= -sin(i * c);
+ * } 
+ * \par + * where N is the Number of weights to be calculated and c is pi/(2*N) + * \par + * Converted the output to q15 format by multiplying with 2^31 and saturated if required. + * \par + * In the tables below the real and imaginary values are placed alternatively, hence the + * array length is 2*N. + */ + +static const q15_t ALIGN4 WeightsQ15_128[256] = { + (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7fe9, (q15_t)0xfb4a, + (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7f87, (q15_t)0xf505, + (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7ed5, (q15_t)0xeec7, + (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7dd6, (q15_t)0xe893, + (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7c89, (q15_t)0xe26d, + (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7aef, (q15_t)0xdc5a, + (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x7909, (q15_t)0xd65d, + (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x76d9, (q15_t)0xd079, + (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x745f, (q15_t)0xcab3, + (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x719e, (q15_t)0xc50e, + (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6e96, (q15_t)0xbf8d, + (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6b4a, (q15_t)0xba33, + (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x67bd, (q15_t)0xb505, + (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x63ef, (q15_t)0xb005, + (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x5fe3, (q15_t)0xab36, + (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5b9d, (q15_t)0xa69c, + (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x571d, (q15_t)0xa239, + (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x5269, (q15_t)0x9e0f, + (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4d81, (q15_t)0x9a23, + (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x4869, (q15_t)0x9674, + (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4325, (q15_t)0x9307, + (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3db8, (q15_t)0x8fdd, + (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3824, (q15_t)0x8cf9, + (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x326e, (q15_t)0x8a5b, + (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2c98, (q15_t)0x8806, + (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x26a8, (q15_t)0x85fb, + (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x209f, (q15_t)0x843b, + (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1a82, (q15_t)0x82c7, + (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x1455, (q15_t)0x81a1, + (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x1139, (q15_t)0x812b, (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xe1b, (q15_t)0x80c8, + (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xafb, (q15_t)0x8079, (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x7d9, (q15_t)0x803e, + (q15_t)0x647, (q15_t)0x8028, (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x324, (q15_t)0x800a, (q15_t)0x192, (q15_t)0x8003 +}; + +static const q15_t ALIGN4 WeightsQ15_512[1024] = { + (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xff9c, (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7ffe, (q15_t)0xfed3, + (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ffc, (q15_t)0xfe0a, (q15_t)0x7ffa, (q15_t)0xfda5, (q15_t)0x7ff8, (q15_t)0xfd41, + (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7ff3, (q15_t)0xfc78, (q15_t)0x7ff0, (q15_t)0xfc13, (q15_t)0x7fed, (q15_t)0xfbaf, + (q15_t)0x7fe9, (q15_t)0xfb4a, (q15_t)0x7fe5, (q15_t)0xfae6, (q15_t)0x7fe1, (q15_t)0xfa81, (q15_t)0x7fdd, (q15_t)0xfa1d, + (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fd3, (q15_t)0xf954, (q15_t)0x7fce, (q15_t)0xf8f0, (q15_t)0x7fc8, (q15_t)0xf88b, + (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fbc, (q15_t)0xf7c3, (q15_t)0x7fb5, (q15_t)0xf75e, (q15_t)0x7fae, (q15_t)0xf6fa, + (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7f9f, (q15_t)0xf632, (q15_t)0x7f97, (q15_t)0xf5cd, (q15_t)0x7f8f, (q15_t)0xf569, + (q15_t)0x7f87, (q15_t)0xf505, (q15_t)0x7f7e, (q15_t)0xf4a1, (q15_t)0x7f75, (q15_t)0xf43d, (q15_t)0x7f6b, (q15_t)0xf3d9, + (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f58, (q15_t)0xf311, (q15_t)0x7f4d, (q15_t)0xf2ad, (q15_t)0x7f43, (q15_t)0xf249, + (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f2d, (q15_t)0xf181, (q15_t)0x7f21, (q15_t)0xf11d, (q15_t)0x7f15, (q15_t)0xf0b9, + (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7efd, (q15_t)0xeff2, (q15_t)0x7ef0, (q15_t)0xef8e, (q15_t)0x7ee3, (q15_t)0xef2a, + (q15_t)0x7ed5, (q15_t)0xeec7, (q15_t)0x7ec8, (q15_t)0xee63, (q15_t)0x7eba, (q15_t)0xedff, (q15_t)0x7eab, (q15_t)0xed9c, + (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e8e, (q15_t)0xecd5, (q15_t)0x7e7f, (q15_t)0xec72, (q15_t)0x7e6f, (q15_t)0xec0e, + (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e4f, (q15_t)0xeb48, (q15_t)0x7e3f, (q15_t)0xeae5, (q15_t)0x7e2e, (q15_t)0xea81, + (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7e0c, (q15_t)0xe9bb, (q15_t)0x7dfa, (q15_t)0xe958, (q15_t)0x7de8, (q15_t)0xe8f6, + (q15_t)0x7dd6, (q15_t)0xe893, (q15_t)0x7dc3, (q15_t)0xe830, (q15_t)0x7db0, (q15_t)0xe7cd, (q15_t)0x7d9d, (q15_t)0xe76a, + (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d76, (q15_t)0xe6a5, (q15_t)0x7d62, (q15_t)0xe643, (q15_t)0x7d4e, (q15_t)0xe5e0, + (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7d24, (q15_t)0xe51c, (q15_t)0x7d0f, (q15_t)0xe4b9, (q15_t)0x7cf9, (q15_t)0xe457, + (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7ccd, (q15_t)0xe393, (q15_t)0x7cb7, (q15_t)0xe331, (q15_t)0x7ca0, (q15_t)0xe2cf, + (q15_t)0x7c89, (q15_t)0xe26d, (q15_t)0x7c71, (q15_t)0xe20b, (q15_t)0x7c5a, (q15_t)0xe1aa, (q15_t)0x7c42, (q15_t)0xe148, + (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7c11, (q15_t)0xe085, (q15_t)0x7bf8, (q15_t)0xe024, (q15_t)0x7bdf, (q15_t)0xdfc2, + (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7bac, (q15_t)0xdf00, (q15_t)0x7b92, (q15_t)0xde9f, (q15_t)0x7b77, (q15_t)0xde3e, + (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7b42, (q15_t)0xdd7c, (q15_t)0x7b26, (q15_t)0xdd1b, (q15_t)0x7b0b, (q15_t)0xdcbb, + (q15_t)0x7aef, (q15_t)0xdc5a, (q15_t)0x7ad3, (q15_t)0xdbf9, (q15_t)0x7ab6, (q15_t)0xdb99, (q15_t)0x7a9a, (q15_t)0xdb39, + (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a5f, (q15_t)0xda78, (q15_t)0x7a42, (q15_t)0xda18, (q15_t)0x7a24, (q15_t)0xd9b8, + (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x79e7, (q15_t)0xd8f9, (q15_t)0x79c8, (q15_t)0xd899, (q15_t)0x79a9, (q15_t)0xd839, + (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x796a, (q15_t)0xd77a, (q15_t)0x794a, (q15_t)0xd71b, (q15_t)0x792a, (q15_t)0xd6bc, + (q15_t)0x7909, (q15_t)0xd65d, (q15_t)0x78e8, (q15_t)0xd5fe, (q15_t)0x78c7, (q15_t)0xd59f, (q15_t)0x78a6, (q15_t)0xd540, + (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x7862, (q15_t)0xd483, (q15_t)0x7840, (q15_t)0xd424, (q15_t)0x781d, (q15_t)0xd3c6, + (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x77d7, (q15_t)0xd309, (q15_t)0x77b4, (q15_t)0xd2ab, (q15_t)0x7790, (q15_t)0xd24d, + (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x7747, (q15_t)0xd192, (q15_t)0x7723, (q15_t)0xd134, (q15_t)0x76fe, (q15_t)0xd0d7, + (q15_t)0x76d9, (q15_t)0xd079, (q15_t)0x76b3, (q15_t)0xd01c, (q15_t)0x768e, (q15_t)0xcfbf, (q15_t)0x7668, (q15_t)0xcf62, + (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x761b, (q15_t)0xcea8, (q15_t)0x75f4, (q15_t)0xce4b, (q15_t)0x75cc, (q15_t)0xcdef, + (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x757d, (q15_t)0xcd36, (q15_t)0x7555, (q15_t)0xccda, (q15_t)0x752d, (q15_t)0xcc7e, + (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x74db, (q15_t)0xcbc6, (q15_t)0x74b2, (q15_t)0xcb6a, (q15_t)0x7489, (q15_t)0xcb0e, + (q15_t)0x745f, (q15_t)0xcab3, (q15_t)0x7435, (q15_t)0xca58, (q15_t)0x740b, (q15_t)0xc9fc, (q15_t)0x73e0, (q15_t)0xc9a1, + (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x738a, (q15_t)0xc8ec, (q15_t)0x735f, (q15_t)0xc891, (q15_t)0x7333, (q15_t)0xc836, + (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x72db, (q15_t)0xc782, (q15_t)0x72af, (q15_t)0xc728, (q15_t)0x7282, (q15_t)0xc6ce, + (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x7227, (q15_t)0xc61a, (q15_t)0x71fa, (q15_t)0xc5c0, (q15_t)0x71cc, (q15_t)0xc567, + (q15_t)0x719e, (q15_t)0xc50e, (q15_t)0x716f, (q15_t)0xc4b4, (q15_t)0x7141, (q15_t)0xc45b, (q15_t)0x7112, (q15_t)0xc403, + (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x70b3, (q15_t)0xc351, (q15_t)0x7083, (q15_t)0xc2f9, (q15_t)0x7053, (q15_t)0xc2a0, + (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x6ff2, (q15_t)0xc1f0, (q15_t)0x6fc1, (q15_t)0xc198, (q15_t)0x6f90, (q15_t)0xc141, + (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6f2d, (q15_t)0xc092, (q15_t)0x6efb, (q15_t)0xc03b, (q15_t)0x6ec9, (q15_t)0xbfe3, + (q15_t)0x6e96, (q15_t)0xbf8d, (q15_t)0x6e63, (q15_t)0xbf36, (q15_t)0x6e30, (q15_t)0xbedf, (q15_t)0x6dfd, (q15_t)0xbe89, + (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6d96, (q15_t)0xbddc, (q15_t)0x6d62, (q15_t)0xbd86, (q15_t)0x6d2d, (q15_t)0xbd30, + (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6cc4, (q15_t)0xbc85, (q15_t)0x6c8f, (q15_t)0xbc30, (q15_t)0x6c59, (q15_t)0xbbdb, + (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6bee, (q15_t)0xbb31, (q15_t)0x6bb8, (q15_t)0xbadc, (q15_t)0x6b81, (q15_t)0xba88, + (q15_t)0x6b4a, (q15_t)0xba33, (q15_t)0x6b13, (q15_t)0xb9df, (q15_t)0x6adc, (q15_t)0xb98b, (q15_t)0x6aa5, (q15_t)0xb937, + (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x6a35, (q15_t)0xb890, (q15_t)0x69fd, (q15_t)0xb83d, (q15_t)0x69c4, (q15_t)0xb7ea, + (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x6953, (q15_t)0xb744, (q15_t)0x6919, (q15_t)0xb6f1, (q15_t)0x68e0, (q15_t)0xb69f, + (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x686c, (q15_t)0xb5fa, (q15_t)0x6832, (q15_t)0xb5a8, (q15_t)0x67f7, (q15_t)0xb557, + (q15_t)0x67bd, (q15_t)0xb505, (q15_t)0x6782, (q15_t)0xb4b4, (q15_t)0x6746, (q15_t)0xb462, (q15_t)0x670b, (q15_t)0xb411, + (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x6693, (q15_t)0xb370, (q15_t)0x6657, (q15_t)0xb31f, (q15_t)0x661a, (q15_t)0xb2cf, + (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x65a0, (q15_t)0xb22f, (q15_t)0x6563, (q15_t)0xb1df, (q15_t)0x6526, (q15_t)0xb190, + (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x64aa, (q15_t)0xb0f1, (q15_t)0x646c, (q15_t)0xb0a2, (q15_t)0x642d, (q15_t)0xb054, + (q15_t)0x63ef, (q15_t)0xb005, (q15_t)0x63b0, (q15_t)0xafb7, (q15_t)0x6371, (q15_t)0xaf69, (q15_t)0x6331, (q15_t)0xaf1b, + (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x62b2, (q15_t)0xae7f, (q15_t)0x6271, (q15_t)0xae32, (q15_t)0x6231, (q15_t)0xade4, + (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x61b0, (q15_t)0xad4b, (q15_t)0x616f, (q15_t)0xacfe, (q15_t)0x612d, (q15_t)0xacb2, + (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x60aa, (q15_t)0xac19, (q15_t)0x6068, (q15_t)0xabcd, (q15_t)0x6026, (q15_t)0xab82, + (q15_t)0x5fe3, (q15_t)0xab36, (q15_t)0x5fa0, (q15_t)0xaaeb, (q15_t)0x5f5e, (q15_t)0xaaa0, (q15_t)0x5f1a, (q15_t)0xaa55, + (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5e93, (q15_t)0xa9c0, (q15_t)0x5e50, (q15_t)0xa976, (q15_t)0x5e0b, (q15_t)0xa92c, + (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5d83, (q15_t)0xa899, (q15_t)0x5d3e, (q15_t)0xa850, (q15_t)0x5cf9, (q15_t)0xa807, + (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5c6e, (q15_t)0xa775, (q15_t)0x5c29, (q15_t)0xa72c, (q15_t)0x5be3, (q15_t)0xa6e4, + (q15_t)0x5b9d, (q15_t)0xa69c, (q15_t)0x5b56, (q15_t)0xa654, (q15_t)0x5b10, (q15_t)0xa60d, (q15_t)0x5ac9, (q15_t)0xa5c5, + (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5a3b, (q15_t)0xa537, (q15_t)0x59f3, (q15_t)0xa4f0, (q15_t)0x59ac, (q15_t)0xa4aa, + (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x591c, (q15_t)0xa41d, (q15_t)0x58d4, (q15_t)0xa3d7, (q15_t)0x588b, (q15_t)0xa392, + (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x57f9, (q15_t)0xa307, (q15_t)0x57b0, (q15_t)0xa2c2, (q15_t)0x5767, (q15_t)0xa27d, + (q15_t)0x571d, (q15_t)0xa239, (q15_t)0x56d4, (q15_t)0xa1f5, (q15_t)0x568a, (q15_t)0xa1b0, (q15_t)0x5640, (q15_t)0xa16d, + (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x55ab, (q15_t)0xa0e6, (q15_t)0x5560, (q15_t)0xa0a2, (q15_t)0x5515, (q15_t)0xa060, + (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x547e, (q15_t)0x9fda, (q15_t)0x5433, (q15_t)0x9f98, (q15_t)0x53e7, (q15_t)0x9f56, + (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x534e, (q15_t)0x9ed3, (q15_t)0x5302, (q15_t)0x9e91, (q15_t)0x52b5, (q15_t)0x9e50, + (q15_t)0x5269, (q15_t)0x9e0f, (q15_t)0x521c, (q15_t)0x9dcf, (q15_t)0x51ce, (q15_t)0x9d8f, (q15_t)0x5181, (q15_t)0x9d4e, + (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x50e5, (q15_t)0x9ccf, (q15_t)0x5097, (q15_t)0x9c8f, (q15_t)0x5049, (q15_t)0x9c50, + (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4fac, (q15_t)0x9bd3, (q15_t)0x4f5e, (q15_t)0x9b94, (q15_t)0x4f0f, (q15_t)0x9b56, + (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4e70, (q15_t)0x9ada, (q15_t)0x4e21, (q15_t)0x9a9d, (q15_t)0x4dd1, (q15_t)0x9a60, + (q15_t)0x4d81, (q15_t)0x9a23, (q15_t)0x4d31, (q15_t)0x99e6, (q15_t)0x4ce1, (q15_t)0x99a9, (q15_t)0x4c90, (q15_t)0x996d, + (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4bef, (q15_t)0x98f5, (q15_t)0x4b9e, (q15_t)0x98ba, (q15_t)0x4b4c, (q15_t)0x987e, + (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x4aa9, (q15_t)0x9809, (q15_t)0x4a58, (q15_t)0x97ce, (q15_t)0x4a06, (q15_t)0x9794, + (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x4961, (q15_t)0x9720, (q15_t)0x490f, (q15_t)0x96e7, (q15_t)0x48bc, (q15_t)0x96ad, + (q15_t)0x4869, (q15_t)0x9674, (q15_t)0x4816, (q15_t)0x963c, (q15_t)0x47c3, (q15_t)0x9603, (q15_t)0x4770, (q15_t)0x95cb, + (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x46c9, (q15_t)0x955b, (q15_t)0x4675, (q15_t)0x9524, (q15_t)0x4621, (q15_t)0x94ed, + (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x4578, (q15_t)0x947f, (q15_t)0x4524, (q15_t)0x9448, (q15_t)0x44cf, (q15_t)0x9412, + (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4425, (q15_t)0x93a7, (q15_t)0x43d0, (q15_t)0x9371, (q15_t)0x437b, (q15_t)0x933c, + (q15_t)0x4325, (q15_t)0x9307, (q15_t)0x42d0, (q15_t)0x92d3, (q15_t)0x427a, (q15_t)0x929e, (q15_t)0x4224, (q15_t)0x926a, + (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x4177, (q15_t)0x9203, (q15_t)0x4121, (q15_t)0x91d0, (q15_t)0x40ca, (q15_t)0x919d, + (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x401d, (q15_t)0x9137, (q15_t)0x3fc5, (q15_t)0x9105, (q15_t)0x3f6e, (q15_t)0x90d3, + (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3ebf, (q15_t)0x9070, (q15_t)0x3e68, (q15_t)0x903f, (q15_t)0x3e10, (q15_t)0x900e, + (q15_t)0x3db8, (q15_t)0x8fdd, (q15_t)0x3d60, (q15_t)0x8fad, (q15_t)0x3d07, (q15_t)0x8f7d, (q15_t)0x3caf, (q15_t)0x8f4d, + (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3bfd, (q15_t)0x8eee, (q15_t)0x3ba5, (q15_t)0x8ebf, (q15_t)0x3b4c, (q15_t)0x8e91, + (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x3a99, (q15_t)0x8e34, (q15_t)0x3a40, (q15_t)0x8e06, (q15_t)0x39e6, (q15_t)0x8dd9, + (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3932, (q15_t)0x8d7e, (q15_t)0x38d8, (q15_t)0x8d51, (q15_t)0x387e, (q15_t)0x8d25, + (q15_t)0x3824, (q15_t)0x8cf9, (q15_t)0x37ca, (q15_t)0x8ccd, (q15_t)0x376f, (q15_t)0x8ca1, (q15_t)0x3714, (q15_t)0x8c76, + (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x365f, (q15_t)0x8c20, (q15_t)0x3604, (q15_t)0x8bf5, (q15_t)0x35a8, (q15_t)0x8bcb, + (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x34f2, (q15_t)0x8b77, (q15_t)0x3496, (q15_t)0x8b4e, (q15_t)0x343a, (q15_t)0x8b25, + (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x3382, (q15_t)0x8ad3, (q15_t)0x3326, (q15_t)0x8aab, (q15_t)0x32ca, (q15_t)0x8a83, + (q15_t)0x326e, (q15_t)0x8a5b, (q15_t)0x3211, (q15_t)0x8a34, (q15_t)0x31b5, (q15_t)0x8a0c, (q15_t)0x3158, (q15_t)0x89e5, + (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x309e, (q15_t)0x8998, (q15_t)0x3041, (q15_t)0x8972, (q15_t)0x2fe4, (q15_t)0x894d, + (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2f29, (q15_t)0x8902, (q15_t)0x2ecc, (q15_t)0x88dd, (q15_t)0x2e6e, (q15_t)0x88b9, + (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2db3, (q15_t)0x8870, (q15_t)0x2d55, (q15_t)0x884c, (q15_t)0x2cf7, (q15_t)0x8829, + (q15_t)0x2c98, (q15_t)0x8806, (q15_t)0x2c3a, (q15_t)0x87e3, (q15_t)0x2bdc, (q15_t)0x87c0, (q15_t)0x2b7d, (q15_t)0x879e, + (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x2ac0, (q15_t)0x875a, (q15_t)0x2a61, (q15_t)0x8739, (q15_t)0x2a02, (q15_t)0x8718, + (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x2944, (q15_t)0x86d6, (q15_t)0x28e5, (q15_t)0x86b6, (q15_t)0x2886, (q15_t)0x8696, + (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x27c7, (q15_t)0x8657, (q15_t)0x2767, (q15_t)0x8638, (q15_t)0x2707, (q15_t)0x8619, + (q15_t)0x26a8, (q15_t)0x85fb, (q15_t)0x2648, (q15_t)0x85dc, (q15_t)0x25e8, (q15_t)0x85be, (q15_t)0x2588, (q15_t)0x85a1, + (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x24c7, (q15_t)0x8566, (q15_t)0x2467, (q15_t)0x854a, (q15_t)0x2407, (q15_t)0x852d, + (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x2345, (q15_t)0x84f5, (q15_t)0x22e5, (q15_t)0x84da, (q15_t)0x2284, (q15_t)0x84be, + (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x21c2, (q15_t)0x8489, (q15_t)0x2161, (q15_t)0x846e, (q15_t)0x2100, (q15_t)0x8454, + (q15_t)0x209f, (q15_t)0x843b, (q15_t)0x203e, (q15_t)0x8421, (q15_t)0x1fdc, (q15_t)0x8408, (q15_t)0x1f7b, (q15_t)0x83ef, + (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1eb8, (q15_t)0x83be, (q15_t)0x1e56, (q15_t)0x83a6, (q15_t)0x1df5, (q15_t)0x838f, + (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1d31, (q15_t)0x8360, (q15_t)0x1ccf, (q15_t)0x8349, (q15_t)0x1c6d, (q15_t)0x8333, + (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1ba9, (q15_t)0x8307, (q15_t)0x1b47, (q15_t)0x82f1, (q15_t)0x1ae4, (q15_t)0x82dc, + (q15_t)0x1a82, (q15_t)0x82c7, (q15_t)0x1a20, (q15_t)0x82b2, (q15_t)0x19bd, (q15_t)0x829e, (q15_t)0x195b, (q15_t)0x828a, + (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x1896, (q15_t)0x8263, (q15_t)0x1833, (q15_t)0x8250, (q15_t)0x17d0, (q15_t)0x823d, + (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x170a, (q15_t)0x8218, (q15_t)0x16a8, (q15_t)0x8206, (q15_t)0x1645, (q15_t)0x81f4, + (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x157f, (q15_t)0x81d2, (q15_t)0x151b, (q15_t)0x81c1, (q15_t)0x14b8, (q15_t)0x81b1, + (q15_t)0x1455, (q15_t)0x81a1, (q15_t)0x13f2, (q15_t)0x8191, (q15_t)0x138e, (q15_t)0x8181, (q15_t)0x132b, (q15_t)0x8172, + (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x1264, (q15_t)0x8155, (q15_t)0x1201, (q15_t)0x8146, (q15_t)0x119d, (q15_t)0x8138, + (q15_t)0x1139, (q15_t)0x812b, (q15_t)0x10d6, (q15_t)0x811d, (q15_t)0x1072, (q15_t)0x8110, (q15_t)0x100e, (q15_t)0x8103, + (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xf47, (q15_t)0x80eb, (q15_t)0xee3, (q15_t)0x80df, (q15_t)0xe7f, (q15_t)0x80d3, + (q15_t)0xe1b, (q15_t)0x80c8, (q15_t)0xdb7, (q15_t)0x80bd, (q15_t)0xd53, (q15_t)0x80b3, (q15_t)0xcef, (q15_t)0x80a8, + (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xc27, (q15_t)0x8095, (q15_t)0xbc3, (q15_t)0x808b, (q15_t)0xb5f, (q15_t)0x8082, + (q15_t)0xafb, (q15_t)0x8079, (q15_t)0xa97, (q15_t)0x8071, (q15_t)0xa33, (q15_t)0x8069, (q15_t)0x9ce, (q15_t)0x8061, + (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x906, (q15_t)0x8052, (q15_t)0x8a2, (q15_t)0x804b, (q15_t)0x83d, (q15_t)0x8044, + (q15_t)0x7d9, (q15_t)0x803e, (q15_t)0x775, (q15_t)0x8038, (q15_t)0x710, (q15_t)0x8032, (q15_t)0x6ac, (q15_t)0x802d, + (q15_t)0x647, (q15_t)0x8028, (q15_t)0x5e3, (q15_t)0x8023, (q15_t)0x57f, (q15_t)0x801f, (q15_t)0x51a, (q15_t)0x801b, + (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x451, (q15_t)0x8013, (q15_t)0x3ed, (q15_t)0x8010, (q15_t)0x388, (q15_t)0x800d, + (q15_t)0x324, (q15_t)0x800a, (q15_t)0x2bf, (q15_t)0x8008, (q15_t)0x25b, (q15_t)0x8006, (q15_t)0x1f6, (q15_t)0x8004, + (q15_t)0x192, (q15_t)0x8003, (q15_t)0x12d, (q15_t)0x8002, (q15_t)0xc9, (q15_t)0x8001, (q15_t)0x64, (q15_t)0x8001 +}; + +static const q15_t ALIGN4 WeightsQ15_2048[4096] = { + (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xffe7, (q15_t)0x7fff, (q15_t)0xffce, (q15_t)0x7fff, (q15_t)0xffb5, + (q15_t)0x7fff, (q15_t)0xff9c, (q15_t)0x7fff, (q15_t)0xff83, (q15_t)0x7fff, (q15_t)0xff6a, (q15_t)0x7fff, (q15_t)0xff51, + (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7fff, (q15_t)0xff1e, (q15_t)0x7fff, (q15_t)0xff05, (q15_t)0x7ffe, (q15_t)0xfeec, + (q15_t)0x7ffe, (q15_t)0xfed3, (q15_t)0x7ffe, (q15_t)0xfeba, (q15_t)0x7ffe, (q15_t)0xfea1, (q15_t)0x7ffd, (q15_t)0xfe88, + (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ffd, (q15_t)0xfe55, (q15_t)0x7ffc, (q15_t)0xfe3c, (q15_t)0x7ffc, (q15_t)0xfe23, + (q15_t)0x7ffc, (q15_t)0xfe0a, (q15_t)0x7ffb, (q15_t)0xfdf1, (q15_t)0x7ffb, (q15_t)0xfdd8, (q15_t)0x7ffa, (q15_t)0xfdbe, + (q15_t)0x7ffa, (q15_t)0xfda5, (q15_t)0x7ff9, (q15_t)0xfd8c, (q15_t)0x7ff9, (q15_t)0xfd73, (q15_t)0x7ff8, (q15_t)0xfd5a, + (q15_t)0x7ff8, (q15_t)0xfd41, (q15_t)0x7ff7, (q15_t)0xfd28, (q15_t)0x7ff7, (q15_t)0xfd0f, (q15_t)0x7ff6, (q15_t)0xfcf5, + (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7ff5, (q15_t)0xfcc3, (q15_t)0x7ff4, (q15_t)0xfcaa, (q15_t)0x7ff4, (q15_t)0xfc91, + (q15_t)0x7ff3, (q15_t)0xfc78, (q15_t)0x7ff2, (q15_t)0xfc5f, (q15_t)0x7ff2, (q15_t)0xfc46, (q15_t)0x7ff1, (q15_t)0xfc2c, + (q15_t)0x7ff0, (q15_t)0xfc13, (q15_t)0x7fef, (q15_t)0xfbfa, (q15_t)0x7fee, (q15_t)0xfbe1, (q15_t)0x7fee, (q15_t)0xfbc8, + (q15_t)0x7fed, (q15_t)0xfbaf, (q15_t)0x7fec, (q15_t)0xfb96, (q15_t)0x7feb, (q15_t)0xfb7d, (q15_t)0x7fea, (q15_t)0xfb64, + (q15_t)0x7fe9, (q15_t)0xfb4a, (q15_t)0x7fe8, (q15_t)0xfb31, (q15_t)0x7fe7, (q15_t)0xfb18, (q15_t)0x7fe6, (q15_t)0xfaff, + (q15_t)0x7fe5, (q15_t)0xfae6, (q15_t)0x7fe4, (q15_t)0xfacd, (q15_t)0x7fe3, (q15_t)0xfab4, (q15_t)0x7fe2, (q15_t)0xfa9b, + (q15_t)0x7fe1, (q15_t)0xfa81, (q15_t)0x7fe0, (q15_t)0xfa68, (q15_t)0x7fdf, (q15_t)0xfa4f, (q15_t)0x7fde, (q15_t)0xfa36, + (q15_t)0x7fdd, (q15_t)0xfa1d, (q15_t)0x7fdc, (q15_t)0xfa04, (q15_t)0x7fda, (q15_t)0xf9eb, (q15_t)0x7fd9, (q15_t)0xf9d2, + (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fd7, (q15_t)0xf9a0, (q15_t)0x7fd6, (q15_t)0xf986, (q15_t)0x7fd4, (q15_t)0xf96d, + (q15_t)0x7fd3, (q15_t)0xf954, (q15_t)0x7fd2, (q15_t)0xf93b, (q15_t)0x7fd0, (q15_t)0xf922, (q15_t)0x7fcf, (q15_t)0xf909, + (q15_t)0x7fce, (q15_t)0xf8f0, (q15_t)0x7fcc, (q15_t)0xf8d7, (q15_t)0x7fcb, (q15_t)0xf8be, (q15_t)0x7fc9, (q15_t)0xf8a5, + (q15_t)0x7fc8, (q15_t)0xf88b, (q15_t)0x7fc6, (q15_t)0xf872, (q15_t)0x7fc5, (q15_t)0xf859, (q15_t)0x7fc3, (q15_t)0xf840, + (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fc0, (q15_t)0xf80e, (q15_t)0x7fbf, (q15_t)0xf7f5, (q15_t)0x7fbd, (q15_t)0xf7dc, + (q15_t)0x7fbc, (q15_t)0xf7c3, (q15_t)0x7fba, (q15_t)0xf7aa, (q15_t)0x7fb8, (q15_t)0xf791, (q15_t)0x7fb7, (q15_t)0xf778, + (q15_t)0x7fb5, (q15_t)0xf75e, (q15_t)0x7fb3, (q15_t)0xf745, (q15_t)0x7fb1, (q15_t)0xf72c, (q15_t)0x7fb0, (q15_t)0xf713, + (q15_t)0x7fae, (q15_t)0xf6fa, (q15_t)0x7fac, (q15_t)0xf6e1, (q15_t)0x7faa, (q15_t)0xf6c8, (q15_t)0x7fa9, (q15_t)0xf6af, + (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7fa5, (q15_t)0xf67d, (q15_t)0x7fa3, (q15_t)0xf664, (q15_t)0x7fa1, (q15_t)0xf64b, + (q15_t)0x7f9f, (q15_t)0xf632, (q15_t)0x7f9d, (q15_t)0xf619, (q15_t)0x7f9b, (q15_t)0xf600, (q15_t)0x7f99, (q15_t)0xf5e7, + (q15_t)0x7f97, (q15_t)0xf5cd, (q15_t)0x7f95, (q15_t)0xf5b4, (q15_t)0x7f93, (q15_t)0xf59b, (q15_t)0x7f91, (q15_t)0xf582, + (q15_t)0x7f8f, (q15_t)0xf569, (q15_t)0x7f8d, (q15_t)0xf550, (q15_t)0x7f8b, (q15_t)0xf537, (q15_t)0x7f89, (q15_t)0xf51e, + (q15_t)0x7f87, (q15_t)0xf505, (q15_t)0x7f85, (q15_t)0xf4ec, (q15_t)0x7f82, (q15_t)0xf4d3, (q15_t)0x7f80, (q15_t)0xf4ba, + (q15_t)0x7f7e, (q15_t)0xf4a1, (q15_t)0x7f7c, (q15_t)0xf488, (q15_t)0x7f79, (q15_t)0xf46f, (q15_t)0x7f77, (q15_t)0xf456, + (q15_t)0x7f75, (q15_t)0xf43d, (q15_t)0x7f72, (q15_t)0xf424, (q15_t)0x7f70, (q15_t)0xf40b, (q15_t)0x7f6e, (q15_t)0xf3f2, + (q15_t)0x7f6b, (q15_t)0xf3d9, (q15_t)0x7f69, (q15_t)0xf3c0, (q15_t)0x7f67, (q15_t)0xf3a7, (q15_t)0x7f64, (q15_t)0xf38e, + (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f5f, (q15_t)0xf35c, (q15_t)0x7f5d, (q15_t)0xf343, (q15_t)0x7f5a, (q15_t)0xf32a, + (q15_t)0x7f58, (q15_t)0xf311, (q15_t)0x7f55, (q15_t)0xf2f8, (q15_t)0x7f53, (q15_t)0xf2df, (q15_t)0x7f50, (q15_t)0xf2c6, + (q15_t)0x7f4d, (q15_t)0xf2ad, (q15_t)0x7f4b, (q15_t)0xf294, (q15_t)0x7f48, (q15_t)0xf27b, (q15_t)0x7f45, (q15_t)0xf262, + (q15_t)0x7f43, (q15_t)0xf249, (q15_t)0x7f40, (q15_t)0xf230, (q15_t)0x7f3d, (q15_t)0xf217, (q15_t)0x7f3b, (q15_t)0xf1fe, + (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f35, (q15_t)0xf1cc, (q15_t)0x7f32, (q15_t)0xf1b3, (q15_t)0x7f2f, (q15_t)0xf19a, + (q15_t)0x7f2d, (q15_t)0xf181, (q15_t)0x7f2a, (q15_t)0xf168, (q15_t)0x7f27, (q15_t)0xf14f, (q15_t)0x7f24, (q15_t)0xf136, + (q15_t)0x7f21, (q15_t)0xf11d, (q15_t)0x7f1e, (q15_t)0xf104, (q15_t)0x7f1b, (q15_t)0xf0eb, (q15_t)0x7f18, (q15_t)0xf0d2, + (q15_t)0x7f15, (q15_t)0xf0b9, (q15_t)0x7f12, (q15_t)0xf0a0, (q15_t)0x7f0f, (q15_t)0xf087, (q15_t)0x7f0c, (q15_t)0xf06e, + (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7f06, (q15_t)0xf03c, (q15_t)0x7f03, (q15_t)0xf023, (q15_t)0x7f00, (q15_t)0xf00b, + (q15_t)0x7efd, (q15_t)0xeff2, (q15_t)0x7ef9, (q15_t)0xefd9, (q15_t)0x7ef6, (q15_t)0xefc0, (q15_t)0x7ef3, (q15_t)0xefa7, + (q15_t)0x7ef0, (q15_t)0xef8e, (q15_t)0x7eed, (q15_t)0xef75, (q15_t)0x7ee9, (q15_t)0xef5c, (q15_t)0x7ee6, (q15_t)0xef43, + (q15_t)0x7ee3, (q15_t)0xef2a, (q15_t)0x7edf, (q15_t)0xef11, (q15_t)0x7edc, (q15_t)0xeef8, (q15_t)0x7ed9, (q15_t)0xeedf, + (q15_t)0x7ed5, (q15_t)0xeec7, (q15_t)0x7ed2, (q15_t)0xeeae, (q15_t)0x7ecf, (q15_t)0xee95, (q15_t)0x7ecb, (q15_t)0xee7c, + (q15_t)0x7ec8, (q15_t)0xee63, (q15_t)0x7ec4, (q15_t)0xee4a, (q15_t)0x7ec1, (q15_t)0xee31, (q15_t)0x7ebd, (q15_t)0xee18, + (q15_t)0x7eba, (q15_t)0xedff, (q15_t)0x7eb6, (q15_t)0xede7, (q15_t)0x7eb3, (q15_t)0xedce, (q15_t)0x7eaf, (q15_t)0xedb5, + (q15_t)0x7eab, (q15_t)0xed9c, (q15_t)0x7ea8, (q15_t)0xed83, (q15_t)0x7ea4, (q15_t)0xed6a, (q15_t)0x7ea1, (q15_t)0xed51, + (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e99, (q15_t)0xed20, (q15_t)0x7e95, (q15_t)0xed07, (q15_t)0x7e92, (q15_t)0xecee, + (q15_t)0x7e8e, (q15_t)0xecd5, (q15_t)0x7e8a, (q15_t)0xecbc, (q15_t)0x7e86, (q15_t)0xeca3, (q15_t)0x7e83, (q15_t)0xec8a, + (q15_t)0x7e7f, (q15_t)0xec72, (q15_t)0x7e7b, (q15_t)0xec59, (q15_t)0x7e77, (q15_t)0xec40, (q15_t)0x7e73, (q15_t)0xec27, + (q15_t)0x7e6f, (q15_t)0xec0e, (q15_t)0x7e6b, (q15_t)0xebf5, (q15_t)0x7e67, (q15_t)0xebdd, (q15_t)0x7e63, (q15_t)0xebc4, + (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e5b, (q15_t)0xeb92, (q15_t)0x7e57, (q15_t)0xeb79, (q15_t)0x7e53, (q15_t)0xeb61, + (q15_t)0x7e4f, (q15_t)0xeb48, (q15_t)0x7e4b, (q15_t)0xeb2f, (q15_t)0x7e47, (q15_t)0xeb16, (q15_t)0x7e43, (q15_t)0xeafd, + (q15_t)0x7e3f, (q15_t)0xeae5, (q15_t)0x7e3b, (q15_t)0xeacc, (q15_t)0x7e37, (q15_t)0xeab3, (q15_t)0x7e32, (q15_t)0xea9a, + (q15_t)0x7e2e, (q15_t)0xea81, (q15_t)0x7e2a, (q15_t)0xea69, (q15_t)0x7e26, (q15_t)0xea50, (q15_t)0x7e21, (q15_t)0xea37, + (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7e19, (q15_t)0xea06, (q15_t)0x7e14, (q15_t)0xe9ed, (q15_t)0x7e10, (q15_t)0xe9d4, + (q15_t)0x7e0c, (q15_t)0xe9bb, (q15_t)0x7e07, (q15_t)0xe9a3, (q15_t)0x7e03, (q15_t)0xe98a, (q15_t)0x7dff, (q15_t)0xe971, + (q15_t)0x7dfa, (q15_t)0xe958, (q15_t)0x7df6, (q15_t)0xe940, (q15_t)0x7df1, (q15_t)0xe927, (q15_t)0x7ded, (q15_t)0xe90e, + (q15_t)0x7de8, (q15_t)0xe8f6, (q15_t)0x7de4, (q15_t)0xe8dd, (q15_t)0x7ddf, (q15_t)0xe8c4, (q15_t)0x7dda, (q15_t)0xe8ab, + (q15_t)0x7dd6, (q15_t)0xe893, (q15_t)0x7dd1, (q15_t)0xe87a, (q15_t)0x7dcd, (q15_t)0xe861, (q15_t)0x7dc8, (q15_t)0xe849, + (q15_t)0x7dc3, (q15_t)0xe830, (q15_t)0x7dbf, (q15_t)0xe817, (q15_t)0x7dba, (q15_t)0xe7fe, (q15_t)0x7db5, (q15_t)0xe7e6, + (q15_t)0x7db0, (q15_t)0xe7cd, (q15_t)0x7dac, (q15_t)0xe7b4, (q15_t)0x7da7, (q15_t)0xe79c, (q15_t)0x7da2, (q15_t)0xe783, + (q15_t)0x7d9d, (q15_t)0xe76a, (q15_t)0x7d98, (q15_t)0xe752, (q15_t)0x7d94, (q15_t)0xe739, (q15_t)0x7d8f, (q15_t)0xe720, + (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d85, (q15_t)0xe6ef, (q15_t)0x7d80, (q15_t)0xe6d6, (q15_t)0x7d7b, (q15_t)0xe6be, + (q15_t)0x7d76, (q15_t)0xe6a5, (q15_t)0x7d71, (q15_t)0xe68d, (q15_t)0x7d6c, (q15_t)0xe674, (q15_t)0x7d67, (q15_t)0xe65b, + (q15_t)0x7d62, (q15_t)0xe643, (q15_t)0x7d5d, (q15_t)0xe62a, (q15_t)0x7d58, (q15_t)0xe611, (q15_t)0x7d53, (q15_t)0xe5f9, + (q15_t)0x7d4e, (q15_t)0xe5e0, (q15_t)0x7d49, (q15_t)0xe5c8, (q15_t)0x7d43, (q15_t)0xe5af, (q15_t)0x7d3e, (q15_t)0xe596, + (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7d34, (q15_t)0xe565, (q15_t)0x7d2f, (q15_t)0xe54d, (q15_t)0x7d29, (q15_t)0xe534, + (q15_t)0x7d24, (q15_t)0xe51c, (q15_t)0x7d1f, (q15_t)0xe503, (q15_t)0x7d19, (q15_t)0xe4ea, (q15_t)0x7d14, (q15_t)0xe4d2, + (q15_t)0x7d0f, (q15_t)0xe4b9, (q15_t)0x7d09, (q15_t)0xe4a1, (q15_t)0x7d04, (q15_t)0xe488, (q15_t)0x7cff, (q15_t)0xe470, + (q15_t)0x7cf9, (q15_t)0xe457, (q15_t)0x7cf4, (q15_t)0xe43f, (q15_t)0x7cee, (q15_t)0xe426, (q15_t)0x7ce9, (q15_t)0xe40e, + (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7cde, (q15_t)0xe3dc, (q15_t)0x7cd8, (q15_t)0xe3c4, (q15_t)0x7cd3, (q15_t)0xe3ab, + (q15_t)0x7ccd, (q15_t)0xe393, (q15_t)0x7cc8, (q15_t)0xe37a, (q15_t)0x7cc2, (q15_t)0xe362, (q15_t)0x7cbc, (q15_t)0xe349, + (q15_t)0x7cb7, (q15_t)0xe331, (q15_t)0x7cb1, (q15_t)0xe318, (q15_t)0x7cab, (q15_t)0xe300, (q15_t)0x7ca6, (q15_t)0xe2e8, + (q15_t)0x7ca0, (q15_t)0xe2cf, (q15_t)0x7c9a, (q15_t)0xe2b7, (q15_t)0x7c94, (q15_t)0xe29e, (q15_t)0x7c8f, (q15_t)0xe286, + (q15_t)0x7c89, (q15_t)0xe26d, (q15_t)0x7c83, (q15_t)0xe255, (q15_t)0x7c7d, (q15_t)0xe23c, (q15_t)0x7c77, (q15_t)0xe224, + (q15_t)0x7c71, (q15_t)0xe20b, (q15_t)0x7c6c, (q15_t)0xe1f3, (q15_t)0x7c66, (q15_t)0xe1db, (q15_t)0x7c60, (q15_t)0xe1c2, + (q15_t)0x7c5a, (q15_t)0xe1aa, (q15_t)0x7c54, (q15_t)0xe191, (q15_t)0x7c4e, (q15_t)0xe179, (q15_t)0x7c48, (q15_t)0xe160, + (q15_t)0x7c42, (q15_t)0xe148, (q15_t)0x7c3c, (q15_t)0xe130, (q15_t)0x7c36, (q15_t)0xe117, (q15_t)0x7c30, (q15_t)0xe0ff, + (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7c23, (q15_t)0xe0ce, (q15_t)0x7c1d, (q15_t)0xe0b6, (q15_t)0x7c17, (q15_t)0xe09d, + (q15_t)0x7c11, (q15_t)0xe085, (q15_t)0x7c0b, (q15_t)0xe06d, (q15_t)0x7c05, (q15_t)0xe054, (q15_t)0x7bfe, (q15_t)0xe03c, + (q15_t)0x7bf8, (q15_t)0xe024, (q15_t)0x7bf2, (q15_t)0xe00b, (q15_t)0x7beb, (q15_t)0xdff3, (q15_t)0x7be5, (q15_t)0xdfdb, + (q15_t)0x7bdf, (q15_t)0xdfc2, (q15_t)0x7bd9, (q15_t)0xdfaa, (q15_t)0x7bd2, (q15_t)0xdf92, (q15_t)0x7bcc, (q15_t)0xdf79, + (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7bbf, (q15_t)0xdf49, (q15_t)0x7bb9, (q15_t)0xdf30, (q15_t)0x7bb2, (q15_t)0xdf18, + (q15_t)0x7bac, (q15_t)0xdf00, (q15_t)0x7ba5, (q15_t)0xdee8, (q15_t)0x7b9f, (q15_t)0xdecf, (q15_t)0x7b98, (q15_t)0xdeb7, + (q15_t)0x7b92, (q15_t)0xde9f, (q15_t)0x7b8b, (q15_t)0xde87, (q15_t)0x7b84, (q15_t)0xde6e, (q15_t)0x7b7e, (q15_t)0xde56, + (q15_t)0x7b77, (q15_t)0xde3e, (q15_t)0x7b71, (q15_t)0xde26, (q15_t)0x7b6a, (q15_t)0xde0d, (q15_t)0x7b63, (q15_t)0xddf5, + (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7b56, (q15_t)0xddc5, (q15_t)0x7b4f, (q15_t)0xddac, (q15_t)0x7b48, (q15_t)0xdd94, + (q15_t)0x7b42, (q15_t)0xdd7c, (q15_t)0x7b3b, (q15_t)0xdd64, (q15_t)0x7b34, (q15_t)0xdd4c, (q15_t)0x7b2d, (q15_t)0xdd33, + (q15_t)0x7b26, (q15_t)0xdd1b, (q15_t)0x7b1f, (q15_t)0xdd03, (q15_t)0x7b19, (q15_t)0xdceb, (q15_t)0x7b12, (q15_t)0xdcd3, + (q15_t)0x7b0b, (q15_t)0xdcbb, (q15_t)0x7b04, (q15_t)0xdca2, (q15_t)0x7afd, (q15_t)0xdc8a, (q15_t)0x7af6, (q15_t)0xdc72, + (q15_t)0x7aef, (q15_t)0xdc5a, (q15_t)0x7ae8, (q15_t)0xdc42, (q15_t)0x7ae1, (q15_t)0xdc2a, (q15_t)0x7ada, (q15_t)0xdc12, + (q15_t)0x7ad3, (q15_t)0xdbf9, (q15_t)0x7acc, (q15_t)0xdbe1, (q15_t)0x7ac5, (q15_t)0xdbc9, (q15_t)0x7abd, (q15_t)0xdbb1, + (q15_t)0x7ab6, (q15_t)0xdb99, (q15_t)0x7aaf, (q15_t)0xdb81, (q15_t)0x7aa8, (q15_t)0xdb69, (q15_t)0x7aa1, (q15_t)0xdb51, + (q15_t)0x7a9a, (q15_t)0xdb39, (q15_t)0x7a92, (q15_t)0xdb21, (q15_t)0x7a8b, (q15_t)0xdb09, (q15_t)0x7a84, (q15_t)0xdaf1, + (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a75, (q15_t)0xdac0, (q15_t)0x7a6e, (q15_t)0xdaa8, (q15_t)0x7a67, (q15_t)0xda90, + (q15_t)0x7a5f, (q15_t)0xda78, (q15_t)0x7a58, (q15_t)0xda60, (q15_t)0x7a50, (q15_t)0xda48, (q15_t)0x7a49, (q15_t)0xda30, + (q15_t)0x7a42, (q15_t)0xda18, (q15_t)0x7a3a, (q15_t)0xda00, (q15_t)0x7a33, (q15_t)0xd9e8, (q15_t)0x7a2b, (q15_t)0xd9d0, + (q15_t)0x7a24, (q15_t)0xd9b8, (q15_t)0x7a1c, (q15_t)0xd9a0, (q15_t)0x7a15, (q15_t)0xd988, (q15_t)0x7a0d, (q15_t)0xd970, + (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x79fe, (q15_t)0xd940, (q15_t)0x79f6, (q15_t)0xd928, (q15_t)0x79ef, (q15_t)0xd911, + (q15_t)0x79e7, (q15_t)0xd8f9, (q15_t)0x79df, (q15_t)0xd8e1, (q15_t)0x79d8, (q15_t)0xd8c9, (q15_t)0x79d0, (q15_t)0xd8b1, + (q15_t)0x79c8, (q15_t)0xd899, (q15_t)0x79c0, (q15_t)0xd881, (q15_t)0x79b9, (q15_t)0xd869, (q15_t)0x79b1, (q15_t)0xd851, + (q15_t)0x79a9, (q15_t)0xd839, (q15_t)0x79a1, (q15_t)0xd821, (q15_t)0x7999, (q15_t)0xd80a, (q15_t)0x7992, (q15_t)0xd7f2, + (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x7982, (q15_t)0xd7c2, (q15_t)0x797a, (q15_t)0xd7aa, (q15_t)0x7972, (q15_t)0xd792, + (q15_t)0x796a, (q15_t)0xd77a, (q15_t)0x7962, (q15_t)0xd763, (q15_t)0x795a, (q15_t)0xd74b, (q15_t)0x7952, (q15_t)0xd733, + (q15_t)0x794a, (q15_t)0xd71b, (q15_t)0x7942, (q15_t)0xd703, (q15_t)0x793a, (q15_t)0xd6eb, (q15_t)0x7932, (q15_t)0xd6d4, + (q15_t)0x792a, (q15_t)0xd6bc, (q15_t)0x7922, (q15_t)0xd6a4, (q15_t)0x7919, (q15_t)0xd68c, (q15_t)0x7911, (q15_t)0xd675, + (q15_t)0x7909, (q15_t)0xd65d, (q15_t)0x7901, (q15_t)0xd645, (q15_t)0x78f9, (q15_t)0xd62d, (q15_t)0x78f1, (q15_t)0xd615, + (q15_t)0x78e8, (q15_t)0xd5fe, (q15_t)0x78e0, (q15_t)0xd5e6, (q15_t)0x78d8, (q15_t)0xd5ce, (q15_t)0x78cf, (q15_t)0xd5b7, + (q15_t)0x78c7, (q15_t)0xd59f, (q15_t)0x78bf, (q15_t)0xd587, (q15_t)0x78b6, (q15_t)0xd56f, (q15_t)0x78ae, (q15_t)0xd558, + (q15_t)0x78a6, (q15_t)0xd540, (q15_t)0x789d, (q15_t)0xd528, (q15_t)0x7895, (q15_t)0xd511, (q15_t)0x788c, (q15_t)0xd4f9, + (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x787c, (q15_t)0xd4ca, (q15_t)0x7873, (q15_t)0xd4b2, (q15_t)0x786b, (q15_t)0xd49a, + (q15_t)0x7862, (q15_t)0xd483, (q15_t)0x7859, (q15_t)0xd46b, (q15_t)0x7851, (q15_t)0xd453, (q15_t)0x7848, (q15_t)0xd43c, + (q15_t)0x7840, (q15_t)0xd424, (q15_t)0x7837, (q15_t)0xd40d, (q15_t)0x782e, (q15_t)0xd3f5, (q15_t)0x7826, (q15_t)0xd3dd, + (q15_t)0x781d, (q15_t)0xd3c6, (q15_t)0x7814, (q15_t)0xd3ae, (q15_t)0x780c, (q15_t)0xd397, (q15_t)0x7803, (q15_t)0xd37f, + (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x77f1, (q15_t)0xd350, (q15_t)0x77e9, (q15_t)0xd338, (q15_t)0x77e0, (q15_t)0xd321, + (q15_t)0x77d7, (q15_t)0xd309, (q15_t)0x77ce, (q15_t)0xd2f2, (q15_t)0x77c5, (q15_t)0xd2da, (q15_t)0x77bc, (q15_t)0xd2c3, + (q15_t)0x77b4, (q15_t)0xd2ab, (q15_t)0x77ab, (q15_t)0xd294, (q15_t)0x77a2, (q15_t)0xd27c, (q15_t)0x7799, (q15_t)0xd265, + (q15_t)0x7790, (q15_t)0xd24d, (q15_t)0x7787, (q15_t)0xd236, (q15_t)0x777e, (q15_t)0xd21e, (q15_t)0x7775, (q15_t)0xd207, + (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x7763, (q15_t)0xd1d8, (q15_t)0x775a, (q15_t)0xd1c1, (q15_t)0x7751, (q15_t)0xd1a9, + (q15_t)0x7747, (q15_t)0xd192, (q15_t)0x773e, (q15_t)0xd17a, (q15_t)0x7735, (q15_t)0xd163, (q15_t)0x772c, (q15_t)0xd14b, + (q15_t)0x7723, (q15_t)0xd134, (q15_t)0x771a, (q15_t)0xd11d, (q15_t)0x7710, (q15_t)0xd105, (q15_t)0x7707, (q15_t)0xd0ee, + (q15_t)0x76fe, (q15_t)0xd0d7, (q15_t)0x76f5, (q15_t)0xd0bf, (q15_t)0x76eb, (q15_t)0xd0a8, (q15_t)0x76e2, (q15_t)0xd091, + (q15_t)0x76d9, (q15_t)0xd079, (q15_t)0x76cf, (q15_t)0xd062, (q15_t)0x76c6, (q15_t)0xd04b, (q15_t)0x76bd, (q15_t)0xd033, + (q15_t)0x76b3, (q15_t)0xd01c, (q15_t)0x76aa, (q15_t)0xd005, (q15_t)0x76a0, (q15_t)0xcfed, (q15_t)0x7697, (q15_t)0xcfd6, + (q15_t)0x768e, (q15_t)0xcfbf, (q15_t)0x7684, (q15_t)0xcfa7, (q15_t)0x767b, (q15_t)0xcf90, (q15_t)0x7671, (q15_t)0xcf79, + (q15_t)0x7668, (q15_t)0xcf62, (q15_t)0x765e, (q15_t)0xcf4a, (q15_t)0x7654, (q15_t)0xcf33, (q15_t)0x764b, (q15_t)0xcf1c, + (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x7638, (q15_t)0xceee, (q15_t)0x762e, (q15_t)0xced6, (q15_t)0x7624, (q15_t)0xcebf, + (q15_t)0x761b, (q15_t)0xcea8, (q15_t)0x7611, (q15_t)0xce91, (q15_t)0x7607, (q15_t)0xce7a, (q15_t)0x75fd, (q15_t)0xce62, + (q15_t)0x75f4, (q15_t)0xce4b, (q15_t)0x75ea, (q15_t)0xce34, (q15_t)0x75e0, (q15_t)0xce1d, (q15_t)0x75d6, (q15_t)0xce06, + (q15_t)0x75cc, (q15_t)0xcdef, (q15_t)0x75c3, (q15_t)0xcdd8, (q15_t)0x75b9, (q15_t)0xcdc0, (q15_t)0x75af, (q15_t)0xcda9, + (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x759b, (q15_t)0xcd7b, (q15_t)0x7591, (q15_t)0xcd64, (q15_t)0x7587, (q15_t)0xcd4d, + (q15_t)0x757d, (q15_t)0xcd36, (q15_t)0x7573, (q15_t)0xcd1f, (q15_t)0x7569, (q15_t)0xcd08, (q15_t)0x755f, (q15_t)0xccf1, + (q15_t)0x7555, (q15_t)0xccda, (q15_t)0x754b, (q15_t)0xccc3, (q15_t)0x7541, (q15_t)0xccac, (q15_t)0x7537, (q15_t)0xcc95, + (q15_t)0x752d, (q15_t)0xcc7e, (q15_t)0x7523, (q15_t)0xcc67, (q15_t)0x7519, (q15_t)0xcc50, (q15_t)0x750f, (q15_t)0xcc39, + (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x74fa, (q15_t)0xcc0b, (q15_t)0x74f0, (q15_t)0xcbf4, (q15_t)0x74e6, (q15_t)0xcbdd, + (q15_t)0x74db, (q15_t)0xcbc6, (q15_t)0x74d1, (q15_t)0xcbaf, (q15_t)0x74c7, (q15_t)0xcb98, (q15_t)0x74bd, (q15_t)0xcb81, + (q15_t)0x74b2, (q15_t)0xcb6a, (q15_t)0x74a8, (q15_t)0xcb53, (q15_t)0x749e, (q15_t)0xcb3c, (q15_t)0x7493, (q15_t)0xcb25, + (q15_t)0x7489, (q15_t)0xcb0e, (q15_t)0x747e, (q15_t)0xcaf8, (q15_t)0x7474, (q15_t)0xcae1, (q15_t)0x746a, (q15_t)0xcaca, + (q15_t)0x745f, (q15_t)0xcab3, (q15_t)0x7455, (q15_t)0xca9c, (q15_t)0x744a, (q15_t)0xca85, (q15_t)0x7440, (q15_t)0xca6e, + (q15_t)0x7435, (q15_t)0xca58, (q15_t)0x742b, (q15_t)0xca41, (q15_t)0x7420, (q15_t)0xca2a, (q15_t)0x7415, (q15_t)0xca13, + (q15_t)0x740b, (q15_t)0xc9fc, (q15_t)0x7400, (q15_t)0xc9e6, (q15_t)0x73f6, (q15_t)0xc9cf, (q15_t)0x73eb, (q15_t)0xc9b8, + (q15_t)0x73e0, (q15_t)0xc9a1, (q15_t)0x73d6, (q15_t)0xc98b, (q15_t)0x73cb, (q15_t)0xc974, (q15_t)0x73c0, (q15_t)0xc95d, + (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x73ab, (q15_t)0xc930, (q15_t)0x73a0, (q15_t)0xc919, (q15_t)0x7395, (q15_t)0xc902, + (q15_t)0x738a, (q15_t)0xc8ec, (q15_t)0x737f, (q15_t)0xc8d5, (q15_t)0x7375, (q15_t)0xc8be, (q15_t)0x736a, (q15_t)0xc8a8, + (q15_t)0x735f, (q15_t)0xc891, (q15_t)0x7354, (q15_t)0xc87a, (q15_t)0x7349, (q15_t)0xc864, (q15_t)0x733e, (q15_t)0xc84d, + (q15_t)0x7333, (q15_t)0xc836, (q15_t)0x7328, (q15_t)0xc820, (q15_t)0x731d, (q15_t)0xc809, (q15_t)0x7312, (q15_t)0xc7f3, + (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x72fc, (q15_t)0xc7c5, (q15_t)0x72f1, (q15_t)0xc7af, (q15_t)0x72e6, (q15_t)0xc798, + (q15_t)0x72db, (q15_t)0xc782, (q15_t)0x72d0, (q15_t)0xc76b, (q15_t)0x72c5, (q15_t)0xc755, (q15_t)0x72ba, (q15_t)0xc73e, + (q15_t)0x72af, (q15_t)0xc728, (q15_t)0x72a3, (q15_t)0xc711, (q15_t)0x7298, (q15_t)0xc6fa, (q15_t)0x728d, (q15_t)0xc6e4, + (q15_t)0x7282, (q15_t)0xc6ce, (q15_t)0x7276, (q15_t)0xc6b7, (q15_t)0x726b, (q15_t)0xc6a1, (q15_t)0x7260, (q15_t)0xc68a, + (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x7249, (q15_t)0xc65d, (q15_t)0x723e, (q15_t)0xc647, (q15_t)0x7233, (q15_t)0xc630, + (q15_t)0x7227, (q15_t)0xc61a, (q15_t)0x721c, (q15_t)0xc603, (q15_t)0x7211, (q15_t)0xc5ed, (q15_t)0x7205, (q15_t)0xc5d7, + (q15_t)0x71fa, (q15_t)0xc5c0, (q15_t)0x71ee, (q15_t)0xc5aa, (q15_t)0x71e3, (q15_t)0xc594, (q15_t)0x71d7, (q15_t)0xc57d, + (q15_t)0x71cc, (q15_t)0xc567, (q15_t)0x71c0, (q15_t)0xc551, (q15_t)0x71b5, (q15_t)0xc53a, (q15_t)0x71a9, (q15_t)0xc524, + (q15_t)0x719e, (q15_t)0xc50e, (q15_t)0x7192, (q15_t)0xc4f7, (q15_t)0x7186, (q15_t)0xc4e1, (q15_t)0x717b, (q15_t)0xc4cb, + (q15_t)0x716f, (q15_t)0xc4b4, (q15_t)0x7164, (q15_t)0xc49e, (q15_t)0x7158, (q15_t)0xc488, (q15_t)0x714c, (q15_t)0xc472, + (q15_t)0x7141, (q15_t)0xc45b, (q15_t)0x7135, (q15_t)0xc445, (q15_t)0x7129, (q15_t)0xc42f, (q15_t)0x711d, (q15_t)0xc419, + (q15_t)0x7112, (q15_t)0xc403, (q15_t)0x7106, (q15_t)0xc3ec, (q15_t)0x70fa, (q15_t)0xc3d6, (q15_t)0x70ee, (q15_t)0xc3c0, + (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x70d6, (q15_t)0xc394, (q15_t)0x70cb, (q15_t)0xc37d, (q15_t)0x70bf, (q15_t)0xc367, + (q15_t)0x70b3, (q15_t)0xc351, (q15_t)0x70a7, (q15_t)0xc33b, (q15_t)0x709b, (q15_t)0xc325, (q15_t)0x708f, (q15_t)0xc30f, + (q15_t)0x7083, (q15_t)0xc2f9, (q15_t)0x7077, (q15_t)0xc2e3, (q15_t)0x706b, (q15_t)0xc2cd, (q15_t)0x705f, (q15_t)0xc2b7, + (q15_t)0x7053, (q15_t)0xc2a0, (q15_t)0x7047, (q15_t)0xc28a, (q15_t)0x703b, (q15_t)0xc274, (q15_t)0x702f, (q15_t)0xc25e, + (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x7016, (q15_t)0xc232, (q15_t)0x700a, (q15_t)0xc21c, (q15_t)0x6ffe, (q15_t)0xc206, + (q15_t)0x6ff2, (q15_t)0xc1f0, (q15_t)0x6fe6, (q15_t)0xc1da, (q15_t)0x6fda, (q15_t)0xc1c4, (q15_t)0x6fcd, (q15_t)0xc1ae, + (q15_t)0x6fc1, (q15_t)0xc198, (q15_t)0x6fb5, (q15_t)0xc183, (q15_t)0x6fa9, (q15_t)0xc16d, (q15_t)0x6f9c, (q15_t)0xc157, + (q15_t)0x6f90, (q15_t)0xc141, (q15_t)0x6f84, (q15_t)0xc12b, (q15_t)0x6f77, (q15_t)0xc115, (q15_t)0x6f6b, (q15_t)0xc0ff, + (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6f52, (q15_t)0xc0d3, (q15_t)0x6f46, (q15_t)0xc0bd, (q15_t)0x6f39, (q15_t)0xc0a8, + (q15_t)0x6f2d, (q15_t)0xc092, (q15_t)0x6f20, (q15_t)0xc07c, (q15_t)0x6f14, (q15_t)0xc066, (q15_t)0x6f07, (q15_t)0xc050, + (q15_t)0x6efb, (q15_t)0xc03b, (q15_t)0x6eee, (q15_t)0xc025, (q15_t)0x6ee2, (q15_t)0xc00f, (q15_t)0x6ed5, (q15_t)0xbff9, + (q15_t)0x6ec9, (q15_t)0xbfe3, (q15_t)0x6ebc, (q15_t)0xbfce, (q15_t)0x6eaf, (q15_t)0xbfb8, (q15_t)0x6ea3, (q15_t)0xbfa2, + (q15_t)0x6e96, (q15_t)0xbf8d, (q15_t)0x6e89, (q15_t)0xbf77, (q15_t)0x6e7d, (q15_t)0xbf61, (q15_t)0x6e70, (q15_t)0xbf4b, + (q15_t)0x6e63, (q15_t)0xbf36, (q15_t)0x6e57, (q15_t)0xbf20, (q15_t)0x6e4a, (q15_t)0xbf0a, (q15_t)0x6e3d, (q15_t)0xbef5, + (q15_t)0x6e30, (q15_t)0xbedf, (q15_t)0x6e24, (q15_t)0xbeca, (q15_t)0x6e17, (q15_t)0xbeb4, (q15_t)0x6e0a, (q15_t)0xbe9e, + (q15_t)0x6dfd, (q15_t)0xbe89, (q15_t)0x6df0, (q15_t)0xbe73, (q15_t)0x6de3, (q15_t)0xbe5e, (q15_t)0x6dd6, (q15_t)0xbe48, + (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6dbd, (q15_t)0xbe1d, (q15_t)0x6db0, (q15_t)0xbe07, (q15_t)0x6da3, (q15_t)0xbdf2, + (q15_t)0x6d96, (q15_t)0xbddc, (q15_t)0x6d89, (q15_t)0xbdc7, (q15_t)0x6d7c, (q15_t)0xbdb1, (q15_t)0x6d6f, (q15_t)0xbd9c, + (q15_t)0x6d62, (q15_t)0xbd86, (q15_t)0x6d55, (q15_t)0xbd71, (q15_t)0x6d48, (q15_t)0xbd5b, (q15_t)0x6d3a, (q15_t)0xbd46, + (q15_t)0x6d2d, (q15_t)0xbd30, (q15_t)0x6d20, (q15_t)0xbd1b, (q15_t)0x6d13, (q15_t)0xbd06, (q15_t)0x6d06, (q15_t)0xbcf0, + (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6cec, (q15_t)0xbcc5, (q15_t)0x6cde, (q15_t)0xbcb0, (q15_t)0x6cd1, (q15_t)0xbc9b, + (q15_t)0x6cc4, (q15_t)0xbc85, (q15_t)0x6cb7, (q15_t)0xbc70, (q15_t)0x6ca9, (q15_t)0xbc5b, (q15_t)0x6c9c, (q15_t)0xbc45, + (q15_t)0x6c8f, (q15_t)0xbc30, (q15_t)0x6c81, (q15_t)0xbc1b, (q15_t)0x6c74, (q15_t)0xbc05, (q15_t)0x6c67, (q15_t)0xbbf0, + (q15_t)0x6c59, (q15_t)0xbbdb, (q15_t)0x6c4c, (q15_t)0xbbc5, (q15_t)0x6c3f, (q15_t)0xbbb0, (q15_t)0x6c31, (q15_t)0xbb9b, + (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6c16, (q15_t)0xbb70, (q15_t)0x6c09, (q15_t)0xbb5b, (q15_t)0x6bfb, (q15_t)0xbb46, + (q15_t)0x6bee, (q15_t)0xbb31, (q15_t)0x6be0, (q15_t)0xbb1c, (q15_t)0x6bd3, (q15_t)0xbb06, (q15_t)0x6bc5, (q15_t)0xbaf1, + (q15_t)0x6bb8, (q15_t)0xbadc, (q15_t)0x6baa, (q15_t)0xbac7, (q15_t)0x6b9c, (q15_t)0xbab2, (q15_t)0x6b8f, (q15_t)0xba9d, + (q15_t)0x6b81, (q15_t)0xba88, (q15_t)0x6b73, (q15_t)0xba73, (q15_t)0x6b66, (q15_t)0xba5d, (q15_t)0x6b58, (q15_t)0xba48, + (q15_t)0x6b4a, (q15_t)0xba33, (q15_t)0x6b3d, (q15_t)0xba1e, (q15_t)0x6b2f, (q15_t)0xba09, (q15_t)0x6b21, (q15_t)0xb9f4, + (q15_t)0x6b13, (q15_t)0xb9df, (q15_t)0x6b06, (q15_t)0xb9ca, (q15_t)0x6af8, (q15_t)0xb9b5, (q15_t)0x6aea, (q15_t)0xb9a0, + (q15_t)0x6adc, (q15_t)0xb98b, (q15_t)0x6ace, (q15_t)0xb976, (q15_t)0x6ac1, (q15_t)0xb961, (q15_t)0x6ab3, (q15_t)0xb94c, + (q15_t)0x6aa5, (q15_t)0xb937, (q15_t)0x6a97, (q15_t)0xb922, (q15_t)0x6a89, (q15_t)0xb90d, (q15_t)0x6a7b, (q15_t)0xb8f8, + (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x6a5f, (q15_t)0xb8cf, (q15_t)0x6a51, (q15_t)0xb8ba, (q15_t)0x6a43, (q15_t)0xb8a5, + (q15_t)0x6a35, (q15_t)0xb890, (q15_t)0x6a27, (q15_t)0xb87b, (q15_t)0x6a19, (q15_t)0xb866, (q15_t)0x6a0b, (q15_t)0xb852, + (q15_t)0x69fd, (q15_t)0xb83d, (q15_t)0x69ef, (q15_t)0xb828, (q15_t)0x69e1, (q15_t)0xb813, (q15_t)0x69d3, (q15_t)0xb7fe, + (q15_t)0x69c4, (q15_t)0xb7ea, (q15_t)0x69b6, (q15_t)0xb7d5, (q15_t)0x69a8, (q15_t)0xb7c0, (q15_t)0x699a, (q15_t)0xb7ab, + (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x697d, (q15_t)0xb782, (q15_t)0x696f, (q15_t)0xb76d, (q15_t)0x6961, (q15_t)0xb758, + (q15_t)0x6953, (q15_t)0xb744, (q15_t)0x6944, (q15_t)0xb72f, (q15_t)0x6936, (q15_t)0xb71a, (q15_t)0x6928, (q15_t)0xb706, + (q15_t)0x6919, (q15_t)0xb6f1, (q15_t)0x690b, (q15_t)0xb6dd, (q15_t)0x68fd, (q15_t)0xb6c8, (q15_t)0x68ee, (q15_t)0xb6b3, + (q15_t)0x68e0, (q15_t)0xb69f, (q15_t)0x68d1, (q15_t)0xb68a, (q15_t)0x68c3, (q15_t)0xb676, (q15_t)0x68b5, (q15_t)0xb661, + (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x6898, (q15_t)0xb638, (q15_t)0x6889, (q15_t)0xb623, (q15_t)0x687b, (q15_t)0xb60f, + (q15_t)0x686c, (q15_t)0xb5fa, (q15_t)0x685e, (q15_t)0xb5e6, (q15_t)0x684f, (q15_t)0xb5d1, (q15_t)0x6840, (q15_t)0xb5bd, + (q15_t)0x6832, (q15_t)0xb5a8, (q15_t)0x6823, (q15_t)0xb594, (q15_t)0x6815, (q15_t)0xb57f, (q15_t)0x6806, (q15_t)0xb56b, + (q15_t)0x67f7, (q15_t)0xb557, (q15_t)0x67e9, (q15_t)0xb542, (q15_t)0x67da, (q15_t)0xb52e, (q15_t)0x67cb, (q15_t)0xb519, + (q15_t)0x67bd, (q15_t)0xb505, (q15_t)0x67ae, (q15_t)0xb4f1, (q15_t)0x679f, (q15_t)0xb4dc, (q15_t)0x6790, (q15_t)0xb4c8, + (q15_t)0x6782, (q15_t)0xb4b4, (q15_t)0x6773, (q15_t)0xb49f, (q15_t)0x6764, (q15_t)0xb48b, (q15_t)0x6755, (q15_t)0xb477, + (q15_t)0x6746, (q15_t)0xb462, (q15_t)0x6737, (q15_t)0xb44e, (q15_t)0x6729, (q15_t)0xb43a, (q15_t)0x671a, (q15_t)0xb426, + (q15_t)0x670b, (q15_t)0xb411, (q15_t)0x66fc, (q15_t)0xb3fd, (q15_t)0x66ed, (q15_t)0xb3e9, (q15_t)0x66de, (q15_t)0xb3d5, + (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x66c0, (q15_t)0xb3ac, (q15_t)0x66b1, (q15_t)0xb398, (q15_t)0x66a2, (q15_t)0xb384, + (q15_t)0x6693, (q15_t)0xb370, (q15_t)0x6684, (q15_t)0xb35c, (q15_t)0x6675, (q15_t)0xb348, (q15_t)0x6666, (q15_t)0xb334, + (q15_t)0x6657, (q15_t)0xb31f, (q15_t)0x6648, (q15_t)0xb30b, (q15_t)0x6639, (q15_t)0xb2f7, (q15_t)0x6629, (q15_t)0xb2e3, + (q15_t)0x661a, (q15_t)0xb2cf, (q15_t)0x660b, (q15_t)0xb2bb, (q15_t)0x65fc, (q15_t)0xb2a7, (q15_t)0x65ed, (q15_t)0xb293, + (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x65ce, (q15_t)0xb26b, (q15_t)0x65bf, (q15_t)0xb257, (q15_t)0x65b0, (q15_t)0xb243, + (q15_t)0x65a0, (q15_t)0xb22f, (q15_t)0x6591, (q15_t)0xb21b, (q15_t)0x6582, (q15_t)0xb207, (q15_t)0x6573, (q15_t)0xb1f3, + (q15_t)0x6563, (q15_t)0xb1df, (q15_t)0x6554, (q15_t)0xb1cc, (q15_t)0x6545, (q15_t)0xb1b8, (q15_t)0x6535, (q15_t)0xb1a4, + (q15_t)0x6526, (q15_t)0xb190, (q15_t)0x6516, (q15_t)0xb17c, (q15_t)0x6507, (q15_t)0xb168, (q15_t)0x64f7, (q15_t)0xb154, + (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x64d9, (q15_t)0xb12d, (q15_t)0x64c9, (q15_t)0xb119, (q15_t)0x64ba, (q15_t)0xb105, + (q15_t)0x64aa, (q15_t)0xb0f1, (q15_t)0x649b, (q15_t)0xb0de, (q15_t)0x648b, (q15_t)0xb0ca, (q15_t)0x647b, (q15_t)0xb0b6, + (q15_t)0x646c, (q15_t)0xb0a2, (q15_t)0x645c, (q15_t)0xb08f, (q15_t)0x644d, (q15_t)0xb07b, (q15_t)0x643d, (q15_t)0xb067, + (q15_t)0x642d, (q15_t)0xb054, (q15_t)0x641e, (q15_t)0xb040, (q15_t)0x640e, (q15_t)0xb02c, (q15_t)0x63fe, (q15_t)0xb019, + (q15_t)0x63ef, (q15_t)0xb005, (q15_t)0x63df, (q15_t)0xaff1, (q15_t)0x63cf, (q15_t)0xafde, (q15_t)0x63c0, (q15_t)0xafca, + (q15_t)0x63b0, (q15_t)0xafb7, (q15_t)0x63a0, (q15_t)0xafa3, (q15_t)0x6390, (q15_t)0xaf90, (q15_t)0x6380, (q15_t)0xaf7c, + (q15_t)0x6371, (q15_t)0xaf69, (q15_t)0x6361, (q15_t)0xaf55, (q15_t)0x6351, (q15_t)0xaf41, (q15_t)0x6341, (q15_t)0xaf2e, + (q15_t)0x6331, (q15_t)0xaf1b, (q15_t)0x6321, (q15_t)0xaf07, (q15_t)0x6311, (q15_t)0xaef4, (q15_t)0x6301, (q15_t)0xaee0, + (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x62e2, (q15_t)0xaeb9, (q15_t)0x62d2, (q15_t)0xaea6, (q15_t)0x62c2, (q15_t)0xae92, + (q15_t)0x62b2, (q15_t)0xae7f, (q15_t)0x62a2, (q15_t)0xae6c, (q15_t)0x6292, (q15_t)0xae58, (q15_t)0x6282, (q15_t)0xae45, + (q15_t)0x6271, (q15_t)0xae32, (q15_t)0x6261, (q15_t)0xae1e, (q15_t)0x6251, (q15_t)0xae0b, (q15_t)0x6241, (q15_t)0xadf8, + (q15_t)0x6231, (q15_t)0xade4, (q15_t)0x6221, (q15_t)0xadd1, (q15_t)0x6211, (q15_t)0xadbe, (q15_t)0x6201, (q15_t)0xadab, + (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x61e0, (q15_t)0xad84, (q15_t)0x61d0, (q15_t)0xad71, (q15_t)0x61c0, (q15_t)0xad5e, + (q15_t)0x61b0, (q15_t)0xad4b, (q15_t)0x619f, (q15_t)0xad37, (q15_t)0x618f, (q15_t)0xad24, (q15_t)0x617f, (q15_t)0xad11, + (q15_t)0x616f, (q15_t)0xacfe, (q15_t)0x615e, (q15_t)0xaceb, (q15_t)0x614e, (q15_t)0xacd8, (q15_t)0x613e, (q15_t)0xacc5, + (q15_t)0x612d, (q15_t)0xacb2, (q15_t)0x611d, (q15_t)0xac9e, (q15_t)0x610d, (q15_t)0xac8b, (q15_t)0x60fc, (q15_t)0xac78, + (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x60db, (q15_t)0xac52, (q15_t)0x60cb, (q15_t)0xac3f, (q15_t)0x60ba, (q15_t)0xac2c, + (q15_t)0x60aa, (q15_t)0xac19, (q15_t)0x6099, (q15_t)0xac06, (q15_t)0x6089, (q15_t)0xabf3, (q15_t)0x6078, (q15_t)0xabe0, + (q15_t)0x6068, (q15_t)0xabcd, (q15_t)0x6057, (q15_t)0xabbb, (q15_t)0x6047, (q15_t)0xaba8, (q15_t)0x6036, (q15_t)0xab95, + (q15_t)0x6026, (q15_t)0xab82, (q15_t)0x6015, (q15_t)0xab6f, (q15_t)0x6004, (q15_t)0xab5c, (q15_t)0x5ff4, (q15_t)0xab49, + (q15_t)0x5fe3, (q15_t)0xab36, (q15_t)0x5fd3, (q15_t)0xab24, (q15_t)0x5fc2, (q15_t)0xab11, (q15_t)0x5fb1, (q15_t)0xaafe, + (q15_t)0x5fa0, (q15_t)0xaaeb, (q15_t)0x5f90, (q15_t)0xaad8, (q15_t)0x5f7f, (q15_t)0xaac6, (q15_t)0x5f6e, (q15_t)0xaab3, + (q15_t)0x5f5e, (q15_t)0xaaa0, (q15_t)0x5f4d, (q15_t)0xaa8e, (q15_t)0x5f3c, (q15_t)0xaa7b, (q15_t)0x5f2b, (q15_t)0xaa68, + (q15_t)0x5f1a, (q15_t)0xaa55, (q15_t)0x5f0a, (q15_t)0xaa43, (q15_t)0x5ef9, (q15_t)0xaa30, (q15_t)0x5ee8, (q15_t)0xaa1d, + (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5ec6, (q15_t)0xa9f8, (q15_t)0x5eb5, (q15_t)0xa9e6, (q15_t)0x5ea4, (q15_t)0xa9d3, + (q15_t)0x5e93, (q15_t)0xa9c0, (q15_t)0x5e82, (q15_t)0xa9ae, (q15_t)0x5e71, (q15_t)0xa99b, (q15_t)0x5e60, (q15_t)0xa989, + (q15_t)0x5e50, (q15_t)0xa976, (q15_t)0x5e3f, (q15_t)0xa964, (q15_t)0x5e2d, (q15_t)0xa951, (q15_t)0x5e1c, (q15_t)0xa93f, + (q15_t)0x5e0b, (q15_t)0xa92c, (q15_t)0x5dfa, (q15_t)0xa91a, (q15_t)0x5de9, (q15_t)0xa907, (q15_t)0x5dd8, (q15_t)0xa8f5, + (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5db6, (q15_t)0xa8d0, (q15_t)0x5da5, (q15_t)0xa8be, (q15_t)0x5d94, (q15_t)0xa8ab, + (q15_t)0x5d83, (q15_t)0xa899, (q15_t)0x5d71, (q15_t)0xa887, (q15_t)0x5d60, (q15_t)0xa874, (q15_t)0x5d4f, (q15_t)0xa862, + (q15_t)0x5d3e, (q15_t)0xa850, (q15_t)0x5d2d, (q15_t)0xa83d, (q15_t)0x5d1b, (q15_t)0xa82b, (q15_t)0x5d0a, (q15_t)0xa819, + (q15_t)0x5cf9, (q15_t)0xa807, (q15_t)0x5ce8, (q15_t)0xa7f4, (q15_t)0x5cd6, (q15_t)0xa7e2, (q15_t)0x5cc5, (q15_t)0xa7d0, + (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5ca2, (q15_t)0xa7ab, (q15_t)0x5c91, (q15_t)0xa799, (q15_t)0x5c80, (q15_t)0xa787, + (q15_t)0x5c6e, (q15_t)0xa775, (q15_t)0x5c5d, (q15_t)0xa763, (q15_t)0x5c4b, (q15_t)0xa751, (q15_t)0x5c3a, (q15_t)0xa73f, + (q15_t)0x5c29, (q15_t)0xa72c, (q15_t)0x5c17, (q15_t)0xa71a, (q15_t)0x5c06, (q15_t)0xa708, (q15_t)0x5bf4, (q15_t)0xa6f6, + (q15_t)0x5be3, (q15_t)0xa6e4, (q15_t)0x5bd1, (q15_t)0xa6d2, (q15_t)0x5bc0, (q15_t)0xa6c0, (q15_t)0x5bae, (q15_t)0xa6ae, + (q15_t)0x5b9d, (q15_t)0xa69c, (q15_t)0x5b8b, (q15_t)0xa68a, (q15_t)0x5b79, (q15_t)0xa678, (q15_t)0x5b68, (q15_t)0xa666, + (q15_t)0x5b56, (q15_t)0xa654, (q15_t)0x5b45, (q15_t)0xa642, (q15_t)0x5b33, (q15_t)0xa630, (q15_t)0x5b21, (q15_t)0xa61f, + (q15_t)0x5b10, (q15_t)0xa60d, (q15_t)0x5afe, (q15_t)0xa5fb, (q15_t)0x5aec, (q15_t)0xa5e9, (q15_t)0x5adb, (q15_t)0xa5d7, + (q15_t)0x5ac9, (q15_t)0xa5c5, (q15_t)0x5ab7, (q15_t)0xa5b3, (q15_t)0x5aa5, (q15_t)0xa5a2, (q15_t)0x5a94, (q15_t)0xa590, + (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5a70, (q15_t)0xa56c, (q15_t)0x5a5e, (q15_t)0xa55b, (q15_t)0x5a4d, (q15_t)0xa549, + (q15_t)0x5a3b, (q15_t)0xa537, (q15_t)0x5a29, (q15_t)0xa525, (q15_t)0x5a17, (q15_t)0xa514, (q15_t)0x5a05, (q15_t)0xa502, + (q15_t)0x59f3, (q15_t)0xa4f0, (q15_t)0x59e1, (q15_t)0xa4df, (q15_t)0x59d0, (q15_t)0xa4cd, (q15_t)0x59be, (q15_t)0xa4bb, + (q15_t)0x59ac, (q15_t)0xa4aa, (q15_t)0x599a, (q15_t)0xa498, (q15_t)0x5988, (q15_t)0xa487, (q15_t)0x5976, (q15_t)0xa475, + (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x5952, (q15_t)0xa452, (q15_t)0x5940, (q15_t)0xa440, (q15_t)0x592e, (q15_t)0xa42f, + (q15_t)0x591c, (q15_t)0xa41d, (q15_t)0x590a, (q15_t)0xa40c, (q15_t)0x58f8, (q15_t)0xa3fa, (q15_t)0x58e6, (q15_t)0xa3e9, + (q15_t)0x58d4, (q15_t)0xa3d7, (q15_t)0x58c1, (q15_t)0xa3c6, (q15_t)0x58af, (q15_t)0xa3b5, (q15_t)0x589d, (q15_t)0xa3a3, + (q15_t)0x588b, (q15_t)0xa392, (q15_t)0x5879, (q15_t)0xa380, (q15_t)0x5867, (q15_t)0xa36f, (q15_t)0x5855, (q15_t)0xa35e, + (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x5830, (q15_t)0xa33b, (q15_t)0x581e, (q15_t)0xa32a, (q15_t)0x580c, (q15_t)0xa318, + (q15_t)0x57f9, (q15_t)0xa307, (q15_t)0x57e7, (q15_t)0xa2f6, (q15_t)0x57d5, (q15_t)0xa2e5, (q15_t)0x57c3, (q15_t)0xa2d3, + (q15_t)0x57b0, (q15_t)0xa2c2, (q15_t)0x579e, (q15_t)0xa2b1, (q15_t)0x578c, (q15_t)0xa2a0, (q15_t)0x5779, (q15_t)0xa28f, + (q15_t)0x5767, (q15_t)0xa27d, (q15_t)0x5755, (q15_t)0xa26c, (q15_t)0x5742, (q15_t)0xa25b, (q15_t)0x5730, (q15_t)0xa24a, + (q15_t)0x571d, (q15_t)0xa239, (q15_t)0x570b, (q15_t)0xa228, (q15_t)0x56f9, (q15_t)0xa217, (q15_t)0x56e6, (q15_t)0xa206, + (q15_t)0x56d4, (q15_t)0xa1f5, (q15_t)0x56c1, (q15_t)0xa1e4, (q15_t)0x56af, (q15_t)0xa1d3, (q15_t)0x569c, (q15_t)0xa1c1, + (q15_t)0x568a, (q15_t)0xa1b0, (q15_t)0x5677, (q15_t)0xa1a0, (q15_t)0x5665, (q15_t)0xa18f, (q15_t)0x5652, (q15_t)0xa17e, + (q15_t)0x5640, (q15_t)0xa16d, (q15_t)0x562d, (q15_t)0xa15c, (q15_t)0x561a, (q15_t)0xa14b, (q15_t)0x5608, (q15_t)0xa13a, + (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x55e3, (q15_t)0xa118, (q15_t)0x55d0, (q15_t)0xa107, (q15_t)0x55bd, (q15_t)0xa0f6, + (q15_t)0x55ab, (q15_t)0xa0e6, (q15_t)0x5598, (q15_t)0xa0d5, (q15_t)0x5585, (q15_t)0xa0c4, (q15_t)0x5572, (q15_t)0xa0b3, + (q15_t)0x5560, (q15_t)0xa0a2, (q15_t)0x554d, (q15_t)0xa092, (q15_t)0x553a, (q15_t)0xa081, (q15_t)0x5528, (q15_t)0xa070, + (q15_t)0x5515, (q15_t)0xa060, (q15_t)0x5502, (q15_t)0xa04f, (q15_t)0x54ef, (q15_t)0xa03e, (q15_t)0x54dc, (q15_t)0xa02d, + (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x54b7, (q15_t)0xa00c, (q15_t)0x54a4, (q15_t)0x9ffc, (q15_t)0x5491, (q15_t)0x9feb, + (q15_t)0x547e, (q15_t)0x9fda, (q15_t)0x546b, (q15_t)0x9fca, (q15_t)0x5458, (q15_t)0x9fb9, (q15_t)0x5445, (q15_t)0x9fa9, + (q15_t)0x5433, (q15_t)0x9f98, (q15_t)0x5420, (q15_t)0x9f88, (q15_t)0x540d, (q15_t)0x9f77, (q15_t)0x53fa, (q15_t)0x9f67, + (q15_t)0x53e7, (q15_t)0x9f56, (q15_t)0x53d4, (q15_t)0x9f46, (q15_t)0x53c1, (q15_t)0x9f35, (q15_t)0x53ae, (q15_t)0x9f25, + (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x5388, (q15_t)0x9f04, (q15_t)0x5375, (q15_t)0x9ef3, (q15_t)0x5362, (q15_t)0x9ee3, + (q15_t)0x534e, (q15_t)0x9ed3, (q15_t)0x533b, (q15_t)0x9ec2, (q15_t)0x5328, (q15_t)0x9eb2, (q15_t)0x5315, (q15_t)0x9ea2, + (q15_t)0x5302, (q15_t)0x9e91, (q15_t)0x52ef, (q15_t)0x9e81, (q15_t)0x52dc, (q15_t)0x9e71, (q15_t)0x52c9, (q15_t)0x9e61, + (q15_t)0x52b5, (q15_t)0x9e50, (q15_t)0x52a2, (q15_t)0x9e40, (q15_t)0x528f, (q15_t)0x9e30, (q15_t)0x527c, (q15_t)0x9e20, + (q15_t)0x5269, (q15_t)0x9e0f, (q15_t)0x5255, (q15_t)0x9dff, (q15_t)0x5242, (q15_t)0x9def, (q15_t)0x522f, (q15_t)0x9ddf, + (q15_t)0x521c, (q15_t)0x9dcf, (q15_t)0x5208, (q15_t)0x9dbf, (q15_t)0x51f5, (q15_t)0x9daf, (q15_t)0x51e2, (q15_t)0x9d9f, + (q15_t)0x51ce, (q15_t)0x9d8f, (q15_t)0x51bb, (q15_t)0x9d7e, (q15_t)0x51a8, (q15_t)0x9d6e, (q15_t)0x5194, (q15_t)0x9d5e, + (q15_t)0x5181, (q15_t)0x9d4e, (q15_t)0x516e, (q15_t)0x9d3e, (q15_t)0x515a, (q15_t)0x9d2e, (q15_t)0x5147, (q15_t)0x9d1e, + (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x5120, (q15_t)0x9cff, (q15_t)0x510c, (q15_t)0x9cef, (q15_t)0x50f9, (q15_t)0x9cdf, + (q15_t)0x50e5, (q15_t)0x9ccf, (q15_t)0x50d2, (q15_t)0x9cbf, (q15_t)0x50bf, (q15_t)0x9caf, (q15_t)0x50ab, (q15_t)0x9c9f, + (q15_t)0x5097, (q15_t)0x9c8f, (q15_t)0x5084, (q15_t)0x9c80, (q15_t)0x5070, (q15_t)0x9c70, (q15_t)0x505d, (q15_t)0x9c60, + (q15_t)0x5049, (q15_t)0x9c50, (q15_t)0x5036, (q15_t)0x9c40, (q15_t)0x5022, (q15_t)0x9c31, (q15_t)0x500f, (q15_t)0x9c21, + (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4fe7, (q15_t)0x9c02, (q15_t)0x4fd4, (q15_t)0x9bf2, (q15_t)0x4fc0, (q15_t)0x9be2, + (q15_t)0x4fac, (q15_t)0x9bd3, (q15_t)0x4f99, (q15_t)0x9bc3, (q15_t)0x4f85, (q15_t)0x9bb3, (q15_t)0x4f71, (q15_t)0x9ba4, + (q15_t)0x4f5e, (q15_t)0x9b94, (q15_t)0x4f4a, (q15_t)0x9b85, (q15_t)0x4f36, (q15_t)0x9b75, (q15_t)0x4f22, (q15_t)0x9b65, + (q15_t)0x4f0f, (q15_t)0x9b56, (q15_t)0x4efb, (q15_t)0x9b46, (q15_t)0x4ee7, (q15_t)0x9b37, (q15_t)0x4ed3, (q15_t)0x9b27, + (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4eac, (q15_t)0x9b09, (q15_t)0x4e98, (q15_t)0x9af9, (q15_t)0x4e84, (q15_t)0x9aea, + (q15_t)0x4e70, (q15_t)0x9ada, (q15_t)0x4e5c, (q15_t)0x9acb, (q15_t)0x4e48, (q15_t)0x9abb, (q15_t)0x4e34, (q15_t)0x9aac, + (q15_t)0x4e21, (q15_t)0x9a9d, (q15_t)0x4e0d, (q15_t)0x9a8d, (q15_t)0x4df9, (q15_t)0x9a7e, (q15_t)0x4de5, (q15_t)0x9a6f, + (q15_t)0x4dd1, (q15_t)0x9a60, (q15_t)0x4dbd, (q15_t)0x9a50, (q15_t)0x4da9, (q15_t)0x9a41, (q15_t)0x4d95, (q15_t)0x9a32, + (q15_t)0x4d81, (q15_t)0x9a23, (q15_t)0x4d6d, (q15_t)0x9a13, (q15_t)0x4d59, (q15_t)0x9a04, (q15_t)0x4d45, (q15_t)0x99f5, + (q15_t)0x4d31, (q15_t)0x99e6, (q15_t)0x4d1d, (q15_t)0x99d7, (q15_t)0x4d09, (q15_t)0x99c7, (q15_t)0x4cf5, (q15_t)0x99b8, + (q15_t)0x4ce1, (q15_t)0x99a9, (q15_t)0x4ccc, (q15_t)0x999a, (q15_t)0x4cb8, (q15_t)0x998b, (q15_t)0x4ca4, (q15_t)0x997c, + (q15_t)0x4c90, (q15_t)0x996d, (q15_t)0x4c7c, (q15_t)0x995e, (q15_t)0x4c68, (q15_t)0x994f, (q15_t)0x4c54, (q15_t)0x9940, + (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4c2b, (q15_t)0x9922, (q15_t)0x4c17, (q15_t)0x9913, (q15_t)0x4c03, (q15_t)0x9904, + (q15_t)0x4bef, (q15_t)0x98f5, (q15_t)0x4bda, (q15_t)0x98e6, (q15_t)0x4bc6, (q15_t)0x98d7, (q15_t)0x4bb2, (q15_t)0x98c9, + (q15_t)0x4b9e, (q15_t)0x98ba, (q15_t)0x4b89, (q15_t)0x98ab, (q15_t)0x4b75, (q15_t)0x989c, (q15_t)0x4b61, (q15_t)0x988d, + (q15_t)0x4b4c, (q15_t)0x987e, (q15_t)0x4b38, (q15_t)0x9870, (q15_t)0x4b24, (q15_t)0x9861, (q15_t)0x4b0f, (q15_t)0x9852, + (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x4ae7, (q15_t)0x9835, (q15_t)0x4ad2, (q15_t)0x9826, (q15_t)0x4abe, (q15_t)0x9817, + (q15_t)0x4aa9, (q15_t)0x9809, (q15_t)0x4a95, (q15_t)0x97fa, (q15_t)0x4a81, (q15_t)0x97eb, (q15_t)0x4a6c, (q15_t)0x97dd, + (q15_t)0x4a58, (q15_t)0x97ce, (q15_t)0x4a43, (q15_t)0x97c0, (q15_t)0x4a2f, (q15_t)0x97b1, (q15_t)0x4a1a, (q15_t)0x97a2, + (q15_t)0x4a06, (q15_t)0x9794, (q15_t)0x49f1, (q15_t)0x9785, (q15_t)0x49dd, (q15_t)0x9777, (q15_t)0x49c8, (q15_t)0x9768, + (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x499f, (q15_t)0x974b, (q15_t)0x498a, (q15_t)0x973d, (q15_t)0x4976, (q15_t)0x972f, + (q15_t)0x4961, (q15_t)0x9720, (q15_t)0x494d, (q15_t)0x9712, (q15_t)0x4938, (q15_t)0x9703, (q15_t)0x4923, (q15_t)0x96f5, + (q15_t)0x490f, (q15_t)0x96e7, (q15_t)0x48fa, (q15_t)0x96d8, (q15_t)0x48e6, (q15_t)0x96ca, (q15_t)0x48d1, (q15_t)0x96bc, + (q15_t)0x48bc, (q15_t)0x96ad, (q15_t)0x48a8, (q15_t)0x969f, (q15_t)0x4893, (q15_t)0x9691, (q15_t)0x487e, (q15_t)0x9683, + (q15_t)0x4869, (q15_t)0x9674, (q15_t)0x4855, (q15_t)0x9666, (q15_t)0x4840, (q15_t)0x9658, (q15_t)0x482b, (q15_t)0x964a, + (q15_t)0x4816, (q15_t)0x963c, (q15_t)0x4802, (q15_t)0x962d, (q15_t)0x47ed, (q15_t)0x961f, (q15_t)0x47d8, (q15_t)0x9611, + (q15_t)0x47c3, (q15_t)0x9603, (q15_t)0x47ae, (q15_t)0x95f5, (q15_t)0x479a, (q15_t)0x95e7, (q15_t)0x4785, (q15_t)0x95d9, + (q15_t)0x4770, (q15_t)0x95cb, (q15_t)0x475b, (q15_t)0x95bd, (q15_t)0x4746, (q15_t)0x95af, (q15_t)0x4731, (q15_t)0x95a1, + (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x4708, (q15_t)0x9585, (q15_t)0x46f3, (q15_t)0x9577, (q15_t)0x46de, (q15_t)0x9569, + (q15_t)0x46c9, (q15_t)0x955b, (q15_t)0x46b4, (q15_t)0x954d, (q15_t)0x469f, (q15_t)0x953f, (q15_t)0x468a, (q15_t)0x9532, + (q15_t)0x4675, (q15_t)0x9524, (q15_t)0x4660, (q15_t)0x9516, (q15_t)0x464b, (q15_t)0x9508, (q15_t)0x4636, (q15_t)0x94fa, + (q15_t)0x4621, (q15_t)0x94ed, (q15_t)0x460c, (q15_t)0x94df, (q15_t)0x45f7, (q15_t)0x94d1, (q15_t)0x45e2, (q15_t)0x94c3, + (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x45b8, (q15_t)0x94a8, (q15_t)0x45a3, (q15_t)0x949a, (q15_t)0x458d, (q15_t)0x948d, + (q15_t)0x4578, (q15_t)0x947f, (q15_t)0x4563, (q15_t)0x9471, (q15_t)0x454e, (q15_t)0x9464, (q15_t)0x4539, (q15_t)0x9456, + (q15_t)0x4524, (q15_t)0x9448, (q15_t)0x450f, (q15_t)0x943b, (q15_t)0x44fa, (q15_t)0x942d, (q15_t)0x44e4, (q15_t)0x9420, + (q15_t)0x44cf, (q15_t)0x9412, (q15_t)0x44ba, (q15_t)0x9405, (q15_t)0x44a5, (q15_t)0x93f7, (q15_t)0x4490, (q15_t)0x93ea, + (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4465, (q15_t)0x93cf, (q15_t)0x4450, (q15_t)0x93c1, (q15_t)0x443b, (q15_t)0x93b4, + (q15_t)0x4425, (q15_t)0x93a7, (q15_t)0x4410, (q15_t)0x9399, (q15_t)0x43fb, (q15_t)0x938c, (q15_t)0x43e5, (q15_t)0x937f, + (q15_t)0x43d0, (q15_t)0x9371, (q15_t)0x43bb, (q15_t)0x9364, (q15_t)0x43a5, (q15_t)0x9357, (q15_t)0x4390, (q15_t)0x9349, + (q15_t)0x437b, (q15_t)0x933c, (q15_t)0x4365, (q15_t)0x932f, (q15_t)0x4350, (q15_t)0x9322, (q15_t)0x433b, (q15_t)0x9314, + (q15_t)0x4325, (q15_t)0x9307, (q15_t)0x4310, (q15_t)0x92fa, (q15_t)0x42fa, (q15_t)0x92ed, (q15_t)0x42e5, (q15_t)0x92e0, + (q15_t)0x42d0, (q15_t)0x92d3, (q15_t)0x42ba, (q15_t)0x92c6, (q15_t)0x42a5, (q15_t)0x92b8, (q15_t)0x428f, (q15_t)0x92ab, + (q15_t)0x427a, (q15_t)0x929e, (q15_t)0x4264, (q15_t)0x9291, (q15_t)0x424f, (q15_t)0x9284, (q15_t)0x4239, (q15_t)0x9277, + (q15_t)0x4224, (q15_t)0x926a, (q15_t)0x420e, (q15_t)0x925d, (q15_t)0x41f9, (q15_t)0x9250, (q15_t)0x41e3, (q15_t)0x9243, + (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x41b8, (q15_t)0x922a, (q15_t)0x41a2, (q15_t)0x921d, (q15_t)0x418d, (q15_t)0x9210, + (q15_t)0x4177, (q15_t)0x9203, (q15_t)0x4162, (q15_t)0x91f6, (q15_t)0x414c, (q15_t)0x91e9, (q15_t)0x4136, (q15_t)0x91dc, + (q15_t)0x4121, (q15_t)0x91d0, (q15_t)0x410b, (q15_t)0x91c3, (q15_t)0x40f6, (q15_t)0x91b6, (q15_t)0x40e0, (q15_t)0x91a9, + (q15_t)0x40ca, (q15_t)0x919d, (q15_t)0x40b5, (q15_t)0x9190, (q15_t)0x409f, (q15_t)0x9183, (q15_t)0x4089, (q15_t)0x9177, + (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x405e, (q15_t)0x915d, (q15_t)0x4048, (q15_t)0x9151, (q15_t)0x4032, (q15_t)0x9144, + (q15_t)0x401d, (q15_t)0x9137, (q15_t)0x4007, (q15_t)0x912b, (q15_t)0x3ff1, (q15_t)0x911e, (q15_t)0x3fdb, (q15_t)0x9112, + (q15_t)0x3fc5, (q15_t)0x9105, (q15_t)0x3fb0, (q15_t)0x90f9, (q15_t)0x3f9a, (q15_t)0x90ec, (q15_t)0x3f84, (q15_t)0x90e0, + (q15_t)0x3f6e, (q15_t)0x90d3, (q15_t)0x3f58, (q15_t)0x90c7, (q15_t)0x3f43, (q15_t)0x90ba, (q15_t)0x3f2d, (q15_t)0x90ae, + (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3f01, (q15_t)0x9095, (q15_t)0x3eeb, (q15_t)0x9089, (q15_t)0x3ed5, (q15_t)0x907c, + (q15_t)0x3ebf, (q15_t)0x9070, (q15_t)0x3ea9, (q15_t)0x9064, (q15_t)0x3e93, (q15_t)0x9057, (q15_t)0x3e7d, (q15_t)0x904b, + (q15_t)0x3e68, (q15_t)0x903f, (q15_t)0x3e52, (q15_t)0x9033, (q15_t)0x3e3c, (q15_t)0x9026, (q15_t)0x3e26, (q15_t)0x901a, + (q15_t)0x3e10, (q15_t)0x900e, (q15_t)0x3dfa, (q15_t)0x9002, (q15_t)0x3de4, (q15_t)0x8ff6, (q15_t)0x3dce, (q15_t)0x8fea, + (q15_t)0x3db8, (q15_t)0x8fdd, (q15_t)0x3da2, (q15_t)0x8fd1, (q15_t)0x3d8c, (q15_t)0x8fc5, (q15_t)0x3d76, (q15_t)0x8fb9, + (q15_t)0x3d60, (q15_t)0x8fad, (q15_t)0x3d49, (q15_t)0x8fa1, (q15_t)0x3d33, (q15_t)0x8f95, (q15_t)0x3d1d, (q15_t)0x8f89, + (q15_t)0x3d07, (q15_t)0x8f7d, (q15_t)0x3cf1, (q15_t)0x8f71, (q15_t)0x3cdb, (q15_t)0x8f65, (q15_t)0x3cc5, (q15_t)0x8f59, + (q15_t)0x3caf, (q15_t)0x8f4d, (q15_t)0x3c99, (q15_t)0x8f41, (q15_t)0x3c83, (q15_t)0x8f35, (q15_t)0x3c6c, (q15_t)0x8f2a, + (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3c40, (q15_t)0x8f12, (q15_t)0x3c2a, (q15_t)0x8f06, (q15_t)0x3c14, (q15_t)0x8efa, + (q15_t)0x3bfd, (q15_t)0x8eee, (q15_t)0x3be7, (q15_t)0x8ee3, (q15_t)0x3bd1, (q15_t)0x8ed7, (q15_t)0x3bbb, (q15_t)0x8ecb, + (q15_t)0x3ba5, (q15_t)0x8ebf, (q15_t)0x3b8e, (q15_t)0x8eb4, (q15_t)0x3b78, (q15_t)0x8ea8, (q15_t)0x3b62, (q15_t)0x8e9c, + (q15_t)0x3b4c, (q15_t)0x8e91, (q15_t)0x3b35, (q15_t)0x8e85, (q15_t)0x3b1f, (q15_t)0x8e7a, (q15_t)0x3b09, (q15_t)0x8e6e, + (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x3adc, (q15_t)0x8e57, (q15_t)0x3ac6, (q15_t)0x8e4b, (q15_t)0x3aaf, (q15_t)0x8e40, + (q15_t)0x3a99, (q15_t)0x8e34, (q15_t)0x3a83, (q15_t)0x8e29, (q15_t)0x3a6c, (q15_t)0x8e1d, (q15_t)0x3a56, (q15_t)0x8e12, + (q15_t)0x3a40, (q15_t)0x8e06, (q15_t)0x3a29, (q15_t)0x8dfb, (q15_t)0x3a13, (q15_t)0x8def, (q15_t)0x39fd, (q15_t)0x8de4, + (q15_t)0x39e6, (q15_t)0x8dd9, (q15_t)0x39d0, (q15_t)0x8dcd, (q15_t)0x39b9, (q15_t)0x8dc2, (q15_t)0x39a3, (q15_t)0x8db7, + (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3976, (q15_t)0x8da0, (q15_t)0x395f, (q15_t)0x8d95, (q15_t)0x3949, (q15_t)0x8d8a, + (q15_t)0x3932, (q15_t)0x8d7e, (q15_t)0x391c, (q15_t)0x8d73, (q15_t)0x3906, (q15_t)0x8d68, (q15_t)0x38ef, (q15_t)0x8d5d, + (q15_t)0x38d8, (q15_t)0x8d51, (q15_t)0x38c2, (q15_t)0x8d46, (q15_t)0x38ab, (q15_t)0x8d3b, (q15_t)0x3895, (q15_t)0x8d30, + (q15_t)0x387e, (q15_t)0x8d25, (q15_t)0x3868, (q15_t)0x8d1a, (q15_t)0x3851, (q15_t)0x8d0f, (q15_t)0x383b, (q15_t)0x8d04, + (q15_t)0x3824, (q15_t)0x8cf9, (q15_t)0x380d, (q15_t)0x8cee, (q15_t)0x37f7, (q15_t)0x8ce3, (q15_t)0x37e0, (q15_t)0x8cd8, + (q15_t)0x37ca, (q15_t)0x8ccd, (q15_t)0x37b3, (q15_t)0x8cc2, (q15_t)0x379c, (q15_t)0x8cb7, (q15_t)0x3786, (q15_t)0x8cac, + (q15_t)0x376f, (q15_t)0x8ca1, (q15_t)0x3758, (q15_t)0x8c96, (q15_t)0x3742, (q15_t)0x8c8b, (q15_t)0x372b, (q15_t)0x8c81, + (q15_t)0x3714, (q15_t)0x8c76, (q15_t)0x36fe, (q15_t)0x8c6b, (q15_t)0x36e7, (q15_t)0x8c60, (q15_t)0x36d0, (q15_t)0x8c55, + (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x36a3, (q15_t)0x8c40, (q15_t)0x368c, (q15_t)0x8c35, (q15_t)0x3675, (q15_t)0x8c2a, + (q15_t)0x365f, (q15_t)0x8c20, (q15_t)0x3648, (q15_t)0x8c15, (q15_t)0x3631, (q15_t)0x8c0a, (q15_t)0x361a, (q15_t)0x8c00, + (q15_t)0x3604, (q15_t)0x8bf5, (q15_t)0x35ed, (q15_t)0x8beb, (q15_t)0x35d6, (q15_t)0x8be0, (q15_t)0x35bf, (q15_t)0x8bd5, + (q15_t)0x35a8, (q15_t)0x8bcb, (q15_t)0x3592, (q15_t)0x8bc0, (q15_t)0x357b, (q15_t)0x8bb6, (q15_t)0x3564, (q15_t)0x8bab, + (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x3536, (q15_t)0x8b96, (q15_t)0x351f, (q15_t)0x8b8c, (q15_t)0x3508, (q15_t)0x8b82, + (q15_t)0x34f2, (q15_t)0x8b77, (q15_t)0x34db, (q15_t)0x8b6d, (q15_t)0x34c4, (q15_t)0x8b62, (q15_t)0x34ad, (q15_t)0x8b58, + (q15_t)0x3496, (q15_t)0x8b4e, (q15_t)0x347f, (q15_t)0x8b43, (q15_t)0x3468, (q15_t)0x8b39, (q15_t)0x3451, (q15_t)0x8b2f, + (q15_t)0x343a, (q15_t)0x8b25, (q15_t)0x3423, (q15_t)0x8b1a, (q15_t)0x340c, (q15_t)0x8b10, (q15_t)0x33f5, (q15_t)0x8b06, + (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x33c7, (q15_t)0x8af1, (q15_t)0x33b0, (q15_t)0x8ae7, (q15_t)0x3399, (q15_t)0x8add, + (q15_t)0x3382, (q15_t)0x8ad3, (q15_t)0x336b, (q15_t)0x8ac9, (q15_t)0x3354, (q15_t)0x8abf, (q15_t)0x333d, (q15_t)0x8ab5, + (q15_t)0x3326, (q15_t)0x8aab, (q15_t)0x330f, (q15_t)0x8aa1, (q15_t)0x32f8, (q15_t)0x8a97, (q15_t)0x32e1, (q15_t)0x8a8d, + (q15_t)0x32ca, (q15_t)0x8a83, (q15_t)0x32b3, (q15_t)0x8a79, (q15_t)0x329c, (q15_t)0x8a6f, (q15_t)0x3285, (q15_t)0x8a65, + (q15_t)0x326e, (q15_t)0x8a5b, (q15_t)0x3257, (q15_t)0x8a51, (q15_t)0x3240, (q15_t)0x8a47, (q15_t)0x3228, (q15_t)0x8a3d, + (q15_t)0x3211, (q15_t)0x8a34, (q15_t)0x31fa, (q15_t)0x8a2a, (q15_t)0x31e3, (q15_t)0x8a20, (q15_t)0x31cc, (q15_t)0x8a16, + (q15_t)0x31b5, (q15_t)0x8a0c, (q15_t)0x319e, (q15_t)0x8a03, (q15_t)0x3186, (q15_t)0x89f9, (q15_t)0x316f, (q15_t)0x89ef, + (q15_t)0x3158, (q15_t)0x89e5, (q15_t)0x3141, (q15_t)0x89dc, (q15_t)0x312a, (q15_t)0x89d2, (q15_t)0x3112, (q15_t)0x89c8, + (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x30e4, (q15_t)0x89b5, (q15_t)0x30cd, (q15_t)0x89ac, (q15_t)0x30b6, (q15_t)0x89a2, + (q15_t)0x309e, (q15_t)0x8998, (q15_t)0x3087, (q15_t)0x898f, (q15_t)0x3070, (q15_t)0x8985, (q15_t)0x3059, (q15_t)0x897c, + (q15_t)0x3041, (q15_t)0x8972, (q15_t)0x302a, (q15_t)0x8969, (q15_t)0x3013, (q15_t)0x8960, (q15_t)0x2ffb, (q15_t)0x8956, + (q15_t)0x2fe4, (q15_t)0x894d, (q15_t)0x2fcd, (q15_t)0x8943, (q15_t)0x2fb5, (q15_t)0x893a, (q15_t)0x2f9e, (q15_t)0x8931, + (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2f6f, (q15_t)0x891e, (q15_t)0x2f58, (q15_t)0x8915, (q15_t)0x2f41, (q15_t)0x890b, + (q15_t)0x2f29, (q15_t)0x8902, (q15_t)0x2f12, (q15_t)0x88f9, (q15_t)0x2efb, (q15_t)0x88f0, (q15_t)0x2ee3, (q15_t)0x88e6, + (q15_t)0x2ecc, (q15_t)0x88dd, (q15_t)0x2eb5, (q15_t)0x88d4, (q15_t)0x2e9d, (q15_t)0x88cb, (q15_t)0x2e86, (q15_t)0x88c2, + (q15_t)0x2e6e, (q15_t)0x88b9, (q15_t)0x2e57, (q15_t)0x88af, (q15_t)0x2e3f, (q15_t)0x88a6, (q15_t)0x2e28, (q15_t)0x889d, + (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2df9, (q15_t)0x888b, (q15_t)0x2de2, (q15_t)0x8882, (q15_t)0x2dca, (q15_t)0x8879, + (q15_t)0x2db3, (q15_t)0x8870, (q15_t)0x2d9b, (q15_t)0x8867, (q15_t)0x2d84, (q15_t)0x885e, (q15_t)0x2d6c, (q15_t)0x8855, + (q15_t)0x2d55, (q15_t)0x884c, (q15_t)0x2d3d, (q15_t)0x8844, (q15_t)0x2d26, (q15_t)0x883b, (q15_t)0x2d0e, (q15_t)0x8832, + (q15_t)0x2cf7, (q15_t)0x8829, (q15_t)0x2cdf, (q15_t)0x8820, (q15_t)0x2cc8, (q15_t)0x8817, (q15_t)0x2cb0, (q15_t)0x880f, + (q15_t)0x2c98, (q15_t)0x8806, (q15_t)0x2c81, (q15_t)0x87fd, (q15_t)0x2c69, (q15_t)0x87f4, (q15_t)0x2c52, (q15_t)0x87ec, + (q15_t)0x2c3a, (q15_t)0x87e3, (q15_t)0x2c23, (q15_t)0x87da, (q15_t)0x2c0b, (q15_t)0x87d2, (q15_t)0x2bf3, (q15_t)0x87c9, + (q15_t)0x2bdc, (q15_t)0x87c0, (q15_t)0x2bc4, (q15_t)0x87b8, (q15_t)0x2bad, (q15_t)0x87af, (q15_t)0x2b95, (q15_t)0x87a7, + (q15_t)0x2b7d, (q15_t)0x879e, (q15_t)0x2b66, (q15_t)0x8795, (q15_t)0x2b4e, (q15_t)0x878d, (q15_t)0x2b36, (q15_t)0x8784, + (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x2b07, (q15_t)0x8774, (q15_t)0x2aef, (q15_t)0x876b, (q15_t)0x2ad8, (q15_t)0x8763, + (q15_t)0x2ac0, (q15_t)0x875a, (q15_t)0x2aa8, (q15_t)0x8752, (q15_t)0x2a91, (q15_t)0x874a, (q15_t)0x2a79, (q15_t)0x8741, + (q15_t)0x2a61, (q15_t)0x8739, (q15_t)0x2a49, (q15_t)0x8731, (q15_t)0x2a32, (q15_t)0x8728, (q15_t)0x2a1a, (q15_t)0x8720, + (q15_t)0x2a02, (q15_t)0x8718, (q15_t)0x29eb, (q15_t)0x870f, (q15_t)0x29d3, (q15_t)0x8707, (q15_t)0x29bb, (q15_t)0x86ff, + (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x298b, (q15_t)0x86ef, (q15_t)0x2974, (q15_t)0x86e7, (q15_t)0x295c, (q15_t)0x86de, + (q15_t)0x2944, (q15_t)0x86d6, (q15_t)0x292c, (q15_t)0x86ce, (q15_t)0x2915, (q15_t)0x86c6, (q15_t)0x28fd, (q15_t)0x86be, + (q15_t)0x28e5, (q15_t)0x86b6, (q15_t)0x28cd, (q15_t)0x86ae, (q15_t)0x28b5, (q15_t)0x86a6, (q15_t)0x289d, (q15_t)0x869e, + (q15_t)0x2886, (q15_t)0x8696, (q15_t)0x286e, (q15_t)0x868e, (q15_t)0x2856, (q15_t)0x8686, (q15_t)0x283e, (q15_t)0x867e, + (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x280e, (q15_t)0x866e, (q15_t)0x27f6, (q15_t)0x8667, (q15_t)0x27df, (q15_t)0x865f, + (q15_t)0x27c7, (q15_t)0x8657, (q15_t)0x27af, (q15_t)0x864f, (q15_t)0x2797, (q15_t)0x8647, (q15_t)0x277f, (q15_t)0x8640, + (q15_t)0x2767, (q15_t)0x8638, (q15_t)0x274f, (q15_t)0x8630, (q15_t)0x2737, (q15_t)0x8628, (q15_t)0x271f, (q15_t)0x8621, + (q15_t)0x2707, (q15_t)0x8619, (q15_t)0x26ef, (q15_t)0x8611, (q15_t)0x26d8, (q15_t)0x860a, (q15_t)0x26c0, (q15_t)0x8602, + (q15_t)0x26a8, (q15_t)0x85fb, (q15_t)0x2690, (q15_t)0x85f3, (q15_t)0x2678, (q15_t)0x85eb, (q15_t)0x2660, (q15_t)0x85e4, + (q15_t)0x2648, (q15_t)0x85dc, (q15_t)0x2630, (q15_t)0x85d5, (q15_t)0x2618, (q15_t)0x85cd, (q15_t)0x2600, (q15_t)0x85c6, + (q15_t)0x25e8, (q15_t)0x85be, (q15_t)0x25d0, (q15_t)0x85b7, (q15_t)0x25b8, (q15_t)0x85b0, (q15_t)0x25a0, (q15_t)0x85a8, + (q15_t)0x2588, (q15_t)0x85a1, (q15_t)0x2570, (q15_t)0x8599, (q15_t)0x2558, (q15_t)0x8592, (q15_t)0x2540, (q15_t)0x858b, + (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x250f, (q15_t)0x857c, (q15_t)0x24f7, (q15_t)0x8575, (q15_t)0x24df, (q15_t)0x856e, + (q15_t)0x24c7, (q15_t)0x8566, (q15_t)0x24af, (q15_t)0x855f, (q15_t)0x2497, (q15_t)0x8558, (q15_t)0x247f, (q15_t)0x8551, + (q15_t)0x2467, (q15_t)0x854a, (q15_t)0x244f, (q15_t)0x8543, (q15_t)0x2437, (q15_t)0x853b, (q15_t)0x241f, (q15_t)0x8534, + (q15_t)0x2407, (q15_t)0x852d, (q15_t)0x23ee, (q15_t)0x8526, (q15_t)0x23d6, (q15_t)0x851f, (q15_t)0x23be, (q15_t)0x8518, + (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x238e, (q15_t)0x850a, (q15_t)0x2376, (q15_t)0x8503, (q15_t)0x235e, (q15_t)0x84fc, + (q15_t)0x2345, (q15_t)0x84f5, (q15_t)0x232d, (q15_t)0x84ee, (q15_t)0x2315, (q15_t)0x84e7, (q15_t)0x22fd, (q15_t)0x84e1, + (q15_t)0x22e5, (q15_t)0x84da, (q15_t)0x22cd, (q15_t)0x84d3, (q15_t)0x22b4, (q15_t)0x84cc, (q15_t)0x229c, (q15_t)0x84c5, + (q15_t)0x2284, (q15_t)0x84be, (q15_t)0x226c, (q15_t)0x84b8, (q15_t)0x2254, (q15_t)0x84b1, (q15_t)0x223b, (q15_t)0x84aa, + (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x220b, (q15_t)0x849d, (q15_t)0x21f3, (q15_t)0x8496, (q15_t)0x21da, (q15_t)0x848f, + (q15_t)0x21c2, (q15_t)0x8489, (q15_t)0x21aa, (q15_t)0x8482, (q15_t)0x2192, (q15_t)0x847c, (q15_t)0x2179, (q15_t)0x8475, + (q15_t)0x2161, (q15_t)0x846e, (q15_t)0x2149, (q15_t)0x8468, (q15_t)0x2131, (q15_t)0x8461, (q15_t)0x2118, (q15_t)0x845b, + (q15_t)0x2100, (q15_t)0x8454, (q15_t)0x20e8, (q15_t)0x844e, (q15_t)0x20d0, (q15_t)0x8447, (q15_t)0x20b7, (q15_t)0x8441, + (q15_t)0x209f, (q15_t)0x843b, (q15_t)0x2087, (q15_t)0x8434, (q15_t)0x206e, (q15_t)0x842e, (q15_t)0x2056, (q15_t)0x8427, + (q15_t)0x203e, (q15_t)0x8421, (q15_t)0x2025, (q15_t)0x841b, (q15_t)0x200d, (q15_t)0x8415, (q15_t)0x1ff5, (q15_t)0x840e, + (q15_t)0x1fdc, (q15_t)0x8408, (q15_t)0x1fc4, (q15_t)0x8402, (q15_t)0x1fac, (q15_t)0x83fb, (q15_t)0x1f93, (q15_t)0x83f5, + (q15_t)0x1f7b, (q15_t)0x83ef, (q15_t)0x1f63, (q15_t)0x83e9, (q15_t)0x1f4a, (q15_t)0x83e3, (q15_t)0x1f32, (q15_t)0x83dd, + (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1f01, (q15_t)0x83d0, (q15_t)0x1ee9, (q15_t)0x83ca, (q15_t)0x1ed0, (q15_t)0x83c4, + (q15_t)0x1eb8, (q15_t)0x83be, (q15_t)0x1ea0, (q15_t)0x83b8, (q15_t)0x1e87, (q15_t)0x83b2, (q15_t)0x1e6f, (q15_t)0x83ac, + (q15_t)0x1e56, (q15_t)0x83a6, (q15_t)0x1e3e, (q15_t)0x83a0, (q15_t)0x1e25, (q15_t)0x839a, (q15_t)0x1e0d, (q15_t)0x8394, + (q15_t)0x1df5, (q15_t)0x838f, (q15_t)0x1ddc, (q15_t)0x8389, (q15_t)0x1dc4, (q15_t)0x8383, (q15_t)0x1dab, (q15_t)0x837d, + (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1d7a, (q15_t)0x8371, (q15_t)0x1d62, (q15_t)0x836c, (q15_t)0x1d49, (q15_t)0x8366, + (q15_t)0x1d31, (q15_t)0x8360, (q15_t)0x1d18, (q15_t)0x835a, (q15_t)0x1d00, (q15_t)0x8355, (q15_t)0x1ce8, (q15_t)0x834f, + (q15_t)0x1ccf, (q15_t)0x8349, (q15_t)0x1cb7, (q15_t)0x8344, (q15_t)0x1c9e, (q15_t)0x833e, (q15_t)0x1c86, (q15_t)0x8338, + (q15_t)0x1c6d, (q15_t)0x8333, (q15_t)0x1c55, (q15_t)0x832d, (q15_t)0x1c3c, (q15_t)0x8328, (q15_t)0x1c24, (q15_t)0x8322, + (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1bf2, (q15_t)0x8317, (q15_t)0x1bda, (q15_t)0x8312, (q15_t)0x1bc1, (q15_t)0x830c, + (q15_t)0x1ba9, (q15_t)0x8307, (q15_t)0x1b90, (q15_t)0x8301, (q15_t)0x1b78, (q15_t)0x82fc, (q15_t)0x1b5f, (q15_t)0x82f7, + (q15_t)0x1b47, (q15_t)0x82f1, (q15_t)0x1b2e, (q15_t)0x82ec, (q15_t)0x1b16, (q15_t)0x82e7, (q15_t)0x1afd, (q15_t)0x82e1, + (q15_t)0x1ae4, (q15_t)0x82dc, (q15_t)0x1acc, (q15_t)0x82d7, (q15_t)0x1ab3, (q15_t)0x82d1, (q15_t)0x1a9b, (q15_t)0x82cc, + (q15_t)0x1a82, (q15_t)0x82c7, (q15_t)0x1a6a, (q15_t)0x82c2, (q15_t)0x1a51, (q15_t)0x82bd, (q15_t)0x1a38, (q15_t)0x82b7, + (q15_t)0x1a20, (q15_t)0x82b2, (q15_t)0x1a07, (q15_t)0x82ad, (q15_t)0x19ef, (q15_t)0x82a8, (q15_t)0x19d6, (q15_t)0x82a3, + (q15_t)0x19bd, (q15_t)0x829e, (q15_t)0x19a5, (q15_t)0x8299, (q15_t)0x198c, (q15_t)0x8294, (q15_t)0x1973, (q15_t)0x828f, + (q15_t)0x195b, (q15_t)0x828a, (q15_t)0x1942, (q15_t)0x8285, (q15_t)0x192a, (q15_t)0x8280, (q15_t)0x1911, (q15_t)0x827b, + (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x18e0, (q15_t)0x8271, (q15_t)0x18c7, (q15_t)0x826c, (q15_t)0x18ae, (q15_t)0x8268, + (q15_t)0x1896, (q15_t)0x8263, (q15_t)0x187d, (q15_t)0x825e, (q15_t)0x1864, (q15_t)0x8259, (q15_t)0x184c, (q15_t)0x8254, + (q15_t)0x1833, (q15_t)0x8250, (q15_t)0x181a, (q15_t)0x824b, (q15_t)0x1802, (q15_t)0x8246, (q15_t)0x17e9, (q15_t)0x8241, + (q15_t)0x17d0, (q15_t)0x823d, (q15_t)0x17b7, (q15_t)0x8238, (q15_t)0x179f, (q15_t)0x8233, (q15_t)0x1786, (q15_t)0x822f, + (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x1755, (q15_t)0x8226, (q15_t)0x173c, (q15_t)0x8221, (q15_t)0x1723, (q15_t)0x821c, + (q15_t)0x170a, (q15_t)0x8218, (q15_t)0x16f2, (q15_t)0x8213, (q15_t)0x16d9, (q15_t)0x820f, (q15_t)0x16c0, (q15_t)0x820a, + (q15_t)0x16a8, (q15_t)0x8206, (q15_t)0x168f, (q15_t)0x8201, (q15_t)0x1676, (q15_t)0x81fd, (q15_t)0x165d, (q15_t)0x81f9, + (q15_t)0x1645, (q15_t)0x81f4, (q15_t)0x162c, (q15_t)0x81f0, (q15_t)0x1613, (q15_t)0x81ec, (q15_t)0x15fa, (q15_t)0x81e7, + (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x15c9, (q15_t)0x81df, (q15_t)0x15b0, (q15_t)0x81da, (q15_t)0x1597, (q15_t)0x81d6, + (q15_t)0x157f, (q15_t)0x81d2, (q15_t)0x1566, (q15_t)0x81ce, (q15_t)0x154d, (q15_t)0x81c9, (q15_t)0x1534, (q15_t)0x81c5, + (q15_t)0x151b, (q15_t)0x81c1, (q15_t)0x1503, (q15_t)0x81bd, (q15_t)0x14ea, (q15_t)0x81b9, (q15_t)0x14d1, (q15_t)0x81b5, + (q15_t)0x14b8, (q15_t)0x81b1, (q15_t)0x149f, (q15_t)0x81ad, (q15_t)0x1487, (q15_t)0x81a9, (q15_t)0x146e, (q15_t)0x81a5, + (q15_t)0x1455, (q15_t)0x81a1, (q15_t)0x143c, (q15_t)0x819d, (q15_t)0x1423, (q15_t)0x8199, (q15_t)0x140b, (q15_t)0x8195, + (q15_t)0x13f2, (q15_t)0x8191, (q15_t)0x13d9, (q15_t)0x818d, (q15_t)0x13c0, (q15_t)0x8189, (q15_t)0x13a7, (q15_t)0x8185, + (q15_t)0x138e, (q15_t)0x8181, (q15_t)0x1376, (q15_t)0x817d, (q15_t)0x135d, (q15_t)0x817a, (q15_t)0x1344, (q15_t)0x8176, + (q15_t)0x132b, (q15_t)0x8172, (q15_t)0x1312, (q15_t)0x816e, (q15_t)0x12f9, (q15_t)0x816b, (q15_t)0x12e0, (q15_t)0x8167, + (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x12af, (q15_t)0x815f, (q15_t)0x1296, (q15_t)0x815c, (q15_t)0x127d, (q15_t)0x8158, + (q15_t)0x1264, (q15_t)0x8155, (q15_t)0x124b, (q15_t)0x8151, (q15_t)0x1232, (q15_t)0x814d, (q15_t)0x1219, (q15_t)0x814a, + (q15_t)0x1201, (q15_t)0x8146, (q15_t)0x11e8, (q15_t)0x8143, (q15_t)0x11cf, (q15_t)0x813f, (q15_t)0x11b6, (q15_t)0x813c, + (q15_t)0x119d, (q15_t)0x8138, (q15_t)0x1184, (q15_t)0x8135, (q15_t)0x116b, (q15_t)0x8131, (q15_t)0x1152, (q15_t)0x812e, + (q15_t)0x1139, (q15_t)0x812b, (q15_t)0x1121, (q15_t)0x8127, (q15_t)0x1108, (q15_t)0x8124, (q15_t)0x10ef, (q15_t)0x8121, + (q15_t)0x10d6, (q15_t)0x811d, (q15_t)0x10bd, (q15_t)0x811a, (q15_t)0x10a4, (q15_t)0x8117, (q15_t)0x108b, (q15_t)0x8113, + (q15_t)0x1072, (q15_t)0x8110, (q15_t)0x1059, (q15_t)0x810d, (q15_t)0x1040, (q15_t)0x810a, (q15_t)0x1027, (q15_t)0x8107, + (q15_t)0x100e, (q15_t)0x8103, (q15_t)0xff5, (q15_t)0x8100, (q15_t)0xfdd, (q15_t)0x80fd, (q15_t)0xfc4, (q15_t)0x80fa, + (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xf92, (q15_t)0x80f4, (q15_t)0xf79, (q15_t)0x80f1, (q15_t)0xf60, (q15_t)0x80ee, + (q15_t)0xf47, (q15_t)0x80eb, (q15_t)0xf2e, (q15_t)0x80e8, (q15_t)0xf15, (q15_t)0x80e5, (q15_t)0xefc, (q15_t)0x80e2, + (q15_t)0xee3, (q15_t)0x80df, (q15_t)0xeca, (q15_t)0x80dc, (q15_t)0xeb1, (q15_t)0x80d9, (q15_t)0xe98, (q15_t)0x80d6, + (q15_t)0xe7f, (q15_t)0x80d3, (q15_t)0xe66, (q15_t)0x80d1, (q15_t)0xe4d, (q15_t)0x80ce, (q15_t)0xe34, (q15_t)0x80cb, + (q15_t)0xe1b, (q15_t)0x80c8, (q15_t)0xe02, (q15_t)0x80c5, (q15_t)0xde9, (q15_t)0x80c3, (q15_t)0xdd0, (q15_t)0x80c0, + (q15_t)0xdb7, (q15_t)0x80bd, (q15_t)0xd9e, (q15_t)0x80bb, (q15_t)0xd85, (q15_t)0x80b8, (q15_t)0xd6c, (q15_t)0x80b5, + (q15_t)0xd53, (q15_t)0x80b3, (q15_t)0xd3a, (q15_t)0x80b0, (q15_t)0xd21, (q15_t)0x80ad, (q15_t)0xd08, (q15_t)0x80ab, + (q15_t)0xcef, (q15_t)0x80a8, (q15_t)0xcd6, (q15_t)0x80a6, (q15_t)0xcbd, (q15_t)0x80a3, (q15_t)0xca4, (q15_t)0x80a1, + (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xc72, (q15_t)0x809c, (q15_t)0xc59, (q15_t)0x8099, (q15_t)0xc40, (q15_t)0x8097, + (q15_t)0xc27, (q15_t)0x8095, (q15_t)0xc0e, (q15_t)0x8092, (q15_t)0xbf5, (q15_t)0x8090, (q15_t)0xbdc, (q15_t)0x808e, + (q15_t)0xbc3, (q15_t)0x808b, (q15_t)0xbaa, (q15_t)0x8089, (q15_t)0xb91, (q15_t)0x8087, (q15_t)0xb78, (q15_t)0x8084, + (q15_t)0xb5f, (q15_t)0x8082, (q15_t)0xb46, (q15_t)0x8080, (q15_t)0xb2d, (q15_t)0x807e, (q15_t)0xb14, (q15_t)0x807b, + (q15_t)0xafb, (q15_t)0x8079, (q15_t)0xae2, (q15_t)0x8077, (q15_t)0xac9, (q15_t)0x8075, (q15_t)0xab0, (q15_t)0x8073, + (q15_t)0xa97, (q15_t)0x8071, (q15_t)0xa7e, (q15_t)0x806f, (q15_t)0xa65, (q15_t)0x806d, (q15_t)0xa4c, (q15_t)0x806b, + (q15_t)0xa33, (q15_t)0x8069, (q15_t)0xa19, (q15_t)0x8067, (q15_t)0xa00, (q15_t)0x8065, (q15_t)0x9e7, (q15_t)0x8063, + (q15_t)0x9ce, (q15_t)0x8061, (q15_t)0x9b5, (q15_t)0x805f, (q15_t)0x99c, (q15_t)0x805d, (q15_t)0x983, (q15_t)0x805b, + (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x951, (q15_t)0x8057, (q15_t)0x938, (q15_t)0x8056, (q15_t)0x91f, (q15_t)0x8054, + (q15_t)0x906, (q15_t)0x8052, (q15_t)0x8ed, (q15_t)0x8050, (q15_t)0x8d4, (q15_t)0x804f, (q15_t)0x8bb, (q15_t)0x804d, + (q15_t)0x8a2, (q15_t)0x804b, (q15_t)0x888, (q15_t)0x8049, (q15_t)0x86f, (q15_t)0x8048, (q15_t)0x856, (q15_t)0x8046, + (q15_t)0x83d, (q15_t)0x8044, (q15_t)0x824, (q15_t)0x8043, (q15_t)0x80b, (q15_t)0x8041, (q15_t)0x7f2, (q15_t)0x8040, + (q15_t)0x7d9, (q15_t)0x803e, (q15_t)0x7c0, (q15_t)0x803d, (q15_t)0x7a7, (q15_t)0x803b, (q15_t)0x78e, (q15_t)0x803a, + (q15_t)0x775, (q15_t)0x8038, (q15_t)0x75b, (q15_t)0x8037, (q15_t)0x742, (q15_t)0x8035, (q15_t)0x729, (q15_t)0x8034, + (q15_t)0x710, (q15_t)0x8032, (q15_t)0x6f7, (q15_t)0x8031, (q15_t)0x6de, (q15_t)0x8030, (q15_t)0x6c5, (q15_t)0x802e, + (q15_t)0x6ac, (q15_t)0x802d, (q15_t)0x693, (q15_t)0x802c, (q15_t)0x67a, (q15_t)0x802a, (q15_t)0x660, (q15_t)0x8029, + (q15_t)0x647, (q15_t)0x8028, (q15_t)0x62e, (q15_t)0x8027, (q15_t)0x615, (q15_t)0x8026, (q15_t)0x5fc, (q15_t)0x8024, + (q15_t)0x5e3, (q15_t)0x8023, (q15_t)0x5ca, (q15_t)0x8022, (q15_t)0x5b1, (q15_t)0x8021, (q15_t)0x598, (q15_t)0x8020, + (q15_t)0x57f, (q15_t)0x801f, (q15_t)0x565, (q15_t)0x801e, (q15_t)0x54c, (q15_t)0x801d, (q15_t)0x533, (q15_t)0x801c, + (q15_t)0x51a, (q15_t)0x801b, (q15_t)0x501, (q15_t)0x801a, (q15_t)0x4e8, (q15_t)0x8019, (q15_t)0x4cf, (q15_t)0x8018, + (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x49c, (q15_t)0x8016, (q15_t)0x483, (q15_t)0x8015, (q15_t)0x46a, (q15_t)0x8014, + (q15_t)0x451, (q15_t)0x8013, (q15_t)0x438, (q15_t)0x8012, (q15_t)0x41f, (q15_t)0x8012, (q15_t)0x406, (q15_t)0x8011, + (q15_t)0x3ed, (q15_t)0x8010, (q15_t)0x3d4, (q15_t)0x800f, (q15_t)0x3ba, (q15_t)0x800e, (q15_t)0x3a1, (q15_t)0x800e, + (q15_t)0x388, (q15_t)0x800d, (q15_t)0x36f, (q15_t)0x800c, (q15_t)0x356, (q15_t)0x800c, (q15_t)0x33d, (q15_t)0x800b, + (q15_t)0x324, (q15_t)0x800a, (q15_t)0x30b, (q15_t)0x800a, (q15_t)0x2f1, (q15_t)0x8009, (q15_t)0x2d8, (q15_t)0x8009, + (q15_t)0x2bf, (q15_t)0x8008, (q15_t)0x2a6, (q15_t)0x8008, (q15_t)0x28d, (q15_t)0x8007, (q15_t)0x274, (q15_t)0x8007, + (q15_t)0x25b, (q15_t)0x8006, (q15_t)0x242, (q15_t)0x8006, (q15_t)0x228, (q15_t)0x8005, (q15_t)0x20f, (q15_t)0x8005, + (q15_t)0x1f6, (q15_t)0x8004, (q15_t)0x1dd, (q15_t)0x8004, (q15_t)0x1c4, (q15_t)0x8004, (q15_t)0x1ab, (q15_t)0x8003, + (q15_t)0x192, (q15_t)0x8003, (q15_t)0x178, (q15_t)0x8003, (q15_t)0x15f, (q15_t)0x8002, (q15_t)0x146, (q15_t)0x8002, + (q15_t)0x12d, (q15_t)0x8002, (q15_t)0x114, (q15_t)0x8002, (q15_t)0xfb, (q15_t)0x8001, (q15_t)0xe2, (q15_t)0x8001, + (q15_t)0xc9, (q15_t)0x8001, (q15_t)0xaf, (q15_t)0x8001, (q15_t)0x96, (q15_t)0x8001, (q15_t)0x7d, (q15_t)0x8001, + (q15_t)0x64, (q15_t)0x8001, (q15_t)0x4b, (q15_t)0x8001, (q15_t)0x32, (q15_t)0x8001, (q15_t)0x19, (q15_t)0x8001 +}; + +static const q15_t ALIGN4 WeightsQ15_8192[16384] = { + (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xfffa, (q15_t)0x7fff, (q15_t)0xfff4, (q15_t)0x7fff, (q15_t)0xffee, + (q15_t)0x7fff, (q15_t)0xffe7, (q15_t)0x7fff, (q15_t)0xffe1, (q15_t)0x7fff, (q15_t)0xffdb, (q15_t)0x7fff, (q15_t)0xffd5, + (q15_t)0x7fff, (q15_t)0xffce, (q15_t)0x7fff, (q15_t)0xffc8, (q15_t)0x7fff, (q15_t)0xffc2, (q15_t)0x7fff, (q15_t)0xffbb, + (q15_t)0x7fff, (q15_t)0xffb5, (q15_t)0x7fff, (q15_t)0xffaf, (q15_t)0x7fff, (q15_t)0xffa9, (q15_t)0x7fff, (q15_t)0xffa2, + (q15_t)0x7fff, (q15_t)0xff9c, (q15_t)0x7fff, (q15_t)0xff96, (q15_t)0x7fff, (q15_t)0xff8f, (q15_t)0x7fff, (q15_t)0xff89, + (q15_t)0x7fff, (q15_t)0xff83, (q15_t)0x7fff, (q15_t)0xff7d, (q15_t)0x7fff, (q15_t)0xff76, (q15_t)0x7fff, (q15_t)0xff70, + (q15_t)0x7fff, (q15_t)0xff6a, (q15_t)0x7fff, (q15_t)0xff63, (q15_t)0x7fff, (q15_t)0xff5d, (q15_t)0x7fff, (q15_t)0xff57, + (q15_t)0x7fff, (q15_t)0xff51, (q15_t)0x7fff, (q15_t)0xff4a, (q15_t)0x7fff, (q15_t)0xff44, (q15_t)0x7fff, (q15_t)0xff3e, + (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7fff, (q15_t)0xff31, (q15_t)0x7fff, (q15_t)0xff2b, (q15_t)0x7fff, (q15_t)0xff25, + (q15_t)0x7fff, (q15_t)0xff1e, (q15_t)0x7fff, (q15_t)0xff18, (q15_t)0x7fff, (q15_t)0xff12, (q15_t)0x7fff, (q15_t)0xff0b, + (q15_t)0x7fff, (q15_t)0xff05, (q15_t)0x7ffe, (q15_t)0xfeff, (q15_t)0x7ffe, (q15_t)0xfef9, (q15_t)0x7ffe, (q15_t)0xfef2, + (q15_t)0x7ffe, (q15_t)0xfeec, (q15_t)0x7ffe, (q15_t)0xfee6, (q15_t)0x7ffe, (q15_t)0xfedf, (q15_t)0x7ffe, (q15_t)0xfed9, + (q15_t)0x7ffe, (q15_t)0xfed3, (q15_t)0x7ffe, (q15_t)0xfecd, (q15_t)0x7ffe, (q15_t)0xfec6, (q15_t)0x7ffe, (q15_t)0xfec0, + (q15_t)0x7ffe, (q15_t)0xfeba, (q15_t)0x7ffe, (q15_t)0xfeb3, (q15_t)0x7ffe, (q15_t)0xfead, (q15_t)0x7ffe, (q15_t)0xfea7, + (q15_t)0x7ffe, (q15_t)0xfea1, (q15_t)0x7ffe, (q15_t)0xfe9a, (q15_t)0x7ffd, (q15_t)0xfe94, (q15_t)0x7ffd, (q15_t)0xfe8e, + (q15_t)0x7ffd, (q15_t)0xfe88, (q15_t)0x7ffd, (q15_t)0xfe81, (q15_t)0x7ffd, (q15_t)0xfe7b, (q15_t)0x7ffd, (q15_t)0xfe75, + (q15_t)0x7ffd, (q15_t)0xfe6e, (q15_t)0x7ffd, (q15_t)0xfe68, (q15_t)0x7ffd, (q15_t)0xfe62, (q15_t)0x7ffd, (q15_t)0xfe5c, + (q15_t)0x7ffd, (q15_t)0xfe55, (q15_t)0x7ffd, (q15_t)0xfe4f, (q15_t)0x7ffd, (q15_t)0xfe49, (q15_t)0x7ffc, (q15_t)0xfe42, + (q15_t)0x7ffc, (q15_t)0xfe3c, (q15_t)0x7ffc, (q15_t)0xfe36, (q15_t)0x7ffc, (q15_t)0xfe30, (q15_t)0x7ffc, (q15_t)0xfe29, + (q15_t)0x7ffc, (q15_t)0xfe23, (q15_t)0x7ffc, (q15_t)0xfe1d, (q15_t)0x7ffc, (q15_t)0xfe16, (q15_t)0x7ffc, (q15_t)0xfe10, + (q15_t)0x7ffc, (q15_t)0xfe0a, (q15_t)0x7ffc, (q15_t)0xfe04, (q15_t)0x7ffb, (q15_t)0xfdfd, (q15_t)0x7ffb, (q15_t)0xfdf7, + (q15_t)0x7ffb, (q15_t)0xfdf1, (q15_t)0x7ffb, (q15_t)0xfdea, (q15_t)0x7ffb, (q15_t)0xfde4, (q15_t)0x7ffb, (q15_t)0xfdde, + (q15_t)0x7ffb, (q15_t)0xfdd8, (q15_t)0x7ffb, (q15_t)0xfdd1, (q15_t)0x7ffb, (q15_t)0xfdcb, (q15_t)0x7ffb, (q15_t)0xfdc5, + (q15_t)0x7ffa, (q15_t)0xfdbe, (q15_t)0x7ffa, (q15_t)0xfdb8, (q15_t)0x7ffa, (q15_t)0xfdb2, (q15_t)0x7ffa, (q15_t)0xfdac, + (q15_t)0x7ffa, (q15_t)0xfda5, (q15_t)0x7ffa, (q15_t)0xfd9f, (q15_t)0x7ffa, (q15_t)0xfd99, (q15_t)0x7ffa, (q15_t)0xfd93, + (q15_t)0x7ff9, (q15_t)0xfd8c, (q15_t)0x7ff9, (q15_t)0xfd86, (q15_t)0x7ff9, (q15_t)0xfd80, (q15_t)0x7ff9, (q15_t)0xfd79, + (q15_t)0x7ff9, (q15_t)0xfd73, (q15_t)0x7ff9, (q15_t)0xfd6d, (q15_t)0x7ff9, (q15_t)0xfd67, (q15_t)0x7ff9, (q15_t)0xfd60, + (q15_t)0x7ff8, (q15_t)0xfd5a, (q15_t)0x7ff8, (q15_t)0xfd54, (q15_t)0x7ff8, (q15_t)0xfd4d, (q15_t)0x7ff8, (q15_t)0xfd47, + (q15_t)0x7ff8, (q15_t)0xfd41, (q15_t)0x7ff8, (q15_t)0xfd3b, (q15_t)0x7ff8, (q15_t)0xfd34, (q15_t)0x7ff8, (q15_t)0xfd2e, + (q15_t)0x7ff7, (q15_t)0xfd28, (q15_t)0x7ff7, (q15_t)0xfd21, (q15_t)0x7ff7, (q15_t)0xfd1b, (q15_t)0x7ff7, (q15_t)0xfd15, + (q15_t)0x7ff7, (q15_t)0xfd0f, (q15_t)0x7ff7, (q15_t)0xfd08, (q15_t)0x7ff7, (q15_t)0xfd02, (q15_t)0x7ff6, (q15_t)0xfcfc, + (q15_t)0x7ff6, (q15_t)0xfcf5, (q15_t)0x7ff6, (q15_t)0xfcef, (q15_t)0x7ff6, (q15_t)0xfce9, (q15_t)0x7ff6, (q15_t)0xfce3, + (q15_t)0x7ff6, (q15_t)0xfcdc, (q15_t)0x7ff5, (q15_t)0xfcd6, (q15_t)0x7ff5, (q15_t)0xfcd0, (q15_t)0x7ff5, (q15_t)0xfcc9, + (q15_t)0x7ff5, (q15_t)0xfcc3, (q15_t)0x7ff5, (q15_t)0xfcbd, (q15_t)0x7ff5, (q15_t)0xfcb7, (q15_t)0x7ff5, (q15_t)0xfcb0, + (q15_t)0x7ff4, (q15_t)0xfcaa, (q15_t)0x7ff4, (q15_t)0xfca4, (q15_t)0x7ff4, (q15_t)0xfc9e, (q15_t)0x7ff4, (q15_t)0xfc97, + (q15_t)0x7ff4, (q15_t)0xfc91, (q15_t)0x7ff4, (q15_t)0xfc8b, (q15_t)0x7ff3, (q15_t)0xfc84, (q15_t)0x7ff3, (q15_t)0xfc7e, + (q15_t)0x7ff3, (q15_t)0xfc78, (q15_t)0x7ff3, (q15_t)0xfc72, (q15_t)0x7ff3, (q15_t)0xfc6b, (q15_t)0x7ff2, (q15_t)0xfc65, + (q15_t)0x7ff2, (q15_t)0xfc5f, (q15_t)0x7ff2, (q15_t)0xfc58, (q15_t)0x7ff2, (q15_t)0xfc52, (q15_t)0x7ff2, (q15_t)0xfc4c, + (q15_t)0x7ff2, (q15_t)0xfc46, (q15_t)0x7ff1, (q15_t)0xfc3f, (q15_t)0x7ff1, (q15_t)0xfc39, (q15_t)0x7ff1, (q15_t)0xfc33, + (q15_t)0x7ff1, (q15_t)0xfc2c, (q15_t)0x7ff1, (q15_t)0xfc26, (q15_t)0x7ff0, (q15_t)0xfc20, (q15_t)0x7ff0, (q15_t)0xfc1a, + (q15_t)0x7ff0, (q15_t)0xfc13, (q15_t)0x7ff0, (q15_t)0xfc0d, (q15_t)0x7ff0, (q15_t)0xfc07, (q15_t)0x7fef, (q15_t)0xfc01, + (q15_t)0x7fef, (q15_t)0xfbfa, (q15_t)0x7fef, (q15_t)0xfbf4, (q15_t)0x7fef, (q15_t)0xfbee, (q15_t)0x7fef, (q15_t)0xfbe7, + (q15_t)0x7fee, (q15_t)0xfbe1, (q15_t)0x7fee, (q15_t)0xfbdb, (q15_t)0x7fee, (q15_t)0xfbd5, (q15_t)0x7fee, (q15_t)0xfbce, + (q15_t)0x7fee, (q15_t)0xfbc8, (q15_t)0x7fed, (q15_t)0xfbc2, (q15_t)0x7fed, (q15_t)0xfbbb, (q15_t)0x7fed, (q15_t)0xfbb5, + (q15_t)0x7fed, (q15_t)0xfbaf, (q15_t)0x7fed, (q15_t)0xfba9, (q15_t)0x7fec, (q15_t)0xfba2, (q15_t)0x7fec, (q15_t)0xfb9c, + (q15_t)0x7fec, (q15_t)0xfb96, (q15_t)0x7fec, (q15_t)0xfb8f, (q15_t)0x7fec, (q15_t)0xfb89, (q15_t)0x7feb, (q15_t)0xfb83, + (q15_t)0x7feb, (q15_t)0xfb7d, (q15_t)0x7feb, (q15_t)0xfb76, (q15_t)0x7feb, (q15_t)0xfb70, (q15_t)0x7fea, (q15_t)0xfb6a, + (q15_t)0x7fea, (q15_t)0xfb64, (q15_t)0x7fea, (q15_t)0xfb5d, (q15_t)0x7fea, (q15_t)0xfb57, (q15_t)0x7fea, (q15_t)0xfb51, + (q15_t)0x7fe9, (q15_t)0xfb4a, (q15_t)0x7fe9, (q15_t)0xfb44, (q15_t)0x7fe9, (q15_t)0xfb3e, (q15_t)0x7fe9, (q15_t)0xfb38, + (q15_t)0x7fe8, (q15_t)0xfb31, (q15_t)0x7fe8, (q15_t)0xfb2b, (q15_t)0x7fe8, (q15_t)0xfb25, (q15_t)0x7fe8, (q15_t)0xfb1e, + (q15_t)0x7fe7, (q15_t)0xfb18, (q15_t)0x7fe7, (q15_t)0xfb12, (q15_t)0x7fe7, (q15_t)0xfb0c, (q15_t)0x7fe7, (q15_t)0xfb05, + (q15_t)0x7fe6, (q15_t)0xfaff, (q15_t)0x7fe6, (q15_t)0xfaf9, (q15_t)0x7fe6, (q15_t)0xfaf3, (q15_t)0x7fe6, (q15_t)0xfaec, + (q15_t)0x7fe5, (q15_t)0xfae6, (q15_t)0x7fe5, (q15_t)0xfae0, (q15_t)0x7fe5, (q15_t)0xfad9, (q15_t)0x7fe5, (q15_t)0xfad3, + (q15_t)0x7fe4, (q15_t)0xfacd, (q15_t)0x7fe4, (q15_t)0xfac7, (q15_t)0x7fe4, (q15_t)0xfac0, (q15_t)0x7fe4, (q15_t)0xfaba, + (q15_t)0x7fe3, (q15_t)0xfab4, (q15_t)0x7fe3, (q15_t)0xfaad, (q15_t)0x7fe3, (q15_t)0xfaa7, (q15_t)0x7fe3, (q15_t)0xfaa1, + (q15_t)0x7fe2, (q15_t)0xfa9b, (q15_t)0x7fe2, (q15_t)0xfa94, (q15_t)0x7fe2, (q15_t)0xfa8e, (q15_t)0x7fe2, (q15_t)0xfa88, + (q15_t)0x7fe1, (q15_t)0xfa81, (q15_t)0x7fe1, (q15_t)0xfa7b, (q15_t)0x7fe1, (q15_t)0xfa75, (q15_t)0x7fe0, (q15_t)0xfa6f, + (q15_t)0x7fe0, (q15_t)0xfa68, (q15_t)0x7fe0, (q15_t)0xfa62, (q15_t)0x7fe0, (q15_t)0xfa5c, (q15_t)0x7fdf, (q15_t)0xfa56, + (q15_t)0x7fdf, (q15_t)0xfa4f, (q15_t)0x7fdf, (q15_t)0xfa49, (q15_t)0x7fdf, (q15_t)0xfa43, (q15_t)0x7fde, (q15_t)0xfa3c, + (q15_t)0x7fde, (q15_t)0xfa36, (q15_t)0x7fde, (q15_t)0xfa30, (q15_t)0x7fdd, (q15_t)0xfa2a, (q15_t)0x7fdd, (q15_t)0xfa23, + (q15_t)0x7fdd, (q15_t)0xfa1d, (q15_t)0x7fdd, (q15_t)0xfa17, (q15_t)0x7fdc, (q15_t)0xfa11, (q15_t)0x7fdc, (q15_t)0xfa0a, + (q15_t)0x7fdc, (q15_t)0xfa04, (q15_t)0x7fdb, (q15_t)0xf9fe, (q15_t)0x7fdb, (q15_t)0xf9f7, (q15_t)0x7fdb, (q15_t)0xf9f1, + (q15_t)0x7fda, (q15_t)0xf9eb, (q15_t)0x7fda, (q15_t)0xf9e5, (q15_t)0x7fda, (q15_t)0xf9de, (q15_t)0x7fda, (q15_t)0xf9d8, + (q15_t)0x7fd9, (q15_t)0xf9d2, (q15_t)0x7fd9, (q15_t)0xf9cb, (q15_t)0x7fd9, (q15_t)0xf9c5, (q15_t)0x7fd8, (q15_t)0xf9bf, + (q15_t)0x7fd8, (q15_t)0xf9b9, (q15_t)0x7fd8, (q15_t)0xf9b2, (q15_t)0x7fd7, (q15_t)0xf9ac, (q15_t)0x7fd7, (q15_t)0xf9a6, + (q15_t)0x7fd7, (q15_t)0xf9a0, (q15_t)0x7fd6, (q15_t)0xf999, (q15_t)0x7fd6, (q15_t)0xf993, (q15_t)0x7fd6, (q15_t)0xf98d, + (q15_t)0x7fd6, (q15_t)0xf986, (q15_t)0x7fd5, (q15_t)0xf980, (q15_t)0x7fd5, (q15_t)0xf97a, (q15_t)0x7fd5, (q15_t)0xf974, + (q15_t)0x7fd4, (q15_t)0xf96d, (q15_t)0x7fd4, (q15_t)0xf967, (q15_t)0x7fd4, (q15_t)0xf961, (q15_t)0x7fd3, (q15_t)0xf95b, + (q15_t)0x7fd3, (q15_t)0xf954, (q15_t)0x7fd3, (q15_t)0xf94e, (q15_t)0x7fd2, (q15_t)0xf948, (q15_t)0x7fd2, (q15_t)0xf941, + (q15_t)0x7fd2, (q15_t)0xf93b, (q15_t)0x7fd1, (q15_t)0xf935, (q15_t)0x7fd1, (q15_t)0xf92f, (q15_t)0x7fd1, (q15_t)0xf928, + (q15_t)0x7fd0, (q15_t)0xf922, (q15_t)0x7fd0, (q15_t)0xf91c, (q15_t)0x7fd0, (q15_t)0xf916, (q15_t)0x7fcf, (q15_t)0xf90f, + (q15_t)0x7fcf, (q15_t)0xf909, (q15_t)0x7fcf, (q15_t)0xf903, (q15_t)0x7fce, (q15_t)0xf8fc, (q15_t)0x7fce, (q15_t)0xf8f6, + (q15_t)0x7fce, (q15_t)0xf8f0, (q15_t)0x7fcd, (q15_t)0xf8ea, (q15_t)0x7fcd, (q15_t)0xf8e3, (q15_t)0x7fcd, (q15_t)0xf8dd, + (q15_t)0x7fcc, (q15_t)0xf8d7, (q15_t)0x7fcc, (q15_t)0xf8d0, (q15_t)0x7fcb, (q15_t)0xf8ca, (q15_t)0x7fcb, (q15_t)0xf8c4, + (q15_t)0x7fcb, (q15_t)0xf8be, (q15_t)0x7fca, (q15_t)0xf8b7, (q15_t)0x7fca, (q15_t)0xf8b1, (q15_t)0x7fca, (q15_t)0xf8ab, + (q15_t)0x7fc9, (q15_t)0xf8a5, (q15_t)0x7fc9, (q15_t)0xf89e, (q15_t)0x7fc9, (q15_t)0xf898, (q15_t)0x7fc8, (q15_t)0xf892, + (q15_t)0x7fc8, (q15_t)0xf88b, (q15_t)0x7fc7, (q15_t)0xf885, (q15_t)0x7fc7, (q15_t)0xf87f, (q15_t)0x7fc7, (q15_t)0xf879, + (q15_t)0x7fc6, (q15_t)0xf872, (q15_t)0x7fc6, (q15_t)0xf86c, (q15_t)0x7fc6, (q15_t)0xf866, (q15_t)0x7fc5, (q15_t)0xf860, + (q15_t)0x7fc5, (q15_t)0xf859, (q15_t)0x7fc5, (q15_t)0xf853, (q15_t)0x7fc4, (q15_t)0xf84d, (q15_t)0x7fc4, (q15_t)0xf846, + (q15_t)0x7fc3, (q15_t)0xf840, (q15_t)0x7fc3, (q15_t)0xf83a, (q15_t)0x7fc3, (q15_t)0xf834, (q15_t)0x7fc2, (q15_t)0xf82d, + (q15_t)0x7fc2, (q15_t)0xf827, (q15_t)0x7fc1, (q15_t)0xf821, (q15_t)0x7fc1, (q15_t)0xf81b, (q15_t)0x7fc1, (q15_t)0xf814, + (q15_t)0x7fc0, (q15_t)0xf80e, (q15_t)0x7fc0, (q15_t)0xf808, (q15_t)0x7fc0, (q15_t)0xf802, (q15_t)0x7fbf, (q15_t)0xf7fb, + (q15_t)0x7fbf, (q15_t)0xf7f5, (q15_t)0x7fbe, (q15_t)0xf7ef, (q15_t)0x7fbe, (q15_t)0xf7e8, (q15_t)0x7fbe, (q15_t)0xf7e2, + (q15_t)0x7fbd, (q15_t)0xf7dc, (q15_t)0x7fbd, (q15_t)0xf7d6, (q15_t)0x7fbc, (q15_t)0xf7cf, (q15_t)0x7fbc, (q15_t)0xf7c9, + (q15_t)0x7fbc, (q15_t)0xf7c3, (q15_t)0x7fbb, (q15_t)0xf7bd, (q15_t)0x7fbb, (q15_t)0xf7b6, (q15_t)0x7fba, (q15_t)0xf7b0, + (q15_t)0x7fba, (q15_t)0xf7aa, (q15_t)0x7fb9, (q15_t)0xf7a3, (q15_t)0x7fb9, (q15_t)0xf79d, (q15_t)0x7fb9, (q15_t)0xf797, + (q15_t)0x7fb8, (q15_t)0xf791, (q15_t)0x7fb8, (q15_t)0xf78a, (q15_t)0x7fb7, (q15_t)0xf784, (q15_t)0x7fb7, (q15_t)0xf77e, + (q15_t)0x7fb7, (q15_t)0xf778, (q15_t)0x7fb6, (q15_t)0xf771, (q15_t)0x7fb6, (q15_t)0xf76b, (q15_t)0x7fb5, (q15_t)0xf765, + (q15_t)0x7fb5, (q15_t)0xf75e, (q15_t)0x7fb4, (q15_t)0xf758, (q15_t)0x7fb4, (q15_t)0xf752, (q15_t)0x7fb4, (q15_t)0xf74c, + (q15_t)0x7fb3, (q15_t)0xf745, (q15_t)0x7fb3, (q15_t)0xf73f, (q15_t)0x7fb2, (q15_t)0xf739, (q15_t)0x7fb2, (q15_t)0xf733, + (q15_t)0x7fb1, (q15_t)0xf72c, (q15_t)0x7fb1, (q15_t)0xf726, (q15_t)0x7fb1, (q15_t)0xf720, (q15_t)0x7fb0, (q15_t)0xf71a, + (q15_t)0x7fb0, (q15_t)0xf713, (q15_t)0x7faf, (q15_t)0xf70d, (q15_t)0x7faf, (q15_t)0xf707, (q15_t)0x7fae, (q15_t)0xf700, + (q15_t)0x7fae, (q15_t)0xf6fa, (q15_t)0x7fae, (q15_t)0xf6f4, (q15_t)0x7fad, (q15_t)0xf6ee, (q15_t)0x7fad, (q15_t)0xf6e7, + (q15_t)0x7fac, (q15_t)0xf6e1, (q15_t)0x7fac, (q15_t)0xf6db, (q15_t)0x7fab, (q15_t)0xf6d5, (q15_t)0x7fab, (q15_t)0xf6ce, + (q15_t)0x7faa, (q15_t)0xf6c8, (q15_t)0x7faa, (q15_t)0xf6c2, (q15_t)0x7fa9, (q15_t)0xf6bc, (q15_t)0x7fa9, (q15_t)0xf6b5, + (q15_t)0x7fa9, (q15_t)0xf6af, (q15_t)0x7fa8, (q15_t)0xf6a9, (q15_t)0x7fa8, (q15_t)0xf6a2, (q15_t)0x7fa7, (q15_t)0xf69c, + (q15_t)0x7fa7, (q15_t)0xf696, (q15_t)0x7fa6, (q15_t)0xf690, (q15_t)0x7fa6, (q15_t)0xf689, (q15_t)0x7fa5, (q15_t)0xf683, + (q15_t)0x7fa5, (q15_t)0xf67d, (q15_t)0x7fa4, (q15_t)0xf677, (q15_t)0x7fa4, (q15_t)0xf670, (q15_t)0x7fa3, (q15_t)0xf66a, + (q15_t)0x7fa3, (q15_t)0xf664, (q15_t)0x7fa3, (q15_t)0xf65e, (q15_t)0x7fa2, (q15_t)0xf657, (q15_t)0x7fa2, (q15_t)0xf651, + (q15_t)0x7fa1, (q15_t)0xf64b, (q15_t)0x7fa1, (q15_t)0xf644, (q15_t)0x7fa0, (q15_t)0xf63e, (q15_t)0x7fa0, (q15_t)0xf638, + (q15_t)0x7f9f, (q15_t)0xf632, (q15_t)0x7f9f, (q15_t)0xf62b, (q15_t)0x7f9e, (q15_t)0xf625, (q15_t)0x7f9e, (q15_t)0xf61f, + (q15_t)0x7f9d, (q15_t)0xf619, (q15_t)0x7f9d, (q15_t)0xf612, (q15_t)0x7f9c, (q15_t)0xf60c, (q15_t)0x7f9c, (q15_t)0xf606, + (q15_t)0x7f9b, (q15_t)0xf600, (q15_t)0x7f9b, (q15_t)0xf5f9, (q15_t)0x7f9a, (q15_t)0xf5f3, (q15_t)0x7f9a, (q15_t)0xf5ed, + (q15_t)0x7f99, (q15_t)0xf5e7, (q15_t)0x7f99, (q15_t)0xf5e0, (q15_t)0x7f98, (q15_t)0xf5da, (q15_t)0x7f98, (q15_t)0xf5d4, + (q15_t)0x7f97, (q15_t)0xf5cd, (q15_t)0x7f97, (q15_t)0xf5c7, (q15_t)0x7f96, (q15_t)0xf5c1, (q15_t)0x7f96, (q15_t)0xf5bb, + (q15_t)0x7f95, (q15_t)0xf5b4, (q15_t)0x7f95, (q15_t)0xf5ae, (q15_t)0x7f94, (q15_t)0xf5a8, (q15_t)0x7f94, (q15_t)0xf5a2, + (q15_t)0x7f93, (q15_t)0xf59b, (q15_t)0x7f93, (q15_t)0xf595, (q15_t)0x7f92, (q15_t)0xf58f, (q15_t)0x7f92, (q15_t)0xf589, + (q15_t)0x7f91, (q15_t)0xf582, (q15_t)0x7f91, (q15_t)0xf57c, (q15_t)0x7f90, (q15_t)0xf576, (q15_t)0x7f90, (q15_t)0xf570, + (q15_t)0x7f8f, (q15_t)0xf569, (q15_t)0x7f8f, (q15_t)0xf563, (q15_t)0x7f8e, (q15_t)0xf55d, (q15_t)0x7f8e, (q15_t)0xf556, + (q15_t)0x7f8d, (q15_t)0xf550, (q15_t)0x7f8d, (q15_t)0xf54a, (q15_t)0x7f8c, (q15_t)0xf544, (q15_t)0x7f8b, (q15_t)0xf53d, + (q15_t)0x7f8b, (q15_t)0xf537, (q15_t)0x7f8a, (q15_t)0xf531, (q15_t)0x7f8a, (q15_t)0xf52b, (q15_t)0x7f89, (q15_t)0xf524, + (q15_t)0x7f89, (q15_t)0xf51e, (q15_t)0x7f88, (q15_t)0xf518, (q15_t)0x7f88, (q15_t)0xf512, (q15_t)0x7f87, (q15_t)0xf50b, + (q15_t)0x7f87, (q15_t)0xf505, (q15_t)0x7f86, (q15_t)0xf4ff, (q15_t)0x7f86, (q15_t)0xf4f9, (q15_t)0x7f85, (q15_t)0xf4f2, + (q15_t)0x7f85, (q15_t)0xf4ec, (q15_t)0x7f84, (q15_t)0xf4e6, (q15_t)0x7f83, (q15_t)0xf4e0, (q15_t)0x7f83, (q15_t)0xf4d9, + (q15_t)0x7f82, (q15_t)0xf4d3, (q15_t)0x7f82, (q15_t)0xf4cd, (q15_t)0x7f81, (q15_t)0xf4c6, (q15_t)0x7f81, (q15_t)0xf4c0, + (q15_t)0x7f80, (q15_t)0xf4ba, (q15_t)0x7f80, (q15_t)0xf4b4, (q15_t)0x7f7f, (q15_t)0xf4ad, (q15_t)0x7f7e, (q15_t)0xf4a7, + (q15_t)0x7f7e, (q15_t)0xf4a1, (q15_t)0x7f7d, (q15_t)0xf49b, (q15_t)0x7f7d, (q15_t)0xf494, (q15_t)0x7f7c, (q15_t)0xf48e, + (q15_t)0x7f7c, (q15_t)0xf488, (q15_t)0x7f7b, (q15_t)0xf482, (q15_t)0x7f7b, (q15_t)0xf47b, (q15_t)0x7f7a, (q15_t)0xf475, + (q15_t)0x7f79, (q15_t)0xf46f, (q15_t)0x7f79, (q15_t)0xf469, (q15_t)0x7f78, (q15_t)0xf462, (q15_t)0x7f78, (q15_t)0xf45c, + (q15_t)0x7f77, (q15_t)0xf456, (q15_t)0x7f77, (q15_t)0xf450, (q15_t)0x7f76, (q15_t)0xf449, (q15_t)0x7f75, (q15_t)0xf443, + (q15_t)0x7f75, (q15_t)0xf43d, (q15_t)0x7f74, (q15_t)0xf437, (q15_t)0x7f74, (q15_t)0xf430, (q15_t)0x7f73, (q15_t)0xf42a, + (q15_t)0x7f72, (q15_t)0xf424, (q15_t)0x7f72, (q15_t)0xf41e, (q15_t)0x7f71, (q15_t)0xf417, (q15_t)0x7f71, (q15_t)0xf411, + (q15_t)0x7f70, (q15_t)0xf40b, (q15_t)0x7f70, (q15_t)0xf405, (q15_t)0x7f6f, (q15_t)0xf3fe, (q15_t)0x7f6e, (q15_t)0xf3f8, + (q15_t)0x7f6e, (q15_t)0xf3f2, (q15_t)0x7f6d, (q15_t)0xf3ec, (q15_t)0x7f6d, (q15_t)0xf3e5, (q15_t)0x7f6c, (q15_t)0xf3df, + (q15_t)0x7f6b, (q15_t)0xf3d9, (q15_t)0x7f6b, (q15_t)0xf3d2, (q15_t)0x7f6a, (q15_t)0xf3cc, (q15_t)0x7f6a, (q15_t)0xf3c6, + (q15_t)0x7f69, (q15_t)0xf3c0, (q15_t)0x7f68, (q15_t)0xf3b9, (q15_t)0x7f68, (q15_t)0xf3b3, (q15_t)0x7f67, (q15_t)0xf3ad, + (q15_t)0x7f67, (q15_t)0xf3a7, (q15_t)0x7f66, (q15_t)0xf3a0, (q15_t)0x7f65, (q15_t)0xf39a, (q15_t)0x7f65, (q15_t)0xf394, + (q15_t)0x7f64, (q15_t)0xf38e, (q15_t)0x7f64, (q15_t)0xf387, (q15_t)0x7f63, (q15_t)0xf381, (q15_t)0x7f62, (q15_t)0xf37b, + (q15_t)0x7f62, (q15_t)0xf375, (q15_t)0x7f61, (q15_t)0xf36e, (q15_t)0x7f60, (q15_t)0xf368, (q15_t)0x7f60, (q15_t)0xf362, + (q15_t)0x7f5f, (q15_t)0xf35c, (q15_t)0x7f5f, (q15_t)0xf355, (q15_t)0x7f5e, (q15_t)0xf34f, (q15_t)0x7f5d, (q15_t)0xf349, + (q15_t)0x7f5d, (q15_t)0xf343, (q15_t)0x7f5c, (q15_t)0xf33c, (q15_t)0x7f5b, (q15_t)0xf336, (q15_t)0x7f5b, (q15_t)0xf330, + (q15_t)0x7f5a, (q15_t)0xf32a, (q15_t)0x7f5a, (q15_t)0xf323, (q15_t)0x7f59, (q15_t)0xf31d, (q15_t)0x7f58, (q15_t)0xf317, + (q15_t)0x7f58, (q15_t)0xf311, (q15_t)0x7f57, (q15_t)0xf30a, (q15_t)0x7f56, (q15_t)0xf304, (q15_t)0x7f56, (q15_t)0xf2fe, + (q15_t)0x7f55, (q15_t)0xf2f8, (q15_t)0x7f55, (q15_t)0xf2f1, (q15_t)0x7f54, (q15_t)0xf2eb, (q15_t)0x7f53, (q15_t)0xf2e5, + (q15_t)0x7f53, (q15_t)0xf2df, (q15_t)0x7f52, (q15_t)0xf2d8, (q15_t)0x7f51, (q15_t)0xf2d2, (q15_t)0x7f51, (q15_t)0xf2cc, + (q15_t)0x7f50, (q15_t)0xf2c6, (q15_t)0x7f4f, (q15_t)0xf2bf, (q15_t)0x7f4f, (q15_t)0xf2b9, (q15_t)0x7f4e, (q15_t)0xf2b3, + (q15_t)0x7f4d, (q15_t)0xf2ad, (q15_t)0x7f4d, (q15_t)0xf2a6, (q15_t)0x7f4c, (q15_t)0xf2a0, (q15_t)0x7f4b, (q15_t)0xf29a, + (q15_t)0x7f4b, (q15_t)0xf294, (q15_t)0x7f4a, (q15_t)0xf28d, (q15_t)0x7f49, (q15_t)0xf287, (q15_t)0x7f49, (q15_t)0xf281, + (q15_t)0x7f48, (q15_t)0xf27b, (q15_t)0x7f47, (q15_t)0xf274, (q15_t)0x7f47, (q15_t)0xf26e, (q15_t)0x7f46, (q15_t)0xf268, + (q15_t)0x7f45, (q15_t)0xf262, (q15_t)0x7f45, (q15_t)0xf25b, (q15_t)0x7f44, (q15_t)0xf255, (q15_t)0x7f43, (q15_t)0xf24f, + (q15_t)0x7f43, (q15_t)0xf249, (q15_t)0x7f42, (q15_t)0xf242, (q15_t)0x7f41, (q15_t)0xf23c, (q15_t)0x7f41, (q15_t)0xf236, + (q15_t)0x7f40, (q15_t)0xf230, (q15_t)0x7f3f, (q15_t)0xf229, (q15_t)0x7f3f, (q15_t)0xf223, (q15_t)0x7f3e, (q15_t)0xf21d, + (q15_t)0x7f3d, (q15_t)0xf217, (q15_t)0x7f3d, (q15_t)0xf210, (q15_t)0x7f3c, (q15_t)0xf20a, (q15_t)0x7f3b, (q15_t)0xf204, + (q15_t)0x7f3b, (q15_t)0xf1fe, (q15_t)0x7f3a, (q15_t)0xf1f7, (q15_t)0x7f39, (q15_t)0xf1f1, (q15_t)0x7f39, (q15_t)0xf1eb, + (q15_t)0x7f38, (q15_t)0xf1e5, (q15_t)0x7f37, (q15_t)0xf1de, (q15_t)0x7f36, (q15_t)0xf1d8, (q15_t)0x7f36, (q15_t)0xf1d2, + (q15_t)0x7f35, (q15_t)0xf1cc, (q15_t)0x7f34, (q15_t)0xf1c6, (q15_t)0x7f34, (q15_t)0xf1bf, (q15_t)0x7f33, (q15_t)0xf1b9, + (q15_t)0x7f32, (q15_t)0xf1b3, (q15_t)0x7f32, (q15_t)0xf1ad, (q15_t)0x7f31, (q15_t)0xf1a6, (q15_t)0x7f30, (q15_t)0xf1a0, + (q15_t)0x7f2f, (q15_t)0xf19a, (q15_t)0x7f2f, (q15_t)0xf194, (q15_t)0x7f2e, (q15_t)0xf18d, (q15_t)0x7f2d, (q15_t)0xf187, + (q15_t)0x7f2d, (q15_t)0xf181, (q15_t)0x7f2c, (q15_t)0xf17b, (q15_t)0x7f2b, (q15_t)0xf174, (q15_t)0x7f2a, (q15_t)0xf16e, + (q15_t)0x7f2a, (q15_t)0xf168, (q15_t)0x7f29, (q15_t)0xf162, (q15_t)0x7f28, (q15_t)0xf15b, (q15_t)0x7f28, (q15_t)0xf155, + (q15_t)0x7f27, (q15_t)0xf14f, (q15_t)0x7f26, (q15_t)0xf149, (q15_t)0x7f25, (q15_t)0xf142, (q15_t)0x7f25, (q15_t)0xf13c, + (q15_t)0x7f24, (q15_t)0xf136, (q15_t)0x7f23, (q15_t)0xf130, (q15_t)0x7f23, (q15_t)0xf129, (q15_t)0x7f22, (q15_t)0xf123, + (q15_t)0x7f21, (q15_t)0xf11d, (q15_t)0x7f20, (q15_t)0xf117, (q15_t)0x7f20, (q15_t)0xf110, (q15_t)0x7f1f, (q15_t)0xf10a, + (q15_t)0x7f1e, (q15_t)0xf104, (q15_t)0x7f1d, (q15_t)0xf0fe, (q15_t)0x7f1d, (q15_t)0xf0f8, (q15_t)0x7f1c, (q15_t)0xf0f1, + (q15_t)0x7f1b, (q15_t)0xf0eb, (q15_t)0x7f1a, (q15_t)0xf0e5, (q15_t)0x7f1a, (q15_t)0xf0df, (q15_t)0x7f19, (q15_t)0xf0d8, + (q15_t)0x7f18, (q15_t)0xf0d2, (q15_t)0x7f17, (q15_t)0xf0cc, (q15_t)0x7f17, (q15_t)0xf0c6, (q15_t)0x7f16, (q15_t)0xf0bf, + (q15_t)0x7f15, (q15_t)0xf0b9, (q15_t)0x7f14, (q15_t)0xf0b3, (q15_t)0x7f14, (q15_t)0xf0ad, (q15_t)0x7f13, (q15_t)0xf0a6, + (q15_t)0x7f12, (q15_t)0xf0a0, (q15_t)0x7f11, (q15_t)0xf09a, (q15_t)0x7f11, (q15_t)0xf094, (q15_t)0x7f10, (q15_t)0xf08d, + (q15_t)0x7f0f, (q15_t)0xf087, (q15_t)0x7f0e, (q15_t)0xf081, (q15_t)0x7f0e, (q15_t)0xf07b, (q15_t)0x7f0d, (q15_t)0xf075, + (q15_t)0x7f0c, (q15_t)0xf06e, (q15_t)0x7f0b, (q15_t)0xf068, (q15_t)0x7f0b, (q15_t)0xf062, (q15_t)0x7f0a, (q15_t)0xf05c, + (q15_t)0x7f09, (q15_t)0xf055, (q15_t)0x7f08, (q15_t)0xf04f, (q15_t)0x7f08, (q15_t)0xf049, (q15_t)0x7f07, (q15_t)0xf043, + (q15_t)0x7f06, (q15_t)0xf03c, (q15_t)0x7f05, (q15_t)0xf036, (q15_t)0x7f04, (q15_t)0xf030, (q15_t)0x7f04, (q15_t)0xf02a, + (q15_t)0x7f03, (q15_t)0xf023, (q15_t)0x7f02, (q15_t)0xf01d, (q15_t)0x7f01, (q15_t)0xf017, (q15_t)0x7f01, (q15_t)0xf011, + (q15_t)0x7f00, (q15_t)0xf00b, (q15_t)0x7eff, (q15_t)0xf004, (q15_t)0x7efe, (q15_t)0xeffe, (q15_t)0x7efd, (q15_t)0xeff8, + (q15_t)0x7efd, (q15_t)0xeff2, (q15_t)0x7efc, (q15_t)0xefeb, (q15_t)0x7efb, (q15_t)0xefe5, (q15_t)0x7efa, (q15_t)0xefdf, + (q15_t)0x7ef9, (q15_t)0xefd9, (q15_t)0x7ef9, (q15_t)0xefd2, (q15_t)0x7ef8, (q15_t)0xefcc, (q15_t)0x7ef7, (q15_t)0xefc6, + (q15_t)0x7ef6, (q15_t)0xefc0, (q15_t)0x7ef5, (q15_t)0xefb9, (q15_t)0x7ef5, (q15_t)0xefb3, (q15_t)0x7ef4, (q15_t)0xefad, + (q15_t)0x7ef3, (q15_t)0xefa7, (q15_t)0x7ef2, (q15_t)0xefa1, (q15_t)0x7ef1, (q15_t)0xef9a, (q15_t)0x7ef1, (q15_t)0xef94, + (q15_t)0x7ef0, (q15_t)0xef8e, (q15_t)0x7eef, (q15_t)0xef88, (q15_t)0x7eee, (q15_t)0xef81, (q15_t)0x7eed, (q15_t)0xef7b, + (q15_t)0x7eed, (q15_t)0xef75, (q15_t)0x7eec, (q15_t)0xef6f, (q15_t)0x7eeb, (q15_t)0xef68, (q15_t)0x7eea, (q15_t)0xef62, + (q15_t)0x7ee9, (q15_t)0xef5c, (q15_t)0x7ee9, (q15_t)0xef56, (q15_t)0x7ee8, (q15_t)0xef50, (q15_t)0x7ee7, (q15_t)0xef49, + (q15_t)0x7ee6, (q15_t)0xef43, (q15_t)0x7ee5, (q15_t)0xef3d, (q15_t)0x7ee4, (q15_t)0xef37, (q15_t)0x7ee4, (q15_t)0xef30, + (q15_t)0x7ee3, (q15_t)0xef2a, (q15_t)0x7ee2, (q15_t)0xef24, (q15_t)0x7ee1, (q15_t)0xef1e, (q15_t)0x7ee0, (q15_t)0xef18, + (q15_t)0x7edf, (q15_t)0xef11, (q15_t)0x7edf, (q15_t)0xef0b, (q15_t)0x7ede, (q15_t)0xef05, (q15_t)0x7edd, (q15_t)0xeeff, + (q15_t)0x7edc, (q15_t)0xeef8, (q15_t)0x7edb, (q15_t)0xeef2, (q15_t)0x7eda, (q15_t)0xeeec, (q15_t)0x7eda, (q15_t)0xeee6, + (q15_t)0x7ed9, (q15_t)0xeedf, (q15_t)0x7ed8, (q15_t)0xeed9, (q15_t)0x7ed7, (q15_t)0xeed3, (q15_t)0x7ed6, (q15_t)0xeecd, + (q15_t)0x7ed5, (q15_t)0xeec7, (q15_t)0x7ed5, (q15_t)0xeec0, (q15_t)0x7ed4, (q15_t)0xeeba, (q15_t)0x7ed3, (q15_t)0xeeb4, + (q15_t)0x7ed2, (q15_t)0xeeae, (q15_t)0x7ed1, (q15_t)0xeea7, (q15_t)0x7ed0, (q15_t)0xeea1, (q15_t)0x7ecf, (q15_t)0xee9b, + (q15_t)0x7ecf, (q15_t)0xee95, (q15_t)0x7ece, (q15_t)0xee8f, (q15_t)0x7ecd, (q15_t)0xee88, (q15_t)0x7ecc, (q15_t)0xee82, + (q15_t)0x7ecb, (q15_t)0xee7c, (q15_t)0x7eca, (q15_t)0xee76, (q15_t)0x7ec9, (q15_t)0xee6f, (q15_t)0x7ec9, (q15_t)0xee69, + (q15_t)0x7ec8, (q15_t)0xee63, (q15_t)0x7ec7, (q15_t)0xee5d, (q15_t)0x7ec6, (q15_t)0xee57, (q15_t)0x7ec5, (q15_t)0xee50, + (q15_t)0x7ec4, (q15_t)0xee4a, (q15_t)0x7ec3, (q15_t)0xee44, (q15_t)0x7ec3, (q15_t)0xee3e, (q15_t)0x7ec2, (q15_t)0xee37, + (q15_t)0x7ec1, (q15_t)0xee31, (q15_t)0x7ec0, (q15_t)0xee2b, (q15_t)0x7ebf, (q15_t)0xee25, (q15_t)0x7ebe, (q15_t)0xee1f, + (q15_t)0x7ebd, (q15_t)0xee18, (q15_t)0x7ebc, (q15_t)0xee12, (q15_t)0x7ebb, (q15_t)0xee0c, (q15_t)0x7ebb, (q15_t)0xee06, + (q15_t)0x7eba, (q15_t)0xedff, (q15_t)0x7eb9, (q15_t)0xedf9, (q15_t)0x7eb8, (q15_t)0xedf3, (q15_t)0x7eb7, (q15_t)0xeded, + (q15_t)0x7eb6, (q15_t)0xede7, (q15_t)0x7eb5, (q15_t)0xede0, (q15_t)0x7eb4, (q15_t)0xedda, (q15_t)0x7eb4, (q15_t)0xedd4, + (q15_t)0x7eb3, (q15_t)0xedce, (q15_t)0x7eb2, (q15_t)0xedc7, (q15_t)0x7eb1, (q15_t)0xedc1, (q15_t)0x7eb0, (q15_t)0xedbb, + (q15_t)0x7eaf, (q15_t)0xedb5, (q15_t)0x7eae, (q15_t)0xedaf, (q15_t)0x7ead, (q15_t)0xeda8, (q15_t)0x7eac, (q15_t)0xeda2, + (q15_t)0x7eab, (q15_t)0xed9c, (q15_t)0x7eab, (q15_t)0xed96, (q15_t)0x7eaa, (q15_t)0xed8f, (q15_t)0x7ea9, (q15_t)0xed89, + (q15_t)0x7ea8, (q15_t)0xed83, (q15_t)0x7ea7, (q15_t)0xed7d, (q15_t)0x7ea6, (q15_t)0xed77, (q15_t)0x7ea5, (q15_t)0xed70, + (q15_t)0x7ea4, (q15_t)0xed6a, (q15_t)0x7ea3, (q15_t)0xed64, (q15_t)0x7ea2, (q15_t)0xed5e, (q15_t)0x7ea1, (q15_t)0xed58, + (q15_t)0x7ea1, (q15_t)0xed51, (q15_t)0x7ea0, (q15_t)0xed4b, (q15_t)0x7e9f, (q15_t)0xed45, (q15_t)0x7e9e, (q15_t)0xed3f, + (q15_t)0x7e9d, (q15_t)0xed38, (q15_t)0x7e9c, (q15_t)0xed32, (q15_t)0x7e9b, (q15_t)0xed2c, (q15_t)0x7e9a, (q15_t)0xed26, + (q15_t)0x7e99, (q15_t)0xed20, (q15_t)0x7e98, (q15_t)0xed19, (q15_t)0x7e97, (q15_t)0xed13, (q15_t)0x7e96, (q15_t)0xed0d, + (q15_t)0x7e95, (q15_t)0xed07, (q15_t)0x7e94, (q15_t)0xed01, (q15_t)0x7e94, (q15_t)0xecfa, (q15_t)0x7e93, (q15_t)0xecf4, + (q15_t)0x7e92, (q15_t)0xecee, (q15_t)0x7e91, (q15_t)0xece8, (q15_t)0x7e90, (q15_t)0xece1, (q15_t)0x7e8f, (q15_t)0xecdb, + (q15_t)0x7e8e, (q15_t)0xecd5, (q15_t)0x7e8d, (q15_t)0xeccf, (q15_t)0x7e8c, (q15_t)0xecc9, (q15_t)0x7e8b, (q15_t)0xecc2, + (q15_t)0x7e8a, (q15_t)0xecbc, (q15_t)0x7e89, (q15_t)0xecb6, (q15_t)0x7e88, (q15_t)0xecb0, (q15_t)0x7e87, (q15_t)0xecaa, + (q15_t)0x7e86, (q15_t)0xeca3, (q15_t)0x7e85, (q15_t)0xec9d, (q15_t)0x7e84, (q15_t)0xec97, (q15_t)0x7e84, (q15_t)0xec91, + (q15_t)0x7e83, (q15_t)0xec8a, (q15_t)0x7e82, (q15_t)0xec84, (q15_t)0x7e81, (q15_t)0xec7e, (q15_t)0x7e80, (q15_t)0xec78, + (q15_t)0x7e7f, (q15_t)0xec72, (q15_t)0x7e7e, (q15_t)0xec6b, (q15_t)0x7e7d, (q15_t)0xec65, (q15_t)0x7e7c, (q15_t)0xec5f, + (q15_t)0x7e7b, (q15_t)0xec59, (q15_t)0x7e7a, (q15_t)0xec53, (q15_t)0x7e79, (q15_t)0xec4c, (q15_t)0x7e78, (q15_t)0xec46, + (q15_t)0x7e77, (q15_t)0xec40, (q15_t)0x7e76, (q15_t)0xec3a, (q15_t)0x7e75, (q15_t)0xec34, (q15_t)0x7e74, (q15_t)0xec2d, + (q15_t)0x7e73, (q15_t)0xec27, (q15_t)0x7e72, (q15_t)0xec21, (q15_t)0x7e71, (q15_t)0xec1b, (q15_t)0x7e70, (q15_t)0xec15, + (q15_t)0x7e6f, (q15_t)0xec0e, (q15_t)0x7e6e, (q15_t)0xec08, (q15_t)0x7e6d, (q15_t)0xec02, (q15_t)0x7e6c, (q15_t)0xebfc, + (q15_t)0x7e6b, (q15_t)0xebf5, (q15_t)0x7e6a, (q15_t)0xebef, (q15_t)0x7e69, (q15_t)0xebe9, (q15_t)0x7e68, (q15_t)0xebe3, + (q15_t)0x7e67, (q15_t)0xebdd, (q15_t)0x7e66, (q15_t)0xebd6, (q15_t)0x7e65, (q15_t)0xebd0, (q15_t)0x7e64, (q15_t)0xebca, + (q15_t)0x7e63, (q15_t)0xebc4, (q15_t)0x7e62, (q15_t)0xebbe, (q15_t)0x7e61, (q15_t)0xebb7, (q15_t)0x7e60, (q15_t)0xebb1, + (q15_t)0x7e5f, (q15_t)0xebab, (q15_t)0x7e5e, (q15_t)0xeba5, (q15_t)0x7e5d, (q15_t)0xeb9f, (q15_t)0x7e5c, (q15_t)0xeb98, + (q15_t)0x7e5b, (q15_t)0xeb92, (q15_t)0x7e5a, (q15_t)0xeb8c, (q15_t)0x7e59, (q15_t)0xeb86, (q15_t)0x7e58, (q15_t)0xeb80, + (q15_t)0x7e57, (q15_t)0xeb79, (q15_t)0x7e56, (q15_t)0xeb73, (q15_t)0x7e55, (q15_t)0xeb6d, (q15_t)0x7e54, (q15_t)0xeb67, + (q15_t)0x7e53, (q15_t)0xeb61, (q15_t)0x7e52, (q15_t)0xeb5a, (q15_t)0x7e51, (q15_t)0xeb54, (q15_t)0x7e50, (q15_t)0xeb4e, + (q15_t)0x7e4f, (q15_t)0xeb48, (q15_t)0x7e4e, (q15_t)0xeb42, (q15_t)0x7e4d, (q15_t)0xeb3b, (q15_t)0x7e4c, (q15_t)0xeb35, + (q15_t)0x7e4b, (q15_t)0xeb2f, (q15_t)0x7e4a, (q15_t)0xeb29, (q15_t)0x7e49, (q15_t)0xeb23, (q15_t)0x7e48, (q15_t)0xeb1c, + (q15_t)0x7e47, (q15_t)0xeb16, (q15_t)0x7e46, (q15_t)0xeb10, (q15_t)0x7e45, (q15_t)0xeb0a, (q15_t)0x7e44, (q15_t)0xeb04, + (q15_t)0x7e43, (q15_t)0xeafd, (q15_t)0x7e42, (q15_t)0xeaf7, (q15_t)0x7e41, (q15_t)0xeaf1, (q15_t)0x7e40, (q15_t)0xeaeb, + (q15_t)0x7e3f, (q15_t)0xeae5, (q15_t)0x7e3e, (q15_t)0xeade, (q15_t)0x7e3d, (q15_t)0xead8, (q15_t)0x7e3c, (q15_t)0xead2, + (q15_t)0x7e3b, (q15_t)0xeacc, (q15_t)0x7e3a, (q15_t)0xeac6, (q15_t)0x7e39, (q15_t)0xeabf, (q15_t)0x7e38, (q15_t)0xeab9, + (q15_t)0x7e37, (q15_t)0xeab3, (q15_t)0x7e35, (q15_t)0xeaad, (q15_t)0x7e34, (q15_t)0xeaa7, (q15_t)0x7e33, (q15_t)0xeaa0, + (q15_t)0x7e32, (q15_t)0xea9a, (q15_t)0x7e31, (q15_t)0xea94, (q15_t)0x7e30, (q15_t)0xea8e, (q15_t)0x7e2f, (q15_t)0xea88, + (q15_t)0x7e2e, (q15_t)0xea81, (q15_t)0x7e2d, (q15_t)0xea7b, (q15_t)0x7e2c, (q15_t)0xea75, (q15_t)0x7e2b, (q15_t)0xea6f, + (q15_t)0x7e2a, (q15_t)0xea69, (q15_t)0x7e29, (q15_t)0xea63, (q15_t)0x7e28, (q15_t)0xea5c, (q15_t)0x7e27, (q15_t)0xea56, + (q15_t)0x7e26, (q15_t)0xea50, (q15_t)0x7e25, (q15_t)0xea4a, (q15_t)0x7e24, (q15_t)0xea44, (q15_t)0x7e22, (q15_t)0xea3d, + (q15_t)0x7e21, (q15_t)0xea37, (q15_t)0x7e20, (q15_t)0xea31, (q15_t)0x7e1f, (q15_t)0xea2b, (q15_t)0x7e1e, (q15_t)0xea25, + (q15_t)0x7e1d, (q15_t)0xea1e, (q15_t)0x7e1c, (q15_t)0xea18, (q15_t)0x7e1b, (q15_t)0xea12, (q15_t)0x7e1a, (q15_t)0xea0c, + (q15_t)0x7e19, (q15_t)0xea06, (q15_t)0x7e18, (q15_t)0xe9ff, (q15_t)0x7e17, (q15_t)0xe9f9, (q15_t)0x7e16, (q15_t)0xe9f3, + (q15_t)0x7e14, (q15_t)0xe9ed, (q15_t)0x7e13, (q15_t)0xe9e7, (q15_t)0x7e12, (q15_t)0xe9e1, (q15_t)0x7e11, (q15_t)0xe9da, + (q15_t)0x7e10, (q15_t)0xe9d4, (q15_t)0x7e0f, (q15_t)0xe9ce, (q15_t)0x7e0e, (q15_t)0xe9c8, (q15_t)0x7e0d, (q15_t)0xe9c2, + (q15_t)0x7e0c, (q15_t)0xe9bb, (q15_t)0x7e0b, (q15_t)0xe9b5, (q15_t)0x7e0a, (q15_t)0xe9af, (q15_t)0x7e08, (q15_t)0xe9a9, + (q15_t)0x7e07, (q15_t)0xe9a3, (q15_t)0x7e06, (q15_t)0xe99c, (q15_t)0x7e05, (q15_t)0xe996, (q15_t)0x7e04, (q15_t)0xe990, + (q15_t)0x7e03, (q15_t)0xe98a, (q15_t)0x7e02, (q15_t)0xe984, (q15_t)0x7e01, (q15_t)0xe97e, (q15_t)0x7e00, (q15_t)0xe977, + (q15_t)0x7dff, (q15_t)0xe971, (q15_t)0x7dfd, (q15_t)0xe96b, (q15_t)0x7dfc, (q15_t)0xe965, (q15_t)0x7dfb, (q15_t)0xe95f, + (q15_t)0x7dfa, (q15_t)0xe958, (q15_t)0x7df9, (q15_t)0xe952, (q15_t)0x7df8, (q15_t)0xe94c, (q15_t)0x7df7, (q15_t)0xe946, + (q15_t)0x7df6, (q15_t)0xe940, (q15_t)0x7df5, (q15_t)0xe93a, (q15_t)0x7df3, (q15_t)0xe933, (q15_t)0x7df2, (q15_t)0xe92d, + (q15_t)0x7df1, (q15_t)0xe927, (q15_t)0x7df0, (q15_t)0xe921, (q15_t)0x7def, (q15_t)0xe91b, (q15_t)0x7dee, (q15_t)0xe914, + (q15_t)0x7ded, (q15_t)0xe90e, (q15_t)0x7dec, (q15_t)0xe908, (q15_t)0x7dea, (q15_t)0xe902, (q15_t)0x7de9, (q15_t)0xe8fc, + (q15_t)0x7de8, (q15_t)0xe8f6, (q15_t)0x7de7, (q15_t)0xe8ef, (q15_t)0x7de6, (q15_t)0xe8e9, (q15_t)0x7de5, (q15_t)0xe8e3, + (q15_t)0x7de4, (q15_t)0xe8dd, (q15_t)0x7de2, (q15_t)0xe8d7, (q15_t)0x7de1, (q15_t)0xe8d0, (q15_t)0x7de0, (q15_t)0xe8ca, + (q15_t)0x7ddf, (q15_t)0xe8c4, (q15_t)0x7dde, (q15_t)0xe8be, (q15_t)0x7ddd, (q15_t)0xe8b8, (q15_t)0x7ddc, (q15_t)0xe8b2, + (q15_t)0x7dda, (q15_t)0xe8ab, (q15_t)0x7dd9, (q15_t)0xe8a5, (q15_t)0x7dd8, (q15_t)0xe89f, (q15_t)0x7dd7, (q15_t)0xe899, + (q15_t)0x7dd6, (q15_t)0xe893, (q15_t)0x7dd5, (q15_t)0xe88c, (q15_t)0x7dd4, (q15_t)0xe886, (q15_t)0x7dd2, (q15_t)0xe880, + (q15_t)0x7dd1, (q15_t)0xe87a, (q15_t)0x7dd0, (q15_t)0xe874, (q15_t)0x7dcf, (q15_t)0xe86e, (q15_t)0x7dce, (q15_t)0xe867, + (q15_t)0x7dcd, (q15_t)0xe861, (q15_t)0x7dcc, (q15_t)0xe85b, (q15_t)0x7dca, (q15_t)0xe855, (q15_t)0x7dc9, (q15_t)0xe84f, + (q15_t)0x7dc8, (q15_t)0xe849, (q15_t)0x7dc7, (q15_t)0xe842, (q15_t)0x7dc6, (q15_t)0xe83c, (q15_t)0x7dc5, (q15_t)0xe836, + (q15_t)0x7dc3, (q15_t)0xe830, (q15_t)0x7dc2, (q15_t)0xe82a, (q15_t)0x7dc1, (q15_t)0xe823, (q15_t)0x7dc0, (q15_t)0xe81d, + (q15_t)0x7dbf, (q15_t)0xe817, (q15_t)0x7dbd, (q15_t)0xe811, (q15_t)0x7dbc, (q15_t)0xe80b, (q15_t)0x7dbb, (q15_t)0xe805, + (q15_t)0x7dba, (q15_t)0xe7fe, (q15_t)0x7db9, (q15_t)0xe7f8, (q15_t)0x7db8, (q15_t)0xe7f2, (q15_t)0x7db6, (q15_t)0xe7ec, + (q15_t)0x7db5, (q15_t)0xe7e6, (q15_t)0x7db4, (q15_t)0xe7e0, (q15_t)0x7db3, (q15_t)0xe7d9, (q15_t)0x7db2, (q15_t)0xe7d3, + (q15_t)0x7db0, (q15_t)0xe7cd, (q15_t)0x7daf, (q15_t)0xe7c7, (q15_t)0x7dae, (q15_t)0xe7c1, (q15_t)0x7dad, (q15_t)0xe7bb, + (q15_t)0x7dac, (q15_t)0xe7b4, (q15_t)0x7dab, (q15_t)0xe7ae, (q15_t)0x7da9, (q15_t)0xe7a8, (q15_t)0x7da8, (q15_t)0xe7a2, + (q15_t)0x7da7, (q15_t)0xe79c, (q15_t)0x7da6, (q15_t)0xe796, (q15_t)0x7da5, (q15_t)0xe78f, (q15_t)0x7da3, (q15_t)0xe789, + (q15_t)0x7da2, (q15_t)0xe783, (q15_t)0x7da1, (q15_t)0xe77d, (q15_t)0x7da0, (q15_t)0xe777, (q15_t)0x7d9f, (q15_t)0xe771, + (q15_t)0x7d9d, (q15_t)0xe76a, (q15_t)0x7d9c, (q15_t)0xe764, (q15_t)0x7d9b, (q15_t)0xe75e, (q15_t)0x7d9a, (q15_t)0xe758, + (q15_t)0x7d98, (q15_t)0xe752, (q15_t)0x7d97, (q15_t)0xe74c, (q15_t)0x7d96, (q15_t)0xe745, (q15_t)0x7d95, (q15_t)0xe73f, + (q15_t)0x7d94, (q15_t)0xe739, (q15_t)0x7d92, (q15_t)0xe733, (q15_t)0x7d91, (q15_t)0xe72d, (q15_t)0x7d90, (q15_t)0xe727, + (q15_t)0x7d8f, (q15_t)0xe720, (q15_t)0x7d8e, (q15_t)0xe71a, (q15_t)0x7d8c, (q15_t)0xe714, (q15_t)0x7d8b, (q15_t)0xe70e, + (q15_t)0x7d8a, (q15_t)0xe708, (q15_t)0x7d89, (q15_t)0xe702, (q15_t)0x7d87, (q15_t)0xe6fb, (q15_t)0x7d86, (q15_t)0xe6f5, + (q15_t)0x7d85, (q15_t)0xe6ef, (q15_t)0x7d84, (q15_t)0xe6e9, (q15_t)0x7d82, (q15_t)0xe6e3, (q15_t)0x7d81, (q15_t)0xe6dd, + (q15_t)0x7d80, (q15_t)0xe6d6, (q15_t)0x7d7f, (q15_t)0xe6d0, (q15_t)0x7d7e, (q15_t)0xe6ca, (q15_t)0x7d7c, (q15_t)0xe6c4, + (q15_t)0x7d7b, (q15_t)0xe6be, (q15_t)0x7d7a, (q15_t)0xe6b8, (q15_t)0x7d79, (q15_t)0xe6b2, (q15_t)0x7d77, (q15_t)0xe6ab, + (q15_t)0x7d76, (q15_t)0xe6a5, (q15_t)0x7d75, (q15_t)0xe69f, (q15_t)0x7d74, (q15_t)0xe699, (q15_t)0x7d72, (q15_t)0xe693, + (q15_t)0x7d71, (q15_t)0xe68d, (q15_t)0x7d70, (q15_t)0xe686, (q15_t)0x7d6f, (q15_t)0xe680, (q15_t)0x7d6d, (q15_t)0xe67a, + (q15_t)0x7d6c, (q15_t)0xe674, (q15_t)0x7d6b, (q15_t)0xe66e, (q15_t)0x7d6a, (q15_t)0xe668, (q15_t)0x7d68, (q15_t)0xe661, + (q15_t)0x7d67, (q15_t)0xe65b, (q15_t)0x7d66, (q15_t)0xe655, (q15_t)0x7d65, (q15_t)0xe64f, (q15_t)0x7d63, (q15_t)0xe649, + (q15_t)0x7d62, (q15_t)0xe643, (q15_t)0x7d61, (q15_t)0xe63d, (q15_t)0x7d60, (q15_t)0xe636, (q15_t)0x7d5e, (q15_t)0xe630, + (q15_t)0x7d5d, (q15_t)0xe62a, (q15_t)0x7d5c, (q15_t)0xe624, (q15_t)0x7d5a, (q15_t)0xe61e, (q15_t)0x7d59, (q15_t)0xe618, + (q15_t)0x7d58, (q15_t)0xe611, (q15_t)0x7d57, (q15_t)0xe60b, (q15_t)0x7d55, (q15_t)0xe605, (q15_t)0x7d54, (q15_t)0xe5ff, + (q15_t)0x7d53, (q15_t)0xe5f9, (q15_t)0x7d52, (q15_t)0xe5f3, (q15_t)0x7d50, (q15_t)0xe5ed, (q15_t)0x7d4f, (q15_t)0xe5e6, + (q15_t)0x7d4e, (q15_t)0xe5e0, (q15_t)0x7d4c, (q15_t)0xe5da, (q15_t)0x7d4b, (q15_t)0xe5d4, (q15_t)0x7d4a, (q15_t)0xe5ce, + (q15_t)0x7d49, (q15_t)0xe5c8, (q15_t)0x7d47, (q15_t)0xe5c2, (q15_t)0x7d46, (q15_t)0xe5bb, (q15_t)0x7d45, (q15_t)0xe5b5, + (q15_t)0x7d43, (q15_t)0xe5af, (q15_t)0x7d42, (q15_t)0xe5a9, (q15_t)0x7d41, (q15_t)0xe5a3, (q15_t)0x7d3f, (q15_t)0xe59d, + (q15_t)0x7d3e, (q15_t)0xe596, (q15_t)0x7d3d, (q15_t)0xe590, (q15_t)0x7d3c, (q15_t)0xe58a, (q15_t)0x7d3a, (q15_t)0xe584, + (q15_t)0x7d39, (q15_t)0xe57e, (q15_t)0x7d38, (q15_t)0xe578, (q15_t)0x7d36, (q15_t)0xe572, (q15_t)0x7d35, (q15_t)0xe56b, + (q15_t)0x7d34, (q15_t)0xe565, (q15_t)0x7d32, (q15_t)0xe55f, (q15_t)0x7d31, (q15_t)0xe559, (q15_t)0x7d30, (q15_t)0xe553, + (q15_t)0x7d2f, (q15_t)0xe54d, (q15_t)0x7d2d, (q15_t)0xe547, (q15_t)0x7d2c, (q15_t)0xe540, (q15_t)0x7d2b, (q15_t)0xe53a, + (q15_t)0x7d29, (q15_t)0xe534, (q15_t)0x7d28, (q15_t)0xe52e, (q15_t)0x7d27, (q15_t)0xe528, (q15_t)0x7d25, (q15_t)0xe522, + (q15_t)0x7d24, (q15_t)0xe51c, (q15_t)0x7d23, (q15_t)0xe515, (q15_t)0x7d21, (q15_t)0xe50f, (q15_t)0x7d20, (q15_t)0xe509, + (q15_t)0x7d1f, (q15_t)0xe503, (q15_t)0x7d1d, (q15_t)0xe4fd, (q15_t)0x7d1c, (q15_t)0xe4f7, (q15_t)0x7d1b, (q15_t)0xe4f1, + (q15_t)0x7d19, (q15_t)0xe4ea, (q15_t)0x7d18, (q15_t)0xe4e4, (q15_t)0x7d17, (q15_t)0xe4de, (q15_t)0x7d15, (q15_t)0xe4d8, + (q15_t)0x7d14, (q15_t)0xe4d2, (q15_t)0x7d13, (q15_t)0xe4cc, (q15_t)0x7d11, (q15_t)0xe4c6, (q15_t)0x7d10, (q15_t)0xe4bf, + (q15_t)0x7d0f, (q15_t)0xe4b9, (q15_t)0x7d0d, (q15_t)0xe4b3, (q15_t)0x7d0c, (q15_t)0xe4ad, (q15_t)0x7d0b, (q15_t)0xe4a7, + (q15_t)0x7d09, (q15_t)0xe4a1, (q15_t)0x7d08, (q15_t)0xe49b, (q15_t)0x7d07, (q15_t)0xe494, (q15_t)0x7d05, (q15_t)0xe48e, + (q15_t)0x7d04, (q15_t)0xe488, (q15_t)0x7d03, (q15_t)0xe482, (q15_t)0x7d01, (q15_t)0xe47c, (q15_t)0x7d00, (q15_t)0xe476, + (q15_t)0x7cff, (q15_t)0xe470, (q15_t)0x7cfd, (q15_t)0xe46a, (q15_t)0x7cfc, (q15_t)0xe463, (q15_t)0x7cfb, (q15_t)0xe45d, + (q15_t)0x7cf9, (q15_t)0xe457, (q15_t)0x7cf8, (q15_t)0xe451, (q15_t)0x7cf6, (q15_t)0xe44b, (q15_t)0x7cf5, (q15_t)0xe445, + (q15_t)0x7cf4, (q15_t)0xe43f, (q15_t)0x7cf2, (q15_t)0xe438, (q15_t)0x7cf1, (q15_t)0xe432, (q15_t)0x7cf0, (q15_t)0xe42c, + (q15_t)0x7cee, (q15_t)0xe426, (q15_t)0x7ced, (q15_t)0xe420, (q15_t)0x7cec, (q15_t)0xe41a, (q15_t)0x7cea, (q15_t)0xe414, + (q15_t)0x7ce9, (q15_t)0xe40e, (q15_t)0x7ce7, (q15_t)0xe407, (q15_t)0x7ce6, (q15_t)0xe401, (q15_t)0x7ce5, (q15_t)0xe3fb, + (q15_t)0x7ce3, (q15_t)0xe3f5, (q15_t)0x7ce2, (q15_t)0xe3ef, (q15_t)0x7ce1, (q15_t)0xe3e9, (q15_t)0x7cdf, (q15_t)0xe3e3, + (q15_t)0x7cde, (q15_t)0xe3dc, (q15_t)0x7cdc, (q15_t)0xe3d6, (q15_t)0x7cdb, (q15_t)0xe3d0, (q15_t)0x7cda, (q15_t)0xe3ca, + (q15_t)0x7cd8, (q15_t)0xe3c4, (q15_t)0x7cd7, (q15_t)0xe3be, (q15_t)0x7cd5, (q15_t)0xe3b8, (q15_t)0x7cd4, (q15_t)0xe3b2, + (q15_t)0x7cd3, (q15_t)0xe3ab, (q15_t)0x7cd1, (q15_t)0xe3a5, (q15_t)0x7cd0, (q15_t)0xe39f, (q15_t)0x7ccf, (q15_t)0xe399, + (q15_t)0x7ccd, (q15_t)0xe393, (q15_t)0x7ccc, (q15_t)0xe38d, (q15_t)0x7cca, (q15_t)0xe387, (q15_t)0x7cc9, (q15_t)0xe381, + (q15_t)0x7cc8, (q15_t)0xe37a, (q15_t)0x7cc6, (q15_t)0xe374, (q15_t)0x7cc5, (q15_t)0xe36e, (q15_t)0x7cc3, (q15_t)0xe368, + (q15_t)0x7cc2, (q15_t)0xe362, (q15_t)0x7cc1, (q15_t)0xe35c, (q15_t)0x7cbf, (q15_t)0xe356, (q15_t)0x7cbe, (q15_t)0xe350, + (q15_t)0x7cbc, (q15_t)0xe349, (q15_t)0x7cbb, (q15_t)0xe343, (q15_t)0x7cb9, (q15_t)0xe33d, (q15_t)0x7cb8, (q15_t)0xe337, + (q15_t)0x7cb7, (q15_t)0xe331, (q15_t)0x7cb5, (q15_t)0xe32b, (q15_t)0x7cb4, (q15_t)0xe325, (q15_t)0x7cb2, (q15_t)0xe31f, + (q15_t)0x7cb1, (q15_t)0xe318, (q15_t)0x7cb0, (q15_t)0xe312, (q15_t)0x7cae, (q15_t)0xe30c, (q15_t)0x7cad, (q15_t)0xe306, + (q15_t)0x7cab, (q15_t)0xe300, (q15_t)0x7caa, (q15_t)0xe2fa, (q15_t)0x7ca8, (q15_t)0xe2f4, (q15_t)0x7ca7, (q15_t)0xe2ee, + (q15_t)0x7ca6, (q15_t)0xe2e8, (q15_t)0x7ca4, (q15_t)0xe2e1, (q15_t)0x7ca3, (q15_t)0xe2db, (q15_t)0x7ca1, (q15_t)0xe2d5, + (q15_t)0x7ca0, (q15_t)0xe2cf, (q15_t)0x7c9e, (q15_t)0xe2c9, (q15_t)0x7c9d, (q15_t)0xe2c3, (q15_t)0x7c9c, (q15_t)0xe2bd, + (q15_t)0x7c9a, (q15_t)0xe2b7, (q15_t)0x7c99, (q15_t)0xe2b0, (q15_t)0x7c97, (q15_t)0xe2aa, (q15_t)0x7c96, (q15_t)0xe2a4, + (q15_t)0x7c94, (q15_t)0xe29e, (q15_t)0x7c93, (q15_t)0xe298, (q15_t)0x7c91, (q15_t)0xe292, (q15_t)0x7c90, (q15_t)0xe28c, + (q15_t)0x7c8f, (q15_t)0xe286, (q15_t)0x7c8d, (q15_t)0xe280, (q15_t)0x7c8c, (q15_t)0xe279, (q15_t)0x7c8a, (q15_t)0xe273, + (q15_t)0x7c89, (q15_t)0xe26d, (q15_t)0x7c87, (q15_t)0xe267, (q15_t)0x7c86, (q15_t)0xe261, (q15_t)0x7c84, (q15_t)0xe25b, + (q15_t)0x7c83, (q15_t)0xe255, (q15_t)0x7c82, (q15_t)0xe24f, (q15_t)0x7c80, (q15_t)0xe249, (q15_t)0x7c7f, (q15_t)0xe242, + (q15_t)0x7c7d, (q15_t)0xe23c, (q15_t)0x7c7c, (q15_t)0xe236, (q15_t)0x7c7a, (q15_t)0xe230, (q15_t)0x7c79, (q15_t)0xe22a, + (q15_t)0x7c77, (q15_t)0xe224, (q15_t)0x7c76, (q15_t)0xe21e, (q15_t)0x7c74, (q15_t)0xe218, (q15_t)0x7c73, (q15_t)0xe212, + (q15_t)0x7c71, (q15_t)0xe20b, (q15_t)0x7c70, (q15_t)0xe205, (q15_t)0x7c6e, (q15_t)0xe1ff, (q15_t)0x7c6d, (q15_t)0xe1f9, + (q15_t)0x7c6c, (q15_t)0xe1f3, (q15_t)0x7c6a, (q15_t)0xe1ed, (q15_t)0x7c69, (q15_t)0xe1e7, (q15_t)0x7c67, (q15_t)0xe1e1, + (q15_t)0x7c66, (q15_t)0xe1db, (q15_t)0x7c64, (q15_t)0xe1d4, (q15_t)0x7c63, (q15_t)0xe1ce, (q15_t)0x7c61, (q15_t)0xe1c8, + (q15_t)0x7c60, (q15_t)0xe1c2, (q15_t)0x7c5e, (q15_t)0xe1bc, (q15_t)0x7c5d, (q15_t)0xe1b6, (q15_t)0x7c5b, (q15_t)0xe1b0, + (q15_t)0x7c5a, (q15_t)0xe1aa, (q15_t)0x7c58, (q15_t)0xe1a4, (q15_t)0x7c57, (q15_t)0xe19e, (q15_t)0x7c55, (q15_t)0xe197, + (q15_t)0x7c54, (q15_t)0xe191, (q15_t)0x7c52, (q15_t)0xe18b, (q15_t)0x7c51, (q15_t)0xe185, (q15_t)0x7c4f, (q15_t)0xe17f, + (q15_t)0x7c4e, (q15_t)0xe179, (q15_t)0x7c4c, (q15_t)0xe173, (q15_t)0x7c4b, (q15_t)0xe16d, (q15_t)0x7c49, (q15_t)0xe167, + (q15_t)0x7c48, (q15_t)0xe160, (q15_t)0x7c46, (q15_t)0xe15a, (q15_t)0x7c45, (q15_t)0xe154, (q15_t)0x7c43, (q15_t)0xe14e, + (q15_t)0x7c42, (q15_t)0xe148, (q15_t)0x7c40, (q15_t)0xe142, (q15_t)0x7c3f, (q15_t)0xe13c, (q15_t)0x7c3d, (q15_t)0xe136, + (q15_t)0x7c3c, (q15_t)0xe130, (q15_t)0x7c3a, (q15_t)0xe12a, (q15_t)0x7c39, (q15_t)0xe123, (q15_t)0x7c37, (q15_t)0xe11d, + (q15_t)0x7c36, (q15_t)0xe117, (q15_t)0x7c34, (q15_t)0xe111, (q15_t)0x7c33, (q15_t)0xe10b, (q15_t)0x7c31, (q15_t)0xe105, + (q15_t)0x7c30, (q15_t)0xe0ff, (q15_t)0x7c2e, (q15_t)0xe0f9, (q15_t)0x7c2d, (q15_t)0xe0f3, (q15_t)0x7c2b, (q15_t)0xe0ed, + (q15_t)0x7c29, (q15_t)0xe0e7, (q15_t)0x7c28, (q15_t)0xe0e0, (q15_t)0x7c26, (q15_t)0xe0da, (q15_t)0x7c25, (q15_t)0xe0d4, + (q15_t)0x7c23, (q15_t)0xe0ce, (q15_t)0x7c22, (q15_t)0xe0c8, (q15_t)0x7c20, (q15_t)0xe0c2, (q15_t)0x7c1f, (q15_t)0xe0bc, + (q15_t)0x7c1d, (q15_t)0xe0b6, (q15_t)0x7c1c, (q15_t)0xe0b0, (q15_t)0x7c1a, (q15_t)0xe0aa, (q15_t)0x7c19, (q15_t)0xe0a3, + (q15_t)0x7c17, (q15_t)0xe09d, (q15_t)0x7c16, (q15_t)0xe097, (q15_t)0x7c14, (q15_t)0xe091, (q15_t)0x7c12, (q15_t)0xe08b, + (q15_t)0x7c11, (q15_t)0xe085, (q15_t)0x7c0f, (q15_t)0xe07f, (q15_t)0x7c0e, (q15_t)0xe079, (q15_t)0x7c0c, (q15_t)0xe073, + (q15_t)0x7c0b, (q15_t)0xe06d, (q15_t)0x7c09, (q15_t)0xe067, (q15_t)0x7c08, (q15_t)0xe061, (q15_t)0x7c06, (q15_t)0xe05a, + (q15_t)0x7c05, (q15_t)0xe054, (q15_t)0x7c03, (q15_t)0xe04e, (q15_t)0x7c01, (q15_t)0xe048, (q15_t)0x7c00, (q15_t)0xe042, + (q15_t)0x7bfe, (q15_t)0xe03c, (q15_t)0x7bfd, (q15_t)0xe036, (q15_t)0x7bfb, (q15_t)0xe030, (q15_t)0x7bfa, (q15_t)0xe02a, + (q15_t)0x7bf8, (q15_t)0xe024, (q15_t)0x7bf6, (q15_t)0xe01e, (q15_t)0x7bf5, (q15_t)0xe017, (q15_t)0x7bf3, (q15_t)0xe011, + (q15_t)0x7bf2, (q15_t)0xe00b, (q15_t)0x7bf0, (q15_t)0xe005, (q15_t)0x7bef, (q15_t)0xdfff, (q15_t)0x7bed, (q15_t)0xdff9, + (q15_t)0x7beb, (q15_t)0xdff3, (q15_t)0x7bea, (q15_t)0xdfed, (q15_t)0x7be8, (q15_t)0xdfe7, (q15_t)0x7be7, (q15_t)0xdfe1, + (q15_t)0x7be5, (q15_t)0xdfdb, (q15_t)0x7be4, (q15_t)0xdfd5, (q15_t)0x7be2, (q15_t)0xdfce, (q15_t)0x7be0, (q15_t)0xdfc8, + (q15_t)0x7bdf, (q15_t)0xdfc2, (q15_t)0x7bdd, (q15_t)0xdfbc, (q15_t)0x7bdc, (q15_t)0xdfb6, (q15_t)0x7bda, (q15_t)0xdfb0, + (q15_t)0x7bd9, (q15_t)0xdfaa, (q15_t)0x7bd7, (q15_t)0xdfa4, (q15_t)0x7bd5, (q15_t)0xdf9e, (q15_t)0x7bd4, (q15_t)0xdf98, + (q15_t)0x7bd2, (q15_t)0xdf92, (q15_t)0x7bd1, (q15_t)0xdf8c, (q15_t)0x7bcf, (q15_t)0xdf86, (q15_t)0x7bcd, (q15_t)0xdf7f, + (q15_t)0x7bcc, (q15_t)0xdf79, (q15_t)0x7bca, (q15_t)0xdf73, (q15_t)0x7bc9, (q15_t)0xdf6d, (q15_t)0x7bc7, (q15_t)0xdf67, + (q15_t)0x7bc5, (q15_t)0xdf61, (q15_t)0x7bc4, (q15_t)0xdf5b, (q15_t)0x7bc2, (q15_t)0xdf55, (q15_t)0x7bc1, (q15_t)0xdf4f, + (q15_t)0x7bbf, (q15_t)0xdf49, (q15_t)0x7bbd, (q15_t)0xdf43, (q15_t)0x7bbc, (q15_t)0xdf3d, (q15_t)0x7bba, (q15_t)0xdf37, + (q15_t)0x7bb9, (q15_t)0xdf30, (q15_t)0x7bb7, (q15_t)0xdf2a, (q15_t)0x7bb5, (q15_t)0xdf24, (q15_t)0x7bb4, (q15_t)0xdf1e, + (q15_t)0x7bb2, (q15_t)0xdf18, (q15_t)0x7bb0, (q15_t)0xdf12, (q15_t)0x7baf, (q15_t)0xdf0c, (q15_t)0x7bad, (q15_t)0xdf06, + (q15_t)0x7bac, (q15_t)0xdf00, (q15_t)0x7baa, (q15_t)0xdefa, (q15_t)0x7ba8, (q15_t)0xdef4, (q15_t)0x7ba7, (q15_t)0xdeee, + (q15_t)0x7ba5, (q15_t)0xdee8, (q15_t)0x7ba3, (q15_t)0xdee2, (q15_t)0x7ba2, (q15_t)0xdedb, (q15_t)0x7ba0, (q15_t)0xded5, + (q15_t)0x7b9f, (q15_t)0xdecf, (q15_t)0x7b9d, (q15_t)0xdec9, (q15_t)0x7b9b, (q15_t)0xdec3, (q15_t)0x7b9a, (q15_t)0xdebd, + (q15_t)0x7b98, (q15_t)0xdeb7, (q15_t)0x7b96, (q15_t)0xdeb1, (q15_t)0x7b95, (q15_t)0xdeab, (q15_t)0x7b93, (q15_t)0xdea5, + (q15_t)0x7b92, (q15_t)0xde9f, (q15_t)0x7b90, (q15_t)0xde99, (q15_t)0x7b8e, (q15_t)0xde93, (q15_t)0x7b8d, (q15_t)0xde8d, + (q15_t)0x7b8b, (q15_t)0xde87, (q15_t)0x7b89, (q15_t)0xde80, (q15_t)0x7b88, (q15_t)0xde7a, (q15_t)0x7b86, (q15_t)0xde74, + (q15_t)0x7b84, (q15_t)0xde6e, (q15_t)0x7b83, (q15_t)0xde68, (q15_t)0x7b81, (q15_t)0xde62, (q15_t)0x7b7f, (q15_t)0xde5c, + (q15_t)0x7b7e, (q15_t)0xde56, (q15_t)0x7b7c, (q15_t)0xde50, (q15_t)0x7b7a, (q15_t)0xde4a, (q15_t)0x7b79, (q15_t)0xde44, + (q15_t)0x7b77, (q15_t)0xde3e, (q15_t)0x7b76, (q15_t)0xde38, (q15_t)0x7b74, (q15_t)0xde32, (q15_t)0x7b72, (q15_t)0xde2c, + (q15_t)0x7b71, (q15_t)0xde26, (q15_t)0x7b6f, (q15_t)0xde1f, (q15_t)0x7b6d, (q15_t)0xde19, (q15_t)0x7b6c, (q15_t)0xde13, + (q15_t)0x7b6a, (q15_t)0xde0d, (q15_t)0x7b68, (q15_t)0xde07, (q15_t)0x7b67, (q15_t)0xde01, (q15_t)0x7b65, (q15_t)0xddfb, + (q15_t)0x7b63, (q15_t)0xddf5, (q15_t)0x7b62, (q15_t)0xddef, (q15_t)0x7b60, (q15_t)0xdde9, (q15_t)0x7b5e, (q15_t)0xdde3, + (q15_t)0x7b5d, (q15_t)0xdddd, (q15_t)0x7b5b, (q15_t)0xddd7, (q15_t)0x7b59, (q15_t)0xddd1, (q15_t)0x7b57, (q15_t)0xddcb, + (q15_t)0x7b56, (q15_t)0xddc5, (q15_t)0x7b54, (q15_t)0xddbf, (q15_t)0x7b52, (q15_t)0xddb9, (q15_t)0x7b51, (q15_t)0xddb2, + (q15_t)0x7b4f, (q15_t)0xddac, (q15_t)0x7b4d, (q15_t)0xdda6, (q15_t)0x7b4c, (q15_t)0xdda0, (q15_t)0x7b4a, (q15_t)0xdd9a, + (q15_t)0x7b48, (q15_t)0xdd94, (q15_t)0x7b47, (q15_t)0xdd8e, (q15_t)0x7b45, (q15_t)0xdd88, (q15_t)0x7b43, (q15_t)0xdd82, + (q15_t)0x7b42, (q15_t)0xdd7c, (q15_t)0x7b40, (q15_t)0xdd76, (q15_t)0x7b3e, (q15_t)0xdd70, (q15_t)0x7b3c, (q15_t)0xdd6a, + (q15_t)0x7b3b, (q15_t)0xdd64, (q15_t)0x7b39, (q15_t)0xdd5e, (q15_t)0x7b37, (q15_t)0xdd58, (q15_t)0x7b36, (q15_t)0xdd52, + (q15_t)0x7b34, (q15_t)0xdd4c, (q15_t)0x7b32, (q15_t)0xdd46, (q15_t)0x7b31, (q15_t)0xdd40, (q15_t)0x7b2f, (q15_t)0xdd39, + (q15_t)0x7b2d, (q15_t)0xdd33, (q15_t)0x7b2b, (q15_t)0xdd2d, (q15_t)0x7b2a, (q15_t)0xdd27, (q15_t)0x7b28, (q15_t)0xdd21, + (q15_t)0x7b26, (q15_t)0xdd1b, (q15_t)0x7b25, (q15_t)0xdd15, (q15_t)0x7b23, (q15_t)0xdd0f, (q15_t)0x7b21, (q15_t)0xdd09, + (q15_t)0x7b1f, (q15_t)0xdd03, (q15_t)0x7b1e, (q15_t)0xdcfd, (q15_t)0x7b1c, (q15_t)0xdcf7, (q15_t)0x7b1a, (q15_t)0xdcf1, + (q15_t)0x7b19, (q15_t)0xdceb, (q15_t)0x7b17, (q15_t)0xdce5, (q15_t)0x7b15, (q15_t)0xdcdf, (q15_t)0x7b13, (q15_t)0xdcd9, + (q15_t)0x7b12, (q15_t)0xdcd3, (q15_t)0x7b10, (q15_t)0xdccd, (q15_t)0x7b0e, (q15_t)0xdcc7, (q15_t)0x7b0c, (q15_t)0xdcc1, + (q15_t)0x7b0b, (q15_t)0xdcbb, (q15_t)0x7b09, (q15_t)0xdcb5, (q15_t)0x7b07, (q15_t)0xdcae, (q15_t)0x7b06, (q15_t)0xdca8, + (q15_t)0x7b04, (q15_t)0xdca2, (q15_t)0x7b02, (q15_t)0xdc9c, (q15_t)0x7b00, (q15_t)0xdc96, (q15_t)0x7aff, (q15_t)0xdc90, + (q15_t)0x7afd, (q15_t)0xdc8a, (q15_t)0x7afb, (q15_t)0xdc84, (q15_t)0x7af9, (q15_t)0xdc7e, (q15_t)0x7af8, (q15_t)0xdc78, + (q15_t)0x7af6, (q15_t)0xdc72, (q15_t)0x7af4, (q15_t)0xdc6c, (q15_t)0x7af2, (q15_t)0xdc66, (q15_t)0x7af1, (q15_t)0xdc60, + (q15_t)0x7aef, (q15_t)0xdc5a, (q15_t)0x7aed, (q15_t)0xdc54, (q15_t)0x7aeb, (q15_t)0xdc4e, (q15_t)0x7aea, (q15_t)0xdc48, + (q15_t)0x7ae8, (q15_t)0xdc42, (q15_t)0x7ae6, (q15_t)0xdc3c, (q15_t)0x7ae4, (q15_t)0xdc36, (q15_t)0x7ae3, (q15_t)0xdc30, + (q15_t)0x7ae1, (q15_t)0xdc2a, (q15_t)0x7adf, (q15_t)0xdc24, (q15_t)0x7add, (q15_t)0xdc1e, (q15_t)0x7adc, (q15_t)0xdc18, + (q15_t)0x7ada, (q15_t)0xdc12, (q15_t)0x7ad8, (q15_t)0xdc0c, (q15_t)0x7ad6, (q15_t)0xdc06, (q15_t)0x7ad5, (q15_t)0xdbff, + (q15_t)0x7ad3, (q15_t)0xdbf9, (q15_t)0x7ad1, (q15_t)0xdbf3, (q15_t)0x7acf, (q15_t)0xdbed, (q15_t)0x7acd, (q15_t)0xdbe7, + (q15_t)0x7acc, (q15_t)0xdbe1, (q15_t)0x7aca, (q15_t)0xdbdb, (q15_t)0x7ac8, (q15_t)0xdbd5, (q15_t)0x7ac6, (q15_t)0xdbcf, + (q15_t)0x7ac5, (q15_t)0xdbc9, (q15_t)0x7ac3, (q15_t)0xdbc3, (q15_t)0x7ac1, (q15_t)0xdbbd, (q15_t)0x7abf, (q15_t)0xdbb7, + (q15_t)0x7abd, (q15_t)0xdbb1, (q15_t)0x7abc, (q15_t)0xdbab, (q15_t)0x7aba, (q15_t)0xdba5, (q15_t)0x7ab8, (q15_t)0xdb9f, + (q15_t)0x7ab6, (q15_t)0xdb99, (q15_t)0x7ab5, (q15_t)0xdb93, (q15_t)0x7ab3, (q15_t)0xdb8d, (q15_t)0x7ab1, (q15_t)0xdb87, + (q15_t)0x7aaf, (q15_t)0xdb81, (q15_t)0x7aad, (q15_t)0xdb7b, (q15_t)0x7aac, (q15_t)0xdb75, (q15_t)0x7aaa, (q15_t)0xdb6f, + (q15_t)0x7aa8, (q15_t)0xdb69, (q15_t)0x7aa6, (q15_t)0xdb63, (q15_t)0x7aa4, (q15_t)0xdb5d, (q15_t)0x7aa3, (q15_t)0xdb57, + (q15_t)0x7aa1, (q15_t)0xdb51, (q15_t)0x7a9f, (q15_t)0xdb4b, (q15_t)0x7a9d, (q15_t)0xdb45, (q15_t)0x7a9b, (q15_t)0xdb3f, + (q15_t)0x7a9a, (q15_t)0xdb39, (q15_t)0x7a98, (q15_t)0xdb33, (q15_t)0x7a96, (q15_t)0xdb2d, (q15_t)0x7a94, (q15_t)0xdb27, + (q15_t)0x7a92, (q15_t)0xdb21, (q15_t)0x7a91, (q15_t)0xdb1b, (q15_t)0x7a8f, (q15_t)0xdb15, (q15_t)0x7a8d, (q15_t)0xdb0f, + (q15_t)0x7a8b, (q15_t)0xdb09, (q15_t)0x7a89, (q15_t)0xdb03, (q15_t)0x7a87, (q15_t)0xdafd, (q15_t)0x7a86, (q15_t)0xdaf7, + (q15_t)0x7a84, (q15_t)0xdaf1, (q15_t)0x7a82, (q15_t)0xdaea, (q15_t)0x7a80, (q15_t)0xdae4, (q15_t)0x7a7e, (q15_t)0xdade, + (q15_t)0x7a7d, (q15_t)0xdad8, (q15_t)0x7a7b, (q15_t)0xdad2, (q15_t)0x7a79, (q15_t)0xdacc, (q15_t)0x7a77, (q15_t)0xdac6, + (q15_t)0x7a75, (q15_t)0xdac0, (q15_t)0x7a73, (q15_t)0xdaba, (q15_t)0x7a72, (q15_t)0xdab4, (q15_t)0x7a70, (q15_t)0xdaae, + (q15_t)0x7a6e, (q15_t)0xdaa8, (q15_t)0x7a6c, (q15_t)0xdaa2, (q15_t)0x7a6a, (q15_t)0xda9c, (q15_t)0x7a68, (q15_t)0xda96, + (q15_t)0x7a67, (q15_t)0xda90, (q15_t)0x7a65, (q15_t)0xda8a, (q15_t)0x7a63, (q15_t)0xda84, (q15_t)0x7a61, (q15_t)0xda7e, + (q15_t)0x7a5f, (q15_t)0xda78, (q15_t)0x7a5d, (q15_t)0xda72, (q15_t)0x7a5c, (q15_t)0xda6c, (q15_t)0x7a5a, (q15_t)0xda66, + (q15_t)0x7a58, (q15_t)0xda60, (q15_t)0x7a56, (q15_t)0xda5a, (q15_t)0x7a54, (q15_t)0xda54, (q15_t)0x7a52, (q15_t)0xda4e, + (q15_t)0x7a50, (q15_t)0xda48, (q15_t)0x7a4f, (q15_t)0xda42, (q15_t)0x7a4d, (q15_t)0xda3c, (q15_t)0x7a4b, (q15_t)0xda36, + (q15_t)0x7a49, (q15_t)0xda30, (q15_t)0x7a47, (q15_t)0xda2a, (q15_t)0x7a45, (q15_t)0xda24, (q15_t)0x7a43, (q15_t)0xda1e, + (q15_t)0x7a42, (q15_t)0xda18, (q15_t)0x7a40, (q15_t)0xda12, (q15_t)0x7a3e, (q15_t)0xda0c, (q15_t)0x7a3c, (q15_t)0xda06, + (q15_t)0x7a3a, (q15_t)0xda00, (q15_t)0x7a38, (q15_t)0xd9fa, (q15_t)0x7a36, (q15_t)0xd9f4, (q15_t)0x7a35, (q15_t)0xd9ee, + (q15_t)0x7a33, (q15_t)0xd9e8, (q15_t)0x7a31, (q15_t)0xd9e2, (q15_t)0x7a2f, (q15_t)0xd9dc, (q15_t)0x7a2d, (q15_t)0xd9d6, + (q15_t)0x7a2b, (q15_t)0xd9d0, (q15_t)0x7a29, (q15_t)0xd9ca, (q15_t)0x7a27, (q15_t)0xd9c4, (q15_t)0x7a26, (q15_t)0xd9be, + (q15_t)0x7a24, (q15_t)0xd9b8, (q15_t)0x7a22, (q15_t)0xd9b2, (q15_t)0x7a20, (q15_t)0xd9ac, (q15_t)0x7a1e, (q15_t)0xd9a6, + (q15_t)0x7a1c, (q15_t)0xd9a0, (q15_t)0x7a1a, (q15_t)0xd99a, (q15_t)0x7a18, (q15_t)0xd994, (q15_t)0x7a16, (q15_t)0xd98e, + (q15_t)0x7a15, (q15_t)0xd988, (q15_t)0x7a13, (q15_t)0xd982, (q15_t)0x7a11, (q15_t)0xd97c, (q15_t)0x7a0f, (q15_t)0xd976, + (q15_t)0x7a0d, (q15_t)0xd970, (q15_t)0x7a0b, (q15_t)0xd96a, (q15_t)0x7a09, (q15_t)0xd964, (q15_t)0x7a07, (q15_t)0xd95e, + (q15_t)0x7a05, (q15_t)0xd958, (q15_t)0x7a04, (q15_t)0xd952, (q15_t)0x7a02, (q15_t)0xd94c, (q15_t)0x7a00, (q15_t)0xd946, + (q15_t)0x79fe, (q15_t)0xd940, (q15_t)0x79fc, (q15_t)0xd93a, (q15_t)0x79fa, (q15_t)0xd934, (q15_t)0x79f8, (q15_t)0xd92e, + (q15_t)0x79f6, (q15_t)0xd928, (q15_t)0x79f4, (q15_t)0xd922, (q15_t)0x79f2, (q15_t)0xd91c, (q15_t)0x79f0, (q15_t)0xd917, + (q15_t)0x79ef, (q15_t)0xd911, (q15_t)0x79ed, (q15_t)0xd90b, (q15_t)0x79eb, (q15_t)0xd905, (q15_t)0x79e9, (q15_t)0xd8ff, + (q15_t)0x79e7, (q15_t)0xd8f9, (q15_t)0x79e5, (q15_t)0xd8f3, (q15_t)0x79e3, (q15_t)0xd8ed, (q15_t)0x79e1, (q15_t)0xd8e7, + (q15_t)0x79df, (q15_t)0xd8e1, (q15_t)0x79dd, (q15_t)0xd8db, (q15_t)0x79db, (q15_t)0xd8d5, (q15_t)0x79d9, (q15_t)0xd8cf, + (q15_t)0x79d8, (q15_t)0xd8c9, (q15_t)0x79d6, (q15_t)0xd8c3, (q15_t)0x79d4, (q15_t)0xd8bd, (q15_t)0x79d2, (q15_t)0xd8b7, + (q15_t)0x79d0, (q15_t)0xd8b1, (q15_t)0x79ce, (q15_t)0xd8ab, (q15_t)0x79cc, (q15_t)0xd8a5, (q15_t)0x79ca, (q15_t)0xd89f, + (q15_t)0x79c8, (q15_t)0xd899, (q15_t)0x79c6, (q15_t)0xd893, (q15_t)0x79c4, (q15_t)0xd88d, (q15_t)0x79c2, (q15_t)0xd887, + (q15_t)0x79c0, (q15_t)0xd881, (q15_t)0x79be, (q15_t)0xd87b, (q15_t)0x79bc, (q15_t)0xd875, (q15_t)0x79bb, (q15_t)0xd86f, + (q15_t)0x79b9, (q15_t)0xd869, (q15_t)0x79b7, (q15_t)0xd863, (q15_t)0x79b5, (q15_t)0xd85d, (q15_t)0x79b3, (q15_t)0xd857, + (q15_t)0x79b1, (q15_t)0xd851, (q15_t)0x79af, (q15_t)0xd84b, (q15_t)0x79ad, (q15_t)0xd845, (q15_t)0x79ab, (q15_t)0xd83f, + (q15_t)0x79a9, (q15_t)0xd839, (q15_t)0x79a7, (q15_t)0xd833, (q15_t)0x79a5, (q15_t)0xd82d, (q15_t)0x79a3, (q15_t)0xd827, + (q15_t)0x79a1, (q15_t)0xd821, (q15_t)0x799f, (q15_t)0xd81b, (q15_t)0x799d, (q15_t)0xd815, (q15_t)0x799b, (q15_t)0xd80f, + (q15_t)0x7999, (q15_t)0xd80a, (q15_t)0x7997, (q15_t)0xd804, (q15_t)0x7995, (q15_t)0xd7fe, (q15_t)0x7993, (q15_t)0xd7f8, + (q15_t)0x7992, (q15_t)0xd7f2, (q15_t)0x7990, (q15_t)0xd7ec, (q15_t)0x798e, (q15_t)0xd7e6, (q15_t)0x798c, (q15_t)0xd7e0, + (q15_t)0x798a, (q15_t)0xd7da, (q15_t)0x7988, (q15_t)0xd7d4, (q15_t)0x7986, (q15_t)0xd7ce, (q15_t)0x7984, (q15_t)0xd7c8, + (q15_t)0x7982, (q15_t)0xd7c2, (q15_t)0x7980, (q15_t)0xd7bc, (q15_t)0x797e, (q15_t)0xd7b6, (q15_t)0x797c, (q15_t)0xd7b0, + (q15_t)0x797a, (q15_t)0xd7aa, (q15_t)0x7978, (q15_t)0xd7a4, (q15_t)0x7976, (q15_t)0xd79e, (q15_t)0x7974, (q15_t)0xd798, + (q15_t)0x7972, (q15_t)0xd792, (q15_t)0x7970, (q15_t)0xd78c, (q15_t)0x796e, (q15_t)0xd786, (q15_t)0x796c, (q15_t)0xd780, + (q15_t)0x796a, (q15_t)0xd77a, (q15_t)0x7968, (q15_t)0xd774, (q15_t)0x7966, (q15_t)0xd76e, (q15_t)0x7964, (q15_t)0xd768, + (q15_t)0x7962, (q15_t)0xd763, (q15_t)0x7960, (q15_t)0xd75d, (q15_t)0x795e, (q15_t)0xd757, (q15_t)0x795c, (q15_t)0xd751, + (q15_t)0x795a, (q15_t)0xd74b, (q15_t)0x7958, (q15_t)0xd745, (q15_t)0x7956, (q15_t)0xd73f, (q15_t)0x7954, (q15_t)0xd739, + (q15_t)0x7952, (q15_t)0xd733, (q15_t)0x7950, (q15_t)0xd72d, (q15_t)0x794e, (q15_t)0xd727, (q15_t)0x794c, (q15_t)0xd721, + (q15_t)0x794a, (q15_t)0xd71b, (q15_t)0x7948, (q15_t)0xd715, (q15_t)0x7946, (q15_t)0xd70f, (q15_t)0x7944, (q15_t)0xd709, + (q15_t)0x7942, (q15_t)0xd703, (q15_t)0x7940, (q15_t)0xd6fd, (q15_t)0x793e, (q15_t)0xd6f7, (q15_t)0x793c, (q15_t)0xd6f1, + (q15_t)0x793a, (q15_t)0xd6eb, (q15_t)0x7938, (q15_t)0xd6e5, (q15_t)0x7936, (q15_t)0xd6e0, (q15_t)0x7934, (q15_t)0xd6da, + (q15_t)0x7932, (q15_t)0xd6d4, (q15_t)0x7930, (q15_t)0xd6ce, (q15_t)0x792e, (q15_t)0xd6c8, (q15_t)0x792c, (q15_t)0xd6c2, + (q15_t)0x792a, (q15_t)0xd6bc, (q15_t)0x7928, (q15_t)0xd6b6, (q15_t)0x7926, (q15_t)0xd6b0, (q15_t)0x7924, (q15_t)0xd6aa, + (q15_t)0x7922, (q15_t)0xd6a4, (q15_t)0x7920, (q15_t)0xd69e, (q15_t)0x791e, (q15_t)0xd698, (q15_t)0x791c, (q15_t)0xd692, + (q15_t)0x7919, (q15_t)0xd68c, (q15_t)0x7917, (q15_t)0xd686, (q15_t)0x7915, (q15_t)0xd680, (q15_t)0x7913, (q15_t)0xd67a, + (q15_t)0x7911, (q15_t)0xd675, (q15_t)0x790f, (q15_t)0xd66f, (q15_t)0x790d, (q15_t)0xd669, (q15_t)0x790b, (q15_t)0xd663, + (q15_t)0x7909, (q15_t)0xd65d, (q15_t)0x7907, (q15_t)0xd657, (q15_t)0x7905, (q15_t)0xd651, (q15_t)0x7903, (q15_t)0xd64b, + (q15_t)0x7901, (q15_t)0xd645, (q15_t)0x78ff, (q15_t)0xd63f, (q15_t)0x78fd, (q15_t)0xd639, (q15_t)0x78fb, (q15_t)0xd633, + (q15_t)0x78f9, (q15_t)0xd62d, (q15_t)0x78f7, (q15_t)0xd627, (q15_t)0x78f5, (q15_t)0xd621, (q15_t)0x78f3, (q15_t)0xd61b, + (q15_t)0x78f1, (q15_t)0xd615, (q15_t)0x78ee, (q15_t)0xd610, (q15_t)0x78ec, (q15_t)0xd60a, (q15_t)0x78ea, (q15_t)0xd604, + (q15_t)0x78e8, (q15_t)0xd5fe, (q15_t)0x78e6, (q15_t)0xd5f8, (q15_t)0x78e4, (q15_t)0xd5f2, (q15_t)0x78e2, (q15_t)0xd5ec, + (q15_t)0x78e0, (q15_t)0xd5e6, (q15_t)0x78de, (q15_t)0xd5e0, (q15_t)0x78dc, (q15_t)0xd5da, (q15_t)0x78da, (q15_t)0xd5d4, + (q15_t)0x78d8, (q15_t)0xd5ce, (q15_t)0x78d6, (q15_t)0xd5c8, (q15_t)0x78d4, (q15_t)0xd5c2, (q15_t)0x78d2, (q15_t)0xd5bc, + (q15_t)0x78cf, (q15_t)0xd5b7, (q15_t)0x78cd, (q15_t)0xd5b1, (q15_t)0x78cb, (q15_t)0xd5ab, (q15_t)0x78c9, (q15_t)0xd5a5, + (q15_t)0x78c7, (q15_t)0xd59f, (q15_t)0x78c5, (q15_t)0xd599, (q15_t)0x78c3, (q15_t)0xd593, (q15_t)0x78c1, (q15_t)0xd58d, + (q15_t)0x78bf, (q15_t)0xd587, (q15_t)0x78bd, (q15_t)0xd581, (q15_t)0x78bb, (q15_t)0xd57b, (q15_t)0x78b9, (q15_t)0xd575, + (q15_t)0x78b6, (q15_t)0xd56f, (q15_t)0x78b4, (q15_t)0xd569, (q15_t)0x78b2, (q15_t)0xd564, (q15_t)0x78b0, (q15_t)0xd55e, + (q15_t)0x78ae, (q15_t)0xd558, (q15_t)0x78ac, (q15_t)0xd552, (q15_t)0x78aa, (q15_t)0xd54c, (q15_t)0x78a8, (q15_t)0xd546, + (q15_t)0x78a6, (q15_t)0xd540, (q15_t)0x78a4, (q15_t)0xd53a, (q15_t)0x78a2, (q15_t)0xd534, (q15_t)0x789f, (q15_t)0xd52e, + (q15_t)0x789d, (q15_t)0xd528, (q15_t)0x789b, (q15_t)0xd522, (q15_t)0x7899, (q15_t)0xd51c, (q15_t)0x7897, (q15_t)0xd517, + (q15_t)0x7895, (q15_t)0xd511, (q15_t)0x7893, (q15_t)0xd50b, (q15_t)0x7891, (q15_t)0xd505, (q15_t)0x788f, (q15_t)0xd4ff, + (q15_t)0x788c, (q15_t)0xd4f9, (q15_t)0x788a, (q15_t)0xd4f3, (q15_t)0x7888, (q15_t)0xd4ed, (q15_t)0x7886, (q15_t)0xd4e7, + (q15_t)0x7884, (q15_t)0xd4e1, (q15_t)0x7882, (q15_t)0xd4db, (q15_t)0x7880, (q15_t)0xd4d5, (q15_t)0x787e, (q15_t)0xd4d0, + (q15_t)0x787c, (q15_t)0xd4ca, (q15_t)0x7879, (q15_t)0xd4c4, (q15_t)0x7877, (q15_t)0xd4be, (q15_t)0x7875, (q15_t)0xd4b8, + (q15_t)0x7873, (q15_t)0xd4b2, (q15_t)0x7871, (q15_t)0xd4ac, (q15_t)0x786f, (q15_t)0xd4a6, (q15_t)0x786d, (q15_t)0xd4a0, + (q15_t)0x786b, (q15_t)0xd49a, (q15_t)0x7868, (q15_t)0xd494, (q15_t)0x7866, (q15_t)0xd48f, (q15_t)0x7864, (q15_t)0xd489, + (q15_t)0x7862, (q15_t)0xd483, (q15_t)0x7860, (q15_t)0xd47d, (q15_t)0x785e, (q15_t)0xd477, (q15_t)0x785c, (q15_t)0xd471, + (q15_t)0x7859, (q15_t)0xd46b, (q15_t)0x7857, (q15_t)0xd465, (q15_t)0x7855, (q15_t)0xd45f, (q15_t)0x7853, (q15_t)0xd459, + (q15_t)0x7851, (q15_t)0xd453, (q15_t)0x784f, (q15_t)0xd44e, (q15_t)0x784d, (q15_t)0xd448, (q15_t)0x784a, (q15_t)0xd442, + (q15_t)0x7848, (q15_t)0xd43c, (q15_t)0x7846, (q15_t)0xd436, (q15_t)0x7844, (q15_t)0xd430, (q15_t)0x7842, (q15_t)0xd42a, + (q15_t)0x7840, (q15_t)0xd424, (q15_t)0x783e, (q15_t)0xd41e, (q15_t)0x783b, (q15_t)0xd418, (q15_t)0x7839, (q15_t)0xd412, + (q15_t)0x7837, (q15_t)0xd40d, (q15_t)0x7835, (q15_t)0xd407, (q15_t)0x7833, (q15_t)0xd401, (q15_t)0x7831, (q15_t)0xd3fb, + (q15_t)0x782e, (q15_t)0xd3f5, (q15_t)0x782c, (q15_t)0xd3ef, (q15_t)0x782a, (q15_t)0xd3e9, (q15_t)0x7828, (q15_t)0xd3e3, + (q15_t)0x7826, (q15_t)0xd3dd, (q15_t)0x7824, (q15_t)0xd3d7, (q15_t)0x7821, (q15_t)0xd3d2, (q15_t)0x781f, (q15_t)0xd3cc, + (q15_t)0x781d, (q15_t)0xd3c6, (q15_t)0x781b, (q15_t)0xd3c0, (q15_t)0x7819, (q15_t)0xd3ba, (q15_t)0x7817, (q15_t)0xd3b4, + (q15_t)0x7814, (q15_t)0xd3ae, (q15_t)0x7812, (q15_t)0xd3a8, (q15_t)0x7810, (q15_t)0xd3a2, (q15_t)0x780e, (q15_t)0xd39d, + (q15_t)0x780c, (q15_t)0xd397, (q15_t)0x780a, (q15_t)0xd391, (q15_t)0x7807, (q15_t)0xd38b, (q15_t)0x7805, (q15_t)0xd385, + (q15_t)0x7803, (q15_t)0xd37f, (q15_t)0x7801, (q15_t)0xd379, (q15_t)0x77ff, (q15_t)0xd373, (q15_t)0x77fc, (q15_t)0xd36d, + (q15_t)0x77fa, (q15_t)0xd368, (q15_t)0x77f8, (q15_t)0xd362, (q15_t)0x77f6, (q15_t)0xd35c, (q15_t)0x77f4, (q15_t)0xd356, + (q15_t)0x77f1, (q15_t)0xd350, (q15_t)0x77ef, (q15_t)0xd34a, (q15_t)0x77ed, (q15_t)0xd344, (q15_t)0x77eb, (q15_t)0xd33e, + (q15_t)0x77e9, (q15_t)0xd338, (q15_t)0x77e6, (q15_t)0xd333, (q15_t)0x77e4, (q15_t)0xd32d, (q15_t)0x77e2, (q15_t)0xd327, + (q15_t)0x77e0, (q15_t)0xd321, (q15_t)0x77de, (q15_t)0xd31b, (q15_t)0x77db, (q15_t)0xd315, (q15_t)0x77d9, (q15_t)0xd30f, + (q15_t)0x77d7, (q15_t)0xd309, (q15_t)0x77d5, (q15_t)0xd303, (q15_t)0x77d3, (q15_t)0xd2fe, (q15_t)0x77d0, (q15_t)0xd2f8, + (q15_t)0x77ce, (q15_t)0xd2f2, (q15_t)0x77cc, (q15_t)0xd2ec, (q15_t)0x77ca, (q15_t)0xd2e6, (q15_t)0x77c8, (q15_t)0xd2e0, + (q15_t)0x77c5, (q15_t)0xd2da, (q15_t)0x77c3, (q15_t)0xd2d4, (q15_t)0x77c1, (q15_t)0xd2cf, (q15_t)0x77bf, (q15_t)0xd2c9, + (q15_t)0x77bc, (q15_t)0xd2c3, (q15_t)0x77ba, (q15_t)0xd2bd, (q15_t)0x77b8, (q15_t)0xd2b7, (q15_t)0x77b6, (q15_t)0xd2b1, + (q15_t)0x77b4, (q15_t)0xd2ab, (q15_t)0x77b1, (q15_t)0xd2a5, (q15_t)0x77af, (q15_t)0xd2a0, (q15_t)0x77ad, (q15_t)0xd29a, + (q15_t)0x77ab, (q15_t)0xd294, (q15_t)0x77a8, (q15_t)0xd28e, (q15_t)0x77a6, (q15_t)0xd288, (q15_t)0x77a4, (q15_t)0xd282, + (q15_t)0x77a2, (q15_t)0xd27c, (q15_t)0x77a0, (q15_t)0xd276, (q15_t)0x779d, (q15_t)0xd271, (q15_t)0x779b, (q15_t)0xd26b, + (q15_t)0x7799, (q15_t)0xd265, (q15_t)0x7797, (q15_t)0xd25f, (q15_t)0x7794, (q15_t)0xd259, (q15_t)0x7792, (q15_t)0xd253, + (q15_t)0x7790, (q15_t)0xd24d, (q15_t)0x778e, (q15_t)0xd247, (q15_t)0x778b, (q15_t)0xd242, (q15_t)0x7789, (q15_t)0xd23c, + (q15_t)0x7787, (q15_t)0xd236, (q15_t)0x7785, (q15_t)0xd230, (q15_t)0x7782, (q15_t)0xd22a, (q15_t)0x7780, (q15_t)0xd224, + (q15_t)0x777e, (q15_t)0xd21e, (q15_t)0x777c, (q15_t)0xd219, (q15_t)0x7779, (q15_t)0xd213, (q15_t)0x7777, (q15_t)0xd20d, + (q15_t)0x7775, (q15_t)0xd207, (q15_t)0x7773, (q15_t)0xd201, (q15_t)0x7770, (q15_t)0xd1fb, (q15_t)0x776e, (q15_t)0xd1f5, + (q15_t)0x776c, (q15_t)0xd1ef, (q15_t)0x776a, (q15_t)0xd1ea, (q15_t)0x7767, (q15_t)0xd1e4, (q15_t)0x7765, (q15_t)0xd1de, + (q15_t)0x7763, (q15_t)0xd1d8, (q15_t)0x7760, (q15_t)0xd1d2, (q15_t)0x775e, (q15_t)0xd1cc, (q15_t)0x775c, (q15_t)0xd1c6, + (q15_t)0x775a, (q15_t)0xd1c1, (q15_t)0x7757, (q15_t)0xd1bb, (q15_t)0x7755, (q15_t)0xd1b5, (q15_t)0x7753, (q15_t)0xd1af, + (q15_t)0x7751, (q15_t)0xd1a9, (q15_t)0x774e, (q15_t)0xd1a3, (q15_t)0x774c, (q15_t)0xd19d, (q15_t)0x774a, (q15_t)0xd198, + (q15_t)0x7747, (q15_t)0xd192, (q15_t)0x7745, (q15_t)0xd18c, (q15_t)0x7743, (q15_t)0xd186, (q15_t)0x7741, (q15_t)0xd180, + (q15_t)0x773e, (q15_t)0xd17a, (q15_t)0x773c, (q15_t)0xd174, (q15_t)0x773a, (q15_t)0xd16f, (q15_t)0x7738, (q15_t)0xd169, + (q15_t)0x7735, (q15_t)0xd163, (q15_t)0x7733, (q15_t)0xd15d, (q15_t)0x7731, (q15_t)0xd157, (q15_t)0x772e, (q15_t)0xd151, + (q15_t)0x772c, (q15_t)0xd14b, (q15_t)0x772a, (q15_t)0xd146, (q15_t)0x7727, (q15_t)0xd140, (q15_t)0x7725, (q15_t)0xd13a, + (q15_t)0x7723, (q15_t)0xd134, (q15_t)0x7721, (q15_t)0xd12e, (q15_t)0x771e, (q15_t)0xd128, (q15_t)0x771c, (q15_t)0xd123, + (q15_t)0x771a, (q15_t)0xd11d, (q15_t)0x7717, (q15_t)0xd117, (q15_t)0x7715, (q15_t)0xd111, (q15_t)0x7713, (q15_t)0xd10b, + (q15_t)0x7710, (q15_t)0xd105, (q15_t)0x770e, (q15_t)0xd0ff, (q15_t)0x770c, (q15_t)0xd0fa, (q15_t)0x770a, (q15_t)0xd0f4, + (q15_t)0x7707, (q15_t)0xd0ee, (q15_t)0x7705, (q15_t)0xd0e8, (q15_t)0x7703, (q15_t)0xd0e2, (q15_t)0x7700, (q15_t)0xd0dc, + (q15_t)0x76fe, (q15_t)0xd0d7, (q15_t)0x76fc, (q15_t)0xd0d1, (q15_t)0x76f9, (q15_t)0xd0cb, (q15_t)0x76f7, (q15_t)0xd0c5, + (q15_t)0x76f5, (q15_t)0xd0bf, (q15_t)0x76f2, (q15_t)0xd0b9, (q15_t)0x76f0, (q15_t)0xd0b4, (q15_t)0x76ee, (q15_t)0xd0ae, + (q15_t)0x76eb, (q15_t)0xd0a8, (q15_t)0x76e9, (q15_t)0xd0a2, (q15_t)0x76e7, (q15_t)0xd09c, (q15_t)0x76e4, (q15_t)0xd096, + (q15_t)0x76e2, (q15_t)0xd091, (q15_t)0x76e0, (q15_t)0xd08b, (q15_t)0x76dd, (q15_t)0xd085, (q15_t)0x76db, (q15_t)0xd07f, + (q15_t)0x76d9, (q15_t)0xd079, (q15_t)0x76d6, (q15_t)0xd073, (q15_t)0x76d4, (q15_t)0xd06e, (q15_t)0x76d2, (q15_t)0xd068, + (q15_t)0x76cf, (q15_t)0xd062, (q15_t)0x76cd, (q15_t)0xd05c, (q15_t)0x76cb, (q15_t)0xd056, (q15_t)0x76c8, (q15_t)0xd050, + (q15_t)0x76c6, (q15_t)0xd04b, (q15_t)0x76c4, (q15_t)0xd045, (q15_t)0x76c1, (q15_t)0xd03f, (q15_t)0x76bf, (q15_t)0xd039, + (q15_t)0x76bd, (q15_t)0xd033, (q15_t)0x76ba, (q15_t)0xd02d, (q15_t)0x76b8, (q15_t)0xd028, (q15_t)0x76b6, (q15_t)0xd022, + (q15_t)0x76b3, (q15_t)0xd01c, (q15_t)0x76b1, (q15_t)0xd016, (q15_t)0x76af, (q15_t)0xd010, (q15_t)0x76ac, (q15_t)0xd00a, + (q15_t)0x76aa, (q15_t)0xd005, (q15_t)0x76a8, (q15_t)0xcfff, (q15_t)0x76a5, (q15_t)0xcff9, (q15_t)0x76a3, (q15_t)0xcff3, + (q15_t)0x76a0, (q15_t)0xcfed, (q15_t)0x769e, (q15_t)0xcfe7, (q15_t)0x769c, (q15_t)0xcfe2, (q15_t)0x7699, (q15_t)0xcfdc, + (q15_t)0x7697, (q15_t)0xcfd6, (q15_t)0x7695, (q15_t)0xcfd0, (q15_t)0x7692, (q15_t)0xcfca, (q15_t)0x7690, (q15_t)0xcfc5, + (q15_t)0x768e, (q15_t)0xcfbf, (q15_t)0x768b, (q15_t)0xcfb9, (q15_t)0x7689, (q15_t)0xcfb3, (q15_t)0x7686, (q15_t)0xcfad, + (q15_t)0x7684, (q15_t)0xcfa7, (q15_t)0x7682, (q15_t)0xcfa2, (q15_t)0x767f, (q15_t)0xcf9c, (q15_t)0x767d, (q15_t)0xcf96, + (q15_t)0x767b, (q15_t)0xcf90, (q15_t)0x7678, (q15_t)0xcf8a, (q15_t)0x7676, (q15_t)0xcf85, (q15_t)0x7673, (q15_t)0xcf7f, + (q15_t)0x7671, (q15_t)0xcf79, (q15_t)0x766f, (q15_t)0xcf73, (q15_t)0x766c, (q15_t)0xcf6d, (q15_t)0x766a, (q15_t)0xcf67, + (q15_t)0x7668, (q15_t)0xcf62, (q15_t)0x7665, (q15_t)0xcf5c, (q15_t)0x7663, (q15_t)0xcf56, (q15_t)0x7660, (q15_t)0xcf50, + (q15_t)0x765e, (q15_t)0xcf4a, (q15_t)0x765c, (q15_t)0xcf45, (q15_t)0x7659, (q15_t)0xcf3f, (q15_t)0x7657, (q15_t)0xcf39, + (q15_t)0x7654, (q15_t)0xcf33, (q15_t)0x7652, (q15_t)0xcf2d, (q15_t)0x7650, (q15_t)0xcf28, (q15_t)0x764d, (q15_t)0xcf22, + (q15_t)0x764b, (q15_t)0xcf1c, (q15_t)0x7648, (q15_t)0xcf16, (q15_t)0x7646, (q15_t)0xcf10, (q15_t)0x7644, (q15_t)0xcf0b, + (q15_t)0x7641, (q15_t)0xcf05, (q15_t)0x763f, (q15_t)0xceff, (q15_t)0x763c, (q15_t)0xcef9, (q15_t)0x763a, (q15_t)0xcef3, + (q15_t)0x7638, (q15_t)0xceee, (q15_t)0x7635, (q15_t)0xcee8, (q15_t)0x7633, (q15_t)0xcee2, (q15_t)0x7630, (q15_t)0xcedc, + (q15_t)0x762e, (q15_t)0xced6, (q15_t)0x762b, (q15_t)0xced1, (q15_t)0x7629, (q15_t)0xcecb, (q15_t)0x7627, (q15_t)0xcec5, + (q15_t)0x7624, (q15_t)0xcebf, (q15_t)0x7622, (q15_t)0xceb9, (q15_t)0x761f, (q15_t)0xceb4, (q15_t)0x761d, (q15_t)0xceae, + (q15_t)0x761b, (q15_t)0xcea8, (q15_t)0x7618, (q15_t)0xcea2, (q15_t)0x7616, (q15_t)0xce9c, (q15_t)0x7613, (q15_t)0xce97, + (q15_t)0x7611, (q15_t)0xce91, (q15_t)0x760e, (q15_t)0xce8b, (q15_t)0x760c, (q15_t)0xce85, (q15_t)0x760a, (q15_t)0xce7f, + (q15_t)0x7607, (q15_t)0xce7a, (q15_t)0x7605, (q15_t)0xce74, (q15_t)0x7602, (q15_t)0xce6e, (q15_t)0x7600, (q15_t)0xce68, + (q15_t)0x75fd, (q15_t)0xce62, (q15_t)0x75fb, (q15_t)0xce5d, (q15_t)0x75f9, (q15_t)0xce57, (q15_t)0x75f6, (q15_t)0xce51, + (q15_t)0x75f4, (q15_t)0xce4b, (q15_t)0x75f1, (q15_t)0xce45, (q15_t)0x75ef, (q15_t)0xce40, (q15_t)0x75ec, (q15_t)0xce3a, + (q15_t)0x75ea, (q15_t)0xce34, (q15_t)0x75e7, (q15_t)0xce2e, (q15_t)0x75e5, (q15_t)0xce28, (q15_t)0x75e3, (q15_t)0xce23, + (q15_t)0x75e0, (q15_t)0xce1d, (q15_t)0x75de, (q15_t)0xce17, (q15_t)0x75db, (q15_t)0xce11, (q15_t)0x75d9, (q15_t)0xce0c, + (q15_t)0x75d6, (q15_t)0xce06, (q15_t)0x75d4, (q15_t)0xce00, (q15_t)0x75d1, (q15_t)0xcdfa, (q15_t)0x75cf, (q15_t)0xcdf4, + (q15_t)0x75cc, (q15_t)0xcdef, (q15_t)0x75ca, (q15_t)0xcde9, (q15_t)0x75c8, (q15_t)0xcde3, (q15_t)0x75c5, (q15_t)0xcddd, + (q15_t)0x75c3, (q15_t)0xcdd8, (q15_t)0x75c0, (q15_t)0xcdd2, (q15_t)0x75be, (q15_t)0xcdcc, (q15_t)0x75bb, (q15_t)0xcdc6, + (q15_t)0x75b9, (q15_t)0xcdc0, (q15_t)0x75b6, (q15_t)0xcdbb, (q15_t)0x75b4, (q15_t)0xcdb5, (q15_t)0x75b1, (q15_t)0xcdaf, + (q15_t)0x75af, (q15_t)0xcda9, (q15_t)0x75ac, (q15_t)0xcda3, (q15_t)0x75aa, (q15_t)0xcd9e, (q15_t)0x75a7, (q15_t)0xcd98, + (q15_t)0x75a5, (q15_t)0xcd92, (q15_t)0x75a3, (q15_t)0xcd8c, (q15_t)0x75a0, (q15_t)0xcd87, (q15_t)0x759e, (q15_t)0xcd81, + (q15_t)0x759b, (q15_t)0xcd7b, (q15_t)0x7599, (q15_t)0xcd75, (q15_t)0x7596, (q15_t)0xcd70, (q15_t)0x7594, (q15_t)0xcd6a, + (q15_t)0x7591, (q15_t)0xcd64, (q15_t)0x758f, (q15_t)0xcd5e, (q15_t)0x758c, (q15_t)0xcd58, (q15_t)0x758a, (q15_t)0xcd53, + (q15_t)0x7587, (q15_t)0xcd4d, (q15_t)0x7585, (q15_t)0xcd47, (q15_t)0x7582, (q15_t)0xcd41, (q15_t)0x7580, (q15_t)0xcd3c, + (q15_t)0x757d, (q15_t)0xcd36, (q15_t)0x757b, (q15_t)0xcd30, (q15_t)0x7578, (q15_t)0xcd2a, (q15_t)0x7576, (q15_t)0xcd25, + (q15_t)0x7573, (q15_t)0xcd1f, (q15_t)0x7571, (q15_t)0xcd19, (q15_t)0x756e, (q15_t)0xcd13, (q15_t)0x756c, (q15_t)0xcd0d, + (q15_t)0x7569, (q15_t)0xcd08, (q15_t)0x7567, (q15_t)0xcd02, (q15_t)0x7564, (q15_t)0xccfc, (q15_t)0x7562, (q15_t)0xccf6, + (q15_t)0x755f, (q15_t)0xccf1, (q15_t)0x755d, (q15_t)0xcceb, (q15_t)0x755a, (q15_t)0xcce5, (q15_t)0x7558, (q15_t)0xccdf, + (q15_t)0x7555, (q15_t)0xccda, (q15_t)0x7553, (q15_t)0xccd4, (q15_t)0x7550, (q15_t)0xccce, (q15_t)0x754e, (q15_t)0xccc8, + (q15_t)0x754b, (q15_t)0xccc3, (q15_t)0x7549, (q15_t)0xccbd, (q15_t)0x7546, (q15_t)0xccb7, (q15_t)0x7544, (q15_t)0xccb1, + (q15_t)0x7541, (q15_t)0xccac, (q15_t)0x753f, (q15_t)0xcca6, (q15_t)0x753c, (q15_t)0xcca0, (q15_t)0x753a, (q15_t)0xcc9a, + (q15_t)0x7537, (q15_t)0xcc95, (q15_t)0x7535, (q15_t)0xcc8f, (q15_t)0x7532, (q15_t)0xcc89, (q15_t)0x752f, (q15_t)0xcc83, + (q15_t)0x752d, (q15_t)0xcc7e, (q15_t)0x752a, (q15_t)0xcc78, (q15_t)0x7528, (q15_t)0xcc72, (q15_t)0x7525, (q15_t)0xcc6c, + (q15_t)0x7523, (q15_t)0xcc67, (q15_t)0x7520, (q15_t)0xcc61, (q15_t)0x751e, (q15_t)0xcc5b, (q15_t)0x751b, (q15_t)0xcc55, + (q15_t)0x7519, (q15_t)0xcc50, (q15_t)0x7516, (q15_t)0xcc4a, (q15_t)0x7514, (q15_t)0xcc44, (q15_t)0x7511, (q15_t)0xcc3e, + (q15_t)0x750f, (q15_t)0xcc39, (q15_t)0x750c, (q15_t)0xcc33, (q15_t)0x7509, (q15_t)0xcc2d, (q15_t)0x7507, (q15_t)0xcc27, + (q15_t)0x7504, (q15_t)0xcc22, (q15_t)0x7502, (q15_t)0xcc1c, (q15_t)0x74ff, (q15_t)0xcc16, (q15_t)0x74fd, (q15_t)0xcc10, + (q15_t)0x74fa, (q15_t)0xcc0b, (q15_t)0x74f8, (q15_t)0xcc05, (q15_t)0x74f5, (q15_t)0xcbff, (q15_t)0x74f2, (q15_t)0xcbf9, + (q15_t)0x74f0, (q15_t)0xcbf4, (q15_t)0x74ed, (q15_t)0xcbee, (q15_t)0x74eb, (q15_t)0xcbe8, (q15_t)0x74e8, (q15_t)0xcbe2, + (q15_t)0x74e6, (q15_t)0xcbdd, (q15_t)0x74e3, (q15_t)0xcbd7, (q15_t)0x74e1, (q15_t)0xcbd1, (q15_t)0x74de, (q15_t)0xcbcb, + (q15_t)0x74db, (q15_t)0xcbc6, (q15_t)0x74d9, (q15_t)0xcbc0, (q15_t)0x74d6, (q15_t)0xcbba, (q15_t)0x74d4, (q15_t)0xcbb5, + (q15_t)0x74d1, (q15_t)0xcbaf, (q15_t)0x74cf, (q15_t)0xcba9, (q15_t)0x74cc, (q15_t)0xcba3, (q15_t)0x74c9, (q15_t)0xcb9e, + (q15_t)0x74c7, (q15_t)0xcb98, (q15_t)0x74c4, (q15_t)0xcb92, (q15_t)0x74c2, (q15_t)0xcb8c, (q15_t)0x74bf, (q15_t)0xcb87, + (q15_t)0x74bd, (q15_t)0xcb81, (q15_t)0x74ba, (q15_t)0xcb7b, (q15_t)0x74b7, (q15_t)0xcb75, (q15_t)0x74b5, (q15_t)0xcb70, + (q15_t)0x74b2, (q15_t)0xcb6a, (q15_t)0x74b0, (q15_t)0xcb64, (q15_t)0x74ad, (q15_t)0xcb5f, (q15_t)0x74ab, (q15_t)0xcb59, + (q15_t)0x74a8, (q15_t)0xcb53, (q15_t)0x74a5, (q15_t)0xcb4d, (q15_t)0x74a3, (q15_t)0xcb48, (q15_t)0x74a0, (q15_t)0xcb42, + (q15_t)0x749e, (q15_t)0xcb3c, (q15_t)0x749b, (q15_t)0xcb36, (q15_t)0x7498, (q15_t)0xcb31, (q15_t)0x7496, (q15_t)0xcb2b, + (q15_t)0x7493, (q15_t)0xcb25, (q15_t)0x7491, (q15_t)0xcb20, (q15_t)0x748e, (q15_t)0xcb1a, (q15_t)0x748b, (q15_t)0xcb14, + (q15_t)0x7489, (q15_t)0xcb0e, (q15_t)0x7486, (q15_t)0xcb09, (q15_t)0x7484, (q15_t)0xcb03, (q15_t)0x7481, (q15_t)0xcafd, + (q15_t)0x747e, (q15_t)0xcaf8, (q15_t)0x747c, (q15_t)0xcaf2, (q15_t)0x7479, (q15_t)0xcaec, (q15_t)0x7477, (q15_t)0xcae6, + (q15_t)0x7474, (q15_t)0xcae1, (q15_t)0x7471, (q15_t)0xcadb, (q15_t)0x746f, (q15_t)0xcad5, (q15_t)0x746c, (q15_t)0xcad0, + (q15_t)0x746a, (q15_t)0xcaca, (q15_t)0x7467, (q15_t)0xcac4, (q15_t)0x7464, (q15_t)0xcabe, (q15_t)0x7462, (q15_t)0xcab9, + (q15_t)0x745f, (q15_t)0xcab3, (q15_t)0x745c, (q15_t)0xcaad, (q15_t)0x745a, (q15_t)0xcaa8, (q15_t)0x7457, (q15_t)0xcaa2, + (q15_t)0x7455, (q15_t)0xca9c, (q15_t)0x7452, (q15_t)0xca96, (q15_t)0x744f, (q15_t)0xca91, (q15_t)0x744d, (q15_t)0xca8b, + (q15_t)0x744a, (q15_t)0xca85, (q15_t)0x7448, (q15_t)0xca80, (q15_t)0x7445, (q15_t)0xca7a, (q15_t)0x7442, (q15_t)0xca74, + (q15_t)0x7440, (q15_t)0xca6e, (q15_t)0x743d, (q15_t)0xca69, (q15_t)0x743a, (q15_t)0xca63, (q15_t)0x7438, (q15_t)0xca5d, + (q15_t)0x7435, (q15_t)0xca58, (q15_t)0x7432, (q15_t)0xca52, (q15_t)0x7430, (q15_t)0xca4c, (q15_t)0x742d, (q15_t)0xca46, + (q15_t)0x742b, (q15_t)0xca41, (q15_t)0x7428, (q15_t)0xca3b, (q15_t)0x7425, (q15_t)0xca35, (q15_t)0x7423, (q15_t)0xca30, + (q15_t)0x7420, (q15_t)0xca2a, (q15_t)0x741d, (q15_t)0xca24, (q15_t)0x741b, (q15_t)0xca1f, (q15_t)0x7418, (q15_t)0xca19, + (q15_t)0x7415, (q15_t)0xca13, (q15_t)0x7413, (q15_t)0xca0d, (q15_t)0x7410, (q15_t)0xca08, (q15_t)0x740d, (q15_t)0xca02, + (q15_t)0x740b, (q15_t)0xc9fc, (q15_t)0x7408, (q15_t)0xc9f7, (q15_t)0x7406, (q15_t)0xc9f1, (q15_t)0x7403, (q15_t)0xc9eb, + (q15_t)0x7400, (q15_t)0xc9e6, (q15_t)0x73fe, (q15_t)0xc9e0, (q15_t)0x73fb, (q15_t)0xc9da, (q15_t)0x73f8, (q15_t)0xc9d5, + (q15_t)0x73f6, (q15_t)0xc9cf, (q15_t)0x73f3, (q15_t)0xc9c9, (q15_t)0x73f0, (q15_t)0xc9c3, (q15_t)0x73ee, (q15_t)0xc9be, + (q15_t)0x73eb, (q15_t)0xc9b8, (q15_t)0x73e8, (q15_t)0xc9b2, (q15_t)0x73e6, (q15_t)0xc9ad, (q15_t)0x73e3, (q15_t)0xc9a7, + (q15_t)0x73e0, (q15_t)0xc9a1, (q15_t)0x73de, (q15_t)0xc99c, (q15_t)0x73db, (q15_t)0xc996, (q15_t)0x73d8, (q15_t)0xc990, + (q15_t)0x73d6, (q15_t)0xc98b, (q15_t)0x73d3, (q15_t)0xc985, (q15_t)0x73d0, (q15_t)0xc97f, (q15_t)0x73ce, (q15_t)0xc97a, + (q15_t)0x73cb, (q15_t)0xc974, (q15_t)0x73c8, (q15_t)0xc96e, (q15_t)0x73c6, (q15_t)0xc968, (q15_t)0x73c3, (q15_t)0xc963, + (q15_t)0x73c0, (q15_t)0xc95d, (q15_t)0x73bd, (q15_t)0xc957, (q15_t)0x73bb, (q15_t)0xc952, (q15_t)0x73b8, (q15_t)0xc94c, + (q15_t)0x73b5, (q15_t)0xc946, (q15_t)0x73b3, (q15_t)0xc941, (q15_t)0x73b0, (q15_t)0xc93b, (q15_t)0x73ad, (q15_t)0xc935, + (q15_t)0x73ab, (q15_t)0xc930, (q15_t)0x73a8, (q15_t)0xc92a, (q15_t)0x73a5, (q15_t)0xc924, (q15_t)0x73a3, (q15_t)0xc91f, + (q15_t)0x73a0, (q15_t)0xc919, (q15_t)0x739d, (q15_t)0xc913, (q15_t)0x739b, (q15_t)0xc90e, (q15_t)0x7398, (q15_t)0xc908, + (q15_t)0x7395, (q15_t)0xc902, (q15_t)0x7392, (q15_t)0xc8fd, (q15_t)0x7390, (q15_t)0xc8f7, (q15_t)0x738d, (q15_t)0xc8f1, + (q15_t)0x738a, (q15_t)0xc8ec, (q15_t)0x7388, (q15_t)0xc8e6, (q15_t)0x7385, (q15_t)0xc8e0, (q15_t)0x7382, (q15_t)0xc8db, + (q15_t)0x737f, (q15_t)0xc8d5, (q15_t)0x737d, (q15_t)0xc8cf, (q15_t)0x737a, (q15_t)0xc8ca, (q15_t)0x7377, (q15_t)0xc8c4, + (q15_t)0x7375, (q15_t)0xc8be, (q15_t)0x7372, (q15_t)0xc8b9, (q15_t)0x736f, (q15_t)0xc8b3, (q15_t)0x736c, (q15_t)0xc8ad, + (q15_t)0x736a, (q15_t)0xc8a8, (q15_t)0x7367, (q15_t)0xc8a2, (q15_t)0x7364, (q15_t)0xc89c, (q15_t)0x7362, (q15_t)0xc897, + (q15_t)0x735f, (q15_t)0xc891, (q15_t)0x735c, (q15_t)0xc88b, (q15_t)0x7359, (q15_t)0xc886, (q15_t)0x7357, (q15_t)0xc880, + (q15_t)0x7354, (q15_t)0xc87a, (q15_t)0x7351, (q15_t)0xc875, (q15_t)0x734f, (q15_t)0xc86f, (q15_t)0x734c, (q15_t)0xc869, + (q15_t)0x7349, (q15_t)0xc864, (q15_t)0x7346, (q15_t)0xc85e, (q15_t)0x7344, (q15_t)0xc858, (q15_t)0x7341, (q15_t)0xc853, + (q15_t)0x733e, (q15_t)0xc84d, (q15_t)0x733b, (q15_t)0xc847, (q15_t)0x7339, (q15_t)0xc842, (q15_t)0x7336, (q15_t)0xc83c, + (q15_t)0x7333, (q15_t)0xc836, (q15_t)0x7330, (q15_t)0xc831, (q15_t)0x732e, (q15_t)0xc82b, (q15_t)0x732b, (q15_t)0xc825, + (q15_t)0x7328, (q15_t)0xc820, (q15_t)0x7326, (q15_t)0xc81a, (q15_t)0x7323, (q15_t)0xc814, (q15_t)0x7320, (q15_t)0xc80f, + (q15_t)0x731d, (q15_t)0xc809, (q15_t)0x731b, (q15_t)0xc803, (q15_t)0x7318, (q15_t)0xc7fe, (q15_t)0x7315, (q15_t)0xc7f8, + (q15_t)0x7312, (q15_t)0xc7f3, (q15_t)0x7310, (q15_t)0xc7ed, (q15_t)0x730d, (q15_t)0xc7e7, (q15_t)0x730a, (q15_t)0xc7e2, + (q15_t)0x7307, (q15_t)0xc7dc, (q15_t)0x7305, (q15_t)0xc7d6, (q15_t)0x7302, (q15_t)0xc7d1, (q15_t)0x72ff, (q15_t)0xc7cb, + (q15_t)0x72fc, (q15_t)0xc7c5, (q15_t)0x72f9, (q15_t)0xc7c0, (q15_t)0x72f7, (q15_t)0xc7ba, (q15_t)0x72f4, (q15_t)0xc7b4, + (q15_t)0x72f1, (q15_t)0xc7af, (q15_t)0x72ee, (q15_t)0xc7a9, (q15_t)0x72ec, (q15_t)0xc7a3, (q15_t)0x72e9, (q15_t)0xc79e, + (q15_t)0x72e6, (q15_t)0xc798, (q15_t)0x72e3, (q15_t)0xc793, (q15_t)0x72e1, (q15_t)0xc78d, (q15_t)0x72de, (q15_t)0xc787, + (q15_t)0x72db, (q15_t)0xc782, (q15_t)0x72d8, (q15_t)0xc77c, (q15_t)0x72d5, (q15_t)0xc776, (q15_t)0x72d3, (q15_t)0xc771, + (q15_t)0x72d0, (q15_t)0xc76b, (q15_t)0x72cd, (q15_t)0xc765, (q15_t)0x72ca, (q15_t)0xc760, (q15_t)0x72c8, (q15_t)0xc75a, + (q15_t)0x72c5, (q15_t)0xc755, (q15_t)0x72c2, (q15_t)0xc74f, (q15_t)0x72bf, (q15_t)0xc749, (q15_t)0x72bc, (q15_t)0xc744, + (q15_t)0x72ba, (q15_t)0xc73e, (q15_t)0x72b7, (q15_t)0xc738, (q15_t)0x72b4, (q15_t)0xc733, (q15_t)0x72b1, (q15_t)0xc72d, + (q15_t)0x72af, (q15_t)0xc728, (q15_t)0x72ac, (q15_t)0xc722, (q15_t)0x72a9, (q15_t)0xc71c, (q15_t)0x72a6, (q15_t)0xc717, + (q15_t)0x72a3, (q15_t)0xc711, (q15_t)0x72a1, (q15_t)0xc70b, (q15_t)0x729e, (q15_t)0xc706, (q15_t)0x729b, (q15_t)0xc700, + (q15_t)0x7298, (q15_t)0xc6fa, (q15_t)0x7295, (q15_t)0xc6f5, (q15_t)0x7293, (q15_t)0xc6ef, (q15_t)0x7290, (q15_t)0xc6ea, + (q15_t)0x728d, (q15_t)0xc6e4, (q15_t)0x728a, (q15_t)0xc6de, (q15_t)0x7287, (q15_t)0xc6d9, (q15_t)0x7285, (q15_t)0xc6d3, + (q15_t)0x7282, (q15_t)0xc6ce, (q15_t)0x727f, (q15_t)0xc6c8, (q15_t)0x727c, (q15_t)0xc6c2, (q15_t)0x7279, (q15_t)0xc6bd, + (q15_t)0x7276, (q15_t)0xc6b7, (q15_t)0x7274, (q15_t)0xc6b1, (q15_t)0x7271, (q15_t)0xc6ac, (q15_t)0x726e, (q15_t)0xc6a6, + (q15_t)0x726b, (q15_t)0xc6a1, (q15_t)0x7268, (q15_t)0xc69b, (q15_t)0x7266, (q15_t)0xc695, (q15_t)0x7263, (q15_t)0xc690, + (q15_t)0x7260, (q15_t)0xc68a, (q15_t)0x725d, (q15_t)0xc684, (q15_t)0x725a, (q15_t)0xc67f, (q15_t)0x7257, (q15_t)0xc679, + (q15_t)0x7255, (q15_t)0xc674, (q15_t)0x7252, (q15_t)0xc66e, (q15_t)0x724f, (q15_t)0xc668, (q15_t)0x724c, (q15_t)0xc663, + (q15_t)0x7249, (q15_t)0xc65d, (q15_t)0x7247, (q15_t)0xc658, (q15_t)0x7244, (q15_t)0xc652, (q15_t)0x7241, (q15_t)0xc64c, + (q15_t)0x723e, (q15_t)0xc647, (q15_t)0x723b, (q15_t)0xc641, (q15_t)0x7238, (q15_t)0xc63c, (q15_t)0x7236, (q15_t)0xc636, + (q15_t)0x7233, (q15_t)0xc630, (q15_t)0x7230, (q15_t)0xc62b, (q15_t)0x722d, (q15_t)0xc625, (q15_t)0x722a, (q15_t)0xc620, + (q15_t)0x7227, (q15_t)0xc61a, (q15_t)0x7224, (q15_t)0xc614, (q15_t)0x7222, (q15_t)0xc60f, (q15_t)0x721f, (q15_t)0xc609, + (q15_t)0x721c, (q15_t)0xc603, (q15_t)0x7219, (q15_t)0xc5fe, (q15_t)0x7216, (q15_t)0xc5f8, (q15_t)0x7213, (q15_t)0xc5f3, + (q15_t)0x7211, (q15_t)0xc5ed, (q15_t)0x720e, (q15_t)0xc5e7, (q15_t)0x720b, (q15_t)0xc5e2, (q15_t)0x7208, (q15_t)0xc5dc, + (q15_t)0x7205, (q15_t)0xc5d7, (q15_t)0x7202, (q15_t)0xc5d1, (q15_t)0x71ff, (q15_t)0xc5cc, (q15_t)0x71fd, (q15_t)0xc5c6, + (q15_t)0x71fa, (q15_t)0xc5c0, (q15_t)0x71f7, (q15_t)0xc5bb, (q15_t)0x71f4, (q15_t)0xc5b5, (q15_t)0x71f1, (q15_t)0xc5b0, + (q15_t)0x71ee, (q15_t)0xc5aa, (q15_t)0x71eb, (q15_t)0xc5a4, (q15_t)0x71e9, (q15_t)0xc59f, (q15_t)0x71e6, (q15_t)0xc599, + (q15_t)0x71e3, (q15_t)0xc594, (q15_t)0x71e0, (q15_t)0xc58e, (q15_t)0x71dd, (q15_t)0xc588, (q15_t)0x71da, (q15_t)0xc583, + (q15_t)0x71d7, (q15_t)0xc57d, (q15_t)0x71d4, (q15_t)0xc578, (q15_t)0x71d2, (q15_t)0xc572, (q15_t)0x71cf, (q15_t)0xc56c, + (q15_t)0x71cc, (q15_t)0xc567, (q15_t)0x71c9, (q15_t)0xc561, (q15_t)0x71c6, (q15_t)0xc55c, (q15_t)0x71c3, (q15_t)0xc556, + (q15_t)0x71c0, (q15_t)0xc551, (q15_t)0x71bd, (q15_t)0xc54b, (q15_t)0x71bb, (q15_t)0xc545, (q15_t)0x71b8, (q15_t)0xc540, + (q15_t)0x71b5, (q15_t)0xc53a, (q15_t)0x71b2, (q15_t)0xc535, (q15_t)0x71af, (q15_t)0xc52f, (q15_t)0x71ac, (q15_t)0xc529, + (q15_t)0x71a9, (q15_t)0xc524, (q15_t)0x71a6, (q15_t)0xc51e, (q15_t)0x71a3, (q15_t)0xc519, (q15_t)0x71a1, (q15_t)0xc513, + (q15_t)0x719e, (q15_t)0xc50e, (q15_t)0x719b, (q15_t)0xc508, (q15_t)0x7198, (q15_t)0xc502, (q15_t)0x7195, (q15_t)0xc4fd, + (q15_t)0x7192, (q15_t)0xc4f7, (q15_t)0x718f, (q15_t)0xc4f2, (q15_t)0x718c, (q15_t)0xc4ec, (q15_t)0x7189, (q15_t)0xc4e7, + (q15_t)0x7186, (q15_t)0xc4e1, (q15_t)0x7184, (q15_t)0xc4db, (q15_t)0x7181, (q15_t)0xc4d6, (q15_t)0x717e, (q15_t)0xc4d0, + (q15_t)0x717b, (q15_t)0xc4cb, (q15_t)0x7178, (q15_t)0xc4c5, (q15_t)0x7175, (q15_t)0xc4c0, (q15_t)0x7172, (q15_t)0xc4ba, + (q15_t)0x716f, (q15_t)0xc4b4, (q15_t)0x716c, (q15_t)0xc4af, (q15_t)0x7169, (q15_t)0xc4a9, (q15_t)0x7167, (q15_t)0xc4a4, + (q15_t)0x7164, (q15_t)0xc49e, (q15_t)0x7161, (q15_t)0xc499, (q15_t)0x715e, (q15_t)0xc493, (q15_t)0x715b, (q15_t)0xc48d, + (q15_t)0x7158, (q15_t)0xc488, (q15_t)0x7155, (q15_t)0xc482, (q15_t)0x7152, (q15_t)0xc47d, (q15_t)0x714f, (q15_t)0xc477, + (q15_t)0x714c, (q15_t)0xc472, (q15_t)0x7149, (q15_t)0xc46c, (q15_t)0x7146, (q15_t)0xc467, (q15_t)0x7143, (q15_t)0xc461, + (q15_t)0x7141, (q15_t)0xc45b, (q15_t)0x713e, (q15_t)0xc456, (q15_t)0x713b, (q15_t)0xc450, (q15_t)0x7138, (q15_t)0xc44b, + (q15_t)0x7135, (q15_t)0xc445, (q15_t)0x7132, (q15_t)0xc440, (q15_t)0x712f, (q15_t)0xc43a, (q15_t)0x712c, (q15_t)0xc434, + (q15_t)0x7129, (q15_t)0xc42f, (q15_t)0x7126, (q15_t)0xc429, (q15_t)0x7123, (q15_t)0xc424, (q15_t)0x7120, (q15_t)0xc41e, + (q15_t)0x711d, (q15_t)0xc419, (q15_t)0x711a, (q15_t)0xc413, (q15_t)0x7117, (q15_t)0xc40e, (q15_t)0x7114, (q15_t)0xc408, + (q15_t)0x7112, (q15_t)0xc403, (q15_t)0x710f, (q15_t)0xc3fd, (q15_t)0x710c, (q15_t)0xc3f7, (q15_t)0x7109, (q15_t)0xc3f2, + (q15_t)0x7106, (q15_t)0xc3ec, (q15_t)0x7103, (q15_t)0xc3e7, (q15_t)0x7100, (q15_t)0xc3e1, (q15_t)0x70fd, (q15_t)0xc3dc, + (q15_t)0x70fa, (q15_t)0xc3d6, (q15_t)0x70f7, (q15_t)0xc3d1, (q15_t)0x70f4, (q15_t)0xc3cb, (q15_t)0x70f1, (q15_t)0xc3c5, + (q15_t)0x70ee, (q15_t)0xc3c0, (q15_t)0x70eb, (q15_t)0xc3ba, (q15_t)0x70e8, (q15_t)0xc3b5, (q15_t)0x70e5, (q15_t)0xc3af, + (q15_t)0x70e2, (q15_t)0xc3aa, (q15_t)0x70df, (q15_t)0xc3a4, (q15_t)0x70dc, (q15_t)0xc39f, (q15_t)0x70d9, (q15_t)0xc399, + (q15_t)0x70d6, (q15_t)0xc394, (q15_t)0x70d3, (q15_t)0xc38e, (q15_t)0x70d1, (q15_t)0xc389, (q15_t)0x70ce, (q15_t)0xc383, + (q15_t)0x70cb, (q15_t)0xc37d, (q15_t)0x70c8, (q15_t)0xc378, (q15_t)0x70c5, (q15_t)0xc372, (q15_t)0x70c2, (q15_t)0xc36d, + (q15_t)0x70bf, (q15_t)0xc367, (q15_t)0x70bc, (q15_t)0xc362, (q15_t)0x70b9, (q15_t)0xc35c, (q15_t)0x70b6, (q15_t)0xc357, + (q15_t)0x70b3, (q15_t)0xc351, (q15_t)0x70b0, (q15_t)0xc34c, (q15_t)0x70ad, (q15_t)0xc346, (q15_t)0x70aa, (q15_t)0xc341, + (q15_t)0x70a7, (q15_t)0xc33b, (q15_t)0x70a4, (q15_t)0xc336, (q15_t)0x70a1, (q15_t)0xc330, (q15_t)0x709e, (q15_t)0xc32a, + (q15_t)0x709b, (q15_t)0xc325, (q15_t)0x7098, (q15_t)0xc31f, (q15_t)0x7095, (q15_t)0xc31a, (q15_t)0x7092, (q15_t)0xc314, + (q15_t)0x708f, (q15_t)0xc30f, (q15_t)0x708c, (q15_t)0xc309, (q15_t)0x7089, (q15_t)0xc304, (q15_t)0x7086, (q15_t)0xc2fe, + (q15_t)0x7083, (q15_t)0xc2f9, (q15_t)0x7080, (q15_t)0xc2f3, (q15_t)0x707d, (q15_t)0xc2ee, (q15_t)0x707a, (q15_t)0xc2e8, + (q15_t)0x7077, (q15_t)0xc2e3, (q15_t)0x7074, (q15_t)0xc2dd, (q15_t)0x7071, (q15_t)0xc2d8, (q15_t)0x706e, (q15_t)0xc2d2, + (q15_t)0x706b, (q15_t)0xc2cd, (q15_t)0x7068, (q15_t)0xc2c7, (q15_t)0x7065, (q15_t)0xc2c2, (q15_t)0x7062, (q15_t)0xc2bc, + (q15_t)0x705f, (q15_t)0xc2b7, (q15_t)0x705c, (q15_t)0xc2b1, (q15_t)0x7059, (q15_t)0xc2ab, (q15_t)0x7056, (q15_t)0xc2a6, + (q15_t)0x7053, (q15_t)0xc2a0, (q15_t)0x7050, (q15_t)0xc29b, (q15_t)0x704d, (q15_t)0xc295, (q15_t)0x704a, (q15_t)0xc290, + (q15_t)0x7047, (q15_t)0xc28a, (q15_t)0x7044, (q15_t)0xc285, (q15_t)0x7041, (q15_t)0xc27f, (q15_t)0x703e, (q15_t)0xc27a, + (q15_t)0x703b, (q15_t)0xc274, (q15_t)0x7038, (q15_t)0xc26f, (q15_t)0x7035, (q15_t)0xc269, (q15_t)0x7032, (q15_t)0xc264, + (q15_t)0x702f, (q15_t)0xc25e, (q15_t)0x702c, (q15_t)0xc259, (q15_t)0x7029, (q15_t)0xc253, (q15_t)0x7026, (q15_t)0xc24e, + (q15_t)0x7023, (q15_t)0xc248, (q15_t)0x7020, (q15_t)0xc243, (q15_t)0x701d, (q15_t)0xc23d, (q15_t)0x7019, (q15_t)0xc238, + (q15_t)0x7016, (q15_t)0xc232, (q15_t)0x7013, (q15_t)0xc22d, (q15_t)0x7010, (q15_t)0xc227, (q15_t)0x700d, (q15_t)0xc222, + (q15_t)0x700a, (q15_t)0xc21c, (q15_t)0x7007, (q15_t)0xc217, (q15_t)0x7004, (q15_t)0xc211, (q15_t)0x7001, (q15_t)0xc20c, + (q15_t)0x6ffe, (q15_t)0xc206, (q15_t)0x6ffb, (q15_t)0xc201, (q15_t)0x6ff8, (q15_t)0xc1fb, (q15_t)0x6ff5, (q15_t)0xc1f6, + (q15_t)0x6ff2, (q15_t)0xc1f0, (q15_t)0x6fef, (q15_t)0xc1eb, (q15_t)0x6fec, (q15_t)0xc1e5, (q15_t)0x6fe9, (q15_t)0xc1e0, + (q15_t)0x6fe6, (q15_t)0xc1da, (q15_t)0x6fe3, (q15_t)0xc1d5, (q15_t)0x6fe0, (q15_t)0xc1cf, (q15_t)0x6fdd, (q15_t)0xc1ca, + (q15_t)0x6fda, (q15_t)0xc1c4, (q15_t)0x6fd6, (q15_t)0xc1bf, (q15_t)0x6fd3, (q15_t)0xc1b9, (q15_t)0x6fd0, (q15_t)0xc1b4, + (q15_t)0x6fcd, (q15_t)0xc1ae, (q15_t)0x6fca, (q15_t)0xc1a9, (q15_t)0x6fc7, (q15_t)0xc1a3, (q15_t)0x6fc4, (q15_t)0xc19e, + (q15_t)0x6fc1, (q15_t)0xc198, (q15_t)0x6fbe, (q15_t)0xc193, (q15_t)0x6fbb, (q15_t)0xc18d, (q15_t)0x6fb8, (q15_t)0xc188, + (q15_t)0x6fb5, (q15_t)0xc183, (q15_t)0x6fb2, (q15_t)0xc17d, (q15_t)0x6faf, (q15_t)0xc178, (q15_t)0x6fac, (q15_t)0xc172, + (q15_t)0x6fa9, (q15_t)0xc16d, (q15_t)0x6fa5, (q15_t)0xc167, (q15_t)0x6fa2, (q15_t)0xc162, (q15_t)0x6f9f, (q15_t)0xc15c, + (q15_t)0x6f9c, (q15_t)0xc157, (q15_t)0x6f99, (q15_t)0xc151, (q15_t)0x6f96, (q15_t)0xc14c, (q15_t)0x6f93, (q15_t)0xc146, + (q15_t)0x6f90, (q15_t)0xc141, (q15_t)0x6f8d, (q15_t)0xc13b, (q15_t)0x6f8a, (q15_t)0xc136, (q15_t)0x6f87, (q15_t)0xc130, + (q15_t)0x6f84, (q15_t)0xc12b, (q15_t)0x6f81, (q15_t)0xc125, (q15_t)0x6f7d, (q15_t)0xc120, (q15_t)0x6f7a, (q15_t)0xc11a, + (q15_t)0x6f77, (q15_t)0xc115, (q15_t)0x6f74, (q15_t)0xc10f, (q15_t)0x6f71, (q15_t)0xc10a, (q15_t)0x6f6e, (q15_t)0xc105, + (q15_t)0x6f6b, (q15_t)0xc0ff, (q15_t)0x6f68, (q15_t)0xc0fa, (q15_t)0x6f65, (q15_t)0xc0f4, (q15_t)0x6f62, (q15_t)0xc0ef, + (q15_t)0x6f5f, (q15_t)0xc0e9, (q15_t)0x6f5b, (q15_t)0xc0e4, (q15_t)0x6f58, (q15_t)0xc0de, (q15_t)0x6f55, (q15_t)0xc0d9, + (q15_t)0x6f52, (q15_t)0xc0d3, (q15_t)0x6f4f, (q15_t)0xc0ce, (q15_t)0x6f4c, (q15_t)0xc0c8, (q15_t)0x6f49, (q15_t)0xc0c3, + (q15_t)0x6f46, (q15_t)0xc0bd, (q15_t)0x6f43, (q15_t)0xc0b8, (q15_t)0x6f3f, (q15_t)0xc0b3, (q15_t)0x6f3c, (q15_t)0xc0ad, + (q15_t)0x6f39, (q15_t)0xc0a8, (q15_t)0x6f36, (q15_t)0xc0a2, (q15_t)0x6f33, (q15_t)0xc09d, (q15_t)0x6f30, (q15_t)0xc097, + (q15_t)0x6f2d, (q15_t)0xc092, (q15_t)0x6f2a, (q15_t)0xc08c, (q15_t)0x6f27, (q15_t)0xc087, (q15_t)0x6f23, (q15_t)0xc081, + (q15_t)0x6f20, (q15_t)0xc07c, (q15_t)0x6f1d, (q15_t)0xc077, (q15_t)0x6f1a, (q15_t)0xc071, (q15_t)0x6f17, (q15_t)0xc06c, + (q15_t)0x6f14, (q15_t)0xc066, (q15_t)0x6f11, (q15_t)0xc061, (q15_t)0x6f0e, (q15_t)0xc05b, (q15_t)0x6f0b, (q15_t)0xc056, + (q15_t)0x6f07, (q15_t)0xc050, (q15_t)0x6f04, (q15_t)0xc04b, (q15_t)0x6f01, (q15_t)0xc045, (q15_t)0x6efe, (q15_t)0xc040, + (q15_t)0x6efb, (q15_t)0xc03b, (q15_t)0x6ef8, (q15_t)0xc035, (q15_t)0x6ef5, (q15_t)0xc030, (q15_t)0x6ef1, (q15_t)0xc02a, + (q15_t)0x6eee, (q15_t)0xc025, (q15_t)0x6eeb, (q15_t)0xc01f, (q15_t)0x6ee8, (q15_t)0xc01a, (q15_t)0x6ee5, (q15_t)0xc014, + (q15_t)0x6ee2, (q15_t)0xc00f, (q15_t)0x6edf, (q15_t)0xc00a, (q15_t)0x6edc, (q15_t)0xc004, (q15_t)0x6ed8, (q15_t)0xbfff, + (q15_t)0x6ed5, (q15_t)0xbff9, (q15_t)0x6ed2, (q15_t)0xbff4, (q15_t)0x6ecf, (q15_t)0xbfee, (q15_t)0x6ecc, (q15_t)0xbfe9, + (q15_t)0x6ec9, (q15_t)0xbfe3, (q15_t)0x6ec6, (q15_t)0xbfde, (q15_t)0x6ec2, (q15_t)0xbfd9, (q15_t)0x6ebf, (q15_t)0xbfd3, + (q15_t)0x6ebc, (q15_t)0xbfce, (q15_t)0x6eb9, (q15_t)0xbfc8, (q15_t)0x6eb6, (q15_t)0xbfc3, (q15_t)0x6eb3, (q15_t)0xbfbd, + (q15_t)0x6eaf, (q15_t)0xbfb8, (q15_t)0x6eac, (q15_t)0xbfb3, (q15_t)0x6ea9, (q15_t)0xbfad, (q15_t)0x6ea6, (q15_t)0xbfa8, + (q15_t)0x6ea3, (q15_t)0xbfa2, (q15_t)0x6ea0, (q15_t)0xbf9d, (q15_t)0x6e9c, (q15_t)0xbf97, (q15_t)0x6e99, (q15_t)0xbf92, + (q15_t)0x6e96, (q15_t)0xbf8d, (q15_t)0x6e93, (q15_t)0xbf87, (q15_t)0x6e90, (q15_t)0xbf82, (q15_t)0x6e8d, (q15_t)0xbf7c, + (q15_t)0x6e89, (q15_t)0xbf77, (q15_t)0x6e86, (q15_t)0xbf71, (q15_t)0x6e83, (q15_t)0xbf6c, (q15_t)0x6e80, (q15_t)0xbf67, + (q15_t)0x6e7d, (q15_t)0xbf61, (q15_t)0x6e7a, (q15_t)0xbf5c, (q15_t)0x6e76, (q15_t)0xbf56, (q15_t)0x6e73, (q15_t)0xbf51, + (q15_t)0x6e70, (q15_t)0xbf4b, (q15_t)0x6e6d, (q15_t)0xbf46, (q15_t)0x6e6a, (q15_t)0xbf41, (q15_t)0x6e67, (q15_t)0xbf3b, + (q15_t)0x6e63, (q15_t)0xbf36, (q15_t)0x6e60, (q15_t)0xbf30, (q15_t)0x6e5d, (q15_t)0xbf2b, (q15_t)0x6e5a, (q15_t)0xbf26, + (q15_t)0x6e57, (q15_t)0xbf20, (q15_t)0x6e53, (q15_t)0xbf1b, (q15_t)0x6e50, (q15_t)0xbf15, (q15_t)0x6e4d, (q15_t)0xbf10, + (q15_t)0x6e4a, (q15_t)0xbf0a, (q15_t)0x6e47, (q15_t)0xbf05, (q15_t)0x6e44, (q15_t)0xbf00, (q15_t)0x6e40, (q15_t)0xbefa, + (q15_t)0x6e3d, (q15_t)0xbef5, (q15_t)0x6e3a, (q15_t)0xbeef, (q15_t)0x6e37, (q15_t)0xbeea, (q15_t)0x6e34, (q15_t)0xbee5, + (q15_t)0x6e30, (q15_t)0xbedf, (q15_t)0x6e2d, (q15_t)0xbeda, (q15_t)0x6e2a, (q15_t)0xbed4, (q15_t)0x6e27, (q15_t)0xbecf, + (q15_t)0x6e24, (q15_t)0xbeca, (q15_t)0x6e20, (q15_t)0xbec4, (q15_t)0x6e1d, (q15_t)0xbebf, (q15_t)0x6e1a, (q15_t)0xbeb9, + (q15_t)0x6e17, (q15_t)0xbeb4, (q15_t)0x6e14, (q15_t)0xbeae, (q15_t)0x6e10, (q15_t)0xbea9, (q15_t)0x6e0d, (q15_t)0xbea4, + (q15_t)0x6e0a, (q15_t)0xbe9e, (q15_t)0x6e07, (q15_t)0xbe99, (q15_t)0x6e04, (q15_t)0xbe93, (q15_t)0x6e00, (q15_t)0xbe8e, + (q15_t)0x6dfd, (q15_t)0xbe89, (q15_t)0x6dfa, (q15_t)0xbe83, (q15_t)0x6df7, (q15_t)0xbe7e, (q15_t)0x6df3, (q15_t)0xbe78, + (q15_t)0x6df0, (q15_t)0xbe73, (q15_t)0x6ded, (q15_t)0xbe6e, (q15_t)0x6dea, (q15_t)0xbe68, (q15_t)0x6de7, (q15_t)0xbe63, + (q15_t)0x6de3, (q15_t)0xbe5e, (q15_t)0x6de0, (q15_t)0xbe58, (q15_t)0x6ddd, (q15_t)0xbe53, (q15_t)0x6dda, (q15_t)0xbe4d, + (q15_t)0x6dd6, (q15_t)0xbe48, (q15_t)0x6dd3, (q15_t)0xbe43, (q15_t)0x6dd0, (q15_t)0xbe3d, (q15_t)0x6dcd, (q15_t)0xbe38, + (q15_t)0x6dca, (q15_t)0xbe32, (q15_t)0x6dc6, (q15_t)0xbe2d, (q15_t)0x6dc3, (q15_t)0xbe28, (q15_t)0x6dc0, (q15_t)0xbe22, + (q15_t)0x6dbd, (q15_t)0xbe1d, (q15_t)0x6db9, (q15_t)0xbe17, (q15_t)0x6db6, (q15_t)0xbe12, (q15_t)0x6db3, (q15_t)0xbe0d, + (q15_t)0x6db0, (q15_t)0xbe07, (q15_t)0x6dac, (q15_t)0xbe02, (q15_t)0x6da9, (q15_t)0xbdfd, (q15_t)0x6da6, (q15_t)0xbdf7, + (q15_t)0x6da3, (q15_t)0xbdf2, (q15_t)0x6d9f, (q15_t)0xbdec, (q15_t)0x6d9c, (q15_t)0xbde7, (q15_t)0x6d99, (q15_t)0xbde2, + (q15_t)0x6d96, (q15_t)0xbddc, (q15_t)0x6d92, (q15_t)0xbdd7, (q15_t)0x6d8f, (q15_t)0xbdd1, (q15_t)0x6d8c, (q15_t)0xbdcc, + (q15_t)0x6d89, (q15_t)0xbdc7, (q15_t)0x6d85, (q15_t)0xbdc1, (q15_t)0x6d82, (q15_t)0xbdbc, (q15_t)0x6d7f, (q15_t)0xbdb7, + (q15_t)0x6d7c, (q15_t)0xbdb1, (q15_t)0x6d78, (q15_t)0xbdac, (q15_t)0x6d75, (q15_t)0xbda6, (q15_t)0x6d72, (q15_t)0xbda1, + (q15_t)0x6d6f, (q15_t)0xbd9c, (q15_t)0x6d6b, (q15_t)0xbd96, (q15_t)0x6d68, (q15_t)0xbd91, (q15_t)0x6d65, (q15_t)0xbd8c, + (q15_t)0x6d62, (q15_t)0xbd86, (q15_t)0x6d5e, (q15_t)0xbd81, (q15_t)0x6d5b, (q15_t)0xbd7c, (q15_t)0x6d58, (q15_t)0xbd76, + (q15_t)0x6d55, (q15_t)0xbd71, (q15_t)0x6d51, (q15_t)0xbd6b, (q15_t)0x6d4e, (q15_t)0xbd66, (q15_t)0x6d4b, (q15_t)0xbd61, + (q15_t)0x6d48, (q15_t)0xbd5b, (q15_t)0x6d44, (q15_t)0xbd56, (q15_t)0x6d41, (q15_t)0xbd51, (q15_t)0x6d3e, (q15_t)0xbd4b, + (q15_t)0x6d3a, (q15_t)0xbd46, (q15_t)0x6d37, (q15_t)0xbd40, (q15_t)0x6d34, (q15_t)0xbd3b, (q15_t)0x6d31, (q15_t)0xbd36, + (q15_t)0x6d2d, (q15_t)0xbd30, (q15_t)0x6d2a, (q15_t)0xbd2b, (q15_t)0x6d27, (q15_t)0xbd26, (q15_t)0x6d23, (q15_t)0xbd20, + (q15_t)0x6d20, (q15_t)0xbd1b, (q15_t)0x6d1d, (q15_t)0xbd16, (q15_t)0x6d1a, (q15_t)0xbd10, (q15_t)0x6d16, (q15_t)0xbd0b, + (q15_t)0x6d13, (q15_t)0xbd06, (q15_t)0x6d10, (q15_t)0xbd00, (q15_t)0x6d0c, (q15_t)0xbcfb, (q15_t)0x6d09, (q15_t)0xbcf5, + (q15_t)0x6d06, (q15_t)0xbcf0, (q15_t)0x6d03, (q15_t)0xbceb, (q15_t)0x6cff, (q15_t)0xbce5, (q15_t)0x6cfc, (q15_t)0xbce0, + (q15_t)0x6cf9, (q15_t)0xbcdb, (q15_t)0x6cf5, (q15_t)0xbcd5, (q15_t)0x6cf2, (q15_t)0xbcd0, (q15_t)0x6cef, (q15_t)0xbccb, + (q15_t)0x6cec, (q15_t)0xbcc5, (q15_t)0x6ce8, (q15_t)0xbcc0, (q15_t)0x6ce5, (q15_t)0xbcbb, (q15_t)0x6ce2, (q15_t)0xbcb5, + (q15_t)0x6cde, (q15_t)0xbcb0, (q15_t)0x6cdb, (q15_t)0xbcab, (q15_t)0x6cd8, (q15_t)0xbca5, (q15_t)0x6cd4, (q15_t)0xbca0, + (q15_t)0x6cd1, (q15_t)0xbc9b, (q15_t)0x6cce, (q15_t)0xbc95, (q15_t)0x6cca, (q15_t)0xbc90, (q15_t)0x6cc7, (q15_t)0xbc8b, + (q15_t)0x6cc4, (q15_t)0xbc85, (q15_t)0x6cc1, (q15_t)0xbc80, (q15_t)0x6cbd, (q15_t)0xbc7b, (q15_t)0x6cba, (q15_t)0xbc75, + (q15_t)0x6cb7, (q15_t)0xbc70, (q15_t)0x6cb3, (q15_t)0xbc6b, (q15_t)0x6cb0, (q15_t)0xbc65, (q15_t)0x6cad, (q15_t)0xbc60, + (q15_t)0x6ca9, (q15_t)0xbc5b, (q15_t)0x6ca6, (q15_t)0xbc55, (q15_t)0x6ca3, (q15_t)0xbc50, (q15_t)0x6c9f, (q15_t)0xbc4b, + (q15_t)0x6c9c, (q15_t)0xbc45, (q15_t)0x6c99, (q15_t)0xbc40, (q15_t)0x6c95, (q15_t)0xbc3b, (q15_t)0x6c92, (q15_t)0xbc35, + (q15_t)0x6c8f, (q15_t)0xbc30, (q15_t)0x6c8b, (q15_t)0xbc2b, (q15_t)0x6c88, (q15_t)0xbc25, (q15_t)0x6c85, (q15_t)0xbc20, + (q15_t)0x6c81, (q15_t)0xbc1b, (q15_t)0x6c7e, (q15_t)0xbc15, (q15_t)0x6c7b, (q15_t)0xbc10, (q15_t)0x6c77, (q15_t)0xbc0b, + (q15_t)0x6c74, (q15_t)0xbc05, (q15_t)0x6c71, (q15_t)0xbc00, (q15_t)0x6c6d, (q15_t)0xbbfb, (q15_t)0x6c6a, (q15_t)0xbbf5, + (q15_t)0x6c67, (q15_t)0xbbf0, (q15_t)0x6c63, (q15_t)0xbbeb, (q15_t)0x6c60, (q15_t)0xbbe5, (q15_t)0x6c5d, (q15_t)0xbbe0, + (q15_t)0x6c59, (q15_t)0xbbdb, (q15_t)0x6c56, (q15_t)0xbbd5, (q15_t)0x6c53, (q15_t)0xbbd0, (q15_t)0x6c4f, (q15_t)0xbbcb, + (q15_t)0x6c4c, (q15_t)0xbbc5, (q15_t)0x6c49, (q15_t)0xbbc0, (q15_t)0x6c45, (q15_t)0xbbbb, (q15_t)0x6c42, (q15_t)0xbbb5, + (q15_t)0x6c3f, (q15_t)0xbbb0, (q15_t)0x6c3b, (q15_t)0xbbab, (q15_t)0x6c38, (q15_t)0xbba6, (q15_t)0x6c34, (q15_t)0xbba0, + (q15_t)0x6c31, (q15_t)0xbb9b, (q15_t)0x6c2e, (q15_t)0xbb96, (q15_t)0x6c2a, (q15_t)0xbb90, (q15_t)0x6c27, (q15_t)0xbb8b, + (q15_t)0x6c24, (q15_t)0xbb86, (q15_t)0x6c20, (q15_t)0xbb80, (q15_t)0x6c1d, (q15_t)0xbb7b, (q15_t)0x6c1a, (q15_t)0xbb76, + (q15_t)0x6c16, (q15_t)0xbb70, (q15_t)0x6c13, (q15_t)0xbb6b, (q15_t)0x6c0f, (q15_t)0xbb66, (q15_t)0x6c0c, (q15_t)0xbb61, + (q15_t)0x6c09, (q15_t)0xbb5b, (q15_t)0x6c05, (q15_t)0xbb56, (q15_t)0x6c02, (q15_t)0xbb51, (q15_t)0x6bff, (q15_t)0xbb4b, + (q15_t)0x6bfb, (q15_t)0xbb46, (q15_t)0x6bf8, (q15_t)0xbb41, (q15_t)0x6bf5, (q15_t)0xbb3b, (q15_t)0x6bf1, (q15_t)0xbb36, + (q15_t)0x6bee, (q15_t)0xbb31, (q15_t)0x6bea, (q15_t)0xbb2c, (q15_t)0x6be7, (q15_t)0xbb26, (q15_t)0x6be4, (q15_t)0xbb21, + (q15_t)0x6be0, (q15_t)0xbb1c, (q15_t)0x6bdd, (q15_t)0xbb16, (q15_t)0x6bd9, (q15_t)0xbb11, (q15_t)0x6bd6, (q15_t)0xbb0c, + (q15_t)0x6bd3, (q15_t)0xbb06, (q15_t)0x6bcf, (q15_t)0xbb01, (q15_t)0x6bcc, (q15_t)0xbafc, (q15_t)0x6bc9, (q15_t)0xbaf7, + (q15_t)0x6bc5, (q15_t)0xbaf1, (q15_t)0x6bc2, (q15_t)0xbaec, (q15_t)0x6bbe, (q15_t)0xbae7, (q15_t)0x6bbb, (q15_t)0xbae1, + (q15_t)0x6bb8, (q15_t)0xbadc, (q15_t)0x6bb4, (q15_t)0xbad7, (q15_t)0x6bb1, (q15_t)0xbad2, (q15_t)0x6bad, (q15_t)0xbacc, + (q15_t)0x6baa, (q15_t)0xbac7, (q15_t)0x6ba7, (q15_t)0xbac2, (q15_t)0x6ba3, (q15_t)0xbabc, (q15_t)0x6ba0, (q15_t)0xbab7, + (q15_t)0x6b9c, (q15_t)0xbab2, (q15_t)0x6b99, (q15_t)0xbaad, (q15_t)0x6b96, (q15_t)0xbaa7, (q15_t)0x6b92, (q15_t)0xbaa2, + (q15_t)0x6b8f, (q15_t)0xba9d, (q15_t)0x6b8b, (q15_t)0xba97, (q15_t)0x6b88, (q15_t)0xba92, (q15_t)0x6b85, (q15_t)0xba8d, + (q15_t)0x6b81, (q15_t)0xba88, (q15_t)0x6b7e, (q15_t)0xba82, (q15_t)0x6b7a, (q15_t)0xba7d, (q15_t)0x6b77, (q15_t)0xba78, + (q15_t)0x6b73, (q15_t)0xba73, (q15_t)0x6b70, (q15_t)0xba6d, (q15_t)0x6b6d, (q15_t)0xba68, (q15_t)0x6b69, (q15_t)0xba63, + (q15_t)0x6b66, (q15_t)0xba5d, (q15_t)0x6b62, (q15_t)0xba58, (q15_t)0x6b5f, (q15_t)0xba53, (q15_t)0x6b5c, (q15_t)0xba4e, + (q15_t)0x6b58, (q15_t)0xba48, (q15_t)0x6b55, (q15_t)0xba43, (q15_t)0x6b51, (q15_t)0xba3e, (q15_t)0x6b4e, (q15_t)0xba39, + (q15_t)0x6b4a, (q15_t)0xba33, (q15_t)0x6b47, (q15_t)0xba2e, (q15_t)0x6b44, (q15_t)0xba29, (q15_t)0x6b40, (q15_t)0xba23, + (q15_t)0x6b3d, (q15_t)0xba1e, (q15_t)0x6b39, (q15_t)0xba19, (q15_t)0x6b36, (q15_t)0xba14, (q15_t)0x6b32, (q15_t)0xba0e, + (q15_t)0x6b2f, (q15_t)0xba09, (q15_t)0x6b2c, (q15_t)0xba04, (q15_t)0x6b28, (q15_t)0xb9ff, (q15_t)0x6b25, (q15_t)0xb9f9, + (q15_t)0x6b21, (q15_t)0xb9f4, (q15_t)0x6b1e, (q15_t)0xb9ef, (q15_t)0x6b1a, (q15_t)0xb9ea, (q15_t)0x6b17, (q15_t)0xb9e4, + (q15_t)0x6b13, (q15_t)0xb9df, (q15_t)0x6b10, (q15_t)0xb9da, (q15_t)0x6b0d, (q15_t)0xb9d5, (q15_t)0x6b09, (q15_t)0xb9cf, + (q15_t)0x6b06, (q15_t)0xb9ca, (q15_t)0x6b02, (q15_t)0xb9c5, (q15_t)0x6aff, (q15_t)0xb9c0, (q15_t)0x6afb, (q15_t)0xb9ba, + (q15_t)0x6af8, (q15_t)0xb9b5, (q15_t)0x6af4, (q15_t)0xb9b0, (q15_t)0x6af1, (q15_t)0xb9ab, (q15_t)0x6aee, (q15_t)0xb9a5, + (q15_t)0x6aea, (q15_t)0xb9a0, (q15_t)0x6ae7, (q15_t)0xb99b, (q15_t)0x6ae3, (q15_t)0xb996, (q15_t)0x6ae0, (q15_t)0xb990, + (q15_t)0x6adc, (q15_t)0xb98b, (q15_t)0x6ad9, (q15_t)0xb986, (q15_t)0x6ad5, (q15_t)0xb981, (q15_t)0x6ad2, (q15_t)0xb97b, + (q15_t)0x6ace, (q15_t)0xb976, (q15_t)0x6acb, (q15_t)0xb971, (q15_t)0x6ac8, (q15_t)0xb96c, (q15_t)0x6ac4, (q15_t)0xb966, + (q15_t)0x6ac1, (q15_t)0xb961, (q15_t)0x6abd, (q15_t)0xb95c, (q15_t)0x6aba, (q15_t)0xb957, (q15_t)0x6ab6, (q15_t)0xb951, + (q15_t)0x6ab3, (q15_t)0xb94c, (q15_t)0x6aaf, (q15_t)0xb947, (q15_t)0x6aac, (q15_t)0xb942, (q15_t)0x6aa8, (q15_t)0xb93c, + (q15_t)0x6aa5, (q15_t)0xb937, (q15_t)0x6aa1, (q15_t)0xb932, (q15_t)0x6a9e, (q15_t)0xb92d, (q15_t)0x6a9a, (q15_t)0xb928, + (q15_t)0x6a97, (q15_t)0xb922, (q15_t)0x6a93, (q15_t)0xb91d, (q15_t)0x6a90, (q15_t)0xb918, (q15_t)0x6a8c, (q15_t)0xb913, + (q15_t)0x6a89, (q15_t)0xb90d, (q15_t)0x6a86, (q15_t)0xb908, (q15_t)0x6a82, (q15_t)0xb903, (q15_t)0x6a7f, (q15_t)0xb8fe, + (q15_t)0x6a7b, (q15_t)0xb8f8, (q15_t)0x6a78, (q15_t)0xb8f3, (q15_t)0x6a74, (q15_t)0xb8ee, (q15_t)0x6a71, (q15_t)0xb8e9, + (q15_t)0x6a6d, (q15_t)0xb8e4, (q15_t)0x6a6a, (q15_t)0xb8de, (q15_t)0x6a66, (q15_t)0xb8d9, (q15_t)0x6a63, (q15_t)0xb8d4, + (q15_t)0x6a5f, (q15_t)0xb8cf, (q15_t)0x6a5c, (q15_t)0xb8c9, (q15_t)0x6a58, (q15_t)0xb8c4, (q15_t)0x6a55, (q15_t)0xb8bf, + (q15_t)0x6a51, (q15_t)0xb8ba, (q15_t)0x6a4e, (q15_t)0xb8b5, (q15_t)0x6a4a, (q15_t)0xb8af, (q15_t)0x6a47, (q15_t)0xb8aa, + (q15_t)0x6a43, (q15_t)0xb8a5, (q15_t)0x6a40, (q15_t)0xb8a0, (q15_t)0x6a3c, (q15_t)0xb89b, (q15_t)0x6a39, (q15_t)0xb895, + (q15_t)0x6a35, (q15_t)0xb890, (q15_t)0x6a32, (q15_t)0xb88b, (q15_t)0x6a2e, (q15_t)0xb886, (q15_t)0x6a2b, (q15_t)0xb880, + (q15_t)0x6a27, (q15_t)0xb87b, (q15_t)0x6a24, (q15_t)0xb876, (q15_t)0x6a20, (q15_t)0xb871, (q15_t)0x6a1d, (q15_t)0xb86c, + (q15_t)0x6a19, (q15_t)0xb866, (q15_t)0x6a16, (q15_t)0xb861, (q15_t)0x6a12, (q15_t)0xb85c, (q15_t)0x6a0e, (q15_t)0xb857, + (q15_t)0x6a0b, (q15_t)0xb852, (q15_t)0x6a07, (q15_t)0xb84c, (q15_t)0x6a04, (q15_t)0xb847, (q15_t)0x6a00, (q15_t)0xb842, + (q15_t)0x69fd, (q15_t)0xb83d, (q15_t)0x69f9, (q15_t)0xb838, (q15_t)0x69f6, (q15_t)0xb832, (q15_t)0x69f2, (q15_t)0xb82d, + (q15_t)0x69ef, (q15_t)0xb828, (q15_t)0x69eb, (q15_t)0xb823, (q15_t)0x69e8, (q15_t)0xb81e, (q15_t)0x69e4, (q15_t)0xb818, + (q15_t)0x69e1, (q15_t)0xb813, (q15_t)0x69dd, (q15_t)0xb80e, (q15_t)0x69da, (q15_t)0xb809, (q15_t)0x69d6, (q15_t)0xb804, + (q15_t)0x69d3, (q15_t)0xb7fe, (q15_t)0x69cf, (q15_t)0xb7f9, (q15_t)0x69cb, (q15_t)0xb7f4, (q15_t)0x69c8, (q15_t)0xb7ef, + (q15_t)0x69c4, (q15_t)0xb7ea, (q15_t)0x69c1, (q15_t)0xb7e4, (q15_t)0x69bd, (q15_t)0xb7df, (q15_t)0x69ba, (q15_t)0xb7da, + (q15_t)0x69b6, (q15_t)0xb7d5, (q15_t)0x69b3, (q15_t)0xb7d0, (q15_t)0x69af, (q15_t)0xb7ca, (q15_t)0x69ac, (q15_t)0xb7c5, + (q15_t)0x69a8, (q15_t)0xb7c0, (q15_t)0x69a5, (q15_t)0xb7bb, (q15_t)0x69a1, (q15_t)0xb7b6, (q15_t)0x699d, (q15_t)0xb7b1, + (q15_t)0x699a, (q15_t)0xb7ab, (q15_t)0x6996, (q15_t)0xb7a6, (q15_t)0x6993, (q15_t)0xb7a1, (q15_t)0x698f, (q15_t)0xb79c, + (q15_t)0x698c, (q15_t)0xb797, (q15_t)0x6988, (q15_t)0xb791, (q15_t)0x6985, (q15_t)0xb78c, (q15_t)0x6981, (q15_t)0xb787, + (q15_t)0x697d, (q15_t)0xb782, (q15_t)0x697a, (q15_t)0xb77d, (q15_t)0x6976, (q15_t)0xb778, (q15_t)0x6973, (q15_t)0xb772, + (q15_t)0x696f, (q15_t)0xb76d, (q15_t)0x696c, (q15_t)0xb768, (q15_t)0x6968, (q15_t)0xb763, (q15_t)0x6964, (q15_t)0xb75e, + (q15_t)0x6961, (q15_t)0xb758, (q15_t)0x695d, (q15_t)0xb753, (q15_t)0x695a, (q15_t)0xb74e, (q15_t)0x6956, (q15_t)0xb749, + (q15_t)0x6953, (q15_t)0xb744, (q15_t)0x694f, (q15_t)0xb73f, (q15_t)0x694b, (q15_t)0xb739, (q15_t)0x6948, (q15_t)0xb734, + (q15_t)0x6944, (q15_t)0xb72f, (q15_t)0x6941, (q15_t)0xb72a, (q15_t)0x693d, (q15_t)0xb725, (q15_t)0x693a, (q15_t)0xb720, + (q15_t)0x6936, (q15_t)0xb71a, (q15_t)0x6932, (q15_t)0xb715, (q15_t)0x692f, (q15_t)0xb710, (q15_t)0x692b, (q15_t)0xb70b, + (q15_t)0x6928, (q15_t)0xb706, (q15_t)0x6924, (q15_t)0xb701, (q15_t)0x6921, (q15_t)0xb6fb, (q15_t)0x691d, (q15_t)0xb6f6, + (q15_t)0x6919, (q15_t)0xb6f1, (q15_t)0x6916, (q15_t)0xb6ec, (q15_t)0x6912, (q15_t)0xb6e7, (q15_t)0x690f, (q15_t)0xb6e2, + (q15_t)0x690b, (q15_t)0xb6dd, (q15_t)0x6907, (q15_t)0xb6d7, (q15_t)0x6904, (q15_t)0xb6d2, (q15_t)0x6900, (q15_t)0xb6cd, + (q15_t)0x68fd, (q15_t)0xb6c8, (q15_t)0x68f9, (q15_t)0xb6c3, (q15_t)0x68f5, (q15_t)0xb6be, (q15_t)0x68f2, (q15_t)0xb6b8, + (q15_t)0x68ee, (q15_t)0xb6b3, (q15_t)0x68eb, (q15_t)0xb6ae, (q15_t)0x68e7, (q15_t)0xb6a9, (q15_t)0x68e3, (q15_t)0xb6a4, + (q15_t)0x68e0, (q15_t)0xb69f, (q15_t)0x68dc, (q15_t)0xb69a, (q15_t)0x68d9, (q15_t)0xb694, (q15_t)0x68d5, (q15_t)0xb68f, + (q15_t)0x68d1, (q15_t)0xb68a, (q15_t)0x68ce, (q15_t)0xb685, (q15_t)0x68ca, (q15_t)0xb680, (q15_t)0x68c7, (q15_t)0xb67b, + (q15_t)0x68c3, (q15_t)0xb676, (q15_t)0x68bf, (q15_t)0xb670, (q15_t)0x68bc, (q15_t)0xb66b, (q15_t)0x68b8, (q15_t)0xb666, + (q15_t)0x68b5, (q15_t)0xb661, (q15_t)0x68b1, (q15_t)0xb65c, (q15_t)0x68ad, (q15_t)0xb657, (q15_t)0x68aa, (q15_t)0xb652, + (q15_t)0x68a6, (q15_t)0xb64c, (q15_t)0x68a3, (q15_t)0xb647, (q15_t)0x689f, (q15_t)0xb642, (q15_t)0x689b, (q15_t)0xb63d, + (q15_t)0x6898, (q15_t)0xb638, (q15_t)0x6894, (q15_t)0xb633, (q15_t)0x6890, (q15_t)0xb62e, (q15_t)0x688d, (q15_t)0xb628, + (q15_t)0x6889, (q15_t)0xb623, (q15_t)0x6886, (q15_t)0xb61e, (q15_t)0x6882, (q15_t)0xb619, (q15_t)0x687e, (q15_t)0xb614, + (q15_t)0x687b, (q15_t)0xb60f, (q15_t)0x6877, (q15_t)0xb60a, (q15_t)0x6873, (q15_t)0xb605, (q15_t)0x6870, (q15_t)0xb5ff, + (q15_t)0x686c, (q15_t)0xb5fa, (q15_t)0x6868, (q15_t)0xb5f5, (q15_t)0x6865, (q15_t)0xb5f0, (q15_t)0x6861, (q15_t)0xb5eb, + (q15_t)0x685e, (q15_t)0xb5e6, (q15_t)0x685a, (q15_t)0xb5e1, (q15_t)0x6856, (q15_t)0xb5dc, (q15_t)0x6853, (q15_t)0xb5d6, + (q15_t)0x684f, (q15_t)0xb5d1, (q15_t)0x684b, (q15_t)0xb5cc, (q15_t)0x6848, (q15_t)0xb5c7, (q15_t)0x6844, (q15_t)0xb5c2, + (q15_t)0x6840, (q15_t)0xb5bd, (q15_t)0x683d, (q15_t)0xb5b8, (q15_t)0x6839, (q15_t)0xb5b3, (q15_t)0x6835, (q15_t)0xb5ae, + (q15_t)0x6832, (q15_t)0xb5a8, (q15_t)0x682e, (q15_t)0xb5a3, (q15_t)0x682b, (q15_t)0xb59e, (q15_t)0x6827, (q15_t)0xb599, + (q15_t)0x6823, (q15_t)0xb594, (q15_t)0x6820, (q15_t)0xb58f, (q15_t)0x681c, (q15_t)0xb58a, (q15_t)0x6818, (q15_t)0xb585, + (q15_t)0x6815, (q15_t)0xb57f, (q15_t)0x6811, (q15_t)0xb57a, (q15_t)0x680d, (q15_t)0xb575, (q15_t)0x680a, (q15_t)0xb570, + (q15_t)0x6806, (q15_t)0xb56b, (q15_t)0x6802, (q15_t)0xb566, (q15_t)0x67ff, (q15_t)0xb561, (q15_t)0x67fb, (q15_t)0xb55c, + (q15_t)0x67f7, (q15_t)0xb557, (q15_t)0x67f4, (q15_t)0xb552, (q15_t)0x67f0, (q15_t)0xb54c, (q15_t)0x67ec, (q15_t)0xb547, + (q15_t)0x67e9, (q15_t)0xb542, (q15_t)0x67e5, (q15_t)0xb53d, (q15_t)0x67e1, (q15_t)0xb538, (q15_t)0x67de, (q15_t)0xb533, + (q15_t)0x67da, (q15_t)0xb52e, (q15_t)0x67d6, (q15_t)0xb529, (q15_t)0x67d3, (q15_t)0xb524, (q15_t)0x67cf, (q15_t)0xb51f, + (q15_t)0x67cb, (q15_t)0xb519, (q15_t)0x67c8, (q15_t)0xb514, (q15_t)0x67c4, (q15_t)0xb50f, (q15_t)0x67c0, (q15_t)0xb50a, + (q15_t)0x67bd, (q15_t)0xb505, (q15_t)0x67b9, (q15_t)0xb500, (q15_t)0x67b5, (q15_t)0xb4fb, (q15_t)0x67b2, (q15_t)0xb4f6, + (q15_t)0x67ae, (q15_t)0xb4f1, (q15_t)0x67aa, (q15_t)0xb4ec, (q15_t)0x67a6, (q15_t)0xb4e7, (q15_t)0x67a3, (q15_t)0xb4e1, + (q15_t)0x679f, (q15_t)0xb4dc, (q15_t)0x679b, (q15_t)0xb4d7, (q15_t)0x6798, (q15_t)0xb4d2, (q15_t)0x6794, (q15_t)0xb4cd, + (q15_t)0x6790, (q15_t)0xb4c8, (q15_t)0x678d, (q15_t)0xb4c3, (q15_t)0x6789, (q15_t)0xb4be, (q15_t)0x6785, (q15_t)0xb4b9, + (q15_t)0x6782, (q15_t)0xb4b4, (q15_t)0x677e, (q15_t)0xb4af, (q15_t)0x677a, (q15_t)0xb4aa, (q15_t)0x6776, (q15_t)0xb4a4, + (q15_t)0x6773, (q15_t)0xb49f, (q15_t)0x676f, (q15_t)0xb49a, (q15_t)0x676b, (q15_t)0xb495, (q15_t)0x6768, (q15_t)0xb490, + (q15_t)0x6764, (q15_t)0xb48b, (q15_t)0x6760, (q15_t)0xb486, (q15_t)0x675d, (q15_t)0xb481, (q15_t)0x6759, (q15_t)0xb47c, + (q15_t)0x6755, (q15_t)0xb477, (q15_t)0x6751, (q15_t)0xb472, (q15_t)0x674e, (q15_t)0xb46d, (q15_t)0x674a, (q15_t)0xb468, + (q15_t)0x6746, (q15_t)0xb462, (q15_t)0x6743, (q15_t)0xb45d, (q15_t)0x673f, (q15_t)0xb458, (q15_t)0x673b, (q15_t)0xb453, + (q15_t)0x6737, (q15_t)0xb44e, (q15_t)0x6734, (q15_t)0xb449, (q15_t)0x6730, (q15_t)0xb444, (q15_t)0x672c, (q15_t)0xb43f, + (q15_t)0x6729, (q15_t)0xb43a, (q15_t)0x6725, (q15_t)0xb435, (q15_t)0x6721, (q15_t)0xb430, (q15_t)0x671d, (q15_t)0xb42b, + (q15_t)0x671a, (q15_t)0xb426, (q15_t)0x6716, (q15_t)0xb421, (q15_t)0x6712, (q15_t)0xb41c, (q15_t)0x670e, (q15_t)0xb417, + (q15_t)0x670b, (q15_t)0xb411, (q15_t)0x6707, (q15_t)0xb40c, (q15_t)0x6703, (q15_t)0xb407, (q15_t)0x6700, (q15_t)0xb402, + (q15_t)0x66fc, (q15_t)0xb3fd, (q15_t)0x66f8, (q15_t)0xb3f8, (q15_t)0x66f4, (q15_t)0xb3f3, (q15_t)0x66f1, (q15_t)0xb3ee, + (q15_t)0x66ed, (q15_t)0xb3e9, (q15_t)0x66e9, (q15_t)0xb3e4, (q15_t)0x66e5, (q15_t)0xb3df, (q15_t)0x66e2, (q15_t)0xb3da, + (q15_t)0x66de, (q15_t)0xb3d5, (q15_t)0x66da, (q15_t)0xb3d0, (q15_t)0x66d6, (q15_t)0xb3cb, (q15_t)0x66d3, (q15_t)0xb3c6, + (q15_t)0x66cf, (q15_t)0xb3c1, (q15_t)0x66cb, (q15_t)0xb3bc, (q15_t)0x66c8, (q15_t)0xb3b7, (q15_t)0x66c4, (q15_t)0xb3b1, + (q15_t)0x66c0, (q15_t)0xb3ac, (q15_t)0x66bc, (q15_t)0xb3a7, (q15_t)0x66b9, (q15_t)0xb3a2, (q15_t)0x66b5, (q15_t)0xb39d, + (q15_t)0x66b1, (q15_t)0xb398, (q15_t)0x66ad, (q15_t)0xb393, (q15_t)0x66aa, (q15_t)0xb38e, (q15_t)0x66a6, (q15_t)0xb389, + (q15_t)0x66a2, (q15_t)0xb384, (q15_t)0x669e, (q15_t)0xb37f, (q15_t)0x669b, (q15_t)0xb37a, (q15_t)0x6697, (q15_t)0xb375, + (q15_t)0x6693, (q15_t)0xb370, (q15_t)0x668f, (q15_t)0xb36b, (q15_t)0x668b, (q15_t)0xb366, (q15_t)0x6688, (q15_t)0xb361, + (q15_t)0x6684, (q15_t)0xb35c, (q15_t)0x6680, (q15_t)0xb357, (q15_t)0x667c, (q15_t)0xb352, (q15_t)0x6679, (q15_t)0xb34d, + (q15_t)0x6675, (q15_t)0xb348, (q15_t)0x6671, (q15_t)0xb343, (q15_t)0x666d, (q15_t)0xb33e, (q15_t)0x666a, (q15_t)0xb339, + (q15_t)0x6666, (q15_t)0xb334, (q15_t)0x6662, (q15_t)0xb32f, (q15_t)0x665e, (q15_t)0xb32a, (q15_t)0x665b, (q15_t)0xb325, + (q15_t)0x6657, (q15_t)0xb31f, (q15_t)0x6653, (q15_t)0xb31a, (q15_t)0x664f, (q15_t)0xb315, (q15_t)0x664b, (q15_t)0xb310, + (q15_t)0x6648, (q15_t)0xb30b, (q15_t)0x6644, (q15_t)0xb306, (q15_t)0x6640, (q15_t)0xb301, (q15_t)0x663c, (q15_t)0xb2fc, + (q15_t)0x6639, (q15_t)0xb2f7, (q15_t)0x6635, (q15_t)0xb2f2, (q15_t)0x6631, (q15_t)0xb2ed, (q15_t)0x662d, (q15_t)0xb2e8, + (q15_t)0x6629, (q15_t)0xb2e3, (q15_t)0x6626, (q15_t)0xb2de, (q15_t)0x6622, (q15_t)0xb2d9, (q15_t)0x661e, (q15_t)0xb2d4, + (q15_t)0x661a, (q15_t)0xb2cf, (q15_t)0x6616, (q15_t)0xb2ca, (q15_t)0x6613, (q15_t)0xb2c5, (q15_t)0x660f, (q15_t)0xb2c0, + (q15_t)0x660b, (q15_t)0xb2bb, (q15_t)0x6607, (q15_t)0xb2b6, (q15_t)0x6603, (q15_t)0xb2b1, (q15_t)0x6600, (q15_t)0xb2ac, + (q15_t)0x65fc, (q15_t)0xb2a7, (q15_t)0x65f8, (q15_t)0xb2a2, (q15_t)0x65f4, (q15_t)0xb29d, (q15_t)0x65f0, (q15_t)0xb298, + (q15_t)0x65ed, (q15_t)0xb293, (q15_t)0x65e9, (q15_t)0xb28e, (q15_t)0x65e5, (q15_t)0xb289, (q15_t)0x65e1, (q15_t)0xb284, + (q15_t)0x65dd, (q15_t)0xb27f, (q15_t)0x65da, (q15_t)0xb27a, (q15_t)0x65d6, (q15_t)0xb275, (q15_t)0x65d2, (q15_t)0xb270, + (q15_t)0x65ce, (q15_t)0xb26b, (q15_t)0x65ca, (q15_t)0xb266, (q15_t)0x65c7, (q15_t)0xb261, (q15_t)0x65c3, (q15_t)0xb25c, + (q15_t)0x65bf, (q15_t)0xb257, (q15_t)0x65bb, (q15_t)0xb252, (q15_t)0x65b7, (q15_t)0xb24d, (q15_t)0x65b4, (q15_t)0xb248, + (q15_t)0x65b0, (q15_t)0xb243, (q15_t)0x65ac, (q15_t)0xb23e, (q15_t)0x65a8, (q15_t)0xb239, (q15_t)0x65a4, (q15_t)0xb234, + (q15_t)0x65a0, (q15_t)0xb22f, (q15_t)0x659d, (q15_t)0xb22a, (q15_t)0x6599, (q15_t)0xb225, (q15_t)0x6595, (q15_t)0xb220, + (q15_t)0x6591, (q15_t)0xb21b, (q15_t)0x658d, (q15_t)0xb216, (q15_t)0x658a, (q15_t)0xb211, (q15_t)0x6586, (q15_t)0xb20c, + (q15_t)0x6582, (q15_t)0xb207, (q15_t)0x657e, (q15_t)0xb202, (q15_t)0x657a, (q15_t)0xb1fd, (q15_t)0x6576, (q15_t)0xb1f8, + (q15_t)0x6573, (q15_t)0xb1f3, (q15_t)0x656f, (q15_t)0xb1ee, (q15_t)0x656b, (q15_t)0xb1e9, (q15_t)0x6567, (q15_t)0xb1e4, + (q15_t)0x6563, (q15_t)0xb1df, (q15_t)0x655f, (q15_t)0xb1da, (q15_t)0x655c, (q15_t)0xb1d6, (q15_t)0x6558, (q15_t)0xb1d1, + (q15_t)0x6554, (q15_t)0xb1cc, (q15_t)0x6550, (q15_t)0xb1c7, (q15_t)0x654c, (q15_t)0xb1c2, (q15_t)0x6548, (q15_t)0xb1bd, + (q15_t)0x6545, (q15_t)0xb1b8, (q15_t)0x6541, (q15_t)0xb1b3, (q15_t)0x653d, (q15_t)0xb1ae, (q15_t)0x6539, (q15_t)0xb1a9, + (q15_t)0x6535, (q15_t)0xb1a4, (q15_t)0x6531, (q15_t)0xb19f, (q15_t)0x652d, (q15_t)0xb19a, (q15_t)0x652a, (q15_t)0xb195, + (q15_t)0x6526, (q15_t)0xb190, (q15_t)0x6522, (q15_t)0xb18b, (q15_t)0x651e, (q15_t)0xb186, (q15_t)0x651a, (q15_t)0xb181, + (q15_t)0x6516, (q15_t)0xb17c, (q15_t)0x6513, (q15_t)0xb177, (q15_t)0x650f, (q15_t)0xb172, (q15_t)0x650b, (q15_t)0xb16d, + (q15_t)0x6507, (q15_t)0xb168, (q15_t)0x6503, (q15_t)0xb163, (q15_t)0x64ff, (q15_t)0xb15e, (q15_t)0x64fb, (q15_t)0xb159, + (q15_t)0x64f7, (q15_t)0xb154, (q15_t)0x64f4, (q15_t)0xb14f, (q15_t)0x64f0, (q15_t)0xb14a, (q15_t)0x64ec, (q15_t)0xb146, + (q15_t)0x64e8, (q15_t)0xb141, (q15_t)0x64e4, (q15_t)0xb13c, (q15_t)0x64e0, (q15_t)0xb137, (q15_t)0x64dc, (q15_t)0xb132, + (q15_t)0x64d9, (q15_t)0xb12d, (q15_t)0x64d5, (q15_t)0xb128, (q15_t)0x64d1, (q15_t)0xb123, (q15_t)0x64cd, (q15_t)0xb11e, + (q15_t)0x64c9, (q15_t)0xb119, (q15_t)0x64c5, (q15_t)0xb114, (q15_t)0x64c1, (q15_t)0xb10f, (q15_t)0x64bd, (q15_t)0xb10a, + (q15_t)0x64ba, (q15_t)0xb105, (q15_t)0x64b6, (q15_t)0xb100, (q15_t)0x64b2, (q15_t)0xb0fb, (q15_t)0x64ae, (q15_t)0xb0f6, + (q15_t)0x64aa, (q15_t)0xb0f1, (q15_t)0x64a6, (q15_t)0xb0ec, (q15_t)0x64a2, (q15_t)0xb0e8, (q15_t)0x649e, (q15_t)0xb0e3, + (q15_t)0x649b, (q15_t)0xb0de, (q15_t)0x6497, (q15_t)0xb0d9, (q15_t)0x6493, (q15_t)0xb0d4, (q15_t)0x648f, (q15_t)0xb0cf, + (q15_t)0x648b, (q15_t)0xb0ca, (q15_t)0x6487, (q15_t)0xb0c5, (q15_t)0x6483, (q15_t)0xb0c0, (q15_t)0x647f, (q15_t)0xb0bb, + (q15_t)0x647b, (q15_t)0xb0b6, (q15_t)0x6478, (q15_t)0xb0b1, (q15_t)0x6474, (q15_t)0xb0ac, (q15_t)0x6470, (q15_t)0xb0a7, + (q15_t)0x646c, (q15_t)0xb0a2, (q15_t)0x6468, (q15_t)0xb09e, (q15_t)0x6464, (q15_t)0xb099, (q15_t)0x6460, (q15_t)0xb094, + (q15_t)0x645c, (q15_t)0xb08f, (q15_t)0x6458, (q15_t)0xb08a, (q15_t)0x6454, (q15_t)0xb085, (q15_t)0x6451, (q15_t)0xb080, + (q15_t)0x644d, (q15_t)0xb07b, (q15_t)0x6449, (q15_t)0xb076, (q15_t)0x6445, (q15_t)0xb071, (q15_t)0x6441, (q15_t)0xb06c, + (q15_t)0x643d, (q15_t)0xb067, (q15_t)0x6439, (q15_t)0xb062, (q15_t)0x6435, (q15_t)0xb05e, (q15_t)0x6431, (q15_t)0xb059, + (q15_t)0x642d, (q15_t)0xb054, (q15_t)0x6429, (q15_t)0xb04f, (q15_t)0x6426, (q15_t)0xb04a, (q15_t)0x6422, (q15_t)0xb045, + (q15_t)0x641e, (q15_t)0xb040, (q15_t)0x641a, (q15_t)0xb03b, (q15_t)0x6416, (q15_t)0xb036, (q15_t)0x6412, (q15_t)0xb031, + (q15_t)0x640e, (q15_t)0xb02c, (q15_t)0x640a, (q15_t)0xb027, (q15_t)0x6406, (q15_t)0xb023, (q15_t)0x6402, (q15_t)0xb01e, + (q15_t)0x63fe, (q15_t)0xb019, (q15_t)0x63fa, (q15_t)0xb014, (q15_t)0x63f7, (q15_t)0xb00f, (q15_t)0x63f3, (q15_t)0xb00a, + (q15_t)0x63ef, (q15_t)0xb005, (q15_t)0x63eb, (q15_t)0xb000, (q15_t)0x63e7, (q15_t)0xaffb, (q15_t)0x63e3, (q15_t)0xaff6, + (q15_t)0x63df, (q15_t)0xaff1, (q15_t)0x63db, (q15_t)0xafed, (q15_t)0x63d7, (q15_t)0xafe8, (q15_t)0x63d3, (q15_t)0xafe3, + (q15_t)0x63cf, (q15_t)0xafde, (q15_t)0x63cb, (q15_t)0xafd9, (q15_t)0x63c7, (q15_t)0xafd4, (q15_t)0x63c3, (q15_t)0xafcf, + (q15_t)0x63c0, (q15_t)0xafca, (q15_t)0x63bc, (q15_t)0xafc5, (q15_t)0x63b8, (q15_t)0xafc1, (q15_t)0x63b4, (q15_t)0xafbc, + (q15_t)0x63b0, (q15_t)0xafb7, (q15_t)0x63ac, (q15_t)0xafb2, (q15_t)0x63a8, (q15_t)0xafad, (q15_t)0x63a4, (q15_t)0xafa8, + (q15_t)0x63a0, (q15_t)0xafa3, (q15_t)0x639c, (q15_t)0xaf9e, (q15_t)0x6398, (q15_t)0xaf99, (q15_t)0x6394, (q15_t)0xaf94, + (q15_t)0x6390, (q15_t)0xaf90, (q15_t)0x638c, (q15_t)0xaf8b, (q15_t)0x6388, (q15_t)0xaf86, (q15_t)0x6384, (q15_t)0xaf81, + (q15_t)0x6380, (q15_t)0xaf7c, (q15_t)0x637c, (q15_t)0xaf77, (q15_t)0x6378, (q15_t)0xaf72, (q15_t)0x6375, (q15_t)0xaf6d, + (q15_t)0x6371, (q15_t)0xaf69, (q15_t)0x636d, (q15_t)0xaf64, (q15_t)0x6369, (q15_t)0xaf5f, (q15_t)0x6365, (q15_t)0xaf5a, + (q15_t)0x6361, (q15_t)0xaf55, (q15_t)0x635d, (q15_t)0xaf50, (q15_t)0x6359, (q15_t)0xaf4b, (q15_t)0x6355, (q15_t)0xaf46, + (q15_t)0x6351, (q15_t)0xaf41, (q15_t)0x634d, (q15_t)0xaf3d, (q15_t)0x6349, (q15_t)0xaf38, (q15_t)0x6345, (q15_t)0xaf33, + (q15_t)0x6341, (q15_t)0xaf2e, (q15_t)0x633d, (q15_t)0xaf29, (q15_t)0x6339, (q15_t)0xaf24, (q15_t)0x6335, (q15_t)0xaf1f, + (q15_t)0x6331, (q15_t)0xaf1b, (q15_t)0x632d, (q15_t)0xaf16, (q15_t)0x6329, (q15_t)0xaf11, (q15_t)0x6325, (q15_t)0xaf0c, + (q15_t)0x6321, (q15_t)0xaf07, (q15_t)0x631d, (q15_t)0xaf02, (q15_t)0x6319, (q15_t)0xaefd, (q15_t)0x6315, (q15_t)0xaef8, + (q15_t)0x6311, (q15_t)0xaef4, (q15_t)0x630d, (q15_t)0xaeef, (q15_t)0x6309, (q15_t)0xaeea, (q15_t)0x6305, (q15_t)0xaee5, + (q15_t)0x6301, (q15_t)0xaee0, (q15_t)0x62fd, (q15_t)0xaedb, (q15_t)0x62f9, (q15_t)0xaed6, (q15_t)0x62f5, (q15_t)0xaed2, + (q15_t)0x62f2, (q15_t)0xaecd, (q15_t)0x62ee, (q15_t)0xaec8, (q15_t)0x62ea, (q15_t)0xaec3, (q15_t)0x62e6, (q15_t)0xaebe, + (q15_t)0x62e2, (q15_t)0xaeb9, (q15_t)0x62de, (q15_t)0xaeb4, (q15_t)0x62da, (q15_t)0xaeb0, (q15_t)0x62d6, (q15_t)0xaeab, + (q15_t)0x62d2, (q15_t)0xaea6, (q15_t)0x62ce, (q15_t)0xaea1, (q15_t)0x62ca, (q15_t)0xae9c, (q15_t)0x62c6, (q15_t)0xae97, + (q15_t)0x62c2, (q15_t)0xae92, (q15_t)0x62be, (q15_t)0xae8e, (q15_t)0x62ba, (q15_t)0xae89, (q15_t)0x62b6, (q15_t)0xae84, + (q15_t)0x62b2, (q15_t)0xae7f, (q15_t)0x62ae, (q15_t)0xae7a, (q15_t)0x62aa, (q15_t)0xae75, (q15_t)0x62a6, (q15_t)0xae71, + (q15_t)0x62a2, (q15_t)0xae6c, (q15_t)0x629e, (q15_t)0xae67, (q15_t)0x629a, (q15_t)0xae62, (q15_t)0x6296, (q15_t)0xae5d, + (q15_t)0x6292, (q15_t)0xae58, (q15_t)0x628e, (q15_t)0xae54, (q15_t)0x628a, (q15_t)0xae4f, (q15_t)0x6286, (q15_t)0xae4a, + (q15_t)0x6282, (q15_t)0xae45, (q15_t)0x627e, (q15_t)0xae40, (q15_t)0x627a, (q15_t)0xae3b, (q15_t)0x6275, (q15_t)0xae37, + (q15_t)0x6271, (q15_t)0xae32, (q15_t)0x626d, (q15_t)0xae2d, (q15_t)0x6269, (q15_t)0xae28, (q15_t)0x6265, (q15_t)0xae23, + (q15_t)0x6261, (q15_t)0xae1e, (q15_t)0x625d, (q15_t)0xae1a, (q15_t)0x6259, (q15_t)0xae15, (q15_t)0x6255, (q15_t)0xae10, + (q15_t)0x6251, (q15_t)0xae0b, (q15_t)0x624d, (q15_t)0xae06, (q15_t)0x6249, (q15_t)0xae01, (q15_t)0x6245, (q15_t)0xadfd, + (q15_t)0x6241, (q15_t)0xadf8, (q15_t)0x623d, (q15_t)0xadf3, (q15_t)0x6239, (q15_t)0xadee, (q15_t)0x6235, (q15_t)0xade9, + (q15_t)0x6231, (q15_t)0xade4, (q15_t)0x622d, (q15_t)0xade0, (q15_t)0x6229, (q15_t)0xaddb, (q15_t)0x6225, (q15_t)0xadd6, + (q15_t)0x6221, (q15_t)0xadd1, (q15_t)0x621d, (q15_t)0xadcc, (q15_t)0x6219, (q15_t)0xadc8, (q15_t)0x6215, (q15_t)0xadc3, + (q15_t)0x6211, (q15_t)0xadbe, (q15_t)0x620d, (q15_t)0xadb9, (q15_t)0x6209, (q15_t)0xadb4, (q15_t)0x6205, (q15_t)0xadaf, + (q15_t)0x6201, (q15_t)0xadab, (q15_t)0x61fd, (q15_t)0xada6, (q15_t)0x61f9, (q15_t)0xada1, (q15_t)0x61f5, (q15_t)0xad9c, + (q15_t)0x61f1, (q15_t)0xad97, (q15_t)0x61ec, (q15_t)0xad93, (q15_t)0x61e8, (q15_t)0xad8e, (q15_t)0x61e4, (q15_t)0xad89, + (q15_t)0x61e0, (q15_t)0xad84, (q15_t)0x61dc, (q15_t)0xad7f, (q15_t)0x61d8, (q15_t)0xad7b, (q15_t)0x61d4, (q15_t)0xad76, + (q15_t)0x61d0, (q15_t)0xad71, (q15_t)0x61cc, (q15_t)0xad6c, (q15_t)0x61c8, (q15_t)0xad67, (q15_t)0x61c4, (q15_t)0xad63, + (q15_t)0x61c0, (q15_t)0xad5e, (q15_t)0x61bc, (q15_t)0xad59, (q15_t)0x61b8, (q15_t)0xad54, (q15_t)0x61b4, (q15_t)0xad4f, + (q15_t)0x61b0, (q15_t)0xad4b, (q15_t)0x61ac, (q15_t)0xad46, (q15_t)0x61a8, (q15_t)0xad41, (q15_t)0x61a3, (q15_t)0xad3c, + (q15_t)0x619f, (q15_t)0xad37, (q15_t)0x619b, (q15_t)0xad33, (q15_t)0x6197, (q15_t)0xad2e, (q15_t)0x6193, (q15_t)0xad29, + (q15_t)0x618f, (q15_t)0xad24, (q15_t)0x618b, (q15_t)0xad1f, (q15_t)0x6187, (q15_t)0xad1b, (q15_t)0x6183, (q15_t)0xad16, + (q15_t)0x617f, (q15_t)0xad11, (q15_t)0x617b, (q15_t)0xad0c, (q15_t)0x6177, (q15_t)0xad08, (q15_t)0x6173, (q15_t)0xad03, + (q15_t)0x616f, (q15_t)0xacfe, (q15_t)0x616b, (q15_t)0xacf9, (q15_t)0x6166, (q15_t)0xacf4, (q15_t)0x6162, (q15_t)0xacf0, + (q15_t)0x615e, (q15_t)0xaceb, (q15_t)0x615a, (q15_t)0xace6, (q15_t)0x6156, (q15_t)0xace1, (q15_t)0x6152, (q15_t)0xacdd, + (q15_t)0x614e, (q15_t)0xacd8, (q15_t)0x614a, (q15_t)0xacd3, (q15_t)0x6146, (q15_t)0xacce, (q15_t)0x6142, (q15_t)0xacc9, + (q15_t)0x613e, (q15_t)0xacc5, (q15_t)0x613a, (q15_t)0xacc0, (q15_t)0x6135, (q15_t)0xacbb, (q15_t)0x6131, (q15_t)0xacb6, + (q15_t)0x612d, (q15_t)0xacb2, (q15_t)0x6129, (q15_t)0xacad, (q15_t)0x6125, (q15_t)0xaca8, (q15_t)0x6121, (q15_t)0xaca3, + (q15_t)0x611d, (q15_t)0xac9e, (q15_t)0x6119, (q15_t)0xac9a, (q15_t)0x6115, (q15_t)0xac95, (q15_t)0x6111, (q15_t)0xac90, + (q15_t)0x610d, (q15_t)0xac8b, (q15_t)0x6108, (q15_t)0xac87, (q15_t)0x6104, (q15_t)0xac82, (q15_t)0x6100, (q15_t)0xac7d, + (q15_t)0x60fc, (q15_t)0xac78, (q15_t)0x60f8, (q15_t)0xac74, (q15_t)0x60f4, (q15_t)0xac6f, (q15_t)0x60f0, (q15_t)0xac6a, + (q15_t)0x60ec, (q15_t)0xac65, (q15_t)0x60e8, (q15_t)0xac61, (q15_t)0x60e4, (q15_t)0xac5c, (q15_t)0x60df, (q15_t)0xac57, + (q15_t)0x60db, (q15_t)0xac52, (q15_t)0x60d7, (q15_t)0xac4e, (q15_t)0x60d3, (q15_t)0xac49, (q15_t)0x60cf, (q15_t)0xac44, + (q15_t)0x60cb, (q15_t)0xac3f, (q15_t)0x60c7, (q15_t)0xac3b, (q15_t)0x60c3, (q15_t)0xac36, (q15_t)0x60bf, (q15_t)0xac31, + (q15_t)0x60ba, (q15_t)0xac2c, (q15_t)0x60b6, (q15_t)0xac28, (q15_t)0x60b2, (q15_t)0xac23, (q15_t)0x60ae, (q15_t)0xac1e, + (q15_t)0x60aa, (q15_t)0xac19, (q15_t)0x60a6, (q15_t)0xac15, (q15_t)0x60a2, (q15_t)0xac10, (q15_t)0x609e, (q15_t)0xac0b, + (q15_t)0x6099, (q15_t)0xac06, (q15_t)0x6095, (q15_t)0xac02, (q15_t)0x6091, (q15_t)0xabfd, (q15_t)0x608d, (q15_t)0xabf8, + (q15_t)0x6089, (q15_t)0xabf3, (q15_t)0x6085, (q15_t)0xabef, (q15_t)0x6081, (q15_t)0xabea, (q15_t)0x607d, (q15_t)0xabe5, + (q15_t)0x6078, (q15_t)0xabe0, (q15_t)0x6074, (q15_t)0xabdc, (q15_t)0x6070, (q15_t)0xabd7, (q15_t)0x606c, (q15_t)0xabd2, + (q15_t)0x6068, (q15_t)0xabcd, (q15_t)0x6064, (q15_t)0xabc9, (q15_t)0x6060, (q15_t)0xabc4, (q15_t)0x605c, (q15_t)0xabbf, + (q15_t)0x6057, (q15_t)0xabbb, (q15_t)0x6053, (q15_t)0xabb6, (q15_t)0x604f, (q15_t)0xabb1, (q15_t)0x604b, (q15_t)0xabac, + (q15_t)0x6047, (q15_t)0xaba8, (q15_t)0x6043, (q15_t)0xaba3, (q15_t)0x603f, (q15_t)0xab9e, (q15_t)0x603a, (q15_t)0xab99, + (q15_t)0x6036, (q15_t)0xab95, (q15_t)0x6032, (q15_t)0xab90, (q15_t)0x602e, (q15_t)0xab8b, (q15_t)0x602a, (q15_t)0xab87, + (q15_t)0x6026, (q15_t)0xab82, (q15_t)0x6022, (q15_t)0xab7d, (q15_t)0x601d, (q15_t)0xab78, (q15_t)0x6019, (q15_t)0xab74, + (q15_t)0x6015, (q15_t)0xab6f, (q15_t)0x6011, (q15_t)0xab6a, (q15_t)0x600d, (q15_t)0xab66, (q15_t)0x6009, (q15_t)0xab61, + (q15_t)0x6004, (q15_t)0xab5c, (q15_t)0x6000, (q15_t)0xab57, (q15_t)0x5ffc, (q15_t)0xab53, (q15_t)0x5ff8, (q15_t)0xab4e, + (q15_t)0x5ff4, (q15_t)0xab49, (q15_t)0x5ff0, (q15_t)0xab45, (q15_t)0x5fec, (q15_t)0xab40, (q15_t)0x5fe7, (q15_t)0xab3b, + (q15_t)0x5fe3, (q15_t)0xab36, (q15_t)0x5fdf, (q15_t)0xab32, (q15_t)0x5fdb, (q15_t)0xab2d, (q15_t)0x5fd7, (q15_t)0xab28, + (q15_t)0x5fd3, (q15_t)0xab24, (q15_t)0x5fce, (q15_t)0xab1f, (q15_t)0x5fca, (q15_t)0xab1a, (q15_t)0x5fc6, (q15_t)0xab16, + (q15_t)0x5fc2, (q15_t)0xab11, (q15_t)0x5fbe, (q15_t)0xab0c, (q15_t)0x5fba, (q15_t)0xab07, (q15_t)0x5fb5, (q15_t)0xab03, + (q15_t)0x5fb1, (q15_t)0xaafe, (q15_t)0x5fad, (q15_t)0xaaf9, (q15_t)0x5fa9, (q15_t)0xaaf5, (q15_t)0x5fa5, (q15_t)0xaaf0, + (q15_t)0x5fa0, (q15_t)0xaaeb, (q15_t)0x5f9c, (q15_t)0xaae7, (q15_t)0x5f98, (q15_t)0xaae2, (q15_t)0x5f94, (q15_t)0xaadd, + (q15_t)0x5f90, (q15_t)0xaad8, (q15_t)0x5f8c, (q15_t)0xaad4, (q15_t)0x5f87, (q15_t)0xaacf, (q15_t)0x5f83, (q15_t)0xaaca, + (q15_t)0x5f7f, (q15_t)0xaac6, (q15_t)0x5f7b, (q15_t)0xaac1, (q15_t)0x5f77, (q15_t)0xaabc, (q15_t)0x5f72, (q15_t)0xaab8, + (q15_t)0x5f6e, (q15_t)0xaab3, (q15_t)0x5f6a, (q15_t)0xaaae, (q15_t)0x5f66, (q15_t)0xaaaa, (q15_t)0x5f62, (q15_t)0xaaa5, + (q15_t)0x5f5e, (q15_t)0xaaa0, (q15_t)0x5f59, (q15_t)0xaa9c, (q15_t)0x5f55, (q15_t)0xaa97, (q15_t)0x5f51, (q15_t)0xaa92, + (q15_t)0x5f4d, (q15_t)0xaa8e, (q15_t)0x5f49, (q15_t)0xaa89, (q15_t)0x5f44, (q15_t)0xaa84, (q15_t)0x5f40, (q15_t)0xaa7f, + (q15_t)0x5f3c, (q15_t)0xaa7b, (q15_t)0x5f38, (q15_t)0xaa76, (q15_t)0x5f34, (q15_t)0xaa71, (q15_t)0x5f2f, (q15_t)0xaa6d, + (q15_t)0x5f2b, (q15_t)0xaa68, (q15_t)0x5f27, (q15_t)0xaa63, (q15_t)0x5f23, (q15_t)0xaa5f, (q15_t)0x5f1f, (q15_t)0xaa5a, + (q15_t)0x5f1a, (q15_t)0xaa55, (q15_t)0x5f16, (q15_t)0xaa51, (q15_t)0x5f12, (q15_t)0xaa4c, (q15_t)0x5f0e, (q15_t)0xaa47, + (q15_t)0x5f0a, (q15_t)0xaa43, (q15_t)0x5f05, (q15_t)0xaa3e, (q15_t)0x5f01, (q15_t)0xaa39, (q15_t)0x5efd, (q15_t)0xaa35, + (q15_t)0x5ef9, (q15_t)0xaa30, (q15_t)0x5ef5, (q15_t)0xaa2b, (q15_t)0x5ef0, (q15_t)0xaa27, (q15_t)0x5eec, (q15_t)0xaa22, + (q15_t)0x5ee8, (q15_t)0xaa1d, (q15_t)0x5ee4, (q15_t)0xaa19, (q15_t)0x5edf, (q15_t)0xaa14, (q15_t)0x5edb, (q15_t)0xaa10, + (q15_t)0x5ed7, (q15_t)0xaa0b, (q15_t)0x5ed3, (q15_t)0xaa06, (q15_t)0x5ecf, (q15_t)0xaa02, (q15_t)0x5eca, (q15_t)0xa9fd, + (q15_t)0x5ec6, (q15_t)0xa9f8, (q15_t)0x5ec2, (q15_t)0xa9f4, (q15_t)0x5ebe, (q15_t)0xa9ef, (q15_t)0x5eb9, (q15_t)0xa9ea, + (q15_t)0x5eb5, (q15_t)0xa9e6, (q15_t)0x5eb1, (q15_t)0xa9e1, (q15_t)0x5ead, (q15_t)0xa9dc, (q15_t)0x5ea9, (q15_t)0xa9d8, + (q15_t)0x5ea4, (q15_t)0xa9d3, (q15_t)0x5ea0, (q15_t)0xa9ce, (q15_t)0x5e9c, (q15_t)0xa9ca, (q15_t)0x5e98, (q15_t)0xa9c5, + (q15_t)0x5e93, (q15_t)0xa9c0, (q15_t)0x5e8f, (q15_t)0xa9bc, (q15_t)0x5e8b, (q15_t)0xa9b7, (q15_t)0x5e87, (q15_t)0xa9b3, + (q15_t)0x5e82, (q15_t)0xa9ae, (q15_t)0x5e7e, (q15_t)0xa9a9, (q15_t)0x5e7a, (q15_t)0xa9a5, (q15_t)0x5e76, (q15_t)0xa9a0, + (q15_t)0x5e71, (q15_t)0xa99b, (q15_t)0x5e6d, (q15_t)0xa997, (q15_t)0x5e69, (q15_t)0xa992, (q15_t)0x5e65, (q15_t)0xa98d, + (q15_t)0x5e60, (q15_t)0xa989, (q15_t)0x5e5c, (q15_t)0xa984, (q15_t)0x5e58, (q15_t)0xa980, (q15_t)0x5e54, (q15_t)0xa97b, + (q15_t)0x5e50, (q15_t)0xa976, (q15_t)0x5e4b, (q15_t)0xa972, (q15_t)0x5e47, (q15_t)0xa96d, (q15_t)0x5e43, (q15_t)0xa968, + (q15_t)0x5e3f, (q15_t)0xa964, (q15_t)0x5e3a, (q15_t)0xa95f, (q15_t)0x5e36, (q15_t)0xa95b, (q15_t)0x5e32, (q15_t)0xa956, + (q15_t)0x5e2d, (q15_t)0xa951, (q15_t)0x5e29, (q15_t)0xa94d, (q15_t)0x5e25, (q15_t)0xa948, (q15_t)0x5e21, (q15_t)0xa943, + (q15_t)0x5e1c, (q15_t)0xa93f, (q15_t)0x5e18, (q15_t)0xa93a, (q15_t)0x5e14, (q15_t)0xa936, (q15_t)0x5e10, (q15_t)0xa931, + (q15_t)0x5e0b, (q15_t)0xa92c, (q15_t)0x5e07, (q15_t)0xa928, (q15_t)0x5e03, (q15_t)0xa923, (q15_t)0x5dff, (q15_t)0xa91e, + (q15_t)0x5dfa, (q15_t)0xa91a, (q15_t)0x5df6, (q15_t)0xa915, (q15_t)0x5df2, (q15_t)0xa911, (q15_t)0x5dee, (q15_t)0xa90c, + (q15_t)0x5de9, (q15_t)0xa907, (q15_t)0x5de5, (q15_t)0xa903, (q15_t)0x5de1, (q15_t)0xa8fe, (q15_t)0x5ddc, (q15_t)0xa8fa, + (q15_t)0x5dd8, (q15_t)0xa8f5, (q15_t)0x5dd4, (q15_t)0xa8f0, (q15_t)0x5dd0, (q15_t)0xa8ec, (q15_t)0x5dcb, (q15_t)0xa8e7, + (q15_t)0x5dc7, (q15_t)0xa8e3, (q15_t)0x5dc3, (q15_t)0xa8de, (q15_t)0x5dbf, (q15_t)0xa8d9, (q15_t)0x5dba, (q15_t)0xa8d5, + (q15_t)0x5db6, (q15_t)0xa8d0, (q15_t)0x5db2, (q15_t)0xa8cc, (q15_t)0x5dad, (q15_t)0xa8c7, (q15_t)0x5da9, (q15_t)0xa8c2, + (q15_t)0x5da5, (q15_t)0xa8be, (q15_t)0x5da1, (q15_t)0xa8b9, (q15_t)0x5d9c, (q15_t)0xa8b5, (q15_t)0x5d98, (q15_t)0xa8b0, + (q15_t)0x5d94, (q15_t)0xa8ab, (q15_t)0x5d8f, (q15_t)0xa8a7, (q15_t)0x5d8b, (q15_t)0xa8a2, (q15_t)0x5d87, (q15_t)0xa89e, + (q15_t)0x5d83, (q15_t)0xa899, (q15_t)0x5d7e, (q15_t)0xa894, (q15_t)0x5d7a, (q15_t)0xa890, (q15_t)0x5d76, (q15_t)0xa88b, + (q15_t)0x5d71, (q15_t)0xa887, (q15_t)0x5d6d, (q15_t)0xa882, (q15_t)0x5d69, (q15_t)0xa87d, (q15_t)0x5d65, (q15_t)0xa879, + (q15_t)0x5d60, (q15_t)0xa874, (q15_t)0x5d5c, (q15_t)0xa870, (q15_t)0x5d58, (q15_t)0xa86b, (q15_t)0x5d53, (q15_t)0xa867, + (q15_t)0x5d4f, (q15_t)0xa862, (q15_t)0x5d4b, (q15_t)0xa85d, (q15_t)0x5d46, (q15_t)0xa859, (q15_t)0x5d42, (q15_t)0xa854, + (q15_t)0x5d3e, (q15_t)0xa850, (q15_t)0x5d3a, (q15_t)0xa84b, (q15_t)0x5d35, (q15_t)0xa847, (q15_t)0x5d31, (q15_t)0xa842, + (q15_t)0x5d2d, (q15_t)0xa83d, (q15_t)0x5d28, (q15_t)0xa839, (q15_t)0x5d24, (q15_t)0xa834, (q15_t)0x5d20, (q15_t)0xa830, + (q15_t)0x5d1b, (q15_t)0xa82b, (q15_t)0x5d17, (q15_t)0xa827, (q15_t)0x5d13, (q15_t)0xa822, (q15_t)0x5d0e, (q15_t)0xa81d, + (q15_t)0x5d0a, (q15_t)0xa819, (q15_t)0x5d06, (q15_t)0xa814, (q15_t)0x5d01, (q15_t)0xa810, (q15_t)0x5cfd, (q15_t)0xa80b, + (q15_t)0x5cf9, (q15_t)0xa807, (q15_t)0x5cf5, (q15_t)0xa802, (q15_t)0x5cf0, (q15_t)0xa7fd, (q15_t)0x5cec, (q15_t)0xa7f9, + (q15_t)0x5ce8, (q15_t)0xa7f4, (q15_t)0x5ce3, (q15_t)0xa7f0, (q15_t)0x5cdf, (q15_t)0xa7eb, (q15_t)0x5cdb, (q15_t)0xa7e7, + (q15_t)0x5cd6, (q15_t)0xa7e2, (q15_t)0x5cd2, (q15_t)0xa7de, (q15_t)0x5cce, (q15_t)0xa7d9, (q15_t)0x5cc9, (q15_t)0xa7d4, + (q15_t)0x5cc5, (q15_t)0xa7d0, (q15_t)0x5cc1, (q15_t)0xa7cb, (q15_t)0x5cbc, (q15_t)0xa7c7, (q15_t)0x5cb8, (q15_t)0xa7c2, + (q15_t)0x5cb4, (q15_t)0xa7be, (q15_t)0x5caf, (q15_t)0xa7b9, (q15_t)0x5cab, (q15_t)0xa7b5, (q15_t)0x5ca7, (q15_t)0xa7b0, + (q15_t)0x5ca2, (q15_t)0xa7ab, (q15_t)0x5c9e, (q15_t)0xa7a7, (q15_t)0x5c9a, (q15_t)0xa7a2, (q15_t)0x5c95, (q15_t)0xa79e, + (q15_t)0x5c91, (q15_t)0xa799, (q15_t)0x5c8d, (q15_t)0xa795, (q15_t)0x5c88, (q15_t)0xa790, (q15_t)0x5c84, (q15_t)0xa78c, + (q15_t)0x5c80, (q15_t)0xa787, (q15_t)0x5c7b, (q15_t)0xa783, (q15_t)0x5c77, (q15_t)0xa77e, (q15_t)0x5c73, (q15_t)0xa779, + (q15_t)0x5c6e, (q15_t)0xa775, (q15_t)0x5c6a, (q15_t)0xa770, (q15_t)0x5c66, (q15_t)0xa76c, (q15_t)0x5c61, (q15_t)0xa767, + (q15_t)0x5c5d, (q15_t)0xa763, (q15_t)0x5c58, (q15_t)0xa75e, (q15_t)0x5c54, (q15_t)0xa75a, (q15_t)0x5c50, (q15_t)0xa755, + (q15_t)0x5c4b, (q15_t)0xa751, (q15_t)0x5c47, (q15_t)0xa74c, (q15_t)0x5c43, (q15_t)0xa748, (q15_t)0x5c3e, (q15_t)0xa743, + (q15_t)0x5c3a, (q15_t)0xa73f, (q15_t)0x5c36, (q15_t)0xa73a, (q15_t)0x5c31, (q15_t)0xa735, (q15_t)0x5c2d, (q15_t)0xa731, + (q15_t)0x5c29, (q15_t)0xa72c, (q15_t)0x5c24, (q15_t)0xa728, (q15_t)0x5c20, (q15_t)0xa723, (q15_t)0x5c1b, (q15_t)0xa71f, + (q15_t)0x5c17, (q15_t)0xa71a, (q15_t)0x5c13, (q15_t)0xa716, (q15_t)0x5c0e, (q15_t)0xa711, (q15_t)0x5c0a, (q15_t)0xa70d, + (q15_t)0x5c06, (q15_t)0xa708, (q15_t)0x5c01, (q15_t)0xa704, (q15_t)0x5bfd, (q15_t)0xa6ff, (q15_t)0x5bf9, (q15_t)0xa6fb, + (q15_t)0x5bf4, (q15_t)0xa6f6, (q15_t)0x5bf0, (q15_t)0xa6f2, (q15_t)0x5beb, (q15_t)0xa6ed, (q15_t)0x5be7, (q15_t)0xa6e9, + (q15_t)0x5be3, (q15_t)0xa6e4, (q15_t)0x5bde, (q15_t)0xa6e0, (q15_t)0x5bda, (q15_t)0xa6db, (q15_t)0x5bd6, (q15_t)0xa6d7, + (q15_t)0x5bd1, (q15_t)0xa6d2, (q15_t)0x5bcd, (q15_t)0xa6ce, (q15_t)0x5bc8, (q15_t)0xa6c9, (q15_t)0x5bc4, (q15_t)0xa6c5, + (q15_t)0x5bc0, (q15_t)0xa6c0, (q15_t)0x5bbb, (q15_t)0xa6bc, (q15_t)0x5bb7, (q15_t)0xa6b7, (q15_t)0x5bb2, (q15_t)0xa6b3, + (q15_t)0x5bae, (q15_t)0xa6ae, (q15_t)0x5baa, (q15_t)0xa6aa, (q15_t)0x5ba5, (q15_t)0xa6a5, (q15_t)0x5ba1, (q15_t)0xa6a1, + (q15_t)0x5b9d, (q15_t)0xa69c, (q15_t)0x5b98, (q15_t)0xa698, (q15_t)0x5b94, (q15_t)0xa693, (q15_t)0x5b8f, (q15_t)0xa68f, + (q15_t)0x5b8b, (q15_t)0xa68a, (q15_t)0x5b87, (q15_t)0xa686, (q15_t)0x5b82, (q15_t)0xa681, (q15_t)0x5b7e, (q15_t)0xa67d, + (q15_t)0x5b79, (q15_t)0xa678, (q15_t)0x5b75, (q15_t)0xa674, (q15_t)0x5b71, (q15_t)0xa66f, (q15_t)0x5b6c, (q15_t)0xa66b, + (q15_t)0x5b68, (q15_t)0xa666, (q15_t)0x5b63, (q15_t)0xa662, (q15_t)0x5b5f, (q15_t)0xa65d, (q15_t)0x5b5b, (q15_t)0xa659, + (q15_t)0x5b56, (q15_t)0xa654, (q15_t)0x5b52, (q15_t)0xa650, (q15_t)0x5b4d, (q15_t)0xa64b, (q15_t)0x5b49, (q15_t)0xa647, + (q15_t)0x5b45, (q15_t)0xa642, (q15_t)0x5b40, (q15_t)0xa63e, (q15_t)0x5b3c, (q15_t)0xa639, (q15_t)0x5b37, (q15_t)0xa635, + (q15_t)0x5b33, (q15_t)0xa630, (q15_t)0x5b2f, (q15_t)0xa62c, (q15_t)0x5b2a, (q15_t)0xa627, (q15_t)0x5b26, (q15_t)0xa623, + (q15_t)0x5b21, (q15_t)0xa61f, (q15_t)0x5b1d, (q15_t)0xa61a, (q15_t)0x5b19, (q15_t)0xa616, (q15_t)0x5b14, (q15_t)0xa611, + (q15_t)0x5b10, (q15_t)0xa60d, (q15_t)0x5b0b, (q15_t)0xa608, (q15_t)0x5b07, (q15_t)0xa604, (q15_t)0x5b02, (q15_t)0xa5ff, + (q15_t)0x5afe, (q15_t)0xa5fb, (q15_t)0x5afa, (q15_t)0xa5f6, (q15_t)0x5af5, (q15_t)0xa5f2, (q15_t)0x5af1, (q15_t)0xa5ed, + (q15_t)0x5aec, (q15_t)0xa5e9, (q15_t)0x5ae8, (q15_t)0xa5e4, (q15_t)0x5ae4, (q15_t)0xa5e0, (q15_t)0x5adf, (q15_t)0xa5dc, + (q15_t)0x5adb, (q15_t)0xa5d7, (q15_t)0x5ad6, (q15_t)0xa5d3, (q15_t)0x5ad2, (q15_t)0xa5ce, (q15_t)0x5acd, (q15_t)0xa5ca, + (q15_t)0x5ac9, (q15_t)0xa5c5, (q15_t)0x5ac5, (q15_t)0xa5c1, (q15_t)0x5ac0, (q15_t)0xa5bc, (q15_t)0x5abc, (q15_t)0xa5b8, + (q15_t)0x5ab7, (q15_t)0xa5b3, (q15_t)0x5ab3, (q15_t)0xa5af, (q15_t)0x5aae, (q15_t)0xa5aa, (q15_t)0x5aaa, (q15_t)0xa5a6, + (q15_t)0x5aa5, (q15_t)0xa5a2, (q15_t)0x5aa1, (q15_t)0xa59d, (q15_t)0x5a9d, (q15_t)0xa599, (q15_t)0x5a98, (q15_t)0xa594, + (q15_t)0x5a94, (q15_t)0xa590, (q15_t)0x5a8f, (q15_t)0xa58b, (q15_t)0x5a8b, (q15_t)0xa587, (q15_t)0x5a86, (q15_t)0xa582, + (q15_t)0x5a82, (q15_t)0xa57e, (q15_t)0x5a7e, (q15_t)0xa57a, (q15_t)0x5a79, (q15_t)0xa575, (q15_t)0x5a75, (q15_t)0xa571, + (q15_t)0x5a70, (q15_t)0xa56c, (q15_t)0x5a6c, (q15_t)0xa568, (q15_t)0x5a67, (q15_t)0xa563, (q15_t)0x5a63, (q15_t)0xa55f, + (q15_t)0x5a5e, (q15_t)0xa55b, (q15_t)0x5a5a, (q15_t)0xa556, (q15_t)0x5a56, (q15_t)0xa552, (q15_t)0x5a51, (q15_t)0xa54d, + (q15_t)0x5a4d, (q15_t)0xa549, (q15_t)0x5a48, (q15_t)0xa544, (q15_t)0x5a44, (q15_t)0xa540, (q15_t)0x5a3f, (q15_t)0xa53b, + (q15_t)0x5a3b, (q15_t)0xa537, (q15_t)0x5a36, (q15_t)0xa533, (q15_t)0x5a32, (q15_t)0xa52e, (q15_t)0x5a2d, (q15_t)0xa52a, + (q15_t)0x5a29, (q15_t)0xa525, (q15_t)0x5a24, (q15_t)0xa521, (q15_t)0x5a20, (q15_t)0xa51c, (q15_t)0x5a1c, (q15_t)0xa518, + (q15_t)0x5a17, (q15_t)0xa514, (q15_t)0x5a13, (q15_t)0xa50f, (q15_t)0x5a0e, (q15_t)0xa50b, (q15_t)0x5a0a, (q15_t)0xa506, + (q15_t)0x5a05, (q15_t)0xa502, (q15_t)0x5a01, (q15_t)0xa4fe, (q15_t)0x59fc, (q15_t)0xa4f9, (q15_t)0x59f8, (q15_t)0xa4f5, + (q15_t)0x59f3, (q15_t)0xa4f0, (q15_t)0x59ef, (q15_t)0xa4ec, (q15_t)0x59ea, (q15_t)0xa4e7, (q15_t)0x59e6, (q15_t)0xa4e3, + (q15_t)0x59e1, (q15_t)0xa4df, (q15_t)0x59dd, (q15_t)0xa4da, (q15_t)0x59d9, (q15_t)0xa4d6, (q15_t)0x59d4, (q15_t)0xa4d1, + (q15_t)0x59d0, (q15_t)0xa4cd, (q15_t)0x59cb, (q15_t)0xa4c9, (q15_t)0x59c7, (q15_t)0xa4c4, (q15_t)0x59c2, (q15_t)0xa4c0, + (q15_t)0x59be, (q15_t)0xa4bb, (q15_t)0x59b9, (q15_t)0xa4b7, (q15_t)0x59b5, (q15_t)0xa4b3, (q15_t)0x59b0, (q15_t)0xa4ae, + (q15_t)0x59ac, (q15_t)0xa4aa, (q15_t)0x59a7, (q15_t)0xa4a5, (q15_t)0x59a3, (q15_t)0xa4a1, (q15_t)0x599e, (q15_t)0xa49d, + (q15_t)0x599a, (q15_t)0xa498, (q15_t)0x5995, (q15_t)0xa494, (q15_t)0x5991, (q15_t)0xa48f, (q15_t)0x598c, (q15_t)0xa48b, + (q15_t)0x5988, (q15_t)0xa487, (q15_t)0x5983, (q15_t)0xa482, (q15_t)0x597f, (q15_t)0xa47e, (q15_t)0x597a, (q15_t)0xa479, + (q15_t)0x5976, (q15_t)0xa475, (q15_t)0x5971, (q15_t)0xa471, (q15_t)0x596d, (q15_t)0xa46c, (q15_t)0x5968, (q15_t)0xa468, + (q15_t)0x5964, (q15_t)0xa463, (q15_t)0x595f, (q15_t)0xa45f, (q15_t)0x595b, (q15_t)0xa45b, (q15_t)0x5956, (q15_t)0xa456, + (q15_t)0x5952, (q15_t)0xa452, (q15_t)0x594d, (q15_t)0xa44e, (q15_t)0x5949, (q15_t)0xa449, (q15_t)0x5944, (q15_t)0xa445, + (q15_t)0x5940, (q15_t)0xa440, (q15_t)0x593b, (q15_t)0xa43c, (q15_t)0x5937, (q15_t)0xa438, (q15_t)0x5932, (q15_t)0xa433, + (q15_t)0x592e, (q15_t)0xa42f, (q15_t)0x5929, (q15_t)0xa42a, (q15_t)0x5925, (q15_t)0xa426, (q15_t)0x5920, (q15_t)0xa422, + (q15_t)0x591c, (q15_t)0xa41d, (q15_t)0x5917, (q15_t)0xa419, (q15_t)0x5913, (q15_t)0xa415, (q15_t)0x590e, (q15_t)0xa410, + (q15_t)0x590a, (q15_t)0xa40c, (q15_t)0x5905, (q15_t)0xa407, (q15_t)0x5901, (q15_t)0xa403, (q15_t)0x58fc, (q15_t)0xa3ff, + (q15_t)0x58f8, (q15_t)0xa3fa, (q15_t)0x58f3, (q15_t)0xa3f6, (q15_t)0x58ef, (q15_t)0xa3f2, (q15_t)0x58ea, (q15_t)0xa3ed, + (q15_t)0x58e6, (q15_t)0xa3e9, (q15_t)0x58e1, (q15_t)0xa3e5, (q15_t)0x58dd, (q15_t)0xa3e0, (q15_t)0x58d8, (q15_t)0xa3dc, + (q15_t)0x58d4, (q15_t)0xa3d7, (q15_t)0x58cf, (q15_t)0xa3d3, (q15_t)0x58cb, (q15_t)0xa3cf, (q15_t)0x58c6, (q15_t)0xa3ca, + (q15_t)0x58c1, (q15_t)0xa3c6, (q15_t)0x58bd, (q15_t)0xa3c2, (q15_t)0x58b8, (q15_t)0xa3bd, (q15_t)0x58b4, (q15_t)0xa3b9, + (q15_t)0x58af, (q15_t)0xa3b5, (q15_t)0x58ab, (q15_t)0xa3b0, (q15_t)0x58a6, (q15_t)0xa3ac, (q15_t)0x58a2, (q15_t)0xa3a8, + (q15_t)0x589d, (q15_t)0xa3a3, (q15_t)0x5899, (q15_t)0xa39f, (q15_t)0x5894, (q15_t)0xa39a, (q15_t)0x5890, (q15_t)0xa396, + (q15_t)0x588b, (q15_t)0xa392, (q15_t)0x5887, (q15_t)0xa38d, (q15_t)0x5882, (q15_t)0xa389, (q15_t)0x587d, (q15_t)0xa385, + (q15_t)0x5879, (q15_t)0xa380, (q15_t)0x5874, (q15_t)0xa37c, (q15_t)0x5870, (q15_t)0xa378, (q15_t)0x586b, (q15_t)0xa373, + (q15_t)0x5867, (q15_t)0xa36f, (q15_t)0x5862, (q15_t)0xa36b, (q15_t)0x585e, (q15_t)0xa366, (q15_t)0x5859, (q15_t)0xa362, + (q15_t)0x5855, (q15_t)0xa35e, (q15_t)0x5850, (q15_t)0xa359, (q15_t)0x584b, (q15_t)0xa355, (q15_t)0x5847, (q15_t)0xa351, + (q15_t)0x5842, (q15_t)0xa34c, (q15_t)0x583e, (q15_t)0xa348, (q15_t)0x5839, (q15_t)0xa344, (q15_t)0x5835, (q15_t)0xa33f, + (q15_t)0x5830, (q15_t)0xa33b, (q15_t)0x582c, (q15_t)0xa337, (q15_t)0x5827, (q15_t)0xa332, (q15_t)0x5822, (q15_t)0xa32e, + (q15_t)0x581e, (q15_t)0xa32a, (q15_t)0x5819, (q15_t)0xa325, (q15_t)0x5815, (q15_t)0xa321, (q15_t)0x5810, (q15_t)0xa31d, + (q15_t)0x580c, (q15_t)0xa318, (q15_t)0x5807, (q15_t)0xa314, (q15_t)0x5803, (q15_t)0xa310, (q15_t)0x57fe, (q15_t)0xa30b, + (q15_t)0x57f9, (q15_t)0xa307, (q15_t)0x57f5, (q15_t)0xa303, (q15_t)0x57f0, (q15_t)0xa2ff, (q15_t)0x57ec, (q15_t)0xa2fa, + (q15_t)0x57e7, (q15_t)0xa2f6, (q15_t)0x57e3, (q15_t)0xa2f2, (q15_t)0x57de, (q15_t)0xa2ed, (q15_t)0x57d9, (q15_t)0xa2e9, + (q15_t)0x57d5, (q15_t)0xa2e5, (q15_t)0x57d0, (q15_t)0xa2e0, (q15_t)0x57cc, (q15_t)0xa2dc, (q15_t)0x57c7, (q15_t)0xa2d8, + (q15_t)0x57c3, (q15_t)0xa2d3, (q15_t)0x57be, (q15_t)0xa2cf, (q15_t)0x57b9, (q15_t)0xa2cb, (q15_t)0x57b5, (q15_t)0xa2c6, + (q15_t)0x57b0, (q15_t)0xa2c2, (q15_t)0x57ac, (q15_t)0xa2be, (q15_t)0x57a7, (q15_t)0xa2ba, (q15_t)0x57a3, (q15_t)0xa2b5, + (q15_t)0x579e, (q15_t)0xa2b1, (q15_t)0x5799, (q15_t)0xa2ad, (q15_t)0x5795, (q15_t)0xa2a8, (q15_t)0x5790, (q15_t)0xa2a4, + (q15_t)0x578c, (q15_t)0xa2a0, (q15_t)0x5787, (q15_t)0xa29b, (q15_t)0x5783, (q15_t)0xa297, (q15_t)0x577e, (q15_t)0xa293, + (q15_t)0x5779, (q15_t)0xa28f, (q15_t)0x5775, (q15_t)0xa28a, (q15_t)0x5770, (q15_t)0xa286, (q15_t)0x576c, (q15_t)0xa282, + (q15_t)0x5767, (q15_t)0xa27d, (q15_t)0x5762, (q15_t)0xa279, (q15_t)0x575e, (q15_t)0xa275, (q15_t)0x5759, (q15_t)0xa271, + (q15_t)0x5755, (q15_t)0xa26c, (q15_t)0x5750, (q15_t)0xa268, (q15_t)0x574b, (q15_t)0xa264, (q15_t)0x5747, (q15_t)0xa25f, + (q15_t)0x5742, (q15_t)0xa25b, (q15_t)0x573e, (q15_t)0xa257, (q15_t)0x5739, (q15_t)0xa253, (q15_t)0x5734, (q15_t)0xa24e, + (q15_t)0x5730, (q15_t)0xa24a, (q15_t)0x572b, (q15_t)0xa246, (q15_t)0x5727, (q15_t)0xa241, (q15_t)0x5722, (q15_t)0xa23d, + (q15_t)0x571d, (q15_t)0xa239, (q15_t)0x5719, (q15_t)0xa235, (q15_t)0x5714, (q15_t)0xa230, (q15_t)0x5710, (q15_t)0xa22c, + (q15_t)0x570b, (q15_t)0xa228, (q15_t)0x5706, (q15_t)0xa224, (q15_t)0x5702, (q15_t)0xa21f, (q15_t)0x56fd, (q15_t)0xa21b, + (q15_t)0x56f9, (q15_t)0xa217, (q15_t)0x56f4, (q15_t)0xa212, (q15_t)0x56ef, (q15_t)0xa20e, (q15_t)0x56eb, (q15_t)0xa20a, + (q15_t)0x56e6, (q15_t)0xa206, (q15_t)0x56e2, (q15_t)0xa201, (q15_t)0x56dd, (q15_t)0xa1fd, (q15_t)0x56d8, (q15_t)0xa1f9, + (q15_t)0x56d4, (q15_t)0xa1f5, (q15_t)0x56cf, (q15_t)0xa1f0, (q15_t)0x56ca, (q15_t)0xa1ec, (q15_t)0x56c6, (q15_t)0xa1e8, + (q15_t)0x56c1, (q15_t)0xa1e4, (q15_t)0x56bd, (q15_t)0xa1df, (q15_t)0x56b8, (q15_t)0xa1db, (q15_t)0x56b3, (q15_t)0xa1d7, + (q15_t)0x56af, (q15_t)0xa1d3, (q15_t)0x56aa, (q15_t)0xa1ce, (q15_t)0x56a5, (q15_t)0xa1ca, (q15_t)0x56a1, (q15_t)0xa1c6, + (q15_t)0x569c, (q15_t)0xa1c1, (q15_t)0x5698, (q15_t)0xa1bd, (q15_t)0x5693, (q15_t)0xa1b9, (q15_t)0x568e, (q15_t)0xa1b5, + (q15_t)0x568a, (q15_t)0xa1b0, (q15_t)0x5685, (q15_t)0xa1ac, (q15_t)0x5680, (q15_t)0xa1a8, (q15_t)0x567c, (q15_t)0xa1a4, + (q15_t)0x5677, (q15_t)0xa1a0, (q15_t)0x5673, (q15_t)0xa19b, (q15_t)0x566e, (q15_t)0xa197, (q15_t)0x5669, (q15_t)0xa193, + (q15_t)0x5665, (q15_t)0xa18f, (q15_t)0x5660, (q15_t)0xa18a, (q15_t)0x565b, (q15_t)0xa186, (q15_t)0x5657, (q15_t)0xa182, + (q15_t)0x5652, (q15_t)0xa17e, (q15_t)0x564d, (q15_t)0xa179, (q15_t)0x5649, (q15_t)0xa175, (q15_t)0x5644, (q15_t)0xa171, + (q15_t)0x5640, (q15_t)0xa16d, (q15_t)0x563b, (q15_t)0xa168, (q15_t)0x5636, (q15_t)0xa164, (q15_t)0x5632, (q15_t)0xa160, + (q15_t)0x562d, (q15_t)0xa15c, (q15_t)0x5628, (q15_t)0xa157, (q15_t)0x5624, (q15_t)0xa153, (q15_t)0x561f, (q15_t)0xa14f, + (q15_t)0x561a, (q15_t)0xa14b, (q15_t)0x5616, (q15_t)0xa147, (q15_t)0x5611, (q15_t)0xa142, (q15_t)0x560c, (q15_t)0xa13e, + (q15_t)0x5608, (q15_t)0xa13a, (q15_t)0x5603, (q15_t)0xa136, (q15_t)0x55fe, (q15_t)0xa131, (q15_t)0x55fa, (q15_t)0xa12d, + (q15_t)0x55f5, (q15_t)0xa129, (q15_t)0x55f0, (q15_t)0xa125, (q15_t)0x55ec, (q15_t)0xa121, (q15_t)0x55e7, (q15_t)0xa11c, + (q15_t)0x55e3, (q15_t)0xa118, (q15_t)0x55de, (q15_t)0xa114, (q15_t)0x55d9, (q15_t)0xa110, (q15_t)0x55d5, (q15_t)0xa10b, + (q15_t)0x55d0, (q15_t)0xa107, (q15_t)0x55cb, (q15_t)0xa103, (q15_t)0x55c7, (q15_t)0xa0ff, (q15_t)0x55c2, (q15_t)0xa0fb, + (q15_t)0x55bd, (q15_t)0xa0f6, (q15_t)0x55b9, (q15_t)0xa0f2, (q15_t)0x55b4, (q15_t)0xa0ee, (q15_t)0x55af, (q15_t)0xa0ea, + (q15_t)0x55ab, (q15_t)0xa0e6, (q15_t)0x55a6, (q15_t)0xa0e1, (q15_t)0x55a1, (q15_t)0xa0dd, (q15_t)0x559d, (q15_t)0xa0d9, + (q15_t)0x5598, (q15_t)0xa0d5, (q15_t)0x5593, (q15_t)0xa0d1, (q15_t)0x558f, (q15_t)0xa0cc, (q15_t)0x558a, (q15_t)0xa0c8, + (q15_t)0x5585, (q15_t)0xa0c4, (q15_t)0x5581, (q15_t)0xa0c0, (q15_t)0x557c, (q15_t)0xa0bc, (q15_t)0x5577, (q15_t)0xa0b7, + (q15_t)0x5572, (q15_t)0xa0b3, (q15_t)0x556e, (q15_t)0xa0af, (q15_t)0x5569, (q15_t)0xa0ab, (q15_t)0x5564, (q15_t)0xa0a7, + (q15_t)0x5560, (q15_t)0xa0a2, (q15_t)0x555b, (q15_t)0xa09e, (q15_t)0x5556, (q15_t)0xa09a, (q15_t)0x5552, (q15_t)0xa096, + (q15_t)0x554d, (q15_t)0xa092, (q15_t)0x5548, (q15_t)0xa08e, (q15_t)0x5544, (q15_t)0xa089, (q15_t)0x553f, (q15_t)0xa085, + (q15_t)0x553a, (q15_t)0xa081, (q15_t)0x5536, (q15_t)0xa07d, (q15_t)0x5531, (q15_t)0xa079, (q15_t)0x552c, (q15_t)0xa074, + (q15_t)0x5528, (q15_t)0xa070, (q15_t)0x5523, (q15_t)0xa06c, (q15_t)0x551e, (q15_t)0xa068, (q15_t)0x5519, (q15_t)0xa064, + (q15_t)0x5515, (q15_t)0xa060, (q15_t)0x5510, (q15_t)0xa05b, (q15_t)0x550b, (q15_t)0xa057, (q15_t)0x5507, (q15_t)0xa053, + (q15_t)0x5502, (q15_t)0xa04f, (q15_t)0x54fd, (q15_t)0xa04b, (q15_t)0x54f9, (q15_t)0xa046, (q15_t)0x54f4, (q15_t)0xa042, + (q15_t)0x54ef, (q15_t)0xa03e, (q15_t)0x54ea, (q15_t)0xa03a, (q15_t)0x54e6, (q15_t)0xa036, (q15_t)0x54e1, (q15_t)0xa032, + (q15_t)0x54dc, (q15_t)0xa02d, (q15_t)0x54d8, (q15_t)0xa029, (q15_t)0x54d3, (q15_t)0xa025, (q15_t)0x54ce, (q15_t)0xa021, + (q15_t)0x54ca, (q15_t)0xa01d, (q15_t)0x54c5, (q15_t)0xa019, (q15_t)0x54c0, (q15_t)0xa014, (q15_t)0x54bb, (q15_t)0xa010, + (q15_t)0x54b7, (q15_t)0xa00c, (q15_t)0x54b2, (q15_t)0xa008, (q15_t)0x54ad, (q15_t)0xa004, (q15_t)0x54a9, (q15_t)0xa000, + (q15_t)0x54a4, (q15_t)0x9ffc, (q15_t)0x549f, (q15_t)0x9ff7, (q15_t)0x549a, (q15_t)0x9ff3, (q15_t)0x5496, (q15_t)0x9fef, + (q15_t)0x5491, (q15_t)0x9feb, (q15_t)0x548c, (q15_t)0x9fe7, (q15_t)0x5488, (q15_t)0x9fe3, (q15_t)0x5483, (q15_t)0x9fde, + (q15_t)0x547e, (q15_t)0x9fda, (q15_t)0x5479, (q15_t)0x9fd6, (q15_t)0x5475, (q15_t)0x9fd2, (q15_t)0x5470, (q15_t)0x9fce, + (q15_t)0x546b, (q15_t)0x9fca, (q15_t)0x5467, (q15_t)0x9fc6, (q15_t)0x5462, (q15_t)0x9fc1, (q15_t)0x545d, (q15_t)0x9fbd, + (q15_t)0x5458, (q15_t)0x9fb9, (q15_t)0x5454, (q15_t)0x9fb5, (q15_t)0x544f, (q15_t)0x9fb1, (q15_t)0x544a, (q15_t)0x9fad, + (q15_t)0x5445, (q15_t)0x9fa9, (q15_t)0x5441, (q15_t)0x9fa4, (q15_t)0x543c, (q15_t)0x9fa0, (q15_t)0x5437, (q15_t)0x9f9c, + (q15_t)0x5433, (q15_t)0x9f98, (q15_t)0x542e, (q15_t)0x9f94, (q15_t)0x5429, (q15_t)0x9f90, (q15_t)0x5424, (q15_t)0x9f8c, + (q15_t)0x5420, (q15_t)0x9f88, (q15_t)0x541b, (q15_t)0x9f83, (q15_t)0x5416, (q15_t)0x9f7f, (q15_t)0x5411, (q15_t)0x9f7b, + (q15_t)0x540d, (q15_t)0x9f77, (q15_t)0x5408, (q15_t)0x9f73, (q15_t)0x5403, (q15_t)0x9f6f, (q15_t)0x53fe, (q15_t)0x9f6b, + (q15_t)0x53fa, (q15_t)0x9f67, (q15_t)0x53f5, (q15_t)0x9f62, (q15_t)0x53f0, (q15_t)0x9f5e, (q15_t)0x53eb, (q15_t)0x9f5a, + (q15_t)0x53e7, (q15_t)0x9f56, (q15_t)0x53e2, (q15_t)0x9f52, (q15_t)0x53dd, (q15_t)0x9f4e, (q15_t)0x53d8, (q15_t)0x9f4a, + (q15_t)0x53d4, (q15_t)0x9f46, (q15_t)0x53cf, (q15_t)0x9f41, (q15_t)0x53ca, (q15_t)0x9f3d, (q15_t)0x53c5, (q15_t)0x9f39, + (q15_t)0x53c1, (q15_t)0x9f35, (q15_t)0x53bc, (q15_t)0x9f31, (q15_t)0x53b7, (q15_t)0x9f2d, (q15_t)0x53b2, (q15_t)0x9f29, + (q15_t)0x53ae, (q15_t)0x9f25, (q15_t)0x53a9, (q15_t)0x9f21, (q15_t)0x53a4, (q15_t)0x9f1c, (q15_t)0x539f, (q15_t)0x9f18, + (q15_t)0x539b, (q15_t)0x9f14, (q15_t)0x5396, (q15_t)0x9f10, (q15_t)0x5391, (q15_t)0x9f0c, (q15_t)0x538c, (q15_t)0x9f08, + (q15_t)0x5388, (q15_t)0x9f04, (q15_t)0x5383, (q15_t)0x9f00, (q15_t)0x537e, (q15_t)0x9efc, (q15_t)0x5379, (q15_t)0x9ef8, + (q15_t)0x5375, (q15_t)0x9ef3, (q15_t)0x5370, (q15_t)0x9eef, (q15_t)0x536b, (q15_t)0x9eeb, (q15_t)0x5366, (q15_t)0x9ee7, + (q15_t)0x5362, (q15_t)0x9ee3, (q15_t)0x535d, (q15_t)0x9edf, (q15_t)0x5358, (q15_t)0x9edb, (q15_t)0x5353, (q15_t)0x9ed7, + (q15_t)0x534e, (q15_t)0x9ed3, (q15_t)0x534a, (q15_t)0x9ecf, (q15_t)0x5345, (q15_t)0x9ecb, (q15_t)0x5340, (q15_t)0x9ec6, + (q15_t)0x533b, (q15_t)0x9ec2, (q15_t)0x5337, (q15_t)0x9ebe, (q15_t)0x5332, (q15_t)0x9eba, (q15_t)0x532d, (q15_t)0x9eb6, + (q15_t)0x5328, (q15_t)0x9eb2, (q15_t)0x5323, (q15_t)0x9eae, (q15_t)0x531f, (q15_t)0x9eaa, (q15_t)0x531a, (q15_t)0x9ea6, + (q15_t)0x5315, (q15_t)0x9ea2, (q15_t)0x5310, (q15_t)0x9e9e, (q15_t)0x530c, (q15_t)0x9e9a, (q15_t)0x5307, (q15_t)0x9e95, + (q15_t)0x5302, (q15_t)0x9e91, (q15_t)0x52fd, (q15_t)0x9e8d, (q15_t)0x52f8, (q15_t)0x9e89, (q15_t)0x52f4, (q15_t)0x9e85, + (q15_t)0x52ef, (q15_t)0x9e81, (q15_t)0x52ea, (q15_t)0x9e7d, (q15_t)0x52e5, (q15_t)0x9e79, (q15_t)0x52e1, (q15_t)0x9e75, + (q15_t)0x52dc, (q15_t)0x9e71, (q15_t)0x52d7, (q15_t)0x9e6d, (q15_t)0x52d2, (q15_t)0x9e69, (q15_t)0x52cd, (q15_t)0x9e65, + (q15_t)0x52c9, (q15_t)0x9e61, (q15_t)0x52c4, (q15_t)0x9e5d, (q15_t)0x52bf, (q15_t)0x9e58, (q15_t)0x52ba, (q15_t)0x9e54, + (q15_t)0x52b5, (q15_t)0x9e50, (q15_t)0x52b1, (q15_t)0x9e4c, (q15_t)0x52ac, (q15_t)0x9e48, (q15_t)0x52a7, (q15_t)0x9e44, + (q15_t)0x52a2, (q15_t)0x9e40, (q15_t)0x529d, (q15_t)0x9e3c, (q15_t)0x5299, (q15_t)0x9e38, (q15_t)0x5294, (q15_t)0x9e34, + (q15_t)0x528f, (q15_t)0x9e30, (q15_t)0x528a, (q15_t)0x9e2c, (q15_t)0x5285, (q15_t)0x9e28, (q15_t)0x5281, (q15_t)0x9e24, + (q15_t)0x527c, (q15_t)0x9e20, (q15_t)0x5277, (q15_t)0x9e1c, (q15_t)0x5272, (q15_t)0x9e18, (q15_t)0x526d, (q15_t)0x9e14, + (q15_t)0x5269, (q15_t)0x9e0f, (q15_t)0x5264, (q15_t)0x9e0b, (q15_t)0x525f, (q15_t)0x9e07, (q15_t)0x525a, (q15_t)0x9e03, + (q15_t)0x5255, (q15_t)0x9dff, (q15_t)0x5251, (q15_t)0x9dfb, (q15_t)0x524c, (q15_t)0x9df7, (q15_t)0x5247, (q15_t)0x9df3, + (q15_t)0x5242, (q15_t)0x9def, (q15_t)0x523d, (q15_t)0x9deb, (q15_t)0x5238, (q15_t)0x9de7, (q15_t)0x5234, (q15_t)0x9de3, + (q15_t)0x522f, (q15_t)0x9ddf, (q15_t)0x522a, (q15_t)0x9ddb, (q15_t)0x5225, (q15_t)0x9dd7, (q15_t)0x5220, (q15_t)0x9dd3, + (q15_t)0x521c, (q15_t)0x9dcf, (q15_t)0x5217, (q15_t)0x9dcb, (q15_t)0x5212, (q15_t)0x9dc7, (q15_t)0x520d, (q15_t)0x9dc3, + (q15_t)0x5208, (q15_t)0x9dbf, (q15_t)0x5203, (q15_t)0x9dbb, (q15_t)0x51ff, (q15_t)0x9db7, (q15_t)0x51fa, (q15_t)0x9db3, + (q15_t)0x51f5, (q15_t)0x9daf, (q15_t)0x51f0, (q15_t)0x9dab, (q15_t)0x51eb, (q15_t)0x9da7, (q15_t)0x51e6, (q15_t)0x9da3, + (q15_t)0x51e2, (q15_t)0x9d9f, (q15_t)0x51dd, (q15_t)0x9d9b, (q15_t)0x51d8, (q15_t)0x9d97, (q15_t)0x51d3, (q15_t)0x9d93, + (q15_t)0x51ce, (q15_t)0x9d8f, (q15_t)0x51c9, (q15_t)0x9d8b, (q15_t)0x51c5, (q15_t)0x9d86, (q15_t)0x51c0, (q15_t)0x9d82, + (q15_t)0x51bb, (q15_t)0x9d7e, (q15_t)0x51b6, (q15_t)0x9d7a, (q15_t)0x51b1, (q15_t)0x9d76, (q15_t)0x51ac, (q15_t)0x9d72, + (q15_t)0x51a8, (q15_t)0x9d6e, (q15_t)0x51a3, (q15_t)0x9d6a, (q15_t)0x519e, (q15_t)0x9d66, (q15_t)0x5199, (q15_t)0x9d62, + (q15_t)0x5194, (q15_t)0x9d5e, (q15_t)0x518f, (q15_t)0x9d5a, (q15_t)0x518b, (q15_t)0x9d56, (q15_t)0x5186, (q15_t)0x9d52, + (q15_t)0x5181, (q15_t)0x9d4e, (q15_t)0x517c, (q15_t)0x9d4a, (q15_t)0x5177, (q15_t)0x9d46, (q15_t)0x5172, (q15_t)0x9d42, + (q15_t)0x516e, (q15_t)0x9d3e, (q15_t)0x5169, (q15_t)0x9d3a, (q15_t)0x5164, (q15_t)0x9d36, (q15_t)0x515f, (q15_t)0x9d32, + (q15_t)0x515a, (q15_t)0x9d2e, (q15_t)0x5155, (q15_t)0x9d2a, (q15_t)0x5150, (q15_t)0x9d26, (q15_t)0x514c, (q15_t)0x9d22, + (q15_t)0x5147, (q15_t)0x9d1e, (q15_t)0x5142, (q15_t)0x9d1a, (q15_t)0x513d, (q15_t)0x9d16, (q15_t)0x5138, (q15_t)0x9d12, + (q15_t)0x5133, (q15_t)0x9d0e, (q15_t)0x512e, (q15_t)0x9d0b, (q15_t)0x512a, (q15_t)0x9d07, (q15_t)0x5125, (q15_t)0x9d03, + (q15_t)0x5120, (q15_t)0x9cff, (q15_t)0x511b, (q15_t)0x9cfb, (q15_t)0x5116, (q15_t)0x9cf7, (q15_t)0x5111, (q15_t)0x9cf3, + (q15_t)0x510c, (q15_t)0x9cef, (q15_t)0x5108, (q15_t)0x9ceb, (q15_t)0x5103, (q15_t)0x9ce7, (q15_t)0x50fe, (q15_t)0x9ce3, + (q15_t)0x50f9, (q15_t)0x9cdf, (q15_t)0x50f4, (q15_t)0x9cdb, (q15_t)0x50ef, (q15_t)0x9cd7, (q15_t)0x50ea, (q15_t)0x9cd3, + (q15_t)0x50e5, (q15_t)0x9ccf, (q15_t)0x50e1, (q15_t)0x9ccb, (q15_t)0x50dc, (q15_t)0x9cc7, (q15_t)0x50d7, (q15_t)0x9cc3, + (q15_t)0x50d2, (q15_t)0x9cbf, (q15_t)0x50cd, (q15_t)0x9cbb, (q15_t)0x50c8, (q15_t)0x9cb7, (q15_t)0x50c3, (q15_t)0x9cb3, + (q15_t)0x50bf, (q15_t)0x9caf, (q15_t)0x50ba, (q15_t)0x9cab, (q15_t)0x50b5, (q15_t)0x9ca7, (q15_t)0x50b0, (q15_t)0x9ca3, + (q15_t)0x50ab, (q15_t)0x9c9f, (q15_t)0x50a6, (q15_t)0x9c9b, (q15_t)0x50a1, (q15_t)0x9c97, (q15_t)0x509c, (q15_t)0x9c93, + (q15_t)0x5097, (q15_t)0x9c8f, (q15_t)0x5093, (q15_t)0x9c8b, (q15_t)0x508e, (q15_t)0x9c88, (q15_t)0x5089, (q15_t)0x9c84, + (q15_t)0x5084, (q15_t)0x9c80, (q15_t)0x507f, (q15_t)0x9c7c, (q15_t)0x507a, (q15_t)0x9c78, (q15_t)0x5075, (q15_t)0x9c74, + (q15_t)0x5070, (q15_t)0x9c70, (q15_t)0x506c, (q15_t)0x9c6c, (q15_t)0x5067, (q15_t)0x9c68, (q15_t)0x5062, (q15_t)0x9c64, + (q15_t)0x505d, (q15_t)0x9c60, (q15_t)0x5058, (q15_t)0x9c5c, (q15_t)0x5053, (q15_t)0x9c58, (q15_t)0x504e, (q15_t)0x9c54, + (q15_t)0x5049, (q15_t)0x9c50, (q15_t)0x5044, (q15_t)0x9c4c, (q15_t)0x503f, (q15_t)0x9c48, (q15_t)0x503b, (q15_t)0x9c44, + (q15_t)0x5036, (q15_t)0x9c40, (q15_t)0x5031, (q15_t)0x9c3d, (q15_t)0x502c, (q15_t)0x9c39, (q15_t)0x5027, (q15_t)0x9c35, + (q15_t)0x5022, (q15_t)0x9c31, (q15_t)0x501d, (q15_t)0x9c2d, (q15_t)0x5018, (q15_t)0x9c29, (q15_t)0x5013, (q15_t)0x9c25, + (q15_t)0x500f, (q15_t)0x9c21, (q15_t)0x500a, (q15_t)0x9c1d, (q15_t)0x5005, (q15_t)0x9c19, (q15_t)0x5000, (q15_t)0x9c15, + (q15_t)0x4ffb, (q15_t)0x9c11, (q15_t)0x4ff6, (q15_t)0x9c0d, (q15_t)0x4ff1, (q15_t)0x9c09, (q15_t)0x4fec, (q15_t)0x9c06, + (q15_t)0x4fe7, (q15_t)0x9c02, (q15_t)0x4fe2, (q15_t)0x9bfe, (q15_t)0x4fdd, (q15_t)0x9bfa, (q15_t)0x4fd9, (q15_t)0x9bf6, + (q15_t)0x4fd4, (q15_t)0x9bf2, (q15_t)0x4fcf, (q15_t)0x9bee, (q15_t)0x4fca, (q15_t)0x9bea, (q15_t)0x4fc5, (q15_t)0x9be6, + (q15_t)0x4fc0, (q15_t)0x9be2, (q15_t)0x4fbb, (q15_t)0x9bde, (q15_t)0x4fb6, (q15_t)0x9bda, (q15_t)0x4fb1, (q15_t)0x9bd7, + (q15_t)0x4fac, (q15_t)0x9bd3, (q15_t)0x4fa7, (q15_t)0x9bcf, (q15_t)0x4fa2, (q15_t)0x9bcb, (q15_t)0x4f9e, (q15_t)0x9bc7, + (q15_t)0x4f99, (q15_t)0x9bc3, (q15_t)0x4f94, (q15_t)0x9bbf, (q15_t)0x4f8f, (q15_t)0x9bbb, (q15_t)0x4f8a, (q15_t)0x9bb7, + (q15_t)0x4f85, (q15_t)0x9bb3, (q15_t)0x4f80, (q15_t)0x9baf, (q15_t)0x4f7b, (q15_t)0x9bac, (q15_t)0x4f76, (q15_t)0x9ba8, + (q15_t)0x4f71, (q15_t)0x9ba4, (q15_t)0x4f6c, (q15_t)0x9ba0, (q15_t)0x4f67, (q15_t)0x9b9c, (q15_t)0x4f62, (q15_t)0x9b98, + (q15_t)0x4f5e, (q15_t)0x9b94, (q15_t)0x4f59, (q15_t)0x9b90, (q15_t)0x4f54, (q15_t)0x9b8c, (q15_t)0x4f4f, (q15_t)0x9b88, + (q15_t)0x4f4a, (q15_t)0x9b85, (q15_t)0x4f45, (q15_t)0x9b81, (q15_t)0x4f40, (q15_t)0x9b7d, (q15_t)0x4f3b, (q15_t)0x9b79, + (q15_t)0x4f36, (q15_t)0x9b75, (q15_t)0x4f31, (q15_t)0x9b71, (q15_t)0x4f2c, (q15_t)0x9b6d, (q15_t)0x4f27, (q15_t)0x9b69, + (q15_t)0x4f22, (q15_t)0x9b65, (q15_t)0x4f1d, (q15_t)0x9b62, (q15_t)0x4f18, (q15_t)0x9b5e, (q15_t)0x4f14, (q15_t)0x9b5a, + (q15_t)0x4f0f, (q15_t)0x9b56, (q15_t)0x4f0a, (q15_t)0x9b52, (q15_t)0x4f05, (q15_t)0x9b4e, (q15_t)0x4f00, (q15_t)0x9b4a, + (q15_t)0x4efb, (q15_t)0x9b46, (q15_t)0x4ef6, (q15_t)0x9b43, (q15_t)0x4ef1, (q15_t)0x9b3f, (q15_t)0x4eec, (q15_t)0x9b3b, + (q15_t)0x4ee7, (q15_t)0x9b37, (q15_t)0x4ee2, (q15_t)0x9b33, (q15_t)0x4edd, (q15_t)0x9b2f, (q15_t)0x4ed8, (q15_t)0x9b2b, + (q15_t)0x4ed3, (q15_t)0x9b27, (q15_t)0x4ece, (q15_t)0x9b24, (q15_t)0x4ec9, (q15_t)0x9b20, (q15_t)0x4ec4, (q15_t)0x9b1c, + (q15_t)0x4ebf, (q15_t)0x9b18, (q15_t)0x4eba, (q15_t)0x9b14, (q15_t)0x4eb6, (q15_t)0x9b10, (q15_t)0x4eb1, (q15_t)0x9b0c, + (q15_t)0x4eac, (q15_t)0x9b09, (q15_t)0x4ea7, (q15_t)0x9b05, (q15_t)0x4ea2, (q15_t)0x9b01, (q15_t)0x4e9d, (q15_t)0x9afd, + (q15_t)0x4e98, (q15_t)0x9af9, (q15_t)0x4e93, (q15_t)0x9af5, (q15_t)0x4e8e, (q15_t)0x9af1, (q15_t)0x4e89, (q15_t)0x9aed, + (q15_t)0x4e84, (q15_t)0x9aea, (q15_t)0x4e7f, (q15_t)0x9ae6, (q15_t)0x4e7a, (q15_t)0x9ae2, (q15_t)0x4e75, (q15_t)0x9ade, + (q15_t)0x4e70, (q15_t)0x9ada, (q15_t)0x4e6b, (q15_t)0x9ad6, (q15_t)0x4e66, (q15_t)0x9ad3, (q15_t)0x4e61, (q15_t)0x9acf, + (q15_t)0x4e5c, (q15_t)0x9acb, (q15_t)0x4e57, (q15_t)0x9ac7, (q15_t)0x4e52, (q15_t)0x9ac3, (q15_t)0x4e4d, (q15_t)0x9abf, + (q15_t)0x4e48, (q15_t)0x9abb, (q15_t)0x4e43, (q15_t)0x9ab8, (q15_t)0x4e3e, (q15_t)0x9ab4, (q15_t)0x4e39, (q15_t)0x9ab0, + (q15_t)0x4e34, (q15_t)0x9aac, (q15_t)0x4e2f, (q15_t)0x9aa8, (q15_t)0x4e2a, (q15_t)0x9aa4, (q15_t)0x4e26, (q15_t)0x9aa1, + (q15_t)0x4e21, (q15_t)0x9a9d, (q15_t)0x4e1c, (q15_t)0x9a99, (q15_t)0x4e17, (q15_t)0x9a95, (q15_t)0x4e12, (q15_t)0x9a91, + (q15_t)0x4e0d, (q15_t)0x9a8d, (q15_t)0x4e08, (q15_t)0x9a8a, (q15_t)0x4e03, (q15_t)0x9a86, (q15_t)0x4dfe, (q15_t)0x9a82, + (q15_t)0x4df9, (q15_t)0x9a7e, (q15_t)0x4df4, (q15_t)0x9a7a, (q15_t)0x4def, (q15_t)0x9a76, (q15_t)0x4dea, (q15_t)0x9a73, + (q15_t)0x4de5, (q15_t)0x9a6f, (q15_t)0x4de0, (q15_t)0x9a6b, (q15_t)0x4ddb, (q15_t)0x9a67, (q15_t)0x4dd6, (q15_t)0x9a63, + (q15_t)0x4dd1, (q15_t)0x9a60, (q15_t)0x4dcc, (q15_t)0x9a5c, (q15_t)0x4dc7, (q15_t)0x9a58, (q15_t)0x4dc2, (q15_t)0x9a54, + (q15_t)0x4dbd, (q15_t)0x9a50, (q15_t)0x4db8, (q15_t)0x9a4c, (q15_t)0x4db3, (q15_t)0x9a49, (q15_t)0x4dae, (q15_t)0x9a45, + (q15_t)0x4da9, (q15_t)0x9a41, (q15_t)0x4da4, (q15_t)0x9a3d, (q15_t)0x4d9f, (q15_t)0x9a39, (q15_t)0x4d9a, (q15_t)0x9a36, + (q15_t)0x4d95, (q15_t)0x9a32, (q15_t)0x4d90, (q15_t)0x9a2e, (q15_t)0x4d8b, (q15_t)0x9a2a, (q15_t)0x4d86, (q15_t)0x9a26, + (q15_t)0x4d81, (q15_t)0x9a23, (q15_t)0x4d7c, (q15_t)0x9a1f, (q15_t)0x4d77, (q15_t)0x9a1b, (q15_t)0x4d72, (q15_t)0x9a17, + (q15_t)0x4d6d, (q15_t)0x9a13, (q15_t)0x4d68, (q15_t)0x9a10, (q15_t)0x4d63, (q15_t)0x9a0c, (q15_t)0x4d5e, (q15_t)0x9a08, + (q15_t)0x4d59, (q15_t)0x9a04, (q15_t)0x4d54, (q15_t)0x9a00, (q15_t)0x4d4f, (q15_t)0x99fd, (q15_t)0x4d4a, (q15_t)0x99f9, + (q15_t)0x4d45, (q15_t)0x99f5, (q15_t)0x4d40, (q15_t)0x99f1, (q15_t)0x4d3b, (q15_t)0x99ed, (q15_t)0x4d36, (q15_t)0x99ea, + (q15_t)0x4d31, (q15_t)0x99e6, (q15_t)0x4d2c, (q15_t)0x99e2, (q15_t)0x4d27, (q15_t)0x99de, (q15_t)0x4d22, (q15_t)0x99da, + (q15_t)0x4d1d, (q15_t)0x99d7, (q15_t)0x4d18, (q15_t)0x99d3, (q15_t)0x4d13, (q15_t)0x99cf, (q15_t)0x4d0e, (q15_t)0x99cb, + (q15_t)0x4d09, (q15_t)0x99c7, (q15_t)0x4d04, (q15_t)0x99c4, (q15_t)0x4cff, (q15_t)0x99c0, (q15_t)0x4cfa, (q15_t)0x99bc, + (q15_t)0x4cf5, (q15_t)0x99b8, (q15_t)0x4cf0, (q15_t)0x99b5, (q15_t)0x4ceb, (q15_t)0x99b1, (q15_t)0x4ce6, (q15_t)0x99ad, + (q15_t)0x4ce1, (q15_t)0x99a9, (q15_t)0x4cdb, (q15_t)0x99a5, (q15_t)0x4cd6, (q15_t)0x99a2, (q15_t)0x4cd1, (q15_t)0x999e, + (q15_t)0x4ccc, (q15_t)0x999a, (q15_t)0x4cc7, (q15_t)0x9996, (q15_t)0x4cc2, (q15_t)0x9993, (q15_t)0x4cbd, (q15_t)0x998f, + (q15_t)0x4cb8, (q15_t)0x998b, (q15_t)0x4cb3, (q15_t)0x9987, (q15_t)0x4cae, (q15_t)0x9984, (q15_t)0x4ca9, (q15_t)0x9980, + (q15_t)0x4ca4, (q15_t)0x997c, (q15_t)0x4c9f, (q15_t)0x9978, (q15_t)0x4c9a, (q15_t)0x9975, (q15_t)0x4c95, (q15_t)0x9971, + (q15_t)0x4c90, (q15_t)0x996d, (q15_t)0x4c8b, (q15_t)0x9969, (q15_t)0x4c86, (q15_t)0x9965, (q15_t)0x4c81, (q15_t)0x9962, + (q15_t)0x4c7c, (q15_t)0x995e, (q15_t)0x4c77, (q15_t)0x995a, (q15_t)0x4c72, (q15_t)0x9956, (q15_t)0x4c6d, (q15_t)0x9953, + (q15_t)0x4c68, (q15_t)0x994f, (q15_t)0x4c63, (q15_t)0x994b, (q15_t)0x4c5e, (q15_t)0x9947, (q15_t)0x4c59, (q15_t)0x9944, + (q15_t)0x4c54, (q15_t)0x9940, (q15_t)0x4c4f, (q15_t)0x993c, (q15_t)0x4c49, (q15_t)0x9938, (q15_t)0x4c44, (q15_t)0x9935, + (q15_t)0x4c3f, (q15_t)0x9931, (q15_t)0x4c3a, (q15_t)0x992d, (q15_t)0x4c35, (q15_t)0x992a, (q15_t)0x4c30, (q15_t)0x9926, + (q15_t)0x4c2b, (q15_t)0x9922, (q15_t)0x4c26, (q15_t)0x991e, (q15_t)0x4c21, (q15_t)0x991b, (q15_t)0x4c1c, (q15_t)0x9917, + (q15_t)0x4c17, (q15_t)0x9913, (q15_t)0x4c12, (q15_t)0x990f, (q15_t)0x4c0d, (q15_t)0x990c, (q15_t)0x4c08, (q15_t)0x9908, + (q15_t)0x4c03, (q15_t)0x9904, (q15_t)0x4bfe, (q15_t)0x9900, (q15_t)0x4bf9, (q15_t)0x98fd, (q15_t)0x4bf4, (q15_t)0x98f9, + (q15_t)0x4bef, (q15_t)0x98f5, (q15_t)0x4be9, (q15_t)0x98f2, (q15_t)0x4be4, (q15_t)0x98ee, (q15_t)0x4bdf, (q15_t)0x98ea, + (q15_t)0x4bda, (q15_t)0x98e6, (q15_t)0x4bd5, (q15_t)0x98e3, (q15_t)0x4bd0, (q15_t)0x98df, (q15_t)0x4bcb, (q15_t)0x98db, + (q15_t)0x4bc6, (q15_t)0x98d7, (q15_t)0x4bc1, (q15_t)0x98d4, (q15_t)0x4bbc, (q15_t)0x98d0, (q15_t)0x4bb7, (q15_t)0x98cc, + (q15_t)0x4bb2, (q15_t)0x98c9, (q15_t)0x4bad, (q15_t)0x98c5, (q15_t)0x4ba8, (q15_t)0x98c1, (q15_t)0x4ba3, (q15_t)0x98bd, + (q15_t)0x4b9e, (q15_t)0x98ba, (q15_t)0x4b98, (q15_t)0x98b6, (q15_t)0x4b93, (q15_t)0x98b2, (q15_t)0x4b8e, (q15_t)0x98af, + (q15_t)0x4b89, (q15_t)0x98ab, (q15_t)0x4b84, (q15_t)0x98a7, (q15_t)0x4b7f, (q15_t)0x98a3, (q15_t)0x4b7a, (q15_t)0x98a0, + (q15_t)0x4b75, (q15_t)0x989c, (q15_t)0x4b70, (q15_t)0x9898, (q15_t)0x4b6b, (q15_t)0x9895, (q15_t)0x4b66, (q15_t)0x9891, + (q15_t)0x4b61, (q15_t)0x988d, (q15_t)0x4b5c, (q15_t)0x988a, (q15_t)0x4b56, (q15_t)0x9886, (q15_t)0x4b51, (q15_t)0x9882, + (q15_t)0x4b4c, (q15_t)0x987e, (q15_t)0x4b47, (q15_t)0x987b, (q15_t)0x4b42, (q15_t)0x9877, (q15_t)0x4b3d, (q15_t)0x9873, + (q15_t)0x4b38, (q15_t)0x9870, (q15_t)0x4b33, (q15_t)0x986c, (q15_t)0x4b2e, (q15_t)0x9868, (q15_t)0x4b29, (q15_t)0x9865, + (q15_t)0x4b24, (q15_t)0x9861, (q15_t)0x4b1f, (q15_t)0x985d, (q15_t)0x4b19, (q15_t)0x985a, (q15_t)0x4b14, (q15_t)0x9856, + (q15_t)0x4b0f, (q15_t)0x9852, (q15_t)0x4b0a, (q15_t)0x984e, (q15_t)0x4b05, (q15_t)0x984b, (q15_t)0x4b00, (q15_t)0x9847, + (q15_t)0x4afb, (q15_t)0x9843, (q15_t)0x4af6, (q15_t)0x9840, (q15_t)0x4af1, (q15_t)0x983c, (q15_t)0x4aec, (q15_t)0x9838, + (q15_t)0x4ae7, (q15_t)0x9835, (q15_t)0x4ae1, (q15_t)0x9831, (q15_t)0x4adc, (q15_t)0x982d, (q15_t)0x4ad7, (q15_t)0x982a, + (q15_t)0x4ad2, (q15_t)0x9826, (q15_t)0x4acd, (q15_t)0x9822, (q15_t)0x4ac8, (q15_t)0x981f, (q15_t)0x4ac3, (q15_t)0x981b, + (q15_t)0x4abe, (q15_t)0x9817, (q15_t)0x4ab9, (q15_t)0x9814, (q15_t)0x4ab4, (q15_t)0x9810, (q15_t)0x4aae, (q15_t)0x980c, + (q15_t)0x4aa9, (q15_t)0x9809, (q15_t)0x4aa4, (q15_t)0x9805, (q15_t)0x4a9f, (q15_t)0x9801, (q15_t)0x4a9a, (q15_t)0x97fe, + (q15_t)0x4a95, (q15_t)0x97fa, (q15_t)0x4a90, (q15_t)0x97f6, (q15_t)0x4a8b, (q15_t)0x97f3, (q15_t)0x4a86, (q15_t)0x97ef, + (q15_t)0x4a81, (q15_t)0x97eb, (q15_t)0x4a7b, (q15_t)0x97e8, (q15_t)0x4a76, (q15_t)0x97e4, (q15_t)0x4a71, (q15_t)0x97e0, + (q15_t)0x4a6c, (q15_t)0x97dd, (q15_t)0x4a67, (q15_t)0x97d9, (q15_t)0x4a62, (q15_t)0x97d5, (q15_t)0x4a5d, (q15_t)0x97d2, + (q15_t)0x4a58, (q15_t)0x97ce, (q15_t)0x4a52, (q15_t)0x97cb, (q15_t)0x4a4d, (q15_t)0x97c7, (q15_t)0x4a48, (q15_t)0x97c3, + (q15_t)0x4a43, (q15_t)0x97c0, (q15_t)0x4a3e, (q15_t)0x97bc, (q15_t)0x4a39, (q15_t)0x97b8, (q15_t)0x4a34, (q15_t)0x97b5, + (q15_t)0x4a2f, (q15_t)0x97b1, (q15_t)0x4a2a, (q15_t)0x97ad, (q15_t)0x4a24, (q15_t)0x97aa, (q15_t)0x4a1f, (q15_t)0x97a6, + (q15_t)0x4a1a, (q15_t)0x97a2, (q15_t)0x4a15, (q15_t)0x979f, (q15_t)0x4a10, (q15_t)0x979b, (q15_t)0x4a0b, (q15_t)0x9798, + (q15_t)0x4a06, (q15_t)0x9794, (q15_t)0x4a01, (q15_t)0x9790, (q15_t)0x49fb, (q15_t)0x978d, (q15_t)0x49f6, (q15_t)0x9789, + (q15_t)0x49f1, (q15_t)0x9785, (q15_t)0x49ec, (q15_t)0x9782, (q15_t)0x49e7, (q15_t)0x977e, (q15_t)0x49e2, (q15_t)0x977a, + (q15_t)0x49dd, (q15_t)0x9777, (q15_t)0x49d8, (q15_t)0x9773, (q15_t)0x49d2, (q15_t)0x9770, (q15_t)0x49cd, (q15_t)0x976c, + (q15_t)0x49c8, (q15_t)0x9768, (q15_t)0x49c3, (q15_t)0x9765, (q15_t)0x49be, (q15_t)0x9761, (q15_t)0x49b9, (q15_t)0x975d, + (q15_t)0x49b4, (q15_t)0x975a, (q15_t)0x49ae, (q15_t)0x9756, (q15_t)0x49a9, (q15_t)0x9753, (q15_t)0x49a4, (q15_t)0x974f, + (q15_t)0x499f, (q15_t)0x974b, (q15_t)0x499a, (q15_t)0x9748, (q15_t)0x4995, (q15_t)0x9744, (q15_t)0x4990, (q15_t)0x9741, + (q15_t)0x498a, (q15_t)0x973d, (q15_t)0x4985, (q15_t)0x9739, (q15_t)0x4980, (q15_t)0x9736, (q15_t)0x497b, (q15_t)0x9732, + (q15_t)0x4976, (q15_t)0x972f, (q15_t)0x4971, (q15_t)0x972b, (q15_t)0x496c, (q15_t)0x9727, (q15_t)0x4966, (q15_t)0x9724, + (q15_t)0x4961, (q15_t)0x9720, (q15_t)0x495c, (q15_t)0x971d, (q15_t)0x4957, (q15_t)0x9719, (q15_t)0x4952, (q15_t)0x9715, + (q15_t)0x494d, (q15_t)0x9712, (q15_t)0x4948, (q15_t)0x970e, (q15_t)0x4942, (q15_t)0x970b, (q15_t)0x493d, (q15_t)0x9707, + (q15_t)0x4938, (q15_t)0x9703, (q15_t)0x4933, (q15_t)0x9700, (q15_t)0x492e, (q15_t)0x96fc, (q15_t)0x4929, (q15_t)0x96f9, + (q15_t)0x4923, (q15_t)0x96f5, (q15_t)0x491e, (q15_t)0x96f1, (q15_t)0x4919, (q15_t)0x96ee, (q15_t)0x4914, (q15_t)0x96ea, + (q15_t)0x490f, (q15_t)0x96e7, (q15_t)0x490a, (q15_t)0x96e3, (q15_t)0x4905, (q15_t)0x96df, (q15_t)0x48ff, (q15_t)0x96dc, + (q15_t)0x48fa, (q15_t)0x96d8, (q15_t)0x48f5, (q15_t)0x96d5, (q15_t)0x48f0, (q15_t)0x96d1, (q15_t)0x48eb, (q15_t)0x96ce, + (q15_t)0x48e6, (q15_t)0x96ca, (q15_t)0x48e0, (q15_t)0x96c6, (q15_t)0x48db, (q15_t)0x96c3, (q15_t)0x48d6, (q15_t)0x96bf, + (q15_t)0x48d1, (q15_t)0x96bc, (q15_t)0x48cc, (q15_t)0x96b8, (q15_t)0x48c7, (q15_t)0x96b5, (q15_t)0x48c1, (q15_t)0x96b1, + (q15_t)0x48bc, (q15_t)0x96ad, (q15_t)0x48b7, (q15_t)0x96aa, (q15_t)0x48b2, (q15_t)0x96a6, (q15_t)0x48ad, (q15_t)0x96a3, + (q15_t)0x48a8, (q15_t)0x969f, (q15_t)0x48a2, (q15_t)0x969c, (q15_t)0x489d, (q15_t)0x9698, (q15_t)0x4898, (q15_t)0x9694, + (q15_t)0x4893, (q15_t)0x9691, (q15_t)0x488e, (q15_t)0x968d, (q15_t)0x4888, (q15_t)0x968a, (q15_t)0x4883, (q15_t)0x9686, + (q15_t)0x487e, (q15_t)0x9683, (q15_t)0x4879, (q15_t)0x967f, (q15_t)0x4874, (q15_t)0x967b, (q15_t)0x486f, (q15_t)0x9678, + (q15_t)0x4869, (q15_t)0x9674, (q15_t)0x4864, (q15_t)0x9671, (q15_t)0x485f, (q15_t)0x966d, (q15_t)0x485a, (q15_t)0x966a, + (q15_t)0x4855, (q15_t)0x9666, (q15_t)0x484f, (q15_t)0x9663, (q15_t)0x484a, (q15_t)0x965f, (q15_t)0x4845, (q15_t)0x965b, + (q15_t)0x4840, (q15_t)0x9658, (q15_t)0x483b, (q15_t)0x9654, (q15_t)0x4836, (q15_t)0x9651, (q15_t)0x4830, (q15_t)0x964d, + (q15_t)0x482b, (q15_t)0x964a, (q15_t)0x4826, (q15_t)0x9646, (q15_t)0x4821, (q15_t)0x9643, (q15_t)0x481c, (q15_t)0x963f, + (q15_t)0x4816, (q15_t)0x963c, (q15_t)0x4811, (q15_t)0x9638, (q15_t)0x480c, (q15_t)0x9635, (q15_t)0x4807, (q15_t)0x9631, + (q15_t)0x4802, (q15_t)0x962d, (q15_t)0x47fc, (q15_t)0x962a, (q15_t)0x47f7, (q15_t)0x9626, (q15_t)0x47f2, (q15_t)0x9623, + (q15_t)0x47ed, (q15_t)0x961f, (q15_t)0x47e8, (q15_t)0x961c, (q15_t)0x47e2, (q15_t)0x9618, (q15_t)0x47dd, (q15_t)0x9615, + (q15_t)0x47d8, (q15_t)0x9611, (q15_t)0x47d3, (q15_t)0x960e, (q15_t)0x47ce, (q15_t)0x960a, (q15_t)0x47c8, (q15_t)0x9607, + (q15_t)0x47c3, (q15_t)0x9603, (q15_t)0x47be, (q15_t)0x9600, (q15_t)0x47b9, (q15_t)0x95fc, (q15_t)0x47b4, (q15_t)0x95f9, + (q15_t)0x47ae, (q15_t)0x95f5, (q15_t)0x47a9, (q15_t)0x95f2, (q15_t)0x47a4, (q15_t)0x95ee, (q15_t)0x479f, (q15_t)0x95ea, + (q15_t)0x479a, (q15_t)0x95e7, (q15_t)0x4794, (q15_t)0x95e3, (q15_t)0x478f, (q15_t)0x95e0, (q15_t)0x478a, (q15_t)0x95dc, + (q15_t)0x4785, (q15_t)0x95d9, (q15_t)0x4780, (q15_t)0x95d5, (q15_t)0x477a, (q15_t)0x95d2, (q15_t)0x4775, (q15_t)0x95ce, + (q15_t)0x4770, (q15_t)0x95cb, (q15_t)0x476b, (q15_t)0x95c7, (q15_t)0x4765, (q15_t)0x95c4, (q15_t)0x4760, (q15_t)0x95c0, + (q15_t)0x475b, (q15_t)0x95bd, (q15_t)0x4756, (q15_t)0x95b9, (q15_t)0x4751, (q15_t)0x95b6, (q15_t)0x474b, (q15_t)0x95b2, + (q15_t)0x4746, (q15_t)0x95af, (q15_t)0x4741, (q15_t)0x95ab, (q15_t)0x473c, (q15_t)0x95a8, (q15_t)0x4737, (q15_t)0x95a4, + (q15_t)0x4731, (q15_t)0x95a1, (q15_t)0x472c, (q15_t)0x959d, (q15_t)0x4727, (q15_t)0x959a, (q15_t)0x4722, (q15_t)0x9596, + (q15_t)0x471c, (q15_t)0x9593, (q15_t)0x4717, (q15_t)0x958f, (q15_t)0x4712, (q15_t)0x958c, (q15_t)0x470d, (q15_t)0x9588, + (q15_t)0x4708, (q15_t)0x9585, (q15_t)0x4702, (q15_t)0x9581, (q15_t)0x46fd, (q15_t)0x957e, (q15_t)0x46f8, (q15_t)0x957a, + (q15_t)0x46f3, (q15_t)0x9577, (q15_t)0x46ed, (q15_t)0x9574, (q15_t)0x46e8, (q15_t)0x9570, (q15_t)0x46e3, (q15_t)0x956d, + (q15_t)0x46de, (q15_t)0x9569, (q15_t)0x46d8, (q15_t)0x9566, (q15_t)0x46d3, (q15_t)0x9562, (q15_t)0x46ce, (q15_t)0x955f, + (q15_t)0x46c9, (q15_t)0x955b, (q15_t)0x46c4, (q15_t)0x9558, (q15_t)0x46be, (q15_t)0x9554, (q15_t)0x46b9, (q15_t)0x9551, + (q15_t)0x46b4, (q15_t)0x954d, (q15_t)0x46af, (q15_t)0x954a, (q15_t)0x46a9, (q15_t)0x9546, (q15_t)0x46a4, (q15_t)0x9543, + (q15_t)0x469f, (q15_t)0x953f, (q15_t)0x469a, (q15_t)0x953c, (q15_t)0x4694, (q15_t)0x9538, (q15_t)0x468f, (q15_t)0x9535, + (q15_t)0x468a, (q15_t)0x9532, (q15_t)0x4685, (q15_t)0x952e, (q15_t)0x467f, (q15_t)0x952b, (q15_t)0x467a, (q15_t)0x9527, + (q15_t)0x4675, (q15_t)0x9524, (q15_t)0x4670, (q15_t)0x9520, (q15_t)0x466a, (q15_t)0x951d, (q15_t)0x4665, (q15_t)0x9519, + (q15_t)0x4660, (q15_t)0x9516, (q15_t)0x465b, (q15_t)0x9512, (q15_t)0x4655, (q15_t)0x950f, (q15_t)0x4650, (q15_t)0x950c, + (q15_t)0x464b, (q15_t)0x9508, (q15_t)0x4646, (q15_t)0x9505, (q15_t)0x4640, (q15_t)0x9501, (q15_t)0x463b, (q15_t)0x94fe, + (q15_t)0x4636, (q15_t)0x94fa, (q15_t)0x4631, (q15_t)0x94f7, (q15_t)0x462b, (q15_t)0x94f3, (q15_t)0x4626, (q15_t)0x94f0, + (q15_t)0x4621, (q15_t)0x94ed, (q15_t)0x461c, (q15_t)0x94e9, (q15_t)0x4616, (q15_t)0x94e6, (q15_t)0x4611, (q15_t)0x94e2, + (q15_t)0x460c, (q15_t)0x94df, (q15_t)0x4607, (q15_t)0x94db, (q15_t)0x4601, (q15_t)0x94d8, (q15_t)0x45fc, (q15_t)0x94d4, + (q15_t)0x45f7, (q15_t)0x94d1, (q15_t)0x45f2, (q15_t)0x94ce, (q15_t)0x45ec, (q15_t)0x94ca, (q15_t)0x45e7, (q15_t)0x94c7, + (q15_t)0x45e2, (q15_t)0x94c3, (q15_t)0x45dd, (q15_t)0x94c0, (q15_t)0x45d7, (q15_t)0x94bc, (q15_t)0x45d2, (q15_t)0x94b9, + (q15_t)0x45cd, (q15_t)0x94b6, (q15_t)0x45c7, (q15_t)0x94b2, (q15_t)0x45c2, (q15_t)0x94af, (q15_t)0x45bd, (q15_t)0x94ab, + (q15_t)0x45b8, (q15_t)0x94a8, (q15_t)0x45b2, (q15_t)0x94a4, (q15_t)0x45ad, (q15_t)0x94a1, (q15_t)0x45a8, (q15_t)0x949e, + (q15_t)0x45a3, (q15_t)0x949a, (q15_t)0x459d, (q15_t)0x9497, (q15_t)0x4598, (q15_t)0x9493, (q15_t)0x4593, (q15_t)0x9490, + (q15_t)0x458d, (q15_t)0x948d, (q15_t)0x4588, (q15_t)0x9489, (q15_t)0x4583, (q15_t)0x9486, (q15_t)0x457e, (q15_t)0x9482, + (q15_t)0x4578, (q15_t)0x947f, (q15_t)0x4573, (q15_t)0x947b, (q15_t)0x456e, (q15_t)0x9478, (q15_t)0x4569, (q15_t)0x9475, + (q15_t)0x4563, (q15_t)0x9471, (q15_t)0x455e, (q15_t)0x946e, (q15_t)0x4559, (q15_t)0x946a, (q15_t)0x4553, (q15_t)0x9467, + (q15_t)0x454e, (q15_t)0x9464, (q15_t)0x4549, (q15_t)0x9460, (q15_t)0x4544, (q15_t)0x945d, (q15_t)0x453e, (q15_t)0x9459, + (q15_t)0x4539, (q15_t)0x9456, (q15_t)0x4534, (q15_t)0x9453, (q15_t)0x452e, (q15_t)0x944f, (q15_t)0x4529, (q15_t)0x944c, + (q15_t)0x4524, (q15_t)0x9448, (q15_t)0x451f, (q15_t)0x9445, (q15_t)0x4519, (q15_t)0x9442, (q15_t)0x4514, (q15_t)0x943e, + (q15_t)0x450f, (q15_t)0x943b, (q15_t)0x4509, (q15_t)0x9437, (q15_t)0x4504, (q15_t)0x9434, (q15_t)0x44ff, (q15_t)0x9431, + (q15_t)0x44fa, (q15_t)0x942d, (q15_t)0x44f4, (q15_t)0x942a, (q15_t)0x44ef, (q15_t)0x9427, (q15_t)0x44ea, (q15_t)0x9423, + (q15_t)0x44e4, (q15_t)0x9420, (q15_t)0x44df, (q15_t)0x941c, (q15_t)0x44da, (q15_t)0x9419, (q15_t)0x44d4, (q15_t)0x9416, + (q15_t)0x44cf, (q15_t)0x9412, (q15_t)0x44ca, (q15_t)0x940f, (q15_t)0x44c5, (q15_t)0x940b, (q15_t)0x44bf, (q15_t)0x9408, + (q15_t)0x44ba, (q15_t)0x9405, (q15_t)0x44b5, (q15_t)0x9401, (q15_t)0x44af, (q15_t)0x93fe, (q15_t)0x44aa, (q15_t)0x93fb, + (q15_t)0x44a5, (q15_t)0x93f7, (q15_t)0x449f, (q15_t)0x93f4, (q15_t)0x449a, (q15_t)0x93f1, (q15_t)0x4495, (q15_t)0x93ed, + (q15_t)0x4490, (q15_t)0x93ea, (q15_t)0x448a, (q15_t)0x93e6, (q15_t)0x4485, (q15_t)0x93e3, (q15_t)0x4480, (q15_t)0x93e0, + (q15_t)0x447a, (q15_t)0x93dc, (q15_t)0x4475, (q15_t)0x93d9, (q15_t)0x4470, (q15_t)0x93d6, (q15_t)0x446a, (q15_t)0x93d2, + (q15_t)0x4465, (q15_t)0x93cf, (q15_t)0x4460, (q15_t)0x93cc, (q15_t)0x445a, (q15_t)0x93c8, (q15_t)0x4455, (q15_t)0x93c5, + (q15_t)0x4450, (q15_t)0x93c1, (q15_t)0x444b, (q15_t)0x93be, (q15_t)0x4445, (q15_t)0x93bb, (q15_t)0x4440, (q15_t)0x93b7, + (q15_t)0x443b, (q15_t)0x93b4, (q15_t)0x4435, (q15_t)0x93b1, (q15_t)0x4430, (q15_t)0x93ad, (q15_t)0x442b, (q15_t)0x93aa, + (q15_t)0x4425, (q15_t)0x93a7, (q15_t)0x4420, (q15_t)0x93a3, (q15_t)0x441b, (q15_t)0x93a0, (q15_t)0x4415, (q15_t)0x939d, + (q15_t)0x4410, (q15_t)0x9399, (q15_t)0x440b, (q15_t)0x9396, (q15_t)0x4405, (q15_t)0x9393, (q15_t)0x4400, (q15_t)0x938f, + (q15_t)0x43fb, (q15_t)0x938c, (q15_t)0x43f5, (q15_t)0x9389, (q15_t)0x43f0, (q15_t)0x9385, (q15_t)0x43eb, (q15_t)0x9382, + (q15_t)0x43e5, (q15_t)0x937f, (q15_t)0x43e0, (q15_t)0x937b, (q15_t)0x43db, (q15_t)0x9378, (q15_t)0x43d5, (q15_t)0x9375, + (q15_t)0x43d0, (q15_t)0x9371, (q15_t)0x43cb, (q15_t)0x936e, (q15_t)0x43c5, (q15_t)0x936b, (q15_t)0x43c0, (q15_t)0x9367, + (q15_t)0x43bb, (q15_t)0x9364, (q15_t)0x43b5, (q15_t)0x9361, (q15_t)0x43b0, (q15_t)0x935d, (q15_t)0x43ab, (q15_t)0x935a, + (q15_t)0x43a5, (q15_t)0x9357, (q15_t)0x43a0, (q15_t)0x9353, (q15_t)0x439b, (q15_t)0x9350, (q15_t)0x4395, (q15_t)0x934d, + (q15_t)0x4390, (q15_t)0x9349, (q15_t)0x438b, (q15_t)0x9346, (q15_t)0x4385, (q15_t)0x9343, (q15_t)0x4380, (q15_t)0x933f, + (q15_t)0x437b, (q15_t)0x933c, (q15_t)0x4375, (q15_t)0x9339, (q15_t)0x4370, (q15_t)0x9336, (q15_t)0x436b, (q15_t)0x9332, + (q15_t)0x4365, (q15_t)0x932f, (q15_t)0x4360, (q15_t)0x932c, (q15_t)0x435b, (q15_t)0x9328, (q15_t)0x4355, (q15_t)0x9325, + (q15_t)0x4350, (q15_t)0x9322, (q15_t)0x434b, (q15_t)0x931e, (q15_t)0x4345, (q15_t)0x931b, (q15_t)0x4340, (q15_t)0x9318, + (q15_t)0x433b, (q15_t)0x9314, (q15_t)0x4335, (q15_t)0x9311, (q15_t)0x4330, (q15_t)0x930e, (q15_t)0x432b, (q15_t)0x930b, + (q15_t)0x4325, (q15_t)0x9307, (q15_t)0x4320, (q15_t)0x9304, (q15_t)0x431b, (q15_t)0x9301, (q15_t)0x4315, (q15_t)0x92fd, + (q15_t)0x4310, (q15_t)0x92fa, (q15_t)0x430b, (q15_t)0x92f7, (q15_t)0x4305, (q15_t)0x92f4, (q15_t)0x4300, (q15_t)0x92f0, + (q15_t)0x42fa, (q15_t)0x92ed, (q15_t)0x42f5, (q15_t)0x92ea, (q15_t)0x42f0, (q15_t)0x92e6, (q15_t)0x42ea, (q15_t)0x92e3, + (q15_t)0x42e5, (q15_t)0x92e0, (q15_t)0x42e0, (q15_t)0x92dd, (q15_t)0x42da, (q15_t)0x92d9, (q15_t)0x42d5, (q15_t)0x92d6, + (q15_t)0x42d0, (q15_t)0x92d3, (q15_t)0x42ca, (q15_t)0x92cf, (q15_t)0x42c5, (q15_t)0x92cc, (q15_t)0x42c0, (q15_t)0x92c9, + (q15_t)0x42ba, (q15_t)0x92c6, (q15_t)0x42b5, (q15_t)0x92c2, (q15_t)0x42af, (q15_t)0x92bf, (q15_t)0x42aa, (q15_t)0x92bc, + (q15_t)0x42a5, (q15_t)0x92b8, (q15_t)0x429f, (q15_t)0x92b5, (q15_t)0x429a, (q15_t)0x92b2, (q15_t)0x4295, (q15_t)0x92af, + (q15_t)0x428f, (q15_t)0x92ab, (q15_t)0x428a, (q15_t)0x92a8, (q15_t)0x4284, (q15_t)0x92a5, (q15_t)0x427f, (q15_t)0x92a2, + (q15_t)0x427a, (q15_t)0x929e, (q15_t)0x4274, (q15_t)0x929b, (q15_t)0x426f, (q15_t)0x9298, (q15_t)0x426a, (q15_t)0x9295, + (q15_t)0x4264, (q15_t)0x9291, (q15_t)0x425f, (q15_t)0x928e, (q15_t)0x425a, (q15_t)0x928b, (q15_t)0x4254, (q15_t)0x9288, + (q15_t)0x424f, (q15_t)0x9284, (q15_t)0x4249, (q15_t)0x9281, (q15_t)0x4244, (q15_t)0x927e, (q15_t)0x423f, (q15_t)0x927b, + (q15_t)0x4239, (q15_t)0x9277, (q15_t)0x4234, (q15_t)0x9274, (q15_t)0x422f, (q15_t)0x9271, (q15_t)0x4229, (q15_t)0x926e, + (q15_t)0x4224, (q15_t)0x926a, (q15_t)0x421e, (q15_t)0x9267, (q15_t)0x4219, (q15_t)0x9264, (q15_t)0x4214, (q15_t)0x9261, + (q15_t)0x420e, (q15_t)0x925d, (q15_t)0x4209, (q15_t)0x925a, (q15_t)0x4203, (q15_t)0x9257, (q15_t)0x41fe, (q15_t)0x9254, + (q15_t)0x41f9, (q15_t)0x9250, (q15_t)0x41f3, (q15_t)0x924d, (q15_t)0x41ee, (q15_t)0x924a, (q15_t)0x41e9, (q15_t)0x9247, + (q15_t)0x41e3, (q15_t)0x9243, (q15_t)0x41de, (q15_t)0x9240, (q15_t)0x41d8, (q15_t)0x923d, (q15_t)0x41d3, (q15_t)0x923a, + (q15_t)0x41ce, (q15_t)0x9236, (q15_t)0x41c8, (q15_t)0x9233, (q15_t)0x41c3, (q15_t)0x9230, (q15_t)0x41bd, (q15_t)0x922d, + (q15_t)0x41b8, (q15_t)0x922a, (q15_t)0x41b3, (q15_t)0x9226, (q15_t)0x41ad, (q15_t)0x9223, (q15_t)0x41a8, (q15_t)0x9220, + (q15_t)0x41a2, (q15_t)0x921d, (q15_t)0x419d, (q15_t)0x9219, (q15_t)0x4198, (q15_t)0x9216, (q15_t)0x4192, (q15_t)0x9213, + (q15_t)0x418d, (q15_t)0x9210, (q15_t)0x4188, (q15_t)0x920d, (q15_t)0x4182, (q15_t)0x9209, (q15_t)0x417d, (q15_t)0x9206, + (q15_t)0x4177, (q15_t)0x9203, (q15_t)0x4172, (q15_t)0x9200, (q15_t)0x416d, (q15_t)0x91fc, (q15_t)0x4167, (q15_t)0x91f9, + (q15_t)0x4162, (q15_t)0x91f6, (q15_t)0x415c, (q15_t)0x91f3, (q15_t)0x4157, (q15_t)0x91f0, (q15_t)0x4152, (q15_t)0x91ec, + (q15_t)0x414c, (q15_t)0x91e9, (q15_t)0x4147, (q15_t)0x91e6, (q15_t)0x4141, (q15_t)0x91e3, (q15_t)0x413c, (q15_t)0x91e0, + (q15_t)0x4136, (q15_t)0x91dc, (q15_t)0x4131, (q15_t)0x91d9, (q15_t)0x412c, (q15_t)0x91d6, (q15_t)0x4126, (q15_t)0x91d3, + (q15_t)0x4121, (q15_t)0x91d0, (q15_t)0x411b, (q15_t)0x91cc, (q15_t)0x4116, (q15_t)0x91c9, (q15_t)0x4111, (q15_t)0x91c6, + (q15_t)0x410b, (q15_t)0x91c3, (q15_t)0x4106, (q15_t)0x91c0, (q15_t)0x4100, (q15_t)0x91bc, (q15_t)0x40fb, (q15_t)0x91b9, + (q15_t)0x40f6, (q15_t)0x91b6, (q15_t)0x40f0, (q15_t)0x91b3, (q15_t)0x40eb, (q15_t)0x91b0, (q15_t)0x40e5, (q15_t)0x91ad, + (q15_t)0x40e0, (q15_t)0x91a9, (q15_t)0x40da, (q15_t)0x91a6, (q15_t)0x40d5, (q15_t)0x91a3, (q15_t)0x40d0, (q15_t)0x91a0, + (q15_t)0x40ca, (q15_t)0x919d, (q15_t)0x40c5, (q15_t)0x9199, (q15_t)0x40bf, (q15_t)0x9196, (q15_t)0x40ba, (q15_t)0x9193, + (q15_t)0x40b5, (q15_t)0x9190, (q15_t)0x40af, (q15_t)0x918d, (q15_t)0x40aa, (q15_t)0x918a, (q15_t)0x40a4, (q15_t)0x9186, + (q15_t)0x409f, (q15_t)0x9183, (q15_t)0x4099, (q15_t)0x9180, (q15_t)0x4094, (q15_t)0x917d, (q15_t)0x408f, (q15_t)0x917a, + (q15_t)0x4089, (q15_t)0x9177, (q15_t)0x4084, (q15_t)0x9173, (q15_t)0x407e, (q15_t)0x9170, (q15_t)0x4079, (q15_t)0x916d, + (q15_t)0x4073, (q15_t)0x916a, (q15_t)0x406e, (q15_t)0x9167, (q15_t)0x4069, (q15_t)0x9164, (q15_t)0x4063, (q15_t)0x9160, + (q15_t)0x405e, (q15_t)0x915d, (q15_t)0x4058, (q15_t)0x915a, (q15_t)0x4053, (q15_t)0x9157, (q15_t)0x404d, (q15_t)0x9154, + (q15_t)0x4048, (q15_t)0x9151, (q15_t)0x4043, (q15_t)0x914d, (q15_t)0x403d, (q15_t)0x914a, (q15_t)0x4038, (q15_t)0x9147, + (q15_t)0x4032, (q15_t)0x9144, (q15_t)0x402d, (q15_t)0x9141, (q15_t)0x4027, (q15_t)0x913e, (q15_t)0x4022, (q15_t)0x913a, + (q15_t)0x401d, (q15_t)0x9137, (q15_t)0x4017, (q15_t)0x9134, (q15_t)0x4012, (q15_t)0x9131, (q15_t)0x400c, (q15_t)0x912e, + (q15_t)0x4007, (q15_t)0x912b, (q15_t)0x4001, (q15_t)0x9128, (q15_t)0x3ffc, (q15_t)0x9124, (q15_t)0x3ff6, (q15_t)0x9121, + (q15_t)0x3ff1, (q15_t)0x911e, (q15_t)0x3fec, (q15_t)0x911b, (q15_t)0x3fe6, (q15_t)0x9118, (q15_t)0x3fe1, (q15_t)0x9115, + (q15_t)0x3fdb, (q15_t)0x9112, (q15_t)0x3fd6, (q15_t)0x910f, (q15_t)0x3fd0, (q15_t)0x910b, (q15_t)0x3fcb, (q15_t)0x9108, + (q15_t)0x3fc5, (q15_t)0x9105, (q15_t)0x3fc0, (q15_t)0x9102, (q15_t)0x3fbb, (q15_t)0x90ff, (q15_t)0x3fb5, (q15_t)0x90fc, + (q15_t)0x3fb0, (q15_t)0x90f9, (q15_t)0x3faa, (q15_t)0x90f5, (q15_t)0x3fa5, (q15_t)0x90f2, (q15_t)0x3f9f, (q15_t)0x90ef, + (q15_t)0x3f9a, (q15_t)0x90ec, (q15_t)0x3f94, (q15_t)0x90e9, (q15_t)0x3f8f, (q15_t)0x90e6, (q15_t)0x3f89, (q15_t)0x90e3, + (q15_t)0x3f84, (q15_t)0x90e0, (q15_t)0x3f7f, (q15_t)0x90dd, (q15_t)0x3f79, (q15_t)0x90d9, (q15_t)0x3f74, (q15_t)0x90d6, + (q15_t)0x3f6e, (q15_t)0x90d3, (q15_t)0x3f69, (q15_t)0x90d0, (q15_t)0x3f63, (q15_t)0x90cd, (q15_t)0x3f5e, (q15_t)0x90ca, + (q15_t)0x3f58, (q15_t)0x90c7, (q15_t)0x3f53, (q15_t)0x90c4, (q15_t)0x3f4d, (q15_t)0x90c1, (q15_t)0x3f48, (q15_t)0x90bd, + (q15_t)0x3f43, (q15_t)0x90ba, (q15_t)0x3f3d, (q15_t)0x90b7, (q15_t)0x3f38, (q15_t)0x90b4, (q15_t)0x3f32, (q15_t)0x90b1, + (q15_t)0x3f2d, (q15_t)0x90ae, (q15_t)0x3f27, (q15_t)0x90ab, (q15_t)0x3f22, (q15_t)0x90a8, (q15_t)0x3f1c, (q15_t)0x90a5, + (q15_t)0x3f17, (q15_t)0x90a1, (q15_t)0x3f11, (q15_t)0x909e, (q15_t)0x3f0c, (q15_t)0x909b, (q15_t)0x3f06, (q15_t)0x9098, + (q15_t)0x3f01, (q15_t)0x9095, (q15_t)0x3efb, (q15_t)0x9092, (q15_t)0x3ef6, (q15_t)0x908f, (q15_t)0x3ef1, (q15_t)0x908c, + (q15_t)0x3eeb, (q15_t)0x9089, (q15_t)0x3ee6, (q15_t)0x9086, (q15_t)0x3ee0, (q15_t)0x9083, (q15_t)0x3edb, (q15_t)0x907f, + (q15_t)0x3ed5, (q15_t)0x907c, (q15_t)0x3ed0, (q15_t)0x9079, (q15_t)0x3eca, (q15_t)0x9076, (q15_t)0x3ec5, (q15_t)0x9073, + (q15_t)0x3ebf, (q15_t)0x9070, (q15_t)0x3eba, (q15_t)0x906d, (q15_t)0x3eb4, (q15_t)0x906a, (q15_t)0x3eaf, (q15_t)0x9067, + (q15_t)0x3ea9, (q15_t)0x9064, (q15_t)0x3ea4, (q15_t)0x9061, (q15_t)0x3e9e, (q15_t)0x905e, (q15_t)0x3e99, (q15_t)0x905b, + (q15_t)0x3e93, (q15_t)0x9057, (q15_t)0x3e8e, (q15_t)0x9054, (q15_t)0x3e88, (q15_t)0x9051, (q15_t)0x3e83, (q15_t)0x904e, + (q15_t)0x3e7d, (q15_t)0x904b, (q15_t)0x3e78, (q15_t)0x9048, (q15_t)0x3e73, (q15_t)0x9045, (q15_t)0x3e6d, (q15_t)0x9042, + (q15_t)0x3e68, (q15_t)0x903f, (q15_t)0x3e62, (q15_t)0x903c, (q15_t)0x3e5d, (q15_t)0x9039, (q15_t)0x3e57, (q15_t)0x9036, + (q15_t)0x3e52, (q15_t)0x9033, (q15_t)0x3e4c, (q15_t)0x9030, (q15_t)0x3e47, (q15_t)0x902d, (q15_t)0x3e41, (q15_t)0x902a, + (q15_t)0x3e3c, (q15_t)0x9026, (q15_t)0x3e36, (q15_t)0x9023, (q15_t)0x3e31, (q15_t)0x9020, (q15_t)0x3e2b, (q15_t)0x901d, + (q15_t)0x3e26, (q15_t)0x901a, (q15_t)0x3e20, (q15_t)0x9017, (q15_t)0x3e1b, (q15_t)0x9014, (q15_t)0x3e15, (q15_t)0x9011, + (q15_t)0x3e10, (q15_t)0x900e, (q15_t)0x3e0a, (q15_t)0x900b, (q15_t)0x3e05, (q15_t)0x9008, (q15_t)0x3dff, (q15_t)0x9005, + (q15_t)0x3dfa, (q15_t)0x9002, (q15_t)0x3df4, (q15_t)0x8fff, (q15_t)0x3def, (q15_t)0x8ffc, (q15_t)0x3de9, (q15_t)0x8ff9, + (q15_t)0x3de4, (q15_t)0x8ff6, (q15_t)0x3dde, (q15_t)0x8ff3, (q15_t)0x3dd9, (q15_t)0x8ff0, (q15_t)0x3dd3, (q15_t)0x8fed, + (q15_t)0x3dce, (q15_t)0x8fea, (q15_t)0x3dc8, (q15_t)0x8fe7, (q15_t)0x3dc3, (q15_t)0x8fe3, (q15_t)0x3dbd, (q15_t)0x8fe0, + (q15_t)0x3db8, (q15_t)0x8fdd, (q15_t)0x3db2, (q15_t)0x8fda, (q15_t)0x3dad, (q15_t)0x8fd7, (q15_t)0x3da7, (q15_t)0x8fd4, + (q15_t)0x3da2, (q15_t)0x8fd1, (q15_t)0x3d9c, (q15_t)0x8fce, (q15_t)0x3d97, (q15_t)0x8fcb, (q15_t)0x3d91, (q15_t)0x8fc8, + (q15_t)0x3d8c, (q15_t)0x8fc5, (q15_t)0x3d86, (q15_t)0x8fc2, (q15_t)0x3d81, (q15_t)0x8fbf, (q15_t)0x3d7b, (q15_t)0x8fbc, + (q15_t)0x3d76, (q15_t)0x8fb9, (q15_t)0x3d70, (q15_t)0x8fb6, (q15_t)0x3d6b, (q15_t)0x8fb3, (q15_t)0x3d65, (q15_t)0x8fb0, + (q15_t)0x3d60, (q15_t)0x8fad, (q15_t)0x3d5a, (q15_t)0x8faa, (q15_t)0x3d55, (q15_t)0x8fa7, (q15_t)0x3d4f, (q15_t)0x8fa4, + (q15_t)0x3d49, (q15_t)0x8fa1, (q15_t)0x3d44, (q15_t)0x8f9e, (q15_t)0x3d3e, (q15_t)0x8f9b, (q15_t)0x3d39, (q15_t)0x8f98, + (q15_t)0x3d33, (q15_t)0x8f95, (q15_t)0x3d2e, (q15_t)0x8f92, (q15_t)0x3d28, (q15_t)0x8f8f, (q15_t)0x3d23, (q15_t)0x8f8c, + (q15_t)0x3d1d, (q15_t)0x8f89, (q15_t)0x3d18, (q15_t)0x8f86, (q15_t)0x3d12, (q15_t)0x8f83, (q15_t)0x3d0d, (q15_t)0x8f80, + (q15_t)0x3d07, (q15_t)0x8f7d, (q15_t)0x3d02, (q15_t)0x8f7a, (q15_t)0x3cfc, (q15_t)0x8f77, (q15_t)0x3cf7, (q15_t)0x8f74, + (q15_t)0x3cf1, (q15_t)0x8f71, (q15_t)0x3cec, (q15_t)0x8f6e, (q15_t)0x3ce6, (q15_t)0x8f6b, (q15_t)0x3ce1, (q15_t)0x8f68, + (q15_t)0x3cdb, (q15_t)0x8f65, (q15_t)0x3cd6, (q15_t)0x8f62, (q15_t)0x3cd0, (q15_t)0x8f5f, (q15_t)0x3cca, (q15_t)0x8f5c, + (q15_t)0x3cc5, (q15_t)0x8f59, (q15_t)0x3cbf, (q15_t)0x8f56, (q15_t)0x3cba, (q15_t)0x8f53, (q15_t)0x3cb4, (q15_t)0x8f50, + (q15_t)0x3caf, (q15_t)0x8f4d, (q15_t)0x3ca9, (q15_t)0x8f4a, (q15_t)0x3ca4, (q15_t)0x8f47, (q15_t)0x3c9e, (q15_t)0x8f44, + (q15_t)0x3c99, (q15_t)0x8f41, (q15_t)0x3c93, (q15_t)0x8f3e, (q15_t)0x3c8e, (q15_t)0x8f3b, (q15_t)0x3c88, (q15_t)0x8f38, + (q15_t)0x3c83, (q15_t)0x8f35, (q15_t)0x3c7d, (q15_t)0x8f32, (q15_t)0x3c77, (q15_t)0x8f2f, (q15_t)0x3c72, (q15_t)0x8f2d, + (q15_t)0x3c6c, (q15_t)0x8f2a, (q15_t)0x3c67, (q15_t)0x8f27, (q15_t)0x3c61, (q15_t)0x8f24, (q15_t)0x3c5c, (q15_t)0x8f21, + (q15_t)0x3c56, (q15_t)0x8f1e, (q15_t)0x3c51, (q15_t)0x8f1b, (q15_t)0x3c4b, (q15_t)0x8f18, (q15_t)0x3c46, (q15_t)0x8f15, + (q15_t)0x3c40, (q15_t)0x8f12, (q15_t)0x3c3b, (q15_t)0x8f0f, (q15_t)0x3c35, (q15_t)0x8f0c, (q15_t)0x3c2f, (q15_t)0x8f09, + (q15_t)0x3c2a, (q15_t)0x8f06, (q15_t)0x3c24, (q15_t)0x8f03, (q15_t)0x3c1f, (q15_t)0x8f00, (q15_t)0x3c19, (q15_t)0x8efd, + (q15_t)0x3c14, (q15_t)0x8efa, (q15_t)0x3c0e, (q15_t)0x8ef7, (q15_t)0x3c09, (q15_t)0x8ef4, (q15_t)0x3c03, (q15_t)0x8ef1, + (q15_t)0x3bfd, (q15_t)0x8eee, (q15_t)0x3bf8, (q15_t)0x8eec, (q15_t)0x3bf2, (q15_t)0x8ee9, (q15_t)0x3bed, (q15_t)0x8ee6, + (q15_t)0x3be7, (q15_t)0x8ee3, (q15_t)0x3be2, (q15_t)0x8ee0, (q15_t)0x3bdc, (q15_t)0x8edd, (q15_t)0x3bd7, (q15_t)0x8eda, + (q15_t)0x3bd1, (q15_t)0x8ed7, (q15_t)0x3bcc, (q15_t)0x8ed4, (q15_t)0x3bc6, (q15_t)0x8ed1, (q15_t)0x3bc0, (q15_t)0x8ece, + (q15_t)0x3bbb, (q15_t)0x8ecb, (q15_t)0x3bb5, (q15_t)0x8ec8, (q15_t)0x3bb0, (q15_t)0x8ec5, (q15_t)0x3baa, (q15_t)0x8ec2, + (q15_t)0x3ba5, (q15_t)0x8ebf, (q15_t)0x3b9f, (q15_t)0x8ebd, (q15_t)0x3b99, (q15_t)0x8eba, (q15_t)0x3b94, (q15_t)0x8eb7, + (q15_t)0x3b8e, (q15_t)0x8eb4, (q15_t)0x3b89, (q15_t)0x8eb1, (q15_t)0x3b83, (q15_t)0x8eae, (q15_t)0x3b7e, (q15_t)0x8eab, + (q15_t)0x3b78, (q15_t)0x8ea8, (q15_t)0x3b73, (q15_t)0x8ea5, (q15_t)0x3b6d, (q15_t)0x8ea2, (q15_t)0x3b67, (q15_t)0x8e9f, + (q15_t)0x3b62, (q15_t)0x8e9c, (q15_t)0x3b5c, (q15_t)0x8e99, (q15_t)0x3b57, (q15_t)0x8e97, (q15_t)0x3b51, (q15_t)0x8e94, + (q15_t)0x3b4c, (q15_t)0x8e91, (q15_t)0x3b46, (q15_t)0x8e8e, (q15_t)0x3b40, (q15_t)0x8e8b, (q15_t)0x3b3b, (q15_t)0x8e88, + (q15_t)0x3b35, (q15_t)0x8e85, (q15_t)0x3b30, (q15_t)0x8e82, (q15_t)0x3b2a, (q15_t)0x8e7f, (q15_t)0x3b25, (q15_t)0x8e7c, + (q15_t)0x3b1f, (q15_t)0x8e7a, (q15_t)0x3b19, (q15_t)0x8e77, (q15_t)0x3b14, (q15_t)0x8e74, (q15_t)0x3b0e, (q15_t)0x8e71, + (q15_t)0x3b09, (q15_t)0x8e6e, (q15_t)0x3b03, (q15_t)0x8e6b, (q15_t)0x3afe, (q15_t)0x8e68, (q15_t)0x3af8, (q15_t)0x8e65, + (q15_t)0x3af2, (q15_t)0x8e62, (q15_t)0x3aed, (q15_t)0x8e5f, (q15_t)0x3ae7, (q15_t)0x8e5d, (q15_t)0x3ae2, (q15_t)0x8e5a, + (q15_t)0x3adc, (q15_t)0x8e57, (q15_t)0x3ad7, (q15_t)0x8e54, (q15_t)0x3ad1, (q15_t)0x8e51, (q15_t)0x3acb, (q15_t)0x8e4e, + (q15_t)0x3ac6, (q15_t)0x8e4b, (q15_t)0x3ac0, (q15_t)0x8e48, (q15_t)0x3abb, (q15_t)0x8e45, (q15_t)0x3ab5, (q15_t)0x8e43, + (q15_t)0x3aaf, (q15_t)0x8e40, (q15_t)0x3aaa, (q15_t)0x8e3d, (q15_t)0x3aa4, (q15_t)0x8e3a, (q15_t)0x3a9f, (q15_t)0x8e37, + (q15_t)0x3a99, (q15_t)0x8e34, (q15_t)0x3a94, (q15_t)0x8e31, (q15_t)0x3a8e, (q15_t)0x8e2e, (q15_t)0x3a88, (q15_t)0x8e2c, + (q15_t)0x3a83, (q15_t)0x8e29, (q15_t)0x3a7d, (q15_t)0x8e26, (q15_t)0x3a78, (q15_t)0x8e23, (q15_t)0x3a72, (q15_t)0x8e20, + (q15_t)0x3a6c, (q15_t)0x8e1d, (q15_t)0x3a67, (q15_t)0x8e1a, (q15_t)0x3a61, (q15_t)0x8e17, (q15_t)0x3a5c, (q15_t)0x8e15, + (q15_t)0x3a56, (q15_t)0x8e12, (q15_t)0x3a50, (q15_t)0x8e0f, (q15_t)0x3a4b, (q15_t)0x8e0c, (q15_t)0x3a45, (q15_t)0x8e09, + (q15_t)0x3a40, (q15_t)0x8e06, (q15_t)0x3a3a, (q15_t)0x8e03, (q15_t)0x3a34, (q15_t)0x8e01, (q15_t)0x3a2f, (q15_t)0x8dfe, + (q15_t)0x3a29, (q15_t)0x8dfb, (q15_t)0x3a24, (q15_t)0x8df8, (q15_t)0x3a1e, (q15_t)0x8df5, (q15_t)0x3a19, (q15_t)0x8df2, + (q15_t)0x3a13, (q15_t)0x8def, (q15_t)0x3a0d, (q15_t)0x8ded, (q15_t)0x3a08, (q15_t)0x8dea, (q15_t)0x3a02, (q15_t)0x8de7, + (q15_t)0x39fd, (q15_t)0x8de4, (q15_t)0x39f7, (q15_t)0x8de1, (q15_t)0x39f1, (q15_t)0x8dde, (q15_t)0x39ec, (q15_t)0x8ddc, + (q15_t)0x39e6, (q15_t)0x8dd9, (q15_t)0x39e0, (q15_t)0x8dd6, (q15_t)0x39db, (q15_t)0x8dd3, (q15_t)0x39d5, (q15_t)0x8dd0, + (q15_t)0x39d0, (q15_t)0x8dcd, (q15_t)0x39ca, (q15_t)0x8dca, (q15_t)0x39c4, (q15_t)0x8dc8, (q15_t)0x39bf, (q15_t)0x8dc5, + (q15_t)0x39b9, (q15_t)0x8dc2, (q15_t)0x39b4, (q15_t)0x8dbf, (q15_t)0x39ae, (q15_t)0x8dbc, (q15_t)0x39a8, (q15_t)0x8db9, + (q15_t)0x39a3, (q15_t)0x8db7, (q15_t)0x399d, (q15_t)0x8db4, (q15_t)0x3998, (q15_t)0x8db1, (q15_t)0x3992, (q15_t)0x8dae, + (q15_t)0x398c, (q15_t)0x8dab, (q15_t)0x3987, (q15_t)0x8da9, (q15_t)0x3981, (q15_t)0x8da6, (q15_t)0x397c, (q15_t)0x8da3, + (q15_t)0x3976, (q15_t)0x8da0, (q15_t)0x3970, (q15_t)0x8d9d, (q15_t)0x396b, (q15_t)0x8d9a, (q15_t)0x3965, (q15_t)0x8d98, + (q15_t)0x395f, (q15_t)0x8d95, (q15_t)0x395a, (q15_t)0x8d92, (q15_t)0x3954, (q15_t)0x8d8f, (q15_t)0x394f, (q15_t)0x8d8c, + (q15_t)0x3949, (q15_t)0x8d8a, (q15_t)0x3943, (q15_t)0x8d87, (q15_t)0x393e, (q15_t)0x8d84, (q15_t)0x3938, (q15_t)0x8d81, + (q15_t)0x3932, (q15_t)0x8d7e, (q15_t)0x392d, (q15_t)0x8d7b, (q15_t)0x3927, (q15_t)0x8d79, (q15_t)0x3922, (q15_t)0x8d76, + (q15_t)0x391c, (q15_t)0x8d73, (q15_t)0x3916, (q15_t)0x8d70, (q15_t)0x3911, (q15_t)0x8d6d, (q15_t)0x390b, (q15_t)0x8d6b, + (q15_t)0x3906, (q15_t)0x8d68, (q15_t)0x3900, (q15_t)0x8d65, (q15_t)0x38fa, (q15_t)0x8d62, (q15_t)0x38f5, (q15_t)0x8d5f, + (q15_t)0x38ef, (q15_t)0x8d5d, (q15_t)0x38e9, (q15_t)0x8d5a, (q15_t)0x38e4, (q15_t)0x8d57, (q15_t)0x38de, (q15_t)0x8d54, + (q15_t)0x38d8, (q15_t)0x8d51, (q15_t)0x38d3, (q15_t)0x8d4f, (q15_t)0x38cd, (q15_t)0x8d4c, (q15_t)0x38c8, (q15_t)0x8d49, + (q15_t)0x38c2, (q15_t)0x8d46, (q15_t)0x38bc, (q15_t)0x8d44, (q15_t)0x38b7, (q15_t)0x8d41, (q15_t)0x38b1, (q15_t)0x8d3e, + (q15_t)0x38ab, (q15_t)0x8d3b, (q15_t)0x38a6, (q15_t)0x8d38, (q15_t)0x38a0, (q15_t)0x8d36, (q15_t)0x389b, (q15_t)0x8d33, + (q15_t)0x3895, (q15_t)0x8d30, (q15_t)0x388f, (q15_t)0x8d2d, (q15_t)0x388a, (q15_t)0x8d2b, (q15_t)0x3884, (q15_t)0x8d28, + (q15_t)0x387e, (q15_t)0x8d25, (q15_t)0x3879, (q15_t)0x8d22, (q15_t)0x3873, (q15_t)0x8d1f, (q15_t)0x386d, (q15_t)0x8d1d, + (q15_t)0x3868, (q15_t)0x8d1a, (q15_t)0x3862, (q15_t)0x8d17, (q15_t)0x385d, (q15_t)0x8d14, (q15_t)0x3857, (q15_t)0x8d12, + (q15_t)0x3851, (q15_t)0x8d0f, (q15_t)0x384c, (q15_t)0x8d0c, (q15_t)0x3846, (q15_t)0x8d09, (q15_t)0x3840, (q15_t)0x8d07, + (q15_t)0x383b, (q15_t)0x8d04, (q15_t)0x3835, (q15_t)0x8d01, (q15_t)0x382f, (q15_t)0x8cfe, (q15_t)0x382a, (q15_t)0x8cfb, + (q15_t)0x3824, (q15_t)0x8cf9, (q15_t)0x381e, (q15_t)0x8cf6, (q15_t)0x3819, (q15_t)0x8cf3, (q15_t)0x3813, (q15_t)0x8cf0, + (q15_t)0x380d, (q15_t)0x8cee, (q15_t)0x3808, (q15_t)0x8ceb, (q15_t)0x3802, (q15_t)0x8ce8, (q15_t)0x37fd, (q15_t)0x8ce5, + (q15_t)0x37f7, (q15_t)0x8ce3, (q15_t)0x37f1, (q15_t)0x8ce0, (q15_t)0x37ec, (q15_t)0x8cdd, (q15_t)0x37e6, (q15_t)0x8cda, + (q15_t)0x37e0, (q15_t)0x8cd8, (q15_t)0x37db, (q15_t)0x8cd5, (q15_t)0x37d5, (q15_t)0x8cd2, (q15_t)0x37cf, (q15_t)0x8cd0, + (q15_t)0x37ca, (q15_t)0x8ccd, (q15_t)0x37c4, (q15_t)0x8cca, (q15_t)0x37be, (q15_t)0x8cc7, (q15_t)0x37b9, (q15_t)0x8cc5, + (q15_t)0x37b3, (q15_t)0x8cc2, (q15_t)0x37ad, (q15_t)0x8cbf, (q15_t)0x37a8, (q15_t)0x8cbc, (q15_t)0x37a2, (q15_t)0x8cba, + (q15_t)0x379c, (q15_t)0x8cb7, (q15_t)0x3797, (q15_t)0x8cb4, (q15_t)0x3791, (q15_t)0x8cb1, (q15_t)0x378b, (q15_t)0x8caf, + (q15_t)0x3786, (q15_t)0x8cac, (q15_t)0x3780, (q15_t)0x8ca9, (q15_t)0x377a, (q15_t)0x8ca7, (q15_t)0x3775, (q15_t)0x8ca4, + (q15_t)0x376f, (q15_t)0x8ca1, (q15_t)0x3769, (q15_t)0x8c9e, (q15_t)0x3764, (q15_t)0x8c9c, (q15_t)0x375e, (q15_t)0x8c99, + (q15_t)0x3758, (q15_t)0x8c96, (q15_t)0x3753, (q15_t)0x8c94, (q15_t)0x374d, (q15_t)0x8c91, (q15_t)0x3747, (q15_t)0x8c8e, + (q15_t)0x3742, (q15_t)0x8c8b, (q15_t)0x373c, (q15_t)0x8c89, (q15_t)0x3736, (q15_t)0x8c86, (q15_t)0x3731, (q15_t)0x8c83, + (q15_t)0x372b, (q15_t)0x8c81, (q15_t)0x3725, (q15_t)0x8c7e, (q15_t)0x3720, (q15_t)0x8c7b, (q15_t)0x371a, (q15_t)0x8c78, + (q15_t)0x3714, (q15_t)0x8c76, (q15_t)0x370f, (q15_t)0x8c73, (q15_t)0x3709, (q15_t)0x8c70, (q15_t)0x3703, (q15_t)0x8c6e, + (q15_t)0x36fe, (q15_t)0x8c6b, (q15_t)0x36f8, (q15_t)0x8c68, (q15_t)0x36f2, (q15_t)0x8c65, (q15_t)0x36ed, (q15_t)0x8c63, + (q15_t)0x36e7, (q15_t)0x8c60, (q15_t)0x36e1, (q15_t)0x8c5d, (q15_t)0x36dc, (q15_t)0x8c5b, (q15_t)0x36d6, (q15_t)0x8c58, + (q15_t)0x36d0, (q15_t)0x8c55, (q15_t)0x36cb, (q15_t)0x8c53, (q15_t)0x36c5, (q15_t)0x8c50, (q15_t)0x36bf, (q15_t)0x8c4d, + (q15_t)0x36ba, (q15_t)0x8c4b, (q15_t)0x36b4, (q15_t)0x8c48, (q15_t)0x36ae, (q15_t)0x8c45, (q15_t)0x36a9, (q15_t)0x8c43, + (q15_t)0x36a3, (q15_t)0x8c40, (q15_t)0x369d, (q15_t)0x8c3d, (q15_t)0x3698, (q15_t)0x8c3a, (q15_t)0x3692, (q15_t)0x8c38, + (q15_t)0x368c, (q15_t)0x8c35, (q15_t)0x3686, (q15_t)0x8c32, (q15_t)0x3681, (q15_t)0x8c30, (q15_t)0x367b, (q15_t)0x8c2d, + (q15_t)0x3675, (q15_t)0x8c2a, (q15_t)0x3670, (q15_t)0x8c28, (q15_t)0x366a, (q15_t)0x8c25, (q15_t)0x3664, (q15_t)0x8c22, + (q15_t)0x365f, (q15_t)0x8c20, (q15_t)0x3659, (q15_t)0x8c1d, (q15_t)0x3653, (q15_t)0x8c1a, (q15_t)0x364e, (q15_t)0x8c18, + (q15_t)0x3648, (q15_t)0x8c15, (q15_t)0x3642, (q15_t)0x8c12, (q15_t)0x363d, (q15_t)0x8c10, (q15_t)0x3637, (q15_t)0x8c0d, + (q15_t)0x3631, (q15_t)0x8c0a, (q15_t)0x362b, (q15_t)0x8c08, (q15_t)0x3626, (q15_t)0x8c05, (q15_t)0x3620, (q15_t)0x8c02, + (q15_t)0x361a, (q15_t)0x8c00, (q15_t)0x3615, (q15_t)0x8bfd, (q15_t)0x360f, (q15_t)0x8bfa, (q15_t)0x3609, (q15_t)0x8bf8, + (q15_t)0x3604, (q15_t)0x8bf5, (q15_t)0x35fe, (q15_t)0x8bf3, (q15_t)0x35f8, (q15_t)0x8bf0, (q15_t)0x35f3, (q15_t)0x8bed, + (q15_t)0x35ed, (q15_t)0x8beb, (q15_t)0x35e7, (q15_t)0x8be8, (q15_t)0x35e1, (q15_t)0x8be5, (q15_t)0x35dc, (q15_t)0x8be3, + (q15_t)0x35d6, (q15_t)0x8be0, (q15_t)0x35d0, (q15_t)0x8bdd, (q15_t)0x35cb, (q15_t)0x8bdb, (q15_t)0x35c5, (q15_t)0x8bd8, + (q15_t)0x35bf, (q15_t)0x8bd5, (q15_t)0x35ba, (q15_t)0x8bd3, (q15_t)0x35b4, (q15_t)0x8bd0, (q15_t)0x35ae, (q15_t)0x8bce, + (q15_t)0x35a8, (q15_t)0x8bcb, (q15_t)0x35a3, (q15_t)0x8bc8, (q15_t)0x359d, (q15_t)0x8bc6, (q15_t)0x3597, (q15_t)0x8bc3, + (q15_t)0x3592, (q15_t)0x8bc0, (q15_t)0x358c, (q15_t)0x8bbe, (q15_t)0x3586, (q15_t)0x8bbb, (q15_t)0x3580, (q15_t)0x8bb8, + (q15_t)0x357b, (q15_t)0x8bb6, (q15_t)0x3575, (q15_t)0x8bb3, (q15_t)0x356f, (q15_t)0x8bb1, (q15_t)0x356a, (q15_t)0x8bae, + (q15_t)0x3564, (q15_t)0x8bab, (q15_t)0x355e, (q15_t)0x8ba9, (q15_t)0x3558, (q15_t)0x8ba6, (q15_t)0x3553, (q15_t)0x8ba4, + (q15_t)0x354d, (q15_t)0x8ba1, (q15_t)0x3547, (q15_t)0x8b9e, (q15_t)0x3542, (q15_t)0x8b9c, (q15_t)0x353c, (q15_t)0x8b99, + (q15_t)0x3536, (q15_t)0x8b96, (q15_t)0x3530, (q15_t)0x8b94, (q15_t)0x352b, (q15_t)0x8b91, (q15_t)0x3525, (q15_t)0x8b8f, + (q15_t)0x351f, (q15_t)0x8b8c, (q15_t)0x351a, (q15_t)0x8b89, (q15_t)0x3514, (q15_t)0x8b87, (q15_t)0x350e, (q15_t)0x8b84, + (q15_t)0x3508, (q15_t)0x8b82, (q15_t)0x3503, (q15_t)0x8b7f, (q15_t)0x34fd, (q15_t)0x8b7c, (q15_t)0x34f7, (q15_t)0x8b7a, + (q15_t)0x34f2, (q15_t)0x8b77, (q15_t)0x34ec, (q15_t)0x8b75, (q15_t)0x34e6, (q15_t)0x8b72, (q15_t)0x34e0, (q15_t)0x8b6f, + (q15_t)0x34db, (q15_t)0x8b6d, (q15_t)0x34d5, (q15_t)0x8b6a, (q15_t)0x34cf, (q15_t)0x8b68, (q15_t)0x34ca, (q15_t)0x8b65, + (q15_t)0x34c4, (q15_t)0x8b62, (q15_t)0x34be, (q15_t)0x8b60, (q15_t)0x34b8, (q15_t)0x8b5d, (q15_t)0x34b3, (q15_t)0x8b5b, + (q15_t)0x34ad, (q15_t)0x8b58, (q15_t)0x34a7, (q15_t)0x8b55, (q15_t)0x34a1, (q15_t)0x8b53, (q15_t)0x349c, (q15_t)0x8b50, + (q15_t)0x3496, (q15_t)0x8b4e, (q15_t)0x3490, (q15_t)0x8b4b, (q15_t)0x348b, (q15_t)0x8b49, (q15_t)0x3485, (q15_t)0x8b46, + (q15_t)0x347f, (q15_t)0x8b43, (q15_t)0x3479, (q15_t)0x8b41, (q15_t)0x3474, (q15_t)0x8b3e, (q15_t)0x346e, (q15_t)0x8b3c, + (q15_t)0x3468, (q15_t)0x8b39, (q15_t)0x3462, (q15_t)0x8b37, (q15_t)0x345d, (q15_t)0x8b34, (q15_t)0x3457, (q15_t)0x8b31, + (q15_t)0x3451, (q15_t)0x8b2f, (q15_t)0x344b, (q15_t)0x8b2c, (q15_t)0x3446, (q15_t)0x8b2a, (q15_t)0x3440, (q15_t)0x8b27, + (q15_t)0x343a, (q15_t)0x8b25, (q15_t)0x3435, (q15_t)0x8b22, (q15_t)0x342f, (q15_t)0x8b1f, (q15_t)0x3429, (q15_t)0x8b1d, + (q15_t)0x3423, (q15_t)0x8b1a, (q15_t)0x341e, (q15_t)0x8b18, (q15_t)0x3418, (q15_t)0x8b15, (q15_t)0x3412, (q15_t)0x8b13, + (q15_t)0x340c, (q15_t)0x8b10, (q15_t)0x3407, (q15_t)0x8b0e, (q15_t)0x3401, (q15_t)0x8b0b, (q15_t)0x33fb, (q15_t)0x8b08, + (q15_t)0x33f5, (q15_t)0x8b06, (q15_t)0x33f0, (q15_t)0x8b03, (q15_t)0x33ea, (q15_t)0x8b01, (q15_t)0x33e4, (q15_t)0x8afe, + (q15_t)0x33de, (q15_t)0x8afc, (q15_t)0x33d9, (q15_t)0x8af9, (q15_t)0x33d3, (q15_t)0x8af7, (q15_t)0x33cd, (q15_t)0x8af4, + (q15_t)0x33c7, (q15_t)0x8af1, (q15_t)0x33c2, (q15_t)0x8aef, (q15_t)0x33bc, (q15_t)0x8aec, (q15_t)0x33b6, (q15_t)0x8aea, + (q15_t)0x33b0, (q15_t)0x8ae7, (q15_t)0x33ab, (q15_t)0x8ae5, (q15_t)0x33a5, (q15_t)0x8ae2, (q15_t)0x339f, (q15_t)0x8ae0, + (q15_t)0x3399, (q15_t)0x8add, (q15_t)0x3394, (q15_t)0x8adb, (q15_t)0x338e, (q15_t)0x8ad8, (q15_t)0x3388, (q15_t)0x8ad6, + (q15_t)0x3382, (q15_t)0x8ad3, (q15_t)0x337d, (q15_t)0x8ad1, (q15_t)0x3377, (q15_t)0x8ace, (q15_t)0x3371, (q15_t)0x8acb, + (q15_t)0x336b, (q15_t)0x8ac9, (q15_t)0x3366, (q15_t)0x8ac6, (q15_t)0x3360, (q15_t)0x8ac4, (q15_t)0x335a, (q15_t)0x8ac1, + (q15_t)0x3354, (q15_t)0x8abf, (q15_t)0x334f, (q15_t)0x8abc, (q15_t)0x3349, (q15_t)0x8aba, (q15_t)0x3343, (q15_t)0x8ab7, + (q15_t)0x333d, (q15_t)0x8ab5, (q15_t)0x3338, (q15_t)0x8ab2, (q15_t)0x3332, (q15_t)0x8ab0, (q15_t)0x332c, (q15_t)0x8aad, + (q15_t)0x3326, (q15_t)0x8aab, (q15_t)0x3321, (q15_t)0x8aa8, (q15_t)0x331b, (q15_t)0x8aa6, (q15_t)0x3315, (q15_t)0x8aa3, + (q15_t)0x330f, (q15_t)0x8aa1, (q15_t)0x330a, (q15_t)0x8a9e, (q15_t)0x3304, (q15_t)0x8a9c, (q15_t)0x32fe, (q15_t)0x8a99, + (q15_t)0x32f8, (q15_t)0x8a97, (q15_t)0x32f3, (q15_t)0x8a94, (q15_t)0x32ed, (q15_t)0x8a92, (q15_t)0x32e7, (q15_t)0x8a8f, + (q15_t)0x32e1, (q15_t)0x8a8d, (q15_t)0x32db, (q15_t)0x8a8a, (q15_t)0x32d6, (q15_t)0x8a88, (q15_t)0x32d0, (q15_t)0x8a85, + (q15_t)0x32ca, (q15_t)0x8a83, (q15_t)0x32c4, (q15_t)0x8a80, (q15_t)0x32bf, (q15_t)0x8a7e, (q15_t)0x32b9, (q15_t)0x8a7b, + (q15_t)0x32b3, (q15_t)0x8a79, (q15_t)0x32ad, (q15_t)0x8a76, (q15_t)0x32a8, (q15_t)0x8a74, (q15_t)0x32a2, (q15_t)0x8a71, + (q15_t)0x329c, (q15_t)0x8a6f, (q15_t)0x3296, (q15_t)0x8a6c, (q15_t)0x3290, (q15_t)0x8a6a, (q15_t)0x328b, (q15_t)0x8a67, + (q15_t)0x3285, (q15_t)0x8a65, (q15_t)0x327f, (q15_t)0x8a62, (q15_t)0x3279, (q15_t)0x8a60, (q15_t)0x3274, (q15_t)0x8a5d, + (q15_t)0x326e, (q15_t)0x8a5b, (q15_t)0x3268, (q15_t)0x8a59, (q15_t)0x3262, (q15_t)0x8a56, (q15_t)0x325d, (q15_t)0x8a54, + (q15_t)0x3257, (q15_t)0x8a51, (q15_t)0x3251, (q15_t)0x8a4f, (q15_t)0x324b, (q15_t)0x8a4c, (q15_t)0x3245, (q15_t)0x8a4a, + (q15_t)0x3240, (q15_t)0x8a47, (q15_t)0x323a, (q15_t)0x8a45, (q15_t)0x3234, (q15_t)0x8a42, (q15_t)0x322e, (q15_t)0x8a40, + (q15_t)0x3228, (q15_t)0x8a3d, (q15_t)0x3223, (q15_t)0x8a3b, (q15_t)0x321d, (q15_t)0x8a38, (q15_t)0x3217, (q15_t)0x8a36, + (q15_t)0x3211, (q15_t)0x8a34, (q15_t)0x320c, (q15_t)0x8a31, (q15_t)0x3206, (q15_t)0x8a2f, (q15_t)0x3200, (q15_t)0x8a2c, + (q15_t)0x31fa, (q15_t)0x8a2a, (q15_t)0x31f4, (q15_t)0x8a27, (q15_t)0x31ef, (q15_t)0x8a25, (q15_t)0x31e9, (q15_t)0x8a22, + (q15_t)0x31e3, (q15_t)0x8a20, (q15_t)0x31dd, (q15_t)0x8a1d, (q15_t)0x31d8, (q15_t)0x8a1b, (q15_t)0x31d2, (q15_t)0x8a19, + (q15_t)0x31cc, (q15_t)0x8a16, (q15_t)0x31c6, (q15_t)0x8a14, (q15_t)0x31c0, (q15_t)0x8a11, (q15_t)0x31bb, (q15_t)0x8a0f, + (q15_t)0x31b5, (q15_t)0x8a0c, (q15_t)0x31af, (q15_t)0x8a0a, (q15_t)0x31a9, (q15_t)0x8a07, (q15_t)0x31a3, (q15_t)0x8a05, + (q15_t)0x319e, (q15_t)0x8a03, (q15_t)0x3198, (q15_t)0x8a00, (q15_t)0x3192, (q15_t)0x89fe, (q15_t)0x318c, (q15_t)0x89fb, + (q15_t)0x3186, (q15_t)0x89f9, (q15_t)0x3181, (q15_t)0x89f6, (q15_t)0x317b, (q15_t)0x89f4, (q15_t)0x3175, (q15_t)0x89f2, + (q15_t)0x316f, (q15_t)0x89ef, (q15_t)0x3169, (q15_t)0x89ed, (q15_t)0x3164, (q15_t)0x89ea, (q15_t)0x315e, (q15_t)0x89e8, + (q15_t)0x3158, (q15_t)0x89e5, (q15_t)0x3152, (q15_t)0x89e3, (q15_t)0x314c, (q15_t)0x89e1, (q15_t)0x3147, (q15_t)0x89de, + (q15_t)0x3141, (q15_t)0x89dc, (q15_t)0x313b, (q15_t)0x89d9, (q15_t)0x3135, (q15_t)0x89d7, (q15_t)0x312f, (q15_t)0x89d5, + (q15_t)0x312a, (q15_t)0x89d2, (q15_t)0x3124, (q15_t)0x89d0, (q15_t)0x311e, (q15_t)0x89cd, (q15_t)0x3118, (q15_t)0x89cb, + (q15_t)0x3112, (q15_t)0x89c8, (q15_t)0x310d, (q15_t)0x89c6, (q15_t)0x3107, (q15_t)0x89c4, (q15_t)0x3101, (q15_t)0x89c1, + (q15_t)0x30fb, (q15_t)0x89bf, (q15_t)0x30f5, (q15_t)0x89bc, (q15_t)0x30f0, (q15_t)0x89ba, (q15_t)0x30ea, (q15_t)0x89b8, + (q15_t)0x30e4, (q15_t)0x89b5, (q15_t)0x30de, (q15_t)0x89b3, (q15_t)0x30d8, (q15_t)0x89b0, (q15_t)0x30d3, (q15_t)0x89ae, + (q15_t)0x30cd, (q15_t)0x89ac, (q15_t)0x30c7, (q15_t)0x89a9, (q15_t)0x30c1, (q15_t)0x89a7, (q15_t)0x30bb, (q15_t)0x89a4, + (q15_t)0x30b6, (q15_t)0x89a2, (q15_t)0x30b0, (q15_t)0x89a0, (q15_t)0x30aa, (q15_t)0x899d, (q15_t)0x30a4, (q15_t)0x899b, + (q15_t)0x309e, (q15_t)0x8998, (q15_t)0x3099, (q15_t)0x8996, (q15_t)0x3093, (q15_t)0x8994, (q15_t)0x308d, (q15_t)0x8991, + (q15_t)0x3087, (q15_t)0x898f, (q15_t)0x3081, (q15_t)0x898d, (q15_t)0x307b, (q15_t)0x898a, (q15_t)0x3076, (q15_t)0x8988, + (q15_t)0x3070, (q15_t)0x8985, (q15_t)0x306a, (q15_t)0x8983, (q15_t)0x3064, (q15_t)0x8981, (q15_t)0x305e, (q15_t)0x897e, + (q15_t)0x3059, (q15_t)0x897c, (q15_t)0x3053, (q15_t)0x897a, (q15_t)0x304d, (q15_t)0x8977, (q15_t)0x3047, (q15_t)0x8975, + (q15_t)0x3041, (q15_t)0x8972, (q15_t)0x303b, (q15_t)0x8970, (q15_t)0x3036, (q15_t)0x896e, (q15_t)0x3030, (q15_t)0x896b, + (q15_t)0x302a, (q15_t)0x8969, (q15_t)0x3024, (q15_t)0x8967, (q15_t)0x301e, (q15_t)0x8964, (q15_t)0x3019, (q15_t)0x8962, + (q15_t)0x3013, (q15_t)0x8960, (q15_t)0x300d, (q15_t)0x895d, (q15_t)0x3007, (q15_t)0x895b, (q15_t)0x3001, (q15_t)0x8958, + (q15_t)0x2ffb, (q15_t)0x8956, (q15_t)0x2ff6, (q15_t)0x8954, (q15_t)0x2ff0, (q15_t)0x8951, (q15_t)0x2fea, (q15_t)0x894f, + (q15_t)0x2fe4, (q15_t)0x894d, (q15_t)0x2fde, (q15_t)0x894a, (q15_t)0x2fd8, (q15_t)0x8948, (q15_t)0x2fd3, (q15_t)0x8946, + (q15_t)0x2fcd, (q15_t)0x8943, (q15_t)0x2fc7, (q15_t)0x8941, (q15_t)0x2fc1, (q15_t)0x893f, (q15_t)0x2fbb, (q15_t)0x893c, + (q15_t)0x2fb5, (q15_t)0x893a, (q15_t)0x2fb0, (q15_t)0x8938, (q15_t)0x2faa, (q15_t)0x8935, (q15_t)0x2fa4, (q15_t)0x8933, + (q15_t)0x2f9e, (q15_t)0x8931, (q15_t)0x2f98, (q15_t)0x892e, (q15_t)0x2f92, (q15_t)0x892c, (q15_t)0x2f8d, (q15_t)0x892a, + (q15_t)0x2f87, (q15_t)0x8927, (q15_t)0x2f81, (q15_t)0x8925, (q15_t)0x2f7b, (q15_t)0x8923, (q15_t)0x2f75, (q15_t)0x8920, + (q15_t)0x2f6f, (q15_t)0x891e, (q15_t)0x2f6a, (q15_t)0x891c, (q15_t)0x2f64, (q15_t)0x8919, (q15_t)0x2f5e, (q15_t)0x8917, + (q15_t)0x2f58, (q15_t)0x8915, (q15_t)0x2f52, (q15_t)0x8912, (q15_t)0x2f4c, (q15_t)0x8910, (q15_t)0x2f47, (q15_t)0x890e, + (q15_t)0x2f41, (q15_t)0x890b, (q15_t)0x2f3b, (q15_t)0x8909, (q15_t)0x2f35, (q15_t)0x8907, (q15_t)0x2f2f, (q15_t)0x8904, + (q15_t)0x2f29, (q15_t)0x8902, (q15_t)0x2f24, (q15_t)0x8900, (q15_t)0x2f1e, (q15_t)0x88fd, (q15_t)0x2f18, (q15_t)0x88fb, + (q15_t)0x2f12, (q15_t)0x88f9, (q15_t)0x2f0c, (q15_t)0x88f6, (q15_t)0x2f06, (q15_t)0x88f4, (q15_t)0x2f01, (q15_t)0x88f2, + (q15_t)0x2efb, (q15_t)0x88f0, (q15_t)0x2ef5, (q15_t)0x88ed, (q15_t)0x2eef, (q15_t)0x88eb, (q15_t)0x2ee9, (q15_t)0x88e9, + (q15_t)0x2ee3, (q15_t)0x88e6, (q15_t)0x2edd, (q15_t)0x88e4, (q15_t)0x2ed8, (q15_t)0x88e2, (q15_t)0x2ed2, (q15_t)0x88df, + (q15_t)0x2ecc, (q15_t)0x88dd, (q15_t)0x2ec6, (q15_t)0x88db, (q15_t)0x2ec0, (q15_t)0x88d9, (q15_t)0x2eba, (q15_t)0x88d6, + (q15_t)0x2eb5, (q15_t)0x88d4, (q15_t)0x2eaf, (q15_t)0x88d2, (q15_t)0x2ea9, (q15_t)0x88cf, (q15_t)0x2ea3, (q15_t)0x88cd, + (q15_t)0x2e9d, (q15_t)0x88cb, (q15_t)0x2e97, (q15_t)0x88c8, (q15_t)0x2e91, (q15_t)0x88c6, (q15_t)0x2e8c, (q15_t)0x88c4, + (q15_t)0x2e86, (q15_t)0x88c2, (q15_t)0x2e80, (q15_t)0x88bf, (q15_t)0x2e7a, (q15_t)0x88bd, (q15_t)0x2e74, (q15_t)0x88bb, + (q15_t)0x2e6e, (q15_t)0x88b9, (q15_t)0x2e68, (q15_t)0x88b6, (q15_t)0x2e63, (q15_t)0x88b4, (q15_t)0x2e5d, (q15_t)0x88b2, + (q15_t)0x2e57, (q15_t)0x88af, (q15_t)0x2e51, (q15_t)0x88ad, (q15_t)0x2e4b, (q15_t)0x88ab, (q15_t)0x2e45, (q15_t)0x88a9, + (q15_t)0x2e3f, (q15_t)0x88a6, (q15_t)0x2e3a, (q15_t)0x88a4, (q15_t)0x2e34, (q15_t)0x88a2, (q15_t)0x2e2e, (q15_t)0x88a0, + (q15_t)0x2e28, (q15_t)0x889d, (q15_t)0x2e22, (q15_t)0x889b, (q15_t)0x2e1c, (q15_t)0x8899, (q15_t)0x2e16, (q15_t)0x8896, + (q15_t)0x2e11, (q15_t)0x8894, (q15_t)0x2e0b, (q15_t)0x8892, (q15_t)0x2e05, (q15_t)0x8890, (q15_t)0x2dff, (q15_t)0x888d, + (q15_t)0x2df9, (q15_t)0x888b, (q15_t)0x2df3, (q15_t)0x8889, (q15_t)0x2ded, (q15_t)0x8887, (q15_t)0x2de7, (q15_t)0x8884, + (q15_t)0x2de2, (q15_t)0x8882, (q15_t)0x2ddc, (q15_t)0x8880, (q15_t)0x2dd6, (q15_t)0x887e, (q15_t)0x2dd0, (q15_t)0x887b, + (q15_t)0x2dca, (q15_t)0x8879, (q15_t)0x2dc4, (q15_t)0x8877, (q15_t)0x2dbe, (q15_t)0x8875, (q15_t)0x2db9, (q15_t)0x8872, + (q15_t)0x2db3, (q15_t)0x8870, (q15_t)0x2dad, (q15_t)0x886e, (q15_t)0x2da7, (q15_t)0x886c, (q15_t)0x2da1, (q15_t)0x8869, + (q15_t)0x2d9b, (q15_t)0x8867, (q15_t)0x2d95, (q15_t)0x8865, (q15_t)0x2d8f, (q15_t)0x8863, (q15_t)0x2d8a, (q15_t)0x8860, + (q15_t)0x2d84, (q15_t)0x885e, (q15_t)0x2d7e, (q15_t)0x885c, (q15_t)0x2d78, (q15_t)0x885a, (q15_t)0x2d72, (q15_t)0x8858, + (q15_t)0x2d6c, (q15_t)0x8855, (q15_t)0x2d66, (q15_t)0x8853, (q15_t)0x2d60, (q15_t)0x8851, (q15_t)0x2d5b, (q15_t)0x884f, + (q15_t)0x2d55, (q15_t)0x884c, (q15_t)0x2d4f, (q15_t)0x884a, (q15_t)0x2d49, (q15_t)0x8848, (q15_t)0x2d43, (q15_t)0x8846, + (q15_t)0x2d3d, (q15_t)0x8844, (q15_t)0x2d37, (q15_t)0x8841, (q15_t)0x2d31, (q15_t)0x883f, (q15_t)0x2d2c, (q15_t)0x883d, + (q15_t)0x2d26, (q15_t)0x883b, (q15_t)0x2d20, (q15_t)0x8838, (q15_t)0x2d1a, (q15_t)0x8836, (q15_t)0x2d14, (q15_t)0x8834, + (q15_t)0x2d0e, (q15_t)0x8832, (q15_t)0x2d08, (q15_t)0x8830, (q15_t)0x2d02, (q15_t)0x882d, (q15_t)0x2cfd, (q15_t)0x882b, + (q15_t)0x2cf7, (q15_t)0x8829, (q15_t)0x2cf1, (q15_t)0x8827, (q15_t)0x2ceb, (q15_t)0x8825, (q15_t)0x2ce5, (q15_t)0x8822, + (q15_t)0x2cdf, (q15_t)0x8820, (q15_t)0x2cd9, (q15_t)0x881e, (q15_t)0x2cd3, (q15_t)0x881c, (q15_t)0x2ccd, (q15_t)0x881a, + (q15_t)0x2cc8, (q15_t)0x8817, (q15_t)0x2cc2, (q15_t)0x8815, (q15_t)0x2cbc, (q15_t)0x8813, (q15_t)0x2cb6, (q15_t)0x8811, + (q15_t)0x2cb0, (q15_t)0x880f, (q15_t)0x2caa, (q15_t)0x880c, (q15_t)0x2ca4, (q15_t)0x880a, (q15_t)0x2c9e, (q15_t)0x8808, + (q15_t)0x2c98, (q15_t)0x8806, (q15_t)0x2c93, (q15_t)0x8804, (q15_t)0x2c8d, (q15_t)0x8801, (q15_t)0x2c87, (q15_t)0x87ff, + (q15_t)0x2c81, (q15_t)0x87fd, (q15_t)0x2c7b, (q15_t)0x87fb, (q15_t)0x2c75, (q15_t)0x87f9, (q15_t)0x2c6f, (q15_t)0x87f6, + (q15_t)0x2c69, (q15_t)0x87f4, (q15_t)0x2c63, (q15_t)0x87f2, (q15_t)0x2c5e, (q15_t)0x87f0, (q15_t)0x2c58, (q15_t)0x87ee, + (q15_t)0x2c52, (q15_t)0x87ec, (q15_t)0x2c4c, (q15_t)0x87e9, (q15_t)0x2c46, (q15_t)0x87e7, (q15_t)0x2c40, (q15_t)0x87e5, + (q15_t)0x2c3a, (q15_t)0x87e3, (q15_t)0x2c34, (q15_t)0x87e1, (q15_t)0x2c2e, (q15_t)0x87df, (q15_t)0x2c29, (q15_t)0x87dc, + (q15_t)0x2c23, (q15_t)0x87da, (q15_t)0x2c1d, (q15_t)0x87d8, (q15_t)0x2c17, (q15_t)0x87d6, (q15_t)0x2c11, (q15_t)0x87d4, + (q15_t)0x2c0b, (q15_t)0x87d2, (q15_t)0x2c05, (q15_t)0x87cf, (q15_t)0x2bff, (q15_t)0x87cd, (q15_t)0x2bf9, (q15_t)0x87cb, + (q15_t)0x2bf3, (q15_t)0x87c9, (q15_t)0x2bee, (q15_t)0x87c7, (q15_t)0x2be8, (q15_t)0x87c5, (q15_t)0x2be2, (q15_t)0x87c2, + (q15_t)0x2bdc, (q15_t)0x87c0, (q15_t)0x2bd6, (q15_t)0x87be, (q15_t)0x2bd0, (q15_t)0x87bc, (q15_t)0x2bca, (q15_t)0x87ba, + (q15_t)0x2bc4, (q15_t)0x87b8, (q15_t)0x2bbe, (q15_t)0x87b6, (q15_t)0x2bb8, (q15_t)0x87b3, (q15_t)0x2bb2, (q15_t)0x87b1, + (q15_t)0x2bad, (q15_t)0x87af, (q15_t)0x2ba7, (q15_t)0x87ad, (q15_t)0x2ba1, (q15_t)0x87ab, (q15_t)0x2b9b, (q15_t)0x87a9, + (q15_t)0x2b95, (q15_t)0x87a7, (q15_t)0x2b8f, (q15_t)0x87a4, (q15_t)0x2b89, (q15_t)0x87a2, (q15_t)0x2b83, (q15_t)0x87a0, + (q15_t)0x2b7d, (q15_t)0x879e, (q15_t)0x2b77, (q15_t)0x879c, (q15_t)0x2b71, (q15_t)0x879a, (q15_t)0x2b6c, (q15_t)0x8798, + (q15_t)0x2b66, (q15_t)0x8795, (q15_t)0x2b60, (q15_t)0x8793, (q15_t)0x2b5a, (q15_t)0x8791, (q15_t)0x2b54, (q15_t)0x878f, + (q15_t)0x2b4e, (q15_t)0x878d, (q15_t)0x2b48, (q15_t)0x878b, (q15_t)0x2b42, (q15_t)0x8789, (q15_t)0x2b3c, (q15_t)0x8787, + (q15_t)0x2b36, (q15_t)0x8784, (q15_t)0x2b30, (q15_t)0x8782, (q15_t)0x2b2b, (q15_t)0x8780, (q15_t)0x2b25, (q15_t)0x877e, + (q15_t)0x2b1f, (q15_t)0x877c, (q15_t)0x2b19, (q15_t)0x877a, (q15_t)0x2b13, (q15_t)0x8778, (q15_t)0x2b0d, (q15_t)0x8776, + (q15_t)0x2b07, (q15_t)0x8774, (q15_t)0x2b01, (q15_t)0x8771, (q15_t)0x2afb, (q15_t)0x876f, (q15_t)0x2af5, (q15_t)0x876d, + (q15_t)0x2aef, (q15_t)0x876b, (q15_t)0x2ae9, (q15_t)0x8769, (q15_t)0x2ae4, (q15_t)0x8767, (q15_t)0x2ade, (q15_t)0x8765, + (q15_t)0x2ad8, (q15_t)0x8763, (q15_t)0x2ad2, (q15_t)0x8761, (q15_t)0x2acc, (q15_t)0x875e, (q15_t)0x2ac6, (q15_t)0x875c, + (q15_t)0x2ac0, (q15_t)0x875a, (q15_t)0x2aba, (q15_t)0x8758, (q15_t)0x2ab4, (q15_t)0x8756, (q15_t)0x2aae, (q15_t)0x8754, + (q15_t)0x2aa8, (q15_t)0x8752, (q15_t)0x2aa2, (q15_t)0x8750, (q15_t)0x2a9c, (q15_t)0x874e, (q15_t)0x2a97, (q15_t)0x874c, + (q15_t)0x2a91, (q15_t)0x874a, (q15_t)0x2a8b, (q15_t)0x8747, (q15_t)0x2a85, (q15_t)0x8745, (q15_t)0x2a7f, (q15_t)0x8743, + (q15_t)0x2a79, (q15_t)0x8741, (q15_t)0x2a73, (q15_t)0x873f, (q15_t)0x2a6d, (q15_t)0x873d, (q15_t)0x2a67, (q15_t)0x873b, + (q15_t)0x2a61, (q15_t)0x8739, (q15_t)0x2a5b, (q15_t)0x8737, (q15_t)0x2a55, (q15_t)0x8735, (q15_t)0x2a4f, (q15_t)0x8733, + (q15_t)0x2a49, (q15_t)0x8731, (q15_t)0x2a44, (q15_t)0x872e, (q15_t)0x2a3e, (q15_t)0x872c, (q15_t)0x2a38, (q15_t)0x872a, + (q15_t)0x2a32, (q15_t)0x8728, (q15_t)0x2a2c, (q15_t)0x8726, (q15_t)0x2a26, (q15_t)0x8724, (q15_t)0x2a20, (q15_t)0x8722, + (q15_t)0x2a1a, (q15_t)0x8720, (q15_t)0x2a14, (q15_t)0x871e, (q15_t)0x2a0e, (q15_t)0x871c, (q15_t)0x2a08, (q15_t)0x871a, + (q15_t)0x2a02, (q15_t)0x8718, (q15_t)0x29fc, (q15_t)0x8716, (q15_t)0x29f6, (q15_t)0x8714, (q15_t)0x29f0, (q15_t)0x8712, + (q15_t)0x29eb, (q15_t)0x870f, (q15_t)0x29e5, (q15_t)0x870d, (q15_t)0x29df, (q15_t)0x870b, (q15_t)0x29d9, (q15_t)0x8709, + (q15_t)0x29d3, (q15_t)0x8707, (q15_t)0x29cd, (q15_t)0x8705, (q15_t)0x29c7, (q15_t)0x8703, (q15_t)0x29c1, (q15_t)0x8701, + (q15_t)0x29bb, (q15_t)0x86ff, (q15_t)0x29b5, (q15_t)0x86fd, (q15_t)0x29af, (q15_t)0x86fb, (q15_t)0x29a9, (q15_t)0x86f9, + (q15_t)0x29a3, (q15_t)0x86f7, (q15_t)0x299d, (q15_t)0x86f5, (q15_t)0x2997, (q15_t)0x86f3, (q15_t)0x2991, (q15_t)0x86f1, + (q15_t)0x298b, (q15_t)0x86ef, (q15_t)0x2986, (q15_t)0x86ed, (q15_t)0x2980, (q15_t)0x86eb, (q15_t)0x297a, (q15_t)0x86e9, + (q15_t)0x2974, (q15_t)0x86e7, (q15_t)0x296e, (q15_t)0x86e4, (q15_t)0x2968, (q15_t)0x86e2, (q15_t)0x2962, (q15_t)0x86e0, + (q15_t)0x295c, (q15_t)0x86de, (q15_t)0x2956, (q15_t)0x86dc, (q15_t)0x2950, (q15_t)0x86da, (q15_t)0x294a, (q15_t)0x86d8, + (q15_t)0x2944, (q15_t)0x86d6, (q15_t)0x293e, (q15_t)0x86d4, (q15_t)0x2938, (q15_t)0x86d2, (q15_t)0x2932, (q15_t)0x86d0, + (q15_t)0x292c, (q15_t)0x86ce, (q15_t)0x2926, (q15_t)0x86cc, (q15_t)0x2920, (q15_t)0x86ca, (q15_t)0x291b, (q15_t)0x86c8, + (q15_t)0x2915, (q15_t)0x86c6, (q15_t)0x290f, (q15_t)0x86c4, (q15_t)0x2909, (q15_t)0x86c2, (q15_t)0x2903, (q15_t)0x86c0, + (q15_t)0x28fd, (q15_t)0x86be, (q15_t)0x28f7, (q15_t)0x86bc, (q15_t)0x28f1, (q15_t)0x86ba, (q15_t)0x28eb, (q15_t)0x86b8, + (q15_t)0x28e5, (q15_t)0x86b6, (q15_t)0x28df, (q15_t)0x86b4, (q15_t)0x28d9, (q15_t)0x86b2, (q15_t)0x28d3, (q15_t)0x86b0, + (q15_t)0x28cd, (q15_t)0x86ae, (q15_t)0x28c7, (q15_t)0x86ac, (q15_t)0x28c1, (q15_t)0x86aa, (q15_t)0x28bb, (q15_t)0x86a8, + (q15_t)0x28b5, (q15_t)0x86a6, (q15_t)0x28af, (q15_t)0x86a4, (q15_t)0x28a9, (q15_t)0x86a2, (q15_t)0x28a3, (q15_t)0x86a0, + (q15_t)0x289d, (q15_t)0x869e, (q15_t)0x2898, (q15_t)0x869c, (q15_t)0x2892, (q15_t)0x869a, (q15_t)0x288c, (q15_t)0x8698, + (q15_t)0x2886, (q15_t)0x8696, (q15_t)0x2880, (q15_t)0x8694, (q15_t)0x287a, (q15_t)0x8692, (q15_t)0x2874, (q15_t)0x8690, + (q15_t)0x286e, (q15_t)0x868e, (q15_t)0x2868, (q15_t)0x868c, (q15_t)0x2862, (q15_t)0x868a, (q15_t)0x285c, (q15_t)0x8688, + (q15_t)0x2856, (q15_t)0x8686, (q15_t)0x2850, (q15_t)0x8684, (q15_t)0x284a, (q15_t)0x8682, (q15_t)0x2844, (q15_t)0x8680, + (q15_t)0x283e, (q15_t)0x867e, (q15_t)0x2838, (q15_t)0x867c, (q15_t)0x2832, (q15_t)0x867a, (q15_t)0x282c, (q15_t)0x8678, + (q15_t)0x2826, (q15_t)0x8676, (q15_t)0x2820, (q15_t)0x8674, (q15_t)0x281a, (q15_t)0x8672, (q15_t)0x2814, (q15_t)0x8670, + (q15_t)0x280e, (q15_t)0x866e, (q15_t)0x2808, (q15_t)0x866d, (q15_t)0x2802, (q15_t)0x866b, (q15_t)0x27fc, (q15_t)0x8669, + (q15_t)0x27f6, (q15_t)0x8667, (q15_t)0x27f1, (q15_t)0x8665, (q15_t)0x27eb, (q15_t)0x8663, (q15_t)0x27e5, (q15_t)0x8661, + (q15_t)0x27df, (q15_t)0x865f, (q15_t)0x27d9, (q15_t)0x865d, (q15_t)0x27d3, (q15_t)0x865b, (q15_t)0x27cd, (q15_t)0x8659, + (q15_t)0x27c7, (q15_t)0x8657, (q15_t)0x27c1, (q15_t)0x8655, (q15_t)0x27bb, (q15_t)0x8653, (q15_t)0x27b5, (q15_t)0x8651, + (q15_t)0x27af, (q15_t)0x864f, (q15_t)0x27a9, (q15_t)0x864d, (q15_t)0x27a3, (q15_t)0x864b, (q15_t)0x279d, (q15_t)0x8649, + (q15_t)0x2797, (q15_t)0x8647, (q15_t)0x2791, (q15_t)0x8645, (q15_t)0x278b, (q15_t)0x8644, (q15_t)0x2785, (q15_t)0x8642, + (q15_t)0x277f, (q15_t)0x8640, (q15_t)0x2779, (q15_t)0x863e, (q15_t)0x2773, (q15_t)0x863c, (q15_t)0x276d, (q15_t)0x863a, + (q15_t)0x2767, (q15_t)0x8638, (q15_t)0x2761, (q15_t)0x8636, (q15_t)0x275b, (q15_t)0x8634, (q15_t)0x2755, (q15_t)0x8632, + (q15_t)0x274f, (q15_t)0x8630, (q15_t)0x2749, (q15_t)0x862e, (q15_t)0x2743, (q15_t)0x862c, (q15_t)0x273d, (q15_t)0x862a, + (q15_t)0x2737, (q15_t)0x8628, (q15_t)0x2731, (q15_t)0x8627, (q15_t)0x272b, (q15_t)0x8625, (q15_t)0x2725, (q15_t)0x8623, + (q15_t)0x271f, (q15_t)0x8621, (q15_t)0x2719, (q15_t)0x861f, (q15_t)0x2713, (q15_t)0x861d, (q15_t)0x270d, (q15_t)0x861b, + (q15_t)0x2707, (q15_t)0x8619, (q15_t)0x2701, (q15_t)0x8617, (q15_t)0x26fb, (q15_t)0x8615, (q15_t)0x26f5, (q15_t)0x8613, + (q15_t)0x26ef, (q15_t)0x8611, (q15_t)0x26e9, (q15_t)0x8610, (q15_t)0x26e4, (q15_t)0x860e, (q15_t)0x26de, (q15_t)0x860c, + (q15_t)0x26d8, (q15_t)0x860a, (q15_t)0x26d2, (q15_t)0x8608, (q15_t)0x26cc, (q15_t)0x8606, (q15_t)0x26c6, (q15_t)0x8604, + (q15_t)0x26c0, (q15_t)0x8602, (q15_t)0x26ba, (q15_t)0x8600, (q15_t)0x26b4, (q15_t)0x85fe, (q15_t)0x26ae, (q15_t)0x85fc, + (q15_t)0x26a8, (q15_t)0x85fb, (q15_t)0x26a2, (q15_t)0x85f9, (q15_t)0x269c, (q15_t)0x85f7, (q15_t)0x2696, (q15_t)0x85f5, + (q15_t)0x2690, (q15_t)0x85f3, (q15_t)0x268a, (q15_t)0x85f1, (q15_t)0x2684, (q15_t)0x85ef, (q15_t)0x267e, (q15_t)0x85ed, + (q15_t)0x2678, (q15_t)0x85eb, (q15_t)0x2672, (q15_t)0x85ea, (q15_t)0x266c, (q15_t)0x85e8, (q15_t)0x2666, (q15_t)0x85e6, + (q15_t)0x2660, (q15_t)0x85e4, (q15_t)0x265a, (q15_t)0x85e2, (q15_t)0x2654, (q15_t)0x85e0, (q15_t)0x264e, (q15_t)0x85de, + (q15_t)0x2648, (q15_t)0x85dc, (q15_t)0x2642, (q15_t)0x85da, (q15_t)0x263c, (q15_t)0x85d9, (q15_t)0x2636, (q15_t)0x85d7, + (q15_t)0x2630, (q15_t)0x85d5, (q15_t)0x262a, (q15_t)0x85d3, (q15_t)0x2624, (q15_t)0x85d1, (q15_t)0x261e, (q15_t)0x85cf, + (q15_t)0x2618, (q15_t)0x85cd, (q15_t)0x2612, (q15_t)0x85cb, (q15_t)0x260c, (q15_t)0x85ca, (q15_t)0x2606, (q15_t)0x85c8, + (q15_t)0x2600, (q15_t)0x85c6, (q15_t)0x25fa, (q15_t)0x85c4, (q15_t)0x25f4, (q15_t)0x85c2, (q15_t)0x25ee, (q15_t)0x85c0, + (q15_t)0x25e8, (q15_t)0x85be, (q15_t)0x25e2, (q15_t)0x85bd, (q15_t)0x25dc, (q15_t)0x85bb, (q15_t)0x25d6, (q15_t)0x85b9, + (q15_t)0x25d0, (q15_t)0x85b7, (q15_t)0x25ca, (q15_t)0x85b5, (q15_t)0x25c4, (q15_t)0x85b3, (q15_t)0x25be, (q15_t)0x85b1, + (q15_t)0x25b8, (q15_t)0x85b0, (q15_t)0x25b2, (q15_t)0x85ae, (q15_t)0x25ac, (q15_t)0x85ac, (q15_t)0x25a6, (q15_t)0x85aa, + (q15_t)0x25a0, (q15_t)0x85a8, (q15_t)0x259a, (q15_t)0x85a6, (q15_t)0x2594, (q15_t)0x85a4, (q15_t)0x258e, (q15_t)0x85a3, + (q15_t)0x2588, (q15_t)0x85a1, (q15_t)0x2582, (q15_t)0x859f, (q15_t)0x257c, (q15_t)0x859d, (q15_t)0x2576, (q15_t)0x859b, + (q15_t)0x2570, (q15_t)0x8599, (q15_t)0x256a, (q15_t)0x8598, (q15_t)0x2564, (q15_t)0x8596, (q15_t)0x255e, (q15_t)0x8594, + (q15_t)0x2558, (q15_t)0x8592, (q15_t)0x2552, (q15_t)0x8590, (q15_t)0x254c, (q15_t)0x858e, (q15_t)0x2546, (q15_t)0x858d, + (q15_t)0x2540, (q15_t)0x858b, (q15_t)0x253a, (q15_t)0x8589, (q15_t)0x2534, (q15_t)0x8587, (q15_t)0x252e, (q15_t)0x8585, + (q15_t)0x2528, (q15_t)0x8583, (q15_t)0x2522, (q15_t)0x8582, (q15_t)0x251c, (q15_t)0x8580, (q15_t)0x2516, (q15_t)0x857e, + (q15_t)0x250f, (q15_t)0x857c, (q15_t)0x2509, (q15_t)0x857a, (q15_t)0x2503, (q15_t)0x8579, (q15_t)0x24fd, (q15_t)0x8577, + (q15_t)0x24f7, (q15_t)0x8575, (q15_t)0x24f1, (q15_t)0x8573, (q15_t)0x24eb, (q15_t)0x8571, (q15_t)0x24e5, (q15_t)0x856f, + (q15_t)0x24df, (q15_t)0x856e, (q15_t)0x24d9, (q15_t)0x856c, (q15_t)0x24d3, (q15_t)0x856a, (q15_t)0x24cd, (q15_t)0x8568, + (q15_t)0x24c7, (q15_t)0x8566, (q15_t)0x24c1, (q15_t)0x8565, (q15_t)0x24bb, (q15_t)0x8563, (q15_t)0x24b5, (q15_t)0x8561, + (q15_t)0x24af, (q15_t)0x855f, (q15_t)0x24a9, (q15_t)0x855d, (q15_t)0x24a3, (q15_t)0x855c, (q15_t)0x249d, (q15_t)0x855a, + (q15_t)0x2497, (q15_t)0x8558, (q15_t)0x2491, (q15_t)0x8556, (q15_t)0x248b, (q15_t)0x8554, (q15_t)0x2485, (q15_t)0x8553, + (q15_t)0x247f, (q15_t)0x8551, (q15_t)0x2479, (q15_t)0x854f, (q15_t)0x2473, (q15_t)0x854d, (q15_t)0x246d, (q15_t)0x854b, + (q15_t)0x2467, (q15_t)0x854a, (q15_t)0x2461, (q15_t)0x8548, (q15_t)0x245b, (q15_t)0x8546, (q15_t)0x2455, (q15_t)0x8544, + (q15_t)0x244f, (q15_t)0x8543, (q15_t)0x2449, (q15_t)0x8541, (q15_t)0x2443, (q15_t)0x853f, (q15_t)0x243d, (q15_t)0x853d, + (q15_t)0x2437, (q15_t)0x853b, (q15_t)0x2431, (q15_t)0x853a, (q15_t)0x242b, (q15_t)0x8538, (q15_t)0x2425, (q15_t)0x8536, + (q15_t)0x241f, (q15_t)0x8534, (q15_t)0x2419, (q15_t)0x8533, (q15_t)0x2413, (q15_t)0x8531, (q15_t)0x240d, (q15_t)0x852f, + (q15_t)0x2407, (q15_t)0x852d, (q15_t)0x2401, (q15_t)0x852b, (q15_t)0x23fa, (q15_t)0x852a, (q15_t)0x23f4, (q15_t)0x8528, + (q15_t)0x23ee, (q15_t)0x8526, (q15_t)0x23e8, (q15_t)0x8524, (q15_t)0x23e2, (q15_t)0x8523, (q15_t)0x23dc, (q15_t)0x8521, + (q15_t)0x23d6, (q15_t)0x851f, (q15_t)0x23d0, (q15_t)0x851d, (q15_t)0x23ca, (q15_t)0x851c, (q15_t)0x23c4, (q15_t)0x851a, + (q15_t)0x23be, (q15_t)0x8518, (q15_t)0x23b8, (q15_t)0x8516, (q15_t)0x23b2, (q15_t)0x8515, (q15_t)0x23ac, (q15_t)0x8513, + (q15_t)0x23a6, (q15_t)0x8511, (q15_t)0x23a0, (q15_t)0x850f, (q15_t)0x239a, (q15_t)0x850e, (q15_t)0x2394, (q15_t)0x850c, + (q15_t)0x238e, (q15_t)0x850a, (q15_t)0x2388, (q15_t)0x8508, (q15_t)0x2382, (q15_t)0x8507, (q15_t)0x237c, (q15_t)0x8505, + (q15_t)0x2376, (q15_t)0x8503, (q15_t)0x2370, (q15_t)0x8501, (q15_t)0x236a, (q15_t)0x8500, (q15_t)0x2364, (q15_t)0x84fe, + (q15_t)0x235e, (q15_t)0x84fc, (q15_t)0x2358, (q15_t)0x84fa, (q15_t)0x2352, (q15_t)0x84f9, (q15_t)0x234b, (q15_t)0x84f7, + (q15_t)0x2345, (q15_t)0x84f5, (q15_t)0x233f, (q15_t)0x84f4, (q15_t)0x2339, (q15_t)0x84f2, (q15_t)0x2333, (q15_t)0x84f0, + (q15_t)0x232d, (q15_t)0x84ee, (q15_t)0x2327, (q15_t)0x84ed, (q15_t)0x2321, (q15_t)0x84eb, (q15_t)0x231b, (q15_t)0x84e9, + (q15_t)0x2315, (q15_t)0x84e7, (q15_t)0x230f, (q15_t)0x84e6, (q15_t)0x2309, (q15_t)0x84e4, (q15_t)0x2303, (q15_t)0x84e2, + (q15_t)0x22fd, (q15_t)0x84e1, (q15_t)0x22f7, (q15_t)0x84df, (q15_t)0x22f1, (q15_t)0x84dd, (q15_t)0x22eb, (q15_t)0x84db, + (q15_t)0x22e5, (q15_t)0x84da, (q15_t)0x22df, (q15_t)0x84d8, (q15_t)0x22d9, (q15_t)0x84d6, (q15_t)0x22d3, (q15_t)0x84d5, + (q15_t)0x22cd, (q15_t)0x84d3, (q15_t)0x22c7, (q15_t)0x84d1, (q15_t)0x22c0, (q15_t)0x84cf, (q15_t)0x22ba, (q15_t)0x84ce, + (q15_t)0x22b4, (q15_t)0x84cc, (q15_t)0x22ae, (q15_t)0x84ca, (q15_t)0x22a8, (q15_t)0x84c9, (q15_t)0x22a2, (q15_t)0x84c7, + (q15_t)0x229c, (q15_t)0x84c5, (q15_t)0x2296, (q15_t)0x84c4, (q15_t)0x2290, (q15_t)0x84c2, (q15_t)0x228a, (q15_t)0x84c0, + (q15_t)0x2284, (q15_t)0x84be, (q15_t)0x227e, (q15_t)0x84bd, (q15_t)0x2278, (q15_t)0x84bb, (q15_t)0x2272, (q15_t)0x84b9, + (q15_t)0x226c, (q15_t)0x84b8, (q15_t)0x2266, (q15_t)0x84b6, (q15_t)0x2260, (q15_t)0x84b4, (q15_t)0x225a, (q15_t)0x84b3, + (q15_t)0x2254, (q15_t)0x84b1, (q15_t)0x224e, (q15_t)0x84af, (q15_t)0x2247, (q15_t)0x84ae, (q15_t)0x2241, (q15_t)0x84ac, + (q15_t)0x223b, (q15_t)0x84aa, (q15_t)0x2235, (q15_t)0x84a9, (q15_t)0x222f, (q15_t)0x84a7, (q15_t)0x2229, (q15_t)0x84a5, + (q15_t)0x2223, (q15_t)0x84a3, (q15_t)0x221d, (q15_t)0x84a2, (q15_t)0x2217, (q15_t)0x84a0, (q15_t)0x2211, (q15_t)0x849e, + (q15_t)0x220b, (q15_t)0x849d, (q15_t)0x2205, (q15_t)0x849b, (q15_t)0x21ff, (q15_t)0x8499, (q15_t)0x21f9, (q15_t)0x8498, + (q15_t)0x21f3, (q15_t)0x8496, (q15_t)0x21ed, (q15_t)0x8494, (q15_t)0x21e7, (q15_t)0x8493, (q15_t)0x21e1, (q15_t)0x8491, + (q15_t)0x21da, (q15_t)0x848f, (q15_t)0x21d4, (q15_t)0x848e, (q15_t)0x21ce, (q15_t)0x848c, (q15_t)0x21c8, (q15_t)0x848a, + (q15_t)0x21c2, (q15_t)0x8489, (q15_t)0x21bc, (q15_t)0x8487, (q15_t)0x21b6, (q15_t)0x8486, (q15_t)0x21b0, (q15_t)0x8484, + (q15_t)0x21aa, (q15_t)0x8482, (q15_t)0x21a4, (q15_t)0x8481, (q15_t)0x219e, (q15_t)0x847f, (q15_t)0x2198, (q15_t)0x847d, + (q15_t)0x2192, (q15_t)0x847c, (q15_t)0x218c, (q15_t)0x847a, (q15_t)0x2186, (q15_t)0x8478, (q15_t)0x2180, (q15_t)0x8477, + (q15_t)0x2179, (q15_t)0x8475, (q15_t)0x2173, (q15_t)0x8473, (q15_t)0x216d, (q15_t)0x8472, (q15_t)0x2167, (q15_t)0x8470, + (q15_t)0x2161, (q15_t)0x846e, (q15_t)0x215b, (q15_t)0x846d, (q15_t)0x2155, (q15_t)0x846b, (q15_t)0x214f, (q15_t)0x846a, + (q15_t)0x2149, (q15_t)0x8468, (q15_t)0x2143, (q15_t)0x8466, (q15_t)0x213d, (q15_t)0x8465, (q15_t)0x2137, (q15_t)0x8463, + (q15_t)0x2131, (q15_t)0x8461, (q15_t)0x212b, (q15_t)0x8460, (q15_t)0x2125, (q15_t)0x845e, (q15_t)0x211e, (q15_t)0x845d, + (q15_t)0x2118, (q15_t)0x845b, (q15_t)0x2112, (q15_t)0x8459, (q15_t)0x210c, (q15_t)0x8458, (q15_t)0x2106, (q15_t)0x8456, + (q15_t)0x2100, (q15_t)0x8454, (q15_t)0x20fa, (q15_t)0x8453, (q15_t)0x20f4, (q15_t)0x8451, (q15_t)0x20ee, (q15_t)0x8450, + (q15_t)0x20e8, (q15_t)0x844e, (q15_t)0x20e2, (q15_t)0x844c, (q15_t)0x20dc, (q15_t)0x844b, (q15_t)0x20d6, (q15_t)0x8449, + (q15_t)0x20d0, (q15_t)0x8447, (q15_t)0x20c9, (q15_t)0x8446, (q15_t)0x20c3, (q15_t)0x8444, (q15_t)0x20bd, (q15_t)0x8443, + (q15_t)0x20b7, (q15_t)0x8441, (q15_t)0x20b1, (q15_t)0x843f, (q15_t)0x20ab, (q15_t)0x843e, (q15_t)0x20a5, (q15_t)0x843c, + (q15_t)0x209f, (q15_t)0x843b, (q15_t)0x2099, (q15_t)0x8439, (q15_t)0x2093, (q15_t)0x8437, (q15_t)0x208d, (q15_t)0x8436, + (q15_t)0x2087, (q15_t)0x8434, (q15_t)0x2081, (q15_t)0x8433, (q15_t)0x207a, (q15_t)0x8431, (q15_t)0x2074, (q15_t)0x842f, + (q15_t)0x206e, (q15_t)0x842e, (q15_t)0x2068, (q15_t)0x842c, (q15_t)0x2062, (q15_t)0x842b, (q15_t)0x205c, (q15_t)0x8429, + (q15_t)0x2056, (q15_t)0x8427, (q15_t)0x2050, (q15_t)0x8426, (q15_t)0x204a, (q15_t)0x8424, (q15_t)0x2044, (q15_t)0x8423, + (q15_t)0x203e, (q15_t)0x8421, (q15_t)0x2038, (q15_t)0x8420, (q15_t)0x2032, (q15_t)0x841e, (q15_t)0x202b, (q15_t)0x841c, + (q15_t)0x2025, (q15_t)0x841b, (q15_t)0x201f, (q15_t)0x8419, (q15_t)0x2019, (q15_t)0x8418, (q15_t)0x2013, (q15_t)0x8416, + (q15_t)0x200d, (q15_t)0x8415, (q15_t)0x2007, (q15_t)0x8413, (q15_t)0x2001, (q15_t)0x8411, (q15_t)0x1ffb, (q15_t)0x8410, + (q15_t)0x1ff5, (q15_t)0x840e, (q15_t)0x1fef, (q15_t)0x840d, (q15_t)0x1fe9, (q15_t)0x840b, (q15_t)0x1fe2, (q15_t)0x840a, + (q15_t)0x1fdc, (q15_t)0x8408, (q15_t)0x1fd6, (q15_t)0x8406, (q15_t)0x1fd0, (q15_t)0x8405, (q15_t)0x1fca, (q15_t)0x8403, + (q15_t)0x1fc4, (q15_t)0x8402, (q15_t)0x1fbe, (q15_t)0x8400, (q15_t)0x1fb8, (q15_t)0x83ff, (q15_t)0x1fb2, (q15_t)0x83fd, + (q15_t)0x1fac, (q15_t)0x83fb, (q15_t)0x1fa6, (q15_t)0x83fa, (q15_t)0x1f9f, (q15_t)0x83f8, (q15_t)0x1f99, (q15_t)0x83f7, + (q15_t)0x1f93, (q15_t)0x83f5, (q15_t)0x1f8d, (q15_t)0x83f4, (q15_t)0x1f87, (q15_t)0x83f2, (q15_t)0x1f81, (q15_t)0x83f1, + (q15_t)0x1f7b, (q15_t)0x83ef, (q15_t)0x1f75, (q15_t)0x83ee, (q15_t)0x1f6f, (q15_t)0x83ec, (q15_t)0x1f69, (q15_t)0x83ea, + (q15_t)0x1f63, (q15_t)0x83e9, (q15_t)0x1f5d, (q15_t)0x83e7, (q15_t)0x1f56, (q15_t)0x83e6, (q15_t)0x1f50, (q15_t)0x83e4, + (q15_t)0x1f4a, (q15_t)0x83e3, (q15_t)0x1f44, (q15_t)0x83e1, (q15_t)0x1f3e, (q15_t)0x83e0, (q15_t)0x1f38, (q15_t)0x83de, + (q15_t)0x1f32, (q15_t)0x83dd, (q15_t)0x1f2c, (q15_t)0x83db, (q15_t)0x1f26, (q15_t)0x83da, (q15_t)0x1f20, (q15_t)0x83d8, + (q15_t)0x1f19, (q15_t)0x83d7, (q15_t)0x1f13, (q15_t)0x83d5, (q15_t)0x1f0d, (q15_t)0x83d3, (q15_t)0x1f07, (q15_t)0x83d2, + (q15_t)0x1f01, (q15_t)0x83d0, (q15_t)0x1efb, (q15_t)0x83cf, (q15_t)0x1ef5, (q15_t)0x83cd, (q15_t)0x1eef, (q15_t)0x83cc, + (q15_t)0x1ee9, (q15_t)0x83ca, (q15_t)0x1ee3, (q15_t)0x83c9, (q15_t)0x1edd, (q15_t)0x83c7, (q15_t)0x1ed6, (q15_t)0x83c6, + (q15_t)0x1ed0, (q15_t)0x83c4, (q15_t)0x1eca, (q15_t)0x83c3, (q15_t)0x1ec4, (q15_t)0x83c1, (q15_t)0x1ebe, (q15_t)0x83c0, + (q15_t)0x1eb8, (q15_t)0x83be, (q15_t)0x1eb2, (q15_t)0x83bd, (q15_t)0x1eac, (q15_t)0x83bb, (q15_t)0x1ea6, (q15_t)0x83ba, + (q15_t)0x1ea0, (q15_t)0x83b8, (q15_t)0x1e99, (q15_t)0x83b7, (q15_t)0x1e93, (q15_t)0x83b5, (q15_t)0x1e8d, (q15_t)0x83b4, + (q15_t)0x1e87, (q15_t)0x83b2, (q15_t)0x1e81, (q15_t)0x83b1, (q15_t)0x1e7b, (q15_t)0x83af, (q15_t)0x1e75, (q15_t)0x83ae, + (q15_t)0x1e6f, (q15_t)0x83ac, (q15_t)0x1e69, (q15_t)0x83ab, (q15_t)0x1e62, (q15_t)0x83a9, (q15_t)0x1e5c, (q15_t)0x83a8, + (q15_t)0x1e56, (q15_t)0x83a6, (q15_t)0x1e50, (q15_t)0x83a5, (q15_t)0x1e4a, (q15_t)0x83a3, (q15_t)0x1e44, (q15_t)0x83a2, + (q15_t)0x1e3e, (q15_t)0x83a0, (q15_t)0x1e38, (q15_t)0x839f, (q15_t)0x1e32, (q15_t)0x839d, (q15_t)0x1e2c, (q15_t)0x839c, + (q15_t)0x1e25, (q15_t)0x839a, (q15_t)0x1e1f, (q15_t)0x8399, (q15_t)0x1e19, (q15_t)0x8397, (q15_t)0x1e13, (q15_t)0x8396, + (q15_t)0x1e0d, (q15_t)0x8394, (q15_t)0x1e07, (q15_t)0x8393, (q15_t)0x1e01, (q15_t)0x8392, (q15_t)0x1dfb, (q15_t)0x8390, + (q15_t)0x1df5, (q15_t)0x838f, (q15_t)0x1dee, (q15_t)0x838d, (q15_t)0x1de8, (q15_t)0x838c, (q15_t)0x1de2, (q15_t)0x838a, + (q15_t)0x1ddc, (q15_t)0x8389, (q15_t)0x1dd6, (q15_t)0x8387, (q15_t)0x1dd0, (q15_t)0x8386, (q15_t)0x1dca, (q15_t)0x8384, + (q15_t)0x1dc4, (q15_t)0x8383, (q15_t)0x1dbe, (q15_t)0x8381, (q15_t)0x1db7, (q15_t)0x8380, (q15_t)0x1db1, (q15_t)0x837e, + (q15_t)0x1dab, (q15_t)0x837d, (q15_t)0x1da5, (q15_t)0x837c, (q15_t)0x1d9f, (q15_t)0x837a, (q15_t)0x1d99, (q15_t)0x8379, + (q15_t)0x1d93, (q15_t)0x8377, (q15_t)0x1d8d, (q15_t)0x8376, (q15_t)0x1d87, (q15_t)0x8374, (q15_t)0x1d80, (q15_t)0x8373, + (q15_t)0x1d7a, (q15_t)0x8371, (q15_t)0x1d74, (q15_t)0x8370, (q15_t)0x1d6e, (q15_t)0x836f, (q15_t)0x1d68, (q15_t)0x836d, + (q15_t)0x1d62, (q15_t)0x836c, (q15_t)0x1d5c, (q15_t)0x836a, (q15_t)0x1d56, (q15_t)0x8369, (q15_t)0x1d50, (q15_t)0x8367, + (q15_t)0x1d49, (q15_t)0x8366, (q15_t)0x1d43, (q15_t)0x8364, (q15_t)0x1d3d, (q15_t)0x8363, (q15_t)0x1d37, (q15_t)0x8362, + (q15_t)0x1d31, (q15_t)0x8360, (q15_t)0x1d2b, (q15_t)0x835f, (q15_t)0x1d25, (q15_t)0x835d, (q15_t)0x1d1f, (q15_t)0x835c, + (q15_t)0x1d18, (q15_t)0x835a, (q15_t)0x1d12, (q15_t)0x8359, (q15_t)0x1d0c, (q15_t)0x8358, (q15_t)0x1d06, (q15_t)0x8356, + (q15_t)0x1d00, (q15_t)0x8355, (q15_t)0x1cfa, (q15_t)0x8353, (q15_t)0x1cf4, (q15_t)0x8352, (q15_t)0x1cee, (q15_t)0x8350, + (q15_t)0x1ce8, (q15_t)0x834f, (q15_t)0x1ce1, (q15_t)0x834e, (q15_t)0x1cdb, (q15_t)0x834c, (q15_t)0x1cd5, (q15_t)0x834b, + (q15_t)0x1ccf, (q15_t)0x8349, (q15_t)0x1cc9, (q15_t)0x8348, (q15_t)0x1cc3, (q15_t)0x8347, (q15_t)0x1cbd, (q15_t)0x8345, + (q15_t)0x1cb7, (q15_t)0x8344, (q15_t)0x1cb0, (q15_t)0x8342, (q15_t)0x1caa, (q15_t)0x8341, (q15_t)0x1ca4, (q15_t)0x833f, + (q15_t)0x1c9e, (q15_t)0x833e, (q15_t)0x1c98, (q15_t)0x833d, (q15_t)0x1c92, (q15_t)0x833b, (q15_t)0x1c8c, (q15_t)0x833a, + (q15_t)0x1c86, (q15_t)0x8338, (q15_t)0x1c7f, (q15_t)0x8337, (q15_t)0x1c79, (q15_t)0x8336, (q15_t)0x1c73, (q15_t)0x8334, + (q15_t)0x1c6d, (q15_t)0x8333, (q15_t)0x1c67, (q15_t)0x8331, (q15_t)0x1c61, (q15_t)0x8330, (q15_t)0x1c5b, (q15_t)0x832f, + (q15_t)0x1c55, (q15_t)0x832d, (q15_t)0x1c4e, (q15_t)0x832c, (q15_t)0x1c48, (q15_t)0x832b, (q15_t)0x1c42, (q15_t)0x8329, + (q15_t)0x1c3c, (q15_t)0x8328, (q15_t)0x1c36, (q15_t)0x8326, (q15_t)0x1c30, (q15_t)0x8325, (q15_t)0x1c2a, (q15_t)0x8324, + (q15_t)0x1c24, (q15_t)0x8322, (q15_t)0x1c1d, (q15_t)0x8321, (q15_t)0x1c17, (q15_t)0x831f, (q15_t)0x1c11, (q15_t)0x831e, + (q15_t)0x1c0b, (q15_t)0x831d, (q15_t)0x1c05, (q15_t)0x831b, (q15_t)0x1bff, (q15_t)0x831a, (q15_t)0x1bf9, (q15_t)0x8319, + (q15_t)0x1bf2, (q15_t)0x8317, (q15_t)0x1bec, (q15_t)0x8316, (q15_t)0x1be6, (q15_t)0x8314, (q15_t)0x1be0, (q15_t)0x8313, + (q15_t)0x1bda, (q15_t)0x8312, (q15_t)0x1bd4, (q15_t)0x8310, (q15_t)0x1bce, (q15_t)0x830f, (q15_t)0x1bc8, (q15_t)0x830e, + (q15_t)0x1bc1, (q15_t)0x830c, (q15_t)0x1bbb, (q15_t)0x830b, (q15_t)0x1bb5, (q15_t)0x830a, (q15_t)0x1baf, (q15_t)0x8308, + (q15_t)0x1ba9, (q15_t)0x8307, (q15_t)0x1ba3, (q15_t)0x8305, (q15_t)0x1b9d, (q15_t)0x8304, (q15_t)0x1b96, (q15_t)0x8303, + (q15_t)0x1b90, (q15_t)0x8301, (q15_t)0x1b8a, (q15_t)0x8300, (q15_t)0x1b84, (q15_t)0x82ff, (q15_t)0x1b7e, (q15_t)0x82fd, + (q15_t)0x1b78, (q15_t)0x82fc, (q15_t)0x1b72, (q15_t)0x82fb, (q15_t)0x1b6c, (q15_t)0x82f9, (q15_t)0x1b65, (q15_t)0x82f8, + (q15_t)0x1b5f, (q15_t)0x82f7, (q15_t)0x1b59, (q15_t)0x82f5, (q15_t)0x1b53, (q15_t)0x82f4, (q15_t)0x1b4d, (q15_t)0x82f3, + (q15_t)0x1b47, (q15_t)0x82f1, (q15_t)0x1b41, (q15_t)0x82f0, (q15_t)0x1b3a, (q15_t)0x82ef, (q15_t)0x1b34, (q15_t)0x82ed, + (q15_t)0x1b2e, (q15_t)0x82ec, (q15_t)0x1b28, (q15_t)0x82eb, (q15_t)0x1b22, (q15_t)0x82e9, (q15_t)0x1b1c, (q15_t)0x82e8, + (q15_t)0x1b16, (q15_t)0x82e7, (q15_t)0x1b0f, (q15_t)0x82e5, (q15_t)0x1b09, (q15_t)0x82e4, (q15_t)0x1b03, (q15_t)0x82e3, + (q15_t)0x1afd, (q15_t)0x82e1, (q15_t)0x1af7, (q15_t)0x82e0, (q15_t)0x1af1, (q15_t)0x82df, (q15_t)0x1aeb, (q15_t)0x82dd, + (q15_t)0x1ae4, (q15_t)0x82dc, (q15_t)0x1ade, (q15_t)0x82db, (q15_t)0x1ad8, (q15_t)0x82d9, (q15_t)0x1ad2, (q15_t)0x82d8, + (q15_t)0x1acc, (q15_t)0x82d7, (q15_t)0x1ac6, (q15_t)0x82d5, (q15_t)0x1ac0, (q15_t)0x82d4, (q15_t)0x1ab9, (q15_t)0x82d3, + (q15_t)0x1ab3, (q15_t)0x82d1, (q15_t)0x1aad, (q15_t)0x82d0, (q15_t)0x1aa7, (q15_t)0x82cf, (q15_t)0x1aa1, (q15_t)0x82ce, + (q15_t)0x1a9b, (q15_t)0x82cc, (q15_t)0x1a95, (q15_t)0x82cb, (q15_t)0x1a8e, (q15_t)0x82ca, (q15_t)0x1a88, (q15_t)0x82c8, + (q15_t)0x1a82, (q15_t)0x82c7, (q15_t)0x1a7c, (q15_t)0x82c6, (q15_t)0x1a76, (q15_t)0x82c4, (q15_t)0x1a70, (q15_t)0x82c3, + (q15_t)0x1a6a, (q15_t)0x82c2, (q15_t)0x1a63, (q15_t)0x82c1, (q15_t)0x1a5d, (q15_t)0x82bf, (q15_t)0x1a57, (q15_t)0x82be, + (q15_t)0x1a51, (q15_t)0x82bd, (q15_t)0x1a4b, (q15_t)0x82bb, (q15_t)0x1a45, (q15_t)0x82ba, (q15_t)0x1a3e, (q15_t)0x82b9, + (q15_t)0x1a38, (q15_t)0x82b7, (q15_t)0x1a32, (q15_t)0x82b6, (q15_t)0x1a2c, (q15_t)0x82b5, (q15_t)0x1a26, (q15_t)0x82b4, + (q15_t)0x1a20, (q15_t)0x82b2, (q15_t)0x1a1a, (q15_t)0x82b1, (q15_t)0x1a13, (q15_t)0x82b0, (q15_t)0x1a0d, (q15_t)0x82ae, + (q15_t)0x1a07, (q15_t)0x82ad, (q15_t)0x1a01, (q15_t)0x82ac, (q15_t)0x19fb, (q15_t)0x82ab, (q15_t)0x19f5, (q15_t)0x82a9, + (q15_t)0x19ef, (q15_t)0x82a8, (q15_t)0x19e8, (q15_t)0x82a7, (q15_t)0x19e2, (q15_t)0x82a6, (q15_t)0x19dc, (q15_t)0x82a4, + (q15_t)0x19d6, (q15_t)0x82a3, (q15_t)0x19d0, (q15_t)0x82a2, (q15_t)0x19ca, (q15_t)0x82a0, (q15_t)0x19c3, (q15_t)0x829f, + (q15_t)0x19bd, (q15_t)0x829e, (q15_t)0x19b7, (q15_t)0x829d, (q15_t)0x19b1, (q15_t)0x829b, (q15_t)0x19ab, (q15_t)0x829a, + (q15_t)0x19a5, (q15_t)0x8299, (q15_t)0x199f, (q15_t)0x8298, (q15_t)0x1998, (q15_t)0x8296, (q15_t)0x1992, (q15_t)0x8295, + (q15_t)0x198c, (q15_t)0x8294, (q15_t)0x1986, (q15_t)0x8293, (q15_t)0x1980, (q15_t)0x8291, (q15_t)0x197a, (q15_t)0x8290, + (q15_t)0x1973, (q15_t)0x828f, (q15_t)0x196d, (q15_t)0x828e, (q15_t)0x1967, (q15_t)0x828c, (q15_t)0x1961, (q15_t)0x828b, + (q15_t)0x195b, (q15_t)0x828a, (q15_t)0x1955, (q15_t)0x8289, (q15_t)0x194e, (q15_t)0x8287, (q15_t)0x1948, (q15_t)0x8286, + (q15_t)0x1942, (q15_t)0x8285, (q15_t)0x193c, (q15_t)0x8284, (q15_t)0x1936, (q15_t)0x8282, (q15_t)0x1930, (q15_t)0x8281, + (q15_t)0x192a, (q15_t)0x8280, (q15_t)0x1923, (q15_t)0x827f, (q15_t)0x191d, (q15_t)0x827e, (q15_t)0x1917, (q15_t)0x827c, + (q15_t)0x1911, (q15_t)0x827b, (q15_t)0x190b, (q15_t)0x827a, (q15_t)0x1905, (q15_t)0x8279, (q15_t)0x18fe, (q15_t)0x8277, + (q15_t)0x18f8, (q15_t)0x8276, (q15_t)0x18f2, (q15_t)0x8275, (q15_t)0x18ec, (q15_t)0x8274, (q15_t)0x18e6, (q15_t)0x8272, + (q15_t)0x18e0, (q15_t)0x8271, (q15_t)0x18d9, (q15_t)0x8270, (q15_t)0x18d3, (q15_t)0x826f, (q15_t)0x18cd, (q15_t)0x826e, + (q15_t)0x18c7, (q15_t)0x826c, (q15_t)0x18c1, (q15_t)0x826b, (q15_t)0x18bb, (q15_t)0x826a, (q15_t)0x18b4, (q15_t)0x8269, + (q15_t)0x18ae, (q15_t)0x8268, (q15_t)0x18a8, (q15_t)0x8266, (q15_t)0x18a2, (q15_t)0x8265, (q15_t)0x189c, (q15_t)0x8264, + (q15_t)0x1896, (q15_t)0x8263, (q15_t)0x188f, (q15_t)0x8261, (q15_t)0x1889, (q15_t)0x8260, (q15_t)0x1883, (q15_t)0x825f, + (q15_t)0x187d, (q15_t)0x825e, (q15_t)0x1877, (q15_t)0x825d, (q15_t)0x1871, (q15_t)0x825b, (q15_t)0x186a, (q15_t)0x825a, + (q15_t)0x1864, (q15_t)0x8259, (q15_t)0x185e, (q15_t)0x8258, (q15_t)0x1858, (q15_t)0x8257, (q15_t)0x1852, (q15_t)0x8255, + (q15_t)0x184c, (q15_t)0x8254, (q15_t)0x1845, (q15_t)0x8253, (q15_t)0x183f, (q15_t)0x8252, (q15_t)0x1839, (q15_t)0x8251, + (q15_t)0x1833, (q15_t)0x8250, (q15_t)0x182d, (q15_t)0x824e, (q15_t)0x1827, (q15_t)0x824d, (q15_t)0x1820, (q15_t)0x824c, + (q15_t)0x181a, (q15_t)0x824b, (q15_t)0x1814, (q15_t)0x824a, (q15_t)0x180e, (q15_t)0x8248, (q15_t)0x1808, (q15_t)0x8247, + (q15_t)0x1802, (q15_t)0x8246, (q15_t)0x17fb, (q15_t)0x8245, (q15_t)0x17f5, (q15_t)0x8244, (q15_t)0x17ef, (q15_t)0x8243, + (q15_t)0x17e9, (q15_t)0x8241, (q15_t)0x17e3, (q15_t)0x8240, (q15_t)0x17dd, (q15_t)0x823f, (q15_t)0x17d6, (q15_t)0x823e, + (q15_t)0x17d0, (q15_t)0x823d, (q15_t)0x17ca, (q15_t)0x823b, (q15_t)0x17c4, (q15_t)0x823a, (q15_t)0x17be, (q15_t)0x8239, + (q15_t)0x17b7, (q15_t)0x8238, (q15_t)0x17b1, (q15_t)0x8237, (q15_t)0x17ab, (q15_t)0x8236, (q15_t)0x17a5, (q15_t)0x8234, + (q15_t)0x179f, (q15_t)0x8233, (q15_t)0x1799, (q15_t)0x8232, (q15_t)0x1792, (q15_t)0x8231, (q15_t)0x178c, (q15_t)0x8230, + (q15_t)0x1786, (q15_t)0x822f, (q15_t)0x1780, (q15_t)0x822e, (q15_t)0x177a, (q15_t)0x822c, (q15_t)0x1774, (q15_t)0x822b, + (q15_t)0x176d, (q15_t)0x822a, (q15_t)0x1767, (q15_t)0x8229, (q15_t)0x1761, (q15_t)0x8228, (q15_t)0x175b, (q15_t)0x8227, + (q15_t)0x1755, (q15_t)0x8226, (q15_t)0x174e, (q15_t)0x8224, (q15_t)0x1748, (q15_t)0x8223, (q15_t)0x1742, (q15_t)0x8222, + (q15_t)0x173c, (q15_t)0x8221, (q15_t)0x1736, (q15_t)0x8220, (q15_t)0x1730, (q15_t)0x821f, (q15_t)0x1729, (q15_t)0x821e, + (q15_t)0x1723, (q15_t)0x821c, (q15_t)0x171d, (q15_t)0x821b, (q15_t)0x1717, (q15_t)0x821a, (q15_t)0x1711, (q15_t)0x8219, + (q15_t)0x170a, (q15_t)0x8218, (q15_t)0x1704, (q15_t)0x8217, (q15_t)0x16fe, (q15_t)0x8216, (q15_t)0x16f8, (q15_t)0x8214, + (q15_t)0x16f2, (q15_t)0x8213, (q15_t)0x16ec, (q15_t)0x8212, (q15_t)0x16e5, (q15_t)0x8211, (q15_t)0x16df, (q15_t)0x8210, + (q15_t)0x16d9, (q15_t)0x820f, (q15_t)0x16d3, (q15_t)0x820e, (q15_t)0x16cd, (q15_t)0x820d, (q15_t)0x16c6, (q15_t)0x820b, + (q15_t)0x16c0, (q15_t)0x820a, (q15_t)0x16ba, (q15_t)0x8209, (q15_t)0x16b4, (q15_t)0x8208, (q15_t)0x16ae, (q15_t)0x8207, + (q15_t)0x16a8, (q15_t)0x8206, (q15_t)0x16a1, (q15_t)0x8205, (q15_t)0x169b, (q15_t)0x8204, (q15_t)0x1695, (q15_t)0x8203, + (q15_t)0x168f, (q15_t)0x8201, (q15_t)0x1689, (q15_t)0x8200, (q15_t)0x1682, (q15_t)0x81ff, (q15_t)0x167c, (q15_t)0x81fe, + (q15_t)0x1676, (q15_t)0x81fd, (q15_t)0x1670, (q15_t)0x81fc, (q15_t)0x166a, (q15_t)0x81fb, (q15_t)0x1664, (q15_t)0x81fa, + (q15_t)0x165d, (q15_t)0x81f9, (q15_t)0x1657, (q15_t)0x81f8, (q15_t)0x1651, (q15_t)0x81f6, (q15_t)0x164b, (q15_t)0x81f5, + (q15_t)0x1645, (q15_t)0x81f4, (q15_t)0x163e, (q15_t)0x81f3, (q15_t)0x1638, (q15_t)0x81f2, (q15_t)0x1632, (q15_t)0x81f1, + (q15_t)0x162c, (q15_t)0x81f0, (q15_t)0x1626, (q15_t)0x81ef, (q15_t)0x161f, (q15_t)0x81ee, (q15_t)0x1619, (q15_t)0x81ed, + (q15_t)0x1613, (q15_t)0x81ec, (q15_t)0x160d, (q15_t)0x81ea, (q15_t)0x1607, (q15_t)0x81e9, (q15_t)0x1601, (q15_t)0x81e8, + (q15_t)0x15fa, (q15_t)0x81e7, (q15_t)0x15f4, (q15_t)0x81e6, (q15_t)0x15ee, (q15_t)0x81e5, (q15_t)0x15e8, (q15_t)0x81e4, + (q15_t)0x15e2, (q15_t)0x81e3, (q15_t)0x15db, (q15_t)0x81e2, (q15_t)0x15d5, (q15_t)0x81e1, (q15_t)0x15cf, (q15_t)0x81e0, + (q15_t)0x15c9, (q15_t)0x81df, (q15_t)0x15c3, (q15_t)0x81de, (q15_t)0x15bc, (q15_t)0x81dc, (q15_t)0x15b6, (q15_t)0x81db, + (q15_t)0x15b0, (q15_t)0x81da, (q15_t)0x15aa, (q15_t)0x81d9, (q15_t)0x15a4, (q15_t)0x81d8, (q15_t)0x159d, (q15_t)0x81d7, + (q15_t)0x1597, (q15_t)0x81d6, (q15_t)0x1591, (q15_t)0x81d5, (q15_t)0x158b, (q15_t)0x81d4, (q15_t)0x1585, (q15_t)0x81d3, + (q15_t)0x157f, (q15_t)0x81d2, (q15_t)0x1578, (q15_t)0x81d1, (q15_t)0x1572, (q15_t)0x81d0, (q15_t)0x156c, (q15_t)0x81cf, + (q15_t)0x1566, (q15_t)0x81ce, (q15_t)0x1560, (q15_t)0x81cd, (q15_t)0x1559, (q15_t)0x81cc, (q15_t)0x1553, (q15_t)0x81cb, + (q15_t)0x154d, (q15_t)0x81c9, (q15_t)0x1547, (q15_t)0x81c8, (q15_t)0x1541, (q15_t)0x81c7, (q15_t)0x153a, (q15_t)0x81c6, + (q15_t)0x1534, (q15_t)0x81c5, (q15_t)0x152e, (q15_t)0x81c4, (q15_t)0x1528, (q15_t)0x81c3, (q15_t)0x1522, (q15_t)0x81c2, + (q15_t)0x151b, (q15_t)0x81c1, (q15_t)0x1515, (q15_t)0x81c0, (q15_t)0x150f, (q15_t)0x81bf, (q15_t)0x1509, (q15_t)0x81be, + (q15_t)0x1503, (q15_t)0x81bd, (q15_t)0x14fc, (q15_t)0x81bc, (q15_t)0x14f6, (q15_t)0x81bb, (q15_t)0x14f0, (q15_t)0x81ba, + (q15_t)0x14ea, (q15_t)0x81b9, (q15_t)0x14e4, (q15_t)0x81b8, (q15_t)0x14dd, (q15_t)0x81b7, (q15_t)0x14d7, (q15_t)0x81b6, + (q15_t)0x14d1, (q15_t)0x81b5, (q15_t)0x14cb, (q15_t)0x81b4, (q15_t)0x14c5, (q15_t)0x81b3, (q15_t)0x14be, (q15_t)0x81b2, + (q15_t)0x14b8, (q15_t)0x81b1, (q15_t)0x14b2, (q15_t)0x81b0, (q15_t)0x14ac, (q15_t)0x81af, (q15_t)0x14a6, (q15_t)0x81ae, + (q15_t)0x149f, (q15_t)0x81ad, (q15_t)0x1499, (q15_t)0x81ac, (q15_t)0x1493, (q15_t)0x81ab, (q15_t)0x148d, (q15_t)0x81aa, + (q15_t)0x1487, (q15_t)0x81a9, (q15_t)0x1480, (q15_t)0x81a8, (q15_t)0x147a, (q15_t)0x81a7, (q15_t)0x1474, (q15_t)0x81a6, + (q15_t)0x146e, (q15_t)0x81a5, (q15_t)0x1468, (q15_t)0x81a4, (q15_t)0x1461, (q15_t)0x81a3, (q15_t)0x145b, (q15_t)0x81a2, + (q15_t)0x1455, (q15_t)0x81a1, (q15_t)0x144f, (q15_t)0x81a0, (q15_t)0x1449, (q15_t)0x819f, (q15_t)0x1442, (q15_t)0x819e, + (q15_t)0x143c, (q15_t)0x819d, (q15_t)0x1436, (q15_t)0x819c, (q15_t)0x1430, (q15_t)0x819b, (q15_t)0x142a, (q15_t)0x819a, + (q15_t)0x1423, (q15_t)0x8199, (q15_t)0x141d, (q15_t)0x8198, (q15_t)0x1417, (q15_t)0x8197, (q15_t)0x1411, (q15_t)0x8196, + (q15_t)0x140b, (q15_t)0x8195, (q15_t)0x1404, (q15_t)0x8194, (q15_t)0x13fe, (q15_t)0x8193, (q15_t)0x13f8, (q15_t)0x8192, + (q15_t)0x13f2, (q15_t)0x8191, (q15_t)0x13eb, (q15_t)0x8190, (q15_t)0x13e5, (q15_t)0x818f, (q15_t)0x13df, (q15_t)0x818e, + (q15_t)0x13d9, (q15_t)0x818d, (q15_t)0x13d3, (q15_t)0x818c, (q15_t)0x13cc, (q15_t)0x818b, (q15_t)0x13c6, (q15_t)0x818a, + (q15_t)0x13c0, (q15_t)0x8189, (q15_t)0x13ba, (q15_t)0x8188, (q15_t)0x13b4, (q15_t)0x8187, (q15_t)0x13ad, (q15_t)0x8186, + (q15_t)0x13a7, (q15_t)0x8185, (q15_t)0x13a1, (q15_t)0x8184, (q15_t)0x139b, (q15_t)0x8183, (q15_t)0x1395, (q15_t)0x8182, + (q15_t)0x138e, (q15_t)0x8181, (q15_t)0x1388, (q15_t)0x8180, (q15_t)0x1382, (q15_t)0x817f, (q15_t)0x137c, (q15_t)0x817e, + (q15_t)0x1376, (q15_t)0x817d, (q15_t)0x136f, (q15_t)0x817c, (q15_t)0x1369, (q15_t)0x817c, (q15_t)0x1363, (q15_t)0x817b, + (q15_t)0x135d, (q15_t)0x817a, (q15_t)0x1356, (q15_t)0x8179, (q15_t)0x1350, (q15_t)0x8178, (q15_t)0x134a, (q15_t)0x8177, + (q15_t)0x1344, (q15_t)0x8176, (q15_t)0x133e, (q15_t)0x8175, (q15_t)0x1337, (q15_t)0x8174, (q15_t)0x1331, (q15_t)0x8173, + (q15_t)0x132b, (q15_t)0x8172, (q15_t)0x1325, (q15_t)0x8171, (q15_t)0x131f, (q15_t)0x8170, (q15_t)0x1318, (q15_t)0x816f, + (q15_t)0x1312, (q15_t)0x816e, (q15_t)0x130c, (q15_t)0x816d, (q15_t)0x1306, (q15_t)0x816c, (q15_t)0x12ff, (q15_t)0x816c, + (q15_t)0x12f9, (q15_t)0x816b, (q15_t)0x12f3, (q15_t)0x816a, (q15_t)0x12ed, (q15_t)0x8169, (q15_t)0x12e7, (q15_t)0x8168, + (q15_t)0x12e0, (q15_t)0x8167, (q15_t)0x12da, (q15_t)0x8166, (q15_t)0x12d4, (q15_t)0x8165, (q15_t)0x12ce, (q15_t)0x8164, + (q15_t)0x12c8, (q15_t)0x8163, (q15_t)0x12c1, (q15_t)0x8162, (q15_t)0x12bb, (q15_t)0x8161, (q15_t)0x12b5, (q15_t)0x8160, + (q15_t)0x12af, (q15_t)0x815f, (q15_t)0x12a8, (q15_t)0x815f, (q15_t)0x12a2, (q15_t)0x815e, (q15_t)0x129c, (q15_t)0x815d, + (q15_t)0x1296, (q15_t)0x815c, (q15_t)0x1290, (q15_t)0x815b, (q15_t)0x1289, (q15_t)0x815a, (q15_t)0x1283, (q15_t)0x8159, + (q15_t)0x127d, (q15_t)0x8158, (q15_t)0x1277, (q15_t)0x8157, (q15_t)0x1271, (q15_t)0x8156, (q15_t)0x126a, (q15_t)0x8155, + (q15_t)0x1264, (q15_t)0x8155, (q15_t)0x125e, (q15_t)0x8154, (q15_t)0x1258, (q15_t)0x8153, (q15_t)0x1251, (q15_t)0x8152, + (q15_t)0x124b, (q15_t)0x8151, (q15_t)0x1245, (q15_t)0x8150, (q15_t)0x123f, (q15_t)0x814f, (q15_t)0x1239, (q15_t)0x814e, + (q15_t)0x1232, (q15_t)0x814d, (q15_t)0x122c, (q15_t)0x814c, (q15_t)0x1226, (q15_t)0x814c, (q15_t)0x1220, (q15_t)0x814b, + (q15_t)0x1219, (q15_t)0x814a, (q15_t)0x1213, (q15_t)0x8149, (q15_t)0x120d, (q15_t)0x8148, (q15_t)0x1207, (q15_t)0x8147, + (q15_t)0x1201, (q15_t)0x8146, (q15_t)0x11fa, (q15_t)0x8145, (q15_t)0x11f4, (q15_t)0x8145, (q15_t)0x11ee, (q15_t)0x8144, + (q15_t)0x11e8, (q15_t)0x8143, (q15_t)0x11e1, (q15_t)0x8142, (q15_t)0x11db, (q15_t)0x8141, (q15_t)0x11d5, (q15_t)0x8140, + (q15_t)0x11cf, (q15_t)0x813f, (q15_t)0x11c9, (q15_t)0x813e, (q15_t)0x11c2, (q15_t)0x813d, (q15_t)0x11bc, (q15_t)0x813d, + (q15_t)0x11b6, (q15_t)0x813c, (q15_t)0x11b0, (q15_t)0x813b, (q15_t)0x11a9, (q15_t)0x813a, (q15_t)0x11a3, (q15_t)0x8139, + (q15_t)0x119d, (q15_t)0x8138, (q15_t)0x1197, (q15_t)0x8137, (q15_t)0x1191, (q15_t)0x8137, (q15_t)0x118a, (q15_t)0x8136, + (q15_t)0x1184, (q15_t)0x8135, (q15_t)0x117e, (q15_t)0x8134, (q15_t)0x1178, (q15_t)0x8133, (q15_t)0x1171, (q15_t)0x8132, + (q15_t)0x116b, (q15_t)0x8131, (q15_t)0x1165, (q15_t)0x8131, (q15_t)0x115f, (q15_t)0x8130, (q15_t)0x1159, (q15_t)0x812f, + (q15_t)0x1152, (q15_t)0x812e, (q15_t)0x114c, (q15_t)0x812d, (q15_t)0x1146, (q15_t)0x812c, (q15_t)0x1140, (q15_t)0x812b, + (q15_t)0x1139, (q15_t)0x812b, (q15_t)0x1133, (q15_t)0x812a, (q15_t)0x112d, (q15_t)0x8129, (q15_t)0x1127, (q15_t)0x8128, + (q15_t)0x1121, (q15_t)0x8127, (q15_t)0x111a, (q15_t)0x8126, (q15_t)0x1114, (q15_t)0x8126, (q15_t)0x110e, (q15_t)0x8125, + (q15_t)0x1108, (q15_t)0x8124, (q15_t)0x1101, (q15_t)0x8123, (q15_t)0x10fb, (q15_t)0x8122, (q15_t)0x10f5, (q15_t)0x8121, + (q15_t)0x10ef, (q15_t)0x8121, (q15_t)0x10e8, (q15_t)0x8120, (q15_t)0x10e2, (q15_t)0x811f, (q15_t)0x10dc, (q15_t)0x811e, + (q15_t)0x10d6, (q15_t)0x811d, (q15_t)0x10d0, (q15_t)0x811c, (q15_t)0x10c9, (q15_t)0x811c, (q15_t)0x10c3, (q15_t)0x811b, + (q15_t)0x10bd, (q15_t)0x811a, (q15_t)0x10b7, (q15_t)0x8119, (q15_t)0x10b0, (q15_t)0x8118, (q15_t)0x10aa, (q15_t)0x8117, + (q15_t)0x10a4, (q15_t)0x8117, (q15_t)0x109e, (q15_t)0x8116, (q15_t)0x1098, (q15_t)0x8115, (q15_t)0x1091, (q15_t)0x8114, + (q15_t)0x108b, (q15_t)0x8113, (q15_t)0x1085, (q15_t)0x8113, (q15_t)0x107f, (q15_t)0x8112, (q15_t)0x1078, (q15_t)0x8111, + (q15_t)0x1072, (q15_t)0x8110, (q15_t)0x106c, (q15_t)0x810f, (q15_t)0x1066, (q15_t)0x810f, (q15_t)0x105f, (q15_t)0x810e, + (q15_t)0x1059, (q15_t)0x810d, (q15_t)0x1053, (q15_t)0x810c, (q15_t)0x104d, (q15_t)0x810b, (q15_t)0x1047, (q15_t)0x810b, + (q15_t)0x1040, (q15_t)0x810a, (q15_t)0x103a, (q15_t)0x8109, (q15_t)0x1034, (q15_t)0x8108, (q15_t)0x102e, (q15_t)0x8107, + (q15_t)0x1027, (q15_t)0x8107, (q15_t)0x1021, (q15_t)0x8106, (q15_t)0x101b, (q15_t)0x8105, (q15_t)0x1015, (q15_t)0x8104, + (q15_t)0x100e, (q15_t)0x8103, (q15_t)0x1008, (q15_t)0x8103, (q15_t)0x1002, (q15_t)0x8102, (q15_t)0xffc, (q15_t)0x8101, + (q15_t)0xff5, (q15_t)0x8100, (q15_t)0xfef, (q15_t)0x80ff, (q15_t)0xfe9, (q15_t)0x80ff, (q15_t)0xfe3, (q15_t)0x80fe, + (q15_t)0xfdd, (q15_t)0x80fd, (q15_t)0xfd6, (q15_t)0x80fc, (q15_t)0xfd0, (q15_t)0x80fc, (q15_t)0xfca, (q15_t)0x80fb, + (q15_t)0xfc4, (q15_t)0x80fa, (q15_t)0xfbd, (q15_t)0x80f9, (q15_t)0xfb7, (q15_t)0x80f8, (q15_t)0xfb1, (q15_t)0x80f8, + (q15_t)0xfab, (q15_t)0x80f7, (q15_t)0xfa4, (q15_t)0x80f6, (q15_t)0xf9e, (q15_t)0x80f5, (q15_t)0xf98, (q15_t)0x80f5, + (q15_t)0xf92, (q15_t)0x80f4, (q15_t)0xf8b, (q15_t)0x80f3, (q15_t)0xf85, (q15_t)0x80f2, (q15_t)0xf7f, (q15_t)0x80f2, + (q15_t)0xf79, (q15_t)0x80f1, (q15_t)0xf73, (q15_t)0x80f0, (q15_t)0xf6c, (q15_t)0x80ef, (q15_t)0xf66, (q15_t)0x80ef, + (q15_t)0xf60, (q15_t)0x80ee, (q15_t)0xf5a, (q15_t)0x80ed, (q15_t)0xf53, (q15_t)0x80ec, (q15_t)0xf4d, (q15_t)0x80ec, + (q15_t)0xf47, (q15_t)0x80eb, (q15_t)0xf41, (q15_t)0x80ea, (q15_t)0xf3a, (q15_t)0x80e9, (q15_t)0xf34, (q15_t)0x80e9, + (q15_t)0xf2e, (q15_t)0x80e8, (q15_t)0xf28, (q15_t)0x80e7, (q15_t)0xf21, (q15_t)0x80e6, (q15_t)0xf1b, (q15_t)0x80e6, + (q15_t)0xf15, (q15_t)0x80e5, (q15_t)0xf0f, (q15_t)0x80e4, (q15_t)0xf08, (q15_t)0x80e3, (q15_t)0xf02, (q15_t)0x80e3, + (q15_t)0xefc, (q15_t)0x80e2, (q15_t)0xef6, (q15_t)0x80e1, (q15_t)0xef0, (q15_t)0x80e0, (q15_t)0xee9, (q15_t)0x80e0, + (q15_t)0xee3, (q15_t)0x80df, (q15_t)0xedd, (q15_t)0x80de, (q15_t)0xed7, (q15_t)0x80dd, (q15_t)0xed0, (q15_t)0x80dd, + (q15_t)0xeca, (q15_t)0x80dc, (q15_t)0xec4, (q15_t)0x80db, (q15_t)0xebe, (q15_t)0x80db, (q15_t)0xeb7, (q15_t)0x80da, + (q15_t)0xeb1, (q15_t)0x80d9, (q15_t)0xeab, (q15_t)0x80d8, (q15_t)0xea5, (q15_t)0x80d8, (q15_t)0xe9e, (q15_t)0x80d7, + (q15_t)0xe98, (q15_t)0x80d6, (q15_t)0xe92, (q15_t)0x80d6, (q15_t)0xe8c, (q15_t)0x80d5, (q15_t)0xe85, (q15_t)0x80d4, + (q15_t)0xe7f, (q15_t)0x80d3, (q15_t)0xe79, (q15_t)0x80d3, (q15_t)0xe73, (q15_t)0x80d2, (q15_t)0xe6c, (q15_t)0x80d1, + (q15_t)0xe66, (q15_t)0x80d1, (q15_t)0xe60, (q15_t)0x80d0, (q15_t)0xe5a, (q15_t)0x80cf, (q15_t)0xe53, (q15_t)0x80ce, + (q15_t)0xe4d, (q15_t)0x80ce, (q15_t)0xe47, (q15_t)0x80cd, (q15_t)0xe41, (q15_t)0x80cc, (q15_t)0xe3a, (q15_t)0x80cc, + (q15_t)0xe34, (q15_t)0x80cb, (q15_t)0xe2e, (q15_t)0x80ca, (q15_t)0xe28, (q15_t)0x80ca, (q15_t)0xe22, (q15_t)0x80c9, + (q15_t)0xe1b, (q15_t)0x80c8, (q15_t)0xe15, (q15_t)0x80c7, (q15_t)0xe0f, (q15_t)0x80c7, (q15_t)0xe09, (q15_t)0x80c6, + (q15_t)0xe02, (q15_t)0x80c5, (q15_t)0xdfc, (q15_t)0x80c5, (q15_t)0xdf6, (q15_t)0x80c4, (q15_t)0xdf0, (q15_t)0x80c3, + (q15_t)0xde9, (q15_t)0x80c3, (q15_t)0xde3, (q15_t)0x80c2, (q15_t)0xddd, (q15_t)0x80c1, (q15_t)0xdd7, (q15_t)0x80c1, + (q15_t)0xdd0, (q15_t)0x80c0, (q15_t)0xdca, (q15_t)0x80bf, (q15_t)0xdc4, (q15_t)0x80bf, (q15_t)0xdbe, (q15_t)0x80be, + (q15_t)0xdb7, (q15_t)0x80bd, (q15_t)0xdb1, (q15_t)0x80bd, (q15_t)0xdab, (q15_t)0x80bc, (q15_t)0xda5, (q15_t)0x80bb, + (q15_t)0xd9e, (q15_t)0x80bb, (q15_t)0xd98, (q15_t)0x80ba, (q15_t)0xd92, (q15_t)0x80b9, (q15_t)0xd8c, (q15_t)0x80b9, + (q15_t)0xd85, (q15_t)0x80b8, (q15_t)0xd7f, (q15_t)0x80b7, (q15_t)0xd79, (q15_t)0x80b7, (q15_t)0xd73, (q15_t)0x80b6, + (q15_t)0xd6c, (q15_t)0x80b5, (q15_t)0xd66, (q15_t)0x80b5, (q15_t)0xd60, (q15_t)0x80b4, (q15_t)0xd5a, (q15_t)0x80b3, + (q15_t)0xd53, (q15_t)0x80b3, (q15_t)0xd4d, (q15_t)0x80b2, (q15_t)0xd47, (q15_t)0x80b1, (q15_t)0xd41, (q15_t)0x80b1, + (q15_t)0xd3a, (q15_t)0x80b0, (q15_t)0xd34, (q15_t)0x80af, (q15_t)0xd2e, (q15_t)0x80af, (q15_t)0xd28, (q15_t)0x80ae, + (q15_t)0xd21, (q15_t)0x80ad, (q15_t)0xd1b, (q15_t)0x80ad, (q15_t)0xd15, (q15_t)0x80ac, (q15_t)0xd0f, (q15_t)0x80ab, + (q15_t)0xd08, (q15_t)0x80ab, (q15_t)0xd02, (q15_t)0x80aa, (q15_t)0xcfc, (q15_t)0x80aa, (q15_t)0xcf6, (q15_t)0x80a9, + (q15_t)0xcef, (q15_t)0x80a8, (q15_t)0xce9, (q15_t)0x80a8, (q15_t)0xce3, (q15_t)0x80a7, (q15_t)0xcdd, (q15_t)0x80a6, + (q15_t)0xcd6, (q15_t)0x80a6, (q15_t)0xcd0, (q15_t)0x80a5, (q15_t)0xcca, (q15_t)0x80a5, (q15_t)0xcc4, (q15_t)0x80a4, + (q15_t)0xcbd, (q15_t)0x80a3, (q15_t)0xcb7, (q15_t)0x80a3, (q15_t)0xcb1, (q15_t)0x80a2, (q15_t)0xcab, (q15_t)0x80a1, + (q15_t)0xca4, (q15_t)0x80a1, (q15_t)0xc9e, (q15_t)0x80a0, (q15_t)0xc98, (q15_t)0x80a0, (q15_t)0xc92, (q15_t)0x809f, + (q15_t)0xc8b, (q15_t)0x809e, (q15_t)0xc85, (q15_t)0x809e, (q15_t)0xc7f, (q15_t)0x809d, (q15_t)0xc79, (q15_t)0x809c, + (q15_t)0xc72, (q15_t)0x809c, (q15_t)0xc6c, (q15_t)0x809b, (q15_t)0xc66, (q15_t)0x809b, (q15_t)0xc60, (q15_t)0x809a, + (q15_t)0xc59, (q15_t)0x8099, (q15_t)0xc53, (q15_t)0x8099, (q15_t)0xc4d, (q15_t)0x8098, (q15_t)0xc47, (q15_t)0x8098, + (q15_t)0xc40, (q15_t)0x8097, (q15_t)0xc3a, (q15_t)0x8096, (q15_t)0xc34, (q15_t)0x8096, (q15_t)0xc2e, (q15_t)0x8095, + (q15_t)0xc27, (q15_t)0x8095, (q15_t)0xc21, (q15_t)0x8094, (q15_t)0xc1b, (q15_t)0x8093, (q15_t)0xc14, (q15_t)0x8093, + (q15_t)0xc0e, (q15_t)0x8092, (q15_t)0xc08, (q15_t)0x8092, (q15_t)0xc02, (q15_t)0x8091, (q15_t)0xbfb, (q15_t)0x8090, + (q15_t)0xbf5, (q15_t)0x8090, (q15_t)0xbef, (q15_t)0x808f, (q15_t)0xbe9, (q15_t)0x808f, (q15_t)0xbe2, (q15_t)0x808e, + (q15_t)0xbdc, (q15_t)0x808e, (q15_t)0xbd6, (q15_t)0x808d, (q15_t)0xbd0, (q15_t)0x808c, (q15_t)0xbc9, (q15_t)0x808c, + (q15_t)0xbc3, (q15_t)0x808b, (q15_t)0xbbd, (q15_t)0x808b, (q15_t)0xbb7, (q15_t)0x808a, (q15_t)0xbb0, (q15_t)0x8089, + (q15_t)0xbaa, (q15_t)0x8089, (q15_t)0xba4, (q15_t)0x8088, (q15_t)0xb9e, (q15_t)0x8088, (q15_t)0xb97, (q15_t)0x8087, + (q15_t)0xb91, (q15_t)0x8087, (q15_t)0xb8b, (q15_t)0x8086, (q15_t)0xb85, (q15_t)0x8085, (q15_t)0xb7e, (q15_t)0x8085, + (q15_t)0xb78, (q15_t)0x8084, (q15_t)0xb72, (q15_t)0x8084, (q15_t)0xb6c, (q15_t)0x8083, (q15_t)0xb65, (q15_t)0x8083, + (q15_t)0xb5f, (q15_t)0x8082, (q15_t)0xb59, (q15_t)0x8082, (q15_t)0xb53, (q15_t)0x8081, (q15_t)0xb4c, (q15_t)0x8080, + (q15_t)0xb46, (q15_t)0x8080, (q15_t)0xb40, (q15_t)0x807f, (q15_t)0xb3a, (q15_t)0x807f, (q15_t)0xb33, (q15_t)0x807e, + (q15_t)0xb2d, (q15_t)0x807e, (q15_t)0xb27, (q15_t)0x807d, (q15_t)0xb20, (q15_t)0x807d, (q15_t)0xb1a, (q15_t)0x807c, + (q15_t)0xb14, (q15_t)0x807b, (q15_t)0xb0e, (q15_t)0x807b, (q15_t)0xb07, (q15_t)0x807a, (q15_t)0xb01, (q15_t)0x807a, + (q15_t)0xafb, (q15_t)0x8079, (q15_t)0xaf5, (q15_t)0x8079, (q15_t)0xaee, (q15_t)0x8078, (q15_t)0xae8, (q15_t)0x8078, + (q15_t)0xae2, (q15_t)0x8077, (q15_t)0xadc, (q15_t)0x8077, (q15_t)0xad5, (q15_t)0x8076, (q15_t)0xacf, (q15_t)0x8076, + (q15_t)0xac9, (q15_t)0x8075, (q15_t)0xac3, (q15_t)0x8075, (q15_t)0xabc, (q15_t)0x8074, (q15_t)0xab6, (q15_t)0x8073, + (q15_t)0xab0, (q15_t)0x8073, (q15_t)0xaaa, (q15_t)0x8072, (q15_t)0xaa3, (q15_t)0x8072, (q15_t)0xa9d, (q15_t)0x8071, + (q15_t)0xa97, (q15_t)0x8071, (q15_t)0xa90, (q15_t)0x8070, (q15_t)0xa8a, (q15_t)0x8070, (q15_t)0xa84, (q15_t)0x806f, + (q15_t)0xa7e, (q15_t)0x806f, (q15_t)0xa77, (q15_t)0x806e, (q15_t)0xa71, (q15_t)0x806e, (q15_t)0xa6b, (q15_t)0x806d, + (q15_t)0xa65, (q15_t)0x806d, (q15_t)0xa5e, (q15_t)0x806c, (q15_t)0xa58, (q15_t)0x806c, (q15_t)0xa52, (q15_t)0x806b, + (q15_t)0xa4c, (q15_t)0x806b, (q15_t)0xa45, (q15_t)0x806a, (q15_t)0xa3f, (q15_t)0x806a, (q15_t)0xa39, (q15_t)0x8069, + (q15_t)0xa33, (q15_t)0x8069, (q15_t)0xa2c, (q15_t)0x8068, (q15_t)0xa26, (q15_t)0x8068, (q15_t)0xa20, (q15_t)0x8067, + (q15_t)0xa19, (q15_t)0x8067, (q15_t)0xa13, (q15_t)0x8066, (q15_t)0xa0d, (q15_t)0x8066, (q15_t)0xa07, (q15_t)0x8065, + (q15_t)0xa00, (q15_t)0x8065, (q15_t)0x9fa, (q15_t)0x8064, (q15_t)0x9f4, (q15_t)0x8064, (q15_t)0x9ee, (q15_t)0x8063, + (q15_t)0x9e7, (q15_t)0x8063, (q15_t)0x9e1, (q15_t)0x8062, (q15_t)0x9db, (q15_t)0x8062, (q15_t)0x9d5, (q15_t)0x8061, + (q15_t)0x9ce, (q15_t)0x8061, (q15_t)0x9c8, (q15_t)0x8060, (q15_t)0x9c2, (q15_t)0x8060, (q15_t)0x9bc, (q15_t)0x805f, + (q15_t)0x9b5, (q15_t)0x805f, (q15_t)0x9af, (q15_t)0x805e, (q15_t)0x9a9, (q15_t)0x805e, (q15_t)0x9a2, (q15_t)0x805d, + (q15_t)0x99c, (q15_t)0x805d, (q15_t)0x996, (q15_t)0x805d, (q15_t)0x990, (q15_t)0x805c, (q15_t)0x989, (q15_t)0x805c, + (q15_t)0x983, (q15_t)0x805b, (q15_t)0x97d, (q15_t)0x805b, (q15_t)0x977, (q15_t)0x805a, (q15_t)0x970, (q15_t)0x805a, + (q15_t)0x96a, (q15_t)0x8059, (q15_t)0x964, (q15_t)0x8059, (q15_t)0x95e, (q15_t)0x8058, (q15_t)0x957, (q15_t)0x8058, + (q15_t)0x951, (q15_t)0x8057, (q15_t)0x94b, (q15_t)0x8057, (q15_t)0x944, (q15_t)0x8057, (q15_t)0x93e, (q15_t)0x8056, + (q15_t)0x938, (q15_t)0x8056, (q15_t)0x932, (q15_t)0x8055, (q15_t)0x92b, (q15_t)0x8055, (q15_t)0x925, (q15_t)0x8054, + (q15_t)0x91f, (q15_t)0x8054, (q15_t)0x919, (q15_t)0x8053, (q15_t)0x912, (q15_t)0x8053, (q15_t)0x90c, (q15_t)0x8052, + (q15_t)0x906, (q15_t)0x8052, (q15_t)0x900, (q15_t)0x8052, (q15_t)0x8f9, (q15_t)0x8051, (q15_t)0x8f3, (q15_t)0x8051, + (q15_t)0x8ed, (q15_t)0x8050, (q15_t)0x8e6, (q15_t)0x8050, (q15_t)0x8e0, (q15_t)0x804f, (q15_t)0x8da, (q15_t)0x804f, + (q15_t)0x8d4, (q15_t)0x804f, (q15_t)0x8cd, (q15_t)0x804e, (q15_t)0x8c7, (q15_t)0x804e, (q15_t)0x8c1, (q15_t)0x804d, + (q15_t)0x8bb, (q15_t)0x804d, (q15_t)0x8b4, (q15_t)0x804c, (q15_t)0x8ae, (q15_t)0x804c, (q15_t)0x8a8, (q15_t)0x804c, + (q15_t)0x8a2, (q15_t)0x804b, (q15_t)0x89b, (q15_t)0x804b, (q15_t)0x895, (q15_t)0x804a, (q15_t)0x88f, (q15_t)0x804a, + (q15_t)0x888, (q15_t)0x8049, (q15_t)0x882, (q15_t)0x8049, (q15_t)0x87c, (q15_t)0x8049, (q15_t)0x876, (q15_t)0x8048, + (q15_t)0x86f, (q15_t)0x8048, (q15_t)0x869, (q15_t)0x8047, (q15_t)0x863, (q15_t)0x8047, (q15_t)0x85d, (q15_t)0x8047, + (q15_t)0x856, (q15_t)0x8046, (q15_t)0x850, (q15_t)0x8046, (q15_t)0x84a, (q15_t)0x8045, (q15_t)0x843, (q15_t)0x8045, + (q15_t)0x83d, (q15_t)0x8044, (q15_t)0x837, (q15_t)0x8044, (q15_t)0x831, (q15_t)0x8044, (q15_t)0x82a, (q15_t)0x8043, + (q15_t)0x824, (q15_t)0x8043, (q15_t)0x81e, (q15_t)0x8042, (q15_t)0x818, (q15_t)0x8042, (q15_t)0x811, (q15_t)0x8042, + (q15_t)0x80b, (q15_t)0x8041, (q15_t)0x805, (q15_t)0x8041, (q15_t)0x7fe, (q15_t)0x8040, (q15_t)0x7f8, (q15_t)0x8040, + (q15_t)0x7f2, (q15_t)0x8040, (q15_t)0x7ec, (q15_t)0x803f, (q15_t)0x7e5, (q15_t)0x803f, (q15_t)0x7df, (q15_t)0x803f, + (q15_t)0x7d9, (q15_t)0x803e, (q15_t)0x7d3, (q15_t)0x803e, (q15_t)0x7cc, (q15_t)0x803d, (q15_t)0x7c6, (q15_t)0x803d, + (q15_t)0x7c0, (q15_t)0x803d, (q15_t)0x7ba, (q15_t)0x803c, (q15_t)0x7b3, (q15_t)0x803c, (q15_t)0x7ad, (q15_t)0x803b, + (q15_t)0x7a7, (q15_t)0x803b, (q15_t)0x7a0, (q15_t)0x803b, (q15_t)0x79a, (q15_t)0x803a, (q15_t)0x794, (q15_t)0x803a, + (q15_t)0x78e, (q15_t)0x803a, (q15_t)0x787, (q15_t)0x8039, (q15_t)0x781, (q15_t)0x8039, (q15_t)0x77b, (q15_t)0x8039, + (q15_t)0x775, (q15_t)0x8038, (q15_t)0x76e, (q15_t)0x8038, (q15_t)0x768, (q15_t)0x8037, (q15_t)0x762, (q15_t)0x8037, + (q15_t)0x75b, (q15_t)0x8037, (q15_t)0x755, (q15_t)0x8036, (q15_t)0x74f, (q15_t)0x8036, (q15_t)0x749, (q15_t)0x8036, + (q15_t)0x742, (q15_t)0x8035, (q15_t)0x73c, (q15_t)0x8035, (q15_t)0x736, (q15_t)0x8035, (q15_t)0x730, (q15_t)0x8034, + (q15_t)0x729, (q15_t)0x8034, (q15_t)0x723, (q15_t)0x8033, (q15_t)0x71d, (q15_t)0x8033, (q15_t)0x716, (q15_t)0x8033, + (q15_t)0x710, (q15_t)0x8032, (q15_t)0x70a, (q15_t)0x8032, (q15_t)0x704, (q15_t)0x8032, (q15_t)0x6fd, (q15_t)0x8031, + (q15_t)0x6f7, (q15_t)0x8031, (q15_t)0x6f1, (q15_t)0x8031, (q15_t)0x6ea, (q15_t)0x8030, (q15_t)0x6e4, (q15_t)0x8030, + (q15_t)0x6de, (q15_t)0x8030, (q15_t)0x6d8, (q15_t)0x802f, (q15_t)0x6d1, (q15_t)0x802f, (q15_t)0x6cb, (q15_t)0x802f, + (q15_t)0x6c5, (q15_t)0x802e, (q15_t)0x6bf, (q15_t)0x802e, (q15_t)0x6b8, (q15_t)0x802e, (q15_t)0x6b2, (q15_t)0x802d, + (q15_t)0x6ac, (q15_t)0x802d, (q15_t)0x6a5, (q15_t)0x802d, (q15_t)0x69f, (q15_t)0x802c, (q15_t)0x699, (q15_t)0x802c, + (q15_t)0x693, (q15_t)0x802c, (q15_t)0x68c, (q15_t)0x802b, (q15_t)0x686, (q15_t)0x802b, (q15_t)0x680, (q15_t)0x802b, + (q15_t)0x67a, (q15_t)0x802a, (q15_t)0x673, (q15_t)0x802a, (q15_t)0x66d, (q15_t)0x802a, (q15_t)0x667, (q15_t)0x802a, + (q15_t)0x660, (q15_t)0x8029, (q15_t)0x65a, (q15_t)0x8029, (q15_t)0x654, (q15_t)0x8029, (q15_t)0x64e, (q15_t)0x8028, + (q15_t)0x647, (q15_t)0x8028, (q15_t)0x641, (q15_t)0x8028, (q15_t)0x63b, (q15_t)0x8027, (q15_t)0x635, (q15_t)0x8027, + (q15_t)0x62e, (q15_t)0x8027, (q15_t)0x628, (q15_t)0x8026, (q15_t)0x622, (q15_t)0x8026, (q15_t)0x61b, (q15_t)0x8026, + (q15_t)0x615, (q15_t)0x8026, (q15_t)0x60f, (q15_t)0x8025, (q15_t)0x609, (q15_t)0x8025, (q15_t)0x602, (q15_t)0x8025, + (q15_t)0x5fc, (q15_t)0x8024, (q15_t)0x5f6, (q15_t)0x8024, (q15_t)0x5ef, (q15_t)0x8024, (q15_t)0x5e9, (q15_t)0x8023, + (q15_t)0x5e3, (q15_t)0x8023, (q15_t)0x5dd, (q15_t)0x8023, (q15_t)0x5d6, (q15_t)0x8023, (q15_t)0x5d0, (q15_t)0x8022, + (q15_t)0x5ca, (q15_t)0x8022, (q15_t)0x5c4, (q15_t)0x8022, (q15_t)0x5bd, (q15_t)0x8021, (q15_t)0x5b7, (q15_t)0x8021, + (q15_t)0x5b1, (q15_t)0x8021, (q15_t)0x5aa, (q15_t)0x8021, (q15_t)0x5a4, (q15_t)0x8020, (q15_t)0x59e, (q15_t)0x8020, + (q15_t)0x598, (q15_t)0x8020, (q15_t)0x591, (q15_t)0x8020, (q15_t)0x58b, (q15_t)0x801f, (q15_t)0x585, (q15_t)0x801f, + (q15_t)0x57f, (q15_t)0x801f, (q15_t)0x578, (q15_t)0x801e, (q15_t)0x572, (q15_t)0x801e, (q15_t)0x56c, (q15_t)0x801e, + (q15_t)0x565, (q15_t)0x801e, (q15_t)0x55f, (q15_t)0x801d, (q15_t)0x559, (q15_t)0x801d, (q15_t)0x553, (q15_t)0x801d, + (q15_t)0x54c, (q15_t)0x801d, (q15_t)0x546, (q15_t)0x801c, (q15_t)0x540, (q15_t)0x801c, (q15_t)0x539, (q15_t)0x801c, + (q15_t)0x533, (q15_t)0x801c, (q15_t)0x52d, (q15_t)0x801b, (q15_t)0x527, (q15_t)0x801b, (q15_t)0x520, (q15_t)0x801b, + (q15_t)0x51a, (q15_t)0x801b, (q15_t)0x514, (q15_t)0x801a, (q15_t)0x50d, (q15_t)0x801a, (q15_t)0x507, (q15_t)0x801a, + (q15_t)0x501, (q15_t)0x801a, (q15_t)0x4fb, (q15_t)0x8019, (q15_t)0x4f4, (q15_t)0x8019, (q15_t)0x4ee, (q15_t)0x8019, + (q15_t)0x4e8, (q15_t)0x8019, (q15_t)0x4e2, (q15_t)0x8018, (q15_t)0x4db, (q15_t)0x8018, (q15_t)0x4d5, (q15_t)0x8018, + (q15_t)0x4cf, (q15_t)0x8018, (q15_t)0x4c8, (q15_t)0x8017, (q15_t)0x4c2, (q15_t)0x8017, (q15_t)0x4bc, (q15_t)0x8017, + (q15_t)0x4b6, (q15_t)0x8017, (q15_t)0x4af, (q15_t)0x8016, (q15_t)0x4a9, (q15_t)0x8016, (q15_t)0x4a3, (q15_t)0x8016, + (q15_t)0x49c, (q15_t)0x8016, (q15_t)0x496, (q15_t)0x8016, (q15_t)0x490, (q15_t)0x8015, (q15_t)0x48a, (q15_t)0x8015, + (q15_t)0x483, (q15_t)0x8015, (q15_t)0x47d, (q15_t)0x8015, (q15_t)0x477, (q15_t)0x8014, (q15_t)0x471, (q15_t)0x8014, + (q15_t)0x46a, (q15_t)0x8014, (q15_t)0x464, (q15_t)0x8014, (q15_t)0x45e, (q15_t)0x8014, (q15_t)0x457, (q15_t)0x8013, + (q15_t)0x451, (q15_t)0x8013, (q15_t)0x44b, (q15_t)0x8013, (q15_t)0x445, (q15_t)0x8013, (q15_t)0x43e, (q15_t)0x8013, + (q15_t)0x438, (q15_t)0x8012, (q15_t)0x432, (q15_t)0x8012, (q15_t)0x42b, (q15_t)0x8012, (q15_t)0x425, (q15_t)0x8012, + (q15_t)0x41f, (q15_t)0x8012, (q15_t)0x419, (q15_t)0x8011, (q15_t)0x412, (q15_t)0x8011, (q15_t)0x40c, (q15_t)0x8011, + (q15_t)0x406, (q15_t)0x8011, (q15_t)0x3ff, (q15_t)0x8011, (q15_t)0x3f9, (q15_t)0x8010, (q15_t)0x3f3, (q15_t)0x8010, + (q15_t)0x3ed, (q15_t)0x8010, (q15_t)0x3e6, (q15_t)0x8010, (q15_t)0x3e0, (q15_t)0x8010, (q15_t)0x3da, (q15_t)0x800f, + (q15_t)0x3d4, (q15_t)0x800f, (q15_t)0x3cd, (q15_t)0x800f, (q15_t)0x3c7, (q15_t)0x800f, (q15_t)0x3c1, (q15_t)0x800f, + (q15_t)0x3ba, (q15_t)0x800e, (q15_t)0x3b4, (q15_t)0x800e, (q15_t)0x3ae, (q15_t)0x800e, (q15_t)0x3a8, (q15_t)0x800e, + (q15_t)0x3a1, (q15_t)0x800e, (q15_t)0x39b, (q15_t)0x800e, (q15_t)0x395, (q15_t)0x800d, (q15_t)0x38e, (q15_t)0x800d, + (q15_t)0x388, (q15_t)0x800d, (q15_t)0x382, (q15_t)0x800d, (q15_t)0x37c, (q15_t)0x800d, (q15_t)0x375, (q15_t)0x800c, + (q15_t)0x36f, (q15_t)0x800c, (q15_t)0x369, (q15_t)0x800c, (q15_t)0x362, (q15_t)0x800c, (q15_t)0x35c, (q15_t)0x800c, + (q15_t)0x356, (q15_t)0x800c, (q15_t)0x350, (q15_t)0x800b, (q15_t)0x349, (q15_t)0x800b, (q15_t)0x343, (q15_t)0x800b, + (q15_t)0x33d, (q15_t)0x800b, (q15_t)0x337, (q15_t)0x800b, (q15_t)0x330, (q15_t)0x800b, (q15_t)0x32a, (q15_t)0x800b, + (q15_t)0x324, (q15_t)0x800a, (q15_t)0x31d, (q15_t)0x800a, (q15_t)0x317, (q15_t)0x800a, (q15_t)0x311, (q15_t)0x800a, + (q15_t)0x30b, (q15_t)0x800a, (q15_t)0x304, (q15_t)0x800a, (q15_t)0x2fe, (q15_t)0x8009, (q15_t)0x2f8, (q15_t)0x8009, + (q15_t)0x2f1, (q15_t)0x8009, (q15_t)0x2eb, (q15_t)0x8009, (q15_t)0x2e5, (q15_t)0x8009, (q15_t)0x2df, (q15_t)0x8009, + (q15_t)0x2d8, (q15_t)0x8009, (q15_t)0x2d2, (q15_t)0x8008, (q15_t)0x2cc, (q15_t)0x8008, (q15_t)0x2c5, (q15_t)0x8008, + (q15_t)0x2bf, (q15_t)0x8008, (q15_t)0x2b9, (q15_t)0x8008, (q15_t)0x2b3, (q15_t)0x8008, (q15_t)0x2ac, (q15_t)0x8008, + (q15_t)0x2a6, (q15_t)0x8008, (q15_t)0x2a0, (q15_t)0x8007, (q15_t)0x299, (q15_t)0x8007, (q15_t)0x293, (q15_t)0x8007, + (q15_t)0x28d, (q15_t)0x8007, (q15_t)0x287, (q15_t)0x8007, (q15_t)0x280, (q15_t)0x8007, (q15_t)0x27a, (q15_t)0x8007, + (q15_t)0x274, (q15_t)0x8007, (q15_t)0x26d, (q15_t)0x8006, (q15_t)0x267, (q15_t)0x8006, (q15_t)0x261, (q15_t)0x8006, + (q15_t)0x25b, (q15_t)0x8006, (q15_t)0x254, (q15_t)0x8006, (q15_t)0x24e, (q15_t)0x8006, (q15_t)0x248, (q15_t)0x8006, + (q15_t)0x242, (q15_t)0x8006, (q15_t)0x23b, (q15_t)0x8005, (q15_t)0x235, (q15_t)0x8005, (q15_t)0x22f, (q15_t)0x8005, + (q15_t)0x228, (q15_t)0x8005, (q15_t)0x222, (q15_t)0x8005, (q15_t)0x21c, (q15_t)0x8005, (q15_t)0x216, (q15_t)0x8005, + (q15_t)0x20f, (q15_t)0x8005, (q15_t)0x209, (q15_t)0x8005, (q15_t)0x203, (q15_t)0x8005, (q15_t)0x1fc, (q15_t)0x8004, + (q15_t)0x1f6, (q15_t)0x8004, (q15_t)0x1f0, (q15_t)0x8004, (q15_t)0x1ea, (q15_t)0x8004, (q15_t)0x1e3, (q15_t)0x8004, + (q15_t)0x1dd, (q15_t)0x8004, (q15_t)0x1d7, (q15_t)0x8004, (q15_t)0x1d0, (q15_t)0x8004, (q15_t)0x1ca, (q15_t)0x8004, + (q15_t)0x1c4, (q15_t)0x8004, (q15_t)0x1be, (q15_t)0x8004, (q15_t)0x1b7, (q15_t)0x8003, (q15_t)0x1b1, (q15_t)0x8003, + (q15_t)0x1ab, (q15_t)0x8003, (q15_t)0x1a4, (q15_t)0x8003, (q15_t)0x19e, (q15_t)0x8003, (q15_t)0x198, (q15_t)0x8003, + (q15_t)0x192, (q15_t)0x8003, (q15_t)0x18b, (q15_t)0x8003, (q15_t)0x185, (q15_t)0x8003, (q15_t)0x17f, (q15_t)0x8003, + (q15_t)0x178, (q15_t)0x8003, (q15_t)0x172, (q15_t)0x8003, (q15_t)0x16c, (q15_t)0x8003, (q15_t)0x166, (q15_t)0x8002, + (q15_t)0x15f, (q15_t)0x8002, (q15_t)0x159, (q15_t)0x8002, (q15_t)0x153, (q15_t)0x8002, (q15_t)0x14d, (q15_t)0x8002, + (q15_t)0x146, (q15_t)0x8002, (q15_t)0x140, (q15_t)0x8002, (q15_t)0x13a, (q15_t)0x8002, (q15_t)0x133, (q15_t)0x8002, + (q15_t)0x12d, (q15_t)0x8002, (q15_t)0x127, (q15_t)0x8002, (q15_t)0x121, (q15_t)0x8002, (q15_t)0x11a, (q15_t)0x8002, + (q15_t)0x114, (q15_t)0x8002, (q15_t)0x10e, (q15_t)0x8002, (q15_t)0x107, (q15_t)0x8002, (q15_t)0x101, (q15_t)0x8002, + (q15_t)0xfb, (q15_t)0x8001, (q15_t)0xf5, (q15_t)0x8001, (q15_t)0xee, (q15_t)0x8001, (q15_t)0xe8, (q15_t)0x8001, + (q15_t)0xe2, (q15_t)0x8001, (q15_t)0xdb, (q15_t)0x8001, (q15_t)0xd5, (q15_t)0x8001, (q15_t)0xcf, (q15_t)0x8001, + (q15_t)0xc9, (q15_t)0x8001, (q15_t)0xc2, (q15_t)0x8001, (q15_t)0xbc, (q15_t)0x8001, (q15_t)0xb6, (q15_t)0x8001, + (q15_t)0xaf, (q15_t)0x8001, (q15_t)0xa9, (q15_t)0x8001, (q15_t)0xa3, (q15_t)0x8001, (q15_t)0x9d, (q15_t)0x8001, + (q15_t)0x96, (q15_t)0x8001, (q15_t)0x90, (q15_t)0x8001, (q15_t)0x8a, (q15_t)0x8001, (q15_t)0x83, (q15_t)0x8001, + (q15_t)0x7d, (q15_t)0x8001, (q15_t)0x77, (q15_t)0x8001, (q15_t)0x71, (q15_t)0x8001, (q15_t)0x6a, (q15_t)0x8001, + (q15_t)0x64, (q15_t)0x8001, (q15_t)0x5e, (q15_t)0x8001, (q15_t)0x57, (q15_t)0x8001, (q15_t)0x51, (q15_t)0x8001, + (q15_t)0x4b, (q15_t)0x8001, (q15_t)0x45, (q15_t)0x8001, (q15_t)0x3e, (q15_t)0x8001, (q15_t)0x38, (q15_t)0x8001, + (q15_t)0x32, (q15_t)0x8001, (q15_t)0x2b, (q15_t)0x8001, (q15_t)0x25, (q15_t)0x8001, (q15_t)0x1f, (q15_t)0x8001, + (q15_t)0x19, (q15_t)0x8001, (q15_t)0x12, (q15_t)0x8001, (q15_t)0xc, (q15_t)0x8001, (q15_t)0x6, (q15_t)0x8001 +}; + + +/** +* \par +* cosFactor tables are generated using the formula :
 cos_factors[n] = 2 * cos((2n+1)*pi/(4*N)) 
+* \par +* C command to generate the table +*
+* for(i = 0; i< N; i++)
+* {
+*   cos_factors[i]= 2 * cos((2*i+1)*c/2);
+* } 
+* \par +* where N is the number of factors to generate and c is pi/(2*N) +* \par +* Then converted to q15 format by multiplying with 2^31 and saturated if required. + +*/ + +static const q15_t ALIGN4 cos_factorsQ15_128[128] = { + (q15_t)0x7fff, (q15_t)0x7ffa, (q15_t)0x7ff0, (q15_t)0x7fe1, (q15_t)0x7fce, (q15_t)0x7fb5, (q15_t)0x7f97, (q15_t)0x7f75, + (q15_t)0x7f4d, (q15_t)0x7f21, (q15_t)0x7ef0, (q15_t)0x7eba, (q15_t)0x7e7f, (q15_t)0x7e3f, (q15_t)0x7dfa, (q15_t)0x7db0, + (q15_t)0x7d62, (q15_t)0x7d0f, (q15_t)0x7cb7, (q15_t)0x7c5a, (q15_t)0x7bf8, (q15_t)0x7b92, (q15_t)0x7b26, (q15_t)0x7ab6, + (q15_t)0x7a42, (q15_t)0x79c8, (q15_t)0x794a, (q15_t)0x78c7, (q15_t)0x7840, (q15_t)0x77b4, (q15_t)0x7723, (q15_t)0x768e, + (q15_t)0x75f4, (q15_t)0x7555, (q15_t)0x74b2, (q15_t)0x740b, (q15_t)0x735f, (q15_t)0x72af, (q15_t)0x71fa, (q15_t)0x7141, + (q15_t)0x7083, (q15_t)0x6fc1, (q15_t)0x6efb, (q15_t)0x6e30, (q15_t)0x6d62, (q15_t)0x6c8f, (q15_t)0x6bb8, (q15_t)0x6adc, + (q15_t)0x69fd, (q15_t)0x6919, (q15_t)0x6832, (q15_t)0x6746, (q15_t)0x6657, (q15_t)0x6563, (q15_t)0x646c, (q15_t)0x6371, + (q15_t)0x6271, (q15_t)0x616f, (q15_t)0x6068, (q15_t)0x5f5e, (q15_t)0x5e50, (q15_t)0x5d3e, (q15_t)0x5c29, (q15_t)0x5b10, + (q15_t)0x59f3, (q15_t)0x58d4, (q15_t)0x57b0, (q15_t)0x568a, (q15_t)0x5560, (q15_t)0x5433, (q15_t)0x5302, (q15_t)0x51ce, + (q15_t)0x5097, (q15_t)0x4f5e, (q15_t)0x4e21, (q15_t)0x4ce1, (q15_t)0x4b9e, (q15_t)0x4a58, (q15_t)0x490f, (q15_t)0x47c3, + (q15_t)0x4675, (q15_t)0x4524, (q15_t)0x43d0, (q15_t)0x427a, (q15_t)0x4121, (q15_t)0x3fc5, (q15_t)0x3e68, (q15_t)0x3d07, + (q15_t)0x3ba5, (q15_t)0x3a40, (q15_t)0x38d8, (q15_t)0x376f, (q15_t)0x3604, (q15_t)0x3496, (q15_t)0x3326, (q15_t)0x31b5, + (q15_t)0x3041, (q15_t)0x2ecc, (q15_t)0x2d55, (q15_t)0x2bdc, (q15_t)0x2a61, (q15_t)0x28e5, (q15_t)0x2767, (q15_t)0x25e8, + (q15_t)0x2467, (q15_t)0x22e5, (q15_t)0x2161, (q15_t)0x1fdc, (q15_t)0x1e56, (q15_t)0x1ccf, (q15_t)0x1b47, (q15_t)0x19bd, + (q15_t)0x1833, (q15_t)0x16a8, (q15_t)0x151b, (q15_t)0x138e, (q15_t)0x1201, (q15_t)0x1072, (q15_t)0xee3, (q15_t)0xd53, + (q15_t)0xbc3, (q15_t)0xa33, (q15_t)0x8a2, (q15_t)0x710, (q15_t)0x57f, (q15_t)0x3ed, (q15_t)0x25b, (q15_t)0xc9 +}; + +static const q15_t ALIGN4 cos_factorsQ15_512[512] = { + (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7ffe, (q15_t)0x7ffc, (q15_t)0x7ffb, (q15_t)0x7ff9, (q15_t)0x7ff7, + (q15_t)0x7ff4, (q15_t)0x7ff2, (q15_t)0x7fee, (q15_t)0x7feb, (q15_t)0x7fe7, (q15_t)0x7fe3, (q15_t)0x7fdf, (q15_t)0x7fda, + (q15_t)0x7fd6, (q15_t)0x7fd0, (q15_t)0x7fcb, (q15_t)0x7fc5, (q15_t)0x7fbf, (q15_t)0x7fb8, (q15_t)0x7fb1, (q15_t)0x7faa, + (q15_t)0x7fa3, (q15_t)0x7f9b, (q15_t)0x7f93, (q15_t)0x7f8b, (q15_t)0x7f82, (q15_t)0x7f79, (q15_t)0x7f70, (q15_t)0x7f67, + (q15_t)0x7f5d, (q15_t)0x7f53, (q15_t)0x7f48, (q15_t)0x7f3d, (q15_t)0x7f32, (q15_t)0x7f27, (q15_t)0x7f1b, (q15_t)0x7f0f, + (q15_t)0x7f03, (q15_t)0x7ef6, (q15_t)0x7ee9, (q15_t)0x7edc, (q15_t)0x7ecf, (q15_t)0x7ec1, (q15_t)0x7eb3, (q15_t)0x7ea4, + (q15_t)0x7e95, (q15_t)0x7e86, (q15_t)0x7e77, (q15_t)0x7e67, (q15_t)0x7e57, (q15_t)0x7e47, (q15_t)0x7e37, (q15_t)0x7e26, + (q15_t)0x7e14, (q15_t)0x7e03, (q15_t)0x7df1, (q15_t)0x7ddf, (q15_t)0x7dcd, (q15_t)0x7dba, (q15_t)0x7da7, (q15_t)0x7d94, + (q15_t)0x7d80, (q15_t)0x7d6c, (q15_t)0x7d58, (q15_t)0x7d43, (q15_t)0x7d2f, (q15_t)0x7d19, (q15_t)0x7d04, (q15_t)0x7cee, + (q15_t)0x7cd8, (q15_t)0x7cc2, (q15_t)0x7cab, (q15_t)0x7c94, (q15_t)0x7c7d, (q15_t)0x7c66, (q15_t)0x7c4e, (q15_t)0x7c36, + (q15_t)0x7c1d, (q15_t)0x7c05, (q15_t)0x7beb, (q15_t)0x7bd2, (q15_t)0x7bb9, (q15_t)0x7b9f, (q15_t)0x7b84, (q15_t)0x7b6a, + (q15_t)0x7b4f, (q15_t)0x7b34, (q15_t)0x7b19, (q15_t)0x7afd, (q15_t)0x7ae1, (q15_t)0x7ac5, (q15_t)0x7aa8, (q15_t)0x7a8b, + (q15_t)0x7a6e, (q15_t)0x7a50, (q15_t)0x7a33, (q15_t)0x7a15, (q15_t)0x79f6, (q15_t)0x79d8, (q15_t)0x79b9, (q15_t)0x7999, + (q15_t)0x797a, (q15_t)0x795a, (q15_t)0x793a, (q15_t)0x7919, (q15_t)0x78f9, (q15_t)0x78d8, (q15_t)0x78b6, (q15_t)0x7895, + (q15_t)0x7873, (q15_t)0x7851, (q15_t)0x782e, (q15_t)0x780c, (q15_t)0x77e9, (q15_t)0x77c5, (q15_t)0x77a2, (q15_t)0x777e, + (q15_t)0x775a, (q15_t)0x7735, (q15_t)0x7710, (q15_t)0x76eb, (q15_t)0x76c6, (q15_t)0x76a0, (q15_t)0x767b, (q15_t)0x7654, + (q15_t)0x762e, (q15_t)0x7607, (q15_t)0x75e0, (q15_t)0x75b9, (q15_t)0x7591, (q15_t)0x7569, (q15_t)0x7541, (q15_t)0x7519, + (q15_t)0x74f0, (q15_t)0x74c7, (q15_t)0x749e, (q15_t)0x7474, (q15_t)0x744a, (q15_t)0x7420, (q15_t)0x73f6, (q15_t)0x73cb, + (q15_t)0x73a0, (q15_t)0x7375, (q15_t)0x7349, (q15_t)0x731d, (q15_t)0x72f1, (q15_t)0x72c5, (q15_t)0x7298, (q15_t)0x726b, + (q15_t)0x723e, (q15_t)0x7211, (q15_t)0x71e3, (q15_t)0x71b5, (q15_t)0x7186, (q15_t)0x7158, (q15_t)0x7129, (q15_t)0x70fa, + (q15_t)0x70cb, (q15_t)0x709b, (q15_t)0x706b, (q15_t)0x703b, (q15_t)0x700a, (q15_t)0x6fda, (q15_t)0x6fa9, (q15_t)0x6f77, + (q15_t)0x6f46, (q15_t)0x6f14, (q15_t)0x6ee2, (q15_t)0x6eaf, (q15_t)0x6e7d, (q15_t)0x6e4a, (q15_t)0x6e17, (q15_t)0x6de3, + (q15_t)0x6db0, (q15_t)0x6d7c, (q15_t)0x6d48, (q15_t)0x6d13, (q15_t)0x6cde, (q15_t)0x6ca9, (q15_t)0x6c74, (q15_t)0x6c3f, + (q15_t)0x6c09, (q15_t)0x6bd3, (q15_t)0x6b9c, (q15_t)0x6b66, (q15_t)0x6b2f, (q15_t)0x6af8, (q15_t)0x6ac1, (q15_t)0x6a89, + (q15_t)0x6a51, (q15_t)0x6a19, (q15_t)0x69e1, (q15_t)0x69a8, (q15_t)0x696f, (q15_t)0x6936, (q15_t)0x68fd, (q15_t)0x68c3, + (q15_t)0x6889, (q15_t)0x684f, (q15_t)0x6815, (q15_t)0x67da, (q15_t)0x679f, (q15_t)0x6764, (q15_t)0x6729, (q15_t)0x66ed, + (q15_t)0x66b1, (q15_t)0x6675, (q15_t)0x6639, (q15_t)0x65fc, (q15_t)0x65bf, (q15_t)0x6582, (q15_t)0x6545, (q15_t)0x6507, + (q15_t)0x64c9, (q15_t)0x648b, (q15_t)0x644d, (q15_t)0x640e, (q15_t)0x63cf, (q15_t)0x6390, (q15_t)0x6351, (q15_t)0x6311, + (q15_t)0x62d2, (q15_t)0x6292, (q15_t)0x6251, (q15_t)0x6211, (q15_t)0x61d0, (q15_t)0x618f, (q15_t)0x614e, (q15_t)0x610d, + (q15_t)0x60cb, (q15_t)0x6089, (q15_t)0x6047, (q15_t)0x6004, (q15_t)0x5fc2, (q15_t)0x5f7f, (q15_t)0x5f3c, (q15_t)0x5ef9, + (q15_t)0x5eb5, (q15_t)0x5e71, (q15_t)0x5e2d, (q15_t)0x5de9, (q15_t)0x5da5, (q15_t)0x5d60, (q15_t)0x5d1b, (q15_t)0x5cd6, + (q15_t)0x5c91, (q15_t)0x5c4b, (q15_t)0x5c06, (q15_t)0x5bc0, (q15_t)0x5b79, (q15_t)0x5b33, (q15_t)0x5aec, (q15_t)0x5aa5, + (q15_t)0x5a5e, (q15_t)0x5a17, (q15_t)0x59d0, (q15_t)0x5988, (q15_t)0x5940, (q15_t)0x58f8, (q15_t)0x58af, (q15_t)0x5867, + (q15_t)0x581e, (q15_t)0x57d5, (q15_t)0x578c, (q15_t)0x5742, (q15_t)0x56f9, (q15_t)0x56af, (q15_t)0x5665, (q15_t)0x561a, + (q15_t)0x55d0, (q15_t)0x5585, (q15_t)0x553a, (q15_t)0x54ef, (q15_t)0x54a4, (q15_t)0x5458, (q15_t)0x540d, (q15_t)0x53c1, + (q15_t)0x5375, (q15_t)0x5328, (q15_t)0x52dc, (q15_t)0x528f, (q15_t)0x5242, (q15_t)0x51f5, (q15_t)0x51a8, (q15_t)0x515a, + (q15_t)0x510c, (q15_t)0x50bf, (q15_t)0x5070, (q15_t)0x5022, (q15_t)0x4fd4, (q15_t)0x4f85, (q15_t)0x4f36, (q15_t)0x4ee7, + (q15_t)0x4e98, (q15_t)0x4e48, (q15_t)0x4df9, (q15_t)0x4da9, (q15_t)0x4d59, (q15_t)0x4d09, (q15_t)0x4cb8, (q15_t)0x4c68, + (q15_t)0x4c17, (q15_t)0x4bc6, (q15_t)0x4b75, (q15_t)0x4b24, (q15_t)0x4ad2, (q15_t)0x4a81, (q15_t)0x4a2f, (q15_t)0x49dd, + (q15_t)0x498a, (q15_t)0x4938, (q15_t)0x48e6, (q15_t)0x4893, (q15_t)0x4840, (q15_t)0x47ed, (q15_t)0x479a, (q15_t)0x4746, + (q15_t)0x46f3, (q15_t)0x469f, (q15_t)0x464b, (q15_t)0x45f7, (q15_t)0x45a3, (q15_t)0x454e, (q15_t)0x44fa, (q15_t)0x44a5, + (q15_t)0x4450, (q15_t)0x43fb, (q15_t)0x43a5, (q15_t)0x4350, (q15_t)0x42fa, (q15_t)0x42a5, (q15_t)0x424f, (q15_t)0x41f9, + (q15_t)0x41a2, (q15_t)0x414c, (q15_t)0x40f6, (q15_t)0x409f, (q15_t)0x4048, (q15_t)0x3ff1, (q15_t)0x3f9a, (q15_t)0x3f43, + (q15_t)0x3eeb, (q15_t)0x3e93, (q15_t)0x3e3c, (q15_t)0x3de4, (q15_t)0x3d8c, (q15_t)0x3d33, (q15_t)0x3cdb, (q15_t)0x3c83, + (q15_t)0x3c2a, (q15_t)0x3bd1, (q15_t)0x3b78, (q15_t)0x3b1f, (q15_t)0x3ac6, (q15_t)0x3a6c, (q15_t)0x3a13, (q15_t)0x39b9, + (q15_t)0x395f, (q15_t)0x3906, (q15_t)0x38ab, (q15_t)0x3851, (q15_t)0x37f7, (q15_t)0x379c, (q15_t)0x3742, (q15_t)0x36e7, + (q15_t)0x368c, (q15_t)0x3631, (q15_t)0x35d6, (q15_t)0x357b, (q15_t)0x351f, (q15_t)0x34c4, (q15_t)0x3468, (q15_t)0x340c, + (q15_t)0x33b0, (q15_t)0x3354, (q15_t)0x32f8, (q15_t)0x329c, (q15_t)0x3240, (q15_t)0x31e3, (q15_t)0x3186, (q15_t)0x312a, + (q15_t)0x30cd, (q15_t)0x3070, (q15_t)0x3013, (q15_t)0x2fb5, (q15_t)0x2f58, (q15_t)0x2efb, (q15_t)0x2e9d, (q15_t)0x2e3f, + (q15_t)0x2de2, (q15_t)0x2d84, (q15_t)0x2d26, (q15_t)0x2cc8, (q15_t)0x2c69, (q15_t)0x2c0b, (q15_t)0x2bad, (q15_t)0x2b4e, + (q15_t)0x2aef, (q15_t)0x2a91, (q15_t)0x2a32, (q15_t)0x29d3, (q15_t)0x2974, (q15_t)0x2915, (q15_t)0x28b5, (q15_t)0x2856, + (q15_t)0x27f6, (q15_t)0x2797, (q15_t)0x2737, (q15_t)0x26d8, (q15_t)0x2678, (q15_t)0x2618, (q15_t)0x25b8, (q15_t)0x2558, + (q15_t)0x24f7, (q15_t)0x2497, (q15_t)0x2437, (q15_t)0x23d6, (q15_t)0x2376, (q15_t)0x2315, (q15_t)0x22b4, (q15_t)0x2254, + (q15_t)0x21f3, (q15_t)0x2192, (q15_t)0x2131, (q15_t)0x20d0, (q15_t)0x206e, (q15_t)0x200d, (q15_t)0x1fac, (q15_t)0x1f4a, + (q15_t)0x1ee9, (q15_t)0x1e87, (q15_t)0x1e25, (q15_t)0x1dc4, (q15_t)0x1d62, (q15_t)0x1d00, (q15_t)0x1c9e, (q15_t)0x1c3c, + (q15_t)0x1bda, (q15_t)0x1b78, (q15_t)0x1b16, (q15_t)0x1ab3, (q15_t)0x1a51, (q15_t)0x19ef, (q15_t)0x198c, (q15_t)0x192a, + (q15_t)0x18c7, (q15_t)0x1864, (q15_t)0x1802, (q15_t)0x179f, (q15_t)0x173c, (q15_t)0x16d9, (q15_t)0x1676, (q15_t)0x1613, + (q15_t)0x15b0, (q15_t)0x154d, (q15_t)0x14ea, (q15_t)0x1487, (q15_t)0x1423, (q15_t)0x13c0, (q15_t)0x135d, (q15_t)0x12f9, + (q15_t)0x1296, (q15_t)0x1232, (q15_t)0x11cf, (q15_t)0x116b, (q15_t)0x1108, (q15_t)0x10a4, (q15_t)0x1040, (q15_t)0xfdd, + (q15_t)0xf79, (q15_t)0xf15, (q15_t)0xeb1, (q15_t)0xe4d, (q15_t)0xde9, (q15_t)0xd85, (q15_t)0xd21, (q15_t)0xcbd, + (q15_t)0xc59, (q15_t)0xbf5, (q15_t)0xb91, (q15_t)0xb2d, (q15_t)0xac9, (q15_t)0xa65, (q15_t)0xa00, (q15_t)0x99c, + (q15_t)0x938, (q15_t)0x8d4, (q15_t)0x86f, (q15_t)0x80b, (q15_t)0x7a7, (q15_t)0x742, (q15_t)0x6de, (q15_t)0x67a, + (q15_t)0x615, (q15_t)0x5b1, (q15_t)0x54c, (q15_t)0x4e8, (q15_t)0x483, (q15_t)0x41f, (q15_t)0x3ba, (q15_t)0x356, + (q15_t)0x2f1, (q15_t)0x28d, (q15_t)0x228, (q15_t)0x1c4, (q15_t)0x15f, (q15_t)0xfb, (q15_t)0x96, (q15_t)0x32 +}; + +static const q15_t ALIGN4 cos_factorsQ15_2048[2048] = { + (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, + (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffd, (q15_t)0x7ffd, + (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffa, + (q15_t)0x7ffa, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff6, + (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff4, (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff2, (q15_t)0x7ff1, (q15_t)0x7ff0, + (q15_t)0x7ff0, (q15_t)0x7fef, (q15_t)0x7fee, (q15_t)0x7fed, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7feb, (q15_t)0x7fea, + (q15_t)0x7fe9, (q15_t)0x7fe8, (q15_t)0x7fe7, (q15_t)0x7fe6, (q15_t)0x7fe5, (q15_t)0x7fe4, (q15_t)0x7fe3, (q15_t)0x7fe2, + (q15_t)0x7fe1, (q15_t)0x7fe0, (q15_t)0x7fdf, (q15_t)0x7fdd, (q15_t)0x7fdc, (q15_t)0x7fdb, (q15_t)0x7fda, (q15_t)0x7fd9, + (q15_t)0x7fd7, (q15_t)0x7fd6, (q15_t)0x7fd5, (q15_t)0x7fd4, (q15_t)0x7fd2, (q15_t)0x7fd1, (q15_t)0x7fd0, (q15_t)0x7fce, + (q15_t)0x7fcd, (q15_t)0x7fcb, (q15_t)0x7fca, (q15_t)0x7fc9, (q15_t)0x7fc7, (q15_t)0x7fc6, (q15_t)0x7fc4, (q15_t)0x7fc3, + (q15_t)0x7fc1, (q15_t)0x7fc0, (q15_t)0x7fbe, (q15_t)0x7fbc, (q15_t)0x7fbb, (q15_t)0x7fb9, (q15_t)0x7fb7, (q15_t)0x7fb6, + (q15_t)0x7fb4, (q15_t)0x7fb2, (q15_t)0x7fb1, (q15_t)0x7faf, (q15_t)0x7fad, (q15_t)0x7fab, (q15_t)0x7fa9, (q15_t)0x7fa8, + (q15_t)0x7fa6, (q15_t)0x7fa4, (q15_t)0x7fa2, (q15_t)0x7fa0, (q15_t)0x7f9e, (q15_t)0x7f9c, (q15_t)0x7f9a, (q15_t)0x7f98, + (q15_t)0x7f96, (q15_t)0x7f94, (q15_t)0x7f92, (q15_t)0x7f90, (q15_t)0x7f8e, (q15_t)0x7f8c, (q15_t)0x7f8a, (q15_t)0x7f88, + (q15_t)0x7f86, (q15_t)0x7f83, (q15_t)0x7f81, (q15_t)0x7f7f, (q15_t)0x7f7d, (q15_t)0x7f7b, (q15_t)0x7f78, (q15_t)0x7f76, + (q15_t)0x7f74, (q15_t)0x7f71, (q15_t)0x7f6f, (q15_t)0x7f6d, (q15_t)0x7f6a, (q15_t)0x7f68, (q15_t)0x7f65, (q15_t)0x7f63, + (q15_t)0x7f60, (q15_t)0x7f5e, (q15_t)0x7f5b, (q15_t)0x7f59, (q15_t)0x7f56, (q15_t)0x7f54, (q15_t)0x7f51, (q15_t)0x7f4f, + (q15_t)0x7f4c, (q15_t)0x7f49, (q15_t)0x7f47, (q15_t)0x7f44, (q15_t)0x7f41, (q15_t)0x7f3f, (q15_t)0x7f3c, (q15_t)0x7f39, + (q15_t)0x7f36, (q15_t)0x7f34, (q15_t)0x7f31, (q15_t)0x7f2e, (q15_t)0x7f2b, (q15_t)0x7f28, (q15_t)0x7f25, (q15_t)0x7f23, + (q15_t)0x7f20, (q15_t)0x7f1d, (q15_t)0x7f1a, (q15_t)0x7f17, (q15_t)0x7f14, (q15_t)0x7f11, (q15_t)0x7f0e, (q15_t)0x7f0b, + (q15_t)0x7f08, (q15_t)0x7f04, (q15_t)0x7f01, (q15_t)0x7efe, (q15_t)0x7efb, (q15_t)0x7ef8, (q15_t)0x7ef5, (q15_t)0x7ef1, + (q15_t)0x7eee, (q15_t)0x7eeb, (q15_t)0x7ee8, (q15_t)0x7ee4, (q15_t)0x7ee1, (q15_t)0x7ede, (q15_t)0x7eda, (q15_t)0x7ed7, + (q15_t)0x7ed4, (q15_t)0x7ed0, (q15_t)0x7ecd, (q15_t)0x7ec9, (q15_t)0x7ec6, (q15_t)0x7ec3, (q15_t)0x7ebf, (q15_t)0x7ebb, + (q15_t)0x7eb8, (q15_t)0x7eb4, (q15_t)0x7eb1, (q15_t)0x7ead, (q15_t)0x7eaa, (q15_t)0x7ea6, (q15_t)0x7ea2, (q15_t)0x7e9f, + (q15_t)0x7e9b, (q15_t)0x7e97, (q15_t)0x7e94, (q15_t)0x7e90, (q15_t)0x7e8c, (q15_t)0x7e88, (q15_t)0x7e84, (q15_t)0x7e81, + (q15_t)0x7e7d, (q15_t)0x7e79, (q15_t)0x7e75, (q15_t)0x7e71, (q15_t)0x7e6d, (q15_t)0x7e69, (q15_t)0x7e65, (q15_t)0x7e61, + (q15_t)0x7e5d, (q15_t)0x7e59, (q15_t)0x7e55, (q15_t)0x7e51, (q15_t)0x7e4d, (q15_t)0x7e49, (q15_t)0x7e45, (q15_t)0x7e41, + (q15_t)0x7e3d, (q15_t)0x7e39, (q15_t)0x7e34, (q15_t)0x7e30, (q15_t)0x7e2c, (q15_t)0x7e28, (q15_t)0x7e24, (q15_t)0x7e1f, + (q15_t)0x7e1b, (q15_t)0x7e17, (q15_t)0x7e12, (q15_t)0x7e0e, (q15_t)0x7e0a, (q15_t)0x7e05, (q15_t)0x7e01, (q15_t)0x7dfc, + (q15_t)0x7df8, (q15_t)0x7df3, (q15_t)0x7def, (q15_t)0x7dea, (q15_t)0x7de6, (q15_t)0x7de1, (q15_t)0x7ddd, (q15_t)0x7dd8, + (q15_t)0x7dd4, (q15_t)0x7dcf, (q15_t)0x7dca, (q15_t)0x7dc6, (q15_t)0x7dc1, (q15_t)0x7dbc, (q15_t)0x7db8, (q15_t)0x7db3, + (q15_t)0x7dae, (q15_t)0x7da9, (q15_t)0x7da5, (q15_t)0x7da0, (q15_t)0x7d9b, (q15_t)0x7d96, (q15_t)0x7d91, (q15_t)0x7d8c, + (q15_t)0x7d87, (q15_t)0x7d82, (q15_t)0x7d7e, (q15_t)0x7d79, (q15_t)0x7d74, (q15_t)0x7d6f, (q15_t)0x7d6a, (q15_t)0x7d65, + (q15_t)0x7d60, (q15_t)0x7d5a, (q15_t)0x7d55, (q15_t)0x7d50, (q15_t)0x7d4b, (q15_t)0x7d46, (q15_t)0x7d41, (q15_t)0x7d3c, + (q15_t)0x7d36, (q15_t)0x7d31, (q15_t)0x7d2c, (q15_t)0x7d27, (q15_t)0x7d21, (q15_t)0x7d1c, (q15_t)0x7d17, (q15_t)0x7d11, + (q15_t)0x7d0c, (q15_t)0x7d07, (q15_t)0x7d01, (q15_t)0x7cfc, (q15_t)0x7cf6, (q15_t)0x7cf1, (q15_t)0x7cec, (q15_t)0x7ce6, + (q15_t)0x7ce1, (q15_t)0x7cdb, (q15_t)0x7cd5, (q15_t)0x7cd0, (q15_t)0x7cca, (q15_t)0x7cc5, (q15_t)0x7cbf, (q15_t)0x7cb9, + (q15_t)0x7cb4, (q15_t)0x7cae, (q15_t)0x7ca8, (q15_t)0x7ca3, (q15_t)0x7c9d, (q15_t)0x7c97, (q15_t)0x7c91, (q15_t)0x7c8c, + (q15_t)0x7c86, (q15_t)0x7c80, (q15_t)0x7c7a, (q15_t)0x7c74, (q15_t)0x7c6e, (q15_t)0x7c69, (q15_t)0x7c63, (q15_t)0x7c5d, + (q15_t)0x7c57, (q15_t)0x7c51, (q15_t)0x7c4b, (q15_t)0x7c45, (q15_t)0x7c3f, (q15_t)0x7c39, (q15_t)0x7c33, (q15_t)0x7c2d, + (q15_t)0x7c26, (q15_t)0x7c20, (q15_t)0x7c1a, (q15_t)0x7c14, (q15_t)0x7c0e, (q15_t)0x7c08, (q15_t)0x7c01, (q15_t)0x7bfb, + (q15_t)0x7bf5, (q15_t)0x7bef, (q15_t)0x7be8, (q15_t)0x7be2, (q15_t)0x7bdc, (q15_t)0x7bd5, (q15_t)0x7bcf, (q15_t)0x7bc9, + (q15_t)0x7bc2, (q15_t)0x7bbc, (q15_t)0x7bb5, (q15_t)0x7baf, (q15_t)0x7ba8, (q15_t)0x7ba2, (q15_t)0x7b9b, (q15_t)0x7b95, + (q15_t)0x7b8e, (q15_t)0x7b88, (q15_t)0x7b81, (q15_t)0x7b7a, (q15_t)0x7b74, (q15_t)0x7b6d, (q15_t)0x7b67, (q15_t)0x7b60, + (q15_t)0x7b59, (q15_t)0x7b52, (q15_t)0x7b4c, (q15_t)0x7b45, (q15_t)0x7b3e, (q15_t)0x7b37, (q15_t)0x7b31, (q15_t)0x7b2a, + (q15_t)0x7b23, (q15_t)0x7b1c, (q15_t)0x7b15, (q15_t)0x7b0e, (q15_t)0x7b07, (q15_t)0x7b00, (q15_t)0x7af9, (q15_t)0x7af2, + (q15_t)0x7aeb, (q15_t)0x7ae4, (q15_t)0x7add, (q15_t)0x7ad6, (q15_t)0x7acf, (q15_t)0x7ac8, (q15_t)0x7ac1, (q15_t)0x7aba, + (q15_t)0x7ab3, (q15_t)0x7aac, (q15_t)0x7aa4, (q15_t)0x7a9d, (q15_t)0x7a96, (q15_t)0x7a8f, (q15_t)0x7a87, (q15_t)0x7a80, + (q15_t)0x7a79, (q15_t)0x7a72, (q15_t)0x7a6a, (q15_t)0x7a63, (q15_t)0x7a5c, (q15_t)0x7a54, (q15_t)0x7a4d, (q15_t)0x7a45, + (q15_t)0x7a3e, (q15_t)0x7a36, (q15_t)0x7a2f, (q15_t)0x7a27, (q15_t)0x7a20, (q15_t)0x7a18, (q15_t)0x7a11, (q15_t)0x7a09, + (q15_t)0x7a02, (q15_t)0x79fa, (q15_t)0x79f2, (q15_t)0x79eb, (q15_t)0x79e3, (q15_t)0x79db, (q15_t)0x79d4, (q15_t)0x79cc, + (q15_t)0x79c4, (q15_t)0x79bc, (q15_t)0x79b5, (q15_t)0x79ad, (q15_t)0x79a5, (q15_t)0x799d, (q15_t)0x7995, (q15_t)0x798e, + (q15_t)0x7986, (q15_t)0x797e, (q15_t)0x7976, (q15_t)0x796e, (q15_t)0x7966, (q15_t)0x795e, (q15_t)0x7956, (q15_t)0x794e, + (q15_t)0x7946, (q15_t)0x793e, (q15_t)0x7936, (q15_t)0x792e, (q15_t)0x7926, (q15_t)0x791e, (q15_t)0x7915, (q15_t)0x790d, + (q15_t)0x7905, (q15_t)0x78fd, (q15_t)0x78f5, (q15_t)0x78ec, (q15_t)0x78e4, (q15_t)0x78dc, (q15_t)0x78d4, (q15_t)0x78cb, + (q15_t)0x78c3, (q15_t)0x78bb, (q15_t)0x78b2, (q15_t)0x78aa, (q15_t)0x78a2, (q15_t)0x7899, (q15_t)0x7891, (q15_t)0x7888, + (q15_t)0x7880, (q15_t)0x7877, (q15_t)0x786f, (q15_t)0x7866, (q15_t)0x785e, (q15_t)0x7855, (q15_t)0x784d, (q15_t)0x7844, + (q15_t)0x783b, (q15_t)0x7833, (q15_t)0x782a, (q15_t)0x7821, (q15_t)0x7819, (q15_t)0x7810, (q15_t)0x7807, (q15_t)0x77ff, + (q15_t)0x77f6, (q15_t)0x77ed, (q15_t)0x77e4, (q15_t)0x77db, (q15_t)0x77d3, (q15_t)0x77ca, (q15_t)0x77c1, (q15_t)0x77b8, + (q15_t)0x77af, (q15_t)0x77a6, (q15_t)0x779d, (q15_t)0x7794, (q15_t)0x778b, (q15_t)0x7782, (q15_t)0x7779, (q15_t)0x7770, + (q15_t)0x7767, (q15_t)0x775e, (q15_t)0x7755, (q15_t)0x774c, (q15_t)0x7743, (q15_t)0x773a, (q15_t)0x7731, (q15_t)0x7727, + (q15_t)0x771e, (q15_t)0x7715, (q15_t)0x770c, (q15_t)0x7703, (q15_t)0x76f9, (q15_t)0x76f0, (q15_t)0x76e7, (q15_t)0x76dd, + (q15_t)0x76d4, (q15_t)0x76cb, (q15_t)0x76c1, (q15_t)0x76b8, (q15_t)0x76af, (q15_t)0x76a5, (q15_t)0x769c, (q15_t)0x7692, + (q15_t)0x7689, (q15_t)0x767f, (q15_t)0x7676, (q15_t)0x766c, (q15_t)0x7663, (q15_t)0x7659, (q15_t)0x7650, (q15_t)0x7646, + (q15_t)0x763c, (q15_t)0x7633, (q15_t)0x7629, (q15_t)0x761f, (q15_t)0x7616, (q15_t)0x760c, (q15_t)0x7602, (q15_t)0x75f9, + (q15_t)0x75ef, (q15_t)0x75e5, (q15_t)0x75db, (q15_t)0x75d1, (q15_t)0x75c8, (q15_t)0x75be, (q15_t)0x75b4, (q15_t)0x75aa, + (q15_t)0x75a0, (q15_t)0x7596, (q15_t)0x758c, (q15_t)0x7582, (q15_t)0x7578, (q15_t)0x756e, (q15_t)0x7564, (q15_t)0x755a, + (q15_t)0x7550, (q15_t)0x7546, (q15_t)0x753c, (q15_t)0x7532, (q15_t)0x7528, (q15_t)0x751e, (q15_t)0x7514, (q15_t)0x7509, + (q15_t)0x74ff, (q15_t)0x74f5, (q15_t)0x74eb, (q15_t)0x74e1, (q15_t)0x74d6, (q15_t)0x74cc, (q15_t)0x74c2, (q15_t)0x74b7, + (q15_t)0x74ad, (q15_t)0x74a3, (q15_t)0x7498, (q15_t)0x748e, (q15_t)0x7484, (q15_t)0x7479, (q15_t)0x746f, (q15_t)0x7464, + (q15_t)0x745a, (q15_t)0x744f, (q15_t)0x7445, (q15_t)0x743a, (q15_t)0x7430, (q15_t)0x7425, (q15_t)0x741b, (q15_t)0x7410, + (q15_t)0x7406, (q15_t)0x73fb, (q15_t)0x73f0, (q15_t)0x73e6, (q15_t)0x73db, (q15_t)0x73d0, (q15_t)0x73c6, (q15_t)0x73bb, + (q15_t)0x73b0, (q15_t)0x73a5, (q15_t)0x739b, (q15_t)0x7390, (q15_t)0x7385, (q15_t)0x737a, (q15_t)0x736f, (q15_t)0x7364, + (q15_t)0x7359, (q15_t)0x734f, (q15_t)0x7344, (q15_t)0x7339, (q15_t)0x732e, (q15_t)0x7323, (q15_t)0x7318, (q15_t)0x730d, + (q15_t)0x7302, (q15_t)0x72f7, (q15_t)0x72ec, (q15_t)0x72e1, (q15_t)0x72d5, (q15_t)0x72ca, (q15_t)0x72bf, (q15_t)0x72b4, + (q15_t)0x72a9, (q15_t)0x729e, (q15_t)0x7293, (q15_t)0x7287, (q15_t)0x727c, (q15_t)0x7271, (q15_t)0x7266, (q15_t)0x725a, + (q15_t)0x724f, (q15_t)0x7244, (q15_t)0x7238, (q15_t)0x722d, (q15_t)0x7222, (q15_t)0x7216, (q15_t)0x720b, (q15_t)0x71ff, + (q15_t)0x71f4, (q15_t)0x71e9, (q15_t)0x71dd, (q15_t)0x71d2, (q15_t)0x71c6, (q15_t)0x71bb, (q15_t)0x71af, (q15_t)0x71a3, + (q15_t)0x7198, (q15_t)0x718c, (q15_t)0x7181, (q15_t)0x7175, (q15_t)0x7169, (q15_t)0x715e, (q15_t)0x7152, (q15_t)0x7146, + (q15_t)0x713b, (q15_t)0x712f, (q15_t)0x7123, (q15_t)0x7117, (q15_t)0x710c, (q15_t)0x7100, (q15_t)0x70f4, (q15_t)0x70e8, + (q15_t)0x70dc, (q15_t)0x70d1, (q15_t)0x70c5, (q15_t)0x70b9, (q15_t)0x70ad, (q15_t)0x70a1, (q15_t)0x7095, (q15_t)0x7089, + (q15_t)0x707d, (q15_t)0x7071, (q15_t)0x7065, (q15_t)0x7059, (q15_t)0x704d, (q15_t)0x7041, (q15_t)0x7035, (q15_t)0x7029, + (q15_t)0x701d, (q15_t)0x7010, (q15_t)0x7004, (q15_t)0x6ff8, (q15_t)0x6fec, (q15_t)0x6fe0, (q15_t)0x6fd3, (q15_t)0x6fc7, + (q15_t)0x6fbb, (q15_t)0x6faf, (q15_t)0x6fa2, (q15_t)0x6f96, (q15_t)0x6f8a, (q15_t)0x6f7d, (q15_t)0x6f71, (q15_t)0x6f65, + (q15_t)0x6f58, (q15_t)0x6f4c, (q15_t)0x6f3f, (q15_t)0x6f33, (q15_t)0x6f27, (q15_t)0x6f1a, (q15_t)0x6f0e, (q15_t)0x6f01, + (q15_t)0x6ef5, (q15_t)0x6ee8, (q15_t)0x6edc, (q15_t)0x6ecf, (q15_t)0x6ec2, (q15_t)0x6eb6, (q15_t)0x6ea9, (q15_t)0x6e9c, + (q15_t)0x6e90, (q15_t)0x6e83, (q15_t)0x6e76, (q15_t)0x6e6a, (q15_t)0x6e5d, (q15_t)0x6e50, (q15_t)0x6e44, (q15_t)0x6e37, + (q15_t)0x6e2a, (q15_t)0x6e1d, (q15_t)0x6e10, (q15_t)0x6e04, (q15_t)0x6df7, (q15_t)0x6dea, (q15_t)0x6ddd, (q15_t)0x6dd0, + (q15_t)0x6dc3, (q15_t)0x6db6, (q15_t)0x6da9, (q15_t)0x6d9c, (q15_t)0x6d8f, (q15_t)0x6d82, (q15_t)0x6d75, (q15_t)0x6d68, + (q15_t)0x6d5b, (q15_t)0x6d4e, (q15_t)0x6d41, (q15_t)0x6d34, (q15_t)0x6d27, (q15_t)0x6d1a, (q15_t)0x6d0c, (q15_t)0x6cff, + (q15_t)0x6cf2, (q15_t)0x6ce5, (q15_t)0x6cd8, (q15_t)0x6cca, (q15_t)0x6cbd, (q15_t)0x6cb0, (q15_t)0x6ca3, (q15_t)0x6c95, + (q15_t)0x6c88, (q15_t)0x6c7b, (q15_t)0x6c6d, (q15_t)0x6c60, (q15_t)0x6c53, (q15_t)0x6c45, (q15_t)0x6c38, (q15_t)0x6c2a, + (q15_t)0x6c1d, (q15_t)0x6c0f, (q15_t)0x6c02, (q15_t)0x6bf5, (q15_t)0x6be7, (q15_t)0x6bd9, (q15_t)0x6bcc, (q15_t)0x6bbe, + (q15_t)0x6bb1, (q15_t)0x6ba3, (q15_t)0x6b96, (q15_t)0x6b88, (q15_t)0x6b7a, (q15_t)0x6b6d, (q15_t)0x6b5f, (q15_t)0x6b51, + (q15_t)0x6b44, (q15_t)0x6b36, (q15_t)0x6b28, (q15_t)0x6b1a, (q15_t)0x6b0d, (q15_t)0x6aff, (q15_t)0x6af1, (q15_t)0x6ae3, + (q15_t)0x6ad5, (q15_t)0x6ac8, (q15_t)0x6aba, (q15_t)0x6aac, (q15_t)0x6a9e, (q15_t)0x6a90, (q15_t)0x6a82, (q15_t)0x6a74, + (q15_t)0x6a66, (q15_t)0x6a58, (q15_t)0x6a4a, (q15_t)0x6a3c, (q15_t)0x6a2e, (q15_t)0x6a20, (q15_t)0x6a12, (q15_t)0x6a04, + (q15_t)0x69f6, (q15_t)0x69e8, (q15_t)0x69da, (q15_t)0x69cb, (q15_t)0x69bd, (q15_t)0x69af, (q15_t)0x69a1, (q15_t)0x6993, + (q15_t)0x6985, (q15_t)0x6976, (q15_t)0x6968, (q15_t)0x695a, (q15_t)0x694b, (q15_t)0x693d, (q15_t)0x692f, (q15_t)0x6921, + (q15_t)0x6912, (q15_t)0x6904, (q15_t)0x68f5, (q15_t)0x68e7, (q15_t)0x68d9, (q15_t)0x68ca, (q15_t)0x68bc, (q15_t)0x68ad, + (q15_t)0x689f, (q15_t)0x6890, (q15_t)0x6882, (q15_t)0x6873, (q15_t)0x6865, (q15_t)0x6856, (q15_t)0x6848, (q15_t)0x6839, + (q15_t)0x682b, (q15_t)0x681c, (q15_t)0x680d, (q15_t)0x67ff, (q15_t)0x67f0, (q15_t)0x67e1, (q15_t)0x67d3, (q15_t)0x67c4, + (q15_t)0x67b5, (q15_t)0x67a6, (q15_t)0x6798, (q15_t)0x6789, (q15_t)0x677a, (q15_t)0x676b, (q15_t)0x675d, (q15_t)0x674e, + (q15_t)0x673f, (q15_t)0x6730, (q15_t)0x6721, (q15_t)0x6712, (q15_t)0x6703, (q15_t)0x66f4, (q15_t)0x66e5, (q15_t)0x66d6, + (q15_t)0x66c8, (q15_t)0x66b9, (q15_t)0x66aa, (q15_t)0x669b, (q15_t)0x668b, (q15_t)0x667c, (q15_t)0x666d, (q15_t)0x665e, + (q15_t)0x664f, (q15_t)0x6640, (q15_t)0x6631, (q15_t)0x6622, (q15_t)0x6613, (q15_t)0x6603, (q15_t)0x65f4, (q15_t)0x65e5, + (q15_t)0x65d6, (q15_t)0x65c7, (q15_t)0x65b7, (q15_t)0x65a8, (q15_t)0x6599, (q15_t)0x658a, (q15_t)0x657a, (q15_t)0x656b, + (q15_t)0x655c, (q15_t)0x654c, (q15_t)0x653d, (q15_t)0x652d, (q15_t)0x651e, (q15_t)0x650f, (q15_t)0x64ff, (q15_t)0x64f0, + (q15_t)0x64e0, (q15_t)0x64d1, (q15_t)0x64c1, (q15_t)0x64b2, (q15_t)0x64a2, (q15_t)0x6493, (q15_t)0x6483, (q15_t)0x6474, + (q15_t)0x6464, (q15_t)0x6454, (q15_t)0x6445, (q15_t)0x6435, (q15_t)0x6426, (q15_t)0x6416, (q15_t)0x6406, (q15_t)0x63f7, + (q15_t)0x63e7, (q15_t)0x63d7, (q15_t)0x63c7, (q15_t)0x63b8, (q15_t)0x63a8, (q15_t)0x6398, (q15_t)0x6388, (q15_t)0x6378, + (q15_t)0x6369, (q15_t)0x6359, (q15_t)0x6349, (q15_t)0x6339, (q15_t)0x6329, (q15_t)0x6319, (q15_t)0x6309, (q15_t)0x62f9, + (q15_t)0x62ea, (q15_t)0x62da, (q15_t)0x62ca, (q15_t)0x62ba, (q15_t)0x62aa, (q15_t)0x629a, (q15_t)0x628a, (q15_t)0x627a, + (q15_t)0x6269, (q15_t)0x6259, (q15_t)0x6249, (q15_t)0x6239, (q15_t)0x6229, (q15_t)0x6219, (q15_t)0x6209, (q15_t)0x61f9, + (q15_t)0x61e8, (q15_t)0x61d8, (q15_t)0x61c8, (q15_t)0x61b8, (q15_t)0x61a8, (q15_t)0x6197, (q15_t)0x6187, (q15_t)0x6177, + (q15_t)0x6166, (q15_t)0x6156, (q15_t)0x6146, (q15_t)0x6135, (q15_t)0x6125, (q15_t)0x6115, (q15_t)0x6104, (q15_t)0x60f4, + (q15_t)0x60e4, (q15_t)0x60d3, (q15_t)0x60c3, (q15_t)0x60b2, (q15_t)0x60a2, (q15_t)0x6091, (q15_t)0x6081, (q15_t)0x6070, + (q15_t)0x6060, (q15_t)0x604f, (q15_t)0x603f, (q15_t)0x602e, (q15_t)0x601d, (q15_t)0x600d, (q15_t)0x5ffc, (q15_t)0x5fec, + (q15_t)0x5fdb, (q15_t)0x5fca, (q15_t)0x5fba, (q15_t)0x5fa9, (q15_t)0x5f98, (q15_t)0x5f87, (q15_t)0x5f77, (q15_t)0x5f66, + (q15_t)0x5f55, (q15_t)0x5f44, (q15_t)0x5f34, (q15_t)0x5f23, (q15_t)0x5f12, (q15_t)0x5f01, (q15_t)0x5ef0, (q15_t)0x5edf, + (q15_t)0x5ecf, (q15_t)0x5ebe, (q15_t)0x5ead, (q15_t)0x5e9c, (q15_t)0x5e8b, (q15_t)0x5e7a, (q15_t)0x5e69, (q15_t)0x5e58, + (q15_t)0x5e47, (q15_t)0x5e36, (q15_t)0x5e25, (q15_t)0x5e14, (q15_t)0x5e03, (q15_t)0x5df2, (q15_t)0x5de1, (q15_t)0x5dd0, + (q15_t)0x5dbf, (q15_t)0x5dad, (q15_t)0x5d9c, (q15_t)0x5d8b, (q15_t)0x5d7a, (q15_t)0x5d69, (q15_t)0x5d58, (q15_t)0x5d46, + (q15_t)0x5d35, (q15_t)0x5d24, (q15_t)0x5d13, (q15_t)0x5d01, (q15_t)0x5cf0, (q15_t)0x5cdf, (q15_t)0x5cce, (q15_t)0x5cbc, + (q15_t)0x5cab, (q15_t)0x5c9a, (q15_t)0x5c88, (q15_t)0x5c77, (q15_t)0x5c66, (q15_t)0x5c54, (q15_t)0x5c43, (q15_t)0x5c31, + (q15_t)0x5c20, (q15_t)0x5c0e, (q15_t)0x5bfd, (q15_t)0x5beb, (q15_t)0x5bda, (q15_t)0x5bc8, (q15_t)0x5bb7, (q15_t)0x5ba5, + (q15_t)0x5b94, (q15_t)0x5b82, (q15_t)0x5b71, (q15_t)0x5b5f, (q15_t)0x5b4d, (q15_t)0x5b3c, (q15_t)0x5b2a, (q15_t)0x5b19, + (q15_t)0x5b07, (q15_t)0x5af5, (q15_t)0x5ae4, (q15_t)0x5ad2, (q15_t)0x5ac0, (q15_t)0x5aae, (q15_t)0x5a9d, (q15_t)0x5a8b, + (q15_t)0x5a79, (q15_t)0x5a67, (q15_t)0x5a56, (q15_t)0x5a44, (q15_t)0x5a32, (q15_t)0x5a20, (q15_t)0x5a0e, (q15_t)0x59fc, + (q15_t)0x59ea, (q15_t)0x59d9, (q15_t)0x59c7, (q15_t)0x59b5, (q15_t)0x59a3, (q15_t)0x5991, (q15_t)0x597f, (q15_t)0x596d, + (q15_t)0x595b, (q15_t)0x5949, (q15_t)0x5937, (q15_t)0x5925, (q15_t)0x5913, (q15_t)0x5901, (q15_t)0x58ef, (q15_t)0x58dd, + (q15_t)0x58cb, (q15_t)0x58b8, (q15_t)0x58a6, (q15_t)0x5894, (q15_t)0x5882, (q15_t)0x5870, (q15_t)0x585e, (q15_t)0x584b, + (q15_t)0x5839, (q15_t)0x5827, (q15_t)0x5815, (q15_t)0x5803, (q15_t)0x57f0, (q15_t)0x57de, (q15_t)0x57cc, (q15_t)0x57b9, + (q15_t)0x57a7, (q15_t)0x5795, (q15_t)0x5783, (q15_t)0x5770, (q15_t)0x575e, (q15_t)0x574b, (q15_t)0x5739, (q15_t)0x5727, + (q15_t)0x5714, (q15_t)0x5702, (q15_t)0x56ef, (q15_t)0x56dd, (q15_t)0x56ca, (q15_t)0x56b8, (q15_t)0x56a5, (q15_t)0x5693, + (q15_t)0x5680, (q15_t)0x566e, (q15_t)0x565b, (q15_t)0x5649, (q15_t)0x5636, (q15_t)0x5624, (q15_t)0x5611, (q15_t)0x55fe, + (q15_t)0x55ec, (q15_t)0x55d9, (q15_t)0x55c7, (q15_t)0x55b4, (q15_t)0x55a1, (q15_t)0x558f, (q15_t)0x557c, (q15_t)0x5569, + (q15_t)0x5556, (q15_t)0x5544, (q15_t)0x5531, (q15_t)0x551e, (q15_t)0x550b, (q15_t)0x54f9, (q15_t)0x54e6, (q15_t)0x54d3, + (q15_t)0x54c0, (q15_t)0x54ad, (q15_t)0x549a, (q15_t)0x5488, (q15_t)0x5475, (q15_t)0x5462, (q15_t)0x544f, (q15_t)0x543c, + (q15_t)0x5429, (q15_t)0x5416, (q15_t)0x5403, (q15_t)0x53f0, (q15_t)0x53dd, (q15_t)0x53ca, (q15_t)0x53b7, (q15_t)0x53a4, + (q15_t)0x5391, (q15_t)0x537e, (q15_t)0x536b, (q15_t)0x5358, (q15_t)0x5345, (q15_t)0x5332, (q15_t)0x531f, (q15_t)0x530c, + (q15_t)0x52f8, (q15_t)0x52e5, (q15_t)0x52d2, (q15_t)0x52bf, (q15_t)0x52ac, (q15_t)0x5299, (q15_t)0x5285, (q15_t)0x5272, + (q15_t)0x525f, (q15_t)0x524c, (q15_t)0x5238, (q15_t)0x5225, (q15_t)0x5212, (q15_t)0x51ff, (q15_t)0x51eb, (q15_t)0x51d8, + (q15_t)0x51c5, (q15_t)0x51b1, (q15_t)0x519e, (q15_t)0x518b, (q15_t)0x5177, (q15_t)0x5164, (q15_t)0x5150, (q15_t)0x513d, + (q15_t)0x512a, (q15_t)0x5116, (q15_t)0x5103, (q15_t)0x50ef, (q15_t)0x50dc, (q15_t)0x50c8, (q15_t)0x50b5, (q15_t)0x50a1, + (q15_t)0x508e, (q15_t)0x507a, (q15_t)0x5067, (q15_t)0x5053, (q15_t)0x503f, (q15_t)0x502c, (q15_t)0x5018, (q15_t)0x5005, + (q15_t)0x4ff1, (q15_t)0x4fdd, (q15_t)0x4fca, (q15_t)0x4fb6, (q15_t)0x4fa2, (q15_t)0x4f8f, (q15_t)0x4f7b, (q15_t)0x4f67, + (q15_t)0x4f54, (q15_t)0x4f40, (q15_t)0x4f2c, (q15_t)0x4f18, (q15_t)0x4f05, (q15_t)0x4ef1, (q15_t)0x4edd, (q15_t)0x4ec9, + (q15_t)0x4eb6, (q15_t)0x4ea2, (q15_t)0x4e8e, (q15_t)0x4e7a, (q15_t)0x4e66, (q15_t)0x4e52, (q15_t)0x4e3e, (q15_t)0x4e2a, + (q15_t)0x4e17, (q15_t)0x4e03, (q15_t)0x4def, (q15_t)0x4ddb, (q15_t)0x4dc7, (q15_t)0x4db3, (q15_t)0x4d9f, (q15_t)0x4d8b, + (q15_t)0x4d77, (q15_t)0x4d63, (q15_t)0x4d4f, (q15_t)0x4d3b, (q15_t)0x4d27, (q15_t)0x4d13, (q15_t)0x4cff, (q15_t)0x4ceb, + (q15_t)0x4cd6, (q15_t)0x4cc2, (q15_t)0x4cae, (q15_t)0x4c9a, (q15_t)0x4c86, (q15_t)0x4c72, (q15_t)0x4c5e, (q15_t)0x4c49, + (q15_t)0x4c35, (q15_t)0x4c21, (q15_t)0x4c0d, (q15_t)0x4bf9, (q15_t)0x4be4, (q15_t)0x4bd0, (q15_t)0x4bbc, (q15_t)0x4ba8, + (q15_t)0x4b93, (q15_t)0x4b7f, (q15_t)0x4b6b, (q15_t)0x4b56, (q15_t)0x4b42, (q15_t)0x4b2e, (q15_t)0x4b19, (q15_t)0x4b05, + (q15_t)0x4af1, (q15_t)0x4adc, (q15_t)0x4ac8, (q15_t)0x4ab4, (q15_t)0x4a9f, (q15_t)0x4a8b, (q15_t)0x4a76, (q15_t)0x4a62, + (q15_t)0x4a4d, (q15_t)0x4a39, (q15_t)0x4a24, (q15_t)0x4a10, (q15_t)0x49fb, (q15_t)0x49e7, (q15_t)0x49d2, (q15_t)0x49be, + (q15_t)0x49a9, (q15_t)0x4995, (q15_t)0x4980, (q15_t)0x496c, (q15_t)0x4957, (q15_t)0x4942, (q15_t)0x492e, (q15_t)0x4919, + (q15_t)0x4905, (q15_t)0x48f0, (q15_t)0x48db, (q15_t)0x48c7, (q15_t)0x48b2, (q15_t)0x489d, (q15_t)0x4888, (q15_t)0x4874, + (q15_t)0x485f, (q15_t)0x484a, (q15_t)0x4836, (q15_t)0x4821, (q15_t)0x480c, (q15_t)0x47f7, (q15_t)0x47e2, (q15_t)0x47ce, + (q15_t)0x47b9, (q15_t)0x47a4, (q15_t)0x478f, (q15_t)0x477a, (q15_t)0x4765, (q15_t)0x4751, (q15_t)0x473c, (q15_t)0x4727, + (q15_t)0x4712, (q15_t)0x46fd, (q15_t)0x46e8, (q15_t)0x46d3, (q15_t)0x46be, (q15_t)0x46a9, (q15_t)0x4694, (q15_t)0x467f, + (q15_t)0x466a, (q15_t)0x4655, (q15_t)0x4640, (q15_t)0x462b, (q15_t)0x4616, (q15_t)0x4601, (q15_t)0x45ec, (q15_t)0x45d7, + (q15_t)0x45c2, (q15_t)0x45ad, (q15_t)0x4598, (q15_t)0x4583, (q15_t)0x456e, (q15_t)0x4559, (q15_t)0x4544, (q15_t)0x452e, + (q15_t)0x4519, (q15_t)0x4504, (q15_t)0x44ef, (q15_t)0x44da, (q15_t)0x44c5, (q15_t)0x44af, (q15_t)0x449a, (q15_t)0x4485, + (q15_t)0x4470, (q15_t)0x445a, (q15_t)0x4445, (q15_t)0x4430, (q15_t)0x441b, (q15_t)0x4405, (q15_t)0x43f0, (q15_t)0x43db, + (q15_t)0x43c5, (q15_t)0x43b0, (q15_t)0x439b, (q15_t)0x4385, (q15_t)0x4370, (q15_t)0x435b, (q15_t)0x4345, (q15_t)0x4330, + (q15_t)0x431b, (q15_t)0x4305, (q15_t)0x42f0, (q15_t)0x42da, (q15_t)0x42c5, (q15_t)0x42af, (q15_t)0x429a, (q15_t)0x4284, + (q15_t)0x426f, (q15_t)0x425a, (q15_t)0x4244, (q15_t)0x422f, (q15_t)0x4219, (q15_t)0x4203, (q15_t)0x41ee, (q15_t)0x41d8, + (q15_t)0x41c3, (q15_t)0x41ad, (q15_t)0x4198, (q15_t)0x4182, (q15_t)0x416d, (q15_t)0x4157, (q15_t)0x4141, (q15_t)0x412c, + (q15_t)0x4116, (q15_t)0x4100, (q15_t)0x40eb, (q15_t)0x40d5, (q15_t)0x40bf, (q15_t)0x40aa, (q15_t)0x4094, (q15_t)0x407e, + (q15_t)0x4069, (q15_t)0x4053, (q15_t)0x403d, (q15_t)0x4027, (q15_t)0x4012, (q15_t)0x3ffc, (q15_t)0x3fe6, (q15_t)0x3fd0, + (q15_t)0x3fbb, (q15_t)0x3fa5, (q15_t)0x3f8f, (q15_t)0x3f79, (q15_t)0x3f63, (q15_t)0x3f4d, (q15_t)0x3f38, (q15_t)0x3f22, + (q15_t)0x3f0c, (q15_t)0x3ef6, (q15_t)0x3ee0, (q15_t)0x3eca, (q15_t)0x3eb4, (q15_t)0x3e9e, (q15_t)0x3e88, (q15_t)0x3e73, + (q15_t)0x3e5d, (q15_t)0x3e47, (q15_t)0x3e31, (q15_t)0x3e1b, (q15_t)0x3e05, (q15_t)0x3def, (q15_t)0x3dd9, (q15_t)0x3dc3, + (q15_t)0x3dad, (q15_t)0x3d97, (q15_t)0x3d81, (q15_t)0x3d6b, (q15_t)0x3d55, (q15_t)0x3d3e, (q15_t)0x3d28, (q15_t)0x3d12, + (q15_t)0x3cfc, (q15_t)0x3ce6, (q15_t)0x3cd0, (q15_t)0x3cba, (q15_t)0x3ca4, (q15_t)0x3c8e, (q15_t)0x3c77, (q15_t)0x3c61, + (q15_t)0x3c4b, (q15_t)0x3c35, (q15_t)0x3c1f, (q15_t)0x3c09, (q15_t)0x3bf2, (q15_t)0x3bdc, (q15_t)0x3bc6, (q15_t)0x3bb0, + (q15_t)0x3b99, (q15_t)0x3b83, (q15_t)0x3b6d, (q15_t)0x3b57, (q15_t)0x3b40, (q15_t)0x3b2a, (q15_t)0x3b14, (q15_t)0x3afe, + (q15_t)0x3ae7, (q15_t)0x3ad1, (q15_t)0x3abb, (q15_t)0x3aa4, (q15_t)0x3a8e, (q15_t)0x3a78, (q15_t)0x3a61, (q15_t)0x3a4b, + (q15_t)0x3a34, (q15_t)0x3a1e, (q15_t)0x3a08, (q15_t)0x39f1, (q15_t)0x39db, (q15_t)0x39c4, (q15_t)0x39ae, (q15_t)0x3998, + (q15_t)0x3981, (q15_t)0x396b, (q15_t)0x3954, (q15_t)0x393e, (q15_t)0x3927, (q15_t)0x3911, (q15_t)0x38fa, (q15_t)0x38e4, + (q15_t)0x38cd, (q15_t)0x38b7, (q15_t)0x38a0, (q15_t)0x388a, (q15_t)0x3873, (q15_t)0x385d, (q15_t)0x3846, (q15_t)0x382f, + (q15_t)0x3819, (q15_t)0x3802, (q15_t)0x37ec, (q15_t)0x37d5, (q15_t)0x37be, (q15_t)0x37a8, (q15_t)0x3791, (q15_t)0x377a, + (q15_t)0x3764, (q15_t)0x374d, (q15_t)0x3736, (q15_t)0x3720, (q15_t)0x3709, (q15_t)0x36f2, (q15_t)0x36dc, (q15_t)0x36c5, + (q15_t)0x36ae, (q15_t)0x3698, (q15_t)0x3681, (q15_t)0x366a, (q15_t)0x3653, (q15_t)0x363d, (q15_t)0x3626, (q15_t)0x360f, + (q15_t)0x35f8, (q15_t)0x35e1, (q15_t)0x35cb, (q15_t)0x35b4, (q15_t)0x359d, (q15_t)0x3586, (q15_t)0x356f, (q15_t)0x3558, + (q15_t)0x3542, (q15_t)0x352b, (q15_t)0x3514, (q15_t)0x34fd, (q15_t)0x34e6, (q15_t)0x34cf, (q15_t)0x34b8, (q15_t)0x34a1, + (q15_t)0x348b, (q15_t)0x3474, (q15_t)0x345d, (q15_t)0x3446, (q15_t)0x342f, (q15_t)0x3418, (q15_t)0x3401, (q15_t)0x33ea, + (q15_t)0x33d3, (q15_t)0x33bc, (q15_t)0x33a5, (q15_t)0x338e, (q15_t)0x3377, (q15_t)0x3360, (q15_t)0x3349, (q15_t)0x3332, + (q15_t)0x331b, (q15_t)0x3304, (q15_t)0x32ed, (q15_t)0x32d6, (q15_t)0x32bf, (q15_t)0x32a8, (q15_t)0x3290, (q15_t)0x3279, + (q15_t)0x3262, (q15_t)0x324b, (q15_t)0x3234, (q15_t)0x321d, (q15_t)0x3206, (q15_t)0x31ef, (q15_t)0x31d8, (q15_t)0x31c0, + (q15_t)0x31a9, (q15_t)0x3192, (q15_t)0x317b, (q15_t)0x3164, (q15_t)0x314c, (q15_t)0x3135, (q15_t)0x311e, (q15_t)0x3107, + (q15_t)0x30f0, (q15_t)0x30d8, (q15_t)0x30c1, (q15_t)0x30aa, (q15_t)0x3093, (q15_t)0x307b, (q15_t)0x3064, (q15_t)0x304d, + (q15_t)0x3036, (q15_t)0x301e, (q15_t)0x3007, (q15_t)0x2ff0, (q15_t)0x2fd8, (q15_t)0x2fc1, (q15_t)0x2faa, (q15_t)0x2f92, + (q15_t)0x2f7b, (q15_t)0x2f64, (q15_t)0x2f4c, (q15_t)0x2f35, (q15_t)0x2f1e, (q15_t)0x2f06, (q15_t)0x2eef, (q15_t)0x2ed8, + (q15_t)0x2ec0, (q15_t)0x2ea9, (q15_t)0x2e91, (q15_t)0x2e7a, (q15_t)0x2e63, (q15_t)0x2e4b, (q15_t)0x2e34, (q15_t)0x2e1c, + (q15_t)0x2e05, (q15_t)0x2ded, (q15_t)0x2dd6, (q15_t)0x2dbe, (q15_t)0x2da7, (q15_t)0x2d8f, (q15_t)0x2d78, (q15_t)0x2d60, + (q15_t)0x2d49, (q15_t)0x2d31, (q15_t)0x2d1a, (q15_t)0x2d02, (q15_t)0x2ceb, (q15_t)0x2cd3, (q15_t)0x2cbc, (q15_t)0x2ca4, + (q15_t)0x2c8d, (q15_t)0x2c75, (q15_t)0x2c5e, (q15_t)0x2c46, (q15_t)0x2c2e, (q15_t)0x2c17, (q15_t)0x2bff, (q15_t)0x2be8, + (q15_t)0x2bd0, (q15_t)0x2bb8, (q15_t)0x2ba1, (q15_t)0x2b89, (q15_t)0x2b71, (q15_t)0x2b5a, (q15_t)0x2b42, (q15_t)0x2b2b, + (q15_t)0x2b13, (q15_t)0x2afb, (q15_t)0x2ae4, (q15_t)0x2acc, (q15_t)0x2ab4, (q15_t)0x2a9c, (q15_t)0x2a85, (q15_t)0x2a6d, + (q15_t)0x2a55, (q15_t)0x2a3e, (q15_t)0x2a26, (q15_t)0x2a0e, (q15_t)0x29f6, (q15_t)0x29df, (q15_t)0x29c7, (q15_t)0x29af, + (q15_t)0x2997, (q15_t)0x2980, (q15_t)0x2968, (q15_t)0x2950, (q15_t)0x2938, (q15_t)0x2920, (q15_t)0x2909, (q15_t)0x28f1, + (q15_t)0x28d9, (q15_t)0x28c1, (q15_t)0x28a9, (q15_t)0x2892, (q15_t)0x287a, (q15_t)0x2862, (q15_t)0x284a, (q15_t)0x2832, + (q15_t)0x281a, (q15_t)0x2802, (q15_t)0x27eb, (q15_t)0x27d3, (q15_t)0x27bb, (q15_t)0x27a3, (q15_t)0x278b, (q15_t)0x2773, + (q15_t)0x275b, (q15_t)0x2743, (q15_t)0x272b, (q15_t)0x2713, (q15_t)0x26fb, (q15_t)0x26e4, (q15_t)0x26cc, (q15_t)0x26b4, + (q15_t)0x269c, (q15_t)0x2684, (q15_t)0x266c, (q15_t)0x2654, (q15_t)0x263c, (q15_t)0x2624, (q15_t)0x260c, (q15_t)0x25f4, + (q15_t)0x25dc, (q15_t)0x25c4, (q15_t)0x25ac, (q15_t)0x2594, (q15_t)0x257c, (q15_t)0x2564, (q15_t)0x254c, (q15_t)0x2534, + (q15_t)0x251c, (q15_t)0x2503, (q15_t)0x24eb, (q15_t)0x24d3, (q15_t)0x24bb, (q15_t)0x24a3, (q15_t)0x248b, (q15_t)0x2473, + (q15_t)0x245b, (q15_t)0x2443, (q15_t)0x242b, (q15_t)0x2413, (q15_t)0x23fa, (q15_t)0x23e2, (q15_t)0x23ca, (q15_t)0x23b2, + (q15_t)0x239a, (q15_t)0x2382, (q15_t)0x236a, (q15_t)0x2352, (q15_t)0x2339, (q15_t)0x2321, (q15_t)0x2309, (q15_t)0x22f1, + (q15_t)0x22d9, (q15_t)0x22c0, (q15_t)0x22a8, (q15_t)0x2290, (q15_t)0x2278, (q15_t)0x2260, (q15_t)0x2247, (q15_t)0x222f, + (q15_t)0x2217, (q15_t)0x21ff, (q15_t)0x21e7, (q15_t)0x21ce, (q15_t)0x21b6, (q15_t)0x219e, (q15_t)0x2186, (q15_t)0x216d, + (q15_t)0x2155, (q15_t)0x213d, (q15_t)0x2125, (q15_t)0x210c, (q15_t)0x20f4, (q15_t)0x20dc, (q15_t)0x20c3, (q15_t)0x20ab, + (q15_t)0x2093, (q15_t)0x207a, (q15_t)0x2062, (q15_t)0x204a, (q15_t)0x2032, (q15_t)0x2019, (q15_t)0x2001, (q15_t)0x1fe9, + (q15_t)0x1fd0, (q15_t)0x1fb8, (q15_t)0x1f9f, (q15_t)0x1f87, (q15_t)0x1f6f, (q15_t)0x1f56, (q15_t)0x1f3e, (q15_t)0x1f26, + (q15_t)0x1f0d, (q15_t)0x1ef5, (q15_t)0x1edd, (q15_t)0x1ec4, (q15_t)0x1eac, (q15_t)0x1e93, (q15_t)0x1e7b, (q15_t)0x1e62, + (q15_t)0x1e4a, (q15_t)0x1e32, (q15_t)0x1e19, (q15_t)0x1e01, (q15_t)0x1de8, (q15_t)0x1dd0, (q15_t)0x1db7, (q15_t)0x1d9f, + (q15_t)0x1d87, (q15_t)0x1d6e, (q15_t)0x1d56, (q15_t)0x1d3d, (q15_t)0x1d25, (q15_t)0x1d0c, (q15_t)0x1cf4, (q15_t)0x1cdb, + (q15_t)0x1cc3, (q15_t)0x1caa, (q15_t)0x1c92, (q15_t)0x1c79, (q15_t)0x1c61, (q15_t)0x1c48, (q15_t)0x1c30, (q15_t)0x1c17, + (q15_t)0x1bff, (q15_t)0x1be6, (q15_t)0x1bce, (q15_t)0x1bb5, (q15_t)0x1b9d, (q15_t)0x1b84, (q15_t)0x1b6c, (q15_t)0x1b53, + (q15_t)0x1b3a, (q15_t)0x1b22, (q15_t)0x1b09, (q15_t)0x1af1, (q15_t)0x1ad8, (q15_t)0x1ac0, (q15_t)0x1aa7, (q15_t)0x1a8e, + (q15_t)0x1a76, (q15_t)0x1a5d, (q15_t)0x1a45, (q15_t)0x1a2c, (q15_t)0x1a13, (q15_t)0x19fb, (q15_t)0x19e2, (q15_t)0x19ca, + (q15_t)0x19b1, (q15_t)0x1998, (q15_t)0x1980, (q15_t)0x1967, (q15_t)0x194e, (q15_t)0x1936, (q15_t)0x191d, (q15_t)0x1905, + (q15_t)0x18ec, (q15_t)0x18d3, (q15_t)0x18bb, (q15_t)0x18a2, (q15_t)0x1889, (q15_t)0x1871, (q15_t)0x1858, (q15_t)0x183f, + (q15_t)0x1827, (q15_t)0x180e, (q15_t)0x17f5, (q15_t)0x17dd, (q15_t)0x17c4, (q15_t)0x17ab, (q15_t)0x1792, (q15_t)0x177a, + (q15_t)0x1761, (q15_t)0x1748, (q15_t)0x1730, (q15_t)0x1717, (q15_t)0x16fe, (q15_t)0x16e5, (q15_t)0x16cd, (q15_t)0x16b4, + (q15_t)0x169b, (q15_t)0x1682, (q15_t)0x166a, (q15_t)0x1651, (q15_t)0x1638, (q15_t)0x161f, (q15_t)0x1607, (q15_t)0x15ee, + (q15_t)0x15d5, (q15_t)0x15bc, (q15_t)0x15a4, (q15_t)0x158b, (q15_t)0x1572, (q15_t)0x1559, (q15_t)0x1541, (q15_t)0x1528, + (q15_t)0x150f, (q15_t)0x14f6, (q15_t)0x14dd, (q15_t)0x14c5, (q15_t)0x14ac, (q15_t)0x1493, (q15_t)0x147a, (q15_t)0x1461, + (q15_t)0x1449, (q15_t)0x1430, (q15_t)0x1417, (q15_t)0x13fe, (q15_t)0x13e5, (q15_t)0x13cc, (q15_t)0x13b4, (q15_t)0x139b, + (q15_t)0x1382, (q15_t)0x1369, (q15_t)0x1350, (q15_t)0x1337, (q15_t)0x131f, (q15_t)0x1306, (q15_t)0x12ed, (q15_t)0x12d4, + (q15_t)0x12bb, (q15_t)0x12a2, (q15_t)0x1289, (q15_t)0x1271, (q15_t)0x1258, (q15_t)0x123f, (q15_t)0x1226, (q15_t)0x120d, + (q15_t)0x11f4, (q15_t)0x11db, (q15_t)0x11c2, (q15_t)0x11a9, (q15_t)0x1191, (q15_t)0x1178, (q15_t)0x115f, (q15_t)0x1146, + (q15_t)0x112d, (q15_t)0x1114, (q15_t)0x10fb, (q15_t)0x10e2, (q15_t)0x10c9, (q15_t)0x10b0, (q15_t)0x1098, (q15_t)0x107f, + (q15_t)0x1066, (q15_t)0x104d, (q15_t)0x1034, (q15_t)0x101b, (q15_t)0x1002, (q15_t)0xfe9, (q15_t)0xfd0, (q15_t)0xfb7, + (q15_t)0xf9e, (q15_t)0xf85, (q15_t)0xf6c, (q15_t)0xf53, (q15_t)0xf3a, (q15_t)0xf21, (q15_t)0xf08, (q15_t)0xef0, + (q15_t)0xed7, (q15_t)0xebe, (q15_t)0xea5, (q15_t)0xe8c, (q15_t)0xe73, (q15_t)0xe5a, (q15_t)0xe41, (q15_t)0xe28, + (q15_t)0xe0f, (q15_t)0xdf6, (q15_t)0xddd, (q15_t)0xdc4, (q15_t)0xdab, (q15_t)0xd92, (q15_t)0xd79, (q15_t)0xd60, + (q15_t)0xd47, (q15_t)0xd2e, (q15_t)0xd15, (q15_t)0xcfc, (q15_t)0xce3, (q15_t)0xcca, (q15_t)0xcb1, (q15_t)0xc98, + (q15_t)0xc7f, (q15_t)0xc66, (q15_t)0xc4d, (q15_t)0xc34, (q15_t)0xc1b, (q15_t)0xc02, (q15_t)0xbe9, (q15_t)0xbd0, + (q15_t)0xbb7, (q15_t)0xb9e, (q15_t)0xb85, (q15_t)0xb6c, (q15_t)0xb53, (q15_t)0xb3a, (q15_t)0xb20, (q15_t)0xb07, + (q15_t)0xaee, (q15_t)0xad5, (q15_t)0xabc, (q15_t)0xaa3, (q15_t)0xa8a, (q15_t)0xa71, (q15_t)0xa58, (q15_t)0xa3f, + (q15_t)0xa26, (q15_t)0xa0d, (q15_t)0x9f4, (q15_t)0x9db, (q15_t)0x9c2, (q15_t)0x9a9, (q15_t)0x990, (q15_t)0x977, + (q15_t)0x95e, (q15_t)0x944, (q15_t)0x92b, (q15_t)0x912, (q15_t)0x8f9, (q15_t)0x8e0, (q15_t)0x8c7, (q15_t)0x8ae, + (q15_t)0x895, (q15_t)0x87c, (q15_t)0x863, (q15_t)0x84a, (q15_t)0x831, (q15_t)0x818, (q15_t)0x7fe, (q15_t)0x7e5, + (q15_t)0x7cc, (q15_t)0x7b3, (q15_t)0x79a, (q15_t)0x781, (q15_t)0x768, (q15_t)0x74f, (q15_t)0x736, (q15_t)0x71d, + (q15_t)0x704, (q15_t)0x6ea, (q15_t)0x6d1, (q15_t)0x6b8, (q15_t)0x69f, (q15_t)0x686, (q15_t)0x66d, (q15_t)0x654, + (q15_t)0x63b, (q15_t)0x622, (q15_t)0x609, (q15_t)0x5ef, (q15_t)0x5d6, (q15_t)0x5bd, (q15_t)0x5a4, (q15_t)0x58b, + (q15_t)0x572, (q15_t)0x559, (q15_t)0x540, (q15_t)0x527, (q15_t)0x50d, (q15_t)0x4f4, (q15_t)0x4db, (q15_t)0x4c2, + (q15_t)0x4a9, (q15_t)0x490, (q15_t)0x477, (q15_t)0x45e, (q15_t)0x445, (q15_t)0x42b, (q15_t)0x412, (q15_t)0x3f9, + (q15_t)0x3e0, (q15_t)0x3c7, (q15_t)0x3ae, (q15_t)0x395, (q15_t)0x37c, (q15_t)0x362, (q15_t)0x349, (q15_t)0x330, + (q15_t)0x317, (q15_t)0x2fe, (q15_t)0x2e5, (q15_t)0x2cc, (q15_t)0x2b3, (q15_t)0x299, (q15_t)0x280, (q15_t)0x267, + (q15_t)0x24e, (q15_t)0x235, (q15_t)0x21c, (q15_t)0x203, (q15_t)0x1ea, (q15_t)0x1d0, (q15_t)0x1b7, (q15_t)0x19e, + (q15_t)0x185, (q15_t)0x16c, (q15_t)0x153, (q15_t)0x13a, (q15_t)0x121, (q15_t)0x107, (q15_t)0xee, (q15_t)0xd5, + (q15_t)0xbc, (q15_t)0xa3, (q15_t)0x8a, (q15_t)0x71, (q15_t)0x57, (q15_t)0x3e, (q15_t)0x25, (q15_t)0xc + +}; + +static const q15_t ALIGN4 cos_factorsQ15_8192[8192] = { + (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, + (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, + (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, + (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, + (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, (q15_t)0x7fff, + (q15_t)0x7fff, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, + (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffe, + (q15_t)0x7ffe, (q15_t)0x7ffe, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, + (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffd, (q15_t)0x7ffc, + (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, (q15_t)0x7ffc, + (q15_t)0x7ffc, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, + (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffb, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, + (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ffa, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, + (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff9, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff8, + (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff8, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff7, + (q15_t)0x7ff7, (q15_t)0x7ff7, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, (q15_t)0x7ff6, + (q15_t)0x7ff6, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff5, (q15_t)0x7ff4, + (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff4, (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff3, + (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff3, (q15_t)0x7ff2, (q15_t)0x7ff2, (q15_t)0x7ff2, (q15_t)0x7ff2, (q15_t)0x7ff2, + (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff1, (q15_t)0x7ff0, (q15_t)0x7ff0, + (q15_t)0x7ff0, (q15_t)0x7ff0, (q15_t)0x7ff0, (q15_t)0x7fef, (q15_t)0x7fef, (q15_t)0x7fef, (q15_t)0x7fef, (q15_t)0x7fef, + (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fee, (q15_t)0x7fed, (q15_t)0x7fed, (q15_t)0x7fed, + (q15_t)0x7fed, (q15_t)0x7fed, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7fec, (q15_t)0x7feb, (q15_t)0x7feb, + (q15_t)0x7feb, (q15_t)0x7feb, (q15_t)0x7feb, (q15_t)0x7fea, (q15_t)0x7fea, (q15_t)0x7fea, (q15_t)0x7fea, (q15_t)0x7fe9, + (q15_t)0x7fe9, (q15_t)0x7fe9, (q15_t)0x7fe9, (q15_t)0x7fe8, (q15_t)0x7fe8, (q15_t)0x7fe8, (q15_t)0x7fe8, (q15_t)0x7fe8, + (q15_t)0x7fe7, (q15_t)0x7fe7, (q15_t)0x7fe7, (q15_t)0x7fe7, (q15_t)0x7fe6, (q15_t)0x7fe6, (q15_t)0x7fe6, (q15_t)0x7fe6, + (q15_t)0x7fe5, (q15_t)0x7fe5, (q15_t)0x7fe5, (q15_t)0x7fe5, (q15_t)0x7fe4, (q15_t)0x7fe4, (q15_t)0x7fe4, (q15_t)0x7fe4, + (q15_t)0x7fe3, (q15_t)0x7fe3, (q15_t)0x7fe3, (q15_t)0x7fe2, (q15_t)0x7fe2, (q15_t)0x7fe2, (q15_t)0x7fe2, (q15_t)0x7fe1, + (q15_t)0x7fe1, (q15_t)0x7fe1, (q15_t)0x7fe1, (q15_t)0x7fe0, (q15_t)0x7fe0, (q15_t)0x7fe0, (q15_t)0x7fdf, (q15_t)0x7fdf, + (q15_t)0x7fdf, (q15_t)0x7fdf, (q15_t)0x7fde, (q15_t)0x7fde, (q15_t)0x7fde, (q15_t)0x7fde, (q15_t)0x7fdd, (q15_t)0x7fdd, + (q15_t)0x7fdd, (q15_t)0x7fdc, (q15_t)0x7fdc, (q15_t)0x7fdc, (q15_t)0x7fdb, (q15_t)0x7fdb, (q15_t)0x7fdb, (q15_t)0x7fdb, + (q15_t)0x7fda, (q15_t)0x7fda, (q15_t)0x7fda, (q15_t)0x7fd9, (q15_t)0x7fd9, (q15_t)0x7fd9, (q15_t)0x7fd8, (q15_t)0x7fd8, + (q15_t)0x7fd8, (q15_t)0x7fd8, (q15_t)0x7fd7, (q15_t)0x7fd7, (q15_t)0x7fd7, (q15_t)0x7fd6, (q15_t)0x7fd6, (q15_t)0x7fd6, + (q15_t)0x7fd5, (q15_t)0x7fd5, (q15_t)0x7fd5, (q15_t)0x7fd4, (q15_t)0x7fd4, (q15_t)0x7fd4, (q15_t)0x7fd3, (q15_t)0x7fd3, + (q15_t)0x7fd3, (q15_t)0x7fd2, (q15_t)0x7fd2, (q15_t)0x7fd2, (q15_t)0x7fd1, (q15_t)0x7fd1, (q15_t)0x7fd1, (q15_t)0x7fd0, + (q15_t)0x7fd0, (q15_t)0x7fd0, (q15_t)0x7fcf, (q15_t)0x7fcf, (q15_t)0x7fcf, (q15_t)0x7fce, (q15_t)0x7fce, (q15_t)0x7fce, + (q15_t)0x7fcd, (q15_t)0x7fcd, (q15_t)0x7fcd, (q15_t)0x7fcc, (q15_t)0x7fcc, (q15_t)0x7fcc, (q15_t)0x7fcb, (q15_t)0x7fcb, + (q15_t)0x7fcb, (q15_t)0x7fca, (q15_t)0x7fca, (q15_t)0x7fc9, (q15_t)0x7fc9, (q15_t)0x7fc9, (q15_t)0x7fc8, (q15_t)0x7fc8, + (q15_t)0x7fc8, (q15_t)0x7fc7, (q15_t)0x7fc7, (q15_t)0x7fc7, (q15_t)0x7fc6, (q15_t)0x7fc6, (q15_t)0x7fc5, (q15_t)0x7fc5, + (q15_t)0x7fc5, (q15_t)0x7fc4, (q15_t)0x7fc4, (q15_t)0x7fc4, (q15_t)0x7fc3, (q15_t)0x7fc3, (q15_t)0x7fc2, (q15_t)0x7fc2, + (q15_t)0x7fc2, (q15_t)0x7fc1, (q15_t)0x7fc1, (q15_t)0x7fc0, (q15_t)0x7fc0, (q15_t)0x7fc0, (q15_t)0x7fbf, (q15_t)0x7fbf, + (q15_t)0x7fbf, (q15_t)0x7fbe, (q15_t)0x7fbe, (q15_t)0x7fbd, (q15_t)0x7fbd, (q15_t)0x7fbd, (q15_t)0x7fbc, (q15_t)0x7fbc, + (q15_t)0x7fbb, (q15_t)0x7fbb, (q15_t)0x7fbb, (q15_t)0x7fba, (q15_t)0x7fba, (q15_t)0x7fb9, (q15_t)0x7fb9, (q15_t)0x7fb8, + (q15_t)0x7fb8, (q15_t)0x7fb8, (q15_t)0x7fb7, (q15_t)0x7fb7, (q15_t)0x7fb6, (q15_t)0x7fb6, (q15_t)0x7fb6, (q15_t)0x7fb5, + (q15_t)0x7fb5, (q15_t)0x7fb4, (q15_t)0x7fb4, (q15_t)0x7fb3, (q15_t)0x7fb3, (q15_t)0x7fb3, (q15_t)0x7fb2, (q15_t)0x7fb2, + (q15_t)0x7fb1, (q15_t)0x7fb1, (q15_t)0x7fb0, (q15_t)0x7fb0, (q15_t)0x7faf, (q15_t)0x7faf, (q15_t)0x7faf, (q15_t)0x7fae, + (q15_t)0x7fae, (q15_t)0x7fad, (q15_t)0x7fad, (q15_t)0x7fac, (q15_t)0x7fac, (q15_t)0x7fac, (q15_t)0x7fab, (q15_t)0x7fab, + (q15_t)0x7faa, (q15_t)0x7faa, (q15_t)0x7fa9, (q15_t)0x7fa9, (q15_t)0x7fa8, (q15_t)0x7fa8, (q15_t)0x7fa7, (q15_t)0x7fa7, + (q15_t)0x7fa6, (q15_t)0x7fa6, (q15_t)0x7fa6, (q15_t)0x7fa5, (q15_t)0x7fa5, (q15_t)0x7fa4, (q15_t)0x7fa4, (q15_t)0x7fa3, + (q15_t)0x7fa3, (q15_t)0x7fa2, (q15_t)0x7fa2, (q15_t)0x7fa1, (q15_t)0x7fa1, (q15_t)0x7fa0, (q15_t)0x7fa0, (q15_t)0x7f9f, + (q15_t)0x7f9f, (q15_t)0x7f9e, (q15_t)0x7f9e, (q15_t)0x7f9d, (q15_t)0x7f9d, (q15_t)0x7f9c, (q15_t)0x7f9c, (q15_t)0x7f9c, + (q15_t)0x7f9b, (q15_t)0x7f9b, (q15_t)0x7f9a, (q15_t)0x7f9a, (q15_t)0x7f99, (q15_t)0x7f99, (q15_t)0x7f98, (q15_t)0x7f98, + (q15_t)0x7f97, (q15_t)0x7f97, (q15_t)0x7f96, (q15_t)0x7f96, (q15_t)0x7f95, (q15_t)0x7f95, (q15_t)0x7f94, (q15_t)0x7f94, + (q15_t)0x7f93, (q15_t)0x7f92, (q15_t)0x7f92, (q15_t)0x7f91, (q15_t)0x7f91, (q15_t)0x7f90, (q15_t)0x7f90, (q15_t)0x7f8f, + (q15_t)0x7f8f, (q15_t)0x7f8e, (q15_t)0x7f8e, (q15_t)0x7f8d, (q15_t)0x7f8d, (q15_t)0x7f8c, (q15_t)0x7f8c, (q15_t)0x7f8b, + (q15_t)0x7f8b, (q15_t)0x7f8a, (q15_t)0x7f8a, (q15_t)0x7f89, (q15_t)0x7f89, (q15_t)0x7f88, (q15_t)0x7f87, (q15_t)0x7f87, + (q15_t)0x7f86, (q15_t)0x7f86, (q15_t)0x7f85, (q15_t)0x7f85, (q15_t)0x7f84, (q15_t)0x7f84, (q15_t)0x7f83, (q15_t)0x7f83, + (q15_t)0x7f82, (q15_t)0x7f81, (q15_t)0x7f81, (q15_t)0x7f80, (q15_t)0x7f80, (q15_t)0x7f7f, (q15_t)0x7f7f, (q15_t)0x7f7e, + (q15_t)0x7f7e, (q15_t)0x7f7d, (q15_t)0x7f7c, (q15_t)0x7f7c, (q15_t)0x7f7b, (q15_t)0x7f7b, (q15_t)0x7f7a, (q15_t)0x7f7a, + (q15_t)0x7f79, (q15_t)0x7f79, (q15_t)0x7f78, (q15_t)0x7f77, (q15_t)0x7f77, (q15_t)0x7f76, (q15_t)0x7f76, (q15_t)0x7f75, + (q15_t)0x7f75, (q15_t)0x7f74, (q15_t)0x7f73, (q15_t)0x7f73, (q15_t)0x7f72, (q15_t)0x7f72, (q15_t)0x7f71, (q15_t)0x7f70, + (q15_t)0x7f70, (q15_t)0x7f6f, (q15_t)0x7f6f, (q15_t)0x7f6e, (q15_t)0x7f6d, (q15_t)0x7f6d, (q15_t)0x7f6c, (q15_t)0x7f6c, + (q15_t)0x7f6b, (q15_t)0x7f6b, (q15_t)0x7f6a, (q15_t)0x7f69, (q15_t)0x7f69, (q15_t)0x7f68, (q15_t)0x7f68, (q15_t)0x7f67, + (q15_t)0x7f66, (q15_t)0x7f66, (q15_t)0x7f65, (q15_t)0x7f64, (q15_t)0x7f64, (q15_t)0x7f63, (q15_t)0x7f63, (q15_t)0x7f62, + (q15_t)0x7f61, (q15_t)0x7f61, (q15_t)0x7f60, (q15_t)0x7f60, (q15_t)0x7f5f, (q15_t)0x7f5e, (q15_t)0x7f5e, (q15_t)0x7f5d, + (q15_t)0x7f5c, (q15_t)0x7f5c, (q15_t)0x7f5b, (q15_t)0x7f5b, (q15_t)0x7f5a, (q15_t)0x7f59, (q15_t)0x7f59, (q15_t)0x7f58, + (q15_t)0x7f57, (q15_t)0x7f57, (q15_t)0x7f56, (q15_t)0x7f55, (q15_t)0x7f55, (q15_t)0x7f54, (q15_t)0x7f54, (q15_t)0x7f53, + (q15_t)0x7f52, (q15_t)0x7f52, (q15_t)0x7f51, (q15_t)0x7f50, (q15_t)0x7f50, (q15_t)0x7f4f, (q15_t)0x7f4e, (q15_t)0x7f4e, + (q15_t)0x7f4d, (q15_t)0x7f4c, (q15_t)0x7f4c, (q15_t)0x7f4b, (q15_t)0x7f4a, (q15_t)0x7f4a, (q15_t)0x7f49, (q15_t)0x7f48, + (q15_t)0x7f48, (q15_t)0x7f47, (q15_t)0x7f46, (q15_t)0x7f46, (q15_t)0x7f45, (q15_t)0x7f44, (q15_t)0x7f44, (q15_t)0x7f43, + (q15_t)0x7f42, (q15_t)0x7f42, (q15_t)0x7f41, (q15_t)0x7f40, (q15_t)0x7f40, (q15_t)0x7f3f, (q15_t)0x7f3e, (q15_t)0x7f3e, + (q15_t)0x7f3d, (q15_t)0x7f3c, (q15_t)0x7f3c, (q15_t)0x7f3b, (q15_t)0x7f3a, (q15_t)0x7f3a, (q15_t)0x7f39, (q15_t)0x7f38, + (q15_t)0x7f37, (q15_t)0x7f37, (q15_t)0x7f36, (q15_t)0x7f35, (q15_t)0x7f35, (q15_t)0x7f34, (q15_t)0x7f33, (q15_t)0x7f33, + (q15_t)0x7f32, (q15_t)0x7f31, (q15_t)0x7f31, (q15_t)0x7f30, (q15_t)0x7f2f, (q15_t)0x7f2e, (q15_t)0x7f2e, (q15_t)0x7f2d, + (q15_t)0x7f2c, (q15_t)0x7f2c, (q15_t)0x7f2b, (q15_t)0x7f2a, (q15_t)0x7f29, (q15_t)0x7f29, (q15_t)0x7f28, (q15_t)0x7f27, + (q15_t)0x7f27, (q15_t)0x7f26, (q15_t)0x7f25, (q15_t)0x7f24, (q15_t)0x7f24, (q15_t)0x7f23, (q15_t)0x7f22, (q15_t)0x7f21, + (q15_t)0x7f21, (q15_t)0x7f20, (q15_t)0x7f1f, (q15_t)0x7f1f, (q15_t)0x7f1e, (q15_t)0x7f1d, (q15_t)0x7f1c, (q15_t)0x7f1c, + (q15_t)0x7f1b, (q15_t)0x7f1a, (q15_t)0x7f19, (q15_t)0x7f19, (q15_t)0x7f18, (q15_t)0x7f17, (q15_t)0x7f16, (q15_t)0x7f16, + (q15_t)0x7f15, (q15_t)0x7f14, (q15_t)0x7f13, (q15_t)0x7f13, (q15_t)0x7f12, (q15_t)0x7f11, (q15_t)0x7f10, (q15_t)0x7f10, + (q15_t)0x7f0f, (q15_t)0x7f0e, (q15_t)0x7f0d, (q15_t)0x7f0d, (q15_t)0x7f0c, (q15_t)0x7f0b, (q15_t)0x7f0a, (q15_t)0x7f09, + (q15_t)0x7f09, (q15_t)0x7f08, (q15_t)0x7f07, (q15_t)0x7f06, (q15_t)0x7f06, (q15_t)0x7f05, (q15_t)0x7f04, (q15_t)0x7f03, + (q15_t)0x7f02, (q15_t)0x7f02, (q15_t)0x7f01, (q15_t)0x7f00, (q15_t)0x7eff, (q15_t)0x7eff, (q15_t)0x7efe, (q15_t)0x7efd, + (q15_t)0x7efc, (q15_t)0x7efb, (q15_t)0x7efb, (q15_t)0x7efa, (q15_t)0x7ef9, (q15_t)0x7ef8, (q15_t)0x7ef7, (q15_t)0x7ef7, + (q15_t)0x7ef6, (q15_t)0x7ef5, (q15_t)0x7ef4, (q15_t)0x7ef3, (q15_t)0x7ef3, (q15_t)0x7ef2, (q15_t)0x7ef1, (q15_t)0x7ef0, + (q15_t)0x7eef, (q15_t)0x7eef, (q15_t)0x7eee, (q15_t)0x7eed, (q15_t)0x7eec, (q15_t)0x7eeb, (q15_t)0x7eeb, (q15_t)0x7eea, + (q15_t)0x7ee9, (q15_t)0x7ee8, (q15_t)0x7ee7, (q15_t)0x7ee6, (q15_t)0x7ee6, (q15_t)0x7ee5, (q15_t)0x7ee4, (q15_t)0x7ee3, + (q15_t)0x7ee2, (q15_t)0x7ee2, (q15_t)0x7ee1, (q15_t)0x7ee0, (q15_t)0x7edf, (q15_t)0x7ede, (q15_t)0x7edd, (q15_t)0x7edd, + (q15_t)0x7edc, (q15_t)0x7edb, (q15_t)0x7eda, (q15_t)0x7ed9, (q15_t)0x7ed8, (q15_t)0x7ed8, (q15_t)0x7ed7, (q15_t)0x7ed6, + (q15_t)0x7ed5, (q15_t)0x7ed4, (q15_t)0x7ed3, (q15_t)0x7ed2, (q15_t)0x7ed2, (q15_t)0x7ed1, (q15_t)0x7ed0, (q15_t)0x7ecf, + (q15_t)0x7ece, (q15_t)0x7ecd, (q15_t)0x7ecc, (q15_t)0x7ecc, (q15_t)0x7ecb, (q15_t)0x7eca, (q15_t)0x7ec9, (q15_t)0x7ec8, + (q15_t)0x7ec7, (q15_t)0x7ec6, (q15_t)0x7ec6, (q15_t)0x7ec5, (q15_t)0x7ec4, (q15_t)0x7ec3, (q15_t)0x7ec2, (q15_t)0x7ec1, + (q15_t)0x7ec0, (q15_t)0x7ebf, (q15_t)0x7ebf, (q15_t)0x7ebe, (q15_t)0x7ebd, (q15_t)0x7ebc, (q15_t)0x7ebb, (q15_t)0x7eba, + (q15_t)0x7eb9, (q15_t)0x7eb8, (q15_t)0x7eb8, (q15_t)0x7eb7, (q15_t)0x7eb6, (q15_t)0x7eb5, (q15_t)0x7eb4, (q15_t)0x7eb3, + (q15_t)0x7eb2, (q15_t)0x7eb1, (q15_t)0x7eb0, (q15_t)0x7eaf, (q15_t)0x7eaf, (q15_t)0x7eae, (q15_t)0x7ead, (q15_t)0x7eac, + (q15_t)0x7eab, (q15_t)0x7eaa, (q15_t)0x7ea9, (q15_t)0x7ea8, (q15_t)0x7ea7, (q15_t)0x7ea6, (q15_t)0x7ea6, (q15_t)0x7ea5, + (q15_t)0x7ea4, (q15_t)0x7ea3, (q15_t)0x7ea2, (q15_t)0x7ea1, (q15_t)0x7ea0, (q15_t)0x7e9f, (q15_t)0x7e9e, (q15_t)0x7e9d, + (q15_t)0x7e9c, (q15_t)0x7e9b, (q15_t)0x7e9b, (q15_t)0x7e9a, (q15_t)0x7e99, (q15_t)0x7e98, (q15_t)0x7e97, (q15_t)0x7e96, + (q15_t)0x7e95, (q15_t)0x7e94, (q15_t)0x7e93, (q15_t)0x7e92, (q15_t)0x7e91, (q15_t)0x7e90, (q15_t)0x7e8f, (q15_t)0x7e8e, + (q15_t)0x7e8d, (q15_t)0x7e8d, (q15_t)0x7e8c, (q15_t)0x7e8b, (q15_t)0x7e8a, (q15_t)0x7e89, (q15_t)0x7e88, (q15_t)0x7e87, + (q15_t)0x7e86, (q15_t)0x7e85, (q15_t)0x7e84, (q15_t)0x7e83, (q15_t)0x7e82, (q15_t)0x7e81, (q15_t)0x7e80, (q15_t)0x7e7f, + (q15_t)0x7e7e, (q15_t)0x7e7d, (q15_t)0x7e7c, (q15_t)0x7e7b, (q15_t)0x7e7a, (q15_t)0x7e79, (q15_t)0x7e78, (q15_t)0x7e77, + (q15_t)0x7e77, (q15_t)0x7e76, (q15_t)0x7e75, (q15_t)0x7e74, (q15_t)0x7e73, (q15_t)0x7e72, (q15_t)0x7e71, (q15_t)0x7e70, + (q15_t)0x7e6f, (q15_t)0x7e6e, (q15_t)0x7e6d, (q15_t)0x7e6c, (q15_t)0x7e6b, (q15_t)0x7e6a, (q15_t)0x7e69, (q15_t)0x7e68, + (q15_t)0x7e67, (q15_t)0x7e66, (q15_t)0x7e65, (q15_t)0x7e64, (q15_t)0x7e63, (q15_t)0x7e62, (q15_t)0x7e61, (q15_t)0x7e60, + (q15_t)0x7e5f, (q15_t)0x7e5e, (q15_t)0x7e5d, (q15_t)0x7e5c, (q15_t)0x7e5b, (q15_t)0x7e5a, (q15_t)0x7e59, (q15_t)0x7e58, + (q15_t)0x7e57, (q15_t)0x7e56, (q15_t)0x7e55, (q15_t)0x7e54, (q15_t)0x7e53, (q15_t)0x7e52, (q15_t)0x7e51, (q15_t)0x7e50, + (q15_t)0x7e4f, (q15_t)0x7e4e, (q15_t)0x7e4d, (q15_t)0x7e4c, (q15_t)0x7e4b, (q15_t)0x7e4a, (q15_t)0x7e49, (q15_t)0x7e48, + (q15_t)0x7e47, (q15_t)0x7e46, (q15_t)0x7e45, (q15_t)0x7e43, (q15_t)0x7e42, (q15_t)0x7e41, (q15_t)0x7e40, (q15_t)0x7e3f, + (q15_t)0x7e3e, (q15_t)0x7e3d, (q15_t)0x7e3c, (q15_t)0x7e3b, (q15_t)0x7e3a, (q15_t)0x7e39, (q15_t)0x7e38, (q15_t)0x7e37, + (q15_t)0x7e36, (q15_t)0x7e35, (q15_t)0x7e34, (q15_t)0x7e33, (q15_t)0x7e32, (q15_t)0x7e31, (q15_t)0x7e30, (q15_t)0x7e2f, + (q15_t)0x7e2e, (q15_t)0x7e2d, (q15_t)0x7e2b, (q15_t)0x7e2a, (q15_t)0x7e29, (q15_t)0x7e28, (q15_t)0x7e27, (q15_t)0x7e26, + (q15_t)0x7e25, (q15_t)0x7e24, (q15_t)0x7e23, (q15_t)0x7e22, (q15_t)0x7e21, (q15_t)0x7e20, (q15_t)0x7e1f, (q15_t)0x7e1e, + (q15_t)0x7e1d, (q15_t)0x7e1b, (q15_t)0x7e1a, (q15_t)0x7e19, (q15_t)0x7e18, (q15_t)0x7e17, (q15_t)0x7e16, (q15_t)0x7e15, + (q15_t)0x7e14, (q15_t)0x7e13, (q15_t)0x7e12, (q15_t)0x7e11, (q15_t)0x7e10, (q15_t)0x7e0e, (q15_t)0x7e0d, (q15_t)0x7e0c, + (q15_t)0x7e0b, (q15_t)0x7e0a, (q15_t)0x7e09, (q15_t)0x7e08, (q15_t)0x7e07, (q15_t)0x7e06, (q15_t)0x7e05, (q15_t)0x7e04, + (q15_t)0x7e02, (q15_t)0x7e01, (q15_t)0x7e00, (q15_t)0x7dff, (q15_t)0x7dfe, (q15_t)0x7dfd, (q15_t)0x7dfc, (q15_t)0x7dfb, + (q15_t)0x7dfa, (q15_t)0x7df8, (q15_t)0x7df7, (q15_t)0x7df6, (q15_t)0x7df5, (q15_t)0x7df4, (q15_t)0x7df3, (q15_t)0x7df2, + (q15_t)0x7df1, (q15_t)0x7def, (q15_t)0x7dee, (q15_t)0x7ded, (q15_t)0x7dec, (q15_t)0x7deb, (q15_t)0x7dea, (q15_t)0x7de9, + (q15_t)0x7de8, (q15_t)0x7de6, (q15_t)0x7de5, (q15_t)0x7de4, (q15_t)0x7de3, (q15_t)0x7de2, (q15_t)0x7de1, (q15_t)0x7de0, + (q15_t)0x7dde, (q15_t)0x7ddd, (q15_t)0x7ddc, (q15_t)0x7ddb, (q15_t)0x7dda, (q15_t)0x7dd9, (q15_t)0x7dd8, (q15_t)0x7dd6, + (q15_t)0x7dd5, (q15_t)0x7dd4, (q15_t)0x7dd3, (q15_t)0x7dd2, (q15_t)0x7dd1, (q15_t)0x7dd0, (q15_t)0x7dce, (q15_t)0x7dcd, + (q15_t)0x7dcc, (q15_t)0x7dcb, (q15_t)0x7dca, (q15_t)0x7dc9, (q15_t)0x7dc7, (q15_t)0x7dc6, (q15_t)0x7dc5, (q15_t)0x7dc4, + (q15_t)0x7dc3, (q15_t)0x7dc2, (q15_t)0x7dc0, (q15_t)0x7dbf, (q15_t)0x7dbe, (q15_t)0x7dbd, (q15_t)0x7dbc, (q15_t)0x7dbb, + (q15_t)0x7db9, (q15_t)0x7db8, (q15_t)0x7db7, (q15_t)0x7db6, (q15_t)0x7db5, (q15_t)0x7db3, (q15_t)0x7db2, (q15_t)0x7db1, + (q15_t)0x7db0, (q15_t)0x7daf, (q15_t)0x7dae, (q15_t)0x7dac, (q15_t)0x7dab, (q15_t)0x7daa, (q15_t)0x7da9, (q15_t)0x7da8, + (q15_t)0x7da6, (q15_t)0x7da5, (q15_t)0x7da4, (q15_t)0x7da3, (q15_t)0x7da2, (q15_t)0x7da0, (q15_t)0x7d9f, (q15_t)0x7d9e, + (q15_t)0x7d9d, (q15_t)0x7d9c, (q15_t)0x7d9a, (q15_t)0x7d99, (q15_t)0x7d98, (q15_t)0x7d97, (q15_t)0x7d95, (q15_t)0x7d94, + (q15_t)0x7d93, (q15_t)0x7d92, (q15_t)0x7d91, (q15_t)0x7d8f, (q15_t)0x7d8e, (q15_t)0x7d8d, (q15_t)0x7d8c, (q15_t)0x7d8a, + (q15_t)0x7d89, (q15_t)0x7d88, (q15_t)0x7d87, (q15_t)0x7d86, (q15_t)0x7d84, (q15_t)0x7d83, (q15_t)0x7d82, (q15_t)0x7d81, + (q15_t)0x7d7f, (q15_t)0x7d7e, (q15_t)0x7d7d, (q15_t)0x7d7c, (q15_t)0x7d7a, (q15_t)0x7d79, (q15_t)0x7d78, (q15_t)0x7d77, + (q15_t)0x7d75, (q15_t)0x7d74, (q15_t)0x7d73, (q15_t)0x7d72, (q15_t)0x7d70, (q15_t)0x7d6f, (q15_t)0x7d6e, (q15_t)0x7d6d, + (q15_t)0x7d6b, (q15_t)0x7d6a, (q15_t)0x7d69, (q15_t)0x7d68, (q15_t)0x7d66, (q15_t)0x7d65, (q15_t)0x7d64, (q15_t)0x7d63, + (q15_t)0x7d61, (q15_t)0x7d60, (q15_t)0x7d5f, (q15_t)0x7d5e, (q15_t)0x7d5c, (q15_t)0x7d5b, (q15_t)0x7d5a, (q15_t)0x7d59, + (q15_t)0x7d57, (q15_t)0x7d56, (q15_t)0x7d55, (q15_t)0x7d53, (q15_t)0x7d52, (q15_t)0x7d51, (q15_t)0x7d50, (q15_t)0x7d4e, + (q15_t)0x7d4d, (q15_t)0x7d4c, (q15_t)0x7d4a, (q15_t)0x7d49, (q15_t)0x7d48, (q15_t)0x7d47, (q15_t)0x7d45, (q15_t)0x7d44, + (q15_t)0x7d43, (q15_t)0x7d41, (q15_t)0x7d40, (q15_t)0x7d3f, (q15_t)0x7d3e, (q15_t)0x7d3c, (q15_t)0x7d3b, (q15_t)0x7d3a, + (q15_t)0x7d38, (q15_t)0x7d37, (q15_t)0x7d36, (q15_t)0x7d34, (q15_t)0x7d33, (q15_t)0x7d32, (q15_t)0x7d31, (q15_t)0x7d2f, + (q15_t)0x7d2e, (q15_t)0x7d2d, (q15_t)0x7d2b, (q15_t)0x7d2a, (q15_t)0x7d29, (q15_t)0x7d27, (q15_t)0x7d26, (q15_t)0x7d25, + (q15_t)0x7d23, (q15_t)0x7d22, (q15_t)0x7d21, (q15_t)0x7d1f, (q15_t)0x7d1e, (q15_t)0x7d1d, (q15_t)0x7d1b, (q15_t)0x7d1a, + (q15_t)0x7d19, (q15_t)0x7d17, (q15_t)0x7d16, (q15_t)0x7d15, (q15_t)0x7d13, (q15_t)0x7d12, (q15_t)0x7d11, (q15_t)0x7d0f, + (q15_t)0x7d0e, (q15_t)0x7d0d, (q15_t)0x7d0b, (q15_t)0x7d0a, (q15_t)0x7d09, (q15_t)0x7d07, (q15_t)0x7d06, (q15_t)0x7d05, + (q15_t)0x7d03, (q15_t)0x7d02, (q15_t)0x7d01, (q15_t)0x7cff, (q15_t)0x7cfe, (q15_t)0x7cfd, (q15_t)0x7cfb, (q15_t)0x7cfa, + (q15_t)0x7cf9, (q15_t)0x7cf7, (q15_t)0x7cf6, (q15_t)0x7cf4, (q15_t)0x7cf3, (q15_t)0x7cf2, (q15_t)0x7cf0, (q15_t)0x7cef, + (q15_t)0x7cee, (q15_t)0x7cec, (q15_t)0x7ceb, (q15_t)0x7ce9, (q15_t)0x7ce8, (q15_t)0x7ce7, (q15_t)0x7ce5, (q15_t)0x7ce4, + (q15_t)0x7ce3, (q15_t)0x7ce1, (q15_t)0x7ce0, (q15_t)0x7cde, (q15_t)0x7cdd, (q15_t)0x7cdc, (q15_t)0x7cda, (q15_t)0x7cd9, + (q15_t)0x7cd8, (q15_t)0x7cd6, (q15_t)0x7cd5, (q15_t)0x7cd3, (q15_t)0x7cd2, (q15_t)0x7cd1, (q15_t)0x7ccf, (q15_t)0x7cce, + (q15_t)0x7ccc, (q15_t)0x7ccb, (q15_t)0x7cca, (q15_t)0x7cc8, (q15_t)0x7cc7, (q15_t)0x7cc5, (q15_t)0x7cc4, (q15_t)0x7cc3, + (q15_t)0x7cc1, (q15_t)0x7cc0, (q15_t)0x7cbe, (q15_t)0x7cbd, (q15_t)0x7cbc, (q15_t)0x7cba, (q15_t)0x7cb9, (q15_t)0x7cb7, + (q15_t)0x7cb6, (q15_t)0x7cb5, (q15_t)0x7cb3, (q15_t)0x7cb2, (q15_t)0x7cb0, (q15_t)0x7caf, (q15_t)0x7cad, (q15_t)0x7cac, + (q15_t)0x7cab, (q15_t)0x7ca9, (q15_t)0x7ca8, (q15_t)0x7ca6, (q15_t)0x7ca5, (q15_t)0x7ca3, (q15_t)0x7ca2, (q15_t)0x7ca1, + (q15_t)0x7c9f, (q15_t)0x7c9e, (q15_t)0x7c9c, (q15_t)0x7c9b, (q15_t)0x7c99, (q15_t)0x7c98, (q15_t)0x7c97, (q15_t)0x7c95, + (q15_t)0x7c94, (q15_t)0x7c92, (q15_t)0x7c91, (q15_t)0x7c8f, (q15_t)0x7c8e, (q15_t)0x7c8c, (q15_t)0x7c8b, (q15_t)0x7c8a, + (q15_t)0x7c88, (q15_t)0x7c87, (q15_t)0x7c85, (q15_t)0x7c84, (q15_t)0x7c82, (q15_t)0x7c81, (q15_t)0x7c7f, (q15_t)0x7c7e, + (q15_t)0x7c7c, (q15_t)0x7c7b, (q15_t)0x7c79, (q15_t)0x7c78, (q15_t)0x7c77, (q15_t)0x7c75, (q15_t)0x7c74, (q15_t)0x7c72, + (q15_t)0x7c71, (q15_t)0x7c6f, (q15_t)0x7c6e, (q15_t)0x7c6c, (q15_t)0x7c6b, (q15_t)0x7c69, (q15_t)0x7c68, (q15_t)0x7c66, + (q15_t)0x7c65, (q15_t)0x7c63, (q15_t)0x7c62, (q15_t)0x7c60, (q15_t)0x7c5f, (q15_t)0x7c5d, (q15_t)0x7c5c, (q15_t)0x7c5a, + (q15_t)0x7c59, (q15_t)0x7c58, (q15_t)0x7c56, (q15_t)0x7c55, (q15_t)0x7c53, (q15_t)0x7c52, (q15_t)0x7c50, (q15_t)0x7c4f, + (q15_t)0x7c4d, (q15_t)0x7c4c, (q15_t)0x7c4a, (q15_t)0x7c49, (q15_t)0x7c47, (q15_t)0x7c46, (q15_t)0x7c44, (q15_t)0x7c43, + (q15_t)0x7c41, (q15_t)0x7c3f, (q15_t)0x7c3e, (q15_t)0x7c3c, (q15_t)0x7c3b, (q15_t)0x7c39, (q15_t)0x7c38, (q15_t)0x7c36, + (q15_t)0x7c35, (q15_t)0x7c33, (q15_t)0x7c32, (q15_t)0x7c30, (q15_t)0x7c2f, (q15_t)0x7c2d, (q15_t)0x7c2c, (q15_t)0x7c2a, + (q15_t)0x7c29, (q15_t)0x7c27, (q15_t)0x7c26, (q15_t)0x7c24, (q15_t)0x7c23, (q15_t)0x7c21, (q15_t)0x7c20, (q15_t)0x7c1e, + (q15_t)0x7c1c, (q15_t)0x7c1b, (q15_t)0x7c19, (q15_t)0x7c18, (q15_t)0x7c16, (q15_t)0x7c15, (q15_t)0x7c13, (q15_t)0x7c12, + (q15_t)0x7c10, (q15_t)0x7c0f, (q15_t)0x7c0d, (q15_t)0x7c0b, (q15_t)0x7c0a, (q15_t)0x7c08, (q15_t)0x7c07, (q15_t)0x7c05, + (q15_t)0x7c04, (q15_t)0x7c02, (q15_t)0x7c01, (q15_t)0x7bff, (q15_t)0x7bfd, (q15_t)0x7bfc, (q15_t)0x7bfa, (q15_t)0x7bf9, + (q15_t)0x7bf7, (q15_t)0x7bf6, (q15_t)0x7bf4, (q15_t)0x7bf3, (q15_t)0x7bf1, (q15_t)0x7bef, (q15_t)0x7bee, (q15_t)0x7bec, + (q15_t)0x7beb, (q15_t)0x7be9, (q15_t)0x7be8, (q15_t)0x7be6, (q15_t)0x7be4, (q15_t)0x7be3, (q15_t)0x7be1, (q15_t)0x7be0, + (q15_t)0x7bde, (q15_t)0x7bdc, (q15_t)0x7bdb, (q15_t)0x7bd9, (q15_t)0x7bd8, (q15_t)0x7bd6, (q15_t)0x7bd5, (q15_t)0x7bd3, + (q15_t)0x7bd1, (q15_t)0x7bd0, (q15_t)0x7bce, (q15_t)0x7bcd, (q15_t)0x7bcb, (q15_t)0x7bc9, (q15_t)0x7bc8, (q15_t)0x7bc6, + (q15_t)0x7bc5, (q15_t)0x7bc3, (q15_t)0x7bc1, (q15_t)0x7bc0, (q15_t)0x7bbe, (q15_t)0x7bbd, (q15_t)0x7bbb, (q15_t)0x7bb9, + (q15_t)0x7bb8, (q15_t)0x7bb6, (q15_t)0x7bb5, (q15_t)0x7bb3, (q15_t)0x7bb1, (q15_t)0x7bb0, (q15_t)0x7bae, (q15_t)0x7bac, + (q15_t)0x7bab, (q15_t)0x7ba9, (q15_t)0x7ba8, (q15_t)0x7ba6, (q15_t)0x7ba4, (q15_t)0x7ba3, (q15_t)0x7ba1, (q15_t)0x7b9f, + (q15_t)0x7b9e, (q15_t)0x7b9c, (q15_t)0x7b9b, (q15_t)0x7b99, (q15_t)0x7b97, (q15_t)0x7b96, (q15_t)0x7b94, (q15_t)0x7b92, + (q15_t)0x7b91, (q15_t)0x7b8f, (q15_t)0x7b8d, (q15_t)0x7b8c, (q15_t)0x7b8a, (q15_t)0x7b89, (q15_t)0x7b87, (q15_t)0x7b85, + (q15_t)0x7b84, (q15_t)0x7b82, (q15_t)0x7b80, (q15_t)0x7b7f, (q15_t)0x7b7d, (q15_t)0x7b7b, (q15_t)0x7b7a, (q15_t)0x7b78, + (q15_t)0x7b76, (q15_t)0x7b75, (q15_t)0x7b73, (q15_t)0x7b71, (q15_t)0x7b70, (q15_t)0x7b6e, (q15_t)0x7b6c, (q15_t)0x7b6b, + (q15_t)0x7b69, (q15_t)0x7b67, (q15_t)0x7b66, (q15_t)0x7b64, (q15_t)0x7b62, (q15_t)0x7b61, (q15_t)0x7b5f, (q15_t)0x7b5d, + (q15_t)0x7b5c, (q15_t)0x7b5a, (q15_t)0x7b58, (q15_t)0x7b57, (q15_t)0x7b55, (q15_t)0x7b53, (q15_t)0x7b52, (q15_t)0x7b50, + (q15_t)0x7b4e, (q15_t)0x7b4d, (q15_t)0x7b4b, (q15_t)0x7b49, (q15_t)0x7b47, (q15_t)0x7b46, (q15_t)0x7b44, (q15_t)0x7b42, + (q15_t)0x7b41, (q15_t)0x7b3f, (q15_t)0x7b3d, (q15_t)0x7b3c, (q15_t)0x7b3a, (q15_t)0x7b38, (q15_t)0x7b37, (q15_t)0x7b35, + (q15_t)0x7b33, (q15_t)0x7b31, (q15_t)0x7b30, (q15_t)0x7b2e, (q15_t)0x7b2c, (q15_t)0x7b2b, (q15_t)0x7b29, (q15_t)0x7b27, + (q15_t)0x7b25, (q15_t)0x7b24, (q15_t)0x7b22, (q15_t)0x7b20, (q15_t)0x7b1f, (q15_t)0x7b1d, (q15_t)0x7b1b, (q15_t)0x7b19, + (q15_t)0x7b18, (q15_t)0x7b16, (q15_t)0x7b14, (q15_t)0x7b13, (q15_t)0x7b11, (q15_t)0x7b0f, (q15_t)0x7b0d, (q15_t)0x7b0c, + (q15_t)0x7b0a, (q15_t)0x7b08, (q15_t)0x7b06, (q15_t)0x7b05, (q15_t)0x7b03, (q15_t)0x7b01, (q15_t)0x7aff, (q15_t)0x7afe, + (q15_t)0x7afc, (q15_t)0x7afa, (q15_t)0x7af8, (q15_t)0x7af7, (q15_t)0x7af5, (q15_t)0x7af3, (q15_t)0x7af2, (q15_t)0x7af0, + (q15_t)0x7aee, (q15_t)0x7aec, (q15_t)0x7aeb, (q15_t)0x7ae9, (q15_t)0x7ae7, (q15_t)0x7ae5, (q15_t)0x7ae3, (q15_t)0x7ae2, + (q15_t)0x7ae0, (q15_t)0x7ade, (q15_t)0x7adc, (q15_t)0x7adb, (q15_t)0x7ad9, (q15_t)0x7ad7, (q15_t)0x7ad5, (q15_t)0x7ad4, + (q15_t)0x7ad2, (q15_t)0x7ad0, (q15_t)0x7ace, (q15_t)0x7acd, (q15_t)0x7acb, (q15_t)0x7ac9, (q15_t)0x7ac7, (q15_t)0x7ac5, + (q15_t)0x7ac4, (q15_t)0x7ac2, (q15_t)0x7ac0, (q15_t)0x7abe, (q15_t)0x7abd, (q15_t)0x7abb, (q15_t)0x7ab9, (q15_t)0x7ab7, + (q15_t)0x7ab5, (q15_t)0x7ab4, (q15_t)0x7ab2, (q15_t)0x7ab0, (q15_t)0x7aae, (q15_t)0x7aac, (q15_t)0x7aab, (q15_t)0x7aa9, + (q15_t)0x7aa7, (q15_t)0x7aa5, (q15_t)0x7aa3, (q15_t)0x7aa2, (q15_t)0x7aa0, (q15_t)0x7a9e, (q15_t)0x7a9c, (q15_t)0x7a9a, + (q15_t)0x7a99, (q15_t)0x7a97, (q15_t)0x7a95, (q15_t)0x7a93, (q15_t)0x7a91, (q15_t)0x7a90, (q15_t)0x7a8e, (q15_t)0x7a8c, + (q15_t)0x7a8a, (q15_t)0x7a88, (q15_t)0x7a87, (q15_t)0x7a85, (q15_t)0x7a83, (q15_t)0x7a81, (q15_t)0x7a7f, (q15_t)0x7a7d, + (q15_t)0x7a7c, (q15_t)0x7a7a, (q15_t)0x7a78, (q15_t)0x7a76, (q15_t)0x7a74, (q15_t)0x7a72, (q15_t)0x7a71, (q15_t)0x7a6f, + (q15_t)0x7a6d, (q15_t)0x7a6b, (q15_t)0x7a69, (q15_t)0x7a67, (q15_t)0x7a66, (q15_t)0x7a64, (q15_t)0x7a62, (q15_t)0x7a60, + (q15_t)0x7a5e, (q15_t)0x7a5c, (q15_t)0x7a5b, (q15_t)0x7a59, (q15_t)0x7a57, (q15_t)0x7a55, (q15_t)0x7a53, (q15_t)0x7a51, + (q15_t)0x7a4f, (q15_t)0x7a4e, (q15_t)0x7a4c, (q15_t)0x7a4a, (q15_t)0x7a48, (q15_t)0x7a46, (q15_t)0x7a44, (q15_t)0x7a42, + (q15_t)0x7a41, (q15_t)0x7a3f, (q15_t)0x7a3d, (q15_t)0x7a3b, (q15_t)0x7a39, (q15_t)0x7a37, (q15_t)0x7a35, (q15_t)0x7a34, + (q15_t)0x7a32, (q15_t)0x7a30, (q15_t)0x7a2e, (q15_t)0x7a2c, (q15_t)0x7a2a, (q15_t)0x7a28, (q15_t)0x7a26, (q15_t)0x7a25, + (q15_t)0x7a23, (q15_t)0x7a21, (q15_t)0x7a1f, (q15_t)0x7a1d, (q15_t)0x7a1b, (q15_t)0x7a19, (q15_t)0x7a17, (q15_t)0x7a16, + (q15_t)0x7a14, (q15_t)0x7a12, (q15_t)0x7a10, (q15_t)0x7a0e, (q15_t)0x7a0c, (q15_t)0x7a0a, (q15_t)0x7a08, (q15_t)0x7a06, + (q15_t)0x7a04, (q15_t)0x7a03, (q15_t)0x7a01, (q15_t)0x79ff, (q15_t)0x79fd, (q15_t)0x79fb, (q15_t)0x79f9, (q15_t)0x79f7, + (q15_t)0x79f5, (q15_t)0x79f3, (q15_t)0x79f1, (q15_t)0x79f0, (q15_t)0x79ee, (q15_t)0x79ec, (q15_t)0x79ea, (q15_t)0x79e8, + (q15_t)0x79e6, (q15_t)0x79e4, (q15_t)0x79e2, (q15_t)0x79e0, (q15_t)0x79de, (q15_t)0x79dc, (q15_t)0x79da, (q15_t)0x79d9, + (q15_t)0x79d7, (q15_t)0x79d5, (q15_t)0x79d3, (q15_t)0x79d1, (q15_t)0x79cf, (q15_t)0x79cd, (q15_t)0x79cb, (q15_t)0x79c9, + (q15_t)0x79c7, (q15_t)0x79c5, (q15_t)0x79c3, (q15_t)0x79c1, (q15_t)0x79bf, (q15_t)0x79bd, (q15_t)0x79bc, (q15_t)0x79ba, + (q15_t)0x79b8, (q15_t)0x79b6, (q15_t)0x79b4, (q15_t)0x79b2, (q15_t)0x79b0, (q15_t)0x79ae, (q15_t)0x79ac, (q15_t)0x79aa, + (q15_t)0x79a8, (q15_t)0x79a6, (q15_t)0x79a4, (q15_t)0x79a2, (q15_t)0x79a0, (q15_t)0x799e, (q15_t)0x799c, (q15_t)0x799a, + (q15_t)0x7998, (q15_t)0x7996, (q15_t)0x7994, (q15_t)0x7992, (q15_t)0x7991, (q15_t)0x798f, (q15_t)0x798d, (q15_t)0x798b, + (q15_t)0x7989, (q15_t)0x7987, (q15_t)0x7985, (q15_t)0x7983, (q15_t)0x7981, (q15_t)0x797f, (q15_t)0x797d, (q15_t)0x797b, + (q15_t)0x7979, (q15_t)0x7977, (q15_t)0x7975, (q15_t)0x7973, (q15_t)0x7971, (q15_t)0x796f, (q15_t)0x796d, (q15_t)0x796b, + (q15_t)0x7969, (q15_t)0x7967, (q15_t)0x7965, (q15_t)0x7963, (q15_t)0x7961, (q15_t)0x795f, (q15_t)0x795d, (q15_t)0x795b, + (q15_t)0x7959, (q15_t)0x7957, (q15_t)0x7955, (q15_t)0x7953, (q15_t)0x7951, (q15_t)0x794f, (q15_t)0x794d, (q15_t)0x794b, + (q15_t)0x7949, (q15_t)0x7947, (q15_t)0x7945, (q15_t)0x7943, (q15_t)0x7941, (q15_t)0x793f, (q15_t)0x793d, (q15_t)0x793b, + (q15_t)0x7939, (q15_t)0x7937, (q15_t)0x7935, (q15_t)0x7933, (q15_t)0x7931, (q15_t)0x792f, (q15_t)0x792d, (q15_t)0x792b, + (q15_t)0x7929, (q15_t)0x7927, (q15_t)0x7925, (q15_t)0x7923, (q15_t)0x7921, (q15_t)0x791f, (q15_t)0x791d, (q15_t)0x791a, + (q15_t)0x7918, (q15_t)0x7916, (q15_t)0x7914, (q15_t)0x7912, (q15_t)0x7910, (q15_t)0x790e, (q15_t)0x790c, (q15_t)0x790a, + (q15_t)0x7908, (q15_t)0x7906, (q15_t)0x7904, (q15_t)0x7902, (q15_t)0x7900, (q15_t)0x78fe, (q15_t)0x78fc, (q15_t)0x78fa, + (q15_t)0x78f8, (q15_t)0x78f6, (q15_t)0x78f4, (q15_t)0x78f2, (q15_t)0x78f0, (q15_t)0x78ed, (q15_t)0x78eb, (q15_t)0x78e9, + (q15_t)0x78e7, (q15_t)0x78e5, (q15_t)0x78e3, (q15_t)0x78e1, (q15_t)0x78df, (q15_t)0x78dd, (q15_t)0x78db, (q15_t)0x78d9, + (q15_t)0x78d7, (q15_t)0x78d5, (q15_t)0x78d3, (q15_t)0x78d1, (q15_t)0x78ce, (q15_t)0x78cc, (q15_t)0x78ca, (q15_t)0x78c8, + (q15_t)0x78c6, (q15_t)0x78c4, (q15_t)0x78c2, (q15_t)0x78c0, (q15_t)0x78be, (q15_t)0x78bc, (q15_t)0x78ba, (q15_t)0x78b8, + (q15_t)0x78b5, (q15_t)0x78b3, (q15_t)0x78b1, (q15_t)0x78af, (q15_t)0x78ad, (q15_t)0x78ab, (q15_t)0x78a9, (q15_t)0x78a7, + (q15_t)0x78a5, (q15_t)0x78a3, (q15_t)0x78a0, (q15_t)0x789e, (q15_t)0x789c, (q15_t)0x789a, (q15_t)0x7898, (q15_t)0x7896, + (q15_t)0x7894, (q15_t)0x7892, (q15_t)0x7890, (q15_t)0x788e, (q15_t)0x788b, (q15_t)0x7889, (q15_t)0x7887, (q15_t)0x7885, + (q15_t)0x7883, (q15_t)0x7881, (q15_t)0x787f, (q15_t)0x787d, (q15_t)0x787a, (q15_t)0x7878, (q15_t)0x7876, (q15_t)0x7874, + (q15_t)0x7872, (q15_t)0x7870, (q15_t)0x786e, (q15_t)0x786c, (q15_t)0x7869, (q15_t)0x7867, (q15_t)0x7865, (q15_t)0x7863, + (q15_t)0x7861, (q15_t)0x785f, (q15_t)0x785d, (q15_t)0x785b, (q15_t)0x7858, (q15_t)0x7856, (q15_t)0x7854, (q15_t)0x7852, + (q15_t)0x7850, (q15_t)0x784e, (q15_t)0x784c, (q15_t)0x7849, (q15_t)0x7847, (q15_t)0x7845, (q15_t)0x7843, (q15_t)0x7841, + (q15_t)0x783f, (q15_t)0x783c, (q15_t)0x783a, (q15_t)0x7838, (q15_t)0x7836, (q15_t)0x7834, (q15_t)0x7832, (q15_t)0x7830, + (q15_t)0x782d, (q15_t)0x782b, (q15_t)0x7829, (q15_t)0x7827, (q15_t)0x7825, (q15_t)0x7823, (q15_t)0x7820, (q15_t)0x781e, + (q15_t)0x781c, (q15_t)0x781a, (q15_t)0x7818, (q15_t)0x7816, (q15_t)0x7813, (q15_t)0x7811, (q15_t)0x780f, (q15_t)0x780d, + (q15_t)0x780b, (q15_t)0x7808, (q15_t)0x7806, (q15_t)0x7804, (q15_t)0x7802, (q15_t)0x7800, (q15_t)0x77fe, (q15_t)0x77fb, + (q15_t)0x77f9, (q15_t)0x77f7, (q15_t)0x77f5, (q15_t)0x77f3, (q15_t)0x77f0, (q15_t)0x77ee, (q15_t)0x77ec, (q15_t)0x77ea, + (q15_t)0x77e8, (q15_t)0x77e5, (q15_t)0x77e3, (q15_t)0x77e1, (q15_t)0x77df, (q15_t)0x77dd, (q15_t)0x77da, (q15_t)0x77d8, + (q15_t)0x77d6, (q15_t)0x77d4, (q15_t)0x77d2, (q15_t)0x77cf, (q15_t)0x77cd, (q15_t)0x77cb, (q15_t)0x77c9, (q15_t)0x77c6, + (q15_t)0x77c4, (q15_t)0x77c2, (q15_t)0x77c0, (q15_t)0x77be, (q15_t)0x77bb, (q15_t)0x77b9, (q15_t)0x77b7, (q15_t)0x77b5, + (q15_t)0x77b2, (q15_t)0x77b0, (q15_t)0x77ae, (q15_t)0x77ac, (q15_t)0x77aa, (q15_t)0x77a7, (q15_t)0x77a5, (q15_t)0x77a3, + (q15_t)0x77a1, (q15_t)0x779e, (q15_t)0x779c, (q15_t)0x779a, (q15_t)0x7798, (q15_t)0x7795, (q15_t)0x7793, (q15_t)0x7791, + (q15_t)0x778f, (q15_t)0x778c, (q15_t)0x778a, (q15_t)0x7788, (q15_t)0x7786, (q15_t)0x7783, (q15_t)0x7781, (q15_t)0x777f, + (q15_t)0x777d, (q15_t)0x777a, (q15_t)0x7778, (q15_t)0x7776, (q15_t)0x7774, (q15_t)0x7771, (q15_t)0x776f, (q15_t)0x776d, + (q15_t)0x776b, (q15_t)0x7768, (q15_t)0x7766, (q15_t)0x7764, (q15_t)0x7762, (q15_t)0x775f, (q15_t)0x775d, (q15_t)0x775b, + (q15_t)0x7759, (q15_t)0x7756, (q15_t)0x7754, (q15_t)0x7752, (q15_t)0x774f, (q15_t)0x774d, (q15_t)0x774b, (q15_t)0x7749, + (q15_t)0x7746, (q15_t)0x7744, (q15_t)0x7742, (q15_t)0x773f, (q15_t)0x773d, (q15_t)0x773b, (q15_t)0x7739, (q15_t)0x7736, + (q15_t)0x7734, (q15_t)0x7732, (q15_t)0x772f, (q15_t)0x772d, (q15_t)0x772b, (q15_t)0x7729, (q15_t)0x7726, (q15_t)0x7724, + (q15_t)0x7722, (q15_t)0x771f, (q15_t)0x771d, (q15_t)0x771b, (q15_t)0x7719, (q15_t)0x7716, (q15_t)0x7714, (q15_t)0x7712, + (q15_t)0x770f, (q15_t)0x770d, (q15_t)0x770b, (q15_t)0x7708, (q15_t)0x7706, (q15_t)0x7704, (q15_t)0x7701, (q15_t)0x76ff, + (q15_t)0x76fd, (q15_t)0x76fa, (q15_t)0x76f8, (q15_t)0x76f6, (q15_t)0x76f4, (q15_t)0x76f1, (q15_t)0x76ef, (q15_t)0x76ed, + (q15_t)0x76ea, (q15_t)0x76e8, (q15_t)0x76e6, (q15_t)0x76e3, (q15_t)0x76e1, (q15_t)0x76df, (q15_t)0x76dc, (q15_t)0x76da, + (q15_t)0x76d8, (q15_t)0x76d5, (q15_t)0x76d3, (q15_t)0x76d1, (q15_t)0x76ce, (q15_t)0x76cc, (q15_t)0x76ca, (q15_t)0x76c7, + (q15_t)0x76c5, (q15_t)0x76c3, (q15_t)0x76c0, (q15_t)0x76be, (q15_t)0x76bc, (q15_t)0x76b9, (q15_t)0x76b7, (q15_t)0x76b4, + (q15_t)0x76b2, (q15_t)0x76b0, (q15_t)0x76ad, (q15_t)0x76ab, (q15_t)0x76a9, (q15_t)0x76a6, (q15_t)0x76a4, (q15_t)0x76a2, + (q15_t)0x769f, (q15_t)0x769d, (q15_t)0x769b, (q15_t)0x7698, (q15_t)0x7696, (q15_t)0x7693, (q15_t)0x7691, (q15_t)0x768f, + (q15_t)0x768c, (q15_t)0x768a, (q15_t)0x7688, (q15_t)0x7685, (q15_t)0x7683, (q15_t)0x7681, (q15_t)0x767e, (q15_t)0x767c, + (q15_t)0x7679, (q15_t)0x7677, (q15_t)0x7675, (q15_t)0x7672, (q15_t)0x7670, (q15_t)0x766d, (q15_t)0x766b, (q15_t)0x7669, + (q15_t)0x7666, (q15_t)0x7664, (q15_t)0x7662, (q15_t)0x765f, (q15_t)0x765d, (q15_t)0x765a, (q15_t)0x7658, (q15_t)0x7656, + (q15_t)0x7653, (q15_t)0x7651, (q15_t)0x764e, (q15_t)0x764c, (q15_t)0x764a, (q15_t)0x7647, (q15_t)0x7645, (q15_t)0x7642, + (q15_t)0x7640, (q15_t)0x763e, (q15_t)0x763b, (q15_t)0x7639, (q15_t)0x7636, (q15_t)0x7634, (q15_t)0x7632, (q15_t)0x762f, + (q15_t)0x762d, (q15_t)0x762a, (q15_t)0x7628, (q15_t)0x7625, (q15_t)0x7623, (q15_t)0x7621, (q15_t)0x761e, (q15_t)0x761c, + (q15_t)0x7619, (q15_t)0x7617, (q15_t)0x7615, (q15_t)0x7612, (q15_t)0x7610, (q15_t)0x760d, (q15_t)0x760b, (q15_t)0x7608, + (q15_t)0x7606, (q15_t)0x7604, (q15_t)0x7601, (q15_t)0x75ff, (q15_t)0x75fc, (q15_t)0x75fa, (q15_t)0x75f7, (q15_t)0x75f5, + (q15_t)0x75f2, (q15_t)0x75f0, (q15_t)0x75ee, (q15_t)0x75eb, (q15_t)0x75e9, (q15_t)0x75e6, (q15_t)0x75e4, (q15_t)0x75e1, + (q15_t)0x75df, (q15_t)0x75dc, (q15_t)0x75da, (q15_t)0x75d8, (q15_t)0x75d5, (q15_t)0x75d3, (q15_t)0x75d0, (q15_t)0x75ce, + (q15_t)0x75cb, (q15_t)0x75c9, (q15_t)0x75c6, (q15_t)0x75c4, (q15_t)0x75c1, (q15_t)0x75bf, (q15_t)0x75bc, (q15_t)0x75ba, + (q15_t)0x75b8, (q15_t)0x75b5, (q15_t)0x75b3, (q15_t)0x75b0, (q15_t)0x75ae, (q15_t)0x75ab, (q15_t)0x75a9, (q15_t)0x75a6, + (q15_t)0x75a4, (q15_t)0x75a1, (q15_t)0x759f, (q15_t)0x759c, (q15_t)0x759a, (q15_t)0x7597, (q15_t)0x7595, (q15_t)0x7592, + (q15_t)0x7590, (q15_t)0x758d, (q15_t)0x758b, (q15_t)0x7588, (q15_t)0x7586, (q15_t)0x7584, (q15_t)0x7581, (q15_t)0x757f, + (q15_t)0x757c, (q15_t)0x757a, (q15_t)0x7577, (q15_t)0x7575, (q15_t)0x7572, (q15_t)0x7570, (q15_t)0x756d, (q15_t)0x756b, + (q15_t)0x7568, (q15_t)0x7566, (q15_t)0x7563, (q15_t)0x7561, (q15_t)0x755e, (q15_t)0x755c, (q15_t)0x7559, (q15_t)0x7556, + (q15_t)0x7554, (q15_t)0x7551, (q15_t)0x754f, (q15_t)0x754c, (q15_t)0x754a, (q15_t)0x7547, (q15_t)0x7545, (q15_t)0x7542, + (q15_t)0x7540, (q15_t)0x753d, (q15_t)0x753b, (q15_t)0x7538, (q15_t)0x7536, (q15_t)0x7533, (q15_t)0x7531, (q15_t)0x752e, + (q15_t)0x752c, (q15_t)0x7529, (q15_t)0x7527, (q15_t)0x7524, (q15_t)0x7522, (q15_t)0x751f, (q15_t)0x751c, (q15_t)0x751a, + (q15_t)0x7517, (q15_t)0x7515, (q15_t)0x7512, (q15_t)0x7510, (q15_t)0x750d, (q15_t)0x750b, (q15_t)0x7508, (q15_t)0x7506, + (q15_t)0x7503, (q15_t)0x7501, (q15_t)0x74fe, (q15_t)0x74fb, (q15_t)0x74f9, (q15_t)0x74f6, (q15_t)0x74f4, (q15_t)0x74f1, + (q15_t)0x74ef, (q15_t)0x74ec, (q15_t)0x74ea, (q15_t)0x74e7, (q15_t)0x74e4, (q15_t)0x74e2, (q15_t)0x74df, (q15_t)0x74dd, + (q15_t)0x74da, (q15_t)0x74d8, (q15_t)0x74d5, (q15_t)0x74d2, (q15_t)0x74d0, (q15_t)0x74cd, (q15_t)0x74cb, (q15_t)0x74c8, + (q15_t)0x74c6, (q15_t)0x74c3, (q15_t)0x74c0, (q15_t)0x74be, (q15_t)0x74bb, (q15_t)0x74b9, (q15_t)0x74b6, (q15_t)0x74b4, + (q15_t)0x74b1, (q15_t)0x74ae, (q15_t)0x74ac, (q15_t)0x74a9, (q15_t)0x74a7, (q15_t)0x74a4, (q15_t)0x74a1, (q15_t)0x749f, + (q15_t)0x749c, (q15_t)0x749a, (q15_t)0x7497, (q15_t)0x7495, (q15_t)0x7492, (q15_t)0x748f, (q15_t)0x748d, (q15_t)0x748a, + (q15_t)0x7488, (q15_t)0x7485, (q15_t)0x7482, (q15_t)0x7480, (q15_t)0x747d, (q15_t)0x747b, (q15_t)0x7478, (q15_t)0x7475, + (q15_t)0x7473, (q15_t)0x7470, (q15_t)0x746d, (q15_t)0x746b, (q15_t)0x7468, (q15_t)0x7466, (q15_t)0x7463, (q15_t)0x7460, + (q15_t)0x745e, (q15_t)0x745b, (q15_t)0x7459, (q15_t)0x7456, (q15_t)0x7453, (q15_t)0x7451, (q15_t)0x744e, (q15_t)0x744b, + (q15_t)0x7449, (q15_t)0x7446, (q15_t)0x7444, (q15_t)0x7441, (q15_t)0x743e, (q15_t)0x743c, (q15_t)0x7439, (q15_t)0x7436, + (q15_t)0x7434, (q15_t)0x7431, (q15_t)0x742f, (q15_t)0x742c, (q15_t)0x7429, (q15_t)0x7427, (q15_t)0x7424, (q15_t)0x7421, + (q15_t)0x741f, (q15_t)0x741c, (q15_t)0x7419, (q15_t)0x7417, (q15_t)0x7414, (q15_t)0x7411, (q15_t)0x740f, (q15_t)0x740c, + (q15_t)0x740a, (q15_t)0x7407, (q15_t)0x7404, (q15_t)0x7402, (q15_t)0x73ff, (q15_t)0x73fc, (q15_t)0x73fa, (q15_t)0x73f7, + (q15_t)0x73f4, (q15_t)0x73f2, (q15_t)0x73ef, (q15_t)0x73ec, (q15_t)0x73ea, (q15_t)0x73e7, (q15_t)0x73e4, (q15_t)0x73e2, + (q15_t)0x73df, (q15_t)0x73dc, (q15_t)0x73da, (q15_t)0x73d7, (q15_t)0x73d4, (q15_t)0x73d2, (q15_t)0x73cf, (q15_t)0x73cc, + (q15_t)0x73ca, (q15_t)0x73c7, (q15_t)0x73c4, (q15_t)0x73c1, (q15_t)0x73bf, (q15_t)0x73bc, (q15_t)0x73b9, (q15_t)0x73b7, + (q15_t)0x73b4, (q15_t)0x73b1, (q15_t)0x73af, (q15_t)0x73ac, (q15_t)0x73a9, (q15_t)0x73a7, (q15_t)0x73a4, (q15_t)0x73a1, + (q15_t)0x739f, (q15_t)0x739c, (q15_t)0x7399, (q15_t)0x7396, (q15_t)0x7394, (q15_t)0x7391, (q15_t)0x738e, (q15_t)0x738c, + (q15_t)0x7389, (q15_t)0x7386, (q15_t)0x7384, (q15_t)0x7381, (q15_t)0x737e, (q15_t)0x737b, (q15_t)0x7379, (q15_t)0x7376, + (q15_t)0x7373, (q15_t)0x7371, (q15_t)0x736e, (q15_t)0x736b, (q15_t)0x7368, (q15_t)0x7366, (q15_t)0x7363, (q15_t)0x7360, + (q15_t)0x735e, (q15_t)0x735b, (q15_t)0x7358, (q15_t)0x7355, (q15_t)0x7353, (q15_t)0x7350, (q15_t)0x734d, (q15_t)0x734a, + (q15_t)0x7348, (q15_t)0x7345, (q15_t)0x7342, (q15_t)0x7340, (q15_t)0x733d, (q15_t)0x733a, (q15_t)0x7337, (q15_t)0x7335, + (q15_t)0x7332, (q15_t)0x732f, (q15_t)0x732c, (q15_t)0x732a, (q15_t)0x7327, (q15_t)0x7324, (q15_t)0x7321, (q15_t)0x731f, + (q15_t)0x731c, (q15_t)0x7319, (q15_t)0x7316, (q15_t)0x7314, (q15_t)0x7311, (q15_t)0x730e, (q15_t)0x730b, (q15_t)0x7309, + (q15_t)0x7306, (q15_t)0x7303, (q15_t)0x7300, (q15_t)0x72fe, (q15_t)0x72fb, (q15_t)0x72f8, (q15_t)0x72f5, (q15_t)0x72f3, + (q15_t)0x72f0, (q15_t)0x72ed, (q15_t)0x72ea, (q15_t)0x72e8, (q15_t)0x72e5, (q15_t)0x72e2, (q15_t)0x72df, (q15_t)0x72dc, + (q15_t)0x72da, (q15_t)0x72d7, (q15_t)0x72d4, (q15_t)0x72d1, (q15_t)0x72cf, (q15_t)0x72cc, (q15_t)0x72c9, (q15_t)0x72c6, + (q15_t)0x72c3, (q15_t)0x72c1, (q15_t)0x72be, (q15_t)0x72bb, (q15_t)0x72b8, (q15_t)0x72b5, (q15_t)0x72b3, (q15_t)0x72b0, + (q15_t)0x72ad, (q15_t)0x72aa, (q15_t)0x72a8, (q15_t)0x72a5, (q15_t)0x72a2, (q15_t)0x729f, (q15_t)0x729c, (q15_t)0x729a, + (q15_t)0x7297, (q15_t)0x7294, (q15_t)0x7291, (q15_t)0x728e, (q15_t)0x728c, (q15_t)0x7289, (q15_t)0x7286, (q15_t)0x7283, + (q15_t)0x7280, (q15_t)0x727e, (q15_t)0x727b, (q15_t)0x7278, (q15_t)0x7275, (q15_t)0x7272, (q15_t)0x726f, (q15_t)0x726d, + (q15_t)0x726a, (q15_t)0x7267, (q15_t)0x7264, (q15_t)0x7261, (q15_t)0x725f, (q15_t)0x725c, (q15_t)0x7259, (q15_t)0x7256, + (q15_t)0x7253, (q15_t)0x7250, (q15_t)0x724e, (q15_t)0x724b, (q15_t)0x7248, (q15_t)0x7245, (q15_t)0x7242, (q15_t)0x723f, + (q15_t)0x723d, (q15_t)0x723a, (q15_t)0x7237, (q15_t)0x7234, (q15_t)0x7231, (q15_t)0x722e, (q15_t)0x722c, (q15_t)0x7229, + (q15_t)0x7226, (q15_t)0x7223, (q15_t)0x7220, (q15_t)0x721d, (q15_t)0x721b, (q15_t)0x7218, (q15_t)0x7215, (q15_t)0x7212, + (q15_t)0x720f, (q15_t)0x720c, (q15_t)0x7209, (q15_t)0x7207, (q15_t)0x7204, (q15_t)0x7201, (q15_t)0x71fe, (q15_t)0x71fb, + (q15_t)0x71f8, (q15_t)0x71f5, (q15_t)0x71f3, (q15_t)0x71f0, (q15_t)0x71ed, (q15_t)0x71ea, (q15_t)0x71e7, (q15_t)0x71e4, + (q15_t)0x71e1, (q15_t)0x71df, (q15_t)0x71dc, (q15_t)0x71d9, (q15_t)0x71d6, (q15_t)0x71d3, (q15_t)0x71d0, (q15_t)0x71cd, + (q15_t)0x71ca, (q15_t)0x71c8, (q15_t)0x71c5, (q15_t)0x71c2, (q15_t)0x71bf, (q15_t)0x71bc, (q15_t)0x71b9, (q15_t)0x71b6, + (q15_t)0x71b3, (q15_t)0x71b0, (q15_t)0x71ae, (q15_t)0x71ab, (q15_t)0x71a8, (q15_t)0x71a5, (q15_t)0x71a2, (q15_t)0x719f, + (q15_t)0x719c, (q15_t)0x7199, (q15_t)0x7196, (q15_t)0x7194, (q15_t)0x7191, (q15_t)0x718e, (q15_t)0x718b, (q15_t)0x7188, + (q15_t)0x7185, (q15_t)0x7182, (q15_t)0x717f, (q15_t)0x717c, (q15_t)0x7179, (q15_t)0x7177, (q15_t)0x7174, (q15_t)0x7171, + (q15_t)0x716e, (q15_t)0x716b, (q15_t)0x7168, (q15_t)0x7165, (q15_t)0x7162, (q15_t)0x715f, (q15_t)0x715c, (q15_t)0x7159, + (q15_t)0x7156, (q15_t)0x7154, (q15_t)0x7151, (q15_t)0x714e, (q15_t)0x714b, (q15_t)0x7148, (q15_t)0x7145, (q15_t)0x7142, + (q15_t)0x713f, (q15_t)0x713c, (q15_t)0x7139, (q15_t)0x7136, (q15_t)0x7133, (q15_t)0x7130, (q15_t)0x712d, (q15_t)0x712b, + (q15_t)0x7128, (q15_t)0x7125, (q15_t)0x7122, (q15_t)0x711f, (q15_t)0x711c, (q15_t)0x7119, (q15_t)0x7116, (q15_t)0x7113, + (q15_t)0x7110, (q15_t)0x710d, (q15_t)0x710a, (q15_t)0x7107, (q15_t)0x7104, (q15_t)0x7101, (q15_t)0x70fe, (q15_t)0x70fb, + (q15_t)0x70f8, (q15_t)0x70f6, (q15_t)0x70f3, (q15_t)0x70f0, (q15_t)0x70ed, (q15_t)0x70ea, (q15_t)0x70e7, (q15_t)0x70e4, + (q15_t)0x70e1, (q15_t)0x70de, (q15_t)0x70db, (q15_t)0x70d8, (q15_t)0x70d5, (q15_t)0x70d2, (q15_t)0x70cf, (q15_t)0x70cc, + (q15_t)0x70c9, (q15_t)0x70c6, (q15_t)0x70c3, (q15_t)0x70c0, (q15_t)0x70bd, (q15_t)0x70ba, (q15_t)0x70b7, (q15_t)0x70b4, + (q15_t)0x70b1, (q15_t)0x70ae, (q15_t)0x70ab, (q15_t)0x70a8, (q15_t)0x70a5, (q15_t)0x70a2, (q15_t)0x709f, (q15_t)0x709c, + (q15_t)0x7099, (q15_t)0x7096, (q15_t)0x7093, (q15_t)0x7090, (q15_t)0x708d, (q15_t)0x708a, (q15_t)0x7087, (q15_t)0x7084, + (q15_t)0x7081, (q15_t)0x707e, (q15_t)0x707b, (q15_t)0x7078, (q15_t)0x7075, (q15_t)0x7072, (q15_t)0x706f, (q15_t)0x706c, + (q15_t)0x7069, (q15_t)0x7066, (q15_t)0x7063, (q15_t)0x7060, (q15_t)0x705d, (q15_t)0x705a, (q15_t)0x7057, (q15_t)0x7054, + (q15_t)0x7051, (q15_t)0x704e, (q15_t)0x704b, (q15_t)0x7048, (q15_t)0x7045, (q15_t)0x7042, (q15_t)0x703f, (q15_t)0x703c, + (q15_t)0x7039, (q15_t)0x7036, (q15_t)0x7033, (q15_t)0x7030, (q15_t)0x702d, (q15_t)0x702a, (q15_t)0x7027, (q15_t)0x7024, + (q15_t)0x7021, (q15_t)0x701e, (q15_t)0x701b, (q15_t)0x7018, (q15_t)0x7015, (q15_t)0x7012, (q15_t)0x700f, (q15_t)0x700c, + (q15_t)0x7009, (q15_t)0x7006, (q15_t)0x7003, (q15_t)0x7000, (q15_t)0x6ffd, (q15_t)0x6ffa, (q15_t)0x6ff7, (q15_t)0x6ff3, + (q15_t)0x6ff0, (q15_t)0x6fed, (q15_t)0x6fea, (q15_t)0x6fe7, (q15_t)0x6fe4, (q15_t)0x6fe1, (q15_t)0x6fde, (q15_t)0x6fdb, + (q15_t)0x6fd8, (q15_t)0x6fd5, (q15_t)0x6fd2, (q15_t)0x6fcf, (q15_t)0x6fcc, (q15_t)0x6fc9, (q15_t)0x6fc6, (q15_t)0x6fc3, + (q15_t)0x6fc0, (q15_t)0x6fbc, (q15_t)0x6fb9, (q15_t)0x6fb6, (q15_t)0x6fb3, (q15_t)0x6fb0, (q15_t)0x6fad, (q15_t)0x6faa, + (q15_t)0x6fa7, (q15_t)0x6fa4, (q15_t)0x6fa1, (q15_t)0x6f9e, (q15_t)0x6f9b, (q15_t)0x6f98, (q15_t)0x6f95, (q15_t)0x6f91, + (q15_t)0x6f8e, (q15_t)0x6f8b, (q15_t)0x6f88, (q15_t)0x6f85, (q15_t)0x6f82, (q15_t)0x6f7f, (q15_t)0x6f7c, (q15_t)0x6f79, + (q15_t)0x6f76, (q15_t)0x6f73, (q15_t)0x6f70, (q15_t)0x6f6c, (q15_t)0x6f69, (q15_t)0x6f66, (q15_t)0x6f63, (q15_t)0x6f60, + (q15_t)0x6f5d, (q15_t)0x6f5a, (q15_t)0x6f57, (q15_t)0x6f54, (q15_t)0x6f51, (q15_t)0x6f4d, (q15_t)0x6f4a, (q15_t)0x6f47, + (q15_t)0x6f44, (q15_t)0x6f41, (q15_t)0x6f3e, (q15_t)0x6f3b, (q15_t)0x6f38, (q15_t)0x6f35, (q15_t)0x6f31, (q15_t)0x6f2e, + (q15_t)0x6f2b, (q15_t)0x6f28, (q15_t)0x6f25, (q15_t)0x6f22, (q15_t)0x6f1f, (q15_t)0x6f1c, (q15_t)0x6f19, (q15_t)0x6f15, + (q15_t)0x6f12, (q15_t)0x6f0f, (q15_t)0x6f0c, (q15_t)0x6f09, (q15_t)0x6f06, (q15_t)0x6f03, (q15_t)0x6f00, (q15_t)0x6efc, + (q15_t)0x6ef9, (q15_t)0x6ef6, (q15_t)0x6ef3, (q15_t)0x6ef0, (q15_t)0x6eed, (q15_t)0x6eea, (q15_t)0x6ee7, (q15_t)0x6ee3, + (q15_t)0x6ee0, (q15_t)0x6edd, (q15_t)0x6eda, (q15_t)0x6ed7, (q15_t)0x6ed4, (q15_t)0x6ed1, (q15_t)0x6ecd, (q15_t)0x6eca, + (q15_t)0x6ec7, (q15_t)0x6ec4, (q15_t)0x6ec1, (q15_t)0x6ebe, (q15_t)0x6eba, (q15_t)0x6eb7, (q15_t)0x6eb4, (q15_t)0x6eb1, + (q15_t)0x6eae, (q15_t)0x6eab, (q15_t)0x6ea8, (q15_t)0x6ea4, (q15_t)0x6ea1, (q15_t)0x6e9e, (q15_t)0x6e9b, (q15_t)0x6e98, + (q15_t)0x6e95, (q15_t)0x6e91, (q15_t)0x6e8e, (q15_t)0x6e8b, (q15_t)0x6e88, (q15_t)0x6e85, (q15_t)0x6e82, (q15_t)0x6e7e, + (q15_t)0x6e7b, (q15_t)0x6e78, (q15_t)0x6e75, (q15_t)0x6e72, (q15_t)0x6e6f, (q15_t)0x6e6b, (q15_t)0x6e68, (q15_t)0x6e65, + (q15_t)0x6e62, (q15_t)0x6e5f, (q15_t)0x6e5b, (q15_t)0x6e58, (q15_t)0x6e55, (q15_t)0x6e52, (q15_t)0x6e4f, (q15_t)0x6e4c, + (q15_t)0x6e48, (q15_t)0x6e45, (q15_t)0x6e42, (q15_t)0x6e3f, (q15_t)0x6e3c, (q15_t)0x6e38, (q15_t)0x6e35, (q15_t)0x6e32, + (q15_t)0x6e2f, (q15_t)0x6e2c, (q15_t)0x6e28, (q15_t)0x6e25, (q15_t)0x6e22, (q15_t)0x6e1f, (q15_t)0x6e1c, (q15_t)0x6e18, + (q15_t)0x6e15, (q15_t)0x6e12, (q15_t)0x6e0f, (q15_t)0x6e0c, (q15_t)0x6e08, (q15_t)0x6e05, (q15_t)0x6e02, (q15_t)0x6dff, + (q15_t)0x6dfb, (q15_t)0x6df8, (q15_t)0x6df5, (q15_t)0x6df2, (q15_t)0x6def, (q15_t)0x6deb, (q15_t)0x6de8, (q15_t)0x6de5, + (q15_t)0x6de2, (q15_t)0x6ddf, (q15_t)0x6ddb, (q15_t)0x6dd8, (q15_t)0x6dd5, (q15_t)0x6dd2, (q15_t)0x6dce, (q15_t)0x6dcb, + (q15_t)0x6dc8, (q15_t)0x6dc5, (q15_t)0x6dc1, (q15_t)0x6dbe, (q15_t)0x6dbb, (q15_t)0x6db8, (q15_t)0x6db5, (q15_t)0x6db1, + (q15_t)0x6dae, (q15_t)0x6dab, (q15_t)0x6da8, (q15_t)0x6da4, (q15_t)0x6da1, (q15_t)0x6d9e, (q15_t)0x6d9b, (q15_t)0x6d97, + (q15_t)0x6d94, (q15_t)0x6d91, (q15_t)0x6d8e, (q15_t)0x6d8a, (q15_t)0x6d87, (q15_t)0x6d84, (q15_t)0x6d81, (q15_t)0x6d7d, + (q15_t)0x6d7a, (q15_t)0x6d77, (q15_t)0x6d74, (q15_t)0x6d70, (q15_t)0x6d6d, (q15_t)0x6d6a, (q15_t)0x6d67, (q15_t)0x6d63, + (q15_t)0x6d60, (q15_t)0x6d5d, (q15_t)0x6d59, (q15_t)0x6d56, (q15_t)0x6d53, (q15_t)0x6d50, (q15_t)0x6d4c, (q15_t)0x6d49, + (q15_t)0x6d46, (q15_t)0x6d43, (q15_t)0x6d3f, (q15_t)0x6d3c, (q15_t)0x6d39, (q15_t)0x6d36, (q15_t)0x6d32, (q15_t)0x6d2f, + (q15_t)0x6d2c, (q15_t)0x6d28, (q15_t)0x6d25, (q15_t)0x6d22, (q15_t)0x6d1f, (q15_t)0x6d1b, (q15_t)0x6d18, (q15_t)0x6d15, + (q15_t)0x6d11, (q15_t)0x6d0e, (q15_t)0x6d0b, (q15_t)0x6d08, (q15_t)0x6d04, (q15_t)0x6d01, (q15_t)0x6cfe, (q15_t)0x6cfa, + (q15_t)0x6cf7, (q15_t)0x6cf4, (q15_t)0x6cf0, (q15_t)0x6ced, (q15_t)0x6cea, (q15_t)0x6ce7, (q15_t)0x6ce3, (q15_t)0x6ce0, + (q15_t)0x6cdd, (q15_t)0x6cd9, (q15_t)0x6cd6, (q15_t)0x6cd3, (q15_t)0x6ccf, (q15_t)0x6ccc, (q15_t)0x6cc9, (q15_t)0x6cc5, + (q15_t)0x6cc2, (q15_t)0x6cbf, (q15_t)0x6cbc, (q15_t)0x6cb8, (q15_t)0x6cb5, (q15_t)0x6cb2, (q15_t)0x6cae, (q15_t)0x6cab, + (q15_t)0x6ca8, (q15_t)0x6ca4, (q15_t)0x6ca1, (q15_t)0x6c9e, (q15_t)0x6c9a, (q15_t)0x6c97, (q15_t)0x6c94, (q15_t)0x6c90, + (q15_t)0x6c8d, (q15_t)0x6c8a, (q15_t)0x6c86, (q15_t)0x6c83, (q15_t)0x6c80, (q15_t)0x6c7c, (q15_t)0x6c79, (q15_t)0x6c76, + (q15_t)0x6c72, (q15_t)0x6c6f, (q15_t)0x6c6c, (q15_t)0x6c68, (q15_t)0x6c65, (q15_t)0x6c62, (q15_t)0x6c5e, (q15_t)0x6c5b, + (q15_t)0x6c58, (q15_t)0x6c54, (q15_t)0x6c51, (q15_t)0x6c4e, (q15_t)0x6c4a, (q15_t)0x6c47, (q15_t)0x6c44, (q15_t)0x6c40, + (q15_t)0x6c3d, (q15_t)0x6c39, (q15_t)0x6c36, (q15_t)0x6c33, (q15_t)0x6c2f, (q15_t)0x6c2c, (q15_t)0x6c29, (q15_t)0x6c25, + (q15_t)0x6c22, (q15_t)0x6c1f, (q15_t)0x6c1b, (q15_t)0x6c18, (q15_t)0x6c15, (q15_t)0x6c11, (q15_t)0x6c0e, (q15_t)0x6c0a, + (q15_t)0x6c07, (q15_t)0x6c04, (q15_t)0x6c00, (q15_t)0x6bfd, (q15_t)0x6bfa, (q15_t)0x6bf6, (q15_t)0x6bf3, (q15_t)0x6bef, + (q15_t)0x6bec, (q15_t)0x6be9, (q15_t)0x6be5, (q15_t)0x6be2, (q15_t)0x6bdf, (q15_t)0x6bdb, (q15_t)0x6bd8, (q15_t)0x6bd4, + (q15_t)0x6bd1, (q15_t)0x6bce, (q15_t)0x6bca, (q15_t)0x6bc7, (q15_t)0x6bc3, (q15_t)0x6bc0, (q15_t)0x6bbd, (q15_t)0x6bb9, + (q15_t)0x6bb6, (q15_t)0x6bb2, (q15_t)0x6baf, (q15_t)0x6bac, (q15_t)0x6ba8, (q15_t)0x6ba5, (q15_t)0x6ba1, (q15_t)0x6b9e, + (q15_t)0x6b9b, (q15_t)0x6b97, (q15_t)0x6b94, (q15_t)0x6b90, (q15_t)0x6b8d, (q15_t)0x6b8a, (q15_t)0x6b86, (q15_t)0x6b83, + (q15_t)0x6b7f, (q15_t)0x6b7c, (q15_t)0x6b79, (q15_t)0x6b75, (q15_t)0x6b72, (q15_t)0x6b6e, (q15_t)0x6b6b, (q15_t)0x6b68, + (q15_t)0x6b64, (q15_t)0x6b61, (q15_t)0x6b5d, (q15_t)0x6b5a, (q15_t)0x6b56, (q15_t)0x6b53, (q15_t)0x6b50, (q15_t)0x6b4c, + (q15_t)0x6b49, (q15_t)0x6b45, (q15_t)0x6b42, (q15_t)0x6b3e, (q15_t)0x6b3b, (q15_t)0x6b38, (q15_t)0x6b34, (q15_t)0x6b31, + (q15_t)0x6b2d, (q15_t)0x6b2a, (q15_t)0x6b26, (q15_t)0x6b23, (q15_t)0x6b20, (q15_t)0x6b1c, (q15_t)0x6b19, (q15_t)0x6b15, + (q15_t)0x6b12, (q15_t)0x6b0e, (q15_t)0x6b0b, (q15_t)0x6b07, (q15_t)0x6b04, (q15_t)0x6b01, (q15_t)0x6afd, (q15_t)0x6afa, + (q15_t)0x6af6, (q15_t)0x6af3, (q15_t)0x6aef, (q15_t)0x6aec, (q15_t)0x6ae8, (q15_t)0x6ae5, (q15_t)0x6ae1, (q15_t)0x6ade, + (q15_t)0x6adb, (q15_t)0x6ad7, (q15_t)0x6ad4, (q15_t)0x6ad0, (q15_t)0x6acd, (q15_t)0x6ac9, (q15_t)0x6ac6, (q15_t)0x6ac2, + (q15_t)0x6abf, (q15_t)0x6abb, (q15_t)0x6ab8, (q15_t)0x6ab4, (q15_t)0x6ab1, (q15_t)0x6aae, (q15_t)0x6aaa, (q15_t)0x6aa7, + (q15_t)0x6aa3, (q15_t)0x6aa0, (q15_t)0x6a9c, (q15_t)0x6a99, (q15_t)0x6a95, (q15_t)0x6a92, (q15_t)0x6a8e, (q15_t)0x6a8b, + (q15_t)0x6a87, (q15_t)0x6a84, (q15_t)0x6a80, (q15_t)0x6a7d, (q15_t)0x6a79, (q15_t)0x6a76, (q15_t)0x6a72, (q15_t)0x6a6f, + (q15_t)0x6a6b, (q15_t)0x6a68, (q15_t)0x6a64, (q15_t)0x6a61, (q15_t)0x6a5d, (q15_t)0x6a5a, (q15_t)0x6a56, (q15_t)0x6a53, + (q15_t)0x6a4f, (q15_t)0x6a4c, (q15_t)0x6a48, (q15_t)0x6a45, (q15_t)0x6a41, (q15_t)0x6a3e, (q15_t)0x6a3a, (q15_t)0x6a37, + (q15_t)0x6a33, (q15_t)0x6a30, (q15_t)0x6a2c, (q15_t)0x6a29, (q15_t)0x6a25, (q15_t)0x6a22, (q15_t)0x6a1e, (q15_t)0x6a1b, + (q15_t)0x6a17, (q15_t)0x6a14, (q15_t)0x6a10, (q15_t)0x6a0d, (q15_t)0x6a09, (q15_t)0x6a06, (q15_t)0x6a02, (q15_t)0x69ff, + (q15_t)0x69fb, (q15_t)0x69f8, (q15_t)0x69f4, (q15_t)0x69f1, (q15_t)0x69ed, (q15_t)0x69e9, (q15_t)0x69e6, (q15_t)0x69e2, + (q15_t)0x69df, (q15_t)0x69db, (q15_t)0x69d8, (q15_t)0x69d4, (q15_t)0x69d1, (q15_t)0x69cd, (q15_t)0x69ca, (q15_t)0x69c6, + (q15_t)0x69c3, (q15_t)0x69bf, (q15_t)0x69bc, (q15_t)0x69b8, (q15_t)0x69b4, (q15_t)0x69b1, (q15_t)0x69ad, (q15_t)0x69aa, + (q15_t)0x69a6, (q15_t)0x69a3, (q15_t)0x699f, (q15_t)0x699c, (q15_t)0x6998, (q15_t)0x6995, (q15_t)0x6991, (q15_t)0x698d, + (q15_t)0x698a, (q15_t)0x6986, (q15_t)0x6983, (q15_t)0x697f, (q15_t)0x697c, (q15_t)0x6978, (q15_t)0x6975, (q15_t)0x6971, + (q15_t)0x696d, (q15_t)0x696a, (q15_t)0x6966, (q15_t)0x6963, (q15_t)0x695f, (q15_t)0x695c, (q15_t)0x6958, (q15_t)0x6954, + (q15_t)0x6951, (q15_t)0x694d, (q15_t)0x694a, (q15_t)0x6946, (q15_t)0x6943, (q15_t)0x693f, (q15_t)0x693b, (q15_t)0x6938, + (q15_t)0x6934, (q15_t)0x6931, (q15_t)0x692d, (q15_t)0x692a, (q15_t)0x6926, (q15_t)0x6922, (q15_t)0x691f, (q15_t)0x691b, + (q15_t)0x6918, (q15_t)0x6914, (q15_t)0x6910, (q15_t)0x690d, (q15_t)0x6909, (q15_t)0x6906, (q15_t)0x6902, (q15_t)0x68fe, + (q15_t)0x68fb, (q15_t)0x68f7, (q15_t)0x68f4, (q15_t)0x68f0, (q15_t)0x68ec, (q15_t)0x68e9, (q15_t)0x68e5, (q15_t)0x68e2, + (q15_t)0x68de, (q15_t)0x68da, (q15_t)0x68d7, (q15_t)0x68d3, (q15_t)0x68d0, (q15_t)0x68cc, (q15_t)0x68c8, (q15_t)0x68c5, + (q15_t)0x68c1, (q15_t)0x68be, (q15_t)0x68ba, (q15_t)0x68b6, (q15_t)0x68b3, (q15_t)0x68af, (q15_t)0x68ac, (q15_t)0x68a8, + (q15_t)0x68a4, (q15_t)0x68a1, (q15_t)0x689d, (q15_t)0x6899, (q15_t)0x6896, (q15_t)0x6892, (q15_t)0x688f, (q15_t)0x688b, + (q15_t)0x6887, (q15_t)0x6884, (q15_t)0x6880, (q15_t)0x687c, (q15_t)0x6879, (q15_t)0x6875, (q15_t)0x6872, (q15_t)0x686e, + (q15_t)0x686a, (q15_t)0x6867, (q15_t)0x6863, (q15_t)0x685f, (q15_t)0x685c, (q15_t)0x6858, (q15_t)0x6854, (q15_t)0x6851, + (q15_t)0x684d, (q15_t)0x684a, (q15_t)0x6846, (q15_t)0x6842, (q15_t)0x683f, (q15_t)0x683b, (q15_t)0x6837, (q15_t)0x6834, + (q15_t)0x6830, (q15_t)0x682c, (q15_t)0x6829, (q15_t)0x6825, (q15_t)0x6821, (q15_t)0x681e, (q15_t)0x681a, (q15_t)0x6816, + (q15_t)0x6813, (q15_t)0x680f, (q15_t)0x680b, (q15_t)0x6808, (q15_t)0x6804, (q15_t)0x6800, (q15_t)0x67fd, (q15_t)0x67f9, + (q15_t)0x67f5, (q15_t)0x67f2, (q15_t)0x67ee, (q15_t)0x67ea, (q15_t)0x67e7, (q15_t)0x67e3, (q15_t)0x67df, (q15_t)0x67dc, + (q15_t)0x67d8, (q15_t)0x67d4, (q15_t)0x67d1, (q15_t)0x67cd, (q15_t)0x67c9, (q15_t)0x67c6, (q15_t)0x67c2, (q15_t)0x67be, + (q15_t)0x67bb, (q15_t)0x67b7, (q15_t)0x67b3, (q15_t)0x67b0, (q15_t)0x67ac, (q15_t)0x67a8, (q15_t)0x67a5, (q15_t)0x67a1, + (q15_t)0x679d, (q15_t)0x679a, (q15_t)0x6796, (q15_t)0x6792, (q15_t)0x678e, (q15_t)0x678b, (q15_t)0x6787, (q15_t)0x6783, + (q15_t)0x6780, (q15_t)0x677c, (q15_t)0x6778, (q15_t)0x6775, (q15_t)0x6771, (q15_t)0x676d, (q15_t)0x6769, (q15_t)0x6766, + (q15_t)0x6762, (q15_t)0x675e, (q15_t)0x675b, (q15_t)0x6757, (q15_t)0x6753, (q15_t)0x6750, (q15_t)0x674c, (q15_t)0x6748, + (q15_t)0x6744, (q15_t)0x6741, (q15_t)0x673d, (q15_t)0x6739, (q15_t)0x6736, (q15_t)0x6732, (q15_t)0x672e, (q15_t)0x672a, + (q15_t)0x6727, (q15_t)0x6723, (q15_t)0x671f, (q15_t)0x671c, (q15_t)0x6718, (q15_t)0x6714, (q15_t)0x6710, (q15_t)0x670d, + (q15_t)0x6709, (q15_t)0x6705, (q15_t)0x6701, (q15_t)0x66fe, (q15_t)0x66fa, (q15_t)0x66f6, (q15_t)0x66f3, (q15_t)0x66ef, + (q15_t)0x66eb, (q15_t)0x66e7, (q15_t)0x66e4, (q15_t)0x66e0, (q15_t)0x66dc, (q15_t)0x66d8, (q15_t)0x66d5, (q15_t)0x66d1, + (q15_t)0x66cd, (q15_t)0x66c9, (q15_t)0x66c6, (q15_t)0x66c2, (q15_t)0x66be, (q15_t)0x66ba, (q15_t)0x66b7, (q15_t)0x66b3, + (q15_t)0x66af, (q15_t)0x66ab, (q15_t)0x66a8, (q15_t)0x66a4, (q15_t)0x66a0, (q15_t)0x669c, (q15_t)0x6699, (q15_t)0x6695, + (q15_t)0x6691, (q15_t)0x668d, (q15_t)0x668a, (q15_t)0x6686, (q15_t)0x6682, (q15_t)0x667e, (q15_t)0x667b, (q15_t)0x6677, + (q15_t)0x6673, (q15_t)0x666f, (q15_t)0x666b, (q15_t)0x6668, (q15_t)0x6664, (q15_t)0x6660, (q15_t)0x665c, (q15_t)0x6659, + (q15_t)0x6655, (q15_t)0x6651, (q15_t)0x664d, (q15_t)0x664a, (q15_t)0x6646, (q15_t)0x6642, (q15_t)0x663e, (q15_t)0x663a, + (q15_t)0x6637, (q15_t)0x6633, (q15_t)0x662f, (q15_t)0x662b, (q15_t)0x6627, (q15_t)0x6624, (q15_t)0x6620, (q15_t)0x661c, + (q15_t)0x6618, (q15_t)0x6615, (q15_t)0x6611, (q15_t)0x660d, (q15_t)0x6609, (q15_t)0x6605, (q15_t)0x6602, (q15_t)0x65fe, + (q15_t)0x65fa, (q15_t)0x65f6, (q15_t)0x65f2, (q15_t)0x65ef, (q15_t)0x65eb, (q15_t)0x65e7, (q15_t)0x65e3, (q15_t)0x65df, + (q15_t)0x65dc, (q15_t)0x65d8, (q15_t)0x65d4, (q15_t)0x65d0, (q15_t)0x65cc, (q15_t)0x65c9, (q15_t)0x65c5, (q15_t)0x65c1, + (q15_t)0x65bd, (q15_t)0x65b9, (q15_t)0x65b5, (q15_t)0x65b2, (q15_t)0x65ae, (q15_t)0x65aa, (q15_t)0x65a6, (q15_t)0x65a2, + (q15_t)0x659f, (q15_t)0x659b, (q15_t)0x6597, (q15_t)0x6593, (q15_t)0x658f, (q15_t)0x658b, (q15_t)0x6588, (q15_t)0x6584, + (q15_t)0x6580, (q15_t)0x657c, (q15_t)0x6578, (q15_t)0x6574, (q15_t)0x6571, (q15_t)0x656d, (q15_t)0x6569, (q15_t)0x6565, + (q15_t)0x6561, (q15_t)0x655d, (q15_t)0x655a, (q15_t)0x6556, (q15_t)0x6552, (q15_t)0x654e, (q15_t)0x654a, (q15_t)0x6546, + (q15_t)0x6543, (q15_t)0x653f, (q15_t)0x653b, (q15_t)0x6537, (q15_t)0x6533, (q15_t)0x652f, (q15_t)0x652c, (q15_t)0x6528, + (q15_t)0x6524, (q15_t)0x6520, (q15_t)0x651c, (q15_t)0x6518, (q15_t)0x6514, (q15_t)0x6511, (q15_t)0x650d, (q15_t)0x6509, + (q15_t)0x6505, (q15_t)0x6501, (q15_t)0x64fd, (q15_t)0x64f9, (q15_t)0x64f6, (q15_t)0x64f2, (q15_t)0x64ee, (q15_t)0x64ea, + (q15_t)0x64e6, (q15_t)0x64e2, (q15_t)0x64de, (q15_t)0x64db, (q15_t)0x64d7, (q15_t)0x64d3, (q15_t)0x64cf, (q15_t)0x64cb, + (q15_t)0x64c7, (q15_t)0x64c3, (q15_t)0x64bf, (q15_t)0x64bc, (q15_t)0x64b8, (q15_t)0x64b4, (q15_t)0x64b0, (q15_t)0x64ac, + (q15_t)0x64a8, (q15_t)0x64a4, (q15_t)0x64a0, (q15_t)0x649c, (q15_t)0x6499, (q15_t)0x6495, (q15_t)0x6491, (q15_t)0x648d, + (q15_t)0x6489, (q15_t)0x6485, (q15_t)0x6481, (q15_t)0x647d, (q15_t)0x6479, (q15_t)0x6476, (q15_t)0x6472, (q15_t)0x646e, + (q15_t)0x646a, (q15_t)0x6466, (q15_t)0x6462, (q15_t)0x645e, (q15_t)0x645a, (q15_t)0x6456, (q15_t)0x6453, (q15_t)0x644f, + (q15_t)0x644b, (q15_t)0x6447, (q15_t)0x6443, (q15_t)0x643f, (q15_t)0x643b, (q15_t)0x6437, (q15_t)0x6433, (q15_t)0x642f, + (q15_t)0x642b, (q15_t)0x6428, (q15_t)0x6424, (q15_t)0x6420, (q15_t)0x641c, (q15_t)0x6418, (q15_t)0x6414, (q15_t)0x6410, + (q15_t)0x640c, (q15_t)0x6408, (q15_t)0x6404, (q15_t)0x6400, (q15_t)0x63fc, (q15_t)0x63f9, (q15_t)0x63f5, (q15_t)0x63f1, + (q15_t)0x63ed, (q15_t)0x63e9, (q15_t)0x63e5, (q15_t)0x63e1, (q15_t)0x63dd, (q15_t)0x63d9, (q15_t)0x63d5, (q15_t)0x63d1, + (q15_t)0x63cd, (q15_t)0x63c9, (q15_t)0x63c5, (q15_t)0x63c1, (q15_t)0x63be, (q15_t)0x63ba, (q15_t)0x63b6, (q15_t)0x63b2, + (q15_t)0x63ae, (q15_t)0x63aa, (q15_t)0x63a6, (q15_t)0x63a2, (q15_t)0x639e, (q15_t)0x639a, (q15_t)0x6396, (q15_t)0x6392, + (q15_t)0x638e, (q15_t)0x638a, (q15_t)0x6386, (q15_t)0x6382, (q15_t)0x637e, (q15_t)0x637a, (q15_t)0x6377, (q15_t)0x6373, + (q15_t)0x636f, (q15_t)0x636b, (q15_t)0x6367, (q15_t)0x6363, (q15_t)0x635f, (q15_t)0x635b, (q15_t)0x6357, (q15_t)0x6353, + (q15_t)0x634f, (q15_t)0x634b, (q15_t)0x6347, (q15_t)0x6343, (q15_t)0x633f, (q15_t)0x633b, (q15_t)0x6337, (q15_t)0x6333, + (q15_t)0x632f, (q15_t)0x632b, (q15_t)0x6327, (q15_t)0x6323, (q15_t)0x631f, (q15_t)0x631b, (q15_t)0x6317, (q15_t)0x6313, + (q15_t)0x630f, (q15_t)0x630b, (q15_t)0x6307, (q15_t)0x6303, (q15_t)0x62ff, (q15_t)0x62fb, (q15_t)0x62f7, (q15_t)0x62f3, + (q15_t)0x62f0, (q15_t)0x62ec, (q15_t)0x62e8, (q15_t)0x62e4, (q15_t)0x62e0, (q15_t)0x62dc, (q15_t)0x62d8, (q15_t)0x62d4, + (q15_t)0x62d0, (q15_t)0x62cc, (q15_t)0x62c8, (q15_t)0x62c4, (q15_t)0x62c0, (q15_t)0x62bc, (q15_t)0x62b8, (q15_t)0x62b4, + (q15_t)0x62b0, (q15_t)0x62ac, (q15_t)0x62a8, (q15_t)0x62a4, (q15_t)0x62a0, (q15_t)0x629c, (q15_t)0x6298, (q15_t)0x6294, + (q15_t)0x6290, (q15_t)0x628c, (q15_t)0x6288, (q15_t)0x6284, (q15_t)0x6280, (q15_t)0x627c, (q15_t)0x6278, (q15_t)0x6273, + (q15_t)0x626f, (q15_t)0x626b, (q15_t)0x6267, (q15_t)0x6263, (q15_t)0x625f, (q15_t)0x625b, (q15_t)0x6257, (q15_t)0x6253, + (q15_t)0x624f, (q15_t)0x624b, (q15_t)0x6247, (q15_t)0x6243, (q15_t)0x623f, (q15_t)0x623b, (q15_t)0x6237, (q15_t)0x6233, + (q15_t)0x622f, (q15_t)0x622b, (q15_t)0x6227, (q15_t)0x6223, (q15_t)0x621f, (q15_t)0x621b, (q15_t)0x6217, (q15_t)0x6213, + (q15_t)0x620f, (q15_t)0x620b, (q15_t)0x6207, (q15_t)0x6203, (q15_t)0x61ff, (q15_t)0x61fb, (q15_t)0x61f7, (q15_t)0x61f3, + (q15_t)0x61ee, (q15_t)0x61ea, (q15_t)0x61e6, (q15_t)0x61e2, (q15_t)0x61de, (q15_t)0x61da, (q15_t)0x61d6, (q15_t)0x61d2, + (q15_t)0x61ce, (q15_t)0x61ca, (q15_t)0x61c6, (q15_t)0x61c2, (q15_t)0x61be, (q15_t)0x61ba, (q15_t)0x61b6, (q15_t)0x61b2, + (q15_t)0x61ae, (q15_t)0x61aa, (q15_t)0x61a6, (q15_t)0x61a1, (q15_t)0x619d, (q15_t)0x6199, (q15_t)0x6195, (q15_t)0x6191, + (q15_t)0x618d, (q15_t)0x6189, (q15_t)0x6185, (q15_t)0x6181, (q15_t)0x617d, (q15_t)0x6179, (q15_t)0x6175, (q15_t)0x6171, + (q15_t)0x616d, (q15_t)0x6168, (q15_t)0x6164, (q15_t)0x6160, (q15_t)0x615c, (q15_t)0x6158, (q15_t)0x6154, (q15_t)0x6150, + (q15_t)0x614c, (q15_t)0x6148, (q15_t)0x6144, (q15_t)0x6140, (q15_t)0x613c, (q15_t)0x6137, (q15_t)0x6133, (q15_t)0x612f, + (q15_t)0x612b, (q15_t)0x6127, (q15_t)0x6123, (q15_t)0x611f, (q15_t)0x611b, (q15_t)0x6117, (q15_t)0x6113, (q15_t)0x610f, + (q15_t)0x610a, (q15_t)0x6106, (q15_t)0x6102, (q15_t)0x60fe, (q15_t)0x60fa, (q15_t)0x60f6, (q15_t)0x60f2, (q15_t)0x60ee, + (q15_t)0x60ea, (q15_t)0x60e6, (q15_t)0x60e1, (q15_t)0x60dd, (q15_t)0x60d9, (q15_t)0x60d5, (q15_t)0x60d1, (q15_t)0x60cd, + (q15_t)0x60c9, (q15_t)0x60c5, (q15_t)0x60c1, (q15_t)0x60bc, (q15_t)0x60b8, (q15_t)0x60b4, (q15_t)0x60b0, (q15_t)0x60ac, + (q15_t)0x60a8, (q15_t)0x60a4, (q15_t)0x60a0, (q15_t)0x609c, (q15_t)0x6097, (q15_t)0x6093, (q15_t)0x608f, (q15_t)0x608b, + (q15_t)0x6087, (q15_t)0x6083, (q15_t)0x607f, (q15_t)0x607b, (q15_t)0x6076, (q15_t)0x6072, (q15_t)0x606e, (q15_t)0x606a, + (q15_t)0x6066, (q15_t)0x6062, (q15_t)0x605e, (q15_t)0x6059, (q15_t)0x6055, (q15_t)0x6051, (q15_t)0x604d, (q15_t)0x6049, + (q15_t)0x6045, (q15_t)0x6041, (q15_t)0x603c, (q15_t)0x6038, (q15_t)0x6034, (q15_t)0x6030, (q15_t)0x602c, (q15_t)0x6028, + (q15_t)0x6024, (q15_t)0x601f, (q15_t)0x601b, (q15_t)0x6017, (q15_t)0x6013, (q15_t)0x600f, (q15_t)0x600b, (q15_t)0x6007, + (q15_t)0x6002, (q15_t)0x5ffe, (q15_t)0x5ffa, (q15_t)0x5ff6, (q15_t)0x5ff2, (q15_t)0x5fee, (q15_t)0x5fe9, (q15_t)0x5fe5, + (q15_t)0x5fe1, (q15_t)0x5fdd, (q15_t)0x5fd9, (q15_t)0x5fd5, (q15_t)0x5fd0, (q15_t)0x5fcc, (q15_t)0x5fc8, (q15_t)0x5fc4, + (q15_t)0x5fc0, (q15_t)0x5fbc, (q15_t)0x5fb7, (q15_t)0x5fb3, (q15_t)0x5faf, (q15_t)0x5fab, (q15_t)0x5fa7, (q15_t)0x5fa3, + (q15_t)0x5f9e, (q15_t)0x5f9a, (q15_t)0x5f96, (q15_t)0x5f92, (q15_t)0x5f8e, (q15_t)0x5f8a, (q15_t)0x5f85, (q15_t)0x5f81, + (q15_t)0x5f7d, (q15_t)0x5f79, (q15_t)0x5f75, (q15_t)0x5f70, (q15_t)0x5f6c, (q15_t)0x5f68, (q15_t)0x5f64, (q15_t)0x5f60, + (q15_t)0x5f5b, (q15_t)0x5f57, (q15_t)0x5f53, (q15_t)0x5f4f, (q15_t)0x5f4b, (q15_t)0x5f46, (q15_t)0x5f42, (q15_t)0x5f3e, + (q15_t)0x5f3a, (q15_t)0x5f36, (q15_t)0x5f31, (q15_t)0x5f2d, (q15_t)0x5f29, (q15_t)0x5f25, (q15_t)0x5f21, (q15_t)0x5f1c, + (q15_t)0x5f18, (q15_t)0x5f14, (q15_t)0x5f10, (q15_t)0x5f0c, (q15_t)0x5f07, (q15_t)0x5f03, (q15_t)0x5eff, (q15_t)0x5efb, + (q15_t)0x5ef7, (q15_t)0x5ef2, (q15_t)0x5eee, (q15_t)0x5eea, (q15_t)0x5ee6, (q15_t)0x5ee2, (q15_t)0x5edd, (q15_t)0x5ed9, + (q15_t)0x5ed5, (q15_t)0x5ed1, (q15_t)0x5ecc, (q15_t)0x5ec8, (q15_t)0x5ec4, (q15_t)0x5ec0, (q15_t)0x5ebc, (q15_t)0x5eb7, + (q15_t)0x5eb3, (q15_t)0x5eaf, (q15_t)0x5eab, (q15_t)0x5ea6, (q15_t)0x5ea2, (q15_t)0x5e9e, (q15_t)0x5e9a, (q15_t)0x5e95, + (q15_t)0x5e91, (q15_t)0x5e8d, (q15_t)0x5e89, (q15_t)0x5e85, (q15_t)0x5e80, (q15_t)0x5e7c, (q15_t)0x5e78, (q15_t)0x5e74, + (q15_t)0x5e6f, (q15_t)0x5e6b, (q15_t)0x5e67, (q15_t)0x5e63, (q15_t)0x5e5e, (q15_t)0x5e5a, (q15_t)0x5e56, (q15_t)0x5e52, + (q15_t)0x5e4d, (q15_t)0x5e49, (q15_t)0x5e45, (q15_t)0x5e41, (q15_t)0x5e3c, (q15_t)0x5e38, (q15_t)0x5e34, (q15_t)0x5e30, + (q15_t)0x5e2b, (q15_t)0x5e27, (q15_t)0x5e23, (q15_t)0x5e1f, (q15_t)0x5e1a, (q15_t)0x5e16, (q15_t)0x5e12, (q15_t)0x5e0e, + (q15_t)0x5e09, (q15_t)0x5e05, (q15_t)0x5e01, (q15_t)0x5dfd, (q15_t)0x5df8, (q15_t)0x5df4, (q15_t)0x5df0, (q15_t)0x5deb, + (q15_t)0x5de7, (q15_t)0x5de3, (q15_t)0x5ddf, (q15_t)0x5dda, (q15_t)0x5dd6, (q15_t)0x5dd2, (q15_t)0x5dce, (q15_t)0x5dc9, + (q15_t)0x5dc5, (q15_t)0x5dc1, (q15_t)0x5dbc, (q15_t)0x5db8, (q15_t)0x5db4, (q15_t)0x5db0, (q15_t)0x5dab, (q15_t)0x5da7, + (q15_t)0x5da3, (q15_t)0x5d9e, (q15_t)0x5d9a, (q15_t)0x5d96, (q15_t)0x5d92, (q15_t)0x5d8d, (q15_t)0x5d89, (q15_t)0x5d85, + (q15_t)0x5d80, (q15_t)0x5d7c, (q15_t)0x5d78, (q15_t)0x5d74, (q15_t)0x5d6f, (q15_t)0x5d6b, (q15_t)0x5d67, (q15_t)0x5d62, + (q15_t)0x5d5e, (q15_t)0x5d5a, (q15_t)0x5d55, (q15_t)0x5d51, (q15_t)0x5d4d, (q15_t)0x5d49, (q15_t)0x5d44, (q15_t)0x5d40, + (q15_t)0x5d3c, (q15_t)0x5d37, (q15_t)0x5d33, (q15_t)0x5d2f, (q15_t)0x5d2a, (q15_t)0x5d26, (q15_t)0x5d22, (q15_t)0x5d1e, + (q15_t)0x5d19, (q15_t)0x5d15, (q15_t)0x5d11, (q15_t)0x5d0c, (q15_t)0x5d08, (q15_t)0x5d04, (q15_t)0x5cff, (q15_t)0x5cfb, + (q15_t)0x5cf7, (q15_t)0x5cf2, (q15_t)0x5cee, (q15_t)0x5cea, (q15_t)0x5ce5, (q15_t)0x5ce1, (q15_t)0x5cdd, (q15_t)0x5cd8, + (q15_t)0x5cd4, (q15_t)0x5cd0, (q15_t)0x5ccb, (q15_t)0x5cc7, (q15_t)0x5cc3, (q15_t)0x5cbe, (q15_t)0x5cba, (q15_t)0x5cb6, + (q15_t)0x5cb1, (q15_t)0x5cad, (q15_t)0x5ca9, (q15_t)0x5ca4, (q15_t)0x5ca0, (q15_t)0x5c9c, (q15_t)0x5c97, (q15_t)0x5c93, + (q15_t)0x5c8f, (q15_t)0x5c8a, (q15_t)0x5c86, (q15_t)0x5c82, (q15_t)0x5c7d, (q15_t)0x5c79, (q15_t)0x5c75, (q15_t)0x5c70, + (q15_t)0x5c6c, (q15_t)0x5c68, (q15_t)0x5c63, (q15_t)0x5c5f, (q15_t)0x5c5b, (q15_t)0x5c56, (q15_t)0x5c52, (q15_t)0x5c4e, + (q15_t)0x5c49, (q15_t)0x5c45, (q15_t)0x5c41, (q15_t)0x5c3c, (q15_t)0x5c38, (q15_t)0x5c33, (q15_t)0x5c2f, (q15_t)0x5c2b, + (q15_t)0x5c26, (q15_t)0x5c22, (q15_t)0x5c1e, (q15_t)0x5c19, (q15_t)0x5c15, (q15_t)0x5c11, (q15_t)0x5c0c, (q15_t)0x5c08, + (q15_t)0x5c03, (q15_t)0x5bff, (q15_t)0x5bfb, (q15_t)0x5bf6, (q15_t)0x5bf2, (q15_t)0x5bee, (q15_t)0x5be9, (q15_t)0x5be5, + (q15_t)0x5be0, (q15_t)0x5bdc, (q15_t)0x5bd8, (q15_t)0x5bd3, (q15_t)0x5bcf, (q15_t)0x5bcb, (q15_t)0x5bc6, (q15_t)0x5bc2, + (q15_t)0x5bbd, (q15_t)0x5bb9, (q15_t)0x5bb5, (q15_t)0x5bb0, (q15_t)0x5bac, (q15_t)0x5ba8, (q15_t)0x5ba3, (q15_t)0x5b9f, + (q15_t)0x5b9a, (q15_t)0x5b96, (q15_t)0x5b92, (q15_t)0x5b8d, (q15_t)0x5b89, (q15_t)0x5b84, (q15_t)0x5b80, (q15_t)0x5b7c, + (q15_t)0x5b77, (q15_t)0x5b73, (q15_t)0x5b6e, (q15_t)0x5b6a, (q15_t)0x5b66, (q15_t)0x5b61, (q15_t)0x5b5d, (q15_t)0x5b58, + (q15_t)0x5b54, (q15_t)0x5b50, (q15_t)0x5b4b, (q15_t)0x5b47, (q15_t)0x5b42, (q15_t)0x5b3e, (q15_t)0x5b3a, (q15_t)0x5b35, + (q15_t)0x5b31, (q15_t)0x5b2c, (q15_t)0x5b28, (q15_t)0x5b24, (q15_t)0x5b1f, (q15_t)0x5b1b, (q15_t)0x5b16, (q15_t)0x5b12, + (q15_t)0x5b0e, (q15_t)0x5b09, (q15_t)0x5b05, (q15_t)0x5b00, (q15_t)0x5afc, (q15_t)0x5af7, (q15_t)0x5af3, (q15_t)0x5aef, + (q15_t)0x5aea, (q15_t)0x5ae6, (q15_t)0x5ae1, (q15_t)0x5add, (q15_t)0x5ad8, (q15_t)0x5ad4, (q15_t)0x5ad0, (q15_t)0x5acb, + (q15_t)0x5ac7, (q15_t)0x5ac2, (q15_t)0x5abe, (q15_t)0x5ab9, (q15_t)0x5ab5, (q15_t)0x5ab1, (q15_t)0x5aac, (q15_t)0x5aa8, + (q15_t)0x5aa3, (q15_t)0x5a9f, (q15_t)0x5a9a, (q15_t)0x5a96, (q15_t)0x5a92, (q15_t)0x5a8d, (q15_t)0x5a89, (q15_t)0x5a84, + (q15_t)0x5a80, (q15_t)0x5a7b, (q15_t)0x5a77, (q15_t)0x5a72, (q15_t)0x5a6e, (q15_t)0x5a6a, (q15_t)0x5a65, (q15_t)0x5a61, + (q15_t)0x5a5c, (q15_t)0x5a58, (q15_t)0x5a53, (q15_t)0x5a4f, (q15_t)0x5a4a, (q15_t)0x5a46, (q15_t)0x5a41, (q15_t)0x5a3d, + (q15_t)0x5a39, (q15_t)0x5a34, (q15_t)0x5a30, (q15_t)0x5a2b, (q15_t)0x5a27, (q15_t)0x5a22, (q15_t)0x5a1e, (q15_t)0x5a19, + (q15_t)0x5a15, (q15_t)0x5a10, (q15_t)0x5a0c, (q15_t)0x5a07, (q15_t)0x5a03, (q15_t)0x59ff, (q15_t)0x59fa, (q15_t)0x59f6, + (q15_t)0x59f1, (q15_t)0x59ed, (q15_t)0x59e8, (q15_t)0x59e4, (q15_t)0x59df, (q15_t)0x59db, (q15_t)0x59d6, (q15_t)0x59d2, + (q15_t)0x59cd, (q15_t)0x59c9, (q15_t)0x59c4, (q15_t)0x59c0, (q15_t)0x59bb, (q15_t)0x59b7, (q15_t)0x59b2, (q15_t)0x59ae, + (q15_t)0x59a9, (q15_t)0x59a5, (q15_t)0x59a1, (q15_t)0x599c, (q15_t)0x5998, (q15_t)0x5993, (q15_t)0x598f, (q15_t)0x598a, + (q15_t)0x5986, (q15_t)0x5981, (q15_t)0x597d, (q15_t)0x5978, (q15_t)0x5974, (q15_t)0x596f, (q15_t)0x596b, (q15_t)0x5966, + (q15_t)0x5962, (q15_t)0x595d, (q15_t)0x5959, (q15_t)0x5954, (q15_t)0x5950, (q15_t)0x594b, (q15_t)0x5947, (q15_t)0x5942, + (q15_t)0x593e, (q15_t)0x5939, (q15_t)0x5935, (q15_t)0x5930, (q15_t)0x592c, (q15_t)0x5927, (q15_t)0x5923, (q15_t)0x591e, + (q15_t)0x591a, (q15_t)0x5915, (q15_t)0x5911, (q15_t)0x590c, (q15_t)0x5908, (q15_t)0x5903, (q15_t)0x58fe, (q15_t)0x58fa, + (q15_t)0x58f5, (q15_t)0x58f1, (q15_t)0x58ec, (q15_t)0x58e8, (q15_t)0x58e3, (q15_t)0x58df, (q15_t)0x58da, (q15_t)0x58d6, + (q15_t)0x58d1, (q15_t)0x58cd, (q15_t)0x58c8, (q15_t)0x58c4, (q15_t)0x58bf, (q15_t)0x58bb, (q15_t)0x58b6, (q15_t)0x58b2, + (q15_t)0x58ad, (q15_t)0x58a9, (q15_t)0x58a4, (q15_t)0x589f, (q15_t)0x589b, (q15_t)0x5896, (q15_t)0x5892, (q15_t)0x588d, + (q15_t)0x5889, (q15_t)0x5884, (q15_t)0x5880, (q15_t)0x587b, (q15_t)0x5877, (q15_t)0x5872, (q15_t)0x586e, (q15_t)0x5869, + (q15_t)0x5864, (q15_t)0x5860, (q15_t)0x585b, (q15_t)0x5857, (q15_t)0x5852, (q15_t)0x584e, (q15_t)0x5849, (q15_t)0x5845, + (q15_t)0x5840, (q15_t)0x583c, (q15_t)0x5837, (q15_t)0x5832, (q15_t)0x582e, (q15_t)0x5829, (q15_t)0x5825, (q15_t)0x5820, + (q15_t)0x581c, (q15_t)0x5817, (q15_t)0x5813, (q15_t)0x580e, (q15_t)0x5809, (q15_t)0x5805, (q15_t)0x5800, (q15_t)0x57fc, + (q15_t)0x57f7, (q15_t)0x57f3, (q15_t)0x57ee, (q15_t)0x57e9, (q15_t)0x57e5, (q15_t)0x57e0, (q15_t)0x57dc, (q15_t)0x57d7, + (q15_t)0x57d3, (q15_t)0x57ce, (q15_t)0x57c9, (q15_t)0x57c5, (q15_t)0x57c0, (q15_t)0x57bc, (q15_t)0x57b7, (q15_t)0x57b3, + (q15_t)0x57ae, (q15_t)0x57a9, (q15_t)0x57a5, (q15_t)0x57a0, (q15_t)0x579c, (q15_t)0x5797, (q15_t)0x5793, (q15_t)0x578e, + (q15_t)0x5789, (q15_t)0x5785, (q15_t)0x5780, (q15_t)0x577c, (q15_t)0x5777, (q15_t)0x5772, (q15_t)0x576e, (q15_t)0x5769, + (q15_t)0x5765, (q15_t)0x5760, (q15_t)0x575c, (q15_t)0x5757, (q15_t)0x5752, (q15_t)0x574e, (q15_t)0x5749, (q15_t)0x5745, + (q15_t)0x5740, (q15_t)0x573b, (q15_t)0x5737, (q15_t)0x5732, (q15_t)0x572e, (q15_t)0x5729, (q15_t)0x5724, (q15_t)0x5720, + (q15_t)0x571b, (q15_t)0x5717, (q15_t)0x5712, (q15_t)0x570d, (q15_t)0x5709, (q15_t)0x5704, (q15_t)0x56ff, (q15_t)0x56fb, + (q15_t)0x56f6, (q15_t)0x56f2, (q15_t)0x56ed, (q15_t)0x56e8, (q15_t)0x56e4, (q15_t)0x56df, (q15_t)0x56db, (q15_t)0x56d6, + (q15_t)0x56d1, (q15_t)0x56cd, (q15_t)0x56c8, (q15_t)0x56c4, (q15_t)0x56bf, (q15_t)0x56ba, (q15_t)0x56b6, (q15_t)0x56b1, + (q15_t)0x56ac, (q15_t)0x56a8, (q15_t)0x56a3, (q15_t)0x569f, (q15_t)0x569a, (q15_t)0x5695, (q15_t)0x5691, (q15_t)0x568c, + (q15_t)0x5687, (q15_t)0x5683, (q15_t)0x567e, (q15_t)0x5679, (q15_t)0x5675, (q15_t)0x5670, (q15_t)0x566c, (q15_t)0x5667, + (q15_t)0x5662, (q15_t)0x565e, (q15_t)0x5659, (q15_t)0x5654, (q15_t)0x5650, (q15_t)0x564b, (q15_t)0x5646, (q15_t)0x5642, + (q15_t)0x563d, (q15_t)0x5639, (q15_t)0x5634, (q15_t)0x562f, (q15_t)0x562b, (q15_t)0x5626, (q15_t)0x5621, (q15_t)0x561d, + (q15_t)0x5618, (q15_t)0x5613, (q15_t)0x560f, (q15_t)0x560a, (q15_t)0x5605, (q15_t)0x5601, (q15_t)0x55fc, (q15_t)0x55f7, + (q15_t)0x55f3, (q15_t)0x55ee, (q15_t)0x55ea, (q15_t)0x55e5, (q15_t)0x55e0, (q15_t)0x55dc, (q15_t)0x55d7, (q15_t)0x55d2, + (q15_t)0x55ce, (q15_t)0x55c9, (q15_t)0x55c4, (q15_t)0x55c0, (q15_t)0x55bb, (q15_t)0x55b6, (q15_t)0x55b2, (q15_t)0x55ad, + (q15_t)0x55a8, (q15_t)0x55a4, (q15_t)0x559f, (q15_t)0x559a, (q15_t)0x5596, (q15_t)0x5591, (q15_t)0x558c, (q15_t)0x5588, + (q15_t)0x5583, (q15_t)0x557e, (q15_t)0x5579, (q15_t)0x5575, (q15_t)0x5570, (q15_t)0x556b, (q15_t)0x5567, (q15_t)0x5562, + (q15_t)0x555d, (q15_t)0x5559, (q15_t)0x5554, (q15_t)0x554f, (q15_t)0x554b, (q15_t)0x5546, (q15_t)0x5541, (q15_t)0x553d, + (q15_t)0x5538, (q15_t)0x5533, (q15_t)0x552f, (q15_t)0x552a, (q15_t)0x5525, (q15_t)0x5520, (q15_t)0x551c, (q15_t)0x5517, + (q15_t)0x5512, (q15_t)0x550e, (q15_t)0x5509, (q15_t)0x5504, (q15_t)0x5500, (q15_t)0x54fb, (q15_t)0x54f6, (q15_t)0x54f2, + (q15_t)0x54ed, (q15_t)0x54e8, (q15_t)0x54e3, (q15_t)0x54df, (q15_t)0x54da, (q15_t)0x54d5, (q15_t)0x54d1, (q15_t)0x54cc, + (q15_t)0x54c7, (q15_t)0x54c2, (q15_t)0x54be, (q15_t)0x54b9, (q15_t)0x54b4, (q15_t)0x54b0, (q15_t)0x54ab, (q15_t)0x54a6, + (q15_t)0x54a2, (q15_t)0x549d, (q15_t)0x5498, (q15_t)0x5493, (q15_t)0x548f, (q15_t)0x548a, (q15_t)0x5485, (q15_t)0x5480, + (q15_t)0x547c, (q15_t)0x5477, (q15_t)0x5472, (q15_t)0x546e, (q15_t)0x5469, (q15_t)0x5464, (q15_t)0x545f, (q15_t)0x545b, + (q15_t)0x5456, (q15_t)0x5451, (q15_t)0x544d, (q15_t)0x5448, (q15_t)0x5443, (q15_t)0x543e, (q15_t)0x543a, (q15_t)0x5435, + (q15_t)0x5430, (q15_t)0x542b, (q15_t)0x5427, (q15_t)0x5422, (q15_t)0x541d, (q15_t)0x5418, (q15_t)0x5414, (q15_t)0x540f, + (q15_t)0x540a, (q15_t)0x5406, (q15_t)0x5401, (q15_t)0x53fc, (q15_t)0x53f7, (q15_t)0x53f3, (q15_t)0x53ee, (q15_t)0x53e9, + (q15_t)0x53e4, (q15_t)0x53e0, (q15_t)0x53db, (q15_t)0x53d6, (q15_t)0x53d1, (q15_t)0x53cd, (q15_t)0x53c8, (q15_t)0x53c3, + (q15_t)0x53be, (q15_t)0x53ba, (q15_t)0x53b5, (q15_t)0x53b0, (q15_t)0x53ab, (q15_t)0x53a7, (q15_t)0x53a2, (q15_t)0x539d, + (q15_t)0x5398, (q15_t)0x5394, (q15_t)0x538f, (q15_t)0x538a, (q15_t)0x5385, (q15_t)0x5380, (q15_t)0x537c, (q15_t)0x5377, + (q15_t)0x5372, (q15_t)0x536d, (q15_t)0x5369, (q15_t)0x5364, (q15_t)0x535f, (q15_t)0x535a, (q15_t)0x5356, (q15_t)0x5351, + (q15_t)0x534c, (q15_t)0x5347, (q15_t)0x5343, (q15_t)0x533e, (q15_t)0x5339, (q15_t)0x5334, (q15_t)0x532f, (q15_t)0x532b, + (q15_t)0x5326, (q15_t)0x5321, (q15_t)0x531c, (q15_t)0x5318, (q15_t)0x5313, (q15_t)0x530e, (q15_t)0x5309, (q15_t)0x5304, + (q15_t)0x5300, (q15_t)0x52fb, (q15_t)0x52f6, (q15_t)0x52f1, (q15_t)0x52ec, (q15_t)0x52e8, (q15_t)0x52e3, (q15_t)0x52de, + (q15_t)0x52d9, (q15_t)0x52d5, (q15_t)0x52d0, (q15_t)0x52cb, (q15_t)0x52c6, (q15_t)0x52c1, (q15_t)0x52bd, (q15_t)0x52b8, + (q15_t)0x52b3, (q15_t)0x52ae, (q15_t)0x52a9, (q15_t)0x52a5, (q15_t)0x52a0, (q15_t)0x529b, (q15_t)0x5296, (q15_t)0x5291, + (q15_t)0x528d, (q15_t)0x5288, (q15_t)0x5283, (q15_t)0x527e, (q15_t)0x5279, (q15_t)0x5275, (q15_t)0x5270, (q15_t)0x526b, + (q15_t)0x5266, (q15_t)0x5261, (q15_t)0x525d, (q15_t)0x5258, (q15_t)0x5253, (q15_t)0x524e, (q15_t)0x5249, (q15_t)0x5244, + (q15_t)0x5240, (q15_t)0x523b, (q15_t)0x5236, (q15_t)0x5231, (q15_t)0x522c, (q15_t)0x5228, (q15_t)0x5223, (q15_t)0x521e, + (q15_t)0x5219, (q15_t)0x5214, (q15_t)0x520f, (q15_t)0x520b, (q15_t)0x5206, (q15_t)0x5201, (q15_t)0x51fc, (q15_t)0x51f7, + (q15_t)0x51f3, (q15_t)0x51ee, (q15_t)0x51e9, (q15_t)0x51e4, (q15_t)0x51df, (q15_t)0x51da, (q15_t)0x51d6, (q15_t)0x51d1, + (q15_t)0x51cc, (q15_t)0x51c7, (q15_t)0x51c2, (q15_t)0x51bd, (q15_t)0x51b9, (q15_t)0x51b4, (q15_t)0x51af, (q15_t)0x51aa, + (q15_t)0x51a5, (q15_t)0x51a0, (q15_t)0x519c, (q15_t)0x5197, (q15_t)0x5192, (q15_t)0x518d, (q15_t)0x5188, (q15_t)0x5183, + (q15_t)0x517e, (q15_t)0x517a, (q15_t)0x5175, (q15_t)0x5170, (q15_t)0x516b, (q15_t)0x5166, (q15_t)0x5161, (q15_t)0x515d, + (q15_t)0x5158, (q15_t)0x5153, (q15_t)0x514e, (q15_t)0x5149, (q15_t)0x5144, (q15_t)0x513f, (q15_t)0x513b, (q15_t)0x5136, + (q15_t)0x5131, (q15_t)0x512c, (q15_t)0x5127, (q15_t)0x5122, (q15_t)0x511d, (q15_t)0x5119, (q15_t)0x5114, (q15_t)0x510f, + (q15_t)0x510a, (q15_t)0x5105, (q15_t)0x5100, (q15_t)0x50fb, (q15_t)0x50f7, (q15_t)0x50f2, (q15_t)0x50ed, (q15_t)0x50e8, + (q15_t)0x50e3, (q15_t)0x50de, (q15_t)0x50d9, (q15_t)0x50d4, (q15_t)0x50d0, (q15_t)0x50cb, (q15_t)0x50c6, (q15_t)0x50c1, + (q15_t)0x50bc, (q15_t)0x50b7, (q15_t)0x50b2, (q15_t)0x50ad, (q15_t)0x50a9, (q15_t)0x50a4, (q15_t)0x509f, (q15_t)0x509a, + (q15_t)0x5095, (q15_t)0x5090, (q15_t)0x508b, (q15_t)0x5086, (q15_t)0x5082, (q15_t)0x507d, (q15_t)0x5078, (q15_t)0x5073, + (q15_t)0x506e, (q15_t)0x5069, (q15_t)0x5064, (q15_t)0x505f, (q15_t)0x505a, (q15_t)0x5056, (q15_t)0x5051, (q15_t)0x504c, + (q15_t)0x5047, (q15_t)0x5042, (q15_t)0x503d, (q15_t)0x5038, (q15_t)0x5033, (q15_t)0x502e, (q15_t)0x5029, (q15_t)0x5025, + (q15_t)0x5020, (q15_t)0x501b, (q15_t)0x5016, (q15_t)0x5011, (q15_t)0x500c, (q15_t)0x5007, (q15_t)0x5002, (q15_t)0x4ffd, + (q15_t)0x4ff8, (q15_t)0x4ff4, (q15_t)0x4fef, (q15_t)0x4fea, (q15_t)0x4fe5, (q15_t)0x4fe0, (q15_t)0x4fdb, (q15_t)0x4fd6, + (q15_t)0x4fd1, (q15_t)0x4fcc, (q15_t)0x4fc7, (q15_t)0x4fc2, (q15_t)0x4fbe, (q15_t)0x4fb9, (q15_t)0x4fb4, (q15_t)0x4faf, + (q15_t)0x4faa, (q15_t)0x4fa5, (q15_t)0x4fa0, (q15_t)0x4f9b, (q15_t)0x4f96, (q15_t)0x4f91, (q15_t)0x4f8c, (q15_t)0x4f87, + (q15_t)0x4f82, (q15_t)0x4f7e, (q15_t)0x4f79, (q15_t)0x4f74, (q15_t)0x4f6f, (q15_t)0x4f6a, (q15_t)0x4f65, (q15_t)0x4f60, + (q15_t)0x4f5b, (q15_t)0x4f56, (q15_t)0x4f51, (q15_t)0x4f4c, (q15_t)0x4f47, (q15_t)0x4f42, (q15_t)0x4f3d, (q15_t)0x4f39, + (q15_t)0x4f34, (q15_t)0x4f2f, (q15_t)0x4f2a, (q15_t)0x4f25, (q15_t)0x4f20, (q15_t)0x4f1b, (q15_t)0x4f16, (q15_t)0x4f11, + (q15_t)0x4f0c, (q15_t)0x4f07, (q15_t)0x4f02, (q15_t)0x4efd, (q15_t)0x4ef8, (q15_t)0x4ef3, (q15_t)0x4eee, (q15_t)0x4ee9, + (q15_t)0x4ee5, (q15_t)0x4ee0, (q15_t)0x4edb, (q15_t)0x4ed6, (q15_t)0x4ed1, (q15_t)0x4ecc, (q15_t)0x4ec7, (q15_t)0x4ec2, + (q15_t)0x4ebd, (q15_t)0x4eb8, (q15_t)0x4eb3, (q15_t)0x4eae, (q15_t)0x4ea9, (q15_t)0x4ea4, (q15_t)0x4e9f, (q15_t)0x4e9a, + (q15_t)0x4e95, (q15_t)0x4e90, (q15_t)0x4e8b, (q15_t)0x4e86, (q15_t)0x4e81, (q15_t)0x4e7c, (q15_t)0x4e78, (q15_t)0x4e73, + (q15_t)0x4e6e, (q15_t)0x4e69, (q15_t)0x4e64, (q15_t)0x4e5f, (q15_t)0x4e5a, (q15_t)0x4e55, (q15_t)0x4e50, (q15_t)0x4e4b, + (q15_t)0x4e46, (q15_t)0x4e41, (q15_t)0x4e3c, (q15_t)0x4e37, (q15_t)0x4e32, (q15_t)0x4e2d, (q15_t)0x4e28, (q15_t)0x4e23, + (q15_t)0x4e1e, (q15_t)0x4e19, (q15_t)0x4e14, (q15_t)0x4e0f, (q15_t)0x4e0a, (q15_t)0x4e05, (q15_t)0x4e00, (q15_t)0x4dfb, + (q15_t)0x4df6, (q15_t)0x4df1, (q15_t)0x4dec, (q15_t)0x4de7, (q15_t)0x4de2, (q15_t)0x4ddd, (q15_t)0x4dd8, (q15_t)0x4dd3, + (q15_t)0x4dce, (q15_t)0x4dc9, (q15_t)0x4dc4, (q15_t)0x4dbf, (q15_t)0x4dba, (q15_t)0x4db5, (q15_t)0x4db0, (q15_t)0x4dab, + (q15_t)0x4da6, (q15_t)0x4da1, (q15_t)0x4d9c, (q15_t)0x4d97, (q15_t)0x4d92, (q15_t)0x4d8d, (q15_t)0x4d88, (q15_t)0x4d83, + (q15_t)0x4d7e, (q15_t)0x4d79, (q15_t)0x4d74, (q15_t)0x4d6f, (q15_t)0x4d6a, (q15_t)0x4d65, (q15_t)0x4d60, (q15_t)0x4d5b, + (q15_t)0x4d56, (q15_t)0x4d51, (q15_t)0x4d4c, (q15_t)0x4d47, (q15_t)0x4d42, (q15_t)0x4d3d, (q15_t)0x4d38, (q15_t)0x4d33, + (q15_t)0x4d2e, (q15_t)0x4d29, (q15_t)0x4d24, (q15_t)0x4d1f, (q15_t)0x4d1a, (q15_t)0x4d15, (q15_t)0x4d10, (q15_t)0x4d0b, + (q15_t)0x4d06, (q15_t)0x4d01, (q15_t)0x4cfc, (q15_t)0x4cf7, (q15_t)0x4cf2, (q15_t)0x4ced, (q15_t)0x4ce8, (q15_t)0x4ce3, + (q15_t)0x4cde, (q15_t)0x4cd9, (q15_t)0x4cd4, (q15_t)0x4ccf, (q15_t)0x4cca, (q15_t)0x4cc5, (q15_t)0x4cc0, (q15_t)0x4cbb, + (q15_t)0x4cb6, (q15_t)0x4cb1, (q15_t)0x4cac, (q15_t)0x4ca7, (q15_t)0x4ca2, (q15_t)0x4c9d, (q15_t)0x4c98, (q15_t)0x4c93, + (q15_t)0x4c8e, (q15_t)0x4c88, (q15_t)0x4c83, (q15_t)0x4c7e, (q15_t)0x4c79, (q15_t)0x4c74, (q15_t)0x4c6f, (q15_t)0x4c6a, + (q15_t)0x4c65, (q15_t)0x4c60, (q15_t)0x4c5b, (q15_t)0x4c56, (q15_t)0x4c51, (q15_t)0x4c4c, (q15_t)0x4c47, (q15_t)0x4c42, + (q15_t)0x4c3d, (q15_t)0x4c38, (q15_t)0x4c33, (q15_t)0x4c2e, (q15_t)0x4c29, (q15_t)0x4c24, (q15_t)0x4c1f, (q15_t)0x4c1a, + (q15_t)0x4c14, (q15_t)0x4c0f, (q15_t)0x4c0a, (q15_t)0x4c05, (q15_t)0x4c00, (q15_t)0x4bfb, (q15_t)0x4bf6, (q15_t)0x4bf1, + (q15_t)0x4bec, (q15_t)0x4be7, (q15_t)0x4be2, (q15_t)0x4bdd, (q15_t)0x4bd8, (q15_t)0x4bd3, (q15_t)0x4bce, (q15_t)0x4bc9, + (q15_t)0x4bc4, (q15_t)0x4bbe, (q15_t)0x4bb9, (q15_t)0x4bb4, (q15_t)0x4baf, (q15_t)0x4baa, (q15_t)0x4ba5, (q15_t)0x4ba0, + (q15_t)0x4b9b, (q15_t)0x4b96, (q15_t)0x4b91, (q15_t)0x4b8c, (q15_t)0x4b87, (q15_t)0x4b82, (q15_t)0x4b7d, (q15_t)0x4b77, + (q15_t)0x4b72, (q15_t)0x4b6d, (q15_t)0x4b68, (q15_t)0x4b63, (q15_t)0x4b5e, (q15_t)0x4b59, (q15_t)0x4b54, (q15_t)0x4b4f, + (q15_t)0x4b4a, (q15_t)0x4b45, (q15_t)0x4b40, (q15_t)0x4b3b, (q15_t)0x4b35, (q15_t)0x4b30, (q15_t)0x4b2b, (q15_t)0x4b26, + (q15_t)0x4b21, (q15_t)0x4b1c, (q15_t)0x4b17, (q15_t)0x4b12, (q15_t)0x4b0d, (q15_t)0x4b08, (q15_t)0x4b03, (q15_t)0x4afd, + (q15_t)0x4af8, (q15_t)0x4af3, (q15_t)0x4aee, (q15_t)0x4ae9, (q15_t)0x4ae4, (q15_t)0x4adf, (q15_t)0x4ada, (q15_t)0x4ad5, + (q15_t)0x4ad0, (q15_t)0x4acb, (q15_t)0x4ac5, (q15_t)0x4ac0, (q15_t)0x4abb, (q15_t)0x4ab6, (q15_t)0x4ab1, (q15_t)0x4aac, + (q15_t)0x4aa7, (q15_t)0x4aa2, (q15_t)0x4a9d, (q15_t)0x4a97, (q15_t)0x4a92, (q15_t)0x4a8d, (q15_t)0x4a88, (q15_t)0x4a83, + (q15_t)0x4a7e, (q15_t)0x4a79, (q15_t)0x4a74, (q15_t)0x4a6f, (q15_t)0x4a6a, (q15_t)0x4a64, (q15_t)0x4a5f, (q15_t)0x4a5a, + (q15_t)0x4a55, (q15_t)0x4a50, (q15_t)0x4a4b, (q15_t)0x4a46, (q15_t)0x4a41, (q15_t)0x4a3b, (q15_t)0x4a36, (q15_t)0x4a31, + (q15_t)0x4a2c, (q15_t)0x4a27, (q15_t)0x4a22, (q15_t)0x4a1d, (q15_t)0x4a18, (q15_t)0x4a12, (q15_t)0x4a0d, (q15_t)0x4a08, + (q15_t)0x4a03, (q15_t)0x49fe, (q15_t)0x49f9, (q15_t)0x49f4, (q15_t)0x49ef, (q15_t)0x49e9, (q15_t)0x49e4, (q15_t)0x49df, + (q15_t)0x49da, (q15_t)0x49d5, (q15_t)0x49d0, (q15_t)0x49cb, (q15_t)0x49c6, (q15_t)0x49c0, (q15_t)0x49bb, (q15_t)0x49b6, + (q15_t)0x49b1, (q15_t)0x49ac, (q15_t)0x49a7, (q15_t)0x49a2, (q15_t)0x499c, (q15_t)0x4997, (q15_t)0x4992, (q15_t)0x498d, + (q15_t)0x4988, (q15_t)0x4983, (q15_t)0x497e, (q15_t)0x4978, (q15_t)0x4973, (q15_t)0x496e, (q15_t)0x4969, (q15_t)0x4964, + (q15_t)0x495f, (q15_t)0x495a, (q15_t)0x4954, (q15_t)0x494f, (q15_t)0x494a, (q15_t)0x4945, (q15_t)0x4940, (q15_t)0x493b, + (q15_t)0x4936, (q15_t)0x4930, (q15_t)0x492b, (q15_t)0x4926, (q15_t)0x4921, (q15_t)0x491c, (q15_t)0x4917, (q15_t)0x4911, + (q15_t)0x490c, (q15_t)0x4907, (q15_t)0x4902, (q15_t)0x48fd, (q15_t)0x48f8, (q15_t)0x48f2, (q15_t)0x48ed, (q15_t)0x48e8, + (q15_t)0x48e3, (q15_t)0x48de, (q15_t)0x48d9, (q15_t)0x48d3, (q15_t)0x48ce, (q15_t)0x48c9, (q15_t)0x48c4, (q15_t)0x48bf, + (q15_t)0x48ba, (q15_t)0x48b4, (q15_t)0x48af, (q15_t)0x48aa, (q15_t)0x48a5, (q15_t)0x48a0, (q15_t)0x489b, (q15_t)0x4895, + (q15_t)0x4890, (q15_t)0x488b, (q15_t)0x4886, (q15_t)0x4881, (q15_t)0x487c, (q15_t)0x4876, (q15_t)0x4871, (q15_t)0x486c, + (q15_t)0x4867, (q15_t)0x4862, (q15_t)0x485c, (q15_t)0x4857, (q15_t)0x4852, (q15_t)0x484d, (q15_t)0x4848, (q15_t)0x4843, + (q15_t)0x483d, (q15_t)0x4838, (q15_t)0x4833, (q15_t)0x482e, (q15_t)0x4829, (q15_t)0x4823, (q15_t)0x481e, (q15_t)0x4819, + (q15_t)0x4814, (q15_t)0x480f, (q15_t)0x4809, (q15_t)0x4804, (q15_t)0x47ff, (q15_t)0x47fa, (q15_t)0x47f5, (q15_t)0x47ef, + (q15_t)0x47ea, (q15_t)0x47e5, (q15_t)0x47e0, (q15_t)0x47db, (q15_t)0x47d5, (q15_t)0x47d0, (q15_t)0x47cb, (q15_t)0x47c6, + (q15_t)0x47c1, (q15_t)0x47bb, (q15_t)0x47b6, (q15_t)0x47b1, (q15_t)0x47ac, (q15_t)0x47a7, (q15_t)0x47a1, (q15_t)0x479c, + (q15_t)0x4797, (q15_t)0x4792, (q15_t)0x478d, (q15_t)0x4787, (q15_t)0x4782, (q15_t)0x477d, (q15_t)0x4778, (q15_t)0x4773, + (q15_t)0x476d, (q15_t)0x4768, (q15_t)0x4763, (q15_t)0x475e, (q15_t)0x4758, (q15_t)0x4753, (q15_t)0x474e, (q15_t)0x4749, + (q15_t)0x4744, (q15_t)0x473e, (q15_t)0x4739, (q15_t)0x4734, (q15_t)0x472f, (q15_t)0x4729, (q15_t)0x4724, (q15_t)0x471f, + (q15_t)0x471a, (q15_t)0x4715, (q15_t)0x470f, (q15_t)0x470a, (q15_t)0x4705, (q15_t)0x4700, (q15_t)0x46fa, (q15_t)0x46f5, + (q15_t)0x46f0, (q15_t)0x46eb, (q15_t)0x46e6, (q15_t)0x46e0, (q15_t)0x46db, (q15_t)0x46d6, (q15_t)0x46d1, (q15_t)0x46cb, + (q15_t)0x46c6, (q15_t)0x46c1, (q15_t)0x46bc, (q15_t)0x46b6, (q15_t)0x46b1, (q15_t)0x46ac, (q15_t)0x46a7, (q15_t)0x46a1, + (q15_t)0x469c, (q15_t)0x4697, (q15_t)0x4692, (q15_t)0x468d, (q15_t)0x4687, (q15_t)0x4682, (q15_t)0x467d, (q15_t)0x4678, + (q15_t)0x4672, (q15_t)0x466d, (q15_t)0x4668, (q15_t)0x4663, (q15_t)0x465d, (q15_t)0x4658, (q15_t)0x4653, (q15_t)0x464e, + (q15_t)0x4648, (q15_t)0x4643, (q15_t)0x463e, (q15_t)0x4639, (q15_t)0x4633, (q15_t)0x462e, (q15_t)0x4629, (q15_t)0x4624, + (q15_t)0x461e, (q15_t)0x4619, (q15_t)0x4614, (q15_t)0x460e, (q15_t)0x4609, (q15_t)0x4604, (q15_t)0x45ff, (q15_t)0x45f9, + (q15_t)0x45f4, (q15_t)0x45ef, (q15_t)0x45ea, (q15_t)0x45e4, (q15_t)0x45df, (q15_t)0x45da, (q15_t)0x45d5, (q15_t)0x45cf, + (q15_t)0x45ca, (q15_t)0x45c5, (q15_t)0x45c0, (q15_t)0x45ba, (q15_t)0x45b5, (q15_t)0x45b0, (q15_t)0x45aa, (q15_t)0x45a5, + (q15_t)0x45a0, (q15_t)0x459b, (q15_t)0x4595, (q15_t)0x4590, (q15_t)0x458b, (q15_t)0x4586, (q15_t)0x4580, (q15_t)0x457b, + (q15_t)0x4576, (q15_t)0x4570, (q15_t)0x456b, (q15_t)0x4566, (q15_t)0x4561, (q15_t)0x455b, (q15_t)0x4556, (q15_t)0x4551, + (q15_t)0x454b, (q15_t)0x4546, (q15_t)0x4541, (q15_t)0x453c, (q15_t)0x4536, (q15_t)0x4531, (q15_t)0x452c, (q15_t)0x4526, + (q15_t)0x4521, (q15_t)0x451c, (q15_t)0x4517, (q15_t)0x4511, (q15_t)0x450c, (q15_t)0x4507, (q15_t)0x4501, (q15_t)0x44fc, + (q15_t)0x44f7, (q15_t)0x44f2, (q15_t)0x44ec, (q15_t)0x44e7, (q15_t)0x44e2, (q15_t)0x44dc, (q15_t)0x44d7, (q15_t)0x44d2, + (q15_t)0x44cd, (q15_t)0x44c7, (q15_t)0x44c2, (q15_t)0x44bd, (q15_t)0x44b7, (q15_t)0x44b2, (q15_t)0x44ad, (q15_t)0x44a7, + (q15_t)0x44a2, (q15_t)0x449d, (q15_t)0x4497, (q15_t)0x4492, (q15_t)0x448d, (q15_t)0x4488, (q15_t)0x4482, (q15_t)0x447d, + (q15_t)0x4478, (q15_t)0x4472, (q15_t)0x446d, (q15_t)0x4468, (q15_t)0x4462, (q15_t)0x445d, (q15_t)0x4458, (q15_t)0x4452, + (q15_t)0x444d, (q15_t)0x4448, (q15_t)0x4443, (q15_t)0x443d, (q15_t)0x4438, (q15_t)0x4433, (q15_t)0x442d, (q15_t)0x4428, + (q15_t)0x4423, (q15_t)0x441d, (q15_t)0x4418, (q15_t)0x4413, (q15_t)0x440d, (q15_t)0x4408, (q15_t)0x4403, (q15_t)0x43fd, + (q15_t)0x43f8, (q15_t)0x43f3, (q15_t)0x43ed, (q15_t)0x43e8, (q15_t)0x43e3, (q15_t)0x43dd, (q15_t)0x43d8, (q15_t)0x43d3, + (q15_t)0x43cd, (q15_t)0x43c8, (q15_t)0x43c3, (q15_t)0x43bd, (q15_t)0x43b8, (q15_t)0x43b3, (q15_t)0x43ad, (q15_t)0x43a8, + (q15_t)0x43a3, (q15_t)0x439d, (q15_t)0x4398, (q15_t)0x4393, (q15_t)0x438d, (q15_t)0x4388, (q15_t)0x4383, (q15_t)0x437d, + (q15_t)0x4378, (q15_t)0x4373, (q15_t)0x436d, (q15_t)0x4368, (q15_t)0x4363, (q15_t)0x435d, (q15_t)0x4358, (q15_t)0x4353, + (q15_t)0x434d, (q15_t)0x4348, (q15_t)0x4343, (q15_t)0x433d, (q15_t)0x4338, (q15_t)0x4333, (q15_t)0x432d, (q15_t)0x4328, + (q15_t)0x4323, (q15_t)0x431d, (q15_t)0x4318, (q15_t)0x4313, (q15_t)0x430d, (q15_t)0x4308, (q15_t)0x4302, (q15_t)0x42fd, + (q15_t)0x42f8, (q15_t)0x42f2, (q15_t)0x42ed, (q15_t)0x42e8, (q15_t)0x42e2, (q15_t)0x42dd, (q15_t)0x42d8, (q15_t)0x42d2, + (q15_t)0x42cd, (q15_t)0x42c8, (q15_t)0x42c2, (q15_t)0x42bd, (q15_t)0x42b7, (q15_t)0x42b2, (q15_t)0x42ad, (q15_t)0x42a7, + (q15_t)0x42a2, (q15_t)0x429d, (q15_t)0x4297, (q15_t)0x4292, (q15_t)0x428d, (q15_t)0x4287, (q15_t)0x4282, (q15_t)0x427c, + (q15_t)0x4277, (q15_t)0x4272, (q15_t)0x426c, (q15_t)0x4267, (q15_t)0x4262, (q15_t)0x425c, (q15_t)0x4257, (q15_t)0x4251, + (q15_t)0x424c, (q15_t)0x4247, (q15_t)0x4241, (q15_t)0x423c, (q15_t)0x4237, (q15_t)0x4231, (q15_t)0x422c, (q15_t)0x4226, + (q15_t)0x4221, (q15_t)0x421c, (q15_t)0x4216, (q15_t)0x4211, (q15_t)0x420c, (q15_t)0x4206, (q15_t)0x4201, (q15_t)0x41fb, + (q15_t)0x41f6, (q15_t)0x41f1, (q15_t)0x41eb, (q15_t)0x41e6, (q15_t)0x41e0, (q15_t)0x41db, (q15_t)0x41d6, (q15_t)0x41d0, + (q15_t)0x41cb, (q15_t)0x41c6, (q15_t)0x41c0, (q15_t)0x41bb, (q15_t)0x41b5, (q15_t)0x41b0, (q15_t)0x41ab, (q15_t)0x41a5, + (q15_t)0x41a0, (q15_t)0x419a, (q15_t)0x4195, (q15_t)0x4190, (q15_t)0x418a, (q15_t)0x4185, (q15_t)0x417f, (q15_t)0x417a, + (q15_t)0x4175, (q15_t)0x416f, (q15_t)0x416a, (q15_t)0x4164, (q15_t)0x415f, (q15_t)0x415a, (q15_t)0x4154, (q15_t)0x414f, + (q15_t)0x4149, (q15_t)0x4144, (q15_t)0x413f, (q15_t)0x4139, (q15_t)0x4134, (q15_t)0x412e, (q15_t)0x4129, (q15_t)0x4124, + (q15_t)0x411e, (q15_t)0x4119, (q15_t)0x4113, (q15_t)0x410e, (q15_t)0x4108, (q15_t)0x4103, (q15_t)0x40fe, (q15_t)0x40f8, + (q15_t)0x40f3, (q15_t)0x40ed, (q15_t)0x40e8, (q15_t)0x40e3, (q15_t)0x40dd, (q15_t)0x40d8, (q15_t)0x40d2, (q15_t)0x40cd, + (q15_t)0x40c8, (q15_t)0x40c2, (q15_t)0x40bd, (q15_t)0x40b7, (q15_t)0x40b2, (q15_t)0x40ac, (q15_t)0x40a7, (q15_t)0x40a2, + (q15_t)0x409c, (q15_t)0x4097, (q15_t)0x4091, (q15_t)0x408c, (q15_t)0x4086, (q15_t)0x4081, (q15_t)0x407c, (q15_t)0x4076, + (q15_t)0x4071, (q15_t)0x406b, (q15_t)0x4066, (q15_t)0x4060, (q15_t)0x405b, (q15_t)0x4056, (q15_t)0x4050, (q15_t)0x404b, + (q15_t)0x4045, (q15_t)0x4040, (q15_t)0x403a, (q15_t)0x4035, (q15_t)0x4030, (q15_t)0x402a, (q15_t)0x4025, (q15_t)0x401f, + (q15_t)0x401a, (q15_t)0x4014, (q15_t)0x400f, (q15_t)0x4009, (q15_t)0x4004, (q15_t)0x3fff, (q15_t)0x3ff9, (q15_t)0x3ff4, + (q15_t)0x3fee, (q15_t)0x3fe9, (q15_t)0x3fe3, (q15_t)0x3fde, (q15_t)0x3fd8, (q15_t)0x3fd3, (q15_t)0x3fce, (q15_t)0x3fc8, + (q15_t)0x3fc3, (q15_t)0x3fbd, (q15_t)0x3fb8, (q15_t)0x3fb2, (q15_t)0x3fad, (q15_t)0x3fa7, (q15_t)0x3fa2, (q15_t)0x3f9d, + (q15_t)0x3f97, (q15_t)0x3f92, (q15_t)0x3f8c, (q15_t)0x3f87, (q15_t)0x3f81, (q15_t)0x3f7c, (q15_t)0x3f76, (q15_t)0x3f71, + (q15_t)0x3f6b, (q15_t)0x3f66, (q15_t)0x3f61, (q15_t)0x3f5b, (q15_t)0x3f56, (q15_t)0x3f50, (q15_t)0x3f4b, (q15_t)0x3f45, + (q15_t)0x3f40, (q15_t)0x3f3a, (q15_t)0x3f35, (q15_t)0x3f2f, (q15_t)0x3f2a, (q15_t)0x3f24, (q15_t)0x3f1f, (q15_t)0x3f1a, + (q15_t)0x3f14, (q15_t)0x3f0f, (q15_t)0x3f09, (q15_t)0x3f04, (q15_t)0x3efe, (q15_t)0x3ef9, (q15_t)0x3ef3, (q15_t)0x3eee, + (q15_t)0x3ee8, (q15_t)0x3ee3, (q15_t)0x3edd, (q15_t)0x3ed8, (q15_t)0x3ed2, (q15_t)0x3ecd, (q15_t)0x3ec7, (q15_t)0x3ec2, + (q15_t)0x3ebd, (q15_t)0x3eb7, (q15_t)0x3eb2, (q15_t)0x3eac, (q15_t)0x3ea7, (q15_t)0x3ea1, (q15_t)0x3e9c, (q15_t)0x3e96, + (q15_t)0x3e91, (q15_t)0x3e8b, (q15_t)0x3e86, (q15_t)0x3e80, (q15_t)0x3e7b, (q15_t)0x3e75, (q15_t)0x3e70, (q15_t)0x3e6a, + (q15_t)0x3e65, (q15_t)0x3e5f, (q15_t)0x3e5a, (q15_t)0x3e54, (q15_t)0x3e4f, (q15_t)0x3e49, (q15_t)0x3e44, (q15_t)0x3e3e, + (q15_t)0x3e39, (q15_t)0x3e33, (q15_t)0x3e2e, (q15_t)0x3e28, (q15_t)0x3e23, (q15_t)0x3e1d, (q15_t)0x3e18, (q15_t)0x3e12, + (q15_t)0x3e0d, (q15_t)0x3e07, (q15_t)0x3e02, (q15_t)0x3dfc, (q15_t)0x3df7, (q15_t)0x3df1, (q15_t)0x3dec, (q15_t)0x3de6, + (q15_t)0x3de1, (q15_t)0x3ddb, (q15_t)0x3dd6, (q15_t)0x3dd0, (q15_t)0x3dcb, (q15_t)0x3dc5, (q15_t)0x3dc0, (q15_t)0x3dba, + (q15_t)0x3db5, (q15_t)0x3daf, (q15_t)0x3daa, (q15_t)0x3da4, (q15_t)0x3d9f, (q15_t)0x3d99, (q15_t)0x3d94, (q15_t)0x3d8e, + (q15_t)0x3d89, (q15_t)0x3d83, (q15_t)0x3d7e, (q15_t)0x3d78, (q15_t)0x3d73, (q15_t)0x3d6d, (q15_t)0x3d68, (q15_t)0x3d62, + (q15_t)0x3d5d, (q15_t)0x3d57, (q15_t)0x3d52, (q15_t)0x3d4c, (q15_t)0x3d47, (q15_t)0x3d41, (q15_t)0x3d3c, (q15_t)0x3d36, + (q15_t)0x3d31, (q15_t)0x3d2b, (q15_t)0x3d26, (q15_t)0x3d20, (q15_t)0x3d1b, (q15_t)0x3d15, (q15_t)0x3d10, (q15_t)0x3d0a, + (q15_t)0x3d04, (q15_t)0x3cff, (q15_t)0x3cf9, (q15_t)0x3cf4, (q15_t)0x3cee, (q15_t)0x3ce9, (q15_t)0x3ce3, (q15_t)0x3cde, + (q15_t)0x3cd8, (q15_t)0x3cd3, (q15_t)0x3ccd, (q15_t)0x3cc8, (q15_t)0x3cc2, (q15_t)0x3cbd, (q15_t)0x3cb7, (q15_t)0x3cb2, + (q15_t)0x3cac, (q15_t)0x3ca7, (q15_t)0x3ca1, (q15_t)0x3c9b, (q15_t)0x3c96, (q15_t)0x3c90, (q15_t)0x3c8b, (q15_t)0x3c85, + (q15_t)0x3c80, (q15_t)0x3c7a, (q15_t)0x3c75, (q15_t)0x3c6f, (q15_t)0x3c6a, (q15_t)0x3c64, (q15_t)0x3c5f, (q15_t)0x3c59, + (q15_t)0x3c53, (q15_t)0x3c4e, (q15_t)0x3c48, (q15_t)0x3c43, (q15_t)0x3c3d, (q15_t)0x3c38, (q15_t)0x3c32, (q15_t)0x3c2d, + (q15_t)0x3c27, (q15_t)0x3c22, (q15_t)0x3c1c, (q15_t)0x3c16, (q15_t)0x3c11, (q15_t)0x3c0b, (q15_t)0x3c06, (q15_t)0x3c00, + (q15_t)0x3bfb, (q15_t)0x3bf5, (q15_t)0x3bf0, (q15_t)0x3bea, (q15_t)0x3be5, (q15_t)0x3bdf, (q15_t)0x3bd9, (q15_t)0x3bd4, + (q15_t)0x3bce, (q15_t)0x3bc9, (q15_t)0x3bc3, (q15_t)0x3bbe, (q15_t)0x3bb8, (q15_t)0x3bb3, (q15_t)0x3bad, (q15_t)0x3ba7, + (q15_t)0x3ba2, (q15_t)0x3b9c, (q15_t)0x3b97, (q15_t)0x3b91, (q15_t)0x3b8c, (q15_t)0x3b86, (q15_t)0x3b80, (q15_t)0x3b7b, + (q15_t)0x3b75, (q15_t)0x3b70, (q15_t)0x3b6a, (q15_t)0x3b65, (q15_t)0x3b5f, (q15_t)0x3b5a, (q15_t)0x3b54, (q15_t)0x3b4e, + (q15_t)0x3b49, (q15_t)0x3b43, (q15_t)0x3b3e, (q15_t)0x3b38, (q15_t)0x3b33, (q15_t)0x3b2d, (q15_t)0x3b27, (q15_t)0x3b22, + (q15_t)0x3b1c, (q15_t)0x3b17, (q15_t)0x3b11, (q15_t)0x3b0c, (q15_t)0x3b06, (q15_t)0x3b00, (q15_t)0x3afb, (q15_t)0x3af5, + (q15_t)0x3af0, (q15_t)0x3aea, (q15_t)0x3ae4, (q15_t)0x3adf, (q15_t)0x3ad9, (q15_t)0x3ad4, (q15_t)0x3ace, (q15_t)0x3ac9, + (q15_t)0x3ac3, (q15_t)0x3abd, (q15_t)0x3ab8, (q15_t)0x3ab2, (q15_t)0x3aad, (q15_t)0x3aa7, (q15_t)0x3aa2, (q15_t)0x3a9c, + (q15_t)0x3a96, (q15_t)0x3a91, (q15_t)0x3a8b, (q15_t)0x3a86, (q15_t)0x3a80, (q15_t)0x3a7a, (q15_t)0x3a75, (q15_t)0x3a6f, + (q15_t)0x3a6a, (q15_t)0x3a64, (q15_t)0x3a5e, (q15_t)0x3a59, (q15_t)0x3a53, (q15_t)0x3a4e, (q15_t)0x3a48, (q15_t)0x3a42, + (q15_t)0x3a3d, (q15_t)0x3a37, (q15_t)0x3a32, (q15_t)0x3a2c, (q15_t)0x3a26, (q15_t)0x3a21, (q15_t)0x3a1b, (q15_t)0x3a16, + (q15_t)0x3a10, (q15_t)0x3a0b, (q15_t)0x3a05, (q15_t)0x39ff, (q15_t)0x39fa, (q15_t)0x39f4, (q15_t)0x39ee, (q15_t)0x39e9, + (q15_t)0x39e3, (q15_t)0x39de, (q15_t)0x39d8, (q15_t)0x39d2, (q15_t)0x39cd, (q15_t)0x39c7, (q15_t)0x39c2, (q15_t)0x39bc, + (q15_t)0x39b6, (q15_t)0x39b1, (q15_t)0x39ab, (q15_t)0x39a6, (q15_t)0x39a0, (q15_t)0x399a, (q15_t)0x3995, (q15_t)0x398f, + (q15_t)0x398a, (q15_t)0x3984, (q15_t)0x397e, (q15_t)0x3979, (q15_t)0x3973, (q15_t)0x396d, (q15_t)0x3968, (q15_t)0x3962, + (q15_t)0x395d, (q15_t)0x3957, (q15_t)0x3951, (q15_t)0x394c, (q15_t)0x3946, (q15_t)0x3941, (q15_t)0x393b, (q15_t)0x3935, + (q15_t)0x3930, (q15_t)0x392a, (q15_t)0x3924, (q15_t)0x391f, (q15_t)0x3919, (q15_t)0x3914, (q15_t)0x390e, (q15_t)0x3908, + (q15_t)0x3903, (q15_t)0x38fd, (q15_t)0x38f7, (q15_t)0x38f2, (q15_t)0x38ec, (q15_t)0x38e7, (q15_t)0x38e1, (q15_t)0x38db, + (q15_t)0x38d6, (q15_t)0x38d0, (q15_t)0x38ca, (q15_t)0x38c5, (q15_t)0x38bf, (q15_t)0x38ba, (q15_t)0x38b4, (q15_t)0x38ae, + (q15_t)0x38a9, (q15_t)0x38a3, (q15_t)0x389d, (q15_t)0x3898, (q15_t)0x3892, (q15_t)0x388c, (q15_t)0x3887, (q15_t)0x3881, + (q15_t)0x387c, (q15_t)0x3876, (q15_t)0x3870, (q15_t)0x386b, (q15_t)0x3865, (q15_t)0x385f, (q15_t)0x385a, (q15_t)0x3854, + (q15_t)0x384e, (q15_t)0x3849, (q15_t)0x3843, (q15_t)0x383d, (q15_t)0x3838, (q15_t)0x3832, (q15_t)0x382d, (q15_t)0x3827, + (q15_t)0x3821, (q15_t)0x381c, (q15_t)0x3816, (q15_t)0x3810, (q15_t)0x380b, (q15_t)0x3805, (q15_t)0x37ff, (q15_t)0x37fa, + (q15_t)0x37f4, (q15_t)0x37ee, (q15_t)0x37e9, (q15_t)0x37e3, (q15_t)0x37dd, (q15_t)0x37d8, (q15_t)0x37d2, (q15_t)0x37cc, + (q15_t)0x37c7, (q15_t)0x37c1, (q15_t)0x37bc, (q15_t)0x37b6, (q15_t)0x37b0, (q15_t)0x37ab, (q15_t)0x37a5, (q15_t)0x379f, + (q15_t)0x379a, (q15_t)0x3794, (q15_t)0x378e, (q15_t)0x3789, (q15_t)0x3783, (q15_t)0x377d, (q15_t)0x3778, (q15_t)0x3772, + (q15_t)0x376c, (q15_t)0x3767, (q15_t)0x3761, (q15_t)0x375b, (q15_t)0x3756, (q15_t)0x3750, (q15_t)0x374a, (q15_t)0x3745, + (q15_t)0x373f, (q15_t)0x3739, (q15_t)0x3734, (q15_t)0x372e, (q15_t)0x3728, (q15_t)0x3723, (q15_t)0x371d, (q15_t)0x3717, + (q15_t)0x3712, (q15_t)0x370c, (q15_t)0x3706, (q15_t)0x3701, (q15_t)0x36fb, (q15_t)0x36f5, (q15_t)0x36f0, (q15_t)0x36ea, + (q15_t)0x36e4, (q15_t)0x36df, (q15_t)0x36d9, (q15_t)0x36d3, (q15_t)0x36ce, (q15_t)0x36c8, (q15_t)0x36c2, (q15_t)0x36bc, + (q15_t)0x36b7, (q15_t)0x36b1, (q15_t)0x36ab, (q15_t)0x36a6, (q15_t)0x36a0, (q15_t)0x369a, (q15_t)0x3695, (q15_t)0x368f, + (q15_t)0x3689, (q15_t)0x3684, (q15_t)0x367e, (q15_t)0x3678, (q15_t)0x3673, (q15_t)0x366d, (q15_t)0x3667, (q15_t)0x3662, + (q15_t)0x365c, (q15_t)0x3656, (q15_t)0x3650, (q15_t)0x364b, (q15_t)0x3645, (q15_t)0x363f, (q15_t)0x363a, (q15_t)0x3634, + (q15_t)0x362e, (q15_t)0x3629, (q15_t)0x3623, (q15_t)0x361d, (q15_t)0x3618, (q15_t)0x3612, (q15_t)0x360c, (q15_t)0x3606, + (q15_t)0x3601, (q15_t)0x35fb, (q15_t)0x35f5, (q15_t)0x35f0, (q15_t)0x35ea, (q15_t)0x35e4, (q15_t)0x35df, (q15_t)0x35d9, + (q15_t)0x35d3, (q15_t)0x35cd, (q15_t)0x35c8, (q15_t)0x35c2, (q15_t)0x35bc, (q15_t)0x35b7, (q15_t)0x35b1, (q15_t)0x35ab, + (q15_t)0x35a6, (q15_t)0x35a0, (q15_t)0x359a, (q15_t)0x3594, (q15_t)0x358f, (q15_t)0x3589, (q15_t)0x3583, (q15_t)0x357e, + (q15_t)0x3578, (q15_t)0x3572, (q15_t)0x356c, (q15_t)0x3567, (q15_t)0x3561, (q15_t)0x355b, (q15_t)0x3556, (q15_t)0x3550, + (q15_t)0x354a, (q15_t)0x3544, (q15_t)0x353f, (q15_t)0x3539, (q15_t)0x3533, (q15_t)0x352e, (q15_t)0x3528, (q15_t)0x3522, + (q15_t)0x351c, (q15_t)0x3517, (q15_t)0x3511, (q15_t)0x350b, (q15_t)0x3506, (q15_t)0x3500, (q15_t)0x34fa, (q15_t)0x34f4, + (q15_t)0x34ef, (q15_t)0x34e9, (q15_t)0x34e3, (q15_t)0x34de, (q15_t)0x34d8, (q15_t)0x34d2, (q15_t)0x34cc, (q15_t)0x34c7, + (q15_t)0x34c1, (q15_t)0x34bb, (q15_t)0x34b6, (q15_t)0x34b0, (q15_t)0x34aa, (q15_t)0x34a4, (q15_t)0x349f, (q15_t)0x3499, + (q15_t)0x3493, (q15_t)0x348d, (q15_t)0x3488, (q15_t)0x3482, (q15_t)0x347c, (q15_t)0x3476, (q15_t)0x3471, (q15_t)0x346b, + (q15_t)0x3465, (q15_t)0x3460, (q15_t)0x345a, (q15_t)0x3454, (q15_t)0x344e, (q15_t)0x3449, (q15_t)0x3443, (q15_t)0x343d, + (q15_t)0x3437, (q15_t)0x3432, (q15_t)0x342c, (q15_t)0x3426, (q15_t)0x3420, (q15_t)0x341b, (q15_t)0x3415, (q15_t)0x340f, + (q15_t)0x340a, (q15_t)0x3404, (q15_t)0x33fe, (q15_t)0x33f8, (q15_t)0x33f3, (q15_t)0x33ed, (q15_t)0x33e7, (q15_t)0x33e1, + (q15_t)0x33dc, (q15_t)0x33d6, (q15_t)0x33d0, (q15_t)0x33ca, (q15_t)0x33c5, (q15_t)0x33bf, (q15_t)0x33b9, (q15_t)0x33b3, + (q15_t)0x33ae, (q15_t)0x33a8, (q15_t)0x33a2, (q15_t)0x339c, (q15_t)0x3397, (q15_t)0x3391, (q15_t)0x338b, (q15_t)0x3385, + (q15_t)0x3380, (q15_t)0x337a, (q15_t)0x3374, (q15_t)0x336e, (q15_t)0x3369, (q15_t)0x3363, (q15_t)0x335d, (q15_t)0x3357, + (q15_t)0x3352, (q15_t)0x334c, (q15_t)0x3346, (q15_t)0x3340, (q15_t)0x333b, (q15_t)0x3335, (q15_t)0x332f, (q15_t)0x3329, + (q15_t)0x3324, (q15_t)0x331e, (q15_t)0x3318, (q15_t)0x3312, (q15_t)0x330c, (q15_t)0x3307, (q15_t)0x3301, (q15_t)0x32fb, + (q15_t)0x32f5, (q15_t)0x32f0, (q15_t)0x32ea, (q15_t)0x32e4, (q15_t)0x32de, (q15_t)0x32d9, (q15_t)0x32d3, (q15_t)0x32cd, + (q15_t)0x32c7, (q15_t)0x32c2, (q15_t)0x32bc, (q15_t)0x32b6, (q15_t)0x32b0, (q15_t)0x32aa, (q15_t)0x32a5, (q15_t)0x329f, + (q15_t)0x3299, (q15_t)0x3293, (q15_t)0x328e, (q15_t)0x3288, (q15_t)0x3282, (q15_t)0x327c, (q15_t)0x3276, (q15_t)0x3271, + (q15_t)0x326b, (q15_t)0x3265, (q15_t)0x325f, (q15_t)0x325a, (q15_t)0x3254, (q15_t)0x324e, (q15_t)0x3248, (q15_t)0x3243, + (q15_t)0x323d, (q15_t)0x3237, (q15_t)0x3231, (q15_t)0x322b, (q15_t)0x3226, (q15_t)0x3220, (q15_t)0x321a, (q15_t)0x3214, + (q15_t)0x320e, (q15_t)0x3209, (q15_t)0x3203, (q15_t)0x31fd, (q15_t)0x31f7, (q15_t)0x31f2, (q15_t)0x31ec, (q15_t)0x31e6, + (q15_t)0x31e0, (q15_t)0x31da, (q15_t)0x31d5, (q15_t)0x31cf, (q15_t)0x31c9, (q15_t)0x31c3, (q15_t)0x31bd, (q15_t)0x31b8, + (q15_t)0x31b2, (q15_t)0x31ac, (q15_t)0x31a6, (q15_t)0x31a1, (q15_t)0x319b, (q15_t)0x3195, (q15_t)0x318f, (q15_t)0x3189, + (q15_t)0x3184, (q15_t)0x317e, (q15_t)0x3178, (q15_t)0x3172, (q15_t)0x316c, (q15_t)0x3167, (q15_t)0x3161, (q15_t)0x315b, + (q15_t)0x3155, (q15_t)0x314f, (q15_t)0x314a, (q15_t)0x3144, (q15_t)0x313e, (q15_t)0x3138, (q15_t)0x3132, (q15_t)0x312d, + (q15_t)0x3127, (q15_t)0x3121, (q15_t)0x311b, (q15_t)0x3115, (q15_t)0x3110, (q15_t)0x310a, (q15_t)0x3104, (q15_t)0x30fe, + (q15_t)0x30f8, (q15_t)0x30f3, (q15_t)0x30ed, (q15_t)0x30e7, (q15_t)0x30e1, (q15_t)0x30db, (q15_t)0x30d6, (q15_t)0x30d0, + (q15_t)0x30ca, (q15_t)0x30c4, (q15_t)0x30be, (q15_t)0x30b8, (q15_t)0x30b3, (q15_t)0x30ad, (q15_t)0x30a7, (q15_t)0x30a1, + (q15_t)0x309b, (q15_t)0x3096, (q15_t)0x3090, (q15_t)0x308a, (q15_t)0x3084, (q15_t)0x307e, (q15_t)0x3079, (q15_t)0x3073, + (q15_t)0x306d, (q15_t)0x3067, (q15_t)0x3061, (q15_t)0x305b, (q15_t)0x3056, (q15_t)0x3050, (q15_t)0x304a, (q15_t)0x3044, + (q15_t)0x303e, (q15_t)0x3039, (q15_t)0x3033, (q15_t)0x302d, (q15_t)0x3027, (q15_t)0x3021, (q15_t)0x301b, (q15_t)0x3016, + (q15_t)0x3010, (q15_t)0x300a, (q15_t)0x3004, (q15_t)0x2ffe, (q15_t)0x2ff8, (q15_t)0x2ff3, (q15_t)0x2fed, (q15_t)0x2fe7, + (q15_t)0x2fe1, (q15_t)0x2fdb, (q15_t)0x2fd6, (q15_t)0x2fd0, (q15_t)0x2fca, (q15_t)0x2fc4, (q15_t)0x2fbe, (q15_t)0x2fb8, + (q15_t)0x2fb3, (q15_t)0x2fad, (q15_t)0x2fa7, (q15_t)0x2fa1, (q15_t)0x2f9b, (q15_t)0x2f95, (q15_t)0x2f90, (q15_t)0x2f8a, + (q15_t)0x2f84, (q15_t)0x2f7e, (q15_t)0x2f78, (q15_t)0x2f72, (q15_t)0x2f6d, (q15_t)0x2f67, (q15_t)0x2f61, (q15_t)0x2f5b, + (q15_t)0x2f55, (q15_t)0x2f4f, (q15_t)0x2f4a, (q15_t)0x2f44, (q15_t)0x2f3e, (q15_t)0x2f38, (q15_t)0x2f32, (q15_t)0x2f2c, + (q15_t)0x2f27, (q15_t)0x2f21, (q15_t)0x2f1b, (q15_t)0x2f15, (q15_t)0x2f0f, (q15_t)0x2f09, (q15_t)0x2f03, (q15_t)0x2efe, + (q15_t)0x2ef8, (q15_t)0x2ef2, (q15_t)0x2eec, (q15_t)0x2ee6, (q15_t)0x2ee0, (q15_t)0x2edb, (q15_t)0x2ed5, (q15_t)0x2ecf, + (q15_t)0x2ec9, (q15_t)0x2ec3, (q15_t)0x2ebd, (q15_t)0x2eb7, (q15_t)0x2eb2, (q15_t)0x2eac, (q15_t)0x2ea6, (q15_t)0x2ea0, + (q15_t)0x2e9a, (q15_t)0x2e94, (q15_t)0x2e8e, (q15_t)0x2e89, (q15_t)0x2e83, (q15_t)0x2e7d, (q15_t)0x2e77, (q15_t)0x2e71, + (q15_t)0x2e6b, (q15_t)0x2e65, (q15_t)0x2e60, (q15_t)0x2e5a, (q15_t)0x2e54, (q15_t)0x2e4e, (q15_t)0x2e48, (q15_t)0x2e42, + (q15_t)0x2e3c, (q15_t)0x2e37, (q15_t)0x2e31, (q15_t)0x2e2b, (q15_t)0x2e25, (q15_t)0x2e1f, (q15_t)0x2e19, (q15_t)0x2e13, + (q15_t)0x2e0e, (q15_t)0x2e08, (q15_t)0x2e02, (q15_t)0x2dfc, (q15_t)0x2df6, (q15_t)0x2df0, (q15_t)0x2dea, (q15_t)0x2de5, + (q15_t)0x2ddf, (q15_t)0x2dd9, (q15_t)0x2dd3, (q15_t)0x2dcd, (q15_t)0x2dc7, (q15_t)0x2dc1, (q15_t)0x2dbb, (q15_t)0x2db6, + (q15_t)0x2db0, (q15_t)0x2daa, (q15_t)0x2da4, (q15_t)0x2d9e, (q15_t)0x2d98, (q15_t)0x2d92, (q15_t)0x2d8d, (q15_t)0x2d87, + (q15_t)0x2d81, (q15_t)0x2d7b, (q15_t)0x2d75, (q15_t)0x2d6f, (q15_t)0x2d69, (q15_t)0x2d63, (q15_t)0x2d5e, (q15_t)0x2d58, + (q15_t)0x2d52, (q15_t)0x2d4c, (q15_t)0x2d46, (q15_t)0x2d40, (q15_t)0x2d3a, (q15_t)0x2d34, (q15_t)0x2d2f, (q15_t)0x2d29, + (q15_t)0x2d23, (q15_t)0x2d1d, (q15_t)0x2d17, (q15_t)0x2d11, (q15_t)0x2d0b, (q15_t)0x2d05, (q15_t)0x2cff, (q15_t)0x2cfa, + (q15_t)0x2cf4, (q15_t)0x2cee, (q15_t)0x2ce8, (q15_t)0x2ce2, (q15_t)0x2cdc, (q15_t)0x2cd6, (q15_t)0x2cd0, (q15_t)0x2ccb, + (q15_t)0x2cc5, (q15_t)0x2cbf, (q15_t)0x2cb9, (q15_t)0x2cb3, (q15_t)0x2cad, (q15_t)0x2ca7, (q15_t)0x2ca1, (q15_t)0x2c9b, + (q15_t)0x2c96, (q15_t)0x2c90, (q15_t)0x2c8a, (q15_t)0x2c84, (q15_t)0x2c7e, (q15_t)0x2c78, (q15_t)0x2c72, (q15_t)0x2c6c, + (q15_t)0x2c66, (q15_t)0x2c61, (q15_t)0x2c5b, (q15_t)0x2c55, (q15_t)0x2c4f, (q15_t)0x2c49, (q15_t)0x2c43, (q15_t)0x2c3d, + (q15_t)0x2c37, (q15_t)0x2c31, (q15_t)0x2c2b, (q15_t)0x2c26, (q15_t)0x2c20, (q15_t)0x2c1a, (q15_t)0x2c14, (q15_t)0x2c0e, + (q15_t)0x2c08, (q15_t)0x2c02, (q15_t)0x2bfc, (q15_t)0x2bf6, (q15_t)0x2bf0, (q15_t)0x2beb, (q15_t)0x2be5, (q15_t)0x2bdf, + (q15_t)0x2bd9, (q15_t)0x2bd3, (q15_t)0x2bcd, (q15_t)0x2bc7, (q15_t)0x2bc1, (q15_t)0x2bbb, (q15_t)0x2bb5, (q15_t)0x2bb0, + (q15_t)0x2baa, (q15_t)0x2ba4, (q15_t)0x2b9e, (q15_t)0x2b98, (q15_t)0x2b92, (q15_t)0x2b8c, (q15_t)0x2b86, (q15_t)0x2b80, + (q15_t)0x2b7a, (q15_t)0x2b74, (q15_t)0x2b6f, (q15_t)0x2b69, (q15_t)0x2b63, (q15_t)0x2b5d, (q15_t)0x2b57, (q15_t)0x2b51, + (q15_t)0x2b4b, (q15_t)0x2b45, (q15_t)0x2b3f, (q15_t)0x2b39, (q15_t)0x2b33, (q15_t)0x2b2d, (q15_t)0x2b28, (q15_t)0x2b22, + (q15_t)0x2b1c, (q15_t)0x2b16, (q15_t)0x2b10, (q15_t)0x2b0a, (q15_t)0x2b04, (q15_t)0x2afe, (q15_t)0x2af8, (q15_t)0x2af2, + (q15_t)0x2aec, (q15_t)0x2ae6, (q15_t)0x2ae1, (q15_t)0x2adb, (q15_t)0x2ad5, (q15_t)0x2acf, (q15_t)0x2ac9, (q15_t)0x2ac3, + (q15_t)0x2abd, (q15_t)0x2ab7, (q15_t)0x2ab1, (q15_t)0x2aab, (q15_t)0x2aa5, (q15_t)0x2a9f, (q15_t)0x2a99, (q15_t)0x2a94, + (q15_t)0x2a8e, (q15_t)0x2a88, (q15_t)0x2a82, (q15_t)0x2a7c, (q15_t)0x2a76, (q15_t)0x2a70, (q15_t)0x2a6a, (q15_t)0x2a64, + (q15_t)0x2a5e, (q15_t)0x2a58, (q15_t)0x2a52, (q15_t)0x2a4c, (q15_t)0x2a47, (q15_t)0x2a41, (q15_t)0x2a3b, (q15_t)0x2a35, + (q15_t)0x2a2f, (q15_t)0x2a29, (q15_t)0x2a23, (q15_t)0x2a1d, (q15_t)0x2a17, (q15_t)0x2a11, (q15_t)0x2a0b, (q15_t)0x2a05, + (q15_t)0x29ff, (q15_t)0x29f9, (q15_t)0x29f3, (q15_t)0x29ee, (q15_t)0x29e8, (q15_t)0x29e2, (q15_t)0x29dc, (q15_t)0x29d6, + (q15_t)0x29d0, (q15_t)0x29ca, (q15_t)0x29c4, (q15_t)0x29be, (q15_t)0x29b8, (q15_t)0x29b2, (q15_t)0x29ac, (q15_t)0x29a6, + (q15_t)0x29a0, (q15_t)0x299a, (q15_t)0x2994, (q15_t)0x298e, (q15_t)0x2989, (q15_t)0x2983, (q15_t)0x297d, (q15_t)0x2977, + (q15_t)0x2971, (q15_t)0x296b, (q15_t)0x2965, (q15_t)0x295f, (q15_t)0x2959, (q15_t)0x2953, (q15_t)0x294d, (q15_t)0x2947, + (q15_t)0x2941, (q15_t)0x293b, (q15_t)0x2935, (q15_t)0x292f, (q15_t)0x2929, (q15_t)0x2923, (q15_t)0x291d, (q15_t)0x2918, + (q15_t)0x2912, (q15_t)0x290c, (q15_t)0x2906, (q15_t)0x2900, (q15_t)0x28fa, (q15_t)0x28f4, (q15_t)0x28ee, (q15_t)0x28e8, + (q15_t)0x28e2, (q15_t)0x28dc, (q15_t)0x28d6, (q15_t)0x28d0, (q15_t)0x28ca, (q15_t)0x28c4, (q15_t)0x28be, (q15_t)0x28b8, + (q15_t)0x28b2, (q15_t)0x28ac, (q15_t)0x28a6, (q15_t)0x28a0, (q15_t)0x289a, (q15_t)0x2895, (q15_t)0x288f, (q15_t)0x2889, + (q15_t)0x2883, (q15_t)0x287d, (q15_t)0x2877, (q15_t)0x2871, (q15_t)0x286b, (q15_t)0x2865, (q15_t)0x285f, (q15_t)0x2859, + (q15_t)0x2853, (q15_t)0x284d, (q15_t)0x2847, (q15_t)0x2841, (q15_t)0x283b, (q15_t)0x2835, (q15_t)0x282f, (q15_t)0x2829, + (q15_t)0x2823, (q15_t)0x281d, (q15_t)0x2817, (q15_t)0x2811, (q15_t)0x280b, (q15_t)0x2805, (q15_t)0x27ff, (q15_t)0x27f9, + (q15_t)0x27f3, (q15_t)0x27ee, (q15_t)0x27e8, (q15_t)0x27e2, (q15_t)0x27dc, (q15_t)0x27d6, (q15_t)0x27d0, (q15_t)0x27ca, + (q15_t)0x27c4, (q15_t)0x27be, (q15_t)0x27b8, (q15_t)0x27b2, (q15_t)0x27ac, (q15_t)0x27a6, (q15_t)0x27a0, (q15_t)0x279a, + (q15_t)0x2794, (q15_t)0x278e, (q15_t)0x2788, (q15_t)0x2782, (q15_t)0x277c, (q15_t)0x2776, (q15_t)0x2770, (q15_t)0x276a, + (q15_t)0x2764, (q15_t)0x275e, (q15_t)0x2758, (q15_t)0x2752, (q15_t)0x274c, (q15_t)0x2746, (q15_t)0x2740, (q15_t)0x273a, + (q15_t)0x2734, (q15_t)0x272e, (q15_t)0x2728, (q15_t)0x2722, (q15_t)0x271c, (q15_t)0x2716, (q15_t)0x2710, (q15_t)0x270a, + (q15_t)0x2704, (q15_t)0x26fe, (q15_t)0x26f8, (q15_t)0x26f2, (q15_t)0x26ec, (q15_t)0x26e7, (q15_t)0x26e1, (q15_t)0x26db, + (q15_t)0x26d5, (q15_t)0x26cf, (q15_t)0x26c9, (q15_t)0x26c3, (q15_t)0x26bd, (q15_t)0x26b7, (q15_t)0x26b1, (q15_t)0x26ab, + (q15_t)0x26a5, (q15_t)0x269f, (q15_t)0x2699, (q15_t)0x2693, (q15_t)0x268d, (q15_t)0x2687, (q15_t)0x2681, (q15_t)0x267b, + (q15_t)0x2675, (q15_t)0x266f, (q15_t)0x2669, (q15_t)0x2663, (q15_t)0x265d, (q15_t)0x2657, (q15_t)0x2651, (q15_t)0x264b, + (q15_t)0x2645, (q15_t)0x263f, (q15_t)0x2639, (q15_t)0x2633, (q15_t)0x262d, (q15_t)0x2627, (q15_t)0x2621, (q15_t)0x261b, + (q15_t)0x2615, (q15_t)0x260f, (q15_t)0x2609, (q15_t)0x2603, (q15_t)0x25fd, (q15_t)0x25f7, (q15_t)0x25f1, (q15_t)0x25eb, + (q15_t)0x25e5, (q15_t)0x25df, (q15_t)0x25d9, (q15_t)0x25d3, (q15_t)0x25cd, (q15_t)0x25c7, (q15_t)0x25c1, (q15_t)0x25bb, + (q15_t)0x25b5, (q15_t)0x25af, (q15_t)0x25a9, (q15_t)0x25a3, (q15_t)0x259d, (q15_t)0x2597, (q15_t)0x2591, (q15_t)0x258b, + (q15_t)0x2585, (q15_t)0x257f, (q15_t)0x2579, (q15_t)0x2573, (q15_t)0x256d, (q15_t)0x2567, (q15_t)0x2561, (q15_t)0x255b, + (q15_t)0x2555, (q15_t)0x254f, (q15_t)0x2549, (q15_t)0x2543, (q15_t)0x253d, (q15_t)0x2537, (q15_t)0x2531, (q15_t)0x252b, + (q15_t)0x2525, (q15_t)0x251f, (q15_t)0x2519, (q15_t)0x2513, (q15_t)0x250c, (q15_t)0x2506, (q15_t)0x2500, (q15_t)0x24fa, + (q15_t)0x24f4, (q15_t)0x24ee, (q15_t)0x24e8, (q15_t)0x24e2, (q15_t)0x24dc, (q15_t)0x24d6, (q15_t)0x24d0, (q15_t)0x24ca, + (q15_t)0x24c4, (q15_t)0x24be, (q15_t)0x24b8, (q15_t)0x24b2, (q15_t)0x24ac, (q15_t)0x24a6, (q15_t)0x24a0, (q15_t)0x249a, + (q15_t)0x2494, (q15_t)0x248e, (q15_t)0x2488, (q15_t)0x2482, (q15_t)0x247c, (q15_t)0x2476, (q15_t)0x2470, (q15_t)0x246a, + (q15_t)0x2464, (q15_t)0x245e, (q15_t)0x2458, (q15_t)0x2452, (q15_t)0x244c, (q15_t)0x2446, (q15_t)0x2440, (q15_t)0x243a, + (q15_t)0x2434, (q15_t)0x242e, (q15_t)0x2428, (q15_t)0x2422, (q15_t)0x241c, (q15_t)0x2416, (q15_t)0x2410, (q15_t)0x240a, + (q15_t)0x2404, (q15_t)0x23fd, (q15_t)0x23f7, (q15_t)0x23f1, (q15_t)0x23eb, (q15_t)0x23e5, (q15_t)0x23df, (q15_t)0x23d9, + (q15_t)0x23d3, (q15_t)0x23cd, (q15_t)0x23c7, (q15_t)0x23c1, (q15_t)0x23bb, (q15_t)0x23b5, (q15_t)0x23af, (q15_t)0x23a9, + (q15_t)0x23a3, (q15_t)0x239d, (q15_t)0x2397, (q15_t)0x2391, (q15_t)0x238b, (q15_t)0x2385, (q15_t)0x237f, (q15_t)0x2379, + (q15_t)0x2373, (q15_t)0x236d, (q15_t)0x2367, (q15_t)0x2361, (q15_t)0x235b, (q15_t)0x2355, (q15_t)0x234e, (q15_t)0x2348, + (q15_t)0x2342, (q15_t)0x233c, (q15_t)0x2336, (q15_t)0x2330, (q15_t)0x232a, (q15_t)0x2324, (q15_t)0x231e, (q15_t)0x2318, + (q15_t)0x2312, (q15_t)0x230c, (q15_t)0x2306, (q15_t)0x2300, (q15_t)0x22fa, (q15_t)0x22f4, (q15_t)0x22ee, (q15_t)0x22e8, + (q15_t)0x22e2, (q15_t)0x22dc, (q15_t)0x22d6, (q15_t)0x22d0, (q15_t)0x22ca, (q15_t)0x22c4, (q15_t)0x22bd, (q15_t)0x22b7, + (q15_t)0x22b1, (q15_t)0x22ab, (q15_t)0x22a5, (q15_t)0x229f, (q15_t)0x2299, (q15_t)0x2293, (q15_t)0x228d, (q15_t)0x2287, + (q15_t)0x2281, (q15_t)0x227b, (q15_t)0x2275, (q15_t)0x226f, (q15_t)0x2269, (q15_t)0x2263, (q15_t)0x225d, (q15_t)0x2257, + (q15_t)0x2251, (q15_t)0x224a, (q15_t)0x2244, (q15_t)0x223e, (q15_t)0x2238, (q15_t)0x2232, (q15_t)0x222c, (q15_t)0x2226, + (q15_t)0x2220, (q15_t)0x221a, (q15_t)0x2214, (q15_t)0x220e, (q15_t)0x2208, (q15_t)0x2202, (q15_t)0x21fc, (q15_t)0x21f6, + (q15_t)0x21f0, (q15_t)0x21ea, (q15_t)0x21e4, (q15_t)0x21dd, (q15_t)0x21d7, (q15_t)0x21d1, (q15_t)0x21cb, (q15_t)0x21c5, + (q15_t)0x21bf, (q15_t)0x21b9, (q15_t)0x21b3, (q15_t)0x21ad, (q15_t)0x21a7, (q15_t)0x21a1, (q15_t)0x219b, (q15_t)0x2195, + (q15_t)0x218f, (q15_t)0x2189, (q15_t)0x2183, (q15_t)0x217c, (q15_t)0x2176, (q15_t)0x2170, (q15_t)0x216a, (q15_t)0x2164, + (q15_t)0x215e, (q15_t)0x2158, (q15_t)0x2152, (q15_t)0x214c, (q15_t)0x2146, (q15_t)0x2140, (q15_t)0x213a, (q15_t)0x2134, + (q15_t)0x212e, (q15_t)0x2128, (q15_t)0x2121, (q15_t)0x211b, (q15_t)0x2115, (q15_t)0x210f, (q15_t)0x2109, (q15_t)0x2103, + (q15_t)0x20fd, (q15_t)0x20f7, (q15_t)0x20f1, (q15_t)0x20eb, (q15_t)0x20e5, (q15_t)0x20df, (q15_t)0x20d9, (q15_t)0x20d3, + (q15_t)0x20cc, (q15_t)0x20c6, (q15_t)0x20c0, (q15_t)0x20ba, (q15_t)0x20b4, (q15_t)0x20ae, (q15_t)0x20a8, (q15_t)0x20a2, + (q15_t)0x209c, (q15_t)0x2096, (q15_t)0x2090, (q15_t)0x208a, (q15_t)0x2084, (q15_t)0x207e, (q15_t)0x2077, (q15_t)0x2071, + (q15_t)0x206b, (q15_t)0x2065, (q15_t)0x205f, (q15_t)0x2059, (q15_t)0x2053, (q15_t)0x204d, (q15_t)0x2047, (q15_t)0x2041, + (q15_t)0x203b, (q15_t)0x2035, (q15_t)0x202e, (q15_t)0x2028, (q15_t)0x2022, (q15_t)0x201c, (q15_t)0x2016, (q15_t)0x2010, + (q15_t)0x200a, (q15_t)0x2004, (q15_t)0x1ffe, (q15_t)0x1ff8, (q15_t)0x1ff2, (q15_t)0x1fec, (q15_t)0x1fe5, (q15_t)0x1fdf, + (q15_t)0x1fd9, (q15_t)0x1fd3, (q15_t)0x1fcd, (q15_t)0x1fc7, (q15_t)0x1fc1, (q15_t)0x1fbb, (q15_t)0x1fb5, (q15_t)0x1faf, + (q15_t)0x1fa9, (q15_t)0x1fa3, (q15_t)0x1f9c, (q15_t)0x1f96, (q15_t)0x1f90, (q15_t)0x1f8a, (q15_t)0x1f84, (q15_t)0x1f7e, + (q15_t)0x1f78, (q15_t)0x1f72, (q15_t)0x1f6c, (q15_t)0x1f66, (q15_t)0x1f60, (q15_t)0x1f59, (q15_t)0x1f53, (q15_t)0x1f4d, + (q15_t)0x1f47, (q15_t)0x1f41, (q15_t)0x1f3b, (q15_t)0x1f35, (q15_t)0x1f2f, (q15_t)0x1f29, (q15_t)0x1f23, (q15_t)0x1f1d, + (q15_t)0x1f16, (q15_t)0x1f10, (q15_t)0x1f0a, (q15_t)0x1f04, (q15_t)0x1efe, (q15_t)0x1ef8, (q15_t)0x1ef2, (q15_t)0x1eec, + (q15_t)0x1ee6, (q15_t)0x1ee0, (q15_t)0x1ed9, (q15_t)0x1ed3, (q15_t)0x1ecd, (q15_t)0x1ec7, (q15_t)0x1ec1, (q15_t)0x1ebb, + (q15_t)0x1eb5, (q15_t)0x1eaf, (q15_t)0x1ea9, (q15_t)0x1ea3, (q15_t)0x1e9c, (q15_t)0x1e96, (q15_t)0x1e90, (q15_t)0x1e8a, + (q15_t)0x1e84, (q15_t)0x1e7e, (q15_t)0x1e78, (q15_t)0x1e72, (q15_t)0x1e6c, (q15_t)0x1e66, (q15_t)0x1e5f, (q15_t)0x1e59, + (q15_t)0x1e53, (q15_t)0x1e4d, (q15_t)0x1e47, (q15_t)0x1e41, (q15_t)0x1e3b, (q15_t)0x1e35, (q15_t)0x1e2f, (q15_t)0x1e29, + (q15_t)0x1e22, (q15_t)0x1e1c, (q15_t)0x1e16, (q15_t)0x1e10, (q15_t)0x1e0a, (q15_t)0x1e04, (q15_t)0x1dfe, (q15_t)0x1df8, + (q15_t)0x1df2, (q15_t)0x1deb, (q15_t)0x1de5, (q15_t)0x1ddf, (q15_t)0x1dd9, (q15_t)0x1dd3, (q15_t)0x1dcd, (q15_t)0x1dc7, + (q15_t)0x1dc1, (q15_t)0x1dbb, (q15_t)0x1db4, (q15_t)0x1dae, (q15_t)0x1da8, (q15_t)0x1da2, (q15_t)0x1d9c, (q15_t)0x1d96, + (q15_t)0x1d90, (q15_t)0x1d8a, (q15_t)0x1d84, (q15_t)0x1d7d, (q15_t)0x1d77, (q15_t)0x1d71, (q15_t)0x1d6b, (q15_t)0x1d65, + (q15_t)0x1d5f, (q15_t)0x1d59, (q15_t)0x1d53, (q15_t)0x1d4c, (q15_t)0x1d46, (q15_t)0x1d40, (q15_t)0x1d3a, (q15_t)0x1d34, + (q15_t)0x1d2e, (q15_t)0x1d28, (q15_t)0x1d22, (q15_t)0x1d1c, (q15_t)0x1d15, (q15_t)0x1d0f, (q15_t)0x1d09, (q15_t)0x1d03, + (q15_t)0x1cfd, (q15_t)0x1cf7, (q15_t)0x1cf1, (q15_t)0x1ceb, (q15_t)0x1ce4, (q15_t)0x1cde, (q15_t)0x1cd8, (q15_t)0x1cd2, + (q15_t)0x1ccc, (q15_t)0x1cc6, (q15_t)0x1cc0, (q15_t)0x1cba, (q15_t)0x1cb3, (q15_t)0x1cad, (q15_t)0x1ca7, (q15_t)0x1ca1, + (q15_t)0x1c9b, (q15_t)0x1c95, (q15_t)0x1c8f, (q15_t)0x1c89, (q15_t)0x1c83, (q15_t)0x1c7c, (q15_t)0x1c76, (q15_t)0x1c70, + (q15_t)0x1c6a, (q15_t)0x1c64, (q15_t)0x1c5e, (q15_t)0x1c58, (q15_t)0x1c51, (q15_t)0x1c4b, (q15_t)0x1c45, (q15_t)0x1c3f, + (q15_t)0x1c39, (q15_t)0x1c33, (q15_t)0x1c2d, (q15_t)0x1c27, (q15_t)0x1c20, (q15_t)0x1c1a, (q15_t)0x1c14, (q15_t)0x1c0e, + (q15_t)0x1c08, (q15_t)0x1c02, (q15_t)0x1bfc, (q15_t)0x1bf6, (q15_t)0x1bef, (q15_t)0x1be9, (q15_t)0x1be3, (q15_t)0x1bdd, + (q15_t)0x1bd7, (q15_t)0x1bd1, (q15_t)0x1bcb, (q15_t)0x1bc4, (q15_t)0x1bbe, (q15_t)0x1bb8, (q15_t)0x1bb2, (q15_t)0x1bac, + (q15_t)0x1ba6, (q15_t)0x1ba0, (q15_t)0x1b9a, (q15_t)0x1b93, (q15_t)0x1b8d, (q15_t)0x1b87, (q15_t)0x1b81, (q15_t)0x1b7b, + (q15_t)0x1b75, (q15_t)0x1b6f, (q15_t)0x1b68, (q15_t)0x1b62, (q15_t)0x1b5c, (q15_t)0x1b56, (q15_t)0x1b50, (q15_t)0x1b4a, + (q15_t)0x1b44, (q15_t)0x1b3d, (q15_t)0x1b37, (q15_t)0x1b31, (q15_t)0x1b2b, (q15_t)0x1b25, (q15_t)0x1b1f, (q15_t)0x1b19, + (q15_t)0x1b13, (q15_t)0x1b0c, (q15_t)0x1b06, (q15_t)0x1b00, (q15_t)0x1afa, (q15_t)0x1af4, (q15_t)0x1aee, (q15_t)0x1ae8, + (q15_t)0x1ae1, (q15_t)0x1adb, (q15_t)0x1ad5, (q15_t)0x1acf, (q15_t)0x1ac9, (q15_t)0x1ac3, (q15_t)0x1abd, (q15_t)0x1ab6, + (q15_t)0x1ab0, (q15_t)0x1aaa, (q15_t)0x1aa4, (q15_t)0x1a9e, (q15_t)0x1a98, (q15_t)0x1a91, (q15_t)0x1a8b, (q15_t)0x1a85, + (q15_t)0x1a7f, (q15_t)0x1a79, (q15_t)0x1a73, (q15_t)0x1a6d, (q15_t)0x1a66, (q15_t)0x1a60, (q15_t)0x1a5a, (q15_t)0x1a54, + (q15_t)0x1a4e, (q15_t)0x1a48, (q15_t)0x1a42, (q15_t)0x1a3b, (q15_t)0x1a35, (q15_t)0x1a2f, (q15_t)0x1a29, (q15_t)0x1a23, + (q15_t)0x1a1d, (q15_t)0x1a17, (q15_t)0x1a10, (q15_t)0x1a0a, (q15_t)0x1a04, (q15_t)0x19fe, (q15_t)0x19f8, (q15_t)0x19f2, + (q15_t)0x19eb, (q15_t)0x19e5, (q15_t)0x19df, (q15_t)0x19d9, (q15_t)0x19d3, (q15_t)0x19cd, (q15_t)0x19c7, (q15_t)0x19c0, + (q15_t)0x19ba, (q15_t)0x19b4, (q15_t)0x19ae, (q15_t)0x19a8, (q15_t)0x19a2, (q15_t)0x199b, (q15_t)0x1995, (q15_t)0x198f, + (q15_t)0x1989, (q15_t)0x1983, (q15_t)0x197d, (q15_t)0x1977, (q15_t)0x1970, (q15_t)0x196a, (q15_t)0x1964, (q15_t)0x195e, + (q15_t)0x1958, (q15_t)0x1952, (q15_t)0x194b, (q15_t)0x1945, (q15_t)0x193f, (q15_t)0x1939, (q15_t)0x1933, (q15_t)0x192d, + (q15_t)0x1926, (q15_t)0x1920, (q15_t)0x191a, (q15_t)0x1914, (q15_t)0x190e, (q15_t)0x1908, (q15_t)0x1901, (q15_t)0x18fb, + (q15_t)0x18f5, (q15_t)0x18ef, (q15_t)0x18e9, (q15_t)0x18e3, (q15_t)0x18dc, (q15_t)0x18d6, (q15_t)0x18d0, (q15_t)0x18ca, + (q15_t)0x18c4, (q15_t)0x18be, (q15_t)0x18b8, (q15_t)0x18b1, (q15_t)0x18ab, (q15_t)0x18a5, (q15_t)0x189f, (q15_t)0x1899, + (q15_t)0x1893, (q15_t)0x188c, (q15_t)0x1886, (q15_t)0x1880, (q15_t)0x187a, (q15_t)0x1874, (q15_t)0x186e, (q15_t)0x1867, + (q15_t)0x1861, (q15_t)0x185b, (q15_t)0x1855, (q15_t)0x184f, (q15_t)0x1848, (q15_t)0x1842, (q15_t)0x183c, (q15_t)0x1836, + (q15_t)0x1830, (q15_t)0x182a, (q15_t)0x1823, (q15_t)0x181d, (q15_t)0x1817, (q15_t)0x1811, (q15_t)0x180b, (q15_t)0x1805, + (q15_t)0x17fe, (q15_t)0x17f8, (q15_t)0x17f2, (q15_t)0x17ec, (q15_t)0x17e6, (q15_t)0x17e0, (q15_t)0x17d9, (q15_t)0x17d3, + (q15_t)0x17cd, (q15_t)0x17c7, (q15_t)0x17c1, (q15_t)0x17bb, (q15_t)0x17b4, (q15_t)0x17ae, (q15_t)0x17a8, (q15_t)0x17a2, + (q15_t)0x179c, (q15_t)0x1795, (q15_t)0x178f, (q15_t)0x1789, (q15_t)0x1783, (q15_t)0x177d, (q15_t)0x1777, (q15_t)0x1770, + (q15_t)0x176a, (q15_t)0x1764, (q15_t)0x175e, (q15_t)0x1758, (q15_t)0x1752, (q15_t)0x174b, (q15_t)0x1745, (q15_t)0x173f, + (q15_t)0x1739, (q15_t)0x1733, (q15_t)0x172c, (q15_t)0x1726, (q15_t)0x1720, (q15_t)0x171a, (q15_t)0x1714, (q15_t)0x170e, + (q15_t)0x1707, (q15_t)0x1701, (q15_t)0x16fb, (q15_t)0x16f5, (q15_t)0x16ef, (q15_t)0x16e8, (q15_t)0x16e2, (q15_t)0x16dc, + (q15_t)0x16d6, (q15_t)0x16d0, (q15_t)0x16ca, (q15_t)0x16c3, (q15_t)0x16bd, (q15_t)0x16b7, (q15_t)0x16b1, (q15_t)0x16ab, + (q15_t)0x16a4, (q15_t)0x169e, (q15_t)0x1698, (q15_t)0x1692, (q15_t)0x168c, (q15_t)0x1686, (q15_t)0x167f, (q15_t)0x1679, + (q15_t)0x1673, (q15_t)0x166d, (q15_t)0x1667, (q15_t)0x1660, (q15_t)0x165a, (q15_t)0x1654, (q15_t)0x164e, (q15_t)0x1648, + (q15_t)0x1642, (q15_t)0x163b, (q15_t)0x1635, (q15_t)0x162f, (q15_t)0x1629, (q15_t)0x1623, (q15_t)0x161c, (q15_t)0x1616, + (q15_t)0x1610, (q15_t)0x160a, (q15_t)0x1604, (q15_t)0x15fd, (q15_t)0x15f7, (q15_t)0x15f1, (q15_t)0x15eb, (q15_t)0x15e5, + (q15_t)0x15de, (q15_t)0x15d8, (q15_t)0x15d2, (q15_t)0x15cc, (q15_t)0x15c6, (q15_t)0x15c0, (q15_t)0x15b9, (q15_t)0x15b3, + (q15_t)0x15ad, (q15_t)0x15a7, (q15_t)0x15a1, (q15_t)0x159a, (q15_t)0x1594, (q15_t)0x158e, (q15_t)0x1588, (q15_t)0x1582, + (q15_t)0x157b, (q15_t)0x1575, (q15_t)0x156f, (q15_t)0x1569, (q15_t)0x1563, (q15_t)0x155c, (q15_t)0x1556, (q15_t)0x1550, + (q15_t)0x154a, (q15_t)0x1544, (q15_t)0x153d, (q15_t)0x1537, (q15_t)0x1531, (q15_t)0x152b, (q15_t)0x1525, (q15_t)0x151e, + (q15_t)0x1518, (q15_t)0x1512, (q15_t)0x150c, (q15_t)0x1506, (q15_t)0x14ff, (q15_t)0x14f9, (q15_t)0x14f3, (q15_t)0x14ed, + (q15_t)0x14e7, (q15_t)0x14e0, (q15_t)0x14da, (q15_t)0x14d4, (q15_t)0x14ce, (q15_t)0x14c8, (q15_t)0x14c1, (q15_t)0x14bb, + (q15_t)0x14b5, (q15_t)0x14af, (q15_t)0x14a9, (q15_t)0x14a2, (q15_t)0x149c, (q15_t)0x1496, (q15_t)0x1490, (q15_t)0x148a, + (q15_t)0x1483, (q15_t)0x147d, (q15_t)0x1477, (q15_t)0x1471, (q15_t)0x146b, (q15_t)0x1464, (q15_t)0x145e, (q15_t)0x1458, + (q15_t)0x1452, (q15_t)0x144c, (q15_t)0x1445, (q15_t)0x143f, (q15_t)0x1439, (q15_t)0x1433, (q15_t)0x142d, (q15_t)0x1426, + (q15_t)0x1420, (q15_t)0x141a, (q15_t)0x1414, (q15_t)0x140e, (q15_t)0x1407, (q15_t)0x1401, (q15_t)0x13fb, (q15_t)0x13f5, + (q15_t)0x13ef, (q15_t)0x13e8, (q15_t)0x13e2, (q15_t)0x13dc, (q15_t)0x13d6, (q15_t)0x13d0, (q15_t)0x13c9, (q15_t)0x13c3, + (q15_t)0x13bd, (q15_t)0x13b7, (q15_t)0x13b1, (q15_t)0x13aa, (q15_t)0x13a4, (q15_t)0x139e, (q15_t)0x1398, (q15_t)0x1391, + (q15_t)0x138b, (q15_t)0x1385, (q15_t)0x137f, (q15_t)0x1379, (q15_t)0x1372, (q15_t)0x136c, (q15_t)0x1366, (q15_t)0x1360, + (q15_t)0x135a, (q15_t)0x1353, (q15_t)0x134d, (q15_t)0x1347, (q15_t)0x1341, (q15_t)0x133b, (q15_t)0x1334, (q15_t)0x132e, + (q15_t)0x1328, (q15_t)0x1322, (q15_t)0x131b, (q15_t)0x1315, (q15_t)0x130f, (q15_t)0x1309, (q15_t)0x1303, (q15_t)0x12fc, + (q15_t)0x12f6, (q15_t)0x12f0, (q15_t)0x12ea, (q15_t)0x12e4, (q15_t)0x12dd, (q15_t)0x12d7, (q15_t)0x12d1, (q15_t)0x12cb, + (q15_t)0x12c4, (q15_t)0x12be, (q15_t)0x12b8, (q15_t)0x12b2, (q15_t)0x12ac, (q15_t)0x12a5, (q15_t)0x129f, (q15_t)0x1299, + (q15_t)0x1293, (q15_t)0x128d, (q15_t)0x1286, (q15_t)0x1280, (q15_t)0x127a, (q15_t)0x1274, (q15_t)0x126d, (q15_t)0x1267, + (q15_t)0x1261, (q15_t)0x125b, (q15_t)0x1255, (q15_t)0x124e, (q15_t)0x1248, (q15_t)0x1242, (q15_t)0x123c, (q15_t)0x1235, + (q15_t)0x122f, (q15_t)0x1229, (q15_t)0x1223, (q15_t)0x121d, (q15_t)0x1216, (q15_t)0x1210, (q15_t)0x120a, (q15_t)0x1204, + (q15_t)0x11fd, (q15_t)0x11f7, (q15_t)0x11f1, (q15_t)0x11eb, (q15_t)0x11e5, (q15_t)0x11de, (q15_t)0x11d8, (q15_t)0x11d2, + (q15_t)0x11cc, (q15_t)0x11c5, (q15_t)0x11bf, (q15_t)0x11b9, (q15_t)0x11b3, (q15_t)0x11ad, (q15_t)0x11a6, (q15_t)0x11a0, + (q15_t)0x119a, (q15_t)0x1194, (q15_t)0x118d, (q15_t)0x1187, (q15_t)0x1181, (q15_t)0x117b, (q15_t)0x1175, (q15_t)0x116e, + (q15_t)0x1168, (q15_t)0x1162, (q15_t)0x115c, (q15_t)0x1155, (q15_t)0x114f, (q15_t)0x1149, (q15_t)0x1143, (q15_t)0x113d, + (q15_t)0x1136, (q15_t)0x1130, (q15_t)0x112a, (q15_t)0x1124, (q15_t)0x111d, (q15_t)0x1117, (q15_t)0x1111, (q15_t)0x110b, + (q15_t)0x1105, (q15_t)0x10fe, (q15_t)0x10f8, (q15_t)0x10f2, (q15_t)0x10ec, (q15_t)0x10e5, (q15_t)0x10df, (q15_t)0x10d9, + (q15_t)0x10d3, (q15_t)0x10cc, (q15_t)0x10c6, (q15_t)0x10c0, (q15_t)0x10ba, (q15_t)0x10b4, (q15_t)0x10ad, (q15_t)0x10a7, + (q15_t)0x10a1, (q15_t)0x109b, (q15_t)0x1094, (q15_t)0x108e, (q15_t)0x1088, (q15_t)0x1082, (q15_t)0x107b, (q15_t)0x1075, + (q15_t)0x106f, (q15_t)0x1069, (q15_t)0x1063, (q15_t)0x105c, (q15_t)0x1056, (q15_t)0x1050, (q15_t)0x104a, (q15_t)0x1043, + (q15_t)0x103d, (q15_t)0x1037, (q15_t)0x1031, (q15_t)0x102a, (q15_t)0x1024, (q15_t)0x101e, (q15_t)0x1018, (q15_t)0x1012, + (q15_t)0x100b, (q15_t)0x1005, (q15_t)0xfff, (q15_t)0xff9, (q15_t)0xff2, (q15_t)0xfec, (q15_t)0xfe6, (q15_t)0xfe0, + (q15_t)0xfd9, (q15_t)0xfd3, (q15_t)0xfcd, (q15_t)0xfc7, (q15_t)0xfc0, (q15_t)0xfba, (q15_t)0xfb4, (q15_t)0xfae, + (q15_t)0xfa8, (q15_t)0xfa1, (q15_t)0xf9b, (q15_t)0xf95, (q15_t)0xf8f, (q15_t)0xf88, (q15_t)0xf82, (q15_t)0xf7c, + (q15_t)0xf76, (q15_t)0xf6f, (q15_t)0xf69, (q15_t)0xf63, (q15_t)0xf5d, (q15_t)0xf56, (q15_t)0xf50, (q15_t)0xf4a, + (q15_t)0xf44, (q15_t)0xf3e, (q15_t)0xf37, (q15_t)0xf31, (q15_t)0xf2b, (q15_t)0xf25, (q15_t)0xf1e, (q15_t)0xf18, + (q15_t)0xf12, (q15_t)0xf0c, (q15_t)0xf05, (q15_t)0xeff, (q15_t)0xef9, (q15_t)0xef3, (q15_t)0xeec, (q15_t)0xee6, + (q15_t)0xee0, (q15_t)0xeda, (q15_t)0xed3, (q15_t)0xecd, (q15_t)0xec7, (q15_t)0xec1, (q15_t)0xeba, (q15_t)0xeb4, + (q15_t)0xeae, (q15_t)0xea8, (q15_t)0xea1, (q15_t)0xe9b, (q15_t)0xe95, (q15_t)0xe8f, (q15_t)0xe89, (q15_t)0xe82, + (q15_t)0xe7c, (q15_t)0xe76, (q15_t)0xe70, (q15_t)0xe69, (q15_t)0xe63, (q15_t)0xe5d, (q15_t)0xe57, (q15_t)0xe50, + (q15_t)0xe4a, (q15_t)0xe44, (q15_t)0xe3e, (q15_t)0xe37, (q15_t)0xe31, (q15_t)0xe2b, (q15_t)0xe25, (q15_t)0xe1e, + (q15_t)0xe18, (q15_t)0xe12, (q15_t)0xe0c, (q15_t)0xe05, (q15_t)0xdff, (q15_t)0xdf9, (q15_t)0xdf3, (q15_t)0xdec, + (q15_t)0xde6, (q15_t)0xde0, (q15_t)0xdda, (q15_t)0xdd3, (q15_t)0xdcd, (q15_t)0xdc7, (q15_t)0xdc1, (q15_t)0xdba, + (q15_t)0xdb4, (q15_t)0xdae, (q15_t)0xda8, (q15_t)0xda1, (q15_t)0xd9b, (q15_t)0xd95, (q15_t)0xd8f, (q15_t)0xd88, + (q15_t)0xd82, (q15_t)0xd7c, (q15_t)0xd76, (q15_t)0xd6f, (q15_t)0xd69, (q15_t)0xd63, (q15_t)0xd5d, (q15_t)0xd56, + (q15_t)0xd50, (q15_t)0xd4a, (q15_t)0xd44, (q15_t)0xd3d, (q15_t)0xd37, (q15_t)0xd31, (q15_t)0xd2b, (q15_t)0xd24, + (q15_t)0xd1e, (q15_t)0xd18, (q15_t)0xd12, (q15_t)0xd0b, (q15_t)0xd05, (q15_t)0xcff, (q15_t)0xcf9, (q15_t)0xcf2, + (q15_t)0xcec, (q15_t)0xce6, (q15_t)0xce0, (q15_t)0xcd9, (q15_t)0xcd3, (q15_t)0xccd, (q15_t)0xcc7, (q15_t)0xcc0, + (q15_t)0xcba, (q15_t)0xcb4, (q15_t)0xcae, (q15_t)0xca7, (q15_t)0xca1, (q15_t)0xc9b, (q15_t)0xc95, (q15_t)0xc8e, + (q15_t)0xc88, (q15_t)0xc82, (q15_t)0xc7c, (q15_t)0xc75, (q15_t)0xc6f, (q15_t)0xc69, (q15_t)0xc63, (q15_t)0xc5c, + (q15_t)0xc56, (q15_t)0xc50, (q15_t)0xc4a, (q15_t)0xc43, (q15_t)0xc3d, (q15_t)0xc37, (q15_t)0xc31, (q15_t)0xc2a, + (q15_t)0xc24, (q15_t)0xc1e, (q15_t)0xc18, (q15_t)0xc11, (q15_t)0xc0b, (q15_t)0xc05, (q15_t)0xbff, (q15_t)0xbf8, + (q15_t)0xbf2, (q15_t)0xbec, (q15_t)0xbe6, (q15_t)0xbdf, (q15_t)0xbd9, (q15_t)0xbd3, (q15_t)0xbcd, (q15_t)0xbc6, + (q15_t)0xbc0, (q15_t)0xbba, (q15_t)0xbb4, (q15_t)0xbad, (q15_t)0xba7, (q15_t)0xba1, (q15_t)0xb9b, (q15_t)0xb94, + (q15_t)0xb8e, (q15_t)0xb88, (q15_t)0xb81, (q15_t)0xb7b, (q15_t)0xb75, (q15_t)0xb6f, (q15_t)0xb68, (q15_t)0xb62, + (q15_t)0xb5c, (q15_t)0xb56, (q15_t)0xb4f, (q15_t)0xb49, (q15_t)0xb43, (q15_t)0xb3d, (q15_t)0xb36, (q15_t)0xb30, + (q15_t)0xb2a, (q15_t)0xb24, (q15_t)0xb1d, (q15_t)0xb17, (q15_t)0xb11, (q15_t)0xb0b, (q15_t)0xb04, (q15_t)0xafe, + (q15_t)0xaf8, (q15_t)0xaf2, (q15_t)0xaeb, (q15_t)0xae5, (q15_t)0xadf, (q15_t)0xad8, (q15_t)0xad2, (q15_t)0xacc, + (q15_t)0xac6, (q15_t)0xabf, (q15_t)0xab9, (q15_t)0xab3, (q15_t)0xaad, (q15_t)0xaa6, (q15_t)0xaa0, (q15_t)0xa9a, + (q15_t)0xa94, (q15_t)0xa8d, (q15_t)0xa87, (q15_t)0xa81, (q15_t)0xa7b, (q15_t)0xa74, (q15_t)0xa6e, (q15_t)0xa68, + (q15_t)0xa62, (q15_t)0xa5b, (q15_t)0xa55, (q15_t)0xa4f, (q15_t)0xa48, (q15_t)0xa42, (q15_t)0xa3c, (q15_t)0xa36, + (q15_t)0xa2f, (q15_t)0xa29, (q15_t)0xa23, (q15_t)0xa1d, (q15_t)0xa16, (q15_t)0xa10, (q15_t)0xa0a, (q15_t)0xa04, + (q15_t)0x9fd, (q15_t)0x9f7, (q15_t)0x9f1, (q15_t)0x9eb, (q15_t)0x9e4, (q15_t)0x9de, (q15_t)0x9d8, (q15_t)0x9d1, + (q15_t)0x9cb, (q15_t)0x9c5, (q15_t)0x9bf, (q15_t)0x9b8, (q15_t)0x9b2, (q15_t)0x9ac, (q15_t)0x9a6, (q15_t)0x99f, + (q15_t)0x999, (q15_t)0x993, (q15_t)0x98d, (q15_t)0x986, (q15_t)0x980, (q15_t)0x97a, (q15_t)0x973, (q15_t)0x96d, + (q15_t)0x967, (q15_t)0x961, (q15_t)0x95a, (q15_t)0x954, (q15_t)0x94e, (q15_t)0x948, (q15_t)0x941, (q15_t)0x93b, + (q15_t)0x935, (q15_t)0x92f, (q15_t)0x928, (q15_t)0x922, (q15_t)0x91c, (q15_t)0x915, (q15_t)0x90f, (q15_t)0x909, + (q15_t)0x903, (q15_t)0x8fc, (q15_t)0x8f6, (q15_t)0x8f0, (q15_t)0x8ea, (q15_t)0x8e3, (q15_t)0x8dd, (q15_t)0x8d7, + (q15_t)0x8d1, (q15_t)0x8ca, (q15_t)0x8c4, (q15_t)0x8be, (q15_t)0x8b7, (q15_t)0x8b1, (q15_t)0x8ab, (q15_t)0x8a5, + (q15_t)0x89e, (q15_t)0x898, (q15_t)0x892, (q15_t)0x88c, (q15_t)0x885, (q15_t)0x87f, (q15_t)0x879, (q15_t)0x872, + (q15_t)0x86c, (q15_t)0x866, (q15_t)0x860, (q15_t)0x859, (q15_t)0x853, (q15_t)0x84d, (q15_t)0x847, (q15_t)0x840, + (q15_t)0x83a, (q15_t)0x834, (q15_t)0x82e, (q15_t)0x827, (q15_t)0x821, (q15_t)0x81b, (q15_t)0x814, (q15_t)0x80e, + (q15_t)0x808, (q15_t)0x802, (q15_t)0x7fb, (q15_t)0x7f5, (q15_t)0x7ef, (q15_t)0x7e9, (q15_t)0x7e2, (q15_t)0x7dc, + (q15_t)0x7d6, (q15_t)0x7cf, (q15_t)0x7c9, (q15_t)0x7c3, (q15_t)0x7bd, (q15_t)0x7b6, (q15_t)0x7b0, (q15_t)0x7aa, + (q15_t)0x7a4, (q15_t)0x79d, (q15_t)0x797, (q15_t)0x791, (q15_t)0x78a, (q15_t)0x784, (q15_t)0x77e, (q15_t)0x778, + (q15_t)0x771, (q15_t)0x76b, (q15_t)0x765, (q15_t)0x75f, (q15_t)0x758, (q15_t)0x752, (q15_t)0x74c, (q15_t)0x745, + (q15_t)0x73f, (q15_t)0x739, (q15_t)0x733, (q15_t)0x72c, (q15_t)0x726, (q15_t)0x720, (q15_t)0x71a, (q15_t)0x713, + (q15_t)0x70d, (q15_t)0x707, (q15_t)0x700, (q15_t)0x6fa, (q15_t)0x6f4, (q15_t)0x6ee, (q15_t)0x6e7, (q15_t)0x6e1, + (q15_t)0x6db, (q15_t)0x6d5, (q15_t)0x6ce, (q15_t)0x6c8, (q15_t)0x6c2, (q15_t)0x6bb, (q15_t)0x6b5, (q15_t)0x6af, + (q15_t)0x6a9, (q15_t)0x6a2, (q15_t)0x69c, (q15_t)0x696, (q15_t)0x690, (q15_t)0x689, (q15_t)0x683, (q15_t)0x67d, + (q15_t)0x676, (q15_t)0x670, (q15_t)0x66a, (q15_t)0x664, (q15_t)0x65d, (q15_t)0x657, (q15_t)0x651, (q15_t)0x64a, + (q15_t)0x644, (q15_t)0x63e, (q15_t)0x638, (q15_t)0x631, (q15_t)0x62b, (q15_t)0x625, (q15_t)0x61f, (q15_t)0x618, + (q15_t)0x612, (q15_t)0x60c, (q15_t)0x605, (q15_t)0x5ff, (q15_t)0x5f9, (q15_t)0x5f3, (q15_t)0x5ec, (q15_t)0x5e6, + (q15_t)0x5e0, (q15_t)0x5da, (q15_t)0x5d3, (q15_t)0x5cd, (q15_t)0x5c7, (q15_t)0x5c0, (q15_t)0x5ba, (q15_t)0x5b4, + (q15_t)0x5ae, (q15_t)0x5a7, (q15_t)0x5a1, (q15_t)0x59b, (q15_t)0x594, (q15_t)0x58e, (q15_t)0x588, (q15_t)0x582, + (q15_t)0x57b, (q15_t)0x575, (q15_t)0x56f, (q15_t)0x569, (q15_t)0x562, (q15_t)0x55c, (q15_t)0x556, (q15_t)0x54f, + (q15_t)0x549, (q15_t)0x543, (q15_t)0x53d, (q15_t)0x536, (q15_t)0x530, (q15_t)0x52a, (q15_t)0x523, (q15_t)0x51d, + (q15_t)0x517, (q15_t)0x511, (q15_t)0x50a, (q15_t)0x504, (q15_t)0x4fe, (q15_t)0x4f8, (q15_t)0x4f1, (q15_t)0x4eb, + (q15_t)0x4e5, (q15_t)0x4de, (q15_t)0x4d8, (q15_t)0x4d2, (q15_t)0x4cc, (q15_t)0x4c5, (q15_t)0x4bf, (q15_t)0x4b9, + (q15_t)0x4b2, (q15_t)0x4ac, (q15_t)0x4a6, (q15_t)0x4a0, (q15_t)0x499, (q15_t)0x493, (q15_t)0x48d, (q15_t)0x487, + (q15_t)0x480, (q15_t)0x47a, (q15_t)0x474, (q15_t)0x46d, (q15_t)0x467, (q15_t)0x461, (q15_t)0x45b, (q15_t)0x454, + (q15_t)0x44e, (q15_t)0x448, (q15_t)0x441, (q15_t)0x43b, (q15_t)0x435, (q15_t)0x42f, (q15_t)0x428, (q15_t)0x422, + (q15_t)0x41c, (q15_t)0x415, (q15_t)0x40f, (q15_t)0x409, (q15_t)0x403, (q15_t)0x3fc, (q15_t)0x3f6, (q15_t)0x3f0, + (q15_t)0x3ea, (q15_t)0x3e3, (q15_t)0x3dd, (q15_t)0x3d7, (q15_t)0x3d0, (q15_t)0x3ca, (q15_t)0x3c4, (q15_t)0x3be, + (q15_t)0x3b7, (q15_t)0x3b1, (q15_t)0x3ab, (q15_t)0x3a4, (q15_t)0x39e, (q15_t)0x398, (q15_t)0x392, (q15_t)0x38b, + (q15_t)0x385, (q15_t)0x37f, (q15_t)0x378, (q15_t)0x372, (q15_t)0x36c, (q15_t)0x366, (q15_t)0x35f, (q15_t)0x359, + (q15_t)0x353, (q15_t)0x34c, (q15_t)0x346, (q15_t)0x340, (q15_t)0x33a, (q15_t)0x333, (q15_t)0x32d, (q15_t)0x327, + (q15_t)0x321, (q15_t)0x31a, (q15_t)0x314, (q15_t)0x30e, (q15_t)0x307, (q15_t)0x301, (q15_t)0x2fb, (q15_t)0x2f5, + (q15_t)0x2ee, (q15_t)0x2e8, (q15_t)0x2e2, (q15_t)0x2db, (q15_t)0x2d5, (q15_t)0x2cf, (q15_t)0x2c9, (q15_t)0x2c2, + (q15_t)0x2bc, (q15_t)0x2b6, (q15_t)0x2af, (q15_t)0x2a9, (q15_t)0x2a3, (q15_t)0x29d, (q15_t)0x296, (q15_t)0x290, + (q15_t)0x28a, (q15_t)0x283, (q15_t)0x27d, (q15_t)0x277, (q15_t)0x271, (q15_t)0x26a, (q15_t)0x264, (q15_t)0x25e, + (q15_t)0x258, (q15_t)0x251, (q15_t)0x24b, (q15_t)0x245, (q15_t)0x23e, (q15_t)0x238, (q15_t)0x232, (q15_t)0x22c, + (q15_t)0x225, (q15_t)0x21f, (q15_t)0x219, (q15_t)0x212, (q15_t)0x20c, (q15_t)0x206, (q15_t)0x200, (q15_t)0x1f9, + (q15_t)0x1f3, (q15_t)0x1ed, (q15_t)0x1e6, (q15_t)0x1e0, (q15_t)0x1da, (q15_t)0x1d4, (q15_t)0x1cd, (q15_t)0x1c7, + (q15_t)0x1c1, (q15_t)0x1ba, (q15_t)0x1b4, (q15_t)0x1ae, (q15_t)0x1a8, (q15_t)0x1a1, (q15_t)0x19b, (q15_t)0x195, + (q15_t)0x18e, (q15_t)0x188, (q15_t)0x182, (q15_t)0x17c, (q15_t)0x175, (q15_t)0x16f, (q15_t)0x169, (q15_t)0x162, + (q15_t)0x15c, (q15_t)0x156, (q15_t)0x150, (q15_t)0x149, (q15_t)0x143, (q15_t)0x13d, (q15_t)0x137, (q15_t)0x130, + (q15_t)0x12a, (q15_t)0x124, (q15_t)0x11d, (q15_t)0x117, (q15_t)0x111, (q15_t)0x10b, (q15_t)0x104, (q15_t)0xfe, + (q15_t)0xf8, (q15_t)0xf1, (q15_t)0xeb, (q15_t)0xe5, (q15_t)0xdf, (q15_t)0xd8, (q15_t)0xd2, (q15_t)0xcc, + (q15_t)0xc5, (q15_t)0xbf, (q15_t)0xb9, (q15_t)0xb3, (q15_t)0xac, (q15_t)0xa6, (q15_t)0xa0, (q15_t)0x99, + (q15_t)0x93, (q15_t)0x8d, (q15_t)0x87, (q15_t)0x80, (q15_t)0x7a, (q15_t)0x74, (q15_t)0x6d, (q15_t)0x67, + (q15_t)0x61, (q15_t)0x5b, (q15_t)0x54, (q15_t)0x4e, (q15_t)0x48, (q15_t)0x41, (q15_t)0x3b, (q15_t)0x35, + (q15_t)0x2f, (q15_t)0x28, (q15_t)0x22, (q15_t)0x1c, (q15_t)0x15, (q15_t)0xf, (q15_t)0x9, (q15_t)0x3 +}; + +/** + * @} end of DCT4_IDCT4_Table group + */ + +/** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/** + * @brief Initialization function for the Q15 DCT4/IDCT4. + * @param[in,out] *S points to an instance of Q15 DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of Q15 RFFT/RIFFT structure. + * @param[in] *S_CFFT points to an instance of Q15 CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + * \par Normalizing factor: + * The normalizing factor is sqrt(2/N), which depends on the size of transform N. + * Normalizing factors in 1.15 format are mentioned in the table below for different DCT sizes: + * \image html dct4NormalizingQ15Table.gif + */ + +arm_status arm_dct4_init_q15( + arm_dct4_instance_q15 * S, + arm_rfft_instance_q15 * S_RFFT, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q15_t normalize) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initializing the pointer array with the weight table base addresses of different lengths */ + q15_t *twiddlePtr[4] = { (q15_t *) WeightsQ15_128, (q15_t *) WeightsQ15_512, + (q15_t *) WeightsQ15_2048, (q15_t *) WeightsQ15_8192 + }; + + /* Initializing the pointer array with the cos factor table base addresses of different lengths */ + q15_t *pCosFactor[4] = + { (q15_t *) cos_factorsQ15_128, (q15_t *) cos_factorsQ15_512, + (q15_t *) cos_factorsQ15_2048, (q15_t *) cos_factorsQ15_8192 + }; + + /* Initialize the DCT4 length */ + S->N = N; + + /* Initialize the half of DCT4 length */ + S->Nby2 = Nby2; + + /* Initialize the DCT4 Normalizing factor */ + S->normalize = normalize; + + /* Initialize Real FFT Instance */ + S->pRfft = S_RFFT; + + /* Initialize Complex FFT Instance */ + S->pCfft = S_CFFT; + + switch (N) + { + /* Initialize the table modifier values */ + case 8192U: + S->pTwiddle = twiddlePtr[3]; + S->pCosFactor = pCosFactor[3]; + break; + case 2048U: + S->pTwiddle = twiddlePtr[2]; + S->pCosFactor = pCosFactor[2]; + break; + case 512U: + S->pTwiddle = twiddlePtr[1]; + S->pCosFactor = pCosFactor[1]; + break; + case 128U: + S->pTwiddle = twiddlePtr[0]; + S->pCosFactor = pCosFactor[0]; + break; + default: + status = ARM_MATH_ARGUMENT_ERROR; + } + + /* Initialize the RFFT/RIFFT */ + arm_rfft_init_q15(S->pRfft, S->N, 0U, 1U); + + /* return the status of DCT4 Init function */ + return (status); +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c new file mode 100644 index 0000000..5873a33 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_init_q31.c @@ -0,0 +1,7686 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_dct4_init_q31.c + * Description: Initialization function of DCT-4 & IDCT4 Q31 + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup DCT4_IDCT4 + */ + +/** + * @addtogroup DCT4_IDCT4_Table DCT Type IV Tables + * @{ + */ + +/* +* @brief Weights Table +*/ + +/** + * \par + * Weights tables are generated using the formula :
weights[n] = e^(-j*n*pi/(2*N))
+ * \par + * C command to generate the table + *
+ * for(i = 0; i< N; i++)
+ * {
+ *   weights[2*i]= cos(i*c);
+ *   weights[(2*i)+1]= -sin(i * c);
+ * } 
+ * \par + * where N is the Number of weights to be calculated and c is pi/(2*N) + * \par + * Convert the output to q31 format by multiplying with 2^31 and saturated if required. + * \par + * In the tables below the real and imaginary values are placed alternatively, hence the + * array length is 2*N. + */ + +static const q31_t WeightsQ31_128[256] = { + (q31_t)0x7fffffff, (q31_t)0x00000000, (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, + (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7f872bf3, (q31_t)0xf50497fb, + (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, + (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7dd6668f, (q31_t)0xe8922622, + (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7c894bde, (q31_t)0xe26cb01b, + (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7aef6323, (q31_t)0xdc597781, + (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, + (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x76d94989, (q31_t)0xd078ad9e, + (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, + (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x719e2cd2, (q31_t)0xc50d1149, + (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, + (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6b4af279, (q31_t)0xba32ca71, + (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x67bd0fbd, (q31_t)0xb5049368, + (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x63ef3290, (q31_t)0xb0049ab3, + (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, + (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, + (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x571deefa, (q31_t)0xa2386284, + (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x5269126e, (q31_t)0x9e0effc1, + (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4d8162c4, (q31_t)0x9a22042d, + (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x4869e665, (q31_t)0x9673db94, + (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x4325c135, (q31_t)0x9306cb04, + (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3db832a6, (q31_t)0x8fdcef66, + (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x382493b0, (q31_t)0x8cf83c30, + (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, + (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2c98fbba, (q31_t)0x88054677, + (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x26a82186, (q31_t)0x85fa1153, + (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x209f701c, (q31_t)0x843a1d70, + (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1a82a026, (q31_t)0x82c67f14, + (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x145576b1, (q31_t)0x81a01b6d, + (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0xfab272b, (q31_t)0x80f66e3c, (q31_t)0xe1bc2e4, (q31_t)0x80c7a80a, + (q31_t)0xc8bd35e, (q31_t)0x809dc971, (q31_t)0xafb6805, (q31_t)0x8078d40d, (q31_t)0x96a9049, (q31_t)0x8058c94c, (q31_t)0x7d95b9e, (q31_t)0x803daa6a, + (q31_t)0x647d97c, (q31_t)0x80277872, (q31_t)0x4b6195d, (q31_t)0x80163440, (q31_t)0x3242abf, (q31_t)0x8009de7e, (q31_t)0x1921d20, (q31_t)0x800277a6 +}; + +static const q31_t WeightsQ31_512[1024] = { + (q31_t)0x7fffffff, (q31_t)0x00000000, (q31_t)0x7fffd886, (q31_t)0xff9b781d, (q31_t)0x7fff6216, (q31_t)0xff36f078, (q31_t)0x7ffe9cb2, (q31_t)0xfed2694f, + (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ffc250f, (q31_t)0xfe095d69, (q31_t)0x7ffa72d1, (q31_t)0xfda4d929, (q31_t)0x7ff871a2, (q31_t)0xfd40565c, + (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7ff38274, (q31_t)0xfc775616, (q31_t)0x7ff09478, (q31_t)0xfc12d91a, (q31_t)0x7fed5791, (q31_t)0xfbae5e89, + (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, (q31_t)0x7fe5f108, (q31_t)0xfae571a4, (q31_t)0x7fe1c76b, (q31_t)0xfa80ffcb, (q31_t)0x7fdd4eec, (q31_t)0xfa1c9157, + (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fd37153, (q31_t)0xf953bf91, (q31_t)0x7fce0c3e, (q31_t)0xf8ef5cbb, (q31_t)0x7fc85854, (q31_t)0xf88afe42, + (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fbc040a, (q31_t)0xf7c24f59, (q31_t)0x7fb563b3, (q31_t)0xf75dff66, (q31_t)0x7fae7495, (q31_t)0xf6f9b4c6, + (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7f9faa15, (q31_t)0xf6313077, (q31_t)0x7f97cebd, (q31_t)0xf5ccf743, (q31_t)0x7f8fa4b0, (q31_t)0xf568c45b, + (q31_t)0x7f872bf3, (q31_t)0xf50497fb, (q31_t)0x7f7e648c, (q31_t)0xf4a07261, (q31_t)0x7f754e80, (q31_t)0xf43c53cb, (q31_t)0x7f6be9d4, (q31_t)0xf3d83c77, + (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f5834b7, (q31_t)0xf310248a, (q31_t)0x7f4de451, (q31_t)0xf2ac246e, (q31_t)0x7f434563, (q31_t)0xf2482c8a, + (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f2d1c0e, (q31_t)0xf1805662, (q31_t)0x7f2191b4, (q31_t)0xf11c789a, (q31_t)0x7f15b8ee, (q31_t)0xf0b8a401, + (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7efd1c3c, (q31_t)0xeff11753, (q31_t)0x7ef05860, (q31_t)0xef8d5fb8, (q31_t)0x7ee34636, (q31_t)0xef29b243, + (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, (q31_t)0x7ec8371a, (q31_t)0xee6276bf, (q31_t)0x7eba3a39, (q31_t)0xedfee92b, (q31_t)0x7eabef2c, (q31_t)0xed9b66b2, + (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e8e6eb2, (q31_t)0xecd48407, (q31_t)0x7e7f3957, (q31_t)0xec71244f, (q31_t)0x7e6fb5f4, (q31_t)0xec0dd0a8, + (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e4fc53e, (q31_t)0xeb474e81, (q31_t)0x7e3f57ff, (q31_t)0xeae4207a, (q31_t)0x7e2e9cdf, (q31_t)0xea80ff7a, + (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7e0c3d29, (q31_t)0xe9bae57d, (q31_t)0x7dfa98a8, (q31_t)0xe957ecfb, (q31_t)0x7de8a670, (q31_t)0xe8f50273, + (q31_t)0x7dd6668f, (q31_t)0xe8922622, (q31_t)0x7dc3d90d, (q31_t)0xe82f5844, (q31_t)0x7db0fdf8, (q31_t)0xe7cc9917, (q31_t)0x7d9dd55a, (q31_t)0xe769e8d8, + (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d769bb5, (q31_t)0xe6a4b616, (q31_t)0x7d628ac6, (q31_t)0xe642340d, (q31_t)0x7d4e2c7f, (q31_t)0xe5dfc1e5, + (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7d24881b, (q31_t)0xe51b0e2a, (q31_t)0x7d0f4218, (q31_t)0xe4b8cd11, (q31_t)0x7cf9aef0, (q31_t)0xe4569ccb, + (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7ccda169, (q31_t)0xe3926fad, (q31_t)0x7cb72724, (q31_t)0xe330734d, (q31_t)0x7ca05ff1, (q31_t)0xe2ce88b3, + (q31_t)0x7c894bde, (q31_t)0xe26cb01b, (q31_t)0x7c71eaf9, (q31_t)0xe20ae9c1, (q31_t)0x7c5a3d50, (q31_t)0xe1a935e2, (q31_t)0x7c4242f2, (q31_t)0xe14794ba, + (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7c116853, (q31_t)0xe0848b7f, (q31_t)0x7bf88830, (q31_t)0xe02323e5, (q31_t)0x7bdf5b94, (q31_t)0xdfc1cff3, + (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7bac1d31, (q31_t)0xdeff63f4, (q31_t)0x7b920b89, (q31_t)0xde9e4c60, (q31_t)0x7b77ada8, (q31_t)0xde3d4964, + (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7b420d7a, (q31_t)0xdd7b8220, (q31_t)0x7b26cb4f, (q31_t)0xdd1abe51, (q31_t)0x7b0b3d2c, (q31_t)0xdcba1008, + (q31_t)0x7aef6323, (q31_t)0xdc597781, (q31_t)0x7ad33d45, (q31_t)0xdbf8f4f8, (q31_t)0x7ab6cba4, (q31_t)0xdb9888a8, (q31_t)0x7a9a0e50, (q31_t)0xdb3832cd, + (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a5fb0d8, (q31_t)0xda77cb63, (q31_t)0x7a4210d8, (q31_t)0xda17ba4a, (q31_t)0x7a24256f, (q31_t)0xd9b7c094, + (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x79e76ca7, (q31_t)0xd8f81439, (q31_t)0x79c89f6e, (q31_t)0xd898620c, (q31_t)0x79a98715, (q31_t)0xd838c82d, + (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x796a7554, (q31_t)0xd779de47, (q31_t)0x794a7c12, (q31_t)0xd71a8eb5, (q31_t)0x792a37fe, (q31_t)0xd6bb585e, + (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, (q31_t)0x78e8cfb2, (q31_t)0xd5fd3848, (q31_t)0x78c7aba2, (q31_t)0xd59e4eff, (q31_t)0x78a63d11, (q31_t)0xd53f7fda, + (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x786280bf, (q31_t)0xd48230e9, (q31_t)0x78403329, (q31_t)0xd423b191, (q31_t)0x781d9b65, (q31_t)0xd3c54d47, + (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x77d78daa, (q31_t)0xd308d6c7, (q31_t)0x77b417df, (q31_t)0xd2aac504, (q31_t)0x7790583e, (q31_t)0xd24ccf39, + (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x7747fbce, (q31_t)0xd191386e, (q31_t)0x77235f2d, (q31_t)0xd13397e2, (q31_t)0x76fe790e, (q31_t)0xd0d61434, + (q31_t)0x76d94989, (q31_t)0xd078ad9e, (q31_t)0x76b3d0b4, (q31_t)0xd01b6459, (q31_t)0x768e0ea6, (q31_t)0xcfbe389f, (q31_t)0x76680376, (q31_t)0xcf612aaa, + (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x761b1211, (q31_t)0xcea768f2, (q31_t)0x75f42c0b, (q31_t)0xce4ab5a2, (q31_t)0x75ccfd42, (q31_t)0xcdee20fc, + (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x757dc5ca, (q31_t)0xcd355491, (q31_t)0x7555bd4c, (q31_t)0xccd91d3d, (q31_t)0x752d6c6c, (q31_t)0xcc7d0578, + (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x74dbf1ef, (q31_t)0xcbc53579, (q31_t)0x74b2c884, (q31_t)0xcb697db0, (q31_t)0x7489571c, (q31_t)0xcb0de658, + (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, (q31_t)0x74359cbd, (q31_t)0xca5719db, (q31_t)0x740b53fb, (q31_t)0xc9fbe527, (q31_t)0x73e0c3a3, (q31_t)0xc9a0d1c5, + (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x738acc9e, (q31_t)0xc8eb0fd6, (q31_t)0x735f6626, (q31_t)0xc89061ba, (q31_t)0x7333b883, (q31_t)0xc835d5d0, + (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x72db8828, (q31_t)0xc7812572, (q31_t)0x72af05a7, (q31_t)0xc727016d, (q31_t)0x72823c67, (q31_t)0xc6cd0079, + (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x7227d61c, (q31_t)0xc61968a2, (q31_t)0x71fa3949, (q31_t)0xc5bfd22e, (q31_t)0x71cc5626, (q31_t)0xc5665fa9, + (q31_t)0x719e2cd2, (q31_t)0xc50d1149, (q31_t)0x716fbd68, (q31_t)0xc4b3e746, (q31_t)0x71410805, (q31_t)0xc45ae1d7, (q31_t)0x71120cc5, (q31_t)0xc4020133, + (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x70b34525, (q31_t)0xc350af26, (q31_t)0x708378ff, (q31_t)0xc2f83e2a, (q31_t)0x70536771, (q31_t)0xc29ff2d4, + (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x6ff27497, (q31_t)0xc1efcdf3, (q31_t)0x6fc19385, (q31_t)0xc197f4d4, (q31_t)0x6f906d84, (q31_t)0xc1404233, + (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6f2d532c, (q31_t)0xc0915148, (q31_t)0x6efb5f12, (q31_t)0xc03a1368, (q31_t)0x6ec92683, (q31_t)0xbfe2fcdf, + (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, (q31_t)0x6e63e87f, (q31_t)0xbf3546a8, (q31_t)0x6e30e34a, (q31_t)0xbedea765, (q31_t)0x6dfd9a1c, (q31_t)0xbe88304f, + (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6d963c54, (q31_t)0xbddbbb7f, (q31_t)0x6d6227fa, (q31_t)0xbd85be30, (q31_t)0x6d2dd027, (q31_t)0xbd2fe9e2, + (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6cc45698, (q31_t)0xbc84bd1f, (q31_t)0x6c8f351c, (q31_t)0xbc2f6513, (q31_t)0x6c59d0a9, (q31_t)0xbbda36dd, + (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6bee3f62, (q31_t)0xbb3058c0, (q31_t)0x6bb812d1, (q31_t)0xbadba943, (q31_t)0x6b81a3cd, (q31_t)0xba87246d, + (q31_t)0x6b4af279, (q31_t)0xba32ca71, (q31_t)0x6b13fef5, (q31_t)0xb9de9b83, (q31_t)0x6adcc964, (q31_t)0xb98a97d8, (q31_t)0x6aa551e9, (q31_t)0xb936bfa4, + (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x6a359db9, (q31_t)0xb88f926d, (q31_t)0x69fd614a, (q31_t)0xb83c3dd1, (q31_t)0x69c4e37a, (q31_t)0xb7e9157a, + (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x69532442, (q31_t)0xb7434a67, (q31_t)0x6919e320, (q31_t)0xb6f0a812, (q31_t)0x68e06129, (q31_t)0xb69e32cd, + (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x686c9b4b, (q31_t)0xb5f9d043, (q31_t)0x683257ab, (q31_t)0xb5a7e362, (q31_t)0x67f7d3c5, (q31_t)0xb556245e, + (q31_t)0x67bd0fbd, (q31_t)0xb5049368, (q31_t)0x67820bb7, (q31_t)0xb4b330b3, (q31_t)0x6746c7d8, (q31_t)0xb461fc70, (q31_t)0x670b4444, (q31_t)0xb410f6d3, + (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x66937e91, (q31_t)0xb36f784f, (q31_t)0x66573cbb, (q31_t)0xb31effcc, (q31_t)0x661abbc5, (q31_t)0xb2ceb6b5, + (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x65a0fd0b, (q31_t)0xb22eb392, (q31_t)0x6563bf92, (q31_t)0xb1def9e9, (q31_t)0x6526438f, (q31_t)0xb18f7071, + (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x64aa907f, (q31_t)0xb0f0eeda, (q31_t)0x646c59bf, (q31_t)0xb0a1f71d, (q31_t)0x642de50d, (q31_t)0xb0533055, + (q31_t)0x63ef3290, (q31_t)0xb0049ab3, (q31_t)0x63b0426d, (q31_t)0xafb63667, (q31_t)0x637114cc, (q31_t)0xaf6803a2, (q31_t)0x6331a9d4, (q31_t)0xaf1a0293, + (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x62b21c7b, (q31_t)0xae7e965b, (q31_t)0x6271fa69, (q31_t)0xae312b92, (q31_t)0x62319b9d, (q31_t)0xade3f33e, + (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x61b02876, (q31_t)0xad4a1aba, (q31_t)0x616f146c, (q31_t)0xacfd7ae8, (q31_t)0x612dc447, (q31_t)0xacb10e4b, + (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x60aa7050, (q31_t)0xac18cf69, (q31_t)0x60686ccf, (q31_t)0xabccfd83, (q31_t)0x60262dd6, (q31_t)0xab815f8d, + (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, (q31_t)0x5fa0fe1f, (q31_t)0xaaeac02c, (q31_t)0x5f5e0db3, (q31_t)0xaa9fbf1e, (q31_t)0x5f1ae274, (q31_t)0xaa54f2ba, + (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5e93dc1f, (q31_t)0xa9bff8a8, (q31_t)0x5e50015d, (q31_t)0xa975cb57, (q31_t)0x5e0bec6e, (q31_t)0xa92bd367, + (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5d8314b1, (q31_t)0xa8988463, (q31_t)0x5d3e5237, (q31_t)0xa84f2daa, (q31_t)0x5cf95638, (q31_t)0xa8060d08, + (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5c6eb258, (q31_t)0xa7746ec0, (q31_t)0x5c290acc, (q31_t)0xa72bf174, (q31_t)0x5be32a67, (q31_t)0xa6e3aaf2, + (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, (q31_t)0x5b56bfbd, (q31_t)0xa653c303, (q31_t)0x5b1035cf, (q31_t)0xa60c21ee, (q31_t)0x5ac973b5, (q31_t)0xa5c4b855, + (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x5a3b47ab, (q31_t)0xa5368c4b, (q31_t)0x59f3de12, (q31_t)0xa4efca31, (q31_t)0x59ac3cfd, (q31_t)0xa4a94043, + (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x591c550e, (q31_t)0xa41cd599, (q31_t)0x58d40e8c, (q31_t)0xa3d6f534, (q31_t)0x588b9140, (q31_t)0xa3914da8, + (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x57f9f2f8, (q31_t)0xa306a9c8, (q31_t)0x57b0d256, (q31_t)0xa2c1adc9, (q31_t)0x57677b9d, (q31_t)0xa27ceb4f, + (q31_t)0x571deefa, (q31_t)0xa2386284, (q31_t)0x56d42c99, (q31_t)0xa1f41392, (q31_t)0x568a34a9, (q31_t)0xa1affea3, (q31_t)0x56400758, (q31_t)0xa16c23e1, + (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x55ab0d46, (q31_t)0xa0e51d8c, (q31_t)0x556040e2, (q31_t)0xa0a1f24d, (q31_t)0x55153fd4, (q31_t)0xa05f01e1, + (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x547ea073, (q31_t)0x9fd9d22a, (q31_t)0x5433027d, (q31_t)0x9f979331, (q31_t)0x53e73097, (q31_t)0x9f558fb0, + (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x534ef1b5, (q31_t)0x9ed23bb9, (q31_t)0x53028518, (q31_t)0x9e90eb94, (q31_t)0x52b5e546, (q31_t)0x9e4fd78a, + (q31_t)0x5269126e, (q31_t)0x9e0effc1, (q31_t)0x521c0cc2, (q31_t)0x9dce6463, (q31_t)0x51ced46e, (q31_t)0x9d8e0597, (q31_t)0x518169a5, (q31_t)0x9d4de385, + (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x50e5fd6d, (q31_t)0x9cce562c, (q31_t)0x5097fc5e, (q31_t)0x9c8eeb34, (q31_t)0x5049c999, (q31_t)0x9c4fbd93, + (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4faccfab, (q31_t)0x9bd21af3, (q31_t)0x4f5e08e3, (q31_t)0x9b93a641, (q31_t)0x4f0f1126, (q31_t)0x9b556f81, + (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4e708f8f, (q31_t)0x9ad9bc71, (q31_t)0x4e210617, (q31_t)0x9a9c406e, (q31_t)0x4dd14c6e, (q31_t)0x9a5f02f5, + (q31_t)0x4d8162c4, (q31_t)0x9a22042d, (q31_t)0x4d31494b, (q31_t)0x99e5443b, (q31_t)0x4ce10034, (q31_t)0x99a8c345, (q31_t)0x4c9087b1, (q31_t)0x996c816f, + (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4bef092d, (q31_t)0x98f4bbbc, (q31_t)0x4b9e0390, (q31_t)0x98b93828, (q31_t)0x4b4ccf4d, (q31_t)0x987df449, + (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x4aa9dba2, (q31_t)0x98082c3b, (q31_t)0x4a581c9e, (q31_t)0x97cda855, (q31_t)0x4a062fbd, (q31_t)0x979364b5, + (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x4961cd33, (q31_t)0x971f9ed7, (q31_t)0x490f57ee, (q31_t)0x96e61ce0, (q31_t)0x48bcb599, (q31_t)0x96acdbbe, + (q31_t)0x4869e665, (q31_t)0x9673db94, (q31_t)0x4816ea86, (q31_t)0x963b1c86, (q31_t)0x47c3c22f, (q31_t)0x96029eb6, (q31_t)0x47706d93, (q31_t)0x95ca6247, + (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x46c9405c, (q31_t)0x955aae17, (q31_t)0x46756828, (q31_t)0x9523369c, (q31_t)0x4621647d, (q31_t)0x94ec010b, + (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x4578db93, (q31_t)0x947e5c33, (q31_t)0x452456bd, (q31_t)0x9447ed2f, (q31_t)0x44cfa740, (q31_t)0x9411c09e, + (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x4425c923, (q31_t)0x93a62f57, (q31_t)0x43d09aed, (q31_t)0x9370cae4, (q31_t)0x437b42e1, (q31_t)0x933ba968, + (q31_t)0x4325c135, (q31_t)0x9306cb04, (q31_t)0x42d0161e, (q31_t)0x92d22fd9, (q31_t)0x427a41d0, (q31_t)0x929dd806, (q31_t)0x42244481, (q31_t)0x9269c3ac, + (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x4177cfb1, (q31_t)0x920265e4, (q31_t)0x4121589b, (q31_t)0x91cf1cb6, (q31_t)0x40cab958, (q31_t)0x919c1781, + (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x401d0321, (q31_t)0x9136d97d, (q31_t)0x3fc5ec98, (q31_t)0x9104a0ee, (q31_t)0x3f6eaeb8, (q31_t)0x90d2acd4, + (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3ebfbdcd, (q31_t)0x906f927c, (q31_t)0x3e680b2c, (q31_t)0x903e6c7b, (q31_t)0x3e10320d, (q31_t)0x900d8b69, + (q31_t)0x3db832a6, (q31_t)0x8fdcef66, (q31_t)0x3d600d2c, (q31_t)0x8fac988f, (q31_t)0x3d07c1d6, (q31_t)0x8f7c8701, (q31_t)0x3caf50da, (q31_t)0x8f4cbadb, + (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3bfdfecd, (q31_t)0x8eedf33b, (q31_t)0x3ba51e29, (q31_t)0x8ebef7fb, (q31_t)0x3b4c18ba, (q31_t)0x8e904298, + (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x3a99a057, (q31_t)0x8e33a9da, (q31_t)0x3a402dd2, (q31_t)0x8e05c6b7, (q31_t)0x39e6975e, (q31_t)0x8dd829e4, + (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x3932ff87, (q31_t)0x8d7dc399, (q31_t)0x38d8fe93, (q31_t)0x8d50fa59, (q31_t)0x387eda8e, (q31_t)0x8d2477d8, + (q31_t)0x382493b0, (q31_t)0x8cf83c30, (q31_t)0x37ca2a30, (q31_t)0x8ccc477d, (q31_t)0x376f9e46, (q31_t)0x8ca099da, (q31_t)0x3714f02a, (q31_t)0x8c753362, + (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x365f2e3b, (q31_t)0x8c1f3c5d, (q31_t)0x36041ad9, (q31_t)0x8bf4ac05, (q31_t)0x35a8e625, (q31_t)0x8bca6343, + (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x34f219a8, (q31_t)0x8b76a8e4, (q31_t)0x34968250, (q31_t)0x8b4d377c, (q31_t)0x343aca87, (q31_t)0x8b240e11, + (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x3382fa88, (q31_t)0x8ad29394, (q31_t)0x3326e2c3, (q31_t)0x8aaa42b4, (q31_t)0x32caab6f, (q31_t)0x8a823a36, + (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, (q31_t)0x3211df04, (q31_t)0x8a3302be, (q31_t)0x31b54a5e, (q31_t)0x8a0bd3f5, (q31_t)0x3158970e, (q31_t)0x89e4edef, + (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x309ed556, (q31_t)0x8997fc8a, (q31_t)0x3041c761, (q31_t)0x8971f15a, (q31_t)0x2fe49ba7, (q31_t)0x894c2f4c, + (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2f29ebcc, (q31_t)0x890186f2, (q31_t)0x2ecc681e, (q31_t)0x88dca0d3, (q31_t)0x2e6ec792, (q31_t)0x88b80432, + (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2db330c7, (q31_t)0x886fa7c2, (q31_t)0x2d553afc, (q31_t)0x884be821, (q31_t)0x2cf72939, (q31_t)0x88287256, + (q31_t)0x2c98fbba, (q31_t)0x88054677, (q31_t)0x2c3ab2b9, (q31_t)0x87e2649b, (q31_t)0x2bdc4e6f, (q31_t)0x87bfccd7, (q31_t)0x2b7dcf17, (q31_t)0x879d7f41, + (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x2ac08026, (q31_t)0x8759c2ef, (q31_t)0x2a61b101, (q31_t)0x8738545e, (q31_t)0x2a02c7b8, (q31_t)0x8717304e, + (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x2944a7a2, (q31_t)0x86d5c802, (q31_t)0x28e5714b, (q31_t)0x86b583ee, (q31_t)0x288621b9, (q31_t)0x86958aac, + (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x27c737d3, (q31_t)0x865678eb, (q31_t)0x27679df4, (q31_t)0x86376092, (q31_t)0x2707ebc7, (q31_t)0x86189359, + (q31_t)0x26a82186, (q31_t)0x85fa1153, (q31_t)0x26483f6c, (q31_t)0x85dbda91, (q31_t)0x25e845b6, (q31_t)0x85bdef28, (q31_t)0x2588349d, (q31_t)0x85a04f28, + (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x24c7cd33, (q31_t)0x8565f1b0, (q31_t)0x24677758, (q31_t)0x8549345c, (q31_t)0x24070b08, (q31_t)0x852cc2bb, + (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x2345eff8, (q31_t)0x84f4c2d4, (q31_t)0x22e541af, (q31_t)0x84d934b1, (q31_t)0x22847de0, (q31_t)0x84bdf286, + (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x21c2b69c, (q31_t)0x84885258, (q31_t)0x2161b3a0, (q31_t)0x846df477, (q31_t)0x21009c0c, (q31_t)0x8453e2cf, + (q31_t)0x209f701c, (q31_t)0x843a1d70, (q31_t)0x203e300d, (q31_t)0x8420a46c, (q31_t)0x1fdcdc1b, (q31_t)0x840777d0, (q31_t)0x1f7b7481, (q31_t)0x83ee97ad, + (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1eb86b46, (q31_t)0x83bdbd0e, (q31_t)0x1e56ca1e, (q31_t)0x83a5c2b0, (q31_t)0x1df5163f, (q31_t)0x838e1507, + (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1d31774d, (q31_t)0x835fa00f, (q31_t)0x1ccf8cb3, (q31_t)0x8348d8dc, (q31_t)0x1c6d9053, (q31_t)0x83325e97, + (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1ba96335, (q31_t)0x83065110, (q31_t)0x1b4732ef, (q31_t)0x82f0bde8, (q31_t)0x1ae4f1d6, (q31_t)0x82db77e5, + (q31_t)0x1a82a026, (q31_t)0x82c67f14, (q31_t)0x1a203e1b, (q31_t)0x82b1d381, (q31_t)0x19bdcbf3, (q31_t)0x829d753a, (q31_t)0x195b49ea, (q31_t)0x8289644b, + (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x18961728, (q31_t)0x82622aa6, (q31_t)0x183366e9, (q31_t)0x824f0208, (q31_t)0x17d0a7bc, (q31_t)0x823c26f3, + (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x170afd8d, (q31_t)0x82175990, (q31_t)0x16a81305, (q31_t)0x82056758, (q31_t)0x16451a83, (q31_t)0x81f3c2d7, + (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x157f0086, (q31_t)0x81d16321, (q31_t)0x151bdf86, (q31_t)0x81c0a801, (q31_t)0x14b8b17f, (q31_t)0x81b03ac2, + (q31_t)0x145576b1, (q31_t)0x81a01b6d, (q31_t)0x13f22f58, (q31_t)0x81904a0c, (q31_t)0x138edbb1, (q31_t)0x8180c6a9, (q31_t)0x132b7bf9, (q31_t)0x8171914e, + (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x1264994e, (q31_t)0x815410d4, (q31_t)0x120116d5, (q31_t)0x8145c5c7, (q31_t)0x119d8941, (q31_t)0x8137c8e6, + (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0x10d64dbd, (q31_t)0x811cb9ca, (q31_t)0x1072a048, (q31_t)0x810fa7a0, (q31_t)0x100ee8ad, (q31_t)0x8102e3c4, + (q31_t)0xfab272b, (q31_t)0x80f66e3c, (q31_t)0xf475bff, (q31_t)0x80ea4712, (q31_t)0xee38766, (q31_t)0x80de6e4c, (q31_t)0xe7fa99e, (q31_t)0x80d2e3f2, + (q31_t)0xe1bc2e4, (q31_t)0x80c7a80a, (q31_t)0xdb7d376, (q31_t)0x80bcba9d, (q31_t)0xd53db92, (q31_t)0x80b21baf, (q31_t)0xcefdb76, (q31_t)0x80a7cb49, + (q31_t)0xc8bd35e, (q31_t)0x809dc971, (q31_t)0xc27c389, (q31_t)0x8094162c, (q31_t)0xbc3ac35, (q31_t)0x808ab180, (q31_t)0xb5f8d9f, (q31_t)0x80819b74, + (q31_t)0xafb6805, (q31_t)0x8078d40d, (q31_t)0xa973ba5, (q31_t)0x80705b50, (q31_t)0xa3308bd, (q31_t)0x80683143, (q31_t)0x9cecf89, (q31_t)0x806055eb, + (q31_t)0x96a9049, (q31_t)0x8058c94c, (q31_t)0x9064b3a, (q31_t)0x80518b6b, (q31_t)0x8a2009a, (q31_t)0x804a9c4d, (q31_t)0x83db0a7, (q31_t)0x8043fbf6, + (q31_t)0x7d95b9e, (q31_t)0x803daa6a, (q31_t)0x77501be, (q31_t)0x8037a7ac, (q31_t)0x710a345, (q31_t)0x8031f3c2, (q31_t)0x6ac406f, (q31_t)0x802c8ead, + (q31_t)0x647d97c, (q31_t)0x80277872, (q31_t)0x5e36ea9, (q31_t)0x8022b114, (q31_t)0x57f0035, (q31_t)0x801e3895, (q31_t)0x51a8e5c, (q31_t)0x801a0ef8, + (q31_t)0x4b6195d, (q31_t)0x80163440, (q31_t)0x451a177, (q31_t)0x8012a86f, (q31_t)0x3ed26e6, (q31_t)0x800f6b88, (q31_t)0x388a9ea, (q31_t)0x800c7d8c, + (q31_t)0x3242abf, (q31_t)0x8009de7e, (q31_t)0x2bfa9a4, (q31_t)0x80078e5e, (q31_t)0x25b26d7, (q31_t)0x80058d2f, (q31_t)0x1f6a297, (q31_t)0x8003daf1, + (q31_t)0x1921d20, (q31_t)0x800277a6, (q31_t)0x12d96b1, (q31_t)0x8001634e, (q31_t)0xc90f88, (q31_t)0x80009dea, (q31_t)0x6487e3, (q31_t)0x8000277a +}; + +static const q31_t WeightsQ31_2048[4096] = { + (q31_t)0x7fffffff, (q31_t)0x00000000, (q31_t)0x7ffffd88, (q31_t)0xffe6de05, (q31_t)0x7ffff621, (q31_t)0xffcdbc0b, (q31_t)0x7fffe9cb, (q31_t)0xffb49a12, + (q31_t)0x7fffd886, (q31_t)0xff9b781d, (q31_t)0x7fffc251, (q31_t)0xff82562c, (q31_t)0x7fffa72c, (q31_t)0xff69343f, (q31_t)0x7fff8719, (q31_t)0xff501258, + (q31_t)0x7fff6216, (q31_t)0xff36f078, (q31_t)0x7fff3824, (q31_t)0xff1dcea0, (q31_t)0x7fff0943, (q31_t)0xff04acd0, (q31_t)0x7ffed572, (q31_t)0xfeeb8b0a, + (q31_t)0x7ffe9cb2, (q31_t)0xfed2694f, (q31_t)0x7ffe5f03, (q31_t)0xfeb947a0, (q31_t)0x7ffe1c65, (q31_t)0xfea025fd, (q31_t)0x7ffdd4d7, (q31_t)0xfe870467, + (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ffd36ee, (q31_t)0xfe54c169, (q31_t)0x7ffce093, (q31_t)0xfe3ba002, (q31_t)0x7ffc8549, (q31_t)0xfe227eac, + (q31_t)0x7ffc250f, (q31_t)0xfe095d69, (q31_t)0x7ffbbfe6, (q31_t)0xfdf03c3a, (q31_t)0x7ffb55ce, (q31_t)0xfdd71b1e, (q31_t)0x7ffae6c7, (q31_t)0xfdbdfa18, + (q31_t)0x7ffa72d1, (q31_t)0xfda4d929, (q31_t)0x7ff9f9ec, (q31_t)0xfd8bb850, (q31_t)0x7ff97c18, (q31_t)0xfd729790, (q31_t)0x7ff8f954, (q31_t)0xfd5976e9, + (q31_t)0x7ff871a2, (q31_t)0xfd40565c, (q31_t)0x7ff7e500, (q31_t)0xfd2735ea, (q31_t)0x7ff75370, (q31_t)0xfd0e1594, (q31_t)0x7ff6bcf0, (q31_t)0xfcf4f55c, + (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7ff58125, (q31_t)0xfcc2b545, (q31_t)0x7ff4dbd9, (q31_t)0xfca9956a, (q31_t)0x7ff4319d, (q31_t)0xfc9075af, + (q31_t)0x7ff38274, (q31_t)0xfc775616, (q31_t)0x7ff2ce5b, (q31_t)0xfc5e36a0, (q31_t)0x7ff21553, (q31_t)0xfc45174e, (q31_t)0x7ff1575d, (q31_t)0xfc2bf821, + (q31_t)0x7ff09478, (q31_t)0xfc12d91a, (q31_t)0x7fefcca4, (q31_t)0xfbf9ba39, (q31_t)0x7feeffe1, (q31_t)0xfbe09b80, (q31_t)0x7fee2e30, (q31_t)0xfbc77cf0, + (q31_t)0x7fed5791, (q31_t)0xfbae5e89, (q31_t)0x7fec7c02, (q31_t)0xfb95404d, (q31_t)0x7feb9b85, (q31_t)0xfb7c223d, (q31_t)0x7feab61a, (q31_t)0xfb630459, + (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, (q31_t)0x7fe8dc78, (q31_t)0xfb30c91b, (q31_t)0x7fe7e841, (q31_t)0xfb17abc2, (q31_t)0x7fe6ef1c, (q31_t)0xfafe8e9b, + (q31_t)0x7fe5f108, (q31_t)0xfae571a4, (q31_t)0x7fe4ee06, (q31_t)0xfacc54e0, (q31_t)0x7fe3e616, (q31_t)0xfab3384f, (q31_t)0x7fe2d938, (q31_t)0xfa9a1bf3, + (q31_t)0x7fe1c76b, (q31_t)0xfa80ffcb, (q31_t)0x7fe0b0b1, (q31_t)0xfa67e3da, (q31_t)0x7fdf9508, (q31_t)0xfa4ec821, (q31_t)0x7fde7471, (q31_t)0xfa35ac9f, + (q31_t)0x7fdd4eec, (q31_t)0xfa1c9157, (q31_t)0x7fdc247a, (q31_t)0xfa037648, (q31_t)0x7fdaf519, (q31_t)0xf9ea5b75, (q31_t)0x7fd9c0ca, (q31_t)0xf9d140de, + (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fd74964, (q31_t)0xf99f0c68, (q31_t)0x7fd6064c, (q31_t)0xf985f28a, (q31_t)0x7fd4be46, (q31_t)0xf96cd8ed, + (q31_t)0x7fd37153, (q31_t)0xf953bf91, (q31_t)0x7fd21f72, (q31_t)0xf93aa676, (q31_t)0x7fd0c8a3, (q31_t)0xf9218d9e, (q31_t)0x7fcf6ce8, (q31_t)0xf908750a, + (q31_t)0x7fce0c3e, (q31_t)0xf8ef5cbb, (q31_t)0x7fcca6a7, (q31_t)0xf8d644b2, (q31_t)0x7fcb3c23, (q31_t)0xf8bd2cef, (q31_t)0x7fc9ccb2, (q31_t)0xf8a41574, + (q31_t)0x7fc85854, (q31_t)0xf88afe42, (q31_t)0x7fc6df08, (q31_t)0xf871e759, (q31_t)0x7fc560cf, (q31_t)0xf858d0bb, (q31_t)0x7fc3dda9, (q31_t)0xf83fba68, + (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fc0c896, (q31_t)0xf80d8ea9, (q31_t)0x7fbf36aa, (q31_t)0xf7f4793e, (q31_t)0x7fbd9fd0, (q31_t)0xf7db6423, + (q31_t)0x7fbc040a, (q31_t)0xf7c24f59, (q31_t)0x7fba6357, (q31_t)0xf7a93ae0, (q31_t)0x7fb8bdb8, (q31_t)0xf79026b9, (q31_t)0x7fb7132b, (q31_t)0xf77712e5, + (q31_t)0x7fb563b3, (q31_t)0xf75dff66, (q31_t)0x7fb3af4e, (q31_t)0xf744ec3b, (q31_t)0x7fb1f5fc, (q31_t)0xf72bd967, (q31_t)0x7fb037bf, (q31_t)0xf712c6ea, + (q31_t)0x7fae7495, (q31_t)0xf6f9b4c6, (q31_t)0x7facac7f, (q31_t)0xf6e0a2fa, (q31_t)0x7faadf7c, (q31_t)0xf6c79188, (q31_t)0x7fa90d8e, (q31_t)0xf6ae8071, + (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7fa55aee, (q31_t)0xf67c5f59, (q31_t)0x7fa37a3c, (q31_t)0xf6634f59, (q31_t)0x7fa1949e, (q31_t)0xf64a3fb8, + (q31_t)0x7f9faa15, (q31_t)0xf6313077, (q31_t)0x7f9dbaa0, (q31_t)0xf6182196, (q31_t)0x7f9bc640, (q31_t)0xf5ff1318, (q31_t)0x7f99ccf4, (q31_t)0xf5e604fc, + (q31_t)0x7f97cebd, (q31_t)0xf5ccf743, (q31_t)0x7f95cb9a, (q31_t)0xf5b3e9f0, (q31_t)0x7f93c38c, (q31_t)0xf59add02, (q31_t)0x7f91b694, (q31_t)0xf581d07b, + (q31_t)0x7f8fa4b0, (q31_t)0xf568c45b, (q31_t)0x7f8d8de1, (q31_t)0xf54fb8a4, (q31_t)0x7f8b7227, (q31_t)0xf536ad56, (q31_t)0x7f895182, (q31_t)0xf51da273, + (q31_t)0x7f872bf3, (q31_t)0xf50497fb, (q31_t)0x7f850179, (q31_t)0xf4eb8def, (q31_t)0x7f82d214, (q31_t)0xf4d28451, (q31_t)0x7f809dc5, (q31_t)0xf4b97b21, + (q31_t)0x7f7e648c, (q31_t)0xf4a07261, (q31_t)0x7f7c2668, (q31_t)0xf4876a10, (q31_t)0x7f79e35a, (q31_t)0xf46e6231, (q31_t)0x7f779b62, (q31_t)0xf4555ac5, + (q31_t)0x7f754e80, (q31_t)0xf43c53cb, (q31_t)0x7f72fcb4, (q31_t)0xf4234d45, (q31_t)0x7f70a5fe, (q31_t)0xf40a4735, (q31_t)0x7f6e4a5e, (q31_t)0xf3f1419a, + (q31_t)0x7f6be9d4, (q31_t)0xf3d83c77, (q31_t)0x7f698461, (q31_t)0xf3bf37cb, (q31_t)0x7f671a05, (q31_t)0xf3a63398, (q31_t)0x7f64aabf, (q31_t)0xf38d2fe0, + (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f5fbd77, (q31_t)0xf35b29e0, (q31_t)0x7f5d3f75, (q31_t)0xf342279b, (q31_t)0x7f5abc8a, (q31_t)0xf32925d3, + (q31_t)0x7f5834b7, (q31_t)0xf310248a, (q31_t)0x7f55a7fa, (q31_t)0xf2f723c1, (q31_t)0x7f531655, (q31_t)0xf2de2379, (q31_t)0x7f507fc7, (q31_t)0xf2c523b2, + (q31_t)0x7f4de451, (q31_t)0xf2ac246e, (q31_t)0x7f4b43f2, (q31_t)0xf29325ad, (q31_t)0x7f489eaa, (q31_t)0xf27a2771, (q31_t)0x7f45f47b, (q31_t)0xf26129ba, + (q31_t)0x7f434563, (q31_t)0xf2482c8a, (q31_t)0x7f409164, (q31_t)0xf22f2fe1, (q31_t)0x7f3dd87c, (q31_t)0xf21633c0, (q31_t)0x7f3b1aad, (q31_t)0xf1fd3829, + (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f359057, (q31_t)0xf1cb429a, (q31_t)0x7f32c3d1, (q31_t)0xf1b248a5, (q31_t)0x7f2ff263, (q31_t)0xf1994f3d, + (q31_t)0x7f2d1c0e, (q31_t)0xf1805662, (q31_t)0x7f2a40d2, (q31_t)0xf1675e17, (q31_t)0x7f2760af, (q31_t)0xf14e665c, (q31_t)0x7f247ba5, (q31_t)0xf1356f32, + (q31_t)0x7f2191b4, (q31_t)0xf11c789a, (q31_t)0x7f1ea2dc, (q31_t)0xf1038295, (q31_t)0x7f1baf1e, (q31_t)0xf0ea8d24, (q31_t)0x7f18b679, (q31_t)0xf0d19848, + (q31_t)0x7f15b8ee, (q31_t)0xf0b8a401, (q31_t)0x7f12b67c, (q31_t)0xf09fb051, (q31_t)0x7f0faf25, (q31_t)0xf086bd39, (q31_t)0x7f0ca2e7, (q31_t)0xf06dcaba, + (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7f067bba, (q31_t)0xf03be78a, (q31_t)0x7f0360cb, (q31_t)0xf022f6da, (q31_t)0x7f0040f6, (q31_t)0xf00a06c8, + (q31_t)0x7efd1c3c, (q31_t)0xeff11753, (q31_t)0x7ef9f29d, (q31_t)0xefd8287c, (q31_t)0x7ef6c418, (q31_t)0xefbf3a45, (q31_t)0x7ef390ae, (q31_t)0xefa64cae, + (q31_t)0x7ef05860, (q31_t)0xef8d5fb8, (q31_t)0x7eed1b2c, (q31_t)0xef747365, (q31_t)0x7ee9d914, (q31_t)0xef5b87b5, (q31_t)0x7ee69217, (q31_t)0xef429caa, + (q31_t)0x7ee34636, (q31_t)0xef29b243, (q31_t)0x7edff570, (q31_t)0xef10c883, (q31_t)0x7edc9fc6, (q31_t)0xeef7df6a, (q31_t)0x7ed94538, (q31_t)0xeedef6f9, + (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, (q31_t)0x7ed28171, (q31_t)0xeead2813, (q31_t)0x7ecf1837, (q31_t)0xee9441a0, (q31_t)0x7ecbaa1a, (q31_t)0xee7b5bd9, + (q31_t)0x7ec8371a, (q31_t)0xee6276bf, (q31_t)0x7ec4bf36, (q31_t)0xee499253, (q31_t)0x7ec14270, (q31_t)0xee30ae96, (q31_t)0x7ebdc0c6, (q31_t)0xee17cb88, + (q31_t)0x7eba3a39, (q31_t)0xedfee92b, (q31_t)0x7eb6aeca, (q31_t)0xede60780, (q31_t)0x7eb31e78, (q31_t)0xedcd2687, (q31_t)0x7eaf8943, (q31_t)0xedb44642, + (q31_t)0x7eabef2c, (q31_t)0xed9b66b2, (q31_t)0x7ea85033, (q31_t)0xed8287d7, (q31_t)0x7ea4ac58, (q31_t)0xed69a9b3, (q31_t)0x7ea1039b, (q31_t)0xed50cc46, + (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e99a37c, (q31_t)0xed1f1396, (q31_t)0x7e95ec1a, (q31_t)0xed063856, (q31_t)0x7e922fd6, (q31_t)0xeced5dd0, + (q31_t)0x7e8e6eb2, (q31_t)0xecd48407, (q31_t)0x7e8aa8ac, (q31_t)0xecbbaafb, (q31_t)0x7e86ddc6, (q31_t)0xeca2d2ad, (q31_t)0x7e830dff, (q31_t)0xec89fb1e, + (q31_t)0x7e7f3957, (q31_t)0xec71244f, (q31_t)0x7e7b5fce, (q31_t)0xec584e41, (q31_t)0x7e778166, (q31_t)0xec3f78f6, (q31_t)0x7e739e1d, (q31_t)0xec26a46d, + (q31_t)0x7e6fb5f4, (q31_t)0xec0dd0a8, (q31_t)0x7e6bc8eb, (q31_t)0xebf4fda8, (q31_t)0x7e67d703, (q31_t)0xebdc2b6e, (q31_t)0x7e63e03b, (q31_t)0xebc359fb, + (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e5be40c, (q31_t)0xeb91b96c, (q31_t)0x7e57dea7, (q31_t)0xeb78ea52, (q31_t)0x7e53d462, (q31_t)0xeb601c04, + (q31_t)0x7e4fc53e, (q31_t)0xeb474e81, (q31_t)0x7e4bb13c, (q31_t)0xeb2e81ca, (q31_t)0x7e47985b, (q31_t)0xeb15b5e1, (q31_t)0x7e437a9c, (q31_t)0xeafceac6, + (q31_t)0x7e3f57ff, (q31_t)0xeae4207a, (q31_t)0x7e3b3083, (q31_t)0xeacb56ff, (q31_t)0x7e37042a, (q31_t)0xeab28e56, (q31_t)0x7e32d2f4, (q31_t)0xea99c67e, + (q31_t)0x7e2e9cdf, (q31_t)0xea80ff7a, (q31_t)0x7e2a61ed, (q31_t)0xea683949, (q31_t)0x7e26221f, (q31_t)0xea4f73ee, (q31_t)0x7e21dd73, (q31_t)0xea36af69, + (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7e194584, (q31_t)0xea0528e5, (q31_t)0x7e14f242, (q31_t)0xe9ec66e8, (q31_t)0x7e109a24, (q31_t)0xe9d3a5c5, + (q31_t)0x7e0c3d29, (q31_t)0xe9bae57d, (q31_t)0x7e07db52, (q31_t)0xe9a22610, (q31_t)0x7e0374a0, (q31_t)0xe9896781, (q31_t)0x7dff0911, (q31_t)0xe970a9ce, + (q31_t)0x7dfa98a8, (q31_t)0xe957ecfb, (q31_t)0x7df62362, (q31_t)0xe93f3107, (q31_t)0x7df1a942, (q31_t)0xe92675f4, (q31_t)0x7ded2a47, (q31_t)0xe90dbbc2, + (q31_t)0x7de8a670, (q31_t)0xe8f50273, (q31_t)0x7de41dc0, (q31_t)0xe8dc4a07, (q31_t)0x7ddf9034, (q31_t)0xe8c39280, (q31_t)0x7ddafdce, (q31_t)0xe8aadbde, + (q31_t)0x7dd6668f, (q31_t)0xe8922622, (q31_t)0x7dd1ca75, (q31_t)0xe879714d, (q31_t)0x7dcd2981, (q31_t)0xe860bd61, (q31_t)0x7dc883b4, (q31_t)0xe8480a5d, + (q31_t)0x7dc3d90d, (q31_t)0xe82f5844, (q31_t)0x7dbf298d, (q31_t)0xe816a716, (q31_t)0x7dba7534, (q31_t)0xe7fdf6d4, (q31_t)0x7db5bc02, (q31_t)0xe7e5477f, + (q31_t)0x7db0fdf8, (q31_t)0xe7cc9917, (q31_t)0x7dac3b15, (q31_t)0xe7b3eb9f, (q31_t)0x7da77359, (q31_t)0xe79b3f16, (q31_t)0x7da2a6c6, (q31_t)0xe782937e, + (q31_t)0x7d9dd55a, (q31_t)0xe769e8d8, (q31_t)0x7d98ff17, (q31_t)0xe7513f25, (q31_t)0x7d9423fc, (q31_t)0xe7389665, (q31_t)0x7d8f4409, (q31_t)0xe71fee99, + (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d85759f, (q31_t)0xe6eea1e4, (q31_t)0x7d808728, (q31_t)0xe6d5fcfc, (q31_t)0x7d7b93da, (q31_t)0xe6bd590d, + (q31_t)0x7d769bb5, (q31_t)0xe6a4b616, (q31_t)0x7d719eba, (q31_t)0xe68c141a, (q31_t)0x7d6c9ce9, (q31_t)0xe6737319, (q31_t)0x7d679642, (q31_t)0xe65ad315, + (q31_t)0x7d628ac6, (q31_t)0xe642340d, (q31_t)0x7d5d7a74, (q31_t)0xe6299604, (q31_t)0x7d58654d, (q31_t)0xe610f8f9, (q31_t)0x7d534b50, (q31_t)0xe5f85cef, + (q31_t)0x7d4e2c7f, (q31_t)0xe5dfc1e5, (q31_t)0x7d4908d9, (q31_t)0xe5c727dd, (q31_t)0x7d43e05e, (q31_t)0xe5ae8ed8, (q31_t)0x7d3eb30f, (q31_t)0xe595f6d7, + (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7d3449f5, (q31_t)0xe564c9e3, (q31_t)0x7d2f0e2b, (q31_t)0xe54c34f3, (q31_t)0x7d29cd8c, (q31_t)0xe533a10a, + (q31_t)0x7d24881b, (q31_t)0xe51b0e2a, (q31_t)0x7d1f3dd6, (q31_t)0xe5027c53, (q31_t)0x7d19eebf, (q31_t)0xe4e9eb87, (q31_t)0x7d149ad5, (q31_t)0xe4d15bc6, + (q31_t)0x7d0f4218, (q31_t)0xe4b8cd11, (q31_t)0x7d09e489, (q31_t)0xe4a03f69, (q31_t)0x7d048228, (q31_t)0xe487b2d0, (q31_t)0x7cff1af5, (q31_t)0xe46f2745, + (q31_t)0x7cf9aef0, (q31_t)0xe4569ccb, (q31_t)0x7cf43e1a, (q31_t)0xe43e1362, (q31_t)0x7ceec873, (q31_t)0xe4258b0a, (q31_t)0x7ce94dfb, (q31_t)0xe40d03c6, + (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7cde4a98, (q31_t)0xe3dbf87a, (q31_t)0x7cd8c1ae, (q31_t)0xe3c37474, (q31_t)0x7cd333f3, (q31_t)0xe3aaf184, + (q31_t)0x7ccda169, (q31_t)0xe3926fad, (q31_t)0x7cc80a0f, (q31_t)0xe379eeed, (q31_t)0x7cc26de5, (q31_t)0xe3616f48, (q31_t)0x7cbcccec, (q31_t)0xe348f0bd, + (q31_t)0x7cb72724, (q31_t)0xe330734d, (q31_t)0x7cb17c8d, (q31_t)0xe317f6fa, (q31_t)0x7cabcd28, (q31_t)0xe2ff7bc3, (q31_t)0x7ca618f3, (q31_t)0xe2e701ac, + (q31_t)0x7ca05ff1, (q31_t)0xe2ce88b3, (q31_t)0x7c9aa221, (q31_t)0xe2b610da, (q31_t)0x7c94df83, (q31_t)0xe29d9a23, (q31_t)0x7c8f1817, (q31_t)0xe285248d, + (q31_t)0x7c894bde, (q31_t)0xe26cb01b, (q31_t)0x7c837ad8, (q31_t)0xe2543ccc, (q31_t)0x7c7da505, (q31_t)0xe23bcaa2, (q31_t)0x7c77ca65, (q31_t)0xe223599e, + (q31_t)0x7c71eaf9, (q31_t)0xe20ae9c1, (q31_t)0x7c6c06c0, (q31_t)0xe1f27b0b, (q31_t)0x7c661dbc, (q31_t)0xe1da0d7e, (q31_t)0x7c602fec, (q31_t)0xe1c1a11b, + (q31_t)0x7c5a3d50, (q31_t)0xe1a935e2, (q31_t)0x7c5445e9, (q31_t)0xe190cbd4, (q31_t)0x7c4e49b7, (q31_t)0xe17862f3, (q31_t)0x7c4848ba, (q31_t)0xe15ffb3f, + (q31_t)0x7c4242f2, (q31_t)0xe14794ba, (q31_t)0x7c3c3860, (q31_t)0xe12f2f63, (q31_t)0x7c362904, (q31_t)0xe116cb3d, (q31_t)0x7c3014de, (q31_t)0xe0fe6848, + (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7c23de35, (q31_t)0xe0cda5f5, (q31_t)0x7c1dbbb3, (q31_t)0xe0b54698, (q31_t)0x7c179467, (q31_t)0xe09ce871, + (q31_t)0x7c116853, (q31_t)0xe0848b7f, (q31_t)0x7c0b3777, (q31_t)0xe06c2fc4, (q31_t)0x7c0501d2, (q31_t)0xe053d541, (q31_t)0x7bfec765, (q31_t)0xe03b7bf6, + (q31_t)0x7bf88830, (q31_t)0xe02323e5, (q31_t)0x7bf24434, (q31_t)0xe00acd0e, (q31_t)0x7bebfb70, (q31_t)0xdff27773, (q31_t)0x7be5ade6, (q31_t)0xdfda2314, + (q31_t)0x7bdf5b94, (q31_t)0xdfc1cff3, (q31_t)0x7bd9047c, (q31_t)0xdfa97e0f, (q31_t)0x7bd2a89e, (q31_t)0xdf912d6b, (q31_t)0x7bcc47fa, (q31_t)0xdf78de07, + (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7bbf7860, (q31_t)0xdf484302, (q31_t)0x7bb9096b, (q31_t)0xdf2ff764, (q31_t)0x7bb295b0, (q31_t)0xdf17ad0a, + (q31_t)0x7bac1d31, (q31_t)0xdeff63f4, (q31_t)0x7ba59fee, (q31_t)0xdee71c24, (q31_t)0x7b9f1de6, (q31_t)0xdeced59b, (q31_t)0x7b989719, (q31_t)0xdeb69059, + (q31_t)0x7b920b89, (q31_t)0xde9e4c60, (q31_t)0x7b8b7b36, (q31_t)0xde8609b1, (q31_t)0x7b84e61f, (q31_t)0xde6dc84b, (q31_t)0x7b7e4c45, (q31_t)0xde558831, + (q31_t)0x7b77ada8, (q31_t)0xde3d4964, (q31_t)0x7b710a49, (q31_t)0xde250be3, (q31_t)0x7b6a6227, (q31_t)0xde0ccfb1, (q31_t)0x7b63b543, (q31_t)0xddf494ce, + (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7b564d36, (q31_t)0xddc422f8, (q31_t)0x7b4f920e, (q31_t)0xddabec08, (q31_t)0x7b48d225, (q31_t)0xdd93b66a, + (q31_t)0x7b420d7a, (q31_t)0xdd7b8220, (q31_t)0x7b3b4410, (q31_t)0xdd634f2b, (q31_t)0x7b3475e5, (q31_t)0xdd4b1d8c, (q31_t)0x7b2da2fa, (q31_t)0xdd32ed43, + (q31_t)0x7b26cb4f, (q31_t)0xdd1abe51, (q31_t)0x7b1feee5, (q31_t)0xdd0290b8, (q31_t)0x7b190dbc, (q31_t)0xdcea6478, (q31_t)0x7b1227d3, (q31_t)0xdcd23993, + (q31_t)0x7b0b3d2c, (q31_t)0xdcba1008, (q31_t)0x7b044dc7, (q31_t)0xdca1e7da, (q31_t)0x7afd59a4, (q31_t)0xdc89c109, (q31_t)0x7af660c2, (q31_t)0xdc719b96, + (q31_t)0x7aef6323, (q31_t)0xdc597781, (q31_t)0x7ae860c7, (q31_t)0xdc4154cd, (q31_t)0x7ae159ae, (q31_t)0xdc293379, (q31_t)0x7ada4dd8, (q31_t)0xdc111388, + (q31_t)0x7ad33d45, (q31_t)0xdbf8f4f8, (q31_t)0x7acc27f7, (q31_t)0xdbe0d7cd, (q31_t)0x7ac50dec, (q31_t)0xdbc8bc06, (q31_t)0x7abdef25, (q31_t)0xdbb0a1a4, + (q31_t)0x7ab6cba4, (q31_t)0xdb9888a8, (q31_t)0x7aafa367, (q31_t)0xdb807114, (q31_t)0x7aa8766f, (q31_t)0xdb685ae9, (q31_t)0x7aa144bc, (q31_t)0xdb504626, + (q31_t)0x7a9a0e50, (q31_t)0xdb3832cd, (q31_t)0x7a92d329, (q31_t)0xdb2020e0, (q31_t)0x7a8b9348, (q31_t)0xdb08105e, (q31_t)0x7a844eae, (q31_t)0xdaf00149, + (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a75b74f, (q31_t)0xdabfe76a, (q31_t)0x7a6e648a, (q31_t)0xdaa7dca1, (q31_t)0x7a670d0d, (q31_t)0xda8fd349, + (q31_t)0x7a5fb0d8, (q31_t)0xda77cb63, (q31_t)0x7a584feb, (q31_t)0xda5fc4ef, (q31_t)0x7a50ea47, (q31_t)0xda47bfee, (q31_t)0x7a497feb, (q31_t)0xda2fbc61, + (q31_t)0x7a4210d8, (q31_t)0xda17ba4a, (q31_t)0x7a3a9d0f, (q31_t)0xd9ffb9a9, (q31_t)0x7a332490, (q31_t)0xd9e7ba7f, (q31_t)0x7a2ba75a, (q31_t)0xd9cfbccd, + (q31_t)0x7a24256f, (q31_t)0xd9b7c094, (q31_t)0x7a1c9ece, (q31_t)0xd99fc5d4, (q31_t)0x7a151378, (q31_t)0xd987cc90, (q31_t)0x7a0d836d, (q31_t)0xd96fd4c7, + (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x79fe5539, (q31_t)0xd93fe9ab, (q31_t)0x79f6b711, (q31_t)0xd927f65b, (q31_t)0x79ef1436, (q31_t)0xd910048a, + (q31_t)0x79e76ca7, (q31_t)0xd8f81439, (q31_t)0x79dfc064, (q31_t)0xd8e0256a, (q31_t)0x79d80f6f, (q31_t)0xd8c8381d, (q31_t)0x79d059c8, (q31_t)0xd8b04c52, + (q31_t)0x79c89f6e, (q31_t)0xd898620c, (q31_t)0x79c0e062, (q31_t)0xd880794b, (q31_t)0x79b91ca4, (q31_t)0xd868920f, (q31_t)0x79b15435, (q31_t)0xd850ac5a, + (q31_t)0x79a98715, (q31_t)0xd838c82d, (q31_t)0x79a1b545, (q31_t)0xd820e589, (q31_t)0x7999dec4, (q31_t)0xd809046e, (q31_t)0x79920392, (q31_t)0xd7f124dd, + (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x79823f20, (q31_t)0xd7c16a5f, (q31_t)0x797a55e0, (q31_t)0xd7a98f73, (q31_t)0x797267f2, (q31_t)0xd791b616, + (q31_t)0x796a7554, (q31_t)0xd779de47, (q31_t)0x79627e08, (q31_t)0xd7620808, (q31_t)0x795a820e, (q31_t)0xd74a335b, (q31_t)0x79528167, (q31_t)0xd732603f, + (q31_t)0x794a7c12, (q31_t)0xd71a8eb5, (q31_t)0x79427210, (q31_t)0xd702bec0, (q31_t)0x793a6361, (q31_t)0xd6eaf05f, (q31_t)0x79325006, (q31_t)0xd6d32393, + (q31_t)0x792a37fe, (q31_t)0xd6bb585e, (q31_t)0x79221b4b, (q31_t)0xd6a38ec0, (q31_t)0x7919f9ec, (q31_t)0xd68bc6ba, (q31_t)0x7911d3e2, (q31_t)0xd674004e, + (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, (q31_t)0x790179cd, (q31_t)0xd6447844, (q31_t)0x78f945c3, (q31_t)0xd62cb6a8, (q31_t)0x78f10d0f, (q31_t)0xd614f6a9, + (q31_t)0x78e8cfb2, (q31_t)0xd5fd3848, (q31_t)0x78e08dab, (q31_t)0xd5e57b85, (q31_t)0x78d846fb, (q31_t)0xd5cdc062, (q31_t)0x78cffba3, (q31_t)0xd5b606e0, + (q31_t)0x78c7aba2, (q31_t)0xd59e4eff, (q31_t)0x78bf56f9, (q31_t)0xd58698c0, (q31_t)0x78b6fda8, (q31_t)0xd56ee424, (q31_t)0x78ae9fb0, (q31_t)0xd557312d, + (q31_t)0x78a63d11, (q31_t)0xd53f7fda, (q31_t)0x789dd5cb, (q31_t)0xd527d02e, (q31_t)0x789569df, (q31_t)0xd5102228, (q31_t)0x788cf94c, (q31_t)0xd4f875ca, + (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x787c0a36, (q31_t)0xd4c92209, (q31_t)0x78738bb3, (q31_t)0xd4b17aa8, (q31_t)0x786b088c, (q31_t)0xd499d4f2, + (q31_t)0x786280bf, (q31_t)0xd48230e9, (q31_t)0x7859f44f, (q31_t)0xd46a8e8d, (q31_t)0x7851633b, (q31_t)0xd452eddf, (q31_t)0x7848cd83, (q31_t)0xd43b4ee0, + (q31_t)0x78403329, (q31_t)0xd423b191, (q31_t)0x7837942b, (q31_t)0xd40c15f3, (q31_t)0x782ef08b, (q31_t)0xd3f47c06, (q31_t)0x78264849, (q31_t)0xd3dce3cd, + (q31_t)0x781d9b65, (q31_t)0xd3c54d47, (q31_t)0x7814e9df, (q31_t)0xd3adb876, (q31_t)0x780c33b8, (q31_t)0xd396255a, (q31_t)0x780378f1, (q31_t)0xd37e93f4, + (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x77f1f581, (q31_t)0xd34f764f, (q31_t)0x77e92cd9, (q31_t)0xd337ea12, (q31_t)0x77e05f91, (q31_t)0xd3205f8f, + (q31_t)0x77d78daa, (q31_t)0xd308d6c7, (q31_t)0x77ceb725, (q31_t)0xd2f14fba, (q31_t)0x77c5dc01, (q31_t)0xd2d9ca6a, (q31_t)0x77bcfc3f, (q31_t)0xd2c246d8, + (q31_t)0x77b417df, (q31_t)0xd2aac504, (q31_t)0x77ab2ee2, (q31_t)0xd29344f0, (q31_t)0x77a24148, (q31_t)0xd27bc69c, (q31_t)0x77994f11, (q31_t)0xd2644a0a, + (q31_t)0x7790583e, (q31_t)0xd24ccf39, (q31_t)0x77875cce, (q31_t)0xd235562b, (q31_t)0x777e5cc3, (q31_t)0xd21ddee2, (q31_t)0x7775581d, (q31_t)0xd206695d, + (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x776340ff, (q31_t)0xd1d783a6, (q31_t)0x775a2e89, (q31_t)0xd1c01375, (q31_t)0x77511778, (q31_t)0xd1a8a50d, + (q31_t)0x7747fbce, (q31_t)0xd191386e, (q31_t)0x773edb8b, (q31_t)0xd179cd99, (q31_t)0x7735b6af, (q31_t)0xd1626490, (q31_t)0x772c8d3a, (q31_t)0xd14afd52, + (q31_t)0x77235f2d, (q31_t)0xd13397e2, (q31_t)0x771a2c88, (q31_t)0xd11c343f, (q31_t)0x7710f54c, (q31_t)0xd104d26b, (q31_t)0x7707b979, (q31_t)0xd0ed7267, + (q31_t)0x76fe790e, (q31_t)0xd0d61434, (q31_t)0x76f5340e, (q31_t)0xd0beb7d2, (q31_t)0x76ebea77, (q31_t)0xd0a75d42, (q31_t)0x76e29c4b, (q31_t)0xd0900486, + (q31_t)0x76d94989, (q31_t)0xd078ad9e, (q31_t)0x76cff232, (q31_t)0xd061588b, (q31_t)0x76c69647, (q31_t)0xd04a054e, (q31_t)0x76bd35c7, (q31_t)0xd032b3e7, + (q31_t)0x76b3d0b4, (q31_t)0xd01b6459, (q31_t)0x76aa670d, (q31_t)0xd00416a3, (q31_t)0x76a0f8d2, (q31_t)0xcfeccac7, (q31_t)0x76978605, (q31_t)0xcfd580c6, + (q31_t)0x768e0ea6, (q31_t)0xcfbe389f, (q31_t)0x768492b4, (q31_t)0xcfa6f255, (q31_t)0x767b1231, (q31_t)0xcf8fade9, (q31_t)0x76718d1c, (q31_t)0xcf786b5a, + (q31_t)0x76680376, (q31_t)0xcf612aaa, (q31_t)0x765e7540, (q31_t)0xcf49ebda, (q31_t)0x7654e279, (q31_t)0xcf32aeeb, (q31_t)0x764b4b23, (q31_t)0xcf1b73de, + (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x76380ec8, (q31_t)0xceed036b, (q31_t)0x762e69c4, (q31_t)0xced5ce08, (q31_t)0x7624c031, (q31_t)0xcebe9a8a, + (q31_t)0x761b1211, (q31_t)0xcea768f2, (q31_t)0x76115f63, (q31_t)0xce903942, (q31_t)0x7607a828, (q31_t)0xce790b79, (q31_t)0x75fdec60, (q31_t)0xce61df99, + (q31_t)0x75f42c0b, (q31_t)0xce4ab5a2, (q31_t)0x75ea672a, (q31_t)0xce338d97, (q31_t)0x75e09dbd, (q31_t)0xce1c6777, (q31_t)0x75d6cfc5, (q31_t)0xce054343, + (q31_t)0x75ccfd42, (q31_t)0xcdee20fc, (q31_t)0x75c32634, (q31_t)0xcdd700a4, (q31_t)0x75b94a9c, (q31_t)0xcdbfe23a, (q31_t)0x75af6a7b, (q31_t)0xcda8c5c1, + (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x759b9c9b, (q31_t)0xcd7a92a2, (q31_t)0x7591aedd, (q31_t)0xcd637bfe, (q31_t)0x7587bc98, (q31_t)0xcd4c674d, + (q31_t)0x757dc5ca, (q31_t)0xcd355491, (q31_t)0x7573ca75, (q31_t)0xcd1e43ca, (q31_t)0x7569ca99, (q31_t)0xcd0734f9, (q31_t)0x755fc635, (q31_t)0xccf0281f, + (q31_t)0x7555bd4c, (q31_t)0xccd91d3d, (q31_t)0x754bafdc, (q31_t)0xccc21455, (q31_t)0x75419de7, (q31_t)0xccab0d65, (q31_t)0x7537876c, (q31_t)0xcc940871, + (q31_t)0x752d6c6c, (q31_t)0xcc7d0578, (q31_t)0x75234ce8, (q31_t)0xcc66047b, (q31_t)0x751928e0, (q31_t)0xcc4f057c, (q31_t)0x750f0054, (q31_t)0xcc38087b, + (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x74faa1b3, (q31_t)0xcc0a1477, (q31_t)0x74f06b9e, (q31_t)0xcbf31d75, (q31_t)0x74e63108, (q31_t)0xcbdc2876, + (q31_t)0x74dbf1ef, (q31_t)0xcbc53579, (q31_t)0x74d1ae55, (q31_t)0xcbae447f, (q31_t)0x74c7663a, (q31_t)0xcb97558a, (q31_t)0x74bd199f, (q31_t)0xcb80689a, + (q31_t)0x74b2c884, (q31_t)0xcb697db0, (q31_t)0x74a872e8, (q31_t)0xcb5294ce, (q31_t)0x749e18cd, (q31_t)0xcb3badf3, (q31_t)0x7493ba34, (q31_t)0xcb24c921, + (q31_t)0x7489571c, (q31_t)0xcb0de658, (q31_t)0x747eef85, (q31_t)0xcaf7059a, (q31_t)0x74748371, (q31_t)0xcae026e8, (q31_t)0x746a12df, (q31_t)0xcac94a42, + (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, (q31_t)0x74552446, (q31_t)0xca9b971e, (q31_t)0x744aa63f, (q31_t)0xca84c0a3, (q31_t)0x744023bc, (q31_t)0xca6dec37, + (q31_t)0x74359cbd, (q31_t)0xca5719db, (q31_t)0x742b1144, (q31_t)0xca404992, (q31_t)0x74208150, (q31_t)0xca297b5a, (q31_t)0x7415ece2, (q31_t)0xca12af37, + (q31_t)0x740b53fb, (q31_t)0xc9fbe527, (q31_t)0x7400b69a, (q31_t)0xc9e51d2d, (q31_t)0x73f614c0, (q31_t)0xc9ce5748, (q31_t)0x73eb6e6e, (q31_t)0xc9b7937a, + (q31_t)0x73e0c3a3, (q31_t)0xc9a0d1c5, (q31_t)0x73d61461, (q31_t)0xc98a1227, (q31_t)0x73cb60a8, (q31_t)0xc97354a4, (q31_t)0x73c0a878, (q31_t)0xc95c993a, + (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x73ab2ab4, (q31_t)0xc92f28ba, (q31_t)0x73a06522, (q31_t)0xc91873a5, (q31_t)0x73959b1b, (q31_t)0xc901c0ae, + (q31_t)0x738acc9e, (q31_t)0xc8eb0fd6, (q31_t)0x737ff9ae, (q31_t)0xc8d4611d, (q31_t)0x73752249, (q31_t)0xc8bdb485, (q31_t)0x736a4671, (q31_t)0xc8a70a0e, + (q31_t)0x735f6626, (q31_t)0xc89061ba, (q31_t)0x73548168, (q31_t)0xc879bb89, (q31_t)0x73499838, (q31_t)0xc863177b, (q31_t)0x733eaa96, (q31_t)0xc84c7593, + (q31_t)0x7333b883, (q31_t)0xc835d5d0, (q31_t)0x7328c1ff, (q31_t)0xc81f3834, (q31_t)0x731dc70a, (q31_t)0xc8089cbf, (q31_t)0x7312c7a5, (q31_t)0xc7f20373, + (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x72fcbb8c, (q31_t)0xc7c4d757, (q31_t)0x72f1aed9, (q31_t)0xc7ae4489, (q31_t)0x72e69db7, (q31_t)0xc797b3e7, + (q31_t)0x72db8828, (q31_t)0xc7812572, (q31_t)0x72d06e2b, (q31_t)0xc76a992a, (q31_t)0x72c54fc1, (q31_t)0xc7540f11, (q31_t)0x72ba2cea, (q31_t)0xc73d8727, + (q31_t)0x72af05a7, (q31_t)0xc727016d, (q31_t)0x72a3d9f7, (q31_t)0xc7107de4, (q31_t)0x7298a9dd, (q31_t)0xc6f9fc8d, (q31_t)0x728d7557, (q31_t)0xc6e37d69, + (q31_t)0x72823c67, (q31_t)0xc6cd0079, (q31_t)0x7276ff0d, (q31_t)0xc6b685bd, (q31_t)0x726bbd48, (q31_t)0xc6a00d37, (q31_t)0x7260771b, (q31_t)0xc68996e7, + (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x7249dd86, (q31_t)0xc65cb0ed, (q31_t)0x723e8a20, (q31_t)0xc6464144, (q31_t)0x72333251, (q31_t)0xc62fd3d6, + (q31_t)0x7227d61c, (q31_t)0xc61968a2, (q31_t)0x721c7580, (q31_t)0xc602ffaa, (q31_t)0x7211107e, (q31_t)0xc5ec98ee, (q31_t)0x7205a716, (q31_t)0xc5d6346f, + (q31_t)0x71fa3949, (q31_t)0xc5bfd22e, (q31_t)0x71eec716, (q31_t)0xc5a9722c, (q31_t)0x71e35080, (q31_t)0xc593146a, (q31_t)0x71d7d585, (q31_t)0xc57cb8e9, + (q31_t)0x71cc5626, (q31_t)0xc5665fa9, (q31_t)0x71c0d265, (q31_t)0xc55008ab, (q31_t)0x71b54a41, (q31_t)0xc539b3f1, (q31_t)0x71a9bdba, (q31_t)0xc523617a, + (q31_t)0x719e2cd2, (q31_t)0xc50d1149, (q31_t)0x71929789, (q31_t)0xc4f6c35d, (q31_t)0x7186fdde, (q31_t)0xc4e077b8, (q31_t)0x717b5fd3, (q31_t)0xc4ca2e5b, + (q31_t)0x716fbd68, (q31_t)0xc4b3e746, (q31_t)0x7164169d, (q31_t)0xc49da27a, (q31_t)0x71586b74, (q31_t)0xc4875ff9, (q31_t)0x714cbbeb, (q31_t)0xc4711fc2, + (q31_t)0x71410805, (q31_t)0xc45ae1d7, (q31_t)0x71354fc0, (q31_t)0xc444a639, (q31_t)0x7129931f, (q31_t)0xc42e6ce8, (q31_t)0x711dd220, (q31_t)0xc41835e6, + (q31_t)0x71120cc5, (q31_t)0xc4020133, (q31_t)0x7106430e, (q31_t)0xc3ebced0, (q31_t)0x70fa74fc, (q31_t)0xc3d59ebe, (q31_t)0x70eea28e, (q31_t)0xc3bf70fd, + (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x70d6f0a4, (q31_t)0xc3931c76, (q31_t)0x70cb1128, (q31_t)0xc37cf5b0, (q31_t)0x70bf2d53, (q31_t)0xc366d140, + (q31_t)0x70b34525, (q31_t)0xc350af26, (q31_t)0x70a7589f, (q31_t)0xc33a8f62, (q31_t)0x709b67c0, (q31_t)0xc32471f7, (q31_t)0x708f728b, (q31_t)0xc30e56e4, + (q31_t)0x708378ff, (q31_t)0xc2f83e2a, (q31_t)0x70777b1c, (q31_t)0xc2e227cb, (q31_t)0x706b78e3, (q31_t)0xc2cc13c7, (q31_t)0x705f7255, (q31_t)0xc2b6021f, + (q31_t)0x70536771, (q31_t)0xc29ff2d4, (q31_t)0x70475839, (q31_t)0xc289e5e7, (q31_t)0x703b44ad, (q31_t)0xc273db58, (q31_t)0x702f2ccd, (q31_t)0xc25dd329, + (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x7016f014, (q31_t)0xc231c9ec, (q31_t)0x700acb3c, (q31_t)0xc21bc8e1, (q31_t)0x6ffea212, (q31_t)0xc205ca38, + (q31_t)0x6ff27497, (q31_t)0xc1efcdf3, (q31_t)0x6fe642ca, (q31_t)0xc1d9d412, (q31_t)0x6fda0cae, (q31_t)0xc1c3dc97, (q31_t)0x6fcdd241, (q31_t)0xc1ade781, + (q31_t)0x6fc19385, (q31_t)0xc197f4d4, (q31_t)0x6fb5507a, (q31_t)0xc182048d, (q31_t)0x6fa90921, (q31_t)0xc16c16b0, (q31_t)0x6f9cbd79, (q31_t)0xc1562b3d, + (q31_t)0x6f906d84, (q31_t)0xc1404233, (q31_t)0x6f841942, (q31_t)0xc12a5b95, (q31_t)0x6f77c0b3, (q31_t)0xc1147764, (q31_t)0x6f6b63d8, (q31_t)0xc0fe959f, + (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6f529d40, (q31_t)0xc0d2d960, (q31_t)0x6f463383, (q31_t)0xc0bcfee7, (q31_t)0x6f39c57d, (q31_t)0xc0a726df, + (q31_t)0x6f2d532c, (q31_t)0xc0915148, (q31_t)0x6f20dc92, (q31_t)0xc07b7e23, (q31_t)0x6f1461b0, (q31_t)0xc065ad70, (q31_t)0x6f07e285, (q31_t)0xc04fdf32, + (q31_t)0x6efb5f12, (q31_t)0xc03a1368, (q31_t)0x6eeed758, (q31_t)0xc0244a14, (q31_t)0x6ee24b57, (q31_t)0xc00e8336, (q31_t)0x6ed5bb10, (q31_t)0xbff8bece, + (q31_t)0x6ec92683, (q31_t)0xbfe2fcdf, (q31_t)0x6ebc8db0, (q31_t)0xbfcd3d69, (q31_t)0x6eaff099, (q31_t)0xbfb7806c, (q31_t)0x6ea34f3d, (q31_t)0xbfa1c5ea, + (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, (q31_t)0x6e89ffb9, (q31_t)0xbf765858, (q31_t)0x6e7d5193, (q31_t)0xbf60a54a, (q31_t)0x6e709f2a, (q31_t)0xbf4af4ba, + (q31_t)0x6e63e87f, (q31_t)0xbf3546a8, (q31_t)0x6e572d93, (q31_t)0xbf1f9b16, (q31_t)0x6e4a6e66, (q31_t)0xbf09f205, (q31_t)0x6e3daaf8, (q31_t)0xbef44b74, + (q31_t)0x6e30e34a, (q31_t)0xbedea765, (q31_t)0x6e24175c, (q31_t)0xbec905d9, (q31_t)0x6e174730, (q31_t)0xbeb366d1, (q31_t)0x6e0a72c5, (q31_t)0xbe9dca4e, + (q31_t)0x6dfd9a1c, (q31_t)0xbe88304f, (q31_t)0x6df0bd35, (q31_t)0xbe7298d7, (q31_t)0x6de3dc11, (q31_t)0xbe5d03e6, (q31_t)0x6dd6f6b1, (q31_t)0xbe47717c, + (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6dbd1f3c, (q31_t)0xbe1c5444, (q31_t)0x6db02d29, (q31_t)0xbe06c977, (q31_t)0x6da336dc, (q31_t)0xbdf14135, + (q31_t)0x6d963c54, (q31_t)0xbddbbb7f, (q31_t)0x6d893d93, (q31_t)0xbdc63856, (q31_t)0x6d7c3a98, (q31_t)0xbdb0b7bb, (q31_t)0x6d6f3365, (q31_t)0xbd9b39ad, + (q31_t)0x6d6227fa, (q31_t)0xbd85be30, (q31_t)0x6d551858, (q31_t)0xbd704542, (q31_t)0x6d48047e, (q31_t)0xbd5acee5, (q31_t)0x6d3aec6e, (q31_t)0xbd455b1a, + (q31_t)0x6d2dd027, (q31_t)0xbd2fe9e2, (q31_t)0x6d20afac, (q31_t)0xbd1a7b3d, (q31_t)0x6d138afb, (q31_t)0xbd050f2c, (q31_t)0x6d066215, (q31_t)0xbcefa5b0, + (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6cec03af, (q31_t)0xbcc4da7b, (q31_t)0x6cdece2f, (q31_t)0xbcaf78c4, (q31_t)0x6cd1947c, (q31_t)0xbc9a19a5, + (q31_t)0x6cc45698, (q31_t)0xbc84bd1f, (q31_t)0x6cb71482, (q31_t)0xbc6f6333, (q31_t)0x6ca9ce3b, (q31_t)0xbc5a0be2, (q31_t)0x6c9c83c3, (q31_t)0xbc44b72c, + (q31_t)0x6c8f351c, (q31_t)0xbc2f6513, (q31_t)0x6c81e245, (q31_t)0xbc1a1598, (q31_t)0x6c748b3f, (q31_t)0xbc04c8ba, (q31_t)0x6c67300b, (q31_t)0xbbef7e7c, + (q31_t)0x6c59d0a9, (q31_t)0xbbda36dd, (q31_t)0x6c4c6d1a, (q31_t)0xbbc4f1df, (q31_t)0x6c3f055d, (q31_t)0xbbafaf82, (q31_t)0x6c319975, (q31_t)0xbb9a6fc7, + (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6c16b521, (q31_t)0xbb6ff83c, (q31_t)0x6c093cb6, (q31_t)0xbb5ac06d, (q31_t)0x6bfbc021, (q31_t)0xbb458b43, + (q31_t)0x6bee3f62, (q31_t)0xbb3058c0, (q31_t)0x6be0ba7b, (q31_t)0xbb1b28e4, (q31_t)0x6bd3316a, (q31_t)0xbb05fbb0, (q31_t)0x6bc5a431, (q31_t)0xbaf0d125, + (q31_t)0x6bb812d1, (q31_t)0xbadba943, (q31_t)0x6baa7d49, (q31_t)0xbac6840c, (q31_t)0x6b9ce39b, (q31_t)0xbab16180, (q31_t)0x6b8f45c7, (q31_t)0xba9c41a0, + (q31_t)0x6b81a3cd, (q31_t)0xba87246d, (q31_t)0x6b73fdae, (q31_t)0xba7209e7, (q31_t)0x6b66536b, (q31_t)0xba5cf210, (q31_t)0x6b58a503, (q31_t)0xba47dce8, + (q31_t)0x6b4af279, (q31_t)0xba32ca71, (q31_t)0x6b3d3bcb, (q31_t)0xba1dbaaa, (q31_t)0x6b2f80fb, (q31_t)0xba08ad95, (q31_t)0x6b21c208, (q31_t)0xb9f3a332, + (q31_t)0x6b13fef5, (q31_t)0xb9de9b83, (q31_t)0x6b0637c1, (q31_t)0xb9c99688, (q31_t)0x6af86c6c, (q31_t)0xb9b49442, (q31_t)0x6aea9cf8, (q31_t)0xb99f94b2, + (q31_t)0x6adcc964, (q31_t)0xb98a97d8, (q31_t)0x6acef1b2, (q31_t)0xb9759db6, (q31_t)0x6ac115e2, (q31_t)0xb960a64c, (q31_t)0x6ab335f4, (q31_t)0xb94bb19b, + (q31_t)0x6aa551e9, (q31_t)0xb936bfa4, (q31_t)0x6a9769c1, (q31_t)0xb921d067, (q31_t)0x6a897d7d, (q31_t)0xb90ce3e6, (q31_t)0x6a7b8d1e, (q31_t)0xb8f7fa21, + (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x6a5fa010, (q31_t)0xb8ce2ecf, (q31_t)0x6a51a361, (q31_t)0xb8b94d44, (q31_t)0x6a43a29a, (q31_t)0xb8a46e78, + (q31_t)0x6a359db9, (q31_t)0xb88f926d, (q31_t)0x6a2794c1, (q31_t)0xb87ab922, (q31_t)0x6a1987b0, (q31_t)0xb865e299, (q31_t)0x6a0b7689, (q31_t)0xb8510ed4, + (q31_t)0x69fd614a, (q31_t)0xb83c3dd1, (q31_t)0x69ef47f6, (q31_t)0xb8276f93, (q31_t)0x69e12a8c, (q31_t)0xb812a41a, (q31_t)0x69d3090e, (q31_t)0xb7fddb67, + (q31_t)0x69c4e37a, (q31_t)0xb7e9157a, (q31_t)0x69b6b9d3, (q31_t)0xb7d45255, (q31_t)0x69a88c19, (q31_t)0xb7bf91f8, (q31_t)0x699a5a4c, (q31_t)0xb7aad465, + (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x697dea7b, (q31_t)0xb781619c, (q31_t)0x696fac78, (q31_t)0xb76cac69, (q31_t)0x69616a65, (q31_t)0xb757fa01, + (q31_t)0x69532442, (q31_t)0xb7434a67, (q31_t)0x6944da10, (q31_t)0xb72e9d9b, (q31_t)0x69368bce, (q31_t)0xb719f39e, (q31_t)0x6928397e, (q31_t)0xb7054c6f, + (q31_t)0x6919e320, (q31_t)0xb6f0a812, (q31_t)0x690b88b5, (q31_t)0xb6dc0685, (q31_t)0x68fd2a3d, (q31_t)0xb6c767ca, (q31_t)0x68eec7b9, (q31_t)0xb6b2cbe2, + (q31_t)0x68e06129, (q31_t)0xb69e32cd, (q31_t)0x68d1f68f, (q31_t)0xb6899c8d, (q31_t)0x68c387e9, (q31_t)0xb6750921, (q31_t)0x68b5153a, (q31_t)0xb660788c, + (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x689823bf, (q31_t)0xb6375fe5, (q31_t)0x6889a4f6, (q31_t)0xb622d7d6, (q31_t)0x687b2224, (q31_t)0xb60e529f, + (q31_t)0x686c9b4b, (q31_t)0xb5f9d043, (q31_t)0x685e106c, (q31_t)0xb5e550c1, (q31_t)0x684f8186, (q31_t)0xb5d0d41a, (q31_t)0x6840ee9b, (q31_t)0xb5bc5a50, + (q31_t)0x683257ab, (q31_t)0xb5a7e362, (q31_t)0x6823bcb7, (q31_t)0xb5936f53, (q31_t)0x68151dbe, (q31_t)0xb57efe22, (q31_t)0x68067ac3, (q31_t)0xb56a8fd0, + (q31_t)0x67f7d3c5, (q31_t)0xb556245e, (q31_t)0x67e928c5, (q31_t)0xb541bbcd, (q31_t)0x67da79c3, (q31_t)0xb52d561e, (q31_t)0x67cbc6c0, (q31_t)0xb518f351, + (q31_t)0x67bd0fbd, (q31_t)0xb5049368, (q31_t)0x67ae54ba, (q31_t)0xb4f03663, (q31_t)0x679f95b7, (q31_t)0xb4dbdc42, (q31_t)0x6790d2b6, (q31_t)0xb4c78507, + (q31_t)0x67820bb7, (q31_t)0xb4b330b3, (q31_t)0x677340ba, (q31_t)0xb49edf45, (q31_t)0x676471c0, (q31_t)0xb48a90c0, (q31_t)0x67559eca, (q31_t)0xb4764523, + (q31_t)0x6746c7d8, (q31_t)0xb461fc70, (q31_t)0x6737ecea, (q31_t)0xb44db6a8, (q31_t)0x67290e02, (q31_t)0xb43973ca, (q31_t)0x671a2b20, (q31_t)0xb42533d8, + (q31_t)0x670b4444, (q31_t)0xb410f6d3, (q31_t)0x66fc596f, (q31_t)0xb3fcbcbb, (q31_t)0x66ed6aa1, (q31_t)0xb3e88592, (q31_t)0x66de77dc, (q31_t)0xb3d45157, + (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x66c0866d, (q31_t)0xb3abf1b2, (q31_t)0x66b187c3, (q31_t)0xb397c649, (q31_t)0x66a28524, (q31_t)0xb3839dd3, + (q31_t)0x66937e91, (q31_t)0xb36f784f, (q31_t)0x66847408, (q31_t)0xb35b55bf, (q31_t)0x6675658c, (q31_t)0xb3473623, (q31_t)0x6666531d, (q31_t)0xb333197c, + (q31_t)0x66573cbb, (q31_t)0xb31effcc, (q31_t)0x66482267, (q31_t)0xb30ae912, (q31_t)0x66390422, (q31_t)0xb2f6d550, (q31_t)0x6629e1ec, (q31_t)0xb2e2c486, + (q31_t)0x661abbc5, (q31_t)0xb2ceb6b5, (q31_t)0x660b91af, (q31_t)0xb2baabde, (q31_t)0x65fc63a9, (q31_t)0xb2a6a402, (q31_t)0x65ed31b5, (q31_t)0xb2929f21, + (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x65cec204, (q31_t)0xb26a9e54, (q31_t)0x65bf8447, (q31_t)0xb256a26a, (q31_t)0x65b0429f, (q31_t)0xb242a97e, + (q31_t)0x65a0fd0b, (q31_t)0xb22eb392, (q31_t)0x6591b38c, (q31_t)0xb21ac0a6, (q31_t)0x65826622, (q31_t)0xb206d0ba, (q31_t)0x657314cf, (q31_t)0xb1f2e3d0, + (q31_t)0x6563bf92, (q31_t)0xb1def9e9, (q31_t)0x6554666d, (q31_t)0xb1cb1304, (q31_t)0x6545095f, (q31_t)0xb1b72f23, (q31_t)0x6535a86b, (q31_t)0xb1a34e47, + (q31_t)0x6526438f, (q31_t)0xb18f7071, (q31_t)0x6516dacd, (q31_t)0xb17b95a0, (q31_t)0x65076e25, (q31_t)0xb167bdd7, (q31_t)0x64f7fd98, (q31_t)0xb153e915, + (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x64d910d1, (q31_t)0xb12c48ab, (q31_t)0x64c99498, (q31_t)0xb1187d05, (q31_t)0x64ba147d, (q31_t)0xb104b46a, + (q31_t)0x64aa907f, (q31_t)0xb0f0eeda, (q31_t)0x649b08a0, (q31_t)0xb0dd2c56, (q31_t)0x648b7ce0, (q31_t)0xb0c96ce0, (q31_t)0x647bed3f, (q31_t)0xb0b5b077, + (q31_t)0x646c59bf, (q31_t)0xb0a1f71d, (q31_t)0x645cc260, (q31_t)0xb08e40d2, (q31_t)0x644d2722, (q31_t)0xb07a8d97, (q31_t)0x643d8806, (q31_t)0xb066dd6d, + (q31_t)0x642de50d, (q31_t)0xb0533055, (q31_t)0x641e3e38, (q31_t)0xb03f864f, (q31_t)0x640e9386, (q31_t)0xb02bdf5c, (q31_t)0x63fee4f8, (q31_t)0xb0183b7d, + (q31_t)0x63ef3290, (q31_t)0xb0049ab3, (q31_t)0x63df7c4d, (q31_t)0xaff0fcfe, (q31_t)0x63cfc231, (q31_t)0xafdd625f, (q31_t)0x63c0043b, (q31_t)0xafc9cad7, + (q31_t)0x63b0426d, (q31_t)0xafb63667, (q31_t)0x63a07cc7, (q31_t)0xafa2a50f, (q31_t)0x6390b34a, (q31_t)0xaf8f16d1, (q31_t)0x6380e5f6, (q31_t)0xaf7b8bac, + (q31_t)0x637114cc, (q31_t)0xaf6803a2, (q31_t)0x63613fcd, (q31_t)0xaf547eb3, (q31_t)0x635166f9, (q31_t)0xaf40fce1, (q31_t)0x63418a50, (q31_t)0xaf2d7e2b, + (q31_t)0x6331a9d4, (q31_t)0xaf1a0293, (q31_t)0x6321c585, (q31_t)0xaf068a1a, (q31_t)0x6311dd64, (q31_t)0xaef314c0, (q31_t)0x6301f171, (q31_t)0xaedfa285, + (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x62e20e17, (q31_t)0xaeb8c774, (q31_t)0x62d216b3, (q31_t)0xaea55e9e, (q31_t)0x62c21b7e, (q31_t)0xae91f8eb, + (q31_t)0x62b21c7b, (q31_t)0xae7e965b, (q31_t)0x62a219aa, (q31_t)0xae6b36f0, (q31_t)0x6292130c, (q31_t)0xae57daab, (q31_t)0x628208a1, (q31_t)0xae44818b, + (q31_t)0x6271fa69, (q31_t)0xae312b92, (q31_t)0x6261e866, (q31_t)0xae1dd8c0, (q31_t)0x6251d298, (q31_t)0xae0a8916, (q31_t)0x6241b8ff, (q31_t)0xadf73c96, + (q31_t)0x62319b9d, (q31_t)0xade3f33e, (q31_t)0x62217a72, (q31_t)0xadd0ad12, (q31_t)0x6211557e, (q31_t)0xadbd6a10, (q31_t)0x62012cc2, (q31_t)0xadaa2a3b, + (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x61e0cff5, (q31_t)0xad83b416, (q31_t)0x61d09be5, (q31_t)0xad707dc8, (q31_t)0x61c06410, (q31_t)0xad5d4aaa, + (q31_t)0x61b02876, (q31_t)0xad4a1aba, (q31_t)0x619fe918, (q31_t)0xad36edfc, (q31_t)0x618fa5f7, (q31_t)0xad23c46e, (q31_t)0x617f5f12, (q31_t)0xad109e12, + (q31_t)0x616f146c, (q31_t)0xacfd7ae8, (q31_t)0x615ec603, (q31_t)0xacea5af2, (q31_t)0x614e73da, (q31_t)0xacd73e30, (q31_t)0x613e1df0, (q31_t)0xacc424a3, + (q31_t)0x612dc447, (q31_t)0xacb10e4b, (q31_t)0x611d66de, (q31_t)0xac9dfb29, (q31_t)0x610d05b7, (q31_t)0xac8aeb3e, (q31_t)0x60fca0d2, (q31_t)0xac77de8b, + (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x60dbcbd1, (q31_t)0xac51cecf, (q31_t)0x60cb5bb7, (q31_t)0xac3ecbc7, (q31_t)0x60bae7e1, (q31_t)0xac2bcbfa, + (q31_t)0x60aa7050, (q31_t)0xac18cf69, (q31_t)0x6099f505, (q31_t)0xac05d613, (q31_t)0x60897601, (q31_t)0xabf2dffb, (q31_t)0x6078f344, (q31_t)0xabdfed1f, + (q31_t)0x60686ccf, (q31_t)0xabccfd83, (q31_t)0x6057e2a2, (q31_t)0xabba1125, (q31_t)0x604754bf, (q31_t)0xaba72807, (q31_t)0x6036c325, (q31_t)0xab944229, + (q31_t)0x60262dd6, (q31_t)0xab815f8d, (q31_t)0x601594d1, (q31_t)0xab6e8032, (q31_t)0x6004f819, (q31_t)0xab5ba41a, (q31_t)0x5ff457ad, (q31_t)0xab48cb46, + (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, (q31_t)0x5fd30bbc, (q31_t)0xab23236a, (q31_t)0x5fc26038, (q31_t)0xab105464, (q31_t)0x5fb1b104, (q31_t)0xaafd88a4, + (q31_t)0x5fa0fe1f, (q31_t)0xaaeac02c, (q31_t)0x5f90478a, (q31_t)0xaad7fafb, (q31_t)0x5f7f8d46, (q31_t)0xaac53912, (q31_t)0x5f6ecf53, (q31_t)0xaab27a73, + (q31_t)0x5f5e0db3, (q31_t)0xaa9fbf1e, (q31_t)0x5f4d4865, (q31_t)0xaa8d0713, (q31_t)0x5f3c7f6b, (q31_t)0xaa7a5253, (q31_t)0x5f2bb2c5, (q31_t)0xaa67a0e0, + (q31_t)0x5f1ae274, (q31_t)0xaa54f2ba, (q31_t)0x5f0a0e77, (q31_t)0xaa4247e1, (q31_t)0x5ef936d1, (q31_t)0xaa2fa056, (q31_t)0x5ee85b82, (q31_t)0xaa1cfc1a, + (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5ec699e9, (q31_t)0xa9f7bd92, (q31_t)0x5eb5b3a2, (q31_t)0xa9e52347, (q31_t)0x5ea4c9b3, (q31_t)0xa9d28c4e, + (q31_t)0x5e93dc1f, (q31_t)0xa9bff8a8, (q31_t)0x5e82eae5, (q31_t)0xa9ad6855, (q31_t)0x5e71f606, (q31_t)0xa99adb56, (q31_t)0x5e60fd84, (q31_t)0xa98851ac, + (q31_t)0x5e50015d, (q31_t)0xa975cb57, (q31_t)0x5e3f0194, (q31_t)0xa9634858, (q31_t)0x5e2dfe29, (q31_t)0xa950c8b0, (q31_t)0x5e1cf71c, (q31_t)0xa93e4c5f, + (q31_t)0x5e0bec6e, (q31_t)0xa92bd367, (q31_t)0x5dfade20, (q31_t)0xa9195dc7, (q31_t)0x5de9cc33, (q31_t)0xa906eb82, (q31_t)0x5dd8b6a7, (q31_t)0xa8f47c97, + (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5db680b4, (q31_t)0xa8cfa8d2, (q31_t)0x5da5604f, (q31_t)0xa8bd43fa, (q31_t)0x5d943c4e, (q31_t)0xa8aae280, + (q31_t)0x5d8314b1, (q31_t)0xa8988463, (q31_t)0x5d71e979, (q31_t)0xa88629a5, (q31_t)0x5d60baa7, (q31_t)0xa873d246, (q31_t)0x5d4f883b, (q31_t)0xa8617e48, + (q31_t)0x5d3e5237, (q31_t)0xa84f2daa, (q31_t)0x5d2d189a, (q31_t)0xa83ce06e, (q31_t)0x5d1bdb65, (q31_t)0xa82a9693, (q31_t)0x5d0a9a9a, (q31_t)0xa818501c, + (q31_t)0x5cf95638, (q31_t)0xa8060d08, (q31_t)0x5ce80e41, (q31_t)0xa7f3cd59, (q31_t)0x5cd6c2b5, (q31_t)0xa7e1910f, (q31_t)0x5cc57394, (q31_t)0xa7cf582a, + (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5ca2ca99, (q31_t)0xa7aaf094, (q31_t)0x5c9170bf, (q31_t)0xa798c1e5, (q31_t)0x5c801354, (q31_t)0xa786969e, + (q31_t)0x5c6eb258, (q31_t)0xa7746ec0, (q31_t)0x5c5d4dcc, (q31_t)0xa7624a4d, (q31_t)0x5c4be5b0, (q31_t)0xa7502943, (q31_t)0x5c3a7a05, (q31_t)0xa73e0ba5, + (q31_t)0x5c290acc, (q31_t)0xa72bf174, (q31_t)0x5c179806, (q31_t)0xa719daae, (q31_t)0x5c0621b2, (q31_t)0xa707c757, (q31_t)0x5bf4a7d2, (q31_t)0xa6f5b76d, + (q31_t)0x5be32a67, (q31_t)0xa6e3aaf2, (q31_t)0x5bd1a971, (q31_t)0xa6d1a1e7, (q31_t)0x5bc024f0, (q31_t)0xa6bf9c4b, (q31_t)0x5bae9ce7, (q31_t)0xa6ad9a21, + (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, (q31_t)0x5b8b8239, (q31_t)0xa689a022, (q31_t)0x5b79ef96, (q31_t)0xa677a84e, (q31_t)0x5b68596d, (q31_t)0xa665b3ee, + (q31_t)0x5b56bfbd, (q31_t)0xa653c303, (q31_t)0x5b452288, (q31_t)0xa641d58c, (q31_t)0x5b3381ce, (q31_t)0xa62feb8b, (q31_t)0x5b21dd90, (q31_t)0xa61e0501, + (q31_t)0x5b1035cf, (q31_t)0xa60c21ee, (q31_t)0x5afe8a8b, (q31_t)0xa5fa4252, (q31_t)0x5aecdbc5, (q31_t)0xa5e8662f, (q31_t)0x5adb297d, (q31_t)0xa5d68d85, + (q31_t)0x5ac973b5, (q31_t)0xa5c4b855, (q31_t)0x5ab7ba6c, (q31_t)0xa5b2e6a0, (q31_t)0x5aa5fda5, (q31_t)0xa5a11866, (q31_t)0x5a943d5e, (q31_t)0xa58f4da8, + (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x5a70b258, (q31_t)0xa56bc2a2, (q31_t)0x5a5ee79a, (q31_t)0xa55a025b, (q31_t)0x5a4d1960, (q31_t)0xa5484594, + (q31_t)0x5a3b47ab, (q31_t)0xa5368c4b, (q31_t)0x5a29727b, (q31_t)0xa524d683, (q31_t)0x5a1799d1, (q31_t)0xa513243b, (q31_t)0x5a05bdae, (q31_t)0xa5017575, + (q31_t)0x59f3de12, (q31_t)0xa4efca31, (q31_t)0x59e1faff, (q31_t)0xa4de2270, (q31_t)0x59d01475, (q31_t)0xa4cc7e32, (q31_t)0x59be2a74, (q31_t)0xa4badd78, + (q31_t)0x59ac3cfd, (q31_t)0xa4a94043, (q31_t)0x599a4c12, (q31_t)0xa497a693, (q31_t)0x598857b2, (q31_t)0xa486106a, (q31_t)0x59765fde, (q31_t)0xa4747dc7, + (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x595265df, (q31_t)0xa4516319, (q31_t)0x594063b5, (q31_t)0xa43fdb10, (q31_t)0x592e5e19, (q31_t)0xa42e568f, + (q31_t)0x591c550e, (q31_t)0xa41cd599, (q31_t)0x590a4893, (q31_t)0xa40b582e, (q31_t)0x58f838a9, (q31_t)0xa3f9de4e, (q31_t)0x58e62552, (q31_t)0xa3e867fa, + (q31_t)0x58d40e8c, (q31_t)0xa3d6f534, (q31_t)0x58c1f45b, (q31_t)0xa3c585fb, (q31_t)0x58afd6bd, (q31_t)0xa3b41a50, (q31_t)0x589db5b3, (q31_t)0xa3a2b234, + (q31_t)0x588b9140, (q31_t)0xa3914da8, (q31_t)0x58796962, (q31_t)0xa37fecac, (q31_t)0x58673e1b, (q31_t)0xa36e8f41, (q31_t)0x58550f6c, (q31_t)0xa35d3567, + (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x5830a7d6, (q31_t)0xa33a8c6c, (q31_t)0x581e6ef1, (q31_t)0xa3293d4b, (q31_t)0x580c32a7, (q31_t)0xa317f1bf, + (q31_t)0x57f9f2f8, (q31_t)0xa306a9c8, (q31_t)0x57e7afe4, (q31_t)0xa2f56566, (q31_t)0x57d5696d, (q31_t)0xa2e4249b, (q31_t)0x57c31f92, (q31_t)0xa2d2e766, + (q31_t)0x57b0d256, (q31_t)0xa2c1adc9, (q31_t)0x579e81b8, (q31_t)0xa2b077c5, (q31_t)0x578c2dba, (q31_t)0xa29f4559, (q31_t)0x5779d65b, (q31_t)0xa28e1687, + (q31_t)0x57677b9d, (q31_t)0xa27ceb4f, (q31_t)0x57551d80, (q31_t)0xa26bc3b2, (q31_t)0x5742bc06, (q31_t)0xa25a9fb1, (q31_t)0x5730572e, (q31_t)0xa2497f4c, + (q31_t)0x571deefa, (q31_t)0xa2386284, (q31_t)0x570b8369, (q31_t)0xa2274959, (q31_t)0x56f9147e, (q31_t)0xa21633cd, (q31_t)0x56e6a239, (q31_t)0xa20521e0, + (q31_t)0x56d42c99, (q31_t)0xa1f41392, (q31_t)0x56c1b3a1, (q31_t)0xa1e308e4, (q31_t)0x56af3750, (q31_t)0xa1d201d7, (q31_t)0x569cb7a8, (q31_t)0xa1c0fe6c, + (q31_t)0x568a34a9, (q31_t)0xa1affea3, (q31_t)0x5677ae54, (q31_t)0xa19f027c, (q31_t)0x566524aa, (q31_t)0xa18e09fa, (q31_t)0x565297ab, (q31_t)0xa17d151b, + (q31_t)0x56400758, (q31_t)0xa16c23e1, (q31_t)0x562d73b2, (q31_t)0xa15b364d, (q31_t)0x561adcb9, (q31_t)0xa14a4c5e, (q31_t)0x5608426e, (q31_t)0xa1396617, + (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x55e303e6, (q31_t)0xa117a47e, (q31_t)0x55d05faa, (q31_t)0xa106c92f, (q31_t)0x55bdb81f, (q31_t)0xa0f5f189, + (q31_t)0x55ab0d46, (q31_t)0xa0e51d8c, (q31_t)0x55985f20, (q31_t)0xa0d44d3b, (q31_t)0x5585adad, (q31_t)0xa0c38095, (q31_t)0x5572f8ed, (q31_t)0xa0b2b79b, + (q31_t)0x556040e2, (q31_t)0xa0a1f24d, (q31_t)0x554d858d, (q31_t)0xa09130ad, (q31_t)0x553ac6ee, (q31_t)0xa08072ba, (q31_t)0x55280505, (q31_t)0xa06fb876, + (q31_t)0x55153fd4, (q31_t)0xa05f01e1, (q31_t)0x5502775c, (q31_t)0xa04e4efc, (q31_t)0x54efab9c, (q31_t)0xa03d9fc8, (q31_t)0x54dcdc96, (q31_t)0xa02cf444, + (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x54b734ba, (q31_t)0xa00ba853, (q31_t)0x54a45be6, (q31_t)0x9ffb07e7, (q31_t)0x54917fce, (q31_t)0x9fea6b2f, + (q31_t)0x547ea073, (q31_t)0x9fd9d22a, (q31_t)0x546bbdd7, (q31_t)0x9fc93cdb, (q31_t)0x5458d7f9, (q31_t)0x9fb8ab41, (q31_t)0x5445eedb, (q31_t)0x9fa81d5e, + (q31_t)0x5433027d, (q31_t)0x9f979331, (q31_t)0x542012e1, (q31_t)0x9f870cbc, (q31_t)0x540d2005, (q31_t)0x9f7689ff, (q31_t)0x53fa29ed, (q31_t)0x9f660afb, + (q31_t)0x53e73097, (q31_t)0x9f558fb0, (q31_t)0x53d43406, (q31_t)0x9f45181f, (q31_t)0x53c13439, (q31_t)0x9f34a449, (q31_t)0x53ae3131, (q31_t)0x9f24342f, + (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x53882175, (q31_t)0x9f035f2e, (q31_t)0x537514c2, (q31_t)0x9ef2fa49, (q31_t)0x536204d7, (q31_t)0x9ee29922, + (q31_t)0x534ef1b5, (q31_t)0x9ed23bb9, (q31_t)0x533bdb5d, (q31_t)0x9ec1e210, (q31_t)0x5328c1d0, (q31_t)0x9eb18c26, (q31_t)0x5315a50e, (q31_t)0x9ea139fd, + (q31_t)0x53028518, (q31_t)0x9e90eb94, (q31_t)0x52ef61ee, (q31_t)0x9e80a0ee, (q31_t)0x52dc3b92, (q31_t)0x9e705a09, (q31_t)0x52c91204, (q31_t)0x9e6016e8, + (q31_t)0x52b5e546, (q31_t)0x9e4fd78a, (q31_t)0x52a2b556, (q31_t)0x9e3f9bf0, (q31_t)0x528f8238, (q31_t)0x9e2f641b, (q31_t)0x527c4bea, (q31_t)0x9e1f300b, + (q31_t)0x5269126e, (q31_t)0x9e0effc1, (q31_t)0x5255d5c5, (q31_t)0x9dfed33e, (q31_t)0x524295f0, (q31_t)0x9deeaa82, (q31_t)0x522f52ee, (q31_t)0x9dde858e, + (q31_t)0x521c0cc2, (q31_t)0x9dce6463, (q31_t)0x5208c36a, (q31_t)0x9dbe4701, (q31_t)0x51f576ea, (q31_t)0x9dae2d68, (q31_t)0x51e22740, (q31_t)0x9d9e179a, + (q31_t)0x51ced46e, (q31_t)0x9d8e0597, (q31_t)0x51bb7e75, (q31_t)0x9d7df75f, (q31_t)0x51a82555, (q31_t)0x9d6decf4, (q31_t)0x5194c910, (q31_t)0x9d5de656, + (q31_t)0x518169a5, (q31_t)0x9d4de385, (q31_t)0x516e0715, (q31_t)0x9d3de482, (q31_t)0x515aa162, (q31_t)0x9d2de94d, (q31_t)0x5147388c, (q31_t)0x9d1df1e9, + (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x51205d7b, (q31_t)0x9cfe0e8f, (q31_t)0x510ceb40, (q31_t)0x9cee229c, (q31_t)0x50f975e6, (q31_t)0x9cde3a7b, + (q31_t)0x50e5fd6d, (q31_t)0x9cce562c, (q31_t)0x50d281d5, (q31_t)0x9cbe75b0, (q31_t)0x50bf031f, (q31_t)0x9cae9907, (q31_t)0x50ab814d, (q31_t)0x9c9ec033, + (q31_t)0x5097fc5e, (q31_t)0x9c8eeb34, (q31_t)0x50847454, (q31_t)0x9c7f1a0a, (q31_t)0x5070e92f, (q31_t)0x9c6f4cb6, (q31_t)0x505d5af1, (q31_t)0x9c5f8339, + (q31_t)0x5049c999, (q31_t)0x9c4fbd93, (q31_t)0x50363529, (q31_t)0x9c3ffbc5, (q31_t)0x50229da1, (q31_t)0x9c303dcf, (q31_t)0x500f0302, (q31_t)0x9c2083b3, + (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4fe7c483, (q31_t)0x9c011b08, (q31_t)0x4fd420a4, (q31_t)0x9bf16c7a, (q31_t)0x4fc079b1, (q31_t)0x9be1c1c8, + (q31_t)0x4faccfab, (q31_t)0x9bd21af3, (q31_t)0x4f992293, (q31_t)0x9bc277fa, (q31_t)0x4f857269, (q31_t)0x9bb2d8de, (q31_t)0x4f71bf2e, (q31_t)0x9ba33da0, + (q31_t)0x4f5e08e3, (q31_t)0x9b93a641, (q31_t)0x4f4a4f89, (q31_t)0x9b8412c1, (q31_t)0x4f369320, (q31_t)0x9b748320, (q31_t)0x4f22d3aa, (q31_t)0x9b64f760, + (q31_t)0x4f0f1126, (q31_t)0x9b556f81, (q31_t)0x4efb4b96, (q31_t)0x9b45eb83, (q31_t)0x4ee782fb, (q31_t)0x9b366b68, (q31_t)0x4ed3b755, (q31_t)0x9b26ef2f, + (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4eac16eb, (q31_t)0x9b080268, (q31_t)0x4e984229, (q31_t)0x9af891db, (q31_t)0x4e846a60, (q31_t)0x9ae92533, + (q31_t)0x4e708f8f, (q31_t)0x9ad9bc71, (q31_t)0x4e5cb1b9, (q31_t)0x9aca5795, (q31_t)0x4e48d0dd, (q31_t)0x9abaf6a1, (q31_t)0x4e34ecfc, (q31_t)0x9aab9993, + (q31_t)0x4e210617, (q31_t)0x9a9c406e, (q31_t)0x4e0d1c30, (q31_t)0x9a8ceb31, (q31_t)0x4df92f46, (q31_t)0x9a7d99de, (q31_t)0x4de53f5a, (q31_t)0x9a6e4c74, + (q31_t)0x4dd14c6e, (q31_t)0x9a5f02f5, (q31_t)0x4dbd5682, (q31_t)0x9a4fbd61, (q31_t)0x4da95d96, (q31_t)0x9a407bb9, (q31_t)0x4d9561ac, (q31_t)0x9a313dfc, + (q31_t)0x4d8162c4, (q31_t)0x9a22042d, (q31_t)0x4d6d60df, (q31_t)0x9a12ce4b, (q31_t)0x4d595bfe, (q31_t)0x9a039c57, (q31_t)0x4d455422, (q31_t)0x99f46e51, + (q31_t)0x4d31494b, (q31_t)0x99e5443b, (q31_t)0x4d1d3b7a, (q31_t)0x99d61e14, (q31_t)0x4d092ab0, (q31_t)0x99c6fbde, (q31_t)0x4cf516ee, (q31_t)0x99b7dd99, + (q31_t)0x4ce10034, (q31_t)0x99a8c345, (q31_t)0x4ccce684, (q31_t)0x9999ace3, (q31_t)0x4cb8c9dd, (q31_t)0x998a9a74, (q31_t)0x4ca4aa41, (q31_t)0x997b8bf8, + (q31_t)0x4c9087b1, (q31_t)0x996c816f, (q31_t)0x4c7c622d, (q31_t)0x995d7adc, (q31_t)0x4c6839b7, (q31_t)0x994e783d, (q31_t)0x4c540e4e, (q31_t)0x993f7993, + (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4c2baea9, (q31_t)0x99218824, (q31_t)0x4c177a6e, (q31_t)0x9912955f, (q31_t)0x4c034345, (q31_t)0x9903a691, + (q31_t)0x4bef092d, (q31_t)0x98f4bbbc, (q31_t)0x4bdacc28, (q31_t)0x98e5d4e0, (q31_t)0x4bc68c36, (q31_t)0x98d6f1fe, (q31_t)0x4bb24958, (q31_t)0x98c81316, + (q31_t)0x4b9e0390, (q31_t)0x98b93828, (q31_t)0x4b89badd, (q31_t)0x98aa6136, (q31_t)0x4b756f40, (q31_t)0x989b8e40, (q31_t)0x4b6120bb, (q31_t)0x988cbf46, + (q31_t)0x4b4ccf4d, (q31_t)0x987df449, (q31_t)0x4b387af9, (q31_t)0x986f2d4a, (q31_t)0x4b2423be, (q31_t)0x98606a49, (q31_t)0x4b0fc99d, (q31_t)0x9851ab46, + (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x4ae70caf, (q31_t)0x98343940, (q31_t)0x4ad2a9e2, (q31_t)0x9825863d, (q31_t)0x4abe4433, (q31_t)0x9816d73b, + (q31_t)0x4aa9dba2, (q31_t)0x98082c3b, (q31_t)0x4a957030, (q31_t)0x97f9853d, (q31_t)0x4a8101de, (q31_t)0x97eae242, (q31_t)0x4a6c90ad, (q31_t)0x97dc4349, + (q31_t)0x4a581c9e, (q31_t)0x97cda855, (q31_t)0x4a43a5b0, (q31_t)0x97bf1165, (q31_t)0x4a2f2be6, (q31_t)0x97b07e7a, (q31_t)0x4a1aaf3f, (q31_t)0x97a1ef94, + (q31_t)0x4a062fbd, (q31_t)0x979364b5, (q31_t)0x49f1ad61, (q31_t)0x9784dddc, (q31_t)0x49dd282a, (q31_t)0x97765b0a, (q31_t)0x49c8a01b, (q31_t)0x9767dc41, + (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x499f8774, (q31_t)0x974aeac6, (q31_t)0x498af6df, (q31_t)0x973c7817, (q31_t)0x49766373, (q31_t)0x972e0971, + (q31_t)0x4961cd33, (q31_t)0x971f9ed7, (q31_t)0x494d341e, (q31_t)0x97113847, (q31_t)0x49389836, (q31_t)0x9702d5c3, (q31_t)0x4923f97b, (q31_t)0x96f4774b, + (q31_t)0x490f57ee, (q31_t)0x96e61ce0, (q31_t)0x48fab391, (q31_t)0x96d7c682, (q31_t)0x48e60c62, (q31_t)0x96c97432, (q31_t)0x48d16265, (q31_t)0x96bb25f0, + (q31_t)0x48bcb599, (q31_t)0x96acdbbe, (q31_t)0x48a805ff, (q31_t)0x969e959b, (q31_t)0x48935397, (q31_t)0x96905388, (q31_t)0x487e9e64, (q31_t)0x96821585, + (q31_t)0x4869e665, (q31_t)0x9673db94, (q31_t)0x48552b9b, (q31_t)0x9665a5b4, (q31_t)0x48406e08, (q31_t)0x965773e7, (q31_t)0x482badab, (q31_t)0x9649462d, + (q31_t)0x4816ea86, (q31_t)0x963b1c86, (q31_t)0x48022499, (q31_t)0x962cf6f2, (q31_t)0x47ed5be6, (q31_t)0x961ed574, (q31_t)0x47d8906d, (q31_t)0x9610b80a, + (q31_t)0x47c3c22f, (q31_t)0x96029eb6, (q31_t)0x47aef12c, (q31_t)0x95f48977, (q31_t)0x479a1d67, (q31_t)0x95e67850, (q31_t)0x478546de, (q31_t)0x95d86b3f, + (q31_t)0x47706d93, (q31_t)0x95ca6247, (q31_t)0x475b9188, (q31_t)0x95bc5d66, (q31_t)0x4746b2bc, (q31_t)0x95ae5c9f, (q31_t)0x4731d131, (q31_t)0x95a05ff0, + (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x470805df, (q31_t)0x958472e2, (q31_t)0x46f31c1a, (q31_t)0x95768283, (q31_t)0x46de2f99, (q31_t)0x9568963f, + (q31_t)0x46c9405c, (q31_t)0x955aae17, (q31_t)0x46b44e65, (q31_t)0x954cca0c, (q31_t)0x469f59b4, (q31_t)0x953eea1e, (q31_t)0x468a624a, (q31_t)0x95310e4e, + (q31_t)0x46756828, (q31_t)0x9523369c, (q31_t)0x46606b4e, (q31_t)0x95156308, (q31_t)0x464b6bbe, (q31_t)0x95079394, (q31_t)0x46366978, (q31_t)0x94f9c83f, + (q31_t)0x4621647d, (q31_t)0x94ec010b, (q31_t)0x460c5cce, (q31_t)0x94de3df8, (q31_t)0x45f7526b, (q31_t)0x94d07f05, (q31_t)0x45e24556, (q31_t)0x94c2c435, + (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x45b82318, (q31_t)0x94a75afd, (q31_t)0x45a30df0, (q31_t)0x9499ac95, (q31_t)0x458df619, (q31_t)0x948c0252, + (q31_t)0x4578db93, (q31_t)0x947e5c33, (q31_t)0x4563be60, (q31_t)0x9470ba39, (q31_t)0x454e9e80, (q31_t)0x94631c65, (q31_t)0x45397bf4, (q31_t)0x945582b7, + (q31_t)0x452456bd, (q31_t)0x9447ed2f, (q31_t)0x450f2edb, (q31_t)0x943a5bcf, (q31_t)0x44fa0450, (q31_t)0x942cce96, (q31_t)0x44e4d71c, (q31_t)0x941f4585, + (q31_t)0x44cfa740, (q31_t)0x9411c09e, (q31_t)0x44ba74bd, (q31_t)0x94043fdf, (q31_t)0x44a53f93, (q31_t)0x93f6c34a, (q31_t)0x449007c4, (q31_t)0x93e94adf, + (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x44659039, (q31_t)0x93ce668b, (q31_t)0x4450507e, (q31_t)0x93c0faa3, (q31_t)0x443b0e21, (q31_t)0x93b392e6, + (q31_t)0x4425c923, (q31_t)0x93a62f57, (q31_t)0x44108184, (q31_t)0x9398cff5, (q31_t)0x43fb3746, (q31_t)0x938b74c1, (q31_t)0x43e5ea68, (q31_t)0x937e1dbb, + (q31_t)0x43d09aed, (q31_t)0x9370cae4, (q31_t)0x43bb48d4, (q31_t)0x93637c3d, (q31_t)0x43a5f41e, (q31_t)0x935631c5, (q31_t)0x43909ccd, (q31_t)0x9348eb7e, + (q31_t)0x437b42e1, (q31_t)0x933ba968, (q31_t)0x4365e65b, (q31_t)0x932e6b84, (q31_t)0x4350873c, (q31_t)0x932131d1, (q31_t)0x433b2585, (q31_t)0x9313fc51, + (q31_t)0x4325c135, (q31_t)0x9306cb04, (q31_t)0x43105a50, (q31_t)0x92f99deb, (q31_t)0x42faf0d4, (q31_t)0x92ec7505, (q31_t)0x42e584c3, (q31_t)0x92df5054, + (q31_t)0x42d0161e, (q31_t)0x92d22fd9, (q31_t)0x42baa4e6, (q31_t)0x92c51392, (q31_t)0x42a5311b, (q31_t)0x92b7fb82, (q31_t)0x428fbabe, (q31_t)0x92aae7a8, + (q31_t)0x427a41d0, (q31_t)0x929dd806, (q31_t)0x4264c653, (q31_t)0x9290cc9b, (q31_t)0x424f4845, (q31_t)0x9283c568, (q31_t)0x4239c7aa, (q31_t)0x9276c26d, + (q31_t)0x42244481, (q31_t)0x9269c3ac, (q31_t)0x420ebecb, (q31_t)0x925cc924, (q31_t)0x41f93689, (q31_t)0x924fd2d7, (q31_t)0x41e3abbc, (q31_t)0x9242e0c4, + (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x41b88e84, (q31_t)0x9229094f, (q31_t)0x41a2fc1a, (q31_t)0x921c23ef, (q31_t)0x418d6729, (q31_t)0x920f42cb, + (q31_t)0x4177cfb1, (q31_t)0x920265e4, (q31_t)0x416235b2, (q31_t)0x91f58d3b, (q31_t)0x414c992f, (q31_t)0x91e8b8d0, (q31_t)0x4136fa27, (q31_t)0x91dbe8a4, + (q31_t)0x4121589b, (q31_t)0x91cf1cb6, (q31_t)0x410bb48c, (q31_t)0x91c25508, (q31_t)0x40f60dfb, (q31_t)0x91b5919a, (q31_t)0x40e064ea, (q31_t)0x91a8d26d, + (q31_t)0x40cab958, (q31_t)0x919c1781, (q31_t)0x40b50b46, (q31_t)0x918f60d6, (q31_t)0x409f5ab6, (q31_t)0x9182ae6d, (q31_t)0x4089a7a8, (q31_t)0x91760047, + (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x405e3a16, (q31_t)0x915cb0c3, (q31_t)0x40487f94, (q31_t)0x91500f67, (q31_t)0x4032c297, (q31_t)0x91437250, + (q31_t)0x401d0321, (q31_t)0x9136d97d, (q31_t)0x40074132, (q31_t)0x912a44f0, (q31_t)0x3ff17cca, (q31_t)0x911db4a9, (q31_t)0x3fdbb5ec, (q31_t)0x911128a8, + (q31_t)0x3fc5ec98, (q31_t)0x9104a0ee, (q31_t)0x3fb020ce, (q31_t)0x90f81d7b, (q31_t)0x3f9a5290, (q31_t)0x90eb9e50, (q31_t)0x3f8481dd, (q31_t)0x90df236e, + (q31_t)0x3f6eaeb8, (q31_t)0x90d2acd4, (q31_t)0x3f58d921, (q31_t)0x90c63a83, (q31_t)0x3f430119, (q31_t)0x90b9cc7d, (q31_t)0x3f2d26a0, (q31_t)0x90ad62c0, + (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3f016a61, (q31_t)0x90949c28, (q31_t)0x3eeb889c, (q31_t)0x90883f4d, (q31_t)0x3ed5a46b, (q31_t)0x907be6be, + (q31_t)0x3ebfbdcd, (q31_t)0x906f927c, (q31_t)0x3ea9d4c3, (q31_t)0x90634287, (q31_t)0x3e93e950, (q31_t)0x9056f6df, (q31_t)0x3e7dfb73, (q31_t)0x904aaf86, + (q31_t)0x3e680b2c, (q31_t)0x903e6c7b, (q31_t)0x3e52187f, (q31_t)0x90322dbf, (q31_t)0x3e3c2369, (q31_t)0x9025f352, (q31_t)0x3e262bee, (q31_t)0x9019bd36, + (q31_t)0x3e10320d, (q31_t)0x900d8b69, (q31_t)0x3dfa35c8, (q31_t)0x90015dee, (q31_t)0x3de4371f, (q31_t)0x8ff534c4, (q31_t)0x3dce3614, (q31_t)0x8fe90fec, + (q31_t)0x3db832a6, (q31_t)0x8fdcef66, (q31_t)0x3da22cd7, (q31_t)0x8fd0d333, (q31_t)0x3d8c24a8, (q31_t)0x8fc4bb53, (q31_t)0x3d761a19, (q31_t)0x8fb8a7c7, + (q31_t)0x3d600d2c, (q31_t)0x8fac988f, (q31_t)0x3d49fde1, (q31_t)0x8fa08dab, (q31_t)0x3d33ec39, (q31_t)0x8f94871d, (q31_t)0x3d1dd835, (q31_t)0x8f8884e4, + (q31_t)0x3d07c1d6, (q31_t)0x8f7c8701, (q31_t)0x3cf1a91c, (q31_t)0x8f708d75, (q31_t)0x3cdb8e09, (q31_t)0x8f649840, (q31_t)0x3cc5709e, (q31_t)0x8f58a761, + (q31_t)0x3caf50da, (q31_t)0x8f4cbadb, (q31_t)0x3c992ec0, (q31_t)0x8f40d2ad, (q31_t)0x3c830a50, (q31_t)0x8f34eed8, (q31_t)0x3c6ce38a, (q31_t)0x8f290f5c, + (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3c408f03, (q31_t)0x8f115d72, (q31_t)0x3c2a6142, (q31_t)0x8f058b04, (q31_t)0x3c143130, (q31_t)0x8ef9bcf2, + (q31_t)0x3bfdfecd, (q31_t)0x8eedf33b, (q31_t)0x3be7ca1a, (q31_t)0x8ee22de0, (q31_t)0x3bd19318, (q31_t)0x8ed66ce1, (q31_t)0x3bbb59c7, (q31_t)0x8ecab040, + (q31_t)0x3ba51e29, (q31_t)0x8ebef7fb, (q31_t)0x3b8ee03e, (q31_t)0x8eb34415, (q31_t)0x3b78a007, (q31_t)0x8ea7948c, (q31_t)0x3b625d86, (q31_t)0x8e9be963, + (q31_t)0x3b4c18ba, (q31_t)0x8e904298, (q31_t)0x3b35d1a5, (q31_t)0x8e84a02d, (q31_t)0x3b1f8848, (q31_t)0x8e790222, (q31_t)0x3b093ca3, (q31_t)0x8e6d6877, + (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x3adc9e86, (q31_t)0x8e564246, (q31_t)0x3ac64c0f, (q31_t)0x8e4ab5bf, (q31_t)0x3aaff755, (q31_t)0x8e3f2d9b, + (q31_t)0x3a99a057, (q31_t)0x8e33a9da, (q31_t)0x3a834717, (q31_t)0x8e282a7b, (q31_t)0x3a6ceb96, (q31_t)0x8e1caf80, (q31_t)0x3a568dd4, (q31_t)0x8e1138ea, + (q31_t)0x3a402dd2, (q31_t)0x8e05c6b7, (q31_t)0x3a29cb91, (q31_t)0x8dfa58ea, (q31_t)0x3a136712, (q31_t)0x8deeef82, (q31_t)0x39fd0056, (q31_t)0x8de38a80, + (q31_t)0x39e6975e, (q31_t)0x8dd829e4, (q31_t)0x39d02c2a, (q31_t)0x8dcccdaf, (q31_t)0x39b9bebc, (q31_t)0x8dc175e0, (q31_t)0x39a34f13, (q31_t)0x8db6227a, + (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x39766919, (q31_t)0x8d9f88e5, (q31_t)0x395ff2c9, (q31_t)0x8d9442b8, (q31_t)0x39497a43, (q31_t)0x8d8900f3, + (q31_t)0x3932ff87, (q31_t)0x8d7dc399, (q31_t)0x391c8297, (q31_t)0x8d728aa9, (q31_t)0x39060373, (q31_t)0x8d675623, (q31_t)0x38ef821c, (q31_t)0x8d5c2609, + (q31_t)0x38d8fe93, (q31_t)0x8d50fa59, (q31_t)0x38c278d9, (q31_t)0x8d45d316, (q31_t)0x38abf0ef, (q31_t)0x8d3ab03f, (q31_t)0x389566d6, (q31_t)0x8d2f91d5, + (q31_t)0x387eda8e, (q31_t)0x8d2477d8, (q31_t)0x38684c19, (q31_t)0x8d196249, (q31_t)0x3851bb77, (q31_t)0x8d0e5127, (q31_t)0x383b28a9, (q31_t)0x8d034474, + (q31_t)0x382493b0, (q31_t)0x8cf83c30, (q31_t)0x380dfc8d, (q31_t)0x8ced385b, (q31_t)0x37f76341, (q31_t)0x8ce238f6, (q31_t)0x37e0c7cc, (q31_t)0x8cd73e01, + (q31_t)0x37ca2a30, (q31_t)0x8ccc477d, (q31_t)0x37b38a6d, (q31_t)0x8cc1556a, (q31_t)0x379ce885, (q31_t)0x8cb667c8, (q31_t)0x37864477, (q31_t)0x8cab7e98, + (q31_t)0x376f9e46, (q31_t)0x8ca099da, (q31_t)0x3758f5f2, (q31_t)0x8c95b98f, (q31_t)0x37424b7b, (q31_t)0x8c8addb7, (q31_t)0x372b9ee3, (q31_t)0x8c800652, + (q31_t)0x3714f02a, (q31_t)0x8c753362, (q31_t)0x36fe3f52, (q31_t)0x8c6a64e5, (q31_t)0x36e78c5b, (q31_t)0x8c5f9ade, (q31_t)0x36d0d746, (q31_t)0x8c54d54c, + (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x36a366c6, (q31_t)0x8c3f5788, (q31_t)0x368cab5c, (q31_t)0x8c349f58, (q31_t)0x3675edd9, (q31_t)0x8c29eb9f, + (q31_t)0x365f2e3b, (q31_t)0x8c1f3c5d, (q31_t)0x36486c86, (q31_t)0x8c149192, (q31_t)0x3631a8b8, (q31_t)0x8c09eb40, (q31_t)0x361ae2d3, (q31_t)0x8bff4966, + (q31_t)0x36041ad9, (q31_t)0x8bf4ac05, (q31_t)0x35ed50c9, (q31_t)0x8bea131e, (q31_t)0x35d684a6, (q31_t)0x8bdf7eb0, (q31_t)0x35bfb66e, (q31_t)0x8bd4eebc, + (q31_t)0x35a8e625, (q31_t)0x8bca6343, (q31_t)0x359213c9, (q31_t)0x8bbfdc44, (q31_t)0x357b3f5d, (q31_t)0x8bb559c1, (q31_t)0x356468e2, (q31_t)0x8baadbba, + (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x3536b5be, (q31_t)0x8b95ed21, (q31_t)0x351fd918, (q31_t)0x8b8b7c8f, (q31_t)0x3508fa66, (q31_t)0x8b81107b, + (q31_t)0x34f219a8, (q31_t)0x8b76a8e4, (q31_t)0x34db36df, (q31_t)0x8b6c45cc, (q31_t)0x34c4520d, (q31_t)0x8b61e733, (q31_t)0x34ad6b32, (q31_t)0x8b578d18, + (q31_t)0x34968250, (q31_t)0x8b4d377c, (q31_t)0x347f9766, (q31_t)0x8b42e661, (q31_t)0x3468aa76, (q31_t)0x8b3899c6, (q31_t)0x3451bb81, (q31_t)0x8b2e51ab, + (q31_t)0x343aca87, (q31_t)0x8b240e11, (q31_t)0x3423d78a, (q31_t)0x8b19cef8, (q31_t)0x340ce28b, (q31_t)0x8b0f9462, (q31_t)0x33f5eb89, (q31_t)0x8b055e4d, + (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x33c7f785, (q31_t)0x8af0ffac, (q31_t)0x33b0fa84, (q31_t)0x8ae6d720, (q31_t)0x3399fb85, (q31_t)0x8adcb318, + (q31_t)0x3382fa88, (q31_t)0x8ad29394, (q31_t)0x336bf78f, (q31_t)0x8ac87894, (q31_t)0x3354f29b, (q31_t)0x8abe6219, (q31_t)0x333debab, (q31_t)0x8ab45024, + (q31_t)0x3326e2c3, (q31_t)0x8aaa42b4, (q31_t)0x330fd7e1, (q31_t)0x8aa039cb, (q31_t)0x32f8cb07, (q31_t)0x8a963567, (q31_t)0x32e1bc36, (q31_t)0x8a8c358b, + (q31_t)0x32caab6f, (q31_t)0x8a823a36, (q31_t)0x32b398b3, (q31_t)0x8a784368, (q31_t)0x329c8402, (q31_t)0x8a6e5123, (q31_t)0x32856d5e, (q31_t)0x8a646365, + (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, (q31_t)0x32573a3f, (q31_t)0x8a509585, (q31_t)0x32401dc6, (q31_t)0x8a46b564, (q31_t)0x3228ff5c, (q31_t)0x8a3cd9cc, + (q31_t)0x3211df04, (q31_t)0x8a3302be, (q31_t)0x31fabcbd, (q31_t)0x8a29303b, (q31_t)0x31e39889, (q31_t)0x8a1f6243, (q31_t)0x31cc7269, (q31_t)0x8a1598d6, + (q31_t)0x31b54a5e, (q31_t)0x8a0bd3f5, (q31_t)0x319e2067, (q31_t)0x8a0213a0, (q31_t)0x3186f487, (q31_t)0x89f857d8, (q31_t)0x316fc6be, (q31_t)0x89eea09d, + (q31_t)0x3158970e, (q31_t)0x89e4edef, (q31_t)0x31416576, (q31_t)0x89db3fcf, (q31_t)0x312a31f8, (q31_t)0x89d1963c, (q31_t)0x3112fc95, (q31_t)0x89c7f138, + (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x30e48c22, (q31_t)0x89b4b4dd, (q31_t)0x30cd5115, (q31_t)0x89ab1d87, (q31_t)0x30b61426, (q31_t)0x89a18ac0, + (q31_t)0x309ed556, (q31_t)0x8997fc8a, (q31_t)0x308794a6, (q31_t)0x898e72e4, (q31_t)0x30705217, (q31_t)0x8984edcf, (q31_t)0x30590dab, (q31_t)0x897b6d4c, + (q31_t)0x3041c761, (q31_t)0x8971f15a, (q31_t)0x302a7f3a, (q31_t)0x896879fb, (q31_t)0x30133539, (q31_t)0x895f072e, (q31_t)0x2ffbe95d, (q31_t)0x895598f3, + (q31_t)0x2fe49ba7, (q31_t)0x894c2f4c, (q31_t)0x2fcd4c19, (q31_t)0x8942ca39, (q31_t)0x2fb5fab2, (q31_t)0x893969b9, (q31_t)0x2f9ea775, (q31_t)0x89300dce, + (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2f6ffb7a, (q31_t)0x891d63b5, (q31_t)0x2f58a2be, (q31_t)0x89141589, (q31_t)0x2f41482e, (q31_t)0x890acbf2, + (q31_t)0x2f29ebcc, (q31_t)0x890186f2, (q31_t)0x2f128d99, (q31_t)0x88f84687, (q31_t)0x2efb2d95, (q31_t)0x88ef0ab4, (q31_t)0x2ee3cbc1, (q31_t)0x88e5d378, + (q31_t)0x2ecc681e, (q31_t)0x88dca0d3, (q31_t)0x2eb502ae, (q31_t)0x88d372c6, (q31_t)0x2e9d9b70, (q31_t)0x88ca4951, (q31_t)0x2e863267, (q31_t)0x88c12475, + (q31_t)0x2e6ec792, (q31_t)0x88b80432, (q31_t)0x2e575af3, (q31_t)0x88aee888, (q31_t)0x2e3fec8b, (q31_t)0x88a5d177, (q31_t)0x2e287c5a, (q31_t)0x889cbf01, + (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2df996a3, (q31_t)0x888aa7e3, (q31_t)0x2de2211e, (q31_t)0x8881a33d, (q31_t)0x2dcaa9d5, (q31_t)0x8878a332, + (q31_t)0x2db330c7, (q31_t)0x886fa7c2, (q31_t)0x2d9bb5f6, (q31_t)0x8866b0ef, (q31_t)0x2d843964, (q31_t)0x885dbeb8, (q31_t)0x2d6cbb10, (q31_t)0x8854d11e, + (q31_t)0x2d553afc, (q31_t)0x884be821, (q31_t)0x2d3db928, (q31_t)0x884303c1, (q31_t)0x2d263596, (q31_t)0x883a23ff, (q31_t)0x2d0eb046, (q31_t)0x883148db, + (q31_t)0x2cf72939, (q31_t)0x88287256, (q31_t)0x2cdfa071, (q31_t)0x881fa06f, (q31_t)0x2cc815ee, (q31_t)0x8816d327, (q31_t)0x2cb089b1, (q31_t)0x880e0a7f, + (q31_t)0x2c98fbba, (q31_t)0x88054677, (q31_t)0x2c816c0c, (q31_t)0x87fc870f, (q31_t)0x2c69daa6, (q31_t)0x87f3cc48, (q31_t)0x2c52478a, (q31_t)0x87eb1621, + (q31_t)0x2c3ab2b9, (q31_t)0x87e2649b, (q31_t)0x2c231c33, (q31_t)0x87d9b7b7, (q31_t)0x2c0b83fa, (q31_t)0x87d10f75, (q31_t)0x2bf3ea0d, (q31_t)0x87c86bd5, + (q31_t)0x2bdc4e6f, (q31_t)0x87bfccd7, (q31_t)0x2bc4b120, (q31_t)0x87b7327d, (q31_t)0x2bad1221, (q31_t)0x87ae9cc5, (q31_t)0x2b957173, (q31_t)0x87a60bb1, + (q31_t)0x2b7dcf17, (q31_t)0x879d7f41, (q31_t)0x2b662b0e, (q31_t)0x8794f774, (q31_t)0x2b4e8558, (q31_t)0x878c744d, (q31_t)0x2b36ddf7, (q31_t)0x8783f5ca, + (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x2b078a36, (q31_t)0x877306b4, (q31_t)0x2aefddd8, (q31_t)0x876a9621, (q31_t)0x2ad82fd2, (q31_t)0x87622a35, + (q31_t)0x2ac08026, (q31_t)0x8759c2ef, (q31_t)0x2aa8ced3, (q31_t)0x87516050, (q31_t)0x2a911bdc, (q31_t)0x87490258, (q31_t)0x2a796740, (q31_t)0x8740a907, + (q31_t)0x2a61b101, (q31_t)0x8738545e, (q31_t)0x2a49f920, (q31_t)0x8730045d, (q31_t)0x2a323f9e, (q31_t)0x8727b905, (q31_t)0x2a1a847b, (q31_t)0x871f7255, + (q31_t)0x2a02c7b8, (q31_t)0x8717304e, (q31_t)0x29eb0957, (q31_t)0x870ef2f1, (q31_t)0x29d34958, (q31_t)0x8706ba3d, (q31_t)0x29bb87bc, (q31_t)0x86fe8633, + (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x298bffb2, (q31_t)0x86ee2c1e, (q31_t)0x29743946, (q31_t)0x86e60614, (q31_t)0x295c7140, (q31_t)0x86dde4b5, + (q31_t)0x2944a7a2, (q31_t)0x86d5c802, (q31_t)0x292cdc6d, (q31_t)0x86cdaffa, (q31_t)0x29150fa1, (q31_t)0x86c59c9f, (q31_t)0x28fd4140, (q31_t)0x86bd8df0, + (q31_t)0x28e5714b, (q31_t)0x86b583ee, (q31_t)0x28cd9fc1, (q31_t)0x86ad7e99, (q31_t)0x28b5cca5, (q31_t)0x86a57df2, (q31_t)0x289df7f8, (q31_t)0x869d81f8, + (q31_t)0x288621b9, (q31_t)0x86958aac, (q31_t)0x286e49ea, (q31_t)0x868d980e, (q31_t)0x2856708d, (q31_t)0x8685aa20, (q31_t)0x283e95a1, (q31_t)0x867dc0e0, + (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x280edb23, (q31_t)0x866dfc6e, (q31_t)0x27f6fb92, (q31_t)0x8666213c, (q31_t)0x27df1a77, (q31_t)0x865e4abb, + (q31_t)0x27c737d3, (q31_t)0x865678eb, (q31_t)0x27af53a6, (q31_t)0x864eabcb, (q31_t)0x27976df1, (q31_t)0x8646e35c, (q31_t)0x277f86b5, (q31_t)0x863f1f9e, + (q31_t)0x27679df4, (q31_t)0x86376092, (q31_t)0x274fb3ae, (q31_t)0x862fa638, (q31_t)0x2737c7e3, (q31_t)0x8627f091, (q31_t)0x271fda96, (q31_t)0x86203f9c, + (q31_t)0x2707ebc7, (q31_t)0x86189359, (q31_t)0x26effb76, (q31_t)0x8610ebca, (q31_t)0x26d809a5, (q31_t)0x860948ef, (q31_t)0x26c01655, (q31_t)0x8601aac7, + (q31_t)0x26a82186, (q31_t)0x85fa1153, (q31_t)0x26902b39, (q31_t)0x85f27c93, (q31_t)0x26783370, (q31_t)0x85eaec88, (q31_t)0x26603a2c, (q31_t)0x85e36132, + (q31_t)0x26483f6c, (q31_t)0x85dbda91, (q31_t)0x26304333, (q31_t)0x85d458a6, (q31_t)0x26184581, (q31_t)0x85ccdb70, (q31_t)0x26004657, (q31_t)0x85c562f1, + (q31_t)0x25e845b6, (q31_t)0x85bdef28, (q31_t)0x25d0439f, (q31_t)0x85b68015, (q31_t)0x25b84012, (q31_t)0x85af15b9, (q31_t)0x25a03b11, (q31_t)0x85a7b015, + (q31_t)0x2588349d, (q31_t)0x85a04f28, (q31_t)0x25702cb7, (q31_t)0x8598f2f3, (q31_t)0x2558235f, (q31_t)0x85919b76, (q31_t)0x25401896, (q31_t)0x858a48b1, + (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x250ffeb7, (q31_t)0x857bb152, (q31_t)0x24f7efa2, (q31_t)0x85746cb8, (q31_t)0x24dfdf20, (q31_t)0x856d2cd7, + (q31_t)0x24c7cd33, (q31_t)0x8565f1b0, (q31_t)0x24afb9da, (q31_t)0x855ebb44, (q31_t)0x2497a517, (q31_t)0x85578991, (q31_t)0x247f8eec, (q31_t)0x85505c99, + (q31_t)0x24677758, (q31_t)0x8549345c, (q31_t)0x244f5e5c, (q31_t)0x854210db, (q31_t)0x243743fa, (q31_t)0x853af214, (q31_t)0x241f2833, (q31_t)0x8533d809, + (q31_t)0x24070b08, (q31_t)0x852cc2bb, (q31_t)0x23eeec78, (q31_t)0x8525b228, (q31_t)0x23d6cc87, (q31_t)0x851ea652, (q31_t)0x23beab33, (q31_t)0x85179f39, + (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x238e646a, (q31_t)0x85099f3e, (q31_t)0x23763ef7, (q31_t)0x8502a65c, (q31_t)0x235e1826, (q31_t)0x84fbb239, + (q31_t)0x2345eff8, (q31_t)0x84f4c2d4, (q31_t)0x232dc66d, (q31_t)0x84edd82d, (q31_t)0x23159b88, (q31_t)0x84e6f244, (q31_t)0x22fd6f48, (q31_t)0x84e0111b, + (q31_t)0x22e541af, (q31_t)0x84d934b1, (q31_t)0x22cd12bd, (q31_t)0x84d25d06, (q31_t)0x22b4e274, (q31_t)0x84cb8a1b, (q31_t)0x229cb0d5, (q31_t)0x84c4bbf0, + (q31_t)0x22847de0, (q31_t)0x84bdf286, (q31_t)0x226c4996, (q31_t)0x84b72ddb, (q31_t)0x225413f8, (q31_t)0x84b06df2, (q31_t)0x223bdd08, (q31_t)0x84a9b2ca, + (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x220b6b32, (q31_t)0x849c4abd, (q31_t)0x21f3304f, (q31_t)0x84959dd9, (q31_t)0x21daf41d, (q31_t)0x848ef5b7, + (q31_t)0x21c2b69c, (q31_t)0x84885258, (q31_t)0x21aa77cf, (q31_t)0x8481b3bb, (q31_t)0x219237b5, (q31_t)0x847b19e1, (q31_t)0x2179f64f, (q31_t)0x847484ca, + (q31_t)0x2161b3a0, (q31_t)0x846df477, (q31_t)0x21496fa7, (q31_t)0x846768e7, (q31_t)0x21312a65, (q31_t)0x8460e21a, (q31_t)0x2118e3dc, (q31_t)0x845a6012, + (q31_t)0x21009c0c, (q31_t)0x8453e2cf, (q31_t)0x20e852f6, (q31_t)0x844d6a50, (q31_t)0x20d0089c, (q31_t)0x8446f695, (q31_t)0x20b7bcfe, (q31_t)0x844087a0, + (q31_t)0x209f701c, (q31_t)0x843a1d70, (q31_t)0x208721f9, (q31_t)0x8433b806, (q31_t)0x206ed295, (q31_t)0x842d5762, (q31_t)0x205681f1, (q31_t)0x8426fb84, + (q31_t)0x203e300d, (q31_t)0x8420a46c, (q31_t)0x2025dcec, (q31_t)0x841a521a, (q31_t)0x200d888d, (q31_t)0x84140490, (q31_t)0x1ff532f2, (q31_t)0x840dbbcc, + (q31_t)0x1fdcdc1b, (q31_t)0x840777d0, (q31_t)0x1fc4840a, (q31_t)0x8401389b, (q31_t)0x1fac2abf, (q31_t)0x83fafe2e, (q31_t)0x1f93d03c, (q31_t)0x83f4c889, + (q31_t)0x1f7b7481, (q31_t)0x83ee97ad, (q31_t)0x1f63178f, (q31_t)0x83e86b99, (q31_t)0x1f4ab968, (q31_t)0x83e2444d, (q31_t)0x1f325a0b, (q31_t)0x83dc21cb, + (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1f0197b8, (q31_t)0x83cfeb22, (q31_t)0x1ee934c3, (q31_t)0x83c9d6fc, (q31_t)0x1ed0d09d, (q31_t)0x83c3c7a0, + (q31_t)0x1eb86b46, (q31_t)0x83bdbd0e, (q31_t)0x1ea004c1, (q31_t)0x83b7b746, (q31_t)0x1e879d0d, (q31_t)0x83b1b649, (q31_t)0x1e6f342c, (q31_t)0x83abba17, + (q31_t)0x1e56ca1e, (q31_t)0x83a5c2b0, (q31_t)0x1e3e5ee5, (q31_t)0x839fd014, (q31_t)0x1e25f282, (q31_t)0x8399e244, (q31_t)0x1e0d84f5, (q31_t)0x8393f940, + (q31_t)0x1df5163f, (q31_t)0x838e1507, (q31_t)0x1ddca662, (q31_t)0x8388359b, (q31_t)0x1dc4355e, (q31_t)0x83825afb, (q31_t)0x1dabc334, (q31_t)0x837c8528, + (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1d7adb73, (q31_t)0x8370e7e9, (q31_t)0x1d6265dd, (q31_t)0x836b207d, (q31_t)0x1d49ef26, (q31_t)0x83655ddf, + (q31_t)0x1d31774d, (q31_t)0x835fa00f, (q31_t)0x1d18fe54, (q31_t)0x8359e70d, (q31_t)0x1d00843d, (q31_t)0x835432d8, (q31_t)0x1ce80906, (q31_t)0x834e8373, + (q31_t)0x1ccf8cb3, (q31_t)0x8348d8dc, (q31_t)0x1cb70f43, (q31_t)0x83433314, (q31_t)0x1c9e90b8, (q31_t)0x833d921b, (q31_t)0x1c861113, (q31_t)0x8337f5f1, + (q31_t)0x1c6d9053, (q31_t)0x83325e97, (q31_t)0x1c550e7c, (q31_t)0x832ccc0d, (q31_t)0x1c3c8b8c, (q31_t)0x83273e52, (q31_t)0x1c240786, (q31_t)0x8321b568, + (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1bf2fc3a, (q31_t)0x8316b205, (q31_t)0x1bda74f6, (q31_t)0x8311378d, (q31_t)0x1bc1ec9e, (q31_t)0x830bc1e6, + (q31_t)0x1ba96335, (q31_t)0x83065110, (q31_t)0x1b90d8bb, (q31_t)0x8300e50b, (q31_t)0x1b784d30, (q31_t)0x82fb7dd8, (q31_t)0x1b5fc097, (q31_t)0x82f61b77, + (q31_t)0x1b4732ef, (q31_t)0x82f0bde8, (q31_t)0x1b2ea43a, (q31_t)0x82eb652b, (q31_t)0x1b161479, (q31_t)0x82e61141, (q31_t)0x1afd83ad, (q31_t)0x82e0c22a, + (q31_t)0x1ae4f1d6, (q31_t)0x82db77e5, (q31_t)0x1acc5ef6, (q31_t)0x82d63274, (q31_t)0x1ab3cb0d, (q31_t)0x82d0f1d5, (q31_t)0x1a9b361d, (q31_t)0x82cbb60b, + (q31_t)0x1a82a026, (q31_t)0x82c67f14, (q31_t)0x1a6a0929, (q31_t)0x82c14cf1, (q31_t)0x1a517128, (q31_t)0x82bc1fa2, (q31_t)0x1a38d823, (q31_t)0x82b6f727, + (q31_t)0x1a203e1b, (q31_t)0x82b1d381, (q31_t)0x1a07a311, (q31_t)0x82acb4b0, (q31_t)0x19ef0707, (q31_t)0x82a79ab3, (q31_t)0x19d669fc, (q31_t)0x82a2858c, + (q31_t)0x19bdcbf3, (q31_t)0x829d753a, (q31_t)0x19a52ceb, (q31_t)0x829869be, (q31_t)0x198c8ce7, (q31_t)0x82936317, (q31_t)0x1973ebe6, (q31_t)0x828e6146, + (q31_t)0x195b49ea, (q31_t)0x8289644b, (q31_t)0x1942a6f3, (q31_t)0x82846c26, (q31_t)0x192a0304, (q31_t)0x827f78d8, (q31_t)0x19115e1c, (q31_t)0x827a8a61, + (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x18e01167, (q31_t)0x8270bbf7, (q31_t)0x18c7699b, (q31_t)0x826bdc04, (q31_t)0x18aec0db, (q31_t)0x826700e9, + (q31_t)0x18961728, (q31_t)0x82622aa6, (q31_t)0x187d6c82, (q31_t)0x825d593a, (q31_t)0x1864c0ea, (q31_t)0x82588ca7, (q31_t)0x184c1461, (q31_t)0x8253c4eb, + (q31_t)0x183366e9, (q31_t)0x824f0208, (q31_t)0x181ab881, (q31_t)0x824a43fe, (q31_t)0x1802092c, (q31_t)0x82458acc, (q31_t)0x17e958ea, (q31_t)0x8240d673, + (q31_t)0x17d0a7bc, (q31_t)0x823c26f3, (q31_t)0x17b7f5a3, (q31_t)0x82377c4c, (q31_t)0x179f429f, (q31_t)0x8232d67f, (q31_t)0x17868eb3, (q31_t)0x822e358b, + (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x17552422, (q31_t)0x82250232, (q31_t)0x173c6d80, (q31_t)0x82206fcc, (q31_t)0x1723b5f9, (q31_t)0x821be240, + (q31_t)0x170afd8d, (q31_t)0x82175990, (q31_t)0x16f2443e, (q31_t)0x8212d5b9, (q31_t)0x16d98a0c, (q31_t)0x820e56be, (q31_t)0x16c0cef9, (q31_t)0x8209dc9e, + (q31_t)0x16a81305, (q31_t)0x82056758, (q31_t)0x168f5632, (q31_t)0x8200f6ef, (q31_t)0x1676987f, (q31_t)0x81fc8b60, (q31_t)0x165dd9f0, (q31_t)0x81f824ae, + (q31_t)0x16451a83, (q31_t)0x81f3c2d7, (q31_t)0x162c5a3b, (q31_t)0x81ef65dc, (q31_t)0x16139918, (q31_t)0x81eb0dbe, (q31_t)0x15fad71b, (q31_t)0x81e6ba7c, + (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x15c95097, (q31_t)0x81de228d, (q31_t)0x15b08c12, (q31_t)0x81d9dde1, (q31_t)0x1597c6b7, (q31_t)0x81d59e13, + (q31_t)0x157f0086, (q31_t)0x81d16321, (q31_t)0x15663982, (q31_t)0x81cd2d0c, (q31_t)0x154d71aa, (q31_t)0x81c8fbd6, (q31_t)0x1534a901, (q31_t)0x81c4cf7d, + (q31_t)0x151bdf86, (q31_t)0x81c0a801, (q31_t)0x1503153a, (q31_t)0x81bc8564, (q31_t)0x14ea4a1f, (q31_t)0x81b867a5, (q31_t)0x14d17e36, (q31_t)0x81b44ec4, + (q31_t)0x14b8b17f, (q31_t)0x81b03ac2, (q31_t)0x149fe3fc, (q31_t)0x81ac2b9e, (q31_t)0x148715ae, (q31_t)0x81a82159, (q31_t)0x146e4694, (q31_t)0x81a41bf4, + (q31_t)0x145576b1, (q31_t)0x81a01b6d, (q31_t)0x143ca605, (q31_t)0x819c1fc5, (q31_t)0x1423d492, (q31_t)0x819828fd, (q31_t)0x140b0258, (q31_t)0x81943715, + (q31_t)0x13f22f58, (q31_t)0x81904a0c, (q31_t)0x13d95b93, (q31_t)0x818c61e3, (q31_t)0x13c0870a, (q31_t)0x81887e9a, (q31_t)0x13a7b1bf, (q31_t)0x8184a032, + (q31_t)0x138edbb1, (q31_t)0x8180c6a9, (q31_t)0x137604e2, (q31_t)0x817cf201, (q31_t)0x135d2d53, (q31_t)0x8179223a, (q31_t)0x13445505, (q31_t)0x81755754, + (q31_t)0x132b7bf9, (q31_t)0x8171914e, (q31_t)0x1312a230, (q31_t)0x816dd02a, (q31_t)0x12f9c7aa, (q31_t)0x816a13e6, (q31_t)0x12e0ec6a, (q31_t)0x81665c84, + (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x12af33ba, (q31_t)0x815efc65, (q31_t)0x1296564d, (q31_t)0x815b53a8, (q31_t)0x127d7829, (q31_t)0x8157afcd, + (q31_t)0x1264994e, (q31_t)0x815410d4, (q31_t)0x124bb9be, (q31_t)0x815076bd, (q31_t)0x1232d979, (q31_t)0x814ce188, (q31_t)0x1219f880, (q31_t)0x81495136, + (q31_t)0x120116d5, (q31_t)0x8145c5c7, (q31_t)0x11e83478, (q31_t)0x81423f3a, (q31_t)0x11cf516a, (q31_t)0x813ebd90, (q31_t)0x11b66dad, (q31_t)0x813b40ca, + (q31_t)0x119d8941, (q31_t)0x8137c8e6, (q31_t)0x1184a427, (q31_t)0x813455e6, (q31_t)0x116bbe60, (q31_t)0x8130e7c9, (q31_t)0x1152d7ed, (q31_t)0x812d7e8f, + (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0x11210907, (q31_t)0x8126bac8, (q31_t)0x11082096, (q31_t)0x8123603a, (q31_t)0x10ef377d, (q31_t)0x81200a90, + (q31_t)0x10d64dbd, (q31_t)0x811cb9ca, (q31_t)0x10bd6356, (q31_t)0x81196de9, (q31_t)0x10a4784b, (q31_t)0x811626ec, (q31_t)0x108b8c9b, (q31_t)0x8112e4d4, + (q31_t)0x1072a048, (q31_t)0x810fa7a0, (q31_t)0x1059b352, (q31_t)0x810c6f52, (q31_t)0x1040c5bb, (q31_t)0x81093be8, (q31_t)0x1027d784, (q31_t)0x81060d63, + (q31_t)0x100ee8ad, (q31_t)0x8102e3c4, (q31_t)0xff5f938, (q31_t)0x80ffbf0a, (q31_t)0xfdd0926, (q31_t)0x80fc9f35, (q31_t)0xfc41876, (q31_t)0x80f98446, + (q31_t)0xfab272b, (q31_t)0x80f66e3c, (q31_t)0xf923546, (q31_t)0x80f35d19, (q31_t)0xf7942c7, (q31_t)0x80f050db, (q31_t)0xf604faf, (q31_t)0x80ed4984, + (q31_t)0xf475bff, (q31_t)0x80ea4712, (q31_t)0xf2e67b8, (q31_t)0x80e74987, (q31_t)0xf1572dc, (q31_t)0x80e450e2, (q31_t)0xefc7d6b, (q31_t)0x80e15d24, + (q31_t)0xee38766, (q31_t)0x80de6e4c, (q31_t)0xeca90ce, (q31_t)0x80db845b, (q31_t)0xeb199a4, (q31_t)0x80d89f51, (q31_t)0xe98a1e9, (q31_t)0x80d5bf2e, + (q31_t)0xe7fa99e, (q31_t)0x80d2e3f2, (q31_t)0xe66b0c3, (q31_t)0x80d00d9d, (q31_t)0xe4db75b, (q31_t)0x80cd3c2f, (q31_t)0xe34bd66, (q31_t)0x80ca6fa9, + (q31_t)0xe1bc2e4, (q31_t)0x80c7a80a, (q31_t)0xe02c7d7, (q31_t)0x80c4e553, (q31_t)0xde9cc40, (q31_t)0x80c22784, (q31_t)0xdd0d01f, (q31_t)0x80bf6e9c, + (q31_t)0xdb7d376, (q31_t)0x80bcba9d, (q31_t)0xd9ed646, (q31_t)0x80ba0b85, (q31_t)0xd85d88f, (q31_t)0x80b76156, (q31_t)0xd6cda53, (q31_t)0x80b4bc0e, + (q31_t)0xd53db92, (q31_t)0x80b21baf, (q31_t)0xd3adc4e, (q31_t)0x80af8039, (q31_t)0xd21dc87, (q31_t)0x80ace9ab, (q31_t)0xd08dc3f, (q31_t)0x80aa5806, + (q31_t)0xcefdb76, (q31_t)0x80a7cb49, (q31_t)0xcd6da2d, (q31_t)0x80a54376, (q31_t)0xcbdd865, (q31_t)0x80a2c08b, (q31_t)0xca4d620, (q31_t)0x80a04289, + (q31_t)0xc8bd35e, (q31_t)0x809dc971, (q31_t)0xc72d020, (q31_t)0x809b5541, (q31_t)0xc59cc68, (q31_t)0x8098e5fb, (q31_t)0xc40c835, (q31_t)0x80967b9f, + (q31_t)0xc27c389, (q31_t)0x8094162c, (q31_t)0xc0ebe66, (q31_t)0x8091b5a2, (q31_t)0xbf5b8cb, (q31_t)0x808f5a02, (q31_t)0xbdcb2bb, (q31_t)0x808d034c, + (q31_t)0xbc3ac35, (q31_t)0x808ab180, (q31_t)0xbaaa53b, (q31_t)0x8088649e, (q31_t)0xb919dcf, (q31_t)0x80861ca6, (q31_t)0xb7895f0, (q31_t)0x8083d998, + (q31_t)0xb5f8d9f, (q31_t)0x80819b74, (q31_t)0xb4684df, (q31_t)0x807f623b, (q31_t)0xb2d7baf, (q31_t)0x807d2dec, (q31_t)0xb147211, (q31_t)0x807afe87, + (q31_t)0xafb6805, (q31_t)0x8078d40d, (q31_t)0xae25d8d, (q31_t)0x8076ae7e, (q31_t)0xac952aa, (q31_t)0x80748dd9, (q31_t)0xab0475c, (q31_t)0x8072721f, + (q31_t)0xa973ba5, (q31_t)0x80705b50, (q31_t)0xa7e2f85, (q31_t)0x806e496c, (q31_t)0xa6522fe, (q31_t)0x806c3c74, (q31_t)0xa4c1610, (q31_t)0x806a3466, + (q31_t)0xa3308bd, (q31_t)0x80683143, (q31_t)0xa19fb04, (q31_t)0x8066330c, (q31_t)0xa00ece8, (q31_t)0x806439c0, (q31_t)0x9e7de6a, (q31_t)0x80624560, + (q31_t)0x9cecf89, (q31_t)0x806055eb, (q31_t)0x9b5c048, (q31_t)0x805e6b62, (q31_t)0x99cb0a7, (q31_t)0x805c85c4, (q31_t)0x983a0a7, (q31_t)0x805aa512, + (q31_t)0x96a9049, (q31_t)0x8058c94c, (q31_t)0x9517f8f, (q31_t)0x8056f272, (q31_t)0x9386e78, (q31_t)0x80552084, (q31_t)0x91f5d06, (q31_t)0x80535381, + (q31_t)0x9064b3a, (q31_t)0x80518b6b, (q31_t)0x8ed3916, (q31_t)0x804fc841, (q31_t)0x8d42699, (q31_t)0x804e0a04, (q31_t)0x8bb13c5, (q31_t)0x804c50b2, + (q31_t)0x8a2009a, (q31_t)0x804a9c4d, (q31_t)0x888ed1b, (q31_t)0x8048ecd5, (q31_t)0x86fd947, (q31_t)0x80474248, (q31_t)0x856c520, (q31_t)0x80459ca9, + (q31_t)0x83db0a7, (q31_t)0x8043fbf6, (q31_t)0x8249bdd, (q31_t)0x80426030, (q31_t)0x80b86c2, (q31_t)0x8040c956, (q31_t)0x7f27157, (q31_t)0x803f376a, + (q31_t)0x7d95b9e, (q31_t)0x803daa6a, (q31_t)0x7c04598, (q31_t)0x803c2257, (q31_t)0x7a72f45, (q31_t)0x803a9f31, (q31_t)0x78e18a7, (q31_t)0x803920f8, + (q31_t)0x77501be, (q31_t)0x8037a7ac, (q31_t)0x75bea8c, (q31_t)0x8036334e, (q31_t)0x742d311, (q31_t)0x8034c3dd, (q31_t)0x729bb4e, (q31_t)0x80335959, + (q31_t)0x710a345, (q31_t)0x8031f3c2, (q31_t)0x6f78af6, (q31_t)0x80309318, (q31_t)0x6de7262, (q31_t)0x802f375d, (q31_t)0x6c5598a, (q31_t)0x802de08e, + (q31_t)0x6ac406f, (q31_t)0x802c8ead, (q31_t)0x6932713, (q31_t)0x802b41ba, (q31_t)0x67a0d76, (q31_t)0x8029f9b4, (q31_t)0x660f398, (q31_t)0x8028b69c, + (q31_t)0x647d97c, (q31_t)0x80277872, (q31_t)0x62ebf22, (q31_t)0x80263f36, (q31_t)0x615a48b, (q31_t)0x80250ae7, (q31_t)0x5fc89b8, (q31_t)0x8023db86, + (q31_t)0x5e36ea9, (q31_t)0x8022b114, (q31_t)0x5ca5361, (q31_t)0x80218b8f, (q31_t)0x5b137df, (q31_t)0x80206af8, (q31_t)0x5981c26, (q31_t)0x801f4f4f, + (q31_t)0x57f0035, (q31_t)0x801e3895, (q31_t)0x565e40d, (q31_t)0x801d26c8, (q31_t)0x54cc7b1, (q31_t)0x801c19ea, (q31_t)0x533ab20, (q31_t)0x801b11fa, + (q31_t)0x51a8e5c, (q31_t)0x801a0ef8, (q31_t)0x5017165, (q31_t)0x801910e4, (q31_t)0x4e8543e, (q31_t)0x801817bf, (q31_t)0x4cf36e5, (q31_t)0x80172388, + (q31_t)0x4b6195d, (q31_t)0x80163440, (q31_t)0x49cfba7, (q31_t)0x801549e6, (q31_t)0x483ddc3, (q31_t)0x8014647b, (q31_t)0x46abfb3, (q31_t)0x801383fe, + (q31_t)0x451a177, (q31_t)0x8012a86f, (q31_t)0x4388310, (q31_t)0x8011d1d0, (q31_t)0x41f6480, (q31_t)0x8011001f, (q31_t)0x40645c7, (q31_t)0x8010335c, + (q31_t)0x3ed26e6, (q31_t)0x800f6b88, (q31_t)0x3d407df, (q31_t)0x800ea8a3, (q31_t)0x3bae8b2, (q31_t)0x800deaad, (q31_t)0x3a1c960, (q31_t)0x800d31a5, + (q31_t)0x388a9ea, (q31_t)0x800c7d8c, (q31_t)0x36f8a51, (q31_t)0x800bce63, (q31_t)0x3566a96, (q31_t)0x800b2427, (q31_t)0x33d4abb, (q31_t)0x800a7edb, + (q31_t)0x3242abf, (q31_t)0x8009de7e, (q31_t)0x30b0aa4, (q31_t)0x80094310, (q31_t)0x2f1ea6c, (q31_t)0x8008ac90, (q31_t)0x2d8ca16, (q31_t)0x80081b00, + (q31_t)0x2bfa9a4, (q31_t)0x80078e5e, (q31_t)0x2a68917, (q31_t)0x800706ac, (q31_t)0x28d6870, (q31_t)0x800683e8, (q31_t)0x27447b0, (q31_t)0x80060614, + (q31_t)0x25b26d7, (q31_t)0x80058d2f, (q31_t)0x24205e8, (q31_t)0x80051939, (q31_t)0x228e4e2, (q31_t)0x8004aa32, (q31_t)0x20fc3c6, (q31_t)0x8004401a, + (q31_t)0x1f6a297, (q31_t)0x8003daf1, (q31_t)0x1dd8154, (q31_t)0x80037ab7, (q31_t)0x1c45ffe, (q31_t)0x80031f6d, (q31_t)0x1ab3e97, (q31_t)0x8002c912, + (q31_t)0x1921d20, (q31_t)0x800277a6, (q31_t)0x178fb99, (q31_t)0x80022b29, (q31_t)0x15fda03, (q31_t)0x8001e39b, (q31_t)0x146b860, (q31_t)0x8001a0fd, + (q31_t)0x12d96b1, (q31_t)0x8001634e, (q31_t)0x11474f6, (q31_t)0x80012a8e, (q31_t)0xfb5330, (q31_t)0x8000f6bd, (q31_t)0xe23160, (q31_t)0x8000c7dc, + (q31_t)0xc90f88, (q31_t)0x80009dea, (q31_t)0xafeda8, (q31_t)0x800078e7, (q31_t)0x96cbc1, (q31_t)0x800058d4, (q31_t)0x7da9d4, (q31_t)0x80003daf, + (q31_t)0x6487e3, (q31_t)0x8000277a, (q31_t)0x4b65ee, (q31_t)0x80001635, (q31_t)0x3243f5, (q31_t)0x800009df, (q31_t)0x1921fb, (q31_t)0x80000278 +}; + +static const q31_t WeightsQ31_8192[16384] = { + (q31_t)0x7fffffff, (q31_t)0x0, (q31_t)0x7fffffd9, (q31_t)0xfff9b781, (q31_t)0x7fffff62, (q31_t)0xfff36f02, (q31_t)0x7ffffe9d, + (q31_t)0xffed2684, + (q31_t)0x7ffffd88, (q31_t)0xffe6de05, (q31_t)0x7ffffc25, (q31_t)0xffe09586, (q31_t)0x7ffffa73, (q31_t)0xffda4d08, + (q31_t)0x7ffff872, (q31_t)0xffd40489, + (q31_t)0x7ffff621, (q31_t)0xffcdbc0b, (q31_t)0x7ffff382, (q31_t)0xffc7738c, (q31_t)0x7ffff094, (q31_t)0xffc12b0e, + (q31_t)0x7fffed57, (q31_t)0xffbae290, + (q31_t)0x7fffe9cb, (q31_t)0xffb49a12, (q31_t)0x7fffe5f0, (q31_t)0xffae5195, (q31_t)0x7fffe1c6, (q31_t)0xffa80917, + (q31_t)0x7fffdd4d, (q31_t)0xffa1c09a, + (q31_t)0x7fffd886, (q31_t)0xff9b781d, (q31_t)0x7fffd36f, (q31_t)0xff952fa0, (q31_t)0x7fffce09, (q31_t)0xff8ee724, + (q31_t)0x7fffc854, (q31_t)0xff889ea7, + (q31_t)0x7fffc251, (q31_t)0xff82562c, (q31_t)0x7fffbbfe, (q31_t)0xff7c0db0, (q31_t)0x7fffb55c, (q31_t)0xff75c535, + (q31_t)0x7fffae6c, (q31_t)0xff6f7cba, + (q31_t)0x7fffa72c, (q31_t)0xff69343f, (q31_t)0x7fff9f9e, (q31_t)0xff62ebc5, (q31_t)0x7fff97c1, (q31_t)0xff5ca34b, + (q31_t)0x7fff8f94, (q31_t)0xff565ad1, + (q31_t)0x7fff8719, (q31_t)0xff501258, (q31_t)0x7fff7e4f, (q31_t)0xff49c9df, (q31_t)0x7fff7536, (q31_t)0xff438167, + (q31_t)0x7fff6bcd, (q31_t)0xff3d38ef, + (q31_t)0x7fff6216, (q31_t)0xff36f078, (q31_t)0x7fff5810, (q31_t)0xff30a801, (q31_t)0x7fff4dbb, (q31_t)0xff2a5f8b, + (q31_t)0x7fff4317, (q31_t)0xff241715, + (q31_t)0x7fff3824, (q31_t)0xff1dcea0, (q31_t)0x7fff2ce2, (q31_t)0xff17862b, (q31_t)0x7fff2151, (q31_t)0xff113db7, + (q31_t)0x7fff1572, (q31_t)0xff0af543, + (q31_t)0x7fff0943, (q31_t)0xff04acd0, (q31_t)0x7ffefcc5, (q31_t)0xfefe645e, (q31_t)0x7ffeeff8, (q31_t)0xfef81bec, + (q31_t)0x7ffee2dd, (q31_t)0xfef1d37b, + (q31_t)0x7ffed572, (q31_t)0xfeeb8b0a, (q31_t)0x7ffec7b9, (q31_t)0xfee5429a, (q31_t)0x7ffeb9b0, (q31_t)0xfedefa2b, + (q31_t)0x7ffeab59, (q31_t)0xfed8b1bd, + (q31_t)0x7ffe9cb2, (q31_t)0xfed2694f, (q31_t)0x7ffe8dbd, (q31_t)0xfecc20e2, (q31_t)0x7ffe7e79, (q31_t)0xfec5d876, + (q31_t)0x7ffe6ee5, (q31_t)0xfebf900a, + (q31_t)0x7ffe5f03, (q31_t)0xfeb947a0, (q31_t)0x7ffe4ed2, (q31_t)0xfeb2ff36, (q31_t)0x7ffe3e52, (q31_t)0xfeacb6cc, + (q31_t)0x7ffe2d83, (q31_t)0xfea66e64, + (q31_t)0x7ffe1c65, (q31_t)0xfea025fd, (q31_t)0x7ffe0af8, (q31_t)0xfe99dd96, (q31_t)0x7ffdf93c, (q31_t)0xfe939530, + (q31_t)0x7ffde731, (q31_t)0xfe8d4ccb, + (q31_t)0x7ffdd4d7, (q31_t)0xfe870467, (q31_t)0x7ffdc22e, (q31_t)0xfe80bc04, (q31_t)0x7ffdaf37, (q31_t)0xfe7a73a2, + (q31_t)0x7ffd9bf0, (q31_t)0xfe742b41, + (q31_t)0x7ffd885a, (q31_t)0xfe6de2e0, (q31_t)0x7ffd7476, (q31_t)0xfe679a81, (q31_t)0x7ffd6042, (q31_t)0xfe615223, + (q31_t)0x7ffd4bc0, (q31_t)0xfe5b09c5, + (q31_t)0x7ffd36ee, (q31_t)0xfe54c169, (q31_t)0x7ffd21ce, (q31_t)0xfe4e790d, (q31_t)0x7ffd0c5f, (q31_t)0xfe4830b3, + (q31_t)0x7ffcf6a0, (q31_t)0xfe41e85a, + (q31_t)0x7ffce093, (q31_t)0xfe3ba002, (q31_t)0x7ffcca37, (q31_t)0xfe3557ab, (q31_t)0x7ffcb38c, (q31_t)0xfe2f0f55, + (q31_t)0x7ffc9c92, (q31_t)0xfe28c700, + (q31_t)0x7ffc8549, (q31_t)0xfe227eac, (q31_t)0x7ffc6db1, (q31_t)0xfe1c365a, (q31_t)0x7ffc55ca, (q31_t)0xfe15ee09, + (q31_t)0x7ffc3d94, (q31_t)0xfe0fa5b8, + (q31_t)0x7ffc250f, (q31_t)0xfe095d69, (q31_t)0x7ffc0c3b, (q31_t)0xfe03151c, (q31_t)0x7ffbf319, (q31_t)0xfdfccccf, + (q31_t)0x7ffbd9a7, (q31_t)0xfdf68484, + (q31_t)0x7ffbbfe6, (q31_t)0xfdf03c3a, (q31_t)0x7ffba5d7, (q31_t)0xfde9f3f1, (q31_t)0x7ffb8b78, (q31_t)0xfde3aba9, + (q31_t)0x7ffb70cb, (q31_t)0xfddd6363, + (q31_t)0x7ffb55ce, (q31_t)0xfdd71b1e, (q31_t)0x7ffb3a83, (q31_t)0xfdd0d2db, (q31_t)0x7ffb1ee9, (q31_t)0xfdca8a99, + (q31_t)0x7ffb0300, (q31_t)0xfdc44258, + (q31_t)0x7ffae6c7, (q31_t)0xfdbdfa18, (q31_t)0x7ffaca40, (q31_t)0xfdb7b1da, (q31_t)0x7ffaad6a, (q31_t)0xfdb1699e, + (q31_t)0x7ffa9045, (q31_t)0xfdab2162, + (q31_t)0x7ffa72d1, (q31_t)0xfda4d929, (q31_t)0x7ffa550e, (q31_t)0xfd9e90f0, (q31_t)0x7ffa36fc, (q31_t)0xfd9848b9, + (q31_t)0x7ffa189c, (q31_t)0xfd920084, + (q31_t)0x7ff9f9ec, (q31_t)0xfd8bb850, (q31_t)0x7ff9daed, (q31_t)0xfd85701e, (q31_t)0x7ff9bba0, (q31_t)0xfd7f27ed, + (q31_t)0x7ff99c03, (q31_t)0xfd78dfbd, + (q31_t)0x7ff97c18, (q31_t)0xfd729790, (q31_t)0x7ff95bdd, (q31_t)0xfd6c4f64, (q31_t)0x7ff93b54, (q31_t)0xfd660739, + (q31_t)0x7ff91a7b, (q31_t)0xfd5fbf10, + (q31_t)0x7ff8f954, (q31_t)0xfd5976e9, (q31_t)0x7ff8d7de, (q31_t)0xfd532ec3, (q31_t)0x7ff8b619, (q31_t)0xfd4ce69f, + (q31_t)0x7ff89405, (q31_t)0xfd469e7c, + (q31_t)0x7ff871a2, (q31_t)0xfd40565c, (q31_t)0x7ff84ef0, (q31_t)0xfd3a0e3d, (q31_t)0x7ff82bef, (q31_t)0xfd33c61f, + (q31_t)0x7ff8089f, (q31_t)0xfd2d7e04, + (q31_t)0x7ff7e500, (q31_t)0xfd2735ea, (q31_t)0x7ff7c113, (q31_t)0xfd20edd2, (q31_t)0x7ff79cd6, (q31_t)0xfd1aa5bc, + (q31_t)0x7ff7784a, (q31_t)0xfd145da7, + (q31_t)0x7ff75370, (q31_t)0xfd0e1594, (q31_t)0x7ff72e46, (q31_t)0xfd07cd83, (q31_t)0x7ff708ce, (q31_t)0xfd018574, + (q31_t)0x7ff6e307, (q31_t)0xfcfb3d67, + (q31_t)0x7ff6bcf0, (q31_t)0xfcf4f55c, (q31_t)0x7ff6968b, (q31_t)0xfceead52, (q31_t)0x7ff66fd7, (q31_t)0xfce8654b, + (q31_t)0x7ff648d4, (q31_t)0xfce21d45, + (q31_t)0x7ff62182, (q31_t)0xfcdbd541, (q31_t)0x7ff5f9e1, (q31_t)0xfcd58d3f, (q31_t)0x7ff5d1f1, (q31_t)0xfccf453f, + (q31_t)0x7ff5a9b2, (q31_t)0xfcc8fd41, + (q31_t)0x7ff58125, (q31_t)0xfcc2b545, (q31_t)0x7ff55848, (q31_t)0xfcbc6d4c, (q31_t)0x7ff52f1d, (q31_t)0xfcb62554, + (q31_t)0x7ff505a2, (q31_t)0xfcafdd5e, + (q31_t)0x7ff4dbd9, (q31_t)0xfca9956a, (q31_t)0x7ff4b1c0, (q31_t)0xfca34d78, (q31_t)0x7ff48759, (q31_t)0xfc9d0588, + (q31_t)0x7ff45ca3, (q31_t)0xfc96bd9b, + (q31_t)0x7ff4319d, (q31_t)0xfc9075af, (q31_t)0x7ff40649, (q31_t)0xfc8a2dc6, (q31_t)0x7ff3daa6, (q31_t)0xfc83e5de, + (q31_t)0x7ff3aeb4, (q31_t)0xfc7d9df9, + (q31_t)0x7ff38274, (q31_t)0xfc775616, (q31_t)0x7ff355e4, (q31_t)0xfc710e36, (q31_t)0x7ff32905, (q31_t)0xfc6ac657, + (q31_t)0x7ff2fbd7, (q31_t)0xfc647e7b, + (q31_t)0x7ff2ce5b, (q31_t)0xfc5e36a0, (q31_t)0x7ff2a08f, (q31_t)0xfc57eec9, (q31_t)0x7ff27275, (q31_t)0xfc51a6f3, + (q31_t)0x7ff2440b, (q31_t)0xfc4b5f20, + (q31_t)0x7ff21553, (q31_t)0xfc45174e, (q31_t)0x7ff1e64c, (q31_t)0xfc3ecf80, (q31_t)0x7ff1b6f6, (q31_t)0xfc3887b3, + (q31_t)0x7ff18751, (q31_t)0xfc323fe9, + (q31_t)0x7ff1575d, (q31_t)0xfc2bf821, (q31_t)0x7ff1271a, (q31_t)0xfc25b05c, (q31_t)0x7ff0f688, (q31_t)0xfc1f6899, + (q31_t)0x7ff0c5a7, (q31_t)0xfc1920d8, + (q31_t)0x7ff09478, (q31_t)0xfc12d91a, (q31_t)0x7ff062f9, (q31_t)0xfc0c915e, (q31_t)0x7ff0312c, (q31_t)0xfc0649a5, + (q31_t)0x7fefff0f, (q31_t)0xfc0001ee, + (q31_t)0x7fefcca4, (q31_t)0xfbf9ba39, (q31_t)0x7fef99ea, (q31_t)0xfbf37287, (q31_t)0x7fef66e1, (q31_t)0xfbed2ad8, + (q31_t)0x7fef3388, (q31_t)0xfbe6e32b, + (q31_t)0x7feeffe1, (q31_t)0xfbe09b80, (q31_t)0x7feecbec, (q31_t)0xfbda53d8, (q31_t)0x7fee97a7, (q31_t)0xfbd40c33, + (q31_t)0x7fee6313, (q31_t)0xfbcdc490, + (q31_t)0x7fee2e30, (q31_t)0xfbc77cf0, (q31_t)0x7fedf8ff, (q31_t)0xfbc13552, (q31_t)0x7fedc37e, (q31_t)0xfbbaedb7, + (q31_t)0x7fed8daf, (q31_t)0xfbb4a61f, + (q31_t)0x7fed5791, (q31_t)0xfbae5e89, (q31_t)0x7fed2123, (q31_t)0xfba816f6, (q31_t)0x7fecea67, (q31_t)0xfba1cf66, + (q31_t)0x7fecb35c, (q31_t)0xfb9b87d8, + (q31_t)0x7fec7c02, (q31_t)0xfb95404d, (q31_t)0x7fec4459, (q31_t)0xfb8ef8c5, (q31_t)0x7fec0c62, (q31_t)0xfb88b13f, + (q31_t)0x7febd41b, (q31_t)0xfb8269bd, + (q31_t)0x7feb9b85, (q31_t)0xfb7c223d, (q31_t)0x7feb62a1, (q31_t)0xfb75dac0, (q31_t)0x7feb296d, (q31_t)0xfb6f9345, + (q31_t)0x7feaefeb, (q31_t)0xfb694bce, + (q31_t)0x7feab61a, (q31_t)0xfb630459, (q31_t)0x7fea7bfa, (q31_t)0xfb5cbce7, (q31_t)0x7fea418b, (q31_t)0xfb567578, + (q31_t)0x7fea06cd, (q31_t)0xfb502e0c, + (q31_t)0x7fe9cbc0, (q31_t)0xfb49e6a3, (q31_t)0x7fe99064, (q31_t)0xfb439f3c, (q31_t)0x7fe954ba, (q31_t)0xfb3d57d9, + (q31_t)0x7fe918c0, (q31_t)0xfb371078, + (q31_t)0x7fe8dc78, (q31_t)0xfb30c91b, (q31_t)0x7fe89fe0, (q31_t)0xfb2a81c0, (q31_t)0x7fe862fa, (q31_t)0xfb243a69, + (q31_t)0x7fe825c5, (q31_t)0xfb1df314, + (q31_t)0x7fe7e841, (q31_t)0xfb17abc2, (q31_t)0x7fe7aa6e, (q31_t)0xfb116474, (q31_t)0x7fe76c4c, (q31_t)0xfb0b1d28, + (q31_t)0x7fe72ddb, (q31_t)0xfb04d5e0, + (q31_t)0x7fe6ef1c, (q31_t)0xfafe8e9b, (q31_t)0x7fe6b00d, (q31_t)0xfaf84758, (q31_t)0x7fe670b0, (q31_t)0xfaf20019, + (q31_t)0x7fe63103, (q31_t)0xfaebb8dd, + (q31_t)0x7fe5f108, (q31_t)0xfae571a4, (q31_t)0x7fe5b0be, (q31_t)0xfadf2a6e, (q31_t)0x7fe57025, (q31_t)0xfad8e33c, + (q31_t)0x7fe52f3d, (q31_t)0xfad29c0c, + (q31_t)0x7fe4ee06, (q31_t)0xfacc54e0, (q31_t)0x7fe4ac81, (q31_t)0xfac60db7, (q31_t)0x7fe46aac, (q31_t)0xfabfc691, + (q31_t)0x7fe42889, (q31_t)0xfab97f6e, + (q31_t)0x7fe3e616, (q31_t)0xfab3384f, (q31_t)0x7fe3a355, (q31_t)0xfaacf133, (q31_t)0x7fe36045, (q31_t)0xfaa6aa1a, + (q31_t)0x7fe31ce6, (q31_t)0xfaa06305, + (q31_t)0x7fe2d938, (q31_t)0xfa9a1bf3, (q31_t)0x7fe2953b, (q31_t)0xfa93d4e4, (q31_t)0x7fe250ef, (q31_t)0xfa8d8dd8, + (q31_t)0x7fe20c55, (q31_t)0xfa8746d0, + (q31_t)0x7fe1c76b, (q31_t)0xfa80ffcb, (q31_t)0x7fe18233, (q31_t)0xfa7ab8ca, (q31_t)0x7fe13cac, (q31_t)0xfa7471cc, + (q31_t)0x7fe0f6d6, (q31_t)0xfa6e2ad1, + (q31_t)0x7fe0b0b1, (q31_t)0xfa67e3da, (q31_t)0x7fe06a3d, (q31_t)0xfa619ce7, (q31_t)0x7fe0237a, (q31_t)0xfa5b55f7, + (q31_t)0x7fdfdc69, (q31_t)0xfa550f0a, + (q31_t)0x7fdf9508, (q31_t)0xfa4ec821, (q31_t)0x7fdf4d59, (q31_t)0xfa48813b, (q31_t)0x7fdf055a, (q31_t)0xfa423a59, + (q31_t)0x7fdebd0d, (q31_t)0xfa3bf37a, + (q31_t)0x7fde7471, (q31_t)0xfa35ac9f, (q31_t)0x7fde2b86, (q31_t)0xfa2f65c8, (q31_t)0x7fdde24d, (q31_t)0xfa291ef4, + (q31_t)0x7fdd98c4, (q31_t)0xfa22d823, + (q31_t)0x7fdd4eec, (q31_t)0xfa1c9157, (q31_t)0x7fdd04c6, (q31_t)0xfa164a8e, (q31_t)0x7fdcba51, (q31_t)0xfa1003c8, + (q31_t)0x7fdc6f8d, (q31_t)0xfa09bd06, + (q31_t)0x7fdc247a, (q31_t)0xfa037648, (q31_t)0x7fdbd918, (q31_t)0xf9fd2f8e, (q31_t)0x7fdb8d67, (q31_t)0xf9f6e8d7, + (q31_t)0x7fdb4167, (q31_t)0xf9f0a224, + (q31_t)0x7fdaf519, (q31_t)0xf9ea5b75, (q31_t)0x7fdaa87c, (q31_t)0xf9e414ca, (q31_t)0x7fda5b8f, (q31_t)0xf9ddce22, + (q31_t)0x7fda0e54, (q31_t)0xf9d7877e, + (q31_t)0x7fd9c0ca, (q31_t)0xf9d140de, (q31_t)0x7fd972f2, (q31_t)0xf9cafa42, (q31_t)0x7fd924ca, (q31_t)0xf9c4b3a9, + (q31_t)0x7fd8d653, (q31_t)0xf9be6d15, + (q31_t)0x7fd8878e, (q31_t)0xf9b82684, (q31_t)0x7fd8387a, (q31_t)0xf9b1dff7, (q31_t)0x7fd7e917, (q31_t)0xf9ab996e, + (q31_t)0x7fd79965, (q31_t)0xf9a552e9, + (q31_t)0x7fd74964, (q31_t)0xf99f0c68, (q31_t)0x7fd6f914, (q31_t)0xf998c5ea, (q31_t)0x7fd6a875, (q31_t)0xf9927f71, + (q31_t)0x7fd65788, (q31_t)0xf98c38fc, + (q31_t)0x7fd6064c, (q31_t)0xf985f28a, (q31_t)0x7fd5b4c1, (q31_t)0xf97fac1d, (q31_t)0x7fd562e7, (q31_t)0xf97965b4, + (q31_t)0x7fd510be, (q31_t)0xf9731f4e, + (q31_t)0x7fd4be46, (q31_t)0xf96cd8ed, (q31_t)0x7fd46b80, (q31_t)0xf9669290, (q31_t)0x7fd4186a, (q31_t)0xf9604c37, + (q31_t)0x7fd3c506, (q31_t)0xf95a05e2, + (q31_t)0x7fd37153, (q31_t)0xf953bf91, (q31_t)0x7fd31d51, (q31_t)0xf94d7944, (q31_t)0x7fd2c900, (q31_t)0xf94732fb, + (q31_t)0x7fd27460, (q31_t)0xf940ecb7, + (q31_t)0x7fd21f72, (q31_t)0xf93aa676, (q31_t)0x7fd1ca35, (q31_t)0xf934603a, (q31_t)0x7fd174a8, (q31_t)0xf92e1a02, + (q31_t)0x7fd11ecd, (q31_t)0xf927d3ce, + (q31_t)0x7fd0c8a3, (q31_t)0xf9218d9e, (q31_t)0x7fd0722b, (q31_t)0xf91b4773, (q31_t)0x7fd01b63, (q31_t)0xf915014c, + (q31_t)0x7fcfc44d, (q31_t)0xf90ebb29, + (q31_t)0x7fcf6ce8, (q31_t)0xf908750a, (q31_t)0x7fcf1533, (q31_t)0xf9022ef0, (q31_t)0x7fcebd31, (q31_t)0xf8fbe8da, + (q31_t)0x7fce64df, (q31_t)0xf8f5a2c9, + (q31_t)0x7fce0c3e, (q31_t)0xf8ef5cbb, (q31_t)0x7fcdb34f, (q31_t)0xf8e916b2, (q31_t)0x7fcd5a11, (q31_t)0xf8e2d0ae, + (q31_t)0x7fcd0083, (q31_t)0xf8dc8aae, + (q31_t)0x7fcca6a7, (q31_t)0xf8d644b2, (q31_t)0x7fcc4c7d, (q31_t)0xf8cffebb, (q31_t)0x7fcbf203, (q31_t)0xf8c9b8c8, + (q31_t)0x7fcb973b, (q31_t)0xf8c372d9, + (q31_t)0x7fcb3c23, (q31_t)0xf8bd2cef, (q31_t)0x7fcae0bd, (q31_t)0xf8b6e70a, (q31_t)0x7fca8508, (q31_t)0xf8b0a129, + (q31_t)0x7fca2905, (q31_t)0xf8aa5b4c, + (q31_t)0x7fc9ccb2, (q31_t)0xf8a41574, (q31_t)0x7fc97011, (q31_t)0xf89dcfa1, (q31_t)0x7fc91320, (q31_t)0xf89789d2, + (q31_t)0x7fc8b5e1, (q31_t)0xf8914407, + (q31_t)0x7fc85854, (q31_t)0xf88afe42, (q31_t)0x7fc7fa77, (q31_t)0xf884b880, (q31_t)0x7fc79c4b, (q31_t)0xf87e72c4, + (q31_t)0x7fc73dd1, (q31_t)0xf8782d0c, + (q31_t)0x7fc6df08, (q31_t)0xf871e759, (q31_t)0x7fc67ff0, (q31_t)0xf86ba1aa, (q31_t)0x7fc62089, (q31_t)0xf8655c00, + (q31_t)0x7fc5c0d3, (q31_t)0xf85f165b, + (q31_t)0x7fc560cf, (q31_t)0xf858d0bb, (q31_t)0x7fc5007c, (q31_t)0xf8528b1f, (q31_t)0x7fc49fda, (q31_t)0xf84c4588, + (q31_t)0x7fc43ee9, (q31_t)0xf845fff5, + (q31_t)0x7fc3dda9, (q31_t)0xf83fba68, (q31_t)0x7fc37c1b, (q31_t)0xf83974df, (q31_t)0x7fc31a3d, (q31_t)0xf8332f5b, + (q31_t)0x7fc2b811, (q31_t)0xf82ce9dc, + (q31_t)0x7fc25596, (q31_t)0xf826a462, (q31_t)0x7fc1f2cc, (q31_t)0xf8205eec, (q31_t)0x7fc18fb4, (q31_t)0xf81a197b, + (q31_t)0x7fc12c4d, (q31_t)0xf813d410, + (q31_t)0x7fc0c896, (q31_t)0xf80d8ea9, (q31_t)0x7fc06491, (q31_t)0xf8074947, (q31_t)0x7fc0003e, (q31_t)0xf80103ea, + (q31_t)0x7fbf9b9b, (q31_t)0xf7fabe92, + (q31_t)0x7fbf36aa, (q31_t)0xf7f4793e, (q31_t)0x7fbed16a, (q31_t)0xf7ee33f0, (q31_t)0x7fbe6bdb, (q31_t)0xf7e7eea7, + (q31_t)0x7fbe05fd, (q31_t)0xf7e1a963, + (q31_t)0x7fbd9fd0, (q31_t)0xf7db6423, (q31_t)0x7fbd3955, (q31_t)0xf7d51ee9, (q31_t)0x7fbcd28b, (q31_t)0xf7ced9b4, + (q31_t)0x7fbc6b72, (q31_t)0xf7c89484, + (q31_t)0x7fbc040a, (q31_t)0xf7c24f59, (q31_t)0x7fbb9c53, (q31_t)0xf7bc0a33, (q31_t)0x7fbb344e, (q31_t)0xf7b5c512, + (q31_t)0x7fbacbfa, (q31_t)0xf7af7ff6, + (q31_t)0x7fba6357, (q31_t)0xf7a93ae0, (q31_t)0x7fb9fa65, (q31_t)0xf7a2f5ce, (q31_t)0x7fb99125, (q31_t)0xf79cb0c2, + (q31_t)0x7fb92796, (q31_t)0xf7966bbb, + (q31_t)0x7fb8bdb8, (q31_t)0xf79026b9, (q31_t)0x7fb8538b, (q31_t)0xf789e1bc, (q31_t)0x7fb7e90f, (q31_t)0xf7839cc4, + (q31_t)0x7fb77e45, (q31_t)0xf77d57d2, + (q31_t)0x7fb7132b, (q31_t)0xf77712e5, (q31_t)0x7fb6a7c3, (q31_t)0xf770cdfd, (q31_t)0x7fb63c0d, (q31_t)0xf76a891b, + (q31_t)0x7fb5d007, (q31_t)0xf764443d, + (q31_t)0x7fb563b3, (q31_t)0xf75dff66, (q31_t)0x7fb4f710, (q31_t)0xf757ba93, (q31_t)0x7fb48a1e, (q31_t)0xf75175c6, + (q31_t)0x7fb41cdd, (q31_t)0xf74b30fe, + (q31_t)0x7fb3af4e, (q31_t)0xf744ec3b, (q31_t)0x7fb34170, (q31_t)0xf73ea77e, (q31_t)0x7fb2d343, (q31_t)0xf73862c6, + (q31_t)0x7fb264c7, (q31_t)0xf7321e14, + (q31_t)0x7fb1f5fc, (q31_t)0xf72bd967, (q31_t)0x7fb186e3, (q31_t)0xf72594c0, (q31_t)0x7fb1177b, (q31_t)0xf71f501e, + (q31_t)0x7fb0a7c4, (q31_t)0xf7190b81, + (q31_t)0x7fb037bf, (q31_t)0xf712c6ea, (q31_t)0x7fafc76a, (q31_t)0xf70c8259, (q31_t)0x7faf56c7, (q31_t)0xf7063dcd, + (q31_t)0x7faee5d5, (q31_t)0xf6fff946, + (q31_t)0x7fae7495, (q31_t)0xf6f9b4c6, (q31_t)0x7fae0305, (q31_t)0xf6f3704a, (q31_t)0x7fad9127, (q31_t)0xf6ed2bd4, + (q31_t)0x7fad1efa, (q31_t)0xf6e6e764, + (q31_t)0x7facac7f, (q31_t)0xf6e0a2fa, (q31_t)0x7fac39b4, (q31_t)0xf6da5e95, (q31_t)0x7fabc69b, (q31_t)0xf6d41a36, + (q31_t)0x7fab5333, (q31_t)0xf6cdd5dc, + (q31_t)0x7faadf7c, (q31_t)0xf6c79188, (q31_t)0x7faa6b77, (q31_t)0xf6c14d3a, (q31_t)0x7fa9f723, (q31_t)0xf6bb08f1, + (q31_t)0x7fa98280, (q31_t)0xf6b4c4ae, + (q31_t)0x7fa90d8e, (q31_t)0xf6ae8071, (q31_t)0x7fa8984e, (q31_t)0xf6a83c3a, (q31_t)0x7fa822bf, (q31_t)0xf6a1f808, + (q31_t)0x7fa7ace1, (q31_t)0xf69bb3dd, + (q31_t)0x7fa736b4, (q31_t)0xf6956fb7, (q31_t)0x7fa6c039, (q31_t)0xf68f2b96, (q31_t)0x7fa6496e, (q31_t)0xf688e77c, + (q31_t)0x7fa5d256, (q31_t)0xf682a367, + (q31_t)0x7fa55aee, (q31_t)0xf67c5f59, (q31_t)0x7fa4e338, (q31_t)0xf6761b50, (q31_t)0x7fa46b32, (q31_t)0xf66fd74d, + (q31_t)0x7fa3f2df, (q31_t)0xf6699350, + (q31_t)0x7fa37a3c, (q31_t)0xf6634f59, (q31_t)0x7fa3014b, (q31_t)0xf65d0b68, (q31_t)0x7fa2880b, (q31_t)0xf656c77c, + (q31_t)0x7fa20e7c, (q31_t)0xf6508397, + (q31_t)0x7fa1949e, (q31_t)0xf64a3fb8, (q31_t)0x7fa11a72, (q31_t)0xf643fbdf, (q31_t)0x7fa09ff7, (q31_t)0xf63db80b, + (q31_t)0x7fa0252e, (q31_t)0xf637743e, + (q31_t)0x7f9faa15, (q31_t)0xf6313077, (q31_t)0x7f9f2eae, (q31_t)0xf62aecb5, (q31_t)0x7f9eb2f8, (q31_t)0xf624a8fa, + (q31_t)0x7f9e36f4, (q31_t)0xf61e6545, + (q31_t)0x7f9dbaa0, (q31_t)0xf6182196, (q31_t)0x7f9d3dfe, (q31_t)0xf611dded, (q31_t)0x7f9cc10d, (q31_t)0xf60b9a4b, + (q31_t)0x7f9c43ce, (q31_t)0xf60556ae, + (q31_t)0x7f9bc640, (q31_t)0xf5ff1318, (q31_t)0x7f9b4863, (q31_t)0xf5f8cf87, (q31_t)0x7f9aca37, (q31_t)0xf5f28bfd, + (q31_t)0x7f9a4bbd, (q31_t)0xf5ec4879, + (q31_t)0x7f99ccf4, (q31_t)0xf5e604fc, (q31_t)0x7f994ddc, (q31_t)0xf5dfc184, (q31_t)0x7f98ce76, (q31_t)0xf5d97e13, + (q31_t)0x7f984ec1, (q31_t)0xf5d33aa8, + (q31_t)0x7f97cebd, (q31_t)0xf5ccf743, (q31_t)0x7f974e6a, (q31_t)0xf5c6b3e5, (q31_t)0x7f96cdc9, (q31_t)0xf5c0708d, + (q31_t)0x7f964cd9, (q31_t)0xf5ba2d3b, + (q31_t)0x7f95cb9a, (q31_t)0xf5b3e9f0, (q31_t)0x7f954a0d, (q31_t)0xf5ada6ab, (q31_t)0x7f94c831, (q31_t)0xf5a7636c, + (q31_t)0x7f944606, (q31_t)0xf5a12034, + (q31_t)0x7f93c38c, (q31_t)0xf59add02, (q31_t)0x7f9340c4, (q31_t)0xf59499d6, (q31_t)0x7f92bdad, (q31_t)0xf58e56b1, + (q31_t)0x7f923a48, (q31_t)0xf5881393, + (q31_t)0x7f91b694, (q31_t)0xf581d07b, (q31_t)0x7f913291, (q31_t)0xf57b8d69, (q31_t)0x7f90ae3f, (q31_t)0xf5754a5e, + (q31_t)0x7f90299f, (q31_t)0xf56f0759, + (q31_t)0x7f8fa4b0, (q31_t)0xf568c45b, (q31_t)0x7f8f1f72, (q31_t)0xf5628163, (q31_t)0x7f8e99e6, (q31_t)0xf55c3e72, + (q31_t)0x7f8e140a, (q31_t)0xf555fb88, + (q31_t)0x7f8d8de1, (q31_t)0xf54fb8a4, (q31_t)0x7f8d0768, (q31_t)0xf54975c6, (q31_t)0x7f8c80a1, (q31_t)0xf54332ef, + (q31_t)0x7f8bf98b, (q31_t)0xf53cf01f, + (q31_t)0x7f8b7227, (q31_t)0xf536ad56, (q31_t)0x7f8aea74, (q31_t)0xf5306a93, (q31_t)0x7f8a6272, (q31_t)0xf52a27d7, + (q31_t)0x7f89da21, (q31_t)0xf523e521, + (q31_t)0x7f895182, (q31_t)0xf51da273, (q31_t)0x7f88c894, (q31_t)0xf5175fca, (q31_t)0x7f883f58, (q31_t)0xf5111d29, + (q31_t)0x7f87b5cd, (q31_t)0xf50ada8f, + (q31_t)0x7f872bf3, (q31_t)0xf50497fb, (q31_t)0x7f86a1ca, (q31_t)0xf4fe556e, (q31_t)0x7f861753, (q31_t)0xf4f812e7, + (q31_t)0x7f858c8d, (q31_t)0xf4f1d068, + (q31_t)0x7f850179, (q31_t)0xf4eb8def, (q31_t)0x7f847616, (q31_t)0xf4e54b7d, (q31_t)0x7f83ea64, (q31_t)0xf4df0912, + (q31_t)0x7f835e64, (q31_t)0xf4d8c6ae, + (q31_t)0x7f82d214, (q31_t)0xf4d28451, (q31_t)0x7f824577, (q31_t)0xf4cc41fb, (q31_t)0x7f81b88a, (q31_t)0xf4c5ffab, + (q31_t)0x7f812b4f, (q31_t)0xf4bfbd63, + (q31_t)0x7f809dc5, (q31_t)0xf4b97b21, (q31_t)0x7f800fed, (q31_t)0xf4b338e7, (q31_t)0x7f7f81c6, (q31_t)0xf4acf6b3, + (q31_t)0x7f7ef350, (q31_t)0xf4a6b486, + (q31_t)0x7f7e648c, (q31_t)0xf4a07261, (q31_t)0x7f7dd579, (q31_t)0xf49a3042, (q31_t)0x7f7d4617, (q31_t)0xf493ee2b, + (q31_t)0x7f7cb667, (q31_t)0xf48dac1a, + (q31_t)0x7f7c2668, (q31_t)0xf4876a10, (q31_t)0x7f7b961b, (q31_t)0xf481280e, (q31_t)0x7f7b057e, (q31_t)0xf47ae613, + (q31_t)0x7f7a7494, (q31_t)0xf474a41f, + (q31_t)0x7f79e35a, (q31_t)0xf46e6231, (q31_t)0x7f7951d2, (q31_t)0xf468204b, (q31_t)0x7f78bffb, (q31_t)0xf461de6d, + (q31_t)0x7f782dd6, (q31_t)0xf45b9c95, + (q31_t)0x7f779b62, (q31_t)0xf4555ac5, (q31_t)0x7f77089f, (q31_t)0xf44f18fb, (q31_t)0x7f76758e, (q31_t)0xf448d739, + (q31_t)0x7f75e22e, (q31_t)0xf442957e, + (q31_t)0x7f754e80, (q31_t)0xf43c53cb, (q31_t)0x7f74ba83, (q31_t)0xf436121e, (q31_t)0x7f742637, (q31_t)0xf42fd079, + (q31_t)0x7f73919d, (q31_t)0xf4298edc, + (q31_t)0x7f72fcb4, (q31_t)0xf4234d45, (q31_t)0x7f72677c, (q31_t)0xf41d0bb6, (q31_t)0x7f71d1f6, (q31_t)0xf416ca2e, + (q31_t)0x7f713c21, (q31_t)0xf41088ae, + (q31_t)0x7f70a5fe, (q31_t)0xf40a4735, (q31_t)0x7f700f8c, (q31_t)0xf40405c3, (q31_t)0x7f6f78cb, (q31_t)0xf3fdc459, + (q31_t)0x7f6ee1bc, (q31_t)0xf3f782f6, + (q31_t)0x7f6e4a5e, (q31_t)0xf3f1419a, (q31_t)0x7f6db2b1, (q31_t)0xf3eb0046, (q31_t)0x7f6d1ab6, (q31_t)0xf3e4bef9, + (q31_t)0x7f6c826d, (q31_t)0xf3de7db4, + (q31_t)0x7f6be9d4, (q31_t)0xf3d83c77, (q31_t)0x7f6b50ed, (q31_t)0xf3d1fb40, (q31_t)0x7f6ab7b8, (q31_t)0xf3cbba12, + (q31_t)0x7f6a1e34, (q31_t)0xf3c578eb, + (q31_t)0x7f698461, (q31_t)0xf3bf37cb, (q31_t)0x7f68ea40, (q31_t)0xf3b8f6b3, (q31_t)0x7f684fd0, (q31_t)0xf3b2b5a3, + (q31_t)0x7f67b512, (q31_t)0xf3ac749a, + (q31_t)0x7f671a05, (q31_t)0xf3a63398, (q31_t)0x7f667ea9, (q31_t)0xf39ff29f, (q31_t)0x7f65e2ff, (q31_t)0xf399b1ad, + (q31_t)0x7f654706, (q31_t)0xf39370c2, + (q31_t)0x7f64aabf, (q31_t)0xf38d2fe0, (q31_t)0x7f640e29, (q31_t)0xf386ef05, (q31_t)0x7f637144, (q31_t)0xf380ae31, + (q31_t)0x7f62d411, (q31_t)0xf37a6d66, + (q31_t)0x7f62368f, (q31_t)0xf3742ca2, (q31_t)0x7f6198bf, (q31_t)0xf36debe6, (q31_t)0x7f60faa0, (q31_t)0xf367ab31, + (q31_t)0x7f605c33, (q31_t)0xf3616a85, + (q31_t)0x7f5fbd77, (q31_t)0xf35b29e0, (q31_t)0x7f5f1e6c, (q31_t)0xf354e943, (q31_t)0x7f5e7f13, (q31_t)0xf34ea8ae, + (q31_t)0x7f5ddf6b, (q31_t)0xf3486820, + (q31_t)0x7f5d3f75, (q31_t)0xf342279b, (q31_t)0x7f5c9f30, (q31_t)0xf33be71d, (q31_t)0x7f5bfe9d, (q31_t)0xf335a6a7, + (q31_t)0x7f5b5dbb, (q31_t)0xf32f6639, + (q31_t)0x7f5abc8a, (q31_t)0xf32925d3, (q31_t)0x7f5a1b0b, (q31_t)0xf322e575, (q31_t)0x7f59793e, (q31_t)0xf31ca51f, + (q31_t)0x7f58d721, (q31_t)0xf31664d1, + (q31_t)0x7f5834b7, (q31_t)0xf310248a, (q31_t)0x7f5791fd, (q31_t)0xf309e44c, (q31_t)0x7f56eef5, (q31_t)0xf303a416, + (q31_t)0x7f564b9f, (q31_t)0xf2fd63e8, + (q31_t)0x7f55a7fa, (q31_t)0xf2f723c1, (q31_t)0x7f550407, (q31_t)0xf2f0e3a3, (q31_t)0x7f545fc5, (q31_t)0xf2eaa38d, + (q31_t)0x7f53bb34, (q31_t)0xf2e4637f, + (q31_t)0x7f531655, (q31_t)0xf2de2379, (q31_t)0x7f527127, (q31_t)0xf2d7e37b, (q31_t)0x7f51cbab, (q31_t)0xf2d1a385, + (q31_t)0x7f5125e0, (q31_t)0xf2cb6398, + (q31_t)0x7f507fc7, (q31_t)0xf2c523b2, (q31_t)0x7f4fd95f, (q31_t)0xf2bee3d5, (q31_t)0x7f4f32a9, (q31_t)0xf2b8a400, + (q31_t)0x7f4e8ba4, (q31_t)0xf2b26433, + (q31_t)0x7f4de451, (q31_t)0xf2ac246e, (q31_t)0x7f4d3caf, (q31_t)0xf2a5e4b1, (q31_t)0x7f4c94be, (q31_t)0xf29fa4fd, + (q31_t)0x7f4bec7f, (q31_t)0xf2996551, + (q31_t)0x7f4b43f2, (q31_t)0xf29325ad, (q31_t)0x7f4a9b16, (q31_t)0xf28ce612, (q31_t)0x7f49f1eb, (q31_t)0xf286a67e, + (q31_t)0x7f494872, (q31_t)0xf28066f4, + (q31_t)0x7f489eaa, (q31_t)0xf27a2771, (q31_t)0x7f47f494, (q31_t)0xf273e7f7, (q31_t)0x7f474a30, (q31_t)0xf26da885, + (q31_t)0x7f469f7d, (q31_t)0xf267691b, + (q31_t)0x7f45f47b, (q31_t)0xf26129ba, (q31_t)0x7f45492b, (q31_t)0xf25aea61, (q31_t)0x7f449d8c, (q31_t)0xf254ab11, + (q31_t)0x7f43f19f, (q31_t)0xf24e6bc9, + (q31_t)0x7f434563, (q31_t)0xf2482c8a, (q31_t)0x7f4298d9, (q31_t)0xf241ed53, (q31_t)0x7f41ec01, (q31_t)0xf23bae24, + (q31_t)0x7f413ed9, (q31_t)0xf2356efe, + (q31_t)0x7f409164, (q31_t)0xf22f2fe1, (q31_t)0x7f3fe3a0, (q31_t)0xf228f0cc, (q31_t)0x7f3f358d, (q31_t)0xf222b1c0, + (q31_t)0x7f3e872c, (q31_t)0xf21c72bc, + (q31_t)0x7f3dd87c, (q31_t)0xf21633c0, (q31_t)0x7f3d297e, (q31_t)0xf20ff4ce, (q31_t)0x7f3c7a31, (q31_t)0xf209b5e4, + (q31_t)0x7f3bca96, (q31_t)0xf2037702, + (q31_t)0x7f3b1aad, (q31_t)0xf1fd3829, (q31_t)0x7f3a6a75, (q31_t)0xf1f6f959, (q31_t)0x7f39b9ee, (q31_t)0xf1f0ba91, + (q31_t)0x7f390919, (q31_t)0xf1ea7bd2, + (q31_t)0x7f3857f6, (q31_t)0xf1e43d1c, (q31_t)0x7f37a684, (q31_t)0xf1ddfe6f, (q31_t)0x7f36f4c3, (q31_t)0xf1d7bfca, + (q31_t)0x7f3642b4, (q31_t)0xf1d1812e, + (q31_t)0x7f359057, (q31_t)0xf1cb429a, (q31_t)0x7f34ddab, (q31_t)0xf1c50410, (q31_t)0x7f342ab1, (q31_t)0xf1bec58e, + (q31_t)0x7f337768, (q31_t)0xf1b88715, + (q31_t)0x7f32c3d1, (q31_t)0xf1b248a5, (q31_t)0x7f320feb, (q31_t)0xf1ac0a3e, (q31_t)0x7f315bb7, (q31_t)0xf1a5cbdf, + (q31_t)0x7f30a734, (q31_t)0xf19f8d89, + (q31_t)0x7f2ff263, (q31_t)0xf1994f3d, (q31_t)0x7f2f3d44, (q31_t)0xf19310f9, (q31_t)0x7f2e87d6, (q31_t)0xf18cd2be, + (q31_t)0x7f2dd219, (q31_t)0xf186948c, + (q31_t)0x7f2d1c0e, (q31_t)0xf1805662, (q31_t)0x7f2c65b5, (q31_t)0xf17a1842, (q31_t)0x7f2baf0d, (q31_t)0xf173da2b, + (q31_t)0x7f2af817, (q31_t)0xf16d9c1d, + (q31_t)0x7f2a40d2, (q31_t)0xf1675e17, (q31_t)0x7f29893f, (q31_t)0xf161201b, (q31_t)0x7f28d15d, (q31_t)0xf15ae228, + (q31_t)0x7f28192d, (q31_t)0xf154a43d, + (q31_t)0x7f2760af, (q31_t)0xf14e665c, (q31_t)0x7f26a7e2, (q31_t)0xf1482884, (q31_t)0x7f25eec7, (q31_t)0xf141eab5, + (q31_t)0x7f25355d, (q31_t)0xf13bacef, + (q31_t)0x7f247ba5, (q31_t)0xf1356f32, (q31_t)0x7f23c19e, (q31_t)0xf12f317e, (q31_t)0x7f230749, (q31_t)0xf128f3d4, + (q31_t)0x7f224ca6, (q31_t)0xf122b632, + (q31_t)0x7f2191b4, (q31_t)0xf11c789a, (q31_t)0x7f20d674, (q31_t)0xf1163b0b, (q31_t)0x7f201ae5, (q31_t)0xf10ffd85, + (q31_t)0x7f1f5f08, (q31_t)0xf109c009, + (q31_t)0x7f1ea2dc, (q31_t)0xf1038295, (q31_t)0x7f1de662, (q31_t)0xf0fd452b, (q31_t)0x7f1d299a, (q31_t)0xf0f707ca, + (q31_t)0x7f1c6c83, (q31_t)0xf0f0ca72, + (q31_t)0x7f1baf1e, (q31_t)0xf0ea8d24, (q31_t)0x7f1af16a, (q31_t)0xf0e44fdf, (q31_t)0x7f1a3368, (q31_t)0xf0de12a3, + (q31_t)0x7f197518, (q31_t)0xf0d7d571, + (q31_t)0x7f18b679, (q31_t)0xf0d19848, (q31_t)0x7f17f78c, (q31_t)0xf0cb5b28, (q31_t)0x7f173850, (q31_t)0xf0c51e12, + (q31_t)0x7f1678c6, (q31_t)0xf0bee105, + (q31_t)0x7f15b8ee, (q31_t)0xf0b8a401, (q31_t)0x7f14f8c7, (q31_t)0xf0b26707, (q31_t)0x7f143852, (q31_t)0xf0ac2a16, + (q31_t)0x7f13778e, (q31_t)0xf0a5ed2f, + (q31_t)0x7f12b67c, (q31_t)0xf09fb051, (q31_t)0x7f11f51c, (q31_t)0xf099737d, (q31_t)0x7f11336d, (q31_t)0xf09336b2, + (q31_t)0x7f107170, (q31_t)0xf08cf9f1, + (q31_t)0x7f0faf25, (q31_t)0xf086bd39, (q31_t)0x7f0eec8b, (q31_t)0xf080808b, (q31_t)0x7f0e29a3, (q31_t)0xf07a43e7, + (q31_t)0x7f0d666c, (q31_t)0xf074074c, + (q31_t)0x7f0ca2e7, (q31_t)0xf06dcaba, (q31_t)0x7f0bdf14, (q31_t)0xf0678e32, (q31_t)0x7f0b1af2, (q31_t)0xf06151b4, + (q31_t)0x7f0a5682, (q31_t)0xf05b1540, + (q31_t)0x7f0991c4, (q31_t)0xf054d8d5, (q31_t)0x7f08ccb7, (q31_t)0xf04e9c73, (q31_t)0x7f08075c, (q31_t)0xf048601c, + (q31_t)0x7f0741b2, (q31_t)0xf04223ce, + (q31_t)0x7f067bba, (q31_t)0xf03be78a, (q31_t)0x7f05b574, (q31_t)0xf035ab4f, (q31_t)0x7f04eedf, (q31_t)0xf02f6f1f, + (q31_t)0x7f0427fc, (q31_t)0xf02932f8, + (q31_t)0x7f0360cb, (q31_t)0xf022f6da, (q31_t)0x7f02994b, (q31_t)0xf01cbac7, (q31_t)0x7f01d17d, (q31_t)0xf0167ebd, + (q31_t)0x7f010961, (q31_t)0xf01042be, + (q31_t)0x7f0040f6, (q31_t)0xf00a06c8, (q31_t)0x7eff783d, (q31_t)0xf003cadc, (q31_t)0x7efeaf36, (q31_t)0xeffd8ef9, + (q31_t)0x7efde5e0, (q31_t)0xeff75321, + (q31_t)0x7efd1c3c, (q31_t)0xeff11753, (q31_t)0x7efc524a, (q31_t)0xefeadb8e, (q31_t)0x7efb8809, (q31_t)0xefe49fd3, + (q31_t)0x7efabd7a, (q31_t)0xefde6423, + (q31_t)0x7ef9f29d, (q31_t)0xefd8287c, (q31_t)0x7ef92771, (q31_t)0xefd1ecdf, (q31_t)0x7ef85bf7, (q31_t)0xefcbb14c, + (q31_t)0x7ef7902f, (q31_t)0xefc575c3, + (q31_t)0x7ef6c418, (q31_t)0xefbf3a45, (q31_t)0x7ef5f7b3, (q31_t)0xefb8fed0, (q31_t)0x7ef52b00, (q31_t)0xefb2c365, + (q31_t)0x7ef45dfe, (q31_t)0xefac8804, + (q31_t)0x7ef390ae, (q31_t)0xefa64cae, (q31_t)0x7ef2c310, (q31_t)0xefa01161, (q31_t)0x7ef1f524, (q31_t)0xef99d61f, + (q31_t)0x7ef126e9, (q31_t)0xef939ae6, + (q31_t)0x7ef05860, (q31_t)0xef8d5fb8, (q31_t)0x7eef8988, (q31_t)0xef872494, (q31_t)0x7eeeba62, (q31_t)0xef80e97a, + (q31_t)0x7eedeaee, (q31_t)0xef7aae6b, + (q31_t)0x7eed1b2c, (q31_t)0xef747365, (q31_t)0x7eec4b1b, (q31_t)0xef6e386a, (q31_t)0x7eeb7abc, (q31_t)0xef67fd79, + (q31_t)0x7eeaaa0f, (q31_t)0xef61c292, + (q31_t)0x7ee9d914, (q31_t)0xef5b87b5, (q31_t)0x7ee907ca, (q31_t)0xef554ce3, (q31_t)0x7ee83632, (q31_t)0xef4f121b, + (q31_t)0x7ee7644c, (q31_t)0xef48d75d, + (q31_t)0x7ee69217, (q31_t)0xef429caa, (q31_t)0x7ee5bf94, (q31_t)0xef3c6201, (q31_t)0x7ee4ecc3, (q31_t)0xef362762, + (q31_t)0x7ee419a3, (q31_t)0xef2feccd, + (q31_t)0x7ee34636, (q31_t)0xef29b243, (q31_t)0x7ee2727a, (q31_t)0xef2377c4, (q31_t)0x7ee19e6f, (q31_t)0xef1d3d4e, + (q31_t)0x7ee0ca17, (q31_t)0xef1702e4, + (q31_t)0x7edff570, (q31_t)0xef10c883, (q31_t)0x7edf207b, (q31_t)0xef0a8e2d, (q31_t)0x7ede4b38, (q31_t)0xef0453e2, + (q31_t)0x7edd75a6, (q31_t)0xeefe19a1, + (q31_t)0x7edc9fc6, (q31_t)0xeef7df6a, (q31_t)0x7edbc998, (q31_t)0xeef1a53e, (q31_t)0x7edaf31c, (q31_t)0xeeeb6b1c, + (q31_t)0x7eda1c51, (q31_t)0xeee53105, + (q31_t)0x7ed94538, (q31_t)0xeedef6f9, (q31_t)0x7ed86dd1, (q31_t)0xeed8bcf7, (q31_t)0x7ed7961c, (q31_t)0xeed28300, + (q31_t)0x7ed6be18, (q31_t)0xeecc4913, + (q31_t)0x7ed5e5c6, (q31_t)0xeec60f31, (q31_t)0x7ed50d26, (q31_t)0xeebfd55a, (q31_t)0x7ed43438, (q31_t)0xeeb99b8d, + (q31_t)0x7ed35afb, (q31_t)0xeeb361cb, + (q31_t)0x7ed28171, (q31_t)0xeead2813, (q31_t)0x7ed1a798, (q31_t)0xeea6ee66, (q31_t)0x7ed0cd70, (q31_t)0xeea0b4c4, + (q31_t)0x7ecff2fb, (q31_t)0xee9a7b2d, + (q31_t)0x7ecf1837, (q31_t)0xee9441a0, (q31_t)0x7ece3d25, (q31_t)0xee8e081e, (q31_t)0x7ecd61c5, (q31_t)0xee87cea7, + (q31_t)0x7ecc8617, (q31_t)0xee81953b, + (q31_t)0x7ecbaa1a, (q31_t)0xee7b5bd9, (q31_t)0x7ecacdd0, (q31_t)0xee752283, (q31_t)0x7ec9f137, (q31_t)0xee6ee937, + (q31_t)0x7ec9144f, (q31_t)0xee68aff6, + (q31_t)0x7ec8371a, (q31_t)0xee6276bf, (q31_t)0x7ec75996, (q31_t)0xee5c3d94, (q31_t)0x7ec67bc5, (q31_t)0xee560473, + (q31_t)0x7ec59da5, (q31_t)0xee4fcb5e, + (q31_t)0x7ec4bf36, (q31_t)0xee499253, (q31_t)0x7ec3e07a, (q31_t)0xee435953, (q31_t)0x7ec3016f, (q31_t)0xee3d205e, + (q31_t)0x7ec22217, (q31_t)0xee36e775, + (q31_t)0x7ec14270, (q31_t)0xee30ae96, (q31_t)0x7ec0627a, (q31_t)0xee2a75c2, (q31_t)0x7ebf8237, (q31_t)0xee243cf9, + (q31_t)0x7ebea1a6, (q31_t)0xee1e043b, + (q31_t)0x7ebdc0c6, (q31_t)0xee17cb88, (q31_t)0x7ebcdf98, (q31_t)0xee1192e0, (q31_t)0x7ebbfe1c, (q31_t)0xee0b5a43, + (q31_t)0x7ebb1c52, (q31_t)0xee0521b2, + (q31_t)0x7eba3a39, (q31_t)0xedfee92b, (q31_t)0x7eb957d2, (q31_t)0xedf8b0b0, (q31_t)0x7eb8751e, (q31_t)0xedf2783f, + (q31_t)0x7eb7921b, (q31_t)0xedec3fda, + (q31_t)0x7eb6aeca, (q31_t)0xede60780, (q31_t)0x7eb5cb2a, (q31_t)0xeddfcf31, (q31_t)0x7eb4e73d, (q31_t)0xedd996ed, + (q31_t)0x7eb40301, (q31_t)0xedd35eb5, + (q31_t)0x7eb31e78, (q31_t)0xedcd2687, (q31_t)0x7eb239a0, (q31_t)0xedc6ee65, (q31_t)0x7eb1547a, (q31_t)0xedc0b64e, + (q31_t)0x7eb06f05, (q31_t)0xedba7e43, + (q31_t)0x7eaf8943, (q31_t)0xedb44642, (q31_t)0x7eaea333, (q31_t)0xedae0e4d, (q31_t)0x7eadbcd4, (q31_t)0xeda7d664, + (q31_t)0x7eacd627, (q31_t)0xeda19e85, + (q31_t)0x7eabef2c, (q31_t)0xed9b66b2, (q31_t)0x7eab07e3, (q31_t)0xed952eea, (q31_t)0x7eaa204c, (q31_t)0xed8ef72e, + (q31_t)0x7ea93867, (q31_t)0xed88bf7d, + (q31_t)0x7ea85033, (q31_t)0xed8287d7, (q31_t)0x7ea767b2, (q31_t)0xed7c503d, (q31_t)0x7ea67ee2, (q31_t)0xed7618ae, + (q31_t)0x7ea595c4, (q31_t)0xed6fe12b, + (q31_t)0x7ea4ac58, (q31_t)0xed69a9b3, (q31_t)0x7ea3c29e, (q31_t)0xed637246, (q31_t)0x7ea2d896, (q31_t)0xed5d3ae5, + (q31_t)0x7ea1ee3f, (q31_t)0xed570390, + (q31_t)0x7ea1039b, (q31_t)0xed50cc46, (q31_t)0x7ea018a8, (q31_t)0xed4a9507, (q31_t)0x7e9f2d68, (q31_t)0xed445dd5, + (q31_t)0x7e9e41d9, (q31_t)0xed3e26ad, + (q31_t)0x7e9d55fc, (q31_t)0xed37ef91, (q31_t)0x7e9c69d1, (q31_t)0xed31b881, (q31_t)0x7e9b7d58, (q31_t)0xed2b817d, + (q31_t)0x7e9a9091, (q31_t)0xed254a84, + (q31_t)0x7e99a37c, (q31_t)0xed1f1396, (q31_t)0x7e98b618, (q31_t)0xed18dcb5, (q31_t)0x7e97c867, (q31_t)0xed12a5df, + (q31_t)0x7e96da67, (q31_t)0xed0c6f14, + (q31_t)0x7e95ec1a, (q31_t)0xed063856, (q31_t)0x7e94fd7e, (q31_t)0xed0001a3, (q31_t)0x7e940e94, (q31_t)0xecf9cafb, + (q31_t)0x7e931f5c, (q31_t)0xecf39460, + (q31_t)0x7e922fd6, (q31_t)0xeced5dd0, (q31_t)0x7e914002, (q31_t)0xece7274c, (q31_t)0x7e904fe0, (q31_t)0xece0f0d4, + (q31_t)0x7e8f5f70, (q31_t)0xecdaba67, + (q31_t)0x7e8e6eb2, (q31_t)0xecd48407, (q31_t)0x7e8d7da6, (q31_t)0xecce4db2, (q31_t)0x7e8c8c4b, (q31_t)0xecc81769, + (q31_t)0x7e8b9aa3, (q31_t)0xecc1e12c, + (q31_t)0x7e8aa8ac, (q31_t)0xecbbaafb, (q31_t)0x7e89b668, (q31_t)0xecb574d5, (q31_t)0x7e88c3d5, (q31_t)0xecaf3ebc, + (q31_t)0x7e87d0f5, (q31_t)0xeca908ae, + (q31_t)0x7e86ddc6, (q31_t)0xeca2d2ad, (q31_t)0x7e85ea49, (q31_t)0xec9c9cb7, (q31_t)0x7e84f67e, (q31_t)0xec9666cd, + (q31_t)0x7e840265, (q31_t)0xec9030f0, + (q31_t)0x7e830dff, (q31_t)0xec89fb1e, (q31_t)0x7e82194a, (q31_t)0xec83c558, (q31_t)0x7e812447, (q31_t)0xec7d8f9e, + (q31_t)0x7e802ef6, (q31_t)0xec7759f1, + (q31_t)0x7e7f3957, (q31_t)0xec71244f, (q31_t)0x7e7e436a, (q31_t)0xec6aeeba, (q31_t)0x7e7d4d2f, (q31_t)0xec64b930, + (q31_t)0x7e7c56a5, (q31_t)0xec5e83b3, + (q31_t)0x7e7b5fce, (q31_t)0xec584e41, (q31_t)0x7e7a68a9, (q31_t)0xec5218dc, (q31_t)0x7e797136, (q31_t)0xec4be383, + (q31_t)0x7e787975, (q31_t)0xec45ae36, + (q31_t)0x7e778166, (q31_t)0xec3f78f6, (q31_t)0x7e768908, (q31_t)0xec3943c1, (q31_t)0x7e75905d, (q31_t)0xec330e99, + (q31_t)0x7e749764, (q31_t)0xec2cd97d, + (q31_t)0x7e739e1d, (q31_t)0xec26a46d, (q31_t)0x7e72a488, (q31_t)0xec206f69, (q31_t)0x7e71aaa4, (q31_t)0xec1a3a72, + (q31_t)0x7e70b073, (q31_t)0xec140587, + (q31_t)0x7e6fb5f4, (q31_t)0xec0dd0a8, (q31_t)0x7e6ebb27, (q31_t)0xec079bd6, (q31_t)0x7e6dc00c, (q31_t)0xec01670f, + (q31_t)0x7e6cc4a2, (q31_t)0xebfb3256, + (q31_t)0x7e6bc8eb, (q31_t)0xebf4fda8, (q31_t)0x7e6acce6, (q31_t)0xebeec907, (q31_t)0x7e69d093, (q31_t)0xebe89472, + (q31_t)0x7e68d3f2, (q31_t)0xebe25fea, + (q31_t)0x7e67d703, (q31_t)0xebdc2b6e, (q31_t)0x7e66d9c6, (q31_t)0xebd5f6fe, (q31_t)0x7e65dc3b, (q31_t)0xebcfc29b, + (q31_t)0x7e64de62, (q31_t)0xebc98e45, + (q31_t)0x7e63e03b, (q31_t)0xebc359fb, (q31_t)0x7e62e1c6, (q31_t)0xebbd25bd, (q31_t)0x7e61e303, (q31_t)0xebb6f18c, + (q31_t)0x7e60e3f2, (q31_t)0xebb0bd67, + (q31_t)0x7e5fe493, (q31_t)0xebaa894f, (q31_t)0x7e5ee4e6, (q31_t)0xeba45543, (q31_t)0x7e5de4ec, (q31_t)0xeb9e2144, + (q31_t)0x7e5ce4a3, (q31_t)0xeb97ed52, + (q31_t)0x7e5be40c, (q31_t)0xeb91b96c, (q31_t)0x7e5ae328, (q31_t)0xeb8b8593, (q31_t)0x7e59e1f5, (q31_t)0xeb8551c6, + (q31_t)0x7e58e075, (q31_t)0xeb7f1e06, + (q31_t)0x7e57dea7, (q31_t)0xeb78ea52, (q31_t)0x7e56dc8a, (q31_t)0xeb72b6ac, (q31_t)0x7e55da20, (q31_t)0xeb6c8312, + (q31_t)0x7e54d768, (q31_t)0xeb664f84, + (q31_t)0x7e53d462, (q31_t)0xeb601c04, (q31_t)0x7e52d10e, (q31_t)0xeb59e890, (q31_t)0x7e51cd6c, (q31_t)0xeb53b529, + (q31_t)0x7e50c97c, (q31_t)0xeb4d81ce, + (q31_t)0x7e4fc53e, (q31_t)0xeb474e81, (q31_t)0x7e4ec0b2, (q31_t)0xeb411b40, (q31_t)0x7e4dbbd9, (q31_t)0xeb3ae80c, + (q31_t)0x7e4cb6b1, (q31_t)0xeb34b4e4, + (q31_t)0x7e4bb13c, (q31_t)0xeb2e81ca, (q31_t)0x7e4aab78, (q31_t)0xeb284ebc, (q31_t)0x7e49a567, (q31_t)0xeb221bbb, + (q31_t)0x7e489f08, (q31_t)0xeb1be8c8, + (q31_t)0x7e47985b, (q31_t)0xeb15b5e1, (q31_t)0x7e469160, (q31_t)0xeb0f8307, (q31_t)0x7e458a17, (q31_t)0xeb095039, + (q31_t)0x7e448281, (q31_t)0xeb031d79, + (q31_t)0x7e437a9c, (q31_t)0xeafceac6, (q31_t)0x7e427269, (q31_t)0xeaf6b81f, (q31_t)0x7e4169e9, (q31_t)0xeaf08586, + (q31_t)0x7e40611b, (q31_t)0xeaea52fa, + (q31_t)0x7e3f57ff, (q31_t)0xeae4207a, (q31_t)0x7e3e4e95, (q31_t)0xeaddee08, (q31_t)0x7e3d44dd, (q31_t)0xead7bba3, + (q31_t)0x7e3c3ad7, (q31_t)0xead1894b, + (q31_t)0x7e3b3083, (q31_t)0xeacb56ff, (q31_t)0x7e3a25e2, (q31_t)0xeac524c1, (q31_t)0x7e391af3, (q31_t)0xeabef290, + (q31_t)0x7e380fb5, (q31_t)0xeab8c06c, + (q31_t)0x7e37042a, (q31_t)0xeab28e56, (q31_t)0x7e35f851, (q31_t)0xeaac5c4c, (q31_t)0x7e34ec2b, (q31_t)0xeaa62a4f, + (q31_t)0x7e33dfb6, (q31_t)0xea9ff860, + (q31_t)0x7e32d2f4, (q31_t)0xea99c67e, (q31_t)0x7e31c5e3, (q31_t)0xea9394a9, (q31_t)0x7e30b885, (q31_t)0xea8d62e1, + (q31_t)0x7e2faad9, (q31_t)0xea873127, + (q31_t)0x7e2e9cdf, (q31_t)0xea80ff7a, (q31_t)0x7e2d8e97, (q31_t)0xea7acdda, (q31_t)0x7e2c8002, (q31_t)0xea749c47, + (q31_t)0x7e2b711f, (q31_t)0xea6e6ac2, + (q31_t)0x7e2a61ed, (q31_t)0xea683949, (q31_t)0x7e29526e, (q31_t)0xea6207df, (q31_t)0x7e2842a2, (q31_t)0xea5bd681, + (q31_t)0x7e273287, (q31_t)0xea55a531, + (q31_t)0x7e26221f, (q31_t)0xea4f73ee, (q31_t)0x7e251168, (q31_t)0xea4942b9, (q31_t)0x7e240064, (q31_t)0xea431191, + (q31_t)0x7e22ef12, (q31_t)0xea3ce077, + (q31_t)0x7e21dd73, (q31_t)0xea36af69, (q31_t)0x7e20cb85, (q31_t)0xea307e6a, (q31_t)0x7e1fb94a, (q31_t)0xea2a4d78, + (q31_t)0x7e1ea6c1, (q31_t)0xea241c93, + (q31_t)0x7e1d93ea, (q31_t)0xea1debbb, (q31_t)0x7e1c80c5, (q31_t)0xea17baf2, (q31_t)0x7e1b6d53, (q31_t)0xea118a35, + (q31_t)0x7e1a5992, (q31_t)0xea0b5987, + (q31_t)0x7e194584, (q31_t)0xea0528e5, (q31_t)0x7e183128, (q31_t)0xe9fef852, (q31_t)0x7e171c7f, (q31_t)0xe9f8c7cc, + (q31_t)0x7e160787, (q31_t)0xe9f29753, + (q31_t)0x7e14f242, (q31_t)0xe9ec66e8, (q31_t)0x7e13dcaf, (q31_t)0xe9e6368b, (q31_t)0x7e12c6ce, (q31_t)0xe9e0063c, + (q31_t)0x7e11b0a0, (q31_t)0xe9d9d5fa, + (q31_t)0x7e109a24, (q31_t)0xe9d3a5c5, (q31_t)0x7e0f835a, (q31_t)0xe9cd759f, (q31_t)0x7e0e6c42, (q31_t)0xe9c74586, + (q31_t)0x7e0d54dc, (q31_t)0xe9c1157a, + (q31_t)0x7e0c3d29, (q31_t)0xe9bae57d, (q31_t)0x7e0b2528, (q31_t)0xe9b4b58d, (q31_t)0x7e0a0cd9, (q31_t)0xe9ae85ab, + (q31_t)0x7e08f43d, (q31_t)0xe9a855d7, + (q31_t)0x7e07db52, (q31_t)0xe9a22610, (q31_t)0x7e06c21a, (q31_t)0xe99bf658, (q31_t)0x7e05a894, (q31_t)0xe995c6ad, + (q31_t)0x7e048ec1, (q31_t)0xe98f9710, + (q31_t)0x7e0374a0, (q31_t)0xe9896781, (q31_t)0x7e025a31, (q31_t)0xe98337ff, (q31_t)0x7e013f74, (q31_t)0xe97d088c, + (q31_t)0x7e00246a, (q31_t)0xe976d926, + (q31_t)0x7dff0911, (q31_t)0xe970a9ce, (q31_t)0x7dfded6c, (q31_t)0xe96a7a85, (q31_t)0x7dfcd178, (q31_t)0xe9644b49, + (q31_t)0x7dfbb537, (q31_t)0xe95e1c1b, + (q31_t)0x7dfa98a8, (q31_t)0xe957ecfb, (q31_t)0x7df97bcb, (q31_t)0xe951bde9, (q31_t)0x7df85ea0, (q31_t)0xe94b8ee5, + (q31_t)0x7df74128, (q31_t)0xe9455fef, + (q31_t)0x7df62362, (q31_t)0xe93f3107, (q31_t)0x7df5054f, (q31_t)0xe939022d, (q31_t)0x7df3e6ee, (q31_t)0xe932d361, + (q31_t)0x7df2c83f, (q31_t)0xe92ca4a4, + (q31_t)0x7df1a942, (q31_t)0xe92675f4, (q31_t)0x7df089f8, (q31_t)0xe9204752, (q31_t)0x7def6a60, (q31_t)0xe91a18bf, + (q31_t)0x7dee4a7a, (q31_t)0xe913ea39, + (q31_t)0x7ded2a47, (q31_t)0xe90dbbc2, (q31_t)0x7dec09c6, (q31_t)0xe9078d59, (q31_t)0x7deae8f7, (q31_t)0xe9015efe, + (q31_t)0x7de9c7da, (q31_t)0xe8fb30b1, + (q31_t)0x7de8a670, (q31_t)0xe8f50273, (q31_t)0x7de784b9, (q31_t)0xe8eed443, (q31_t)0x7de662b3, (q31_t)0xe8e8a621, + (q31_t)0x7de54060, (q31_t)0xe8e2780d, + (q31_t)0x7de41dc0, (q31_t)0xe8dc4a07, (q31_t)0x7de2fad1, (q31_t)0xe8d61c10, (q31_t)0x7de1d795, (q31_t)0xe8cfee27, + (q31_t)0x7de0b40b, (q31_t)0xe8c9c04c, + (q31_t)0x7ddf9034, (q31_t)0xe8c39280, (q31_t)0x7dde6c0f, (q31_t)0xe8bd64c2, (q31_t)0x7ddd479d, (q31_t)0xe8b73712, + (q31_t)0x7ddc22dc, (q31_t)0xe8b10971, + (q31_t)0x7ddafdce, (q31_t)0xe8aadbde, (q31_t)0x7dd9d873, (q31_t)0xe8a4ae59, (q31_t)0x7dd8b2ca, (q31_t)0xe89e80e3, + (q31_t)0x7dd78cd3, (q31_t)0xe898537b, + (q31_t)0x7dd6668f, (q31_t)0xe8922622, (q31_t)0x7dd53ffc, (q31_t)0xe88bf8d7, (q31_t)0x7dd4191d, (q31_t)0xe885cb9a, + (q31_t)0x7dd2f1f0, (q31_t)0xe87f9e6c, + (q31_t)0x7dd1ca75, (q31_t)0xe879714d, (q31_t)0x7dd0a2ac, (q31_t)0xe873443c, (q31_t)0x7dcf7a96, (q31_t)0xe86d173a, + (q31_t)0x7dce5232, (q31_t)0xe866ea46, + (q31_t)0x7dcd2981, (q31_t)0xe860bd61, (q31_t)0x7dcc0082, (q31_t)0xe85a908a, (q31_t)0x7dcad736, (q31_t)0xe85463c2, + (q31_t)0x7dc9ad9c, (q31_t)0xe84e3708, + (q31_t)0x7dc883b4, (q31_t)0xe8480a5d, (q31_t)0x7dc7597f, (q31_t)0xe841ddc1, (q31_t)0x7dc62efc, (q31_t)0xe83bb133, + (q31_t)0x7dc5042b, (q31_t)0xe83584b4, + (q31_t)0x7dc3d90d, (q31_t)0xe82f5844, (q31_t)0x7dc2ada2, (q31_t)0xe8292be3, (q31_t)0x7dc181e8, (q31_t)0xe822ff90, + (q31_t)0x7dc055e2, (q31_t)0xe81cd34b, + (q31_t)0x7dbf298d, (q31_t)0xe816a716, (q31_t)0x7dbdfceb, (q31_t)0xe8107aef, (q31_t)0x7dbccffc, (q31_t)0xe80a4ed7, + (q31_t)0x7dbba2bf, (q31_t)0xe80422ce, + (q31_t)0x7dba7534, (q31_t)0xe7fdf6d4, (q31_t)0x7db9475c, (q31_t)0xe7f7cae8, (q31_t)0x7db81936, (q31_t)0xe7f19f0c, + (q31_t)0x7db6eac3, (q31_t)0xe7eb733e, + (q31_t)0x7db5bc02, (q31_t)0xe7e5477f, (q31_t)0x7db48cf4, (q31_t)0xe7df1bcf, (q31_t)0x7db35d98, (q31_t)0xe7d8f02d, + (q31_t)0x7db22def, (q31_t)0xe7d2c49b, + (q31_t)0x7db0fdf8, (q31_t)0xe7cc9917, (q31_t)0x7dafcdb3, (q31_t)0xe7c66da3, (q31_t)0x7dae9d21, (q31_t)0xe7c0423d, + (q31_t)0x7dad6c42, (q31_t)0xe7ba16e7, + (q31_t)0x7dac3b15, (q31_t)0xe7b3eb9f, (q31_t)0x7dab099a, (q31_t)0xe7adc066, (q31_t)0x7da9d7d2, (q31_t)0xe7a7953d, + (q31_t)0x7da8a5bc, (q31_t)0xe7a16a22, + (q31_t)0x7da77359, (q31_t)0xe79b3f16, (q31_t)0x7da640a9, (q31_t)0xe795141a, (q31_t)0x7da50dab, (q31_t)0xe78ee92c, + (q31_t)0x7da3da5f, (q31_t)0xe788be4e, + (q31_t)0x7da2a6c6, (q31_t)0xe782937e, (q31_t)0x7da172df, (q31_t)0xe77c68be, (q31_t)0x7da03eab, (q31_t)0xe7763e0d, + (q31_t)0x7d9f0a29, (q31_t)0xe770136b, + (q31_t)0x7d9dd55a, (q31_t)0xe769e8d8, (q31_t)0x7d9ca03e, (q31_t)0xe763be55, (q31_t)0x7d9b6ad3, (q31_t)0xe75d93e0, + (q31_t)0x7d9a351c, (q31_t)0xe757697b, + (q31_t)0x7d98ff17, (q31_t)0xe7513f25, (q31_t)0x7d97c8c4, (q31_t)0xe74b14de, (q31_t)0x7d969224, (q31_t)0xe744eaa6, + (q31_t)0x7d955b37, (q31_t)0xe73ec07e, + (q31_t)0x7d9423fc, (q31_t)0xe7389665, (q31_t)0x7d92ec73, (q31_t)0xe7326c5b, (q31_t)0x7d91b49e, (q31_t)0xe72c4260, + (q31_t)0x7d907c7a, (q31_t)0xe7261875, + (q31_t)0x7d8f4409, (q31_t)0xe71fee99, (q31_t)0x7d8e0b4b, (q31_t)0xe719c4cd, (q31_t)0x7d8cd240, (q31_t)0xe7139b10, + (q31_t)0x7d8b98e6, (q31_t)0xe70d7162, + (q31_t)0x7d8a5f40, (q31_t)0xe70747c4, (q31_t)0x7d89254c, (q31_t)0xe7011e35, (q31_t)0x7d87eb0a, (q31_t)0xe6faf4b5, + (q31_t)0x7d86b07c, (q31_t)0xe6f4cb45, + (q31_t)0x7d85759f, (q31_t)0xe6eea1e4, (q31_t)0x7d843a76, (q31_t)0xe6e87893, (q31_t)0x7d82fefe, (q31_t)0xe6e24f51, + (q31_t)0x7d81c33a, (q31_t)0xe6dc261f, + (q31_t)0x7d808728, (q31_t)0xe6d5fcfc, (q31_t)0x7d7f4ac8, (q31_t)0xe6cfd3e9, (q31_t)0x7d7e0e1c, (q31_t)0xe6c9aae5, + (q31_t)0x7d7cd121, (q31_t)0xe6c381f1, + (q31_t)0x7d7b93da, (q31_t)0xe6bd590d, (q31_t)0x7d7a5645, (q31_t)0xe6b73038, (q31_t)0x7d791862, (q31_t)0xe6b10772, + (q31_t)0x7d77da32, (q31_t)0xe6aadebc, + (q31_t)0x7d769bb5, (q31_t)0xe6a4b616, (q31_t)0x7d755cea, (q31_t)0xe69e8d80, (q31_t)0x7d741dd2, (q31_t)0xe69864f9, + (q31_t)0x7d72de6d, (q31_t)0xe6923c82, + (q31_t)0x7d719eba, (q31_t)0xe68c141a, (q31_t)0x7d705eba, (q31_t)0xe685ebc2, (q31_t)0x7d6f1e6c, (q31_t)0xe67fc37a, + (q31_t)0x7d6dddd2, (q31_t)0xe6799b42, + (q31_t)0x7d6c9ce9, (q31_t)0xe6737319, (q31_t)0x7d6b5bb4, (q31_t)0xe66d4b01, (q31_t)0x7d6a1a31, (q31_t)0xe66722f7, + (q31_t)0x7d68d860, (q31_t)0xe660fafe, + (q31_t)0x7d679642, (q31_t)0xe65ad315, (q31_t)0x7d6653d7, (q31_t)0xe654ab3b, (q31_t)0x7d65111f, (q31_t)0xe64e8371, + (q31_t)0x7d63ce19, (q31_t)0xe6485bb7, + (q31_t)0x7d628ac6, (q31_t)0xe642340d, (q31_t)0x7d614725, (q31_t)0xe63c0c73, (q31_t)0x7d600338, (q31_t)0xe635e4e9, + (q31_t)0x7d5ebefc, (q31_t)0xe62fbd6e, + (q31_t)0x7d5d7a74, (q31_t)0xe6299604, (q31_t)0x7d5c359e, (q31_t)0xe6236ea9, (q31_t)0x7d5af07b, (q31_t)0xe61d475e, + (q31_t)0x7d59ab0a, (q31_t)0xe6172024, + (q31_t)0x7d58654d, (q31_t)0xe610f8f9, (q31_t)0x7d571f41, (q31_t)0xe60ad1de, (q31_t)0x7d55d8e9, (q31_t)0xe604aad4, + (q31_t)0x7d549243, (q31_t)0xe5fe83d9, + (q31_t)0x7d534b50, (q31_t)0xe5f85cef, (q31_t)0x7d520410, (q31_t)0xe5f23614, (q31_t)0x7d50bc82, (q31_t)0xe5ec0f4a, + (q31_t)0x7d4f74a7, (q31_t)0xe5e5e88f, + (q31_t)0x7d4e2c7f, (q31_t)0xe5dfc1e5, (q31_t)0x7d4ce409, (q31_t)0xe5d99b4b, (q31_t)0x7d4b9b46, (q31_t)0xe5d374c1, + (q31_t)0x7d4a5236, (q31_t)0xe5cd4e47, + (q31_t)0x7d4908d9, (q31_t)0xe5c727dd, (q31_t)0x7d47bf2e, (q31_t)0xe5c10184, (q31_t)0x7d467536, (q31_t)0xe5badb3a, + (q31_t)0x7d452af1, (q31_t)0xe5b4b501, + (q31_t)0x7d43e05e, (q31_t)0xe5ae8ed8, (q31_t)0x7d42957e, (q31_t)0xe5a868bf, (q31_t)0x7d414a51, (q31_t)0xe5a242b7, + (q31_t)0x7d3ffed7, (q31_t)0xe59c1cbf, + (q31_t)0x7d3eb30f, (q31_t)0xe595f6d7, (q31_t)0x7d3d66fa, (q31_t)0xe58fd0ff, (q31_t)0x7d3c1a98, (q31_t)0xe589ab38, + (q31_t)0x7d3acde9, (q31_t)0xe5838581, + (q31_t)0x7d3980ec, (q31_t)0xe57d5fda, (q31_t)0x7d3833a2, (q31_t)0xe5773a44, (q31_t)0x7d36e60b, (q31_t)0xe57114be, + (q31_t)0x7d359827, (q31_t)0xe56aef49, + (q31_t)0x7d3449f5, (q31_t)0xe564c9e3, (q31_t)0x7d32fb76, (q31_t)0xe55ea48f, (q31_t)0x7d31acaa, (q31_t)0xe5587f4a, + (q31_t)0x7d305d91, (q31_t)0xe5525a17, + (q31_t)0x7d2f0e2b, (q31_t)0xe54c34f3, (q31_t)0x7d2dbe77, (q31_t)0xe5460fe0, (q31_t)0x7d2c6e76, (q31_t)0xe53feade, + (q31_t)0x7d2b1e28, (q31_t)0xe539c5ec, + (q31_t)0x7d29cd8c, (q31_t)0xe533a10a, (q31_t)0x7d287ca4, (q31_t)0xe52d7c39, (q31_t)0x7d272b6e, (q31_t)0xe5275779, + (q31_t)0x7d25d9eb, (q31_t)0xe52132c9, + (q31_t)0x7d24881b, (q31_t)0xe51b0e2a, (q31_t)0x7d2335fe, (q31_t)0xe514e99b, (q31_t)0x7d21e393, (q31_t)0xe50ec51d, + (q31_t)0x7d2090db, (q31_t)0xe508a0b0, + (q31_t)0x7d1f3dd6, (q31_t)0xe5027c53, (q31_t)0x7d1dea84, (q31_t)0xe4fc5807, (q31_t)0x7d1c96e5, (q31_t)0xe4f633cc, + (q31_t)0x7d1b42f9, (q31_t)0xe4f00fa1, + (q31_t)0x7d19eebf, (q31_t)0xe4e9eb87, (q31_t)0x7d189a38, (q31_t)0xe4e3c77d, (q31_t)0x7d174564, (q31_t)0xe4dda385, + (q31_t)0x7d15f043, (q31_t)0xe4d77f9d, + (q31_t)0x7d149ad5, (q31_t)0xe4d15bc6, (q31_t)0x7d134519, (q31_t)0xe4cb37ff, (q31_t)0x7d11ef11, (q31_t)0xe4c5144a, + (q31_t)0x7d1098bb, (q31_t)0xe4bef0a5, + (q31_t)0x7d0f4218, (q31_t)0xe4b8cd11, (q31_t)0x7d0deb28, (q31_t)0xe4b2a98e, (q31_t)0x7d0c93eb, (q31_t)0xe4ac861b, + (q31_t)0x7d0b3c60, (q31_t)0xe4a662ba, + (q31_t)0x7d09e489, (q31_t)0xe4a03f69, (q31_t)0x7d088c64, (q31_t)0xe49a1c29, (q31_t)0x7d0733f3, (q31_t)0xe493f8fb, + (q31_t)0x7d05db34, (q31_t)0xe48dd5dd, + (q31_t)0x7d048228, (q31_t)0xe487b2d0, (q31_t)0x7d0328cf, (q31_t)0xe4818fd4, (q31_t)0x7d01cf29, (q31_t)0xe47b6ce9, + (q31_t)0x7d007535, (q31_t)0xe4754a0e, + (q31_t)0x7cff1af5, (q31_t)0xe46f2745, (q31_t)0x7cfdc068, (q31_t)0xe469048d, (q31_t)0x7cfc658d, (q31_t)0xe462e1e6, + (q31_t)0x7cfb0a65, (q31_t)0xe45cbf50, + (q31_t)0x7cf9aef0, (q31_t)0xe4569ccb, (q31_t)0x7cf8532f, (q31_t)0xe4507a57, (q31_t)0x7cf6f720, (q31_t)0xe44a57f4, + (q31_t)0x7cf59ac4, (q31_t)0xe44435a2, + (q31_t)0x7cf43e1a, (q31_t)0xe43e1362, (q31_t)0x7cf2e124, (q31_t)0xe437f132, (q31_t)0x7cf183e1, (q31_t)0xe431cf14, + (q31_t)0x7cf02651, (q31_t)0xe42bad07, + (q31_t)0x7ceec873, (q31_t)0xe4258b0a, (q31_t)0x7ced6a49, (q31_t)0xe41f6920, (q31_t)0x7cec0bd1, (q31_t)0xe4194746, + (q31_t)0x7ceaad0c, (q31_t)0xe413257d, + (q31_t)0x7ce94dfb, (q31_t)0xe40d03c6, (q31_t)0x7ce7ee9c, (q31_t)0xe406e220, (q31_t)0x7ce68ef0, (q31_t)0xe400c08b, + (q31_t)0x7ce52ef7, (q31_t)0xe3fa9f08, + (q31_t)0x7ce3ceb2, (q31_t)0xe3f47d96, (q31_t)0x7ce26e1f, (q31_t)0xe3ee5c35, (q31_t)0x7ce10d3f, (q31_t)0xe3e83ae5, + (q31_t)0x7cdfac12, (q31_t)0xe3e219a7, + (q31_t)0x7cde4a98, (q31_t)0xe3dbf87a, (q31_t)0x7cdce8d1, (q31_t)0xe3d5d75e, (q31_t)0x7cdb86bd, (q31_t)0xe3cfb654, + (q31_t)0x7cda245c, (q31_t)0xe3c9955b, + (q31_t)0x7cd8c1ae, (q31_t)0xe3c37474, (q31_t)0x7cd75eb3, (q31_t)0xe3bd539e, (q31_t)0x7cd5fb6a, (q31_t)0xe3b732d9, + (q31_t)0x7cd497d5, (q31_t)0xe3b11226, + (q31_t)0x7cd333f3, (q31_t)0xe3aaf184, (q31_t)0x7cd1cfc4, (q31_t)0xe3a4d0f4, (q31_t)0x7cd06b48, (q31_t)0xe39eb075, + (q31_t)0x7ccf067f, (q31_t)0xe3989008, + (q31_t)0x7ccda169, (q31_t)0xe3926fad, (q31_t)0x7ccc3c06, (q31_t)0xe38c4f63, (q31_t)0x7ccad656, (q31_t)0xe3862f2a, + (q31_t)0x7cc97059, (q31_t)0xe3800f03, + (q31_t)0x7cc80a0f, (q31_t)0xe379eeed, (q31_t)0x7cc6a378, (q31_t)0xe373ceea, (q31_t)0x7cc53c94, (q31_t)0xe36daef7, + (q31_t)0x7cc3d563, (q31_t)0xe3678f17, + (q31_t)0x7cc26de5, (q31_t)0xe3616f48, (q31_t)0x7cc1061a, (q31_t)0xe35b4f8b, (q31_t)0x7cbf9e03, (q31_t)0xe3552fdf, + (q31_t)0x7cbe359e, (q31_t)0xe34f1045, + (q31_t)0x7cbcccec, (q31_t)0xe348f0bd, (q31_t)0x7cbb63ee, (q31_t)0xe342d146, (q31_t)0x7cb9faa2, (q31_t)0xe33cb1e1, + (q31_t)0x7cb8910a, (q31_t)0xe336928e, + (q31_t)0x7cb72724, (q31_t)0xe330734d, (q31_t)0x7cb5bcf2, (q31_t)0xe32a541d, (q31_t)0x7cb45272, (q31_t)0xe3243500, + (q31_t)0x7cb2e7a6, (q31_t)0xe31e15f4, + (q31_t)0x7cb17c8d, (q31_t)0xe317f6fa, (q31_t)0x7cb01127, (q31_t)0xe311d811, (q31_t)0x7caea574, (q31_t)0xe30bb93b, + (q31_t)0x7cad3974, (q31_t)0xe3059a76, + (q31_t)0x7cabcd28, (q31_t)0xe2ff7bc3, (q31_t)0x7caa608e, (q31_t)0xe2f95d23, (q31_t)0x7ca8f3a7, (q31_t)0xe2f33e94, + (q31_t)0x7ca78674, (q31_t)0xe2ed2017, + (q31_t)0x7ca618f3, (q31_t)0xe2e701ac, (q31_t)0x7ca4ab26, (q31_t)0xe2e0e352, (q31_t)0x7ca33d0c, (q31_t)0xe2dac50b, + (q31_t)0x7ca1cea5, (q31_t)0xe2d4a6d6, + (q31_t)0x7ca05ff1, (q31_t)0xe2ce88b3, (q31_t)0x7c9ef0f0, (q31_t)0xe2c86aa2, (q31_t)0x7c9d81a3, (q31_t)0xe2c24ca2, + (q31_t)0x7c9c1208, (q31_t)0xe2bc2eb5, + (q31_t)0x7c9aa221, (q31_t)0xe2b610da, (q31_t)0x7c9931ec, (q31_t)0xe2aff311, (q31_t)0x7c97c16b, (q31_t)0xe2a9d55a, + (q31_t)0x7c96509d, (q31_t)0xe2a3b7b5, + (q31_t)0x7c94df83, (q31_t)0xe29d9a23, (q31_t)0x7c936e1b, (q31_t)0xe2977ca2, (q31_t)0x7c91fc66, (q31_t)0xe2915f34, + (q31_t)0x7c908a65, (q31_t)0xe28b41d7, + (q31_t)0x7c8f1817, (q31_t)0xe285248d, (q31_t)0x7c8da57c, (q31_t)0xe27f0755, (q31_t)0x7c8c3294, (q31_t)0xe278ea30, + (q31_t)0x7c8abf5f, (q31_t)0xe272cd1c, + (q31_t)0x7c894bde, (q31_t)0xe26cb01b, (q31_t)0x7c87d810, (q31_t)0xe266932c, (q31_t)0x7c8663f4, (q31_t)0xe260764f, + (q31_t)0x7c84ef8c, (q31_t)0xe25a5984, + (q31_t)0x7c837ad8, (q31_t)0xe2543ccc, (q31_t)0x7c8205d6, (q31_t)0xe24e2026, (q31_t)0x7c809088, (q31_t)0xe2480393, + (q31_t)0x7c7f1aed, (q31_t)0xe241e711, + (q31_t)0x7c7da505, (q31_t)0xe23bcaa2, (q31_t)0x7c7c2ed0, (q31_t)0xe235ae46, (q31_t)0x7c7ab84e, (q31_t)0xe22f91fc, + (q31_t)0x7c794180, (q31_t)0xe22975c4, + (q31_t)0x7c77ca65, (q31_t)0xe223599e, (q31_t)0x7c7652fd, (q31_t)0xe21d3d8b, (q31_t)0x7c74db48, (q31_t)0xe217218b, + (q31_t)0x7c736347, (q31_t)0xe211059d, + (q31_t)0x7c71eaf9, (q31_t)0xe20ae9c1, (q31_t)0x7c70725e, (q31_t)0xe204cdf8, (q31_t)0x7c6ef976, (q31_t)0xe1feb241, + (q31_t)0x7c6d8041, (q31_t)0xe1f8969d, + (q31_t)0x7c6c06c0, (q31_t)0xe1f27b0b, (q31_t)0x7c6a8cf2, (q31_t)0xe1ec5f8c, (q31_t)0x7c6912d7, (q31_t)0xe1e64420, + (q31_t)0x7c679870, (q31_t)0xe1e028c6, + (q31_t)0x7c661dbc, (q31_t)0xe1da0d7e, (q31_t)0x7c64a2bb, (q31_t)0xe1d3f24a, (q31_t)0x7c63276d, (q31_t)0xe1cdd727, + (q31_t)0x7c61abd3, (q31_t)0xe1c7bc18, + (q31_t)0x7c602fec, (q31_t)0xe1c1a11b, (q31_t)0x7c5eb3b8, (q31_t)0xe1bb8631, (q31_t)0x7c5d3737, (q31_t)0xe1b56b59, + (q31_t)0x7c5bba6a, (q31_t)0xe1af5094, + (q31_t)0x7c5a3d50, (q31_t)0xe1a935e2, (q31_t)0x7c58bfe9, (q31_t)0xe1a31b42, (q31_t)0x7c574236, (q31_t)0xe19d00b6, + (q31_t)0x7c55c436, (q31_t)0xe196e63c, + (q31_t)0x7c5445e9, (q31_t)0xe190cbd4, (q31_t)0x7c52c74f, (q31_t)0xe18ab180, (q31_t)0x7c514869, (q31_t)0xe184973e, + (q31_t)0x7c4fc936, (q31_t)0xe17e7d0f, + (q31_t)0x7c4e49b7, (q31_t)0xe17862f3, (q31_t)0x7c4cc9ea, (q31_t)0xe17248ea, (q31_t)0x7c4b49d2, (q31_t)0xe16c2ef4, + (q31_t)0x7c49c96c, (q31_t)0xe1661510, + (q31_t)0x7c4848ba, (q31_t)0xe15ffb3f, (q31_t)0x7c46c7bb, (q31_t)0xe159e182, (q31_t)0x7c45466f, (q31_t)0xe153c7d7, + (q31_t)0x7c43c4d7, (q31_t)0xe14dae3f, + (q31_t)0x7c4242f2, (q31_t)0xe14794ba, (q31_t)0x7c40c0c1, (q31_t)0xe1417b48, (q31_t)0x7c3f3e42, (q31_t)0xe13b61e9, + (q31_t)0x7c3dbb78, (q31_t)0xe135489d, + (q31_t)0x7c3c3860, (q31_t)0xe12f2f63, (q31_t)0x7c3ab4fc, (q31_t)0xe129163d, (q31_t)0x7c39314b, (q31_t)0xe122fd2a, + (q31_t)0x7c37ad4e, (q31_t)0xe11ce42a, + (q31_t)0x7c362904, (q31_t)0xe116cb3d, (q31_t)0x7c34a46d, (q31_t)0xe110b263, (q31_t)0x7c331f8a, (q31_t)0xe10a999c, + (q31_t)0x7c319a5a, (q31_t)0xe10480e9, + (q31_t)0x7c3014de, (q31_t)0xe0fe6848, (q31_t)0x7c2e8f15, (q31_t)0xe0f84fbb, (q31_t)0x7c2d08ff, (q31_t)0xe0f23740, + (q31_t)0x7c2b829d, (q31_t)0xe0ec1ed9, + (q31_t)0x7c29fbee, (q31_t)0xe0e60685, (q31_t)0x7c2874f3, (q31_t)0xe0dfee44, (q31_t)0x7c26edab, (q31_t)0xe0d9d616, + (q31_t)0x7c256616, (q31_t)0xe0d3bdfc, + (q31_t)0x7c23de35, (q31_t)0xe0cda5f5, (q31_t)0x7c225607, (q31_t)0xe0c78e01, (q31_t)0x7c20cd8d, (q31_t)0xe0c17620, + (q31_t)0x7c1f44c6, (q31_t)0xe0bb5e53, + (q31_t)0x7c1dbbb3, (q31_t)0xe0b54698, (q31_t)0x7c1c3253, (q31_t)0xe0af2ef2, (q31_t)0x7c1aa8a6, (q31_t)0xe0a9175e, + (q31_t)0x7c191ead, (q31_t)0xe0a2ffde, + (q31_t)0x7c179467, (q31_t)0xe09ce871, (q31_t)0x7c1609d5, (q31_t)0xe096d117, (q31_t)0x7c147ef6, (q31_t)0xe090b9d1, + (q31_t)0x7c12f3cb, (q31_t)0xe08aa29f, + (q31_t)0x7c116853, (q31_t)0xe0848b7f, (q31_t)0x7c0fdc8f, (q31_t)0xe07e7473, (q31_t)0x7c0e507e, (q31_t)0xe0785d7b, + (q31_t)0x7c0cc421, (q31_t)0xe0724696, + (q31_t)0x7c0b3777, (q31_t)0xe06c2fc4, (q31_t)0x7c09aa80, (q31_t)0xe0661906, (q31_t)0x7c081d3d, (q31_t)0xe060025c, + (q31_t)0x7c068fae, (q31_t)0xe059ebc5, + (q31_t)0x7c0501d2, (q31_t)0xe053d541, (q31_t)0x7c0373a9, (q31_t)0xe04dbed1, (q31_t)0x7c01e534, (q31_t)0xe047a875, + (q31_t)0x7c005673, (q31_t)0xe041922c, + (q31_t)0x7bfec765, (q31_t)0xe03b7bf6, (q31_t)0x7bfd380a, (q31_t)0xe03565d5, (q31_t)0x7bfba863, (q31_t)0xe02f4fc6, + (q31_t)0x7bfa1870, (q31_t)0xe02939cc, + (q31_t)0x7bf88830, (q31_t)0xe02323e5, (q31_t)0x7bf6f7a4, (q31_t)0xe01d0e12, (q31_t)0x7bf566cb, (q31_t)0xe016f852, + (q31_t)0x7bf3d5a6, (q31_t)0xe010e2a7, + (q31_t)0x7bf24434, (q31_t)0xe00acd0e, (q31_t)0x7bf0b276, (q31_t)0xe004b78a, (q31_t)0x7bef206b, (q31_t)0xdffea219, + (q31_t)0x7bed8e14, (q31_t)0xdff88cbc, + (q31_t)0x7bebfb70, (q31_t)0xdff27773, (q31_t)0x7bea6880, (q31_t)0xdfec623e, (q31_t)0x7be8d544, (q31_t)0xdfe64d1c, + (q31_t)0x7be741bb, (q31_t)0xdfe0380e, + (q31_t)0x7be5ade6, (q31_t)0xdfda2314, (q31_t)0x7be419c4, (q31_t)0xdfd40e2e, (q31_t)0x7be28556, (q31_t)0xdfcdf95c, + (q31_t)0x7be0f09b, (q31_t)0xdfc7e49d, + (q31_t)0x7bdf5b94, (q31_t)0xdfc1cff3, (q31_t)0x7bddc641, (q31_t)0xdfbbbb5c, (q31_t)0x7bdc30a1, (q31_t)0xdfb5a6d9, + (q31_t)0x7bda9ab5, (q31_t)0xdfaf926a, + (q31_t)0x7bd9047c, (q31_t)0xdfa97e0f, (q31_t)0x7bd76df7, (q31_t)0xdfa369c8, (q31_t)0x7bd5d726, (q31_t)0xdf9d5595, + (q31_t)0x7bd44008, (q31_t)0xdf974176, + (q31_t)0x7bd2a89e, (q31_t)0xdf912d6b, (q31_t)0x7bd110e8, (q31_t)0xdf8b1974, (q31_t)0x7bcf78e5, (q31_t)0xdf850591, + (q31_t)0x7bcde095, (q31_t)0xdf7ef1c2, + (q31_t)0x7bcc47fa, (q31_t)0xdf78de07, (q31_t)0x7bcaaf12, (q31_t)0xdf72ca60, (q31_t)0x7bc915dd, (q31_t)0xdf6cb6cd, + (q31_t)0x7bc77c5d, (q31_t)0xdf66a34e, + (q31_t)0x7bc5e290, (q31_t)0xdf608fe4, (q31_t)0x7bc44876, (q31_t)0xdf5a7c8d, (q31_t)0x7bc2ae10, (q31_t)0xdf54694b, + (q31_t)0x7bc1135e, (q31_t)0xdf4e561c, + (q31_t)0x7bbf7860, (q31_t)0xdf484302, (q31_t)0x7bbddd15, (q31_t)0xdf422ffd, (q31_t)0x7bbc417e, (q31_t)0xdf3c1d0b, + (q31_t)0x7bbaa59a, (q31_t)0xdf360a2d, + (q31_t)0x7bb9096b, (q31_t)0xdf2ff764, (q31_t)0x7bb76cef, (q31_t)0xdf29e4af, (q31_t)0x7bb5d026, (q31_t)0xdf23d20e, + (q31_t)0x7bb43311, (q31_t)0xdf1dbf82, + (q31_t)0x7bb295b0, (q31_t)0xdf17ad0a, (q31_t)0x7bb0f803, (q31_t)0xdf119aa6, (q31_t)0x7baf5a09, (q31_t)0xdf0b8856, + (q31_t)0x7badbbc3, (q31_t)0xdf05761b, + (q31_t)0x7bac1d31, (q31_t)0xdeff63f4, (q31_t)0x7baa7e53, (q31_t)0xdef951e2, (q31_t)0x7ba8df28, (q31_t)0xdef33fe3, + (q31_t)0x7ba73fb1, (q31_t)0xdeed2dfa, + (q31_t)0x7ba59fee, (q31_t)0xdee71c24, (q31_t)0x7ba3ffde, (q31_t)0xdee10a63, (q31_t)0x7ba25f82, (q31_t)0xdedaf8b7, + (q31_t)0x7ba0beda, (q31_t)0xded4e71f, + (q31_t)0x7b9f1de6, (q31_t)0xdeced59b, (q31_t)0x7b9d7ca5, (q31_t)0xdec8c42c, (q31_t)0x7b9bdb18, (q31_t)0xdec2b2d1, + (q31_t)0x7b9a393f, (q31_t)0xdebca18b, + (q31_t)0x7b989719, (q31_t)0xdeb69059, (q31_t)0x7b96f4a8, (q31_t)0xdeb07f3c, (q31_t)0x7b9551ea, (q31_t)0xdeaa6e34, + (q31_t)0x7b93aee0, (q31_t)0xdea45d40, + (q31_t)0x7b920b89, (q31_t)0xde9e4c60, (q31_t)0x7b9067e7, (q31_t)0xde983b95, (q31_t)0x7b8ec3f8, (q31_t)0xde922adf, + (q31_t)0x7b8d1fbd, (q31_t)0xde8c1a3e, + (q31_t)0x7b8b7b36, (q31_t)0xde8609b1, (q31_t)0x7b89d662, (q31_t)0xde7ff938, (q31_t)0x7b883143, (q31_t)0xde79e8d5, + (q31_t)0x7b868bd7, (q31_t)0xde73d886, + (q31_t)0x7b84e61f, (q31_t)0xde6dc84b, (q31_t)0x7b83401b, (q31_t)0xde67b826, (q31_t)0x7b8199ca, (q31_t)0xde61a815, + (q31_t)0x7b7ff32e, (q31_t)0xde5b9819, + (q31_t)0x7b7e4c45, (q31_t)0xde558831, (q31_t)0x7b7ca510, (q31_t)0xde4f785f, (q31_t)0x7b7afd8f, (q31_t)0xde4968a1, + (q31_t)0x7b7955c2, (q31_t)0xde4358f8, + (q31_t)0x7b77ada8, (q31_t)0xde3d4964, (q31_t)0x7b760542, (q31_t)0xde3739e4, (q31_t)0x7b745c91, (q31_t)0xde312a7a, + (q31_t)0x7b72b393, (q31_t)0xde2b1b24, + (q31_t)0x7b710a49, (q31_t)0xde250be3, (q31_t)0x7b6f60b2, (q31_t)0xde1efcb7, (q31_t)0x7b6db6d0, (q31_t)0xde18eda0, + (q31_t)0x7b6c0ca2, (q31_t)0xde12de9e, + (q31_t)0x7b6a6227, (q31_t)0xde0ccfb1, (q31_t)0x7b68b760, (q31_t)0xde06c0d9, (q31_t)0x7b670c4d, (q31_t)0xde00b216, + (q31_t)0x7b6560ee, (q31_t)0xddfaa367, + (q31_t)0x7b63b543, (q31_t)0xddf494ce, (q31_t)0x7b62094c, (q31_t)0xddee8649, (q31_t)0x7b605d09, (q31_t)0xdde877da, + (q31_t)0x7b5eb079, (q31_t)0xdde26980, + (q31_t)0x7b5d039e, (q31_t)0xdddc5b3b, (q31_t)0x7b5b5676, (q31_t)0xddd64d0a, (q31_t)0x7b59a902, (q31_t)0xddd03eef, + (q31_t)0x7b57fb42, (q31_t)0xddca30e9, + (q31_t)0x7b564d36, (q31_t)0xddc422f8, (q31_t)0x7b549ede, (q31_t)0xddbe151d, (q31_t)0x7b52f03a, (q31_t)0xddb80756, + (q31_t)0x7b51414a, (q31_t)0xddb1f9a4, + (q31_t)0x7b4f920e, (q31_t)0xddabec08, (q31_t)0x7b4de286, (q31_t)0xdda5de81, (q31_t)0x7b4c32b1, (q31_t)0xdd9fd10f, + (q31_t)0x7b4a8291, (q31_t)0xdd99c3b2, + (q31_t)0x7b48d225, (q31_t)0xdd93b66a, (q31_t)0x7b47216c, (q31_t)0xdd8da938, (q31_t)0x7b457068, (q31_t)0xdd879c1b, + (q31_t)0x7b43bf17, (q31_t)0xdd818f13, + (q31_t)0x7b420d7a, (q31_t)0xdd7b8220, (q31_t)0x7b405b92, (q31_t)0xdd757543, (q31_t)0x7b3ea95d, (q31_t)0xdd6f687b, + (q31_t)0x7b3cf6dc, (q31_t)0xdd695bc9, + (q31_t)0x7b3b4410, (q31_t)0xdd634f2b, (q31_t)0x7b3990f7, (q31_t)0xdd5d42a3, (q31_t)0x7b37dd92, (q31_t)0xdd573631, + (q31_t)0x7b3629e1, (q31_t)0xdd5129d4, + (q31_t)0x7b3475e5, (q31_t)0xdd4b1d8c, (q31_t)0x7b32c19c, (q31_t)0xdd451159, (q31_t)0x7b310d07, (q31_t)0xdd3f053c, + (q31_t)0x7b2f5826, (q31_t)0xdd38f935, + (q31_t)0x7b2da2fa, (q31_t)0xdd32ed43, (q31_t)0x7b2bed81, (q31_t)0xdd2ce166, (q31_t)0x7b2a37bc, (q31_t)0xdd26d59f, + (q31_t)0x7b2881ac, (q31_t)0xdd20c9ed, + (q31_t)0x7b26cb4f, (q31_t)0xdd1abe51, (q31_t)0x7b2514a6, (q31_t)0xdd14b2ca, (q31_t)0x7b235db2, (q31_t)0xdd0ea759, + (q31_t)0x7b21a671, (q31_t)0xdd089bfe, + (q31_t)0x7b1feee5, (q31_t)0xdd0290b8, (q31_t)0x7b1e370d, (q31_t)0xdcfc8588, (q31_t)0x7b1c7ee8, (q31_t)0xdcf67a6d, + (q31_t)0x7b1ac678, (q31_t)0xdcf06f68, + (q31_t)0x7b190dbc, (q31_t)0xdcea6478, (q31_t)0x7b1754b3, (q31_t)0xdce4599e, (q31_t)0x7b159b5f, (q31_t)0xdcde4eda, + (q31_t)0x7b13e1bf, (q31_t)0xdcd8442b, + (q31_t)0x7b1227d3, (q31_t)0xdcd23993, (q31_t)0x7b106d9b, (q31_t)0xdccc2f0f, (q31_t)0x7b0eb318, (q31_t)0xdcc624a2, + (q31_t)0x7b0cf848, (q31_t)0xdcc01a4a, + (q31_t)0x7b0b3d2c, (q31_t)0xdcba1008, (q31_t)0x7b0981c5, (q31_t)0xdcb405dc, (q31_t)0x7b07c612, (q31_t)0xdcadfbc5, + (q31_t)0x7b060a12, (q31_t)0xdca7f1c5, + (q31_t)0x7b044dc7, (q31_t)0xdca1e7da, (q31_t)0x7b029130, (q31_t)0xdc9bde05, (q31_t)0x7b00d44d, (q31_t)0xdc95d446, + (q31_t)0x7aff171e, (q31_t)0xdc8fca9c, + (q31_t)0x7afd59a4, (q31_t)0xdc89c109, (q31_t)0x7afb9bdd, (q31_t)0xdc83b78b, (q31_t)0x7af9ddcb, (q31_t)0xdc7dae23, + (q31_t)0x7af81f6c, (q31_t)0xdc77a4d2, + (q31_t)0x7af660c2, (q31_t)0xdc719b96, (q31_t)0x7af4a1cc, (q31_t)0xdc6b9270, (q31_t)0x7af2e28b, (q31_t)0xdc658960, + (q31_t)0x7af122fd, (q31_t)0xdc5f8066, + (q31_t)0x7aef6323, (q31_t)0xdc597781, (q31_t)0x7aeda2fe, (q31_t)0xdc536eb3, (q31_t)0x7aebe28d, (q31_t)0xdc4d65fb, + (q31_t)0x7aea21d0, (q31_t)0xdc475d59, + (q31_t)0x7ae860c7, (q31_t)0xdc4154cd, (q31_t)0x7ae69f73, (q31_t)0xdc3b4c57, (q31_t)0x7ae4ddd2, (q31_t)0xdc3543f7, + (q31_t)0x7ae31be6, (q31_t)0xdc2f3bad, + (q31_t)0x7ae159ae, (q31_t)0xdc293379, (q31_t)0x7adf972a, (q31_t)0xdc232b5c, (q31_t)0x7addd45b, (q31_t)0xdc1d2354, + (q31_t)0x7adc113f, (q31_t)0xdc171b63, + (q31_t)0x7ada4dd8, (q31_t)0xdc111388, (q31_t)0x7ad88a25, (q31_t)0xdc0b0bc2, (q31_t)0x7ad6c626, (q31_t)0xdc050414, + (q31_t)0x7ad501dc, (q31_t)0xdbfefc7b, + (q31_t)0x7ad33d45, (q31_t)0xdbf8f4f8, (q31_t)0x7ad17863, (q31_t)0xdbf2ed8c, (q31_t)0x7acfb336, (q31_t)0xdbece636, + (q31_t)0x7acdedbc, (q31_t)0xdbe6def6, + (q31_t)0x7acc27f7, (q31_t)0xdbe0d7cd, (q31_t)0x7aca61e6, (q31_t)0xdbdad0b9, (q31_t)0x7ac89b89, (q31_t)0xdbd4c9bc, + (q31_t)0x7ac6d4e0, (q31_t)0xdbcec2d6, + (q31_t)0x7ac50dec, (q31_t)0xdbc8bc06, (q31_t)0x7ac346ac, (q31_t)0xdbc2b54c, (q31_t)0x7ac17f20, (q31_t)0xdbbcaea8, + (q31_t)0x7abfb749, (q31_t)0xdbb6a81b, + (q31_t)0x7abdef25, (q31_t)0xdbb0a1a4, (q31_t)0x7abc26b7, (q31_t)0xdbaa9b43, (q31_t)0x7aba5dfc, (q31_t)0xdba494f9, + (q31_t)0x7ab894f6, (q31_t)0xdb9e8ec6, + (q31_t)0x7ab6cba4, (q31_t)0xdb9888a8, (q31_t)0x7ab50206, (q31_t)0xdb9282a2, (q31_t)0x7ab3381d, (q31_t)0xdb8c7cb1, + (q31_t)0x7ab16de7, (q31_t)0xdb8676d8, + (q31_t)0x7aafa367, (q31_t)0xdb807114, (q31_t)0x7aadd89a, (q31_t)0xdb7a6b68, (q31_t)0x7aac0d82, (q31_t)0xdb7465d1, + (q31_t)0x7aaa421e, (q31_t)0xdb6e6052, + (q31_t)0x7aa8766f, (q31_t)0xdb685ae9, (q31_t)0x7aa6aa74, (q31_t)0xdb625596, (q31_t)0x7aa4de2d, (q31_t)0xdb5c505a, + (q31_t)0x7aa3119a, (q31_t)0xdb564b35, + (q31_t)0x7aa144bc, (q31_t)0xdb504626, (q31_t)0x7a9f7793, (q31_t)0xdb4a412e, (q31_t)0x7a9daa1d, (q31_t)0xdb443c4c, + (q31_t)0x7a9bdc5c, (q31_t)0xdb3e3781, + (q31_t)0x7a9a0e50, (q31_t)0xdb3832cd, (q31_t)0x7a983ff7, (q31_t)0xdb322e30, (q31_t)0x7a967153, (q31_t)0xdb2c29a9, + (q31_t)0x7a94a264, (q31_t)0xdb262539, + (q31_t)0x7a92d329, (q31_t)0xdb2020e0, (q31_t)0x7a9103a2, (q31_t)0xdb1a1c9d, (q31_t)0x7a8f33d0, (q31_t)0xdb141871, + (q31_t)0x7a8d63b2, (q31_t)0xdb0e145c, + (q31_t)0x7a8b9348, (q31_t)0xdb08105e, (q31_t)0x7a89c293, (q31_t)0xdb020c77, (q31_t)0x7a87f192, (q31_t)0xdafc08a6, + (q31_t)0x7a862046, (q31_t)0xdaf604ec, + (q31_t)0x7a844eae, (q31_t)0xdaf00149, (q31_t)0x7a827ccb, (q31_t)0xdae9fdbd, (q31_t)0x7a80aa9c, (q31_t)0xdae3fa48, + (q31_t)0x7a7ed821, (q31_t)0xdaddf6ea, + (q31_t)0x7a7d055b, (q31_t)0xdad7f3a2, (q31_t)0x7a7b3249, (q31_t)0xdad1f072, (q31_t)0x7a795eec, (q31_t)0xdacbed58, + (q31_t)0x7a778b43, (q31_t)0xdac5ea56, + (q31_t)0x7a75b74f, (q31_t)0xdabfe76a, (q31_t)0x7a73e30f, (q31_t)0xdab9e495, (q31_t)0x7a720e84, (q31_t)0xdab3e1d8, + (q31_t)0x7a7039ad, (q31_t)0xdaaddf31, + (q31_t)0x7a6e648a, (q31_t)0xdaa7dca1, (q31_t)0x7a6c8f1c, (q31_t)0xdaa1da29, (q31_t)0x7a6ab963, (q31_t)0xda9bd7c7, + (q31_t)0x7a68e35e, (q31_t)0xda95d57d, + (q31_t)0x7a670d0d, (q31_t)0xda8fd349, (q31_t)0x7a653671, (q31_t)0xda89d12d, (q31_t)0x7a635f8a, (q31_t)0xda83cf28, + (q31_t)0x7a618857, (q31_t)0xda7dcd3a, + (q31_t)0x7a5fb0d8, (q31_t)0xda77cb63, (q31_t)0x7a5dd90e, (q31_t)0xda71c9a3, (q31_t)0x7a5c00f9, (q31_t)0xda6bc7fa, + (q31_t)0x7a5a2898, (q31_t)0xda65c669, + (q31_t)0x7a584feb, (q31_t)0xda5fc4ef, (q31_t)0x7a5676f3, (q31_t)0xda59c38c, (q31_t)0x7a549db0, (q31_t)0xda53c240, + (q31_t)0x7a52c421, (q31_t)0xda4dc10b, + (q31_t)0x7a50ea47, (q31_t)0xda47bfee, (q31_t)0x7a4f1021, (q31_t)0xda41bee8, (q31_t)0x7a4d35b0, (q31_t)0xda3bbdf9, + (q31_t)0x7a4b5af3, (q31_t)0xda35bd22, + (q31_t)0x7a497feb, (q31_t)0xda2fbc61, (q31_t)0x7a47a498, (q31_t)0xda29bbb9, (q31_t)0x7a45c8f9, (q31_t)0xda23bb27, + (q31_t)0x7a43ed0e, (q31_t)0xda1dbaad, + (q31_t)0x7a4210d8, (q31_t)0xda17ba4a, (q31_t)0x7a403457, (q31_t)0xda11b9ff, (q31_t)0x7a3e578b, (q31_t)0xda0bb9cb, + (q31_t)0x7a3c7a73, (q31_t)0xda05b9ae, + (q31_t)0x7a3a9d0f, (q31_t)0xd9ffb9a9, (q31_t)0x7a38bf60, (q31_t)0xd9f9b9bb, (q31_t)0x7a36e166, (q31_t)0xd9f3b9e5, + (q31_t)0x7a350321, (q31_t)0xd9edba26, + (q31_t)0x7a332490, (q31_t)0xd9e7ba7f, (q31_t)0x7a3145b3, (q31_t)0xd9e1baef, (q31_t)0x7a2f668c, (q31_t)0xd9dbbb77, + (q31_t)0x7a2d8719, (q31_t)0xd9d5bc16, + (q31_t)0x7a2ba75a, (q31_t)0xd9cfbccd, (q31_t)0x7a29c750, (q31_t)0xd9c9bd9b, (q31_t)0x7a27e6fb, (q31_t)0xd9c3be81, + (q31_t)0x7a26065b, (q31_t)0xd9bdbf7e, + (q31_t)0x7a24256f, (q31_t)0xd9b7c094, (q31_t)0x7a224437, (q31_t)0xd9b1c1c0, (q31_t)0x7a2062b5, (q31_t)0xd9abc305, + (q31_t)0x7a1e80e7, (q31_t)0xd9a5c461, + (q31_t)0x7a1c9ece, (q31_t)0xd99fc5d4, (q31_t)0x7a1abc69, (q31_t)0xd999c75f, (q31_t)0x7a18d9b9, (q31_t)0xd993c902, + (q31_t)0x7a16f6be, (q31_t)0xd98dcabd, + (q31_t)0x7a151378, (q31_t)0xd987cc90, (q31_t)0x7a132fe6, (q31_t)0xd981ce7a, (q31_t)0x7a114c09, (q31_t)0xd97bd07c, + (q31_t)0x7a0f67e0, (q31_t)0xd975d295, + (q31_t)0x7a0d836d, (q31_t)0xd96fd4c7, (q31_t)0x7a0b9eae, (q31_t)0xd969d710, (q31_t)0x7a09b9a4, (q31_t)0xd963d971, + (q31_t)0x7a07d44e, (q31_t)0xd95ddbea, + (q31_t)0x7a05eead, (q31_t)0xd957de7a, (q31_t)0x7a0408c1, (q31_t)0xd951e123, (q31_t)0x7a02228a, (q31_t)0xd94be3e3, + (q31_t)0x7a003c07, (q31_t)0xd945e6bb, + (q31_t)0x79fe5539, (q31_t)0xd93fe9ab, (q31_t)0x79fc6e20, (q31_t)0xd939ecb3, (q31_t)0x79fa86bc, (q31_t)0xd933efd3, + (q31_t)0x79f89f0c, (q31_t)0xd92df30b, + (q31_t)0x79f6b711, (q31_t)0xd927f65b, (q31_t)0x79f4cecb, (q31_t)0xd921f9c3, (q31_t)0x79f2e63a, (q31_t)0xd91bfd43, + (q31_t)0x79f0fd5d, (q31_t)0xd91600da, + (q31_t)0x79ef1436, (q31_t)0xd910048a, (q31_t)0x79ed2ac3, (q31_t)0xd90a0852, (q31_t)0x79eb4105, (q31_t)0xd9040c32, + (q31_t)0x79e956fb, (q31_t)0xd8fe1029, + (q31_t)0x79e76ca7, (q31_t)0xd8f81439, (q31_t)0x79e58207, (q31_t)0xd8f21861, (q31_t)0x79e3971c, (q31_t)0xd8ec1ca1, + (q31_t)0x79e1abe6, (q31_t)0xd8e620fa, + (q31_t)0x79dfc064, (q31_t)0xd8e0256a, (q31_t)0x79ddd498, (q31_t)0xd8da29f2, (q31_t)0x79dbe880, (q31_t)0xd8d42e93, + (q31_t)0x79d9fc1d, (q31_t)0xd8ce334c, + (q31_t)0x79d80f6f, (q31_t)0xd8c8381d, (q31_t)0x79d62276, (q31_t)0xd8c23d06, (q31_t)0x79d43532, (q31_t)0xd8bc4207, + (q31_t)0x79d247a2, (q31_t)0xd8b64720, + (q31_t)0x79d059c8, (q31_t)0xd8b04c52, (q31_t)0x79ce6ba2, (q31_t)0xd8aa519c, (q31_t)0x79cc7d31, (q31_t)0xd8a456ff, + (q31_t)0x79ca8e75, (q31_t)0xd89e5c79, + (q31_t)0x79c89f6e, (q31_t)0xd898620c, (q31_t)0x79c6b01b, (q31_t)0xd89267b7, (q31_t)0x79c4c07e, (q31_t)0xd88c6d7b, + (q31_t)0x79c2d095, (q31_t)0xd8867356, + (q31_t)0x79c0e062, (q31_t)0xd880794b, (q31_t)0x79beefe3, (q31_t)0xd87a7f57, (q31_t)0x79bcff19, (q31_t)0xd874857c, + (q31_t)0x79bb0e04, (q31_t)0xd86e8bb9, + (q31_t)0x79b91ca4, (q31_t)0xd868920f, (q31_t)0x79b72af9, (q31_t)0xd862987d, (q31_t)0x79b53903, (q31_t)0xd85c9f04, + (q31_t)0x79b346c2, (q31_t)0xd856a5a3, + (q31_t)0x79b15435, (q31_t)0xd850ac5a, (q31_t)0x79af615e, (q31_t)0xd84ab32a, (q31_t)0x79ad6e3c, (q31_t)0xd844ba13, + (q31_t)0x79ab7ace, (q31_t)0xd83ec114, + (q31_t)0x79a98715, (q31_t)0xd838c82d, (q31_t)0x79a79312, (q31_t)0xd832cf5f, (q31_t)0x79a59ec3, (q31_t)0xd82cd6aa, + (q31_t)0x79a3aa29, (q31_t)0xd826de0d, + (q31_t)0x79a1b545, (q31_t)0xd820e589, (q31_t)0x799fc015, (q31_t)0xd81aed1d, (q31_t)0x799dca9a, (q31_t)0xd814f4ca, + (q31_t)0x799bd4d4, (q31_t)0xd80efc8f, + (q31_t)0x7999dec4, (q31_t)0xd809046e, (q31_t)0x7997e868, (q31_t)0xd8030c64, (q31_t)0x7995f1c1, (q31_t)0xd7fd1474, + (q31_t)0x7993facf, (q31_t)0xd7f71c9c, + (q31_t)0x79920392, (q31_t)0xd7f124dd, (q31_t)0x79900c0a, (q31_t)0xd7eb2d37, (q31_t)0x798e1438, (q31_t)0xd7e535a9, + (q31_t)0x798c1c1a, (q31_t)0xd7df3e34, + (q31_t)0x798a23b1, (q31_t)0xd7d946d8, (q31_t)0x79882afd, (q31_t)0xd7d34f94, (q31_t)0x798631ff, (q31_t)0xd7cd586a, + (q31_t)0x798438b5, (q31_t)0xd7c76158, + (q31_t)0x79823f20, (q31_t)0xd7c16a5f, (q31_t)0x79804541, (q31_t)0xd7bb737f, (q31_t)0x797e4b16, (q31_t)0xd7b57cb7, + (q31_t)0x797c50a1, (q31_t)0xd7af8609, + (q31_t)0x797a55e0, (q31_t)0xd7a98f73, (q31_t)0x79785ad5, (q31_t)0xd7a398f6, (q31_t)0x79765f7f, (q31_t)0xd79da293, + (q31_t)0x797463de, (q31_t)0xd797ac48, + (q31_t)0x797267f2, (q31_t)0xd791b616, (q31_t)0x79706bbb, (q31_t)0xd78bbffc, (q31_t)0x796e6f39, (q31_t)0xd785c9fc, + (q31_t)0x796c726c, (q31_t)0xd77fd415, + (q31_t)0x796a7554, (q31_t)0xd779de47, (q31_t)0x796877f1, (q31_t)0xd773e892, (q31_t)0x79667a44, (q31_t)0xd76df2f6, + (q31_t)0x79647c4c, (q31_t)0xd767fd72, + (q31_t)0x79627e08, (q31_t)0xd7620808, (q31_t)0x79607f7a, (q31_t)0xd75c12b7, (q31_t)0x795e80a1, (q31_t)0xd7561d7f, + (q31_t)0x795c817d, (q31_t)0xd7502860, + (q31_t)0x795a820e, (q31_t)0xd74a335b, (q31_t)0x79588255, (q31_t)0xd7443e6e, (q31_t)0x79568250, (q31_t)0xd73e499a, + (q31_t)0x79548201, (q31_t)0xd73854e0, + (q31_t)0x79528167, (q31_t)0xd732603f, (q31_t)0x79508082, (q31_t)0xd72c6bb6, (q31_t)0x794e7f52, (q31_t)0xd7267748, + (q31_t)0x794c7dd7, (q31_t)0xd72082f2, + (q31_t)0x794a7c12, (q31_t)0xd71a8eb5, (q31_t)0x79487a01, (q31_t)0xd7149a92, (q31_t)0x794677a6, (q31_t)0xd70ea688, + (q31_t)0x79447500, (q31_t)0xd708b297, + (q31_t)0x79427210, (q31_t)0xd702bec0, (q31_t)0x79406ed4, (q31_t)0xd6fccb01, (q31_t)0x793e6b4e, (q31_t)0xd6f6d75d, + (q31_t)0x793c677d, (q31_t)0xd6f0e3d1, + (q31_t)0x793a6361, (q31_t)0xd6eaf05f, (q31_t)0x79385efa, (q31_t)0xd6e4fd06, (q31_t)0x79365a49, (q31_t)0xd6df09c6, + (q31_t)0x7934554d, (q31_t)0xd6d916a0, + (q31_t)0x79325006, (q31_t)0xd6d32393, (q31_t)0x79304a74, (q31_t)0xd6cd30a0, (q31_t)0x792e4497, (q31_t)0xd6c73dc6, + (q31_t)0x792c3e70, (q31_t)0xd6c14b05, + (q31_t)0x792a37fe, (q31_t)0xd6bb585e, (q31_t)0x79283141, (q31_t)0xd6b565d0, (q31_t)0x79262a3a, (q31_t)0xd6af735c, + (q31_t)0x792422e8, (q31_t)0xd6a98101, + (q31_t)0x79221b4b, (q31_t)0xd6a38ec0, (q31_t)0x79201363, (q31_t)0xd69d9c98, (q31_t)0x791e0b31, (q31_t)0xd697aa8a, + (q31_t)0x791c02b4, (q31_t)0xd691b895, + (q31_t)0x7919f9ec, (q31_t)0xd68bc6ba, (q31_t)0x7917f0d9, (q31_t)0xd685d4f9, (q31_t)0x7915e77c, (q31_t)0xd67fe351, + (q31_t)0x7913ddd4, (q31_t)0xd679f1c2, + (q31_t)0x7911d3e2, (q31_t)0xd674004e, (q31_t)0x790fc9a4, (q31_t)0xd66e0ef2, (q31_t)0x790dbf1d, (q31_t)0xd6681db1, + (q31_t)0x790bb44a, (q31_t)0xd6622c89, + (q31_t)0x7909a92d, (q31_t)0xd65c3b7b, (q31_t)0x79079dc5, (q31_t)0xd6564a87, (q31_t)0x79059212, (q31_t)0xd65059ac, + (q31_t)0x79038615, (q31_t)0xd64a68eb, + (q31_t)0x790179cd, (q31_t)0xd6447844, (q31_t)0x78ff6d3b, (q31_t)0xd63e87b6, (q31_t)0x78fd605d, (q31_t)0xd6389742, + (q31_t)0x78fb5336, (q31_t)0xd632a6e8, + (q31_t)0x78f945c3, (q31_t)0xd62cb6a8, (q31_t)0x78f73806, (q31_t)0xd626c681, (q31_t)0x78f529fe, (q31_t)0xd620d675, + (q31_t)0x78f31bac, (q31_t)0xd61ae682, + (q31_t)0x78f10d0f, (q31_t)0xd614f6a9, (q31_t)0x78eefe28, (q31_t)0xd60f06ea, (q31_t)0x78eceef6, (q31_t)0xd6091745, + (q31_t)0x78eadf79, (q31_t)0xd60327b9, + (q31_t)0x78e8cfb2, (q31_t)0xd5fd3848, (q31_t)0x78e6bfa0, (q31_t)0xd5f748f0, (q31_t)0x78e4af44, (q31_t)0xd5f159b3, + (q31_t)0x78e29e9d, (q31_t)0xd5eb6a8f, + (q31_t)0x78e08dab, (q31_t)0xd5e57b85, (q31_t)0x78de7c6f, (q31_t)0xd5df8c96, (q31_t)0x78dc6ae8, (q31_t)0xd5d99dc0, + (q31_t)0x78da5917, (q31_t)0xd5d3af04, + (q31_t)0x78d846fb, (q31_t)0xd5cdc062, (q31_t)0x78d63495, (q31_t)0xd5c7d1db, (q31_t)0x78d421e4, (q31_t)0xd5c1e36d, + (q31_t)0x78d20ee9, (q31_t)0xd5bbf519, + (q31_t)0x78cffba3, (q31_t)0xd5b606e0, (q31_t)0x78cde812, (q31_t)0xd5b018c0, (q31_t)0x78cbd437, (q31_t)0xd5aa2abb, + (q31_t)0x78c9c012, (q31_t)0xd5a43cd0, + (q31_t)0x78c7aba2, (q31_t)0xd59e4eff, (q31_t)0x78c596e7, (q31_t)0xd5986148, (q31_t)0x78c381e2, (q31_t)0xd59273ab, + (q31_t)0x78c16c93, (q31_t)0xd58c8628, + (q31_t)0x78bf56f9, (q31_t)0xd58698c0, (q31_t)0x78bd4114, (q31_t)0xd580ab72, (q31_t)0x78bb2ae5, (q31_t)0xd57abe3d, + (q31_t)0x78b9146c, (q31_t)0xd574d124, + (q31_t)0x78b6fda8, (q31_t)0xd56ee424, (q31_t)0x78b4e69a, (q31_t)0xd568f73f, (q31_t)0x78b2cf41, (q31_t)0xd5630a74, + (q31_t)0x78b0b79e, (q31_t)0xd55d1dc3, + (q31_t)0x78ae9fb0, (q31_t)0xd557312d, (q31_t)0x78ac8778, (q31_t)0xd55144b0, (q31_t)0x78aa6ef5, (q31_t)0xd54b584f, + (q31_t)0x78a85628, (q31_t)0xd5456c07, + (q31_t)0x78a63d11, (q31_t)0xd53f7fda, (q31_t)0x78a423af, (q31_t)0xd53993c7, (q31_t)0x78a20a03, (q31_t)0xd533a7cf, + (q31_t)0x789ff00c, (q31_t)0xd52dbbf1, + (q31_t)0x789dd5cb, (q31_t)0xd527d02e, (q31_t)0x789bbb3f, (q31_t)0xd521e484, (q31_t)0x7899a06a, (q31_t)0xd51bf8f6, + (q31_t)0x78978549, (q31_t)0xd5160d82, + (q31_t)0x789569df, (q31_t)0xd5102228, (q31_t)0x78934e2a, (q31_t)0xd50a36e9, (q31_t)0x7891322a, (q31_t)0xd5044bc4, + (q31_t)0x788f15e0, (q31_t)0xd4fe60ba, + (q31_t)0x788cf94c, (q31_t)0xd4f875ca, (q31_t)0x788adc6e, (q31_t)0xd4f28af5, (q31_t)0x7888bf45, (q31_t)0xd4eca03a, + (q31_t)0x7886a1d1, (q31_t)0xd4e6b59a, + (q31_t)0x78848414, (q31_t)0xd4e0cb15, (q31_t)0x7882660c, (q31_t)0xd4dae0aa, (q31_t)0x788047ba, (q31_t)0xd4d4f65a, + (q31_t)0x787e291d, (q31_t)0xd4cf0c24, + (q31_t)0x787c0a36, (q31_t)0xd4c92209, (q31_t)0x7879eb05, (q31_t)0xd4c33809, (q31_t)0x7877cb89, (q31_t)0xd4bd4e23, + (q31_t)0x7875abc3, (q31_t)0xd4b76458, + (q31_t)0x78738bb3, (q31_t)0xd4b17aa8, (q31_t)0x78716b59, (q31_t)0xd4ab9112, (q31_t)0x786f4ab4, (q31_t)0xd4a5a798, + (q31_t)0x786d29c5, (q31_t)0xd49fbe37, + (q31_t)0x786b088c, (q31_t)0xd499d4f2, (q31_t)0x7868e708, (q31_t)0xd493ebc8, (q31_t)0x7866c53a, (q31_t)0xd48e02b8, + (q31_t)0x7864a322, (q31_t)0xd48819c3, + (q31_t)0x786280bf, (q31_t)0xd48230e9, (q31_t)0x78605e13, (q31_t)0xd47c4829, (q31_t)0x785e3b1c, (q31_t)0xd4765f85, + (q31_t)0x785c17db, (q31_t)0xd47076fb, + (q31_t)0x7859f44f, (q31_t)0xd46a8e8d, (q31_t)0x7857d079, (q31_t)0xd464a639, (q31_t)0x7855ac5a, (q31_t)0xd45ebe00, + (q31_t)0x785387ef, (q31_t)0xd458d5e2, + (q31_t)0x7851633b, (q31_t)0xd452eddf, (q31_t)0x784f3e3c, (q31_t)0xd44d05f6, (q31_t)0x784d18f4, (q31_t)0xd4471e29, + (q31_t)0x784af361, (q31_t)0xd4413677, + (q31_t)0x7848cd83, (q31_t)0xd43b4ee0, (q31_t)0x7846a75c, (q31_t)0xd4356763, (q31_t)0x784480ea, (q31_t)0xd42f8002, + (q31_t)0x78425a2f, (q31_t)0xd42998bc, + (q31_t)0x78403329, (q31_t)0xd423b191, (q31_t)0x783e0bd9, (q31_t)0xd41dca81, (q31_t)0x783be43e, (q31_t)0xd417e38c, + (q31_t)0x7839bc5a, (q31_t)0xd411fcb2, + (q31_t)0x7837942b, (q31_t)0xd40c15f3, (q31_t)0x78356bb2, (q31_t)0xd4062f4f, (q31_t)0x783342ef, (q31_t)0xd40048c6, + (q31_t)0x783119e2, (q31_t)0xd3fa6259, + (q31_t)0x782ef08b, (q31_t)0xd3f47c06, (q31_t)0x782cc6ea, (q31_t)0xd3ee95cf, (q31_t)0x782a9cfe, (q31_t)0xd3e8afb3, + (q31_t)0x782872c8, (q31_t)0xd3e2c9b2, + (q31_t)0x78264849, (q31_t)0xd3dce3cd, (q31_t)0x78241d7f, (q31_t)0xd3d6fe03, (q31_t)0x7821f26b, (q31_t)0xd3d11853, + (q31_t)0x781fc70d, (q31_t)0xd3cb32c0, + (q31_t)0x781d9b65, (q31_t)0xd3c54d47, (q31_t)0x781b6f72, (q31_t)0xd3bf67ea, (q31_t)0x78194336, (q31_t)0xd3b982a8, + (q31_t)0x781716b0, (q31_t)0xd3b39d81, + (q31_t)0x7814e9df, (q31_t)0xd3adb876, (q31_t)0x7812bcc4, (q31_t)0xd3a7d385, (q31_t)0x78108f60, (q31_t)0xd3a1eeb1, + (q31_t)0x780e61b1, (q31_t)0xd39c09f7, + (q31_t)0x780c33b8, (q31_t)0xd396255a, (q31_t)0x780a0575, (q31_t)0xd39040d7, (q31_t)0x7807d6e9, (q31_t)0xd38a5c70, + (q31_t)0x7805a812, (q31_t)0xd3847824, + (q31_t)0x780378f1, (q31_t)0xd37e93f4, (q31_t)0x78014986, (q31_t)0xd378afdf, (q31_t)0x77ff19d1, (q31_t)0xd372cbe6, + (q31_t)0x77fce9d2, (q31_t)0xd36ce808, + (q31_t)0x77fab989, (q31_t)0xd3670446, (q31_t)0x77f888f6, (q31_t)0xd361209f, (q31_t)0x77f65819, (q31_t)0xd35b3d13, + (q31_t)0x77f426f2, (q31_t)0xd35559a4, + (q31_t)0x77f1f581, (q31_t)0xd34f764f, (q31_t)0x77efc3c5, (q31_t)0xd3499317, (q31_t)0x77ed91c0, (q31_t)0xd343affa, + (q31_t)0x77eb5f71, (q31_t)0xd33dccf8, + (q31_t)0x77e92cd9, (q31_t)0xd337ea12, (q31_t)0x77e6f9f6, (q31_t)0xd3320748, (q31_t)0x77e4c6c9, (q31_t)0xd32c2499, + (q31_t)0x77e29352, (q31_t)0xd3264206, + (q31_t)0x77e05f91, (q31_t)0xd3205f8f, (q31_t)0x77de2b86, (q31_t)0xd31a7d33, (q31_t)0x77dbf732, (q31_t)0xd3149af3, + (q31_t)0x77d9c293, (q31_t)0xd30eb8cf, + (q31_t)0x77d78daa, (q31_t)0xd308d6c7, (q31_t)0x77d55878, (q31_t)0xd302f4da, (q31_t)0x77d322fc, (q31_t)0xd2fd1309, + (q31_t)0x77d0ed35, (q31_t)0xd2f73154, + (q31_t)0x77ceb725, (q31_t)0xd2f14fba, (q31_t)0x77cc80cb, (q31_t)0xd2eb6e3c, (q31_t)0x77ca4a27, (q31_t)0xd2e58cdb, + (q31_t)0x77c81339, (q31_t)0xd2dfab95, + (q31_t)0x77c5dc01, (q31_t)0xd2d9ca6a, (q31_t)0x77c3a47f, (q31_t)0xd2d3e95c, (q31_t)0x77c16cb4, (q31_t)0xd2ce0869, + (q31_t)0x77bf349f, (q31_t)0xd2c82793, + (q31_t)0x77bcfc3f, (q31_t)0xd2c246d8, (q31_t)0x77bac396, (q31_t)0xd2bc6639, (q31_t)0x77b88aa3, (q31_t)0xd2b685b6, + (q31_t)0x77b65166, (q31_t)0xd2b0a54f, + (q31_t)0x77b417df, (q31_t)0xd2aac504, (q31_t)0x77b1de0f, (q31_t)0xd2a4e4d5, (q31_t)0x77afa3f5, (q31_t)0xd29f04c2, + (q31_t)0x77ad6990, (q31_t)0xd29924cb, + (q31_t)0x77ab2ee2, (q31_t)0xd29344f0, (q31_t)0x77a8f3ea, (q31_t)0xd28d6531, (q31_t)0x77a6b8a9, (q31_t)0xd287858e, + (q31_t)0x77a47d1d, (q31_t)0xd281a607, + (q31_t)0x77a24148, (q31_t)0xd27bc69c, (q31_t)0x77a00529, (q31_t)0xd275e74d, (q31_t)0x779dc8c0, (q31_t)0xd270081b, + (q31_t)0x779b8c0e, (q31_t)0xd26a2904, + (q31_t)0x77994f11, (q31_t)0xd2644a0a, (q31_t)0x779711cb, (q31_t)0xd25e6b2b, (q31_t)0x7794d43b, (q31_t)0xd2588c69, + (q31_t)0x77929661, (q31_t)0xd252adc3, + (q31_t)0x7790583e, (q31_t)0xd24ccf39, (q31_t)0x778e19d0, (q31_t)0xd246f0cb, (q31_t)0x778bdb19, (q31_t)0xd241127a, + (q31_t)0x77899c19, (q31_t)0xd23b3444, + (q31_t)0x77875cce, (q31_t)0xd235562b, (q31_t)0x77851d3a, (q31_t)0xd22f782f, (q31_t)0x7782dd5c, (q31_t)0xd2299a4e, + (q31_t)0x77809d35, (q31_t)0xd223bc8a, + (q31_t)0x777e5cc3, (q31_t)0xd21ddee2, (q31_t)0x777c1c08, (q31_t)0xd2180156, (q31_t)0x7779db03, (q31_t)0xd21223e7, + (q31_t)0x777799b5, (q31_t)0xd20c4694, + (q31_t)0x7775581d, (q31_t)0xd206695d, (q31_t)0x7773163b, (q31_t)0xd2008c43, (q31_t)0x7770d40f, (q31_t)0xd1faaf45, + (q31_t)0x776e919a, (q31_t)0xd1f4d263, + (q31_t)0x776c4edb, (q31_t)0xd1eef59e, (q31_t)0x776a0bd3, (q31_t)0xd1e918f5, (q31_t)0x7767c880, (q31_t)0xd1e33c69, + (q31_t)0x776584e5, (q31_t)0xd1dd5ff9, + (q31_t)0x776340ff, (q31_t)0xd1d783a6, (q31_t)0x7760fcd0, (q31_t)0xd1d1a76f, (q31_t)0x775eb857, (q31_t)0xd1cbcb54, + (q31_t)0x775c7395, (q31_t)0xd1c5ef56, + (q31_t)0x775a2e89, (q31_t)0xd1c01375, (q31_t)0x7757e933, (q31_t)0xd1ba37b0, (q31_t)0x7755a394, (q31_t)0xd1b45c08, + (q31_t)0x77535dab, (q31_t)0xd1ae807c, + (q31_t)0x77511778, (q31_t)0xd1a8a50d, (q31_t)0x774ed0fc, (q31_t)0xd1a2c9ba, (q31_t)0x774c8a36, (q31_t)0xd19cee84, + (q31_t)0x774a4327, (q31_t)0xd197136b, + (q31_t)0x7747fbce, (q31_t)0xd191386e, (q31_t)0x7745b42c, (q31_t)0xd18b5d8e, (q31_t)0x77436c40, (q31_t)0xd18582ca, + (q31_t)0x7741240a, (q31_t)0xd17fa823, + (q31_t)0x773edb8b, (q31_t)0xd179cd99, (q31_t)0x773c92c2, (q31_t)0xd173f32c, (q31_t)0x773a49b0, (q31_t)0xd16e18db, + (q31_t)0x77380054, (q31_t)0xd1683ea7, + (q31_t)0x7735b6af, (q31_t)0xd1626490, (q31_t)0x77336cc0, (q31_t)0xd15c8a95, (q31_t)0x77312287, (q31_t)0xd156b0b7, + (q31_t)0x772ed805, (q31_t)0xd150d6f6, + (q31_t)0x772c8d3a, (q31_t)0xd14afd52, (q31_t)0x772a4225, (q31_t)0xd14523cb, (q31_t)0x7727f6c6, (q31_t)0xd13f4a60, + (q31_t)0x7725ab1f, (q31_t)0xd1397113, + (q31_t)0x77235f2d, (q31_t)0xd13397e2, (q31_t)0x772112f2, (q31_t)0xd12dbece, (q31_t)0x771ec66e, (q31_t)0xd127e5d7, + (q31_t)0x771c79a0, (q31_t)0xd1220cfc, + (q31_t)0x771a2c88, (q31_t)0xd11c343f, (q31_t)0x7717df27, (q31_t)0xd1165b9f, (q31_t)0x7715917d, (q31_t)0xd110831b, + (q31_t)0x77134389, (q31_t)0xd10aaab5, + (q31_t)0x7710f54c, (q31_t)0xd104d26b, (q31_t)0x770ea6c5, (q31_t)0xd0fefa3f, (q31_t)0x770c57f5, (q31_t)0xd0f9222f, + (q31_t)0x770a08dc, (q31_t)0xd0f34a3d, + (q31_t)0x7707b979, (q31_t)0xd0ed7267, (q31_t)0x770569cc, (q31_t)0xd0e79aaf, (q31_t)0x770319d6, (q31_t)0xd0e1c313, + (q31_t)0x7700c997, (q31_t)0xd0dbeb95, + (q31_t)0x76fe790e, (q31_t)0xd0d61434, (q31_t)0x76fc283c, (q31_t)0xd0d03cf0, (q31_t)0x76f9d721, (q31_t)0xd0ca65c9, + (q31_t)0x76f785bc, (q31_t)0xd0c48ebf, + (q31_t)0x76f5340e, (q31_t)0xd0beb7d2, (q31_t)0x76f2e216, (q31_t)0xd0b8e102, (q31_t)0x76f08fd5, (q31_t)0xd0b30a50, + (q31_t)0x76ee3d4b, (q31_t)0xd0ad33ba, + (q31_t)0x76ebea77, (q31_t)0xd0a75d42, (q31_t)0x76e9975a, (q31_t)0xd0a186e7, (q31_t)0x76e743f4, (q31_t)0xd09bb0aa, + (q31_t)0x76e4f044, (q31_t)0xd095da89, + (q31_t)0x76e29c4b, (q31_t)0xd0900486, (q31_t)0x76e04808, (q31_t)0xd08a2ea0, (q31_t)0x76ddf37c, (q31_t)0xd08458d7, + (q31_t)0x76db9ea7, (q31_t)0xd07e832c, + (q31_t)0x76d94989, (q31_t)0xd078ad9e, (q31_t)0x76d6f421, (q31_t)0xd072d82d, (q31_t)0x76d49e70, (q31_t)0xd06d02da, + (q31_t)0x76d24876, (q31_t)0xd0672da3, + (q31_t)0x76cff232, (q31_t)0xd061588b, (q31_t)0x76cd9ba5, (q31_t)0xd05b838f, (q31_t)0x76cb44cf, (q31_t)0xd055aeb1, + (q31_t)0x76c8edb0, (q31_t)0xd04fd9f1, + (q31_t)0x76c69647, (q31_t)0xd04a054e, (q31_t)0x76c43e95, (q31_t)0xd04430c8, (q31_t)0x76c1e699, (q31_t)0xd03e5c60, + (q31_t)0x76bf8e55, (q31_t)0xd0388815, + (q31_t)0x76bd35c7, (q31_t)0xd032b3e7, (q31_t)0x76badcf0, (q31_t)0xd02cdfd8, (q31_t)0x76b883d0, (q31_t)0xd0270be5, + (q31_t)0x76b62a66, (q31_t)0xd0213810, + (q31_t)0x76b3d0b4, (q31_t)0xd01b6459, (q31_t)0x76b176b8, (q31_t)0xd01590bf, (q31_t)0x76af1c72, (q31_t)0xd00fbd43, + (q31_t)0x76acc1e4, (q31_t)0xd009e9e4, + (q31_t)0x76aa670d, (q31_t)0xd00416a3, (q31_t)0x76a80bec, (q31_t)0xcffe4380, (q31_t)0x76a5b082, (q31_t)0xcff8707a, + (q31_t)0x76a354cf, (q31_t)0xcff29d92, + (q31_t)0x76a0f8d2, (q31_t)0xcfeccac7, (q31_t)0x769e9c8d, (q31_t)0xcfe6f81a, (q31_t)0x769c3ffe, (q31_t)0xcfe1258b, + (q31_t)0x7699e326, (q31_t)0xcfdb531a, + (q31_t)0x76978605, (q31_t)0xcfd580c6, (q31_t)0x7695289b, (q31_t)0xcfcfae8f, (q31_t)0x7692cae8, (q31_t)0xcfc9dc77, + (q31_t)0x76906ceb, (q31_t)0xcfc40a7c, + (q31_t)0x768e0ea6, (q31_t)0xcfbe389f, (q31_t)0x768bb017, (q31_t)0xcfb866e0, (q31_t)0x7689513f, (q31_t)0xcfb2953f, + (q31_t)0x7686f21e, (q31_t)0xcfacc3bb, + (q31_t)0x768492b4, (q31_t)0xcfa6f255, (q31_t)0x76823301, (q31_t)0xcfa1210d, (q31_t)0x767fd304, (q31_t)0xcf9b4fe3, + (q31_t)0x767d72bf, (q31_t)0xcf957ed7, + (q31_t)0x767b1231, (q31_t)0xcf8fade9, (q31_t)0x7678b159, (q31_t)0xcf89dd18, (q31_t)0x76765038, (q31_t)0xcf840c65, + (q31_t)0x7673eecf, (q31_t)0xcf7e3bd1, + (q31_t)0x76718d1c, (q31_t)0xcf786b5a, (q31_t)0x766f2b20, (q31_t)0xcf729b01, (q31_t)0x766cc8db, (q31_t)0xcf6ccac6, + (q31_t)0x766a664d, (q31_t)0xcf66faa9, + (q31_t)0x76680376, (q31_t)0xcf612aaa, (q31_t)0x7665a056, (q31_t)0xcf5b5ac9, (q31_t)0x76633ced, (q31_t)0xcf558b06, + (q31_t)0x7660d93b, (q31_t)0xcf4fbb61, + (q31_t)0x765e7540, (q31_t)0xcf49ebda, (q31_t)0x765c10fc, (q31_t)0xcf441c71, (q31_t)0x7659ac6f, (q31_t)0xcf3e4d26, + (q31_t)0x76574798, (q31_t)0xcf387dfa, + (q31_t)0x7654e279, (q31_t)0xcf32aeeb, (q31_t)0x76527d11, (q31_t)0xcf2cdffa, (q31_t)0x76501760, (q31_t)0xcf271128, + (q31_t)0x764db166, (q31_t)0xcf214274, + (q31_t)0x764b4b23, (q31_t)0xcf1b73de, (q31_t)0x7648e497, (q31_t)0xcf15a566, (q31_t)0x76467dc2, (q31_t)0xcf0fd70c, + (q31_t)0x764416a4, (q31_t)0xcf0a08d0, + (q31_t)0x7641af3d, (q31_t)0xcf043ab3, (q31_t)0x763f478d, (q31_t)0xcefe6cb3, (q31_t)0x763cdf94, (q31_t)0xcef89ed2, + (q31_t)0x763a7752, (q31_t)0xcef2d110, + (q31_t)0x76380ec8, (q31_t)0xceed036b, (q31_t)0x7635a5f4, (q31_t)0xcee735e5, (q31_t)0x76333cd8, (q31_t)0xcee1687d, + (q31_t)0x7630d372, (q31_t)0xcedb9b33, + (q31_t)0x762e69c4, (q31_t)0xced5ce08, (q31_t)0x762bffcd, (q31_t)0xced000fb, (q31_t)0x7629958c, (q31_t)0xceca340c, + (q31_t)0x76272b03, (q31_t)0xcec4673c, + (q31_t)0x7624c031, (q31_t)0xcebe9a8a, (q31_t)0x76225517, (q31_t)0xceb8cdf7, (q31_t)0x761fe9b3, (q31_t)0xceb30181, + (q31_t)0x761d7e06, (q31_t)0xcead352b, + (q31_t)0x761b1211, (q31_t)0xcea768f2, (q31_t)0x7618a5d3, (q31_t)0xcea19cd8, (q31_t)0x7616394c, (q31_t)0xce9bd0dd, + (q31_t)0x7613cc7c, (q31_t)0xce960500, + (q31_t)0x76115f63, (q31_t)0xce903942, (q31_t)0x760ef201, (q31_t)0xce8a6da2, (q31_t)0x760c8457, (q31_t)0xce84a220, + (q31_t)0x760a1664, (q31_t)0xce7ed6bd, + (q31_t)0x7607a828, (q31_t)0xce790b79, (q31_t)0x760539a3, (q31_t)0xce734053, (q31_t)0x7602cad5, (q31_t)0xce6d754c, + (q31_t)0x76005bbf, (q31_t)0xce67aa63, + (q31_t)0x75fdec60, (q31_t)0xce61df99, (q31_t)0x75fb7cb8, (q31_t)0xce5c14ed, (q31_t)0x75f90cc7, (q31_t)0xce564a60, + (q31_t)0x75f69c8d, (q31_t)0xce507ff2, + (q31_t)0x75f42c0b, (q31_t)0xce4ab5a2, (q31_t)0x75f1bb40, (q31_t)0xce44eb71, (q31_t)0x75ef4a2c, (q31_t)0xce3f215f, + (q31_t)0x75ecd8cf, (q31_t)0xce39576c, + (q31_t)0x75ea672a, (q31_t)0xce338d97, (q31_t)0x75e7f53c, (q31_t)0xce2dc3e1, (q31_t)0x75e58305, (q31_t)0xce27fa49, + (q31_t)0x75e31086, (q31_t)0xce2230d0, + (q31_t)0x75e09dbd, (q31_t)0xce1c6777, (q31_t)0x75de2aac, (q31_t)0xce169e3b, (q31_t)0x75dbb753, (q31_t)0xce10d51f, + (q31_t)0x75d943b0, (q31_t)0xce0b0c21, + (q31_t)0x75d6cfc5, (q31_t)0xce054343, (q31_t)0x75d45b92, (q31_t)0xcdff7a83, (q31_t)0x75d1e715, (q31_t)0xcdf9b1e2, + (q31_t)0x75cf7250, (q31_t)0xcdf3e95f, + (q31_t)0x75ccfd42, (q31_t)0xcdee20fc, (q31_t)0x75ca87ec, (q31_t)0xcde858b8, (q31_t)0x75c8124d, (q31_t)0xcde29092, + (q31_t)0x75c59c65, (q31_t)0xcddcc88b, + (q31_t)0x75c32634, (q31_t)0xcdd700a4, (q31_t)0x75c0afbb, (q31_t)0xcdd138db, (q31_t)0x75be38fa, (q31_t)0xcdcb7131, + (q31_t)0x75bbc1ef, (q31_t)0xcdc5a9a6, + (q31_t)0x75b94a9c, (q31_t)0xcdbfe23a, (q31_t)0x75b6d301, (q31_t)0xcdba1aee, (q31_t)0x75b45b1d, (q31_t)0xcdb453c0, + (q31_t)0x75b1e2f0, (q31_t)0xcdae8cb1, + (q31_t)0x75af6a7b, (q31_t)0xcda8c5c1, (q31_t)0x75acf1bd, (q31_t)0xcda2fef0, (q31_t)0x75aa78b6, (q31_t)0xcd9d383f, + (q31_t)0x75a7ff67, (q31_t)0xcd9771ac, + (q31_t)0x75a585cf, (q31_t)0xcd91ab39, (q31_t)0x75a30bef, (q31_t)0xcd8be4e4, (q31_t)0x75a091c6, (q31_t)0xcd861eaf, + (q31_t)0x759e1755, (q31_t)0xcd805899, + (q31_t)0x759b9c9b, (q31_t)0xcd7a92a2, (q31_t)0x75992198, (q31_t)0xcd74ccca, (q31_t)0x7596a64d, (q31_t)0xcd6f0711, + (q31_t)0x75942ab9, (q31_t)0xcd694178, + (q31_t)0x7591aedd, (q31_t)0xcd637bfe, (q31_t)0x758f32b9, (q31_t)0xcd5db6a3, (q31_t)0x758cb64c, (q31_t)0xcd57f167, + (q31_t)0x758a3996, (q31_t)0xcd522c4a, + (q31_t)0x7587bc98, (q31_t)0xcd4c674d, (q31_t)0x75853f51, (q31_t)0xcd46a26f, (q31_t)0x7582c1c2, (q31_t)0xcd40ddb0, + (q31_t)0x758043ea, (q31_t)0xcd3b1911, + (q31_t)0x757dc5ca, (q31_t)0xcd355491, (q31_t)0x757b4762, (q31_t)0xcd2f9030, (q31_t)0x7578c8b0, (q31_t)0xcd29cbee, + (q31_t)0x757649b7, (q31_t)0xcd2407cc, + (q31_t)0x7573ca75, (q31_t)0xcd1e43ca, (q31_t)0x75714aea, (q31_t)0xcd187fe6, (q31_t)0x756ecb18, (q31_t)0xcd12bc22, + (q31_t)0x756c4afc, (q31_t)0xcd0cf87e, + (q31_t)0x7569ca99, (q31_t)0xcd0734f9, (q31_t)0x756749ec, (q31_t)0xcd017193, (q31_t)0x7564c8f8, (q31_t)0xccfbae4d, + (q31_t)0x756247bb, (q31_t)0xccf5eb26, + (q31_t)0x755fc635, (q31_t)0xccf0281f, (q31_t)0x755d4467, (q31_t)0xccea6538, (q31_t)0x755ac251, (q31_t)0xcce4a26f, + (q31_t)0x75583ff3, (q31_t)0xccdedfc7, + (q31_t)0x7555bd4c, (q31_t)0xccd91d3d, (q31_t)0x75533a5c, (q31_t)0xccd35ad4, (q31_t)0x7550b725, (q31_t)0xcccd988a, + (q31_t)0x754e33a4, (q31_t)0xccc7d65f, + (q31_t)0x754bafdc, (q31_t)0xccc21455, (q31_t)0x75492bcb, (q31_t)0xccbc5269, (q31_t)0x7546a772, (q31_t)0xccb6909e, + (q31_t)0x754422d0, (q31_t)0xccb0cef2, + (q31_t)0x75419de7, (q31_t)0xccab0d65, (q31_t)0x753f18b4, (q31_t)0xcca54bf9, (q31_t)0x753c933a, (q31_t)0xcc9f8aac, + (q31_t)0x753a0d77, (q31_t)0xcc99c97e, + (q31_t)0x7537876c, (q31_t)0xcc940871, (q31_t)0x75350118, (q31_t)0xcc8e4783, (q31_t)0x75327a7d, (q31_t)0xcc8886b5, + (q31_t)0x752ff399, (q31_t)0xcc82c607, + (q31_t)0x752d6c6c, (q31_t)0xcc7d0578, (q31_t)0x752ae4f8, (q31_t)0xcc774509, (q31_t)0x75285d3b, (q31_t)0xcc7184ba, + (q31_t)0x7525d536, (q31_t)0xcc6bc48b, + (q31_t)0x75234ce8, (q31_t)0xcc66047b, (q31_t)0x7520c453, (q31_t)0xcc60448c, (q31_t)0x751e3b75, (q31_t)0xcc5a84bc, + (q31_t)0x751bb24f, (q31_t)0xcc54c50c, + (q31_t)0x751928e0, (q31_t)0xcc4f057c, (q31_t)0x75169f2a, (q31_t)0xcc49460c, (q31_t)0x7514152b, (q31_t)0xcc4386bc, + (q31_t)0x75118ae4, (q31_t)0xcc3dc78b, + (q31_t)0x750f0054, (q31_t)0xcc38087b, (q31_t)0x750c757d, (q31_t)0xcc32498a, (q31_t)0x7509ea5d, (q31_t)0xcc2c8aba, + (q31_t)0x75075ef5, (q31_t)0xcc26cc09, + (q31_t)0x7504d345, (q31_t)0xcc210d79, (q31_t)0x7502474d, (q31_t)0xcc1b4f08, (q31_t)0x74ffbb0d, (q31_t)0xcc1590b8, + (q31_t)0x74fd2e84, (q31_t)0xcc0fd287, + (q31_t)0x74faa1b3, (q31_t)0xcc0a1477, (q31_t)0x74f8149a, (q31_t)0xcc045686, (q31_t)0x74f58739, (q31_t)0xcbfe98b6, + (q31_t)0x74f2f990, (q31_t)0xcbf8db05, + (q31_t)0x74f06b9e, (q31_t)0xcbf31d75, (q31_t)0x74eddd65, (q31_t)0xcbed6005, (q31_t)0x74eb4ee3, (q31_t)0xcbe7a2b5, + (q31_t)0x74e8c01a, (q31_t)0xcbe1e585, + (q31_t)0x74e63108, (q31_t)0xcbdc2876, (q31_t)0x74e3a1ae, (q31_t)0xcbd66b86, (q31_t)0x74e1120c, (q31_t)0xcbd0aeb7, + (q31_t)0x74de8221, (q31_t)0xcbcaf208, + (q31_t)0x74dbf1ef, (q31_t)0xcbc53579, (q31_t)0x74d96175, (q31_t)0xcbbf790a, (q31_t)0x74d6d0b2, (q31_t)0xcbb9bcbb, + (q31_t)0x74d43fa8, (q31_t)0xcbb4008d, + (q31_t)0x74d1ae55, (q31_t)0xcbae447f, (q31_t)0x74cf1cbb, (q31_t)0xcba88891, (q31_t)0x74cc8ad8, (q31_t)0xcba2ccc4, + (q31_t)0x74c9f8ad, (q31_t)0xcb9d1117, + (q31_t)0x74c7663a, (q31_t)0xcb97558a, (q31_t)0x74c4d380, (q31_t)0xcb919a1d, (q31_t)0x74c2407d, (q31_t)0xcb8bded1, + (q31_t)0x74bfad32, (q31_t)0xcb8623a5, + (q31_t)0x74bd199f, (q31_t)0xcb80689a, (q31_t)0x74ba85c4, (q31_t)0xcb7aadaf, (q31_t)0x74b7f1a1, (q31_t)0xcb74f2e4, + (q31_t)0x74b55d36, (q31_t)0xcb6f383a, + (q31_t)0x74b2c884, (q31_t)0xcb697db0, (q31_t)0x74b03389, (q31_t)0xcb63c347, (q31_t)0x74ad9e46, (q31_t)0xcb5e08fe, + (q31_t)0x74ab08bb, (q31_t)0xcb584ed6, + (q31_t)0x74a872e8, (q31_t)0xcb5294ce, (q31_t)0x74a5dccd, (q31_t)0xcb4cdae6, (q31_t)0x74a3466b, (q31_t)0xcb47211f, + (q31_t)0x74a0afc0, (q31_t)0xcb416779, + (q31_t)0x749e18cd, (q31_t)0xcb3badf3, (q31_t)0x749b8193, (q31_t)0xcb35f48d, (q31_t)0x7498ea11, (q31_t)0xcb303b49, + (q31_t)0x74965246, (q31_t)0xcb2a8224, + (q31_t)0x7493ba34, (q31_t)0xcb24c921, (q31_t)0x749121da, (q31_t)0xcb1f103e, (q31_t)0x748e8938, (q31_t)0xcb19577b, + (q31_t)0x748bf04d, (q31_t)0xcb139ed9, + (q31_t)0x7489571c, (q31_t)0xcb0de658, (q31_t)0x7486bda2, (q31_t)0xcb082df8, (q31_t)0x748423e0, (q31_t)0xcb0275b8, + (q31_t)0x748189d7, (q31_t)0xcafcbd99, + (q31_t)0x747eef85, (q31_t)0xcaf7059a, (q31_t)0x747c54ec, (q31_t)0xcaf14dbd, (q31_t)0x7479ba0b, (q31_t)0xcaeb9600, + (q31_t)0x74771ee2, (q31_t)0xcae5de64, + (q31_t)0x74748371, (q31_t)0xcae026e8, (q31_t)0x7471e7b8, (q31_t)0xcada6f8d, (q31_t)0x746f4bb8, (q31_t)0xcad4b853, + (q31_t)0x746caf70, (q31_t)0xcacf013a, + (q31_t)0x746a12df, (q31_t)0xcac94a42, (q31_t)0x74677608, (q31_t)0xcac3936b, (q31_t)0x7464d8e8, (q31_t)0xcabddcb4, + (q31_t)0x74623b80, (q31_t)0xcab8261e, + (q31_t)0x745f9dd1, (q31_t)0xcab26fa9, (q31_t)0x745cffda, (q31_t)0xcaacb955, (q31_t)0x745a619b, (q31_t)0xcaa70322, + (q31_t)0x7457c314, (q31_t)0xcaa14d10, + (q31_t)0x74552446, (q31_t)0xca9b971e, (q31_t)0x74528530, (q31_t)0xca95e14e, (q31_t)0x744fe5d2, (q31_t)0xca902b9f, + (q31_t)0x744d462c, (q31_t)0xca8a7610, + (q31_t)0x744aa63f, (q31_t)0xca84c0a3, (q31_t)0x7448060a, (q31_t)0xca7f0b56, (q31_t)0x7445658d, (q31_t)0xca79562b, + (q31_t)0x7442c4c8, (q31_t)0xca73a120, + (q31_t)0x744023bc, (q31_t)0xca6dec37, (q31_t)0x743d8268, (q31_t)0xca68376e, (q31_t)0x743ae0cc, (q31_t)0xca6282c7, + (q31_t)0x74383ee9, (q31_t)0xca5cce40, + (q31_t)0x74359cbd, (q31_t)0xca5719db, (q31_t)0x7432fa4b, (q31_t)0xca516597, (q31_t)0x74305790, (q31_t)0xca4bb174, + (q31_t)0x742db48e, (q31_t)0xca45fd72, + (q31_t)0x742b1144, (q31_t)0xca404992, (q31_t)0x74286db3, (q31_t)0xca3a95d2, (q31_t)0x7425c9da, (q31_t)0xca34e234, + (q31_t)0x742325b9, (q31_t)0xca2f2eb6, + (q31_t)0x74208150, (q31_t)0xca297b5a, (q31_t)0x741ddca0, (q31_t)0xca23c820, (q31_t)0x741b37a9, (q31_t)0xca1e1506, + (q31_t)0x74189269, (q31_t)0xca18620e, + (q31_t)0x7415ece2, (q31_t)0xca12af37, (q31_t)0x74134714, (q31_t)0xca0cfc81, (q31_t)0x7410a0fe, (q31_t)0xca0749ec, + (q31_t)0x740dfaa0, (q31_t)0xca019779, + (q31_t)0x740b53fb, (q31_t)0xc9fbe527, (q31_t)0x7408ad0e, (q31_t)0xc9f632f6, (q31_t)0x740605d9, (q31_t)0xc9f080e7, + (q31_t)0x74035e5d, (q31_t)0xc9eacef9, + (q31_t)0x7400b69a, (q31_t)0xc9e51d2d, (q31_t)0x73fe0e8f, (q31_t)0xc9df6b81, (q31_t)0x73fb663c, (q31_t)0xc9d9b9f7, + (q31_t)0x73f8bda2, (q31_t)0xc9d4088f, + (q31_t)0x73f614c0, (q31_t)0xc9ce5748, (q31_t)0x73f36b97, (q31_t)0xc9c8a622, (q31_t)0x73f0c226, (q31_t)0xc9c2f51e, + (q31_t)0x73ee186e, (q31_t)0xc9bd443c, + (q31_t)0x73eb6e6e, (q31_t)0xc9b7937a, (q31_t)0x73e8c426, (q31_t)0xc9b1e2db, (q31_t)0x73e61997, (q31_t)0xc9ac325d, + (q31_t)0x73e36ec1, (q31_t)0xc9a68200, + (q31_t)0x73e0c3a3, (q31_t)0xc9a0d1c5, (q31_t)0x73de183e, (q31_t)0xc99b21ab, (q31_t)0x73db6c91, (q31_t)0xc99571b3, + (q31_t)0x73d8c09d, (q31_t)0xc98fc1dc, + (q31_t)0x73d61461, (q31_t)0xc98a1227, (q31_t)0x73d367de, (q31_t)0xc9846294, (q31_t)0x73d0bb13, (q31_t)0xc97eb322, + (q31_t)0x73ce0e01, (q31_t)0xc97903d2, + (q31_t)0x73cb60a8, (q31_t)0xc97354a4, (q31_t)0x73c8b307, (q31_t)0xc96da597, (q31_t)0x73c6051f, (q31_t)0xc967f6ac, + (q31_t)0x73c356ef, (q31_t)0xc96247e2, + (q31_t)0x73c0a878, (q31_t)0xc95c993a, (q31_t)0x73bdf9b9, (q31_t)0xc956eab4, (q31_t)0x73bb4ab3, (q31_t)0xc9513c50, + (q31_t)0x73b89b66, (q31_t)0xc94b8e0d, + (q31_t)0x73b5ebd1, (q31_t)0xc945dfec, (q31_t)0x73b33bf5, (q31_t)0xc94031ed, (q31_t)0x73b08bd1, (q31_t)0xc93a8410, + (q31_t)0x73addb67, (q31_t)0xc934d654, + (q31_t)0x73ab2ab4, (q31_t)0xc92f28ba, (q31_t)0x73a879bb, (q31_t)0xc9297b42, (q31_t)0x73a5c87a, (q31_t)0xc923cdec, + (q31_t)0x73a316f2, (q31_t)0xc91e20b8, + (q31_t)0x73a06522, (q31_t)0xc91873a5, (q31_t)0x739db30b, (q31_t)0xc912c6b5, (q31_t)0x739b00ad, (q31_t)0xc90d19e6, + (q31_t)0x73984e07, (q31_t)0xc9076d39, + (q31_t)0x73959b1b, (q31_t)0xc901c0ae, (q31_t)0x7392e7e6, (q31_t)0xc8fc1445, (q31_t)0x7390346b, (q31_t)0xc8f667fe, + (q31_t)0x738d80a8, (q31_t)0xc8f0bbd9, + (q31_t)0x738acc9e, (q31_t)0xc8eb0fd6, (q31_t)0x7388184d, (q31_t)0xc8e563f5, (q31_t)0x738563b5, (q31_t)0xc8dfb836, + (q31_t)0x7382aed5, (q31_t)0xc8da0c99, + (q31_t)0x737ff9ae, (q31_t)0xc8d4611d, (q31_t)0x737d4440, (q31_t)0xc8ceb5c4, (q31_t)0x737a8e8a, (q31_t)0xc8c90a8d, + (q31_t)0x7377d88d, (q31_t)0xc8c35f78, + (q31_t)0x73752249, (q31_t)0xc8bdb485, (q31_t)0x73726bbe, (q31_t)0xc8b809b4, (q31_t)0x736fb4ec, (q31_t)0xc8b25f06, + (q31_t)0x736cfdd2, (q31_t)0xc8acb479, + (q31_t)0x736a4671, (q31_t)0xc8a70a0e, (q31_t)0x73678ec9, (q31_t)0xc8a15fc6, (q31_t)0x7364d6da, (q31_t)0xc89bb5a0, + (q31_t)0x73621ea4, (q31_t)0xc8960b9c, + (q31_t)0x735f6626, (q31_t)0xc89061ba, (q31_t)0x735cad61, (q31_t)0xc88ab7fa, (q31_t)0x7359f456, (q31_t)0xc8850e5d, + (q31_t)0x73573b03, (q31_t)0xc87f64e2, + (q31_t)0x73548168, (q31_t)0xc879bb89, (q31_t)0x7351c787, (q31_t)0xc8741252, (q31_t)0x734f0d5f, (q31_t)0xc86e693d, + (q31_t)0x734c52ef, (q31_t)0xc868c04b, + (q31_t)0x73499838, (q31_t)0xc863177b, (q31_t)0x7346dd3a, (q31_t)0xc85d6ece, (q31_t)0x734421f6, (q31_t)0xc857c642, + (q31_t)0x7341666a, (q31_t)0xc8521dd9, + (q31_t)0x733eaa96, (q31_t)0xc84c7593, (q31_t)0x733bee7c, (q31_t)0xc846cd6e, (q31_t)0x7339321b, (q31_t)0xc841256d, + (q31_t)0x73367572, (q31_t)0xc83b7d8d, + (q31_t)0x7333b883, (q31_t)0xc835d5d0, (q31_t)0x7330fb4d, (q31_t)0xc8302e35, (q31_t)0x732e3dcf, (q31_t)0xc82a86bd, + (q31_t)0x732b800a, (q31_t)0xc824df67, + (q31_t)0x7328c1ff, (q31_t)0xc81f3834, (q31_t)0x732603ac, (q31_t)0xc8199123, (q31_t)0x73234512, (q31_t)0xc813ea35, + (q31_t)0x73208632, (q31_t)0xc80e4369, + (q31_t)0x731dc70a, (q31_t)0xc8089cbf, (q31_t)0x731b079b, (q31_t)0xc802f638, (q31_t)0x731847e5, (q31_t)0xc7fd4fd4, + (q31_t)0x731587e8, (q31_t)0xc7f7a992, + (q31_t)0x7312c7a5, (q31_t)0xc7f20373, (q31_t)0x7310071a, (q31_t)0xc7ec5d76, (q31_t)0x730d4648, (q31_t)0xc7e6b79c, + (q31_t)0x730a8530, (q31_t)0xc7e111e5, + (q31_t)0x7307c3d0, (q31_t)0xc7db6c50, (q31_t)0x73050229, (q31_t)0xc7d5c6de, (q31_t)0x7302403c, (q31_t)0xc7d0218e, + (q31_t)0x72ff7e07, (q31_t)0xc7ca7c61, + (q31_t)0x72fcbb8c, (q31_t)0xc7c4d757, (q31_t)0x72f9f8c9, (q31_t)0xc7bf3270, (q31_t)0x72f735c0, (q31_t)0xc7b98dab, + (q31_t)0x72f47270, (q31_t)0xc7b3e909, + (q31_t)0x72f1aed9, (q31_t)0xc7ae4489, (q31_t)0x72eeeafb, (q31_t)0xc7a8a02c, (q31_t)0x72ec26d6, (q31_t)0xc7a2fbf3, + (q31_t)0x72e9626a, (q31_t)0xc79d57db, + (q31_t)0x72e69db7, (q31_t)0xc797b3e7, (q31_t)0x72e3d8be, (q31_t)0xc7921015, (q31_t)0x72e1137d, (q31_t)0xc78c6c67, + (q31_t)0x72de4df6, (q31_t)0xc786c8db, + (q31_t)0x72db8828, (q31_t)0xc7812572, (q31_t)0x72d8c213, (q31_t)0xc77b822b, (q31_t)0x72d5fbb7, (q31_t)0xc775df08, + (q31_t)0x72d33514, (q31_t)0xc7703c08, + (q31_t)0x72d06e2b, (q31_t)0xc76a992a, (q31_t)0x72cda6fb, (q31_t)0xc764f66f, (q31_t)0x72cadf83, (q31_t)0xc75f53d7, + (q31_t)0x72c817c6, (q31_t)0xc759b163, + (q31_t)0x72c54fc1, (q31_t)0xc7540f11, (q31_t)0x72c28775, (q31_t)0xc74e6ce2, (q31_t)0x72bfbee3, (q31_t)0xc748cad6, + (q31_t)0x72bcf60a, (q31_t)0xc74328ed, + (q31_t)0x72ba2cea, (q31_t)0xc73d8727, (q31_t)0x72b76383, (q31_t)0xc737e584, (q31_t)0x72b499d6, (q31_t)0xc7324404, + (q31_t)0x72b1cfe1, (q31_t)0xc72ca2a7, + (q31_t)0x72af05a7, (q31_t)0xc727016d, (q31_t)0x72ac3b25, (q31_t)0xc7216056, (q31_t)0x72a9705c, (q31_t)0xc71bbf62, + (q31_t)0x72a6a54d, (q31_t)0xc7161e92, + (q31_t)0x72a3d9f7, (q31_t)0xc7107de4, (q31_t)0x72a10e5b, (q31_t)0xc70add5a, (q31_t)0x729e4277, (q31_t)0xc7053cf2, + (q31_t)0x729b764d, (q31_t)0xc6ff9cae, + (q31_t)0x7298a9dd, (q31_t)0xc6f9fc8d, (q31_t)0x7295dd25, (q31_t)0xc6f45c8f, (q31_t)0x72931027, (q31_t)0xc6eebcb5, + (q31_t)0x729042e3, (q31_t)0xc6e91cfd, + (q31_t)0x728d7557, (q31_t)0xc6e37d69, (q31_t)0x728aa785, (q31_t)0xc6ddddf8, (q31_t)0x7287d96c, (q31_t)0xc6d83eab, + (q31_t)0x72850b0d, (q31_t)0xc6d29f80, + (q31_t)0x72823c67, (q31_t)0xc6cd0079, (q31_t)0x727f6d7a, (q31_t)0xc6c76195, (q31_t)0x727c9e47, (q31_t)0xc6c1c2d4, + (q31_t)0x7279cecd, (q31_t)0xc6bc2437, + (q31_t)0x7276ff0d, (q31_t)0xc6b685bd, (q31_t)0x72742f05, (q31_t)0xc6b0e767, (q31_t)0x72715eb8, (q31_t)0xc6ab4933, + (q31_t)0x726e8e23, (q31_t)0xc6a5ab23, + (q31_t)0x726bbd48, (q31_t)0xc6a00d37, (q31_t)0x7268ec27, (q31_t)0xc69a6f6e, (q31_t)0x72661abf, (q31_t)0xc694d1c8, + (q31_t)0x72634910, (q31_t)0xc68f3446, + (q31_t)0x7260771b, (q31_t)0xc68996e7, (q31_t)0x725da4df, (q31_t)0xc683f9ab, (q31_t)0x725ad25d, (q31_t)0xc67e5c93, + (q31_t)0x7257ff94, (q31_t)0xc678bf9f, + (q31_t)0x72552c85, (q31_t)0xc67322ce, (q31_t)0x7252592f, (q31_t)0xc66d8620, (q31_t)0x724f8593, (q31_t)0xc667e996, + (q31_t)0x724cb1b0, (q31_t)0xc6624d30, + (q31_t)0x7249dd86, (q31_t)0xc65cb0ed, (q31_t)0x72470916, (q31_t)0xc65714cd, (q31_t)0x72443460, (q31_t)0xc65178d1, + (q31_t)0x72415f63, (q31_t)0xc64bdcf9, + (q31_t)0x723e8a20, (q31_t)0xc6464144, (q31_t)0x723bb496, (q31_t)0xc640a5b3, (q31_t)0x7238dec5, (q31_t)0xc63b0a46, + (q31_t)0x723608af, (q31_t)0xc6356efc, + (q31_t)0x72333251, (q31_t)0xc62fd3d6, (q31_t)0x72305bae, (q31_t)0xc62a38d4, (q31_t)0x722d84c4, (q31_t)0xc6249df5, + (q31_t)0x722aad93, (q31_t)0xc61f033a, + (q31_t)0x7227d61c, (q31_t)0xc61968a2, (q31_t)0x7224fe5f, (q31_t)0xc613ce2f, (q31_t)0x7222265b, (q31_t)0xc60e33df, + (q31_t)0x721f4e11, (q31_t)0xc60899b2, + (q31_t)0x721c7580, (q31_t)0xc602ffaa, (q31_t)0x72199ca9, (q31_t)0xc5fd65c5, (q31_t)0x7216c38c, (q31_t)0xc5f7cc04, + (q31_t)0x7213ea28, (q31_t)0xc5f23267, + (q31_t)0x7211107e, (q31_t)0xc5ec98ee, (q31_t)0x720e368d, (q31_t)0xc5e6ff98, (q31_t)0x720b5c57, (q31_t)0xc5e16667, + (q31_t)0x720881d9, (q31_t)0xc5dbcd59, + (q31_t)0x7205a716, (q31_t)0xc5d6346f, (q31_t)0x7202cc0c, (q31_t)0xc5d09ba9, (q31_t)0x71fff0bc, (q31_t)0xc5cb0307, + (q31_t)0x71fd1525, (q31_t)0xc5c56a89, + (q31_t)0x71fa3949, (q31_t)0xc5bfd22e, (q31_t)0x71f75d25, (q31_t)0xc5ba39f8, (q31_t)0x71f480bc, (q31_t)0xc5b4a1e5, + (q31_t)0x71f1a40c, (q31_t)0xc5af09f7, + (q31_t)0x71eec716, (q31_t)0xc5a9722c, (q31_t)0x71ebe9da, (q31_t)0xc5a3da86, (q31_t)0x71e90c57, (q31_t)0xc59e4303, + (q31_t)0x71e62e8f, (q31_t)0xc598aba5, + (q31_t)0x71e35080, (q31_t)0xc593146a, (q31_t)0x71e0722a, (q31_t)0xc58d7d54, (q31_t)0x71dd938f, (q31_t)0xc587e661, + (q31_t)0x71dab4ad, (q31_t)0xc5824f93, + (q31_t)0x71d7d585, (q31_t)0xc57cb8e9, (q31_t)0x71d4f617, (q31_t)0xc5772263, (q31_t)0x71d21662, (q31_t)0xc5718c00, + (q31_t)0x71cf3667, (q31_t)0xc56bf5c2, + (q31_t)0x71cc5626, (q31_t)0xc5665fa9, (q31_t)0x71c9759f, (q31_t)0xc560c9b3, (q31_t)0x71c694d2, (q31_t)0xc55b33e2, + (q31_t)0x71c3b3bf, (q31_t)0xc5559e34, + (q31_t)0x71c0d265, (q31_t)0xc55008ab, (q31_t)0x71bdf0c5, (q31_t)0xc54a7346, (q31_t)0x71bb0edf, (q31_t)0xc544de05, + (q31_t)0x71b82cb3, (q31_t)0xc53f48e9, + (q31_t)0x71b54a41, (q31_t)0xc539b3f1, (q31_t)0x71b26788, (q31_t)0xc5341f1d, (q31_t)0x71af848a, (q31_t)0xc52e8a6d, + (q31_t)0x71aca145, (q31_t)0xc528f5e1, + (q31_t)0x71a9bdba, (q31_t)0xc523617a, (q31_t)0x71a6d9e9, (q31_t)0xc51dcd37, (q31_t)0x71a3f5d2, (q31_t)0xc5183919, + (q31_t)0x71a11175, (q31_t)0xc512a51f, + (q31_t)0x719e2cd2, (q31_t)0xc50d1149, (q31_t)0x719b47e9, (q31_t)0xc5077d97, (q31_t)0x719862b9, (q31_t)0xc501ea0a, + (q31_t)0x71957d44, (q31_t)0xc4fc56a2, + (q31_t)0x71929789, (q31_t)0xc4f6c35d, (q31_t)0x718fb187, (q31_t)0xc4f1303d, (q31_t)0x718ccb3f, (q31_t)0xc4eb9d42, + (q31_t)0x7189e4b2, (q31_t)0xc4e60a6b, + (q31_t)0x7186fdde, (q31_t)0xc4e077b8, (q31_t)0x718416c4, (q31_t)0xc4dae52a, (q31_t)0x71812f65, (q31_t)0xc4d552c1, + (q31_t)0x717e47bf, (q31_t)0xc4cfc07c, + (q31_t)0x717b5fd3, (q31_t)0xc4ca2e5b, (q31_t)0x717877a1, (q31_t)0xc4c49c5f, (q31_t)0x71758f29, (q31_t)0xc4bf0a87, + (q31_t)0x7172a66c, (q31_t)0xc4b978d4, + (q31_t)0x716fbd68, (q31_t)0xc4b3e746, (q31_t)0x716cd41e, (q31_t)0xc4ae55dc, (q31_t)0x7169ea8f, (q31_t)0xc4a8c497, + (q31_t)0x716700b9, (q31_t)0xc4a33376, + (q31_t)0x7164169d, (q31_t)0xc49da27a, (q31_t)0x71612c3c, (q31_t)0xc49811a3, (q31_t)0x715e4194, (q31_t)0xc49280f0, + (q31_t)0x715b56a7, (q31_t)0xc48cf062, + (q31_t)0x71586b74, (q31_t)0xc4875ff9, (q31_t)0x71557ffa, (q31_t)0xc481cfb4, (q31_t)0x7152943b, (q31_t)0xc47c3f94, + (q31_t)0x714fa836, (q31_t)0xc476af98, + (q31_t)0x714cbbeb, (q31_t)0xc4711fc2, (q31_t)0x7149cf5a, (q31_t)0xc46b9010, (q31_t)0x7146e284, (q31_t)0xc4660083, + (q31_t)0x7143f567, (q31_t)0xc460711b, + (q31_t)0x71410805, (q31_t)0xc45ae1d7, (q31_t)0x713e1a5c, (q31_t)0xc45552b8, (q31_t)0x713b2c6e, (q31_t)0xc44fc3be, + (q31_t)0x71383e3a, (q31_t)0xc44a34e9, + (q31_t)0x71354fc0, (q31_t)0xc444a639, (q31_t)0x71326101, (q31_t)0xc43f17ad, (q31_t)0x712f71fb, (q31_t)0xc4398947, + (q31_t)0x712c82b0, (q31_t)0xc433fb05, + (q31_t)0x7129931f, (q31_t)0xc42e6ce8, (q31_t)0x7126a348, (q31_t)0xc428def0, (q31_t)0x7123b32b, (q31_t)0xc423511d, + (q31_t)0x7120c2c8, (q31_t)0xc41dc36f, + (q31_t)0x711dd220, (q31_t)0xc41835e6, (q31_t)0x711ae132, (q31_t)0xc412a882, (q31_t)0x7117effe, (q31_t)0xc40d1b42, + (q31_t)0x7114fe84, (q31_t)0xc4078e28, + (q31_t)0x71120cc5, (q31_t)0xc4020133, (q31_t)0x710f1ac0, (q31_t)0xc3fc7462, (q31_t)0x710c2875, (q31_t)0xc3f6e7b7, + (q31_t)0x710935e4, (q31_t)0xc3f15b31, + (q31_t)0x7106430e, (q31_t)0xc3ebced0, (q31_t)0x71034ff2, (q31_t)0xc3e64294, (q31_t)0x71005c90, (q31_t)0xc3e0b67d, + (q31_t)0x70fd68e9, (q31_t)0xc3db2a8b, + (q31_t)0x70fa74fc, (q31_t)0xc3d59ebe, (q31_t)0x70f780c9, (q31_t)0xc3d01316, (q31_t)0x70f48c50, (q31_t)0xc3ca8793, + (q31_t)0x70f19792, (q31_t)0xc3c4fc36, + (q31_t)0x70eea28e, (q31_t)0xc3bf70fd, (q31_t)0x70ebad45, (q31_t)0xc3b9e5ea, (q31_t)0x70e8b7b5, (q31_t)0xc3b45afc, + (q31_t)0x70e5c1e1, (q31_t)0xc3aed034, + (q31_t)0x70e2cbc6, (q31_t)0xc3a94590, (q31_t)0x70dfd566, (q31_t)0xc3a3bb12, (q31_t)0x70dcdec0, (q31_t)0xc39e30b8, + (q31_t)0x70d9e7d5, (q31_t)0xc398a685, + (q31_t)0x70d6f0a4, (q31_t)0xc3931c76, (q31_t)0x70d3f92d, (q31_t)0xc38d928d, (q31_t)0x70d10171, (q31_t)0xc38808c9, + (q31_t)0x70ce096f, (q31_t)0xc3827f2a, + (q31_t)0x70cb1128, (q31_t)0xc37cf5b0, (q31_t)0x70c8189b, (q31_t)0xc3776c5c, (q31_t)0x70c51fc8, (q31_t)0xc371e32d, + (q31_t)0x70c226b0, (q31_t)0xc36c5a24, + (q31_t)0x70bf2d53, (q31_t)0xc366d140, (q31_t)0x70bc33b0, (q31_t)0xc3614881, (q31_t)0x70b939c7, (q31_t)0xc35bbfe8, + (q31_t)0x70b63f99, (q31_t)0xc3563774, + (q31_t)0x70b34525, (q31_t)0xc350af26, (q31_t)0x70b04a6b, (q31_t)0xc34b26fc, (q31_t)0x70ad4f6d, (q31_t)0xc3459ef9, + (q31_t)0x70aa5428, (q31_t)0xc340171b, + (q31_t)0x70a7589f, (q31_t)0xc33a8f62, (q31_t)0x70a45ccf, (q31_t)0xc33507cf, (q31_t)0x70a160ba, (q31_t)0xc32f8061, + (q31_t)0x709e6460, (q31_t)0xc329f919, + (q31_t)0x709b67c0, (q31_t)0xc32471f7, (q31_t)0x70986adb, (q31_t)0xc31eeaf9, (q31_t)0x70956db1, (q31_t)0xc3196422, + (q31_t)0x70927041, (q31_t)0xc313dd70, + (q31_t)0x708f728b, (q31_t)0xc30e56e4, (q31_t)0x708c7490, (q31_t)0xc308d07d, (q31_t)0x70897650, (q31_t)0xc3034a3c, + (q31_t)0x708677ca, (q31_t)0xc2fdc420, + (q31_t)0x708378ff, (q31_t)0xc2f83e2a, (q31_t)0x708079ee, (q31_t)0xc2f2b85a, (q31_t)0x707d7a98, (q31_t)0xc2ed32af, + (q31_t)0x707a7afd, (q31_t)0xc2e7ad2a, + (q31_t)0x70777b1c, (q31_t)0xc2e227cb, (q31_t)0x70747af6, (q31_t)0xc2dca291, (q31_t)0x70717a8a, (q31_t)0xc2d71d7e, + (q31_t)0x706e79d9, (q31_t)0xc2d1988f, + (q31_t)0x706b78e3, (q31_t)0xc2cc13c7, (q31_t)0x706877a7, (q31_t)0xc2c68f24, (q31_t)0x70657626, (q31_t)0xc2c10aa7, + (q31_t)0x70627460, (q31_t)0xc2bb8650, + (q31_t)0x705f7255, (q31_t)0xc2b6021f, (q31_t)0x705c7004, (q31_t)0xc2b07e14, (q31_t)0x70596d6d, (q31_t)0xc2aafa2e, + (q31_t)0x70566a92, (q31_t)0xc2a5766e, + (q31_t)0x70536771, (q31_t)0xc29ff2d4, (q31_t)0x7050640b, (q31_t)0xc29a6f60, (q31_t)0x704d6060, (q31_t)0xc294ec12, + (q31_t)0x704a5c6f, (q31_t)0xc28f68e9, + (q31_t)0x70475839, (q31_t)0xc289e5e7, (q31_t)0x704453be, (q31_t)0xc284630a, (q31_t)0x70414efd, (q31_t)0xc27ee054, + (q31_t)0x703e49f8, (q31_t)0xc2795dc3, + (q31_t)0x703b44ad, (q31_t)0xc273db58, (q31_t)0x70383f1d, (q31_t)0xc26e5913, (q31_t)0x70353947, (q31_t)0xc268d6f5, + (q31_t)0x7032332d, (q31_t)0xc26354fc, + (q31_t)0x702f2ccd, (q31_t)0xc25dd329, (q31_t)0x702c2628, (q31_t)0xc258517c, (q31_t)0x70291f3e, (q31_t)0xc252cff5, + (q31_t)0x7026180e, (q31_t)0xc24d4e95, + (q31_t)0x7023109a, (q31_t)0xc247cd5a, (q31_t)0x702008e0, (q31_t)0xc2424c46, (q31_t)0x701d00e1, (q31_t)0xc23ccb57, + (q31_t)0x7019f89d, (q31_t)0xc2374a8f, + (q31_t)0x7016f014, (q31_t)0xc231c9ec, (q31_t)0x7013e746, (q31_t)0xc22c4970, (q31_t)0x7010de32, (q31_t)0xc226c91a, + (q31_t)0x700dd4da, (q31_t)0xc22148ea, + (q31_t)0x700acb3c, (q31_t)0xc21bc8e1, (q31_t)0x7007c159, (q31_t)0xc21648fd, (q31_t)0x7004b731, (q31_t)0xc210c940, + (q31_t)0x7001acc4, (q31_t)0xc20b49a9, + (q31_t)0x6ffea212, (q31_t)0xc205ca38, (q31_t)0x6ffb971b, (q31_t)0xc2004aed, (q31_t)0x6ff88bde, (q31_t)0xc1facbc9, + (q31_t)0x6ff5805d, (q31_t)0xc1f54cca, + (q31_t)0x6ff27497, (q31_t)0xc1efcdf3, (q31_t)0x6fef688b, (q31_t)0xc1ea4f41, (q31_t)0x6fec5c3b, (q31_t)0xc1e4d0b6, + (q31_t)0x6fe94fa5, (q31_t)0xc1df5251, + (q31_t)0x6fe642ca, (q31_t)0xc1d9d412, (q31_t)0x6fe335ab, (q31_t)0xc1d455f9, (q31_t)0x6fe02846, (q31_t)0xc1ced807, + (q31_t)0x6fdd1a9c, (q31_t)0xc1c95a3c, + (q31_t)0x6fda0cae, (q31_t)0xc1c3dc97, (q31_t)0x6fd6fe7a, (q31_t)0xc1be5f18, (q31_t)0x6fd3f001, (q31_t)0xc1b8e1bf, + (q31_t)0x6fd0e144, (q31_t)0xc1b3648d, + (q31_t)0x6fcdd241, (q31_t)0xc1ade781, (q31_t)0x6fcac2fa, (q31_t)0xc1a86a9c, (q31_t)0x6fc7b36d, (q31_t)0xc1a2edde, + (q31_t)0x6fc4a39c, (q31_t)0xc19d7145, + (q31_t)0x6fc19385, (q31_t)0xc197f4d4, (q31_t)0x6fbe832a, (q31_t)0xc1927888, (q31_t)0x6fbb728a, (q31_t)0xc18cfc63, + (q31_t)0x6fb861a4, (q31_t)0xc1878065, + (q31_t)0x6fb5507a, (q31_t)0xc182048d, (q31_t)0x6fb23f0b, (q31_t)0xc17c88dc, (q31_t)0x6faf2d57, (q31_t)0xc1770d52, + (q31_t)0x6fac1b5f, (q31_t)0xc17191ee, + (q31_t)0x6fa90921, (q31_t)0xc16c16b0, (q31_t)0x6fa5f69e, (q31_t)0xc1669b99, (q31_t)0x6fa2e3d7, (q31_t)0xc16120a9, + (q31_t)0x6f9fd0cb, (q31_t)0xc15ba5df, + (q31_t)0x6f9cbd79, (q31_t)0xc1562b3d, (q31_t)0x6f99a9e3, (q31_t)0xc150b0c0, (q31_t)0x6f969608, (q31_t)0xc14b366b, + (q31_t)0x6f9381e9, (q31_t)0xc145bc3c, + (q31_t)0x6f906d84, (q31_t)0xc1404233, (q31_t)0x6f8d58db, (q31_t)0xc13ac852, (q31_t)0x6f8a43ed, (q31_t)0xc1354e97, + (q31_t)0x6f872eba, (q31_t)0xc12fd503, + (q31_t)0x6f841942, (q31_t)0xc12a5b95, (q31_t)0x6f810386, (q31_t)0xc124e24f, (q31_t)0x6f7ded84, (q31_t)0xc11f692f, + (q31_t)0x6f7ad73e, (q31_t)0xc119f036, + (q31_t)0x6f77c0b3, (q31_t)0xc1147764, (q31_t)0x6f74a9e4, (q31_t)0xc10efeb8, (q31_t)0x6f7192cf, (q31_t)0xc1098634, + (q31_t)0x6f6e7b76, (q31_t)0xc1040dd6, + (q31_t)0x6f6b63d8, (q31_t)0xc0fe959f, (q31_t)0x6f684bf6, (q31_t)0xc0f91d8f, (q31_t)0x6f6533ce, (q31_t)0xc0f3a5a6, + (q31_t)0x6f621b62, (q31_t)0xc0ee2de3, + (q31_t)0x6f5f02b2, (q31_t)0xc0e8b648, (q31_t)0x6f5be9bc, (q31_t)0xc0e33ed4, (q31_t)0x6f58d082, (q31_t)0xc0ddc786, + (q31_t)0x6f55b703, (q31_t)0xc0d8505f, + (q31_t)0x6f529d40, (q31_t)0xc0d2d960, (q31_t)0x6f4f8338, (q31_t)0xc0cd6287, (q31_t)0x6f4c68eb, (q31_t)0xc0c7ebd6, + (q31_t)0x6f494e5a, (q31_t)0xc0c2754b, + (q31_t)0x6f463383, (q31_t)0xc0bcfee7, (q31_t)0x6f431869, (q31_t)0xc0b788ab, (q31_t)0x6f3ffd09, (q31_t)0xc0b21295, + (q31_t)0x6f3ce165, (q31_t)0xc0ac9ca6, + (q31_t)0x6f39c57d, (q31_t)0xc0a726df, (q31_t)0x6f36a94f, (q31_t)0xc0a1b13e, (q31_t)0x6f338cde, (q31_t)0xc09c3bc5, + (q31_t)0x6f307027, (q31_t)0xc096c673, + (q31_t)0x6f2d532c, (q31_t)0xc0915148, (q31_t)0x6f2a35ed, (q31_t)0xc08bdc44, (q31_t)0x6f271868, (q31_t)0xc0866767, + (q31_t)0x6f23faa0, (q31_t)0xc080f2b1, + (q31_t)0x6f20dc92, (q31_t)0xc07b7e23, (q31_t)0x6f1dbe41, (q31_t)0xc07609bb, (q31_t)0x6f1a9faa, (q31_t)0xc070957b, + (q31_t)0x6f1780cf, (q31_t)0xc06b2162, + (q31_t)0x6f1461b0, (q31_t)0xc065ad70, (q31_t)0x6f11424c, (q31_t)0xc06039a6, (q31_t)0x6f0e22a3, (q31_t)0xc05ac603, + (q31_t)0x6f0b02b6, (q31_t)0xc0555287, + (q31_t)0x6f07e285, (q31_t)0xc04fdf32, (q31_t)0x6f04c20f, (q31_t)0xc04a6c05, (q31_t)0x6f01a155, (q31_t)0xc044f8fe, + (q31_t)0x6efe8056, (q31_t)0xc03f8620, + (q31_t)0x6efb5f12, (q31_t)0xc03a1368, (q31_t)0x6ef83d8a, (q31_t)0xc034a0d8, (q31_t)0x6ef51bbe, (q31_t)0xc02f2e6f, + (q31_t)0x6ef1f9ad, (q31_t)0xc029bc2e, + (q31_t)0x6eeed758, (q31_t)0xc0244a14, (q31_t)0x6eebb4bf, (q31_t)0xc01ed821, (q31_t)0x6ee891e1, (q31_t)0xc0196656, + (q31_t)0x6ee56ebe, (q31_t)0xc013f4b2, + (q31_t)0x6ee24b57, (q31_t)0xc00e8336, (q31_t)0x6edf27ac, (q31_t)0xc00911e1, (q31_t)0x6edc03bc, (q31_t)0xc003a0b3, + (q31_t)0x6ed8df88, (q31_t)0xbffe2fad, + (q31_t)0x6ed5bb10, (q31_t)0xbff8bece, (q31_t)0x6ed29653, (q31_t)0xbff34e17, (q31_t)0x6ecf7152, (q31_t)0xbfeddd88, + (q31_t)0x6ecc4c0d, (q31_t)0xbfe86d20, + (q31_t)0x6ec92683, (q31_t)0xbfe2fcdf, (q31_t)0x6ec600b5, (q31_t)0xbfdd8cc6, (q31_t)0x6ec2daa2, (q31_t)0xbfd81cd5, + (q31_t)0x6ebfb44b, (q31_t)0xbfd2ad0b, + (q31_t)0x6ebc8db0, (q31_t)0xbfcd3d69, (q31_t)0x6eb966d1, (q31_t)0xbfc7cdee, (q31_t)0x6eb63fad, (q31_t)0xbfc25e9b, + (q31_t)0x6eb31845, (q31_t)0xbfbcef70, + (q31_t)0x6eaff099, (q31_t)0xbfb7806c, (q31_t)0x6eacc8a8, (q31_t)0xbfb21190, (q31_t)0x6ea9a073, (q31_t)0xbfaca2dc, + (q31_t)0x6ea677fa, (q31_t)0xbfa7344f, + (q31_t)0x6ea34f3d, (q31_t)0xbfa1c5ea, (q31_t)0x6ea0263b, (q31_t)0xbf9c57ac, (q31_t)0x6e9cfcf5, (q31_t)0xbf96e997, + (q31_t)0x6e99d36b, (q31_t)0xbf917ba9, + (q31_t)0x6e96a99d, (q31_t)0xbf8c0de3, (q31_t)0x6e937f8a, (q31_t)0xbf86a044, (q31_t)0x6e905534, (q31_t)0xbf8132ce, + (q31_t)0x6e8d2a99, (q31_t)0xbf7bc57f, + (q31_t)0x6e89ffb9, (q31_t)0xbf765858, (q31_t)0x6e86d496, (q31_t)0xbf70eb59, (q31_t)0x6e83a92f, (q31_t)0xbf6b7e81, + (q31_t)0x6e807d83, (q31_t)0xbf6611d2, + (q31_t)0x6e7d5193, (q31_t)0xbf60a54a, (q31_t)0x6e7a255f, (q31_t)0xbf5b38ea, (q31_t)0x6e76f8e7, (q31_t)0xbf55ccb2, + (q31_t)0x6e73cc2b, (q31_t)0xbf5060a2, + (q31_t)0x6e709f2a, (q31_t)0xbf4af4ba, (q31_t)0x6e6d71e6, (q31_t)0xbf4588fa, (q31_t)0x6e6a445d, (q31_t)0xbf401d61, + (q31_t)0x6e671690, (q31_t)0xbf3ab1f1, + (q31_t)0x6e63e87f, (q31_t)0xbf3546a8, (q31_t)0x6e60ba2a, (q31_t)0xbf2fdb88, (q31_t)0x6e5d8b91, (q31_t)0xbf2a708f, + (q31_t)0x6e5a5cb4, (q31_t)0xbf2505bf, + (q31_t)0x6e572d93, (q31_t)0xbf1f9b16, (q31_t)0x6e53fe2e, (q31_t)0xbf1a3096, (q31_t)0x6e50ce84, (q31_t)0xbf14c63d, + (q31_t)0x6e4d9e97, (q31_t)0xbf0f5c0d, + (q31_t)0x6e4a6e66, (q31_t)0xbf09f205, (q31_t)0x6e473df0, (q31_t)0xbf048824, (q31_t)0x6e440d37, (q31_t)0xbeff1e6c, + (q31_t)0x6e40dc39, (q31_t)0xbef9b4dc, + (q31_t)0x6e3daaf8, (q31_t)0xbef44b74, (q31_t)0x6e3a7972, (q31_t)0xbeeee234, (q31_t)0x6e3747a9, (q31_t)0xbee9791c, + (q31_t)0x6e34159b, (q31_t)0xbee4102d, + (q31_t)0x6e30e34a, (q31_t)0xbedea765, (q31_t)0x6e2db0b4, (q31_t)0xbed93ec6, (q31_t)0x6e2a7ddb, (q31_t)0xbed3d64f, + (q31_t)0x6e274abe, (q31_t)0xbece6e00, + (q31_t)0x6e24175c, (q31_t)0xbec905d9, (q31_t)0x6e20e3b7, (q31_t)0xbec39ddb, (q31_t)0x6e1dafce, (q31_t)0xbebe3605, + (q31_t)0x6e1a7ba1, (q31_t)0xbeb8ce57, + (q31_t)0x6e174730, (q31_t)0xbeb366d1, (q31_t)0x6e14127b, (q31_t)0xbeadff74, (q31_t)0x6e10dd82, (q31_t)0xbea8983f, + (q31_t)0x6e0da845, (q31_t)0xbea33132, + (q31_t)0x6e0a72c5, (q31_t)0xbe9dca4e, (q31_t)0x6e073d00, (q31_t)0xbe986391, (q31_t)0x6e0406f8, (q31_t)0xbe92fcfe, + (q31_t)0x6e00d0ac, (q31_t)0xbe8d9692, + (q31_t)0x6dfd9a1c, (q31_t)0xbe88304f, (q31_t)0x6dfa6348, (q31_t)0xbe82ca35, (q31_t)0x6df72c30, (q31_t)0xbe7d6442, + (q31_t)0x6df3f4d4, (q31_t)0xbe77fe78, + (q31_t)0x6df0bd35, (q31_t)0xbe7298d7, (q31_t)0x6ded8552, (q31_t)0xbe6d335e, (q31_t)0x6dea4d2b, (q31_t)0xbe67ce0d, + (q31_t)0x6de714c0, (q31_t)0xbe6268e5, + (q31_t)0x6de3dc11, (q31_t)0xbe5d03e6, (q31_t)0x6de0a31f, (q31_t)0xbe579f0f, (q31_t)0x6ddd69e9, (q31_t)0xbe523a60, + (q31_t)0x6dda306f, (q31_t)0xbe4cd5da, + (q31_t)0x6dd6f6b1, (q31_t)0xbe47717c, (q31_t)0x6dd3bcaf, (q31_t)0xbe420d47, (q31_t)0x6dd0826a, (q31_t)0xbe3ca93b, + (q31_t)0x6dcd47e1, (q31_t)0xbe374557, + (q31_t)0x6dca0d14, (q31_t)0xbe31e19b, (q31_t)0x6dc6d204, (q31_t)0xbe2c7e09, (q31_t)0x6dc396b0, (q31_t)0xbe271a9f, + (q31_t)0x6dc05b18, (q31_t)0xbe21b75d, + (q31_t)0x6dbd1f3c, (q31_t)0xbe1c5444, (q31_t)0x6db9e31d, (q31_t)0xbe16f154, (q31_t)0x6db6a6ba, (q31_t)0xbe118e8c, + (q31_t)0x6db36a14, (q31_t)0xbe0c2bed, + (q31_t)0x6db02d29, (q31_t)0xbe06c977, (q31_t)0x6daceffb, (q31_t)0xbe01672a, (q31_t)0x6da9b28a, (q31_t)0xbdfc0505, + (q31_t)0x6da674d5, (q31_t)0xbdf6a309, + (q31_t)0x6da336dc, (q31_t)0xbdf14135, (q31_t)0x6d9ff89f, (q31_t)0xbdebdf8b, (q31_t)0x6d9cba1f, (q31_t)0xbde67e09, + (q31_t)0x6d997b5b, (q31_t)0xbde11cb0, + (q31_t)0x6d963c54, (q31_t)0xbddbbb7f, (q31_t)0x6d92fd09, (q31_t)0xbdd65a78, (q31_t)0x6d8fbd7a, (q31_t)0xbdd0f999, + (q31_t)0x6d8c7da8, (q31_t)0xbdcb98e3, + (q31_t)0x6d893d93, (q31_t)0xbdc63856, (q31_t)0x6d85fd39, (q31_t)0xbdc0d7f2, (q31_t)0x6d82bc9d, (q31_t)0xbdbb77b7, + (q31_t)0x6d7f7bbc, (q31_t)0xbdb617a4, + (q31_t)0x6d7c3a98, (q31_t)0xbdb0b7bb, (q31_t)0x6d78f931, (q31_t)0xbdab57fa, (q31_t)0x6d75b786, (q31_t)0xbda5f862, + (q31_t)0x6d727597, (q31_t)0xbda098f3, + (q31_t)0x6d6f3365, (q31_t)0xbd9b39ad, (q31_t)0x6d6bf0f0, (q31_t)0xbd95da91, (q31_t)0x6d68ae37, (q31_t)0xbd907b9d, + (q31_t)0x6d656b3a, (q31_t)0xbd8b1cd2, + (q31_t)0x6d6227fa, (q31_t)0xbd85be30, (q31_t)0x6d5ee477, (q31_t)0xbd805fb7, (q31_t)0x6d5ba0b0, (q31_t)0xbd7b0167, + (q31_t)0x6d585ca6, (q31_t)0xbd75a340, + (q31_t)0x6d551858, (q31_t)0xbd704542, (q31_t)0x6d51d3c6, (q31_t)0xbd6ae76d, (q31_t)0x6d4e8ef2, (q31_t)0xbd6589c1, + (q31_t)0x6d4b49da, (q31_t)0xbd602c3f, + (q31_t)0x6d48047e, (q31_t)0xbd5acee5, (q31_t)0x6d44bedf, (q31_t)0xbd5571b5, (q31_t)0x6d4178fd, (q31_t)0xbd5014ad, + (q31_t)0x6d3e32d7, (q31_t)0xbd4ab7cf, + (q31_t)0x6d3aec6e, (q31_t)0xbd455b1a, (q31_t)0x6d37a5c1, (q31_t)0xbd3ffe8e, (q31_t)0x6d345ed1, (q31_t)0xbd3aa22c, + (q31_t)0x6d31179e, (q31_t)0xbd3545f2, + (q31_t)0x6d2dd027, (q31_t)0xbd2fe9e2, (q31_t)0x6d2a886e, (q31_t)0xbd2a8dfb, (q31_t)0x6d274070, (q31_t)0xbd25323d, + (q31_t)0x6d23f830, (q31_t)0xbd1fd6a8, + (q31_t)0x6d20afac, (q31_t)0xbd1a7b3d, (q31_t)0x6d1d66e4, (q31_t)0xbd151ffb, (q31_t)0x6d1a1dda, (q31_t)0xbd0fc4e2, + (q31_t)0x6d16d48c, (q31_t)0xbd0a69f2, + (q31_t)0x6d138afb, (q31_t)0xbd050f2c, (q31_t)0x6d104126, (q31_t)0xbcffb48f, (q31_t)0x6d0cf70f, (q31_t)0xbcfa5a1b, + (q31_t)0x6d09acb4, (q31_t)0xbcf4ffd1, + (q31_t)0x6d066215, (q31_t)0xbcefa5b0, (q31_t)0x6d031734, (q31_t)0xbcea4bb9, (q31_t)0x6cffcc0f, (q31_t)0xbce4f1eb, + (q31_t)0x6cfc80a7, (q31_t)0xbcdf9846, + (q31_t)0x6cf934fc, (q31_t)0xbcda3ecb, (q31_t)0x6cf5e90d, (q31_t)0xbcd4e579, (q31_t)0x6cf29cdc, (q31_t)0xbccf8c50, + (q31_t)0x6cef5067, (q31_t)0xbcca3351, + (q31_t)0x6cec03af, (q31_t)0xbcc4da7b, (q31_t)0x6ce8b6b4, (q31_t)0xbcbf81cf, (q31_t)0x6ce56975, (q31_t)0xbcba294d, + (q31_t)0x6ce21bf4, (q31_t)0xbcb4d0f4, + (q31_t)0x6cdece2f, (q31_t)0xbcaf78c4, (q31_t)0x6cdb8027, (q31_t)0xbcaa20be, (q31_t)0x6cd831dc, (q31_t)0xbca4c8e1, + (q31_t)0x6cd4e34e, (q31_t)0xbc9f712e, + (q31_t)0x6cd1947c, (q31_t)0xbc9a19a5, (q31_t)0x6cce4568, (q31_t)0xbc94c245, (q31_t)0x6ccaf610, (q31_t)0xbc8f6b0f, + (q31_t)0x6cc7a676, (q31_t)0xbc8a1402, + (q31_t)0x6cc45698, (q31_t)0xbc84bd1f, (q31_t)0x6cc10677, (q31_t)0xbc7f6665, (q31_t)0x6cbdb613, (q31_t)0xbc7a0fd6, + (q31_t)0x6cba656c, (q31_t)0xbc74b96f, + (q31_t)0x6cb71482, (q31_t)0xbc6f6333, (q31_t)0x6cb3c355, (q31_t)0xbc6a0d20, (q31_t)0x6cb071e4, (q31_t)0xbc64b737, + (q31_t)0x6cad2031, (q31_t)0xbc5f6177, + (q31_t)0x6ca9ce3b, (q31_t)0xbc5a0be2, (q31_t)0x6ca67c01, (q31_t)0xbc54b676, (q31_t)0x6ca32985, (q31_t)0xbc4f6134, + (q31_t)0x6c9fd6c6, (q31_t)0xbc4a0c1b, + (q31_t)0x6c9c83c3, (q31_t)0xbc44b72c, (q31_t)0x6c99307e, (q31_t)0xbc3f6267, (q31_t)0x6c95dcf6, (q31_t)0xbc3a0dcc, + (q31_t)0x6c92892a, (q31_t)0xbc34b95b, + (q31_t)0x6c8f351c, (q31_t)0xbc2f6513, (q31_t)0x6c8be0cb, (q31_t)0xbc2a10f6, (q31_t)0x6c888c36, (q31_t)0xbc24bd02, + (q31_t)0x6c85375f, (q31_t)0xbc1f6938, + (q31_t)0x6c81e245, (q31_t)0xbc1a1598, (q31_t)0x6c7e8ce8, (q31_t)0xbc14c221, (q31_t)0x6c7b3748, (q31_t)0xbc0f6ed5, + (q31_t)0x6c77e165, (q31_t)0xbc0a1bb3, + (q31_t)0x6c748b3f, (q31_t)0xbc04c8ba, (q31_t)0x6c7134d7, (q31_t)0xbbff75ec, (q31_t)0x6c6dde2b, (q31_t)0xbbfa2347, + (q31_t)0x6c6a873d, (q31_t)0xbbf4d0cc, + (q31_t)0x6c67300b, (q31_t)0xbbef7e7c, (q31_t)0x6c63d897, (q31_t)0xbbea2c55, (q31_t)0x6c6080e0, (q31_t)0xbbe4da58, + (q31_t)0x6c5d28e6, (q31_t)0xbbdf8885, + (q31_t)0x6c59d0a9, (q31_t)0xbbda36dd, (q31_t)0x6c56782a, (q31_t)0xbbd4e55e, (q31_t)0x6c531f67, (q31_t)0xbbcf940a, + (q31_t)0x6c4fc662, (q31_t)0xbbca42df, + (q31_t)0x6c4c6d1a, (q31_t)0xbbc4f1df, (q31_t)0x6c49138f, (q31_t)0xbbbfa108, (q31_t)0x6c45b9c1, (q31_t)0xbbba505c, + (q31_t)0x6c425fb1, (q31_t)0xbbb4ffda, + (q31_t)0x6c3f055d, (q31_t)0xbbafaf82, (q31_t)0x6c3baac7, (q31_t)0xbbaa5f54, (q31_t)0x6c384fef, (q31_t)0xbba50f50, + (q31_t)0x6c34f4d3, (q31_t)0xbb9fbf77, + (q31_t)0x6c319975, (q31_t)0xbb9a6fc7, (q31_t)0x6c2e3dd4, (q31_t)0xbb952042, (q31_t)0x6c2ae1f0, (q31_t)0xbb8fd0e7, + (q31_t)0x6c2785ca, (q31_t)0xbb8a81b6, + (q31_t)0x6c242960, (q31_t)0xbb8532b0, (q31_t)0x6c20ccb4, (q31_t)0xbb7fe3d3, (q31_t)0x6c1d6fc6, (q31_t)0xbb7a9521, + (q31_t)0x6c1a1295, (q31_t)0xbb754699, + (q31_t)0x6c16b521, (q31_t)0xbb6ff83c, (q31_t)0x6c13576a, (q31_t)0xbb6aaa09, (q31_t)0x6c0ff971, (q31_t)0xbb655c00, + (q31_t)0x6c0c9b35, (q31_t)0xbb600e21, + (q31_t)0x6c093cb6, (q31_t)0xbb5ac06d, (q31_t)0x6c05ddf5, (q31_t)0xbb5572e3, (q31_t)0x6c027ef1, (q31_t)0xbb502583, + (q31_t)0x6bff1faa, (q31_t)0xbb4ad84e, + (q31_t)0x6bfbc021, (q31_t)0xbb458b43, (q31_t)0x6bf86055, (q31_t)0xbb403e63, (q31_t)0x6bf50047, (q31_t)0xbb3af1ad, + (q31_t)0x6bf19ff6, (q31_t)0xbb35a521, + (q31_t)0x6bee3f62, (q31_t)0xbb3058c0, (q31_t)0x6beade8c, (q31_t)0xbb2b0c8a, (q31_t)0x6be77d74, (q31_t)0xbb25c07d, + (q31_t)0x6be41c18, (q31_t)0xbb20749c, + (q31_t)0x6be0ba7b, (q31_t)0xbb1b28e4, (q31_t)0x6bdd589a, (q31_t)0xbb15dd57, (q31_t)0x6bd9f677, (q31_t)0xbb1091f5, + (q31_t)0x6bd69412, (q31_t)0xbb0b46bd, + (q31_t)0x6bd3316a, (q31_t)0xbb05fbb0, (q31_t)0x6bcfce80, (q31_t)0xbb00b0ce, (q31_t)0x6bcc6b53, (q31_t)0xbafb6615, + (q31_t)0x6bc907e3, (q31_t)0xbaf61b88, + (q31_t)0x6bc5a431, (q31_t)0xbaf0d125, (q31_t)0x6bc2403d, (q31_t)0xbaeb86ed, (q31_t)0x6bbedc06, (q31_t)0xbae63cdf, + (q31_t)0x6bbb778d, (q31_t)0xbae0f2fc, + (q31_t)0x6bb812d1, (q31_t)0xbadba943, (q31_t)0x6bb4add3, (q31_t)0xbad65fb5, (q31_t)0x6bb14892, (q31_t)0xbad11652, + (q31_t)0x6bade30f, (q31_t)0xbacbcd1a, + (q31_t)0x6baa7d49, (q31_t)0xbac6840c, (q31_t)0x6ba71741, (q31_t)0xbac13b29, (q31_t)0x6ba3b0f7, (q31_t)0xbabbf270, + (q31_t)0x6ba04a6a, (q31_t)0xbab6a9e3, + (q31_t)0x6b9ce39b, (q31_t)0xbab16180, (q31_t)0x6b997c8a, (q31_t)0xbaac1948, (q31_t)0x6b961536, (q31_t)0xbaa6d13a, + (q31_t)0x6b92ada0, (q31_t)0xbaa18958, + (q31_t)0x6b8f45c7, (q31_t)0xba9c41a0, (q31_t)0x6b8bddac, (q31_t)0xba96fa13, (q31_t)0x6b88754f, (q31_t)0xba91b2b1, + (q31_t)0x6b850caf, (q31_t)0xba8c6b79, + (q31_t)0x6b81a3cd, (q31_t)0xba87246d, (q31_t)0x6b7e3aa9, (q31_t)0xba81dd8b, (q31_t)0x6b7ad142, (q31_t)0xba7c96d4, + (q31_t)0x6b776799, (q31_t)0xba775048, + (q31_t)0x6b73fdae, (q31_t)0xba7209e7, (q31_t)0x6b709381, (q31_t)0xba6cc3b1, (q31_t)0x6b6d2911, (q31_t)0xba677da6, + (q31_t)0x6b69be5f, (q31_t)0xba6237c5, + (q31_t)0x6b66536b, (q31_t)0xba5cf210, (q31_t)0x6b62e834, (q31_t)0xba57ac86, (q31_t)0x6b5f7cbc, (q31_t)0xba526726, + (q31_t)0x6b5c1101, (q31_t)0xba4d21f2, + (q31_t)0x6b58a503, (q31_t)0xba47dce8, (q31_t)0x6b5538c4, (q31_t)0xba42980a, (q31_t)0x6b51cc42, (q31_t)0xba3d5356, + (q31_t)0x6b4e5f7f, (q31_t)0xba380ece, + (q31_t)0x6b4af279, (q31_t)0xba32ca71, (q31_t)0x6b478530, (q31_t)0xba2d863e, (q31_t)0x6b4417a6, (q31_t)0xba284237, + (q31_t)0x6b40a9d9, (q31_t)0xba22fe5b, + (q31_t)0x6b3d3bcb, (q31_t)0xba1dbaaa, (q31_t)0x6b39cd7a, (q31_t)0xba187724, (q31_t)0x6b365ee7, (q31_t)0xba1333c9, + (q31_t)0x6b32f012, (q31_t)0xba0df099, + (q31_t)0x6b2f80fb, (q31_t)0xba08ad95, (q31_t)0x6b2c11a1, (q31_t)0xba036abb, (q31_t)0x6b28a206, (q31_t)0xb9fe280d, + (q31_t)0x6b253228, (q31_t)0xb9f8e58a, + (q31_t)0x6b21c208, (q31_t)0xb9f3a332, (q31_t)0x6b1e51a7, (q31_t)0xb9ee6106, (q31_t)0x6b1ae103, (q31_t)0xb9e91f04, + (q31_t)0x6b17701d, (q31_t)0xb9e3dd2e, + (q31_t)0x6b13fef5, (q31_t)0xb9de9b83, (q31_t)0x6b108d8b, (q31_t)0xb9d95a03, (q31_t)0x6b0d1bdf, (q31_t)0xb9d418af, + (q31_t)0x6b09a9f1, (q31_t)0xb9ced786, + (q31_t)0x6b0637c1, (q31_t)0xb9c99688, (q31_t)0x6b02c54f, (q31_t)0xb9c455b6, (q31_t)0x6aff529a, (q31_t)0xb9bf150e, + (q31_t)0x6afbdfa4, (q31_t)0xb9b9d493, + (q31_t)0x6af86c6c, (q31_t)0xb9b49442, (q31_t)0x6af4f8f2, (q31_t)0xb9af541d, (q31_t)0x6af18536, (q31_t)0xb9aa1423, + (q31_t)0x6aee1138, (q31_t)0xb9a4d455, + (q31_t)0x6aea9cf8, (q31_t)0xb99f94b2, (q31_t)0x6ae72876, (q31_t)0xb99a553a, (q31_t)0x6ae3b3b2, (q31_t)0xb99515ee, + (q31_t)0x6ae03eac, (q31_t)0xb98fd6cd, + (q31_t)0x6adcc964, (q31_t)0xb98a97d8, (q31_t)0x6ad953db, (q31_t)0xb985590e, (q31_t)0x6ad5de0f, (q31_t)0xb9801a70, + (q31_t)0x6ad26802, (q31_t)0xb97adbfd, + (q31_t)0x6acef1b2, (q31_t)0xb9759db6, (q31_t)0x6acb7b21, (q31_t)0xb9705f9a, (q31_t)0x6ac8044e, (q31_t)0xb96b21aa, + (q31_t)0x6ac48d39, (q31_t)0xb965e3e5, + (q31_t)0x6ac115e2, (q31_t)0xb960a64c, (q31_t)0x6abd9e49, (q31_t)0xb95b68de, (q31_t)0x6aba266e, (q31_t)0xb9562b9c, + (q31_t)0x6ab6ae52, (q31_t)0xb950ee86, + (q31_t)0x6ab335f4, (q31_t)0xb94bb19b, (q31_t)0x6aafbd54, (q31_t)0xb94674dc, (q31_t)0x6aac4472, (q31_t)0xb9413848, + (q31_t)0x6aa8cb4e, (q31_t)0xb93bfbe0, + (q31_t)0x6aa551e9, (q31_t)0xb936bfa4, (q31_t)0x6aa1d841, (q31_t)0xb9318393, (q31_t)0x6a9e5e58, (q31_t)0xb92c47ae, + (q31_t)0x6a9ae42e, (q31_t)0xb9270bf5, + (q31_t)0x6a9769c1, (q31_t)0xb921d067, (q31_t)0x6a93ef13, (q31_t)0xb91c9505, (q31_t)0x6a907423, (q31_t)0xb91759cf, + (q31_t)0x6a8cf8f1, (q31_t)0xb9121ec5, + (q31_t)0x6a897d7d, (q31_t)0xb90ce3e6, (q31_t)0x6a8601c8, (q31_t)0xb907a933, (q31_t)0x6a8285d1, (q31_t)0xb9026eac, + (q31_t)0x6a7f0999, (q31_t)0xb8fd3451, + (q31_t)0x6a7b8d1e, (q31_t)0xb8f7fa21, (q31_t)0x6a781062, (q31_t)0xb8f2c01d, (q31_t)0x6a749365, (q31_t)0xb8ed8646, + (q31_t)0x6a711625, (q31_t)0xb8e84c99, + (q31_t)0x6a6d98a4, (q31_t)0xb8e31319, (q31_t)0x6a6a1ae2, (q31_t)0xb8ddd9c5, (q31_t)0x6a669cdd, (q31_t)0xb8d8a09d, + (q31_t)0x6a631e97, (q31_t)0xb8d367a0, + (q31_t)0x6a5fa010, (q31_t)0xb8ce2ecf, (q31_t)0x6a5c2147, (q31_t)0xb8c8f62b, (q31_t)0x6a58a23c, (q31_t)0xb8c3bdb2, + (q31_t)0x6a5522ef, (q31_t)0xb8be8565, + (q31_t)0x6a51a361, (q31_t)0xb8b94d44, (q31_t)0x6a4e2392, (q31_t)0xb8b4154f, (q31_t)0x6a4aa381, (q31_t)0xb8aedd86, + (q31_t)0x6a47232e, (q31_t)0xb8a9a5e9, + (q31_t)0x6a43a29a, (q31_t)0xb8a46e78, (q31_t)0x6a4021c4, (q31_t)0xb89f3733, (q31_t)0x6a3ca0ad, (q31_t)0xb89a001a, + (q31_t)0x6a391f54, (q31_t)0xb894c92d, + (q31_t)0x6a359db9, (q31_t)0xb88f926d, (q31_t)0x6a321bdd, (q31_t)0xb88a5bd8, (q31_t)0x6a2e99c0, (q31_t)0xb885256f, + (q31_t)0x6a2b1761, (q31_t)0xb87fef33, + (q31_t)0x6a2794c1, (q31_t)0xb87ab922, (q31_t)0x6a2411df, (q31_t)0xb875833e, (q31_t)0x6a208ebb, (q31_t)0xb8704d85, + (q31_t)0x6a1d0b57, (q31_t)0xb86b17f9, + (q31_t)0x6a1987b0, (q31_t)0xb865e299, (q31_t)0x6a1603c8, (q31_t)0xb860ad66, (q31_t)0x6a127f9f, (q31_t)0xb85b785e, + (q31_t)0x6a0efb35, (q31_t)0xb8564383, + (q31_t)0x6a0b7689, (q31_t)0xb8510ed4, (q31_t)0x6a07f19b, (q31_t)0xb84bda51, (q31_t)0x6a046c6c, (q31_t)0xb846a5fa, + (q31_t)0x6a00e6fc, (q31_t)0xb84171cf, + (q31_t)0x69fd614a, (q31_t)0xb83c3dd1, (q31_t)0x69f9db57, (q31_t)0xb83709ff, (q31_t)0x69f65523, (q31_t)0xb831d659, + (q31_t)0x69f2cead, (q31_t)0xb82ca2e0, + (q31_t)0x69ef47f6, (q31_t)0xb8276f93, (q31_t)0x69ebc0fe, (q31_t)0xb8223c72, (q31_t)0x69e839c4, (q31_t)0xb81d097e, + (q31_t)0x69e4b249, (q31_t)0xb817d6b6, + (q31_t)0x69e12a8c, (q31_t)0xb812a41a, (q31_t)0x69dda28f, (q31_t)0xb80d71aa, (q31_t)0x69da1a50, (q31_t)0xb8083f67, + (q31_t)0x69d691cf, (q31_t)0xb8030d51, + (q31_t)0x69d3090e, (q31_t)0xb7fddb67, (q31_t)0x69cf800b, (q31_t)0xb7f8a9a9, (q31_t)0x69cbf6c7, (q31_t)0xb7f37818, + (q31_t)0x69c86d41, (q31_t)0xb7ee46b3, + (q31_t)0x69c4e37a, (q31_t)0xb7e9157a, (q31_t)0x69c15973, (q31_t)0xb7e3e46e, (q31_t)0x69bdcf29, (q31_t)0xb7deb38f, + (q31_t)0x69ba449f, (q31_t)0xb7d982dc, + (q31_t)0x69b6b9d3, (q31_t)0xb7d45255, (q31_t)0x69b32ec7, (q31_t)0xb7cf21fb, (q31_t)0x69afa378, (q31_t)0xb7c9f1ce, + (q31_t)0x69ac17e9, (q31_t)0xb7c4c1cd, + (q31_t)0x69a88c19, (q31_t)0xb7bf91f8, (q31_t)0x69a50007, (q31_t)0xb7ba6251, (q31_t)0x69a173b5, (q31_t)0xb7b532d6, + (q31_t)0x699de721, (q31_t)0xb7b00387, + (q31_t)0x699a5a4c, (q31_t)0xb7aad465, (q31_t)0x6996cd35, (q31_t)0xb7a5a570, (q31_t)0x69933fde, (q31_t)0xb7a076a7, + (q31_t)0x698fb246, (q31_t)0xb79b480b, + (q31_t)0x698c246c, (q31_t)0xb796199b, (q31_t)0x69889651, (q31_t)0xb790eb58, (q31_t)0x698507f6, (q31_t)0xb78bbd42, + (q31_t)0x69817959, (q31_t)0xb7868f59, + (q31_t)0x697dea7b, (q31_t)0xb781619c, (q31_t)0x697a5b5c, (q31_t)0xb77c340c, (q31_t)0x6976cbfc, (q31_t)0xb77706a9, + (q31_t)0x69733c5b, (q31_t)0xb771d972, + (q31_t)0x696fac78, (q31_t)0xb76cac69, (q31_t)0x696c1c55, (q31_t)0xb7677f8c, (q31_t)0x69688bf1, (q31_t)0xb76252db, + (q31_t)0x6964fb4c, (q31_t)0xb75d2658, + (q31_t)0x69616a65, (q31_t)0xb757fa01, (q31_t)0x695dd93e, (q31_t)0xb752cdd8, (q31_t)0x695a47d6, (q31_t)0xb74da1db, + (q31_t)0x6956b62d, (q31_t)0xb748760b, + (q31_t)0x69532442, (q31_t)0xb7434a67, (q31_t)0x694f9217, (q31_t)0xb73e1ef1, (q31_t)0x694bffab, (q31_t)0xb738f3a7, + (q31_t)0x69486cfe, (q31_t)0xb733c88b, + (q31_t)0x6944da10, (q31_t)0xb72e9d9b, (q31_t)0x694146e1, (q31_t)0xb72972d8, (q31_t)0x693db371, (q31_t)0xb7244842, + (q31_t)0x693a1fc0, (q31_t)0xb71f1dd9, + (q31_t)0x69368bce, (q31_t)0xb719f39e, (q31_t)0x6932f79b, (q31_t)0xb714c98e, (q31_t)0x692f6328, (q31_t)0xb70f9fac, + (q31_t)0x692bce73, (q31_t)0xb70a75f7, + (q31_t)0x6928397e, (q31_t)0xb7054c6f, (q31_t)0x6924a448, (q31_t)0xb7002314, (q31_t)0x69210ed1, (q31_t)0xb6faf9e6, + (q31_t)0x691d7919, (q31_t)0xb6f5d0e5, + (q31_t)0x6919e320, (q31_t)0xb6f0a812, (q31_t)0x69164ce7, (q31_t)0xb6eb7f6b, (q31_t)0x6912b66c, (q31_t)0xb6e656f1, + (q31_t)0x690f1fb1, (q31_t)0xb6e12ea4, + (q31_t)0x690b88b5, (q31_t)0xb6dc0685, (q31_t)0x6907f178, (q31_t)0xb6d6de92, (q31_t)0x690459fb, (q31_t)0xb6d1b6cd, + (q31_t)0x6900c23c, (q31_t)0xb6cc8f35, + (q31_t)0x68fd2a3d, (q31_t)0xb6c767ca, (q31_t)0x68f991fd, (q31_t)0xb6c2408c, (q31_t)0x68f5f97d, (q31_t)0xb6bd197c, + (q31_t)0x68f260bb, (q31_t)0xb6b7f298, + (q31_t)0x68eec7b9, (q31_t)0xb6b2cbe2, (q31_t)0x68eb2e76, (q31_t)0xb6ada559, (q31_t)0x68e794f3, (q31_t)0xb6a87efd, + (q31_t)0x68e3fb2e, (q31_t)0xb6a358ce, + (q31_t)0x68e06129, (q31_t)0xb69e32cd, (q31_t)0x68dcc6e4, (q31_t)0xb6990cf9, (q31_t)0x68d92c5d, (q31_t)0xb693e752, + (q31_t)0x68d59196, (q31_t)0xb68ec1d9, + (q31_t)0x68d1f68f, (q31_t)0xb6899c8d, (q31_t)0x68ce5b46, (q31_t)0xb684776e, (q31_t)0x68cabfbd, (q31_t)0xb67f527c, + (q31_t)0x68c723f3, (q31_t)0xb67a2db8, + (q31_t)0x68c387e9, (q31_t)0xb6750921, (q31_t)0x68bfeb9e, (q31_t)0xb66fe4b8, (q31_t)0x68bc4f13, (q31_t)0xb66ac07c, + (q31_t)0x68b8b247, (q31_t)0xb6659c6d, + (q31_t)0x68b5153a, (q31_t)0xb660788c, (q31_t)0x68b177ed, (q31_t)0xb65b54d8, (q31_t)0x68adda5f, (q31_t)0xb6563151, + (q31_t)0x68aa3c90, (q31_t)0xb6510df8, + (q31_t)0x68a69e81, (q31_t)0xb64beacd, (q31_t)0x68a30031, (q31_t)0xb646c7ce, (q31_t)0x689f61a1, (q31_t)0xb641a4fe, + (q31_t)0x689bc2d1, (q31_t)0xb63c825b, + (q31_t)0x689823bf, (q31_t)0xb6375fe5, (q31_t)0x6894846e, (q31_t)0xb6323d9d, (q31_t)0x6890e4dc, (q31_t)0xb62d1b82, + (q31_t)0x688d4509, (q31_t)0xb627f995, + (q31_t)0x6889a4f6, (q31_t)0xb622d7d6, (q31_t)0x688604a2, (q31_t)0xb61db644, (q31_t)0x6882640e, (q31_t)0xb61894df, + (q31_t)0x687ec339, (q31_t)0xb61373a9, + (q31_t)0x687b2224, (q31_t)0xb60e529f, (q31_t)0x687780ce, (q31_t)0xb60931c4, (q31_t)0x6873df38, (q31_t)0xb6041116, + (q31_t)0x68703d62, (q31_t)0xb5fef095, + (q31_t)0x686c9b4b, (q31_t)0xb5f9d043, (q31_t)0x6868f8f4, (q31_t)0xb5f4b01e, (q31_t)0x6865565c, (q31_t)0xb5ef9026, + (q31_t)0x6861b384, (q31_t)0xb5ea705d, + (q31_t)0x685e106c, (q31_t)0xb5e550c1, (q31_t)0x685a6d13, (q31_t)0xb5e03153, (q31_t)0x6856c979, (q31_t)0xb5db1212, + (q31_t)0x685325a0, (q31_t)0xb5d5f2ff, + (q31_t)0x684f8186, (q31_t)0xb5d0d41a, (q31_t)0x684bdd2c, (q31_t)0xb5cbb563, (q31_t)0x68483891, (q31_t)0xb5c696da, + (q31_t)0x684493b6, (q31_t)0xb5c1787e, + (q31_t)0x6840ee9b, (q31_t)0xb5bc5a50, (q31_t)0x683d493f, (q31_t)0xb5b73c50, (q31_t)0x6839a3a4, (q31_t)0xb5b21e7e, + (q31_t)0x6835fdc7, (q31_t)0xb5ad00d9, + (q31_t)0x683257ab, (q31_t)0xb5a7e362, (q31_t)0x682eb14e, (q31_t)0xb5a2c61a, (q31_t)0x682b0ab1, (q31_t)0xb59da8ff, + (q31_t)0x682763d4, (q31_t)0xb5988c12, + (q31_t)0x6823bcb7, (q31_t)0xb5936f53, (q31_t)0x68201559, (q31_t)0xb58e52c2, (q31_t)0x681c6dbb, (q31_t)0xb589365e, + (q31_t)0x6818c5dd, (q31_t)0xb5841a29, + (q31_t)0x68151dbe, (q31_t)0xb57efe22, (q31_t)0x68117560, (q31_t)0xb579e248, (q31_t)0x680dccc1, (q31_t)0xb574c69d, + (q31_t)0x680a23e2, (q31_t)0xb56fab1f, + (q31_t)0x68067ac3, (q31_t)0xb56a8fd0, (q31_t)0x6802d164, (q31_t)0xb56574ae, (q31_t)0x67ff27c4, (q31_t)0xb56059bb, + (q31_t)0x67fb7de5, (q31_t)0xb55b3ef5, + (q31_t)0x67f7d3c5, (q31_t)0xb556245e, (q31_t)0x67f42965, (q31_t)0xb55109f5, (q31_t)0x67f07ec5, (q31_t)0xb54befba, + (q31_t)0x67ecd3e5, (q31_t)0xb546d5ac, + (q31_t)0x67e928c5, (q31_t)0xb541bbcd, (q31_t)0x67e57d64, (q31_t)0xb53ca21c, (q31_t)0x67e1d1c4, (q31_t)0xb5378899, + (q31_t)0x67de25e3, (q31_t)0xb5326f45, + (q31_t)0x67da79c3, (q31_t)0xb52d561e, (q31_t)0x67d6cd62, (q31_t)0xb5283d26, (q31_t)0x67d320c1, (q31_t)0xb523245b, + (q31_t)0x67cf73e1, (q31_t)0xb51e0bbf, + (q31_t)0x67cbc6c0, (q31_t)0xb518f351, (q31_t)0x67c8195f, (q31_t)0xb513db12, (q31_t)0x67c46bbe, (q31_t)0xb50ec300, + (q31_t)0x67c0bddd, (q31_t)0xb509ab1d, + (q31_t)0x67bd0fbd, (q31_t)0xb5049368, (q31_t)0x67b9615c, (q31_t)0xb4ff7be1, (q31_t)0x67b5b2bb, (q31_t)0xb4fa6489, + (q31_t)0x67b203da, (q31_t)0xb4f54d5f, + (q31_t)0x67ae54ba, (q31_t)0xb4f03663, (q31_t)0x67aaa559, (q31_t)0xb4eb1f95, (q31_t)0x67a6f5b8, (q31_t)0xb4e608f6, + (q31_t)0x67a345d8, (q31_t)0xb4e0f285, + (q31_t)0x679f95b7, (q31_t)0xb4dbdc42, (q31_t)0x679be557, (q31_t)0xb4d6c62e, (q31_t)0x679834b6, (q31_t)0xb4d1b048, + (q31_t)0x679483d6, (q31_t)0xb4cc9a90, + (q31_t)0x6790d2b6, (q31_t)0xb4c78507, (q31_t)0x678d2156, (q31_t)0xb4c26fad, (q31_t)0x67896fb6, (q31_t)0xb4bd5a80, + (q31_t)0x6785bdd6, (q31_t)0xb4b84582, + (q31_t)0x67820bb7, (q31_t)0xb4b330b3, (q31_t)0x677e5957, (q31_t)0xb4ae1c12, (q31_t)0x677aa6b8, (q31_t)0xb4a9079f, + (q31_t)0x6776f3d9, (q31_t)0xb4a3f35b, + (q31_t)0x677340ba, (q31_t)0xb49edf45, (q31_t)0x676f8d5b, (q31_t)0xb499cb5e, (q31_t)0x676bd9bd, (q31_t)0xb494b7a6, + (q31_t)0x676825de, (q31_t)0xb48fa41c, + (q31_t)0x676471c0, (q31_t)0xb48a90c0, (q31_t)0x6760bd62, (q31_t)0xb4857d93, (q31_t)0x675d08c4, (q31_t)0xb4806a95, + (q31_t)0x675953e7, (q31_t)0xb47b57c5, + (q31_t)0x67559eca, (q31_t)0xb4764523, (q31_t)0x6751e96d, (q31_t)0xb47132b1, (q31_t)0x674e33d0, (q31_t)0xb46c206d, + (q31_t)0x674a7df4, (q31_t)0xb4670e57, + (q31_t)0x6746c7d8, (q31_t)0xb461fc70, (q31_t)0x6743117c, (q31_t)0xb45ceab8, (q31_t)0x673f5ae0, (q31_t)0xb457d92f, + (q31_t)0x673ba405, (q31_t)0xb452c7d4, + (q31_t)0x6737ecea, (q31_t)0xb44db6a8, (q31_t)0x67343590, (q31_t)0xb448a5aa, (q31_t)0x67307df5, (q31_t)0xb44394db, + (q31_t)0x672cc61c, (q31_t)0xb43e843b, + (q31_t)0x67290e02, (q31_t)0xb43973ca, (q31_t)0x672555a9, (q31_t)0xb4346387, (q31_t)0x67219d10, (q31_t)0xb42f5373, + (q31_t)0x671de438, (q31_t)0xb42a438e, + (q31_t)0x671a2b20, (q31_t)0xb42533d8, (q31_t)0x671671c8, (q31_t)0xb4202451, (q31_t)0x6712b831, (q31_t)0xb41b14f8, + (q31_t)0x670efe5a, (q31_t)0xb41605ce, + (q31_t)0x670b4444, (q31_t)0xb410f6d3, (q31_t)0x670789ee, (q31_t)0xb40be807, (q31_t)0x6703cf58, (q31_t)0xb406d969, + (q31_t)0x67001483, (q31_t)0xb401cafb, + (q31_t)0x66fc596f, (q31_t)0xb3fcbcbb, (q31_t)0x66f89e1b, (q31_t)0xb3f7aeaa, (q31_t)0x66f4e287, (q31_t)0xb3f2a0c9, + (q31_t)0x66f126b4, (q31_t)0xb3ed9316, + (q31_t)0x66ed6aa1, (q31_t)0xb3e88592, (q31_t)0x66e9ae4f, (q31_t)0xb3e3783d, (q31_t)0x66e5f1be, (q31_t)0xb3de6b17, + (q31_t)0x66e234ed, (q31_t)0xb3d95e1f, + (q31_t)0x66de77dc, (q31_t)0xb3d45157, (q31_t)0x66daba8c, (q31_t)0xb3cf44be, (q31_t)0x66d6fcfd, (q31_t)0xb3ca3854, + (q31_t)0x66d33f2e, (q31_t)0xb3c52c19, + (q31_t)0x66cf8120, (q31_t)0xb3c0200c, (q31_t)0x66cbc2d2, (q31_t)0xb3bb142f, (q31_t)0x66c80445, (q31_t)0xb3b60881, + (q31_t)0x66c44579, (q31_t)0xb3b0fd02, + (q31_t)0x66c0866d, (q31_t)0xb3abf1b2, (q31_t)0x66bcc721, (q31_t)0xb3a6e691, (q31_t)0x66b90797, (q31_t)0xb3a1dba0, + (q31_t)0x66b547cd, (q31_t)0xb39cd0dd, + (q31_t)0x66b187c3, (q31_t)0xb397c649, (q31_t)0x66adc77b, (q31_t)0xb392bbe5, (q31_t)0x66aa06f3, (q31_t)0xb38db1b0, + (q31_t)0x66a6462b, (q31_t)0xb388a7aa, + (q31_t)0x66a28524, (q31_t)0xb3839dd3, (q31_t)0x669ec3de, (q31_t)0xb37e942b, (q31_t)0x669b0259, (q31_t)0xb3798ab2, + (q31_t)0x66974095, (q31_t)0xb3748169, + (q31_t)0x66937e91, (q31_t)0xb36f784f, (q31_t)0x668fbc4e, (q31_t)0xb36a6f64, (q31_t)0x668bf9cb, (q31_t)0xb36566a8, + (q31_t)0x66883709, (q31_t)0xb3605e1c, + (q31_t)0x66847408, (q31_t)0xb35b55bf, (q31_t)0x6680b0c8, (q31_t)0xb3564d91, (q31_t)0x667ced49, (q31_t)0xb3514592, + (q31_t)0x6679298a, (q31_t)0xb34c3dc3, + (q31_t)0x6675658c, (q31_t)0xb3473623, (q31_t)0x6671a14f, (q31_t)0xb3422eb2, (q31_t)0x666ddcd3, (q31_t)0xb33d2771, + (q31_t)0x666a1818, (q31_t)0xb338205f, + (q31_t)0x6666531d, (q31_t)0xb333197c, (q31_t)0x66628de4, (q31_t)0xb32e12c9, (q31_t)0x665ec86b, (q31_t)0xb3290c45, + (q31_t)0x665b02b3, (q31_t)0xb32405f1, + (q31_t)0x66573cbb, (q31_t)0xb31effcc, (q31_t)0x66537685, (q31_t)0xb319f9d6, (q31_t)0x664fb010, (q31_t)0xb314f410, + (q31_t)0x664be95b, (q31_t)0xb30fee79, + (q31_t)0x66482267, (q31_t)0xb30ae912, (q31_t)0x66445b35, (q31_t)0xb305e3da, (q31_t)0x664093c3, (q31_t)0xb300ded2, + (q31_t)0x663ccc12, (q31_t)0xb2fbd9f9, + (q31_t)0x66390422, (q31_t)0xb2f6d550, (q31_t)0x66353bf3, (q31_t)0xb2f1d0d6, (q31_t)0x66317385, (q31_t)0xb2eccc8c, + (q31_t)0x662daad8, (q31_t)0xb2e7c871, + (q31_t)0x6629e1ec, (q31_t)0xb2e2c486, (q31_t)0x662618c1, (q31_t)0xb2ddc0ca, (q31_t)0x66224f56, (q31_t)0xb2d8bd3e, + (q31_t)0x661e85ad, (q31_t)0xb2d3b9e2, + (q31_t)0x661abbc5, (q31_t)0xb2ceb6b5, (q31_t)0x6616f19e, (q31_t)0xb2c9b3b8, (q31_t)0x66132738, (q31_t)0xb2c4b0ea, + (q31_t)0x660f5c93, (q31_t)0xb2bfae4c, + (q31_t)0x660b91af, (q31_t)0xb2baabde, (q31_t)0x6607c68c, (q31_t)0xb2b5a99f, (q31_t)0x6603fb2a, (q31_t)0xb2b0a790, + (q31_t)0x66002f89, (q31_t)0xb2aba5b1, + (q31_t)0x65fc63a9, (q31_t)0xb2a6a402, (q31_t)0x65f8978b, (q31_t)0xb2a1a282, (q31_t)0x65f4cb2d, (q31_t)0xb29ca132, + (q31_t)0x65f0fe91, (q31_t)0xb297a011, + (q31_t)0x65ed31b5, (q31_t)0xb2929f21, (q31_t)0x65e9649b, (q31_t)0xb28d9e60, (q31_t)0x65e59742, (q31_t)0xb2889dcf, + (q31_t)0x65e1c9aa, (q31_t)0xb2839d6d, + (q31_t)0x65ddfbd3, (q31_t)0xb27e9d3c, (q31_t)0x65da2dbd, (q31_t)0xb2799d3a, (q31_t)0x65d65f69, (q31_t)0xb2749d68, + (q31_t)0x65d290d6, (q31_t)0xb26f9dc6, + (q31_t)0x65cec204, (q31_t)0xb26a9e54, (q31_t)0x65caf2f3, (q31_t)0xb2659f12, (q31_t)0x65c723a3, (q31_t)0xb2609fff, + (q31_t)0x65c35415, (q31_t)0xb25ba11d, + (q31_t)0x65bf8447, (q31_t)0xb256a26a, (q31_t)0x65bbb43b, (q31_t)0xb251a3e7, (q31_t)0x65b7e3f1, (q31_t)0xb24ca594, + (q31_t)0x65b41367, (q31_t)0xb247a771, + (q31_t)0x65b0429f, (q31_t)0xb242a97e, (q31_t)0x65ac7198, (q31_t)0xb23dabbb, (q31_t)0x65a8a052, (q31_t)0xb238ae28, + (q31_t)0x65a4cece, (q31_t)0xb233b0c5, + (q31_t)0x65a0fd0b, (q31_t)0xb22eb392, (q31_t)0x659d2b09, (q31_t)0xb229b68f, (q31_t)0x659958c9, (q31_t)0xb224b9bc, + (q31_t)0x6595864a, (q31_t)0xb21fbd19, + (q31_t)0x6591b38c, (q31_t)0xb21ac0a6, (q31_t)0x658de08f, (q31_t)0xb215c463, (q31_t)0x658a0d54, (q31_t)0xb210c850, + (q31_t)0x658639db, (q31_t)0xb20bcc6d, + (q31_t)0x65826622, (q31_t)0xb206d0ba, (q31_t)0x657e922b, (q31_t)0xb201d537, (q31_t)0x657abdf6, (q31_t)0xb1fcd9e5, + (q31_t)0x6576e982, (q31_t)0xb1f7dec2, + (q31_t)0x657314cf, (q31_t)0xb1f2e3d0, (q31_t)0x656f3fde, (q31_t)0xb1ede90e, (q31_t)0x656b6aae, (q31_t)0xb1e8ee7c, + (q31_t)0x6567953f, (q31_t)0xb1e3f41a, + (q31_t)0x6563bf92, (q31_t)0xb1def9e9, (q31_t)0x655fe9a7, (q31_t)0xb1d9ffe7, (q31_t)0x655c137d, (q31_t)0xb1d50616, + (q31_t)0x65583d14, (q31_t)0xb1d00c75, + (q31_t)0x6554666d, (q31_t)0xb1cb1304, (q31_t)0x65508f87, (q31_t)0xb1c619c3, (q31_t)0x654cb863, (q31_t)0xb1c120b3, + (q31_t)0x6548e101, (q31_t)0xb1bc27d3, + (q31_t)0x6545095f, (q31_t)0xb1b72f23, (q31_t)0x65413180, (q31_t)0xb1b236a4, (q31_t)0x653d5962, (q31_t)0xb1ad3e55, + (q31_t)0x65398105, (q31_t)0xb1a84636, + (q31_t)0x6535a86b, (q31_t)0xb1a34e47, (q31_t)0x6531cf91, (q31_t)0xb19e5689, (q31_t)0x652df679, (q31_t)0xb1995efb, + (q31_t)0x652a1d23, (q31_t)0xb194679e, + (q31_t)0x6526438f, (q31_t)0xb18f7071, (q31_t)0x652269bc, (q31_t)0xb18a7974, (q31_t)0x651e8faa, (q31_t)0xb18582a8, + (q31_t)0x651ab55b, (q31_t)0xb1808c0c, + (q31_t)0x6516dacd, (q31_t)0xb17b95a0, (q31_t)0x65130000, (q31_t)0xb1769f65, (q31_t)0x650f24f5, (q31_t)0xb171a95b, + (q31_t)0x650b49ac, (q31_t)0xb16cb380, + (q31_t)0x65076e25, (q31_t)0xb167bdd7, (q31_t)0x6503925f, (q31_t)0xb162c85d, (q31_t)0x64ffb65b, (q31_t)0xb15dd315, + (q31_t)0x64fbda18, (q31_t)0xb158ddfd, + (q31_t)0x64f7fd98, (q31_t)0xb153e915, (q31_t)0x64f420d9, (q31_t)0xb14ef45e, (q31_t)0x64f043dc, (q31_t)0xb149ffd7, + (q31_t)0x64ec66a0, (q31_t)0xb1450b81, + (q31_t)0x64e88926, (q31_t)0xb140175b, (q31_t)0x64e4ab6e, (q31_t)0xb13b2367, (q31_t)0x64e0cd78, (q31_t)0xb1362fa2, + (q31_t)0x64dcef44, (q31_t)0xb1313c0e, + (q31_t)0x64d910d1, (q31_t)0xb12c48ab, (q31_t)0x64d53220, (q31_t)0xb1275579, (q31_t)0x64d15331, (q31_t)0xb1226277, + (q31_t)0x64cd7404, (q31_t)0xb11d6fa6, + (q31_t)0x64c99498, (q31_t)0xb1187d05, (q31_t)0x64c5b4ef, (q31_t)0xb1138a95, (q31_t)0x64c1d507, (q31_t)0xb10e9856, + (q31_t)0x64bdf4e1, (q31_t)0xb109a648, + (q31_t)0x64ba147d, (q31_t)0xb104b46a, (q31_t)0x64b633da, (q31_t)0xb0ffc2bd, (q31_t)0x64b252fa, (q31_t)0xb0fad140, + (q31_t)0x64ae71dc, (q31_t)0xb0f5dff5, + (q31_t)0x64aa907f, (q31_t)0xb0f0eeda, (q31_t)0x64a6aee4, (q31_t)0xb0ebfdf0, (q31_t)0x64a2cd0c, (q31_t)0xb0e70d37, + (q31_t)0x649eeaf5, (q31_t)0xb0e21cae, + (q31_t)0x649b08a0, (q31_t)0xb0dd2c56, (q31_t)0x6497260d, (q31_t)0xb0d83c2f, (q31_t)0x6493433c, (q31_t)0xb0d34c39, + (q31_t)0x648f602d, (q31_t)0xb0ce5c74, + (q31_t)0x648b7ce0, (q31_t)0xb0c96ce0, (q31_t)0x64879955, (q31_t)0xb0c47d7c, (q31_t)0x6483b58c, (q31_t)0xb0bf8e4a, + (q31_t)0x647fd185, (q31_t)0xb0ba9f48, + (q31_t)0x647bed3f, (q31_t)0xb0b5b077, (q31_t)0x647808bc, (q31_t)0xb0b0c1d7, (q31_t)0x647423fb, (q31_t)0xb0abd368, + (q31_t)0x64703efc, (q31_t)0xb0a6e52a, + (q31_t)0x646c59bf, (q31_t)0xb0a1f71d, (q31_t)0x64687444, (q31_t)0xb09d0941, (q31_t)0x64648e8c, (q31_t)0xb0981b96, + (q31_t)0x6460a895, (q31_t)0xb0932e1b, + (q31_t)0x645cc260, (q31_t)0xb08e40d2, (q31_t)0x6458dbed, (q31_t)0xb08953ba, (q31_t)0x6454f53d, (q31_t)0xb08466d3, + (q31_t)0x64510e4e, (q31_t)0xb07f7a1c, + (q31_t)0x644d2722, (q31_t)0xb07a8d97, (q31_t)0x64493fb8, (q31_t)0xb075a143, (q31_t)0x64455810, (q31_t)0xb070b520, + (q31_t)0x6441702a, (q31_t)0xb06bc92e, + (q31_t)0x643d8806, (q31_t)0xb066dd6d, (q31_t)0x64399fa5, (q31_t)0xb061f1de, (q31_t)0x6435b706, (q31_t)0xb05d067f, + (q31_t)0x6431ce28, (q31_t)0xb0581b51, + (q31_t)0x642de50d, (q31_t)0xb0533055, (q31_t)0x6429fbb5, (q31_t)0xb04e458a, (q31_t)0x6426121e, (q31_t)0xb0495af0, + (q31_t)0x6422284a, (q31_t)0xb0447087, + (q31_t)0x641e3e38, (q31_t)0xb03f864f, (q31_t)0x641a53e8, (q31_t)0xb03a9c49, (q31_t)0x6416695a, (q31_t)0xb035b273, + (q31_t)0x64127e8f, (q31_t)0xb030c8cf, + (q31_t)0x640e9386, (q31_t)0xb02bdf5c, (q31_t)0x640aa83f, (q31_t)0xb026f61b, (q31_t)0x6406bcba, (q31_t)0xb0220d0a, + (q31_t)0x6402d0f8, (q31_t)0xb01d242b, + (q31_t)0x63fee4f8, (q31_t)0xb0183b7d, (q31_t)0x63faf8bb, (q31_t)0xb0135301, (q31_t)0x63f70c3f, (q31_t)0xb00e6ab5, + (q31_t)0x63f31f86, (q31_t)0xb009829c, + (q31_t)0x63ef3290, (q31_t)0xb0049ab3, (q31_t)0x63eb455c, (q31_t)0xafffb2fc, (q31_t)0x63e757ea, (q31_t)0xaffacb76, + (q31_t)0x63e36a3a, (q31_t)0xaff5e421, + (q31_t)0x63df7c4d, (q31_t)0xaff0fcfe, (q31_t)0x63db8e22, (q31_t)0xafec160c, (q31_t)0x63d79fba, (q31_t)0xafe72f4c, + (q31_t)0x63d3b114, (q31_t)0xafe248bd, + (q31_t)0x63cfc231, (q31_t)0xafdd625f, (q31_t)0x63cbd310, (q31_t)0xafd87c33, (q31_t)0x63c7e3b1, (q31_t)0xafd39638, + (q31_t)0x63c3f415, (q31_t)0xafceb06f, + (q31_t)0x63c0043b, (q31_t)0xafc9cad7, (q31_t)0x63bc1424, (q31_t)0xafc4e571, (q31_t)0x63b823cf, (q31_t)0xafc0003c, + (q31_t)0x63b4333d, (q31_t)0xafbb1b39, + (q31_t)0x63b0426d, (q31_t)0xafb63667, (q31_t)0x63ac5160, (q31_t)0xafb151c7, (q31_t)0x63a86015, (q31_t)0xafac6d58, + (q31_t)0x63a46e8d, (q31_t)0xafa7891b, + (q31_t)0x63a07cc7, (q31_t)0xafa2a50f, (q31_t)0x639c8ac4, (q31_t)0xaf9dc135, (q31_t)0x63989884, (q31_t)0xaf98dd8d, + (q31_t)0x6394a606, (q31_t)0xaf93fa16, + (q31_t)0x6390b34a, (q31_t)0xaf8f16d1, (q31_t)0x638cc051, (q31_t)0xaf8a33bd, (q31_t)0x6388cd1b, (q31_t)0xaf8550db, + (q31_t)0x6384d9a7, (q31_t)0xaf806e2b, + (q31_t)0x6380e5f6, (q31_t)0xaf7b8bac, (q31_t)0x637cf208, (q31_t)0xaf76a95f, (q31_t)0x6378fddc, (q31_t)0xaf71c743, + (q31_t)0x63750973, (q31_t)0xaf6ce55a, + (q31_t)0x637114cc, (q31_t)0xaf6803a2, (q31_t)0x636d1fe9, (q31_t)0xaf63221c, (q31_t)0x63692ac7, (q31_t)0xaf5e40c7, + (q31_t)0x63653569, (q31_t)0xaf595fa4, + (q31_t)0x63613fcd, (q31_t)0xaf547eb3, (q31_t)0x635d49f4, (q31_t)0xaf4f9df4, (q31_t)0x635953dd, (q31_t)0xaf4abd66, + (q31_t)0x63555d8a, (q31_t)0xaf45dd0b, + (q31_t)0x635166f9, (q31_t)0xaf40fce1, (q31_t)0x634d702b, (q31_t)0xaf3c1ce9, (q31_t)0x6349791f, (q31_t)0xaf373d22, + (q31_t)0x634581d6, (q31_t)0xaf325d8e, + (q31_t)0x63418a50, (q31_t)0xaf2d7e2b, (q31_t)0x633d928d, (q31_t)0xaf289efa, (q31_t)0x63399a8d, (q31_t)0xaf23bffb, + (q31_t)0x6335a24f, (q31_t)0xaf1ee12e, + (q31_t)0x6331a9d4, (q31_t)0xaf1a0293, (q31_t)0x632db11c, (q31_t)0xaf15242a, (q31_t)0x6329b827, (q31_t)0xaf1045f3, + (q31_t)0x6325bef5, (q31_t)0xaf0b67ed, + (q31_t)0x6321c585, (q31_t)0xaf068a1a, (q31_t)0x631dcbd9, (q31_t)0xaf01ac78, (q31_t)0x6319d1ef, (q31_t)0xaefccf09, + (q31_t)0x6315d7c8, (q31_t)0xaef7f1cb, + (q31_t)0x6311dd64, (q31_t)0xaef314c0, (q31_t)0x630de2c3, (q31_t)0xaeee37e6, (q31_t)0x6309e7e4, (q31_t)0xaee95b3f, + (q31_t)0x6305ecc9, (q31_t)0xaee47ec9, + (q31_t)0x6301f171, (q31_t)0xaedfa285, (q31_t)0x62fdf5db, (q31_t)0xaedac674, (q31_t)0x62f9fa09, (q31_t)0xaed5ea95, + (q31_t)0x62f5fdf9, (q31_t)0xaed10ee7, + (q31_t)0x62f201ac, (q31_t)0xaecc336c, (q31_t)0x62ee0523, (q31_t)0xaec75823, (q31_t)0x62ea085c, (q31_t)0xaec27d0c, + (q31_t)0x62e60b58, (q31_t)0xaebda227, + (q31_t)0x62e20e17, (q31_t)0xaeb8c774, (q31_t)0x62de109a, (q31_t)0xaeb3ecf3, (q31_t)0x62da12df, (q31_t)0xaeaf12a4, + (q31_t)0x62d614e7, (q31_t)0xaeaa3888, + (q31_t)0x62d216b3, (q31_t)0xaea55e9e, (q31_t)0x62ce1841, (q31_t)0xaea084e6, (q31_t)0x62ca1992, (q31_t)0xae9bab60, + (q31_t)0x62c61aa7, (q31_t)0xae96d20c, + (q31_t)0x62c21b7e, (q31_t)0xae91f8eb, (q31_t)0x62be1c19, (q31_t)0xae8d1ffb, (q31_t)0x62ba1c77, (q31_t)0xae88473e, + (q31_t)0x62b61c98, (q31_t)0xae836eb4, + (q31_t)0x62b21c7b, (q31_t)0xae7e965b, (q31_t)0x62ae1c23, (q31_t)0xae79be35, (q31_t)0x62aa1b8d, (q31_t)0xae74e641, + (q31_t)0x62a61aba, (q31_t)0xae700e80, + (q31_t)0x62a219aa, (q31_t)0xae6b36f0, (q31_t)0x629e185e, (q31_t)0xae665f93, (q31_t)0x629a16d5, (q31_t)0xae618869, + (q31_t)0x6296150f, (q31_t)0xae5cb171, + (q31_t)0x6292130c, (q31_t)0xae57daab, (q31_t)0x628e10cc, (q31_t)0xae530417, (q31_t)0x628a0e50, (q31_t)0xae4e2db6, + (q31_t)0x62860b97, (q31_t)0xae495787, + (q31_t)0x628208a1, (q31_t)0xae44818b, (q31_t)0x627e056e, (q31_t)0xae3fabc1, (q31_t)0x627a01fe, (q31_t)0xae3ad629, + (q31_t)0x6275fe52, (q31_t)0xae3600c4, + (q31_t)0x6271fa69, (q31_t)0xae312b92, (q31_t)0x626df643, (q31_t)0xae2c5691, (q31_t)0x6269f1e1, (q31_t)0xae2781c4, + (q31_t)0x6265ed42, (q31_t)0xae22ad29, + (q31_t)0x6261e866, (q31_t)0xae1dd8c0, (q31_t)0x625de34e, (q31_t)0xae19048a, (q31_t)0x6259ddf8, (q31_t)0xae143086, + (q31_t)0x6255d866, (q31_t)0xae0f5cb5, + (q31_t)0x6251d298, (q31_t)0xae0a8916, (q31_t)0x624dcc8d, (q31_t)0xae05b5aa, (q31_t)0x6249c645, (q31_t)0xae00e271, + (q31_t)0x6245bfc0, (q31_t)0xadfc0f6a, + (q31_t)0x6241b8ff, (q31_t)0xadf73c96, (q31_t)0x623db202, (q31_t)0xadf269f4, (q31_t)0x6239aac7, (q31_t)0xaded9785, + (q31_t)0x6235a351, (q31_t)0xade8c548, + (q31_t)0x62319b9d, (q31_t)0xade3f33e, (q31_t)0x622d93ad, (q31_t)0xaddf2167, (q31_t)0x62298b81, (q31_t)0xadda4fc3, + (q31_t)0x62258317, (q31_t)0xadd57e51, + (q31_t)0x62217a72, (q31_t)0xadd0ad12, (q31_t)0x621d7190, (q31_t)0xadcbdc05, (q31_t)0x62196871, (q31_t)0xadc70b2c, + (q31_t)0x62155f16, (q31_t)0xadc23a85, + (q31_t)0x6211557e, (q31_t)0xadbd6a10, (q31_t)0x620d4baa, (q31_t)0xadb899cf, (q31_t)0x62094199, (q31_t)0xadb3c9c0, + (q31_t)0x6205374c, (q31_t)0xadaef9e4, + (q31_t)0x62012cc2, (q31_t)0xadaa2a3b, (q31_t)0x61fd21fc, (q31_t)0xada55ac4, (q31_t)0x61f916f9, (q31_t)0xada08b80, + (q31_t)0x61f50bba, (q31_t)0xad9bbc70, + (q31_t)0x61f1003f, (q31_t)0xad96ed92, (q31_t)0x61ecf487, (q31_t)0xad921ee6, (q31_t)0x61e8e893, (q31_t)0xad8d506e, + (q31_t)0x61e4dc62, (q31_t)0xad888229, + (q31_t)0x61e0cff5, (q31_t)0xad83b416, (q31_t)0x61dcc34c, (q31_t)0xad7ee636, (q31_t)0x61d8b666, (q31_t)0xad7a1889, + (q31_t)0x61d4a944, (q31_t)0xad754b0f, + (q31_t)0x61d09be5, (q31_t)0xad707dc8, (q31_t)0x61cc8e4b, (q31_t)0xad6bb0b4, (q31_t)0x61c88074, (q31_t)0xad66e3d3, + (q31_t)0x61c47260, (q31_t)0xad621725, + (q31_t)0x61c06410, (q31_t)0xad5d4aaa, (q31_t)0x61bc5584, (q31_t)0xad587e61, (q31_t)0x61b846bc, (q31_t)0xad53b24c, + (q31_t)0x61b437b7, (q31_t)0xad4ee66a, + (q31_t)0x61b02876, (q31_t)0xad4a1aba, (q31_t)0x61ac18f9, (q31_t)0xad454f3e, (q31_t)0x61a80940, (q31_t)0xad4083f5, + (q31_t)0x61a3f94a, (q31_t)0xad3bb8df, + (q31_t)0x619fe918, (q31_t)0xad36edfc, (q31_t)0x619bd8aa, (q31_t)0xad32234b, (q31_t)0x6197c800, (q31_t)0xad2d58ce, + (q31_t)0x6193b719, (q31_t)0xad288e85, + (q31_t)0x618fa5f7, (q31_t)0xad23c46e, (q31_t)0x618b9498, (q31_t)0xad1efa8a, (q31_t)0x618782fd, (q31_t)0xad1a30d9, + (q31_t)0x61837126, (q31_t)0xad15675c, + (q31_t)0x617f5f12, (q31_t)0xad109e12, (q31_t)0x617b4cc3, (q31_t)0xad0bd4fb, (q31_t)0x61773a37, (q31_t)0xad070c17, + (q31_t)0x61732770, (q31_t)0xad024366, + (q31_t)0x616f146c, (q31_t)0xacfd7ae8, (q31_t)0x616b012c, (q31_t)0xacf8b29e, (q31_t)0x6166edb0, (q31_t)0xacf3ea87, + (q31_t)0x6162d9f8, (q31_t)0xacef22a3, + (q31_t)0x615ec603, (q31_t)0xacea5af2, (q31_t)0x615ab1d3, (q31_t)0xace59375, (q31_t)0x61569d67, (q31_t)0xace0cc2b, + (q31_t)0x615288be, (q31_t)0xacdc0514, + (q31_t)0x614e73da, (q31_t)0xacd73e30, (q31_t)0x614a5eba, (q31_t)0xacd27780, (q31_t)0x6146495d, (q31_t)0xaccdb103, + (q31_t)0x614233c5, (q31_t)0xacc8eab9, + (q31_t)0x613e1df0, (q31_t)0xacc424a3, (q31_t)0x613a07e0, (q31_t)0xacbf5ec0, (q31_t)0x6135f193, (q31_t)0xacba9910, + (q31_t)0x6131db0b, (q31_t)0xacb5d394, + (q31_t)0x612dc447, (q31_t)0xacb10e4b, (q31_t)0x6129ad46, (q31_t)0xacac4935, (q31_t)0x6125960a, (q31_t)0xaca78453, + (q31_t)0x61217e92, (q31_t)0xaca2bfa4, + (q31_t)0x611d66de, (q31_t)0xac9dfb29, (q31_t)0x61194eee, (q31_t)0xac9936e1, (q31_t)0x611536c2, (q31_t)0xac9472cd, + (q31_t)0x61111e5b, (q31_t)0xac8faeec, + (q31_t)0x610d05b7, (q31_t)0xac8aeb3e, (q31_t)0x6108ecd8, (q31_t)0xac8627c4, (q31_t)0x6104d3bc, (q31_t)0xac81647e, + (q31_t)0x6100ba65, (q31_t)0xac7ca16b, + (q31_t)0x60fca0d2, (q31_t)0xac77de8b, (q31_t)0x60f88703, (q31_t)0xac731bdf, (q31_t)0x60f46cf9, (q31_t)0xac6e5967, + (q31_t)0x60f052b2, (q31_t)0xac699722, + (q31_t)0x60ec3830, (q31_t)0xac64d510, (q31_t)0x60e81d72, (q31_t)0xac601333, (q31_t)0x60e40278, (q31_t)0xac5b5189, + (q31_t)0x60dfe743, (q31_t)0xac569012, + (q31_t)0x60dbcbd1, (q31_t)0xac51cecf, (q31_t)0x60d7b024, (q31_t)0xac4d0dc0, (q31_t)0x60d3943b, (q31_t)0xac484ce4, + (q31_t)0x60cf7817, (q31_t)0xac438c3c, + (q31_t)0x60cb5bb7, (q31_t)0xac3ecbc7, (q31_t)0x60c73f1b, (q31_t)0xac3a0b87, (q31_t)0x60c32243, (q31_t)0xac354b7a, + (q31_t)0x60bf0530, (q31_t)0xac308ba0, + (q31_t)0x60bae7e1, (q31_t)0xac2bcbfa, (q31_t)0x60b6ca56, (q31_t)0xac270c88, (q31_t)0x60b2ac8f, (q31_t)0xac224d4a, + (q31_t)0x60ae8e8d, (q31_t)0xac1d8e40, + (q31_t)0x60aa7050, (q31_t)0xac18cf69, (q31_t)0x60a651d7, (q31_t)0xac1410c6, (q31_t)0x60a23322, (q31_t)0xac0f5256, + (q31_t)0x609e1431, (q31_t)0xac0a941b, + (q31_t)0x6099f505, (q31_t)0xac05d613, (q31_t)0x6095d59d, (q31_t)0xac01183f, (q31_t)0x6091b5fa, (q31_t)0xabfc5a9f, + (q31_t)0x608d961b, (q31_t)0xabf79d33, + (q31_t)0x60897601, (q31_t)0xabf2dffb, (q31_t)0x608555ab, (q31_t)0xabee22f6, (q31_t)0x60813519, (q31_t)0xabe96625, + (q31_t)0x607d144c, (q31_t)0xabe4a988, + (q31_t)0x6078f344, (q31_t)0xabdfed1f, (q31_t)0x6074d200, (q31_t)0xabdb30ea, (q31_t)0x6070b080, (q31_t)0xabd674e9, + (q31_t)0x606c8ec5, (q31_t)0xabd1b91c, + (q31_t)0x60686ccf, (q31_t)0xabccfd83, (q31_t)0x60644a9d, (q31_t)0xabc8421d, (q31_t)0x6060282f, (q31_t)0xabc386ec, + (q31_t)0x605c0587, (q31_t)0xabbecbee, + (q31_t)0x6057e2a2, (q31_t)0xabba1125, (q31_t)0x6053bf82, (q31_t)0xabb5568f, (q31_t)0x604f9c27, (q31_t)0xabb09c2e, + (q31_t)0x604b7891, (q31_t)0xababe200, + (q31_t)0x604754bf, (q31_t)0xaba72807, (q31_t)0x604330b1, (q31_t)0xaba26e41, (q31_t)0x603f0c69, (q31_t)0xab9db4b0, + (q31_t)0x603ae7e5, (q31_t)0xab98fb52, + (q31_t)0x6036c325, (q31_t)0xab944229, (q31_t)0x60329e2a, (q31_t)0xab8f8934, (q31_t)0x602e78f4, (q31_t)0xab8ad073, + (q31_t)0x602a5383, (q31_t)0xab8617e6, + (q31_t)0x60262dd6, (q31_t)0xab815f8d, (q31_t)0x602207ee, (q31_t)0xab7ca768, (q31_t)0x601de1ca, (q31_t)0xab77ef77, + (q31_t)0x6019bb6b, (q31_t)0xab7337bb, + (q31_t)0x601594d1, (q31_t)0xab6e8032, (q31_t)0x60116dfc, (q31_t)0xab69c8de, (q31_t)0x600d46ec, (q31_t)0xab6511be, + (q31_t)0x60091fa0, (q31_t)0xab605ad2, + (q31_t)0x6004f819, (q31_t)0xab5ba41a, (q31_t)0x6000d057, (q31_t)0xab56ed97, (q31_t)0x5ffca859, (q31_t)0xab523748, + (q31_t)0x5ff88021, (q31_t)0xab4d812d, + (q31_t)0x5ff457ad, (q31_t)0xab48cb46, (q31_t)0x5ff02efe, (q31_t)0xab441593, (q31_t)0x5fec0613, (q31_t)0xab3f6015, + (q31_t)0x5fe7dcee, (q31_t)0xab3aaacb, + (q31_t)0x5fe3b38d, (q31_t)0xab35f5b5, (q31_t)0x5fdf89f2, (q31_t)0xab3140d4, (q31_t)0x5fdb601b, (q31_t)0xab2c8c27, + (q31_t)0x5fd73609, (q31_t)0xab27d7ae, + (q31_t)0x5fd30bbc, (q31_t)0xab23236a, (q31_t)0x5fcee133, (q31_t)0xab1e6f5a, (q31_t)0x5fcab670, (q31_t)0xab19bb7e, + (q31_t)0x5fc68b72, (q31_t)0xab1507d7, + (q31_t)0x5fc26038, (q31_t)0xab105464, (q31_t)0x5fbe34c4, (q31_t)0xab0ba125, (q31_t)0x5fba0914, (q31_t)0xab06ee1b, + (q31_t)0x5fb5dd29, (q31_t)0xab023b46, + (q31_t)0x5fb1b104, (q31_t)0xaafd88a4, (q31_t)0x5fad84a3, (q31_t)0xaaf8d637, (q31_t)0x5fa95807, (q31_t)0xaaf423ff, + (q31_t)0x5fa52b31, (q31_t)0xaaef71fb, + (q31_t)0x5fa0fe1f, (q31_t)0xaaeac02c, (q31_t)0x5f9cd0d2, (q31_t)0xaae60e91, (q31_t)0x5f98a34a, (q31_t)0xaae15d2a, + (q31_t)0x5f947588, (q31_t)0xaadcabf8, + (q31_t)0x5f90478a, (q31_t)0xaad7fafb, (q31_t)0x5f8c1951, (q31_t)0xaad34a32, (q31_t)0x5f87eade, (q31_t)0xaace999d, + (q31_t)0x5f83bc2f, (q31_t)0xaac9e93e, + (q31_t)0x5f7f8d46, (q31_t)0xaac53912, (q31_t)0x5f7b5e22, (q31_t)0xaac0891c, (q31_t)0x5f772ec2, (q31_t)0xaabbd959, + (q31_t)0x5f72ff28, (q31_t)0xaab729cc, + (q31_t)0x5f6ecf53, (q31_t)0xaab27a73, (q31_t)0x5f6a9f44, (q31_t)0xaaadcb4f, (q31_t)0x5f666ef9, (q31_t)0xaaa91c5f, + (q31_t)0x5f623e73, (q31_t)0xaaa46da4, + (q31_t)0x5f5e0db3, (q31_t)0xaa9fbf1e, (q31_t)0x5f59dcb8, (q31_t)0xaa9b10cc, (q31_t)0x5f55ab82, (q31_t)0xaa9662af, + (q31_t)0x5f517a11, (q31_t)0xaa91b4c7, + (q31_t)0x5f4d4865, (q31_t)0xaa8d0713, (q31_t)0x5f49167f, (q31_t)0xaa885994, (q31_t)0x5f44e45e, (q31_t)0xaa83ac4a, + (q31_t)0x5f40b202, (q31_t)0xaa7eff34, + (q31_t)0x5f3c7f6b, (q31_t)0xaa7a5253, (q31_t)0x5f384c9a, (q31_t)0xaa75a5a8, (q31_t)0x5f34198e, (q31_t)0xaa70f930, + (q31_t)0x5f2fe647, (q31_t)0xaa6c4cee, + (q31_t)0x5f2bb2c5, (q31_t)0xaa67a0e0, (q31_t)0x5f277f09, (q31_t)0xaa62f507, (q31_t)0x5f234b12, (q31_t)0xaa5e4963, + (q31_t)0x5f1f16e0, (q31_t)0xaa599df4, + (q31_t)0x5f1ae274, (q31_t)0xaa54f2ba, (q31_t)0x5f16adcc, (q31_t)0xaa5047b4, (q31_t)0x5f1278eb, (q31_t)0xaa4b9ce3, + (q31_t)0x5f0e43ce, (q31_t)0xaa46f248, + (q31_t)0x5f0a0e77, (q31_t)0xaa4247e1, (q31_t)0x5f05d8e6, (q31_t)0xaa3d9daf, (q31_t)0x5f01a31a, (q31_t)0xaa38f3b1, + (q31_t)0x5efd6d13, (q31_t)0xaa3449e9, + (q31_t)0x5ef936d1, (q31_t)0xaa2fa056, (q31_t)0x5ef50055, (q31_t)0xaa2af6f7, (q31_t)0x5ef0c99f, (q31_t)0xaa264dce, + (q31_t)0x5eec92ae, (q31_t)0xaa21a4d9, + (q31_t)0x5ee85b82, (q31_t)0xaa1cfc1a, (q31_t)0x5ee4241c, (q31_t)0xaa18538f, (q31_t)0x5edfec7b, (q31_t)0xaa13ab3a, + (q31_t)0x5edbb49f, (q31_t)0xaa0f0319, + (q31_t)0x5ed77c8a, (q31_t)0xaa0a5b2e, (q31_t)0x5ed34439, (q31_t)0xaa05b377, (q31_t)0x5ecf0baf, (q31_t)0xaa010bf6, + (q31_t)0x5ecad2e9, (q31_t)0xa9fc64a9, + (q31_t)0x5ec699e9, (q31_t)0xa9f7bd92, (q31_t)0x5ec260af, (q31_t)0xa9f316b0, (q31_t)0x5ebe273b, (q31_t)0xa9ee7002, + (q31_t)0x5eb9ed8b, (q31_t)0xa9e9c98a, + (q31_t)0x5eb5b3a2, (q31_t)0xa9e52347, (q31_t)0x5eb1797e, (q31_t)0xa9e07d39, (q31_t)0x5ead3f1f, (q31_t)0xa9dbd761, + (q31_t)0x5ea90487, (q31_t)0xa9d731bd, + (q31_t)0x5ea4c9b3, (q31_t)0xa9d28c4e, (q31_t)0x5ea08ea6, (q31_t)0xa9cde715, (q31_t)0x5e9c535e, (q31_t)0xa9c94211, + (q31_t)0x5e9817dc, (q31_t)0xa9c49d42, + (q31_t)0x5e93dc1f, (q31_t)0xa9bff8a8, (q31_t)0x5e8fa028, (q31_t)0xa9bb5444, (q31_t)0x5e8b63f7, (q31_t)0xa9b6b014, + (q31_t)0x5e87278b, (q31_t)0xa9b20c1a, + (q31_t)0x5e82eae5, (q31_t)0xa9ad6855, (q31_t)0x5e7eae05, (q31_t)0xa9a8c4c5, (q31_t)0x5e7a70ea, (q31_t)0xa9a4216b, + (q31_t)0x5e763395, (q31_t)0xa99f7e46, + (q31_t)0x5e71f606, (q31_t)0xa99adb56, (q31_t)0x5e6db83d, (q31_t)0xa996389b, (q31_t)0x5e697a39, (q31_t)0xa9919616, + (q31_t)0x5e653bfc, (q31_t)0xa98cf3c6, + (q31_t)0x5e60fd84, (q31_t)0xa98851ac, (q31_t)0x5e5cbed1, (q31_t)0xa983afc6, (q31_t)0x5e587fe5, (q31_t)0xa97f0e16, + (q31_t)0x5e5440be, (q31_t)0xa97a6c9c, + (q31_t)0x5e50015d, (q31_t)0xa975cb57, (q31_t)0x5e4bc1c2, (q31_t)0xa9712a47, (q31_t)0x5e4781ed, (q31_t)0xa96c896c, + (q31_t)0x5e4341de, (q31_t)0xa967e8c7, + (q31_t)0x5e3f0194, (q31_t)0xa9634858, (q31_t)0x5e3ac110, (q31_t)0xa95ea81d, (q31_t)0x5e368053, (q31_t)0xa95a0819, + (q31_t)0x5e323f5b, (q31_t)0xa9556849, + (q31_t)0x5e2dfe29, (q31_t)0xa950c8b0, (q31_t)0x5e29bcbd, (q31_t)0xa94c294b, (q31_t)0x5e257b17, (q31_t)0xa9478a1c, + (q31_t)0x5e213936, (q31_t)0xa942eb23, + (q31_t)0x5e1cf71c, (q31_t)0xa93e4c5f, (q31_t)0x5e18b4c8, (q31_t)0xa939add1, (q31_t)0x5e147239, (q31_t)0xa9350f78, + (q31_t)0x5e102f71, (q31_t)0xa9307155, + (q31_t)0x5e0bec6e, (q31_t)0xa92bd367, (q31_t)0x5e07a932, (q31_t)0xa92735af, (q31_t)0x5e0365bb, (q31_t)0xa922982c, + (q31_t)0x5dff220b, (q31_t)0xa91dfadf, + (q31_t)0x5dfade20, (q31_t)0xa9195dc7, (q31_t)0x5df699fc, (q31_t)0xa914c0e6, (q31_t)0x5df2559e, (q31_t)0xa9102439, + (q31_t)0x5dee1105, (q31_t)0xa90b87c3, + (q31_t)0x5de9cc33, (q31_t)0xa906eb82, (q31_t)0x5de58727, (q31_t)0xa9024f76, (q31_t)0x5de141e1, (q31_t)0xa8fdb3a1, + (q31_t)0x5ddcfc61, (q31_t)0xa8f91801, + (q31_t)0x5dd8b6a7, (q31_t)0xa8f47c97, (q31_t)0x5dd470b3, (q31_t)0xa8efe162, (q31_t)0x5dd02a85, (q31_t)0xa8eb4663, + (q31_t)0x5dcbe41d, (q31_t)0xa8e6ab9a, + (q31_t)0x5dc79d7c, (q31_t)0xa8e21106, (q31_t)0x5dc356a1, (q31_t)0xa8dd76a9, (q31_t)0x5dbf0f8c, (q31_t)0xa8d8dc81, + (q31_t)0x5dbac83d, (q31_t)0xa8d4428f, + (q31_t)0x5db680b4, (q31_t)0xa8cfa8d2, (q31_t)0x5db238f1, (q31_t)0xa8cb0f4b, (q31_t)0x5dadf0f5, (q31_t)0xa8c675fb, + (q31_t)0x5da9a8bf, (q31_t)0xa8c1dce0, + (q31_t)0x5da5604f, (q31_t)0xa8bd43fa, (q31_t)0x5da117a5, (q31_t)0xa8b8ab4b, (q31_t)0x5d9ccec2, (q31_t)0xa8b412d1, + (q31_t)0x5d9885a5, (q31_t)0xa8af7a8e, + (q31_t)0x5d943c4e, (q31_t)0xa8aae280, (q31_t)0x5d8ff2bd, (q31_t)0xa8a64aa8, (q31_t)0x5d8ba8f3, (q31_t)0xa8a1b306, + (q31_t)0x5d875eef, (q31_t)0xa89d1b99, + (q31_t)0x5d8314b1, (q31_t)0xa8988463, (q31_t)0x5d7eca39, (q31_t)0xa893ed63, (q31_t)0x5d7a7f88, (q31_t)0xa88f5698, + (q31_t)0x5d76349d, (q31_t)0xa88ac004, + (q31_t)0x5d71e979, (q31_t)0xa88629a5, (q31_t)0x5d6d9e1b, (q31_t)0xa881937c, (q31_t)0x5d695283, (q31_t)0xa87cfd8a, + (q31_t)0x5d6506b2, (q31_t)0xa87867cd, + (q31_t)0x5d60baa7, (q31_t)0xa873d246, (q31_t)0x5d5c6e62, (q31_t)0xa86f3cf6, (q31_t)0x5d5821e4, (q31_t)0xa86aa7db, + (q31_t)0x5d53d52d, (q31_t)0xa86612f6, + (q31_t)0x5d4f883b, (q31_t)0xa8617e48, (q31_t)0x5d4b3b10, (q31_t)0xa85ce9cf, (q31_t)0x5d46edac, (q31_t)0xa858558d, + (q31_t)0x5d42a00e, (q31_t)0xa853c180, + (q31_t)0x5d3e5237, (q31_t)0xa84f2daa, (q31_t)0x5d3a0426, (q31_t)0xa84a9a0a, (q31_t)0x5d35b5db, (q31_t)0xa84606a0, + (q31_t)0x5d316757, (q31_t)0xa841736c, + (q31_t)0x5d2d189a, (q31_t)0xa83ce06e, (q31_t)0x5d28c9a3, (q31_t)0xa8384da6, (q31_t)0x5d247a72, (q31_t)0xa833bb14, + (q31_t)0x5d202b09, (q31_t)0xa82f28b9, + (q31_t)0x5d1bdb65, (q31_t)0xa82a9693, (q31_t)0x5d178b89, (q31_t)0xa82604a4, (q31_t)0x5d133b72, (q31_t)0xa82172eb, + (q31_t)0x5d0eeb23, (q31_t)0xa81ce169, + (q31_t)0x5d0a9a9a, (q31_t)0xa818501c, (q31_t)0x5d0649d7, (q31_t)0xa813bf06, (q31_t)0x5d01f8dc, (q31_t)0xa80f2e26, + (q31_t)0x5cfda7a7, (q31_t)0xa80a9d7c, + (q31_t)0x5cf95638, (q31_t)0xa8060d08, (q31_t)0x5cf50490, (q31_t)0xa8017ccb, (q31_t)0x5cf0b2af, (q31_t)0xa7fcecc4, + (q31_t)0x5cec6095, (q31_t)0xa7f85cf3, + (q31_t)0x5ce80e41, (q31_t)0xa7f3cd59, (q31_t)0x5ce3bbb4, (q31_t)0xa7ef3df5, (q31_t)0x5cdf68ed, (q31_t)0xa7eaaec7, + (q31_t)0x5cdb15ed, (q31_t)0xa7e61fd0, + (q31_t)0x5cd6c2b5, (q31_t)0xa7e1910f, (q31_t)0x5cd26f42, (q31_t)0xa7dd0284, (q31_t)0x5cce1b97, (q31_t)0xa7d8742f, + (q31_t)0x5cc9c7b2, (q31_t)0xa7d3e611, + (q31_t)0x5cc57394, (q31_t)0xa7cf582a, (q31_t)0x5cc11f3d, (q31_t)0xa7caca79, (q31_t)0x5cbccaac, (q31_t)0xa7c63cfe, + (q31_t)0x5cb875e3, (q31_t)0xa7c1afb9, + (q31_t)0x5cb420e0, (q31_t)0xa7bd22ac, (q31_t)0x5cafcba4, (q31_t)0xa7b895d4, (q31_t)0x5cab762f, (q31_t)0xa7b40933, + (q31_t)0x5ca72080, (q31_t)0xa7af7cc8, + (q31_t)0x5ca2ca99, (q31_t)0xa7aaf094, (q31_t)0x5c9e7478, (q31_t)0xa7a66497, (q31_t)0x5c9a1e1e, (q31_t)0xa7a1d8d0, + (q31_t)0x5c95c78b, (q31_t)0xa79d4d3f, + (q31_t)0x5c9170bf, (q31_t)0xa798c1e5, (q31_t)0x5c8d19ba, (q31_t)0xa79436c1, (q31_t)0x5c88c27c, (q31_t)0xa78fabd4, + (q31_t)0x5c846b05, (q31_t)0xa78b211e, + (q31_t)0x5c801354, (q31_t)0xa786969e, (q31_t)0x5c7bbb6b, (q31_t)0xa7820c55, (q31_t)0x5c776348, (q31_t)0xa77d8242, + (q31_t)0x5c730aed, (q31_t)0xa778f866, + (q31_t)0x5c6eb258, (q31_t)0xa7746ec0, (q31_t)0x5c6a598b, (q31_t)0xa76fe551, (q31_t)0x5c660084, (q31_t)0xa76b5c19, + (q31_t)0x5c61a745, (q31_t)0xa766d317, + (q31_t)0x5c5d4dcc, (q31_t)0xa7624a4d, (q31_t)0x5c58f41a, (q31_t)0xa75dc1b8, (q31_t)0x5c549a30, (q31_t)0xa759395b, + (q31_t)0x5c50400d, (q31_t)0xa754b134, + (q31_t)0x5c4be5b0, (q31_t)0xa7502943, (q31_t)0x5c478b1b, (q31_t)0xa74ba18a, (q31_t)0x5c43304d, (q31_t)0xa7471a07, + (q31_t)0x5c3ed545, (q31_t)0xa74292bb, + (q31_t)0x5c3a7a05, (q31_t)0xa73e0ba5, (q31_t)0x5c361e8c, (q31_t)0xa73984c7, (q31_t)0x5c31c2db, (q31_t)0xa734fe1f, + (q31_t)0x5c2d66f0, (q31_t)0xa73077ae, + (q31_t)0x5c290acc, (q31_t)0xa72bf174, (q31_t)0x5c24ae70, (q31_t)0xa7276b70, (q31_t)0x5c2051db, (q31_t)0xa722e5a3, + (q31_t)0x5c1bf50d, (q31_t)0xa71e600d, + (q31_t)0x5c179806, (q31_t)0xa719daae, (q31_t)0x5c133ac6, (q31_t)0xa7155586, (q31_t)0x5c0edd4e, (q31_t)0xa710d095, + (q31_t)0x5c0a7f9c, (q31_t)0xa70c4bda, + (q31_t)0x5c0621b2, (q31_t)0xa707c757, (q31_t)0x5c01c38f, (q31_t)0xa703430a, (q31_t)0x5bfd6534, (q31_t)0xa6febef4, + (q31_t)0x5bf906a0, (q31_t)0xa6fa3b15, + (q31_t)0x5bf4a7d2, (q31_t)0xa6f5b76d, (q31_t)0x5bf048cd, (q31_t)0xa6f133fc, (q31_t)0x5bebe98e, (q31_t)0xa6ecb0c2, + (q31_t)0x5be78a17, (q31_t)0xa6e82dbe, + (q31_t)0x5be32a67, (q31_t)0xa6e3aaf2, (q31_t)0x5bdeca7f, (q31_t)0xa6df285d, (q31_t)0x5bda6a5d, (q31_t)0xa6daa5fe, + (q31_t)0x5bd60a03, (q31_t)0xa6d623d7, + (q31_t)0x5bd1a971, (q31_t)0xa6d1a1e7, (q31_t)0x5bcd48a6, (q31_t)0xa6cd202d, (q31_t)0x5bc8e7a2, (q31_t)0xa6c89eab, + (q31_t)0x5bc48666, (q31_t)0xa6c41d60, + (q31_t)0x5bc024f0, (q31_t)0xa6bf9c4b, (q31_t)0x5bbbc343, (q31_t)0xa6bb1b6e, (q31_t)0x5bb7615d, (q31_t)0xa6b69ac8, + (q31_t)0x5bb2ff3e, (q31_t)0xa6b21a59, + (q31_t)0x5bae9ce7, (q31_t)0xa6ad9a21, (q31_t)0x5baa3a57, (q31_t)0xa6a91a20, (q31_t)0x5ba5d78e, (q31_t)0xa6a49a56, + (q31_t)0x5ba1748d, (q31_t)0xa6a01ac4, + (q31_t)0x5b9d1154, (q31_t)0xa69b9b68, (q31_t)0x5b98ade2, (q31_t)0xa6971c44, (q31_t)0x5b944a37, (q31_t)0xa6929d57, + (q31_t)0x5b8fe654, (q31_t)0xa68e1ea1, + (q31_t)0x5b8b8239, (q31_t)0xa689a022, (q31_t)0x5b871de5, (q31_t)0xa68521da, (q31_t)0x5b82b958, (q31_t)0xa680a3ca, + (q31_t)0x5b7e5493, (q31_t)0xa67c25f0, + (q31_t)0x5b79ef96, (q31_t)0xa677a84e, (q31_t)0x5b758a60, (q31_t)0xa6732ae3, (q31_t)0x5b7124f2, (q31_t)0xa66eadb0, + (q31_t)0x5b6cbf4c, (q31_t)0xa66a30b3, + (q31_t)0x5b68596d, (q31_t)0xa665b3ee, (q31_t)0x5b63f355, (q31_t)0xa6613760, (q31_t)0x5b5f8d06, (q31_t)0xa65cbb0a, + (q31_t)0x5b5b267e, (q31_t)0xa6583eeb, + (q31_t)0x5b56bfbd, (q31_t)0xa653c303, (q31_t)0x5b5258c4, (q31_t)0xa64f4752, (q31_t)0x5b4df193, (q31_t)0xa64acbd9, + (q31_t)0x5b498a2a, (q31_t)0xa6465097, + (q31_t)0x5b452288, (q31_t)0xa641d58c, (q31_t)0x5b40baae, (q31_t)0xa63d5ab9, (q31_t)0x5b3c529c, (q31_t)0xa638e01d, + (q31_t)0x5b37ea51, (q31_t)0xa63465b9, + (q31_t)0x5b3381ce, (q31_t)0xa62feb8b, (q31_t)0x5b2f1913, (q31_t)0xa62b7196, (q31_t)0x5b2ab020, (q31_t)0xa626f7d7, + (q31_t)0x5b2646f4, (q31_t)0xa6227e50, + (q31_t)0x5b21dd90, (q31_t)0xa61e0501, (q31_t)0x5b1d73f4, (q31_t)0xa6198be9, (q31_t)0x5b190a20, (q31_t)0xa6151308, + (q31_t)0x5b14a014, (q31_t)0xa6109a5f, + (q31_t)0x5b1035cf, (q31_t)0xa60c21ee, (q31_t)0x5b0bcb52, (q31_t)0xa607a9b4, (q31_t)0x5b07609d, (q31_t)0xa60331b1, + (q31_t)0x5b02f5b0, (q31_t)0xa5feb9e6, + (q31_t)0x5afe8a8b, (q31_t)0xa5fa4252, (q31_t)0x5afa1f2e, (q31_t)0xa5f5caf6, (q31_t)0x5af5b398, (q31_t)0xa5f153d2, + (q31_t)0x5af147ca, (q31_t)0xa5ecdce5, + (q31_t)0x5aecdbc5, (q31_t)0xa5e8662f, (q31_t)0x5ae86f87, (q31_t)0xa5e3efb1, (q31_t)0x5ae40311, (q31_t)0xa5df796b, + (q31_t)0x5adf9663, (q31_t)0xa5db035c, + (q31_t)0x5adb297d, (q31_t)0xa5d68d85, (q31_t)0x5ad6bc5f, (q31_t)0xa5d217e6, (q31_t)0x5ad24f09, (q31_t)0xa5cda27e, + (q31_t)0x5acde17b, (q31_t)0xa5c92d4e, + (q31_t)0x5ac973b5, (q31_t)0xa5c4b855, (q31_t)0x5ac505b7, (q31_t)0xa5c04395, (q31_t)0x5ac09781, (q31_t)0xa5bbcf0b, + (q31_t)0x5abc2912, (q31_t)0xa5b75aba, + (q31_t)0x5ab7ba6c, (q31_t)0xa5b2e6a0, (q31_t)0x5ab34b8e, (q31_t)0xa5ae72be, (q31_t)0x5aaedc78, (q31_t)0xa5a9ff14, + (q31_t)0x5aaa6d2b, (q31_t)0xa5a58ba1, + (q31_t)0x5aa5fda5, (q31_t)0xa5a11866, (q31_t)0x5aa18de7, (q31_t)0xa59ca563, (q31_t)0x5a9d1df1, (q31_t)0xa5983297, + (q31_t)0x5a98adc4, (q31_t)0xa593c004, + (q31_t)0x5a943d5e, (q31_t)0xa58f4da8, (q31_t)0x5a8fccc1, (q31_t)0xa58adb84, (q31_t)0x5a8b5bec, (q31_t)0xa5866997, + (q31_t)0x5a86eadf, (q31_t)0xa581f7e3, + (q31_t)0x5a82799a, (q31_t)0xa57d8666, (q31_t)0x5a7e081d, (q31_t)0xa5791521, (q31_t)0x5a799669, (q31_t)0xa574a414, + (q31_t)0x5a75247c, (q31_t)0xa570333f, + (q31_t)0x5a70b258, (q31_t)0xa56bc2a2, (q31_t)0x5a6c3ffc, (q31_t)0xa567523c, (q31_t)0x5a67cd69, (q31_t)0xa562e20f, + (q31_t)0x5a635a9d, (q31_t)0xa55e7219, + (q31_t)0x5a5ee79a, (q31_t)0xa55a025b, (q31_t)0x5a5a745f, (q31_t)0xa55592d5, (q31_t)0x5a5600ec, (q31_t)0xa5512388, + (q31_t)0x5a518d42, (q31_t)0xa54cb472, + (q31_t)0x5a4d1960, (q31_t)0xa5484594, (q31_t)0x5a48a546, (q31_t)0xa543d6ee, (q31_t)0x5a4430f5, (q31_t)0xa53f687f, + (q31_t)0x5a3fbc6b, (q31_t)0xa53afa49, + (q31_t)0x5a3b47ab, (q31_t)0xa5368c4b, (q31_t)0x5a36d2b2, (q31_t)0xa5321e85, (q31_t)0x5a325d82, (q31_t)0xa52db0f7, + (q31_t)0x5a2de81a, (q31_t)0xa52943a1, + (q31_t)0x5a29727b, (q31_t)0xa524d683, (q31_t)0x5a24fca4, (q31_t)0xa520699d, (q31_t)0x5a208695, (q31_t)0xa51bfcef, + (q31_t)0x5a1c104f, (q31_t)0xa5179079, + (q31_t)0x5a1799d1, (q31_t)0xa513243b, (q31_t)0x5a13231b, (q31_t)0xa50eb836, (q31_t)0x5a0eac2e, (q31_t)0xa50a4c68, + (q31_t)0x5a0a350a, (q31_t)0xa505e0d2, + (q31_t)0x5a05bdae, (q31_t)0xa5017575, (q31_t)0x5a01461a, (q31_t)0xa4fd0a50, (q31_t)0x59fcce4f, (q31_t)0xa4f89f63, + (q31_t)0x59f8564c, (q31_t)0xa4f434ae, + (q31_t)0x59f3de12, (q31_t)0xa4efca31, (q31_t)0x59ef65a1, (q31_t)0xa4eb5fec, (q31_t)0x59eaecf8, (q31_t)0xa4e6f5e0, + (q31_t)0x59e67417, (q31_t)0xa4e28c0c, + (q31_t)0x59e1faff, (q31_t)0xa4de2270, (q31_t)0x59dd81b0, (q31_t)0xa4d9b90c, (q31_t)0x59d90829, (q31_t)0xa4d54fe0, + (q31_t)0x59d48e6a, (q31_t)0xa4d0e6ed, + (q31_t)0x59d01475, (q31_t)0xa4cc7e32, (q31_t)0x59cb9a47, (q31_t)0xa4c815af, (q31_t)0x59c71fe3, (q31_t)0xa4c3ad64, + (q31_t)0x59c2a547, (q31_t)0xa4bf4552, + (q31_t)0x59be2a74, (q31_t)0xa4badd78, (q31_t)0x59b9af69, (q31_t)0xa4b675d6, (q31_t)0x59b53427, (q31_t)0xa4b20e6d, + (q31_t)0x59b0b8ae, (q31_t)0xa4ada73c, + (q31_t)0x59ac3cfd, (q31_t)0xa4a94043, (q31_t)0x59a7c115, (q31_t)0xa4a4d982, (q31_t)0x59a344f6, (q31_t)0xa4a072fa, + (q31_t)0x599ec8a0, (q31_t)0xa49c0cab, + (q31_t)0x599a4c12, (q31_t)0xa497a693, (q31_t)0x5995cf4d, (q31_t)0xa49340b4, (q31_t)0x59915250, (q31_t)0xa48edb0e, + (q31_t)0x598cd51d, (q31_t)0xa48a75a0, + (q31_t)0x598857b2, (q31_t)0xa486106a, (q31_t)0x5983da10, (q31_t)0xa481ab6d, (q31_t)0x597f5c36, (q31_t)0xa47d46a8, + (q31_t)0x597ade26, (q31_t)0xa478e21b, + (q31_t)0x59765fde, (q31_t)0xa4747dc7, (q31_t)0x5971e15f, (q31_t)0xa47019ac, (q31_t)0x596d62a9, (q31_t)0xa46bb5c9, + (q31_t)0x5968e3bc, (q31_t)0xa467521e, + (q31_t)0x59646498, (q31_t)0xa462eeac, (q31_t)0x595fe53c, (q31_t)0xa45e8b73, (q31_t)0x595b65aa, (q31_t)0xa45a2872, + (q31_t)0x5956e5e0, (q31_t)0xa455c5a9, + (q31_t)0x595265df, (q31_t)0xa4516319, (q31_t)0x594de5a7, (q31_t)0xa44d00c2, (q31_t)0x59496538, (q31_t)0xa4489ea3, + (q31_t)0x5944e492, (q31_t)0xa4443cbd, + (q31_t)0x594063b5, (q31_t)0xa43fdb10, (q31_t)0x593be2a0, (q31_t)0xa43b799a, (q31_t)0x59376155, (q31_t)0xa437185e, + (q31_t)0x5932dfd3, (q31_t)0xa432b75a, + (q31_t)0x592e5e19, (q31_t)0xa42e568f, (q31_t)0x5929dc29, (q31_t)0xa429f5fd, (q31_t)0x59255a02, (q31_t)0xa42595a3, + (q31_t)0x5920d7a3, (q31_t)0xa4213581, + (q31_t)0x591c550e, (q31_t)0xa41cd599, (q31_t)0x5917d242, (q31_t)0xa41875e9, (q31_t)0x59134f3e, (q31_t)0xa4141672, + (q31_t)0x590ecc04, (q31_t)0xa40fb733, + (q31_t)0x590a4893, (q31_t)0xa40b582e, (q31_t)0x5905c4eb, (q31_t)0xa406f960, (q31_t)0x5901410c, (q31_t)0xa4029acc, + (q31_t)0x58fcbcf6, (q31_t)0xa3fe3c71, + (q31_t)0x58f838a9, (q31_t)0xa3f9de4e, (q31_t)0x58f3b426, (q31_t)0xa3f58064, (q31_t)0x58ef2f6b, (q31_t)0xa3f122b2, + (q31_t)0x58eaaa7a, (q31_t)0xa3ecc53a, + (q31_t)0x58e62552, (q31_t)0xa3e867fa, (q31_t)0x58e19ff3, (q31_t)0xa3e40af3, (q31_t)0x58dd1a5d, (q31_t)0xa3dfae25, + (q31_t)0x58d89490, (q31_t)0xa3db5190, + (q31_t)0x58d40e8c, (q31_t)0xa3d6f534, (q31_t)0x58cf8852, (q31_t)0xa3d29910, (q31_t)0x58cb01e1, (q31_t)0xa3ce3d25, + (q31_t)0x58c67b39, (q31_t)0xa3c9e174, + (q31_t)0x58c1f45b, (q31_t)0xa3c585fb, (q31_t)0x58bd6d45, (q31_t)0xa3c12abb, (q31_t)0x58b8e5f9, (q31_t)0xa3bccfb3, + (q31_t)0x58b45e76, (q31_t)0xa3b874e5, + (q31_t)0x58afd6bd, (q31_t)0xa3b41a50, (q31_t)0x58ab4ecc, (q31_t)0xa3afbff3, (q31_t)0x58a6c6a5, (q31_t)0xa3ab65d0, + (q31_t)0x58a23e48, (q31_t)0xa3a70be6, + (q31_t)0x589db5b3, (q31_t)0xa3a2b234, (q31_t)0x58992ce9, (q31_t)0xa39e58bb, (q31_t)0x5894a3e7, (q31_t)0xa399ff7c, + (q31_t)0x58901aaf, (q31_t)0xa395a675, + (q31_t)0x588b9140, (q31_t)0xa3914da8, (q31_t)0x5887079a, (q31_t)0xa38cf513, (q31_t)0x58827dbe, (q31_t)0xa3889cb8, + (q31_t)0x587df3ab, (q31_t)0xa3844495, + (q31_t)0x58796962, (q31_t)0xa37fecac, (q31_t)0x5874dee2, (q31_t)0xa37b94fb, (q31_t)0x5870542c, (q31_t)0xa3773d84, + (q31_t)0x586bc93f, (q31_t)0xa372e646, + (q31_t)0x58673e1b, (q31_t)0xa36e8f41, (q31_t)0x5862b2c1, (q31_t)0xa36a3875, (q31_t)0x585e2730, (q31_t)0xa365e1e2, + (q31_t)0x58599b69, (q31_t)0xa3618b88, + (q31_t)0x58550f6c, (q31_t)0xa35d3567, (q31_t)0x58508338, (q31_t)0xa358df80, (q31_t)0x584bf6cd, (q31_t)0xa35489d1, + (q31_t)0x58476a2c, (q31_t)0xa350345c, + (q31_t)0x5842dd54, (q31_t)0xa34bdf20, (q31_t)0x583e5047, (q31_t)0xa3478a1d, (q31_t)0x5839c302, (q31_t)0xa3433554, + (q31_t)0x58353587, (q31_t)0xa33ee0c3, + (q31_t)0x5830a7d6, (q31_t)0xa33a8c6c, (q31_t)0x582c19ef, (q31_t)0xa336384e, (q31_t)0x58278bd1, (q31_t)0xa331e469, + (q31_t)0x5822fd7c, (q31_t)0xa32d90be, + (q31_t)0x581e6ef1, (q31_t)0xa3293d4b, (q31_t)0x5819e030, (q31_t)0xa324ea13, (q31_t)0x58155139, (q31_t)0xa3209713, + (q31_t)0x5810c20b, (q31_t)0xa31c444c, + (q31_t)0x580c32a7, (q31_t)0xa317f1bf, (q31_t)0x5807a30d, (q31_t)0xa3139f6b, (q31_t)0x5803133c, (q31_t)0xa30f4d51, + (q31_t)0x57fe8335, (q31_t)0xa30afb70, + (q31_t)0x57f9f2f8, (q31_t)0xa306a9c8, (q31_t)0x57f56284, (q31_t)0xa3025859, (q31_t)0x57f0d1da, (q31_t)0xa2fe0724, + (q31_t)0x57ec40fa, (q31_t)0xa2f9b629, + (q31_t)0x57e7afe4, (q31_t)0xa2f56566, (q31_t)0x57e31e97, (q31_t)0xa2f114dd, (q31_t)0x57de8d15, (q31_t)0xa2ecc48e, + (q31_t)0x57d9fb5c, (q31_t)0xa2e87477, + (q31_t)0x57d5696d, (q31_t)0xa2e4249b, (q31_t)0x57d0d747, (q31_t)0xa2dfd4f7, (q31_t)0x57cc44ec, (q31_t)0xa2db858e, + (q31_t)0x57c7b25a, (q31_t)0xa2d7365d, + (q31_t)0x57c31f92, (q31_t)0xa2d2e766, (q31_t)0x57be8c94, (q31_t)0xa2ce98a9, (q31_t)0x57b9f960, (q31_t)0xa2ca4a25, + (q31_t)0x57b565f6, (q31_t)0xa2c5fbda, + (q31_t)0x57b0d256, (q31_t)0xa2c1adc9, (q31_t)0x57ac3e80, (q31_t)0xa2bd5ff2, (q31_t)0x57a7aa73, (q31_t)0xa2b91254, + (q31_t)0x57a31631, (q31_t)0xa2b4c4f0, + (q31_t)0x579e81b8, (q31_t)0xa2b077c5, (q31_t)0x5799ed0a, (q31_t)0xa2ac2ad3, (q31_t)0x57955825, (q31_t)0xa2a7de1c, + (q31_t)0x5790c30a, (q31_t)0xa2a3919e, + (q31_t)0x578c2dba, (q31_t)0xa29f4559, (q31_t)0x57879833, (q31_t)0xa29af94e, (q31_t)0x57830276, (q31_t)0xa296ad7d, + (q31_t)0x577e6c84, (q31_t)0xa29261e5, + (q31_t)0x5779d65b, (q31_t)0xa28e1687, (q31_t)0x57753ffc, (q31_t)0xa289cb63, (q31_t)0x5770a968, (q31_t)0xa2858078, + (q31_t)0x576c129d, (q31_t)0xa28135c7, + (q31_t)0x57677b9d, (q31_t)0xa27ceb4f, (q31_t)0x5762e467, (q31_t)0xa278a111, (q31_t)0x575e4cfa, (q31_t)0xa274570d, + (q31_t)0x5759b558, (q31_t)0xa2700d43, + (q31_t)0x57551d80, (q31_t)0xa26bc3b2, (q31_t)0x57508572, (q31_t)0xa2677a5b, (q31_t)0x574bed2f, (q31_t)0xa263313e, + (q31_t)0x574754b5, (q31_t)0xa25ee85b, + (q31_t)0x5742bc06, (q31_t)0xa25a9fb1, (q31_t)0x573e2320, (q31_t)0xa2565741, (q31_t)0x57398a05, (q31_t)0xa2520f0b, + (q31_t)0x5734f0b5, (q31_t)0xa24dc70f, + (q31_t)0x5730572e, (q31_t)0xa2497f4c, (q31_t)0x572bbd71, (q31_t)0xa24537c3, (q31_t)0x5727237f, (q31_t)0xa240f074, + (q31_t)0x57228957, (q31_t)0xa23ca95f, + (q31_t)0x571deefa, (q31_t)0xa2386284, (q31_t)0x57195466, (q31_t)0xa2341be3, (q31_t)0x5714b99d, (q31_t)0xa22fd57b, + (q31_t)0x57101e9e, (q31_t)0xa22b8f4d, + (q31_t)0x570b8369, (q31_t)0xa2274959, (q31_t)0x5706e7ff, (q31_t)0xa223039f, (q31_t)0x57024c5f, (q31_t)0xa21ebe1f, + (q31_t)0x56fdb08a, (q31_t)0xa21a78d9, + (q31_t)0x56f9147e, (q31_t)0xa21633cd, (q31_t)0x56f4783d, (q31_t)0xa211eefb, (q31_t)0x56efdbc7, (q31_t)0xa20daa62, + (q31_t)0x56eb3f1a, (q31_t)0xa2096604, + (q31_t)0x56e6a239, (q31_t)0xa20521e0, (q31_t)0x56e20521, (q31_t)0xa200ddf5, (q31_t)0x56dd67d4, (q31_t)0xa1fc9a45, + (q31_t)0x56d8ca51, (q31_t)0xa1f856ce, + (q31_t)0x56d42c99, (q31_t)0xa1f41392, (q31_t)0x56cf8eab, (q31_t)0xa1efd08f, (q31_t)0x56caf088, (q31_t)0xa1eb8dc7, + (q31_t)0x56c6522f, (q31_t)0xa1e74b38, + (q31_t)0x56c1b3a1, (q31_t)0xa1e308e4, (q31_t)0x56bd14dd, (q31_t)0xa1dec6ca, (q31_t)0x56b875e4, (q31_t)0xa1da84e9, + (q31_t)0x56b3d6b5, (q31_t)0xa1d64343, + (q31_t)0x56af3750, (q31_t)0xa1d201d7, (q31_t)0x56aa97b7, (q31_t)0xa1cdc0a5, (q31_t)0x56a5f7e7, (q31_t)0xa1c97fad, + (q31_t)0x56a157e3, (q31_t)0xa1c53ef0, + (q31_t)0x569cb7a8, (q31_t)0xa1c0fe6c, (q31_t)0x56981739, (q31_t)0xa1bcbe22, (q31_t)0x56937694, (q31_t)0xa1b87e13, + (q31_t)0x568ed5b9, (q31_t)0xa1b43e3e, + (q31_t)0x568a34a9, (q31_t)0xa1affea3, (q31_t)0x56859364, (q31_t)0xa1abbf42, (q31_t)0x5680f1ea, (q31_t)0xa1a7801b, + (q31_t)0x567c503a, (q31_t)0xa1a3412f, + (q31_t)0x5677ae54, (q31_t)0xa19f027c, (q31_t)0x56730c3a, (q31_t)0xa19ac404, (q31_t)0x566e69ea, (q31_t)0xa19685c7, + (q31_t)0x5669c765, (q31_t)0xa19247c3, + (q31_t)0x566524aa, (q31_t)0xa18e09fa, (q31_t)0x566081ba, (q31_t)0xa189cc6b, (q31_t)0x565bde95, (q31_t)0xa1858f16, + (q31_t)0x56573b3b, (q31_t)0xa18151fb, + (q31_t)0x565297ab, (q31_t)0xa17d151b, (q31_t)0x564df3e6, (q31_t)0xa178d875, (q31_t)0x56494fec, (q31_t)0xa1749c09, + (q31_t)0x5644abbc, (q31_t)0xa1705fd8, + (q31_t)0x56400758, (q31_t)0xa16c23e1, (q31_t)0x563b62be, (q31_t)0xa167e824, (q31_t)0x5636bdef, (q31_t)0xa163aca2, + (q31_t)0x563218eb, (q31_t)0xa15f715a, + (q31_t)0x562d73b2, (q31_t)0xa15b364d, (q31_t)0x5628ce43, (q31_t)0xa156fb79, (q31_t)0x5624289f, (q31_t)0xa152c0e1, + (q31_t)0x561f82c7, (q31_t)0xa14e8682, + (q31_t)0x561adcb9, (q31_t)0xa14a4c5e, (q31_t)0x56163676, (q31_t)0xa1461275, (q31_t)0x56118ffe, (q31_t)0xa141d8c5, + (q31_t)0x560ce950, (q31_t)0xa13d9f51, + (q31_t)0x5608426e, (q31_t)0xa1396617, (q31_t)0x56039b57, (q31_t)0xa1352d17, (q31_t)0x55fef40a, (q31_t)0xa130f451, + (q31_t)0x55fa4c89, (q31_t)0xa12cbbc7, + (q31_t)0x55f5a4d2, (q31_t)0xa1288376, (q31_t)0x55f0fce7, (q31_t)0xa1244b61, (q31_t)0x55ec54c6, (q31_t)0xa1201385, + (q31_t)0x55e7ac71, (q31_t)0xa11bdbe4, + (q31_t)0x55e303e6, (q31_t)0xa117a47e, (q31_t)0x55de5b27, (q31_t)0xa1136d52, (q31_t)0x55d9b232, (q31_t)0xa10f3661, + (q31_t)0x55d50909, (q31_t)0xa10affab, + (q31_t)0x55d05faa, (q31_t)0xa106c92f, (q31_t)0x55cbb617, (q31_t)0xa10292ed, (q31_t)0x55c70c4f, (q31_t)0xa0fe5ce6, + (q31_t)0x55c26251, (q31_t)0xa0fa271a, + (q31_t)0x55bdb81f, (q31_t)0xa0f5f189, (q31_t)0x55b90db8, (q31_t)0xa0f1bc32, (q31_t)0x55b4631d, (q31_t)0xa0ed8715, + (q31_t)0x55afb84c, (q31_t)0xa0e95234, + (q31_t)0x55ab0d46, (q31_t)0xa0e51d8c, (q31_t)0x55a6620c, (q31_t)0xa0e0e920, (q31_t)0x55a1b69d, (q31_t)0xa0dcb4ee, + (q31_t)0x559d0af9, (q31_t)0xa0d880f7, + (q31_t)0x55985f20, (q31_t)0xa0d44d3b, (q31_t)0x5593b312, (q31_t)0xa0d019b9, (q31_t)0x558f06d0, (q31_t)0xa0cbe672, + (q31_t)0x558a5a58, (q31_t)0xa0c7b366, + (q31_t)0x5585adad, (q31_t)0xa0c38095, (q31_t)0x558100cc, (q31_t)0xa0bf4dfe, (q31_t)0x557c53b6, (q31_t)0xa0bb1ba2, + (q31_t)0x5577a66c, (q31_t)0xa0b6e981, + (q31_t)0x5572f8ed, (q31_t)0xa0b2b79b, (q31_t)0x556e4b39, (q31_t)0xa0ae85ef, (q31_t)0x55699d51, (q31_t)0xa0aa547e, + (q31_t)0x5564ef34, (q31_t)0xa0a62348, + (q31_t)0x556040e2, (q31_t)0xa0a1f24d, (q31_t)0x555b925c, (q31_t)0xa09dc18d, (q31_t)0x5556e3a1, (q31_t)0xa0999107, + (q31_t)0x555234b1, (q31_t)0xa09560bc, + (q31_t)0x554d858d, (q31_t)0xa09130ad, (q31_t)0x5548d634, (q31_t)0xa08d00d8, (q31_t)0x554426a7, (q31_t)0xa088d13e, + (q31_t)0x553f76e4, (q31_t)0xa084a1de, + (q31_t)0x553ac6ee, (q31_t)0xa08072ba, (q31_t)0x553616c2, (q31_t)0xa07c43d1, (q31_t)0x55316663, (q31_t)0xa0781522, + (q31_t)0x552cb5ce, (q31_t)0xa073e6af, + (q31_t)0x55280505, (q31_t)0xa06fb876, (q31_t)0x55235408, (q31_t)0xa06b8a78, (q31_t)0x551ea2d6, (q31_t)0xa0675cb6, + (q31_t)0x5519f16f, (q31_t)0xa0632f2e, + (q31_t)0x55153fd4, (q31_t)0xa05f01e1, (q31_t)0x55108e05, (q31_t)0xa05ad4cf, (q31_t)0x550bdc01, (q31_t)0xa056a7f9, + (q31_t)0x550729c9, (q31_t)0xa0527b5d, + (q31_t)0x5502775c, (q31_t)0xa04e4efc, (q31_t)0x54fdc4ba, (q31_t)0xa04a22d7, (q31_t)0x54f911e5, (q31_t)0xa045f6ec, + (q31_t)0x54f45edb, (q31_t)0xa041cb3c, + (q31_t)0x54efab9c, (q31_t)0xa03d9fc8, (q31_t)0x54eaf829, (q31_t)0xa039748e, (q31_t)0x54e64482, (q31_t)0xa0354990, + (q31_t)0x54e190a6, (q31_t)0xa0311ecd, + (q31_t)0x54dcdc96, (q31_t)0xa02cf444, (q31_t)0x54d82852, (q31_t)0xa028c9f7, (q31_t)0x54d373d9, (q31_t)0xa0249fe5, + (q31_t)0x54cebf2c, (q31_t)0xa020760e, + (q31_t)0x54ca0a4b, (q31_t)0xa01c4c73, (q31_t)0x54c55535, (q31_t)0xa0182312, (q31_t)0x54c09feb, (q31_t)0xa013f9ed, + (q31_t)0x54bbea6d, (q31_t)0xa00fd102, + (q31_t)0x54b734ba, (q31_t)0xa00ba853, (q31_t)0x54b27ed3, (q31_t)0xa0077fdf, (q31_t)0x54adc8b8, (q31_t)0xa00357a7, + (q31_t)0x54a91269, (q31_t)0x9fff2fa9, + (q31_t)0x54a45be6, (q31_t)0x9ffb07e7, (q31_t)0x549fa52e, (q31_t)0x9ff6e060, (q31_t)0x549aee42, (q31_t)0x9ff2b914, + (q31_t)0x54963722, (q31_t)0x9fee9204, + (q31_t)0x54917fce, (q31_t)0x9fea6b2f, (q31_t)0x548cc845, (q31_t)0x9fe64495, (q31_t)0x54881089, (q31_t)0x9fe21e36, + (q31_t)0x54835898, (q31_t)0x9fddf812, + (q31_t)0x547ea073, (q31_t)0x9fd9d22a, (q31_t)0x5479e81a, (q31_t)0x9fd5ac7d, (q31_t)0x54752f8d, (q31_t)0x9fd1870c, + (q31_t)0x547076cc, (q31_t)0x9fcd61d6, + (q31_t)0x546bbdd7, (q31_t)0x9fc93cdb, (q31_t)0x546704ae, (q31_t)0x9fc5181b, (q31_t)0x54624b50, (q31_t)0x9fc0f397, + (q31_t)0x545d91bf, (q31_t)0x9fbccf4f, + (q31_t)0x5458d7f9, (q31_t)0x9fb8ab41, (q31_t)0x54541e00, (q31_t)0x9fb4876f, (q31_t)0x544f63d2, (q31_t)0x9fb063d9, + (q31_t)0x544aa971, (q31_t)0x9fac407e, + (q31_t)0x5445eedb, (q31_t)0x9fa81d5e, (q31_t)0x54413412, (q31_t)0x9fa3fa79, (q31_t)0x543c7914, (q31_t)0x9f9fd7d1, + (q31_t)0x5437bde3, (q31_t)0x9f9bb563, + (q31_t)0x5433027d, (q31_t)0x9f979331, (q31_t)0x542e46e4, (q31_t)0x9f93713b, (q31_t)0x54298b17, (q31_t)0x9f8f4f80, + (q31_t)0x5424cf16, (q31_t)0x9f8b2e00, + (q31_t)0x542012e1, (q31_t)0x9f870cbc, (q31_t)0x541b5678, (q31_t)0x9f82ebb4, (q31_t)0x541699db, (q31_t)0x9f7ecae7, + (q31_t)0x5411dd0a, (q31_t)0x9f7aaa55, + (q31_t)0x540d2005, (q31_t)0x9f7689ff, (q31_t)0x540862cd, (q31_t)0x9f7269e5, (q31_t)0x5403a561, (q31_t)0x9f6e4a06, + (q31_t)0x53fee7c1, (q31_t)0x9f6a2a63, + (q31_t)0x53fa29ed, (q31_t)0x9f660afb, (q31_t)0x53f56be5, (q31_t)0x9f61ebcf, (q31_t)0x53f0adaa, (q31_t)0x9f5dccde, + (q31_t)0x53ebef3a, (q31_t)0x9f59ae29, + (q31_t)0x53e73097, (q31_t)0x9f558fb0, (q31_t)0x53e271c0, (q31_t)0x9f517173, (q31_t)0x53ddb2b6, (q31_t)0x9f4d5371, + (q31_t)0x53d8f378, (q31_t)0x9f4935aa, + (q31_t)0x53d43406, (q31_t)0x9f45181f, (q31_t)0x53cf7460, (q31_t)0x9f40fad0, (q31_t)0x53cab486, (q31_t)0x9f3cddbd, + (q31_t)0x53c5f479, (q31_t)0x9f38c0e5, + (q31_t)0x53c13439, (q31_t)0x9f34a449, (q31_t)0x53bc73c4, (q31_t)0x9f3087e9, (q31_t)0x53b7b31c, (q31_t)0x9f2c6bc5, + (q31_t)0x53b2f240, (q31_t)0x9f284fdc, + (q31_t)0x53ae3131, (q31_t)0x9f24342f, (q31_t)0x53a96fee, (q31_t)0x9f2018bd, (q31_t)0x53a4ae77, (q31_t)0x9f1bfd88, + (q31_t)0x539feccd, (q31_t)0x9f17e28e, + (q31_t)0x539b2af0, (q31_t)0x9f13c7d0, (q31_t)0x539668de, (q31_t)0x9f0fad4e, (q31_t)0x5391a699, (q31_t)0x9f0b9307, + (q31_t)0x538ce421, (q31_t)0x9f0778fd, + (q31_t)0x53882175, (q31_t)0x9f035f2e, (q31_t)0x53835e95, (q31_t)0x9eff459b, (q31_t)0x537e9b82, (q31_t)0x9efb2c44, + (q31_t)0x5379d83c, (q31_t)0x9ef71328, + (q31_t)0x537514c2, (q31_t)0x9ef2fa49, (q31_t)0x53705114, (q31_t)0x9eeee1a5, (q31_t)0x536b8d33, (q31_t)0x9eeac93e, + (q31_t)0x5366c91f, (q31_t)0x9ee6b112, + (q31_t)0x536204d7, (q31_t)0x9ee29922, (q31_t)0x535d405c, (q31_t)0x9ede816e, (q31_t)0x53587bad, (q31_t)0x9eda69f6, + (q31_t)0x5353b6cb, (q31_t)0x9ed652ba, + (q31_t)0x534ef1b5, (q31_t)0x9ed23bb9, (q31_t)0x534a2c6c, (q31_t)0x9ece24f5, (q31_t)0x534566f0, (q31_t)0x9eca0e6d, + (q31_t)0x5340a140, (q31_t)0x9ec5f820, + (q31_t)0x533bdb5d, (q31_t)0x9ec1e210, (q31_t)0x53371547, (q31_t)0x9ebdcc3b, (q31_t)0x53324efd, (q31_t)0x9eb9b6a3, + (q31_t)0x532d8880, (q31_t)0x9eb5a146, + (q31_t)0x5328c1d0, (q31_t)0x9eb18c26, (q31_t)0x5323faec, (q31_t)0x9ead7742, (q31_t)0x531f33d5, (q31_t)0x9ea96299, + (q31_t)0x531a6c8b, (q31_t)0x9ea54e2d, + (q31_t)0x5315a50e, (q31_t)0x9ea139fd, (q31_t)0x5310dd5d, (q31_t)0x9e9d2608, (q31_t)0x530c1579, (q31_t)0x9e991250, + (q31_t)0x53074d62, (q31_t)0x9e94fed4, + (q31_t)0x53028518, (q31_t)0x9e90eb94, (q31_t)0x52fdbc9a, (q31_t)0x9e8cd890, (q31_t)0x52f8f3e9, (q31_t)0x9e88c5c9, + (q31_t)0x52f42b05, (q31_t)0x9e84b33d, + (q31_t)0x52ef61ee, (q31_t)0x9e80a0ee, (q31_t)0x52ea98a4, (q31_t)0x9e7c8eda, (q31_t)0x52e5cf27, (q31_t)0x9e787d03, + (q31_t)0x52e10576, (q31_t)0x9e746b68, + (q31_t)0x52dc3b92, (q31_t)0x9e705a09, (q31_t)0x52d7717b, (q31_t)0x9e6c48e7, (q31_t)0x52d2a732, (q31_t)0x9e683800, + (q31_t)0x52cddcb5, (q31_t)0x9e642756, + (q31_t)0x52c91204, (q31_t)0x9e6016e8, (q31_t)0x52c44721, (q31_t)0x9e5c06b6, (q31_t)0x52bf7c0b, (q31_t)0x9e57f6c0, + (q31_t)0x52bab0c2, (q31_t)0x9e53e707, + (q31_t)0x52b5e546, (q31_t)0x9e4fd78a, (q31_t)0x52b11996, (q31_t)0x9e4bc849, (q31_t)0x52ac4db4, (q31_t)0x9e47b944, + (q31_t)0x52a7819f, (q31_t)0x9e43aa7c, + (q31_t)0x52a2b556, (q31_t)0x9e3f9bf0, (q31_t)0x529de8db, (q31_t)0x9e3b8da0, (q31_t)0x52991c2d, (q31_t)0x9e377f8c, + (q31_t)0x52944f4c, (q31_t)0x9e3371b5, + (q31_t)0x528f8238, (q31_t)0x9e2f641b, (q31_t)0x528ab4f1, (q31_t)0x9e2b56bc, (q31_t)0x5285e777, (q31_t)0x9e27499a, + (q31_t)0x528119ca, (q31_t)0x9e233cb4, + (q31_t)0x527c4bea, (q31_t)0x9e1f300b, (q31_t)0x52777dd7, (q31_t)0x9e1b239e, (q31_t)0x5272af92, (q31_t)0x9e17176d, + (q31_t)0x526de11a, (q31_t)0x9e130b79, + (q31_t)0x5269126e, (q31_t)0x9e0effc1, (q31_t)0x52644390, (q31_t)0x9e0af446, (q31_t)0x525f7480, (q31_t)0x9e06e907, + (q31_t)0x525aa53c, (q31_t)0x9e02de04, + (q31_t)0x5255d5c5, (q31_t)0x9dfed33e, (q31_t)0x5251061c, (q31_t)0x9dfac8b4, (q31_t)0x524c3640, (q31_t)0x9df6be67, + (q31_t)0x52476631, (q31_t)0x9df2b456, + (q31_t)0x524295f0, (q31_t)0x9deeaa82, (q31_t)0x523dc57b, (q31_t)0x9deaa0ea, (q31_t)0x5238f4d4, (q31_t)0x9de6978f, + (q31_t)0x523423fb, (q31_t)0x9de28e70, + (q31_t)0x522f52ee, (q31_t)0x9dde858e, (q31_t)0x522a81af, (q31_t)0x9dda7ce9, (q31_t)0x5225b03d, (q31_t)0x9dd6747f, + (q31_t)0x5220de99, (q31_t)0x9dd26c53, + (q31_t)0x521c0cc2, (q31_t)0x9dce6463, (q31_t)0x52173ab8, (q31_t)0x9dca5caf, (q31_t)0x5212687b, (q31_t)0x9dc65539, + (q31_t)0x520d960c, (q31_t)0x9dc24dfe, + (q31_t)0x5208c36a, (q31_t)0x9dbe4701, (q31_t)0x5203f096, (q31_t)0x9dba4040, (q31_t)0x51ff1d8f, (q31_t)0x9db639bb, + (q31_t)0x51fa4a56, (q31_t)0x9db23373, + (q31_t)0x51f576ea, (q31_t)0x9dae2d68, (q31_t)0x51f0a34b, (q31_t)0x9daa279a, (q31_t)0x51ebcf7a, (q31_t)0x9da62208, + (q31_t)0x51e6fb76, (q31_t)0x9da21cb2, + (q31_t)0x51e22740, (q31_t)0x9d9e179a, (q31_t)0x51dd52d7, (q31_t)0x9d9a12be, (q31_t)0x51d87e3c, (q31_t)0x9d960e1f, + (q31_t)0x51d3a96f, (q31_t)0x9d9209bd, + (q31_t)0x51ced46e, (q31_t)0x9d8e0597, (q31_t)0x51c9ff3c, (q31_t)0x9d8a01ae, (q31_t)0x51c529d7, (q31_t)0x9d85fe02, + (q31_t)0x51c0543f, (q31_t)0x9d81fa92, + (q31_t)0x51bb7e75, (q31_t)0x9d7df75f, (q31_t)0x51b6a879, (q31_t)0x9d79f469, (q31_t)0x51b1d24a, (q31_t)0x9d75f1b0, + (q31_t)0x51acfbe9, (q31_t)0x9d71ef34, + (q31_t)0x51a82555, (q31_t)0x9d6decf4, (q31_t)0x51a34e8f, (q31_t)0x9d69eaf1, (q31_t)0x519e7797, (q31_t)0x9d65e92b, + (q31_t)0x5199a06d, (q31_t)0x9d61e7a2, + (q31_t)0x5194c910, (q31_t)0x9d5de656, (q31_t)0x518ff180, (q31_t)0x9d59e546, (q31_t)0x518b19bf, (q31_t)0x9d55e473, + (q31_t)0x518641cb, (q31_t)0x9d51e3dd, + (q31_t)0x518169a5, (q31_t)0x9d4de385, (q31_t)0x517c914c, (q31_t)0x9d49e368, (q31_t)0x5177b8c2, (q31_t)0x9d45e389, + (q31_t)0x5172e005, (q31_t)0x9d41e3e7, + (q31_t)0x516e0715, (q31_t)0x9d3de482, (q31_t)0x51692df4, (q31_t)0x9d39e559, (q31_t)0x516454a0, (q31_t)0x9d35e66e, + (q31_t)0x515f7b1a, (q31_t)0x9d31e7bf, + (q31_t)0x515aa162, (q31_t)0x9d2de94d, (q31_t)0x5155c778, (q31_t)0x9d29eb19, (q31_t)0x5150ed5c, (q31_t)0x9d25ed21, + (q31_t)0x514c130d, (q31_t)0x9d21ef66, + (q31_t)0x5147388c, (q31_t)0x9d1df1e9, (q31_t)0x51425dd9, (q31_t)0x9d19f4a8, (q31_t)0x513d82f4, (q31_t)0x9d15f7a4, + (q31_t)0x5138a7dd, (q31_t)0x9d11fadd, + (q31_t)0x5133cc94, (q31_t)0x9d0dfe54, (q31_t)0x512ef119, (q31_t)0x9d0a0207, (q31_t)0x512a156b, (q31_t)0x9d0605f7, + (q31_t)0x5125398c, (q31_t)0x9d020a25, + (q31_t)0x51205d7b, (q31_t)0x9cfe0e8f, (q31_t)0x511b8137, (q31_t)0x9cfa1337, (q31_t)0x5116a4c1, (q31_t)0x9cf6181c, + (q31_t)0x5111c81a, (q31_t)0x9cf21d3d, + (q31_t)0x510ceb40, (q31_t)0x9cee229c, (q31_t)0x51080e35, (q31_t)0x9cea2838, (q31_t)0x510330f7, (q31_t)0x9ce62e11, + (q31_t)0x50fe5388, (q31_t)0x9ce23427, + (q31_t)0x50f975e6, (q31_t)0x9cde3a7b, (q31_t)0x50f49813, (q31_t)0x9cda410b, (q31_t)0x50efba0d, (q31_t)0x9cd647d9, + (q31_t)0x50eadbd6, (q31_t)0x9cd24ee4, + (q31_t)0x50e5fd6d, (q31_t)0x9cce562c, (q31_t)0x50e11ed2, (q31_t)0x9cca5db1, (q31_t)0x50dc4005, (q31_t)0x9cc66573, + (q31_t)0x50d76106, (q31_t)0x9cc26d73, + (q31_t)0x50d281d5, (q31_t)0x9cbe75b0, (q31_t)0x50cda272, (q31_t)0x9cba7e2a, (q31_t)0x50c8c2de, (q31_t)0x9cb686e1, + (q31_t)0x50c3e317, (q31_t)0x9cb28fd5, + (q31_t)0x50bf031f, (q31_t)0x9cae9907, (q31_t)0x50ba22f5, (q31_t)0x9caaa276, (q31_t)0x50b5429a, (q31_t)0x9ca6ac23, + (q31_t)0x50b0620c, (q31_t)0x9ca2b60c, + (q31_t)0x50ab814d, (q31_t)0x9c9ec033, (q31_t)0x50a6a05c, (q31_t)0x9c9aca97, (q31_t)0x50a1bf39, (q31_t)0x9c96d539, + (q31_t)0x509cdde4, (q31_t)0x9c92e017, + (q31_t)0x5097fc5e, (q31_t)0x9c8eeb34, (q31_t)0x50931aa6, (q31_t)0x9c8af68d, (q31_t)0x508e38bd, (q31_t)0x9c870224, + (q31_t)0x508956a1, (q31_t)0x9c830df8, + (q31_t)0x50847454, (q31_t)0x9c7f1a0a, (q31_t)0x507f91d5, (q31_t)0x9c7b2659, (q31_t)0x507aaf25, (q31_t)0x9c7732e5, + (q31_t)0x5075cc43, (q31_t)0x9c733faf, + (q31_t)0x5070e92f, (q31_t)0x9c6f4cb6, (q31_t)0x506c05ea, (q31_t)0x9c6b59fa, (q31_t)0x50672273, (q31_t)0x9c67677c, + (q31_t)0x50623ecb, (q31_t)0x9c63753c, + (q31_t)0x505d5af1, (q31_t)0x9c5f8339, (q31_t)0x505876e5, (q31_t)0x9c5b9173, (q31_t)0x505392a8, (q31_t)0x9c579feb, + (q31_t)0x504eae39, (q31_t)0x9c53aea0, + (q31_t)0x5049c999, (q31_t)0x9c4fbd93, (q31_t)0x5044e4c7, (q31_t)0x9c4bccc3, (q31_t)0x503fffc4, (q31_t)0x9c47dc31, + (q31_t)0x503b1a8f, (q31_t)0x9c43ebdc, + (q31_t)0x50363529, (q31_t)0x9c3ffbc5, (q31_t)0x50314f91, (q31_t)0x9c3c0beb, (q31_t)0x502c69c8, (q31_t)0x9c381c4f, + (q31_t)0x502783cd, (q31_t)0x9c342cf0, + (q31_t)0x50229da1, (q31_t)0x9c303dcf, (q31_t)0x501db743, (q31_t)0x9c2c4eec, (q31_t)0x5018d0b4, (q31_t)0x9c286046, + (q31_t)0x5013e9f4, (q31_t)0x9c2471de, + (q31_t)0x500f0302, (q31_t)0x9c2083b3, (q31_t)0x500a1bdf, (q31_t)0x9c1c95c6, (q31_t)0x5005348a, (q31_t)0x9c18a816, + (q31_t)0x50004d04, (q31_t)0x9c14baa4, + (q31_t)0x4ffb654d, (q31_t)0x9c10cd70, (q31_t)0x4ff67d64, (q31_t)0x9c0ce07a, (q31_t)0x4ff1954b, (q31_t)0x9c08f3c1, + (q31_t)0x4fecacff, (q31_t)0x9c050745, + (q31_t)0x4fe7c483, (q31_t)0x9c011b08, (q31_t)0x4fe2dbd5, (q31_t)0x9bfd2f08, (q31_t)0x4fddf2f6, (q31_t)0x9bf94346, + (q31_t)0x4fd909e5, (q31_t)0x9bf557c1, + (q31_t)0x4fd420a4, (q31_t)0x9bf16c7a, (q31_t)0x4fcf3731, (q31_t)0x9bed8171, (q31_t)0x4fca4d8d, (q31_t)0x9be996a6, + (q31_t)0x4fc563b7, (q31_t)0x9be5ac18, + (q31_t)0x4fc079b1, (q31_t)0x9be1c1c8, (q31_t)0x4fbb8f79, (q31_t)0x9bddd7b6, (q31_t)0x4fb6a510, (q31_t)0x9bd9ede2, + (q31_t)0x4fb1ba76, (q31_t)0x9bd6044b, + (q31_t)0x4faccfab, (q31_t)0x9bd21af3, (q31_t)0x4fa7e4af, (q31_t)0x9bce31d8, (q31_t)0x4fa2f981, (q31_t)0x9bca48fa, + (q31_t)0x4f9e0e22, (q31_t)0x9bc6605b, + (q31_t)0x4f992293, (q31_t)0x9bc277fa, (q31_t)0x4f9436d2, (q31_t)0x9bbe8fd6, (q31_t)0x4f8f4ae0, (q31_t)0x9bbaa7f0, + (q31_t)0x4f8a5ebd, (q31_t)0x9bb6c048, + (q31_t)0x4f857269, (q31_t)0x9bb2d8de, (q31_t)0x4f8085e4, (q31_t)0x9baef1b2, (q31_t)0x4f7b992d, (q31_t)0x9bab0ac3, + (q31_t)0x4f76ac46, (q31_t)0x9ba72413, + (q31_t)0x4f71bf2e, (q31_t)0x9ba33da0, (q31_t)0x4f6cd1e5, (q31_t)0x9b9f576b, (q31_t)0x4f67e46a, (q31_t)0x9b9b7174, + (q31_t)0x4f62f6bf, (q31_t)0x9b978bbc, + (q31_t)0x4f5e08e3, (q31_t)0x9b93a641, (q31_t)0x4f591ad6, (q31_t)0x9b8fc104, (q31_t)0x4f542c98, (q31_t)0x9b8bdc05, + (q31_t)0x4f4f3e29, (q31_t)0x9b87f744, + (q31_t)0x4f4a4f89, (q31_t)0x9b8412c1, (q31_t)0x4f4560b8, (q31_t)0x9b802e7b, (q31_t)0x4f4071b6, (q31_t)0x9b7c4a74, + (q31_t)0x4f3b8284, (q31_t)0x9b7866ab, + (q31_t)0x4f369320, (q31_t)0x9b748320, (q31_t)0x4f31a38c, (q31_t)0x9b709fd3, (q31_t)0x4f2cb3c7, (q31_t)0x9b6cbcc4, + (q31_t)0x4f27c3d1, (q31_t)0x9b68d9f3, + (q31_t)0x4f22d3aa, (q31_t)0x9b64f760, (q31_t)0x4f1de352, (q31_t)0x9b61150b, (q31_t)0x4f18f2c9, (q31_t)0x9b5d32f4, + (q31_t)0x4f140210, (q31_t)0x9b59511c, + (q31_t)0x4f0f1126, (q31_t)0x9b556f81, (q31_t)0x4f0a200b, (q31_t)0x9b518e24, (q31_t)0x4f052ec0, (q31_t)0x9b4dad06, + (q31_t)0x4f003d43, (q31_t)0x9b49cc26, + (q31_t)0x4efb4b96, (q31_t)0x9b45eb83, (q31_t)0x4ef659b8, (q31_t)0x9b420b1f, (q31_t)0x4ef167aa, (q31_t)0x9b3e2af9, + (q31_t)0x4eec756b, (q31_t)0x9b3a4b11, + (q31_t)0x4ee782fb, (q31_t)0x9b366b68, (q31_t)0x4ee2905a, (q31_t)0x9b328bfc, (q31_t)0x4edd9d89, (q31_t)0x9b2eaccf, + (q31_t)0x4ed8aa87, (q31_t)0x9b2acde0, + (q31_t)0x4ed3b755, (q31_t)0x9b26ef2f, (q31_t)0x4ecec3f2, (q31_t)0x9b2310bc, (q31_t)0x4ec9d05e, (q31_t)0x9b1f3288, + (q31_t)0x4ec4dc99, (q31_t)0x9b1b5492, + (q31_t)0x4ebfe8a5, (q31_t)0x9b1776da, (q31_t)0x4ebaf47f, (q31_t)0x9b139960, (q31_t)0x4eb60029, (q31_t)0x9b0fbc24, + (q31_t)0x4eb10ba2, (q31_t)0x9b0bdf27, + (q31_t)0x4eac16eb, (q31_t)0x9b080268, (q31_t)0x4ea72203, (q31_t)0x9b0425e8, (q31_t)0x4ea22ceb, (q31_t)0x9b0049a5, + (q31_t)0x4e9d37a3, (q31_t)0x9afc6da1, + (q31_t)0x4e984229, (q31_t)0x9af891db, (q31_t)0x4e934c80, (q31_t)0x9af4b654, (q31_t)0x4e8e56a5, (q31_t)0x9af0db0b, + (q31_t)0x4e89609b, (q31_t)0x9aed0000, + (q31_t)0x4e846a60, (q31_t)0x9ae92533, (q31_t)0x4e7f73f4, (q31_t)0x9ae54aa5, (q31_t)0x4e7a7d58, (q31_t)0x9ae17056, + (q31_t)0x4e75868c, (q31_t)0x9add9644, + (q31_t)0x4e708f8f, (q31_t)0x9ad9bc71, (q31_t)0x4e6b9862, (q31_t)0x9ad5e2dd, (q31_t)0x4e66a105, (q31_t)0x9ad20987, + (q31_t)0x4e61a977, (q31_t)0x9ace306f, + (q31_t)0x4e5cb1b9, (q31_t)0x9aca5795, (q31_t)0x4e57b9ca, (q31_t)0x9ac67efb, (q31_t)0x4e52c1ab, (q31_t)0x9ac2a69e, + (q31_t)0x4e4dc95c, (q31_t)0x9abece80, + (q31_t)0x4e48d0dd, (q31_t)0x9abaf6a1, (q31_t)0x4e43d82d, (q31_t)0x9ab71eff, (q31_t)0x4e3edf4d, (q31_t)0x9ab3479d, + (q31_t)0x4e39e63d, (q31_t)0x9aaf7079, + (q31_t)0x4e34ecfc, (q31_t)0x9aab9993, (q31_t)0x4e2ff38b, (q31_t)0x9aa7c2ec, (q31_t)0x4e2af9ea, (q31_t)0x9aa3ec83, + (q31_t)0x4e260019, (q31_t)0x9aa01659, + (q31_t)0x4e210617, (q31_t)0x9a9c406e, (q31_t)0x4e1c0be6, (q31_t)0x9a986ac1, (q31_t)0x4e171184, (q31_t)0x9a949552, + (q31_t)0x4e1216f2, (q31_t)0x9a90c022, + (q31_t)0x4e0d1c30, (q31_t)0x9a8ceb31, (q31_t)0x4e08213e, (q31_t)0x9a89167e, (q31_t)0x4e03261b, (q31_t)0x9a85420a, + (q31_t)0x4dfe2ac9, (q31_t)0x9a816dd5, + (q31_t)0x4df92f46, (q31_t)0x9a7d99de, (q31_t)0x4df43393, (q31_t)0x9a79c625, (q31_t)0x4def37b0, (q31_t)0x9a75f2ac, + (q31_t)0x4dea3b9d, (q31_t)0x9a721f71, + (q31_t)0x4de53f5a, (q31_t)0x9a6e4c74, (q31_t)0x4de042e7, (q31_t)0x9a6a79b6, (q31_t)0x4ddb4644, (q31_t)0x9a66a737, + (q31_t)0x4dd64971, (q31_t)0x9a62d4f7, + (q31_t)0x4dd14c6e, (q31_t)0x9a5f02f5, (q31_t)0x4dcc4f3b, (q31_t)0x9a5b3132, (q31_t)0x4dc751d8, (q31_t)0x9a575fae, + (q31_t)0x4dc25445, (q31_t)0x9a538e68, + (q31_t)0x4dbd5682, (q31_t)0x9a4fbd61, (q31_t)0x4db8588f, (q31_t)0x9a4bec99, (q31_t)0x4db35a6c, (q31_t)0x9a481c0f, + (q31_t)0x4dae5c19, (q31_t)0x9a444bc5, + (q31_t)0x4da95d96, (q31_t)0x9a407bb9, (q31_t)0x4da45ee3, (q31_t)0x9a3cabeb, (q31_t)0x4d9f6001, (q31_t)0x9a38dc5d, + (q31_t)0x4d9a60ee, (q31_t)0x9a350d0d, + (q31_t)0x4d9561ac, (q31_t)0x9a313dfc, (q31_t)0x4d90623a, (q31_t)0x9a2d6f2a, (q31_t)0x4d8b6298, (q31_t)0x9a29a097, + (q31_t)0x4d8662c6, (q31_t)0x9a25d243, + (q31_t)0x4d8162c4, (q31_t)0x9a22042d, (q31_t)0x4d7c6293, (q31_t)0x9a1e3656, (q31_t)0x4d776231, (q31_t)0x9a1a68be, + (q31_t)0x4d7261a0, (q31_t)0x9a169b65, + (q31_t)0x4d6d60df, (q31_t)0x9a12ce4b, (q31_t)0x4d685fef, (q31_t)0x9a0f016f, (q31_t)0x4d635ece, (q31_t)0x9a0b34d3, + (q31_t)0x4d5e5d7e, (q31_t)0x9a076875, + (q31_t)0x4d595bfe, (q31_t)0x9a039c57, (q31_t)0x4d545a4f, (q31_t)0x99ffd077, (q31_t)0x4d4f5870, (q31_t)0x99fc04d6, + (q31_t)0x4d4a5661, (q31_t)0x99f83974, + (q31_t)0x4d455422, (q31_t)0x99f46e51, (q31_t)0x4d4051b4, (q31_t)0x99f0a36d, (q31_t)0x4d3b4f16, (q31_t)0x99ecd8c8, + (q31_t)0x4d364c48, (q31_t)0x99e90e62, + (q31_t)0x4d31494b, (q31_t)0x99e5443b, (q31_t)0x4d2c461e, (q31_t)0x99e17a53, (q31_t)0x4d2742c2, (q31_t)0x99ddb0aa, + (q31_t)0x4d223f36, (q31_t)0x99d9e73f, + (q31_t)0x4d1d3b7a, (q31_t)0x99d61e14, (q31_t)0x4d18378f, (q31_t)0x99d25528, (q31_t)0x4d133374, (q31_t)0x99ce8c7b, + (q31_t)0x4d0e2f2a, (q31_t)0x99cac40d, + (q31_t)0x4d092ab0, (q31_t)0x99c6fbde, (q31_t)0x4d042607, (q31_t)0x99c333ee, (q31_t)0x4cff212e, (q31_t)0x99bf6c3d, + (q31_t)0x4cfa1c26, (q31_t)0x99bba4cb, + (q31_t)0x4cf516ee, (q31_t)0x99b7dd99, (q31_t)0x4cf01187, (q31_t)0x99b416a5, (q31_t)0x4ceb0bf0, (q31_t)0x99b04ff0, + (q31_t)0x4ce6062a, (q31_t)0x99ac897b, + (q31_t)0x4ce10034, (q31_t)0x99a8c345, (q31_t)0x4cdbfa0f, (q31_t)0x99a4fd4d, (q31_t)0x4cd6f3bb, (q31_t)0x99a13795, + (q31_t)0x4cd1ed37, (q31_t)0x999d721c, + (q31_t)0x4ccce684, (q31_t)0x9999ace3, (q31_t)0x4cc7dfa1, (q31_t)0x9995e7e8, (q31_t)0x4cc2d88f, (q31_t)0x9992232d, + (q31_t)0x4cbdd14e, (q31_t)0x998e5eb1, + (q31_t)0x4cb8c9dd, (q31_t)0x998a9a74, (q31_t)0x4cb3c23d, (q31_t)0x9986d676, (q31_t)0x4caeba6e, (q31_t)0x998312b7, + (q31_t)0x4ca9b26f, (q31_t)0x997f4f38, + (q31_t)0x4ca4aa41, (q31_t)0x997b8bf8, (q31_t)0x4c9fa1e4, (q31_t)0x9977c8f7, (q31_t)0x4c9a9958, (q31_t)0x99740635, + (q31_t)0x4c95909c, (q31_t)0x997043b2, + (q31_t)0x4c9087b1, (q31_t)0x996c816f, (q31_t)0x4c8b7e97, (q31_t)0x9968bf6b, (q31_t)0x4c86754e, (q31_t)0x9964fda7, + (q31_t)0x4c816bd5, (q31_t)0x99613c22, + (q31_t)0x4c7c622d, (q31_t)0x995d7adc, (q31_t)0x4c775856, (q31_t)0x9959b9d5, (q31_t)0x4c724e50, (q31_t)0x9955f90d, + (q31_t)0x4c6d441b, (q31_t)0x99523885, + (q31_t)0x4c6839b7, (q31_t)0x994e783d, (q31_t)0x4c632f23, (q31_t)0x994ab833, (q31_t)0x4c5e2460, (q31_t)0x9946f869, + (q31_t)0x4c59196f, (q31_t)0x994338df, + (q31_t)0x4c540e4e, (q31_t)0x993f7993, (q31_t)0x4c4f02fe, (q31_t)0x993bba87, (q31_t)0x4c49f77f, (q31_t)0x9937fbbb, + (q31_t)0x4c44ebd1, (q31_t)0x99343d2e, + (q31_t)0x4c3fdff4, (q31_t)0x99307ee0, (q31_t)0x4c3ad3e7, (q31_t)0x992cc0d2, (q31_t)0x4c35c7ac, (q31_t)0x99290303, + (q31_t)0x4c30bb42, (q31_t)0x99254574, + (q31_t)0x4c2baea9, (q31_t)0x99218824, (q31_t)0x4c26a1e1, (q31_t)0x991dcb13, (q31_t)0x4c2194e9, (q31_t)0x991a0e42, + (q31_t)0x4c1c87c3, (q31_t)0x991651b1, + (q31_t)0x4c177a6e, (q31_t)0x9912955f, (q31_t)0x4c126cea, (q31_t)0x990ed94c, (q31_t)0x4c0d5f37, (q31_t)0x990b1d79, + (q31_t)0x4c085156, (q31_t)0x990761e5, + (q31_t)0x4c034345, (q31_t)0x9903a691, (q31_t)0x4bfe3505, (q31_t)0x98ffeb7d, (q31_t)0x4bf92697, (q31_t)0x98fc30a8, + (q31_t)0x4bf417f9, (q31_t)0x98f87612, + (q31_t)0x4bef092d, (q31_t)0x98f4bbbc, (q31_t)0x4be9fa32, (q31_t)0x98f101a6, (q31_t)0x4be4eb08, (q31_t)0x98ed47cf, + (q31_t)0x4bdfdbaf, (q31_t)0x98e98e38, + (q31_t)0x4bdacc28, (q31_t)0x98e5d4e0, (q31_t)0x4bd5bc72, (q31_t)0x98e21bc8, (q31_t)0x4bd0ac8d, (q31_t)0x98de62f0, + (q31_t)0x4bcb9c79, (q31_t)0x98daaa57, + (q31_t)0x4bc68c36, (q31_t)0x98d6f1fe, (q31_t)0x4bc17bc5, (q31_t)0x98d339e4, (q31_t)0x4bbc6b25, (q31_t)0x98cf820b, + (q31_t)0x4bb75a56, (q31_t)0x98cbca70, + (q31_t)0x4bb24958, (q31_t)0x98c81316, (q31_t)0x4bad382c, (q31_t)0x98c45bfb, (q31_t)0x4ba826d1, (q31_t)0x98c0a520, + (q31_t)0x4ba31548, (q31_t)0x98bcee84, + (q31_t)0x4b9e0390, (q31_t)0x98b93828, (q31_t)0x4b98f1a9, (q31_t)0x98b5820c, (q31_t)0x4b93df93, (q31_t)0x98b1cc30, + (q31_t)0x4b8ecd4f, (q31_t)0x98ae1693, + (q31_t)0x4b89badd, (q31_t)0x98aa6136, (q31_t)0x4b84a83b, (q31_t)0x98a6ac19, (q31_t)0x4b7f956b, (q31_t)0x98a2f73c, + (q31_t)0x4b7a826d, (q31_t)0x989f429e, + (q31_t)0x4b756f40, (q31_t)0x989b8e40, (q31_t)0x4b705be4, (q31_t)0x9897da22, (q31_t)0x4b6b485a, (q31_t)0x98942643, + (q31_t)0x4b6634a2, (q31_t)0x989072a5, + (q31_t)0x4b6120bb, (q31_t)0x988cbf46, (q31_t)0x4b5c0ca5, (q31_t)0x98890c27, (q31_t)0x4b56f861, (q31_t)0x98855948, + (q31_t)0x4b51e3ee, (q31_t)0x9881a6a9, + (q31_t)0x4b4ccf4d, (q31_t)0x987df449, (q31_t)0x4b47ba7e, (q31_t)0x987a422a, (q31_t)0x4b42a580, (q31_t)0x9876904a, + (q31_t)0x4b3d9053, (q31_t)0x9872deaa, + (q31_t)0x4b387af9, (q31_t)0x986f2d4a, (q31_t)0x4b336570, (q31_t)0x986b7c2a, (q31_t)0x4b2e4fb8, (q31_t)0x9867cb4a, + (q31_t)0x4b2939d2, (q31_t)0x98641aa9, + (q31_t)0x4b2423be, (q31_t)0x98606a49, (q31_t)0x4b1f0d7b, (q31_t)0x985cba28, (q31_t)0x4b19f70a, (q31_t)0x98590a48, + (q31_t)0x4b14e06b, (q31_t)0x98555aa7, + (q31_t)0x4b0fc99d, (q31_t)0x9851ab46, (q31_t)0x4b0ab2a1, (q31_t)0x984dfc26, (q31_t)0x4b059b77, (q31_t)0x984a4d45, + (q31_t)0x4b00841f, (q31_t)0x98469ea4, + (q31_t)0x4afb6c98, (q31_t)0x9842f043, (q31_t)0x4af654e3, (q31_t)0x983f4223, (q31_t)0x4af13d00, (q31_t)0x983b9442, + (q31_t)0x4aec24ee, (q31_t)0x9837e6a1, + (q31_t)0x4ae70caf, (q31_t)0x98343940, (q31_t)0x4ae1f441, (q31_t)0x98308c1f, (q31_t)0x4adcdba5, (q31_t)0x982cdf3f, + (q31_t)0x4ad7c2da, (q31_t)0x9829329e, + (q31_t)0x4ad2a9e2, (q31_t)0x9825863d, (q31_t)0x4acd90bb, (q31_t)0x9821da1d, (q31_t)0x4ac87767, (q31_t)0x981e2e3c, + (q31_t)0x4ac35de4, (q31_t)0x981a829c, + (q31_t)0x4abe4433, (q31_t)0x9816d73b, (q31_t)0x4ab92a54, (q31_t)0x98132c1b, (q31_t)0x4ab41046, (q31_t)0x980f813b, + (q31_t)0x4aaef60b, (q31_t)0x980bd69b, + (q31_t)0x4aa9dba2, (q31_t)0x98082c3b, (q31_t)0x4aa4c10b, (q31_t)0x9804821b, (q31_t)0x4a9fa645, (q31_t)0x9800d83c, + (q31_t)0x4a9a8b52, (q31_t)0x97fd2e9c, + (q31_t)0x4a957030, (q31_t)0x97f9853d, (q31_t)0x4a9054e1, (q31_t)0x97f5dc1e, (q31_t)0x4a8b3963, (q31_t)0x97f2333f, + (q31_t)0x4a861db8, (q31_t)0x97ee8aa0, + (q31_t)0x4a8101de, (q31_t)0x97eae242, (q31_t)0x4a7be5d7, (q31_t)0x97e73a23, (q31_t)0x4a76c9a2, (q31_t)0x97e39245, + (q31_t)0x4a71ad3e, (q31_t)0x97dfeaa7, + (q31_t)0x4a6c90ad, (q31_t)0x97dc4349, (q31_t)0x4a6773ee, (q31_t)0x97d89c2c, (q31_t)0x4a625701, (q31_t)0x97d4f54f, + (q31_t)0x4a5d39e6, (q31_t)0x97d14eb2, + (q31_t)0x4a581c9e, (q31_t)0x97cda855, (q31_t)0x4a52ff27, (q31_t)0x97ca0239, (q31_t)0x4a4de182, (q31_t)0x97c65c5c, + (q31_t)0x4a48c3b0, (q31_t)0x97c2b6c1, + (q31_t)0x4a43a5b0, (q31_t)0x97bf1165, (q31_t)0x4a3e8782, (q31_t)0x97bb6c4a, (q31_t)0x4a396926, (q31_t)0x97b7c76f, + (q31_t)0x4a344a9d, (q31_t)0x97b422d4, + (q31_t)0x4a2f2be6, (q31_t)0x97b07e7a, (q31_t)0x4a2a0d01, (q31_t)0x97acda60, (q31_t)0x4a24edee, (q31_t)0x97a93687, + (q31_t)0x4a1fcead, (q31_t)0x97a592ed, + (q31_t)0x4a1aaf3f, (q31_t)0x97a1ef94, (q31_t)0x4a158fa3, (q31_t)0x979e4c7c, (q31_t)0x4a106fda, (q31_t)0x979aa9a4, + (q31_t)0x4a0b4fe2, (q31_t)0x9797070c, + (q31_t)0x4a062fbd, (q31_t)0x979364b5, (q31_t)0x4a010f6b, (q31_t)0x978fc29e, (q31_t)0x49fbeeea, (q31_t)0x978c20c8, + (q31_t)0x49f6ce3c, (q31_t)0x97887f32, + (q31_t)0x49f1ad61, (q31_t)0x9784dddc, (q31_t)0x49ec8c57, (q31_t)0x97813cc7, (q31_t)0x49e76b21, (q31_t)0x977d9bf2, + (q31_t)0x49e249bc, (q31_t)0x9779fb5e, + (q31_t)0x49dd282a, (q31_t)0x97765b0a, (q31_t)0x49d8066b, (q31_t)0x9772baf7, (q31_t)0x49d2e47e, (q31_t)0x976f1b24, + (q31_t)0x49cdc263, (q31_t)0x976b7b92, + (q31_t)0x49c8a01b, (q31_t)0x9767dc41, (q31_t)0x49c37da5, (q31_t)0x97643d2f, (q31_t)0x49be5b02, (q31_t)0x97609e5f, + (q31_t)0x49b93832, (q31_t)0x975cffcf, + (q31_t)0x49b41533, (q31_t)0x9759617f, (q31_t)0x49aef208, (q31_t)0x9755c370, (q31_t)0x49a9ceaf, (q31_t)0x975225a1, + (q31_t)0x49a4ab28, (q31_t)0x974e8813, + (q31_t)0x499f8774, (q31_t)0x974aeac6, (q31_t)0x499a6393, (q31_t)0x97474db9, (q31_t)0x49953f84, (q31_t)0x9743b0ed, + (q31_t)0x49901b48, (q31_t)0x97401462, + (q31_t)0x498af6df, (q31_t)0x973c7817, (q31_t)0x4985d248, (q31_t)0x9738dc0d, (q31_t)0x4980ad84, (q31_t)0x97354043, + (q31_t)0x497b8892, (q31_t)0x9731a4ba, + (q31_t)0x49766373, (q31_t)0x972e0971, (q31_t)0x49713e27, (q31_t)0x972a6e6a, (q31_t)0x496c18ae, (q31_t)0x9726d3a3, + (q31_t)0x4966f307, (q31_t)0x9723391c, + (q31_t)0x4961cd33, (q31_t)0x971f9ed7, (q31_t)0x495ca732, (q31_t)0x971c04d2, (q31_t)0x49578103, (q31_t)0x97186b0d, + (q31_t)0x49525aa7, (q31_t)0x9714d18a, + (q31_t)0x494d341e, (q31_t)0x97113847, (q31_t)0x49480d68, (q31_t)0x970d9f45, (q31_t)0x4942e684, (q31_t)0x970a0683, + (q31_t)0x493dbf74, (q31_t)0x97066e03, + (q31_t)0x49389836, (q31_t)0x9702d5c3, (q31_t)0x493370cb, (q31_t)0x96ff3dc4, (q31_t)0x492e4933, (q31_t)0x96fba605, + (q31_t)0x4929216e, (q31_t)0x96f80e88, + (q31_t)0x4923f97b, (q31_t)0x96f4774b, (q31_t)0x491ed15c, (q31_t)0x96f0e04f, (q31_t)0x4919a90f, (q31_t)0x96ed4994, + (q31_t)0x49148095, (q31_t)0x96e9b319, + (q31_t)0x490f57ee, (q31_t)0x96e61ce0, (q31_t)0x490a2f1b, (q31_t)0x96e286e7, (q31_t)0x4905061a, (q31_t)0x96def12f, + (q31_t)0x48ffdcec, (q31_t)0x96db5bb8, + (q31_t)0x48fab391, (q31_t)0x96d7c682, (q31_t)0x48f58a09, (q31_t)0x96d4318d, (q31_t)0x48f06054, (q31_t)0x96d09cd8, + (q31_t)0x48eb3672, (q31_t)0x96cd0865, + (q31_t)0x48e60c62, (q31_t)0x96c97432, (q31_t)0x48e0e227, (q31_t)0x96c5e040, (q31_t)0x48dbb7be, (q31_t)0x96c24c8f, + (q31_t)0x48d68d28, (q31_t)0x96beb91f, + (q31_t)0x48d16265, (q31_t)0x96bb25f0, (q31_t)0x48cc3775, (q31_t)0x96b79302, (q31_t)0x48c70c59, (q31_t)0x96b40055, + (q31_t)0x48c1e10f, (q31_t)0x96b06de9, + (q31_t)0x48bcb599, (q31_t)0x96acdbbe, (q31_t)0x48b789f5, (q31_t)0x96a949d3, (q31_t)0x48b25e25, (q31_t)0x96a5b82a, + (q31_t)0x48ad3228, (q31_t)0x96a226c2, + (q31_t)0x48a805ff, (q31_t)0x969e959b, (q31_t)0x48a2d9a8, (q31_t)0x969b04b4, (q31_t)0x489dad25, (q31_t)0x9697740f, + (q31_t)0x48988074, (q31_t)0x9693e3ab, + (q31_t)0x48935397, (q31_t)0x96905388, (q31_t)0x488e268e, (q31_t)0x968cc3a5, (q31_t)0x4888f957, (q31_t)0x96893404, + (q31_t)0x4883cbf4, (q31_t)0x9685a4a4, + (q31_t)0x487e9e64, (q31_t)0x96821585, (q31_t)0x487970a7, (q31_t)0x967e86a7, (q31_t)0x487442be, (q31_t)0x967af80a, + (q31_t)0x486f14a8, (q31_t)0x967769af, + (q31_t)0x4869e665, (q31_t)0x9673db94, (q31_t)0x4864b7f5, (q31_t)0x96704dba, (q31_t)0x485f8959, (q31_t)0x966cc022, + (q31_t)0x485a5a90, (q31_t)0x966932cb, + (q31_t)0x48552b9b, (q31_t)0x9665a5b4, (q31_t)0x484ffc79, (q31_t)0x966218df, (q31_t)0x484acd2a, (q31_t)0x965e8c4b, + (q31_t)0x48459daf, (q31_t)0x965afff9, + (q31_t)0x48406e08, (q31_t)0x965773e7, (q31_t)0x483b3e33, (q31_t)0x9653e817, (q31_t)0x48360e32, (q31_t)0x96505c88, + (q31_t)0x4830de05, (q31_t)0x964cd139, + (q31_t)0x482badab, (q31_t)0x9649462d, (q31_t)0x48267d24, (q31_t)0x9645bb61, (q31_t)0x48214c71, (q31_t)0x964230d7, + (q31_t)0x481c1b92, (q31_t)0x963ea68d, + (q31_t)0x4816ea86, (q31_t)0x963b1c86, (q31_t)0x4811b94d, (q31_t)0x963792bf, (q31_t)0x480c87e8, (q31_t)0x96340939, + (q31_t)0x48075657, (q31_t)0x96307ff5, + (q31_t)0x48022499, (q31_t)0x962cf6f2, (q31_t)0x47fcf2af, (q31_t)0x96296e31, (q31_t)0x47f7c099, (q31_t)0x9625e5b0, + (q31_t)0x47f28e56, (q31_t)0x96225d71, + (q31_t)0x47ed5be6, (q31_t)0x961ed574, (q31_t)0x47e8294a, (q31_t)0x961b4db7, (q31_t)0x47e2f682, (q31_t)0x9617c63c, + (q31_t)0x47ddc38e, (q31_t)0x96143f02, + (q31_t)0x47d8906d, (q31_t)0x9610b80a, (q31_t)0x47d35d20, (q31_t)0x960d3153, (q31_t)0x47ce29a7, (q31_t)0x9609aadd, + (q31_t)0x47c8f601, (q31_t)0x960624a9, + (q31_t)0x47c3c22f, (q31_t)0x96029eb6, (q31_t)0x47be8e31, (q31_t)0x95ff1904, (q31_t)0x47b95a06, (q31_t)0x95fb9394, + (q31_t)0x47b425af, (q31_t)0x95f80e65, + (q31_t)0x47aef12c, (q31_t)0x95f48977, (q31_t)0x47a9bc7d, (q31_t)0x95f104cb, (q31_t)0x47a487a2, (q31_t)0x95ed8061, + (q31_t)0x479f529a, (q31_t)0x95e9fc38, + (q31_t)0x479a1d67, (q31_t)0x95e67850, (q31_t)0x4794e807, (q31_t)0x95e2f4a9, (q31_t)0x478fb27b, (q31_t)0x95df7145, + (q31_t)0x478a7cc2, (q31_t)0x95dbee21, + (q31_t)0x478546de, (q31_t)0x95d86b3f, (q31_t)0x478010cd, (q31_t)0x95d4e89f, (q31_t)0x477ada91, (q31_t)0x95d16640, + (q31_t)0x4775a428, (q31_t)0x95cde423, + (q31_t)0x47706d93, (q31_t)0x95ca6247, (q31_t)0x476b36d3, (q31_t)0x95c6e0ac, (q31_t)0x4765ffe6, (q31_t)0x95c35f53, + (q31_t)0x4760c8cd, (q31_t)0x95bfde3c, + (q31_t)0x475b9188, (q31_t)0x95bc5d66, (q31_t)0x47565a17, (q31_t)0x95b8dcd2, (q31_t)0x4751227a, (q31_t)0x95b55c7f, + (q31_t)0x474beab1, (q31_t)0x95b1dc6e, + (q31_t)0x4746b2bc, (q31_t)0x95ae5c9f, (q31_t)0x47417a9b, (q31_t)0x95aadd11, (q31_t)0x473c424e, (q31_t)0x95a75dc4, + (q31_t)0x473709d5, (q31_t)0x95a3deb9, + (q31_t)0x4731d131, (q31_t)0x95a05ff0, (q31_t)0x472c9860, (q31_t)0x959ce169, (q31_t)0x47275f63, (q31_t)0x95996323, + (q31_t)0x4722263b, (q31_t)0x9595e51e, + (q31_t)0x471cece7, (q31_t)0x9592675c, (q31_t)0x4717b367, (q31_t)0x958ee9db, (q31_t)0x471279ba, (q31_t)0x958b6c9b, + (q31_t)0x470d3fe3, (q31_t)0x9587ef9e, + (q31_t)0x470805df, (q31_t)0x958472e2, (q31_t)0x4702cbaf, (q31_t)0x9580f667, (q31_t)0x46fd9154, (q31_t)0x957d7a2f, + (q31_t)0x46f856cd, (q31_t)0x9579fe38, + (q31_t)0x46f31c1a, (q31_t)0x95768283, (q31_t)0x46ede13b, (q31_t)0x9573070f, (q31_t)0x46e8a631, (q31_t)0x956f8bdd, + (q31_t)0x46e36afb, (q31_t)0x956c10ed, + (q31_t)0x46de2f99, (q31_t)0x9568963f, (q31_t)0x46d8f40b, (q31_t)0x95651bd2, (q31_t)0x46d3b852, (q31_t)0x9561a1a8, + (q31_t)0x46ce7c6d, (q31_t)0x955e27bf, + (q31_t)0x46c9405c, (q31_t)0x955aae17, (q31_t)0x46c40420, (q31_t)0x955734b2, (q31_t)0x46bec7b8, (q31_t)0x9553bb8e, + (q31_t)0x46b98b24, (q31_t)0x955042ac, + (q31_t)0x46b44e65, (q31_t)0x954cca0c, (q31_t)0x46af117a, (q31_t)0x954951ae, (q31_t)0x46a9d464, (q31_t)0x9545d992, + (q31_t)0x46a49722, (q31_t)0x954261b7, + (q31_t)0x469f59b4, (q31_t)0x953eea1e, (q31_t)0x469a1c1b, (q31_t)0x953b72c7, (q31_t)0x4694de56, (q31_t)0x9537fbb2, + (q31_t)0x468fa066, (q31_t)0x953484df, + (q31_t)0x468a624a, (q31_t)0x95310e4e, (q31_t)0x46852403, (q31_t)0x952d97fe, (q31_t)0x467fe590, (q31_t)0x952a21f1, + (q31_t)0x467aa6f2, (q31_t)0x9526ac25, + (q31_t)0x46756828, (q31_t)0x9523369c, (q31_t)0x46702933, (q31_t)0x951fc154, (q31_t)0x466aea12, (q31_t)0x951c4c4e, + (q31_t)0x4665aac6, (q31_t)0x9518d78a, + (q31_t)0x46606b4e, (q31_t)0x95156308, (q31_t)0x465b2bab, (q31_t)0x9511eec8, (q31_t)0x4655ebdd, (q31_t)0x950e7aca, + (q31_t)0x4650abe3, (q31_t)0x950b070e, + (q31_t)0x464b6bbe, (q31_t)0x95079394, (q31_t)0x46462b6d, (q31_t)0x9504205c, (q31_t)0x4640eaf2, (q31_t)0x9500ad66, + (q31_t)0x463baa4a, (q31_t)0x94fd3ab1, + (q31_t)0x46366978, (q31_t)0x94f9c83f, (q31_t)0x4631287a, (q31_t)0x94f6560f, (q31_t)0x462be751, (q31_t)0x94f2e421, + (q31_t)0x4626a5fd, (q31_t)0x94ef7275, + (q31_t)0x4621647d, (q31_t)0x94ec010b, (q31_t)0x461c22d2, (q31_t)0x94e88fe3, (q31_t)0x4616e0fc, (q31_t)0x94e51efd, + (q31_t)0x46119efa, (q31_t)0x94e1ae59, + (q31_t)0x460c5cce, (q31_t)0x94de3df8, (q31_t)0x46071a76, (q31_t)0x94dacdd8, (q31_t)0x4601d7f3, (q31_t)0x94d75dfa, + (q31_t)0x45fc9545, (q31_t)0x94d3ee5f, + (q31_t)0x45f7526b, (q31_t)0x94d07f05, (q31_t)0x45f20f67, (q31_t)0x94cd0fee, (q31_t)0x45eccc37, (q31_t)0x94c9a119, + (q31_t)0x45e788dc, (q31_t)0x94c63286, + (q31_t)0x45e24556, (q31_t)0x94c2c435, (q31_t)0x45dd01a5, (q31_t)0x94bf5627, (q31_t)0x45d7bdc9, (q31_t)0x94bbe85a, + (q31_t)0x45d279c2, (q31_t)0x94b87ad0, + (q31_t)0x45cd358f, (q31_t)0x94b50d87, (q31_t)0x45c7f132, (q31_t)0x94b1a081, (q31_t)0x45c2acaa, (q31_t)0x94ae33be, + (q31_t)0x45bd67f6, (q31_t)0x94aac73c, + (q31_t)0x45b82318, (q31_t)0x94a75afd, (q31_t)0x45b2de0e, (q31_t)0x94a3eeff, (q31_t)0x45ad98da, (q31_t)0x94a08344, + (q31_t)0x45a8537a, (q31_t)0x949d17cc, + (q31_t)0x45a30df0, (q31_t)0x9499ac95, (q31_t)0x459dc83b, (q31_t)0x949641a1, (q31_t)0x4598825a, (q31_t)0x9492d6ef, + (q31_t)0x45933c4f, (q31_t)0x948f6c7f, + (q31_t)0x458df619, (q31_t)0x948c0252, (q31_t)0x4588afb8, (q31_t)0x94889867, (q31_t)0x4583692c, (q31_t)0x94852ebe, + (q31_t)0x457e2275, (q31_t)0x9481c557, + (q31_t)0x4578db93, (q31_t)0x947e5c33, (q31_t)0x45739487, (q31_t)0x947af351, (q31_t)0x456e4d4f, (q31_t)0x94778ab1, + (q31_t)0x456905ed, (q31_t)0x94742254, + (q31_t)0x4563be60, (q31_t)0x9470ba39, (q31_t)0x455e76a8, (q31_t)0x946d5260, (q31_t)0x45592ec6, (q31_t)0x9469eaca, + (q31_t)0x4553e6b8, (q31_t)0x94668376, + (q31_t)0x454e9e80, (q31_t)0x94631c65, (q31_t)0x4549561d, (q31_t)0x945fb596, (q31_t)0x45440d90, (q31_t)0x945c4f09, + (q31_t)0x453ec4d7, (q31_t)0x9458e8bf, + (q31_t)0x45397bf4, (q31_t)0x945582b7, (q31_t)0x453432e6, (q31_t)0x94521cf1, (q31_t)0x452ee9ae, (q31_t)0x944eb76e, + (q31_t)0x4529a04b, (q31_t)0x944b522d, + (q31_t)0x452456bd, (q31_t)0x9447ed2f, (q31_t)0x451f0d04, (q31_t)0x94448873, (q31_t)0x4519c321, (q31_t)0x944123fa, + (q31_t)0x45147913, (q31_t)0x943dbfc3, + (q31_t)0x450f2edb, (q31_t)0x943a5bcf, (q31_t)0x4509e478, (q31_t)0x9436f81d, (q31_t)0x450499eb, (q31_t)0x943394ad, + (q31_t)0x44ff4f32, (q31_t)0x94303180, + (q31_t)0x44fa0450, (q31_t)0x942cce96, (q31_t)0x44f4b943, (q31_t)0x94296bee, (q31_t)0x44ef6e0b, (q31_t)0x94260989, + (q31_t)0x44ea22a9, (q31_t)0x9422a766, + (q31_t)0x44e4d71c, (q31_t)0x941f4585, (q31_t)0x44df8b64, (q31_t)0x941be3e8, (q31_t)0x44da3f83, (q31_t)0x9418828c, + (q31_t)0x44d4f376, (q31_t)0x94152174, + (q31_t)0x44cfa740, (q31_t)0x9411c09e, (q31_t)0x44ca5adf, (q31_t)0x940e600a, (q31_t)0x44c50e53, (q31_t)0x940affb9, + (q31_t)0x44bfc19d, (q31_t)0x94079fab, + (q31_t)0x44ba74bd, (q31_t)0x94043fdf, (q31_t)0x44b527b2, (q31_t)0x9400e056, (q31_t)0x44afda7d, (q31_t)0x93fd810f, + (q31_t)0x44aa8d1d, (q31_t)0x93fa220b, + (q31_t)0x44a53f93, (q31_t)0x93f6c34a, (q31_t)0x449ff1df, (q31_t)0x93f364cb, (q31_t)0x449aa400, (q31_t)0x93f0068f, + (q31_t)0x449555f7, (q31_t)0x93eca896, + (q31_t)0x449007c4, (q31_t)0x93e94adf, (q31_t)0x448ab967, (q31_t)0x93e5ed6b, (q31_t)0x44856adf, (q31_t)0x93e2903a, + (q31_t)0x44801c2d, (q31_t)0x93df334c, + (q31_t)0x447acd50, (q31_t)0x93dbd6a0, (q31_t)0x44757e4a, (q31_t)0x93d87a36, (q31_t)0x44702f19, (q31_t)0x93d51e10, + (q31_t)0x446adfbe, (q31_t)0x93d1c22c, + (q31_t)0x44659039, (q31_t)0x93ce668b, (q31_t)0x44604089, (q31_t)0x93cb0b2d, (q31_t)0x445af0b0, (q31_t)0x93c7b011, + (q31_t)0x4455a0ac, (q31_t)0x93c45539, + (q31_t)0x4450507e, (q31_t)0x93c0faa3, (q31_t)0x444b0026, (q31_t)0x93bda04f, (q31_t)0x4445afa4, (q31_t)0x93ba463f, + (q31_t)0x44405ef8, (q31_t)0x93b6ec71, + (q31_t)0x443b0e21, (q31_t)0x93b392e6, (q31_t)0x4435bd21, (q31_t)0x93b0399e, (q31_t)0x44306bf6, (q31_t)0x93ace099, + (q31_t)0x442b1aa2, (q31_t)0x93a987d6, + (q31_t)0x4425c923, (q31_t)0x93a62f57, (q31_t)0x4420777b, (q31_t)0x93a2d71a, (q31_t)0x441b25a8, (q31_t)0x939f7f20, + (q31_t)0x4415d3ab, (q31_t)0x939c2769, + (q31_t)0x44108184, (q31_t)0x9398cff5, (q31_t)0x440b2f34, (q31_t)0x939578c3, (q31_t)0x4405dcb9, (q31_t)0x939221d5, + (q31_t)0x44008a14, (q31_t)0x938ecb29, + (q31_t)0x43fb3746, (q31_t)0x938b74c1, (q31_t)0x43f5e44d, (q31_t)0x93881e9b, (q31_t)0x43f0912b, (q31_t)0x9384c8b8, + (q31_t)0x43eb3ddf, (q31_t)0x93817318, + (q31_t)0x43e5ea68, (q31_t)0x937e1dbb, (q31_t)0x43e096c8, (q31_t)0x937ac8a1, (q31_t)0x43db42fe, (q31_t)0x937773ca, + (q31_t)0x43d5ef0a, (q31_t)0x93741f35, + (q31_t)0x43d09aed, (q31_t)0x9370cae4, (q31_t)0x43cb46a5, (q31_t)0x936d76d6, (q31_t)0x43c5f234, (q31_t)0x936a230a, + (q31_t)0x43c09d99, (q31_t)0x9366cf82, + (q31_t)0x43bb48d4, (q31_t)0x93637c3d, (q31_t)0x43b5f3e5, (q31_t)0x9360293a, (q31_t)0x43b09ecc, (q31_t)0x935cd67b, + (q31_t)0x43ab498a, (q31_t)0x935983ff, + (q31_t)0x43a5f41e, (q31_t)0x935631c5, (q31_t)0x43a09e89, (q31_t)0x9352dfcf, (q31_t)0x439b48c9, (q31_t)0x934f8e1c, + (q31_t)0x4395f2e0, (q31_t)0x934c3cab, + (q31_t)0x43909ccd, (q31_t)0x9348eb7e, (q31_t)0x438b4691, (q31_t)0x93459a94, (q31_t)0x4385f02a, (q31_t)0x934249ed, + (q31_t)0x4380999b, (q31_t)0x933ef989, + (q31_t)0x437b42e1, (q31_t)0x933ba968, (q31_t)0x4375ebfe, (q31_t)0x9338598a, (q31_t)0x437094f1, (q31_t)0x933509f0, + (q31_t)0x436b3dbb, (q31_t)0x9331ba98, + (q31_t)0x4365e65b, (q31_t)0x932e6b84, (q31_t)0x43608ed2, (q31_t)0x932b1cb2, (q31_t)0x435b371f, (q31_t)0x9327ce24, + (q31_t)0x4355df42, (q31_t)0x93247fd9, + (q31_t)0x4350873c, (q31_t)0x932131d1, (q31_t)0x434b2f0c, (q31_t)0x931de40c, (q31_t)0x4345d6b3, (q31_t)0x931a968b, + (q31_t)0x43407e31, (q31_t)0x9317494c, + (q31_t)0x433b2585, (q31_t)0x9313fc51, (q31_t)0x4335ccaf, (q31_t)0x9310af99, (q31_t)0x433073b0, (q31_t)0x930d6324, + (q31_t)0x432b1a87, (q31_t)0x930a16f3, + (q31_t)0x4325c135, (q31_t)0x9306cb04, (q31_t)0x432067ba, (q31_t)0x93037f59, (q31_t)0x431b0e15, (q31_t)0x930033f1, + (q31_t)0x4315b447, (q31_t)0x92fce8cc, + (q31_t)0x43105a50, (q31_t)0x92f99deb, (q31_t)0x430b002f, (q31_t)0x92f6534c, (q31_t)0x4305a5e5, (q31_t)0x92f308f1, + (q31_t)0x43004b71, (q31_t)0x92efbeda, + (q31_t)0x42faf0d4, (q31_t)0x92ec7505, (q31_t)0x42f5960e, (q31_t)0x92e92b74, (q31_t)0x42f03b1e, (q31_t)0x92e5e226, + (q31_t)0x42eae005, (q31_t)0x92e2991c, + (q31_t)0x42e584c3, (q31_t)0x92df5054, (q31_t)0x42e02958, (q31_t)0x92dc07d0, (q31_t)0x42dacdc3, (q31_t)0x92d8bf90, + (q31_t)0x42d57205, (q31_t)0x92d57792, + (q31_t)0x42d0161e, (q31_t)0x92d22fd9, (q31_t)0x42caba0e, (q31_t)0x92cee862, (q31_t)0x42c55dd4, (q31_t)0x92cba12f, + (q31_t)0x42c00172, (q31_t)0x92c85a3f, + (q31_t)0x42baa4e6, (q31_t)0x92c51392, (q31_t)0x42b54831, (q31_t)0x92c1cd29, (q31_t)0x42afeb53, (q31_t)0x92be8703, + (q31_t)0x42aa8e4b, (q31_t)0x92bb4121, + (q31_t)0x42a5311b, (q31_t)0x92b7fb82, (q31_t)0x429fd3c1, (q31_t)0x92b4b626, (q31_t)0x429a763f, (q31_t)0x92b1710e, + (q31_t)0x42951893, (q31_t)0x92ae2c3a, + (q31_t)0x428fbabe, (q31_t)0x92aae7a8, (q31_t)0x428a5cc0, (q31_t)0x92a7a35a, (q31_t)0x4284fe99, (q31_t)0x92a45f50, + (q31_t)0x427fa049, (q31_t)0x92a11b89, + (q31_t)0x427a41d0, (q31_t)0x929dd806, (q31_t)0x4274e32e, (q31_t)0x929a94c6, (q31_t)0x426f8463, (q31_t)0x929751c9, + (q31_t)0x426a256f, (q31_t)0x92940f10, + (q31_t)0x4264c653, (q31_t)0x9290cc9b, (q31_t)0x425f670d, (q31_t)0x928d8a69, (q31_t)0x425a079e, (q31_t)0x928a487a, + (q31_t)0x4254a806, (q31_t)0x928706cf, + (q31_t)0x424f4845, (q31_t)0x9283c568, (q31_t)0x4249e85c, (q31_t)0x92808444, (q31_t)0x42448849, (q31_t)0x927d4363, + (q31_t)0x423f280e, (q31_t)0x927a02c7, + (q31_t)0x4239c7aa, (q31_t)0x9276c26d, (q31_t)0x4234671d, (q31_t)0x92738258, (q31_t)0x422f0667, (q31_t)0x92704286, + (q31_t)0x4229a588, (q31_t)0x926d02f7, + (q31_t)0x42244481, (q31_t)0x9269c3ac, (q31_t)0x421ee350, (q31_t)0x926684a5, (q31_t)0x421981f7, (q31_t)0x926345e1, + (q31_t)0x42142075, (q31_t)0x92600761, + (q31_t)0x420ebecb, (q31_t)0x925cc924, (q31_t)0x42095cf7, (q31_t)0x92598b2b, (q31_t)0x4203fafb, (q31_t)0x92564d76, + (q31_t)0x41fe98d6, (q31_t)0x92531005, + (q31_t)0x41f93689, (q31_t)0x924fd2d7, (q31_t)0x41f3d413, (q31_t)0x924c95ec, (q31_t)0x41ee7174, (q31_t)0x92495946, + (q31_t)0x41e90eac, (q31_t)0x92461ce3, + (q31_t)0x41e3abbc, (q31_t)0x9242e0c4, (q31_t)0x41de48a3, (q31_t)0x923fa4e8, (q31_t)0x41d8e561, (q31_t)0x923c6950, + (q31_t)0x41d381f7, (q31_t)0x92392dfc, + (q31_t)0x41ce1e65, (q31_t)0x9235f2ec, (q31_t)0x41c8baa9, (q31_t)0x9232b81f, (q31_t)0x41c356c5, (q31_t)0x922f7d96, + (q31_t)0x41bdf2b9, (q31_t)0x922c4351, + (q31_t)0x41b88e84, (q31_t)0x9229094f, (q31_t)0x41b32a26, (q31_t)0x9225cf91, (q31_t)0x41adc5a0, (q31_t)0x92229617, + (q31_t)0x41a860f1, (q31_t)0x921f5ce1, + (q31_t)0x41a2fc1a, (q31_t)0x921c23ef, (q31_t)0x419d971b, (q31_t)0x9218eb40, (q31_t)0x419831f3, (q31_t)0x9215b2d5, + (q31_t)0x4192cca2, (q31_t)0x92127aae, + (q31_t)0x418d6729, (q31_t)0x920f42cb, (q31_t)0x41880188, (q31_t)0x920c0b2c, (q31_t)0x41829bbe, (q31_t)0x9208d3d0, + (q31_t)0x417d35cb, (q31_t)0x92059cb8, + (q31_t)0x4177cfb1, (q31_t)0x920265e4, (q31_t)0x4172696e, (q31_t)0x91ff2f54, (q31_t)0x416d0302, (q31_t)0x91fbf908, + (q31_t)0x41679c6f, (q31_t)0x91f8c300, + (q31_t)0x416235b2, (q31_t)0x91f58d3b, (q31_t)0x415ccece, (q31_t)0x91f257bb, (q31_t)0x415767c1, (q31_t)0x91ef227e, + (q31_t)0x4152008c, (q31_t)0x91ebed85, + (q31_t)0x414c992f, (q31_t)0x91e8b8d0, (q31_t)0x414731a9, (q31_t)0x91e5845f, (q31_t)0x4141c9fb, (q31_t)0x91e25032, + (q31_t)0x413c6225, (q31_t)0x91df1c49, + (q31_t)0x4136fa27, (q31_t)0x91dbe8a4, (q31_t)0x41319200, (q31_t)0x91d8b542, (q31_t)0x412c29b1, (q31_t)0x91d58225, + (q31_t)0x4126c13a, (q31_t)0x91d24f4c, + (q31_t)0x4121589b, (q31_t)0x91cf1cb6, (q31_t)0x411befd3, (q31_t)0x91cbea65, (q31_t)0x411686e4, (q31_t)0x91c8b857, + (q31_t)0x41111dcc, (q31_t)0x91c5868e, + (q31_t)0x410bb48c, (q31_t)0x91c25508, (q31_t)0x41064b24, (q31_t)0x91bf23c7, (q31_t)0x4100e194, (q31_t)0x91bbf2c9, + (q31_t)0x40fb77dc, (q31_t)0x91b8c210, + (q31_t)0x40f60dfb, (q31_t)0x91b5919a, (q31_t)0x40f0a3f3, (q31_t)0x91b26169, (q31_t)0x40eb39c3, (q31_t)0x91af317c, + (q31_t)0x40e5cf6a, (q31_t)0x91ac01d2, + (q31_t)0x40e064ea, (q31_t)0x91a8d26d, (q31_t)0x40dafa41, (q31_t)0x91a5a34c, (q31_t)0x40d58f71, (q31_t)0x91a2746f, + (q31_t)0x40d02478, (q31_t)0x919f45d6, + (q31_t)0x40cab958, (q31_t)0x919c1781, (q31_t)0x40c54e0f, (q31_t)0x9198e970, (q31_t)0x40bfe29f, (q31_t)0x9195bba3, + (q31_t)0x40ba7706, (q31_t)0x91928e1a, + (q31_t)0x40b50b46, (q31_t)0x918f60d6, (q31_t)0x40af9f5e, (q31_t)0x918c33d5, (q31_t)0x40aa334e, (q31_t)0x91890719, + (q31_t)0x40a4c716, (q31_t)0x9185daa1, + (q31_t)0x409f5ab6, (q31_t)0x9182ae6d, (q31_t)0x4099ee2e, (q31_t)0x917f827d, (q31_t)0x4094817f, (q31_t)0x917c56d1, + (q31_t)0x408f14a7, (q31_t)0x91792b6a, + (q31_t)0x4089a7a8, (q31_t)0x91760047, (q31_t)0x40843a81, (q31_t)0x9172d567, (q31_t)0x407ecd32, (q31_t)0x916faacc, + (q31_t)0x40795fbc, (q31_t)0x916c8076, + (q31_t)0x4073f21d, (q31_t)0x91695663, (q31_t)0x406e8457, (q31_t)0x91662c95, (q31_t)0x40691669, (q31_t)0x9163030b, + (q31_t)0x4063a854, (q31_t)0x915fd9c5, + (q31_t)0x405e3a16, (q31_t)0x915cb0c3, (q31_t)0x4058cbb1, (q31_t)0x91598806, (q31_t)0x40535d24, (q31_t)0x91565f8d, + (q31_t)0x404dee70, (q31_t)0x91533758, + (q31_t)0x40487f94, (q31_t)0x91500f67, (q31_t)0x40431090, (q31_t)0x914ce7bb, (q31_t)0x403da165, (q31_t)0x9149c053, + (q31_t)0x40383212, (q31_t)0x9146992f, + (q31_t)0x4032c297, (q31_t)0x91437250, (q31_t)0x402d52f5, (q31_t)0x91404bb5, (q31_t)0x4027e32b, (q31_t)0x913d255e, + (q31_t)0x4022733a, (q31_t)0x9139ff4b, + (q31_t)0x401d0321, (q31_t)0x9136d97d, (q31_t)0x401792e0, (q31_t)0x9133b3f3, (q31_t)0x40122278, (q31_t)0x91308eae, + (q31_t)0x400cb1e9, (q31_t)0x912d69ad, + (q31_t)0x40074132, (q31_t)0x912a44f0, (q31_t)0x4001d053, (q31_t)0x91272078, (q31_t)0x3ffc5f4d, (q31_t)0x9123fc44, + (q31_t)0x3ff6ee1f, (q31_t)0x9120d854, + (q31_t)0x3ff17cca, (q31_t)0x911db4a9, (q31_t)0x3fec0b4e, (q31_t)0x911a9142, (q31_t)0x3fe699aa, (q31_t)0x91176e1f, + (q31_t)0x3fe127df, (q31_t)0x91144b41, + (q31_t)0x3fdbb5ec, (q31_t)0x911128a8, (q31_t)0x3fd643d2, (q31_t)0x910e0653, (q31_t)0x3fd0d191, (q31_t)0x910ae442, + (q31_t)0x3fcb5f28, (q31_t)0x9107c276, + (q31_t)0x3fc5ec98, (q31_t)0x9104a0ee, (q31_t)0x3fc079e0, (q31_t)0x91017faa, (q31_t)0x3fbb0702, (q31_t)0x90fe5eab, + (q31_t)0x3fb593fb, (q31_t)0x90fb3df1, + (q31_t)0x3fb020ce, (q31_t)0x90f81d7b, (q31_t)0x3faaad79, (q31_t)0x90f4fd4a, (q31_t)0x3fa539fd, (q31_t)0x90f1dd5d, + (q31_t)0x3f9fc65a, (q31_t)0x90eebdb4, + (q31_t)0x3f9a5290, (q31_t)0x90eb9e50, (q31_t)0x3f94de9e, (q31_t)0x90e87f31, (q31_t)0x3f8f6a85, (q31_t)0x90e56056, + (q31_t)0x3f89f645, (q31_t)0x90e241bf, + (q31_t)0x3f8481dd, (q31_t)0x90df236e, (q31_t)0x3f7f0d4f, (q31_t)0x90dc0560, (q31_t)0x3f799899, (q31_t)0x90d8e798, + (q31_t)0x3f7423bc, (q31_t)0x90d5ca13, + (q31_t)0x3f6eaeb8, (q31_t)0x90d2acd4, (q31_t)0x3f69398d, (q31_t)0x90cf8fd9, (q31_t)0x3f63c43b, (q31_t)0x90cc7322, + (q31_t)0x3f5e4ec2, (q31_t)0x90c956b1, + (q31_t)0x3f58d921, (q31_t)0x90c63a83, (q31_t)0x3f53635a, (q31_t)0x90c31e9b, (q31_t)0x3f4ded6b, (q31_t)0x90c002f7, + (q31_t)0x3f487755, (q31_t)0x90bce797, + (q31_t)0x3f430119, (q31_t)0x90b9cc7d, (q31_t)0x3f3d8ab5, (q31_t)0x90b6b1a6, (q31_t)0x3f38142a, (q31_t)0x90b39715, + (q31_t)0x3f329d79, (q31_t)0x90b07cc8, + (q31_t)0x3f2d26a0, (q31_t)0x90ad62c0, (q31_t)0x3f27afa1, (q31_t)0x90aa48fd, (q31_t)0x3f22387a, (q31_t)0x90a72f7e, + (q31_t)0x3f1cc12c, (q31_t)0x90a41644, + (q31_t)0x3f1749b8, (q31_t)0x90a0fd4e, (q31_t)0x3f11d21d, (q31_t)0x909de49e, (q31_t)0x3f0c5a5a, (q31_t)0x909acc32, + (q31_t)0x3f06e271, (q31_t)0x9097b40a, + (q31_t)0x3f016a61, (q31_t)0x90949c28, (q31_t)0x3efbf22a, (q31_t)0x9091848a, (q31_t)0x3ef679cc, (q31_t)0x908e6d31, + (q31_t)0x3ef10148, (q31_t)0x908b561c, + (q31_t)0x3eeb889c, (q31_t)0x90883f4d, (q31_t)0x3ee60fca, (q31_t)0x908528c2, (q31_t)0x3ee096d1, (q31_t)0x9082127c, + (q31_t)0x3edb1db1, (q31_t)0x907efc7a, + (q31_t)0x3ed5a46b, (q31_t)0x907be6be, (q31_t)0x3ed02afd, (q31_t)0x9078d146, (q31_t)0x3ecab169, (q31_t)0x9075bc13, + (q31_t)0x3ec537ae, (q31_t)0x9072a725, + (q31_t)0x3ebfbdcd, (q31_t)0x906f927c, (q31_t)0x3eba43c4, (q31_t)0x906c7e17, (q31_t)0x3eb4c995, (q31_t)0x906969f8, + (q31_t)0x3eaf4f40, (q31_t)0x9066561d, + (q31_t)0x3ea9d4c3, (q31_t)0x90634287, (q31_t)0x3ea45a21, (q31_t)0x90602f35, (q31_t)0x3e9edf57, (q31_t)0x905d1c29, + (q31_t)0x3e996467, (q31_t)0x905a0962, + (q31_t)0x3e93e950, (q31_t)0x9056f6df, (q31_t)0x3e8e6e12, (q31_t)0x9053e4a1, (q31_t)0x3e88f2ae, (q31_t)0x9050d2a9, + (q31_t)0x3e837724, (q31_t)0x904dc0f5, + (q31_t)0x3e7dfb73, (q31_t)0x904aaf86, (q31_t)0x3e787f9b, (q31_t)0x90479e5c, (q31_t)0x3e73039d, (q31_t)0x90448d76, + (q31_t)0x3e6d8778, (q31_t)0x90417cd6, + (q31_t)0x3e680b2c, (q31_t)0x903e6c7b, (q31_t)0x3e628ebb, (q31_t)0x903b5c64, (q31_t)0x3e5d1222, (q31_t)0x90384c93, + (q31_t)0x3e579564, (q31_t)0x90353d06, + (q31_t)0x3e52187f, (q31_t)0x90322dbf, (q31_t)0x3e4c9b73, (q31_t)0x902f1ebc, (q31_t)0x3e471e41, (q31_t)0x902c0fff, + (q31_t)0x3e41a0e8, (q31_t)0x90290186, + (q31_t)0x3e3c2369, (q31_t)0x9025f352, (q31_t)0x3e36a5c4, (q31_t)0x9022e564, (q31_t)0x3e3127f9, (q31_t)0x901fd7ba, + (q31_t)0x3e2baa07, (q31_t)0x901cca55, + (q31_t)0x3e262bee, (q31_t)0x9019bd36, (q31_t)0x3e20adaf, (q31_t)0x9016b05b, (q31_t)0x3e1b2f4a, (q31_t)0x9013a3c5, + (q31_t)0x3e15b0bf, (q31_t)0x90109775, + (q31_t)0x3e10320d, (q31_t)0x900d8b69, (q31_t)0x3e0ab336, (q31_t)0x900a7fa3, (q31_t)0x3e053437, (q31_t)0x90077422, + (q31_t)0x3dffb513, (q31_t)0x900468e5, + (q31_t)0x3dfa35c8, (q31_t)0x90015dee, (q31_t)0x3df4b657, (q31_t)0x8ffe533c, (q31_t)0x3def36c0, (q31_t)0x8ffb48cf, + (q31_t)0x3de9b703, (q31_t)0x8ff83ea7, + (q31_t)0x3de4371f, (q31_t)0x8ff534c4, (q31_t)0x3ddeb716, (q31_t)0x8ff22b26, (q31_t)0x3dd936e6, (q31_t)0x8fef21ce, + (q31_t)0x3dd3b690, (q31_t)0x8fec18ba, + (q31_t)0x3dce3614, (q31_t)0x8fe90fec, (q31_t)0x3dc8b571, (q31_t)0x8fe60763, (q31_t)0x3dc334a9, (q31_t)0x8fe2ff1f, + (q31_t)0x3dbdb3ba, (q31_t)0x8fdff720, + (q31_t)0x3db832a6, (q31_t)0x8fdcef66, (q31_t)0x3db2b16b, (q31_t)0x8fd9e7f2, (q31_t)0x3dad300b, (q31_t)0x8fd6e0c2, + (q31_t)0x3da7ae84, (q31_t)0x8fd3d9d8, + (q31_t)0x3da22cd7, (q31_t)0x8fd0d333, (q31_t)0x3d9cab04, (q31_t)0x8fcdccd3, (q31_t)0x3d97290b, (q31_t)0x8fcac6b9, + (q31_t)0x3d91a6ed, (q31_t)0x8fc7c0e3, + (q31_t)0x3d8c24a8, (q31_t)0x8fc4bb53, (q31_t)0x3d86a23d, (q31_t)0x8fc1b608, (q31_t)0x3d811fac, (q31_t)0x8fbeb103, + (q31_t)0x3d7b9cf6, (q31_t)0x8fbbac42, + (q31_t)0x3d761a19, (q31_t)0x8fb8a7c7, (q31_t)0x3d709717, (q31_t)0x8fb5a391, (q31_t)0x3d6b13ee, (q31_t)0x8fb29fa0, + (q31_t)0x3d6590a0, (q31_t)0x8faf9bf5, + (q31_t)0x3d600d2c, (q31_t)0x8fac988f, (q31_t)0x3d5a8992, (q31_t)0x8fa9956e, (q31_t)0x3d5505d2, (q31_t)0x8fa69293, + (q31_t)0x3d4f81ec, (q31_t)0x8fa38ffc, + (q31_t)0x3d49fde1, (q31_t)0x8fa08dab, (q31_t)0x3d4479b0, (q31_t)0x8f9d8ba0, (q31_t)0x3d3ef559, (q31_t)0x8f9a89da, + (q31_t)0x3d3970dc, (q31_t)0x8f978859, + (q31_t)0x3d33ec39, (q31_t)0x8f94871d, (q31_t)0x3d2e6771, (q31_t)0x8f918627, (q31_t)0x3d28e282, (q31_t)0x8f8e8576, + (q31_t)0x3d235d6f, (q31_t)0x8f8b850a, + (q31_t)0x3d1dd835, (q31_t)0x8f8884e4, (q31_t)0x3d1852d6, (q31_t)0x8f858503, (q31_t)0x3d12cd51, (q31_t)0x8f828568, + (q31_t)0x3d0d47a6, (q31_t)0x8f7f8612, + (q31_t)0x3d07c1d6, (q31_t)0x8f7c8701, (q31_t)0x3d023be0, (q31_t)0x8f798836, (q31_t)0x3cfcb5c4, (q31_t)0x8f7689b0, + (q31_t)0x3cf72f83, (q31_t)0x8f738b70, + (q31_t)0x3cf1a91c, (q31_t)0x8f708d75, (q31_t)0x3cec2290, (q31_t)0x8f6d8fbf, (q31_t)0x3ce69bde, (q31_t)0x8f6a924f, + (q31_t)0x3ce11507, (q31_t)0x8f679525, + (q31_t)0x3cdb8e09, (q31_t)0x8f649840, (q31_t)0x3cd606e7, (q31_t)0x8f619ba0, (q31_t)0x3cd07f9f, (q31_t)0x8f5e9f46, + (q31_t)0x3ccaf831, (q31_t)0x8f5ba331, + (q31_t)0x3cc5709e, (q31_t)0x8f58a761, (q31_t)0x3cbfe8e5, (q31_t)0x8f55abd8, (q31_t)0x3cba6107, (q31_t)0x8f52b093, + (q31_t)0x3cb4d904, (q31_t)0x8f4fb595, + (q31_t)0x3caf50da, (q31_t)0x8f4cbadb, (q31_t)0x3ca9c88c, (q31_t)0x8f49c067, (q31_t)0x3ca44018, (q31_t)0x8f46c639, + (q31_t)0x3c9eb77f, (q31_t)0x8f43cc50, + (q31_t)0x3c992ec0, (q31_t)0x8f40d2ad, (q31_t)0x3c93a5dc, (q31_t)0x8f3dd950, (q31_t)0x3c8e1cd3, (q31_t)0x8f3ae038, + (q31_t)0x3c8893a4, (q31_t)0x8f37e765, + (q31_t)0x3c830a50, (q31_t)0x8f34eed8, (q31_t)0x3c7d80d6, (q31_t)0x8f31f691, (q31_t)0x3c77f737, (q31_t)0x8f2efe8f, + (q31_t)0x3c726d73, (q31_t)0x8f2c06d3, + (q31_t)0x3c6ce38a, (q31_t)0x8f290f5c, (q31_t)0x3c67597b, (q31_t)0x8f26182b, (q31_t)0x3c61cf48, (q31_t)0x8f232140, + (q31_t)0x3c5c44ee, (q31_t)0x8f202a9a, + (q31_t)0x3c56ba70, (q31_t)0x8f1d343a, (q31_t)0x3c512fcc, (q31_t)0x8f1a3e1f, (q31_t)0x3c4ba504, (q31_t)0x8f17484b, + (q31_t)0x3c461a16, (q31_t)0x8f1452bb, + (q31_t)0x3c408f03, (q31_t)0x8f115d72, (q31_t)0x3c3b03ca, (q31_t)0x8f0e686e, (q31_t)0x3c35786d, (q31_t)0x8f0b73b0, + (q31_t)0x3c2fecea, (q31_t)0x8f087f37, + (q31_t)0x3c2a6142, (q31_t)0x8f058b04, (q31_t)0x3c24d575, (q31_t)0x8f029717, (q31_t)0x3c1f4983, (q31_t)0x8effa370, + (q31_t)0x3c19bd6c, (q31_t)0x8efcb00e, + (q31_t)0x3c143130, (q31_t)0x8ef9bcf2, (q31_t)0x3c0ea4cf, (q31_t)0x8ef6ca1c, (q31_t)0x3c091849, (q31_t)0x8ef3d78b, + (q31_t)0x3c038b9e, (q31_t)0x8ef0e540, + (q31_t)0x3bfdfecd, (q31_t)0x8eedf33b, (q31_t)0x3bf871d8, (q31_t)0x8eeb017c, (q31_t)0x3bf2e4be, (q31_t)0x8ee81002, + (q31_t)0x3bed577e, (q31_t)0x8ee51ece, + (q31_t)0x3be7ca1a, (q31_t)0x8ee22de0, (q31_t)0x3be23c91, (q31_t)0x8edf3d38, (q31_t)0x3bdcaee3, (q31_t)0x8edc4cd5, + (q31_t)0x3bd72110, (q31_t)0x8ed95cb8, + (q31_t)0x3bd19318, (q31_t)0x8ed66ce1, (q31_t)0x3bcc04fb, (q31_t)0x8ed37d50, (q31_t)0x3bc676b9, (q31_t)0x8ed08e05, + (q31_t)0x3bc0e853, (q31_t)0x8ecd9eff, + (q31_t)0x3bbb59c7, (q31_t)0x8ecab040, (q31_t)0x3bb5cb17, (q31_t)0x8ec7c1c6, (q31_t)0x3bb03c42, (q31_t)0x8ec4d392, + (q31_t)0x3baaad48, (q31_t)0x8ec1e5a4, + (q31_t)0x3ba51e29, (q31_t)0x8ebef7fb, (q31_t)0x3b9f8ee5, (q31_t)0x8ebc0a99, (q31_t)0x3b99ff7d, (q31_t)0x8eb91d7c, + (q31_t)0x3b946ff0, (q31_t)0x8eb630a6, + (q31_t)0x3b8ee03e, (q31_t)0x8eb34415, (q31_t)0x3b895068, (q31_t)0x8eb057ca, (q31_t)0x3b83c06c, (q31_t)0x8ead6bc5, + (q31_t)0x3b7e304c, (q31_t)0x8eaa8006, + (q31_t)0x3b78a007, (q31_t)0x8ea7948c, (q31_t)0x3b730f9e, (q31_t)0x8ea4a959, (q31_t)0x3b6d7f10, (q31_t)0x8ea1be6c, + (q31_t)0x3b67ee5d, (q31_t)0x8e9ed3c4, + (q31_t)0x3b625d86, (q31_t)0x8e9be963, (q31_t)0x3b5ccc8a, (q31_t)0x8e98ff47, (q31_t)0x3b573b69, (q31_t)0x8e961571, + (q31_t)0x3b51aa24, (q31_t)0x8e932be2, + (q31_t)0x3b4c18ba, (q31_t)0x8e904298, (q31_t)0x3b46872c, (q31_t)0x8e8d5994, (q31_t)0x3b40f579, (q31_t)0x8e8a70d7, + (q31_t)0x3b3b63a1, (q31_t)0x8e87885f, + (q31_t)0x3b35d1a5, (q31_t)0x8e84a02d, (q31_t)0x3b303f84, (q31_t)0x8e81b841, (q31_t)0x3b2aad3f, (q31_t)0x8e7ed09b, + (q31_t)0x3b251ad6, (q31_t)0x8e7be93c, + (q31_t)0x3b1f8848, (q31_t)0x8e790222, (q31_t)0x3b19f595, (q31_t)0x8e761b4e, (q31_t)0x3b1462be, (q31_t)0x8e7334c1, + (q31_t)0x3b0ecfc3, (q31_t)0x8e704e79, + (q31_t)0x3b093ca3, (q31_t)0x8e6d6877, (q31_t)0x3b03a95e, (q31_t)0x8e6a82bc, (q31_t)0x3afe15f6, (q31_t)0x8e679d47, + (q31_t)0x3af88269, (q31_t)0x8e64b817, + (q31_t)0x3af2eeb7, (q31_t)0x8e61d32e, (q31_t)0x3aed5ae1, (q31_t)0x8e5eee8b, (q31_t)0x3ae7c6e7, (q31_t)0x8e5c0a2e, + (q31_t)0x3ae232c9, (q31_t)0x8e592617, + (q31_t)0x3adc9e86, (q31_t)0x8e564246, (q31_t)0x3ad70a1f, (q31_t)0x8e535ebb, (q31_t)0x3ad17593, (q31_t)0x8e507b76, + (q31_t)0x3acbe0e3, (q31_t)0x8e4d9878, + (q31_t)0x3ac64c0f, (q31_t)0x8e4ab5bf, (q31_t)0x3ac0b717, (q31_t)0x8e47d34d, (q31_t)0x3abb21fb, (q31_t)0x8e44f121, + (q31_t)0x3ab58cba, (q31_t)0x8e420f3b, + (q31_t)0x3aaff755, (q31_t)0x8e3f2d9b, (q31_t)0x3aaa61cc, (q31_t)0x8e3c4c41, (q31_t)0x3aa4cc1e, (q31_t)0x8e396b2e, + (q31_t)0x3a9f364d, (q31_t)0x8e368a61, + (q31_t)0x3a99a057, (q31_t)0x8e33a9da, (q31_t)0x3a940a3e, (q31_t)0x8e30c999, (q31_t)0x3a8e7400, (q31_t)0x8e2de99e, + (q31_t)0x3a88dd9d, (q31_t)0x8e2b09e9, + (q31_t)0x3a834717, (q31_t)0x8e282a7b, (q31_t)0x3a7db06d, (q31_t)0x8e254b53, (q31_t)0x3a78199f, (q31_t)0x8e226c71, + (q31_t)0x3a7282ac, (q31_t)0x8e1f8dd6, + (q31_t)0x3a6ceb96, (q31_t)0x8e1caf80, (q31_t)0x3a67545b, (q31_t)0x8e19d171, (q31_t)0x3a61bcfd, (q31_t)0x8e16f3a9, + (q31_t)0x3a5c257a, (q31_t)0x8e141626, + (q31_t)0x3a568dd4, (q31_t)0x8e1138ea, (q31_t)0x3a50f609, (q31_t)0x8e0e5bf4, (q31_t)0x3a4b5e1b, (q31_t)0x8e0b7f44, + (q31_t)0x3a45c608, (q31_t)0x8e08a2db, + (q31_t)0x3a402dd2, (q31_t)0x8e05c6b7, (q31_t)0x3a3a9577, (q31_t)0x8e02eadb, (q31_t)0x3a34fcf9, (q31_t)0x8e000f44, + (q31_t)0x3a2f6457, (q31_t)0x8dfd33f4, + (q31_t)0x3a29cb91, (q31_t)0x8dfa58ea, (q31_t)0x3a2432a7, (q31_t)0x8df77e27, (q31_t)0x3a1e9999, (q31_t)0x8df4a3a9, + (q31_t)0x3a190068, (q31_t)0x8df1c973, + (q31_t)0x3a136712, (q31_t)0x8deeef82, (q31_t)0x3a0dcd99, (q31_t)0x8dec15d8, (q31_t)0x3a0833fc, (q31_t)0x8de93c74, + (q31_t)0x3a029a3b, (q31_t)0x8de66357, + (q31_t)0x39fd0056, (q31_t)0x8de38a80, (q31_t)0x39f7664e, (q31_t)0x8de0b1ef, (q31_t)0x39f1cc21, (q31_t)0x8dddd9a5, + (q31_t)0x39ec31d1, (q31_t)0x8ddb01a1, + (q31_t)0x39e6975e, (q31_t)0x8dd829e4, (q31_t)0x39e0fcc6, (q31_t)0x8dd5526d, (q31_t)0x39db620b, (q31_t)0x8dd27b3c, + (q31_t)0x39d5c72c, (q31_t)0x8dcfa452, + (q31_t)0x39d02c2a, (q31_t)0x8dcccdaf, (q31_t)0x39ca9104, (q31_t)0x8dc9f751, (q31_t)0x39c4f5ba, (q31_t)0x8dc7213b, + (q31_t)0x39bf5a4d, (q31_t)0x8dc44b6a, + (q31_t)0x39b9bebc, (q31_t)0x8dc175e0, (q31_t)0x39b42307, (q31_t)0x8dbea09d, (q31_t)0x39ae872f, (q31_t)0x8dbbcba0, + (q31_t)0x39a8eb33, (q31_t)0x8db8f6ea, + (q31_t)0x39a34f13, (q31_t)0x8db6227a, (q31_t)0x399db2d0, (q31_t)0x8db34e50, (q31_t)0x3998166a, (q31_t)0x8db07a6d, + (q31_t)0x399279e0, (q31_t)0x8dada6d1, + (q31_t)0x398cdd32, (q31_t)0x8daad37b, (q31_t)0x39874061, (q31_t)0x8da8006c, (q31_t)0x3981a36d, (q31_t)0x8da52da3, + (q31_t)0x397c0655, (q31_t)0x8da25b21, + (q31_t)0x39766919, (q31_t)0x8d9f88e5, (q31_t)0x3970cbba, (q31_t)0x8d9cb6f0, (q31_t)0x396b2e38, (q31_t)0x8d99e541, + (q31_t)0x39659092, (q31_t)0x8d9713d9, + (q31_t)0x395ff2c9, (q31_t)0x8d9442b8, (q31_t)0x395a54dd, (q31_t)0x8d9171dd, (q31_t)0x3954b6cd, (q31_t)0x8d8ea148, + (q31_t)0x394f1899, (q31_t)0x8d8bd0fb, + (q31_t)0x39497a43, (q31_t)0x8d8900f3, (q31_t)0x3943dbc9, (q31_t)0x8d863133, (q31_t)0x393e3d2c, (q31_t)0x8d8361b9, + (q31_t)0x39389e6b, (q31_t)0x8d809286, + (q31_t)0x3932ff87, (q31_t)0x8d7dc399, (q31_t)0x392d6080, (q31_t)0x8d7af4f3, (q31_t)0x3927c155, (q31_t)0x8d782694, + (q31_t)0x39222208, (q31_t)0x8d75587b, + (q31_t)0x391c8297, (q31_t)0x8d728aa9, (q31_t)0x3916e303, (q31_t)0x8d6fbd1d, (q31_t)0x3911434b, (q31_t)0x8d6cefd9, + (q31_t)0x390ba371, (q31_t)0x8d6a22db, + (q31_t)0x39060373, (q31_t)0x8d675623, (q31_t)0x39006352, (q31_t)0x8d6489b3, (q31_t)0x38fac30e, (q31_t)0x8d61bd89, + (q31_t)0x38f522a6, (q31_t)0x8d5ef1a5, + (q31_t)0x38ef821c, (q31_t)0x8d5c2609, (q31_t)0x38e9e16e, (q31_t)0x8d595ab3, (q31_t)0x38e4409e, (q31_t)0x8d568fa4, + (q31_t)0x38de9faa, (q31_t)0x8d53c4db, + (q31_t)0x38d8fe93, (q31_t)0x8d50fa59, (q31_t)0x38d35d59, (q31_t)0x8d4e301f, (q31_t)0x38cdbbfc, (q31_t)0x8d4b662a, + (q31_t)0x38c81a7c, (q31_t)0x8d489c7d, + (q31_t)0x38c278d9, (q31_t)0x8d45d316, (q31_t)0x38bcd713, (q31_t)0x8d4309f6, (q31_t)0x38b7352a, (q31_t)0x8d40411d, + (q31_t)0x38b1931e, (q31_t)0x8d3d788b, + (q31_t)0x38abf0ef, (q31_t)0x8d3ab03f, (q31_t)0x38a64e9d, (q31_t)0x8d37e83a, (q31_t)0x38a0ac29, (q31_t)0x8d35207d, + (q31_t)0x389b0991, (q31_t)0x8d325905, + (q31_t)0x389566d6, (q31_t)0x8d2f91d5, (q31_t)0x388fc3f8, (q31_t)0x8d2ccaec, (q31_t)0x388a20f8, (q31_t)0x8d2a0449, + (q31_t)0x38847dd5, (q31_t)0x8d273ded, + (q31_t)0x387eda8e, (q31_t)0x8d2477d8, (q31_t)0x38793725, (q31_t)0x8d21b20a, (q31_t)0x38739399, (q31_t)0x8d1eec83, + (q31_t)0x386defeb, (q31_t)0x8d1c2742, + (q31_t)0x38684c19, (q31_t)0x8d196249, (q31_t)0x3862a825, (q31_t)0x8d169d96, (q31_t)0x385d040d, (q31_t)0x8d13d92a, + (q31_t)0x38575fd4, (q31_t)0x8d111505, + (q31_t)0x3851bb77, (q31_t)0x8d0e5127, (q31_t)0x384c16f7, (q31_t)0x8d0b8d90, (q31_t)0x38467255, (q31_t)0x8d08ca40, + (q31_t)0x3840cd90, (q31_t)0x8d060737, + (q31_t)0x383b28a9, (q31_t)0x8d034474, (q31_t)0x3835839f, (q31_t)0x8d0081f9, (q31_t)0x382fde72, (q31_t)0x8cfdbfc4, + (q31_t)0x382a3922, (q31_t)0x8cfafdd7, + (q31_t)0x382493b0, (q31_t)0x8cf83c30, (q31_t)0x381eee1b, (q31_t)0x8cf57ad0, (q31_t)0x38194864, (q31_t)0x8cf2b9b8, + (q31_t)0x3813a28a, (q31_t)0x8ceff8e6, + (q31_t)0x380dfc8d, (q31_t)0x8ced385b, (q31_t)0x3808566e, (q31_t)0x8cea7818, (q31_t)0x3802b02c, (q31_t)0x8ce7b81b, + (q31_t)0x37fd09c8, (q31_t)0x8ce4f865, + (q31_t)0x37f76341, (q31_t)0x8ce238f6, (q31_t)0x37f1bc97, (q31_t)0x8cdf79ce, (q31_t)0x37ec15cb, (q31_t)0x8cdcbaee, + (q31_t)0x37e66edd, (q31_t)0x8cd9fc54, + (q31_t)0x37e0c7cc, (q31_t)0x8cd73e01, (q31_t)0x37db2099, (q31_t)0x8cd47ff6, (q31_t)0x37d57943, (q31_t)0x8cd1c231, + (q31_t)0x37cfd1cb, (q31_t)0x8ccf04b3, + (q31_t)0x37ca2a30, (q31_t)0x8ccc477d, (q31_t)0x37c48273, (q31_t)0x8cc98a8e, (q31_t)0x37beda93, (q31_t)0x8cc6cde5, + (q31_t)0x37b93292, (q31_t)0x8cc41184, + (q31_t)0x37b38a6d, (q31_t)0x8cc1556a, (q31_t)0x37ade227, (q31_t)0x8cbe9996, (q31_t)0x37a839be, (q31_t)0x8cbbde0a, + (q31_t)0x37a29132, (q31_t)0x8cb922c6, + (q31_t)0x379ce885, (q31_t)0x8cb667c8, (q31_t)0x37973fb5, (q31_t)0x8cb3ad11, (q31_t)0x379196c3, (q31_t)0x8cb0f2a1, + (q31_t)0x378bedae, (q31_t)0x8cae3879, + (q31_t)0x37864477, (q31_t)0x8cab7e98, (q31_t)0x37809b1e, (q31_t)0x8ca8c4fd, (q31_t)0x377af1a3, (q31_t)0x8ca60baa, + (q31_t)0x37754806, (q31_t)0x8ca3529f, + (q31_t)0x376f9e46, (q31_t)0x8ca099da, (q31_t)0x3769f464, (q31_t)0x8c9de15c, (q31_t)0x37644a60, (q31_t)0x8c9b2926, + (q31_t)0x375ea03a, (q31_t)0x8c987137, + (q31_t)0x3758f5f2, (q31_t)0x8c95b98f, (q31_t)0x37534b87, (q31_t)0x8c93022e, (q31_t)0x374da0fa, (q31_t)0x8c904b14, + (q31_t)0x3747f64c, (q31_t)0x8c8d9442, + (q31_t)0x37424b7b, (q31_t)0x8c8addb7, (q31_t)0x373ca088, (q31_t)0x8c882773, (q31_t)0x3736f573, (q31_t)0x8c857176, + (q31_t)0x37314a3c, (q31_t)0x8c82bbc0, + (q31_t)0x372b9ee3, (q31_t)0x8c800652, (q31_t)0x3725f367, (q31_t)0x8c7d512b, (q31_t)0x372047ca, (q31_t)0x8c7a9c4b, + (q31_t)0x371a9c0b, (q31_t)0x8c77e7b3, + (q31_t)0x3714f02a, (q31_t)0x8c753362, (q31_t)0x370f4427, (q31_t)0x8c727f58, (q31_t)0x37099802, (q31_t)0x8c6fcb95, + (q31_t)0x3703ebbb, (q31_t)0x8c6d181a, + (q31_t)0x36fe3f52, (q31_t)0x8c6a64e5, (q31_t)0x36f892c7, (q31_t)0x8c67b1f9, (q31_t)0x36f2e61a, (q31_t)0x8c64ff53, + (q31_t)0x36ed394b, (q31_t)0x8c624cf5, + (q31_t)0x36e78c5b, (q31_t)0x8c5f9ade, (q31_t)0x36e1df48, (q31_t)0x8c5ce90e, (q31_t)0x36dc3214, (q31_t)0x8c5a3786, + (q31_t)0x36d684be, (q31_t)0x8c578645, + (q31_t)0x36d0d746, (q31_t)0x8c54d54c, (q31_t)0x36cb29ac, (q31_t)0x8c522499, (q31_t)0x36c57bf0, (q31_t)0x8c4f742f, + (q31_t)0x36bfce13, (q31_t)0x8c4cc40b, + (q31_t)0x36ba2014, (q31_t)0x8c4a142f, (q31_t)0x36b471f3, (q31_t)0x8c47649a, (q31_t)0x36aec3b0, (q31_t)0x8c44b54d, + (q31_t)0x36a9154c, (q31_t)0x8c420647, + (q31_t)0x36a366c6, (q31_t)0x8c3f5788, (q31_t)0x369db81e, (q31_t)0x8c3ca911, (q31_t)0x36980954, (q31_t)0x8c39fae1, + (q31_t)0x36925a69, (q31_t)0x8c374cf9, + (q31_t)0x368cab5c, (q31_t)0x8c349f58, (q31_t)0x3686fc2e, (q31_t)0x8c31f1ff, (q31_t)0x36814cde, (q31_t)0x8c2f44ed, + (q31_t)0x367b9d6c, (q31_t)0x8c2c9822, + (q31_t)0x3675edd9, (q31_t)0x8c29eb9f, (q31_t)0x36703e24, (q31_t)0x8c273f63, (q31_t)0x366a8e4d, (q31_t)0x8c24936f, + (q31_t)0x3664de55, (q31_t)0x8c21e7c2, + (q31_t)0x365f2e3b, (q31_t)0x8c1f3c5d, (q31_t)0x36597e00, (q31_t)0x8c1c913f, (q31_t)0x3653cda3, (q31_t)0x8c19e669, + (q31_t)0x364e1d25, (q31_t)0x8c173bda, + (q31_t)0x36486c86, (q31_t)0x8c149192, (q31_t)0x3642bbc4, (q31_t)0x8c11e792, (q31_t)0x363d0ae2, (q31_t)0x8c0f3dda, + (q31_t)0x363759de, (q31_t)0x8c0c9469, + (q31_t)0x3631a8b8, (q31_t)0x8c09eb40, (q31_t)0x362bf771, (q31_t)0x8c07425e, (q31_t)0x36264609, (q31_t)0x8c0499c4, + (q31_t)0x3620947f, (q31_t)0x8c01f171, + (q31_t)0x361ae2d3, (q31_t)0x8bff4966, (q31_t)0x36153107, (q31_t)0x8bfca1a3, (q31_t)0x360f7f19, (q31_t)0x8bf9fa27, + (q31_t)0x3609cd0a, (q31_t)0x8bf752f2, + (q31_t)0x36041ad9, (q31_t)0x8bf4ac05, (q31_t)0x35fe6887, (q31_t)0x8bf20560, (q31_t)0x35f8b614, (q31_t)0x8bef5f02, + (q31_t)0x35f3037f, (q31_t)0x8becb8ec, + (q31_t)0x35ed50c9, (q31_t)0x8bea131e, (q31_t)0x35e79df2, (q31_t)0x8be76d97, (q31_t)0x35e1eafa, (q31_t)0x8be4c857, + (q31_t)0x35dc37e0, (q31_t)0x8be22360, + (q31_t)0x35d684a6, (q31_t)0x8bdf7eb0, (q31_t)0x35d0d14a, (q31_t)0x8bdcda47, (q31_t)0x35cb1dcc, (q31_t)0x8bda3626, + (q31_t)0x35c56a2e, (q31_t)0x8bd7924d, + (q31_t)0x35bfb66e, (q31_t)0x8bd4eebc, (q31_t)0x35ba028e, (q31_t)0x8bd24b72, (q31_t)0x35b44e8c, (q31_t)0x8bcfa870, + (q31_t)0x35ae9a69, (q31_t)0x8bcd05b5, + (q31_t)0x35a8e625, (q31_t)0x8bca6343, (q31_t)0x35a331c0, (q31_t)0x8bc7c117, (q31_t)0x359d7d39, (q31_t)0x8bc51f34, + (q31_t)0x3597c892, (q31_t)0x8bc27d98, + (q31_t)0x359213c9, (q31_t)0x8bbfdc44, (q31_t)0x358c5ee0, (q31_t)0x8bbd3b38, (q31_t)0x3586a9d5, (q31_t)0x8bba9a73, + (q31_t)0x3580f4aa, (q31_t)0x8bb7f9f6, + (q31_t)0x357b3f5d, (q31_t)0x8bb559c1, (q31_t)0x357589f0, (q31_t)0x8bb2b9d4, (q31_t)0x356fd461, (q31_t)0x8bb01a2e, + (q31_t)0x356a1eb2, (q31_t)0x8bad7ad0, + (q31_t)0x356468e2, (q31_t)0x8baadbba, (q31_t)0x355eb2f0, (q31_t)0x8ba83cec, (q31_t)0x3558fcde, (q31_t)0x8ba59e65, + (q31_t)0x355346ab, (q31_t)0x8ba30026, + (q31_t)0x354d9057, (q31_t)0x8ba0622f, (q31_t)0x3547d9e2, (q31_t)0x8b9dc480, (q31_t)0x3542234c, (q31_t)0x8b9b2718, + (q31_t)0x353c6c95, (q31_t)0x8b9889f8, + (q31_t)0x3536b5be, (q31_t)0x8b95ed21, (q31_t)0x3530fec6, (q31_t)0x8b935090, (q31_t)0x352b47ad, (q31_t)0x8b90b448, + (q31_t)0x35259073, (q31_t)0x8b8e1848, + (q31_t)0x351fd918, (q31_t)0x8b8b7c8f, (q31_t)0x351a219c, (q31_t)0x8b88e11e, (q31_t)0x35146a00, (q31_t)0x8b8645f5, + (q31_t)0x350eb243, (q31_t)0x8b83ab14, + (q31_t)0x3508fa66, (q31_t)0x8b81107b, (q31_t)0x35034267, (q31_t)0x8b7e7629, (q31_t)0x34fd8a48, (q31_t)0x8b7bdc20, + (q31_t)0x34f7d208, (q31_t)0x8b79425e, + (q31_t)0x34f219a8, (q31_t)0x8b76a8e4, (q31_t)0x34ec6127, (q31_t)0x8b740fb3, (q31_t)0x34e6a885, (q31_t)0x8b7176c8, + (q31_t)0x34e0efc2, (q31_t)0x8b6ede26, + (q31_t)0x34db36df, (q31_t)0x8b6c45cc, (q31_t)0x34d57ddc, (q31_t)0x8b69adba, (q31_t)0x34cfc4b7, (q31_t)0x8b6715ef, + (q31_t)0x34ca0b73, (q31_t)0x8b647e6d, + (q31_t)0x34c4520d, (q31_t)0x8b61e733, (q31_t)0x34be9887, (q31_t)0x8b5f5040, (q31_t)0x34b8dee1, (q31_t)0x8b5cb995, + (q31_t)0x34b3251a, (q31_t)0x8b5a2333, + (q31_t)0x34ad6b32, (q31_t)0x8b578d18, (q31_t)0x34a7b12a, (q31_t)0x8b54f745, (q31_t)0x34a1f702, (q31_t)0x8b5261ba, + (q31_t)0x349c3cb9, (q31_t)0x8b4fcc77, + (q31_t)0x34968250, (q31_t)0x8b4d377c, (q31_t)0x3490c7c6, (q31_t)0x8b4aa2ca, (q31_t)0x348b0d1c, (q31_t)0x8b480e5f, + (q31_t)0x34855251, (q31_t)0x8b457a3c, + (q31_t)0x347f9766, (q31_t)0x8b42e661, (q31_t)0x3479dc5b, (q31_t)0x8b4052ce, (q31_t)0x3474212f, (q31_t)0x8b3dbf83, + (q31_t)0x346e65e3, (q31_t)0x8b3b2c80, + (q31_t)0x3468aa76, (q31_t)0x8b3899c6, (q31_t)0x3462eee9, (q31_t)0x8b360753, (q31_t)0x345d333c, (q31_t)0x8b337528, + (q31_t)0x3457776f, (q31_t)0x8b30e345, + (q31_t)0x3451bb81, (q31_t)0x8b2e51ab, (q31_t)0x344bff73, (q31_t)0x8b2bc058, (q31_t)0x34464345, (q31_t)0x8b292f4e, + (q31_t)0x344086f6, (q31_t)0x8b269e8b, + (q31_t)0x343aca87, (q31_t)0x8b240e11, (q31_t)0x34350df8, (q31_t)0x8b217ddf, (q31_t)0x342f5149, (q31_t)0x8b1eedf4, + (q31_t)0x3429947a, (q31_t)0x8b1c5e52, + (q31_t)0x3423d78a, (q31_t)0x8b19cef8, (q31_t)0x341e1a7b, (q31_t)0x8b173fe6, (q31_t)0x34185d4b, (q31_t)0x8b14b11d, + (q31_t)0x34129ffb, (q31_t)0x8b12229b, + (q31_t)0x340ce28b, (q31_t)0x8b0f9462, (q31_t)0x340724fb, (q31_t)0x8b0d0670, (q31_t)0x3401674a, (q31_t)0x8b0a78c7, + (q31_t)0x33fba97a, (q31_t)0x8b07eb66, + (q31_t)0x33f5eb89, (q31_t)0x8b055e4d, (q31_t)0x33f02d79, (q31_t)0x8b02d17c, (q31_t)0x33ea6f48, (q31_t)0x8b0044f3, + (q31_t)0x33e4b0f8, (q31_t)0x8afdb8b3, + (q31_t)0x33def287, (q31_t)0x8afb2cbb, (q31_t)0x33d933f7, (q31_t)0x8af8a10b, (q31_t)0x33d37546, (q31_t)0x8af615a3, + (q31_t)0x33cdb676, (q31_t)0x8af38a83, + (q31_t)0x33c7f785, (q31_t)0x8af0ffac, (q31_t)0x33c23875, (q31_t)0x8aee751c, (q31_t)0x33bc7944, (q31_t)0x8aebead5, + (q31_t)0x33b6b9f4, (q31_t)0x8ae960d6, + (q31_t)0x33b0fa84, (q31_t)0x8ae6d720, (q31_t)0x33ab3af4, (q31_t)0x8ae44db1, (q31_t)0x33a57b44, (q31_t)0x8ae1c48b, + (q31_t)0x339fbb74, (q31_t)0x8adf3bad, + (q31_t)0x3399fb85, (q31_t)0x8adcb318, (q31_t)0x33943b75, (q31_t)0x8ada2aca, (q31_t)0x338e7b46, (q31_t)0x8ad7a2c5, + (q31_t)0x3388baf7, (q31_t)0x8ad51b08, + (q31_t)0x3382fa88, (q31_t)0x8ad29394, (q31_t)0x337d39f9, (q31_t)0x8ad00c67, (q31_t)0x3377794b, (q31_t)0x8acd8583, + (q31_t)0x3371b87d, (q31_t)0x8acafee8, + (q31_t)0x336bf78f, (q31_t)0x8ac87894, (q31_t)0x33663682, (q31_t)0x8ac5f289, (q31_t)0x33607554, (q31_t)0x8ac36cc6, + (q31_t)0x335ab407, (q31_t)0x8ac0e74c, + (q31_t)0x3354f29b, (q31_t)0x8abe6219, (q31_t)0x334f310e, (q31_t)0x8abbdd30, (q31_t)0x33496f62, (q31_t)0x8ab9588e, + (q31_t)0x3343ad97, (q31_t)0x8ab6d435, + (q31_t)0x333debab, (q31_t)0x8ab45024, (q31_t)0x333829a1, (q31_t)0x8ab1cc5c, (q31_t)0x33326776, (q31_t)0x8aaf48db, + (q31_t)0x332ca52c, (q31_t)0x8aacc5a4, + (q31_t)0x3326e2c3, (q31_t)0x8aaa42b4, (q31_t)0x33212039, (q31_t)0x8aa7c00d, (q31_t)0x331b5d91, (q31_t)0x8aa53daf, + (q31_t)0x33159ac8, (q31_t)0x8aa2bb99, + (q31_t)0x330fd7e1, (q31_t)0x8aa039cb, (q31_t)0x330a14da, (q31_t)0x8a9db845, (q31_t)0x330451b3, (q31_t)0x8a9b3708, + (q31_t)0x32fe8e6d, (q31_t)0x8a98b614, + (q31_t)0x32f8cb07, (q31_t)0x8a963567, (q31_t)0x32f30782, (q31_t)0x8a93b504, (q31_t)0x32ed43de, (q31_t)0x8a9134e8, + (q31_t)0x32e7801a, (q31_t)0x8a8eb516, + (q31_t)0x32e1bc36, (q31_t)0x8a8c358b, (q31_t)0x32dbf834, (q31_t)0x8a89b649, (q31_t)0x32d63412, (q31_t)0x8a873750, + (q31_t)0x32d06fd0, (q31_t)0x8a84b89e, + (q31_t)0x32caab6f, (q31_t)0x8a823a36, (q31_t)0x32c4e6ef, (q31_t)0x8a7fbc16, (q31_t)0x32bf2250, (q31_t)0x8a7d3e3e, + (q31_t)0x32b95d91, (q31_t)0x8a7ac0af, + (q31_t)0x32b398b3, (q31_t)0x8a784368, (q31_t)0x32add3b6, (q31_t)0x8a75c66a, (q31_t)0x32a80e99, (q31_t)0x8a7349b4, + (q31_t)0x32a2495d, (q31_t)0x8a70cd47, + (q31_t)0x329c8402, (q31_t)0x8a6e5123, (q31_t)0x3296be88, (q31_t)0x8a6bd547, (q31_t)0x3290f8ef, (q31_t)0x8a6959b3, + (q31_t)0x328b3336, (q31_t)0x8a66de68, + (q31_t)0x32856d5e, (q31_t)0x8a646365, (q31_t)0x327fa767, (q31_t)0x8a61e8ab, (q31_t)0x3279e151, (q31_t)0x8a5f6e3a, + (q31_t)0x32741b1c, (q31_t)0x8a5cf411, + (q31_t)0x326e54c7, (q31_t)0x8a5a7a31, (q31_t)0x32688e54, (q31_t)0x8a580099, (q31_t)0x3262c7c1, (q31_t)0x8a55874a, + (q31_t)0x325d0110, (q31_t)0x8a530e43, + (q31_t)0x32573a3f, (q31_t)0x8a509585, (q31_t)0x3251734f, (q31_t)0x8a4e1d10, (q31_t)0x324bac40, (q31_t)0x8a4ba4e3, + (q31_t)0x3245e512, (q31_t)0x8a492cff, + (q31_t)0x32401dc6, (q31_t)0x8a46b564, (q31_t)0x323a565a, (q31_t)0x8a443e11, (q31_t)0x32348ecf, (q31_t)0x8a41c706, + (q31_t)0x322ec725, (q31_t)0x8a3f5045, + (q31_t)0x3228ff5c, (q31_t)0x8a3cd9cc, (q31_t)0x32233775, (q31_t)0x8a3a639b, (q31_t)0x321d6f6e, (q31_t)0x8a37edb3, + (q31_t)0x3217a748, (q31_t)0x8a357814, + (q31_t)0x3211df04, (q31_t)0x8a3302be, (q31_t)0x320c16a1, (q31_t)0x8a308db0, (q31_t)0x32064e1e, (q31_t)0x8a2e18eb, + (q31_t)0x3200857d, (q31_t)0x8a2ba46e, + (q31_t)0x31fabcbd, (q31_t)0x8a29303b, (q31_t)0x31f4f3df, (q31_t)0x8a26bc50, (q31_t)0x31ef2ae1, (q31_t)0x8a2448ad, + (q31_t)0x31e961c5, (q31_t)0x8a21d554, + (q31_t)0x31e39889, (q31_t)0x8a1f6243, (q31_t)0x31ddcf30, (q31_t)0x8a1cef7a, (q31_t)0x31d805b7, (q31_t)0x8a1a7cfb, + (q31_t)0x31d23c1f, (q31_t)0x8a180ac4, + (q31_t)0x31cc7269, (q31_t)0x8a1598d6, (q31_t)0x31c6a894, (q31_t)0x8a132731, (q31_t)0x31c0dea1, (q31_t)0x8a10b5d4, + (q31_t)0x31bb148f, (q31_t)0x8a0e44c0, + (q31_t)0x31b54a5e, (q31_t)0x8a0bd3f5, (q31_t)0x31af800e, (q31_t)0x8a096373, (q31_t)0x31a9b5a0, (q31_t)0x8a06f339, + (q31_t)0x31a3eb13, (q31_t)0x8a048348, + (q31_t)0x319e2067, (q31_t)0x8a0213a0, (q31_t)0x3198559d, (q31_t)0x89ffa441, (q31_t)0x31928ab4, (q31_t)0x89fd352b, + (q31_t)0x318cbfad, (q31_t)0x89fac65d, + (q31_t)0x3186f487, (q31_t)0x89f857d8, (q31_t)0x31812943, (q31_t)0x89f5e99c, (q31_t)0x317b5de0, (q31_t)0x89f37ba9, + (q31_t)0x3175925e, (q31_t)0x89f10dff, + (q31_t)0x316fc6be, (q31_t)0x89eea09d, (q31_t)0x3169fb00, (q31_t)0x89ec3384, (q31_t)0x31642f23, (q31_t)0x89e9c6b4, + (q31_t)0x315e6328, (q31_t)0x89e75a2d, + (q31_t)0x3158970e, (q31_t)0x89e4edef, (q31_t)0x3152cad5, (q31_t)0x89e281fa, (q31_t)0x314cfe7f, (q31_t)0x89e0164d, + (q31_t)0x31473209, (q31_t)0x89ddaae9, + (q31_t)0x31416576, (q31_t)0x89db3fcf, (q31_t)0x313b98c4, (q31_t)0x89d8d4fd, (q31_t)0x3135cbf4, (q31_t)0x89d66a74, + (q31_t)0x312fff05, (q31_t)0x89d40033, + (q31_t)0x312a31f8, (q31_t)0x89d1963c, (q31_t)0x312464cd, (q31_t)0x89cf2c8e, (q31_t)0x311e9783, (q31_t)0x89ccc328, + (q31_t)0x3118ca1b, (q31_t)0x89ca5a0c, + (q31_t)0x3112fc95, (q31_t)0x89c7f138, (q31_t)0x310d2ef0, (q31_t)0x89c588ae, (q31_t)0x3107612e, (q31_t)0x89c3206c, + (q31_t)0x3101934d, (q31_t)0x89c0b873, + (q31_t)0x30fbc54d, (q31_t)0x89be50c3, (q31_t)0x30f5f730, (q31_t)0x89bbe95c, (q31_t)0x30f028f4, (q31_t)0x89b9823e, + (q31_t)0x30ea5a9a, (q31_t)0x89b71b69, + (q31_t)0x30e48c22, (q31_t)0x89b4b4dd, (q31_t)0x30debd8c, (q31_t)0x89b24e9a, (q31_t)0x30d8eed8, (q31_t)0x89afe8a0, + (q31_t)0x30d32006, (q31_t)0x89ad82ef, + (q31_t)0x30cd5115, (q31_t)0x89ab1d87, (q31_t)0x30c78206, (q31_t)0x89a8b868, (q31_t)0x30c1b2da, (q31_t)0x89a65391, + (q31_t)0x30bbe38f, (q31_t)0x89a3ef04, + (q31_t)0x30b61426, (q31_t)0x89a18ac0, (q31_t)0x30b0449f, (q31_t)0x899f26c5, (q31_t)0x30aa74fa, (q31_t)0x899cc313, + (q31_t)0x30a4a537, (q31_t)0x899a5faa, + (q31_t)0x309ed556, (q31_t)0x8997fc8a, (q31_t)0x30990557, (q31_t)0x899599b3, (q31_t)0x3093353a, (q31_t)0x89933725, + (q31_t)0x308d64ff, (q31_t)0x8990d4e0, + (q31_t)0x308794a6, (q31_t)0x898e72e4, (q31_t)0x3081c42f, (q31_t)0x898c1131, (q31_t)0x307bf39b, (q31_t)0x8989afc8, + (q31_t)0x307622e8, (q31_t)0x89874ea7, + (q31_t)0x30705217, (q31_t)0x8984edcf, (q31_t)0x306a8129, (q31_t)0x89828d41, (q31_t)0x3064b01d, (q31_t)0x89802cfc, + (q31_t)0x305edef3, (q31_t)0x897dccff, + (q31_t)0x30590dab, (q31_t)0x897b6d4c, (q31_t)0x30533c45, (q31_t)0x89790de2, (q31_t)0x304d6ac1, (q31_t)0x8976aec1, + (q31_t)0x30479920, (q31_t)0x89744fe9, + (q31_t)0x3041c761, (q31_t)0x8971f15a, (q31_t)0x303bf584, (q31_t)0x896f9315, (q31_t)0x30362389, (q31_t)0x896d3518, + (q31_t)0x30305171, (q31_t)0x896ad765, + (q31_t)0x302a7f3a, (q31_t)0x896879fb, (q31_t)0x3024ace6, (q31_t)0x89661cda, (q31_t)0x301eda75, (q31_t)0x8963c002, + (q31_t)0x301907e6, (q31_t)0x89616373, + (q31_t)0x30133539, (q31_t)0x895f072e, (q31_t)0x300d626e, (q31_t)0x895cab31, (q31_t)0x30078f86, (q31_t)0x895a4f7e, + (q31_t)0x3001bc80, (q31_t)0x8957f414, + (q31_t)0x2ffbe95d, (q31_t)0x895598f3, (q31_t)0x2ff6161c, (q31_t)0x89533e1c, (q31_t)0x2ff042bd, (q31_t)0x8950e38e, + (q31_t)0x2fea6f41, (q31_t)0x894e8948, + (q31_t)0x2fe49ba7, (q31_t)0x894c2f4c, (q31_t)0x2fdec7f0, (q31_t)0x8949d59a, (q31_t)0x2fd8f41b, (q31_t)0x89477c30, + (q31_t)0x2fd32028, (q31_t)0x89452310, + (q31_t)0x2fcd4c19, (q31_t)0x8942ca39, (q31_t)0x2fc777eb, (q31_t)0x894071ab, (q31_t)0x2fc1a3a0, (q31_t)0x893e1967, + (q31_t)0x2fbbcf38, (q31_t)0x893bc16b, + (q31_t)0x2fb5fab2, (q31_t)0x893969b9, (q31_t)0x2fb0260f, (q31_t)0x89371250, (q31_t)0x2faa514f, (q31_t)0x8934bb31, + (q31_t)0x2fa47c71, (q31_t)0x8932645b, + (q31_t)0x2f9ea775, (q31_t)0x89300dce, (q31_t)0x2f98d25d, (q31_t)0x892db78a, (q31_t)0x2f92fd26, (q31_t)0x892b6190, + (q31_t)0x2f8d27d3, (q31_t)0x89290bdf, + (q31_t)0x2f875262, (q31_t)0x8926b677, (q31_t)0x2f817cd4, (q31_t)0x89246159, (q31_t)0x2f7ba729, (q31_t)0x89220c84, + (q31_t)0x2f75d160, (q31_t)0x891fb7f8, + (q31_t)0x2f6ffb7a, (q31_t)0x891d63b5, (q31_t)0x2f6a2577, (q31_t)0x891b0fbc, (q31_t)0x2f644f56, (q31_t)0x8918bc0c, + (q31_t)0x2f5e7919, (q31_t)0x891668a6, + (q31_t)0x2f58a2be, (q31_t)0x89141589, (q31_t)0x2f52cc46, (q31_t)0x8911c2b5, (q31_t)0x2f4cf5b0, (q31_t)0x890f702b, + (q31_t)0x2f471efe, (q31_t)0x890d1dea, + (q31_t)0x2f41482e, (q31_t)0x890acbf2, (q31_t)0x2f3b7141, (q31_t)0x89087a44, (q31_t)0x2f359a37, (q31_t)0x890628df, + (q31_t)0x2f2fc310, (q31_t)0x8903d7c4, + (q31_t)0x2f29ebcc, (q31_t)0x890186f2, (q31_t)0x2f24146b, (q31_t)0x88ff3669, (q31_t)0x2f1e3ced, (q31_t)0x88fce62a, + (q31_t)0x2f186551, (q31_t)0x88fa9634, + (q31_t)0x2f128d99, (q31_t)0x88f84687, (q31_t)0x2f0cb5c3, (q31_t)0x88f5f724, (q31_t)0x2f06ddd1, (q31_t)0x88f3a80b, + (q31_t)0x2f0105c1, (q31_t)0x88f1593b, + (q31_t)0x2efb2d95, (q31_t)0x88ef0ab4, (q31_t)0x2ef5554b, (q31_t)0x88ecbc77, (q31_t)0x2eef7ce5, (q31_t)0x88ea6e83, + (q31_t)0x2ee9a461, (q31_t)0x88e820d9, + (q31_t)0x2ee3cbc1, (q31_t)0x88e5d378, (q31_t)0x2eddf304, (q31_t)0x88e38660, (q31_t)0x2ed81a29, (q31_t)0x88e13992, + (q31_t)0x2ed24132, (q31_t)0x88deed0e, + (q31_t)0x2ecc681e, (q31_t)0x88dca0d3, (q31_t)0x2ec68eed, (q31_t)0x88da54e1, (q31_t)0x2ec0b5a0, (q31_t)0x88d8093a, + (q31_t)0x2ebadc35, (q31_t)0x88d5bddb, + (q31_t)0x2eb502ae, (q31_t)0x88d372c6, (q31_t)0x2eaf290a, (q31_t)0x88d127fb, (q31_t)0x2ea94f49, (q31_t)0x88cedd79, + (q31_t)0x2ea3756b, (q31_t)0x88cc9340, + (q31_t)0x2e9d9b70, (q31_t)0x88ca4951, (q31_t)0x2e97c159, (q31_t)0x88c7ffac, (q31_t)0x2e91e725, (q31_t)0x88c5b650, + (q31_t)0x2e8c0cd4, (q31_t)0x88c36d3e, + (q31_t)0x2e863267, (q31_t)0x88c12475, (q31_t)0x2e8057dd, (q31_t)0x88bedbf6, (q31_t)0x2e7a7d36, (q31_t)0x88bc93c0, + (q31_t)0x2e74a272, (q31_t)0x88ba4bd4, + (q31_t)0x2e6ec792, (q31_t)0x88b80432, (q31_t)0x2e68ec95, (q31_t)0x88b5bcd9, (q31_t)0x2e63117c, (q31_t)0x88b375ca, + (q31_t)0x2e5d3646, (q31_t)0x88b12f04, + (q31_t)0x2e575af3, (q31_t)0x88aee888, (q31_t)0x2e517f84, (q31_t)0x88aca255, (q31_t)0x2e4ba3f8, (q31_t)0x88aa5c6c, + (q31_t)0x2e45c850, (q31_t)0x88a816cd, + (q31_t)0x2e3fec8b, (q31_t)0x88a5d177, (q31_t)0x2e3a10aa, (q31_t)0x88a38c6b, (q31_t)0x2e3434ac, (q31_t)0x88a147a9, + (q31_t)0x2e2e5891, (q31_t)0x889f0330, + (q31_t)0x2e287c5a, (q31_t)0x889cbf01, (q31_t)0x2e22a007, (q31_t)0x889a7b1b, (q31_t)0x2e1cc397, (q31_t)0x88983780, + (q31_t)0x2e16e70b, (q31_t)0x8895f42d, + (q31_t)0x2e110a62, (q31_t)0x8893b125, (q31_t)0x2e0b2d9d, (q31_t)0x88916e66, (q31_t)0x2e0550bb, (q31_t)0x888f2bf1, + (q31_t)0x2dff73bd, (q31_t)0x888ce9c5, + (q31_t)0x2df996a3, (q31_t)0x888aa7e3, (q31_t)0x2df3b96c, (q31_t)0x8888664b, (q31_t)0x2deddc19, (q31_t)0x888624fd, + (q31_t)0x2de7feaa, (q31_t)0x8883e3f8, + (q31_t)0x2de2211e, (q31_t)0x8881a33d, (q31_t)0x2ddc4376, (q31_t)0x887f62cb, (q31_t)0x2dd665b2, (q31_t)0x887d22a4, + (q31_t)0x2dd087d1, (q31_t)0x887ae2c6, + (q31_t)0x2dcaa9d5, (q31_t)0x8878a332, (q31_t)0x2dc4cbbc, (q31_t)0x887663e7, (q31_t)0x2dbeed86, (q31_t)0x887424e7, + (q31_t)0x2db90f35, (q31_t)0x8871e630, + (q31_t)0x2db330c7, (q31_t)0x886fa7c2, (q31_t)0x2dad523d, (q31_t)0x886d699f, (q31_t)0x2da77397, (q31_t)0x886b2bc5, + (q31_t)0x2da194d5, (q31_t)0x8868ee35, + (q31_t)0x2d9bb5f6, (q31_t)0x8866b0ef, (q31_t)0x2d95d6fc, (q31_t)0x886473f2, (q31_t)0x2d8ff7e5, (q31_t)0x88623740, + (q31_t)0x2d8a18b3, (q31_t)0x885ffad7, + (q31_t)0x2d843964, (q31_t)0x885dbeb8, (q31_t)0x2d7e59f9, (q31_t)0x885b82e3, (q31_t)0x2d787a72, (q31_t)0x88594757, + (q31_t)0x2d729acf, (q31_t)0x88570c16, + (q31_t)0x2d6cbb10, (q31_t)0x8854d11e, (q31_t)0x2d66db35, (q31_t)0x88529670, (q31_t)0x2d60fb3e, (q31_t)0x88505c0b, + (q31_t)0x2d5b1b2b, (q31_t)0x884e21f1, + (q31_t)0x2d553afc, (q31_t)0x884be821, (q31_t)0x2d4f5ab1, (q31_t)0x8849ae9a, (q31_t)0x2d497a4a, (q31_t)0x8847755d, + (q31_t)0x2d4399c7, (q31_t)0x88453c6a, + (q31_t)0x2d3db928, (q31_t)0x884303c1, (q31_t)0x2d37d86d, (q31_t)0x8840cb61, (q31_t)0x2d31f797, (q31_t)0x883e934c, + (q31_t)0x2d2c16a4, (q31_t)0x883c5b81, + (q31_t)0x2d263596, (q31_t)0x883a23ff, (q31_t)0x2d20546b, (q31_t)0x8837ecc7, (q31_t)0x2d1a7325, (q31_t)0x8835b5d9, + (q31_t)0x2d1491c4, (q31_t)0x88337f35, + (q31_t)0x2d0eb046, (q31_t)0x883148db, (q31_t)0x2d08ceac, (q31_t)0x882f12cb, (q31_t)0x2d02ecf7, (q31_t)0x882cdd04, + (q31_t)0x2cfd0b26, (q31_t)0x882aa788, + (q31_t)0x2cf72939, (q31_t)0x88287256, (q31_t)0x2cf14731, (q31_t)0x88263d6d, (q31_t)0x2ceb650d, (q31_t)0x882408ce, + (q31_t)0x2ce582cd, (q31_t)0x8821d47a, + (q31_t)0x2cdfa071, (q31_t)0x881fa06f, (q31_t)0x2cd9bdfa, (q31_t)0x881d6cae, (q31_t)0x2cd3db67, (q31_t)0x881b3937, + (q31_t)0x2ccdf8b8, (q31_t)0x8819060a, + (q31_t)0x2cc815ee, (q31_t)0x8816d327, (q31_t)0x2cc23308, (q31_t)0x8814a08f, (q31_t)0x2cbc5006, (q31_t)0x88126e40, + (q31_t)0x2cb66ce9, (q31_t)0x88103c3b, + (q31_t)0x2cb089b1, (q31_t)0x880e0a7f, (q31_t)0x2caaa65c, (q31_t)0x880bd90e, (q31_t)0x2ca4c2ed, (q31_t)0x8809a7e7, + (q31_t)0x2c9edf61, (q31_t)0x8807770a, + (q31_t)0x2c98fbba, (q31_t)0x88054677, (q31_t)0x2c9317f8, (q31_t)0x8803162e, (q31_t)0x2c8d341a, (q31_t)0x8800e62f, + (q31_t)0x2c875021, (q31_t)0x87feb67a, + (q31_t)0x2c816c0c, (q31_t)0x87fc870f, (q31_t)0x2c7b87dc, (q31_t)0x87fa57ee, (q31_t)0x2c75a390, (q31_t)0x87f82917, + (q31_t)0x2c6fbf29, (q31_t)0x87f5fa8b, + (q31_t)0x2c69daa6, (q31_t)0x87f3cc48, (q31_t)0x2c63f609, (q31_t)0x87f19e4f, (q31_t)0x2c5e114f, (q31_t)0x87ef70a0, + (q31_t)0x2c582c7b, (q31_t)0x87ed433c, + (q31_t)0x2c52478a, (q31_t)0x87eb1621, (q31_t)0x2c4c627f, (q31_t)0x87e8e950, (q31_t)0x2c467d58, (q31_t)0x87e6bcca, + (q31_t)0x2c409816, (q31_t)0x87e4908e, + (q31_t)0x2c3ab2b9, (q31_t)0x87e2649b, (q31_t)0x2c34cd40, (q31_t)0x87e038f3, (q31_t)0x2c2ee7ad, (q31_t)0x87de0d95, + (q31_t)0x2c2901fd, (q31_t)0x87dbe281, + (q31_t)0x2c231c33, (q31_t)0x87d9b7b7, (q31_t)0x2c1d364e, (q31_t)0x87d78d38, (q31_t)0x2c17504d, (q31_t)0x87d56302, + (q31_t)0x2c116a31, (q31_t)0x87d33916, + (q31_t)0x2c0b83fa, (q31_t)0x87d10f75, (q31_t)0x2c059da7, (q31_t)0x87cee61e, (q31_t)0x2bffb73a, (q31_t)0x87ccbd11, + (q31_t)0x2bf9d0b1, (q31_t)0x87ca944e, + (q31_t)0x2bf3ea0d, (q31_t)0x87c86bd5, (q31_t)0x2bee034e, (q31_t)0x87c643a6, (q31_t)0x2be81c74, (q31_t)0x87c41bc2, + (q31_t)0x2be2357f, (q31_t)0x87c1f427, + (q31_t)0x2bdc4e6f, (q31_t)0x87bfccd7, (q31_t)0x2bd66744, (q31_t)0x87bda5d1, (q31_t)0x2bd07ffe, (q31_t)0x87bb7f16, + (q31_t)0x2bca989d, (q31_t)0x87b958a4, + (q31_t)0x2bc4b120, (q31_t)0x87b7327d, (q31_t)0x2bbec989, (q31_t)0x87b50c9f, (q31_t)0x2bb8e1d7, (q31_t)0x87b2e70c, + (q31_t)0x2bb2fa0a, (q31_t)0x87b0c1c4, + (q31_t)0x2bad1221, (q31_t)0x87ae9cc5, (q31_t)0x2ba72a1e, (q31_t)0x87ac7811, (q31_t)0x2ba14200, (q31_t)0x87aa53a6, + (q31_t)0x2b9b59c7, (q31_t)0x87a82f87, + (q31_t)0x2b957173, (q31_t)0x87a60bb1, (q31_t)0x2b8f8905, (q31_t)0x87a3e825, (q31_t)0x2b89a07b, (q31_t)0x87a1c4e4, + (q31_t)0x2b83b7d7, (q31_t)0x879fa1ed, + (q31_t)0x2b7dcf17, (q31_t)0x879d7f41, (q31_t)0x2b77e63d, (q31_t)0x879b5cde, (q31_t)0x2b71fd48, (q31_t)0x87993ac6, + (q31_t)0x2b6c1438, (q31_t)0x879718f8, + (q31_t)0x2b662b0e, (q31_t)0x8794f774, (q31_t)0x2b6041c9, (q31_t)0x8792d63b, (q31_t)0x2b5a5868, (q31_t)0x8790b54c, + (q31_t)0x2b546eee, (q31_t)0x878e94a7, + (q31_t)0x2b4e8558, (q31_t)0x878c744d, (q31_t)0x2b489ba8, (q31_t)0x878a543d, (q31_t)0x2b42b1dd, (q31_t)0x87883477, + (q31_t)0x2b3cc7f7, (q31_t)0x878614fb, + (q31_t)0x2b36ddf7, (q31_t)0x8783f5ca, (q31_t)0x2b30f3dc, (q31_t)0x8781d6e3, (q31_t)0x2b2b09a6, (q31_t)0x877fb846, + (q31_t)0x2b251f56, (q31_t)0x877d99f4, + (q31_t)0x2b1f34eb, (q31_t)0x877b7bec, (q31_t)0x2b194a66, (q31_t)0x87795e2f, (q31_t)0x2b135fc6, (q31_t)0x877740bb, + (q31_t)0x2b0d750b, (q31_t)0x87752392, + (q31_t)0x2b078a36, (q31_t)0x877306b4, (q31_t)0x2b019f46, (q31_t)0x8770ea20, (q31_t)0x2afbb43c, (q31_t)0x876ecdd6, + (q31_t)0x2af5c917, (q31_t)0x876cb1d6, + (q31_t)0x2aefddd8, (q31_t)0x876a9621, (q31_t)0x2ae9f27e, (q31_t)0x87687ab7, (q31_t)0x2ae4070a, (q31_t)0x87665f96, + (q31_t)0x2ade1b7c, (q31_t)0x876444c1, + (q31_t)0x2ad82fd2, (q31_t)0x87622a35, (q31_t)0x2ad2440f, (q31_t)0x87600ff4, (q31_t)0x2acc5831, (q31_t)0x875df5fd, + (q31_t)0x2ac66c39, (q31_t)0x875bdc51, + (q31_t)0x2ac08026, (q31_t)0x8759c2ef, (q31_t)0x2aba93f9, (q31_t)0x8757a9d8, (q31_t)0x2ab4a7b1, (q31_t)0x8755910b, + (q31_t)0x2aaebb50, (q31_t)0x87537888, + (q31_t)0x2aa8ced3, (q31_t)0x87516050, (q31_t)0x2aa2e23d, (q31_t)0x874f4862, (q31_t)0x2a9cf58c, (q31_t)0x874d30bf, + (q31_t)0x2a9708c1, (q31_t)0x874b1966, + (q31_t)0x2a911bdc, (q31_t)0x87490258, (q31_t)0x2a8b2edc, (q31_t)0x8746eb94, (q31_t)0x2a8541c3, (q31_t)0x8744d51b, + (q31_t)0x2a7f548e, (q31_t)0x8742beec, + (q31_t)0x2a796740, (q31_t)0x8740a907, (q31_t)0x2a7379d8, (q31_t)0x873e936d, (q31_t)0x2a6d8c55, (q31_t)0x873c7e1e, + (q31_t)0x2a679eb8, (q31_t)0x873a6919, + (q31_t)0x2a61b101, (q31_t)0x8738545e, (q31_t)0x2a5bc330, (q31_t)0x87363fee, (q31_t)0x2a55d545, (q31_t)0x87342bc9, + (q31_t)0x2a4fe740, (q31_t)0x873217ee, + (q31_t)0x2a49f920, (q31_t)0x8730045d, (q31_t)0x2a440ae7, (q31_t)0x872df117, (q31_t)0x2a3e1c93, (q31_t)0x872bde1c, + (q31_t)0x2a382e25, (q31_t)0x8729cb6b, + (q31_t)0x2a323f9e, (q31_t)0x8727b905, (q31_t)0x2a2c50fc, (q31_t)0x8725a6e9, (q31_t)0x2a266240, (q31_t)0x87239518, + (q31_t)0x2a20736a, (q31_t)0x87218391, + (q31_t)0x2a1a847b, (q31_t)0x871f7255, (q31_t)0x2a149571, (q31_t)0x871d6163, (q31_t)0x2a0ea64d, (q31_t)0x871b50bc, + (q31_t)0x2a08b710, (q31_t)0x87194060, + (q31_t)0x2a02c7b8, (q31_t)0x8717304e, (q31_t)0x29fcd847, (q31_t)0x87152087, (q31_t)0x29f6e8bb, (q31_t)0x8713110a, + (q31_t)0x29f0f916, (q31_t)0x871101d8, + (q31_t)0x29eb0957, (q31_t)0x870ef2f1, (q31_t)0x29e5197e, (q31_t)0x870ce454, (q31_t)0x29df298b, (q31_t)0x870ad602, + (q31_t)0x29d9397f, (q31_t)0x8708c7fa, + (q31_t)0x29d34958, (q31_t)0x8706ba3d, (q31_t)0x29cd5918, (q31_t)0x8704acca, (q31_t)0x29c768be, (q31_t)0x87029fa3, + (q31_t)0x29c1784a, (q31_t)0x870092c5, + (q31_t)0x29bb87bc, (q31_t)0x86fe8633, (q31_t)0x29b59715, (q31_t)0x86fc79eb, (q31_t)0x29afa654, (q31_t)0x86fa6dee, + (q31_t)0x29a9b579, (q31_t)0x86f8623b, + (q31_t)0x29a3c485, (q31_t)0x86f656d3, (q31_t)0x299dd377, (q31_t)0x86f44bb6, (q31_t)0x2997e24f, (q31_t)0x86f240e3, + (q31_t)0x2991f10e, (q31_t)0x86f0365c, + (q31_t)0x298bffb2, (q31_t)0x86ee2c1e, (q31_t)0x29860e3e, (q31_t)0x86ec222c, (q31_t)0x29801caf, (q31_t)0x86ea1884, + (q31_t)0x297a2b07, (q31_t)0x86e80f27, + (q31_t)0x29743946, (q31_t)0x86e60614, (q31_t)0x296e476b, (q31_t)0x86e3fd4c, (q31_t)0x29685576, (q31_t)0x86e1f4cf, + (q31_t)0x29626368, (q31_t)0x86dfec9d, + (q31_t)0x295c7140, (q31_t)0x86dde4b5, (q31_t)0x29567eff, (q31_t)0x86dbdd18, (q31_t)0x29508ca4, (q31_t)0x86d9d5c6, + (q31_t)0x294a9a30, (q31_t)0x86d7cebf, + (q31_t)0x2944a7a2, (q31_t)0x86d5c802, (q31_t)0x293eb4fb, (q31_t)0x86d3c190, (q31_t)0x2938c23a, (q31_t)0x86d1bb69, + (q31_t)0x2932cf60, (q31_t)0x86cfb58c, + (q31_t)0x292cdc6d, (q31_t)0x86cdaffa, (q31_t)0x2926e960, (q31_t)0x86cbaab3, (q31_t)0x2920f63a, (q31_t)0x86c9a5b7, + (q31_t)0x291b02fa, (q31_t)0x86c7a106, + (q31_t)0x29150fa1, (q31_t)0x86c59c9f, (q31_t)0x290f1c2f, (q31_t)0x86c39883, (q31_t)0x290928a3, (q31_t)0x86c194b2, + (q31_t)0x290334ff, (q31_t)0x86bf912c, + (q31_t)0x28fd4140, (q31_t)0x86bd8df0, (q31_t)0x28f74d69, (q31_t)0x86bb8b00, (q31_t)0x28f15978, (q31_t)0x86b9885a, + (q31_t)0x28eb656e, (q31_t)0x86b785ff, + (q31_t)0x28e5714b, (q31_t)0x86b583ee, (q31_t)0x28df7d0e, (q31_t)0x86b38229, (q31_t)0x28d988b8, (q31_t)0x86b180ae, + (q31_t)0x28d3944a, (q31_t)0x86af7f7e, + (q31_t)0x28cd9fc1, (q31_t)0x86ad7e99, (q31_t)0x28c7ab20, (q31_t)0x86ab7dff, (q31_t)0x28c1b666, (q31_t)0x86a97db0, + (q31_t)0x28bbc192, (q31_t)0x86a77dab, + (q31_t)0x28b5cca5, (q31_t)0x86a57df2, (q31_t)0x28afd7a0, (q31_t)0x86a37e83, (q31_t)0x28a9e281, (q31_t)0x86a17f5f, + (q31_t)0x28a3ed49, (q31_t)0x869f8086, + (q31_t)0x289df7f8, (q31_t)0x869d81f8, (q31_t)0x2898028e, (q31_t)0x869b83b4, (q31_t)0x28920d0a, (q31_t)0x869985bc, + (q31_t)0x288c176e, (q31_t)0x8697880f, + (q31_t)0x288621b9, (q31_t)0x86958aac, (q31_t)0x28802beb, (q31_t)0x86938d94, (q31_t)0x287a3604, (q31_t)0x869190c7, + (q31_t)0x28744004, (q31_t)0x868f9445, + (q31_t)0x286e49ea, (q31_t)0x868d980e, (q31_t)0x286853b8, (q31_t)0x868b9c22, (q31_t)0x28625d6d, (q31_t)0x8689a081, + (q31_t)0x285c670a, (q31_t)0x8687a52b, + (q31_t)0x2856708d, (q31_t)0x8685aa20, (q31_t)0x285079f7, (q31_t)0x8683af5f, (q31_t)0x284a8349, (q31_t)0x8681b4ea, + (q31_t)0x28448c81, (q31_t)0x867fbabf, + (q31_t)0x283e95a1, (q31_t)0x867dc0e0, (q31_t)0x28389ea8, (q31_t)0x867bc74b, (q31_t)0x2832a796, (q31_t)0x8679ce01, + (q31_t)0x282cb06c, (q31_t)0x8677d503, + (q31_t)0x2826b928, (q31_t)0x8675dc4f, (q31_t)0x2820c1cc, (q31_t)0x8673e3e6, (q31_t)0x281aca57, (q31_t)0x8671ebc8, + (q31_t)0x2814d2c9, (q31_t)0x866ff3f6, + (q31_t)0x280edb23, (q31_t)0x866dfc6e, (q31_t)0x2808e364, (q31_t)0x866c0531, (q31_t)0x2802eb8c, (q31_t)0x866a0e3f, + (q31_t)0x27fcf39c, (q31_t)0x86681798, + (q31_t)0x27f6fb92, (q31_t)0x8666213c, (q31_t)0x27f10371, (q31_t)0x86642b2c, (q31_t)0x27eb0b36, (q31_t)0x86623566, + (q31_t)0x27e512e3, (q31_t)0x86603feb, + (q31_t)0x27df1a77, (q31_t)0x865e4abb, (q31_t)0x27d921f3, (q31_t)0x865c55d7, (q31_t)0x27d32956, (q31_t)0x865a613d, + (q31_t)0x27cd30a1, (q31_t)0x86586cee, + (q31_t)0x27c737d3, (q31_t)0x865678eb, (q31_t)0x27c13eec, (q31_t)0x86548532, (q31_t)0x27bb45ed, (q31_t)0x865291c4, + (q31_t)0x27b54cd6, (q31_t)0x86509ea2, + (q31_t)0x27af53a6, (q31_t)0x864eabcb, (q31_t)0x27a95a5d, (q31_t)0x864cb93e, (q31_t)0x27a360fc, (q31_t)0x864ac6fd, + (q31_t)0x279d6783, (q31_t)0x8648d507, + (q31_t)0x27976df1, (q31_t)0x8646e35c, (q31_t)0x27917447, (q31_t)0x8644f1fc, (q31_t)0x278b7a84, (q31_t)0x864300e7, + (q31_t)0x278580a9, (q31_t)0x8641101d, + (q31_t)0x277f86b5, (q31_t)0x863f1f9e, (q31_t)0x27798caa, (q31_t)0x863d2f6b, (q31_t)0x27739285, (q31_t)0x863b3f82, + (q31_t)0x276d9849, (q31_t)0x86394fe5, + (q31_t)0x27679df4, (q31_t)0x86376092, (q31_t)0x2761a387, (q31_t)0x8635718b, (q31_t)0x275ba901, (q31_t)0x863382cf, + (q31_t)0x2755ae64, (q31_t)0x8631945e, + (q31_t)0x274fb3ae, (q31_t)0x862fa638, (q31_t)0x2749b8e0, (q31_t)0x862db85e, (q31_t)0x2743bdf9, (q31_t)0x862bcace, + (q31_t)0x273dc2fa, (q31_t)0x8629dd8a, + (q31_t)0x2737c7e3, (q31_t)0x8627f091, (q31_t)0x2731ccb4, (q31_t)0x862603e3, (q31_t)0x272bd16d, (q31_t)0x86241780, + (q31_t)0x2725d60e, (q31_t)0x86222b68, + (q31_t)0x271fda96, (q31_t)0x86203f9c, (q31_t)0x2719df06, (q31_t)0x861e541a, (q31_t)0x2713e35f, (q31_t)0x861c68e4, + (q31_t)0x270de79f, (q31_t)0x861a7df9, + (q31_t)0x2707ebc7, (q31_t)0x86189359, (q31_t)0x2701efd7, (q31_t)0x8616a905, (q31_t)0x26fbf3ce, (q31_t)0x8614befb, + (q31_t)0x26f5f7ae, (q31_t)0x8612d53d, + (q31_t)0x26effb76, (q31_t)0x8610ebca, (q31_t)0x26e9ff26, (q31_t)0x860f02a3, (q31_t)0x26e402bd, (q31_t)0x860d19c6, + (q31_t)0x26de063d, (q31_t)0x860b3135, + (q31_t)0x26d809a5, (q31_t)0x860948ef, (q31_t)0x26d20cf5, (q31_t)0x860760f4, (q31_t)0x26cc102d, (q31_t)0x86057944, + (q31_t)0x26c6134d, (q31_t)0x860391e0, + (q31_t)0x26c01655, (q31_t)0x8601aac7, (q31_t)0x26ba1945, (q31_t)0x85ffc3f9, (q31_t)0x26b41c1d, (q31_t)0x85fddd76, + (q31_t)0x26ae1edd, (q31_t)0x85fbf73f, + (q31_t)0x26a82186, (q31_t)0x85fa1153, (q31_t)0x26a22416, (q31_t)0x85f82bb2, (q31_t)0x269c268f, (q31_t)0x85f6465c, + (q31_t)0x269628f0, (q31_t)0x85f46152, + (q31_t)0x26902b39, (q31_t)0x85f27c93, (q31_t)0x268a2d6b, (q31_t)0x85f09820, (q31_t)0x26842f84, (q31_t)0x85eeb3f7, + (q31_t)0x267e3186, (q31_t)0x85ecd01a, + (q31_t)0x26783370, (q31_t)0x85eaec88, (q31_t)0x26723543, (q31_t)0x85e90942, (q31_t)0x266c36fe, (q31_t)0x85e72647, + (q31_t)0x266638a1, (q31_t)0x85e54397, + (q31_t)0x26603a2c, (q31_t)0x85e36132, (q31_t)0x265a3b9f, (q31_t)0x85e17f19, (q31_t)0x26543cfb, (q31_t)0x85df9d4b, + (q31_t)0x264e3e40, (q31_t)0x85ddbbc9, + (q31_t)0x26483f6c, (q31_t)0x85dbda91, (q31_t)0x26424082, (q31_t)0x85d9f9a5, (q31_t)0x263c417f, (q31_t)0x85d81905, + (q31_t)0x26364265, (q31_t)0x85d638b0, + (q31_t)0x26304333, (q31_t)0x85d458a6, (q31_t)0x262a43ea, (q31_t)0x85d278e7, (q31_t)0x26244489, (q31_t)0x85d09974, + (q31_t)0x261e4511, (q31_t)0x85ceba4d, + (q31_t)0x26184581, (q31_t)0x85ccdb70, (q31_t)0x261245da, (q31_t)0x85cafcdf, (q31_t)0x260c461b, (q31_t)0x85c91e9a, + (q31_t)0x26064645, (q31_t)0x85c740a0, + (q31_t)0x26004657, (q31_t)0x85c562f1, (q31_t)0x25fa4652, (q31_t)0x85c3858d, (q31_t)0x25f44635, (q31_t)0x85c1a875, + (q31_t)0x25ee4601, (q31_t)0x85bfcba9, + (q31_t)0x25e845b6, (q31_t)0x85bdef28, (q31_t)0x25e24553, (q31_t)0x85bc12f2, (q31_t)0x25dc44d9, (q31_t)0x85ba3707, + (q31_t)0x25d64447, (q31_t)0x85b85b68, + (q31_t)0x25d0439f, (q31_t)0x85b68015, (q31_t)0x25ca42de, (q31_t)0x85b4a50d, (q31_t)0x25c44207, (q31_t)0x85b2ca50, + (q31_t)0x25be4118, (q31_t)0x85b0efdf, + (q31_t)0x25b84012, (q31_t)0x85af15b9, (q31_t)0x25b23ef5, (q31_t)0x85ad3bdf, (q31_t)0x25ac3dc0, (q31_t)0x85ab6250, + (q31_t)0x25a63c74, (q31_t)0x85a9890d, + (q31_t)0x25a03b11, (q31_t)0x85a7b015, (q31_t)0x259a3997, (q31_t)0x85a5d768, (q31_t)0x25943806, (q31_t)0x85a3ff07, + (q31_t)0x258e365d, (q31_t)0x85a226f2, + (q31_t)0x2588349d, (q31_t)0x85a04f28, (q31_t)0x258232c6, (q31_t)0x859e77a9, (q31_t)0x257c30d8, (q31_t)0x859ca076, + (q31_t)0x25762ed3, (q31_t)0x859ac98f, + (q31_t)0x25702cb7, (q31_t)0x8598f2f3, (q31_t)0x256a2a83, (q31_t)0x85971ca2, (q31_t)0x25642839, (q31_t)0x8595469d, + (q31_t)0x255e25d7, (q31_t)0x859370e4, + (q31_t)0x2558235f, (q31_t)0x85919b76, (q31_t)0x255220cf, (q31_t)0x858fc653, (q31_t)0x254c1e28, (q31_t)0x858df17c, + (q31_t)0x25461b6b, (q31_t)0x858c1cf1, + (q31_t)0x25401896, (q31_t)0x858a48b1, (q31_t)0x253a15aa, (q31_t)0x858874bd, (q31_t)0x253412a8, (q31_t)0x8586a114, + (q31_t)0x252e0f8e, (q31_t)0x8584cdb7, + (q31_t)0x25280c5e, (q31_t)0x8582faa5, (q31_t)0x25220916, (q31_t)0x858127df, (q31_t)0x251c05b8, (q31_t)0x857f5564, + (q31_t)0x25160243, (q31_t)0x857d8335, + (q31_t)0x250ffeb7, (q31_t)0x857bb152, (q31_t)0x2509fb14, (q31_t)0x8579dfba, (q31_t)0x2503f75a, (q31_t)0x85780e6e, + (q31_t)0x24fdf389, (q31_t)0x85763d6d, + (q31_t)0x24f7efa2, (q31_t)0x85746cb8, (q31_t)0x24f1eba4, (q31_t)0x85729c4e, (q31_t)0x24ebe78f, (q31_t)0x8570cc30, + (q31_t)0x24e5e363, (q31_t)0x856efc5e, + (q31_t)0x24dfdf20, (q31_t)0x856d2cd7, (q31_t)0x24d9dac7, (q31_t)0x856b5d9c, (q31_t)0x24d3d657, (q31_t)0x85698ead, + (q31_t)0x24cdd1d0, (q31_t)0x8567c009, + (q31_t)0x24c7cd33, (q31_t)0x8565f1b0, (q31_t)0x24c1c87f, (q31_t)0x856423a4, (q31_t)0x24bbc3b4, (q31_t)0x856255e3, + (q31_t)0x24b5bed2, (q31_t)0x8560886d, + (q31_t)0x24afb9da, (q31_t)0x855ebb44, (q31_t)0x24a9b4cb, (q31_t)0x855cee66, (q31_t)0x24a3afa6, (q31_t)0x855b21d3, + (q31_t)0x249daa6a, (q31_t)0x8559558c, + (q31_t)0x2497a517, (q31_t)0x85578991, (q31_t)0x24919fae, (q31_t)0x8555bde2, (q31_t)0x248b9a2f, (q31_t)0x8553f27e, + (q31_t)0x24859498, (q31_t)0x85522766, + (q31_t)0x247f8eec, (q31_t)0x85505c99, (q31_t)0x24798928, (q31_t)0x854e9219, (q31_t)0x2473834f, (q31_t)0x854cc7e3, + (q31_t)0x246d7d5e, (q31_t)0x854afdfa, + (q31_t)0x24677758, (q31_t)0x8549345c, (q31_t)0x2461713a, (q31_t)0x85476b0a, (q31_t)0x245b6b07, (q31_t)0x8545a204, + (q31_t)0x245564bd, (q31_t)0x8543d949, + (q31_t)0x244f5e5c, (q31_t)0x854210db, (q31_t)0x244957e5, (q31_t)0x854048b7, (q31_t)0x24435158, (q31_t)0x853e80e0, + (q31_t)0x243d4ab4, (q31_t)0x853cb954, + (q31_t)0x243743fa, (q31_t)0x853af214, (q31_t)0x24313d2a, (q31_t)0x85392b20, (q31_t)0x242b3644, (q31_t)0x85376477, + (q31_t)0x24252f47, (q31_t)0x85359e1a, + (q31_t)0x241f2833, (q31_t)0x8533d809, (q31_t)0x2419210a, (q31_t)0x85321244, (q31_t)0x241319ca, (q31_t)0x85304cca, + (q31_t)0x240d1274, (q31_t)0x852e879d, + (q31_t)0x24070b08, (q31_t)0x852cc2bb, (q31_t)0x24010385, (q31_t)0x852afe24, (q31_t)0x23fafbec, (q31_t)0x852939da, + (q31_t)0x23f4f43e, (q31_t)0x852775db, + (q31_t)0x23eeec78, (q31_t)0x8525b228, (q31_t)0x23e8e49d, (q31_t)0x8523eec1, (q31_t)0x23e2dcac, (q31_t)0x85222ba5, + (q31_t)0x23dcd4a4, (q31_t)0x852068d6, + (q31_t)0x23d6cc87, (q31_t)0x851ea652, (q31_t)0x23d0c453, (q31_t)0x851ce41a, (q31_t)0x23cabc09, (q31_t)0x851b222e, + (q31_t)0x23c4b3a9, (q31_t)0x8519608d, + (q31_t)0x23beab33, (q31_t)0x85179f39, (q31_t)0x23b8a2a7, (q31_t)0x8515de30, (q31_t)0x23b29a05, (q31_t)0x85141d73, + (q31_t)0x23ac914d, (q31_t)0x85125d02, + (q31_t)0x23a6887f, (q31_t)0x85109cdd, (q31_t)0x23a07f9a, (q31_t)0x850edd03, (q31_t)0x239a76a0, (q31_t)0x850d1d75, + (q31_t)0x23946d90, (q31_t)0x850b5e34, + (q31_t)0x238e646a, (q31_t)0x85099f3e, (q31_t)0x23885b2e, (q31_t)0x8507e094, (q31_t)0x238251dd, (q31_t)0x85062235, + (q31_t)0x237c4875, (q31_t)0x85046423, + (q31_t)0x23763ef7, (q31_t)0x8502a65c, (q31_t)0x23703564, (q31_t)0x8500e8e2, (q31_t)0x236a2bba, (q31_t)0x84ff2bb3, + (q31_t)0x236421fb, (q31_t)0x84fd6ed0, + (q31_t)0x235e1826, (q31_t)0x84fbb239, (q31_t)0x23580e3b, (q31_t)0x84f9f5ee, (q31_t)0x2352043b, (q31_t)0x84f839ee, + (q31_t)0x234bfa24, (q31_t)0x84f67e3b, + (q31_t)0x2345eff8, (q31_t)0x84f4c2d4, (q31_t)0x233fe5b6, (q31_t)0x84f307b8, (q31_t)0x2339db5e, (q31_t)0x84f14ce8, + (q31_t)0x2333d0f1, (q31_t)0x84ef9265, + (q31_t)0x232dc66d, (q31_t)0x84edd82d, (q31_t)0x2327bbd5, (q31_t)0x84ec1e41, (q31_t)0x2321b126, (q31_t)0x84ea64a1, + (q31_t)0x231ba662, (q31_t)0x84e8ab4d, + (q31_t)0x23159b88, (q31_t)0x84e6f244, (q31_t)0x230f9098, (q31_t)0x84e53988, (q31_t)0x23098593, (q31_t)0x84e38118, + (q31_t)0x23037a78, (q31_t)0x84e1c8f3, + (q31_t)0x22fd6f48, (q31_t)0x84e0111b, (q31_t)0x22f76402, (q31_t)0x84de598f, (q31_t)0x22f158a7, (q31_t)0x84dca24e, + (q31_t)0x22eb4d36, (q31_t)0x84daeb5a, + (q31_t)0x22e541af, (q31_t)0x84d934b1, (q31_t)0x22df3613, (q31_t)0x84d77e54, (q31_t)0x22d92a61, (q31_t)0x84d5c844, + (q31_t)0x22d31e9a, (q31_t)0x84d4127f, + (q31_t)0x22cd12bd, (q31_t)0x84d25d06, (q31_t)0x22c706cb, (q31_t)0x84d0a7da, (q31_t)0x22c0fac4, (q31_t)0x84cef2f9, + (q31_t)0x22baeea7, (q31_t)0x84cd3e64, + (q31_t)0x22b4e274, (q31_t)0x84cb8a1b, (q31_t)0x22aed62c, (q31_t)0x84c9d61f, (q31_t)0x22a8c9cf, (q31_t)0x84c8226e, + (q31_t)0x22a2bd5d, (q31_t)0x84c66f09, + (q31_t)0x229cb0d5, (q31_t)0x84c4bbf0, (q31_t)0x2296a437, (q31_t)0x84c30924, (q31_t)0x22909785, (q31_t)0x84c156a3, + (q31_t)0x228a8abd, (q31_t)0x84bfa46e, + (q31_t)0x22847de0, (q31_t)0x84bdf286, (q31_t)0x227e70ed, (q31_t)0x84bc40e9, (q31_t)0x227863e5, (q31_t)0x84ba8f98, + (q31_t)0x227256c8, (q31_t)0x84b8de94, + (q31_t)0x226c4996, (q31_t)0x84b72ddb, (q31_t)0x22663c4e, (q31_t)0x84b57d6f, (q31_t)0x22602ef1, (q31_t)0x84b3cd4f, + (q31_t)0x225a217f, (q31_t)0x84b21d7a, + (q31_t)0x225413f8, (q31_t)0x84b06df2, (q31_t)0x224e065c, (q31_t)0x84aebeb6, (q31_t)0x2247f8aa, (q31_t)0x84ad0fc6, + (q31_t)0x2241eae3, (q31_t)0x84ab6122, + (q31_t)0x223bdd08, (q31_t)0x84a9b2ca, (q31_t)0x2235cf17, (q31_t)0x84a804be, (q31_t)0x222fc111, (q31_t)0x84a656fe, + (q31_t)0x2229b2f6, (q31_t)0x84a4a98a, + (q31_t)0x2223a4c5, (q31_t)0x84a2fc62, (q31_t)0x221d9680, (q31_t)0x84a14f87, (q31_t)0x22178826, (q31_t)0x849fa2f7, + (q31_t)0x221179b7, (q31_t)0x849df6b4, + (q31_t)0x220b6b32, (q31_t)0x849c4abd, (q31_t)0x22055c99, (q31_t)0x849a9f12, (q31_t)0x21ff4dea, (q31_t)0x8498f3b3, + (q31_t)0x21f93f27, (q31_t)0x849748a0, + (q31_t)0x21f3304f, (q31_t)0x84959dd9, (q31_t)0x21ed2162, (q31_t)0x8493f35e, (q31_t)0x21e71260, (q31_t)0x84924930, + (q31_t)0x21e10349, (q31_t)0x84909f4e, + (q31_t)0x21daf41d, (q31_t)0x848ef5b7, (q31_t)0x21d4e4dc, (q31_t)0x848d4c6d, (q31_t)0x21ced586, (q31_t)0x848ba36f, + (q31_t)0x21c8c61c, (q31_t)0x8489fabe, + (q31_t)0x21c2b69c, (q31_t)0x84885258, (q31_t)0x21bca708, (q31_t)0x8486aa3e, (q31_t)0x21b6975f, (q31_t)0x84850271, + (q31_t)0x21b087a1, (q31_t)0x84835af0, + (q31_t)0x21aa77cf, (q31_t)0x8481b3bb, (q31_t)0x21a467e7, (q31_t)0x84800cd2, (q31_t)0x219e57eb, (q31_t)0x847e6636, + (q31_t)0x219847da, (q31_t)0x847cbfe5, + (q31_t)0x219237b5, (q31_t)0x847b19e1, (q31_t)0x218c277a, (q31_t)0x84797429, (q31_t)0x2186172b, (q31_t)0x8477cebd, + (q31_t)0x218006c8, (q31_t)0x8476299e, + (q31_t)0x2179f64f, (q31_t)0x847484ca, (q31_t)0x2173e5c2, (q31_t)0x8472e043, (q31_t)0x216dd521, (q31_t)0x84713c08, + (q31_t)0x2167c46b, (q31_t)0x846f9819, + (q31_t)0x2161b3a0, (q31_t)0x846df477, (q31_t)0x215ba2c0, (q31_t)0x846c5120, (q31_t)0x215591cc, (q31_t)0x846aae16, + (q31_t)0x214f80c4, (q31_t)0x84690b58, + (q31_t)0x21496fa7, (q31_t)0x846768e7, (q31_t)0x21435e75, (q31_t)0x8465c6c1, (q31_t)0x213d4d2f, (q31_t)0x846424e8, + (q31_t)0x21373bd4, (q31_t)0x8462835b, + (q31_t)0x21312a65, (q31_t)0x8460e21a, (q31_t)0x212b18e1, (q31_t)0x845f4126, (q31_t)0x21250749, (q31_t)0x845da07e, + (q31_t)0x211ef59d, (q31_t)0x845c0022, + (q31_t)0x2118e3dc, (q31_t)0x845a6012, (q31_t)0x2112d206, (q31_t)0x8458c04f, (q31_t)0x210cc01d, (q31_t)0x845720d8, + (q31_t)0x2106ae1e, (q31_t)0x845581ad, + (q31_t)0x21009c0c, (q31_t)0x8453e2cf, (q31_t)0x20fa89e5, (q31_t)0x8452443d, (q31_t)0x20f477aa, (q31_t)0x8450a5f7, + (q31_t)0x20ee655a, (q31_t)0x844f07fd, + (q31_t)0x20e852f6, (q31_t)0x844d6a50, (q31_t)0x20e2407e, (q31_t)0x844bccef, (q31_t)0x20dc2df2, (q31_t)0x844a2fda, + (q31_t)0x20d61b51, (q31_t)0x84489311, + (q31_t)0x20d0089c, (q31_t)0x8446f695, (q31_t)0x20c9f5d3, (q31_t)0x84455a66, (q31_t)0x20c3e2f5, (q31_t)0x8443be82, + (q31_t)0x20bdd003, (q31_t)0x844222eb, + (q31_t)0x20b7bcfe, (q31_t)0x844087a0, (q31_t)0x20b1a9e4, (q31_t)0x843eeca2, (q31_t)0x20ab96b5, (q31_t)0x843d51f0, + (q31_t)0x20a58373, (q31_t)0x843bb78a, + (q31_t)0x209f701c, (q31_t)0x843a1d70, (q31_t)0x20995cb2, (q31_t)0x843883a3, (q31_t)0x20934933, (q31_t)0x8436ea23, + (q31_t)0x208d35a0, (q31_t)0x843550ee, + (q31_t)0x208721f9, (q31_t)0x8433b806, (q31_t)0x20810e3e, (q31_t)0x84321f6b, (q31_t)0x207afa6f, (q31_t)0x8430871b, + (q31_t)0x2074e68c, (q31_t)0x842eef18, + (q31_t)0x206ed295, (q31_t)0x842d5762, (q31_t)0x2068be8a, (q31_t)0x842bbff8, (q31_t)0x2062aa6b, (q31_t)0x842a28da, + (q31_t)0x205c9638, (q31_t)0x84289209, + (q31_t)0x205681f1, (q31_t)0x8426fb84, (q31_t)0x20506d96, (q31_t)0x8425654b, (q31_t)0x204a5927, (q31_t)0x8423cf5f, + (q31_t)0x204444a4, (q31_t)0x842239bf, + (q31_t)0x203e300d, (q31_t)0x8420a46c, (q31_t)0x20381b63, (q31_t)0x841f0f65, (q31_t)0x203206a4, (q31_t)0x841d7aaa, + (q31_t)0x202bf1d2, (q31_t)0x841be63c, + (q31_t)0x2025dcec, (q31_t)0x841a521a, (q31_t)0x201fc7f2, (q31_t)0x8418be45, (q31_t)0x2019b2e4, (q31_t)0x84172abc, + (q31_t)0x20139dc2, (q31_t)0x84159780, + (q31_t)0x200d888d, (q31_t)0x84140490, (q31_t)0x20077344, (q31_t)0x841271ec, (q31_t)0x20015de7, (q31_t)0x8410df95, + (q31_t)0x1ffb4876, (q31_t)0x840f4d8a, + (q31_t)0x1ff532f2, (q31_t)0x840dbbcc, (q31_t)0x1fef1d59, (q31_t)0x840c2a5a, (q31_t)0x1fe907ae, (q31_t)0x840a9935, + (q31_t)0x1fe2f1ee, (q31_t)0x8409085c, + (q31_t)0x1fdcdc1b, (q31_t)0x840777d0, (q31_t)0x1fd6c634, (q31_t)0x8405e790, (q31_t)0x1fd0b03a, (q31_t)0x8404579d, + (q31_t)0x1fca9a2b, (q31_t)0x8402c7f6, + (q31_t)0x1fc4840a, (q31_t)0x8401389b, (q31_t)0x1fbe6dd4, (q31_t)0x83ffa98d, (q31_t)0x1fb8578b, (q31_t)0x83fe1acc, + (q31_t)0x1fb2412f, (q31_t)0x83fc8c57, + (q31_t)0x1fac2abf, (q31_t)0x83fafe2e, (q31_t)0x1fa6143b, (q31_t)0x83f97052, (q31_t)0x1f9ffda4, (q31_t)0x83f7e2c3, + (q31_t)0x1f99e6fa, (q31_t)0x83f65580, + (q31_t)0x1f93d03c, (q31_t)0x83f4c889, (q31_t)0x1f8db96a, (q31_t)0x83f33bdf, (q31_t)0x1f87a285, (q31_t)0x83f1af82, + (q31_t)0x1f818b8d, (q31_t)0x83f02371, + (q31_t)0x1f7b7481, (q31_t)0x83ee97ad, (q31_t)0x1f755d61, (q31_t)0x83ed0c35, (q31_t)0x1f6f462f, (q31_t)0x83eb810a, + (q31_t)0x1f692ee9, (q31_t)0x83e9f62b, + (q31_t)0x1f63178f, (q31_t)0x83e86b99, (q31_t)0x1f5d0022, (q31_t)0x83e6e153, (q31_t)0x1f56e8a2, (q31_t)0x83e5575a, + (q31_t)0x1f50d10e, (q31_t)0x83e3cdad, + (q31_t)0x1f4ab968, (q31_t)0x83e2444d, (q31_t)0x1f44a1ad, (q31_t)0x83e0bb3a, (q31_t)0x1f3e89e0, (q31_t)0x83df3273, + (q31_t)0x1f3871ff, (q31_t)0x83dda9f9, + (q31_t)0x1f325a0b, (q31_t)0x83dc21cb, (q31_t)0x1f2c4204, (q31_t)0x83da99ea, (q31_t)0x1f2629ea, (q31_t)0x83d91255, + (q31_t)0x1f2011bc, (q31_t)0x83d78b0d, + (q31_t)0x1f19f97b, (q31_t)0x83d60412, (q31_t)0x1f13e127, (q31_t)0x83d47d63, (q31_t)0x1f0dc8c0, (q31_t)0x83d2f701, + (q31_t)0x1f07b045, (q31_t)0x83d170eb, + (q31_t)0x1f0197b8, (q31_t)0x83cfeb22, (q31_t)0x1efb7f17, (q31_t)0x83ce65a6, (q31_t)0x1ef56664, (q31_t)0x83cce076, + (q31_t)0x1eef4d9d, (q31_t)0x83cb5b93, + (q31_t)0x1ee934c3, (q31_t)0x83c9d6fc, (q31_t)0x1ee31bd6, (q31_t)0x83c852b2, (q31_t)0x1edd02d6, (q31_t)0x83c6ceb5, + (q31_t)0x1ed6e9c3, (q31_t)0x83c54b04, + (q31_t)0x1ed0d09d, (q31_t)0x83c3c7a0, (q31_t)0x1ecab763, (q31_t)0x83c24488, (q31_t)0x1ec49e17, (q31_t)0x83c0c1be, + (q31_t)0x1ebe84b8, (q31_t)0x83bf3f3f, + (q31_t)0x1eb86b46, (q31_t)0x83bdbd0e, (q31_t)0x1eb251c1, (q31_t)0x83bc3b29, (q31_t)0x1eac3829, (q31_t)0x83bab991, + (q31_t)0x1ea61e7e, (q31_t)0x83b93845, + (q31_t)0x1ea004c1, (q31_t)0x83b7b746, (q31_t)0x1e99eaf0, (q31_t)0x83b63694, (q31_t)0x1e93d10c, (q31_t)0x83b4b62e, + (q31_t)0x1e8db716, (q31_t)0x83b33616, + (q31_t)0x1e879d0d, (q31_t)0x83b1b649, (q31_t)0x1e8182f1, (q31_t)0x83b036ca, (q31_t)0x1e7b68c2, (q31_t)0x83aeb797, + (q31_t)0x1e754e80, (q31_t)0x83ad38b1, + (q31_t)0x1e6f342c, (q31_t)0x83abba17, (q31_t)0x1e6919c4, (q31_t)0x83aa3bca, (q31_t)0x1e62ff4a, (q31_t)0x83a8bdca, + (q31_t)0x1e5ce4be, (q31_t)0x83a74017, + (q31_t)0x1e56ca1e, (q31_t)0x83a5c2b0, (q31_t)0x1e50af6c, (q31_t)0x83a44596, (q31_t)0x1e4a94a7, (q31_t)0x83a2c8c9, + (q31_t)0x1e4479cf, (q31_t)0x83a14c48, + (q31_t)0x1e3e5ee5, (q31_t)0x839fd014, (q31_t)0x1e3843e8, (q31_t)0x839e542d, (q31_t)0x1e3228d9, (q31_t)0x839cd893, + (q31_t)0x1e2c0db6, (q31_t)0x839b5d45, + (q31_t)0x1e25f282, (q31_t)0x8399e244, (q31_t)0x1e1fd73a, (q31_t)0x83986790, (q31_t)0x1e19bbe0, (q31_t)0x8396ed29, + (q31_t)0x1e13a074, (q31_t)0x8395730e, + (q31_t)0x1e0d84f5, (q31_t)0x8393f940, (q31_t)0x1e076963, (q31_t)0x83927fbf, (q31_t)0x1e014dbf, (q31_t)0x8391068a, + (q31_t)0x1dfb3208, (q31_t)0x838f8da2, + (q31_t)0x1df5163f, (q31_t)0x838e1507, (q31_t)0x1deefa63, (q31_t)0x838c9cb9, (q31_t)0x1de8de75, (q31_t)0x838b24b8, + (q31_t)0x1de2c275, (q31_t)0x8389ad03, + (q31_t)0x1ddca662, (q31_t)0x8388359b, (q31_t)0x1dd68a3c, (q31_t)0x8386be80, (q31_t)0x1dd06e04, (q31_t)0x838547b2, + (q31_t)0x1dca51ba, (q31_t)0x8383d130, + (q31_t)0x1dc4355e, (q31_t)0x83825afb, (q31_t)0x1dbe18ef, (q31_t)0x8380e513, (q31_t)0x1db7fc6d, (q31_t)0x837f6f78, + (q31_t)0x1db1dfda, (q31_t)0x837dfa2a, + (q31_t)0x1dabc334, (q31_t)0x837c8528, (q31_t)0x1da5a67c, (q31_t)0x837b1074, (q31_t)0x1d9f89b1, (q31_t)0x83799c0c, + (q31_t)0x1d996cd4, (q31_t)0x837827f0, + (q31_t)0x1d934fe5, (q31_t)0x8376b422, (q31_t)0x1d8d32e4, (q31_t)0x837540a1, (q31_t)0x1d8715d0, (q31_t)0x8373cd6c, + (q31_t)0x1d80f8ab, (q31_t)0x83725a84, + (q31_t)0x1d7adb73, (q31_t)0x8370e7e9, (q31_t)0x1d74be29, (q31_t)0x836f759b, (q31_t)0x1d6ea0cc, (q31_t)0x836e039a, + (q31_t)0x1d68835e, (q31_t)0x836c91e5, + (q31_t)0x1d6265dd, (q31_t)0x836b207d, (q31_t)0x1d5c484b, (q31_t)0x8369af63, (q31_t)0x1d562aa6, (q31_t)0x83683e95, + (q31_t)0x1d500cef, (q31_t)0x8366ce14, + (q31_t)0x1d49ef26, (q31_t)0x83655ddf, (q31_t)0x1d43d14b, (q31_t)0x8363edf8, (q31_t)0x1d3db35e, (q31_t)0x83627e5d, + (q31_t)0x1d37955e, (q31_t)0x83610f10, + (q31_t)0x1d31774d, (q31_t)0x835fa00f, (q31_t)0x1d2b592a, (q31_t)0x835e315b, (q31_t)0x1d253af5, (q31_t)0x835cc2f4, + (q31_t)0x1d1f1cae, (q31_t)0x835b54da, + (q31_t)0x1d18fe54, (q31_t)0x8359e70d, (q31_t)0x1d12dfe9, (q31_t)0x8358798c, (q31_t)0x1d0cc16c, (q31_t)0x83570c59, + (q31_t)0x1d06a2dd, (q31_t)0x83559f72, + (q31_t)0x1d00843d, (q31_t)0x835432d8, (q31_t)0x1cfa658a, (q31_t)0x8352c68c, (q31_t)0x1cf446c5, (q31_t)0x83515a8c, + (q31_t)0x1cee27ef, (q31_t)0x834feed9, + (q31_t)0x1ce80906, (q31_t)0x834e8373, (q31_t)0x1ce1ea0c, (q31_t)0x834d185a, (q31_t)0x1cdbcb00, (q31_t)0x834bad8e, + (q31_t)0x1cd5abe3, (q31_t)0x834a430e, + (q31_t)0x1ccf8cb3, (q31_t)0x8348d8dc, (q31_t)0x1cc96d72, (q31_t)0x83476ef6, (q31_t)0x1cc34e1f, (q31_t)0x8346055e, + (q31_t)0x1cbd2eba, (q31_t)0x83449c12, + (q31_t)0x1cb70f43, (q31_t)0x83433314, (q31_t)0x1cb0efbb, (q31_t)0x8341ca62, (q31_t)0x1caad021, (q31_t)0x834061fd, + (q31_t)0x1ca4b075, (q31_t)0x833ef9e6, + (q31_t)0x1c9e90b8, (q31_t)0x833d921b, (q31_t)0x1c9870e9, (q31_t)0x833c2a9d, (q31_t)0x1c925109, (q31_t)0x833ac36c, + (q31_t)0x1c8c3116, (q31_t)0x83395c88, + (q31_t)0x1c861113, (q31_t)0x8337f5f1, (q31_t)0x1c7ff0fd, (q31_t)0x83368fa7, (q31_t)0x1c79d0d6, (q31_t)0x833529aa, + (q31_t)0x1c73b09d, (q31_t)0x8333c3fa, + (q31_t)0x1c6d9053, (q31_t)0x83325e97, (q31_t)0x1c676ff8, (q31_t)0x8330f981, (q31_t)0x1c614f8b, (q31_t)0x832f94b8, + (q31_t)0x1c5b2f0c, (q31_t)0x832e303c, + (q31_t)0x1c550e7c, (q31_t)0x832ccc0d, (q31_t)0x1c4eedda, (q31_t)0x832b682b, (q31_t)0x1c48cd27, (q31_t)0x832a0496, + (q31_t)0x1c42ac62, (q31_t)0x8328a14d, + (q31_t)0x1c3c8b8c, (q31_t)0x83273e52, (q31_t)0x1c366aa5, (q31_t)0x8325dba4, (q31_t)0x1c3049ac, (q31_t)0x83247943, + (q31_t)0x1c2a28a2, (q31_t)0x8323172f, + (q31_t)0x1c240786, (q31_t)0x8321b568, (q31_t)0x1c1de659, (q31_t)0x832053ee, (q31_t)0x1c17c51b, (q31_t)0x831ef2c1, + (q31_t)0x1c11a3cb, (q31_t)0x831d91e1, + (q31_t)0x1c0b826a, (q31_t)0x831c314e, (q31_t)0x1c0560f8, (q31_t)0x831ad109, (q31_t)0x1bff3f75, (q31_t)0x83197110, + (q31_t)0x1bf91de0, (q31_t)0x83181164, + (q31_t)0x1bf2fc3a, (q31_t)0x8316b205, (q31_t)0x1becda83, (q31_t)0x831552f4, (q31_t)0x1be6b8ba, (q31_t)0x8313f42f, + (q31_t)0x1be096e0, (q31_t)0x831295b7, + (q31_t)0x1bda74f6, (q31_t)0x8311378d, (q31_t)0x1bd452f9, (q31_t)0x830fd9af, (q31_t)0x1bce30ec, (q31_t)0x830e7c1f, + (q31_t)0x1bc80ece, (q31_t)0x830d1edc, + (q31_t)0x1bc1ec9e, (q31_t)0x830bc1e6, (q31_t)0x1bbbca5e, (q31_t)0x830a653c, (q31_t)0x1bb5a80c, (q31_t)0x830908e0, + (q31_t)0x1baf85a9, (q31_t)0x8307acd1, + (q31_t)0x1ba96335, (q31_t)0x83065110, (q31_t)0x1ba340b0, (q31_t)0x8304f59b, (q31_t)0x1b9d1e1a, (q31_t)0x83039a73, + (q31_t)0x1b96fb73, (q31_t)0x83023f98, + (q31_t)0x1b90d8bb, (q31_t)0x8300e50b, (q31_t)0x1b8ab5f2, (q31_t)0x82ff8acb, (q31_t)0x1b849317, (q31_t)0x82fe30d7, + (q31_t)0x1b7e702c, (q31_t)0x82fcd731, + (q31_t)0x1b784d30, (q31_t)0x82fb7dd8, (q31_t)0x1b722a23, (q31_t)0x82fa24cc, (q31_t)0x1b6c0705, (q31_t)0x82f8cc0d, + (q31_t)0x1b65e3d7, (q31_t)0x82f7739c, + (q31_t)0x1b5fc097, (q31_t)0x82f61b77, (q31_t)0x1b599d46, (q31_t)0x82f4c3a0, (q31_t)0x1b5379e5, (q31_t)0x82f36c15, + (q31_t)0x1b4d5672, (q31_t)0x82f214d8, + (q31_t)0x1b4732ef, (q31_t)0x82f0bde8, (q31_t)0x1b410f5b, (q31_t)0x82ef6745, (q31_t)0x1b3aebb6, (q31_t)0x82ee10ef, + (q31_t)0x1b34c801, (q31_t)0x82ecbae7, + (q31_t)0x1b2ea43a, (q31_t)0x82eb652b, (q31_t)0x1b288063, (q31_t)0x82ea0fbd, (q31_t)0x1b225c7b, (q31_t)0x82e8ba9c, + (q31_t)0x1b1c3883, (q31_t)0x82e765c8, + (q31_t)0x1b161479, (q31_t)0x82e61141, (q31_t)0x1b0ff05f, (q31_t)0x82e4bd07, (q31_t)0x1b09cc34, (q31_t)0x82e3691b, + (q31_t)0x1b03a7f9, (q31_t)0x82e2157c, + (q31_t)0x1afd83ad, (q31_t)0x82e0c22a, (q31_t)0x1af75f50, (q31_t)0x82df6f25, (q31_t)0x1af13ae3, (q31_t)0x82de1c6d, + (q31_t)0x1aeb1665, (q31_t)0x82dcca02, + (q31_t)0x1ae4f1d6, (q31_t)0x82db77e5, (q31_t)0x1adecd37, (q31_t)0x82da2615, (q31_t)0x1ad8a887, (q31_t)0x82d8d492, + (q31_t)0x1ad283c7, (q31_t)0x82d7835c, + (q31_t)0x1acc5ef6, (q31_t)0x82d63274, (q31_t)0x1ac63a14, (q31_t)0x82d4e1d8, (q31_t)0x1ac01522, (q31_t)0x82d3918a, + (q31_t)0x1ab9f020, (q31_t)0x82d24189, + (q31_t)0x1ab3cb0d, (q31_t)0x82d0f1d5, (q31_t)0x1aada5e9, (q31_t)0x82cfa26f, (q31_t)0x1aa780b6, (q31_t)0x82ce5356, + (q31_t)0x1aa15b71, (q31_t)0x82cd048a, + (q31_t)0x1a9b361d, (q31_t)0x82cbb60b, (q31_t)0x1a9510b7, (q31_t)0x82ca67d9, (q31_t)0x1a8eeb42, (q31_t)0x82c919f5, + (q31_t)0x1a88c5bc, (q31_t)0x82c7cc5e, + (q31_t)0x1a82a026, (q31_t)0x82c67f14, (q31_t)0x1a7c7a7f, (q31_t)0x82c53217, (q31_t)0x1a7654c8, (q31_t)0x82c3e568, + (q31_t)0x1a702f01, (q31_t)0x82c29906, + (q31_t)0x1a6a0929, (q31_t)0x82c14cf1, (q31_t)0x1a63e341, (q31_t)0x82c00129, (q31_t)0x1a5dbd49, (q31_t)0x82beb5af, + (q31_t)0x1a579741, (q31_t)0x82bd6a82, + (q31_t)0x1a517128, (q31_t)0x82bc1fa2, (q31_t)0x1a4b4aff, (q31_t)0x82bad50f, (q31_t)0x1a4524c6, (q31_t)0x82b98aca, + (q31_t)0x1a3efe7c, (q31_t)0x82b840d2, + (q31_t)0x1a38d823, (q31_t)0x82b6f727, (q31_t)0x1a32b1b9, (q31_t)0x82b5adca, (q31_t)0x1a2c8b3f, (q31_t)0x82b464ba, + (q31_t)0x1a2664b5, (q31_t)0x82b31bf7, + (q31_t)0x1a203e1b, (q31_t)0x82b1d381, (q31_t)0x1a1a1771, (q31_t)0x82b08b59, (q31_t)0x1a13f0b6, (q31_t)0x82af437e, + (q31_t)0x1a0dc9ec, (q31_t)0x82adfbf0, + (q31_t)0x1a07a311, (q31_t)0x82acb4b0, (q31_t)0x1a017c27, (q31_t)0x82ab6dbd, (q31_t)0x19fb552c, (q31_t)0x82aa2717, + (q31_t)0x19f52e22, (q31_t)0x82a8e0bf, + (q31_t)0x19ef0707, (q31_t)0x82a79ab3, (q31_t)0x19e8dfdc, (q31_t)0x82a654f6, (q31_t)0x19e2b8a2, (q31_t)0x82a50f85, + (q31_t)0x19dc9157, (q31_t)0x82a3ca62, + (q31_t)0x19d669fc, (q31_t)0x82a2858c, (q31_t)0x19d04292, (q31_t)0x82a14104, (q31_t)0x19ca1b17, (q31_t)0x829ffcc8, + (q31_t)0x19c3f38d, (q31_t)0x829eb8db, + (q31_t)0x19bdcbf3, (q31_t)0x829d753a, (q31_t)0x19b7a449, (q31_t)0x829c31e7, (q31_t)0x19b17c8f, (q31_t)0x829aeee1, + (q31_t)0x19ab54c5, (q31_t)0x8299ac29, + (q31_t)0x19a52ceb, (q31_t)0x829869be, (q31_t)0x199f0502, (q31_t)0x829727a0, (q31_t)0x1998dd09, (q31_t)0x8295e5cf, + (q31_t)0x1992b4ff, (q31_t)0x8294a44c, + (q31_t)0x198c8ce7, (q31_t)0x82936317, (q31_t)0x198664be, (q31_t)0x8292222e, (q31_t)0x19803c86, (q31_t)0x8290e194, + (q31_t)0x197a143e, (q31_t)0x828fa146, + (q31_t)0x1973ebe6, (q31_t)0x828e6146, (q31_t)0x196dc37e, (q31_t)0x828d2193, (q31_t)0x19679b07, (q31_t)0x828be22e, + (q31_t)0x19617280, (q31_t)0x828aa316, + (q31_t)0x195b49ea, (q31_t)0x8289644b, (q31_t)0x19552144, (q31_t)0x828825ce, (q31_t)0x194ef88e, (q31_t)0x8286e79e, + (q31_t)0x1948cfc8, (q31_t)0x8285a9bb, + (q31_t)0x1942a6f3, (q31_t)0x82846c26, (q31_t)0x193c7e0f, (q31_t)0x82832edf, (q31_t)0x1936551b, (q31_t)0x8281f1e4, + (q31_t)0x19302c17, (q31_t)0x8280b538, + (q31_t)0x192a0304, (q31_t)0x827f78d8, (q31_t)0x1923d9e1, (q31_t)0x827e3cc6, (q31_t)0x191db0af, (q31_t)0x827d0102, + (q31_t)0x1917876d, (q31_t)0x827bc58a, + (q31_t)0x19115e1c, (q31_t)0x827a8a61, (q31_t)0x190b34bb, (q31_t)0x82794f84, (q31_t)0x19050b4b, (q31_t)0x827814f6, + (q31_t)0x18fee1cb, (q31_t)0x8276dab4, + (q31_t)0x18f8b83c, (q31_t)0x8275a0c0, (q31_t)0x18f28e9e, (q31_t)0x8274671a, (q31_t)0x18ec64f0, (q31_t)0x82732dc0, + (q31_t)0x18e63b33, (q31_t)0x8271f4b5, + (q31_t)0x18e01167, (q31_t)0x8270bbf7, (q31_t)0x18d9e78b, (q31_t)0x826f8386, (q31_t)0x18d3bda0, (q31_t)0x826e4b62, + (q31_t)0x18cd93a5, (q31_t)0x826d138d, + (q31_t)0x18c7699b, (q31_t)0x826bdc04, (q31_t)0x18c13f82, (q31_t)0x826aa4c9, (q31_t)0x18bb155a, (q31_t)0x82696ddc, + (q31_t)0x18b4eb22, (q31_t)0x8268373c, + (q31_t)0x18aec0db, (q31_t)0x826700e9, (q31_t)0x18a89685, (q31_t)0x8265cae4, (q31_t)0x18a26c20, (q31_t)0x8264952d, + (q31_t)0x189c41ab, (q31_t)0x82635fc2, + (q31_t)0x18961728, (q31_t)0x82622aa6, (q31_t)0x188fec95, (q31_t)0x8260f5d7, (q31_t)0x1889c1f3, (q31_t)0x825fc155, + (q31_t)0x18839742, (q31_t)0x825e8d21, + (q31_t)0x187d6c82, (q31_t)0x825d593a, (q31_t)0x187741b2, (q31_t)0x825c25a1, (q31_t)0x187116d4, (q31_t)0x825af255, + (q31_t)0x186aebe6, (q31_t)0x8259bf57, + (q31_t)0x1864c0ea, (q31_t)0x82588ca7, (q31_t)0x185e95de, (q31_t)0x82575a44, (q31_t)0x18586ac3, (q31_t)0x8256282e, + (q31_t)0x18523f9a, (q31_t)0x8254f666, + (q31_t)0x184c1461, (q31_t)0x8253c4eb, (q31_t)0x1845e919, (q31_t)0x825293be, (q31_t)0x183fbdc3, (q31_t)0x825162df, + (q31_t)0x1839925d, (q31_t)0x8250324d, + (q31_t)0x183366e9, (q31_t)0x824f0208, (q31_t)0x182d3b65, (q31_t)0x824dd211, (q31_t)0x18270fd3, (q31_t)0x824ca268, + (q31_t)0x1820e431, (q31_t)0x824b730c, + (q31_t)0x181ab881, (q31_t)0x824a43fe, (q31_t)0x18148cc2, (q31_t)0x8249153d, (q31_t)0x180e60f4, (q31_t)0x8247e6ca, + (q31_t)0x18083518, (q31_t)0x8246b8a4, + (q31_t)0x1802092c, (q31_t)0x82458acc, (q31_t)0x17fbdd32, (q31_t)0x82445d41, (q31_t)0x17f5b129, (q31_t)0x82433004, + (q31_t)0x17ef8511, (q31_t)0x82420315, + (q31_t)0x17e958ea, (q31_t)0x8240d673, (q31_t)0x17e32cb5, (q31_t)0x823faa1e, (q31_t)0x17dd0070, (q31_t)0x823e7e18, + (q31_t)0x17d6d41d, (q31_t)0x823d525e, + (q31_t)0x17d0a7bc, (q31_t)0x823c26f3, (q31_t)0x17ca7b4c, (q31_t)0x823afbd5, (q31_t)0x17c44ecd, (q31_t)0x8239d104, + (q31_t)0x17be223f, (q31_t)0x8238a681, + (q31_t)0x17b7f5a3, (q31_t)0x82377c4c, (q31_t)0x17b1c8f8, (q31_t)0x82365264, (q31_t)0x17ab9c3e, (q31_t)0x823528ca, + (q31_t)0x17a56f76, (q31_t)0x8233ff7e, + (q31_t)0x179f429f, (q31_t)0x8232d67f, (q31_t)0x179915ba, (q31_t)0x8231adce, (q31_t)0x1792e8c6, (q31_t)0x8230856a, + (q31_t)0x178cbbc4, (q31_t)0x822f5d54, + (q31_t)0x17868eb3, (q31_t)0x822e358b, (q31_t)0x17806194, (q31_t)0x822d0e10, (q31_t)0x177a3466, (q31_t)0x822be6e3, + (q31_t)0x17740729, (q31_t)0x822ac004, + (q31_t)0x176dd9de, (q31_t)0x82299971, (q31_t)0x1767ac85, (q31_t)0x8228732d, (q31_t)0x17617f1d, (q31_t)0x82274d36, + (q31_t)0x175b51a7, (q31_t)0x8226278d, + (q31_t)0x17552422, (q31_t)0x82250232, (q31_t)0x174ef68f, (q31_t)0x8223dd24, (q31_t)0x1748c8ee, (q31_t)0x8222b863, + (q31_t)0x17429b3e, (q31_t)0x822193f1, + (q31_t)0x173c6d80, (q31_t)0x82206fcc, (q31_t)0x17363fb4, (q31_t)0x821f4bf5, (q31_t)0x173011d9, (q31_t)0x821e286b, + (q31_t)0x1729e3f0, (q31_t)0x821d052f, + (q31_t)0x1723b5f9, (q31_t)0x821be240, (q31_t)0x171d87f3, (q31_t)0x821abfa0, (q31_t)0x171759df, (q31_t)0x82199d4d, + (q31_t)0x17112bbd, (q31_t)0x82187b47, + (q31_t)0x170afd8d, (q31_t)0x82175990, (q31_t)0x1704cf4f, (q31_t)0x82163826, (q31_t)0x16fea102, (q31_t)0x82151709, + (q31_t)0x16f872a7, (q31_t)0x8213f63a, + (q31_t)0x16f2443e, (q31_t)0x8212d5b9, (q31_t)0x16ec15c7, (q31_t)0x8211b586, (q31_t)0x16e5e741, (q31_t)0x821095a0, + (q31_t)0x16dfb8ae, (q31_t)0x820f7608, + (q31_t)0x16d98a0c, (q31_t)0x820e56be, (q31_t)0x16d35b5c, (q31_t)0x820d37c1, (q31_t)0x16cd2c9f, (q31_t)0x820c1912, + (q31_t)0x16c6fdd3, (q31_t)0x820afab1, + (q31_t)0x16c0cef9, (q31_t)0x8209dc9e, (q31_t)0x16baa011, (q31_t)0x8208bed8, (q31_t)0x16b4711b, (q31_t)0x8207a160, + (q31_t)0x16ae4217, (q31_t)0x82068435, + (q31_t)0x16a81305, (q31_t)0x82056758, (q31_t)0x16a1e3e5, (q31_t)0x82044ac9, (q31_t)0x169bb4b7, (q31_t)0x82032e88, + (q31_t)0x1695857b, (q31_t)0x82021294, + (q31_t)0x168f5632, (q31_t)0x8200f6ef, (q31_t)0x168926da, (q31_t)0x81ffdb96, (q31_t)0x1682f774, (q31_t)0x81fec08c, + (q31_t)0x167cc801, (q31_t)0x81fda5cf, + (q31_t)0x1676987f, (q31_t)0x81fc8b60, (q31_t)0x167068f0, (q31_t)0x81fb713f, (q31_t)0x166a3953, (q31_t)0x81fa576c, + (q31_t)0x166409a8, (q31_t)0x81f93de6, + (q31_t)0x165dd9f0, (q31_t)0x81f824ae, (q31_t)0x1657aa29, (q31_t)0x81f70bc3, (q31_t)0x16517a55, (q31_t)0x81f5f327, + (q31_t)0x164b4a73, (q31_t)0x81f4dad8, + (q31_t)0x16451a83, (q31_t)0x81f3c2d7, (q31_t)0x163eea86, (q31_t)0x81f2ab24, (q31_t)0x1638ba7a, (q31_t)0x81f193be, + (q31_t)0x16328a61, (q31_t)0x81f07ca6, + (q31_t)0x162c5a3b, (q31_t)0x81ef65dc, (q31_t)0x16262a06, (q31_t)0x81ee4f60, (q31_t)0x161ff9c4, (q31_t)0x81ed3932, + (q31_t)0x1619c975, (q31_t)0x81ec2351, + (q31_t)0x16139918, (q31_t)0x81eb0dbe, (q31_t)0x160d68ad, (q31_t)0x81e9f879, (q31_t)0x16073834, (q31_t)0x81e8e381, + (q31_t)0x160107ae, (q31_t)0x81e7ced8, + (q31_t)0x15fad71b, (q31_t)0x81e6ba7c, (q31_t)0x15f4a679, (q31_t)0x81e5a66e, (q31_t)0x15ee75cb, (q31_t)0x81e492ad, + (q31_t)0x15e8450e, (q31_t)0x81e37f3b, + (q31_t)0x15e21445, (q31_t)0x81e26c16, (q31_t)0x15dbe36d, (q31_t)0x81e1593f, (q31_t)0x15d5b288, (q31_t)0x81e046b6, + (q31_t)0x15cf8196, (q31_t)0x81df347b, + (q31_t)0x15c95097, (q31_t)0x81de228d, (q31_t)0x15c31f89, (q31_t)0x81dd10ee, (q31_t)0x15bcee6f, (q31_t)0x81dbff9c, + (q31_t)0x15b6bd47, (q31_t)0x81daee98, + (q31_t)0x15b08c12, (q31_t)0x81d9dde1, (q31_t)0x15aa5acf, (q31_t)0x81d8cd79, (q31_t)0x15a4297f, (q31_t)0x81d7bd5e, + (q31_t)0x159df821, (q31_t)0x81d6ad92, + (q31_t)0x1597c6b7, (q31_t)0x81d59e13, (q31_t)0x1591953e, (q31_t)0x81d48ee1, (q31_t)0x158b63b9, (q31_t)0x81d37ffe, + (q31_t)0x15853226, (q31_t)0x81d27169, + (q31_t)0x157f0086, (q31_t)0x81d16321, (q31_t)0x1578ced9, (q31_t)0x81d05527, (q31_t)0x15729d1f, (q31_t)0x81cf477b, + (q31_t)0x156c6b57, (q31_t)0x81ce3a1d, + (q31_t)0x15663982, (q31_t)0x81cd2d0c, (q31_t)0x156007a0, (q31_t)0x81cc204a, (q31_t)0x1559d5b1, (q31_t)0x81cb13d5, + (q31_t)0x1553a3b4, (q31_t)0x81ca07af, + (q31_t)0x154d71aa, (q31_t)0x81c8fbd6, (q31_t)0x15473f94, (q31_t)0x81c7f04b, (q31_t)0x15410d70, (q31_t)0x81c6e50d, + (q31_t)0x153adb3f, (q31_t)0x81c5da1e, + (q31_t)0x1534a901, (q31_t)0x81c4cf7d, (q31_t)0x152e76b5, (q31_t)0x81c3c529, (q31_t)0x1528445d, (q31_t)0x81c2bb23, + (q31_t)0x152211f8, (q31_t)0x81c1b16b, + (q31_t)0x151bdf86, (q31_t)0x81c0a801, (q31_t)0x1515ad06, (q31_t)0x81bf9ee5, (q31_t)0x150f7a7a, (q31_t)0x81be9617, + (q31_t)0x150947e1, (q31_t)0x81bd8d97, + (q31_t)0x1503153a, (q31_t)0x81bc8564, (q31_t)0x14fce287, (q31_t)0x81bb7d7f, (q31_t)0x14f6afc7, (q31_t)0x81ba75e9, + (q31_t)0x14f07cf9, (q31_t)0x81b96ea0, + (q31_t)0x14ea4a1f, (q31_t)0x81b867a5, (q31_t)0x14e41738, (q31_t)0x81b760f8, (q31_t)0x14dde445, (q31_t)0x81b65a99, + (q31_t)0x14d7b144, (q31_t)0x81b55488, + (q31_t)0x14d17e36, (q31_t)0x81b44ec4, (q31_t)0x14cb4b1c, (q31_t)0x81b3494f, (q31_t)0x14c517f4, (q31_t)0x81b24427, + (q31_t)0x14bee4c0, (q31_t)0x81b13f4e, + (q31_t)0x14b8b17f, (q31_t)0x81b03ac2, (q31_t)0x14b27e32, (q31_t)0x81af3684, (q31_t)0x14ac4ad7, (q31_t)0x81ae3294, + (q31_t)0x14a61770, (q31_t)0x81ad2ef2, + (q31_t)0x149fe3fc, (q31_t)0x81ac2b9e, (q31_t)0x1499b07c, (q31_t)0x81ab2898, (q31_t)0x14937cee, (q31_t)0x81aa25e0, + (q31_t)0x148d4954, (q31_t)0x81a92376, + (q31_t)0x148715ae, (q31_t)0x81a82159, (q31_t)0x1480e1fa, (q31_t)0x81a71f8b, (q31_t)0x147aae3a, (q31_t)0x81a61e0b, + (q31_t)0x14747a6d, (q31_t)0x81a51cd8, + (q31_t)0x146e4694, (q31_t)0x81a41bf4, (q31_t)0x146812ae, (q31_t)0x81a31b5d, (q31_t)0x1461debc, (q31_t)0x81a21b14, + (q31_t)0x145baabd, (q31_t)0x81a11b1a, + (q31_t)0x145576b1, (q31_t)0x81a01b6d, (q31_t)0x144f4299, (q31_t)0x819f1c0e, (q31_t)0x14490e74, (q31_t)0x819e1cfd, + (q31_t)0x1442da43, (q31_t)0x819d1e3a, + (q31_t)0x143ca605, (q31_t)0x819c1fc5, (q31_t)0x143671bb, (q31_t)0x819b219e, (q31_t)0x14303d65, (q31_t)0x819a23c5, + (q31_t)0x142a0902, (q31_t)0x8199263a, + (q31_t)0x1423d492, (q31_t)0x819828fd, (q31_t)0x141da016, (q31_t)0x81972c0e, (q31_t)0x14176b8e, (q31_t)0x81962f6d, + (q31_t)0x141136f9, (q31_t)0x8195331a, + (q31_t)0x140b0258, (q31_t)0x81943715, (q31_t)0x1404cdaa, (q31_t)0x81933b5e, (q31_t)0x13fe98f1, (q31_t)0x81923ff4, + (q31_t)0x13f8642a, (q31_t)0x819144d9, + (q31_t)0x13f22f58, (q31_t)0x81904a0c, (q31_t)0x13ebfa79, (q31_t)0x818f4f8d, (q31_t)0x13e5c58e, (q31_t)0x818e555c, + (q31_t)0x13df9097, (q31_t)0x818d5b78, + (q31_t)0x13d95b93, (q31_t)0x818c61e3, (q31_t)0x13d32683, (q31_t)0x818b689c, (q31_t)0x13ccf167, (q31_t)0x818a6fa3, + (q31_t)0x13c6bc3f, (q31_t)0x818976f8, + (q31_t)0x13c0870a, (q31_t)0x81887e9a, (q31_t)0x13ba51ca, (q31_t)0x8187868b, (q31_t)0x13b41c7d, (q31_t)0x81868eca, + (q31_t)0x13ade724, (q31_t)0x81859757, + (q31_t)0x13a7b1bf, (q31_t)0x8184a032, (q31_t)0x13a17c4d, (q31_t)0x8183a95b, (q31_t)0x139b46d0, (q31_t)0x8182b2d1, + (q31_t)0x13951146, (q31_t)0x8181bc96, + (q31_t)0x138edbb1, (q31_t)0x8180c6a9, (q31_t)0x1388a60f, (q31_t)0x817fd10a, (q31_t)0x13827062, (q31_t)0x817edbb9, + (q31_t)0x137c3aa8, (q31_t)0x817de6b6, + (q31_t)0x137604e2, (q31_t)0x817cf201, (q31_t)0x136fcf10, (q31_t)0x817bfd9b, (q31_t)0x13699933, (q31_t)0x817b0982, + (q31_t)0x13636349, (q31_t)0x817a15b7, + (q31_t)0x135d2d53, (q31_t)0x8179223a, (q31_t)0x1356f752, (q31_t)0x81782f0b, (q31_t)0x1350c144, (q31_t)0x81773c2b, + (q31_t)0x134a8b2b, (q31_t)0x81764998, + (q31_t)0x13445505, (q31_t)0x81755754, (q31_t)0x133e1ed4, (q31_t)0x8174655d, (q31_t)0x1337e897, (q31_t)0x817373b5, + (q31_t)0x1331b24e, (q31_t)0x8172825a, + (q31_t)0x132b7bf9, (q31_t)0x8171914e, (q31_t)0x13254599, (q31_t)0x8170a090, (q31_t)0x131f0f2c, (q31_t)0x816fb020, + (q31_t)0x1318d8b4, (q31_t)0x816ebffe, + (q31_t)0x1312a230, (q31_t)0x816dd02a, (q31_t)0x130c6ba0, (q31_t)0x816ce0a4, (q31_t)0x13063505, (q31_t)0x816bf16c, + (q31_t)0x12fffe5d, (q31_t)0x816b0282, + (q31_t)0x12f9c7aa, (q31_t)0x816a13e6, (q31_t)0x12f390ec, (q31_t)0x81692599, (q31_t)0x12ed5a21, (q31_t)0x81683799, + (q31_t)0x12e7234b, (q31_t)0x816749e8, + (q31_t)0x12e0ec6a, (q31_t)0x81665c84, (q31_t)0x12dab57c, (q31_t)0x81656f6f, (q31_t)0x12d47e83, (q31_t)0x816482a8, + (q31_t)0x12ce477f, (q31_t)0x8163962f, + (q31_t)0x12c8106f, (q31_t)0x8162aa04, (q31_t)0x12c1d953, (q31_t)0x8161be27, (q31_t)0x12bba22b, (q31_t)0x8160d298, + (q31_t)0x12b56af9, (q31_t)0x815fe758, + (q31_t)0x12af33ba, (q31_t)0x815efc65, (q31_t)0x12a8fc70, (q31_t)0x815e11c1, (q31_t)0x12a2c51b, (q31_t)0x815d276a, + (q31_t)0x129c8dba, (q31_t)0x815c3d62, + (q31_t)0x1296564d, (q31_t)0x815b53a8, (q31_t)0x12901ed5, (q31_t)0x815a6a3c, (q31_t)0x1289e752, (q31_t)0x8159811e, + (q31_t)0x1283afc3, (q31_t)0x8158984e, + (q31_t)0x127d7829, (q31_t)0x8157afcd, (q31_t)0x12774083, (q31_t)0x8156c799, (q31_t)0x127108d2, (q31_t)0x8155dfb4, + (q31_t)0x126ad116, (q31_t)0x8154f81d, + (q31_t)0x1264994e, (q31_t)0x815410d4, (q31_t)0x125e617b, (q31_t)0x815329d9, (q31_t)0x1258299c, (q31_t)0x8152432c, + (q31_t)0x1251f1b3, (q31_t)0x81515ccd, + (q31_t)0x124bb9be, (q31_t)0x815076bd, (q31_t)0x124581bd, (q31_t)0x814f90fb, (q31_t)0x123f49b2, (q31_t)0x814eab86, + (q31_t)0x1239119b, (q31_t)0x814dc660, + (q31_t)0x1232d979, (q31_t)0x814ce188, (q31_t)0x122ca14b, (q31_t)0x814bfcff, (q31_t)0x12266913, (q31_t)0x814b18c3, + (q31_t)0x122030cf, (q31_t)0x814a34d6, + (q31_t)0x1219f880, (q31_t)0x81495136, (q31_t)0x1213c026, (q31_t)0x81486de5, (q31_t)0x120d87c1, (q31_t)0x81478ae2, + (q31_t)0x12074f50, (q31_t)0x8146a82e, + (q31_t)0x120116d5, (q31_t)0x8145c5c7, (q31_t)0x11fade4e, (q31_t)0x8144e3ae, (q31_t)0x11f4a5bd, (q31_t)0x814401e4, + (q31_t)0x11ee6d20, (q31_t)0x81432068, + (q31_t)0x11e83478, (q31_t)0x81423f3a, (q31_t)0x11e1fbc5, (q31_t)0x81415e5a, (q31_t)0x11dbc307, (q31_t)0x81407dc9, + (q31_t)0x11d58a3e, (q31_t)0x813f9d86, + (q31_t)0x11cf516a, (q31_t)0x813ebd90, (q31_t)0x11c9188b, (q31_t)0x813ddde9, (q31_t)0x11c2dfa2, (q31_t)0x813cfe91, + (q31_t)0x11bca6ad, (q31_t)0x813c1f86, + (q31_t)0x11b66dad, (q31_t)0x813b40ca, (q31_t)0x11b034a2, (q31_t)0x813a625b, (q31_t)0x11a9fb8d, (q31_t)0x8139843b, + (q31_t)0x11a3c26c, (q31_t)0x8138a66a, + (q31_t)0x119d8941, (q31_t)0x8137c8e6, (q31_t)0x1197500a, (q31_t)0x8136ebb1, (q31_t)0x119116c9, (q31_t)0x81360ec9, + (q31_t)0x118add7d, (q31_t)0x81353230, + (q31_t)0x1184a427, (q31_t)0x813455e6, (q31_t)0x117e6ac5, (q31_t)0x813379e9, (q31_t)0x11783159, (q31_t)0x81329e3b, + (q31_t)0x1171f7e2, (q31_t)0x8131c2db, + (q31_t)0x116bbe60, (q31_t)0x8130e7c9, (q31_t)0x116584d3, (q31_t)0x81300d05, (q31_t)0x115f4b3c, (q31_t)0x812f3290, + (q31_t)0x1159119a, (q31_t)0x812e5868, + (q31_t)0x1152d7ed, (q31_t)0x812d7e8f, (q31_t)0x114c9e35, (q31_t)0x812ca505, (q31_t)0x11466473, (q31_t)0x812bcbc8, + (q31_t)0x11402aa6, (q31_t)0x812af2da, + (q31_t)0x1139f0cf, (q31_t)0x812a1a3a, (q31_t)0x1133b6ed, (q31_t)0x812941e8, (q31_t)0x112d7d00, (q31_t)0x812869e4, + (q31_t)0x11274309, (q31_t)0x8127922f, + (q31_t)0x11210907, (q31_t)0x8126bac8, (q31_t)0x111acefb, (q31_t)0x8125e3af, (q31_t)0x111494e4, (q31_t)0x81250ce4, + (q31_t)0x110e5ac2, (q31_t)0x81243668, + (q31_t)0x11082096, (q31_t)0x8123603a, (q31_t)0x1101e65f, (q31_t)0x81228a5a, (q31_t)0x10fbac1e, (q31_t)0x8121b4c8, + (q31_t)0x10f571d3, (q31_t)0x8120df85, + (q31_t)0x10ef377d, (q31_t)0x81200a90, (q31_t)0x10e8fd1c, (q31_t)0x811f35e9, (q31_t)0x10e2c2b2, (q31_t)0x811e6191, + (q31_t)0x10dc883c, (q31_t)0x811d8d86, + (q31_t)0x10d64dbd, (q31_t)0x811cb9ca, (q31_t)0x10d01333, (q31_t)0x811be65d, (q31_t)0x10c9d89e, (q31_t)0x811b133d, + (q31_t)0x10c39dff, (q31_t)0x811a406c, + (q31_t)0x10bd6356, (q31_t)0x81196de9, (q31_t)0x10b728a3, (q31_t)0x81189bb4, (q31_t)0x10b0ede5, (q31_t)0x8117c9ce, + (q31_t)0x10aab31d, (q31_t)0x8116f836, + (q31_t)0x10a4784b, (q31_t)0x811626ec, (q31_t)0x109e3d6e, (q31_t)0x811555f1, (q31_t)0x10980287, (q31_t)0x81148544, + (q31_t)0x1091c796, (q31_t)0x8113b4e5, + (q31_t)0x108b8c9b, (q31_t)0x8112e4d4, (q31_t)0x10855195, (q31_t)0x81121512, (q31_t)0x107f1686, (q31_t)0x8111459e, + (q31_t)0x1078db6c, (q31_t)0x81107678, + (q31_t)0x1072a048, (q31_t)0x810fa7a0, (q31_t)0x106c651a, (q31_t)0x810ed917, (q31_t)0x106629e1, (q31_t)0x810e0adc, + (q31_t)0x105fee9f, (q31_t)0x810d3cf0, + (q31_t)0x1059b352, (q31_t)0x810c6f52, (q31_t)0x105377fc, (q31_t)0x810ba202, (q31_t)0x104d3c9b, (q31_t)0x810ad500, + (q31_t)0x10470130, (q31_t)0x810a084d, + (q31_t)0x1040c5bb, (q31_t)0x81093be8, (q31_t)0x103a8a3d, (q31_t)0x81086fd1, (q31_t)0x10344eb4, (q31_t)0x8107a409, + (q31_t)0x102e1321, (q31_t)0x8106d88f, + (q31_t)0x1027d784, (q31_t)0x81060d63, (q31_t)0x10219bdd, (q31_t)0x81054286, (q31_t)0x101b602d, (q31_t)0x810477f7, + (q31_t)0x10152472, (q31_t)0x8103adb6, + (q31_t)0x100ee8ad, (q31_t)0x8102e3c4, (q31_t)0x1008acdf, (q31_t)0x81021a20, (q31_t)0x10027107, (q31_t)0x810150ca, + (q31_t)0xffc3524, (q31_t)0x810087c3, + (q31_t)0xff5f938, (q31_t)0x80ffbf0a, (q31_t)0xfefbd42, (q31_t)0x80fef69f, (q31_t)0xfe98143, (q31_t)0x80fe2e83, + (q31_t)0xfe34539, (q31_t)0x80fd66b5, + (q31_t)0xfdd0926, (q31_t)0x80fc9f35, (q31_t)0xfd6cd08, (q31_t)0x80fbd804, (q31_t)0xfd090e1, (q31_t)0x80fb1121, + (q31_t)0xfca54b1, (q31_t)0x80fa4a8c, + (q31_t)0xfc41876, (q31_t)0x80f98446, (q31_t)0xfbddc32, (q31_t)0x80f8be4e, (q31_t)0xfb79fe4, (q31_t)0x80f7f8a4, + (q31_t)0xfb1638d, (q31_t)0x80f73349, + (q31_t)0xfab272b, (q31_t)0x80f66e3c, (q31_t)0xfa4eac0, (q31_t)0x80f5a97e, (q31_t)0xf9eae4c, (q31_t)0x80f4e50e, + (q31_t)0xf9871ce, (q31_t)0x80f420ec, + (q31_t)0xf923546, (q31_t)0x80f35d19, (q31_t)0xf8bf8b4, (q31_t)0x80f29994, (q31_t)0xf85bc19, (q31_t)0x80f1d65d, + (q31_t)0xf7f7f75, (q31_t)0x80f11375, + (q31_t)0xf7942c7, (q31_t)0x80f050db, (q31_t)0xf73060f, (q31_t)0x80ef8e90, (q31_t)0xf6cc94e, (q31_t)0x80eecc93, + (q31_t)0xf668c83, (q31_t)0x80ee0ae4, + (q31_t)0xf604faf, (q31_t)0x80ed4984, (q31_t)0xf5a12d1, (q31_t)0x80ec8872, (q31_t)0xf53d5ea, (q31_t)0x80ebc7ae, + (q31_t)0xf4d98f9, (q31_t)0x80eb0739, + (q31_t)0xf475bff, (q31_t)0x80ea4712, (q31_t)0xf411efb, (q31_t)0x80e9873a, (q31_t)0xf3ae1ee, (q31_t)0x80e8c7b0, + (q31_t)0xf34a4d8, (q31_t)0x80e80874, + (q31_t)0xf2e67b8, (q31_t)0x80e74987, (q31_t)0xf282a8f, (q31_t)0x80e68ae8, (q31_t)0xf21ed5d, (q31_t)0x80e5cc98, + (q31_t)0xf1bb021, (q31_t)0x80e50e96, + (q31_t)0xf1572dc, (q31_t)0x80e450e2, (q31_t)0xf0f358e, (q31_t)0x80e3937d, (q31_t)0xf08f836, (q31_t)0x80e2d666, + (q31_t)0xf02bad5, (q31_t)0x80e2199e, + (q31_t)0xefc7d6b, (q31_t)0x80e15d24, (q31_t)0xef63ff7, (q31_t)0x80e0a0f8, (q31_t)0xef0027b, (q31_t)0x80dfe51b, + (q31_t)0xee9c4f5, (q31_t)0x80df298c, + (q31_t)0xee38766, (q31_t)0x80de6e4c, (q31_t)0xedd49ce, (q31_t)0x80ddb35a, (q31_t)0xed70c2c, (q31_t)0x80dcf8b7, + (q31_t)0xed0ce82, (q31_t)0x80dc3e62, + (q31_t)0xeca90ce, (q31_t)0x80db845b, (q31_t)0xec45311, (q31_t)0x80dacaa3, (q31_t)0xebe154b, (q31_t)0x80da1139, + (q31_t)0xeb7d77c, (q31_t)0x80d9581e, + (q31_t)0xeb199a4, (q31_t)0x80d89f51, (q31_t)0xeab5bc3, (q31_t)0x80d7e6d3, (q31_t)0xea51dd8, (q31_t)0x80d72ea3, + (q31_t)0xe9edfe5, (q31_t)0x80d676c1, + (q31_t)0xe98a1e9, (q31_t)0x80d5bf2e, (q31_t)0xe9263e3, (q31_t)0x80d507e9, (q31_t)0xe8c25d5, (q31_t)0x80d450f3, + (q31_t)0xe85e7be, (q31_t)0x80d39a4b, + (q31_t)0xe7fa99e, (q31_t)0x80d2e3f2, (q31_t)0xe796b74, (q31_t)0x80d22de7, (q31_t)0xe732d42, (q31_t)0x80d1782a, + (q31_t)0xe6cef07, (q31_t)0x80d0c2bc, + (q31_t)0xe66b0c3, (q31_t)0x80d00d9d, (q31_t)0xe607277, (q31_t)0x80cf58cc, (q31_t)0xe5a3421, (q31_t)0x80cea449, + (q31_t)0xe53f5c2, (q31_t)0x80cdf015, + (q31_t)0xe4db75b, (q31_t)0x80cd3c2f, (q31_t)0xe4778eb, (q31_t)0x80cc8898, (q31_t)0xe413a72, (q31_t)0x80cbd54f, + (q31_t)0xe3afbf0, (q31_t)0x80cb2255, + (q31_t)0xe34bd66, (q31_t)0x80ca6fa9, (q31_t)0xe2e7ed2, (q31_t)0x80c9bd4c, (q31_t)0xe284036, (q31_t)0x80c90b3d, + (q31_t)0xe220191, (q31_t)0x80c8597c, + (q31_t)0xe1bc2e4, (q31_t)0x80c7a80a, (q31_t)0xe15842e, (q31_t)0x80c6f6e7, (q31_t)0xe0f456f, (q31_t)0x80c64612, + (q31_t)0xe0906a7, (q31_t)0x80c5958b, + (q31_t)0xe02c7d7, (q31_t)0x80c4e553, (q31_t)0xdfc88fe, (q31_t)0x80c4356a, (q31_t)0xdf64a1c, (q31_t)0x80c385cf, + (q31_t)0xdf00b32, (q31_t)0x80c2d682, + (q31_t)0xde9cc40, (q31_t)0x80c22784, (q31_t)0xde38d44, (q31_t)0x80c178d4, (q31_t)0xddd4e40, (q31_t)0x80c0ca73, + (q31_t)0xdd70f34, (q31_t)0x80c01c60, + (q31_t)0xdd0d01f, (q31_t)0x80bf6e9c, (q31_t)0xdca9102, (q31_t)0x80bec127, (q31_t)0xdc451dc, (q31_t)0x80be13ff, + (q31_t)0xdbe12ad, (q31_t)0x80bd6727, + (q31_t)0xdb7d376, (q31_t)0x80bcba9d, (q31_t)0xdb19437, (q31_t)0x80bc0e61, (q31_t)0xdab54ef, (q31_t)0x80bb6274, + (q31_t)0xda5159f, (q31_t)0x80bab6d5, + (q31_t)0xd9ed646, (q31_t)0x80ba0b85, (q31_t)0xd9896e5, (q31_t)0x80b96083, (q31_t)0xd92577b, (q31_t)0x80b8b5d0, + (q31_t)0xd8c1809, (q31_t)0x80b80b6c, + (q31_t)0xd85d88f, (q31_t)0x80b76156, (q31_t)0xd7f990c, (q31_t)0x80b6b78e, (q31_t)0xd795982, (q31_t)0x80b60e15, + (q31_t)0xd7319ee, (q31_t)0x80b564ea, + (q31_t)0xd6cda53, (q31_t)0x80b4bc0e, (q31_t)0xd669aaf, (q31_t)0x80b41381, (q31_t)0xd605b03, (q31_t)0x80b36b42, + (q31_t)0xd5a1b4f, (q31_t)0x80b2c351, + (q31_t)0xd53db92, (q31_t)0x80b21baf, (q31_t)0xd4d9bcd, (q31_t)0x80b1745c, (q31_t)0xd475c00, (q31_t)0x80b0cd57, + (q31_t)0xd411c2b, (q31_t)0x80b026a1, + (q31_t)0xd3adc4e, (q31_t)0x80af8039, (q31_t)0xd349c68, (q31_t)0x80aeda20, (q31_t)0xd2e5c7b, (q31_t)0x80ae3455, + (q31_t)0xd281c85, (q31_t)0x80ad8ed9, + (q31_t)0xd21dc87, (q31_t)0x80ace9ab, (q31_t)0xd1b9c81, (q31_t)0x80ac44cc, (q31_t)0xd155c73, (q31_t)0x80aba03b, + (q31_t)0xd0f1c5d, (q31_t)0x80aafbf9, + (q31_t)0xd08dc3f, (q31_t)0x80aa5806, (q31_t)0xd029c18, (q31_t)0x80a9b461, (q31_t)0xcfc5bea, (q31_t)0x80a9110b, + (q31_t)0xcf61bb4, (q31_t)0x80a86e03, + (q31_t)0xcefdb76, (q31_t)0x80a7cb49, (q31_t)0xce99b2f, (q31_t)0x80a728df, (q31_t)0xce35ae1, (q31_t)0x80a686c2, + (q31_t)0xcdd1a8b, (q31_t)0x80a5e4f5, + (q31_t)0xcd6da2d, (q31_t)0x80a54376, (q31_t)0xcd099c7, (q31_t)0x80a4a245, (q31_t)0xcca5959, (q31_t)0x80a40163, + (q31_t)0xcc418e3, (q31_t)0x80a360d0, + (q31_t)0xcbdd865, (q31_t)0x80a2c08b, (q31_t)0xcb797e0, (q31_t)0x80a22095, (q31_t)0xcb15752, (q31_t)0x80a180ed, + (q31_t)0xcab16bd, (q31_t)0x80a0e194, + (q31_t)0xca4d620, (q31_t)0x80a04289, (q31_t)0xc9e957b, (q31_t)0x809fa3cd, (q31_t)0xc9854cf, (q31_t)0x809f0560, + (q31_t)0xc92141a, (q31_t)0x809e6741, + (q31_t)0xc8bd35e, (q31_t)0x809dc971, (q31_t)0xc85929a, (q31_t)0x809d2bef, (q31_t)0xc7f51cf, (q31_t)0x809c8ebc, + (q31_t)0xc7910fb, (q31_t)0x809bf1d7, + (q31_t)0xc72d020, (q31_t)0x809b5541, (q31_t)0xc6c8f3e, (q31_t)0x809ab8fa, (q31_t)0xc664e53, (q31_t)0x809a1d01, + (q31_t)0xc600d61, (q31_t)0x80998157, + (q31_t)0xc59cc68, (q31_t)0x8098e5fb, (q31_t)0xc538b66, (q31_t)0x80984aee, (q31_t)0xc4d4a5d, (q31_t)0x8097b030, + (q31_t)0xc47094d, (q31_t)0x809715c0, + (q31_t)0xc40c835, (q31_t)0x80967b9f, (q31_t)0xc3a8715, (q31_t)0x8095e1cc, (q31_t)0xc3445ee, (q31_t)0x80954848, + (q31_t)0xc2e04c0, (q31_t)0x8094af13, + (q31_t)0xc27c389, (q31_t)0x8094162c, (q31_t)0xc21824c, (q31_t)0x80937d93, (q31_t)0xc1b4107, (q31_t)0x8092e54a, + (q31_t)0xc14ffba, (q31_t)0x80924d4f, + (q31_t)0xc0ebe66, (q31_t)0x8091b5a2, (q31_t)0xc087d0a, (q31_t)0x80911e44, (q31_t)0xc023ba7, (q31_t)0x80908735, + (q31_t)0xbfbfa3d, (q31_t)0x808ff074, + (q31_t)0xbf5b8cb, (q31_t)0x808f5a02, (q31_t)0xbef7752, (q31_t)0x808ec3df, (q31_t)0xbe935d2, (q31_t)0x808e2e0a, + (q31_t)0xbe2f44a, (q31_t)0x808d9884, + (q31_t)0xbdcb2bb, (q31_t)0x808d034c, (q31_t)0xbd67124, (q31_t)0x808c6e63, (q31_t)0xbd02f87, (q31_t)0x808bd9c9, + (q31_t)0xbc9ede2, (q31_t)0x808b457d, + (q31_t)0xbc3ac35, (q31_t)0x808ab180, (q31_t)0xbbd6a82, (q31_t)0x808a1dd2, (q31_t)0xbb728c7, (q31_t)0x80898a72, + (q31_t)0xbb0e705, (q31_t)0x8088f761, + (q31_t)0xbaaa53b, (q31_t)0x8088649e, (q31_t)0xba4636b, (q31_t)0x8087d22a, (q31_t)0xb9e2193, (q31_t)0x80874005, + (q31_t)0xb97dfb5, (q31_t)0x8086ae2e, + (q31_t)0xb919dcf, (q31_t)0x80861ca6, (q31_t)0xb8b5be1, (q31_t)0x80858b6c, (q31_t)0xb8519ed, (q31_t)0x8084fa82, + (q31_t)0xb7ed7f2, (q31_t)0x808469e5, + (q31_t)0xb7895f0, (q31_t)0x8083d998, (q31_t)0xb7253e6, (q31_t)0x80834999, (q31_t)0xb6c11d5, (q31_t)0x8082b9e9, + (q31_t)0xb65cfbe, (q31_t)0x80822a87, + (q31_t)0xb5f8d9f, (q31_t)0x80819b74, (q31_t)0xb594b7a, (q31_t)0x80810cb0, (q31_t)0xb53094d, (q31_t)0x80807e3a, + (q31_t)0xb4cc719, (q31_t)0x807ff013, + (q31_t)0xb4684df, (q31_t)0x807f623b, (q31_t)0xb40429d, (q31_t)0x807ed4b1, (q31_t)0xb3a0055, (q31_t)0x807e4776, + (q31_t)0xb33be05, (q31_t)0x807dba89, + (q31_t)0xb2d7baf, (q31_t)0x807d2dec, (q31_t)0xb273952, (q31_t)0x807ca19c, (q31_t)0xb20f6ee, (q31_t)0x807c159c, + (q31_t)0xb1ab483, (q31_t)0x807b89ea, + (q31_t)0xb147211, (q31_t)0x807afe87, (q31_t)0xb0e2f98, (q31_t)0x807a7373, (q31_t)0xb07ed19, (q31_t)0x8079e8ad, + (q31_t)0xb01aa92, (q31_t)0x80795e36, + (q31_t)0xafb6805, (q31_t)0x8078d40d, (q31_t)0xaf52571, (q31_t)0x80784a33, (q31_t)0xaeee2d7, (q31_t)0x8077c0a8, + (q31_t)0xae8a036, (q31_t)0x8077376c, + (q31_t)0xae25d8d, (q31_t)0x8076ae7e, (q31_t)0xadc1adf, (q31_t)0x807625df, (q31_t)0xad5d829, (q31_t)0x80759d8e, + (q31_t)0xacf956d, (q31_t)0x8075158c, + (q31_t)0xac952aa, (q31_t)0x80748dd9, (q31_t)0xac30fe1, (q31_t)0x80740675, (q31_t)0xabccd11, (q31_t)0x80737f5f, + (q31_t)0xab68a3a, (q31_t)0x8072f898, + (q31_t)0xab0475c, (q31_t)0x8072721f, (q31_t)0xaaa0478, (q31_t)0x8071ebf6, (q31_t)0xaa3c18e, (q31_t)0x8071661a, + (q31_t)0xa9d7e9d, (q31_t)0x8070e08e, + (q31_t)0xa973ba5, (q31_t)0x80705b50, (q31_t)0xa90f8a7, (q31_t)0x806fd661, (q31_t)0xa8ab5a2, (q31_t)0x806f51c1, + (q31_t)0xa847297, (q31_t)0x806ecd6f, + (q31_t)0xa7e2f85, (q31_t)0x806e496c, (q31_t)0xa77ec6d, (q31_t)0x806dc5b8, (q31_t)0xa71a94f, (q31_t)0x806d4253, + (q31_t)0xa6b662a, (q31_t)0x806cbf3c, + (q31_t)0xa6522fe, (q31_t)0x806c3c74, (q31_t)0xa5edfcc, (q31_t)0x806bb9fa, (q31_t)0xa589c94, (q31_t)0x806b37cf, + (q31_t)0xa525955, (q31_t)0x806ab5f3, + (q31_t)0xa4c1610, (q31_t)0x806a3466, (q31_t)0xa45d2c5, (q31_t)0x8069b327, (q31_t)0xa3f8f73, (q31_t)0x80693237, + (q31_t)0xa394c1b, (q31_t)0x8068b196, + (q31_t)0xa3308bd, (q31_t)0x80683143, (q31_t)0xa2cc558, (q31_t)0x8067b13f, (q31_t)0xa2681ed, (q31_t)0x8067318a, + (q31_t)0xa203e7c, (q31_t)0x8066b224, + (q31_t)0xa19fb04, (q31_t)0x8066330c, (q31_t)0xa13b787, (q31_t)0x8065b443, (q31_t)0xa0d7403, (q31_t)0x806535c9, + (q31_t)0xa073079, (q31_t)0x8064b79d, + (q31_t)0xa00ece8, (q31_t)0x806439c0, (q31_t)0x9faa952, (q31_t)0x8063bc32, (q31_t)0x9f465b5, (q31_t)0x80633ef3, + (q31_t)0x9ee2213, (q31_t)0x8062c202, + (q31_t)0x9e7de6a, (q31_t)0x80624560, (q31_t)0x9e19abb, (q31_t)0x8061c90c, (q31_t)0x9db5706, (q31_t)0x80614d08, + (q31_t)0x9d5134b, (q31_t)0x8060d152, + (q31_t)0x9cecf89, (q31_t)0x806055eb, (q31_t)0x9c88bc2, (q31_t)0x805fdad2, (q31_t)0x9c247f5, (q31_t)0x805f6009, + (q31_t)0x9bc0421, (q31_t)0x805ee58e, + (q31_t)0x9b5c048, (q31_t)0x805e6b62, (q31_t)0x9af7c69, (q31_t)0x805df184, (q31_t)0x9a93884, (q31_t)0x805d77f5, + (q31_t)0x9a2f498, (q31_t)0x805cfeb5, + (q31_t)0x99cb0a7, (q31_t)0x805c85c4, (q31_t)0x9966cb0, (q31_t)0x805c0d21, (q31_t)0x99028b3, (q31_t)0x805b94ce, + (q31_t)0x989e4b0, (q31_t)0x805b1cc8, + (q31_t)0x983a0a7, (q31_t)0x805aa512, (q31_t)0x97d5c99, (q31_t)0x805a2daa, (q31_t)0x9771884, (q31_t)0x8059b692, + (q31_t)0x970d46a, (q31_t)0x80593fc7, + (q31_t)0x96a9049, (q31_t)0x8058c94c, (q31_t)0x9644c23, (q31_t)0x8058531f, (q31_t)0x95e07f8, (q31_t)0x8057dd41, + (q31_t)0x957c3c6, (q31_t)0x805767b2, + (q31_t)0x9517f8f, (q31_t)0x8056f272, (q31_t)0x94b3b52, (q31_t)0x80567d80, (q31_t)0x944f70f, (q31_t)0x805608dd, + (q31_t)0x93eb2c6, (q31_t)0x80559489, + (q31_t)0x9386e78, (q31_t)0x80552084, (q31_t)0x9322a24, (q31_t)0x8054accd, (q31_t)0x92be5ca, (q31_t)0x80543965, + (q31_t)0x925a16b, (q31_t)0x8053c64c, + (q31_t)0x91f5d06, (q31_t)0x80535381, (q31_t)0x919189c, (q31_t)0x8052e106, (q31_t)0x912d42c, (q31_t)0x80526ed9, + (q31_t)0x90c8fb6, (q31_t)0x8051fcfb, + (q31_t)0x9064b3a, (q31_t)0x80518b6b, (q31_t)0x90006ba, (q31_t)0x80511a2b, (q31_t)0x8f9c233, (q31_t)0x8050a939, + (q31_t)0x8f37da7, (q31_t)0x80503896, + (q31_t)0x8ed3916, (q31_t)0x804fc841, (q31_t)0x8e6f47f, (q31_t)0x804f583c, (q31_t)0x8e0afe2, (q31_t)0x804ee885, + (q31_t)0x8da6b40, (q31_t)0x804e791d, + (q31_t)0x8d42699, (q31_t)0x804e0a04, (q31_t)0x8cde1ec, (q31_t)0x804d9b39, (q31_t)0x8c79d3a, (q31_t)0x804d2cbd, + (q31_t)0x8c15882, (q31_t)0x804cbe90, + (q31_t)0x8bb13c5, (q31_t)0x804c50b2, (q31_t)0x8b4cf02, (q31_t)0x804be323, (q31_t)0x8ae8a3a, (q31_t)0x804b75e2, + (q31_t)0x8a8456d, (q31_t)0x804b08f0, + (q31_t)0x8a2009a, (q31_t)0x804a9c4d, (q31_t)0x89bbbc3, (q31_t)0x804a2ff9, (q31_t)0x89576e5, (q31_t)0x8049c3f3, + (q31_t)0x88f3203, (q31_t)0x8049583d, + (q31_t)0x888ed1b, (q31_t)0x8048ecd5, (q31_t)0x882a82e, (q31_t)0x804881bb, (q31_t)0x87c633c, (q31_t)0x804816f1, + (q31_t)0x8761e44, (q31_t)0x8047ac75, + (q31_t)0x86fd947, (q31_t)0x80474248, (q31_t)0x8699445, (q31_t)0x8046d86a, (q31_t)0x8634f3e, (q31_t)0x80466edb, + (q31_t)0x85d0a32, (q31_t)0x8046059b, + (q31_t)0x856c520, (q31_t)0x80459ca9, (q31_t)0x850800a, (q31_t)0x80453406, (q31_t)0x84a3aee, (q31_t)0x8044cbb2, + (q31_t)0x843f5cd, (q31_t)0x804463ad, + (q31_t)0x83db0a7, (q31_t)0x8043fbf6, (q31_t)0x8376b7c, (q31_t)0x8043948e, (q31_t)0x831264c, (q31_t)0x80432d75, + (q31_t)0x82ae117, (q31_t)0x8042c6ab, + (q31_t)0x8249bdd, (q31_t)0x80426030, (q31_t)0x81e569d, (q31_t)0x8041fa03, (q31_t)0x8181159, (q31_t)0x80419425, + (q31_t)0x811cc10, (q31_t)0x80412e96, + (q31_t)0x80b86c2, (q31_t)0x8040c956, (q31_t)0x805416e, (q31_t)0x80406465, (q31_t)0x7fefc16, (q31_t)0x803fffc2, + (q31_t)0x7f8b6b9, (q31_t)0x803f9b6f, + (q31_t)0x7f27157, (q31_t)0x803f376a, (q31_t)0x7ec2bf0, (q31_t)0x803ed3b3, (q31_t)0x7e5e685, (q31_t)0x803e704c, + (q31_t)0x7dfa114, (q31_t)0x803e0d34, + (q31_t)0x7d95b9e, (q31_t)0x803daa6a, (q31_t)0x7d31624, (q31_t)0x803d47ef, (q31_t)0x7ccd0a5, (q31_t)0x803ce5c3, + (q31_t)0x7c68b21, (q31_t)0x803c83e5, + (q31_t)0x7c04598, (q31_t)0x803c2257, (q31_t)0x7ba000b, (q31_t)0x803bc117, (q31_t)0x7b3ba78, (q31_t)0x803b6026, + (q31_t)0x7ad74e1, (q31_t)0x803aff84, + (q31_t)0x7a72f45, (q31_t)0x803a9f31, (q31_t)0x7a0e9a5, (q31_t)0x803a3f2d, (q31_t)0x79aa400, (q31_t)0x8039df77, + (q31_t)0x7945e56, (q31_t)0x80398010, + (q31_t)0x78e18a7, (q31_t)0x803920f8, (q31_t)0x787d2f4, (q31_t)0x8038c22f, (q31_t)0x7818d3c, (q31_t)0x803863b5, + (q31_t)0x77b4780, (q31_t)0x80380589, + (q31_t)0x77501be, (q31_t)0x8037a7ac, (q31_t)0x76ebbf9, (q31_t)0x80374a1f, (q31_t)0x768762e, (q31_t)0x8036ece0, + (q31_t)0x762305f, (q31_t)0x80368fef, + (q31_t)0x75bea8c, (q31_t)0x8036334e, (q31_t)0x755a4b4, (q31_t)0x8035d6fb, (q31_t)0x74f5ed7, (q31_t)0x80357af8, + (q31_t)0x74918f6, (q31_t)0x80351f43, + (q31_t)0x742d311, (q31_t)0x8034c3dd, (q31_t)0x73c8d27, (q31_t)0x803468c5, (q31_t)0x7364738, (q31_t)0x80340dfd, + (q31_t)0x7300145, (q31_t)0x8033b383, + (q31_t)0x729bb4e, (q31_t)0x80335959, (q31_t)0x7237552, (q31_t)0x8032ff7d, (q31_t)0x71d2f52, (q31_t)0x8032a5ef, + (q31_t)0x716e94e, (q31_t)0x80324cb1, + (q31_t)0x710a345, (q31_t)0x8031f3c2, (q31_t)0x70a5d37, (q31_t)0x80319b21, (q31_t)0x7041726, (q31_t)0x803142cf, + (q31_t)0x6fdd110, (q31_t)0x8030eacd, + (q31_t)0x6f78af6, (q31_t)0x80309318, (q31_t)0x6f144d7, (q31_t)0x80303bb3, (q31_t)0x6eafeb4, (q31_t)0x802fe49d, + (q31_t)0x6e4b88d, (q31_t)0x802f8dd5, + (q31_t)0x6de7262, (q31_t)0x802f375d, (q31_t)0x6d82c32, (q31_t)0x802ee133, (q31_t)0x6d1e5fe, (q31_t)0x802e8b58, + (q31_t)0x6cb9fc6, (q31_t)0x802e35cb, + (q31_t)0x6c5598a, (q31_t)0x802de08e, (q31_t)0x6bf1349, (q31_t)0x802d8ba0, (q31_t)0x6b8cd05, (q31_t)0x802d3700, + (q31_t)0x6b286bc, (q31_t)0x802ce2af, + (q31_t)0x6ac406f, (q31_t)0x802c8ead, (q31_t)0x6a5fa1e, (q31_t)0x802c3afa, (q31_t)0x69fb3c9, (q31_t)0x802be796, + (q31_t)0x6996d70, (q31_t)0x802b9480, + (q31_t)0x6932713, (q31_t)0x802b41ba, (q31_t)0x68ce0b2, (q31_t)0x802aef42, (q31_t)0x6869a4c, (q31_t)0x802a9d19, + (q31_t)0x68053e3, (q31_t)0x802a4b3f, + (q31_t)0x67a0d76, (q31_t)0x8029f9b4, (q31_t)0x673c704, (q31_t)0x8029a878, (q31_t)0x66d808f, (q31_t)0x8029578b, + (q31_t)0x6673a16, (q31_t)0x802906ec, + (q31_t)0x660f398, (q31_t)0x8028b69c, (q31_t)0x65aad17, (q31_t)0x8028669b, (q31_t)0x6546692, (q31_t)0x802816e9, + (q31_t)0x64e2009, (q31_t)0x8027c786, + (q31_t)0x647d97c, (q31_t)0x80277872, (q31_t)0x64192eb, (q31_t)0x802729ad, (q31_t)0x63b4c57, (q31_t)0x8026db36, + (q31_t)0x63505be, (q31_t)0x80268d0e, + (q31_t)0x62ebf22, (q31_t)0x80263f36, (q31_t)0x6287882, (q31_t)0x8025f1ac, (q31_t)0x62231de, (q31_t)0x8025a471, + (q31_t)0x61beb36, (q31_t)0x80255784, + (q31_t)0x615a48b, (q31_t)0x80250ae7, (q31_t)0x60f5ddc, (q31_t)0x8024be99, (q31_t)0x6091729, (q31_t)0x80247299, + (q31_t)0x602d072, (q31_t)0x802426e8, + (q31_t)0x5fc89b8, (q31_t)0x8023db86, (q31_t)0x5f642fa, (q31_t)0x80239073, (q31_t)0x5effc38, (q31_t)0x802345af, + (q31_t)0x5e9b572, (q31_t)0x8022fb3a, + (q31_t)0x5e36ea9, (q31_t)0x8022b114, (q31_t)0x5dd27dd, (q31_t)0x8022673c, (q31_t)0x5d6e10c, (q31_t)0x80221db3, + (q31_t)0x5d09a38, (q31_t)0x8021d47a, + (q31_t)0x5ca5361, (q31_t)0x80218b8f, (q31_t)0x5c40c86, (q31_t)0x802142f3, (q31_t)0x5bdc5a7, (q31_t)0x8020faa6, + (q31_t)0x5b77ec5, (q31_t)0x8020b2a7, + (q31_t)0x5b137df, (q31_t)0x80206af8, (q31_t)0x5aaf0f6, (q31_t)0x80202397, (q31_t)0x5a4aa09, (q31_t)0x801fdc86, + (q31_t)0x59e6319, (q31_t)0x801f95c3, + (q31_t)0x5981c26, (q31_t)0x801f4f4f, (q31_t)0x591d52f, (q31_t)0x801f092a, (q31_t)0x58b8e34, (q31_t)0x801ec354, + (q31_t)0x5854736, (q31_t)0x801e7dcd, + (q31_t)0x57f0035, (q31_t)0x801e3895, (q31_t)0x578b930, (q31_t)0x801df3ab, (q31_t)0x5727228, (q31_t)0x801daf11, + (q31_t)0x56c2b1c, (q31_t)0x801d6ac5, + (q31_t)0x565e40d, (q31_t)0x801d26c8, (q31_t)0x55f9cfb, (q31_t)0x801ce31a, (q31_t)0x55955e6, (q31_t)0x801c9fbb, + (q31_t)0x5530ecd, (q31_t)0x801c5cab, + (q31_t)0x54cc7b1, (q31_t)0x801c19ea, (q31_t)0x5468092, (q31_t)0x801bd777, (q31_t)0x540396f, (q31_t)0x801b9554, + (q31_t)0x539f249, (q31_t)0x801b537f, + (q31_t)0x533ab20, (q31_t)0x801b11fa, (q31_t)0x52d63f4, (q31_t)0x801ad0c3, (q31_t)0x5271cc4, (q31_t)0x801a8fdb, + (q31_t)0x520d592, (q31_t)0x801a4f42, + (q31_t)0x51a8e5c, (q31_t)0x801a0ef8, (q31_t)0x5144723, (q31_t)0x8019cefd, (q31_t)0x50dffe7, (q31_t)0x80198f50, + (q31_t)0x507b8a8, (q31_t)0x80194ff3, + (q31_t)0x5017165, (q31_t)0x801910e4, (q31_t)0x4fb2a20, (q31_t)0x8018d225, (q31_t)0x4f4e2d8, (q31_t)0x801893b4, + (q31_t)0x4ee9b8c, (q31_t)0x80185592, + (q31_t)0x4e8543e, (q31_t)0x801817bf, (q31_t)0x4e20cec, (q31_t)0x8017da3b, (q31_t)0x4dbc597, (q31_t)0x80179d06, + (q31_t)0x4d57e40, (q31_t)0x80176020, + (q31_t)0x4cf36e5, (q31_t)0x80172388, (q31_t)0x4c8ef88, (q31_t)0x8016e740, (q31_t)0x4c2a827, (q31_t)0x8016ab46, + (q31_t)0x4bc60c4, (q31_t)0x80166f9c, + (q31_t)0x4b6195d, (q31_t)0x80163440, (q31_t)0x4afd1f4, (q31_t)0x8015f933, (q31_t)0x4a98a88, (q31_t)0x8015be75, + (q31_t)0x4a34319, (q31_t)0x80158406, + (q31_t)0x49cfba7, (q31_t)0x801549e6, (q31_t)0x496b432, (q31_t)0x80151015, (q31_t)0x4906cbb, (q31_t)0x8014d693, + (q31_t)0x48a2540, (q31_t)0x80149d5f, + (q31_t)0x483ddc3, (q31_t)0x8014647b, (q31_t)0x47d9643, (q31_t)0x80142be5, (q31_t)0x4774ec1, (q31_t)0x8013f39e, + (q31_t)0x471073b, (q31_t)0x8013bba7, + (q31_t)0x46abfb3, (q31_t)0x801383fe, (q31_t)0x4647828, (q31_t)0x80134ca4, (q31_t)0x45e309a, (q31_t)0x80131599, + (q31_t)0x457e90a, (q31_t)0x8012dedd, + (q31_t)0x451a177, (q31_t)0x8012a86f, (q31_t)0x44b59e1, (q31_t)0x80127251, (q31_t)0x4451249, (q31_t)0x80123c82, + (q31_t)0x43ecaae, (q31_t)0x80120701, + (q31_t)0x4388310, (q31_t)0x8011d1d0, (q31_t)0x4323b70, (q31_t)0x80119ced, (q31_t)0x42bf3cd, (q31_t)0x80116859, + (q31_t)0x425ac28, (q31_t)0x80113414, + (q31_t)0x41f6480, (q31_t)0x8011001f, (q31_t)0x4191cd5, (q31_t)0x8010cc78, (q31_t)0x412d528, (q31_t)0x8010991f, + (q31_t)0x40c8d79, (q31_t)0x80106616, + (q31_t)0x40645c7, (q31_t)0x8010335c, (q31_t)0x3fffe12, (q31_t)0x801000f1, (q31_t)0x3f9b65b, (q31_t)0x800fced4, + (q31_t)0x3f36ea2, (q31_t)0x800f9d07, + (q31_t)0x3ed26e6, (q31_t)0x800f6b88, (q31_t)0x3e6df28, (q31_t)0x800f3a59, (q31_t)0x3e09767, (q31_t)0x800f0978, + (q31_t)0x3da4fa4, (q31_t)0x800ed8e6, + (q31_t)0x3d407df, (q31_t)0x800ea8a3, (q31_t)0x3cdc017, (q31_t)0x800e78af, (q31_t)0x3c7784d, (q31_t)0x800e490a, + (q31_t)0x3c13080, (q31_t)0x800e19b4, + (q31_t)0x3bae8b2, (q31_t)0x800deaad, (q31_t)0x3b4a0e0, (q31_t)0x800dbbf5, (q31_t)0x3ae590d, (q31_t)0x800d8d8b, + (q31_t)0x3a81137, (q31_t)0x800d5f71, + (q31_t)0x3a1c960, (q31_t)0x800d31a5, (q31_t)0x39b8185, (q31_t)0x800d0429, (q31_t)0x39539a9, (q31_t)0x800cd6fb, + (q31_t)0x38ef1ca, (q31_t)0x800caa1c, + (q31_t)0x388a9ea, (q31_t)0x800c7d8c, (q31_t)0x3826207, (q31_t)0x800c514c, (q31_t)0x37c1a22, (q31_t)0x800c255a, + (q31_t)0x375d23a, (q31_t)0x800bf9b7, + (q31_t)0x36f8a51, (q31_t)0x800bce63, (q31_t)0x3694265, (q31_t)0x800ba35d, (q31_t)0x362fa78, (q31_t)0x800b78a7, + (q31_t)0x35cb288, (q31_t)0x800b4e40, + (q31_t)0x3566a96, (q31_t)0x800b2427, (q31_t)0x35022a2, (q31_t)0x800afa5e, (q31_t)0x349daac, (q31_t)0x800ad0e3, + (q31_t)0x34392b4, (q31_t)0x800aa7b8, + (q31_t)0x33d4abb, (q31_t)0x800a7edb, (q31_t)0x33702bf, (q31_t)0x800a564e, (q31_t)0x330bac1, (q31_t)0x800a2e0f, + (q31_t)0x32a72c1, (q31_t)0x800a061f, + (q31_t)0x3242abf, (q31_t)0x8009de7e, (q31_t)0x31de2bb, (q31_t)0x8009b72c, (q31_t)0x3179ab5, (q31_t)0x80099029, + (q31_t)0x31152ae, (q31_t)0x80096975, + (q31_t)0x30b0aa4, (q31_t)0x80094310, (q31_t)0x304c299, (q31_t)0x80091cf9, (q31_t)0x2fe7a8c, (q31_t)0x8008f732, + (q31_t)0x2f8327d, (q31_t)0x8008d1ba, + (q31_t)0x2f1ea6c, (q31_t)0x8008ac90, (q31_t)0x2eba259, (q31_t)0x800887b6, (q31_t)0x2e55a44, (q31_t)0x8008632a, + (q31_t)0x2df122e, (q31_t)0x80083eed, + (q31_t)0x2d8ca16, (q31_t)0x80081b00, (q31_t)0x2d281fc, (q31_t)0x8007f761, (q31_t)0x2cc39e1, (q31_t)0x8007d411, + (q31_t)0x2c5f1c3, (q31_t)0x8007b110, + (q31_t)0x2bfa9a4, (q31_t)0x80078e5e, (q31_t)0x2b96184, (q31_t)0x80076bfb, (q31_t)0x2b31961, (q31_t)0x800749e7, + (q31_t)0x2acd13d, (q31_t)0x80072822, + (q31_t)0x2a68917, (q31_t)0x800706ac, (q31_t)0x2a040f0, (q31_t)0x8006e585, (q31_t)0x299f8c7, (q31_t)0x8006c4ac, + (q31_t)0x293b09c, (q31_t)0x8006a423, + (q31_t)0x28d6870, (q31_t)0x800683e8, (q31_t)0x2872043, (q31_t)0x800663fd, (q31_t)0x280d813, (q31_t)0x80064460, + (q31_t)0x27a8fe2, (q31_t)0x80062513, + (q31_t)0x27447b0, (q31_t)0x80060614, (q31_t)0x26dff7c, (q31_t)0x8005e764, (q31_t)0x267b747, (q31_t)0x8005c904, + (q31_t)0x2616f10, (q31_t)0x8005aaf2, + (q31_t)0x25b26d7, (q31_t)0x80058d2f, (q31_t)0x254de9e, (q31_t)0x80056fbb, (q31_t)0x24e9662, (q31_t)0x80055296, + (q31_t)0x2484e26, (q31_t)0x800535c0, + (q31_t)0x24205e8, (q31_t)0x80051939, (q31_t)0x23bbda8, (q31_t)0x8004fd00, (q31_t)0x2357567, (q31_t)0x8004e117, + (q31_t)0x22f2d25, (q31_t)0x8004c57d, + (q31_t)0x228e4e2, (q31_t)0x8004aa32, (q31_t)0x2229c9d, (q31_t)0x80048f35, (q31_t)0x21c5457, (q31_t)0x80047488, + (q31_t)0x2160c0f, (q31_t)0x80045a29, + (q31_t)0x20fc3c6, (q31_t)0x8004401a, (q31_t)0x2097b7c, (q31_t)0x80042659, (q31_t)0x2033331, (q31_t)0x80040ce7, + (q31_t)0x1fceae4, (q31_t)0x8003f3c5, + (q31_t)0x1f6a297, (q31_t)0x8003daf1, (q31_t)0x1f05a48, (q31_t)0x8003c26c, (q31_t)0x1ea11f7, (q31_t)0x8003aa36, + (q31_t)0x1e3c9a6, (q31_t)0x8003924f, + (q31_t)0x1dd8154, (q31_t)0x80037ab7, (q31_t)0x1d73900, (q31_t)0x8003636e, (q31_t)0x1d0f0ab, (q31_t)0x80034c74, + (q31_t)0x1caa855, (q31_t)0x800335c9, + (q31_t)0x1c45ffe, (q31_t)0x80031f6d, (q31_t)0x1be17a6, (q31_t)0x80030960, (q31_t)0x1b7cf4d, (q31_t)0x8002f3a1, + (q31_t)0x1b186f3, (q31_t)0x8002de32, + (q31_t)0x1ab3e97, (q31_t)0x8002c912, (q31_t)0x1a4f63b, (q31_t)0x8002b440, (q31_t)0x19eaddd, (q31_t)0x80029fbe, + (q31_t)0x198657f, (q31_t)0x80028b8a, + (q31_t)0x1921d20, (q31_t)0x800277a6, (q31_t)0x18bd4bf, (q31_t)0x80026410, (q31_t)0x1858c5e, (q31_t)0x800250c9, + (q31_t)0x17f43fc, (q31_t)0x80023dd2, + (q31_t)0x178fb99, (q31_t)0x80022b29, (q31_t)0x172b335, (q31_t)0x800218cf, (q31_t)0x16c6ad0, (q31_t)0x800206c4, + (q31_t)0x166226a, (q31_t)0x8001f508, + (q31_t)0x15fda03, (q31_t)0x8001e39b, (q31_t)0x159919c, (q31_t)0x8001d27d, (q31_t)0x1534934, (q31_t)0x8001c1ae, + (q31_t)0x14d00ca, (q31_t)0x8001b12e, + (q31_t)0x146b860, (q31_t)0x8001a0fd, (q31_t)0x1406ff6, (q31_t)0x8001911b, (q31_t)0x13a278a, (q31_t)0x80018187, + (q31_t)0x133df1e, (q31_t)0x80017243, + (q31_t)0x12d96b1, (q31_t)0x8001634e, (q31_t)0x1274e43, (q31_t)0x800154a7, (q31_t)0x12105d5, (q31_t)0x80014650, + (q31_t)0x11abd66, (q31_t)0x80013847, + (q31_t)0x11474f6, (q31_t)0x80012a8e, (q31_t)0x10e2c85, (q31_t)0x80011d23, (q31_t)0x107e414, (q31_t)0x80011008, + (q31_t)0x1019ba2, (q31_t)0x8001033b, + (q31_t)0xfb5330, (q31_t)0x8000f6bd, (q31_t)0xf50abd, (q31_t)0x8000ea8e, (q31_t)0xeec249, (q31_t)0x8000deaf, (q31_t)0xe879d5, + (q31_t)0x8000d31e, + (q31_t)0xe23160, (q31_t)0x8000c7dc, (q31_t)0xdbe8eb, (q31_t)0x8000bce9, (q31_t)0xd5a075, (q31_t)0x8000b245, (q31_t)0xcf57ff, + (q31_t)0x8000a7f0, + (q31_t)0xc90f88, (q31_t)0x80009dea, (q31_t)0xc2c711, (q31_t)0x80009433, (q31_t)0xbc7e99, (q31_t)0x80008aca, (q31_t)0xb63621, + (q31_t)0x800081b1, + (q31_t)0xafeda8, (q31_t)0x800078e7, (q31_t)0xa9a52f, (q31_t)0x8000706c, (q31_t)0xa35cb5, (q31_t)0x8000683f, (q31_t)0x9d143b, + (q31_t)0x80006062, + (q31_t)0x96cbc1, (q31_t)0x800058d4, (q31_t)0x908346, (q31_t)0x80005194, (q31_t)0x8a3acb, (q31_t)0x80004aa4, (q31_t)0x83f250, + (q31_t)0x80004402, + (q31_t)0x7da9d4, (q31_t)0x80003daf, (q31_t)0x776159, (q31_t)0x800037ac, (q31_t)0x7118dc, (q31_t)0x800031f7, (q31_t)0x6ad060, + (q31_t)0x80002c91, + (q31_t)0x6487e3, (q31_t)0x8000277a, (q31_t)0x5e3f66, (q31_t)0x800022b3, (q31_t)0x57f6e9, (q31_t)0x80001e3a, (q31_t)0x51ae6b, + (q31_t)0x80001a10, + (q31_t)0x4b65ee, (q31_t)0x80001635, (q31_t)0x451d70, (q31_t)0x800012a9, (q31_t)0x3ed4f2, (q31_t)0x80000f6c, (q31_t)0x388c74, + (q31_t)0x80000c7e, + (q31_t)0x3243f5, (q31_t)0x800009df, (q31_t)0x2bfb77, (q31_t)0x8000078e, (q31_t)0x25b2f8, (q31_t)0x8000058d, (q31_t)0x1f6a7a, + (q31_t)0x800003db, + (q31_t)0x1921fb, (q31_t)0x80000278, (q31_t)0x12d97c, (q31_t)0x80000163, (q31_t)0xc90fe, (q31_t)0x8000009e, (q31_t)0x6487f, + (q31_t)0x80000027 + +}; + +/** +* \par +* cosFactor tables are generated using the formula :
cos_factors[n] = 2 * cos((2n+1)*pi/(4*N))
+* \par +* C command to generate the table +*
+* for(i = 0; i< N; i++)
+* {
+*   cos_factors[i]= 2 * cos((2*i+1)*c/2);
+* } 
+* \par +* where N is the number of factors to generate and c is pi/(2*N) +* \par +* Then converted to q31 format by multiplying with 2^31 and saturated if required. +*/ + + +static const q31_t cos_factorsQ31_128[128] = { + (q31_t)0x7fff6216, (q31_t)0x7ffa72d1, (q31_t)0x7ff09478, (q31_t)0x7fe1c76b, (q31_t)0x7fce0c3e, (q31_t)0x7fb563b3, + (q31_t)0x7f97cebd, (q31_t)0x7f754e80, + (q31_t)0x7f4de451, (q31_t)0x7f2191b4, (q31_t)0x7ef05860, (q31_t)0x7eba3a39, (q31_t)0x7e7f3957, (q31_t)0x7e3f57ff, + (q31_t)0x7dfa98a8, (q31_t)0x7db0fdf8, + (q31_t)0x7d628ac6, (q31_t)0x7d0f4218, (q31_t)0x7cb72724, (q31_t)0x7c5a3d50, (q31_t)0x7bf88830, (q31_t)0x7b920b89, + (q31_t)0x7b26cb4f, (q31_t)0x7ab6cba4, + (q31_t)0x7a4210d8, (q31_t)0x79c89f6e, (q31_t)0x794a7c12, (q31_t)0x78c7aba2, (q31_t)0x78403329, (q31_t)0x77b417df, + (q31_t)0x77235f2d, (q31_t)0x768e0ea6, + (q31_t)0x75f42c0b, (q31_t)0x7555bd4c, (q31_t)0x74b2c884, (q31_t)0x740b53fb, (q31_t)0x735f6626, (q31_t)0x72af05a7, + (q31_t)0x71fa3949, (q31_t)0x71410805, + (q31_t)0x708378ff, (q31_t)0x6fc19385, (q31_t)0x6efb5f12, (q31_t)0x6e30e34a, (q31_t)0x6d6227fa, (q31_t)0x6c8f351c, + (q31_t)0x6bb812d1, (q31_t)0x6adcc964, + (q31_t)0x69fd614a, (q31_t)0x6919e320, (q31_t)0x683257ab, (q31_t)0x6746c7d8, (q31_t)0x66573cbb, (q31_t)0x6563bf92, + (q31_t)0x646c59bf, (q31_t)0x637114cc, + (q31_t)0x6271fa69, (q31_t)0x616f146c, (q31_t)0x60686ccf, (q31_t)0x5f5e0db3, (q31_t)0x5e50015d, (q31_t)0x5d3e5237, + (q31_t)0x5c290acc, (q31_t)0x5b1035cf, + (q31_t)0x59f3de12, (q31_t)0x58d40e8c, (q31_t)0x57b0d256, (q31_t)0x568a34a9, (q31_t)0x556040e2, (q31_t)0x5433027d, + (q31_t)0x53028518, (q31_t)0x51ced46e, + (q31_t)0x5097fc5e, (q31_t)0x4f5e08e3, (q31_t)0x4e210617, (q31_t)0x4ce10034, (q31_t)0x4b9e0390, (q31_t)0x4a581c9e, + (q31_t)0x490f57ee, (q31_t)0x47c3c22f, + (q31_t)0x46756828, (q31_t)0x452456bd, (q31_t)0x43d09aed, (q31_t)0x427a41d0, (q31_t)0x4121589b, (q31_t)0x3fc5ec98, + (q31_t)0x3e680b2c, (q31_t)0x3d07c1d6, + (q31_t)0x3ba51e29, (q31_t)0x3a402dd2, (q31_t)0x38d8fe93, (q31_t)0x376f9e46, (q31_t)0x36041ad9, (q31_t)0x34968250, + (q31_t)0x3326e2c3, (q31_t)0x31b54a5e, + (q31_t)0x3041c761, (q31_t)0x2ecc681e, (q31_t)0x2d553afc, (q31_t)0x2bdc4e6f, (q31_t)0x2a61b101, (q31_t)0x28e5714b, + (q31_t)0x27679df4, (q31_t)0x25e845b6, + (q31_t)0x24677758, (q31_t)0x22e541af, (q31_t)0x2161b3a0, (q31_t)0x1fdcdc1b, (q31_t)0x1e56ca1e, (q31_t)0x1ccf8cb3, + (q31_t)0x1b4732ef, (q31_t)0x19bdcbf3, + (q31_t)0x183366e9, (q31_t)0x16a81305, (q31_t)0x151bdf86, (q31_t)0x138edbb1, (q31_t)0x120116d5, (q31_t)0x1072a048, + (q31_t)0xee38766, (q31_t)0xd53db92, + (q31_t)0xbc3ac35, (q31_t)0xa3308bd, (q31_t)0x8a2009a, (q31_t)0x710a345, (q31_t)0x57f0035, (q31_t)0x3ed26e6, (q31_t)0x25b26d7, + (q31_t)0xc90f88 +}; + +static const q31_t cos_factorsQ31_512[512] = { + (q31_t)0x7ffff621, (q31_t)0x7fffa72c, (q31_t)0x7fff0943, (q31_t)0x7ffe1c65, (q31_t)0x7ffce093, (q31_t)0x7ffb55ce, + (q31_t)0x7ff97c18, (q31_t)0x7ff75370, + (q31_t)0x7ff4dbd9, (q31_t)0x7ff21553, (q31_t)0x7feeffe1, (q31_t)0x7feb9b85, (q31_t)0x7fe7e841, (q31_t)0x7fe3e616, + (q31_t)0x7fdf9508, (q31_t)0x7fdaf519, + (q31_t)0x7fd6064c, (q31_t)0x7fd0c8a3, (q31_t)0x7fcb3c23, (q31_t)0x7fc560cf, (q31_t)0x7fbf36aa, (q31_t)0x7fb8bdb8, + (q31_t)0x7fb1f5fc, (q31_t)0x7faadf7c, + (q31_t)0x7fa37a3c, (q31_t)0x7f9bc640, (q31_t)0x7f93c38c, (q31_t)0x7f8b7227, (q31_t)0x7f82d214, (q31_t)0x7f79e35a, + (q31_t)0x7f70a5fe, (q31_t)0x7f671a05, + (q31_t)0x7f5d3f75, (q31_t)0x7f531655, (q31_t)0x7f489eaa, (q31_t)0x7f3dd87c, (q31_t)0x7f32c3d1, (q31_t)0x7f2760af, + (q31_t)0x7f1baf1e, (q31_t)0x7f0faf25, + (q31_t)0x7f0360cb, (q31_t)0x7ef6c418, (q31_t)0x7ee9d914, (q31_t)0x7edc9fc6, (q31_t)0x7ecf1837, (q31_t)0x7ec14270, + (q31_t)0x7eb31e78, (q31_t)0x7ea4ac58, + (q31_t)0x7e95ec1a, (q31_t)0x7e86ddc6, (q31_t)0x7e778166, (q31_t)0x7e67d703, (q31_t)0x7e57dea7, (q31_t)0x7e47985b, + (q31_t)0x7e37042a, (q31_t)0x7e26221f, + (q31_t)0x7e14f242, (q31_t)0x7e0374a0, (q31_t)0x7df1a942, (q31_t)0x7ddf9034, (q31_t)0x7dcd2981, (q31_t)0x7dba7534, + (q31_t)0x7da77359, (q31_t)0x7d9423fc, + (q31_t)0x7d808728, (q31_t)0x7d6c9ce9, (q31_t)0x7d58654d, (q31_t)0x7d43e05e, (q31_t)0x7d2f0e2b, (q31_t)0x7d19eebf, + (q31_t)0x7d048228, (q31_t)0x7ceec873, + (q31_t)0x7cd8c1ae, (q31_t)0x7cc26de5, (q31_t)0x7cabcd28, (q31_t)0x7c94df83, (q31_t)0x7c7da505, (q31_t)0x7c661dbc, + (q31_t)0x7c4e49b7, (q31_t)0x7c362904, + (q31_t)0x7c1dbbb3, (q31_t)0x7c0501d2, (q31_t)0x7bebfb70, (q31_t)0x7bd2a89e, (q31_t)0x7bb9096b, (q31_t)0x7b9f1de6, + (q31_t)0x7b84e61f, (q31_t)0x7b6a6227, + (q31_t)0x7b4f920e, (q31_t)0x7b3475e5, (q31_t)0x7b190dbc, (q31_t)0x7afd59a4, (q31_t)0x7ae159ae, (q31_t)0x7ac50dec, + (q31_t)0x7aa8766f, (q31_t)0x7a8b9348, + (q31_t)0x7a6e648a, (q31_t)0x7a50ea47, (q31_t)0x7a332490, (q31_t)0x7a151378, (q31_t)0x79f6b711, (q31_t)0x79d80f6f, + (q31_t)0x79b91ca4, (q31_t)0x7999dec4, + (q31_t)0x797a55e0, (q31_t)0x795a820e, (q31_t)0x793a6361, (q31_t)0x7919f9ec, (q31_t)0x78f945c3, (q31_t)0x78d846fb, + (q31_t)0x78b6fda8, (q31_t)0x789569df, + (q31_t)0x78738bb3, (q31_t)0x7851633b, (q31_t)0x782ef08b, (q31_t)0x780c33b8, (q31_t)0x77e92cd9, (q31_t)0x77c5dc01, + (q31_t)0x77a24148, (q31_t)0x777e5cc3, + (q31_t)0x775a2e89, (q31_t)0x7735b6af, (q31_t)0x7710f54c, (q31_t)0x76ebea77, (q31_t)0x76c69647, (q31_t)0x76a0f8d2, + (q31_t)0x767b1231, (q31_t)0x7654e279, + (q31_t)0x762e69c4, (q31_t)0x7607a828, (q31_t)0x75e09dbd, (q31_t)0x75b94a9c, (q31_t)0x7591aedd, (q31_t)0x7569ca99, + (q31_t)0x75419de7, (q31_t)0x751928e0, + (q31_t)0x74f06b9e, (q31_t)0x74c7663a, (q31_t)0x749e18cd, (q31_t)0x74748371, (q31_t)0x744aa63f, (q31_t)0x74208150, + (q31_t)0x73f614c0, (q31_t)0x73cb60a8, + (q31_t)0x73a06522, (q31_t)0x73752249, (q31_t)0x73499838, (q31_t)0x731dc70a, (q31_t)0x72f1aed9, (q31_t)0x72c54fc1, + (q31_t)0x7298a9dd, (q31_t)0x726bbd48, + (q31_t)0x723e8a20, (q31_t)0x7211107e, (q31_t)0x71e35080, (q31_t)0x71b54a41, (q31_t)0x7186fdde, (q31_t)0x71586b74, + (q31_t)0x7129931f, (q31_t)0x70fa74fc, + (q31_t)0x70cb1128, (q31_t)0x709b67c0, (q31_t)0x706b78e3, (q31_t)0x703b44ad, (q31_t)0x700acb3c, (q31_t)0x6fda0cae, + (q31_t)0x6fa90921, (q31_t)0x6f77c0b3, + (q31_t)0x6f463383, (q31_t)0x6f1461b0, (q31_t)0x6ee24b57, (q31_t)0x6eaff099, (q31_t)0x6e7d5193, (q31_t)0x6e4a6e66, + (q31_t)0x6e174730, (q31_t)0x6de3dc11, + (q31_t)0x6db02d29, (q31_t)0x6d7c3a98, (q31_t)0x6d48047e, (q31_t)0x6d138afb, (q31_t)0x6cdece2f, (q31_t)0x6ca9ce3b, + (q31_t)0x6c748b3f, (q31_t)0x6c3f055d, + (q31_t)0x6c093cb6, (q31_t)0x6bd3316a, (q31_t)0x6b9ce39b, (q31_t)0x6b66536b, (q31_t)0x6b2f80fb, (q31_t)0x6af86c6c, + (q31_t)0x6ac115e2, (q31_t)0x6a897d7d, + (q31_t)0x6a51a361, (q31_t)0x6a1987b0, (q31_t)0x69e12a8c, (q31_t)0x69a88c19, (q31_t)0x696fac78, (q31_t)0x69368bce, + (q31_t)0x68fd2a3d, (q31_t)0x68c387e9, + (q31_t)0x6889a4f6, (q31_t)0x684f8186, (q31_t)0x68151dbe, (q31_t)0x67da79c3, (q31_t)0x679f95b7, (q31_t)0x676471c0, + (q31_t)0x67290e02, (q31_t)0x66ed6aa1, + (q31_t)0x66b187c3, (q31_t)0x6675658c, (q31_t)0x66390422, (q31_t)0x65fc63a9, (q31_t)0x65bf8447, (q31_t)0x65826622, + (q31_t)0x6545095f, (q31_t)0x65076e25, + (q31_t)0x64c99498, (q31_t)0x648b7ce0, (q31_t)0x644d2722, (q31_t)0x640e9386, (q31_t)0x63cfc231, (q31_t)0x6390b34a, + (q31_t)0x635166f9, (q31_t)0x6311dd64, + (q31_t)0x62d216b3, (q31_t)0x6292130c, (q31_t)0x6251d298, (q31_t)0x6211557e, (q31_t)0x61d09be5, (q31_t)0x618fa5f7, + (q31_t)0x614e73da, (q31_t)0x610d05b7, + (q31_t)0x60cb5bb7, (q31_t)0x60897601, (q31_t)0x604754bf, (q31_t)0x6004f819, (q31_t)0x5fc26038, (q31_t)0x5f7f8d46, + (q31_t)0x5f3c7f6b, (q31_t)0x5ef936d1, + (q31_t)0x5eb5b3a2, (q31_t)0x5e71f606, (q31_t)0x5e2dfe29, (q31_t)0x5de9cc33, (q31_t)0x5da5604f, (q31_t)0x5d60baa7, + (q31_t)0x5d1bdb65, (q31_t)0x5cd6c2b5, + (q31_t)0x5c9170bf, (q31_t)0x5c4be5b0, (q31_t)0x5c0621b2, (q31_t)0x5bc024f0, (q31_t)0x5b79ef96, (q31_t)0x5b3381ce, + (q31_t)0x5aecdbc5, (q31_t)0x5aa5fda5, + (q31_t)0x5a5ee79a, (q31_t)0x5a1799d1, (q31_t)0x59d01475, (q31_t)0x598857b2, (q31_t)0x594063b5, (q31_t)0x58f838a9, + (q31_t)0x58afd6bd, (q31_t)0x58673e1b, + (q31_t)0x581e6ef1, (q31_t)0x57d5696d, (q31_t)0x578c2dba, (q31_t)0x5742bc06, (q31_t)0x56f9147e, (q31_t)0x56af3750, + (q31_t)0x566524aa, (q31_t)0x561adcb9, + (q31_t)0x55d05faa, (q31_t)0x5585adad, (q31_t)0x553ac6ee, (q31_t)0x54efab9c, (q31_t)0x54a45be6, (q31_t)0x5458d7f9, + (q31_t)0x540d2005, (q31_t)0x53c13439, + (q31_t)0x537514c2, (q31_t)0x5328c1d0, (q31_t)0x52dc3b92, (q31_t)0x528f8238, (q31_t)0x524295f0, (q31_t)0x51f576ea, + (q31_t)0x51a82555, (q31_t)0x515aa162, + (q31_t)0x510ceb40, (q31_t)0x50bf031f, (q31_t)0x5070e92f, (q31_t)0x50229da1, (q31_t)0x4fd420a4, (q31_t)0x4f857269, + (q31_t)0x4f369320, (q31_t)0x4ee782fb, + (q31_t)0x4e984229, (q31_t)0x4e48d0dd, (q31_t)0x4df92f46, (q31_t)0x4da95d96, (q31_t)0x4d595bfe, (q31_t)0x4d092ab0, + (q31_t)0x4cb8c9dd, (q31_t)0x4c6839b7, + (q31_t)0x4c177a6e, (q31_t)0x4bc68c36, (q31_t)0x4b756f40, (q31_t)0x4b2423be, (q31_t)0x4ad2a9e2, (q31_t)0x4a8101de, + (q31_t)0x4a2f2be6, (q31_t)0x49dd282a, + (q31_t)0x498af6df, (q31_t)0x49389836, (q31_t)0x48e60c62, (q31_t)0x48935397, (q31_t)0x48406e08, (q31_t)0x47ed5be6, + (q31_t)0x479a1d67, (q31_t)0x4746b2bc, + (q31_t)0x46f31c1a, (q31_t)0x469f59b4, (q31_t)0x464b6bbe, (q31_t)0x45f7526b, (q31_t)0x45a30df0, (q31_t)0x454e9e80, + (q31_t)0x44fa0450, (q31_t)0x44a53f93, + (q31_t)0x4450507e, (q31_t)0x43fb3746, (q31_t)0x43a5f41e, (q31_t)0x4350873c, (q31_t)0x42faf0d4, (q31_t)0x42a5311b, + (q31_t)0x424f4845, (q31_t)0x41f93689, + (q31_t)0x41a2fc1a, (q31_t)0x414c992f, (q31_t)0x40f60dfb, (q31_t)0x409f5ab6, (q31_t)0x40487f94, (q31_t)0x3ff17cca, + (q31_t)0x3f9a5290, (q31_t)0x3f430119, + (q31_t)0x3eeb889c, (q31_t)0x3e93e950, (q31_t)0x3e3c2369, (q31_t)0x3de4371f, (q31_t)0x3d8c24a8, (q31_t)0x3d33ec39, + (q31_t)0x3cdb8e09, (q31_t)0x3c830a50, + (q31_t)0x3c2a6142, (q31_t)0x3bd19318, (q31_t)0x3b78a007, (q31_t)0x3b1f8848, (q31_t)0x3ac64c0f, (q31_t)0x3a6ceb96, + (q31_t)0x3a136712, (q31_t)0x39b9bebc, + (q31_t)0x395ff2c9, (q31_t)0x39060373, (q31_t)0x38abf0ef, (q31_t)0x3851bb77, (q31_t)0x37f76341, (q31_t)0x379ce885, + (q31_t)0x37424b7b, (q31_t)0x36e78c5b, + (q31_t)0x368cab5c, (q31_t)0x3631a8b8, (q31_t)0x35d684a6, (q31_t)0x357b3f5d, (q31_t)0x351fd918, (q31_t)0x34c4520d, + (q31_t)0x3468aa76, (q31_t)0x340ce28b, + (q31_t)0x33b0fa84, (q31_t)0x3354f29b, (q31_t)0x32f8cb07, (q31_t)0x329c8402, (q31_t)0x32401dc6, (q31_t)0x31e39889, + (q31_t)0x3186f487, (q31_t)0x312a31f8, + (q31_t)0x30cd5115, (q31_t)0x30705217, (q31_t)0x30133539, (q31_t)0x2fb5fab2, (q31_t)0x2f58a2be, (q31_t)0x2efb2d95, + (q31_t)0x2e9d9b70, (q31_t)0x2e3fec8b, + (q31_t)0x2de2211e, (q31_t)0x2d843964, (q31_t)0x2d263596, (q31_t)0x2cc815ee, (q31_t)0x2c69daa6, (q31_t)0x2c0b83fa, + (q31_t)0x2bad1221, (q31_t)0x2b4e8558, + (q31_t)0x2aefddd8, (q31_t)0x2a911bdc, (q31_t)0x2a323f9e, (q31_t)0x29d34958, (q31_t)0x29743946, (q31_t)0x29150fa1, + (q31_t)0x28b5cca5, (q31_t)0x2856708d, + (q31_t)0x27f6fb92, (q31_t)0x27976df1, (q31_t)0x2737c7e3, (q31_t)0x26d809a5, (q31_t)0x26783370, (q31_t)0x26184581, + (q31_t)0x25b84012, (q31_t)0x2558235f, + (q31_t)0x24f7efa2, (q31_t)0x2497a517, (q31_t)0x243743fa, (q31_t)0x23d6cc87, (q31_t)0x23763ef7, (q31_t)0x23159b88, + (q31_t)0x22b4e274, (q31_t)0x225413f8, + (q31_t)0x21f3304f, (q31_t)0x219237b5, (q31_t)0x21312a65, (q31_t)0x20d0089c, (q31_t)0x206ed295, (q31_t)0x200d888d, + (q31_t)0x1fac2abf, (q31_t)0x1f4ab968, + (q31_t)0x1ee934c3, (q31_t)0x1e879d0d, (q31_t)0x1e25f282, (q31_t)0x1dc4355e, (q31_t)0x1d6265dd, (q31_t)0x1d00843d, + (q31_t)0x1c9e90b8, (q31_t)0x1c3c8b8c, + (q31_t)0x1bda74f6, (q31_t)0x1b784d30, (q31_t)0x1b161479, (q31_t)0x1ab3cb0d, (q31_t)0x1a517128, (q31_t)0x19ef0707, + (q31_t)0x198c8ce7, (q31_t)0x192a0304, + (q31_t)0x18c7699b, (q31_t)0x1864c0ea, (q31_t)0x1802092c, (q31_t)0x179f429f, (q31_t)0x173c6d80, (q31_t)0x16d98a0c, + (q31_t)0x1676987f, (q31_t)0x16139918, + (q31_t)0x15b08c12, (q31_t)0x154d71aa, (q31_t)0x14ea4a1f, (q31_t)0x148715ae, (q31_t)0x1423d492, (q31_t)0x13c0870a, + (q31_t)0x135d2d53, (q31_t)0x12f9c7aa, + (q31_t)0x1296564d, (q31_t)0x1232d979, (q31_t)0x11cf516a, (q31_t)0x116bbe60, (q31_t)0x11082096, (q31_t)0x10a4784b, + (q31_t)0x1040c5bb, (q31_t)0xfdd0926, + (q31_t)0xf7942c7, (q31_t)0xf1572dc, (q31_t)0xeb199a4, (q31_t)0xe4db75b, (q31_t)0xde9cc40, (q31_t)0xd85d88f, (q31_t)0xd21dc87, + (q31_t)0xcbdd865, + (q31_t)0xc59cc68, (q31_t)0xbf5b8cb, (q31_t)0xb919dcf, (q31_t)0xb2d7baf, (q31_t)0xac952aa, (q31_t)0xa6522fe, (q31_t)0xa00ece8, + (q31_t)0x99cb0a7, + (q31_t)0x9386e78, (q31_t)0x8d42699, (q31_t)0x86fd947, (q31_t)0x80b86c2, (q31_t)0x7a72f45, (q31_t)0x742d311, (q31_t)0x6de7262, + (q31_t)0x67a0d76, + (q31_t)0x615a48b, (q31_t)0x5b137df, (q31_t)0x54cc7b1, (q31_t)0x4e8543e, (q31_t)0x483ddc3, (q31_t)0x41f6480, (q31_t)0x3bae8b2, + (q31_t)0x3566a96, + (q31_t)0x2f1ea6c, (q31_t)0x28d6870, (q31_t)0x228e4e2, (q31_t)0x1c45ffe, (q31_t)0x15fda03, (q31_t)0xfb5330, (q31_t)0x96cbc1, + (q31_t)0x3243f5 +}; + +static const q31_t cos_factorsQ31_2048[2048] = { + (q31_t)0x7fffff62, (q31_t)0x7ffffa73, (q31_t)0x7ffff094, (q31_t)0x7fffe1c6, (q31_t)0x7fffce09, (q31_t)0x7fffb55c, + (q31_t)0x7fff97c1, (q31_t)0x7fff7536, + (q31_t)0x7fff4dbb, (q31_t)0x7fff2151, (q31_t)0x7ffeeff8, (q31_t)0x7ffeb9b0, (q31_t)0x7ffe7e79, (q31_t)0x7ffe3e52, + (q31_t)0x7ffdf93c, (q31_t)0x7ffdaf37, + (q31_t)0x7ffd6042, (q31_t)0x7ffd0c5f, (q31_t)0x7ffcb38c, (q31_t)0x7ffc55ca, (q31_t)0x7ffbf319, (q31_t)0x7ffb8b78, + (q31_t)0x7ffb1ee9, (q31_t)0x7ffaad6a, + (q31_t)0x7ffa36fc, (q31_t)0x7ff9bba0, (q31_t)0x7ff93b54, (q31_t)0x7ff8b619, (q31_t)0x7ff82bef, (q31_t)0x7ff79cd6, + (q31_t)0x7ff708ce, (q31_t)0x7ff66fd7, + (q31_t)0x7ff5d1f1, (q31_t)0x7ff52f1d, (q31_t)0x7ff48759, (q31_t)0x7ff3daa6, (q31_t)0x7ff32905, (q31_t)0x7ff27275, + (q31_t)0x7ff1b6f6, (q31_t)0x7ff0f688, + (q31_t)0x7ff0312c, (q31_t)0x7fef66e1, (q31_t)0x7fee97a7, (q31_t)0x7fedc37e, (q31_t)0x7fecea67, (q31_t)0x7fec0c62, + (q31_t)0x7feb296d, (q31_t)0x7fea418b, + (q31_t)0x7fe954ba, (q31_t)0x7fe862fa, (q31_t)0x7fe76c4c, (q31_t)0x7fe670b0, (q31_t)0x7fe57025, (q31_t)0x7fe46aac, + (q31_t)0x7fe36045, (q31_t)0x7fe250ef, + (q31_t)0x7fe13cac, (q31_t)0x7fe0237a, (q31_t)0x7fdf055a, (q31_t)0x7fdde24d, (q31_t)0x7fdcba51, (q31_t)0x7fdb8d67, + (q31_t)0x7fda5b8f, (q31_t)0x7fd924ca, + (q31_t)0x7fd7e917, (q31_t)0x7fd6a875, (q31_t)0x7fd562e7, (q31_t)0x7fd4186a, (q31_t)0x7fd2c900, (q31_t)0x7fd174a8, + (q31_t)0x7fd01b63, (q31_t)0x7fcebd31, + (q31_t)0x7fcd5a11, (q31_t)0x7fcbf203, (q31_t)0x7fca8508, (q31_t)0x7fc91320, (q31_t)0x7fc79c4b, (q31_t)0x7fc62089, + (q31_t)0x7fc49fda, (q31_t)0x7fc31a3d, + (q31_t)0x7fc18fb4, (q31_t)0x7fc0003e, (q31_t)0x7fbe6bdb, (q31_t)0x7fbcd28b, (q31_t)0x7fbb344e, (q31_t)0x7fb99125, + (q31_t)0x7fb7e90f, (q31_t)0x7fb63c0d, + (q31_t)0x7fb48a1e, (q31_t)0x7fb2d343, (q31_t)0x7fb1177b, (q31_t)0x7faf56c7, (q31_t)0x7fad9127, (q31_t)0x7fabc69b, + (q31_t)0x7fa9f723, (q31_t)0x7fa822bf, + (q31_t)0x7fa6496e, (q31_t)0x7fa46b32, (q31_t)0x7fa2880b, (q31_t)0x7fa09ff7, (q31_t)0x7f9eb2f8, (q31_t)0x7f9cc10d, + (q31_t)0x7f9aca37, (q31_t)0x7f98ce76, + (q31_t)0x7f96cdc9, (q31_t)0x7f94c831, (q31_t)0x7f92bdad, (q31_t)0x7f90ae3f, (q31_t)0x7f8e99e6, (q31_t)0x7f8c80a1, + (q31_t)0x7f8a6272, (q31_t)0x7f883f58, + (q31_t)0x7f861753, (q31_t)0x7f83ea64, (q31_t)0x7f81b88a, (q31_t)0x7f7f81c6, (q31_t)0x7f7d4617, (q31_t)0x7f7b057e, + (q31_t)0x7f78bffb, (q31_t)0x7f76758e, + (q31_t)0x7f742637, (q31_t)0x7f71d1f6, (q31_t)0x7f6f78cb, (q31_t)0x7f6d1ab6, (q31_t)0x7f6ab7b8, (q31_t)0x7f684fd0, + (q31_t)0x7f65e2ff, (q31_t)0x7f637144, + (q31_t)0x7f60faa0, (q31_t)0x7f5e7f13, (q31_t)0x7f5bfe9d, (q31_t)0x7f59793e, (q31_t)0x7f56eef5, (q31_t)0x7f545fc5, + (q31_t)0x7f51cbab, (q31_t)0x7f4f32a9, + (q31_t)0x7f4c94be, (q31_t)0x7f49f1eb, (q31_t)0x7f474a30, (q31_t)0x7f449d8c, (q31_t)0x7f41ec01, (q31_t)0x7f3f358d, + (q31_t)0x7f3c7a31, (q31_t)0x7f39b9ee, + (q31_t)0x7f36f4c3, (q31_t)0x7f342ab1, (q31_t)0x7f315bb7, (q31_t)0x7f2e87d6, (q31_t)0x7f2baf0d, (q31_t)0x7f28d15d, + (q31_t)0x7f25eec7, (q31_t)0x7f230749, + (q31_t)0x7f201ae5, (q31_t)0x7f1d299a, (q31_t)0x7f1a3368, (q31_t)0x7f173850, (q31_t)0x7f143852, (q31_t)0x7f11336d, + (q31_t)0x7f0e29a3, (q31_t)0x7f0b1af2, + (q31_t)0x7f08075c, (q31_t)0x7f04eedf, (q31_t)0x7f01d17d, (q31_t)0x7efeaf36, (q31_t)0x7efb8809, (q31_t)0x7ef85bf7, + (q31_t)0x7ef52b00, (q31_t)0x7ef1f524, + (q31_t)0x7eeeba62, (q31_t)0x7eeb7abc, (q31_t)0x7ee83632, (q31_t)0x7ee4ecc3, (q31_t)0x7ee19e6f, (q31_t)0x7ede4b38, + (q31_t)0x7edaf31c, (q31_t)0x7ed7961c, + (q31_t)0x7ed43438, (q31_t)0x7ed0cd70, (q31_t)0x7ecd61c5, (q31_t)0x7ec9f137, (q31_t)0x7ec67bc5, (q31_t)0x7ec3016f, + (q31_t)0x7ebf8237, (q31_t)0x7ebbfe1c, + (q31_t)0x7eb8751e, (q31_t)0x7eb4e73d, (q31_t)0x7eb1547a, (q31_t)0x7eadbcd4, (q31_t)0x7eaa204c, (q31_t)0x7ea67ee2, + (q31_t)0x7ea2d896, (q31_t)0x7e9f2d68, + (q31_t)0x7e9b7d58, (q31_t)0x7e97c867, (q31_t)0x7e940e94, (q31_t)0x7e904fe0, (q31_t)0x7e8c8c4b, (q31_t)0x7e88c3d5, + (q31_t)0x7e84f67e, (q31_t)0x7e812447, + (q31_t)0x7e7d4d2f, (q31_t)0x7e797136, (q31_t)0x7e75905d, (q31_t)0x7e71aaa4, (q31_t)0x7e6dc00c, (q31_t)0x7e69d093, + (q31_t)0x7e65dc3b, (q31_t)0x7e61e303, + (q31_t)0x7e5de4ec, (q31_t)0x7e59e1f5, (q31_t)0x7e55da20, (q31_t)0x7e51cd6c, (q31_t)0x7e4dbbd9, (q31_t)0x7e49a567, + (q31_t)0x7e458a17, (q31_t)0x7e4169e9, + (q31_t)0x7e3d44dd, (q31_t)0x7e391af3, (q31_t)0x7e34ec2b, (q31_t)0x7e30b885, (q31_t)0x7e2c8002, (q31_t)0x7e2842a2, + (q31_t)0x7e240064, (q31_t)0x7e1fb94a, + (q31_t)0x7e1b6d53, (q31_t)0x7e171c7f, (q31_t)0x7e12c6ce, (q31_t)0x7e0e6c42, (q31_t)0x7e0a0cd9, (q31_t)0x7e05a894, + (q31_t)0x7e013f74, (q31_t)0x7dfcd178, + (q31_t)0x7df85ea0, (q31_t)0x7df3e6ee, (q31_t)0x7def6a60, (q31_t)0x7deae8f7, (q31_t)0x7de662b3, (q31_t)0x7de1d795, + (q31_t)0x7ddd479d, (q31_t)0x7dd8b2ca, + (q31_t)0x7dd4191d, (q31_t)0x7dcf7a96, (q31_t)0x7dcad736, (q31_t)0x7dc62efc, (q31_t)0x7dc181e8, (q31_t)0x7dbccffc, + (q31_t)0x7db81936, (q31_t)0x7db35d98, + (q31_t)0x7dae9d21, (q31_t)0x7da9d7d2, (q31_t)0x7da50dab, (q31_t)0x7da03eab, (q31_t)0x7d9b6ad3, (q31_t)0x7d969224, + (q31_t)0x7d91b49e, (q31_t)0x7d8cd240, + (q31_t)0x7d87eb0a, (q31_t)0x7d82fefe, (q31_t)0x7d7e0e1c, (q31_t)0x7d791862, (q31_t)0x7d741dd2, (q31_t)0x7d6f1e6c, + (q31_t)0x7d6a1a31, (q31_t)0x7d65111f, + (q31_t)0x7d600338, (q31_t)0x7d5af07b, (q31_t)0x7d55d8e9, (q31_t)0x7d50bc82, (q31_t)0x7d4b9b46, (q31_t)0x7d467536, + (q31_t)0x7d414a51, (q31_t)0x7d3c1a98, + (q31_t)0x7d36e60b, (q31_t)0x7d31acaa, (q31_t)0x7d2c6e76, (q31_t)0x7d272b6e, (q31_t)0x7d21e393, (q31_t)0x7d1c96e5, + (q31_t)0x7d174564, (q31_t)0x7d11ef11, + (q31_t)0x7d0c93eb, (q31_t)0x7d0733f3, (q31_t)0x7d01cf29, (q31_t)0x7cfc658d, (q31_t)0x7cf6f720, (q31_t)0x7cf183e1, + (q31_t)0x7cec0bd1, (q31_t)0x7ce68ef0, + (q31_t)0x7ce10d3f, (q31_t)0x7cdb86bd, (q31_t)0x7cd5fb6a, (q31_t)0x7cd06b48, (q31_t)0x7ccad656, (q31_t)0x7cc53c94, + (q31_t)0x7cbf9e03, (q31_t)0x7cb9faa2, + (q31_t)0x7cb45272, (q31_t)0x7caea574, (q31_t)0x7ca8f3a7, (q31_t)0x7ca33d0c, (q31_t)0x7c9d81a3, (q31_t)0x7c97c16b, + (q31_t)0x7c91fc66, (q31_t)0x7c8c3294, + (q31_t)0x7c8663f4, (q31_t)0x7c809088, (q31_t)0x7c7ab84e, (q31_t)0x7c74db48, (q31_t)0x7c6ef976, (q31_t)0x7c6912d7, + (q31_t)0x7c63276d, (q31_t)0x7c5d3737, + (q31_t)0x7c574236, (q31_t)0x7c514869, (q31_t)0x7c4b49d2, (q31_t)0x7c45466f, (q31_t)0x7c3f3e42, (q31_t)0x7c39314b, + (q31_t)0x7c331f8a, (q31_t)0x7c2d08ff, + (q31_t)0x7c26edab, (q31_t)0x7c20cd8d, (q31_t)0x7c1aa8a6, (q31_t)0x7c147ef6, (q31_t)0x7c0e507e, (q31_t)0x7c081d3d, + (q31_t)0x7c01e534, (q31_t)0x7bfba863, + (q31_t)0x7bf566cb, (q31_t)0x7bef206b, (q31_t)0x7be8d544, (q31_t)0x7be28556, (q31_t)0x7bdc30a1, (q31_t)0x7bd5d726, + (q31_t)0x7bcf78e5, (q31_t)0x7bc915dd, + (q31_t)0x7bc2ae10, (q31_t)0x7bbc417e, (q31_t)0x7bb5d026, (q31_t)0x7baf5a09, (q31_t)0x7ba8df28, (q31_t)0x7ba25f82, + (q31_t)0x7b9bdb18, (q31_t)0x7b9551ea, + (q31_t)0x7b8ec3f8, (q31_t)0x7b883143, (q31_t)0x7b8199ca, (q31_t)0x7b7afd8f, (q31_t)0x7b745c91, (q31_t)0x7b6db6d0, + (q31_t)0x7b670c4d, (q31_t)0x7b605d09, + (q31_t)0x7b59a902, (q31_t)0x7b52f03a, (q31_t)0x7b4c32b1, (q31_t)0x7b457068, (q31_t)0x7b3ea95d, (q31_t)0x7b37dd92, + (q31_t)0x7b310d07, (q31_t)0x7b2a37bc, + (q31_t)0x7b235db2, (q31_t)0x7b1c7ee8, (q31_t)0x7b159b5f, (q31_t)0x7b0eb318, (q31_t)0x7b07c612, (q31_t)0x7b00d44d, + (q31_t)0x7af9ddcb, (q31_t)0x7af2e28b, + (q31_t)0x7aebe28d, (q31_t)0x7ae4ddd2, (q31_t)0x7addd45b, (q31_t)0x7ad6c626, (q31_t)0x7acfb336, (q31_t)0x7ac89b89, + (q31_t)0x7ac17f20, (q31_t)0x7aba5dfc, + (q31_t)0x7ab3381d, (q31_t)0x7aac0d82, (q31_t)0x7aa4de2d, (q31_t)0x7a9daa1d, (q31_t)0x7a967153, (q31_t)0x7a8f33d0, + (q31_t)0x7a87f192, (q31_t)0x7a80aa9c, + (q31_t)0x7a795eec, (q31_t)0x7a720e84, (q31_t)0x7a6ab963, (q31_t)0x7a635f8a, (q31_t)0x7a5c00f9, (q31_t)0x7a549db0, + (q31_t)0x7a4d35b0, (q31_t)0x7a45c8f9, + (q31_t)0x7a3e578b, (q31_t)0x7a36e166, (q31_t)0x7a2f668c, (q31_t)0x7a27e6fb, (q31_t)0x7a2062b5, (q31_t)0x7a18d9b9, + (q31_t)0x7a114c09, (q31_t)0x7a09b9a4, + (q31_t)0x7a02228a, (q31_t)0x79fa86bc, (q31_t)0x79f2e63a, (q31_t)0x79eb4105, (q31_t)0x79e3971c, (q31_t)0x79dbe880, + (q31_t)0x79d43532, (q31_t)0x79cc7d31, + (q31_t)0x79c4c07e, (q31_t)0x79bcff19, (q31_t)0x79b53903, (q31_t)0x79ad6e3c, (q31_t)0x79a59ec3, (q31_t)0x799dca9a, + (q31_t)0x7995f1c1, (q31_t)0x798e1438, + (q31_t)0x798631ff, (q31_t)0x797e4b16, (q31_t)0x79765f7f, (q31_t)0x796e6f39, (q31_t)0x79667a44, (q31_t)0x795e80a1, + (q31_t)0x79568250, (q31_t)0x794e7f52, + (q31_t)0x794677a6, (q31_t)0x793e6b4e, (q31_t)0x79365a49, (q31_t)0x792e4497, (q31_t)0x79262a3a, (q31_t)0x791e0b31, + (q31_t)0x7915e77c, (q31_t)0x790dbf1d, + (q31_t)0x79059212, (q31_t)0x78fd605d, (q31_t)0x78f529fe, (q31_t)0x78eceef6, (q31_t)0x78e4af44, (q31_t)0x78dc6ae8, + (q31_t)0x78d421e4, (q31_t)0x78cbd437, + (q31_t)0x78c381e2, (q31_t)0x78bb2ae5, (q31_t)0x78b2cf41, (q31_t)0x78aa6ef5, (q31_t)0x78a20a03, (q31_t)0x7899a06a, + (q31_t)0x7891322a, (q31_t)0x7888bf45, + (q31_t)0x788047ba, (q31_t)0x7877cb89, (q31_t)0x786f4ab4, (q31_t)0x7866c53a, (q31_t)0x785e3b1c, (q31_t)0x7855ac5a, + (q31_t)0x784d18f4, (q31_t)0x784480ea, + (q31_t)0x783be43e, (q31_t)0x783342ef, (q31_t)0x782a9cfe, (q31_t)0x7821f26b, (q31_t)0x78194336, (q31_t)0x78108f60, + (q31_t)0x7807d6e9, (q31_t)0x77ff19d1, + (q31_t)0x77f65819, (q31_t)0x77ed91c0, (q31_t)0x77e4c6c9, (q31_t)0x77dbf732, (q31_t)0x77d322fc, (q31_t)0x77ca4a27, + (q31_t)0x77c16cb4, (q31_t)0x77b88aa3, + (q31_t)0x77afa3f5, (q31_t)0x77a6b8a9, (q31_t)0x779dc8c0, (q31_t)0x7794d43b, (q31_t)0x778bdb19, (q31_t)0x7782dd5c, + (q31_t)0x7779db03, (q31_t)0x7770d40f, + (q31_t)0x7767c880, (q31_t)0x775eb857, (q31_t)0x7755a394, (q31_t)0x774c8a36, (q31_t)0x77436c40, (q31_t)0x773a49b0, + (q31_t)0x77312287, (q31_t)0x7727f6c6, + (q31_t)0x771ec66e, (q31_t)0x7715917d, (q31_t)0x770c57f5, (q31_t)0x770319d6, (q31_t)0x76f9d721, (q31_t)0x76f08fd5, + (q31_t)0x76e743f4, (q31_t)0x76ddf37c, + (q31_t)0x76d49e70, (q31_t)0x76cb44cf, (q31_t)0x76c1e699, (q31_t)0x76b883d0, (q31_t)0x76af1c72, (q31_t)0x76a5b082, + (q31_t)0x769c3ffe, (q31_t)0x7692cae8, + (q31_t)0x7689513f, (q31_t)0x767fd304, (q31_t)0x76765038, (q31_t)0x766cc8db, (q31_t)0x76633ced, (q31_t)0x7659ac6f, + (q31_t)0x76501760, (q31_t)0x76467dc2, + (q31_t)0x763cdf94, (q31_t)0x76333cd8, (q31_t)0x7629958c, (q31_t)0x761fe9b3, (q31_t)0x7616394c, (q31_t)0x760c8457, + (q31_t)0x7602cad5, (q31_t)0x75f90cc7, + (q31_t)0x75ef4a2c, (q31_t)0x75e58305, (q31_t)0x75dbb753, (q31_t)0x75d1e715, (q31_t)0x75c8124d, (q31_t)0x75be38fa, + (q31_t)0x75b45b1d, (q31_t)0x75aa78b6, + (q31_t)0x75a091c6, (q31_t)0x7596a64d, (q31_t)0x758cb64c, (q31_t)0x7582c1c2, (q31_t)0x7578c8b0, (q31_t)0x756ecb18, + (q31_t)0x7564c8f8, (q31_t)0x755ac251, + (q31_t)0x7550b725, (q31_t)0x7546a772, (q31_t)0x753c933a, (q31_t)0x75327a7d, (q31_t)0x75285d3b, (q31_t)0x751e3b75, + (q31_t)0x7514152b, (q31_t)0x7509ea5d, + (q31_t)0x74ffbb0d, (q31_t)0x74f58739, (q31_t)0x74eb4ee3, (q31_t)0x74e1120c, (q31_t)0x74d6d0b2, (q31_t)0x74cc8ad8, + (q31_t)0x74c2407d, (q31_t)0x74b7f1a1, + (q31_t)0x74ad9e46, (q31_t)0x74a3466b, (q31_t)0x7498ea11, (q31_t)0x748e8938, (q31_t)0x748423e0, (q31_t)0x7479ba0b, + (q31_t)0x746f4bb8, (q31_t)0x7464d8e8, + (q31_t)0x745a619b, (q31_t)0x744fe5d2, (q31_t)0x7445658d, (q31_t)0x743ae0cc, (q31_t)0x74305790, (q31_t)0x7425c9da, + (q31_t)0x741b37a9, (q31_t)0x7410a0fe, + (q31_t)0x740605d9, (q31_t)0x73fb663c, (q31_t)0x73f0c226, (q31_t)0x73e61997, (q31_t)0x73db6c91, (q31_t)0x73d0bb13, + (q31_t)0x73c6051f, (q31_t)0x73bb4ab3, + (q31_t)0x73b08bd1, (q31_t)0x73a5c87a, (q31_t)0x739b00ad, (q31_t)0x7390346b, (q31_t)0x738563b5, (q31_t)0x737a8e8a, + (q31_t)0x736fb4ec, (q31_t)0x7364d6da, + (q31_t)0x7359f456, (q31_t)0x734f0d5f, (q31_t)0x734421f6, (q31_t)0x7339321b, (q31_t)0x732e3dcf, (q31_t)0x73234512, + (q31_t)0x731847e5, (q31_t)0x730d4648, + (q31_t)0x7302403c, (q31_t)0x72f735c0, (q31_t)0x72ec26d6, (q31_t)0x72e1137d, (q31_t)0x72d5fbb7, (q31_t)0x72cadf83, + (q31_t)0x72bfbee3, (q31_t)0x72b499d6, + (q31_t)0x72a9705c, (q31_t)0x729e4277, (q31_t)0x72931027, (q31_t)0x7287d96c, (q31_t)0x727c9e47, (q31_t)0x72715eb8, + (q31_t)0x72661abf, (q31_t)0x725ad25d, + (q31_t)0x724f8593, (q31_t)0x72443460, (q31_t)0x7238dec5, (q31_t)0x722d84c4, (q31_t)0x7222265b, (q31_t)0x7216c38c, + (q31_t)0x720b5c57, (q31_t)0x71fff0bc, + (q31_t)0x71f480bc, (q31_t)0x71e90c57, (q31_t)0x71dd938f, (q31_t)0x71d21662, (q31_t)0x71c694d2, (q31_t)0x71bb0edf, + (q31_t)0x71af848a, (q31_t)0x71a3f5d2, + (q31_t)0x719862b9, (q31_t)0x718ccb3f, (q31_t)0x71812f65, (q31_t)0x71758f29, (q31_t)0x7169ea8f, (q31_t)0x715e4194, + (q31_t)0x7152943b, (q31_t)0x7146e284, + (q31_t)0x713b2c6e, (q31_t)0x712f71fb, (q31_t)0x7123b32b, (q31_t)0x7117effe, (q31_t)0x710c2875, (q31_t)0x71005c90, + (q31_t)0x70f48c50, (q31_t)0x70e8b7b5, + (q31_t)0x70dcdec0, (q31_t)0x70d10171, (q31_t)0x70c51fc8, (q31_t)0x70b939c7, (q31_t)0x70ad4f6d, (q31_t)0x70a160ba, + (q31_t)0x70956db1, (q31_t)0x70897650, + (q31_t)0x707d7a98, (q31_t)0x70717a8a, (q31_t)0x70657626, (q31_t)0x70596d6d, (q31_t)0x704d6060, (q31_t)0x70414efd, + (q31_t)0x70353947, (q31_t)0x70291f3e, + (q31_t)0x701d00e1, (q31_t)0x7010de32, (q31_t)0x7004b731, (q31_t)0x6ff88bde, (q31_t)0x6fec5c3b, (q31_t)0x6fe02846, + (q31_t)0x6fd3f001, (q31_t)0x6fc7b36d, + (q31_t)0x6fbb728a, (q31_t)0x6faf2d57, (q31_t)0x6fa2e3d7, (q31_t)0x6f969608, (q31_t)0x6f8a43ed, (q31_t)0x6f7ded84, + (q31_t)0x6f7192cf, (q31_t)0x6f6533ce, + (q31_t)0x6f58d082, (q31_t)0x6f4c68eb, (q31_t)0x6f3ffd09, (q31_t)0x6f338cde, (q31_t)0x6f271868, (q31_t)0x6f1a9faa, + (q31_t)0x6f0e22a3, (q31_t)0x6f01a155, + (q31_t)0x6ef51bbe, (q31_t)0x6ee891e1, (q31_t)0x6edc03bc, (q31_t)0x6ecf7152, (q31_t)0x6ec2daa2, (q31_t)0x6eb63fad, + (q31_t)0x6ea9a073, (q31_t)0x6e9cfcf5, + (q31_t)0x6e905534, (q31_t)0x6e83a92f, (q31_t)0x6e76f8e7, (q31_t)0x6e6a445d, (q31_t)0x6e5d8b91, (q31_t)0x6e50ce84, + (q31_t)0x6e440d37, (q31_t)0x6e3747a9, + (q31_t)0x6e2a7ddb, (q31_t)0x6e1dafce, (q31_t)0x6e10dd82, (q31_t)0x6e0406f8, (q31_t)0x6df72c30, (q31_t)0x6dea4d2b, + (q31_t)0x6ddd69e9, (q31_t)0x6dd0826a, + (q31_t)0x6dc396b0, (q31_t)0x6db6a6ba, (q31_t)0x6da9b28a, (q31_t)0x6d9cba1f, (q31_t)0x6d8fbd7a, (q31_t)0x6d82bc9d, + (q31_t)0x6d75b786, (q31_t)0x6d68ae37, + (q31_t)0x6d5ba0b0, (q31_t)0x6d4e8ef2, (q31_t)0x6d4178fd, (q31_t)0x6d345ed1, (q31_t)0x6d274070, (q31_t)0x6d1a1dda, + (q31_t)0x6d0cf70f, (q31_t)0x6cffcc0f, + (q31_t)0x6cf29cdc, (q31_t)0x6ce56975, (q31_t)0x6cd831dc, (q31_t)0x6ccaf610, (q31_t)0x6cbdb613, (q31_t)0x6cb071e4, + (q31_t)0x6ca32985, (q31_t)0x6c95dcf6, + (q31_t)0x6c888c36, (q31_t)0x6c7b3748, (q31_t)0x6c6dde2b, (q31_t)0x6c6080e0, (q31_t)0x6c531f67, (q31_t)0x6c45b9c1, + (q31_t)0x6c384fef, (q31_t)0x6c2ae1f0, + (q31_t)0x6c1d6fc6, (q31_t)0x6c0ff971, (q31_t)0x6c027ef1, (q31_t)0x6bf50047, (q31_t)0x6be77d74, (q31_t)0x6bd9f677, + (q31_t)0x6bcc6b53, (q31_t)0x6bbedc06, + (q31_t)0x6bb14892, (q31_t)0x6ba3b0f7, (q31_t)0x6b961536, (q31_t)0x6b88754f, (q31_t)0x6b7ad142, (q31_t)0x6b6d2911, + (q31_t)0x6b5f7cbc, (q31_t)0x6b51cc42, + (q31_t)0x6b4417a6, (q31_t)0x6b365ee7, (q31_t)0x6b28a206, (q31_t)0x6b1ae103, (q31_t)0x6b0d1bdf, (q31_t)0x6aff529a, + (q31_t)0x6af18536, (q31_t)0x6ae3b3b2, + (q31_t)0x6ad5de0f, (q31_t)0x6ac8044e, (q31_t)0x6aba266e, (q31_t)0x6aac4472, (q31_t)0x6a9e5e58, (q31_t)0x6a907423, + (q31_t)0x6a8285d1, (q31_t)0x6a749365, + (q31_t)0x6a669cdd, (q31_t)0x6a58a23c, (q31_t)0x6a4aa381, (q31_t)0x6a3ca0ad, (q31_t)0x6a2e99c0, (q31_t)0x6a208ebb, + (q31_t)0x6a127f9f, (q31_t)0x6a046c6c, + (q31_t)0x69f65523, (q31_t)0x69e839c4, (q31_t)0x69da1a50, (q31_t)0x69cbf6c7, (q31_t)0x69bdcf29, (q31_t)0x69afa378, + (q31_t)0x69a173b5, (q31_t)0x69933fde, + (q31_t)0x698507f6, (q31_t)0x6976cbfc, (q31_t)0x69688bf1, (q31_t)0x695a47d6, (q31_t)0x694bffab, (q31_t)0x693db371, + (q31_t)0x692f6328, (q31_t)0x69210ed1, + (q31_t)0x6912b66c, (q31_t)0x690459fb, (q31_t)0x68f5f97d, (q31_t)0x68e794f3, (q31_t)0x68d92c5d, (q31_t)0x68cabfbd, + (q31_t)0x68bc4f13, (q31_t)0x68adda5f, + (q31_t)0x689f61a1, (q31_t)0x6890e4dc, (q31_t)0x6882640e, (q31_t)0x6873df38, (q31_t)0x6865565c, (q31_t)0x6856c979, + (q31_t)0x68483891, (q31_t)0x6839a3a4, + (q31_t)0x682b0ab1, (q31_t)0x681c6dbb, (q31_t)0x680dccc1, (q31_t)0x67ff27c4, (q31_t)0x67f07ec5, (q31_t)0x67e1d1c4, + (q31_t)0x67d320c1, (q31_t)0x67c46bbe, + (q31_t)0x67b5b2bb, (q31_t)0x67a6f5b8, (q31_t)0x679834b6, (q31_t)0x67896fb6, (q31_t)0x677aa6b8, (q31_t)0x676bd9bd, + (q31_t)0x675d08c4, (q31_t)0x674e33d0, + (q31_t)0x673f5ae0, (q31_t)0x67307df5, (q31_t)0x67219d10, (q31_t)0x6712b831, (q31_t)0x6703cf58, (q31_t)0x66f4e287, + (q31_t)0x66e5f1be, (q31_t)0x66d6fcfd, + (q31_t)0x66c80445, (q31_t)0x66b90797, (q31_t)0x66aa06f3, (q31_t)0x669b0259, (q31_t)0x668bf9cb, (q31_t)0x667ced49, + (q31_t)0x666ddcd3, (q31_t)0x665ec86b, + (q31_t)0x664fb010, (q31_t)0x664093c3, (q31_t)0x66317385, (q31_t)0x66224f56, (q31_t)0x66132738, (q31_t)0x6603fb2a, + (q31_t)0x65f4cb2d, (q31_t)0x65e59742, + (q31_t)0x65d65f69, (q31_t)0x65c723a3, (q31_t)0x65b7e3f1, (q31_t)0x65a8a052, (q31_t)0x659958c9, (q31_t)0x658a0d54, + (q31_t)0x657abdf6, (q31_t)0x656b6aae, + (q31_t)0x655c137d, (q31_t)0x654cb863, (q31_t)0x653d5962, (q31_t)0x652df679, (q31_t)0x651e8faa, (q31_t)0x650f24f5, + (q31_t)0x64ffb65b, (q31_t)0x64f043dc, + (q31_t)0x64e0cd78, (q31_t)0x64d15331, (q31_t)0x64c1d507, (q31_t)0x64b252fa, (q31_t)0x64a2cd0c, (q31_t)0x6493433c, + (q31_t)0x6483b58c, (q31_t)0x647423fb, + (q31_t)0x64648e8c, (q31_t)0x6454f53d, (q31_t)0x64455810, (q31_t)0x6435b706, (q31_t)0x6426121e, (q31_t)0x6416695a, + (q31_t)0x6406bcba, (q31_t)0x63f70c3f, + (q31_t)0x63e757ea, (q31_t)0x63d79fba, (q31_t)0x63c7e3b1, (q31_t)0x63b823cf, (q31_t)0x63a86015, (q31_t)0x63989884, + (q31_t)0x6388cd1b, (q31_t)0x6378fddc, + (q31_t)0x63692ac7, (q31_t)0x635953dd, (q31_t)0x6349791f, (q31_t)0x63399a8d, (q31_t)0x6329b827, (q31_t)0x6319d1ef, + (q31_t)0x6309e7e4, (q31_t)0x62f9fa09, + (q31_t)0x62ea085c, (q31_t)0x62da12df, (q31_t)0x62ca1992, (q31_t)0x62ba1c77, (q31_t)0x62aa1b8d, (q31_t)0x629a16d5, + (q31_t)0x628a0e50, (q31_t)0x627a01fe, + (q31_t)0x6269f1e1, (q31_t)0x6259ddf8, (q31_t)0x6249c645, (q31_t)0x6239aac7, (q31_t)0x62298b81, (q31_t)0x62196871, + (q31_t)0x62094199, (q31_t)0x61f916f9, + (q31_t)0x61e8e893, (q31_t)0x61d8b666, (q31_t)0x61c88074, (q31_t)0x61b846bc, (q31_t)0x61a80940, (q31_t)0x6197c800, + (q31_t)0x618782fd, (q31_t)0x61773a37, + (q31_t)0x6166edb0, (q31_t)0x61569d67, (q31_t)0x6146495d, (q31_t)0x6135f193, (q31_t)0x6125960a, (q31_t)0x611536c2, + (q31_t)0x6104d3bc, (q31_t)0x60f46cf9, + (q31_t)0x60e40278, (q31_t)0x60d3943b, (q31_t)0x60c32243, (q31_t)0x60b2ac8f, (q31_t)0x60a23322, (q31_t)0x6091b5fa, + (q31_t)0x60813519, (q31_t)0x6070b080, + (q31_t)0x6060282f, (q31_t)0x604f9c27, (q31_t)0x603f0c69, (q31_t)0x602e78f4, (q31_t)0x601de1ca, (q31_t)0x600d46ec, + (q31_t)0x5ffca859, (q31_t)0x5fec0613, + (q31_t)0x5fdb601b, (q31_t)0x5fcab670, (q31_t)0x5fba0914, (q31_t)0x5fa95807, (q31_t)0x5f98a34a, (q31_t)0x5f87eade, + (q31_t)0x5f772ec2, (q31_t)0x5f666ef9, + (q31_t)0x5f55ab82, (q31_t)0x5f44e45e, (q31_t)0x5f34198e, (q31_t)0x5f234b12, (q31_t)0x5f1278eb, (q31_t)0x5f01a31a, + (q31_t)0x5ef0c99f, (q31_t)0x5edfec7b, + (q31_t)0x5ecf0baf, (q31_t)0x5ebe273b, (q31_t)0x5ead3f1f, (q31_t)0x5e9c535e, (q31_t)0x5e8b63f7, (q31_t)0x5e7a70ea, + (q31_t)0x5e697a39, (q31_t)0x5e587fe5, + (q31_t)0x5e4781ed, (q31_t)0x5e368053, (q31_t)0x5e257b17, (q31_t)0x5e147239, (q31_t)0x5e0365bb, (q31_t)0x5df2559e, + (q31_t)0x5de141e1, (q31_t)0x5dd02a85, + (q31_t)0x5dbf0f8c, (q31_t)0x5dadf0f5, (q31_t)0x5d9ccec2, (q31_t)0x5d8ba8f3, (q31_t)0x5d7a7f88, (q31_t)0x5d695283, + (q31_t)0x5d5821e4, (q31_t)0x5d46edac, + (q31_t)0x5d35b5db, (q31_t)0x5d247a72, (q31_t)0x5d133b72, (q31_t)0x5d01f8dc, (q31_t)0x5cf0b2af, (q31_t)0x5cdf68ed, + (q31_t)0x5cce1b97, (q31_t)0x5cbccaac, + (q31_t)0x5cab762f, (q31_t)0x5c9a1e1e, (q31_t)0x5c88c27c, (q31_t)0x5c776348, (q31_t)0x5c660084, (q31_t)0x5c549a30, + (q31_t)0x5c43304d, (q31_t)0x5c31c2db, + (q31_t)0x5c2051db, (q31_t)0x5c0edd4e, (q31_t)0x5bfd6534, (q31_t)0x5bebe98e, (q31_t)0x5bda6a5d, (q31_t)0x5bc8e7a2, + (q31_t)0x5bb7615d, (q31_t)0x5ba5d78e, + (q31_t)0x5b944a37, (q31_t)0x5b82b958, (q31_t)0x5b7124f2, (q31_t)0x5b5f8d06, (q31_t)0x5b4df193, (q31_t)0x5b3c529c, + (q31_t)0x5b2ab020, (q31_t)0x5b190a20, + (q31_t)0x5b07609d, (q31_t)0x5af5b398, (q31_t)0x5ae40311, (q31_t)0x5ad24f09, (q31_t)0x5ac09781, (q31_t)0x5aaedc78, + (q31_t)0x5a9d1df1, (q31_t)0x5a8b5bec, + (q31_t)0x5a799669, (q31_t)0x5a67cd69, (q31_t)0x5a5600ec, (q31_t)0x5a4430f5, (q31_t)0x5a325d82, (q31_t)0x5a208695, + (q31_t)0x5a0eac2e, (q31_t)0x59fcce4f, + (q31_t)0x59eaecf8, (q31_t)0x59d90829, (q31_t)0x59c71fe3, (q31_t)0x59b53427, (q31_t)0x59a344f6, (q31_t)0x59915250, + (q31_t)0x597f5c36, (q31_t)0x596d62a9, + (q31_t)0x595b65aa, (q31_t)0x59496538, (q31_t)0x59376155, (q31_t)0x59255a02, (q31_t)0x59134f3e, (q31_t)0x5901410c, + (q31_t)0x58ef2f6b, (q31_t)0x58dd1a5d, + (q31_t)0x58cb01e1, (q31_t)0x58b8e5f9, (q31_t)0x58a6c6a5, (q31_t)0x5894a3e7, (q31_t)0x58827dbe, (q31_t)0x5870542c, + (q31_t)0x585e2730, (q31_t)0x584bf6cd, + (q31_t)0x5839c302, (q31_t)0x58278bd1, (q31_t)0x58155139, (q31_t)0x5803133c, (q31_t)0x57f0d1da, (q31_t)0x57de8d15, + (q31_t)0x57cc44ec, (q31_t)0x57b9f960, + (q31_t)0x57a7aa73, (q31_t)0x57955825, (q31_t)0x57830276, (q31_t)0x5770a968, (q31_t)0x575e4cfa, (q31_t)0x574bed2f, + (q31_t)0x57398a05, (q31_t)0x5727237f, + (q31_t)0x5714b99d, (q31_t)0x57024c5f, (q31_t)0x56efdbc7, (q31_t)0x56dd67d4, (q31_t)0x56caf088, (q31_t)0x56b875e4, + (q31_t)0x56a5f7e7, (q31_t)0x56937694, + (q31_t)0x5680f1ea, (q31_t)0x566e69ea, (q31_t)0x565bde95, (q31_t)0x56494fec, (q31_t)0x5636bdef, (q31_t)0x5624289f, + (q31_t)0x56118ffe, (q31_t)0x55fef40a, + (q31_t)0x55ec54c6, (q31_t)0x55d9b232, (q31_t)0x55c70c4f, (q31_t)0x55b4631d, (q31_t)0x55a1b69d, (q31_t)0x558f06d0, + (q31_t)0x557c53b6, (q31_t)0x55699d51, + (q31_t)0x5556e3a1, (q31_t)0x554426a7, (q31_t)0x55316663, (q31_t)0x551ea2d6, (q31_t)0x550bdc01, (q31_t)0x54f911e5, + (q31_t)0x54e64482, (q31_t)0x54d373d9, + (q31_t)0x54c09feb, (q31_t)0x54adc8b8, (q31_t)0x549aee42, (q31_t)0x54881089, (q31_t)0x54752f8d, (q31_t)0x54624b50, + (q31_t)0x544f63d2, (q31_t)0x543c7914, + (q31_t)0x54298b17, (q31_t)0x541699db, (q31_t)0x5403a561, (q31_t)0x53f0adaa, (q31_t)0x53ddb2b6, (q31_t)0x53cab486, + (q31_t)0x53b7b31c, (q31_t)0x53a4ae77, + (q31_t)0x5391a699, (q31_t)0x537e9b82, (q31_t)0x536b8d33, (q31_t)0x53587bad, (q31_t)0x534566f0, (q31_t)0x53324efd, + (q31_t)0x531f33d5, (q31_t)0x530c1579, + (q31_t)0x52f8f3e9, (q31_t)0x52e5cf27, (q31_t)0x52d2a732, (q31_t)0x52bf7c0b, (q31_t)0x52ac4db4, (q31_t)0x52991c2d, + (q31_t)0x5285e777, (q31_t)0x5272af92, + (q31_t)0x525f7480, (q31_t)0x524c3640, (q31_t)0x5238f4d4, (q31_t)0x5225b03d, (q31_t)0x5212687b, (q31_t)0x51ff1d8f, + (q31_t)0x51ebcf7a, (q31_t)0x51d87e3c, + (q31_t)0x51c529d7, (q31_t)0x51b1d24a, (q31_t)0x519e7797, (q31_t)0x518b19bf, (q31_t)0x5177b8c2, (q31_t)0x516454a0, + (q31_t)0x5150ed5c, (q31_t)0x513d82f4, + (q31_t)0x512a156b, (q31_t)0x5116a4c1, (q31_t)0x510330f7, (q31_t)0x50efba0d, (q31_t)0x50dc4005, (q31_t)0x50c8c2de, + (q31_t)0x50b5429a, (q31_t)0x50a1bf39, + (q31_t)0x508e38bd, (q31_t)0x507aaf25, (q31_t)0x50672273, (q31_t)0x505392a8, (q31_t)0x503fffc4, (q31_t)0x502c69c8, + (q31_t)0x5018d0b4, (q31_t)0x5005348a, + (q31_t)0x4ff1954b, (q31_t)0x4fddf2f6, (q31_t)0x4fca4d8d, (q31_t)0x4fb6a510, (q31_t)0x4fa2f981, (q31_t)0x4f8f4ae0, + (q31_t)0x4f7b992d, (q31_t)0x4f67e46a, + (q31_t)0x4f542c98, (q31_t)0x4f4071b6, (q31_t)0x4f2cb3c7, (q31_t)0x4f18f2c9, (q31_t)0x4f052ec0, (q31_t)0x4ef167aa, + (q31_t)0x4edd9d89, (q31_t)0x4ec9d05e, + (q31_t)0x4eb60029, (q31_t)0x4ea22ceb, (q31_t)0x4e8e56a5, (q31_t)0x4e7a7d58, (q31_t)0x4e66a105, (q31_t)0x4e52c1ab, + (q31_t)0x4e3edf4d, (q31_t)0x4e2af9ea, + (q31_t)0x4e171184, (q31_t)0x4e03261b, (q31_t)0x4def37b0, (q31_t)0x4ddb4644, (q31_t)0x4dc751d8, (q31_t)0x4db35a6c, + (q31_t)0x4d9f6001, (q31_t)0x4d8b6298, + (q31_t)0x4d776231, (q31_t)0x4d635ece, (q31_t)0x4d4f5870, (q31_t)0x4d3b4f16, (q31_t)0x4d2742c2, (q31_t)0x4d133374, + (q31_t)0x4cff212e, (q31_t)0x4ceb0bf0, + (q31_t)0x4cd6f3bb, (q31_t)0x4cc2d88f, (q31_t)0x4caeba6e, (q31_t)0x4c9a9958, (q31_t)0x4c86754e, (q31_t)0x4c724e50, + (q31_t)0x4c5e2460, (q31_t)0x4c49f77f, + (q31_t)0x4c35c7ac, (q31_t)0x4c2194e9, (q31_t)0x4c0d5f37, (q31_t)0x4bf92697, (q31_t)0x4be4eb08, (q31_t)0x4bd0ac8d, + (q31_t)0x4bbc6b25, (q31_t)0x4ba826d1, + (q31_t)0x4b93df93, (q31_t)0x4b7f956b, (q31_t)0x4b6b485a, (q31_t)0x4b56f861, (q31_t)0x4b42a580, (q31_t)0x4b2e4fb8, + (q31_t)0x4b19f70a, (q31_t)0x4b059b77, + (q31_t)0x4af13d00, (q31_t)0x4adcdba5, (q31_t)0x4ac87767, (q31_t)0x4ab41046, (q31_t)0x4a9fa645, (q31_t)0x4a8b3963, + (q31_t)0x4a76c9a2, (q31_t)0x4a625701, + (q31_t)0x4a4de182, (q31_t)0x4a396926, (q31_t)0x4a24edee, (q31_t)0x4a106fda, (q31_t)0x49fbeeea, (q31_t)0x49e76b21, + (q31_t)0x49d2e47e, (q31_t)0x49be5b02, + (q31_t)0x49a9ceaf, (q31_t)0x49953f84, (q31_t)0x4980ad84, (q31_t)0x496c18ae, (q31_t)0x49578103, (q31_t)0x4942e684, + (q31_t)0x492e4933, (q31_t)0x4919a90f, + (q31_t)0x4905061a, (q31_t)0x48f06054, (q31_t)0x48dbb7be, (q31_t)0x48c70c59, (q31_t)0x48b25e25, (q31_t)0x489dad25, + (q31_t)0x4888f957, (q31_t)0x487442be, + (q31_t)0x485f8959, (q31_t)0x484acd2a, (q31_t)0x48360e32, (q31_t)0x48214c71, (q31_t)0x480c87e8, (q31_t)0x47f7c099, + (q31_t)0x47e2f682, (q31_t)0x47ce29a7, + (q31_t)0x47b95a06, (q31_t)0x47a487a2, (q31_t)0x478fb27b, (q31_t)0x477ada91, (q31_t)0x4765ffe6, (q31_t)0x4751227a, + (q31_t)0x473c424e, (q31_t)0x47275f63, + (q31_t)0x471279ba, (q31_t)0x46fd9154, (q31_t)0x46e8a631, (q31_t)0x46d3b852, (q31_t)0x46bec7b8, (q31_t)0x46a9d464, + (q31_t)0x4694de56, (q31_t)0x467fe590, + (q31_t)0x466aea12, (q31_t)0x4655ebdd, (q31_t)0x4640eaf2, (q31_t)0x462be751, (q31_t)0x4616e0fc, (q31_t)0x4601d7f3, + (q31_t)0x45eccc37, (q31_t)0x45d7bdc9, + (q31_t)0x45c2acaa, (q31_t)0x45ad98da, (q31_t)0x4598825a, (q31_t)0x4583692c, (q31_t)0x456e4d4f, (q31_t)0x45592ec6, + (q31_t)0x45440d90, (q31_t)0x452ee9ae, + (q31_t)0x4519c321, (q31_t)0x450499eb, (q31_t)0x44ef6e0b, (q31_t)0x44da3f83, (q31_t)0x44c50e53, (q31_t)0x44afda7d, + (q31_t)0x449aa400, (q31_t)0x44856adf, + (q31_t)0x44702f19, (q31_t)0x445af0b0, (q31_t)0x4445afa4, (q31_t)0x44306bf6, (q31_t)0x441b25a8, (q31_t)0x4405dcb9, + (q31_t)0x43f0912b, (q31_t)0x43db42fe, + (q31_t)0x43c5f234, (q31_t)0x43b09ecc, (q31_t)0x439b48c9, (q31_t)0x4385f02a, (q31_t)0x437094f1, (q31_t)0x435b371f, + (q31_t)0x4345d6b3, (q31_t)0x433073b0, + (q31_t)0x431b0e15, (q31_t)0x4305a5e5, (q31_t)0x42f03b1e, (q31_t)0x42dacdc3, (q31_t)0x42c55dd4, (q31_t)0x42afeb53, + (q31_t)0x429a763f, (q31_t)0x4284fe99, + (q31_t)0x426f8463, (q31_t)0x425a079e, (q31_t)0x42448849, (q31_t)0x422f0667, (q31_t)0x421981f7, (q31_t)0x4203fafb, + (q31_t)0x41ee7174, (q31_t)0x41d8e561, + (q31_t)0x41c356c5, (q31_t)0x41adc5a0, (q31_t)0x419831f3, (q31_t)0x41829bbe, (q31_t)0x416d0302, (q31_t)0x415767c1, + (q31_t)0x4141c9fb, (q31_t)0x412c29b1, + (q31_t)0x411686e4, (q31_t)0x4100e194, (q31_t)0x40eb39c3, (q31_t)0x40d58f71, (q31_t)0x40bfe29f, (q31_t)0x40aa334e, + (q31_t)0x4094817f, (q31_t)0x407ecd32, + (q31_t)0x40691669, (q31_t)0x40535d24, (q31_t)0x403da165, (q31_t)0x4027e32b, (q31_t)0x40122278, (q31_t)0x3ffc5f4d, + (q31_t)0x3fe699aa, (q31_t)0x3fd0d191, + (q31_t)0x3fbb0702, (q31_t)0x3fa539fd, (q31_t)0x3f8f6a85, (q31_t)0x3f799899, (q31_t)0x3f63c43b, (q31_t)0x3f4ded6b, + (q31_t)0x3f38142a, (q31_t)0x3f22387a, + (q31_t)0x3f0c5a5a, (q31_t)0x3ef679cc, (q31_t)0x3ee096d1, (q31_t)0x3ecab169, (q31_t)0x3eb4c995, (q31_t)0x3e9edf57, + (q31_t)0x3e88f2ae, (q31_t)0x3e73039d, + (q31_t)0x3e5d1222, (q31_t)0x3e471e41, (q31_t)0x3e3127f9, (q31_t)0x3e1b2f4a, (q31_t)0x3e053437, (q31_t)0x3def36c0, + (q31_t)0x3dd936e6, (q31_t)0x3dc334a9, + (q31_t)0x3dad300b, (q31_t)0x3d97290b, (q31_t)0x3d811fac, (q31_t)0x3d6b13ee, (q31_t)0x3d5505d2, (q31_t)0x3d3ef559, + (q31_t)0x3d28e282, (q31_t)0x3d12cd51, + (q31_t)0x3cfcb5c4, (q31_t)0x3ce69bde, (q31_t)0x3cd07f9f, (q31_t)0x3cba6107, (q31_t)0x3ca44018, (q31_t)0x3c8e1cd3, + (q31_t)0x3c77f737, (q31_t)0x3c61cf48, + (q31_t)0x3c4ba504, (q31_t)0x3c35786d, (q31_t)0x3c1f4983, (q31_t)0x3c091849, (q31_t)0x3bf2e4be, (q31_t)0x3bdcaee3, + (q31_t)0x3bc676b9, (q31_t)0x3bb03c42, + (q31_t)0x3b99ff7d, (q31_t)0x3b83c06c, (q31_t)0x3b6d7f10, (q31_t)0x3b573b69, (q31_t)0x3b40f579, (q31_t)0x3b2aad3f, + (q31_t)0x3b1462be, (q31_t)0x3afe15f6, + (q31_t)0x3ae7c6e7, (q31_t)0x3ad17593, (q31_t)0x3abb21fb, (q31_t)0x3aa4cc1e, (q31_t)0x3a8e7400, (q31_t)0x3a78199f, + (q31_t)0x3a61bcfd, (q31_t)0x3a4b5e1b, + (q31_t)0x3a34fcf9, (q31_t)0x3a1e9999, (q31_t)0x3a0833fc, (q31_t)0x39f1cc21, (q31_t)0x39db620b, (q31_t)0x39c4f5ba, + (q31_t)0x39ae872f, (q31_t)0x3998166a, + (q31_t)0x3981a36d, (q31_t)0x396b2e38, (q31_t)0x3954b6cd, (q31_t)0x393e3d2c, (q31_t)0x3927c155, (q31_t)0x3911434b, + (q31_t)0x38fac30e, (q31_t)0x38e4409e, + (q31_t)0x38cdbbfc, (q31_t)0x38b7352a, (q31_t)0x38a0ac29, (q31_t)0x388a20f8, (q31_t)0x38739399, (q31_t)0x385d040d, + (q31_t)0x38467255, (q31_t)0x382fde72, + (q31_t)0x38194864, (q31_t)0x3802b02c, (q31_t)0x37ec15cb, (q31_t)0x37d57943, (q31_t)0x37beda93, (q31_t)0x37a839be, + (q31_t)0x379196c3, (q31_t)0x377af1a3, + (q31_t)0x37644a60, (q31_t)0x374da0fa, (q31_t)0x3736f573, (q31_t)0x372047ca, (q31_t)0x37099802, (q31_t)0x36f2e61a, + (q31_t)0x36dc3214, (q31_t)0x36c57bf0, + (q31_t)0x36aec3b0, (q31_t)0x36980954, (q31_t)0x36814cde, (q31_t)0x366a8e4d, (q31_t)0x3653cda3, (q31_t)0x363d0ae2, + (q31_t)0x36264609, (q31_t)0x360f7f19, + (q31_t)0x35f8b614, (q31_t)0x35e1eafa, (q31_t)0x35cb1dcc, (q31_t)0x35b44e8c, (q31_t)0x359d7d39, (q31_t)0x3586a9d5, + (q31_t)0x356fd461, (q31_t)0x3558fcde, + (q31_t)0x3542234c, (q31_t)0x352b47ad, (q31_t)0x35146a00, (q31_t)0x34fd8a48, (q31_t)0x34e6a885, (q31_t)0x34cfc4b7, + (q31_t)0x34b8dee1, (q31_t)0x34a1f702, + (q31_t)0x348b0d1c, (q31_t)0x3474212f, (q31_t)0x345d333c, (q31_t)0x34464345, (q31_t)0x342f5149, (q31_t)0x34185d4b, + (q31_t)0x3401674a, (q31_t)0x33ea6f48, + (q31_t)0x33d37546, (q31_t)0x33bc7944, (q31_t)0x33a57b44, (q31_t)0x338e7b46, (q31_t)0x3377794b, (q31_t)0x33607554, + (q31_t)0x33496f62, (q31_t)0x33326776, + (q31_t)0x331b5d91, (q31_t)0x330451b3, (q31_t)0x32ed43de, (q31_t)0x32d63412, (q31_t)0x32bf2250, (q31_t)0x32a80e99, + (q31_t)0x3290f8ef, (q31_t)0x3279e151, + (q31_t)0x3262c7c1, (q31_t)0x324bac40, (q31_t)0x32348ecf, (q31_t)0x321d6f6e, (q31_t)0x32064e1e, (q31_t)0x31ef2ae1, + (q31_t)0x31d805b7, (q31_t)0x31c0dea1, + (q31_t)0x31a9b5a0, (q31_t)0x31928ab4, (q31_t)0x317b5de0, (q31_t)0x31642f23, (q31_t)0x314cfe7f, (q31_t)0x3135cbf4, + (q31_t)0x311e9783, (q31_t)0x3107612e, + (q31_t)0x30f028f4, (q31_t)0x30d8eed8, (q31_t)0x30c1b2da, (q31_t)0x30aa74fa, (q31_t)0x3093353a, (q31_t)0x307bf39b, + (q31_t)0x3064b01d, (q31_t)0x304d6ac1, + (q31_t)0x30362389, (q31_t)0x301eda75, (q31_t)0x30078f86, (q31_t)0x2ff042bd, (q31_t)0x2fd8f41b, (q31_t)0x2fc1a3a0, + (q31_t)0x2faa514f, (q31_t)0x2f92fd26, + (q31_t)0x2f7ba729, (q31_t)0x2f644f56, (q31_t)0x2f4cf5b0, (q31_t)0x2f359a37, (q31_t)0x2f1e3ced, (q31_t)0x2f06ddd1, + (q31_t)0x2eef7ce5, (q31_t)0x2ed81a29, + (q31_t)0x2ec0b5a0, (q31_t)0x2ea94f49, (q31_t)0x2e91e725, (q31_t)0x2e7a7d36, (q31_t)0x2e63117c, (q31_t)0x2e4ba3f8, + (q31_t)0x2e3434ac, (q31_t)0x2e1cc397, + (q31_t)0x2e0550bb, (q31_t)0x2deddc19, (q31_t)0x2dd665b2, (q31_t)0x2dbeed86, (q31_t)0x2da77397, (q31_t)0x2d8ff7e5, + (q31_t)0x2d787a72, (q31_t)0x2d60fb3e, + (q31_t)0x2d497a4a, (q31_t)0x2d31f797, (q31_t)0x2d1a7325, (q31_t)0x2d02ecf7, (q31_t)0x2ceb650d, (q31_t)0x2cd3db67, + (q31_t)0x2cbc5006, (q31_t)0x2ca4c2ed, + (q31_t)0x2c8d341a, (q31_t)0x2c75a390, (q31_t)0x2c5e114f, (q31_t)0x2c467d58, (q31_t)0x2c2ee7ad, (q31_t)0x2c17504d, + (q31_t)0x2bffb73a, (q31_t)0x2be81c74, + (q31_t)0x2bd07ffe, (q31_t)0x2bb8e1d7, (q31_t)0x2ba14200, (q31_t)0x2b89a07b, (q31_t)0x2b71fd48, (q31_t)0x2b5a5868, + (q31_t)0x2b42b1dd, (q31_t)0x2b2b09a6, + (q31_t)0x2b135fc6, (q31_t)0x2afbb43c, (q31_t)0x2ae4070a, (q31_t)0x2acc5831, (q31_t)0x2ab4a7b1, (q31_t)0x2a9cf58c, + (q31_t)0x2a8541c3, (q31_t)0x2a6d8c55, + (q31_t)0x2a55d545, (q31_t)0x2a3e1c93, (q31_t)0x2a266240, (q31_t)0x2a0ea64d, (q31_t)0x29f6e8bb, (q31_t)0x29df298b, + (q31_t)0x29c768be, (q31_t)0x29afa654, + (q31_t)0x2997e24f, (q31_t)0x29801caf, (q31_t)0x29685576, (q31_t)0x29508ca4, (q31_t)0x2938c23a, (q31_t)0x2920f63a, + (q31_t)0x290928a3, (q31_t)0x28f15978, + (q31_t)0x28d988b8, (q31_t)0x28c1b666, (q31_t)0x28a9e281, (q31_t)0x28920d0a, (q31_t)0x287a3604, (q31_t)0x28625d6d, + (q31_t)0x284a8349, (q31_t)0x2832a796, + (q31_t)0x281aca57, (q31_t)0x2802eb8c, (q31_t)0x27eb0b36, (q31_t)0x27d32956, (q31_t)0x27bb45ed, (q31_t)0x27a360fc, + (q31_t)0x278b7a84, (q31_t)0x27739285, + (q31_t)0x275ba901, (q31_t)0x2743bdf9, (q31_t)0x272bd16d, (q31_t)0x2713e35f, (q31_t)0x26fbf3ce, (q31_t)0x26e402bd, + (q31_t)0x26cc102d, (q31_t)0x26b41c1d, + (q31_t)0x269c268f, (q31_t)0x26842f84, (q31_t)0x266c36fe, (q31_t)0x26543cfb, (q31_t)0x263c417f, (q31_t)0x26244489, + (q31_t)0x260c461b, (q31_t)0x25f44635, + (q31_t)0x25dc44d9, (q31_t)0x25c44207, (q31_t)0x25ac3dc0, (q31_t)0x25943806, (q31_t)0x257c30d8, (q31_t)0x25642839, + (q31_t)0x254c1e28, (q31_t)0x253412a8, + (q31_t)0x251c05b8, (q31_t)0x2503f75a, (q31_t)0x24ebe78f, (q31_t)0x24d3d657, (q31_t)0x24bbc3b4, (q31_t)0x24a3afa6, + (q31_t)0x248b9a2f, (q31_t)0x2473834f, + (q31_t)0x245b6b07, (q31_t)0x24435158, (q31_t)0x242b3644, (q31_t)0x241319ca, (q31_t)0x23fafbec, (q31_t)0x23e2dcac, + (q31_t)0x23cabc09, (q31_t)0x23b29a05, + (q31_t)0x239a76a0, (q31_t)0x238251dd, (q31_t)0x236a2bba, (q31_t)0x2352043b, (q31_t)0x2339db5e, (q31_t)0x2321b126, + (q31_t)0x23098593, (q31_t)0x22f158a7, + (q31_t)0x22d92a61, (q31_t)0x22c0fac4, (q31_t)0x22a8c9cf, (q31_t)0x22909785, (q31_t)0x227863e5, (q31_t)0x22602ef1, + (q31_t)0x2247f8aa, (q31_t)0x222fc111, + (q31_t)0x22178826, (q31_t)0x21ff4dea, (q31_t)0x21e71260, (q31_t)0x21ced586, (q31_t)0x21b6975f, (q31_t)0x219e57eb, + (q31_t)0x2186172b, (q31_t)0x216dd521, + (q31_t)0x215591cc, (q31_t)0x213d4d2f, (q31_t)0x21250749, (q31_t)0x210cc01d, (q31_t)0x20f477aa, (q31_t)0x20dc2df2, + (q31_t)0x20c3e2f5, (q31_t)0x20ab96b5, + (q31_t)0x20934933, (q31_t)0x207afa6f, (q31_t)0x2062aa6b, (q31_t)0x204a5927, (q31_t)0x203206a4, (q31_t)0x2019b2e4, + (q31_t)0x20015de7, (q31_t)0x1fe907ae, + (q31_t)0x1fd0b03a, (q31_t)0x1fb8578b, (q31_t)0x1f9ffda4, (q31_t)0x1f87a285, (q31_t)0x1f6f462f, (q31_t)0x1f56e8a2, + (q31_t)0x1f3e89e0, (q31_t)0x1f2629ea, + (q31_t)0x1f0dc8c0, (q31_t)0x1ef56664, (q31_t)0x1edd02d6, (q31_t)0x1ec49e17, (q31_t)0x1eac3829, (q31_t)0x1e93d10c, + (q31_t)0x1e7b68c2, (q31_t)0x1e62ff4a, + (q31_t)0x1e4a94a7, (q31_t)0x1e3228d9, (q31_t)0x1e19bbe0, (q31_t)0x1e014dbf, (q31_t)0x1de8de75, (q31_t)0x1dd06e04, + (q31_t)0x1db7fc6d, (q31_t)0x1d9f89b1, + (q31_t)0x1d8715d0, (q31_t)0x1d6ea0cc, (q31_t)0x1d562aa6, (q31_t)0x1d3db35e, (q31_t)0x1d253af5, (q31_t)0x1d0cc16c, + (q31_t)0x1cf446c5, (q31_t)0x1cdbcb00, + (q31_t)0x1cc34e1f, (q31_t)0x1caad021, (q31_t)0x1c925109, (q31_t)0x1c79d0d6, (q31_t)0x1c614f8b, (q31_t)0x1c48cd27, + (q31_t)0x1c3049ac, (q31_t)0x1c17c51b, + (q31_t)0x1bff3f75, (q31_t)0x1be6b8ba, (q31_t)0x1bce30ec, (q31_t)0x1bb5a80c, (q31_t)0x1b9d1e1a, (q31_t)0x1b849317, + (q31_t)0x1b6c0705, (q31_t)0x1b5379e5, + (q31_t)0x1b3aebb6, (q31_t)0x1b225c7b, (q31_t)0x1b09cc34, (q31_t)0x1af13ae3, (q31_t)0x1ad8a887, (q31_t)0x1ac01522, + (q31_t)0x1aa780b6, (q31_t)0x1a8eeb42, + (q31_t)0x1a7654c8, (q31_t)0x1a5dbd49, (q31_t)0x1a4524c6, (q31_t)0x1a2c8b3f, (q31_t)0x1a13f0b6, (q31_t)0x19fb552c, + (q31_t)0x19e2b8a2, (q31_t)0x19ca1b17, + (q31_t)0x19b17c8f, (q31_t)0x1998dd09, (q31_t)0x19803c86, (q31_t)0x19679b07, (q31_t)0x194ef88e, (q31_t)0x1936551b, + (q31_t)0x191db0af, (q31_t)0x19050b4b, + (q31_t)0x18ec64f0, (q31_t)0x18d3bda0, (q31_t)0x18bb155a, (q31_t)0x18a26c20, (q31_t)0x1889c1f3, (q31_t)0x187116d4, + (q31_t)0x18586ac3, (q31_t)0x183fbdc3, + (q31_t)0x18270fd3, (q31_t)0x180e60f4, (q31_t)0x17f5b129, (q31_t)0x17dd0070, (q31_t)0x17c44ecd, (q31_t)0x17ab9c3e, + (q31_t)0x1792e8c6, (q31_t)0x177a3466, + (q31_t)0x17617f1d, (q31_t)0x1748c8ee, (q31_t)0x173011d9, (q31_t)0x171759df, (q31_t)0x16fea102, (q31_t)0x16e5e741, + (q31_t)0x16cd2c9f, (q31_t)0x16b4711b, + (q31_t)0x169bb4b7, (q31_t)0x1682f774, (q31_t)0x166a3953, (q31_t)0x16517a55, (q31_t)0x1638ba7a, (q31_t)0x161ff9c4, + (q31_t)0x16073834, (q31_t)0x15ee75cb, + (q31_t)0x15d5b288, (q31_t)0x15bcee6f, (q31_t)0x15a4297f, (q31_t)0x158b63b9, (q31_t)0x15729d1f, (q31_t)0x1559d5b1, + (q31_t)0x15410d70, (q31_t)0x1528445d, + (q31_t)0x150f7a7a, (q31_t)0x14f6afc7, (q31_t)0x14dde445, (q31_t)0x14c517f4, (q31_t)0x14ac4ad7, (q31_t)0x14937cee, + (q31_t)0x147aae3a, (q31_t)0x1461debc, + (q31_t)0x14490e74, (q31_t)0x14303d65, (q31_t)0x14176b8e, (q31_t)0x13fe98f1, (q31_t)0x13e5c58e, (q31_t)0x13ccf167, + (q31_t)0x13b41c7d, (q31_t)0x139b46d0, + (q31_t)0x13827062, (q31_t)0x13699933, (q31_t)0x1350c144, (q31_t)0x1337e897, (q31_t)0x131f0f2c, (q31_t)0x13063505, + (q31_t)0x12ed5a21, (q31_t)0x12d47e83, + (q31_t)0x12bba22b, (q31_t)0x12a2c51b, (q31_t)0x1289e752, (q31_t)0x127108d2, (q31_t)0x1258299c, (q31_t)0x123f49b2, + (q31_t)0x12266913, (q31_t)0x120d87c1, + (q31_t)0x11f4a5bd, (q31_t)0x11dbc307, (q31_t)0x11c2dfa2, (q31_t)0x11a9fb8d, (q31_t)0x119116c9, (q31_t)0x11783159, + (q31_t)0x115f4b3c, (q31_t)0x11466473, + (q31_t)0x112d7d00, (q31_t)0x111494e4, (q31_t)0x10fbac1e, (q31_t)0x10e2c2b2, (q31_t)0x10c9d89e, (q31_t)0x10b0ede5, + (q31_t)0x10980287, (q31_t)0x107f1686, + (q31_t)0x106629e1, (q31_t)0x104d3c9b, (q31_t)0x10344eb4, (q31_t)0x101b602d, (q31_t)0x10027107, (q31_t)0xfe98143, + (q31_t)0xfd090e1, (q31_t)0xfb79fe4, + (q31_t)0xf9eae4c, (q31_t)0xf85bc19, (q31_t)0xf6cc94e, (q31_t)0xf53d5ea, (q31_t)0xf3ae1ee, (q31_t)0xf21ed5d, (q31_t)0xf08f836, + (q31_t)0xef0027b, + (q31_t)0xed70c2c, (q31_t)0xebe154b, (q31_t)0xea51dd8, (q31_t)0xe8c25d5, (q31_t)0xe732d42, (q31_t)0xe5a3421, (q31_t)0xe413a72, + (q31_t)0xe284036, + (q31_t)0xe0f456f, (q31_t)0xdf64a1c, (q31_t)0xddd4e40, (q31_t)0xdc451dc, (q31_t)0xdab54ef, (q31_t)0xd92577b, (q31_t)0xd795982, + (q31_t)0xd605b03, + (q31_t)0xd475c00, (q31_t)0xd2e5c7b, (q31_t)0xd155c73, (q31_t)0xcfc5bea, (q31_t)0xce35ae1, (q31_t)0xcca5959, (q31_t)0xcb15752, + (q31_t)0xc9854cf, + (q31_t)0xc7f51cf, (q31_t)0xc664e53, (q31_t)0xc4d4a5d, (q31_t)0xc3445ee, (q31_t)0xc1b4107, (q31_t)0xc023ba7, (q31_t)0xbe935d2, + (q31_t)0xbd02f87, + (q31_t)0xbb728c7, (q31_t)0xb9e2193, (q31_t)0xb8519ed, (q31_t)0xb6c11d5, (q31_t)0xb53094d, (q31_t)0xb3a0055, (q31_t)0xb20f6ee, + (q31_t)0xb07ed19, + (q31_t)0xaeee2d7, (q31_t)0xad5d829, (q31_t)0xabccd11, (q31_t)0xaa3c18e, (q31_t)0xa8ab5a2, (q31_t)0xa71a94f, (q31_t)0xa589c94, + (q31_t)0xa3f8f73, + (q31_t)0xa2681ed, (q31_t)0xa0d7403, (q31_t)0x9f465b5, (q31_t)0x9db5706, (q31_t)0x9c247f5, (q31_t)0x9a93884, (q31_t)0x99028b3, + (q31_t)0x9771884, + (q31_t)0x95e07f8, (q31_t)0x944f70f, (q31_t)0x92be5ca, (q31_t)0x912d42c, (q31_t)0x8f9c233, (q31_t)0x8e0afe2, (q31_t)0x8c79d3a, + (q31_t)0x8ae8a3a, + (q31_t)0x89576e5, (q31_t)0x87c633c, (q31_t)0x8634f3e, (q31_t)0x84a3aee, (q31_t)0x831264c, (q31_t)0x8181159, (q31_t)0x7fefc16, + (q31_t)0x7e5e685, + (q31_t)0x7ccd0a5, (q31_t)0x7b3ba78, (q31_t)0x79aa400, (q31_t)0x7818d3c, (q31_t)0x768762e, (q31_t)0x74f5ed7, (q31_t)0x7364738, + (q31_t)0x71d2f52, + (q31_t)0x7041726, (q31_t)0x6eafeb4, (q31_t)0x6d1e5fe, (q31_t)0x6b8cd05, (q31_t)0x69fb3c9, (q31_t)0x6869a4c, (q31_t)0x66d808f, + (q31_t)0x6546692, + (q31_t)0x63b4c57, (q31_t)0x62231de, (q31_t)0x6091729, (q31_t)0x5effc38, (q31_t)0x5d6e10c, (q31_t)0x5bdc5a7, (q31_t)0x5a4aa09, + (q31_t)0x58b8e34, + (q31_t)0x5727228, (q31_t)0x55955e6, (q31_t)0x540396f, (q31_t)0x5271cc4, (q31_t)0x50dffe7, (q31_t)0x4f4e2d8, (q31_t)0x4dbc597, + (q31_t)0x4c2a827, + (q31_t)0x4a98a88, (q31_t)0x4906cbb, (q31_t)0x4774ec1, (q31_t)0x45e309a, (q31_t)0x4451249, (q31_t)0x42bf3cd, (q31_t)0x412d528, + (q31_t)0x3f9b65b, + (q31_t)0x3e09767, (q31_t)0x3c7784d, (q31_t)0x3ae590d, (q31_t)0x39539a9, (q31_t)0x37c1a22, (q31_t)0x362fa78, (q31_t)0x349daac, + (q31_t)0x330bac1, + (q31_t)0x3179ab5, (q31_t)0x2fe7a8c, (q31_t)0x2e55a44, (q31_t)0x2cc39e1, (q31_t)0x2b31961, (q31_t)0x299f8c7, (q31_t)0x280d813, + (q31_t)0x267b747, + (q31_t)0x24e9662, (q31_t)0x2357567, (q31_t)0x21c5457, (q31_t)0x2033331, (q31_t)0x1ea11f7, (q31_t)0x1d0f0ab, (q31_t)0x1b7cf4d, + (q31_t)0x19eaddd, + (q31_t)0x1858c5e, (q31_t)0x16c6ad0, (q31_t)0x1534934, (q31_t)0x13a278a, (q31_t)0x12105d5, (q31_t)0x107e414, (q31_t)0xeec249, + (q31_t)0xd5a075, + (q31_t)0xbc7e99, (q31_t)0xa35cb5, (q31_t)0x8a3acb, (q31_t)0x7118dc, (q31_t)0x57f6e9, (q31_t)0x3ed4f2, (q31_t)0x25b2f8, + (q31_t)0xc90fe +}; + +static const q31_t cos_factorsQ31_8192[8192] = { + (q31_t)0x7ffffff6, (q31_t)0x7fffffa7, (q31_t)0x7fffff09, (q31_t)0x7ffffe1c, (q31_t)0x7ffffce1, (q31_t)0x7ffffb56, + (q31_t)0x7ffff97c, (q31_t)0x7ffff753, + (q31_t)0x7ffff4dc, (q31_t)0x7ffff215, (q31_t)0x7fffef00, (q31_t)0x7fffeb9b, (q31_t)0x7fffe7e8, (q31_t)0x7fffe3e5, + (q31_t)0x7fffdf94, (q31_t)0x7fffdaf3, + (q31_t)0x7fffd604, (q31_t)0x7fffd0c6, (q31_t)0x7fffcb39, (q31_t)0x7fffc55c, (q31_t)0x7fffbf31, (q31_t)0x7fffb8b7, + (q31_t)0x7fffb1ee, (q31_t)0x7fffaad6, + (q31_t)0x7fffa36f, (q31_t)0x7fff9bb9, (q31_t)0x7fff93b4, (q31_t)0x7fff8b61, (q31_t)0x7fff82be, (q31_t)0x7fff79cc, + (q31_t)0x7fff708b, (q31_t)0x7fff66fc, + (q31_t)0x7fff5d1d, (q31_t)0x7fff52ef, (q31_t)0x7fff4873, (q31_t)0x7fff3da8, (q31_t)0x7fff328d, (q31_t)0x7fff2724, + (q31_t)0x7fff1b6b, (q31_t)0x7fff0f64, + (q31_t)0x7fff030e, (q31_t)0x7ffef669, (q31_t)0x7ffee975, (q31_t)0x7ffedc31, (q31_t)0x7ffece9f, (q31_t)0x7ffec0be, + (q31_t)0x7ffeb28e, (q31_t)0x7ffea40f, + (q31_t)0x7ffe9542, (q31_t)0x7ffe8625, (q31_t)0x7ffe76b9, (q31_t)0x7ffe66fe, (q31_t)0x7ffe56f5, (q31_t)0x7ffe469c, + (q31_t)0x7ffe35f4, (q31_t)0x7ffe24fe, + (q31_t)0x7ffe13b8, (q31_t)0x7ffe0224, (q31_t)0x7ffdf040, (q31_t)0x7ffdde0e, (q31_t)0x7ffdcb8d, (q31_t)0x7ffdb8bc, + (q31_t)0x7ffda59d, (q31_t)0x7ffd922f, + (q31_t)0x7ffd7e72, (q31_t)0x7ffd6a66, (q31_t)0x7ffd560b, (q31_t)0x7ffd4161, (q31_t)0x7ffd2c68, (q31_t)0x7ffd1720, + (q31_t)0x7ffd0189, (q31_t)0x7ffceba4, + (q31_t)0x7ffcd56f, (q31_t)0x7ffcbeeb, (q31_t)0x7ffca819, (q31_t)0x7ffc90f7, (q31_t)0x7ffc7987, (q31_t)0x7ffc61c7, + (q31_t)0x7ffc49b9, (q31_t)0x7ffc315b, + (q31_t)0x7ffc18af, (q31_t)0x7ffbffb4, (q31_t)0x7ffbe66a, (q31_t)0x7ffbccd0, (q31_t)0x7ffbb2e8, (q31_t)0x7ffb98b1, + (q31_t)0x7ffb7e2b, (q31_t)0x7ffb6356, + (q31_t)0x7ffb4833, (q31_t)0x7ffb2cc0, (q31_t)0x7ffb10fe, (q31_t)0x7ffaf4ed, (q31_t)0x7ffad88e, (q31_t)0x7ffabbdf, + (q31_t)0x7ffa9ee2, (q31_t)0x7ffa8195, + (q31_t)0x7ffa63fa, (q31_t)0x7ffa460f, (q31_t)0x7ffa27d6, (q31_t)0x7ffa094e, (q31_t)0x7ff9ea76, (q31_t)0x7ff9cb50, + (q31_t)0x7ff9abdb, (q31_t)0x7ff98c17, + (q31_t)0x7ff96c04, (q31_t)0x7ff94ba2, (q31_t)0x7ff92af1, (q31_t)0x7ff909f2, (q31_t)0x7ff8e8a3, (q31_t)0x7ff8c705, + (q31_t)0x7ff8a519, (q31_t)0x7ff882dd, + (q31_t)0x7ff86053, (q31_t)0x7ff83d79, (q31_t)0x7ff81a51, (q31_t)0x7ff7f6da, (q31_t)0x7ff7d313, (q31_t)0x7ff7aefe, + (q31_t)0x7ff78a9a, (q31_t)0x7ff765e7, + (q31_t)0x7ff740e5, (q31_t)0x7ff71b94, (q31_t)0x7ff6f5f4, (q31_t)0x7ff6d005, (q31_t)0x7ff6a9c8, (q31_t)0x7ff6833b, + (q31_t)0x7ff65c5f, (q31_t)0x7ff63535, + (q31_t)0x7ff60dbb, (q31_t)0x7ff5e5f3, (q31_t)0x7ff5bddc, (q31_t)0x7ff59576, (q31_t)0x7ff56cc0, (q31_t)0x7ff543bc, + (q31_t)0x7ff51a69, (q31_t)0x7ff4f0c7, + (q31_t)0x7ff4c6d6, (q31_t)0x7ff49c96, (q31_t)0x7ff47208, (q31_t)0x7ff4472a, (q31_t)0x7ff41bfd, (q31_t)0x7ff3f082, + (q31_t)0x7ff3c4b7, (q31_t)0x7ff3989e, + (q31_t)0x7ff36c36, (q31_t)0x7ff33f7e, (q31_t)0x7ff31278, (q31_t)0x7ff2e523, (q31_t)0x7ff2b77f, (q31_t)0x7ff2898c, + (q31_t)0x7ff25b4a, (q31_t)0x7ff22cb9, + (q31_t)0x7ff1fdd9, (q31_t)0x7ff1ceab, (q31_t)0x7ff19f2d, (q31_t)0x7ff16f61, (q31_t)0x7ff13f45, (q31_t)0x7ff10edb, + (q31_t)0x7ff0de22, (q31_t)0x7ff0ad19, + (q31_t)0x7ff07bc2, (q31_t)0x7ff04a1c, (q31_t)0x7ff01827, (q31_t)0x7fefe5e4, (q31_t)0x7fefb351, (q31_t)0x7fef806f, + (q31_t)0x7fef4d3e, (q31_t)0x7fef19bf, + (q31_t)0x7feee5f0, (q31_t)0x7feeb1d3, (q31_t)0x7fee7d67, (q31_t)0x7fee48ac, (q31_t)0x7fee13a1, (q31_t)0x7fedde48, + (q31_t)0x7feda8a0, (q31_t)0x7fed72aa, + (q31_t)0x7fed3c64, (q31_t)0x7fed05cf, (q31_t)0x7fecceec, (q31_t)0x7fec97b9, (q31_t)0x7fec6038, (q31_t)0x7fec2867, + (q31_t)0x7febf048, (q31_t)0x7febb7da, + (q31_t)0x7feb7f1d, (q31_t)0x7feb4611, (q31_t)0x7feb0cb6, (q31_t)0x7fead30c, (q31_t)0x7fea9914, (q31_t)0x7fea5ecc, + (q31_t)0x7fea2436, (q31_t)0x7fe9e950, + (q31_t)0x7fe9ae1c, (q31_t)0x7fe97299, (q31_t)0x7fe936c7, (q31_t)0x7fe8faa6, (q31_t)0x7fe8be36, (q31_t)0x7fe88177, + (q31_t)0x7fe84469, (q31_t)0x7fe8070d, + (q31_t)0x7fe7c961, (q31_t)0x7fe78b67, (q31_t)0x7fe74d1e, (q31_t)0x7fe70e85, (q31_t)0x7fe6cf9e, (q31_t)0x7fe69068, + (q31_t)0x7fe650e3, (q31_t)0x7fe61110, + (q31_t)0x7fe5d0ed, (q31_t)0x7fe5907b, (q31_t)0x7fe54fbb, (q31_t)0x7fe50eac, (q31_t)0x7fe4cd4d, (q31_t)0x7fe48ba0, + (q31_t)0x7fe449a4, (q31_t)0x7fe40759, + (q31_t)0x7fe3c4bf, (q31_t)0x7fe381d7, (q31_t)0x7fe33e9f, (q31_t)0x7fe2fb19, (q31_t)0x7fe2b743, (q31_t)0x7fe2731f, + (q31_t)0x7fe22eac, (q31_t)0x7fe1e9ea, + (q31_t)0x7fe1a4d9, (q31_t)0x7fe15f79, (q31_t)0x7fe119cb, (q31_t)0x7fe0d3cd, (q31_t)0x7fe08d81, (q31_t)0x7fe046e5, + (q31_t)0x7fdffffb, (q31_t)0x7fdfb8c2, + (q31_t)0x7fdf713a, (q31_t)0x7fdf2963, (q31_t)0x7fdee13e, (q31_t)0x7fde98c9, (q31_t)0x7fde5006, (q31_t)0x7fde06f3, + (q31_t)0x7fddbd92, (q31_t)0x7fdd73e2, + (q31_t)0x7fdd29e3, (q31_t)0x7fdcdf95, (q31_t)0x7fdc94f9, (q31_t)0x7fdc4a0d, (q31_t)0x7fdbfed3, (q31_t)0x7fdbb349, + (q31_t)0x7fdb6771, (q31_t)0x7fdb1b4a, + (q31_t)0x7fdaced4, (q31_t)0x7fda820f, (q31_t)0x7fda34fc, (q31_t)0x7fd9e799, (q31_t)0x7fd999e8, (q31_t)0x7fd94be8, + (q31_t)0x7fd8fd98, (q31_t)0x7fd8aefa, + (q31_t)0x7fd8600e, (q31_t)0x7fd810d2, (q31_t)0x7fd7c147, (q31_t)0x7fd7716e, (q31_t)0x7fd72146, (q31_t)0x7fd6d0cf, + (q31_t)0x7fd68009, (q31_t)0x7fd62ef4, + (q31_t)0x7fd5dd90, (q31_t)0x7fd58bdd, (q31_t)0x7fd539dc, (q31_t)0x7fd4e78c, (q31_t)0x7fd494ed, (q31_t)0x7fd441ff, + (q31_t)0x7fd3eec2, (q31_t)0x7fd39b36, + (q31_t)0x7fd3475c, (q31_t)0x7fd2f332, (q31_t)0x7fd29eba, (q31_t)0x7fd249f3, (q31_t)0x7fd1f4dd, (q31_t)0x7fd19f78, + (q31_t)0x7fd149c5, (q31_t)0x7fd0f3c2, + (q31_t)0x7fd09d71, (q31_t)0x7fd046d1, (q31_t)0x7fcfefe2, (q31_t)0x7fcf98a4, (q31_t)0x7fcf4117, (q31_t)0x7fcee93c, + (q31_t)0x7fce9112, (q31_t)0x7fce3898, + (q31_t)0x7fcddfd0, (q31_t)0x7fcd86b9, (q31_t)0x7fcd2d54, (q31_t)0x7fccd39f, (q31_t)0x7fcc799c, (q31_t)0x7fcc1f4a, + (q31_t)0x7fcbc4a9, (q31_t)0x7fcb69b9, + (q31_t)0x7fcb0e7a, (q31_t)0x7fcab2ed, (q31_t)0x7fca5710, (q31_t)0x7fc9fae5, (q31_t)0x7fc99e6b, (q31_t)0x7fc941a2, + (q31_t)0x7fc8e48b, (q31_t)0x7fc88724, + (q31_t)0x7fc8296f, (q31_t)0x7fc7cb6b, (q31_t)0x7fc76d18, (q31_t)0x7fc70e76, (q31_t)0x7fc6af86, (q31_t)0x7fc65046, + (q31_t)0x7fc5f0b8, (q31_t)0x7fc590db, + (q31_t)0x7fc530af, (q31_t)0x7fc4d035, (q31_t)0x7fc46f6b, (q31_t)0x7fc40e53, (q31_t)0x7fc3acec, (q31_t)0x7fc34b36, + (q31_t)0x7fc2e931, (q31_t)0x7fc286de, + (q31_t)0x7fc2243b, (q31_t)0x7fc1c14a, (q31_t)0x7fc15e0a, (q31_t)0x7fc0fa7b, (q31_t)0x7fc0969e, (q31_t)0x7fc03271, + (q31_t)0x7fbfcdf6, (q31_t)0x7fbf692c, + (q31_t)0x7fbf0414, (q31_t)0x7fbe9eac, (q31_t)0x7fbe38f6, (q31_t)0x7fbdd2f0, (q31_t)0x7fbd6c9c, (q31_t)0x7fbd05fa, + (q31_t)0x7fbc9f08, (q31_t)0x7fbc37c8, + (q31_t)0x7fbbd039, (q31_t)0x7fbb685b, (q31_t)0x7fbb002e, (q31_t)0x7fba97b2, (q31_t)0x7fba2ee8, (q31_t)0x7fb9c5cf, + (q31_t)0x7fb95c67, (q31_t)0x7fb8f2b0, + (q31_t)0x7fb888ab, (q31_t)0x7fb81e57, (q31_t)0x7fb7b3b4, (q31_t)0x7fb748c2, (q31_t)0x7fb6dd81, (q31_t)0x7fb671f2, + (q31_t)0x7fb60614, (q31_t)0x7fb599e7, + (q31_t)0x7fb52d6b, (q31_t)0x7fb4c0a1, (q31_t)0x7fb45387, (q31_t)0x7fb3e61f, (q31_t)0x7fb37869, (q31_t)0x7fb30a63, + (q31_t)0x7fb29c0f, (q31_t)0x7fb22d6c, + (q31_t)0x7fb1be7a, (q31_t)0x7fb14f39, (q31_t)0x7fb0dfaa, (q31_t)0x7fb06fcb, (q31_t)0x7fafff9e, (q31_t)0x7faf8f23, + (q31_t)0x7faf1e58, (q31_t)0x7faead3f, + (q31_t)0x7fae3bd7, (q31_t)0x7fadca20, (q31_t)0x7fad581b, (q31_t)0x7face5c6, (q31_t)0x7fac7323, (q31_t)0x7fac0031, + (q31_t)0x7fab8cf1, (q31_t)0x7fab1962, + (q31_t)0x7faaa584, (q31_t)0x7faa3157, (q31_t)0x7fa9bcdb, (q31_t)0x7fa94811, (q31_t)0x7fa8d2f8, (q31_t)0x7fa85d90, + (q31_t)0x7fa7e7d9, (q31_t)0x7fa771d4, + (q31_t)0x7fa6fb80, (q31_t)0x7fa684dd, (q31_t)0x7fa60dec, (q31_t)0x7fa596ac, (q31_t)0x7fa51f1d, (q31_t)0x7fa4a73f, + (q31_t)0x7fa42f12, (q31_t)0x7fa3b697, + (q31_t)0x7fa33dcd, (q31_t)0x7fa2c4b5, (q31_t)0x7fa24b4d, (q31_t)0x7fa1d197, (q31_t)0x7fa15792, (q31_t)0x7fa0dd3f, + (q31_t)0x7fa0629c, (q31_t)0x7f9fe7ab, + (q31_t)0x7f9f6c6b, (q31_t)0x7f9ef0dd, (q31_t)0x7f9e7500, (q31_t)0x7f9df8d4, (q31_t)0x7f9d7c59, (q31_t)0x7f9cff90, + (q31_t)0x7f9c8278, (q31_t)0x7f9c0511, + (q31_t)0x7f9b875b, (q31_t)0x7f9b0957, (q31_t)0x7f9a8b04, (q31_t)0x7f9a0c62, (q31_t)0x7f998d72, (q31_t)0x7f990e33, + (q31_t)0x7f988ea5, (q31_t)0x7f980ec8, + (q31_t)0x7f978e9d, (q31_t)0x7f970e23, (q31_t)0x7f968d5b, (q31_t)0x7f960c43, (q31_t)0x7f958add, (q31_t)0x7f950929, + (q31_t)0x7f948725, (q31_t)0x7f9404d3, + (q31_t)0x7f938232, (q31_t)0x7f92ff43, (q31_t)0x7f927c04, (q31_t)0x7f91f878, (q31_t)0x7f91749c, (q31_t)0x7f90f072, + (q31_t)0x7f906bf9, (q31_t)0x7f8fe731, + (q31_t)0x7f8f621b, (q31_t)0x7f8edcb6, (q31_t)0x7f8e5702, (q31_t)0x7f8dd0ff, (q31_t)0x7f8d4aae, (q31_t)0x7f8cc40f, + (q31_t)0x7f8c3d20, (q31_t)0x7f8bb5e3, + (q31_t)0x7f8b2e57, (q31_t)0x7f8aa67d, (q31_t)0x7f8a1e54, (q31_t)0x7f8995dc, (q31_t)0x7f890d15, (q31_t)0x7f888400, + (q31_t)0x7f87fa9c, (q31_t)0x7f8770ea, + (q31_t)0x7f86e6e9, (q31_t)0x7f865c99, (q31_t)0x7f85d1fa, (q31_t)0x7f85470d, (q31_t)0x7f84bbd1, (q31_t)0x7f843047, + (q31_t)0x7f83a46e, (q31_t)0x7f831846, + (q31_t)0x7f828bcf, (q31_t)0x7f81ff0a, (q31_t)0x7f8171f6, (q31_t)0x7f80e494, (q31_t)0x7f8056e3, (q31_t)0x7f7fc8e3, + (q31_t)0x7f7f3a95, (q31_t)0x7f7eabf8, + (q31_t)0x7f7e1d0c, (q31_t)0x7f7d8dd2, (q31_t)0x7f7cfe49, (q31_t)0x7f7c6e71, (q31_t)0x7f7bde4b, (q31_t)0x7f7b4dd6, + (q31_t)0x7f7abd13, (q31_t)0x7f7a2c01, + (q31_t)0x7f799aa0, (q31_t)0x7f7908f0, (q31_t)0x7f7876f2, (q31_t)0x7f77e4a6, (q31_t)0x7f77520a, (q31_t)0x7f76bf21, + (q31_t)0x7f762be8, (q31_t)0x7f759861, + (q31_t)0x7f75048b, (q31_t)0x7f747067, (q31_t)0x7f73dbf4, (q31_t)0x7f734732, (q31_t)0x7f72b222, (q31_t)0x7f721cc3, + (q31_t)0x7f718715, (q31_t)0x7f70f119, + (q31_t)0x7f705ace, (q31_t)0x7f6fc435, (q31_t)0x7f6f2d4d, (q31_t)0x7f6e9617, (q31_t)0x7f6dfe91, (q31_t)0x7f6d66be, + (q31_t)0x7f6cce9b, (q31_t)0x7f6c362a, + (q31_t)0x7f6b9d6b, (q31_t)0x7f6b045d, (q31_t)0x7f6a6b00, (q31_t)0x7f69d154, (q31_t)0x7f69375a, (q31_t)0x7f689d12, + (q31_t)0x7f68027b, (q31_t)0x7f676795, + (q31_t)0x7f66cc61, (q31_t)0x7f6630de, (q31_t)0x7f65950c, (q31_t)0x7f64f8ec, (q31_t)0x7f645c7d, (q31_t)0x7f63bfc0, + (q31_t)0x7f6322b4, (q31_t)0x7f62855a, + (q31_t)0x7f61e7b1, (q31_t)0x7f6149b9, (q31_t)0x7f60ab73, (q31_t)0x7f600cdf, (q31_t)0x7f5f6dfb, (q31_t)0x7f5ecec9, + (q31_t)0x7f5e2f49, (q31_t)0x7f5d8f7a, + (q31_t)0x7f5cef5c, (q31_t)0x7f5c4ef0, (q31_t)0x7f5bae36, (q31_t)0x7f5b0d2c, (q31_t)0x7f5a6bd5, (q31_t)0x7f59ca2e, + (q31_t)0x7f592839, (q31_t)0x7f5885f6, + (q31_t)0x7f57e364, (q31_t)0x7f574083, (q31_t)0x7f569d54, (q31_t)0x7f55f9d6, (q31_t)0x7f55560a, (q31_t)0x7f54b1ef, + (q31_t)0x7f540d86, (q31_t)0x7f5368ce, + (q31_t)0x7f52c3c8, (q31_t)0x7f521e73, (q31_t)0x7f5178cf, (q31_t)0x7f50d2dd, (q31_t)0x7f502c9d, (q31_t)0x7f4f860e, + (q31_t)0x7f4edf30, (q31_t)0x7f4e3804, + (q31_t)0x7f4d9089, (q31_t)0x7f4ce8c0, (q31_t)0x7f4c40a8, (q31_t)0x7f4b9842, (q31_t)0x7f4aef8d, (q31_t)0x7f4a468a, + (q31_t)0x7f499d38, (q31_t)0x7f48f398, + (q31_t)0x7f4849a9, (q31_t)0x7f479f6c, (q31_t)0x7f46f4e0, (q31_t)0x7f464a06, (q31_t)0x7f459edd, (q31_t)0x7f44f365, + (q31_t)0x7f44479f, (q31_t)0x7f439b8b, + (q31_t)0x7f42ef28, (q31_t)0x7f424277, (q31_t)0x7f419577, (q31_t)0x7f40e828, (q31_t)0x7f403a8b, (q31_t)0x7f3f8ca0, + (q31_t)0x7f3ede66, (q31_t)0x7f3e2fde, + (q31_t)0x7f3d8107, (q31_t)0x7f3cd1e2, (q31_t)0x7f3c226e, (q31_t)0x7f3b72ab, (q31_t)0x7f3ac29b, (q31_t)0x7f3a123b, + (q31_t)0x7f39618e, (q31_t)0x7f38b091, + (q31_t)0x7f37ff47, (q31_t)0x7f374dad, (q31_t)0x7f369bc6, (q31_t)0x7f35e990, (q31_t)0x7f35370b, (q31_t)0x7f348438, + (q31_t)0x7f33d116, (q31_t)0x7f331da6, + (q31_t)0x7f3269e8, (q31_t)0x7f31b5db, (q31_t)0x7f31017f, (q31_t)0x7f304cd6, (q31_t)0x7f2f97dd, (q31_t)0x7f2ee296, + (q31_t)0x7f2e2d01, (q31_t)0x7f2d771e, + (q31_t)0x7f2cc0eb, (q31_t)0x7f2c0a6b, (q31_t)0x7f2b539c, (q31_t)0x7f2a9c7e, (q31_t)0x7f29e512, (q31_t)0x7f292d58, + (q31_t)0x7f28754f, (q31_t)0x7f27bcf8, + (q31_t)0x7f270452, (q31_t)0x7f264b5e, (q31_t)0x7f25921c, (q31_t)0x7f24d88b, (q31_t)0x7f241eab, (q31_t)0x7f23647e, + (q31_t)0x7f22aa01, (q31_t)0x7f21ef37, + (q31_t)0x7f21341e, (q31_t)0x7f2078b6, (q31_t)0x7f1fbd00, (q31_t)0x7f1f00fc, (q31_t)0x7f1e44a9, (q31_t)0x7f1d8808, + (q31_t)0x7f1ccb18, (q31_t)0x7f1c0dda, + (q31_t)0x7f1b504e, (q31_t)0x7f1a9273, (q31_t)0x7f19d44a, (q31_t)0x7f1915d2, (q31_t)0x7f18570c, (q31_t)0x7f1797f8, + (q31_t)0x7f16d895, (q31_t)0x7f1618e4, + (q31_t)0x7f1558e4, (q31_t)0x7f149896, (q31_t)0x7f13d7fa, (q31_t)0x7f13170f, (q31_t)0x7f1255d6, (q31_t)0x7f11944f, + (q31_t)0x7f10d279, (q31_t)0x7f101054, + (q31_t)0x7f0f4de2, (q31_t)0x7f0e8b21, (q31_t)0x7f0dc811, (q31_t)0x7f0d04b3, (q31_t)0x7f0c4107, (q31_t)0x7f0b7d0d, + (q31_t)0x7f0ab8c4, (q31_t)0x7f09f42d, + (q31_t)0x7f092f47, (q31_t)0x7f086a13, (q31_t)0x7f07a491, (q31_t)0x7f06dec0, (q31_t)0x7f0618a1, (q31_t)0x7f055233, + (q31_t)0x7f048b78, (q31_t)0x7f03c46d, + (q31_t)0x7f02fd15, (q31_t)0x7f02356e, (q31_t)0x7f016d79, (q31_t)0x7f00a535, (q31_t)0x7effdca4, (q31_t)0x7eff13c3, + (q31_t)0x7efe4a95, (q31_t)0x7efd8118, + (q31_t)0x7efcb74d, (q31_t)0x7efbed33, (q31_t)0x7efb22cb, (q31_t)0x7efa5815, (q31_t)0x7ef98d11, (q31_t)0x7ef8c1be, + (q31_t)0x7ef7f61d, (q31_t)0x7ef72a2d, + (q31_t)0x7ef65def, (q31_t)0x7ef59163, (q31_t)0x7ef4c489, (q31_t)0x7ef3f760, (q31_t)0x7ef329e9, (q31_t)0x7ef25c24, + (q31_t)0x7ef18e10, (q31_t)0x7ef0bfae, + (q31_t)0x7eeff0fe, (q31_t)0x7eef21ff, (q31_t)0x7eee52b2, (q31_t)0x7eed8317, (q31_t)0x7eecb32d, (q31_t)0x7eebe2f6, + (q31_t)0x7eeb1270, (q31_t)0x7eea419b, + (q31_t)0x7ee97079, (q31_t)0x7ee89f08, (q31_t)0x7ee7cd49, (q31_t)0x7ee6fb3b, (q31_t)0x7ee628df, (q31_t)0x7ee55635, + (q31_t)0x7ee4833d, (q31_t)0x7ee3aff6, + (q31_t)0x7ee2dc61, (q31_t)0x7ee2087e, (q31_t)0x7ee1344d, (q31_t)0x7ee05fcd, (q31_t)0x7edf8aff, (q31_t)0x7edeb5e3, + (q31_t)0x7edde079, (q31_t)0x7edd0ac0, + (q31_t)0x7edc34b9, (q31_t)0x7edb5e64, (q31_t)0x7eda87c0, (q31_t)0x7ed9b0ce, (q31_t)0x7ed8d98e, (q31_t)0x7ed80200, + (q31_t)0x7ed72a24, (q31_t)0x7ed651f9, + (q31_t)0x7ed57980, (q31_t)0x7ed4a0b9, (q31_t)0x7ed3c7a3, (q31_t)0x7ed2ee40, (q31_t)0x7ed2148e, (q31_t)0x7ed13a8e, + (q31_t)0x7ed0603f, (q31_t)0x7ecf85a3, + (q31_t)0x7eceaab8, (q31_t)0x7ecdcf7f, (q31_t)0x7eccf3f8, (q31_t)0x7ecc1822, (q31_t)0x7ecb3bff, (q31_t)0x7eca5f8d, + (q31_t)0x7ec982cd, (q31_t)0x7ec8a5bf, + (q31_t)0x7ec7c862, (q31_t)0x7ec6eab7, (q31_t)0x7ec60cbe, (q31_t)0x7ec52e77, (q31_t)0x7ec44fe2, (q31_t)0x7ec370fe, + (q31_t)0x7ec291cd, (q31_t)0x7ec1b24d, + (q31_t)0x7ec0d27f, (q31_t)0x7ebff263, (q31_t)0x7ebf11f8, (q31_t)0x7ebe313f, (q31_t)0x7ebd5039, (q31_t)0x7ebc6ee4, + (q31_t)0x7ebb8d40, (q31_t)0x7ebaab4f, + (q31_t)0x7eb9c910, (q31_t)0x7eb8e682, (q31_t)0x7eb803a6, (q31_t)0x7eb7207c, (q31_t)0x7eb63d04, (q31_t)0x7eb5593d, + (q31_t)0x7eb47529, (q31_t)0x7eb390c6, + (q31_t)0x7eb2ac15, (q31_t)0x7eb1c716, (q31_t)0x7eb0e1c9, (q31_t)0x7eaffc2e, (q31_t)0x7eaf1645, (q31_t)0x7eae300d, + (q31_t)0x7ead4987, (q31_t)0x7eac62b3, + (q31_t)0x7eab7b91, (q31_t)0x7eaa9421, (q31_t)0x7ea9ac63, (q31_t)0x7ea8c457, (q31_t)0x7ea7dbfc, (q31_t)0x7ea6f353, + (q31_t)0x7ea60a5d, (q31_t)0x7ea52118, + (q31_t)0x7ea43785, (q31_t)0x7ea34da4, (q31_t)0x7ea26374, (q31_t)0x7ea178f7, (q31_t)0x7ea08e2b, (q31_t)0x7e9fa312, + (q31_t)0x7e9eb7aa, (q31_t)0x7e9dcbf4, + (q31_t)0x7e9cdff0, (q31_t)0x7e9bf39e, (q31_t)0x7e9b06fe, (q31_t)0x7e9a1a10, (q31_t)0x7e992cd4, (q31_t)0x7e983f49, + (q31_t)0x7e975171, (q31_t)0x7e96634a, + (q31_t)0x7e9574d6, (q31_t)0x7e948613, (q31_t)0x7e939702, (q31_t)0x7e92a7a3, (q31_t)0x7e91b7f6, (q31_t)0x7e90c7fb, + (q31_t)0x7e8fd7b2, (q31_t)0x7e8ee71b, + (q31_t)0x7e8df636, (q31_t)0x7e8d0502, (q31_t)0x7e8c1381, (q31_t)0x7e8b21b1, (q31_t)0x7e8a2f94, (q31_t)0x7e893d28, + (q31_t)0x7e884a6f, (q31_t)0x7e875767, + (q31_t)0x7e866411, (q31_t)0x7e85706d, (q31_t)0x7e847c7c, (q31_t)0x7e83883c, (q31_t)0x7e8293ae, (q31_t)0x7e819ed2, + (q31_t)0x7e80a9a8, (q31_t)0x7e7fb430, + (q31_t)0x7e7ebe6a, (q31_t)0x7e7dc856, (q31_t)0x7e7cd1f4, (q31_t)0x7e7bdb44, (q31_t)0x7e7ae446, (q31_t)0x7e79ecf9, + (q31_t)0x7e78f55f, (q31_t)0x7e77fd77, + (q31_t)0x7e770541, (q31_t)0x7e760cbd, (q31_t)0x7e7513ea, (q31_t)0x7e741aca, (q31_t)0x7e73215c, (q31_t)0x7e7227a0, + (q31_t)0x7e712d96, (q31_t)0x7e70333d, + (q31_t)0x7e6f3897, (q31_t)0x7e6e3da3, (q31_t)0x7e6d4261, (q31_t)0x7e6c46d1, (q31_t)0x7e6b4af2, (q31_t)0x7e6a4ec6, + (q31_t)0x7e69524c, (q31_t)0x7e685584, + (q31_t)0x7e67586e, (q31_t)0x7e665b0a, (q31_t)0x7e655d58, (q31_t)0x7e645f58, (q31_t)0x7e63610a, (q31_t)0x7e62626e, + (q31_t)0x7e616384, (q31_t)0x7e60644c, + (q31_t)0x7e5f64c7, (q31_t)0x7e5e64f3, (q31_t)0x7e5d64d1, (q31_t)0x7e5c6461, (q31_t)0x7e5b63a4, (q31_t)0x7e5a6298, + (q31_t)0x7e59613f, (q31_t)0x7e585f97, + (q31_t)0x7e575da2, (q31_t)0x7e565b5f, (q31_t)0x7e5558ce, (q31_t)0x7e5455ef, (q31_t)0x7e5352c1, (q31_t)0x7e524f46, + (q31_t)0x7e514b7e, (q31_t)0x7e504767, + (q31_t)0x7e4f4302, (q31_t)0x7e4e3e4f, (q31_t)0x7e4d394f, (q31_t)0x7e4c3400, (q31_t)0x7e4b2e64, (q31_t)0x7e4a287a, + (q31_t)0x7e492241, (q31_t)0x7e481bbb, + (q31_t)0x7e4714e7, (q31_t)0x7e460dc5, (q31_t)0x7e450656, (q31_t)0x7e43fe98, (q31_t)0x7e42f68c, (q31_t)0x7e41ee33, + (q31_t)0x7e40e58c, (q31_t)0x7e3fdc97, + (q31_t)0x7e3ed353, (q31_t)0x7e3dc9c3, (q31_t)0x7e3cbfe4, (q31_t)0x7e3bb5b7, (q31_t)0x7e3aab3c, (q31_t)0x7e39a074, + (q31_t)0x7e38955e, (q31_t)0x7e3789fa, + (q31_t)0x7e367e48, (q31_t)0x7e357248, (q31_t)0x7e3465fa, (q31_t)0x7e33595e, (q31_t)0x7e324c75, (q31_t)0x7e313f3e, + (q31_t)0x7e3031b9, (q31_t)0x7e2f23e6, + (q31_t)0x7e2e15c5, (q31_t)0x7e2d0756, (q31_t)0x7e2bf89a, (q31_t)0x7e2ae990, (q31_t)0x7e29da38, (q31_t)0x7e28ca92, + (q31_t)0x7e27ba9e, (q31_t)0x7e26aa5d, + (q31_t)0x7e2599cd, (q31_t)0x7e2488f0, (q31_t)0x7e2377c5, (q31_t)0x7e22664c, (q31_t)0x7e215486, (q31_t)0x7e204271, + (q31_t)0x7e1f300f, (q31_t)0x7e1e1d5f, + (q31_t)0x7e1d0a61, (q31_t)0x7e1bf716, (q31_t)0x7e1ae37c, (q31_t)0x7e19cf95, (q31_t)0x7e18bb60, (q31_t)0x7e17a6dd, + (q31_t)0x7e16920d, (q31_t)0x7e157cee, + (q31_t)0x7e146782, (q31_t)0x7e1351c9, (q31_t)0x7e123bc1, (q31_t)0x7e11256c, (q31_t)0x7e100ec8, (q31_t)0x7e0ef7d7, + (q31_t)0x7e0de099, (q31_t)0x7e0cc90c, + (q31_t)0x7e0bb132, (q31_t)0x7e0a990a, (q31_t)0x7e098095, (q31_t)0x7e0867d1, (q31_t)0x7e074ec0, (q31_t)0x7e063561, + (q31_t)0x7e051bb4, (q31_t)0x7e0401ba, + (q31_t)0x7e02e772, (q31_t)0x7e01ccdc, (q31_t)0x7e00b1f9, (q31_t)0x7dff96c7, (q31_t)0x7dfe7b48, (q31_t)0x7dfd5f7b, + (q31_t)0x7dfc4361, (q31_t)0x7dfb26f9, + (q31_t)0x7dfa0a43, (q31_t)0x7df8ed3f, (q31_t)0x7df7cfee, (q31_t)0x7df6b24f, (q31_t)0x7df59462, (q31_t)0x7df47628, + (q31_t)0x7df357a0, (q31_t)0x7df238ca, + (q31_t)0x7df119a7, (q31_t)0x7deffa35, (q31_t)0x7deeda77, (q31_t)0x7dedba6a, (q31_t)0x7dec9a10, (q31_t)0x7deb7968, + (q31_t)0x7dea5872, (q31_t)0x7de9372f, + (q31_t)0x7de8159e, (q31_t)0x7de6f3c0, (q31_t)0x7de5d193, (q31_t)0x7de4af1a, (q31_t)0x7de38c52, (q31_t)0x7de2693d, + (q31_t)0x7de145da, (q31_t)0x7de02229, + (q31_t)0x7ddefe2b, (q31_t)0x7dddd9e0, (q31_t)0x7ddcb546, (q31_t)0x7ddb905f, (q31_t)0x7dda6b2a, (q31_t)0x7dd945a8, + (q31_t)0x7dd81fd8, (q31_t)0x7dd6f9ba, + (q31_t)0x7dd5d34f, (q31_t)0x7dd4ac96, (q31_t)0x7dd38590, (q31_t)0x7dd25e3c, (q31_t)0x7dd1369a, (q31_t)0x7dd00eab, + (q31_t)0x7dcee66e, (q31_t)0x7dcdbde3, + (q31_t)0x7dcc950b, (q31_t)0x7dcb6be6, (q31_t)0x7dca4272, (q31_t)0x7dc918b1, (q31_t)0x7dc7eea3, (q31_t)0x7dc6c447, + (q31_t)0x7dc5999d, (q31_t)0x7dc46ea6, + (q31_t)0x7dc34361, (q31_t)0x7dc217cf, (q31_t)0x7dc0ebef, (q31_t)0x7dbfbfc1, (q31_t)0x7dbe9346, (q31_t)0x7dbd667d, + (q31_t)0x7dbc3967, (q31_t)0x7dbb0c03, + (q31_t)0x7db9de52, (q31_t)0x7db8b053, (q31_t)0x7db78207, (q31_t)0x7db6536d, (q31_t)0x7db52485, (q31_t)0x7db3f550, + (q31_t)0x7db2c5cd, (q31_t)0x7db195fd, + (q31_t)0x7db065df, (q31_t)0x7daf3574, (q31_t)0x7dae04bb, (q31_t)0x7dacd3b5, (q31_t)0x7daba261, (q31_t)0x7daa70c0, + (q31_t)0x7da93ed1, (q31_t)0x7da80c95, + (q31_t)0x7da6da0b, (q31_t)0x7da5a733, (q31_t)0x7da4740e, (q31_t)0x7da3409c, (q31_t)0x7da20cdc, (q31_t)0x7da0d8cf, + (q31_t)0x7d9fa474, (q31_t)0x7d9e6fcb, + (q31_t)0x7d9d3ad6, (q31_t)0x7d9c0592, (q31_t)0x7d9ad001, (q31_t)0x7d999a23, (q31_t)0x7d9863f7, (q31_t)0x7d972d7e, + (q31_t)0x7d95f6b7, (q31_t)0x7d94bfa3, + (q31_t)0x7d938841, (q31_t)0x7d925092, (q31_t)0x7d911896, (q31_t)0x7d8fe04c, (q31_t)0x7d8ea7b4, (q31_t)0x7d8d6ecf, + (q31_t)0x7d8c359d, (q31_t)0x7d8afc1d, + (q31_t)0x7d89c250, (q31_t)0x7d888835, (q31_t)0x7d874dcd, (q31_t)0x7d861317, (q31_t)0x7d84d814, (q31_t)0x7d839cc4, + (q31_t)0x7d826126, (q31_t)0x7d81253a, + (q31_t)0x7d7fe902, (q31_t)0x7d7eac7c, (q31_t)0x7d7d6fa8, (q31_t)0x7d7c3287, (q31_t)0x7d7af519, (q31_t)0x7d79b75d, + (q31_t)0x7d787954, (q31_t)0x7d773afd, + (q31_t)0x7d75fc59, (q31_t)0x7d74bd68, (q31_t)0x7d737e29, (q31_t)0x7d723e9d, (q31_t)0x7d70fec4, (q31_t)0x7d6fbe9d, + (q31_t)0x7d6e7e29, (q31_t)0x7d6d3d67, + (q31_t)0x7d6bfc58, (q31_t)0x7d6abafc, (q31_t)0x7d697952, (q31_t)0x7d68375b, (q31_t)0x7d66f517, (q31_t)0x7d65b285, + (q31_t)0x7d646fa6, (q31_t)0x7d632c79, + (q31_t)0x7d61e8ff, (q31_t)0x7d60a538, (q31_t)0x7d5f6124, (q31_t)0x7d5e1cc2, (q31_t)0x7d5cd813, (q31_t)0x7d5b9316, + (q31_t)0x7d5a4dcc, (q31_t)0x7d590835, + (q31_t)0x7d57c251, (q31_t)0x7d567c1f, (q31_t)0x7d5535a0, (q31_t)0x7d53eed3, (q31_t)0x7d52a7ba, (q31_t)0x7d516053, + (q31_t)0x7d50189e, (q31_t)0x7d4ed09d, + (q31_t)0x7d4d884e, (q31_t)0x7d4c3fb1, (q31_t)0x7d4af6c8, (q31_t)0x7d49ad91, (q31_t)0x7d48640d, (q31_t)0x7d471a3c, + (q31_t)0x7d45d01d, (q31_t)0x7d4485b1, + (q31_t)0x7d433af8, (q31_t)0x7d41eff1, (q31_t)0x7d40a49e, (q31_t)0x7d3f58fd, (q31_t)0x7d3e0d0e, (q31_t)0x7d3cc0d3, + (q31_t)0x7d3b744a, (q31_t)0x7d3a2774, + (q31_t)0x7d38da51, (q31_t)0x7d378ce0, (q31_t)0x7d363f23, (q31_t)0x7d34f118, (q31_t)0x7d33a2bf, (q31_t)0x7d32541a, + (q31_t)0x7d310527, (q31_t)0x7d2fb5e7, + (q31_t)0x7d2e665a, (q31_t)0x7d2d1680, (q31_t)0x7d2bc659, (q31_t)0x7d2a75e4, (q31_t)0x7d292522, (q31_t)0x7d27d413, + (q31_t)0x7d2682b6, (q31_t)0x7d25310d, + (q31_t)0x7d23df16, (q31_t)0x7d228cd2, (q31_t)0x7d213a41, (q31_t)0x7d1fe762, (q31_t)0x7d1e9437, (q31_t)0x7d1d40be, + (q31_t)0x7d1becf8, (q31_t)0x7d1a98e5, + (q31_t)0x7d194485, (q31_t)0x7d17efd8, (q31_t)0x7d169add, (q31_t)0x7d154595, (q31_t)0x7d13f001, (q31_t)0x7d129a1f, + (q31_t)0x7d1143ef, (q31_t)0x7d0fed73, + (q31_t)0x7d0e96aa, (q31_t)0x7d0d3f93, (q31_t)0x7d0be82f, (q31_t)0x7d0a907e, (q31_t)0x7d093880, (q31_t)0x7d07e035, + (q31_t)0x7d06879d, (q31_t)0x7d052eb8, + (q31_t)0x7d03d585, (q31_t)0x7d027c05, (q31_t)0x7d012239, (q31_t)0x7cffc81f, (q31_t)0x7cfe6db8, (q31_t)0x7cfd1304, + (q31_t)0x7cfbb803, (q31_t)0x7cfa5cb4, + (q31_t)0x7cf90119, (q31_t)0x7cf7a531, (q31_t)0x7cf648fb, (q31_t)0x7cf4ec79, (q31_t)0x7cf38fa9, (q31_t)0x7cf2328c, + (q31_t)0x7cf0d522, (q31_t)0x7cef776b, + (q31_t)0x7cee1967, (q31_t)0x7cecbb16, (q31_t)0x7ceb5c78, (q31_t)0x7ce9fd8d, (q31_t)0x7ce89e55, (q31_t)0x7ce73ed0, + (q31_t)0x7ce5defd, (q31_t)0x7ce47ede, + (q31_t)0x7ce31e72, (q31_t)0x7ce1bdb8, (q31_t)0x7ce05cb2, (q31_t)0x7cdefb5e, (q31_t)0x7cdd99be, (q31_t)0x7cdc37d0, + (q31_t)0x7cdad596, (q31_t)0x7cd9730e, + (q31_t)0x7cd8103a, (q31_t)0x7cd6ad18, (q31_t)0x7cd549aa, (q31_t)0x7cd3e5ee, (q31_t)0x7cd281e5, (q31_t)0x7cd11d90, + (q31_t)0x7ccfb8ed, (q31_t)0x7cce53fe, + (q31_t)0x7ccceec1, (q31_t)0x7ccb8937, (q31_t)0x7cca2361, (q31_t)0x7cc8bd3d, (q31_t)0x7cc756cd, (q31_t)0x7cc5f010, + (q31_t)0x7cc48905, (q31_t)0x7cc321ae, + (q31_t)0x7cc1ba09, (q31_t)0x7cc05218, (q31_t)0x7cbee9da, (q31_t)0x7cbd814f, (q31_t)0x7cbc1877, (q31_t)0x7cbaaf51, + (q31_t)0x7cb945df, (q31_t)0x7cb7dc20, + (q31_t)0x7cb67215, (q31_t)0x7cb507bc, (q31_t)0x7cb39d16, (q31_t)0x7cb23223, (q31_t)0x7cb0c6e4, (q31_t)0x7caf5b57, + (q31_t)0x7cadef7e, (q31_t)0x7cac8358, + (q31_t)0x7cab16e4, (q31_t)0x7ca9aa24, (q31_t)0x7ca83d17, (q31_t)0x7ca6cfbd, (q31_t)0x7ca56216, (q31_t)0x7ca3f423, + (q31_t)0x7ca285e2, (q31_t)0x7ca11755, + (q31_t)0x7c9fa87a, (q31_t)0x7c9e3953, (q31_t)0x7c9cc9df, (q31_t)0x7c9b5a1e, (q31_t)0x7c99ea10, (q31_t)0x7c9879b6, + (q31_t)0x7c97090e, (q31_t)0x7c95981a, + (q31_t)0x7c9426d8, (q31_t)0x7c92b54a, (q31_t)0x7c91436f, (q31_t)0x7c8fd148, (q31_t)0x7c8e5ed3, (q31_t)0x7c8cec12, + (q31_t)0x7c8b7903, (q31_t)0x7c8a05a8, + (q31_t)0x7c889200, (q31_t)0x7c871e0c, (q31_t)0x7c85a9ca, (q31_t)0x7c84353c, (q31_t)0x7c82c060, (q31_t)0x7c814b39, + (q31_t)0x7c7fd5c4, (q31_t)0x7c7e6002, + (q31_t)0x7c7ce9f4, (q31_t)0x7c7b7399, (q31_t)0x7c79fcf1, (q31_t)0x7c7885fc, (q31_t)0x7c770eba, (q31_t)0x7c75972c, + (q31_t)0x7c741f51, (q31_t)0x7c72a729, + (q31_t)0x7c712eb5, (q31_t)0x7c6fb5f3, (q31_t)0x7c6e3ce5, (q31_t)0x7c6cc38a, (q31_t)0x7c6b49e3, (q31_t)0x7c69cfee, + (q31_t)0x7c6855ad, (q31_t)0x7c66db1f, + (q31_t)0x7c656045, (q31_t)0x7c63e51e, (q31_t)0x7c6269aa, (q31_t)0x7c60ede9, (q31_t)0x7c5f71db, (q31_t)0x7c5df581, + (q31_t)0x7c5c78da, (q31_t)0x7c5afbe6, + (q31_t)0x7c597ea6, (q31_t)0x7c580119, (q31_t)0x7c56833f, (q31_t)0x7c550519, (q31_t)0x7c5386a6, (q31_t)0x7c5207e6, + (q31_t)0x7c5088d9, (q31_t)0x7c4f0980, + (q31_t)0x7c4d89da, (q31_t)0x7c4c09e8, (q31_t)0x7c4a89a8, (q31_t)0x7c49091c, (q31_t)0x7c478844, (q31_t)0x7c46071f, + (q31_t)0x7c4485ad, (q31_t)0x7c4303ee, + (q31_t)0x7c4181e3, (q31_t)0x7c3fff8b, (q31_t)0x7c3e7ce7, (q31_t)0x7c3cf9f5, (q31_t)0x7c3b76b8, (q31_t)0x7c39f32d, + (q31_t)0x7c386f56, (q31_t)0x7c36eb33, + (q31_t)0x7c3566c2, (q31_t)0x7c33e205, (q31_t)0x7c325cfc, (q31_t)0x7c30d7a6, (q31_t)0x7c2f5203, (q31_t)0x7c2dcc14, + (q31_t)0x7c2c45d8, (q31_t)0x7c2abf4f, + (q31_t)0x7c29387a, (q31_t)0x7c27b158, (q31_t)0x7c2629ea, (q31_t)0x7c24a22f, (q31_t)0x7c231a28, (q31_t)0x7c2191d4, + (q31_t)0x7c200933, (q31_t)0x7c1e8046, + (q31_t)0x7c1cf70c, (q31_t)0x7c1b6d86, (q31_t)0x7c19e3b3, (q31_t)0x7c185994, (q31_t)0x7c16cf28, (q31_t)0x7c15446f, + (q31_t)0x7c13b96a, (q31_t)0x7c122e19, + (q31_t)0x7c10a27b, (q31_t)0x7c0f1690, (q31_t)0x7c0d8a59, (q31_t)0x7c0bfdd5, (q31_t)0x7c0a7105, (q31_t)0x7c08e3e8, + (q31_t)0x7c07567f, (q31_t)0x7c05c8c9, + (q31_t)0x7c043ac7, (q31_t)0x7c02ac78, (q31_t)0x7c011ddd, (q31_t)0x7bff8ef5, (q31_t)0x7bfdffc1, (q31_t)0x7bfc7041, + (q31_t)0x7bfae073, (q31_t)0x7bf9505a, + (q31_t)0x7bf7bff4, (q31_t)0x7bf62f41, (q31_t)0x7bf49e42, (q31_t)0x7bf30cf6, (q31_t)0x7bf17b5e, (q31_t)0x7befe97a, + (q31_t)0x7bee5749, (q31_t)0x7becc4cc, + (q31_t)0x7beb3202, (q31_t)0x7be99eec, (q31_t)0x7be80b89, (q31_t)0x7be677da, (q31_t)0x7be4e3df, (q31_t)0x7be34f97, + (q31_t)0x7be1bb02, (q31_t)0x7be02621, + (q31_t)0x7bde90f4, (q31_t)0x7bdcfb7b, (q31_t)0x7bdb65b5, (q31_t)0x7bd9cfa2, (q31_t)0x7bd83944, (q31_t)0x7bd6a298, + (q31_t)0x7bd50ba1, (q31_t)0x7bd3745d, + (q31_t)0x7bd1dccc, (q31_t)0x7bd044f0, (q31_t)0x7bceacc7, (q31_t)0x7bcd1451, (q31_t)0x7bcb7b8f, (q31_t)0x7bc9e281, + (q31_t)0x7bc84927, (q31_t)0x7bc6af80, + (q31_t)0x7bc5158c, (q31_t)0x7bc37b4d, (q31_t)0x7bc1e0c1, (q31_t)0x7bc045e9, (q31_t)0x7bbeaac4, (q31_t)0x7bbd0f53, + (q31_t)0x7bbb7396, (q31_t)0x7bb9d78c, + (q31_t)0x7bb83b36, (q31_t)0x7bb69e94, (q31_t)0x7bb501a5, (q31_t)0x7bb3646a, (q31_t)0x7bb1c6e3, (q31_t)0x7bb02910, + (q31_t)0x7bae8af0, (q31_t)0x7bacec84, + (q31_t)0x7bab4dcc, (q31_t)0x7ba9aec7, (q31_t)0x7ba80f76, (q31_t)0x7ba66fd9, (q31_t)0x7ba4cfef, (q31_t)0x7ba32fba, + (q31_t)0x7ba18f38, (q31_t)0x7b9fee69, + (q31_t)0x7b9e4d4f, (q31_t)0x7b9cabe8, (q31_t)0x7b9b0a35, (q31_t)0x7b996836, (q31_t)0x7b97c5ea, (q31_t)0x7b962352, + (q31_t)0x7b94806e, (q31_t)0x7b92dd3e, + (q31_t)0x7b9139c2, (q31_t)0x7b8f95f9, (q31_t)0x7b8df1e4, (q31_t)0x7b8c4d83, (q31_t)0x7b8aa8d6, (q31_t)0x7b8903dc, + (q31_t)0x7b875e96, (q31_t)0x7b85b904, + (q31_t)0x7b841326, (q31_t)0x7b826cfc, (q31_t)0x7b80c686, (q31_t)0x7b7f1fc3, (q31_t)0x7b7d78b4, (q31_t)0x7b7bd159, + (q31_t)0x7b7a29b2, (q31_t)0x7b7881be, + (q31_t)0x7b76d97f, (q31_t)0x7b7530f3, (q31_t)0x7b73881b, (q31_t)0x7b71def7, (q31_t)0x7b703587, (q31_t)0x7b6e8bcb, + (q31_t)0x7b6ce1c2, (q31_t)0x7b6b376e, + (q31_t)0x7b698ccd, (q31_t)0x7b67e1e0, (q31_t)0x7b6636a7, (q31_t)0x7b648b22, (q31_t)0x7b62df51, (q31_t)0x7b613334, + (q31_t)0x7b5f86ca, (q31_t)0x7b5dda15, + (q31_t)0x7b5c2d13, (q31_t)0x7b5a7fc6, (q31_t)0x7b58d22c, (q31_t)0x7b572446, (q31_t)0x7b557614, (q31_t)0x7b53c796, + (q31_t)0x7b5218cc, (q31_t)0x7b5069b6, + (q31_t)0x7b4eba53, (q31_t)0x7b4d0aa5, (q31_t)0x7b4b5aab, (q31_t)0x7b49aa64, (q31_t)0x7b47f9d2, (q31_t)0x7b4648f3, + (q31_t)0x7b4497c9, (q31_t)0x7b42e652, + (q31_t)0x7b413490, (q31_t)0x7b3f8281, (q31_t)0x7b3dd026, (q31_t)0x7b3c1d80, (q31_t)0x7b3a6a8d, (q31_t)0x7b38b74e, + (q31_t)0x7b3703c3, (q31_t)0x7b354fed, + (q31_t)0x7b339bca, (q31_t)0x7b31e75b, (q31_t)0x7b3032a0, (q31_t)0x7b2e7d9a, (q31_t)0x7b2cc847, (q31_t)0x7b2b12a8, + (q31_t)0x7b295cbe, (q31_t)0x7b27a687, + (q31_t)0x7b25f004, (q31_t)0x7b243936, (q31_t)0x7b22821b, (q31_t)0x7b20cab5, (q31_t)0x7b1f1302, (q31_t)0x7b1d5b04, + (q31_t)0x7b1ba2b9, (q31_t)0x7b19ea23, + (q31_t)0x7b183141, (q31_t)0x7b167813, (q31_t)0x7b14be99, (q31_t)0x7b1304d3, (q31_t)0x7b114ac1, (q31_t)0x7b0f9063, + (q31_t)0x7b0dd5b9, (q31_t)0x7b0c1ac4, + (q31_t)0x7b0a5f82, (q31_t)0x7b08a3f5, (q31_t)0x7b06e81b, (q31_t)0x7b052bf6, (q31_t)0x7b036f85, (q31_t)0x7b01b2c8, + (q31_t)0x7afff5bf, (q31_t)0x7afe386a, + (q31_t)0x7afc7aca, (q31_t)0x7afabcdd, (q31_t)0x7af8fea5, (q31_t)0x7af74021, (q31_t)0x7af58151, (q31_t)0x7af3c235, + (q31_t)0x7af202cd, (q31_t)0x7af0431a, + (q31_t)0x7aee831a, (q31_t)0x7aecc2cf, (q31_t)0x7aeb0238, (q31_t)0x7ae94155, (q31_t)0x7ae78026, (q31_t)0x7ae5beac, + (q31_t)0x7ae3fce6, (q31_t)0x7ae23ad4, + (q31_t)0x7ae07876, (q31_t)0x7adeb5cc, (q31_t)0x7adcf2d6, (q31_t)0x7adb2f95, (q31_t)0x7ad96c08, (q31_t)0x7ad7a82f, + (q31_t)0x7ad5e40a, (q31_t)0x7ad41f9a, + (q31_t)0x7ad25ade, (q31_t)0x7ad095d6, (q31_t)0x7aced082, (q31_t)0x7acd0ae3, (q31_t)0x7acb44f8, (q31_t)0x7ac97ec1, + (q31_t)0x7ac7b83e, (q31_t)0x7ac5f170, + (q31_t)0x7ac42a55, (q31_t)0x7ac262ef, (q31_t)0x7ac09b3e, (q31_t)0x7abed341, (q31_t)0x7abd0af7, (q31_t)0x7abb4263, + (q31_t)0x7ab97982, (q31_t)0x7ab7b056, + (q31_t)0x7ab5e6de, (q31_t)0x7ab41d1b, (q31_t)0x7ab2530b, (q31_t)0x7ab088b0, (q31_t)0x7aaebe0a, (q31_t)0x7aacf318, + (q31_t)0x7aab27da, (q31_t)0x7aa95c50, + (q31_t)0x7aa7907b, (q31_t)0x7aa5c45a, (q31_t)0x7aa3f7ed, (q31_t)0x7aa22b35, (q31_t)0x7aa05e31, (q31_t)0x7a9e90e1, + (q31_t)0x7a9cc346, (q31_t)0x7a9af55f, + (q31_t)0x7a99272d, (q31_t)0x7a9758af, (q31_t)0x7a9589e5, (q31_t)0x7a93bad0, (q31_t)0x7a91eb6f, (q31_t)0x7a901bc2, + (q31_t)0x7a8e4bca, (q31_t)0x7a8c7b87, + (q31_t)0x7a8aaaf7, (q31_t)0x7a88da1c, (q31_t)0x7a8708f6, (q31_t)0x7a853784, (q31_t)0x7a8365c6, (q31_t)0x7a8193bd, + (q31_t)0x7a7fc168, (q31_t)0x7a7deec8, + (q31_t)0x7a7c1bdc, (q31_t)0x7a7a48a4, (q31_t)0x7a787521, (q31_t)0x7a76a153, (q31_t)0x7a74cd38, (q31_t)0x7a72f8d3, + (q31_t)0x7a712422, (q31_t)0x7a6f4f25, + (q31_t)0x7a6d79dd, (q31_t)0x7a6ba449, (q31_t)0x7a69ce6a, (q31_t)0x7a67f83f, (q31_t)0x7a6621c9, (q31_t)0x7a644b07, + (q31_t)0x7a6273fa, (q31_t)0x7a609ca1, + (q31_t)0x7a5ec4fc, (q31_t)0x7a5ced0d, (q31_t)0x7a5b14d1, (q31_t)0x7a593c4b, (q31_t)0x7a576379, (q31_t)0x7a558a5b, + (q31_t)0x7a53b0f2, (q31_t)0x7a51d73d, + (q31_t)0x7a4ffd3d, (q31_t)0x7a4e22f2, (q31_t)0x7a4c485b, (q31_t)0x7a4a6d78, (q31_t)0x7a48924b, (q31_t)0x7a46b6d1, + (q31_t)0x7a44db0d, (q31_t)0x7a42fefd, + (q31_t)0x7a4122a1, (q31_t)0x7a3f45fa, (q31_t)0x7a3d6908, (q31_t)0x7a3b8bca, (q31_t)0x7a39ae41, (q31_t)0x7a37d06d, + (q31_t)0x7a35f24d, (q31_t)0x7a3413e2, + (q31_t)0x7a32352b, (q31_t)0x7a305629, (q31_t)0x7a2e76dc, (q31_t)0x7a2c9743, (q31_t)0x7a2ab75f, (q31_t)0x7a28d72f, + (q31_t)0x7a26f6b4, (q31_t)0x7a2515ee, + (q31_t)0x7a2334dd, (q31_t)0x7a215380, (q31_t)0x7a1f71d7, (q31_t)0x7a1d8fe4, (q31_t)0x7a1bada5, (q31_t)0x7a19cb1b, + (q31_t)0x7a17e845, (q31_t)0x7a160524, + (q31_t)0x7a1421b8, (q31_t)0x7a123e01, (q31_t)0x7a1059fe, (q31_t)0x7a0e75b0, (q31_t)0x7a0c9117, (q31_t)0x7a0aac32, + (q31_t)0x7a08c702, (q31_t)0x7a06e187, + (q31_t)0x7a04fbc1, (q31_t)0x7a0315af, (q31_t)0x7a012f52, (q31_t)0x79ff48aa, (q31_t)0x79fd61b6, (q31_t)0x79fb7a77, + (q31_t)0x79f992ed, (q31_t)0x79f7ab18, + (q31_t)0x79f5c2f8, (q31_t)0x79f3da8c, (q31_t)0x79f1f1d5, (q31_t)0x79f008d3, (q31_t)0x79ee1f86, (q31_t)0x79ec35ed, + (q31_t)0x79ea4c09, (q31_t)0x79e861da, + (q31_t)0x79e67760, (q31_t)0x79e48c9b, (q31_t)0x79e2a18a, (q31_t)0x79e0b62e, (q31_t)0x79deca87, (q31_t)0x79dcde95, + (q31_t)0x79daf258, (q31_t)0x79d905d0, + (q31_t)0x79d718fc, (q31_t)0x79d52bdd, (q31_t)0x79d33e73, (q31_t)0x79d150be, (q31_t)0x79cf62be, (q31_t)0x79cd7473, + (q31_t)0x79cb85dc, (q31_t)0x79c996fb, + (q31_t)0x79c7a7ce, (q31_t)0x79c5b856, (q31_t)0x79c3c893, (q31_t)0x79c1d885, (q31_t)0x79bfe82c, (q31_t)0x79bdf788, + (q31_t)0x79bc0698, (q31_t)0x79ba155e, + (q31_t)0x79b823d8, (q31_t)0x79b63207, (q31_t)0x79b43fec, (q31_t)0x79b24d85, (q31_t)0x79b05ad3, (q31_t)0x79ae67d6, + (q31_t)0x79ac748e, (q31_t)0x79aa80fb, + (q31_t)0x79a88d1d, (q31_t)0x79a698f4, (q31_t)0x79a4a480, (q31_t)0x79a2afc1, (q31_t)0x79a0bab6, (q31_t)0x799ec561, + (q31_t)0x799ccfc1, (q31_t)0x799ad9d5, + (q31_t)0x7998e39f, (q31_t)0x7996ed1e, (q31_t)0x7994f651, (q31_t)0x7992ff3a, (q31_t)0x799107d8, (q31_t)0x798f102a, + (q31_t)0x798d1832, (q31_t)0x798b1fef, + (q31_t)0x79892761, (q31_t)0x79872e87, (q31_t)0x79853563, (q31_t)0x79833bf4, (q31_t)0x7981423a, (q31_t)0x797f4835, + (q31_t)0x797d4de5, (q31_t)0x797b534a, + (q31_t)0x79795864, (q31_t)0x79775d33, (q31_t)0x797561b8, (q31_t)0x797365f1, (q31_t)0x797169df, (q31_t)0x796f6d83, + (q31_t)0x796d70dc, (q31_t)0x796b73e9, + (q31_t)0x796976ac, (q31_t)0x79677924, (q31_t)0x79657b51, (q31_t)0x79637d33, (q31_t)0x79617eca, (q31_t)0x795f8017, + (q31_t)0x795d8118, (q31_t)0x795b81cf, + (q31_t)0x7959823b, (q31_t)0x7957825c, (q31_t)0x79558232, (q31_t)0x795381bd, (q31_t)0x795180fe, (q31_t)0x794f7ff3, + (q31_t)0x794d7e9e, (q31_t)0x794b7cfe, + (q31_t)0x79497b13, (q31_t)0x794778dd, (q31_t)0x7945765d, (q31_t)0x79437391, (q31_t)0x7941707b, (q31_t)0x793f6d1a, + (q31_t)0x793d696f, (q31_t)0x793b6578, + (q31_t)0x79396137, (q31_t)0x79375cab, (q31_t)0x793557d4, (q31_t)0x793352b2, (q31_t)0x79314d46, (q31_t)0x792f478f, + (q31_t)0x792d418d, (q31_t)0x792b3b40, + (q31_t)0x792934a9, (q31_t)0x79272dc7, (q31_t)0x7925269a, (q31_t)0x79231f22, (q31_t)0x79211760, (q31_t)0x791f0f53, + (q31_t)0x791d06fb, (q31_t)0x791afe59, + (q31_t)0x7918f56c, (q31_t)0x7916ec34, (q31_t)0x7914e2b2, (q31_t)0x7912d8e4, (q31_t)0x7910cecc, (q31_t)0x790ec46a, + (q31_t)0x790cb9bd, (q31_t)0x790aaec5, + (q31_t)0x7908a382, (q31_t)0x790697f5, (q31_t)0x79048c1d, (q31_t)0x79027ffa, (q31_t)0x7900738d, (q31_t)0x78fe66d5, + (q31_t)0x78fc59d3, (q31_t)0x78fa4c86, + (q31_t)0x78f83eee, (q31_t)0x78f6310c, (q31_t)0x78f422df, (q31_t)0x78f21467, (q31_t)0x78f005a5, (q31_t)0x78edf698, + (q31_t)0x78ebe741, (q31_t)0x78e9d79f, + (q31_t)0x78e7c7b2, (q31_t)0x78e5b77b, (q31_t)0x78e3a6f9, (q31_t)0x78e1962d, (q31_t)0x78df8516, (q31_t)0x78dd73b5, + (q31_t)0x78db6209, (q31_t)0x78d95012, + (q31_t)0x78d73dd1, (q31_t)0x78d52b46, (q31_t)0x78d31870, (q31_t)0x78d1054f, (q31_t)0x78cef1e4, (q31_t)0x78ccde2e, + (q31_t)0x78caca2e, (q31_t)0x78c8b5e3, + (q31_t)0x78c6a14e, (q31_t)0x78c48c6e, (q31_t)0x78c27744, (q31_t)0x78c061cf, (q31_t)0x78be4c10, (q31_t)0x78bc3606, + (q31_t)0x78ba1fb2, (q31_t)0x78b80913, + (q31_t)0x78b5f22a, (q31_t)0x78b3daf7, (q31_t)0x78b1c379, (q31_t)0x78afabb0, (q31_t)0x78ad939d, (q31_t)0x78ab7b40, + (q31_t)0x78a96298, (q31_t)0x78a749a6, + (q31_t)0x78a53069, (q31_t)0x78a316e2, (q31_t)0x78a0fd11, (q31_t)0x789ee2f5, (q31_t)0x789cc88f, (q31_t)0x789aadde, + (q31_t)0x789892e3, (q31_t)0x7896779d, + (q31_t)0x78945c0d, (q31_t)0x78924033, (q31_t)0x7890240e, (q31_t)0x788e07a0, (q31_t)0x788beae6, (q31_t)0x7889cde2, + (q31_t)0x7887b094, (q31_t)0x788592fc, + (q31_t)0x78837519, (q31_t)0x788156ec, (q31_t)0x787f3875, (q31_t)0x787d19b3, (q31_t)0x787afaa7, (q31_t)0x7878db50, + (q31_t)0x7876bbb0, (q31_t)0x78749bc5, + (q31_t)0x78727b8f, (q31_t)0x78705b10, (q31_t)0x786e3a46, (q31_t)0x786c1932, (q31_t)0x7869f7d3, (q31_t)0x7867d62a, + (q31_t)0x7865b437, (q31_t)0x786391fa, + (q31_t)0x78616f72, (q31_t)0x785f4ca1, (q31_t)0x785d2984, (q31_t)0x785b061e, (q31_t)0x7858e26e, (q31_t)0x7856be73, + (q31_t)0x78549a2e, (q31_t)0x7852759e, + (q31_t)0x785050c5, (q31_t)0x784e2ba1, (q31_t)0x784c0633, (q31_t)0x7849e07b, (q31_t)0x7847ba79, (q31_t)0x7845942c, + (q31_t)0x78436d96, (q31_t)0x784146b5, + (q31_t)0x783f1f8a, (q31_t)0x783cf815, (q31_t)0x783ad055, (q31_t)0x7838a84c, (q31_t)0x78367ff8, (q31_t)0x7834575a, + (q31_t)0x78322e72, (q31_t)0x78300540, + (q31_t)0x782ddbc4, (q31_t)0x782bb1fd, (q31_t)0x782987ed, (q31_t)0x78275d92, (q31_t)0x782532ed, (q31_t)0x782307fe, + (q31_t)0x7820dcc5, (q31_t)0x781eb142, + (q31_t)0x781c8575, (q31_t)0x781a595d, (q31_t)0x78182cfc, (q31_t)0x78160051, (q31_t)0x7813d35b, (q31_t)0x7811a61b, + (q31_t)0x780f7892, (q31_t)0x780d4abe, + (q31_t)0x780b1ca0, (q31_t)0x7808ee38, (q31_t)0x7806bf86, (q31_t)0x7804908a, (q31_t)0x78026145, (q31_t)0x780031b5, + (q31_t)0x77fe01db, (q31_t)0x77fbd1b6, + (q31_t)0x77f9a148, (q31_t)0x77f77090, (q31_t)0x77f53f8e, (q31_t)0x77f30e42, (q31_t)0x77f0dcac, (q31_t)0x77eeaacc, + (q31_t)0x77ec78a2, (q31_t)0x77ea462e, + (q31_t)0x77e81370, (q31_t)0x77e5e068, (q31_t)0x77e3ad17, (q31_t)0x77e1797b, (q31_t)0x77df4595, (q31_t)0x77dd1165, + (q31_t)0x77dadcec, (q31_t)0x77d8a828, + (q31_t)0x77d6731a, (q31_t)0x77d43dc3, (q31_t)0x77d20822, (q31_t)0x77cfd236, (q31_t)0x77cd9c01, (q31_t)0x77cb6582, + (q31_t)0x77c92eb9, (q31_t)0x77c6f7a6, + (q31_t)0x77c4c04a, (q31_t)0x77c288a3, (q31_t)0x77c050b2, (q31_t)0x77be1878, (q31_t)0x77bbdff4, (q31_t)0x77b9a726, + (q31_t)0x77b76e0e, (q31_t)0x77b534ac, + (q31_t)0x77b2fb00, (q31_t)0x77b0c10b, (q31_t)0x77ae86cc, (q31_t)0x77ac4c43, (q31_t)0x77aa1170, (q31_t)0x77a7d653, + (q31_t)0x77a59aec, (q31_t)0x77a35f3c, + (q31_t)0x77a12342, (q31_t)0x779ee6fe, (q31_t)0x779caa70, (q31_t)0x779a6d99, (q31_t)0x77983077, (q31_t)0x7795f30c, + (q31_t)0x7793b557, (q31_t)0x77917759, + (q31_t)0x778f3910, (q31_t)0x778cfa7e, (q31_t)0x778abba2, (q31_t)0x77887c7d, (q31_t)0x77863d0d, (q31_t)0x7783fd54, + (q31_t)0x7781bd52, (q31_t)0x777f7d05, + (q31_t)0x777d3c6f, (q31_t)0x777afb8f, (q31_t)0x7778ba65, (q31_t)0x777678f2, (q31_t)0x77743735, (q31_t)0x7771f52e, + (q31_t)0x776fb2de, (q31_t)0x776d7044, + (q31_t)0x776b2d60, (q31_t)0x7768ea33, (q31_t)0x7766a6bc, (q31_t)0x776462fb, (q31_t)0x77621ef1, (q31_t)0x775fda9d, + (q31_t)0x775d95ff, (q31_t)0x775b5118, + (q31_t)0x77590be7, (q31_t)0x7756c66c, (q31_t)0x775480a8, (q31_t)0x77523a9b, (q31_t)0x774ff443, (q31_t)0x774dada2, + (q31_t)0x774b66b8, (q31_t)0x77491f84, + (q31_t)0x7746d806, (q31_t)0x7744903f, (q31_t)0x7742482e, (q31_t)0x773fffd4, (q31_t)0x773db730, (q31_t)0x773b6e42, + (q31_t)0x7739250b, (q31_t)0x7736db8b, + (q31_t)0x773491c0, (q31_t)0x773247ad, (q31_t)0x772ffd50, (q31_t)0x772db2a9, (q31_t)0x772b67b9, (q31_t)0x77291c7f, + (q31_t)0x7726d0fc, (q31_t)0x7724852f, + (q31_t)0x77223919, (q31_t)0x771fecb9, (q31_t)0x771da010, (q31_t)0x771b531d, (q31_t)0x771905e1, (q31_t)0x7716b85b, + (q31_t)0x77146a8c, (q31_t)0x77121c74, + (q31_t)0x770fce12, (q31_t)0x770d7f66, (q31_t)0x770b3072, (q31_t)0x7708e133, (q31_t)0x770691ab, (q31_t)0x770441da, + (q31_t)0x7701f1c0, (q31_t)0x76ffa15c, + (q31_t)0x76fd50ae, (q31_t)0x76faffb8, (q31_t)0x76f8ae78, (q31_t)0x76f65cee, (q31_t)0x76f40b1b, (q31_t)0x76f1b8ff, + (q31_t)0x76ef6699, (q31_t)0x76ed13ea, + (q31_t)0x76eac0f2, (q31_t)0x76e86db0, (q31_t)0x76e61a25, (q31_t)0x76e3c650, (q31_t)0x76e17233, (q31_t)0x76df1dcb, + (q31_t)0x76dcc91b, (q31_t)0x76da7421, + (q31_t)0x76d81ede, (q31_t)0x76d5c952, (q31_t)0x76d3737c, (q31_t)0x76d11d5d, (q31_t)0x76cec6f5, (q31_t)0x76cc7043, + (q31_t)0x76ca1948, (q31_t)0x76c7c204, + (q31_t)0x76c56a77, (q31_t)0x76c312a0, (q31_t)0x76c0ba80, (q31_t)0x76be6217, (q31_t)0x76bc0965, (q31_t)0x76b9b069, + (q31_t)0x76b75724, (q31_t)0x76b4fd96, + (q31_t)0x76b2a3bf, (q31_t)0x76b0499e, (q31_t)0x76adef34, (q31_t)0x76ab9481, (q31_t)0x76a93985, (q31_t)0x76a6de40, + (q31_t)0x76a482b1, (q31_t)0x76a226da, + (q31_t)0x769fcab9, (q31_t)0x769d6e4f, (q31_t)0x769b119b, (q31_t)0x7698b49f, (q31_t)0x76965759, (q31_t)0x7693f9ca, + (q31_t)0x76919bf3, (q31_t)0x768f3dd2, + (q31_t)0x768cdf67, (q31_t)0x768a80b4, (q31_t)0x768821b8, (q31_t)0x7685c272, (q31_t)0x768362e4, (q31_t)0x7681030c, + (q31_t)0x767ea2eb, (q31_t)0x767c4281, + (q31_t)0x7679e1ce, (q31_t)0x767780d2, (q31_t)0x76751f8d, (q31_t)0x7672bdfe, (q31_t)0x76705c27, (q31_t)0x766dfa07, + (q31_t)0x766b979d, (q31_t)0x766934eb, + (q31_t)0x7666d1ef, (q31_t)0x76646eab, (q31_t)0x76620b1d, (q31_t)0x765fa747, (q31_t)0x765d4327, (q31_t)0x765adebe, + (q31_t)0x76587a0d, (q31_t)0x76561512, + (q31_t)0x7653afce, (q31_t)0x76514a42, (q31_t)0x764ee46c, (q31_t)0x764c7e4d, (q31_t)0x764a17e6, (q31_t)0x7647b135, + (q31_t)0x76454a3c, (q31_t)0x7642e2f9, + (q31_t)0x76407b6e, (q31_t)0x763e139a, (q31_t)0x763bab7c, (q31_t)0x76394316, (q31_t)0x7636da67, (q31_t)0x7634716f, + (q31_t)0x7632082e, (q31_t)0x762f9ea4, + (q31_t)0x762d34d1, (q31_t)0x762acab6, (q31_t)0x76286051, (q31_t)0x7625f5a3, (q31_t)0x76238aad, (q31_t)0x76211f6e, + (q31_t)0x761eb3e6, (q31_t)0x761c4815, + (q31_t)0x7619dbfb, (q31_t)0x76176f98, (q31_t)0x761502ed, (q31_t)0x761295f9, (q31_t)0x761028bb, (q31_t)0x760dbb35, + (q31_t)0x760b4d67, (q31_t)0x7608df4f, + (q31_t)0x760670ee, (q31_t)0x76040245, (q31_t)0x76019353, (q31_t)0x75ff2418, (q31_t)0x75fcb495, (q31_t)0x75fa44c8, + (q31_t)0x75f7d4b3, (q31_t)0x75f56455, + (q31_t)0x75f2f3ae, (q31_t)0x75f082bf, (q31_t)0x75ee1187, (q31_t)0x75eba006, (q31_t)0x75e92e3c, (q31_t)0x75e6bc2a, + (q31_t)0x75e449ce, (q31_t)0x75e1d72b, + (q31_t)0x75df643e, (q31_t)0x75dcf109, (q31_t)0x75da7d8b, (q31_t)0x75d809c4, (q31_t)0x75d595b4, (q31_t)0x75d3215c, + (q31_t)0x75d0acbc, (q31_t)0x75ce37d2, + (q31_t)0x75cbc2a0, (q31_t)0x75c94d25, (q31_t)0x75c6d762, (q31_t)0x75c46156, (q31_t)0x75c1eb01, (q31_t)0x75bf7464, + (q31_t)0x75bcfd7e, (q31_t)0x75ba864f, + (q31_t)0x75b80ed8, (q31_t)0x75b59718, (q31_t)0x75b31f0f, (q31_t)0x75b0a6be, (q31_t)0x75ae2e25, (q31_t)0x75abb542, + (q31_t)0x75a93c18, (q31_t)0x75a6c2a4, + (q31_t)0x75a448e8, (q31_t)0x75a1cee4, (q31_t)0x759f5496, (q31_t)0x759cda01, (q31_t)0x759a5f22, (q31_t)0x7597e3fc, + (q31_t)0x7595688c, (q31_t)0x7592ecd4, + (q31_t)0x759070d4, (q31_t)0x758df48b, (q31_t)0x758b77fa, (q31_t)0x7588fb20, (q31_t)0x75867dfd, (q31_t)0x75840093, + (q31_t)0x758182df, (q31_t)0x757f04e3, + (q31_t)0x757c869f, (q31_t)0x757a0812, (q31_t)0x7577893d, (q31_t)0x75750a1f, (q31_t)0x75728ab9, (q31_t)0x75700b0a, + (q31_t)0x756d8b13, (q31_t)0x756b0ad3, + (q31_t)0x75688a4b, (q31_t)0x7566097b, (q31_t)0x75638862, (q31_t)0x75610701, (q31_t)0x755e8557, (q31_t)0x755c0365, + (q31_t)0x7559812b, (q31_t)0x7556fea8, + (q31_t)0x75547bdd, (q31_t)0x7551f8c9, (q31_t)0x754f756e, (q31_t)0x754cf1c9, (q31_t)0x754a6ddd, (q31_t)0x7547e9a8, + (q31_t)0x7545652a, (q31_t)0x7542e065, + (q31_t)0x75405b57, (q31_t)0x753dd600, (q31_t)0x753b5061, (q31_t)0x7538ca7b, (q31_t)0x7536444b, (q31_t)0x7533bdd4, + (q31_t)0x75313714, (q31_t)0x752eb00c, + (q31_t)0x752c28bb, (q31_t)0x7529a122, (q31_t)0x75271941, (q31_t)0x75249118, (q31_t)0x752208a7, (q31_t)0x751f7fed, + (q31_t)0x751cf6eb, (q31_t)0x751a6da0, + (q31_t)0x7517e40e, (q31_t)0x75155a33, (q31_t)0x7512d010, (q31_t)0x751045a5, (q31_t)0x750dbaf2, (q31_t)0x750b2ff6, + (q31_t)0x7508a4b2, (q31_t)0x75061926, + (q31_t)0x75038d52, (q31_t)0x75010136, (q31_t)0x74fe74d1, (q31_t)0x74fbe825, (q31_t)0x74f95b30, (q31_t)0x74f6cdf3, + (q31_t)0x74f4406d, (q31_t)0x74f1b2a0, + (q31_t)0x74ef248b, (q31_t)0x74ec962d, (q31_t)0x74ea0787, (q31_t)0x74e7789a, (q31_t)0x74e4e964, (q31_t)0x74e259e6, + (q31_t)0x74dfca20, (q31_t)0x74dd3a11, + (q31_t)0x74daa9bb, (q31_t)0x74d8191d, (q31_t)0x74d58836, (q31_t)0x74d2f708, (q31_t)0x74d06591, (q31_t)0x74cdd3d2, + (q31_t)0x74cb41cc, (q31_t)0x74c8af7d, + (q31_t)0x74c61ce6, (q31_t)0x74c38a07, (q31_t)0x74c0f6e0, (q31_t)0x74be6372, (q31_t)0x74bbcfbb, (q31_t)0x74b93bbc, + (q31_t)0x74b6a775, (q31_t)0x74b412e6, + (q31_t)0x74b17e0f, (q31_t)0x74aee8f0, (q31_t)0x74ac5389, (q31_t)0x74a9bddb, (q31_t)0x74a727e4, (q31_t)0x74a491a5, + (q31_t)0x74a1fb1e, (q31_t)0x749f6450, + (q31_t)0x749ccd39, (q31_t)0x749a35db, (q31_t)0x74979e34, (q31_t)0x74950646, (q31_t)0x74926e10, (q31_t)0x748fd592, + (q31_t)0x748d3ccb, (q31_t)0x748aa3be, + (q31_t)0x74880a68, (q31_t)0x748570ca, (q31_t)0x7482d6e4, (q31_t)0x74803cb7, (q31_t)0x747da242, (q31_t)0x747b0784, + (q31_t)0x74786c7f, (q31_t)0x7475d132, + (q31_t)0x7473359e, (q31_t)0x747099c1, (q31_t)0x746dfd9d, (q31_t)0x746b6131, (q31_t)0x7468c47c, (q31_t)0x74662781, + (q31_t)0x74638a3d, (q31_t)0x7460ecb2, + (q31_t)0x745e4ede, (q31_t)0x745bb0c3, (q31_t)0x74591261, (q31_t)0x745673b6, (q31_t)0x7453d4c4, (q31_t)0x7451358a, + (q31_t)0x744e9608, (q31_t)0x744bf63e, + (q31_t)0x7449562d, (q31_t)0x7446b5d4, (q31_t)0x74441533, (q31_t)0x7441744b, (q31_t)0x743ed31b, (q31_t)0x743c31a3, + (q31_t)0x74398fe3, (q31_t)0x7436eddc, + (q31_t)0x74344b8d, (q31_t)0x7431a8f6, (q31_t)0x742f0618, (q31_t)0x742c62f2, (q31_t)0x7429bf84, (q31_t)0x74271bcf, + (q31_t)0x742477d2, (q31_t)0x7421d38e, + (q31_t)0x741f2f01, (q31_t)0x741c8a2d, (q31_t)0x7419e512, (q31_t)0x74173faf, (q31_t)0x74149a04, (q31_t)0x7411f412, + (q31_t)0x740f4dd8, (q31_t)0x740ca756, + (q31_t)0x740a008d, (q31_t)0x7407597d, (q31_t)0x7404b224, (q31_t)0x74020a85, (q31_t)0x73ff629d, (q31_t)0x73fcba6e, + (q31_t)0x73fa11f8, (q31_t)0x73f7693a, + (q31_t)0x73f4c034, (q31_t)0x73f216e7, (q31_t)0x73ef6d53, (q31_t)0x73ecc377, (q31_t)0x73ea1953, (q31_t)0x73e76ee8, + (q31_t)0x73e4c435, (q31_t)0x73e2193b, + (q31_t)0x73df6df9, (q31_t)0x73dcc270, (q31_t)0x73da16a0, (q31_t)0x73d76a88, (q31_t)0x73d4be28, (q31_t)0x73d21182, + (q31_t)0x73cf6493, (q31_t)0x73ccb75d, + (q31_t)0x73ca09e0, (q31_t)0x73c75c1c, (q31_t)0x73c4ae10, (q31_t)0x73c1ffbc, (q31_t)0x73bf5121, (q31_t)0x73bca23f, + (q31_t)0x73b9f315, (q31_t)0x73b743a4, + (q31_t)0x73b493ec, (q31_t)0x73b1e3ec, (q31_t)0x73af33a5, (q31_t)0x73ac8316, (q31_t)0x73a9d240, (q31_t)0x73a72123, + (q31_t)0x73a46fbf, (q31_t)0x73a1be13, + (q31_t)0x739f0c20, (q31_t)0x739c59e5, (q31_t)0x7399a763, (q31_t)0x7396f49a, (q31_t)0x73944189, (q31_t)0x73918e32, + (q31_t)0x738eda93, (q31_t)0x738c26ac, + (q31_t)0x7389727f, (q31_t)0x7386be0a, (q31_t)0x7384094e, (q31_t)0x7381544a, (q31_t)0x737e9f00, (q31_t)0x737be96e, + (q31_t)0x73793395, (q31_t)0x73767d74, + (q31_t)0x7373c70d, (q31_t)0x7371105e, (q31_t)0x736e5968, (q31_t)0x736ba22b, (q31_t)0x7368eaa6, (q31_t)0x736632db, + (q31_t)0x73637ac8, (q31_t)0x7360c26e, + (q31_t)0x735e09cd, (q31_t)0x735b50e4, (q31_t)0x735897b5, (q31_t)0x7355de3e, (q31_t)0x73532481, (q31_t)0x73506a7c, + (q31_t)0x734db030, (q31_t)0x734af59d, + (q31_t)0x73483ac2, (q31_t)0x73457fa1, (q31_t)0x7342c438, (q31_t)0x73400889, (q31_t)0x733d4c92, (q31_t)0x733a9054, + (q31_t)0x7337d3d0, (q31_t)0x73351704, + (q31_t)0x733259f1, (q31_t)0x732f9c97, (q31_t)0x732cdef6, (q31_t)0x732a210d, (q31_t)0x732762de, (q31_t)0x7324a468, + (q31_t)0x7321e5ab, (q31_t)0x731f26a7, + (q31_t)0x731c675b, (q31_t)0x7319a7c9, (q31_t)0x7316e7f0, (q31_t)0x731427cf, (q31_t)0x73116768, (q31_t)0x730ea6ba, + (q31_t)0x730be5c5, (q31_t)0x73092489, + (q31_t)0x73066306, (q31_t)0x7303a13b, (q31_t)0x7300df2a, (q31_t)0x72fe1cd2, (q31_t)0x72fb5a34, (q31_t)0x72f8974e, + (q31_t)0x72f5d421, (q31_t)0x72f310ad, + (q31_t)0x72f04cf3, (q31_t)0x72ed88f1, (q31_t)0x72eac4a9, (q31_t)0x72e8001a, (q31_t)0x72e53b44, (q31_t)0x72e27627, + (q31_t)0x72dfb0c3, (q31_t)0x72dceb18, + (q31_t)0x72da2526, (q31_t)0x72d75eee, (q31_t)0x72d4986f, (q31_t)0x72d1d1a9, (q31_t)0x72cf0a9c, (q31_t)0x72cc4348, + (q31_t)0x72c97bad, (q31_t)0x72c6b3cc, + (q31_t)0x72c3eba4, (q31_t)0x72c12335, (q31_t)0x72be5a7f, (q31_t)0x72bb9183, (q31_t)0x72b8c83f, (q31_t)0x72b5feb5, + (q31_t)0x72b334e4, (q31_t)0x72b06acd, + (q31_t)0x72ada06f, (q31_t)0x72aad5c9, (q31_t)0x72a80ade, (q31_t)0x72a53fab, (q31_t)0x72a27432, (q31_t)0x729fa872, + (q31_t)0x729cdc6b, (q31_t)0x729a101e, + (q31_t)0x7297438a, (q31_t)0x729476af, (q31_t)0x7291a98e, (q31_t)0x728edc26, (q31_t)0x728c0e77, (q31_t)0x72894082, + (q31_t)0x72867245, (q31_t)0x7283a3c3, + (q31_t)0x7280d4f9, (q31_t)0x727e05e9, (q31_t)0x727b3693, (q31_t)0x727866f6, (q31_t)0x72759712, (q31_t)0x7272c6e7, + (q31_t)0x726ff676, (q31_t)0x726d25bf, + (q31_t)0x726a54c1, (q31_t)0x7267837c, (q31_t)0x7264b1f0, (q31_t)0x7261e01e, (q31_t)0x725f0e06, (q31_t)0x725c3ba7, + (q31_t)0x72596901, (q31_t)0x72569615, + (q31_t)0x7253c2e3, (q31_t)0x7250ef6a, (q31_t)0x724e1baa, (q31_t)0x724b47a4, (q31_t)0x72487357, (q31_t)0x72459ec4, + (q31_t)0x7242c9ea, (q31_t)0x723ff4ca, + (q31_t)0x723d1f63, (q31_t)0x723a49b6, (q31_t)0x723773c3, (q31_t)0x72349d89, (q31_t)0x7231c708, (q31_t)0x722ef041, + (q31_t)0x722c1934, (q31_t)0x722941e0, + (q31_t)0x72266a46, (q31_t)0x72239266, (q31_t)0x7220ba3f, (q31_t)0x721de1d1, (q31_t)0x721b091d, (q31_t)0x72183023, + (q31_t)0x721556e3, (q31_t)0x72127d5c, + (q31_t)0x720fa38e, (q31_t)0x720cc97b, (q31_t)0x7209ef21, (q31_t)0x72071480, (q31_t)0x7204399a, (q31_t)0x72015e6d, + (q31_t)0x71fe82f9, (q31_t)0x71fba740, + (q31_t)0x71f8cb40, (q31_t)0x71f5eefa, (q31_t)0x71f3126d, (q31_t)0x71f0359a, (q31_t)0x71ed5881, (q31_t)0x71ea7b22, + (q31_t)0x71e79d7c, (q31_t)0x71e4bf90, + (q31_t)0x71e1e15e, (q31_t)0x71df02e5, (q31_t)0x71dc2427, (q31_t)0x71d94522, (q31_t)0x71d665d6, (q31_t)0x71d38645, + (q31_t)0x71d0a66d, (q31_t)0x71cdc650, + (q31_t)0x71cae5ec, (q31_t)0x71c80542, (q31_t)0x71c52451, (q31_t)0x71c2431b, (q31_t)0x71bf619e, (q31_t)0x71bc7fdb, + (q31_t)0x71b99dd2, (q31_t)0x71b6bb83, + (q31_t)0x71b3d8ed, (q31_t)0x71b0f612, (q31_t)0x71ae12f0, (q31_t)0x71ab2f89, (q31_t)0x71a84bdb, (q31_t)0x71a567e7, + (q31_t)0x71a283ad, (q31_t)0x719f9f2c, + (q31_t)0x719cba66, (q31_t)0x7199d55a, (q31_t)0x7196f008, (q31_t)0x71940a6f, (q31_t)0x71912490, (q31_t)0x718e3e6c, + (q31_t)0x718b5801, (q31_t)0x71887151, + (q31_t)0x71858a5a, (q31_t)0x7182a31d, (q31_t)0x717fbb9a, (q31_t)0x717cd3d2, (q31_t)0x7179ebc3, (q31_t)0x7177036e, + (q31_t)0x71741ad3, (q31_t)0x717131f3, + (q31_t)0x716e48cc, (q31_t)0x716b5f5f, (q31_t)0x716875ad, (q31_t)0x71658bb4, (q31_t)0x7162a175, (q31_t)0x715fb6f1, + (q31_t)0x715ccc26, (q31_t)0x7159e116, + (q31_t)0x7156f5c0, (q31_t)0x71540a24, (q31_t)0x71511e42, (q31_t)0x714e321a, (q31_t)0x714b45ac, (q31_t)0x714858f8, + (q31_t)0x71456bfe, (q31_t)0x71427ebf, + (q31_t)0x713f9139, (q31_t)0x713ca36e, (q31_t)0x7139b55d, (q31_t)0x7136c706, (q31_t)0x7133d869, (q31_t)0x7130e987, + (q31_t)0x712dfa5e, (q31_t)0x712b0af0, + (q31_t)0x71281b3c, (q31_t)0x71252b42, (q31_t)0x71223b02, (q31_t)0x711f4a7d, (q31_t)0x711c59b2, (q31_t)0x711968a1, + (q31_t)0x7116774a, (q31_t)0x711385ad, + (q31_t)0x711093cb, (q31_t)0x710da1a3, (q31_t)0x710aaf35, (q31_t)0x7107bc82, (q31_t)0x7104c989, (q31_t)0x7101d64a, + (q31_t)0x70fee2c5, (q31_t)0x70fbeefb, + (q31_t)0x70f8faeb, (q31_t)0x70f60695, (q31_t)0x70f311fa, (q31_t)0x70f01d19, (q31_t)0x70ed27f2, (q31_t)0x70ea3286, + (q31_t)0x70e73cd4, (q31_t)0x70e446dc, + (q31_t)0x70e1509f, (q31_t)0x70de5a1c, (q31_t)0x70db6353, (q31_t)0x70d86c45, (q31_t)0x70d574f1, (q31_t)0x70d27d58, + (q31_t)0x70cf8579, (q31_t)0x70cc8d54, + (q31_t)0x70c994ea, (q31_t)0x70c69c3a, (q31_t)0x70c3a345, (q31_t)0x70c0aa0a, (q31_t)0x70bdb08a, (q31_t)0x70bab6c4, + (q31_t)0x70b7bcb8, (q31_t)0x70b4c267, + (q31_t)0x70b1c7d1, (q31_t)0x70aeccf5, (q31_t)0x70abd1d3, (q31_t)0x70a8d66c, (q31_t)0x70a5dac0, (q31_t)0x70a2dece, + (q31_t)0x709fe296, (q31_t)0x709ce619, + (q31_t)0x7099e957, (q31_t)0x7096ec4f, (q31_t)0x7093ef01, (q31_t)0x7090f16e, (q31_t)0x708df396, (q31_t)0x708af579, + (q31_t)0x7087f715, (q31_t)0x7084f86d, + (q31_t)0x7081f97f, (q31_t)0x707efa4c, (q31_t)0x707bfad3, (q31_t)0x7078fb15, (q31_t)0x7075fb11, (q31_t)0x7072fac9, + (q31_t)0x706ffa3a, (q31_t)0x706cf967, + (q31_t)0x7069f84e, (q31_t)0x7066f6f0, (q31_t)0x7063f54c, (q31_t)0x7060f363, (q31_t)0x705df135, (q31_t)0x705aeec1, + (q31_t)0x7057ec08, (q31_t)0x7054e90a, + (q31_t)0x7051e5c7, (q31_t)0x704ee23e, (q31_t)0x704bde70, (q31_t)0x7048da5d, (q31_t)0x7045d604, (q31_t)0x7042d166, + (q31_t)0x703fcc83, (q31_t)0x703cc75b, + (q31_t)0x7039c1ed, (q31_t)0x7036bc3b, (q31_t)0x7033b643, (q31_t)0x7030b005, (q31_t)0x702da983, (q31_t)0x702aa2bb, + (q31_t)0x70279baf, (q31_t)0x7024945d, + (q31_t)0x70218cc6, (q31_t)0x701e84e9, (q31_t)0x701b7cc8, (q31_t)0x70187461, (q31_t)0x70156bb5, (q31_t)0x701262c4, + (q31_t)0x700f598e, (q31_t)0x700c5013, + (q31_t)0x70094653, (q31_t)0x70063c4e, (q31_t)0x70033203, (q31_t)0x70002774, (q31_t)0x6ffd1c9f, (q31_t)0x6ffa1185, + (q31_t)0x6ff70626, (q31_t)0x6ff3fa82, + (q31_t)0x6ff0ee99, (q31_t)0x6fede26b, (q31_t)0x6fead5f8, (q31_t)0x6fe7c940, (q31_t)0x6fe4bc43, (q31_t)0x6fe1af01, + (q31_t)0x6fdea17a, (q31_t)0x6fdb93ae, + (q31_t)0x6fd8859d, (q31_t)0x6fd57746, (q31_t)0x6fd268ab, (q31_t)0x6fcf59cb, (q31_t)0x6fcc4aa6, (q31_t)0x6fc93b3c, + (q31_t)0x6fc62b8d, (q31_t)0x6fc31b99, + (q31_t)0x6fc00b60, (q31_t)0x6fbcfae2, (q31_t)0x6fb9ea20, (q31_t)0x6fb6d918, (q31_t)0x6fb3c7cb, (q31_t)0x6fb0b63a, + (q31_t)0x6fada464, (q31_t)0x6faa9248, + (q31_t)0x6fa77fe8, (q31_t)0x6fa46d43, (q31_t)0x6fa15a59, (q31_t)0x6f9e472b, (q31_t)0x6f9b33b7, (q31_t)0x6f981fff, + (q31_t)0x6f950c01, (q31_t)0x6f91f7bf, + (q31_t)0x6f8ee338, (q31_t)0x6f8bce6c, (q31_t)0x6f88b95c, (q31_t)0x6f85a407, (q31_t)0x6f828e6c, (q31_t)0x6f7f788d, + (q31_t)0x6f7c626a, (q31_t)0x6f794c01, + (q31_t)0x6f763554, (q31_t)0x6f731e62, (q31_t)0x6f70072b, (q31_t)0x6f6cefb0, (q31_t)0x6f69d7f0, (q31_t)0x6f66bfeb, + (q31_t)0x6f63a7a1, (q31_t)0x6f608f13, + (q31_t)0x6f5d7640, (q31_t)0x6f5a5d28, (q31_t)0x6f5743cb, (q31_t)0x6f542a2a, (q31_t)0x6f511044, (q31_t)0x6f4df61a, + (q31_t)0x6f4adbab, (q31_t)0x6f47c0f7, + (q31_t)0x6f44a5ff, (q31_t)0x6f418ac2, (q31_t)0x6f3e6f40, (q31_t)0x6f3b537a, (q31_t)0x6f38376f, (q31_t)0x6f351b1f, + (q31_t)0x6f31fe8b, (q31_t)0x6f2ee1b2, + (q31_t)0x6f2bc495, (q31_t)0x6f28a733, (q31_t)0x6f25898d, (q31_t)0x6f226ba2, (q31_t)0x6f1f4d72, (q31_t)0x6f1c2efe, + (q31_t)0x6f191045, (q31_t)0x6f15f148, + (q31_t)0x6f12d206, (q31_t)0x6f0fb280, (q31_t)0x6f0c92b6, (q31_t)0x6f0972a6, (q31_t)0x6f065253, (q31_t)0x6f0331ba, + (q31_t)0x6f0010de, (q31_t)0x6efcefbd, + (q31_t)0x6ef9ce57, (q31_t)0x6ef6acad, (q31_t)0x6ef38abe, (q31_t)0x6ef0688b, (q31_t)0x6eed4614, (q31_t)0x6eea2358, + (q31_t)0x6ee70058, (q31_t)0x6ee3dd13, + (q31_t)0x6ee0b98a, (q31_t)0x6edd95bd, (q31_t)0x6eda71ab, (q31_t)0x6ed74d55, (q31_t)0x6ed428ba, (q31_t)0x6ed103db, + (q31_t)0x6ecddeb8, (q31_t)0x6ecab950, + (q31_t)0x6ec793a4, (q31_t)0x6ec46db4, (q31_t)0x6ec1477f, (q31_t)0x6ebe2106, (q31_t)0x6ebafa49, (q31_t)0x6eb7d347, + (q31_t)0x6eb4ac02, (q31_t)0x6eb18477, + (q31_t)0x6eae5ca9, (q31_t)0x6eab3496, (q31_t)0x6ea80c3f, (q31_t)0x6ea4e3a4, (q31_t)0x6ea1bac4, (q31_t)0x6e9e91a1, + (q31_t)0x6e9b6839, (q31_t)0x6e983e8d, + (q31_t)0x6e95149c, (q31_t)0x6e91ea67, (q31_t)0x6e8ebfef, (q31_t)0x6e8b9532, (q31_t)0x6e886a30, (q31_t)0x6e853eeb, + (q31_t)0x6e821361, (q31_t)0x6e7ee794, + (q31_t)0x6e7bbb82, (q31_t)0x6e788f2c, (q31_t)0x6e756291, (q31_t)0x6e7235b3, (q31_t)0x6e6f0890, (q31_t)0x6e6bdb2a, + (q31_t)0x6e68ad7f, (q31_t)0x6e657f90, + (q31_t)0x6e62515d, (q31_t)0x6e5f22e6, (q31_t)0x6e5bf42b, (q31_t)0x6e58c52c, (q31_t)0x6e5595e9, (q31_t)0x6e526662, + (q31_t)0x6e4f3696, (q31_t)0x6e4c0687, + (q31_t)0x6e48d633, (q31_t)0x6e45a59c, (q31_t)0x6e4274c1, (q31_t)0x6e3f43a1, (q31_t)0x6e3c123e, (q31_t)0x6e38e096, + (q31_t)0x6e35aeab, (q31_t)0x6e327c7b, + (q31_t)0x6e2f4a08, (q31_t)0x6e2c1750, (q31_t)0x6e28e455, (q31_t)0x6e25b115, (q31_t)0x6e227d92, (q31_t)0x6e1f49cb, + (q31_t)0x6e1c15c0, (q31_t)0x6e18e171, + (q31_t)0x6e15acde, (q31_t)0x6e127807, (q31_t)0x6e0f42ec, (q31_t)0x6e0c0d8e, (q31_t)0x6e08d7eb, (q31_t)0x6e05a205, + (q31_t)0x6e026bda, (q31_t)0x6dff356c, + (q31_t)0x6dfbfeba, (q31_t)0x6df8c7c4, (q31_t)0x6df5908b, (q31_t)0x6df2590d, (q31_t)0x6def214c, (q31_t)0x6debe947, + (q31_t)0x6de8b0fe, (q31_t)0x6de57871, + (q31_t)0x6de23fa0, (q31_t)0x6ddf068c, (q31_t)0x6ddbcd34, (q31_t)0x6dd89398, (q31_t)0x6dd559b9, (q31_t)0x6dd21f95, + (q31_t)0x6dcee52e, (q31_t)0x6dcbaa83, + (q31_t)0x6dc86f95, (q31_t)0x6dc53462, (q31_t)0x6dc1f8ec, (q31_t)0x6dbebd33, (q31_t)0x6dbb8135, (q31_t)0x6db844f4, + (q31_t)0x6db5086f, (q31_t)0x6db1cba7, + (q31_t)0x6dae8e9b, (q31_t)0x6dab514b, (q31_t)0x6da813b8, (q31_t)0x6da4d5e1, (q31_t)0x6da197c6, (q31_t)0x6d9e5968, + (q31_t)0x6d9b1ac6, (q31_t)0x6d97dbe0, + (q31_t)0x6d949cb7, (q31_t)0x6d915d4a, (q31_t)0x6d8e1d9a, (q31_t)0x6d8adda6, (q31_t)0x6d879d6e, (q31_t)0x6d845cf3, + (q31_t)0x6d811c35, (q31_t)0x6d7ddb33, + (q31_t)0x6d7a99ed, (q31_t)0x6d775864, (q31_t)0x6d741697, (q31_t)0x6d70d487, (q31_t)0x6d6d9233, (q31_t)0x6d6a4f9c, + (q31_t)0x6d670cc1, (q31_t)0x6d63c9a3, + (q31_t)0x6d608641, (q31_t)0x6d5d429c, (q31_t)0x6d59feb3, (q31_t)0x6d56ba87, (q31_t)0x6d537617, (q31_t)0x6d503164, + (q31_t)0x6d4cec6e, (q31_t)0x6d49a734, + (q31_t)0x6d4661b7, (q31_t)0x6d431bf6, (q31_t)0x6d3fd5f2, (q31_t)0x6d3c8fab, (q31_t)0x6d394920, (q31_t)0x6d360252, + (q31_t)0x6d32bb40, (q31_t)0x6d2f73eb, + (q31_t)0x6d2c2c53, (q31_t)0x6d28e477, (q31_t)0x6d259c58, (q31_t)0x6d2253f6, (q31_t)0x6d1f0b50, (q31_t)0x6d1bc267, + (q31_t)0x6d18793b, (q31_t)0x6d152fcc, + (q31_t)0x6d11e619, (q31_t)0x6d0e9c23, (q31_t)0x6d0b51e9, (q31_t)0x6d08076d, (q31_t)0x6d04bcad, (q31_t)0x6d0171aa, + (q31_t)0x6cfe2663, (q31_t)0x6cfadada, + (q31_t)0x6cf78f0d, (q31_t)0x6cf442fd, (q31_t)0x6cf0f6aa, (q31_t)0x6cedaa13, (q31_t)0x6cea5d3a, (q31_t)0x6ce7101d, + (q31_t)0x6ce3c2bd, (q31_t)0x6ce0751a, + (q31_t)0x6cdd2733, (q31_t)0x6cd9d90a, (q31_t)0x6cd68a9d, (q31_t)0x6cd33bed, (q31_t)0x6ccfecfa, (q31_t)0x6ccc9dc4, + (q31_t)0x6cc94e4b, (q31_t)0x6cc5fe8f, + (q31_t)0x6cc2ae90, (q31_t)0x6cbf5e4d, (q31_t)0x6cbc0dc8, (q31_t)0x6cb8bcff, (q31_t)0x6cb56bf4, (q31_t)0x6cb21aa5, + (q31_t)0x6caec913, (q31_t)0x6cab773e, + (q31_t)0x6ca82527, (q31_t)0x6ca4d2cc, (q31_t)0x6ca1802e, (q31_t)0x6c9e2d4d, (q31_t)0x6c9ada29, (q31_t)0x6c9786c2, + (q31_t)0x6c943318, (q31_t)0x6c90df2c, + (q31_t)0x6c8d8afc, (q31_t)0x6c8a3689, (q31_t)0x6c86e1d3, (q31_t)0x6c838cdb, (q31_t)0x6c80379f, (q31_t)0x6c7ce220, + (q31_t)0x6c798c5f, (q31_t)0x6c76365b, + (q31_t)0x6c72e013, (q31_t)0x6c6f8989, (q31_t)0x6c6c32bc, (q31_t)0x6c68dbac, (q31_t)0x6c658459, (q31_t)0x6c622cc4, + (q31_t)0x6c5ed4eb, (q31_t)0x6c5b7cd0, + (q31_t)0x6c582472, (q31_t)0x6c54cbd1, (q31_t)0x6c5172ed, (q31_t)0x6c4e19c6, (q31_t)0x6c4ac05d, (q31_t)0x6c4766b0, + (q31_t)0x6c440cc1, (q31_t)0x6c40b28f, + (q31_t)0x6c3d581b, (q31_t)0x6c39fd63, (q31_t)0x6c36a269, (q31_t)0x6c33472c, (q31_t)0x6c2febad, (q31_t)0x6c2c8fea, + (q31_t)0x6c2933e5, (q31_t)0x6c25d79d, + (q31_t)0x6c227b13, (q31_t)0x6c1f1e45, (q31_t)0x6c1bc136, (q31_t)0x6c1863e3, (q31_t)0x6c15064e, (q31_t)0x6c11a876, + (q31_t)0x6c0e4a5b, (q31_t)0x6c0aebfe, + (q31_t)0x6c078d5e, (q31_t)0x6c042e7b, (q31_t)0x6c00cf56, (q31_t)0x6bfd6fee, (q31_t)0x6bfa1044, (q31_t)0x6bf6b056, + (q31_t)0x6bf35027, (q31_t)0x6befefb5, + (q31_t)0x6bec8f00, (q31_t)0x6be92e08, (q31_t)0x6be5ccce, (q31_t)0x6be26b52, (q31_t)0x6bdf0993, (q31_t)0x6bdba791, + (q31_t)0x6bd8454d, (q31_t)0x6bd4e2c6, + (q31_t)0x6bd17ffd, (q31_t)0x6bce1cf1, (q31_t)0x6bcab9a3, (q31_t)0x6bc75613, (q31_t)0x6bc3f23f, (q31_t)0x6bc08e2a, + (q31_t)0x6bbd29d2, (q31_t)0x6bb9c537, + (q31_t)0x6bb6605a, (q31_t)0x6bb2fb3b, (q31_t)0x6baf95d9, (q31_t)0x6bac3034, (q31_t)0x6ba8ca4e, (q31_t)0x6ba56425, + (q31_t)0x6ba1fdb9, (q31_t)0x6b9e970b, + (q31_t)0x6b9b301b, (q31_t)0x6b97c8e8, (q31_t)0x6b946173, (q31_t)0x6b90f9bc, (q31_t)0x6b8d91c2, (q31_t)0x6b8a2986, + (q31_t)0x6b86c107, (q31_t)0x6b835846, + (q31_t)0x6b7fef43, (q31_t)0x6b7c85fe, (q31_t)0x6b791c76, (q31_t)0x6b75b2ac, (q31_t)0x6b7248a0, (q31_t)0x6b6ede51, + (q31_t)0x6b6b73c0, (q31_t)0x6b6808ed, + (q31_t)0x6b649dd8, (q31_t)0x6b613280, (q31_t)0x6b5dc6e6, (q31_t)0x6b5a5b0a, (q31_t)0x6b56eeec, (q31_t)0x6b53828b, + (q31_t)0x6b5015e9, (q31_t)0x6b4ca904, + (q31_t)0x6b493bdd, (q31_t)0x6b45ce73, (q31_t)0x6b4260c8, (q31_t)0x6b3ef2da, (q31_t)0x6b3b84ab, (q31_t)0x6b381639, + (q31_t)0x6b34a785, (q31_t)0x6b31388e, + (q31_t)0x6b2dc956, (q31_t)0x6b2a59dc, (q31_t)0x6b26ea1f, (q31_t)0x6b237a21, (q31_t)0x6b2009e0, (q31_t)0x6b1c995d, + (q31_t)0x6b192898, (q31_t)0x6b15b791, + (q31_t)0x6b124648, (q31_t)0x6b0ed4bd, (q31_t)0x6b0b62f0, (q31_t)0x6b07f0e1, (q31_t)0x6b047e90, (q31_t)0x6b010bfd, + (q31_t)0x6afd9928, (q31_t)0x6afa2610, + (q31_t)0x6af6b2b7, (q31_t)0x6af33f1c, (q31_t)0x6aefcb3f, (q31_t)0x6aec5720, (q31_t)0x6ae8e2bf, (q31_t)0x6ae56e1c, + (q31_t)0x6ae1f937, (q31_t)0x6ade8410, + (q31_t)0x6adb0ea8, (q31_t)0x6ad798fd, (q31_t)0x6ad42311, (q31_t)0x6ad0ace2, (q31_t)0x6acd3672, (q31_t)0x6ac9bfc0, + (q31_t)0x6ac648cb, (q31_t)0x6ac2d195, + (q31_t)0x6abf5a1e, (q31_t)0x6abbe264, (q31_t)0x6ab86a68, (q31_t)0x6ab4f22b, (q31_t)0x6ab179ac, (q31_t)0x6aae00eb, + (q31_t)0x6aaa87e8, (q31_t)0x6aa70ea4, + (q31_t)0x6aa3951d, (q31_t)0x6aa01b55, (q31_t)0x6a9ca14b, (q31_t)0x6a992700, (q31_t)0x6a95ac72, (q31_t)0x6a9231a3, + (q31_t)0x6a8eb692, (q31_t)0x6a8b3b3f, + (q31_t)0x6a87bfab, (q31_t)0x6a8443d5, (q31_t)0x6a80c7bd, (q31_t)0x6a7d4b64, (q31_t)0x6a79cec8, (q31_t)0x6a7651ec, + (q31_t)0x6a72d4cd, (q31_t)0x6a6f576d, + (q31_t)0x6a6bd9cb, (q31_t)0x6a685be8, (q31_t)0x6a64ddc2, (q31_t)0x6a615f5c, (q31_t)0x6a5de0b3, (q31_t)0x6a5a61c9, + (q31_t)0x6a56e29e, (q31_t)0x6a536331, + (q31_t)0x6a4fe382, (q31_t)0x6a4c6391, (q31_t)0x6a48e360, (q31_t)0x6a4562ec, (q31_t)0x6a41e237, (q31_t)0x6a3e6140, + (q31_t)0x6a3ae008, (q31_t)0x6a375e8f, + (q31_t)0x6a33dcd4, (q31_t)0x6a305ad7, (q31_t)0x6a2cd899, (q31_t)0x6a295619, (q31_t)0x6a25d358, (q31_t)0x6a225055, + (q31_t)0x6a1ecd11, (q31_t)0x6a1b498c, + (q31_t)0x6a17c5c5, (q31_t)0x6a1441bc, (q31_t)0x6a10bd72, (q31_t)0x6a0d38e7, (q31_t)0x6a09b41a, (q31_t)0x6a062f0c, + (q31_t)0x6a02a9bc, (q31_t)0x69ff242b, + (q31_t)0x69fb9e59, (q31_t)0x69f81845, (q31_t)0x69f491f0, (q31_t)0x69f10b5a, (q31_t)0x69ed8482, (q31_t)0x69e9fd69, + (q31_t)0x69e6760f, (q31_t)0x69e2ee73, + (q31_t)0x69df6696, (q31_t)0x69dbde77, (q31_t)0x69d85618, (q31_t)0x69d4cd77, (q31_t)0x69d14494, (q31_t)0x69cdbb71, + (q31_t)0x69ca320c, (q31_t)0x69c6a866, + (q31_t)0x69c31e7f, (q31_t)0x69bf9456, (q31_t)0x69bc09ec, (q31_t)0x69b87f41, (q31_t)0x69b4f455, (q31_t)0x69b16928, + (q31_t)0x69adddb9, (q31_t)0x69aa5209, + (q31_t)0x69a6c618, (q31_t)0x69a339e6, (q31_t)0x699fad73, (q31_t)0x699c20be, (q31_t)0x699893c9, (q31_t)0x69950692, + (q31_t)0x6991791a, (q31_t)0x698deb61, + (q31_t)0x698a5d67, (q31_t)0x6986cf2c, (q31_t)0x698340af, (q31_t)0x697fb1f2, (q31_t)0x697c22f3, (q31_t)0x697893b4, + (q31_t)0x69750433, (q31_t)0x69717472, + (q31_t)0x696de46f, (q31_t)0x696a542b, (q31_t)0x6966c3a6, (q31_t)0x696332e1, (q31_t)0x695fa1da, (q31_t)0x695c1092, + (q31_t)0x69587f09, (q31_t)0x6954ed40, + (q31_t)0x69515b35, (q31_t)0x694dc8e9, (q31_t)0x694a365c, (q31_t)0x6946a38f, (q31_t)0x69431080, (q31_t)0x693f7d31, + (q31_t)0x693be9a0, (q31_t)0x693855cf, + (q31_t)0x6934c1bd, (q31_t)0x69312d6a, (q31_t)0x692d98d6, (q31_t)0x692a0401, (q31_t)0x69266eeb, (q31_t)0x6922d995, + (q31_t)0x691f43fd, (q31_t)0x691bae25, + (q31_t)0x6918180c, (q31_t)0x691481b2, (q31_t)0x6910eb17, (q31_t)0x690d543b, (q31_t)0x6909bd1f, (q31_t)0x690625c2, + (q31_t)0x69028e24, (q31_t)0x68fef645, + (q31_t)0x68fb5e25, (q31_t)0x68f7c5c5, (q31_t)0x68f42d24, (q31_t)0x68f09442, (q31_t)0x68ecfb20, (q31_t)0x68e961bd, + (q31_t)0x68e5c819, (q31_t)0x68e22e34, + (q31_t)0x68de940f, (q31_t)0x68daf9a9, (q31_t)0x68d75f02, (q31_t)0x68d3c41b, (q31_t)0x68d028f2, (q31_t)0x68cc8d8a, + (q31_t)0x68c8f1e0, (q31_t)0x68c555f6, + (q31_t)0x68c1b9cc, (q31_t)0x68be1d61, (q31_t)0x68ba80b5, (q31_t)0x68b6e3c8, (q31_t)0x68b3469b, (q31_t)0x68afa92e, + (q31_t)0x68ac0b7f, (q31_t)0x68a86d91, + (q31_t)0x68a4cf61, (q31_t)0x68a130f1, (q31_t)0x689d9241, (q31_t)0x6899f350, (q31_t)0x6896541f, (q31_t)0x6892b4ad, + (q31_t)0x688f14fa, (q31_t)0x688b7507, + (q31_t)0x6887d4d4, (q31_t)0x68843460, (q31_t)0x688093ab, (q31_t)0x687cf2b6, (q31_t)0x68795181, (q31_t)0x6875b00b, + (q31_t)0x68720e55, (q31_t)0x686e6c5e, + (q31_t)0x686aca27, (q31_t)0x686727b0, (q31_t)0x686384f8, (q31_t)0x685fe200, (q31_t)0x685c3ec7, (q31_t)0x68589b4e, + (q31_t)0x6854f795, (q31_t)0x6851539b, + (q31_t)0x684daf61, (q31_t)0x684a0ae6, (q31_t)0x6846662c, (q31_t)0x6842c131, (q31_t)0x683f1bf5, (q31_t)0x683b7679, + (q31_t)0x6837d0bd, (q31_t)0x68342ac1, + (q31_t)0x68308485, (q31_t)0x682cde08, (q31_t)0x6829374b, (q31_t)0x6825904d, (q31_t)0x6821e910, (q31_t)0x681e4192, + (q31_t)0x681a99d4, (q31_t)0x6816f1d6, + (q31_t)0x68134997, (q31_t)0x680fa118, (q31_t)0x680bf85a, (q31_t)0x68084f5a, (q31_t)0x6804a61b, (q31_t)0x6800fc9c, + (q31_t)0x67fd52dc, (q31_t)0x67f9a8dd, + (q31_t)0x67f5fe9d, (q31_t)0x67f2541d, (q31_t)0x67eea95d, (q31_t)0x67eafe5d, (q31_t)0x67e7531c, (q31_t)0x67e3a79c, + (q31_t)0x67dffbdc, (q31_t)0x67dc4fdb, + (q31_t)0x67d8a39a, (q31_t)0x67d4f71a, (q31_t)0x67d14a59, (q31_t)0x67cd9d58, (q31_t)0x67c9f017, (q31_t)0x67c64297, + (q31_t)0x67c294d6, (q31_t)0x67bee6d5, + (q31_t)0x67bb3894, (q31_t)0x67b78a13, (q31_t)0x67b3db53, (q31_t)0x67b02c52, (q31_t)0x67ac7d11, (q31_t)0x67a8cd91, + (q31_t)0x67a51dd0, (q31_t)0x67a16dcf, + (q31_t)0x679dbd8f, (q31_t)0x679a0d0f, (q31_t)0x67965c4e, (q31_t)0x6792ab4e, (q31_t)0x678efa0e, (q31_t)0x678b488e, + (q31_t)0x678796ce, (q31_t)0x6783e4cf, + (q31_t)0x6780328f, (q31_t)0x677c8010, (q31_t)0x6778cd50, (q31_t)0x67751a51, (q31_t)0x67716713, (q31_t)0x676db394, + (q31_t)0x6769ffd5, (q31_t)0x67664bd7, + (q31_t)0x67629799, (q31_t)0x675ee31b, (q31_t)0x675b2e5e, (q31_t)0x67577960, (q31_t)0x6753c423, (q31_t)0x67500ea7, + (q31_t)0x674c58ea, (q31_t)0x6748a2ee, + (q31_t)0x6744ecb2, (q31_t)0x67413636, (q31_t)0x673d7f7b, (q31_t)0x6739c880, (q31_t)0x67361145, (q31_t)0x673259ca, + (q31_t)0x672ea210, (q31_t)0x672aea17, + (q31_t)0x672731dd, (q31_t)0x67237964, (q31_t)0x671fc0ac, (q31_t)0x671c07b4, (q31_t)0x67184e7c, (q31_t)0x67149504, + (q31_t)0x6710db4d, (q31_t)0x670d2157, + (q31_t)0x67096721, (q31_t)0x6705acab, (q31_t)0x6701f1f6, (q31_t)0x66fe3701, (q31_t)0x66fa7bcd, (q31_t)0x66f6c059, + (q31_t)0x66f304a6, (q31_t)0x66ef48b3, + (q31_t)0x66eb8c80, (q31_t)0x66e7d00f, (q31_t)0x66e4135d, (q31_t)0x66e0566c, (q31_t)0x66dc993c, (q31_t)0x66d8dbcd, + (q31_t)0x66d51e1d, (q31_t)0x66d1602f, + (q31_t)0x66cda201, (q31_t)0x66c9e393, (q31_t)0x66c624e7, (q31_t)0x66c265fa, (q31_t)0x66bea6cf, (q31_t)0x66bae764, + (q31_t)0x66b727ba, (q31_t)0x66b367d0, + (q31_t)0x66afa7a7, (q31_t)0x66abe73f, (q31_t)0x66a82697, (q31_t)0x66a465b0, (q31_t)0x66a0a489, (q31_t)0x669ce324, + (q31_t)0x6699217f, (q31_t)0x66955f9b, + (q31_t)0x66919d77, (q31_t)0x668ddb14, (q31_t)0x668a1872, (q31_t)0x66865591, (q31_t)0x66829270, (q31_t)0x667ecf11, + (q31_t)0x667b0b72, (q31_t)0x66774793, + (q31_t)0x66738376, (q31_t)0x666fbf19, (q31_t)0x666bfa7d, (q31_t)0x666835a2, (q31_t)0x66647088, (q31_t)0x6660ab2f, + (q31_t)0x665ce596, (q31_t)0x66591fbf, + (q31_t)0x665559a8, (q31_t)0x66519352, (q31_t)0x664dccbd, (q31_t)0x664a05e9, (q31_t)0x66463ed6, (q31_t)0x66427784, + (q31_t)0x663eaff2, (q31_t)0x663ae822, + (q31_t)0x66372012, (q31_t)0x663357c4, (q31_t)0x662f8f36, (q31_t)0x662bc66a, (q31_t)0x6627fd5e, (q31_t)0x66243413, + (q31_t)0x66206a8a, (q31_t)0x661ca0c1, + (q31_t)0x6618d6b9, (q31_t)0x66150c73, (q31_t)0x661141ed, (q31_t)0x660d7729, (q31_t)0x6609ac25, (q31_t)0x6605e0e3, + (q31_t)0x66021561, (q31_t)0x65fe49a1, + (q31_t)0x65fa7da2, (q31_t)0x65f6b164, (q31_t)0x65f2e4e7, (q31_t)0x65ef182b, (q31_t)0x65eb4b30, (q31_t)0x65e77df6, + (q31_t)0x65e3b07e, (q31_t)0x65dfe2c6, + (q31_t)0x65dc14d0, (q31_t)0x65d8469b, (q31_t)0x65d47827, (q31_t)0x65d0a975, (q31_t)0x65ccda83, (q31_t)0x65c90b53, + (q31_t)0x65c53be4, (q31_t)0x65c16c36, + (q31_t)0x65bd9c49, (q31_t)0x65b9cc1e, (q31_t)0x65b5fbb4, (q31_t)0x65b22b0b, (q31_t)0x65ae5a23, (q31_t)0x65aa88fd, + (q31_t)0x65a6b798, (q31_t)0x65a2e5f4, + (q31_t)0x659f1412, (q31_t)0x659b41f1, (q31_t)0x65976f91, (q31_t)0x65939cf3, (q31_t)0x658fca15, (q31_t)0x658bf6fa, + (q31_t)0x6588239f, (q31_t)0x65845006, + (q31_t)0x65807c2f, (q31_t)0x657ca818, (q31_t)0x6578d3c4, (q31_t)0x6574ff30, (q31_t)0x65712a5e, (q31_t)0x656d554d, + (q31_t)0x65697ffe, (q31_t)0x6565aa71, + (q31_t)0x6561d4a4, (q31_t)0x655dfe99, (q31_t)0x655a2850, (q31_t)0x655651c8, (q31_t)0x65527b02, (q31_t)0x654ea3fd, + (q31_t)0x654accba, (q31_t)0x6546f538, + (q31_t)0x65431d77, (q31_t)0x653f4579, (q31_t)0x653b6d3b, (q31_t)0x653794c0, (q31_t)0x6533bc06, (q31_t)0x652fe30d, + (q31_t)0x652c09d6, (q31_t)0x65283061, + (q31_t)0x652456ad, (q31_t)0x65207cbb, (q31_t)0x651ca28a, (q31_t)0x6518c81b, (q31_t)0x6514ed6e, (q31_t)0x65111283, + (q31_t)0x650d3759, (q31_t)0x65095bf0, + (q31_t)0x6505804a, (q31_t)0x6501a465, (q31_t)0x64fdc841, (q31_t)0x64f9ebe0, (q31_t)0x64f60f40, (q31_t)0x64f23262, + (q31_t)0x64ee5546, (q31_t)0x64ea77eb, + (q31_t)0x64e69a52, (q31_t)0x64e2bc7b, (q31_t)0x64dede66, (q31_t)0x64db0012, (q31_t)0x64d72180, (q31_t)0x64d342b0, + (q31_t)0x64cf63a2, (q31_t)0x64cb8456, + (q31_t)0x64c7a4cb, (q31_t)0x64c3c502, (q31_t)0x64bfe4fc, (q31_t)0x64bc04b6, (q31_t)0x64b82433, (q31_t)0x64b44372, + (q31_t)0x64b06273, (q31_t)0x64ac8135, + (q31_t)0x64a89fba, (q31_t)0x64a4be00, (q31_t)0x64a0dc08, (q31_t)0x649cf9d2, (q31_t)0x6499175e, (q31_t)0x649534ac, + (q31_t)0x649151bc, (q31_t)0x648d6e8e, + (q31_t)0x64898b22, (q31_t)0x6485a778, (q31_t)0x6481c390, (q31_t)0x647ddf6a, (q31_t)0x6479fb06, (q31_t)0x64761664, + (q31_t)0x64723184, (q31_t)0x646e4c66, + (q31_t)0x646a670a, (q31_t)0x64668170, (q31_t)0x64629b98, (q31_t)0x645eb582, (q31_t)0x645acf2e, (q31_t)0x6456e89d, + (q31_t)0x645301cd, (q31_t)0x644f1ac0, + (q31_t)0x644b3375, (q31_t)0x64474bec, (q31_t)0x64436425, (q31_t)0x643f7c20, (q31_t)0x643b93dd, (q31_t)0x6437ab5d, + (q31_t)0x6433c29f, (q31_t)0x642fd9a3, + (q31_t)0x642bf069, (q31_t)0x642806f1, (q31_t)0x64241d3c, (q31_t)0x64203348, (q31_t)0x641c4917, (q31_t)0x64185ea9, + (q31_t)0x641473fc, (q31_t)0x64108912, + (q31_t)0x640c9dea, (q31_t)0x6408b284, (q31_t)0x6404c6e1, (q31_t)0x6400db00, (q31_t)0x63fceee1, (q31_t)0x63f90285, + (q31_t)0x63f515eb, (q31_t)0x63f12913, + (q31_t)0x63ed3bfd, (q31_t)0x63e94eaa, (q31_t)0x63e5611a, (q31_t)0x63e1734b, (q31_t)0x63dd853f, (q31_t)0x63d996f6, + (q31_t)0x63d5a86f, (q31_t)0x63d1b9aa, + (q31_t)0x63cdcaa8, (q31_t)0x63c9db68, (q31_t)0x63c5ebeb, (q31_t)0x63c1fc30, (q31_t)0x63be0c37, (q31_t)0x63ba1c01, + (q31_t)0x63b62b8e, (q31_t)0x63b23add, + (q31_t)0x63ae49ee, (q31_t)0x63aa58c2, (q31_t)0x63a66759, (q31_t)0x63a275b2, (q31_t)0x639e83cd, (q31_t)0x639a91ac, + (q31_t)0x63969f4c, (q31_t)0x6392acaf, + (q31_t)0x638eb9d5, (q31_t)0x638ac6be, (q31_t)0x6386d369, (q31_t)0x6382dfd6, (q31_t)0x637eec07, (q31_t)0x637af7fa, + (q31_t)0x637703af, (q31_t)0x63730f27, + (q31_t)0x636f1a62, (q31_t)0x636b2560, (q31_t)0x63673020, (q31_t)0x63633aa3, (q31_t)0x635f44e8, (q31_t)0x635b4ef0, + (q31_t)0x635758bb, (q31_t)0x63536249, + (q31_t)0x634f6b99, (q31_t)0x634b74ad, (q31_t)0x63477d82, (q31_t)0x6343861b, (q31_t)0x633f8e76, (q31_t)0x633b9695, + (q31_t)0x63379e76, (q31_t)0x6333a619, + (q31_t)0x632fad80, (q31_t)0x632bb4a9, (q31_t)0x6327bb96, (q31_t)0x6323c245, (q31_t)0x631fc8b7, (q31_t)0x631bceeb, + (q31_t)0x6317d4e3, (q31_t)0x6313da9e, + (q31_t)0x630fe01b, (q31_t)0x630be55b, (q31_t)0x6307ea5e, (q31_t)0x6303ef25, (q31_t)0x62fff3ae, (q31_t)0x62fbf7fa, + (q31_t)0x62f7fc08, (q31_t)0x62f3ffda, + (q31_t)0x62f0036f, (q31_t)0x62ec06c7, (q31_t)0x62e809e2, (q31_t)0x62e40cbf, (q31_t)0x62e00f60, (q31_t)0x62dc11c4, + (q31_t)0x62d813eb, (q31_t)0x62d415d4, + (q31_t)0x62d01781, (q31_t)0x62cc18f1, (q31_t)0x62c81a24, (q31_t)0x62c41b1a, (q31_t)0x62c01bd3, (q31_t)0x62bc1c4f, + (q31_t)0x62b81c8f, (q31_t)0x62b41c91, + (q31_t)0x62b01c57, (q31_t)0x62ac1bdf, (q31_t)0x62a81b2b, (q31_t)0x62a41a3a, (q31_t)0x62a0190c, (q31_t)0x629c17a1, + (q31_t)0x629815fa, (q31_t)0x62941415, + (q31_t)0x629011f4, (q31_t)0x628c0f96, (q31_t)0x62880cfb, (q31_t)0x62840a23, (q31_t)0x6280070f, (q31_t)0x627c03be, + (q31_t)0x62780030, (q31_t)0x6273fc65, + (q31_t)0x626ff85e, (q31_t)0x626bf41a, (q31_t)0x6267ef99, (q31_t)0x6263eadc, (q31_t)0x625fe5e1, (q31_t)0x625be0ab, + (q31_t)0x6257db37, (q31_t)0x6253d587, + (q31_t)0x624fcf9a, (q31_t)0x624bc970, (q31_t)0x6247c30a, (q31_t)0x6243bc68, (q31_t)0x623fb588, (q31_t)0x623bae6c, + (q31_t)0x6237a714, (q31_t)0x62339f7e, + (q31_t)0x622f97ad, (q31_t)0x622b8f9e, (q31_t)0x62278754, (q31_t)0x62237ecc, (q31_t)0x621f7608, (q31_t)0x621b6d08, + (q31_t)0x621763cb, (q31_t)0x62135a51, + (q31_t)0x620f509b, (q31_t)0x620b46a9, (q31_t)0x62073c7a, (q31_t)0x6203320e, (q31_t)0x61ff2766, (q31_t)0x61fb1c82, + (q31_t)0x61f71161, (q31_t)0x61f30604, + (q31_t)0x61eefa6b, (q31_t)0x61eaee95, (q31_t)0x61e6e282, (q31_t)0x61e2d633, (q31_t)0x61dec9a8, (q31_t)0x61dabce0, + (q31_t)0x61d6afdd, (q31_t)0x61d2a29c, + (q31_t)0x61ce9520, (q31_t)0x61ca8767, (q31_t)0x61c67971, (q31_t)0x61c26b40, (q31_t)0x61be5cd2, (q31_t)0x61ba4e28, + (q31_t)0x61b63f41, (q31_t)0x61b2301e, + (q31_t)0x61ae20bf, (q31_t)0x61aa1124, (q31_t)0x61a6014d, (q31_t)0x61a1f139, (q31_t)0x619de0e9, (q31_t)0x6199d05d, + (q31_t)0x6195bf94, (q31_t)0x6191ae90, + (q31_t)0x618d9d4f, (q31_t)0x61898bd2, (q31_t)0x61857a19, (q31_t)0x61816824, (q31_t)0x617d55f2, (q31_t)0x61794385, + (q31_t)0x617530db, (q31_t)0x61711df5, + (q31_t)0x616d0ad3, (q31_t)0x6168f775, (q31_t)0x6164e3db, (q31_t)0x6160d005, (q31_t)0x615cbbf3, (q31_t)0x6158a7a4, + (q31_t)0x6154931a, (q31_t)0x61507e54, + (q31_t)0x614c6951, (q31_t)0x61485413, (q31_t)0x61443e98, (q31_t)0x614028e2, (q31_t)0x613c12f0, (q31_t)0x6137fcc1, + (q31_t)0x6133e657, (q31_t)0x612fcfb0, + (q31_t)0x612bb8ce, (q31_t)0x6127a1b0, (q31_t)0x61238a56, (q31_t)0x611f72c0, (q31_t)0x611b5aee, (q31_t)0x611742e0, + (q31_t)0x61132a96, (q31_t)0x610f1210, + (q31_t)0x610af94f, (q31_t)0x6106e051, (q31_t)0x6102c718, (q31_t)0x60feada3, (q31_t)0x60fa93f2, (q31_t)0x60f67a05, + (q31_t)0x60f25fdd, (q31_t)0x60ee4579, + (q31_t)0x60ea2ad8, (q31_t)0x60e60ffd, (q31_t)0x60e1f4e5, (q31_t)0x60ddd991, (q31_t)0x60d9be02, (q31_t)0x60d5a237, + (q31_t)0x60d18631, (q31_t)0x60cd69ee, + (q31_t)0x60c94d70, (q31_t)0x60c530b6, (q31_t)0x60c113c1, (q31_t)0x60bcf690, (q31_t)0x60b8d923, (q31_t)0x60b4bb7a, + (q31_t)0x60b09d96, (q31_t)0x60ac7f76, + (q31_t)0x60a8611b, (q31_t)0x60a44284, (q31_t)0x60a023b1, (q31_t)0x609c04a3, (q31_t)0x6097e559, (q31_t)0x6093c5d3, + (q31_t)0x608fa612, (q31_t)0x608b8616, + (q31_t)0x608765dd, (q31_t)0x6083456a, (q31_t)0x607f24ba, (q31_t)0x607b03d0, (q31_t)0x6076e2a9, (q31_t)0x6072c148, + (q31_t)0x606e9faa, (q31_t)0x606a7dd2, + (q31_t)0x60665bbd, (q31_t)0x6062396e, (q31_t)0x605e16e2, (q31_t)0x6059f41c, (q31_t)0x6055d11a, (q31_t)0x6051addc, + (q31_t)0x604d8a63, (q31_t)0x604966af, + (q31_t)0x604542bf, (q31_t)0x60411e94, (q31_t)0x603cfa2e, (q31_t)0x6038d58c, (q31_t)0x6034b0af, (q31_t)0x60308b97, + (q31_t)0x602c6643, (q31_t)0x602840b4, + (q31_t)0x60241ae9, (q31_t)0x601ff4e3, (q31_t)0x601bcea2, (q31_t)0x6017a826, (q31_t)0x6013816e, (q31_t)0x600f5a7b, + (q31_t)0x600b334d, (q31_t)0x60070be4, + (q31_t)0x6002e43f, (q31_t)0x5ffebc5f, (q31_t)0x5ffa9444, (q31_t)0x5ff66bee, (q31_t)0x5ff2435d, (q31_t)0x5fee1a90, + (q31_t)0x5fe9f188, (q31_t)0x5fe5c845, + (q31_t)0x5fe19ec7, (q31_t)0x5fdd750e, (q31_t)0x5fd94b19, (q31_t)0x5fd520ea, (q31_t)0x5fd0f67f, (q31_t)0x5fcccbd9, + (q31_t)0x5fc8a0f8, (q31_t)0x5fc475dc, + (q31_t)0x5fc04a85, (q31_t)0x5fbc1ef3, (q31_t)0x5fb7f326, (q31_t)0x5fb3c71e, (q31_t)0x5faf9adb, (q31_t)0x5fab6e5d, + (q31_t)0x5fa741a3, (q31_t)0x5fa314af, + (q31_t)0x5f9ee780, (q31_t)0x5f9aba16, (q31_t)0x5f968c70, (q31_t)0x5f925e90, (q31_t)0x5f8e3075, (q31_t)0x5f8a021f, + (q31_t)0x5f85d38e, (q31_t)0x5f81a4c2, + (q31_t)0x5f7d75bb, (q31_t)0x5f794679, (q31_t)0x5f7516fd, (q31_t)0x5f70e745, (q31_t)0x5f6cb753, (q31_t)0x5f688726, + (q31_t)0x5f6456be, (q31_t)0x5f60261b, + (q31_t)0x5f5bf53d, (q31_t)0x5f57c424, (q31_t)0x5f5392d1, (q31_t)0x5f4f6143, (q31_t)0x5f4b2f7a, (q31_t)0x5f46fd76, + (q31_t)0x5f42cb37, (q31_t)0x5f3e98be, + (q31_t)0x5f3a660a, (q31_t)0x5f36331b, (q31_t)0x5f31fff1, (q31_t)0x5f2dcc8d, (q31_t)0x5f2998ee, (q31_t)0x5f256515, + (q31_t)0x5f213100, (q31_t)0x5f1cfcb1, + (q31_t)0x5f18c827, (q31_t)0x5f149363, (q31_t)0x5f105e64, (q31_t)0x5f0c292a, (q31_t)0x5f07f3b6, (q31_t)0x5f03be07, + (q31_t)0x5eff881d, (q31_t)0x5efb51f9, + (q31_t)0x5ef71b9b, (q31_t)0x5ef2e501, (q31_t)0x5eeeae2d, (q31_t)0x5eea771f, (q31_t)0x5ee63fd6, (q31_t)0x5ee20853, + (q31_t)0x5eddd094, (q31_t)0x5ed9989c, + (q31_t)0x5ed56069, (q31_t)0x5ed127fb, (q31_t)0x5eccef53, (q31_t)0x5ec8b671, (q31_t)0x5ec47d54, (q31_t)0x5ec043fc, + (q31_t)0x5ebc0a6a, (q31_t)0x5eb7d09e, + (q31_t)0x5eb39697, (q31_t)0x5eaf5c56, (q31_t)0x5eab21da, (q31_t)0x5ea6e724, (q31_t)0x5ea2ac34, (q31_t)0x5e9e7109, + (q31_t)0x5e9a35a4, (q31_t)0x5e95fa05, + (q31_t)0x5e91be2b, (q31_t)0x5e8d8217, (q31_t)0x5e8945c8, (q31_t)0x5e85093f, (q31_t)0x5e80cc7c, (q31_t)0x5e7c8f7f, + (q31_t)0x5e785247, (q31_t)0x5e7414d5, + (q31_t)0x5e6fd729, (q31_t)0x5e6b9943, (q31_t)0x5e675b22, (q31_t)0x5e631cc7, (q31_t)0x5e5ede32, (q31_t)0x5e5a9f62, + (q31_t)0x5e566059, (q31_t)0x5e522115, + (q31_t)0x5e4de197, (q31_t)0x5e49a1df, (q31_t)0x5e4561ed, (q31_t)0x5e4121c0, (q31_t)0x5e3ce15a, (q31_t)0x5e38a0b9, + (q31_t)0x5e345fde, (q31_t)0x5e301ec9, + (q31_t)0x5e2bdd7a, (q31_t)0x5e279bf1, (q31_t)0x5e235a2e, (q31_t)0x5e1f1830, (q31_t)0x5e1ad5f9, (q31_t)0x5e169388, + (q31_t)0x5e1250dc, (q31_t)0x5e0e0df7, + (q31_t)0x5e09cad7, (q31_t)0x5e05877e, (q31_t)0x5e0143ea, (q31_t)0x5dfd001d, (q31_t)0x5df8bc15, (q31_t)0x5df477d4, + (q31_t)0x5df03359, (q31_t)0x5debeea3, + (q31_t)0x5de7a9b4, (q31_t)0x5de3648b, (q31_t)0x5ddf1f28, (q31_t)0x5ddad98b, (q31_t)0x5dd693b4, (q31_t)0x5dd24da3, + (q31_t)0x5dce0759, (q31_t)0x5dc9c0d4, + (q31_t)0x5dc57a16, (q31_t)0x5dc1331d, (q31_t)0x5dbcebeb, (q31_t)0x5db8a480, (q31_t)0x5db45cda, (q31_t)0x5db014fa, + (q31_t)0x5dabcce1, (q31_t)0x5da7848e, + (q31_t)0x5da33c01, (q31_t)0x5d9ef33b, (q31_t)0x5d9aaa3a, (q31_t)0x5d966100, (q31_t)0x5d92178d, (q31_t)0x5d8dcddf, + (q31_t)0x5d8983f8, (q31_t)0x5d8539d7, + (q31_t)0x5d80ef7c, (q31_t)0x5d7ca4e8, (q31_t)0x5d785a1a, (q31_t)0x5d740f12, (q31_t)0x5d6fc3d1, (q31_t)0x5d6b7856, + (q31_t)0x5d672ca2, (q31_t)0x5d62e0b4, + (q31_t)0x5d5e948c, (q31_t)0x5d5a482a, (q31_t)0x5d55fb90, (q31_t)0x5d51aebb, (q31_t)0x5d4d61ad, (q31_t)0x5d491465, + (q31_t)0x5d44c6e4, (q31_t)0x5d40792a, + (q31_t)0x5d3c2b35, (q31_t)0x5d37dd08, (q31_t)0x5d338ea0, (q31_t)0x5d2f4000, (q31_t)0x5d2af125, (q31_t)0x5d26a212, + (q31_t)0x5d2252c5, (q31_t)0x5d1e033e, + (q31_t)0x5d19b37e, (q31_t)0x5d156385, (q31_t)0x5d111352, (q31_t)0x5d0cc2e5, (q31_t)0x5d087240, (q31_t)0x5d042161, + (q31_t)0x5cffd048, (q31_t)0x5cfb7ef7, + (q31_t)0x5cf72d6b, (q31_t)0x5cf2dba7, (q31_t)0x5cee89a9, (q31_t)0x5cea3772, (q31_t)0x5ce5e501, (q31_t)0x5ce19258, + (q31_t)0x5cdd3f75, (q31_t)0x5cd8ec58, + (q31_t)0x5cd49903, (q31_t)0x5cd04574, (q31_t)0x5ccbf1ab, (q31_t)0x5cc79daa, (q31_t)0x5cc3496f, (q31_t)0x5cbef4fc, + (q31_t)0x5cbaa04f, (q31_t)0x5cb64b68, + (q31_t)0x5cb1f649, (q31_t)0x5cada0f0, (q31_t)0x5ca94b5e, (q31_t)0x5ca4f594, (q31_t)0x5ca09f8f, (q31_t)0x5c9c4952, + (q31_t)0x5c97f2dc, (q31_t)0x5c939c2c, + (q31_t)0x5c8f4544, (q31_t)0x5c8aee22, (q31_t)0x5c8696c7, (q31_t)0x5c823f34, (q31_t)0x5c7de767, (q31_t)0x5c798f61, + (q31_t)0x5c753722, (q31_t)0x5c70deaa, + (q31_t)0x5c6c85f9, (q31_t)0x5c682d0f, (q31_t)0x5c63d3eb, (q31_t)0x5c5f7a8f, (q31_t)0x5c5b20fa, (q31_t)0x5c56c72c, + (q31_t)0x5c526d25, (q31_t)0x5c4e12e5, + (q31_t)0x5c49b86d, (q31_t)0x5c455dbb, (q31_t)0x5c4102d0, (q31_t)0x5c3ca7ad, (q31_t)0x5c384c50, (q31_t)0x5c33f0bb, + (q31_t)0x5c2f94ec, (q31_t)0x5c2b38e5, + (q31_t)0x5c26dca5, (q31_t)0x5c22802c, (q31_t)0x5c1e237b, (q31_t)0x5c19c690, (q31_t)0x5c15696d, (q31_t)0x5c110c11, + (q31_t)0x5c0cae7c, (q31_t)0x5c0850ae, + (q31_t)0x5c03f2a8, (q31_t)0x5bff9469, (q31_t)0x5bfb35f1, (q31_t)0x5bf6d740, (q31_t)0x5bf27857, (q31_t)0x5bee1935, + (q31_t)0x5be9b9da, (q31_t)0x5be55a46, + (q31_t)0x5be0fa7a, (q31_t)0x5bdc9a75, (q31_t)0x5bd83a37, (q31_t)0x5bd3d9c1, (q31_t)0x5bcf7912, (q31_t)0x5bcb182b, + (q31_t)0x5bc6b70b, (q31_t)0x5bc255b2, + (q31_t)0x5bbdf421, (q31_t)0x5bb99257, (q31_t)0x5bb53054, (q31_t)0x5bb0ce19, (q31_t)0x5bac6ba6, (q31_t)0x5ba808f9, + (q31_t)0x5ba3a615, (q31_t)0x5b9f42f7, + (q31_t)0x5b9adfa2, (q31_t)0x5b967c13, (q31_t)0x5b92184d, (q31_t)0x5b8db44d, (q31_t)0x5b895016, (q31_t)0x5b84eba6, + (q31_t)0x5b8086fd, (q31_t)0x5b7c221c, + (q31_t)0x5b77bd02, (q31_t)0x5b7357b0, (q31_t)0x5b6ef226, (q31_t)0x5b6a8c63, (q31_t)0x5b662668, (q31_t)0x5b61c035, + (q31_t)0x5b5d59c9, (q31_t)0x5b58f324, + (q31_t)0x5b548c48, (q31_t)0x5b502533, (q31_t)0x5b4bbde6, (q31_t)0x5b475660, (q31_t)0x5b42eea2, (q31_t)0x5b3e86ac, + (q31_t)0x5b3a1e7e, (q31_t)0x5b35b617, + (q31_t)0x5b314d78, (q31_t)0x5b2ce4a1, (q31_t)0x5b287b91, (q31_t)0x5b241249, (q31_t)0x5b1fa8c9, (q31_t)0x5b1b3f11, + (q31_t)0x5b16d521, (q31_t)0x5b126af8, + (q31_t)0x5b0e0098, (q31_t)0x5b0995ff, (q31_t)0x5b052b2e, (q31_t)0x5b00c025, (q31_t)0x5afc54e3, (q31_t)0x5af7e96a, + (q31_t)0x5af37db8, (q31_t)0x5aef11cf, + (q31_t)0x5aeaa5ad, (q31_t)0x5ae63953, (q31_t)0x5ae1ccc1, (q31_t)0x5add5ff7, (q31_t)0x5ad8f2f5, (q31_t)0x5ad485bb, + (q31_t)0x5ad01849, (q31_t)0x5acbaa9f, + (q31_t)0x5ac73cbd, (q31_t)0x5ac2cea3, (q31_t)0x5abe6050, (q31_t)0x5ab9f1c6, (q31_t)0x5ab58304, (q31_t)0x5ab1140a, + (q31_t)0x5aaca4d8, (q31_t)0x5aa8356f, + (q31_t)0x5aa3c5cd, (q31_t)0x5a9f55f3, (q31_t)0x5a9ae5e2, (q31_t)0x5a967598, (q31_t)0x5a920517, (q31_t)0x5a8d945d, + (q31_t)0x5a89236c, (q31_t)0x5a84b243, + (q31_t)0x5a8040e3, (q31_t)0x5a7bcf4a, (q31_t)0x5a775d7a, (q31_t)0x5a72eb71, (q31_t)0x5a6e7931, (q31_t)0x5a6a06ba, + (q31_t)0x5a65940a, (q31_t)0x5a612123, + (q31_t)0x5a5cae04, (q31_t)0x5a583aad, (q31_t)0x5a53c71e, (q31_t)0x5a4f5358, (q31_t)0x5a4adf5a, (q31_t)0x5a466b24, + (q31_t)0x5a41f6b7, (q31_t)0x5a3d8212, + (q31_t)0x5a390d35, (q31_t)0x5a349821, (q31_t)0x5a3022d5, (q31_t)0x5a2bad51, (q31_t)0x5a273796, (q31_t)0x5a22c1a3, + (q31_t)0x5a1e4b79, (q31_t)0x5a19d517, + (q31_t)0x5a155e7d, (q31_t)0x5a10e7ac, (q31_t)0x5a0c70a3, (q31_t)0x5a07f963, (q31_t)0x5a0381eb, (q31_t)0x59ff0a3c, + (q31_t)0x59fa9255, (q31_t)0x59f61a36, + (q31_t)0x59f1a1e0, (q31_t)0x59ed2953, (q31_t)0x59e8b08e, (q31_t)0x59e43792, (q31_t)0x59dfbe5e, (q31_t)0x59db44f3, + (q31_t)0x59d6cb50, (q31_t)0x59d25176, + (q31_t)0x59cdd765, (q31_t)0x59c95d1c, (q31_t)0x59c4e29c, (q31_t)0x59c067e4, (q31_t)0x59bbecf5, (q31_t)0x59b771cf, + (q31_t)0x59b2f671, (q31_t)0x59ae7add, + (q31_t)0x59a9ff10, (q31_t)0x59a5830d, (q31_t)0x59a106d2, (q31_t)0x599c8a60, (q31_t)0x59980db6, (q31_t)0x599390d5, + (q31_t)0x598f13bd, (q31_t)0x598a966e, + (q31_t)0x598618e8, (q31_t)0x59819b2a, (q31_t)0x597d1d35, (q31_t)0x59789f09, (q31_t)0x597420a6, (q31_t)0x596fa20b, + (q31_t)0x596b233a, (q31_t)0x5966a431, + (q31_t)0x596224f1, (q31_t)0x595da57a, (q31_t)0x595925cc, (q31_t)0x5954a5e6, (q31_t)0x595025ca, (q31_t)0x594ba576, + (q31_t)0x594724ec, (q31_t)0x5942a42a, + (q31_t)0x593e2331, (q31_t)0x5939a202, (q31_t)0x5935209b, (q31_t)0x59309efd, (q31_t)0x592c1d28, (q31_t)0x59279b1c, + (q31_t)0x592318d9, (q31_t)0x591e9660, + (q31_t)0x591a13af, (q31_t)0x591590c7, (q31_t)0x59110da8, (q31_t)0x590c8a53, (q31_t)0x590806c6, (q31_t)0x59038302, + (q31_t)0x58feff08, (q31_t)0x58fa7ad7, + (q31_t)0x58f5f66e, (q31_t)0x58f171cf, (q31_t)0x58ececf9, (q31_t)0x58e867ed, (q31_t)0x58e3e2a9, (q31_t)0x58df5d2e, + (q31_t)0x58dad77d, (q31_t)0x58d65195, + (q31_t)0x58d1cb76, (q31_t)0x58cd4520, (q31_t)0x58c8be94, (q31_t)0x58c437d1, (q31_t)0x58bfb0d7, (q31_t)0x58bb29a6, + (q31_t)0x58b6a23e, (q31_t)0x58b21aa0, + (q31_t)0x58ad92cb, (q31_t)0x58a90ac0, (q31_t)0x58a4827d, (q31_t)0x589ffa04, (q31_t)0x589b7155, (q31_t)0x5896e86f, + (q31_t)0x58925f52, (q31_t)0x588dd5fe, + (q31_t)0x58894c74, (q31_t)0x5884c2b3, (q31_t)0x588038bb, (q31_t)0x587bae8d, (q31_t)0x58772429, (q31_t)0x5872998e, + (q31_t)0x586e0ebc, (q31_t)0x586983b4, + (q31_t)0x5864f875, (q31_t)0x58606d00, (q31_t)0x585be154, (q31_t)0x58575571, (q31_t)0x5852c958, (q31_t)0x584e3d09, + (q31_t)0x5849b083, (q31_t)0x584523c7, + (q31_t)0x584096d4, (q31_t)0x583c09ab, (q31_t)0x58377c4c, (q31_t)0x5832eeb6, (q31_t)0x582e60e9, (q31_t)0x5829d2e6, + (q31_t)0x582544ad, (q31_t)0x5820b63e, + (q31_t)0x581c2798, (q31_t)0x581798bb, (q31_t)0x581309a9, (q31_t)0x580e7a60, (q31_t)0x5809eae1, (q31_t)0x58055b2b, + (q31_t)0x5800cb3f, (q31_t)0x57fc3b1d, + (q31_t)0x57f7aac5, (q31_t)0x57f31a36, (q31_t)0x57ee8971, (q31_t)0x57e9f876, (q31_t)0x57e56744, (q31_t)0x57e0d5dd, + (q31_t)0x57dc443f, (q31_t)0x57d7b26b, + (q31_t)0x57d32061, (q31_t)0x57ce8e20, (q31_t)0x57c9fbaa, (q31_t)0x57c568fd, (q31_t)0x57c0d61a, (q31_t)0x57bc4301, + (q31_t)0x57b7afb2, (q31_t)0x57b31c2d, + (q31_t)0x57ae8872, (q31_t)0x57a9f480, (q31_t)0x57a56059, (q31_t)0x57a0cbfb, (q31_t)0x579c3768, (q31_t)0x5797a29e, + (q31_t)0x57930d9e, (q31_t)0x578e7869, + (q31_t)0x5789e2fd, (q31_t)0x57854d5b, (q31_t)0x5780b784, (q31_t)0x577c2176, (q31_t)0x57778b32, (q31_t)0x5772f4b9, + (q31_t)0x576e5e09, (q31_t)0x5769c724, + (q31_t)0x57653009, (q31_t)0x576098b7, (q31_t)0x575c0130, (q31_t)0x57576973, (q31_t)0x5752d180, (q31_t)0x574e3957, + (q31_t)0x5749a0f9, (q31_t)0x57450864, + (q31_t)0x57406f9a, (q31_t)0x573bd69a, (q31_t)0x57373d64, (q31_t)0x5732a3f8, (q31_t)0x572e0a56, (q31_t)0x5729707f, + (q31_t)0x5724d672, (q31_t)0x57203c2f, + (q31_t)0x571ba1b7, (q31_t)0x57170708, (q31_t)0x57126c24, (q31_t)0x570dd10a, (q31_t)0x570935bb, (q31_t)0x57049a36, + (q31_t)0x56fffe7b, (q31_t)0x56fb628b, + (q31_t)0x56f6c664, (q31_t)0x56f22a09, (q31_t)0x56ed8d77, (q31_t)0x56e8f0b0, (q31_t)0x56e453b4, (q31_t)0x56dfb681, + (q31_t)0x56db1919, (q31_t)0x56d67b7c, + (q31_t)0x56d1dda9, (q31_t)0x56cd3fa1, (q31_t)0x56c8a162, (q31_t)0x56c402ef, (q31_t)0x56bf6446, (q31_t)0x56bac567, + (q31_t)0x56b62653, (q31_t)0x56b18709, + (q31_t)0x56ace78a, (q31_t)0x56a847d6, (q31_t)0x56a3a7ec, (q31_t)0x569f07cc, (q31_t)0x569a6777, (q31_t)0x5695c6ed, + (q31_t)0x5691262d, (q31_t)0x568c8538, + (q31_t)0x5687e40e, (q31_t)0x568342ae, (q31_t)0x567ea118, (q31_t)0x5679ff4e, (q31_t)0x56755d4e, (q31_t)0x5670bb19, + (q31_t)0x566c18ae, (q31_t)0x5667760e, + (q31_t)0x5662d339, (q31_t)0x565e302e, (q31_t)0x56598cee, (q31_t)0x5654e979, (q31_t)0x565045cf, (q31_t)0x564ba1f0, + (q31_t)0x5646fddb, (q31_t)0x56425991, + (q31_t)0x563db512, (q31_t)0x5639105d, (q31_t)0x56346b74, (q31_t)0x562fc655, (q31_t)0x562b2101, (q31_t)0x56267b78, + (q31_t)0x5621d5ba, (q31_t)0x561d2fc6, + (q31_t)0x5618899e, (q31_t)0x5613e340, (q31_t)0x560f3cae, (q31_t)0x560a95e6, (q31_t)0x5605eee9, (q31_t)0x560147b7, + (q31_t)0x55fca050, (q31_t)0x55f7f8b4, + (q31_t)0x55f350e3, (q31_t)0x55eea8dd, (q31_t)0x55ea00a2, (q31_t)0x55e55832, (q31_t)0x55e0af8d, (q31_t)0x55dc06b3, + (q31_t)0x55d75da4, (q31_t)0x55d2b460, + (q31_t)0x55ce0ae7, (q31_t)0x55c96139, (q31_t)0x55c4b757, (q31_t)0x55c00d3f, (q31_t)0x55bb62f3, (q31_t)0x55b6b871, + (q31_t)0x55b20dbb, (q31_t)0x55ad62d0, + (q31_t)0x55a8b7b0, (q31_t)0x55a40c5b, (q31_t)0x559f60d1, (q31_t)0x559ab513, (q31_t)0x55960920, (q31_t)0x55915cf8, + (q31_t)0x558cb09b, (q31_t)0x55880409, + (q31_t)0x55835743, (q31_t)0x557eaa48, (q31_t)0x5579fd18, (q31_t)0x55754fb3, (q31_t)0x5570a21a, (q31_t)0x556bf44c, + (q31_t)0x55674649, (q31_t)0x55629812, + (q31_t)0x555de9a6, (q31_t)0x55593b05, (q31_t)0x55548c30, (q31_t)0x554fdd26, (q31_t)0x554b2de7, (q31_t)0x55467e74, + (q31_t)0x5541cecc, (q31_t)0x553d1ef0, + (q31_t)0x55386edf, (q31_t)0x5533be99, (q31_t)0x552f0e1f, (q31_t)0x552a5d70, (q31_t)0x5525ac8d, (q31_t)0x5520fb75, + (q31_t)0x551c4a29, (q31_t)0x551798a8, + (q31_t)0x5512e6f3, (q31_t)0x550e3509, (q31_t)0x550982eb, (q31_t)0x5504d099, (q31_t)0x55001e12, (q31_t)0x54fb6b56, + (q31_t)0x54f6b866, (q31_t)0x54f20542, + (q31_t)0x54ed51e9, (q31_t)0x54e89e5c, (q31_t)0x54e3ea9a, (q31_t)0x54df36a5, (q31_t)0x54da827a, (q31_t)0x54d5ce1c, + (q31_t)0x54d11989, (q31_t)0x54cc64c2, + (q31_t)0x54c7afc6, (q31_t)0x54c2fa96, (q31_t)0x54be4532, (q31_t)0x54b98f9a, (q31_t)0x54b4d9cd, (q31_t)0x54b023cc, + (q31_t)0x54ab6d97, (q31_t)0x54a6b72e, + (q31_t)0x54a20090, (q31_t)0x549d49bf, (q31_t)0x549892b9, (q31_t)0x5493db7f, (q31_t)0x548f2410, (q31_t)0x548a6c6e, + (q31_t)0x5485b497, (q31_t)0x5480fc8c, + (q31_t)0x547c444d, (q31_t)0x54778bda, (q31_t)0x5472d333, (q31_t)0x546e1a58, (q31_t)0x54696149, (q31_t)0x5464a805, + (q31_t)0x545fee8e, (q31_t)0x545b34e3, + (q31_t)0x54567b03, (q31_t)0x5451c0f0, (q31_t)0x544d06a8, (q31_t)0x54484c2d, (q31_t)0x5443917d, (q31_t)0x543ed699, + (q31_t)0x543a1b82, (q31_t)0x54356037, + (q31_t)0x5430a4b7, (q31_t)0x542be904, (q31_t)0x54272d1d, (q31_t)0x54227102, (q31_t)0x541db4b3, (q31_t)0x5418f830, + (q31_t)0x54143b79, (q31_t)0x540f7e8e, + (q31_t)0x540ac170, (q31_t)0x5406041d, (q31_t)0x54014697, (q31_t)0x53fc88dd, (q31_t)0x53f7caef, (q31_t)0x53f30cce, + (q31_t)0x53ee4e78, (q31_t)0x53e98fef, + (q31_t)0x53e4d132, (q31_t)0x53e01242, (q31_t)0x53db531d, (q31_t)0x53d693c5, (q31_t)0x53d1d439, (q31_t)0x53cd147a, + (q31_t)0x53c85486, (q31_t)0x53c3945f, + (q31_t)0x53bed405, (q31_t)0x53ba1377, (q31_t)0x53b552b5, (q31_t)0x53b091bf, (q31_t)0x53abd096, (q31_t)0x53a70f39, + (q31_t)0x53a24da9, (q31_t)0x539d8be5, + (q31_t)0x5398c9ed, (q31_t)0x539407c2, (q31_t)0x538f4564, (q31_t)0x538a82d1, (q31_t)0x5385c00c, (q31_t)0x5380fd12, + (q31_t)0x537c39e6, (q31_t)0x53777685, + (q31_t)0x5372b2f2, (q31_t)0x536def2a, (q31_t)0x53692b30, (q31_t)0x53646701, (q31_t)0x535fa2a0, (q31_t)0x535ade0b, + (q31_t)0x53561942, (q31_t)0x53515447, + (q31_t)0x534c8f17, (q31_t)0x5347c9b5, (q31_t)0x5343041f, (q31_t)0x533e3e55, (q31_t)0x53397859, (q31_t)0x5334b229, + (q31_t)0x532febc5, (q31_t)0x532b252f, + (q31_t)0x53265e65, (q31_t)0x53219767, (q31_t)0x531cd037, (q31_t)0x531808d3, (q31_t)0x5313413c, (q31_t)0x530e7972, + (q31_t)0x5309b174, (q31_t)0x5304e943, + (q31_t)0x530020df, (q31_t)0x52fb5848, (q31_t)0x52f68f7e, (q31_t)0x52f1c680, (q31_t)0x52ecfd4f, (q31_t)0x52e833ec, + (q31_t)0x52e36a55, (q31_t)0x52dea08a, + (q31_t)0x52d9d68d, (q31_t)0x52d50c5d, (q31_t)0x52d041f9, (q31_t)0x52cb7763, (q31_t)0x52c6ac99, (q31_t)0x52c1e19d, + (q31_t)0x52bd166d, (q31_t)0x52b84b0a, + (q31_t)0x52b37f74, (q31_t)0x52aeb3ac, (q31_t)0x52a9e7b0, (q31_t)0x52a51b81, (q31_t)0x52a04f1f, (q31_t)0x529b828a, + (q31_t)0x5296b5c3, (q31_t)0x5291e8c8, + (q31_t)0x528d1b9b, (q31_t)0x52884e3a, (q31_t)0x528380a7, (q31_t)0x527eb2e0, (q31_t)0x5279e4e7, (q31_t)0x527516bb, + (q31_t)0x5270485c, (q31_t)0x526b79ca, + (q31_t)0x5266ab06, (q31_t)0x5261dc0e, (q31_t)0x525d0ce4, (q31_t)0x52583d87, (q31_t)0x52536df7, (q31_t)0x524e9e34, + (q31_t)0x5249ce3f, (q31_t)0x5244fe17, + (q31_t)0x52402dbc, (q31_t)0x523b5d2e, (q31_t)0x52368c6e, (q31_t)0x5231bb7b, (q31_t)0x522cea55, (q31_t)0x522818fc, + (q31_t)0x52234771, (q31_t)0x521e75b3, + (q31_t)0x5219a3c3, (q31_t)0x5214d1a0, (q31_t)0x520fff4a, (q31_t)0x520b2cc2, (q31_t)0x52065a07, (q31_t)0x52018719, + (q31_t)0x51fcb3f9, (q31_t)0x51f7e0a6, + (q31_t)0x51f30d21, (q31_t)0x51ee3969, (q31_t)0x51e9657e, (q31_t)0x51e49162, (q31_t)0x51dfbd12, (q31_t)0x51dae890, + (q31_t)0x51d613dc, (q31_t)0x51d13ef5, + (q31_t)0x51cc69db, (q31_t)0x51c79490, (q31_t)0x51c2bf11, (q31_t)0x51bde960, (q31_t)0x51b9137d, (q31_t)0x51b43d68, + (q31_t)0x51af6720, (q31_t)0x51aa90a5, + (q31_t)0x51a5b9f9, (q31_t)0x51a0e31a, (q31_t)0x519c0c08, (q31_t)0x519734c4, (q31_t)0x51925d4e, (q31_t)0x518d85a6, + (q31_t)0x5188adcb, (q31_t)0x5183d5be, + (q31_t)0x517efd7f, (q31_t)0x517a250d, (q31_t)0x51754c69, (q31_t)0x51707393, (q31_t)0x516b9a8b, (q31_t)0x5166c150, + (q31_t)0x5161e7e4, (q31_t)0x515d0e45, + (q31_t)0x51583473, (q31_t)0x51535a70, (q31_t)0x514e803b, (q31_t)0x5149a5d3, (q31_t)0x5144cb39, (q31_t)0x513ff06d, + (q31_t)0x513b156f, (q31_t)0x51363a3f, + (q31_t)0x51315edd, (q31_t)0x512c8348, (q31_t)0x5127a782, (q31_t)0x5122cb8a, (q31_t)0x511def5f, (q31_t)0x51191302, + (q31_t)0x51143674, (q31_t)0x510f59b3, + (q31_t)0x510a7cc1, (q31_t)0x51059f9c, (q31_t)0x5100c246, (q31_t)0x50fbe4bd, (q31_t)0x50f70703, (q31_t)0x50f22916, + (q31_t)0x50ed4af8, (q31_t)0x50e86ca8, + (q31_t)0x50e38e25, (q31_t)0x50deaf71, (q31_t)0x50d9d08b, (q31_t)0x50d4f173, (q31_t)0x50d0122a, (q31_t)0x50cb32ae, + (q31_t)0x50c65301, (q31_t)0x50c17322, + (q31_t)0x50bc9311, (q31_t)0x50b7b2ce, (q31_t)0x50b2d259, (q31_t)0x50adf1b3, (q31_t)0x50a910db, (q31_t)0x50a42fd1, + (q31_t)0x509f4e95, (q31_t)0x509a6d28, + (q31_t)0x50958b88, (q31_t)0x5090a9b8, (q31_t)0x508bc7b5, (q31_t)0x5086e581, (q31_t)0x5082031b, (q31_t)0x507d2083, + (q31_t)0x50783dba, (q31_t)0x50735abf, + (q31_t)0x506e7793, (q31_t)0x50699435, (q31_t)0x5064b0a5, (q31_t)0x505fcce4, (q31_t)0x505ae8f1, (q31_t)0x505604cd, + (q31_t)0x50512077, (q31_t)0x504c3bef, + (q31_t)0x50475736, (q31_t)0x5042724c, (q31_t)0x503d8d30, (q31_t)0x5038a7e2, (q31_t)0x5033c263, (q31_t)0x502edcb2, + (q31_t)0x5029f6d1, (q31_t)0x502510bd, + (q31_t)0x50202a78, (q31_t)0x501b4402, (q31_t)0x50165d5a, (q31_t)0x50117681, (q31_t)0x500c8f77, (q31_t)0x5007a83b, + (q31_t)0x5002c0cd, (q31_t)0x4ffdd92f, + (q31_t)0x4ff8f15f, (q31_t)0x4ff4095e, (q31_t)0x4fef212b, (q31_t)0x4fea38c7, (q31_t)0x4fe55032, (q31_t)0x4fe0676c, + (q31_t)0x4fdb7e74, (q31_t)0x4fd6954b, + (q31_t)0x4fd1abf0, (q31_t)0x4fccc265, (q31_t)0x4fc7d8a8, (q31_t)0x4fc2eeba, (q31_t)0x4fbe049b, (q31_t)0x4fb91a4b, + (q31_t)0x4fb42fc9, (q31_t)0x4faf4517, + (q31_t)0x4faa5a33, (q31_t)0x4fa56f1e, (q31_t)0x4fa083d8, (q31_t)0x4f9b9861, (q31_t)0x4f96acb8, (q31_t)0x4f91c0df, + (q31_t)0x4f8cd4d4, (q31_t)0x4f87e899, + (q31_t)0x4f82fc2c, (q31_t)0x4f7e0f8f, (q31_t)0x4f7922c0, (q31_t)0x4f7435c0, (q31_t)0x4f6f488f, (q31_t)0x4f6a5b2e, + (q31_t)0x4f656d9b, (q31_t)0x4f607fd7, + (q31_t)0x4f5b91e3, (q31_t)0x4f56a3bd, (q31_t)0x4f51b566, (q31_t)0x4f4cc6df, (q31_t)0x4f47d827, (q31_t)0x4f42e93d, + (q31_t)0x4f3dfa23, (q31_t)0x4f390ad8, + (q31_t)0x4f341b5c, (q31_t)0x4f2f2baf, (q31_t)0x4f2a3bd2, (q31_t)0x4f254bc3, (q31_t)0x4f205b84, (q31_t)0x4f1b6b14, + (q31_t)0x4f167a73, (q31_t)0x4f1189a1, + (q31_t)0x4f0c989f, (q31_t)0x4f07a76b, (q31_t)0x4f02b608, (q31_t)0x4efdc473, (q31_t)0x4ef8d2ad, (q31_t)0x4ef3e0b7, + (q31_t)0x4eeeee90, (q31_t)0x4ee9fc39, + (q31_t)0x4ee509b1, (q31_t)0x4ee016f8, (q31_t)0x4edb240e, (q31_t)0x4ed630f4, (q31_t)0x4ed13da9, (q31_t)0x4ecc4a2e, + (q31_t)0x4ec75682, (q31_t)0x4ec262a5, + (q31_t)0x4ebd6e98, (q31_t)0x4eb87a5a, (q31_t)0x4eb385ec, (q31_t)0x4eae914d, (q31_t)0x4ea99c7d, (q31_t)0x4ea4a77d, + (q31_t)0x4e9fb24d, (q31_t)0x4e9abcec, + (q31_t)0x4e95c75b, (q31_t)0x4e90d199, (q31_t)0x4e8bdba6, (q31_t)0x4e86e583, (q31_t)0x4e81ef30, (q31_t)0x4e7cf8ac, + (q31_t)0x4e7801f8, (q31_t)0x4e730b14, + (q31_t)0x4e6e13ff, (q31_t)0x4e691cba, (q31_t)0x4e642544, (q31_t)0x4e5f2d9e, (q31_t)0x4e5a35c7, (q31_t)0x4e553dc1, + (q31_t)0x4e50458a, (q31_t)0x4e4b4d22, + (q31_t)0x4e46548b, (q31_t)0x4e415bc3, (q31_t)0x4e3c62cb, (q31_t)0x4e3769a2, (q31_t)0x4e32704a, (q31_t)0x4e2d76c1, + (q31_t)0x4e287d08, (q31_t)0x4e23831e, + (q31_t)0x4e1e8905, (q31_t)0x4e198ebb, (q31_t)0x4e149441, (q31_t)0x4e0f9997, (q31_t)0x4e0a9ebd, (q31_t)0x4e05a3b2, + (q31_t)0x4e00a878, (q31_t)0x4dfbad0d, + (q31_t)0x4df6b173, (q31_t)0x4df1b5a8, (q31_t)0x4decb9ad, (q31_t)0x4de7bd82, (q31_t)0x4de2c127, (q31_t)0x4dddc49c, + (q31_t)0x4dd8c7e1, (q31_t)0x4dd3caf6, + (q31_t)0x4dcecdda, (q31_t)0x4dc9d08f, (q31_t)0x4dc4d314, (q31_t)0x4dbfd569, (q31_t)0x4dbad78e, (q31_t)0x4db5d983, + (q31_t)0x4db0db48, (q31_t)0x4dabdcdd, + (q31_t)0x4da6de43, (q31_t)0x4da1df78, (q31_t)0x4d9ce07d, (q31_t)0x4d97e153, (q31_t)0x4d92e1f9, (q31_t)0x4d8de26f, + (q31_t)0x4d88e2b5, (q31_t)0x4d83e2cb, + (q31_t)0x4d7ee2b1, (q31_t)0x4d79e268, (q31_t)0x4d74e1ef, (q31_t)0x4d6fe146, (q31_t)0x4d6ae06d, (q31_t)0x4d65df64, + (q31_t)0x4d60de2c, (q31_t)0x4d5bdcc4, + (q31_t)0x4d56db2d, (q31_t)0x4d51d965, (q31_t)0x4d4cd76e, (q31_t)0x4d47d547, (q31_t)0x4d42d2f1, (q31_t)0x4d3dd06b, + (q31_t)0x4d38cdb5, (q31_t)0x4d33cad0, + (q31_t)0x4d2ec7bb, (q31_t)0x4d29c476, (q31_t)0x4d24c102, (q31_t)0x4d1fbd5e, (q31_t)0x4d1ab98b, (q31_t)0x4d15b588, + (q31_t)0x4d10b155, (q31_t)0x4d0bacf3, + (q31_t)0x4d06a862, (q31_t)0x4d01a3a0, (q31_t)0x4cfc9eb0, (q31_t)0x4cf79990, (q31_t)0x4cf29440, (q31_t)0x4ced8ec1, + (q31_t)0x4ce88913, (q31_t)0x4ce38335, + (q31_t)0x4cde7d28, (q31_t)0x4cd976eb, (q31_t)0x4cd4707f, (q31_t)0x4ccf69e3, (q31_t)0x4cca6318, (q31_t)0x4cc55c1e, + (q31_t)0x4cc054f4, (q31_t)0x4cbb4d9b, + (q31_t)0x4cb64613, (q31_t)0x4cb13e5b, (q31_t)0x4cac3674, (q31_t)0x4ca72e5e, (q31_t)0x4ca22619, (q31_t)0x4c9d1da4, + (q31_t)0x4c981500, (q31_t)0x4c930c2d, + (q31_t)0x4c8e032a, (q31_t)0x4c88f9f8, (q31_t)0x4c83f097, (q31_t)0x4c7ee707, (q31_t)0x4c79dd48, (q31_t)0x4c74d359, + (q31_t)0x4c6fc93b, (q31_t)0x4c6abeef, + (q31_t)0x4c65b473, (q31_t)0x4c60a9c8, (q31_t)0x4c5b9eed, (q31_t)0x4c5693e4, (q31_t)0x4c5188ac, (q31_t)0x4c4c7d44, + (q31_t)0x4c4771ae, (q31_t)0x4c4265e8, + (q31_t)0x4c3d59f3, (q31_t)0x4c384dd0, (q31_t)0x4c33417d, (q31_t)0x4c2e34fb, (q31_t)0x4c29284b, (q31_t)0x4c241b6b, + (q31_t)0x4c1f0e5c, (q31_t)0x4c1a011f, + (q31_t)0x4c14f3b2, (q31_t)0x4c0fe617, (q31_t)0x4c0ad84c, (q31_t)0x4c05ca53, (q31_t)0x4c00bc2b, (q31_t)0x4bfbadd4, + (q31_t)0x4bf69f4e, (q31_t)0x4bf19099, + (q31_t)0x4bec81b5, (q31_t)0x4be772a3, (q31_t)0x4be26362, (q31_t)0x4bdd53f2, (q31_t)0x4bd84453, (q31_t)0x4bd33485, + (q31_t)0x4bce2488, (q31_t)0x4bc9145d, + (q31_t)0x4bc40403, (q31_t)0x4bbef37b, (q31_t)0x4bb9e2c3, (q31_t)0x4bb4d1dd, (q31_t)0x4bafc0c8, (q31_t)0x4baaaf85, + (q31_t)0x4ba59e12, (q31_t)0x4ba08c72, + (q31_t)0x4b9b7aa2, (q31_t)0x4b9668a4, (q31_t)0x4b915677, (q31_t)0x4b8c441c, (q31_t)0x4b873192, (q31_t)0x4b821ed9, + (q31_t)0x4b7d0bf2, (q31_t)0x4b77f8dc, + (q31_t)0x4b72e598, (q31_t)0x4b6dd225, (q31_t)0x4b68be84, (q31_t)0x4b63aab4, (q31_t)0x4b5e96b6, (q31_t)0x4b598289, + (q31_t)0x4b546e2d, (q31_t)0x4b4f59a4, + (q31_t)0x4b4a44eb, (q31_t)0x4b453005, (q31_t)0x4b401aef, (q31_t)0x4b3b05ac, (q31_t)0x4b35f03a, (q31_t)0x4b30da9a, + (q31_t)0x4b2bc4cb, (q31_t)0x4b26aece, + (q31_t)0x4b2198a2, (q31_t)0x4b1c8248, (q31_t)0x4b176bc0, (q31_t)0x4b12550a, (q31_t)0x4b0d3e25, (q31_t)0x4b082712, + (q31_t)0x4b030fd1, (q31_t)0x4afdf861, + (q31_t)0x4af8e0c3, (q31_t)0x4af3c8f7, (q31_t)0x4aeeb0fd, (q31_t)0x4ae998d4, (q31_t)0x4ae4807d, (q31_t)0x4adf67f8, + (q31_t)0x4ada4f45, (q31_t)0x4ad53664, + (q31_t)0x4ad01d54, (q31_t)0x4acb0417, (q31_t)0x4ac5eaab, (q31_t)0x4ac0d111, (q31_t)0x4abbb749, (q31_t)0x4ab69d53, + (q31_t)0x4ab1832f, (q31_t)0x4aac68dc, + (q31_t)0x4aa74e5c, (q31_t)0x4aa233ae, (q31_t)0x4a9d18d1, (q31_t)0x4a97fdc7, (q31_t)0x4a92e28e, (q31_t)0x4a8dc728, + (q31_t)0x4a88ab93, (q31_t)0x4a838fd1, + (q31_t)0x4a7e73e0, (q31_t)0x4a7957c2, (q31_t)0x4a743b76, (q31_t)0x4a6f1efc, (q31_t)0x4a6a0253, (q31_t)0x4a64e57d, + (q31_t)0x4a5fc879, (q31_t)0x4a5aab48, + (q31_t)0x4a558de8, (q31_t)0x4a50705a, (q31_t)0x4a4b529f, (q31_t)0x4a4634b6, (q31_t)0x4a41169f, (q31_t)0x4a3bf85a, + (q31_t)0x4a36d9e7, (q31_t)0x4a31bb47, + (q31_t)0x4a2c9c79, (q31_t)0x4a277d7d, (q31_t)0x4a225e53, (q31_t)0x4a1d3efc, (q31_t)0x4a181f77, (q31_t)0x4a12ffc4, + (q31_t)0x4a0ddfe4, (q31_t)0x4a08bfd5, + (q31_t)0x4a039f9a, (q31_t)0x49fe7f30, (q31_t)0x49f95e99, (q31_t)0x49f43dd4, (q31_t)0x49ef1ce2, (q31_t)0x49e9fbc2, + (q31_t)0x49e4da74, (q31_t)0x49dfb8f9, + (q31_t)0x49da9750, (q31_t)0x49d5757a, (q31_t)0x49d05376, (q31_t)0x49cb3145, (q31_t)0x49c60ee6, (q31_t)0x49c0ec59, + (q31_t)0x49bbc9a0, (q31_t)0x49b6a6b8, + (q31_t)0x49b183a3, (q31_t)0x49ac6061, (q31_t)0x49a73cf1, (q31_t)0x49a21954, (q31_t)0x499cf589, (q31_t)0x4997d191, + (q31_t)0x4992ad6c, (q31_t)0x498d8919, + (q31_t)0x49886499, (q31_t)0x49833fec, (q31_t)0x497e1b11, (q31_t)0x4978f609, (q31_t)0x4973d0d3, (q31_t)0x496eab70, + (q31_t)0x496985e0, (q31_t)0x49646023, + (q31_t)0x495f3a38, (q31_t)0x495a1420, (q31_t)0x4954eddb, (q31_t)0x494fc768, (q31_t)0x494aa0c9, (q31_t)0x494579fc, + (q31_t)0x49405302, (q31_t)0x493b2bdb, + (q31_t)0x49360486, (q31_t)0x4930dd05, (q31_t)0x492bb556, (q31_t)0x49268d7a, (q31_t)0x49216571, (q31_t)0x491c3d3b, + (q31_t)0x491714d8, (q31_t)0x4911ec47, + (q31_t)0x490cc38a, (q31_t)0x49079aa0, (q31_t)0x49027188, (q31_t)0x48fd4844, (q31_t)0x48f81ed2, (q31_t)0x48f2f534, + (q31_t)0x48edcb68, (q31_t)0x48e8a170, + (q31_t)0x48e3774a, (q31_t)0x48de4cf8, (q31_t)0x48d92278, (q31_t)0x48d3f7cc, (q31_t)0x48ceccf3, (q31_t)0x48c9a1ed, + (q31_t)0x48c476b9, (q31_t)0x48bf4b59, + (q31_t)0x48ba1fcd, (q31_t)0x48b4f413, (q31_t)0x48afc82c, (q31_t)0x48aa9c19, (q31_t)0x48a56fd9, (q31_t)0x48a0436c, + (q31_t)0x489b16d2, (q31_t)0x4895ea0b, + (q31_t)0x4890bd18, (q31_t)0x488b8ff8, (q31_t)0x488662ab, (q31_t)0x48813531, (q31_t)0x487c078b, (q31_t)0x4876d9b8, + (q31_t)0x4871abb8, (q31_t)0x486c7d8c, + (q31_t)0x48674f33, (q31_t)0x486220ad, (q31_t)0x485cf1fa, (q31_t)0x4857c31b, (q31_t)0x48529410, (q31_t)0x484d64d7, + (q31_t)0x48483572, (q31_t)0x484305e1, + (q31_t)0x483dd623, (q31_t)0x4838a638, (q31_t)0x48337621, (q31_t)0x482e45dd, (q31_t)0x4829156d, (q31_t)0x4823e4d0, + (q31_t)0x481eb407, (q31_t)0x48198311, + (q31_t)0x481451ef, (q31_t)0x480f20a0, (q31_t)0x4809ef25, (q31_t)0x4804bd7e, (q31_t)0x47ff8baa, (q31_t)0x47fa59a9, + (q31_t)0x47f5277d, (q31_t)0x47eff523, + (q31_t)0x47eac29e, (q31_t)0x47e58fec, (q31_t)0x47e05d0e, (q31_t)0x47db2a03, (q31_t)0x47d5f6cc, (q31_t)0x47d0c369, + (q31_t)0x47cb8fd9, (q31_t)0x47c65c1d, + (q31_t)0x47c12835, (q31_t)0x47bbf421, (q31_t)0x47b6bfe0, (q31_t)0x47b18b74, (q31_t)0x47ac56da, (q31_t)0x47a72215, + (q31_t)0x47a1ed24, (q31_t)0x479cb806, + (q31_t)0x479782bc, (q31_t)0x47924d46, (q31_t)0x478d17a4, (q31_t)0x4787e1d6, (q31_t)0x4782abdb, (q31_t)0x477d75b5, + (q31_t)0x47783f62, (q31_t)0x477308e3, + (q31_t)0x476dd239, (q31_t)0x47689b62, (q31_t)0x4763645f, (q31_t)0x475e2d30, (q31_t)0x4758f5d5, (q31_t)0x4753be4e, + (q31_t)0x474e869b, (q31_t)0x47494ebc, + (q31_t)0x474416b1, (q31_t)0x473ede7a, (q31_t)0x4739a617, (q31_t)0x47346d89, (q31_t)0x472f34ce, (q31_t)0x4729fbe7, + (q31_t)0x4724c2d5, (q31_t)0x471f8996, + (q31_t)0x471a502c, (q31_t)0x47151696, (q31_t)0x470fdcd4, (q31_t)0x470aa2e6, (q31_t)0x470568cd, (q31_t)0x47002e87, + (q31_t)0x46faf416, (q31_t)0x46f5b979, + (q31_t)0x46f07eb0, (q31_t)0x46eb43bc, (q31_t)0x46e6089b, (q31_t)0x46e0cd4f, (q31_t)0x46db91d8, (q31_t)0x46d65634, + (q31_t)0x46d11a65, (q31_t)0x46cbde6a, + (q31_t)0x46c6a244, (q31_t)0x46c165f1, (q31_t)0x46bc2974, (q31_t)0x46b6ecca, (q31_t)0x46b1aff5, (q31_t)0x46ac72f4, + (q31_t)0x46a735c8, (q31_t)0x46a1f870, + (q31_t)0x469cbaed, (q31_t)0x46977d3e, (q31_t)0x46923f63, (q31_t)0x468d015d, (q31_t)0x4687c32c, (q31_t)0x468284cf, + (q31_t)0x467d4646, (q31_t)0x46780792, + (q31_t)0x4672c8b3, (q31_t)0x466d89a8, (q31_t)0x46684a71, (q31_t)0x46630b0f, (q31_t)0x465dcb82, (q31_t)0x46588bc9, + (q31_t)0x46534be5, (q31_t)0x464e0bd6, + (q31_t)0x4648cb9b, (q31_t)0x46438b35, (q31_t)0x463e4aa3, (q31_t)0x463909e7, (q31_t)0x4633c8fe, (q31_t)0x462e87eb, + (q31_t)0x462946ac, (q31_t)0x46240542, + (q31_t)0x461ec3ad, (q31_t)0x461981ec, (q31_t)0x46144001, (q31_t)0x460efde9, (q31_t)0x4609bba7, (q31_t)0x4604793a, + (q31_t)0x45ff36a1, (q31_t)0x45f9f3dd, + (q31_t)0x45f4b0ee, (q31_t)0x45ef6dd4, (q31_t)0x45ea2a8f, (q31_t)0x45e4e71f, (q31_t)0x45dfa383, (q31_t)0x45da5fbc, + (q31_t)0x45d51bcb, (q31_t)0x45cfd7ae, + (q31_t)0x45ca9366, (q31_t)0x45c54ef3, (q31_t)0x45c00a55, (q31_t)0x45bac58c, (q31_t)0x45b58098, (q31_t)0x45b03b79, + (q31_t)0x45aaf630, (q31_t)0x45a5b0bb, + (q31_t)0x45a06b1b, (q31_t)0x459b2550, (q31_t)0x4595df5a, (q31_t)0x45909939, (q31_t)0x458b52ee, (q31_t)0x45860c77, + (q31_t)0x4580c5d6, (q31_t)0x457b7f0a, + (q31_t)0x45763813, (q31_t)0x4570f0f1, (q31_t)0x456ba9a4, (q31_t)0x4566622c, (q31_t)0x45611a8a, (q31_t)0x455bd2bc, + (q31_t)0x45568ac4, (q31_t)0x455142a2, + (q31_t)0x454bfa54, (q31_t)0x4546b1dc, (q31_t)0x45416939, (q31_t)0x453c206b, (q31_t)0x4536d773, (q31_t)0x45318e4f, + (q31_t)0x452c4502, (q31_t)0x4526fb89, + (q31_t)0x4521b1e6, (q31_t)0x451c6818, (q31_t)0x45171e20, (q31_t)0x4511d3fd, (q31_t)0x450c89af, (q31_t)0x45073f37, + (q31_t)0x4501f494, (q31_t)0x44fca9c6, + (q31_t)0x44f75ecf, (q31_t)0x44f213ac, (q31_t)0x44ecc85f, (q31_t)0x44e77ce7, (q31_t)0x44e23145, (q31_t)0x44dce579, + (q31_t)0x44d79982, (q31_t)0x44d24d60, + (q31_t)0x44cd0114, (q31_t)0x44c7b49e, (q31_t)0x44c267fd, (q31_t)0x44bd1b32, (q31_t)0x44b7ce3c, (q31_t)0x44b2811c, + (q31_t)0x44ad33d2, (q31_t)0x44a7e65d, + (q31_t)0x44a298be, (q31_t)0x449d4af5, (q31_t)0x4497fd01, (q31_t)0x4492aee3, (q31_t)0x448d609b, (q31_t)0x44881228, + (q31_t)0x4482c38b, (q31_t)0x447d74c4, + (q31_t)0x447825d2, (q31_t)0x4472d6b7, (q31_t)0x446d8771, (q31_t)0x44683801, (q31_t)0x4462e866, (q31_t)0x445d98a2, + (q31_t)0x445848b3, (q31_t)0x4452f89b, + (q31_t)0x444da858, (q31_t)0x444857ea, (q31_t)0x44430753, (q31_t)0x443db692, (q31_t)0x443865a7, (q31_t)0x44331491, + (q31_t)0x442dc351, (q31_t)0x442871e8, + (q31_t)0x44232054, (q31_t)0x441dce96, (q31_t)0x44187caf, (q31_t)0x44132a9d, (q31_t)0x440dd861, (q31_t)0x440885fc, + (q31_t)0x4403336c, (q31_t)0x43fde0b2, + (q31_t)0x43f88dcf, (q31_t)0x43f33ac1, (q31_t)0x43ede78a, (q31_t)0x43e89429, (q31_t)0x43e3409d, (q31_t)0x43ddece8, + (q31_t)0x43d8990a, (q31_t)0x43d34501, + (q31_t)0x43cdf0ce, (q31_t)0x43c89c72, (q31_t)0x43c347eb, (q31_t)0x43bdf33b, (q31_t)0x43b89e62, (q31_t)0x43b3495e, + (q31_t)0x43adf431, (q31_t)0x43a89ed9, + (q31_t)0x43a34959, (q31_t)0x439df3ae, (q31_t)0x43989dda, (q31_t)0x439347dc, (q31_t)0x438df1b4, (q31_t)0x43889b63, + (q31_t)0x438344e8, (q31_t)0x437dee43, + (q31_t)0x43789775, (q31_t)0x4373407d, (q31_t)0x436de95b, (q31_t)0x43689210, (q31_t)0x43633a9c, (q31_t)0x435de2fd, + (q31_t)0x43588b36, (q31_t)0x43533344, + (q31_t)0x434ddb29, (q31_t)0x434882e5, (q31_t)0x43432a77, (q31_t)0x433dd1e0, (q31_t)0x4338791f, (q31_t)0x43332035, + (q31_t)0x432dc721, (q31_t)0x43286de4, + (q31_t)0x4323147d, (q31_t)0x431dbaed, (q31_t)0x43186133, (q31_t)0x43130751, (q31_t)0x430dad44, (q31_t)0x4308530f, + (q31_t)0x4302f8b0, (q31_t)0x42fd9e28, + (q31_t)0x42f84376, (q31_t)0x42f2e89b, (q31_t)0x42ed8d97, (q31_t)0x42e83269, (q31_t)0x42e2d713, (q31_t)0x42dd7b93, + (q31_t)0x42d81fe9, (q31_t)0x42d2c417, + (q31_t)0x42cd681b, (q31_t)0x42c80bf6, (q31_t)0x42c2afa8, (q31_t)0x42bd5331, (q31_t)0x42b7f690, (q31_t)0x42b299c7, + (q31_t)0x42ad3cd4, (q31_t)0x42a7dfb8, + (q31_t)0x42a28273, (q31_t)0x429d2505, (q31_t)0x4297c76e, (q31_t)0x429269ae, (q31_t)0x428d0bc4, (q31_t)0x4287adb2, + (q31_t)0x42824f76, (q31_t)0x427cf112, + (q31_t)0x42779285, (q31_t)0x427233ce, (q31_t)0x426cd4ef, (q31_t)0x426775e6, (q31_t)0x426216b5, (q31_t)0x425cb75a, + (q31_t)0x425757d7, (q31_t)0x4251f82b, + (q31_t)0x424c9856, (q31_t)0x42473858, (q31_t)0x4241d831, (q31_t)0x423c77e1, (q31_t)0x42371769, (q31_t)0x4231b6c7, + (q31_t)0x422c55fd, (q31_t)0x4226f50a, + (q31_t)0x422193ee, (q31_t)0x421c32a9, (q31_t)0x4216d13c, (q31_t)0x42116fa5, (q31_t)0x420c0de6, (q31_t)0x4206abfe, + (q31_t)0x420149ee, (q31_t)0x41fbe7b5, + (q31_t)0x41f68553, (q31_t)0x41f122c8, (q31_t)0x41ebc015, (q31_t)0x41e65d39, (q31_t)0x41e0fa35, (q31_t)0x41db9707, + (q31_t)0x41d633b1, (q31_t)0x41d0d033, + (q31_t)0x41cb6c8c, (q31_t)0x41c608bc, (q31_t)0x41c0a4c4, (q31_t)0x41bb40a3, (q31_t)0x41b5dc5a, (q31_t)0x41b077e8, + (q31_t)0x41ab134e, (q31_t)0x41a5ae8b, + (q31_t)0x41a049a0, (q31_t)0x419ae48c, (q31_t)0x41957f4f, (q31_t)0x419019eb, (q31_t)0x418ab45d, (q31_t)0x41854ea8, + (q31_t)0x417fe8ca, (q31_t)0x417a82c3, + (q31_t)0x41751c94, (q31_t)0x416fb63d, (q31_t)0x416a4fbd, (q31_t)0x4164e916, (q31_t)0x415f8245, (q31_t)0x415a1b4d, + (q31_t)0x4154b42c, (q31_t)0x414f4ce2, + (q31_t)0x4149e571, (q31_t)0x41447dd7, (q31_t)0x413f1615, (q31_t)0x4139ae2b, (q31_t)0x41344618, (q31_t)0x412edddd, + (q31_t)0x4129757b, (q31_t)0x41240cef, + (q31_t)0x411ea43c, (q31_t)0x41193b61, (q31_t)0x4113d25d, (q31_t)0x410e6931, (q31_t)0x4108ffdd, (q31_t)0x41039661, + (q31_t)0x40fe2cbd, (q31_t)0x40f8c2f1, + (q31_t)0x40f358fc, (q31_t)0x40edeee0, (q31_t)0x40e8849b, (q31_t)0x40e31a2f, (q31_t)0x40ddaf9b, (q31_t)0x40d844de, + (q31_t)0x40d2d9f9, (q31_t)0x40cd6eed, + (q31_t)0x40c803b8, (q31_t)0x40c2985c, (q31_t)0x40bd2cd8, (q31_t)0x40b7c12b, (q31_t)0x40b25557, (q31_t)0x40ace95b, + (q31_t)0x40a77d37, (q31_t)0x40a210eb, + (q31_t)0x409ca477, (q31_t)0x409737dc, (q31_t)0x4091cb18, (q31_t)0x408c5e2d, (q31_t)0x4086f11a, (q31_t)0x408183df, + (q31_t)0x407c167c, (q31_t)0x4076a8f1, + (q31_t)0x40713b3f, (q31_t)0x406bcd65, (q31_t)0x40665f63, (q31_t)0x4060f13a, (q31_t)0x405b82e9, (q31_t)0x40561470, + (q31_t)0x4050a5cf, (q31_t)0x404b3707, + (q31_t)0x4045c817, (q31_t)0x404058ff, (q31_t)0x403ae9c0, (q31_t)0x40357a59, (q31_t)0x40300acb, (q31_t)0x402a9b15, + (q31_t)0x40252b37, (q31_t)0x401fbb32, + (q31_t)0x401a4b05, (q31_t)0x4014dab1, (q31_t)0x400f6a35, (q31_t)0x4009f992, (q31_t)0x400488c7, (q31_t)0x3fff17d5, + (q31_t)0x3ff9a6bb, (q31_t)0x3ff4357a, + (q31_t)0x3feec411, (q31_t)0x3fe95281, (q31_t)0x3fe3e0c9, (q31_t)0x3fde6eeb, (q31_t)0x3fd8fce4, (q31_t)0x3fd38ab6, + (q31_t)0x3fce1861, (q31_t)0x3fc8a5e5, + (q31_t)0x3fc33341, (q31_t)0x3fbdc076, (q31_t)0x3fb84d83, (q31_t)0x3fb2da6a, (q31_t)0x3fad6729, (q31_t)0x3fa7f3c0, + (q31_t)0x3fa28031, (q31_t)0x3f9d0c7a, + (q31_t)0x3f97989c, (q31_t)0x3f922496, (q31_t)0x3f8cb06a, (q31_t)0x3f873c16, (q31_t)0x3f81c79b, (q31_t)0x3f7c52f9, + (q31_t)0x3f76de30, (q31_t)0x3f71693f, + (q31_t)0x3f6bf428, (q31_t)0x3f667ee9, (q31_t)0x3f610983, (q31_t)0x3f5b93f6, (q31_t)0x3f561e42, (q31_t)0x3f50a867, + (q31_t)0x3f4b3265, (q31_t)0x3f45bc3c, + (q31_t)0x3f4045ec, (q31_t)0x3f3acf75, (q31_t)0x3f3558d7, (q31_t)0x3f2fe211, (q31_t)0x3f2a6b25, (q31_t)0x3f24f412, + (q31_t)0x3f1f7cd8, (q31_t)0x3f1a0577, + (q31_t)0x3f148def, (q31_t)0x3f0f1640, (q31_t)0x3f099e6b, (q31_t)0x3f04266e, (q31_t)0x3efeae4a, (q31_t)0x3ef93600, + (q31_t)0x3ef3bd8f, (q31_t)0x3eee44f7, + (q31_t)0x3ee8cc38, (q31_t)0x3ee35352, (q31_t)0x3eddda46, (q31_t)0x3ed86113, (q31_t)0x3ed2e7b9, (q31_t)0x3ecd6e38, + (q31_t)0x3ec7f491, (q31_t)0x3ec27ac2, + (q31_t)0x3ebd00cd, (q31_t)0x3eb786b2, (q31_t)0x3eb20c6f, (q31_t)0x3eac9206, (q31_t)0x3ea71777, (q31_t)0x3ea19cc1, + (q31_t)0x3e9c21e4, (q31_t)0x3e96a6e0, + (q31_t)0x3e912bb6, (q31_t)0x3e8bb065, (q31_t)0x3e8634ee, (q31_t)0x3e80b950, (q31_t)0x3e7b3d8c, (q31_t)0x3e75c1a1, + (q31_t)0x3e70458f, (q31_t)0x3e6ac957, + (q31_t)0x3e654cf8, (q31_t)0x3e5fd073, (q31_t)0x3e5a53c8, (q31_t)0x3e54d6f6, (q31_t)0x3e4f59fe, (q31_t)0x3e49dcdf, + (q31_t)0x3e445f99, (q31_t)0x3e3ee22e, + (q31_t)0x3e39649c, (q31_t)0x3e33e6e3, (q31_t)0x3e2e6904, (q31_t)0x3e28eaff, (q31_t)0x3e236cd4, (q31_t)0x3e1dee82, + (q31_t)0x3e18700a, (q31_t)0x3e12f16b, + (q31_t)0x3e0d72a6, (q31_t)0x3e07f3bb, (q31_t)0x3e0274aa, (q31_t)0x3dfcf572, (q31_t)0x3df77615, (q31_t)0x3df1f691, + (q31_t)0x3dec76e6, (q31_t)0x3de6f716, + (q31_t)0x3de1771f, (q31_t)0x3ddbf703, (q31_t)0x3dd676c0, (q31_t)0x3dd0f656, (q31_t)0x3dcb75c7, (q31_t)0x3dc5f512, + (q31_t)0x3dc07436, (q31_t)0x3dbaf335, + (q31_t)0x3db5720d, (q31_t)0x3daff0c0, (q31_t)0x3daa6f4c, (q31_t)0x3da4edb2, (q31_t)0x3d9f6bf2, (q31_t)0x3d99ea0d, + (q31_t)0x3d946801, (q31_t)0x3d8ee5cf, + (q31_t)0x3d896377, (q31_t)0x3d83e0f9, (q31_t)0x3d7e5e56, (q31_t)0x3d78db8c, (q31_t)0x3d73589d, (q31_t)0x3d6dd587, + (q31_t)0x3d68524c, (q31_t)0x3d62ceeb, + (q31_t)0x3d5d4b64, (q31_t)0x3d57c7b7, (q31_t)0x3d5243e4, (q31_t)0x3d4cbfeb, (q31_t)0x3d473bcd, (q31_t)0x3d41b789, + (q31_t)0x3d3c331f, (q31_t)0x3d36ae8f, + (q31_t)0x3d3129da, (q31_t)0x3d2ba4fe, (q31_t)0x3d261ffd, (q31_t)0x3d209ad7, (q31_t)0x3d1b158a, (q31_t)0x3d159018, + (q31_t)0x3d100a80, (q31_t)0x3d0a84c3, + (q31_t)0x3d04fee0, (q31_t)0x3cff78d7, (q31_t)0x3cf9f2a9, (q31_t)0x3cf46c55, (q31_t)0x3ceee5db, (q31_t)0x3ce95f3c, + (q31_t)0x3ce3d877, (q31_t)0x3cde518d, + (q31_t)0x3cd8ca7d, (q31_t)0x3cd34347, (q31_t)0x3ccdbbed, (q31_t)0x3cc8346c, (q31_t)0x3cc2acc6, (q31_t)0x3cbd24fb, + (q31_t)0x3cb79d0a, (q31_t)0x3cb214f4, + (q31_t)0x3cac8cb8, (q31_t)0x3ca70457, (q31_t)0x3ca17bd0, (q31_t)0x3c9bf324, (q31_t)0x3c966a53, (q31_t)0x3c90e15c, + (q31_t)0x3c8b5840, (q31_t)0x3c85cefe, + (q31_t)0x3c804598, (q31_t)0x3c7abc0c, (q31_t)0x3c75325a, (q31_t)0x3c6fa883, (q31_t)0x3c6a1e87, (q31_t)0x3c649466, + (q31_t)0x3c5f0a20, (q31_t)0x3c597fb4, + (q31_t)0x3c53f523, (q31_t)0x3c4e6a6d, (q31_t)0x3c48df91, (q31_t)0x3c435491, (q31_t)0x3c3dc96b, (q31_t)0x3c383e20, + (q31_t)0x3c32b2b0, (q31_t)0x3c2d271b, + (q31_t)0x3c279b61, (q31_t)0x3c220f81, (q31_t)0x3c1c837d, (q31_t)0x3c16f753, (q31_t)0x3c116b04, (q31_t)0x3c0bde91, + (q31_t)0x3c0651f8, (q31_t)0x3c00c53a, + (q31_t)0x3bfb3857, (q31_t)0x3bf5ab50, (q31_t)0x3bf01e23, (q31_t)0x3bea90d1, (q31_t)0x3be5035a, (q31_t)0x3bdf75bf, + (q31_t)0x3bd9e7fe, (q31_t)0x3bd45a19, + (q31_t)0x3bcecc0e, (q31_t)0x3bc93ddf, (q31_t)0x3bc3af8b, (q31_t)0x3bbe2112, (q31_t)0x3bb89274, (q31_t)0x3bb303b1, + (q31_t)0x3bad74c9, (q31_t)0x3ba7e5bd, + (q31_t)0x3ba2568c, (q31_t)0x3b9cc736, (q31_t)0x3b9737bb, (q31_t)0x3b91a81c, (q31_t)0x3b8c1857, (q31_t)0x3b86886e, + (q31_t)0x3b80f861, (q31_t)0x3b7b682e, + (q31_t)0x3b75d7d7, (q31_t)0x3b70475c, (q31_t)0x3b6ab6bb, (q31_t)0x3b6525f6, (q31_t)0x3b5f950c, (q31_t)0x3b5a03fe, + (q31_t)0x3b5472cb, (q31_t)0x3b4ee173, + (q31_t)0x3b494ff7, (q31_t)0x3b43be57, (q31_t)0x3b3e2c91, (q31_t)0x3b389aa8, (q31_t)0x3b330899, (q31_t)0x3b2d7666, + (q31_t)0x3b27e40f, (q31_t)0x3b225193, + (q31_t)0x3b1cbef3, (q31_t)0x3b172c2e, (q31_t)0x3b119945, (q31_t)0x3b0c0637, (q31_t)0x3b067305, (q31_t)0x3b00dfaf, + (q31_t)0x3afb4c34, (q31_t)0x3af5b894, + (q31_t)0x3af024d1, (q31_t)0x3aea90e9, (q31_t)0x3ae4fcdc, (q31_t)0x3adf68ac, (q31_t)0x3ad9d457, (q31_t)0x3ad43fdd, + (q31_t)0x3aceab40, (q31_t)0x3ac9167e, + (q31_t)0x3ac38198, (q31_t)0x3abdec8d, (q31_t)0x3ab8575f, (q31_t)0x3ab2c20c, (q31_t)0x3aad2c95, (q31_t)0x3aa796fa, + (q31_t)0x3aa2013a, (q31_t)0x3a9c6b57, + (q31_t)0x3a96d54f, (q31_t)0x3a913f23, (q31_t)0x3a8ba8d3, (q31_t)0x3a86125f, (q31_t)0x3a807bc7, (q31_t)0x3a7ae50a, + (q31_t)0x3a754e2a, (q31_t)0x3a6fb726, + (q31_t)0x3a6a1ffd, (q31_t)0x3a6488b1, (q31_t)0x3a5ef140, (q31_t)0x3a5959ab, (q31_t)0x3a53c1f3, (q31_t)0x3a4e2a16, + (q31_t)0x3a489216, (q31_t)0x3a42f9f2, + (q31_t)0x3a3d61a9, (q31_t)0x3a37c93d, (q31_t)0x3a3230ad, (q31_t)0x3a2c97f9, (q31_t)0x3a26ff21, (q31_t)0x3a216625, + (q31_t)0x3a1bcd05, (q31_t)0x3a1633c1, + (q31_t)0x3a109a5a, (q31_t)0x3a0b00cf, (q31_t)0x3a056720, (q31_t)0x39ffcd4d, (q31_t)0x39fa3356, (q31_t)0x39f4993c, + (q31_t)0x39eefefe, (q31_t)0x39e9649c, + (q31_t)0x39e3ca17, (q31_t)0x39de2f6d, (q31_t)0x39d894a0, (q31_t)0x39d2f9b0, (q31_t)0x39cd5e9b, (q31_t)0x39c7c363, + (q31_t)0x39c22808, (q31_t)0x39bc8c89, + (q31_t)0x39b6f0e6, (q31_t)0x39b1551f, (q31_t)0x39abb935, (q31_t)0x39a61d28, (q31_t)0x39a080f6, (q31_t)0x399ae4a2, + (q31_t)0x39954829, (q31_t)0x398fab8e, + (q31_t)0x398a0ece, (q31_t)0x398471ec, (q31_t)0x397ed4e5, (q31_t)0x397937bc, (q31_t)0x39739a6e, (q31_t)0x396dfcfe, + (q31_t)0x39685f6a, (q31_t)0x3962c1b2, + (q31_t)0x395d23d7, (q31_t)0x395785d9, (q31_t)0x3951e7b8, (q31_t)0x394c4973, (q31_t)0x3946ab0a, (q31_t)0x39410c7f, + (q31_t)0x393b6dd0, (q31_t)0x3935cefd, + (q31_t)0x39303008, (q31_t)0x392a90ef, (q31_t)0x3924f1b3, (q31_t)0x391f5254, (q31_t)0x3919b2d1, (q31_t)0x3914132b, + (q31_t)0x390e7362, (q31_t)0x3908d376, + (q31_t)0x39033367, (q31_t)0x38fd9334, (q31_t)0x38f7f2de, (q31_t)0x38f25266, (q31_t)0x38ecb1ca, (q31_t)0x38e7110a, + (q31_t)0x38e17028, (q31_t)0x38dbcf23, + (q31_t)0x38d62dfb, (q31_t)0x38d08caf, (q31_t)0x38caeb41, (q31_t)0x38c549af, (q31_t)0x38bfa7fb, (q31_t)0x38ba0623, + (q31_t)0x38b46429, (q31_t)0x38aec20b, + (q31_t)0x38a91fcb, (q31_t)0x38a37d67, (q31_t)0x389ddae1, (q31_t)0x38983838, (q31_t)0x3892956c, (q31_t)0x388cf27d, + (q31_t)0x38874f6b, (q31_t)0x3881ac36, + (q31_t)0x387c08de, (q31_t)0x38766564, (q31_t)0x3870c1c6, (q31_t)0x386b1e06, (q31_t)0x38657a23, (q31_t)0x385fd61d, + (q31_t)0x385a31f5, (q31_t)0x38548daa, + (q31_t)0x384ee93b, (q31_t)0x384944ab, (q31_t)0x38439ff7, (q31_t)0x383dfb21, (q31_t)0x38385628, (q31_t)0x3832b10d, + (q31_t)0x382d0bce, (q31_t)0x3827666d, + (q31_t)0x3821c0ea, (q31_t)0x381c1b44, (q31_t)0x3816757b, (q31_t)0x3810cf90, (q31_t)0x380b2982, (q31_t)0x38058351, + (q31_t)0x37ffdcfe, (q31_t)0x37fa3688, + (q31_t)0x37f48ff0, (q31_t)0x37eee936, (q31_t)0x37e94259, (q31_t)0x37e39b59, (q31_t)0x37ddf437, (q31_t)0x37d84cf2, + (q31_t)0x37d2a58b, (q31_t)0x37ccfe02, + (q31_t)0x37c75656, (q31_t)0x37c1ae87, (q31_t)0x37bc0697, (q31_t)0x37b65e84, (q31_t)0x37b0b64e, (q31_t)0x37ab0df6, + (q31_t)0x37a5657c, (q31_t)0x379fbce0, + (q31_t)0x379a1421, (q31_t)0x37946b40, (q31_t)0x378ec23d, (q31_t)0x37891917, (q31_t)0x37836fcf, (q31_t)0x377dc665, + (q31_t)0x37781cd9, (q31_t)0x3772732a, + (q31_t)0x376cc959, (q31_t)0x37671f66, (q31_t)0x37617551, (q31_t)0x375bcb1a, (q31_t)0x375620c1, (q31_t)0x37507645, + (q31_t)0x374acba7, (q31_t)0x374520e7, + (q31_t)0x373f7606, (q31_t)0x3739cb02, (q31_t)0x37341fdc, (q31_t)0x372e7493, (q31_t)0x3728c929, (q31_t)0x37231d9d, + (q31_t)0x371d71ef, (q31_t)0x3717c61f, + (q31_t)0x37121a2d, (q31_t)0x370c6e19, (q31_t)0x3706c1e2, (q31_t)0x3701158a, (q31_t)0x36fb6910, (q31_t)0x36f5bc75, + (q31_t)0x36f00fb7, (q31_t)0x36ea62d7, + (q31_t)0x36e4b5d6, (q31_t)0x36df08b2, (q31_t)0x36d95b6d, (q31_t)0x36d3ae06, (q31_t)0x36ce007d, (q31_t)0x36c852d2, + (q31_t)0x36c2a506, (q31_t)0x36bcf718, + (q31_t)0x36b74908, (q31_t)0x36b19ad6, (q31_t)0x36abec82, (q31_t)0x36a63e0d, (q31_t)0x36a08f76, (q31_t)0x369ae0bd, + (q31_t)0x369531e3, (q31_t)0x368f82e7, + (q31_t)0x3689d3c9, (q31_t)0x3684248a, (q31_t)0x367e7529, (q31_t)0x3678c5a7, (q31_t)0x36731602, (q31_t)0x366d663d, + (q31_t)0x3667b655, (q31_t)0x3662064c, + (q31_t)0x365c5622, (q31_t)0x3656a5d6, (q31_t)0x3650f569, (q31_t)0x364b44da, (q31_t)0x36459429, (q31_t)0x363fe357, + (q31_t)0x363a3264, (q31_t)0x3634814f, + (q31_t)0x362ed019, (q31_t)0x36291ec1, (q31_t)0x36236d48, (q31_t)0x361dbbad, (q31_t)0x361809f1, (q31_t)0x36125814, + (q31_t)0x360ca615, (q31_t)0x3606f3f5, + (q31_t)0x360141b4, (q31_t)0x35fb8f52, (q31_t)0x35f5dcce, (q31_t)0x35f02a28, (q31_t)0x35ea7762, (q31_t)0x35e4c47a, + (q31_t)0x35df1171, (q31_t)0x35d95e47, + (q31_t)0x35d3aafc, (q31_t)0x35cdf78f, (q31_t)0x35c84401, (q31_t)0x35c29052, (q31_t)0x35bcdc82, (q31_t)0x35b72891, + (q31_t)0x35b1747e, (q31_t)0x35abc04b, + (q31_t)0x35a60bf6, (q31_t)0x35a05781, (q31_t)0x359aa2ea, (q31_t)0x3594ee32, (q31_t)0x358f3959, (q31_t)0x3589845f, + (q31_t)0x3583cf44, (q31_t)0x357e1a08, + (q31_t)0x357864ab, (q31_t)0x3572af2d, (q31_t)0x356cf98e, (q31_t)0x356743ce, (q31_t)0x35618ded, (q31_t)0x355bd7eb, + (q31_t)0x355621c9, (q31_t)0x35506b85, + (q31_t)0x354ab520, (q31_t)0x3544fe9b, (q31_t)0x353f47f5, (q31_t)0x3539912e, (q31_t)0x3533da46, (q31_t)0x352e233d, + (q31_t)0x35286c14, (q31_t)0x3522b4c9, + (q31_t)0x351cfd5e, (q31_t)0x351745d2, (q31_t)0x35118e26, (q31_t)0x350bd658, (q31_t)0x35061e6a, (q31_t)0x3500665c, + (q31_t)0x34faae2c, (q31_t)0x34f4f5dc, + (q31_t)0x34ef3d6b, (q31_t)0x34e984da, (q31_t)0x34e3cc28, (q31_t)0x34de1355, (q31_t)0x34d85a62, (q31_t)0x34d2a14e, + (q31_t)0x34cce819, (q31_t)0x34c72ec4, + (q31_t)0x34c1754e, (q31_t)0x34bbbbb8, (q31_t)0x34b60202, (q31_t)0x34b0482a, (q31_t)0x34aa8e33, (q31_t)0x34a4d41a, + (q31_t)0x349f19e2, (q31_t)0x34995f88, + (q31_t)0x3493a50f, (q31_t)0x348dea75, (q31_t)0x34882fba, (q31_t)0x348274e0, (q31_t)0x347cb9e4, (q31_t)0x3476fec9, + (q31_t)0x3471438d, (q31_t)0x346b8830, + (q31_t)0x3465ccb4, (q31_t)0x34601117, (q31_t)0x345a5559, (q31_t)0x3454997c, (q31_t)0x344edd7e, (q31_t)0x34492160, + (q31_t)0x34436521, (q31_t)0x343da8c3, + (q31_t)0x3437ec44, (q31_t)0x34322fa5, (q31_t)0x342c72e6, (q31_t)0x3426b606, (q31_t)0x3420f907, (q31_t)0x341b3be7, + (q31_t)0x34157ea7, (q31_t)0x340fc147, + (q31_t)0x340a03c7, (q31_t)0x34044626, (q31_t)0x33fe8866, (q31_t)0x33f8ca86, (q31_t)0x33f30c85, (q31_t)0x33ed4e65, + (q31_t)0x33e79024, (q31_t)0x33e1d1c4, + (q31_t)0x33dc1343, (q31_t)0x33d654a2, (q31_t)0x33d095e2, (q31_t)0x33cad701, (q31_t)0x33c51801, (q31_t)0x33bf58e1, + (q31_t)0x33b999a0, (q31_t)0x33b3da40, + (q31_t)0x33ae1ac0, (q31_t)0x33a85b20, (q31_t)0x33a29b60, (q31_t)0x339cdb81, (q31_t)0x33971b81, (q31_t)0x33915b62, + (q31_t)0x338b9b22, (q31_t)0x3385dac4, + (q31_t)0x33801a45, (q31_t)0x337a59a6, (q31_t)0x337498e8, (q31_t)0x336ed80a, (q31_t)0x3369170c, (q31_t)0x336355ef, + (q31_t)0x335d94b2, (q31_t)0x3357d355, + (q31_t)0x335211d8, (q31_t)0x334c503c, (q31_t)0x33468e80, (q31_t)0x3340cca5, (q31_t)0x333b0aaa, (q31_t)0x3335488f, + (q31_t)0x332f8655, (q31_t)0x3329c3fb, + (q31_t)0x33240182, (q31_t)0x331e3ee9, (q31_t)0x33187c31, (q31_t)0x3312b959, (q31_t)0x330cf661, (q31_t)0x3307334a, + (q31_t)0x33017014, (q31_t)0x32fbacbe, + (q31_t)0x32f5e948, (q31_t)0x32f025b4, (q31_t)0x32ea61ff, (q31_t)0x32e49e2c, (q31_t)0x32deda39, (q31_t)0x32d91626, + (q31_t)0x32d351f5, (q31_t)0x32cd8da4, + (q31_t)0x32c7c933, (q31_t)0x32c204a3, (q31_t)0x32bc3ff4, (q31_t)0x32b67b26, (q31_t)0x32b0b638, (q31_t)0x32aaf12b, + (q31_t)0x32a52bff, (q31_t)0x329f66b4, + (q31_t)0x3299a149, (q31_t)0x3293dbbf, (q31_t)0x328e1616, (q31_t)0x3288504e, (q31_t)0x32828a67, (q31_t)0x327cc460, + (q31_t)0x3276fe3a, (q31_t)0x327137f6, + (q31_t)0x326b7192, (q31_t)0x3265ab0f, (q31_t)0x325fe46c, (q31_t)0x325a1dab, (q31_t)0x325456cb, (q31_t)0x324e8fcc, + (q31_t)0x3248c8ad, (q31_t)0x32430170, + (q31_t)0x323d3a14, (q31_t)0x32377298, (q31_t)0x3231aafe, (q31_t)0x322be345, (q31_t)0x32261b6c, (q31_t)0x32205375, + (q31_t)0x321a8b5f, (q31_t)0x3214c32a, + (q31_t)0x320efad6, (q31_t)0x32093263, (q31_t)0x320369d2, (q31_t)0x31fda121, (q31_t)0x31f7d852, (q31_t)0x31f20f64, + (q31_t)0x31ec4657, (q31_t)0x31e67d2b, + (q31_t)0x31e0b3e0, (q31_t)0x31daea77, (q31_t)0x31d520ef, (q31_t)0x31cf5748, (q31_t)0x31c98d83, (q31_t)0x31c3c39e, + (q31_t)0x31bdf99b, (q31_t)0x31b82f7a, + (q31_t)0x31b2653a, (q31_t)0x31ac9adb, (q31_t)0x31a6d05d, (q31_t)0x31a105c1, (q31_t)0x319b3b06, (q31_t)0x3195702d, + (q31_t)0x318fa535, (q31_t)0x3189da1e, + (q31_t)0x31840ee9, (q31_t)0x317e4395, (q31_t)0x31787823, (q31_t)0x3172ac92, (q31_t)0x316ce0e3, (q31_t)0x31671515, + (q31_t)0x31614929, (q31_t)0x315b7d1e, + (q31_t)0x3155b0f5, (q31_t)0x314fe4ae, (q31_t)0x314a1848, (q31_t)0x31444bc3, (q31_t)0x313e7f21, (q31_t)0x3138b260, + (q31_t)0x3132e580, (q31_t)0x312d1882, + (q31_t)0x31274b66, (q31_t)0x31217e2c, (q31_t)0x311bb0d3, (q31_t)0x3115e35c, (q31_t)0x311015c6, (q31_t)0x310a4813, + (q31_t)0x31047a41, (q31_t)0x30feac51, + (q31_t)0x30f8de42, (q31_t)0x30f31016, (q31_t)0x30ed41cb, (q31_t)0x30e77362, (q31_t)0x30e1a4db, (q31_t)0x30dbd636, + (q31_t)0x30d60772, (q31_t)0x30d03891, + (q31_t)0x30ca6991, (q31_t)0x30c49a74, (q31_t)0x30becb38, (q31_t)0x30b8fbde, (q31_t)0x30b32c66, (q31_t)0x30ad5cd0, + (q31_t)0x30a78d1c, (q31_t)0x30a1bd4a, + (q31_t)0x309bed5a, (q31_t)0x30961d4c, (q31_t)0x30904d20, (q31_t)0x308a7cd6, (q31_t)0x3084ac6e, (q31_t)0x307edbe9, + (q31_t)0x30790b45, (q31_t)0x30733a83, + (q31_t)0x306d69a4, (q31_t)0x306798a7, (q31_t)0x3061c78b, (q31_t)0x305bf652, (q31_t)0x305624fb, (q31_t)0x30505387, + (q31_t)0x304a81f4, (q31_t)0x3044b044, + (q31_t)0x303ede76, (q31_t)0x30390c8a, (q31_t)0x30333a80, (q31_t)0x302d6859, (q31_t)0x30279614, (q31_t)0x3021c3b1, + (q31_t)0x301bf131, (q31_t)0x30161e93, + (q31_t)0x30104bd7, (q31_t)0x300a78fe, (q31_t)0x3004a607, (q31_t)0x2ffed2f2, (q31_t)0x2ff8ffc0, (q31_t)0x2ff32c70, + (q31_t)0x2fed5902, (q31_t)0x2fe78577, + (q31_t)0x2fe1b1cf, (q31_t)0x2fdbde09, (q31_t)0x2fd60a25, (q31_t)0x2fd03624, (q31_t)0x2fca6206, (q31_t)0x2fc48dc9, + (q31_t)0x2fbeb970, (q31_t)0x2fb8e4f9, + (q31_t)0x2fb31064, (q31_t)0x2fad3bb3, (q31_t)0x2fa766e3, (q31_t)0x2fa191f7, (q31_t)0x2f9bbced, (q31_t)0x2f95e7c5, + (q31_t)0x2f901280, (q31_t)0x2f8a3d1e, + (q31_t)0x2f84679f, (q31_t)0x2f7e9202, (q31_t)0x2f78bc48, (q31_t)0x2f72e671, (q31_t)0x2f6d107c, (q31_t)0x2f673a6a, + (q31_t)0x2f61643b, (q31_t)0x2f5b8def, + (q31_t)0x2f55b785, (q31_t)0x2f4fe0ff, (q31_t)0x2f4a0a5b, (q31_t)0x2f44339a, (q31_t)0x2f3e5cbb, (q31_t)0x2f3885c0, + (q31_t)0x2f32aea8, (q31_t)0x2f2cd772, + (q31_t)0x2f27001f, (q31_t)0x2f2128af, (q31_t)0x2f1b5122, (q31_t)0x2f157979, (q31_t)0x2f0fa1b2, (q31_t)0x2f09c9ce, + (q31_t)0x2f03f1cd, (q31_t)0x2efe19ae, + (q31_t)0x2ef84173, (q31_t)0x2ef2691b, (q31_t)0x2eec90a7, (q31_t)0x2ee6b815, (q31_t)0x2ee0df66, (q31_t)0x2edb069a, + (q31_t)0x2ed52db1, (q31_t)0x2ecf54ac, + (q31_t)0x2ec97b89, (q31_t)0x2ec3a24a, (q31_t)0x2ebdc8ee, (q31_t)0x2eb7ef75, (q31_t)0x2eb215df, (q31_t)0x2eac3c2d, + (q31_t)0x2ea6625d, (q31_t)0x2ea08871, + (q31_t)0x2e9aae68, (q31_t)0x2e94d443, (q31_t)0x2e8efa00, (q31_t)0x2e891fa1, (q31_t)0x2e834525, (q31_t)0x2e7d6a8d, + (q31_t)0x2e778fd8, (q31_t)0x2e71b506, + (q31_t)0x2e6bda17, (q31_t)0x2e65ff0c, (q31_t)0x2e6023e5, (q31_t)0x2e5a48a0, (q31_t)0x2e546d3f, (q31_t)0x2e4e91c2, + (q31_t)0x2e48b628, (q31_t)0x2e42da71, + (q31_t)0x2e3cfe9e, (q31_t)0x2e3722ae, (q31_t)0x2e3146a2, (q31_t)0x2e2b6a79, (q31_t)0x2e258e34, (q31_t)0x2e1fb1d3, + (q31_t)0x2e19d554, (q31_t)0x2e13f8ba, + (q31_t)0x2e0e1c03, (q31_t)0x2e083f30, (q31_t)0x2e026240, (q31_t)0x2dfc8534, (q31_t)0x2df6a80b, (q31_t)0x2df0cac6, + (q31_t)0x2deaed65, (q31_t)0x2de50fe8, + (q31_t)0x2ddf324e, (q31_t)0x2dd95498, (q31_t)0x2dd376c5, (q31_t)0x2dcd98d7, (q31_t)0x2dc7bacc, (q31_t)0x2dc1dca4, + (q31_t)0x2dbbfe61, (q31_t)0x2db62001, + (q31_t)0x2db04186, (q31_t)0x2daa62ee, (q31_t)0x2da4843a, (q31_t)0x2d9ea569, (q31_t)0x2d98c67d, (q31_t)0x2d92e774, + (q31_t)0x2d8d084f, (q31_t)0x2d87290f, + (q31_t)0x2d8149b2, (q31_t)0x2d7b6a39, (q31_t)0x2d758aa4, (q31_t)0x2d6faaf3, (q31_t)0x2d69cb26, (q31_t)0x2d63eb3d, + (q31_t)0x2d5e0b38, (q31_t)0x2d582b17, + (q31_t)0x2d524ada, (q31_t)0x2d4c6a81, (q31_t)0x2d468a0c, (q31_t)0x2d40a97b, (q31_t)0x2d3ac8ce, (q31_t)0x2d34e805, + (q31_t)0x2d2f0721, (q31_t)0x2d292620, + (q31_t)0x2d234504, (q31_t)0x2d1d63cc, (q31_t)0x2d178278, (q31_t)0x2d11a108, (q31_t)0x2d0bbf7d, (q31_t)0x2d05ddd5, + (q31_t)0x2cfffc12, (q31_t)0x2cfa1a33, + (q31_t)0x2cf43839, (q31_t)0x2cee5622, (q31_t)0x2ce873f0, (q31_t)0x2ce291a2, (q31_t)0x2cdcaf39, (q31_t)0x2cd6ccb4, + (q31_t)0x2cd0ea13, (q31_t)0x2ccb0756, + (q31_t)0x2cc5247e, (q31_t)0x2cbf418b, (q31_t)0x2cb95e7b, (q31_t)0x2cb37b51, (q31_t)0x2cad980a, (q31_t)0x2ca7b4a8, + (q31_t)0x2ca1d12a, (q31_t)0x2c9bed91, + (q31_t)0x2c9609dd, (q31_t)0x2c90260d, (q31_t)0x2c8a4221, (q31_t)0x2c845e1a, (q31_t)0x2c7e79f7, (q31_t)0x2c7895b9, + (q31_t)0x2c72b160, (q31_t)0x2c6ccceb, + (q31_t)0x2c66e85b, (q31_t)0x2c6103af, (q31_t)0x2c5b1ee8, (q31_t)0x2c553a06, (q31_t)0x2c4f5508, (q31_t)0x2c496fef, + (q31_t)0x2c438abb, (q31_t)0x2c3da56b, + (q31_t)0x2c37c000, (q31_t)0x2c31da7a, (q31_t)0x2c2bf4d8, (q31_t)0x2c260f1c, (q31_t)0x2c202944, (q31_t)0x2c1a4351, + (q31_t)0x2c145d42, (q31_t)0x2c0e7719, + (q31_t)0x2c0890d4, (q31_t)0x2c02aa74, (q31_t)0x2bfcc3f9, (q31_t)0x2bf6dd63, (q31_t)0x2bf0f6b1, (q31_t)0x2beb0fe5, + (q31_t)0x2be528fd, (q31_t)0x2bdf41fb, + (q31_t)0x2bd95add, (q31_t)0x2bd373a4, (q31_t)0x2bcd8c51, (q31_t)0x2bc7a4e2, (q31_t)0x2bc1bd58, (q31_t)0x2bbbd5b3, + (q31_t)0x2bb5edf4, (q31_t)0x2bb00619, + (q31_t)0x2baa1e23, (q31_t)0x2ba43613, (q31_t)0x2b9e4de7, (q31_t)0x2b9865a1, (q31_t)0x2b927d3f, (q31_t)0x2b8c94c3, + (q31_t)0x2b86ac2c, (q31_t)0x2b80c37a, + (q31_t)0x2b7adaae, (q31_t)0x2b74f1c6, (q31_t)0x2b6f08c4, (q31_t)0x2b691fa6, (q31_t)0x2b63366f, (q31_t)0x2b5d4d1c, + (q31_t)0x2b5763ae, (q31_t)0x2b517a26, + (q31_t)0x2b4b9083, (q31_t)0x2b45a6c6, (q31_t)0x2b3fbced, (q31_t)0x2b39d2fa, (q31_t)0x2b33e8ed, (q31_t)0x2b2dfec5, + (q31_t)0x2b281482, (q31_t)0x2b222a24, + (q31_t)0x2b1c3fac, (q31_t)0x2b165519, (q31_t)0x2b106a6c, (q31_t)0x2b0a7fa4, (q31_t)0x2b0494c2, (q31_t)0x2afea9c5, + (q31_t)0x2af8bead, (q31_t)0x2af2d37b, + (q31_t)0x2aece82f, (q31_t)0x2ae6fcc8, (q31_t)0x2ae11146, (q31_t)0x2adb25aa, (q31_t)0x2ad539f4, (q31_t)0x2acf4e23, + (q31_t)0x2ac96238, (q31_t)0x2ac37633, + (q31_t)0x2abd8a13, (q31_t)0x2ab79dd8, (q31_t)0x2ab1b184, (q31_t)0x2aabc515, (q31_t)0x2aa5d88b, (q31_t)0x2a9febe8, + (q31_t)0x2a99ff2a, (q31_t)0x2a941252, + (q31_t)0x2a8e255f, (q31_t)0x2a883853, (q31_t)0x2a824b2c, (q31_t)0x2a7c5deb, (q31_t)0x2a76708f, (q31_t)0x2a70831a, + (q31_t)0x2a6a958a, (q31_t)0x2a64a7e0, + (q31_t)0x2a5eba1c, (q31_t)0x2a58cc3e, (q31_t)0x2a52de46, (q31_t)0x2a4cf033, (q31_t)0x2a470207, (q31_t)0x2a4113c0, + (q31_t)0x2a3b2560, (q31_t)0x2a3536e5, + (q31_t)0x2a2f4850, (q31_t)0x2a2959a1, (q31_t)0x2a236ad9, (q31_t)0x2a1d7bf6, (q31_t)0x2a178cf9, (q31_t)0x2a119de2, + (q31_t)0x2a0baeb2, (q31_t)0x2a05bf67, + (q31_t)0x29ffd003, (q31_t)0x29f9e084, (q31_t)0x29f3f0ec, (q31_t)0x29ee013a, (q31_t)0x29e8116e, (q31_t)0x29e22188, + (q31_t)0x29dc3188, (q31_t)0x29d6416f, + (q31_t)0x29d0513b, (q31_t)0x29ca60ee, (q31_t)0x29c47087, (q31_t)0x29be8007, (q31_t)0x29b88f6c, (q31_t)0x29b29eb8, + (q31_t)0x29acadea, (q31_t)0x29a6bd02, + (q31_t)0x29a0cc01, (q31_t)0x299adae6, (q31_t)0x2994e9b1, (q31_t)0x298ef863, (q31_t)0x298906fb, (q31_t)0x2983157a, + (q31_t)0x297d23df, (q31_t)0x2977322a, + (q31_t)0x2971405b, (q31_t)0x296b4e74, (q31_t)0x29655c72, (q31_t)0x295f6a57, (q31_t)0x29597823, (q31_t)0x295385d5, + (q31_t)0x294d936d, (q31_t)0x2947a0ec, + (q31_t)0x2941ae52, (q31_t)0x293bbb9e, (q31_t)0x2935c8d1, (q31_t)0x292fd5ea, (q31_t)0x2929e2ea, (q31_t)0x2923efd0, + (q31_t)0x291dfc9d, (q31_t)0x29180951, + (q31_t)0x291215eb, (q31_t)0x290c226c, (q31_t)0x29062ed4, (q31_t)0x29003b23, (q31_t)0x28fa4758, (q31_t)0x28f45374, + (q31_t)0x28ee5f76, (q31_t)0x28e86b5f, + (q31_t)0x28e27730, (q31_t)0x28dc82e6, (q31_t)0x28d68e84, (q31_t)0x28d09a09, (q31_t)0x28caa574, (q31_t)0x28c4b0c6, + (q31_t)0x28bebbff, (q31_t)0x28b8c71f, + (q31_t)0x28b2d226, (q31_t)0x28acdd13, (q31_t)0x28a6e7e8, (q31_t)0x28a0f2a3, (q31_t)0x289afd46, (q31_t)0x289507cf, + (q31_t)0x288f123f, (q31_t)0x28891c97, + (q31_t)0x288326d5, (q31_t)0x287d30fa, (q31_t)0x28773b07, (q31_t)0x287144fa, (q31_t)0x286b4ed5, (q31_t)0x28655896, + (q31_t)0x285f623f, (q31_t)0x28596bce, + (q31_t)0x28537545, (q31_t)0x284d7ea3, (q31_t)0x284787e8, (q31_t)0x28419114, (q31_t)0x283b9a28, (q31_t)0x2835a322, + (q31_t)0x282fac04, (q31_t)0x2829b4cd, + (q31_t)0x2823bd7d, (q31_t)0x281dc615, (q31_t)0x2817ce93, (q31_t)0x2811d6f9, (q31_t)0x280bdf46, (q31_t)0x2805e77b, + (q31_t)0x27ffef97, (q31_t)0x27f9f79a, + (q31_t)0x27f3ff85, (q31_t)0x27ee0756, (q31_t)0x27e80f10, (q31_t)0x27e216b0, (q31_t)0x27dc1e38, (q31_t)0x27d625a8, + (q31_t)0x27d02cff, (q31_t)0x27ca343d, + (q31_t)0x27c43b63, (q31_t)0x27be4270, (q31_t)0x27b84965, (q31_t)0x27b25041, (q31_t)0x27ac5705, (q31_t)0x27a65db0, + (q31_t)0x27a06443, (q31_t)0x279a6abd, + (q31_t)0x2794711f, (q31_t)0x278e7768, (q31_t)0x27887d99, (q31_t)0x278283b2, (q31_t)0x277c89b3, (q31_t)0x27768f9b, + (q31_t)0x2770956a, (q31_t)0x276a9b21, + (q31_t)0x2764a0c0, (q31_t)0x275ea647, (q31_t)0x2758abb6, (q31_t)0x2752b10c, (q31_t)0x274cb64a, (q31_t)0x2746bb6f, + (q31_t)0x2740c07d, (q31_t)0x273ac572, + (q31_t)0x2734ca4f, (q31_t)0x272ecf14, (q31_t)0x2728d3c0, (q31_t)0x2722d855, (q31_t)0x271cdcd1, (q31_t)0x2716e136, + (q31_t)0x2710e582, (q31_t)0x270ae9b6, + (q31_t)0x2704edd2, (q31_t)0x26fef1d5, (q31_t)0x26f8f5c1, (q31_t)0x26f2f995, (q31_t)0x26ecfd51, (q31_t)0x26e700f5, + (q31_t)0x26e10480, (q31_t)0x26db07f4, + (q31_t)0x26d50b50, (q31_t)0x26cf0e94, (q31_t)0x26c911c0, (q31_t)0x26c314d4, (q31_t)0x26bd17d0, (q31_t)0x26b71ab4, + (q31_t)0x26b11d80, (q31_t)0x26ab2034, + (q31_t)0x26a522d1, (q31_t)0x269f2556, (q31_t)0x269927c3, (q31_t)0x26932a18, (q31_t)0x268d2c55, (q31_t)0x26872e7b, + (q31_t)0x26813088, (q31_t)0x267b327e, + (q31_t)0x2675345d, (q31_t)0x266f3623, (q31_t)0x266937d2, (q31_t)0x26633969, (q31_t)0x265d3ae9, (q31_t)0x26573c50, + (q31_t)0x26513da1, (q31_t)0x264b3ed9, + (q31_t)0x26453ffa, (q31_t)0x263f4103, (q31_t)0x263941f5, (q31_t)0x263342cf, (q31_t)0x262d4392, (q31_t)0x2627443d, + (q31_t)0x262144d0, (q31_t)0x261b454c, + (q31_t)0x261545b0, (q31_t)0x260f45fd, (q31_t)0x26094633, (q31_t)0x26034651, (q31_t)0x25fd4657, (q31_t)0x25f74646, + (q31_t)0x25f1461e, (q31_t)0x25eb45de, + (q31_t)0x25e54587, (q31_t)0x25df4519, (q31_t)0x25d94493, (q31_t)0x25d343f6, (q31_t)0x25cd4341, (q31_t)0x25c74276, + (q31_t)0x25c14192, (q31_t)0x25bb4098, + (q31_t)0x25b53f86, (q31_t)0x25af3e5d, (q31_t)0x25a93d1d, (q31_t)0x25a33bc6, (q31_t)0x259d3a57, (q31_t)0x259738d1, + (q31_t)0x25913734, (q31_t)0x258b3580, + (q31_t)0x258533b5, (q31_t)0x257f31d2, (q31_t)0x25792fd8, (q31_t)0x25732dc8, (q31_t)0x256d2ba0, (q31_t)0x25672961, + (q31_t)0x2561270b, (q31_t)0x255b249e, + (q31_t)0x2555221a, (q31_t)0x254f1f7e, (q31_t)0x25491ccc, (q31_t)0x25431a03, (q31_t)0x253d1723, (q31_t)0x2537142c, + (q31_t)0x2531111e, (q31_t)0x252b0df9, + (q31_t)0x25250abd, (q31_t)0x251f076a, (q31_t)0x25190400, (q31_t)0x25130080, (q31_t)0x250cfce8, (q31_t)0x2506f93a, + (q31_t)0x2500f574, (q31_t)0x24faf198, + (q31_t)0x24f4eda6, (q31_t)0x24eee99c, (q31_t)0x24e8e57c, (q31_t)0x24e2e144, (q31_t)0x24dcdcf6, (q31_t)0x24d6d892, + (q31_t)0x24d0d416, (q31_t)0x24cacf84, + (q31_t)0x24c4cadb, (q31_t)0x24bec61c, (q31_t)0x24b8c146, (q31_t)0x24b2bc59, (q31_t)0x24acb756, (q31_t)0x24a6b23b, + (q31_t)0x24a0ad0b, (q31_t)0x249aa7c4, + (q31_t)0x2494a266, (q31_t)0x248e9cf1, (q31_t)0x24889766, (q31_t)0x248291c5, (q31_t)0x247c8c0d, (q31_t)0x2476863e, + (q31_t)0x24708059, (q31_t)0x246a7a5e, + (q31_t)0x2464744c, (q31_t)0x245e6e23, (q31_t)0x245867e4, (q31_t)0x2452618f, (q31_t)0x244c5b24, (q31_t)0x244654a1, + (q31_t)0x24404e09, (q31_t)0x243a475a, + (q31_t)0x24344095, (q31_t)0x242e39ba, (q31_t)0x242832c8, (q31_t)0x24222bc0, (q31_t)0x241c24a1, (q31_t)0x24161d6d, + (q31_t)0x24101622, (q31_t)0x240a0ec1, + (q31_t)0x24040749, (q31_t)0x23fdffbc, (q31_t)0x23f7f818, (q31_t)0x23f1f05e, (q31_t)0x23ebe88e, (q31_t)0x23e5e0a7, + (q31_t)0x23dfd8ab, (q31_t)0x23d9d098, + (q31_t)0x23d3c86f, (q31_t)0x23cdc031, (q31_t)0x23c7b7dc, (q31_t)0x23c1af71, (q31_t)0x23bba6f0, (q31_t)0x23b59e59, + (q31_t)0x23af95ac, (q31_t)0x23a98ce8, + (q31_t)0x23a3840f, (q31_t)0x239d7b20, (q31_t)0x2397721b, (q31_t)0x23916900, (q31_t)0x238b5fcf, (q31_t)0x23855688, + (q31_t)0x237f4d2b, (q31_t)0x237943b9, + (q31_t)0x23733a30, (q31_t)0x236d3092, (q31_t)0x236726dd, (q31_t)0x23611d13, (q31_t)0x235b1333, (q31_t)0x2355093e, + (q31_t)0x234eff32, (q31_t)0x2348f511, + (q31_t)0x2342eada, (q31_t)0x233ce08d, (q31_t)0x2336d62a, (q31_t)0x2330cbb2, (q31_t)0x232ac124, (q31_t)0x2324b680, + (q31_t)0x231eabc7, (q31_t)0x2318a0f8, + (q31_t)0x23129613, (q31_t)0x230c8b19, (q31_t)0x23068009, (q31_t)0x230074e3, (q31_t)0x22fa69a8, (q31_t)0x22f45e57, + (q31_t)0x22ee52f1, (q31_t)0x22e84775, + (q31_t)0x22e23be4, (q31_t)0x22dc303d, (q31_t)0x22d62480, (q31_t)0x22d018ae, (q31_t)0x22ca0cc7, (q31_t)0x22c400ca, + (q31_t)0x22bdf4b8, (q31_t)0x22b7e890, + (q31_t)0x22b1dc53, (q31_t)0x22abd001, (q31_t)0x22a5c399, (q31_t)0x229fb71b, (q31_t)0x2299aa89, (q31_t)0x22939de1, + (q31_t)0x228d9123, (q31_t)0x22878451, + (q31_t)0x22817769, (q31_t)0x227b6a6c, (q31_t)0x22755d59, (q31_t)0x226f5032, (q31_t)0x226942f5, (q31_t)0x226335a2, + (q31_t)0x225d283b, (q31_t)0x22571abe, + (q31_t)0x22510d2d, (q31_t)0x224aff86, (q31_t)0x2244f1c9, (q31_t)0x223ee3f8, (q31_t)0x2238d612, (q31_t)0x2232c816, + (q31_t)0x222cba06, (q31_t)0x2226abe0, + (q31_t)0x22209da5, (q31_t)0x221a8f56, (q31_t)0x221480f1, (q31_t)0x220e7277, (q31_t)0x220863e8, (q31_t)0x22025544, + (q31_t)0x21fc468b, (q31_t)0x21f637be, + (q31_t)0x21f028db, (q31_t)0x21ea19e3, (q31_t)0x21e40ad7, (q31_t)0x21ddfbb5, (q31_t)0x21d7ec7f, (q31_t)0x21d1dd34, + (q31_t)0x21cbcdd3, (q31_t)0x21c5be5e, + (q31_t)0x21bfaed5, (q31_t)0x21b99f36, (q31_t)0x21b38f83, (q31_t)0x21ad7fba, (q31_t)0x21a76fdd, (q31_t)0x21a15fec, + (q31_t)0x219b4fe5, (q31_t)0x21953fca, + (q31_t)0x218f2f9a, (q31_t)0x21891f55, (q31_t)0x21830efc, (q31_t)0x217cfe8e, (q31_t)0x2176ee0b, (q31_t)0x2170dd74, + (q31_t)0x216accc8, (q31_t)0x2164bc08, + (q31_t)0x215eab33, (q31_t)0x21589a49, (q31_t)0x2152894b, (q31_t)0x214c7838, (q31_t)0x21466710, (q31_t)0x214055d4, + (q31_t)0x213a4484, (q31_t)0x2134331f, + (q31_t)0x212e21a6, (q31_t)0x21281018, (q31_t)0x2121fe76, (q31_t)0x211becbf, (q31_t)0x2115daf4, (q31_t)0x210fc914, + (q31_t)0x2109b720, (q31_t)0x2103a518, + (q31_t)0x20fd92fb, (q31_t)0x20f780ca, (q31_t)0x20f16e84, (q31_t)0x20eb5c2b, (q31_t)0x20e549bd, (q31_t)0x20df373a, + (q31_t)0x20d924a4, (q31_t)0x20d311f9, + (q31_t)0x20ccff3a, (q31_t)0x20c6ec66, (q31_t)0x20c0d97f, (q31_t)0x20bac683, (q31_t)0x20b4b373, (q31_t)0x20aea04f, + (q31_t)0x20a88d17, (q31_t)0x20a279ca, + (q31_t)0x209c666a, (q31_t)0x209652f5, (q31_t)0x20903f6c, (q31_t)0x208a2bcf, (q31_t)0x2084181e, (q31_t)0x207e0459, + (q31_t)0x2077f080, (q31_t)0x2071dc93, + (q31_t)0x206bc892, (q31_t)0x2065b47d, (q31_t)0x205fa054, (q31_t)0x20598c17, (q31_t)0x205377c6, (q31_t)0x204d6361, + (q31_t)0x20474ee8, (q31_t)0x20413a5b, + (q31_t)0x203b25bb, (q31_t)0x20351106, (q31_t)0x202efc3e, (q31_t)0x2028e761, (q31_t)0x2022d271, (q31_t)0x201cbd6d, + (q31_t)0x2016a856, (q31_t)0x2010932a, + (q31_t)0x200a7deb, (q31_t)0x20046898, (q31_t)0x1ffe5331, (q31_t)0x1ff83db6, (q31_t)0x1ff22828, (q31_t)0x1fec1286, + (q31_t)0x1fe5fcd0, (q31_t)0x1fdfe707, + (q31_t)0x1fd9d12a, (q31_t)0x1fd3bb39, (q31_t)0x1fcda535, (q31_t)0x1fc78f1d, (q31_t)0x1fc178f1, (q31_t)0x1fbb62b2, + (q31_t)0x1fb54c60, (q31_t)0x1faf35f9, + (q31_t)0x1fa91f80, (q31_t)0x1fa308f2, (q31_t)0x1f9cf252, (q31_t)0x1f96db9d, (q31_t)0x1f90c4d5, (q31_t)0x1f8aadfa, + (q31_t)0x1f84970b, (q31_t)0x1f7e8009, + (q31_t)0x1f7868f4, (q31_t)0x1f7251ca, (q31_t)0x1f6c3a8e, (q31_t)0x1f66233e, (q31_t)0x1f600bdb, (q31_t)0x1f59f465, + (q31_t)0x1f53dcdb, (q31_t)0x1f4dc53d, + (q31_t)0x1f47ad8d, (q31_t)0x1f4195c9, (q31_t)0x1f3b7df2, (q31_t)0x1f356608, (q31_t)0x1f2f4e0a, (q31_t)0x1f2935f9, + (q31_t)0x1f231dd5, (q31_t)0x1f1d059e, + (q31_t)0x1f16ed54, (q31_t)0x1f10d4f6, (q31_t)0x1f0abc85, (q31_t)0x1f04a401, (q31_t)0x1efe8b6a, (q31_t)0x1ef872c0, + (q31_t)0x1ef25a03, (q31_t)0x1eec4132, + (q31_t)0x1ee6284f, (q31_t)0x1ee00f58, (q31_t)0x1ed9f64f, (q31_t)0x1ed3dd32, (q31_t)0x1ecdc402, (q31_t)0x1ec7aac0, + (q31_t)0x1ec1916a, (q31_t)0x1ebb7802, + (q31_t)0x1eb55e86, (q31_t)0x1eaf44f8, (q31_t)0x1ea92b56, (q31_t)0x1ea311a2, (q31_t)0x1e9cf7db, (q31_t)0x1e96de01, + (q31_t)0x1e90c414, (q31_t)0x1e8aaa14, + (q31_t)0x1e849001, (q31_t)0x1e7e75dc, (q31_t)0x1e785ba3, (q31_t)0x1e724158, (q31_t)0x1e6c26fa, (q31_t)0x1e660c8a, + (q31_t)0x1e5ff206, (q31_t)0x1e59d770, + (q31_t)0x1e53bcc7, (q31_t)0x1e4da20c, (q31_t)0x1e47873d, (q31_t)0x1e416c5d, (q31_t)0x1e3b5169, (q31_t)0x1e353663, + (q31_t)0x1e2f1b4a, (q31_t)0x1e29001e, + (q31_t)0x1e22e4e0, (q31_t)0x1e1cc990, (q31_t)0x1e16ae2c, (q31_t)0x1e1092b6, (q31_t)0x1e0a772e, (q31_t)0x1e045b93, + (q31_t)0x1dfe3fe6, (q31_t)0x1df82426, + (q31_t)0x1df20853, (q31_t)0x1debec6f, (q31_t)0x1de5d077, (q31_t)0x1ddfb46e, (q31_t)0x1dd99851, (q31_t)0x1dd37c23, + (q31_t)0x1dcd5fe2, (q31_t)0x1dc7438e, + (q31_t)0x1dc12729, (q31_t)0x1dbb0ab0, (q31_t)0x1db4ee26, (q31_t)0x1daed189, (q31_t)0x1da8b4da, (q31_t)0x1da29819, + (q31_t)0x1d9c7b45, (q31_t)0x1d965e5f, + (q31_t)0x1d904167, (q31_t)0x1d8a245c, (q31_t)0x1d840740, (q31_t)0x1d7dea11, (q31_t)0x1d77ccd0, (q31_t)0x1d71af7d, + (q31_t)0x1d6b9217, (q31_t)0x1d6574a0, + (q31_t)0x1d5f5716, (q31_t)0x1d59397a, (q31_t)0x1d531bcc, (q31_t)0x1d4cfe0d, (q31_t)0x1d46e03a, (q31_t)0x1d40c256, + (q31_t)0x1d3aa460, (q31_t)0x1d348658, + (q31_t)0x1d2e683e, (q31_t)0x1d284a12, (q31_t)0x1d222bd3, (q31_t)0x1d1c0d83, (q31_t)0x1d15ef21, (q31_t)0x1d0fd0ad, + (q31_t)0x1d09b227, (q31_t)0x1d03938f, + (q31_t)0x1cfd74e5, (q31_t)0x1cf7562a, (q31_t)0x1cf1375c, (q31_t)0x1ceb187d, (q31_t)0x1ce4f98c, (q31_t)0x1cdeda89, + (q31_t)0x1cd8bb74, (q31_t)0x1cd29c4d, + (q31_t)0x1ccc7d15, (q31_t)0x1cc65dca, (q31_t)0x1cc03e6e, (q31_t)0x1cba1f01, (q31_t)0x1cb3ff81, (q31_t)0x1caddff0, + (q31_t)0x1ca7c04d, (q31_t)0x1ca1a099, + (q31_t)0x1c9b80d3, (q31_t)0x1c9560fb, (q31_t)0x1c8f4112, (q31_t)0x1c892117, (q31_t)0x1c83010a, (q31_t)0x1c7ce0ec, + (q31_t)0x1c76c0bc, (q31_t)0x1c70a07b, + (q31_t)0x1c6a8028, (q31_t)0x1c645fc3, (q31_t)0x1c5e3f4d, (q31_t)0x1c581ec6, (q31_t)0x1c51fe2d, (q31_t)0x1c4bdd83, + (q31_t)0x1c45bcc7, (q31_t)0x1c3f9bf9, + (q31_t)0x1c397b1b, (q31_t)0x1c335a2b, (q31_t)0x1c2d3929, (q31_t)0x1c271816, (q31_t)0x1c20f6f2, (q31_t)0x1c1ad5bc, + (q31_t)0x1c14b475, (q31_t)0x1c0e931d, + (q31_t)0x1c0871b4, (q31_t)0x1c025039, (q31_t)0x1bfc2ead, (q31_t)0x1bf60d0f, (q31_t)0x1befeb60, (q31_t)0x1be9c9a1, + (q31_t)0x1be3a7cf, (q31_t)0x1bdd85ed, + (q31_t)0x1bd763fa, (q31_t)0x1bd141f5, (q31_t)0x1bcb1fdf, (q31_t)0x1bc4fdb8, (q31_t)0x1bbedb80, (q31_t)0x1bb8b937, + (q31_t)0x1bb296dc, (q31_t)0x1bac7471, + (q31_t)0x1ba651f5, (q31_t)0x1ba02f67, (q31_t)0x1b9a0cc8, (q31_t)0x1b93ea19, (q31_t)0x1b8dc758, (q31_t)0x1b87a487, + (q31_t)0x1b8181a4, (q31_t)0x1b7b5eb0, + (q31_t)0x1b753bac, (q31_t)0x1b6f1897, (q31_t)0x1b68f570, (q31_t)0x1b62d239, (q31_t)0x1b5caef1, (q31_t)0x1b568b98, + (q31_t)0x1b50682e, (q31_t)0x1b4a44b3, + (q31_t)0x1b442127, (q31_t)0x1b3dfd8b, (q31_t)0x1b37d9de, (q31_t)0x1b31b620, (q31_t)0x1b2b9251, (q31_t)0x1b256e71, + (q31_t)0x1b1f4a81, (q31_t)0x1b192680, + (q31_t)0x1b13026e, (q31_t)0x1b0cde4c, (q31_t)0x1b06ba19, (q31_t)0x1b0095d5, (q31_t)0x1afa7180, (q31_t)0x1af44d1b, + (q31_t)0x1aee28a6, (q31_t)0x1ae8041f, + (q31_t)0x1ae1df88, (q31_t)0x1adbbae1, (q31_t)0x1ad59629, (q31_t)0x1acf7160, (q31_t)0x1ac94c87, (q31_t)0x1ac3279d, + (q31_t)0x1abd02a3, (q31_t)0x1ab6dd98, + (q31_t)0x1ab0b87d, (q31_t)0x1aaa9352, (q31_t)0x1aa46e16, (q31_t)0x1a9e48c9, (q31_t)0x1a98236c, (q31_t)0x1a91fdff, + (q31_t)0x1a8bd881, (q31_t)0x1a85b2f3, + (q31_t)0x1a7f8d54, (q31_t)0x1a7967a6, (q31_t)0x1a7341e6, (q31_t)0x1a6d1c17, (q31_t)0x1a66f637, (q31_t)0x1a60d047, + (q31_t)0x1a5aaa47, (q31_t)0x1a548436, + (q31_t)0x1a4e5e15, (q31_t)0x1a4837e4, (q31_t)0x1a4211a3, (q31_t)0x1a3beb52, (q31_t)0x1a35c4f0, (q31_t)0x1a2f9e7e, + (q31_t)0x1a2977fc, (q31_t)0x1a23516a, + (q31_t)0x1a1d2ac8, (q31_t)0x1a170416, (q31_t)0x1a10dd53, (q31_t)0x1a0ab681, (q31_t)0x1a048f9e, (q31_t)0x19fe68ac, + (q31_t)0x19f841a9, (q31_t)0x19f21a96, + (q31_t)0x19ebf374, (q31_t)0x19e5cc41, (q31_t)0x19dfa4fe, (q31_t)0x19d97dac, (q31_t)0x19d35649, (q31_t)0x19cd2ed7, + (q31_t)0x19c70754, (q31_t)0x19c0dfc2, + (q31_t)0x19bab820, (q31_t)0x19b4906e, (q31_t)0x19ae68ac, (q31_t)0x19a840da, (q31_t)0x19a218f9, (q31_t)0x199bf107, + (q31_t)0x1995c906, (q31_t)0x198fa0f5, + (q31_t)0x198978d4, (q31_t)0x198350a4, (q31_t)0x197d2864, (q31_t)0x19770014, (q31_t)0x1970d7b4, (q31_t)0x196aaf45, + (q31_t)0x196486c6, (q31_t)0x195e5e37, + (q31_t)0x19583599, (q31_t)0x19520ceb, (q31_t)0x194be42d, (q31_t)0x1945bb60, (q31_t)0x193f9283, (q31_t)0x19396997, + (q31_t)0x1933409b, (q31_t)0x192d178f, + (q31_t)0x1926ee74, (q31_t)0x1920c54a, (q31_t)0x191a9c10, (q31_t)0x191472c6, (q31_t)0x190e496d, (q31_t)0x19082005, + (q31_t)0x1901f68d, (q31_t)0x18fbcd06, + (q31_t)0x18f5a36f, (q31_t)0x18ef79c9, (q31_t)0x18e95014, (q31_t)0x18e3264f, (q31_t)0x18dcfc7b, (q31_t)0x18d6d297, + (q31_t)0x18d0a8a4, (q31_t)0x18ca7ea2, + (q31_t)0x18c45491, (q31_t)0x18be2a70, (q31_t)0x18b80040, (q31_t)0x18b1d601, (q31_t)0x18ababb2, (q31_t)0x18a58154, + (q31_t)0x189f56e8, (q31_t)0x18992c6b, + (q31_t)0x189301e0, (q31_t)0x188cd746, (q31_t)0x1886ac9c, (q31_t)0x188081e4, (q31_t)0x187a571c, (q31_t)0x18742c45, + (q31_t)0x186e015f, (q31_t)0x1867d66a, + (q31_t)0x1861ab66, (q31_t)0x185b8053, (q31_t)0x18555530, (q31_t)0x184f29ff, (q31_t)0x1848febf, (q31_t)0x1842d370, + (q31_t)0x183ca812, (q31_t)0x18367ca5, + (q31_t)0x18305129, (q31_t)0x182a259e, (q31_t)0x1823fa04, (q31_t)0x181dce5b, (q31_t)0x1817a2a4, (q31_t)0x181176dd, + (q31_t)0x180b4b08, (q31_t)0x18051f24, + (q31_t)0x17fef331, (q31_t)0x17f8c72f, (q31_t)0x17f29b1e, (q31_t)0x17ec6eff, (q31_t)0x17e642d1, (q31_t)0x17e01694, + (q31_t)0x17d9ea49, (q31_t)0x17d3bdee, + (q31_t)0x17cd9186, (q31_t)0x17c7650e, (q31_t)0x17c13888, (q31_t)0x17bb0bf3, (q31_t)0x17b4df4f, (q31_t)0x17aeb29d, + (q31_t)0x17a885dc, (q31_t)0x17a2590d, + (q31_t)0x179c2c2f, (q31_t)0x1795ff42, (q31_t)0x178fd247, (q31_t)0x1789a53d, (q31_t)0x17837825, (q31_t)0x177d4afe, + (q31_t)0x17771dc9, (q31_t)0x1770f086, + (q31_t)0x176ac333, (q31_t)0x176495d3, (q31_t)0x175e6864, (q31_t)0x17583ae7, (q31_t)0x17520d5b, (q31_t)0x174bdfc1, + (q31_t)0x1745b218, (q31_t)0x173f8461, + (q31_t)0x1739569c, (q31_t)0x173328c8, (q31_t)0x172cfae6, (q31_t)0x1726ccf6, (q31_t)0x17209ef8, (q31_t)0x171a70eb, + (q31_t)0x171442d0, (q31_t)0x170e14a7, + (q31_t)0x1707e670, (q31_t)0x1701b82a, (q31_t)0x16fb89d6, (q31_t)0x16f55b74, (q31_t)0x16ef2d04, (q31_t)0x16e8fe86, + (q31_t)0x16e2cff9, (q31_t)0x16dca15f, + (q31_t)0x16d672b6, (q31_t)0x16d043ff, (q31_t)0x16ca153a, (q31_t)0x16c3e667, (q31_t)0x16bdb787, (q31_t)0x16b78898, + (q31_t)0x16b1599b, (q31_t)0x16ab2a90, + (q31_t)0x16a4fb77, (q31_t)0x169ecc50, (q31_t)0x16989d1b, (q31_t)0x16926dd8, (q31_t)0x168c3e87, (q31_t)0x16860f29, + (q31_t)0x167fdfbc, (q31_t)0x1679b042, + (q31_t)0x167380ba, (q31_t)0x166d5123, (q31_t)0x1667217f, (q31_t)0x1660f1ce, (q31_t)0x165ac20e, (q31_t)0x16549241, + (q31_t)0x164e6266, (q31_t)0x1648327d, + (q31_t)0x16420286, (q31_t)0x163bd282, (q31_t)0x1635a270, (q31_t)0x162f7250, (q31_t)0x16294222, (q31_t)0x162311e7, + (q31_t)0x161ce19e, (q31_t)0x1616b148, + (q31_t)0x161080e4, (q31_t)0x160a5072, (q31_t)0x16041ff3, (q31_t)0x15fdef66, (q31_t)0x15f7becc, (q31_t)0x15f18e24, + (q31_t)0x15eb5d6e, (q31_t)0x15e52cab, + (q31_t)0x15defbdb, (q31_t)0x15d8cafd, (q31_t)0x15d29a11, (q31_t)0x15cc6918, (q31_t)0x15c63812, (q31_t)0x15c006fe, + (q31_t)0x15b9d5dd, (q31_t)0x15b3a4ae, + (q31_t)0x15ad7372, (q31_t)0x15a74228, (q31_t)0x15a110d2, (q31_t)0x159adf6e, (q31_t)0x1594adfc, (q31_t)0x158e7c7d, + (q31_t)0x15884af1, (q31_t)0x15821958, + (q31_t)0x157be7b1, (q31_t)0x1575b5fe, (q31_t)0x156f843c, (q31_t)0x1569526e, (q31_t)0x15632093, (q31_t)0x155ceeaa, + (q31_t)0x1556bcb4, (q31_t)0x15508ab1, + (q31_t)0x154a58a1, (q31_t)0x15442683, (q31_t)0x153df459, (q31_t)0x1537c221, (q31_t)0x15318fdd, (q31_t)0x152b5d8b, + (q31_t)0x15252b2c, (q31_t)0x151ef8c0, + (q31_t)0x1518c648, (q31_t)0x151293c2, (q31_t)0x150c612f, (q31_t)0x15062e8f, (q31_t)0x14fffbe2, (q31_t)0x14f9c928, + (q31_t)0x14f39662, (q31_t)0x14ed638e, + (q31_t)0x14e730ae, (q31_t)0x14e0fdc0, (q31_t)0x14dacac6, (q31_t)0x14d497bf, (q31_t)0x14ce64ab, (q31_t)0x14c8318a, + (q31_t)0x14c1fe5c, (q31_t)0x14bbcb22, + (q31_t)0x14b597da, (q31_t)0x14af6486, (q31_t)0x14a93125, (q31_t)0x14a2fdb8, (q31_t)0x149cca3e, (q31_t)0x149696b7, + (q31_t)0x14906323, (q31_t)0x148a2f82, + (q31_t)0x1483fbd5, (q31_t)0x147dc81c, (q31_t)0x14779455, (q31_t)0x14716082, (q31_t)0x146b2ca3, (q31_t)0x1464f8b7, + (q31_t)0x145ec4be, (q31_t)0x145890b9, + (q31_t)0x14525ca7, (q31_t)0x144c2888, (q31_t)0x1445f45d, (q31_t)0x143fc026, (q31_t)0x14398be2, (q31_t)0x14335792, + (q31_t)0x142d2335, (q31_t)0x1426eecb, + (q31_t)0x1420ba56, (q31_t)0x141a85d3, (q31_t)0x14145145, (q31_t)0x140e1caa, (q31_t)0x1407e803, (q31_t)0x1401b34f, + (q31_t)0x13fb7e8f, (q31_t)0x13f549c3, + (q31_t)0x13ef14ea, (q31_t)0x13e8e005, (q31_t)0x13e2ab14, (q31_t)0x13dc7616, (q31_t)0x13d6410d, (q31_t)0x13d00bf7, + (q31_t)0x13c9d6d4, (q31_t)0x13c3a1a6, + (q31_t)0x13bd6c6b, (q31_t)0x13b73725, (q31_t)0x13b101d2, (q31_t)0x13aacc73, (q31_t)0x13a49707, (q31_t)0x139e6190, + (q31_t)0x13982c0d, (q31_t)0x1391f67d, + (q31_t)0x138bc0e1, (q31_t)0x13858b3a, (q31_t)0x137f5586, (q31_t)0x13791fc6, (q31_t)0x1372e9fb, (q31_t)0x136cb423, + (q31_t)0x13667e3f, (q31_t)0x13604850, + (q31_t)0x135a1254, (q31_t)0x1353dc4c, (q31_t)0x134da639, (q31_t)0x1347701a, (q31_t)0x134139ee, (q31_t)0x133b03b7, + (q31_t)0x1334cd74, (q31_t)0x132e9725, + (q31_t)0x132860ca, (q31_t)0x13222a64, (q31_t)0x131bf3f2, (q31_t)0x1315bd73, (q31_t)0x130f86ea, (q31_t)0x13095054, + (q31_t)0x130319b3, (q31_t)0x12fce305, + (q31_t)0x12f6ac4d, (q31_t)0x12f07588, (q31_t)0x12ea3eb8, (q31_t)0x12e407dc, (q31_t)0x12ddd0f4, (q31_t)0x12d79a01, + (q31_t)0x12d16303, (q31_t)0x12cb2bf8, + (q31_t)0x12c4f4e2, (q31_t)0x12bebdc1, (q31_t)0x12b88693, (q31_t)0x12b24f5b, (q31_t)0x12ac1817, (q31_t)0x12a5e0c7, + (q31_t)0x129fa96c, (q31_t)0x12997205, + (q31_t)0x12933a93, (q31_t)0x128d0315, (q31_t)0x1286cb8c, (q31_t)0x128093f7, (q31_t)0x127a5c57, (q31_t)0x127424ac, + (q31_t)0x126decf5, (q31_t)0x1267b533, + (q31_t)0x12617d66, (q31_t)0x125b458d, (q31_t)0x12550da9, (q31_t)0x124ed5ba, (q31_t)0x12489dbf, (q31_t)0x124265b9, + (q31_t)0x123c2da8, (q31_t)0x1235f58b, + (q31_t)0x122fbd63, (q31_t)0x12298530, (q31_t)0x12234cf2, (q31_t)0x121d14a9, (q31_t)0x1216dc54, (q31_t)0x1210a3f5, + (q31_t)0x120a6b8a, (q31_t)0x12043314, + (q31_t)0x11fdfa93, (q31_t)0x11f7c207, (q31_t)0x11f18970, (q31_t)0x11eb50cd, (q31_t)0x11e51820, (q31_t)0x11dedf68, + (q31_t)0x11d8a6a4, (q31_t)0x11d26dd6, + (q31_t)0x11cc34fc, (q31_t)0x11c5fc18, (q31_t)0x11bfc329, (q31_t)0x11b98a2e, (q31_t)0x11b35129, (q31_t)0x11ad1819, + (q31_t)0x11a6defe, (q31_t)0x11a0a5d8, + (q31_t)0x119a6ca7, (q31_t)0x1194336b, (q31_t)0x118dfa25, (q31_t)0x1187c0d3, (q31_t)0x11818777, (q31_t)0x117b4e10, + (q31_t)0x1175149e, (q31_t)0x116edb22, + (q31_t)0x1168a19b, (q31_t)0x11626809, (q31_t)0x115c2e6c, (q31_t)0x1155f4c4, (q31_t)0x114fbb12, (q31_t)0x11498156, + (q31_t)0x1143478e, (q31_t)0x113d0dbc, + (q31_t)0x1136d3df, (q31_t)0x113099f8, (q31_t)0x112a6006, (q31_t)0x11242609, (q31_t)0x111dec02, (q31_t)0x1117b1f0, + (q31_t)0x111177d4, (q31_t)0x110b3dad, + (q31_t)0x1105037c, (q31_t)0x10fec940, (q31_t)0x10f88efa, (q31_t)0x10f254a9, (q31_t)0x10ec1a4e, (q31_t)0x10e5dfe8, + (q31_t)0x10dfa578, (q31_t)0x10d96afe, + (q31_t)0x10d33079, (q31_t)0x10ccf5ea, (q31_t)0x10c6bb50, (q31_t)0x10c080ac, (q31_t)0x10ba45fe, (q31_t)0x10b40b45, + (q31_t)0x10add082, (q31_t)0x10a795b5, + (q31_t)0x10a15ade, (q31_t)0x109b1ffc, (q31_t)0x1094e510, (q31_t)0x108eaa1a, (q31_t)0x10886f19, (q31_t)0x1082340f, + (q31_t)0x107bf8fa, (q31_t)0x1075bddb, + (q31_t)0x106f82b2, (q31_t)0x1069477f, (q31_t)0x10630c41, (q31_t)0x105cd0fa, (q31_t)0x105695a8, (q31_t)0x10505a4d, + (q31_t)0x104a1ee7, (q31_t)0x1043e377, + (q31_t)0x103da7fd, (q31_t)0x10376c79, (q31_t)0x103130ec, (q31_t)0x102af554, (q31_t)0x1024b9b2, (q31_t)0x101e7e06, + (q31_t)0x10184251, (q31_t)0x10120691, + (q31_t)0x100bcac7, (q31_t)0x10058ef4, (q31_t)0xfff5317, (q31_t)0xff91730, (q31_t)0xff2db3e, (q31_t)0xfec9f44, + (q31_t)0xfe6633f, (q31_t)0xfe02730, + (q31_t)0xfd9eb18, (q31_t)0xfd3aef6, (q31_t)0xfcd72ca, (q31_t)0xfc73695, (q31_t)0xfc0fa55, (q31_t)0xfbabe0c, (q31_t)0xfb481ba, + (q31_t)0xfae455d, + (q31_t)0xfa808f7, (q31_t)0xfa1cc87, (q31_t)0xf9b900e, (q31_t)0xf95538b, (q31_t)0xf8f16fe, (q31_t)0xf88da68, (q31_t)0xf829dc8, + (q31_t)0xf7c611f, + (q31_t)0xf76246c, (q31_t)0xf6fe7af, (q31_t)0xf69aae9, (q31_t)0xf636e1a, (q31_t)0xf5d3141, (q31_t)0xf56f45e, (q31_t)0xf50b773, + (q31_t)0xf4a7a7d, + (q31_t)0xf443d7e, (q31_t)0xf3e0076, (q31_t)0xf37c365, (q31_t)0xf318649, (q31_t)0xf2b4925, (q31_t)0xf250bf7, (q31_t)0xf1ecec0, + (q31_t)0xf189180, + (q31_t)0xf125436, (q31_t)0xf0c16e3, (q31_t)0xf05d987, (q31_t)0xeff9c21, (q31_t)0xef95eb2, (q31_t)0xef3213a, (q31_t)0xeece3b9, + (q31_t)0xee6a62f, + (q31_t)0xee0689b, (q31_t)0xeda2afe, (q31_t)0xed3ed58, (q31_t)0xecdafa9, (q31_t)0xec771f1, (q31_t)0xec1342f, (q31_t)0xebaf665, + (q31_t)0xeb4b891, + (q31_t)0xeae7ab4, (q31_t)0xea83ccf, (q31_t)0xea1fee0, (q31_t)0xe9bc0e8, (q31_t)0xe9582e7, (q31_t)0xe8f44dd, (q31_t)0xe8906cb, + (q31_t)0xe82c8af, + (q31_t)0xe7c8a8a, (q31_t)0xe764c5c, (q31_t)0xe700e26, (q31_t)0xe69cfe6, (q31_t)0xe63919e, (q31_t)0xe5d534d, (q31_t)0xe5714f3, + (q31_t)0xe50d690, + (q31_t)0xe4a9824, (q31_t)0xe4459af, (q31_t)0xe3e1b32, (q31_t)0xe37dcac, (q31_t)0xe319e1d, (q31_t)0xe2b5f85, (q31_t)0xe2520e5, + (q31_t)0xe1ee23c, + (q31_t)0xe18a38a, (q31_t)0xe1264cf, (q31_t)0xe0c260c, (q31_t)0xe05e740, (q31_t)0xdffa86b, (q31_t)0xdf9698e, (q31_t)0xdf32aa8, + (q31_t)0xdecebba, + (q31_t)0xde6acc3, (q31_t)0xde06dc3, (q31_t)0xdda2ebb, (q31_t)0xdd3efab, (q31_t)0xdcdb091, (q31_t)0xdc77170, (q31_t)0xdc13245, + (q31_t)0xdbaf313, + (q31_t)0xdb4b3d7, (q31_t)0xdae7494, (q31_t)0xda83548, (q31_t)0xda1f5f3, (q31_t)0xd9bb696, (q31_t)0xd957731, (q31_t)0xd8f37c3, + (q31_t)0xd88f84d, + (q31_t)0xd82b8cf, (q31_t)0xd7c7948, (q31_t)0xd7639b9, (q31_t)0xd6ffa22, (q31_t)0xd69ba82, (q31_t)0xd637ada, (q31_t)0xd5d3b2a, + (q31_t)0xd56fb71, + (q31_t)0xd50bbb1, (q31_t)0xd4a7be8, (q31_t)0xd443c17, (q31_t)0xd3dfc3e, (q31_t)0xd37bc5c, (q31_t)0xd317c73, (q31_t)0xd2b3c81, + (q31_t)0xd24fc87, + (q31_t)0xd1ebc85, (q31_t)0xd187c7b, (q31_t)0xd123c69, (q31_t)0xd0bfc4f, (q31_t)0xd05bc2d, (q31_t)0xcff7c02, (q31_t)0xcf93bd0, + (q31_t)0xcf2fb96, + (q31_t)0xcecbb53, (q31_t)0xce67b09, (q31_t)0xce03ab7, (q31_t)0xcd9fa5d, (q31_t)0xcd3b9fb, (q31_t)0xccd7991, (q31_t)0xcc7391f, + (q31_t)0xcc0f8a5, + (q31_t)0xcbab824, (q31_t)0xcb4779a, (q31_t)0xcae3709, (q31_t)0xca7f670, (q31_t)0xca1b5cf, (q31_t)0xc9b7526, (q31_t)0xc953475, + (q31_t)0xc8ef3bd, + (q31_t)0xc88b2fd, (q31_t)0xc827235, (q31_t)0xc7c3166, (q31_t)0xc75f08f, (q31_t)0xc6fafb0, (q31_t)0xc696ec9, (q31_t)0xc632ddb, + (q31_t)0xc5cece5, + (q31_t)0xc56abe8, (q31_t)0xc506ae3, (q31_t)0xc4a29d6, (q31_t)0xc43e8c2, (q31_t)0xc3da7a6, (q31_t)0xc376683, (q31_t)0xc312558, + (q31_t)0xc2ae425, + (q31_t)0xc24a2eb, (q31_t)0xc1e61aa, (q31_t)0xc182061, (q31_t)0xc11df11, (q31_t)0xc0b9db9, (q31_t)0xc055c5a, (q31_t)0xbff1af3, + (q31_t)0xbf8d985, + (q31_t)0xbf29810, (q31_t)0xbec5693, (q31_t)0xbe6150f, (q31_t)0xbdfd383, (q31_t)0xbd991f0, (q31_t)0xbd35056, (q31_t)0xbcd0eb5, + (q31_t)0xbc6cd0c, + (q31_t)0xbc08b5c, (q31_t)0xbba49a5, (q31_t)0xbb407e7, (q31_t)0xbadc621, (q31_t)0xba78454, (q31_t)0xba14280, (q31_t)0xb9b00a5, + (q31_t)0xb94bec2, + (q31_t)0xb8e7cd9, (q31_t)0xb883ae8, (q31_t)0xb81f8f0, (q31_t)0xb7bb6f2, (q31_t)0xb7574ec, (q31_t)0xb6f32df, (q31_t)0xb68f0cb, + (q31_t)0xb62aeaf, + (q31_t)0xb5c6c8d, (q31_t)0xb562a64, (q31_t)0xb4fe834, (q31_t)0xb49a5fd, (q31_t)0xb4363bf, (q31_t)0xb3d217a, (q31_t)0xb36df2e, + (q31_t)0xb309cdb, + (q31_t)0xb2a5a81, (q31_t)0xb241820, (q31_t)0xb1dd5b9, (q31_t)0xb17934b, (q31_t)0xb1150d5, (q31_t)0xb0b0e59, (q31_t)0xb04cbd6, + (q31_t)0xafe894d, + (q31_t)0xaf846bc, (q31_t)0xaf20425, (q31_t)0xaebc187, (q31_t)0xae57ee2, (q31_t)0xadf3c37, (q31_t)0xad8f985, (q31_t)0xad2b6cc, + (q31_t)0xacc740c, + (q31_t)0xac63146, (q31_t)0xabfee79, (q31_t)0xab9aba6, (q31_t)0xab368cc, (q31_t)0xaad25eb, (q31_t)0xaa6e304, (q31_t)0xaa0a016, + (q31_t)0xa9a5d22, + (q31_t)0xa941a27, (q31_t)0xa8dd725, (q31_t)0xa87941d, (q31_t)0xa81510f, (q31_t)0xa7b0dfa, (q31_t)0xa74cadf, (q31_t)0xa6e87bd, + (q31_t)0xa684495, + (q31_t)0xa620166, (q31_t)0xa5bbe31, (q31_t)0xa557af5, (q31_t)0xa4f37b3, (q31_t)0xa48f46b, (q31_t)0xa42b11d, (q31_t)0xa3c6dc8, + (q31_t)0xa362a6d, + (q31_t)0xa2fe70b, (q31_t)0xa29a3a3, (q31_t)0xa236035, (q31_t)0xa1d1cc1, (q31_t)0xa16d946, (q31_t)0xa1095c6, (q31_t)0xa0a523f, + (q31_t)0xa040eb1, + (q31_t)0x9fdcb1e, (q31_t)0x9f78784, (q31_t)0x9f143e5, (q31_t)0x9eb003f, (q31_t)0x9e4bc93, (q31_t)0x9de78e1, (q31_t)0x9d83529, + (q31_t)0x9d1f16b, + (q31_t)0x9cbada7, (q31_t)0x9c569dc, (q31_t)0x9bf260c, (q31_t)0x9b8e236, (q31_t)0x9b29e59, (q31_t)0x9ac5a77, (q31_t)0x9a6168f, + (q31_t)0x99fd2a0, + (q31_t)0x9998eac, (q31_t)0x9934ab2, (q31_t)0x98d06b2, (q31_t)0x986c2ac, (q31_t)0x9807ea1, (q31_t)0x97a3a8f, (q31_t)0x973f678, + (q31_t)0x96db25a, + (q31_t)0x9676e37, (q31_t)0x9612a0e, (q31_t)0x95ae5e0, (q31_t)0x954a1ab, (q31_t)0x94e5d71, (q31_t)0x9481931, (q31_t)0x941d4eb, + (q31_t)0x93b90a0, + (q31_t)0x9354c4f, (q31_t)0x92f07f8, (q31_t)0x928c39b, (q31_t)0x9227f39, (q31_t)0x91c3ad2, (q31_t)0x915f664, (q31_t)0x90fb1f1, + (q31_t)0x9096d79, + (q31_t)0x90328fb, (q31_t)0x8fce477, (q31_t)0x8f69fee, (q31_t)0x8f05b5f, (q31_t)0x8ea16cb, (q31_t)0x8e3d231, (q31_t)0x8dd8d92, + (q31_t)0x8d748ed, + (q31_t)0x8d10443, (q31_t)0x8cabf93, (q31_t)0x8c47ade, (q31_t)0x8be3624, (q31_t)0x8b7f164, (q31_t)0x8b1ac9f, (q31_t)0x8ab67d4, + (q31_t)0x8a52304, + (q31_t)0x89ede2f, (q31_t)0x8989955, (q31_t)0x8925475, (q31_t)0x88c0f90, (q31_t)0x885caa5, (q31_t)0x87f85b5, (q31_t)0x87940c1, + (q31_t)0x872fbc6, + (q31_t)0x86cb6c7, (q31_t)0x86671c2, (q31_t)0x8602cb9, (q31_t)0x859e7aa, (q31_t)0x853a296, (q31_t)0x84d5d7d, (q31_t)0x847185e, + (q31_t)0x840d33b, + (q31_t)0x83a8e12, (q31_t)0x83448e5, (q31_t)0x82e03b2, (q31_t)0x827be7a, (q31_t)0x821793e, (q31_t)0x81b33fc, (q31_t)0x814eeb5, + (q31_t)0x80ea969, + (q31_t)0x8086419, (q31_t)0x8021ec3, (q31_t)0x7fbd968, (q31_t)0x7f59409, (q31_t)0x7ef4ea4, (q31_t)0x7e9093b, (q31_t)0x7e2c3cd, + (q31_t)0x7dc7e5a, + (q31_t)0x7d638e2, (q31_t)0x7cff365, (q31_t)0x7c9ade4, (q31_t)0x7c3685d, (q31_t)0x7bd22d2, (q31_t)0x7b6dd42, (q31_t)0x7b097ad, + (q31_t)0x7aa5214, + (q31_t)0x7a40c76, (q31_t)0x79dc6d3, (q31_t)0x797812b, (q31_t)0x7913b7f, (q31_t)0x78af5ce, (q31_t)0x784b019, (q31_t)0x77e6a5e, + (q31_t)0x77824a0, + (q31_t)0x771dedc, (q31_t)0x76b9914, (q31_t)0x7655347, (q31_t)0x75f0d76, (q31_t)0x758c7a1, (q31_t)0x75281c6, (q31_t)0x74c3be7, + (q31_t)0x745f604, + (q31_t)0x73fb01c, (q31_t)0x7396a30, (q31_t)0x733243f, (q31_t)0x72cde4a, (q31_t)0x7269851, (q31_t)0x7205253, (q31_t)0x71a0c50, + (q31_t)0x713c64a, + (q31_t)0x70d803f, (q31_t)0x7073a2f, (q31_t)0x700f41b, (q31_t)0x6faae03, (q31_t)0x6f467e7, (q31_t)0x6ee21c6, (q31_t)0x6e7dba1, + (q31_t)0x6e19578, + (q31_t)0x6db4f4a, (q31_t)0x6d50919, (q31_t)0x6cec2e3, (q31_t)0x6c87ca9, (q31_t)0x6c2366a, (q31_t)0x6bbf028, (q31_t)0x6b5a9e1, + (q31_t)0x6af6396, + (q31_t)0x6a91d47, (q31_t)0x6a2d6f4, (q31_t)0x69c909d, (q31_t)0x6964a42, (q31_t)0x69003e3, (q31_t)0x689bd80, (q31_t)0x6837718, + (q31_t)0x67d30ad, + (q31_t)0x676ea3d, (q31_t)0x670a3ca, (q31_t)0x66a5d53, (q31_t)0x66416d8, (q31_t)0x65dd058, (q31_t)0x65789d5, (q31_t)0x651434e, + (q31_t)0x64afcc3, + (q31_t)0x644b634, (q31_t)0x63e6fa2, (q31_t)0x638290b, (q31_t)0x631e271, (q31_t)0x62b9bd3, (q31_t)0x6255531, (q31_t)0x61f0e8b, + (q31_t)0x618c7e1, + (q31_t)0x6128134, (q31_t)0x60c3a83, (q31_t)0x605f3ce, (q31_t)0x5ffad15, (q31_t)0x5f96659, (q31_t)0x5f31f99, (q31_t)0x5ecd8d6, + (q31_t)0x5e6920e, + (q31_t)0x5e04b43, (q31_t)0x5da0475, (q31_t)0x5d3bda3, (q31_t)0x5cd76cd, (q31_t)0x5c72ff4, (q31_t)0x5c0e917, (q31_t)0x5baa237, + (q31_t)0x5b45b53, + (q31_t)0x5ae146b, (q31_t)0x5a7cd80, (q31_t)0x5a18692, (q31_t)0x59b3fa0, (q31_t)0x594f8aa, (q31_t)0x58eb1b2, (q31_t)0x5886ab5, + (q31_t)0x58223b6, + (q31_t)0x57bdcb3, (q31_t)0x57595ac, (q31_t)0x56f4ea2, (q31_t)0x5690795, (q31_t)0x562c085, (q31_t)0x55c7971, (q31_t)0x556325a, + (q31_t)0x54feb3f, + (q31_t)0x549a422, (q31_t)0x5435d01, (q31_t)0x53d15dd, (q31_t)0x536ceb5, (q31_t)0x530878a, (q31_t)0x52a405d, (q31_t)0x523f92c, + (q31_t)0x51db1f7, + (q31_t)0x5176ac0, (q31_t)0x5112385, (q31_t)0x50adc48, (q31_t)0x5049507, (q31_t)0x4fe4dc3, (q31_t)0x4f8067c, (q31_t)0x4f1bf32, + (q31_t)0x4eb77e5, + (q31_t)0x4e53095, (q31_t)0x4dee942, (q31_t)0x4d8a1ec, (q31_t)0x4d25a93, (q31_t)0x4cc1337, (q31_t)0x4c5cbd8, (q31_t)0x4bf8476, + (q31_t)0x4b93d11, + (q31_t)0x4b2f5a9, (q31_t)0x4acae3e, (q31_t)0x4a666d1, (q31_t)0x4a01f60, (q31_t)0x499d7ed, (q31_t)0x4939077, (q31_t)0x48d48fe, + (q31_t)0x4870182, + (q31_t)0x480ba04, (q31_t)0x47a7282, (q31_t)0x4742afe, (q31_t)0x46de377, (q31_t)0x4679bee, (q31_t)0x4615461, (q31_t)0x45b0cd2, + (q31_t)0x454c541, + (q31_t)0x44e7dac, (q31_t)0x4483615, (q31_t)0x441ee7c, (q31_t)0x43ba6df, (q31_t)0x4355f40, (q31_t)0x42f179f, (q31_t)0x428cffb, + (q31_t)0x4228854, + (q31_t)0x41c40ab, (q31_t)0x415f8ff, (q31_t)0x40fb151, (q31_t)0x40969a0, (q31_t)0x40321ed, (q31_t)0x3fcda37, (q31_t)0x3f6927f, + (q31_t)0x3f04ac4, + (q31_t)0x3ea0307, (q31_t)0x3e3bb48, (q31_t)0x3dd7386, (q31_t)0x3d72bc2, (q31_t)0x3d0e3fb, (q31_t)0x3ca9c32, (q31_t)0x3c45467, + (q31_t)0x3be0c99, + (q31_t)0x3b7c4c9, (q31_t)0x3b17cf7, (q31_t)0x3ab3523, (q31_t)0x3a4ed4c, (q31_t)0x39ea573, (q31_t)0x3985d97, (q31_t)0x39215ba, + (q31_t)0x38bcdda, + (q31_t)0x38585f8, (q31_t)0x37f3e14, (q31_t)0x378f62e, (q31_t)0x372ae46, (q31_t)0x36c665b, (q31_t)0x3661e6f, (q31_t)0x35fd680, + (q31_t)0x3598e8f, + (q31_t)0x353469c, (q31_t)0x34cfea8, (q31_t)0x346b6b1, (q31_t)0x3406eb8, (q31_t)0x33a26bd, (q31_t)0x333dec0, (q31_t)0x32d96c1, + (q31_t)0x3274ec0, + (q31_t)0x32106bd, (q31_t)0x31abeb9, (q31_t)0x31476b2, (q31_t)0x30e2ea9, (q31_t)0x307e69f, (q31_t)0x3019e93, (q31_t)0x2fb5684, + (q31_t)0x2f50e74, + (q31_t)0x2eec663, (q31_t)0x2e87e4f, (q31_t)0x2e2363a, (q31_t)0x2dbee22, (q31_t)0x2d5a609, (q31_t)0x2cf5def, (q31_t)0x2c915d2, + (q31_t)0x2c2cdb4, + (q31_t)0x2bc8594, (q31_t)0x2b63d73, (q31_t)0x2aff54f, (q31_t)0x2a9ad2a, (q31_t)0x2a36504, (q31_t)0x29d1cdc, (q31_t)0x296d4b2, + (q31_t)0x2908c87, + (q31_t)0x28a445a, (q31_t)0x283fc2b, (q31_t)0x27db3fb, (q31_t)0x2776bc9, (q31_t)0x2712396, (q31_t)0x26adb62, (q31_t)0x264932b, + (q31_t)0x25e4af4, + (q31_t)0x25802bb, (q31_t)0x251ba80, (q31_t)0x24b7244, (q31_t)0x2452a07, (q31_t)0x23ee1c8, (q31_t)0x2389988, (q31_t)0x2325147, + (q31_t)0x22c0904, + (q31_t)0x225c0bf, (q31_t)0x21f787a, (q31_t)0x2193033, (q31_t)0x212e7eb, (q31_t)0x20c9fa1, (q31_t)0x2065757, (q31_t)0x2000f0b, + (q31_t)0x1f9c6be, + (q31_t)0x1f37e6f, (q31_t)0x1ed3620, (q31_t)0x1e6edcf, (q31_t)0x1e0a57d, (q31_t)0x1da5d2a, (q31_t)0x1d414d6, (q31_t)0x1cdcc80, + (q31_t)0x1c7842a, + (q31_t)0x1c13bd2, (q31_t)0x1baf37a, (q31_t)0x1b4ab20, (q31_t)0x1ae62c5, (q31_t)0x1a81a69, (q31_t)0x1a1d20c, (q31_t)0x19b89ae, + (q31_t)0x1954150, + (q31_t)0x18ef8f0, (q31_t)0x188b08f, (q31_t)0x182682d, (q31_t)0x17c1fcb, (q31_t)0x175d767, (q31_t)0x16f8f03, (q31_t)0x169469d, + (q31_t)0x162fe37, + (q31_t)0x15cb5d0, (q31_t)0x1566d68, (q31_t)0x15024ff, (q31_t)0x149dc96, (q31_t)0x143942b, (q31_t)0x13d4bc0, (q31_t)0x1370354, + (q31_t)0x130bae7, + (q31_t)0x12a727a, (q31_t)0x1242a0c, (q31_t)0x11de19d, (q31_t)0x117992e, (q31_t)0x11150be, (q31_t)0x10b084d, (q31_t)0x104bfdb, + (q31_t)0xfe7769, + (q31_t)0xf82ef6, (q31_t)0xf1e683, (q31_t)0xeb9e0f, (q31_t)0xe5559b, (q31_t)0xdf0d26, (q31_t)0xd8c4b0, (q31_t)0xd27c3a, + (q31_t)0xcc33c3, + (q31_t)0xc5eb4c, (q31_t)0xbfa2d5, (q31_t)0xb95a5d, (q31_t)0xb311e4, (q31_t)0xacc96b, (q31_t)0xa680f2, (q31_t)0xa03878, + (q31_t)0x99effe, + (q31_t)0x93a784, (q31_t)0x8d5f09, (q31_t)0x87168e, (q31_t)0x80ce12, (q31_t)0x7a8597, (q31_t)0x743d1a, (q31_t)0x6df49e, + (q31_t)0x67ac21, + (q31_t)0x6163a5, (q31_t)0x5b1b27, (q31_t)0x54d2aa, (q31_t)0x4e8a2c, (q31_t)0x4841af, (q31_t)0x41f931, (q31_t)0x3bb0b3, + (q31_t)0x356835, + (q31_t)0x2f1fb6, (q31_t)0x28d738, (q31_t)0x228eb9, (q31_t)0x1c463b, (q31_t)0x15fdbc, (q31_t)0xfb53d, (q31_t)0x96cbe, (q31_t)0x3243f +}; + +/** + * @} end of DCT4_IDCT4_Table group + */ + +/** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/** + * @brief Initialization function for the Q31 DCT4/IDCT4. + * @param[in,out] *S points to an instance of Q31 DCT4/IDCT4 structure. + * @param[in] *S_RFFT points to an instance of Q31 RFFT/RIFFT structure + * @param[in] *S_CFFT points to an instance of Q31 CFFT/CIFFT structure + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + * \par Normalizing factor: + * The normalizing factor is sqrt(2/N), which depends on the size of transform N. + * Normalizing factors in 1.31 format are mentioned in the table below for different DCT sizes: + * \image html dct4NormalizingQ31Table.gif + */ + +arm_status arm_dct4_init_q31( + arm_dct4_instance_q31 * S, + arm_rfft_instance_q31 * S_RFFT, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q31_t normalize) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initializing the pointer array with the weight table base addresses of different lengths */ + q31_t *twiddlePtr[4] = { (q31_t *) WeightsQ31_128, (q31_t *) WeightsQ31_512, + (q31_t *) WeightsQ31_2048, (q31_t *) WeightsQ31_8192 + }; + + /* Initializing the pointer array with the cos factor table base addresses of different lengths */ + q31_t *pCosFactor[4] = + { (q31_t *) cos_factorsQ31_128, (q31_t *) cos_factorsQ31_512, + (q31_t *) cos_factorsQ31_2048, (q31_t *) cos_factorsQ31_8192 + }; + + /* Initialize the DCT4 length */ + S->N = N; + + /* Initialize the half of DCT4 length */ + S->Nby2 = Nby2; + + /* Initialize the DCT4 Normalizing factor */ + S->normalize = normalize; + + /* Initialize Real FFT Instance */ + S->pRfft = S_RFFT; + + /* Initialize Complex FFT Instance */ + S->pCfft = S_CFFT; + + switch (N) + { + /* Initialize the table modifier values */ + case 8192U: + S->pTwiddle = twiddlePtr[3]; + S->pCosFactor = pCosFactor[3]; + break; + case 2048U: + S->pTwiddle = twiddlePtr[2]; + S->pCosFactor = pCosFactor[2]; + break; + case 512U: + S->pTwiddle = twiddlePtr[1]; + S->pCosFactor = pCosFactor[1]; + break; + case 128U: + S->pTwiddle = twiddlePtr[0]; + S->pCosFactor = pCosFactor[0]; + break; + default: + status = ARM_MATH_ARGUMENT_ERROR; + } + + /* Initialize the RFFT/RIFFT Function */ + arm_rfft_init_q31(S->pRfft, S->N, 0, 1); + + /* return the status of DCT4 Init function */ + return (status); +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c new file mode 100644 index 0000000..4fd7f6e --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q15.c @@ -0,0 +1,382 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_dct4_q15.c + * Description: Processing function of DCT4 & IDCT4 Q15 + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/** + * @brief Processing function for the Q15 DCT4/IDCT4. + * @param[in] *S points to an instance of the Q15 DCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + * + * \par Input an output formats: + * Internally inputs are downscaled in the RFFT process function to avoid overflows. + * Number of bits downscaled, depends on the size of the transform. + * The input and output formats for different DCT sizes and number of bits to upscale are mentioned in the table below: + * + * \image html dct4FormatsQ15Table.gif + */ + +void arm_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer) +{ + uint32_t i; /* Loop counter */ + q15_t *weights = S->pTwiddle; /* Pointer to the Weights table */ + q15_t *cosFact = S->pCosFactor; /* Pointer to the cos factors table */ + q15_t *pS1, *pS2, *pbuff; /* Temporary pointers for input buffer and pState buffer */ + q15_t in; /* Temporary variable */ + + + /* DCT4 computation involves DCT2 (which is calculated using RFFT) + * along with some pre-processing and post-processing. + * Computational procedure is explained as follows: + * (a) Pre-processing involves multiplying input with cos factor, + * r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n)) + * where, + * r(n) -- output of preprocessing + * u(n) -- input to preprocessing(actual Source buffer) + * (b) Calculation of DCT2 using FFT is divided into three steps: + * Step1: Re-ordering of even and odd elements of input. + * Step2: Calculating FFT of the re-ordered input. + * Step3: Taking the real part of the product of FFT output and weights. + * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation: + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * where, + * Y4 -- DCT4 output, Y2 -- DCT2 output + * (d) Multiplying the output with the normalizing factor sqrt(2/N). + */ + + /*-------- Pre-processing ------------*/ + /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */ + arm_mult_q15(pInlineBuffer, cosFact, pInlineBuffer, S->N); + arm_shift_q15(pInlineBuffer, 1, pInlineBuffer, S->N); + + /* ---------------------------------------------------------------- + * Step1: Re-ordering of even and odd elements as + * pState[i] = pInlineBuffer[2*i] and + * pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2 + ---------------------------------------------------------------------*/ + + /* pS1 initialized to pState */ + pS1 = pState; + + /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */ + pS2 = pState + (S->N - 1U); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */ + i = (uint32_t) S->Nby2 >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = (uint32_t) S->N >> 2U; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. + * Compute 4 outputs at a time */ + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_q15(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_q15(pState, weights, pState, S->N); + + /* The output of complex multiplication is in 3.13 format. + * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.15 format by shifting left by 2 bits. */ + arm_shift_q15(pState, 2, pState, S->N * 2); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */ + i = ((uint32_t) S->N - 1U) >> 2U; + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ >> 1U; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + i = ((uint32_t) S->N - 1U) % 0x4U; + + while (i > 0U) + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + /* Decrement the loop counter */ + i--; + } + + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = (uint32_t) S->N >> 2U; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. Compute 4 outputs at a time */ + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); + + in = *pbuff; + *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); + + in = *pbuff; + *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); + + in = *pbuff; + *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initializing the loop counter to N/2 */ + i = (uint32_t) S->Nby2; + + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter */ + i = (uint32_t) S->N; + + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_q15(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_q15(pState, weights, pState, S->N); + + /* The output of complex multiplication is in 3.13 format. + * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.15 format by shifting left by 2 bits. */ + arm_shift_q15(pState, 2, pState, S->N * 2); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* Initializing the loop counter */ + i = ((uint32_t) S->N - 1U); + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ >> 1U; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + do + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter */ + i = (uint32_t) S->N; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = ((q15_t) (((q31_t) in * S->normalize) >> 15)); + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c new file mode 100644 index 0000000..7191208 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_dct4_q31.c @@ -0,0 +1,383 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_dct4_q31.c + * Description: Processing function of DCT4 & IDCT4 Q31 + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @addtogroup DCT4_IDCT4 + * @{ + */ + +/** + * @brief Processing function for the Q31 DCT4/IDCT4. + * @param[in] *S points to an instance of the Q31 DCT4 structure. + * @param[in] *pState points to state buffer. + * @param[in,out] *pInlineBuffer points to the in-place input and output buffer. + * @return none. + * \par Input an output formats: + * Input samples need to be downscaled by 1 bit to avoid saturations in the Q31 DCT process, + * as the conversion from DCT2 to DCT4 involves one subtraction. + * Internally inputs are downscaled in the RFFT process function to avoid overflows. + * Number of bits downscaled, depends on the size of the transform. + * The input and output formats for different DCT sizes and number of bits to upscale are mentioned in the table below: + * + * \image html dct4FormatsQ31Table.gif + */ + +void arm_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer) +{ + uint16_t i; /* Loop counter */ + q31_t *weights = S->pTwiddle; /* Pointer to the Weights table */ + q31_t *cosFact = S->pCosFactor; /* Pointer to the cos factors table */ + q31_t *pS1, *pS2, *pbuff; /* Temporary pointers for input buffer and pState buffer */ + q31_t in; /* Temporary variable */ + + + /* DCT4 computation involves DCT2 (which is calculated using RFFT) + * along with some pre-processing and post-processing. + * Computational procedure is explained as follows: + * (a) Pre-processing involves multiplying input with cos factor, + * r(n) = 2 * u(n) * cos(pi*(2*n+1)/(4*n)) + * where, + * r(n) -- output of preprocessing + * u(n) -- input to preprocessing(actual Source buffer) + * (b) Calculation of DCT2 using FFT is divided into three steps: + * Step1: Re-ordering of even and odd elements of input. + * Step2: Calculating FFT of the re-ordered input. + * Step3: Taking the real part of the product of FFT output and weights. + * (c) Post-processing - DCT4 can be obtained from DCT2 output using the following equation: + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * where, + * Y4 -- DCT4 output, Y2 -- DCT2 output + * (d) Multiplying the output with the normalizing factor sqrt(2/N). + */ + + /*-------- Pre-processing ------------*/ + /* Multiplying input with cos factor i.e. r(n) = 2 * x(n) * cos(pi*(2*n+1)/(4*n)) */ + arm_mult_q31(pInlineBuffer, cosFact, pInlineBuffer, S->N); + arm_shift_q31(pInlineBuffer, 1, pInlineBuffer, S->N); + + /* ---------------------------------------------------------------- + * Step1: Re-ordering of even and odd elements as + * pState[i] = pInlineBuffer[2*i] and + * pState[N-i-1] = pInlineBuffer[2*i+1] where i = 0 to N/2 + ---------------------------------------------------------------------*/ + + /* pS1 initialized to pState */ + pS1 = pState; + + /* pS2 initialized to pState+N-1, so that it points to the end of the state buffer */ + pS2 = pState + (S->N - 1U); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /* Initializing the loop counter to N/2 >> 2 for loop unrolling by 4 */ + i = S->Nby2 >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + *pS1++ = *pbuff++; + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = S->N >> 2U; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. + * Compute 4 outputs at a time */ + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_q31(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_q31(pState, weights, pState, S->N); + + /* The output of complex multiplication is in 3.29 format. + * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.31 format by shifting left by 2 bits. */ + arm_shift_q31(pState, 2, pState, S->N * 2); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* Initializing the loop counter to N >> 2 for loop unrolling by 4 */ + i = (S->N - 1U) >> 2U; + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ >> 1U; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + do + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + in = *pS1++ - in; + *pbuff++ = in; + pS1++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + i = (S->N - 1U) % 0x4U; + + while (i > 0U) + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + /* Decrement the loop counter */ + i--; + } + + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter to N/4 instead of N for loop unrolling */ + i = S->N >> 2U; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + /* Processing with loop unrolling 4 times as N is always multiple of 4. Compute 4 outputs at a time */ + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); + + in = *pbuff; + *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); + + in = *pbuff; + *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); + + in = *pbuff; + *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initializing the loop counter to N/2 */ + i = S->Nby2; + + do + { + /* Re-ordering of even and odd elements */ + /* pState[i] = pInlineBuffer[2*i] */ + *pS1++ = *pbuff++; + /* pState[N-i-1] = pInlineBuffer[2*i+1] */ + *pS2-- = *pbuff++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + /* pbuff initialized to input buffer */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Initializing the loop counter */ + i = S->N; + + do + { + /* Writing the re-ordered output back to inplace input buffer */ + *pbuff++ = *pS1++; + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + + + /* --------------------------------------------------------- + * Step2: Calculate RFFT for N-point input + * ---------------------------------------------------------- */ + /* pInlineBuffer is real input of length N , pState is the complex output of length 2N */ + arm_rfft_q31(S->pRfft, pInlineBuffer, pState); + + /*---------------------------------------------------------------------- + * Step3: Multiply the FFT output with the weights. + *----------------------------------------------------------------------*/ + arm_cmplx_mult_cmplx_q31(pState, weights, pState, S->N); + + /* The output of complex multiplication is in 3.29 format. + * Hence changing the format of N (i.e. 2*N elements) complex numbers to 1.31 format by shifting left by 2 bits. */ + arm_shift_q31(pState, 2, pState, S->N * 2); + + /* ----------- Post-processing ---------- */ + /* DCT-IV can be obtained from DCT-II by the equation, + * Y4(k) = Y2(k) - Y4(k-1) and Y4(-1) = Y4(0) + * Hence, Y4(0) = Y2(0)/2 */ + /* Getting only real part from the output and Converting to DCT-IV */ + + /* pbuff initialized to input buffer. */ + pbuff = pInlineBuffer; + + /* pS1 initialized to pState */ + pS1 = pState; + + /* Calculating Y4(0) from Y2(0) using Y4(0) = Y2(0)/2 */ + in = *pS1++ >> 1U; + /* input buffer acts as inplace, so output values are stored in the input itself. */ + *pbuff++ = in; + + /* pState pointer is incremented twice as the real values are located alternatively in the array */ + pS1++; + + /* Initializing the loop counter */ + i = (S->N - 1U); + + while (i > 0U) + { + /* Calculating Y4(1) to Y4(N-1) from Y2 using equation Y4(k) = Y2(k) - Y4(k-1) */ + /* pState pointer (pS1) is incremented twice as the real values are located alternatively in the array */ + in = *pS1++ - in; + *pbuff++ = in; + /* points to the next real value */ + pS1++; + + /* Decrement the loop counter */ + i--; + } + + + /*------------ Normalizing the output by multiplying with the normalizing factor ----------*/ + + /* Initializing the loop counter */ + i = S->N; + + /* pbuff initialized to the pInlineBuffer(now contains the output values) */ + pbuff = pInlineBuffer; + + do + { + /* Multiplying pInlineBuffer with the normalizing factor sqrt(2/N) */ + in = *pbuff; + *pbuff++ = ((q31_t) (((q63_t) in * S->normalize) >> 31)); + + /* Decrement the loop counter */ + i--; + } while (i > 0U); + +#endif /* #if defined (ARM_MATH_DSP) */ + +} + +/** + * @} end of DCT4_IDCT4 group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c new file mode 100644 index 0000000..16c75eb --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_f32.c @@ -0,0 +1,318 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_rfft_f32.c + * Description: RFFT & RIFFT Floating point process function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/* ---------------------------------------------------------------------- + * Internal functions prototypes + * -------------------------------------------------------------------- */ + +extern void arm_radix4_butterfly_f32( + float32_t * pSrc, + uint16_t fftLen, + float32_t * pCoef, + uint16_t twidCoefModifier); + +extern void arm_radix4_butterfly_inverse_f32( + float32_t * pSrc, + uint16_t fftLen, + float32_t * pCoef, + uint16_t twidCoefModifier, + float32_t onebyfftLen); + +extern void arm_bitreversal_f32( + float32_t * pSrc, + uint16_t fftSize, + uint16_t bitRevFactor, + uint16_t * pBitRevTab); + +void arm_split_rfft_f32( + float32_t * pSrc, + uint32_t fftLen, + float32_t * pATable, + float32_t * pBTable, + float32_t * pDst, + uint32_t modifier); + +void arm_split_rifft_f32( + float32_t * pSrc, + uint32_t fftLen, + float32_t * pATable, + float32_t * pBTable, + float32_t * pDst, + uint32_t modifier); + +/** +* @ingroup groupTransforms +*/ + +/** + * @addtogroup RealFFT + * @{ + */ + +/** + * @brief Processing function for the floating-point RFFT/RIFFT. + * @deprecated Do not use this function. It has been superceded by \ref arm_rfft_fast_f32 and will be removed + * in the future. + * @param[in] *S points to an instance of the floating-point RFFT/RIFFT structure. + * @param[in] *pSrc points to the input buffer. + * @param[out] *pDst points to the output buffer. + * @return none. + */ + +void arm_rfft_f32( + const arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst) +{ + const arm_cfft_radix4_instance_f32 *S_CFFT = S->pCfft; + + + /* Calculation of Real IFFT of input */ + if (S->ifftFlagR == 1U) + { + /* Real IFFT core process */ + arm_split_rifft_f32(pSrc, S->fftLenBy2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + + + /* Complex radix-4 IFFT process */ + arm_radix4_butterfly_inverse_f32(pDst, S_CFFT->fftLen, + S_CFFT->pTwiddle, + S_CFFT->twidCoefModifier, + S_CFFT->onebyfftLen); + + /* Bit reversal process */ + if (S->bitReverseFlagR == 1U) + { + arm_bitreversal_f32(pDst, S_CFFT->fftLen, + S_CFFT->bitRevFactor, S_CFFT->pBitRevTable); + } + } + else + { + + /* Calculation of RFFT of input */ + + /* Complex radix-4 FFT process */ + arm_radix4_butterfly_f32(pSrc, S_CFFT->fftLen, + S_CFFT->pTwiddle, S_CFFT->twidCoefModifier); + + /* Bit reversal process */ + if (S->bitReverseFlagR == 1U) + { + arm_bitreversal_f32(pSrc, S_CFFT->fftLen, + S_CFFT->bitRevFactor, S_CFFT->pBitRevTable); + } + + + /* Real FFT core process */ + arm_split_rfft_f32(pSrc, S->fftLenBy2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + } + +} + +/** + * @} end of RealFFT group + */ + +/** + * @brief Core Real FFT process + * @param[in] *pSrc points to the input buffer. + * @param[in] fftLen length of FFT. + * @param[in] *pATable points to the twiddle Coef A buffer. + * @param[in] *pBTable points to the twiddle Coef B buffer. + * @param[out] *pDst points to the output buffer. + * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_split_rfft_f32( + float32_t * pSrc, + uint32_t fftLen, + float32_t * pATable, + float32_t * pBTable, + float32_t * pDst, + uint32_t modifier) +{ + uint32_t i; /* Loop Counter */ + float32_t outR, outI; /* Temporary variables for output */ + float32_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + float32_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ + float32_t *pDst1 = &pDst[2], *pDst2 = &pDst[(4U * fftLen) - 1U]; /* temp pointers for output buffer */ + float32_t *pSrc1 = &pSrc[2], *pSrc2 = &pSrc[(2U * fftLen) - 1U]; /* temp pointers for input buffer */ + + /* Init coefficient pointers */ + pCoefA = &pATable[modifier * 2U]; + pCoefB = &pBTable[modifier * 2U]; + + i = fftLen - 1U; + + while (i > 0U) + { + /* + outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] + + pSrc[2 * n - 2 * i] * pBTable[2 * i] + + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + */ + + /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */ + + /* read pATable[2 * i] */ + CoefA1 = *pCoefA++; + /* pATable[2 * i + 1] */ + CoefA2 = *pCoefA; + + /* pSrc[2 * i] * pATable[2 * i] */ + outR = *pSrc1 * CoefA1; + /* pSrc[2 * i] * CoefA2 */ + outI = *pSrc1++ * CoefA2; + + /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */ + outR -= (*pSrc1 + *pSrc2) * CoefA2; + /* pSrc[2 * i + 1] * CoefA1 */ + outI += *pSrc1++ * CoefA1; + + CoefB1 = *pCoefB; + + /* pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */ + outI -= *pSrc2-- * CoefB1; + /* pSrc[2 * fftLen - 2 * i] * CoefA2 */ + outI -= *pSrc2 * CoefA2; + + /* pSrc[2 * fftLen - 2 * i] * CoefB1 */ + outR += *pSrc2-- * CoefB1; + + /* write output */ + *pDst1++ = outR; + *pDst1++ = outI; + + /* write complex conjugate output */ + *pDst2-- = -outI; + *pDst2-- = outR; + + /* update coefficient pointer */ + pCoefB = pCoefB + (modifier * 2U); + pCoefA = pCoefA + ((modifier * 2U) - 1U); + + i--; + + } + + pDst[2U * fftLen] = pSrc[0] - pSrc[1]; + pDst[(2U * fftLen) + 1U] = 0.0f; + + pDst[0] = pSrc[0] + pSrc[1]; + pDst[1] = 0.0f; + +} + + +/** + * @brief Core Real IFFT process + * @param[in] *pSrc points to the input buffer. + * @param[in] fftLen length of FFT. + * @param[in] *pATable points to the twiddle Coef A buffer. + * @param[in] *pBTable points to the twiddle Coef B buffer. + * @param[out] *pDst points to the output buffer. + * @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. + * @return none. + */ + +void arm_split_rifft_f32( + float32_t * pSrc, + uint32_t fftLen, + float32_t * pATable, + float32_t * pBTable, + float32_t * pDst, + uint32_t modifier) +{ + float32_t outR, outI; /* Temporary variables for output */ + float32_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + float32_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ + float32_t *pSrc1 = &pSrc[0], *pSrc2 = &pSrc[(2U * fftLen) + 1U]; + + pCoefA = &pATable[0]; + pCoefB = &pBTable[0]; + + while (fftLen > 0U) + { + /* + outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + + outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); + + */ + + CoefA1 = *pCoefA++; + CoefA2 = *pCoefA; + + /* outR = (pSrc[2 * i] * CoefA1 */ + outR = *pSrc1 * CoefA1; + + /* - pSrc[2 * i] * CoefA2 */ + outI = -(*pSrc1++) * CoefA2; + + /* (pSrc[2 * i + 1] + pSrc[2 * fftLen - 2 * i + 1]) * CoefA2 */ + outR += (*pSrc1 + *pSrc2) * CoefA2; + + /* pSrc[2 * i + 1] * CoefA1 */ + outI += (*pSrc1++) * CoefA1; + + CoefB1 = *pCoefB; + + /* - pSrc[2 * fftLen - 2 * i + 1] * CoefB1 */ + outI -= *pSrc2-- * CoefB1; + + /* pSrc[2 * fftLen - 2 * i] * CoefB1 */ + outR += *pSrc2 * CoefB1; + + /* pSrc[2 * fftLen - 2 * i] * CoefA2 */ + outI += *pSrc2-- * CoefA2; + + /* write output */ + *pDst++ = outR; + *pDst++ = outI; + + /* update coefficient pointer */ + pCoefB = pCoefB + (modifier * 2U); + pCoefA = pCoefA + ((modifier * 2U) - 1U); + + /* Decrement loop count */ + fftLen--; + } + +} diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c new file mode 100644 index 0000000..08e06e0 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_f32.c @@ -0,0 +1,317 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_rfft_f32.c + * Description: RFFT & RIFFT Floating point process function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +void stage_rfft_f32( + arm_rfft_fast_instance_f32 * S, + float32_t * p, float32_t * pOut) +{ + uint32_t k; /* Loop Counter */ + float32_t twR, twI; /* RFFT Twiddle coefficients */ + float32_t * pCoeff = S->pTwiddleRFFT; /* Points to RFFT Twiddle factors */ + float32_t *pA = p; /* increasing pointer */ + float32_t *pB = p; /* decreasing pointer */ + float32_t xAR, xAI, xBR, xBI; /* temporary variables */ + float32_t t1a, t1b; /* temporary variables */ + float32_t p0, p1, p2, p3; /* temporary variables */ + + + k = (S->Sint).fftLen - 1; + + /* Pack first and last sample of the frequency domain together */ + + xBR = pB[0]; + xBI = pB[1]; + xAR = pA[0]; + xAI = pA[1]; + + twR = *pCoeff++ ; + twI = *pCoeff++ ; + + // U1 = XA(1) + XB(1); % It is real + t1a = xBR + xAR ; + + // U2 = XB(1) - XA(1); % It is imaginary + t1b = xBI + xAI ; + + // real(tw * (xB - xA)) = twR * (xBR - xAR) - twI * (xBI - xAI); + // imag(tw * (xB - xA)) = twI * (xBR - xAR) + twR * (xBI - xAI); + *pOut++ = 0.5f * ( t1a + t1b ); + *pOut++ = 0.5f * ( t1a - t1b ); + + // XA(1) = 1/2*( U1 - imag(U2) + i*( U1 +imag(U2) )); + pB = p + 2*k; + pA += 2; + + do + { + /* + function X = my_split_rfft(X, ifftFlag) + % X is a series of real numbers + L = length(X); + XC = X(1:2:end) +i*X(2:2:end); + XA = fft(XC); + XB = conj(XA([1 end:-1:2])); + TW = i*exp(-2*pi*i*[0:L/2-1]/L).'; + for l = 2:L/2 + XA(l) = 1/2 * (XA(l) + XB(l) + TW(l) * (XB(l) - XA(l))); + end + XA(1) = 1/2* (XA(1) + XB(1) + TW(1) * (XB(1) - XA(1))) + i*( 1/2*( XA(1) + XB(1) + i*( XA(1) - XB(1)))); + X = XA; + */ + + xBI = pB[1]; + xBR = pB[0]; + xAR = pA[0]; + xAI = pA[1]; + + twR = *pCoeff++; + twI = *pCoeff++; + + t1a = xBR - xAR ; + t1b = xBI + xAI ; + + // real(tw * (xB - xA)) = twR * (xBR - xAR) - twI * (xBI - xAI); + // imag(tw * (xB - xA)) = twI * (xBR - xAR) + twR * (xBI - xAI); + p0 = twR * t1a; + p1 = twI * t1a; + p2 = twR * t1b; + p3 = twI * t1b; + + *pOut++ = 0.5f * (xAR + xBR + p0 + p3 ); //xAR + *pOut++ = 0.5f * (xAI - xBI + p1 - p2 ); //xAI + + pA += 2; + pB -= 2; + k--; + } while (k > 0U); +} + +/* Prepares data for inverse cfft */ +void merge_rfft_f32( +arm_rfft_fast_instance_f32 * S, +float32_t * p, float32_t * pOut) +{ + uint32_t k; /* Loop Counter */ + float32_t twR, twI; /* RFFT Twiddle coefficients */ + float32_t *pCoeff = S->pTwiddleRFFT; /* Points to RFFT Twiddle factors */ + float32_t *pA = p; /* increasing pointer */ + float32_t *pB = p; /* decreasing pointer */ + float32_t xAR, xAI, xBR, xBI; /* temporary variables */ + float32_t t1a, t1b, r, s, t, u; /* temporary variables */ + + k = (S->Sint).fftLen - 1; + + xAR = pA[0]; + xAI = pA[1]; + + pCoeff += 2 ; + + *pOut++ = 0.5f * ( xAR + xAI ); + *pOut++ = 0.5f * ( xAR - xAI ); + + pB = p + 2*k ; + pA += 2 ; + + while (k > 0U) + { + /* G is half of the frequency complex spectrum */ + //for k = 2:N + // Xk(k) = 1/2 * (G(k) + conj(G(N-k+2)) + Tw(k)*( G(k) - conj(G(N-k+2)))); + xBI = pB[1] ; + xBR = pB[0] ; + xAR = pA[0]; + xAI = pA[1]; + + twR = *pCoeff++; + twI = *pCoeff++; + + t1a = xAR - xBR ; + t1b = xAI + xBI ; + + r = twR * t1a; + s = twI * t1b; + t = twI * t1a; + u = twR * t1b; + + // real(tw * (xA - xB)) = twR * (xAR - xBR) - twI * (xAI - xBI); + // imag(tw * (xA - xB)) = twI * (xAR - xBR) + twR * (xAI - xBI); + *pOut++ = 0.5f * (xAR + xBR - r - s ); //xAR + *pOut++ = 0.5f * (xAI - xBI + t - u ); //xAI + + pA += 2; + pB -= 2; + k--; + } + +} + +/** +* @ingroup groupTransforms +*/ + +/** + * @defgroup RealFFT Real FFT Functions + * + * \par + * The CMSIS DSP library includes specialized algorithms for computing the + * FFT of real data sequences. The FFT is defined over complex data but + * in many applications the input is real. Real FFT algorithms take advantage + * of the symmetry properties of the FFT and have a speed advantage over complex + * algorithms of the same length. + * \par + * The Fast RFFT algorith relays on the mixed radix CFFT that save processor usage. + * \par + * The real length N forward FFT of a sequence is computed using the steps shown below. + * \par + * \image html RFFT.gif "Real Fast Fourier Transform" + * \par + * The real sequence is initially treated as if it were complex to perform a CFFT. + * Later, a processing stage reshapes the data to obtain half of the frequency spectrum + * in complex format. Except the first complex number that contains the two real numbers + * X[0] and X[N/2] all the data is complex. In other words, the first complex sample + * contains two real values packed. + * \par + * The input for the inverse RFFT should keep the same format as the output of the + * forward RFFT. A first processing stage pre-process the data to later perform an + * inverse CFFT. + * \par + * \image html RIFFT.gif "Real Inverse Fast Fourier Transform" + * \par + * The algorithms for floating-point, Q15, and Q31 data are slightly different + * and we describe each algorithm in turn. + * \par Floating-point + * The main functions are arm_rfft_fast_f32() and arm_rfft_fast_init_f32(). + * The older functions arm_rfft_f32() and arm_rfft_init_f32() have been + * deprecated but are still documented. + * \par + * The FFT of a real N-point sequence has even symmetry in the frequency + * domain. The second half of the data equals the conjugate of the first + * half flipped in frequency. Looking at the data, we see that we can + * uniquely represent the FFT using only N/2 complex numbers. These are + * packed into the output array in alternating real and imaginary + * components: + * \par + * X = { real[0], imag[0], real[1], imag[1], real[2], imag[2] ... + * real[(N/2)-1], imag[(N/2)-1 } + * \par + * It happens that the first complex number (real[0], imag[0]) is actually + * all real. real[0] represents the DC offset, and imag[0] should be 0. + * (real[1], imag[1]) is the fundamental frequency, (real[2], imag[2]) is + * the first harmonic and so on. + * \par + * The real FFT functions pack the frequency domain data in this fashion. + * The forward transform outputs the data in this form and the inverse + * transform expects input data in this form. The function always performs + * the needed bitreversal so that the input and output data is always in + * normal order. The functions support lengths of [32, 64, 128, ..., 4096] + * samples. + * \par Q15 and Q31 + * The real algorithms are defined in a similar manner and utilize N/2 complex + * transforms behind the scenes. + * \par + * The complex transforms used internally include scaling to prevent fixed-point + * overflows. The overall scaling equals 1/(fftLen/2). + * \par + * A separate instance structure must be defined for each transform used but + * twiddle factor and bit reversal tables can be reused. + * \par + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Sets the values of the internal structure fields. + * - Initializes twiddle factor table and bit reversal table pointers. + * - Initializes the internal complex FFT data structure. + * \par + * Use of the initialization function is optional. + * However, if the initialization function is used, then the instance structure + * cannot be placed into a const data section. To place an instance structure + * into a const data section, the instance structure should be manually + * initialized as follows: + *
+ *arm_rfft_instance_q31 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};
+ *arm_rfft_instance_q15 S = {fftLenReal, fftLenBy2, ifftFlagR, bitReverseFlagR, twidCoefRModifier, pTwiddleAReal, pTwiddleBReal, pCfft};
+ * 
+ * where fftLenReal is the length of the real transform; + * fftLenBy2 length of the internal complex transform. + * ifftFlagR Selects forward (=0) or inverse (=1) transform. + * bitReverseFlagR Selects bit reversed output (=0) or normal order + * output (=1). + * twidCoefRModifier stride modifier for the twiddle factor table. + * The value is based on the FFT length; + * pTwiddleARealpoints to the A array of twiddle coefficients; + * pTwiddleBRealpoints to the B array of twiddle coefficients; + * pCfft points to the CFFT Instance structure. The CFFT structure + * must also be initialized. Refer to arm_cfft_radix4_f32() for details regarding + * static initialization of the complex FFT instance structure. + */ + +/** +* @addtogroup RealFFT +* @{ +*/ + +/** +* @brief Processing function for the floating-point real FFT. +* @param[in] *S points to an arm_rfft_fast_instance_f32 structure. +* @param[in] *p points to the input buffer. +* @param[in] *pOut points to the output buffer. +* @param[in] ifftFlag RFFT if flag is 0, RIFFT if flag is 1 +* @return none. +*/ + +void arm_rfft_fast_f32( +arm_rfft_fast_instance_f32 * S, +float32_t * p, float32_t * pOut, +uint8_t ifftFlag) +{ + arm_cfft_instance_f32 * Sint = &(S->Sint); + Sint->fftLen = S->fftLenRFFT / 2; + + /* Calculation of Real FFT */ + if (ifftFlag) + { + /* Real FFT compression */ + merge_rfft_f32(S, p, pOut); + + /* Complex radix-4 IFFT process */ + arm_cfft_f32( Sint, pOut, ifftFlag, 1); + } + else + { + /* Calculation of RFFT of input */ + arm_cfft_f32( Sint, p, ifftFlag, 1); + + /* Real FFT extraction */ + stage_rfft_f32(S, p, pOut); + } +} + +/** +* @} end of RealFFT group +*/ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c new file mode 100644 index 0000000..6f6c2f9 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_fast_init_f32.c @@ -0,0 +1,131 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_cfft_init_f32.c + * Description: Split Radix Decimation in Frequency CFFT Floating point processing function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" + +/** + * @ingroup groupTransforms + */ + +/** + * @addtogroup RealFFT + * @{ + */ + +/** +* @brief Initialization function for the floating-point real FFT. +* @param[in,out] *S points to an arm_rfft_fast_instance_f32 structure. +* @param[in] fftLen length of the Real Sequence. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLen is not a supported value. +* +* \par Description: +* \par +* The parameter fftLen Specifies length of RFFT/CIFFT process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096. +* \par +* This Function also initializes Twiddle factor table pointer and Bit reversal table pointer. +*/ +arm_status arm_rfft_fast_init_f32( + arm_rfft_fast_instance_f32 * S, + uint16_t fftLen) +{ + arm_cfft_instance_f32 * Sint; + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + /* Initialise the FFT length */ + Sint = &(S->Sint); + Sint->fftLen = fftLen/2; + S->fftLenRFFT = fftLen; + + /* Initializations of structure parameters depending on the FFT length */ + switch (Sint->fftLen) + { + case 2048U: + /* Initializations of structure parameters for 2048 point FFT */ + /* Initialise the bit reversal table length */ + Sint->bitRevLength = ARMBITREVINDEXTABLE_2048_TABLE_LENGTH; + /* Initialise the bit reversal table pointer */ + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable2048; + /* Initialise the Twiddle coefficient pointers */ + Sint->pTwiddle = (float32_t *) twiddleCoef_2048; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_4096; + break; + case 1024U: + Sint->bitRevLength = ARMBITREVINDEXTABLE_1024_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable1024; + Sint->pTwiddle = (float32_t *) twiddleCoef_1024; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_2048; + break; + case 512U: + Sint->bitRevLength = ARMBITREVINDEXTABLE_512_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable512; + Sint->pTwiddle = (float32_t *) twiddleCoef_512; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_1024; + break; + case 256U: + Sint->bitRevLength = ARMBITREVINDEXTABLE_256_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable256; + Sint->pTwiddle = (float32_t *) twiddleCoef_256; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_512; + break; + case 128U: + Sint->bitRevLength = ARMBITREVINDEXTABLE_128_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable128; + Sint->pTwiddle = (float32_t *) twiddleCoef_128; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_256; + break; + case 64U: + Sint->bitRevLength = ARMBITREVINDEXTABLE_64_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable64; + Sint->pTwiddle = (float32_t *) twiddleCoef_64; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_128; + break; + case 32U: + Sint->bitRevLength = ARMBITREVINDEXTABLE_32_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable32; + Sint->pTwiddle = (float32_t *) twiddleCoef_32; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_64; + break; + case 16U: + Sint->bitRevLength = ARMBITREVINDEXTABLE_16_TABLE_LENGTH; + Sint->pBitRevTable = (uint16_t *)armBitRevIndexTable16; + Sint->pTwiddle = (float32_t *) twiddleCoef_16; + S->pTwiddleRFFT = (float32_t *) twiddleCoef_rfft_32; + break; + default: + /* Reporting argument error if fftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + return (status); +} + +/** + * @} end of RealFFT group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c new file mode 100644 index 0000000..fd02e41 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_f32.c @@ -0,0 +1,4273 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_rfft_init_f32.c + * Description: RFFT & RIFFT Floating point initialisation function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/** + * @ingroup RealFFT + */ + +/** + * @addtogroup RealFFT_Table Real FFT Tables + * @{ + */ + +/** +* \par +* Generation of realCoefA array: +* \par +* n = 4096 +*
for (i = 0; i < n; i++)
+*  {
+*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));
+*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
+*  } 
+*/ +static const float32_t realCoefA[8192] = { + 0.500000000000000f, -0.500000000000000f, 0.499616503715515f, -0.499999850988388f, + 0.499233007431030f, -0.499999403953552f, 0.498849511146545f, -0.499998688697815f, + 0.498466014862061f, -0.499997645616531f, 0.498082518577576f, -0.499996334314346f, + 0.497699022293091f, -0.499994695186615f, 0.497315555810928f, -0.499992787837982f, + 0.496932059526443f, -0.499990582466125f, 0.496548563241959f, -0.499988079071045f, + 0.496165096759796f, -0.499985307455063f, 0.495781600475311f, -0.499982208013535f, + 0.495398133993149f, -0.499978810548782f, 0.495014637708664f, -0.499975144863129f, + 0.494631171226501f, -0.499971181154251f, 0.494247704744339f, -0.499966919422150f, + 0.493864238262177f, -0.499962359666824f, 0.493480771780014f, -0.499957501888275f, + 0.493097305297852f, -0.499952346086502f, 0.492713838815689f, -0.499946922063828f, + 0.492330402135849f, -0.499941170215607f, 0.491946935653687f, -0.499935150146484f, + 0.491563498973846f, -0.499928832054138f, 0.491180062294006f, -0.499922215938568f, + 0.490796625614166f, -0.499915301799774f, 0.490413218736649f, -0.499908089637756f, + 0.490029782056808f, -0.499900579452515f, 0.489646375179291f, -0.499892801046371f, + 0.489262968301773f, -0.499884694814682f, 0.488879561424255f, -0.499876320362091f, + 0.488496154546738f, -0.499867647886276f, 0.488112777471542f, -0.499858677387238f, + 0.487729400396347f, -0.499849408864975f, 0.487346023321152f, -0.499839842319489f, + 0.486962646245956f, -0.499830007553101f, 0.486579269170761f, -0.499819844961166f, + 0.486195921897888f, -0.499809414148331f, 0.485812574625015f, -0.499798685312271f, + 0.485429257154465f, -0.499787658452988f, 0.485045909881592f, -0.499776333570480f, + 0.484662592411041f, -0.499764710664749f, 0.484279274940491f, -0.499752789735794f, + 0.483895987272263f, -0.499740600585938f, 0.483512699604034f, -0.499728083610535f, + 0.483129411935806f, -0.499715298414230f, 0.482746154069901f, -0.499702215194702f, + 0.482362866401672f, -0.499688833951950f, 0.481979638338089f, -0.499675154685974f, + 0.481596380472183f, -0.499661177396774f, 0.481213152408600f, -0.499646931886673f, + 0.480829954147339f, -0.499632388353348f, 0.480446726083755f, -0.499617516994476f, + 0.480063527822495f, -0.499602377414703f, 0.479680359363556f, -0.499586939811707f, + 0.479297190904617f, -0.499571204185486f, 0.478914022445679f, -0.499555170536041f, + 0.478530883789063f, -0.499538868665695f, 0.478147745132446f, -0.499522238969803f, + 0.477764606475830f, -0.499505341053009f, 0.477381497621536f, -0.499488145112991f, + 0.476998418569565f, -0.499470651149750f, 0.476615339517593f, -0.499452859163284f, + 0.476232260465622f, -0.499434769153595f, 0.475849211215973f, -0.499416410923004f, + 0.475466161966324f, -0.499397724866867f, 0.475083142518997f, -0.499378770589828f, + 0.474700123071671f, -0.499359518289566f, 0.474317133426666f, -0.499339967966080f, + 0.473934143781662f, -0.499320119619370f, 0.473551183938980f, -0.499299973249435f, + 0.473168224096298f, -0.499279528856277f, 0.472785294055939f, -0.499258816242218f, + 0.472402364015579f, -0.499237775802612f, 0.472019463777542f, -0.499216467142105f, + 0.471636593341827f, -0.499194860458374f, 0.471253722906113f, -0.499172955751419f, + 0.470870882272720f, -0.499150782823563f, 0.470488041639328f, -0.499128282070160f, + 0.470105201005936f, -0.499105513095856f, 0.469722419977188f, -0.499082416296005f, + 0.469339638948441f, -0.499059051275253f, 0.468956857919693f, -0.499035388231277f, + 0.468574106693268f, -0.499011427164078f, 0.468191385269165f, -0.498987197875977f, + 0.467808693647385f, -0.498962640762329f, 0.467426002025604f, -0.498937815427780f, + 0.467043310403824f, -0.498912662267685f, 0.466660678386688f, -0.498887240886688f, + 0.466278046369553f, -0.498861521482468f, 0.465895414352417f, -0.498835533857346f, + 0.465512841939926f, -0.498809218406677f, 0.465130269527435f, -0.498782604932785f, + 0.464747726917267f, -0.498755723237991f, 0.464365184307098f, -0.498728543519974f, + 0.463982671499252f, -0.498701065778732f, 0.463600188493729f, -0.498673290014267f, + 0.463217705488205f, -0.498645216226578f, 0.462835282087326f, -0.498616874217987f, + 0.462452858686447f, -0.498588204383850f, 0.462070435285568f, -0.498559266328812f, + 0.461688071489334f, -0.498530030250549f, 0.461305707693100f, -0.498500496149063f, + 0.460923373699188f, -0.498470664024353f, 0.460541069507599f, -0.498440563678741f, + 0.460158795118332f, -0.498410135507584f, 0.459776520729065f, -0.498379439115524f, + 0.459394276142120f, -0.498348444700241f, 0.459012061357498f, -0.498317152261734f, + 0.458629876375198f, -0.498285561800003f, 0.458247691392899f, -0.498253703117371f, + 0.457865566015244f, -0.498221516609192f, 0.457483440637589f, -0.498189061880112f, + 0.457101345062256f, -0.498156309127808f, 0.456719279289246f, -0.498123258352280f, + 0.456337243318558f, -0.498089909553528f, 0.455955207347870f, -0.498056292533875f, + 0.455573230981827f, -0.498022347688675f, 0.455191254615784f, -0.497988134622574f, + 0.454809308052063f, -0.497953623533249f, 0.454427421092987f, -0.497918814420700f, + 0.454045534133911f, -0.497883707284927f, 0.453663676977158f, -0.497848302125931f, + 0.453281819820404f, -0.497812628746033f, 0.452900022268295f, -0.497776657342911f, + 0.452518254518509f, -0.497740387916565f, 0.452136516571045f, -0.497703820466995f, + 0.451754778623581f, -0.497666954994202f, 0.451373100280762f, -0.497629791498184f, + 0.450991421937943f, -0.497592359781265f, 0.450609803199768f, -0.497554630041122f, + 0.450228184461594f, -0.497516602277756f, 0.449846625328064f, -0.497478276491165f, + 0.449465066194534f, -0.497439652681351f, 0.449083566665649f, -0.497400760650635f, + 0.448702067136765f, -0.497361570596695f, 0.448320597410202f, -0.497322082519531f, + 0.447939187288284f, -0.497282296419144f, 0.447557777166367f, -0.497242212295532f, + 0.447176426649094f, -0.497201830148697f, 0.446795076131821f, -0.497161179780960f, + 0.446413785219193f, -0.497120231389999f, 0.446032524108887f, -0.497078984975815f, + 0.445651292800903f, -0.497037440538406f, 0.445270061492920f, -0.496995598077774f, + 0.444888889789581f, -0.496953487396240f, 0.444507747888565f, -0.496911078691483f, + 0.444126635789871f, -0.496868371963501f, 0.443745553493500f, -0.496825367212296f, + 0.443364530801773f, -0.496782064437866f, 0.442983508110046f, -0.496738493442535f, + 0.442602545022964f, -0.496694594621658f, 0.442221581935883f, -0.496650427579880f, + 0.441840678453445f, -0.496605962514877f, 0.441459804773331f, -0.496561229228973f, + 0.441078960895538f, -0.496516168117523f, 0.440698176622391f, -0.496470838785172f, + 0.440317392349243f, -0.496425211429596f, 0.439936667680740f, -0.496379286050797f, + 0.439555943012238f, -0.496333062648773f, 0.439175277948380f, -0.496286571025848f, + 0.438794672489166f, -0.496239781379700f, 0.438414067029953f, -0.496192663908005f, + 0.438033521175385f, -0.496145308017731f, 0.437653005123138f, -0.496097624301910f, + 0.437272518873215f, -0.496049642562866f, 0.436892062425613f, -0.496001392602921f, + 0.436511665582657f, -0.495952844619751f, 0.436131268739700f, -0.495903998613358f, + 0.435750931501389f, -0.495854884386063f, 0.435370653867722f, -0.495805442333221f, + 0.434990376234055f, -0.495755732059479f, 0.434610158205032f, -0.495705723762512f, + 0.434229999780655f, -0.495655417442322f, 0.433849841356277f, -0.495604842901230f, + 0.433469742536545f, -0.495553970336914f, 0.433089673519135f, -0.495502769947052f, + 0.432709634304047f, -0.495451331138611f, 0.432329654693604f, -0.495399564504623f, + 0.431949704885483f, -0.495347499847412f, 0.431569814682007f, -0.495295166969299f, + 0.431189924478531f, -0.495242536067963f, 0.430810123682022f, -0.495189607143402f, + 0.430430322885513f, -0.495136409997940f, 0.430050581693649f, -0.495082914829254f, + 0.429670870304108f, -0.495029091835022f, 0.429291218519211f, -0.494975030422211f, + 0.428911596536636f, -0.494920641183853f, 0.428532034158707f, -0.494865983724594f, + 0.428152471780777f, -0.494810998439789f, 0.427772998809814f, -0.494755744934082f, + 0.427393525838852f, -0.494700223207474f, 0.427014142274857f, -0.494644373655319f, + 0.426634758710861f, -0.494588255882263f, 0.426255434751511f, -0.494531840085983f, + 0.425876170396805f, -0.494475126266479f, 0.425496935844421f, -0.494418144226074f, + 0.425117731094360f, -0.494360834360123f, 0.424738585948944f, -0.494303256273270f, + 0.424359470605850f, -0.494245409965515f, 0.423980414867401f, -0.494187235832214f, + 0.423601418733597f, -0.494128793478012f, 0.423222452402115f, -0.494070053100586f, + 0.422843515872955f, -0.494011014699936f, 0.422464638948441f, -0.493951678276062f, + 0.422085791826248f, -0.493892073631287f, 0.421707004308701f, -0.493832170963287f, + 0.421328276395798f, -0.493771970272064f, 0.420949578285217f, -0.493711471557617f, + 0.420570939779282f, -0.493650704622269f, 0.420192331075668f, -0.493589639663696f, + 0.419813781976700f, -0.493528276681900f, 0.419435262680054f, -0.493466645479202f, + 0.419056802988052f, -0.493404686450958f, 0.418678402900696f, -0.493342459201813f, + 0.418300032615662f, -0.493279963731766f, 0.417921721935272f, -0.493217140436172f, + 0.417543441057205f, -0.493154048919678f, 0.417165219783783f, -0.493090659379959f, + 0.416787058115005f, -0.493026971817017f, 0.416408926248550f, -0.492963016033173f, + 0.416030853986740f, -0.492898762226105f, 0.415652841329575f, -0.492834210395813f, + 0.415274858474731f, -0.492769360542297f, 0.414896935224533f, -0.492704242467880f, + 0.414519041776657f, -0.492638826370239f, 0.414141237735748f, -0.492573112249374f, + 0.413763463497162f, -0.492507129907608f, 0.413385748863220f, -0.492440819740295f, + 0.413008064031601f, -0.492374241352081f, 0.412630438804626f, -0.492307394742966f, + 0.412252873182297f, -0.492240220308304f, 0.411875367164612f, -0.492172777652740f, + 0.411497890949249f, -0.492105036973953f, 0.411120474338531f, -0.492037028074265f, + 0.410743117332459f, -0.491968721151352f, 0.410365819931030f, -0.491900116205215f, + 0.409988552331924f, -0.491831213235855f, 0.409611344337463f, -0.491762012243271f, + 0.409234195947647f, -0.491692543029785f, 0.408857107162476f, -0.491622805595398f, + 0.408480048179626f, -0.491552740335464f, 0.408103078603745f, -0.491482406854630f, + 0.407726138830185f, -0.491411775350571f, 0.407349258661270f, -0.491340845823288f, + 0.406972438097000f, -0.491269648075104f, 0.406595647335052f, -0.491198152303696f, + 0.406218945980072f, -0.491126358509064f, 0.405842274427414f, -0.491054296493530f, + 0.405465662479401f, -0.490981936454773f, 0.405089110136032f, -0.490909278392792f, + 0.404712617397308f, -0.490836352109909f, 0.404336184263229f, -0.490763127803802f, + 0.403959810733795f, -0.490689605474472f, 0.403583467006683f, -0.490615785121918f, + 0.403207212686539f, -0.490541696548462f, 0.402830988168716f, -0.490467309951782f, + 0.402454853057861f, -0.490392625331879f, 0.402078747749329f, -0.490317672491074f, + 0.401702702045441f, -0.490242421627045f, 0.401326715946198f, -0.490166902542114f, + 0.400950789451599f, -0.490091055631638f, 0.400574922561646f, -0.490014940500259f, + 0.400199115276337f, -0.489938557147980f, 0.399823367595673f, -0.489861875772476f, + 0.399447679519653f, -0.489784896373749f, 0.399072051048279f, -0.489707618951797f, + 0.398696482181549f, -0.489630073308945f, 0.398320972919464f, -0.489552229642868f, + 0.397945523262024f, -0.489474087953568f, 0.397570133209229f, -0.489395678043365f, + 0.397194802761078f, -0.489316970109940f, 0.396819531917572f, -0.489237964153290f, + 0.396444320678711f, -0.489158689975739f, 0.396069169044495f, -0.489079117774963f, + 0.395694077014923f, -0.488999247550964f, 0.395319044589996f, -0.488919109106064f, + 0.394944071769714f, -0.488838672637939f, 0.394569188356400f, -0.488757967948914f, + 0.394194334745407f, -0.488676935434341f, 0.393819570541382f, -0.488595664501190f, + 0.393444836139679f, -0.488514065742493f, 0.393070191144943f, -0.488432198762894f, + 0.392695605754852f, -0.488350033760071f, 0.392321079969406f, -0.488267600536346f, + 0.391946613788605f, -0.488184869289398f, 0.391572207212448f, -0.488101840019226f, + 0.391197860240936f, -0.488018542528152f, 0.390823602676392f, -0.487934947013855f, + 0.390449374914169f, -0.487851053476334f, 0.390075236558914f, -0.487766891717911f, + 0.389701157808304f, -0.487682431936264f, 0.389327138662338f, -0.487597703933716f, + 0.388953179121017f, -0.487512677907944f, 0.388579308986664f, -0.487427353858948f, + 0.388205498456955f, -0.487341761589050f, 0.387831717729568f, -0.487255871295929f, + 0.387458056211472f, -0.487169682979584f, 0.387084424495697f, -0.487083226442337f, + 0.386710882186890f, -0.486996471881866f, 0.386337369680405f, -0.486909449100494f, + 0.385963946580887f, -0.486822128295898f, 0.385590612888336f, -0.486734509468079f, + 0.385217308998108f, -0.486646622419357f, 0.384844094514847f, -0.486558437347412f, + 0.384470939636230f, -0.486469984054565f, 0.384097874164581f, -0.486381232738495f, + 0.383724838495255f, -0.486292183399200f, 0.383351892232895f, -0.486202865839005f, + 0.382979035377502f, -0.486113250255585f, 0.382606208324432f, -0.486023366451263f, + 0.382233470678329f, -0.485933154821396f, 0.381860792636871f, -0.485842704772949f, + 0.381488204002380f, -0.485751956701279f, 0.381115674972534f, -0.485660910606384f, + 0.380743205547333f, -0.485569566488266f, 0.380370795726776f, -0.485477954149246f, + 0.379998475313187f, -0.485386073589325f, 0.379626244306564f, -0.485293895006180f, + 0.379254043102264f, -0.485201418399811f, 0.378881961107254f, -0.485108673572540f, + 0.378509908914566f, -0.485015630722046f, 0.378137946128845f, -0.484922289848328f, + 0.377766042947769f, -0.484828680753708f, 0.377394229173660f, -0.484734803438187f, + 0.377022475004196f, -0.484640628099442f, 0.376650810241699f, -0.484546154737473f, + 0.376279205083847f, -0.484451413154602f, 0.375907659530640f, -0.484356373548508f, + 0.375536203384399f, -0.484261035919189f, 0.375164806842804f, -0.484165430068970f, + 0.374793499708176f, -0.484069555997849f, 0.374422252178192f, -0.483973383903503f, + 0.374051094055176f, -0.483876913785934f, 0.373679995536804f, -0.483780175447464f, + 0.373308986425400f, -0.483683139085770f, 0.372938036918640f, -0.483585834503174f, + 0.372567176818848f, -0.483488231897354f, 0.372196376323700f, -0.483390361070633f, + 0.371825665235519f, -0.483292192220688f, 0.371455013751984f, -0.483193725347519f, + 0.371084451675415f, -0.483094990253448f, 0.370713949203491f, -0.482995986938477f, + 0.370343536138535f, -0.482896685600281f, 0.369973212480545f, -0.482797086238861f, + 0.369602948427200f, -0.482697218656540f, 0.369232743978500f, -0.482597053050995f, + 0.368862658739090f, -0.482496619224548f, 0.368492603302002f, -0.482395917177200f, + 0.368122667074203f, -0.482294887304306f, 0.367752790451050f, -0.482193619012833f, + 0.367382973432541f, -0.482092022895813f, 0.367013275623322f, -0.481990188360214f, + 0.366643607616425f, -0.481888025999069f, 0.366274058818817f, -0.481785595417023f, + 0.365904569625854f, -0.481682896614075f, 0.365535169839859f, -0.481579899787903f, + 0.365165829658508f, -0.481476634740829f, 0.364796578884125f, -0.481373071670532f, + 0.364427417516708f, -0.481269240379334f, 0.364058345556259f, -0.481165111064911f, + 0.363689333200455f, -0.481060713529587f, 0.363320380449295f, -0.480956017971039f, + 0.362951546907425f, -0.480851024389267f, 0.362582772970200f, -0.480745792388916f, + 0.362214088439941f, -0.480640232563019f, 0.361845493316650f, -0.480534434318542f, + 0.361476957798004f, -0.480428308248520f, 0.361108511686325f, -0.480321943759918f, + 0.360740154981613f, -0.480215251445770f, 0.360371887683868f, -0.480108320713043f, + 0.360003679990768f, -0.480001062154770f, 0.359635561704636f, -0.479893565177917f, + 0.359267532825470f, -0.479785770177841f, 0.358899593353271f, -0.479677677154541f, + 0.358531713485718f, -0.479569315910339f, 0.358163923025131f, -0.479460656642914f, + 0.357796221971512f, -0.479351729154587f, 0.357428610324860f, -0.479242533445358f, + 0.357061088085175f, -0.479133039712906f, 0.356693625450134f, -0.479023247957230f, + 0.356326282024384f, -0.478913217782974f, 0.355958998203278f, -0.478802859783173f, + 0.355591803789139f, -0.478692263364792f, 0.355224698781967f, -0.478581339120865f, + 0.354857653379440f, -0.478470176458359f, 0.354490727186203f, -0.478358715772629f, + 0.354123860597610f, -0.478246957063675f, 0.353757113218308f, -0.478134930133820f, + 0.353390425443649f, -0.478022634983063f, 0.353023827075958f, -0.477910041809082f, + 0.352657318115234f, -0.477797180414200f, 0.352290898561478f, -0.477684020996094f, + 0.351924568414688f, -0.477570593357086f, 0.351558297872543f, -0.477456867694855f, + 0.351192146539688f, -0.477342873811722f, 0.350826084613800f, -0.477228611707687f, + 0.350460082292557f, -0.477114051580429f, 0.350094199180603f, -0.476999223232269f, + 0.349728375673294f, -0.476884096860886f, 0.349362671375275f, -0.476768702268600f, + 0.348997026681900f, -0.476653009653091f, 0.348631471395493f, -0.476537048816681f, + 0.348266035318375f, -0.476420819759369f, 0.347900658845901f, -0.476304292678833f, + 0.347535371780396f, -0.476187497377396f, 0.347170203924179f, -0.476070433855057f, + 0.346805095672607f, -0.475953072309494f, 0.346440106630325f, -0.475835442543030f, + 0.346075177192688f, -0.475717514753342f, 0.345710366964340f, -0.475599318742752f, + 0.345345616340637f, -0.475480824708939f, 0.344980984926224f, -0.475362062454224f, + 0.344616413116455f, -0.475243031978607f, 0.344251960515976f, -0.475123733282089f, + 0.343887597322464f, -0.475004136562347f, 0.343523323535919f, -0.474884241819382f, + 0.343159139156342f, -0.474764078855515f, 0.342795044183731f, -0.474643647670746f, + 0.342431038618088f, -0.474522948265076f, 0.342067122459412f, -0.474401950836182f, + 0.341703325510025f, -0.474280685186386f, 0.341339588165283f, -0.474159121513367f, + 0.340975970029831f, -0.474037289619446f, 0.340612411499023f, -0.473915189504623f, + 0.340248972177505f, -0.473792791366577f, 0.339885622262955f, -0.473670125007629f, + 0.339522391557693f, -0.473547190427780f, 0.339159220457077f, -0.473423957824707f, + 0.338796168565750f, -0.473300457000732f, 0.338433176279068f, -0.473176687955856f, + 0.338070303201675f, -0.473052620887756f, 0.337707549333572f, -0.472928285598755f, + 0.337344855070114f, -0.472803652286530f, 0.336982280015945f, -0.472678780555725f, + 0.336619764566422f, -0.472553610801697f, 0.336257368326187f, -0.472428143024445f, + 0.335895091295242f, -0.472302407026291f, 0.335532873868942f, -0.472176402807236f, + 0.335170775651932f, -0.472050130367279f, 0.334808766841888f, -0.471923559904099f, + 0.334446847438812f, -0.471796721220016f, 0.334085017442703f, -0.471669614315033f, + 0.333723306655884f, -0.471542209386826f, 0.333361685276031f, -0.471414536237717f, + 0.333000183105469f, -0.471286594867706f, 0.332638740539551f, -0.471158385276794f, + 0.332277417182922f, -0.471029877662659f, 0.331916213035584f, -0.470901101827621f, + 0.331555068492889f, -0.470772027969360f, 0.331194043159485f, -0.470642685890198f, + 0.330833107233047f, -0.470513075590134f, 0.330472290515900f, -0.470383197069168f, + 0.330111563205719f, -0.470253020524979f, 0.329750925302505f, -0.470122605562210f, + 0.329390406608582f, -0.469991862773895f, 0.329029977321625f, -0.469860881567001f, + 0.328669637441635f, -0.469729602336884f, 0.328309416770935f, -0.469598054885864f, + 0.327949285507202f, -0.469466239213943f, 0.327589273452759f, -0.469334155321121f, + 0.327229350805283f, -0.469201773405075f, 0.326869517564774f, -0.469069123268127f, + 0.326509803533554f, -0.468936175107956f, 0.326150178909302f, -0.468802988529205f, + 0.325790673494339f, -0.468669503927231f, 0.325431257486343f, -0.468535751104355f, + 0.325071930885315f, -0.468401730060577f, 0.324712723493576f, -0.468267410993576f, + 0.324353635311127f, -0.468132823705673f, 0.323994606733322f, -0.467997968196869f, + 0.323635727167130f, -0.467862844467163f, 0.323276937007904f, -0.467727422714233f, + 0.322918236255646f, -0.467591762542725f, 0.322559654712677f, -0.467455804347992f, + 0.322201162576675f, -0.467319577932358f, 0.321842789649963f, -0.467183053493500f, + 0.321484506130219f, -0.467046260833740f, 0.321126341819763f, -0.466909229755402f, + 0.320768296718597f, -0.466771900653839f, 0.320410341024399f, -0.466634273529053f, + 0.320052474737167f, -0.466496407985687f, 0.319694727659225f, -0.466358244419098f, + 0.319337099790573f, -0.466219812631607f, 0.318979561328888f, -0.466081112623215f, + 0.318622142076492f, -0.465942144393921f, 0.318264812231064f, -0.465802878141403f, + 0.317907601594925f, -0.465663343667984f, 0.317550510168076f, -0.465523540973663f, + 0.317193508148193f, -0.465383470058441f, 0.316836595535278f, -0.465243130922318f, + 0.316479831933975f, -0.465102523565292f, 0.316123157739639f, -0.464961618185043f, + 0.315766572952271f, -0.464820444583893f, 0.315410137176514f, -0.464679002761841f, + 0.315053790807724f, -0.464537292718887f, 0.314697533845901f, -0.464395314455032f, + 0.314341396093369f, -0.464253038167953f, 0.313985377550125f, -0.464110493659973f, + 0.313629478216171f, -0.463967710733414f, 0.313273668289185f, -0.463824629783630f, + 0.312917977571487f, -0.463681250810623f, 0.312562376260757f, -0.463537633419037f, + 0.312206923961639f, -0.463393747806549f, 0.311851561069489f, -0.463249564170837f, + 0.311496287584305f, -0.463105112314224f, 0.311141163110733f, -0.462960392236710f, + 0.310786128044128f, -0.462815403938293f, 0.310431212186813f, -0.462670147418976f, + 0.310076385736465f, -0.462524622678757f, 0.309721708297729f, -0.462378799915314f, + 0.309367120265961f, -0.462232738733292f, 0.309012651443481f, -0.462086379528046f, + 0.308658272027969f, -0.461939752101898f, 0.308304041624069f, -0.461792886257172f, + 0.307949900627136f, -0.461645722389221f, 0.307595878839493f, -0.461498260498047f, + 0.307241976261139f, -0.461350560188293f, 0.306888192892075f, -0.461202591657639f, + 0.306534498929977f, -0.461054325103760f, 0.306180924177170f, -0.460905820131302f, + 0.305827468633652f, -0.460757017135620f, 0.305474132299423f, -0.460607945919037f, + 0.305120915174484f, -0.460458606481552f, 0.304767817258835f, -0.460309028625488f, + 0.304414808750153f, -0.460159152746201f, 0.304061919450760f, -0.460008978843689f, + 0.303709149360657f, -0.459858566522598f, 0.303356528282166f, -0.459707885980606f, + 0.303003966808319f, -0.459556937217712f, 0.302651554346085f, -0.459405690431595f, + 0.302299261093140f, -0.459254205226898f, 0.301947087049484f, -0.459102421998978f, + 0.301595002412796f, -0.458950400352478f, 0.301243066787720f, -0.458798080682755f, + 0.300891220569611f, -0.458645492792130f, 0.300539493560791f, -0.458492636680603f, + 0.300187885761261f, -0.458339542150497f, 0.299836426973343f, -0.458186149597168f, + 0.299485057592392f, -0.458032488822937f, 0.299133807420731f, -0.457878559827805f, + 0.298782676458359f, -0.457724362611771f, 0.298431664705276f, -0.457569897174835f, + 0.298080772161484f, -0.457415163516998f, 0.297729998826981f, -0.457260161638260f, + 0.297379344701767f, -0.457104891538620f, 0.297028809785843f, -0.456949323415756f, + 0.296678394079208f, -0.456793516874313f, 0.296328097581863f, -0.456637442111969f, + 0.295977920293808f, -0.456481099128723f, 0.295627862215042f, -0.456324487924576f, + 0.295277923345566f, -0.456167578697205f, 0.294928103685379f, -0.456010431051254f, + 0.294578403234482f, -0.455853015184402f, 0.294228851795197f, -0.455695331096649f, + 0.293879389762878f, -0.455537378787994f, 0.293530046939850f, -0.455379128456116f, + 0.293180853128433f, -0.455220639705658f, 0.292831748723984f, -0.455061882734299f, + 0.292482793331146f, -0.454902857542038f, 0.292133957147598f, -0.454743564128876f, + 0.291785210371017f, -0.454584002494812f, 0.291436612606049f, -0.454424172639847f, + 0.291088134050369f, -0.454264044761658f, 0.290739774703979f, -0.454103678464890f, + 0.290391564369202f, -0.453943043947220f, 0.290043443441391f, -0.453782171010971f, + 0.289695471525192f, -0.453621000051498f, 0.289347589015961f, -0.453459560871124f, + 0.288999855518341f, -0.453297853469849f, 0.288652241230011f, -0.453135877847672f, + 0.288304775953293f, -0.452973634004593f, 0.287957400083542f, -0.452811151742935f, + 0.287610173225403f, -0.452648371458054f, 0.287263035774231f, -0.452485352754593f, + 0.286916047334671f, -0.452322036027908f, 0.286569178104401f, -0.452158480882645f, + 0.286222457885742f, -0.451994657516479f, 0.285875827074051f, -0.451830536127090f, + 0.285529345273972f, -0.451666176319122f, 0.285182982683182f, -0.451501548290253f, + 0.284836769104004f, -0.451336652040482f, 0.284490644931793f, -0.451171487569809f, + 0.284144669771194f, -0.451006084680557f, 0.283798813819885f, -0.450840383768082f, + 0.283453077077866f, -0.450674414634705f, 0.283107489347458f, -0.450508207082748f, + 0.282762020826340f, -0.450341701507568f, 0.282416671514511f, -0.450174957513809f, + 0.282071471214294f, -0.450007945299149f, 0.281726360321045f, -0.449840664863586f, + 0.281381398439407f, -0.449673116207123f, 0.281036585569382f, -0.449505299329758f, + 0.280691891908646f, -0.449337244033813f, 0.280347317457199f, -0.449168890714645f, + 0.280002862215042f, -0.449000298976898f, 0.279658555984497f, -0.448831409215927f, + 0.279314368963242f, -0.448662281036377f, 0.278970301151276f, -0.448492884635925f, + 0.278626382350922f, -0.448323249816895f, 0.278282582759857f, -0.448153316974640f, + 0.277938932180405f, -0.447983115911484f, 0.277595400810242f, -0.447812676429749f, + 0.277251988649368f, -0.447641968727112f, 0.276908725500107f, -0.447470992803574f, + 0.276565581560135f, -0.447299748659134f, 0.276222556829453f, -0.447128236293793f, + 0.275879681110382f, -0.446956485509872f, 0.275536954402924f, -0.446784436702728f, + 0.275194346904755f, -0.446612149477005f, 0.274851858615875f, -0.446439594030380f, + 0.274509519338608f, -0.446266770362854f, 0.274167299270630f, -0.446093708276749f, + 0.273825198411942f, -0.445920348167419f, 0.273483246564865f, -0.445746749639511f, + 0.273141443729401f, -0.445572882890701f, 0.272799760103226f, -0.445398747920990f, + 0.272458195686340f, -0.445224374532700f, 0.272116780281067f, -0.445049703121185f, + 0.271775513887405f, -0.444874793291092f, 0.271434366703033f, -0.444699615240097f, + 0.271093338727951f, -0.444524168968201f, 0.270752459764481f, -0.444348484277725f, + 0.270411729812622f, -0.444172531366348f, 0.270071119070053f, -0.443996280431747f, + 0.269730657339096f, -0.443819820880890f, 0.269390314817429f, -0.443643063306808f, + 0.269050091505051f, -0.443466067314148f, 0.268710047006607f, -0.443288803100586f, + 0.268370121717453f, -0.443111270666122f, 0.268030315637589f, -0.442933470010757f, + 0.267690658569336f, -0.442755430936813f, 0.267351150512695f, -0.442577123641968f, + 0.267011761665344f, -0.442398548126221f, 0.266672492027283f, -0.442219734191895f, + 0.266333401203156f, -0.442040622234344f, 0.265994429588318f, -0.441861271858215f, + 0.265655577182770f, -0.441681683063507f, 0.265316903591156f, -0.441501796245575f, + 0.264978319406509f, -0.441321671009064f, 0.264639914035797f, -0.441141277551651f, + 0.264301627874374f, -0.440960645675659f, 0.263963490724564f, -0.440779715776443f, + 0.263625472784042f, -0.440598547458649f, 0.263287603855133f, -0.440417140722275f, + 0.262949883937836f, -0.440235435962677f, 0.262612313032150f, -0.440053492784500f, + 0.262274861335754f, -0.439871311187744f, 0.261937558650970f, -0.439688831567764f, + 0.261600375175476f, -0.439506113529205f, 0.261263370513916f, -0.439323127269745f, + 0.260926485061646f, -0.439139902591705f, 0.260589718818665f, -0.438956409692764f, + 0.260253131389618f, -0.438772648572922f, 0.259916663169861f, -0.438588619232178f, + 0.259580343961716f, -0.438404351472855f, 0.259244143962860f, -0.438219845294952f, + 0.258908122777939f, -0.438035041093826f, 0.258572220802307f, -0.437849998474121f, + 0.258236467838287f, -0.437664687633514f, 0.257900834083557f, -0.437479138374329f, + 0.257565379142761f, -0.437293320894241f, 0.257230043411255f, -0.437107264995575f, + 0.256894856691360f, -0.436920911073685f, 0.256559818983078f, -0.436734348535538f, + 0.256224930286407f, -0.436547487974167f, 0.255890160799026f, -0.436360388994217f, + 0.255555540323257f, -0.436173021793365f, 0.255221068859100f, -0.435985416173935f, + 0.254886746406555f, -0.435797542333603f, 0.254552572965622f, -0.435609430074692f, + 0.254218548536301f, -0.435421019792557f, 0.253884643316269f, -0.435232400894165f, + 0.253550916910172f, -0.435043483972549f, 0.253217309713364f, -0.434854328632355f, + 0.252883851528168f, -0.434664934873581f, 0.252550542354584f, -0.434475272893906f, + 0.252217382192612f, -0.434285342693329f, 0.251884341239929f, -0.434095174074173f, + 0.251551479101181f, -0.433904737234116f, 0.251218736171722f, -0.433714061975479f, + 0.250886172056198f, -0.433523118495941f, 0.250553727149963f, -0.433331936597824f, + 0.250221431255341f, -0.433140486478806f, 0.249889299273491f, -0.432948768138886f, + 0.249557301402092f, -0.432756811380386f, 0.249225467443466f, -0.432564586400986f, + 0.248893767595291f, -0.432372123003006f, 0.248562216758728f, -0.432179391384125f, + 0.248230814933777f, -0.431986421346664f, 0.247899547219276f, -0.431793183088303f, + 0.247568443417549f, -0.431599706411362f, 0.247237488627434f, -0.431405961513519f, + 0.246906682848930f, -0.431211978197098f, 0.246576011180878f, -0.431017726659775f, + 0.246245503425598f, -0.430823236703873f, 0.245915144681931f, -0.430628478527069f, + 0.245584934949875f, -0.430433481931686f, 0.245254859328270f, -0.430238217115402f, + 0.244924947619438f, -0.430042684078217f, 0.244595184922218f, -0.429846942424774f, + 0.244265571236610f, -0.429650902748108f, 0.243936106562614f, -0.429454624652863f, + 0.243606805801392f, -0.429258108139038f, 0.243277639150620f, -0.429061323404312f, + 0.242948621511459f, -0.428864300251007f, 0.242619767785072f, -0.428667008876801f, + 0.242291063070297f, -0.428469479084015f, 0.241962507367134f, -0.428271710872650f, + 0.241634100675583f, -0.428073674440384f, 0.241305842995644f, -0.427875369787216f, + 0.240977749228477f, -0.427676826715469f, 0.240649804472923f, -0.427478045225143f, + 0.240322008728981f, -0.427278995513916f, 0.239994361996651f, -0.427079707384110f, + 0.239666879177094f, -0.426880151033401f, 0.239339530467987f, -0.426680356264114f, + 0.239012360572815f, -0.426480293273926f, 0.238685324788094f, -0.426279991865158f, + 0.238358452916145f, -0.426079452037811f, 0.238031730055809f, -0.425878643989563f, + 0.237705156207085f, -0.425677597522736f, 0.237378746271133f, -0.425476282835007f, + 0.237052485346794f, -0.425274729728699f, 0.236726388335228f, -0.425072938203812f, + 0.236400425434113f, -0.424870878458023f, 0.236074641346931f, -0.424668580293655f, + 0.235749006271362f, -0.424466013908386f, 0.235423520207405f, -0.424263238906860f, + 0.235098183155060f, -0.424060165882111f, 0.234773010015488f, -0.423856884241104f, + 0.234448000788689f, -0.423653304576874f, 0.234123140573502f, -0.423449516296387f, + 0.233798429369926f, -0.423245459794998f, 0.233473882079124f, -0.423041164875031f, + 0.233149498701096f, -0.422836631536484f, 0.232825264334679f, -0.422631829977036f, + 0.232501193881035f, -0.422426789999008f, 0.232177272439003f, -0.422221481800079f, + 0.231853514909744f, -0.422015935182571f, 0.231529906392097f, -0.421810150146484f, + 0.231206461787224f, -0.421604126691818f, 0.230883181095123f, -0.421397835016251f, + 0.230560049414635f, -0.421191304922104f, 0.230237081646919f, -0.420984506607056f, + 0.229914262890816f, -0.420777499675751f, 0.229591608047485f, -0.420570224523544f, + 0.229269117116928f, -0.420362681150436f, 0.228946775197983f, -0.420154929161072f, + 0.228624612092972f, -0.419946908950806f, 0.228302597999573f, -0.419738620519638f, + 0.227980732917786f, -0.419530123472214f, 0.227659046649933f, -0.419321358203888f, + 0.227337509393692f, -0.419112354516983f, 0.227016136050224f, -0.418903112411499f, + 0.226694911718369f, -0.418693602085114f, 0.226373866200447f, -0.418483853340149f, + 0.226052969694138f, -0.418273866176605f, 0.225732237100601f, -0.418063640594482f, + 0.225411668419838f, -0.417853146791458f, 0.225091263651848f, -0.417642414569855f, + 0.224771007895470f, -0.417431443929672f, 0.224450930953026f, -0.417220205068588f, + 0.224131003022194f, -0.417008757591248f, 0.223811239004135f, -0.416797041893005f, + 0.223491653800011f, -0.416585087776184f, 0.223172217607498f, -0.416372895240784f, + 0.222852945327759f, -0.416160434484482f, 0.222533836960793f, -0.415947735309601f, + 0.222214877605438f, -0.415734797716141f, 0.221896097064018f, -0.415521621704102f, + 0.221577480435371f, -0.415308207273483f, 0.221259027719498f, -0.415094524621964f, + 0.220940738916397f, -0.414880603551865f, 0.220622614026070f, -0.414666473865509f, + 0.220304638147354f, -0.414452046155930f, 0.219986841082573f, -0.414237409830093f, + 0.219669207930565f, -0.414022535085678f, 0.219351738691330f, -0.413807392120361f, + 0.219034433364868f, -0.413592010736465f, 0.218717306852341f, -0.413376390933990f, + 0.218400329351425f, -0.413160532712936f, 0.218083515763283f, -0.412944436073303f, + 0.217766880989075f, -0.412728071212769f, 0.217450410127640f, -0.412511497735977f, + 0.217134088277817f, -0.412294656038284f, 0.216817945241928f, -0.412077575922012f, + 0.216501981019974f, -0.411860257387161f, 0.216186165809631f, -0.411642700433731f, + 0.215870529413223f, -0.411424905061722f, 0.215555042028427f, -0.411206841468811f, + 0.215239733457565f, -0.410988569259644f, 0.214924603700638f, -0.410770028829575f, + 0.214609622955322f, -0.410551249980927f, 0.214294821023941f, -0.410332232713699f, + 0.213980183005333f, -0.410112977027893f, 0.213665723800659f, -0.409893482923508f, + 0.213351413607597f, -0.409673750400543f, 0.213037282228470f, -0.409453779459000f, + 0.212723329663277f, -0.409233570098877f, 0.212409526109695f, -0.409013092517853f, + 0.212095901370049f, -0.408792406320572f, 0.211782455444336f, -0.408571451902390f, + 0.211469158530235f, -0.408350288867950f, 0.211156040430069f, -0.408128857612610f, + 0.210843101143837f, -0.407907217741013f, 0.210530325770378f, -0.407685309648514f, + 0.210217714309692f, -0.407463163137436f, 0.209905281662941f, -0.407240778207779f, + 0.209593027830124f, -0.407018154859543f, 0.209280923008919f, -0.406795293092728f, + 0.208969011902809f, -0.406572192907333f, 0.208657249808311f, -0.406348884105682f, + 0.208345666527748f, -0.406125307083130f, 0.208034262061119f, -0.405901491641998f, + 0.207723021507263f, -0.405677437782288f, 0.207411959767342f, -0.405453115701675f, + 0.207101076841354f, -0.405228585004807f, 0.206790357828140f, -0.405003815889359f, + 0.206479802727699f, -0.404778808355331f, 0.206169426441193f, -0.404553562402725f, + 0.205859228968620f, -0.404328078031540f, 0.205549195408821f, -0.404102355241776f, + 0.205239340662956f, -0.403876423835754f, 0.204929664731026f, -0.403650224208832f, + 0.204620152711868f, -0.403423786163330f, 0.204310819506645f, -0.403197109699249f, + 0.204001650214195f, -0.402970194816589f, 0.203692659735680f, -0.402743041515350f, + 0.203383848071098f, -0.402515679597855f, 0.203075215220451f, -0.402288049459457f, + 0.202766746282578f, -0.402060180902481f, 0.202458456158638f, -0.401832103729248f, + 0.202150344848633f, -0.401603758335114f, 0.201842412352562f, -0.401375204324722f, + 0.201534643769264f, -0.401146411895752f, 0.201227053999901f, -0.400917351245880f, + 0.200919643044472f, -0.400688081979752f, 0.200612410902977f, -0.400458574295044f, + 0.200305357575417f, -0.400228828191757f, 0.199998468160629f, -0.399998843669891f, + 0.199691757559776f, -0.399768620729446f, 0.199385225772858f, -0.399538189172745f, + 0.199078872799873f, -0.399307489395142f, 0.198772698640823f, -0.399076581001282f, + 0.198466703295708f, -0.398845434188843f, 0.198160871863365f, -0.398614019155502f, + 0.197855234146118f, -0.398382395505905f, 0.197549775242805f, -0.398150533437729f, + 0.197244480252266f, -0.397918462753296f, 0.196939364075661f, -0.397686123847961f, + 0.196634441614151f, -0.397453576326370f, 0.196329683065414f, -0.397220760583878f, + 0.196025103330612f, -0.396987736225128f, 0.195720717310905f, -0.396754473447800f, + 0.195416495203972f, -0.396520972251892f, 0.195112451910973f, -0.396287262439728f, + 0.194808602333069f, -0.396053284406662f, 0.194504916667938f, -0.395819097757339f, + 0.194201424717903f, -0.395584672689438f, 0.193898096680641f, -0.395350009202957f, + 0.193594962358475f, -0.395115107297897f, 0.193292006850243f, -0.394879996776581f, + 0.192989215254784f, -0.394644618034363f, 0.192686617374420f, -0.394409030675888f, + 0.192384198307991f, -0.394173204898834f, 0.192081972956657f, -0.393937170505524f, + 0.191779911518097f, -0.393700867891312f, 0.191478043794632f, -0.393464356660843f, + 0.191176339983940f, -0.393227607011795f, 0.190874829888344f, -0.392990618944168f, + 0.190573498606682f, -0.392753422260284f, 0.190272361040115f, -0.392515957355499f, + 0.189971387386322f, -0.392278283834457f, 0.189670607447624f, -0.392040401697159f, + 0.189370006322861f, -0.391802251338959f, 0.189069598913193f, -0.391563892364502f, + 0.188769355416298f, -0.391325294971466f, 0.188469305634499f, -0.391086459159851f, + 0.188169434666634f, -0.390847414731979f, 0.187869757413864f, -0.390608131885529f, + 0.187570258975029f, -0.390368610620499f, 0.187270939350128f, -0.390128880739212f, + 0.186971798539162f, -0.389888882637024f, 0.186672851443291f, -0.389648675918579f, + 0.186374098062515f, -0.389408260583878f, 0.186075508594513f, -0.389167606830597f, + 0.185777112841606f, -0.388926714658737f, 0.185478910803795f, -0.388685584068298f, + 0.185180887579918f, -0.388444244861603f, 0.184883043169975f, -0.388202667236328f, + 0.184585392475128f, -0.387960851192474f, 0.184287920594215f, -0.387718826532364f, + 0.183990627527237f, -0.387476563453674f, 0.183693528175354f, -0.387234061956406f, + 0.183396622538567f, -0.386991351842880f, 0.183099895715714f, -0.386748403310776f, + 0.182803362607956f, -0.386505216360092f, 0.182507008314133f, -0.386261820793152f, + 0.182210832834244f, -0.386018186807632f, 0.181914865970612f, -0.385774344205856f, + 0.181619063019753f, -0.385530263185501f, 0.181323468685150f, -0.385285943746567f, + 0.181028053164482f, -0.385041415691376f, 0.180732816457748f, -0.384796649217606f, + 0.180437773466110f, -0.384551674127579f, 0.180142924189568f, -0.384306460618973f, + 0.179848253726959f, -0.384061008691788f, 0.179553776979446f, -0.383815348148346f, + 0.179259493947029f, -0.383569449186325f, 0.178965389728546f, -0.383323341608047f, + 0.178671479225159f, -0.383076995611191f, 0.178377762436867f, -0.382830440998077f, + 0.178084224462509f, -0.382583618164063f, 0.177790880203247f, -0.382336616516113f, + 0.177497729659081f, -0.382089376449585f, 0.177204772830009f, -0.381841897964478f, + 0.176911994814873f, -0.381594210863113f, 0.176619410514832f, -0.381346285343170f, + 0.176327019929886f, -0.381098151206970f, 0.176034808158875f, -0.380849778652191f, + 0.175742805004120f, -0.380601197481155f, 0.175450980663300f, -0.380352377891541f, + 0.175159350037575f, -0.380103349685669f, 0.174867913126946f, -0.379854083061218f, + 0.174576655030251f, -0.379604607820511f, 0.174285605549812f, -0.379354894161224f, + 0.173994734883308f, -0.379104942083359f, 0.173704057931900f, -0.378854811191559f, + 0.173413574695587f, -0.378604412078857f, 0.173123285174370f, -0.378353834152222f, + 0.172833189368248f, -0.378102988004684f, 0.172543287277222f, -0.377851963043213f, + 0.172253578901291f, -0.377600699663162f, 0.171964049339294f, -0.377349197864532f, + 0.171674728393555f, -0.377097487449646f, 0.171385586261749f, -0.376845568418503f, + 0.171096652746201f, -0.376593410968781f, 0.170807912945747f, -0.376341015100479f, + 0.170519351959229f, -0.376088410615921f, 0.170230999588966f, -0.375835597515106f, + 0.169942826032639f, -0.375582575798035f, 0.169654861092567f, -0.375329315662384f, + 0.169367074966431f, -0.375075817108154f, 0.169079497456551f, -0.374822109937668f, + 0.168792113661766f, -0.374568194150925f, 0.168504923582077f, -0.374314039945602f, + 0.168217927217484f, -0.374059677124023f, 0.167931124567986f, -0.373805105686188f, + 0.167644515633583f, -0.373550295829773f, 0.167358100414276f, -0.373295277357101f, + 0.167071878910065f, -0.373040050268173f, 0.166785866022110f, -0.372784584760666f, + 0.166500031948090f, -0.372528880834579f, 0.166214406490326f, -0.372272998094559f, + 0.165928974747658f, -0.372016876935959f, 0.165643751621246f, -0.371760547161102f, + 0.165358707308769f, -0.371503978967667f, 0.165073871612549f, -0.371247202157974f, + 0.164789214730263f, -0.370990216732025f, 0.164504766464233f, -0.370732992887497f, + 0.164220526814461f, -0.370475560426712f, 0.163936465978622f, -0.370217919349670f, + 0.163652613759041f, -0.369960039854050f, 0.163368955254555f, -0.369701951742172f, + 0.163085505366325f, -0.369443655014038f, 0.162802234292030f, -0.369185149669647f, + 0.162519171833992f, -0.368926405906677f, 0.162236317992210f, -0.368667453527451f, + 0.161953642964363f, -0.368408292531967f, 0.161671176552773f, -0.368148893117905f, + 0.161388918757439f, -0.367889285087585f, 0.161106839776039f, -0.367629468441010f, + 0.160824984312058f, -0.367369443178177f, 0.160543307662010f, -0.367109179496765f, + 0.160261839628220f, -0.366848707199097f, 0.159980565309525f, -0.366588026285172f, + 0.159699499607086f, -0.366327136754990f, 0.159418627619743f, -0.366066008806229f, + 0.159137964248657f, -0.365804702043533f, 0.158857494592667f, -0.365543156862259f, + 0.158577233552933f, -0.365281373262405f, 0.158297166228294f, -0.365019410848618f, + 0.158017292618752f, -0.364757210016251f, 0.157737627625465f, -0.364494800567627f, + 0.157458171248436f, -0.364232182502747f, 0.157178908586502f, -0.363969355821610f, + 0.156899839639664f, -0.363706320524216f, 0.156620979309082f, -0.363443046808243f, + 0.156342327594757f, -0.363179564476013f, 0.156063869595528f, -0.362915903329849f, + 0.155785620212555f, -0.362651973962784f, 0.155507579445839f, -0.362387865781784f, + 0.155229732394218f, -0.362123548984528f, 0.154952079057693f, -0.361858993768692f, + 0.154674649238586f, -0.361594229936600f, 0.154397398233414f, -0.361329287290573f, + 0.154120370745659f, -0.361064106225967f, 0.153843536973000f, -0.360798716545105f, + 0.153566911816597f, -0.360533088445663f, 0.153290495276451f, -0.360267281532288f, + 0.153014272451401f, -0.360001266002655f, 0.152738258242607f, -0.359735012054443f, + 0.152462437748909f, -0.359468549489975f, 0.152186840772629f, -0.359201908111572f, + 0.151911437511444f, -0.358935028314590f, 0.151636242866516f, -0.358667939901352f, + 0.151361241936684f, -0.358400642871857f, 0.151086464524269f, -0.358133137226105f, + 0.150811880826950f, -0.357865422964096f, 0.150537505745888f, -0.357597470283508f, + 0.150263324379921f, -0.357329338788986f, 0.149989366531372f, -0.357060998678207f, + 0.149715602397919f, -0.356792420148849f, 0.149442046880722f, -0.356523662805557f, + 0.149168699979782f, -0.356254696846008f, 0.148895561695099f, -0.355985492467880f, + 0.148622632026672f, -0.355716109275818f, 0.148349896073341f, -0.355446487665176f, + 0.148077383637428f, -0.355176687240601f, 0.147805064916611f, -0.354906648397446f, + 0.147532954812050f, -0.354636400938034f, 0.147261068224907f, -0.354365974664688f, + 0.146989375352860f, -0.354095309972763f, 0.146717891097069f, -0.353824466466904f, + 0.146446615457535f, -0.353553384542465f, 0.146175548434258f, -0.353282123804092f, + 0.145904675126076f, -0.353010624647141f, 0.145634025335312f, -0.352738946676254f, + 0.145363584160805f, -0.352467030286789f, 0.145093351602554f, -0.352194935083389f, + 0.144823327660561f, -0.351922631263733f, 0.144553512334824f, -0.351650089025497f, + 0.144283905625343f, -0.351377367973328f, 0.144014507532120f, -0.351104438304901f, + 0.143745318055153f, -0.350831300020218f, 0.143476337194443f, -0.350557953119278f, + 0.143207564949989f, -0.350284397602081f, 0.142939001321793f, -0.350010633468628f, + 0.142670661211014f, -0.349736660718918f, 0.142402514815331f, -0.349462509155273f, + 0.142134591937065f, -0.349188119173050f, 0.141866862773895f, -0.348913550376892f, + 0.141599357128143f, -0.348638743162155f, 0.141332060098648f, -0.348363757133484f, + 0.141064971685410f, -0.348088562488556f, 0.140798106789589f, -0.347813159227371f, + 0.140531435608864f, -0.347537547349930f, 0.140264987945557f, -0.347261756658554f, + 0.139998748898506f, -0.346985727548599f, 0.139732718467712f, -0.346709519624710f, + 0.139466896653175f, -0.346433073282242f, 0.139201298356056f, -0.346156448125839f, + 0.138935908675194f, -0.345879614353180f, 0.138670727610588f, -0.345602601766586f, + 0.138405755162239f, -0.345325350761414f, 0.138141006231308f, -0.345047920942307f, + 0.137876465916634f, -0.344770282506943f, 0.137612134218216f, -0.344492435455322f, + 0.137348011136055f, -0.344214379787445f, 0.137084111571312f, -0.343936115503311f, + 0.136820420622826f, -0.343657672405243f, 0.136556953191757f, -0.343379020690918f, + 0.136293679475784f, -0.343100160360336f, 0.136030644178391f, -0.342821091413498f, + 0.135767802596092f, -0.342541843652725f, 0.135505184531212f, -0.342262357473373f, + 0.135242775082588f, -0.341982692480087f, 0.134980589151382f, -0.341702848672867f, + 0.134718611836433f, -0.341422766447067f, 0.134456858038902f, -0.341142505407333f, + 0.134195312857628f, -0.340862035751343f, 0.133933976292610f, -0.340581357479095f, + 0.133672863245010f, -0.340300500392914f, 0.133411958813667f, -0.340019434690475f, + 0.133151277899742f, -0.339738160371780f, 0.132890805602074f, -0.339456677436829f, + 0.132630556821823f, -0.339175015687943f, 0.132370531558990f, -0.338893145322800f, + 0.132110700011253f, -0.338611096143723f, 0.131851106882095f, -0.338328808546066f, + 0.131591722369194f, -0.338046342134476f, 0.131332546472549f, -0.337763696908951f, + 0.131073594093323f, -0.337480813264847f, 0.130814850330353f, -0.337197750806808f, + 0.130556344985962f, -0.336914509534836f, 0.130298033356667f, -0.336631029844284f, + 0.130039945244789f, -0.336347371339798f, 0.129782080650330f, -0.336063534021378f, + 0.129524439573288f, -0.335779488086700f, 0.129267007112503f, -0.335495233535767f, + 0.129009798169136f, -0.335210770368576f, 0.128752797842026f, -0.334926128387451f, + 0.128496021032333f, -0.334641307592392f, 0.128239467740059f, -0.334356248378754f, + 0.127983123064041f, -0.334071010351181f, 0.127727001905441f, -0.333785593509674f, + 0.127471104264259f, -0.333499968051910f, 0.127215430140495f, -0.333214133977890f, + 0.126959964632988f, -0.332928121089935f, 0.126704722642899f, -0.332641899585724f, + 0.126449704170227f, -0.332355499267578f, 0.126194894313812f, -0.332068890333176f, + 0.125940307974815f, -0.331782072782516f, 0.125685945153236f, -0.331495076417923f, + 0.125431805849075f, -0.331207901239395f, 0.125177875161171f, -0.330920487642288f, + 0.124924175441265f, -0.330632925033569f, 0.124670691788197f, -0.330345153808594f, + 0.124417431652546f, -0.330057173967361f, 0.124164395034313f, -0.329769015312195f, + 0.123911574482918f, -0.329480648040771f, 0.123658977448940f, -0.329192101955414f, + 0.123406603932381f, -0.328903347253799f, 0.123154446482658f, -0.328614413738251f, + 0.122902512550354f, -0.328325271606445f, 0.122650802135468f, -0.328035950660706f, + 0.122399315237999f, -0.327746421098709f, 0.122148044407368f, -0.327456712722778f, + 0.121896997094154f, -0.327166795730591f, 0.121646173298359f, -0.326876699924469f, + 0.121395580470562f, -0.326586425304413f, 0.121145196259022f, -0.326295942068100f, + 0.120895043015480f, -0.326005280017853f, 0.120645113289356f, -0.325714409351349f, + 0.120395407080650f, -0.325423330068588f, 0.120145916938782f, -0.325132101774216f, + 0.119896657764912f, -0.324840664863586f, 0.119647622108459f, -0.324549019336700f, + 0.119398809969425f, -0.324257194995880f, 0.119150213897228f, -0.323965191841125f, + 0.118901848793030f, -0.323672980070114f, 0.118653707206249f, -0.323380589485168f, + 0.118405789136887f, -0.323088020086288f, 0.118158094584942f, -0.322795242071152f, + 0.117910631000996f, -0.322502255439758f, 0.117663383483887f, -0.322209119796753f, + 0.117416366934776f, -0.321915775537491f, 0.117169573903084f, -0.321622252464294f, + 0.116923004388809f, -0.321328520774841f, 0.116676658391953f, -0.321034610271454f, + 0.116430543363094f, -0.320740520954132f, 0.116184651851654f, -0.320446223020554f, + 0.115938983857632f, -0.320151746273041f, 0.115693546831608f, -0.319857090711594f, + 0.115448333323002f, -0.319562226533890f, 0.115203343331814f, -0.319267183542252f, + 0.114958584308624f, -0.318971961736679f, 0.114714048802853f, -0.318676531314850f, + 0.114469736814499f, -0.318380922079086f, 0.114225655794144f, -0.318085134029388f, + 0.113981798291206f, -0.317789167165756f, 0.113738171756268f, -0.317492991685867f, + 0.113494776189327f, -0.317196637392044f, 0.113251596689224f, -0.316900104284287f, + 0.113008655607700f, -0.316603392362595f, 0.112765938043594f, -0.316306471824646f, + 0.112523443996906f, -0.316009372472763f, 0.112281180918217f, -0.315712094306946f, + 0.112039148807526f, -0.315414607524872f, 0.111797347664833f, -0.315116971731186f, + 0.111555770039558f, -0.314819127321243f, 0.111314415931702f, -0.314521104097366f, + 0.111073300242424f, -0.314222872257233f, 0.110832408070564f, -0.313924491405487f, + 0.110591746866703f, -0.313625901937485f, 0.110351309180260f, -0.313327133655548f, + 0.110111102461815f, -0.313028186559677f, 0.109871134161949f, -0.312729060649872f, + 0.109631389379501f, -0.312429755926132f, 0.109391868114471f, -0.312130242586136f, + 0.109152585268021f, -0.311830550432205f, 0.108913525938988f, -0.311530679464340f, + 0.108674705028534f, -0.311230629682541f, 0.108436107635498f, -0.310930401086807f, + 0.108197741210461f, -0.310629993677139f, 0.107959605753422f, -0.310329377651215f, + 0.107721701264381f, -0.310028612613678f, 0.107484027743340f, -0.309727638959885f, + 0.107246585190296f, -0.309426486492157f, 0.107009373605251f, -0.309125155210495f, + 0.106772392988205f, -0.308823645114899f, 0.106535643339157f, -0.308521956205368f, + 0.106299124658108f, -0.308220088481903f, 0.106062836945057f, -0.307918041944504f, + 0.105826787650585f, -0.307615786790848f, 0.105590961873531f, -0.307313382625580f, + 0.105355374515057f, -0.307010769844055f, 0.105120018124580f, -0.306708008050919f, + 0.104884892702103f, -0.306405037641525f, 0.104649998247623f, -0.306101888418198f, + 0.104415334761143f, -0.305798590183258f, 0.104180909693241f, -0.305495083332062f, + 0.103946708142757f, -0.305191397666931f, 0.103712752461433f, -0.304887533187866f, + 0.103479020297527f, -0.304583519697189f, 0.103245526552200f, -0.304279297590256f, + 0.103012263774872f, -0.303974896669388f, 0.102779231965542f, -0.303670316934586f, + 0.102546438574791f, -0.303365558385849f, 0.102313876152039f, -0.303060621023178f, + 0.102081544697285f, -0.302755534648895f, 0.101849451661110f, -0.302450239658356f, + 0.101617597043514f, -0.302144765853882f, 0.101385973393917f, -0.301839113235474f, + 0.101154580712318f, -0.301533311605453f, 0.100923426449299f, -0.301227301359177f, + 0.100692503154278f, -0.300921112298965f, 0.100461818277836f, -0.300614774227142f, + 0.100231364369392f, -0.300308227539063f, 0.100001148879528f, -0.300001531839371f, + 0.099771171808243f, -0.299694657325745f, 0.099541425704956f, -0.299387603998184f, + 0.099311910569668f, -0.299080342054367f, 0.099082641303539f, -0.298772931098938f, + 0.098853603005409f, -0.298465341329575f, 0.098624803125858f, -0.298157602548599f, + 0.098396234214306f, -0.297849655151367f, 0.098167903721333f, -0.297541528940201f, + 0.097939811646938f, -0.297233253717422f, 0.097711957991123f, -0.296924799680710f, + 0.097484335303307f, -0.296616137027740f, 0.097256951034069f, -0.296307325363159f, + 0.097029805183411f, -0.295998334884644f, 0.096802897751331f, -0.295689195394516f, + 0.096576221287251f, -0.295379847288132f, 0.096349790692329f, -0.295070350170136f, + 0.096123591065407f, -0.294760644435883f, 0.095897629857063f, -0.294450789690018f, + 0.095671907067299f, -0.294140785932541f, 0.095446422696114f, -0.293830573558807f, + 0.095221176743507f, -0.293520182371140f, 0.094996169209480f, -0.293209642171860f, + 0.094771400094032f, -0.292898923158646f, 0.094546869397163f, -0.292588025331497f, + 0.094322577118874f, -0.292276978492737f, 0.094098523259163f, -0.291965723037720f, + 0.093874707818031f, -0.291654318571091f, 0.093651130795479f, -0.291342735290527f, + 0.093427792191505f, -0.291031002998352f, 0.093204692006111f, -0.290719062089920f, + 0.092981837689877f, -0.290406972169876f, 0.092759214341640f, -0.290094703435898f, + 0.092536836862564f, -0.289782285690308f, 0.092314697802067f, -0.289469659328461f, + 0.092092797160149f, -0.289156883955002f, 0.091871134936810f, -0.288843959569931f, + 0.091649711132050f, -0.288530826568604f, 0.091428533196449f, -0.288217544555664f, + 0.091207593679428f, -0.287904083728790f, 0.090986892580986f, -0.287590473890305f, + 0.090766437351704f, -0.287276685237885f, 0.090546220541000f, -0.286962717771530f, + 0.090326242148876f, -0.286648571491241f, 0.090106502175331f, -0.286334276199341f, + 0.089887008070946f, -0.286019802093506f, 0.089667752385139f, -0.285705178976059f, + 0.089448742568493f, -0.285390377044678f, 0.089229971170425f, -0.285075396299362f, + 0.089011445641518f, -0.284760266542435f, 0.088793158531189f, -0.284444957971573f, + 0.088575109839439f, -0.284129470586777f, 0.088357307016850f, -0.283813834190369f, + 0.088139742612839f, -0.283498018980026f, 0.087922424077988f, -0.283182054758072f, + 0.087705351412296f, -0.282865911722183f, 0.087488517165184f, -0.282549589872360f, + 0.087271921336651f, -0.282233119010925f, 0.087055571377277f, -0.281916469335556f, + 0.086839467287064f, -0.281599670648575f, 0.086623609066010f, -0.281282693147659f, + 0.086407989263535f, -0.280965566635132f, 0.086192607879639f, -0.280648261308670f, + 0.085977479815483f, -0.280330777168274f, 0.085762590169907f, -0.280013144016266f, + 0.085547938942909f, -0.279695361852646f, 0.085333541035652f, -0.279377400875092f, + 0.085119381546974f, -0.279059261083603f, 0.084905467927456f, -0.278740972280502f, + 0.084691800177097f, -0.278422504663467f, 0.084478378295898f, -0.278103888034821f, + 0.084265194833279f, -0.277785122394562f, 0.084052257239819f, -0.277466177940369f, + 0.083839565515518f, -0.277147054672241f, 0.083627119660378f, -0.276827782392502f, + 0.083414919674397f, -0.276508361101151f, 0.083202958106995f, -0.276188760995865f, + 0.082991249859333f, -0.275868982076645f, 0.082779780030251f, -0.275549083948135f, + 0.082568563520908f, -0.275228977203369f, 0.082357585430145f, -0.274908751249313f, + 0.082146860659122f, -0.274588316679001f, 0.081936374306679f, -0.274267762899399f, + 0.081726133823395f, -0.273947030305862f, 0.081516146659851f, -0.273626148700714f, + 0.081306397914886f, -0.273305088281631f, 0.081096902489662f, -0.272983878850937f, + 0.080887645483017f, -0.272662490606308f, 0.080678641796112f, -0.272340953350067f, + 0.080469883978367f, -0.272019267082214f, 0.080261372029781f, -0.271697402000427f, + 0.080053105950356f, -0.271375387907028f, 0.079845085740089f, -0.271053224802017f, + 0.079637311398983f, -0.270730882883072f, 0.079429790377617f, -0.270408391952515f, + 0.079222507774830f, -0.270085722208023f, 0.079015478491783f, -0.269762933254242f, + 0.078808702528477f, -0.269439965486526f, 0.078602164983749f, -0.269116818904877f, + 0.078395880758762f, -0.268793523311615f, 0.078189842402935f, -0.268470078706741f, + 0.077984049916267f, -0.268146485090256f, 0.077778510749340f, -0.267822742462158f, + 0.077573217451572f, -0.267498821020126f, 0.077368170022964f, -0.267174720764160f, + 0.077163375914097f, -0.266850501298904f, 0.076958827674389f, -0.266526103019714f, + 0.076754532754421f, -0.266201555728912f, 0.076550483703613f, -0.265876859426498f, + 0.076346680521965f, -0.265552014112473f, 0.076143130660057f, -0.265226989984512f, + 0.075939826667309f, -0.264901816844940f, 0.075736775994301f, -0.264576494693756f, + 0.075533971190453f, -0.264250993728638f, 0.075331419706345f, -0.263925373554230f, + 0.075129114091396f, -0.263599574565887f, 0.074927061796188f, -0.263273626565933f, + 0.074725262820721f, -0.262947499752045f, 0.074523709714413f, -0.262621253728867f, + 0.074322402477264f, -0.262294828891754f, 0.074121348559856f, -0.261968284845352f, + 0.073920547962189f, -0.261641561985016f, 0.073720000684261f, -0.261314690113068f, + 0.073519699275494f, -0.260987639427185f, 0.073319651186466f, -0.260660469532013f, + 0.073119848966599f, -0.260333120822906f, 0.072920300066471f, -0.260005623102188f, + 0.072721004486084f, -0.259678006172180f, 0.072521962225437f, -0.259350210428238f, + 0.072323165833950f, -0.259022265672684f, 0.072124622762203f, -0.258694142103195f, + 0.071926333010197f, -0.258365899324417f, 0.071728296577930f, -0.258037507534027f, + 0.071530513465405f, -0.257708936929703f, 0.071332976222038f, -0.257380217313766f, + 0.071135692298412f, -0.257051378488541f, 0.070938661694527f, -0.256722360849380f, + 0.070741884410381f, -0.256393194198608f, 0.070545360445976f, -0.256063878536224f, + 0.070349089801311f, -0.255734413862228f, 0.070153072476387f, -0.255404800176620f, + 0.069957308471203f, -0.255075037479401f, 0.069761790335178f, -0.254745125770569f, + 0.069566532969475f, -0.254415065050125f, 0.069371521472931f, -0.254084855318069f, + 0.069176770746708f, -0.253754496574402f, 0.068982265889645f, -0.253423988819122f, + 0.068788021802902f, -0.253093332052231f, 0.068594031035900f, -0.252762526273727f, + 0.068400286138058f, -0.252431541681290f, 0.068206802010536f, -0.252100437879562f, + 0.068013571202755f, -0.251769185066223f, 0.067820593714714f, -0.251437783241272f, + 0.067627869546413f, -0.251106232404709f, 0.067435398697853f, -0.250774532556534f, + 0.067243188619614f, -0.250442683696747f, 0.067051224410534f, -0.250110685825348f, + 0.066859520971775f, -0.249778553843498f, 0.066668070852757f, -0.249446272850037f, + 0.066476874053478f, -0.249113827943802f, 0.066285938024521f, -0.248781248927116f, + 0.066095255315304f, -0.248448520898819f, 0.065904818475246f, -0.248115643858910f, + 0.065714649856091f, -0.247782632708550f, 0.065524727106094f, -0.247449472546577f, + 0.065335065126419f, -0.247116148471832f, 0.065145656466484f, -0.246782705187798f, + 0.064956501126289f, -0.246449097990990f, 0.064767606556416f, -0.246115356683731f, + 0.064578965306282f, -0.245781451463699f, 0.064390584826469f, -0.245447427034378f, + 0.064202457666397f, -0.245113238692284f, 0.064014583826065f, -0.244778916239738f, + 0.063826970756054f, -0.244444444775581f, 0.063639611005783f, -0.244109839200974f, + 0.063452512025833f, -0.243775084614754f, 0.063265666365623f, -0.243440181016922f, + 0.063079081475735f, -0.243105143308640f, 0.062892749905586f, -0.242769956588745f, + 0.062706671655178f, -0.242434620857239f, 0.062520854175091f, -0.242099151015282f, + 0.062335297465324f, -0.241763532161713f, 0.062149997800589f, -0.241427779197693f, + 0.061964951455593f, -0.241091892123222f, 0.061780165880919f, -0.240755841135979f, + 0.061595637351274f, -0.240419670939446f, 0.061411365866661f, -0.240083336830139f, + 0.061227355152369f, -0.239746883511543f, 0.061043601483107f, -0.239410281181335f, + 0.060860104858875f, -0.239073529839516f, 0.060676865279675f, -0.238736644387245f, + 0.060493886470795f, -0.238399609923363f, 0.060311164706945f, -0.238062441349030f, + 0.060128703713417f, -0.237725138664246f, 0.059946499764919f, -0.237387686967850f, + 0.059764556586742f, -0.237050101161003f, 0.059582870453596f, -0.236712381243706f, + 0.059401445090771f, -0.236374512314796f, 0.059220276772976f, -0.236036509275436f, + 0.059039369225502f, -0.235698372125626f, 0.058858718723059f, -0.235360085964203f, + 0.058678328990936f, -0.235021665692329f, 0.058498200029135f, -0.234683111310005f, + 0.058318331837654f, -0.234344407916069f, 0.058138720691204f, -0.234005570411682f, + 0.057959370315075f, -0.233666598796844f, 0.057780280709267f, -0.233327493071556f, + 0.057601451873779f, -0.232988253235817f, 0.057422880083323f, -0.232648864388466f, + 0.057244572788477f, -0.232309341430664f, 0.057066522538662f, -0.231969684362412f, + 0.056888736784458f, -0.231629893183708f, 0.056711208075285f, -0.231289967894554f, + 0.056533940136433f, -0.230949893593788f, 0.056356932967901f, -0.230609700083733f, + 0.056180190294981f, -0.230269357562065f, 0.056003704667091f, -0.229928880929947f, + 0.055827483534813f, -0.229588270187378f, 0.055651523172855f, -0.229247525334358f, + 0.055475823581219f, -0.228906646370888f, 0.055300384759903f, -0.228565633296967f, + 0.055125206708908f, -0.228224486112595f, 0.054950293153524f, -0.227883204817772f, + 0.054775636643171f, -0.227541789412498f, 0.054601248353720f, -0.227200239896774f, + 0.054427117109299f, -0.226858556270599f, 0.054253250360489f, -0.226516738533974f, + 0.054079644382000f, -0.226174786686897f, 0.053906302899122f, -0.225832715630531f, + 0.053733222186565f, -0.225490495562553f, 0.053560405969620f, -0.225148141384125f, + 0.053387850522995f, -0.224805667996407f, 0.053215555846691f, -0.224463045597076f, + 0.053043525665998f, -0.224120303988457f, 0.052871759980917f, -0.223777428269386f, + 0.052700258791447f, -0.223434418439865f, 0.052529018372297f, -0.223091274499893f, + 0.052358038723469f, -0.222748011350632f, 0.052187327295542f, -0.222404599189758f, + 0.052016876637936f, -0.222061067819595f, 0.051846686750650f, -0.221717402338982f, + 0.051676765084267f, -0.221373617649078f, 0.051507104188204f, -0.221029683947563f, + 0.051337707787752f, -0.220685631036758f, 0.051168579608202f, -0.220341444015503f, + 0.050999708473682f, -0.219997137784958f, 0.050831105560064f, -0.219652697443962f, + 0.050662767142057f, -0.219308122992516f, 0.050494693219662f, -0.218963414430618f, + 0.050326880067587f, -0.218618586659431f, 0.050159335136414f, -0.218273624777794f, + 0.049992054700851f, -0.217928543686867f, 0.049825038760900f, -0.217583328485489f, + 0.049658283591270f, -0.217237979173660f, 0.049491796642542f, -0.216892510652542f, + 0.049325577914715f, -0.216546908020973f, 0.049159619957209f, -0.216201186180115f, + 0.048993926495314f, -0.215855330228806f, 0.048828501254320f, -0.215509355068207f, + 0.048663340508938f, -0.215163245797157f, 0.048498444259167f, -0.214817002415657f, + 0.048333816230297f, -0.214470639824867f, 0.048169452697039f, -0.214124158024788f, + 0.048005353659391f, -0.213777542114258f, 0.047841522842646f, -0.213430806994438f, + 0.047677956521511f, -0.213083937764168f, 0.047514654695988f, -0.212736949324608f, + 0.047351621091366f, -0.212389841675758f, 0.047188851982355f, -0.212042599916458f, + 0.047026351094246f, -0.211695238947868f, 0.046864114701748f, -0.211347743868828f, + 0.046702146530151f, -0.211000129580498f, 0.046540446579456f, -0.210652396082878f, + 0.046379011124372f, -0.210304543375969f, 0.046217843890190f, -0.209956556558609f, + 0.046056941151619f, -0.209608450531960f, 0.045896306633949f, -0.209260210394859f, + 0.045735940337181f, -0.208911851048470f, 0.045575842261314f, -0.208563387393951f, + 0.045416008681059f, -0.208214774727821f, 0.045256443321705f, -0.207866057753563f, + 0.045097146183252f, -0.207517206668854f, 0.044938117265701f, -0.207168251276016f, + 0.044779352843761f, -0.206819161772728f, 0.044620860368013f, -0.206469938158989f, + 0.044462632387877f, -0.206120610237122f, 0.044304672628641f, -0.205771163105965f, + 0.044146984815598f, -0.205421581864357f, 0.043989561498165f, -0.205071896314621f, + 0.043832406401634f, -0.204722076654434f, 0.043675523251295f, -0.204372137784958f, + 0.043518904596567f, -0.204022079706192f, 0.043362557888031f, -0.203671902418137f, + 0.043206475675106f, -0.203321605920792f, 0.043050665408373f, -0.202971190214157f, + 0.042895123362541f, -0.202620655298233f, 0.042739849537611f, -0.202270001173019f, + 0.042584843933582f, -0.201919227838516f, 0.042430106550455f, -0.201568335294724f, + 0.042275641113520f, -0.201217323541641f, 0.042121443897486f, -0.200866192579269f, + 0.041967518627644f, -0.200514942407608f, 0.041813857853413f, -0.200163587927818f, + 0.041660469025373f, -0.199812099337578f, 0.041507352143526f, -0.199460506439209f, + 0.041354499757290f, -0.199108779430389f, 0.041201923042536f, -0.198756948113441f, + 0.041049610823393f, -0.198404997587204f, 0.040897574275732f, -0.198052927851677f, + 0.040745802223682f, -0.197700738906860f, 0.040594302117825f, -0.197348430752754f, + 0.040443073958158f, -0.196996018290520f, 0.040292114019394f, -0.196643486618996f, + 0.040141426026821f, -0.196290835738182f, 0.039991009980440f, -0.195938065648079f, + 0.039840862154961f, -0.195585191249847f, 0.039690986275673f, -0.195232197642326f, + 0.039541378617287f, -0.194879084825516f, 0.039392042905092f, -0.194525867700577f, + 0.039242979139090f, -0.194172516465187f, 0.039094187319279f, -0.193819075822830f, + 0.038945667445660f, -0.193465501070023f, 0.038797415792942f, -0.193111822009087f, + 0.038649436086416f, -0.192758023738861f, 0.038501728326082f, -0.192404121160507f, + 0.038354292511940f, -0.192050099372864f, 0.038207128643990f, -0.191695958375931f, + 0.038060232996941f, -0.191341713070869f, 0.037913613021374f, -0.190987363457680f, + 0.037767261266708f, -0.190632879734039f, 0.037621185183525f, -0.190278306603432f, + 0.037475381046534f, -0.189923599362373f, 0.037329845130444f, -0.189568802714348f, + 0.037184584885836f, -0.189213871955872f, 0.037039596587420f, -0.188858851790428f, + 0.036894880235195f, -0.188503712415695f, 0.036750435829163f, -0.188148453831673f, + 0.036606263369322f, -0.187793090939522f, 0.036462362855673f, -0.187437608838081f, + 0.036318738013506f, -0.187082037329674f, 0.036175385117531f, -0.186726331710815f, + 0.036032304167747f, -0.186370536684990f, 0.035889495164156f, -0.186014622449875f, + 0.035746958106756f, -0.185658603906631f, 0.035604696720839f, -0.185302466154099f, + 0.035462711006403f, -0.184946224093437f, 0.035320993512869f, -0.184589877724648f, + 0.035179551690817f, -0.184233412146568f, 0.035038381814957f, -0.183876842260361f, + 0.034897487610579f, -0.183520168066025f, 0.034756865352392f, -0.183163389563560f, + 0.034616518765688f, -0.182806491851807f, 0.034476444125175f, -0.182449504733086f, + 0.034336645156145f, -0.182092398405075f, 0.034197118133307f, -0.181735187768936f, + 0.034057866781950f, -0.181377857923508f, 0.033918887376785f, -0.181020438671112f, + 0.033780183643103f, -0.180662900209427f, 0.033641755580902f, -0.180305257439613f, + 0.033503599464893f, -0.179947525262833f, 0.033365719020367f, -0.179589673876762f, + 0.033228114247322f, -0.179231703281403f, 0.033090781420469f, -0.178873643279076f, + 0.032953724265099f, -0.178515478968620f, 0.032816942781210f, -0.178157210350037f, + 0.032680433243513f, -0.177798837423325f, 0.032544203102589f, -0.177440345287323f, + 0.032408244907856f, -0.177081763744354f, 0.032272562384605f, -0.176723077893257f, + 0.032137155532837f, -0.176364272832870f, 0.032002024352551f, -0.176005378365517f, + 0.031867165118456f, -0.175646379590034f, 0.031732585281134f, -0.175287276506424f, + 0.031598277390003f, -0.174928069114685f, 0.031464248895645f, -0.174568757414818f, + 0.031330492347479f, -0.174209341406822f, 0.031197015196085f, -0.173849821090698f, + 0.031063811853528f, -0.173490211367607f, 0.030930884182453f, -0.173130482435226f, + 0.030798232182860f, -0.172770664095879f, 0.030665857717395f, -0.172410741448402f, + 0.030533758923411f, -0.172050714492798f, 0.030401935800910f, -0.171690583229065f, + 0.030270388349891f, -0.171330362558365f, 0.030139118432999f, -0.170970037579536f, + 0.030008124187589f, -0.170609608292580f, 0.029877405613661f, -0.170249074697495f, + 0.029746964573860f, -0.169888436794281f, 0.029616801068187f, -0.169527709484100f, + 0.029486913233995f, -0.169166877865791f, 0.029357301071286f, -0.168805956840515f, + 0.029227968305349f, -0.168444931507111f, 0.029098909348249f, -0.168083801865578f, + 0.028970129787922f, -0.167722567915916f, 0.028841627761722f, -0.167361244559288f, + 0.028713401407003f, -0.166999831795692f, 0.028585452586412f, -0.166638299822807f, + 0.028457781299949f, -0.166276678442955f, 0.028330387547612f, -0.165914967656136f, + 0.028203271329403f, -0.165553152561188f, 0.028076432645321f, -0.165191248059273f, + 0.027949871495366f, -0.164829224348068f, 0.027823587879539f, -0.164467126131058f, + 0.027697581797838f, -0.164104923605919f, 0.027571853250265f, -0.163742616772652f, + 0.027446404099464f, -0.163380220532417f, 0.027321230620146f, -0.163017734885216f, + 0.027196336537600f, -0.162655144929886f, 0.027071721851826f, -0.162292465567589f, + 0.026947384700179f, -0.161929681897163f, 0.026823325082660f, -0.161566808819771f, + 0.026699542999268f, -0.161203846335411f, 0.026576040312648f, -0.160840779542923f, + 0.026452817022800f, -0.160477623343468f, 0.026329871267080f, -0.160114362835884f, + 0.026207204908133f, -0.159751012921333f, 0.026084816083312f, -0.159387573599815f, + 0.025962706655264f, -0.159024044871330f, 0.025840876623988f, -0.158660411834717f, + 0.025719324126840f, -0.158296689391136f, 0.025598052889109f, -0.157932877540588f, + 0.025477059185505f, -0.157568961381912f, 0.025356344878674f, -0.157204970717430f, + 0.025235909968615f, -0.156840875744820f, 0.025115754455328f, -0.156476691365242f, + 0.024995878338814f, -0.156112402677536f, 0.024876279756427f, -0.155748039484024f, + 0.024756962433457f, -0.155383571982384f, 0.024637924507260f, -0.155019029974937f, + 0.024519165977836f, -0.154654383659363f, 0.024400688707829f, -0.154289647936821f, + 0.024282488971949f, -0.153924822807312f, 0.024164570495486f, -0.153559908270836f, + 0.024046931415796f, -0.153194904327393f, 0.023929571732879f, -0.152829796075821f, + 0.023812493309379f, -0.152464613318443f, 0.023695694282651f, -0.152099341154099f, + 0.023579176515341f, -0.151733979582787f, 0.023462938144803f, -0.151368513703346f, + 0.023346979171038f, -0.151002973318100f, 0.023231301456690f, -0.150637343525887f, + 0.023115905001760f, -0.150271624326706f, 0.023000787943602f, -0.149905815720558f, + 0.022885952144861f, -0.149539917707443f, 0.022771397605538f, -0.149173930287361f, + 0.022657122462988f, -0.148807853460312f, 0.022543128579855f, -0.148441687226295f, + 0.022429415956140f, -0.148075446486473f, 0.022315984591842f, -0.147709101438522f, + 0.022202832624316f, -0.147342681884766f, 0.022089963778853f, -0.146976172924042f, + 0.021977374330163f, -0.146609574556351f, 0.021865066140890f, -0.146242901682854f, + 0.021753041073680f, -0.145876124501228f, 0.021641295403242f, -0.145509272813797f, + 0.021529832854867f, -0.145142331719399f, 0.021418649703264f, -0.144775316119194f, + 0.021307749673724f, -0.144408211112022f, 0.021197130903602f, -0.144041016697884f, + 0.021086793392897f, -0.143673732876778f, 0.020976737141609f, -0.143306359648705f, + 0.020866964012384f, -0.142938911914825f, 0.020757472142577f, -0.142571389675140f, + 0.020648263394833f, -0.142203763127327f, 0.020539334043860f, -0.141836062073708f, + 0.020430689677596f, -0.141468286514282f, 0.020322324708104f, -0.141100421547890f, + 0.020214242860675f, -0.140732467174530f, 0.020106444135308f, -0.140364438295364f, + 0.019998926669359f, -0.139996320009232f, 0.019891692325473f, -0.139628127217293f, + 0.019784741103649f, -0.139259845018387f, 0.019678071141243f, -0.138891488313675f, + 0.019571684300900f, -0.138523042201996f, 0.019465578719974f, -0.138154521584511f, + 0.019359756261110f, -0.137785911560059f, 0.019254218786955f, -0.137417227029800f, + 0.019148962572217f, -0.137048453092575f, 0.019043987616897f, -0.136679604649544f, + 0.018939297646284f, -0.136310681700706f, 0.018834890797734f, -0.135941669344902f, + 0.018730765208602f, -0.135572582483292f, 0.018626924604177f, -0.135203406214714f, + 0.018523367121816f, -0.134834155440331f, 0.018420090898871f, -0.134464830160141f, + 0.018317099660635f, -0.134095430374146f, 0.018214391544461f, -0.133725941181183f, + 0.018111966550350f, -0.133356377482414f, 0.018009826540947f, -0.132986739277840f, + 0.017907967790961f, -0.132617011666298f, 0.017806394025683f, -0.132247209548950f, + 0.017705103382468f, -0.131877332925797f, 0.017604095861316f, -0.131507381796837f, + 0.017503373324871f, -0.131137356162071f, 0.017402933910489f, -0.130767241120338f, + 0.017302779480815f, -0.130397051572800f, 0.017202908173203f, -0.130026802420616f, + 0.017103319987655f, -0.129656463861465f, 0.017004016786814f, -0.129286035895348f, + 0.016904998570681f, -0.128915548324585f, 0.016806263476610f, -0.128544986248016f, + 0.016707813367248f, -0.128174334764481f, 0.016609646379948f, -0.127803623676300f, + 0.016511764377356f, -0.127432823181152f, 0.016414167359471f, -0.127061963081360f, + 0.016316853463650f, -0.126691013574600f, 0.016219824552536f, -0.126320004463196f, + 0.016123080626130f, -0.125948905944824f, 0.016026621684432f, -0.125577747821808f, + 0.015930447727442f, -0.125206500291824f, 0.015834558755159f, -0.124835193157196f, + 0.015738952904940f, -0.124463804066181f, 0.015643632039428f, -0.124092340469360f, + 0.015548598021269f, -0.123720809817314f, 0.015453847125173f, -0.123349204659462f, + 0.015359382145107f, -0.122977524995804f, 0.015265202149749f, -0.122605770826340f, + 0.015171307139099f, -0.122233949601650f, 0.015077698044479f, -0.121862053871155f, + 0.014984373003244f, -0.121490091085434f, 0.014891333878040f, -0.121118053793907f, + 0.014798580668867f, -0.120745941996574f, 0.014706112444401f, -0.120373763144016f, + 0.014613929204643f, -0.120001509785652f, 0.014522032812238f, -0.119629189372063f, + 0.014430420473218f, -0.119256794452667f, 0.014339094981551f, -0.118884332478046f, + 0.014248054474592f, -0.118511803448200f, 0.014157299883664f, -0.118139199912548f, + 0.014066831208766f, -0.117766529321671f, 0.013976648449898f, -0.117393791675568f, + 0.013886751607060f, -0.117020979523659f, 0.013797140680254f, -0.116648100316525f, + 0.013707815669477f, -0.116275154054165f, 0.013618776574731f, -0.115902140736580f, + 0.013530024327338f, -0.115529052913189f, 0.013441557064652f, -0.115155905485153f, + 0.013353376649320f, -0.114782683551311f, 0.013265483081341f, -0.114409394562244f, + 0.013177875429392f, -0.114036038517952f, 0.013090553693473f, -0.113662622869015f, + 0.013003518804908f, -0.113289132714272f, 0.012916770763695f, -0.112915575504303f, + 0.012830308638513f, -0.112541958689690f, 0.012744133360684f, -0.112168267369270f, + 0.012658244930208f, -0.111794516444206f, 0.012572642415762f, -0.111420698463917f, + 0.012487327679992f, -0.111046813428402f, 0.012402298860252f, -0.110672861337662f, + 0.012317557819188f, -0.110298842191696f, 0.012233102694154f, -0.109924763441086f, + 0.012148935347795f, -0.109550617635250f, 0.012065053917468f, -0.109176412224770f, + 0.011981460265815f, -0.108802139759064f, 0.011898153461516f, -0.108427800238132f, + 0.011815134435892f, -0.108053401112556f, 0.011732402257621f, -0.107678934931755f, + 0.011649956926703f, -0.107304409146309f, 0.011567799374461f, -0.106929816305637f, + 0.011485928669572f, -0.106555156409740f, 0.011404345743358f, -0.106180444359779f, + 0.011323049664497f, -0.105805665254593f, 0.011242041364312f, -0.105430819094181f, + 0.011161320842803f, -0.105055920779705f, 0.011080888099968f, -0.104680955410004f, + 0.011000742204487f, -0.104305922985077f, 0.010920885019004f, -0.103930838406086f, + 0.010841314680874f, -0.103555686771870f, 0.010762032121420f, -0.103180475533009f, + 0.010683037340641f, -0.102805204689503f, 0.010604331269860f, -0.102429874241352f, + 0.010525912046432f, -0.102054484188557f, 0.010447781533003f, -0.101679034531116f, + 0.010369938798249f, -0.101303517818451f, 0.010292383842170f, -0.100927948951721f, + 0.010215117596090f, -0.100552320480347f, 0.010138138197362f, -0.100176624953747f, + 0.010061448439956f, -0.099800877273083f, 0.009985045529902f, -0.099425069987774f, + 0.009908932261169f, -0.099049203097820f, 0.009833106771111f, -0.098673284053802f, + 0.009757569059730f, -0.098297297954559f, 0.009682320058346f, -0.097921259701252f, + 0.009607359766960f, -0.097545161843300f, 0.009532688185573f, -0.097169004380703f, + 0.009458304382861f, -0.096792794764042f, 0.009384209290147f, -0.096416525542736f, + 0.009310402907431f, -0.096040196716785f, 0.009236886166036f, -0.095663815736771f, + 0.009163657203317f, -0.095287375152111f, 0.009090716950595f, -0.094910882413387f, + 0.009018065407872f, -0.094534330070019f, 0.008945702575147f, -0.094157725572586f, + 0.008873629383743f, -0.093781061470509f, 0.008801844902337f, -0.093404345214367f, + 0.008730349130929f, -0.093027576804161f, 0.008659142069519f, -0.092650748789310f, + 0.008588224649429f, -0.092273868620396f, 0.008517595939338f, -0.091896936297417f, + 0.008447255939245f, -0.091519944369793f, 0.008377205580473f, -0.091142900288105f, + 0.008307444863021f, -0.090765804052353f, 0.008237972855568f, -0.090388655662537f, + 0.008168790489435f, -0.090011447668076f, 0.008099896833301f, -0.089634194970131f, + 0.008031292818487f, -0.089256882667542f, 0.007962978444993f, -0.088879525661469f, + 0.007894953712821f, -0.088502109050751f, 0.007827218621969f, -0.088124647736549f, + 0.007759772241116f, -0.087747126817703f, 0.007692615967244f, -0.087369553744793f, + 0.007625748869032f, -0.086991935968399f, 0.007559171877801f, -0.086614266037941f, + 0.007492884527892f, -0.086236543953419f, 0.007426886819303f, -0.085858769714832f, + 0.007361178752035f, -0.085480943322182f, 0.007295760791749f, -0.085103072226048f, + 0.007230632472783f, -0.084725148975849f, 0.007165793795139f, -0.084347173571587f, + 0.007101245224476f, -0.083969146013260f, 0.007036986760795f, -0.083591073751450f, + 0.006973018404096f, -0.083212949335575f, 0.006909339688718f, -0.082834780216217f, + 0.006845951545984f, -0.082456558942795f, 0.006782853044569f, -0.082078292965889f, + 0.006720044650137f, -0.081699974834919f, 0.006657526828349f, -0.081321612000465f, + 0.006595299113542f, -0.080943197011948f, 0.006533361505717f, -0.080564737319946f, + 0.006471714470536f, -0.080186225473881f, 0.006410357542336f, -0.079807676374912f, + 0.006349290721118f, -0.079429075121880f, 0.006288514938205f, -0.079050421714783f, + 0.006228029262275f, -0.078671731054783f, 0.006167833693326f, -0.078292988240719f, + 0.006107929162681f, -0.077914200723171f, 0.006048315204680f, -0.077535368502140f, + 0.005988991353661f, -0.077156484127045f, 0.005929958540946f, -0.076777562499046f, + 0.005871216300875f, -0.076398596167564f, 0.005812764633447f, -0.076019577682018f, + 0.005754603538662f, -0.075640521943569f, 0.005696733482182f, -0.075261414051056f, + 0.005639153998345f, -0.074882268905640f, 0.005581865552813f, -0.074503071606159f, + 0.005524867679924f, -0.074123837053776f, 0.005468160845339f, -0.073744557797909f, + 0.005411745049059f, -0.073365233838558f, 0.005355620291084f, -0.072985872626305f, + 0.005299786105752f, -0.072606459259987f, 0.005244242958724f, -0.072227008640766f, + 0.005188991315663f, -0.071847513318062f, 0.005134030245245f, -0.071467980742455f, + 0.005079360678792f, -0.071088403463364f, 0.005024982150644f, -0.070708781480789f, + 0.004970894660801f, -0.070329122245312f, 0.004917098674923f, -0.069949418306351f, + 0.004863593727350f, -0.069569669663906f, 0.004810380283743f, -0.069189883768559f, + 0.004757457878441f, -0.068810060620308f, 0.004704826977104f, -0.068430192768574f, + 0.004652487114072f, -0.068050287663937f, 0.004600439220667f, -0.067670337855816f, + 0.004548682365566f, -0.067290350794792f, 0.004497217014432f, -0.066910326480865f, + 0.004446043167263f, -0.066530264914036f, 0.004395160824060f, -0.066150158643723f, + 0.004344569984823f, -0.065770015120506f, 0.004294271115214f, -0.065389834344387f, + 0.004244263283908f, -0.065009608864784f, 0.004194547422230f, -0.064629353582859f, + 0.004145123064518f, -0.064249053597450f, 0.004095990676433f, -0.063868723809719f, + 0.004047149792314f, -0.063488349318504f, 0.003998600877821f, -0.063107937574387f, + 0.003950343467295f, -0.062727488577366f, 0.003902378026396f, -0.062347009778023f, + 0.003854704322293f, -0.061966486275196f, 0.003807322587818f, -0.061585929244757f, + 0.003760232590139f, -0.061205338686705f, 0.003713434794918f, -0.060824707150459f, + 0.003666928736493f, -0.060444042086601f, 0.003620714880526f, -0.060063343495131f, + 0.003574792761356f, -0.059682607650757f, 0.003529162844643f, -0.059301838278770f, + 0.003483824897557f, -0.058921031653881f, 0.003438779152930f, -0.058540191501379f, + 0.003394025377929f, -0.058159314095974f, 0.003349563805386f, -0.057778406888247f, + 0.003305394435301f, -0.057397462427616f, 0.003261517267674f, -0.057016488164663f, + 0.003217932302505f, -0.056635476648808f, 0.003174639539793f, -0.056254431605339f, + 0.003131638979539f, -0.055873356759548f, 0.003088930854574f, -0.055492244660854f, + 0.003046514932066f, -0.055111102759838f, 0.003004391444847f, -0.054729927331209f, + 0.002962560392916f, -0.054348722100258f, 0.002921021543443f, -0.053967483341694f, + 0.002879775362089f, -0.053586211055517f, 0.002838821383193f, -0.053204908967018f, + 0.002798160072416f, -0.052823577076197f, 0.002757790964097f, -0.052442211657763f, + 0.002717714523897f, -0.052060816437006f, 0.002677930751815f, -0.051679391413927f, + 0.002638439415023f, -0.051297932863235f, 0.002599240746349f, -0.050916448235512f, + 0.002560334512964f, -0.050534930080175f, 0.002521721180528f, -0.050153385847807f, + 0.002483400283381f, -0.049771808087826f, 0.002445372054353f, -0.049390204250813f, + 0.002407636726275f, -0.049008570611477f, 0.002370193833485f, -0.048626907169819f, + 0.002333043841645f, -0.048245213925838f, 0.002296186750755f, -0.047863494604826f, + 0.002259622327983f, -0.047481749206781f, 0.002223350573331f, -0.047099970281124f, + 0.002187371719629f, -0.046718169003725f, 0.002151685766876f, -0.046336337924004f, + 0.002116292715073f, -0.045954477041960f, 0.002081192564219f, -0.045572593808174f, + 0.002046385314316f, -0.045190680772066f, 0.002011870965362f, -0.044808741658926f, + 0.001977649517357f, -0.044426776468754f, 0.001943721086718f, -0.044044785201550f, + 0.001910085673444f, -0.043662767857313f, 0.001876743277535f, -0.043280724436045f, + 0.001843693898991f, -0.042898654937744f, 0.001810937537812f, -0.042516563087702f, + 0.001778474310413f, -0.042134445160627f, 0.001746304216795f, -0.041752301156521f, + 0.001714427140541f, -0.041370131075382f, 0.001682843198068f, -0.040987938642502f, + 0.001651552389376f, -0.040605723857880f, 0.001620554830879f, -0.040223482996225f, + 0.001589850406162f, -0.039841219782829f, 0.001559439115226f, -0.039458930492401f, + 0.001529321074486f, -0.039076622575521f, 0.001499496400356f, -0.038694288581610f, + 0.001469964860007f, -0.038311932235956f, 0.001440726569854f, -0.037929553538561f, + 0.001411781646311f, -0.037547148764133f, 0.001383129972965f, -0.037164725363255f, + 0.001354771666229f, -0.036782283335924f, 0.001326706726104f, -0.036399815231562f, + 0.001298935036175f, -0.036017324775457f, 0.001271456829272f, -0.035634815692902f, + 0.001244271872565f, -0.035252287983894f, 0.001217380515300f, -0.034869734197855f, + 0.001190782408230f, -0.034487165510654f, 0.001164477784187f, -0.034104570746422f, + 0.001138466643170f, -0.033721961081028f, 0.001112748985179f, -0.033339329063892f, + 0.001087324810214f, -0.032956674695015f, 0.001062194118276f, -0.032574005424976f, + 0.001037356909364f, -0.032191313803196f, 0.001012813183479f, -0.031808607280254f, + 0.000988563057035f, -0.031425878405571f, 0.000964606530033f, -0.031043132767081f, + 0.000940943544265f, -0.030660368502140f, 0.000917574157938f, -0.030277585610747f, + 0.000894498312846f, -0.029894785955548f, 0.000871716125403f, -0.029511967673898f, + 0.000849227537401f, -0.029129132628441f, 0.000827032607049f, -0.028746278956532f, + 0.000805131276138f, -0.028363410383463f, 0.000783523661084f, -0.027980525046587f, + 0.000762209703680f, -0.027597622945905f, 0.000741189462133f, -0.027214704081416f, + 0.000720462878235f, -0.026831768453121f, 0.000700030010194f, -0.026448817923665f, + 0.000679890916217f, -0.026065852493048f, 0.000660045538098f, -0.025682870298624f, + 0.000640493875835f, -0.025299875065684f, 0.000621235987637f, -0.024916863068938f, + 0.000602271873504f, -0.024533838033676f, 0.000583601591643f, -0.024150796234608f, + 0.000565225025639f, -0.023767741397023f, 0.000547142291907f, -0.023384673520923f, + 0.000529353390448f, -0.023001590743661f, 0.000511858321261f, -0.022618494927883f, + 0.000494657084346f, -0.022235386073589f, 0.000477749679703f, -0.021852264180779f, + 0.000461136136437f, -0.021469129249454f, 0.000444816454547f, -0.021085981279612f, + 0.000428790634032f, -0.020702820271254f, 0.000413058703998f, -0.020319648087025f, + 0.000397620693548f, -0.019936462864280f, 0.000382476573577f, -0.019553268328309f, + 0.000367626344087f, -0.019170060753822f, 0.000353070063284f, -0.018786842003465f, + 0.000338807702065f, -0.018403612077236f, 0.000324839289533f, -0.018020370975137f, + 0.000311164796585f, -0.017637118697166f, 0.000297784281429f, -0.017253857105970f, + 0.000284697714960f, -0.016870586201549f, 0.000271905126283f, -0.016487304121256f, + 0.000259406515397f, -0.016104012727737f, 0.000247201882303f, -0.015720712020993f, + 0.000235291256104f, -0.015337402001023f, 0.000223674607696f, -0.014954082667828f, + 0.000212351980736f, -0.014570754021406f, 0.000201323360670f, -0.014187417924404f, + 0.000190588747500f, -0.013804072514176f, 0.000180148170330f, -0.013420719653368f, + 0.000170001629158f, -0.013037359341979f, 0.000160149123985f, -0.012653990648687f, + 0.000150590654812f, -0.012270614504814f, 0.000141326236189f, -0.011887230910361f, + 0.000132355868118f, -0.011503840796649f, 0.000123679565149f, -0.011120444163680f, + 0.000115297327284f, -0.010737040080130f, 0.000107209154521f, -0.010353630408645f, + 0.000099415054137f, -0.009970214217901f, 0.000091915040684f, -0.009586792439222f, + 0.000084709099610f, -0.009203365072608f, 0.000077797252743f, -0.008819932118058f, + 0.000071179500083f, -0.008436493575573f, 0.000064855834353f, -0.008053051307797f, + 0.000058826273744f, -0.007669602986425f, 0.000053090810979f, -0.007286150939763f, + 0.000047649456974f, -0.006902694236487f, 0.000042502211727f, -0.006519233807921f, + 0.000037649078877f, -0.006135769188404f, 0.000033090062061f, -0.005752300843596f, + 0.000028825161280f, -0.005368829704821f, 0.000024854381991f, -0.004985354840755f, + 0.000021177724193f, -0.004601877182722f, 0.000017795191525f, -0.004218397196382f, + 0.000014706784896f, -0.003834914416075f, 0.000011912506125f, -0.003451429307461f, + 0.000009412358850f, -0.003067942336202f, 0.000007206342616f, -0.002684453502297f, + 0.000005294459243f, -0.002300963038579f, 0.000003676709639f, -0.001917471294291f, + 0.000002353095169f, -0.001533978385851f, 0.000001323616516f, -0.001150484546088f, + 0.000000588274133f, -0.000766990066040f, 0.000000147068562f, -0.000383495149435f, + 0.000000000000000f, -0.000000000000023f, 0.000000147068562f, 0.000383495149435f, + 0.000000588274133f, 0.000766990066040f, 0.000001323616516f, 0.001150484546088f, + 0.000002353095169f, 0.001533978385851f, 0.000003676709639f, 0.001917471294291f, + 0.000005294459243f, 0.002300963038579f, 0.000007206342616f, 0.002684453502297f, + 0.000009412358850f, 0.003067942336202f, 0.000011912506125f, 0.003451429307461f, + 0.000014706784896f, 0.003834914416075f, 0.000017795191525f, 0.004218397196382f, + 0.000021177724193f, 0.004601877182722f, 0.000024854381991f, 0.004985354840755f, + 0.000028825161280f, 0.005368829704821f, 0.000033090062061f, 0.005752300843596f, + 0.000037649078877f, 0.006135769188404f, 0.000042502211727f, 0.006519233807921f, + 0.000047649456974f, 0.006902694236487f, 0.000053090810979f, 0.007286150939763f, + 0.000058826273744f, 0.007669602986425f, 0.000064855834353f, 0.008053051307797f, + 0.000071179500083f, 0.008436493575573f, 0.000077797252743f, 0.008819932118058f, + 0.000084709099610f, 0.009203365072608f, 0.000091915040684f, 0.009586792439222f, + 0.000099415054137f, 0.009970214217901f, 0.000107209154521f, 0.010353630408645f, + 0.000115297327284f, 0.010737040080130f, 0.000123679565149f, 0.011120444163680f, + 0.000132355868118f, 0.011503840796649f, 0.000141326236189f, 0.011887230910361f, + 0.000150590654812f, 0.012270614504814f, 0.000160149123985f, 0.012653990648687f, + 0.000170001629158f, 0.013037359341979f, 0.000180148170330f, 0.013420719653368f, + 0.000190588747500f, 0.013804072514176f, 0.000201323360670f, 0.014187417924404f, + 0.000212351980736f, 0.014570754021406f, 0.000223674607696f, 0.014954082667828f, + 0.000235291256104f, 0.015337402001023f, 0.000247201882303f, 0.015720712020993f, + 0.000259406515397f, 0.016104012727737f, 0.000271905126283f, 0.016487304121256f, + 0.000284697714960f, 0.016870586201549f, 0.000297784281429f, 0.017253857105970f, + 0.000311164796585f, 0.017637118697166f, 0.000324839289533f, 0.018020370975137f, + 0.000338807702065f, 0.018403612077236f, 0.000353070063284f, 0.018786842003465f, + 0.000367626344087f, 0.019170060753822f, 0.000382476573577f, 0.019553268328309f, + 0.000397620693548f, 0.019936462864280f, 0.000413058703998f, 0.020319648087025f, + 0.000428790634032f, 0.020702820271254f, 0.000444816454547f, 0.021085981279612f, + 0.000461136136437f, 0.021469129249454f, 0.000477749679703f, 0.021852264180779f, + 0.000494657084346f, 0.022235386073589f, 0.000511858321261f, 0.022618494927883f, + 0.000529353390448f, 0.023001590743661f, 0.000547142291907f, 0.023384673520923f, + 0.000565225025639f, 0.023767741397023f, 0.000583601591643f, 0.024150796234608f, + 0.000602271873504f, 0.024533838033676f, 0.000621235987637f, 0.024916863068938f, + 0.000640493875835f, 0.025299875065684f, 0.000660045538098f, 0.025682870298624f, + 0.000679890916217f, 0.026065852493048f, 0.000700030010194f, 0.026448817923665f, + 0.000720462878235f, 0.026831768453121f, 0.000741189462133f, 0.027214704081416f, + 0.000762209703680f, 0.027597622945905f, 0.000783523661084f, 0.027980525046587f, + 0.000805131276138f, 0.028363410383463f, 0.000827032607049f, 0.028746278956532f, + 0.000849227537401f, 0.029129132628441f, 0.000871716125403f, 0.029511967673898f, + 0.000894498312846f, 0.029894785955548f, 0.000917574157938f, 0.030277585610747f, + 0.000940943544265f, 0.030660368502140f, 0.000964606530033f, 0.031043132767081f, + 0.000988563057035f, 0.031425878405571f, 0.001012813183479f, 0.031808607280254f, + 0.001037356909364f, 0.032191313803196f, 0.001062194118276f, 0.032574005424976f, + 0.001087324810214f, 0.032956674695015f, 0.001112748985179f, 0.033339329063892f, + 0.001138466643170f, 0.033721961081028f, 0.001164477784187f, 0.034104570746422f, + 0.001190782408230f, 0.034487165510654f, 0.001217380515300f, 0.034869734197855f, + 0.001244271872565f, 0.035252287983894f, 0.001271456829272f, 0.035634815692902f, + 0.001298935036175f, 0.036017324775457f, 0.001326706726104f, 0.036399815231562f, + 0.001354771666229f, 0.036782283335924f, 0.001383129972965f, 0.037164725363255f, + 0.001411781646311f, 0.037547148764133f, 0.001440726569854f, 0.037929553538561f, + 0.001469964860007f, 0.038311932235956f, 0.001499496400356f, 0.038694288581610f, + 0.001529321074486f, 0.039076622575521f, 0.001559439115226f, 0.039458930492401f, + 0.001589850406162f, 0.039841219782829f, 0.001620554830879f, 0.040223482996225f, + 0.001651552389376f, 0.040605723857880f, 0.001682843198068f, 0.040987938642502f, + 0.001714427140541f, 0.041370131075382f, 0.001746304216795f, 0.041752301156521f, + 0.001778474310413f, 0.042134445160627f, 0.001810937537812f, 0.042516563087702f, + 0.001843693898991f, 0.042898654937744f, 0.001876743277535f, 0.043280724436045f, + 0.001910085673444f, 0.043662767857313f, 0.001943721086718f, 0.044044785201550f, + 0.001977649517357f, 0.044426776468754f, 0.002011870965362f, 0.044808741658926f, + 0.002046385314316f, 0.045190680772066f, 0.002081192564219f, 0.045572593808174f, + 0.002116292715073f, 0.045954477041960f, 0.002151685766876f, 0.046336337924004f, + 0.002187371719629f, 0.046718169003725f, 0.002223350573331f, 0.047099970281124f, + 0.002259622327983f, 0.047481749206781f, 0.002296186750755f, 0.047863494604826f, + 0.002333043841645f, 0.048245213925838f, 0.002370193833485f, 0.048626907169819f, + 0.002407636726275f, 0.049008570611477f, 0.002445372054353f, 0.049390204250813f, + 0.002483400283381f, 0.049771808087826f, 0.002521721180528f, 0.050153385847807f, + 0.002560334512964f, 0.050534930080175f, 0.002599240746349f, 0.050916448235512f, + 0.002638439415023f, 0.051297932863235f, 0.002677930751815f, 0.051679391413927f, + 0.002717714523897f, 0.052060816437006f, 0.002757790964097f, 0.052442211657763f, + 0.002798160072416f, 0.052823577076197f, 0.002838821383193f, 0.053204908967018f, + 0.002879775362089f, 0.053586211055517f, 0.002921021543443f, 0.053967483341694f, + 0.002962560392916f, 0.054348722100258f, 0.003004391444847f, 0.054729927331209f, + 0.003046514932066f, 0.055111102759838f, 0.003088930854574f, 0.055492244660854f, + 0.003131638979539f, 0.055873356759548f, 0.003174639539793f, 0.056254431605339f, + 0.003217932302505f, 0.056635476648808f, 0.003261517267674f, 0.057016488164663f, + 0.003305394435301f, 0.057397462427616f, 0.003349563805386f, 0.057778406888247f, + 0.003394025377929f, 0.058159314095974f, 0.003438779152930f, 0.058540191501379f, + 0.003483824897557f, 0.058921031653881f, 0.003529162844643f, 0.059301838278770f, + 0.003574792761356f, 0.059682607650757f, 0.003620714880526f, 0.060063343495131f, + 0.003666928736493f, 0.060444042086601f, 0.003713434794918f, 0.060824707150459f, + 0.003760232590139f, 0.061205338686705f, 0.003807322587818f, 0.061585929244757f, + 0.003854704322293f, 0.061966486275196f, 0.003902378026396f, 0.062347009778023f, + 0.003950343467295f, 0.062727488577366f, 0.003998600877821f, 0.063107937574387f, + 0.004047149792314f, 0.063488349318504f, 0.004095990676433f, 0.063868723809719f, + 0.004145123064518f, 0.064249053597450f, 0.004194547422230f, 0.064629353582859f, + 0.004244263283908f, 0.065009608864784f, 0.004294271115214f, 0.065389834344387f, + 0.004344569984823f, 0.065770015120506f, 0.004395160824060f, 0.066150158643723f, + 0.004446043167263f, 0.066530264914036f, 0.004497217014432f, 0.066910326480865f, + 0.004548682365566f, 0.067290350794792f, 0.004600439220667f, 0.067670337855816f, + 0.004652487114072f, 0.068050287663937f, 0.004704826977104f, 0.068430192768574f, + 0.004757457878441f, 0.068810060620308f, 0.004810380283743f, 0.069189883768559f, + 0.004863593727350f, 0.069569669663906f, 0.004917098674923f, 0.069949418306351f, + 0.004970894660801f, 0.070329122245312f, 0.005024982150644f, 0.070708781480789f, + 0.005079360678792f, 0.071088403463364f, 0.005134030245245f, 0.071467980742455f, + 0.005188991315663f, 0.071847513318062f, 0.005244242958724f, 0.072227008640766f, + 0.005299786105752f, 0.072606459259987f, 0.005355620291084f, 0.072985872626305f, + 0.005411745049059f, 0.073365233838558f, 0.005468160845339f, 0.073744557797909f, + 0.005524867679924f, 0.074123837053776f, 0.005581865552813f, 0.074503071606159f, + 0.005639153998345f, 0.074882268905640f, 0.005696733482182f, 0.075261414051056f, + 0.005754603538662f, 0.075640521943569f, 0.005812764633447f, 0.076019577682018f, + 0.005871216300875f, 0.076398596167564f, 0.005929958540946f, 0.076777562499046f, + 0.005988991353661f, 0.077156484127045f, 0.006048315204680f, 0.077535368502140f, + 0.006107929162681f, 0.077914200723171f, 0.006167833693326f, 0.078292988240719f, + 0.006228029262275f, 0.078671731054783f, 0.006288514938205f, 0.079050421714783f, + 0.006349290721118f, 0.079429075121880f, 0.006410357542336f, 0.079807676374912f, + 0.006471714470536f, 0.080186225473881f, 0.006533361505717f, 0.080564737319946f, + 0.006595299113542f, 0.080943197011948f, 0.006657526828349f, 0.081321612000465f, + 0.006720044650137f, 0.081699974834919f, 0.006782853044569f, 0.082078292965889f, + 0.006845951545984f, 0.082456558942795f, 0.006909339688718f, 0.082834780216217f, + 0.006973018404096f, 0.083212949335575f, 0.007036986760795f, 0.083591073751450f, + 0.007101245224476f, 0.083969146013260f, 0.007165793795139f, 0.084347173571587f, + 0.007230632472783f, 0.084725148975849f, 0.007295760791749f, 0.085103072226048f, + 0.007361178752035f, 0.085480943322182f, 0.007426886819303f, 0.085858769714832f, + 0.007492884527892f, 0.086236543953419f, 0.007559171877801f, 0.086614266037941f, + 0.007625748869032f, 0.086991935968399f, 0.007692615967244f, 0.087369553744793f, + 0.007759772241116f, 0.087747126817703f, 0.007827218621969f, 0.088124647736549f, + 0.007894953712821f, 0.088502109050751f, 0.007962978444993f, 0.088879525661469f, + 0.008031292818487f, 0.089256882667542f, 0.008099896833301f, 0.089634194970131f, + 0.008168790489435f, 0.090011447668076f, 0.008237972855568f, 0.090388655662537f, + 0.008307444863021f, 0.090765804052353f, 0.008377205580473f, 0.091142900288105f, + 0.008447255939245f, 0.091519944369793f, 0.008517595939338f, 0.091896936297417f, + 0.008588224649429f, 0.092273868620396f, 0.008659142069519f, 0.092650748789310f, + 0.008730349130929f, 0.093027576804161f, 0.008801844902337f, 0.093404345214367f, + 0.008873629383743f, 0.093781061470509f, 0.008945702575147f, 0.094157725572586f, + 0.009018065407872f, 0.094534330070019f, 0.009090716950595f, 0.094910882413387f, + 0.009163657203317f, 0.095287375152111f, 0.009236886166036f, 0.095663815736771f, + 0.009310402907431f, 0.096040196716785f, 0.009384209290147f, 0.096416525542736f, + 0.009458304382861f, 0.096792794764042f, 0.009532688185573f, 0.097169004380703f, + 0.009607359766960f, 0.097545161843300f, 0.009682320058346f, 0.097921259701252f, + 0.009757569059730f, 0.098297297954559f, 0.009833106771111f, 0.098673284053802f, + 0.009908932261169f, 0.099049203097820f, 0.009985045529902f, 0.099425069987774f, + 0.010061448439956f, 0.099800877273083f, 0.010138138197362f, 0.100176624953747f, + 0.010215117596090f, 0.100552320480347f, 0.010292383842170f, 0.100927948951721f, + 0.010369938798249f, 0.101303517818451f, 0.010447781533003f, 0.101679034531116f, + 0.010525912046432f, 0.102054484188557f, 0.010604331269860f, 0.102429874241352f, + 0.010683037340641f, 0.102805204689503f, 0.010762032121420f, 0.103180475533009f, + 0.010841314680874f, 0.103555686771870f, 0.010920885019004f, 0.103930838406086f, + 0.011000742204487f, 0.104305922985077f, 0.011080888099968f, 0.104680955410004f, + 0.011161320842803f, 0.105055920779705f, 0.011242041364312f, 0.105430819094181f, + 0.011323049664497f, 0.105805665254593f, 0.011404345743358f, 0.106180444359779f, + 0.011485928669572f, 0.106555156409740f, 0.011567799374461f, 0.106929816305637f, + 0.011649956926703f, 0.107304409146309f, 0.011732402257621f, 0.107678934931755f, + 0.011815134435892f, 0.108053401112556f, 0.011898153461516f, 0.108427800238132f, + 0.011981460265815f, 0.108802139759064f, 0.012065053917468f, 0.109176412224770f, + 0.012148935347795f, 0.109550617635250f, 0.012233102694154f, 0.109924763441086f, + 0.012317557819188f, 0.110298842191696f, 0.012402298860252f, 0.110672861337662f, + 0.012487327679992f, 0.111046813428402f, 0.012572642415762f, 0.111420698463917f, + 0.012658244930208f, 0.111794516444206f, 0.012744133360684f, 0.112168267369270f, + 0.012830308638513f, 0.112541958689690f, 0.012916770763695f, 0.112915575504303f, + 0.013003518804908f, 0.113289132714272f, 0.013090553693473f, 0.113662622869015f, + 0.013177875429392f, 0.114036038517952f, 0.013265483081341f, 0.114409394562244f, + 0.013353376649320f, 0.114782683551311f, 0.013441557064652f, 0.115155905485153f, + 0.013530024327338f, 0.115529052913189f, 0.013618776574731f, 0.115902140736580f, + 0.013707815669477f, 0.116275154054165f, 0.013797140680254f, 0.116648100316525f, + 0.013886751607060f, 0.117020979523659f, 0.013976648449898f, 0.117393791675568f, + 0.014066831208766f, 0.117766529321671f, 0.014157299883664f, 0.118139199912548f, + 0.014248054474592f, 0.118511803448200f, 0.014339094981551f, 0.118884332478046f, + 0.014430420473218f, 0.119256794452667f, 0.014522032812238f, 0.119629189372063f, + 0.014613929204643f, 0.120001509785652f, 0.014706112444401f, 0.120373763144016f, + 0.014798580668867f, 0.120745941996574f, 0.014891333878040f, 0.121118053793907f, + 0.014984373003244f, 0.121490091085434f, 0.015077698044479f, 0.121862053871155f, + 0.015171307139099f, 0.122233949601650f, 0.015265202149749f, 0.122605770826340f, + 0.015359382145107f, 0.122977524995804f, 0.015453847125173f, 0.123349204659462f, + 0.015548598021269f, 0.123720809817314f, 0.015643632039428f, 0.124092340469360f, + 0.015738952904940f, 0.124463804066181f, 0.015834558755159f, 0.124835193157196f, + 0.015930447727442f, 0.125206500291824f, 0.016026621684432f, 0.125577747821808f, + 0.016123080626130f, 0.125948905944824f, 0.016219824552536f, 0.126320004463196f, + 0.016316853463650f, 0.126691013574600f, 0.016414167359471f, 0.127061963081360f, + 0.016511764377356f, 0.127432823181152f, 0.016609646379948f, 0.127803623676300f, + 0.016707813367248f, 0.128174334764481f, 0.016806263476610f, 0.128544986248016f, + 0.016904998570681f, 0.128915548324585f, 0.017004016786814f, 0.129286035895348f, + 0.017103319987655f, 0.129656463861465f, 0.017202908173203f, 0.130026802420616f, + 0.017302779480815f, 0.130397051572800f, 0.017402933910489f, 0.130767241120338f, + 0.017503373324871f, 0.131137356162071f, 0.017604095861316f, 0.131507381796837f, + 0.017705103382468f, 0.131877332925797f, 0.017806394025683f, 0.132247209548950f, + 0.017907967790961f, 0.132617011666298f, 0.018009826540947f, 0.132986739277840f, + 0.018111966550350f, 0.133356377482414f, 0.018214391544461f, 0.133725941181183f, + 0.018317099660635f, 0.134095430374146f, 0.018420090898871f, 0.134464830160141f, + 0.018523367121816f, 0.134834155440331f, 0.018626924604177f, 0.135203406214714f, + 0.018730765208602f, 0.135572582483292f, 0.018834890797734f, 0.135941669344902f, + 0.018939297646284f, 0.136310681700706f, 0.019043987616897f, 0.136679604649544f, + 0.019148962572217f, 0.137048453092575f, 0.019254218786955f, 0.137417227029800f, + 0.019359756261110f, 0.137785911560059f, 0.019465578719974f, 0.138154521584511f, + 0.019571684300900f, 0.138523042201996f, 0.019678071141243f, 0.138891488313675f, + 0.019784741103649f, 0.139259845018387f, 0.019891692325473f, 0.139628127217293f, + 0.019998926669359f, 0.139996320009232f, 0.020106444135308f, 0.140364438295364f, + 0.020214242860675f, 0.140732467174530f, 0.020322324708104f, 0.141100421547890f, + 0.020430689677596f, 0.141468286514282f, 0.020539334043860f, 0.141836062073708f, + 0.020648263394833f, 0.142203763127327f, 0.020757472142577f, 0.142571389675140f, + 0.020866964012384f, 0.142938911914825f, 0.020976737141609f, 0.143306359648705f, + 0.021086793392897f, 0.143673732876778f, 0.021197130903602f, 0.144041016697884f, + 0.021307749673724f, 0.144408211112022f, 0.021418649703264f, 0.144775316119194f, + 0.021529832854867f, 0.145142331719399f, 0.021641295403242f, 0.145509272813797f, + 0.021753041073680f, 0.145876124501228f, 0.021865066140890f, 0.146242901682854f, + 0.021977374330163f, 0.146609574556351f, 0.022089963778853f, 0.146976172924042f, + 0.022202832624316f, 0.147342681884766f, 0.022315984591842f, 0.147709101438522f, + 0.022429415956140f, 0.148075446486473f, 0.022543128579855f, 0.148441687226295f, + 0.022657122462988f, 0.148807853460312f, 0.022771397605538f, 0.149173930287361f, + 0.022885952144861f, 0.149539917707443f, 0.023000787943602f, 0.149905815720558f, + 0.023115905001760f, 0.150271624326706f, 0.023231301456690f, 0.150637343525887f, + 0.023346979171038f, 0.151002973318100f, 0.023462938144803f, 0.151368513703346f, + 0.023579176515341f, 0.151733979582787f, 0.023695694282651f, 0.152099341154099f, + 0.023812493309379f, 0.152464613318443f, 0.023929571732879f, 0.152829796075821f, + 0.024046931415796f, 0.153194904327393f, 0.024164570495486f, 0.153559908270836f, + 0.024282488971949f, 0.153924822807312f, 0.024400688707829f, 0.154289647936821f, + 0.024519165977836f, 0.154654383659363f, 0.024637924507260f, 0.155019029974937f, + 0.024756962433457f, 0.155383571982384f, 0.024876279756427f, 0.155748039484024f, + 0.024995878338814f, 0.156112402677536f, 0.025115754455328f, 0.156476691365242f, + 0.025235909968615f, 0.156840875744820f, 0.025356344878674f, 0.157204970717430f, + 0.025477059185505f, 0.157568961381912f, 0.025598052889109f, 0.157932877540588f, + 0.025719324126840f, 0.158296689391136f, 0.025840876623988f, 0.158660411834717f, + 0.025962706655264f, 0.159024044871330f, 0.026084816083312f, 0.159387573599815f, + 0.026207204908133f, 0.159751012921333f, 0.026329871267080f, 0.160114362835884f, + 0.026452817022800f, 0.160477623343468f, 0.026576040312648f, 0.160840779542923f, + 0.026699542999268f, 0.161203846335411f, 0.026823325082660f, 0.161566808819771f, + 0.026947384700179f, 0.161929681897163f, 0.027071721851826f, 0.162292465567589f, + 0.027196336537600f, 0.162655144929886f, 0.027321230620146f, 0.163017734885216f, + 0.027446404099464f, 0.163380220532417f, 0.027571853250265f, 0.163742616772652f, + 0.027697581797838f, 0.164104923605919f, 0.027823587879539f, 0.164467126131058f, + 0.027949871495366f, 0.164829224348068f, 0.028076432645321f, 0.165191248059273f, + 0.028203271329403f, 0.165553152561188f, 0.028330387547612f, 0.165914967656136f, + 0.028457781299949f, 0.166276678442955f, 0.028585452586412f, 0.166638299822807f, + 0.028713401407003f, 0.166999831795692f, 0.028841627761722f, 0.167361244559288f, + 0.028970129787922f, 0.167722567915916f, 0.029098909348249f, 0.168083801865578f, + 0.029227968305349f, 0.168444931507111f, 0.029357301071286f, 0.168805956840515f, + 0.029486913233995f, 0.169166877865791f, 0.029616801068187f, 0.169527709484100f, + 0.029746964573860f, 0.169888436794281f, 0.029877405613661f, 0.170249074697495f, + 0.030008124187589f, 0.170609608292580f, 0.030139118432999f, 0.170970037579536f, + 0.030270388349891f, 0.171330362558365f, 0.030401935800910f, 0.171690583229065f, + 0.030533758923411f, 0.172050714492798f, 0.030665857717395f, 0.172410741448402f, + 0.030798232182860f, 0.172770664095879f, 0.030930884182453f, 0.173130482435226f, + 0.031063811853528f, 0.173490211367607f, 0.031197015196085f, 0.173849821090698f, + 0.031330492347479f, 0.174209341406822f, 0.031464248895645f, 0.174568757414818f, + 0.031598277390003f, 0.174928069114685f, 0.031732585281134f, 0.175287276506424f, + 0.031867165118456f, 0.175646379590034f, 0.032002024352551f, 0.176005378365517f, + 0.032137155532837f, 0.176364272832870f, 0.032272562384605f, 0.176723077893257f, + 0.032408244907856f, 0.177081763744354f, 0.032544203102589f, 0.177440345287323f, + 0.032680433243513f, 0.177798837423325f, 0.032816942781210f, 0.178157210350037f, + 0.032953724265099f, 0.178515478968620f, 0.033090781420469f, 0.178873643279076f, + 0.033228114247322f, 0.179231703281403f, 0.033365719020367f, 0.179589673876762f, + 0.033503599464893f, 0.179947525262833f, 0.033641755580902f, 0.180305257439613f, + 0.033780183643103f, 0.180662900209427f, 0.033918887376785f, 0.181020438671112f, + 0.034057866781950f, 0.181377857923508f, 0.034197118133307f, 0.181735187768936f, + 0.034336645156145f, 0.182092398405075f, 0.034476444125175f, 0.182449504733086f, + 0.034616518765688f, 0.182806491851807f, 0.034756865352392f, 0.183163389563560f, + 0.034897487610579f, 0.183520168066025f, 0.035038381814957f, 0.183876842260361f, + 0.035179551690817f, 0.184233412146568f, 0.035320993512869f, 0.184589877724648f, + 0.035462711006403f, 0.184946224093437f, 0.035604696720839f, 0.185302466154099f, + 0.035746958106756f, 0.185658603906631f, 0.035889495164156f, 0.186014622449875f, + 0.036032304167747f, 0.186370536684990f, 0.036175385117531f, 0.186726331710815f, + 0.036318738013506f, 0.187082037329674f, 0.036462362855673f, 0.187437608838081f, + 0.036606263369322f, 0.187793090939522f, 0.036750435829163f, 0.188148453831673f, + 0.036894880235195f, 0.188503712415695f, 0.037039596587420f, 0.188858851790428f, + 0.037184584885836f, 0.189213871955872f, 0.037329845130444f, 0.189568802714348f, + 0.037475381046534f, 0.189923599362373f, 0.037621185183525f, 0.190278306603432f, + 0.037767261266708f, 0.190632879734039f, 0.037913613021374f, 0.190987363457680f, + 0.038060232996941f, 0.191341713070869f, 0.038207128643990f, 0.191695958375931f, + 0.038354292511940f, 0.192050099372864f, 0.038501728326082f, 0.192404121160507f, + 0.038649436086416f, 0.192758023738861f, 0.038797415792942f, 0.193111822009087f, + 0.038945667445660f, 0.193465501070023f, 0.039094187319279f, 0.193819075822830f, + 0.039242979139090f, 0.194172516465187f, 0.039392042905092f, 0.194525867700577f, + 0.039541378617287f, 0.194879084825516f, 0.039690986275673f, 0.195232197642326f, + 0.039840862154961f, 0.195585191249847f, 0.039991009980440f, 0.195938065648079f, + 0.040141426026821f, 0.196290835738182f, 0.040292114019394f, 0.196643486618996f, + 0.040443073958158f, 0.196996018290520f, 0.040594302117825f, 0.197348430752754f, + 0.040745802223682f, 0.197700738906860f, 0.040897574275732f, 0.198052927851677f, + 0.041049610823393f, 0.198404997587204f, 0.041201923042536f, 0.198756948113441f, + 0.041354499757290f, 0.199108779430389f, 0.041507352143526f, 0.199460506439209f, + 0.041660469025373f, 0.199812099337578f, 0.041813857853413f, 0.200163587927818f, + 0.041967518627644f, 0.200514942407608f, 0.042121443897486f, 0.200866192579269f, + 0.042275641113520f, 0.201217323541641f, 0.042430106550455f, 0.201568335294724f, + 0.042584843933582f, 0.201919227838516f, 0.042739849537611f, 0.202270001173019f, + 0.042895123362541f, 0.202620655298233f, 0.043050665408373f, 0.202971190214157f, + 0.043206475675106f, 0.203321605920792f, 0.043362557888031f, 0.203671902418137f, + 0.043518904596567f, 0.204022079706192f, 0.043675523251295f, 0.204372137784958f, + 0.043832406401634f, 0.204722076654434f, 0.043989561498165f, 0.205071896314621f, + 0.044146984815598f, 0.205421581864357f, 0.044304672628641f, 0.205771163105965f, + 0.044462632387877f, 0.206120610237122f, 0.044620860368013f, 0.206469938158989f, + 0.044779352843761f, 0.206819161772728f, 0.044938117265701f, 0.207168251276016f, + 0.045097146183252f, 0.207517206668854f, 0.045256443321705f, 0.207866057753563f, + 0.045416008681059f, 0.208214774727821f, 0.045575842261314f, 0.208563387393951f, + 0.045735940337181f, 0.208911851048470f, 0.045896306633949f, 0.209260210394859f, + 0.046056941151619f, 0.209608450531960f, 0.046217843890190f, 0.209956556558609f, + 0.046379011124372f, 0.210304543375969f, 0.046540446579456f, 0.210652396082878f, + 0.046702146530151f, 0.211000129580498f, 0.046864114701748f, 0.211347743868828f, + 0.047026351094246f, 0.211695238947868f, 0.047188851982355f, 0.212042599916458f, + 0.047351621091366f, 0.212389841675758f, 0.047514654695988f, 0.212736949324608f, + 0.047677956521511f, 0.213083937764168f, 0.047841522842646f, 0.213430806994438f, + 0.048005353659391f, 0.213777542114258f, 0.048169452697039f, 0.214124158024788f, + 0.048333816230297f, 0.214470639824867f, 0.048498444259167f, 0.214817002415657f, + 0.048663340508938f, 0.215163245797157f, 0.048828501254320f, 0.215509355068207f, + 0.048993926495314f, 0.215855330228806f, 0.049159619957209f, 0.216201186180115f, + 0.049325577914715f, 0.216546908020973f, 0.049491796642542f, 0.216892510652542f, + 0.049658283591270f, 0.217237979173660f, 0.049825038760900f, 0.217583328485489f, + 0.049992054700851f, 0.217928543686867f, 0.050159335136414f, 0.218273624777794f, + 0.050326880067587f, 0.218618586659431f, 0.050494693219662f, 0.218963414430618f, + 0.050662767142057f, 0.219308122992516f, 0.050831105560064f, 0.219652697443962f, + 0.050999708473682f, 0.219997137784958f, 0.051168579608202f, 0.220341444015503f, + 0.051337707787752f, 0.220685631036758f, 0.051507104188204f, 0.221029683947563f, + 0.051676765084267f, 0.221373617649078f, 0.051846686750650f, 0.221717402338982f, + 0.052016876637936f, 0.222061067819595f, 0.052187327295542f, 0.222404599189758f, + 0.052358038723469f, 0.222748011350632f, 0.052529018372297f, 0.223091274499893f, + 0.052700258791447f, 0.223434418439865f, 0.052871759980917f, 0.223777428269386f, + 0.053043525665998f, 0.224120303988457f, 0.053215555846691f, 0.224463045597076f, + 0.053387850522995f, 0.224805667996407f, 0.053560405969620f, 0.225148141384125f, + 0.053733222186565f, 0.225490495562553f, 0.053906302899122f, 0.225832715630531f, + 0.054079644382000f, 0.226174786686897f, 0.054253250360489f, 0.226516738533974f, + 0.054427117109299f, 0.226858556270599f, 0.054601248353720f, 0.227200239896774f, + 0.054775636643171f, 0.227541789412498f, 0.054950293153524f, 0.227883204817772f, + 0.055125206708908f, 0.228224486112595f, 0.055300384759903f, 0.228565633296967f, + 0.055475823581219f, 0.228906646370888f, 0.055651523172855f, 0.229247525334358f, + 0.055827483534813f, 0.229588270187378f, 0.056003704667091f, 0.229928880929947f, + 0.056180190294981f, 0.230269357562065f, 0.056356932967901f, 0.230609700083733f, + 0.056533940136433f, 0.230949893593788f, 0.056711208075285f, 0.231289967894554f, + 0.056888736784458f, 0.231629893183708f, 0.057066522538662f, 0.231969684362412f, + 0.057244572788477f, 0.232309341430664f, 0.057422880083323f, 0.232648864388466f, + 0.057601451873779f, 0.232988253235817f, 0.057780280709267f, 0.233327493071556f, + 0.057959370315075f, 0.233666598796844f, 0.058138720691204f, 0.234005570411682f, + 0.058318331837654f, 0.234344407916069f, 0.058498200029135f, 0.234683111310005f, + 0.058678328990936f, 0.235021665692329f, 0.058858718723059f, 0.235360085964203f, + 0.059039369225502f, 0.235698372125626f, 0.059220276772976f, 0.236036509275436f, + 0.059401445090771f, 0.236374512314796f, 0.059582870453596f, 0.236712381243706f, + 0.059764556586742f, 0.237050101161003f, 0.059946499764919f, 0.237387686967850f, + 0.060128703713417f, 0.237725138664246f, 0.060311164706945f, 0.238062441349030f, + 0.060493886470795f, 0.238399609923363f, 0.060676865279675f, 0.238736644387245f, + 0.060860104858875f, 0.239073529839516f, 0.061043601483107f, 0.239410281181335f, + 0.061227355152369f, 0.239746883511543f, 0.061411365866661f, 0.240083336830139f, + 0.061595637351274f, 0.240419670939446f, 0.061780165880919f, 0.240755841135979f, + 0.061964951455593f, 0.241091892123222f, 0.062149997800589f, 0.241427779197693f, + 0.062335297465324f, 0.241763532161713f, 0.062520854175091f, 0.242099151015282f, + 0.062706671655178f, 0.242434620857239f, 0.062892749905586f, 0.242769956588745f, + 0.063079081475735f, 0.243105143308640f, 0.063265666365623f, 0.243440181016922f, + 0.063452512025833f, 0.243775084614754f, 0.063639611005783f, 0.244109839200974f, + 0.063826970756054f, 0.244444444775581f, 0.064014583826065f, 0.244778916239738f, + 0.064202457666397f, 0.245113238692284f, 0.064390584826469f, 0.245447427034378f, + 0.064578965306282f, 0.245781451463699f, 0.064767606556416f, 0.246115356683731f, + 0.064956501126289f, 0.246449097990990f, 0.065145656466484f, 0.246782705187798f, + 0.065335065126419f, 0.247116148471832f, 0.065524727106094f, 0.247449472546577f, + 0.065714649856091f, 0.247782632708550f, 0.065904818475246f, 0.248115643858910f, + 0.066095255315304f, 0.248448520898819f, 0.066285938024521f, 0.248781248927116f, + 0.066476874053478f, 0.249113827943802f, 0.066668070852757f, 0.249446272850037f, + 0.066859520971775f, 0.249778553843498f, 0.067051224410534f, 0.250110685825348f, + 0.067243188619614f, 0.250442683696747f, 0.067435398697853f, 0.250774532556534f, + 0.067627869546413f, 0.251106232404709f, 0.067820593714714f, 0.251437783241272f, + 0.068013571202755f, 0.251769185066223f, 0.068206802010536f, 0.252100437879562f, + 0.068400286138058f, 0.252431541681290f, 0.068594031035900f, 0.252762526273727f, + 0.068788021802902f, 0.253093332052231f, 0.068982265889645f, 0.253423988819122f, + 0.069176770746708f, 0.253754496574402f, 0.069371521472931f, 0.254084855318069f, + 0.069566532969475f, 0.254415065050125f, 0.069761790335178f, 0.254745125770569f, + 0.069957308471203f, 0.255075037479401f, 0.070153072476387f, 0.255404800176620f, + 0.070349089801311f, 0.255734413862228f, 0.070545360445976f, 0.256063878536224f, + 0.070741884410381f, 0.256393194198608f, 0.070938661694527f, 0.256722360849380f, + 0.071135692298412f, 0.257051378488541f, 0.071332976222038f, 0.257380217313766f, + 0.071530513465405f, 0.257708936929703f, 0.071728296577930f, 0.258037507534027f, + 0.071926333010197f, 0.258365899324417f, 0.072124622762203f, 0.258694142103195f, + 0.072323165833950f, 0.259022265672684f, 0.072521962225437f, 0.259350210428238f, + 0.072721004486084f, 0.259678006172180f, 0.072920300066471f, 0.260005623102188f, + 0.073119848966599f, 0.260333120822906f, 0.073319651186466f, 0.260660469532013f, + 0.073519699275494f, 0.260987639427185f, 0.073720000684261f, 0.261314690113068f, + 0.073920547962189f, 0.261641561985016f, 0.074121348559856f, 0.261968284845352f, + 0.074322402477264f, 0.262294828891754f, 0.074523709714413f, 0.262621253728867f, + 0.074725262820721f, 0.262947499752045f, 0.074927061796188f, 0.263273626565933f, + 0.075129114091396f, 0.263599574565887f, 0.075331419706345f, 0.263925373554230f, + 0.075533971190453f, 0.264250993728638f, 0.075736775994301f, 0.264576494693756f, + 0.075939826667309f, 0.264901816844940f, 0.076143130660057f, 0.265226989984512f, + 0.076346680521965f, 0.265552014112473f, 0.076550483703613f, 0.265876859426498f, + 0.076754532754421f, 0.266201555728912f, 0.076958827674389f, 0.266526103019714f, + 0.077163375914097f, 0.266850501298904f, 0.077368170022964f, 0.267174720764160f, + 0.077573217451572f, 0.267498821020126f, 0.077778510749340f, 0.267822742462158f, + 0.077984049916267f, 0.268146485090256f, 0.078189842402935f, 0.268470078706741f, + 0.078395880758762f, 0.268793523311615f, 0.078602164983749f, 0.269116818904877f, + 0.078808702528477f, 0.269439965486526f, 0.079015478491783f, 0.269762933254242f, + 0.079222507774830f, 0.270085722208023f, 0.079429790377617f, 0.270408391952515f, + 0.079637311398983f, 0.270730882883072f, 0.079845085740089f, 0.271053224802017f, + 0.080053105950356f, 0.271375387907028f, 0.080261372029781f, 0.271697402000427f, + 0.080469883978367f, 0.272019267082214f, 0.080678641796112f, 0.272340953350067f, + 0.080887645483017f, 0.272662490606308f, 0.081096902489662f, 0.272983878850937f, + 0.081306397914886f, 0.273305088281631f, 0.081516146659851f, 0.273626148700714f, + 0.081726133823395f, 0.273947030305862f, 0.081936374306679f, 0.274267762899399f, + 0.082146860659122f, 0.274588316679001f, 0.082357585430145f, 0.274908751249313f, + 0.082568563520908f, 0.275228977203369f, 0.082779780030251f, 0.275549083948135f, + 0.082991249859333f, 0.275868982076645f, 0.083202958106995f, 0.276188760995865f, + 0.083414919674397f, 0.276508361101151f, 0.083627119660378f, 0.276827782392502f, + 0.083839565515518f, 0.277147054672241f, 0.084052257239819f, 0.277466177940369f, + 0.084265194833279f, 0.277785122394562f, 0.084478378295898f, 0.278103888034821f, + 0.084691800177097f, 0.278422504663467f, 0.084905467927456f, 0.278740972280502f, + 0.085119381546974f, 0.279059261083603f, 0.085333541035652f, 0.279377400875092f, + 0.085547938942909f, 0.279695361852646f, 0.085762590169907f, 0.280013144016266f, + 0.085977479815483f, 0.280330777168274f, 0.086192607879639f, 0.280648261308670f, + 0.086407989263535f, 0.280965566635132f, 0.086623609066010f, 0.281282693147659f, + 0.086839467287064f, 0.281599670648575f, 0.087055571377277f, 0.281916469335556f, + 0.087271921336651f, 0.282233119010925f, 0.087488517165184f, 0.282549589872360f, + 0.087705351412296f, 0.282865911722183f, 0.087922424077988f, 0.283182054758072f, + 0.088139742612839f, 0.283498018980026f, 0.088357307016850f, 0.283813834190369f, + 0.088575109839439f, 0.284129470586777f, 0.088793158531189f, 0.284444957971573f, + 0.089011445641518f, 0.284760266542435f, 0.089229971170425f, 0.285075396299362f, + 0.089448742568493f, 0.285390377044678f, 0.089667752385139f, 0.285705178976059f, + 0.089887008070946f, 0.286019802093506f, 0.090106502175331f, 0.286334276199341f, + 0.090326242148876f, 0.286648571491241f, 0.090546220541000f, 0.286962717771530f, + 0.090766437351704f, 0.287276685237885f, 0.090986892580986f, 0.287590473890305f, + 0.091207593679428f, 0.287904083728790f, 0.091428533196449f, 0.288217544555664f, + 0.091649711132050f, 0.288530826568604f, 0.091871134936810f, 0.288843959569931f, + 0.092092797160149f, 0.289156883955002f, 0.092314697802067f, 0.289469659328461f, + 0.092536836862564f, 0.289782285690308f, 0.092759214341640f, 0.290094703435898f, + 0.092981837689877f, 0.290406972169876f, 0.093204692006111f, 0.290719062089920f, + 0.093427792191505f, 0.291031002998352f, 0.093651130795479f, 0.291342735290527f, + 0.093874707818031f, 0.291654318571091f, 0.094098523259163f, 0.291965723037720f, + 0.094322577118874f, 0.292276978492737f, 0.094546869397163f, 0.292588025331497f, + 0.094771400094032f, 0.292898923158646f, 0.094996169209480f, 0.293209642171860f, + 0.095221176743507f, 0.293520182371140f, 0.095446422696114f, 0.293830573558807f, + 0.095671907067299f, 0.294140785932541f, 0.095897629857063f, 0.294450789690018f, + 0.096123591065407f, 0.294760644435883f, 0.096349790692329f, 0.295070350170136f, + 0.096576221287251f, 0.295379847288132f, 0.096802897751331f, 0.295689195394516f, + 0.097029805183411f, 0.295998334884644f, 0.097256951034069f, 0.296307325363159f, + 0.097484335303307f, 0.296616137027740f, 0.097711957991123f, 0.296924799680710f, + 0.097939811646938f, 0.297233253717422f, 0.098167903721333f, 0.297541528940201f, + 0.098396234214306f, 0.297849655151367f, 0.098624803125858f, 0.298157602548599f, + 0.098853603005409f, 0.298465341329575f, 0.099082641303539f, 0.298772931098938f, + 0.099311910569668f, 0.299080342054367f, 0.099541425704956f, 0.299387603998184f, + 0.099771171808243f, 0.299694657325745f, 0.100001148879528f, 0.300001531839371f, + 0.100231364369392f, 0.300308227539063f, 0.100461818277836f, 0.300614774227142f, + 0.100692503154278f, 0.300921112298965f, 0.100923426449299f, 0.301227301359177f, + 0.101154580712318f, 0.301533311605453f, 0.101385973393917f, 0.301839113235474f, + 0.101617597043514f, 0.302144765853882f, 0.101849451661110f, 0.302450239658356f, + 0.102081544697285f, 0.302755534648895f, 0.102313876152039f, 0.303060621023178f, + 0.102546438574791f, 0.303365558385849f, 0.102779231965542f, 0.303670316934586f, + 0.103012263774872f, 0.303974896669388f, 0.103245526552200f, 0.304279297590256f, + 0.103479020297527f, 0.304583519697189f, 0.103712752461433f, 0.304887533187866f, + 0.103946708142757f, 0.305191397666931f, 0.104180909693241f, 0.305495083332062f, + 0.104415334761143f, 0.305798590183258f, 0.104649998247623f, 0.306101888418198f, + 0.104884892702103f, 0.306405037641525f, 0.105120018124580f, 0.306708008050919f, + 0.105355374515057f, 0.307010769844055f, 0.105590961873531f, 0.307313382625580f, + 0.105826787650585f, 0.307615786790848f, 0.106062836945057f, 0.307918041944504f, + 0.106299124658108f, 0.308220088481903f, 0.106535643339157f, 0.308521956205368f, + 0.106772392988205f, 0.308823645114899f, 0.107009373605251f, 0.309125155210495f, + 0.107246585190296f, 0.309426486492157f, 0.107484027743340f, 0.309727638959885f, + 0.107721701264381f, 0.310028612613678f, 0.107959605753422f, 0.310329377651215f, + 0.108197741210461f, 0.310629993677139f, 0.108436107635498f, 0.310930401086807f, + 0.108674705028534f, 0.311230629682541f, 0.108913525938988f, 0.311530679464340f, + 0.109152585268021f, 0.311830550432205f, 0.109391868114471f, 0.312130242586136f, + 0.109631389379501f, 0.312429755926132f, 0.109871134161949f, 0.312729060649872f, + 0.110111102461815f, 0.313028186559677f, 0.110351309180260f, 0.313327133655548f, + 0.110591746866703f, 0.313625901937485f, 0.110832408070564f, 0.313924491405487f, + 0.111073300242424f, 0.314222872257233f, 0.111314415931702f, 0.314521104097366f, + 0.111555770039558f, 0.314819127321243f, 0.111797347664833f, 0.315116971731186f, + 0.112039148807526f, 0.315414607524872f, 0.112281180918217f, 0.315712094306946f, + 0.112523443996906f, 0.316009372472763f, 0.112765938043594f, 0.316306471824646f, + 0.113008655607700f, 0.316603392362595f, 0.113251596689224f, 0.316900104284287f, + 0.113494776189327f, 0.317196637392044f, 0.113738171756268f, 0.317492991685867f, + 0.113981798291206f, 0.317789167165756f, 0.114225655794144f, 0.318085134029388f, + 0.114469736814499f, 0.318380922079086f, 0.114714048802853f, 0.318676531314850f, + 0.114958584308624f, 0.318971961736679f, 0.115203343331814f, 0.319267183542252f, + 0.115448333323002f, 0.319562226533890f, 0.115693546831608f, 0.319857090711594f, + 0.115938983857632f, 0.320151746273041f, 0.116184651851654f, 0.320446223020554f, + 0.116430543363094f, 0.320740520954132f, 0.116676658391953f, 0.321034610271454f, + 0.116923004388809f, 0.321328520774841f, 0.117169573903084f, 0.321622252464294f, + 0.117416366934776f, 0.321915775537491f, 0.117663383483887f, 0.322209119796753f, + 0.117910631000996f, 0.322502255439758f, 0.118158094584942f, 0.322795242071152f, + 0.118405789136887f, 0.323088020086288f, 0.118653707206249f, 0.323380589485168f, + 0.118901848793030f, 0.323672980070114f, 0.119150213897228f, 0.323965191841125f, + 0.119398809969425f, 0.324257194995880f, 0.119647622108459f, 0.324549019336700f, + 0.119896657764912f, 0.324840664863586f, 0.120145916938782f, 0.325132101774216f, + 0.120395407080650f, 0.325423330068588f, 0.120645113289356f, 0.325714409351349f, + 0.120895043015480f, 0.326005280017853f, 0.121145196259022f, 0.326295942068100f, + 0.121395580470562f, 0.326586425304413f, 0.121646173298359f, 0.326876699924469f, + 0.121896997094154f, 0.327166795730591f, 0.122148044407368f, 0.327456712722778f, + 0.122399315237999f, 0.327746421098709f, 0.122650802135468f, 0.328035950660706f, + 0.122902512550354f, 0.328325271606445f, 0.123154446482658f, 0.328614413738251f, + 0.123406603932381f, 0.328903347253799f, 0.123658977448940f, 0.329192101955414f, + 0.123911574482918f, 0.329480648040771f, 0.124164395034313f, 0.329769015312195f, + 0.124417431652546f, 0.330057173967361f, 0.124670691788197f, 0.330345153808594f, + 0.124924175441265f, 0.330632925033569f, 0.125177875161171f, 0.330920487642288f, + 0.125431805849075f, 0.331207901239395f, 0.125685945153236f, 0.331495076417923f, + 0.125940307974815f, 0.331782072782516f, 0.126194894313812f, 0.332068890333176f, + 0.126449704170227f, 0.332355499267578f, 0.126704722642899f, 0.332641899585724f, + 0.126959964632988f, 0.332928121089935f, 0.127215430140495f, 0.333214133977890f, + 0.127471104264259f, 0.333499968051910f, 0.127727001905441f, 0.333785593509674f, + 0.127983123064041f, 0.334071010351181f, 0.128239467740059f, 0.334356248378754f, + 0.128496021032333f, 0.334641307592392f, 0.128752797842026f, 0.334926128387451f, + 0.129009798169136f, 0.335210770368576f, 0.129267007112503f, 0.335495233535767f, + 0.129524439573288f, 0.335779488086700f, 0.129782080650330f, 0.336063534021378f, + 0.130039945244789f, 0.336347371339798f, 0.130298033356667f, 0.336631029844284f, + 0.130556344985962f, 0.336914509534836f, 0.130814850330353f, 0.337197750806808f, + 0.131073594093323f, 0.337480813264847f, 0.131332546472549f, 0.337763696908951f, + 0.131591722369194f, 0.338046342134476f, 0.131851106882095f, 0.338328808546066f, + 0.132110700011253f, 0.338611096143723f, 0.132370531558990f, 0.338893145322800f, + 0.132630556821823f, 0.339175015687943f, 0.132890805602074f, 0.339456677436829f, + 0.133151277899742f, 0.339738160371780f, 0.133411958813667f, 0.340019434690475f, + 0.133672863245010f, 0.340300500392914f, 0.133933976292610f, 0.340581357479095f, + 0.134195312857628f, 0.340862035751343f, 0.134456858038902f, 0.341142505407333f, + 0.134718611836433f, 0.341422766447067f, 0.134980589151382f, 0.341702848672867f, + 0.135242775082588f, 0.341982692480087f, 0.135505184531212f, 0.342262357473373f, + 0.135767802596092f, 0.342541843652725f, 0.136030644178391f, 0.342821091413498f, + 0.136293679475784f, 0.343100160360336f, 0.136556953191757f, 0.343379020690918f, + 0.136820420622826f, 0.343657672405243f, 0.137084111571312f, 0.343936115503311f, + 0.137348011136055f, 0.344214379787445f, 0.137612134218216f, 0.344492435455322f, + 0.137876465916634f, 0.344770282506943f, 0.138141006231308f, 0.345047920942307f, + 0.138405755162239f, 0.345325350761414f, 0.138670727610588f, 0.345602601766586f, + 0.138935908675194f, 0.345879614353180f, 0.139201298356056f, 0.346156448125839f, + 0.139466896653175f, 0.346433073282242f, 0.139732718467712f, 0.346709519624710f, + 0.139998748898506f, 0.346985727548599f, 0.140264987945557f, 0.347261756658554f, + 0.140531435608864f, 0.347537547349930f, 0.140798106789589f, 0.347813159227371f, + 0.141064971685410f, 0.348088562488556f, 0.141332060098648f, 0.348363757133484f, + 0.141599357128143f, 0.348638743162155f, 0.141866862773895f, 0.348913550376892f, + 0.142134591937065f, 0.349188119173050f, 0.142402514815331f, 0.349462509155273f, + 0.142670661211014f, 0.349736660718918f, 0.142939001321793f, 0.350010633468628f, + 0.143207564949989f, 0.350284397602081f, 0.143476337194443f, 0.350557953119278f, + 0.143745318055153f, 0.350831300020218f, 0.144014507532120f, 0.351104438304901f, + 0.144283905625343f, 0.351377367973328f, 0.144553512334824f, 0.351650089025497f, + 0.144823327660561f, 0.351922631263733f, 0.145093351602554f, 0.352194935083389f, + 0.145363584160805f, 0.352467030286789f, 0.145634025335312f, 0.352738946676254f, + 0.145904675126076f, 0.353010624647141f, 0.146175548434258f, 0.353282123804092f, + 0.146446615457535f, 0.353553384542465f, 0.146717891097069f, 0.353824466466904f, + 0.146989375352860f, 0.354095309972763f, 0.147261068224907f, 0.354365974664688f, + 0.147532954812050f, 0.354636400938034f, 0.147805064916611f, 0.354906648397446f, + 0.148077383637428f, 0.355176687240601f, 0.148349896073341f, 0.355446487665176f, + 0.148622632026672f, 0.355716109275818f, 0.148895561695099f, 0.355985492467880f, + 0.149168699979782f, 0.356254696846008f, 0.149442046880722f, 0.356523662805557f, + 0.149715602397919f, 0.356792420148849f, 0.149989366531372f, 0.357060998678207f, + 0.150263324379921f, 0.357329338788986f, 0.150537505745888f, 0.357597470283508f, + 0.150811880826950f, 0.357865422964096f, 0.151086464524269f, 0.358133137226105f, + 0.151361241936684f, 0.358400642871857f, 0.151636242866516f, 0.358667939901352f, + 0.151911437511444f, 0.358935028314590f, 0.152186840772629f, 0.359201908111572f, + 0.152462437748909f, 0.359468549489975f, 0.152738258242607f, 0.359735012054443f, + 0.153014272451401f, 0.360001266002655f, 0.153290495276451f, 0.360267281532288f, + 0.153566911816597f, 0.360533088445663f, 0.153843536973000f, 0.360798716545105f, + 0.154120370745659f, 0.361064106225967f, 0.154397398233414f, 0.361329287290573f, + 0.154674649238586f, 0.361594229936600f, 0.154952079057693f, 0.361858993768692f, + 0.155229732394218f, 0.362123548984528f, 0.155507579445839f, 0.362387865781784f, + 0.155785620212555f, 0.362651973962784f, 0.156063869595528f, 0.362915903329849f, + 0.156342327594757f, 0.363179564476013f, 0.156620979309082f, 0.363443046808243f, + 0.156899839639664f, 0.363706320524216f, 0.157178908586502f, 0.363969355821610f, + 0.157458171248436f, 0.364232182502747f, 0.157737627625465f, 0.364494800567627f, + 0.158017292618752f, 0.364757210016251f, 0.158297166228294f, 0.365019410848618f, + 0.158577233552933f, 0.365281373262405f, 0.158857494592667f, 0.365543156862259f, + 0.159137964248657f, 0.365804702043533f, 0.159418627619743f, 0.366066008806229f, + 0.159699499607086f, 0.366327136754990f, 0.159980565309525f, 0.366588026285172f, + 0.160261839628220f, 0.366848707199097f, 0.160543307662010f, 0.367109179496765f, + 0.160824984312058f, 0.367369443178177f, 0.161106839776039f, 0.367629468441010f, + 0.161388918757439f, 0.367889285087585f, 0.161671176552773f, 0.368148893117905f, + 0.161953642964363f, 0.368408292531967f, 0.162236317992210f, 0.368667453527451f, + 0.162519171833992f, 0.368926405906677f, 0.162802234292030f, 0.369185149669647f, + 0.163085505366325f, 0.369443655014038f, 0.163368955254555f, 0.369701951742172f, + 0.163652613759041f, 0.369960039854050f, 0.163936465978622f, 0.370217919349670f, + 0.164220526814461f, 0.370475560426712f, 0.164504766464233f, 0.370732992887497f, + 0.164789214730263f, 0.370990216732025f, 0.165073871612549f, 0.371247202157974f, + 0.165358707308769f, 0.371503978967667f, 0.165643751621246f, 0.371760547161102f, + 0.165928974747658f, 0.372016876935959f, 0.166214406490326f, 0.372272998094559f, + 0.166500031948090f, 0.372528880834579f, 0.166785866022110f, 0.372784584760666f, + 0.167071878910065f, 0.373040050268173f, 0.167358100414276f, 0.373295277357101f, + 0.167644515633583f, 0.373550295829773f, 0.167931124567986f, 0.373805105686188f, + 0.168217927217484f, 0.374059677124023f, 0.168504923582077f, 0.374314039945602f, + 0.168792113661766f, 0.374568194150925f, 0.169079497456551f, 0.374822109937668f, + 0.169367074966431f, 0.375075817108154f, 0.169654861092567f, 0.375329315662384f, + 0.169942826032639f, 0.375582575798035f, 0.170230999588966f, 0.375835597515106f, + 0.170519351959229f, 0.376088410615921f, 0.170807912945747f, 0.376341015100479f, + 0.171096652746201f, 0.376593410968781f, 0.171385586261749f, 0.376845568418503f, + 0.171674728393555f, 0.377097487449646f, 0.171964049339294f, 0.377349197864532f, + 0.172253578901291f, 0.377600699663162f, 0.172543287277222f, 0.377851963043213f, + 0.172833189368248f, 0.378102988004684f, 0.173123285174370f, 0.378353834152222f, + 0.173413574695587f, 0.378604412078857f, 0.173704057931900f, 0.378854811191559f, + 0.173994734883308f, 0.379104942083359f, 0.174285605549812f, 0.379354894161224f, + 0.174576655030251f, 0.379604607820511f, 0.174867913126946f, 0.379854083061218f, + 0.175159350037575f, 0.380103349685669f, 0.175450980663300f, 0.380352377891541f, + 0.175742805004120f, 0.380601197481155f, 0.176034808158875f, 0.380849778652191f, + 0.176327019929886f, 0.381098151206970f, 0.176619410514832f, 0.381346285343170f, + 0.176911994814873f, 0.381594210863113f, 0.177204772830009f, 0.381841897964478f, + 0.177497729659081f, 0.382089376449585f, 0.177790880203247f, 0.382336616516113f, + 0.178084224462509f, 0.382583618164063f, 0.178377762436867f, 0.382830440998077f, + 0.178671479225159f, 0.383076995611191f, 0.178965389728546f, 0.383323341608047f, + 0.179259493947029f, 0.383569449186325f, 0.179553776979446f, 0.383815348148346f, + 0.179848253726959f, 0.384061008691788f, 0.180142924189568f, 0.384306460618973f, + 0.180437773466110f, 0.384551674127579f, 0.180732816457748f, 0.384796649217606f, + 0.181028053164482f, 0.385041415691376f, 0.181323468685150f, 0.385285943746567f, + 0.181619063019753f, 0.385530263185501f, 0.181914865970612f, 0.385774344205856f, + 0.182210832834244f, 0.386018186807632f, 0.182507008314133f, 0.386261820793152f, + 0.182803362607956f, 0.386505216360092f, 0.183099895715714f, 0.386748403310776f, + 0.183396622538567f, 0.386991351842880f, 0.183693528175354f, 0.387234061956406f, + 0.183990627527237f, 0.387476563453674f, 0.184287920594215f, 0.387718826532364f, + 0.184585392475128f, 0.387960851192474f, 0.184883043169975f, 0.388202667236328f, + 0.185180887579918f, 0.388444244861603f, 0.185478910803795f, 0.388685584068298f, + 0.185777112841606f, 0.388926714658737f, 0.186075508594513f, 0.389167606830597f, + 0.186374098062515f, 0.389408260583878f, 0.186672851443291f, 0.389648675918579f, + 0.186971798539162f, 0.389888882637024f, 0.187270939350128f, 0.390128880739212f, + 0.187570258975029f, 0.390368610620499f, 0.187869757413864f, 0.390608131885529f, + 0.188169434666634f, 0.390847414731979f, 0.188469305634499f, 0.391086459159851f, + 0.188769355416298f, 0.391325294971466f, 0.189069598913193f, 0.391563892364502f, + 0.189370006322861f, 0.391802251338959f, 0.189670607447624f, 0.392040401697159f, + 0.189971387386322f, 0.392278283834457f, 0.190272361040115f, 0.392515957355499f, + 0.190573498606682f, 0.392753422260284f, 0.190874829888344f, 0.392990618944168f, + 0.191176339983940f, 0.393227607011795f, 0.191478043794632f, 0.393464356660843f, + 0.191779911518097f, 0.393700867891312f, 0.192081972956657f, 0.393937170505524f, + 0.192384198307991f, 0.394173204898834f, 0.192686617374420f, 0.394409030675888f, + 0.192989215254784f, 0.394644618034363f, 0.193292006850243f, 0.394879996776581f, + 0.193594962358475f, 0.395115107297897f, 0.193898096680641f, 0.395350009202957f, + 0.194201424717903f, 0.395584672689438f, 0.194504916667938f, 0.395819097757339f, + 0.194808602333069f, 0.396053284406662f, 0.195112451910973f, 0.396287262439728f, + 0.195416495203972f, 0.396520972251892f, 0.195720717310905f, 0.396754473447800f, + 0.196025103330612f, 0.396987736225128f, 0.196329683065414f, 0.397220760583878f, + 0.196634441614151f, 0.397453576326370f, 0.196939364075661f, 0.397686123847961f, + 0.197244480252266f, 0.397918462753296f, 0.197549775242805f, 0.398150533437729f, + 0.197855234146118f, 0.398382395505905f, 0.198160871863365f, 0.398614019155502f, + 0.198466703295708f, 0.398845434188843f, 0.198772698640823f, 0.399076581001282f, + 0.199078872799873f, 0.399307489395142f, 0.199385225772858f, 0.399538189172745f, + 0.199691757559776f, 0.399768620729446f, 0.199998468160629f, 0.399998843669891f, + 0.200305357575417f, 0.400228828191757f, 0.200612410902977f, 0.400458574295044f, + 0.200919643044472f, 0.400688081979752f, 0.201227053999901f, 0.400917351245880f, + 0.201534643769264f, 0.401146411895752f, 0.201842412352562f, 0.401375204324722f, + 0.202150344848633f, 0.401603758335114f, 0.202458456158638f, 0.401832103729248f, + 0.202766746282578f, 0.402060180902481f, 0.203075215220451f, 0.402288049459457f, + 0.203383848071098f, 0.402515679597855f, 0.203692659735680f, 0.402743041515350f, + 0.204001650214195f, 0.402970194816589f, 0.204310819506645f, 0.403197109699249f, + 0.204620152711868f, 0.403423786163330f, 0.204929664731026f, 0.403650224208832f, + 0.205239340662956f, 0.403876423835754f, 0.205549195408821f, 0.404102355241776f, + 0.205859228968620f, 0.404328078031540f, 0.206169426441193f, 0.404553562402725f, + 0.206479802727699f, 0.404778808355331f, 0.206790357828140f, 0.405003815889359f, + 0.207101076841354f, 0.405228585004807f, 0.207411959767342f, 0.405453115701675f, + 0.207723021507263f, 0.405677437782288f, 0.208034262061119f, 0.405901491641998f, + 0.208345666527748f, 0.406125307083130f, 0.208657249808311f, 0.406348884105682f, + 0.208969011902809f, 0.406572192907333f, 0.209280923008919f, 0.406795293092728f, + 0.209593027830124f, 0.407018154859543f, 0.209905281662941f, 0.407240778207779f, + 0.210217714309692f, 0.407463163137436f, 0.210530325770378f, 0.407685309648514f, + 0.210843101143837f, 0.407907217741013f, 0.211156040430069f, 0.408128857612610f, + 0.211469158530235f, 0.408350288867950f, 0.211782455444336f, 0.408571451902390f, + 0.212095901370049f, 0.408792406320572f, 0.212409526109695f, 0.409013092517853f, + 0.212723329663277f, 0.409233570098877f, 0.213037282228470f, 0.409453779459000f, + 0.213351413607597f, 0.409673750400543f, 0.213665723800659f, 0.409893482923508f, + 0.213980183005333f, 0.410112977027893f, 0.214294821023941f, 0.410332232713699f, + 0.214609622955322f, 0.410551249980927f, 0.214924603700638f, 0.410770028829575f, + 0.215239733457565f, 0.410988569259644f, 0.215555042028427f, 0.411206841468811f, + 0.215870529413223f, 0.411424905061722f, 0.216186165809631f, 0.411642700433731f, + 0.216501981019974f, 0.411860257387161f, 0.216817945241928f, 0.412077575922012f, + 0.217134088277817f, 0.412294656038284f, 0.217450410127640f, 0.412511497735977f, + 0.217766880989075f, 0.412728071212769f, 0.218083515763283f, 0.412944436073303f, + 0.218400329351425f, 0.413160532712936f, 0.218717306852341f, 0.413376390933990f, + 0.219034433364868f, 0.413592010736465f, 0.219351738691330f, 0.413807392120361f, + 0.219669207930565f, 0.414022535085678f, 0.219986841082573f, 0.414237409830093f, + 0.220304638147354f, 0.414452046155930f, 0.220622614026070f, 0.414666473865509f, + 0.220940738916397f, 0.414880603551865f, 0.221259027719498f, 0.415094524621964f, + 0.221577480435371f, 0.415308207273483f, 0.221896097064018f, 0.415521621704102f, + 0.222214877605438f, 0.415734797716141f, 0.222533836960793f, 0.415947735309601f, + 0.222852945327759f, 0.416160434484482f, 0.223172217607498f, 0.416372895240784f, + 0.223491653800011f, 0.416585087776184f, 0.223811239004135f, 0.416797041893005f, + 0.224131003022194f, 0.417008757591248f, 0.224450930953026f, 0.417220205068588f, + 0.224771007895470f, 0.417431443929672f, 0.225091263651848f, 0.417642414569855f, + 0.225411668419838f, 0.417853146791458f, 0.225732237100601f, 0.418063640594482f, + 0.226052969694138f, 0.418273866176605f, 0.226373866200447f, 0.418483853340149f, + 0.226694911718369f, 0.418693602085114f, 0.227016136050224f, 0.418903112411499f, + 0.227337509393692f, 0.419112354516983f, 0.227659046649933f, 0.419321358203888f, + 0.227980732917786f, 0.419530123472214f, 0.228302597999573f, 0.419738620519638f, + 0.228624612092972f, 0.419946908950806f, 0.228946775197983f, 0.420154929161072f, + 0.229269117116928f, 0.420362681150436f, 0.229591608047485f, 0.420570224523544f, + 0.229914262890816f, 0.420777499675751f, 0.230237081646919f, 0.420984506607056f, + 0.230560049414635f, 0.421191304922104f, 0.230883181095123f, 0.421397835016251f, + 0.231206461787224f, 0.421604126691818f, 0.231529906392097f, 0.421810150146484f, + 0.231853514909744f, 0.422015935182571f, 0.232177272439003f, 0.422221481800079f, + 0.232501193881035f, 0.422426789999008f, 0.232825264334679f, 0.422631829977036f, + 0.233149498701096f, 0.422836631536484f, 0.233473882079124f, 0.423041164875031f, + 0.233798429369926f, 0.423245459794998f, 0.234123140573502f, 0.423449516296387f, + 0.234448000788689f, 0.423653304576874f, 0.234773010015488f, 0.423856884241104f, + 0.235098183155060f, 0.424060165882111f, 0.235423520207405f, 0.424263238906860f, + 0.235749006271362f, 0.424466013908386f, 0.236074641346931f, 0.424668580293655f, + 0.236400425434113f, 0.424870878458023f, 0.236726388335228f, 0.425072938203812f, + 0.237052485346794f, 0.425274729728699f, 0.237378746271133f, 0.425476282835007f, + 0.237705156207085f, 0.425677597522736f, 0.238031730055809f, 0.425878643989563f, + 0.238358452916145f, 0.426079452037811f, 0.238685324788094f, 0.426279991865158f, + 0.239012360572815f, 0.426480293273926f, 0.239339530467987f, 0.426680356264114f, + 0.239666879177094f, 0.426880151033401f, 0.239994361996651f, 0.427079707384110f, + 0.240322008728981f, 0.427278995513916f, 0.240649804472923f, 0.427478045225143f, + 0.240977749228477f, 0.427676826715469f, 0.241305842995644f, 0.427875369787216f, + 0.241634100675583f, 0.428073674440384f, 0.241962507367134f, 0.428271710872650f, + 0.242291063070297f, 0.428469479084015f, 0.242619767785072f, 0.428667008876801f, + 0.242948621511459f, 0.428864300251007f, 0.243277639150620f, 0.429061323404312f, + 0.243606805801392f, 0.429258108139038f, 0.243936106562614f, 0.429454624652863f, + 0.244265571236610f, 0.429650902748108f, 0.244595184922218f, 0.429846942424774f, + 0.244924947619438f, 0.430042684078217f, 0.245254859328270f, 0.430238217115402f, + 0.245584934949875f, 0.430433481931686f, 0.245915144681931f, 0.430628478527069f, + 0.246245503425598f, 0.430823236703873f, 0.246576011180878f, 0.431017726659775f, + 0.246906682848930f, 0.431211978197098f, 0.247237488627434f, 0.431405961513519f, + 0.247568443417549f, 0.431599706411362f, 0.247899547219276f, 0.431793183088303f, + 0.248230814933777f, 0.431986421346664f, 0.248562216758728f, 0.432179391384125f, + 0.248893767595291f, 0.432372123003006f, 0.249225467443466f, 0.432564586400986f, + 0.249557301402092f, 0.432756811380386f, 0.249889299273491f, 0.432948768138886f, + 0.250221431255341f, 0.433140486478806f, 0.250553727149963f, 0.433331936597824f, + 0.250886172056198f, 0.433523118495941f, 0.251218736171722f, 0.433714061975479f, + 0.251551479101181f, 0.433904737234116f, 0.251884341239929f, 0.434095174074173f, + 0.252217382192612f, 0.434285342693329f, 0.252550542354584f, 0.434475272893906f, + 0.252883851528168f, 0.434664934873581f, 0.253217309713364f, 0.434854328632355f, + 0.253550916910172f, 0.435043483972549f, 0.253884643316269f, 0.435232400894165f, + 0.254218548536301f, 0.435421019792557f, 0.254552572965622f, 0.435609430074692f, + 0.254886746406555f, 0.435797542333603f, 0.255221068859100f, 0.435985416173935f, + 0.255555540323257f, 0.436173021793365f, 0.255890160799026f, 0.436360388994217f, + 0.256224930286407f, 0.436547487974167f, 0.256559818983078f, 0.436734348535538f, + 0.256894856691360f, 0.436920911073685f, 0.257230043411255f, 0.437107264995575f, + 0.257565379142761f, 0.437293320894241f, 0.257900834083557f, 0.437479138374329f, + 0.258236467838287f, 0.437664687633514f, 0.258572220802307f, 0.437849998474121f, + 0.258908122777939f, 0.438035041093826f, 0.259244143962860f, 0.438219845294952f, + 0.259580343961716f, 0.438404351472855f, 0.259916663169861f, 0.438588619232178f, + 0.260253131389618f, 0.438772648572922f, 0.260589718818665f, 0.438956409692764f, + 0.260926485061646f, 0.439139902591705f, 0.261263370513916f, 0.439323127269745f, + 0.261600375175476f, 0.439506113529205f, 0.261937558650970f, 0.439688831567764f, + 0.262274861335754f, 0.439871311187744f, 0.262612313032150f, 0.440053492784500f, + 0.262949883937836f, 0.440235435962677f, 0.263287603855133f, 0.440417140722275f, + 0.263625472784042f, 0.440598547458649f, 0.263963490724564f, 0.440779715776443f, + 0.264301627874374f, 0.440960645675659f, 0.264639914035797f, 0.441141277551651f, + 0.264978319406509f, 0.441321671009064f, 0.265316903591156f, 0.441501796245575f, + 0.265655577182770f, 0.441681683063507f, 0.265994429588318f, 0.441861271858215f, + 0.266333401203156f, 0.442040622234344f, 0.266672492027283f, 0.442219734191895f, + 0.267011761665344f, 0.442398548126221f, 0.267351150512695f, 0.442577123641968f, + 0.267690658569336f, 0.442755430936813f, 0.268030315637589f, 0.442933470010757f, + 0.268370121717453f, 0.443111270666122f, 0.268710047006607f, 0.443288803100586f, + 0.269050091505051f, 0.443466067314148f, 0.269390314817429f, 0.443643063306808f, + 0.269730657339096f, 0.443819820880890f, 0.270071119070053f, 0.443996280431747f, + 0.270411729812622f, 0.444172531366348f, 0.270752459764481f, 0.444348484277725f, + 0.271093338727951f, 0.444524168968201f, 0.271434366703033f, 0.444699615240097f, + 0.271775513887405f, 0.444874793291092f, 0.272116780281067f, 0.445049703121185f, + 0.272458195686340f, 0.445224374532700f, 0.272799760103226f, 0.445398747920990f, + 0.273141443729401f, 0.445572882890701f, 0.273483246564865f, 0.445746749639511f, + 0.273825198411942f, 0.445920348167419f, 0.274167299270630f, 0.446093708276749f, + 0.274509519338608f, 0.446266770362854f, 0.274851858615875f, 0.446439594030380f, + 0.275194346904755f, 0.446612149477005f, 0.275536954402924f, 0.446784436702728f, + 0.275879681110382f, 0.446956485509872f, 0.276222556829453f, 0.447128236293793f, + 0.276565581560135f, 0.447299748659134f, 0.276908725500107f, 0.447470992803574f, + 0.277251988649368f, 0.447641968727112f, 0.277595400810242f, 0.447812676429749f, + 0.277938932180405f, 0.447983115911484f, 0.278282582759857f, 0.448153316974640f, + 0.278626382350922f, 0.448323249816895f, 0.278970301151276f, 0.448492884635925f, + 0.279314368963242f, 0.448662281036377f, 0.279658555984497f, 0.448831409215927f, + 0.280002862215042f, 0.449000298976898f, 0.280347317457199f, 0.449168890714645f, + 0.280691891908646f, 0.449337244033813f, 0.281036585569382f, 0.449505299329758f, + 0.281381398439407f, 0.449673116207123f, 0.281726360321045f, 0.449840664863586f, + 0.282071471214294f, 0.450007945299149f, 0.282416671514511f, 0.450174957513809f, + 0.282762020826340f, 0.450341701507568f, 0.283107489347458f, 0.450508207082748f, + 0.283453077077866f, 0.450674414634705f, 0.283798813819885f, 0.450840383768082f, + 0.284144669771194f, 0.451006084680557f, 0.284490644931793f, 0.451171487569809f, + 0.284836769104004f, 0.451336652040482f, 0.285182982683182f, 0.451501548290253f, + 0.285529345273972f, 0.451666176319122f, 0.285875827074051f, 0.451830536127090f, + 0.286222457885742f, 0.451994657516479f, 0.286569178104401f, 0.452158480882645f, + 0.286916047334671f, 0.452322036027908f, 0.287263035774231f, 0.452485352754593f, + 0.287610173225403f, 0.452648371458054f, 0.287957400083542f, 0.452811151742935f, + 0.288304775953293f, 0.452973634004593f, 0.288652241230011f, 0.453135877847672f, + 0.288999855518341f, 0.453297853469849f, 0.289347589015961f, 0.453459560871124f, + 0.289695471525192f, 0.453621000051498f, 0.290043443441391f, 0.453782171010971f, + 0.290391564369202f, 0.453943043947220f, 0.290739774703979f, 0.454103678464890f, + 0.291088134050369f, 0.454264044761658f, 0.291436612606049f, 0.454424172639847f, + 0.291785210371017f, 0.454584002494812f, 0.292133957147598f, 0.454743564128876f, + 0.292482793331146f, 0.454902857542038f, 0.292831748723984f, 0.455061882734299f, + 0.293180853128433f, 0.455220639705658f, 0.293530046939850f, 0.455379128456116f, + 0.293879389762878f, 0.455537378787994f, 0.294228851795197f, 0.455695331096649f, + 0.294578403234482f, 0.455853015184402f, 0.294928103685379f, 0.456010431051254f, + 0.295277923345566f, 0.456167578697205f, 0.295627862215042f, 0.456324487924576f, + 0.295977920293808f, 0.456481099128723f, 0.296328097581863f, 0.456637442111969f, + 0.296678394079208f, 0.456793516874313f, 0.297028809785843f, 0.456949323415756f, + 0.297379344701767f, 0.457104891538620f, 0.297729998826981f, 0.457260161638260f, + 0.298080772161484f, 0.457415163516998f, 0.298431664705276f, 0.457569897174835f, + 0.298782676458359f, 0.457724362611771f, 0.299133807420731f, 0.457878559827805f, + 0.299485057592392f, 0.458032488822937f, 0.299836426973343f, 0.458186149597168f, + 0.300187885761261f, 0.458339542150497f, 0.300539493560791f, 0.458492636680603f, + 0.300891220569611f, 0.458645492792130f, 0.301243066787720f, 0.458798080682755f, + 0.301595002412796f, 0.458950400352478f, 0.301947087049484f, 0.459102421998978f, + 0.302299261093140f, 0.459254205226898f, 0.302651554346085f, 0.459405690431595f, + 0.303003966808319f, 0.459556937217712f, 0.303356528282166f, 0.459707885980606f, + 0.303709149360657f, 0.459858566522598f, 0.304061919450760f, 0.460008978843689f, + 0.304414808750153f, 0.460159152746201f, 0.304767817258835f, 0.460309028625488f, + 0.305120915174484f, 0.460458606481552f, 0.305474132299423f, 0.460607945919037f, + 0.305827468633652f, 0.460757017135620f, 0.306180924177170f, 0.460905820131302f, + 0.306534498929977f, 0.461054325103760f, 0.306888192892075f, 0.461202591657639f, + 0.307241976261139f, 0.461350560188293f, 0.307595878839493f, 0.461498260498047f, + 0.307949900627136f, 0.461645722389221f, 0.308304041624069f, 0.461792886257172f, + 0.308658272027969f, 0.461939752101898f, 0.309012651443481f, 0.462086379528046f, + 0.309367120265961f, 0.462232738733292f, 0.309721708297729f, 0.462378799915314f, + 0.310076385736465f, 0.462524622678757f, 0.310431212186813f, 0.462670147418976f, + 0.310786128044128f, 0.462815403938293f, 0.311141163110733f, 0.462960392236710f, + 0.311496287584305f, 0.463105112314224f, 0.311851561069489f, 0.463249564170837f, + 0.312206923961639f, 0.463393747806549f, 0.312562376260757f, 0.463537633419037f, + 0.312917977571487f, 0.463681250810623f, 0.313273668289185f, 0.463824629783630f, + 0.313629478216171f, 0.463967710733414f, 0.313985377550125f, 0.464110493659973f, + 0.314341396093369f, 0.464253038167953f, 0.314697533845901f, 0.464395314455032f, + 0.315053790807724f, 0.464537292718887f, 0.315410137176514f, 0.464679002761841f, + 0.315766572952271f, 0.464820444583893f, 0.316123157739639f, 0.464961618185043f, + 0.316479831933975f, 0.465102523565292f, 0.316836595535278f, 0.465243130922318f, + 0.317193508148193f, 0.465383470058441f, 0.317550510168076f, 0.465523540973663f, + 0.317907601594925f, 0.465663343667984f, 0.318264812231064f, 0.465802878141403f, + 0.318622142076492f, 0.465942144393921f, 0.318979561328888f, 0.466081112623215f, + 0.319337099790573f, 0.466219812631607f, 0.319694727659225f, 0.466358244419098f, + 0.320052474737167f, 0.466496407985687f, 0.320410341024399f, 0.466634273529053f, + 0.320768296718597f, 0.466771900653839f, 0.321126341819763f, 0.466909229755402f, + 0.321484506130219f, 0.467046260833740f, 0.321842789649963f, 0.467183053493500f, + 0.322201162576675f, 0.467319577932358f, 0.322559654712677f, 0.467455804347992f, + 0.322918236255646f, 0.467591762542725f, 0.323276937007904f, 0.467727422714233f, + 0.323635727167130f, 0.467862844467163f, 0.323994606733322f, 0.467997968196869f, + 0.324353635311127f, 0.468132823705673f, 0.324712723493576f, 0.468267410993576f, + 0.325071930885315f, 0.468401730060577f, 0.325431257486343f, 0.468535751104355f, + 0.325790673494339f, 0.468669503927231f, 0.326150178909302f, 0.468802988529205f, + 0.326509803533554f, 0.468936175107956f, 0.326869517564774f, 0.469069123268127f, + 0.327229350805283f, 0.469201773405075f, 0.327589273452759f, 0.469334155321121f, + 0.327949285507202f, 0.469466239213943f, 0.328309416770935f, 0.469598054885864f, + 0.328669637441635f, 0.469729602336884f, 0.329029977321625f, 0.469860881567001f, + 0.329390406608582f, 0.469991862773895f, 0.329750925302505f, 0.470122605562210f, + 0.330111563205719f, 0.470253020524979f, 0.330472290515900f, 0.470383197069168f, + 0.330833107233047f, 0.470513075590134f, 0.331194043159485f, 0.470642685890198f, + 0.331555068492889f, 0.470772027969360f, 0.331916213035584f, 0.470901101827621f, + 0.332277417182922f, 0.471029877662659f, 0.332638740539551f, 0.471158385276794f, + 0.333000183105469f, 0.471286594867706f, 0.333361685276031f, 0.471414536237717f, + 0.333723306655884f, 0.471542209386826f, 0.334085017442703f, 0.471669614315033f, + 0.334446847438812f, 0.471796721220016f, 0.334808766841888f, 0.471923559904099f, + 0.335170775651932f, 0.472050130367279f, 0.335532873868942f, 0.472176402807236f, + 0.335895091295242f, 0.472302407026291f, 0.336257368326187f, 0.472428143024445f, + 0.336619764566422f, 0.472553610801697f, 0.336982280015945f, 0.472678780555725f, + 0.337344855070114f, 0.472803652286530f, 0.337707549333572f, 0.472928285598755f, + 0.338070303201675f, 0.473052620887756f, 0.338433176279068f, 0.473176687955856f, + 0.338796168565750f, 0.473300457000732f, 0.339159220457077f, 0.473423957824707f, + 0.339522391557693f, 0.473547190427780f, 0.339885622262955f, 0.473670125007629f, + 0.340248972177505f, 0.473792791366577f, 0.340612411499023f, 0.473915189504623f, + 0.340975970029831f, 0.474037289619446f, 0.341339588165283f, 0.474159121513367f, + 0.341703325510025f, 0.474280685186386f, 0.342067122459412f, 0.474401950836182f, + 0.342431038618088f, 0.474522948265076f, 0.342795044183731f, 0.474643647670746f, + 0.343159139156342f, 0.474764078855515f, 0.343523323535919f, 0.474884241819382f, + 0.343887597322464f, 0.475004136562347f, 0.344251960515976f, 0.475123733282089f, + 0.344616413116455f, 0.475243031978607f, 0.344980984926224f, 0.475362062454224f, + 0.345345616340637f, 0.475480824708939f, 0.345710366964340f, 0.475599318742752f, + 0.346075177192688f, 0.475717514753342f, 0.346440106630325f, 0.475835442543030f, + 0.346805095672607f, 0.475953072309494f, 0.347170203924179f, 0.476070433855057f, + 0.347535371780396f, 0.476187497377396f, 0.347900658845901f, 0.476304292678833f, + 0.348266035318375f, 0.476420819759369f, 0.348631471395493f, 0.476537048816681f, + 0.348997026681900f, 0.476653009653091f, 0.349362671375275f, 0.476768702268600f, + 0.349728375673294f, 0.476884096860886f, 0.350094199180603f, 0.476999223232269f, + 0.350460082292557f, 0.477114051580429f, 0.350826084613800f, 0.477228611707687f, + 0.351192146539688f, 0.477342873811722f, 0.351558297872543f, 0.477456867694855f, + 0.351924568414688f, 0.477570593357086f, 0.352290898561478f, 0.477684020996094f, + 0.352657318115234f, 0.477797180414200f, 0.353023827075958f, 0.477910041809082f, + 0.353390425443649f, 0.478022634983063f, 0.353757113218308f, 0.478134930133820f, + 0.354123860597610f, 0.478246957063675f, 0.354490727186203f, 0.478358715772629f, + 0.354857653379440f, 0.478470176458359f, 0.355224698781967f, 0.478581339120865f, + 0.355591803789139f, 0.478692263364792f, 0.355958998203278f, 0.478802859783173f, + 0.356326282024384f, 0.478913217782974f, 0.356693625450134f, 0.479023247957230f, + 0.357061088085175f, 0.479133039712906f, 0.357428610324860f, 0.479242533445358f, + 0.357796221971512f, 0.479351729154587f, 0.358163923025131f, 0.479460656642914f, + 0.358531713485718f, 0.479569315910339f, 0.358899593353271f, 0.479677677154541f, + 0.359267532825470f, 0.479785770177841f, 0.359635561704636f, 0.479893565177917f, + 0.360003679990768f, 0.480001062154770f, 0.360371887683868f, 0.480108320713043f, + 0.360740154981613f, 0.480215251445770f, 0.361108511686325f, 0.480321943759918f, + 0.361476957798004f, 0.480428308248520f, 0.361845493316650f, 0.480534434318542f, + 0.362214088439941f, 0.480640232563019f, 0.362582772970200f, 0.480745792388916f, + 0.362951546907425f, 0.480851024389267f, 0.363320380449295f, 0.480956017971039f, + 0.363689333200455f, 0.481060713529587f, 0.364058345556259f, 0.481165111064911f, + 0.364427417516708f, 0.481269240379334f, 0.364796578884125f, 0.481373071670532f, + 0.365165829658508f, 0.481476634740829f, 0.365535169839859f, 0.481579899787903f, + 0.365904569625854f, 0.481682896614075f, 0.366274058818817f, 0.481785595417023f, + 0.366643607616425f, 0.481888025999069f, 0.367013275623322f, 0.481990188360214f, + 0.367382973432541f, 0.482092022895813f, 0.367752790451050f, 0.482193619012833f, + 0.368122667074203f, 0.482294887304306f, 0.368492603302002f, 0.482395917177200f, + 0.368862658739090f, 0.482496619224548f, 0.369232743978500f, 0.482597053050995f, + 0.369602948427200f, 0.482697218656540f, 0.369973212480545f, 0.482797086238861f, + 0.370343536138535f, 0.482896685600281f, 0.370713949203491f, 0.482995986938477f, + 0.371084451675415f, 0.483094990253448f, 0.371455013751984f, 0.483193725347519f, + 0.371825665235519f, 0.483292192220688f, 0.372196376323700f, 0.483390361070633f, + 0.372567176818848f, 0.483488231897354f, 0.372938036918640f, 0.483585834503174f, + 0.373308986425400f, 0.483683139085770f, 0.373679995536804f, 0.483780175447464f, + 0.374051094055176f, 0.483876913785934f, 0.374422252178192f, 0.483973383903503f, + 0.374793499708176f, 0.484069555997849f, 0.375164806842804f, 0.484165430068970f, + 0.375536203384399f, 0.484261035919189f, 0.375907659530640f, 0.484356373548508f, + 0.376279205083847f, 0.484451413154602f, 0.376650810241699f, 0.484546154737473f, + 0.377022475004196f, 0.484640628099442f, 0.377394229173660f, 0.484734803438187f, + 0.377766042947769f, 0.484828680753708f, 0.378137946128845f, 0.484922289848328f, + 0.378509908914566f, 0.485015630722046f, 0.378881961107254f, 0.485108673572540f, + 0.379254043102264f, 0.485201418399811f, 0.379626244306564f, 0.485293895006180f, + 0.379998475313187f, 0.485386073589325f, 0.380370795726776f, 0.485477954149246f, + 0.380743205547333f, 0.485569566488266f, 0.381115674972534f, 0.485660910606384f, + 0.381488204002380f, 0.485751956701279f, 0.381860792636871f, 0.485842704772949f, + 0.382233470678329f, 0.485933154821396f, 0.382606208324432f, 0.486023366451263f, + 0.382979035377502f, 0.486113250255585f, 0.383351892232895f, 0.486202865839005f, + 0.383724838495255f, 0.486292183399200f, 0.384097874164581f, 0.486381232738495f, + 0.384470939636230f, 0.486469984054565f, 0.384844094514847f, 0.486558437347412f, + 0.385217308998108f, 0.486646622419357f, 0.385590612888336f, 0.486734509468079f, + 0.385963946580887f, 0.486822128295898f, 0.386337369680405f, 0.486909449100494f, + 0.386710882186890f, 0.486996471881866f, 0.387084424495697f, 0.487083226442337f, + 0.387458056211472f, 0.487169682979584f, 0.387831717729568f, 0.487255871295929f, + 0.388205498456955f, 0.487341761589050f, 0.388579308986664f, 0.487427353858948f, + 0.388953179121017f, 0.487512677907944f, 0.389327138662338f, 0.487597703933716f, + 0.389701157808304f, 0.487682431936264f, 0.390075236558914f, 0.487766891717911f, + 0.390449374914169f, 0.487851053476334f, 0.390823602676392f, 0.487934947013855f, + 0.391197860240936f, 0.488018542528152f, 0.391572207212448f, 0.488101840019226f, + 0.391946613788605f, 0.488184869289398f, 0.392321079969406f, 0.488267600536346f, + 0.392695605754852f, 0.488350033760071f, 0.393070191144943f, 0.488432198762894f, + 0.393444836139679f, 0.488514065742493f, 0.393819570541382f, 0.488595664501190f, + 0.394194334745407f, 0.488676935434341f, 0.394569188356400f, 0.488757967948914f, + 0.394944071769714f, 0.488838672637939f, 0.395319044589996f, 0.488919109106064f, + 0.395694077014923f, 0.488999247550964f, 0.396069169044495f, 0.489079117774963f, + 0.396444320678711f, 0.489158689975739f, 0.396819531917572f, 0.489237964153290f, + 0.397194802761078f, 0.489316970109940f, 0.397570133209229f, 0.489395678043365f, + 0.397945523262024f, 0.489474087953568f, 0.398320972919464f, 0.489552229642868f, + 0.398696482181549f, 0.489630073308945f, 0.399072051048279f, 0.489707618951797f, + 0.399447679519653f, 0.489784896373749f, 0.399823367595673f, 0.489861875772476f, + 0.400199115276337f, 0.489938557147980f, 0.400574922561646f, 0.490014940500259f, + 0.400950789451599f, 0.490091055631638f, 0.401326715946198f, 0.490166902542114f, + 0.401702702045441f, 0.490242421627045f, 0.402078747749329f, 0.490317672491074f, + 0.402454853057861f, 0.490392625331879f, 0.402830988168716f, 0.490467309951782f, + 0.403207212686539f, 0.490541696548462f, 0.403583467006683f, 0.490615785121918f, + 0.403959810733795f, 0.490689605474472f, 0.404336184263229f, 0.490763127803802f, + 0.404712617397308f, 0.490836352109909f, 0.405089110136032f, 0.490909278392792f, + 0.405465662479401f, 0.490981936454773f, 0.405842274427414f, 0.491054296493530f, + 0.406218945980072f, 0.491126358509064f, 0.406595647335052f, 0.491198152303696f, + 0.406972438097000f, 0.491269648075104f, 0.407349258661270f, 0.491340845823288f, + 0.407726138830185f, 0.491411775350571f, 0.408103078603745f, 0.491482406854630f, + 0.408480048179626f, 0.491552740335464f, 0.408857107162476f, 0.491622805595398f, + 0.409234195947647f, 0.491692543029785f, 0.409611344337463f, 0.491762012243271f, + 0.409988552331924f, 0.491831213235855f, 0.410365819931030f, 0.491900116205215f, + 0.410743117332459f, 0.491968721151352f, 0.411120474338531f, 0.492037028074265f, + 0.411497890949249f, 0.492105036973953f, 0.411875367164612f, 0.492172777652740f, + 0.412252873182297f, 0.492240220308304f, 0.412630438804626f, 0.492307394742966f, + 0.413008064031601f, 0.492374241352081f, 0.413385748863220f, 0.492440819740295f, + 0.413763463497162f, 0.492507129907608f, 0.414141237735748f, 0.492573112249374f, + 0.414519041776657f, 0.492638826370239f, 0.414896935224533f, 0.492704242467880f, + 0.415274858474731f, 0.492769360542297f, 0.415652841329575f, 0.492834210395813f, + 0.416030853986740f, 0.492898762226105f, 0.416408926248550f, 0.492963016033173f, + 0.416787058115005f, 0.493026971817017f, 0.417165219783783f, 0.493090659379959f, + 0.417543441057205f, 0.493154048919678f, 0.417921721935272f, 0.493217140436172f, + 0.418300032615662f, 0.493279963731766f, 0.418678402900696f, 0.493342459201813f, + 0.419056802988052f, 0.493404686450958f, 0.419435262680054f, 0.493466645479202f, + 0.419813781976700f, 0.493528276681900f, 0.420192331075668f, 0.493589639663696f, + 0.420570939779282f, 0.493650704622269f, 0.420949578285217f, 0.493711471557617f, + 0.421328276395798f, 0.493771970272064f, 0.421707004308701f, 0.493832170963287f, + 0.422085791826248f, 0.493892073631287f, 0.422464638948441f, 0.493951678276062f, + 0.422843515872955f, 0.494011014699936f, 0.423222452402115f, 0.494070053100586f, + 0.423601418733597f, 0.494128793478012f, 0.423980414867401f, 0.494187235832214f, + 0.424359470605850f, 0.494245409965515f, 0.424738585948944f, 0.494303256273270f, + 0.425117731094360f, 0.494360834360123f, 0.425496935844421f, 0.494418144226074f, + 0.425876170396805f, 0.494475126266479f, 0.426255434751511f, 0.494531840085983f, + 0.426634758710861f, 0.494588255882263f, 0.427014142274857f, 0.494644373655319f, + 0.427393525838852f, 0.494700223207474f, 0.427772998809814f, 0.494755744934082f, + 0.428152471780777f, 0.494810998439789f, 0.428532034158707f, 0.494865983724594f, + 0.428911596536636f, 0.494920641183853f, 0.429291218519211f, 0.494975030422211f, + 0.429670870304108f, 0.495029091835022f, 0.430050581693649f, 0.495082914829254f, + 0.430430322885513f, 0.495136409997940f, 0.430810123682022f, 0.495189607143402f, + 0.431189924478531f, 0.495242536067963f, 0.431569814682007f, 0.495295166969299f, + 0.431949704885483f, 0.495347499847412f, 0.432329654693604f, 0.495399564504623f, + 0.432709634304047f, 0.495451331138611f, 0.433089673519135f, 0.495502769947052f, + 0.433469742536545f, 0.495553970336914f, 0.433849841356277f, 0.495604842901230f, + 0.434229999780655f, 0.495655417442322f, 0.434610158205032f, 0.495705723762512f, + 0.434990376234055f, 0.495755732059479f, 0.435370653867722f, 0.495805442333221f, + 0.435750931501389f, 0.495854884386063f, 0.436131268739700f, 0.495903998613358f, + 0.436511665582657f, 0.495952844619751f, 0.436892062425613f, 0.496001392602921f, + 0.437272518873215f, 0.496049642562866f, 0.437653005123138f, 0.496097624301910f, + 0.438033521175385f, 0.496145308017731f, 0.438414067029953f, 0.496192663908005f, + 0.438794672489166f, 0.496239781379700f, 0.439175277948380f, 0.496286571025848f, + 0.439555943012238f, 0.496333062648773f, 0.439936667680740f, 0.496379286050797f, + 0.440317392349243f, 0.496425211429596f, 0.440698176622391f, 0.496470838785172f, + 0.441078960895538f, 0.496516168117523f, 0.441459804773331f, 0.496561229228973f, + 0.441840678453445f, 0.496605962514877f, 0.442221581935883f, 0.496650427579880f, + 0.442602545022964f, 0.496694594621658f, 0.442983508110046f, 0.496738493442535f, + 0.443364530801773f, 0.496782064437866f, 0.443745553493500f, 0.496825367212296f, + 0.444126635789871f, 0.496868371963501f, 0.444507747888565f, 0.496911078691483f, + 0.444888889789581f, 0.496953487396240f, 0.445270061492920f, 0.496995598077774f, + 0.445651292800903f, 0.497037440538406f, 0.446032524108887f, 0.497078984975815f, + 0.446413785219193f, 0.497120231389999f, 0.446795076131821f, 0.497161179780960f, + 0.447176426649094f, 0.497201830148697f, 0.447557777166367f, 0.497242212295532f, + 0.447939187288284f, 0.497282296419144f, 0.448320597410202f, 0.497322082519531f, + 0.448702067136765f, 0.497361570596695f, 0.449083566665649f, 0.497400760650635f, + 0.449465066194534f, 0.497439652681351f, 0.449846625328064f, 0.497478276491165f, + 0.450228184461594f, 0.497516602277756f, 0.450609803199768f, 0.497554630041122f, + 0.450991421937943f, 0.497592359781265f, 0.451373100280762f, 0.497629791498184f, + 0.451754778623581f, 0.497666954994202f, 0.452136516571045f, 0.497703820466995f, + 0.452518254518509f, 0.497740387916565f, 0.452900022268295f, 0.497776657342911f, + 0.453281819820404f, 0.497812628746033f, 0.453663676977158f, 0.497848302125931f, + 0.454045534133911f, 0.497883707284927f, 0.454427421092987f, 0.497918814420700f, + 0.454809308052063f, 0.497953623533249f, 0.455191254615784f, 0.497988134622574f, + 0.455573230981827f, 0.498022347688675f, 0.455955207347870f, 0.498056292533875f, + 0.456337243318558f, 0.498089909553528f, 0.456719279289246f, 0.498123258352280f, + 0.457101345062256f, 0.498156309127808f, 0.457483440637589f, 0.498189061880112f, + 0.457865566015244f, 0.498221516609192f, 0.458247691392899f, 0.498253703117371f, + 0.458629876375198f, 0.498285561800003f, 0.459012061357498f, 0.498317152261734f, + 0.459394276142120f, 0.498348444700241f, 0.459776520729065f, 0.498379439115524f, + 0.460158795118332f, 0.498410135507584f, 0.460541069507599f, 0.498440563678741f, + 0.460923373699188f, 0.498470664024353f, 0.461305707693100f, 0.498500496149063f, + 0.461688071489334f, 0.498530030250549f, 0.462070435285568f, 0.498559266328812f, + 0.462452858686447f, 0.498588204383850f, 0.462835282087326f, 0.498616874217987f, + 0.463217705488205f, 0.498645216226578f, 0.463600188493729f, 0.498673290014267f, + 0.463982671499252f, 0.498701065778732f, 0.464365184307098f, 0.498728543519974f, + 0.464747726917267f, 0.498755723237991f, 0.465130269527435f, 0.498782604932785f, + 0.465512841939926f, 0.498809218406677f, 0.465895414352417f, 0.498835533857346f, + 0.466278046369553f, 0.498861521482468f, 0.466660678386688f, 0.498887240886688f, + 0.467043310403824f, 0.498912662267685f, 0.467426002025604f, 0.498937815427780f, + 0.467808693647385f, 0.498962640762329f, 0.468191385269165f, 0.498987197875977f, + 0.468574106693268f, 0.499011427164078f, 0.468956857919693f, 0.499035388231277f, + 0.469339638948441f, 0.499059051275253f, 0.469722419977188f, 0.499082416296005f, + 0.470105201005936f, 0.499105513095856f, 0.470488041639328f, 0.499128282070160f, + 0.470870882272720f, 0.499150782823563f, 0.471253722906113f, 0.499172955751419f, + 0.471636593341827f, 0.499194860458374f, 0.472019463777542f, 0.499216467142105f, + 0.472402364015579f, 0.499237775802612f, 0.472785294055939f, 0.499258816242218f, + 0.473168224096298f, 0.499279528856277f, 0.473551183938980f, 0.499299973249435f, + 0.473934143781662f, 0.499320119619370f, 0.474317133426666f, 0.499339967966080f, + 0.474700123071671f, 0.499359518289566f, 0.475083142518997f, 0.499378770589828f, + 0.475466161966324f, 0.499397724866867f, 0.475849211215973f, 0.499416410923004f, + 0.476232260465622f, 0.499434769153595f, 0.476615339517593f, 0.499452859163284f, + 0.476998418569565f, 0.499470651149750f, 0.477381497621536f, 0.499488145112991f, + 0.477764606475830f, 0.499505341053009f, 0.478147745132446f, 0.499522238969803f, + 0.478530883789063f, 0.499538868665695f, 0.478914022445679f, 0.499555170536041f, + 0.479297190904617f, 0.499571204185486f, 0.479680359363556f, 0.499586939811707f, + 0.480063527822495f, 0.499602377414703f, 0.480446726083755f, 0.499617516994476f, + 0.480829954147339f, 0.499632388353348f, 0.481213152408600f, 0.499646931886673f, + 0.481596380472183f, 0.499661177396774f, 0.481979638338089f, 0.499675154685974f, + 0.482362866401672f, 0.499688833951950f, 0.482746154069901f, 0.499702215194702f, + 0.483129411935806f, 0.499715298414230f, 0.483512699604034f, 0.499728083610535f, + 0.483895987272263f, 0.499740600585938f, 0.484279274940491f, 0.499752789735794f, + 0.484662592411041f, 0.499764710664749f, 0.485045909881592f, 0.499776333570480f, + 0.485429257154465f, 0.499787658452988f, 0.485812574625015f, 0.499798685312271f, + 0.486195921897888f, 0.499809414148331f, 0.486579269170761f, 0.499819844961166f, + 0.486962646245956f, 0.499830007553101f, 0.487346023321152f, 0.499839842319489f, + 0.487729400396347f, 0.499849408864975f, 0.488112777471542f, 0.499858677387238f, + 0.488496154546738f, 0.499867647886276f, 0.488879561424255f, 0.499876320362091f, + 0.489262968301773f, 0.499884694814682f, 0.489646375179291f, 0.499892801046371f, + 0.490029782056808f, 0.499900579452515f, 0.490413218736649f, 0.499908089637756f, + 0.490796625614166f, 0.499915301799774f, 0.491180062294006f, 0.499922215938568f, + 0.491563498973846f, 0.499928832054138f, 0.491946935653687f, 0.499935150146484f, + 0.492330402135849f, 0.499941170215607f, 0.492713838815689f, 0.499946922063828f, + 0.493097305297852f, 0.499952346086502f, 0.493480771780014f, 0.499957501888275f, + 0.493864238262177f, 0.499962359666824f, 0.494247704744339f, 0.499966919422150f, + 0.494631171226501f, 0.499971181154251f, 0.495014637708664f, 0.499975144863129f, + 0.495398133993149f, 0.499978810548782f, 0.495781600475311f, 0.499982208013535f, + 0.496165096759796f, 0.499985307455063f, 0.496548563241959f, 0.499988079071045f, + 0.496932059526443f, 0.499990582466125f, 0.497315555810928f, 0.499992787837982f, + 0.497699022293091f, 0.499994695186615f, 0.498082518577576f, 0.499996334314346f, + 0.498466014862061f, 0.499997645616531f, 0.498849511146545f, 0.499998688697815f, + 0.499233007431030f, 0.499999403953552f, 0.499616503715515f, 0.499999850988388f, +}; + + +/** +* \par +* Generation of realCoefB array: +* \par +* n = 4096 +*
for (i = 0; i < n; i++)
+* {
+*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));
+*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
+*  } 
+* +*/ +static const float32_t realCoefB[8192] = { + 0.500000000000000f, 0.500000000000000f, 0.500383496284485f, 0.499999850988388f, + 0.500766992568970f, 0.499999403953552f, 0.501150488853455f, 0.499998688697815f, + 0.501533985137939f, 0.499997645616531f, 0.501917481422424f, 0.499996334314346f, + 0.502300977706909f, 0.499994695186615f, 0.502684473991394f, 0.499992787837982f, + 0.503067970275879f, 0.499990582466125f, 0.503451406955719f, 0.499988079071045f, + 0.503834903240204f, 0.499985307455063f, 0.504218399524689f, 0.499982208013535f, + 0.504601895809174f, 0.499978810548782f, 0.504985332489014f, 0.499975144863129f, + 0.505368828773499f, 0.499971181154251f, 0.505752325057983f, 0.499966919422150f, + 0.506135761737823f, 0.499962359666824f, 0.506519258022308f, 0.499957501888275f, + 0.506902694702148f, 0.499952346086502f, 0.507286131381989f, 0.499946922063828f, + 0.507669627666473f, 0.499941170215607f, 0.508053064346313f, 0.499935150146484f, + 0.508436501026154f, 0.499928832054138f, 0.508819937705994f, 0.499922215938568f, + 0.509203374385834f, 0.499915301799774f, 0.509586811065674f, 0.499908089637756f, + 0.509970188140869f, 0.499900579452515f, 0.510353624820709f, 0.499892801046371f, + 0.510737061500549f, 0.499884694814682f, 0.511120438575745f, 0.499876320362091f, + 0.511503815650940f, 0.499867647886276f, 0.511887252330780f, 0.499858677387238f, + 0.512270629405975f, 0.499849408864975f, 0.512654006481171f, 0.499839842319489f, + 0.513037383556366f, 0.499830007553101f, 0.513420701026917f, 0.499819844961166f, + 0.513804078102112f, 0.499809414148331f, 0.514187395572662f, 0.499798685312271f, + 0.514570772647858f, 0.499787658452988f, 0.514954090118408f, 0.499776333570480f, + 0.515337407588959f, 0.499764710664749f, 0.515720725059509f, 0.499752789735794f, + 0.516103982925415f, 0.499740600585938f, 0.516487300395966f, 0.499728083610535f, + 0.516870558261871f, 0.499715298414230f, 0.517253875732422f, 0.499702215194702f, + 0.517637133598328f, 0.499688833951950f, 0.518020391464233f, 0.499675154685974f, + 0.518403589725494f, 0.499661177396774f, 0.518786847591400f, 0.499646931886673f, + 0.519170045852661f, 0.499632388353348f, 0.519553244113922f, 0.499617516994476f, + 0.519936442375183f, 0.499602377414703f, 0.520319640636444f, 0.499586939811707f, + 0.520702838897705f, 0.499571204185486f, 0.521085977554321f, 0.499555170536041f, + 0.521469116210938f, 0.499538868665695f, 0.521852254867554f, 0.499522238969803f, + 0.522235393524170f, 0.499505341053009f, 0.522618472576141f, 0.499488145112991f, + 0.523001611232758f, 0.499470651149750f, 0.523384690284729f, 0.499452859163284f, + 0.523767769336700f, 0.499434769153595f, 0.524150788784027f, 0.499416410923004f, + 0.524533808231354f, 0.499397724866867f, 0.524916887283325f, 0.499378770589828f, + 0.525299847126007f, 0.499359518289566f, 0.525682866573334f, 0.499339967966080f, + 0.526065826416016f, 0.499320119619370f, 0.526448845863342f, 0.499299973249435f, + 0.526831746101379f, 0.499279528856277f, 0.527214705944061f, 0.499258816242218f, + 0.527597606182098f, 0.499237775802612f, 0.527980506420136f, 0.499216467142105f, + 0.528363406658173f, 0.499194860458374f, 0.528746306896210f, 0.499172955751419f, + 0.529129147529602f, 0.499150782823563f, 0.529511988162994f, 0.499128282070160f, + 0.529894769191742f, 0.499105513095856f, 0.530277609825134f, 0.499082416296005f, + 0.530660390853882f, 0.499059051275253f, 0.531043112277985f, 0.499035388231277f, + 0.531425893306732f, 0.499011427164078f, 0.531808614730835f, 0.498987197875977f, + 0.532191336154938f, 0.498962640762329f, 0.532573997974396f, 0.498937815427780f, + 0.532956659793854f, 0.498912662267685f, 0.533339321613312f, 0.498887240886688f, + 0.533721983432770f, 0.498861521482468f, 0.534104585647583f, 0.498835533857346f, + 0.534487187862396f, 0.498809218406677f, 0.534869730472565f, 0.498782604932785f, + 0.535252273082733f, 0.498755723237991f, 0.535634815692902f, 0.498728543519974f, + 0.536017298698425f, 0.498701065778732f, 0.536399841308594f, 0.498673290014267f, + 0.536782264709473f, 0.498645216226578f, 0.537164747714996f, 0.498616874217987f, + 0.537547171115875f, 0.498588204383850f, 0.537929534912109f, 0.498559266328812f, + 0.538311958312988f, 0.498530030250549f, 0.538694262504578f, 0.498500496149063f, + 0.539076626300812f, 0.498470664024353f, 0.539458930492401f, 0.498440563678741f, + 0.539841234683990f, 0.498410135507584f, 0.540223479270935f, 0.498379439115524f, + 0.540605723857880f, 0.498348444700241f, 0.540987968444824f, 0.498317152261734f, + 0.541370153427124f, 0.498285561800003f, 0.541752278804779f, 0.498253703117371f, + 0.542134463787079f, 0.498221516609192f, 0.542516589164734f, 0.498189061880112f, + 0.542898654937744f, 0.498156309127808f, 0.543280720710754f, 0.498123258352280f, + 0.543662786483765f, 0.498089909553528f, 0.544044792652130f, 0.498056292533875f, + 0.544426798820496f, 0.498022347688675f, 0.544808745384216f, 0.497988134622574f, + 0.545190691947937f, 0.497953623533249f, 0.545572578907013f, 0.497918814420700f, + 0.545954465866089f, 0.497883707284927f, 0.546336352825165f, 0.497848302125931f, + 0.546718180179596f, 0.497812628746033f, 0.547099947929382f, 0.497776657342911f, + 0.547481775283813f, 0.497740387916565f, 0.547863483428955f, 0.497703820466995f, + 0.548245191574097f, 0.497666954994202f, 0.548626899719238f, 0.497629791498184f, + 0.549008548259735f, 0.497592359781265f, 0.549390196800232f, 0.497554630041122f, + 0.549771785736084f, 0.497516602277756f, 0.550153374671936f, 0.497478276491165f, + 0.550534904003143f, 0.497439652681351f, 0.550916433334351f, 0.497400760650635f, + 0.551297962665558f, 0.497361570596695f, 0.551679372787476f, 0.497322082519531f, + 0.552060842514038f, 0.497282296419144f, 0.552442193031311f, 0.497242212295532f, + 0.552823603153229f, 0.497201830148697f, 0.553204894065857f, 0.497161179780960f, + 0.553586184978485f, 0.497120231389999f, 0.553967475891113f, 0.497078984975815f, + 0.554348707199097f, 0.497037440538406f, 0.554729938507080f, 0.496995598077774f, + 0.555111110210419f, 0.496953487396240f, 0.555492222309113f, 0.496911078691483f, + 0.555873334407806f, 0.496868371963501f, 0.556254446506500f, 0.496825367212296f, + 0.556635499000549f, 0.496782064437866f, 0.557016491889954f, 0.496738493442535f, + 0.557397484779358f, 0.496694594621658f, 0.557778418064117f, 0.496650427579880f, + 0.558159291744232f, 0.496605962514877f, 0.558540165424347f, 0.496561229228973f, + 0.558921039104462f, 0.496516168117523f, 0.559301853179932f, 0.496470838785172f, + 0.559682607650757f, 0.496425211429596f, 0.560063362121582f, 0.496379286050797f, + 0.560444056987762f, 0.496333062648773f, 0.560824692249298f, 0.496286571025848f, + 0.561205327510834f, 0.496239781379700f, 0.561585903167725f, 0.496192663908005f, + 0.561966478824615f, 0.496145308017731f, 0.562346994876862f, 0.496097624301910f, + 0.562727510929108f, 0.496049642562866f, 0.563107967376709f, 0.496001392602921f, + 0.563488364219666f, 0.495952844619751f, 0.563868701457977f, 0.495903998613358f, + 0.564249038696289f, 0.495854884386063f, 0.564629375934601f, 0.495805442333221f, + 0.565009593963623f, 0.495755732059479f, 0.565389811992645f, 0.495705723762512f, + 0.565770030021667f, 0.495655417442322f, 0.566150128841400f, 0.495604842901230f, + 0.566530287265778f, 0.495553970336914f, 0.566910326480865f, 0.495502769947052f, + 0.567290365695953f, 0.495451331138611f, 0.567670345306396f, 0.495399564504623f, + 0.568050265312195f, 0.495347499847412f, 0.568430185317993f, 0.495295166969299f, + 0.568810045719147f, 0.495242536067963f, 0.569189906120300f, 0.495189607143402f, + 0.569569647312164f, 0.495136409997940f, 0.569949388504028f, 0.495082914829254f, + 0.570329129695892f, 0.495029091835022f, 0.570708811283112f, 0.494975030422211f, + 0.571088373661041f, 0.494920641183853f, 0.571467995643616f, 0.494865983724594f, + 0.571847498416901f, 0.494810998439789f, 0.572227001190186f, 0.494755744934082f, + 0.572606444358826f, 0.494700223207474f, 0.572985887527466f, 0.494644373655319f, + 0.573365211486816f, 0.494588255882263f, 0.573744535446167f, 0.494531840085983f, + 0.574123859405518f, 0.494475126266479f, 0.574503064155579f, 0.494418144226074f, + 0.574882268905640f, 0.494360834360123f, 0.575261414051056f, 0.494303256273270f, + 0.575640499591827f, 0.494245409965515f, 0.576019585132599f, 0.494187235832214f, + 0.576398611068726f, 0.494128793478012f, 0.576777577400208f, 0.494070053100586f, + 0.577156484127045f, 0.494011014699936f, 0.577535390853882f, 0.493951678276062f, + 0.577914178371429f, 0.493892073631287f, 0.578292965888977f, 0.493832170963287f, + 0.578671753406525f, 0.493771970272064f, 0.579050421714783f, 0.493711471557617f, + 0.579429090023041f, 0.493650704622269f, 0.579807698726654f, 0.493589639663696f, + 0.580186247825623f, 0.493528276681900f, 0.580564737319946f, 0.493466645479202f, + 0.580943167209625f, 0.493404686450958f, 0.581321597099304f, 0.493342459201813f, + 0.581699967384338f, 0.493279963731766f, 0.582078278064728f, 0.493217140436172f, + 0.582456588745117f, 0.493154048919678f, 0.582834780216217f, 0.493090659379959f, + 0.583212971687317f, 0.493026971817017f, 0.583591103553772f, 0.492963016033173f, + 0.583969175815582f, 0.492898762226105f, 0.584347188472748f, 0.492834210395813f, + 0.584725141525269f, 0.492769360542297f, 0.585103094577789f, 0.492704242467880f, + 0.585480928421021f, 0.492638826370239f, 0.585858762264252f, 0.492573112249374f, + 0.586236536502838f, 0.492507129907608f, 0.586614251136780f, 0.492440819740295f, + 0.586991965770721f, 0.492374241352081f, 0.587369561195374f, 0.492307394742966f, + 0.587747097015381f, 0.492240220308304f, 0.588124632835388f, 0.492172777652740f, + 0.588502109050751f, 0.492105036973953f, 0.588879525661469f, 0.492037028074265f, + 0.589256882667542f, 0.491968721151352f, 0.589634180068970f, 0.491900116205215f, + 0.590011477470398f, 0.491831213235855f, 0.590388655662537f, 0.491762012243271f, + 0.590765833854675f, 0.491692543029785f, 0.591142892837524f, 0.491622805595398f, + 0.591519951820374f, 0.491552740335464f, 0.591896951198578f, 0.491482406854630f, + 0.592273890972137f, 0.491411775350571f, 0.592650771141052f, 0.491340845823288f, + 0.593027591705322f, 0.491269648075104f, 0.593404352664948f, 0.491198152303696f, + 0.593781054019928f, 0.491126358509064f, 0.594157755374908f, 0.491054296493530f, + 0.594534337520599f, 0.490981936454773f, 0.594910860061646f, 0.490909278392792f, + 0.595287382602692f, 0.490836352109909f, 0.595663845539093f, 0.490763127803802f, + 0.596040189266205f, 0.490689605474472f, 0.596416532993317f, 0.490615785121918f, + 0.596792817115784f, 0.490541696548462f, 0.597168982028961f, 0.490467309951782f, + 0.597545146942139f, 0.490392625331879f, 0.597921252250671f, 0.490317672491074f, + 0.598297297954559f, 0.490242421627045f, 0.598673284053802f, 0.490166902542114f, + 0.599049210548401f, 0.490091055631638f, 0.599425077438354f, 0.490014940500259f, + 0.599800884723663f, 0.489938557147980f, 0.600176632404327f, 0.489861875772476f, + 0.600552320480347f, 0.489784896373749f, 0.600927948951721f, 0.489707618951797f, + 0.601303517818451f, 0.489630073308945f, 0.601679027080536f, 0.489552229642868f, + 0.602054476737976f, 0.489474087953568f, 0.602429866790771f, 0.489395678043365f, + 0.602805197238922f, 0.489316970109940f, 0.603180468082428f, 0.489237964153290f, + 0.603555679321289f, 0.489158689975739f, 0.603930830955505f, 0.489079117774963f, + 0.604305922985077f, 0.488999247550964f, 0.604680955410004f, 0.488919109106064f, + 0.605055928230286f, 0.488838672637939f, 0.605430841445923f, 0.488757967948914f, + 0.605805635452271f, 0.488676935434341f, 0.606180429458618f, 0.488595664501190f, + 0.606555163860321f, 0.488514065742493f, 0.606929838657379f, 0.488432198762894f, + 0.607304394245148f, 0.488350033760071f, 0.607678949832916f, 0.488267600536346f, + 0.608053386211395f, 0.488184869289398f, 0.608427822589874f, 0.488101840019226f, + 0.608802139759064f, 0.488018542528152f, 0.609176397323608f, 0.487934947013855f, + 0.609550595283508f, 0.487851053476334f, 0.609924793243408f, 0.487766891717911f, + 0.610298871994019f, 0.487682431936264f, 0.610672831535339f, 0.487597703933716f, + 0.611046791076660f, 0.487512677907944f, 0.611420691013336f, 0.487427353858948f, + 0.611794531345367f, 0.487341761589050f, 0.612168252468109f, 0.487255871295929f, + 0.612541973590851f, 0.487169682979584f, 0.612915575504303f, 0.487083226442337f, + 0.613289117813110f, 0.486996471881866f, 0.613662600517273f, 0.486909449100494f, + 0.614036023616791f, 0.486822128295898f, 0.614409387111664f, 0.486734509468079f, + 0.614782691001892f, 0.486646622419357f, 0.615155875682831f, 0.486558437347412f, + 0.615529060363770f, 0.486469984054565f, 0.615902125835419f, 0.486381232738495f, + 0.616275131702423f, 0.486292183399200f, 0.616648077964783f, 0.486202865839005f, + 0.617020964622498f, 0.486113250255585f, 0.617393791675568f, 0.486023366451263f, + 0.617766559123993f, 0.485933154821396f, 0.618139207363129f, 0.485842704772949f, + 0.618511795997620f, 0.485751956701279f, 0.618884325027466f, 0.485660910606384f, + 0.619256794452667f, 0.485569566488266f, 0.619629204273224f, 0.485477954149246f, + 0.620001494884491f, 0.485386073589325f, 0.620373785495758f, 0.485293895006180f, + 0.620745956897736f, 0.485201418399811f, 0.621118068695068f, 0.485108673572540f, + 0.621490061283112f, 0.485015630722046f, 0.621862053871155f, 0.484922289848328f, + 0.622233927249908f, 0.484828680753708f, 0.622605800628662f, 0.484734803438187f, + 0.622977554798126f, 0.484640628099442f, 0.623349189758301f, 0.484546154737473f, + 0.623720824718475f, 0.484451413154602f, 0.624092340469360f, 0.484356373548508f, + 0.624463796615601f, 0.484261035919189f, 0.624835193157196f, 0.484165430068970f, + 0.625206530094147f, 0.484069555997849f, 0.625577747821808f, 0.483973383903503f, + 0.625948905944824f, 0.483876913785934f, 0.626320004463196f, 0.483780175447464f, + 0.626691043376923f, 0.483683139085770f, 0.627061963081360f, 0.483585834503174f, + 0.627432823181152f, 0.483488231897354f, 0.627803623676300f, 0.483390361070633f, + 0.628174364566803f, 0.483292192220688f, 0.628544986248016f, 0.483193725347519f, + 0.628915548324585f, 0.483094990253448f, 0.629286050796509f, 0.482995986938477f, + 0.629656434059143f, 0.482896685600281f, 0.630026817321777f, 0.482797086238861f, + 0.630397081375122f, 0.482697218656540f, 0.630767226219177f, 0.482597053050995f, + 0.631137371063232f, 0.482496619224548f, 0.631507396697998f, 0.482395917177200f, + 0.631877362728119f, 0.482294887304306f, 0.632247209548950f, 0.482193619012833f, + 0.632616996765137f, 0.482092022895813f, 0.632986724376678f, 0.481990188360214f, + 0.633356392383575f, 0.481888025999069f, 0.633725941181183f, 0.481785595417023f, + 0.634095430374146f, 0.481682896614075f, 0.634464859962463f, 0.481579899787903f, + 0.634834170341492f, 0.481476634740829f, 0.635203421115875f, 0.481373071670532f, + 0.635572552680969f, 0.481269240379334f, 0.635941684246063f, 0.481165111064911f, + 0.636310696601868f, 0.481060713529587f, 0.636679589748383f, 0.480956017971039f, + 0.637048482894897f, 0.480851024389267f, 0.637417197227478f, 0.480745792388916f, + 0.637785911560059f, 0.480640232563019f, 0.638154506683350f, 0.480534434318542f, + 0.638523042201996f, 0.480428308248520f, 0.638891458511353f, 0.480321943759918f, + 0.639259815216064f, 0.480215251445770f, 0.639628112316132f, 0.480108320713043f, + 0.639996349811554f, 0.480001062154770f, 0.640364408493042f, 0.479893565177917f, + 0.640732467174530f, 0.479785770177841f, 0.641100406646729f, 0.479677677154541f, + 0.641468286514282f, 0.479569315910339f, 0.641836047172546f, 0.479460656642914f, + 0.642203748226166f, 0.479351729154587f, 0.642571389675140f, 0.479242533445358f, + 0.642938911914825f, 0.479133039712906f, 0.643306374549866f, 0.479023247957230f, + 0.643673717975616f, 0.478913217782974f, 0.644041001796722f, 0.478802859783173f, + 0.644408226013184f, 0.478692263364792f, 0.644775331020355f, 0.478581339120865f, + 0.645142316818237f, 0.478470176458359f, 0.645509302616119f, 0.478358715772629f, + 0.645876109600067f, 0.478246957063675f, 0.646242916584015f, 0.478134930133820f, + 0.646609604358673f, 0.478022634983063f, 0.646976172924042f, 0.477910041809082f, + 0.647342681884766f, 0.477797180414200f, 0.647709131240845f, 0.477684020996094f, + 0.648075461387634f, 0.477570593357086f, 0.648441672325134f, 0.477456867694855f, + 0.648807883262634f, 0.477342873811722f, 0.649173915386200f, 0.477228611707687f, + 0.649539887905121f, 0.477114051580429f, 0.649905800819397f, 0.476999223232269f, + 0.650271594524384f, 0.476884096860886f, 0.650637328624725f, 0.476768702268600f, + 0.651003003120422f, 0.476653009653091f, 0.651368498802185f, 0.476537048816681f, + 0.651733994483948f, 0.476420819759369f, 0.652099311351776f, 0.476304292678833f, + 0.652464628219604f, 0.476187497377396f, 0.652829825878143f, 0.476070433855057f, + 0.653194904327393f, 0.475953072309494f, 0.653559923171997f, 0.475835442543030f, + 0.653924822807312f, 0.475717514753342f, 0.654289662837982f, 0.475599318742752f, + 0.654654383659363f, 0.475480824708939f, 0.655019044876099f, 0.475362062454224f, + 0.655383586883545f, 0.475243031978607f, 0.655748009681702f, 0.475123733282089f, + 0.656112432479858f, 0.475004136562347f, 0.656476676464081f, 0.474884241819382f, + 0.656840860843658f, 0.474764078855515f, 0.657204985618591f, 0.474643647670746f, + 0.657568991184235f, 0.474522948265076f, 0.657932877540588f, 0.474401950836182f, + 0.658296704292297f, 0.474280685186386f, 0.658660411834717f, 0.474159121513367f, + 0.659024059772491f, 0.474037289619446f, 0.659387588500977f, 0.473915189504623f, + 0.659750998020172f, 0.473792791366577f, 0.660114347934723f, 0.473670125007629f, + 0.660477638244629f, 0.473547190427780f, 0.660840749740601f, 0.473423957824707f, + 0.661203861236572f, 0.473300457000732f, 0.661566793918610f, 0.473176687955856f, + 0.661929666996002f, 0.473052620887756f, 0.662292480468750f, 0.472928285598755f, + 0.662655174732208f, 0.472803652286530f, 0.663017749786377f, 0.472678780555725f, + 0.663380205631256f, 0.472553610801697f, 0.663742601871490f, 0.472428143024445f, + 0.664104938507080f, 0.472302407026291f, 0.664467096328735f, 0.472176402807236f, + 0.664829254150391f, 0.472050130367279f, 0.665191233158112f, 0.471923559904099f, + 0.665553152561188f, 0.471796721220016f, 0.665914952754974f, 0.471669614315033f, + 0.666276693344116f, 0.471542209386826f, 0.666638314723969f, 0.471414536237717f, + 0.666999816894531f, 0.471286594867706f, 0.667361259460449f, 0.471158385276794f, + 0.667722582817078f, 0.471029877662659f, 0.668083786964417f, 0.470901101827621f, + 0.668444931507111f, 0.470772027969360f, 0.668805956840515f, 0.470642685890198f, + 0.669166862964630f, 0.470513075590134f, 0.669527709484100f, 0.470383197069168f, + 0.669888436794281f, 0.470253020524979f, 0.670249044895172f, 0.470122605562210f, + 0.670609593391418f, 0.469991862773895f, 0.670970022678375f, 0.469860881567001f, + 0.671330332756042f, 0.469729602336884f, 0.671690583229065f, 0.469598054885864f, + 0.672050714492798f, 0.469466239213943f, 0.672410726547241f, 0.469334155321121f, + 0.672770678997040f, 0.469201773405075f, 0.673130512237549f, 0.469069123268127f, + 0.673490226268768f, 0.468936175107956f, 0.673849821090698f, 0.468802988529205f, + 0.674209356307983f, 0.468669503927231f, 0.674568772315979f, 0.468535751104355f, + 0.674928069114685f, 0.468401730060577f, 0.675287246704102f, 0.468267410993576f, + 0.675646364688873f, 0.468132823705673f, 0.676005363464355f, 0.467997968196869f, + 0.676364302635193f, 0.467862844467163f, 0.676723062992096f, 0.467727422714233f, + 0.677081763744354f, 0.467591762542725f, 0.677440345287323f, 0.467455804347992f, + 0.677798807621002f, 0.467319577932358f, 0.678157210350037f, 0.467183053493500f, + 0.678515493869781f, 0.467046260833740f, 0.678873658180237f, 0.466909229755402f, + 0.679231703281403f, 0.466771900653839f, 0.679589688777924f, 0.466634273529053f, + 0.679947495460510f, 0.466496407985687f, 0.680305242538452f, 0.466358244419098f, + 0.680662930011749f, 0.466219812631607f, 0.681020438671112f, 0.466081112623215f, + 0.681377887725830f, 0.465942144393921f, 0.681735157966614f, 0.465802878141403f, + 0.682092368602753f, 0.465663343667984f, 0.682449519634247f, 0.465523540973663f, + 0.682806491851807f, 0.465383470058441f, 0.683163404464722f, 0.465243130922318f, + 0.683520197868347f, 0.465102523565292f, 0.683876872062683f, 0.464961618185043f, + 0.684233427047729f, 0.464820444583893f, 0.684589862823486f, 0.464679002761841f, + 0.684946238994598f, 0.464537292718887f, 0.685302436351776f, 0.464395314455032f, + 0.685658574104309f, 0.464253038167953f, 0.686014592647552f, 0.464110493659973f, + 0.686370551586151f, 0.463967710733414f, 0.686726331710815f, 0.463824629783630f, + 0.687082052230835f, 0.463681250810623f, 0.687437593936920f, 0.463537633419037f, + 0.687793076038361f, 0.463393747806549f, 0.688148438930511f, 0.463249564170837f, + 0.688503682613373f, 0.463105112314224f, 0.688858866691589f, 0.462960392236710f, + 0.689213871955872f, 0.462815403938293f, 0.689568817615509f, 0.462670147418976f, + 0.689923584461212f, 0.462524622678757f, 0.690278291702271f, 0.462378799915314f, + 0.690632879734039f, 0.462232738733292f, 0.690987348556519f, 0.462086379528046f, + 0.691341698169708f, 0.461939752101898f, 0.691695988178253f, 0.461792886257172f, + 0.692050099372864f, 0.461645722389221f, 0.692404091358185f, 0.461498260498047f, + 0.692758023738861f, 0.461350560188293f, 0.693111836910248f, 0.461202591657639f, + 0.693465530872345f, 0.461054325103760f, 0.693819046020508f, 0.460905820131302f, + 0.694172501564026f, 0.460757017135620f, 0.694525837898254f, 0.460607945919037f, + 0.694879114627838f, 0.460458606481552f, 0.695232212543488f, 0.460309028625488f, + 0.695585191249847f, 0.460159152746201f, 0.695938050746918f, 0.460008978843689f, + 0.696290850639343f, 0.459858566522598f, 0.696643471717834f, 0.459707885980606f, + 0.696996033191681f, 0.459556937217712f, 0.697348415851593f, 0.459405690431595f, + 0.697700738906860f, 0.459254205226898f, 0.698052942752838f, 0.459102421998978f, + 0.698404967784882f, 0.458950400352478f, 0.698756933212280f, 0.458798080682755f, + 0.699108779430389f, 0.458645492792130f, 0.699460506439209f, 0.458492636680603f, + 0.699812114238739f, 0.458339542150497f, 0.700163602828979f, 0.458186149597168f, + 0.700514972209930f, 0.458032488822937f, 0.700866222381592f, 0.457878559827805f, + 0.701217353343964f, 0.457724362611771f, 0.701568365097046f, 0.457569897174835f, + 0.701919257640839f, 0.457415163516998f, 0.702270030975342f, 0.457260161638260f, + 0.702620685100555f, 0.457104891538620f, 0.702971220016479f, 0.456949323415756f, + 0.703321635723114f, 0.456793516874313f, 0.703671932220459f, 0.456637442111969f, + 0.704022109508514f, 0.456481099128723f, 0.704372167587280f, 0.456324487924576f, + 0.704722046852112f, 0.456167578697205f, 0.705071866512299f, 0.456010431051254f, + 0.705421566963196f, 0.455853015184402f, 0.705771148204803f, 0.455695331096649f, + 0.706120610237122f, 0.455537378787994f, 0.706469953060150f, 0.455379128456116f, + 0.706819176673889f, 0.455220639705658f, 0.707168221473694f, 0.455061882734299f, + 0.707517206668854f, 0.454902857542038f, 0.707866072654724f, 0.454743564128876f, + 0.708214759826660f, 0.454584002494812f, 0.708563387393951f, 0.454424172639847f, + 0.708911836147308f, 0.454264044761658f, 0.709260225296021f, 0.454103678464890f, + 0.709608435630798f, 0.453943043947220f, 0.709956526756287f, 0.453782171010971f, + 0.710304558277130f, 0.453621000051498f, 0.710652410984039f, 0.453459560871124f, + 0.711000144481659f, 0.453297853469849f, 0.711347758769989f, 0.453135877847672f, + 0.711695253849030f, 0.452973634004593f, 0.712042629718781f, 0.452811151742935f, + 0.712389826774597f, 0.452648371458054f, 0.712736964225769f, 0.452485352754593f, + 0.713083922863007f, 0.452322036027908f, 0.713430821895599f, 0.452158480882645f, + 0.713777542114258f, 0.451994657516479f, 0.714124143123627f, 0.451830536127090f, + 0.714470624923706f, 0.451666176319122f, 0.714816987514496f, 0.451501548290253f, + 0.715163230895996f, 0.451336652040482f, 0.715509355068207f, 0.451171487569809f, + 0.715855300426483f, 0.451006084680557f, 0.716201186180115f, 0.450840383768082f, + 0.716546893119812f, 0.450674414634705f, 0.716892480850220f, 0.450508207082748f, + 0.717238008975983f, 0.450341701507568f, 0.717583298683167f, 0.450174957513809f, + 0.717928528785706f, 0.450007945299149f, 0.718273639678955f, 0.449840664863586f, + 0.718618571758270f, 0.449673116207123f, 0.718963444232941f, 0.449505299329758f, + 0.719308137893677f, 0.449337244033813f, 0.719652712345123f, 0.449168890714645f, + 0.719997107982636f, 0.449000298976898f, 0.720341444015503f, 0.448831409215927f, + 0.720685660839081f, 0.448662281036377f, 0.721029698848724f, 0.448492884635925f, + 0.721373617649078f, 0.448323249816895f, 0.721717417240143f, 0.448153316974640f, + 0.722061097621918f, 0.447983115911484f, 0.722404599189758f, 0.447812676429749f, + 0.722747981548309f, 0.447641968727112f, 0.723091304302216f, 0.447470992803574f, + 0.723434448242188f, 0.447299748659134f, 0.723777413368225f, 0.447128236293793f, + 0.724120318889618f, 0.446956485509872f, 0.724463045597076f, 0.446784436702728f, + 0.724805653095245f, 0.446612149477005f, 0.725148141384125f, 0.446439594030380f, + 0.725490510463715f, 0.446266770362854f, 0.725832700729370f, 0.446093708276749f, + 0.726174771785736f, 0.445920348167419f, 0.726516723632813f, 0.445746749639511f, + 0.726858556270599f, 0.445572882890701f, 0.727200269699097f, 0.445398747920990f, + 0.727541804313660f, 0.445224374532700f, 0.727883219718933f, 0.445049703121185f, + 0.728224515914917f, 0.444874793291092f, 0.728565633296967f, 0.444699615240097f, + 0.728906631469727f, 0.444524168968201f, 0.729247510433197f, 0.444348484277725f, + 0.729588270187378f, 0.444172531366348f, 0.729928910732269f, 0.443996280431747f, + 0.730269372463226f, 0.443819820880890f, 0.730609714984894f, 0.443643063306808f, + 0.730949878692627f, 0.443466067314148f, 0.731289982795715f, 0.443288803100586f, + 0.731629908084869f, 0.443111270666122f, 0.731969714164734f, 0.442933470010757f, + 0.732309341430664f, 0.442755430936813f, 0.732648849487305f, 0.442577123641968f, + 0.732988238334656f, 0.442398548126221f, 0.733327507972717f, 0.442219734191895f, + 0.733666598796844f, 0.442040622234344f, 0.734005570411682f, 0.441861271858215f, + 0.734344422817230f, 0.441681683063507f, 0.734683096408844f, 0.441501796245575f, + 0.735021650791168f, 0.441321671009064f, 0.735360085964203f, 0.441141277551651f, + 0.735698342323303f, 0.440960645675659f, 0.736036539077759f, 0.440779715776443f, + 0.736374497413635f, 0.440598547458649f, 0.736712396144867f, 0.440417140722275f, + 0.737050116062164f, 0.440235435962677f, 0.737387716770172f, 0.440053492784500f, + 0.737725138664246f, 0.439871311187744f, 0.738062441349030f, 0.439688831567764f, + 0.738399624824524f, 0.439506113529205f, 0.738736629486084f, 0.439323127269745f, + 0.739073514938354f, 0.439139902591705f, 0.739410281181335f, 0.438956409692764f, + 0.739746868610382f, 0.438772648572922f, 0.740083336830139f, 0.438588619232178f, + 0.740419685840607f, 0.438404351472855f, 0.740755856037140f, 0.438219845294952f, + 0.741091907024384f, 0.438035041093826f, 0.741427779197693f, 0.437849998474121f, + 0.741763532161713f, 0.437664687633514f, 0.742099165916443f, 0.437479138374329f, + 0.742434620857239f, 0.437293320894241f, 0.742769956588745f, 0.437107264995575f, + 0.743105113506317f, 0.436920911073685f, 0.743440151214600f, 0.436734348535538f, + 0.743775069713593f, 0.436547487974167f, 0.744109809398651f, 0.436360388994217f, + 0.744444429874420f, 0.436173021793365f, 0.744778931140900f, 0.435985416173935f, + 0.745113253593445f, 0.435797542333603f, 0.745447397232056f, 0.435609430074692f, + 0.745781481266022f, 0.435421019792557f, 0.746115326881409f, 0.435232400894165f, + 0.746449112892151f, 0.435043483972549f, 0.746782720088959f, 0.434854328632355f, + 0.747116148471832f, 0.434664934873581f, 0.747449457645416f, 0.434475272893906f, + 0.747782647609711f, 0.434285342693329f, 0.748115658760071f, 0.434095174074173f, + 0.748448550701141f, 0.433904737234116f, 0.748781263828278f, 0.433714061975479f, + 0.749113857746124f, 0.433523118495941f, 0.749446272850037f, 0.433331936597824f, + 0.749778568744659f, 0.433140486478806f, 0.750110685825348f, 0.432948768138886f, + 0.750442683696747f, 0.432756811380386f, 0.750774562358856f, 0.432564586400986f, + 0.751106262207031f, 0.432372123003006f, 0.751437783241272f, 0.432179391384125f, + 0.751769185066223f, 0.431986421346664f, 0.752100467681885f, 0.431793183088303f, + 0.752431571483612f, 0.431599706411362f, 0.752762496471405f, 0.431405961513519f, + 0.753093302249908f, 0.431211978197098f, 0.753423988819122f, 0.431017726659775f, + 0.753754496574402f, 0.430823236703873f, 0.754084885120392f, 0.430628478527069f, + 0.754415094852448f, 0.430433481931686f, 0.754745125770569f, 0.430238217115402f, + 0.755075037479401f, 0.430042684078217f, 0.755404829978943f, 0.429846942424774f, + 0.755734443664551f, 0.429650902748108f, 0.756063878536224f, 0.429454624652863f, + 0.756393194198608f, 0.429258108139038f, 0.756722390651703f, 0.429061323404312f, + 0.757051348686218f, 0.428864300251007f, 0.757380247116089f, 0.428667008876801f, + 0.757708966732025f, 0.428469479084015f, 0.758037507534027f, 0.428271710872650f, + 0.758365929126740f, 0.428073674440384f, 0.758694171905518f, 0.427875369787216f, + 0.759022235870361f, 0.427676826715469f, 0.759350180625916f, 0.427478045225143f, + 0.759678006172180f, 0.427278995513916f, 0.760005652904511f, 0.427079707384110f, + 0.760333120822906f, 0.426880151033401f, 0.760660469532013f, 0.426680356264114f, + 0.760987639427185f, 0.426480293273926f, 0.761314690113068f, 0.426279991865158f, + 0.761641561985016f, 0.426079452037811f, 0.761968255043030f, 0.425878643989563f, + 0.762294828891754f, 0.425677597522736f, 0.762621283531189f, 0.425476282835007f, + 0.762947499752045f, 0.425274729728699f, 0.763273596763611f, 0.425072938203812f, + 0.763599574565887f, 0.424870878458023f, 0.763925373554230f, 0.424668580293655f, + 0.764250993728638f, 0.424466013908386f, 0.764576494693756f, 0.424263238906860f, + 0.764901816844940f, 0.424060165882111f, 0.765226960182190f, 0.423856884241104f, + 0.765551984310150f, 0.423653304576874f, 0.765876889228821f, 0.423449516296387f, + 0.766201555728912f, 0.423245459794998f, 0.766526103019714f, 0.423041164875031f, + 0.766850471496582f, 0.422836631536484f, 0.767174720764160f, 0.422631829977036f, + 0.767498791217804f, 0.422426789999008f, 0.767822742462158f, 0.422221481800079f, + 0.768146514892578f, 0.422015935182571f, 0.768470108509064f, 0.421810150146484f, + 0.768793523311615f, 0.421604126691818f, 0.769116818904877f, 0.421397835016251f, + 0.769439935684204f, 0.421191304922104f, 0.769762933254242f, 0.420984506607056f, + 0.770085752010345f, 0.420777499675751f, 0.770408391952515f, 0.420570224523544f, + 0.770730912685394f, 0.420362681150436f, 0.771053194999695f, 0.420154929161072f, + 0.771375417709351f, 0.419946908950806f, 0.771697402000427f, 0.419738620519638f, + 0.772019267082214f, 0.419530123472214f, 0.772340953350067f, 0.419321358203888f, + 0.772662520408630f, 0.419112354516983f, 0.772983849048615f, 0.418903112411499f, + 0.773305058479309f, 0.418693602085114f, 0.773626148700714f, 0.418483853340149f, + 0.773947000503540f, 0.418273866176605f, 0.774267733097076f, 0.418063640594482f, + 0.774588346481323f, 0.417853146791458f, 0.774908721446991f, 0.417642414569855f, + 0.775228977203369f, 0.417431443929672f, 0.775549054145813f, 0.417220205068588f, + 0.775869011878967f, 0.417008757591248f, 0.776188731193542f, 0.416797041893005f, + 0.776508331298828f, 0.416585087776184f, 0.776827812194824f, 0.416372895240784f, + 0.777147054672241f, 0.416160434484482f, 0.777466177940369f, 0.415947735309601f, + 0.777785122394562f, 0.415734797716141f, 0.778103888034821f, 0.415521621704102f, + 0.778422534465790f, 0.415308207273483f, 0.778741002082825f, 0.415094524621964f, + 0.779059290885925f, 0.414880603551865f, 0.779377400875092f, 0.414666473865509f, + 0.779695332050323f, 0.414452046155930f, 0.780013144016266f, 0.414237409830093f, + 0.780330777168274f, 0.414022535085678f, 0.780648231506348f, 0.413807392120361f, + 0.780965566635132f, 0.413592010736465f, 0.781282722949982f, 0.413376390933990f, + 0.781599700450897f, 0.413160532712936f, 0.781916499137878f, 0.412944436073303f, + 0.782233119010925f, 0.412728071212769f, 0.782549619674683f, 0.412511497735977f, + 0.782865881919861f, 0.412294656038284f, 0.783182024955750f, 0.412077575922012f, + 0.783498048782349f, 0.411860257387161f, 0.783813834190369f, 0.411642700433731f, + 0.784129500389099f, 0.411424905061722f, 0.784444928169250f, 0.411206841468811f, + 0.784760236740112f, 0.410988569259644f, 0.785075426101685f, 0.410770028829575f, + 0.785390377044678f, 0.410551249980927f, 0.785705149173737f, 0.410332232713699f, + 0.786019802093506f, 0.410112977027893f, 0.786334276199341f, 0.409893482923508f, + 0.786648571491241f, 0.409673750400543f, 0.786962687969208f, 0.409453779459000f, + 0.787276685237885f, 0.409233570098877f, 0.787590444087982f, 0.409013092517853f, + 0.787904083728790f, 0.408792406320572f, 0.788217544555664f, 0.408571451902390f, + 0.788530826568604f, 0.408350288867950f, 0.788843929767609f, 0.408128857612610f, + 0.789156913757324f, 0.407907217741013f, 0.789469659328461f, 0.407685309648514f, + 0.789782285690308f, 0.407463163137436f, 0.790094733238220f, 0.407240778207779f, + 0.790407001972198f, 0.407018154859543f, 0.790719091892242f, 0.406795293092728f, + 0.791031002998352f, 0.406572192907333f, 0.791342735290527f, 0.406348884105682f, + 0.791654348373413f, 0.406125307083130f, 0.791965723037720f, 0.405901491641998f, + 0.792276978492737f, 0.405677437782288f, 0.792588055133820f, 0.405453115701675f, + 0.792898952960968f, 0.405228585004807f, 0.793209671974182f, 0.405003815889359f, + 0.793520212173462f, 0.404778808355331f, 0.793830573558807f, 0.404553562402725f, + 0.794140756130219f, 0.404328078031540f, 0.794450819492340f, 0.404102355241776f, + 0.794760644435883f, 0.403876423835754f, 0.795070350170136f, 0.403650224208832f, + 0.795379877090454f, 0.403423786163330f, 0.795689165592194f, 0.403197109699249f, + 0.795998334884644f, 0.402970194816589f, 0.796307325363159f, 0.402743041515350f, + 0.796616137027740f, 0.402515679597855f, 0.796924769878387f, 0.402288049459457f, + 0.797233223915100f, 0.402060180902481f, 0.797541558742523f, 0.401832103729248f, + 0.797849655151367f, 0.401603758335114f, 0.798157572746277f, 0.401375204324722f, + 0.798465371131897f, 0.401146411895752f, 0.798772931098938f, 0.400917351245880f, + 0.799080371856689f, 0.400688081979752f, 0.799387574195862f, 0.400458574295044f, + 0.799694657325745f, 0.400228828191757f, 0.800001561641693f, 0.399998843669891f, + 0.800308227539063f, 0.399768620729446f, 0.800614774227142f, 0.399538189172745f, + 0.800921142101288f, 0.399307489395142f, 0.801227271556854f, 0.399076581001282f, + 0.801533281803131f, 0.398845434188843f, 0.801839113235474f, 0.398614019155502f, + 0.802144765853882f, 0.398382395505905f, 0.802450239658356f, 0.398150533437729f, + 0.802755534648895f, 0.397918462753296f, 0.803060650825500f, 0.397686123847961f, + 0.803365588188171f, 0.397453576326370f, 0.803670346736908f, 0.397220760583878f, + 0.803974866867065f, 0.396987736225128f, 0.804279267787933f, 0.396754473447800f, + 0.804583489894867f, 0.396520972251892f, 0.804887533187866f, 0.396287262439728f, + 0.805191397666931f, 0.396053284406662f, 0.805495083332062f, 0.395819097757339f, + 0.805798590183258f, 0.395584672689438f, 0.806101918220520f, 0.395350009202957f, + 0.806405067443848f, 0.395115107297897f, 0.806707978248596f, 0.394879996776581f, + 0.807010769844055f, 0.394644618034363f, 0.807313382625580f, 0.394409030675888f, + 0.807615816593170f, 0.394173204898834f, 0.807918012142181f, 0.393937170505524f, + 0.808220088481903f, 0.393700867891312f, 0.808521986007690f, 0.393464356660843f, + 0.808823645114899f, 0.393227607011795f, 0.809125185012817f, 0.392990618944168f, + 0.809426486492157f, 0.392753422260284f, 0.809727668762207f, 0.392515957355499f, + 0.810028612613678f, 0.392278283834457f, 0.810329377651215f, 0.392040401697159f, + 0.810629963874817f, 0.391802251338959f, 0.810930430889130f, 0.391563892364502f, + 0.811230659484863f, 0.391325294971466f, 0.811530709266663f, 0.391086459159851f, + 0.811830580234528f, 0.390847414731979f, 0.812130272388458f, 0.390608131885529f, + 0.812429726123810f, 0.390368610620499f, 0.812729060649872f, 0.390128880739212f, + 0.813028216362000f, 0.389888882637024f, 0.813327133655548f, 0.389648675918579f, + 0.813625931739807f, 0.389408260583878f, 0.813924491405487f, 0.389167606830597f, + 0.814222872257233f, 0.388926714658737f, 0.814521074295044f, 0.388685584068298f, + 0.814819097518921f, 0.388444244861603f, 0.815116941928864f, 0.388202667236328f, + 0.815414607524872f, 0.387960851192474f, 0.815712094306946f, 0.387718826532364f, + 0.816009342670441f, 0.387476563453674f, 0.816306471824646f, 0.387234061956406f, + 0.816603362560272f, 0.386991351842880f, 0.816900074481964f, 0.386748403310776f, + 0.817196667194366f, 0.386505216360092f, 0.817493021488190f, 0.386261820793152f, + 0.817789137363434f, 0.386018186807632f, 0.818085134029388f, 0.385774344205856f, + 0.818380951881409f, 0.385530263185501f, 0.818676531314850f, 0.385285943746567f, + 0.818971931934357f, 0.385041415691376f, 0.819267153739929f, 0.384796649217606f, + 0.819562196731567f, 0.384551674127579f, 0.819857060909271f, 0.384306460618973f, + 0.820151746273041f, 0.384061008691788f, 0.820446193218231f, 0.383815348148346f, + 0.820740520954132f, 0.383569449186325f, 0.821034610271454f, 0.383323341608047f, + 0.821328520774841f, 0.383076995611191f, 0.821622252464294f, 0.382830440998077f, + 0.821915745735168f, 0.382583618164063f, 0.822209119796753f, 0.382336616516113f, + 0.822502255439758f, 0.382089376449585f, 0.822795212268829f, 0.381841897964478f, + 0.823087990283966f, 0.381594210863113f, 0.823380589485168f, 0.381346285343170f, + 0.823673009872437f, 0.381098151206970f, 0.823965191841125f, 0.380849778652191f, + 0.824257194995880f, 0.380601197481155f, 0.824549019336700f, 0.380352377891541f, + 0.824840664863586f, 0.380103349685669f, 0.825132071971893f, 0.379854083061218f, + 0.825423359870911f, 0.379604607820511f, 0.825714409351349f, 0.379354894161224f, + 0.826005280017853f, 0.379104942083359f, 0.826295912265778f, 0.378854811191559f, + 0.826586425304413f, 0.378604412078857f, 0.826876699924469f, 0.378353834152222f, + 0.827166795730591f, 0.378102988004684f, 0.827456712722778f, 0.377851963043213f, + 0.827746450901031f, 0.377600699663162f, 0.828035950660706f, 0.377349197864532f, + 0.828325271606445f, 0.377097487449646f, 0.828614413738251f, 0.376845568418503f, + 0.828903317451477f, 0.376593410968781f, 0.829192101955414f, 0.376341015100479f, + 0.829480648040771f, 0.376088410615921f, 0.829769015312195f, 0.375835597515106f, + 0.830057144165039f, 0.375582575798035f, 0.830345153808594f, 0.375329315662384f, + 0.830632925033569f, 0.375075817108154f, 0.830920517444611f, 0.374822109937668f, + 0.831207871437073f, 0.374568194150925f, 0.831495106220245f, 0.374314039945602f, + 0.831782102584839f, 0.374059677124023f, 0.832068860530853f, 0.373805105686188f, + 0.832355499267578f, 0.373550295829773f, 0.832641899585724f, 0.373295277357101f, + 0.832928121089935f, 0.373040050268173f, 0.833214163780212f, 0.372784584760666f, + 0.833499968051910f, 0.372528880834579f, 0.833785593509674f, 0.372272998094559f, + 0.834071040153503f, 0.372016876935959f, 0.834356248378754f, 0.371760547161102f, + 0.834641277790070f, 0.371503978967667f, 0.834926128387451f, 0.371247202157974f, + 0.835210800170898f, 0.370990216732025f, 0.835495233535767f, 0.370732992887497f, + 0.835779488086700f, 0.370475560426712f, 0.836063504219055f, 0.370217919349670f, + 0.836347401142120f, 0.369960039854050f, 0.836631059646606f, 0.369701951742172f, + 0.836914479732513f, 0.369443655014038f, 0.837197780609131f, 0.369185149669647f, + 0.837480843067169f, 0.368926405906677f, 0.837763667106628f, 0.368667453527451f, + 0.838046371936798f, 0.368408292531967f, 0.838328838348389f, 0.368148893117905f, + 0.838611066341400f, 0.367889285087585f, 0.838893175125122f, 0.367629468441010f, + 0.839175045490265f, 0.367369443178177f, 0.839456677436829f, 0.367109179496765f, + 0.839738130569458f, 0.366848707199097f, 0.840019404888153f, 0.366588026285172f, + 0.840300500392914f, 0.366327136754990f, 0.840581357479095f, 0.366066008806229f, + 0.840862035751343f, 0.365804702043533f, 0.841142535209656f, 0.365543156862259f, + 0.841422796249390f, 0.365281373262405f, 0.841702818870544f, 0.365019410848618f, + 0.841982722282410f, 0.364757210016251f, 0.842262387275696f, 0.364494800567627f, + 0.842541813850403f, 0.364232182502747f, 0.842821121215820f, 0.363969355821610f, + 0.843100130558014f, 0.363706320524216f, 0.843379020690918f, 0.363443046808243f, + 0.843657672405243f, 0.363179564476013f, 0.843936145305634f, 0.362915903329849f, + 0.844214379787445f, 0.362651973962784f, 0.844492435455322f, 0.362387865781784f, + 0.844770252704620f, 0.362123548984528f, 0.845047891139984f, 0.361858993768692f, + 0.845325350761414f, 0.361594229936600f, 0.845602571964264f, 0.361329287290573f, + 0.845879614353180f, 0.361064106225967f, 0.846156477928162f, 0.360798716545105f, + 0.846433103084564f, 0.360533088445663f, 0.846709489822388f, 0.360267281532288f, + 0.846985757350922f, 0.360001266002655f, 0.847261726856232f, 0.359735012054443f, + 0.847537577152252f, 0.359468549489975f, 0.847813189029694f, 0.359201908111572f, + 0.848088562488556f, 0.358935028314590f, 0.848363757133484f, 0.358667939901352f, + 0.848638772964478f, 0.358400642871857f, 0.848913550376892f, 0.358133137226105f, + 0.849188148975372f, 0.357865422964096f, 0.849462509155273f, 0.357597470283508f, + 0.849736690521240f, 0.357329338788986f, 0.850010633468628f, 0.357060998678207f, + 0.850284397602081f, 0.356792420148849f, 0.850557923316956f, 0.356523662805557f, + 0.850831270217896f, 0.356254696846008f, 0.851104438304901f, 0.355985492467880f, + 0.851377367973328f, 0.355716109275818f, 0.851650118827820f, 0.355446487665176f, + 0.851922631263733f, 0.355176687240601f, 0.852194905281067f, 0.354906648397446f, + 0.852467060089111f, 0.354636400938034f, 0.852738916873932f, 0.354365974664688f, + 0.853010654449463f, 0.354095309972763f, 0.853282094001770f, 0.353824466466904f, + 0.853553414344788f, 0.353553384542465f, 0.853824436664581f, 0.353282123804092f, + 0.854095339775085f, 0.353010624647141f, 0.854365944862366f, 0.352738946676254f, + 0.854636430740356f, 0.352467030286789f, 0.854906618595123f, 0.352194935083389f, + 0.855176687240601f, 0.351922631263733f, 0.855446517467499f, 0.351650089025497f, + 0.855716109275818f, 0.351377367973328f, 0.855985522270203f, 0.351104438304901f, + 0.856254696846008f, 0.350831300020218f, 0.856523692607880f, 0.350557953119278f, + 0.856792449951172f, 0.350284397602081f, 0.857060968875885f, 0.350010633468628f, + 0.857329368591309f, 0.349736660718918f, 0.857597470283508f, 0.349462509155273f, + 0.857865393161774f, 0.349188119173050f, 0.858133137226105f, 0.348913550376892f, + 0.858400642871857f, 0.348638743162155f, 0.858667910099030f, 0.348363757133484f, + 0.858934998512268f, 0.348088562488556f, 0.859201908111572f, 0.347813159227371f, + 0.859468579292297f, 0.347537547349930f, 0.859735012054443f, 0.347261756658554f, + 0.860001266002655f, 0.346985727548599f, 0.860267281532288f, 0.346709519624710f, + 0.860533118247986f, 0.346433073282242f, 0.860798716545105f, 0.346156448125839f, + 0.861064076423645f, 0.345879614353180f, 0.861329257488251f, 0.345602601766586f, + 0.861594259738922f, 0.345325350761414f, 0.861859023571014f, 0.345047920942307f, + 0.862123548984528f, 0.344770282506943f, 0.862387895584106f, 0.344492435455322f, + 0.862652003765106f, 0.344214379787445f, 0.862915873527527f, 0.343936115503311f, + 0.863179564476013f, 0.343657672405243f, 0.863443076610565f, 0.343379020690918f, + 0.863706290721893f, 0.343100160360336f, 0.863969385623932f, 0.342821091413498f, + 0.864232182502747f, 0.342541843652725f, 0.864494800567627f, 0.342262357473373f, + 0.864757239818573f, 0.341982692480087f, 0.865019381046295f, 0.341702848672867f, + 0.865281403064728f, 0.341422766447067f, 0.865543127059937f, 0.341142505407333f, + 0.865804672241211f, 0.340862035751343f, 0.866066038608551f, 0.340581357479095f, + 0.866327106952667f, 0.340300500392914f, 0.866588056087494f, 0.340019434690475f, + 0.866848707199097f, 0.339738160371780f, 0.867109179496765f, 0.339456677436829f, + 0.867369413375854f, 0.339175015687943f, 0.867629468441010f, 0.338893145322800f, + 0.867889285087585f, 0.338611096143723f, 0.868148922920227f, 0.338328808546066f, + 0.868408262729645f, 0.338046342134476f, 0.868667483329773f, 0.337763696908951f, + 0.868926405906677f, 0.337480813264847f, 0.869185149669647f, 0.337197750806808f, + 0.869443655014038f, 0.336914509534836f, 0.869701981544495f, 0.336631029844284f, + 0.869960069656372f, 0.336347371339798f, 0.870217919349670f, 0.336063534021378f, + 0.870475590229034f, 0.335779488086700f, 0.870733022689819f, 0.335495233535767f, + 0.870990216732025f, 0.335210770368576f, 0.871247172355652f, 0.334926128387451f, + 0.871503949165344f, 0.334641307592392f, 0.871760547161102f, 0.334356248378754f, + 0.872016847133636f, 0.334071010351181f, 0.872272968292236f, 0.333785593509674f, + 0.872528910636902f, 0.333499968051910f, 0.872784554958344f, 0.333214133977890f, + 0.873040020465851f, 0.332928121089935f, 0.873295307159424f, 0.332641899585724f, + 0.873550295829773f, 0.332355499267578f, 0.873805105686188f, 0.332068890333176f, + 0.874059677124023f, 0.331782072782516f, 0.874314069747925f, 0.331495076417923f, + 0.874568223953247f, 0.331207901239395f, 0.874822139739990f, 0.330920487642288f, + 0.875075817108154f, 0.330632925033569f, 0.875329315662384f, 0.330345153808594f, + 0.875582575798035f, 0.330057173967361f, 0.875835597515106f, 0.329769015312195f, + 0.876088440418243f, 0.329480648040771f, 0.876341044902802f, 0.329192101955414f, + 0.876593410968781f, 0.328903347253799f, 0.876845538616180f, 0.328614413738251f, + 0.877097487449646f, 0.328325271606445f, 0.877349197864532f, 0.328035950660706f, + 0.877600669860840f, 0.327746421098709f, 0.877851963043213f, 0.327456712722778f, + 0.878103017807007f, 0.327166795730591f, 0.878353834152222f, 0.326876699924469f, + 0.878604412078857f, 0.326586425304413f, 0.878854811191559f, 0.326295942068100f, + 0.879104971885681f, 0.326005280017853f, 0.879354894161224f, 0.325714409351349f, + 0.879604578018188f, 0.325423330068588f, 0.879854083061218f, 0.325132101774216f, + 0.880103349685669f, 0.324840664863586f, 0.880352377891541f, 0.324549019336700f, + 0.880601167678833f, 0.324257194995880f, 0.880849778652191f, 0.323965191841125f, + 0.881098151206970f, 0.323672980070114f, 0.881346285343170f, 0.323380589485168f, + 0.881594181060791f, 0.323088020086288f, 0.881841897964478f, 0.322795242071152f, + 0.882089376449585f, 0.322502255439758f, 0.882336616516113f, 0.322209119796753f, + 0.882583618164063f, 0.321915775537491f, 0.882830440998077f, 0.321622252464294f, + 0.883076965808868f, 0.321328520774841f, 0.883323311805725f, 0.321034610271454f, + 0.883569478988647f, 0.320740520954132f, 0.883815348148346f, 0.320446223020554f, + 0.884061038494110f, 0.320151746273041f, 0.884306430816650f, 0.319857090711594f, + 0.884551644325256f, 0.319562226533890f, 0.884796679019928f, 0.319267183542252f, + 0.885041415691376f, 0.318971961736679f, 0.885285973548889f, 0.318676531314850f, + 0.885530233383179f, 0.318380922079086f, 0.885774314403534f, 0.318085134029388f, + 0.886018216609955f, 0.317789167165756f, 0.886261820793152f, 0.317492991685867f, + 0.886505246162415f, 0.317196637392044f, 0.886748373508453f, 0.316900104284287f, + 0.886991322040558f, 0.316603392362595f, 0.887234091758728f, 0.316306471824646f, + 0.887476563453674f, 0.316009372472763f, 0.887718796730042f, 0.315712094306946f, + 0.887960851192474f, 0.315414607524872f, 0.888202667236328f, 0.315116971731186f, + 0.888444244861603f, 0.314819127321243f, 0.888685584068298f, 0.314521104097366f, + 0.888926684856415f, 0.314222872257233f, 0.889167606830597f, 0.313924491405487f, + 0.889408230781555f, 0.313625901937485f, 0.889648675918579f, 0.313327133655548f, + 0.889888882637024f, 0.313028186559677f, 0.890128850936890f, 0.312729060649872f, + 0.890368640422821f, 0.312429755926132f, 0.890608131885529f, 0.312130242586136f, + 0.890847444534302f, 0.311830550432205f, 0.891086459159851f, 0.311530679464340f, + 0.891325294971466f, 0.311230629682541f, 0.891563892364502f, 0.310930401086807f, + 0.891802251338959f, 0.310629993677139f, 0.892040371894836f, 0.310329377651215f, + 0.892278313636780f, 0.310028612613678f, 0.892515957355499f, 0.309727638959885f, + 0.892753422260284f, 0.309426486492157f, 0.892990648746490f, 0.309125155210495f, + 0.893227577209473f, 0.308823645114899f, 0.893464326858521f, 0.308521956205368f, + 0.893700897693634f, 0.308220088481903f, 0.893937170505524f, 0.307918041944504f, + 0.894173204898834f, 0.307615786790848f, 0.894409060478210f, 0.307313382625580f, + 0.894644618034363f, 0.307010769844055f, 0.894879996776581f, 0.306708008050919f, + 0.895115137100220f, 0.306405037641525f, 0.895349979400635f, 0.306101888418198f, + 0.895584642887115f, 0.305798590183258f, 0.895819067955017f, 0.305495083332062f, + 0.896053314208984f, 0.305191397666931f, 0.896287262439728f, 0.304887533187866f, + 0.896520972251892f, 0.304583519697189f, 0.896754503250122f, 0.304279297590256f, + 0.896987736225128f, 0.303974896669388f, 0.897220790386200f, 0.303670316934586f, + 0.897453546524048f, 0.303365558385849f, 0.897686123847961f, 0.303060621023178f, + 0.897918462753296f, 0.302755534648895f, 0.898150563240051f, 0.302450239658356f, + 0.898382425308228f, 0.302144765853882f, 0.898614048957825f, 0.301839113235474f, + 0.898845434188843f, 0.301533311605453f, 0.899076581001282f, 0.301227301359177f, + 0.899307489395142f, 0.300921112298965f, 0.899538159370422f, 0.300614774227142f, + 0.899768650531769f, 0.300308227539063f, 0.899998843669891f, 0.300001531839371f, + 0.900228857994080f, 0.299694657325745f, 0.900458574295044f, 0.299387603998184f, + 0.900688111782074f, 0.299080342054367f, 0.900917351245880f, 0.298772931098938f, + 0.901146411895752f, 0.298465341329575f, 0.901375174522400f, 0.298157602548599f, + 0.901603758335114f, 0.297849655151367f, 0.901832103729248f, 0.297541528940201f, + 0.902060210704803f, 0.297233253717422f, 0.902288019657135f, 0.296924799680710f, + 0.902515649795532f, 0.296616137027740f, 0.902743041515350f, 0.296307325363159f, + 0.902970194816589f, 0.295998334884644f, 0.903197109699249f, 0.295689195394516f, + 0.903423786163330f, 0.295379847288132f, 0.903650224208832f, 0.295070350170136f, + 0.903876423835754f, 0.294760644435883f, 0.904102385044098f, 0.294450789690018f, + 0.904328107833862f, 0.294140785932541f, 0.904553592205048f, 0.293830573558807f, + 0.904778838157654f, 0.293520182371140f, 0.905003845691681f, 0.293209642171860f, + 0.905228614807129f, 0.292898923158646f, 0.905453145503998f, 0.292588025331497f, + 0.905677437782288f, 0.292276978492737f, 0.905901491641998f, 0.291965723037720f, + 0.906125307083130f, 0.291654318571091f, 0.906348884105682f, 0.291342735290527f, + 0.906572222709656f, 0.291031002998352f, 0.906795322895050f, 0.290719062089920f, + 0.907018184661865f, 0.290406972169876f, 0.907240808010101f, 0.290094703435898f, + 0.907463192939758f, 0.289782285690308f, 0.907685279846191f, 0.289469659328461f, + 0.907907187938690f, 0.289156883955002f, 0.908128857612610f, 0.288843959569931f, + 0.908350288867950f, 0.288530826568604f, 0.908571481704712f, 0.288217544555664f, + 0.908792436122894f, 0.287904083728790f, 0.909013092517853f, 0.287590473890305f, + 0.909233570098877f, 0.287276685237885f, 0.909453809261322f, 0.286962717771530f, + 0.909673750400543f, 0.286648571491241f, 0.909893512725830f, 0.286334276199341f, + 0.910112977027893f, 0.286019802093506f, 0.910332262516022f, 0.285705178976059f, + 0.910551249980927f, 0.285390377044678f, 0.910769999027252f, 0.285075396299362f, + 0.910988569259644f, 0.284760266542435f, 0.911206841468811f, 0.284444957971573f, + 0.911424875259399f, 0.284129470586777f, 0.911642670631409f, 0.283813834190369f, + 0.911860227584839f, 0.283498018980026f, 0.912077546119690f, 0.283182054758072f, + 0.912294626235962f, 0.282865911722183f, 0.912511467933655f, 0.282549589872360f, + 0.912728071212769f, 0.282233119010925f, 0.912944436073303f, 0.281916469335556f, + 0.913160502910614f, 0.281599670648575f, 0.913376390933990f, 0.281282693147659f, + 0.913592040538788f, 0.280965566635132f, 0.913807392120361f, 0.280648261308670f, + 0.914022505283356f, 0.280330777168274f, 0.914237439632416f, 0.280013144016266f, + 0.914452075958252f, 0.279695361852646f, 0.914666473865509f, 0.279377400875092f, + 0.914880633354187f, 0.279059261083603f, 0.915094554424286f, 0.278740972280502f, + 0.915308177471161f, 0.278422504663467f, 0.915521621704102f, 0.278103888034821f, + 0.915734827518463f, 0.277785122394562f, 0.915947735309601f, 0.277466177940369f, + 0.916160404682159f, 0.277147054672241f, 0.916372895240784f, 0.276827782392502f, + 0.916585087776184f, 0.276508361101151f, 0.916797041893005f, 0.276188760995865f, + 0.917008757591248f, 0.275868982076645f, 0.917220234870911f, 0.275549083948135f, + 0.917431414127350f, 0.275228977203369f, 0.917642414569855f, 0.274908751249313f, + 0.917853116989136f, 0.274588316679001f, 0.918063640594482f, 0.274267762899399f, + 0.918273866176605f, 0.273947030305862f, 0.918483853340149f, 0.273626148700714f, + 0.918693602085114f, 0.273305088281631f, 0.918903112411499f, 0.272983878850937f, + 0.919112324714661f, 0.272662490606308f, 0.919321358203888f, 0.272340953350067f, + 0.919530093669891f, 0.272019267082214f, 0.919738650321960f, 0.271697402000427f, + 0.919946908950806f, 0.271375387907028f, 0.920154929161072f, 0.271053224802017f, + 0.920362710952759f, 0.270730882883072f, 0.920570194721222f, 0.270408391952515f, + 0.920777499675751f, 0.270085722208023f, 0.920984506607056f, 0.269762933254242f, + 0.921191275119781f, 0.269439965486526f, 0.921397805213928f, 0.269116818904877f, + 0.921604096889496f, 0.268793523311615f, 0.921810150146484f, 0.268470078706741f, + 0.922015964984894f, 0.268146485090256f, 0.922221481800079f, 0.267822742462158f, + 0.922426760196686f, 0.267498821020126f, 0.922631800174713f, 0.267174720764160f, + 0.922836601734161f, 0.266850501298904f, 0.923041164875031f, 0.266526103019714f, + 0.923245489597321f, 0.266201555728912f, 0.923449516296387f, 0.265876859426498f, + 0.923653304576874f, 0.265552014112473f, 0.923856854438782f, 0.265226989984512f, + 0.924060165882111f, 0.264901816844940f, 0.924263238906860f, 0.264576494693756f, + 0.924466013908386f, 0.264250993728638f, 0.924668610095978f, 0.263925373554230f, + 0.924870908260345f, 0.263599574565887f, 0.925072908401489f, 0.263273626565933f, + 0.925274729728699f, 0.262947499752045f, 0.925476312637329f, 0.262621253728867f, + 0.925677597522736f, 0.262294828891754f, 0.925878643989563f, 0.261968284845352f, + 0.926079452037811f, 0.261641561985016f, 0.926280021667480f, 0.261314690113068f, + 0.926480293273926f, 0.260987639427185f, 0.926680326461792f, 0.260660469532013f, + 0.926880121231079f, 0.260333120822906f, 0.927079677581787f, 0.260005623102188f, + 0.927278995513916f, 0.259678006172180f, 0.927478015422821f, 0.259350210428238f, + 0.927676856517792f, 0.259022265672684f, 0.927875399589539f, 0.258694142103195f, + 0.928073644638062f, 0.258365899324417f, 0.928271710872650f, 0.258037507534027f, + 0.928469479084015f, 0.257708936929703f, 0.928667008876801f, 0.257380217313766f, + 0.928864300251007f, 0.257051378488541f, 0.929061353206635f, 0.256722360849380f, + 0.929258108139038f, 0.256393194198608f, 0.929454624652863f, 0.256063878536224f, + 0.929650902748108f, 0.255734413862228f, 0.929846942424774f, 0.255404800176620f, + 0.930042684078217f, 0.255075037479401f, 0.930238187313080f, 0.254745125770569f, + 0.930433452129364f, 0.254415065050125f, 0.930628478527069f, 0.254084855318069f, + 0.930823206901550f, 0.253754496574402f, 0.931017756462097f, 0.253423988819122f, + 0.931211948394775f, 0.253093332052231f, 0.931405961513519f, 0.252762526273727f, + 0.931599736213684f, 0.252431541681290f, 0.931793212890625f, 0.252100437879562f, + 0.931986451148987f, 0.251769185066223f, 0.932179391384125f, 0.251437783241272f, + 0.932372152805328f, 0.251106232404709f, 0.932564616203308f, 0.250774532556534f, + 0.932756841182709f, 0.250442683696747f, 0.932948768138886f, 0.250110685825348f, + 0.933140456676483f, 0.249778553843498f, 0.933331906795502f, 0.249446272850037f, + 0.933523118495941f, 0.249113827943802f, 0.933714091777802f, 0.248781248927116f, + 0.933904767036438f, 0.248448520898819f, 0.934095203876495f, 0.248115643858910f, + 0.934285342693329f, 0.247782632708550f, 0.934475243091583f, 0.247449472546577f, + 0.934664964675903f, 0.247116148471832f, 0.934854328632355f, 0.246782705187798f, + 0.935043513774872f, 0.246449097990990f, 0.935232400894165f, 0.246115356683731f, + 0.935421049594879f, 0.245781451463699f, 0.935609400272369f, 0.245447427034378f, + 0.935797572135925f, 0.245113238692284f, 0.935985386371613f, 0.244778916239738f, + 0.936173021793365f, 0.244444444775581f, 0.936360359191895f, 0.244109839200974f, + 0.936547517776489f, 0.243775084614754f, 0.936734318733215f, 0.243440181016922f, + 0.936920940876007f, 0.243105143308640f, 0.937107264995575f, 0.242769956588745f, + 0.937293350696564f, 0.242434620857239f, 0.937479138374329f, 0.242099151015282f, + 0.937664687633514f, 0.241763532161713f, 0.937849998474121f, 0.241427779197693f, + 0.938035070896149f, 0.241091892123222f, 0.938219845294952f, 0.240755841135979f, + 0.938404381275177f, 0.240419670939446f, 0.938588619232178f, 0.240083336830139f, + 0.938772618770599f, 0.239746883511543f, 0.938956379890442f, 0.239410281181335f, + 0.939139902591705f, 0.239073529839516f, 0.939323127269745f, 0.238736644387245f, + 0.939506113529205f, 0.238399609923363f, 0.939688861370087f, 0.238062441349030f, + 0.939871311187744f, 0.237725138664246f, 0.940053522586823f, 0.237387686967850f, + 0.940235435962677f, 0.237050101161003f, 0.940417110919952f, 0.236712381243706f, + 0.940598547458649f, 0.236374512314796f, 0.940779745578766f, 0.236036509275436f, + 0.940960645675659f, 0.235698372125626f, 0.941141307353973f, 0.235360085964203f, + 0.941321671009064f, 0.235021665692329f, 0.941501796245575f, 0.234683111310005f, + 0.941681683063507f, 0.234344407916069f, 0.941861271858215f, 0.234005570411682f, + 0.942040622234344f, 0.233666598796844f, 0.942219734191895f, 0.233327493071556f, + 0.942398548126221f, 0.232988253235817f, 0.942577123641968f, 0.232648864388466f, + 0.942755401134491f, 0.232309341430664f, 0.942933499813080f, 0.231969684362412f, + 0.943111240863800f, 0.231629893183708f, 0.943288803100586f, 0.231289967894554f, + 0.943466067314148f, 0.230949893593788f, 0.943643093109131f, 0.230609700083733f, + 0.943819820880890f, 0.230269357562065f, 0.943996310234070f, 0.229928880929947f, + 0.944172501564026f, 0.229588270187378f, 0.944348454475403f, 0.229247525334358f, + 0.944524168968201f, 0.228906646370888f, 0.944699645042419f, 0.228565633296967f, + 0.944874763488770f, 0.228224486112595f, 0.945049703121185f, 0.227883204817772f, + 0.945224344730377f, 0.227541789412498f, 0.945398747920990f, 0.227200239896774f, + 0.945572853088379f, 0.226858556270599f, 0.945746779441834f, 0.226516738533974f, + 0.945920348167419f, 0.226174786686897f, 0.946093678474426f, 0.225832715630531f, + 0.946266770362854f, 0.225490495562553f, 0.946439623832703f, 0.225148141384125f, + 0.946612179279327f, 0.224805667996407f, 0.946784436702728f, 0.224463045597076f, + 0.946956455707550f, 0.224120303988457f, 0.947128236293793f, 0.223777428269386f, + 0.947299718856812f, 0.223434418439865f, 0.947470963001251f, 0.223091274499893f, + 0.947641968727112f, 0.222748011350632f, 0.947812676429749f, 0.222404599189758f, + 0.947983145713806f, 0.222061067819595f, 0.948153316974640f, 0.221717402338982f, + 0.948323249816895f, 0.221373617649078f, 0.948492884635925f, 0.221029683947563f, + 0.948662281036377f, 0.220685631036758f, 0.948831439018250f, 0.220341444015503f, + 0.949000298976898f, 0.219997137784958f, 0.949168920516968f, 0.219652697443962f, + 0.949337244033813f, 0.219308122992516f, 0.949505329132080f, 0.218963414430618f, + 0.949673116207123f, 0.218618586659431f, 0.949840664863586f, 0.218273624777794f, + 0.950007975101471f, 0.217928543686867f, 0.950174987316132f, 0.217583328485489f, + 0.950341701507568f, 0.217237979173660f, 0.950508177280426f, 0.216892510652542f, + 0.950674414634705f, 0.216546908020973f, 0.950840353965759f, 0.216201186180115f, + 0.951006054878235f, 0.215855330228806f, 0.951171517372131f, 0.215509355068207f, + 0.951336681842804f, 0.215163245797157f, 0.951501548290253f, 0.214817002415657f, + 0.951666176319122f, 0.214470639824867f, 0.951830565929413f, 0.214124158024788f, + 0.951994657516479f, 0.213777542114258f, 0.952158451080322f, 0.213430806994438f, + 0.952322065830231f, 0.213083937764168f, 0.952485322952271f, 0.212736949324608f, + 0.952648401260376f, 0.212389841675758f, 0.952811121940613f, 0.212042599916458f, + 0.952973663806915f, 0.211695238947868f, 0.953135907649994f, 0.211347743868828f, + 0.953297853469849f, 0.211000129580498f, 0.953459560871124f, 0.210652396082878f, + 0.953620970249176f, 0.210304543375969f, 0.953782141208649f, 0.209956556558609f, + 0.953943073749542f, 0.209608450531960f, 0.954103708267212f, 0.209260210394859f, + 0.954264044761658f, 0.208911851048470f, 0.954424142837524f, 0.208563387393951f, + 0.954584002494812f, 0.208214774727821f, 0.954743564128876f, 0.207866057753563f, + 0.954902827739716f, 0.207517206668854f, 0.955061912536621f, 0.207168251276016f, + 0.955220639705658f, 0.206819161772728f, 0.955379128456116f, 0.206469938158989f, + 0.955537378787994f, 0.206120610237122f, 0.955695331096649f, 0.205771163105965f, + 0.955853044986725f, 0.205421581864357f, 0.956010460853577f, 0.205071896314621f, + 0.956167578697205f, 0.204722076654434f, 0.956324458122253f, 0.204372137784958f, + 0.956481099128723f, 0.204022079706192f, 0.956637442111969f, 0.203671902418137f, + 0.956793546676636f, 0.203321605920792f, 0.956949353218079f, 0.202971190214157f, + 0.957104861736298f, 0.202620655298233f, 0.957260131835938f, 0.202270001173019f, + 0.957415163516998f, 0.201919227838516f, 0.957569897174835f, 0.201568335294724f, + 0.957724332809448f, 0.201217323541641f, 0.957878530025482f, 0.200866192579269f, + 0.958032488822937f, 0.200514942407608f, 0.958186149597168f, 0.200163587927818f, + 0.958339512348175f, 0.199812099337578f, 0.958492636680603f, 0.199460506439209f, + 0.958645522594452f, 0.199108779430389f, 0.958798050880432f, 0.198756948113441f, + 0.958950400352478f, 0.198404997587204f, 0.959102451801300f, 0.198052927851677f, + 0.959254205226898f, 0.197700738906860f, 0.959405720233917f, 0.197348430752754f, + 0.959556937217712f, 0.196996018290520f, 0.959707856178284f, 0.196643486618996f, + 0.959858596324921f, 0.196290835738182f, 0.960008978843689f, 0.195938065648079f, + 0.960159122943878f, 0.195585191249847f, 0.960309028625488f, 0.195232197642326f, + 0.960458636283875f, 0.194879084825516f, 0.960607945919037f, 0.194525867700577f, + 0.960757017135620f, 0.194172516465187f, 0.960905790328979f, 0.193819075822830f, + 0.961054325103760f, 0.193465501070023f, 0.961202561855316f, 0.193111822009087f, + 0.961350560188293f, 0.192758023738861f, 0.961498260498047f, 0.192404121160507f, + 0.961645722389221f, 0.192050099372864f, 0.961792886257172f, 0.191695958375931f, + 0.961939752101898f, 0.191341713070869f, 0.962086379528046f, 0.190987363457680f, + 0.962232708930969f, 0.190632879734039f, 0.962378799915314f, 0.190278306603432f, + 0.962524592876434f, 0.189923599362373f, 0.962670147418976f, 0.189568802714348f, + 0.962815403938293f, 0.189213871955872f, 0.962960422039032f, 0.188858851790428f, + 0.963105142116547f, 0.188503712415695f, 0.963249564170837f, 0.188148453831673f, + 0.963393747806549f, 0.187793090939522f, 0.963537633419037f, 0.187437608838081f, + 0.963681280612946f, 0.187082037329674f, 0.963824629783630f, 0.186726331710815f, + 0.963967680931091f, 0.186370536684990f, 0.964110493659973f, 0.186014622449875f, + 0.964253067970276f, 0.185658603906631f, 0.964395284652710f, 0.185302466154099f, + 0.964537262916565f, 0.184946224093437f, 0.964679002761841f, 0.184589877724648f, + 0.964820444583893f, 0.184233412146568f, 0.964961588382721f, 0.183876842260361f, + 0.965102493762970f, 0.183520168066025f, 0.965243160724640f, 0.183163389563560f, + 0.965383470058441f, 0.182806491851807f, 0.965523540973663f, 0.182449504733086f, + 0.965663373470306f, 0.182092398405075f, 0.965802907943726f, 0.181735187768936f, + 0.965942144393921f, 0.181377857923508f, 0.966081082820892f, 0.181020438671112f, + 0.966219842433929f, 0.180662900209427f, 0.966358244419098f, 0.180305257439613f, + 0.966496407985687f, 0.179947525262833f, 0.966634273529053f, 0.179589673876762f, + 0.966771900653839f, 0.179231703281403f, 0.966909229755402f, 0.178873643279076f, + 0.967046260833740f, 0.178515478968620f, 0.967183053493500f, 0.178157210350037f, + 0.967319548130035f, 0.177798837423325f, 0.967455804347992f, 0.177440345287323f, + 0.967591762542725f, 0.177081763744354f, 0.967727422714233f, 0.176723077893257f, + 0.967862844467163f, 0.176364272832870f, 0.967997968196869f, 0.176005378365517f, + 0.968132853507996f, 0.175646379590034f, 0.968267440795898f, 0.175287276506424f, + 0.968401730060577f, 0.174928069114685f, 0.968535780906677f, 0.174568757414818f, + 0.968669533729553f, 0.174209341406822f, 0.968802988529205f, 0.173849821090698f, + 0.968936204910278f, 0.173490211367607f, 0.969069123268127f, 0.173130482435226f, + 0.969201743602753f, 0.172770664095879f, 0.969334125518799f, 0.172410741448402f, + 0.969466269016266f, 0.172050714492798f, 0.969598054885864f, 0.171690583229065f, + 0.969729602336884f, 0.171330362558365f, 0.969860911369324f, 0.170970037579536f, + 0.969991862773895f, 0.170609608292580f, 0.970122575759888f, 0.170249074697495f, + 0.970253050327301f, 0.169888436794281f, 0.970383226871490f, 0.169527709484100f, + 0.970513105392456f, 0.169166877865791f, 0.970642685890198f, 0.168805956840515f, + 0.970772027969360f, 0.168444931507111f, 0.970901072025299f, 0.168083801865578f, + 0.971029877662659f, 0.167722567915916f, 0.971158385276794f, 0.167361244559288f, + 0.971286594867706f, 0.166999831795692f, 0.971414566040039f, 0.166638299822807f, + 0.971542239189148f, 0.166276678442955f, 0.971669614315033f, 0.165914967656136f, + 0.971796751022339f, 0.165553152561188f, 0.971923589706421f, 0.165191248059273f, + 0.972050130367279f, 0.164829224348068f, 0.972176432609558f, 0.164467126131058f, + 0.972302436828613f, 0.164104923605919f, 0.972428143024445f, 0.163742616772652f, + 0.972553610801697f, 0.163380220532417f, 0.972678780555725f, 0.163017734885216f, + 0.972803652286530f, 0.162655144929886f, 0.972928285598755f, 0.162292465567589f, + 0.973052620887756f, 0.161929681897163f, 0.973176658153534f, 0.161566808819771f, + 0.973300457000732f, 0.161203846335411f, 0.973423957824707f, 0.160840779542923f, + 0.973547160625458f, 0.160477623343468f, 0.973670125007629f, 0.160114362835884f, + 0.973792791366577f, 0.159751012921333f, 0.973915159702301f, 0.159387573599815f, + 0.974037289619446f, 0.159024044871330f, 0.974159121513367f, 0.158660411834717f, + 0.974280655384064f, 0.158296689391136f, 0.974401950836182f, 0.157932877540588f, + 0.974522948265076f, 0.157568961381912f, 0.974643647670746f, 0.157204970717430f, + 0.974764108657837f, 0.156840875744820f, 0.974884271621704f, 0.156476691365242f, + 0.975004136562347f, 0.156112402677536f, 0.975123703479767f, 0.155748039484024f, + 0.975243031978607f, 0.155383571982384f, 0.975362062454224f, 0.155019029974937f, + 0.975480854511261f, 0.154654383659363f, 0.975599288940430f, 0.154289647936821f, + 0.975717484951019f, 0.153924822807312f, 0.975835442543030f, 0.153559908270836f, + 0.975953042507172f, 0.153194904327393f, 0.976070404052734f, 0.152829796075821f, + 0.976187527179718f, 0.152464613318443f, 0.976304292678833f, 0.152099341154099f, + 0.976420819759369f, 0.151733979582787f, 0.976537048816681f, 0.151368513703346f, + 0.976653039455414f, 0.151002973318100f, 0.976768672466278f, 0.150637343525887f, + 0.976884067058563f, 0.150271624326706f, 0.976999223232269f, 0.149905815720558f, + 0.977114021778107f, 0.149539917707443f, 0.977228581905365f, 0.149173930287361f, + 0.977342903614044f, 0.148807853460312f, 0.977456867694855f, 0.148441687226295f, + 0.977570593357086f, 0.148075446486473f, 0.977684020996094f, 0.147709101438522f, + 0.977797150611877f, 0.147342681884766f, 0.977910041809082f, 0.146976172924042f, + 0.978022634983063f, 0.146609574556351f, 0.978134930133820f, 0.146242901682854f, + 0.978246986865997f, 0.145876124501228f, 0.978358685970306f, 0.145509272813797f, + 0.978470146656036f, 0.145142331719399f, 0.978581368923187f, 0.144775316119194f, + 0.978692233562469f, 0.144408211112022f, 0.978802859783173f, 0.144041016697884f, + 0.978913187980652f, 0.143673732876778f, 0.979023277759552f, 0.143306359648705f, + 0.979133009910584f, 0.142938911914825f, 0.979242503643036f, 0.142571389675140f, + 0.979351758956909f, 0.142203763127327f, 0.979460656642914f, 0.141836062073708f, + 0.979569315910339f, 0.141468286514282f, 0.979677677154541f, 0.141100421547890f, + 0.979785740375519f, 0.140732467174530f, 0.979893565177917f, 0.140364438295364f, + 0.980001091957092f, 0.139996320009232f, 0.980108320713043f, 0.139628127217293f, + 0.980215251445770f, 0.139259845018387f, 0.980321943759918f, 0.138891488313675f, + 0.980428338050842f, 0.138523042201996f, 0.980534434318542f, 0.138154521584511f, + 0.980640232563019f, 0.137785911560059f, 0.980745792388916f, 0.137417227029800f, + 0.980851054191589f, 0.137048453092575f, 0.980956017971039f, 0.136679604649544f, + 0.981060683727264f, 0.136310681700706f, 0.981165111064911f, 0.135941669344902f, + 0.981269240379334f, 0.135572582483292f, 0.981373071670532f, 0.135203406214714f, + 0.981476604938507f, 0.134834155440331f, 0.981579899787903f, 0.134464830160141f, + 0.981682896614075f, 0.134095430374146f, 0.981785595417023f, 0.133725941181183f, + 0.981888055801392f, 0.133356377482414f, 0.981990158557892f, 0.132986739277840f, + 0.982092022895813f, 0.132617011666298f, 0.982193589210510f, 0.132247209548950f, + 0.982294917106628f, 0.131877332925797f, 0.982395887374878f, 0.131507381796837f, + 0.982496619224548f, 0.131137356162071f, 0.982597053050995f, 0.130767241120338f, + 0.982697248458862f, 0.130397051572800f, 0.982797086238861f, 0.130026802420616f, + 0.982896685600281f, 0.129656463861465f, 0.982995986938477f, 0.129286035895348f, + 0.983094990253448f, 0.128915548324585f, 0.983193755149841f, 0.128544986248016f, + 0.983292162418365f, 0.128174334764481f, 0.983390331268311f, 0.127803623676300f, + 0.983488261699677f, 0.127432823181152f, 0.983585834503174f, 0.127061963081360f, + 0.983683168888092f, 0.126691013574600f, 0.983780145645142f, 0.126320004463196f, + 0.983876943588257f, 0.125948905944824f, 0.983973383903503f, 0.125577747821808f, + 0.984069526195526f, 0.125206500291824f, 0.984165430068970f, 0.124835193157196f, + 0.984261035919189f, 0.124463804066181f, 0.984356343746185f, 0.124092340469360f, + 0.984451413154602f, 0.123720809817314f, 0.984546124935150f, 0.123349204659462f, + 0.984640598297119f, 0.122977524995804f, 0.984734773635864f, 0.122605770826340f, + 0.984828710556030f, 0.122233949601650f, 0.984922289848328f, 0.121862053871155f, + 0.985015630722046f, 0.121490091085434f, 0.985108673572540f, 0.121118053793907f, + 0.985201418399811f, 0.120745941996574f, 0.985293865203857f, 0.120373763144016f, + 0.985386073589325f, 0.120001509785652f, 0.985477983951569f, 0.119629189372063f, + 0.985569596290588f, 0.119256794452667f, 0.985660910606384f, 0.118884332478046f, + 0.985751926898956f, 0.118511803448200f, 0.985842704772949f, 0.118139199912548f, + 0.985933184623718f, 0.117766529321671f, 0.986023366451263f, 0.117393791675568f, + 0.986113250255585f, 0.117020979523659f, 0.986202836036682f, 0.116648100316525f, + 0.986292183399200f, 0.116275154054165f, 0.986381232738495f, 0.115902140736580f, + 0.986469984054565f, 0.115529052913189f, 0.986558437347412f, 0.115155905485153f, + 0.986646652221680f, 0.114782683551311f, 0.986734509468079f, 0.114409394562244f, + 0.986822128295898f, 0.114036038517952f, 0.986909449100494f, 0.113662622869015f, + 0.986996471881866f, 0.113289132714272f, 0.987083256244659f, 0.112915575504303f, + 0.987169682979584f, 0.112541958689690f, 0.987255871295929f, 0.112168267369270f, + 0.987341761589050f, 0.111794516444206f, 0.987427353858948f, 0.111420698463917f, + 0.987512648105621f, 0.111046813428402f, 0.987597703933716f, 0.110672861337662f, + 0.987682461738586f, 0.110298842191696f, 0.987766921520233f, 0.109924763441086f, + 0.987851083278656f, 0.109550617635250f, 0.987934947013855f, 0.109176412224770f, + 0.988018512725830f, 0.108802139759064f, 0.988101840019226f, 0.108427800238132f, + 0.988184869289398f, 0.108053401112556f, 0.988267600536346f, 0.107678934931755f, + 0.988350033760071f, 0.107304409146309f, 0.988432228565216f, 0.106929816305637f, + 0.988514065742493f, 0.106555156409740f, 0.988595664501190f, 0.106180444359779f, + 0.988676965236664f, 0.105805665254593f, 0.988757967948914f, 0.105430819094181f, + 0.988838672637939f, 0.105055920779705f, 0.988919138908386f, 0.104680955410004f, + 0.988999247550964f, 0.104305922985077f, 0.989079117774963f, 0.103930838406086f, + 0.989158689975739f, 0.103555686771870f, 0.989237964153290f, 0.103180475533009f, + 0.989316940307617f, 0.102805204689503f, 0.989395678043365f, 0.102429874241352f, + 0.989474058151245f, 0.102054484188557f, 0.989552199840546f, 0.101679034531116f, + 0.989630043506622f, 0.101303517818451f, 0.989707589149475f, 0.100927948951721f, + 0.989784896373749f, 0.100552320480347f, 0.989861845970154f, 0.100176624953747f, + 0.989938557147980f, 0.099800877273083f, 0.990014970302582f, 0.099425069987774f, + 0.990091085433960f, 0.099049203097820f, 0.990166902542114f, 0.098673284053802f, + 0.990242421627045f, 0.098297297954559f, 0.990317702293396f, 0.097921259701252f, + 0.990392625331879f, 0.097545161843300f, 0.990467309951782f, 0.097169004380703f, + 0.990541696548462f, 0.096792794764042f, 0.990615785121918f, 0.096416525542736f, + 0.990689575672150f, 0.096040196716785f, 0.990763127803802f, 0.095663815736771f, + 0.990836322307587f, 0.095287375152111f, 0.990909278392792f, 0.094910882413387f, + 0.990981936454773f, 0.094534330070019f, 0.991054296493530f, 0.094157725572586f, + 0.991126358509064f, 0.093781061470509f, 0.991198182106018f, 0.093404345214367f, + 0.991269648075104f, 0.093027576804161f, 0.991340875625610f, 0.092650748789310f, + 0.991411805152893f, 0.092273868620396f, 0.991482377052307f, 0.091896936297417f, + 0.991552770137787f, 0.091519944369793f, 0.991622805595398f, 0.091142900288105f, + 0.991692543029785f, 0.090765804052353f, 0.991762042045593f, 0.090388655662537f, + 0.991831183433533f, 0.090011447668076f, 0.991900086402893f, 0.089634194970131f, + 0.991968691349030f, 0.089256882667542f, 0.992036998271942f, 0.088879525661469f, + 0.992105066776276f, 0.088502109050751f, 0.992172777652740f, 0.088124647736549f, + 0.992240250110626f, 0.087747126817703f, 0.992307364940643f, 0.087369553744793f, + 0.992374241352081f, 0.086991935968399f, 0.992440819740295f, 0.086614266037941f, + 0.992507100105286f, 0.086236543953419f, 0.992573142051697f, 0.085858769714832f, + 0.992638826370239f, 0.085480943322182f, 0.992704212665558f, 0.085103072226048f, + 0.992769360542297f, 0.084725148975849f, 0.992834210395813f, 0.084347173571587f, + 0.992898762226105f, 0.083969146013260f, 0.992963016033173f, 0.083591073751450f, + 0.993026971817017f, 0.083212949335575f, 0.993090689182281f, 0.082834780216217f, + 0.993154048919678f, 0.082456558942795f, 0.993217170238495f, 0.082078292965889f, + 0.993279933929443f, 0.081699974834919f, 0.993342459201813f, 0.081321612000465f, + 0.993404686450958f, 0.080943197011948f, 0.993466615676880f, 0.080564737319946f, + 0.993528306484222f, 0.080186225473881f, 0.993589639663696f, 0.079807676374912f, + 0.993650734424591f, 0.079429075121880f, 0.993711471557617f, 0.079050421714783f, + 0.993771970272064f, 0.078671731054783f, 0.993832170963287f, 0.078292988240719f, + 0.993892073631287f, 0.077914200723171f, 0.993951678276062f, 0.077535368502140f, + 0.994010984897614f, 0.077156484127045f, 0.994070053100586f, 0.076777562499046f, + 0.994128763675690f, 0.076398596167564f, 0.994187235832214f, 0.076019577682018f, + 0.994245409965515f, 0.075640521943569f, 0.994303286075592f, 0.075261414051056f, + 0.994360864162445f, 0.074882268905640f, 0.994418144226074f, 0.074503071606159f, + 0.994475126266479f, 0.074123837053776f, 0.994531810283661f, 0.073744557797909f, + 0.994588255882263f, 0.073365233838558f, 0.994644403457642f, 0.072985872626305f, + 0.994700193405151f, 0.072606459259987f, 0.994755744934082f, 0.072227008640766f, + 0.994810998439789f, 0.071847513318062f, 0.994865953922272f, 0.071467980742455f, + 0.994920611381531f, 0.071088403463364f, 0.994975030422211f, 0.070708781480789f, + 0.995029091835022f, 0.070329122245312f, 0.995082914829254f, 0.069949418306351f, + 0.995136380195618f, 0.069569669663906f, 0.995189607143402f, 0.069189883768559f, + 0.995242536067963f, 0.068810060620308f, 0.995295166969299f, 0.068430192768574f, + 0.995347499847412f, 0.068050287663937f, 0.995399534702301f, 0.067670337855816f, + 0.995451331138611f, 0.067290350794792f, 0.995502769947052f, 0.066910326480865f, + 0.995553970336914f, 0.066530264914036f, 0.995604813098907f, 0.066150158643723f, + 0.995655417442322f, 0.065770015120506f, 0.995705723762512f, 0.065389834344387f, + 0.995755732059479f, 0.065009608864784f, 0.995805442333221f, 0.064629353582859f, + 0.995854854583740f, 0.064249053597450f, 0.995904028415680f, 0.063868723809719f, + 0.995952844619751f, 0.063488349318504f, 0.996001422405243f, 0.063107937574387f, + 0.996049642562866f, 0.062727488577366f, 0.996097624301910f, 0.062347009778023f, + 0.996145308017731f, 0.061966486275196f, 0.996192693710327f, 0.061585929244757f, + 0.996239781379700f, 0.061205338686705f, 0.996286571025848f, 0.060824707150459f, + 0.996333062648773f, 0.060444042086601f, 0.996379256248474f, 0.060063343495131f, + 0.996425211429596f, 0.059682607650757f, 0.996470808982849f, 0.059301838278770f, + 0.996516168117523f, 0.058921031653881f, 0.996561229228973f, 0.058540191501379f, + 0.996605992317200f, 0.058159314095974f, 0.996650457382202f, 0.057778406888247f, + 0.996694624423981f, 0.057397462427616f, 0.996738493442535f, 0.057016488164663f, + 0.996782064437866f, 0.056635476648808f, 0.996825337409973f, 0.056254431605339f, + 0.996868371963501f, 0.055873356759548f, 0.996911048889160f, 0.055492244660854f, + 0.996953487396240f, 0.055111102759838f, 0.996995627880096f, 0.054729927331209f, + 0.997037410736084f, 0.054348722100258f, 0.997078955173492f, 0.053967483341694f, + 0.997120201587677f, 0.053586211055517f, 0.997161149978638f, 0.053204908967018f, + 0.997201859951019f, 0.052823577076197f, 0.997242212295532f, 0.052442211657763f, + 0.997282266616821f, 0.052060816437006f, 0.997322082519531f, 0.051679391413927f, + 0.997361540794373f, 0.051297932863235f, 0.997400760650635f, 0.050916448235512f, + 0.997439682483673f, 0.050534930080175f, 0.997478306293488f, 0.050153385847807f, + 0.997516572475433f, 0.049771808087826f, 0.997554600238800f, 0.049390204250813f, + 0.997592389583588f, 0.049008570611477f, 0.997629821300507f, 0.048626907169819f, + 0.997666954994202f, 0.048245213925838f, 0.997703790664673f, 0.047863494604826f, + 0.997740387916565f, 0.047481749206781f, 0.997776627540588f, 0.047099970281124f, + 0.997812628746033f, 0.046718169003725f, 0.997848331928253f, 0.046336337924004f, + 0.997883677482605f, 0.045954477041960f, 0.997918784618378f, 0.045572593808174f, + 0.997953593730927f, 0.045190680772066f, 0.997988104820251f, 0.044808741658926f, + 0.998022377490997f, 0.044426776468754f, 0.998056292533875f, 0.044044785201550f, + 0.998089909553528f, 0.043662767857313f, 0.998123228549957f, 0.043280724436045f, + 0.998156309127808f, 0.042898654937744f, 0.998189091682434f, 0.042516563087702f, + 0.998221516609192f, 0.042134445160627f, 0.998253703117371f, 0.041752301156521f, + 0.998285591602325f, 0.041370131075382f, 0.998317182064056f, 0.040987938642502f, + 0.998348474502563f, 0.040605723857880f, 0.998379468917847f, 0.040223482996225f, + 0.998410165309906f, 0.039841219782829f, 0.998440563678741f, 0.039458930492401f, + 0.998470664024353f, 0.039076622575521f, 0.998500525951386f, 0.038694288581610f, + 0.998530030250549f, 0.038311932235956f, 0.998559296131134f, 0.037929553538561f, + 0.998588204383850f, 0.037547148764133f, 0.998616874217987f, 0.037164725363255f, + 0.998645246028900f, 0.036782283335924f, 0.998673319816589f, 0.036399815231562f, + 0.998701035976410f, 0.036017324775457f, 0.998728513717651f, 0.035634815692902f, + 0.998755753040314f, 0.035252287983894f, 0.998782634735107f, 0.034869734197855f, + 0.998809218406677f, 0.034487165510654f, 0.998835504055023f, 0.034104570746422f, + 0.998861551284790f, 0.033721961081028f, 0.998887240886688f, 0.033339329063892f, + 0.998912692070007f, 0.032956674695015f, 0.998937785625458f, 0.032574005424976f, + 0.998962640762329f, 0.032191313803196f, 0.998987197875977f, 0.031808607280254f, + 0.999011456966400f, 0.031425878405571f, 0.999035418033600f, 0.031043132767081f, + 0.999059081077576f, 0.030660368502140f, 0.999082446098328f, 0.030277585610747f, + 0.999105513095856f, 0.029894785955548f, 0.999128282070160f, 0.029511967673898f, + 0.999150753021240f, 0.029129132628441f, 0.999172985553741f, 0.028746278956532f, + 0.999194860458374f, 0.028363410383463f, 0.999216496944427f, 0.027980525046587f, + 0.999237775802612f, 0.027597622945905f, 0.999258816242218f, 0.027214704081416f, + 0.999279558658600f, 0.026831768453121f, 0.999299943447113f, 0.026448817923665f, + 0.999320089817047f, 0.026065852493048f, 0.999339938163757f, 0.025682870298624f, + 0.999359488487244f, 0.025299875065684f, 0.999378740787506f, 0.024916863068938f, + 0.999397754669189f, 0.024533838033676f, 0.999416410923004f, 0.024150796234608f, + 0.999434769153595f, 0.023767741397023f, 0.999452829360962f, 0.023384673520923f, + 0.999470651149750f, 0.023001590743661f, 0.999488115310669f, 0.022618494927883f, + 0.999505341053009f, 0.022235386073589f, 0.999522268772125f, 0.021852264180779f, + 0.999538838863373f, 0.021469129249454f, 0.999555170536041f, 0.021085981279612f, + 0.999571204185486f, 0.020702820271254f, 0.999586939811707f, 0.020319648087025f, + 0.999602377414703f, 0.019936462864280f, 0.999617516994476f, 0.019553268328309f, + 0.999632358551025f, 0.019170060753822f, 0.999646902084351f, 0.018786842003465f, + 0.999661207199097f, 0.018403612077236f, 0.999675154685974f, 0.018020370975137f, + 0.999688863754272f, 0.017637118697166f, 0.999702215194702f, 0.017253857105970f, + 0.999715328216553f, 0.016870586201549f, 0.999728083610535f, 0.016487304121256f, + 0.999740600585938f, 0.016104012727737f, 0.999752819538116f, 0.015720712020993f, + 0.999764680862427f, 0.015337402001023f, 0.999776303768158f, 0.014954082667828f, + 0.999787628650665f, 0.014570754021406f, 0.999798655509949f, 0.014187417924404f, + 0.999809384346008f, 0.013804072514176f, 0.999819874763489f, 0.013420719653368f, + 0.999830007553101f, 0.013037359341979f, 0.999839842319489f, 0.012653990648687f, + 0.999849438667297f, 0.012270614504814f, 0.999858677387238f, 0.011887230910361f, + 0.999867618083954f, 0.011503840796649f, 0.999876320362091f, 0.011120444163680f, + 0.999884724617004f, 0.010737040080130f, 0.999892771244049f, 0.010353630408645f, + 0.999900579452515f, 0.009970214217901f, 0.999908089637756f, 0.009586792439222f, + 0.999915301799774f, 0.009203365072608f, 0.999922215938568f, 0.008819932118058f, + 0.999928832054138f, 0.008436493575573f, 0.999935150146484f, 0.008053051307797f, + 0.999941170215607f, 0.007669602986425f, 0.999946892261505f, 0.007286150939763f, + 0.999952375888824f, 0.006902694236487f, 0.999957501888275f, 0.006519233807921f, + 0.999962329864502f, 0.006135769188404f, 0.999966919422150f, 0.005752300843596f, + 0.999971151351929f, 0.005368829704821f, 0.999975144863129f, 0.004985354840755f, + 0.999978840351105f, 0.004601877182722f, 0.999982178211212f, 0.004218397196382f, + 0.999985277652740f, 0.003834914416075f, 0.999988079071045f, 0.003451429307461f, + 0.999990582466125f, 0.003067942336202f, 0.999992787837982f, 0.002684453502297f, + 0.999994695186615f, 0.002300963038579f, 0.999996304512024f, 0.001917471294291f, + 0.999997675418854f, 0.001533978385851f, 0.999998688697815f, 0.001150484546088f, + 0.999999403953552f, 0.000766990066040f, 0.999999880790710f, 0.000383495149435f, + 1.000000000000000f, 0.000000000000023f, 0.999999880790710f, -0.000383495149435f, + 0.999999403953552f, -0.000766990066040f, 0.999998688697815f, -0.001150484546088f, + 0.999997675418854f, -0.001533978385851f, 0.999996304512024f, -0.001917471294291f, + 0.999994695186615f, -0.002300963038579f, 0.999992787837982f, -0.002684453502297f, + 0.999990582466125f, -0.003067942336202f, 0.999988079071045f, -0.003451429307461f, + 0.999985277652740f, -0.003834914416075f, 0.999982178211212f, -0.004218397196382f, + 0.999978840351105f, -0.004601877182722f, 0.999975144863129f, -0.004985354840755f, + 0.999971151351929f, -0.005368829704821f, 0.999966919422150f, -0.005752300843596f, + 0.999962329864502f, -0.006135769188404f, 0.999957501888275f, -0.006519233807921f, + 0.999952375888824f, -0.006902694236487f, 0.999946892261505f, -0.007286150939763f, + 0.999941170215607f, -0.007669602986425f, 0.999935150146484f, -0.008053051307797f, + 0.999928832054138f, -0.008436493575573f, 0.999922215938568f, -0.008819932118058f, + 0.999915301799774f, -0.009203365072608f, 0.999908089637756f, -0.009586792439222f, + 0.999900579452515f, -0.009970214217901f, 0.999892771244049f, -0.010353630408645f, + 0.999884724617004f, -0.010737040080130f, 0.999876320362091f, -0.011120444163680f, + 0.999867618083954f, -0.011503840796649f, 0.999858677387238f, -0.011887230910361f, + 0.999849438667297f, -0.012270614504814f, 0.999839842319489f, -0.012653990648687f, + 0.999830007553101f, -0.013037359341979f, 0.999819874763489f, -0.013420719653368f, + 0.999809384346008f, -0.013804072514176f, 0.999798655509949f, -0.014187417924404f, + 0.999787628650665f, -0.014570754021406f, 0.999776303768158f, -0.014954082667828f, + 0.999764680862427f, -0.015337402001023f, 0.999752819538116f, -0.015720712020993f, + 0.999740600585938f, -0.016104012727737f, 0.999728083610535f, -0.016487304121256f, + 0.999715328216553f, -0.016870586201549f, 0.999702215194702f, -0.017253857105970f, + 0.999688863754272f, -0.017637118697166f, 0.999675154685974f, -0.018020370975137f, + 0.999661207199097f, -0.018403612077236f, 0.999646902084351f, -0.018786842003465f, + 0.999632358551025f, -0.019170060753822f, 0.999617516994476f, -0.019553268328309f, + 0.999602377414703f, -0.019936462864280f, 0.999586939811707f, -0.020319648087025f, + 0.999571204185486f, -0.020702820271254f, 0.999555170536041f, -0.021085981279612f, + 0.999538838863373f, -0.021469129249454f, 0.999522268772125f, -0.021852264180779f, + 0.999505341053009f, -0.022235386073589f, 0.999488115310669f, -0.022618494927883f, + 0.999470651149750f, -0.023001590743661f, 0.999452829360962f, -0.023384673520923f, + 0.999434769153595f, -0.023767741397023f, 0.999416410923004f, -0.024150796234608f, + 0.999397754669189f, -0.024533838033676f, 0.999378740787506f, -0.024916863068938f, + 0.999359488487244f, -0.025299875065684f, 0.999339938163757f, -0.025682870298624f, + 0.999320089817047f, -0.026065852493048f, 0.999299943447113f, -0.026448817923665f, + 0.999279558658600f, -0.026831768453121f, 0.999258816242218f, -0.027214704081416f, + 0.999237775802612f, -0.027597622945905f, 0.999216496944427f, -0.027980525046587f, + 0.999194860458374f, -0.028363410383463f, 0.999172985553741f, -0.028746278956532f, + 0.999150753021240f, -0.029129132628441f, 0.999128282070160f, -0.029511967673898f, + 0.999105513095856f, -0.029894785955548f, 0.999082446098328f, -0.030277585610747f, + 0.999059081077576f, -0.030660368502140f, 0.999035418033600f, -0.031043132767081f, + 0.999011456966400f, -0.031425878405571f, 0.998987197875977f, -0.031808607280254f, + 0.998962640762329f, -0.032191313803196f, 0.998937785625458f, -0.032574005424976f, + 0.998912692070007f, -0.032956674695015f, 0.998887240886688f, -0.033339329063892f, + 0.998861551284790f, -0.033721961081028f, 0.998835504055023f, -0.034104570746422f, + 0.998809218406677f, -0.034487165510654f, 0.998782634735107f, -0.034869734197855f, + 0.998755753040314f, -0.035252287983894f, 0.998728513717651f, -0.035634815692902f, + 0.998701035976410f, -0.036017324775457f, 0.998673319816589f, -0.036399815231562f, + 0.998645246028900f, -0.036782283335924f, 0.998616874217987f, -0.037164725363255f, + 0.998588204383850f, -0.037547148764133f, 0.998559296131134f, -0.037929553538561f, + 0.998530030250549f, -0.038311932235956f, 0.998500525951386f, -0.038694288581610f, + 0.998470664024353f, -0.039076622575521f, 0.998440563678741f, -0.039458930492401f, + 0.998410165309906f, -0.039841219782829f, 0.998379468917847f, -0.040223482996225f, + 0.998348474502563f, -0.040605723857880f, 0.998317182064056f, -0.040987938642502f, + 0.998285591602325f, -0.041370131075382f, 0.998253703117371f, -0.041752301156521f, + 0.998221516609192f, -0.042134445160627f, 0.998189091682434f, -0.042516563087702f, + 0.998156309127808f, -0.042898654937744f, 0.998123228549957f, -0.043280724436045f, + 0.998089909553528f, -0.043662767857313f, 0.998056292533875f, -0.044044785201550f, + 0.998022377490997f, -0.044426776468754f, 0.997988104820251f, -0.044808741658926f, + 0.997953593730927f, -0.045190680772066f, 0.997918784618378f, -0.045572593808174f, + 0.997883677482605f, -0.045954477041960f, 0.997848331928253f, -0.046336337924004f, + 0.997812628746033f, -0.046718169003725f, 0.997776627540588f, -0.047099970281124f, + 0.997740387916565f, -0.047481749206781f, 0.997703790664673f, -0.047863494604826f, + 0.997666954994202f, -0.048245213925838f, 0.997629821300507f, -0.048626907169819f, + 0.997592389583588f, -0.049008570611477f, 0.997554600238800f, -0.049390204250813f, + 0.997516572475433f, -0.049771808087826f, 0.997478306293488f, -0.050153385847807f, + 0.997439682483673f, -0.050534930080175f, 0.997400760650635f, -0.050916448235512f, + 0.997361540794373f, -0.051297932863235f, 0.997322082519531f, -0.051679391413927f, + 0.997282266616821f, -0.052060816437006f, 0.997242212295532f, -0.052442211657763f, + 0.997201859951019f, -0.052823577076197f, 0.997161149978638f, -0.053204908967018f, + 0.997120201587677f, -0.053586211055517f, 0.997078955173492f, -0.053967483341694f, + 0.997037410736084f, -0.054348722100258f, 0.996995627880096f, -0.054729927331209f, + 0.996953487396240f, -0.055111102759838f, 0.996911048889160f, -0.055492244660854f, + 0.996868371963501f, -0.055873356759548f, 0.996825337409973f, -0.056254431605339f, + 0.996782064437866f, -0.056635476648808f, 0.996738493442535f, -0.057016488164663f, + 0.996694624423981f, -0.057397462427616f, 0.996650457382202f, -0.057778406888247f, + 0.996605992317200f, -0.058159314095974f, 0.996561229228973f, -0.058540191501379f, + 0.996516168117523f, -0.058921031653881f, 0.996470808982849f, -0.059301838278770f, + 0.996425211429596f, -0.059682607650757f, 0.996379256248474f, -0.060063343495131f, + 0.996333062648773f, -0.060444042086601f, 0.996286571025848f, -0.060824707150459f, + 0.996239781379700f, -0.061205338686705f, 0.996192693710327f, -0.061585929244757f, + 0.996145308017731f, -0.061966486275196f, 0.996097624301910f, -0.062347009778023f, + 0.996049642562866f, -0.062727488577366f, 0.996001422405243f, -0.063107937574387f, + 0.995952844619751f, -0.063488349318504f, 0.995904028415680f, -0.063868723809719f, + 0.995854854583740f, -0.064249053597450f, 0.995805442333221f, -0.064629353582859f, + 0.995755732059479f, -0.065009608864784f, 0.995705723762512f, -0.065389834344387f, + 0.995655417442322f, -0.065770015120506f, 0.995604813098907f, -0.066150158643723f, + 0.995553970336914f, -0.066530264914036f, 0.995502769947052f, -0.066910326480865f, + 0.995451331138611f, -0.067290350794792f, 0.995399534702301f, -0.067670337855816f, + 0.995347499847412f, -0.068050287663937f, 0.995295166969299f, -0.068430192768574f, + 0.995242536067963f, -0.068810060620308f, 0.995189607143402f, -0.069189883768559f, + 0.995136380195618f, -0.069569669663906f, 0.995082914829254f, -0.069949418306351f, + 0.995029091835022f, -0.070329122245312f, 0.994975030422211f, -0.070708781480789f, + 0.994920611381531f, -0.071088403463364f, 0.994865953922272f, -0.071467980742455f, + 0.994810998439789f, -0.071847513318062f, 0.994755744934082f, -0.072227008640766f, + 0.994700193405151f, -0.072606459259987f, 0.994644403457642f, -0.072985872626305f, + 0.994588255882263f, -0.073365233838558f, 0.994531810283661f, -0.073744557797909f, + 0.994475126266479f, -0.074123837053776f, 0.994418144226074f, -0.074503071606159f, + 0.994360864162445f, -0.074882268905640f, 0.994303286075592f, -0.075261414051056f, + 0.994245409965515f, -0.075640521943569f, 0.994187235832214f, -0.076019577682018f, + 0.994128763675690f, -0.076398596167564f, 0.994070053100586f, -0.076777562499046f, + 0.994010984897614f, -0.077156484127045f, 0.993951678276062f, -0.077535368502140f, + 0.993892073631287f, -0.077914200723171f, 0.993832170963287f, -0.078292988240719f, + 0.993771970272064f, -0.078671731054783f, 0.993711471557617f, -0.079050421714783f, + 0.993650734424591f, -0.079429075121880f, 0.993589639663696f, -0.079807676374912f, + 0.993528306484222f, -0.080186225473881f, 0.993466615676880f, -0.080564737319946f, + 0.993404686450958f, -0.080943197011948f, 0.993342459201813f, -0.081321612000465f, + 0.993279933929443f, -0.081699974834919f, 0.993217170238495f, -0.082078292965889f, + 0.993154048919678f, -0.082456558942795f, 0.993090689182281f, -0.082834780216217f, + 0.993026971817017f, -0.083212949335575f, 0.992963016033173f, -0.083591073751450f, + 0.992898762226105f, -0.083969146013260f, 0.992834210395813f, -0.084347173571587f, + 0.992769360542297f, -0.084725148975849f, 0.992704212665558f, -0.085103072226048f, + 0.992638826370239f, -0.085480943322182f, 0.992573142051697f, -0.085858769714832f, + 0.992507100105286f, -0.086236543953419f, 0.992440819740295f, -0.086614266037941f, + 0.992374241352081f, -0.086991935968399f, 0.992307364940643f, -0.087369553744793f, + 0.992240250110626f, -0.087747126817703f, 0.992172777652740f, -0.088124647736549f, + 0.992105066776276f, -0.088502109050751f, 0.992036998271942f, -0.088879525661469f, + 0.991968691349030f, -0.089256882667542f, 0.991900086402893f, -0.089634194970131f, + 0.991831183433533f, -0.090011447668076f, 0.991762042045593f, -0.090388655662537f, + 0.991692543029785f, -0.090765804052353f, 0.991622805595398f, -0.091142900288105f, + 0.991552770137787f, -0.091519944369793f, 0.991482377052307f, -0.091896936297417f, + 0.991411805152893f, -0.092273868620396f, 0.991340875625610f, -0.092650748789310f, + 0.991269648075104f, -0.093027576804161f, 0.991198182106018f, -0.093404345214367f, + 0.991126358509064f, -0.093781061470509f, 0.991054296493530f, -0.094157725572586f, + 0.990981936454773f, -0.094534330070019f, 0.990909278392792f, -0.094910882413387f, + 0.990836322307587f, -0.095287375152111f, 0.990763127803802f, -0.095663815736771f, + 0.990689575672150f, -0.096040196716785f, 0.990615785121918f, -0.096416525542736f, + 0.990541696548462f, -0.096792794764042f, 0.990467309951782f, -0.097169004380703f, + 0.990392625331879f, -0.097545161843300f, 0.990317702293396f, -0.097921259701252f, + 0.990242421627045f, -0.098297297954559f, 0.990166902542114f, -0.098673284053802f, + 0.990091085433960f, -0.099049203097820f, 0.990014970302582f, -0.099425069987774f, + 0.989938557147980f, -0.099800877273083f, 0.989861845970154f, -0.100176624953747f, + 0.989784896373749f, -0.100552320480347f, 0.989707589149475f, -0.100927948951721f, + 0.989630043506622f, -0.101303517818451f, 0.989552199840546f, -0.101679034531116f, + 0.989474058151245f, -0.102054484188557f, 0.989395678043365f, -0.102429874241352f, + 0.989316940307617f, -0.102805204689503f, 0.989237964153290f, -0.103180475533009f, + 0.989158689975739f, -0.103555686771870f, 0.989079117774963f, -0.103930838406086f, + 0.988999247550964f, -0.104305922985077f, 0.988919138908386f, -0.104680955410004f, + 0.988838672637939f, -0.105055920779705f, 0.988757967948914f, -0.105430819094181f, + 0.988676965236664f, -0.105805665254593f, 0.988595664501190f, -0.106180444359779f, + 0.988514065742493f, -0.106555156409740f, 0.988432228565216f, -0.106929816305637f, + 0.988350033760071f, -0.107304409146309f, 0.988267600536346f, -0.107678934931755f, + 0.988184869289398f, -0.108053401112556f, 0.988101840019226f, -0.108427800238132f, + 0.988018512725830f, -0.108802139759064f, 0.987934947013855f, -0.109176412224770f, + 0.987851083278656f, -0.109550617635250f, 0.987766921520233f, -0.109924763441086f, + 0.987682461738586f, -0.110298842191696f, 0.987597703933716f, -0.110672861337662f, + 0.987512648105621f, -0.111046813428402f, 0.987427353858948f, -0.111420698463917f, + 0.987341761589050f, -0.111794516444206f, 0.987255871295929f, -0.112168267369270f, + 0.987169682979584f, -0.112541958689690f, 0.987083256244659f, -0.112915575504303f, + 0.986996471881866f, -0.113289132714272f, 0.986909449100494f, -0.113662622869015f, + 0.986822128295898f, -0.114036038517952f, 0.986734509468079f, -0.114409394562244f, + 0.986646652221680f, -0.114782683551311f, 0.986558437347412f, -0.115155905485153f, + 0.986469984054565f, -0.115529052913189f, 0.986381232738495f, -0.115902140736580f, + 0.986292183399200f, -0.116275154054165f, 0.986202836036682f, -0.116648100316525f, + 0.986113250255585f, -0.117020979523659f, 0.986023366451263f, -0.117393791675568f, + 0.985933184623718f, -0.117766529321671f, 0.985842704772949f, -0.118139199912548f, + 0.985751926898956f, -0.118511803448200f, 0.985660910606384f, -0.118884332478046f, + 0.985569596290588f, -0.119256794452667f, 0.985477983951569f, -0.119629189372063f, + 0.985386073589325f, -0.120001509785652f, 0.985293865203857f, -0.120373763144016f, + 0.985201418399811f, -0.120745941996574f, 0.985108673572540f, -0.121118053793907f, + 0.985015630722046f, -0.121490091085434f, 0.984922289848328f, -0.121862053871155f, + 0.984828710556030f, -0.122233949601650f, 0.984734773635864f, -0.122605770826340f, + 0.984640598297119f, -0.122977524995804f, 0.984546124935150f, -0.123349204659462f, + 0.984451413154602f, -0.123720809817314f, 0.984356343746185f, -0.124092340469360f, + 0.984261035919189f, -0.124463804066181f, 0.984165430068970f, -0.124835193157196f, + 0.984069526195526f, -0.125206500291824f, 0.983973383903503f, -0.125577747821808f, + 0.983876943588257f, -0.125948905944824f, 0.983780145645142f, -0.126320004463196f, + 0.983683168888092f, -0.126691013574600f, 0.983585834503174f, -0.127061963081360f, + 0.983488261699677f, -0.127432823181152f, 0.983390331268311f, -0.127803623676300f, + 0.983292162418365f, -0.128174334764481f, 0.983193755149841f, -0.128544986248016f, + 0.983094990253448f, -0.128915548324585f, 0.982995986938477f, -0.129286035895348f, + 0.982896685600281f, -0.129656463861465f, 0.982797086238861f, -0.130026802420616f, + 0.982697248458862f, -0.130397051572800f, 0.982597053050995f, -0.130767241120338f, + 0.982496619224548f, -0.131137356162071f, 0.982395887374878f, -0.131507381796837f, + 0.982294917106628f, -0.131877332925797f, 0.982193589210510f, -0.132247209548950f, + 0.982092022895813f, -0.132617011666298f, 0.981990158557892f, -0.132986739277840f, + 0.981888055801392f, -0.133356377482414f, 0.981785595417023f, -0.133725941181183f, + 0.981682896614075f, -0.134095430374146f, 0.981579899787903f, -0.134464830160141f, + 0.981476604938507f, -0.134834155440331f, 0.981373071670532f, -0.135203406214714f, + 0.981269240379334f, -0.135572582483292f, 0.981165111064911f, -0.135941669344902f, + 0.981060683727264f, -0.136310681700706f, 0.980956017971039f, -0.136679604649544f, + 0.980851054191589f, -0.137048453092575f, 0.980745792388916f, -0.137417227029800f, + 0.980640232563019f, -0.137785911560059f, 0.980534434318542f, -0.138154521584511f, + 0.980428338050842f, -0.138523042201996f, 0.980321943759918f, -0.138891488313675f, + 0.980215251445770f, -0.139259845018387f, 0.980108320713043f, -0.139628127217293f, + 0.980001091957092f, -0.139996320009232f, 0.979893565177917f, -0.140364438295364f, + 0.979785740375519f, -0.140732467174530f, 0.979677677154541f, -0.141100421547890f, + 0.979569315910339f, -0.141468286514282f, 0.979460656642914f, -0.141836062073708f, + 0.979351758956909f, -0.142203763127327f, 0.979242503643036f, -0.142571389675140f, + 0.979133009910584f, -0.142938911914825f, 0.979023277759552f, -0.143306359648705f, + 0.978913187980652f, -0.143673732876778f, 0.978802859783173f, -0.144041016697884f, + 0.978692233562469f, -0.144408211112022f, 0.978581368923187f, -0.144775316119194f, + 0.978470146656036f, -0.145142331719399f, 0.978358685970306f, -0.145509272813797f, + 0.978246986865997f, -0.145876124501228f, 0.978134930133820f, -0.146242901682854f, + 0.978022634983063f, -0.146609574556351f, 0.977910041809082f, -0.146976172924042f, + 0.977797150611877f, -0.147342681884766f, 0.977684020996094f, -0.147709101438522f, + 0.977570593357086f, -0.148075446486473f, 0.977456867694855f, -0.148441687226295f, + 0.977342903614044f, -0.148807853460312f, 0.977228581905365f, -0.149173930287361f, + 0.977114021778107f, -0.149539917707443f, 0.976999223232269f, -0.149905815720558f, + 0.976884067058563f, -0.150271624326706f, 0.976768672466278f, -0.150637343525887f, + 0.976653039455414f, -0.151002973318100f, 0.976537048816681f, -0.151368513703346f, + 0.976420819759369f, -0.151733979582787f, 0.976304292678833f, -0.152099341154099f, + 0.976187527179718f, -0.152464613318443f, 0.976070404052734f, -0.152829796075821f, + 0.975953042507172f, -0.153194904327393f, 0.975835442543030f, -0.153559908270836f, + 0.975717484951019f, -0.153924822807312f, 0.975599288940430f, -0.154289647936821f, + 0.975480854511261f, -0.154654383659363f, 0.975362062454224f, -0.155019029974937f, + 0.975243031978607f, -0.155383571982384f, 0.975123703479767f, -0.155748039484024f, + 0.975004136562347f, -0.156112402677536f, 0.974884271621704f, -0.156476691365242f, + 0.974764108657837f, -0.156840875744820f, 0.974643647670746f, -0.157204970717430f, + 0.974522948265076f, -0.157568961381912f, 0.974401950836182f, -0.157932877540588f, + 0.974280655384064f, -0.158296689391136f, 0.974159121513367f, -0.158660411834717f, + 0.974037289619446f, -0.159024044871330f, 0.973915159702301f, -0.159387573599815f, + 0.973792791366577f, -0.159751012921333f, 0.973670125007629f, -0.160114362835884f, + 0.973547160625458f, -0.160477623343468f, 0.973423957824707f, -0.160840779542923f, + 0.973300457000732f, -0.161203846335411f, 0.973176658153534f, -0.161566808819771f, + 0.973052620887756f, -0.161929681897163f, 0.972928285598755f, -0.162292465567589f, + 0.972803652286530f, -0.162655144929886f, 0.972678780555725f, -0.163017734885216f, + 0.972553610801697f, -0.163380220532417f, 0.972428143024445f, -0.163742616772652f, + 0.972302436828613f, -0.164104923605919f, 0.972176432609558f, -0.164467126131058f, + 0.972050130367279f, -0.164829224348068f, 0.971923589706421f, -0.165191248059273f, + 0.971796751022339f, -0.165553152561188f, 0.971669614315033f, -0.165914967656136f, + 0.971542239189148f, -0.166276678442955f, 0.971414566040039f, -0.166638299822807f, + 0.971286594867706f, -0.166999831795692f, 0.971158385276794f, -0.167361244559288f, + 0.971029877662659f, -0.167722567915916f, 0.970901072025299f, -0.168083801865578f, + 0.970772027969360f, -0.168444931507111f, 0.970642685890198f, -0.168805956840515f, + 0.970513105392456f, -0.169166877865791f, 0.970383226871490f, -0.169527709484100f, + 0.970253050327301f, -0.169888436794281f, 0.970122575759888f, -0.170249074697495f, + 0.969991862773895f, -0.170609608292580f, 0.969860911369324f, -0.170970037579536f, + 0.969729602336884f, -0.171330362558365f, 0.969598054885864f, -0.171690583229065f, + 0.969466269016266f, -0.172050714492798f, 0.969334125518799f, -0.172410741448402f, + 0.969201743602753f, -0.172770664095879f, 0.969069123268127f, -0.173130482435226f, + 0.968936204910278f, -0.173490211367607f, 0.968802988529205f, -0.173849821090698f, + 0.968669533729553f, -0.174209341406822f, 0.968535780906677f, -0.174568757414818f, + 0.968401730060577f, -0.174928069114685f, 0.968267440795898f, -0.175287276506424f, + 0.968132853507996f, -0.175646379590034f, 0.967997968196869f, -0.176005378365517f, + 0.967862844467163f, -0.176364272832870f, 0.967727422714233f, -0.176723077893257f, + 0.967591762542725f, -0.177081763744354f, 0.967455804347992f, -0.177440345287323f, + 0.967319548130035f, -0.177798837423325f, 0.967183053493500f, -0.178157210350037f, + 0.967046260833740f, -0.178515478968620f, 0.966909229755402f, -0.178873643279076f, + 0.966771900653839f, -0.179231703281403f, 0.966634273529053f, -0.179589673876762f, + 0.966496407985687f, -0.179947525262833f, 0.966358244419098f, -0.180305257439613f, + 0.966219842433929f, -0.180662900209427f, 0.966081082820892f, -0.181020438671112f, + 0.965942144393921f, -0.181377857923508f, 0.965802907943726f, -0.181735187768936f, + 0.965663373470306f, -0.182092398405075f, 0.965523540973663f, -0.182449504733086f, + 0.965383470058441f, -0.182806491851807f, 0.965243160724640f, -0.183163389563560f, + 0.965102493762970f, -0.183520168066025f, 0.964961588382721f, -0.183876842260361f, + 0.964820444583893f, -0.184233412146568f, 0.964679002761841f, -0.184589877724648f, + 0.964537262916565f, -0.184946224093437f, 0.964395284652710f, -0.185302466154099f, + 0.964253067970276f, -0.185658603906631f, 0.964110493659973f, -0.186014622449875f, + 0.963967680931091f, -0.186370536684990f, 0.963824629783630f, -0.186726331710815f, + 0.963681280612946f, -0.187082037329674f, 0.963537633419037f, -0.187437608838081f, + 0.963393747806549f, -0.187793090939522f, 0.963249564170837f, -0.188148453831673f, + 0.963105142116547f, -0.188503712415695f, 0.962960422039032f, -0.188858851790428f, + 0.962815403938293f, -0.189213871955872f, 0.962670147418976f, -0.189568802714348f, + 0.962524592876434f, -0.189923599362373f, 0.962378799915314f, -0.190278306603432f, + 0.962232708930969f, -0.190632879734039f, 0.962086379528046f, -0.190987363457680f, + 0.961939752101898f, -0.191341713070869f, 0.961792886257172f, -0.191695958375931f, + 0.961645722389221f, -0.192050099372864f, 0.961498260498047f, -0.192404121160507f, + 0.961350560188293f, -0.192758023738861f, 0.961202561855316f, -0.193111822009087f, + 0.961054325103760f, -0.193465501070023f, 0.960905790328979f, -0.193819075822830f, + 0.960757017135620f, -0.194172516465187f, 0.960607945919037f, -0.194525867700577f, + 0.960458636283875f, -0.194879084825516f, 0.960309028625488f, -0.195232197642326f, + 0.960159122943878f, -0.195585191249847f, 0.960008978843689f, -0.195938065648079f, + 0.959858596324921f, -0.196290835738182f, 0.959707856178284f, -0.196643486618996f, + 0.959556937217712f, -0.196996018290520f, 0.959405720233917f, -0.197348430752754f, + 0.959254205226898f, -0.197700738906860f, 0.959102451801300f, -0.198052927851677f, + 0.958950400352478f, -0.198404997587204f, 0.958798050880432f, -0.198756948113441f, + 0.958645522594452f, -0.199108779430389f, 0.958492636680603f, -0.199460506439209f, + 0.958339512348175f, -0.199812099337578f, 0.958186149597168f, -0.200163587927818f, + 0.958032488822937f, -0.200514942407608f, 0.957878530025482f, -0.200866192579269f, + 0.957724332809448f, -0.201217323541641f, 0.957569897174835f, -0.201568335294724f, + 0.957415163516998f, -0.201919227838516f, 0.957260131835938f, -0.202270001173019f, + 0.957104861736298f, -0.202620655298233f, 0.956949353218079f, -0.202971190214157f, + 0.956793546676636f, -0.203321605920792f, 0.956637442111969f, -0.203671902418137f, + 0.956481099128723f, -0.204022079706192f, 0.956324458122253f, -0.204372137784958f, + 0.956167578697205f, -0.204722076654434f, 0.956010460853577f, -0.205071896314621f, + 0.955853044986725f, -0.205421581864357f, 0.955695331096649f, -0.205771163105965f, + 0.955537378787994f, -0.206120610237122f, 0.955379128456116f, -0.206469938158989f, + 0.955220639705658f, -0.206819161772728f, 0.955061912536621f, -0.207168251276016f, + 0.954902827739716f, -0.207517206668854f, 0.954743564128876f, -0.207866057753563f, + 0.954584002494812f, -0.208214774727821f, 0.954424142837524f, -0.208563387393951f, + 0.954264044761658f, -0.208911851048470f, 0.954103708267212f, -0.209260210394859f, + 0.953943073749542f, -0.209608450531960f, 0.953782141208649f, -0.209956556558609f, + 0.953620970249176f, -0.210304543375969f, 0.953459560871124f, -0.210652396082878f, + 0.953297853469849f, -0.211000129580498f, 0.953135907649994f, -0.211347743868828f, + 0.952973663806915f, -0.211695238947868f, 0.952811121940613f, -0.212042599916458f, + 0.952648401260376f, -0.212389841675758f, 0.952485322952271f, -0.212736949324608f, + 0.952322065830231f, -0.213083937764168f, 0.952158451080322f, -0.213430806994438f, + 0.951994657516479f, -0.213777542114258f, 0.951830565929413f, -0.214124158024788f, + 0.951666176319122f, -0.214470639824867f, 0.951501548290253f, -0.214817002415657f, + 0.951336681842804f, -0.215163245797157f, 0.951171517372131f, -0.215509355068207f, + 0.951006054878235f, -0.215855330228806f, 0.950840353965759f, -0.216201186180115f, + 0.950674414634705f, -0.216546908020973f, 0.950508177280426f, -0.216892510652542f, + 0.950341701507568f, -0.217237979173660f, 0.950174987316132f, -0.217583328485489f, + 0.950007975101471f, -0.217928543686867f, 0.949840664863586f, -0.218273624777794f, + 0.949673116207123f, -0.218618586659431f, 0.949505329132080f, -0.218963414430618f, + 0.949337244033813f, -0.219308122992516f, 0.949168920516968f, -0.219652697443962f, + 0.949000298976898f, -0.219997137784958f, 0.948831439018250f, -0.220341444015503f, + 0.948662281036377f, -0.220685631036758f, 0.948492884635925f, -0.221029683947563f, + 0.948323249816895f, -0.221373617649078f, 0.948153316974640f, -0.221717402338982f, + 0.947983145713806f, -0.222061067819595f, 0.947812676429749f, -0.222404599189758f, + 0.947641968727112f, -0.222748011350632f, 0.947470963001251f, -0.223091274499893f, + 0.947299718856812f, -0.223434418439865f, 0.947128236293793f, -0.223777428269386f, + 0.946956455707550f, -0.224120303988457f, 0.946784436702728f, -0.224463045597076f, + 0.946612179279327f, -0.224805667996407f, 0.946439623832703f, -0.225148141384125f, + 0.946266770362854f, -0.225490495562553f, 0.946093678474426f, -0.225832715630531f, + 0.945920348167419f, -0.226174786686897f, 0.945746779441834f, -0.226516738533974f, + 0.945572853088379f, -0.226858556270599f, 0.945398747920990f, -0.227200239896774f, + 0.945224344730377f, -0.227541789412498f, 0.945049703121185f, -0.227883204817772f, + 0.944874763488770f, -0.228224486112595f, 0.944699645042419f, -0.228565633296967f, + 0.944524168968201f, -0.228906646370888f, 0.944348454475403f, -0.229247525334358f, + 0.944172501564026f, -0.229588270187378f, 0.943996310234070f, -0.229928880929947f, + 0.943819820880890f, -0.230269357562065f, 0.943643093109131f, -0.230609700083733f, + 0.943466067314148f, -0.230949893593788f, 0.943288803100586f, -0.231289967894554f, + 0.943111240863800f, -0.231629893183708f, 0.942933499813080f, -0.231969684362412f, + 0.942755401134491f, -0.232309341430664f, 0.942577123641968f, -0.232648864388466f, + 0.942398548126221f, -0.232988253235817f, 0.942219734191895f, -0.233327493071556f, + 0.942040622234344f, -0.233666598796844f, 0.941861271858215f, -0.234005570411682f, + 0.941681683063507f, -0.234344407916069f, 0.941501796245575f, -0.234683111310005f, + 0.941321671009064f, -0.235021665692329f, 0.941141307353973f, -0.235360085964203f, + 0.940960645675659f, -0.235698372125626f, 0.940779745578766f, -0.236036509275436f, + 0.940598547458649f, -0.236374512314796f, 0.940417110919952f, -0.236712381243706f, + 0.940235435962677f, -0.237050101161003f, 0.940053522586823f, -0.237387686967850f, + 0.939871311187744f, -0.237725138664246f, 0.939688861370087f, -0.238062441349030f, + 0.939506113529205f, -0.238399609923363f, 0.939323127269745f, -0.238736644387245f, + 0.939139902591705f, -0.239073529839516f, 0.938956379890442f, -0.239410281181335f, + 0.938772618770599f, -0.239746883511543f, 0.938588619232178f, -0.240083336830139f, + 0.938404381275177f, -0.240419670939446f, 0.938219845294952f, -0.240755841135979f, + 0.938035070896149f, -0.241091892123222f, 0.937849998474121f, -0.241427779197693f, + 0.937664687633514f, -0.241763532161713f, 0.937479138374329f, -0.242099151015282f, + 0.937293350696564f, -0.242434620857239f, 0.937107264995575f, -0.242769956588745f, + 0.936920940876007f, -0.243105143308640f, 0.936734318733215f, -0.243440181016922f, + 0.936547517776489f, -0.243775084614754f, 0.936360359191895f, -0.244109839200974f, + 0.936173021793365f, -0.244444444775581f, 0.935985386371613f, -0.244778916239738f, + 0.935797572135925f, -0.245113238692284f, 0.935609400272369f, -0.245447427034378f, + 0.935421049594879f, -0.245781451463699f, 0.935232400894165f, -0.246115356683731f, + 0.935043513774872f, -0.246449097990990f, 0.934854328632355f, -0.246782705187798f, + 0.934664964675903f, -0.247116148471832f, 0.934475243091583f, -0.247449472546577f, + 0.934285342693329f, -0.247782632708550f, 0.934095203876495f, -0.248115643858910f, + 0.933904767036438f, -0.248448520898819f, 0.933714091777802f, -0.248781248927116f, + 0.933523118495941f, -0.249113827943802f, 0.933331906795502f, -0.249446272850037f, + 0.933140456676483f, -0.249778553843498f, 0.932948768138886f, -0.250110685825348f, + 0.932756841182709f, -0.250442683696747f, 0.932564616203308f, -0.250774532556534f, + 0.932372152805328f, -0.251106232404709f, 0.932179391384125f, -0.251437783241272f, + 0.931986451148987f, -0.251769185066223f, 0.931793212890625f, -0.252100437879562f, + 0.931599736213684f, -0.252431541681290f, 0.931405961513519f, -0.252762526273727f, + 0.931211948394775f, -0.253093332052231f, 0.931017756462097f, -0.253423988819122f, + 0.930823206901550f, -0.253754496574402f, 0.930628478527069f, -0.254084855318069f, + 0.930433452129364f, -0.254415065050125f, 0.930238187313080f, -0.254745125770569f, + 0.930042684078217f, -0.255075037479401f, 0.929846942424774f, -0.255404800176620f, + 0.929650902748108f, -0.255734413862228f, 0.929454624652863f, -0.256063878536224f, + 0.929258108139038f, -0.256393194198608f, 0.929061353206635f, -0.256722360849380f, + 0.928864300251007f, -0.257051378488541f, 0.928667008876801f, -0.257380217313766f, + 0.928469479084015f, -0.257708936929703f, 0.928271710872650f, -0.258037507534027f, + 0.928073644638062f, -0.258365899324417f, 0.927875399589539f, -0.258694142103195f, + 0.927676856517792f, -0.259022265672684f, 0.927478015422821f, -0.259350210428238f, + 0.927278995513916f, -0.259678006172180f, 0.927079677581787f, -0.260005623102188f, + 0.926880121231079f, -0.260333120822906f, 0.926680326461792f, -0.260660469532013f, + 0.926480293273926f, -0.260987639427185f, 0.926280021667480f, -0.261314690113068f, + 0.926079452037811f, -0.261641561985016f, 0.925878643989563f, -0.261968284845352f, + 0.925677597522736f, -0.262294828891754f, 0.925476312637329f, -0.262621253728867f, + 0.925274729728699f, -0.262947499752045f, 0.925072908401489f, -0.263273626565933f, + 0.924870908260345f, -0.263599574565887f, 0.924668610095978f, -0.263925373554230f, + 0.924466013908386f, -0.264250993728638f, 0.924263238906860f, -0.264576494693756f, + 0.924060165882111f, -0.264901816844940f, 0.923856854438782f, -0.265226989984512f, + 0.923653304576874f, -0.265552014112473f, 0.923449516296387f, -0.265876859426498f, + 0.923245489597321f, -0.266201555728912f, 0.923041164875031f, -0.266526103019714f, + 0.922836601734161f, -0.266850501298904f, 0.922631800174713f, -0.267174720764160f, + 0.922426760196686f, -0.267498821020126f, 0.922221481800079f, -0.267822742462158f, + 0.922015964984894f, -0.268146485090256f, 0.921810150146484f, -0.268470078706741f, + 0.921604096889496f, -0.268793523311615f, 0.921397805213928f, -0.269116818904877f, + 0.921191275119781f, -0.269439965486526f, 0.920984506607056f, -0.269762933254242f, + 0.920777499675751f, -0.270085722208023f, 0.920570194721222f, -0.270408391952515f, + 0.920362710952759f, -0.270730882883072f, 0.920154929161072f, -0.271053224802017f, + 0.919946908950806f, -0.271375387907028f, 0.919738650321960f, -0.271697402000427f, + 0.919530093669891f, -0.272019267082214f, 0.919321358203888f, -0.272340953350067f, + 0.919112324714661f, -0.272662490606308f, 0.918903112411499f, -0.272983878850937f, + 0.918693602085114f, -0.273305088281631f, 0.918483853340149f, -0.273626148700714f, + 0.918273866176605f, -0.273947030305862f, 0.918063640594482f, -0.274267762899399f, + 0.917853116989136f, -0.274588316679001f, 0.917642414569855f, -0.274908751249313f, + 0.917431414127350f, -0.275228977203369f, 0.917220234870911f, -0.275549083948135f, + 0.917008757591248f, -0.275868982076645f, 0.916797041893005f, -0.276188760995865f, + 0.916585087776184f, -0.276508361101151f, 0.916372895240784f, -0.276827782392502f, + 0.916160404682159f, -0.277147054672241f, 0.915947735309601f, -0.277466177940369f, + 0.915734827518463f, -0.277785122394562f, 0.915521621704102f, -0.278103888034821f, + 0.915308177471161f, -0.278422504663467f, 0.915094554424286f, -0.278740972280502f, + 0.914880633354187f, -0.279059261083603f, 0.914666473865509f, -0.279377400875092f, + 0.914452075958252f, -0.279695361852646f, 0.914237439632416f, -0.280013144016266f, + 0.914022505283356f, -0.280330777168274f, 0.913807392120361f, -0.280648261308670f, + 0.913592040538788f, -0.280965566635132f, 0.913376390933990f, -0.281282693147659f, + 0.913160502910614f, -0.281599670648575f, 0.912944436073303f, -0.281916469335556f, + 0.912728071212769f, -0.282233119010925f, 0.912511467933655f, -0.282549589872360f, + 0.912294626235962f, -0.282865911722183f, 0.912077546119690f, -0.283182054758072f, + 0.911860227584839f, -0.283498018980026f, 0.911642670631409f, -0.283813834190369f, + 0.911424875259399f, -0.284129470586777f, 0.911206841468811f, -0.284444957971573f, + 0.910988569259644f, -0.284760266542435f, 0.910769999027252f, -0.285075396299362f, + 0.910551249980927f, -0.285390377044678f, 0.910332262516022f, -0.285705178976059f, + 0.910112977027893f, -0.286019802093506f, 0.909893512725830f, -0.286334276199341f, + 0.909673750400543f, -0.286648571491241f, 0.909453809261322f, -0.286962717771530f, + 0.909233570098877f, -0.287276685237885f, 0.909013092517853f, -0.287590473890305f, + 0.908792436122894f, -0.287904083728790f, 0.908571481704712f, -0.288217544555664f, + 0.908350288867950f, -0.288530826568604f, 0.908128857612610f, -0.288843959569931f, + 0.907907187938690f, -0.289156883955002f, 0.907685279846191f, -0.289469659328461f, + 0.907463192939758f, -0.289782285690308f, 0.907240808010101f, -0.290094703435898f, + 0.907018184661865f, -0.290406972169876f, 0.906795322895050f, -0.290719062089920f, + 0.906572222709656f, -0.291031002998352f, 0.906348884105682f, -0.291342735290527f, + 0.906125307083130f, -0.291654318571091f, 0.905901491641998f, -0.291965723037720f, + 0.905677437782288f, -0.292276978492737f, 0.905453145503998f, -0.292588025331497f, + 0.905228614807129f, -0.292898923158646f, 0.905003845691681f, -0.293209642171860f, + 0.904778838157654f, -0.293520182371140f, 0.904553592205048f, -0.293830573558807f, + 0.904328107833862f, -0.294140785932541f, 0.904102385044098f, -0.294450789690018f, + 0.903876423835754f, -0.294760644435883f, 0.903650224208832f, -0.295070350170136f, + 0.903423786163330f, -0.295379847288132f, 0.903197109699249f, -0.295689195394516f, + 0.902970194816589f, -0.295998334884644f, 0.902743041515350f, -0.296307325363159f, + 0.902515649795532f, -0.296616137027740f, 0.902288019657135f, -0.296924799680710f, + 0.902060210704803f, -0.297233253717422f, 0.901832103729248f, -0.297541528940201f, + 0.901603758335114f, -0.297849655151367f, 0.901375174522400f, -0.298157602548599f, + 0.901146411895752f, -0.298465341329575f, 0.900917351245880f, -0.298772931098938f, + 0.900688111782074f, -0.299080342054367f, 0.900458574295044f, -0.299387603998184f, + 0.900228857994080f, -0.299694657325745f, 0.899998843669891f, -0.300001531839371f, + 0.899768650531769f, -0.300308227539063f, 0.899538159370422f, -0.300614774227142f, + 0.899307489395142f, -0.300921112298965f, 0.899076581001282f, -0.301227301359177f, + 0.898845434188843f, -0.301533311605453f, 0.898614048957825f, -0.301839113235474f, + 0.898382425308228f, -0.302144765853882f, 0.898150563240051f, -0.302450239658356f, + 0.897918462753296f, -0.302755534648895f, 0.897686123847961f, -0.303060621023178f, + 0.897453546524048f, -0.303365558385849f, 0.897220790386200f, -0.303670316934586f, + 0.896987736225128f, -0.303974896669388f, 0.896754503250122f, -0.304279297590256f, + 0.896520972251892f, -0.304583519697189f, 0.896287262439728f, -0.304887533187866f, + 0.896053314208984f, -0.305191397666931f, 0.895819067955017f, -0.305495083332062f, + 0.895584642887115f, -0.305798590183258f, 0.895349979400635f, -0.306101888418198f, + 0.895115137100220f, -0.306405037641525f, 0.894879996776581f, -0.306708008050919f, + 0.894644618034363f, -0.307010769844055f, 0.894409060478210f, -0.307313382625580f, + 0.894173204898834f, -0.307615786790848f, 0.893937170505524f, -0.307918041944504f, + 0.893700897693634f, -0.308220088481903f, 0.893464326858521f, -0.308521956205368f, + 0.893227577209473f, -0.308823645114899f, 0.892990648746490f, -0.309125155210495f, + 0.892753422260284f, -0.309426486492157f, 0.892515957355499f, -0.309727638959885f, + 0.892278313636780f, -0.310028612613678f, 0.892040371894836f, -0.310329377651215f, + 0.891802251338959f, -0.310629993677139f, 0.891563892364502f, -0.310930401086807f, + 0.891325294971466f, -0.311230629682541f, 0.891086459159851f, -0.311530679464340f, + 0.890847444534302f, -0.311830550432205f, 0.890608131885529f, -0.312130242586136f, + 0.890368640422821f, -0.312429755926132f, 0.890128850936890f, -0.312729060649872f, + 0.889888882637024f, -0.313028186559677f, 0.889648675918579f, -0.313327133655548f, + 0.889408230781555f, -0.313625901937485f, 0.889167606830597f, -0.313924491405487f, + 0.888926684856415f, -0.314222872257233f, 0.888685584068298f, -0.314521104097366f, + 0.888444244861603f, -0.314819127321243f, 0.888202667236328f, -0.315116971731186f, + 0.887960851192474f, -0.315414607524872f, 0.887718796730042f, -0.315712094306946f, + 0.887476563453674f, -0.316009372472763f, 0.887234091758728f, -0.316306471824646f, + 0.886991322040558f, -0.316603392362595f, 0.886748373508453f, -0.316900104284287f, + 0.886505246162415f, -0.317196637392044f, 0.886261820793152f, -0.317492991685867f, + 0.886018216609955f, -0.317789167165756f, 0.885774314403534f, -0.318085134029388f, + 0.885530233383179f, -0.318380922079086f, 0.885285973548889f, -0.318676531314850f, + 0.885041415691376f, -0.318971961736679f, 0.884796679019928f, -0.319267183542252f, + 0.884551644325256f, -0.319562226533890f, 0.884306430816650f, -0.319857090711594f, + 0.884061038494110f, -0.320151746273041f, 0.883815348148346f, -0.320446223020554f, + 0.883569478988647f, -0.320740520954132f, 0.883323311805725f, -0.321034610271454f, + 0.883076965808868f, -0.321328520774841f, 0.882830440998077f, -0.321622252464294f, + 0.882583618164063f, -0.321915775537491f, 0.882336616516113f, -0.322209119796753f, + 0.882089376449585f, -0.322502255439758f, 0.881841897964478f, -0.322795242071152f, + 0.881594181060791f, -0.323088020086288f, 0.881346285343170f, -0.323380589485168f, + 0.881098151206970f, -0.323672980070114f, 0.880849778652191f, -0.323965191841125f, + 0.880601167678833f, -0.324257194995880f, 0.880352377891541f, -0.324549019336700f, + 0.880103349685669f, -0.324840664863586f, 0.879854083061218f, -0.325132101774216f, + 0.879604578018188f, -0.325423330068588f, 0.879354894161224f, -0.325714409351349f, + 0.879104971885681f, -0.326005280017853f, 0.878854811191559f, -0.326295942068100f, + 0.878604412078857f, -0.326586425304413f, 0.878353834152222f, -0.326876699924469f, + 0.878103017807007f, -0.327166795730591f, 0.877851963043213f, -0.327456712722778f, + 0.877600669860840f, -0.327746421098709f, 0.877349197864532f, -0.328035950660706f, + 0.877097487449646f, -0.328325271606445f, 0.876845538616180f, -0.328614413738251f, + 0.876593410968781f, -0.328903347253799f, 0.876341044902802f, -0.329192101955414f, + 0.876088440418243f, -0.329480648040771f, 0.875835597515106f, -0.329769015312195f, + 0.875582575798035f, -0.330057173967361f, 0.875329315662384f, -0.330345153808594f, + 0.875075817108154f, -0.330632925033569f, 0.874822139739990f, -0.330920487642288f, + 0.874568223953247f, -0.331207901239395f, 0.874314069747925f, -0.331495076417923f, + 0.874059677124023f, -0.331782072782516f, 0.873805105686188f, -0.332068890333176f, + 0.873550295829773f, -0.332355499267578f, 0.873295307159424f, -0.332641899585724f, + 0.873040020465851f, -0.332928121089935f, 0.872784554958344f, -0.333214133977890f, + 0.872528910636902f, -0.333499968051910f, 0.872272968292236f, -0.333785593509674f, + 0.872016847133636f, -0.334071010351181f, 0.871760547161102f, -0.334356248378754f, + 0.871503949165344f, -0.334641307592392f, 0.871247172355652f, -0.334926128387451f, + 0.870990216732025f, -0.335210770368576f, 0.870733022689819f, -0.335495233535767f, + 0.870475590229034f, -0.335779488086700f, 0.870217919349670f, -0.336063534021378f, + 0.869960069656372f, -0.336347371339798f, 0.869701981544495f, -0.336631029844284f, + 0.869443655014038f, -0.336914509534836f, 0.869185149669647f, -0.337197750806808f, + 0.868926405906677f, -0.337480813264847f, 0.868667483329773f, -0.337763696908951f, + 0.868408262729645f, -0.338046342134476f, 0.868148922920227f, -0.338328808546066f, + 0.867889285087585f, -0.338611096143723f, 0.867629468441010f, -0.338893145322800f, + 0.867369413375854f, -0.339175015687943f, 0.867109179496765f, -0.339456677436829f, + 0.866848707199097f, -0.339738160371780f, 0.866588056087494f, -0.340019434690475f, + 0.866327106952667f, -0.340300500392914f, 0.866066038608551f, -0.340581357479095f, + 0.865804672241211f, -0.340862035751343f, 0.865543127059937f, -0.341142505407333f, + 0.865281403064728f, -0.341422766447067f, 0.865019381046295f, -0.341702848672867f, + 0.864757239818573f, -0.341982692480087f, 0.864494800567627f, -0.342262357473373f, + 0.864232182502747f, -0.342541843652725f, 0.863969385623932f, -0.342821091413498f, + 0.863706290721893f, -0.343100160360336f, 0.863443076610565f, -0.343379020690918f, + 0.863179564476013f, -0.343657672405243f, 0.862915873527527f, -0.343936115503311f, + 0.862652003765106f, -0.344214379787445f, 0.862387895584106f, -0.344492435455322f, + 0.862123548984528f, -0.344770282506943f, 0.861859023571014f, -0.345047920942307f, + 0.861594259738922f, -0.345325350761414f, 0.861329257488251f, -0.345602601766586f, + 0.861064076423645f, -0.345879614353180f, 0.860798716545105f, -0.346156448125839f, + 0.860533118247986f, -0.346433073282242f, 0.860267281532288f, -0.346709519624710f, + 0.860001266002655f, -0.346985727548599f, 0.859735012054443f, -0.347261756658554f, + 0.859468579292297f, -0.347537547349930f, 0.859201908111572f, -0.347813159227371f, + 0.858934998512268f, -0.348088562488556f, 0.858667910099030f, -0.348363757133484f, + 0.858400642871857f, -0.348638743162155f, 0.858133137226105f, -0.348913550376892f, + 0.857865393161774f, -0.349188119173050f, 0.857597470283508f, -0.349462509155273f, + 0.857329368591309f, -0.349736660718918f, 0.857060968875885f, -0.350010633468628f, + 0.856792449951172f, -0.350284397602081f, 0.856523692607880f, -0.350557953119278f, + 0.856254696846008f, -0.350831300020218f, 0.855985522270203f, -0.351104438304901f, + 0.855716109275818f, -0.351377367973328f, 0.855446517467499f, -0.351650089025497f, + 0.855176687240601f, -0.351922631263733f, 0.854906618595123f, -0.352194935083389f, + 0.854636430740356f, -0.352467030286789f, 0.854365944862366f, -0.352738946676254f, + 0.854095339775085f, -0.353010624647141f, 0.853824436664581f, -0.353282123804092f, + 0.853553414344788f, -0.353553384542465f, 0.853282094001770f, -0.353824466466904f, + 0.853010654449463f, -0.354095309972763f, 0.852738916873932f, -0.354365974664688f, + 0.852467060089111f, -0.354636400938034f, 0.852194905281067f, -0.354906648397446f, + 0.851922631263733f, -0.355176687240601f, 0.851650118827820f, -0.355446487665176f, + 0.851377367973328f, -0.355716109275818f, 0.851104438304901f, -0.355985492467880f, + 0.850831270217896f, -0.356254696846008f, 0.850557923316956f, -0.356523662805557f, + 0.850284397602081f, -0.356792420148849f, 0.850010633468628f, -0.357060998678207f, + 0.849736690521240f, -0.357329338788986f, 0.849462509155273f, -0.357597470283508f, + 0.849188148975372f, -0.357865422964096f, 0.848913550376892f, -0.358133137226105f, + 0.848638772964478f, -0.358400642871857f, 0.848363757133484f, -0.358667939901352f, + 0.848088562488556f, -0.358935028314590f, 0.847813189029694f, -0.359201908111572f, + 0.847537577152252f, -0.359468549489975f, 0.847261726856232f, -0.359735012054443f, + 0.846985757350922f, -0.360001266002655f, 0.846709489822388f, -0.360267281532288f, + 0.846433103084564f, -0.360533088445663f, 0.846156477928162f, -0.360798716545105f, + 0.845879614353180f, -0.361064106225967f, 0.845602571964264f, -0.361329287290573f, + 0.845325350761414f, -0.361594229936600f, 0.845047891139984f, -0.361858993768692f, + 0.844770252704620f, -0.362123548984528f, 0.844492435455322f, -0.362387865781784f, + 0.844214379787445f, -0.362651973962784f, 0.843936145305634f, -0.362915903329849f, + 0.843657672405243f, -0.363179564476013f, 0.843379020690918f, -0.363443046808243f, + 0.843100130558014f, -0.363706320524216f, 0.842821121215820f, -0.363969355821610f, + 0.842541813850403f, -0.364232182502747f, 0.842262387275696f, -0.364494800567627f, + 0.841982722282410f, -0.364757210016251f, 0.841702818870544f, -0.365019410848618f, + 0.841422796249390f, -0.365281373262405f, 0.841142535209656f, -0.365543156862259f, + 0.840862035751343f, -0.365804702043533f, 0.840581357479095f, -0.366066008806229f, + 0.840300500392914f, -0.366327136754990f, 0.840019404888153f, -0.366588026285172f, + 0.839738130569458f, -0.366848707199097f, 0.839456677436829f, -0.367109179496765f, + 0.839175045490265f, -0.367369443178177f, 0.838893175125122f, -0.367629468441010f, + 0.838611066341400f, -0.367889285087585f, 0.838328838348389f, -0.368148893117905f, + 0.838046371936798f, -0.368408292531967f, 0.837763667106628f, -0.368667453527451f, + 0.837480843067169f, -0.368926405906677f, 0.837197780609131f, -0.369185149669647f, + 0.836914479732513f, -0.369443655014038f, 0.836631059646606f, -0.369701951742172f, + 0.836347401142120f, -0.369960039854050f, 0.836063504219055f, -0.370217919349670f, + 0.835779488086700f, -0.370475560426712f, 0.835495233535767f, -0.370732992887497f, + 0.835210800170898f, -0.370990216732025f, 0.834926128387451f, -0.371247202157974f, + 0.834641277790070f, -0.371503978967667f, 0.834356248378754f, -0.371760547161102f, + 0.834071040153503f, -0.372016876935959f, 0.833785593509674f, -0.372272998094559f, + 0.833499968051910f, -0.372528880834579f, 0.833214163780212f, -0.372784584760666f, + 0.832928121089935f, -0.373040050268173f, 0.832641899585724f, -0.373295277357101f, + 0.832355499267578f, -0.373550295829773f, 0.832068860530853f, -0.373805105686188f, + 0.831782102584839f, -0.374059677124023f, 0.831495106220245f, -0.374314039945602f, + 0.831207871437073f, -0.374568194150925f, 0.830920517444611f, -0.374822109937668f, + 0.830632925033569f, -0.375075817108154f, 0.830345153808594f, -0.375329315662384f, + 0.830057144165039f, -0.375582575798035f, 0.829769015312195f, -0.375835597515106f, + 0.829480648040771f, -0.376088410615921f, 0.829192101955414f, -0.376341015100479f, + 0.828903317451477f, -0.376593410968781f, 0.828614413738251f, -0.376845568418503f, + 0.828325271606445f, -0.377097487449646f, 0.828035950660706f, -0.377349197864532f, + 0.827746450901031f, -0.377600699663162f, 0.827456712722778f, -0.377851963043213f, + 0.827166795730591f, -0.378102988004684f, 0.826876699924469f, -0.378353834152222f, + 0.826586425304413f, -0.378604412078857f, 0.826295912265778f, -0.378854811191559f, + 0.826005280017853f, -0.379104942083359f, 0.825714409351349f, -0.379354894161224f, + 0.825423359870911f, -0.379604607820511f, 0.825132071971893f, -0.379854083061218f, + 0.824840664863586f, -0.380103349685669f, 0.824549019336700f, -0.380352377891541f, + 0.824257194995880f, -0.380601197481155f, 0.823965191841125f, -0.380849778652191f, + 0.823673009872437f, -0.381098151206970f, 0.823380589485168f, -0.381346285343170f, + 0.823087990283966f, -0.381594210863113f, 0.822795212268829f, -0.381841897964478f, + 0.822502255439758f, -0.382089376449585f, 0.822209119796753f, -0.382336616516113f, + 0.821915745735168f, -0.382583618164063f, 0.821622252464294f, -0.382830440998077f, + 0.821328520774841f, -0.383076995611191f, 0.821034610271454f, -0.383323341608047f, + 0.820740520954132f, -0.383569449186325f, 0.820446193218231f, -0.383815348148346f, + 0.820151746273041f, -0.384061008691788f, 0.819857060909271f, -0.384306460618973f, + 0.819562196731567f, -0.384551674127579f, 0.819267153739929f, -0.384796649217606f, + 0.818971931934357f, -0.385041415691376f, 0.818676531314850f, -0.385285943746567f, + 0.818380951881409f, -0.385530263185501f, 0.818085134029388f, -0.385774344205856f, + 0.817789137363434f, -0.386018186807632f, 0.817493021488190f, -0.386261820793152f, + 0.817196667194366f, -0.386505216360092f, 0.816900074481964f, -0.386748403310776f, + 0.816603362560272f, -0.386991351842880f, 0.816306471824646f, -0.387234061956406f, + 0.816009342670441f, -0.387476563453674f, 0.815712094306946f, -0.387718826532364f, + 0.815414607524872f, -0.387960851192474f, 0.815116941928864f, -0.388202667236328f, + 0.814819097518921f, -0.388444244861603f, 0.814521074295044f, -0.388685584068298f, + 0.814222872257233f, -0.388926714658737f, 0.813924491405487f, -0.389167606830597f, + 0.813625931739807f, -0.389408260583878f, 0.813327133655548f, -0.389648675918579f, + 0.813028216362000f, -0.389888882637024f, 0.812729060649872f, -0.390128880739212f, + 0.812429726123810f, -0.390368610620499f, 0.812130272388458f, -0.390608131885529f, + 0.811830580234528f, -0.390847414731979f, 0.811530709266663f, -0.391086459159851f, + 0.811230659484863f, -0.391325294971466f, 0.810930430889130f, -0.391563892364502f, + 0.810629963874817f, -0.391802251338959f, 0.810329377651215f, -0.392040401697159f, + 0.810028612613678f, -0.392278283834457f, 0.809727668762207f, -0.392515957355499f, + 0.809426486492157f, -0.392753422260284f, 0.809125185012817f, -0.392990618944168f, + 0.808823645114899f, -0.393227607011795f, 0.808521986007690f, -0.393464356660843f, + 0.808220088481903f, -0.393700867891312f, 0.807918012142181f, -0.393937170505524f, + 0.807615816593170f, -0.394173204898834f, 0.807313382625580f, -0.394409030675888f, + 0.807010769844055f, -0.394644618034363f, 0.806707978248596f, -0.394879996776581f, + 0.806405067443848f, -0.395115107297897f, 0.806101918220520f, -0.395350009202957f, + 0.805798590183258f, -0.395584672689438f, 0.805495083332062f, -0.395819097757339f, + 0.805191397666931f, -0.396053284406662f, 0.804887533187866f, -0.396287262439728f, + 0.804583489894867f, -0.396520972251892f, 0.804279267787933f, -0.396754473447800f, + 0.803974866867065f, -0.396987736225128f, 0.803670346736908f, -0.397220760583878f, + 0.803365588188171f, -0.397453576326370f, 0.803060650825500f, -0.397686123847961f, + 0.802755534648895f, -0.397918462753296f, 0.802450239658356f, -0.398150533437729f, + 0.802144765853882f, -0.398382395505905f, 0.801839113235474f, -0.398614019155502f, + 0.801533281803131f, -0.398845434188843f, 0.801227271556854f, -0.399076581001282f, + 0.800921142101288f, -0.399307489395142f, 0.800614774227142f, -0.399538189172745f, + 0.800308227539063f, -0.399768620729446f, 0.800001561641693f, -0.399998843669891f, + 0.799694657325745f, -0.400228828191757f, 0.799387574195862f, -0.400458574295044f, + 0.799080371856689f, -0.400688081979752f, 0.798772931098938f, -0.400917351245880f, + 0.798465371131897f, -0.401146411895752f, 0.798157572746277f, -0.401375204324722f, + 0.797849655151367f, -0.401603758335114f, 0.797541558742523f, -0.401832103729248f, + 0.797233223915100f, -0.402060180902481f, 0.796924769878387f, -0.402288049459457f, + 0.796616137027740f, -0.402515679597855f, 0.796307325363159f, -0.402743041515350f, + 0.795998334884644f, -0.402970194816589f, 0.795689165592194f, -0.403197109699249f, + 0.795379877090454f, -0.403423786163330f, 0.795070350170136f, -0.403650224208832f, + 0.794760644435883f, -0.403876423835754f, 0.794450819492340f, -0.404102355241776f, + 0.794140756130219f, -0.404328078031540f, 0.793830573558807f, -0.404553562402725f, + 0.793520212173462f, -0.404778808355331f, 0.793209671974182f, -0.405003815889359f, + 0.792898952960968f, -0.405228585004807f, 0.792588055133820f, -0.405453115701675f, + 0.792276978492737f, -0.405677437782288f, 0.791965723037720f, -0.405901491641998f, + 0.791654348373413f, -0.406125307083130f, 0.791342735290527f, -0.406348884105682f, + 0.791031002998352f, -0.406572192907333f, 0.790719091892242f, -0.406795293092728f, + 0.790407001972198f, -0.407018154859543f, 0.790094733238220f, -0.407240778207779f, + 0.789782285690308f, -0.407463163137436f, 0.789469659328461f, -0.407685309648514f, + 0.789156913757324f, -0.407907217741013f, 0.788843929767609f, -0.408128857612610f, + 0.788530826568604f, -0.408350288867950f, 0.788217544555664f, -0.408571451902390f, + 0.787904083728790f, -0.408792406320572f, 0.787590444087982f, -0.409013092517853f, + 0.787276685237885f, -0.409233570098877f, 0.786962687969208f, -0.409453779459000f, + 0.786648571491241f, -0.409673750400543f, 0.786334276199341f, -0.409893482923508f, + 0.786019802093506f, -0.410112977027893f, 0.785705149173737f, -0.410332232713699f, + 0.785390377044678f, -0.410551249980927f, 0.785075426101685f, -0.410770028829575f, + 0.784760236740112f, -0.410988569259644f, 0.784444928169250f, -0.411206841468811f, + 0.784129500389099f, -0.411424905061722f, 0.783813834190369f, -0.411642700433731f, + 0.783498048782349f, -0.411860257387161f, 0.783182024955750f, -0.412077575922012f, + 0.782865881919861f, -0.412294656038284f, 0.782549619674683f, -0.412511497735977f, + 0.782233119010925f, -0.412728071212769f, 0.781916499137878f, -0.412944436073303f, + 0.781599700450897f, -0.413160532712936f, 0.781282722949982f, -0.413376390933990f, + 0.780965566635132f, -0.413592010736465f, 0.780648231506348f, -0.413807392120361f, + 0.780330777168274f, -0.414022535085678f, 0.780013144016266f, -0.414237409830093f, + 0.779695332050323f, -0.414452046155930f, 0.779377400875092f, -0.414666473865509f, + 0.779059290885925f, -0.414880603551865f, 0.778741002082825f, -0.415094524621964f, + 0.778422534465790f, -0.415308207273483f, 0.778103888034821f, -0.415521621704102f, + 0.777785122394562f, -0.415734797716141f, 0.777466177940369f, -0.415947735309601f, + 0.777147054672241f, -0.416160434484482f, 0.776827812194824f, -0.416372895240784f, + 0.776508331298828f, -0.416585087776184f, 0.776188731193542f, -0.416797041893005f, + 0.775869011878967f, -0.417008757591248f, 0.775549054145813f, -0.417220205068588f, + 0.775228977203369f, -0.417431443929672f, 0.774908721446991f, -0.417642414569855f, + 0.774588346481323f, -0.417853146791458f, 0.774267733097076f, -0.418063640594482f, + 0.773947000503540f, -0.418273866176605f, 0.773626148700714f, -0.418483853340149f, + 0.773305058479309f, -0.418693602085114f, 0.772983849048615f, -0.418903112411499f, + 0.772662520408630f, -0.419112354516983f, 0.772340953350067f, -0.419321358203888f, + 0.772019267082214f, -0.419530123472214f, 0.771697402000427f, -0.419738620519638f, + 0.771375417709351f, -0.419946908950806f, 0.771053194999695f, -0.420154929161072f, + 0.770730912685394f, -0.420362681150436f, 0.770408391952515f, -0.420570224523544f, + 0.770085752010345f, -0.420777499675751f, 0.769762933254242f, -0.420984506607056f, + 0.769439935684204f, -0.421191304922104f, 0.769116818904877f, -0.421397835016251f, + 0.768793523311615f, -0.421604126691818f, 0.768470108509064f, -0.421810150146484f, + 0.768146514892578f, -0.422015935182571f, 0.767822742462158f, -0.422221481800079f, + 0.767498791217804f, -0.422426789999008f, 0.767174720764160f, -0.422631829977036f, + 0.766850471496582f, -0.422836631536484f, 0.766526103019714f, -0.423041164875031f, + 0.766201555728912f, -0.423245459794998f, 0.765876889228821f, -0.423449516296387f, + 0.765551984310150f, -0.423653304576874f, 0.765226960182190f, -0.423856884241104f, + 0.764901816844940f, -0.424060165882111f, 0.764576494693756f, -0.424263238906860f, + 0.764250993728638f, -0.424466013908386f, 0.763925373554230f, -0.424668580293655f, + 0.763599574565887f, -0.424870878458023f, 0.763273596763611f, -0.425072938203812f, + 0.762947499752045f, -0.425274729728699f, 0.762621283531189f, -0.425476282835007f, + 0.762294828891754f, -0.425677597522736f, 0.761968255043030f, -0.425878643989563f, + 0.761641561985016f, -0.426079452037811f, 0.761314690113068f, -0.426279991865158f, + 0.760987639427185f, -0.426480293273926f, 0.760660469532013f, -0.426680356264114f, + 0.760333120822906f, -0.426880151033401f, 0.760005652904511f, -0.427079707384110f, + 0.759678006172180f, -0.427278995513916f, 0.759350180625916f, -0.427478045225143f, + 0.759022235870361f, -0.427676826715469f, 0.758694171905518f, -0.427875369787216f, + 0.758365929126740f, -0.428073674440384f, 0.758037507534027f, -0.428271710872650f, + 0.757708966732025f, -0.428469479084015f, 0.757380247116089f, -0.428667008876801f, + 0.757051348686218f, -0.428864300251007f, 0.756722390651703f, -0.429061323404312f, + 0.756393194198608f, -0.429258108139038f, 0.756063878536224f, -0.429454624652863f, + 0.755734443664551f, -0.429650902748108f, 0.755404829978943f, -0.429846942424774f, + 0.755075037479401f, -0.430042684078217f, 0.754745125770569f, -0.430238217115402f, + 0.754415094852448f, -0.430433481931686f, 0.754084885120392f, -0.430628478527069f, + 0.753754496574402f, -0.430823236703873f, 0.753423988819122f, -0.431017726659775f, + 0.753093302249908f, -0.431211978197098f, 0.752762496471405f, -0.431405961513519f, + 0.752431571483612f, -0.431599706411362f, 0.752100467681885f, -0.431793183088303f, + 0.751769185066223f, -0.431986421346664f, 0.751437783241272f, -0.432179391384125f, + 0.751106262207031f, -0.432372123003006f, 0.750774562358856f, -0.432564586400986f, + 0.750442683696747f, -0.432756811380386f, 0.750110685825348f, -0.432948768138886f, + 0.749778568744659f, -0.433140486478806f, 0.749446272850037f, -0.433331936597824f, + 0.749113857746124f, -0.433523118495941f, 0.748781263828278f, -0.433714061975479f, + 0.748448550701141f, -0.433904737234116f, 0.748115658760071f, -0.434095174074173f, + 0.747782647609711f, -0.434285342693329f, 0.747449457645416f, -0.434475272893906f, + 0.747116148471832f, -0.434664934873581f, 0.746782720088959f, -0.434854328632355f, + 0.746449112892151f, -0.435043483972549f, 0.746115326881409f, -0.435232400894165f, + 0.745781481266022f, -0.435421019792557f, 0.745447397232056f, -0.435609430074692f, + 0.745113253593445f, -0.435797542333603f, 0.744778931140900f, -0.435985416173935f, + 0.744444429874420f, -0.436173021793365f, 0.744109809398651f, -0.436360388994217f, + 0.743775069713593f, -0.436547487974167f, 0.743440151214600f, -0.436734348535538f, + 0.743105113506317f, -0.436920911073685f, 0.742769956588745f, -0.437107264995575f, + 0.742434620857239f, -0.437293320894241f, 0.742099165916443f, -0.437479138374329f, + 0.741763532161713f, -0.437664687633514f, 0.741427779197693f, -0.437849998474121f, + 0.741091907024384f, -0.438035041093826f, 0.740755856037140f, -0.438219845294952f, + 0.740419685840607f, -0.438404351472855f, 0.740083336830139f, -0.438588619232178f, + 0.739746868610382f, -0.438772648572922f, 0.739410281181335f, -0.438956409692764f, + 0.739073514938354f, -0.439139902591705f, 0.738736629486084f, -0.439323127269745f, + 0.738399624824524f, -0.439506113529205f, 0.738062441349030f, -0.439688831567764f, + 0.737725138664246f, -0.439871311187744f, 0.737387716770172f, -0.440053492784500f, + 0.737050116062164f, -0.440235435962677f, 0.736712396144867f, -0.440417140722275f, + 0.736374497413635f, -0.440598547458649f, 0.736036539077759f, -0.440779715776443f, + 0.735698342323303f, -0.440960645675659f, 0.735360085964203f, -0.441141277551651f, + 0.735021650791168f, -0.441321671009064f, 0.734683096408844f, -0.441501796245575f, + 0.734344422817230f, -0.441681683063507f, 0.734005570411682f, -0.441861271858215f, + 0.733666598796844f, -0.442040622234344f, 0.733327507972717f, -0.442219734191895f, + 0.732988238334656f, -0.442398548126221f, 0.732648849487305f, -0.442577123641968f, + 0.732309341430664f, -0.442755430936813f, 0.731969714164734f, -0.442933470010757f, + 0.731629908084869f, -0.443111270666122f, 0.731289982795715f, -0.443288803100586f, + 0.730949878692627f, -0.443466067314148f, 0.730609714984894f, -0.443643063306808f, + 0.730269372463226f, -0.443819820880890f, 0.729928910732269f, -0.443996280431747f, + 0.729588270187378f, -0.444172531366348f, 0.729247510433197f, -0.444348484277725f, + 0.728906631469727f, -0.444524168968201f, 0.728565633296967f, -0.444699615240097f, + 0.728224515914917f, -0.444874793291092f, 0.727883219718933f, -0.445049703121185f, + 0.727541804313660f, -0.445224374532700f, 0.727200269699097f, -0.445398747920990f, + 0.726858556270599f, -0.445572882890701f, 0.726516723632813f, -0.445746749639511f, + 0.726174771785736f, -0.445920348167419f, 0.725832700729370f, -0.446093708276749f, + 0.725490510463715f, -0.446266770362854f, 0.725148141384125f, -0.446439594030380f, + 0.724805653095245f, -0.446612149477005f, 0.724463045597076f, -0.446784436702728f, + 0.724120318889618f, -0.446956485509872f, 0.723777413368225f, -0.447128236293793f, + 0.723434448242188f, -0.447299748659134f, 0.723091304302216f, -0.447470992803574f, + 0.722747981548309f, -0.447641968727112f, 0.722404599189758f, -0.447812676429749f, + 0.722061097621918f, -0.447983115911484f, 0.721717417240143f, -0.448153316974640f, + 0.721373617649078f, -0.448323249816895f, 0.721029698848724f, -0.448492884635925f, + 0.720685660839081f, -0.448662281036377f, 0.720341444015503f, -0.448831409215927f, + 0.719997107982636f, -0.449000298976898f, 0.719652712345123f, -0.449168890714645f, + 0.719308137893677f, -0.449337244033813f, 0.718963444232941f, -0.449505299329758f, + 0.718618571758270f, -0.449673116207123f, 0.718273639678955f, -0.449840664863586f, + 0.717928528785706f, -0.450007945299149f, 0.717583298683167f, -0.450174957513809f, + 0.717238008975983f, -0.450341701507568f, 0.716892480850220f, -0.450508207082748f, + 0.716546893119812f, -0.450674414634705f, 0.716201186180115f, -0.450840383768082f, + 0.715855300426483f, -0.451006084680557f, 0.715509355068207f, -0.451171487569809f, + 0.715163230895996f, -0.451336652040482f, 0.714816987514496f, -0.451501548290253f, + 0.714470624923706f, -0.451666176319122f, 0.714124143123627f, -0.451830536127090f, + 0.713777542114258f, -0.451994657516479f, 0.713430821895599f, -0.452158480882645f, + 0.713083922863007f, -0.452322036027908f, 0.712736964225769f, -0.452485352754593f, + 0.712389826774597f, -0.452648371458054f, 0.712042629718781f, -0.452811151742935f, + 0.711695253849030f, -0.452973634004593f, 0.711347758769989f, -0.453135877847672f, + 0.711000144481659f, -0.453297853469849f, 0.710652410984039f, -0.453459560871124f, + 0.710304558277130f, -0.453621000051498f, 0.709956526756287f, -0.453782171010971f, + 0.709608435630798f, -0.453943043947220f, 0.709260225296021f, -0.454103678464890f, + 0.708911836147308f, -0.454264044761658f, 0.708563387393951f, -0.454424172639847f, + 0.708214759826660f, -0.454584002494812f, 0.707866072654724f, -0.454743564128876f, + 0.707517206668854f, -0.454902857542038f, 0.707168221473694f, -0.455061882734299f, + 0.706819176673889f, -0.455220639705658f, 0.706469953060150f, -0.455379128456116f, + 0.706120610237122f, -0.455537378787994f, 0.705771148204803f, -0.455695331096649f, + 0.705421566963196f, -0.455853015184402f, 0.705071866512299f, -0.456010431051254f, + 0.704722046852112f, -0.456167578697205f, 0.704372167587280f, -0.456324487924576f, + 0.704022109508514f, -0.456481099128723f, 0.703671932220459f, -0.456637442111969f, + 0.703321635723114f, -0.456793516874313f, 0.702971220016479f, -0.456949323415756f, + 0.702620685100555f, -0.457104891538620f, 0.702270030975342f, -0.457260161638260f, + 0.701919257640839f, -0.457415163516998f, 0.701568365097046f, -0.457569897174835f, + 0.701217353343964f, -0.457724362611771f, 0.700866222381592f, -0.457878559827805f, + 0.700514972209930f, -0.458032488822937f, 0.700163602828979f, -0.458186149597168f, + 0.699812114238739f, -0.458339542150497f, 0.699460506439209f, -0.458492636680603f, + 0.699108779430389f, -0.458645492792130f, 0.698756933212280f, -0.458798080682755f, + 0.698404967784882f, -0.458950400352478f, 0.698052942752838f, -0.459102421998978f, + 0.697700738906860f, -0.459254205226898f, 0.697348415851593f, -0.459405690431595f, + 0.696996033191681f, -0.459556937217712f, 0.696643471717834f, -0.459707885980606f, + 0.696290850639343f, -0.459858566522598f, 0.695938050746918f, -0.460008978843689f, + 0.695585191249847f, -0.460159152746201f, 0.695232212543488f, -0.460309028625488f, + 0.694879114627838f, -0.460458606481552f, 0.694525837898254f, -0.460607945919037f, + 0.694172501564026f, -0.460757017135620f, 0.693819046020508f, -0.460905820131302f, + 0.693465530872345f, -0.461054325103760f, 0.693111836910248f, -0.461202591657639f, + 0.692758023738861f, -0.461350560188293f, 0.692404091358185f, -0.461498260498047f, + 0.692050099372864f, -0.461645722389221f, 0.691695988178253f, -0.461792886257172f, + 0.691341698169708f, -0.461939752101898f, 0.690987348556519f, -0.462086379528046f, + 0.690632879734039f, -0.462232738733292f, 0.690278291702271f, -0.462378799915314f, + 0.689923584461212f, -0.462524622678757f, 0.689568817615509f, -0.462670147418976f, + 0.689213871955872f, -0.462815403938293f, 0.688858866691589f, -0.462960392236710f, + 0.688503682613373f, -0.463105112314224f, 0.688148438930511f, -0.463249564170837f, + 0.687793076038361f, -0.463393747806549f, 0.687437593936920f, -0.463537633419037f, + 0.687082052230835f, -0.463681250810623f, 0.686726331710815f, -0.463824629783630f, + 0.686370551586151f, -0.463967710733414f, 0.686014592647552f, -0.464110493659973f, + 0.685658574104309f, -0.464253038167953f, 0.685302436351776f, -0.464395314455032f, + 0.684946238994598f, -0.464537292718887f, 0.684589862823486f, -0.464679002761841f, + 0.684233427047729f, -0.464820444583893f, 0.683876872062683f, -0.464961618185043f, + 0.683520197868347f, -0.465102523565292f, 0.683163404464722f, -0.465243130922318f, + 0.682806491851807f, -0.465383470058441f, 0.682449519634247f, -0.465523540973663f, + 0.682092368602753f, -0.465663343667984f, 0.681735157966614f, -0.465802878141403f, + 0.681377887725830f, -0.465942144393921f, 0.681020438671112f, -0.466081112623215f, + 0.680662930011749f, -0.466219812631607f, 0.680305242538452f, -0.466358244419098f, + 0.679947495460510f, -0.466496407985687f, 0.679589688777924f, -0.466634273529053f, + 0.679231703281403f, -0.466771900653839f, 0.678873658180237f, -0.466909229755402f, + 0.678515493869781f, -0.467046260833740f, 0.678157210350037f, -0.467183053493500f, + 0.677798807621002f, -0.467319577932358f, 0.677440345287323f, -0.467455804347992f, + 0.677081763744354f, -0.467591762542725f, 0.676723062992096f, -0.467727422714233f, + 0.676364302635193f, -0.467862844467163f, 0.676005363464355f, -0.467997968196869f, + 0.675646364688873f, -0.468132823705673f, 0.675287246704102f, -0.468267410993576f, + 0.674928069114685f, -0.468401730060577f, 0.674568772315979f, -0.468535751104355f, + 0.674209356307983f, -0.468669503927231f, 0.673849821090698f, -0.468802988529205f, + 0.673490226268768f, -0.468936175107956f, 0.673130512237549f, -0.469069123268127f, + 0.672770678997040f, -0.469201773405075f, 0.672410726547241f, -0.469334155321121f, + 0.672050714492798f, -0.469466239213943f, 0.671690583229065f, -0.469598054885864f, + 0.671330332756042f, -0.469729602336884f, 0.670970022678375f, -0.469860881567001f, + 0.670609593391418f, -0.469991862773895f, 0.670249044895172f, -0.470122605562210f, + 0.669888436794281f, -0.470253020524979f, 0.669527709484100f, -0.470383197069168f, + 0.669166862964630f, -0.470513075590134f, 0.668805956840515f, -0.470642685890198f, + 0.668444931507111f, -0.470772027969360f, 0.668083786964417f, -0.470901101827621f, + 0.667722582817078f, -0.471029877662659f, 0.667361259460449f, -0.471158385276794f, + 0.666999816894531f, -0.471286594867706f, 0.666638314723969f, -0.471414536237717f, + 0.666276693344116f, -0.471542209386826f, 0.665914952754974f, -0.471669614315033f, + 0.665553152561188f, -0.471796721220016f, 0.665191233158112f, -0.471923559904099f, + 0.664829254150391f, -0.472050130367279f, 0.664467096328735f, -0.472176402807236f, + 0.664104938507080f, -0.472302407026291f, 0.663742601871490f, -0.472428143024445f, + 0.663380205631256f, -0.472553610801697f, 0.663017749786377f, -0.472678780555725f, + 0.662655174732208f, -0.472803652286530f, 0.662292480468750f, -0.472928285598755f, + 0.661929666996002f, -0.473052620887756f, 0.661566793918610f, -0.473176687955856f, + 0.661203861236572f, -0.473300457000732f, 0.660840749740601f, -0.473423957824707f, + 0.660477638244629f, -0.473547190427780f, 0.660114347934723f, -0.473670125007629f, + 0.659750998020172f, -0.473792791366577f, 0.659387588500977f, -0.473915189504623f, + 0.659024059772491f, -0.474037289619446f, 0.658660411834717f, -0.474159121513367f, + 0.658296704292297f, -0.474280685186386f, 0.657932877540588f, -0.474401950836182f, + 0.657568991184235f, -0.474522948265076f, 0.657204985618591f, -0.474643647670746f, + 0.656840860843658f, -0.474764078855515f, 0.656476676464081f, -0.474884241819382f, + 0.656112432479858f, -0.475004136562347f, 0.655748009681702f, -0.475123733282089f, + 0.655383586883545f, -0.475243031978607f, 0.655019044876099f, -0.475362062454224f, + 0.654654383659363f, -0.475480824708939f, 0.654289662837982f, -0.475599318742752f, + 0.653924822807312f, -0.475717514753342f, 0.653559923171997f, -0.475835442543030f, + 0.653194904327393f, -0.475953072309494f, 0.652829825878143f, -0.476070433855057f, + 0.652464628219604f, -0.476187497377396f, 0.652099311351776f, -0.476304292678833f, + 0.651733994483948f, -0.476420819759369f, 0.651368498802185f, -0.476537048816681f, + 0.651003003120422f, -0.476653009653091f, 0.650637328624725f, -0.476768702268600f, + 0.650271594524384f, -0.476884096860886f, 0.649905800819397f, -0.476999223232269f, + 0.649539887905121f, -0.477114051580429f, 0.649173915386200f, -0.477228611707687f, + 0.648807883262634f, -0.477342873811722f, 0.648441672325134f, -0.477456867694855f, + 0.648075461387634f, -0.477570593357086f, 0.647709131240845f, -0.477684020996094f, + 0.647342681884766f, -0.477797180414200f, 0.646976172924042f, -0.477910041809082f, + 0.646609604358673f, -0.478022634983063f, 0.646242916584015f, -0.478134930133820f, + 0.645876109600067f, -0.478246957063675f, 0.645509302616119f, -0.478358715772629f, + 0.645142316818237f, -0.478470176458359f, 0.644775331020355f, -0.478581339120865f, + 0.644408226013184f, -0.478692263364792f, 0.644041001796722f, -0.478802859783173f, + 0.643673717975616f, -0.478913217782974f, 0.643306374549866f, -0.479023247957230f, + 0.642938911914825f, -0.479133039712906f, 0.642571389675140f, -0.479242533445358f, + 0.642203748226166f, -0.479351729154587f, 0.641836047172546f, -0.479460656642914f, + 0.641468286514282f, -0.479569315910339f, 0.641100406646729f, -0.479677677154541f, + 0.640732467174530f, -0.479785770177841f, 0.640364408493042f, -0.479893565177917f, + 0.639996349811554f, -0.480001062154770f, 0.639628112316132f, -0.480108320713043f, + 0.639259815216064f, -0.480215251445770f, 0.638891458511353f, -0.480321943759918f, + 0.638523042201996f, -0.480428308248520f, 0.638154506683350f, -0.480534434318542f, + 0.637785911560059f, -0.480640232563019f, 0.637417197227478f, -0.480745792388916f, + 0.637048482894897f, -0.480851024389267f, 0.636679589748383f, -0.480956017971039f, + 0.636310696601868f, -0.481060713529587f, 0.635941684246063f, -0.481165111064911f, + 0.635572552680969f, -0.481269240379334f, 0.635203421115875f, -0.481373071670532f, + 0.634834170341492f, -0.481476634740829f, 0.634464859962463f, -0.481579899787903f, + 0.634095430374146f, -0.481682896614075f, 0.633725941181183f, -0.481785595417023f, + 0.633356392383575f, -0.481888025999069f, 0.632986724376678f, -0.481990188360214f, + 0.632616996765137f, -0.482092022895813f, 0.632247209548950f, -0.482193619012833f, + 0.631877362728119f, -0.482294887304306f, 0.631507396697998f, -0.482395917177200f, + 0.631137371063232f, -0.482496619224548f, 0.630767226219177f, -0.482597053050995f, + 0.630397081375122f, -0.482697218656540f, 0.630026817321777f, -0.482797086238861f, + 0.629656434059143f, -0.482896685600281f, 0.629286050796509f, -0.482995986938477f, + 0.628915548324585f, -0.483094990253448f, 0.628544986248016f, -0.483193725347519f, + 0.628174364566803f, -0.483292192220688f, 0.627803623676300f, -0.483390361070633f, + 0.627432823181152f, -0.483488231897354f, 0.627061963081360f, -0.483585834503174f, + 0.626691043376923f, -0.483683139085770f, 0.626320004463196f, -0.483780175447464f, + 0.625948905944824f, -0.483876913785934f, 0.625577747821808f, -0.483973383903503f, + 0.625206530094147f, -0.484069555997849f, 0.624835193157196f, -0.484165430068970f, + 0.624463796615601f, -0.484261035919189f, 0.624092340469360f, -0.484356373548508f, + 0.623720824718475f, -0.484451413154602f, 0.623349189758301f, -0.484546154737473f, + 0.622977554798126f, -0.484640628099442f, 0.622605800628662f, -0.484734803438187f, + 0.622233927249908f, -0.484828680753708f, 0.621862053871155f, -0.484922289848328f, + 0.621490061283112f, -0.485015630722046f, 0.621118068695068f, -0.485108673572540f, + 0.620745956897736f, -0.485201418399811f, 0.620373785495758f, -0.485293895006180f, + 0.620001494884491f, -0.485386073589325f, 0.619629204273224f, -0.485477954149246f, + 0.619256794452667f, -0.485569566488266f, 0.618884325027466f, -0.485660910606384f, + 0.618511795997620f, -0.485751956701279f, 0.618139207363129f, -0.485842704772949f, + 0.617766559123993f, -0.485933154821396f, 0.617393791675568f, -0.486023366451263f, + 0.617020964622498f, -0.486113250255585f, 0.616648077964783f, -0.486202865839005f, + 0.616275131702423f, -0.486292183399200f, 0.615902125835419f, -0.486381232738495f, + 0.615529060363770f, -0.486469984054565f, 0.615155875682831f, -0.486558437347412f, + 0.614782691001892f, -0.486646622419357f, 0.614409387111664f, -0.486734509468079f, + 0.614036023616791f, -0.486822128295898f, 0.613662600517273f, -0.486909449100494f, + 0.613289117813110f, -0.486996471881866f, 0.612915575504303f, -0.487083226442337f, + 0.612541973590851f, -0.487169682979584f, 0.612168252468109f, -0.487255871295929f, + 0.611794531345367f, -0.487341761589050f, 0.611420691013336f, -0.487427353858948f, + 0.611046791076660f, -0.487512677907944f, 0.610672831535339f, -0.487597703933716f, + 0.610298871994019f, -0.487682431936264f, 0.609924793243408f, -0.487766891717911f, + 0.609550595283508f, -0.487851053476334f, 0.609176397323608f, -0.487934947013855f, + 0.608802139759064f, -0.488018542528152f, 0.608427822589874f, -0.488101840019226f, + 0.608053386211395f, -0.488184869289398f, 0.607678949832916f, -0.488267600536346f, + 0.607304394245148f, -0.488350033760071f, 0.606929838657379f, -0.488432198762894f, + 0.606555163860321f, -0.488514065742493f, 0.606180429458618f, -0.488595664501190f, + 0.605805635452271f, -0.488676935434341f, 0.605430841445923f, -0.488757967948914f, + 0.605055928230286f, -0.488838672637939f, 0.604680955410004f, -0.488919109106064f, + 0.604305922985077f, -0.488999247550964f, 0.603930830955505f, -0.489079117774963f, + 0.603555679321289f, -0.489158689975739f, 0.603180468082428f, -0.489237964153290f, + 0.602805197238922f, -0.489316970109940f, 0.602429866790771f, -0.489395678043365f, + 0.602054476737976f, -0.489474087953568f, 0.601679027080536f, -0.489552229642868f, + 0.601303517818451f, -0.489630073308945f, 0.600927948951721f, -0.489707618951797f, + 0.600552320480347f, -0.489784896373749f, 0.600176632404327f, -0.489861875772476f, + 0.599800884723663f, -0.489938557147980f, 0.599425077438354f, -0.490014940500259f, + 0.599049210548401f, -0.490091055631638f, 0.598673284053802f, -0.490166902542114f, + 0.598297297954559f, -0.490242421627045f, 0.597921252250671f, -0.490317672491074f, + 0.597545146942139f, -0.490392625331879f, 0.597168982028961f, -0.490467309951782f, + 0.596792817115784f, -0.490541696548462f, 0.596416532993317f, -0.490615785121918f, + 0.596040189266205f, -0.490689605474472f, 0.595663845539093f, -0.490763127803802f, + 0.595287382602692f, -0.490836352109909f, 0.594910860061646f, -0.490909278392792f, + 0.594534337520599f, -0.490981936454773f, 0.594157755374908f, -0.491054296493530f, + 0.593781054019928f, -0.491126358509064f, 0.593404352664948f, -0.491198152303696f, + 0.593027591705322f, -0.491269648075104f, 0.592650771141052f, -0.491340845823288f, + 0.592273890972137f, -0.491411775350571f, 0.591896951198578f, -0.491482406854630f, + 0.591519951820374f, -0.491552740335464f, 0.591142892837524f, -0.491622805595398f, + 0.590765833854675f, -0.491692543029785f, 0.590388655662537f, -0.491762012243271f, + 0.590011477470398f, -0.491831213235855f, 0.589634180068970f, -0.491900116205215f, + 0.589256882667542f, -0.491968721151352f, 0.588879525661469f, -0.492037028074265f, + 0.588502109050751f, -0.492105036973953f, 0.588124632835388f, -0.492172777652740f, + 0.587747097015381f, -0.492240220308304f, 0.587369561195374f, -0.492307394742966f, + 0.586991965770721f, -0.492374241352081f, 0.586614251136780f, -0.492440819740295f, + 0.586236536502838f, -0.492507129907608f, 0.585858762264252f, -0.492573112249374f, + 0.585480928421021f, -0.492638826370239f, 0.585103094577789f, -0.492704242467880f, + 0.584725141525269f, -0.492769360542297f, 0.584347188472748f, -0.492834210395813f, + 0.583969175815582f, -0.492898762226105f, 0.583591103553772f, -0.492963016033173f, + 0.583212971687317f, -0.493026971817017f, 0.582834780216217f, -0.493090659379959f, + 0.582456588745117f, -0.493154048919678f, 0.582078278064728f, -0.493217140436172f, + 0.581699967384338f, -0.493279963731766f, 0.581321597099304f, -0.493342459201813f, + 0.580943167209625f, -0.493404686450958f, 0.580564737319946f, -0.493466645479202f, + 0.580186247825623f, -0.493528276681900f, 0.579807698726654f, -0.493589639663696f, + 0.579429090023041f, -0.493650704622269f, 0.579050421714783f, -0.493711471557617f, + 0.578671753406525f, -0.493771970272064f, 0.578292965888977f, -0.493832170963287f, + 0.577914178371429f, -0.493892073631287f, 0.577535390853882f, -0.493951678276062f, + 0.577156484127045f, -0.494011014699936f, 0.576777577400208f, -0.494070053100586f, + 0.576398611068726f, -0.494128793478012f, 0.576019585132599f, -0.494187235832214f, + 0.575640499591827f, -0.494245409965515f, 0.575261414051056f, -0.494303256273270f, + 0.574882268905640f, -0.494360834360123f, 0.574503064155579f, -0.494418144226074f, + 0.574123859405518f, -0.494475126266479f, 0.573744535446167f, -0.494531840085983f, + 0.573365211486816f, -0.494588255882263f, 0.572985887527466f, -0.494644373655319f, + 0.572606444358826f, -0.494700223207474f, 0.572227001190186f, -0.494755744934082f, + 0.571847498416901f, -0.494810998439789f, 0.571467995643616f, -0.494865983724594f, + 0.571088373661041f, -0.494920641183853f, 0.570708811283112f, -0.494975030422211f, + 0.570329129695892f, -0.495029091835022f, 0.569949388504028f, -0.495082914829254f, + 0.569569647312164f, -0.495136409997940f, 0.569189906120300f, -0.495189607143402f, + 0.568810045719147f, -0.495242536067963f, 0.568430185317993f, -0.495295166969299f, + 0.568050265312195f, -0.495347499847412f, 0.567670345306396f, -0.495399564504623f, + 0.567290365695953f, -0.495451331138611f, 0.566910326480865f, -0.495502769947052f, + 0.566530287265778f, -0.495553970336914f, 0.566150128841400f, -0.495604842901230f, + 0.565770030021667f, -0.495655417442322f, 0.565389811992645f, -0.495705723762512f, + 0.565009593963623f, -0.495755732059479f, 0.564629375934601f, -0.495805442333221f, + 0.564249038696289f, -0.495854884386063f, 0.563868701457977f, -0.495903998613358f, + 0.563488364219666f, -0.495952844619751f, 0.563107967376709f, -0.496001392602921f, + 0.562727510929108f, -0.496049642562866f, 0.562346994876862f, -0.496097624301910f, + 0.561966478824615f, -0.496145308017731f, 0.561585903167725f, -0.496192663908005f, + 0.561205327510834f, -0.496239781379700f, 0.560824692249298f, -0.496286571025848f, + 0.560444056987762f, -0.496333062648773f, 0.560063362121582f, -0.496379286050797f, + 0.559682607650757f, -0.496425211429596f, 0.559301853179932f, -0.496470838785172f, + 0.558921039104462f, -0.496516168117523f, 0.558540165424347f, -0.496561229228973f, + 0.558159291744232f, -0.496605962514877f, 0.557778418064117f, -0.496650427579880f, + 0.557397484779358f, -0.496694594621658f, 0.557016491889954f, -0.496738493442535f, + 0.556635499000549f, -0.496782064437866f, 0.556254446506500f, -0.496825367212296f, + 0.555873334407806f, -0.496868371963501f, 0.555492222309113f, -0.496911078691483f, + 0.555111110210419f, -0.496953487396240f, 0.554729938507080f, -0.496995598077774f, + 0.554348707199097f, -0.497037440538406f, 0.553967475891113f, -0.497078984975815f, + 0.553586184978485f, -0.497120231389999f, 0.553204894065857f, -0.497161179780960f, + 0.552823603153229f, -0.497201830148697f, 0.552442193031311f, -0.497242212295532f, + 0.552060842514038f, -0.497282296419144f, 0.551679372787476f, -0.497322082519531f, + 0.551297962665558f, -0.497361570596695f, 0.550916433334351f, -0.497400760650635f, + 0.550534904003143f, -0.497439652681351f, 0.550153374671936f, -0.497478276491165f, + 0.549771785736084f, -0.497516602277756f, 0.549390196800232f, -0.497554630041122f, + 0.549008548259735f, -0.497592359781265f, 0.548626899719238f, -0.497629791498184f, + 0.548245191574097f, -0.497666954994202f, 0.547863483428955f, -0.497703820466995f, + 0.547481775283813f, -0.497740387916565f, 0.547099947929382f, -0.497776657342911f, + 0.546718180179596f, -0.497812628746033f, 0.546336352825165f, -0.497848302125931f, + 0.545954465866089f, -0.497883707284927f, 0.545572578907013f, -0.497918814420700f, + 0.545190691947937f, -0.497953623533249f, 0.544808745384216f, -0.497988134622574f, + 0.544426798820496f, -0.498022347688675f, 0.544044792652130f, -0.498056292533875f, + 0.543662786483765f, -0.498089909553528f, 0.543280720710754f, -0.498123258352280f, + 0.542898654937744f, -0.498156309127808f, 0.542516589164734f, -0.498189061880112f, + 0.542134463787079f, -0.498221516609192f, 0.541752278804779f, -0.498253703117371f, + 0.541370153427124f, -0.498285561800003f, 0.540987968444824f, -0.498317152261734f, + 0.540605723857880f, -0.498348444700241f, 0.540223479270935f, -0.498379439115524f, + 0.539841234683990f, -0.498410135507584f, 0.539458930492401f, -0.498440563678741f, + 0.539076626300812f, -0.498470664024353f, 0.538694262504578f, -0.498500496149063f, + 0.538311958312988f, -0.498530030250549f, 0.537929534912109f, -0.498559266328812f, + 0.537547171115875f, -0.498588204383850f, 0.537164747714996f, -0.498616874217987f, + 0.536782264709473f, -0.498645216226578f, 0.536399841308594f, -0.498673290014267f, + 0.536017298698425f, -0.498701065778732f, 0.535634815692902f, -0.498728543519974f, + 0.535252273082733f, -0.498755723237991f, 0.534869730472565f, -0.498782604932785f, + 0.534487187862396f, -0.498809218406677f, 0.534104585647583f, -0.498835533857346f, + 0.533721983432770f, -0.498861521482468f, 0.533339321613312f, -0.498887240886688f, + 0.532956659793854f, -0.498912662267685f, 0.532573997974396f, -0.498937815427780f, + 0.532191336154938f, -0.498962640762329f, 0.531808614730835f, -0.498987197875977f, + 0.531425893306732f, -0.499011427164078f, 0.531043112277985f, -0.499035388231277f, + 0.530660390853882f, -0.499059051275253f, 0.530277609825134f, -0.499082416296005f, + 0.529894769191742f, -0.499105513095856f, 0.529511988162994f, -0.499128282070160f, + 0.529129147529602f, -0.499150782823563f, 0.528746306896210f, -0.499172955751419f, + 0.528363406658173f, -0.499194860458374f, 0.527980506420136f, -0.499216467142105f, + 0.527597606182098f, -0.499237775802612f, 0.527214705944061f, -0.499258816242218f, + 0.526831746101379f, -0.499279528856277f, 0.526448845863342f, -0.499299973249435f, + 0.526065826416016f, -0.499320119619370f, 0.525682866573334f, -0.499339967966080f, + 0.525299847126007f, -0.499359518289566f, 0.524916887283325f, -0.499378770589828f, + 0.524533808231354f, -0.499397724866867f, 0.524150788784027f, -0.499416410923004f, + 0.523767769336700f, -0.499434769153595f, 0.523384690284729f, -0.499452859163284f, + 0.523001611232758f, -0.499470651149750f, 0.522618472576141f, -0.499488145112991f, + 0.522235393524170f, -0.499505341053009f, 0.521852254867554f, -0.499522238969803f, + 0.521469116210938f, -0.499538868665695f, 0.521085977554321f, -0.499555170536041f, + 0.520702838897705f, -0.499571204185486f, 0.520319640636444f, -0.499586939811707f, + 0.519936442375183f, -0.499602377414703f, 0.519553244113922f, -0.499617516994476f, + 0.519170045852661f, -0.499632388353348f, 0.518786847591400f, -0.499646931886673f, + 0.518403589725494f, -0.499661177396774f, 0.518020391464233f, -0.499675154685974f, + 0.517637133598328f, -0.499688833951950f, 0.517253875732422f, -0.499702215194702f, + 0.516870558261871f, -0.499715298414230f, 0.516487300395966f, -0.499728083610535f, + 0.516103982925415f, -0.499740600585938f, 0.515720725059509f, -0.499752789735794f, + 0.515337407588959f, -0.499764710664749f, 0.514954090118408f, -0.499776333570480f, + 0.514570772647858f, -0.499787658452988f, 0.514187395572662f, -0.499798685312271f, + 0.513804078102112f, -0.499809414148331f, 0.513420701026917f, -0.499819844961166f, + 0.513037383556366f, -0.499830007553101f, 0.512654006481171f, -0.499839842319489f, + 0.512270629405975f, -0.499849408864975f, 0.511887252330780f, -0.499858677387238f, + 0.511503815650940f, -0.499867647886276f, 0.511120438575745f, -0.499876320362091f, + 0.510737061500549f, -0.499884694814682f, 0.510353624820709f, -0.499892801046371f, + 0.509970188140869f, -0.499900579452515f, 0.509586811065674f, -0.499908089637756f, + 0.509203374385834f, -0.499915301799774f, 0.508819937705994f, -0.499922215938568f, + 0.508436501026154f, -0.499928832054138f, 0.508053064346313f, -0.499935150146484f, + 0.507669627666473f, -0.499941170215607f, 0.507286131381989f, -0.499946922063828f, + 0.506902694702148f, -0.499952346086502f, 0.506519258022308f, -0.499957501888275f, + 0.506135761737823f, -0.499962359666824f, 0.505752325057983f, -0.499966919422150f, + 0.505368828773499f, -0.499971181154251f, 0.504985332489014f, -0.499975144863129f, + 0.504601895809174f, -0.499978810548782f, 0.504218399524689f, -0.499982208013535f, + 0.503834903240204f, -0.499985307455063f, 0.503451406955719f, -0.499988079071045f, + 0.503067970275879f, -0.499990582466125f, 0.502684473991394f, -0.499992787837982f, + 0.502300977706909f, -0.499994695186615f, 0.501917481422424f, -0.499996334314346f, + 0.501533985137939f, -0.499997645616531f, 0.501150488853455f, -0.499998688697815f, + 0.500766992568970f, -0.499999403953552f, 0.500383496284485f, -0.499999850988388f, +}; + + + +/** +* @brief Initialization function for the floating-point RFFT/RIFFT. +* @deprecated Do not use this function. It has been superceded by \ref arm_rfft_fast_init_f32 and will be removed +* in the future. +* @param[in,out] *S points to an instance of the floating-point RFFT/RIFFT structure. +* @param[in,out] *S_CFFT points to an instance of the floating-point CFFT/CIFFT structure. +* @param[in] fftLenReal length of the FFT. +* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. +* +* \par Description: +* \par +* The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 128, 512, 2048. +* \par +* The parameter ifftFlagR controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated. +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* This function also initializes Twiddle factor table. +*/ + +/** +* @} end of RealFFT_Table group +*/ + +/** +* @addtogroup RealFFT +* @{ +*/ + +arm_status arm_rfft_init_f32( + arm_rfft_instance_f32 * S, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag) +{ + + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialize the Real FFT length */ + S->fftLenReal = (uint16_t) fftLenReal; + + /* Initialize the Complex FFT length */ + S->fftLenBy2 = (uint16_t) fftLenReal / 2U; + + /* Initialize the Twiddle coefficientA pointer */ + S->pTwiddleAReal = (float32_t *) realCoefA; + + /* Initialize the Twiddle coefficientB pointer */ + S->pTwiddleBReal = (float32_t *) realCoefB; + + /* Initialize the Flag for selection of RFFT or RIFFT */ + S->ifftFlagR = (uint8_t) ifftFlagR; + + /* Initialize the Flag for calculation Bit reversal or not */ + S->bitReverseFlagR = (uint8_t) bitReverseFlag; + + /* Initializations of structure parameters depending on the FFT length */ + switch (S->fftLenReal) + { + /* Init table modifier value */ + case 8192U: + S->twidCoefRModifier = 1U; + break; + case 2048U: + S->twidCoefRModifier = 4U; + break; + case 512U: + S->twidCoefRModifier = 16U; + break; + case 128U: + S->twidCoefRModifier = 64U; + break; + default: + /* Reporting argument error if rfftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + /* Init Complex FFT Instance */ + S->pCfft = S_CFFT; + + if (S->ifftFlagR) + { + /* Initializes the CIFFT Module for fftLenreal/2 length */ + arm_cfft_radix4_init_f32(S->pCfft, S->fftLenBy2, 1U, 0U); + } + else + { + /* Initializes the CFFT Module for fftLenreal/2 length */ + arm_cfft_radix4_init_f32(S->pCfft, S->fftLenBy2, 0U, 0U); + } + + /* return the status of RFFT Init function */ + return (status); + +} + + /** + * @} end of RealFFT group + */ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c new file mode 100644 index 0000000..3d1f229 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q15.c @@ -0,0 +1,2229 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_rfft_init_q15.c + * Description: RFFT & RIFFT Q15 initialisation function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" +#include "arm_const_structs.h" + +/** +* @ingroup RealFFT +*/ + +/** + * @addtogroup RealFFT_Table Real FFT Tables +* @{ +*/ + +/** +* \par +* Generation fixed-point realCoefAQ15 array in Q15 format: +* \par +* n = 4096 +*
for (i = 0; i < n; i++)
+*  {
+*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));
+*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
+*  } 
+* \par +* Convert to fixed point Q15 format +* round(pATable[i] * pow(2, 15)) +*/ +const q15_t ALIGN4 realCoefAQ15[8192] = { + (q15_t)0x4000, (q15_t)0xc000, (q15_t)0x3ff3, (q15_t)0xc000, (q15_t)0x3fe7, (q15_t)0xc000, (q15_t)0x3fda, (q15_t)0xc000, + (q15_t)0x3fce, (q15_t)0xc000, (q15_t)0x3fc1, (q15_t)0xc000, (q15_t)0x3fb5, (q15_t)0xc000, (q15_t)0x3fa8, (q15_t)0xc000, + (q15_t)0x3f9b, (q15_t)0xc000, (q15_t)0x3f8f, (q15_t)0xc000, (q15_t)0x3f82, (q15_t)0xc000, (q15_t)0x3f76, (q15_t)0xc001, + (q15_t)0x3f69, (q15_t)0xc001, (q15_t)0x3f5d, (q15_t)0xc001, (q15_t)0x3f50, (q15_t)0xc001, (q15_t)0x3f44, (q15_t)0xc001, + (q15_t)0x3f37, (q15_t)0xc001, (q15_t)0x3f2a, (q15_t)0xc001, (q15_t)0x3f1e, (q15_t)0xc002, (q15_t)0x3f11, (q15_t)0xc002, + (q15_t)0x3f05, (q15_t)0xc002, (q15_t)0x3ef8, (q15_t)0xc002, (q15_t)0x3eec, (q15_t)0xc002, (q15_t)0x3edf, (q15_t)0xc003, + (q15_t)0x3ed2, (q15_t)0xc003, (q15_t)0x3ec6, (q15_t)0xc003, (q15_t)0x3eb9, (q15_t)0xc003, (q15_t)0x3ead, (q15_t)0xc004, + (q15_t)0x3ea0, (q15_t)0xc004, (q15_t)0x3e94, (q15_t)0xc004, (q15_t)0x3e87, (q15_t)0xc004, (q15_t)0x3e7a, (q15_t)0xc005, + (q15_t)0x3e6e, (q15_t)0xc005, (q15_t)0x3e61, (q15_t)0xc005, (q15_t)0x3e55, (q15_t)0xc006, (q15_t)0x3e48, (q15_t)0xc006, + (q15_t)0x3e3c, (q15_t)0xc006, (q15_t)0x3e2f, (q15_t)0xc007, (q15_t)0x3e23, (q15_t)0xc007, (q15_t)0x3e16, (q15_t)0xc007, + (q15_t)0x3e09, (q15_t)0xc008, (q15_t)0x3dfd, (q15_t)0xc008, (q15_t)0x3df0, (q15_t)0xc009, (q15_t)0x3de4, (q15_t)0xc009, + (q15_t)0x3dd7, (q15_t)0xc009, (q15_t)0x3dcb, (q15_t)0xc00a, (q15_t)0x3dbe, (q15_t)0xc00a, (q15_t)0x3db2, (q15_t)0xc00b, + (q15_t)0x3da5, (q15_t)0xc00b, (q15_t)0x3d98, (q15_t)0xc00c, (q15_t)0x3d8c, (q15_t)0xc00c, (q15_t)0x3d7f, (q15_t)0xc00d, + (q15_t)0x3d73, (q15_t)0xc00d, (q15_t)0x3d66, (q15_t)0xc00e, (q15_t)0x3d5a, (q15_t)0xc00e, (q15_t)0x3d4d, (q15_t)0xc00f, + (q15_t)0x3d40, (q15_t)0xc00f, (q15_t)0x3d34, (q15_t)0xc010, (q15_t)0x3d27, (q15_t)0xc010, (q15_t)0x3d1b, (q15_t)0xc011, + (q15_t)0x3d0e, (q15_t)0xc011, (q15_t)0x3d02, (q15_t)0xc012, (q15_t)0x3cf5, (q15_t)0xc013, (q15_t)0x3ce9, (q15_t)0xc013, + (q15_t)0x3cdc, (q15_t)0xc014, (q15_t)0x3cd0, (q15_t)0xc014, (q15_t)0x3cc3, (q15_t)0xc015, (q15_t)0x3cb6, (q15_t)0xc016, + (q15_t)0x3caa, (q15_t)0xc016, (q15_t)0x3c9d, (q15_t)0xc017, (q15_t)0x3c91, (q15_t)0xc018, (q15_t)0x3c84, (q15_t)0xc018, + (q15_t)0x3c78, (q15_t)0xc019, (q15_t)0x3c6b, (q15_t)0xc01a, (q15_t)0x3c5f, (q15_t)0xc01a, (q15_t)0x3c52, (q15_t)0xc01b, + (q15_t)0x3c45, (q15_t)0xc01c, (q15_t)0x3c39, (q15_t)0xc01d, (q15_t)0x3c2c, (q15_t)0xc01d, (q15_t)0x3c20, (q15_t)0xc01e, + (q15_t)0x3c13, (q15_t)0xc01f, (q15_t)0x3c07, (q15_t)0xc020, (q15_t)0x3bfa, (q15_t)0xc020, (q15_t)0x3bee, (q15_t)0xc021, + (q15_t)0x3be1, (q15_t)0xc022, (q15_t)0x3bd5, (q15_t)0xc023, (q15_t)0x3bc8, (q15_t)0xc024, (q15_t)0x3bbc, (q15_t)0xc024, + (q15_t)0x3baf, (q15_t)0xc025, (q15_t)0x3ba2, (q15_t)0xc026, (q15_t)0x3b96, (q15_t)0xc027, (q15_t)0x3b89, (q15_t)0xc028, + (q15_t)0x3b7d, (q15_t)0xc029, (q15_t)0x3b70, (q15_t)0xc02a, (q15_t)0x3b64, (q15_t)0xc02b, (q15_t)0x3b57, (q15_t)0xc02b, + (q15_t)0x3b4b, (q15_t)0xc02c, (q15_t)0x3b3e, (q15_t)0xc02d, (q15_t)0x3b32, (q15_t)0xc02e, (q15_t)0x3b25, (q15_t)0xc02f, + (q15_t)0x3b19, (q15_t)0xc030, (q15_t)0x3b0c, (q15_t)0xc031, (q15_t)0x3b00, (q15_t)0xc032, (q15_t)0x3af3, (q15_t)0xc033, + (q15_t)0x3ae6, (q15_t)0xc034, (q15_t)0x3ada, (q15_t)0xc035, (q15_t)0x3acd, (q15_t)0xc036, (q15_t)0x3ac1, (q15_t)0xc037, + (q15_t)0x3ab4, (q15_t)0xc038, (q15_t)0x3aa8, (q15_t)0xc039, (q15_t)0x3a9b, (q15_t)0xc03a, (q15_t)0x3a8f, (q15_t)0xc03b, + (q15_t)0x3a82, (q15_t)0xc03c, (q15_t)0x3a76, (q15_t)0xc03d, (q15_t)0x3a69, (q15_t)0xc03f, (q15_t)0x3a5d, (q15_t)0xc040, + (q15_t)0x3a50, (q15_t)0xc041, (q15_t)0x3a44, (q15_t)0xc042, (q15_t)0x3a37, (q15_t)0xc043, (q15_t)0x3a2b, (q15_t)0xc044, + (q15_t)0x3a1e, (q15_t)0xc045, (q15_t)0x3a12, (q15_t)0xc047, (q15_t)0x3a05, (q15_t)0xc048, (q15_t)0x39f9, (q15_t)0xc049, + (q15_t)0x39ec, (q15_t)0xc04a, (q15_t)0x39e0, (q15_t)0xc04b, (q15_t)0x39d3, (q15_t)0xc04c, (q15_t)0x39c7, (q15_t)0xc04e, + (q15_t)0x39ba, (q15_t)0xc04f, (q15_t)0x39ae, (q15_t)0xc050, (q15_t)0x39a1, (q15_t)0xc051, (q15_t)0x3995, (q15_t)0xc053, + (q15_t)0x3988, (q15_t)0xc054, (q15_t)0x397c, (q15_t)0xc055, (q15_t)0x396f, (q15_t)0xc056, (q15_t)0x3963, (q15_t)0xc058, + (q15_t)0x3956, (q15_t)0xc059, (q15_t)0x394a, (q15_t)0xc05a, (q15_t)0x393d, (q15_t)0xc05c, (q15_t)0x3931, (q15_t)0xc05d, + (q15_t)0x3924, (q15_t)0xc05e, (q15_t)0x3918, (q15_t)0xc060, (q15_t)0x390b, (q15_t)0xc061, (q15_t)0x38ff, (q15_t)0xc062, + (q15_t)0x38f2, (q15_t)0xc064, (q15_t)0x38e6, (q15_t)0xc065, (q15_t)0x38d9, (q15_t)0xc067, (q15_t)0x38cd, (q15_t)0xc068, + (q15_t)0x38c0, (q15_t)0xc069, (q15_t)0x38b4, (q15_t)0xc06b, (q15_t)0x38a7, (q15_t)0xc06c, (q15_t)0x389b, (q15_t)0xc06e, + (q15_t)0x388e, (q15_t)0xc06f, (q15_t)0x3882, (q15_t)0xc071, (q15_t)0x3875, (q15_t)0xc072, (q15_t)0x3869, (q15_t)0xc074, + (q15_t)0x385c, (q15_t)0xc075, (q15_t)0x3850, (q15_t)0xc077, (q15_t)0x3843, (q15_t)0xc078, (q15_t)0x3837, (q15_t)0xc07a, + (q15_t)0x382a, (q15_t)0xc07b, (q15_t)0x381e, (q15_t)0xc07d, (q15_t)0x3811, (q15_t)0xc07e, (q15_t)0x3805, (q15_t)0xc080, + (q15_t)0x37f9, (q15_t)0xc081, (q15_t)0x37ec, (q15_t)0xc083, (q15_t)0x37e0, (q15_t)0xc085, (q15_t)0x37d3, (q15_t)0xc086, + (q15_t)0x37c7, (q15_t)0xc088, (q15_t)0x37ba, (q15_t)0xc089, (q15_t)0x37ae, (q15_t)0xc08b, (q15_t)0x37a1, (q15_t)0xc08d, + (q15_t)0x3795, (q15_t)0xc08e, (q15_t)0x3788, (q15_t)0xc090, (q15_t)0x377c, (q15_t)0xc092, (q15_t)0x376f, (q15_t)0xc093, + (q15_t)0x3763, (q15_t)0xc095, (q15_t)0x3757, (q15_t)0xc097, (q15_t)0x374a, (q15_t)0xc098, (q15_t)0x373e, (q15_t)0xc09a, + (q15_t)0x3731, (q15_t)0xc09c, (q15_t)0x3725, (q15_t)0xc09e, (q15_t)0x3718, (q15_t)0xc09f, (q15_t)0x370c, (q15_t)0xc0a1, + (q15_t)0x36ff, (q15_t)0xc0a3, (q15_t)0x36f3, (q15_t)0xc0a5, (q15_t)0x36e7, (q15_t)0xc0a6, (q15_t)0x36da, (q15_t)0xc0a8, + (q15_t)0x36ce, (q15_t)0xc0aa, (q15_t)0x36c1, (q15_t)0xc0ac, (q15_t)0x36b5, (q15_t)0xc0ae, (q15_t)0x36a8, (q15_t)0xc0af, + (q15_t)0x369c, (q15_t)0xc0b1, (q15_t)0x3690, (q15_t)0xc0b3, (q15_t)0x3683, (q15_t)0xc0b5, (q15_t)0x3677, (q15_t)0xc0b7, + (q15_t)0x366a, (q15_t)0xc0b9, (q15_t)0x365e, (q15_t)0xc0bb, (q15_t)0x3651, (q15_t)0xc0bd, (q15_t)0x3645, (q15_t)0xc0be, + (q15_t)0x3639, (q15_t)0xc0c0, (q15_t)0x362c, (q15_t)0xc0c2, (q15_t)0x3620, (q15_t)0xc0c4, (q15_t)0x3613, (q15_t)0xc0c6, + (q15_t)0x3607, (q15_t)0xc0c8, (q15_t)0x35fa, (q15_t)0xc0ca, (q15_t)0x35ee, (q15_t)0xc0cc, (q15_t)0x35e2, (q15_t)0xc0ce, + (q15_t)0x35d5, (q15_t)0xc0d0, (q15_t)0x35c9, (q15_t)0xc0d2, (q15_t)0x35bc, (q15_t)0xc0d4, (q15_t)0x35b0, (q15_t)0xc0d6, + (q15_t)0x35a4, (q15_t)0xc0d8, (q15_t)0x3597, (q15_t)0xc0da, (q15_t)0x358b, (q15_t)0xc0dc, (q15_t)0x357e, (q15_t)0xc0de, + (q15_t)0x3572, (q15_t)0xc0e0, (q15_t)0x3566, (q15_t)0xc0e2, (q15_t)0x3559, (q15_t)0xc0e4, (q15_t)0x354d, (q15_t)0xc0e7, + (q15_t)0x3540, (q15_t)0xc0e9, (q15_t)0x3534, (q15_t)0xc0eb, (q15_t)0x3528, (q15_t)0xc0ed, (q15_t)0x351b, (q15_t)0xc0ef, + (q15_t)0x350f, (q15_t)0xc0f1, (q15_t)0x3503, (q15_t)0xc0f3, (q15_t)0x34f6, (q15_t)0xc0f6, (q15_t)0x34ea, (q15_t)0xc0f8, + (q15_t)0x34dd, (q15_t)0xc0fa, (q15_t)0x34d1, (q15_t)0xc0fc, (q15_t)0x34c5, (q15_t)0xc0fe, (q15_t)0x34b8, (q15_t)0xc100, + (q15_t)0x34ac, (q15_t)0xc103, (q15_t)0x34a0, (q15_t)0xc105, (q15_t)0x3493, (q15_t)0xc107, (q15_t)0x3487, (q15_t)0xc109, + (q15_t)0x347b, (q15_t)0xc10c, (q15_t)0x346e, (q15_t)0xc10e, (q15_t)0x3462, (q15_t)0xc110, (q15_t)0x3455, (q15_t)0xc113, + (q15_t)0x3449, (q15_t)0xc115, (q15_t)0x343d, (q15_t)0xc117, (q15_t)0x3430, (q15_t)0xc119, (q15_t)0x3424, (q15_t)0xc11c, + (q15_t)0x3418, (q15_t)0xc11e, (q15_t)0x340b, (q15_t)0xc120, (q15_t)0x33ff, (q15_t)0xc123, (q15_t)0x33f3, (q15_t)0xc125, + (q15_t)0x33e6, (q15_t)0xc128, (q15_t)0x33da, (q15_t)0xc12a, (q15_t)0x33ce, (q15_t)0xc12c, (q15_t)0x33c1, (q15_t)0xc12f, + (q15_t)0x33b5, (q15_t)0xc131, (q15_t)0x33a9, (q15_t)0xc134, (q15_t)0x339c, (q15_t)0xc136, (q15_t)0x3390, (q15_t)0xc138, + (q15_t)0x3384, (q15_t)0xc13b, (q15_t)0x3377, (q15_t)0xc13d, (q15_t)0x336b, (q15_t)0xc140, (q15_t)0x335f, (q15_t)0xc142, + (q15_t)0x3352, (q15_t)0xc145, (q15_t)0x3346, (q15_t)0xc147, (q15_t)0x333a, (q15_t)0xc14a, (q15_t)0x332d, (q15_t)0xc14c, + (q15_t)0x3321, (q15_t)0xc14f, (q15_t)0x3315, (q15_t)0xc151, (q15_t)0x3308, (q15_t)0xc154, (q15_t)0x32fc, (q15_t)0xc156, + (q15_t)0x32f0, (q15_t)0xc159, (q15_t)0x32e4, (q15_t)0xc15b, (q15_t)0x32d7, (q15_t)0xc15e, (q15_t)0x32cb, (q15_t)0xc161, + (q15_t)0x32bf, (q15_t)0xc163, (q15_t)0x32b2, (q15_t)0xc166, (q15_t)0x32a6, (q15_t)0xc168, (q15_t)0x329a, (q15_t)0xc16b, + (q15_t)0x328e, (q15_t)0xc16e, (q15_t)0x3281, (q15_t)0xc170, (q15_t)0x3275, (q15_t)0xc173, (q15_t)0x3269, (q15_t)0xc176, + (q15_t)0x325c, (q15_t)0xc178, (q15_t)0x3250, (q15_t)0xc17b, (q15_t)0x3244, (q15_t)0xc17e, (q15_t)0x3238, (q15_t)0xc180, + (q15_t)0x322b, (q15_t)0xc183, (q15_t)0x321f, (q15_t)0xc186, (q15_t)0x3213, (q15_t)0xc189, (q15_t)0x3207, (q15_t)0xc18b, + (q15_t)0x31fa, (q15_t)0xc18e, (q15_t)0x31ee, (q15_t)0xc191, (q15_t)0x31e2, (q15_t)0xc194, (q15_t)0x31d5, (q15_t)0xc196, + (q15_t)0x31c9, (q15_t)0xc199, (q15_t)0x31bd, (q15_t)0xc19c, (q15_t)0x31b1, (q15_t)0xc19f, (q15_t)0x31a4, (q15_t)0xc1a2, + (q15_t)0x3198, (q15_t)0xc1a4, (q15_t)0x318c, (q15_t)0xc1a7, (q15_t)0x3180, (q15_t)0xc1aa, (q15_t)0x3174, (q15_t)0xc1ad, + (q15_t)0x3167, (q15_t)0xc1b0, (q15_t)0x315b, (q15_t)0xc1b3, (q15_t)0x314f, (q15_t)0xc1b6, (q15_t)0x3143, (q15_t)0xc1b8, + (q15_t)0x3136, (q15_t)0xc1bb, (q15_t)0x312a, (q15_t)0xc1be, (q15_t)0x311e, (q15_t)0xc1c1, (q15_t)0x3112, (q15_t)0xc1c4, + (q15_t)0x3105, (q15_t)0xc1c7, (q15_t)0x30f9, (q15_t)0xc1ca, (q15_t)0x30ed, (q15_t)0xc1cd, (q15_t)0x30e1, (q15_t)0xc1d0, + (q15_t)0x30d5, (q15_t)0xc1d3, (q15_t)0x30c8, (q15_t)0xc1d6, (q15_t)0x30bc, (q15_t)0xc1d9, (q15_t)0x30b0, (q15_t)0xc1dc, + (q15_t)0x30a4, (q15_t)0xc1df, (q15_t)0x3098, (q15_t)0xc1e2, (q15_t)0x308b, (q15_t)0xc1e5, (q15_t)0x307f, (q15_t)0xc1e8, + (q15_t)0x3073, (q15_t)0xc1eb, (q15_t)0x3067, (q15_t)0xc1ee, (q15_t)0x305b, (q15_t)0xc1f1, (q15_t)0x304e, (q15_t)0xc1f4, + (q15_t)0x3042, (q15_t)0xc1f7, (q15_t)0x3036, (q15_t)0xc1fa, (q15_t)0x302a, (q15_t)0xc1fd, (q15_t)0x301e, (q15_t)0xc201, + (q15_t)0x3012, (q15_t)0xc204, (q15_t)0x3005, (q15_t)0xc207, (q15_t)0x2ff9, (q15_t)0xc20a, (q15_t)0x2fed, (q15_t)0xc20d, + (q15_t)0x2fe1, (q15_t)0xc210, (q15_t)0x2fd5, (q15_t)0xc213, (q15_t)0x2fc9, (q15_t)0xc217, (q15_t)0x2fbc, (q15_t)0xc21a, + (q15_t)0x2fb0, (q15_t)0xc21d, (q15_t)0x2fa4, (q15_t)0xc220, (q15_t)0x2f98, (q15_t)0xc223, (q15_t)0x2f8c, (q15_t)0xc227, + (q15_t)0x2f80, (q15_t)0xc22a, (q15_t)0x2f74, (q15_t)0xc22d, (q15_t)0x2f67, (q15_t)0xc230, (q15_t)0x2f5b, (q15_t)0xc234, + (q15_t)0x2f4f, (q15_t)0xc237, (q15_t)0x2f43, (q15_t)0xc23a, (q15_t)0x2f37, (q15_t)0xc23e, (q15_t)0x2f2b, (q15_t)0xc241, + (q15_t)0x2f1f, (q15_t)0xc244, (q15_t)0x2f13, (q15_t)0xc247, (q15_t)0x2f06, (q15_t)0xc24b, (q15_t)0x2efa, (q15_t)0xc24e, + (q15_t)0x2eee, (q15_t)0xc251, (q15_t)0x2ee2, (q15_t)0xc255, (q15_t)0x2ed6, (q15_t)0xc258, (q15_t)0x2eca, (q15_t)0xc25c, + (q15_t)0x2ebe, (q15_t)0xc25f, (q15_t)0x2eb2, (q15_t)0xc262, (q15_t)0x2ea6, (q15_t)0xc266, (q15_t)0x2e99, (q15_t)0xc269, + (q15_t)0x2e8d, (q15_t)0xc26d, (q15_t)0x2e81, (q15_t)0xc270, (q15_t)0x2e75, (q15_t)0xc273, (q15_t)0x2e69, (q15_t)0xc277, + (q15_t)0x2e5d, (q15_t)0xc27a, (q15_t)0x2e51, (q15_t)0xc27e, (q15_t)0x2e45, (q15_t)0xc281, (q15_t)0x2e39, (q15_t)0xc285, + (q15_t)0x2e2d, (q15_t)0xc288, (q15_t)0x2e21, (q15_t)0xc28c, (q15_t)0x2e15, (q15_t)0xc28f, (q15_t)0x2e09, (q15_t)0xc293, + (q15_t)0x2dfc, (q15_t)0xc296, (q15_t)0x2df0, (q15_t)0xc29a, (q15_t)0x2de4, (q15_t)0xc29d, (q15_t)0x2dd8, (q15_t)0xc2a1, + (q15_t)0x2dcc, (q15_t)0xc2a5, (q15_t)0x2dc0, (q15_t)0xc2a8, (q15_t)0x2db4, (q15_t)0xc2ac, (q15_t)0x2da8, (q15_t)0xc2af, + (q15_t)0x2d9c, (q15_t)0xc2b3, (q15_t)0x2d90, (q15_t)0xc2b7, (q15_t)0x2d84, (q15_t)0xc2ba, (q15_t)0x2d78, (q15_t)0xc2be, + (q15_t)0x2d6c, (q15_t)0xc2c1, (q15_t)0x2d60, (q15_t)0xc2c5, (q15_t)0x2d54, (q15_t)0xc2c9, (q15_t)0x2d48, (q15_t)0xc2cc, + (q15_t)0x2d3c, (q15_t)0xc2d0, (q15_t)0x2d30, (q15_t)0xc2d4, (q15_t)0x2d24, (q15_t)0xc2d8, (q15_t)0x2d18, (q15_t)0xc2db, + (q15_t)0x2d0c, (q15_t)0xc2df, (q15_t)0x2d00, (q15_t)0xc2e3, (q15_t)0x2cf4, (q15_t)0xc2e6, (q15_t)0x2ce8, (q15_t)0xc2ea, + (q15_t)0x2cdc, (q15_t)0xc2ee, (q15_t)0x2cd0, (q15_t)0xc2f2, (q15_t)0x2cc4, (q15_t)0xc2f5, (q15_t)0x2cb8, (q15_t)0xc2f9, + (q15_t)0x2cac, (q15_t)0xc2fd, (q15_t)0x2ca0, (q15_t)0xc301, (q15_t)0x2c94, (q15_t)0xc305, (q15_t)0x2c88, (q15_t)0xc308, + (q15_t)0x2c7c, (q15_t)0xc30c, (q15_t)0x2c70, (q15_t)0xc310, (q15_t)0x2c64, (q15_t)0xc314, (q15_t)0x2c58, (q15_t)0xc318, + (q15_t)0x2c4c, (q15_t)0xc31c, (q15_t)0x2c40, (q15_t)0xc320, (q15_t)0x2c34, (q15_t)0xc323, (q15_t)0x2c28, (q15_t)0xc327, + (q15_t)0x2c1c, (q15_t)0xc32b, (q15_t)0x2c10, (q15_t)0xc32f, (q15_t)0x2c05, (q15_t)0xc333, (q15_t)0x2bf9, (q15_t)0xc337, + (q15_t)0x2bed, (q15_t)0xc33b, (q15_t)0x2be1, (q15_t)0xc33f, (q15_t)0x2bd5, (q15_t)0xc343, (q15_t)0x2bc9, (q15_t)0xc347, + (q15_t)0x2bbd, (q15_t)0xc34b, (q15_t)0x2bb1, (q15_t)0xc34f, (q15_t)0x2ba5, (q15_t)0xc353, (q15_t)0x2b99, (q15_t)0xc357, + (q15_t)0x2b8d, (q15_t)0xc35b, (q15_t)0x2b81, (q15_t)0xc35f, (q15_t)0x2b75, (q15_t)0xc363, (q15_t)0x2b6a, (q15_t)0xc367, + (q15_t)0x2b5e, (q15_t)0xc36b, (q15_t)0x2b52, (q15_t)0xc36f, (q15_t)0x2b46, (q15_t)0xc373, (q15_t)0x2b3a, (q15_t)0xc377, + (q15_t)0x2b2e, (q15_t)0xc37b, (q15_t)0x2b22, (q15_t)0xc37f, (q15_t)0x2b16, (q15_t)0xc383, (q15_t)0x2b0a, (q15_t)0xc387, + (q15_t)0x2aff, (q15_t)0xc38c, (q15_t)0x2af3, (q15_t)0xc390, (q15_t)0x2ae7, (q15_t)0xc394, (q15_t)0x2adb, (q15_t)0xc398, + (q15_t)0x2acf, (q15_t)0xc39c, (q15_t)0x2ac3, (q15_t)0xc3a0, (q15_t)0x2ab7, (q15_t)0xc3a5, (q15_t)0x2aac, (q15_t)0xc3a9, + (q15_t)0x2aa0, (q15_t)0xc3ad, (q15_t)0x2a94, (q15_t)0xc3b1, (q15_t)0x2a88, (q15_t)0xc3b5, (q15_t)0x2a7c, (q15_t)0xc3ba, + (q15_t)0x2a70, (q15_t)0xc3be, (q15_t)0x2a65, (q15_t)0xc3c2, (q15_t)0x2a59, (q15_t)0xc3c6, (q15_t)0x2a4d, (q15_t)0xc3ca, + (q15_t)0x2a41, (q15_t)0xc3cf, (q15_t)0x2a35, (q15_t)0xc3d3, (q15_t)0x2a29, (q15_t)0xc3d7, (q15_t)0x2a1e, (q15_t)0xc3dc, + (q15_t)0x2a12, (q15_t)0xc3e0, (q15_t)0x2a06, (q15_t)0xc3e4, (q15_t)0x29fa, (q15_t)0xc3e9, (q15_t)0x29ee, (q15_t)0xc3ed, + (q15_t)0x29e3, (q15_t)0xc3f1, (q15_t)0x29d7, (q15_t)0xc3f6, (q15_t)0x29cb, (q15_t)0xc3fa, (q15_t)0x29bf, (q15_t)0xc3fe, + (q15_t)0x29b4, (q15_t)0xc403, (q15_t)0x29a8, (q15_t)0xc407, (q15_t)0x299c, (q15_t)0xc40b, (q15_t)0x2990, (q15_t)0xc410, + (q15_t)0x2984, (q15_t)0xc414, (q15_t)0x2979, (q15_t)0xc419, (q15_t)0x296d, (q15_t)0xc41d, (q15_t)0x2961, (q15_t)0xc422, + (q15_t)0x2955, (q15_t)0xc426, (q15_t)0x294a, (q15_t)0xc42a, (q15_t)0x293e, (q15_t)0xc42f, (q15_t)0x2932, (q15_t)0xc433, + (q15_t)0x2926, (q15_t)0xc438, (q15_t)0x291b, (q15_t)0xc43c, (q15_t)0x290f, (q15_t)0xc441, (q15_t)0x2903, (q15_t)0xc445, + (q15_t)0x28f7, (q15_t)0xc44a, (q15_t)0x28ec, (q15_t)0xc44e, (q15_t)0x28e0, (q15_t)0xc453, (q15_t)0x28d4, (q15_t)0xc457, + (q15_t)0x28c9, (q15_t)0xc45c, (q15_t)0x28bd, (q15_t)0xc461, (q15_t)0x28b1, (q15_t)0xc465, (q15_t)0x28a5, (q15_t)0xc46a, + (q15_t)0x289a, (q15_t)0xc46e, (q15_t)0x288e, (q15_t)0xc473, (q15_t)0x2882, (q15_t)0xc478, (q15_t)0x2877, (q15_t)0xc47c, + (q15_t)0x286b, (q15_t)0xc481, (q15_t)0x285f, (q15_t)0xc485, (q15_t)0x2854, (q15_t)0xc48a, (q15_t)0x2848, (q15_t)0xc48f, + (q15_t)0x283c, (q15_t)0xc493, (q15_t)0x2831, (q15_t)0xc498, (q15_t)0x2825, (q15_t)0xc49d, (q15_t)0x2819, (q15_t)0xc4a1, + (q15_t)0x280e, (q15_t)0xc4a6, (q15_t)0x2802, (q15_t)0xc4ab, (q15_t)0x27f6, (q15_t)0xc4b0, (q15_t)0x27eb, (q15_t)0xc4b4, + (q15_t)0x27df, (q15_t)0xc4b9, (q15_t)0x27d3, (q15_t)0xc4be, (q15_t)0x27c8, (q15_t)0xc4c2, (q15_t)0x27bc, (q15_t)0xc4c7, + (q15_t)0x27b1, (q15_t)0xc4cc, (q15_t)0x27a5, (q15_t)0xc4d1, (q15_t)0x2799, (q15_t)0xc4d6, (q15_t)0x278e, (q15_t)0xc4da, + (q15_t)0x2782, (q15_t)0xc4df, (q15_t)0x2777, (q15_t)0xc4e4, (q15_t)0x276b, (q15_t)0xc4e9, (q15_t)0x275f, (q15_t)0xc4ee, + (q15_t)0x2754, (q15_t)0xc4f2, (q15_t)0x2748, (q15_t)0xc4f7, (q15_t)0x273d, (q15_t)0xc4fc, (q15_t)0x2731, (q15_t)0xc501, + (q15_t)0x2725, (q15_t)0xc506, (q15_t)0x271a, (q15_t)0xc50b, (q15_t)0x270e, (q15_t)0xc510, (q15_t)0x2703, (q15_t)0xc515, + (q15_t)0x26f7, (q15_t)0xc51a, (q15_t)0x26ec, (q15_t)0xc51e, (q15_t)0x26e0, (q15_t)0xc523, (q15_t)0x26d4, (q15_t)0xc528, + (q15_t)0x26c9, (q15_t)0xc52d, (q15_t)0x26bd, (q15_t)0xc532, (q15_t)0x26b2, (q15_t)0xc537, (q15_t)0x26a6, (q15_t)0xc53c, + (q15_t)0x269b, (q15_t)0xc541, (q15_t)0x268f, (q15_t)0xc546, (q15_t)0x2684, (q15_t)0xc54b, (q15_t)0x2678, (q15_t)0xc550, + (q15_t)0x266d, (q15_t)0xc555, (q15_t)0x2661, (q15_t)0xc55a, (q15_t)0x2656, (q15_t)0xc55f, (q15_t)0x264a, (q15_t)0xc564, + (q15_t)0x263f, (q15_t)0xc569, (q15_t)0x2633, (q15_t)0xc56e, (q15_t)0x2628, (q15_t)0xc573, (q15_t)0x261c, (q15_t)0xc578, + (q15_t)0x2611, (q15_t)0xc57e, (q15_t)0x2605, (q15_t)0xc583, (q15_t)0x25fa, (q15_t)0xc588, (q15_t)0x25ee, (q15_t)0xc58d, + (q15_t)0x25e3, (q15_t)0xc592, (q15_t)0x25d7, (q15_t)0xc597, (q15_t)0x25cc, (q15_t)0xc59c, (q15_t)0x25c0, (q15_t)0xc5a1, + (q15_t)0x25b5, (q15_t)0xc5a7, (q15_t)0x25a9, (q15_t)0xc5ac, (q15_t)0x259e, (q15_t)0xc5b1, (q15_t)0x2592, (q15_t)0xc5b6, + (q15_t)0x2587, (q15_t)0xc5bb, (q15_t)0x257c, (q15_t)0xc5c1, (q15_t)0x2570, (q15_t)0xc5c6, (q15_t)0x2565, (q15_t)0xc5cb, + (q15_t)0x2559, (q15_t)0xc5d0, (q15_t)0x254e, (q15_t)0xc5d5, (q15_t)0x2542, (q15_t)0xc5db, (q15_t)0x2537, (q15_t)0xc5e0, + (q15_t)0x252c, (q15_t)0xc5e5, (q15_t)0x2520, (q15_t)0xc5ea, (q15_t)0x2515, (q15_t)0xc5f0, (q15_t)0x2509, (q15_t)0xc5f5, + (q15_t)0x24fe, (q15_t)0xc5fa, (q15_t)0x24f3, (q15_t)0xc600, (q15_t)0x24e7, (q15_t)0xc605, (q15_t)0x24dc, (q15_t)0xc60a, + (q15_t)0x24d0, (q15_t)0xc610, (q15_t)0x24c5, (q15_t)0xc615, (q15_t)0x24ba, (q15_t)0xc61a, (q15_t)0x24ae, (q15_t)0xc620, + (q15_t)0x24a3, (q15_t)0xc625, (q15_t)0x2498, (q15_t)0xc62a, (q15_t)0x248c, (q15_t)0xc630, (q15_t)0x2481, (q15_t)0xc635, + (q15_t)0x2476, (q15_t)0xc63b, (q15_t)0x246a, (q15_t)0xc640, (q15_t)0x245f, (q15_t)0xc645, (q15_t)0x2454, (q15_t)0xc64b, + (q15_t)0x2448, (q15_t)0xc650, (q15_t)0x243d, (q15_t)0xc656, (q15_t)0x2432, (q15_t)0xc65b, (q15_t)0x2426, (q15_t)0xc661, + (q15_t)0x241b, (q15_t)0xc666, (q15_t)0x2410, (q15_t)0xc66c, (q15_t)0x2404, (q15_t)0xc671, (q15_t)0x23f9, (q15_t)0xc677, + (q15_t)0x23ee, (q15_t)0xc67c, (q15_t)0x23e2, (q15_t)0xc682, (q15_t)0x23d7, (q15_t)0xc687, (q15_t)0x23cc, (q15_t)0xc68d, + (q15_t)0x23c1, (q15_t)0xc692, (q15_t)0x23b5, (q15_t)0xc698, (q15_t)0x23aa, (q15_t)0xc69d, (q15_t)0x239f, (q15_t)0xc6a3, + (q15_t)0x2394, (q15_t)0xc6a8, (q15_t)0x2388, (q15_t)0xc6ae, (q15_t)0x237d, (q15_t)0xc6b4, (q15_t)0x2372, (q15_t)0xc6b9, + (q15_t)0x2367, (q15_t)0xc6bf, (q15_t)0x235b, (q15_t)0xc6c5, (q15_t)0x2350, (q15_t)0xc6ca, (q15_t)0x2345, (q15_t)0xc6d0, + (q15_t)0x233a, (q15_t)0xc6d5, (q15_t)0x232e, (q15_t)0xc6db, (q15_t)0x2323, (q15_t)0xc6e1, (q15_t)0x2318, (q15_t)0xc6e6, + (q15_t)0x230d, (q15_t)0xc6ec, (q15_t)0x2301, (q15_t)0xc6f2, (q15_t)0x22f6, (q15_t)0xc6f7, (q15_t)0x22eb, (q15_t)0xc6fd, + (q15_t)0x22e0, (q15_t)0xc703, (q15_t)0x22d5, (q15_t)0xc709, (q15_t)0x22ca, (q15_t)0xc70e, (q15_t)0x22be, (q15_t)0xc714, + (q15_t)0x22b3, (q15_t)0xc71a, (q15_t)0x22a8, (q15_t)0xc720, (q15_t)0x229d, (q15_t)0xc725, (q15_t)0x2292, (q15_t)0xc72b, + (q15_t)0x2287, (q15_t)0xc731, (q15_t)0x227b, (q15_t)0xc737, (q15_t)0x2270, (q15_t)0xc73d, (q15_t)0x2265, (q15_t)0xc742, + (q15_t)0x225a, (q15_t)0xc748, (q15_t)0x224f, (q15_t)0xc74e, (q15_t)0x2244, (q15_t)0xc754, (q15_t)0x2239, (q15_t)0xc75a, + (q15_t)0x222d, (q15_t)0xc75f, (q15_t)0x2222, (q15_t)0xc765, (q15_t)0x2217, (q15_t)0xc76b, (q15_t)0x220c, (q15_t)0xc771, + (q15_t)0x2201, (q15_t)0xc777, (q15_t)0x21f6, (q15_t)0xc77d, (q15_t)0x21eb, (q15_t)0xc783, (q15_t)0x21e0, (q15_t)0xc789, + (q15_t)0x21d5, (q15_t)0xc78f, (q15_t)0x21ca, (q15_t)0xc795, (q15_t)0x21be, (q15_t)0xc79a, (q15_t)0x21b3, (q15_t)0xc7a0, + (q15_t)0x21a8, (q15_t)0xc7a6, (q15_t)0x219d, (q15_t)0xc7ac, (q15_t)0x2192, (q15_t)0xc7b2, (q15_t)0x2187, (q15_t)0xc7b8, + (q15_t)0x217c, (q15_t)0xc7be, (q15_t)0x2171, (q15_t)0xc7c4, (q15_t)0x2166, (q15_t)0xc7ca, (q15_t)0x215b, (q15_t)0xc7d0, + (q15_t)0x2150, (q15_t)0xc7d6, (q15_t)0x2145, (q15_t)0xc7dc, (q15_t)0x213a, (q15_t)0xc7e2, (q15_t)0x212f, (q15_t)0xc7e8, + (q15_t)0x2124, (q15_t)0xc7ee, (q15_t)0x2119, (q15_t)0xc7f5, (q15_t)0x210e, (q15_t)0xc7fb, (q15_t)0x2103, (q15_t)0xc801, + (q15_t)0x20f8, (q15_t)0xc807, (q15_t)0x20ed, (q15_t)0xc80d, (q15_t)0x20e2, (q15_t)0xc813, (q15_t)0x20d7, (q15_t)0xc819, + (q15_t)0x20cc, (q15_t)0xc81f, (q15_t)0x20c1, (q15_t)0xc825, (q15_t)0x20b6, (q15_t)0xc82b, (q15_t)0x20ab, (q15_t)0xc832, + (q15_t)0x20a0, (q15_t)0xc838, (q15_t)0x2095, (q15_t)0xc83e, (q15_t)0x208a, (q15_t)0xc844, (q15_t)0x207f, (q15_t)0xc84a, + (q15_t)0x2074, (q15_t)0xc850, (q15_t)0x2069, (q15_t)0xc857, (q15_t)0x205e, (q15_t)0xc85d, (q15_t)0x2054, (q15_t)0xc863, + (q15_t)0x2049, (q15_t)0xc869, (q15_t)0x203e, (q15_t)0xc870, (q15_t)0x2033, (q15_t)0xc876, (q15_t)0x2028, (q15_t)0xc87c, + (q15_t)0x201d, (q15_t)0xc882, (q15_t)0x2012, (q15_t)0xc889, (q15_t)0x2007, (q15_t)0xc88f, (q15_t)0x1ffc, (q15_t)0xc895, + (q15_t)0x1ff1, (q15_t)0xc89b, (q15_t)0x1fe7, (q15_t)0xc8a2, (q15_t)0x1fdc, (q15_t)0xc8a8, (q15_t)0x1fd1, (q15_t)0xc8ae, + (q15_t)0x1fc6, (q15_t)0xc8b5, (q15_t)0x1fbb, (q15_t)0xc8bb, (q15_t)0x1fb0, (q15_t)0xc8c1, (q15_t)0x1fa5, (q15_t)0xc8c8, + (q15_t)0x1f9b, (q15_t)0xc8ce, (q15_t)0x1f90, (q15_t)0xc8d4, (q15_t)0x1f85, (q15_t)0xc8db, (q15_t)0x1f7a, (q15_t)0xc8e1, + (q15_t)0x1f6f, (q15_t)0xc8e8, (q15_t)0x1f65, (q15_t)0xc8ee, (q15_t)0x1f5a, (q15_t)0xc8f4, (q15_t)0x1f4f, (q15_t)0xc8fb, + (q15_t)0x1f44, (q15_t)0xc901, (q15_t)0x1f39, (q15_t)0xc908, (q15_t)0x1f2f, (q15_t)0xc90e, (q15_t)0x1f24, (q15_t)0xc915, + (q15_t)0x1f19, (q15_t)0xc91b, (q15_t)0x1f0e, (q15_t)0xc921, (q15_t)0x1f03, (q15_t)0xc928, (q15_t)0x1ef9, (q15_t)0xc92e, + (q15_t)0x1eee, (q15_t)0xc935, (q15_t)0x1ee3, (q15_t)0xc93b, (q15_t)0x1ed8, (q15_t)0xc942, (q15_t)0x1ece, (q15_t)0xc948, + (q15_t)0x1ec3, (q15_t)0xc94f, (q15_t)0x1eb8, (q15_t)0xc955, (q15_t)0x1ead, (q15_t)0xc95c, (q15_t)0x1ea3, (q15_t)0xc963, + (q15_t)0x1e98, (q15_t)0xc969, (q15_t)0x1e8d, (q15_t)0xc970, (q15_t)0x1e83, (q15_t)0xc976, (q15_t)0x1e78, (q15_t)0xc97d, + (q15_t)0x1e6d, (q15_t)0xc983, (q15_t)0x1e62, (q15_t)0xc98a, (q15_t)0x1e58, (q15_t)0xc991, (q15_t)0x1e4d, (q15_t)0xc997, + (q15_t)0x1e42, (q15_t)0xc99e, (q15_t)0x1e38, (q15_t)0xc9a4, (q15_t)0x1e2d, (q15_t)0xc9ab, (q15_t)0x1e22, (q15_t)0xc9b2, + (q15_t)0x1e18, (q15_t)0xc9b8, (q15_t)0x1e0d, (q15_t)0xc9bf, (q15_t)0x1e02, (q15_t)0xc9c6, (q15_t)0x1df8, (q15_t)0xc9cc, + (q15_t)0x1ded, (q15_t)0xc9d3, (q15_t)0x1de2, (q15_t)0xc9da, (q15_t)0x1dd8, (q15_t)0xc9e0, (q15_t)0x1dcd, (q15_t)0xc9e7, + (q15_t)0x1dc3, (q15_t)0xc9ee, (q15_t)0x1db8, (q15_t)0xc9f5, (q15_t)0x1dad, (q15_t)0xc9fb, (q15_t)0x1da3, (q15_t)0xca02, + (q15_t)0x1d98, (q15_t)0xca09, (q15_t)0x1d8e, (q15_t)0xca10, (q15_t)0x1d83, (q15_t)0xca16, (q15_t)0x1d78, (q15_t)0xca1d, + (q15_t)0x1d6e, (q15_t)0xca24, (q15_t)0x1d63, (q15_t)0xca2b, (q15_t)0x1d59, (q15_t)0xca32, (q15_t)0x1d4e, (q15_t)0xca38, + (q15_t)0x1d44, (q15_t)0xca3f, (q15_t)0x1d39, (q15_t)0xca46, (q15_t)0x1d2e, (q15_t)0xca4d, (q15_t)0x1d24, (q15_t)0xca54, + (q15_t)0x1d19, (q15_t)0xca5b, (q15_t)0x1d0f, (q15_t)0xca61, (q15_t)0x1d04, (q15_t)0xca68, (q15_t)0x1cfa, (q15_t)0xca6f, + (q15_t)0x1cef, (q15_t)0xca76, (q15_t)0x1ce5, (q15_t)0xca7d, (q15_t)0x1cda, (q15_t)0xca84, (q15_t)0x1cd0, (q15_t)0xca8b, + (q15_t)0x1cc5, (q15_t)0xca92, (q15_t)0x1cbb, (q15_t)0xca99, (q15_t)0x1cb0, (q15_t)0xca9f, (q15_t)0x1ca6, (q15_t)0xcaa6, + (q15_t)0x1c9b, (q15_t)0xcaad, (q15_t)0x1c91, (q15_t)0xcab4, (q15_t)0x1c86, (q15_t)0xcabb, (q15_t)0x1c7c, (q15_t)0xcac2, + (q15_t)0x1c72, (q15_t)0xcac9, (q15_t)0x1c67, (q15_t)0xcad0, (q15_t)0x1c5d, (q15_t)0xcad7, (q15_t)0x1c52, (q15_t)0xcade, + (q15_t)0x1c48, (q15_t)0xcae5, (q15_t)0x1c3d, (q15_t)0xcaec, (q15_t)0x1c33, (q15_t)0xcaf3, (q15_t)0x1c29, (q15_t)0xcafa, + (q15_t)0x1c1e, (q15_t)0xcb01, (q15_t)0x1c14, (q15_t)0xcb08, (q15_t)0x1c09, (q15_t)0xcb0f, (q15_t)0x1bff, (q15_t)0xcb16, + (q15_t)0x1bf5, (q15_t)0xcb1e, (q15_t)0x1bea, (q15_t)0xcb25, (q15_t)0x1be0, (q15_t)0xcb2c, (q15_t)0x1bd5, (q15_t)0xcb33, + (q15_t)0x1bcb, (q15_t)0xcb3a, (q15_t)0x1bc1, (q15_t)0xcb41, (q15_t)0x1bb6, (q15_t)0xcb48, (q15_t)0x1bac, (q15_t)0xcb4f, + (q15_t)0x1ba2, (q15_t)0xcb56, (q15_t)0x1b97, (q15_t)0xcb5e, (q15_t)0x1b8d, (q15_t)0xcb65, (q15_t)0x1b83, (q15_t)0xcb6c, + (q15_t)0x1b78, (q15_t)0xcb73, (q15_t)0x1b6e, (q15_t)0xcb7a, (q15_t)0x1b64, (q15_t)0xcb81, (q15_t)0x1b59, (q15_t)0xcb89, + (q15_t)0x1b4f, (q15_t)0xcb90, (q15_t)0x1b45, (q15_t)0xcb97, (q15_t)0x1b3b, (q15_t)0xcb9e, (q15_t)0x1b30, (q15_t)0xcba5, + (q15_t)0x1b26, (q15_t)0xcbad, (q15_t)0x1b1c, (q15_t)0xcbb4, (q15_t)0x1b11, (q15_t)0xcbbb, (q15_t)0x1b07, (q15_t)0xcbc2, + (q15_t)0x1afd, (q15_t)0xcbca, (q15_t)0x1af3, (q15_t)0xcbd1, (q15_t)0x1ae8, (q15_t)0xcbd8, (q15_t)0x1ade, (q15_t)0xcbe0, + (q15_t)0x1ad4, (q15_t)0xcbe7, (q15_t)0x1aca, (q15_t)0xcbee, (q15_t)0x1abf, (q15_t)0xcbf5, (q15_t)0x1ab5, (q15_t)0xcbfd, + (q15_t)0x1aab, (q15_t)0xcc04, (q15_t)0x1aa1, (q15_t)0xcc0b, (q15_t)0x1a97, (q15_t)0xcc13, (q15_t)0x1a8c, (q15_t)0xcc1a, + (q15_t)0x1a82, (q15_t)0xcc21, (q15_t)0x1a78, (q15_t)0xcc29, (q15_t)0x1a6e, (q15_t)0xcc30, (q15_t)0x1a64, (q15_t)0xcc38, + (q15_t)0x1a5a, (q15_t)0xcc3f, (q15_t)0x1a4f, (q15_t)0xcc46, (q15_t)0x1a45, (q15_t)0xcc4e, (q15_t)0x1a3b, (q15_t)0xcc55, + (q15_t)0x1a31, (q15_t)0xcc5d, (q15_t)0x1a27, (q15_t)0xcc64, (q15_t)0x1a1d, (q15_t)0xcc6b, (q15_t)0x1a13, (q15_t)0xcc73, + (q15_t)0x1a08, (q15_t)0xcc7a, (q15_t)0x19fe, (q15_t)0xcc82, (q15_t)0x19f4, (q15_t)0xcc89, (q15_t)0x19ea, (q15_t)0xcc91, + (q15_t)0x19e0, (q15_t)0xcc98, (q15_t)0x19d6, (q15_t)0xcca0, (q15_t)0x19cc, (q15_t)0xcca7, (q15_t)0x19c2, (q15_t)0xccaf, + (q15_t)0x19b8, (q15_t)0xccb6, (q15_t)0x19ae, (q15_t)0xccbe, (q15_t)0x19a4, (q15_t)0xccc5, (q15_t)0x199a, (q15_t)0xcccd, + (q15_t)0x198f, (q15_t)0xccd4, (q15_t)0x1985, (q15_t)0xccdc, (q15_t)0x197b, (q15_t)0xcce3, (q15_t)0x1971, (q15_t)0xcceb, + (q15_t)0x1967, (q15_t)0xccf3, (q15_t)0x195d, (q15_t)0xccfa, (q15_t)0x1953, (q15_t)0xcd02, (q15_t)0x1949, (q15_t)0xcd09, + (q15_t)0x193f, (q15_t)0xcd11, (q15_t)0x1935, (q15_t)0xcd19, (q15_t)0x192b, (q15_t)0xcd20, (q15_t)0x1921, (q15_t)0xcd28, + (q15_t)0x1917, (q15_t)0xcd30, (q15_t)0x190d, (q15_t)0xcd37, (q15_t)0x1903, (q15_t)0xcd3f, (q15_t)0x18f9, (q15_t)0xcd46, + (q15_t)0x18ef, (q15_t)0xcd4e, (q15_t)0x18e6, (q15_t)0xcd56, (q15_t)0x18dc, (q15_t)0xcd5d, (q15_t)0x18d2, (q15_t)0xcd65, + (q15_t)0x18c8, (q15_t)0xcd6d, (q15_t)0x18be, (q15_t)0xcd75, (q15_t)0x18b4, (q15_t)0xcd7c, (q15_t)0x18aa, (q15_t)0xcd84, + (q15_t)0x18a0, (q15_t)0xcd8c, (q15_t)0x1896, (q15_t)0xcd93, (q15_t)0x188c, (q15_t)0xcd9b, (q15_t)0x1882, (q15_t)0xcda3, + (q15_t)0x1878, (q15_t)0xcdab, (q15_t)0x186f, (q15_t)0xcdb2, (q15_t)0x1865, (q15_t)0xcdba, (q15_t)0x185b, (q15_t)0xcdc2, + (q15_t)0x1851, (q15_t)0xcdca, (q15_t)0x1847, (q15_t)0xcdd2, (q15_t)0x183d, (q15_t)0xcdd9, (q15_t)0x1833, (q15_t)0xcde1, + (q15_t)0x182a, (q15_t)0xcde9, (q15_t)0x1820, (q15_t)0xcdf1, (q15_t)0x1816, (q15_t)0xcdf9, (q15_t)0x180c, (q15_t)0xce01, + (q15_t)0x1802, (q15_t)0xce08, (q15_t)0x17f8, (q15_t)0xce10, (q15_t)0x17ef, (q15_t)0xce18, (q15_t)0x17e5, (q15_t)0xce20, + (q15_t)0x17db, (q15_t)0xce28, (q15_t)0x17d1, (q15_t)0xce30, (q15_t)0x17c8, (q15_t)0xce38, (q15_t)0x17be, (q15_t)0xce40, + (q15_t)0x17b4, (q15_t)0xce47, (q15_t)0x17aa, (q15_t)0xce4f, (q15_t)0x17a0, (q15_t)0xce57, (q15_t)0x1797, (q15_t)0xce5f, + (q15_t)0x178d, (q15_t)0xce67, (q15_t)0x1783, (q15_t)0xce6f, (q15_t)0x177a, (q15_t)0xce77, (q15_t)0x1770, (q15_t)0xce7f, + (q15_t)0x1766, (q15_t)0xce87, (q15_t)0x175c, (q15_t)0xce8f, (q15_t)0x1753, (q15_t)0xce97, (q15_t)0x1749, (q15_t)0xce9f, + (q15_t)0x173f, (q15_t)0xcea7, (q15_t)0x1736, (q15_t)0xceaf, (q15_t)0x172c, (q15_t)0xceb7, (q15_t)0x1722, (q15_t)0xcebf, + (q15_t)0x1719, (q15_t)0xcec7, (q15_t)0x170f, (q15_t)0xcecf, (q15_t)0x1705, (q15_t)0xced7, (q15_t)0x16fc, (q15_t)0xcedf, + (q15_t)0x16f2, (q15_t)0xcee7, (q15_t)0x16e8, (q15_t)0xceef, (q15_t)0x16df, (q15_t)0xcef7, (q15_t)0x16d5, (q15_t)0xceff, + (q15_t)0x16cb, (q15_t)0xcf07, (q15_t)0x16c2, (q15_t)0xcf10, (q15_t)0x16b8, (q15_t)0xcf18, (q15_t)0x16af, (q15_t)0xcf20, + (q15_t)0x16a5, (q15_t)0xcf28, (q15_t)0x169b, (q15_t)0xcf30, (q15_t)0x1692, (q15_t)0xcf38, (q15_t)0x1688, (q15_t)0xcf40, + (q15_t)0x167f, (q15_t)0xcf48, (q15_t)0x1675, (q15_t)0xcf51, (q15_t)0x166c, (q15_t)0xcf59, (q15_t)0x1662, (q15_t)0xcf61, + (q15_t)0x1659, (q15_t)0xcf69, (q15_t)0x164f, (q15_t)0xcf71, (q15_t)0x1645, (q15_t)0xcf79, (q15_t)0x163c, (q15_t)0xcf82, + (q15_t)0x1632, (q15_t)0xcf8a, (q15_t)0x1629, (q15_t)0xcf92, (q15_t)0x161f, (q15_t)0xcf9a, (q15_t)0x1616, (q15_t)0xcfa3, + (q15_t)0x160c, (q15_t)0xcfab, (q15_t)0x1603, (q15_t)0xcfb3, (q15_t)0x15f9, (q15_t)0xcfbb, (q15_t)0x15f0, (q15_t)0xcfc4, + (q15_t)0x15e6, (q15_t)0xcfcc, (q15_t)0x15dd, (q15_t)0xcfd4, (q15_t)0x15d4, (q15_t)0xcfdc, (q15_t)0x15ca, (q15_t)0xcfe5, + (q15_t)0x15c1, (q15_t)0xcfed, (q15_t)0x15b7, (q15_t)0xcff5, (q15_t)0x15ae, (q15_t)0xcffe, (q15_t)0x15a4, (q15_t)0xd006, + (q15_t)0x159b, (q15_t)0xd00e, (q15_t)0x1592, (q15_t)0xd016, (q15_t)0x1588, (q15_t)0xd01f, (q15_t)0x157f, (q15_t)0xd027, + (q15_t)0x1575, (q15_t)0xd030, (q15_t)0x156c, (q15_t)0xd038, (q15_t)0x1563, (q15_t)0xd040, (q15_t)0x1559, (q15_t)0xd049, + (q15_t)0x1550, (q15_t)0xd051, (q15_t)0x1547, (q15_t)0xd059, (q15_t)0x153d, (q15_t)0xd062, (q15_t)0x1534, (q15_t)0xd06a, + (q15_t)0x152a, (q15_t)0xd073, (q15_t)0x1521, (q15_t)0xd07b, (q15_t)0x1518, (q15_t)0xd083, (q15_t)0x150e, (q15_t)0xd08c, + (q15_t)0x1505, (q15_t)0xd094, (q15_t)0x14fc, (q15_t)0xd09d, (q15_t)0x14f3, (q15_t)0xd0a5, (q15_t)0x14e9, (q15_t)0xd0ae, + (q15_t)0x14e0, (q15_t)0xd0b6, (q15_t)0x14d7, (q15_t)0xd0bf, (q15_t)0x14cd, (q15_t)0xd0c7, (q15_t)0x14c4, (q15_t)0xd0d0, + (q15_t)0x14bb, (q15_t)0xd0d8, (q15_t)0x14b2, (q15_t)0xd0e0, (q15_t)0x14a8, (q15_t)0xd0e9, (q15_t)0x149f, (q15_t)0xd0f2, + (q15_t)0x1496, (q15_t)0xd0fa, (q15_t)0x148d, (q15_t)0xd103, (q15_t)0x1483, (q15_t)0xd10b, (q15_t)0x147a, (q15_t)0xd114, + (q15_t)0x1471, (q15_t)0xd11c, (q15_t)0x1468, (q15_t)0xd125, (q15_t)0x145f, (q15_t)0xd12d, (q15_t)0x1455, (q15_t)0xd136, + (q15_t)0x144c, (q15_t)0xd13e, (q15_t)0x1443, (q15_t)0xd147, (q15_t)0x143a, (q15_t)0xd150, (q15_t)0x1431, (q15_t)0xd158, + (q15_t)0x1428, (q15_t)0xd161, (q15_t)0x141e, (q15_t)0xd169, (q15_t)0x1415, (q15_t)0xd172, (q15_t)0x140c, (q15_t)0xd17b, + (q15_t)0x1403, (q15_t)0xd183, (q15_t)0x13fa, (q15_t)0xd18c, (q15_t)0x13f1, (q15_t)0xd195, (q15_t)0x13e8, (q15_t)0xd19d, + (q15_t)0x13df, (q15_t)0xd1a6, (q15_t)0x13d5, (q15_t)0xd1af, (q15_t)0x13cc, (q15_t)0xd1b7, (q15_t)0x13c3, (q15_t)0xd1c0, + (q15_t)0x13ba, (q15_t)0xd1c9, (q15_t)0x13b1, (q15_t)0xd1d1, (q15_t)0x13a8, (q15_t)0xd1da, (q15_t)0x139f, (q15_t)0xd1e3, + (q15_t)0x1396, (q15_t)0xd1eb, (q15_t)0x138d, (q15_t)0xd1f4, (q15_t)0x1384, (q15_t)0xd1fd, (q15_t)0x137b, (q15_t)0xd206, + (q15_t)0x1372, (q15_t)0xd20e, (q15_t)0x1369, (q15_t)0xd217, (q15_t)0x1360, (q15_t)0xd220, (q15_t)0x1357, (q15_t)0xd229, + (q15_t)0x134e, (q15_t)0xd231, (q15_t)0x1345, (q15_t)0xd23a, (q15_t)0x133c, (q15_t)0xd243, (q15_t)0x1333, (q15_t)0xd24c, + (q15_t)0x132a, (q15_t)0xd255, (q15_t)0x1321, (q15_t)0xd25d, (q15_t)0x1318, (q15_t)0xd266, (q15_t)0x130f, (q15_t)0xd26f, + (q15_t)0x1306, (q15_t)0xd278, (q15_t)0x12fd, (q15_t)0xd281, (q15_t)0x12f4, (q15_t)0xd28a, (q15_t)0x12eb, (q15_t)0xd292, + (q15_t)0x12e2, (q15_t)0xd29b, (q15_t)0x12d9, (q15_t)0xd2a4, (q15_t)0x12d1, (q15_t)0xd2ad, (q15_t)0x12c8, (q15_t)0xd2b6, + (q15_t)0x12bf, (q15_t)0xd2bf, (q15_t)0x12b6, (q15_t)0xd2c8, (q15_t)0x12ad, (q15_t)0xd2d1, (q15_t)0x12a4, (q15_t)0xd2d9, + (q15_t)0x129b, (q15_t)0xd2e2, (q15_t)0x1292, (q15_t)0xd2eb, (q15_t)0x128a, (q15_t)0xd2f4, (q15_t)0x1281, (q15_t)0xd2fd, + (q15_t)0x1278, (q15_t)0xd306, (q15_t)0x126f, (q15_t)0xd30f, (q15_t)0x1266, (q15_t)0xd318, (q15_t)0x125d, (q15_t)0xd321, + (q15_t)0x1255, (q15_t)0xd32a, (q15_t)0x124c, (q15_t)0xd333, (q15_t)0x1243, (q15_t)0xd33c, (q15_t)0x123a, (q15_t)0xd345, + (q15_t)0x1231, (q15_t)0xd34e, (q15_t)0x1229, (q15_t)0xd357, (q15_t)0x1220, (q15_t)0xd360, (q15_t)0x1217, (q15_t)0xd369, + (q15_t)0x120e, (q15_t)0xd372, (q15_t)0x1206, (q15_t)0xd37b, (q15_t)0x11fd, (q15_t)0xd384, (q15_t)0x11f4, (q15_t)0xd38d, + (q15_t)0x11eb, (q15_t)0xd396, (q15_t)0x11e3, (q15_t)0xd39f, (q15_t)0x11da, (q15_t)0xd3a8, (q15_t)0x11d1, (q15_t)0xd3b1, + (q15_t)0x11c9, (q15_t)0xd3ba, (q15_t)0x11c0, (q15_t)0xd3c3, (q15_t)0x11b7, (q15_t)0xd3cc, (q15_t)0x11af, (q15_t)0xd3d5, + (q15_t)0x11a6, (q15_t)0xd3df, (q15_t)0x119d, (q15_t)0xd3e8, (q15_t)0x1195, (q15_t)0xd3f1, (q15_t)0x118c, (q15_t)0xd3fa, + (q15_t)0x1183, (q15_t)0xd403, (q15_t)0x117b, (q15_t)0xd40c, (q15_t)0x1172, (q15_t)0xd415, (q15_t)0x1169, (q15_t)0xd41e, + (q15_t)0x1161, (q15_t)0xd428, (q15_t)0x1158, (q15_t)0xd431, (q15_t)0x1150, (q15_t)0xd43a, (q15_t)0x1147, (q15_t)0xd443, + (q15_t)0x113e, (q15_t)0xd44c, (q15_t)0x1136, (q15_t)0xd455, (q15_t)0x112d, (q15_t)0xd45f, (q15_t)0x1125, (q15_t)0xd468, + (q15_t)0x111c, (q15_t)0xd471, (q15_t)0x1114, (q15_t)0xd47a, (q15_t)0x110b, (q15_t)0xd483, (q15_t)0x1103, (q15_t)0xd48d, + (q15_t)0x10fa, (q15_t)0xd496, (q15_t)0x10f2, (q15_t)0xd49f, (q15_t)0x10e9, (q15_t)0xd4a8, (q15_t)0x10e0, (q15_t)0xd4b2, + (q15_t)0x10d8, (q15_t)0xd4bb, (q15_t)0x10d0, (q15_t)0xd4c4, (q15_t)0x10c7, (q15_t)0xd4cd, (q15_t)0x10bf, (q15_t)0xd4d7, + (q15_t)0x10b6, (q15_t)0xd4e0, (q15_t)0x10ae, (q15_t)0xd4e9, (q15_t)0x10a5, (q15_t)0xd4f3, (q15_t)0x109d, (q15_t)0xd4fc, + (q15_t)0x1094, (q15_t)0xd505, (q15_t)0x108c, (q15_t)0xd50e, (q15_t)0x1083, (q15_t)0xd518, (q15_t)0x107b, (q15_t)0xd521, + (q15_t)0x1073, (q15_t)0xd52a, (q15_t)0x106a, (q15_t)0xd534, (q15_t)0x1062, (q15_t)0xd53d, (q15_t)0x1059, (q15_t)0xd547, + (q15_t)0x1051, (q15_t)0xd550, (q15_t)0x1049, (q15_t)0xd559, (q15_t)0x1040, (q15_t)0xd563, (q15_t)0x1038, (q15_t)0xd56c, + (q15_t)0x1030, (q15_t)0xd575, (q15_t)0x1027, (q15_t)0xd57f, (q15_t)0x101f, (q15_t)0xd588, (q15_t)0x1016, (q15_t)0xd592, + (q15_t)0x100e, (q15_t)0xd59b, (q15_t)0x1006, (q15_t)0xd5a4, (q15_t)0xffe, (q15_t)0xd5ae, (q15_t)0xff5, (q15_t)0xd5b7, + (q15_t)0xfed, (q15_t)0xd5c1, (q15_t)0xfe5, (q15_t)0xd5ca, (q15_t)0xfdc, (q15_t)0xd5d4, (q15_t)0xfd4, (q15_t)0xd5dd, + (q15_t)0xfcc, (q15_t)0xd5e6, (q15_t)0xfc4, (q15_t)0xd5f0, (q15_t)0xfbb, (q15_t)0xd5f9, (q15_t)0xfb3, (q15_t)0xd603, + (q15_t)0xfab, (q15_t)0xd60c, (q15_t)0xfa3, (q15_t)0xd616, (q15_t)0xf9a, (q15_t)0xd61f, (q15_t)0xf92, (q15_t)0xd629, + (q15_t)0xf8a, (q15_t)0xd632, (q15_t)0xf82, (q15_t)0xd63c, (q15_t)0xf79, (q15_t)0xd645, (q15_t)0xf71, (q15_t)0xd64f, + (q15_t)0xf69, (q15_t)0xd659, (q15_t)0xf61, (q15_t)0xd662, (q15_t)0xf59, (q15_t)0xd66c, (q15_t)0xf51, (q15_t)0xd675, + (q15_t)0xf48, (q15_t)0xd67f, (q15_t)0xf40, (q15_t)0xd688, (q15_t)0xf38, (q15_t)0xd692, (q15_t)0xf30, (q15_t)0xd69b, + (q15_t)0xf28, (q15_t)0xd6a5, (q15_t)0xf20, (q15_t)0xd6af, (q15_t)0xf18, (q15_t)0xd6b8, (q15_t)0xf10, (q15_t)0xd6c2, + (q15_t)0xf07, (q15_t)0xd6cb, (q15_t)0xeff, (q15_t)0xd6d5, (q15_t)0xef7, (q15_t)0xd6df, (q15_t)0xeef, (q15_t)0xd6e8, + (q15_t)0xee7, (q15_t)0xd6f2, (q15_t)0xedf, (q15_t)0xd6fc, (q15_t)0xed7, (q15_t)0xd705, (q15_t)0xecf, (q15_t)0xd70f, + (q15_t)0xec7, (q15_t)0xd719, (q15_t)0xebf, (q15_t)0xd722, (q15_t)0xeb7, (q15_t)0xd72c, (q15_t)0xeaf, (q15_t)0xd736, + (q15_t)0xea7, (q15_t)0xd73f, (q15_t)0xe9f, (q15_t)0xd749, (q15_t)0xe97, (q15_t)0xd753, (q15_t)0xe8f, (q15_t)0xd75c, + (q15_t)0xe87, (q15_t)0xd766, (q15_t)0xe7f, (q15_t)0xd770, (q15_t)0xe77, (q15_t)0xd77a, (q15_t)0xe6f, (q15_t)0xd783, + (q15_t)0xe67, (q15_t)0xd78d, (q15_t)0xe5f, (q15_t)0xd797, (q15_t)0xe57, (q15_t)0xd7a0, (q15_t)0xe4f, (q15_t)0xd7aa, + (q15_t)0xe47, (q15_t)0xd7b4, (q15_t)0xe40, (q15_t)0xd7be, (q15_t)0xe38, (q15_t)0xd7c8, (q15_t)0xe30, (q15_t)0xd7d1, + (q15_t)0xe28, (q15_t)0xd7db, (q15_t)0xe20, (q15_t)0xd7e5, (q15_t)0xe18, (q15_t)0xd7ef, (q15_t)0xe10, (q15_t)0xd7f8, + (q15_t)0xe08, (q15_t)0xd802, (q15_t)0xe01, (q15_t)0xd80c, (q15_t)0xdf9, (q15_t)0xd816, (q15_t)0xdf1, (q15_t)0xd820, + (q15_t)0xde9, (q15_t)0xd82a, (q15_t)0xde1, (q15_t)0xd833, (q15_t)0xdd9, (q15_t)0xd83d, (q15_t)0xdd2, (q15_t)0xd847, + (q15_t)0xdca, (q15_t)0xd851, (q15_t)0xdc2, (q15_t)0xd85b, (q15_t)0xdba, (q15_t)0xd865, (q15_t)0xdb2, (q15_t)0xd86f, + (q15_t)0xdab, (q15_t)0xd878, (q15_t)0xda3, (q15_t)0xd882, (q15_t)0xd9b, (q15_t)0xd88c, (q15_t)0xd93, (q15_t)0xd896, + (q15_t)0xd8c, (q15_t)0xd8a0, (q15_t)0xd84, (q15_t)0xd8aa, (q15_t)0xd7c, (q15_t)0xd8b4, (q15_t)0xd75, (q15_t)0xd8be, + (q15_t)0xd6d, (q15_t)0xd8c8, (q15_t)0xd65, (q15_t)0xd8d2, (q15_t)0xd5d, (q15_t)0xd8dc, (q15_t)0xd56, (q15_t)0xd8e6, + (q15_t)0xd4e, (q15_t)0xd8ef, (q15_t)0xd46, (q15_t)0xd8f9, (q15_t)0xd3f, (q15_t)0xd903, (q15_t)0xd37, (q15_t)0xd90d, + (q15_t)0xd30, (q15_t)0xd917, (q15_t)0xd28, (q15_t)0xd921, (q15_t)0xd20, (q15_t)0xd92b, (q15_t)0xd19, (q15_t)0xd935, + (q15_t)0xd11, (q15_t)0xd93f, (q15_t)0xd09, (q15_t)0xd949, (q15_t)0xd02, (q15_t)0xd953, (q15_t)0xcfa, (q15_t)0xd95d, + (q15_t)0xcf3, (q15_t)0xd967, (q15_t)0xceb, (q15_t)0xd971, (q15_t)0xce3, (q15_t)0xd97b, (q15_t)0xcdc, (q15_t)0xd985, + (q15_t)0xcd4, (q15_t)0xd98f, (q15_t)0xccd, (q15_t)0xd99a, (q15_t)0xcc5, (q15_t)0xd9a4, (q15_t)0xcbe, (q15_t)0xd9ae, + (q15_t)0xcb6, (q15_t)0xd9b8, (q15_t)0xcaf, (q15_t)0xd9c2, (q15_t)0xca7, (q15_t)0xd9cc, (q15_t)0xca0, (q15_t)0xd9d6, + (q15_t)0xc98, (q15_t)0xd9e0, (q15_t)0xc91, (q15_t)0xd9ea, (q15_t)0xc89, (q15_t)0xd9f4, (q15_t)0xc82, (q15_t)0xd9fe, + (q15_t)0xc7a, (q15_t)0xda08, (q15_t)0xc73, (q15_t)0xda13, (q15_t)0xc6b, (q15_t)0xda1d, (q15_t)0xc64, (q15_t)0xda27, + (q15_t)0xc5d, (q15_t)0xda31, (q15_t)0xc55, (q15_t)0xda3b, (q15_t)0xc4e, (q15_t)0xda45, (q15_t)0xc46, (q15_t)0xda4f, + (q15_t)0xc3f, (q15_t)0xda5a, (q15_t)0xc38, (q15_t)0xda64, (q15_t)0xc30, (q15_t)0xda6e, (q15_t)0xc29, (q15_t)0xda78, + (q15_t)0xc21, (q15_t)0xda82, (q15_t)0xc1a, (q15_t)0xda8c, (q15_t)0xc13, (q15_t)0xda97, (q15_t)0xc0b, (q15_t)0xdaa1, + (q15_t)0xc04, (q15_t)0xdaab, (q15_t)0xbfd, (q15_t)0xdab5, (q15_t)0xbf5, (q15_t)0xdabf, (q15_t)0xbee, (q15_t)0xdaca, + (q15_t)0xbe7, (q15_t)0xdad4, (q15_t)0xbe0, (q15_t)0xdade, (q15_t)0xbd8, (q15_t)0xdae8, (q15_t)0xbd1, (q15_t)0xdaf3, + (q15_t)0xbca, (q15_t)0xdafd, (q15_t)0xbc2, (q15_t)0xdb07, (q15_t)0xbbb, (q15_t)0xdb11, (q15_t)0xbb4, (q15_t)0xdb1c, + (q15_t)0xbad, (q15_t)0xdb26, (q15_t)0xba5, (q15_t)0xdb30, (q15_t)0xb9e, (q15_t)0xdb3b, (q15_t)0xb97, (q15_t)0xdb45, + (q15_t)0xb90, (q15_t)0xdb4f, (q15_t)0xb89, (q15_t)0xdb59, (q15_t)0xb81, (q15_t)0xdb64, (q15_t)0xb7a, (q15_t)0xdb6e, + (q15_t)0xb73, (q15_t)0xdb78, (q15_t)0xb6c, (q15_t)0xdb83, (q15_t)0xb65, (q15_t)0xdb8d, (q15_t)0xb5e, (q15_t)0xdb97, + (q15_t)0xb56, (q15_t)0xdba2, (q15_t)0xb4f, (q15_t)0xdbac, (q15_t)0xb48, (q15_t)0xdbb6, (q15_t)0xb41, (q15_t)0xdbc1, + (q15_t)0xb3a, (q15_t)0xdbcb, (q15_t)0xb33, (q15_t)0xdbd5, (q15_t)0xb2c, (q15_t)0xdbe0, (q15_t)0xb25, (q15_t)0xdbea, + (q15_t)0xb1e, (q15_t)0xdbf5, (q15_t)0xb16, (q15_t)0xdbff, (q15_t)0xb0f, (q15_t)0xdc09, (q15_t)0xb08, (q15_t)0xdc14, + (q15_t)0xb01, (q15_t)0xdc1e, (q15_t)0xafa, (q15_t)0xdc29, (q15_t)0xaf3, (q15_t)0xdc33, (q15_t)0xaec, (q15_t)0xdc3d, + (q15_t)0xae5, (q15_t)0xdc48, (q15_t)0xade, (q15_t)0xdc52, (q15_t)0xad7, (q15_t)0xdc5d, (q15_t)0xad0, (q15_t)0xdc67, + (q15_t)0xac9, (q15_t)0xdc72, (q15_t)0xac2, (q15_t)0xdc7c, (q15_t)0xabb, (q15_t)0xdc86, (q15_t)0xab4, (q15_t)0xdc91, + (q15_t)0xaad, (q15_t)0xdc9b, (q15_t)0xaa6, (q15_t)0xdca6, (q15_t)0xa9f, (q15_t)0xdcb0, (q15_t)0xa99, (q15_t)0xdcbb, + (q15_t)0xa92, (q15_t)0xdcc5, (q15_t)0xa8b, (q15_t)0xdcd0, (q15_t)0xa84, (q15_t)0xdcda, (q15_t)0xa7d, (q15_t)0xdce5, + (q15_t)0xa76, (q15_t)0xdcef, (q15_t)0xa6f, (q15_t)0xdcfa, (q15_t)0xa68, (q15_t)0xdd04, (q15_t)0xa61, (q15_t)0xdd0f, + (q15_t)0xa5b, (q15_t)0xdd19, (q15_t)0xa54, (q15_t)0xdd24, (q15_t)0xa4d, (q15_t)0xdd2e, (q15_t)0xa46, (q15_t)0xdd39, + (q15_t)0xa3f, (q15_t)0xdd44, (q15_t)0xa38, (q15_t)0xdd4e, (q15_t)0xa32, (q15_t)0xdd59, (q15_t)0xa2b, (q15_t)0xdd63, + (q15_t)0xa24, (q15_t)0xdd6e, (q15_t)0xa1d, (q15_t)0xdd78, (q15_t)0xa16, (q15_t)0xdd83, (q15_t)0xa10, (q15_t)0xdd8e, + (q15_t)0xa09, (q15_t)0xdd98, (q15_t)0xa02, (q15_t)0xdda3, (q15_t)0x9fb, (q15_t)0xddad, (q15_t)0x9f5, (q15_t)0xddb8, + (q15_t)0x9ee, (q15_t)0xddc3, (q15_t)0x9e7, (q15_t)0xddcd, (q15_t)0x9e0, (q15_t)0xddd8, (q15_t)0x9da, (q15_t)0xdde2, + (q15_t)0x9d3, (q15_t)0xdded, (q15_t)0x9cc, (q15_t)0xddf8, (q15_t)0x9c6, (q15_t)0xde02, (q15_t)0x9bf, (q15_t)0xde0d, + (q15_t)0x9b8, (q15_t)0xde18, (q15_t)0x9b2, (q15_t)0xde22, (q15_t)0x9ab, (q15_t)0xde2d, (q15_t)0x9a4, (q15_t)0xde38, + (q15_t)0x99e, (q15_t)0xde42, (q15_t)0x997, (q15_t)0xde4d, (q15_t)0x991, (q15_t)0xde58, (q15_t)0x98a, (q15_t)0xde62, + (q15_t)0x983, (q15_t)0xde6d, (q15_t)0x97d, (q15_t)0xde78, (q15_t)0x976, (q15_t)0xde83, (q15_t)0x970, (q15_t)0xde8d, + (q15_t)0x969, (q15_t)0xde98, (q15_t)0x963, (q15_t)0xdea3, (q15_t)0x95c, (q15_t)0xdead, (q15_t)0x955, (q15_t)0xdeb8, + (q15_t)0x94f, (q15_t)0xdec3, (q15_t)0x948, (q15_t)0xdece, (q15_t)0x942, (q15_t)0xded8, (q15_t)0x93b, (q15_t)0xdee3, + (q15_t)0x935, (q15_t)0xdeee, (q15_t)0x92e, (q15_t)0xdef9, (q15_t)0x928, (q15_t)0xdf03, (q15_t)0x921, (q15_t)0xdf0e, + (q15_t)0x91b, (q15_t)0xdf19, (q15_t)0x915, (q15_t)0xdf24, (q15_t)0x90e, (q15_t)0xdf2f, (q15_t)0x908, (q15_t)0xdf39, + (q15_t)0x901, (q15_t)0xdf44, (q15_t)0x8fb, (q15_t)0xdf4f, (q15_t)0x8f4, (q15_t)0xdf5a, (q15_t)0x8ee, (q15_t)0xdf65, + (q15_t)0x8e8, (q15_t)0xdf6f, (q15_t)0x8e1, (q15_t)0xdf7a, (q15_t)0x8db, (q15_t)0xdf85, (q15_t)0x8d4, (q15_t)0xdf90, + (q15_t)0x8ce, (q15_t)0xdf9b, (q15_t)0x8c8, (q15_t)0xdfa5, (q15_t)0x8c1, (q15_t)0xdfb0, (q15_t)0x8bb, (q15_t)0xdfbb, + (q15_t)0x8b5, (q15_t)0xdfc6, (q15_t)0x8ae, (q15_t)0xdfd1, (q15_t)0x8a8, (q15_t)0xdfdc, (q15_t)0x8a2, (q15_t)0xdfe7, + (q15_t)0x89b, (q15_t)0xdff1, (q15_t)0x895, (q15_t)0xdffc, (q15_t)0x88f, (q15_t)0xe007, (q15_t)0x889, (q15_t)0xe012, + (q15_t)0x882, (q15_t)0xe01d, (q15_t)0x87c, (q15_t)0xe028, (q15_t)0x876, (q15_t)0xe033, (q15_t)0x870, (q15_t)0xe03e, + (q15_t)0x869, (q15_t)0xe049, (q15_t)0x863, (q15_t)0xe054, (q15_t)0x85d, (q15_t)0xe05e, (q15_t)0x857, (q15_t)0xe069, + (q15_t)0x850, (q15_t)0xe074, (q15_t)0x84a, (q15_t)0xe07f, (q15_t)0x844, (q15_t)0xe08a, (q15_t)0x83e, (q15_t)0xe095, + (q15_t)0x838, (q15_t)0xe0a0, (q15_t)0x832, (q15_t)0xe0ab, (q15_t)0x82b, (q15_t)0xe0b6, (q15_t)0x825, (q15_t)0xe0c1, + (q15_t)0x81f, (q15_t)0xe0cc, (q15_t)0x819, (q15_t)0xe0d7, (q15_t)0x813, (q15_t)0xe0e2, (q15_t)0x80d, (q15_t)0xe0ed, + (q15_t)0x807, (q15_t)0xe0f8, (q15_t)0x801, (q15_t)0xe103, (q15_t)0x7fb, (q15_t)0xe10e, (q15_t)0x7f5, (q15_t)0xe119, + (q15_t)0x7ee, (q15_t)0xe124, (q15_t)0x7e8, (q15_t)0xe12f, (q15_t)0x7e2, (q15_t)0xe13a, (q15_t)0x7dc, (q15_t)0xe145, + (q15_t)0x7d6, (q15_t)0xe150, (q15_t)0x7d0, (q15_t)0xe15b, (q15_t)0x7ca, (q15_t)0xe166, (q15_t)0x7c4, (q15_t)0xe171, + (q15_t)0x7be, (q15_t)0xe17c, (q15_t)0x7b8, (q15_t)0xe187, (q15_t)0x7b2, (q15_t)0xe192, (q15_t)0x7ac, (q15_t)0xe19d, + (q15_t)0x7a6, (q15_t)0xe1a8, (q15_t)0x7a0, (q15_t)0xe1b3, (q15_t)0x79a, (q15_t)0xe1be, (q15_t)0x795, (q15_t)0xe1ca, + (q15_t)0x78f, (q15_t)0xe1d5, (q15_t)0x789, (q15_t)0xe1e0, (q15_t)0x783, (q15_t)0xe1eb, (q15_t)0x77d, (q15_t)0xe1f6, + (q15_t)0x777, (q15_t)0xe201, (q15_t)0x771, (q15_t)0xe20c, (q15_t)0x76b, (q15_t)0xe217, (q15_t)0x765, (q15_t)0xe222, + (q15_t)0x75f, (q15_t)0xe22d, (q15_t)0x75a, (q15_t)0xe239, (q15_t)0x754, (q15_t)0xe244, (q15_t)0x74e, (q15_t)0xe24f, + (q15_t)0x748, (q15_t)0xe25a, (q15_t)0x742, (q15_t)0xe265, (q15_t)0x73d, (q15_t)0xe270, (q15_t)0x737, (q15_t)0xe27b, + (q15_t)0x731, (q15_t)0xe287, (q15_t)0x72b, (q15_t)0xe292, (q15_t)0x725, (q15_t)0xe29d, (q15_t)0x720, (q15_t)0xe2a8, + (q15_t)0x71a, (q15_t)0xe2b3, (q15_t)0x714, (q15_t)0xe2be, (q15_t)0x70e, (q15_t)0xe2ca, (q15_t)0x709, (q15_t)0xe2d5, + (q15_t)0x703, (q15_t)0xe2e0, (q15_t)0x6fd, (q15_t)0xe2eb, (q15_t)0x6f7, (q15_t)0xe2f6, (q15_t)0x6f2, (q15_t)0xe301, + (q15_t)0x6ec, (q15_t)0xe30d, (q15_t)0x6e6, (q15_t)0xe318, (q15_t)0x6e1, (q15_t)0xe323, (q15_t)0x6db, (q15_t)0xe32e, + (q15_t)0x6d5, (q15_t)0xe33a, (q15_t)0x6d0, (q15_t)0xe345, (q15_t)0x6ca, (q15_t)0xe350, (q15_t)0x6c5, (q15_t)0xe35b, + (q15_t)0x6bf, (q15_t)0xe367, (q15_t)0x6b9, (q15_t)0xe372, (q15_t)0x6b4, (q15_t)0xe37d, (q15_t)0x6ae, (q15_t)0xe388, + (q15_t)0x6a8, (q15_t)0xe394, (q15_t)0x6a3, (q15_t)0xe39f, (q15_t)0x69d, (q15_t)0xe3aa, (q15_t)0x698, (q15_t)0xe3b5, + (q15_t)0x692, (q15_t)0xe3c1, (q15_t)0x68d, (q15_t)0xe3cc, (q15_t)0x687, (q15_t)0xe3d7, (q15_t)0x682, (q15_t)0xe3e2, + (q15_t)0x67c, (q15_t)0xe3ee, (q15_t)0x677, (q15_t)0xe3f9, (q15_t)0x671, (q15_t)0xe404, (q15_t)0x66c, (q15_t)0xe410, + (q15_t)0x666, (q15_t)0xe41b, (q15_t)0x661, (q15_t)0xe426, (q15_t)0x65b, (q15_t)0xe432, (q15_t)0x656, (q15_t)0xe43d, + (q15_t)0x650, (q15_t)0xe448, (q15_t)0x64b, (q15_t)0xe454, (q15_t)0x645, (q15_t)0xe45f, (q15_t)0x640, (q15_t)0xe46a, + (q15_t)0x63b, (q15_t)0xe476, (q15_t)0x635, (q15_t)0xe481, (q15_t)0x630, (q15_t)0xe48c, (q15_t)0x62a, (q15_t)0xe498, + (q15_t)0x625, (q15_t)0xe4a3, (q15_t)0x620, (q15_t)0xe4ae, (q15_t)0x61a, (q15_t)0xe4ba, (q15_t)0x615, (q15_t)0xe4c5, + (q15_t)0x610, (q15_t)0xe4d0, (q15_t)0x60a, (q15_t)0xe4dc, (q15_t)0x605, (q15_t)0xe4e7, (q15_t)0x600, (q15_t)0xe4f3, + (q15_t)0x5fa, (q15_t)0xe4fe, (q15_t)0x5f5, (q15_t)0xe509, (q15_t)0x5f0, (q15_t)0xe515, (q15_t)0x5ea, (q15_t)0xe520, + (q15_t)0x5e5, (q15_t)0xe52c, (q15_t)0x5e0, (q15_t)0xe537, (q15_t)0x5db, (q15_t)0xe542, (q15_t)0x5d5, (q15_t)0xe54e, + (q15_t)0x5d0, (q15_t)0xe559, (q15_t)0x5cb, (q15_t)0xe565, (q15_t)0x5c6, (q15_t)0xe570, (q15_t)0x5c1, (q15_t)0xe57c, + (q15_t)0x5bb, (q15_t)0xe587, (q15_t)0x5b6, (q15_t)0xe592, (q15_t)0x5b1, (q15_t)0xe59e, (q15_t)0x5ac, (q15_t)0xe5a9, + (q15_t)0x5a7, (q15_t)0xe5b5, (q15_t)0x5a1, (q15_t)0xe5c0, (q15_t)0x59c, (q15_t)0xe5cc, (q15_t)0x597, (q15_t)0xe5d7, + (q15_t)0x592, (q15_t)0xe5e3, (q15_t)0x58d, (q15_t)0xe5ee, (q15_t)0x588, (q15_t)0xe5fa, (q15_t)0x583, (q15_t)0xe605, + (q15_t)0x57e, (q15_t)0xe611, (q15_t)0x578, (q15_t)0xe61c, (q15_t)0x573, (q15_t)0xe628, (q15_t)0x56e, (q15_t)0xe633, + (q15_t)0x569, (q15_t)0xe63f, (q15_t)0x564, (q15_t)0xe64a, (q15_t)0x55f, (q15_t)0xe656, (q15_t)0x55a, (q15_t)0xe661, + (q15_t)0x555, (q15_t)0xe66d, (q15_t)0x550, (q15_t)0xe678, (q15_t)0x54b, (q15_t)0xe684, (q15_t)0x546, (q15_t)0xe68f, + (q15_t)0x541, (q15_t)0xe69b, (q15_t)0x53c, (q15_t)0xe6a6, (q15_t)0x537, (q15_t)0xe6b2, (q15_t)0x532, (q15_t)0xe6bd, + (q15_t)0x52d, (q15_t)0xe6c9, (q15_t)0x528, (q15_t)0xe6d4, (q15_t)0x523, (q15_t)0xe6e0, (q15_t)0x51e, (q15_t)0xe6ec, + (q15_t)0x51a, (q15_t)0xe6f7, (q15_t)0x515, (q15_t)0xe703, (q15_t)0x510, (q15_t)0xe70e, (q15_t)0x50b, (q15_t)0xe71a, + (q15_t)0x506, (q15_t)0xe725, (q15_t)0x501, (q15_t)0xe731, (q15_t)0x4fc, (q15_t)0xe73d, (q15_t)0x4f7, (q15_t)0xe748, + (q15_t)0x4f2, (q15_t)0xe754, (q15_t)0x4ee, (q15_t)0xe75f, (q15_t)0x4e9, (q15_t)0xe76b, (q15_t)0x4e4, (q15_t)0xe777, + (q15_t)0x4df, (q15_t)0xe782, (q15_t)0x4da, (q15_t)0xe78e, (q15_t)0x4d6, (q15_t)0xe799, (q15_t)0x4d1, (q15_t)0xe7a5, + (q15_t)0x4cc, (q15_t)0xe7b1, (q15_t)0x4c7, (q15_t)0xe7bc, (q15_t)0x4c2, (q15_t)0xe7c8, (q15_t)0x4be, (q15_t)0xe7d3, + (q15_t)0x4b9, (q15_t)0xe7df, (q15_t)0x4b4, (q15_t)0xe7eb, (q15_t)0x4b0, (q15_t)0xe7f6, (q15_t)0x4ab, (q15_t)0xe802, + (q15_t)0x4a6, (q15_t)0xe80e, (q15_t)0x4a1, (q15_t)0xe819, (q15_t)0x49d, (q15_t)0xe825, (q15_t)0x498, (q15_t)0xe831, + (q15_t)0x493, (q15_t)0xe83c, (q15_t)0x48f, (q15_t)0xe848, (q15_t)0x48a, (q15_t)0xe854, (q15_t)0x485, (q15_t)0xe85f, + (q15_t)0x481, (q15_t)0xe86b, (q15_t)0x47c, (q15_t)0xe877, (q15_t)0x478, (q15_t)0xe882, (q15_t)0x473, (q15_t)0xe88e, + (q15_t)0x46e, (q15_t)0xe89a, (q15_t)0x46a, (q15_t)0xe8a5, (q15_t)0x465, (q15_t)0xe8b1, (q15_t)0x461, (q15_t)0xe8bd, + (q15_t)0x45c, (q15_t)0xe8c9, (q15_t)0x457, (q15_t)0xe8d4, (q15_t)0x453, (q15_t)0xe8e0, (q15_t)0x44e, (q15_t)0xe8ec, + (q15_t)0x44a, (q15_t)0xe8f7, (q15_t)0x445, (q15_t)0xe903, (q15_t)0x441, (q15_t)0xe90f, (q15_t)0x43c, (q15_t)0xe91b, + (q15_t)0x438, (q15_t)0xe926, (q15_t)0x433, (q15_t)0xe932, (q15_t)0x42f, (q15_t)0xe93e, (q15_t)0x42a, (q15_t)0xe94a, + (q15_t)0x426, (q15_t)0xe955, (q15_t)0x422, (q15_t)0xe961, (q15_t)0x41d, (q15_t)0xe96d, (q15_t)0x419, (q15_t)0xe979, + (q15_t)0x414, (q15_t)0xe984, (q15_t)0x410, (q15_t)0xe990, (q15_t)0x40b, (q15_t)0xe99c, (q15_t)0x407, (q15_t)0xe9a8, + (q15_t)0x403, (q15_t)0xe9b4, (q15_t)0x3fe, (q15_t)0xe9bf, (q15_t)0x3fa, (q15_t)0xe9cb, (q15_t)0x3f6, (q15_t)0xe9d7, + (q15_t)0x3f1, (q15_t)0xe9e3, (q15_t)0x3ed, (q15_t)0xe9ee, (q15_t)0x3e9, (q15_t)0xe9fa, (q15_t)0x3e4, (q15_t)0xea06, + (q15_t)0x3e0, (q15_t)0xea12, (q15_t)0x3dc, (q15_t)0xea1e, (q15_t)0x3d7, (q15_t)0xea29, (q15_t)0x3d3, (q15_t)0xea35, + (q15_t)0x3cf, (q15_t)0xea41, (q15_t)0x3ca, (q15_t)0xea4d, (q15_t)0x3c6, (q15_t)0xea59, (q15_t)0x3c2, (q15_t)0xea65, + (q15_t)0x3be, (q15_t)0xea70, (q15_t)0x3ba, (q15_t)0xea7c, (q15_t)0x3b5, (q15_t)0xea88, (q15_t)0x3b1, (q15_t)0xea94, + (q15_t)0x3ad, (q15_t)0xeaa0, (q15_t)0x3a9, (q15_t)0xeaac, (q15_t)0x3a5, (q15_t)0xeab7, (q15_t)0x3a0, (q15_t)0xeac3, + (q15_t)0x39c, (q15_t)0xeacf, (q15_t)0x398, (q15_t)0xeadb, (q15_t)0x394, (q15_t)0xeae7, (q15_t)0x390, (q15_t)0xeaf3, + (q15_t)0x38c, (q15_t)0xeaff, (q15_t)0x387, (q15_t)0xeb0a, (q15_t)0x383, (q15_t)0xeb16, (q15_t)0x37f, (q15_t)0xeb22, + (q15_t)0x37b, (q15_t)0xeb2e, (q15_t)0x377, (q15_t)0xeb3a, (q15_t)0x373, (q15_t)0xeb46, (q15_t)0x36f, (q15_t)0xeb52, + (q15_t)0x36b, (q15_t)0xeb5e, (q15_t)0x367, (q15_t)0xeb6a, (q15_t)0x363, (q15_t)0xeb75, (q15_t)0x35f, (q15_t)0xeb81, + (q15_t)0x35b, (q15_t)0xeb8d, (q15_t)0x357, (q15_t)0xeb99, (q15_t)0x353, (q15_t)0xeba5, (q15_t)0x34f, (q15_t)0xebb1, + (q15_t)0x34b, (q15_t)0xebbd, (q15_t)0x347, (q15_t)0xebc9, (q15_t)0x343, (q15_t)0xebd5, (q15_t)0x33f, (q15_t)0xebe1, + (q15_t)0x33b, (q15_t)0xebed, (q15_t)0x337, (q15_t)0xebf9, (q15_t)0x333, (q15_t)0xec05, (q15_t)0x32f, (q15_t)0xec10, + (q15_t)0x32b, (q15_t)0xec1c, (q15_t)0x327, (q15_t)0xec28, (q15_t)0x323, (q15_t)0xec34, (q15_t)0x320, (q15_t)0xec40, + (q15_t)0x31c, (q15_t)0xec4c, (q15_t)0x318, (q15_t)0xec58, (q15_t)0x314, (q15_t)0xec64, (q15_t)0x310, (q15_t)0xec70, + (q15_t)0x30c, (q15_t)0xec7c, (q15_t)0x308, (q15_t)0xec88, (q15_t)0x305, (q15_t)0xec94, (q15_t)0x301, (q15_t)0xeca0, + (q15_t)0x2fd, (q15_t)0xecac, (q15_t)0x2f9, (q15_t)0xecb8, (q15_t)0x2f5, (q15_t)0xecc4, (q15_t)0x2f2, (q15_t)0xecd0, + (q15_t)0x2ee, (q15_t)0xecdc, (q15_t)0x2ea, (q15_t)0xece8, (q15_t)0x2e6, (q15_t)0xecf4, (q15_t)0x2e3, (q15_t)0xed00, + (q15_t)0x2df, (q15_t)0xed0c, (q15_t)0x2db, (q15_t)0xed18, (q15_t)0x2d8, (q15_t)0xed24, (q15_t)0x2d4, (q15_t)0xed30, + (q15_t)0x2d0, (q15_t)0xed3c, (q15_t)0x2cc, (q15_t)0xed48, (q15_t)0x2c9, (q15_t)0xed54, (q15_t)0x2c5, (q15_t)0xed60, + (q15_t)0x2c1, (q15_t)0xed6c, (q15_t)0x2be, (q15_t)0xed78, (q15_t)0x2ba, (q15_t)0xed84, (q15_t)0x2b7, (q15_t)0xed90, + (q15_t)0x2b3, (q15_t)0xed9c, (q15_t)0x2af, (q15_t)0xeda8, (q15_t)0x2ac, (q15_t)0xedb4, (q15_t)0x2a8, (q15_t)0xedc0, + (q15_t)0x2a5, (q15_t)0xedcc, (q15_t)0x2a1, (q15_t)0xedd8, (q15_t)0x29d, (q15_t)0xede4, (q15_t)0x29a, (q15_t)0xedf0, + (q15_t)0x296, (q15_t)0xedfc, (q15_t)0x293, (q15_t)0xee09, (q15_t)0x28f, (q15_t)0xee15, (q15_t)0x28c, (q15_t)0xee21, + (q15_t)0x288, (q15_t)0xee2d, (q15_t)0x285, (q15_t)0xee39, (q15_t)0x281, (q15_t)0xee45, (q15_t)0x27e, (q15_t)0xee51, + (q15_t)0x27a, (q15_t)0xee5d, (q15_t)0x277, (q15_t)0xee69, (q15_t)0x273, (q15_t)0xee75, (q15_t)0x270, (q15_t)0xee81, + (q15_t)0x26d, (q15_t)0xee8d, (q15_t)0x269, (q15_t)0xee99, (q15_t)0x266, (q15_t)0xeea6, (q15_t)0x262, (q15_t)0xeeb2, + (q15_t)0x25f, (q15_t)0xeebe, (q15_t)0x25c, (q15_t)0xeeca, (q15_t)0x258, (q15_t)0xeed6, (q15_t)0x255, (q15_t)0xeee2, + (q15_t)0x251, (q15_t)0xeeee, (q15_t)0x24e, (q15_t)0xeefa, (q15_t)0x24b, (q15_t)0xef06, (q15_t)0x247, (q15_t)0xef13, + (q15_t)0x244, (q15_t)0xef1f, (q15_t)0x241, (q15_t)0xef2b, (q15_t)0x23e, (q15_t)0xef37, (q15_t)0x23a, (q15_t)0xef43, + (q15_t)0x237, (q15_t)0xef4f, (q15_t)0x234, (q15_t)0xef5b, (q15_t)0x230, (q15_t)0xef67, (q15_t)0x22d, (q15_t)0xef74, + (q15_t)0x22a, (q15_t)0xef80, (q15_t)0x227, (q15_t)0xef8c, (q15_t)0x223, (q15_t)0xef98, (q15_t)0x220, (q15_t)0xefa4, + (q15_t)0x21d, (q15_t)0xefb0, (q15_t)0x21a, (q15_t)0xefbc, (q15_t)0x217, (q15_t)0xefc9, (q15_t)0x213, (q15_t)0xefd5, + (q15_t)0x210, (q15_t)0xefe1, (q15_t)0x20d, (q15_t)0xefed, (q15_t)0x20a, (q15_t)0xeff9, (q15_t)0x207, (q15_t)0xf005, + (q15_t)0x204, (q15_t)0xf012, (q15_t)0x201, (q15_t)0xf01e, (q15_t)0x1fd, (q15_t)0xf02a, (q15_t)0x1fa, (q15_t)0xf036, + (q15_t)0x1f7, (q15_t)0xf042, (q15_t)0x1f4, (q15_t)0xf04e, (q15_t)0x1f1, (q15_t)0xf05b, (q15_t)0x1ee, (q15_t)0xf067, + (q15_t)0x1eb, (q15_t)0xf073, (q15_t)0x1e8, (q15_t)0xf07f, (q15_t)0x1e5, (q15_t)0xf08b, (q15_t)0x1e2, (q15_t)0xf098, + (q15_t)0x1df, (q15_t)0xf0a4, (q15_t)0x1dc, (q15_t)0xf0b0, (q15_t)0x1d9, (q15_t)0xf0bc, (q15_t)0x1d6, (q15_t)0xf0c8, + (q15_t)0x1d3, (q15_t)0xf0d5, (q15_t)0x1d0, (q15_t)0xf0e1, (q15_t)0x1cd, (q15_t)0xf0ed, (q15_t)0x1ca, (q15_t)0xf0f9, + (q15_t)0x1c7, (q15_t)0xf105, (q15_t)0x1c4, (q15_t)0xf112, (q15_t)0x1c1, (q15_t)0xf11e, (q15_t)0x1be, (q15_t)0xf12a, + (q15_t)0x1bb, (q15_t)0xf136, (q15_t)0x1b8, (q15_t)0xf143, (q15_t)0x1b6, (q15_t)0xf14f, (q15_t)0x1b3, (q15_t)0xf15b, + (q15_t)0x1b0, (q15_t)0xf167, (q15_t)0x1ad, (q15_t)0xf174, (q15_t)0x1aa, (q15_t)0xf180, (q15_t)0x1a7, (q15_t)0xf18c, + (q15_t)0x1a4, (q15_t)0xf198, (q15_t)0x1a2, (q15_t)0xf1a4, (q15_t)0x19f, (q15_t)0xf1b1, (q15_t)0x19c, (q15_t)0xf1bd, + (q15_t)0x199, (q15_t)0xf1c9, (q15_t)0x196, (q15_t)0xf1d5, (q15_t)0x194, (q15_t)0xf1e2, (q15_t)0x191, (q15_t)0xf1ee, + (q15_t)0x18e, (q15_t)0xf1fa, (q15_t)0x18b, (q15_t)0xf207, (q15_t)0x189, (q15_t)0xf213, (q15_t)0x186, (q15_t)0xf21f, + (q15_t)0x183, (q15_t)0xf22b, (q15_t)0x180, (q15_t)0xf238, (q15_t)0x17e, (q15_t)0xf244, (q15_t)0x17b, (q15_t)0xf250, + (q15_t)0x178, (q15_t)0xf25c, (q15_t)0x176, (q15_t)0xf269, (q15_t)0x173, (q15_t)0xf275, (q15_t)0x170, (q15_t)0xf281, + (q15_t)0x16e, (q15_t)0xf28e, (q15_t)0x16b, (q15_t)0xf29a, (q15_t)0x168, (q15_t)0xf2a6, (q15_t)0x166, (q15_t)0xf2b2, + (q15_t)0x163, (q15_t)0xf2bf, (q15_t)0x161, (q15_t)0xf2cb, (q15_t)0x15e, (q15_t)0xf2d7, (q15_t)0x15b, (q15_t)0xf2e4, + (q15_t)0x159, (q15_t)0xf2f0, (q15_t)0x156, (q15_t)0xf2fc, (q15_t)0x154, (q15_t)0xf308, (q15_t)0x151, (q15_t)0xf315, + (q15_t)0x14f, (q15_t)0xf321, (q15_t)0x14c, (q15_t)0xf32d, (q15_t)0x14a, (q15_t)0xf33a, (q15_t)0x147, (q15_t)0xf346, + (q15_t)0x145, (q15_t)0xf352, (q15_t)0x142, (q15_t)0xf35f, (q15_t)0x140, (q15_t)0xf36b, (q15_t)0x13d, (q15_t)0xf377, + (q15_t)0x13b, (q15_t)0xf384, (q15_t)0x138, (q15_t)0xf390, (q15_t)0x136, (q15_t)0xf39c, (q15_t)0x134, (q15_t)0xf3a9, + (q15_t)0x131, (q15_t)0xf3b5, (q15_t)0x12f, (q15_t)0xf3c1, (q15_t)0x12c, (q15_t)0xf3ce, (q15_t)0x12a, (q15_t)0xf3da, + (q15_t)0x128, (q15_t)0xf3e6, (q15_t)0x125, (q15_t)0xf3f3, (q15_t)0x123, (q15_t)0xf3ff, (q15_t)0x120, (q15_t)0xf40b, + (q15_t)0x11e, (q15_t)0xf418, (q15_t)0x11c, (q15_t)0xf424, (q15_t)0x119, (q15_t)0xf430, (q15_t)0x117, (q15_t)0xf43d, + (q15_t)0x115, (q15_t)0xf449, (q15_t)0x113, (q15_t)0xf455, (q15_t)0x110, (q15_t)0xf462, (q15_t)0x10e, (q15_t)0xf46e, + (q15_t)0x10c, (q15_t)0xf47b, (q15_t)0x109, (q15_t)0xf487, (q15_t)0x107, (q15_t)0xf493, (q15_t)0x105, (q15_t)0xf4a0, + (q15_t)0x103, (q15_t)0xf4ac, (q15_t)0x100, (q15_t)0xf4b8, (q15_t)0xfe, (q15_t)0xf4c5, (q15_t)0xfc, (q15_t)0xf4d1, + (q15_t)0xfa, (q15_t)0xf4dd, (q15_t)0xf8, (q15_t)0xf4ea, (q15_t)0xf6, (q15_t)0xf4f6, (q15_t)0xf3, (q15_t)0xf503, + (q15_t)0xf1, (q15_t)0xf50f, (q15_t)0xef, (q15_t)0xf51b, (q15_t)0xed, (q15_t)0xf528, (q15_t)0xeb, (q15_t)0xf534, + (q15_t)0xe9, (q15_t)0xf540, (q15_t)0xe7, (q15_t)0xf54d, (q15_t)0xe4, (q15_t)0xf559, (q15_t)0xe2, (q15_t)0xf566, + (q15_t)0xe0, (q15_t)0xf572, (q15_t)0xde, (q15_t)0xf57e, (q15_t)0xdc, (q15_t)0xf58b, (q15_t)0xda, (q15_t)0xf597, + (q15_t)0xd8, (q15_t)0xf5a4, (q15_t)0xd6, (q15_t)0xf5b0, (q15_t)0xd4, (q15_t)0xf5bc, (q15_t)0xd2, (q15_t)0xf5c9, + (q15_t)0xd0, (q15_t)0xf5d5, (q15_t)0xce, (q15_t)0xf5e2, (q15_t)0xcc, (q15_t)0xf5ee, (q15_t)0xca, (q15_t)0xf5fa, + (q15_t)0xc8, (q15_t)0xf607, (q15_t)0xc6, (q15_t)0xf613, (q15_t)0xc4, (q15_t)0xf620, (q15_t)0xc2, (q15_t)0xf62c, + (q15_t)0xc0, (q15_t)0xf639, (q15_t)0xbe, (q15_t)0xf645, (q15_t)0xbd, (q15_t)0xf651, (q15_t)0xbb, (q15_t)0xf65e, + (q15_t)0xb9, (q15_t)0xf66a, (q15_t)0xb7, (q15_t)0xf677, (q15_t)0xb5, (q15_t)0xf683, (q15_t)0xb3, (q15_t)0xf690, + (q15_t)0xb1, (q15_t)0xf69c, (q15_t)0xaf, (q15_t)0xf6a8, (q15_t)0xae, (q15_t)0xf6b5, (q15_t)0xac, (q15_t)0xf6c1, + (q15_t)0xaa, (q15_t)0xf6ce, (q15_t)0xa8, (q15_t)0xf6da, (q15_t)0xa6, (q15_t)0xf6e7, (q15_t)0xa5, (q15_t)0xf6f3, + (q15_t)0xa3, (q15_t)0xf6ff, (q15_t)0xa1, (q15_t)0xf70c, (q15_t)0x9f, (q15_t)0xf718, (q15_t)0x9e, (q15_t)0xf725, + (q15_t)0x9c, (q15_t)0xf731, (q15_t)0x9a, (q15_t)0xf73e, (q15_t)0x98, (q15_t)0xf74a, (q15_t)0x97, (q15_t)0xf757, + (q15_t)0x95, (q15_t)0xf763, (q15_t)0x93, (q15_t)0xf76f, (q15_t)0x92, (q15_t)0xf77c, (q15_t)0x90, (q15_t)0xf788, + (q15_t)0x8e, (q15_t)0xf795, (q15_t)0x8d, (q15_t)0xf7a1, (q15_t)0x8b, (q15_t)0xf7ae, (q15_t)0x89, (q15_t)0xf7ba, + (q15_t)0x88, (q15_t)0xf7c7, (q15_t)0x86, (q15_t)0xf7d3, (q15_t)0x85, (q15_t)0xf7e0, (q15_t)0x83, (q15_t)0xf7ec, + (q15_t)0x81, (q15_t)0xf7f9, (q15_t)0x80, (q15_t)0xf805, (q15_t)0x7e, (q15_t)0xf811, (q15_t)0x7d, (q15_t)0xf81e, + (q15_t)0x7b, (q15_t)0xf82a, (q15_t)0x7a, (q15_t)0xf837, (q15_t)0x78, (q15_t)0xf843, (q15_t)0x77, (q15_t)0xf850, + (q15_t)0x75, (q15_t)0xf85c, (q15_t)0x74, (q15_t)0xf869, (q15_t)0x72, (q15_t)0xf875, (q15_t)0x71, (q15_t)0xf882, + (q15_t)0x6f, (q15_t)0xf88e, (q15_t)0x6e, (q15_t)0xf89b, (q15_t)0x6c, (q15_t)0xf8a7, (q15_t)0x6b, (q15_t)0xf8b4, + (q15_t)0x69, (q15_t)0xf8c0, (q15_t)0x68, (q15_t)0xf8cd, (q15_t)0x67, (q15_t)0xf8d9, (q15_t)0x65, (q15_t)0xf8e6, + (q15_t)0x64, (q15_t)0xf8f2, (q15_t)0x62, (q15_t)0xf8ff, (q15_t)0x61, (q15_t)0xf90b, (q15_t)0x60, (q15_t)0xf918, + (q15_t)0x5e, (q15_t)0xf924, (q15_t)0x5d, (q15_t)0xf931, (q15_t)0x5c, (q15_t)0xf93d, (q15_t)0x5a, (q15_t)0xf94a, + (q15_t)0x59, (q15_t)0xf956, (q15_t)0x58, (q15_t)0xf963, (q15_t)0x56, (q15_t)0xf96f, (q15_t)0x55, (q15_t)0xf97c, + (q15_t)0x54, (q15_t)0xf988, (q15_t)0x53, (q15_t)0xf995, (q15_t)0x51, (q15_t)0xf9a1, (q15_t)0x50, (q15_t)0xf9ae, + (q15_t)0x4f, (q15_t)0xf9ba, (q15_t)0x4e, (q15_t)0xf9c7, (q15_t)0x4c, (q15_t)0xf9d3, (q15_t)0x4b, (q15_t)0xf9e0, + (q15_t)0x4a, (q15_t)0xf9ec, (q15_t)0x49, (q15_t)0xf9f9, (q15_t)0x48, (q15_t)0xfa05, (q15_t)0x47, (q15_t)0xfa12, + (q15_t)0x45, (q15_t)0xfa1e, (q15_t)0x44, (q15_t)0xfa2b, (q15_t)0x43, (q15_t)0xfa37, (q15_t)0x42, (q15_t)0xfa44, + (q15_t)0x41, (q15_t)0xfa50, (q15_t)0x40, (q15_t)0xfa5d, (q15_t)0x3f, (q15_t)0xfa69, (q15_t)0x3d, (q15_t)0xfa76, + (q15_t)0x3c, (q15_t)0xfa82, (q15_t)0x3b, (q15_t)0xfa8f, (q15_t)0x3a, (q15_t)0xfa9b, (q15_t)0x39, (q15_t)0xfaa8, + (q15_t)0x38, (q15_t)0xfab4, (q15_t)0x37, (q15_t)0xfac1, (q15_t)0x36, (q15_t)0xfacd, (q15_t)0x35, (q15_t)0xfada, + (q15_t)0x34, (q15_t)0xfae6, (q15_t)0x33, (q15_t)0xfaf3, (q15_t)0x32, (q15_t)0xfb00, (q15_t)0x31, (q15_t)0xfb0c, + (q15_t)0x30, (q15_t)0xfb19, (q15_t)0x2f, (q15_t)0xfb25, (q15_t)0x2e, (q15_t)0xfb32, (q15_t)0x2d, (q15_t)0xfb3e, + (q15_t)0x2c, (q15_t)0xfb4b, (q15_t)0x2b, (q15_t)0xfb57, (q15_t)0x2b, (q15_t)0xfb64, (q15_t)0x2a, (q15_t)0xfb70, + (q15_t)0x29, (q15_t)0xfb7d, (q15_t)0x28, (q15_t)0xfb89, (q15_t)0x27, (q15_t)0xfb96, (q15_t)0x26, (q15_t)0xfba2, + (q15_t)0x25, (q15_t)0xfbaf, (q15_t)0x24, (q15_t)0xfbbc, (q15_t)0x24, (q15_t)0xfbc8, (q15_t)0x23, (q15_t)0xfbd5, + (q15_t)0x22, (q15_t)0xfbe1, (q15_t)0x21, (q15_t)0xfbee, (q15_t)0x20, (q15_t)0xfbfa, (q15_t)0x20, (q15_t)0xfc07, + (q15_t)0x1f, (q15_t)0xfc13, (q15_t)0x1e, (q15_t)0xfc20, (q15_t)0x1d, (q15_t)0xfc2c, (q15_t)0x1d, (q15_t)0xfc39, + (q15_t)0x1c, (q15_t)0xfc45, (q15_t)0x1b, (q15_t)0xfc52, (q15_t)0x1a, (q15_t)0xfc5f, (q15_t)0x1a, (q15_t)0xfc6b, + (q15_t)0x19, (q15_t)0xfc78, (q15_t)0x18, (q15_t)0xfc84, (q15_t)0x18, (q15_t)0xfc91, (q15_t)0x17, (q15_t)0xfc9d, + (q15_t)0x16, (q15_t)0xfcaa, (q15_t)0x16, (q15_t)0xfcb6, (q15_t)0x15, (q15_t)0xfcc3, (q15_t)0x14, (q15_t)0xfcd0, + (q15_t)0x14, (q15_t)0xfcdc, (q15_t)0x13, (q15_t)0xfce9, (q15_t)0x13, (q15_t)0xfcf5, (q15_t)0x12, (q15_t)0xfd02, + (q15_t)0x11, (q15_t)0xfd0e, (q15_t)0x11, (q15_t)0xfd1b, (q15_t)0x10, (q15_t)0xfd27, (q15_t)0x10, (q15_t)0xfd34, + (q15_t)0xf, (q15_t)0xfd40, (q15_t)0xf, (q15_t)0xfd4d, (q15_t)0xe, (q15_t)0xfd5a, (q15_t)0xe, (q15_t)0xfd66, + (q15_t)0xd, (q15_t)0xfd73, (q15_t)0xd, (q15_t)0xfd7f, (q15_t)0xc, (q15_t)0xfd8c, (q15_t)0xc, (q15_t)0xfd98, + (q15_t)0xb, (q15_t)0xfda5, (q15_t)0xb, (q15_t)0xfdb2, (q15_t)0xa, (q15_t)0xfdbe, (q15_t)0xa, (q15_t)0xfdcb, + (q15_t)0x9, (q15_t)0xfdd7, (q15_t)0x9, (q15_t)0xfde4, (q15_t)0x9, (q15_t)0xfdf0, (q15_t)0x8, (q15_t)0xfdfd, + (q15_t)0x8, (q15_t)0xfe09, (q15_t)0x7, (q15_t)0xfe16, (q15_t)0x7, (q15_t)0xfe23, (q15_t)0x7, (q15_t)0xfe2f, + (q15_t)0x6, (q15_t)0xfe3c, (q15_t)0x6, (q15_t)0xfe48, (q15_t)0x6, (q15_t)0xfe55, (q15_t)0x5, (q15_t)0xfe61, + (q15_t)0x5, (q15_t)0xfe6e, (q15_t)0x5, (q15_t)0xfe7a, (q15_t)0x4, (q15_t)0xfe87, (q15_t)0x4, (q15_t)0xfe94, + (q15_t)0x4, (q15_t)0xfea0, (q15_t)0x4, (q15_t)0xfead, (q15_t)0x3, (q15_t)0xfeb9, (q15_t)0x3, (q15_t)0xfec6, + (q15_t)0x3, (q15_t)0xfed2, (q15_t)0x3, (q15_t)0xfedf, (q15_t)0x2, (q15_t)0xfeec, (q15_t)0x2, (q15_t)0xfef8, + (q15_t)0x2, (q15_t)0xff05, (q15_t)0x2, (q15_t)0xff11, (q15_t)0x2, (q15_t)0xff1e, (q15_t)0x1, (q15_t)0xff2a, + (q15_t)0x1, (q15_t)0xff37, (q15_t)0x1, (q15_t)0xff44, (q15_t)0x1, (q15_t)0xff50, (q15_t)0x1, (q15_t)0xff5d, + (q15_t)0x1, (q15_t)0xff69, (q15_t)0x1, (q15_t)0xff76, (q15_t)0x0, (q15_t)0xff82, (q15_t)0x0, (q15_t)0xff8f, + (q15_t)0x0, (q15_t)0xff9b, (q15_t)0x0, (q15_t)0xffa8, (q15_t)0x0, (q15_t)0xffb5, (q15_t)0x0, (q15_t)0xffc1, + (q15_t)0x0, (q15_t)0xffce, (q15_t)0x0, (q15_t)0xffda, (q15_t)0x0, (q15_t)0xffe7, (q15_t)0x0, (q15_t)0xfff3, + (q15_t)0x0, (q15_t)0x0, (q15_t)0x0, (q15_t)0xd, (q15_t)0x0, (q15_t)0x19, (q15_t)0x0, (q15_t)0x26, + (q15_t)0x0, (q15_t)0x32, (q15_t)0x0, (q15_t)0x3f, (q15_t)0x0, (q15_t)0x4b, (q15_t)0x0, (q15_t)0x58, + (q15_t)0x0, (q15_t)0x65, (q15_t)0x0, (q15_t)0x71, (q15_t)0x0, (q15_t)0x7e, (q15_t)0x1, (q15_t)0x8a, + (q15_t)0x1, (q15_t)0x97, (q15_t)0x1, (q15_t)0xa3, (q15_t)0x1, (q15_t)0xb0, (q15_t)0x1, (q15_t)0xbc, + (q15_t)0x1, (q15_t)0xc9, (q15_t)0x1, (q15_t)0xd6, (q15_t)0x2, (q15_t)0xe2, (q15_t)0x2, (q15_t)0xef, + (q15_t)0x2, (q15_t)0xfb, (q15_t)0x2, (q15_t)0x108, (q15_t)0x2, (q15_t)0x114, (q15_t)0x3, (q15_t)0x121, + (q15_t)0x3, (q15_t)0x12e, (q15_t)0x3, (q15_t)0x13a, (q15_t)0x3, (q15_t)0x147, (q15_t)0x4, (q15_t)0x153, + (q15_t)0x4, (q15_t)0x160, (q15_t)0x4, (q15_t)0x16c, (q15_t)0x4, (q15_t)0x179, (q15_t)0x5, (q15_t)0x186, + (q15_t)0x5, (q15_t)0x192, (q15_t)0x5, (q15_t)0x19f, (q15_t)0x6, (q15_t)0x1ab, (q15_t)0x6, (q15_t)0x1b8, + (q15_t)0x6, (q15_t)0x1c4, (q15_t)0x7, (q15_t)0x1d1, (q15_t)0x7, (q15_t)0x1dd, (q15_t)0x7, (q15_t)0x1ea, + (q15_t)0x8, (q15_t)0x1f7, (q15_t)0x8, (q15_t)0x203, (q15_t)0x9, (q15_t)0x210, (q15_t)0x9, (q15_t)0x21c, + (q15_t)0x9, (q15_t)0x229, (q15_t)0xa, (q15_t)0x235, (q15_t)0xa, (q15_t)0x242, (q15_t)0xb, (q15_t)0x24e, + (q15_t)0xb, (q15_t)0x25b, (q15_t)0xc, (q15_t)0x268, (q15_t)0xc, (q15_t)0x274, (q15_t)0xd, (q15_t)0x281, + (q15_t)0xd, (q15_t)0x28d, (q15_t)0xe, (q15_t)0x29a, (q15_t)0xe, (q15_t)0x2a6, (q15_t)0xf, (q15_t)0x2b3, + (q15_t)0xf, (q15_t)0x2c0, (q15_t)0x10, (q15_t)0x2cc, (q15_t)0x10, (q15_t)0x2d9, (q15_t)0x11, (q15_t)0x2e5, + (q15_t)0x11, (q15_t)0x2f2, (q15_t)0x12, (q15_t)0x2fe, (q15_t)0x13, (q15_t)0x30b, (q15_t)0x13, (q15_t)0x317, + (q15_t)0x14, (q15_t)0x324, (q15_t)0x14, (q15_t)0x330, (q15_t)0x15, (q15_t)0x33d, (q15_t)0x16, (q15_t)0x34a, + (q15_t)0x16, (q15_t)0x356, (q15_t)0x17, (q15_t)0x363, (q15_t)0x18, (q15_t)0x36f, (q15_t)0x18, (q15_t)0x37c, + (q15_t)0x19, (q15_t)0x388, (q15_t)0x1a, (q15_t)0x395, (q15_t)0x1a, (q15_t)0x3a1, (q15_t)0x1b, (q15_t)0x3ae, + (q15_t)0x1c, (q15_t)0x3bb, (q15_t)0x1d, (q15_t)0x3c7, (q15_t)0x1d, (q15_t)0x3d4, (q15_t)0x1e, (q15_t)0x3e0, + (q15_t)0x1f, (q15_t)0x3ed, (q15_t)0x20, (q15_t)0x3f9, (q15_t)0x20, (q15_t)0x406, (q15_t)0x21, (q15_t)0x412, + (q15_t)0x22, (q15_t)0x41f, (q15_t)0x23, (q15_t)0x42b, (q15_t)0x24, (q15_t)0x438, (q15_t)0x24, (q15_t)0x444, + (q15_t)0x25, (q15_t)0x451, (q15_t)0x26, (q15_t)0x45e, (q15_t)0x27, (q15_t)0x46a, (q15_t)0x28, (q15_t)0x477, + (q15_t)0x29, (q15_t)0x483, (q15_t)0x2a, (q15_t)0x490, (q15_t)0x2b, (q15_t)0x49c, (q15_t)0x2b, (q15_t)0x4a9, + (q15_t)0x2c, (q15_t)0x4b5, (q15_t)0x2d, (q15_t)0x4c2, (q15_t)0x2e, (q15_t)0x4ce, (q15_t)0x2f, (q15_t)0x4db, + (q15_t)0x30, (q15_t)0x4e7, (q15_t)0x31, (q15_t)0x4f4, (q15_t)0x32, (q15_t)0x500, (q15_t)0x33, (q15_t)0x50d, + (q15_t)0x34, (q15_t)0x51a, (q15_t)0x35, (q15_t)0x526, (q15_t)0x36, (q15_t)0x533, (q15_t)0x37, (q15_t)0x53f, + (q15_t)0x38, (q15_t)0x54c, (q15_t)0x39, (q15_t)0x558, (q15_t)0x3a, (q15_t)0x565, (q15_t)0x3b, (q15_t)0x571, + (q15_t)0x3c, (q15_t)0x57e, (q15_t)0x3d, (q15_t)0x58a, (q15_t)0x3f, (q15_t)0x597, (q15_t)0x40, (q15_t)0x5a3, + (q15_t)0x41, (q15_t)0x5b0, (q15_t)0x42, (q15_t)0x5bc, (q15_t)0x43, (q15_t)0x5c9, (q15_t)0x44, (q15_t)0x5d5, + (q15_t)0x45, (q15_t)0x5e2, (q15_t)0x47, (q15_t)0x5ee, (q15_t)0x48, (q15_t)0x5fb, (q15_t)0x49, (q15_t)0x607, + (q15_t)0x4a, (q15_t)0x614, (q15_t)0x4b, (q15_t)0x620, (q15_t)0x4c, (q15_t)0x62d, (q15_t)0x4e, (q15_t)0x639, + (q15_t)0x4f, (q15_t)0x646, (q15_t)0x50, (q15_t)0x652, (q15_t)0x51, (q15_t)0x65f, (q15_t)0x53, (q15_t)0x66b, + (q15_t)0x54, (q15_t)0x678, (q15_t)0x55, (q15_t)0x684, (q15_t)0x56, (q15_t)0x691, (q15_t)0x58, (q15_t)0x69d, + (q15_t)0x59, (q15_t)0x6aa, (q15_t)0x5a, (q15_t)0x6b6, (q15_t)0x5c, (q15_t)0x6c3, (q15_t)0x5d, (q15_t)0x6cf, + (q15_t)0x5e, (q15_t)0x6dc, (q15_t)0x60, (q15_t)0x6e8, (q15_t)0x61, (q15_t)0x6f5, (q15_t)0x62, (q15_t)0x701, + (q15_t)0x64, (q15_t)0x70e, (q15_t)0x65, (q15_t)0x71a, (q15_t)0x67, (q15_t)0x727, (q15_t)0x68, (q15_t)0x733, + (q15_t)0x69, (q15_t)0x740, (q15_t)0x6b, (q15_t)0x74c, (q15_t)0x6c, (q15_t)0x759, (q15_t)0x6e, (q15_t)0x765, + (q15_t)0x6f, (q15_t)0x772, (q15_t)0x71, (q15_t)0x77e, (q15_t)0x72, (q15_t)0x78b, (q15_t)0x74, (q15_t)0x797, + (q15_t)0x75, (q15_t)0x7a4, (q15_t)0x77, (q15_t)0x7b0, (q15_t)0x78, (q15_t)0x7bd, (q15_t)0x7a, (q15_t)0x7c9, + (q15_t)0x7b, (q15_t)0x7d6, (q15_t)0x7d, (q15_t)0x7e2, (q15_t)0x7e, (q15_t)0x7ef, (q15_t)0x80, (q15_t)0x7fb, + (q15_t)0x81, (q15_t)0x807, (q15_t)0x83, (q15_t)0x814, (q15_t)0x85, (q15_t)0x820, (q15_t)0x86, (q15_t)0x82d, + (q15_t)0x88, (q15_t)0x839, (q15_t)0x89, (q15_t)0x846, (q15_t)0x8b, (q15_t)0x852, (q15_t)0x8d, (q15_t)0x85f, + (q15_t)0x8e, (q15_t)0x86b, (q15_t)0x90, (q15_t)0x878, (q15_t)0x92, (q15_t)0x884, (q15_t)0x93, (q15_t)0x891, + (q15_t)0x95, (q15_t)0x89d, (q15_t)0x97, (q15_t)0x8a9, (q15_t)0x98, (q15_t)0x8b6, (q15_t)0x9a, (q15_t)0x8c2, + (q15_t)0x9c, (q15_t)0x8cf, (q15_t)0x9e, (q15_t)0x8db, (q15_t)0x9f, (q15_t)0x8e8, (q15_t)0xa1, (q15_t)0x8f4, + (q15_t)0xa3, (q15_t)0x901, (q15_t)0xa5, (q15_t)0x90d, (q15_t)0xa6, (q15_t)0x919, (q15_t)0xa8, (q15_t)0x926, + (q15_t)0xaa, (q15_t)0x932, (q15_t)0xac, (q15_t)0x93f, (q15_t)0xae, (q15_t)0x94b, (q15_t)0xaf, (q15_t)0x958, + (q15_t)0xb1, (q15_t)0x964, (q15_t)0xb3, (q15_t)0x970, (q15_t)0xb5, (q15_t)0x97d, (q15_t)0xb7, (q15_t)0x989, + (q15_t)0xb9, (q15_t)0x996, (q15_t)0xbb, (q15_t)0x9a2, (q15_t)0xbd, (q15_t)0x9af, (q15_t)0xbe, (q15_t)0x9bb, + (q15_t)0xc0, (q15_t)0x9c7, (q15_t)0xc2, (q15_t)0x9d4, (q15_t)0xc4, (q15_t)0x9e0, (q15_t)0xc6, (q15_t)0x9ed, + (q15_t)0xc8, (q15_t)0x9f9, (q15_t)0xca, (q15_t)0xa06, (q15_t)0xcc, (q15_t)0xa12, (q15_t)0xce, (q15_t)0xa1e, + (q15_t)0xd0, (q15_t)0xa2b, (q15_t)0xd2, (q15_t)0xa37, (q15_t)0xd4, (q15_t)0xa44, (q15_t)0xd6, (q15_t)0xa50, + (q15_t)0xd8, (q15_t)0xa5c, (q15_t)0xda, (q15_t)0xa69, (q15_t)0xdc, (q15_t)0xa75, (q15_t)0xde, (q15_t)0xa82, + (q15_t)0xe0, (q15_t)0xa8e, (q15_t)0xe2, (q15_t)0xa9a, (q15_t)0xe4, (q15_t)0xaa7, (q15_t)0xe7, (q15_t)0xab3, + (q15_t)0xe9, (q15_t)0xac0, (q15_t)0xeb, (q15_t)0xacc, (q15_t)0xed, (q15_t)0xad8, (q15_t)0xef, (q15_t)0xae5, + (q15_t)0xf1, (q15_t)0xaf1, (q15_t)0xf3, (q15_t)0xafd, (q15_t)0xf6, (q15_t)0xb0a, (q15_t)0xf8, (q15_t)0xb16, + (q15_t)0xfa, (q15_t)0xb23, (q15_t)0xfc, (q15_t)0xb2f, (q15_t)0xfe, (q15_t)0xb3b, (q15_t)0x100, (q15_t)0xb48, + (q15_t)0x103, (q15_t)0xb54, (q15_t)0x105, (q15_t)0xb60, (q15_t)0x107, (q15_t)0xb6d, (q15_t)0x109, (q15_t)0xb79, + (q15_t)0x10c, (q15_t)0xb85, (q15_t)0x10e, (q15_t)0xb92, (q15_t)0x110, (q15_t)0xb9e, (q15_t)0x113, (q15_t)0xbab, + (q15_t)0x115, (q15_t)0xbb7, (q15_t)0x117, (q15_t)0xbc3, (q15_t)0x119, (q15_t)0xbd0, (q15_t)0x11c, (q15_t)0xbdc, + (q15_t)0x11e, (q15_t)0xbe8, (q15_t)0x120, (q15_t)0xbf5, (q15_t)0x123, (q15_t)0xc01, (q15_t)0x125, (q15_t)0xc0d, + (q15_t)0x128, (q15_t)0xc1a, (q15_t)0x12a, (q15_t)0xc26, (q15_t)0x12c, (q15_t)0xc32, (q15_t)0x12f, (q15_t)0xc3f, + (q15_t)0x131, (q15_t)0xc4b, (q15_t)0x134, (q15_t)0xc57, (q15_t)0x136, (q15_t)0xc64, (q15_t)0x138, (q15_t)0xc70, + (q15_t)0x13b, (q15_t)0xc7c, (q15_t)0x13d, (q15_t)0xc89, (q15_t)0x140, (q15_t)0xc95, (q15_t)0x142, (q15_t)0xca1, + (q15_t)0x145, (q15_t)0xcae, (q15_t)0x147, (q15_t)0xcba, (q15_t)0x14a, (q15_t)0xcc6, (q15_t)0x14c, (q15_t)0xcd3, + (q15_t)0x14f, (q15_t)0xcdf, (q15_t)0x151, (q15_t)0xceb, (q15_t)0x154, (q15_t)0xcf8, (q15_t)0x156, (q15_t)0xd04, + (q15_t)0x159, (q15_t)0xd10, (q15_t)0x15b, (q15_t)0xd1c, (q15_t)0x15e, (q15_t)0xd29, (q15_t)0x161, (q15_t)0xd35, + (q15_t)0x163, (q15_t)0xd41, (q15_t)0x166, (q15_t)0xd4e, (q15_t)0x168, (q15_t)0xd5a, (q15_t)0x16b, (q15_t)0xd66, + (q15_t)0x16e, (q15_t)0xd72, (q15_t)0x170, (q15_t)0xd7f, (q15_t)0x173, (q15_t)0xd8b, (q15_t)0x176, (q15_t)0xd97, + (q15_t)0x178, (q15_t)0xda4, (q15_t)0x17b, (q15_t)0xdb0, (q15_t)0x17e, (q15_t)0xdbc, (q15_t)0x180, (q15_t)0xdc8, + (q15_t)0x183, (q15_t)0xdd5, (q15_t)0x186, (q15_t)0xde1, (q15_t)0x189, (q15_t)0xded, (q15_t)0x18b, (q15_t)0xdf9, + (q15_t)0x18e, (q15_t)0xe06, (q15_t)0x191, (q15_t)0xe12, (q15_t)0x194, (q15_t)0xe1e, (q15_t)0x196, (q15_t)0xe2b, + (q15_t)0x199, (q15_t)0xe37, (q15_t)0x19c, (q15_t)0xe43, (q15_t)0x19f, (q15_t)0xe4f, (q15_t)0x1a2, (q15_t)0xe5c, + (q15_t)0x1a4, (q15_t)0xe68, (q15_t)0x1a7, (q15_t)0xe74, (q15_t)0x1aa, (q15_t)0xe80, (q15_t)0x1ad, (q15_t)0xe8c, + (q15_t)0x1b0, (q15_t)0xe99, (q15_t)0x1b3, (q15_t)0xea5, (q15_t)0x1b6, (q15_t)0xeb1, (q15_t)0x1b8, (q15_t)0xebd, + (q15_t)0x1bb, (q15_t)0xeca, (q15_t)0x1be, (q15_t)0xed6, (q15_t)0x1c1, (q15_t)0xee2, (q15_t)0x1c4, (q15_t)0xeee, + (q15_t)0x1c7, (q15_t)0xefb, (q15_t)0x1ca, (q15_t)0xf07, (q15_t)0x1cd, (q15_t)0xf13, (q15_t)0x1d0, (q15_t)0xf1f, + (q15_t)0x1d3, (q15_t)0xf2b, (q15_t)0x1d6, (q15_t)0xf38, (q15_t)0x1d9, (q15_t)0xf44, (q15_t)0x1dc, (q15_t)0xf50, + (q15_t)0x1df, (q15_t)0xf5c, (q15_t)0x1e2, (q15_t)0xf68, (q15_t)0x1e5, (q15_t)0xf75, (q15_t)0x1e8, (q15_t)0xf81, + (q15_t)0x1eb, (q15_t)0xf8d, (q15_t)0x1ee, (q15_t)0xf99, (q15_t)0x1f1, (q15_t)0xfa5, (q15_t)0x1f4, (q15_t)0xfb2, + (q15_t)0x1f7, (q15_t)0xfbe, (q15_t)0x1fa, (q15_t)0xfca, (q15_t)0x1fd, (q15_t)0xfd6, (q15_t)0x201, (q15_t)0xfe2, + (q15_t)0x204, (q15_t)0xfee, (q15_t)0x207, (q15_t)0xffb, (q15_t)0x20a, (q15_t)0x1007, (q15_t)0x20d, (q15_t)0x1013, + (q15_t)0x210, (q15_t)0x101f, (q15_t)0x213, (q15_t)0x102b, (q15_t)0x217, (q15_t)0x1037, (q15_t)0x21a, (q15_t)0x1044, + (q15_t)0x21d, (q15_t)0x1050, (q15_t)0x220, (q15_t)0x105c, (q15_t)0x223, (q15_t)0x1068, (q15_t)0x227, (q15_t)0x1074, + (q15_t)0x22a, (q15_t)0x1080, (q15_t)0x22d, (q15_t)0x108c, (q15_t)0x230, (q15_t)0x1099, (q15_t)0x234, (q15_t)0x10a5, + (q15_t)0x237, (q15_t)0x10b1, (q15_t)0x23a, (q15_t)0x10bd, (q15_t)0x23e, (q15_t)0x10c9, (q15_t)0x241, (q15_t)0x10d5, + (q15_t)0x244, (q15_t)0x10e1, (q15_t)0x247, (q15_t)0x10ed, (q15_t)0x24b, (q15_t)0x10fa, (q15_t)0x24e, (q15_t)0x1106, + (q15_t)0x251, (q15_t)0x1112, (q15_t)0x255, (q15_t)0x111e, (q15_t)0x258, (q15_t)0x112a, (q15_t)0x25c, (q15_t)0x1136, + (q15_t)0x25f, (q15_t)0x1142, (q15_t)0x262, (q15_t)0x114e, (q15_t)0x266, (q15_t)0x115a, (q15_t)0x269, (q15_t)0x1167, + (q15_t)0x26d, (q15_t)0x1173, (q15_t)0x270, (q15_t)0x117f, (q15_t)0x273, (q15_t)0x118b, (q15_t)0x277, (q15_t)0x1197, + (q15_t)0x27a, (q15_t)0x11a3, (q15_t)0x27e, (q15_t)0x11af, (q15_t)0x281, (q15_t)0x11bb, (q15_t)0x285, (q15_t)0x11c7, + (q15_t)0x288, (q15_t)0x11d3, (q15_t)0x28c, (q15_t)0x11df, (q15_t)0x28f, (q15_t)0x11eb, (q15_t)0x293, (q15_t)0x11f7, + (q15_t)0x296, (q15_t)0x1204, (q15_t)0x29a, (q15_t)0x1210, (q15_t)0x29d, (q15_t)0x121c, (q15_t)0x2a1, (q15_t)0x1228, + (q15_t)0x2a5, (q15_t)0x1234, (q15_t)0x2a8, (q15_t)0x1240, (q15_t)0x2ac, (q15_t)0x124c, (q15_t)0x2af, (q15_t)0x1258, + (q15_t)0x2b3, (q15_t)0x1264, (q15_t)0x2b7, (q15_t)0x1270, (q15_t)0x2ba, (q15_t)0x127c, (q15_t)0x2be, (q15_t)0x1288, + (q15_t)0x2c1, (q15_t)0x1294, (q15_t)0x2c5, (q15_t)0x12a0, (q15_t)0x2c9, (q15_t)0x12ac, (q15_t)0x2cc, (q15_t)0x12b8, + (q15_t)0x2d0, (q15_t)0x12c4, (q15_t)0x2d4, (q15_t)0x12d0, (q15_t)0x2d8, (q15_t)0x12dc, (q15_t)0x2db, (q15_t)0x12e8, + (q15_t)0x2df, (q15_t)0x12f4, (q15_t)0x2e3, (q15_t)0x1300, (q15_t)0x2e6, (q15_t)0x130c, (q15_t)0x2ea, (q15_t)0x1318, + (q15_t)0x2ee, (q15_t)0x1324, (q15_t)0x2f2, (q15_t)0x1330, (q15_t)0x2f5, (q15_t)0x133c, (q15_t)0x2f9, (q15_t)0x1348, + (q15_t)0x2fd, (q15_t)0x1354, (q15_t)0x301, (q15_t)0x1360, (q15_t)0x305, (q15_t)0x136c, (q15_t)0x308, (q15_t)0x1378, + (q15_t)0x30c, (q15_t)0x1384, (q15_t)0x310, (q15_t)0x1390, (q15_t)0x314, (q15_t)0x139c, (q15_t)0x318, (q15_t)0x13a8, + (q15_t)0x31c, (q15_t)0x13b4, (q15_t)0x320, (q15_t)0x13c0, (q15_t)0x323, (q15_t)0x13cc, (q15_t)0x327, (q15_t)0x13d8, + (q15_t)0x32b, (q15_t)0x13e4, (q15_t)0x32f, (q15_t)0x13f0, (q15_t)0x333, (q15_t)0x13fb, (q15_t)0x337, (q15_t)0x1407, + (q15_t)0x33b, (q15_t)0x1413, (q15_t)0x33f, (q15_t)0x141f, (q15_t)0x343, (q15_t)0x142b, (q15_t)0x347, (q15_t)0x1437, + (q15_t)0x34b, (q15_t)0x1443, (q15_t)0x34f, (q15_t)0x144f, (q15_t)0x353, (q15_t)0x145b, (q15_t)0x357, (q15_t)0x1467, + (q15_t)0x35b, (q15_t)0x1473, (q15_t)0x35f, (q15_t)0x147f, (q15_t)0x363, (q15_t)0x148b, (q15_t)0x367, (q15_t)0x1496, + (q15_t)0x36b, (q15_t)0x14a2, (q15_t)0x36f, (q15_t)0x14ae, (q15_t)0x373, (q15_t)0x14ba, (q15_t)0x377, (q15_t)0x14c6, + (q15_t)0x37b, (q15_t)0x14d2, (q15_t)0x37f, (q15_t)0x14de, (q15_t)0x383, (q15_t)0x14ea, (q15_t)0x387, (q15_t)0x14f6, + (q15_t)0x38c, (q15_t)0x1501, (q15_t)0x390, (q15_t)0x150d, (q15_t)0x394, (q15_t)0x1519, (q15_t)0x398, (q15_t)0x1525, + (q15_t)0x39c, (q15_t)0x1531, (q15_t)0x3a0, (q15_t)0x153d, (q15_t)0x3a5, (q15_t)0x1549, (q15_t)0x3a9, (q15_t)0x1554, + (q15_t)0x3ad, (q15_t)0x1560, (q15_t)0x3b1, (q15_t)0x156c, (q15_t)0x3b5, (q15_t)0x1578, (q15_t)0x3ba, (q15_t)0x1584, + (q15_t)0x3be, (q15_t)0x1590, (q15_t)0x3c2, (q15_t)0x159b, (q15_t)0x3c6, (q15_t)0x15a7, (q15_t)0x3ca, (q15_t)0x15b3, + (q15_t)0x3cf, (q15_t)0x15bf, (q15_t)0x3d3, (q15_t)0x15cb, (q15_t)0x3d7, (q15_t)0x15d7, (q15_t)0x3dc, (q15_t)0x15e2, + (q15_t)0x3e0, (q15_t)0x15ee, (q15_t)0x3e4, (q15_t)0x15fa, (q15_t)0x3e9, (q15_t)0x1606, (q15_t)0x3ed, (q15_t)0x1612, + (q15_t)0x3f1, (q15_t)0x161d, (q15_t)0x3f6, (q15_t)0x1629, (q15_t)0x3fa, (q15_t)0x1635, (q15_t)0x3fe, (q15_t)0x1641, + (q15_t)0x403, (q15_t)0x164c, (q15_t)0x407, (q15_t)0x1658, (q15_t)0x40b, (q15_t)0x1664, (q15_t)0x410, (q15_t)0x1670, + (q15_t)0x414, (q15_t)0x167c, (q15_t)0x419, (q15_t)0x1687, (q15_t)0x41d, (q15_t)0x1693, (q15_t)0x422, (q15_t)0x169f, + (q15_t)0x426, (q15_t)0x16ab, (q15_t)0x42a, (q15_t)0x16b6, (q15_t)0x42f, (q15_t)0x16c2, (q15_t)0x433, (q15_t)0x16ce, + (q15_t)0x438, (q15_t)0x16da, (q15_t)0x43c, (q15_t)0x16e5, (q15_t)0x441, (q15_t)0x16f1, (q15_t)0x445, (q15_t)0x16fd, + (q15_t)0x44a, (q15_t)0x1709, (q15_t)0x44e, (q15_t)0x1714, (q15_t)0x453, (q15_t)0x1720, (q15_t)0x457, (q15_t)0x172c, + (q15_t)0x45c, (q15_t)0x1737, (q15_t)0x461, (q15_t)0x1743, (q15_t)0x465, (q15_t)0x174f, (q15_t)0x46a, (q15_t)0x175b, + (q15_t)0x46e, (q15_t)0x1766, (q15_t)0x473, (q15_t)0x1772, (q15_t)0x478, (q15_t)0x177e, (q15_t)0x47c, (q15_t)0x1789, + (q15_t)0x481, (q15_t)0x1795, (q15_t)0x485, (q15_t)0x17a1, (q15_t)0x48a, (q15_t)0x17ac, (q15_t)0x48f, (q15_t)0x17b8, + (q15_t)0x493, (q15_t)0x17c4, (q15_t)0x498, (q15_t)0x17cf, (q15_t)0x49d, (q15_t)0x17db, (q15_t)0x4a1, (q15_t)0x17e7, + (q15_t)0x4a6, (q15_t)0x17f2, (q15_t)0x4ab, (q15_t)0x17fe, (q15_t)0x4b0, (q15_t)0x180a, (q15_t)0x4b4, (q15_t)0x1815, + (q15_t)0x4b9, (q15_t)0x1821, (q15_t)0x4be, (q15_t)0x182d, (q15_t)0x4c2, (q15_t)0x1838, (q15_t)0x4c7, (q15_t)0x1844, + (q15_t)0x4cc, (q15_t)0x184f, (q15_t)0x4d1, (q15_t)0x185b, (q15_t)0x4d6, (q15_t)0x1867, (q15_t)0x4da, (q15_t)0x1872, + (q15_t)0x4df, (q15_t)0x187e, (q15_t)0x4e4, (q15_t)0x1889, (q15_t)0x4e9, (q15_t)0x1895, (q15_t)0x4ee, (q15_t)0x18a1, + (q15_t)0x4f2, (q15_t)0x18ac, (q15_t)0x4f7, (q15_t)0x18b8, (q15_t)0x4fc, (q15_t)0x18c3, (q15_t)0x501, (q15_t)0x18cf, + (q15_t)0x506, (q15_t)0x18db, (q15_t)0x50b, (q15_t)0x18e6, (q15_t)0x510, (q15_t)0x18f2, (q15_t)0x515, (q15_t)0x18fd, + (q15_t)0x51a, (q15_t)0x1909, (q15_t)0x51e, (q15_t)0x1914, (q15_t)0x523, (q15_t)0x1920, (q15_t)0x528, (q15_t)0x192c, + (q15_t)0x52d, (q15_t)0x1937, (q15_t)0x532, (q15_t)0x1943, (q15_t)0x537, (q15_t)0x194e, (q15_t)0x53c, (q15_t)0x195a, + (q15_t)0x541, (q15_t)0x1965, (q15_t)0x546, (q15_t)0x1971, (q15_t)0x54b, (q15_t)0x197c, (q15_t)0x550, (q15_t)0x1988, + (q15_t)0x555, (q15_t)0x1993, (q15_t)0x55a, (q15_t)0x199f, (q15_t)0x55f, (q15_t)0x19aa, (q15_t)0x564, (q15_t)0x19b6, + (q15_t)0x569, (q15_t)0x19c1, (q15_t)0x56e, (q15_t)0x19cd, (q15_t)0x573, (q15_t)0x19d8, (q15_t)0x578, (q15_t)0x19e4, + (q15_t)0x57e, (q15_t)0x19ef, (q15_t)0x583, (q15_t)0x19fb, (q15_t)0x588, (q15_t)0x1a06, (q15_t)0x58d, (q15_t)0x1a12, + (q15_t)0x592, (q15_t)0x1a1d, (q15_t)0x597, (q15_t)0x1a29, (q15_t)0x59c, (q15_t)0x1a34, (q15_t)0x5a1, (q15_t)0x1a40, + (q15_t)0x5a7, (q15_t)0x1a4b, (q15_t)0x5ac, (q15_t)0x1a57, (q15_t)0x5b1, (q15_t)0x1a62, (q15_t)0x5b6, (q15_t)0x1a6e, + (q15_t)0x5bb, (q15_t)0x1a79, (q15_t)0x5c1, (q15_t)0x1a84, (q15_t)0x5c6, (q15_t)0x1a90, (q15_t)0x5cb, (q15_t)0x1a9b, + (q15_t)0x5d0, (q15_t)0x1aa7, (q15_t)0x5d5, (q15_t)0x1ab2, (q15_t)0x5db, (q15_t)0x1abe, (q15_t)0x5e0, (q15_t)0x1ac9, + (q15_t)0x5e5, (q15_t)0x1ad4, (q15_t)0x5ea, (q15_t)0x1ae0, (q15_t)0x5f0, (q15_t)0x1aeb, (q15_t)0x5f5, (q15_t)0x1af7, + (q15_t)0x5fa, (q15_t)0x1b02, (q15_t)0x600, (q15_t)0x1b0d, (q15_t)0x605, (q15_t)0x1b19, (q15_t)0x60a, (q15_t)0x1b24, + (q15_t)0x610, (q15_t)0x1b30, (q15_t)0x615, (q15_t)0x1b3b, (q15_t)0x61a, (q15_t)0x1b46, (q15_t)0x620, (q15_t)0x1b52, + (q15_t)0x625, (q15_t)0x1b5d, (q15_t)0x62a, (q15_t)0x1b68, (q15_t)0x630, (q15_t)0x1b74, (q15_t)0x635, (q15_t)0x1b7f, + (q15_t)0x63b, (q15_t)0x1b8a, (q15_t)0x640, (q15_t)0x1b96, (q15_t)0x645, (q15_t)0x1ba1, (q15_t)0x64b, (q15_t)0x1bac, + (q15_t)0x650, (q15_t)0x1bb8, (q15_t)0x656, (q15_t)0x1bc3, (q15_t)0x65b, (q15_t)0x1bce, (q15_t)0x661, (q15_t)0x1bda, + (q15_t)0x666, (q15_t)0x1be5, (q15_t)0x66c, (q15_t)0x1bf0, (q15_t)0x671, (q15_t)0x1bfc, (q15_t)0x677, (q15_t)0x1c07, + (q15_t)0x67c, (q15_t)0x1c12, (q15_t)0x682, (q15_t)0x1c1e, (q15_t)0x687, (q15_t)0x1c29, (q15_t)0x68d, (q15_t)0x1c34, + (q15_t)0x692, (q15_t)0x1c3f, (q15_t)0x698, (q15_t)0x1c4b, (q15_t)0x69d, (q15_t)0x1c56, (q15_t)0x6a3, (q15_t)0x1c61, + (q15_t)0x6a8, (q15_t)0x1c6c, (q15_t)0x6ae, (q15_t)0x1c78, (q15_t)0x6b4, (q15_t)0x1c83, (q15_t)0x6b9, (q15_t)0x1c8e, + (q15_t)0x6bf, (q15_t)0x1c99, (q15_t)0x6c5, (q15_t)0x1ca5, (q15_t)0x6ca, (q15_t)0x1cb0, (q15_t)0x6d0, (q15_t)0x1cbb, + (q15_t)0x6d5, (q15_t)0x1cc6, (q15_t)0x6db, (q15_t)0x1cd2, (q15_t)0x6e1, (q15_t)0x1cdd, (q15_t)0x6e6, (q15_t)0x1ce8, + (q15_t)0x6ec, (q15_t)0x1cf3, (q15_t)0x6f2, (q15_t)0x1cff, (q15_t)0x6f7, (q15_t)0x1d0a, (q15_t)0x6fd, (q15_t)0x1d15, + (q15_t)0x703, (q15_t)0x1d20, (q15_t)0x709, (q15_t)0x1d2b, (q15_t)0x70e, (q15_t)0x1d36, (q15_t)0x714, (q15_t)0x1d42, + (q15_t)0x71a, (q15_t)0x1d4d, (q15_t)0x720, (q15_t)0x1d58, (q15_t)0x725, (q15_t)0x1d63, (q15_t)0x72b, (q15_t)0x1d6e, + (q15_t)0x731, (q15_t)0x1d79, (q15_t)0x737, (q15_t)0x1d85, (q15_t)0x73d, (q15_t)0x1d90, (q15_t)0x742, (q15_t)0x1d9b, + (q15_t)0x748, (q15_t)0x1da6, (q15_t)0x74e, (q15_t)0x1db1, (q15_t)0x754, (q15_t)0x1dbc, (q15_t)0x75a, (q15_t)0x1dc7, + (q15_t)0x75f, (q15_t)0x1dd3, (q15_t)0x765, (q15_t)0x1dde, (q15_t)0x76b, (q15_t)0x1de9, (q15_t)0x771, (q15_t)0x1df4, + (q15_t)0x777, (q15_t)0x1dff, (q15_t)0x77d, (q15_t)0x1e0a, (q15_t)0x783, (q15_t)0x1e15, (q15_t)0x789, (q15_t)0x1e20, + (q15_t)0x78f, (q15_t)0x1e2b, (q15_t)0x795, (q15_t)0x1e36, (q15_t)0x79a, (q15_t)0x1e42, (q15_t)0x7a0, (q15_t)0x1e4d, + (q15_t)0x7a6, (q15_t)0x1e58, (q15_t)0x7ac, (q15_t)0x1e63, (q15_t)0x7b2, (q15_t)0x1e6e, (q15_t)0x7b8, (q15_t)0x1e79, + (q15_t)0x7be, (q15_t)0x1e84, (q15_t)0x7c4, (q15_t)0x1e8f, (q15_t)0x7ca, (q15_t)0x1e9a, (q15_t)0x7d0, (q15_t)0x1ea5, + (q15_t)0x7d6, (q15_t)0x1eb0, (q15_t)0x7dc, (q15_t)0x1ebb, (q15_t)0x7e2, (q15_t)0x1ec6, (q15_t)0x7e8, (q15_t)0x1ed1, + (q15_t)0x7ee, (q15_t)0x1edc, (q15_t)0x7f5, (q15_t)0x1ee7, (q15_t)0x7fb, (q15_t)0x1ef2, (q15_t)0x801, (q15_t)0x1efd, + (q15_t)0x807, (q15_t)0x1f08, (q15_t)0x80d, (q15_t)0x1f13, (q15_t)0x813, (q15_t)0x1f1e, (q15_t)0x819, (q15_t)0x1f29, + (q15_t)0x81f, (q15_t)0x1f34, (q15_t)0x825, (q15_t)0x1f3f, (q15_t)0x82b, (q15_t)0x1f4a, (q15_t)0x832, (q15_t)0x1f55, + (q15_t)0x838, (q15_t)0x1f60, (q15_t)0x83e, (q15_t)0x1f6b, (q15_t)0x844, (q15_t)0x1f76, (q15_t)0x84a, (q15_t)0x1f81, + (q15_t)0x850, (q15_t)0x1f8c, (q15_t)0x857, (q15_t)0x1f97, (q15_t)0x85d, (q15_t)0x1fa2, (q15_t)0x863, (q15_t)0x1fac, + (q15_t)0x869, (q15_t)0x1fb7, (q15_t)0x870, (q15_t)0x1fc2, (q15_t)0x876, (q15_t)0x1fcd, (q15_t)0x87c, (q15_t)0x1fd8, + (q15_t)0x882, (q15_t)0x1fe3, (q15_t)0x889, (q15_t)0x1fee, (q15_t)0x88f, (q15_t)0x1ff9, (q15_t)0x895, (q15_t)0x2004, + (q15_t)0x89b, (q15_t)0x200f, (q15_t)0x8a2, (q15_t)0x2019, (q15_t)0x8a8, (q15_t)0x2024, (q15_t)0x8ae, (q15_t)0x202f, + (q15_t)0x8b5, (q15_t)0x203a, (q15_t)0x8bb, (q15_t)0x2045, (q15_t)0x8c1, (q15_t)0x2050, (q15_t)0x8c8, (q15_t)0x205b, + (q15_t)0x8ce, (q15_t)0x2065, (q15_t)0x8d4, (q15_t)0x2070, (q15_t)0x8db, (q15_t)0x207b, (q15_t)0x8e1, (q15_t)0x2086, + (q15_t)0x8e8, (q15_t)0x2091, (q15_t)0x8ee, (q15_t)0x209b, (q15_t)0x8f4, (q15_t)0x20a6, (q15_t)0x8fb, (q15_t)0x20b1, + (q15_t)0x901, (q15_t)0x20bc, (q15_t)0x908, (q15_t)0x20c7, (q15_t)0x90e, (q15_t)0x20d1, (q15_t)0x915, (q15_t)0x20dc, + (q15_t)0x91b, (q15_t)0x20e7, (q15_t)0x921, (q15_t)0x20f2, (q15_t)0x928, (q15_t)0x20fd, (q15_t)0x92e, (q15_t)0x2107, + (q15_t)0x935, (q15_t)0x2112, (q15_t)0x93b, (q15_t)0x211d, (q15_t)0x942, (q15_t)0x2128, (q15_t)0x948, (q15_t)0x2132, + (q15_t)0x94f, (q15_t)0x213d, (q15_t)0x955, (q15_t)0x2148, (q15_t)0x95c, (q15_t)0x2153, (q15_t)0x963, (q15_t)0x215d, + (q15_t)0x969, (q15_t)0x2168, (q15_t)0x970, (q15_t)0x2173, (q15_t)0x976, (q15_t)0x217d, (q15_t)0x97d, (q15_t)0x2188, + (q15_t)0x983, (q15_t)0x2193, (q15_t)0x98a, (q15_t)0x219e, (q15_t)0x991, (q15_t)0x21a8, (q15_t)0x997, (q15_t)0x21b3, + (q15_t)0x99e, (q15_t)0x21be, (q15_t)0x9a4, (q15_t)0x21c8, (q15_t)0x9ab, (q15_t)0x21d3, (q15_t)0x9b2, (q15_t)0x21de, + (q15_t)0x9b8, (q15_t)0x21e8, (q15_t)0x9bf, (q15_t)0x21f3, (q15_t)0x9c6, (q15_t)0x21fe, (q15_t)0x9cc, (q15_t)0x2208, + (q15_t)0x9d3, (q15_t)0x2213, (q15_t)0x9da, (q15_t)0x221e, (q15_t)0x9e0, (q15_t)0x2228, (q15_t)0x9e7, (q15_t)0x2233, + (q15_t)0x9ee, (q15_t)0x223d, (q15_t)0x9f5, (q15_t)0x2248, (q15_t)0x9fb, (q15_t)0x2253, (q15_t)0xa02, (q15_t)0x225d, + (q15_t)0xa09, (q15_t)0x2268, (q15_t)0xa10, (q15_t)0x2272, (q15_t)0xa16, (q15_t)0x227d, (q15_t)0xa1d, (q15_t)0x2288, + (q15_t)0xa24, (q15_t)0x2292, (q15_t)0xa2b, (q15_t)0x229d, (q15_t)0xa32, (q15_t)0x22a7, (q15_t)0xa38, (q15_t)0x22b2, + (q15_t)0xa3f, (q15_t)0x22bc, (q15_t)0xa46, (q15_t)0x22c7, (q15_t)0xa4d, (q15_t)0x22d2, (q15_t)0xa54, (q15_t)0x22dc, + (q15_t)0xa5b, (q15_t)0x22e7, (q15_t)0xa61, (q15_t)0x22f1, (q15_t)0xa68, (q15_t)0x22fc, (q15_t)0xa6f, (q15_t)0x2306, + (q15_t)0xa76, (q15_t)0x2311, (q15_t)0xa7d, (q15_t)0x231b, (q15_t)0xa84, (q15_t)0x2326, (q15_t)0xa8b, (q15_t)0x2330, + (q15_t)0xa92, (q15_t)0x233b, (q15_t)0xa99, (q15_t)0x2345, (q15_t)0xa9f, (q15_t)0x2350, (q15_t)0xaa6, (q15_t)0x235a, + (q15_t)0xaad, (q15_t)0x2365, (q15_t)0xab4, (q15_t)0x236f, (q15_t)0xabb, (q15_t)0x237a, (q15_t)0xac2, (q15_t)0x2384, + (q15_t)0xac9, (q15_t)0x238e, (q15_t)0xad0, (q15_t)0x2399, (q15_t)0xad7, (q15_t)0x23a3, (q15_t)0xade, (q15_t)0x23ae, + (q15_t)0xae5, (q15_t)0x23b8, (q15_t)0xaec, (q15_t)0x23c3, (q15_t)0xaf3, (q15_t)0x23cd, (q15_t)0xafa, (q15_t)0x23d7, + (q15_t)0xb01, (q15_t)0x23e2, (q15_t)0xb08, (q15_t)0x23ec, (q15_t)0xb0f, (q15_t)0x23f7, (q15_t)0xb16, (q15_t)0x2401, + (q15_t)0xb1e, (q15_t)0x240b, (q15_t)0xb25, (q15_t)0x2416, (q15_t)0xb2c, (q15_t)0x2420, (q15_t)0xb33, (q15_t)0x242b, + (q15_t)0xb3a, (q15_t)0x2435, (q15_t)0xb41, (q15_t)0x243f, (q15_t)0xb48, (q15_t)0x244a, (q15_t)0xb4f, (q15_t)0x2454, + (q15_t)0xb56, (q15_t)0x245e, (q15_t)0xb5e, (q15_t)0x2469, (q15_t)0xb65, (q15_t)0x2473, (q15_t)0xb6c, (q15_t)0x247d, + (q15_t)0xb73, (q15_t)0x2488, (q15_t)0xb7a, (q15_t)0x2492, (q15_t)0xb81, (q15_t)0x249c, (q15_t)0xb89, (q15_t)0x24a7, + (q15_t)0xb90, (q15_t)0x24b1, (q15_t)0xb97, (q15_t)0x24bb, (q15_t)0xb9e, (q15_t)0x24c5, (q15_t)0xba5, (q15_t)0x24d0, + (q15_t)0xbad, (q15_t)0x24da, (q15_t)0xbb4, (q15_t)0x24e4, (q15_t)0xbbb, (q15_t)0x24ef, (q15_t)0xbc2, (q15_t)0x24f9, + (q15_t)0xbca, (q15_t)0x2503, (q15_t)0xbd1, (q15_t)0x250d, (q15_t)0xbd8, (q15_t)0x2518, (q15_t)0xbe0, (q15_t)0x2522, + (q15_t)0xbe7, (q15_t)0x252c, (q15_t)0xbee, (q15_t)0x2536, (q15_t)0xbf5, (q15_t)0x2541, (q15_t)0xbfd, (q15_t)0x254b, + (q15_t)0xc04, (q15_t)0x2555, (q15_t)0xc0b, (q15_t)0x255f, (q15_t)0xc13, (q15_t)0x2569, (q15_t)0xc1a, (q15_t)0x2574, + (q15_t)0xc21, (q15_t)0x257e, (q15_t)0xc29, (q15_t)0x2588, (q15_t)0xc30, (q15_t)0x2592, (q15_t)0xc38, (q15_t)0x259c, + (q15_t)0xc3f, (q15_t)0x25a6, (q15_t)0xc46, (q15_t)0x25b1, (q15_t)0xc4e, (q15_t)0x25bb, (q15_t)0xc55, (q15_t)0x25c5, + (q15_t)0xc5d, (q15_t)0x25cf, (q15_t)0xc64, (q15_t)0x25d9, (q15_t)0xc6b, (q15_t)0x25e3, (q15_t)0xc73, (q15_t)0x25ed, + (q15_t)0xc7a, (q15_t)0x25f8, (q15_t)0xc82, (q15_t)0x2602, (q15_t)0xc89, (q15_t)0x260c, (q15_t)0xc91, (q15_t)0x2616, + (q15_t)0xc98, (q15_t)0x2620, (q15_t)0xca0, (q15_t)0x262a, (q15_t)0xca7, (q15_t)0x2634, (q15_t)0xcaf, (q15_t)0x263e, + (q15_t)0xcb6, (q15_t)0x2648, (q15_t)0xcbe, (q15_t)0x2652, (q15_t)0xcc5, (q15_t)0x265c, (q15_t)0xccd, (q15_t)0x2666, + (q15_t)0xcd4, (q15_t)0x2671, (q15_t)0xcdc, (q15_t)0x267b, (q15_t)0xce3, (q15_t)0x2685, (q15_t)0xceb, (q15_t)0x268f, + (q15_t)0xcf3, (q15_t)0x2699, (q15_t)0xcfa, (q15_t)0x26a3, (q15_t)0xd02, (q15_t)0x26ad, (q15_t)0xd09, (q15_t)0x26b7, + (q15_t)0xd11, (q15_t)0x26c1, (q15_t)0xd19, (q15_t)0x26cb, (q15_t)0xd20, (q15_t)0x26d5, (q15_t)0xd28, (q15_t)0x26df, + (q15_t)0xd30, (q15_t)0x26e9, (q15_t)0xd37, (q15_t)0x26f3, (q15_t)0xd3f, (q15_t)0x26fd, (q15_t)0xd46, (q15_t)0x2707, + (q15_t)0xd4e, (q15_t)0x2711, (q15_t)0xd56, (q15_t)0x271a, (q15_t)0xd5d, (q15_t)0x2724, (q15_t)0xd65, (q15_t)0x272e, + (q15_t)0xd6d, (q15_t)0x2738, (q15_t)0xd75, (q15_t)0x2742, (q15_t)0xd7c, (q15_t)0x274c, (q15_t)0xd84, (q15_t)0x2756, + (q15_t)0xd8c, (q15_t)0x2760, (q15_t)0xd93, (q15_t)0x276a, (q15_t)0xd9b, (q15_t)0x2774, (q15_t)0xda3, (q15_t)0x277e, + (q15_t)0xdab, (q15_t)0x2788, (q15_t)0xdb2, (q15_t)0x2791, (q15_t)0xdba, (q15_t)0x279b, (q15_t)0xdc2, (q15_t)0x27a5, + (q15_t)0xdca, (q15_t)0x27af, (q15_t)0xdd2, (q15_t)0x27b9, (q15_t)0xdd9, (q15_t)0x27c3, (q15_t)0xde1, (q15_t)0x27cd, + (q15_t)0xde9, (q15_t)0x27d6, (q15_t)0xdf1, (q15_t)0x27e0, (q15_t)0xdf9, (q15_t)0x27ea, (q15_t)0xe01, (q15_t)0x27f4, + (q15_t)0xe08, (q15_t)0x27fe, (q15_t)0xe10, (q15_t)0x2808, (q15_t)0xe18, (q15_t)0x2811, (q15_t)0xe20, (q15_t)0x281b, + (q15_t)0xe28, (q15_t)0x2825, (q15_t)0xe30, (q15_t)0x282f, (q15_t)0xe38, (q15_t)0x2838, (q15_t)0xe40, (q15_t)0x2842, + (q15_t)0xe47, (q15_t)0x284c, (q15_t)0xe4f, (q15_t)0x2856, (q15_t)0xe57, (q15_t)0x2860, (q15_t)0xe5f, (q15_t)0x2869, + (q15_t)0xe67, (q15_t)0x2873, (q15_t)0xe6f, (q15_t)0x287d, (q15_t)0xe77, (q15_t)0x2886, (q15_t)0xe7f, (q15_t)0x2890, + (q15_t)0xe87, (q15_t)0x289a, (q15_t)0xe8f, (q15_t)0x28a4, (q15_t)0xe97, (q15_t)0x28ad, (q15_t)0xe9f, (q15_t)0x28b7, + (q15_t)0xea7, (q15_t)0x28c1, (q15_t)0xeaf, (q15_t)0x28ca, (q15_t)0xeb7, (q15_t)0x28d4, (q15_t)0xebf, (q15_t)0x28de, + (q15_t)0xec7, (q15_t)0x28e7, (q15_t)0xecf, (q15_t)0x28f1, (q15_t)0xed7, (q15_t)0x28fb, (q15_t)0xedf, (q15_t)0x2904, + (q15_t)0xee7, (q15_t)0x290e, (q15_t)0xeef, (q15_t)0x2918, (q15_t)0xef7, (q15_t)0x2921, (q15_t)0xeff, (q15_t)0x292b, + (q15_t)0xf07, (q15_t)0x2935, (q15_t)0xf10, (q15_t)0x293e, (q15_t)0xf18, (q15_t)0x2948, (q15_t)0xf20, (q15_t)0x2951, + (q15_t)0xf28, (q15_t)0x295b, (q15_t)0xf30, (q15_t)0x2965, (q15_t)0xf38, (q15_t)0x296e, (q15_t)0xf40, (q15_t)0x2978, + (q15_t)0xf48, (q15_t)0x2981, (q15_t)0xf51, (q15_t)0x298b, (q15_t)0xf59, (q15_t)0x2994, (q15_t)0xf61, (q15_t)0x299e, + (q15_t)0xf69, (q15_t)0x29a7, (q15_t)0xf71, (q15_t)0x29b1, (q15_t)0xf79, (q15_t)0x29bb, (q15_t)0xf82, (q15_t)0x29c4, + (q15_t)0xf8a, (q15_t)0x29ce, (q15_t)0xf92, (q15_t)0x29d7, (q15_t)0xf9a, (q15_t)0x29e1, (q15_t)0xfa3, (q15_t)0x29ea, + (q15_t)0xfab, (q15_t)0x29f4, (q15_t)0xfb3, (q15_t)0x29fd, (q15_t)0xfbb, (q15_t)0x2a07, (q15_t)0xfc4, (q15_t)0x2a10, + (q15_t)0xfcc, (q15_t)0x2a1a, (q15_t)0xfd4, (q15_t)0x2a23, (q15_t)0xfdc, (q15_t)0x2a2c, (q15_t)0xfe5, (q15_t)0x2a36, + (q15_t)0xfed, (q15_t)0x2a3f, (q15_t)0xff5, (q15_t)0x2a49, (q15_t)0xffe, (q15_t)0x2a52, (q15_t)0x1006, (q15_t)0x2a5c, + (q15_t)0x100e, (q15_t)0x2a65, (q15_t)0x1016, (q15_t)0x2a6e, (q15_t)0x101f, (q15_t)0x2a78, (q15_t)0x1027, (q15_t)0x2a81, + (q15_t)0x1030, (q15_t)0x2a8b, (q15_t)0x1038, (q15_t)0x2a94, (q15_t)0x1040, (q15_t)0x2a9d, (q15_t)0x1049, (q15_t)0x2aa7, + (q15_t)0x1051, (q15_t)0x2ab0, (q15_t)0x1059, (q15_t)0x2ab9, (q15_t)0x1062, (q15_t)0x2ac3, (q15_t)0x106a, (q15_t)0x2acc, + (q15_t)0x1073, (q15_t)0x2ad6, (q15_t)0x107b, (q15_t)0x2adf, (q15_t)0x1083, (q15_t)0x2ae8, (q15_t)0x108c, (q15_t)0x2af2, + (q15_t)0x1094, (q15_t)0x2afb, (q15_t)0x109d, (q15_t)0x2b04, (q15_t)0x10a5, (q15_t)0x2b0d, (q15_t)0x10ae, (q15_t)0x2b17, + (q15_t)0x10b6, (q15_t)0x2b20, (q15_t)0x10bf, (q15_t)0x2b29, (q15_t)0x10c7, (q15_t)0x2b33, (q15_t)0x10d0, (q15_t)0x2b3c, + (q15_t)0x10d8, (q15_t)0x2b45, (q15_t)0x10e0, (q15_t)0x2b4e, (q15_t)0x10e9, (q15_t)0x2b58, (q15_t)0x10f2, (q15_t)0x2b61, + (q15_t)0x10fa, (q15_t)0x2b6a, (q15_t)0x1103, (q15_t)0x2b73, (q15_t)0x110b, (q15_t)0x2b7d, (q15_t)0x1114, (q15_t)0x2b86, + (q15_t)0x111c, (q15_t)0x2b8f, (q15_t)0x1125, (q15_t)0x2b98, (q15_t)0x112d, (q15_t)0x2ba1, (q15_t)0x1136, (q15_t)0x2bab, + (q15_t)0x113e, (q15_t)0x2bb4, (q15_t)0x1147, (q15_t)0x2bbd, (q15_t)0x1150, (q15_t)0x2bc6, (q15_t)0x1158, (q15_t)0x2bcf, + (q15_t)0x1161, (q15_t)0x2bd8, (q15_t)0x1169, (q15_t)0x2be2, (q15_t)0x1172, (q15_t)0x2beb, (q15_t)0x117b, (q15_t)0x2bf4, + (q15_t)0x1183, (q15_t)0x2bfd, (q15_t)0x118c, (q15_t)0x2c06, (q15_t)0x1195, (q15_t)0x2c0f, (q15_t)0x119d, (q15_t)0x2c18, + (q15_t)0x11a6, (q15_t)0x2c21, (q15_t)0x11af, (q15_t)0x2c2b, (q15_t)0x11b7, (q15_t)0x2c34, (q15_t)0x11c0, (q15_t)0x2c3d, + (q15_t)0x11c9, (q15_t)0x2c46, (q15_t)0x11d1, (q15_t)0x2c4f, (q15_t)0x11da, (q15_t)0x2c58, (q15_t)0x11e3, (q15_t)0x2c61, + (q15_t)0x11eb, (q15_t)0x2c6a, (q15_t)0x11f4, (q15_t)0x2c73, (q15_t)0x11fd, (q15_t)0x2c7c, (q15_t)0x1206, (q15_t)0x2c85, + (q15_t)0x120e, (q15_t)0x2c8e, (q15_t)0x1217, (q15_t)0x2c97, (q15_t)0x1220, (q15_t)0x2ca0, (q15_t)0x1229, (q15_t)0x2ca9, + (q15_t)0x1231, (q15_t)0x2cb2, (q15_t)0x123a, (q15_t)0x2cbb, (q15_t)0x1243, (q15_t)0x2cc4, (q15_t)0x124c, (q15_t)0x2ccd, + (q15_t)0x1255, (q15_t)0x2cd6, (q15_t)0x125d, (q15_t)0x2cdf, (q15_t)0x1266, (q15_t)0x2ce8, (q15_t)0x126f, (q15_t)0x2cf1, + (q15_t)0x1278, (q15_t)0x2cfa, (q15_t)0x1281, (q15_t)0x2d03, (q15_t)0x128a, (q15_t)0x2d0c, (q15_t)0x1292, (q15_t)0x2d15, + (q15_t)0x129b, (q15_t)0x2d1e, (q15_t)0x12a4, (q15_t)0x2d27, (q15_t)0x12ad, (q15_t)0x2d2f, (q15_t)0x12b6, (q15_t)0x2d38, + (q15_t)0x12bf, (q15_t)0x2d41, (q15_t)0x12c8, (q15_t)0x2d4a, (q15_t)0x12d1, (q15_t)0x2d53, (q15_t)0x12d9, (q15_t)0x2d5c, + (q15_t)0x12e2, (q15_t)0x2d65, (q15_t)0x12eb, (q15_t)0x2d6e, (q15_t)0x12f4, (q15_t)0x2d76, (q15_t)0x12fd, (q15_t)0x2d7f, + (q15_t)0x1306, (q15_t)0x2d88, (q15_t)0x130f, (q15_t)0x2d91, (q15_t)0x1318, (q15_t)0x2d9a, (q15_t)0x1321, (q15_t)0x2da3, + (q15_t)0x132a, (q15_t)0x2dab, (q15_t)0x1333, (q15_t)0x2db4, (q15_t)0x133c, (q15_t)0x2dbd, (q15_t)0x1345, (q15_t)0x2dc6, + (q15_t)0x134e, (q15_t)0x2dcf, (q15_t)0x1357, (q15_t)0x2dd7, (q15_t)0x1360, (q15_t)0x2de0, (q15_t)0x1369, (q15_t)0x2de9, + (q15_t)0x1372, (q15_t)0x2df2, (q15_t)0x137b, (q15_t)0x2dfa, (q15_t)0x1384, (q15_t)0x2e03, (q15_t)0x138d, (q15_t)0x2e0c, + (q15_t)0x1396, (q15_t)0x2e15, (q15_t)0x139f, (q15_t)0x2e1d, (q15_t)0x13a8, (q15_t)0x2e26, (q15_t)0x13b1, (q15_t)0x2e2f, + (q15_t)0x13ba, (q15_t)0x2e37, (q15_t)0x13c3, (q15_t)0x2e40, (q15_t)0x13cc, (q15_t)0x2e49, (q15_t)0x13d5, (q15_t)0x2e51, + (q15_t)0x13df, (q15_t)0x2e5a, (q15_t)0x13e8, (q15_t)0x2e63, (q15_t)0x13f1, (q15_t)0x2e6b, (q15_t)0x13fa, (q15_t)0x2e74, + (q15_t)0x1403, (q15_t)0x2e7d, (q15_t)0x140c, (q15_t)0x2e85, (q15_t)0x1415, (q15_t)0x2e8e, (q15_t)0x141e, (q15_t)0x2e97, + (q15_t)0x1428, (q15_t)0x2e9f, (q15_t)0x1431, (q15_t)0x2ea8, (q15_t)0x143a, (q15_t)0x2eb0, (q15_t)0x1443, (q15_t)0x2eb9, + (q15_t)0x144c, (q15_t)0x2ec2, (q15_t)0x1455, (q15_t)0x2eca, (q15_t)0x145f, (q15_t)0x2ed3, (q15_t)0x1468, (q15_t)0x2edb, + (q15_t)0x1471, (q15_t)0x2ee4, (q15_t)0x147a, (q15_t)0x2eec, (q15_t)0x1483, (q15_t)0x2ef5, (q15_t)0x148d, (q15_t)0x2efd, + (q15_t)0x1496, (q15_t)0x2f06, (q15_t)0x149f, (q15_t)0x2f0e, (q15_t)0x14a8, (q15_t)0x2f17, (q15_t)0x14b2, (q15_t)0x2f20, + (q15_t)0x14bb, (q15_t)0x2f28, (q15_t)0x14c4, (q15_t)0x2f30, (q15_t)0x14cd, (q15_t)0x2f39, (q15_t)0x14d7, (q15_t)0x2f41, + (q15_t)0x14e0, (q15_t)0x2f4a, (q15_t)0x14e9, (q15_t)0x2f52, (q15_t)0x14f3, (q15_t)0x2f5b, (q15_t)0x14fc, (q15_t)0x2f63, + (q15_t)0x1505, (q15_t)0x2f6c, (q15_t)0x150e, (q15_t)0x2f74, (q15_t)0x1518, (q15_t)0x2f7d, (q15_t)0x1521, (q15_t)0x2f85, + (q15_t)0x152a, (q15_t)0x2f8d, (q15_t)0x1534, (q15_t)0x2f96, (q15_t)0x153d, (q15_t)0x2f9e, (q15_t)0x1547, (q15_t)0x2fa7, + (q15_t)0x1550, (q15_t)0x2faf, (q15_t)0x1559, (q15_t)0x2fb7, (q15_t)0x1563, (q15_t)0x2fc0, (q15_t)0x156c, (q15_t)0x2fc8, + (q15_t)0x1575, (q15_t)0x2fd0, (q15_t)0x157f, (q15_t)0x2fd9, (q15_t)0x1588, (q15_t)0x2fe1, (q15_t)0x1592, (q15_t)0x2fea, + (q15_t)0x159b, (q15_t)0x2ff2, (q15_t)0x15a4, (q15_t)0x2ffa, (q15_t)0x15ae, (q15_t)0x3002, (q15_t)0x15b7, (q15_t)0x300b, + (q15_t)0x15c1, (q15_t)0x3013, (q15_t)0x15ca, (q15_t)0x301b, (q15_t)0x15d4, (q15_t)0x3024, (q15_t)0x15dd, (q15_t)0x302c, + (q15_t)0x15e6, (q15_t)0x3034, (q15_t)0x15f0, (q15_t)0x303c, (q15_t)0x15f9, (q15_t)0x3045, (q15_t)0x1603, (q15_t)0x304d, + (q15_t)0x160c, (q15_t)0x3055, (q15_t)0x1616, (q15_t)0x305d, (q15_t)0x161f, (q15_t)0x3066, (q15_t)0x1629, (q15_t)0x306e, + (q15_t)0x1632, (q15_t)0x3076, (q15_t)0x163c, (q15_t)0x307e, (q15_t)0x1645, (q15_t)0x3087, (q15_t)0x164f, (q15_t)0x308f, + (q15_t)0x1659, (q15_t)0x3097, (q15_t)0x1662, (q15_t)0x309f, (q15_t)0x166c, (q15_t)0x30a7, (q15_t)0x1675, (q15_t)0x30af, + (q15_t)0x167f, (q15_t)0x30b8, (q15_t)0x1688, (q15_t)0x30c0, (q15_t)0x1692, (q15_t)0x30c8, (q15_t)0x169b, (q15_t)0x30d0, + (q15_t)0x16a5, (q15_t)0x30d8, (q15_t)0x16af, (q15_t)0x30e0, (q15_t)0x16b8, (q15_t)0x30e8, (q15_t)0x16c2, (q15_t)0x30f0, + (q15_t)0x16cb, (q15_t)0x30f9, (q15_t)0x16d5, (q15_t)0x3101, (q15_t)0x16df, (q15_t)0x3109, (q15_t)0x16e8, (q15_t)0x3111, + (q15_t)0x16f2, (q15_t)0x3119, (q15_t)0x16fc, (q15_t)0x3121, (q15_t)0x1705, (q15_t)0x3129, (q15_t)0x170f, (q15_t)0x3131, + (q15_t)0x1719, (q15_t)0x3139, (q15_t)0x1722, (q15_t)0x3141, (q15_t)0x172c, (q15_t)0x3149, (q15_t)0x1736, (q15_t)0x3151, + (q15_t)0x173f, (q15_t)0x3159, (q15_t)0x1749, (q15_t)0x3161, (q15_t)0x1753, (q15_t)0x3169, (q15_t)0x175c, (q15_t)0x3171, + (q15_t)0x1766, (q15_t)0x3179, (q15_t)0x1770, (q15_t)0x3181, (q15_t)0x177a, (q15_t)0x3189, (q15_t)0x1783, (q15_t)0x3191, + (q15_t)0x178d, (q15_t)0x3199, (q15_t)0x1797, (q15_t)0x31a1, (q15_t)0x17a0, (q15_t)0x31a9, (q15_t)0x17aa, (q15_t)0x31b1, + (q15_t)0x17b4, (q15_t)0x31b9, (q15_t)0x17be, (q15_t)0x31c0, (q15_t)0x17c8, (q15_t)0x31c8, (q15_t)0x17d1, (q15_t)0x31d0, + (q15_t)0x17db, (q15_t)0x31d8, (q15_t)0x17e5, (q15_t)0x31e0, (q15_t)0x17ef, (q15_t)0x31e8, (q15_t)0x17f8, (q15_t)0x31f0, + (q15_t)0x1802, (q15_t)0x31f8, (q15_t)0x180c, (q15_t)0x31ff, (q15_t)0x1816, (q15_t)0x3207, (q15_t)0x1820, (q15_t)0x320f, + (q15_t)0x182a, (q15_t)0x3217, (q15_t)0x1833, (q15_t)0x321f, (q15_t)0x183d, (q15_t)0x3227, (q15_t)0x1847, (q15_t)0x322e, + (q15_t)0x1851, (q15_t)0x3236, (q15_t)0x185b, (q15_t)0x323e, (q15_t)0x1865, (q15_t)0x3246, (q15_t)0x186f, (q15_t)0x324e, + (q15_t)0x1878, (q15_t)0x3255, (q15_t)0x1882, (q15_t)0x325d, (q15_t)0x188c, (q15_t)0x3265, (q15_t)0x1896, (q15_t)0x326d, + (q15_t)0x18a0, (q15_t)0x3274, (q15_t)0x18aa, (q15_t)0x327c, (q15_t)0x18b4, (q15_t)0x3284, (q15_t)0x18be, (q15_t)0x328b, + (q15_t)0x18c8, (q15_t)0x3293, (q15_t)0x18d2, (q15_t)0x329b, (q15_t)0x18dc, (q15_t)0x32a3, (q15_t)0x18e6, (q15_t)0x32aa, + (q15_t)0x18ef, (q15_t)0x32b2, (q15_t)0x18f9, (q15_t)0x32ba, (q15_t)0x1903, (q15_t)0x32c1, (q15_t)0x190d, (q15_t)0x32c9, + (q15_t)0x1917, (q15_t)0x32d0, (q15_t)0x1921, (q15_t)0x32d8, (q15_t)0x192b, (q15_t)0x32e0, (q15_t)0x1935, (q15_t)0x32e7, + (q15_t)0x193f, (q15_t)0x32ef, (q15_t)0x1949, (q15_t)0x32f7, (q15_t)0x1953, (q15_t)0x32fe, (q15_t)0x195d, (q15_t)0x3306, + (q15_t)0x1967, (q15_t)0x330d, (q15_t)0x1971, (q15_t)0x3315, (q15_t)0x197b, (q15_t)0x331d, (q15_t)0x1985, (q15_t)0x3324, + (q15_t)0x198f, (q15_t)0x332c, (q15_t)0x199a, (q15_t)0x3333, (q15_t)0x19a4, (q15_t)0x333b, (q15_t)0x19ae, (q15_t)0x3342, + (q15_t)0x19b8, (q15_t)0x334a, (q15_t)0x19c2, (q15_t)0x3351, (q15_t)0x19cc, (q15_t)0x3359, (q15_t)0x19d6, (q15_t)0x3360, + (q15_t)0x19e0, (q15_t)0x3368, (q15_t)0x19ea, (q15_t)0x336f, (q15_t)0x19f4, (q15_t)0x3377, (q15_t)0x19fe, (q15_t)0x337e, + (q15_t)0x1a08, (q15_t)0x3386, (q15_t)0x1a13, (q15_t)0x338d, (q15_t)0x1a1d, (q15_t)0x3395, (q15_t)0x1a27, (q15_t)0x339c, + (q15_t)0x1a31, (q15_t)0x33a3, (q15_t)0x1a3b, (q15_t)0x33ab, (q15_t)0x1a45, (q15_t)0x33b2, (q15_t)0x1a4f, (q15_t)0x33ba, + (q15_t)0x1a5a, (q15_t)0x33c1, (q15_t)0x1a64, (q15_t)0x33c8, (q15_t)0x1a6e, (q15_t)0x33d0, (q15_t)0x1a78, (q15_t)0x33d7, + (q15_t)0x1a82, (q15_t)0x33df, (q15_t)0x1a8c, (q15_t)0x33e6, (q15_t)0x1a97, (q15_t)0x33ed, (q15_t)0x1aa1, (q15_t)0x33f5, + (q15_t)0x1aab, (q15_t)0x33fc, (q15_t)0x1ab5, (q15_t)0x3403, (q15_t)0x1abf, (q15_t)0x340b, (q15_t)0x1aca, (q15_t)0x3412, + (q15_t)0x1ad4, (q15_t)0x3419, (q15_t)0x1ade, (q15_t)0x3420, (q15_t)0x1ae8, (q15_t)0x3428, (q15_t)0x1af3, (q15_t)0x342f, + (q15_t)0x1afd, (q15_t)0x3436, (q15_t)0x1b07, (q15_t)0x343e, (q15_t)0x1b11, (q15_t)0x3445, (q15_t)0x1b1c, (q15_t)0x344c, + (q15_t)0x1b26, (q15_t)0x3453, (q15_t)0x1b30, (q15_t)0x345b, (q15_t)0x1b3b, (q15_t)0x3462, (q15_t)0x1b45, (q15_t)0x3469, + (q15_t)0x1b4f, (q15_t)0x3470, (q15_t)0x1b59, (q15_t)0x3477, (q15_t)0x1b64, (q15_t)0x347f, (q15_t)0x1b6e, (q15_t)0x3486, + (q15_t)0x1b78, (q15_t)0x348d, (q15_t)0x1b83, (q15_t)0x3494, (q15_t)0x1b8d, (q15_t)0x349b, (q15_t)0x1b97, (q15_t)0x34a2, + (q15_t)0x1ba2, (q15_t)0x34aa, (q15_t)0x1bac, (q15_t)0x34b1, (q15_t)0x1bb6, (q15_t)0x34b8, (q15_t)0x1bc1, (q15_t)0x34bf, + (q15_t)0x1bcb, (q15_t)0x34c6, (q15_t)0x1bd5, (q15_t)0x34cd, (q15_t)0x1be0, (q15_t)0x34d4, (q15_t)0x1bea, (q15_t)0x34db, + (q15_t)0x1bf5, (q15_t)0x34e2, (q15_t)0x1bff, (q15_t)0x34ea, (q15_t)0x1c09, (q15_t)0x34f1, (q15_t)0x1c14, (q15_t)0x34f8, + (q15_t)0x1c1e, (q15_t)0x34ff, (q15_t)0x1c29, (q15_t)0x3506, (q15_t)0x1c33, (q15_t)0x350d, (q15_t)0x1c3d, (q15_t)0x3514, + (q15_t)0x1c48, (q15_t)0x351b, (q15_t)0x1c52, (q15_t)0x3522, (q15_t)0x1c5d, (q15_t)0x3529, (q15_t)0x1c67, (q15_t)0x3530, + (q15_t)0x1c72, (q15_t)0x3537, (q15_t)0x1c7c, (q15_t)0x353e, (q15_t)0x1c86, (q15_t)0x3545, (q15_t)0x1c91, (q15_t)0x354c, + (q15_t)0x1c9b, (q15_t)0x3553, (q15_t)0x1ca6, (q15_t)0x355a, (q15_t)0x1cb0, (q15_t)0x3561, (q15_t)0x1cbb, (q15_t)0x3567, + (q15_t)0x1cc5, (q15_t)0x356e, (q15_t)0x1cd0, (q15_t)0x3575, (q15_t)0x1cda, (q15_t)0x357c, (q15_t)0x1ce5, (q15_t)0x3583, + (q15_t)0x1cef, (q15_t)0x358a, (q15_t)0x1cfa, (q15_t)0x3591, (q15_t)0x1d04, (q15_t)0x3598, (q15_t)0x1d0f, (q15_t)0x359f, + (q15_t)0x1d19, (q15_t)0x35a5, (q15_t)0x1d24, (q15_t)0x35ac, (q15_t)0x1d2e, (q15_t)0x35b3, (q15_t)0x1d39, (q15_t)0x35ba, + (q15_t)0x1d44, (q15_t)0x35c1, (q15_t)0x1d4e, (q15_t)0x35c8, (q15_t)0x1d59, (q15_t)0x35ce, (q15_t)0x1d63, (q15_t)0x35d5, + (q15_t)0x1d6e, (q15_t)0x35dc, (q15_t)0x1d78, (q15_t)0x35e3, (q15_t)0x1d83, (q15_t)0x35ea, (q15_t)0x1d8e, (q15_t)0x35f0, + (q15_t)0x1d98, (q15_t)0x35f7, (q15_t)0x1da3, (q15_t)0x35fe, (q15_t)0x1dad, (q15_t)0x3605, (q15_t)0x1db8, (q15_t)0x360b, + (q15_t)0x1dc3, (q15_t)0x3612, (q15_t)0x1dcd, (q15_t)0x3619, (q15_t)0x1dd8, (q15_t)0x3620, (q15_t)0x1de2, (q15_t)0x3626, + (q15_t)0x1ded, (q15_t)0x362d, (q15_t)0x1df8, (q15_t)0x3634, (q15_t)0x1e02, (q15_t)0x363a, (q15_t)0x1e0d, (q15_t)0x3641, + (q15_t)0x1e18, (q15_t)0x3648, (q15_t)0x1e22, (q15_t)0x364e, (q15_t)0x1e2d, (q15_t)0x3655, (q15_t)0x1e38, (q15_t)0x365c, + (q15_t)0x1e42, (q15_t)0x3662, (q15_t)0x1e4d, (q15_t)0x3669, (q15_t)0x1e58, (q15_t)0x366f, (q15_t)0x1e62, (q15_t)0x3676, + (q15_t)0x1e6d, (q15_t)0x367d, (q15_t)0x1e78, (q15_t)0x3683, (q15_t)0x1e83, (q15_t)0x368a, (q15_t)0x1e8d, (q15_t)0x3690, + (q15_t)0x1e98, (q15_t)0x3697, (q15_t)0x1ea3, (q15_t)0x369d, (q15_t)0x1ead, (q15_t)0x36a4, (q15_t)0x1eb8, (q15_t)0x36ab, + (q15_t)0x1ec3, (q15_t)0x36b1, (q15_t)0x1ece, (q15_t)0x36b8, (q15_t)0x1ed8, (q15_t)0x36be, (q15_t)0x1ee3, (q15_t)0x36c5, + (q15_t)0x1eee, (q15_t)0x36cb, (q15_t)0x1ef9, (q15_t)0x36d2, (q15_t)0x1f03, (q15_t)0x36d8, (q15_t)0x1f0e, (q15_t)0x36df, + (q15_t)0x1f19, (q15_t)0x36e5, (q15_t)0x1f24, (q15_t)0x36eb, (q15_t)0x1f2f, (q15_t)0x36f2, (q15_t)0x1f39, (q15_t)0x36f8, + (q15_t)0x1f44, (q15_t)0x36ff, (q15_t)0x1f4f, (q15_t)0x3705, (q15_t)0x1f5a, (q15_t)0x370c, (q15_t)0x1f65, (q15_t)0x3712, + (q15_t)0x1f6f, (q15_t)0x3718, (q15_t)0x1f7a, (q15_t)0x371f, (q15_t)0x1f85, (q15_t)0x3725, (q15_t)0x1f90, (q15_t)0x372c, + (q15_t)0x1f9b, (q15_t)0x3732, (q15_t)0x1fa5, (q15_t)0x3738, (q15_t)0x1fb0, (q15_t)0x373f, (q15_t)0x1fbb, (q15_t)0x3745, + (q15_t)0x1fc6, (q15_t)0x374b, (q15_t)0x1fd1, (q15_t)0x3752, (q15_t)0x1fdc, (q15_t)0x3758, (q15_t)0x1fe7, (q15_t)0x375e, + (q15_t)0x1ff1, (q15_t)0x3765, (q15_t)0x1ffc, (q15_t)0x376b, (q15_t)0x2007, (q15_t)0x3771, (q15_t)0x2012, (q15_t)0x3777, + (q15_t)0x201d, (q15_t)0x377e, (q15_t)0x2028, (q15_t)0x3784, (q15_t)0x2033, (q15_t)0x378a, (q15_t)0x203e, (q15_t)0x3790, + (q15_t)0x2049, (q15_t)0x3797, (q15_t)0x2054, (q15_t)0x379d, (q15_t)0x205e, (q15_t)0x37a3, (q15_t)0x2069, (q15_t)0x37a9, + (q15_t)0x2074, (q15_t)0x37b0, (q15_t)0x207f, (q15_t)0x37b6, (q15_t)0x208a, (q15_t)0x37bc, (q15_t)0x2095, (q15_t)0x37c2, + (q15_t)0x20a0, (q15_t)0x37c8, (q15_t)0x20ab, (q15_t)0x37ce, (q15_t)0x20b6, (q15_t)0x37d5, (q15_t)0x20c1, (q15_t)0x37db, + (q15_t)0x20cc, (q15_t)0x37e1, (q15_t)0x20d7, (q15_t)0x37e7, (q15_t)0x20e2, (q15_t)0x37ed, (q15_t)0x20ed, (q15_t)0x37f3, + (q15_t)0x20f8, (q15_t)0x37f9, (q15_t)0x2103, (q15_t)0x37ff, (q15_t)0x210e, (q15_t)0x3805, (q15_t)0x2119, (q15_t)0x380b, + (q15_t)0x2124, (q15_t)0x3812, (q15_t)0x212f, (q15_t)0x3818, (q15_t)0x213a, (q15_t)0x381e, (q15_t)0x2145, (q15_t)0x3824, + (q15_t)0x2150, (q15_t)0x382a, (q15_t)0x215b, (q15_t)0x3830, (q15_t)0x2166, (q15_t)0x3836, (q15_t)0x2171, (q15_t)0x383c, + (q15_t)0x217c, (q15_t)0x3842, (q15_t)0x2187, (q15_t)0x3848, (q15_t)0x2192, (q15_t)0x384e, (q15_t)0x219d, (q15_t)0x3854, + (q15_t)0x21a8, (q15_t)0x385a, (q15_t)0x21b3, (q15_t)0x3860, (q15_t)0x21be, (q15_t)0x3866, (q15_t)0x21ca, (q15_t)0x386b, + (q15_t)0x21d5, (q15_t)0x3871, (q15_t)0x21e0, (q15_t)0x3877, (q15_t)0x21eb, (q15_t)0x387d, (q15_t)0x21f6, (q15_t)0x3883, + (q15_t)0x2201, (q15_t)0x3889, (q15_t)0x220c, (q15_t)0x388f, (q15_t)0x2217, (q15_t)0x3895, (q15_t)0x2222, (q15_t)0x389b, + (q15_t)0x222d, (q15_t)0x38a1, (q15_t)0x2239, (q15_t)0x38a6, (q15_t)0x2244, (q15_t)0x38ac, (q15_t)0x224f, (q15_t)0x38b2, + (q15_t)0x225a, (q15_t)0x38b8, (q15_t)0x2265, (q15_t)0x38be, (q15_t)0x2270, (q15_t)0x38c3, (q15_t)0x227b, (q15_t)0x38c9, + (q15_t)0x2287, (q15_t)0x38cf, (q15_t)0x2292, (q15_t)0x38d5, (q15_t)0x229d, (q15_t)0x38db, (q15_t)0x22a8, (q15_t)0x38e0, + (q15_t)0x22b3, (q15_t)0x38e6, (q15_t)0x22be, (q15_t)0x38ec, (q15_t)0x22ca, (q15_t)0x38f2, (q15_t)0x22d5, (q15_t)0x38f7, + (q15_t)0x22e0, (q15_t)0x38fd, (q15_t)0x22eb, (q15_t)0x3903, (q15_t)0x22f6, (q15_t)0x3909, (q15_t)0x2301, (q15_t)0x390e, + (q15_t)0x230d, (q15_t)0x3914, (q15_t)0x2318, (q15_t)0x391a, (q15_t)0x2323, (q15_t)0x391f, (q15_t)0x232e, (q15_t)0x3925, + (q15_t)0x233a, (q15_t)0x392b, (q15_t)0x2345, (q15_t)0x3930, (q15_t)0x2350, (q15_t)0x3936, (q15_t)0x235b, (q15_t)0x393b, + (q15_t)0x2367, (q15_t)0x3941, (q15_t)0x2372, (q15_t)0x3947, (q15_t)0x237d, (q15_t)0x394c, (q15_t)0x2388, (q15_t)0x3952, + (q15_t)0x2394, (q15_t)0x3958, (q15_t)0x239f, (q15_t)0x395d, (q15_t)0x23aa, (q15_t)0x3963, (q15_t)0x23b5, (q15_t)0x3968, + (q15_t)0x23c1, (q15_t)0x396e, (q15_t)0x23cc, (q15_t)0x3973, (q15_t)0x23d7, (q15_t)0x3979, (q15_t)0x23e2, (q15_t)0x397e, + (q15_t)0x23ee, (q15_t)0x3984, (q15_t)0x23f9, (q15_t)0x3989, (q15_t)0x2404, (q15_t)0x398f, (q15_t)0x2410, (q15_t)0x3994, + (q15_t)0x241b, (q15_t)0x399a, (q15_t)0x2426, (q15_t)0x399f, (q15_t)0x2432, (q15_t)0x39a5, (q15_t)0x243d, (q15_t)0x39aa, + (q15_t)0x2448, (q15_t)0x39b0, (q15_t)0x2454, (q15_t)0x39b5, (q15_t)0x245f, (q15_t)0x39bb, (q15_t)0x246a, (q15_t)0x39c0, + (q15_t)0x2476, (q15_t)0x39c5, (q15_t)0x2481, (q15_t)0x39cb, (q15_t)0x248c, (q15_t)0x39d0, (q15_t)0x2498, (q15_t)0x39d6, + (q15_t)0x24a3, (q15_t)0x39db, (q15_t)0x24ae, (q15_t)0x39e0, (q15_t)0x24ba, (q15_t)0x39e6, (q15_t)0x24c5, (q15_t)0x39eb, + (q15_t)0x24d0, (q15_t)0x39f0, (q15_t)0x24dc, (q15_t)0x39f6, (q15_t)0x24e7, (q15_t)0x39fb, (q15_t)0x24f3, (q15_t)0x3a00, + (q15_t)0x24fe, (q15_t)0x3a06, (q15_t)0x2509, (q15_t)0x3a0b, (q15_t)0x2515, (q15_t)0x3a10, (q15_t)0x2520, (q15_t)0x3a16, + (q15_t)0x252c, (q15_t)0x3a1b, (q15_t)0x2537, (q15_t)0x3a20, (q15_t)0x2542, (q15_t)0x3a25, (q15_t)0x254e, (q15_t)0x3a2b, + (q15_t)0x2559, (q15_t)0x3a30, (q15_t)0x2565, (q15_t)0x3a35, (q15_t)0x2570, (q15_t)0x3a3a, (q15_t)0x257c, (q15_t)0x3a3f, + (q15_t)0x2587, (q15_t)0x3a45, (q15_t)0x2592, (q15_t)0x3a4a, (q15_t)0x259e, (q15_t)0x3a4f, (q15_t)0x25a9, (q15_t)0x3a54, + (q15_t)0x25b5, (q15_t)0x3a59, (q15_t)0x25c0, (q15_t)0x3a5f, (q15_t)0x25cc, (q15_t)0x3a64, (q15_t)0x25d7, (q15_t)0x3a69, + (q15_t)0x25e3, (q15_t)0x3a6e, (q15_t)0x25ee, (q15_t)0x3a73, (q15_t)0x25fa, (q15_t)0x3a78, (q15_t)0x2605, (q15_t)0x3a7d, + (q15_t)0x2611, (q15_t)0x3a82, (q15_t)0x261c, (q15_t)0x3a88, (q15_t)0x2628, (q15_t)0x3a8d, (q15_t)0x2633, (q15_t)0x3a92, + (q15_t)0x263f, (q15_t)0x3a97, (q15_t)0x264a, (q15_t)0x3a9c, (q15_t)0x2656, (q15_t)0x3aa1, (q15_t)0x2661, (q15_t)0x3aa6, + (q15_t)0x266d, (q15_t)0x3aab, (q15_t)0x2678, (q15_t)0x3ab0, (q15_t)0x2684, (q15_t)0x3ab5, (q15_t)0x268f, (q15_t)0x3aba, + (q15_t)0x269b, (q15_t)0x3abf, (q15_t)0x26a6, (q15_t)0x3ac4, (q15_t)0x26b2, (q15_t)0x3ac9, (q15_t)0x26bd, (q15_t)0x3ace, + (q15_t)0x26c9, (q15_t)0x3ad3, (q15_t)0x26d4, (q15_t)0x3ad8, (q15_t)0x26e0, (q15_t)0x3add, (q15_t)0x26ec, (q15_t)0x3ae2, + (q15_t)0x26f7, (q15_t)0x3ae6, (q15_t)0x2703, (q15_t)0x3aeb, (q15_t)0x270e, (q15_t)0x3af0, (q15_t)0x271a, (q15_t)0x3af5, + (q15_t)0x2725, (q15_t)0x3afa, (q15_t)0x2731, (q15_t)0x3aff, (q15_t)0x273d, (q15_t)0x3b04, (q15_t)0x2748, (q15_t)0x3b09, + (q15_t)0x2754, (q15_t)0x3b0e, (q15_t)0x275f, (q15_t)0x3b12, (q15_t)0x276b, (q15_t)0x3b17, (q15_t)0x2777, (q15_t)0x3b1c, + (q15_t)0x2782, (q15_t)0x3b21, (q15_t)0x278e, (q15_t)0x3b26, (q15_t)0x2799, (q15_t)0x3b2a, (q15_t)0x27a5, (q15_t)0x3b2f, + (q15_t)0x27b1, (q15_t)0x3b34, (q15_t)0x27bc, (q15_t)0x3b39, (q15_t)0x27c8, (q15_t)0x3b3e, (q15_t)0x27d3, (q15_t)0x3b42, + (q15_t)0x27df, (q15_t)0x3b47, (q15_t)0x27eb, (q15_t)0x3b4c, (q15_t)0x27f6, (q15_t)0x3b50, (q15_t)0x2802, (q15_t)0x3b55, + (q15_t)0x280e, (q15_t)0x3b5a, (q15_t)0x2819, (q15_t)0x3b5f, (q15_t)0x2825, (q15_t)0x3b63, (q15_t)0x2831, (q15_t)0x3b68, + (q15_t)0x283c, (q15_t)0x3b6d, (q15_t)0x2848, (q15_t)0x3b71, (q15_t)0x2854, (q15_t)0x3b76, (q15_t)0x285f, (q15_t)0x3b7b, + (q15_t)0x286b, (q15_t)0x3b7f, (q15_t)0x2877, (q15_t)0x3b84, (q15_t)0x2882, (q15_t)0x3b88, (q15_t)0x288e, (q15_t)0x3b8d, + (q15_t)0x289a, (q15_t)0x3b92, (q15_t)0x28a5, (q15_t)0x3b96, (q15_t)0x28b1, (q15_t)0x3b9b, (q15_t)0x28bd, (q15_t)0x3b9f, + (q15_t)0x28c9, (q15_t)0x3ba4, (q15_t)0x28d4, (q15_t)0x3ba9, (q15_t)0x28e0, (q15_t)0x3bad, (q15_t)0x28ec, (q15_t)0x3bb2, + (q15_t)0x28f7, (q15_t)0x3bb6, (q15_t)0x2903, (q15_t)0x3bbb, (q15_t)0x290f, (q15_t)0x3bbf, (q15_t)0x291b, (q15_t)0x3bc4, + (q15_t)0x2926, (q15_t)0x3bc8, (q15_t)0x2932, (q15_t)0x3bcd, (q15_t)0x293e, (q15_t)0x3bd1, (q15_t)0x294a, (q15_t)0x3bd6, + (q15_t)0x2955, (q15_t)0x3bda, (q15_t)0x2961, (q15_t)0x3bde, (q15_t)0x296d, (q15_t)0x3be3, (q15_t)0x2979, (q15_t)0x3be7, + (q15_t)0x2984, (q15_t)0x3bec, (q15_t)0x2990, (q15_t)0x3bf0, (q15_t)0x299c, (q15_t)0x3bf5, (q15_t)0x29a8, (q15_t)0x3bf9, + (q15_t)0x29b4, (q15_t)0x3bfd, (q15_t)0x29bf, (q15_t)0x3c02, (q15_t)0x29cb, (q15_t)0x3c06, (q15_t)0x29d7, (q15_t)0x3c0a, + (q15_t)0x29e3, (q15_t)0x3c0f, (q15_t)0x29ee, (q15_t)0x3c13, (q15_t)0x29fa, (q15_t)0x3c17, (q15_t)0x2a06, (q15_t)0x3c1c, + (q15_t)0x2a12, (q15_t)0x3c20, (q15_t)0x2a1e, (q15_t)0x3c24, (q15_t)0x2a29, (q15_t)0x3c29, (q15_t)0x2a35, (q15_t)0x3c2d, + (q15_t)0x2a41, (q15_t)0x3c31, (q15_t)0x2a4d, (q15_t)0x3c36, (q15_t)0x2a59, (q15_t)0x3c3a, (q15_t)0x2a65, (q15_t)0x3c3e, + (q15_t)0x2a70, (q15_t)0x3c42, (q15_t)0x2a7c, (q15_t)0x3c46, (q15_t)0x2a88, (q15_t)0x3c4b, (q15_t)0x2a94, (q15_t)0x3c4f, + (q15_t)0x2aa0, (q15_t)0x3c53, (q15_t)0x2aac, (q15_t)0x3c57, (q15_t)0x2ab7, (q15_t)0x3c5b, (q15_t)0x2ac3, (q15_t)0x3c60, + (q15_t)0x2acf, (q15_t)0x3c64, (q15_t)0x2adb, (q15_t)0x3c68, (q15_t)0x2ae7, (q15_t)0x3c6c, (q15_t)0x2af3, (q15_t)0x3c70, + (q15_t)0x2aff, (q15_t)0x3c74, (q15_t)0x2b0a, (q15_t)0x3c79, (q15_t)0x2b16, (q15_t)0x3c7d, (q15_t)0x2b22, (q15_t)0x3c81, + (q15_t)0x2b2e, (q15_t)0x3c85, (q15_t)0x2b3a, (q15_t)0x3c89, (q15_t)0x2b46, (q15_t)0x3c8d, (q15_t)0x2b52, (q15_t)0x3c91, + (q15_t)0x2b5e, (q15_t)0x3c95, (q15_t)0x2b6a, (q15_t)0x3c99, (q15_t)0x2b75, (q15_t)0x3c9d, (q15_t)0x2b81, (q15_t)0x3ca1, + (q15_t)0x2b8d, (q15_t)0x3ca5, (q15_t)0x2b99, (q15_t)0x3ca9, (q15_t)0x2ba5, (q15_t)0x3cad, (q15_t)0x2bb1, (q15_t)0x3cb1, + (q15_t)0x2bbd, (q15_t)0x3cb5, (q15_t)0x2bc9, (q15_t)0x3cb9, (q15_t)0x2bd5, (q15_t)0x3cbd, (q15_t)0x2be1, (q15_t)0x3cc1, + (q15_t)0x2bed, (q15_t)0x3cc5, (q15_t)0x2bf9, (q15_t)0x3cc9, (q15_t)0x2c05, (q15_t)0x3ccd, (q15_t)0x2c10, (q15_t)0x3cd1, + (q15_t)0x2c1c, (q15_t)0x3cd5, (q15_t)0x2c28, (q15_t)0x3cd9, (q15_t)0x2c34, (q15_t)0x3cdd, (q15_t)0x2c40, (q15_t)0x3ce0, + (q15_t)0x2c4c, (q15_t)0x3ce4, (q15_t)0x2c58, (q15_t)0x3ce8, (q15_t)0x2c64, (q15_t)0x3cec, (q15_t)0x2c70, (q15_t)0x3cf0, + (q15_t)0x2c7c, (q15_t)0x3cf4, (q15_t)0x2c88, (q15_t)0x3cf8, (q15_t)0x2c94, (q15_t)0x3cfb, (q15_t)0x2ca0, (q15_t)0x3cff, + (q15_t)0x2cac, (q15_t)0x3d03, (q15_t)0x2cb8, (q15_t)0x3d07, (q15_t)0x2cc4, (q15_t)0x3d0b, (q15_t)0x2cd0, (q15_t)0x3d0e, + (q15_t)0x2cdc, (q15_t)0x3d12, (q15_t)0x2ce8, (q15_t)0x3d16, (q15_t)0x2cf4, (q15_t)0x3d1a, (q15_t)0x2d00, (q15_t)0x3d1d, + (q15_t)0x2d0c, (q15_t)0x3d21, (q15_t)0x2d18, (q15_t)0x3d25, (q15_t)0x2d24, (q15_t)0x3d28, (q15_t)0x2d30, (q15_t)0x3d2c, + (q15_t)0x2d3c, (q15_t)0x3d30, (q15_t)0x2d48, (q15_t)0x3d34, (q15_t)0x2d54, (q15_t)0x3d37, (q15_t)0x2d60, (q15_t)0x3d3b, + (q15_t)0x2d6c, (q15_t)0x3d3f, (q15_t)0x2d78, (q15_t)0x3d42, (q15_t)0x2d84, (q15_t)0x3d46, (q15_t)0x2d90, (q15_t)0x3d49, + (q15_t)0x2d9c, (q15_t)0x3d4d, (q15_t)0x2da8, (q15_t)0x3d51, (q15_t)0x2db4, (q15_t)0x3d54, (q15_t)0x2dc0, (q15_t)0x3d58, + (q15_t)0x2dcc, (q15_t)0x3d5b, (q15_t)0x2dd8, (q15_t)0x3d5f, (q15_t)0x2de4, (q15_t)0x3d63, (q15_t)0x2df0, (q15_t)0x3d66, + (q15_t)0x2dfc, (q15_t)0x3d6a, (q15_t)0x2e09, (q15_t)0x3d6d, (q15_t)0x2e15, (q15_t)0x3d71, (q15_t)0x2e21, (q15_t)0x3d74, + (q15_t)0x2e2d, (q15_t)0x3d78, (q15_t)0x2e39, (q15_t)0x3d7b, (q15_t)0x2e45, (q15_t)0x3d7f, (q15_t)0x2e51, (q15_t)0x3d82, + (q15_t)0x2e5d, (q15_t)0x3d86, (q15_t)0x2e69, (q15_t)0x3d89, (q15_t)0x2e75, (q15_t)0x3d8d, (q15_t)0x2e81, (q15_t)0x3d90, + (q15_t)0x2e8d, (q15_t)0x3d93, (q15_t)0x2e99, (q15_t)0x3d97, (q15_t)0x2ea6, (q15_t)0x3d9a, (q15_t)0x2eb2, (q15_t)0x3d9e, + (q15_t)0x2ebe, (q15_t)0x3da1, (q15_t)0x2eca, (q15_t)0x3da4, (q15_t)0x2ed6, (q15_t)0x3da8, (q15_t)0x2ee2, (q15_t)0x3dab, + (q15_t)0x2eee, (q15_t)0x3daf, (q15_t)0x2efa, (q15_t)0x3db2, (q15_t)0x2f06, (q15_t)0x3db5, (q15_t)0x2f13, (q15_t)0x3db9, + (q15_t)0x2f1f, (q15_t)0x3dbc, (q15_t)0x2f2b, (q15_t)0x3dbf, (q15_t)0x2f37, (q15_t)0x3dc2, (q15_t)0x2f43, (q15_t)0x3dc6, + (q15_t)0x2f4f, (q15_t)0x3dc9, (q15_t)0x2f5b, (q15_t)0x3dcc, (q15_t)0x2f67, (q15_t)0x3dd0, (q15_t)0x2f74, (q15_t)0x3dd3, + (q15_t)0x2f80, (q15_t)0x3dd6, (q15_t)0x2f8c, (q15_t)0x3dd9, (q15_t)0x2f98, (q15_t)0x3ddd, (q15_t)0x2fa4, (q15_t)0x3de0, + (q15_t)0x2fb0, (q15_t)0x3de3, (q15_t)0x2fbc, (q15_t)0x3de6, (q15_t)0x2fc9, (q15_t)0x3de9, (q15_t)0x2fd5, (q15_t)0x3ded, + (q15_t)0x2fe1, (q15_t)0x3df0, (q15_t)0x2fed, (q15_t)0x3df3, (q15_t)0x2ff9, (q15_t)0x3df6, (q15_t)0x3005, (q15_t)0x3df9, + (q15_t)0x3012, (q15_t)0x3dfc, (q15_t)0x301e, (q15_t)0x3dff, (q15_t)0x302a, (q15_t)0x3e03, (q15_t)0x3036, (q15_t)0x3e06, + (q15_t)0x3042, (q15_t)0x3e09, (q15_t)0x304e, (q15_t)0x3e0c, (q15_t)0x305b, (q15_t)0x3e0f, (q15_t)0x3067, (q15_t)0x3e12, + (q15_t)0x3073, (q15_t)0x3e15, (q15_t)0x307f, (q15_t)0x3e18, (q15_t)0x308b, (q15_t)0x3e1b, (q15_t)0x3098, (q15_t)0x3e1e, + (q15_t)0x30a4, (q15_t)0x3e21, (q15_t)0x30b0, (q15_t)0x3e24, (q15_t)0x30bc, (q15_t)0x3e27, (q15_t)0x30c8, (q15_t)0x3e2a, + (q15_t)0x30d5, (q15_t)0x3e2d, (q15_t)0x30e1, (q15_t)0x3e30, (q15_t)0x30ed, (q15_t)0x3e33, (q15_t)0x30f9, (q15_t)0x3e36, + (q15_t)0x3105, (q15_t)0x3e39, (q15_t)0x3112, (q15_t)0x3e3c, (q15_t)0x311e, (q15_t)0x3e3f, (q15_t)0x312a, (q15_t)0x3e42, + (q15_t)0x3136, (q15_t)0x3e45, (q15_t)0x3143, (q15_t)0x3e48, (q15_t)0x314f, (q15_t)0x3e4a, (q15_t)0x315b, (q15_t)0x3e4d, + (q15_t)0x3167, (q15_t)0x3e50, (q15_t)0x3174, (q15_t)0x3e53, (q15_t)0x3180, (q15_t)0x3e56, (q15_t)0x318c, (q15_t)0x3e59, + (q15_t)0x3198, (q15_t)0x3e5c, (q15_t)0x31a4, (q15_t)0x3e5e, (q15_t)0x31b1, (q15_t)0x3e61, (q15_t)0x31bd, (q15_t)0x3e64, + (q15_t)0x31c9, (q15_t)0x3e67, (q15_t)0x31d5, (q15_t)0x3e6a, (q15_t)0x31e2, (q15_t)0x3e6c, (q15_t)0x31ee, (q15_t)0x3e6f, + (q15_t)0x31fa, (q15_t)0x3e72, (q15_t)0x3207, (q15_t)0x3e75, (q15_t)0x3213, (q15_t)0x3e77, (q15_t)0x321f, (q15_t)0x3e7a, + (q15_t)0x322b, (q15_t)0x3e7d, (q15_t)0x3238, (q15_t)0x3e80, (q15_t)0x3244, (q15_t)0x3e82, (q15_t)0x3250, (q15_t)0x3e85, + (q15_t)0x325c, (q15_t)0x3e88, (q15_t)0x3269, (q15_t)0x3e8a, (q15_t)0x3275, (q15_t)0x3e8d, (q15_t)0x3281, (q15_t)0x3e90, + (q15_t)0x328e, (q15_t)0x3e92, (q15_t)0x329a, (q15_t)0x3e95, (q15_t)0x32a6, (q15_t)0x3e98, (q15_t)0x32b2, (q15_t)0x3e9a, + (q15_t)0x32bf, (q15_t)0x3e9d, (q15_t)0x32cb, (q15_t)0x3e9f, (q15_t)0x32d7, (q15_t)0x3ea2, (q15_t)0x32e4, (q15_t)0x3ea5, + (q15_t)0x32f0, (q15_t)0x3ea7, (q15_t)0x32fc, (q15_t)0x3eaa, (q15_t)0x3308, (q15_t)0x3eac, (q15_t)0x3315, (q15_t)0x3eaf, + (q15_t)0x3321, (q15_t)0x3eb1, (q15_t)0x332d, (q15_t)0x3eb4, (q15_t)0x333a, (q15_t)0x3eb6, (q15_t)0x3346, (q15_t)0x3eb9, + (q15_t)0x3352, (q15_t)0x3ebb, (q15_t)0x335f, (q15_t)0x3ebe, (q15_t)0x336b, (q15_t)0x3ec0, (q15_t)0x3377, (q15_t)0x3ec3, + (q15_t)0x3384, (q15_t)0x3ec5, (q15_t)0x3390, (q15_t)0x3ec8, (q15_t)0x339c, (q15_t)0x3eca, (q15_t)0x33a9, (q15_t)0x3ecc, + (q15_t)0x33b5, (q15_t)0x3ecf, (q15_t)0x33c1, (q15_t)0x3ed1, (q15_t)0x33ce, (q15_t)0x3ed4, (q15_t)0x33da, (q15_t)0x3ed6, + (q15_t)0x33e6, (q15_t)0x3ed8, (q15_t)0x33f3, (q15_t)0x3edb, (q15_t)0x33ff, (q15_t)0x3edd, (q15_t)0x340b, (q15_t)0x3ee0, + (q15_t)0x3418, (q15_t)0x3ee2, (q15_t)0x3424, (q15_t)0x3ee4, (q15_t)0x3430, (q15_t)0x3ee7, (q15_t)0x343d, (q15_t)0x3ee9, + (q15_t)0x3449, (q15_t)0x3eeb, (q15_t)0x3455, (q15_t)0x3eed, (q15_t)0x3462, (q15_t)0x3ef0, (q15_t)0x346e, (q15_t)0x3ef2, + (q15_t)0x347b, (q15_t)0x3ef4, (q15_t)0x3487, (q15_t)0x3ef7, (q15_t)0x3493, (q15_t)0x3ef9, (q15_t)0x34a0, (q15_t)0x3efb, + (q15_t)0x34ac, (q15_t)0x3efd, (q15_t)0x34b8, (q15_t)0x3f00, (q15_t)0x34c5, (q15_t)0x3f02, (q15_t)0x34d1, (q15_t)0x3f04, + (q15_t)0x34dd, (q15_t)0x3f06, (q15_t)0x34ea, (q15_t)0x3f08, (q15_t)0x34f6, (q15_t)0x3f0a, (q15_t)0x3503, (q15_t)0x3f0d, + (q15_t)0x350f, (q15_t)0x3f0f, (q15_t)0x351b, (q15_t)0x3f11, (q15_t)0x3528, (q15_t)0x3f13, (q15_t)0x3534, (q15_t)0x3f15, + (q15_t)0x3540, (q15_t)0x3f17, (q15_t)0x354d, (q15_t)0x3f19, (q15_t)0x3559, (q15_t)0x3f1c, (q15_t)0x3566, (q15_t)0x3f1e, + (q15_t)0x3572, (q15_t)0x3f20, (q15_t)0x357e, (q15_t)0x3f22, (q15_t)0x358b, (q15_t)0x3f24, (q15_t)0x3597, (q15_t)0x3f26, + (q15_t)0x35a4, (q15_t)0x3f28, (q15_t)0x35b0, (q15_t)0x3f2a, (q15_t)0x35bc, (q15_t)0x3f2c, (q15_t)0x35c9, (q15_t)0x3f2e, + (q15_t)0x35d5, (q15_t)0x3f30, (q15_t)0x35e2, (q15_t)0x3f32, (q15_t)0x35ee, (q15_t)0x3f34, (q15_t)0x35fa, (q15_t)0x3f36, + (q15_t)0x3607, (q15_t)0x3f38, (q15_t)0x3613, (q15_t)0x3f3a, (q15_t)0x3620, (q15_t)0x3f3c, (q15_t)0x362c, (q15_t)0x3f3e, + (q15_t)0x3639, (q15_t)0x3f40, (q15_t)0x3645, (q15_t)0x3f42, (q15_t)0x3651, (q15_t)0x3f43, (q15_t)0x365e, (q15_t)0x3f45, + (q15_t)0x366a, (q15_t)0x3f47, (q15_t)0x3677, (q15_t)0x3f49, (q15_t)0x3683, (q15_t)0x3f4b, (q15_t)0x3690, (q15_t)0x3f4d, + (q15_t)0x369c, (q15_t)0x3f4f, (q15_t)0x36a8, (q15_t)0x3f51, (q15_t)0x36b5, (q15_t)0x3f52, (q15_t)0x36c1, (q15_t)0x3f54, + (q15_t)0x36ce, (q15_t)0x3f56, (q15_t)0x36da, (q15_t)0x3f58, (q15_t)0x36e7, (q15_t)0x3f5a, (q15_t)0x36f3, (q15_t)0x3f5b, + (q15_t)0x36ff, (q15_t)0x3f5d, (q15_t)0x370c, (q15_t)0x3f5f, (q15_t)0x3718, (q15_t)0x3f61, (q15_t)0x3725, (q15_t)0x3f62, + (q15_t)0x3731, (q15_t)0x3f64, (q15_t)0x373e, (q15_t)0x3f66, (q15_t)0x374a, (q15_t)0x3f68, (q15_t)0x3757, (q15_t)0x3f69, + (q15_t)0x3763, (q15_t)0x3f6b, (q15_t)0x376f, (q15_t)0x3f6d, (q15_t)0x377c, (q15_t)0x3f6e, (q15_t)0x3788, (q15_t)0x3f70, + (q15_t)0x3795, (q15_t)0x3f72, (q15_t)0x37a1, (q15_t)0x3f73, (q15_t)0x37ae, (q15_t)0x3f75, (q15_t)0x37ba, (q15_t)0x3f77, + (q15_t)0x37c7, (q15_t)0x3f78, (q15_t)0x37d3, (q15_t)0x3f7a, (q15_t)0x37e0, (q15_t)0x3f7b, (q15_t)0x37ec, (q15_t)0x3f7d, + (q15_t)0x37f9, (q15_t)0x3f7f, (q15_t)0x3805, (q15_t)0x3f80, (q15_t)0x3811, (q15_t)0x3f82, (q15_t)0x381e, (q15_t)0x3f83, + (q15_t)0x382a, (q15_t)0x3f85, (q15_t)0x3837, (q15_t)0x3f86, (q15_t)0x3843, (q15_t)0x3f88, (q15_t)0x3850, (q15_t)0x3f89, + (q15_t)0x385c, (q15_t)0x3f8b, (q15_t)0x3869, (q15_t)0x3f8c, (q15_t)0x3875, (q15_t)0x3f8e, (q15_t)0x3882, (q15_t)0x3f8f, + (q15_t)0x388e, (q15_t)0x3f91, (q15_t)0x389b, (q15_t)0x3f92, (q15_t)0x38a7, (q15_t)0x3f94, (q15_t)0x38b4, (q15_t)0x3f95, + (q15_t)0x38c0, (q15_t)0x3f97, (q15_t)0x38cd, (q15_t)0x3f98, (q15_t)0x38d9, (q15_t)0x3f99, (q15_t)0x38e6, (q15_t)0x3f9b, + (q15_t)0x38f2, (q15_t)0x3f9c, (q15_t)0x38ff, (q15_t)0x3f9e, (q15_t)0x390b, (q15_t)0x3f9f, (q15_t)0x3918, (q15_t)0x3fa0, + (q15_t)0x3924, (q15_t)0x3fa2, (q15_t)0x3931, (q15_t)0x3fa3, (q15_t)0x393d, (q15_t)0x3fa4, (q15_t)0x394a, (q15_t)0x3fa6, + (q15_t)0x3956, (q15_t)0x3fa7, (q15_t)0x3963, (q15_t)0x3fa8, (q15_t)0x396f, (q15_t)0x3faa, (q15_t)0x397c, (q15_t)0x3fab, + (q15_t)0x3988, (q15_t)0x3fac, (q15_t)0x3995, (q15_t)0x3fad, (q15_t)0x39a1, (q15_t)0x3faf, (q15_t)0x39ae, (q15_t)0x3fb0, + (q15_t)0x39ba, (q15_t)0x3fb1, (q15_t)0x39c7, (q15_t)0x3fb2, (q15_t)0x39d3, (q15_t)0x3fb4, (q15_t)0x39e0, (q15_t)0x3fb5, + (q15_t)0x39ec, (q15_t)0x3fb6, (q15_t)0x39f9, (q15_t)0x3fb7, (q15_t)0x3a05, (q15_t)0x3fb8, (q15_t)0x3a12, (q15_t)0x3fb9, + (q15_t)0x3a1e, (q15_t)0x3fbb, (q15_t)0x3a2b, (q15_t)0x3fbc, (q15_t)0x3a37, (q15_t)0x3fbd, (q15_t)0x3a44, (q15_t)0x3fbe, + (q15_t)0x3a50, (q15_t)0x3fbf, (q15_t)0x3a5d, (q15_t)0x3fc0, (q15_t)0x3a69, (q15_t)0x3fc1, (q15_t)0x3a76, (q15_t)0x3fc3, + (q15_t)0x3a82, (q15_t)0x3fc4, (q15_t)0x3a8f, (q15_t)0x3fc5, (q15_t)0x3a9b, (q15_t)0x3fc6, (q15_t)0x3aa8, (q15_t)0x3fc7, + (q15_t)0x3ab4, (q15_t)0x3fc8, (q15_t)0x3ac1, (q15_t)0x3fc9, (q15_t)0x3acd, (q15_t)0x3fca, (q15_t)0x3ada, (q15_t)0x3fcb, + (q15_t)0x3ae6, (q15_t)0x3fcc, (q15_t)0x3af3, (q15_t)0x3fcd, (q15_t)0x3b00, (q15_t)0x3fce, (q15_t)0x3b0c, (q15_t)0x3fcf, + (q15_t)0x3b19, (q15_t)0x3fd0, (q15_t)0x3b25, (q15_t)0x3fd1, (q15_t)0x3b32, (q15_t)0x3fd2, (q15_t)0x3b3e, (q15_t)0x3fd3, + (q15_t)0x3b4b, (q15_t)0x3fd4, (q15_t)0x3b57, (q15_t)0x3fd5, (q15_t)0x3b64, (q15_t)0x3fd5, (q15_t)0x3b70, (q15_t)0x3fd6, + (q15_t)0x3b7d, (q15_t)0x3fd7, (q15_t)0x3b89, (q15_t)0x3fd8, (q15_t)0x3b96, (q15_t)0x3fd9, (q15_t)0x3ba2, (q15_t)0x3fda, + (q15_t)0x3baf, (q15_t)0x3fdb, (q15_t)0x3bbc, (q15_t)0x3fdc, (q15_t)0x3bc8, (q15_t)0x3fdc, (q15_t)0x3bd5, (q15_t)0x3fdd, + (q15_t)0x3be1, (q15_t)0x3fde, (q15_t)0x3bee, (q15_t)0x3fdf, (q15_t)0x3bfa, (q15_t)0x3fe0, (q15_t)0x3c07, (q15_t)0x3fe0, + (q15_t)0x3c13, (q15_t)0x3fe1, (q15_t)0x3c20, (q15_t)0x3fe2, (q15_t)0x3c2c, (q15_t)0x3fe3, (q15_t)0x3c39, (q15_t)0x3fe3, + (q15_t)0x3c45, (q15_t)0x3fe4, (q15_t)0x3c52, (q15_t)0x3fe5, (q15_t)0x3c5f, (q15_t)0x3fe6, (q15_t)0x3c6b, (q15_t)0x3fe6, + (q15_t)0x3c78, (q15_t)0x3fe7, (q15_t)0x3c84, (q15_t)0x3fe8, (q15_t)0x3c91, (q15_t)0x3fe8, (q15_t)0x3c9d, (q15_t)0x3fe9, + (q15_t)0x3caa, (q15_t)0x3fea, (q15_t)0x3cb6, (q15_t)0x3fea, (q15_t)0x3cc3, (q15_t)0x3feb, (q15_t)0x3cd0, (q15_t)0x3fec, + (q15_t)0x3cdc, (q15_t)0x3fec, (q15_t)0x3ce9, (q15_t)0x3fed, (q15_t)0x3cf5, (q15_t)0x3fed, (q15_t)0x3d02, (q15_t)0x3fee, + (q15_t)0x3d0e, (q15_t)0x3fef, (q15_t)0x3d1b, (q15_t)0x3fef, (q15_t)0x3d27, (q15_t)0x3ff0, (q15_t)0x3d34, (q15_t)0x3ff0, + (q15_t)0x3d40, (q15_t)0x3ff1, (q15_t)0x3d4d, (q15_t)0x3ff1, (q15_t)0x3d5a, (q15_t)0x3ff2, (q15_t)0x3d66, (q15_t)0x3ff2, + (q15_t)0x3d73, (q15_t)0x3ff3, (q15_t)0x3d7f, (q15_t)0x3ff3, (q15_t)0x3d8c, (q15_t)0x3ff4, (q15_t)0x3d98, (q15_t)0x3ff4, + (q15_t)0x3da5, (q15_t)0x3ff5, (q15_t)0x3db2, (q15_t)0x3ff5, (q15_t)0x3dbe, (q15_t)0x3ff6, (q15_t)0x3dcb, (q15_t)0x3ff6, + (q15_t)0x3dd7, (q15_t)0x3ff7, (q15_t)0x3de4, (q15_t)0x3ff7, (q15_t)0x3df0, (q15_t)0x3ff7, (q15_t)0x3dfd, (q15_t)0x3ff8, + (q15_t)0x3e09, (q15_t)0x3ff8, (q15_t)0x3e16, (q15_t)0x3ff9, (q15_t)0x3e23, (q15_t)0x3ff9, (q15_t)0x3e2f, (q15_t)0x3ff9, + (q15_t)0x3e3c, (q15_t)0x3ffa, (q15_t)0x3e48, (q15_t)0x3ffa, (q15_t)0x3e55, (q15_t)0x3ffa, (q15_t)0x3e61, (q15_t)0x3ffb, + (q15_t)0x3e6e, (q15_t)0x3ffb, (q15_t)0x3e7a, (q15_t)0x3ffb, (q15_t)0x3e87, (q15_t)0x3ffc, (q15_t)0x3e94, (q15_t)0x3ffc, + (q15_t)0x3ea0, (q15_t)0x3ffc, (q15_t)0x3ead, (q15_t)0x3ffc, (q15_t)0x3eb9, (q15_t)0x3ffd, (q15_t)0x3ec6, (q15_t)0x3ffd, + (q15_t)0x3ed2, (q15_t)0x3ffd, (q15_t)0x3edf, (q15_t)0x3ffd, (q15_t)0x3eec, (q15_t)0x3ffe, (q15_t)0x3ef8, (q15_t)0x3ffe, + (q15_t)0x3f05, (q15_t)0x3ffe, (q15_t)0x3f11, (q15_t)0x3ffe, (q15_t)0x3f1e, (q15_t)0x3ffe, (q15_t)0x3f2a, (q15_t)0x3fff, + (q15_t)0x3f37, (q15_t)0x3fff, (q15_t)0x3f44, (q15_t)0x3fff, (q15_t)0x3f50, (q15_t)0x3fff, (q15_t)0x3f5d, (q15_t)0x3fff, + (q15_t)0x3f69, (q15_t)0x3fff, (q15_t)0x3f76, (q15_t)0x3fff, (q15_t)0x3f82, (q15_t)0x4000, (q15_t)0x3f8f, (q15_t)0x4000, + (q15_t)0x3f9b, (q15_t)0x4000, (q15_t)0x3fa8, (q15_t)0x4000, (q15_t)0x3fb5, (q15_t)0x4000, (q15_t)0x3fc1, (q15_t)0x4000, + (q15_t)0x3fce, (q15_t)0x4000, (q15_t)0x3fda, (q15_t)0x4000, (q15_t)0x3fe7, (q15_t)0x4000, (q15_t)0x3ff3, (q15_t)0x4000, +}; + +/** +* \par +* Generation of real_CoefB array: +* \par +* n = 4096 +*
for (i = 0; i < n; i++)
+*  {
+*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));
+*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
+*  } 
+* \par +* Convert to fixed point Q15 format +* round(pBTable[i] * pow(2, 15)) +* +*/ +const q15_t ALIGN4 realCoefBQ15[8192] = { + (q15_t)0x4000, (q15_t)0x4000, (q15_t)0x400d, (q15_t)0x4000, (q15_t)0x4019, (q15_t)0x4000, (q15_t)0x4026, (q15_t)0x4000, + (q15_t)0x4032, (q15_t)0x4000, (q15_t)0x403f, (q15_t)0x4000, (q15_t)0x404b, (q15_t)0x4000, (q15_t)0x4058, (q15_t)0x4000, + (q15_t)0x4065, (q15_t)0x4000, (q15_t)0x4071, (q15_t)0x4000, (q15_t)0x407e, (q15_t)0x4000, (q15_t)0x408a, (q15_t)0x3fff, + (q15_t)0x4097, (q15_t)0x3fff, (q15_t)0x40a3, (q15_t)0x3fff, (q15_t)0x40b0, (q15_t)0x3fff, (q15_t)0x40bc, (q15_t)0x3fff, + (q15_t)0x40c9, (q15_t)0x3fff, (q15_t)0x40d6, (q15_t)0x3fff, (q15_t)0x40e2, (q15_t)0x3ffe, (q15_t)0x40ef, (q15_t)0x3ffe, + (q15_t)0x40fb, (q15_t)0x3ffe, (q15_t)0x4108, (q15_t)0x3ffe, (q15_t)0x4114, (q15_t)0x3ffe, (q15_t)0x4121, (q15_t)0x3ffd, + (q15_t)0x412e, (q15_t)0x3ffd, (q15_t)0x413a, (q15_t)0x3ffd, (q15_t)0x4147, (q15_t)0x3ffd, (q15_t)0x4153, (q15_t)0x3ffc, + (q15_t)0x4160, (q15_t)0x3ffc, (q15_t)0x416c, (q15_t)0x3ffc, (q15_t)0x4179, (q15_t)0x3ffc, (q15_t)0x4186, (q15_t)0x3ffb, + (q15_t)0x4192, (q15_t)0x3ffb, (q15_t)0x419f, (q15_t)0x3ffb, (q15_t)0x41ab, (q15_t)0x3ffa, (q15_t)0x41b8, (q15_t)0x3ffa, + (q15_t)0x41c4, (q15_t)0x3ffa, (q15_t)0x41d1, (q15_t)0x3ff9, (q15_t)0x41dd, (q15_t)0x3ff9, (q15_t)0x41ea, (q15_t)0x3ff9, + (q15_t)0x41f7, (q15_t)0x3ff8, (q15_t)0x4203, (q15_t)0x3ff8, (q15_t)0x4210, (q15_t)0x3ff7, (q15_t)0x421c, (q15_t)0x3ff7, + (q15_t)0x4229, (q15_t)0x3ff7, (q15_t)0x4235, (q15_t)0x3ff6, (q15_t)0x4242, (q15_t)0x3ff6, (q15_t)0x424e, (q15_t)0x3ff5, + (q15_t)0x425b, (q15_t)0x3ff5, (q15_t)0x4268, (q15_t)0x3ff4, (q15_t)0x4274, (q15_t)0x3ff4, (q15_t)0x4281, (q15_t)0x3ff3, + (q15_t)0x428d, (q15_t)0x3ff3, (q15_t)0x429a, (q15_t)0x3ff2, (q15_t)0x42a6, (q15_t)0x3ff2, (q15_t)0x42b3, (q15_t)0x3ff1, + (q15_t)0x42c0, (q15_t)0x3ff1, (q15_t)0x42cc, (q15_t)0x3ff0, (q15_t)0x42d9, (q15_t)0x3ff0, (q15_t)0x42e5, (q15_t)0x3fef, + (q15_t)0x42f2, (q15_t)0x3fef, (q15_t)0x42fe, (q15_t)0x3fee, (q15_t)0x430b, (q15_t)0x3fed, (q15_t)0x4317, (q15_t)0x3fed, + (q15_t)0x4324, (q15_t)0x3fec, (q15_t)0x4330, (q15_t)0x3fec, (q15_t)0x433d, (q15_t)0x3feb, (q15_t)0x434a, (q15_t)0x3fea, + (q15_t)0x4356, (q15_t)0x3fea, (q15_t)0x4363, (q15_t)0x3fe9, (q15_t)0x436f, (q15_t)0x3fe8, (q15_t)0x437c, (q15_t)0x3fe8, + (q15_t)0x4388, (q15_t)0x3fe7, (q15_t)0x4395, (q15_t)0x3fe6, (q15_t)0x43a1, (q15_t)0x3fe6, (q15_t)0x43ae, (q15_t)0x3fe5, + (q15_t)0x43bb, (q15_t)0x3fe4, (q15_t)0x43c7, (q15_t)0x3fe3, (q15_t)0x43d4, (q15_t)0x3fe3, (q15_t)0x43e0, (q15_t)0x3fe2, + (q15_t)0x43ed, (q15_t)0x3fe1, (q15_t)0x43f9, (q15_t)0x3fe0, (q15_t)0x4406, (q15_t)0x3fe0, (q15_t)0x4412, (q15_t)0x3fdf, + (q15_t)0x441f, (q15_t)0x3fde, (q15_t)0x442b, (q15_t)0x3fdd, (q15_t)0x4438, (q15_t)0x3fdc, (q15_t)0x4444, (q15_t)0x3fdc, + (q15_t)0x4451, (q15_t)0x3fdb, (q15_t)0x445e, (q15_t)0x3fda, (q15_t)0x446a, (q15_t)0x3fd9, (q15_t)0x4477, (q15_t)0x3fd8, + (q15_t)0x4483, (q15_t)0x3fd7, (q15_t)0x4490, (q15_t)0x3fd6, (q15_t)0x449c, (q15_t)0x3fd5, (q15_t)0x44a9, (q15_t)0x3fd5, + (q15_t)0x44b5, (q15_t)0x3fd4, (q15_t)0x44c2, (q15_t)0x3fd3, (q15_t)0x44ce, (q15_t)0x3fd2, (q15_t)0x44db, (q15_t)0x3fd1, + (q15_t)0x44e7, (q15_t)0x3fd0, (q15_t)0x44f4, (q15_t)0x3fcf, (q15_t)0x4500, (q15_t)0x3fce, (q15_t)0x450d, (q15_t)0x3fcd, + (q15_t)0x451a, (q15_t)0x3fcc, (q15_t)0x4526, (q15_t)0x3fcb, (q15_t)0x4533, (q15_t)0x3fca, (q15_t)0x453f, (q15_t)0x3fc9, + (q15_t)0x454c, (q15_t)0x3fc8, (q15_t)0x4558, (q15_t)0x3fc7, (q15_t)0x4565, (q15_t)0x3fc6, (q15_t)0x4571, (q15_t)0x3fc5, + (q15_t)0x457e, (q15_t)0x3fc4, (q15_t)0x458a, (q15_t)0x3fc3, (q15_t)0x4597, (q15_t)0x3fc1, (q15_t)0x45a3, (q15_t)0x3fc0, + (q15_t)0x45b0, (q15_t)0x3fbf, (q15_t)0x45bc, (q15_t)0x3fbe, (q15_t)0x45c9, (q15_t)0x3fbd, (q15_t)0x45d5, (q15_t)0x3fbc, + (q15_t)0x45e2, (q15_t)0x3fbb, (q15_t)0x45ee, (q15_t)0x3fb9, (q15_t)0x45fb, (q15_t)0x3fb8, (q15_t)0x4607, (q15_t)0x3fb7, + (q15_t)0x4614, (q15_t)0x3fb6, (q15_t)0x4620, (q15_t)0x3fb5, (q15_t)0x462d, (q15_t)0x3fb4, (q15_t)0x4639, (q15_t)0x3fb2, + (q15_t)0x4646, (q15_t)0x3fb1, (q15_t)0x4652, (q15_t)0x3fb0, (q15_t)0x465f, (q15_t)0x3faf, (q15_t)0x466b, (q15_t)0x3fad, + (q15_t)0x4678, (q15_t)0x3fac, (q15_t)0x4684, (q15_t)0x3fab, (q15_t)0x4691, (q15_t)0x3faa, (q15_t)0x469d, (q15_t)0x3fa8, + (q15_t)0x46aa, (q15_t)0x3fa7, (q15_t)0x46b6, (q15_t)0x3fa6, (q15_t)0x46c3, (q15_t)0x3fa4, (q15_t)0x46cf, (q15_t)0x3fa3, + (q15_t)0x46dc, (q15_t)0x3fa2, (q15_t)0x46e8, (q15_t)0x3fa0, (q15_t)0x46f5, (q15_t)0x3f9f, (q15_t)0x4701, (q15_t)0x3f9e, + (q15_t)0x470e, (q15_t)0x3f9c, (q15_t)0x471a, (q15_t)0x3f9b, (q15_t)0x4727, (q15_t)0x3f99, (q15_t)0x4733, (q15_t)0x3f98, + (q15_t)0x4740, (q15_t)0x3f97, (q15_t)0x474c, (q15_t)0x3f95, (q15_t)0x4759, (q15_t)0x3f94, (q15_t)0x4765, (q15_t)0x3f92, + (q15_t)0x4772, (q15_t)0x3f91, (q15_t)0x477e, (q15_t)0x3f8f, (q15_t)0x478b, (q15_t)0x3f8e, (q15_t)0x4797, (q15_t)0x3f8c, + (q15_t)0x47a4, (q15_t)0x3f8b, (q15_t)0x47b0, (q15_t)0x3f89, (q15_t)0x47bd, (q15_t)0x3f88, (q15_t)0x47c9, (q15_t)0x3f86, + (q15_t)0x47d6, (q15_t)0x3f85, (q15_t)0x47e2, (q15_t)0x3f83, (q15_t)0x47ef, (q15_t)0x3f82, (q15_t)0x47fb, (q15_t)0x3f80, + (q15_t)0x4807, (q15_t)0x3f7f, (q15_t)0x4814, (q15_t)0x3f7d, (q15_t)0x4820, (q15_t)0x3f7b, (q15_t)0x482d, (q15_t)0x3f7a, + (q15_t)0x4839, (q15_t)0x3f78, (q15_t)0x4846, (q15_t)0x3f77, (q15_t)0x4852, (q15_t)0x3f75, (q15_t)0x485f, (q15_t)0x3f73, + (q15_t)0x486b, (q15_t)0x3f72, (q15_t)0x4878, (q15_t)0x3f70, (q15_t)0x4884, (q15_t)0x3f6e, (q15_t)0x4891, (q15_t)0x3f6d, + (q15_t)0x489d, (q15_t)0x3f6b, (q15_t)0x48a9, (q15_t)0x3f69, (q15_t)0x48b6, (q15_t)0x3f68, (q15_t)0x48c2, (q15_t)0x3f66, + (q15_t)0x48cf, (q15_t)0x3f64, (q15_t)0x48db, (q15_t)0x3f62, (q15_t)0x48e8, (q15_t)0x3f61, (q15_t)0x48f4, (q15_t)0x3f5f, + (q15_t)0x4901, (q15_t)0x3f5d, (q15_t)0x490d, (q15_t)0x3f5b, (q15_t)0x4919, (q15_t)0x3f5a, (q15_t)0x4926, (q15_t)0x3f58, + (q15_t)0x4932, (q15_t)0x3f56, (q15_t)0x493f, (q15_t)0x3f54, (q15_t)0x494b, (q15_t)0x3f52, (q15_t)0x4958, (q15_t)0x3f51, + (q15_t)0x4964, (q15_t)0x3f4f, (q15_t)0x4970, (q15_t)0x3f4d, (q15_t)0x497d, (q15_t)0x3f4b, (q15_t)0x4989, (q15_t)0x3f49, + (q15_t)0x4996, (q15_t)0x3f47, (q15_t)0x49a2, (q15_t)0x3f45, (q15_t)0x49af, (q15_t)0x3f43, (q15_t)0x49bb, (q15_t)0x3f42, + (q15_t)0x49c7, (q15_t)0x3f40, (q15_t)0x49d4, (q15_t)0x3f3e, (q15_t)0x49e0, (q15_t)0x3f3c, (q15_t)0x49ed, (q15_t)0x3f3a, + (q15_t)0x49f9, (q15_t)0x3f38, (q15_t)0x4a06, (q15_t)0x3f36, (q15_t)0x4a12, (q15_t)0x3f34, (q15_t)0x4a1e, (q15_t)0x3f32, + (q15_t)0x4a2b, (q15_t)0x3f30, (q15_t)0x4a37, (q15_t)0x3f2e, (q15_t)0x4a44, (q15_t)0x3f2c, (q15_t)0x4a50, (q15_t)0x3f2a, + (q15_t)0x4a5c, (q15_t)0x3f28, (q15_t)0x4a69, (q15_t)0x3f26, (q15_t)0x4a75, (q15_t)0x3f24, (q15_t)0x4a82, (q15_t)0x3f22, + (q15_t)0x4a8e, (q15_t)0x3f20, (q15_t)0x4a9a, (q15_t)0x3f1e, (q15_t)0x4aa7, (q15_t)0x3f1c, (q15_t)0x4ab3, (q15_t)0x3f19, + (q15_t)0x4ac0, (q15_t)0x3f17, (q15_t)0x4acc, (q15_t)0x3f15, (q15_t)0x4ad8, (q15_t)0x3f13, (q15_t)0x4ae5, (q15_t)0x3f11, + (q15_t)0x4af1, (q15_t)0x3f0f, (q15_t)0x4afd, (q15_t)0x3f0d, (q15_t)0x4b0a, (q15_t)0x3f0a, (q15_t)0x4b16, (q15_t)0x3f08, + (q15_t)0x4b23, (q15_t)0x3f06, (q15_t)0x4b2f, (q15_t)0x3f04, (q15_t)0x4b3b, (q15_t)0x3f02, (q15_t)0x4b48, (q15_t)0x3f00, + (q15_t)0x4b54, (q15_t)0x3efd, (q15_t)0x4b60, (q15_t)0x3efb, (q15_t)0x4b6d, (q15_t)0x3ef9, (q15_t)0x4b79, (q15_t)0x3ef7, + (q15_t)0x4b85, (q15_t)0x3ef4, (q15_t)0x4b92, (q15_t)0x3ef2, (q15_t)0x4b9e, (q15_t)0x3ef0, (q15_t)0x4bab, (q15_t)0x3eed, + (q15_t)0x4bb7, (q15_t)0x3eeb, (q15_t)0x4bc3, (q15_t)0x3ee9, (q15_t)0x4bd0, (q15_t)0x3ee7, (q15_t)0x4bdc, (q15_t)0x3ee4, + (q15_t)0x4be8, (q15_t)0x3ee2, (q15_t)0x4bf5, (q15_t)0x3ee0, (q15_t)0x4c01, (q15_t)0x3edd, (q15_t)0x4c0d, (q15_t)0x3edb, + (q15_t)0x4c1a, (q15_t)0x3ed8, (q15_t)0x4c26, (q15_t)0x3ed6, (q15_t)0x4c32, (q15_t)0x3ed4, (q15_t)0x4c3f, (q15_t)0x3ed1, + (q15_t)0x4c4b, (q15_t)0x3ecf, (q15_t)0x4c57, (q15_t)0x3ecc, (q15_t)0x4c64, (q15_t)0x3eca, (q15_t)0x4c70, (q15_t)0x3ec8, + (q15_t)0x4c7c, (q15_t)0x3ec5, (q15_t)0x4c89, (q15_t)0x3ec3, (q15_t)0x4c95, (q15_t)0x3ec0, (q15_t)0x4ca1, (q15_t)0x3ebe, + (q15_t)0x4cae, (q15_t)0x3ebb, (q15_t)0x4cba, (q15_t)0x3eb9, (q15_t)0x4cc6, (q15_t)0x3eb6, (q15_t)0x4cd3, (q15_t)0x3eb4, + (q15_t)0x4cdf, (q15_t)0x3eb1, (q15_t)0x4ceb, (q15_t)0x3eaf, (q15_t)0x4cf8, (q15_t)0x3eac, (q15_t)0x4d04, (q15_t)0x3eaa, + (q15_t)0x4d10, (q15_t)0x3ea7, (q15_t)0x4d1c, (q15_t)0x3ea5, (q15_t)0x4d29, (q15_t)0x3ea2, (q15_t)0x4d35, (q15_t)0x3e9f, + (q15_t)0x4d41, (q15_t)0x3e9d, (q15_t)0x4d4e, (q15_t)0x3e9a, (q15_t)0x4d5a, (q15_t)0x3e98, (q15_t)0x4d66, (q15_t)0x3e95, + (q15_t)0x4d72, (q15_t)0x3e92, (q15_t)0x4d7f, (q15_t)0x3e90, (q15_t)0x4d8b, (q15_t)0x3e8d, (q15_t)0x4d97, (q15_t)0x3e8a, + (q15_t)0x4da4, (q15_t)0x3e88, (q15_t)0x4db0, (q15_t)0x3e85, (q15_t)0x4dbc, (q15_t)0x3e82, (q15_t)0x4dc8, (q15_t)0x3e80, + (q15_t)0x4dd5, (q15_t)0x3e7d, (q15_t)0x4de1, (q15_t)0x3e7a, (q15_t)0x4ded, (q15_t)0x3e77, (q15_t)0x4df9, (q15_t)0x3e75, + (q15_t)0x4e06, (q15_t)0x3e72, (q15_t)0x4e12, (q15_t)0x3e6f, (q15_t)0x4e1e, (q15_t)0x3e6c, (q15_t)0x4e2b, (q15_t)0x3e6a, + (q15_t)0x4e37, (q15_t)0x3e67, (q15_t)0x4e43, (q15_t)0x3e64, (q15_t)0x4e4f, (q15_t)0x3e61, (q15_t)0x4e5c, (q15_t)0x3e5e, + (q15_t)0x4e68, (q15_t)0x3e5c, (q15_t)0x4e74, (q15_t)0x3e59, (q15_t)0x4e80, (q15_t)0x3e56, (q15_t)0x4e8c, (q15_t)0x3e53, + (q15_t)0x4e99, (q15_t)0x3e50, (q15_t)0x4ea5, (q15_t)0x3e4d, (q15_t)0x4eb1, (q15_t)0x3e4a, (q15_t)0x4ebd, (q15_t)0x3e48, + (q15_t)0x4eca, (q15_t)0x3e45, (q15_t)0x4ed6, (q15_t)0x3e42, (q15_t)0x4ee2, (q15_t)0x3e3f, (q15_t)0x4eee, (q15_t)0x3e3c, + (q15_t)0x4efb, (q15_t)0x3e39, (q15_t)0x4f07, (q15_t)0x3e36, (q15_t)0x4f13, (q15_t)0x3e33, (q15_t)0x4f1f, (q15_t)0x3e30, + (q15_t)0x4f2b, (q15_t)0x3e2d, (q15_t)0x4f38, (q15_t)0x3e2a, (q15_t)0x4f44, (q15_t)0x3e27, (q15_t)0x4f50, (q15_t)0x3e24, + (q15_t)0x4f5c, (q15_t)0x3e21, (q15_t)0x4f68, (q15_t)0x3e1e, (q15_t)0x4f75, (q15_t)0x3e1b, (q15_t)0x4f81, (q15_t)0x3e18, + (q15_t)0x4f8d, (q15_t)0x3e15, (q15_t)0x4f99, (q15_t)0x3e12, (q15_t)0x4fa5, (q15_t)0x3e0f, (q15_t)0x4fb2, (q15_t)0x3e0c, + (q15_t)0x4fbe, (q15_t)0x3e09, (q15_t)0x4fca, (q15_t)0x3e06, (q15_t)0x4fd6, (q15_t)0x3e03, (q15_t)0x4fe2, (q15_t)0x3dff, + (q15_t)0x4fee, (q15_t)0x3dfc, (q15_t)0x4ffb, (q15_t)0x3df9, (q15_t)0x5007, (q15_t)0x3df6, (q15_t)0x5013, (q15_t)0x3df3, + (q15_t)0x501f, (q15_t)0x3df0, (q15_t)0x502b, (q15_t)0x3ded, (q15_t)0x5037, (q15_t)0x3de9, (q15_t)0x5044, (q15_t)0x3de6, + (q15_t)0x5050, (q15_t)0x3de3, (q15_t)0x505c, (q15_t)0x3de0, (q15_t)0x5068, (q15_t)0x3ddd, (q15_t)0x5074, (q15_t)0x3dd9, + (q15_t)0x5080, (q15_t)0x3dd6, (q15_t)0x508c, (q15_t)0x3dd3, (q15_t)0x5099, (q15_t)0x3dd0, (q15_t)0x50a5, (q15_t)0x3dcc, + (q15_t)0x50b1, (q15_t)0x3dc9, (q15_t)0x50bd, (q15_t)0x3dc6, (q15_t)0x50c9, (q15_t)0x3dc2, (q15_t)0x50d5, (q15_t)0x3dbf, + (q15_t)0x50e1, (q15_t)0x3dbc, (q15_t)0x50ed, (q15_t)0x3db9, (q15_t)0x50fa, (q15_t)0x3db5, (q15_t)0x5106, (q15_t)0x3db2, + (q15_t)0x5112, (q15_t)0x3daf, (q15_t)0x511e, (q15_t)0x3dab, (q15_t)0x512a, (q15_t)0x3da8, (q15_t)0x5136, (q15_t)0x3da4, + (q15_t)0x5142, (q15_t)0x3da1, (q15_t)0x514e, (q15_t)0x3d9e, (q15_t)0x515a, (q15_t)0x3d9a, (q15_t)0x5167, (q15_t)0x3d97, + (q15_t)0x5173, (q15_t)0x3d93, (q15_t)0x517f, (q15_t)0x3d90, (q15_t)0x518b, (q15_t)0x3d8d, (q15_t)0x5197, (q15_t)0x3d89, + (q15_t)0x51a3, (q15_t)0x3d86, (q15_t)0x51af, (q15_t)0x3d82, (q15_t)0x51bb, (q15_t)0x3d7f, (q15_t)0x51c7, (q15_t)0x3d7b, + (q15_t)0x51d3, (q15_t)0x3d78, (q15_t)0x51df, (q15_t)0x3d74, (q15_t)0x51eb, (q15_t)0x3d71, (q15_t)0x51f7, (q15_t)0x3d6d, + (q15_t)0x5204, (q15_t)0x3d6a, (q15_t)0x5210, (q15_t)0x3d66, (q15_t)0x521c, (q15_t)0x3d63, (q15_t)0x5228, (q15_t)0x3d5f, + (q15_t)0x5234, (q15_t)0x3d5b, (q15_t)0x5240, (q15_t)0x3d58, (q15_t)0x524c, (q15_t)0x3d54, (q15_t)0x5258, (q15_t)0x3d51, + (q15_t)0x5264, (q15_t)0x3d4d, (q15_t)0x5270, (q15_t)0x3d49, (q15_t)0x527c, (q15_t)0x3d46, (q15_t)0x5288, (q15_t)0x3d42, + (q15_t)0x5294, (q15_t)0x3d3f, (q15_t)0x52a0, (q15_t)0x3d3b, (q15_t)0x52ac, (q15_t)0x3d37, (q15_t)0x52b8, (q15_t)0x3d34, + (q15_t)0x52c4, (q15_t)0x3d30, (q15_t)0x52d0, (q15_t)0x3d2c, (q15_t)0x52dc, (q15_t)0x3d28, (q15_t)0x52e8, (q15_t)0x3d25, + (q15_t)0x52f4, (q15_t)0x3d21, (q15_t)0x5300, (q15_t)0x3d1d, (q15_t)0x530c, (q15_t)0x3d1a, (q15_t)0x5318, (q15_t)0x3d16, + (q15_t)0x5324, (q15_t)0x3d12, (q15_t)0x5330, (q15_t)0x3d0e, (q15_t)0x533c, (q15_t)0x3d0b, (q15_t)0x5348, (q15_t)0x3d07, + (q15_t)0x5354, (q15_t)0x3d03, (q15_t)0x5360, (q15_t)0x3cff, (q15_t)0x536c, (q15_t)0x3cfb, (q15_t)0x5378, (q15_t)0x3cf8, + (q15_t)0x5384, (q15_t)0x3cf4, (q15_t)0x5390, (q15_t)0x3cf0, (q15_t)0x539c, (q15_t)0x3cec, (q15_t)0x53a8, (q15_t)0x3ce8, + (q15_t)0x53b4, (q15_t)0x3ce4, (q15_t)0x53c0, (q15_t)0x3ce0, (q15_t)0x53cc, (q15_t)0x3cdd, (q15_t)0x53d8, (q15_t)0x3cd9, + (q15_t)0x53e4, (q15_t)0x3cd5, (q15_t)0x53f0, (q15_t)0x3cd1, (q15_t)0x53fb, (q15_t)0x3ccd, (q15_t)0x5407, (q15_t)0x3cc9, + (q15_t)0x5413, (q15_t)0x3cc5, (q15_t)0x541f, (q15_t)0x3cc1, (q15_t)0x542b, (q15_t)0x3cbd, (q15_t)0x5437, (q15_t)0x3cb9, + (q15_t)0x5443, (q15_t)0x3cb5, (q15_t)0x544f, (q15_t)0x3cb1, (q15_t)0x545b, (q15_t)0x3cad, (q15_t)0x5467, (q15_t)0x3ca9, + (q15_t)0x5473, (q15_t)0x3ca5, (q15_t)0x547f, (q15_t)0x3ca1, (q15_t)0x548b, (q15_t)0x3c9d, (q15_t)0x5496, (q15_t)0x3c99, + (q15_t)0x54a2, (q15_t)0x3c95, (q15_t)0x54ae, (q15_t)0x3c91, (q15_t)0x54ba, (q15_t)0x3c8d, (q15_t)0x54c6, (q15_t)0x3c89, + (q15_t)0x54d2, (q15_t)0x3c85, (q15_t)0x54de, (q15_t)0x3c81, (q15_t)0x54ea, (q15_t)0x3c7d, (q15_t)0x54f6, (q15_t)0x3c79, + (q15_t)0x5501, (q15_t)0x3c74, (q15_t)0x550d, (q15_t)0x3c70, (q15_t)0x5519, (q15_t)0x3c6c, (q15_t)0x5525, (q15_t)0x3c68, + (q15_t)0x5531, (q15_t)0x3c64, (q15_t)0x553d, (q15_t)0x3c60, (q15_t)0x5549, (q15_t)0x3c5b, (q15_t)0x5554, (q15_t)0x3c57, + (q15_t)0x5560, (q15_t)0x3c53, (q15_t)0x556c, (q15_t)0x3c4f, (q15_t)0x5578, (q15_t)0x3c4b, (q15_t)0x5584, (q15_t)0x3c46, + (q15_t)0x5590, (q15_t)0x3c42, (q15_t)0x559b, (q15_t)0x3c3e, (q15_t)0x55a7, (q15_t)0x3c3a, (q15_t)0x55b3, (q15_t)0x3c36, + (q15_t)0x55bf, (q15_t)0x3c31, (q15_t)0x55cb, (q15_t)0x3c2d, (q15_t)0x55d7, (q15_t)0x3c29, (q15_t)0x55e2, (q15_t)0x3c24, + (q15_t)0x55ee, (q15_t)0x3c20, (q15_t)0x55fa, (q15_t)0x3c1c, (q15_t)0x5606, (q15_t)0x3c17, (q15_t)0x5612, (q15_t)0x3c13, + (q15_t)0x561d, (q15_t)0x3c0f, (q15_t)0x5629, (q15_t)0x3c0a, (q15_t)0x5635, (q15_t)0x3c06, (q15_t)0x5641, (q15_t)0x3c02, + (q15_t)0x564c, (q15_t)0x3bfd, (q15_t)0x5658, (q15_t)0x3bf9, (q15_t)0x5664, (q15_t)0x3bf5, (q15_t)0x5670, (q15_t)0x3bf0, + (q15_t)0x567c, (q15_t)0x3bec, (q15_t)0x5687, (q15_t)0x3be7, (q15_t)0x5693, (q15_t)0x3be3, (q15_t)0x569f, (q15_t)0x3bde, + (q15_t)0x56ab, (q15_t)0x3bda, (q15_t)0x56b6, (q15_t)0x3bd6, (q15_t)0x56c2, (q15_t)0x3bd1, (q15_t)0x56ce, (q15_t)0x3bcd, + (q15_t)0x56da, (q15_t)0x3bc8, (q15_t)0x56e5, (q15_t)0x3bc4, (q15_t)0x56f1, (q15_t)0x3bbf, (q15_t)0x56fd, (q15_t)0x3bbb, + (q15_t)0x5709, (q15_t)0x3bb6, (q15_t)0x5714, (q15_t)0x3bb2, (q15_t)0x5720, (q15_t)0x3bad, (q15_t)0x572c, (q15_t)0x3ba9, + (q15_t)0x5737, (q15_t)0x3ba4, (q15_t)0x5743, (q15_t)0x3b9f, (q15_t)0x574f, (q15_t)0x3b9b, (q15_t)0x575b, (q15_t)0x3b96, + (q15_t)0x5766, (q15_t)0x3b92, (q15_t)0x5772, (q15_t)0x3b8d, (q15_t)0x577e, (q15_t)0x3b88, (q15_t)0x5789, (q15_t)0x3b84, + (q15_t)0x5795, (q15_t)0x3b7f, (q15_t)0x57a1, (q15_t)0x3b7b, (q15_t)0x57ac, (q15_t)0x3b76, (q15_t)0x57b8, (q15_t)0x3b71, + (q15_t)0x57c4, (q15_t)0x3b6d, (q15_t)0x57cf, (q15_t)0x3b68, (q15_t)0x57db, (q15_t)0x3b63, (q15_t)0x57e7, (q15_t)0x3b5f, + (q15_t)0x57f2, (q15_t)0x3b5a, (q15_t)0x57fe, (q15_t)0x3b55, (q15_t)0x580a, (q15_t)0x3b50, (q15_t)0x5815, (q15_t)0x3b4c, + (q15_t)0x5821, (q15_t)0x3b47, (q15_t)0x582d, (q15_t)0x3b42, (q15_t)0x5838, (q15_t)0x3b3e, (q15_t)0x5844, (q15_t)0x3b39, + (q15_t)0x584f, (q15_t)0x3b34, (q15_t)0x585b, (q15_t)0x3b2f, (q15_t)0x5867, (q15_t)0x3b2a, (q15_t)0x5872, (q15_t)0x3b26, + (q15_t)0x587e, (q15_t)0x3b21, (q15_t)0x5889, (q15_t)0x3b1c, (q15_t)0x5895, (q15_t)0x3b17, (q15_t)0x58a1, (q15_t)0x3b12, + (q15_t)0x58ac, (q15_t)0x3b0e, (q15_t)0x58b8, (q15_t)0x3b09, (q15_t)0x58c3, (q15_t)0x3b04, (q15_t)0x58cf, (q15_t)0x3aff, + (q15_t)0x58db, (q15_t)0x3afa, (q15_t)0x58e6, (q15_t)0x3af5, (q15_t)0x58f2, (q15_t)0x3af0, (q15_t)0x58fd, (q15_t)0x3aeb, + (q15_t)0x5909, (q15_t)0x3ae6, (q15_t)0x5914, (q15_t)0x3ae2, (q15_t)0x5920, (q15_t)0x3add, (q15_t)0x592c, (q15_t)0x3ad8, + (q15_t)0x5937, (q15_t)0x3ad3, (q15_t)0x5943, (q15_t)0x3ace, (q15_t)0x594e, (q15_t)0x3ac9, (q15_t)0x595a, (q15_t)0x3ac4, + (q15_t)0x5965, (q15_t)0x3abf, (q15_t)0x5971, (q15_t)0x3aba, (q15_t)0x597c, (q15_t)0x3ab5, (q15_t)0x5988, (q15_t)0x3ab0, + (q15_t)0x5993, (q15_t)0x3aab, (q15_t)0x599f, (q15_t)0x3aa6, (q15_t)0x59aa, (q15_t)0x3aa1, (q15_t)0x59b6, (q15_t)0x3a9c, + (q15_t)0x59c1, (q15_t)0x3a97, (q15_t)0x59cd, (q15_t)0x3a92, (q15_t)0x59d8, (q15_t)0x3a8d, (q15_t)0x59e4, (q15_t)0x3a88, + (q15_t)0x59ef, (q15_t)0x3a82, (q15_t)0x59fb, (q15_t)0x3a7d, (q15_t)0x5a06, (q15_t)0x3a78, (q15_t)0x5a12, (q15_t)0x3a73, + (q15_t)0x5a1d, (q15_t)0x3a6e, (q15_t)0x5a29, (q15_t)0x3a69, (q15_t)0x5a34, (q15_t)0x3a64, (q15_t)0x5a40, (q15_t)0x3a5f, + (q15_t)0x5a4b, (q15_t)0x3a59, (q15_t)0x5a57, (q15_t)0x3a54, (q15_t)0x5a62, (q15_t)0x3a4f, (q15_t)0x5a6e, (q15_t)0x3a4a, + (q15_t)0x5a79, (q15_t)0x3a45, (q15_t)0x5a84, (q15_t)0x3a3f, (q15_t)0x5a90, (q15_t)0x3a3a, (q15_t)0x5a9b, (q15_t)0x3a35, + (q15_t)0x5aa7, (q15_t)0x3a30, (q15_t)0x5ab2, (q15_t)0x3a2b, (q15_t)0x5abe, (q15_t)0x3a25, (q15_t)0x5ac9, (q15_t)0x3a20, + (q15_t)0x5ad4, (q15_t)0x3a1b, (q15_t)0x5ae0, (q15_t)0x3a16, (q15_t)0x5aeb, (q15_t)0x3a10, (q15_t)0x5af7, (q15_t)0x3a0b, + (q15_t)0x5b02, (q15_t)0x3a06, (q15_t)0x5b0d, (q15_t)0x3a00, (q15_t)0x5b19, (q15_t)0x39fb, (q15_t)0x5b24, (q15_t)0x39f6, + (q15_t)0x5b30, (q15_t)0x39f0, (q15_t)0x5b3b, (q15_t)0x39eb, (q15_t)0x5b46, (q15_t)0x39e6, (q15_t)0x5b52, (q15_t)0x39e0, + (q15_t)0x5b5d, (q15_t)0x39db, (q15_t)0x5b68, (q15_t)0x39d6, (q15_t)0x5b74, (q15_t)0x39d0, (q15_t)0x5b7f, (q15_t)0x39cb, + (q15_t)0x5b8a, (q15_t)0x39c5, (q15_t)0x5b96, (q15_t)0x39c0, (q15_t)0x5ba1, (q15_t)0x39bb, (q15_t)0x5bac, (q15_t)0x39b5, + (q15_t)0x5bb8, (q15_t)0x39b0, (q15_t)0x5bc3, (q15_t)0x39aa, (q15_t)0x5bce, (q15_t)0x39a5, (q15_t)0x5bda, (q15_t)0x399f, + (q15_t)0x5be5, (q15_t)0x399a, (q15_t)0x5bf0, (q15_t)0x3994, (q15_t)0x5bfc, (q15_t)0x398f, (q15_t)0x5c07, (q15_t)0x3989, + (q15_t)0x5c12, (q15_t)0x3984, (q15_t)0x5c1e, (q15_t)0x397e, (q15_t)0x5c29, (q15_t)0x3979, (q15_t)0x5c34, (q15_t)0x3973, + (q15_t)0x5c3f, (q15_t)0x396e, (q15_t)0x5c4b, (q15_t)0x3968, (q15_t)0x5c56, (q15_t)0x3963, (q15_t)0x5c61, (q15_t)0x395d, + (q15_t)0x5c6c, (q15_t)0x3958, (q15_t)0x5c78, (q15_t)0x3952, (q15_t)0x5c83, (q15_t)0x394c, (q15_t)0x5c8e, (q15_t)0x3947, + (q15_t)0x5c99, (q15_t)0x3941, (q15_t)0x5ca5, (q15_t)0x393b, (q15_t)0x5cb0, (q15_t)0x3936, (q15_t)0x5cbb, (q15_t)0x3930, + (q15_t)0x5cc6, (q15_t)0x392b, (q15_t)0x5cd2, (q15_t)0x3925, (q15_t)0x5cdd, (q15_t)0x391f, (q15_t)0x5ce8, (q15_t)0x391a, + (q15_t)0x5cf3, (q15_t)0x3914, (q15_t)0x5cff, (q15_t)0x390e, (q15_t)0x5d0a, (q15_t)0x3909, (q15_t)0x5d15, (q15_t)0x3903, + (q15_t)0x5d20, (q15_t)0x38fd, (q15_t)0x5d2b, (q15_t)0x38f7, (q15_t)0x5d36, (q15_t)0x38f2, (q15_t)0x5d42, (q15_t)0x38ec, + (q15_t)0x5d4d, (q15_t)0x38e6, (q15_t)0x5d58, (q15_t)0x38e0, (q15_t)0x5d63, (q15_t)0x38db, (q15_t)0x5d6e, (q15_t)0x38d5, + (q15_t)0x5d79, (q15_t)0x38cf, (q15_t)0x5d85, (q15_t)0x38c9, (q15_t)0x5d90, (q15_t)0x38c3, (q15_t)0x5d9b, (q15_t)0x38be, + (q15_t)0x5da6, (q15_t)0x38b8, (q15_t)0x5db1, (q15_t)0x38b2, (q15_t)0x5dbc, (q15_t)0x38ac, (q15_t)0x5dc7, (q15_t)0x38a6, + (q15_t)0x5dd3, (q15_t)0x38a1, (q15_t)0x5dde, (q15_t)0x389b, (q15_t)0x5de9, (q15_t)0x3895, (q15_t)0x5df4, (q15_t)0x388f, + (q15_t)0x5dff, (q15_t)0x3889, (q15_t)0x5e0a, (q15_t)0x3883, (q15_t)0x5e15, (q15_t)0x387d, (q15_t)0x5e20, (q15_t)0x3877, + (q15_t)0x5e2b, (q15_t)0x3871, (q15_t)0x5e36, (q15_t)0x386b, (q15_t)0x5e42, (q15_t)0x3866, (q15_t)0x5e4d, (q15_t)0x3860, + (q15_t)0x5e58, (q15_t)0x385a, (q15_t)0x5e63, (q15_t)0x3854, (q15_t)0x5e6e, (q15_t)0x384e, (q15_t)0x5e79, (q15_t)0x3848, + (q15_t)0x5e84, (q15_t)0x3842, (q15_t)0x5e8f, (q15_t)0x383c, (q15_t)0x5e9a, (q15_t)0x3836, (q15_t)0x5ea5, (q15_t)0x3830, + (q15_t)0x5eb0, (q15_t)0x382a, (q15_t)0x5ebb, (q15_t)0x3824, (q15_t)0x5ec6, (q15_t)0x381e, (q15_t)0x5ed1, (q15_t)0x3818, + (q15_t)0x5edc, (q15_t)0x3812, (q15_t)0x5ee7, (q15_t)0x380b, (q15_t)0x5ef2, (q15_t)0x3805, (q15_t)0x5efd, (q15_t)0x37ff, + (q15_t)0x5f08, (q15_t)0x37f9, (q15_t)0x5f13, (q15_t)0x37f3, (q15_t)0x5f1e, (q15_t)0x37ed, (q15_t)0x5f29, (q15_t)0x37e7, + (q15_t)0x5f34, (q15_t)0x37e1, (q15_t)0x5f3f, (q15_t)0x37db, (q15_t)0x5f4a, (q15_t)0x37d5, (q15_t)0x5f55, (q15_t)0x37ce, + (q15_t)0x5f60, (q15_t)0x37c8, (q15_t)0x5f6b, (q15_t)0x37c2, (q15_t)0x5f76, (q15_t)0x37bc, (q15_t)0x5f81, (q15_t)0x37b6, + (q15_t)0x5f8c, (q15_t)0x37b0, (q15_t)0x5f97, (q15_t)0x37a9, (q15_t)0x5fa2, (q15_t)0x37a3, (q15_t)0x5fac, (q15_t)0x379d, + (q15_t)0x5fb7, (q15_t)0x3797, (q15_t)0x5fc2, (q15_t)0x3790, (q15_t)0x5fcd, (q15_t)0x378a, (q15_t)0x5fd8, (q15_t)0x3784, + (q15_t)0x5fe3, (q15_t)0x377e, (q15_t)0x5fee, (q15_t)0x3777, (q15_t)0x5ff9, (q15_t)0x3771, (q15_t)0x6004, (q15_t)0x376b, + (q15_t)0x600f, (q15_t)0x3765, (q15_t)0x6019, (q15_t)0x375e, (q15_t)0x6024, (q15_t)0x3758, (q15_t)0x602f, (q15_t)0x3752, + (q15_t)0x603a, (q15_t)0x374b, (q15_t)0x6045, (q15_t)0x3745, (q15_t)0x6050, (q15_t)0x373f, (q15_t)0x605b, (q15_t)0x3738, + (q15_t)0x6065, (q15_t)0x3732, (q15_t)0x6070, (q15_t)0x372c, (q15_t)0x607b, (q15_t)0x3725, (q15_t)0x6086, (q15_t)0x371f, + (q15_t)0x6091, (q15_t)0x3718, (q15_t)0x609b, (q15_t)0x3712, (q15_t)0x60a6, (q15_t)0x370c, (q15_t)0x60b1, (q15_t)0x3705, + (q15_t)0x60bc, (q15_t)0x36ff, (q15_t)0x60c7, (q15_t)0x36f8, (q15_t)0x60d1, (q15_t)0x36f2, (q15_t)0x60dc, (q15_t)0x36eb, + (q15_t)0x60e7, (q15_t)0x36e5, (q15_t)0x60f2, (q15_t)0x36df, (q15_t)0x60fd, (q15_t)0x36d8, (q15_t)0x6107, (q15_t)0x36d2, + (q15_t)0x6112, (q15_t)0x36cb, (q15_t)0x611d, (q15_t)0x36c5, (q15_t)0x6128, (q15_t)0x36be, (q15_t)0x6132, (q15_t)0x36b8, + (q15_t)0x613d, (q15_t)0x36b1, (q15_t)0x6148, (q15_t)0x36ab, (q15_t)0x6153, (q15_t)0x36a4, (q15_t)0x615d, (q15_t)0x369d, + (q15_t)0x6168, (q15_t)0x3697, (q15_t)0x6173, (q15_t)0x3690, (q15_t)0x617d, (q15_t)0x368a, (q15_t)0x6188, (q15_t)0x3683, + (q15_t)0x6193, (q15_t)0x367d, (q15_t)0x619e, (q15_t)0x3676, (q15_t)0x61a8, (q15_t)0x366f, (q15_t)0x61b3, (q15_t)0x3669, + (q15_t)0x61be, (q15_t)0x3662, (q15_t)0x61c8, (q15_t)0x365c, (q15_t)0x61d3, (q15_t)0x3655, (q15_t)0x61de, (q15_t)0x364e, + (q15_t)0x61e8, (q15_t)0x3648, (q15_t)0x61f3, (q15_t)0x3641, (q15_t)0x61fe, (q15_t)0x363a, (q15_t)0x6208, (q15_t)0x3634, + (q15_t)0x6213, (q15_t)0x362d, (q15_t)0x621e, (q15_t)0x3626, (q15_t)0x6228, (q15_t)0x3620, (q15_t)0x6233, (q15_t)0x3619, + (q15_t)0x623d, (q15_t)0x3612, (q15_t)0x6248, (q15_t)0x360b, (q15_t)0x6253, (q15_t)0x3605, (q15_t)0x625d, (q15_t)0x35fe, + (q15_t)0x6268, (q15_t)0x35f7, (q15_t)0x6272, (q15_t)0x35f0, (q15_t)0x627d, (q15_t)0x35ea, (q15_t)0x6288, (q15_t)0x35e3, + (q15_t)0x6292, (q15_t)0x35dc, (q15_t)0x629d, (q15_t)0x35d5, (q15_t)0x62a7, (q15_t)0x35ce, (q15_t)0x62b2, (q15_t)0x35c8, + (q15_t)0x62bc, (q15_t)0x35c1, (q15_t)0x62c7, (q15_t)0x35ba, (q15_t)0x62d2, (q15_t)0x35b3, (q15_t)0x62dc, (q15_t)0x35ac, + (q15_t)0x62e7, (q15_t)0x35a5, (q15_t)0x62f1, (q15_t)0x359f, (q15_t)0x62fc, (q15_t)0x3598, (q15_t)0x6306, (q15_t)0x3591, + (q15_t)0x6311, (q15_t)0x358a, (q15_t)0x631b, (q15_t)0x3583, (q15_t)0x6326, (q15_t)0x357c, (q15_t)0x6330, (q15_t)0x3575, + (q15_t)0x633b, (q15_t)0x356e, (q15_t)0x6345, (q15_t)0x3567, (q15_t)0x6350, (q15_t)0x3561, (q15_t)0x635a, (q15_t)0x355a, + (q15_t)0x6365, (q15_t)0x3553, (q15_t)0x636f, (q15_t)0x354c, (q15_t)0x637a, (q15_t)0x3545, (q15_t)0x6384, (q15_t)0x353e, + (q15_t)0x638e, (q15_t)0x3537, (q15_t)0x6399, (q15_t)0x3530, (q15_t)0x63a3, (q15_t)0x3529, (q15_t)0x63ae, (q15_t)0x3522, + (q15_t)0x63b8, (q15_t)0x351b, (q15_t)0x63c3, (q15_t)0x3514, (q15_t)0x63cd, (q15_t)0x350d, (q15_t)0x63d7, (q15_t)0x3506, + (q15_t)0x63e2, (q15_t)0x34ff, (q15_t)0x63ec, (q15_t)0x34f8, (q15_t)0x63f7, (q15_t)0x34f1, (q15_t)0x6401, (q15_t)0x34ea, + (q15_t)0x640b, (q15_t)0x34e2, (q15_t)0x6416, (q15_t)0x34db, (q15_t)0x6420, (q15_t)0x34d4, (q15_t)0x642b, (q15_t)0x34cd, + (q15_t)0x6435, (q15_t)0x34c6, (q15_t)0x643f, (q15_t)0x34bf, (q15_t)0x644a, (q15_t)0x34b8, (q15_t)0x6454, (q15_t)0x34b1, + (q15_t)0x645e, (q15_t)0x34aa, (q15_t)0x6469, (q15_t)0x34a2, (q15_t)0x6473, (q15_t)0x349b, (q15_t)0x647d, (q15_t)0x3494, + (q15_t)0x6488, (q15_t)0x348d, (q15_t)0x6492, (q15_t)0x3486, (q15_t)0x649c, (q15_t)0x347f, (q15_t)0x64a7, (q15_t)0x3477, + (q15_t)0x64b1, (q15_t)0x3470, (q15_t)0x64bb, (q15_t)0x3469, (q15_t)0x64c5, (q15_t)0x3462, (q15_t)0x64d0, (q15_t)0x345b, + (q15_t)0x64da, (q15_t)0x3453, (q15_t)0x64e4, (q15_t)0x344c, (q15_t)0x64ef, (q15_t)0x3445, (q15_t)0x64f9, (q15_t)0x343e, + (q15_t)0x6503, (q15_t)0x3436, (q15_t)0x650d, (q15_t)0x342f, (q15_t)0x6518, (q15_t)0x3428, (q15_t)0x6522, (q15_t)0x3420, + (q15_t)0x652c, (q15_t)0x3419, (q15_t)0x6536, (q15_t)0x3412, (q15_t)0x6541, (q15_t)0x340b, (q15_t)0x654b, (q15_t)0x3403, + (q15_t)0x6555, (q15_t)0x33fc, (q15_t)0x655f, (q15_t)0x33f5, (q15_t)0x6569, (q15_t)0x33ed, (q15_t)0x6574, (q15_t)0x33e6, + (q15_t)0x657e, (q15_t)0x33df, (q15_t)0x6588, (q15_t)0x33d7, (q15_t)0x6592, (q15_t)0x33d0, (q15_t)0x659c, (q15_t)0x33c8, + (q15_t)0x65a6, (q15_t)0x33c1, (q15_t)0x65b1, (q15_t)0x33ba, (q15_t)0x65bb, (q15_t)0x33b2, (q15_t)0x65c5, (q15_t)0x33ab, + (q15_t)0x65cf, (q15_t)0x33a3, (q15_t)0x65d9, (q15_t)0x339c, (q15_t)0x65e3, (q15_t)0x3395, (q15_t)0x65ed, (q15_t)0x338d, + (q15_t)0x65f8, (q15_t)0x3386, (q15_t)0x6602, (q15_t)0x337e, (q15_t)0x660c, (q15_t)0x3377, (q15_t)0x6616, (q15_t)0x336f, + (q15_t)0x6620, (q15_t)0x3368, (q15_t)0x662a, (q15_t)0x3360, (q15_t)0x6634, (q15_t)0x3359, (q15_t)0x663e, (q15_t)0x3351, + (q15_t)0x6648, (q15_t)0x334a, (q15_t)0x6652, (q15_t)0x3342, (q15_t)0x665c, (q15_t)0x333b, (q15_t)0x6666, (q15_t)0x3333, + (q15_t)0x6671, (q15_t)0x332c, (q15_t)0x667b, (q15_t)0x3324, (q15_t)0x6685, (q15_t)0x331d, (q15_t)0x668f, (q15_t)0x3315, + (q15_t)0x6699, (q15_t)0x330d, (q15_t)0x66a3, (q15_t)0x3306, (q15_t)0x66ad, (q15_t)0x32fe, (q15_t)0x66b7, (q15_t)0x32f7, + (q15_t)0x66c1, (q15_t)0x32ef, (q15_t)0x66cb, (q15_t)0x32e7, (q15_t)0x66d5, (q15_t)0x32e0, (q15_t)0x66df, (q15_t)0x32d8, + (q15_t)0x66e9, (q15_t)0x32d0, (q15_t)0x66f3, (q15_t)0x32c9, (q15_t)0x66fd, (q15_t)0x32c1, (q15_t)0x6707, (q15_t)0x32ba, + (q15_t)0x6711, (q15_t)0x32b2, (q15_t)0x671a, (q15_t)0x32aa, (q15_t)0x6724, (q15_t)0x32a3, (q15_t)0x672e, (q15_t)0x329b, + (q15_t)0x6738, (q15_t)0x3293, (q15_t)0x6742, (q15_t)0x328b, (q15_t)0x674c, (q15_t)0x3284, (q15_t)0x6756, (q15_t)0x327c, + (q15_t)0x6760, (q15_t)0x3274, (q15_t)0x676a, (q15_t)0x326d, (q15_t)0x6774, (q15_t)0x3265, (q15_t)0x677e, (q15_t)0x325d, + (q15_t)0x6788, (q15_t)0x3255, (q15_t)0x6791, (q15_t)0x324e, (q15_t)0x679b, (q15_t)0x3246, (q15_t)0x67a5, (q15_t)0x323e, + (q15_t)0x67af, (q15_t)0x3236, (q15_t)0x67b9, (q15_t)0x322e, (q15_t)0x67c3, (q15_t)0x3227, (q15_t)0x67cd, (q15_t)0x321f, + (q15_t)0x67d6, (q15_t)0x3217, (q15_t)0x67e0, (q15_t)0x320f, (q15_t)0x67ea, (q15_t)0x3207, (q15_t)0x67f4, (q15_t)0x31ff, + (q15_t)0x67fe, (q15_t)0x31f8, (q15_t)0x6808, (q15_t)0x31f0, (q15_t)0x6811, (q15_t)0x31e8, (q15_t)0x681b, (q15_t)0x31e0, + (q15_t)0x6825, (q15_t)0x31d8, (q15_t)0x682f, (q15_t)0x31d0, (q15_t)0x6838, (q15_t)0x31c8, (q15_t)0x6842, (q15_t)0x31c0, + (q15_t)0x684c, (q15_t)0x31b9, (q15_t)0x6856, (q15_t)0x31b1, (q15_t)0x6860, (q15_t)0x31a9, (q15_t)0x6869, (q15_t)0x31a1, + (q15_t)0x6873, (q15_t)0x3199, (q15_t)0x687d, (q15_t)0x3191, (q15_t)0x6886, (q15_t)0x3189, (q15_t)0x6890, (q15_t)0x3181, + (q15_t)0x689a, (q15_t)0x3179, (q15_t)0x68a4, (q15_t)0x3171, (q15_t)0x68ad, (q15_t)0x3169, (q15_t)0x68b7, (q15_t)0x3161, + (q15_t)0x68c1, (q15_t)0x3159, (q15_t)0x68ca, (q15_t)0x3151, (q15_t)0x68d4, (q15_t)0x3149, (q15_t)0x68de, (q15_t)0x3141, + (q15_t)0x68e7, (q15_t)0x3139, (q15_t)0x68f1, (q15_t)0x3131, (q15_t)0x68fb, (q15_t)0x3129, (q15_t)0x6904, (q15_t)0x3121, + (q15_t)0x690e, (q15_t)0x3119, (q15_t)0x6918, (q15_t)0x3111, (q15_t)0x6921, (q15_t)0x3109, (q15_t)0x692b, (q15_t)0x3101, + (q15_t)0x6935, (q15_t)0x30f9, (q15_t)0x693e, (q15_t)0x30f0, (q15_t)0x6948, (q15_t)0x30e8, (q15_t)0x6951, (q15_t)0x30e0, + (q15_t)0x695b, (q15_t)0x30d8, (q15_t)0x6965, (q15_t)0x30d0, (q15_t)0x696e, (q15_t)0x30c8, (q15_t)0x6978, (q15_t)0x30c0, + (q15_t)0x6981, (q15_t)0x30b8, (q15_t)0x698b, (q15_t)0x30af, (q15_t)0x6994, (q15_t)0x30a7, (q15_t)0x699e, (q15_t)0x309f, + (q15_t)0x69a7, (q15_t)0x3097, (q15_t)0x69b1, (q15_t)0x308f, (q15_t)0x69bb, (q15_t)0x3087, (q15_t)0x69c4, (q15_t)0x307e, + (q15_t)0x69ce, (q15_t)0x3076, (q15_t)0x69d7, (q15_t)0x306e, (q15_t)0x69e1, (q15_t)0x3066, (q15_t)0x69ea, (q15_t)0x305d, + (q15_t)0x69f4, (q15_t)0x3055, (q15_t)0x69fd, (q15_t)0x304d, (q15_t)0x6a07, (q15_t)0x3045, (q15_t)0x6a10, (q15_t)0x303c, + (q15_t)0x6a1a, (q15_t)0x3034, (q15_t)0x6a23, (q15_t)0x302c, (q15_t)0x6a2c, (q15_t)0x3024, (q15_t)0x6a36, (q15_t)0x301b, + (q15_t)0x6a3f, (q15_t)0x3013, (q15_t)0x6a49, (q15_t)0x300b, (q15_t)0x6a52, (q15_t)0x3002, (q15_t)0x6a5c, (q15_t)0x2ffa, + (q15_t)0x6a65, (q15_t)0x2ff2, (q15_t)0x6a6e, (q15_t)0x2fea, (q15_t)0x6a78, (q15_t)0x2fe1, (q15_t)0x6a81, (q15_t)0x2fd9, + (q15_t)0x6a8b, (q15_t)0x2fd0, (q15_t)0x6a94, (q15_t)0x2fc8, (q15_t)0x6a9d, (q15_t)0x2fc0, (q15_t)0x6aa7, (q15_t)0x2fb7, + (q15_t)0x6ab0, (q15_t)0x2faf, (q15_t)0x6ab9, (q15_t)0x2fa7, (q15_t)0x6ac3, (q15_t)0x2f9e, (q15_t)0x6acc, (q15_t)0x2f96, + (q15_t)0x6ad6, (q15_t)0x2f8d, (q15_t)0x6adf, (q15_t)0x2f85, (q15_t)0x6ae8, (q15_t)0x2f7d, (q15_t)0x6af2, (q15_t)0x2f74, + (q15_t)0x6afb, (q15_t)0x2f6c, (q15_t)0x6b04, (q15_t)0x2f63, (q15_t)0x6b0d, (q15_t)0x2f5b, (q15_t)0x6b17, (q15_t)0x2f52, + (q15_t)0x6b20, (q15_t)0x2f4a, (q15_t)0x6b29, (q15_t)0x2f41, (q15_t)0x6b33, (q15_t)0x2f39, (q15_t)0x6b3c, (q15_t)0x2f30, + (q15_t)0x6b45, (q15_t)0x2f28, (q15_t)0x6b4e, (q15_t)0x2f20, (q15_t)0x6b58, (q15_t)0x2f17, (q15_t)0x6b61, (q15_t)0x2f0e, + (q15_t)0x6b6a, (q15_t)0x2f06, (q15_t)0x6b73, (q15_t)0x2efd, (q15_t)0x6b7d, (q15_t)0x2ef5, (q15_t)0x6b86, (q15_t)0x2eec, + (q15_t)0x6b8f, (q15_t)0x2ee4, (q15_t)0x6b98, (q15_t)0x2edb, (q15_t)0x6ba1, (q15_t)0x2ed3, (q15_t)0x6bab, (q15_t)0x2eca, + (q15_t)0x6bb4, (q15_t)0x2ec2, (q15_t)0x6bbd, (q15_t)0x2eb9, (q15_t)0x6bc6, (q15_t)0x2eb0, (q15_t)0x6bcf, (q15_t)0x2ea8, + (q15_t)0x6bd8, (q15_t)0x2e9f, (q15_t)0x6be2, (q15_t)0x2e97, (q15_t)0x6beb, (q15_t)0x2e8e, (q15_t)0x6bf4, (q15_t)0x2e85, + (q15_t)0x6bfd, (q15_t)0x2e7d, (q15_t)0x6c06, (q15_t)0x2e74, (q15_t)0x6c0f, (q15_t)0x2e6b, (q15_t)0x6c18, (q15_t)0x2e63, + (q15_t)0x6c21, (q15_t)0x2e5a, (q15_t)0x6c2b, (q15_t)0x2e51, (q15_t)0x6c34, (q15_t)0x2e49, (q15_t)0x6c3d, (q15_t)0x2e40, + (q15_t)0x6c46, (q15_t)0x2e37, (q15_t)0x6c4f, (q15_t)0x2e2f, (q15_t)0x6c58, (q15_t)0x2e26, (q15_t)0x6c61, (q15_t)0x2e1d, + (q15_t)0x6c6a, (q15_t)0x2e15, (q15_t)0x6c73, (q15_t)0x2e0c, (q15_t)0x6c7c, (q15_t)0x2e03, (q15_t)0x6c85, (q15_t)0x2dfa, + (q15_t)0x6c8e, (q15_t)0x2df2, (q15_t)0x6c97, (q15_t)0x2de9, (q15_t)0x6ca0, (q15_t)0x2de0, (q15_t)0x6ca9, (q15_t)0x2dd7, + (q15_t)0x6cb2, (q15_t)0x2dcf, (q15_t)0x6cbb, (q15_t)0x2dc6, (q15_t)0x6cc4, (q15_t)0x2dbd, (q15_t)0x6ccd, (q15_t)0x2db4, + (q15_t)0x6cd6, (q15_t)0x2dab, (q15_t)0x6cdf, (q15_t)0x2da3, (q15_t)0x6ce8, (q15_t)0x2d9a, (q15_t)0x6cf1, (q15_t)0x2d91, + (q15_t)0x6cfa, (q15_t)0x2d88, (q15_t)0x6d03, (q15_t)0x2d7f, (q15_t)0x6d0c, (q15_t)0x2d76, (q15_t)0x6d15, (q15_t)0x2d6e, + (q15_t)0x6d1e, (q15_t)0x2d65, (q15_t)0x6d27, (q15_t)0x2d5c, (q15_t)0x6d2f, (q15_t)0x2d53, (q15_t)0x6d38, (q15_t)0x2d4a, + (q15_t)0x6d41, (q15_t)0x2d41, (q15_t)0x6d4a, (q15_t)0x2d38, (q15_t)0x6d53, (q15_t)0x2d2f, (q15_t)0x6d5c, (q15_t)0x2d27, + (q15_t)0x6d65, (q15_t)0x2d1e, (q15_t)0x6d6e, (q15_t)0x2d15, (q15_t)0x6d76, (q15_t)0x2d0c, (q15_t)0x6d7f, (q15_t)0x2d03, + (q15_t)0x6d88, (q15_t)0x2cfa, (q15_t)0x6d91, (q15_t)0x2cf1, (q15_t)0x6d9a, (q15_t)0x2ce8, (q15_t)0x6da3, (q15_t)0x2cdf, + (q15_t)0x6dab, (q15_t)0x2cd6, (q15_t)0x6db4, (q15_t)0x2ccd, (q15_t)0x6dbd, (q15_t)0x2cc4, (q15_t)0x6dc6, (q15_t)0x2cbb, + (q15_t)0x6dcf, (q15_t)0x2cb2, (q15_t)0x6dd7, (q15_t)0x2ca9, (q15_t)0x6de0, (q15_t)0x2ca0, (q15_t)0x6de9, (q15_t)0x2c97, + (q15_t)0x6df2, (q15_t)0x2c8e, (q15_t)0x6dfa, (q15_t)0x2c85, (q15_t)0x6e03, (q15_t)0x2c7c, (q15_t)0x6e0c, (q15_t)0x2c73, + (q15_t)0x6e15, (q15_t)0x2c6a, (q15_t)0x6e1d, (q15_t)0x2c61, (q15_t)0x6e26, (q15_t)0x2c58, (q15_t)0x6e2f, (q15_t)0x2c4f, + (q15_t)0x6e37, (q15_t)0x2c46, (q15_t)0x6e40, (q15_t)0x2c3d, (q15_t)0x6e49, (q15_t)0x2c34, (q15_t)0x6e51, (q15_t)0x2c2b, + (q15_t)0x6e5a, (q15_t)0x2c21, (q15_t)0x6e63, (q15_t)0x2c18, (q15_t)0x6e6b, (q15_t)0x2c0f, (q15_t)0x6e74, (q15_t)0x2c06, + (q15_t)0x6e7d, (q15_t)0x2bfd, (q15_t)0x6e85, (q15_t)0x2bf4, (q15_t)0x6e8e, (q15_t)0x2beb, (q15_t)0x6e97, (q15_t)0x2be2, + (q15_t)0x6e9f, (q15_t)0x2bd8, (q15_t)0x6ea8, (q15_t)0x2bcf, (q15_t)0x6eb0, (q15_t)0x2bc6, (q15_t)0x6eb9, (q15_t)0x2bbd, + (q15_t)0x6ec2, (q15_t)0x2bb4, (q15_t)0x6eca, (q15_t)0x2bab, (q15_t)0x6ed3, (q15_t)0x2ba1, (q15_t)0x6edb, (q15_t)0x2b98, + (q15_t)0x6ee4, (q15_t)0x2b8f, (q15_t)0x6eec, (q15_t)0x2b86, (q15_t)0x6ef5, (q15_t)0x2b7d, (q15_t)0x6efd, (q15_t)0x2b73, + (q15_t)0x6f06, (q15_t)0x2b6a, (q15_t)0x6f0e, (q15_t)0x2b61, (q15_t)0x6f17, (q15_t)0x2b58, (q15_t)0x6f20, (q15_t)0x2b4e, + (q15_t)0x6f28, (q15_t)0x2b45, (q15_t)0x6f30, (q15_t)0x2b3c, (q15_t)0x6f39, (q15_t)0x2b33, (q15_t)0x6f41, (q15_t)0x2b29, + (q15_t)0x6f4a, (q15_t)0x2b20, (q15_t)0x6f52, (q15_t)0x2b17, (q15_t)0x6f5b, (q15_t)0x2b0d, (q15_t)0x6f63, (q15_t)0x2b04, + (q15_t)0x6f6c, (q15_t)0x2afb, (q15_t)0x6f74, (q15_t)0x2af2, (q15_t)0x6f7d, (q15_t)0x2ae8, (q15_t)0x6f85, (q15_t)0x2adf, + (q15_t)0x6f8d, (q15_t)0x2ad6, (q15_t)0x6f96, (q15_t)0x2acc, (q15_t)0x6f9e, (q15_t)0x2ac3, (q15_t)0x6fa7, (q15_t)0x2ab9, + (q15_t)0x6faf, (q15_t)0x2ab0, (q15_t)0x6fb7, (q15_t)0x2aa7, (q15_t)0x6fc0, (q15_t)0x2a9d, (q15_t)0x6fc8, (q15_t)0x2a94, + (q15_t)0x6fd0, (q15_t)0x2a8b, (q15_t)0x6fd9, (q15_t)0x2a81, (q15_t)0x6fe1, (q15_t)0x2a78, (q15_t)0x6fea, (q15_t)0x2a6e, + (q15_t)0x6ff2, (q15_t)0x2a65, (q15_t)0x6ffa, (q15_t)0x2a5c, (q15_t)0x7002, (q15_t)0x2a52, (q15_t)0x700b, (q15_t)0x2a49, + (q15_t)0x7013, (q15_t)0x2a3f, (q15_t)0x701b, (q15_t)0x2a36, (q15_t)0x7024, (q15_t)0x2a2c, (q15_t)0x702c, (q15_t)0x2a23, + (q15_t)0x7034, (q15_t)0x2a1a, (q15_t)0x703c, (q15_t)0x2a10, (q15_t)0x7045, (q15_t)0x2a07, (q15_t)0x704d, (q15_t)0x29fd, + (q15_t)0x7055, (q15_t)0x29f4, (q15_t)0x705d, (q15_t)0x29ea, (q15_t)0x7066, (q15_t)0x29e1, (q15_t)0x706e, (q15_t)0x29d7, + (q15_t)0x7076, (q15_t)0x29ce, (q15_t)0x707e, (q15_t)0x29c4, (q15_t)0x7087, (q15_t)0x29bb, (q15_t)0x708f, (q15_t)0x29b1, + (q15_t)0x7097, (q15_t)0x29a7, (q15_t)0x709f, (q15_t)0x299e, (q15_t)0x70a7, (q15_t)0x2994, (q15_t)0x70af, (q15_t)0x298b, + (q15_t)0x70b8, (q15_t)0x2981, (q15_t)0x70c0, (q15_t)0x2978, (q15_t)0x70c8, (q15_t)0x296e, (q15_t)0x70d0, (q15_t)0x2965, + (q15_t)0x70d8, (q15_t)0x295b, (q15_t)0x70e0, (q15_t)0x2951, (q15_t)0x70e8, (q15_t)0x2948, (q15_t)0x70f0, (q15_t)0x293e, + (q15_t)0x70f9, (q15_t)0x2935, (q15_t)0x7101, (q15_t)0x292b, (q15_t)0x7109, (q15_t)0x2921, (q15_t)0x7111, (q15_t)0x2918, + (q15_t)0x7119, (q15_t)0x290e, (q15_t)0x7121, (q15_t)0x2904, (q15_t)0x7129, (q15_t)0x28fb, (q15_t)0x7131, (q15_t)0x28f1, + (q15_t)0x7139, (q15_t)0x28e7, (q15_t)0x7141, (q15_t)0x28de, (q15_t)0x7149, (q15_t)0x28d4, (q15_t)0x7151, (q15_t)0x28ca, + (q15_t)0x7159, (q15_t)0x28c1, (q15_t)0x7161, (q15_t)0x28b7, (q15_t)0x7169, (q15_t)0x28ad, (q15_t)0x7171, (q15_t)0x28a4, + (q15_t)0x7179, (q15_t)0x289a, (q15_t)0x7181, (q15_t)0x2890, (q15_t)0x7189, (q15_t)0x2886, (q15_t)0x7191, (q15_t)0x287d, + (q15_t)0x7199, (q15_t)0x2873, (q15_t)0x71a1, (q15_t)0x2869, (q15_t)0x71a9, (q15_t)0x2860, (q15_t)0x71b1, (q15_t)0x2856, + (q15_t)0x71b9, (q15_t)0x284c, (q15_t)0x71c0, (q15_t)0x2842, (q15_t)0x71c8, (q15_t)0x2838, (q15_t)0x71d0, (q15_t)0x282f, + (q15_t)0x71d8, (q15_t)0x2825, (q15_t)0x71e0, (q15_t)0x281b, (q15_t)0x71e8, (q15_t)0x2811, (q15_t)0x71f0, (q15_t)0x2808, + (q15_t)0x71f8, (q15_t)0x27fe, (q15_t)0x71ff, (q15_t)0x27f4, (q15_t)0x7207, (q15_t)0x27ea, (q15_t)0x720f, (q15_t)0x27e0, + (q15_t)0x7217, (q15_t)0x27d6, (q15_t)0x721f, (q15_t)0x27cd, (q15_t)0x7227, (q15_t)0x27c3, (q15_t)0x722e, (q15_t)0x27b9, + (q15_t)0x7236, (q15_t)0x27af, (q15_t)0x723e, (q15_t)0x27a5, (q15_t)0x7246, (q15_t)0x279b, (q15_t)0x724e, (q15_t)0x2791, + (q15_t)0x7255, (q15_t)0x2788, (q15_t)0x725d, (q15_t)0x277e, (q15_t)0x7265, (q15_t)0x2774, (q15_t)0x726d, (q15_t)0x276a, + (q15_t)0x7274, (q15_t)0x2760, (q15_t)0x727c, (q15_t)0x2756, (q15_t)0x7284, (q15_t)0x274c, (q15_t)0x728b, (q15_t)0x2742, + (q15_t)0x7293, (q15_t)0x2738, (q15_t)0x729b, (q15_t)0x272e, (q15_t)0x72a3, (q15_t)0x2724, (q15_t)0x72aa, (q15_t)0x271a, + (q15_t)0x72b2, (q15_t)0x2711, (q15_t)0x72ba, (q15_t)0x2707, (q15_t)0x72c1, (q15_t)0x26fd, (q15_t)0x72c9, (q15_t)0x26f3, + (q15_t)0x72d0, (q15_t)0x26e9, (q15_t)0x72d8, (q15_t)0x26df, (q15_t)0x72e0, (q15_t)0x26d5, (q15_t)0x72e7, (q15_t)0x26cb, + (q15_t)0x72ef, (q15_t)0x26c1, (q15_t)0x72f7, (q15_t)0x26b7, (q15_t)0x72fe, (q15_t)0x26ad, (q15_t)0x7306, (q15_t)0x26a3, + (q15_t)0x730d, (q15_t)0x2699, (q15_t)0x7315, (q15_t)0x268f, (q15_t)0x731d, (q15_t)0x2685, (q15_t)0x7324, (q15_t)0x267b, + (q15_t)0x732c, (q15_t)0x2671, (q15_t)0x7333, (q15_t)0x2666, (q15_t)0x733b, (q15_t)0x265c, (q15_t)0x7342, (q15_t)0x2652, + (q15_t)0x734a, (q15_t)0x2648, (q15_t)0x7351, (q15_t)0x263e, (q15_t)0x7359, (q15_t)0x2634, (q15_t)0x7360, (q15_t)0x262a, + (q15_t)0x7368, (q15_t)0x2620, (q15_t)0x736f, (q15_t)0x2616, (q15_t)0x7377, (q15_t)0x260c, (q15_t)0x737e, (q15_t)0x2602, + (q15_t)0x7386, (q15_t)0x25f8, (q15_t)0x738d, (q15_t)0x25ed, (q15_t)0x7395, (q15_t)0x25e3, (q15_t)0x739c, (q15_t)0x25d9, + (q15_t)0x73a3, (q15_t)0x25cf, (q15_t)0x73ab, (q15_t)0x25c5, (q15_t)0x73b2, (q15_t)0x25bb, (q15_t)0x73ba, (q15_t)0x25b1, + (q15_t)0x73c1, (q15_t)0x25a6, (q15_t)0x73c8, (q15_t)0x259c, (q15_t)0x73d0, (q15_t)0x2592, (q15_t)0x73d7, (q15_t)0x2588, + (q15_t)0x73df, (q15_t)0x257e, (q15_t)0x73e6, (q15_t)0x2574, (q15_t)0x73ed, (q15_t)0x2569, (q15_t)0x73f5, (q15_t)0x255f, + (q15_t)0x73fc, (q15_t)0x2555, (q15_t)0x7403, (q15_t)0x254b, (q15_t)0x740b, (q15_t)0x2541, (q15_t)0x7412, (q15_t)0x2536, + (q15_t)0x7419, (q15_t)0x252c, (q15_t)0x7420, (q15_t)0x2522, (q15_t)0x7428, (q15_t)0x2518, (q15_t)0x742f, (q15_t)0x250d, + (q15_t)0x7436, (q15_t)0x2503, (q15_t)0x743e, (q15_t)0x24f9, (q15_t)0x7445, (q15_t)0x24ef, (q15_t)0x744c, (q15_t)0x24e4, + (q15_t)0x7453, (q15_t)0x24da, (q15_t)0x745b, (q15_t)0x24d0, (q15_t)0x7462, (q15_t)0x24c5, (q15_t)0x7469, (q15_t)0x24bb, + (q15_t)0x7470, (q15_t)0x24b1, (q15_t)0x7477, (q15_t)0x24a7, (q15_t)0x747f, (q15_t)0x249c, (q15_t)0x7486, (q15_t)0x2492, + (q15_t)0x748d, (q15_t)0x2488, (q15_t)0x7494, (q15_t)0x247d, (q15_t)0x749b, (q15_t)0x2473, (q15_t)0x74a2, (q15_t)0x2469, + (q15_t)0x74aa, (q15_t)0x245e, (q15_t)0x74b1, (q15_t)0x2454, (q15_t)0x74b8, (q15_t)0x244a, (q15_t)0x74bf, (q15_t)0x243f, + (q15_t)0x74c6, (q15_t)0x2435, (q15_t)0x74cd, (q15_t)0x242b, (q15_t)0x74d4, (q15_t)0x2420, (q15_t)0x74db, (q15_t)0x2416, + (q15_t)0x74e2, (q15_t)0x240b, (q15_t)0x74ea, (q15_t)0x2401, (q15_t)0x74f1, (q15_t)0x23f7, (q15_t)0x74f8, (q15_t)0x23ec, + (q15_t)0x74ff, (q15_t)0x23e2, (q15_t)0x7506, (q15_t)0x23d7, (q15_t)0x750d, (q15_t)0x23cd, (q15_t)0x7514, (q15_t)0x23c3, + (q15_t)0x751b, (q15_t)0x23b8, (q15_t)0x7522, (q15_t)0x23ae, (q15_t)0x7529, (q15_t)0x23a3, (q15_t)0x7530, (q15_t)0x2399, + (q15_t)0x7537, (q15_t)0x238e, (q15_t)0x753e, (q15_t)0x2384, (q15_t)0x7545, (q15_t)0x237a, (q15_t)0x754c, (q15_t)0x236f, + (q15_t)0x7553, (q15_t)0x2365, (q15_t)0x755a, (q15_t)0x235a, (q15_t)0x7561, (q15_t)0x2350, (q15_t)0x7567, (q15_t)0x2345, + (q15_t)0x756e, (q15_t)0x233b, (q15_t)0x7575, (q15_t)0x2330, (q15_t)0x757c, (q15_t)0x2326, (q15_t)0x7583, (q15_t)0x231b, + (q15_t)0x758a, (q15_t)0x2311, (q15_t)0x7591, (q15_t)0x2306, (q15_t)0x7598, (q15_t)0x22fc, (q15_t)0x759f, (q15_t)0x22f1, + (q15_t)0x75a5, (q15_t)0x22e7, (q15_t)0x75ac, (q15_t)0x22dc, (q15_t)0x75b3, (q15_t)0x22d2, (q15_t)0x75ba, (q15_t)0x22c7, + (q15_t)0x75c1, (q15_t)0x22bc, (q15_t)0x75c8, (q15_t)0x22b2, (q15_t)0x75ce, (q15_t)0x22a7, (q15_t)0x75d5, (q15_t)0x229d, + (q15_t)0x75dc, (q15_t)0x2292, (q15_t)0x75e3, (q15_t)0x2288, (q15_t)0x75ea, (q15_t)0x227d, (q15_t)0x75f0, (q15_t)0x2272, + (q15_t)0x75f7, (q15_t)0x2268, (q15_t)0x75fe, (q15_t)0x225d, (q15_t)0x7605, (q15_t)0x2253, (q15_t)0x760b, (q15_t)0x2248, + (q15_t)0x7612, (q15_t)0x223d, (q15_t)0x7619, (q15_t)0x2233, (q15_t)0x7620, (q15_t)0x2228, (q15_t)0x7626, (q15_t)0x221e, + (q15_t)0x762d, (q15_t)0x2213, (q15_t)0x7634, (q15_t)0x2208, (q15_t)0x763a, (q15_t)0x21fe, (q15_t)0x7641, (q15_t)0x21f3, + (q15_t)0x7648, (q15_t)0x21e8, (q15_t)0x764e, (q15_t)0x21de, (q15_t)0x7655, (q15_t)0x21d3, (q15_t)0x765c, (q15_t)0x21c8, + (q15_t)0x7662, (q15_t)0x21be, (q15_t)0x7669, (q15_t)0x21b3, (q15_t)0x766f, (q15_t)0x21a8, (q15_t)0x7676, (q15_t)0x219e, + (q15_t)0x767d, (q15_t)0x2193, (q15_t)0x7683, (q15_t)0x2188, (q15_t)0x768a, (q15_t)0x217d, (q15_t)0x7690, (q15_t)0x2173, + (q15_t)0x7697, (q15_t)0x2168, (q15_t)0x769d, (q15_t)0x215d, (q15_t)0x76a4, (q15_t)0x2153, (q15_t)0x76ab, (q15_t)0x2148, + (q15_t)0x76b1, (q15_t)0x213d, (q15_t)0x76b8, (q15_t)0x2132, (q15_t)0x76be, (q15_t)0x2128, (q15_t)0x76c5, (q15_t)0x211d, + (q15_t)0x76cb, (q15_t)0x2112, (q15_t)0x76d2, (q15_t)0x2107, (q15_t)0x76d8, (q15_t)0x20fd, (q15_t)0x76df, (q15_t)0x20f2, + (q15_t)0x76e5, (q15_t)0x20e7, (q15_t)0x76eb, (q15_t)0x20dc, (q15_t)0x76f2, (q15_t)0x20d1, (q15_t)0x76f8, (q15_t)0x20c7, + (q15_t)0x76ff, (q15_t)0x20bc, (q15_t)0x7705, (q15_t)0x20b1, (q15_t)0x770c, (q15_t)0x20a6, (q15_t)0x7712, (q15_t)0x209b, + (q15_t)0x7718, (q15_t)0x2091, (q15_t)0x771f, (q15_t)0x2086, (q15_t)0x7725, (q15_t)0x207b, (q15_t)0x772c, (q15_t)0x2070, + (q15_t)0x7732, (q15_t)0x2065, (q15_t)0x7738, (q15_t)0x205b, (q15_t)0x773f, (q15_t)0x2050, (q15_t)0x7745, (q15_t)0x2045, + (q15_t)0x774b, (q15_t)0x203a, (q15_t)0x7752, (q15_t)0x202f, (q15_t)0x7758, (q15_t)0x2024, (q15_t)0x775e, (q15_t)0x2019, + (q15_t)0x7765, (q15_t)0x200f, (q15_t)0x776b, (q15_t)0x2004, (q15_t)0x7771, (q15_t)0x1ff9, (q15_t)0x7777, (q15_t)0x1fee, + (q15_t)0x777e, (q15_t)0x1fe3, (q15_t)0x7784, (q15_t)0x1fd8, (q15_t)0x778a, (q15_t)0x1fcd, (q15_t)0x7790, (q15_t)0x1fc2, + (q15_t)0x7797, (q15_t)0x1fb7, (q15_t)0x779d, (q15_t)0x1fac, (q15_t)0x77a3, (q15_t)0x1fa2, (q15_t)0x77a9, (q15_t)0x1f97, + (q15_t)0x77b0, (q15_t)0x1f8c, (q15_t)0x77b6, (q15_t)0x1f81, (q15_t)0x77bc, (q15_t)0x1f76, (q15_t)0x77c2, (q15_t)0x1f6b, + (q15_t)0x77c8, (q15_t)0x1f60, (q15_t)0x77ce, (q15_t)0x1f55, (q15_t)0x77d5, (q15_t)0x1f4a, (q15_t)0x77db, (q15_t)0x1f3f, + (q15_t)0x77e1, (q15_t)0x1f34, (q15_t)0x77e7, (q15_t)0x1f29, (q15_t)0x77ed, (q15_t)0x1f1e, (q15_t)0x77f3, (q15_t)0x1f13, + (q15_t)0x77f9, (q15_t)0x1f08, (q15_t)0x77ff, (q15_t)0x1efd, (q15_t)0x7805, (q15_t)0x1ef2, (q15_t)0x780b, (q15_t)0x1ee7, + (q15_t)0x7812, (q15_t)0x1edc, (q15_t)0x7818, (q15_t)0x1ed1, (q15_t)0x781e, (q15_t)0x1ec6, (q15_t)0x7824, (q15_t)0x1ebb, + (q15_t)0x782a, (q15_t)0x1eb0, (q15_t)0x7830, (q15_t)0x1ea5, (q15_t)0x7836, (q15_t)0x1e9a, (q15_t)0x783c, (q15_t)0x1e8f, + (q15_t)0x7842, (q15_t)0x1e84, (q15_t)0x7848, (q15_t)0x1e79, (q15_t)0x784e, (q15_t)0x1e6e, (q15_t)0x7854, (q15_t)0x1e63, + (q15_t)0x785a, (q15_t)0x1e58, (q15_t)0x7860, (q15_t)0x1e4d, (q15_t)0x7866, (q15_t)0x1e42, (q15_t)0x786b, (q15_t)0x1e36, + (q15_t)0x7871, (q15_t)0x1e2b, (q15_t)0x7877, (q15_t)0x1e20, (q15_t)0x787d, (q15_t)0x1e15, (q15_t)0x7883, (q15_t)0x1e0a, + (q15_t)0x7889, (q15_t)0x1dff, (q15_t)0x788f, (q15_t)0x1df4, (q15_t)0x7895, (q15_t)0x1de9, (q15_t)0x789b, (q15_t)0x1dde, + (q15_t)0x78a1, (q15_t)0x1dd3, (q15_t)0x78a6, (q15_t)0x1dc7, (q15_t)0x78ac, (q15_t)0x1dbc, (q15_t)0x78b2, (q15_t)0x1db1, + (q15_t)0x78b8, (q15_t)0x1da6, (q15_t)0x78be, (q15_t)0x1d9b, (q15_t)0x78c3, (q15_t)0x1d90, (q15_t)0x78c9, (q15_t)0x1d85, + (q15_t)0x78cf, (q15_t)0x1d79, (q15_t)0x78d5, (q15_t)0x1d6e, (q15_t)0x78db, (q15_t)0x1d63, (q15_t)0x78e0, (q15_t)0x1d58, + (q15_t)0x78e6, (q15_t)0x1d4d, (q15_t)0x78ec, (q15_t)0x1d42, (q15_t)0x78f2, (q15_t)0x1d36, (q15_t)0x78f7, (q15_t)0x1d2b, + (q15_t)0x78fd, (q15_t)0x1d20, (q15_t)0x7903, (q15_t)0x1d15, (q15_t)0x7909, (q15_t)0x1d0a, (q15_t)0x790e, (q15_t)0x1cff, + (q15_t)0x7914, (q15_t)0x1cf3, (q15_t)0x791a, (q15_t)0x1ce8, (q15_t)0x791f, (q15_t)0x1cdd, (q15_t)0x7925, (q15_t)0x1cd2, + (q15_t)0x792b, (q15_t)0x1cc6, (q15_t)0x7930, (q15_t)0x1cbb, (q15_t)0x7936, (q15_t)0x1cb0, (q15_t)0x793b, (q15_t)0x1ca5, + (q15_t)0x7941, (q15_t)0x1c99, (q15_t)0x7947, (q15_t)0x1c8e, (q15_t)0x794c, (q15_t)0x1c83, (q15_t)0x7952, (q15_t)0x1c78, + (q15_t)0x7958, (q15_t)0x1c6c, (q15_t)0x795d, (q15_t)0x1c61, (q15_t)0x7963, (q15_t)0x1c56, (q15_t)0x7968, (q15_t)0x1c4b, + (q15_t)0x796e, (q15_t)0x1c3f, (q15_t)0x7973, (q15_t)0x1c34, (q15_t)0x7979, (q15_t)0x1c29, (q15_t)0x797e, (q15_t)0x1c1e, + (q15_t)0x7984, (q15_t)0x1c12, (q15_t)0x7989, (q15_t)0x1c07, (q15_t)0x798f, (q15_t)0x1bfc, (q15_t)0x7994, (q15_t)0x1bf0, + (q15_t)0x799a, (q15_t)0x1be5, (q15_t)0x799f, (q15_t)0x1bda, (q15_t)0x79a5, (q15_t)0x1bce, (q15_t)0x79aa, (q15_t)0x1bc3, + (q15_t)0x79b0, (q15_t)0x1bb8, (q15_t)0x79b5, (q15_t)0x1bac, (q15_t)0x79bb, (q15_t)0x1ba1, (q15_t)0x79c0, (q15_t)0x1b96, + (q15_t)0x79c5, (q15_t)0x1b8a, (q15_t)0x79cb, (q15_t)0x1b7f, (q15_t)0x79d0, (q15_t)0x1b74, (q15_t)0x79d6, (q15_t)0x1b68, + (q15_t)0x79db, (q15_t)0x1b5d, (q15_t)0x79e0, (q15_t)0x1b52, (q15_t)0x79e6, (q15_t)0x1b46, (q15_t)0x79eb, (q15_t)0x1b3b, + (q15_t)0x79f0, (q15_t)0x1b30, (q15_t)0x79f6, (q15_t)0x1b24, (q15_t)0x79fb, (q15_t)0x1b19, (q15_t)0x7a00, (q15_t)0x1b0d, + (q15_t)0x7a06, (q15_t)0x1b02, (q15_t)0x7a0b, (q15_t)0x1af7, (q15_t)0x7a10, (q15_t)0x1aeb, (q15_t)0x7a16, (q15_t)0x1ae0, + (q15_t)0x7a1b, (q15_t)0x1ad4, (q15_t)0x7a20, (q15_t)0x1ac9, (q15_t)0x7a25, (q15_t)0x1abe, (q15_t)0x7a2b, (q15_t)0x1ab2, + (q15_t)0x7a30, (q15_t)0x1aa7, (q15_t)0x7a35, (q15_t)0x1a9b, (q15_t)0x7a3a, (q15_t)0x1a90, (q15_t)0x7a3f, (q15_t)0x1a84, + (q15_t)0x7a45, (q15_t)0x1a79, (q15_t)0x7a4a, (q15_t)0x1a6e, (q15_t)0x7a4f, (q15_t)0x1a62, (q15_t)0x7a54, (q15_t)0x1a57, + (q15_t)0x7a59, (q15_t)0x1a4b, (q15_t)0x7a5f, (q15_t)0x1a40, (q15_t)0x7a64, (q15_t)0x1a34, (q15_t)0x7a69, (q15_t)0x1a29, + (q15_t)0x7a6e, (q15_t)0x1a1d, (q15_t)0x7a73, (q15_t)0x1a12, (q15_t)0x7a78, (q15_t)0x1a06, (q15_t)0x7a7d, (q15_t)0x19fb, + (q15_t)0x7a82, (q15_t)0x19ef, (q15_t)0x7a88, (q15_t)0x19e4, (q15_t)0x7a8d, (q15_t)0x19d8, (q15_t)0x7a92, (q15_t)0x19cd, + (q15_t)0x7a97, (q15_t)0x19c1, (q15_t)0x7a9c, (q15_t)0x19b6, (q15_t)0x7aa1, (q15_t)0x19aa, (q15_t)0x7aa6, (q15_t)0x199f, + (q15_t)0x7aab, (q15_t)0x1993, (q15_t)0x7ab0, (q15_t)0x1988, (q15_t)0x7ab5, (q15_t)0x197c, (q15_t)0x7aba, (q15_t)0x1971, + (q15_t)0x7abf, (q15_t)0x1965, (q15_t)0x7ac4, (q15_t)0x195a, (q15_t)0x7ac9, (q15_t)0x194e, (q15_t)0x7ace, (q15_t)0x1943, + (q15_t)0x7ad3, (q15_t)0x1937, (q15_t)0x7ad8, (q15_t)0x192c, (q15_t)0x7add, (q15_t)0x1920, (q15_t)0x7ae2, (q15_t)0x1914, + (q15_t)0x7ae6, (q15_t)0x1909, (q15_t)0x7aeb, (q15_t)0x18fd, (q15_t)0x7af0, (q15_t)0x18f2, (q15_t)0x7af5, (q15_t)0x18e6, + (q15_t)0x7afa, (q15_t)0x18db, (q15_t)0x7aff, (q15_t)0x18cf, (q15_t)0x7b04, (q15_t)0x18c3, (q15_t)0x7b09, (q15_t)0x18b8, + (q15_t)0x7b0e, (q15_t)0x18ac, (q15_t)0x7b12, (q15_t)0x18a1, (q15_t)0x7b17, (q15_t)0x1895, (q15_t)0x7b1c, (q15_t)0x1889, + (q15_t)0x7b21, (q15_t)0x187e, (q15_t)0x7b26, (q15_t)0x1872, (q15_t)0x7b2a, (q15_t)0x1867, (q15_t)0x7b2f, (q15_t)0x185b, + (q15_t)0x7b34, (q15_t)0x184f, (q15_t)0x7b39, (q15_t)0x1844, (q15_t)0x7b3e, (q15_t)0x1838, (q15_t)0x7b42, (q15_t)0x182d, + (q15_t)0x7b47, (q15_t)0x1821, (q15_t)0x7b4c, (q15_t)0x1815, (q15_t)0x7b50, (q15_t)0x180a, (q15_t)0x7b55, (q15_t)0x17fe, + (q15_t)0x7b5a, (q15_t)0x17f2, (q15_t)0x7b5f, (q15_t)0x17e7, (q15_t)0x7b63, (q15_t)0x17db, (q15_t)0x7b68, (q15_t)0x17cf, + (q15_t)0x7b6d, (q15_t)0x17c4, (q15_t)0x7b71, (q15_t)0x17b8, (q15_t)0x7b76, (q15_t)0x17ac, (q15_t)0x7b7b, (q15_t)0x17a1, + (q15_t)0x7b7f, (q15_t)0x1795, (q15_t)0x7b84, (q15_t)0x1789, (q15_t)0x7b88, (q15_t)0x177e, (q15_t)0x7b8d, (q15_t)0x1772, + (q15_t)0x7b92, (q15_t)0x1766, (q15_t)0x7b96, (q15_t)0x175b, (q15_t)0x7b9b, (q15_t)0x174f, (q15_t)0x7b9f, (q15_t)0x1743, + (q15_t)0x7ba4, (q15_t)0x1737, (q15_t)0x7ba9, (q15_t)0x172c, (q15_t)0x7bad, (q15_t)0x1720, (q15_t)0x7bb2, (q15_t)0x1714, + (q15_t)0x7bb6, (q15_t)0x1709, (q15_t)0x7bbb, (q15_t)0x16fd, (q15_t)0x7bbf, (q15_t)0x16f1, (q15_t)0x7bc4, (q15_t)0x16e5, + (q15_t)0x7bc8, (q15_t)0x16da, (q15_t)0x7bcd, (q15_t)0x16ce, (q15_t)0x7bd1, (q15_t)0x16c2, (q15_t)0x7bd6, (q15_t)0x16b6, + (q15_t)0x7bda, (q15_t)0x16ab, (q15_t)0x7bde, (q15_t)0x169f, (q15_t)0x7be3, (q15_t)0x1693, (q15_t)0x7be7, (q15_t)0x1687, + (q15_t)0x7bec, (q15_t)0x167c, (q15_t)0x7bf0, (q15_t)0x1670, (q15_t)0x7bf5, (q15_t)0x1664, (q15_t)0x7bf9, (q15_t)0x1658, + (q15_t)0x7bfd, (q15_t)0x164c, (q15_t)0x7c02, (q15_t)0x1641, (q15_t)0x7c06, (q15_t)0x1635, (q15_t)0x7c0a, (q15_t)0x1629, + (q15_t)0x7c0f, (q15_t)0x161d, (q15_t)0x7c13, (q15_t)0x1612, (q15_t)0x7c17, (q15_t)0x1606, (q15_t)0x7c1c, (q15_t)0x15fa, + (q15_t)0x7c20, (q15_t)0x15ee, (q15_t)0x7c24, (q15_t)0x15e2, (q15_t)0x7c29, (q15_t)0x15d7, (q15_t)0x7c2d, (q15_t)0x15cb, + (q15_t)0x7c31, (q15_t)0x15bf, (q15_t)0x7c36, (q15_t)0x15b3, (q15_t)0x7c3a, (q15_t)0x15a7, (q15_t)0x7c3e, (q15_t)0x159b, + (q15_t)0x7c42, (q15_t)0x1590, (q15_t)0x7c46, (q15_t)0x1584, (q15_t)0x7c4b, (q15_t)0x1578, (q15_t)0x7c4f, (q15_t)0x156c, + (q15_t)0x7c53, (q15_t)0x1560, (q15_t)0x7c57, (q15_t)0x1554, (q15_t)0x7c5b, (q15_t)0x1549, (q15_t)0x7c60, (q15_t)0x153d, + (q15_t)0x7c64, (q15_t)0x1531, (q15_t)0x7c68, (q15_t)0x1525, (q15_t)0x7c6c, (q15_t)0x1519, (q15_t)0x7c70, (q15_t)0x150d, + (q15_t)0x7c74, (q15_t)0x1501, (q15_t)0x7c79, (q15_t)0x14f6, (q15_t)0x7c7d, (q15_t)0x14ea, (q15_t)0x7c81, (q15_t)0x14de, + (q15_t)0x7c85, (q15_t)0x14d2, (q15_t)0x7c89, (q15_t)0x14c6, (q15_t)0x7c8d, (q15_t)0x14ba, (q15_t)0x7c91, (q15_t)0x14ae, + (q15_t)0x7c95, (q15_t)0x14a2, (q15_t)0x7c99, (q15_t)0x1496, (q15_t)0x7c9d, (q15_t)0x148b, (q15_t)0x7ca1, (q15_t)0x147f, + (q15_t)0x7ca5, (q15_t)0x1473, (q15_t)0x7ca9, (q15_t)0x1467, (q15_t)0x7cad, (q15_t)0x145b, (q15_t)0x7cb1, (q15_t)0x144f, + (q15_t)0x7cb5, (q15_t)0x1443, (q15_t)0x7cb9, (q15_t)0x1437, (q15_t)0x7cbd, (q15_t)0x142b, (q15_t)0x7cc1, (q15_t)0x141f, + (q15_t)0x7cc5, (q15_t)0x1413, (q15_t)0x7cc9, (q15_t)0x1407, (q15_t)0x7ccd, (q15_t)0x13fb, (q15_t)0x7cd1, (q15_t)0x13f0, + (q15_t)0x7cd5, (q15_t)0x13e4, (q15_t)0x7cd9, (q15_t)0x13d8, (q15_t)0x7cdd, (q15_t)0x13cc, (q15_t)0x7ce0, (q15_t)0x13c0, + (q15_t)0x7ce4, (q15_t)0x13b4, (q15_t)0x7ce8, (q15_t)0x13a8, (q15_t)0x7cec, (q15_t)0x139c, (q15_t)0x7cf0, (q15_t)0x1390, + (q15_t)0x7cf4, (q15_t)0x1384, (q15_t)0x7cf8, (q15_t)0x1378, (q15_t)0x7cfb, (q15_t)0x136c, (q15_t)0x7cff, (q15_t)0x1360, + (q15_t)0x7d03, (q15_t)0x1354, (q15_t)0x7d07, (q15_t)0x1348, (q15_t)0x7d0b, (q15_t)0x133c, (q15_t)0x7d0e, (q15_t)0x1330, + (q15_t)0x7d12, (q15_t)0x1324, (q15_t)0x7d16, (q15_t)0x1318, (q15_t)0x7d1a, (q15_t)0x130c, (q15_t)0x7d1d, (q15_t)0x1300, + (q15_t)0x7d21, (q15_t)0x12f4, (q15_t)0x7d25, (q15_t)0x12e8, (q15_t)0x7d28, (q15_t)0x12dc, (q15_t)0x7d2c, (q15_t)0x12d0, + (q15_t)0x7d30, (q15_t)0x12c4, (q15_t)0x7d34, (q15_t)0x12b8, (q15_t)0x7d37, (q15_t)0x12ac, (q15_t)0x7d3b, (q15_t)0x12a0, + (q15_t)0x7d3f, (q15_t)0x1294, (q15_t)0x7d42, (q15_t)0x1288, (q15_t)0x7d46, (q15_t)0x127c, (q15_t)0x7d49, (q15_t)0x1270, + (q15_t)0x7d4d, (q15_t)0x1264, (q15_t)0x7d51, (q15_t)0x1258, (q15_t)0x7d54, (q15_t)0x124c, (q15_t)0x7d58, (q15_t)0x1240, + (q15_t)0x7d5b, (q15_t)0x1234, (q15_t)0x7d5f, (q15_t)0x1228, (q15_t)0x7d63, (q15_t)0x121c, (q15_t)0x7d66, (q15_t)0x1210, + (q15_t)0x7d6a, (q15_t)0x1204, (q15_t)0x7d6d, (q15_t)0x11f7, (q15_t)0x7d71, (q15_t)0x11eb, (q15_t)0x7d74, (q15_t)0x11df, + (q15_t)0x7d78, (q15_t)0x11d3, (q15_t)0x7d7b, (q15_t)0x11c7, (q15_t)0x7d7f, (q15_t)0x11bb, (q15_t)0x7d82, (q15_t)0x11af, + (q15_t)0x7d86, (q15_t)0x11a3, (q15_t)0x7d89, (q15_t)0x1197, (q15_t)0x7d8d, (q15_t)0x118b, (q15_t)0x7d90, (q15_t)0x117f, + (q15_t)0x7d93, (q15_t)0x1173, (q15_t)0x7d97, (q15_t)0x1167, (q15_t)0x7d9a, (q15_t)0x115a, (q15_t)0x7d9e, (q15_t)0x114e, + (q15_t)0x7da1, (q15_t)0x1142, (q15_t)0x7da4, (q15_t)0x1136, (q15_t)0x7da8, (q15_t)0x112a, (q15_t)0x7dab, (q15_t)0x111e, + (q15_t)0x7daf, (q15_t)0x1112, (q15_t)0x7db2, (q15_t)0x1106, (q15_t)0x7db5, (q15_t)0x10fa, (q15_t)0x7db9, (q15_t)0x10ed, + (q15_t)0x7dbc, (q15_t)0x10e1, (q15_t)0x7dbf, (q15_t)0x10d5, (q15_t)0x7dc2, (q15_t)0x10c9, (q15_t)0x7dc6, (q15_t)0x10bd, + (q15_t)0x7dc9, (q15_t)0x10b1, (q15_t)0x7dcc, (q15_t)0x10a5, (q15_t)0x7dd0, (q15_t)0x1099, (q15_t)0x7dd3, (q15_t)0x108c, + (q15_t)0x7dd6, (q15_t)0x1080, (q15_t)0x7dd9, (q15_t)0x1074, (q15_t)0x7ddd, (q15_t)0x1068, (q15_t)0x7de0, (q15_t)0x105c, + (q15_t)0x7de3, (q15_t)0x1050, (q15_t)0x7de6, (q15_t)0x1044, (q15_t)0x7de9, (q15_t)0x1037, (q15_t)0x7ded, (q15_t)0x102b, + (q15_t)0x7df0, (q15_t)0x101f, (q15_t)0x7df3, (q15_t)0x1013, (q15_t)0x7df6, (q15_t)0x1007, (q15_t)0x7df9, (q15_t)0xffb, + (q15_t)0x7dfc, (q15_t)0xfee, (q15_t)0x7dff, (q15_t)0xfe2, (q15_t)0x7e03, (q15_t)0xfd6, (q15_t)0x7e06, (q15_t)0xfca, + (q15_t)0x7e09, (q15_t)0xfbe, (q15_t)0x7e0c, (q15_t)0xfb2, (q15_t)0x7e0f, (q15_t)0xfa5, (q15_t)0x7e12, (q15_t)0xf99, + (q15_t)0x7e15, (q15_t)0xf8d, (q15_t)0x7e18, (q15_t)0xf81, (q15_t)0x7e1b, (q15_t)0xf75, (q15_t)0x7e1e, (q15_t)0xf68, + (q15_t)0x7e21, (q15_t)0xf5c, (q15_t)0x7e24, (q15_t)0xf50, (q15_t)0x7e27, (q15_t)0xf44, (q15_t)0x7e2a, (q15_t)0xf38, + (q15_t)0x7e2d, (q15_t)0xf2b, (q15_t)0x7e30, (q15_t)0xf1f, (q15_t)0x7e33, (q15_t)0xf13, (q15_t)0x7e36, (q15_t)0xf07, + (q15_t)0x7e39, (q15_t)0xefb, (q15_t)0x7e3c, (q15_t)0xeee, (q15_t)0x7e3f, (q15_t)0xee2, (q15_t)0x7e42, (q15_t)0xed6, + (q15_t)0x7e45, (q15_t)0xeca, (q15_t)0x7e48, (q15_t)0xebd, (q15_t)0x7e4a, (q15_t)0xeb1, (q15_t)0x7e4d, (q15_t)0xea5, + (q15_t)0x7e50, (q15_t)0xe99, (q15_t)0x7e53, (q15_t)0xe8c, (q15_t)0x7e56, (q15_t)0xe80, (q15_t)0x7e59, (q15_t)0xe74, + (q15_t)0x7e5c, (q15_t)0xe68, (q15_t)0x7e5e, (q15_t)0xe5c, (q15_t)0x7e61, (q15_t)0xe4f, (q15_t)0x7e64, (q15_t)0xe43, + (q15_t)0x7e67, (q15_t)0xe37, (q15_t)0x7e6a, (q15_t)0xe2b, (q15_t)0x7e6c, (q15_t)0xe1e, (q15_t)0x7e6f, (q15_t)0xe12, + (q15_t)0x7e72, (q15_t)0xe06, (q15_t)0x7e75, (q15_t)0xdf9, (q15_t)0x7e77, (q15_t)0xded, (q15_t)0x7e7a, (q15_t)0xde1, + (q15_t)0x7e7d, (q15_t)0xdd5, (q15_t)0x7e80, (q15_t)0xdc8, (q15_t)0x7e82, (q15_t)0xdbc, (q15_t)0x7e85, (q15_t)0xdb0, + (q15_t)0x7e88, (q15_t)0xda4, (q15_t)0x7e8a, (q15_t)0xd97, (q15_t)0x7e8d, (q15_t)0xd8b, (q15_t)0x7e90, (q15_t)0xd7f, + (q15_t)0x7e92, (q15_t)0xd72, (q15_t)0x7e95, (q15_t)0xd66, (q15_t)0x7e98, (q15_t)0xd5a, (q15_t)0x7e9a, (q15_t)0xd4e, + (q15_t)0x7e9d, (q15_t)0xd41, (q15_t)0x7e9f, (q15_t)0xd35, (q15_t)0x7ea2, (q15_t)0xd29, (q15_t)0x7ea5, (q15_t)0xd1c, + (q15_t)0x7ea7, (q15_t)0xd10, (q15_t)0x7eaa, (q15_t)0xd04, (q15_t)0x7eac, (q15_t)0xcf8, (q15_t)0x7eaf, (q15_t)0xceb, + (q15_t)0x7eb1, (q15_t)0xcdf, (q15_t)0x7eb4, (q15_t)0xcd3, (q15_t)0x7eb6, (q15_t)0xcc6, (q15_t)0x7eb9, (q15_t)0xcba, + (q15_t)0x7ebb, (q15_t)0xcae, (q15_t)0x7ebe, (q15_t)0xca1, (q15_t)0x7ec0, (q15_t)0xc95, (q15_t)0x7ec3, (q15_t)0xc89, + (q15_t)0x7ec5, (q15_t)0xc7c, (q15_t)0x7ec8, (q15_t)0xc70, (q15_t)0x7eca, (q15_t)0xc64, (q15_t)0x7ecc, (q15_t)0xc57, + (q15_t)0x7ecf, (q15_t)0xc4b, (q15_t)0x7ed1, (q15_t)0xc3f, (q15_t)0x7ed4, (q15_t)0xc32, (q15_t)0x7ed6, (q15_t)0xc26, + (q15_t)0x7ed8, (q15_t)0xc1a, (q15_t)0x7edb, (q15_t)0xc0d, (q15_t)0x7edd, (q15_t)0xc01, (q15_t)0x7ee0, (q15_t)0xbf5, + (q15_t)0x7ee2, (q15_t)0xbe8, (q15_t)0x7ee4, (q15_t)0xbdc, (q15_t)0x7ee7, (q15_t)0xbd0, (q15_t)0x7ee9, (q15_t)0xbc3, + (q15_t)0x7eeb, (q15_t)0xbb7, (q15_t)0x7eed, (q15_t)0xbab, (q15_t)0x7ef0, (q15_t)0xb9e, (q15_t)0x7ef2, (q15_t)0xb92, + (q15_t)0x7ef4, (q15_t)0xb85, (q15_t)0x7ef7, (q15_t)0xb79, (q15_t)0x7ef9, (q15_t)0xb6d, (q15_t)0x7efb, (q15_t)0xb60, + (q15_t)0x7efd, (q15_t)0xb54, (q15_t)0x7f00, (q15_t)0xb48, (q15_t)0x7f02, (q15_t)0xb3b, (q15_t)0x7f04, (q15_t)0xb2f, + (q15_t)0x7f06, (q15_t)0xb23, (q15_t)0x7f08, (q15_t)0xb16, (q15_t)0x7f0a, (q15_t)0xb0a, (q15_t)0x7f0d, (q15_t)0xafd, + (q15_t)0x7f0f, (q15_t)0xaf1, (q15_t)0x7f11, (q15_t)0xae5, (q15_t)0x7f13, (q15_t)0xad8, (q15_t)0x7f15, (q15_t)0xacc, + (q15_t)0x7f17, (q15_t)0xac0, (q15_t)0x7f19, (q15_t)0xab3, (q15_t)0x7f1c, (q15_t)0xaa7, (q15_t)0x7f1e, (q15_t)0xa9a, + (q15_t)0x7f20, (q15_t)0xa8e, (q15_t)0x7f22, (q15_t)0xa82, (q15_t)0x7f24, (q15_t)0xa75, (q15_t)0x7f26, (q15_t)0xa69, + (q15_t)0x7f28, (q15_t)0xa5c, (q15_t)0x7f2a, (q15_t)0xa50, (q15_t)0x7f2c, (q15_t)0xa44, (q15_t)0x7f2e, (q15_t)0xa37, + (q15_t)0x7f30, (q15_t)0xa2b, (q15_t)0x7f32, (q15_t)0xa1e, (q15_t)0x7f34, (q15_t)0xa12, (q15_t)0x7f36, (q15_t)0xa06, + (q15_t)0x7f38, (q15_t)0x9f9, (q15_t)0x7f3a, (q15_t)0x9ed, (q15_t)0x7f3c, (q15_t)0x9e0, (q15_t)0x7f3e, (q15_t)0x9d4, + (q15_t)0x7f40, (q15_t)0x9c7, (q15_t)0x7f42, (q15_t)0x9bb, (q15_t)0x7f43, (q15_t)0x9af, (q15_t)0x7f45, (q15_t)0x9a2, + (q15_t)0x7f47, (q15_t)0x996, (q15_t)0x7f49, (q15_t)0x989, (q15_t)0x7f4b, (q15_t)0x97d, (q15_t)0x7f4d, (q15_t)0x970, + (q15_t)0x7f4f, (q15_t)0x964, (q15_t)0x7f51, (q15_t)0x958, (q15_t)0x7f52, (q15_t)0x94b, (q15_t)0x7f54, (q15_t)0x93f, + (q15_t)0x7f56, (q15_t)0x932, (q15_t)0x7f58, (q15_t)0x926, (q15_t)0x7f5a, (q15_t)0x919, (q15_t)0x7f5b, (q15_t)0x90d, + (q15_t)0x7f5d, (q15_t)0x901, (q15_t)0x7f5f, (q15_t)0x8f4, (q15_t)0x7f61, (q15_t)0x8e8, (q15_t)0x7f62, (q15_t)0x8db, + (q15_t)0x7f64, (q15_t)0x8cf, (q15_t)0x7f66, (q15_t)0x8c2, (q15_t)0x7f68, (q15_t)0x8b6, (q15_t)0x7f69, (q15_t)0x8a9, + (q15_t)0x7f6b, (q15_t)0x89d, (q15_t)0x7f6d, (q15_t)0x891, (q15_t)0x7f6e, (q15_t)0x884, (q15_t)0x7f70, (q15_t)0x878, + (q15_t)0x7f72, (q15_t)0x86b, (q15_t)0x7f73, (q15_t)0x85f, (q15_t)0x7f75, (q15_t)0x852, (q15_t)0x7f77, (q15_t)0x846, + (q15_t)0x7f78, (q15_t)0x839, (q15_t)0x7f7a, (q15_t)0x82d, (q15_t)0x7f7b, (q15_t)0x820, (q15_t)0x7f7d, (q15_t)0x814, + (q15_t)0x7f7f, (q15_t)0x807, (q15_t)0x7f80, (q15_t)0x7fb, (q15_t)0x7f82, (q15_t)0x7ef, (q15_t)0x7f83, (q15_t)0x7e2, + (q15_t)0x7f85, (q15_t)0x7d6, (q15_t)0x7f86, (q15_t)0x7c9, (q15_t)0x7f88, (q15_t)0x7bd, (q15_t)0x7f89, (q15_t)0x7b0, + (q15_t)0x7f8b, (q15_t)0x7a4, (q15_t)0x7f8c, (q15_t)0x797, (q15_t)0x7f8e, (q15_t)0x78b, (q15_t)0x7f8f, (q15_t)0x77e, + (q15_t)0x7f91, (q15_t)0x772, (q15_t)0x7f92, (q15_t)0x765, (q15_t)0x7f94, (q15_t)0x759, (q15_t)0x7f95, (q15_t)0x74c, + (q15_t)0x7f97, (q15_t)0x740, (q15_t)0x7f98, (q15_t)0x733, (q15_t)0x7f99, (q15_t)0x727, (q15_t)0x7f9b, (q15_t)0x71a, + (q15_t)0x7f9c, (q15_t)0x70e, (q15_t)0x7f9e, (q15_t)0x701, (q15_t)0x7f9f, (q15_t)0x6f5, (q15_t)0x7fa0, (q15_t)0x6e8, + (q15_t)0x7fa2, (q15_t)0x6dc, (q15_t)0x7fa3, (q15_t)0x6cf, (q15_t)0x7fa4, (q15_t)0x6c3, (q15_t)0x7fa6, (q15_t)0x6b6, + (q15_t)0x7fa7, (q15_t)0x6aa, (q15_t)0x7fa8, (q15_t)0x69d, (q15_t)0x7faa, (q15_t)0x691, (q15_t)0x7fab, (q15_t)0x684, + (q15_t)0x7fac, (q15_t)0x678, (q15_t)0x7fad, (q15_t)0x66b, (q15_t)0x7faf, (q15_t)0x65f, (q15_t)0x7fb0, (q15_t)0x652, + (q15_t)0x7fb1, (q15_t)0x646, (q15_t)0x7fb2, (q15_t)0x639, (q15_t)0x7fb4, (q15_t)0x62d, (q15_t)0x7fb5, (q15_t)0x620, + (q15_t)0x7fb6, (q15_t)0x614, (q15_t)0x7fb7, (q15_t)0x607, (q15_t)0x7fb8, (q15_t)0x5fb, (q15_t)0x7fb9, (q15_t)0x5ee, + (q15_t)0x7fbb, (q15_t)0x5e2, (q15_t)0x7fbc, (q15_t)0x5d5, (q15_t)0x7fbd, (q15_t)0x5c9, (q15_t)0x7fbe, (q15_t)0x5bc, + (q15_t)0x7fbf, (q15_t)0x5b0, (q15_t)0x7fc0, (q15_t)0x5a3, (q15_t)0x7fc1, (q15_t)0x597, (q15_t)0x7fc3, (q15_t)0x58a, + (q15_t)0x7fc4, (q15_t)0x57e, (q15_t)0x7fc5, (q15_t)0x571, (q15_t)0x7fc6, (q15_t)0x565, (q15_t)0x7fc7, (q15_t)0x558, + (q15_t)0x7fc8, (q15_t)0x54c, (q15_t)0x7fc9, (q15_t)0x53f, (q15_t)0x7fca, (q15_t)0x533, (q15_t)0x7fcb, (q15_t)0x526, + (q15_t)0x7fcc, (q15_t)0x51a, (q15_t)0x7fcd, (q15_t)0x50d, (q15_t)0x7fce, (q15_t)0x500, (q15_t)0x7fcf, (q15_t)0x4f4, + (q15_t)0x7fd0, (q15_t)0x4e7, (q15_t)0x7fd1, (q15_t)0x4db, (q15_t)0x7fd2, (q15_t)0x4ce, (q15_t)0x7fd3, (q15_t)0x4c2, + (q15_t)0x7fd4, (q15_t)0x4b5, (q15_t)0x7fd5, (q15_t)0x4a9, (q15_t)0x7fd5, (q15_t)0x49c, (q15_t)0x7fd6, (q15_t)0x490, + (q15_t)0x7fd7, (q15_t)0x483, (q15_t)0x7fd8, (q15_t)0x477, (q15_t)0x7fd9, (q15_t)0x46a, (q15_t)0x7fda, (q15_t)0x45e, + (q15_t)0x7fdb, (q15_t)0x451, (q15_t)0x7fdc, (q15_t)0x444, (q15_t)0x7fdc, (q15_t)0x438, (q15_t)0x7fdd, (q15_t)0x42b, + (q15_t)0x7fde, (q15_t)0x41f, (q15_t)0x7fdf, (q15_t)0x412, (q15_t)0x7fe0, (q15_t)0x406, (q15_t)0x7fe0, (q15_t)0x3f9, + (q15_t)0x7fe1, (q15_t)0x3ed, (q15_t)0x7fe2, (q15_t)0x3e0, (q15_t)0x7fe3, (q15_t)0x3d4, (q15_t)0x7fe3, (q15_t)0x3c7, + (q15_t)0x7fe4, (q15_t)0x3bb, (q15_t)0x7fe5, (q15_t)0x3ae, (q15_t)0x7fe6, (q15_t)0x3a1, (q15_t)0x7fe6, (q15_t)0x395, + (q15_t)0x7fe7, (q15_t)0x388, (q15_t)0x7fe8, (q15_t)0x37c, (q15_t)0x7fe8, (q15_t)0x36f, (q15_t)0x7fe9, (q15_t)0x363, + (q15_t)0x7fea, (q15_t)0x356, (q15_t)0x7fea, (q15_t)0x34a, (q15_t)0x7feb, (q15_t)0x33d, (q15_t)0x7fec, (q15_t)0x330, + (q15_t)0x7fec, (q15_t)0x324, (q15_t)0x7fed, (q15_t)0x317, (q15_t)0x7fed, (q15_t)0x30b, (q15_t)0x7fee, (q15_t)0x2fe, + (q15_t)0x7fef, (q15_t)0x2f2, (q15_t)0x7fef, (q15_t)0x2e5, (q15_t)0x7ff0, (q15_t)0x2d9, (q15_t)0x7ff0, (q15_t)0x2cc, + (q15_t)0x7ff1, (q15_t)0x2c0, (q15_t)0x7ff1, (q15_t)0x2b3, (q15_t)0x7ff2, (q15_t)0x2a6, (q15_t)0x7ff2, (q15_t)0x29a, + (q15_t)0x7ff3, (q15_t)0x28d, (q15_t)0x7ff3, (q15_t)0x281, (q15_t)0x7ff4, (q15_t)0x274, (q15_t)0x7ff4, (q15_t)0x268, + (q15_t)0x7ff5, (q15_t)0x25b, (q15_t)0x7ff5, (q15_t)0x24e, (q15_t)0x7ff6, (q15_t)0x242, (q15_t)0x7ff6, (q15_t)0x235, + (q15_t)0x7ff7, (q15_t)0x229, (q15_t)0x7ff7, (q15_t)0x21c, (q15_t)0x7ff7, (q15_t)0x210, (q15_t)0x7ff8, (q15_t)0x203, + (q15_t)0x7ff8, (q15_t)0x1f7, (q15_t)0x7ff9, (q15_t)0x1ea, (q15_t)0x7ff9, (q15_t)0x1dd, (q15_t)0x7ff9, (q15_t)0x1d1, + (q15_t)0x7ffa, (q15_t)0x1c4, (q15_t)0x7ffa, (q15_t)0x1b8, (q15_t)0x7ffa, (q15_t)0x1ab, (q15_t)0x7ffb, (q15_t)0x19f, + (q15_t)0x7ffb, (q15_t)0x192, (q15_t)0x7ffb, (q15_t)0x186, (q15_t)0x7ffc, (q15_t)0x179, (q15_t)0x7ffc, (q15_t)0x16c, + (q15_t)0x7ffc, (q15_t)0x160, (q15_t)0x7ffc, (q15_t)0x153, (q15_t)0x7ffd, (q15_t)0x147, (q15_t)0x7ffd, (q15_t)0x13a, + (q15_t)0x7ffd, (q15_t)0x12e, (q15_t)0x7ffd, (q15_t)0x121, (q15_t)0x7ffe, (q15_t)0x114, (q15_t)0x7ffe, (q15_t)0x108, + (q15_t)0x7ffe, (q15_t)0xfb, (q15_t)0x7ffe, (q15_t)0xef, (q15_t)0x7ffe, (q15_t)0xe2, (q15_t)0x7fff, (q15_t)0xd6, + (q15_t)0x7fff, (q15_t)0xc9, (q15_t)0x7fff, (q15_t)0xbc, (q15_t)0x7fff, (q15_t)0xb0, (q15_t)0x7fff, (q15_t)0xa3, + (q15_t)0x7fff, (q15_t)0x97, (q15_t)0x7fff, (q15_t)0x8a, (q15_t)0x7fff, (q15_t)0x7e, (q15_t)0x7fff, (q15_t)0x71, + (q15_t)0x7fff, (q15_t)0x65, (q15_t)0x7fff, (q15_t)0x58, (q15_t)0x7fff, (q15_t)0x4b, (q15_t)0x7fff, (q15_t)0x3f, + (q15_t)0x7fff, (q15_t)0x32, (q15_t)0x7fff, (q15_t)0x26, (q15_t)0x7fff, (q15_t)0x19, (q15_t)0x7fff, (q15_t)0xd, + (q15_t)0x7fff, (q15_t)0x0, (q15_t)0x7fff, (q15_t)0xfff3, (q15_t)0x7fff, (q15_t)0xffe7, (q15_t)0x7fff, (q15_t)0xffda, + (q15_t)0x7fff, (q15_t)0xffce, (q15_t)0x7fff, (q15_t)0xffc1, (q15_t)0x7fff, (q15_t)0xffb5, (q15_t)0x7fff, (q15_t)0xffa8, + (q15_t)0x7fff, (q15_t)0xff9b, (q15_t)0x7fff, (q15_t)0xff8f, (q15_t)0x7fff, (q15_t)0xff82, (q15_t)0x7fff, (q15_t)0xff76, + (q15_t)0x7fff, (q15_t)0xff69, (q15_t)0x7fff, (q15_t)0xff5d, (q15_t)0x7fff, (q15_t)0xff50, (q15_t)0x7fff, (q15_t)0xff44, + (q15_t)0x7fff, (q15_t)0xff37, (q15_t)0x7fff, (q15_t)0xff2a, (q15_t)0x7ffe, (q15_t)0xff1e, (q15_t)0x7ffe, (q15_t)0xff11, + (q15_t)0x7ffe, (q15_t)0xff05, (q15_t)0x7ffe, (q15_t)0xfef8, (q15_t)0x7ffe, (q15_t)0xfeec, (q15_t)0x7ffd, (q15_t)0xfedf, + (q15_t)0x7ffd, (q15_t)0xfed2, (q15_t)0x7ffd, (q15_t)0xfec6, (q15_t)0x7ffd, (q15_t)0xfeb9, (q15_t)0x7ffc, (q15_t)0xfead, + (q15_t)0x7ffc, (q15_t)0xfea0, (q15_t)0x7ffc, (q15_t)0xfe94, (q15_t)0x7ffc, (q15_t)0xfe87, (q15_t)0x7ffb, (q15_t)0xfe7a, + (q15_t)0x7ffb, (q15_t)0xfe6e, (q15_t)0x7ffb, (q15_t)0xfe61, (q15_t)0x7ffa, (q15_t)0xfe55, (q15_t)0x7ffa, (q15_t)0xfe48, + (q15_t)0x7ffa, (q15_t)0xfe3c, (q15_t)0x7ff9, (q15_t)0xfe2f, (q15_t)0x7ff9, (q15_t)0xfe23, (q15_t)0x7ff9, (q15_t)0xfe16, + (q15_t)0x7ff8, (q15_t)0xfe09, (q15_t)0x7ff8, (q15_t)0xfdfd, (q15_t)0x7ff7, (q15_t)0xfdf0, (q15_t)0x7ff7, (q15_t)0xfde4, + (q15_t)0x7ff7, (q15_t)0xfdd7, (q15_t)0x7ff6, (q15_t)0xfdcb, (q15_t)0x7ff6, (q15_t)0xfdbe, (q15_t)0x7ff5, (q15_t)0xfdb2, + (q15_t)0x7ff5, (q15_t)0xfda5, (q15_t)0x7ff4, (q15_t)0xfd98, (q15_t)0x7ff4, (q15_t)0xfd8c, (q15_t)0x7ff3, (q15_t)0xfd7f, + (q15_t)0x7ff3, (q15_t)0xfd73, (q15_t)0x7ff2, (q15_t)0xfd66, (q15_t)0x7ff2, (q15_t)0xfd5a, (q15_t)0x7ff1, (q15_t)0xfd4d, + (q15_t)0x7ff1, (q15_t)0xfd40, (q15_t)0x7ff0, (q15_t)0xfd34, (q15_t)0x7ff0, (q15_t)0xfd27, (q15_t)0x7fef, (q15_t)0xfd1b, + (q15_t)0x7fef, (q15_t)0xfd0e, (q15_t)0x7fee, (q15_t)0xfd02, (q15_t)0x7fed, (q15_t)0xfcf5, (q15_t)0x7fed, (q15_t)0xfce9, + (q15_t)0x7fec, (q15_t)0xfcdc, (q15_t)0x7fec, (q15_t)0xfcd0, (q15_t)0x7feb, (q15_t)0xfcc3, (q15_t)0x7fea, (q15_t)0xfcb6, + (q15_t)0x7fea, (q15_t)0xfcaa, (q15_t)0x7fe9, (q15_t)0xfc9d, (q15_t)0x7fe8, (q15_t)0xfc91, (q15_t)0x7fe8, (q15_t)0xfc84, + (q15_t)0x7fe7, (q15_t)0xfc78, (q15_t)0x7fe6, (q15_t)0xfc6b, (q15_t)0x7fe6, (q15_t)0xfc5f, (q15_t)0x7fe5, (q15_t)0xfc52, + (q15_t)0x7fe4, (q15_t)0xfc45, (q15_t)0x7fe3, (q15_t)0xfc39, (q15_t)0x7fe3, (q15_t)0xfc2c, (q15_t)0x7fe2, (q15_t)0xfc20, + (q15_t)0x7fe1, (q15_t)0xfc13, (q15_t)0x7fe0, (q15_t)0xfc07, (q15_t)0x7fe0, (q15_t)0xfbfa, (q15_t)0x7fdf, (q15_t)0xfbee, + (q15_t)0x7fde, (q15_t)0xfbe1, (q15_t)0x7fdd, (q15_t)0xfbd5, (q15_t)0x7fdc, (q15_t)0xfbc8, (q15_t)0x7fdc, (q15_t)0xfbbc, + (q15_t)0x7fdb, (q15_t)0xfbaf, (q15_t)0x7fda, (q15_t)0xfba2, (q15_t)0x7fd9, (q15_t)0xfb96, (q15_t)0x7fd8, (q15_t)0xfb89, + (q15_t)0x7fd7, (q15_t)0xfb7d, (q15_t)0x7fd6, (q15_t)0xfb70, (q15_t)0x7fd5, (q15_t)0xfb64, (q15_t)0x7fd5, (q15_t)0xfb57, + (q15_t)0x7fd4, (q15_t)0xfb4b, (q15_t)0x7fd3, (q15_t)0xfb3e, (q15_t)0x7fd2, (q15_t)0xfb32, (q15_t)0x7fd1, (q15_t)0xfb25, + (q15_t)0x7fd0, (q15_t)0xfb19, (q15_t)0x7fcf, (q15_t)0xfb0c, (q15_t)0x7fce, (q15_t)0xfb00, (q15_t)0x7fcd, (q15_t)0xfaf3, + (q15_t)0x7fcc, (q15_t)0xfae6, (q15_t)0x7fcb, (q15_t)0xfada, (q15_t)0x7fca, (q15_t)0xfacd, (q15_t)0x7fc9, (q15_t)0xfac1, + (q15_t)0x7fc8, (q15_t)0xfab4, (q15_t)0x7fc7, (q15_t)0xfaa8, (q15_t)0x7fc6, (q15_t)0xfa9b, (q15_t)0x7fc5, (q15_t)0xfa8f, + (q15_t)0x7fc4, (q15_t)0xfa82, (q15_t)0x7fc3, (q15_t)0xfa76, (q15_t)0x7fc1, (q15_t)0xfa69, (q15_t)0x7fc0, (q15_t)0xfa5d, + (q15_t)0x7fbf, (q15_t)0xfa50, (q15_t)0x7fbe, (q15_t)0xfa44, (q15_t)0x7fbd, (q15_t)0xfa37, (q15_t)0x7fbc, (q15_t)0xfa2b, + (q15_t)0x7fbb, (q15_t)0xfa1e, (q15_t)0x7fb9, (q15_t)0xfa12, (q15_t)0x7fb8, (q15_t)0xfa05, (q15_t)0x7fb7, (q15_t)0xf9f9, + (q15_t)0x7fb6, (q15_t)0xf9ec, (q15_t)0x7fb5, (q15_t)0xf9e0, (q15_t)0x7fb4, (q15_t)0xf9d3, (q15_t)0x7fb2, (q15_t)0xf9c7, + (q15_t)0x7fb1, (q15_t)0xf9ba, (q15_t)0x7fb0, (q15_t)0xf9ae, (q15_t)0x7faf, (q15_t)0xf9a1, (q15_t)0x7fad, (q15_t)0xf995, + (q15_t)0x7fac, (q15_t)0xf988, (q15_t)0x7fab, (q15_t)0xf97c, (q15_t)0x7faa, (q15_t)0xf96f, (q15_t)0x7fa8, (q15_t)0xf963, + (q15_t)0x7fa7, (q15_t)0xf956, (q15_t)0x7fa6, (q15_t)0xf94a, (q15_t)0x7fa4, (q15_t)0xf93d, (q15_t)0x7fa3, (q15_t)0xf931, + (q15_t)0x7fa2, (q15_t)0xf924, (q15_t)0x7fa0, (q15_t)0xf918, (q15_t)0x7f9f, (q15_t)0xf90b, (q15_t)0x7f9e, (q15_t)0xf8ff, + (q15_t)0x7f9c, (q15_t)0xf8f2, (q15_t)0x7f9b, (q15_t)0xf8e6, (q15_t)0x7f99, (q15_t)0xf8d9, (q15_t)0x7f98, (q15_t)0xf8cd, + (q15_t)0x7f97, (q15_t)0xf8c0, (q15_t)0x7f95, (q15_t)0xf8b4, (q15_t)0x7f94, (q15_t)0xf8a7, (q15_t)0x7f92, (q15_t)0xf89b, + (q15_t)0x7f91, (q15_t)0xf88e, (q15_t)0x7f8f, (q15_t)0xf882, (q15_t)0x7f8e, (q15_t)0xf875, (q15_t)0x7f8c, (q15_t)0xf869, + (q15_t)0x7f8b, (q15_t)0xf85c, (q15_t)0x7f89, (q15_t)0xf850, (q15_t)0x7f88, (q15_t)0xf843, (q15_t)0x7f86, (q15_t)0xf837, + (q15_t)0x7f85, (q15_t)0xf82a, (q15_t)0x7f83, (q15_t)0xf81e, (q15_t)0x7f82, (q15_t)0xf811, (q15_t)0x7f80, (q15_t)0xf805, + (q15_t)0x7f7f, (q15_t)0xf7f9, (q15_t)0x7f7d, (q15_t)0xf7ec, (q15_t)0x7f7b, (q15_t)0xf7e0, (q15_t)0x7f7a, (q15_t)0xf7d3, + (q15_t)0x7f78, (q15_t)0xf7c7, (q15_t)0x7f77, (q15_t)0xf7ba, (q15_t)0x7f75, (q15_t)0xf7ae, (q15_t)0x7f73, (q15_t)0xf7a1, + (q15_t)0x7f72, (q15_t)0xf795, (q15_t)0x7f70, (q15_t)0xf788, (q15_t)0x7f6e, (q15_t)0xf77c, (q15_t)0x7f6d, (q15_t)0xf76f, + (q15_t)0x7f6b, (q15_t)0xf763, (q15_t)0x7f69, (q15_t)0xf757, (q15_t)0x7f68, (q15_t)0xf74a, (q15_t)0x7f66, (q15_t)0xf73e, + (q15_t)0x7f64, (q15_t)0xf731, (q15_t)0x7f62, (q15_t)0xf725, (q15_t)0x7f61, (q15_t)0xf718, (q15_t)0x7f5f, (q15_t)0xf70c, + (q15_t)0x7f5d, (q15_t)0xf6ff, (q15_t)0x7f5b, (q15_t)0xf6f3, (q15_t)0x7f5a, (q15_t)0xf6e7, (q15_t)0x7f58, (q15_t)0xf6da, + (q15_t)0x7f56, (q15_t)0xf6ce, (q15_t)0x7f54, (q15_t)0xf6c1, (q15_t)0x7f52, (q15_t)0xf6b5, (q15_t)0x7f51, (q15_t)0xf6a8, + (q15_t)0x7f4f, (q15_t)0xf69c, (q15_t)0x7f4d, (q15_t)0xf690, (q15_t)0x7f4b, (q15_t)0xf683, (q15_t)0x7f49, (q15_t)0xf677, + (q15_t)0x7f47, (q15_t)0xf66a, (q15_t)0x7f45, (q15_t)0xf65e, (q15_t)0x7f43, (q15_t)0xf651, (q15_t)0x7f42, (q15_t)0xf645, + (q15_t)0x7f40, (q15_t)0xf639, (q15_t)0x7f3e, (q15_t)0xf62c, (q15_t)0x7f3c, (q15_t)0xf620, (q15_t)0x7f3a, (q15_t)0xf613, + (q15_t)0x7f38, (q15_t)0xf607, (q15_t)0x7f36, (q15_t)0xf5fa, (q15_t)0x7f34, (q15_t)0xf5ee, (q15_t)0x7f32, (q15_t)0xf5e2, + (q15_t)0x7f30, (q15_t)0xf5d5, (q15_t)0x7f2e, (q15_t)0xf5c9, (q15_t)0x7f2c, (q15_t)0xf5bc, (q15_t)0x7f2a, (q15_t)0xf5b0, + (q15_t)0x7f28, (q15_t)0xf5a4, (q15_t)0x7f26, (q15_t)0xf597, (q15_t)0x7f24, (q15_t)0xf58b, (q15_t)0x7f22, (q15_t)0xf57e, + (q15_t)0x7f20, (q15_t)0xf572, (q15_t)0x7f1e, (q15_t)0xf566, (q15_t)0x7f1c, (q15_t)0xf559, (q15_t)0x7f19, (q15_t)0xf54d, + (q15_t)0x7f17, (q15_t)0xf540, (q15_t)0x7f15, (q15_t)0xf534, (q15_t)0x7f13, (q15_t)0xf528, (q15_t)0x7f11, (q15_t)0xf51b, + (q15_t)0x7f0f, (q15_t)0xf50f, (q15_t)0x7f0d, (q15_t)0xf503, (q15_t)0x7f0a, (q15_t)0xf4f6, (q15_t)0x7f08, (q15_t)0xf4ea, + (q15_t)0x7f06, (q15_t)0xf4dd, (q15_t)0x7f04, (q15_t)0xf4d1, (q15_t)0x7f02, (q15_t)0xf4c5, (q15_t)0x7f00, (q15_t)0xf4b8, + (q15_t)0x7efd, (q15_t)0xf4ac, (q15_t)0x7efb, (q15_t)0xf4a0, (q15_t)0x7ef9, (q15_t)0xf493, (q15_t)0x7ef7, (q15_t)0xf487, + (q15_t)0x7ef4, (q15_t)0xf47b, (q15_t)0x7ef2, (q15_t)0xf46e, (q15_t)0x7ef0, (q15_t)0xf462, (q15_t)0x7eed, (q15_t)0xf455, + (q15_t)0x7eeb, (q15_t)0xf449, (q15_t)0x7ee9, (q15_t)0xf43d, (q15_t)0x7ee7, (q15_t)0xf430, (q15_t)0x7ee4, (q15_t)0xf424, + (q15_t)0x7ee2, (q15_t)0xf418, (q15_t)0x7ee0, (q15_t)0xf40b, (q15_t)0x7edd, (q15_t)0xf3ff, (q15_t)0x7edb, (q15_t)0xf3f3, + (q15_t)0x7ed8, (q15_t)0xf3e6, (q15_t)0x7ed6, (q15_t)0xf3da, (q15_t)0x7ed4, (q15_t)0xf3ce, (q15_t)0x7ed1, (q15_t)0xf3c1, + (q15_t)0x7ecf, (q15_t)0xf3b5, (q15_t)0x7ecc, (q15_t)0xf3a9, (q15_t)0x7eca, (q15_t)0xf39c, (q15_t)0x7ec8, (q15_t)0xf390, + (q15_t)0x7ec5, (q15_t)0xf384, (q15_t)0x7ec3, (q15_t)0xf377, (q15_t)0x7ec0, (q15_t)0xf36b, (q15_t)0x7ebe, (q15_t)0xf35f, + (q15_t)0x7ebb, (q15_t)0xf352, (q15_t)0x7eb9, (q15_t)0xf346, (q15_t)0x7eb6, (q15_t)0xf33a, (q15_t)0x7eb4, (q15_t)0xf32d, + (q15_t)0x7eb1, (q15_t)0xf321, (q15_t)0x7eaf, (q15_t)0xf315, (q15_t)0x7eac, (q15_t)0xf308, (q15_t)0x7eaa, (q15_t)0xf2fc, + (q15_t)0x7ea7, (q15_t)0xf2f0, (q15_t)0x7ea5, (q15_t)0xf2e4, (q15_t)0x7ea2, (q15_t)0xf2d7, (q15_t)0x7e9f, (q15_t)0xf2cb, + (q15_t)0x7e9d, (q15_t)0xf2bf, (q15_t)0x7e9a, (q15_t)0xf2b2, (q15_t)0x7e98, (q15_t)0xf2a6, (q15_t)0x7e95, (q15_t)0xf29a, + (q15_t)0x7e92, (q15_t)0xf28e, (q15_t)0x7e90, (q15_t)0xf281, (q15_t)0x7e8d, (q15_t)0xf275, (q15_t)0x7e8a, (q15_t)0xf269, + (q15_t)0x7e88, (q15_t)0xf25c, (q15_t)0x7e85, (q15_t)0xf250, (q15_t)0x7e82, (q15_t)0xf244, (q15_t)0x7e80, (q15_t)0xf238, + (q15_t)0x7e7d, (q15_t)0xf22b, (q15_t)0x7e7a, (q15_t)0xf21f, (q15_t)0x7e77, (q15_t)0xf213, (q15_t)0x7e75, (q15_t)0xf207, + (q15_t)0x7e72, (q15_t)0xf1fa, (q15_t)0x7e6f, (q15_t)0xf1ee, (q15_t)0x7e6c, (q15_t)0xf1e2, (q15_t)0x7e6a, (q15_t)0xf1d5, + (q15_t)0x7e67, (q15_t)0xf1c9, (q15_t)0x7e64, (q15_t)0xf1bd, (q15_t)0x7e61, (q15_t)0xf1b1, (q15_t)0x7e5e, (q15_t)0xf1a4, + (q15_t)0x7e5c, (q15_t)0xf198, (q15_t)0x7e59, (q15_t)0xf18c, (q15_t)0x7e56, (q15_t)0xf180, (q15_t)0x7e53, (q15_t)0xf174, + (q15_t)0x7e50, (q15_t)0xf167, (q15_t)0x7e4d, (q15_t)0xf15b, (q15_t)0x7e4a, (q15_t)0xf14f, (q15_t)0x7e48, (q15_t)0xf143, + (q15_t)0x7e45, (q15_t)0xf136, (q15_t)0x7e42, (q15_t)0xf12a, (q15_t)0x7e3f, (q15_t)0xf11e, (q15_t)0x7e3c, (q15_t)0xf112, + (q15_t)0x7e39, (q15_t)0xf105, (q15_t)0x7e36, (q15_t)0xf0f9, (q15_t)0x7e33, (q15_t)0xf0ed, (q15_t)0x7e30, (q15_t)0xf0e1, + (q15_t)0x7e2d, (q15_t)0xf0d5, (q15_t)0x7e2a, (q15_t)0xf0c8, (q15_t)0x7e27, (q15_t)0xf0bc, (q15_t)0x7e24, (q15_t)0xf0b0, + (q15_t)0x7e21, (q15_t)0xf0a4, (q15_t)0x7e1e, (q15_t)0xf098, (q15_t)0x7e1b, (q15_t)0xf08b, (q15_t)0x7e18, (q15_t)0xf07f, + (q15_t)0x7e15, (q15_t)0xf073, (q15_t)0x7e12, (q15_t)0xf067, (q15_t)0x7e0f, (q15_t)0xf05b, (q15_t)0x7e0c, (q15_t)0xf04e, + (q15_t)0x7e09, (q15_t)0xf042, (q15_t)0x7e06, (q15_t)0xf036, (q15_t)0x7e03, (q15_t)0xf02a, (q15_t)0x7dff, (q15_t)0xf01e, + (q15_t)0x7dfc, (q15_t)0xf012, (q15_t)0x7df9, (q15_t)0xf005, (q15_t)0x7df6, (q15_t)0xeff9, (q15_t)0x7df3, (q15_t)0xefed, + (q15_t)0x7df0, (q15_t)0xefe1, (q15_t)0x7ded, (q15_t)0xefd5, (q15_t)0x7de9, (q15_t)0xefc9, (q15_t)0x7de6, (q15_t)0xefbc, + (q15_t)0x7de3, (q15_t)0xefb0, (q15_t)0x7de0, (q15_t)0xefa4, (q15_t)0x7ddd, (q15_t)0xef98, (q15_t)0x7dd9, (q15_t)0xef8c, + (q15_t)0x7dd6, (q15_t)0xef80, (q15_t)0x7dd3, (q15_t)0xef74, (q15_t)0x7dd0, (q15_t)0xef67, (q15_t)0x7dcc, (q15_t)0xef5b, + (q15_t)0x7dc9, (q15_t)0xef4f, (q15_t)0x7dc6, (q15_t)0xef43, (q15_t)0x7dc2, (q15_t)0xef37, (q15_t)0x7dbf, (q15_t)0xef2b, + (q15_t)0x7dbc, (q15_t)0xef1f, (q15_t)0x7db9, (q15_t)0xef13, (q15_t)0x7db5, (q15_t)0xef06, (q15_t)0x7db2, (q15_t)0xeefa, + (q15_t)0x7daf, (q15_t)0xeeee, (q15_t)0x7dab, (q15_t)0xeee2, (q15_t)0x7da8, (q15_t)0xeed6, (q15_t)0x7da4, (q15_t)0xeeca, + (q15_t)0x7da1, (q15_t)0xeebe, (q15_t)0x7d9e, (q15_t)0xeeb2, (q15_t)0x7d9a, (q15_t)0xeea6, (q15_t)0x7d97, (q15_t)0xee99, + (q15_t)0x7d93, (q15_t)0xee8d, (q15_t)0x7d90, (q15_t)0xee81, (q15_t)0x7d8d, (q15_t)0xee75, (q15_t)0x7d89, (q15_t)0xee69, + (q15_t)0x7d86, (q15_t)0xee5d, (q15_t)0x7d82, (q15_t)0xee51, (q15_t)0x7d7f, (q15_t)0xee45, (q15_t)0x7d7b, (q15_t)0xee39, + (q15_t)0x7d78, (q15_t)0xee2d, (q15_t)0x7d74, (q15_t)0xee21, (q15_t)0x7d71, (q15_t)0xee15, (q15_t)0x7d6d, (q15_t)0xee09, + (q15_t)0x7d6a, (q15_t)0xedfc, (q15_t)0x7d66, (q15_t)0xedf0, (q15_t)0x7d63, (q15_t)0xede4, (q15_t)0x7d5f, (q15_t)0xedd8, + (q15_t)0x7d5b, (q15_t)0xedcc, (q15_t)0x7d58, (q15_t)0xedc0, (q15_t)0x7d54, (q15_t)0xedb4, (q15_t)0x7d51, (q15_t)0xeda8, + (q15_t)0x7d4d, (q15_t)0xed9c, (q15_t)0x7d49, (q15_t)0xed90, (q15_t)0x7d46, (q15_t)0xed84, (q15_t)0x7d42, (q15_t)0xed78, + (q15_t)0x7d3f, (q15_t)0xed6c, (q15_t)0x7d3b, (q15_t)0xed60, (q15_t)0x7d37, (q15_t)0xed54, (q15_t)0x7d34, (q15_t)0xed48, + (q15_t)0x7d30, (q15_t)0xed3c, (q15_t)0x7d2c, (q15_t)0xed30, (q15_t)0x7d28, (q15_t)0xed24, (q15_t)0x7d25, (q15_t)0xed18, + (q15_t)0x7d21, (q15_t)0xed0c, (q15_t)0x7d1d, (q15_t)0xed00, (q15_t)0x7d1a, (q15_t)0xecf4, (q15_t)0x7d16, (q15_t)0xece8, + (q15_t)0x7d12, (q15_t)0xecdc, (q15_t)0x7d0e, (q15_t)0xecd0, (q15_t)0x7d0b, (q15_t)0xecc4, (q15_t)0x7d07, (q15_t)0xecb8, + (q15_t)0x7d03, (q15_t)0xecac, (q15_t)0x7cff, (q15_t)0xeca0, (q15_t)0x7cfb, (q15_t)0xec94, (q15_t)0x7cf8, (q15_t)0xec88, + (q15_t)0x7cf4, (q15_t)0xec7c, (q15_t)0x7cf0, (q15_t)0xec70, (q15_t)0x7cec, (q15_t)0xec64, (q15_t)0x7ce8, (q15_t)0xec58, + (q15_t)0x7ce4, (q15_t)0xec4c, (q15_t)0x7ce0, (q15_t)0xec40, (q15_t)0x7cdd, (q15_t)0xec34, (q15_t)0x7cd9, (q15_t)0xec28, + (q15_t)0x7cd5, (q15_t)0xec1c, (q15_t)0x7cd1, (q15_t)0xec10, (q15_t)0x7ccd, (q15_t)0xec05, (q15_t)0x7cc9, (q15_t)0xebf9, + (q15_t)0x7cc5, (q15_t)0xebed, (q15_t)0x7cc1, (q15_t)0xebe1, (q15_t)0x7cbd, (q15_t)0xebd5, (q15_t)0x7cb9, (q15_t)0xebc9, + (q15_t)0x7cb5, (q15_t)0xebbd, (q15_t)0x7cb1, (q15_t)0xebb1, (q15_t)0x7cad, (q15_t)0xeba5, (q15_t)0x7ca9, (q15_t)0xeb99, + (q15_t)0x7ca5, (q15_t)0xeb8d, (q15_t)0x7ca1, (q15_t)0xeb81, (q15_t)0x7c9d, (q15_t)0xeb75, (q15_t)0x7c99, (q15_t)0xeb6a, + (q15_t)0x7c95, (q15_t)0xeb5e, (q15_t)0x7c91, (q15_t)0xeb52, (q15_t)0x7c8d, (q15_t)0xeb46, (q15_t)0x7c89, (q15_t)0xeb3a, + (q15_t)0x7c85, (q15_t)0xeb2e, (q15_t)0x7c81, (q15_t)0xeb22, (q15_t)0x7c7d, (q15_t)0xeb16, (q15_t)0x7c79, (q15_t)0xeb0a, + (q15_t)0x7c74, (q15_t)0xeaff, (q15_t)0x7c70, (q15_t)0xeaf3, (q15_t)0x7c6c, (q15_t)0xeae7, (q15_t)0x7c68, (q15_t)0xeadb, + (q15_t)0x7c64, (q15_t)0xeacf, (q15_t)0x7c60, (q15_t)0xeac3, (q15_t)0x7c5b, (q15_t)0xeab7, (q15_t)0x7c57, (q15_t)0xeaac, + (q15_t)0x7c53, (q15_t)0xeaa0, (q15_t)0x7c4f, (q15_t)0xea94, (q15_t)0x7c4b, (q15_t)0xea88, (q15_t)0x7c46, (q15_t)0xea7c, + (q15_t)0x7c42, (q15_t)0xea70, (q15_t)0x7c3e, (q15_t)0xea65, (q15_t)0x7c3a, (q15_t)0xea59, (q15_t)0x7c36, (q15_t)0xea4d, + (q15_t)0x7c31, (q15_t)0xea41, (q15_t)0x7c2d, (q15_t)0xea35, (q15_t)0x7c29, (q15_t)0xea29, (q15_t)0x7c24, (q15_t)0xea1e, + (q15_t)0x7c20, (q15_t)0xea12, (q15_t)0x7c1c, (q15_t)0xea06, (q15_t)0x7c17, (q15_t)0xe9fa, (q15_t)0x7c13, (q15_t)0xe9ee, + (q15_t)0x7c0f, (q15_t)0xe9e3, (q15_t)0x7c0a, (q15_t)0xe9d7, (q15_t)0x7c06, (q15_t)0xe9cb, (q15_t)0x7c02, (q15_t)0xe9bf, + (q15_t)0x7bfd, (q15_t)0xe9b4, (q15_t)0x7bf9, (q15_t)0xe9a8, (q15_t)0x7bf5, (q15_t)0xe99c, (q15_t)0x7bf0, (q15_t)0xe990, + (q15_t)0x7bec, (q15_t)0xe984, (q15_t)0x7be7, (q15_t)0xe979, (q15_t)0x7be3, (q15_t)0xe96d, (q15_t)0x7bde, (q15_t)0xe961, + (q15_t)0x7bda, (q15_t)0xe955, (q15_t)0x7bd6, (q15_t)0xe94a, (q15_t)0x7bd1, (q15_t)0xe93e, (q15_t)0x7bcd, (q15_t)0xe932, + (q15_t)0x7bc8, (q15_t)0xe926, (q15_t)0x7bc4, (q15_t)0xe91b, (q15_t)0x7bbf, (q15_t)0xe90f, (q15_t)0x7bbb, (q15_t)0xe903, + (q15_t)0x7bb6, (q15_t)0xe8f7, (q15_t)0x7bb2, (q15_t)0xe8ec, (q15_t)0x7bad, (q15_t)0xe8e0, (q15_t)0x7ba9, (q15_t)0xe8d4, + (q15_t)0x7ba4, (q15_t)0xe8c9, (q15_t)0x7b9f, (q15_t)0xe8bd, (q15_t)0x7b9b, (q15_t)0xe8b1, (q15_t)0x7b96, (q15_t)0xe8a5, + (q15_t)0x7b92, (q15_t)0xe89a, (q15_t)0x7b8d, (q15_t)0xe88e, (q15_t)0x7b88, (q15_t)0xe882, (q15_t)0x7b84, (q15_t)0xe877, + (q15_t)0x7b7f, (q15_t)0xe86b, (q15_t)0x7b7b, (q15_t)0xe85f, (q15_t)0x7b76, (q15_t)0xe854, (q15_t)0x7b71, (q15_t)0xe848, + (q15_t)0x7b6d, (q15_t)0xe83c, (q15_t)0x7b68, (q15_t)0xe831, (q15_t)0x7b63, (q15_t)0xe825, (q15_t)0x7b5f, (q15_t)0xe819, + (q15_t)0x7b5a, (q15_t)0xe80e, (q15_t)0x7b55, (q15_t)0xe802, (q15_t)0x7b50, (q15_t)0xe7f6, (q15_t)0x7b4c, (q15_t)0xe7eb, + (q15_t)0x7b47, (q15_t)0xe7df, (q15_t)0x7b42, (q15_t)0xe7d3, (q15_t)0x7b3e, (q15_t)0xe7c8, (q15_t)0x7b39, (q15_t)0xe7bc, + (q15_t)0x7b34, (q15_t)0xe7b1, (q15_t)0x7b2f, (q15_t)0xe7a5, (q15_t)0x7b2a, (q15_t)0xe799, (q15_t)0x7b26, (q15_t)0xe78e, + (q15_t)0x7b21, (q15_t)0xe782, (q15_t)0x7b1c, (q15_t)0xe777, (q15_t)0x7b17, (q15_t)0xe76b, (q15_t)0x7b12, (q15_t)0xe75f, + (q15_t)0x7b0e, (q15_t)0xe754, (q15_t)0x7b09, (q15_t)0xe748, (q15_t)0x7b04, (q15_t)0xe73d, (q15_t)0x7aff, (q15_t)0xe731, + (q15_t)0x7afa, (q15_t)0xe725, (q15_t)0x7af5, (q15_t)0xe71a, (q15_t)0x7af0, (q15_t)0xe70e, (q15_t)0x7aeb, (q15_t)0xe703, + (q15_t)0x7ae6, (q15_t)0xe6f7, (q15_t)0x7ae2, (q15_t)0xe6ec, (q15_t)0x7add, (q15_t)0xe6e0, (q15_t)0x7ad8, (q15_t)0xe6d4, + (q15_t)0x7ad3, (q15_t)0xe6c9, (q15_t)0x7ace, (q15_t)0xe6bd, (q15_t)0x7ac9, (q15_t)0xe6b2, (q15_t)0x7ac4, (q15_t)0xe6a6, + (q15_t)0x7abf, (q15_t)0xe69b, (q15_t)0x7aba, (q15_t)0xe68f, (q15_t)0x7ab5, (q15_t)0xe684, (q15_t)0x7ab0, (q15_t)0xe678, + (q15_t)0x7aab, (q15_t)0xe66d, (q15_t)0x7aa6, (q15_t)0xe661, (q15_t)0x7aa1, (q15_t)0xe656, (q15_t)0x7a9c, (q15_t)0xe64a, + (q15_t)0x7a97, (q15_t)0xe63f, (q15_t)0x7a92, (q15_t)0xe633, (q15_t)0x7a8d, (q15_t)0xe628, (q15_t)0x7a88, (q15_t)0xe61c, + (q15_t)0x7a82, (q15_t)0xe611, (q15_t)0x7a7d, (q15_t)0xe605, (q15_t)0x7a78, (q15_t)0xe5fa, (q15_t)0x7a73, (q15_t)0xe5ee, + (q15_t)0x7a6e, (q15_t)0xe5e3, (q15_t)0x7a69, (q15_t)0xe5d7, (q15_t)0x7a64, (q15_t)0xe5cc, (q15_t)0x7a5f, (q15_t)0xe5c0, + (q15_t)0x7a59, (q15_t)0xe5b5, (q15_t)0x7a54, (q15_t)0xe5a9, (q15_t)0x7a4f, (q15_t)0xe59e, (q15_t)0x7a4a, (q15_t)0xe592, + (q15_t)0x7a45, (q15_t)0xe587, (q15_t)0x7a3f, (q15_t)0xe57c, (q15_t)0x7a3a, (q15_t)0xe570, (q15_t)0x7a35, (q15_t)0xe565, + (q15_t)0x7a30, (q15_t)0xe559, (q15_t)0x7a2b, (q15_t)0xe54e, (q15_t)0x7a25, (q15_t)0xe542, (q15_t)0x7a20, (q15_t)0xe537, + (q15_t)0x7a1b, (q15_t)0xe52c, (q15_t)0x7a16, (q15_t)0xe520, (q15_t)0x7a10, (q15_t)0xe515, (q15_t)0x7a0b, (q15_t)0xe509, + (q15_t)0x7a06, (q15_t)0xe4fe, (q15_t)0x7a00, (q15_t)0xe4f3, (q15_t)0x79fb, (q15_t)0xe4e7, (q15_t)0x79f6, (q15_t)0xe4dc, + (q15_t)0x79f0, (q15_t)0xe4d0, (q15_t)0x79eb, (q15_t)0xe4c5, (q15_t)0x79e6, (q15_t)0xe4ba, (q15_t)0x79e0, (q15_t)0xe4ae, + (q15_t)0x79db, (q15_t)0xe4a3, (q15_t)0x79d6, (q15_t)0xe498, (q15_t)0x79d0, (q15_t)0xe48c, (q15_t)0x79cb, (q15_t)0xe481, + (q15_t)0x79c5, (q15_t)0xe476, (q15_t)0x79c0, (q15_t)0xe46a, (q15_t)0x79bb, (q15_t)0xe45f, (q15_t)0x79b5, (q15_t)0xe454, + (q15_t)0x79b0, (q15_t)0xe448, (q15_t)0x79aa, (q15_t)0xe43d, (q15_t)0x79a5, (q15_t)0xe432, (q15_t)0x799f, (q15_t)0xe426, + (q15_t)0x799a, (q15_t)0xe41b, (q15_t)0x7994, (q15_t)0xe410, (q15_t)0x798f, (q15_t)0xe404, (q15_t)0x7989, (q15_t)0xe3f9, + (q15_t)0x7984, (q15_t)0xe3ee, (q15_t)0x797e, (q15_t)0xe3e2, (q15_t)0x7979, (q15_t)0xe3d7, (q15_t)0x7973, (q15_t)0xe3cc, + (q15_t)0x796e, (q15_t)0xe3c1, (q15_t)0x7968, (q15_t)0xe3b5, (q15_t)0x7963, (q15_t)0xe3aa, (q15_t)0x795d, (q15_t)0xe39f, + (q15_t)0x7958, (q15_t)0xe394, (q15_t)0x7952, (q15_t)0xe388, (q15_t)0x794c, (q15_t)0xe37d, (q15_t)0x7947, (q15_t)0xe372, + (q15_t)0x7941, (q15_t)0xe367, (q15_t)0x793b, (q15_t)0xe35b, (q15_t)0x7936, (q15_t)0xe350, (q15_t)0x7930, (q15_t)0xe345, + (q15_t)0x792b, (q15_t)0xe33a, (q15_t)0x7925, (q15_t)0xe32e, (q15_t)0x791f, (q15_t)0xe323, (q15_t)0x791a, (q15_t)0xe318, + (q15_t)0x7914, (q15_t)0xe30d, (q15_t)0x790e, (q15_t)0xe301, (q15_t)0x7909, (q15_t)0xe2f6, (q15_t)0x7903, (q15_t)0xe2eb, + (q15_t)0x78fd, (q15_t)0xe2e0, (q15_t)0x78f7, (q15_t)0xe2d5, (q15_t)0x78f2, (q15_t)0xe2ca, (q15_t)0x78ec, (q15_t)0xe2be, + (q15_t)0x78e6, (q15_t)0xe2b3, (q15_t)0x78e0, (q15_t)0xe2a8, (q15_t)0x78db, (q15_t)0xe29d, (q15_t)0x78d5, (q15_t)0xe292, + (q15_t)0x78cf, (q15_t)0xe287, (q15_t)0x78c9, (q15_t)0xe27b, (q15_t)0x78c3, (q15_t)0xe270, (q15_t)0x78be, (q15_t)0xe265, + (q15_t)0x78b8, (q15_t)0xe25a, (q15_t)0x78b2, (q15_t)0xe24f, (q15_t)0x78ac, (q15_t)0xe244, (q15_t)0x78a6, (q15_t)0xe239, + (q15_t)0x78a1, (q15_t)0xe22d, (q15_t)0x789b, (q15_t)0xe222, (q15_t)0x7895, (q15_t)0xe217, (q15_t)0x788f, (q15_t)0xe20c, + (q15_t)0x7889, (q15_t)0xe201, (q15_t)0x7883, (q15_t)0xe1f6, (q15_t)0x787d, (q15_t)0xe1eb, (q15_t)0x7877, (q15_t)0xe1e0, + (q15_t)0x7871, (q15_t)0xe1d5, (q15_t)0x786b, (q15_t)0xe1ca, (q15_t)0x7866, (q15_t)0xe1be, (q15_t)0x7860, (q15_t)0xe1b3, + (q15_t)0x785a, (q15_t)0xe1a8, (q15_t)0x7854, (q15_t)0xe19d, (q15_t)0x784e, (q15_t)0xe192, (q15_t)0x7848, (q15_t)0xe187, + (q15_t)0x7842, (q15_t)0xe17c, (q15_t)0x783c, (q15_t)0xe171, (q15_t)0x7836, (q15_t)0xe166, (q15_t)0x7830, (q15_t)0xe15b, + (q15_t)0x782a, (q15_t)0xe150, (q15_t)0x7824, (q15_t)0xe145, (q15_t)0x781e, (q15_t)0xe13a, (q15_t)0x7818, (q15_t)0xe12f, + (q15_t)0x7812, (q15_t)0xe124, (q15_t)0x780b, (q15_t)0xe119, (q15_t)0x7805, (q15_t)0xe10e, (q15_t)0x77ff, (q15_t)0xe103, + (q15_t)0x77f9, (q15_t)0xe0f8, (q15_t)0x77f3, (q15_t)0xe0ed, (q15_t)0x77ed, (q15_t)0xe0e2, (q15_t)0x77e7, (q15_t)0xe0d7, + (q15_t)0x77e1, (q15_t)0xe0cc, (q15_t)0x77db, (q15_t)0xe0c1, (q15_t)0x77d5, (q15_t)0xe0b6, (q15_t)0x77ce, (q15_t)0xe0ab, + (q15_t)0x77c8, (q15_t)0xe0a0, (q15_t)0x77c2, (q15_t)0xe095, (q15_t)0x77bc, (q15_t)0xe08a, (q15_t)0x77b6, (q15_t)0xe07f, + (q15_t)0x77b0, (q15_t)0xe074, (q15_t)0x77a9, (q15_t)0xe069, (q15_t)0x77a3, (q15_t)0xe05e, (q15_t)0x779d, (q15_t)0xe054, + (q15_t)0x7797, (q15_t)0xe049, (q15_t)0x7790, (q15_t)0xe03e, (q15_t)0x778a, (q15_t)0xe033, (q15_t)0x7784, (q15_t)0xe028, + (q15_t)0x777e, (q15_t)0xe01d, (q15_t)0x7777, (q15_t)0xe012, (q15_t)0x7771, (q15_t)0xe007, (q15_t)0x776b, (q15_t)0xdffc, + (q15_t)0x7765, (q15_t)0xdff1, (q15_t)0x775e, (q15_t)0xdfe7, (q15_t)0x7758, (q15_t)0xdfdc, (q15_t)0x7752, (q15_t)0xdfd1, + (q15_t)0x774b, (q15_t)0xdfc6, (q15_t)0x7745, (q15_t)0xdfbb, (q15_t)0x773f, (q15_t)0xdfb0, (q15_t)0x7738, (q15_t)0xdfa5, + (q15_t)0x7732, (q15_t)0xdf9b, (q15_t)0x772c, (q15_t)0xdf90, (q15_t)0x7725, (q15_t)0xdf85, (q15_t)0x771f, (q15_t)0xdf7a, + (q15_t)0x7718, (q15_t)0xdf6f, (q15_t)0x7712, (q15_t)0xdf65, (q15_t)0x770c, (q15_t)0xdf5a, (q15_t)0x7705, (q15_t)0xdf4f, + (q15_t)0x76ff, (q15_t)0xdf44, (q15_t)0x76f8, (q15_t)0xdf39, (q15_t)0x76f2, (q15_t)0xdf2f, (q15_t)0x76eb, (q15_t)0xdf24, + (q15_t)0x76e5, (q15_t)0xdf19, (q15_t)0x76df, (q15_t)0xdf0e, (q15_t)0x76d8, (q15_t)0xdf03, (q15_t)0x76d2, (q15_t)0xdef9, + (q15_t)0x76cb, (q15_t)0xdeee, (q15_t)0x76c5, (q15_t)0xdee3, (q15_t)0x76be, (q15_t)0xded8, (q15_t)0x76b8, (q15_t)0xdece, + (q15_t)0x76b1, (q15_t)0xdec3, (q15_t)0x76ab, (q15_t)0xdeb8, (q15_t)0x76a4, (q15_t)0xdead, (q15_t)0x769d, (q15_t)0xdea3, + (q15_t)0x7697, (q15_t)0xde98, (q15_t)0x7690, (q15_t)0xde8d, (q15_t)0x768a, (q15_t)0xde83, (q15_t)0x7683, (q15_t)0xde78, + (q15_t)0x767d, (q15_t)0xde6d, (q15_t)0x7676, (q15_t)0xde62, (q15_t)0x766f, (q15_t)0xde58, (q15_t)0x7669, (q15_t)0xde4d, + (q15_t)0x7662, (q15_t)0xde42, (q15_t)0x765c, (q15_t)0xde38, (q15_t)0x7655, (q15_t)0xde2d, (q15_t)0x764e, (q15_t)0xde22, + (q15_t)0x7648, (q15_t)0xde18, (q15_t)0x7641, (q15_t)0xde0d, (q15_t)0x763a, (q15_t)0xde02, (q15_t)0x7634, (q15_t)0xddf8, + (q15_t)0x762d, (q15_t)0xdded, (q15_t)0x7626, (q15_t)0xdde2, (q15_t)0x7620, (q15_t)0xddd8, (q15_t)0x7619, (q15_t)0xddcd, + (q15_t)0x7612, (q15_t)0xddc3, (q15_t)0x760b, (q15_t)0xddb8, (q15_t)0x7605, (q15_t)0xddad, (q15_t)0x75fe, (q15_t)0xdda3, + (q15_t)0x75f7, (q15_t)0xdd98, (q15_t)0x75f0, (q15_t)0xdd8e, (q15_t)0x75ea, (q15_t)0xdd83, (q15_t)0x75e3, (q15_t)0xdd78, + (q15_t)0x75dc, (q15_t)0xdd6e, (q15_t)0x75d5, (q15_t)0xdd63, (q15_t)0x75ce, (q15_t)0xdd59, (q15_t)0x75c8, (q15_t)0xdd4e, + (q15_t)0x75c1, (q15_t)0xdd44, (q15_t)0x75ba, (q15_t)0xdd39, (q15_t)0x75b3, (q15_t)0xdd2e, (q15_t)0x75ac, (q15_t)0xdd24, + (q15_t)0x75a5, (q15_t)0xdd19, (q15_t)0x759f, (q15_t)0xdd0f, (q15_t)0x7598, (q15_t)0xdd04, (q15_t)0x7591, (q15_t)0xdcfa, + (q15_t)0x758a, (q15_t)0xdcef, (q15_t)0x7583, (q15_t)0xdce5, (q15_t)0x757c, (q15_t)0xdcda, (q15_t)0x7575, (q15_t)0xdcd0, + (q15_t)0x756e, (q15_t)0xdcc5, (q15_t)0x7567, (q15_t)0xdcbb, (q15_t)0x7561, (q15_t)0xdcb0, (q15_t)0x755a, (q15_t)0xdca6, + (q15_t)0x7553, (q15_t)0xdc9b, (q15_t)0x754c, (q15_t)0xdc91, (q15_t)0x7545, (q15_t)0xdc86, (q15_t)0x753e, (q15_t)0xdc7c, + (q15_t)0x7537, (q15_t)0xdc72, (q15_t)0x7530, (q15_t)0xdc67, (q15_t)0x7529, (q15_t)0xdc5d, (q15_t)0x7522, (q15_t)0xdc52, + (q15_t)0x751b, (q15_t)0xdc48, (q15_t)0x7514, (q15_t)0xdc3d, (q15_t)0x750d, (q15_t)0xdc33, (q15_t)0x7506, (q15_t)0xdc29, + (q15_t)0x74ff, (q15_t)0xdc1e, (q15_t)0x74f8, (q15_t)0xdc14, (q15_t)0x74f1, (q15_t)0xdc09, (q15_t)0x74ea, (q15_t)0xdbff, + (q15_t)0x74e2, (q15_t)0xdbf5, (q15_t)0x74db, (q15_t)0xdbea, (q15_t)0x74d4, (q15_t)0xdbe0, (q15_t)0x74cd, (q15_t)0xdbd5, + (q15_t)0x74c6, (q15_t)0xdbcb, (q15_t)0x74bf, (q15_t)0xdbc1, (q15_t)0x74b8, (q15_t)0xdbb6, (q15_t)0x74b1, (q15_t)0xdbac, + (q15_t)0x74aa, (q15_t)0xdba2, (q15_t)0x74a2, (q15_t)0xdb97, (q15_t)0x749b, (q15_t)0xdb8d, (q15_t)0x7494, (q15_t)0xdb83, + (q15_t)0x748d, (q15_t)0xdb78, (q15_t)0x7486, (q15_t)0xdb6e, (q15_t)0x747f, (q15_t)0xdb64, (q15_t)0x7477, (q15_t)0xdb59, + (q15_t)0x7470, (q15_t)0xdb4f, (q15_t)0x7469, (q15_t)0xdb45, (q15_t)0x7462, (q15_t)0xdb3b, (q15_t)0x745b, (q15_t)0xdb30, + (q15_t)0x7453, (q15_t)0xdb26, (q15_t)0x744c, (q15_t)0xdb1c, (q15_t)0x7445, (q15_t)0xdb11, (q15_t)0x743e, (q15_t)0xdb07, + (q15_t)0x7436, (q15_t)0xdafd, (q15_t)0x742f, (q15_t)0xdaf3, (q15_t)0x7428, (q15_t)0xdae8, (q15_t)0x7420, (q15_t)0xdade, + (q15_t)0x7419, (q15_t)0xdad4, (q15_t)0x7412, (q15_t)0xdaca, (q15_t)0x740b, (q15_t)0xdabf, (q15_t)0x7403, (q15_t)0xdab5, + (q15_t)0x73fc, (q15_t)0xdaab, (q15_t)0x73f5, (q15_t)0xdaa1, (q15_t)0x73ed, (q15_t)0xda97, (q15_t)0x73e6, (q15_t)0xda8c, + (q15_t)0x73df, (q15_t)0xda82, (q15_t)0x73d7, (q15_t)0xda78, (q15_t)0x73d0, (q15_t)0xda6e, (q15_t)0x73c8, (q15_t)0xda64, + (q15_t)0x73c1, (q15_t)0xda5a, (q15_t)0x73ba, (q15_t)0xda4f, (q15_t)0x73b2, (q15_t)0xda45, (q15_t)0x73ab, (q15_t)0xda3b, + (q15_t)0x73a3, (q15_t)0xda31, (q15_t)0x739c, (q15_t)0xda27, (q15_t)0x7395, (q15_t)0xda1d, (q15_t)0x738d, (q15_t)0xda13, + (q15_t)0x7386, (q15_t)0xda08, (q15_t)0x737e, (q15_t)0xd9fe, (q15_t)0x7377, (q15_t)0xd9f4, (q15_t)0x736f, (q15_t)0xd9ea, + (q15_t)0x7368, (q15_t)0xd9e0, (q15_t)0x7360, (q15_t)0xd9d6, (q15_t)0x7359, (q15_t)0xd9cc, (q15_t)0x7351, (q15_t)0xd9c2, + (q15_t)0x734a, (q15_t)0xd9b8, (q15_t)0x7342, (q15_t)0xd9ae, (q15_t)0x733b, (q15_t)0xd9a4, (q15_t)0x7333, (q15_t)0xd99a, + (q15_t)0x732c, (q15_t)0xd98f, (q15_t)0x7324, (q15_t)0xd985, (q15_t)0x731d, (q15_t)0xd97b, (q15_t)0x7315, (q15_t)0xd971, + (q15_t)0x730d, (q15_t)0xd967, (q15_t)0x7306, (q15_t)0xd95d, (q15_t)0x72fe, (q15_t)0xd953, (q15_t)0x72f7, (q15_t)0xd949, + (q15_t)0x72ef, (q15_t)0xd93f, (q15_t)0x72e7, (q15_t)0xd935, (q15_t)0x72e0, (q15_t)0xd92b, (q15_t)0x72d8, (q15_t)0xd921, + (q15_t)0x72d0, (q15_t)0xd917, (q15_t)0x72c9, (q15_t)0xd90d, (q15_t)0x72c1, (q15_t)0xd903, (q15_t)0x72ba, (q15_t)0xd8f9, + (q15_t)0x72b2, (q15_t)0xd8ef, (q15_t)0x72aa, (q15_t)0xd8e6, (q15_t)0x72a3, (q15_t)0xd8dc, (q15_t)0x729b, (q15_t)0xd8d2, + (q15_t)0x7293, (q15_t)0xd8c8, (q15_t)0x728b, (q15_t)0xd8be, (q15_t)0x7284, (q15_t)0xd8b4, (q15_t)0x727c, (q15_t)0xd8aa, + (q15_t)0x7274, (q15_t)0xd8a0, (q15_t)0x726d, (q15_t)0xd896, (q15_t)0x7265, (q15_t)0xd88c, (q15_t)0x725d, (q15_t)0xd882, + (q15_t)0x7255, (q15_t)0xd878, (q15_t)0x724e, (q15_t)0xd86f, (q15_t)0x7246, (q15_t)0xd865, (q15_t)0x723e, (q15_t)0xd85b, + (q15_t)0x7236, (q15_t)0xd851, (q15_t)0x722e, (q15_t)0xd847, (q15_t)0x7227, (q15_t)0xd83d, (q15_t)0x721f, (q15_t)0xd833, + (q15_t)0x7217, (q15_t)0xd82a, (q15_t)0x720f, (q15_t)0xd820, (q15_t)0x7207, (q15_t)0xd816, (q15_t)0x71ff, (q15_t)0xd80c, + (q15_t)0x71f8, (q15_t)0xd802, (q15_t)0x71f0, (q15_t)0xd7f8, (q15_t)0x71e8, (q15_t)0xd7ef, (q15_t)0x71e0, (q15_t)0xd7e5, + (q15_t)0x71d8, (q15_t)0xd7db, (q15_t)0x71d0, (q15_t)0xd7d1, (q15_t)0x71c8, (q15_t)0xd7c8, (q15_t)0x71c0, (q15_t)0xd7be, + (q15_t)0x71b9, (q15_t)0xd7b4, (q15_t)0x71b1, (q15_t)0xd7aa, (q15_t)0x71a9, (q15_t)0xd7a0, (q15_t)0x71a1, (q15_t)0xd797, + (q15_t)0x7199, (q15_t)0xd78d, (q15_t)0x7191, (q15_t)0xd783, (q15_t)0x7189, (q15_t)0xd77a, (q15_t)0x7181, (q15_t)0xd770, + (q15_t)0x7179, (q15_t)0xd766, (q15_t)0x7171, (q15_t)0xd75c, (q15_t)0x7169, (q15_t)0xd753, (q15_t)0x7161, (q15_t)0xd749, + (q15_t)0x7159, (q15_t)0xd73f, (q15_t)0x7151, (q15_t)0xd736, (q15_t)0x7149, (q15_t)0xd72c, (q15_t)0x7141, (q15_t)0xd722, + (q15_t)0x7139, (q15_t)0xd719, (q15_t)0x7131, (q15_t)0xd70f, (q15_t)0x7129, (q15_t)0xd705, (q15_t)0x7121, (q15_t)0xd6fc, + (q15_t)0x7119, (q15_t)0xd6f2, (q15_t)0x7111, (q15_t)0xd6e8, (q15_t)0x7109, (q15_t)0xd6df, (q15_t)0x7101, (q15_t)0xd6d5, + (q15_t)0x70f9, (q15_t)0xd6cb, (q15_t)0x70f0, (q15_t)0xd6c2, (q15_t)0x70e8, (q15_t)0xd6b8, (q15_t)0x70e0, (q15_t)0xd6af, + (q15_t)0x70d8, (q15_t)0xd6a5, (q15_t)0x70d0, (q15_t)0xd69b, (q15_t)0x70c8, (q15_t)0xd692, (q15_t)0x70c0, (q15_t)0xd688, + (q15_t)0x70b8, (q15_t)0xd67f, (q15_t)0x70af, (q15_t)0xd675, (q15_t)0x70a7, (q15_t)0xd66c, (q15_t)0x709f, (q15_t)0xd662, + (q15_t)0x7097, (q15_t)0xd659, (q15_t)0x708f, (q15_t)0xd64f, (q15_t)0x7087, (q15_t)0xd645, (q15_t)0x707e, (q15_t)0xd63c, + (q15_t)0x7076, (q15_t)0xd632, (q15_t)0x706e, (q15_t)0xd629, (q15_t)0x7066, (q15_t)0xd61f, (q15_t)0x705d, (q15_t)0xd616, + (q15_t)0x7055, (q15_t)0xd60c, (q15_t)0x704d, (q15_t)0xd603, (q15_t)0x7045, (q15_t)0xd5f9, (q15_t)0x703c, (q15_t)0xd5f0, + (q15_t)0x7034, (q15_t)0xd5e6, (q15_t)0x702c, (q15_t)0xd5dd, (q15_t)0x7024, (q15_t)0xd5d4, (q15_t)0x701b, (q15_t)0xd5ca, + (q15_t)0x7013, (q15_t)0xd5c1, (q15_t)0x700b, (q15_t)0xd5b7, (q15_t)0x7002, (q15_t)0xd5ae, (q15_t)0x6ffa, (q15_t)0xd5a4, + (q15_t)0x6ff2, (q15_t)0xd59b, (q15_t)0x6fea, (q15_t)0xd592, (q15_t)0x6fe1, (q15_t)0xd588, (q15_t)0x6fd9, (q15_t)0xd57f, + (q15_t)0x6fd0, (q15_t)0xd575, (q15_t)0x6fc8, (q15_t)0xd56c, (q15_t)0x6fc0, (q15_t)0xd563, (q15_t)0x6fb7, (q15_t)0xd559, + (q15_t)0x6faf, (q15_t)0xd550, (q15_t)0x6fa7, (q15_t)0xd547, (q15_t)0x6f9e, (q15_t)0xd53d, (q15_t)0x6f96, (q15_t)0xd534, + (q15_t)0x6f8d, (q15_t)0xd52a, (q15_t)0x6f85, (q15_t)0xd521, (q15_t)0x6f7d, (q15_t)0xd518, (q15_t)0x6f74, (q15_t)0xd50e, + (q15_t)0x6f6c, (q15_t)0xd505, (q15_t)0x6f63, (q15_t)0xd4fc, (q15_t)0x6f5b, (q15_t)0xd4f3, (q15_t)0x6f52, (q15_t)0xd4e9, + (q15_t)0x6f4a, (q15_t)0xd4e0, (q15_t)0x6f41, (q15_t)0xd4d7, (q15_t)0x6f39, (q15_t)0xd4cd, (q15_t)0x6f30, (q15_t)0xd4c4, + (q15_t)0x6f28, (q15_t)0xd4bb, (q15_t)0x6f20, (q15_t)0xd4b2, (q15_t)0x6f17, (q15_t)0xd4a8, (q15_t)0x6f0e, (q15_t)0xd49f, + (q15_t)0x6f06, (q15_t)0xd496, (q15_t)0x6efd, (q15_t)0xd48d, (q15_t)0x6ef5, (q15_t)0xd483, (q15_t)0x6eec, (q15_t)0xd47a, + (q15_t)0x6ee4, (q15_t)0xd471, (q15_t)0x6edb, (q15_t)0xd468, (q15_t)0x6ed3, (q15_t)0xd45f, (q15_t)0x6eca, (q15_t)0xd455, + (q15_t)0x6ec2, (q15_t)0xd44c, (q15_t)0x6eb9, (q15_t)0xd443, (q15_t)0x6eb0, (q15_t)0xd43a, (q15_t)0x6ea8, (q15_t)0xd431, + (q15_t)0x6e9f, (q15_t)0xd428, (q15_t)0x6e97, (q15_t)0xd41e, (q15_t)0x6e8e, (q15_t)0xd415, (q15_t)0x6e85, (q15_t)0xd40c, + (q15_t)0x6e7d, (q15_t)0xd403, (q15_t)0x6e74, (q15_t)0xd3fa, (q15_t)0x6e6b, (q15_t)0xd3f1, (q15_t)0x6e63, (q15_t)0xd3e8, + (q15_t)0x6e5a, (q15_t)0xd3df, (q15_t)0x6e51, (q15_t)0xd3d5, (q15_t)0x6e49, (q15_t)0xd3cc, (q15_t)0x6e40, (q15_t)0xd3c3, + (q15_t)0x6e37, (q15_t)0xd3ba, (q15_t)0x6e2f, (q15_t)0xd3b1, (q15_t)0x6e26, (q15_t)0xd3a8, (q15_t)0x6e1d, (q15_t)0xd39f, + (q15_t)0x6e15, (q15_t)0xd396, (q15_t)0x6e0c, (q15_t)0xd38d, (q15_t)0x6e03, (q15_t)0xd384, (q15_t)0x6dfa, (q15_t)0xd37b, + (q15_t)0x6df2, (q15_t)0xd372, (q15_t)0x6de9, (q15_t)0xd369, (q15_t)0x6de0, (q15_t)0xd360, (q15_t)0x6dd7, (q15_t)0xd357, + (q15_t)0x6dcf, (q15_t)0xd34e, (q15_t)0x6dc6, (q15_t)0xd345, (q15_t)0x6dbd, (q15_t)0xd33c, (q15_t)0x6db4, (q15_t)0xd333, + (q15_t)0x6dab, (q15_t)0xd32a, (q15_t)0x6da3, (q15_t)0xd321, (q15_t)0x6d9a, (q15_t)0xd318, (q15_t)0x6d91, (q15_t)0xd30f, + (q15_t)0x6d88, (q15_t)0xd306, (q15_t)0x6d7f, (q15_t)0xd2fd, (q15_t)0x6d76, (q15_t)0xd2f4, (q15_t)0x6d6e, (q15_t)0xd2eb, + (q15_t)0x6d65, (q15_t)0xd2e2, (q15_t)0x6d5c, (q15_t)0xd2d9, (q15_t)0x6d53, (q15_t)0xd2d1, (q15_t)0x6d4a, (q15_t)0xd2c8, + (q15_t)0x6d41, (q15_t)0xd2bf, (q15_t)0x6d38, (q15_t)0xd2b6, (q15_t)0x6d2f, (q15_t)0xd2ad, (q15_t)0x6d27, (q15_t)0xd2a4, + (q15_t)0x6d1e, (q15_t)0xd29b, (q15_t)0x6d15, (q15_t)0xd292, (q15_t)0x6d0c, (q15_t)0xd28a, (q15_t)0x6d03, (q15_t)0xd281, + (q15_t)0x6cfa, (q15_t)0xd278, (q15_t)0x6cf1, (q15_t)0xd26f, (q15_t)0x6ce8, (q15_t)0xd266, (q15_t)0x6cdf, (q15_t)0xd25d, + (q15_t)0x6cd6, (q15_t)0xd255, (q15_t)0x6ccd, (q15_t)0xd24c, (q15_t)0x6cc4, (q15_t)0xd243, (q15_t)0x6cbb, (q15_t)0xd23a, + (q15_t)0x6cb2, (q15_t)0xd231, (q15_t)0x6ca9, (q15_t)0xd229, (q15_t)0x6ca0, (q15_t)0xd220, (q15_t)0x6c97, (q15_t)0xd217, + (q15_t)0x6c8e, (q15_t)0xd20e, (q15_t)0x6c85, (q15_t)0xd206, (q15_t)0x6c7c, (q15_t)0xd1fd, (q15_t)0x6c73, (q15_t)0xd1f4, + (q15_t)0x6c6a, (q15_t)0xd1eb, (q15_t)0x6c61, (q15_t)0xd1e3, (q15_t)0x6c58, (q15_t)0xd1da, (q15_t)0x6c4f, (q15_t)0xd1d1, + (q15_t)0x6c46, (q15_t)0xd1c9, (q15_t)0x6c3d, (q15_t)0xd1c0, (q15_t)0x6c34, (q15_t)0xd1b7, (q15_t)0x6c2b, (q15_t)0xd1af, + (q15_t)0x6c21, (q15_t)0xd1a6, (q15_t)0x6c18, (q15_t)0xd19d, (q15_t)0x6c0f, (q15_t)0xd195, (q15_t)0x6c06, (q15_t)0xd18c, + (q15_t)0x6bfd, (q15_t)0xd183, (q15_t)0x6bf4, (q15_t)0xd17b, (q15_t)0x6beb, (q15_t)0xd172, (q15_t)0x6be2, (q15_t)0xd169, + (q15_t)0x6bd8, (q15_t)0xd161, (q15_t)0x6bcf, (q15_t)0xd158, (q15_t)0x6bc6, (q15_t)0xd150, (q15_t)0x6bbd, (q15_t)0xd147, + (q15_t)0x6bb4, (q15_t)0xd13e, (q15_t)0x6bab, (q15_t)0xd136, (q15_t)0x6ba1, (q15_t)0xd12d, (q15_t)0x6b98, (q15_t)0xd125, + (q15_t)0x6b8f, (q15_t)0xd11c, (q15_t)0x6b86, (q15_t)0xd114, (q15_t)0x6b7d, (q15_t)0xd10b, (q15_t)0x6b73, (q15_t)0xd103, + (q15_t)0x6b6a, (q15_t)0xd0fa, (q15_t)0x6b61, (q15_t)0xd0f2, (q15_t)0x6b58, (q15_t)0xd0e9, (q15_t)0x6b4e, (q15_t)0xd0e0, + (q15_t)0x6b45, (q15_t)0xd0d8, (q15_t)0x6b3c, (q15_t)0xd0d0, (q15_t)0x6b33, (q15_t)0xd0c7, (q15_t)0x6b29, (q15_t)0xd0bf, + (q15_t)0x6b20, (q15_t)0xd0b6, (q15_t)0x6b17, (q15_t)0xd0ae, (q15_t)0x6b0d, (q15_t)0xd0a5, (q15_t)0x6b04, (q15_t)0xd09d, + (q15_t)0x6afb, (q15_t)0xd094, (q15_t)0x6af2, (q15_t)0xd08c, (q15_t)0x6ae8, (q15_t)0xd083, (q15_t)0x6adf, (q15_t)0xd07b, + (q15_t)0x6ad6, (q15_t)0xd073, (q15_t)0x6acc, (q15_t)0xd06a, (q15_t)0x6ac3, (q15_t)0xd062, (q15_t)0x6ab9, (q15_t)0xd059, + (q15_t)0x6ab0, (q15_t)0xd051, (q15_t)0x6aa7, (q15_t)0xd049, (q15_t)0x6a9d, (q15_t)0xd040, (q15_t)0x6a94, (q15_t)0xd038, + (q15_t)0x6a8b, (q15_t)0xd030, (q15_t)0x6a81, (q15_t)0xd027, (q15_t)0x6a78, (q15_t)0xd01f, (q15_t)0x6a6e, (q15_t)0xd016, + (q15_t)0x6a65, (q15_t)0xd00e, (q15_t)0x6a5c, (q15_t)0xd006, (q15_t)0x6a52, (q15_t)0xcffe, (q15_t)0x6a49, (q15_t)0xcff5, + (q15_t)0x6a3f, (q15_t)0xcfed, (q15_t)0x6a36, (q15_t)0xcfe5, (q15_t)0x6a2c, (q15_t)0xcfdc, (q15_t)0x6a23, (q15_t)0xcfd4, + (q15_t)0x6a1a, (q15_t)0xcfcc, (q15_t)0x6a10, (q15_t)0xcfc4, (q15_t)0x6a07, (q15_t)0xcfbb, (q15_t)0x69fd, (q15_t)0xcfb3, + (q15_t)0x69f4, (q15_t)0xcfab, (q15_t)0x69ea, (q15_t)0xcfa3, (q15_t)0x69e1, (q15_t)0xcf9a, (q15_t)0x69d7, (q15_t)0xcf92, + (q15_t)0x69ce, (q15_t)0xcf8a, (q15_t)0x69c4, (q15_t)0xcf82, (q15_t)0x69bb, (q15_t)0xcf79, (q15_t)0x69b1, (q15_t)0xcf71, + (q15_t)0x69a7, (q15_t)0xcf69, (q15_t)0x699e, (q15_t)0xcf61, (q15_t)0x6994, (q15_t)0xcf59, (q15_t)0x698b, (q15_t)0xcf51, + (q15_t)0x6981, (q15_t)0xcf48, (q15_t)0x6978, (q15_t)0xcf40, (q15_t)0x696e, (q15_t)0xcf38, (q15_t)0x6965, (q15_t)0xcf30, + (q15_t)0x695b, (q15_t)0xcf28, (q15_t)0x6951, (q15_t)0xcf20, (q15_t)0x6948, (q15_t)0xcf18, (q15_t)0x693e, (q15_t)0xcf10, + (q15_t)0x6935, (q15_t)0xcf07, (q15_t)0x692b, (q15_t)0xceff, (q15_t)0x6921, (q15_t)0xcef7, (q15_t)0x6918, (q15_t)0xceef, + (q15_t)0x690e, (q15_t)0xcee7, (q15_t)0x6904, (q15_t)0xcedf, (q15_t)0x68fb, (q15_t)0xced7, (q15_t)0x68f1, (q15_t)0xcecf, + (q15_t)0x68e7, (q15_t)0xcec7, (q15_t)0x68de, (q15_t)0xcebf, (q15_t)0x68d4, (q15_t)0xceb7, (q15_t)0x68ca, (q15_t)0xceaf, + (q15_t)0x68c1, (q15_t)0xcea7, (q15_t)0x68b7, (q15_t)0xce9f, (q15_t)0x68ad, (q15_t)0xce97, (q15_t)0x68a4, (q15_t)0xce8f, + (q15_t)0x689a, (q15_t)0xce87, (q15_t)0x6890, (q15_t)0xce7f, (q15_t)0x6886, (q15_t)0xce77, (q15_t)0x687d, (q15_t)0xce6f, + (q15_t)0x6873, (q15_t)0xce67, (q15_t)0x6869, (q15_t)0xce5f, (q15_t)0x6860, (q15_t)0xce57, (q15_t)0x6856, (q15_t)0xce4f, + (q15_t)0x684c, (q15_t)0xce47, (q15_t)0x6842, (q15_t)0xce40, (q15_t)0x6838, (q15_t)0xce38, (q15_t)0x682f, (q15_t)0xce30, + (q15_t)0x6825, (q15_t)0xce28, (q15_t)0x681b, (q15_t)0xce20, (q15_t)0x6811, (q15_t)0xce18, (q15_t)0x6808, (q15_t)0xce10, + (q15_t)0x67fe, (q15_t)0xce08, (q15_t)0x67f4, (q15_t)0xce01, (q15_t)0x67ea, (q15_t)0xcdf9, (q15_t)0x67e0, (q15_t)0xcdf1, + (q15_t)0x67d6, (q15_t)0xcde9, (q15_t)0x67cd, (q15_t)0xcde1, (q15_t)0x67c3, (q15_t)0xcdd9, (q15_t)0x67b9, (q15_t)0xcdd2, + (q15_t)0x67af, (q15_t)0xcdca, (q15_t)0x67a5, (q15_t)0xcdc2, (q15_t)0x679b, (q15_t)0xcdba, (q15_t)0x6791, (q15_t)0xcdb2, + (q15_t)0x6788, (q15_t)0xcdab, (q15_t)0x677e, (q15_t)0xcda3, (q15_t)0x6774, (q15_t)0xcd9b, (q15_t)0x676a, (q15_t)0xcd93, + (q15_t)0x6760, (q15_t)0xcd8c, (q15_t)0x6756, (q15_t)0xcd84, (q15_t)0x674c, (q15_t)0xcd7c, (q15_t)0x6742, (q15_t)0xcd75, + (q15_t)0x6738, (q15_t)0xcd6d, (q15_t)0x672e, (q15_t)0xcd65, (q15_t)0x6724, (q15_t)0xcd5d, (q15_t)0x671a, (q15_t)0xcd56, + (q15_t)0x6711, (q15_t)0xcd4e, (q15_t)0x6707, (q15_t)0xcd46, (q15_t)0x66fd, (q15_t)0xcd3f, (q15_t)0x66f3, (q15_t)0xcd37, + (q15_t)0x66e9, (q15_t)0xcd30, (q15_t)0x66df, (q15_t)0xcd28, (q15_t)0x66d5, (q15_t)0xcd20, (q15_t)0x66cb, (q15_t)0xcd19, + (q15_t)0x66c1, (q15_t)0xcd11, (q15_t)0x66b7, (q15_t)0xcd09, (q15_t)0x66ad, (q15_t)0xcd02, (q15_t)0x66a3, (q15_t)0xccfa, + (q15_t)0x6699, (q15_t)0xccf3, (q15_t)0x668f, (q15_t)0xcceb, (q15_t)0x6685, (q15_t)0xcce3, (q15_t)0x667b, (q15_t)0xccdc, + (q15_t)0x6671, (q15_t)0xccd4, (q15_t)0x6666, (q15_t)0xcccd, (q15_t)0x665c, (q15_t)0xccc5, (q15_t)0x6652, (q15_t)0xccbe, + (q15_t)0x6648, (q15_t)0xccb6, (q15_t)0x663e, (q15_t)0xccaf, (q15_t)0x6634, (q15_t)0xcca7, (q15_t)0x662a, (q15_t)0xcca0, + (q15_t)0x6620, (q15_t)0xcc98, (q15_t)0x6616, (q15_t)0xcc91, (q15_t)0x660c, (q15_t)0xcc89, (q15_t)0x6602, (q15_t)0xcc82, + (q15_t)0x65f8, (q15_t)0xcc7a, (q15_t)0x65ed, (q15_t)0xcc73, (q15_t)0x65e3, (q15_t)0xcc6b, (q15_t)0x65d9, (q15_t)0xcc64, + (q15_t)0x65cf, (q15_t)0xcc5d, (q15_t)0x65c5, (q15_t)0xcc55, (q15_t)0x65bb, (q15_t)0xcc4e, (q15_t)0x65b1, (q15_t)0xcc46, + (q15_t)0x65a6, (q15_t)0xcc3f, (q15_t)0x659c, (q15_t)0xcc38, (q15_t)0x6592, (q15_t)0xcc30, (q15_t)0x6588, (q15_t)0xcc29, + (q15_t)0x657e, (q15_t)0xcc21, (q15_t)0x6574, (q15_t)0xcc1a, (q15_t)0x6569, (q15_t)0xcc13, (q15_t)0x655f, (q15_t)0xcc0b, + (q15_t)0x6555, (q15_t)0xcc04, (q15_t)0x654b, (q15_t)0xcbfd, (q15_t)0x6541, (q15_t)0xcbf5, (q15_t)0x6536, (q15_t)0xcbee, + (q15_t)0x652c, (q15_t)0xcbe7, (q15_t)0x6522, (q15_t)0xcbe0, (q15_t)0x6518, (q15_t)0xcbd8, (q15_t)0x650d, (q15_t)0xcbd1, + (q15_t)0x6503, (q15_t)0xcbca, (q15_t)0x64f9, (q15_t)0xcbc2, (q15_t)0x64ef, (q15_t)0xcbbb, (q15_t)0x64e4, (q15_t)0xcbb4, + (q15_t)0x64da, (q15_t)0xcbad, (q15_t)0x64d0, (q15_t)0xcba5, (q15_t)0x64c5, (q15_t)0xcb9e, (q15_t)0x64bb, (q15_t)0xcb97, + (q15_t)0x64b1, (q15_t)0xcb90, (q15_t)0x64a7, (q15_t)0xcb89, (q15_t)0x649c, (q15_t)0xcb81, (q15_t)0x6492, (q15_t)0xcb7a, + (q15_t)0x6488, (q15_t)0xcb73, (q15_t)0x647d, (q15_t)0xcb6c, (q15_t)0x6473, (q15_t)0xcb65, (q15_t)0x6469, (q15_t)0xcb5e, + (q15_t)0x645e, (q15_t)0xcb56, (q15_t)0x6454, (q15_t)0xcb4f, (q15_t)0x644a, (q15_t)0xcb48, (q15_t)0x643f, (q15_t)0xcb41, + (q15_t)0x6435, (q15_t)0xcb3a, (q15_t)0x642b, (q15_t)0xcb33, (q15_t)0x6420, (q15_t)0xcb2c, (q15_t)0x6416, (q15_t)0xcb25, + (q15_t)0x640b, (q15_t)0xcb1e, (q15_t)0x6401, (q15_t)0xcb16, (q15_t)0x63f7, (q15_t)0xcb0f, (q15_t)0x63ec, (q15_t)0xcb08, + (q15_t)0x63e2, (q15_t)0xcb01, (q15_t)0x63d7, (q15_t)0xcafa, (q15_t)0x63cd, (q15_t)0xcaf3, (q15_t)0x63c3, (q15_t)0xcaec, + (q15_t)0x63b8, (q15_t)0xcae5, (q15_t)0x63ae, (q15_t)0xcade, (q15_t)0x63a3, (q15_t)0xcad7, (q15_t)0x6399, (q15_t)0xcad0, + (q15_t)0x638e, (q15_t)0xcac9, (q15_t)0x6384, (q15_t)0xcac2, (q15_t)0x637a, (q15_t)0xcabb, (q15_t)0x636f, (q15_t)0xcab4, + (q15_t)0x6365, (q15_t)0xcaad, (q15_t)0x635a, (q15_t)0xcaa6, (q15_t)0x6350, (q15_t)0xca9f, (q15_t)0x6345, (q15_t)0xca99, + (q15_t)0x633b, (q15_t)0xca92, (q15_t)0x6330, (q15_t)0xca8b, (q15_t)0x6326, (q15_t)0xca84, (q15_t)0x631b, (q15_t)0xca7d, + (q15_t)0x6311, (q15_t)0xca76, (q15_t)0x6306, (q15_t)0xca6f, (q15_t)0x62fc, (q15_t)0xca68, (q15_t)0x62f1, (q15_t)0xca61, + (q15_t)0x62e7, (q15_t)0xca5b, (q15_t)0x62dc, (q15_t)0xca54, (q15_t)0x62d2, (q15_t)0xca4d, (q15_t)0x62c7, (q15_t)0xca46, + (q15_t)0x62bc, (q15_t)0xca3f, (q15_t)0x62b2, (q15_t)0xca38, (q15_t)0x62a7, (q15_t)0xca32, (q15_t)0x629d, (q15_t)0xca2b, + (q15_t)0x6292, (q15_t)0xca24, (q15_t)0x6288, (q15_t)0xca1d, (q15_t)0x627d, (q15_t)0xca16, (q15_t)0x6272, (q15_t)0xca10, + (q15_t)0x6268, (q15_t)0xca09, (q15_t)0x625d, (q15_t)0xca02, (q15_t)0x6253, (q15_t)0xc9fb, (q15_t)0x6248, (q15_t)0xc9f5, + (q15_t)0x623d, (q15_t)0xc9ee, (q15_t)0x6233, (q15_t)0xc9e7, (q15_t)0x6228, (q15_t)0xc9e0, (q15_t)0x621e, (q15_t)0xc9da, + (q15_t)0x6213, (q15_t)0xc9d3, (q15_t)0x6208, (q15_t)0xc9cc, (q15_t)0x61fe, (q15_t)0xc9c6, (q15_t)0x61f3, (q15_t)0xc9bf, + (q15_t)0x61e8, (q15_t)0xc9b8, (q15_t)0x61de, (q15_t)0xc9b2, (q15_t)0x61d3, (q15_t)0xc9ab, (q15_t)0x61c8, (q15_t)0xc9a4, + (q15_t)0x61be, (q15_t)0xc99e, (q15_t)0x61b3, (q15_t)0xc997, (q15_t)0x61a8, (q15_t)0xc991, (q15_t)0x619e, (q15_t)0xc98a, + (q15_t)0x6193, (q15_t)0xc983, (q15_t)0x6188, (q15_t)0xc97d, (q15_t)0x617d, (q15_t)0xc976, (q15_t)0x6173, (q15_t)0xc970, + (q15_t)0x6168, (q15_t)0xc969, (q15_t)0x615d, (q15_t)0xc963, (q15_t)0x6153, (q15_t)0xc95c, (q15_t)0x6148, (q15_t)0xc955, + (q15_t)0x613d, (q15_t)0xc94f, (q15_t)0x6132, (q15_t)0xc948, (q15_t)0x6128, (q15_t)0xc942, (q15_t)0x611d, (q15_t)0xc93b, + (q15_t)0x6112, (q15_t)0xc935, (q15_t)0x6107, (q15_t)0xc92e, (q15_t)0x60fd, (q15_t)0xc928, (q15_t)0x60f2, (q15_t)0xc921, + (q15_t)0x60e7, (q15_t)0xc91b, (q15_t)0x60dc, (q15_t)0xc915, (q15_t)0x60d1, (q15_t)0xc90e, (q15_t)0x60c7, (q15_t)0xc908, + (q15_t)0x60bc, (q15_t)0xc901, (q15_t)0x60b1, (q15_t)0xc8fb, (q15_t)0x60a6, (q15_t)0xc8f4, (q15_t)0x609b, (q15_t)0xc8ee, + (q15_t)0x6091, (q15_t)0xc8e8, (q15_t)0x6086, (q15_t)0xc8e1, (q15_t)0x607b, (q15_t)0xc8db, (q15_t)0x6070, (q15_t)0xc8d4, + (q15_t)0x6065, (q15_t)0xc8ce, (q15_t)0x605b, (q15_t)0xc8c8, (q15_t)0x6050, (q15_t)0xc8c1, (q15_t)0x6045, (q15_t)0xc8bb, + (q15_t)0x603a, (q15_t)0xc8b5, (q15_t)0x602f, (q15_t)0xc8ae, (q15_t)0x6024, (q15_t)0xc8a8, (q15_t)0x6019, (q15_t)0xc8a2, + (q15_t)0x600f, (q15_t)0xc89b, (q15_t)0x6004, (q15_t)0xc895, (q15_t)0x5ff9, (q15_t)0xc88f, (q15_t)0x5fee, (q15_t)0xc889, + (q15_t)0x5fe3, (q15_t)0xc882, (q15_t)0x5fd8, (q15_t)0xc87c, (q15_t)0x5fcd, (q15_t)0xc876, (q15_t)0x5fc2, (q15_t)0xc870, + (q15_t)0x5fb7, (q15_t)0xc869, (q15_t)0x5fac, (q15_t)0xc863, (q15_t)0x5fa2, (q15_t)0xc85d, (q15_t)0x5f97, (q15_t)0xc857, + (q15_t)0x5f8c, (q15_t)0xc850, (q15_t)0x5f81, (q15_t)0xc84a, (q15_t)0x5f76, (q15_t)0xc844, (q15_t)0x5f6b, (q15_t)0xc83e, + (q15_t)0x5f60, (q15_t)0xc838, (q15_t)0x5f55, (q15_t)0xc832, (q15_t)0x5f4a, (q15_t)0xc82b, (q15_t)0x5f3f, (q15_t)0xc825, + (q15_t)0x5f34, (q15_t)0xc81f, (q15_t)0x5f29, (q15_t)0xc819, (q15_t)0x5f1e, (q15_t)0xc813, (q15_t)0x5f13, (q15_t)0xc80d, + (q15_t)0x5f08, (q15_t)0xc807, (q15_t)0x5efd, (q15_t)0xc801, (q15_t)0x5ef2, (q15_t)0xc7fb, (q15_t)0x5ee7, (q15_t)0xc7f5, + (q15_t)0x5edc, (q15_t)0xc7ee, (q15_t)0x5ed1, (q15_t)0xc7e8, (q15_t)0x5ec6, (q15_t)0xc7e2, (q15_t)0x5ebb, (q15_t)0xc7dc, + (q15_t)0x5eb0, (q15_t)0xc7d6, (q15_t)0x5ea5, (q15_t)0xc7d0, (q15_t)0x5e9a, (q15_t)0xc7ca, (q15_t)0x5e8f, (q15_t)0xc7c4, + (q15_t)0x5e84, (q15_t)0xc7be, (q15_t)0x5e79, (q15_t)0xc7b8, (q15_t)0x5e6e, (q15_t)0xc7b2, (q15_t)0x5e63, (q15_t)0xc7ac, + (q15_t)0x5e58, (q15_t)0xc7a6, (q15_t)0x5e4d, (q15_t)0xc7a0, (q15_t)0x5e42, (q15_t)0xc79a, (q15_t)0x5e36, (q15_t)0xc795, + (q15_t)0x5e2b, (q15_t)0xc78f, (q15_t)0x5e20, (q15_t)0xc789, (q15_t)0x5e15, (q15_t)0xc783, (q15_t)0x5e0a, (q15_t)0xc77d, + (q15_t)0x5dff, (q15_t)0xc777, (q15_t)0x5df4, (q15_t)0xc771, (q15_t)0x5de9, (q15_t)0xc76b, (q15_t)0x5dde, (q15_t)0xc765, + (q15_t)0x5dd3, (q15_t)0xc75f, (q15_t)0x5dc7, (q15_t)0xc75a, (q15_t)0x5dbc, (q15_t)0xc754, (q15_t)0x5db1, (q15_t)0xc74e, + (q15_t)0x5da6, (q15_t)0xc748, (q15_t)0x5d9b, (q15_t)0xc742, (q15_t)0x5d90, (q15_t)0xc73d, (q15_t)0x5d85, (q15_t)0xc737, + (q15_t)0x5d79, (q15_t)0xc731, (q15_t)0x5d6e, (q15_t)0xc72b, (q15_t)0x5d63, (q15_t)0xc725, (q15_t)0x5d58, (q15_t)0xc720, + (q15_t)0x5d4d, (q15_t)0xc71a, (q15_t)0x5d42, (q15_t)0xc714, (q15_t)0x5d36, (q15_t)0xc70e, (q15_t)0x5d2b, (q15_t)0xc709, + (q15_t)0x5d20, (q15_t)0xc703, (q15_t)0x5d15, (q15_t)0xc6fd, (q15_t)0x5d0a, (q15_t)0xc6f7, (q15_t)0x5cff, (q15_t)0xc6f2, + (q15_t)0x5cf3, (q15_t)0xc6ec, (q15_t)0x5ce8, (q15_t)0xc6e6, (q15_t)0x5cdd, (q15_t)0xc6e1, (q15_t)0x5cd2, (q15_t)0xc6db, + (q15_t)0x5cc6, (q15_t)0xc6d5, (q15_t)0x5cbb, (q15_t)0xc6d0, (q15_t)0x5cb0, (q15_t)0xc6ca, (q15_t)0x5ca5, (q15_t)0xc6c5, + (q15_t)0x5c99, (q15_t)0xc6bf, (q15_t)0x5c8e, (q15_t)0xc6b9, (q15_t)0x5c83, (q15_t)0xc6b4, (q15_t)0x5c78, (q15_t)0xc6ae, + (q15_t)0x5c6c, (q15_t)0xc6a8, (q15_t)0x5c61, (q15_t)0xc6a3, (q15_t)0x5c56, (q15_t)0xc69d, (q15_t)0x5c4b, (q15_t)0xc698, + (q15_t)0x5c3f, (q15_t)0xc692, (q15_t)0x5c34, (q15_t)0xc68d, (q15_t)0x5c29, (q15_t)0xc687, (q15_t)0x5c1e, (q15_t)0xc682, + (q15_t)0x5c12, (q15_t)0xc67c, (q15_t)0x5c07, (q15_t)0xc677, (q15_t)0x5bfc, (q15_t)0xc671, (q15_t)0x5bf0, (q15_t)0xc66c, + (q15_t)0x5be5, (q15_t)0xc666, (q15_t)0x5bda, (q15_t)0xc661, (q15_t)0x5bce, (q15_t)0xc65b, (q15_t)0x5bc3, (q15_t)0xc656, + (q15_t)0x5bb8, (q15_t)0xc650, (q15_t)0x5bac, (q15_t)0xc64b, (q15_t)0x5ba1, (q15_t)0xc645, (q15_t)0x5b96, (q15_t)0xc640, + (q15_t)0x5b8a, (q15_t)0xc63b, (q15_t)0x5b7f, (q15_t)0xc635, (q15_t)0x5b74, (q15_t)0xc630, (q15_t)0x5b68, (q15_t)0xc62a, + (q15_t)0x5b5d, (q15_t)0xc625, (q15_t)0x5b52, (q15_t)0xc620, (q15_t)0x5b46, (q15_t)0xc61a, (q15_t)0x5b3b, (q15_t)0xc615, + (q15_t)0x5b30, (q15_t)0xc610, (q15_t)0x5b24, (q15_t)0xc60a, (q15_t)0x5b19, (q15_t)0xc605, (q15_t)0x5b0d, (q15_t)0xc600, + (q15_t)0x5b02, (q15_t)0xc5fa, (q15_t)0x5af7, (q15_t)0xc5f5, (q15_t)0x5aeb, (q15_t)0xc5f0, (q15_t)0x5ae0, (q15_t)0xc5ea, + (q15_t)0x5ad4, (q15_t)0xc5e5, (q15_t)0x5ac9, (q15_t)0xc5e0, (q15_t)0x5abe, (q15_t)0xc5db, (q15_t)0x5ab2, (q15_t)0xc5d5, + (q15_t)0x5aa7, (q15_t)0xc5d0, (q15_t)0x5a9b, (q15_t)0xc5cb, (q15_t)0x5a90, (q15_t)0xc5c6, (q15_t)0x5a84, (q15_t)0xc5c1, + (q15_t)0x5a79, (q15_t)0xc5bb, (q15_t)0x5a6e, (q15_t)0xc5b6, (q15_t)0x5a62, (q15_t)0xc5b1, (q15_t)0x5a57, (q15_t)0xc5ac, + (q15_t)0x5a4b, (q15_t)0xc5a7, (q15_t)0x5a40, (q15_t)0xc5a1, (q15_t)0x5a34, (q15_t)0xc59c, (q15_t)0x5a29, (q15_t)0xc597, + (q15_t)0x5a1d, (q15_t)0xc592, (q15_t)0x5a12, (q15_t)0xc58d, (q15_t)0x5a06, (q15_t)0xc588, (q15_t)0x59fb, (q15_t)0xc583, + (q15_t)0x59ef, (q15_t)0xc57e, (q15_t)0x59e4, (q15_t)0xc578, (q15_t)0x59d8, (q15_t)0xc573, (q15_t)0x59cd, (q15_t)0xc56e, + (q15_t)0x59c1, (q15_t)0xc569, (q15_t)0x59b6, (q15_t)0xc564, (q15_t)0x59aa, (q15_t)0xc55f, (q15_t)0x599f, (q15_t)0xc55a, + (q15_t)0x5993, (q15_t)0xc555, (q15_t)0x5988, (q15_t)0xc550, (q15_t)0x597c, (q15_t)0xc54b, (q15_t)0x5971, (q15_t)0xc546, + (q15_t)0x5965, (q15_t)0xc541, (q15_t)0x595a, (q15_t)0xc53c, (q15_t)0x594e, (q15_t)0xc537, (q15_t)0x5943, (q15_t)0xc532, + (q15_t)0x5937, (q15_t)0xc52d, (q15_t)0x592c, (q15_t)0xc528, (q15_t)0x5920, (q15_t)0xc523, (q15_t)0x5914, (q15_t)0xc51e, + (q15_t)0x5909, (q15_t)0xc51a, (q15_t)0x58fd, (q15_t)0xc515, (q15_t)0x58f2, (q15_t)0xc510, (q15_t)0x58e6, (q15_t)0xc50b, + (q15_t)0x58db, (q15_t)0xc506, (q15_t)0x58cf, (q15_t)0xc501, (q15_t)0x58c3, (q15_t)0xc4fc, (q15_t)0x58b8, (q15_t)0xc4f7, + (q15_t)0x58ac, (q15_t)0xc4f2, (q15_t)0x58a1, (q15_t)0xc4ee, (q15_t)0x5895, (q15_t)0xc4e9, (q15_t)0x5889, (q15_t)0xc4e4, + (q15_t)0x587e, (q15_t)0xc4df, (q15_t)0x5872, (q15_t)0xc4da, (q15_t)0x5867, (q15_t)0xc4d6, (q15_t)0x585b, (q15_t)0xc4d1, + (q15_t)0x584f, (q15_t)0xc4cc, (q15_t)0x5844, (q15_t)0xc4c7, (q15_t)0x5838, (q15_t)0xc4c2, (q15_t)0x582d, (q15_t)0xc4be, + (q15_t)0x5821, (q15_t)0xc4b9, (q15_t)0x5815, (q15_t)0xc4b4, (q15_t)0x580a, (q15_t)0xc4b0, (q15_t)0x57fe, (q15_t)0xc4ab, + (q15_t)0x57f2, (q15_t)0xc4a6, (q15_t)0x57e7, (q15_t)0xc4a1, (q15_t)0x57db, (q15_t)0xc49d, (q15_t)0x57cf, (q15_t)0xc498, + (q15_t)0x57c4, (q15_t)0xc493, (q15_t)0x57b8, (q15_t)0xc48f, (q15_t)0x57ac, (q15_t)0xc48a, (q15_t)0x57a1, (q15_t)0xc485, + (q15_t)0x5795, (q15_t)0xc481, (q15_t)0x5789, (q15_t)0xc47c, (q15_t)0x577e, (q15_t)0xc478, (q15_t)0x5772, (q15_t)0xc473, + (q15_t)0x5766, (q15_t)0xc46e, (q15_t)0x575b, (q15_t)0xc46a, (q15_t)0x574f, (q15_t)0xc465, (q15_t)0x5743, (q15_t)0xc461, + (q15_t)0x5737, (q15_t)0xc45c, (q15_t)0x572c, (q15_t)0xc457, (q15_t)0x5720, (q15_t)0xc453, (q15_t)0x5714, (q15_t)0xc44e, + (q15_t)0x5709, (q15_t)0xc44a, (q15_t)0x56fd, (q15_t)0xc445, (q15_t)0x56f1, (q15_t)0xc441, (q15_t)0x56e5, (q15_t)0xc43c, + (q15_t)0x56da, (q15_t)0xc438, (q15_t)0x56ce, (q15_t)0xc433, (q15_t)0x56c2, (q15_t)0xc42f, (q15_t)0x56b6, (q15_t)0xc42a, + (q15_t)0x56ab, (q15_t)0xc426, (q15_t)0x569f, (q15_t)0xc422, (q15_t)0x5693, (q15_t)0xc41d, (q15_t)0x5687, (q15_t)0xc419, + (q15_t)0x567c, (q15_t)0xc414, (q15_t)0x5670, (q15_t)0xc410, (q15_t)0x5664, (q15_t)0xc40b, (q15_t)0x5658, (q15_t)0xc407, + (q15_t)0x564c, (q15_t)0xc403, (q15_t)0x5641, (q15_t)0xc3fe, (q15_t)0x5635, (q15_t)0xc3fa, (q15_t)0x5629, (q15_t)0xc3f6, + (q15_t)0x561d, (q15_t)0xc3f1, (q15_t)0x5612, (q15_t)0xc3ed, (q15_t)0x5606, (q15_t)0xc3e9, (q15_t)0x55fa, (q15_t)0xc3e4, + (q15_t)0x55ee, (q15_t)0xc3e0, (q15_t)0x55e2, (q15_t)0xc3dc, (q15_t)0x55d7, (q15_t)0xc3d7, (q15_t)0x55cb, (q15_t)0xc3d3, + (q15_t)0x55bf, (q15_t)0xc3cf, (q15_t)0x55b3, (q15_t)0xc3ca, (q15_t)0x55a7, (q15_t)0xc3c6, (q15_t)0x559b, (q15_t)0xc3c2, + (q15_t)0x5590, (q15_t)0xc3be, (q15_t)0x5584, (q15_t)0xc3ba, (q15_t)0x5578, (q15_t)0xc3b5, (q15_t)0x556c, (q15_t)0xc3b1, + (q15_t)0x5560, (q15_t)0xc3ad, (q15_t)0x5554, (q15_t)0xc3a9, (q15_t)0x5549, (q15_t)0xc3a5, (q15_t)0x553d, (q15_t)0xc3a0, + (q15_t)0x5531, (q15_t)0xc39c, (q15_t)0x5525, (q15_t)0xc398, (q15_t)0x5519, (q15_t)0xc394, (q15_t)0x550d, (q15_t)0xc390, + (q15_t)0x5501, (q15_t)0xc38c, (q15_t)0x54f6, (q15_t)0xc387, (q15_t)0x54ea, (q15_t)0xc383, (q15_t)0x54de, (q15_t)0xc37f, + (q15_t)0x54d2, (q15_t)0xc37b, (q15_t)0x54c6, (q15_t)0xc377, (q15_t)0x54ba, (q15_t)0xc373, (q15_t)0x54ae, (q15_t)0xc36f, + (q15_t)0x54a2, (q15_t)0xc36b, (q15_t)0x5496, (q15_t)0xc367, (q15_t)0x548b, (q15_t)0xc363, (q15_t)0x547f, (q15_t)0xc35f, + (q15_t)0x5473, (q15_t)0xc35b, (q15_t)0x5467, (q15_t)0xc357, (q15_t)0x545b, (q15_t)0xc353, (q15_t)0x544f, (q15_t)0xc34f, + (q15_t)0x5443, (q15_t)0xc34b, (q15_t)0x5437, (q15_t)0xc347, (q15_t)0x542b, (q15_t)0xc343, (q15_t)0x541f, (q15_t)0xc33f, + (q15_t)0x5413, (q15_t)0xc33b, (q15_t)0x5407, (q15_t)0xc337, (q15_t)0x53fb, (q15_t)0xc333, (q15_t)0x53f0, (q15_t)0xc32f, + (q15_t)0x53e4, (q15_t)0xc32b, (q15_t)0x53d8, (q15_t)0xc327, (q15_t)0x53cc, (q15_t)0xc323, (q15_t)0x53c0, (q15_t)0xc320, + (q15_t)0x53b4, (q15_t)0xc31c, (q15_t)0x53a8, (q15_t)0xc318, (q15_t)0x539c, (q15_t)0xc314, (q15_t)0x5390, (q15_t)0xc310, + (q15_t)0x5384, (q15_t)0xc30c, (q15_t)0x5378, (q15_t)0xc308, (q15_t)0x536c, (q15_t)0xc305, (q15_t)0x5360, (q15_t)0xc301, + (q15_t)0x5354, (q15_t)0xc2fd, (q15_t)0x5348, (q15_t)0xc2f9, (q15_t)0x533c, (q15_t)0xc2f5, (q15_t)0x5330, (q15_t)0xc2f2, + (q15_t)0x5324, (q15_t)0xc2ee, (q15_t)0x5318, (q15_t)0xc2ea, (q15_t)0x530c, (q15_t)0xc2e6, (q15_t)0x5300, (q15_t)0xc2e3, + (q15_t)0x52f4, (q15_t)0xc2df, (q15_t)0x52e8, (q15_t)0xc2db, (q15_t)0x52dc, (q15_t)0xc2d8, (q15_t)0x52d0, (q15_t)0xc2d4, + (q15_t)0x52c4, (q15_t)0xc2d0, (q15_t)0x52b8, (q15_t)0xc2cc, (q15_t)0x52ac, (q15_t)0xc2c9, (q15_t)0x52a0, (q15_t)0xc2c5, + (q15_t)0x5294, (q15_t)0xc2c1, (q15_t)0x5288, (q15_t)0xc2be, (q15_t)0x527c, (q15_t)0xc2ba, (q15_t)0x5270, (q15_t)0xc2b7, + (q15_t)0x5264, (q15_t)0xc2b3, (q15_t)0x5258, (q15_t)0xc2af, (q15_t)0x524c, (q15_t)0xc2ac, (q15_t)0x5240, (q15_t)0xc2a8, + (q15_t)0x5234, (q15_t)0xc2a5, (q15_t)0x5228, (q15_t)0xc2a1, (q15_t)0x521c, (q15_t)0xc29d, (q15_t)0x5210, (q15_t)0xc29a, + (q15_t)0x5204, (q15_t)0xc296, (q15_t)0x51f7, (q15_t)0xc293, (q15_t)0x51eb, (q15_t)0xc28f, (q15_t)0x51df, (q15_t)0xc28c, + (q15_t)0x51d3, (q15_t)0xc288, (q15_t)0x51c7, (q15_t)0xc285, (q15_t)0x51bb, (q15_t)0xc281, (q15_t)0x51af, (q15_t)0xc27e, + (q15_t)0x51a3, (q15_t)0xc27a, (q15_t)0x5197, (q15_t)0xc277, (q15_t)0x518b, (q15_t)0xc273, (q15_t)0x517f, (q15_t)0xc270, + (q15_t)0x5173, (q15_t)0xc26d, (q15_t)0x5167, (q15_t)0xc269, (q15_t)0x515a, (q15_t)0xc266, (q15_t)0x514e, (q15_t)0xc262, + (q15_t)0x5142, (q15_t)0xc25f, (q15_t)0x5136, (q15_t)0xc25c, (q15_t)0x512a, (q15_t)0xc258, (q15_t)0x511e, (q15_t)0xc255, + (q15_t)0x5112, (q15_t)0xc251, (q15_t)0x5106, (q15_t)0xc24e, (q15_t)0x50fa, (q15_t)0xc24b, (q15_t)0x50ed, (q15_t)0xc247, + (q15_t)0x50e1, (q15_t)0xc244, (q15_t)0x50d5, (q15_t)0xc241, (q15_t)0x50c9, (q15_t)0xc23e, (q15_t)0x50bd, (q15_t)0xc23a, + (q15_t)0x50b1, (q15_t)0xc237, (q15_t)0x50a5, (q15_t)0xc234, (q15_t)0x5099, (q15_t)0xc230, (q15_t)0x508c, (q15_t)0xc22d, + (q15_t)0x5080, (q15_t)0xc22a, (q15_t)0x5074, (q15_t)0xc227, (q15_t)0x5068, (q15_t)0xc223, (q15_t)0x505c, (q15_t)0xc220, + (q15_t)0x5050, (q15_t)0xc21d, (q15_t)0x5044, (q15_t)0xc21a, (q15_t)0x5037, (q15_t)0xc217, (q15_t)0x502b, (q15_t)0xc213, + (q15_t)0x501f, (q15_t)0xc210, (q15_t)0x5013, (q15_t)0xc20d, (q15_t)0x5007, (q15_t)0xc20a, (q15_t)0x4ffb, (q15_t)0xc207, + (q15_t)0x4fee, (q15_t)0xc204, (q15_t)0x4fe2, (q15_t)0xc201, (q15_t)0x4fd6, (q15_t)0xc1fd, (q15_t)0x4fca, (q15_t)0xc1fa, + (q15_t)0x4fbe, (q15_t)0xc1f7, (q15_t)0x4fb2, (q15_t)0xc1f4, (q15_t)0x4fa5, (q15_t)0xc1f1, (q15_t)0x4f99, (q15_t)0xc1ee, + (q15_t)0x4f8d, (q15_t)0xc1eb, (q15_t)0x4f81, (q15_t)0xc1e8, (q15_t)0x4f75, (q15_t)0xc1e5, (q15_t)0x4f68, (q15_t)0xc1e2, + (q15_t)0x4f5c, (q15_t)0xc1df, (q15_t)0x4f50, (q15_t)0xc1dc, (q15_t)0x4f44, (q15_t)0xc1d9, (q15_t)0x4f38, (q15_t)0xc1d6, + (q15_t)0x4f2b, (q15_t)0xc1d3, (q15_t)0x4f1f, (q15_t)0xc1d0, (q15_t)0x4f13, (q15_t)0xc1cd, (q15_t)0x4f07, (q15_t)0xc1ca, + (q15_t)0x4efb, (q15_t)0xc1c7, (q15_t)0x4eee, (q15_t)0xc1c4, (q15_t)0x4ee2, (q15_t)0xc1c1, (q15_t)0x4ed6, (q15_t)0xc1be, + (q15_t)0x4eca, (q15_t)0xc1bb, (q15_t)0x4ebd, (q15_t)0xc1b8, (q15_t)0x4eb1, (q15_t)0xc1b6, (q15_t)0x4ea5, (q15_t)0xc1b3, + (q15_t)0x4e99, (q15_t)0xc1b0, (q15_t)0x4e8c, (q15_t)0xc1ad, (q15_t)0x4e80, (q15_t)0xc1aa, (q15_t)0x4e74, (q15_t)0xc1a7, + (q15_t)0x4e68, (q15_t)0xc1a4, (q15_t)0x4e5c, (q15_t)0xc1a2, (q15_t)0x4e4f, (q15_t)0xc19f, (q15_t)0x4e43, (q15_t)0xc19c, + (q15_t)0x4e37, (q15_t)0xc199, (q15_t)0x4e2b, (q15_t)0xc196, (q15_t)0x4e1e, (q15_t)0xc194, (q15_t)0x4e12, (q15_t)0xc191, + (q15_t)0x4e06, (q15_t)0xc18e, (q15_t)0x4df9, (q15_t)0xc18b, (q15_t)0x4ded, (q15_t)0xc189, (q15_t)0x4de1, (q15_t)0xc186, + (q15_t)0x4dd5, (q15_t)0xc183, (q15_t)0x4dc8, (q15_t)0xc180, (q15_t)0x4dbc, (q15_t)0xc17e, (q15_t)0x4db0, (q15_t)0xc17b, + (q15_t)0x4da4, (q15_t)0xc178, (q15_t)0x4d97, (q15_t)0xc176, (q15_t)0x4d8b, (q15_t)0xc173, (q15_t)0x4d7f, (q15_t)0xc170, + (q15_t)0x4d72, (q15_t)0xc16e, (q15_t)0x4d66, (q15_t)0xc16b, (q15_t)0x4d5a, (q15_t)0xc168, (q15_t)0x4d4e, (q15_t)0xc166, + (q15_t)0x4d41, (q15_t)0xc163, (q15_t)0x4d35, (q15_t)0xc161, (q15_t)0x4d29, (q15_t)0xc15e, (q15_t)0x4d1c, (q15_t)0xc15b, + (q15_t)0x4d10, (q15_t)0xc159, (q15_t)0x4d04, (q15_t)0xc156, (q15_t)0x4cf8, (q15_t)0xc154, (q15_t)0x4ceb, (q15_t)0xc151, + (q15_t)0x4cdf, (q15_t)0xc14f, (q15_t)0x4cd3, (q15_t)0xc14c, (q15_t)0x4cc6, (q15_t)0xc14a, (q15_t)0x4cba, (q15_t)0xc147, + (q15_t)0x4cae, (q15_t)0xc145, (q15_t)0x4ca1, (q15_t)0xc142, (q15_t)0x4c95, (q15_t)0xc140, (q15_t)0x4c89, (q15_t)0xc13d, + (q15_t)0x4c7c, (q15_t)0xc13b, (q15_t)0x4c70, (q15_t)0xc138, (q15_t)0x4c64, (q15_t)0xc136, (q15_t)0x4c57, (q15_t)0xc134, + (q15_t)0x4c4b, (q15_t)0xc131, (q15_t)0x4c3f, (q15_t)0xc12f, (q15_t)0x4c32, (q15_t)0xc12c, (q15_t)0x4c26, (q15_t)0xc12a, + (q15_t)0x4c1a, (q15_t)0xc128, (q15_t)0x4c0d, (q15_t)0xc125, (q15_t)0x4c01, (q15_t)0xc123, (q15_t)0x4bf5, (q15_t)0xc120, + (q15_t)0x4be8, (q15_t)0xc11e, (q15_t)0x4bdc, (q15_t)0xc11c, (q15_t)0x4bd0, (q15_t)0xc119, (q15_t)0x4bc3, (q15_t)0xc117, + (q15_t)0x4bb7, (q15_t)0xc115, (q15_t)0x4bab, (q15_t)0xc113, (q15_t)0x4b9e, (q15_t)0xc110, (q15_t)0x4b92, (q15_t)0xc10e, + (q15_t)0x4b85, (q15_t)0xc10c, (q15_t)0x4b79, (q15_t)0xc109, (q15_t)0x4b6d, (q15_t)0xc107, (q15_t)0x4b60, (q15_t)0xc105, + (q15_t)0x4b54, (q15_t)0xc103, (q15_t)0x4b48, (q15_t)0xc100, (q15_t)0x4b3b, (q15_t)0xc0fe, (q15_t)0x4b2f, (q15_t)0xc0fc, + (q15_t)0x4b23, (q15_t)0xc0fa, (q15_t)0x4b16, (q15_t)0xc0f8, (q15_t)0x4b0a, (q15_t)0xc0f6, (q15_t)0x4afd, (q15_t)0xc0f3, + (q15_t)0x4af1, (q15_t)0xc0f1, (q15_t)0x4ae5, (q15_t)0xc0ef, (q15_t)0x4ad8, (q15_t)0xc0ed, (q15_t)0x4acc, (q15_t)0xc0eb, + (q15_t)0x4ac0, (q15_t)0xc0e9, (q15_t)0x4ab3, (q15_t)0xc0e7, (q15_t)0x4aa7, (q15_t)0xc0e4, (q15_t)0x4a9a, (q15_t)0xc0e2, + (q15_t)0x4a8e, (q15_t)0xc0e0, (q15_t)0x4a82, (q15_t)0xc0de, (q15_t)0x4a75, (q15_t)0xc0dc, (q15_t)0x4a69, (q15_t)0xc0da, + (q15_t)0x4a5c, (q15_t)0xc0d8, (q15_t)0x4a50, (q15_t)0xc0d6, (q15_t)0x4a44, (q15_t)0xc0d4, (q15_t)0x4a37, (q15_t)0xc0d2, + (q15_t)0x4a2b, (q15_t)0xc0d0, (q15_t)0x4a1e, (q15_t)0xc0ce, (q15_t)0x4a12, (q15_t)0xc0cc, (q15_t)0x4a06, (q15_t)0xc0ca, + (q15_t)0x49f9, (q15_t)0xc0c8, (q15_t)0x49ed, (q15_t)0xc0c6, (q15_t)0x49e0, (q15_t)0xc0c4, (q15_t)0x49d4, (q15_t)0xc0c2, + (q15_t)0x49c7, (q15_t)0xc0c0, (q15_t)0x49bb, (q15_t)0xc0be, (q15_t)0x49af, (q15_t)0xc0bd, (q15_t)0x49a2, (q15_t)0xc0bb, + (q15_t)0x4996, (q15_t)0xc0b9, (q15_t)0x4989, (q15_t)0xc0b7, (q15_t)0x497d, (q15_t)0xc0b5, (q15_t)0x4970, (q15_t)0xc0b3, + (q15_t)0x4964, (q15_t)0xc0b1, (q15_t)0x4958, (q15_t)0xc0af, (q15_t)0x494b, (q15_t)0xc0ae, (q15_t)0x493f, (q15_t)0xc0ac, + (q15_t)0x4932, (q15_t)0xc0aa, (q15_t)0x4926, (q15_t)0xc0a8, (q15_t)0x4919, (q15_t)0xc0a6, (q15_t)0x490d, (q15_t)0xc0a5, + (q15_t)0x4901, (q15_t)0xc0a3, (q15_t)0x48f4, (q15_t)0xc0a1, (q15_t)0x48e8, (q15_t)0xc09f, (q15_t)0x48db, (q15_t)0xc09e, + (q15_t)0x48cf, (q15_t)0xc09c, (q15_t)0x48c2, (q15_t)0xc09a, (q15_t)0x48b6, (q15_t)0xc098, (q15_t)0x48a9, (q15_t)0xc097, + (q15_t)0x489d, (q15_t)0xc095, (q15_t)0x4891, (q15_t)0xc093, (q15_t)0x4884, (q15_t)0xc092, (q15_t)0x4878, (q15_t)0xc090, + (q15_t)0x486b, (q15_t)0xc08e, (q15_t)0x485f, (q15_t)0xc08d, (q15_t)0x4852, (q15_t)0xc08b, (q15_t)0x4846, (q15_t)0xc089, + (q15_t)0x4839, (q15_t)0xc088, (q15_t)0x482d, (q15_t)0xc086, (q15_t)0x4820, (q15_t)0xc085, (q15_t)0x4814, (q15_t)0xc083, + (q15_t)0x4807, (q15_t)0xc081, (q15_t)0x47fb, (q15_t)0xc080, (q15_t)0x47ef, (q15_t)0xc07e, (q15_t)0x47e2, (q15_t)0xc07d, + (q15_t)0x47d6, (q15_t)0xc07b, (q15_t)0x47c9, (q15_t)0xc07a, (q15_t)0x47bd, (q15_t)0xc078, (q15_t)0x47b0, (q15_t)0xc077, + (q15_t)0x47a4, (q15_t)0xc075, (q15_t)0x4797, (q15_t)0xc074, (q15_t)0x478b, (q15_t)0xc072, (q15_t)0x477e, (q15_t)0xc071, + (q15_t)0x4772, (q15_t)0xc06f, (q15_t)0x4765, (q15_t)0xc06e, (q15_t)0x4759, (q15_t)0xc06c, (q15_t)0x474c, (q15_t)0xc06b, + (q15_t)0x4740, (q15_t)0xc069, (q15_t)0x4733, (q15_t)0xc068, (q15_t)0x4727, (q15_t)0xc067, (q15_t)0x471a, (q15_t)0xc065, + (q15_t)0x470e, (q15_t)0xc064, (q15_t)0x4701, (q15_t)0xc062, (q15_t)0x46f5, (q15_t)0xc061, (q15_t)0x46e8, (q15_t)0xc060, + (q15_t)0x46dc, (q15_t)0xc05e, (q15_t)0x46cf, (q15_t)0xc05d, (q15_t)0x46c3, (q15_t)0xc05c, (q15_t)0x46b6, (q15_t)0xc05a, + (q15_t)0x46aa, (q15_t)0xc059, (q15_t)0x469d, (q15_t)0xc058, (q15_t)0x4691, (q15_t)0xc056, (q15_t)0x4684, (q15_t)0xc055, + (q15_t)0x4678, (q15_t)0xc054, (q15_t)0x466b, (q15_t)0xc053, (q15_t)0x465f, (q15_t)0xc051, (q15_t)0x4652, (q15_t)0xc050, + (q15_t)0x4646, (q15_t)0xc04f, (q15_t)0x4639, (q15_t)0xc04e, (q15_t)0x462d, (q15_t)0xc04c, (q15_t)0x4620, (q15_t)0xc04b, + (q15_t)0x4614, (q15_t)0xc04a, (q15_t)0x4607, (q15_t)0xc049, (q15_t)0x45fb, (q15_t)0xc048, (q15_t)0x45ee, (q15_t)0xc047, + (q15_t)0x45e2, (q15_t)0xc045, (q15_t)0x45d5, (q15_t)0xc044, (q15_t)0x45c9, (q15_t)0xc043, (q15_t)0x45bc, (q15_t)0xc042, + (q15_t)0x45b0, (q15_t)0xc041, (q15_t)0x45a3, (q15_t)0xc040, (q15_t)0x4597, (q15_t)0xc03f, (q15_t)0x458a, (q15_t)0xc03d, + (q15_t)0x457e, (q15_t)0xc03c, (q15_t)0x4571, (q15_t)0xc03b, (q15_t)0x4565, (q15_t)0xc03a, (q15_t)0x4558, (q15_t)0xc039, + (q15_t)0x454c, (q15_t)0xc038, (q15_t)0x453f, (q15_t)0xc037, (q15_t)0x4533, (q15_t)0xc036, (q15_t)0x4526, (q15_t)0xc035, + (q15_t)0x451a, (q15_t)0xc034, (q15_t)0x450d, (q15_t)0xc033, (q15_t)0x4500, (q15_t)0xc032, (q15_t)0x44f4, (q15_t)0xc031, + (q15_t)0x44e7, (q15_t)0xc030, (q15_t)0x44db, (q15_t)0xc02f, (q15_t)0x44ce, (q15_t)0xc02e, (q15_t)0x44c2, (q15_t)0xc02d, + (q15_t)0x44b5, (q15_t)0xc02c, (q15_t)0x44a9, (q15_t)0xc02b, (q15_t)0x449c, (q15_t)0xc02b, (q15_t)0x4490, (q15_t)0xc02a, + (q15_t)0x4483, (q15_t)0xc029, (q15_t)0x4477, (q15_t)0xc028, (q15_t)0x446a, (q15_t)0xc027, (q15_t)0x445e, (q15_t)0xc026, + (q15_t)0x4451, (q15_t)0xc025, (q15_t)0x4444, (q15_t)0xc024, (q15_t)0x4438, (q15_t)0xc024, (q15_t)0x442b, (q15_t)0xc023, + (q15_t)0x441f, (q15_t)0xc022, (q15_t)0x4412, (q15_t)0xc021, (q15_t)0x4406, (q15_t)0xc020, (q15_t)0x43f9, (q15_t)0xc020, + (q15_t)0x43ed, (q15_t)0xc01f, (q15_t)0x43e0, (q15_t)0xc01e, (q15_t)0x43d4, (q15_t)0xc01d, (q15_t)0x43c7, (q15_t)0xc01d, + (q15_t)0x43bb, (q15_t)0xc01c, (q15_t)0x43ae, (q15_t)0xc01b, (q15_t)0x43a1, (q15_t)0xc01a, (q15_t)0x4395, (q15_t)0xc01a, + (q15_t)0x4388, (q15_t)0xc019, (q15_t)0x437c, (q15_t)0xc018, (q15_t)0x436f, (q15_t)0xc018, (q15_t)0x4363, (q15_t)0xc017, + (q15_t)0x4356, (q15_t)0xc016, (q15_t)0x434a, (q15_t)0xc016, (q15_t)0x433d, (q15_t)0xc015, (q15_t)0x4330, (q15_t)0xc014, + (q15_t)0x4324, (q15_t)0xc014, (q15_t)0x4317, (q15_t)0xc013, (q15_t)0x430b, (q15_t)0xc013, (q15_t)0x42fe, (q15_t)0xc012, + (q15_t)0x42f2, (q15_t)0xc011, (q15_t)0x42e5, (q15_t)0xc011, (q15_t)0x42d9, (q15_t)0xc010, (q15_t)0x42cc, (q15_t)0xc010, + (q15_t)0x42c0, (q15_t)0xc00f, (q15_t)0x42b3, (q15_t)0xc00f, (q15_t)0x42a6, (q15_t)0xc00e, (q15_t)0x429a, (q15_t)0xc00e, + (q15_t)0x428d, (q15_t)0xc00d, (q15_t)0x4281, (q15_t)0xc00d, (q15_t)0x4274, (q15_t)0xc00c, (q15_t)0x4268, (q15_t)0xc00c, + (q15_t)0x425b, (q15_t)0xc00b, (q15_t)0x424e, (q15_t)0xc00b, (q15_t)0x4242, (q15_t)0xc00a, (q15_t)0x4235, (q15_t)0xc00a, + (q15_t)0x4229, (q15_t)0xc009, (q15_t)0x421c, (q15_t)0xc009, (q15_t)0x4210, (q15_t)0xc009, (q15_t)0x4203, (q15_t)0xc008, + (q15_t)0x41f7, (q15_t)0xc008, (q15_t)0x41ea, (q15_t)0xc007, (q15_t)0x41dd, (q15_t)0xc007, (q15_t)0x41d1, (q15_t)0xc007, + (q15_t)0x41c4, (q15_t)0xc006, (q15_t)0x41b8, (q15_t)0xc006, (q15_t)0x41ab, (q15_t)0xc006, (q15_t)0x419f, (q15_t)0xc005, + (q15_t)0x4192, (q15_t)0xc005, (q15_t)0x4186, (q15_t)0xc005, (q15_t)0x4179, (q15_t)0xc004, (q15_t)0x416c, (q15_t)0xc004, + (q15_t)0x4160, (q15_t)0xc004, (q15_t)0x4153, (q15_t)0xc004, (q15_t)0x4147, (q15_t)0xc003, (q15_t)0x413a, (q15_t)0xc003, + (q15_t)0x412e, (q15_t)0xc003, (q15_t)0x4121, (q15_t)0xc003, (q15_t)0x4114, (q15_t)0xc002, (q15_t)0x4108, (q15_t)0xc002, + (q15_t)0x40fb, (q15_t)0xc002, (q15_t)0x40ef, (q15_t)0xc002, (q15_t)0x40e2, (q15_t)0xc002, (q15_t)0x40d6, (q15_t)0xc001, + (q15_t)0x40c9, (q15_t)0xc001, (q15_t)0x40bc, (q15_t)0xc001, (q15_t)0x40b0, (q15_t)0xc001, (q15_t)0x40a3, (q15_t)0xc001, + (q15_t)0x4097, (q15_t)0xc001, (q15_t)0x408a, (q15_t)0xc001, (q15_t)0x407e, (q15_t)0xc000, (q15_t)0x4071, (q15_t)0xc000, + (q15_t)0x4065, (q15_t)0xc000, (q15_t)0x4058, (q15_t)0xc000, (q15_t)0x404b, (q15_t)0xc000, (q15_t)0x403f, (q15_t)0xc000, + (q15_t)0x4032, (q15_t)0xc000, (q15_t)0x4026, (q15_t)0xc000, (q15_t)0x4019, (q15_t)0xc000, (q15_t)0x400d, (q15_t)0xc000, +}; + +/** +* @} end of RealFFT_Table group +*/ + +/** +* @addtogroup RealFFT +* @{ +*/ + +/** +* @brief Initialization function for the Q15 RFFT/RIFFT. +* @param[in, out] *S points to an instance of the Q15 RFFT/RIFFT structure. +* @param[in] fftLenReal length of the FFT. +* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. +* +* \par Description: +* \par +* The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192. +* \par +* The parameter ifftFlagR controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated. +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par +* This function also initializes Twiddle factor table. +*/ +arm_status arm_rfft_init_q15( + arm_rfft_instance_q15 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialize the Real FFT length */ + S->fftLenReal = (uint16_t) fftLenReal; + + /* Initialize the Twiddle coefficientA pointer */ + S->pTwiddleAReal = (q15_t *) realCoefAQ15; + + /* Initialize the Twiddle coefficientB pointer */ + S->pTwiddleBReal = (q15_t *) realCoefBQ15; + + /* Initialize the Flag for selection of RFFT or RIFFT */ + S->ifftFlagR = (uint8_t) ifftFlagR; + + /* Initialize the Flag for calculation Bit reversal or not */ + S->bitReverseFlagR = (uint8_t) bitReverseFlag; + + /* Initialization of coef modifier depending on the FFT length */ + switch (S->fftLenReal) + { + case 8192U: + S->twidCoefRModifier = 1U; + S->pCfft = &arm_cfft_sR_q15_len4096; + break; + case 4096U: + S->twidCoefRModifier = 2U; + S->pCfft = &arm_cfft_sR_q15_len2048; + break; + case 2048U: + S->twidCoefRModifier = 4U; + S->pCfft = &arm_cfft_sR_q15_len1024; + break; + case 1024U: + S->twidCoefRModifier = 8U; + S->pCfft = &arm_cfft_sR_q15_len512; + break; + case 512U: + S->twidCoefRModifier = 16U; + S->pCfft = &arm_cfft_sR_q15_len256; + break; + case 256U: + S->twidCoefRModifier = 32U; + S->pCfft = &arm_cfft_sR_q15_len128; + break; + case 128U: + S->twidCoefRModifier = 64U; + S->pCfft = &arm_cfft_sR_q15_len64; + break; + case 64U: + S->twidCoefRModifier = 128U; + S->pCfft = &arm_cfft_sR_q15_len32; + break; + case 32U: + S->twidCoefRModifier = 256U; + S->pCfft = &arm_cfft_sR_q15_len16; + break; + default: + /* Reporting argument error if rfftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + /* return the status of RFFT Init function */ + return (status); +} + +/** +* @} end of RealFFT group +*/ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c new file mode 100644 index 0000000..04369ed --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_init_q31.c @@ -0,0 +1,4280 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_rfft_init_q31.c + * Description: RFFT & RIFFT Q31 initialisation function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_common_tables.h" +#include "arm_const_structs.h" + +/** +* @ingroup RealFFT +*/ + +/** + * @addtogroup RealFFT_Table Real FFT Tables +* @{ +*/ + +/** +* \par +* Generation fixed-point realCoefAQ31 array in Q31 format: +* \par +* n = 4096 +*
for (i = 0; i < n; i++)
+* {
+*    pATable[2 * i] = 0.5 * (1.0 - sin (2 * PI / (double) (2 * n) * (double) i));
+*    pATable[2 * i + 1] = 0.5 * (-1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
+* }
+* \par +* Convert to fixed point Q31 format +* round(pATable[i] * pow(2, 31)) +*/ +const q31_t realCoefAQ31[8192] = { + (q31_t)0x40000000, (q31_t)0xc0000000, (q31_t)0x3ff36f02, (q31_t)0xc000013c, + (q31_t)0x3fe6de05, (q31_t)0xc00004ef, (q31_t)0x3fda4d09, (q31_t)0xc0000b1a, + (q31_t)0x3fcdbc0f, (q31_t)0xc00013bd, (q31_t)0x3fc12b16, (q31_t)0xc0001ed8, + (q31_t)0x3fb49a1f, (q31_t)0xc0002c6a, (q31_t)0x3fa8092c, (q31_t)0xc0003c74, + (q31_t)0x3f9b783c, (q31_t)0xc0004ef5, (q31_t)0x3f8ee750, (q31_t)0xc00063ee, + (q31_t)0x3f825668, (q31_t)0xc0007b5f, (q31_t)0x3f75c585, (q31_t)0xc0009547, + (q31_t)0x3f6934a8, (q31_t)0xc000b1a7, (q31_t)0x3f5ca3d0, (q31_t)0xc000d07e, + (q31_t)0x3f5012fe, (q31_t)0xc000f1ce, (q31_t)0x3f438234, (q31_t)0xc0011594, + (q31_t)0x3f36f170, (q31_t)0xc0013bd3, (q31_t)0x3f2a60b4, (q31_t)0xc0016489, + (q31_t)0x3f1dd001, (q31_t)0xc0018fb6, (q31_t)0x3f113f56, (q31_t)0xc001bd5c, + (q31_t)0x3f04aeb5, (q31_t)0xc001ed78, (q31_t)0x3ef81e1d, (q31_t)0xc002200d, + (q31_t)0x3eeb8d8f, (q31_t)0xc0025519, (q31_t)0x3edefd0c, (q31_t)0xc0028c9c, + (q31_t)0x3ed26c94, (q31_t)0xc002c697, (q31_t)0x3ec5dc28, (q31_t)0xc003030a, + (q31_t)0x3eb94bc8, (q31_t)0xc00341f4, (q31_t)0x3eacbb74, (q31_t)0xc0038356, + (q31_t)0x3ea02b2e, (q31_t)0xc003c72f, (q31_t)0x3e939af5, (q31_t)0xc0040d80, + (q31_t)0x3e870aca, (q31_t)0xc0045648, (q31_t)0x3e7a7aae, (q31_t)0xc004a188, + (q31_t)0x3e6deaa1, (q31_t)0xc004ef3f, (q31_t)0x3e615aa3, (q31_t)0xc0053f6e, + (q31_t)0x3e54cab5, (q31_t)0xc0059214, (q31_t)0x3e483ad8, (q31_t)0xc005e731, + (q31_t)0x3e3bab0b, (q31_t)0xc0063ec6, (q31_t)0x3e2f1b50, (q31_t)0xc00698d3, + (q31_t)0x3e228ba7, (q31_t)0xc006f556, (q31_t)0x3e15fc11, (q31_t)0xc0075452, + (q31_t)0x3e096c8d, (q31_t)0xc007b5c4, (q31_t)0x3dfcdd1d, (q31_t)0xc00819ae, + (q31_t)0x3df04dc0, (q31_t)0xc008800f, (q31_t)0x3de3be78, (q31_t)0xc008e8e8, + (q31_t)0x3dd72f45, (q31_t)0xc0095438, (q31_t)0x3dcaa027, (q31_t)0xc009c1ff, + (q31_t)0x3dbe111e, (q31_t)0xc00a323d, (q31_t)0x3db1822c, (q31_t)0xc00aa4f3, + (q31_t)0x3da4f351, (q31_t)0xc00b1a20, (q31_t)0x3d98648d, (q31_t)0xc00b91c4, + (q31_t)0x3d8bd5e1, (q31_t)0xc00c0be0, (q31_t)0x3d7f474d, (q31_t)0xc00c8872, + (q31_t)0x3d72b8d2, (q31_t)0xc00d077c, (q31_t)0x3d662a70, (q31_t)0xc00d88fd, + (q31_t)0x3d599c28, (q31_t)0xc00e0cf5, (q31_t)0x3d4d0df9, (q31_t)0xc00e9364, + (q31_t)0x3d407fe6, (q31_t)0xc00f1c4a, (q31_t)0x3d33f1ed, (q31_t)0xc00fa7a8, + (q31_t)0x3d276410, (q31_t)0xc010357c, (q31_t)0x3d1ad650, (q31_t)0xc010c5c7, + (q31_t)0x3d0e48ab, (q31_t)0xc011588a, (q31_t)0x3d01bb24, (q31_t)0xc011edc3, + (q31_t)0x3cf52dbb, (q31_t)0xc0128574, (q31_t)0x3ce8a06f, (q31_t)0xc0131f9b, + (q31_t)0x3cdc1342, (q31_t)0xc013bc39, (q31_t)0x3ccf8634, (q31_t)0xc0145b4e, + (q31_t)0x3cc2f945, (q31_t)0xc014fcda, (q31_t)0x3cb66c77, (q31_t)0xc015a0dd, + (q31_t)0x3ca9dfc8, (q31_t)0xc0164757, (q31_t)0x3c9d533b, (q31_t)0xc016f047, + (q31_t)0x3c90c6cf, (q31_t)0xc0179bae, (q31_t)0x3c843a85, (q31_t)0xc018498c, + (q31_t)0x3c77ae5e, (q31_t)0xc018f9e1, (q31_t)0x3c6b2259, (q31_t)0xc019acac, + (q31_t)0x3c5e9678, (q31_t)0xc01a61ee, (q31_t)0x3c520aba, (q31_t)0xc01b19a7, + (q31_t)0x3c457f21, (q31_t)0xc01bd3d6, (q31_t)0x3c38f3ac, (q31_t)0xc01c907c, + (q31_t)0x3c2c685d, (q31_t)0xc01d4f99, (q31_t)0x3c1fdd34, (q31_t)0xc01e112b, + (q31_t)0x3c135231, (q31_t)0xc01ed535, (q31_t)0x3c06c754, (q31_t)0xc01f9bb5, + (q31_t)0x3bfa3c9f, (q31_t)0xc02064ab, (q31_t)0x3bedb212, (q31_t)0xc0213018, + (q31_t)0x3be127ac, (q31_t)0xc021fdfb, (q31_t)0x3bd49d70, (q31_t)0xc022ce54, + (q31_t)0x3bc8135c, (q31_t)0xc023a124, (q31_t)0x3bbb8973, (q31_t)0xc024766a, + (q31_t)0x3baeffb3, (q31_t)0xc0254e27, (q31_t)0x3ba2761e, (q31_t)0xc0262859, + (q31_t)0x3b95ecb4, (q31_t)0xc0270502, (q31_t)0x3b896375, (q31_t)0xc027e421, + (q31_t)0x3b7cda63, (q31_t)0xc028c5b6, (q31_t)0x3b70517d, (q31_t)0xc029a9c1, + (q31_t)0x3b63c8c4, (q31_t)0xc02a9042, (q31_t)0x3b574039, (q31_t)0xc02b7939, + (q31_t)0x3b4ab7db, (q31_t)0xc02c64a6, (q31_t)0x3b3e2fac, (q31_t)0xc02d5289, + (q31_t)0x3b31a7ac, (q31_t)0xc02e42e2, (q31_t)0x3b251fdc, (q31_t)0xc02f35b1, + (q31_t)0x3b18983b, (q31_t)0xc0302af5, (q31_t)0x3b0c10cb, (q31_t)0xc03122b0, + (q31_t)0x3aff898c, (q31_t)0xc0321ce0, (q31_t)0x3af3027e, (q31_t)0xc0331986, + (q31_t)0x3ae67ba2, (q31_t)0xc03418a2, (q31_t)0x3ad9f4f8, (q31_t)0xc0351a33, + (q31_t)0x3acd6e81, (q31_t)0xc0361e3a, (q31_t)0x3ac0e83d, (q31_t)0xc03724b6, + (q31_t)0x3ab4622d, (q31_t)0xc0382da8, (q31_t)0x3aa7dc52, (q31_t)0xc0393910, + (q31_t)0x3a9b56ab, (q31_t)0xc03a46ed, (q31_t)0x3a8ed139, (q31_t)0xc03b573f, + (q31_t)0x3a824bfd, (q31_t)0xc03c6a07, (q31_t)0x3a75c6f8, (q31_t)0xc03d7f44, + (q31_t)0x3a694229, (q31_t)0xc03e96f6, (q31_t)0x3a5cbd91, (q31_t)0xc03fb11d, + (q31_t)0x3a503930, (q31_t)0xc040cdba, (q31_t)0x3a43b508, (q31_t)0xc041eccc, + (q31_t)0x3a373119, (q31_t)0xc0430e53, (q31_t)0x3a2aad62, (q31_t)0xc044324f, + (q31_t)0x3a1e29e5, (q31_t)0xc04558c0, (q31_t)0x3a11a6a3, (q31_t)0xc04681a6, + (q31_t)0x3a05239a, (q31_t)0xc047ad01, (q31_t)0x39f8a0cd, (q31_t)0xc048dad1, + (q31_t)0x39ec1e3b, (q31_t)0xc04a0b16, (q31_t)0x39df9be6, (q31_t)0xc04b3dcf, + (q31_t)0x39d319cc, (q31_t)0xc04c72fe, (q31_t)0x39c697f0, (q31_t)0xc04daaa1, + (q31_t)0x39ba1651, (q31_t)0xc04ee4b8, (q31_t)0x39ad94f0, (q31_t)0xc0502145, + (q31_t)0x39a113cd, (q31_t)0xc0516045, (q31_t)0x399492ea, (q31_t)0xc052a1bb, + (q31_t)0x39881245, (q31_t)0xc053e5a5, (q31_t)0x397b91e1, (q31_t)0xc0552c03, + (q31_t)0x396f11bc, (q31_t)0xc05674d6, (q31_t)0x396291d9, (q31_t)0xc057c01d, + (q31_t)0x39561237, (q31_t)0xc0590dd8, (q31_t)0x394992d7, (q31_t)0xc05a5e07, + (q31_t)0x393d13b8, (q31_t)0xc05bb0ab, (q31_t)0x393094dd, (q31_t)0xc05d05c3, + (q31_t)0x39241645, (q31_t)0xc05e5d4e, (q31_t)0x391797f0, (q31_t)0xc05fb74e, + (q31_t)0x390b19e0, (q31_t)0xc06113c2, (q31_t)0x38fe9c15, (q31_t)0xc06272aa, + (q31_t)0x38f21e8e, (q31_t)0xc063d405, (q31_t)0x38e5a14d, (q31_t)0xc06537d4, + (q31_t)0x38d92452, (q31_t)0xc0669e18, (q31_t)0x38cca79e, (q31_t)0xc06806ce, + (q31_t)0x38c02b31, (q31_t)0xc06971f9, (q31_t)0x38b3af0c, (q31_t)0xc06adf97, + (q31_t)0x38a7332e, (q31_t)0xc06c4fa8, (q31_t)0x389ab799, (q31_t)0xc06dc22e, + (q31_t)0x388e3c4d, (q31_t)0xc06f3726, (q31_t)0x3881c14b, (q31_t)0xc070ae92, + (q31_t)0x38754692, (q31_t)0xc0722871, (q31_t)0x3868cc24, (q31_t)0xc073a4c3, + (q31_t)0x385c5201, (q31_t)0xc0752389, (q31_t)0x384fd829, (q31_t)0xc076a4c2, + (q31_t)0x38435e9d, (q31_t)0xc078286e, (q31_t)0x3836e55d, (q31_t)0xc079ae8c, + (q31_t)0x382a6c6a, (q31_t)0xc07b371e, (q31_t)0x381df3c5, (q31_t)0xc07cc223, + (q31_t)0x38117b6d, (q31_t)0xc07e4f9b, (q31_t)0x38050364, (q31_t)0xc07fdf85, + (q31_t)0x37f88ba9, (q31_t)0xc08171e2, (q31_t)0x37ec143e, (q31_t)0xc08306b2, + (q31_t)0x37df9d22, (q31_t)0xc0849df4, (q31_t)0x37d32657, (q31_t)0xc08637a9, + (q31_t)0x37c6afdc, (q31_t)0xc087d3d0, (q31_t)0x37ba39b3, (q31_t)0xc089726a, + (q31_t)0x37adc3db, (q31_t)0xc08b1376, (q31_t)0x37a14e55, (q31_t)0xc08cb6f5, + (q31_t)0x3794d922, (q31_t)0xc08e5ce5, (q31_t)0x37886442, (q31_t)0xc0900548, + (q31_t)0x377befb5, (q31_t)0xc091b01d, (q31_t)0x376f7b7d, (q31_t)0xc0935d64, + (q31_t)0x37630799, (q31_t)0xc0950d1d, (q31_t)0x3756940a, (q31_t)0xc096bf48, + (q31_t)0x374a20d0, (q31_t)0xc09873e4, (q31_t)0x373daded, (q31_t)0xc09a2af3, + (q31_t)0x37313b60, (q31_t)0xc09be473, (q31_t)0x3724c92a, (q31_t)0xc09da065, + (q31_t)0x3718574b, (q31_t)0xc09f5ec8, (q31_t)0x370be5c4, (q31_t)0xc0a11f9d, + (q31_t)0x36ff7496, (q31_t)0xc0a2e2e3, (q31_t)0x36f303c0, (q31_t)0xc0a4a89b, + (q31_t)0x36e69344, (q31_t)0xc0a670c4, (q31_t)0x36da2321, (q31_t)0xc0a83b5e, + (q31_t)0x36cdb359, (q31_t)0xc0aa086a, (q31_t)0x36c143ec, (q31_t)0xc0abd7e6, + (q31_t)0x36b4d4d9, (q31_t)0xc0ada9d4, (q31_t)0x36a86623, (q31_t)0xc0af7e33, + (q31_t)0x369bf7c9, (q31_t)0xc0b15502, (q31_t)0x368f89cb, (q31_t)0xc0b32e42, + (q31_t)0x36831c2b, (q31_t)0xc0b509f3, (q31_t)0x3676aee8, (q31_t)0xc0b6e815, + (q31_t)0x366a4203, (q31_t)0xc0b8c8a7, (q31_t)0x365dd57d, (q31_t)0xc0baabaa, + (q31_t)0x36516956, (q31_t)0xc0bc911d, (q31_t)0x3644fd8f, (q31_t)0xc0be7901, + (q31_t)0x36389228, (q31_t)0xc0c06355, (q31_t)0x362c2721, (q31_t)0xc0c25019, + (q31_t)0x361fbc7b, (q31_t)0xc0c43f4d, (q31_t)0x36135237, (q31_t)0xc0c630f2, + (q31_t)0x3606e854, (q31_t)0xc0c82506, (q31_t)0x35fa7ed4, (q31_t)0xc0ca1b8a, + (q31_t)0x35ee15b7, (q31_t)0xc0cc147f, (q31_t)0x35e1acfd, (q31_t)0xc0ce0fe3, + (q31_t)0x35d544a7, (q31_t)0xc0d00db6, (q31_t)0x35c8dcb6, (q31_t)0xc0d20dfa, + (q31_t)0x35bc7529, (q31_t)0xc0d410ad, (q31_t)0x35b00e02, (q31_t)0xc0d615cf, + (q31_t)0x35a3a740, (q31_t)0xc0d81d61, (q31_t)0x359740e5, (q31_t)0xc0da2762, + (q31_t)0x358adaf0, (q31_t)0xc0dc33d2, (q31_t)0x357e7563, (q31_t)0xc0de42b2, + (q31_t)0x3572103d, (q31_t)0xc0e05401, (q31_t)0x3565ab80, (q31_t)0xc0e267be, + (q31_t)0x3559472b, (q31_t)0xc0e47deb, (q31_t)0x354ce33f, (q31_t)0xc0e69686, + (q31_t)0x35407fbd, (q31_t)0xc0e8b190, (q31_t)0x35341ca5, (q31_t)0xc0eacf09, + (q31_t)0x3527b9f7, (q31_t)0xc0eceef1, (q31_t)0x351b57b5, (q31_t)0xc0ef1147, + (q31_t)0x350ef5de, (q31_t)0xc0f1360b, (q31_t)0x35029473, (q31_t)0xc0f35d3e, + (q31_t)0x34f63374, (q31_t)0xc0f586df, (q31_t)0x34e9d2e3, (q31_t)0xc0f7b2ee, + (q31_t)0x34dd72be, (q31_t)0xc0f9e16b, (q31_t)0x34d11308, (q31_t)0xc0fc1257, + (q31_t)0x34c4b3c0, (q31_t)0xc0fe45b0, (q31_t)0x34b854e7, (q31_t)0xc1007b77, + (q31_t)0x34abf67e, (q31_t)0xc102b3ac, (q31_t)0x349f9884, (q31_t)0xc104ee4f, + (q31_t)0x34933afa, (q31_t)0xc1072b5f, (q31_t)0x3486dde1, (q31_t)0xc1096add, + (q31_t)0x347a8139, (q31_t)0xc10bacc8, (q31_t)0x346e2504, (q31_t)0xc10df120, + (q31_t)0x3461c940, (q31_t)0xc11037e6, (q31_t)0x34556def, (q31_t)0xc1128119, + (q31_t)0x34491311, (q31_t)0xc114ccb9, (q31_t)0x343cb8a7, (q31_t)0xc1171ac6, + (q31_t)0x34305eb0, (q31_t)0xc1196b3f, (q31_t)0x3424052f, (q31_t)0xc11bbe26, + (q31_t)0x3417ac22, (q31_t)0xc11e1379, (q31_t)0x340b538b, (q31_t)0xc1206b39, + (q31_t)0x33fefb6a, (q31_t)0xc122c566, (q31_t)0x33f2a3bf, (q31_t)0xc12521ff, + (q31_t)0x33e64c8c, (q31_t)0xc1278104, (q31_t)0x33d9f5cf, (q31_t)0xc129e276, + (q31_t)0x33cd9f8b, (q31_t)0xc12c4653, (q31_t)0x33c149bf, (q31_t)0xc12eac9d, + (q31_t)0x33b4f46c, (q31_t)0xc1311553, (q31_t)0x33a89f92, (q31_t)0xc1338075, + (q31_t)0x339c4b32, (q31_t)0xc135ee02, (q31_t)0x338ff74d, (q31_t)0xc1385dfb, + (q31_t)0x3383a3e2, (q31_t)0xc13ad060, (q31_t)0x337750f2, (q31_t)0xc13d4530, + (q31_t)0x336afe7e, (q31_t)0xc13fbc6c, (q31_t)0x335eac86, (q31_t)0xc1423613, + (q31_t)0x33525b0b, (q31_t)0xc144b225, (q31_t)0x33460a0d, (q31_t)0xc14730a3, + (q31_t)0x3339b98d, (q31_t)0xc149b18b, (q31_t)0x332d698a, (q31_t)0xc14c34df, + (q31_t)0x33211a07, (q31_t)0xc14eba9d, (q31_t)0x3314cb02, (q31_t)0xc15142c6, + (q31_t)0x33087c7d, (q31_t)0xc153cd5a, (q31_t)0x32fc2e77, (q31_t)0xc1565a58, + (q31_t)0x32efe0f2, (q31_t)0xc158e9c1, (q31_t)0x32e393ef, (q31_t)0xc15b7b94, + (q31_t)0x32d7476c, (q31_t)0xc15e0fd1, (q31_t)0x32cafb6b, (q31_t)0xc160a678, + (q31_t)0x32beafed, (q31_t)0xc1633f8a, (q31_t)0x32b264f2, (q31_t)0xc165db05, + (q31_t)0x32a61a7a, (q31_t)0xc16878eb, (q31_t)0x3299d085, (q31_t)0xc16b193a, + (q31_t)0x328d8715, (q31_t)0xc16dbbf3, (q31_t)0x32813e2a, (q31_t)0xc1706115, + (q31_t)0x3274f5c3, (q31_t)0xc17308a1, (q31_t)0x3268ade3, (q31_t)0xc175b296, + (q31_t)0x325c6688, (q31_t)0xc1785ef4, (q31_t)0x32501fb5, (q31_t)0xc17b0dbb, + (q31_t)0x3243d968, (q31_t)0xc17dbeec, (q31_t)0x323793a3, (q31_t)0xc1807285, + (q31_t)0x322b4e66, (q31_t)0xc1832888, (q31_t)0x321f09b1, (q31_t)0xc185e0f3, + (q31_t)0x3212c585, (q31_t)0xc1889bc6, (q31_t)0x320681e3, (q31_t)0xc18b5903, + (q31_t)0x31fa3ecb, (q31_t)0xc18e18a7, (q31_t)0x31edfc3d, (q31_t)0xc190dab4, + (q31_t)0x31e1ba3a, (q31_t)0xc1939f29, (q31_t)0x31d578c2, (q31_t)0xc1966606, + (q31_t)0x31c937d6, (q31_t)0xc1992f4c, (q31_t)0x31bcf777, (q31_t)0xc19bfaf9, + (q31_t)0x31b0b7a4, (q31_t)0xc19ec90d, (q31_t)0x31a4785e, (q31_t)0xc1a1998a, + (q31_t)0x319839a6, (q31_t)0xc1a46c6e, (q31_t)0x318bfb7d, (q31_t)0xc1a741b9, + (q31_t)0x317fbde2, (q31_t)0xc1aa196c, (q31_t)0x317380d6, (q31_t)0xc1acf386, + (q31_t)0x31674459, (q31_t)0xc1afd007, (q31_t)0x315b086d, (q31_t)0xc1b2aef0, + (q31_t)0x314ecd11, (q31_t)0xc1b5903f, (q31_t)0x31429247, (q31_t)0xc1b873f5, + (q31_t)0x3136580d, (q31_t)0xc1bb5a11, (q31_t)0x312a1e66, (q31_t)0xc1be4294, + (q31_t)0x311de551, (q31_t)0xc1c12d7e, (q31_t)0x3111accf, (q31_t)0xc1c41ace, + (q31_t)0x310574e0, (q31_t)0xc1c70a84, (q31_t)0x30f93d86, (q31_t)0xc1c9fca0, + (q31_t)0x30ed06bf, (q31_t)0xc1ccf122, (q31_t)0x30e0d08d, (q31_t)0xc1cfe80a, + (q31_t)0x30d49af1, (q31_t)0xc1d2e158, (q31_t)0x30c865ea, (q31_t)0xc1d5dd0c, + (q31_t)0x30bc317a, (q31_t)0xc1d8db25, (q31_t)0x30affda0, (q31_t)0xc1dbdba3, + (q31_t)0x30a3ca5d, (q31_t)0xc1dede87, (q31_t)0x309797b2, (q31_t)0xc1e1e3d0, + (q31_t)0x308b659f, (q31_t)0xc1e4eb7e, (q31_t)0x307f3424, (q31_t)0xc1e7f591, + (q31_t)0x30730342, (q31_t)0xc1eb0209, (q31_t)0x3066d2fa, (q31_t)0xc1ee10e5, + (q31_t)0x305aa34c, (q31_t)0xc1f12227, (q31_t)0x304e7438, (q31_t)0xc1f435cc, + (q31_t)0x304245c0, (q31_t)0xc1f74bd6, (q31_t)0x303617e2, (q31_t)0xc1fa6445, + (q31_t)0x3029eaa1, (q31_t)0xc1fd7f17, (q31_t)0x301dbdfb, (q31_t)0xc2009c4e, + (q31_t)0x301191f3, (q31_t)0xc203bbe8, (q31_t)0x30056687, (q31_t)0xc206dde6, + (q31_t)0x2ff93bba, (q31_t)0xc20a0248, (q31_t)0x2fed118a, (q31_t)0xc20d290d, + (q31_t)0x2fe0e7f9, (q31_t)0xc2105236, (q31_t)0x2fd4bf08, (q31_t)0xc2137dc2, + (q31_t)0x2fc896b5, (q31_t)0xc216abb1, (q31_t)0x2fbc6f03, (q31_t)0xc219dc03, + (q31_t)0x2fb047f2, (q31_t)0xc21d0eb8, (q31_t)0x2fa42181, (q31_t)0xc22043d0, + (q31_t)0x2f97fbb2, (q31_t)0xc2237b4b, (q31_t)0x2f8bd685, (q31_t)0xc226b528, + (q31_t)0x2f7fb1fa, (q31_t)0xc229f167, (q31_t)0x2f738e12, (q31_t)0xc22d3009, + (q31_t)0x2f676ace, (q31_t)0xc230710d, (q31_t)0x2f5b482d, (q31_t)0xc233b473, + (q31_t)0x2f4f2630, (q31_t)0xc236fa3b, (q31_t)0x2f4304d8, (q31_t)0xc23a4265, + (q31_t)0x2f36e426, (q31_t)0xc23d8cf1, (q31_t)0x2f2ac419, (q31_t)0xc240d9de, + (q31_t)0x2f1ea4b2, (q31_t)0xc244292c, (q31_t)0x2f1285f2, (q31_t)0xc2477adc, + (q31_t)0x2f0667d9, (q31_t)0xc24aceed, (q31_t)0x2efa4a67, (q31_t)0xc24e255e, + (q31_t)0x2eee2d9d, (q31_t)0xc2517e31, (q31_t)0x2ee2117c, (q31_t)0xc254d965, + (q31_t)0x2ed5f604, (q31_t)0xc25836f9, (q31_t)0x2ec9db35, (q31_t)0xc25b96ee, + (q31_t)0x2ebdc110, (q31_t)0xc25ef943, (q31_t)0x2eb1a796, (q31_t)0xc2625df8, + (q31_t)0x2ea58ec6, (q31_t)0xc265c50e, (q31_t)0x2e9976a1, (q31_t)0xc2692e83, + (q31_t)0x2e8d5f29, (q31_t)0xc26c9a58, (q31_t)0x2e81485c, (q31_t)0xc270088e, + (q31_t)0x2e75323c, (q31_t)0xc2737922, (q31_t)0x2e691cc9, (q31_t)0xc276ec16, + (q31_t)0x2e5d0804, (q31_t)0xc27a616a, (q31_t)0x2e50f3ed, (q31_t)0xc27dd91c, + (q31_t)0x2e44e084, (q31_t)0xc281532e, (q31_t)0x2e38cdcb, (q31_t)0xc284cf9f, + (q31_t)0x2e2cbbc1, (q31_t)0xc2884e6e, (q31_t)0x2e20aa67, (q31_t)0xc28bcf9c, + (q31_t)0x2e1499bd, (q31_t)0xc28f5329, (q31_t)0x2e0889c4, (q31_t)0xc292d914, + (q31_t)0x2dfc7a7c, (q31_t)0xc296615d, (q31_t)0x2df06be6, (q31_t)0xc299ec05, + (q31_t)0x2de45e03, (q31_t)0xc29d790a, (q31_t)0x2dd850d2, (q31_t)0xc2a1086d, + (q31_t)0x2dcc4454, (q31_t)0xc2a49a2e, (q31_t)0x2dc0388a, (q31_t)0xc2a82e4d, + (q31_t)0x2db42d74, (q31_t)0xc2abc4c9, (q31_t)0x2da82313, (q31_t)0xc2af5da2, + (q31_t)0x2d9c1967, (q31_t)0xc2b2f8d8, (q31_t)0x2d901070, (q31_t)0xc2b6966c, + (q31_t)0x2d84082f, (q31_t)0xc2ba365c, (q31_t)0x2d7800a5, (q31_t)0xc2bdd8a9, + (q31_t)0x2d6bf9d1, (q31_t)0xc2c17d52, (q31_t)0x2d5ff3b5, (q31_t)0xc2c52459, + (q31_t)0x2d53ee51, (q31_t)0xc2c8cdbb, (q31_t)0x2d47e9a5, (q31_t)0xc2cc7979, + (q31_t)0x2d3be5b1, (q31_t)0xc2d02794, (q31_t)0x2d2fe277, (q31_t)0xc2d3d80a, + (q31_t)0x2d23dff7, (q31_t)0xc2d78add, (q31_t)0x2d17de31, (q31_t)0xc2db400a, + (q31_t)0x2d0bdd25, (q31_t)0xc2def794, (q31_t)0x2cffdcd4, (q31_t)0xc2e2b178, + (q31_t)0x2cf3dd3f, (q31_t)0xc2e66db8, (q31_t)0x2ce7de66, (q31_t)0xc2ea2c53, + (q31_t)0x2cdbe04a, (q31_t)0xc2eded49, (q31_t)0x2ccfe2ea, (q31_t)0xc2f1b099, + (q31_t)0x2cc3e648, (q31_t)0xc2f57644, (q31_t)0x2cb7ea63, (q31_t)0xc2f93e4a, + (q31_t)0x2cabef3d, (q31_t)0xc2fd08a9, (q31_t)0x2c9ff4d6, (q31_t)0xc300d563, + (q31_t)0x2c93fb2e, (q31_t)0xc304a477, (q31_t)0x2c880245, (q31_t)0xc30875e5, + (q31_t)0x2c7c0a1d, (q31_t)0xc30c49ad, (q31_t)0x2c7012b5, (q31_t)0xc3101fce, + (q31_t)0x2c641c0e, (q31_t)0xc313f848, (q31_t)0x2c582629, (q31_t)0xc317d31c, + (q31_t)0x2c4c3106, (q31_t)0xc31bb049, (q31_t)0x2c403ca5, (q31_t)0xc31f8fcf, + (q31_t)0x2c344908, (q31_t)0xc32371ae, (q31_t)0x2c28562d, (q31_t)0xc32755e5, + (q31_t)0x2c1c6417, (q31_t)0xc32b3c75, (q31_t)0x2c1072c4, (q31_t)0xc32f255e, + (q31_t)0x2c048237, (q31_t)0xc333109e, (q31_t)0x2bf8926f, (q31_t)0xc336fe37, + (q31_t)0x2beca36c, (q31_t)0xc33aee27, (q31_t)0x2be0b52f, (q31_t)0xc33ee070, + (q31_t)0x2bd4c7ba, (q31_t)0xc342d510, (q31_t)0x2bc8db0b, (q31_t)0xc346cc07, + (q31_t)0x2bbcef23, (q31_t)0xc34ac556, (q31_t)0x2bb10404, (q31_t)0xc34ec0fc, + (q31_t)0x2ba519ad, (q31_t)0xc352bef9, (q31_t)0x2b99301f, (q31_t)0xc356bf4d, + (q31_t)0x2b8d475b, (q31_t)0xc35ac1f7, (q31_t)0x2b815f60, (q31_t)0xc35ec6f8, + (q31_t)0x2b75782f, (q31_t)0xc362ce50, (q31_t)0x2b6991ca, (q31_t)0xc366d7fd, + (q31_t)0x2b5dac2f, (q31_t)0xc36ae401, (q31_t)0x2b51c760, (q31_t)0xc36ef25b, + (q31_t)0x2b45e35d, (q31_t)0xc373030a, (q31_t)0x2b3a0027, (q31_t)0xc377160f, + (q31_t)0x2b2e1dbe, (q31_t)0xc37b2b6a, (q31_t)0x2b223c22, (q31_t)0xc37f4319, + (q31_t)0x2b165b54, (q31_t)0xc3835d1e, (q31_t)0x2b0a7b54, (q31_t)0xc3877978, + (q31_t)0x2afe9c24, (q31_t)0xc38b9827, (q31_t)0x2af2bdc3, (q31_t)0xc38fb92a, + (q31_t)0x2ae6e031, (q31_t)0xc393dc82, (q31_t)0x2adb0370, (q31_t)0xc398022f, + (q31_t)0x2acf277f, (q31_t)0xc39c2a2f, (q31_t)0x2ac34c60, (q31_t)0xc3a05484, + (q31_t)0x2ab77212, (q31_t)0xc3a4812c, (q31_t)0x2aab9896, (q31_t)0xc3a8b028, + (q31_t)0x2a9fbfed, (q31_t)0xc3ace178, (q31_t)0x2a93e817, (q31_t)0xc3b1151b, + (q31_t)0x2a881114, (q31_t)0xc3b54b11, (q31_t)0x2a7c3ae5, (q31_t)0xc3b9835a, + (q31_t)0x2a70658a, (q31_t)0xc3bdbdf6, (q31_t)0x2a649105, (q31_t)0xc3c1fae5, + (q31_t)0x2a58bd54, (q31_t)0xc3c63a26, (q31_t)0x2a4cea79, (q31_t)0xc3ca7bba, + (q31_t)0x2a411874, (q31_t)0xc3cebfa0, (q31_t)0x2a354746, (q31_t)0xc3d305d8, + (q31_t)0x2a2976ef, (q31_t)0xc3d74e62, (q31_t)0x2a1da770, (q31_t)0xc3db993e, + (q31_t)0x2a11d8c8, (q31_t)0xc3dfe66c, (q31_t)0x2a060af9, (q31_t)0xc3e435ea, + (q31_t)0x29fa3e03, (q31_t)0xc3e887bb, (q31_t)0x29ee71e6, (q31_t)0xc3ecdbdc, + (q31_t)0x29e2a6a3, (q31_t)0xc3f1324e, (q31_t)0x29d6dc3b, (q31_t)0xc3f58b10, + (q31_t)0x29cb12ad, (q31_t)0xc3f9e624, (q31_t)0x29bf49fa, (q31_t)0xc3fe4388, + (q31_t)0x29b38223, (q31_t)0xc402a33c, (q31_t)0x29a7bb28, (q31_t)0xc4070540, + (q31_t)0x299bf509, (q31_t)0xc40b6994, (q31_t)0x29902fc7, (q31_t)0xc40fd037, + (q31_t)0x29846b63, (q31_t)0xc414392b, (q31_t)0x2978a7dd, (q31_t)0xc418a46d, + (q31_t)0x296ce535, (q31_t)0xc41d11ff, (q31_t)0x2961236c, (q31_t)0xc42181e0, + (q31_t)0x29556282, (q31_t)0xc425f410, (q31_t)0x2949a278, (q31_t)0xc42a688f, + (q31_t)0x293de34e, (q31_t)0xc42edf5c, (q31_t)0x29322505, (q31_t)0xc4335877, + (q31_t)0x2926679c, (q31_t)0xc437d3e1, (q31_t)0x291aab16, (q31_t)0xc43c5199, + (q31_t)0x290eef71, (q31_t)0xc440d19e, (q31_t)0x290334af, (q31_t)0xc44553f2, + (q31_t)0x28f77acf, (q31_t)0xc449d892, (q31_t)0x28ebc1d3, (q31_t)0xc44e5f80, + (q31_t)0x28e009ba, (q31_t)0xc452e8bc, (q31_t)0x28d45286, (q31_t)0xc4577444, + (q31_t)0x28c89c37, (q31_t)0xc45c0219, (q31_t)0x28bce6cd, (q31_t)0xc460923b, + (q31_t)0x28b13248, (q31_t)0xc46524a9, (q31_t)0x28a57ea9, (q31_t)0xc469b963, + (q31_t)0x2899cbf1, (q31_t)0xc46e5069, (q31_t)0x288e1a20, (q31_t)0xc472e9bc, + (q31_t)0x28826936, (q31_t)0xc477855a, (q31_t)0x2876b934, (q31_t)0xc47c2344, + (q31_t)0x286b0a1a, (q31_t)0xc480c379, (q31_t)0x285f5be9, (q31_t)0xc48565f9, + (q31_t)0x2853aea1, (q31_t)0xc48a0ac4, (q31_t)0x28480243, (q31_t)0xc48eb1db, + (q31_t)0x283c56cf, (q31_t)0xc4935b3c, (q31_t)0x2830ac45, (q31_t)0xc49806e7, + (q31_t)0x282502a7, (q31_t)0xc49cb4dd, (q31_t)0x281959f4, (q31_t)0xc4a1651c, + (q31_t)0x280db22d, (q31_t)0xc4a617a6, (q31_t)0x28020b52, (q31_t)0xc4aacc7a, + (q31_t)0x27f66564, (q31_t)0xc4af8397, (q31_t)0x27eac063, (q31_t)0xc4b43cfd, + (q31_t)0x27df1c50, (q31_t)0xc4b8f8ad, (q31_t)0x27d3792b, (q31_t)0xc4bdb6a6, + (q31_t)0x27c7d6f4, (q31_t)0xc4c276e8, (q31_t)0x27bc35ad, (q31_t)0xc4c73972, + (q31_t)0x27b09555, (q31_t)0xc4cbfe45, (q31_t)0x27a4f5ed, (q31_t)0xc4d0c560, + (q31_t)0x27995776, (q31_t)0xc4d58ec3, (q31_t)0x278db9ef, (q31_t)0xc4da5a6f, + (q31_t)0x27821d59, (q31_t)0xc4df2862, (q31_t)0x277681b6, (q31_t)0xc4e3f89c, + (q31_t)0x276ae704, (q31_t)0xc4e8cb1e, (q31_t)0x275f4d45, (q31_t)0xc4ed9fe7, + (q31_t)0x2753b479, (q31_t)0xc4f276f7, (q31_t)0x27481ca1, (q31_t)0xc4f7504e, + (q31_t)0x273c85bc, (q31_t)0xc4fc2bec, (q31_t)0x2730efcc, (q31_t)0xc50109d0, + (q31_t)0x27255ad1, (q31_t)0xc505e9fb, (q31_t)0x2719c6cb, (q31_t)0xc50acc6b, + (q31_t)0x270e33bb, (q31_t)0xc50fb121, (q31_t)0x2702a1a1, (q31_t)0xc514981d, + (q31_t)0x26f7107e, (q31_t)0xc519815f, (q31_t)0x26eb8052, (q31_t)0xc51e6ce6, + (q31_t)0x26dff11d, (q31_t)0xc5235ab2, (q31_t)0x26d462e1, (q31_t)0xc5284ac3, + (q31_t)0x26c8d59c, (q31_t)0xc52d3d18, (q31_t)0x26bd4951, (q31_t)0xc53231b3, + (q31_t)0x26b1bdff, (q31_t)0xc5372891, (q31_t)0x26a633a6, (q31_t)0xc53c21b4, + (q31_t)0x269aaa48, (q31_t)0xc5411d1b, (q31_t)0x268f21e5, (q31_t)0xc5461ac6, + (q31_t)0x26839a7c, (q31_t)0xc54b1ab4, (q31_t)0x26781410, (q31_t)0xc5501ce5, + (q31_t)0x266c8e9f, (q31_t)0xc555215a, (q31_t)0x26610a2a, (q31_t)0xc55a2812, + (q31_t)0x265586b3, (q31_t)0xc55f310d, (q31_t)0x264a0438, (q31_t)0xc5643c4a, + (q31_t)0x263e82bc, (q31_t)0xc56949ca, (q31_t)0x2633023e, (q31_t)0xc56e598c, + (q31_t)0x262782be, (q31_t)0xc5736b90, (q31_t)0x261c043d, (q31_t)0xc5787fd6, + (q31_t)0x261086bc, (q31_t)0xc57d965d, (q31_t)0x26050a3b, (q31_t)0xc582af26, + (q31_t)0x25f98ebb, (q31_t)0xc587ca31, (q31_t)0x25ee143b, (q31_t)0xc58ce77c, + (q31_t)0x25e29abc, (q31_t)0xc5920708, (q31_t)0x25d72240, (q31_t)0xc59728d5, + (q31_t)0x25cbaac5, (q31_t)0xc59c4ce3, (q31_t)0x25c0344d, (q31_t)0xc5a17330, + (q31_t)0x25b4bed8, (q31_t)0xc5a69bbe, (q31_t)0x25a94a67, (q31_t)0xc5abc68c, + (q31_t)0x259dd6f9, (q31_t)0xc5b0f399, (q31_t)0x25926490, (q31_t)0xc5b622e6, + (q31_t)0x2586f32c, (q31_t)0xc5bb5472, (q31_t)0x257b82cd, (q31_t)0xc5c0883d, + (q31_t)0x25701374, (q31_t)0xc5c5be47, (q31_t)0x2564a521, (q31_t)0xc5caf690, + (q31_t)0x255937d5, (q31_t)0xc5d03118, (q31_t)0x254dcb8f, (q31_t)0xc5d56ddd, + (q31_t)0x25426051, (q31_t)0xc5daace1, (q31_t)0x2536f61b, (q31_t)0xc5dfee22, + (q31_t)0x252b8cee, (q31_t)0xc5e531a1, (q31_t)0x252024c9, (q31_t)0xc5ea775e, + (q31_t)0x2514bdad, (q31_t)0xc5efbf58, (q31_t)0x2509579b, (q31_t)0xc5f5098f, + (q31_t)0x24fdf294, (q31_t)0xc5fa5603, (q31_t)0x24f28e96, (q31_t)0xc5ffa4b3, + (q31_t)0x24e72ba4, (q31_t)0xc604f5a0, (q31_t)0x24dbc9bd, (q31_t)0xc60a48c9, + (q31_t)0x24d068e2, (q31_t)0xc60f9e2e, (q31_t)0x24c50914, (q31_t)0xc614f5cf, + (q31_t)0x24b9aa52, (q31_t)0xc61a4fac, (q31_t)0x24ae4c9d, (q31_t)0xc61fabc4, + (q31_t)0x24a2eff6, (q31_t)0xc6250a18, (q31_t)0x2497945d, (q31_t)0xc62a6aa6, + (q31_t)0x248c39d3, (q31_t)0xc62fcd6f, (q31_t)0x2480e057, (q31_t)0xc6353273, + (q31_t)0x247587eb, (q31_t)0xc63a99b1, (q31_t)0x246a308f, (q31_t)0xc6400329, + (q31_t)0x245eda43, (q31_t)0xc6456edb, (q31_t)0x24538507, (q31_t)0xc64adcc7, + (q31_t)0x244830dd, (q31_t)0xc6504ced, (q31_t)0x243cddc4, (q31_t)0xc655bf4c, + (q31_t)0x24318bbe, (q31_t)0xc65b33e4, (q31_t)0x24263ac9, (q31_t)0xc660aab5, + (q31_t)0x241aeae8, (q31_t)0xc66623be, (q31_t)0x240f9c1a, (q31_t)0xc66b9f01, + (q31_t)0x24044e60, (q31_t)0xc6711c7b, (q31_t)0x23f901ba, (q31_t)0xc6769c2e, + (q31_t)0x23edb628, (q31_t)0xc67c1e18, (q31_t)0x23e26bac, (q31_t)0xc681a23a, + (q31_t)0x23d72245, (q31_t)0xc6872894, (q31_t)0x23cbd9f4, (q31_t)0xc68cb124, + (q31_t)0x23c092b9, (q31_t)0xc6923bec, (q31_t)0x23b54c95, (q31_t)0xc697c8eb, + (q31_t)0x23aa0788, (q31_t)0xc69d5820, (q31_t)0x239ec393, (q31_t)0xc6a2e98b, + (q31_t)0x239380b6, (q31_t)0xc6a87d2d, (q31_t)0x23883ef2, (q31_t)0xc6ae1304, + (q31_t)0x237cfe47, (q31_t)0xc6b3ab12, (q31_t)0x2371beb5, (q31_t)0xc6b94554, + (q31_t)0x2366803c, (q31_t)0xc6bee1cd, (q31_t)0x235b42df, (q31_t)0xc6c4807a, + (q31_t)0x2350069b, (q31_t)0xc6ca215c, (q31_t)0x2344cb73, (q31_t)0xc6cfc472, + (q31_t)0x23399167, (q31_t)0xc6d569be, (q31_t)0x232e5876, (q31_t)0xc6db113d, + (q31_t)0x232320a2, (q31_t)0xc6e0baf0, (q31_t)0x2317e9eb, (q31_t)0xc6e666d7, + (q31_t)0x230cb451, (q31_t)0xc6ec14f2, (q31_t)0x23017fd5, (q31_t)0xc6f1c540, + (q31_t)0x22f64c77, (q31_t)0xc6f777c1, (q31_t)0x22eb1a37, (q31_t)0xc6fd2c75, + (q31_t)0x22dfe917, (q31_t)0xc702e35c, (q31_t)0x22d4b916, (q31_t)0xc7089c75, + (q31_t)0x22c98a35, (q31_t)0xc70e57c0, (q31_t)0x22be5c74, (q31_t)0xc714153e, + (q31_t)0x22b32fd4, (q31_t)0xc719d4ed, (q31_t)0x22a80456, (q31_t)0xc71f96ce, + (q31_t)0x229cd9f8, (q31_t)0xc7255ae0, (q31_t)0x2291b0bd, (q31_t)0xc72b2123, + (q31_t)0x228688a4, (q31_t)0xc730e997, (q31_t)0x227b61af, (q31_t)0xc736b43c, + (q31_t)0x22703bdc, (q31_t)0xc73c8111, (q31_t)0x2265172e, (q31_t)0xc7425016, + (q31_t)0x2259f3a3, (q31_t)0xc748214c, (q31_t)0x224ed13d, (q31_t)0xc74df4b1, + (q31_t)0x2243affc, (q31_t)0xc753ca46, (q31_t)0x22388fe1, (q31_t)0xc759a20a, + (q31_t)0x222d70eb, (q31_t)0xc75f7bfe, (q31_t)0x2222531c, (q31_t)0xc7655820, + (q31_t)0x22173674, (q31_t)0xc76b3671, (q31_t)0x220c1af3, (q31_t)0xc77116f0, + (q31_t)0x22010099, (q31_t)0xc776f99d, (q31_t)0x21f5e768, (q31_t)0xc77cde79, + (q31_t)0x21eacf5f, (q31_t)0xc782c582, (q31_t)0x21dfb87f, (q31_t)0xc788aeb9, + (q31_t)0x21d4a2c8, (q31_t)0xc78e9a1d, (q31_t)0x21c98e3b, (q31_t)0xc79487ae, + (q31_t)0x21be7ad8, (q31_t)0xc79a776c, (q31_t)0x21b368a0, (q31_t)0xc7a06957, + (q31_t)0x21a85793, (q31_t)0xc7a65d6e, (q31_t)0x219d47b1, (q31_t)0xc7ac53b1, + (q31_t)0x219238fb, (q31_t)0xc7b24c20, (q31_t)0x21872b72, (q31_t)0xc7b846ba, + (q31_t)0x217c1f15, (q31_t)0xc7be4381, (q31_t)0x217113e5, (q31_t)0xc7c44272, + (q31_t)0x216609e3, (q31_t)0xc7ca438f, (q31_t)0x215b0110, (q31_t)0xc7d046d6, + (q31_t)0x214ff96a, (q31_t)0xc7d64c47, (q31_t)0x2144f2f3, (q31_t)0xc7dc53e3, + (q31_t)0x2139edac, (q31_t)0xc7e25daa, (q31_t)0x212ee995, (q31_t)0xc7e8699a, + (q31_t)0x2123e6ad, (q31_t)0xc7ee77b3, (q31_t)0x2118e4f6, (q31_t)0xc7f487f6, + (q31_t)0x210de470, (q31_t)0xc7fa9a62, (q31_t)0x2102e51c, (q31_t)0xc800aef7, + (q31_t)0x20f7e6f9, (q31_t)0xc806c5b5, (q31_t)0x20ecea09, (q31_t)0xc80cde9b, + (q31_t)0x20e1ee4b, (q31_t)0xc812f9a9, (q31_t)0x20d6f3c1, (q31_t)0xc81916df, + (q31_t)0x20cbfa6a, (q31_t)0xc81f363d, (q31_t)0x20c10247, (q31_t)0xc82557c3, + (q31_t)0x20b60b58, (q31_t)0xc82b7b70, (q31_t)0x20ab159e, (q31_t)0xc831a143, + (q31_t)0x20a0211a, (q31_t)0xc837c93e, (q31_t)0x20952dcb, (q31_t)0xc83df35f, + (q31_t)0x208a3bb2, (q31_t)0xc8441fa6, (q31_t)0x207f4acf, (q31_t)0xc84a4e14, + (q31_t)0x20745b24, (q31_t)0xc8507ea7, (q31_t)0x20696cb0, (q31_t)0xc856b160, + (q31_t)0x205e7f74, (q31_t)0xc85ce63e, (q31_t)0x2053936f, (q31_t)0xc8631d42, + (q31_t)0x2048a8a4, (q31_t)0xc869566a, (q31_t)0x203dbf11, (q31_t)0xc86f91b7, + (q31_t)0x2032d6b8, (q31_t)0xc875cf28, (q31_t)0x2027ef99, (q31_t)0xc87c0ebd, + (q31_t)0x201d09b4, (q31_t)0xc8825077, (q31_t)0x2012250a, (q31_t)0xc8889454, + (q31_t)0x2007419b, (q31_t)0xc88eda54, (q31_t)0x1ffc5f67, (q31_t)0xc8952278, + (q31_t)0x1ff17e70, (q31_t)0xc89b6cbf, (q31_t)0x1fe69eb4, (q31_t)0xc8a1b928, + (q31_t)0x1fdbc036, (q31_t)0xc8a807b4, (q31_t)0x1fd0e2f5, (q31_t)0xc8ae5862, + (q31_t)0x1fc606f1, (q31_t)0xc8b4ab32, (q31_t)0x1fbb2c2c, (q31_t)0xc8bb0023, + (q31_t)0x1fb052a5, (q31_t)0xc8c15736, (q31_t)0x1fa57a5d, (q31_t)0xc8c7b06b, + (q31_t)0x1f9aa354, (q31_t)0xc8ce0bc0, (q31_t)0x1f8fcd8b, (q31_t)0xc8d46936, + (q31_t)0x1f84f902, (q31_t)0xc8dac8cd, (q31_t)0x1f7a25ba, (q31_t)0xc8e12a84, + (q31_t)0x1f6f53b3, (q31_t)0xc8e78e5b, (q31_t)0x1f6482ed, (q31_t)0xc8edf452, + (q31_t)0x1f59b369, (q31_t)0xc8f45c68, (q31_t)0x1f4ee527, (q31_t)0xc8fac69e, + (q31_t)0x1f441828, (q31_t)0xc90132f2, (q31_t)0x1f394c6b, (q31_t)0xc907a166, + (q31_t)0x1f2e81f3, (q31_t)0xc90e11f7, (q31_t)0x1f23b8be, (q31_t)0xc91484a8, + (q31_t)0x1f18f0ce, (q31_t)0xc91af976, (q31_t)0x1f0e2a22, (q31_t)0xc9217062, + (q31_t)0x1f0364bc, (q31_t)0xc927e96b, (q31_t)0x1ef8a09b, (q31_t)0xc92e6492, + (q31_t)0x1eedddc0, (q31_t)0xc934e1d6, (q31_t)0x1ee31c2b, (q31_t)0xc93b6137, + (q31_t)0x1ed85bdd, (q31_t)0xc941e2b4, (q31_t)0x1ecd9cd7, (q31_t)0xc948664d, + (q31_t)0x1ec2df18, (q31_t)0xc94eec03, (q31_t)0x1eb822a1, (q31_t)0xc95573d4, + (q31_t)0x1ead6773, (q31_t)0xc95bfdc1, (q31_t)0x1ea2ad8d, (q31_t)0xc96289c9, + (q31_t)0x1e97f4f1, (q31_t)0xc96917ec, (q31_t)0x1e8d3d9e, (q31_t)0xc96fa82a, + (q31_t)0x1e828796, (q31_t)0xc9763a83, (q31_t)0x1e77d2d8, (q31_t)0xc97ccef5, + (q31_t)0x1e6d1f65, (q31_t)0xc9836582, (q31_t)0x1e626d3e, (q31_t)0xc989fe29, + (q31_t)0x1e57bc62, (q31_t)0xc99098e9, (q31_t)0x1e4d0cd2, (q31_t)0xc99735c2, + (q31_t)0x1e425e8f, (q31_t)0xc99dd4b4, (q31_t)0x1e37b199, (q31_t)0xc9a475bf, + (q31_t)0x1e2d05f1, (q31_t)0xc9ab18e3, (q31_t)0x1e225b96, (q31_t)0xc9b1be1e, + (q31_t)0x1e17b28a, (q31_t)0xc9b86572, (q31_t)0x1e0d0acc, (q31_t)0xc9bf0edd, + (q31_t)0x1e02645d, (q31_t)0xc9c5ba60, (q31_t)0x1df7bf3e, (q31_t)0xc9cc67fa, + (q31_t)0x1ded1b6e, (q31_t)0xc9d317ab, (q31_t)0x1de278ef, (q31_t)0xc9d9c973, + (q31_t)0x1dd7d7c1, (q31_t)0xc9e07d51, (q31_t)0x1dcd37e4, (q31_t)0xc9e73346, + (q31_t)0x1dc29958, (q31_t)0xc9edeb50, (q31_t)0x1db7fc1e, (q31_t)0xc9f4a570, + (q31_t)0x1dad6036, (q31_t)0xc9fb61a5, (q31_t)0x1da2c5a2, (q31_t)0xca021fef, + (q31_t)0x1d982c60, (q31_t)0xca08e04f, (q31_t)0x1d8d9472, (q31_t)0xca0fa2c3, + (q31_t)0x1d82fdd8, (q31_t)0xca16674b, (q31_t)0x1d786892, (q31_t)0xca1d2de7, + (q31_t)0x1d6dd4a2, (q31_t)0xca23f698, (q31_t)0x1d634206, (q31_t)0xca2ac15b, + (q31_t)0x1d58b0c0, (q31_t)0xca318e32, (q31_t)0x1d4e20d0, (q31_t)0xca385d1d, + (q31_t)0x1d439236, (q31_t)0xca3f2e19, (q31_t)0x1d3904f4, (q31_t)0xca460129, + (q31_t)0x1d2e7908, (q31_t)0xca4cd64b, (q31_t)0x1d23ee74, (q31_t)0xca53ad7e, + (q31_t)0x1d196538, (q31_t)0xca5a86c4, (q31_t)0x1d0edd55, (q31_t)0xca61621b, + (q31_t)0x1d0456ca, (q31_t)0xca683f83, (q31_t)0x1cf9d199, (q31_t)0xca6f1efc, + (q31_t)0x1cef4dc2, (q31_t)0xca760086, (q31_t)0x1ce4cb44, (q31_t)0xca7ce420, + (q31_t)0x1cda4a21, (q31_t)0xca83c9ca, (q31_t)0x1ccfca59, (q31_t)0xca8ab184, + (q31_t)0x1cc54bec, (q31_t)0xca919b4e, (q31_t)0x1cbacedb, (q31_t)0xca988727, + (q31_t)0x1cb05326, (q31_t)0xca9f750f, (q31_t)0x1ca5d8cd, (q31_t)0xcaa66506, + (q31_t)0x1c9b5fd2, (q31_t)0xcaad570c, (q31_t)0x1c90e834, (q31_t)0xcab44b1f, + (q31_t)0x1c8671f3, (q31_t)0xcabb4141, (q31_t)0x1c7bfd11, (q31_t)0xcac23971, + (q31_t)0x1c71898d, (q31_t)0xcac933ae, (q31_t)0x1c671768, (q31_t)0xcad02ff8, + (q31_t)0x1c5ca6a2, (q31_t)0xcad72e4f, (q31_t)0x1c52373c, (q31_t)0xcade2eb3, + (q31_t)0x1c47c936, (q31_t)0xcae53123, (q31_t)0x1c3d5c91, (q31_t)0xcaec35a0, + (q31_t)0x1c32f14d, (q31_t)0xcaf33c28, (q31_t)0x1c28876a, (q31_t)0xcafa44bc, + (q31_t)0x1c1e1ee9, (q31_t)0xcb014f5b, (q31_t)0x1c13b7c9, (q31_t)0xcb085c05, + (q31_t)0x1c09520d, (q31_t)0xcb0f6aba, (q31_t)0x1bfeedb3, (q31_t)0xcb167b79, + (q31_t)0x1bf48abd, (q31_t)0xcb1d8e43, (q31_t)0x1bea292b, (q31_t)0xcb24a316, + (q31_t)0x1bdfc8fc, (q31_t)0xcb2bb9f4, (q31_t)0x1bd56a32, (q31_t)0xcb32d2da, + (q31_t)0x1bcb0cce, (q31_t)0xcb39edca, (q31_t)0x1bc0b0ce, (q31_t)0xcb410ac3, + (q31_t)0x1bb65634, (q31_t)0xcb4829c4, (q31_t)0x1babfd01, (q31_t)0xcb4f4acd, + (q31_t)0x1ba1a534, (q31_t)0xcb566ddf, (q31_t)0x1b974ece, (q31_t)0xcb5d92f8, + (q31_t)0x1b8cf9cf, (q31_t)0xcb64ba19, (q31_t)0x1b82a638, (q31_t)0xcb6be341, + (q31_t)0x1b785409, (q31_t)0xcb730e70, (q31_t)0x1b6e0342, (q31_t)0xcb7a3ba5, + (q31_t)0x1b63b3e5, (q31_t)0xcb816ae1, (q31_t)0x1b5965f1, (q31_t)0xcb889c23, + (q31_t)0x1b4f1967, (q31_t)0xcb8fcf6b, (q31_t)0x1b44ce46, (q31_t)0xcb9704b9, + (q31_t)0x1b3a8491, (q31_t)0xcb9e3c0b, (q31_t)0x1b303c46, (q31_t)0xcba57563, + (q31_t)0x1b25f566, (q31_t)0xcbacb0bf, (q31_t)0x1b1baff2, (q31_t)0xcbb3ee20, + (q31_t)0x1b116beb, (q31_t)0xcbbb2d85, (q31_t)0x1b072950, (q31_t)0xcbc26eee, + (q31_t)0x1afce821, (q31_t)0xcbc9b25a, (q31_t)0x1af2a860, (q31_t)0xcbd0f7ca, + (q31_t)0x1ae86a0d, (q31_t)0xcbd83f3d, (q31_t)0x1ade2d28, (q31_t)0xcbdf88b3, + (q31_t)0x1ad3f1b1, (q31_t)0xcbe6d42b, (q31_t)0x1ac9b7a9, (q31_t)0xcbee21a5, + (q31_t)0x1abf7f11, (q31_t)0xcbf57121, (q31_t)0x1ab547e8, (q31_t)0xcbfcc29f, + (q31_t)0x1aab122f, (q31_t)0xcc04161e, (q31_t)0x1aa0dde7, (q31_t)0xcc0b6b9e, + (q31_t)0x1a96ab0f, (q31_t)0xcc12c31f, (q31_t)0x1a8c79a9, (q31_t)0xcc1a1ca0, + (q31_t)0x1a8249b4, (q31_t)0xcc217822, (q31_t)0x1a781b31, (q31_t)0xcc28d5a3, + (q31_t)0x1a6dee21, (q31_t)0xcc303524, (q31_t)0x1a63c284, (q31_t)0xcc3796a5, + (q31_t)0x1a599859, (q31_t)0xcc3efa25, (q31_t)0x1a4f6fa3, (q31_t)0xcc465fa3, + (q31_t)0x1a454860, (q31_t)0xcc4dc720, (q31_t)0x1a3b2292, (q31_t)0xcc55309b, + (q31_t)0x1a30fe38, (q31_t)0xcc5c9c14, (q31_t)0x1a26db54, (q31_t)0xcc64098b, + (q31_t)0x1a1cb9e5, (q31_t)0xcc6b78ff, (q31_t)0x1a1299ec, (q31_t)0xcc72ea70, + (q31_t)0x1a087b69, (q31_t)0xcc7a5dde, (q31_t)0x19fe5e5e, (q31_t)0xcc81d349, + (q31_t)0x19f442c9, (q31_t)0xcc894aaf, (q31_t)0x19ea28ac, (q31_t)0xcc90c412, + (q31_t)0x19e01006, (q31_t)0xcc983f70, (q31_t)0x19d5f8d9, (q31_t)0xcc9fbcca, + (q31_t)0x19cbe325, (q31_t)0xcca73c1e, (q31_t)0x19c1cee9, (q31_t)0xccaebd6e, + (q31_t)0x19b7bc27, (q31_t)0xccb640b8, (q31_t)0x19adaadf, (q31_t)0xccbdc5fc, + (q31_t)0x19a39b11, (q31_t)0xccc54d3a, (q31_t)0x19998cbe, (q31_t)0xccccd671, + (q31_t)0x198f7fe6, (q31_t)0xccd461a2, (q31_t)0x19857489, (q31_t)0xccdbeecc, + (q31_t)0x197b6aa8, (q31_t)0xcce37def, (q31_t)0x19716243, (q31_t)0xcceb0f0a, + (q31_t)0x19675b5a, (q31_t)0xccf2a21d, (q31_t)0x195d55ef, (q31_t)0xccfa3729, + (q31_t)0x19535201, (q31_t)0xcd01ce2b, (q31_t)0x19494f90, (q31_t)0xcd096725, + (q31_t)0x193f4e9e, (q31_t)0xcd110216, (q31_t)0x19354f2a, (q31_t)0xcd189efe, + (q31_t)0x192b5135, (q31_t)0xcd203ddc, (q31_t)0x192154bf, (q31_t)0xcd27deb0, + (q31_t)0x191759c9, (q31_t)0xcd2f817b, (q31_t)0x190d6053, (q31_t)0xcd37263a, + (q31_t)0x1903685d, (q31_t)0xcd3eccef, (q31_t)0x18f971e8, (q31_t)0xcd467599, + (q31_t)0x18ef7cf4, (q31_t)0xcd4e2037, (q31_t)0x18e58982, (q31_t)0xcd55ccca, + (q31_t)0x18db9792, (q31_t)0xcd5d7b50, (q31_t)0x18d1a724, (q31_t)0xcd652bcb, + (q31_t)0x18c7b838, (q31_t)0xcd6cde39, (q31_t)0x18bdcad0, (q31_t)0xcd74929a, + (q31_t)0x18b3deeb, (q31_t)0xcd7c48ee, (q31_t)0x18a9f48a, (q31_t)0xcd840134, + (q31_t)0x18a00bae, (q31_t)0xcd8bbb6d, (q31_t)0x18962456, (q31_t)0xcd937798, + (q31_t)0x188c3e83, (q31_t)0xcd9b35b4, (q31_t)0x18825a35, (q31_t)0xcda2f5c2, + (q31_t)0x1878776d, (q31_t)0xcdaab7c0, (q31_t)0x186e962b, (q31_t)0xcdb27bb0, + (q31_t)0x1864b670, (q31_t)0xcdba4190, (q31_t)0x185ad83c, (q31_t)0xcdc20960, + (q31_t)0x1850fb8e, (q31_t)0xcdc9d320, (q31_t)0x18472069, (q31_t)0xcdd19ed0, + (q31_t)0x183d46cc, (q31_t)0xcdd96c6f, (q31_t)0x18336eb7, (q31_t)0xcde13bfd, + (q31_t)0x1829982b, (q31_t)0xcde90d79, (q31_t)0x181fc328, (q31_t)0xcdf0e0e4, + (q31_t)0x1815efae, (q31_t)0xcdf8b63d, (q31_t)0x180c1dbf, (q31_t)0xce008d84, + (q31_t)0x18024d59, (q31_t)0xce0866b8, (q31_t)0x17f87e7f, (q31_t)0xce1041d9, + (q31_t)0x17eeb130, (q31_t)0xce181ee8, (q31_t)0x17e4e56c, (q31_t)0xce1ffde2, + (q31_t)0x17db1b34, (q31_t)0xce27dec9, (q31_t)0x17d15288, (q31_t)0xce2fc19c, + (q31_t)0x17c78b68, (q31_t)0xce37a65b, (q31_t)0x17bdc5d6, (q31_t)0xce3f8d05, + (q31_t)0x17b401d1, (q31_t)0xce47759a, (q31_t)0x17aa3f5a, (q31_t)0xce4f6019, + (q31_t)0x17a07e70, (q31_t)0xce574c84, (q31_t)0x1796bf16, (q31_t)0xce5f3ad8, + (q31_t)0x178d014a, (q31_t)0xce672b16, (q31_t)0x1783450d, (q31_t)0xce6f1d3d, + (q31_t)0x17798a60, (q31_t)0xce77114e, (q31_t)0x176fd143, (q31_t)0xce7f0748, + (q31_t)0x176619b6, (q31_t)0xce86ff2a, (q31_t)0x175c63ba, (q31_t)0xce8ef8f4, + (q31_t)0x1752af4f, (q31_t)0xce96f4a7, (q31_t)0x1748fc75, (q31_t)0xce9ef241, + (q31_t)0x173f4b2e, (q31_t)0xcea6f1c2, (q31_t)0x17359b78, (q31_t)0xceaef32b, + (q31_t)0x172bed55, (q31_t)0xceb6f67a, (q31_t)0x172240c5, (q31_t)0xcebefbb0, + (q31_t)0x171895c9, (q31_t)0xcec702cb, (q31_t)0x170eec60, (q31_t)0xcecf0bcd, + (q31_t)0x1705448b, (q31_t)0xced716b4, (q31_t)0x16fb9e4b, (q31_t)0xcedf2380, + (q31_t)0x16f1f99f, (q31_t)0xcee73231, (q31_t)0x16e85689, (q31_t)0xceef42c7, + (q31_t)0x16deb508, (q31_t)0xcef75541, (q31_t)0x16d5151d, (q31_t)0xceff699f, + (q31_t)0x16cb76c9, (q31_t)0xcf077fe1, (q31_t)0x16c1da0b, (q31_t)0xcf0f9805, + (q31_t)0x16b83ee4, (q31_t)0xcf17b20d, (q31_t)0x16aea555, (q31_t)0xcf1fcdf8, + (q31_t)0x16a50d5d, (q31_t)0xcf27ebc5, (q31_t)0x169b76fe, (q31_t)0xcf300b74, + (q31_t)0x1691e237, (q31_t)0xcf382d05, (q31_t)0x16884f09, (q31_t)0xcf405077, + (q31_t)0x167ebd74, (q31_t)0xcf4875ca, (q31_t)0x16752d79, (q31_t)0xcf509cfe, + (q31_t)0x166b9f18, (q31_t)0xcf58c613, (q31_t)0x16621251, (q31_t)0xcf60f108, + (q31_t)0x16588725, (q31_t)0xcf691ddd, (q31_t)0x164efd94, (q31_t)0xcf714c91, + (q31_t)0x1645759f, (q31_t)0xcf797d24, (q31_t)0x163bef46, (q31_t)0xcf81af97, + (q31_t)0x16326a88, (q31_t)0xcf89e3e8, (q31_t)0x1628e767, (q31_t)0xcf921a17, + (q31_t)0x161f65e4, (q31_t)0xcf9a5225, (q31_t)0x1615e5fd, (q31_t)0xcfa28c10, + (q31_t)0x160c67b4, (q31_t)0xcfaac7d8, (q31_t)0x1602eb0a, (q31_t)0xcfb3057d, + (q31_t)0x15f96ffd, (q31_t)0xcfbb4500, (q31_t)0x15eff690, (q31_t)0xcfc3865e, + (q31_t)0x15e67ec1, (q31_t)0xcfcbc999, (q31_t)0x15dd0892, (q31_t)0xcfd40eaf, + (q31_t)0x15d39403, (q31_t)0xcfdc55a1, (q31_t)0x15ca2115, (q31_t)0xcfe49e6d, + (q31_t)0x15c0afc6, (q31_t)0xcfece915, (q31_t)0x15b74019, (q31_t)0xcff53597, + (q31_t)0x15add20d, (q31_t)0xcffd83f4, (q31_t)0x15a465a3, (q31_t)0xd005d42a, + (q31_t)0x159afadb, (q31_t)0xd00e2639, (q31_t)0x159191b5, (q31_t)0xd0167a22, + (q31_t)0x15882a32, (q31_t)0xd01ecfe4, (q31_t)0x157ec452, (q31_t)0xd027277e, + (q31_t)0x15756016, (q31_t)0xd02f80f1, (q31_t)0x156bfd7d, (q31_t)0xd037dc3b, + (q31_t)0x15629c89, (q31_t)0xd040395d, (q31_t)0x15593d3a, (q31_t)0xd0489856, + (q31_t)0x154fdf8f, (q31_t)0xd050f926, (q31_t)0x15468389, (q31_t)0xd0595bcd, + (q31_t)0x153d292a, (q31_t)0xd061c04a, (q31_t)0x1533d070, (q31_t)0xd06a269d, + (q31_t)0x152a795d, (q31_t)0xd0728ec6, (q31_t)0x152123f0, (q31_t)0xd07af8c4, + (q31_t)0x1517d02b, (q31_t)0xd0836497, (q31_t)0x150e7e0d, (q31_t)0xd08bd23f, + (q31_t)0x15052d97, (q31_t)0xd09441bb, (q31_t)0x14fbdec9, (q31_t)0xd09cb30b, + (q31_t)0x14f291a4, (q31_t)0xd0a5262f, (q31_t)0x14e94627, (q31_t)0xd0ad9b26, + (q31_t)0x14dffc54, (q31_t)0xd0b611f1, (q31_t)0x14d6b42b, (q31_t)0xd0be8a8d, + (q31_t)0x14cd6dab, (q31_t)0xd0c704fd, (q31_t)0x14c428d6, (q31_t)0xd0cf813e, + (q31_t)0x14bae5ab, (q31_t)0xd0d7ff51, (q31_t)0x14b1a42c, (q31_t)0xd0e07f36, + (q31_t)0x14a86458, (q31_t)0xd0e900ec, (q31_t)0x149f2630, (q31_t)0xd0f18472, + (q31_t)0x1495e9b3, (q31_t)0xd0fa09c9, (q31_t)0x148caee4, (q31_t)0xd10290f0, + (q31_t)0x148375c1, (q31_t)0xd10b19e7, (q31_t)0x147a3e4b, (q31_t)0xd113a4ad, + (q31_t)0x14710883, (q31_t)0xd11c3142, (q31_t)0x1467d469, (q31_t)0xd124bfa6, + (q31_t)0x145ea1fd, (q31_t)0xd12d4fd9, (q31_t)0x14557140, (q31_t)0xd135e1d9, + (q31_t)0x144c4232, (q31_t)0xd13e75a8, (q31_t)0x144314d3, (q31_t)0xd1470b44, + (q31_t)0x1439e923, (q31_t)0xd14fa2ad, (q31_t)0x1430bf24, (q31_t)0xd1583be2, + (q31_t)0x142796d5, (q31_t)0xd160d6e5, (q31_t)0x141e7037, (q31_t)0xd16973b3, + (q31_t)0x14154b4a, (q31_t)0xd172124d, (q31_t)0x140c280e, (q31_t)0xd17ab2b3, + (q31_t)0x14030684, (q31_t)0xd18354e4, (q31_t)0x13f9e6ad, (q31_t)0xd18bf8e0, + (q31_t)0x13f0c887, (q31_t)0xd1949ea6, (q31_t)0x13e7ac15, (q31_t)0xd19d4636, + (q31_t)0x13de9156, (q31_t)0xd1a5ef90, (q31_t)0x13d5784a, (q31_t)0xd1ae9ab4, + (q31_t)0x13cc60f2, (q31_t)0xd1b747a0, (q31_t)0x13c34b4f, (q31_t)0xd1bff656, + (q31_t)0x13ba3760, (q31_t)0xd1c8a6d4, (q31_t)0x13b12526, (q31_t)0xd1d1591a, + (q31_t)0x13a814a2, (q31_t)0xd1da0d28, (q31_t)0x139f05d3, (q31_t)0xd1e2c2fd, + (q31_t)0x1395f8ba, (q31_t)0xd1eb7a9a, (q31_t)0x138ced57, (q31_t)0xd1f433fd, + (q31_t)0x1383e3ab, (q31_t)0xd1fcef27, (q31_t)0x137adbb6, (q31_t)0xd205ac17, + (q31_t)0x1371d579, (q31_t)0xd20e6acc, (q31_t)0x1368d0f3, (q31_t)0xd2172b48, + (q31_t)0x135fce26, (q31_t)0xd21fed88, (q31_t)0x1356cd11, (q31_t)0xd228b18d, + (q31_t)0x134dcdb4, (q31_t)0xd2317756, (q31_t)0x1344d011, (q31_t)0xd23a3ee4, + (q31_t)0x133bd427, (q31_t)0xd2430835, (q31_t)0x1332d9f7, (q31_t)0xd24bd34a, + (q31_t)0x1329e181, (q31_t)0xd254a021, (q31_t)0x1320eac6, (q31_t)0xd25d6ebc, + (q31_t)0x1317f5c6, (q31_t)0xd2663f19, (q31_t)0x130f0280, (q31_t)0xd26f1138, + (q31_t)0x130610f7, (q31_t)0xd277e518, (q31_t)0x12fd2129, (q31_t)0xd280babb, + (q31_t)0x12f43318, (q31_t)0xd289921e, (q31_t)0x12eb46c3, (q31_t)0xd2926b41, + (q31_t)0x12e25c2b, (q31_t)0xd29b4626, (q31_t)0x12d97350, (q31_t)0xd2a422ca, + (q31_t)0x12d08c33, (q31_t)0xd2ad012e, (q31_t)0x12c7a6d4, (q31_t)0xd2b5e151, + (q31_t)0x12bec333, (q31_t)0xd2bec333, (q31_t)0x12b5e151, (q31_t)0xd2c7a6d4, + (q31_t)0x12ad012e, (q31_t)0xd2d08c33, (q31_t)0x12a422ca, (q31_t)0xd2d97350, + (q31_t)0x129b4626, (q31_t)0xd2e25c2b, (q31_t)0x12926b41, (q31_t)0xd2eb46c3, + (q31_t)0x1289921e, (q31_t)0xd2f43318, (q31_t)0x1280babb, (q31_t)0xd2fd2129, + (q31_t)0x1277e518, (q31_t)0xd30610f7, (q31_t)0x126f1138, (q31_t)0xd30f0280, + (q31_t)0x12663f19, (q31_t)0xd317f5c6, (q31_t)0x125d6ebc, (q31_t)0xd320eac6, + (q31_t)0x1254a021, (q31_t)0xd329e181, (q31_t)0x124bd34a, (q31_t)0xd332d9f7, + (q31_t)0x12430835, (q31_t)0xd33bd427, (q31_t)0x123a3ee4, (q31_t)0xd344d011, + (q31_t)0x12317756, (q31_t)0xd34dcdb4, (q31_t)0x1228b18d, (q31_t)0xd356cd11, + (q31_t)0x121fed88, (q31_t)0xd35fce26, (q31_t)0x12172b48, (q31_t)0xd368d0f3, + (q31_t)0x120e6acc, (q31_t)0xd371d579, (q31_t)0x1205ac17, (q31_t)0xd37adbb6, + (q31_t)0x11fcef27, (q31_t)0xd383e3ab, (q31_t)0x11f433fd, (q31_t)0xd38ced57, + (q31_t)0x11eb7a9a, (q31_t)0xd395f8ba, (q31_t)0x11e2c2fd, (q31_t)0xd39f05d3, + (q31_t)0x11da0d28, (q31_t)0xd3a814a2, (q31_t)0x11d1591a, (q31_t)0xd3b12526, + (q31_t)0x11c8a6d4, (q31_t)0xd3ba3760, (q31_t)0x11bff656, (q31_t)0xd3c34b4f, + (q31_t)0x11b747a0, (q31_t)0xd3cc60f2, (q31_t)0x11ae9ab4, (q31_t)0xd3d5784a, + (q31_t)0x11a5ef90, (q31_t)0xd3de9156, (q31_t)0x119d4636, (q31_t)0xd3e7ac15, + (q31_t)0x11949ea6, (q31_t)0xd3f0c887, (q31_t)0x118bf8e0, (q31_t)0xd3f9e6ad, + (q31_t)0x118354e4, (q31_t)0xd4030684, (q31_t)0x117ab2b3, (q31_t)0xd40c280e, + (q31_t)0x1172124d, (q31_t)0xd4154b4a, (q31_t)0x116973b3, (q31_t)0xd41e7037, + (q31_t)0x1160d6e5, (q31_t)0xd42796d5, (q31_t)0x11583be2, (q31_t)0xd430bf24, + (q31_t)0x114fa2ad, (q31_t)0xd439e923, (q31_t)0x11470b44, (q31_t)0xd44314d3, + (q31_t)0x113e75a8, (q31_t)0xd44c4232, (q31_t)0x1135e1d9, (q31_t)0xd4557140, + (q31_t)0x112d4fd9, (q31_t)0xd45ea1fd, (q31_t)0x1124bfa6, (q31_t)0xd467d469, + (q31_t)0x111c3142, (q31_t)0xd4710883, (q31_t)0x1113a4ad, (q31_t)0xd47a3e4b, + (q31_t)0x110b19e7, (q31_t)0xd48375c1, (q31_t)0x110290f0, (q31_t)0xd48caee4, + (q31_t)0x10fa09c9, (q31_t)0xd495e9b3, (q31_t)0x10f18472, (q31_t)0xd49f2630, + (q31_t)0x10e900ec, (q31_t)0xd4a86458, (q31_t)0x10e07f36, (q31_t)0xd4b1a42c, + (q31_t)0x10d7ff51, (q31_t)0xd4bae5ab, (q31_t)0x10cf813e, (q31_t)0xd4c428d6, + (q31_t)0x10c704fd, (q31_t)0xd4cd6dab, (q31_t)0x10be8a8d, (q31_t)0xd4d6b42b, + (q31_t)0x10b611f1, (q31_t)0xd4dffc54, (q31_t)0x10ad9b26, (q31_t)0xd4e94627, + (q31_t)0x10a5262f, (q31_t)0xd4f291a4, (q31_t)0x109cb30b, (q31_t)0xd4fbdec9, + (q31_t)0x109441bb, (q31_t)0xd5052d97, (q31_t)0x108bd23f, (q31_t)0xd50e7e0d, + (q31_t)0x10836497, (q31_t)0xd517d02b, (q31_t)0x107af8c4, (q31_t)0xd52123f0, + (q31_t)0x10728ec6, (q31_t)0xd52a795d, (q31_t)0x106a269d, (q31_t)0xd533d070, + (q31_t)0x1061c04a, (q31_t)0xd53d292a, (q31_t)0x10595bcd, (q31_t)0xd5468389, + (q31_t)0x1050f926, (q31_t)0xd54fdf8f, (q31_t)0x10489856, (q31_t)0xd5593d3a, + (q31_t)0x1040395d, (q31_t)0xd5629c89, (q31_t)0x1037dc3b, (q31_t)0xd56bfd7d, + (q31_t)0x102f80f1, (q31_t)0xd5756016, (q31_t)0x1027277e, (q31_t)0xd57ec452, + (q31_t)0x101ecfe4, (q31_t)0xd5882a32, (q31_t)0x10167a22, (q31_t)0xd59191b5, + (q31_t)0x100e2639, (q31_t)0xd59afadb, (q31_t)0x1005d42a, (q31_t)0xd5a465a3, + (q31_t)0xffd83f4, (q31_t)0xd5add20d, (q31_t)0xff53597, (q31_t)0xd5b74019, + (q31_t)0xfece915, (q31_t)0xd5c0afc6, (q31_t)0xfe49e6d, (q31_t)0xd5ca2115, + (q31_t)0xfdc55a1, (q31_t)0xd5d39403, (q31_t)0xfd40eaf, (q31_t)0xd5dd0892, + (q31_t)0xfcbc999, (q31_t)0xd5e67ec1, (q31_t)0xfc3865e, (q31_t)0xd5eff690, + (q31_t)0xfbb4500, (q31_t)0xd5f96ffd, (q31_t)0xfb3057d, (q31_t)0xd602eb0a, + (q31_t)0xfaac7d8, (q31_t)0xd60c67b4, (q31_t)0xfa28c10, (q31_t)0xd615e5fd, + (q31_t)0xf9a5225, (q31_t)0xd61f65e4, (q31_t)0xf921a17, (q31_t)0xd628e767, + (q31_t)0xf89e3e8, (q31_t)0xd6326a88, (q31_t)0xf81af97, (q31_t)0xd63bef46, + (q31_t)0xf797d24, (q31_t)0xd645759f, (q31_t)0xf714c91, (q31_t)0xd64efd94, + (q31_t)0xf691ddd, (q31_t)0xd6588725, (q31_t)0xf60f108, (q31_t)0xd6621251, + (q31_t)0xf58c613, (q31_t)0xd66b9f18, (q31_t)0xf509cfe, (q31_t)0xd6752d79, + (q31_t)0xf4875ca, (q31_t)0xd67ebd74, (q31_t)0xf405077, (q31_t)0xd6884f09, + (q31_t)0xf382d05, (q31_t)0xd691e237, (q31_t)0xf300b74, (q31_t)0xd69b76fe, + (q31_t)0xf27ebc5, (q31_t)0xd6a50d5d, (q31_t)0xf1fcdf8, (q31_t)0xd6aea555, + (q31_t)0xf17b20d, (q31_t)0xd6b83ee4, (q31_t)0xf0f9805, (q31_t)0xd6c1da0b, + (q31_t)0xf077fe1, (q31_t)0xd6cb76c9, (q31_t)0xeff699f, (q31_t)0xd6d5151d, + (q31_t)0xef75541, (q31_t)0xd6deb508, (q31_t)0xeef42c7, (q31_t)0xd6e85689, + (q31_t)0xee73231, (q31_t)0xd6f1f99f, (q31_t)0xedf2380, (q31_t)0xd6fb9e4b, + (q31_t)0xed716b4, (q31_t)0xd705448b, (q31_t)0xecf0bcd, (q31_t)0xd70eec60, + (q31_t)0xec702cb, (q31_t)0xd71895c9, (q31_t)0xebefbb0, (q31_t)0xd72240c5, + (q31_t)0xeb6f67a, (q31_t)0xd72bed55, (q31_t)0xeaef32b, (q31_t)0xd7359b78, + (q31_t)0xea6f1c2, (q31_t)0xd73f4b2e, (q31_t)0xe9ef241, (q31_t)0xd748fc75, + (q31_t)0xe96f4a7, (q31_t)0xd752af4f, (q31_t)0xe8ef8f4, (q31_t)0xd75c63ba, + (q31_t)0xe86ff2a, (q31_t)0xd76619b6, (q31_t)0xe7f0748, (q31_t)0xd76fd143, + (q31_t)0xe77114e, (q31_t)0xd7798a60, (q31_t)0xe6f1d3d, (q31_t)0xd783450d, + (q31_t)0xe672b16, (q31_t)0xd78d014a, (q31_t)0xe5f3ad8, (q31_t)0xd796bf16, + (q31_t)0xe574c84, (q31_t)0xd7a07e70, (q31_t)0xe4f6019, (q31_t)0xd7aa3f5a, + (q31_t)0xe47759a, (q31_t)0xd7b401d1, (q31_t)0xe3f8d05, (q31_t)0xd7bdc5d6, + (q31_t)0xe37a65b, (q31_t)0xd7c78b68, (q31_t)0xe2fc19c, (q31_t)0xd7d15288, + (q31_t)0xe27dec9, (q31_t)0xd7db1b34, (q31_t)0xe1ffde2, (q31_t)0xd7e4e56c, + (q31_t)0xe181ee8, (q31_t)0xd7eeb130, (q31_t)0xe1041d9, (q31_t)0xd7f87e7f, + (q31_t)0xe0866b8, (q31_t)0xd8024d59, (q31_t)0xe008d84, (q31_t)0xd80c1dbf, + (q31_t)0xdf8b63d, (q31_t)0xd815efae, (q31_t)0xdf0e0e4, (q31_t)0xd81fc328, + (q31_t)0xde90d79, (q31_t)0xd829982b, (q31_t)0xde13bfd, (q31_t)0xd8336eb7, + (q31_t)0xdd96c6f, (q31_t)0xd83d46cc, (q31_t)0xdd19ed0, (q31_t)0xd8472069, + (q31_t)0xdc9d320, (q31_t)0xd850fb8e, (q31_t)0xdc20960, (q31_t)0xd85ad83c, + (q31_t)0xdba4190, (q31_t)0xd864b670, (q31_t)0xdb27bb0, (q31_t)0xd86e962b, + (q31_t)0xdaab7c0, (q31_t)0xd878776d, (q31_t)0xda2f5c2, (q31_t)0xd8825a35, + (q31_t)0xd9b35b4, (q31_t)0xd88c3e83, (q31_t)0xd937798, (q31_t)0xd8962456, + (q31_t)0xd8bbb6d, (q31_t)0xd8a00bae, (q31_t)0xd840134, (q31_t)0xd8a9f48a, + (q31_t)0xd7c48ee, (q31_t)0xd8b3deeb, (q31_t)0xd74929a, (q31_t)0xd8bdcad0, + (q31_t)0xd6cde39, (q31_t)0xd8c7b838, (q31_t)0xd652bcb, (q31_t)0xd8d1a724, + (q31_t)0xd5d7b50, (q31_t)0xd8db9792, (q31_t)0xd55ccca, (q31_t)0xd8e58982, + (q31_t)0xd4e2037, (q31_t)0xd8ef7cf4, (q31_t)0xd467599, (q31_t)0xd8f971e8, + (q31_t)0xd3eccef, (q31_t)0xd903685d, (q31_t)0xd37263a, (q31_t)0xd90d6053, + (q31_t)0xd2f817b, (q31_t)0xd91759c9, (q31_t)0xd27deb0, (q31_t)0xd92154bf, + (q31_t)0xd203ddc, (q31_t)0xd92b5135, (q31_t)0xd189efe, (q31_t)0xd9354f2a, + (q31_t)0xd110216, (q31_t)0xd93f4e9e, (q31_t)0xd096725, (q31_t)0xd9494f90, + (q31_t)0xd01ce2b, (q31_t)0xd9535201, (q31_t)0xcfa3729, (q31_t)0xd95d55ef, + (q31_t)0xcf2a21d, (q31_t)0xd9675b5a, (q31_t)0xceb0f0a, (q31_t)0xd9716243, + (q31_t)0xce37def, (q31_t)0xd97b6aa8, (q31_t)0xcdbeecc, (q31_t)0xd9857489, + (q31_t)0xcd461a2, (q31_t)0xd98f7fe6, (q31_t)0xcccd671, (q31_t)0xd9998cbe, + (q31_t)0xcc54d3a, (q31_t)0xd9a39b11, (q31_t)0xcbdc5fc, (q31_t)0xd9adaadf, + (q31_t)0xcb640b8, (q31_t)0xd9b7bc27, (q31_t)0xcaebd6e, (q31_t)0xd9c1cee9, + (q31_t)0xca73c1e, (q31_t)0xd9cbe325, (q31_t)0xc9fbcca, (q31_t)0xd9d5f8d9, + (q31_t)0xc983f70, (q31_t)0xd9e01006, (q31_t)0xc90c412, (q31_t)0xd9ea28ac, + (q31_t)0xc894aaf, (q31_t)0xd9f442c9, (q31_t)0xc81d349, (q31_t)0xd9fe5e5e, + (q31_t)0xc7a5dde, (q31_t)0xda087b69, (q31_t)0xc72ea70, (q31_t)0xda1299ec, + (q31_t)0xc6b78ff, (q31_t)0xda1cb9e5, (q31_t)0xc64098b, (q31_t)0xda26db54, + (q31_t)0xc5c9c14, (q31_t)0xda30fe38, (q31_t)0xc55309b, (q31_t)0xda3b2292, + (q31_t)0xc4dc720, (q31_t)0xda454860, (q31_t)0xc465fa3, (q31_t)0xda4f6fa3, + (q31_t)0xc3efa25, (q31_t)0xda599859, (q31_t)0xc3796a5, (q31_t)0xda63c284, + (q31_t)0xc303524, (q31_t)0xda6dee21, (q31_t)0xc28d5a3, (q31_t)0xda781b31, + (q31_t)0xc217822, (q31_t)0xda8249b4, (q31_t)0xc1a1ca0, (q31_t)0xda8c79a9, + (q31_t)0xc12c31f, (q31_t)0xda96ab0f, (q31_t)0xc0b6b9e, (q31_t)0xdaa0dde7, + (q31_t)0xc04161e, (q31_t)0xdaab122f, (q31_t)0xbfcc29f, (q31_t)0xdab547e8, + (q31_t)0xbf57121, (q31_t)0xdabf7f11, (q31_t)0xbee21a5, (q31_t)0xdac9b7a9, + (q31_t)0xbe6d42b, (q31_t)0xdad3f1b1, (q31_t)0xbdf88b3, (q31_t)0xdade2d28, + (q31_t)0xbd83f3d, (q31_t)0xdae86a0d, (q31_t)0xbd0f7ca, (q31_t)0xdaf2a860, + (q31_t)0xbc9b25a, (q31_t)0xdafce821, (q31_t)0xbc26eee, (q31_t)0xdb072950, + (q31_t)0xbbb2d85, (q31_t)0xdb116beb, (q31_t)0xbb3ee20, (q31_t)0xdb1baff2, + (q31_t)0xbacb0bf, (q31_t)0xdb25f566, (q31_t)0xba57563, (q31_t)0xdb303c46, + (q31_t)0xb9e3c0b, (q31_t)0xdb3a8491, (q31_t)0xb9704b9, (q31_t)0xdb44ce46, + (q31_t)0xb8fcf6b, (q31_t)0xdb4f1967, (q31_t)0xb889c23, (q31_t)0xdb5965f1, + (q31_t)0xb816ae1, (q31_t)0xdb63b3e5, (q31_t)0xb7a3ba5, (q31_t)0xdb6e0342, + (q31_t)0xb730e70, (q31_t)0xdb785409, (q31_t)0xb6be341, (q31_t)0xdb82a638, + (q31_t)0xb64ba19, (q31_t)0xdb8cf9cf, (q31_t)0xb5d92f8, (q31_t)0xdb974ece, + (q31_t)0xb566ddf, (q31_t)0xdba1a534, (q31_t)0xb4f4acd, (q31_t)0xdbabfd01, + (q31_t)0xb4829c4, (q31_t)0xdbb65634, (q31_t)0xb410ac3, (q31_t)0xdbc0b0ce, + (q31_t)0xb39edca, (q31_t)0xdbcb0cce, (q31_t)0xb32d2da, (q31_t)0xdbd56a32, + (q31_t)0xb2bb9f4, (q31_t)0xdbdfc8fc, (q31_t)0xb24a316, (q31_t)0xdbea292b, + (q31_t)0xb1d8e43, (q31_t)0xdbf48abd, (q31_t)0xb167b79, (q31_t)0xdbfeedb3, + (q31_t)0xb0f6aba, (q31_t)0xdc09520d, (q31_t)0xb085c05, (q31_t)0xdc13b7c9, + (q31_t)0xb014f5b, (q31_t)0xdc1e1ee9, (q31_t)0xafa44bc, (q31_t)0xdc28876a, + (q31_t)0xaf33c28, (q31_t)0xdc32f14d, (q31_t)0xaec35a0, (q31_t)0xdc3d5c91, + (q31_t)0xae53123, (q31_t)0xdc47c936, (q31_t)0xade2eb3, (q31_t)0xdc52373c, + (q31_t)0xad72e4f, (q31_t)0xdc5ca6a2, (q31_t)0xad02ff8, (q31_t)0xdc671768, + (q31_t)0xac933ae, (q31_t)0xdc71898d, (q31_t)0xac23971, (q31_t)0xdc7bfd11, + (q31_t)0xabb4141, (q31_t)0xdc8671f3, (q31_t)0xab44b1f, (q31_t)0xdc90e834, + (q31_t)0xaad570c, (q31_t)0xdc9b5fd2, (q31_t)0xaa66506, (q31_t)0xdca5d8cd, + (q31_t)0xa9f750f, (q31_t)0xdcb05326, (q31_t)0xa988727, (q31_t)0xdcbacedb, + (q31_t)0xa919b4e, (q31_t)0xdcc54bec, (q31_t)0xa8ab184, (q31_t)0xdccfca59, + (q31_t)0xa83c9ca, (q31_t)0xdcda4a21, (q31_t)0xa7ce420, (q31_t)0xdce4cb44, + (q31_t)0xa760086, (q31_t)0xdcef4dc2, (q31_t)0xa6f1efc, (q31_t)0xdcf9d199, + (q31_t)0xa683f83, (q31_t)0xdd0456ca, (q31_t)0xa61621b, (q31_t)0xdd0edd55, + (q31_t)0xa5a86c4, (q31_t)0xdd196538, (q31_t)0xa53ad7e, (q31_t)0xdd23ee74, + (q31_t)0xa4cd64b, (q31_t)0xdd2e7908, (q31_t)0xa460129, (q31_t)0xdd3904f4, + (q31_t)0xa3f2e19, (q31_t)0xdd439236, (q31_t)0xa385d1d, (q31_t)0xdd4e20d0, + (q31_t)0xa318e32, (q31_t)0xdd58b0c0, (q31_t)0xa2ac15b, (q31_t)0xdd634206, + (q31_t)0xa23f698, (q31_t)0xdd6dd4a2, (q31_t)0xa1d2de7, (q31_t)0xdd786892, + (q31_t)0xa16674b, (q31_t)0xdd82fdd8, (q31_t)0xa0fa2c3, (q31_t)0xdd8d9472, + (q31_t)0xa08e04f, (q31_t)0xdd982c60, (q31_t)0xa021fef, (q31_t)0xdda2c5a2, + (q31_t)0x9fb61a5, (q31_t)0xddad6036, (q31_t)0x9f4a570, (q31_t)0xddb7fc1e, + (q31_t)0x9edeb50, (q31_t)0xddc29958, (q31_t)0x9e73346, (q31_t)0xddcd37e4, + (q31_t)0x9e07d51, (q31_t)0xddd7d7c1, (q31_t)0x9d9c973, (q31_t)0xdde278ef, + (q31_t)0x9d317ab, (q31_t)0xdded1b6e, (q31_t)0x9cc67fa, (q31_t)0xddf7bf3e, + (q31_t)0x9c5ba60, (q31_t)0xde02645d, (q31_t)0x9bf0edd, (q31_t)0xde0d0acc, + (q31_t)0x9b86572, (q31_t)0xde17b28a, (q31_t)0x9b1be1e, (q31_t)0xde225b96, + (q31_t)0x9ab18e3, (q31_t)0xde2d05f1, (q31_t)0x9a475bf, (q31_t)0xde37b199, + (q31_t)0x99dd4b4, (q31_t)0xde425e8f, (q31_t)0x99735c2, (q31_t)0xde4d0cd2, + (q31_t)0x99098e9, (q31_t)0xde57bc62, (q31_t)0x989fe29, (q31_t)0xde626d3e, + (q31_t)0x9836582, (q31_t)0xde6d1f65, (q31_t)0x97ccef5, (q31_t)0xde77d2d8, + (q31_t)0x9763a83, (q31_t)0xde828796, (q31_t)0x96fa82a, (q31_t)0xde8d3d9e, + (q31_t)0x96917ec, (q31_t)0xde97f4f1, (q31_t)0x96289c9, (q31_t)0xdea2ad8d, + (q31_t)0x95bfdc1, (q31_t)0xdead6773, (q31_t)0x95573d4, (q31_t)0xdeb822a1, + (q31_t)0x94eec03, (q31_t)0xdec2df18, (q31_t)0x948664d, (q31_t)0xdecd9cd7, + (q31_t)0x941e2b4, (q31_t)0xded85bdd, (q31_t)0x93b6137, (q31_t)0xdee31c2b, + (q31_t)0x934e1d6, (q31_t)0xdeedddc0, (q31_t)0x92e6492, (q31_t)0xdef8a09b, + (q31_t)0x927e96b, (q31_t)0xdf0364bc, (q31_t)0x9217062, (q31_t)0xdf0e2a22, + (q31_t)0x91af976, (q31_t)0xdf18f0ce, (q31_t)0x91484a8, (q31_t)0xdf23b8be, + (q31_t)0x90e11f7, (q31_t)0xdf2e81f3, (q31_t)0x907a166, (q31_t)0xdf394c6b, + (q31_t)0x90132f2, (q31_t)0xdf441828, (q31_t)0x8fac69e, (q31_t)0xdf4ee527, + (q31_t)0x8f45c68, (q31_t)0xdf59b369, (q31_t)0x8edf452, (q31_t)0xdf6482ed, + (q31_t)0x8e78e5b, (q31_t)0xdf6f53b3, (q31_t)0x8e12a84, (q31_t)0xdf7a25ba, + (q31_t)0x8dac8cd, (q31_t)0xdf84f902, (q31_t)0x8d46936, (q31_t)0xdf8fcd8b, + (q31_t)0x8ce0bc0, (q31_t)0xdf9aa354, (q31_t)0x8c7b06b, (q31_t)0xdfa57a5d, + (q31_t)0x8c15736, (q31_t)0xdfb052a5, (q31_t)0x8bb0023, (q31_t)0xdfbb2c2c, + (q31_t)0x8b4ab32, (q31_t)0xdfc606f1, (q31_t)0x8ae5862, (q31_t)0xdfd0e2f5, + (q31_t)0x8a807b4, (q31_t)0xdfdbc036, (q31_t)0x8a1b928, (q31_t)0xdfe69eb4, + (q31_t)0x89b6cbf, (q31_t)0xdff17e70, (q31_t)0x8952278, (q31_t)0xdffc5f67, + (q31_t)0x88eda54, (q31_t)0xe007419b, (q31_t)0x8889454, (q31_t)0xe012250a, + (q31_t)0x8825077, (q31_t)0xe01d09b4, (q31_t)0x87c0ebd, (q31_t)0xe027ef99, + (q31_t)0x875cf28, (q31_t)0xe032d6b8, (q31_t)0x86f91b7, (q31_t)0xe03dbf11, + (q31_t)0x869566a, (q31_t)0xe048a8a4, (q31_t)0x8631d42, (q31_t)0xe053936f, + (q31_t)0x85ce63e, (q31_t)0xe05e7f74, (q31_t)0x856b160, (q31_t)0xe0696cb0, + (q31_t)0x8507ea7, (q31_t)0xe0745b24, (q31_t)0x84a4e14, (q31_t)0xe07f4acf, + (q31_t)0x8441fa6, (q31_t)0xe08a3bb2, (q31_t)0x83df35f, (q31_t)0xe0952dcb, + (q31_t)0x837c93e, (q31_t)0xe0a0211a, (q31_t)0x831a143, (q31_t)0xe0ab159e, + (q31_t)0x82b7b70, (q31_t)0xe0b60b58, (q31_t)0x82557c3, (q31_t)0xe0c10247, + (q31_t)0x81f363d, (q31_t)0xe0cbfa6a, (q31_t)0x81916df, (q31_t)0xe0d6f3c1, + (q31_t)0x812f9a9, (q31_t)0xe0e1ee4b, (q31_t)0x80cde9b, (q31_t)0xe0ecea09, + (q31_t)0x806c5b5, (q31_t)0xe0f7e6f9, (q31_t)0x800aef7, (q31_t)0xe102e51c, + (q31_t)0x7fa9a62, (q31_t)0xe10de470, (q31_t)0x7f487f6, (q31_t)0xe118e4f6, + (q31_t)0x7ee77b3, (q31_t)0xe123e6ad, (q31_t)0x7e8699a, (q31_t)0xe12ee995, + (q31_t)0x7e25daa, (q31_t)0xe139edac, (q31_t)0x7dc53e3, (q31_t)0xe144f2f3, + (q31_t)0x7d64c47, (q31_t)0xe14ff96a, (q31_t)0x7d046d6, (q31_t)0xe15b0110, + (q31_t)0x7ca438f, (q31_t)0xe16609e3, (q31_t)0x7c44272, (q31_t)0xe17113e5, + (q31_t)0x7be4381, (q31_t)0xe17c1f15, (q31_t)0x7b846ba, (q31_t)0xe1872b72, + (q31_t)0x7b24c20, (q31_t)0xe19238fb, (q31_t)0x7ac53b1, (q31_t)0xe19d47b1, + (q31_t)0x7a65d6e, (q31_t)0xe1a85793, (q31_t)0x7a06957, (q31_t)0xe1b368a0, + (q31_t)0x79a776c, (q31_t)0xe1be7ad8, (q31_t)0x79487ae, (q31_t)0xe1c98e3b, + (q31_t)0x78e9a1d, (q31_t)0xe1d4a2c8, (q31_t)0x788aeb9, (q31_t)0xe1dfb87f, + (q31_t)0x782c582, (q31_t)0xe1eacf5f, (q31_t)0x77cde79, (q31_t)0xe1f5e768, + (q31_t)0x776f99d, (q31_t)0xe2010099, (q31_t)0x77116f0, (q31_t)0xe20c1af3, + (q31_t)0x76b3671, (q31_t)0xe2173674, (q31_t)0x7655820, (q31_t)0xe222531c, + (q31_t)0x75f7bfe, (q31_t)0xe22d70eb, (q31_t)0x759a20a, (q31_t)0xe2388fe1, + (q31_t)0x753ca46, (q31_t)0xe243affc, (q31_t)0x74df4b1, (q31_t)0xe24ed13d, + (q31_t)0x748214c, (q31_t)0xe259f3a3, (q31_t)0x7425016, (q31_t)0xe265172e, + (q31_t)0x73c8111, (q31_t)0xe2703bdc, (q31_t)0x736b43c, (q31_t)0xe27b61af, + (q31_t)0x730e997, (q31_t)0xe28688a4, (q31_t)0x72b2123, (q31_t)0xe291b0bd, + (q31_t)0x7255ae0, (q31_t)0xe29cd9f8, (q31_t)0x71f96ce, (q31_t)0xe2a80456, + (q31_t)0x719d4ed, (q31_t)0xe2b32fd4, (q31_t)0x714153e, (q31_t)0xe2be5c74, + (q31_t)0x70e57c0, (q31_t)0xe2c98a35, (q31_t)0x7089c75, (q31_t)0xe2d4b916, + (q31_t)0x702e35c, (q31_t)0xe2dfe917, (q31_t)0x6fd2c75, (q31_t)0xe2eb1a37, + (q31_t)0x6f777c1, (q31_t)0xe2f64c77, (q31_t)0x6f1c540, (q31_t)0xe3017fd5, + (q31_t)0x6ec14f2, (q31_t)0xe30cb451, (q31_t)0x6e666d7, (q31_t)0xe317e9eb, + (q31_t)0x6e0baf0, (q31_t)0xe32320a2, (q31_t)0x6db113d, (q31_t)0xe32e5876, + (q31_t)0x6d569be, (q31_t)0xe3399167, (q31_t)0x6cfc472, (q31_t)0xe344cb73, + (q31_t)0x6ca215c, (q31_t)0xe350069b, (q31_t)0x6c4807a, (q31_t)0xe35b42df, + (q31_t)0x6bee1cd, (q31_t)0xe366803c, (q31_t)0x6b94554, (q31_t)0xe371beb5, + (q31_t)0x6b3ab12, (q31_t)0xe37cfe47, (q31_t)0x6ae1304, (q31_t)0xe3883ef2, + (q31_t)0x6a87d2d, (q31_t)0xe39380b6, (q31_t)0x6a2e98b, (q31_t)0xe39ec393, + (q31_t)0x69d5820, (q31_t)0xe3aa0788, (q31_t)0x697c8eb, (q31_t)0xe3b54c95, + (q31_t)0x6923bec, (q31_t)0xe3c092b9, (q31_t)0x68cb124, (q31_t)0xe3cbd9f4, + (q31_t)0x6872894, (q31_t)0xe3d72245, (q31_t)0x681a23a, (q31_t)0xe3e26bac, + (q31_t)0x67c1e18, (q31_t)0xe3edb628, (q31_t)0x6769c2e, (q31_t)0xe3f901ba, + (q31_t)0x6711c7b, (q31_t)0xe4044e60, (q31_t)0x66b9f01, (q31_t)0xe40f9c1a, + (q31_t)0x66623be, (q31_t)0xe41aeae8, (q31_t)0x660aab5, (q31_t)0xe4263ac9, + (q31_t)0x65b33e4, (q31_t)0xe4318bbe, (q31_t)0x655bf4c, (q31_t)0xe43cddc4, + (q31_t)0x6504ced, (q31_t)0xe44830dd, (q31_t)0x64adcc7, (q31_t)0xe4538507, + (q31_t)0x6456edb, (q31_t)0xe45eda43, (q31_t)0x6400329, (q31_t)0xe46a308f, + (q31_t)0x63a99b1, (q31_t)0xe47587eb, (q31_t)0x6353273, (q31_t)0xe480e057, + (q31_t)0x62fcd6f, (q31_t)0xe48c39d3, (q31_t)0x62a6aa6, (q31_t)0xe497945d, + (q31_t)0x6250a18, (q31_t)0xe4a2eff6, (q31_t)0x61fabc4, (q31_t)0xe4ae4c9d, + (q31_t)0x61a4fac, (q31_t)0xe4b9aa52, (q31_t)0x614f5cf, (q31_t)0xe4c50914, + (q31_t)0x60f9e2e, (q31_t)0xe4d068e2, (q31_t)0x60a48c9, (q31_t)0xe4dbc9bd, + (q31_t)0x604f5a0, (q31_t)0xe4e72ba4, (q31_t)0x5ffa4b3, (q31_t)0xe4f28e96, + (q31_t)0x5fa5603, (q31_t)0xe4fdf294, (q31_t)0x5f5098f, (q31_t)0xe509579b, + (q31_t)0x5efbf58, (q31_t)0xe514bdad, (q31_t)0x5ea775e, (q31_t)0xe52024c9, + (q31_t)0x5e531a1, (q31_t)0xe52b8cee, (q31_t)0x5dfee22, (q31_t)0xe536f61b, + (q31_t)0x5daace1, (q31_t)0xe5426051, (q31_t)0x5d56ddd, (q31_t)0xe54dcb8f, + (q31_t)0x5d03118, (q31_t)0xe55937d5, (q31_t)0x5caf690, (q31_t)0xe564a521, + (q31_t)0x5c5be47, (q31_t)0xe5701374, (q31_t)0x5c0883d, (q31_t)0xe57b82cd, + (q31_t)0x5bb5472, (q31_t)0xe586f32c, (q31_t)0x5b622e6, (q31_t)0xe5926490, + (q31_t)0x5b0f399, (q31_t)0xe59dd6f9, (q31_t)0x5abc68c, (q31_t)0xe5a94a67, + (q31_t)0x5a69bbe, (q31_t)0xe5b4bed8, (q31_t)0x5a17330, (q31_t)0xe5c0344d, + (q31_t)0x59c4ce3, (q31_t)0xe5cbaac5, (q31_t)0x59728d5, (q31_t)0xe5d72240, + (q31_t)0x5920708, (q31_t)0xe5e29abc, (q31_t)0x58ce77c, (q31_t)0xe5ee143b, + (q31_t)0x587ca31, (q31_t)0xe5f98ebb, (q31_t)0x582af26, (q31_t)0xe6050a3b, + (q31_t)0x57d965d, (q31_t)0xe61086bc, (q31_t)0x5787fd6, (q31_t)0xe61c043d, + (q31_t)0x5736b90, (q31_t)0xe62782be, (q31_t)0x56e598c, (q31_t)0xe633023e, + (q31_t)0x56949ca, (q31_t)0xe63e82bc, (q31_t)0x5643c4a, (q31_t)0xe64a0438, + (q31_t)0x55f310d, (q31_t)0xe65586b3, (q31_t)0x55a2812, (q31_t)0xe6610a2a, + (q31_t)0x555215a, (q31_t)0xe66c8e9f, (q31_t)0x5501ce5, (q31_t)0xe6781410, + (q31_t)0x54b1ab4, (q31_t)0xe6839a7c, (q31_t)0x5461ac6, (q31_t)0xe68f21e5, + (q31_t)0x5411d1b, (q31_t)0xe69aaa48, (q31_t)0x53c21b4, (q31_t)0xe6a633a6, + (q31_t)0x5372891, (q31_t)0xe6b1bdff, (q31_t)0x53231b3, (q31_t)0xe6bd4951, + (q31_t)0x52d3d18, (q31_t)0xe6c8d59c, (q31_t)0x5284ac3, (q31_t)0xe6d462e1, + (q31_t)0x5235ab2, (q31_t)0xe6dff11d, (q31_t)0x51e6ce6, (q31_t)0xe6eb8052, + (q31_t)0x519815f, (q31_t)0xe6f7107e, (q31_t)0x514981d, (q31_t)0xe702a1a1, + (q31_t)0x50fb121, (q31_t)0xe70e33bb, (q31_t)0x50acc6b, (q31_t)0xe719c6cb, + (q31_t)0x505e9fb, (q31_t)0xe7255ad1, (q31_t)0x50109d0, (q31_t)0xe730efcc, + (q31_t)0x4fc2bec, (q31_t)0xe73c85bc, (q31_t)0x4f7504e, (q31_t)0xe7481ca1, + (q31_t)0x4f276f7, (q31_t)0xe753b479, (q31_t)0x4ed9fe7, (q31_t)0xe75f4d45, + (q31_t)0x4e8cb1e, (q31_t)0xe76ae704, (q31_t)0x4e3f89c, (q31_t)0xe77681b6, + (q31_t)0x4df2862, (q31_t)0xe7821d59, (q31_t)0x4da5a6f, (q31_t)0xe78db9ef, + (q31_t)0x4d58ec3, (q31_t)0xe7995776, (q31_t)0x4d0c560, (q31_t)0xe7a4f5ed, + (q31_t)0x4cbfe45, (q31_t)0xe7b09555, (q31_t)0x4c73972, (q31_t)0xe7bc35ad, + (q31_t)0x4c276e8, (q31_t)0xe7c7d6f4, (q31_t)0x4bdb6a6, (q31_t)0xe7d3792b, + (q31_t)0x4b8f8ad, (q31_t)0xe7df1c50, (q31_t)0x4b43cfd, (q31_t)0xe7eac063, + (q31_t)0x4af8397, (q31_t)0xe7f66564, (q31_t)0x4aacc7a, (q31_t)0xe8020b52, + (q31_t)0x4a617a6, (q31_t)0xe80db22d, (q31_t)0x4a1651c, (q31_t)0xe81959f4, + (q31_t)0x49cb4dd, (q31_t)0xe82502a7, (q31_t)0x49806e7, (q31_t)0xe830ac45, + (q31_t)0x4935b3c, (q31_t)0xe83c56cf, (q31_t)0x48eb1db, (q31_t)0xe8480243, + (q31_t)0x48a0ac4, (q31_t)0xe853aea1, (q31_t)0x48565f9, (q31_t)0xe85f5be9, + (q31_t)0x480c379, (q31_t)0xe86b0a1a, (q31_t)0x47c2344, (q31_t)0xe876b934, + (q31_t)0x477855a, (q31_t)0xe8826936, (q31_t)0x472e9bc, (q31_t)0xe88e1a20, + (q31_t)0x46e5069, (q31_t)0xe899cbf1, (q31_t)0x469b963, (q31_t)0xe8a57ea9, + (q31_t)0x46524a9, (q31_t)0xe8b13248, (q31_t)0x460923b, (q31_t)0xe8bce6cd, + (q31_t)0x45c0219, (q31_t)0xe8c89c37, (q31_t)0x4577444, (q31_t)0xe8d45286, + (q31_t)0x452e8bc, (q31_t)0xe8e009ba, (q31_t)0x44e5f80, (q31_t)0xe8ebc1d3, + (q31_t)0x449d892, (q31_t)0xe8f77acf, (q31_t)0x44553f2, (q31_t)0xe90334af, + (q31_t)0x440d19e, (q31_t)0xe90eef71, (q31_t)0x43c5199, (q31_t)0xe91aab16, + (q31_t)0x437d3e1, (q31_t)0xe926679c, (q31_t)0x4335877, (q31_t)0xe9322505, + (q31_t)0x42edf5c, (q31_t)0xe93de34e, (q31_t)0x42a688f, (q31_t)0xe949a278, + (q31_t)0x425f410, (q31_t)0xe9556282, (q31_t)0x42181e0, (q31_t)0xe961236c, + (q31_t)0x41d11ff, (q31_t)0xe96ce535, (q31_t)0x418a46d, (q31_t)0xe978a7dd, + (q31_t)0x414392b, (q31_t)0xe9846b63, (q31_t)0x40fd037, (q31_t)0xe9902fc7, + (q31_t)0x40b6994, (q31_t)0xe99bf509, (q31_t)0x4070540, (q31_t)0xe9a7bb28, + (q31_t)0x402a33c, (q31_t)0xe9b38223, (q31_t)0x3fe4388, (q31_t)0xe9bf49fa, + (q31_t)0x3f9e624, (q31_t)0xe9cb12ad, (q31_t)0x3f58b10, (q31_t)0xe9d6dc3b, + (q31_t)0x3f1324e, (q31_t)0xe9e2a6a3, (q31_t)0x3ecdbdc, (q31_t)0xe9ee71e6, + (q31_t)0x3e887bb, (q31_t)0xe9fa3e03, (q31_t)0x3e435ea, (q31_t)0xea060af9, + (q31_t)0x3dfe66c, (q31_t)0xea11d8c8, (q31_t)0x3db993e, (q31_t)0xea1da770, + (q31_t)0x3d74e62, (q31_t)0xea2976ef, (q31_t)0x3d305d8, (q31_t)0xea354746, + (q31_t)0x3cebfa0, (q31_t)0xea411874, (q31_t)0x3ca7bba, (q31_t)0xea4cea79, + (q31_t)0x3c63a26, (q31_t)0xea58bd54, (q31_t)0x3c1fae5, (q31_t)0xea649105, + (q31_t)0x3bdbdf6, (q31_t)0xea70658a, (q31_t)0x3b9835a, (q31_t)0xea7c3ae5, + (q31_t)0x3b54b11, (q31_t)0xea881114, (q31_t)0x3b1151b, (q31_t)0xea93e817, + (q31_t)0x3ace178, (q31_t)0xea9fbfed, (q31_t)0x3a8b028, (q31_t)0xeaab9896, + (q31_t)0x3a4812c, (q31_t)0xeab77212, (q31_t)0x3a05484, (q31_t)0xeac34c60, + (q31_t)0x39c2a2f, (q31_t)0xeacf277f, (q31_t)0x398022f, (q31_t)0xeadb0370, + (q31_t)0x393dc82, (q31_t)0xeae6e031, (q31_t)0x38fb92a, (q31_t)0xeaf2bdc3, + (q31_t)0x38b9827, (q31_t)0xeafe9c24, (q31_t)0x3877978, (q31_t)0xeb0a7b54, + (q31_t)0x3835d1e, (q31_t)0xeb165b54, (q31_t)0x37f4319, (q31_t)0xeb223c22, + (q31_t)0x37b2b6a, (q31_t)0xeb2e1dbe, (q31_t)0x377160f, (q31_t)0xeb3a0027, + (q31_t)0x373030a, (q31_t)0xeb45e35d, (q31_t)0x36ef25b, (q31_t)0xeb51c760, + (q31_t)0x36ae401, (q31_t)0xeb5dac2f, (q31_t)0x366d7fd, (q31_t)0xeb6991ca, + (q31_t)0x362ce50, (q31_t)0xeb75782f, (q31_t)0x35ec6f8, (q31_t)0xeb815f60, + (q31_t)0x35ac1f7, (q31_t)0xeb8d475b, (q31_t)0x356bf4d, (q31_t)0xeb99301f, + (q31_t)0x352bef9, (q31_t)0xeba519ad, (q31_t)0x34ec0fc, (q31_t)0xebb10404, + (q31_t)0x34ac556, (q31_t)0xebbcef23, (q31_t)0x346cc07, (q31_t)0xebc8db0b, + (q31_t)0x342d510, (q31_t)0xebd4c7ba, (q31_t)0x33ee070, (q31_t)0xebe0b52f, + (q31_t)0x33aee27, (q31_t)0xebeca36c, (q31_t)0x336fe37, (q31_t)0xebf8926f, + (q31_t)0x333109e, (q31_t)0xec048237, (q31_t)0x32f255e, (q31_t)0xec1072c4, + (q31_t)0x32b3c75, (q31_t)0xec1c6417, (q31_t)0x32755e5, (q31_t)0xec28562d, + (q31_t)0x32371ae, (q31_t)0xec344908, (q31_t)0x31f8fcf, (q31_t)0xec403ca5, + (q31_t)0x31bb049, (q31_t)0xec4c3106, (q31_t)0x317d31c, (q31_t)0xec582629, + (q31_t)0x313f848, (q31_t)0xec641c0e, (q31_t)0x3101fce, (q31_t)0xec7012b5, + (q31_t)0x30c49ad, (q31_t)0xec7c0a1d, (q31_t)0x30875e5, (q31_t)0xec880245, + (q31_t)0x304a477, (q31_t)0xec93fb2e, (q31_t)0x300d563, (q31_t)0xec9ff4d6, + (q31_t)0x2fd08a9, (q31_t)0xecabef3d, (q31_t)0x2f93e4a, (q31_t)0xecb7ea63, + (q31_t)0x2f57644, (q31_t)0xecc3e648, (q31_t)0x2f1b099, (q31_t)0xeccfe2ea, + (q31_t)0x2eded49, (q31_t)0xecdbe04a, (q31_t)0x2ea2c53, (q31_t)0xece7de66, + (q31_t)0x2e66db8, (q31_t)0xecf3dd3f, (q31_t)0x2e2b178, (q31_t)0xecffdcd4, + (q31_t)0x2def794, (q31_t)0xed0bdd25, (q31_t)0x2db400a, (q31_t)0xed17de31, + (q31_t)0x2d78add, (q31_t)0xed23dff7, (q31_t)0x2d3d80a, (q31_t)0xed2fe277, + (q31_t)0x2d02794, (q31_t)0xed3be5b1, (q31_t)0x2cc7979, (q31_t)0xed47e9a5, + (q31_t)0x2c8cdbb, (q31_t)0xed53ee51, (q31_t)0x2c52459, (q31_t)0xed5ff3b5, + (q31_t)0x2c17d52, (q31_t)0xed6bf9d1, (q31_t)0x2bdd8a9, (q31_t)0xed7800a5, + (q31_t)0x2ba365c, (q31_t)0xed84082f, (q31_t)0x2b6966c, (q31_t)0xed901070, + (q31_t)0x2b2f8d8, (q31_t)0xed9c1967, (q31_t)0x2af5da2, (q31_t)0xeda82313, + (q31_t)0x2abc4c9, (q31_t)0xedb42d74, (q31_t)0x2a82e4d, (q31_t)0xedc0388a, + (q31_t)0x2a49a2e, (q31_t)0xedcc4454, (q31_t)0x2a1086d, (q31_t)0xedd850d2, + (q31_t)0x29d790a, (q31_t)0xede45e03, (q31_t)0x299ec05, (q31_t)0xedf06be6, + (q31_t)0x296615d, (q31_t)0xedfc7a7c, (q31_t)0x292d914, (q31_t)0xee0889c4, + (q31_t)0x28f5329, (q31_t)0xee1499bd, (q31_t)0x28bcf9c, (q31_t)0xee20aa67, + (q31_t)0x2884e6e, (q31_t)0xee2cbbc1, (q31_t)0x284cf9f, (q31_t)0xee38cdcb, + (q31_t)0x281532e, (q31_t)0xee44e084, (q31_t)0x27dd91c, (q31_t)0xee50f3ed, + (q31_t)0x27a616a, (q31_t)0xee5d0804, (q31_t)0x276ec16, (q31_t)0xee691cc9, + (q31_t)0x2737922, (q31_t)0xee75323c, (q31_t)0x270088e, (q31_t)0xee81485c, + (q31_t)0x26c9a58, (q31_t)0xee8d5f29, (q31_t)0x2692e83, (q31_t)0xee9976a1, + (q31_t)0x265c50e, (q31_t)0xeea58ec6, (q31_t)0x2625df8, (q31_t)0xeeb1a796, + (q31_t)0x25ef943, (q31_t)0xeebdc110, (q31_t)0x25b96ee, (q31_t)0xeec9db35, + (q31_t)0x25836f9, (q31_t)0xeed5f604, (q31_t)0x254d965, (q31_t)0xeee2117c, + (q31_t)0x2517e31, (q31_t)0xeeee2d9d, (q31_t)0x24e255e, (q31_t)0xeefa4a67, + (q31_t)0x24aceed, (q31_t)0xef0667d9, (q31_t)0x2477adc, (q31_t)0xef1285f2, + (q31_t)0x244292c, (q31_t)0xef1ea4b2, (q31_t)0x240d9de, (q31_t)0xef2ac419, + (q31_t)0x23d8cf1, (q31_t)0xef36e426, (q31_t)0x23a4265, (q31_t)0xef4304d8, + (q31_t)0x236fa3b, (q31_t)0xef4f2630, (q31_t)0x233b473, (q31_t)0xef5b482d, + (q31_t)0x230710d, (q31_t)0xef676ace, (q31_t)0x22d3009, (q31_t)0xef738e12, + (q31_t)0x229f167, (q31_t)0xef7fb1fa, (q31_t)0x226b528, (q31_t)0xef8bd685, + (q31_t)0x2237b4b, (q31_t)0xef97fbb2, (q31_t)0x22043d0, (q31_t)0xefa42181, + (q31_t)0x21d0eb8, (q31_t)0xefb047f2, (q31_t)0x219dc03, (q31_t)0xefbc6f03, + (q31_t)0x216abb1, (q31_t)0xefc896b5, (q31_t)0x2137dc2, (q31_t)0xefd4bf08, + (q31_t)0x2105236, (q31_t)0xefe0e7f9, (q31_t)0x20d290d, (q31_t)0xefed118a, + (q31_t)0x20a0248, (q31_t)0xeff93bba, (q31_t)0x206dde6, (q31_t)0xf0056687, + (q31_t)0x203bbe8, (q31_t)0xf01191f3, (q31_t)0x2009c4e, (q31_t)0xf01dbdfb, + (q31_t)0x1fd7f17, (q31_t)0xf029eaa1, (q31_t)0x1fa6445, (q31_t)0xf03617e2, + (q31_t)0x1f74bd6, (q31_t)0xf04245c0, (q31_t)0x1f435cc, (q31_t)0xf04e7438, + (q31_t)0x1f12227, (q31_t)0xf05aa34c, (q31_t)0x1ee10e5, (q31_t)0xf066d2fa, + (q31_t)0x1eb0209, (q31_t)0xf0730342, (q31_t)0x1e7f591, (q31_t)0xf07f3424, + (q31_t)0x1e4eb7e, (q31_t)0xf08b659f, (q31_t)0x1e1e3d0, (q31_t)0xf09797b2, + (q31_t)0x1dede87, (q31_t)0xf0a3ca5d, (q31_t)0x1dbdba3, (q31_t)0xf0affda0, + (q31_t)0x1d8db25, (q31_t)0xf0bc317a, (q31_t)0x1d5dd0c, (q31_t)0xf0c865ea, + (q31_t)0x1d2e158, (q31_t)0xf0d49af1, (q31_t)0x1cfe80a, (q31_t)0xf0e0d08d, + (q31_t)0x1ccf122, (q31_t)0xf0ed06bf, (q31_t)0x1c9fca0, (q31_t)0xf0f93d86, + (q31_t)0x1c70a84, (q31_t)0xf10574e0, (q31_t)0x1c41ace, (q31_t)0xf111accf, + (q31_t)0x1c12d7e, (q31_t)0xf11de551, (q31_t)0x1be4294, (q31_t)0xf12a1e66, + (q31_t)0x1bb5a11, (q31_t)0xf136580d, (q31_t)0x1b873f5, (q31_t)0xf1429247, + (q31_t)0x1b5903f, (q31_t)0xf14ecd11, (q31_t)0x1b2aef0, (q31_t)0xf15b086d, + (q31_t)0x1afd007, (q31_t)0xf1674459, (q31_t)0x1acf386, (q31_t)0xf17380d6, + (q31_t)0x1aa196c, (q31_t)0xf17fbde2, (q31_t)0x1a741b9, (q31_t)0xf18bfb7d, + (q31_t)0x1a46c6e, (q31_t)0xf19839a6, (q31_t)0x1a1998a, (q31_t)0xf1a4785e, + (q31_t)0x19ec90d, (q31_t)0xf1b0b7a4, (q31_t)0x19bfaf9, (q31_t)0xf1bcf777, + (q31_t)0x1992f4c, (q31_t)0xf1c937d6, (q31_t)0x1966606, (q31_t)0xf1d578c2, + (q31_t)0x1939f29, (q31_t)0xf1e1ba3a, (q31_t)0x190dab4, (q31_t)0xf1edfc3d, + (q31_t)0x18e18a7, (q31_t)0xf1fa3ecb, (q31_t)0x18b5903, (q31_t)0xf20681e3, + (q31_t)0x1889bc6, (q31_t)0xf212c585, (q31_t)0x185e0f3, (q31_t)0xf21f09b1, + (q31_t)0x1832888, (q31_t)0xf22b4e66, (q31_t)0x1807285, (q31_t)0xf23793a3, + (q31_t)0x17dbeec, (q31_t)0xf243d968, (q31_t)0x17b0dbb, (q31_t)0xf2501fb5, + (q31_t)0x1785ef4, (q31_t)0xf25c6688, (q31_t)0x175b296, (q31_t)0xf268ade3, + (q31_t)0x17308a1, (q31_t)0xf274f5c3, (q31_t)0x1706115, (q31_t)0xf2813e2a, + (q31_t)0x16dbbf3, (q31_t)0xf28d8715, (q31_t)0x16b193a, (q31_t)0xf299d085, + (q31_t)0x16878eb, (q31_t)0xf2a61a7a, (q31_t)0x165db05, (q31_t)0xf2b264f2, + (q31_t)0x1633f8a, (q31_t)0xf2beafed, (q31_t)0x160a678, (q31_t)0xf2cafb6b, + (q31_t)0x15e0fd1, (q31_t)0xf2d7476c, (q31_t)0x15b7b94, (q31_t)0xf2e393ef, + (q31_t)0x158e9c1, (q31_t)0xf2efe0f2, (q31_t)0x1565a58, (q31_t)0xf2fc2e77, + (q31_t)0x153cd5a, (q31_t)0xf3087c7d, (q31_t)0x15142c6, (q31_t)0xf314cb02, + (q31_t)0x14eba9d, (q31_t)0xf3211a07, (q31_t)0x14c34df, (q31_t)0xf32d698a, + (q31_t)0x149b18b, (q31_t)0xf339b98d, (q31_t)0x14730a3, (q31_t)0xf3460a0d, + (q31_t)0x144b225, (q31_t)0xf3525b0b, (q31_t)0x1423613, (q31_t)0xf35eac86, + (q31_t)0x13fbc6c, (q31_t)0xf36afe7e, (q31_t)0x13d4530, (q31_t)0xf37750f2, + (q31_t)0x13ad060, (q31_t)0xf383a3e2, (q31_t)0x1385dfb, (q31_t)0xf38ff74d, + (q31_t)0x135ee02, (q31_t)0xf39c4b32, (q31_t)0x1338075, (q31_t)0xf3a89f92, + (q31_t)0x1311553, (q31_t)0xf3b4f46c, (q31_t)0x12eac9d, (q31_t)0xf3c149bf, + (q31_t)0x12c4653, (q31_t)0xf3cd9f8b, (q31_t)0x129e276, (q31_t)0xf3d9f5cf, + (q31_t)0x1278104, (q31_t)0xf3e64c8c, (q31_t)0x12521ff, (q31_t)0xf3f2a3bf, + (q31_t)0x122c566, (q31_t)0xf3fefb6a, (q31_t)0x1206b39, (q31_t)0xf40b538b, + (q31_t)0x11e1379, (q31_t)0xf417ac22, (q31_t)0x11bbe26, (q31_t)0xf424052f, + (q31_t)0x1196b3f, (q31_t)0xf4305eb0, (q31_t)0x1171ac6, (q31_t)0xf43cb8a7, + (q31_t)0x114ccb9, (q31_t)0xf4491311, (q31_t)0x1128119, (q31_t)0xf4556def, + (q31_t)0x11037e6, (q31_t)0xf461c940, (q31_t)0x10df120, (q31_t)0xf46e2504, + (q31_t)0x10bacc8, (q31_t)0xf47a8139, (q31_t)0x1096add, (q31_t)0xf486dde1, + (q31_t)0x1072b5f, (q31_t)0xf4933afa, (q31_t)0x104ee4f, (q31_t)0xf49f9884, + (q31_t)0x102b3ac, (q31_t)0xf4abf67e, (q31_t)0x1007b77, (q31_t)0xf4b854e7, + (q31_t)0xfe45b0, (q31_t)0xf4c4b3c0, (q31_t)0xfc1257, (q31_t)0xf4d11308, + (q31_t)0xf9e16b, (q31_t)0xf4dd72be, (q31_t)0xf7b2ee, (q31_t)0xf4e9d2e3, + (q31_t)0xf586df, (q31_t)0xf4f63374, (q31_t)0xf35d3e, (q31_t)0xf5029473, + (q31_t)0xf1360b, (q31_t)0xf50ef5de, (q31_t)0xef1147, (q31_t)0xf51b57b5, + (q31_t)0xeceef1, (q31_t)0xf527b9f7, (q31_t)0xeacf09, (q31_t)0xf5341ca5, + (q31_t)0xe8b190, (q31_t)0xf5407fbd, (q31_t)0xe69686, (q31_t)0xf54ce33f, + (q31_t)0xe47deb, (q31_t)0xf559472b, (q31_t)0xe267be, (q31_t)0xf565ab80, + (q31_t)0xe05401, (q31_t)0xf572103d, (q31_t)0xde42b2, (q31_t)0xf57e7563, + (q31_t)0xdc33d2, (q31_t)0xf58adaf0, (q31_t)0xda2762, (q31_t)0xf59740e5, + (q31_t)0xd81d61, (q31_t)0xf5a3a740, (q31_t)0xd615cf, (q31_t)0xf5b00e02, + (q31_t)0xd410ad, (q31_t)0xf5bc7529, (q31_t)0xd20dfa, (q31_t)0xf5c8dcb6, + (q31_t)0xd00db6, (q31_t)0xf5d544a7, (q31_t)0xce0fe3, (q31_t)0xf5e1acfd, + (q31_t)0xcc147f, (q31_t)0xf5ee15b7, (q31_t)0xca1b8a, (q31_t)0xf5fa7ed4, + (q31_t)0xc82506, (q31_t)0xf606e854, (q31_t)0xc630f2, (q31_t)0xf6135237, + (q31_t)0xc43f4d, (q31_t)0xf61fbc7b, (q31_t)0xc25019, (q31_t)0xf62c2721, + (q31_t)0xc06355, (q31_t)0xf6389228, (q31_t)0xbe7901, (q31_t)0xf644fd8f, + (q31_t)0xbc911d, (q31_t)0xf6516956, (q31_t)0xbaabaa, (q31_t)0xf65dd57d, + (q31_t)0xb8c8a7, (q31_t)0xf66a4203, (q31_t)0xb6e815, (q31_t)0xf676aee8, + (q31_t)0xb509f3, (q31_t)0xf6831c2b, (q31_t)0xb32e42, (q31_t)0xf68f89cb, + (q31_t)0xb15502, (q31_t)0xf69bf7c9, (q31_t)0xaf7e33, (q31_t)0xf6a86623, + (q31_t)0xada9d4, (q31_t)0xf6b4d4d9, (q31_t)0xabd7e6, (q31_t)0xf6c143ec, + (q31_t)0xaa086a, (q31_t)0xf6cdb359, (q31_t)0xa83b5e, (q31_t)0xf6da2321, + (q31_t)0xa670c4, (q31_t)0xf6e69344, (q31_t)0xa4a89b, (q31_t)0xf6f303c0, + (q31_t)0xa2e2e3, (q31_t)0xf6ff7496, (q31_t)0xa11f9d, (q31_t)0xf70be5c4, + (q31_t)0x9f5ec8, (q31_t)0xf718574b, (q31_t)0x9da065, (q31_t)0xf724c92a, + (q31_t)0x9be473, (q31_t)0xf7313b60, (q31_t)0x9a2af3, (q31_t)0xf73daded, + (q31_t)0x9873e4, (q31_t)0xf74a20d0, (q31_t)0x96bf48, (q31_t)0xf756940a, + (q31_t)0x950d1d, (q31_t)0xf7630799, (q31_t)0x935d64, (q31_t)0xf76f7b7d, + (q31_t)0x91b01d, (q31_t)0xf77befb5, (q31_t)0x900548, (q31_t)0xf7886442, + (q31_t)0x8e5ce5, (q31_t)0xf794d922, (q31_t)0x8cb6f5, (q31_t)0xf7a14e55, + (q31_t)0x8b1376, (q31_t)0xf7adc3db, (q31_t)0x89726a, (q31_t)0xf7ba39b3, + (q31_t)0x87d3d0, (q31_t)0xf7c6afdc, (q31_t)0x8637a9, (q31_t)0xf7d32657, + (q31_t)0x849df4, (q31_t)0xf7df9d22, (q31_t)0x8306b2, (q31_t)0xf7ec143e, + (q31_t)0x8171e2, (q31_t)0xf7f88ba9, (q31_t)0x7fdf85, (q31_t)0xf8050364, + (q31_t)0x7e4f9b, (q31_t)0xf8117b6d, (q31_t)0x7cc223, (q31_t)0xf81df3c5, + (q31_t)0x7b371e, (q31_t)0xf82a6c6a, (q31_t)0x79ae8c, (q31_t)0xf836e55d, + (q31_t)0x78286e, (q31_t)0xf8435e9d, (q31_t)0x76a4c2, (q31_t)0xf84fd829, + (q31_t)0x752389, (q31_t)0xf85c5201, (q31_t)0x73a4c3, (q31_t)0xf868cc24, + (q31_t)0x722871, (q31_t)0xf8754692, (q31_t)0x70ae92, (q31_t)0xf881c14b, + (q31_t)0x6f3726, (q31_t)0xf88e3c4d, (q31_t)0x6dc22e, (q31_t)0xf89ab799, + (q31_t)0x6c4fa8, (q31_t)0xf8a7332e, (q31_t)0x6adf97, (q31_t)0xf8b3af0c, + (q31_t)0x6971f9, (q31_t)0xf8c02b31, (q31_t)0x6806ce, (q31_t)0xf8cca79e, + (q31_t)0x669e18, (q31_t)0xf8d92452, (q31_t)0x6537d4, (q31_t)0xf8e5a14d, + (q31_t)0x63d405, (q31_t)0xf8f21e8e, (q31_t)0x6272aa, (q31_t)0xf8fe9c15, + (q31_t)0x6113c2, (q31_t)0xf90b19e0, (q31_t)0x5fb74e, (q31_t)0xf91797f0, + (q31_t)0x5e5d4e, (q31_t)0xf9241645, (q31_t)0x5d05c3, (q31_t)0xf93094dd, + (q31_t)0x5bb0ab, (q31_t)0xf93d13b8, (q31_t)0x5a5e07, (q31_t)0xf94992d7, + (q31_t)0x590dd8, (q31_t)0xf9561237, (q31_t)0x57c01d, (q31_t)0xf96291d9, + (q31_t)0x5674d6, (q31_t)0xf96f11bc, (q31_t)0x552c03, (q31_t)0xf97b91e1, + (q31_t)0x53e5a5, (q31_t)0xf9881245, (q31_t)0x52a1bb, (q31_t)0xf99492ea, + (q31_t)0x516045, (q31_t)0xf9a113cd, (q31_t)0x502145, (q31_t)0xf9ad94f0, + (q31_t)0x4ee4b8, (q31_t)0xf9ba1651, (q31_t)0x4daaa1, (q31_t)0xf9c697f0, + (q31_t)0x4c72fe, (q31_t)0xf9d319cc, (q31_t)0x4b3dcf, (q31_t)0xf9df9be6, + (q31_t)0x4a0b16, (q31_t)0xf9ec1e3b, (q31_t)0x48dad1, (q31_t)0xf9f8a0cd, + (q31_t)0x47ad01, (q31_t)0xfa05239a, (q31_t)0x4681a6, (q31_t)0xfa11a6a3, + (q31_t)0x4558c0, (q31_t)0xfa1e29e5, (q31_t)0x44324f, (q31_t)0xfa2aad62, + (q31_t)0x430e53, (q31_t)0xfa373119, (q31_t)0x41eccc, (q31_t)0xfa43b508, + (q31_t)0x40cdba, (q31_t)0xfa503930, (q31_t)0x3fb11d, (q31_t)0xfa5cbd91, + (q31_t)0x3e96f6, (q31_t)0xfa694229, (q31_t)0x3d7f44, (q31_t)0xfa75c6f8, + (q31_t)0x3c6a07, (q31_t)0xfa824bfd, (q31_t)0x3b573f, (q31_t)0xfa8ed139, + (q31_t)0x3a46ed, (q31_t)0xfa9b56ab, (q31_t)0x393910, (q31_t)0xfaa7dc52, + (q31_t)0x382da8, (q31_t)0xfab4622d, (q31_t)0x3724b6, (q31_t)0xfac0e83d, + (q31_t)0x361e3a, (q31_t)0xfacd6e81, (q31_t)0x351a33, (q31_t)0xfad9f4f8, + (q31_t)0x3418a2, (q31_t)0xfae67ba2, (q31_t)0x331986, (q31_t)0xfaf3027e, + (q31_t)0x321ce0, (q31_t)0xfaff898c, (q31_t)0x3122b0, (q31_t)0xfb0c10cb, + (q31_t)0x302af5, (q31_t)0xfb18983b, (q31_t)0x2f35b1, (q31_t)0xfb251fdc, + (q31_t)0x2e42e2, (q31_t)0xfb31a7ac, (q31_t)0x2d5289, (q31_t)0xfb3e2fac, + (q31_t)0x2c64a6, (q31_t)0xfb4ab7db, (q31_t)0x2b7939, (q31_t)0xfb574039, + (q31_t)0x2a9042, (q31_t)0xfb63c8c4, (q31_t)0x29a9c1, (q31_t)0xfb70517d, + (q31_t)0x28c5b6, (q31_t)0xfb7cda63, (q31_t)0x27e421, (q31_t)0xfb896375, + (q31_t)0x270502, (q31_t)0xfb95ecb4, (q31_t)0x262859, (q31_t)0xfba2761e, + (q31_t)0x254e27, (q31_t)0xfbaeffb3, (q31_t)0x24766a, (q31_t)0xfbbb8973, + (q31_t)0x23a124, (q31_t)0xfbc8135c, (q31_t)0x22ce54, (q31_t)0xfbd49d70, + (q31_t)0x21fdfb, (q31_t)0xfbe127ac, (q31_t)0x213018, (q31_t)0xfbedb212, + (q31_t)0x2064ab, (q31_t)0xfbfa3c9f, (q31_t)0x1f9bb5, (q31_t)0xfc06c754, + (q31_t)0x1ed535, (q31_t)0xfc135231, (q31_t)0x1e112b, (q31_t)0xfc1fdd34, + (q31_t)0x1d4f99, (q31_t)0xfc2c685d, (q31_t)0x1c907c, (q31_t)0xfc38f3ac, + (q31_t)0x1bd3d6, (q31_t)0xfc457f21, (q31_t)0x1b19a7, (q31_t)0xfc520aba, + (q31_t)0x1a61ee, (q31_t)0xfc5e9678, (q31_t)0x19acac, (q31_t)0xfc6b2259, + (q31_t)0x18f9e1, (q31_t)0xfc77ae5e, (q31_t)0x18498c, (q31_t)0xfc843a85, + (q31_t)0x179bae, (q31_t)0xfc90c6cf, (q31_t)0x16f047, (q31_t)0xfc9d533b, + (q31_t)0x164757, (q31_t)0xfca9dfc8, (q31_t)0x15a0dd, (q31_t)0xfcb66c77, + (q31_t)0x14fcda, (q31_t)0xfcc2f945, (q31_t)0x145b4e, (q31_t)0xfccf8634, + (q31_t)0x13bc39, (q31_t)0xfcdc1342, (q31_t)0x131f9b, (q31_t)0xfce8a06f, + (q31_t)0x128574, (q31_t)0xfcf52dbb, (q31_t)0x11edc3, (q31_t)0xfd01bb24, + (q31_t)0x11588a, (q31_t)0xfd0e48ab, (q31_t)0x10c5c7, (q31_t)0xfd1ad650, + (q31_t)0x10357c, (q31_t)0xfd276410, (q31_t)0xfa7a8, (q31_t)0xfd33f1ed, + (q31_t)0xf1c4a, (q31_t)0xfd407fe6, (q31_t)0xe9364, (q31_t)0xfd4d0df9, + (q31_t)0xe0cf5, (q31_t)0xfd599c28, (q31_t)0xd88fd, (q31_t)0xfd662a70, + (q31_t)0xd077c, (q31_t)0xfd72b8d2, (q31_t)0xc8872, (q31_t)0xfd7f474d, + (q31_t)0xc0be0, (q31_t)0xfd8bd5e1, (q31_t)0xb91c4, (q31_t)0xfd98648d, + (q31_t)0xb1a20, (q31_t)0xfda4f351, (q31_t)0xaa4f3, (q31_t)0xfdb1822c, + (q31_t)0xa323d, (q31_t)0xfdbe111e, (q31_t)0x9c1ff, (q31_t)0xfdcaa027, + (q31_t)0x95438, (q31_t)0xfdd72f45, (q31_t)0x8e8e8, (q31_t)0xfde3be78, + (q31_t)0x8800f, (q31_t)0xfdf04dc0, (q31_t)0x819ae, (q31_t)0xfdfcdd1d, + (q31_t)0x7b5c4, (q31_t)0xfe096c8d, (q31_t)0x75452, (q31_t)0xfe15fc11, + (q31_t)0x6f556, (q31_t)0xfe228ba7, (q31_t)0x698d3, (q31_t)0xfe2f1b50, + (q31_t)0x63ec6, (q31_t)0xfe3bab0b, (q31_t)0x5e731, (q31_t)0xfe483ad8, + (q31_t)0x59214, (q31_t)0xfe54cab5, (q31_t)0x53f6e, (q31_t)0xfe615aa3, + (q31_t)0x4ef3f, (q31_t)0xfe6deaa1, (q31_t)0x4a188, (q31_t)0xfe7a7aae, + (q31_t)0x45648, (q31_t)0xfe870aca, (q31_t)0x40d80, (q31_t)0xfe939af5, + (q31_t)0x3c72f, (q31_t)0xfea02b2e, (q31_t)0x38356, (q31_t)0xfeacbb74, + (q31_t)0x341f4, (q31_t)0xfeb94bc8, (q31_t)0x3030a, (q31_t)0xfec5dc28, + (q31_t)0x2c697, (q31_t)0xfed26c94, (q31_t)0x28c9c, (q31_t)0xfedefd0c, + (q31_t)0x25519, (q31_t)0xfeeb8d8f, (q31_t)0x2200d, (q31_t)0xfef81e1d, + (q31_t)0x1ed78, (q31_t)0xff04aeb5, (q31_t)0x1bd5c, (q31_t)0xff113f56, + (q31_t)0x18fb6, (q31_t)0xff1dd001, (q31_t)0x16489, (q31_t)0xff2a60b4, + (q31_t)0x13bd3, (q31_t)0xff36f170, (q31_t)0x11594, (q31_t)0xff438234, + (q31_t)0xf1ce, (q31_t)0xff5012fe, (q31_t)0xd07e, (q31_t)0xff5ca3d0, + (q31_t)0xb1a7, (q31_t)0xff6934a8, (q31_t)0x9547, (q31_t)0xff75c585, + (q31_t)0x7b5f, (q31_t)0xff825668, (q31_t)0x63ee, (q31_t)0xff8ee750, + (q31_t)0x4ef5, (q31_t)0xff9b783c, (q31_t)0x3c74, (q31_t)0xffa8092c, + (q31_t)0x2c6a, (q31_t)0xffb49a1f, (q31_t)0x1ed8, (q31_t)0xffc12b16, + (q31_t)0x13bd, (q31_t)0xffcdbc0f, (q31_t)0xb1a, (q31_t)0xffda4d09, + (q31_t)0x4ef, (q31_t)0xffe6de05, (q31_t)0x13c, (q31_t)0xfff36f02, + (q31_t)0x0, (q31_t)0x0, (q31_t)0x13c, (q31_t)0xc90fe, + (q31_t)0x4ef, (q31_t)0x1921fb, (q31_t)0xb1a, (q31_t)0x25b2f7, + (q31_t)0x13bd, (q31_t)0x3243f1, (q31_t)0x1ed8, (q31_t)0x3ed4ea, + (q31_t)0x2c6a, (q31_t)0x4b65e1, (q31_t)0x3c74, (q31_t)0x57f6d4, + (q31_t)0x4ef5, (q31_t)0x6487c4, (q31_t)0x63ee, (q31_t)0x7118b0, + (q31_t)0x7b5f, (q31_t)0x7da998, (q31_t)0x9547, (q31_t)0x8a3a7b, + (q31_t)0xb1a7, (q31_t)0x96cb58, (q31_t)0xd07e, (q31_t)0xa35c30, + (q31_t)0xf1ce, (q31_t)0xafed02, (q31_t)0x11594, (q31_t)0xbc7dcc, + (q31_t)0x13bd3, (q31_t)0xc90e90, (q31_t)0x16489, (q31_t)0xd59f4c, + (q31_t)0x18fb6, (q31_t)0xe22fff, (q31_t)0x1bd5c, (q31_t)0xeec0aa, + (q31_t)0x1ed78, (q31_t)0xfb514b, (q31_t)0x2200d, (q31_t)0x107e1e3, + (q31_t)0x25519, (q31_t)0x1147271, (q31_t)0x28c9c, (q31_t)0x12102f4, + (q31_t)0x2c697, (q31_t)0x12d936c, (q31_t)0x3030a, (q31_t)0x13a23d8, + (q31_t)0x341f4, (q31_t)0x146b438, (q31_t)0x38356, (q31_t)0x153448c, + (q31_t)0x3c72f, (q31_t)0x15fd4d2, (q31_t)0x40d80, (q31_t)0x16c650b, + (q31_t)0x45648, (q31_t)0x178f536, (q31_t)0x4a188, (q31_t)0x1858552, + (q31_t)0x4ef3f, (q31_t)0x192155f, (q31_t)0x53f6e, (q31_t)0x19ea55d, + (q31_t)0x59214, (q31_t)0x1ab354b, (q31_t)0x5e731, (q31_t)0x1b7c528, + (q31_t)0x63ec6, (q31_t)0x1c454f5, (q31_t)0x698d3, (q31_t)0x1d0e4b0, + (q31_t)0x6f556, (q31_t)0x1dd7459, (q31_t)0x75452, (q31_t)0x1ea03ef, + (q31_t)0x7b5c4, (q31_t)0x1f69373, (q31_t)0x819ae, (q31_t)0x20322e3, + (q31_t)0x8800f, (q31_t)0x20fb240, (q31_t)0x8e8e8, (q31_t)0x21c4188, + (q31_t)0x95438, (q31_t)0x228d0bb, (q31_t)0x9c1ff, (q31_t)0x2355fd9, + (q31_t)0xa323d, (q31_t)0x241eee2, (q31_t)0xaa4f3, (q31_t)0x24e7dd4, + (q31_t)0xb1a20, (q31_t)0x25b0caf, (q31_t)0xb91c4, (q31_t)0x2679b73, + (q31_t)0xc0be0, (q31_t)0x2742a1f, (q31_t)0xc8872, (q31_t)0x280b8b3, + (q31_t)0xd077c, (q31_t)0x28d472e, (q31_t)0xd88fd, (q31_t)0x299d590, + (q31_t)0xe0cf5, (q31_t)0x2a663d8, (q31_t)0xe9364, (q31_t)0x2b2f207, + (q31_t)0xf1c4a, (q31_t)0x2bf801a, (q31_t)0xfa7a8, (q31_t)0x2cc0e13, + (q31_t)0x10357c, (q31_t)0x2d89bf0, (q31_t)0x10c5c7, (q31_t)0x2e529b0, + (q31_t)0x11588a, (q31_t)0x2f1b755, (q31_t)0x11edc3, (q31_t)0x2fe44dc, + (q31_t)0x128574, (q31_t)0x30ad245, (q31_t)0x131f9b, (q31_t)0x3175f91, + (q31_t)0x13bc39, (q31_t)0x323ecbe, (q31_t)0x145b4e, (q31_t)0x33079cc, + (q31_t)0x14fcda, (q31_t)0x33d06bb, (q31_t)0x15a0dd, (q31_t)0x3499389, + (q31_t)0x164757, (q31_t)0x3562038, (q31_t)0x16f047, (q31_t)0x362acc5, + (q31_t)0x179bae, (q31_t)0x36f3931, (q31_t)0x18498c, (q31_t)0x37bc57b, + (q31_t)0x18f9e1, (q31_t)0x38851a2, (q31_t)0x19acac, (q31_t)0x394dda7, + (q31_t)0x1a61ee, (q31_t)0x3a16988, (q31_t)0x1b19a7, (q31_t)0x3adf546, + (q31_t)0x1bd3d6, (q31_t)0x3ba80df, (q31_t)0x1c907c, (q31_t)0x3c70c54, + (q31_t)0x1d4f99, (q31_t)0x3d397a3, (q31_t)0x1e112b, (q31_t)0x3e022cc, + (q31_t)0x1ed535, (q31_t)0x3ecadcf, (q31_t)0x1f9bb5, (q31_t)0x3f938ac, + (q31_t)0x2064ab, (q31_t)0x405c361, (q31_t)0x213018, (q31_t)0x4124dee, + (q31_t)0x21fdfb, (q31_t)0x41ed854, (q31_t)0x22ce54, (q31_t)0x42b6290, + (q31_t)0x23a124, (q31_t)0x437eca4, (q31_t)0x24766a, (q31_t)0x444768d, + (q31_t)0x254e27, (q31_t)0x451004d, (q31_t)0x262859, (q31_t)0x45d89e2, + (q31_t)0x270502, (q31_t)0x46a134c, (q31_t)0x27e421, (q31_t)0x4769c8b, + (q31_t)0x28c5b6, (q31_t)0x483259d, (q31_t)0x29a9c1, (q31_t)0x48fae83, + (q31_t)0x2a9042, (q31_t)0x49c373c, (q31_t)0x2b7939, (q31_t)0x4a8bfc7, + (q31_t)0x2c64a6, (q31_t)0x4b54825, (q31_t)0x2d5289, (q31_t)0x4c1d054, + (q31_t)0x2e42e2, (q31_t)0x4ce5854, (q31_t)0x2f35b1, (q31_t)0x4dae024, + (q31_t)0x302af5, (q31_t)0x4e767c5, (q31_t)0x3122b0, (q31_t)0x4f3ef35, + (q31_t)0x321ce0, (q31_t)0x5007674, (q31_t)0x331986, (q31_t)0x50cfd82, + (q31_t)0x3418a2, (q31_t)0x519845e, (q31_t)0x351a33, (q31_t)0x5260b08, + (q31_t)0x361e3a, (q31_t)0x532917f, (q31_t)0x3724b6, (q31_t)0x53f17c3, + (q31_t)0x382da8, (q31_t)0x54b9dd3, (q31_t)0x393910, (q31_t)0x55823ae, + (q31_t)0x3a46ed, (q31_t)0x564a955, (q31_t)0x3b573f, (q31_t)0x5712ec7, + (q31_t)0x3c6a07, (q31_t)0x57db403, (q31_t)0x3d7f44, (q31_t)0x58a3908, + (q31_t)0x3e96f6, (q31_t)0x596bdd7, (q31_t)0x3fb11d, (q31_t)0x5a3426f, + (q31_t)0x40cdba, (q31_t)0x5afc6d0, (q31_t)0x41eccc, (q31_t)0x5bc4af8, + (q31_t)0x430e53, (q31_t)0x5c8cee7, (q31_t)0x44324f, (q31_t)0x5d5529e, + (q31_t)0x4558c0, (q31_t)0x5e1d61b, (q31_t)0x4681a6, (q31_t)0x5ee595d, + (q31_t)0x47ad01, (q31_t)0x5fadc66, (q31_t)0x48dad1, (q31_t)0x6075f33, + (q31_t)0x4a0b16, (q31_t)0x613e1c5, (q31_t)0x4b3dcf, (q31_t)0x620641a, + (q31_t)0x4c72fe, (q31_t)0x62ce634, (q31_t)0x4daaa1, (q31_t)0x6396810, + (q31_t)0x4ee4b8, (q31_t)0x645e9af, (q31_t)0x502145, (q31_t)0x6526b10, + (q31_t)0x516045, (q31_t)0x65eec33, (q31_t)0x52a1bb, (q31_t)0x66b6d16, + (q31_t)0x53e5a5, (q31_t)0x677edbb, (q31_t)0x552c03, (q31_t)0x6846e1f, + (q31_t)0x5674d6, (q31_t)0x690ee44, (q31_t)0x57c01d, (q31_t)0x69d6e27, + (q31_t)0x590dd8, (q31_t)0x6a9edc9, (q31_t)0x5a5e07, (q31_t)0x6b66d29, + (q31_t)0x5bb0ab, (q31_t)0x6c2ec48, (q31_t)0x5d05c3, (q31_t)0x6cf6b23, + (q31_t)0x5e5d4e, (q31_t)0x6dbe9bb, (q31_t)0x5fb74e, (q31_t)0x6e86810, + (q31_t)0x6113c2, (q31_t)0x6f4e620, (q31_t)0x6272aa, (q31_t)0x70163eb, + (q31_t)0x63d405, (q31_t)0x70de172, (q31_t)0x6537d4, (q31_t)0x71a5eb3, + (q31_t)0x669e18, (q31_t)0x726dbae, (q31_t)0x6806ce, (q31_t)0x7335862, + (q31_t)0x6971f9, (q31_t)0x73fd4cf, (q31_t)0x6adf97, (q31_t)0x74c50f4, + (q31_t)0x6c4fa8, (q31_t)0x758ccd2, (q31_t)0x6dc22e, (q31_t)0x7654867, + (q31_t)0x6f3726, (q31_t)0x771c3b3, (q31_t)0x70ae92, (q31_t)0x77e3eb5, + (q31_t)0x722871, (q31_t)0x78ab96e, (q31_t)0x73a4c3, (q31_t)0x79733dc, + (q31_t)0x752389, (q31_t)0x7a3adff, (q31_t)0x76a4c2, (q31_t)0x7b027d7, + (q31_t)0x78286e, (q31_t)0x7bca163, (q31_t)0x79ae8c, (q31_t)0x7c91aa3, + (q31_t)0x7b371e, (q31_t)0x7d59396, (q31_t)0x7cc223, (q31_t)0x7e20c3b, + (q31_t)0x7e4f9b, (q31_t)0x7ee8493, (q31_t)0x7fdf85, (q31_t)0x7fafc9c, + (q31_t)0x8171e2, (q31_t)0x8077457, (q31_t)0x8306b2, (q31_t)0x813ebc2, + (q31_t)0x849df4, (q31_t)0x82062de, (q31_t)0x8637a9, (q31_t)0x82cd9a9, + (q31_t)0x87d3d0, (q31_t)0x8395024, (q31_t)0x89726a, (q31_t)0x845c64d, + (q31_t)0x8b1376, (q31_t)0x8523c25, (q31_t)0x8cb6f5, (q31_t)0x85eb1ab, + (q31_t)0x8e5ce5, (q31_t)0x86b26de, (q31_t)0x900548, (q31_t)0x8779bbe, + (q31_t)0x91b01d, (q31_t)0x884104b, (q31_t)0x935d64, (q31_t)0x8908483, + (q31_t)0x950d1d, (q31_t)0x89cf867, (q31_t)0x96bf48, (q31_t)0x8a96bf6, + (q31_t)0x9873e4, (q31_t)0x8b5df30, (q31_t)0x9a2af3, (q31_t)0x8c25213, + (q31_t)0x9be473, (q31_t)0x8cec4a0, (q31_t)0x9da065, (q31_t)0x8db36d6, + (q31_t)0x9f5ec8, (q31_t)0x8e7a8b5, (q31_t)0xa11f9d, (q31_t)0x8f41a3c, + (q31_t)0xa2e2e3, (q31_t)0x9008b6a, (q31_t)0xa4a89b, (q31_t)0x90cfc40, + (q31_t)0xa670c4, (q31_t)0x9196cbc, (q31_t)0xa83b5e, (q31_t)0x925dcdf, + (q31_t)0xaa086a, (q31_t)0x9324ca7, (q31_t)0xabd7e6, (q31_t)0x93ebc14, + (q31_t)0xada9d4, (q31_t)0x94b2b27, (q31_t)0xaf7e33, (q31_t)0x95799dd, + (q31_t)0xb15502, (q31_t)0x9640837, (q31_t)0xb32e42, (q31_t)0x9707635, + (q31_t)0xb509f3, (q31_t)0x97ce3d5, (q31_t)0xb6e815, (q31_t)0x9895118, + (q31_t)0xb8c8a7, (q31_t)0x995bdfd, (q31_t)0xbaabaa, (q31_t)0x9a22a83, + (q31_t)0xbc911d, (q31_t)0x9ae96aa, (q31_t)0xbe7901, (q31_t)0x9bb0271, + (q31_t)0xc06355, (q31_t)0x9c76dd8, (q31_t)0xc25019, (q31_t)0x9d3d8df, + (q31_t)0xc43f4d, (q31_t)0x9e04385, (q31_t)0xc630f2, (q31_t)0x9ecadc9, + (q31_t)0xc82506, (q31_t)0x9f917ac, (q31_t)0xca1b8a, (q31_t)0xa05812c, + (q31_t)0xcc147f, (q31_t)0xa11ea49, (q31_t)0xce0fe3, (q31_t)0xa1e5303, + (q31_t)0xd00db6, (q31_t)0xa2abb59, (q31_t)0xd20dfa, (q31_t)0xa37234a, + (q31_t)0xd410ad, (q31_t)0xa438ad7, (q31_t)0xd615cf, (q31_t)0xa4ff1fe, + (q31_t)0xd81d61, (q31_t)0xa5c58c0, (q31_t)0xda2762, (q31_t)0xa68bf1b, + (q31_t)0xdc33d2, (q31_t)0xa752510, (q31_t)0xde42b2, (q31_t)0xa818a9d, + (q31_t)0xe05401, (q31_t)0xa8defc3, (q31_t)0xe267be, (q31_t)0xa9a5480, + (q31_t)0xe47deb, (q31_t)0xaa6b8d5, (q31_t)0xe69686, (q31_t)0xab31cc1, + (q31_t)0xe8b190, (q31_t)0xabf8043, (q31_t)0xeacf09, (q31_t)0xacbe35b, + (q31_t)0xeceef1, (q31_t)0xad84609, (q31_t)0xef1147, (q31_t)0xae4a84b, + (q31_t)0xf1360b, (q31_t)0xaf10a22, (q31_t)0xf35d3e, (q31_t)0xafd6b8d, + (q31_t)0xf586df, (q31_t)0xb09cc8c, (q31_t)0xf7b2ee, (q31_t)0xb162d1d, + (q31_t)0xf9e16b, (q31_t)0xb228d42, (q31_t)0xfc1257, (q31_t)0xb2eecf8, + (q31_t)0xfe45b0, (q31_t)0xb3b4c40, (q31_t)0x1007b77, (q31_t)0xb47ab19, + (q31_t)0x102b3ac, (q31_t)0xb540982, (q31_t)0x104ee4f, (q31_t)0xb60677c, + (q31_t)0x1072b5f, (q31_t)0xb6cc506, (q31_t)0x1096add, (q31_t)0xb79221f, + (q31_t)0x10bacc8, (q31_t)0xb857ec7, (q31_t)0x10df120, (q31_t)0xb91dafc, + (q31_t)0x11037e6, (q31_t)0xb9e36c0, (q31_t)0x1128119, (q31_t)0xbaa9211, + (q31_t)0x114ccb9, (q31_t)0xbb6ecef, (q31_t)0x1171ac6, (q31_t)0xbc34759, + (q31_t)0x1196b3f, (q31_t)0xbcfa150, (q31_t)0x11bbe26, (q31_t)0xbdbfad1, + (q31_t)0x11e1379, (q31_t)0xbe853de, (q31_t)0x1206b39, (q31_t)0xbf4ac75, + (q31_t)0x122c566, (q31_t)0xc010496, (q31_t)0x12521ff, (q31_t)0xc0d5c41, + (q31_t)0x1278104, (q31_t)0xc19b374, (q31_t)0x129e276, (q31_t)0xc260a31, + (q31_t)0x12c4653, (q31_t)0xc326075, (q31_t)0x12eac9d, (q31_t)0xc3eb641, + (q31_t)0x1311553, (q31_t)0xc4b0b94, (q31_t)0x1338075, (q31_t)0xc57606e, + (q31_t)0x135ee02, (q31_t)0xc63b4ce, (q31_t)0x1385dfb, (q31_t)0xc7008b3, + (q31_t)0x13ad060, (q31_t)0xc7c5c1e, (q31_t)0x13d4530, (q31_t)0xc88af0e, + (q31_t)0x13fbc6c, (q31_t)0xc950182, (q31_t)0x1423613, (q31_t)0xca1537a, + (q31_t)0x144b225, (q31_t)0xcada4f5, (q31_t)0x14730a3, (q31_t)0xcb9f5f3, + (q31_t)0x149b18b, (q31_t)0xcc64673, (q31_t)0x14c34df, (q31_t)0xcd29676, + (q31_t)0x14eba9d, (q31_t)0xcdee5f9, (q31_t)0x15142c6, (q31_t)0xceb34fe, + (q31_t)0x153cd5a, (q31_t)0xcf78383, (q31_t)0x1565a58, (q31_t)0xd03d189, + (q31_t)0x158e9c1, (q31_t)0xd101f0e, (q31_t)0x15b7b94, (q31_t)0xd1c6c11, + (q31_t)0x15e0fd1, (q31_t)0xd28b894, (q31_t)0x160a678, (q31_t)0xd350495, + (q31_t)0x1633f8a, (q31_t)0xd415013, (q31_t)0x165db05, (q31_t)0xd4d9b0e, + (q31_t)0x16878eb, (q31_t)0xd59e586, (q31_t)0x16b193a, (q31_t)0xd662f7b, + (q31_t)0x16dbbf3, (q31_t)0xd7278eb, (q31_t)0x1706115, (q31_t)0xd7ec1d6, + (q31_t)0x17308a1, (q31_t)0xd8b0a3d, (q31_t)0x175b296, (q31_t)0xd97521d, + (q31_t)0x1785ef4, (q31_t)0xda39978, (q31_t)0x17b0dbb, (q31_t)0xdafe04b, + (q31_t)0x17dbeec, (q31_t)0xdbc2698, (q31_t)0x1807285, (q31_t)0xdc86c5d, + (q31_t)0x1832888, (q31_t)0xdd4b19a, (q31_t)0x185e0f3, (q31_t)0xde0f64f, + (q31_t)0x1889bc6, (q31_t)0xded3a7b, (q31_t)0x18b5903, (q31_t)0xdf97e1d, + (q31_t)0x18e18a7, (q31_t)0xe05c135, (q31_t)0x190dab4, (q31_t)0xe1203c3, + (q31_t)0x1939f29, (q31_t)0xe1e45c6, (q31_t)0x1966606, (q31_t)0xe2a873e, + (q31_t)0x1992f4c, (q31_t)0xe36c82a, (q31_t)0x19bfaf9, (q31_t)0xe430889, + (q31_t)0x19ec90d, (q31_t)0xe4f485c, (q31_t)0x1a1998a, (q31_t)0xe5b87a2, + (q31_t)0x1a46c6e, (q31_t)0xe67c65a, (q31_t)0x1a741b9, (q31_t)0xe740483, + (q31_t)0x1aa196c, (q31_t)0xe80421e, (q31_t)0x1acf386, (q31_t)0xe8c7f2a, + (q31_t)0x1afd007, (q31_t)0xe98bba7, (q31_t)0x1b2aef0, (q31_t)0xea4f793, + (q31_t)0x1b5903f, (q31_t)0xeb132ef, (q31_t)0x1b873f5, (q31_t)0xebd6db9, + (q31_t)0x1bb5a11, (q31_t)0xec9a7f3, (q31_t)0x1be4294, (q31_t)0xed5e19a, + (q31_t)0x1c12d7e, (q31_t)0xee21aaf, (q31_t)0x1c41ace, (q31_t)0xeee5331, + (q31_t)0x1c70a84, (q31_t)0xefa8b20, (q31_t)0x1c9fca0, (q31_t)0xf06c27a, + (q31_t)0x1ccf122, (q31_t)0xf12f941, (q31_t)0x1cfe80a, (q31_t)0xf1f2f73, + (q31_t)0x1d2e158, (q31_t)0xf2b650f, (q31_t)0x1d5dd0c, (q31_t)0xf379a16, + (q31_t)0x1d8db25, (q31_t)0xf43ce86, (q31_t)0x1dbdba3, (q31_t)0xf500260, + (q31_t)0x1dede87, (q31_t)0xf5c35a3, (q31_t)0x1e1e3d0, (q31_t)0xf68684e, + (q31_t)0x1e4eb7e, (q31_t)0xf749a61, (q31_t)0x1e7f591, (q31_t)0xf80cbdc, + (q31_t)0x1eb0209, (q31_t)0xf8cfcbe, (q31_t)0x1ee10e5, (q31_t)0xf992d06, + (q31_t)0x1f12227, (q31_t)0xfa55cb4, (q31_t)0x1f435cc, (q31_t)0xfb18bc8, + (q31_t)0x1f74bd6, (q31_t)0xfbdba40, (q31_t)0x1fa6445, (q31_t)0xfc9e81e, + (q31_t)0x1fd7f17, (q31_t)0xfd6155f, (q31_t)0x2009c4e, (q31_t)0xfe24205, + (q31_t)0x203bbe8, (q31_t)0xfee6e0d, (q31_t)0x206dde6, (q31_t)0xffa9979, + (q31_t)0x20a0248, (q31_t)0x1006c446, (q31_t)0x20d290d, (q31_t)0x1012ee76, + (q31_t)0x2105236, (q31_t)0x101f1807, (q31_t)0x2137dc2, (q31_t)0x102b40f8, + (q31_t)0x216abb1, (q31_t)0x1037694b, (q31_t)0x219dc03, (q31_t)0x104390fd, + (q31_t)0x21d0eb8, (q31_t)0x104fb80e, (q31_t)0x22043d0, (q31_t)0x105bde7f, + (q31_t)0x2237b4b, (q31_t)0x1068044e, (q31_t)0x226b528, (q31_t)0x1074297b, + (q31_t)0x229f167, (q31_t)0x10804e06, (q31_t)0x22d3009, (q31_t)0x108c71ee, + (q31_t)0x230710d, (q31_t)0x10989532, (q31_t)0x233b473, (q31_t)0x10a4b7d3, + (q31_t)0x236fa3b, (q31_t)0x10b0d9d0, (q31_t)0x23a4265, (q31_t)0x10bcfb28, + (q31_t)0x23d8cf1, (q31_t)0x10c91bda, (q31_t)0x240d9de, (q31_t)0x10d53be7, + (q31_t)0x244292c, (q31_t)0x10e15b4e, (q31_t)0x2477adc, (q31_t)0x10ed7a0e, + (q31_t)0x24aceed, (q31_t)0x10f99827, (q31_t)0x24e255e, (q31_t)0x1105b599, + (q31_t)0x2517e31, (q31_t)0x1111d263, (q31_t)0x254d965, (q31_t)0x111dee84, + (q31_t)0x25836f9, (q31_t)0x112a09fc, (q31_t)0x25b96ee, (q31_t)0x113624cb, + (q31_t)0x25ef943, (q31_t)0x11423ef0, (q31_t)0x2625df8, (q31_t)0x114e586a, + (q31_t)0x265c50e, (q31_t)0x115a713a, (q31_t)0x2692e83, (q31_t)0x1166895f, + (q31_t)0x26c9a58, (q31_t)0x1172a0d7, (q31_t)0x270088e, (q31_t)0x117eb7a4, + (q31_t)0x2737922, (q31_t)0x118acdc4, (q31_t)0x276ec16, (q31_t)0x1196e337, + (q31_t)0x27a616a, (q31_t)0x11a2f7fc, (q31_t)0x27dd91c, (q31_t)0x11af0c13, + (q31_t)0x281532e, (q31_t)0x11bb1f7c, (q31_t)0x284cf9f, (q31_t)0x11c73235, + (q31_t)0x2884e6e, (q31_t)0x11d3443f, (q31_t)0x28bcf9c, (q31_t)0x11df5599, + (q31_t)0x28f5329, (q31_t)0x11eb6643, (q31_t)0x292d914, (q31_t)0x11f7763c, + (q31_t)0x296615d, (q31_t)0x12038584, (q31_t)0x299ec05, (q31_t)0x120f941a, + (q31_t)0x29d790a, (q31_t)0x121ba1fd, (q31_t)0x2a1086d, (q31_t)0x1227af2e, + (q31_t)0x2a49a2e, (q31_t)0x1233bbac, (q31_t)0x2a82e4d, (q31_t)0x123fc776, + (q31_t)0x2abc4c9, (q31_t)0x124bd28c, (q31_t)0x2af5da2, (q31_t)0x1257dced, + (q31_t)0x2b2f8d8, (q31_t)0x1263e699, (q31_t)0x2b6966c, (q31_t)0x126fef90, + (q31_t)0x2ba365c, (q31_t)0x127bf7d1, (q31_t)0x2bdd8a9, (q31_t)0x1287ff5b, + (q31_t)0x2c17d52, (q31_t)0x1294062f, (q31_t)0x2c52459, (q31_t)0x12a00c4b, + (q31_t)0x2c8cdbb, (q31_t)0x12ac11af, (q31_t)0x2cc7979, (q31_t)0x12b8165b, + (q31_t)0x2d02794, (q31_t)0x12c41a4f, (q31_t)0x2d3d80a, (q31_t)0x12d01d89, + (q31_t)0x2d78add, (q31_t)0x12dc2009, (q31_t)0x2db400a, (q31_t)0x12e821cf, + (q31_t)0x2def794, (q31_t)0x12f422db, (q31_t)0x2e2b178, (q31_t)0x1300232c, + (q31_t)0x2e66db8, (q31_t)0x130c22c1, (q31_t)0x2ea2c53, (q31_t)0x1318219a, + (q31_t)0x2eded49, (q31_t)0x13241fb6, (q31_t)0x2f1b099, (q31_t)0x13301d16, + (q31_t)0x2f57644, (q31_t)0x133c19b8, (q31_t)0x2f93e4a, (q31_t)0x1348159d, + (q31_t)0x2fd08a9, (q31_t)0x135410c3, (q31_t)0x300d563, (q31_t)0x13600b2a, + (q31_t)0x304a477, (q31_t)0x136c04d2, (q31_t)0x30875e5, (q31_t)0x1377fdbb, + (q31_t)0x30c49ad, (q31_t)0x1383f5e3, (q31_t)0x3101fce, (q31_t)0x138fed4b, + (q31_t)0x313f848, (q31_t)0x139be3f2, (q31_t)0x317d31c, (q31_t)0x13a7d9d7, + (q31_t)0x31bb049, (q31_t)0x13b3cefa, (q31_t)0x31f8fcf, (q31_t)0x13bfc35b, + (q31_t)0x32371ae, (q31_t)0x13cbb6f8, (q31_t)0x32755e5, (q31_t)0x13d7a9d3, + (q31_t)0x32b3c75, (q31_t)0x13e39be9, (q31_t)0x32f255e, (q31_t)0x13ef8d3c, + (q31_t)0x333109e, (q31_t)0x13fb7dc9, (q31_t)0x336fe37, (q31_t)0x14076d91, + (q31_t)0x33aee27, (q31_t)0x14135c94, (q31_t)0x33ee070, (q31_t)0x141f4ad1, + (q31_t)0x342d510, (q31_t)0x142b3846, (q31_t)0x346cc07, (q31_t)0x143724f5, + (q31_t)0x34ac556, (q31_t)0x144310dd, (q31_t)0x34ec0fc, (q31_t)0x144efbfc, + (q31_t)0x352bef9, (q31_t)0x145ae653, (q31_t)0x356bf4d, (q31_t)0x1466cfe1, + (q31_t)0x35ac1f7, (q31_t)0x1472b8a5, (q31_t)0x35ec6f8, (q31_t)0x147ea0a0, + (q31_t)0x362ce50, (q31_t)0x148a87d1, (q31_t)0x366d7fd, (q31_t)0x14966e36, + (q31_t)0x36ae401, (q31_t)0x14a253d1, (q31_t)0x36ef25b, (q31_t)0x14ae38a0, + (q31_t)0x373030a, (q31_t)0x14ba1ca3, (q31_t)0x377160f, (q31_t)0x14c5ffd9, + (q31_t)0x37b2b6a, (q31_t)0x14d1e242, (q31_t)0x37f4319, (q31_t)0x14ddc3de, + (q31_t)0x3835d1e, (q31_t)0x14e9a4ac, (q31_t)0x3877978, (q31_t)0x14f584ac, + (q31_t)0x38b9827, (q31_t)0x150163dc, (q31_t)0x38fb92a, (q31_t)0x150d423d, + (q31_t)0x393dc82, (q31_t)0x15191fcf, (q31_t)0x398022f, (q31_t)0x1524fc90, + (q31_t)0x39c2a2f, (q31_t)0x1530d881, (q31_t)0x3a05484, (q31_t)0x153cb3a0, + (q31_t)0x3a4812c, (q31_t)0x15488dee, (q31_t)0x3a8b028, (q31_t)0x1554676a, + (q31_t)0x3ace178, (q31_t)0x15604013, (q31_t)0x3b1151b, (q31_t)0x156c17e9, + (q31_t)0x3b54b11, (q31_t)0x1577eeec, (q31_t)0x3b9835a, (q31_t)0x1583c51b, + (q31_t)0x3bdbdf6, (q31_t)0x158f9a76, (q31_t)0x3c1fae5, (q31_t)0x159b6efb, + (q31_t)0x3c63a26, (q31_t)0x15a742ac, (q31_t)0x3ca7bba, (q31_t)0x15b31587, + (q31_t)0x3cebfa0, (q31_t)0x15bee78c, (q31_t)0x3d305d8, (q31_t)0x15cab8ba, + (q31_t)0x3d74e62, (q31_t)0x15d68911, (q31_t)0x3db993e, (q31_t)0x15e25890, + (q31_t)0x3dfe66c, (q31_t)0x15ee2738, (q31_t)0x3e435ea, (q31_t)0x15f9f507, + (q31_t)0x3e887bb, (q31_t)0x1605c1fd, (q31_t)0x3ecdbdc, (q31_t)0x16118e1a, + (q31_t)0x3f1324e, (q31_t)0x161d595d, (q31_t)0x3f58b10, (q31_t)0x162923c5, + (q31_t)0x3f9e624, (q31_t)0x1634ed53, (q31_t)0x3fe4388, (q31_t)0x1640b606, + (q31_t)0x402a33c, (q31_t)0x164c7ddd, (q31_t)0x4070540, (q31_t)0x165844d8, + (q31_t)0x40b6994, (q31_t)0x16640af7, (q31_t)0x40fd037, (q31_t)0x166fd039, + (q31_t)0x414392b, (q31_t)0x167b949d, (q31_t)0x418a46d, (q31_t)0x16875823, + (q31_t)0x41d11ff, (q31_t)0x16931acb, (q31_t)0x42181e0, (q31_t)0x169edc94, + (q31_t)0x425f410, (q31_t)0x16aa9d7e, (q31_t)0x42a688f, (q31_t)0x16b65d88, + (q31_t)0x42edf5c, (q31_t)0x16c21cb2, (q31_t)0x4335877, (q31_t)0x16cddafb, + (q31_t)0x437d3e1, (q31_t)0x16d99864, (q31_t)0x43c5199, (q31_t)0x16e554ea, + (q31_t)0x440d19e, (q31_t)0x16f1108f, (q31_t)0x44553f2, (q31_t)0x16fccb51, + (q31_t)0x449d892, (q31_t)0x17088531, (q31_t)0x44e5f80, (q31_t)0x17143e2d, + (q31_t)0x452e8bc, (q31_t)0x171ff646, (q31_t)0x4577444, (q31_t)0x172bad7a, + (q31_t)0x45c0219, (q31_t)0x173763c9, (q31_t)0x460923b, (q31_t)0x17431933, + (q31_t)0x46524a9, (q31_t)0x174ecdb8, (q31_t)0x469b963, (q31_t)0x175a8157, + (q31_t)0x46e5069, (q31_t)0x1766340f, (q31_t)0x472e9bc, (q31_t)0x1771e5e0, + (q31_t)0x477855a, (q31_t)0x177d96ca, (q31_t)0x47c2344, (q31_t)0x178946cc, + (q31_t)0x480c379, (q31_t)0x1794f5e6, (q31_t)0x48565f9, (q31_t)0x17a0a417, + (q31_t)0x48a0ac4, (q31_t)0x17ac515f, (q31_t)0x48eb1db, (q31_t)0x17b7fdbd, + (q31_t)0x4935b3c, (q31_t)0x17c3a931, (q31_t)0x49806e7, (q31_t)0x17cf53bb, + (q31_t)0x49cb4dd, (q31_t)0x17dafd59, (q31_t)0x4a1651c, (q31_t)0x17e6a60c, + (q31_t)0x4a617a6, (q31_t)0x17f24dd3, (q31_t)0x4aacc7a, (q31_t)0x17fdf4ae, + (q31_t)0x4af8397, (q31_t)0x18099a9c, (q31_t)0x4b43cfd, (q31_t)0x18153f9d, + (q31_t)0x4b8f8ad, (q31_t)0x1820e3b0, (q31_t)0x4bdb6a6, (q31_t)0x182c86d5, + (q31_t)0x4c276e8, (q31_t)0x1838290c, (q31_t)0x4c73972, (q31_t)0x1843ca53, + (q31_t)0x4cbfe45, (q31_t)0x184f6aab, (q31_t)0x4d0c560, (q31_t)0x185b0a13, + (q31_t)0x4d58ec3, (q31_t)0x1866a88a, (q31_t)0x4da5a6f, (q31_t)0x18724611, + (q31_t)0x4df2862, (q31_t)0x187de2a7, (q31_t)0x4e3f89c, (q31_t)0x18897e4a, + (q31_t)0x4e8cb1e, (q31_t)0x189518fc, (q31_t)0x4ed9fe7, (q31_t)0x18a0b2bb, + (q31_t)0x4f276f7, (q31_t)0x18ac4b87, (q31_t)0x4f7504e, (q31_t)0x18b7e35f, + (q31_t)0x4fc2bec, (q31_t)0x18c37a44, (q31_t)0x50109d0, (q31_t)0x18cf1034, + (q31_t)0x505e9fb, (q31_t)0x18daa52f, (q31_t)0x50acc6b, (q31_t)0x18e63935, + (q31_t)0x50fb121, (q31_t)0x18f1cc45, (q31_t)0x514981d, (q31_t)0x18fd5e5f, + (q31_t)0x519815f, (q31_t)0x1908ef82, (q31_t)0x51e6ce6, (q31_t)0x19147fae, + (q31_t)0x5235ab2, (q31_t)0x19200ee3, (q31_t)0x5284ac3, (q31_t)0x192b9d1f, + (q31_t)0x52d3d18, (q31_t)0x19372a64, (q31_t)0x53231b3, (q31_t)0x1942b6af, + (q31_t)0x5372891, (q31_t)0x194e4201, (q31_t)0x53c21b4, (q31_t)0x1959cc5a, + (q31_t)0x5411d1b, (q31_t)0x196555b8, (q31_t)0x5461ac6, (q31_t)0x1970de1b, + (q31_t)0x54b1ab4, (q31_t)0x197c6584, (q31_t)0x5501ce5, (q31_t)0x1987ebf0, + (q31_t)0x555215a, (q31_t)0x19937161, (q31_t)0x55a2812, (q31_t)0x199ef5d6, + (q31_t)0x55f310d, (q31_t)0x19aa794d, (q31_t)0x5643c4a, (q31_t)0x19b5fbc8, + (q31_t)0x56949ca, (q31_t)0x19c17d44, (q31_t)0x56e598c, (q31_t)0x19ccfdc2, + (q31_t)0x5736b90, (q31_t)0x19d87d42, (q31_t)0x5787fd6, (q31_t)0x19e3fbc3, + (q31_t)0x57d965d, (q31_t)0x19ef7944, (q31_t)0x582af26, (q31_t)0x19faf5c5, + (q31_t)0x587ca31, (q31_t)0x1a067145, (q31_t)0x58ce77c, (q31_t)0x1a11ebc5, + (q31_t)0x5920708, (q31_t)0x1a1d6544, (q31_t)0x59728d5, (q31_t)0x1a28ddc0, + (q31_t)0x59c4ce3, (q31_t)0x1a34553b, (q31_t)0x5a17330, (q31_t)0x1a3fcbb3, + (q31_t)0x5a69bbe, (q31_t)0x1a4b4128, (q31_t)0x5abc68c, (q31_t)0x1a56b599, + (q31_t)0x5b0f399, (q31_t)0x1a622907, (q31_t)0x5b622e6, (q31_t)0x1a6d9b70, + (q31_t)0x5bb5472, (q31_t)0x1a790cd4, (q31_t)0x5c0883d, (q31_t)0x1a847d33, + (q31_t)0x5c5be47, (q31_t)0x1a8fec8c, (q31_t)0x5caf690, (q31_t)0x1a9b5adf, + (q31_t)0x5d03118, (q31_t)0x1aa6c82b, (q31_t)0x5d56ddd, (q31_t)0x1ab23471, + (q31_t)0x5daace1, (q31_t)0x1abd9faf, (q31_t)0x5dfee22, (q31_t)0x1ac909e5, + (q31_t)0x5e531a1, (q31_t)0x1ad47312, (q31_t)0x5ea775e, (q31_t)0x1adfdb37, + (q31_t)0x5efbf58, (q31_t)0x1aeb4253, (q31_t)0x5f5098f, (q31_t)0x1af6a865, + (q31_t)0x5fa5603, (q31_t)0x1b020d6c, (q31_t)0x5ffa4b3, (q31_t)0x1b0d716a, + (q31_t)0x604f5a0, (q31_t)0x1b18d45c, (q31_t)0x60a48c9, (q31_t)0x1b243643, + (q31_t)0x60f9e2e, (q31_t)0x1b2f971e, (q31_t)0x614f5cf, (q31_t)0x1b3af6ec, + (q31_t)0x61a4fac, (q31_t)0x1b4655ae, (q31_t)0x61fabc4, (q31_t)0x1b51b363, + (q31_t)0x6250a18, (q31_t)0x1b5d100a, (q31_t)0x62a6aa6, (q31_t)0x1b686ba3, + (q31_t)0x62fcd6f, (q31_t)0x1b73c62d, (q31_t)0x6353273, (q31_t)0x1b7f1fa9, + (q31_t)0x63a99b1, (q31_t)0x1b8a7815, (q31_t)0x6400329, (q31_t)0x1b95cf71, + (q31_t)0x6456edb, (q31_t)0x1ba125bd, (q31_t)0x64adcc7, (q31_t)0x1bac7af9, + (q31_t)0x6504ced, (q31_t)0x1bb7cf23, (q31_t)0x655bf4c, (q31_t)0x1bc3223c, + (q31_t)0x65b33e4, (q31_t)0x1bce7442, (q31_t)0x660aab5, (q31_t)0x1bd9c537, + (q31_t)0x66623be, (q31_t)0x1be51518, (q31_t)0x66b9f01, (q31_t)0x1bf063e6, + (q31_t)0x6711c7b, (q31_t)0x1bfbb1a0, (q31_t)0x6769c2e, (q31_t)0x1c06fe46, + (q31_t)0x67c1e18, (q31_t)0x1c1249d8, (q31_t)0x681a23a, (q31_t)0x1c1d9454, + (q31_t)0x6872894, (q31_t)0x1c28ddbb, (q31_t)0x68cb124, (q31_t)0x1c34260c, + (q31_t)0x6923bec, (q31_t)0x1c3f6d47, (q31_t)0x697c8eb, (q31_t)0x1c4ab36b, + (q31_t)0x69d5820, (q31_t)0x1c55f878, (q31_t)0x6a2e98b, (q31_t)0x1c613c6d, + (q31_t)0x6a87d2d, (q31_t)0x1c6c7f4a, (q31_t)0x6ae1304, (q31_t)0x1c77c10e, + (q31_t)0x6b3ab12, (q31_t)0x1c8301b9, (q31_t)0x6b94554, (q31_t)0x1c8e414b, + (q31_t)0x6bee1cd, (q31_t)0x1c997fc4, (q31_t)0x6c4807a, (q31_t)0x1ca4bd21, + (q31_t)0x6ca215c, (q31_t)0x1caff965, (q31_t)0x6cfc472, (q31_t)0x1cbb348d, + (q31_t)0x6d569be, (q31_t)0x1cc66e99, (q31_t)0x6db113d, (q31_t)0x1cd1a78a, + (q31_t)0x6e0baf0, (q31_t)0x1cdcdf5e, (q31_t)0x6e666d7, (q31_t)0x1ce81615, + (q31_t)0x6ec14f2, (q31_t)0x1cf34baf, (q31_t)0x6f1c540, (q31_t)0x1cfe802b, + (q31_t)0x6f777c1, (q31_t)0x1d09b389, (q31_t)0x6fd2c75, (q31_t)0x1d14e5c9, + (q31_t)0x702e35c, (q31_t)0x1d2016e9, (q31_t)0x7089c75, (q31_t)0x1d2b46ea, + (q31_t)0x70e57c0, (q31_t)0x1d3675cb, (q31_t)0x714153e, (q31_t)0x1d41a38c, + (q31_t)0x719d4ed, (q31_t)0x1d4cd02c, (q31_t)0x71f96ce, (q31_t)0x1d57fbaa, + (q31_t)0x7255ae0, (q31_t)0x1d632608, (q31_t)0x72b2123, (q31_t)0x1d6e4f43, + (q31_t)0x730e997, (q31_t)0x1d79775c, (q31_t)0x736b43c, (q31_t)0x1d849e51, + (q31_t)0x73c8111, (q31_t)0x1d8fc424, (q31_t)0x7425016, (q31_t)0x1d9ae8d2, + (q31_t)0x748214c, (q31_t)0x1da60c5d, (q31_t)0x74df4b1, (q31_t)0x1db12ec3, + (q31_t)0x753ca46, (q31_t)0x1dbc5004, (q31_t)0x759a20a, (q31_t)0x1dc7701f, + (q31_t)0x75f7bfe, (q31_t)0x1dd28f15, (q31_t)0x7655820, (q31_t)0x1dddace4, + (q31_t)0x76b3671, (q31_t)0x1de8c98c, (q31_t)0x77116f0, (q31_t)0x1df3e50d, + (q31_t)0x776f99d, (q31_t)0x1dfeff67, (q31_t)0x77cde79, (q31_t)0x1e0a1898, + (q31_t)0x782c582, (q31_t)0x1e1530a1, (q31_t)0x788aeb9, (q31_t)0x1e204781, + (q31_t)0x78e9a1d, (q31_t)0x1e2b5d38, (q31_t)0x79487ae, (q31_t)0x1e3671c5, + (q31_t)0x79a776c, (q31_t)0x1e418528, (q31_t)0x7a06957, (q31_t)0x1e4c9760, + (q31_t)0x7a65d6e, (q31_t)0x1e57a86d, (q31_t)0x7ac53b1, (q31_t)0x1e62b84f, + (q31_t)0x7b24c20, (q31_t)0x1e6dc705, (q31_t)0x7b846ba, (q31_t)0x1e78d48e, + (q31_t)0x7be4381, (q31_t)0x1e83e0eb, (q31_t)0x7c44272, (q31_t)0x1e8eec1b, + (q31_t)0x7ca438f, (q31_t)0x1e99f61d, (q31_t)0x7d046d6, (q31_t)0x1ea4fef0, + (q31_t)0x7d64c47, (q31_t)0x1eb00696, (q31_t)0x7dc53e3, (q31_t)0x1ebb0d0d, + (q31_t)0x7e25daa, (q31_t)0x1ec61254, (q31_t)0x7e8699a, (q31_t)0x1ed1166b, + (q31_t)0x7ee77b3, (q31_t)0x1edc1953, (q31_t)0x7f487f6, (q31_t)0x1ee71b0a, + (q31_t)0x7fa9a62, (q31_t)0x1ef21b90, (q31_t)0x800aef7, (q31_t)0x1efd1ae4, + (q31_t)0x806c5b5, (q31_t)0x1f081907, (q31_t)0x80cde9b, (q31_t)0x1f1315f7, + (q31_t)0x812f9a9, (q31_t)0x1f1e11b5, (q31_t)0x81916df, (q31_t)0x1f290c3f, + (q31_t)0x81f363d, (q31_t)0x1f340596, (q31_t)0x82557c3, (q31_t)0x1f3efdb9, + (q31_t)0x82b7b70, (q31_t)0x1f49f4a8, (q31_t)0x831a143, (q31_t)0x1f54ea62, + (q31_t)0x837c93e, (q31_t)0x1f5fdee6, (q31_t)0x83df35f, (q31_t)0x1f6ad235, + (q31_t)0x8441fa6, (q31_t)0x1f75c44e, (q31_t)0x84a4e14, (q31_t)0x1f80b531, + (q31_t)0x8507ea7, (q31_t)0x1f8ba4dc, (q31_t)0x856b160, (q31_t)0x1f969350, + (q31_t)0x85ce63e, (q31_t)0x1fa1808c, (q31_t)0x8631d42, (q31_t)0x1fac6c91, + (q31_t)0x869566a, (q31_t)0x1fb7575c, (q31_t)0x86f91b7, (q31_t)0x1fc240ef, + (q31_t)0x875cf28, (q31_t)0x1fcd2948, (q31_t)0x87c0ebd, (q31_t)0x1fd81067, + (q31_t)0x8825077, (q31_t)0x1fe2f64c, (q31_t)0x8889454, (q31_t)0x1feddaf6, + (q31_t)0x88eda54, (q31_t)0x1ff8be65, (q31_t)0x8952278, (q31_t)0x2003a099, + (q31_t)0x89b6cbf, (q31_t)0x200e8190, (q31_t)0x8a1b928, (q31_t)0x2019614c, + (q31_t)0x8a807b4, (q31_t)0x20243fca, (q31_t)0x8ae5862, (q31_t)0x202f1d0b, + (q31_t)0x8b4ab32, (q31_t)0x2039f90f, (q31_t)0x8bb0023, (q31_t)0x2044d3d4, + (q31_t)0x8c15736, (q31_t)0x204fad5b, (q31_t)0x8c7b06b, (q31_t)0x205a85a3, + (q31_t)0x8ce0bc0, (q31_t)0x20655cac, (q31_t)0x8d46936, (q31_t)0x20703275, + (q31_t)0x8dac8cd, (q31_t)0x207b06fe, (q31_t)0x8e12a84, (q31_t)0x2085da46, + (q31_t)0x8e78e5b, (q31_t)0x2090ac4d, (q31_t)0x8edf452, (q31_t)0x209b7d13, + (q31_t)0x8f45c68, (q31_t)0x20a64c97, (q31_t)0x8fac69e, (q31_t)0x20b11ad9, + (q31_t)0x90132f2, (q31_t)0x20bbe7d8, (q31_t)0x907a166, (q31_t)0x20c6b395, + (q31_t)0x90e11f7, (q31_t)0x20d17e0d, (q31_t)0x91484a8, (q31_t)0x20dc4742, + (q31_t)0x91af976, (q31_t)0x20e70f32, (q31_t)0x9217062, (q31_t)0x20f1d5de, + (q31_t)0x927e96b, (q31_t)0x20fc9b44, (q31_t)0x92e6492, (q31_t)0x21075f65, + (q31_t)0x934e1d6, (q31_t)0x21122240, (q31_t)0x93b6137, (q31_t)0x211ce3d5, + (q31_t)0x941e2b4, (q31_t)0x2127a423, (q31_t)0x948664d, (q31_t)0x21326329, + (q31_t)0x94eec03, (q31_t)0x213d20e8, (q31_t)0x95573d4, (q31_t)0x2147dd5f, + (q31_t)0x95bfdc1, (q31_t)0x2152988d, (q31_t)0x96289c9, (q31_t)0x215d5273, + (q31_t)0x96917ec, (q31_t)0x21680b0f, (q31_t)0x96fa82a, (q31_t)0x2172c262, + (q31_t)0x9763a83, (q31_t)0x217d786a, (q31_t)0x97ccef5, (q31_t)0x21882d28, + (q31_t)0x9836582, (q31_t)0x2192e09b, (q31_t)0x989fe29, (q31_t)0x219d92c2, + (q31_t)0x99098e9, (q31_t)0x21a8439e, (q31_t)0x99735c2, (q31_t)0x21b2f32e, + (q31_t)0x99dd4b4, (q31_t)0x21bda171, (q31_t)0x9a475bf, (q31_t)0x21c84e67, + (q31_t)0x9ab18e3, (q31_t)0x21d2fa0f, (q31_t)0x9b1be1e, (q31_t)0x21dda46a, + (q31_t)0x9b86572, (q31_t)0x21e84d76, (q31_t)0x9bf0edd, (q31_t)0x21f2f534, + (q31_t)0x9c5ba60, (q31_t)0x21fd9ba3, (q31_t)0x9cc67fa, (q31_t)0x220840c2, + (q31_t)0x9d317ab, (q31_t)0x2212e492, (q31_t)0x9d9c973, (q31_t)0x221d8711, + (q31_t)0x9e07d51, (q31_t)0x2228283f, (q31_t)0x9e73346, (q31_t)0x2232c81c, + (q31_t)0x9edeb50, (q31_t)0x223d66a8, (q31_t)0x9f4a570, (q31_t)0x224803e2, + (q31_t)0x9fb61a5, (q31_t)0x22529fca, (q31_t)0xa021fef, (q31_t)0x225d3a5e, + (q31_t)0xa08e04f, (q31_t)0x2267d3a0, (q31_t)0xa0fa2c3, (q31_t)0x22726b8e, + (q31_t)0xa16674b, (q31_t)0x227d0228, (q31_t)0xa1d2de7, (q31_t)0x2287976e, + (q31_t)0xa23f698, (q31_t)0x22922b5e, (q31_t)0xa2ac15b, (q31_t)0x229cbdfa, + (q31_t)0xa318e32, (q31_t)0x22a74f40, (q31_t)0xa385d1d, (q31_t)0x22b1df30, + (q31_t)0xa3f2e19, (q31_t)0x22bc6dca, (q31_t)0xa460129, (q31_t)0x22c6fb0c, + (q31_t)0xa4cd64b, (q31_t)0x22d186f8, (q31_t)0xa53ad7e, (q31_t)0x22dc118c, + (q31_t)0xa5a86c4, (q31_t)0x22e69ac8, (q31_t)0xa61621b, (q31_t)0x22f122ab, + (q31_t)0xa683f83, (q31_t)0x22fba936, (q31_t)0xa6f1efc, (q31_t)0x23062e67, + (q31_t)0xa760086, (q31_t)0x2310b23e, (q31_t)0xa7ce420, (q31_t)0x231b34bc, + (q31_t)0xa83c9ca, (q31_t)0x2325b5df, (q31_t)0xa8ab184, (q31_t)0x233035a7, + (q31_t)0xa919b4e, (q31_t)0x233ab414, (q31_t)0xa988727, (q31_t)0x23453125, + (q31_t)0xa9f750f, (q31_t)0x234facda, (q31_t)0xaa66506, (q31_t)0x235a2733, + (q31_t)0xaad570c, (q31_t)0x2364a02e, (q31_t)0xab44b1f, (q31_t)0x236f17cc, + (q31_t)0xabb4141, (q31_t)0x23798e0d, (q31_t)0xac23971, (q31_t)0x238402ef, + (q31_t)0xac933ae, (q31_t)0x238e7673, (q31_t)0xad02ff8, (q31_t)0x2398e898, + (q31_t)0xad72e4f, (q31_t)0x23a3595e, (q31_t)0xade2eb3, (q31_t)0x23adc8c4, + (q31_t)0xae53123, (q31_t)0x23b836ca, (q31_t)0xaec35a0, (q31_t)0x23c2a36f, + (q31_t)0xaf33c28, (q31_t)0x23cd0eb3, (q31_t)0xafa44bc, (q31_t)0x23d77896, + (q31_t)0xb014f5b, (q31_t)0x23e1e117, (q31_t)0xb085c05, (q31_t)0x23ec4837, + (q31_t)0xb0f6aba, (q31_t)0x23f6adf3, (q31_t)0xb167b79, (q31_t)0x2401124d, + (q31_t)0xb1d8e43, (q31_t)0x240b7543, (q31_t)0xb24a316, (q31_t)0x2415d6d5, + (q31_t)0xb2bb9f4, (q31_t)0x24203704, (q31_t)0xb32d2da, (q31_t)0x242a95ce, + (q31_t)0xb39edca, (q31_t)0x2434f332, (q31_t)0xb410ac3, (q31_t)0x243f4f32, + (q31_t)0xb4829c4, (q31_t)0x2449a9cc, (q31_t)0xb4f4acd, (q31_t)0x245402ff, + (q31_t)0xb566ddf, (q31_t)0x245e5acc, (q31_t)0xb5d92f8, (q31_t)0x2468b132, + (q31_t)0xb64ba19, (q31_t)0x24730631, (q31_t)0xb6be341, (q31_t)0x247d59c8, + (q31_t)0xb730e70, (q31_t)0x2487abf7, (q31_t)0xb7a3ba5, (q31_t)0x2491fcbe, + (q31_t)0xb816ae1, (q31_t)0x249c4c1b, (q31_t)0xb889c23, (q31_t)0x24a69a0f, + (q31_t)0xb8fcf6b, (q31_t)0x24b0e699, (q31_t)0xb9704b9, (q31_t)0x24bb31ba, + (q31_t)0xb9e3c0b, (q31_t)0x24c57b6f, (q31_t)0xba57563, (q31_t)0x24cfc3ba, + (q31_t)0xbacb0bf, (q31_t)0x24da0a9a, (q31_t)0xbb3ee20, (q31_t)0x24e4500e, + (q31_t)0xbbb2d85, (q31_t)0x24ee9415, (q31_t)0xbc26eee, (q31_t)0x24f8d6b0, + (q31_t)0xbc9b25a, (q31_t)0x250317df, (q31_t)0xbd0f7ca, (q31_t)0x250d57a0, + (q31_t)0xbd83f3d, (q31_t)0x251795f3, (q31_t)0xbdf88b3, (q31_t)0x2521d2d8, + (q31_t)0xbe6d42b, (q31_t)0x252c0e4f, (q31_t)0xbee21a5, (q31_t)0x25364857, + (q31_t)0xbf57121, (q31_t)0x254080ef, (q31_t)0xbfcc29f, (q31_t)0x254ab818, + (q31_t)0xc04161e, (q31_t)0x2554edd1, (q31_t)0xc0b6b9e, (q31_t)0x255f2219, + (q31_t)0xc12c31f, (q31_t)0x256954f1, (q31_t)0xc1a1ca0, (q31_t)0x25738657, + (q31_t)0xc217822, (q31_t)0x257db64c, (q31_t)0xc28d5a3, (q31_t)0x2587e4cf, + (q31_t)0xc303524, (q31_t)0x259211df, (q31_t)0xc3796a5, (q31_t)0x259c3d7c, + (q31_t)0xc3efa25, (q31_t)0x25a667a7, (q31_t)0xc465fa3, (q31_t)0x25b0905d, + (q31_t)0xc4dc720, (q31_t)0x25bab7a0, (q31_t)0xc55309b, (q31_t)0x25c4dd6e, + (q31_t)0xc5c9c14, (q31_t)0x25cf01c8, (q31_t)0xc64098b, (q31_t)0x25d924ac, + (q31_t)0xc6b78ff, (q31_t)0x25e3461b, (q31_t)0xc72ea70, (q31_t)0x25ed6614, + (q31_t)0xc7a5dde, (q31_t)0x25f78497, (q31_t)0xc81d349, (q31_t)0x2601a1a2, + (q31_t)0xc894aaf, (q31_t)0x260bbd37, (q31_t)0xc90c412, (q31_t)0x2615d754, + (q31_t)0xc983f70, (q31_t)0x261feffa, (q31_t)0xc9fbcca, (q31_t)0x262a0727, + (q31_t)0xca73c1e, (q31_t)0x26341cdb, (q31_t)0xcaebd6e, (q31_t)0x263e3117, + (q31_t)0xcb640b8, (q31_t)0x264843d9, (q31_t)0xcbdc5fc, (q31_t)0x26525521, + (q31_t)0xcc54d3a, (q31_t)0x265c64ef, (q31_t)0xcccd671, (q31_t)0x26667342, + (q31_t)0xcd461a2, (q31_t)0x2670801a, (q31_t)0xcdbeecc, (q31_t)0x267a8b77, + (q31_t)0xce37def, (q31_t)0x26849558, (q31_t)0xceb0f0a, (q31_t)0x268e9dbd, + (q31_t)0xcf2a21d, (q31_t)0x2698a4a6, (q31_t)0xcfa3729, (q31_t)0x26a2aa11, + (q31_t)0xd01ce2b, (q31_t)0x26acadff, (q31_t)0xd096725, (q31_t)0x26b6b070, + (q31_t)0xd110216, (q31_t)0x26c0b162, (q31_t)0xd189efe, (q31_t)0x26cab0d6, + (q31_t)0xd203ddc, (q31_t)0x26d4aecb, (q31_t)0xd27deb0, (q31_t)0x26deab41, + (q31_t)0xd2f817b, (q31_t)0x26e8a637, (q31_t)0xd37263a, (q31_t)0x26f29fad, + (q31_t)0xd3eccef, (q31_t)0x26fc97a3, (q31_t)0xd467599, (q31_t)0x27068e18, + (q31_t)0xd4e2037, (q31_t)0x2710830c, (q31_t)0xd55ccca, (q31_t)0x271a767e, + (q31_t)0xd5d7b50, (q31_t)0x2724686e, (q31_t)0xd652bcb, (q31_t)0x272e58dc, + (q31_t)0xd6cde39, (q31_t)0x273847c8, (q31_t)0xd74929a, (q31_t)0x27423530, + (q31_t)0xd7c48ee, (q31_t)0x274c2115, (q31_t)0xd840134, (q31_t)0x27560b76, + (q31_t)0xd8bbb6d, (q31_t)0x275ff452, (q31_t)0xd937798, (q31_t)0x2769dbaa, + (q31_t)0xd9b35b4, (q31_t)0x2773c17d, (q31_t)0xda2f5c2, (q31_t)0x277da5cb, + (q31_t)0xdaab7c0, (q31_t)0x27878893, (q31_t)0xdb27bb0, (q31_t)0x279169d5, + (q31_t)0xdba4190, (q31_t)0x279b4990, (q31_t)0xdc20960, (q31_t)0x27a527c4, + (q31_t)0xdc9d320, (q31_t)0x27af0472, (q31_t)0xdd19ed0, (q31_t)0x27b8df97, + (q31_t)0xdd96c6f, (q31_t)0x27c2b934, (q31_t)0xde13bfd, (q31_t)0x27cc9149, + (q31_t)0xde90d79, (q31_t)0x27d667d5, (q31_t)0xdf0e0e4, (q31_t)0x27e03cd8, + (q31_t)0xdf8b63d, (q31_t)0x27ea1052, (q31_t)0xe008d84, (q31_t)0x27f3e241, + (q31_t)0xe0866b8, (q31_t)0x27fdb2a7, (q31_t)0xe1041d9, (q31_t)0x28078181, + (q31_t)0xe181ee8, (q31_t)0x28114ed0, (q31_t)0xe1ffde2, (q31_t)0x281b1a94, + (q31_t)0xe27dec9, (q31_t)0x2824e4cc, (q31_t)0xe2fc19c, (q31_t)0x282ead78, + (q31_t)0xe37a65b, (q31_t)0x28387498, (q31_t)0xe3f8d05, (q31_t)0x28423a2a, + (q31_t)0xe47759a, (q31_t)0x284bfe2f, (q31_t)0xe4f6019, (q31_t)0x2855c0a6, + (q31_t)0xe574c84, (q31_t)0x285f8190, (q31_t)0xe5f3ad8, (q31_t)0x286940ea, + (q31_t)0xe672b16, (q31_t)0x2872feb6, (q31_t)0xe6f1d3d, (q31_t)0x287cbaf3, + (q31_t)0xe77114e, (q31_t)0x288675a0, (q31_t)0xe7f0748, (q31_t)0x28902ebd, + (q31_t)0xe86ff2a, (q31_t)0x2899e64a, (q31_t)0xe8ef8f4, (q31_t)0x28a39c46, + (q31_t)0xe96f4a7, (q31_t)0x28ad50b1, (q31_t)0xe9ef241, (q31_t)0x28b7038b, + (q31_t)0xea6f1c2, (q31_t)0x28c0b4d2, (q31_t)0xeaef32b, (q31_t)0x28ca6488, + (q31_t)0xeb6f67a, (q31_t)0x28d412ab, (q31_t)0xebefbb0, (q31_t)0x28ddbf3b, + (q31_t)0xec702cb, (q31_t)0x28e76a37, (q31_t)0xecf0bcd, (q31_t)0x28f113a0, + (q31_t)0xed716b4, (q31_t)0x28fabb75, (q31_t)0xedf2380, (q31_t)0x290461b5, + (q31_t)0xee73231, (q31_t)0x290e0661, (q31_t)0xeef42c7, (q31_t)0x2917a977, + (q31_t)0xef75541, (q31_t)0x29214af8, (q31_t)0xeff699f, (q31_t)0x292aeae3, + (q31_t)0xf077fe1, (q31_t)0x29348937, (q31_t)0xf0f9805, (q31_t)0x293e25f5, + (q31_t)0xf17b20d, (q31_t)0x2947c11c, (q31_t)0xf1fcdf8, (q31_t)0x29515aab, + (q31_t)0xf27ebc5, (q31_t)0x295af2a3, (q31_t)0xf300b74, (q31_t)0x29648902, + (q31_t)0xf382d05, (q31_t)0x296e1dc9, (q31_t)0xf405077, (q31_t)0x2977b0f7, + (q31_t)0xf4875ca, (q31_t)0x2981428c, (q31_t)0xf509cfe, (q31_t)0x298ad287, + (q31_t)0xf58c613, (q31_t)0x299460e8, (q31_t)0xf60f108, (q31_t)0x299dedaf, + (q31_t)0xf691ddd, (q31_t)0x29a778db, (q31_t)0xf714c91, (q31_t)0x29b1026c, + (q31_t)0xf797d24, (q31_t)0x29ba8a61, (q31_t)0xf81af97, (q31_t)0x29c410ba, + (q31_t)0xf89e3e8, (q31_t)0x29cd9578, (q31_t)0xf921a17, (q31_t)0x29d71899, + (q31_t)0xf9a5225, (q31_t)0x29e09a1c, (q31_t)0xfa28c10, (q31_t)0x29ea1a03, + (q31_t)0xfaac7d8, (q31_t)0x29f3984c, (q31_t)0xfb3057d, (q31_t)0x29fd14f6, + (q31_t)0xfbb4500, (q31_t)0x2a069003, (q31_t)0xfc3865e, (q31_t)0x2a100970, + (q31_t)0xfcbc999, (q31_t)0x2a19813f, (q31_t)0xfd40eaf, (q31_t)0x2a22f76e, + (q31_t)0xfdc55a1, (q31_t)0x2a2c6bfd, (q31_t)0xfe49e6d, (q31_t)0x2a35deeb, + (q31_t)0xfece915, (q31_t)0x2a3f503a, (q31_t)0xff53597, (q31_t)0x2a48bfe7, + (q31_t)0xffd83f4, (q31_t)0x2a522df3, (q31_t)0x1005d42a, (q31_t)0x2a5b9a5d, + (q31_t)0x100e2639, (q31_t)0x2a650525, (q31_t)0x10167a22, (q31_t)0x2a6e6e4b, + (q31_t)0x101ecfe4, (q31_t)0x2a77d5ce, (q31_t)0x1027277e, (q31_t)0x2a813bae, + (q31_t)0x102f80f1, (q31_t)0x2a8a9fea, (q31_t)0x1037dc3b, (q31_t)0x2a940283, + (q31_t)0x1040395d, (q31_t)0x2a9d6377, (q31_t)0x10489856, (q31_t)0x2aa6c2c6, + (q31_t)0x1050f926, (q31_t)0x2ab02071, (q31_t)0x10595bcd, (q31_t)0x2ab97c77, + (q31_t)0x1061c04a, (q31_t)0x2ac2d6d6, (q31_t)0x106a269d, (q31_t)0x2acc2f90, + (q31_t)0x10728ec6, (q31_t)0x2ad586a3, (q31_t)0x107af8c4, (q31_t)0x2adedc10, + (q31_t)0x10836497, (q31_t)0x2ae82fd5, (q31_t)0x108bd23f, (q31_t)0x2af181f3, + (q31_t)0x109441bb, (q31_t)0x2afad269, (q31_t)0x109cb30b, (q31_t)0x2b042137, + (q31_t)0x10a5262f, (q31_t)0x2b0d6e5c, (q31_t)0x10ad9b26, (q31_t)0x2b16b9d9, + (q31_t)0x10b611f1, (q31_t)0x2b2003ac, (q31_t)0x10be8a8d, (q31_t)0x2b294bd5, + (q31_t)0x10c704fd, (q31_t)0x2b329255, (q31_t)0x10cf813e, (q31_t)0x2b3bd72a, + (q31_t)0x10d7ff51, (q31_t)0x2b451a55, (q31_t)0x10e07f36, (q31_t)0x2b4e5bd4, + (q31_t)0x10e900ec, (q31_t)0x2b579ba8, (q31_t)0x10f18472, (q31_t)0x2b60d9d0, + (q31_t)0x10fa09c9, (q31_t)0x2b6a164d, (q31_t)0x110290f0, (q31_t)0x2b73511c, + (q31_t)0x110b19e7, (q31_t)0x2b7c8a3f, (q31_t)0x1113a4ad, (q31_t)0x2b85c1b5, + (q31_t)0x111c3142, (q31_t)0x2b8ef77d, (q31_t)0x1124bfa6, (q31_t)0x2b982b97, + (q31_t)0x112d4fd9, (q31_t)0x2ba15e03, (q31_t)0x1135e1d9, (q31_t)0x2baa8ec0, + (q31_t)0x113e75a8, (q31_t)0x2bb3bdce, (q31_t)0x11470b44, (q31_t)0x2bbceb2d, + (q31_t)0x114fa2ad, (q31_t)0x2bc616dd, (q31_t)0x11583be2, (q31_t)0x2bcf40dc, + (q31_t)0x1160d6e5, (q31_t)0x2bd8692b, (q31_t)0x116973b3, (q31_t)0x2be18fc9, + (q31_t)0x1172124d, (q31_t)0x2beab4b6, (q31_t)0x117ab2b3, (q31_t)0x2bf3d7f2, + (q31_t)0x118354e4, (q31_t)0x2bfcf97c, (q31_t)0x118bf8e0, (q31_t)0x2c061953, + (q31_t)0x11949ea6, (q31_t)0x2c0f3779, (q31_t)0x119d4636, (q31_t)0x2c1853eb, + (q31_t)0x11a5ef90, (q31_t)0x2c216eaa, (q31_t)0x11ae9ab4, (q31_t)0x2c2a87b6, + (q31_t)0x11b747a0, (q31_t)0x2c339f0e, (q31_t)0x11bff656, (q31_t)0x2c3cb4b1, + (q31_t)0x11c8a6d4, (q31_t)0x2c45c8a0, (q31_t)0x11d1591a, (q31_t)0x2c4edada, + (q31_t)0x11da0d28, (q31_t)0x2c57eb5e, (q31_t)0x11e2c2fd, (q31_t)0x2c60fa2d, + (q31_t)0x11eb7a9a, (q31_t)0x2c6a0746, (q31_t)0x11f433fd, (q31_t)0x2c7312a9, + (q31_t)0x11fcef27, (q31_t)0x2c7c1c55, (q31_t)0x1205ac17, (q31_t)0x2c85244a, + (q31_t)0x120e6acc, (q31_t)0x2c8e2a87, (q31_t)0x12172b48, (q31_t)0x2c972f0d, + (q31_t)0x121fed88, (q31_t)0x2ca031da, (q31_t)0x1228b18d, (q31_t)0x2ca932ef, + (q31_t)0x12317756, (q31_t)0x2cb2324c, (q31_t)0x123a3ee4, (q31_t)0x2cbb2fef, + (q31_t)0x12430835, (q31_t)0x2cc42bd9, (q31_t)0x124bd34a, (q31_t)0x2ccd2609, + (q31_t)0x1254a021, (q31_t)0x2cd61e7f, (q31_t)0x125d6ebc, (q31_t)0x2cdf153a, + (q31_t)0x12663f19, (q31_t)0x2ce80a3a, (q31_t)0x126f1138, (q31_t)0x2cf0fd80, + (q31_t)0x1277e518, (q31_t)0x2cf9ef09, (q31_t)0x1280babb, (q31_t)0x2d02ded7, + (q31_t)0x1289921e, (q31_t)0x2d0bcce8, (q31_t)0x12926b41, (q31_t)0x2d14b93d, + (q31_t)0x129b4626, (q31_t)0x2d1da3d5, (q31_t)0x12a422ca, (q31_t)0x2d268cb0, + (q31_t)0x12ad012e, (q31_t)0x2d2f73cd, (q31_t)0x12b5e151, (q31_t)0x2d38592c, + (q31_t)0x12bec333, (q31_t)0x2d413ccd, (q31_t)0x12c7a6d4, (q31_t)0x2d4a1eaf, + (q31_t)0x12d08c33, (q31_t)0x2d52fed2, (q31_t)0x12d97350, (q31_t)0x2d5bdd36, + (q31_t)0x12e25c2b, (q31_t)0x2d64b9da, (q31_t)0x12eb46c3, (q31_t)0x2d6d94bf, + (q31_t)0x12f43318, (q31_t)0x2d766de2, (q31_t)0x12fd2129, (q31_t)0x2d7f4545, + (q31_t)0x130610f7, (q31_t)0x2d881ae8, (q31_t)0x130f0280, (q31_t)0x2d90eec8, + (q31_t)0x1317f5c6, (q31_t)0x2d99c0e7, (q31_t)0x1320eac6, (q31_t)0x2da29144, + (q31_t)0x1329e181, (q31_t)0x2dab5fdf, (q31_t)0x1332d9f7, (q31_t)0x2db42cb6, + (q31_t)0x133bd427, (q31_t)0x2dbcf7cb, (q31_t)0x1344d011, (q31_t)0x2dc5c11c, + (q31_t)0x134dcdb4, (q31_t)0x2dce88aa, (q31_t)0x1356cd11, (q31_t)0x2dd74e73, + (q31_t)0x135fce26, (q31_t)0x2de01278, (q31_t)0x1368d0f3, (q31_t)0x2de8d4b8, + (q31_t)0x1371d579, (q31_t)0x2df19534, (q31_t)0x137adbb6, (q31_t)0x2dfa53e9, + (q31_t)0x1383e3ab, (q31_t)0x2e0310d9, (q31_t)0x138ced57, (q31_t)0x2e0bcc03, + (q31_t)0x1395f8ba, (q31_t)0x2e148566, (q31_t)0x139f05d3, (q31_t)0x2e1d3d03, + (q31_t)0x13a814a2, (q31_t)0x2e25f2d8, (q31_t)0x13b12526, (q31_t)0x2e2ea6e6, + (q31_t)0x13ba3760, (q31_t)0x2e37592c, (q31_t)0x13c34b4f, (q31_t)0x2e4009aa, + (q31_t)0x13cc60f2, (q31_t)0x2e48b860, (q31_t)0x13d5784a, (q31_t)0x2e51654c, + (q31_t)0x13de9156, (q31_t)0x2e5a1070, (q31_t)0x13e7ac15, (q31_t)0x2e62b9ca, + (q31_t)0x13f0c887, (q31_t)0x2e6b615a, (q31_t)0x13f9e6ad, (q31_t)0x2e740720, + (q31_t)0x14030684, (q31_t)0x2e7cab1c, (q31_t)0x140c280e, (q31_t)0x2e854d4d, + (q31_t)0x14154b4a, (q31_t)0x2e8dedb3, (q31_t)0x141e7037, (q31_t)0x2e968c4d, + (q31_t)0x142796d5, (q31_t)0x2e9f291b, (q31_t)0x1430bf24, (q31_t)0x2ea7c41e, + (q31_t)0x1439e923, (q31_t)0x2eb05d53, (q31_t)0x144314d3, (q31_t)0x2eb8f4bc, + (q31_t)0x144c4232, (q31_t)0x2ec18a58, (q31_t)0x14557140, (q31_t)0x2eca1e27, + (q31_t)0x145ea1fd, (q31_t)0x2ed2b027, (q31_t)0x1467d469, (q31_t)0x2edb405a, + (q31_t)0x14710883, (q31_t)0x2ee3cebe, (q31_t)0x147a3e4b, (q31_t)0x2eec5b53, + (q31_t)0x148375c1, (q31_t)0x2ef4e619, (q31_t)0x148caee4, (q31_t)0x2efd6f10, + (q31_t)0x1495e9b3, (q31_t)0x2f05f637, (q31_t)0x149f2630, (q31_t)0x2f0e7b8e, + (q31_t)0x14a86458, (q31_t)0x2f16ff14, (q31_t)0x14b1a42c, (q31_t)0x2f1f80ca, + (q31_t)0x14bae5ab, (q31_t)0x2f2800af, (q31_t)0x14c428d6, (q31_t)0x2f307ec2, + (q31_t)0x14cd6dab, (q31_t)0x2f38fb03, (q31_t)0x14d6b42b, (q31_t)0x2f417573, + (q31_t)0x14dffc54, (q31_t)0x2f49ee0f, (q31_t)0x14e94627, (q31_t)0x2f5264da, + (q31_t)0x14f291a4, (q31_t)0x2f5ad9d1, (q31_t)0x14fbdec9, (q31_t)0x2f634cf5, + (q31_t)0x15052d97, (q31_t)0x2f6bbe45, (q31_t)0x150e7e0d, (q31_t)0x2f742dc1, + (q31_t)0x1517d02b, (q31_t)0x2f7c9b69, (q31_t)0x152123f0, (q31_t)0x2f85073c, + (q31_t)0x152a795d, (q31_t)0x2f8d713a, (q31_t)0x1533d070, (q31_t)0x2f95d963, + (q31_t)0x153d292a, (q31_t)0x2f9e3fb6, (q31_t)0x15468389, (q31_t)0x2fa6a433, + (q31_t)0x154fdf8f, (q31_t)0x2faf06da, (q31_t)0x15593d3a, (q31_t)0x2fb767aa, + (q31_t)0x15629c89, (q31_t)0x2fbfc6a3, (q31_t)0x156bfd7d, (q31_t)0x2fc823c5, + (q31_t)0x15756016, (q31_t)0x2fd07f0f, (q31_t)0x157ec452, (q31_t)0x2fd8d882, + (q31_t)0x15882a32, (q31_t)0x2fe1301c, (q31_t)0x159191b5, (q31_t)0x2fe985de, + (q31_t)0x159afadb, (q31_t)0x2ff1d9c7, (q31_t)0x15a465a3, (q31_t)0x2ffa2bd6, + (q31_t)0x15add20d, (q31_t)0x30027c0c, (q31_t)0x15b74019, (q31_t)0x300aca69, + (q31_t)0x15c0afc6, (q31_t)0x301316eb, (q31_t)0x15ca2115, (q31_t)0x301b6193, + (q31_t)0x15d39403, (q31_t)0x3023aa5f, (q31_t)0x15dd0892, (q31_t)0x302bf151, + (q31_t)0x15e67ec1, (q31_t)0x30343667, (q31_t)0x15eff690, (q31_t)0x303c79a2, + (q31_t)0x15f96ffd, (q31_t)0x3044bb00, (q31_t)0x1602eb0a, (q31_t)0x304cfa83, + (q31_t)0x160c67b4, (q31_t)0x30553828, (q31_t)0x1615e5fd, (q31_t)0x305d73f0, + (q31_t)0x161f65e4, (q31_t)0x3065addb, (q31_t)0x1628e767, (q31_t)0x306de5e9, + (q31_t)0x16326a88, (q31_t)0x30761c18, (q31_t)0x163bef46, (q31_t)0x307e5069, + (q31_t)0x1645759f, (q31_t)0x308682dc, (q31_t)0x164efd94, (q31_t)0x308eb36f, + (q31_t)0x16588725, (q31_t)0x3096e223, (q31_t)0x16621251, (q31_t)0x309f0ef8, + (q31_t)0x166b9f18, (q31_t)0x30a739ed, (q31_t)0x16752d79, (q31_t)0x30af6302, + (q31_t)0x167ebd74, (q31_t)0x30b78a36, (q31_t)0x16884f09, (q31_t)0x30bfaf89, + (q31_t)0x1691e237, (q31_t)0x30c7d2fb, (q31_t)0x169b76fe, (q31_t)0x30cff48c, + (q31_t)0x16a50d5d, (q31_t)0x30d8143b, (q31_t)0x16aea555, (q31_t)0x30e03208, + (q31_t)0x16b83ee4, (q31_t)0x30e84df3, (q31_t)0x16c1da0b, (q31_t)0x30f067fb, + (q31_t)0x16cb76c9, (q31_t)0x30f8801f, (q31_t)0x16d5151d, (q31_t)0x31009661, + (q31_t)0x16deb508, (q31_t)0x3108aabf, (q31_t)0x16e85689, (q31_t)0x3110bd39, + (q31_t)0x16f1f99f, (q31_t)0x3118cdcf, (q31_t)0x16fb9e4b, (q31_t)0x3120dc80, + (q31_t)0x1705448b, (q31_t)0x3128e94c, (q31_t)0x170eec60, (q31_t)0x3130f433, + (q31_t)0x171895c9, (q31_t)0x3138fd35, (q31_t)0x172240c5, (q31_t)0x31410450, + (q31_t)0x172bed55, (q31_t)0x31490986, (q31_t)0x17359b78, (q31_t)0x31510cd5, + (q31_t)0x173f4b2e, (q31_t)0x31590e3e, (q31_t)0x1748fc75, (q31_t)0x31610dbf, + (q31_t)0x1752af4f, (q31_t)0x31690b59, (q31_t)0x175c63ba, (q31_t)0x3171070c, + (q31_t)0x176619b6, (q31_t)0x317900d6, (q31_t)0x176fd143, (q31_t)0x3180f8b8, + (q31_t)0x17798a60, (q31_t)0x3188eeb2, (q31_t)0x1783450d, (q31_t)0x3190e2c3, + (q31_t)0x178d014a, (q31_t)0x3198d4ea, (q31_t)0x1796bf16, (q31_t)0x31a0c528, + (q31_t)0x17a07e70, (q31_t)0x31a8b37c, (q31_t)0x17aa3f5a, (q31_t)0x31b09fe7, + (q31_t)0x17b401d1, (q31_t)0x31b88a66, (q31_t)0x17bdc5d6, (q31_t)0x31c072fb, + (q31_t)0x17c78b68, (q31_t)0x31c859a5, (q31_t)0x17d15288, (q31_t)0x31d03e64, + (q31_t)0x17db1b34, (q31_t)0x31d82137, (q31_t)0x17e4e56c, (q31_t)0x31e0021e, + (q31_t)0x17eeb130, (q31_t)0x31e7e118, (q31_t)0x17f87e7f, (q31_t)0x31efbe27, + (q31_t)0x18024d59, (q31_t)0x31f79948, (q31_t)0x180c1dbf, (q31_t)0x31ff727c, + (q31_t)0x1815efae, (q31_t)0x320749c3, (q31_t)0x181fc328, (q31_t)0x320f1f1c, + (q31_t)0x1829982b, (q31_t)0x3216f287, (q31_t)0x18336eb7, (q31_t)0x321ec403, + (q31_t)0x183d46cc, (q31_t)0x32269391, (q31_t)0x18472069, (q31_t)0x322e6130, + (q31_t)0x1850fb8e, (q31_t)0x32362ce0, (q31_t)0x185ad83c, (q31_t)0x323df6a0, + (q31_t)0x1864b670, (q31_t)0x3245be70, (q31_t)0x186e962b, (q31_t)0x324d8450, + (q31_t)0x1878776d, (q31_t)0x32554840, (q31_t)0x18825a35, (q31_t)0x325d0a3e, + (q31_t)0x188c3e83, (q31_t)0x3264ca4c, (q31_t)0x18962456, (q31_t)0x326c8868, + (q31_t)0x18a00bae, (q31_t)0x32744493, (q31_t)0x18a9f48a, (q31_t)0x327bfecc, + (q31_t)0x18b3deeb, (q31_t)0x3283b712, (q31_t)0x18bdcad0, (q31_t)0x328b6d66, + (q31_t)0x18c7b838, (q31_t)0x329321c7, (q31_t)0x18d1a724, (q31_t)0x329ad435, + (q31_t)0x18db9792, (q31_t)0x32a284b0, (q31_t)0x18e58982, (q31_t)0x32aa3336, + (q31_t)0x18ef7cf4, (q31_t)0x32b1dfc9, (q31_t)0x18f971e8, (q31_t)0x32b98a67, + (q31_t)0x1903685d, (q31_t)0x32c13311, (q31_t)0x190d6053, (q31_t)0x32c8d9c6, + (q31_t)0x191759c9, (q31_t)0x32d07e85, (q31_t)0x192154bf, (q31_t)0x32d82150, + (q31_t)0x192b5135, (q31_t)0x32dfc224, (q31_t)0x19354f2a, (q31_t)0x32e76102, + (q31_t)0x193f4e9e, (q31_t)0x32eefdea, (q31_t)0x19494f90, (q31_t)0x32f698db, + (q31_t)0x19535201, (q31_t)0x32fe31d5, (q31_t)0x195d55ef, (q31_t)0x3305c8d7, + (q31_t)0x19675b5a, (q31_t)0x330d5de3, (q31_t)0x19716243, (q31_t)0x3314f0f6, + (q31_t)0x197b6aa8, (q31_t)0x331c8211, (q31_t)0x19857489, (q31_t)0x33241134, + (q31_t)0x198f7fe6, (q31_t)0x332b9e5e, (q31_t)0x19998cbe, (q31_t)0x3333298f, + (q31_t)0x19a39b11, (q31_t)0x333ab2c6, (q31_t)0x19adaadf, (q31_t)0x33423a04, + (q31_t)0x19b7bc27, (q31_t)0x3349bf48, (q31_t)0x19c1cee9, (q31_t)0x33514292, + (q31_t)0x19cbe325, (q31_t)0x3358c3e2, (q31_t)0x19d5f8d9, (q31_t)0x33604336, + (q31_t)0x19e01006, (q31_t)0x3367c090, (q31_t)0x19ea28ac, (q31_t)0x336f3bee, + (q31_t)0x19f442c9, (q31_t)0x3376b551, (q31_t)0x19fe5e5e, (q31_t)0x337e2cb7, + (q31_t)0x1a087b69, (q31_t)0x3385a222, (q31_t)0x1a1299ec, (q31_t)0x338d1590, + (q31_t)0x1a1cb9e5, (q31_t)0x33948701, (q31_t)0x1a26db54, (q31_t)0x339bf675, + (q31_t)0x1a30fe38, (q31_t)0x33a363ec, (q31_t)0x1a3b2292, (q31_t)0x33aacf65, + (q31_t)0x1a454860, (q31_t)0x33b238e0, (q31_t)0x1a4f6fa3, (q31_t)0x33b9a05d, + (q31_t)0x1a599859, (q31_t)0x33c105db, (q31_t)0x1a63c284, (q31_t)0x33c8695b, + (q31_t)0x1a6dee21, (q31_t)0x33cfcadc, (q31_t)0x1a781b31, (q31_t)0x33d72a5d, + (q31_t)0x1a8249b4, (q31_t)0x33de87de, (q31_t)0x1a8c79a9, (q31_t)0x33e5e360, + (q31_t)0x1a96ab0f, (q31_t)0x33ed3ce1, (q31_t)0x1aa0dde7, (q31_t)0x33f49462, + (q31_t)0x1aab122f, (q31_t)0x33fbe9e2, (q31_t)0x1ab547e8, (q31_t)0x34033d61, + (q31_t)0x1abf7f11, (q31_t)0x340a8edf, (q31_t)0x1ac9b7a9, (q31_t)0x3411de5b, + (q31_t)0x1ad3f1b1, (q31_t)0x34192bd5, (q31_t)0x1ade2d28, (q31_t)0x3420774d, + (q31_t)0x1ae86a0d, (q31_t)0x3427c0c3, (q31_t)0x1af2a860, (q31_t)0x342f0836, + (q31_t)0x1afce821, (q31_t)0x34364da6, (q31_t)0x1b072950, (q31_t)0x343d9112, + (q31_t)0x1b116beb, (q31_t)0x3444d27b, (q31_t)0x1b1baff2, (q31_t)0x344c11e0, + (q31_t)0x1b25f566, (q31_t)0x34534f41, (q31_t)0x1b303c46, (q31_t)0x345a8a9d, + (q31_t)0x1b3a8491, (q31_t)0x3461c3f5, (q31_t)0x1b44ce46, (q31_t)0x3468fb47, + (q31_t)0x1b4f1967, (q31_t)0x34703095, (q31_t)0x1b5965f1, (q31_t)0x347763dd, + (q31_t)0x1b63b3e5, (q31_t)0x347e951f, (q31_t)0x1b6e0342, (q31_t)0x3485c45b, + (q31_t)0x1b785409, (q31_t)0x348cf190, (q31_t)0x1b82a638, (q31_t)0x34941cbf, + (q31_t)0x1b8cf9cf, (q31_t)0x349b45e7, (q31_t)0x1b974ece, (q31_t)0x34a26d08, + (q31_t)0x1ba1a534, (q31_t)0x34a99221, (q31_t)0x1babfd01, (q31_t)0x34b0b533, + (q31_t)0x1bb65634, (q31_t)0x34b7d63c, (q31_t)0x1bc0b0ce, (q31_t)0x34bef53d, + (q31_t)0x1bcb0cce, (q31_t)0x34c61236, (q31_t)0x1bd56a32, (q31_t)0x34cd2d26, + (q31_t)0x1bdfc8fc, (q31_t)0x34d4460c, (q31_t)0x1bea292b, (q31_t)0x34db5cea, + (q31_t)0x1bf48abd, (q31_t)0x34e271bd, (q31_t)0x1bfeedb3, (q31_t)0x34e98487, + (q31_t)0x1c09520d, (q31_t)0x34f09546, (q31_t)0x1c13b7c9, (q31_t)0x34f7a3fb, + (q31_t)0x1c1e1ee9, (q31_t)0x34feb0a5, (q31_t)0x1c28876a, (q31_t)0x3505bb44, + (q31_t)0x1c32f14d, (q31_t)0x350cc3d8, (q31_t)0x1c3d5c91, (q31_t)0x3513ca60, + (q31_t)0x1c47c936, (q31_t)0x351acedd, (q31_t)0x1c52373c, (q31_t)0x3521d14d, + (q31_t)0x1c5ca6a2, (q31_t)0x3528d1b1, (q31_t)0x1c671768, (q31_t)0x352fd008, + (q31_t)0x1c71898d, (q31_t)0x3536cc52, (q31_t)0x1c7bfd11, (q31_t)0x353dc68f, + (q31_t)0x1c8671f3, (q31_t)0x3544bebf, (q31_t)0x1c90e834, (q31_t)0x354bb4e1, + (q31_t)0x1c9b5fd2, (q31_t)0x3552a8f4, (q31_t)0x1ca5d8cd, (q31_t)0x35599afa, + (q31_t)0x1cb05326, (q31_t)0x35608af1, (q31_t)0x1cbacedb, (q31_t)0x356778d9, + (q31_t)0x1cc54bec, (q31_t)0x356e64b2, (q31_t)0x1ccfca59, (q31_t)0x35754e7c, + (q31_t)0x1cda4a21, (q31_t)0x357c3636, (q31_t)0x1ce4cb44, (q31_t)0x35831be0, + (q31_t)0x1cef4dc2, (q31_t)0x3589ff7a, (q31_t)0x1cf9d199, (q31_t)0x3590e104, + (q31_t)0x1d0456ca, (q31_t)0x3597c07d, (q31_t)0x1d0edd55, (q31_t)0x359e9de5, + (q31_t)0x1d196538, (q31_t)0x35a5793c, (q31_t)0x1d23ee74, (q31_t)0x35ac5282, + (q31_t)0x1d2e7908, (q31_t)0x35b329b5, (q31_t)0x1d3904f4, (q31_t)0x35b9fed7, + (q31_t)0x1d439236, (q31_t)0x35c0d1e7, (q31_t)0x1d4e20d0, (q31_t)0x35c7a2e3, + (q31_t)0x1d58b0c0, (q31_t)0x35ce71ce, (q31_t)0x1d634206, (q31_t)0x35d53ea5, + (q31_t)0x1d6dd4a2, (q31_t)0x35dc0968, (q31_t)0x1d786892, (q31_t)0x35e2d219, + (q31_t)0x1d82fdd8, (q31_t)0x35e998b5, (q31_t)0x1d8d9472, (q31_t)0x35f05d3d, + (q31_t)0x1d982c60, (q31_t)0x35f71fb1, (q31_t)0x1da2c5a2, (q31_t)0x35fde011, + (q31_t)0x1dad6036, (q31_t)0x36049e5b, (q31_t)0x1db7fc1e, (q31_t)0x360b5a90, + (q31_t)0x1dc29958, (q31_t)0x361214b0, (q31_t)0x1dcd37e4, (q31_t)0x3618ccba, + (q31_t)0x1dd7d7c1, (q31_t)0x361f82af, (q31_t)0x1de278ef, (q31_t)0x3626368d, + (q31_t)0x1ded1b6e, (q31_t)0x362ce855, (q31_t)0x1df7bf3e, (q31_t)0x36339806, + (q31_t)0x1e02645d, (q31_t)0x363a45a0, (q31_t)0x1e0d0acc, (q31_t)0x3640f123, + (q31_t)0x1e17b28a, (q31_t)0x36479a8e, (q31_t)0x1e225b96, (q31_t)0x364e41e2, + (q31_t)0x1e2d05f1, (q31_t)0x3654e71d, (q31_t)0x1e37b199, (q31_t)0x365b8a41, + (q31_t)0x1e425e8f, (q31_t)0x36622b4c, (q31_t)0x1e4d0cd2, (q31_t)0x3668ca3e, + (q31_t)0x1e57bc62, (q31_t)0x366f6717, (q31_t)0x1e626d3e, (q31_t)0x367601d7, + (q31_t)0x1e6d1f65, (q31_t)0x367c9a7e, (q31_t)0x1e77d2d8, (q31_t)0x3683310b, + (q31_t)0x1e828796, (q31_t)0x3689c57d, (q31_t)0x1e8d3d9e, (q31_t)0x369057d6, + (q31_t)0x1e97f4f1, (q31_t)0x3696e814, (q31_t)0x1ea2ad8d, (q31_t)0x369d7637, + (q31_t)0x1ead6773, (q31_t)0x36a4023f, (q31_t)0x1eb822a1, (q31_t)0x36aa8c2c, + (q31_t)0x1ec2df18, (q31_t)0x36b113fd, (q31_t)0x1ecd9cd7, (q31_t)0x36b799b3, + (q31_t)0x1ed85bdd, (q31_t)0x36be1d4c, (q31_t)0x1ee31c2b, (q31_t)0x36c49ec9, + (q31_t)0x1eedddc0, (q31_t)0x36cb1e2a, (q31_t)0x1ef8a09b, (q31_t)0x36d19b6e, + (q31_t)0x1f0364bc, (q31_t)0x36d81695, (q31_t)0x1f0e2a22, (q31_t)0x36de8f9e, + (q31_t)0x1f18f0ce, (q31_t)0x36e5068a, (q31_t)0x1f23b8be, (q31_t)0x36eb7b58, + (q31_t)0x1f2e81f3, (q31_t)0x36f1ee09, (q31_t)0x1f394c6b, (q31_t)0x36f85e9a, + (q31_t)0x1f441828, (q31_t)0x36fecd0e, (q31_t)0x1f4ee527, (q31_t)0x37053962, + (q31_t)0x1f59b369, (q31_t)0x370ba398, (q31_t)0x1f6482ed, (q31_t)0x37120bae, + (q31_t)0x1f6f53b3, (q31_t)0x371871a5, (q31_t)0x1f7a25ba, (q31_t)0x371ed57c, + (q31_t)0x1f84f902, (q31_t)0x37253733, (q31_t)0x1f8fcd8b, (q31_t)0x372b96ca, + (q31_t)0x1f9aa354, (q31_t)0x3731f440, (q31_t)0x1fa57a5d, (q31_t)0x37384f95, + (q31_t)0x1fb052a5, (q31_t)0x373ea8ca, (q31_t)0x1fbb2c2c, (q31_t)0x3744ffdd, + (q31_t)0x1fc606f1, (q31_t)0x374b54ce, (q31_t)0x1fd0e2f5, (q31_t)0x3751a79e, + (q31_t)0x1fdbc036, (q31_t)0x3757f84c, (q31_t)0x1fe69eb4, (q31_t)0x375e46d8, + (q31_t)0x1ff17e70, (q31_t)0x37649341, (q31_t)0x1ffc5f67, (q31_t)0x376add88, + (q31_t)0x2007419b, (q31_t)0x377125ac, (q31_t)0x2012250a, (q31_t)0x37776bac, + (q31_t)0x201d09b4, (q31_t)0x377daf89, (q31_t)0x2027ef99, (q31_t)0x3783f143, + (q31_t)0x2032d6b8, (q31_t)0x378a30d8, (q31_t)0x203dbf11, (q31_t)0x37906e49, + (q31_t)0x2048a8a4, (q31_t)0x3796a996, (q31_t)0x2053936f, (q31_t)0x379ce2be, + (q31_t)0x205e7f74, (q31_t)0x37a319c2, (q31_t)0x20696cb0, (q31_t)0x37a94ea0, + (q31_t)0x20745b24, (q31_t)0x37af8159, (q31_t)0x207f4acf, (q31_t)0x37b5b1ec, + (q31_t)0x208a3bb2, (q31_t)0x37bbe05a, (q31_t)0x20952dcb, (q31_t)0x37c20ca1, + (q31_t)0x20a0211a, (q31_t)0x37c836c2, (q31_t)0x20ab159e, (q31_t)0x37ce5ebd, + (q31_t)0x20b60b58, (q31_t)0x37d48490, (q31_t)0x20c10247, (q31_t)0x37daa83d, + (q31_t)0x20cbfa6a, (q31_t)0x37e0c9c3, (q31_t)0x20d6f3c1, (q31_t)0x37e6e921, + (q31_t)0x20e1ee4b, (q31_t)0x37ed0657, (q31_t)0x20ecea09, (q31_t)0x37f32165, + (q31_t)0x20f7e6f9, (q31_t)0x37f93a4b, (q31_t)0x2102e51c, (q31_t)0x37ff5109, + (q31_t)0x210de470, (q31_t)0x3805659e, (q31_t)0x2118e4f6, (q31_t)0x380b780a, + (q31_t)0x2123e6ad, (q31_t)0x3811884d, (q31_t)0x212ee995, (q31_t)0x38179666, + (q31_t)0x2139edac, (q31_t)0x381da256, (q31_t)0x2144f2f3, (q31_t)0x3823ac1d, + (q31_t)0x214ff96a, (q31_t)0x3829b3b9, (q31_t)0x215b0110, (q31_t)0x382fb92a, + (q31_t)0x216609e3, (q31_t)0x3835bc71, (q31_t)0x217113e5, (q31_t)0x383bbd8e, + (q31_t)0x217c1f15, (q31_t)0x3841bc7f, (q31_t)0x21872b72, (q31_t)0x3847b946, + (q31_t)0x219238fb, (q31_t)0x384db3e0, (q31_t)0x219d47b1, (q31_t)0x3853ac4f, + (q31_t)0x21a85793, (q31_t)0x3859a292, (q31_t)0x21b368a0, (q31_t)0x385f96a9, + (q31_t)0x21be7ad8, (q31_t)0x38658894, (q31_t)0x21c98e3b, (q31_t)0x386b7852, + (q31_t)0x21d4a2c8, (q31_t)0x387165e3, (q31_t)0x21dfb87f, (q31_t)0x38775147, + (q31_t)0x21eacf5f, (q31_t)0x387d3a7e, (q31_t)0x21f5e768, (q31_t)0x38832187, + (q31_t)0x22010099, (q31_t)0x38890663, (q31_t)0x220c1af3, (q31_t)0x388ee910, + (q31_t)0x22173674, (q31_t)0x3894c98f, (q31_t)0x2222531c, (q31_t)0x389aa7e0, + (q31_t)0x222d70eb, (q31_t)0x38a08402, (q31_t)0x22388fe1, (q31_t)0x38a65df6, + (q31_t)0x2243affc, (q31_t)0x38ac35ba, (q31_t)0x224ed13d, (q31_t)0x38b20b4f, + (q31_t)0x2259f3a3, (q31_t)0x38b7deb4, (q31_t)0x2265172e, (q31_t)0x38bdafea, + (q31_t)0x22703bdc, (q31_t)0x38c37eef, (q31_t)0x227b61af, (q31_t)0x38c94bc4, + (q31_t)0x228688a4, (q31_t)0x38cf1669, (q31_t)0x2291b0bd, (q31_t)0x38d4dedd, + (q31_t)0x229cd9f8, (q31_t)0x38daa520, (q31_t)0x22a80456, (q31_t)0x38e06932, + (q31_t)0x22b32fd4, (q31_t)0x38e62b13, (q31_t)0x22be5c74, (q31_t)0x38ebeac2, + (q31_t)0x22c98a35, (q31_t)0x38f1a840, (q31_t)0x22d4b916, (q31_t)0x38f7638b, + (q31_t)0x22dfe917, (q31_t)0x38fd1ca4, (q31_t)0x22eb1a37, (q31_t)0x3902d38b, + (q31_t)0x22f64c77, (q31_t)0x3908883f, (q31_t)0x23017fd5, (q31_t)0x390e3ac0, + (q31_t)0x230cb451, (q31_t)0x3913eb0e, (q31_t)0x2317e9eb, (q31_t)0x39199929, + (q31_t)0x232320a2, (q31_t)0x391f4510, (q31_t)0x232e5876, (q31_t)0x3924eec3, + (q31_t)0x23399167, (q31_t)0x392a9642, (q31_t)0x2344cb73, (q31_t)0x39303b8e, + (q31_t)0x2350069b, (q31_t)0x3935dea4, (q31_t)0x235b42df, (q31_t)0x393b7f86, + (q31_t)0x2366803c, (q31_t)0x39411e33, (q31_t)0x2371beb5, (q31_t)0x3946baac, + (q31_t)0x237cfe47, (q31_t)0x394c54ee, (q31_t)0x23883ef2, (q31_t)0x3951ecfc, + (q31_t)0x239380b6, (q31_t)0x395782d3, (q31_t)0x239ec393, (q31_t)0x395d1675, + (q31_t)0x23aa0788, (q31_t)0x3962a7e0, (q31_t)0x23b54c95, (q31_t)0x39683715, + (q31_t)0x23c092b9, (q31_t)0x396dc414, (q31_t)0x23cbd9f4, (q31_t)0x39734edc, + (q31_t)0x23d72245, (q31_t)0x3978d76c, (q31_t)0x23e26bac, (q31_t)0x397e5dc6, + (q31_t)0x23edb628, (q31_t)0x3983e1e8, (q31_t)0x23f901ba, (q31_t)0x398963d2, + (q31_t)0x24044e60, (q31_t)0x398ee385, (q31_t)0x240f9c1a, (q31_t)0x399460ff, + (q31_t)0x241aeae8, (q31_t)0x3999dc42, (q31_t)0x24263ac9, (q31_t)0x399f554b, + (q31_t)0x24318bbe, (q31_t)0x39a4cc1c, (q31_t)0x243cddc4, (q31_t)0x39aa40b4, + (q31_t)0x244830dd, (q31_t)0x39afb313, (q31_t)0x24538507, (q31_t)0x39b52339, + (q31_t)0x245eda43, (q31_t)0x39ba9125, (q31_t)0x246a308f, (q31_t)0x39bffcd7, + (q31_t)0x247587eb, (q31_t)0x39c5664f, (q31_t)0x2480e057, (q31_t)0x39cacd8d, + (q31_t)0x248c39d3, (q31_t)0x39d03291, (q31_t)0x2497945d, (q31_t)0x39d5955a, + (q31_t)0x24a2eff6, (q31_t)0x39daf5e8, (q31_t)0x24ae4c9d, (q31_t)0x39e0543c, + (q31_t)0x24b9aa52, (q31_t)0x39e5b054, (q31_t)0x24c50914, (q31_t)0x39eb0a31, + (q31_t)0x24d068e2, (q31_t)0x39f061d2, (q31_t)0x24dbc9bd, (q31_t)0x39f5b737, + (q31_t)0x24e72ba4, (q31_t)0x39fb0a60, (q31_t)0x24f28e96, (q31_t)0x3a005b4d, + (q31_t)0x24fdf294, (q31_t)0x3a05a9fd, (q31_t)0x2509579b, (q31_t)0x3a0af671, + (q31_t)0x2514bdad, (q31_t)0x3a1040a8, (q31_t)0x252024c9, (q31_t)0x3a1588a2, + (q31_t)0x252b8cee, (q31_t)0x3a1ace5f, (q31_t)0x2536f61b, (q31_t)0x3a2011de, + (q31_t)0x25426051, (q31_t)0x3a25531f, (q31_t)0x254dcb8f, (q31_t)0x3a2a9223, + (q31_t)0x255937d5, (q31_t)0x3a2fcee8, (q31_t)0x2564a521, (q31_t)0x3a350970, + (q31_t)0x25701374, (q31_t)0x3a3a41b9, (q31_t)0x257b82cd, (q31_t)0x3a3f77c3, + (q31_t)0x2586f32c, (q31_t)0x3a44ab8e, (q31_t)0x25926490, (q31_t)0x3a49dd1a, + (q31_t)0x259dd6f9, (q31_t)0x3a4f0c67, (q31_t)0x25a94a67, (q31_t)0x3a543974, + (q31_t)0x25b4bed8, (q31_t)0x3a596442, (q31_t)0x25c0344d, (q31_t)0x3a5e8cd0, + (q31_t)0x25cbaac5, (q31_t)0x3a63b31d, (q31_t)0x25d72240, (q31_t)0x3a68d72b, + (q31_t)0x25e29abc, (q31_t)0x3a6df8f8, (q31_t)0x25ee143b, (q31_t)0x3a731884, + (q31_t)0x25f98ebb, (q31_t)0x3a7835cf, (q31_t)0x26050a3b, (q31_t)0x3a7d50da, + (q31_t)0x261086bc, (q31_t)0x3a8269a3, (q31_t)0x261c043d, (q31_t)0x3a87802a, + (q31_t)0x262782be, (q31_t)0x3a8c9470, (q31_t)0x2633023e, (q31_t)0x3a91a674, + (q31_t)0x263e82bc, (q31_t)0x3a96b636, (q31_t)0x264a0438, (q31_t)0x3a9bc3b6, + (q31_t)0x265586b3, (q31_t)0x3aa0cef3, (q31_t)0x26610a2a, (q31_t)0x3aa5d7ee, + (q31_t)0x266c8e9f, (q31_t)0x3aaadea6, (q31_t)0x26781410, (q31_t)0x3aafe31b, + (q31_t)0x26839a7c, (q31_t)0x3ab4e54c, (q31_t)0x268f21e5, (q31_t)0x3ab9e53a, + (q31_t)0x269aaa48, (q31_t)0x3abee2e5, (q31_t)0x26a633a6, (q31_t)0x3ac3de4c, + (q31_t)0x26b1bdff, (q31_t)0x3ac8d76f, (q31_t)0x26bd4951, (q31_t)0x3acdce4d, + (q31_t)0x26c8d59c, (q31_t)0x3ad2c2e8, (q31_t)0x26d462e1, (q31_t)0x3ad7b53d, + (q31_t)0x26dff11d, (q31_t)0x3adca54e, (q31_t)0x26eb8052, (q31_t)0x3ae1931a, + (q31_t)0x26f7107e, (q31_t)0x3ae67ea1, (q31_t)0x2702a1a1, (q31_t)0x3aeb67e3, + (q31_t)0x270e33bb, (q31_t)0x3af04edf, (q31_t)0x2719c6cb, (q31_t)0x3af53395, + (q31_t)0x27255ad1, (q31_t)0x3afa1605, (q31_t)0x2730efcc, (q31_t)0x3afef630, + (q31_t)0x273c85bc, (q31_t)0x3b03d414, (q31_t)0x27481ca1, (q31_t)0x3b08afb2, + (q31_t)0x2753b479, (q31_t)0x3b0d8909, (q31_t)0x275f4d45, (q31_t)0x3b126019, + (q31_t)0x276ae704, (q31_t)0x3b1734e2, (q31_t)0x277681b6, (q31_t)0x3b1c0764, + (q31_t)0x27821d59, (q31_t)0x3b20d79e, (q31_t)0x278db9ef, (q31_t)0x3b25a591, + (q31_t)0x27995776, (q31_t)0x3b2a713d, (q31_t)0x27a4f5ed, (q31_t)0x3b2f3aa0, + (q31_t)0x27b09555, (q31_t)0x3b3401bb, (q31_t)0x27bc35ad, (q31_t)0x3b38c68e, + (q31_t)0x27c7d6f4, (q31_t)0x3b3d8918, (q31_t)0x27d3792b, (q31_t)0x3b42495a, + (q31_t)0x27df1c50, (q31_t)0x3b470753, (q31_t)0x27eac063, (q31_t)0x3b4bc303, + (q31_t)0x27f66564, (q31_t)0x3b507c69, (q31_t)0x28020b52, (q31_t)0x3b553386, + (q31_t)0x280db22d, (q31_t)0x3b59e85a, (q31_t)0x281959f4, (q31_t)0x3b5e9ae4, + (q31_t)0x282502a7, (q31_t)0x3b634b23, (q31_t)0x2830ac45, (q31_t)0x3b67f919, + (q31_t)0x283c56cf, (q31_t)0x3b6ca4c4, (q31_t)0x28480243, (q31_t)0x3b714e25, + (q31_t)0x2853aea1, (q31_t)0x3b75f53c, (q31_t)0x285f5be9, (q31_t)0x3b7a9a07, + (q31_t)0x286b0a1a, (q31_t)0x3b7f3c87, (q31_t)0x2876b934, (q31_t)0x3b83dcbc, + (q31_t)0x28826936, (q31_t)0x3b887aa6, (q31_t)0x288e1a20, (q31_t)0x3b8d1644, + (q31_t)0x2899cbf1, (q31_t)0x3b91af97, (q31_t)0x28a57ea9, (q31_t)0x3b96469d, + (q31_t)0x28b13248, (q31_t)0x3b9adb57, (q31_t)0x28bce6cd, (q31_t)0x3b9f6dc5, + (q31_t)0x28c89c37, (q31_t)0x3ba3fde7, (q31_t)0x28d45286, (q31_t)0x3ba88bbc, + (q31_t)0x28e009ba, (q31_t)0x3bad1744, (q31_t)0x28ebc1d3, (q31_t)0x3bb1a080, + (q31_t)0x28f77acf, (q31_t)0x3bb6276e, (q31_t)0x290334af, (q31_t)0x3bbaac0e, + (q31_t)0x290eef71, (q31_t)0x3bbf2e62, (q31_t)0x291aab16, (q31_t)0x3bc3ae67, + (q31_t)0x2926679c, (q31_t)0x3bc82c1f, (q31_t)0x29322505, (q31_t)0x3bcca789, + (q31_t)0x293de34e, (q31_t)0x3bd120a4, (q31_t)0x2949a278, (q31_t)0x3bd59771, + (q31_t)0x29556282, (q31_t)0x3bda0bf0, (q31_t)0x2961236c, (q31_t)0x3bde7e20, + (q31_t)0x296ce535, (q31_t)0x3be2ee01, (q31_t)0x2978a7dd, (q31_t)0x3be75b93, + (q31_t)0x29846b63, (q31_t)0x3bebc6d5, (q31_t)0x29902fc7, (q31_t)0x3bf02fc9, + (q31_t)0x299bf509, (q31_t)0x3bf4966c, (q31_t)0x29a7bb28, (q31_t)0x3bf8fac0, + (q31_t)0x29b38223, (q31_t)0x3bfd5cc4, (q31_t)0x29bf49fa, (q31_t)0x3c01bc78, + (q31_t)0x29cb12ad, (q31_t)0x3c0619dc, (q31_t)0x29d6dc3b, (q31_t)0x3c0a74f0, + (q31_t)0x29e2a6a3, (q31_t)0x3c0ecdb2, (q31_t)0x29ee71e6, (q31_t)0x3c132424, + (q31_t)0x29fa3e03, (q31_t)0x3c177845, (q31_t)0x2a060af9, (q31_t)0x3c1bca16, + (q31_t)0x2a11d8c8, (q31_t)0x3c201994, (q31_t)0x2a1da770, (q31_t)0x3c2466c2, + (q31_t)0x2a2976ef, (q31_t)0x3c28b19e, (q31_t)0x2a354746, (q31_t)0x3c2cfa28, + (q31_t)0x2a411874, (q31_t)0x3c314060, (q31_t)0x2a4cea79, (q31_t)0x3c358446, + (q31_t)0x2a58bd54, (q31_t)0x3c39c5da, (q31_t)0x2a649105, (q31_t)0x3c3e051b, + (q31_t)0x2a70658a, (q31_t)0x3c42420a, (q31_t)0x2a7c3ae5, (q31_t)0x3c467ca6, + (q31_t)0x2a881114, (q31_t)0x3c4ab4ef, (q31_t)0x2a93e817, (q31_t)0x3c4eeae5, + (q31_t)0x2a9fbfed, (q31_t)0x3c531e88, (q31_t)0x2aab9896, (q31_t)0x3c574fd8, + (q31_t)0x2ab77212, (q31_t)0x3c5b7ed4, (q31_t)0x2ac34c60, (q31_t)0x3c5fab7c, + (q31_t)0x2acf277f, (q31_t)0x3c63d5d1, (q31_t)0x2adb0370, (q31_t)0x3c67fdd1, + (q31_t)0x2ae6e031, (q31_t)0x3c6c237e, (q31_t)0x2af2bdc3, (q31_t)0x3c7046d6, + (q31_t)0x2afe9c24, (q31_t)0x3c7467d9, (q31_t)0x2b0a7b54, (q31_t)0x3c788688, + (q31_t)0x2b165b54, (q31_t)0x3c7ca2e2, (q31_t)0x2b223c22, (q31_t)0x3c80bce7, + (q31_t)0x2b2e1dbe, (q31_t)0x3c84d496, (q31_t)0x2b3a0027, (q31_t)0x3c88e9f1, + (q31_t)0x2b45e35d, (q31_t)0x3c8cfcf6, (q31_t)0x2b51c760, (q31_t)0x3c910da5, + (q31_t)0x2b5dac2f, (q31_t)0x3c951bff, (q31_t)0x2b6991ca, (q31_t)0x3c992803, + (q31_t)0x2b75782f, (q31_t)0x3c9d31b0, (q31_t)0x2b815f60, (q31_t)0x3ca13908, + (q31_t)0x2b8d475b, (q31_t)0x3ca53e09, (q31_t)0x2b99301f, (q31_t)0x3ca940b3, + (q31_t)0x2ba519ad, (q31_t)0x3cad4107, (q31_t)0x2bb10404, (q31_t)0x3cb13f04, + (q31_t)0x2bbcef23, (q31_t)0x3cb53aaa, (q31_t)0x2bc8db0b, (q31_t)0x3cb933f9, + (q31_t)0x2bd4c7ba, (q31_t)0x3cbd2af0, (q31_t)0x2be0b52f, (q31_t)0x3cc11f90, + (q31_t)0x2beca36c, (q31_t)0x3cc511d9, (q31_t)0x2bf8926f, (q31_t)0x3cc901c9, + (q31_t)0x2c048237, (q31_t)0x3cccef62, (q31_t)0x2c1072c4, (q31_t)0x3cd0daa2, + (q31_t)0x2c1c6417, (q31_t)0x3cd4c38b, (q31_t)0x2c28562d, (q31_t)0x3cd8aa1b, + (q31_t)0x2c344908, (q31_t)0x3cdc8e52, (q31_t)0x2c403ca5, (q31_t)0x3ce07031, + (q31_t)0x2c4c3106, (q31_t)0x3ce44fb7, (q31_t)0x2c582629, (q31_t)0x3ce82ce4, + (q31_t)0x2c641c0e, (q31_t)0x3cec07b8, (q31_t)0x2c7012b5, (q31_t)0x3cefe032, + (q31_t)0x2c7c0a1d, (q31_t)0x3cf3b653, (q31_t)0x2c880245, (q31_t)0x3cf78a1b, + (q31_t)0x2c93fb2e, (q31_t)0x3cfb5b89, (q31_t)0x2c9ff4d6, (q31_t)0x3cff2a9d, + (q31_t)0x2cabef3d, (q31_t)0x3d02f757, (q31_t)0x2cb7ea63, (q31_t)0x3d06c1b6, + (q31_t)0x2cc3e648, (q31_t)0x3d0a89bc, (q31_t)0x2ccfe2ea, (q31_t)0x3d0e4f67, + (q31_t)0x2cdbe04a, (q31_t)0x3d1212b7, (q31_t)0x2ce7de66, (q31_t)0x3d15d3ad, + (q31_t)0x2cf3dd3f, (q31_t)0x3d199248, (q31_t)0x2cffdcd4, (q31_t)0x3d1d4e88, + (q31_t)0x2d0bdd25, (q31_t)0x3d21086c, (q31_t)0x2d17de31, (q31_t)0x3d24bff6, + (q31_t)0x2d23dff7, (q31_t)0x3d287523, (q31_t)0x2d2fe277, (q31_t)0x3d2c27f6, + (q31_t)0x2d3be5b1, (q31_t)0x3d2fd86c, (q31_t)0x2d47e9a5, (q31_t)0x3d338687, + (q31_t)0x2d53ee51, (q31_t)0x3d373245, (q31_t)0x2d5ff3b5, (q31_t)0x3d3adba7, + (q31_t)0x2d6bf9d1, (q31_t)0x3d3e82ae, (q31_t)0x2d7800a5, (q31_t)0x3d422757, + (q31_t)0x2d84082f, (q31_t)0x3d45c9a4, (q31_t)0x2d901070, (q31_t)0x3d496994, + (q31_t)0x2d9c1967, (q31_t)0x3d4d0728, (q31_t)0x2da82313, (q31_t)0x3d50a25e, + (q31_t)0x2db42d74, (q31_t)0x3d543b37, (q31_t)0x2dc0388a, (q31_t)0x3d57d1b3, + (q31_t)0x2dcc4454, (q31_t)0x3d5b65d2, (q31_t)0x2dd850d2, (q31_t)0x3d5ef793, + (q31_t)0x2de45e03, (q31_t)0x3d6286f6, (q31_t)0x2df06be6, (q31_t)0x3d6613fb, + (q31_t)0x2dfc7a7c, (q31_t)0x3d699ea3, (q31_t)0x2e0889c4, (q31_t)0x3d6d26ec, + (q31_t)0x2e1499bd, (q31_t)0x3d70acd7, (q31_t)0x2e20aa67, (q31_t)0x3d743064, + (q31_t)0x2e2cbbc1, (q31_t)0x3d77b192, (q31_t)0x2e38cdcb, (q31_t)0x3d7b3061, + (q31_t)0x2e44e084, (q31_t)0x3d7eacd2, (q31_t)0x2e50f3ed, (q31_t)0x3d8226e4, + (q31_t)0x2e5d0804, (q31_t)0x3d859e96, (q31_t)0x2e691cc9, (q31_t)0x3d8913ea, + (q31_t)0x2e75323c, (q31_t)0x3d8c86de, (q31_t)0x2e81485c, (q31_t)0x3d8ff772, + (q31_t)0x2e8d5f29, (q31_t)0x3d9365a8, (q31_t)0x2e9976a1, (q31_t)0x3d96d17d, + (q31_t)0x2ea58ec6, (q31_t)0x3d9a3af2, (q31_t)0x2eb1a796, (q31_t)0x3d9da208, + (q31_t)0x2ebdc110, (q31_t)0x3da106bd, (q31_t)0x2ec9db35, (q31_t)0x3da46912, + (q31_t)0x2ed5f604, (q31_t)0x3da7c907, (q31_t)0x2ee2117c, (q31_t)0x3dab269b, + (q31_t)0x2eee2d9d, (q31_t)0x3dae81cf, (q31_t)0x2efa4a67, (q31_t)0x3db1daa2, + (q31_t)0x2f0667d9, (q31_t)0x3db53113, (q31_t)0x2f1285f2, (q31_t)0x3db88524, + (q31_t)0x2f1ea4b2, (q31_t)0x3dbbd6d4, (q31_t)0x2f2ac419, (q31_t)0x3dbf2622, + (q31_t)0x2f36e426, (q31_t)0x3dc2730f, (q31_t)0x2f4304d8, (q31_t)0x3dc5bd9b, + (q31_t)0x2f4f2630, (q31_t)0x3dc905c5, (q31_t)0x2f5b482d, (q31_t)0x3dcc4b8d, + (q31_t)0x2f676ace, (q31_t)0x3dcf8ef3, (q31_t)0x2f738e12, (q31_t)0x3dd2cff7, + (q31_t)0x2f7fb1fa, (q31_t)0x3dd60e99, (q31_t)0x2f8bd685, (q31_t)0x3dd94ad8, + (q31_t)0x2f97fbb2, (q31_t)0x3ddc84b5, (q31_t)0x2fa42181, (q31_t)0x3ddfbc30, + (q31_t)0x2fb047f2, (q31_t)0x3de2f148, (q31_t)0x2fbc6f03, (q31_t)0x3de623fd, + (q31_t)0x2fc896b5, (q31_t)0x3de9544f, (q31_t)0x2fd4bf08, (q31_t)0x3dec823e, + (q31_t)0x2fe0e7f9, (q31_t)0x3defadca, (q31_t)0x2fed118a, (q31_t)0x3df2d6f3, + (q31_t)0x2ff93bba, (q31_t)0x3df5fdb8, (q31_t)0x30056687, (q31_t)0x3df9221a, + (q31_t)0x301191f3, (q31_t)0x3dfc4418, (q31_t)0x301dbdfb, (q31_t)0x3dff63b2, + (q31_t)0x3029eaa1, (q31_t)0x3e0280e9, (q31_t)0x303617e2, (q31_t)0x3e059bbb, + (q31_t)0x304245c0, (q31_t)0x3e08b42a, (q31_t)0x304e7438, (q31_t)0x3e0bca34, + (q31_t)0x305aa34c, (q31_t)0x3e0eddd9, (q31_t)0x3066d2fa, (q31_t)0x3e11ef1b, + (q31_t)0x30730342, (q31_t)0x3e14fdf7, (q31_t)0x307f3424, (q31_t)0x3e180a6f, + (q31_t)0x308b659f, (q31_t)0x3e1b1482, (q31_t)0x309797b2, (q31_t)0x3e1e1c30, + (q31_t)0x30a3ca5d, (q31_t)0x3e212179, (q31_t)0x30affda0, (q31_t)0x3e24245d, + (q31_t)0x30bc317a, (q31_t)0x3e2724db, (q31_t)0x30c865ea, (q31_t)0x3e2a22f4, + (q31_t)0x30d49af1, (q31_t)0x3e2d1ea8, (q31_t)0x30e0d08d, (q31_t)0x3e3017f6, + (q31_t)0x30ed06bf, (q31_t)0x3e330ede, (q31_t)0x30f93d86, (q31_t)0x3e360360, + (q31_t)0x310574e0, (q31_t)0x3e38f57c, (q31_t)0x3111accf, (q31_t)0x3e3be532, + (q31_t)0x311de551, (q31_t)0x3e3ed282, (q31_t)0x312a1e66, (q31_t)0x3e41bd6c, + (q31_t)0x3136580d, (q31_t)0x3e44a5ef, (q31_t)0x31429247, (q31_t)0x3e478c0b, + (q31_t)0x314ecd11, (q31_t)0x3e4a6fc1, (q31_t)0x315b086d, (q31_t)0x3e4d5110, + (q31_t)0x31674459, (q31_t)0x3e502ff9, (q31_t)0x317380d6, (q31_t)0x3e530c7a, + (q31_t)0x317fbde2, (q31_t)0x3e55e694, (q31_t)0x318bfb7d, (q31_t)0x3e58be47, + (q31_t)0x319839a6, (q31_t)0x3e5b9392, (q31_t)0x31a4785e, (q31_t)0x3e5e6676, + (q31_t)0x31b0b7a4, (q31_t)0x3e6136f3, (q31_t)0x31bcf777, (q31_t)0x3e640507, + (q31_t)0x31c937d6, (q31_t)0x3e66d0b4, (q31_t)0x31d578c2, (q31_t)0x3e6999fa, + (q31_t)0x31e1ba3a, (q31_t)0x3e6c60d7, (q31_t)0x31edfc3d, (q31_t)0x3e6f254c, + (q31_t)0x31fa3ecb, (q31_t)0x3e71e759, (q31_t)0x320681e3, (q31_t)0x3e74a6fd, + (q31_t)0x3212c585, (q31_t)0x3e77643a, (q31_t)0x321f09b1, (q31_t)0x3e7a1f0d, + (q31_t)0x322b4e66, (q31_t)0x3e7cd778, (q31_t)0x323793a3, (q31_t)0x3e7f8d7b, + (q31_t)0x3243d968, (q31_t)0x3e824114, (q31_t)0x32501fb5, (q31_t)0x3e84f245, + (q31_t)0x325c6688, (q31_t)0x3e87a10c, (q31_t)0x3268ade3, (q31_t)0x3e8a4d6a, + (q31_t)0x3274f5c3, (q31_t)0x3e8cf75f, (q31_t)0x32813e2a, (q31_t)0x3e8f9eeb, + (q31_t)0x328d8715, (q31_t)0x3e92440d, (q31_t)0x3299d085, (q31_t)0x3e94e6c6, + (q31_t)0x32a61a7a, (q31_t)0x3e978715, (q31_t)0x32b264f2, (q31_t)0x3e9a24fb, + (q31_t)0x32beafed, (q31_t)0x3e9cc076, (q31_t)0x32cafb6b, (q31_t)0x3e9f5988, + (q31_t)0x32d7476c, (q31_t)0x3ea1f02f, (q31_t)0x32e393ef, (q31_t)0x3ea4846c, + (q31_t)0x32efe0f2, (q31_t)0x3ea7163f, (q31_t)0x32fc2e77, (q31_t)0x3ea9a5a8, + (q31_t)0x33087c7d, (q31_t)0x3eac32a6, (q31_t)0x3314cb02, (q31_t)0x3eaebd3a, + (q31_t)0x33211a07, (q31_t)0x3eb14563, (q31_t)0x332d698a, (q31_t)0x3eb3cb21, + (q31_t)0x3339b98d, (q31_t)0x3eb64e75, (q31_t)0x33460a0d, (q31_t)0x3eb8cf5d, + (q31_t)0x33525b0b, (q31_t)0x3ebb4ddb, (q31_t)0x335eac86, (q31_t)0x3ebdc9ed, + (q31_t)0x336afe7e, (q31_t)0x3ec04394, (q31_t)0x337750f2, (q31_t)0x3ec2bad0, + (q31_t)0x3383a3e2, (q31_t)0x3ec52fa0, (q31_t)0x338ff74d, (q31_t)0x3ec7a205, + (q31_t)0x339c4b32, (q31_t)0x3eca11fe, (q31_t)0x33a89f92, (q31_t)0x3ecc7f8b, + (q31_t)0x33b4f46c, (q31_t)0x3eceeaad, (q31_t)0x33c149bf, (q31_t)0x3ed15363, + (q31_t)0x33cd9f8b, (q31_t)0x3ed3b9ad, (q31_t)0x33d9f5cf, (q31_t)0x3ed61d8a, + (q31_t)0x33e64c8c, (q31_t)0x3ed87efc, (q31_t)0x33f2a3bf, (q31_t)0x3edade01, + (q31_t)0x33fefb6a, (q31_t)0x3edd3a9a, (q31_t)0x340b538b, (q31_t)0x3edf94c7, + (q31_t)0x3417ac22, (q31_t)0x3ee1ec87, (q31_t)0x3424052f, (q31_t)0x3ee441da, + (q31_t)0x34305eb0, (q31_t)0x3ee694c1, (q31_t)0x343cb8a7, (q31_t)0x3ee8e53a, + (q31_t)0x34491311, (q31_t)0x3eeb3347, (q31_t)0x34556def, (q31_t)0x3eed7ee7, + (q31_t)0x3461c940, (q31_t)0x3eefc81a, (q31_t)0x346e2504, (q31_t)0x3ef20ee0, + (q31_t)0x347a8139, (q31_t)0x3ef45338, (q31_t)0x3486dde1, (q31_t)0x3ef69523, + (q31_t)0x34933afa, (q31_t)0x3ef8d4a1, (q31_t)0x349f9884, (q31_t)0x3efb11b1, + (q31_t)0x34abf67e, (q31_t)0x3efd4c54, (q31_t)0x34b854e7, (q31_t)0x3eff8489, + (q31_t)0x34c4b3c0, (q31_t)0x3f01ba50, (q31_t)0x34d11308, (q31_t)0x3f03eda9, + (q31_t)0x34dd72be, (q31_t)0x3f061e95, (q31_t)0x34e9d2e3, (q31_t)0x3f084d12, + (q31_t)0x34f63374, (q31_t)0x3f0a7921, (q31_t)0x35029473, (q31_t)0x3f0ca2c2, + (q31_t)0x350ef5de, (q31_t)0x3f0ec9f5, (q31_t)0x351b57b5, (q31_t)0x3f10eeb9, + (q31_t)0x3527b9f7, (q31_t)0x3f13110f, (q31_t)0x35341ca5, (q31_t)0x3f1530f7, + (q31_t)0x35407fbd, (q31_t)0x3f174e70, (q31_t)0x354ce33f, (q31_t)0x3f19697a, + (q31_t)0x3559472b, (q31_t)0x3f1b8215, (q31_t)0x3565ab80, (q31_t)0x3f1d9842, + (q31_t)0x3572103d, (q31_t)0x3f1fabff, (q31_t)0x357e7563, (q31_t)0x3f21bd4e, + (q31_t)0x358adaf0, (q31_t)0x3f23cc2e, (q31_t)0x359740e5, (q31_t)0x3f25d89e, + (q31_t)0x35a3a740, (q31_t)0x3f27e29f, (q31_t)0x35b00e02, (q31_t)0x3f29ea31, + (q31_t)0x35bc7529, (q31_t)0x3f2bef53, (q31_t)0x35c8dcb6, (q31_t)0x3f2df206, + (q31_t)0x35d544a7, (q31_t)0x3f2ff24a, (q31_t)0x35e1acfd, (q31_t)0x3f31f01d, + (q31_t)0x35ee15b7, (q31_t)0x3f33eb81, (q31_t)0x35fa7ed4, (q31_t)0x3f35e476, + (q31_t)0x3606e854, (q31_t)0x3f37dafa, (q31_t)0x36135237, (q31_t)0x3f39cf0e, + (q31_t)0x361fbc7b, (q31_t)0x3f3bc0b3, (q31_t)0x362c2721, (q31_t)0x3f3dafe7, + (q31_t)0x36389228, (q31_t)0x3f3f9cab, (q31_t)0x3644fd8f, (q31_t)0x3f4186ff, + (q31_t)0x36516956, (q31_t)0x3f436ee3, (q31_t)0x365dd57d, (q31_t)0x3f455456, + (q31_t)0x366a4203, (q31_t)0x3f473759, (q31_t)0x3676aee8, (q31_t)0x3f4917eb, + (q31_t)0x36831c2b, (q31_t)0x3f4af60d, (q31_t)0x368f89cb, (q31_t)0x3f4cd1be, + (q31_t)0x369bf7c9, (q31_t)0x3f4eaafe, (q31_t)0x36a86623, (q31_t)0x3f5081cd, + (q31_t)0x36b4d4d9, (q31_t)0x3f52562c, (q31_t)0x36c143ec, (q31_t)0x3f54281a, + (q31_t)0x36cdb359, (q31_t)0x3f55f796, (q31_t)0x36da2321, (q31_t)0x3f57c4a2, + (q31_t)0x36e69344, (q31_t)0x3f598f3c, (q31_t)0x36f303c0, (q31_t)0x3f5b5765, + (q31_t)0x36ff7496, (q31_t)0x3f5d1d1d, (q31_t)0x370be5c4, (q31_t)0x3f5ee063, + (q31_t)0x3718574b, (q31_t)0x3f60a138, (q31_t)0x3724c92a, (q31_t)0x3f625f9b, + (q31_t)0x37313b60, (q31_t)0x3f641b8d, (q31_t)0x373daded, (q31_t)0x3f65d50d, + (q31_t)0x374a20d0, (q31_t)0x3f678c1c, (q31_t)0x3756940a, (q31_t)0x3f6940b8, + (q31_t)0x37630799, (q31_t)0x3f6af2e3, (q31_t)0x376f7b7d, (q31_t)0x3f6ca29c, + (q31_t)0x377befb5, (q31_t)0x3f6e4fe3, (q31_t)0x37886442, (q31_t)0x3f6ffab8, + (q31_t)0x3794d922, (q31_t)0x3f71a31b, (q31_t)0x37a14e55, (q31_t)0x3f73490b, + (q31_t)0x37adc3db, (q31_t)0x3f74ec8a, (q31_t)0x37ba39b3, (q31_t)0x3f768d96, + (q31_t)0x37c6afdc, (q31_t)0x3f782c30, (q31_t)0x37d32657, (q31_t)0x3f79c857, + (q31_t)0x37df9d22, (q31_t)0x3f7b620c, (q31_t)0x37ec143e, (q31_t)0x3f7cf94e, + (q31_t)0x37f88ba9, (q31_t)0x3f7e8e1e, (q31_t)0x38050364, (q31_t)0x3f80207b, + (q31_t)0x38117b6d, (q31_t)0x3f81b065, (q31_t)0x381df3c5, (q31_t)0x3f833ddd, + (q31_t)0x382a6c6a, (q31_t)0x3f84c8e2, (q31_t)0x3836e55d, (q31_t)0x3f865174, + (q31_t)0x38435e9d, (q31_t)0x3f87d792, (q31_t)0x384fd829, (q31_t)0x3f895b3e, + (q31_t)0x385c5201, (q31_t)0x3f8adc77, (q31_t)0x3868cc24, (q31_t)0x3f8c5b3d, + (q31_t)0x38754692, (q31_t)0x3f8dd78f, (q31_t)0x3881c14b, (q31_t)0x3f8f516e, + (q31_t)0x388e3c4d, (q31_t)0x3f90c8da, (q31_t)0x389ab799, (q31_t)0x3f923dd2, + (q31_t)0x38a7332e, (q31_t)0x3f93b058, (q31_t)0x38b3af0c, (q31_t)0x3f952069, + (q31_t)0x38c02b31, (q31_t)0x3f968e07, (q31_t)0x38cca79e, (q31_t)0x3f97f932, + (q31_t)0x38d92452, (q31_t)0x3f9961e8, (q31_t)0x38e5a14d, (q31_t)0x3f9ac82c, + (q31_t)0x38f21e8e, (q31_t)0x3f9c2bfb, (q31_t)0x38fe9c15, (q31_t)0x3f9d8d56, + (q31_t)0x390b19e0, (q31_t)0x3f9eec3e, (q31_t)0x391797f0, (q31_t)0x3fa048b2, + (q31_t)0x39241645, (q31_t)0x3fa1a2b2, (q31_t)0x393094dd, (q31_t)0x3fa2fa3d, + (q31_t)0x393d13b8, (q31_t)0x3fa44f55, (q31_t)0x394992d7, (q31_t)0x3fa5a1f9, + (q31_t)0x39561237, (q31_t)0x3fa6f228, (q31_t)0x396291d9, (q31_t)0x3fa83fe3, + (q31_t)0x396f11bc, (q31_t)0x3fa98b2a, (q31_t)0x397b91e1, (q31_t)0x3faad3fd, + (q31_t)0x39881245, (q31_t)0x3fac1a5b, (q31_t)0x399492ea, (q31_t)0x3fad5e45, + (q31_t)0x39a113cd, (q31_t)0x3fae9fbb, (q31_t)0x39ad94f0, (q31_t)0x3fafdebb, + (q31_t)0x39ba1651, (q31_t)0x3fb11b48, (q31_t)0x39c697f0, (q31_t)0x3fb2555f, + (q31_t)0x39d319cc, (q31_t)0x3fb38d02, (q31_t)0x39df9be6, (q31_t)0x3fb4c231, + (q31_t)0x39ec1e3b, (q31_t)0x3fb5f4ea, (q31_t)0x39f8a0cd, (q31_t)0x3fb7252f, + (q31_t)0x3a05239a, (q31_t)0x3fb852ff, (q31_t)0x3a11a6a3, (q31_t)0x3fb97e5a, + (q31_t)0x3a1e29e5, (q31_t)0x3fbaa740, (q31_t)0x3a2aad62, (q31_t)0x3fbbcdb1, + (q31_t)0x3a373119, (q31_t)0x3fbcf1ad, (q31_t)0x3a43b508, (q31_t)0x3fbe1334, + (q31_t)0x3a503930, (q31_t)0x3fbf3246, (q31_t)0x3a5cbd91, (q31_t)0x3fc04ee3, + (q31_t)0x3a694229, (q31_t)0x3fc1690a, (q31_t)0x3a75c6f8, (q31_t)0x3fc280bc, + (q31_t)0x3a824bfd, (q31_t)0x3fc395f9, (q31_t)0x3a8ed139, (q31_t)0x3fc4a8c1, + (q31_t)0x3a9b56ab, (q31_t)0x3fc5b913, (q31_t)0x3aa7dc52, (q31_t)0x3fc6c6f0, + (q31_t)0x3ab4622d, (q31_t)0x3fc7d258, (q31_t)0x3ac0e83d, (q31_t)0x3fc8db4a, + (q31_t)0x3acd6e81, (q31_t)0x3fc9e1c6, (q31_t)0x3ad9f4f8, (q31_t)0x3fcae5cd, + (q31_t)0x3ae67ba2, (q31_t)0x3fcbe75e, (q31_t)0x3af3027e, (q31_t)0x3fcce67a, + (q31_t)0x3aff898c, (q31_t)0x3fcde320, (q31_t)0x3b0c10cb, (q31_t)0x3fcedd50, + (q31_t)0x3b18983b, (q31_t)0x3fcfd50b, (q31_t)0x3b251fdc, (q31_t)0x3fd0ca4f, + (q31_t)0x3b31a7ac, (q31_t)0x3fd1bd1e, (q31_t)0x3b3e2fac, (q31_t)0x3fd2ad77, + (q31_t)0x3b4ab7db, (q31_t)0x3fd39b5a, (q31_t)0x3b574039, (q31_t)0x3fd486c7, + (q31_t)0x3b63c8c4, (q31_t)0x3fd56fbe, (q31_t)0x3b70517d, (q31_t)0x3fd6563f, + (q31_t)0x3b7cda63, (q31_t)0x3fd73a4a, (q31_t)0x3b896375, (q31_t)0x3fd81bdf, + (q31_t)0x3b95ecb4, (q31_t)0x3fd8fafe, (q31_t)0x3ba2761e, (q31_t)0x3fd9d7a7, + (q31_t)0x3baeffb3, (q31_t)0x3fdab1d9, (q31_t)0x3bbb8973, (q31_t)0x3fdb8996, + (q31_t)0x3bc8135c, (q31_t)0x3fdc5edc, (q31_t)0x3bd49d70, (q31_t)0x3fdd31ac, + (q31_t)0x3be127ac, (q31_t)0x3fde0205, (q31_t)0x3bedb212, (q31_t)0x3fdecfe8, + (q31_t)0x3bfa3c9f, (q31_t)0x3fdf9b55, (q31_t)0x3c06c754, (q31_t)0x3fe0644b, + (q31_t)0x3c135231, (q31_t)0x3fe12acb, (q31_t)0x3c1fdd34, (q31_t)0x3fe1eed5, + (q31_t)0x3c2c685d, (q31_t)0x3fe2b067, (q31_t)0x3c38f3ac, (q31_t)0x3fe36f84, + (q31_t)0x3c457f21, (q31_t)0x3fe42c2a, (q31_t)0x3c520aba, (q31_t)0x3fe4e659, + (q31_t)0x3c5e9678, (q31_t)0x3fe59e12, (q31_t)0x3c6b2259, (q31_t)0x3fe65354, + (q31_t)0x3c77ae5e, (q31_t)0x3fe7061f, (q31_t)0x3c843a85, (q31_t)0x3fe7b674, + (q31_t)0x3c90c6cf, (q31_t)0x3fe86452, (q31_t)0x3c9d533b, (q31_t)0x3fe90fb9, + (q31_t)0x3ca9dfc8, (q31_t)0x3fe9b8a9, (q31_t)0x3cb66c77, (q31_t)0x3fea5f23, + (q31_t)0x3cc2f945, (q31_t)0x3feb0326, (q31_t)0x3ccf8634, (q31_t)0x3feba4b2, + (q31_t)0x3cdc1342, (q31_t)0x3fec43c7, (q31_t)0x3ce8a06f, (q31_t)0x3fece065, + (q31_t)0x3cf52dbb, (q31_t)0x3fed7a8c, (q31_t)0x3d01bb24, (q31_t)0x3fee123d, + (q31_t)0x3d0e48ab, (q31_t)0x3feea776, (q31_t)0x3d1ad650, (q31_t)0x3fef3a39, + (q31_t)0x3d276410, (q31_t)0x3fefca84, (q31_t)0x3d33f1ed, (q31_t)0x3ff05858, + (q31_t)0x3d407fe6, (q31_t)0x3ff0e3b6, (q31_t)0x3d4d0df9, (q31_t)0x3ff16c9c, + (q31_t)0x3d599c28, (q31_t)0x3ff1f30b, (q31_t)0x3d662a70, (q31_t)0x3ff27703, + (q31_t)0x3d72b8d2, (q31_t)0x3ff2f884, (q31_t)0x3d7f474d, (q31_t)0x3ff3778e, + (q31_t)0x3d8bd5e1, (q31_t)0x3ff3f420, (q31_t)0x3d98648d, (q31_t)0x3ff46e3c, + (q31_t)0x3da4f351, (q31_t)0x3ff4e5e0, (q31_t)0x3db1822c, (q31_t)0x3ff55b0d, + (q31_t)0x3dbe111e, (q31_t)0x3ff5cdc3, (q31_t)0x3dcaa027, (q31_t)0x3ff63e01, + (q31_t)0x3dd72f45, (q31_t)0x3ff6abc8, (q31_t)0x3de3be78, (q31_t)0x3ff71718, + (q31_t)0x3df04dc0, (q31_t)0x3ff77ff1, (q31_t)0x3dfcdd1d, (q31_t)0x3ff7e652, + (q31_t)0x3e096c8d, (q31_t)0x3ff84a3c, (q31_t)0x3e15fc11, (q31_t)0x3ff8abae, + (q31_t)0x3e228ba7, (q31_t)0x3ff90aaa, (q31_t)0x3e2f1b50, (q31_t)0x3ff9672d, + (q31_t)0x3e3bab0b, (q31_t)0x3ff9c13a, (q31_t)0x3e483ad8, (q31_t)0x3ffa18cf, + (q31_t)0x3e54cab5, (q31_t)0x3ffa6dec, (q31_t)0x3e615aa3, (q31_t)0x3ffac092, + (q31_t)0x3e6deaa1, (q31_t)0x3ffb10c1, (q31_t)0x3e7a7aae, (q31_t)0x3ffb5e78, + (q31_t)0x3e870aca, (q31_t)0x3ffba9b8, (q31_t)0x3e939af5, (q31_t)0x3ffbf280, + (q31_t)0x3ea02b2e, (q31_t)0x3ffc38d1, (q31_t)0x3eacbb74, (q31_t)0x3ffc7caa, + (q31_t)0x3eb94bc8, (q31_t)0x3ffcbe0c, (q31_t)0x3ec5dc28, (q31_t)0x3ffcfcf6, + (q31_t)0x3ed26c94, (q31_t)0x3ffd3969, (q31_t)0x3edefd0c, (q31_t)0x3ffd7364, + (q31_t)0x3eeb8d8f, (q31_t)0x3ffdaae7, (q31_t)0x3ef81e1d, (q31_t)0x3ffddff3, + (q31_t)0x3f04aeb5, (q31_t)0x3ffe1288, (q31_t)0x3f113f56, (q31_t)0x3ffe42a4, + (q31_t)0x3f1dd001, (q31_t)0x3ffe704a, (q31_t)0x3f2a60b4, (q31_t)0x3ffe9b77, + (q31_t)0x3f36f170, (q31_t)0x3ffec42d, (q31_t)0x3f438234, (q31_t)0x3ffeea6c, + (q31_t)0x3f5012fe, (q31_t)0x3fff0e32, (q31_t)0x3f5ca3d0, (q31_t)0x3fff2f82, + (q31_t)0x3f6934a8, (q31_t)0x3fff4e59, (q31_t)0x3f75c585, (q31_t)0x3fff6ab9, + (q31_t)0x3f825668, (q31_t)0x3fff84a1, (q31_t)0x3f8ee750, (q31_t)0x3fff9c12, + (q31_t)0x3f9b783c, (q31_t)0x3fffb10b, (q31_t)0x3fa8092c, (q31_t)0x3fffc38c, + (q31_t)0x3fb49a1f, (q31_t)0x3fffd396, (q31_t)0x3fc12b16, (q31_t)0x3fffe128, + (q31_t)0x3fcdbc0f, (q31_t)0x3fffec43, (q31_t)0x3fda4d09, (q31_t)0x3ffff4e6, + (q31_t)0x3fe6de05, (q31_t)0x3ffffb11, (q31_t)0x3ff36f02, (q31_t)0x3ffffec4, +}; + + +/** +* \par +* Generation of realCoefBQ31 array: +* \par +* n = 4096 +*
for (i = 0; i < n; i++)
+* {
+*    pBTable[2 * i] = 0.5 * (1.0 + sin (2 * PI / (double) (2 * n) * (double) i));
+*    pBTable[2 * i + 1] = 0.5 * (1.0 * cos (2 * PI / (double) (2 * n) * (double) i));
+* } 
+* \par +* Convert to fixed point Q31 format +* round(pBTable[i] * pow(2, 31)) +* +*/ + +const q31_t realCoefBQ31[8192] = { + (q31_t)0x40000000, (q31_t)0x40000000, (q31_t)0x400c90fe, (q31_t)0x3ffffec4, + (q31_t)0x401921fb, (q31_t)0x3ffffb11, (q31_t)0x4025b2f7, (q31_t)0x3ffff4e6, + (q31_t)0x403243f1, (q31_t)0x3fffec43, (q31_t)0x403ed4ea, (q31_t)0x3fffe128, + (q31_t)0x404b65e1, (q31_t)0x3fffd396, (q31_t)0x4057f6d4, (q31_t)0x3fffc38c, + (q31_t)0x406487c4, (q31_t)0x3fffb10b, (q31_t)0x407118b0, (q31_t)0x3fff9c12, + (q31_t)0x407da998, (q31_t)0x3fff84a1, (q31_t)0x408a3a7b, (q31_t)0x3fff6ab9, + (q31_t)0x4096cb58, (q31_t)0x3fff4e59, (q31_t)0x40a35c30, (q31_t)0x3fff2f82, + (q31_t)0x40afed02, (q31_t)0x3fff0e32, (q31_t)0x40bc7dcc, (q31_t)0x3ffeea6c, + (q31_t)0x40c90e90, (q31_t)0x3ffec42d, (q31_t)0x40d59f4c, (q31_t)0x3ffe9b77, + (q31_t)0x40e22fff, (q31_t)0x3ffe704a, (q31_t)0x40eec0aa, (q31_t)0x3ffe42a4, + (q31_t)0x40fb514b, (q31_t)0x3ffe1288, (q31_t)0x4107e1e3, (q31_t)0x3ffddff3, + (q31_t)0x41147271, (q31_t)0x3ffdaae7, (q31_t)0x412102f4, (q31_t)0x3ffd7364, + (q31_t)0x412d936c, (q31_t)0x3ffd3969, (q31_t)0x413a23d8, (q31_t)0x3ffcfcf6, + (q31_t)0x4146b438, (q31_t)0x3ffcbe0c, (q31_t)0x4153448c, (q31_t)0x3ffc7caa, + (q31_t)0x415fd4d2, (q31_t)0x3ffc38d1, (q31_t)0x416c650b, (q31_t)0x3ffbf280, + (q31_t)0x4178f536, (q31_t)0x3ffba9b8, (q31_t)0x41858552, (q31_t)0x3ffb5e78, + (q31_t)0x4192155f, (q31_t)0x3ffb10c1, (q31_t)0x419ea55d, (q31_t)0x3ffac092, + (q31_t)0x41ab354b, (q31_t)0x3ffa6dec, (q31_t)0x41b7c528, (q31_t)0x3ffa18cf, + (q31_t)0x41c454f5, (q31_t)0x3ff9c13a, (q31_t)0x41d0e4b0, (q31_t)0x3ff9672d, + (q31_t)0x41dd7459, (q31_t)0x3ff90aaa, (q31_t)0x41ea03ef, (q31_t)0x3ff8abae, + (q31_t)0x41f69373, (q31_t)0x3ff84a3c, (q31_t)0x420322e3, (q31_t)0x3ff7e652, + (q31_t)0x420fb240, (q31_t)0x3ff77ff1, (q31_t)0x421c4188, (q31_t)0x3ff71718, + (q31_t)0x4228d0bb, (q31_t)0x3ff6abc8, (q31_t)0x42355fd9, (q31_t)0x3ff63e01, + (q31_t)0x4241eee2, (q31_t)0x3ff5cdc3, (q31_t)0x424e7dd4, (q31_t)0x3ff55b0d, + (q31_t)0x425b0caf, (q31_t)0x3ff4e5e0, (q31_t)0x42679b73, (q31_t)0x3ff46e3c, + (q31_t)0x42742a1f, (q31_t)0x3ff3f420, (q31_t)0x4280b8b3, (q31_t)0x3ff3778e, + (q31_t)0x428d472e, (q31_t)0x3ff2f884, (q31_t)0x4299d590, (q31_t)0x3ff27703, + (q31_t)0x42a663d8, (q31_t)0x3ff1f30b, (q31_t)0x42b2f207, (q31_t)0x3ff16c9c, + (q31_t)0x42bf801a, (q31_t)0x3ff0e3b6, (q31_t)0x42cc0e13, (q31_t)0x3ff05858, + (q31_t)0x42d89bf0, (q31_t)0x3fefca84, (q31_t)0x42e529b0, (q31_t)0x3fef3a39, + (q31_t)0x42f1b755, (q31_t)0x3feea776, (q31_t)0x42fe44dc, (q31_t)0x3fee123d, + (q31_t)0x430ad245, (q31_t)0x3fed7a8c, (q31_t)0x43175f91, (q31_t)0x3fece065, + (q31_t)0x4323ecbe, (q31_t)0x3fec43c7, (q31_t)0x433079cc, (q31_t)0x3feba4b2, + (q31_t)0x433d06bb, (q31_t)0x3feb0326, (q31_t)0x43499389, (q31_t)0x3fea5f23, + (q31_t)0x43562038, (q31_t)0x3fe9b8a9, (q31_t)0x4362acc5, (q31_t)0x3fe90fb9, + (q31_t)0x436f3931, (q31_t)0x3fe86452, (q31_t)0x437bc57b, (q31_t)0x3fe7b674, + (q31_t)0x438851a2, (q31_t)0x3fe7061f, (q31_t)0x4394dda7, (q31_t)0x3fe65354, + (q31_t)0x43a16988, (q31_t)0x3fe59e12, (q31_t)0x43adf546, (q31_t)0x3fe4e659, + (q31_t)0x43ba80df, (q31_t)0x3fe42c2a, (q31_t)0x43c70c54, (q31_t)0x3fe36f84, + (q31_t)0x43d397a3, (q31_t)0x3fe2b067, (q31_t)0x43e022cc, (q31_t)0x3fe1eed5, + (q31_t)0x43ecadcf, (q31_t)0x3fe12acb, (q31_t)0x43f938ac, (q31_t)0x3fe0644b, + (q31_t)0x4405c361, (q31_t)0x3fdf9b55, (q31_t)0x44124dee, (q31_t)0x3fdecfe8, + (q31_t)0x441ed854, (q31_t)0x3fde0205, (q31_t)0x442b6290, (q31_t)0x3fdd31ac, + (q31_t)0x4437eca4, (q31_t)0x3fdc5edc, (q31_t)0x4444768d, (q31_t)0x3fdb8996, + (q31_t)0x4451004d, (q31_t)0x3fdab1d9, (q31_t)0x445d89e2, (q31_t)0x3fd9d7a7, + (q31_t)0x446a134c, (q31_t)0x3fd8fafe, (q31_t)0x44769c8b, (q31_t)0x3fd81bdf, + (q31_t)0x4483259d, (q31_t)0x3fd73a4a, (q31_t)0x448fae83, (q31_t)0x3fd6563f, + (q31_t)0x449c373c, (q31_t)0x3fd56fbe, (q31_t)0x44a8bfc7, (q31_t)0x3fd486c7, + (q31_t)0x44b54825, (q31_t)0x3fd39b5a, (q31_t)0x44c1d054, (q31_t)0x3fd2ad77, + (q31_t)0x44ce5854, (q31_t)0x3fd1bd1e, (q31_t)0x44dae024, (q31_t)0x3fd0ca4f, + (q31_t)0x44e767c5, (q31_t)0x3fcfd50b, (q31_t)0x44f3ef35, (q31_t)0x3fcedd50, + (q31_t)0x45007674, (q31_t)0x3fcde320, (q31_t)0x450cfd82, (q31_t)0x3fcce67a, + (q31_t)0x4519845e, (q31_t)0x3fcbe75e, (q31_t)0x45260b08, (q31_t)0x3fcae5cd, + (q31_t)0x4532917f, (q31_t)0x3fc9e1c6, (q31_t)0x453f17c3, (q31_t)0x3fc8db4a, + (q31_t)0x454b9dd3, (q31_t)0x3fc7d258, (q31_t)0x455823ae, (q31_t)0x3fc6c6f0, + (q31_t)0x4564a955, (q31_t)0x3fc5b913, (q31_t)0x45712ec7, (q31_t)0x3fc4a8c1, + (q31_t)0x457db403, (q31_t)0x3fc395f9, (q31_t)0x458a3908, (q31_t)0x3fc280bc, + (q31_t)0x4596bdd7, (q31_t)0x3fc1690a, (q31_t)0x45a3426f, (q31_t)0x3fc04ee3, + (q31_t)0x45afc6d0, (q31_t)0x3fbf3246, (q31_t)0x45bc4af8, (q31_t)0x3fbe1334, + (q31_t)0x45c8cee7, (q31_t)0x3fbcf1ad, (q31_t)0x45d5529e, (q31_t)0x3fbbcdb1, + (q31_t)0x45e1d61b, (q31_t)0x3fbaa740, (q31_t)0x45ee595d, (q31_t)0x3fb97e5a, + (q31_t)0x45fadc66, (q31_t)0x3fb852ff, (q31_t)0x46075f33, (q31_t)0x3fb7252f, + (q31_t)0x4613e1c5, (q31_t)0x3fb5f4ea, (q31_t)0x4620641a, (q31_t)0x3fb4c231, + (q31_t)0x462ce634, (q31_t)0x3fb38d02, (q31_t)0x46396810, (q31_t)0x3fb2555f, + (q31_t)0x4645e9af, (q31_t)0x3fb11b48, (q31_t)0x46526b10, (q31_t)0x3fafdebb, + (q31_t)0x465eec33, (q31_t)0x3fae9fbb, (q31_t)0x466b6d16, (q31_t)0x3fad5e45, + (q31_t)0x4677edbb, (q31_t)0x3fac1a5b, (q31_t)0x46846e1f, (q31_t)0x3faad3fd, + (q31_t)0x4690ee44, (q31_t)0x3fa98b2a, (q31_t)0x469d6e27, (q31_t)0x3fa83fe3, + (q31_t)0x46a9edc9, (q31_t)0x3fa6f228, (q31_t)0x46b66d29, (q31_t)0x3fa5a1f9, + (q31_t)0x46c2ec48, (q31_t)0x3fa44f55, (q31_t)0x46cf6b23, (q31_t)0x3fa2fa3d, + (q31_t)0x46dbe9bb, (q31_t)0x3fa1a2b2, (q31_t)0x46e86810, (q31_t)0x3fa048b2, + (q31_t)0x46f4e620, (q31_t)0x3f9eec3e, (q31_t)0x470163eb, (q31_t)0x3f9d8d56, + (q31_t)0x470de172, (q31_t)0x3f9c2bfb, (q31_t)0x471a5eb3, (q31_t)0x3f9ac82c, + (q31_t)0x4726dbae, (q31_t)0x3f9961e8, (q31_t)0x47335862, (q31_t)0x3f97f932, + (q31_t)0x473fd4cf, (q31_t)0x3f968e07, (q31_t)0x474c50f4, (q31_t)0x3f952069, + (q31_t)0x4758ccd2, (q31_t)0x3f93b058, (q31_t)0x47654867, (q31_t)0x3f923dd2, + (q31_t)0x4771c3b3, (q31_t)0x3f90c8da, (q31_t)0x477e3eb5, (q31_t)0x3f8f516e, + (q31_t)0x478ab96e, (q31_t)0x3f8dd78f, (q31_t)0x479733dc, (q31_t)0x3f8c5b3d, + (q31_t)0x47a3adff, (q31_t)0x3f8adc77, (q31_t)0x47b027d7, (q31_t)0x3f895b3e, + (q31_t)0x47bca163, (q31_t)0x3f87d792, (q31_t)0x47c91aa3, (q31_t)0x3f865174, + (q31_t)0x47d59396, (q31_t)0x3f84c8e2, (q31_t)0x47e20c3b, (q31_t)0x3f833ddd, + (q31_t)0x47ee8493, (q31_t)0x3f81b065, (q31_t)0x47fafc9c, (q31_t)0x3f80207b, + (q31_t)0x48077457, (q31_t)0x3f7e8e1e, (q31_t)0x4813ebc2, (q31_t)0x3f7cf94e, + (q31_t)0x482062de, (q31_t)0x3f7b620c, (q31_t)0x482cd9a9, (q31_t)0x3f79c857, + (q31_t)0x48395024, (q31_t)0x3f782c30, (q31_t)0x4845c64d, (q31_t)0x3f768d96, + (q31_t)0x48523c25, (q31_t)0x3f74ec8a, (q31_t)0x485eb1ab, (q31_t)0x3f73490b, + (q31_t)0x486b26de, (q31_t)0x3f71a31b, (q31_t)0x48779bbe, (q31_t)0x3f6ffab8, + (q31_t)0x4884104b, (q31_t)0x3f6e4fe3, (q31_t)0x48908483, (q31_t)0x3f6ca29c, + (q31_t)0x489cf867, (q31_t)0x3f6af2e3, (q31_t)0x48a96bf6, (q31_t)0x3f6940b8, + (q31_t)0x48b5df30, (q31_t)0x3f678c1c, (q31_t)0x48c25213, (q31_t)0x3f65d50d, + (q31_t)0x48cec4a0, (q31_t)0x3f641b8d, (q31_t)0x48db36d6, (q31_t)0x3f625f9b, + (q31_t)0x48e7a8b5, (q31_t)0x3f60a138, (q31_t)0x48f41a3c, (q31_t)0x3f5ee063, + (q31_t)0x49008b6a, (q31_t)0x3f5d1d1d, (q31_t)0x490cfc40, (q31_t)0x3f5b5765, + (q31_t)0x49196cbc, (q31_t)0x3f598f3c, (q31_t)0x4925dcdf, (q31_t)0x3f57c4a2, + (q31_t)0x49324ca7, (q31_t)0x3f55f796, (q31_t)0x493ebc14, (q31_t)0x3f54281a, + (q31_t)0x494b2b27, (q31_t)0x3f52562c, (q31_t)0x495799dd, (q31_t)0x3f5081cd, + (q31_t)0x49640837, (q31_t)0x3f4eaafe, (q31_t)0x49707635, (q31_t)0x3f4cd1be, + (q31_t)0x497ce3d5, (q31_t)0x3f4af60d, (q31_t)0x49895118, (q31_t)0x3f4917eb, + (q31_t)0x4995bdfd, (q31_t)0x3f473759, (q31_t)0x49a22a83, (q31_t)0x3f455456, + (q31_t)0x49ae96aa, (q31_t)0x3f436ee3, (q31_t)0x49bb0271, (q31_t)0x3f4186ff, + (q31_t)0x49c76dd8, (q31_t)0x3f3f9cab, (q31_t)0x49d3d8df, (q31_t)0x3f3dafe7, + (q31_t)0x49e04385, (q31_t)0x3f3bc0b3, (q31_t)0x49ecadc9, (q31_t)0x3f39cf0e, + (q31_t)0x49f917ac, (q31_t)0x3f37dafa, (q31_t)0x4a05812c, (q31_t)0x3f35e476, + (q31_t)0x4a11ea49, (q31_t)0x3f33eb81, (q31_t)0x4a1e5303, (q31_t)0x3f31f01d, + (q31_t)0x4a2abb59, (q31_t)0x3f2ff24a, (q31_t)0x4a37234a, (q31_t)0x3f2df206, + (q31_t)0x4a438ad7, (q31_t)0x3f2bef53, (q31_t)0x4a4ff1fe, (q31_t)0x3f29ea31, + (q31_t)0x4a5c58c0, (q31_t)0x3f27e29f, (q31_t)0x4a68bf1b, (q31_t)0x3f25d89e, + (q31_t)0x4a752510, (q31_t)0x3f23cc2e, (q31_t)0x4a818a9d, (q31_t)0x3f21bd4e, + (q31_t)0x4a8defc3, (q31_t)0x3f1fabff, (q31_t)0x4a9a5480, (q31_t)0x3f1d9842, + (q31_t)0x4aa6b8d5, (q31_t)0x3f1b8215, (q31_t)0x4ab31cc1, (q31_t)0x3f19697a, + (q31_t)0x4abf8043, (q31_t)0x3f174e70, (q31_t)0x4acbe35b, (q31_t)0x3f1530f7, + (q31_t)0x4ad84609, (q31_t)0x3f13110f, (q31_t)0x4ae4a84b, (q31_t)0x3f10eeb9, + (q31_t)0x4af10a22, (q31_t)0x3f0ec9f5, (q31_t)0x4afd6b8d, (q31_t)0x3f0ca2c2, + (q31_t)0x4b09cc8c, (q31_t)0x3f0a7921, (q31_t)0x4b162d1d, (q31_t)0x3f084d12, + (q31_t)0x4b228d42, (q31_t)0x3f061e95, (q31_t)0x4b2eecf8, (q31_t)0x3f03eda9, + (q31_t)0x4b3b4c40, (q31_t)0x3f01ba50, (q31_t)0x4b47ab19, (q31_t)0x3eff8489, + (q31_t)0x4b540982, (q31_t)0x3efd4c54, (q31_t)0x4b60677c, (q31_t)0x3efb11b1, + (q31_t)0x4b6cc506, (q31_t)0x3ef8d4a1, (q31_t)0x4b79221f, (q31_t)0x3ef69523, + (q31_t)0x4b857ec7, (q31_t)0x3ef45338, (q31_t)0x4b91dafc, (q31_t)0x3ef20ee0, + (q31_t)0x4b9e36c0, (q31_t)0x3eefc81a, (q31_t)0x4baa9211, (q31_t)0x3eed7ee7, + (q31_t)0x4bb6ecef, (q31_t)0x3eeb3347, (q31_t)0x4bc34759, (q31_t)0x3ee8e53a, + (q31_t)0x4bcfa150, (q31_t)0x3ee694c1, (q31_t)0x4bdbfad1, (q31_t)0x3ee441da, + (q31_t)0x4be853de, (q31_t)0x3ee1ec87, (q31_t)0x4bf4ac75, (q31_t)0x3edf94c7, + (q31_t)0x4c010496, (q31_t)0x3edd3a9a, (q31_t)0x4c0d5c41, (q31_t)0x3edade01, + (q31_t)0x4c19b374, (q31_t)0x3ed87efc, (q31_t)0x4c260a31, (q31_t)0x3ed61d8a, + (q31_t)0x4c326075, (q31_t)0x3ed3b9ad, (q31_t)0x4c3eb641, (q31_t)0x3ed15363, + (q31_t)0x4c4b0b94, (q31_t)0x3eceeaad, (q31_t)0x4c57606e, (q31_t)0x3ecc7f8b, + (q31_t)0x4c63b4ce, (q31_t)0x3eca11fe, (q31_t)0x4c7008b3, (q31_t)0x3ec7a205, + (q31_t)0x4c7c5c1e, (q31_t)0x3ec52fa0, (q31_t)0x4c88af0e, (q31_t)0x3ec2bad0, + (q31_t)0x4c950182, (q31_t)0x3ec04394, (q31_t)0x4ca1537a, (q31_t)0x3ebdc9ed, + (q31_t)0x4cada4f5, (q31_t)0x3ebb4ddb, (q31_t)0x4cb9f5f3, (q31_t)0x3eb8cf5d, + (q31_t)0x4cc64673, (q31_t)0x3eb64e75, (q31_t)0x4cd29676, (q31_t)0x3eb3cb21, + (q31_t)0x4cdee5f9, (q31_t)0x3eb14563, (q31_t)0x4ceb34fe, (q31_t)0x3eaebd3a, + (q31_t)0x4cf78383, (q31_t)0x3eac32a6, (q31_t)0x4d03d189, (q31_t)0x3ea9a5a8, + (q31_t)0x4d101f0e, (q31_t)0x3ea7163f, (q31_t)0x4d1c6c11, (q31_t)0x3ea4846c, + (q31_t)0x4d28b894, (q31_t)0x3ea1f02f, (q31_t)0x4d350495, (q31_t)0x3e9f5988, + (q31_t)0x4d415013, (q31_t)0x3e9cc076, (q31_t)0x4d4d9b0e, (q31_t)0x3e9a24fb, + (q31_t)0x4d59e586, (q31_t)0x3e978715, (q31_t)0x4d662f7b, (q31_t)0x3e94e6c6, + (q31_t)0x4d7278eb, (q31_t)0x3e92440d, (q31_t)0x4d7ec1d6, (q31_t)0x3e8f9eeb, + (q31_t)0x4d8b0a3d, (q31_t)0x3e8cf75f, (q31_t)0x4d97521d, (q31_t)0x3e8a4d6a, + (q31_t)0x4da39978, (q31_t)0x3e87a10c, (q31_t)0x4dafe04b, (q31_t)0x3e84f245, + (q31_t)0x4dbc2698, (q31_t)0x3e824114, (q31_t)0x4dc86c5d, (q31_t)0x3e7f8d7b, + (q31_t)0x4dd4b19a, (q31_t)0x3e7cd778, (q31_t)0x4de0f64f, (q31_t)0x3e7a1f0d, + (q31_t)0x4ded3a7b, (q31_t)0x3e77643a, (q31_t)0x4df97e1d, (q31_t)0x3e74a6fd, + (q31_t)0x4e05c135, (q31_t)0x3e71e759, (q31_t)0x4e1203c3, (q31_t)0x3e6f254c, + (q31_t)0x4e1e45c6, (q31_t)0x3e6c60d7, (q31_t)0x4e2a873e, (q31_t)0x3e6999fa, + (q31_t)0x4e36c82a, (q31_t)0x3e66d0b4, (q31_t)0x4e430889, (q31_t)0x3e640507, + (q31_t)0x4e4f485c, (q31_t)0x3e6136f3, (q31_t)0x4e5b87a2, (q31_t)0x3e5e6676, + (q31_t)0x4e67c65a, (q31_t)0x3e5b9392, (q31_t)0x4e740483, (q31_t)0x3e58be47, + (q31_t)0x4e80421e, (q31_t)0x3e55e694, (q31_t)0x4e8c7f2a, (q31_t)0x3e530c7a, + (q31_t)0x4e98bba7, (q31_t)0x3e502ff9, (q31_t)0x4ea4f793, (q31_t)0x3e4d5110, + (q31_t)0x4eb132ef, (q31_t)0x3e4a6fc1, (q31_t)0x4ebd6db9, (q31_t)0x3e478c0b, + (q31_t)0x4ec9a7f3, (q31_t)0x3e44a5ef, (q31_t)0x4ed5e19a, (q31_t)0x3e41bd6c, + (q31_t)0x4ee21aaf, (q31_t)0x3e3ed282, (q31_t)0x4eee5331, (q31_t)0x3e3be532, + (q31_t)0x4efa8b20, (q31_t)0x3e38f57c, (q31_t)0x4f06c27a, (q31_t)0x3e360360, + (q31_t)0x4f12f941, (q31_t)0x3e330ede, (q31_t)0x4f1f2f73, (q31_t)0x3e3017f6, + (q31_t)0x4f2b650f, (q31_t)0x3e2d1ea8, (q31_t)0x4f379a16, (q31_t)0x3e2a22f4, + (q31_t)0x4f43ce86, (q31_t)0x3e2724db, (q31_t)0x4f500260, (q31_t)0x3e24245d, + (q31_t)0x4f5c35a3, (q31_t)0x3e212179, (q31_t)0x4f68684e, (q31_t)0x3e1e1c30, + (q31_t)0x4f749a61, (q31_t)0x3e1b1482, (q31_t)0x4f80cbdc, (q31_t)0x3e180a6f, + (q31_t)0x4f8cfcbe, (q31_t)0x3e14fdf7, (q31_t)0x4f992d06, (q31_t)0x3e11ef1b, + (q31_t)0x4fa55cb4, (q31_t)0x3e0eddd9, (q31_t)0x4fb18bc8, (q31_t)0x3e0bca34, + (q31_t)0x4fbdba40, (q31_t)0x3e08b42a, (q31_t)0x4fc9e81e, (q31_t)0x3e059bbb, + (q31_t)0x4fd6155f, (q31_t)0x3e0280e9, (q31_t)0x4fe24205, (q31_t)0x3dff63b2, + (q31_t)0x4fee6e0d, (q31_t)0x3dfc4418, (q31_t)0x4ffa9979, (q31_t)0x3df9221a, + (q31_t)0x5006c446, (q31_t)0x3df5fdb8, (q31_t)0x5012ee76, (q31_t)0x3df2d6f3, + (q31_t)0x501f1807, (q31_t)0x3defadca, (q31_t)0x502b40f8, (q31_t)0x3dec823e, + (q31_t)0x5037694b, (q31_t)0x3de9544f, (q31_t)0x504390fd, (q31_t)0x3de623fd, + (q31_t)0x504fb80e, (q31_t)0x3de2f148, (q31_t)0x505bde7f, (q31_t)0x3ddfbc30, + (q31_t)0x5068044e, (q31_t)0x3ddc84b5, (q31_t)0x5074297b, (q31_t)0x3dd94ad8, + (q31_t)0x50804e06, (q31_t)0x3dd60e99, (q31_t)0x508c71ee, (q31_t)0x3dd2cff7, + (q31_t)0x50989532, (q31_t)0x3dcf8ef3, (q31_t)0x50a4b7d3, (q31_t)0x3dcc4b8d, + (q31_t)0x50b0d9d0, (q31_t)0x3dc905c5, (q31_t)0x50bcfb28, (q31_t)0x3dc5bd9b, + (q31_t)0x50c91bda, (q31_t)0x3dc2730f, (q31_t)0x50d53be7, (q31_t)0x3dbf2622, + (q31_t)0x50e15b4e, (q31_t)0x3dbbd6d4, (q31_t)0x50ed7a0e, (q31_t)0x3db88524, + (q31_t)0x50f99827, (q31_t)0x3db53113, (q31_t)0x5105b599, (q31_t)0x3db1daa2, + (q31_t)0x5111d263, (q31_t)0x3dae81cf, (q31_t)0x511dee84, (q31_t)0x3dab269b, + (q31_t)0x512a09fc, (q31_t)0x3da7c907, (q31_t)0x513624cb, (q31_t)0x3da46912, + (q31_t)0x51423ef0, (q31_t)0x3da106bd, (q31_t)0x514e586a, (q31_t)0x3d9da208, + (q31_t)0x515a713a, (q31_t)0x3d9a3af2, (q31_t)0x5166895f, (q31_t)0x3d96d17d, + (q31_t)0x5172a0d7, (q31_t)0x3d9365a8, (q31_t)0x517eb7a4, (q31_t)0x3d8ff772, + (q31_t)0x518acdc4, (q31_t)0x3d8c86de, (q31_t)0x5196e337, (q31_t)0x3d8913ea, + (q31_t)0x51a2f7fc, (q31_t)0x3d859e96, (q31_t)0x51af0c13, (q31_t)0x3d8226e4, + (q31_t)0x51bb1f7c, (q31_t)0x3d7eacd2, (q31_t)0x51c73235, (q31_t)0x3d7b3061, + (q31_t)0x51d3443f, (q31_t)0x3d77b192, (q31_t)0x51df5599, (q31_t)0x3d743064, + (q31_t)0x51eb6643, (q31_t)0x3d70acd7, (q31_t)0x51f7763c, (q31_t)0x3d6d26ec, + (q31_t)0x52038584, (q31_t)0x3d699ea3, (q31_t)0x520f941a, (q31_t)0x3d6613fb, + (q31_t)0x521ba1fd, (q31_t)0x3d6286f6, (q31_t)0x5227af2e, (q31_t)0x3d5ef793, + (q31_t)0x5233bbac, (q31_t)0x3d5b65d2, (q31_t)0x523fc776, (q31_t)0x3d57d1b3, + (q31_t)0x524bd28c, (q31_t)0x3d543b37, (q31_t)0x5257dced, (q31_t)0x3d50a25e, + (q31_t)0x5263e699, (q31_t)0x3d4d0728, (q31_t)0x526fef90, (q31_t)0x3d496994, + (q31_t)0x527bf7d1, (q31_t)0x3d45c9a4, (q31_t)0x5287ff5b, (q31_t)0x3d422757, + (q31_t)0x5294062f, (q31_t)0x3d3e82ae, (q31_t)0x52a00c4b, (q31_t)0x3d3adba7, + (q31_t)0x52ac11af, (q31_t)0x3d373245, (q31_t)0x52b8165b, (q31_t)0x3d338687, + (q31_t)0x52c41a4f, (q31_t)0x3d2fd86c, (q31_t)0x52d01d89, (q31_t)0x3d2c27f6, + (q31_t)0x52dc2009, (q31_t)0x3d287523, (q31_t)0x52e821cf, (q31_t)0x3d24bff6, + (q31_t)0x52f422db, (q31_t)0x3d21086c, (q31_t)0x5300232c, (q31_t)0x3d1d4e88, + (q31_t)0x530c22c1, (q31_t)0x3d199248, (q31_t)0x5318219a, (q31_t)0x3d15d3ad, + (q31_t)0x53241fb6, (q31_t)0x3d1212b7, (q31_t)0x53301d16, (q31_t)0x3d0e4f67, + (q31_t)0x533c19b8, (q31_t)0x3d0a89bc, (q31_t)0x5348159d, (q31_t)0x3d06c1b6, + (q31_t)0x535410c3, (q31_t)0x3d02f757, (q31_t)0x53600b2a, (q31_t)0x3cff2a9d, + (q31_t)0x536c04d2, (q31_t)0x3cfb5b89, (q31_t)0x5377fdbb, (q31_t)0x3cf78a1b, + (q31_t)0x5383f5e3, (q31_t)0x3cf3b653, (q31_t)0x538fed4b, (q31_t)0x3cefe032, + (q31_t)0x539be3f2, (q31_t)0x3cec07b8, (q31_t)0x53a7d9d7, (q31_t)0x3ce82ce4, + (q31_t)0x53b3cefa, (q31_t)0x3ce44fb7, (q31_t)0x53bfc35b, (q31_t)0x3ce07031, + (q31_t)0x53cbb6f8, (q31_t)0x3cdc8e52, (q31_t)0x53d7a9d3, (q31_t)0x3cd8aa1b, + (q31_t)0x53e39be9, (q31_t)0x3cd4c38b, (q31_t)0x53ef8d3c, (q31_t)0x3cd0daa2, + (q31_t)0x53fb7dc9, (q31_t)0x3cccef62, (q31_t)0x54076d91, (q31_t)0x3cc901c9, + (q31_t)0x54135c94, (q31_t)0x3cc511d9, (q31_t)0x541f4ad1, (q31_t)0x3cc11f90, + (q31_t)0x542b3846, (q31_t)0x3cbd2af0, (q31_t)0x543724f5, (q31_t)0x3cb933f9, + (q31_t)0x544310dd, (q31_t)0x3cb53aaa, (q31_t)0x544efbfc, (q31_t)0x3cb13f04, + (q31_t)0x545ae653, (q31_t)0x3cad4107, (q31_t)0x5466cfe1, (q31_t)0x3ca940b3, + (q31_t)0x5472b8a5, (q31_t)0x3ca53e09, (q31_t)0x547ea0a0, (q31_t)0x3ca13908, + (q31_t)0x548a87d1, (q31_t)0x3c9d31b0, (q31_t)0x54966e36, (q31_t)0x3c992803, + (q31_t)0x54a253d1, (q31_t)0x3c951bff, (q31_t)0x54ae38a0, (q31_t)0x3c910da5, + (q31_t)0x54ba1ca3, (q31_t)0x3c8cfcf6, (q31_t)0x54c5ffd9, (q31_t)0x3c88e9f1, + (q31_t)0x54d1e242, (q31_t)0x3c84d496, (q31_t)0x54ddc3de, (q31_t)0x3c80bce7, + (q31_t)0x54e9a4ac, (q31_t)0x3c7ca2e2, (q31_t)0x54f584ac, (q31_t)0x3c788688, + (q31_t)0x550163dc, (q31_t)0x3c7467d9, (q31_t)0x550d423d, (q31_t)0x3c7046d6, + (q31_t)0x55191fcf, (q31_t)0x3c6c237e, (q31_t)0x5524fc90, (q31_t)0x3c67fdd1, + (q31_t)0x5530d881, (q31_t)0x3c63d5d1, (q31_t)0x553cb3a0, (q31_t)0x3c5fab7c, + (q31_t)0x55488dee, (q31_t)0x3c5b7ed4, (q31_t)0x5554676a, (q31_t)0x3c574fd8, + (q31_t)0x55604013, (q31_t)0x3c531e88, (q31_t)0x556c17e9, (q31_t)0x3c4eeae5, + (q31_t)0x5577eeec, (q31_t)0x3c4ab4ef, (q31_t)0x5583c51b, (q31_t)0x3c467ca6, + (q31_t)0x558f9a76, (q31_t)0x3c42420a, (q31_t)0x559b6efb, (q31_t)0x3c3e051b, + (q31_t)0x55a742ac, (q31_t)0x3c39c5da, (q31_t)0x55b31587, (q31_t)0x3c358446, + (q31_t)0x55bee78c, (q31_t)0x3c314060, (q31_t)0x55cab8ba, (q31_t)0x3c2cfa28, + (q31_t)0x55d68911, (q31_t)0x3c28b19e, (q31_t)0x55e25890, (q31_t)0x3c2466c2, + (q31_t)0x55ee2738, (q31_t)0x3c201994, (q31_t)0x55f9f507, (q31_t)0x3c1bca16, + (q31_t)0x5605c1fd, (q31_t)0x3c177845, (q31_t)0x56118e1a, (q31_t)0x3c132424, + (q31_t)0x561d595d, (q31_t)0x3c0ecdb2, (q31_t)0x562923c5, (q31_t)0x3c0a74f0, + (q31_t)0x5634ed53, (q31_t)0x3c0619dc, (q31_t)0x5640b606, (q31_t)0x3c01bc78, + (q31_t)0x564c7ddd, (q31_t)0x3bfd5cc4, (q31_t)0x565844d8, (q31_t)0x3bf8fac0, + (q31_t)0x56640af7, (q31_t)0x3bf4966c, (q31_t)0x566fd039, (q31_t)0x3bf02fc9, + (q31_t)0x567b949d, (q31_t)0x3bebc6d5, (q31_t)0x56875823, (q31_t)0x3be75b93, + (q31_t)0x56931acb, (q31_t)0x3be2ee01, (q31_t)0x569edc94, (q31_t)0x3bde7e20, + (q31_t)0x56aa9d7e, (q31_t)0x3bda0bf0, (q31_t)0x56b65d88, (q31_t)0x3bd59771, + (q31_t)0x56c21cb2, (q31_t)0x3bd120a4, (q31_t)0x56cddafb, (q31_t)0x3bcca789, + (q31_t)0x56d99864, (q31_t)0x3bc82c1f, (q31_t)0x56e554ea, (q31_t)0x3bc3ae67, + (q31_t)0x56f1108f, (q31_t)0x3bbf2e62, (q31_t)0x56fccb51, (q31_t)0x3bbaac0e, + (q31_t)0x57088531, (q31_t)0x3bb6276e, (q31_t)0x57143e2d, (q31_t)0x3bb1a080, + (q31_t)0x571ff646, (q31_t)0x3bad1744, (q31_t)0x572bad7a, (q31_t)0x3ba88bbc, + (q31_t)0x573763c9, (q31_t)0x3ba3fde7, (q31_t)0x57431933, (q31_t)0x3b9f6dc5, + (q31_t)0x574ecdb8, (q31_t)0x3b9adb57, (q31_t)0x575a8157, (q31_t)0x3b96469d, + (q31_t)0x5766340f, (q31_t)0x3b91af97, (q31_t)0x5771e5e0, (q31_t)0x3b8d1644, + (q31_t)0x577d96ca, (q31_t)0x3b887aa6, (q31_t)0x578946cc, (q31_t)0x3b83dcbc, + (q31_t)0x5794f5e6, (q31_t)0x3b7f3c87, (q31_t)0x57a0a417, (q31_t)0x3b7a9a07, + (q31_t)0x57ac515f, (q31_t)0x3b75f53c, (q31_t)0x57b7fdbd, (q31_t)0x3b714e25, + (q31_t)0x57c3a931, (q31_t)0x3b6ca4c4, (q31_t)0x57cf53bb, (q31_t)0x3b67f919, + (q31_t)0x57dafd59, (q31_t)0x3b634b23, (q31_t)0x57e6a60c, (q31_t)0x3b5e9ae4, + (q31_t)0x57f24dd3, (q31_t)0x3b59e85a, (q31_t)0x57fdf4ae, (q31_t)0x3b553386, + (q31_t)0x58099a9c, (q31_t)0x3b507c69, (q31_t)0x58153f9d, (q31_t)0x3b4bc303, + (q31_t)0x5820e3b0, (q31_t)0x3b470753, (q31_t)0x582c86d5, (q31_t)0x3b42495a, + (q31_t)0x5838290c, (q31_t)0x3b3d8918, (q31_t)0x5843ca53, (q31_t)0x3b38c68e, + (q31_t)0x584f6aab, (q31_t)0x3b3401bb, (q31_t)0x585b0a13, (q31_t)0x3b2f3aa0, + (q31_t)0x5866a88a, (q31_t)0x3b2a713d, (q31_t)0x58724611, (q31_t)0x3b25a591, + (q31_t)0x587de2a7, (q31_t)0x3b20d79e, (q31_t)0x58897e4a, (q31_t)0x3b1c0764, + (q31_t)0x589518fc, (q31_t)0x3b1734e2, (q31_t)0x58a0b2bb, (q31_t)0x3b126019, + (q31_t)0x58ac4b87, (q31_t)0x3b0d8909, (q31_t)0x58b7e35f, (q31_t)0x3b08afb2, + (q31_t)0x58c37a44, (q31_t)0x3b03d414, (q31_t)0x58cf1034, (q31_t)0x3afef630, + (q31_t)0x58daa52f, (q31_t)0x3afa1605, (q31_t)0x58e63935, (q31_t)0x3af53395, + (q31_t)0x58f1cc45, (q31_t)0x3af04edf, (q31_t)0x58fd5e5f, (q31_t)0x3aeb67e3, + (q31_t)0x5908ef82, (q31_t)0x3ae67ea1, (q31_t)0x59147fae, (q31_t)0x3ae1931a, + (q31_t)0x59200ee3, (q31_t)0x3adca54e, (q31_t)0x592b9d1f, (q31_t)0x3ad7b53d, + (q31_t)0x59372a64, (q31_t)0x3ad2c2e8, (q31_t)0x5942b6af, (q31_t)0x3acdce4d, + (q31_t)0x594e4201, (q31_t)0x3ac8d76f, (q31_t)0x5959cc5a, (q31_t)0x3ac3de4c, + (q31_t)0x596555b8, (q31_t)0x3abee2e5, (q31_t)0x5970de1b, (q31_t)0x3ab9e53a, + (q31_t)0x597c6584, (q31_t)0x3ab4e54c, (q31_t)0x5987ebf0, (q31_t)0x3aafe31b, + (q31_t)0x59937161, (q31_t)0x3aaadea6, (q31_t)0x599ef5d6, (q31_t)0x3aa5d7ee, + (q31_t)0x59aa794d, (q31_t)0x3aa0cef3, (q31_t)0x59b5fbc8, (q31_t)0x3a9bc3b6, + (q31_t)0x59c17d44, (q31_t)0x3a96b636, (q31_t)0x59ccfdc2, (q31_t)0x3a91a674, + (q31_t)0x59d87d42, (q31_t)0x3a8c9470, (q31_t)0x59e3fbc3, (q31_t)0x3a87802a, + (q31_t)0x59ef7944, (q31_t)0x3a8269a3, (q31_t)0x59faf5c5, (q31_t)0x3a7d50da, + (q31_t)0x5a067145, (q31_t)0x3a7835cf, (q31_t)0x5a11ebc5, (q31_t)0x3a731884, + (q31_t)0x5a1d6544, (q31_t)0x3a6df8f8, (q31_t)0x5a28ddc0, (q31_t)0x3a68d72b, + (q31_t)0x5a34553b, (q31_t)0x3a63b31d, (q31_t)0x5a3fcbb3, (q31_t)0x3a5e8cd0, + (q31_t)0x5a4b4128, (q31_t)0x3a596442, (q31_t)0x5a56b599, (q31_t)0x3a543974, + (q31_t)0x5a622907, (q31_t)0x3a4f0c67, (q31_t)0x5a6d9b70, (q31_t)0x3a49dd1a, + (q31_t)0x5a790cd4, (q31_t)0x3a44ab8e, (q31_t)0x5a847d33, (q31_t)0x3a3f77c3, + (q31_t)0x5a8fec8c, (q31_t)0x3a3a41b9, (q31_t)0x5a9b5adf, (q31_t)0x3a350970, + (q31_t)0x5aa6c82b, (q31_t)0x3a2fcee8, (q31_t)0x5ab23471, (q31_t)0x3a2a9223, + (q31_t)0x5abd9faf, (q31_t)0x3a25531f, (q31_t)0x5ac909e5, (q31_t)0x3a2011de, + (q31_t)0x5ad47312, (q31_t)0x3a1ace5f, (q31_t)0x5adfdb37, (q31_t)0x3a1588a2, + (q31_t)0x5aeb4253, (q31_t)0x3a1040a8, (q31_t)0x5af6a865, (q31_t)0x3a0af671, + (q31_t)0x5b020d6c, (q31_t)0x3a05a9fd, (q31_t)0x5b0d716a, (q31_t)0x3a005b4d, + (q31_t)0x5b18d45c, (q31_t)0x39fb0a60, (q31_t)0x5b243643, (q31_t)0x39f5b737, + (q31_t)0x5b2f971e, (q31_t)0x39f061d2, (q31_t)0x5b3af6ec, (q31_t)0x39eb0a31, + (q31_t)0x5b4655ae, (q31_t)0x39e5b054, (q31_t)0x5b51b363, (q31_t)0x39e0543c, + (q31_t)0x5b5d100a, (q31_t)0x39daf5e8, (q31_t)0x5b686ba3, (q31_t)0x39d5955a, + (q31_t)0x5b73c62d, (q31_t)0x39d03291, (q31_t)0x5b7f1fa9, (q31_t)0x39cacd8d, + (q31_t)0x5b8a7815, (q31_t)0x39c5664f, (q31_t)0x5b95cf71, (q31_t)0x39bffcd7, + (q31_t)0x5ba125bd, (q31_t)0x39ba9125, (q31_t)0x5bac7af9, (q31_t)0x39b52339, + (q31_t)0x5bb7cf23, (q31_t)0x39afb313, (q31_t)0x5bc3223c, (q31_t)0x39aa40b4, + (q31_t)0x5bce7442, (q31_t)0x39a4cc1c, (q31_t)0x5bd9c537, (q31_t)0x399f554b, + (q31_t)0x5be51518, (q31_t)0x3999dc42, (q31_t)0x5bf063e6, (q31_t)0x399460ff, + (q31_t)0x5bfbb1a0, (q31_t)0x398ee385, (q31_t)0x5c06fe46, (q31_t)0x398963d2, + (q31_t)0x5c1249d8, (q31_t)0x3983e1e8, (q31_t)0x5c1d9454, (q31_t)0x397e5dc6, + (q31_t)0x5c28ddbb, (q31_t)0x3978d76c, (q31_t)0x5c34260c, (q31_t)0x39734edc, + (q31_t)0x5c3f6d47, (q31_t)0x396dc414, (q31_t)0x5c4ab36b, (q31_t)0x39683715, + (q31_t)0x5c55f878, (q31_t)0x3962a7e0, (q31_t)0x5c613c6d, (q31_t)0x395d1675, + (q31_t)0x5c6c7f4a, (q31_t)0x395782d3, (q31_t)0x5c77c10e, (q31_t)0x3951ecfc, + (q31_t)0x5c8301b9, (q31_t)0x394c54ee, (q31_t)0x5c8e414b, (q31_t)0x3946baac, + (q31_t)0x5c997fc4, (q31_t)0x39411e33, (q31_t)0x5ca4bd21, (q31_t)0x393b7f86, + (q31_t)0x5caff965, (q31_t)0x3935dea4, (q31_t)0x5cbb348d, (q31_t)0x39303b8e, + (q31_t)0x5cc66e99, (q31_t)0x392a9642, (q31_t)0x5cd1a78a, (q31_t)0x3924eec3, + (q31_t)0x5cdcdf5e, (q31_t)0x391f4510, (q31_t)0x5ce81615, (q31_t)0x39199929, + (q31_t)0x5cf34baf, (q31_t)0x3913eb0e, (q31_t)0x5cfe802b, (q31_t)0x390e3ac0, + (q31_t)0x5d09b389, (q31_t)0x3908883f, (q31_t)0x5d14e5c9, (q31_t)0x3902d38b, + (q31_t)0x5d2016e9, (q31_t)0x38fd1ca4, (q31_t)0x5d2b46ea, (q31_t)0x38f7638b, + (q31_t)0x5d3675cb, (q31_t)0x38f1a840, (q31_t)0x5d41a38c, (q31_t)0x38ebeac2, + (q31_t)0x5d4cd02c, (q31_t)0x38e62b13, (q31_t)0x5d57fbaa, (q31_t)0x38e06932, + (q31_t)0x5d632608, (q31_t)0x38daa520, (q31_t)0x5d6e4f43, (q31_t)0x38d4dedd, + (q31_t)0x5d79775c, (q31_t)0x38cf1669, (q31_t)0x5d849e51, (q31_t)0x38c94bc4, + (q31_t)0x5d8fc424, (q31_t)0x38c37eef, (q31_t)0x5d9ae8d2, (q31_t)0x38bdafea, + (q31_t)0x5da60c5d, (q31_t)0x38b7deb4, (q31_t)0x5db12ec3, (q31_t)0x38b20b4f, + (q31_t)0x5dbc5004, (q31_t)0x38ac35ba, (q31_t)0x5dc7701f, (q31_t)0x38a65df6, + (q31_t)0x5dd28f15, (q31_t)0x38a08402, (q31_t)0x5dddace4, (q31_t)0x389aa7e0, + (q31_t)0x5de8c98c, (q31_t)0x3894c98f, (q31_t)0x5df3e50d, (q31_t)0x388ee910, + (q31_t)0x5dfeff67, (q31_t)0x38890663, (q31_t)0x5e0a1898, (q31_t)0x38832187, + (q31_t)0x5e1530a1, (q31_t)0x387d3a7e, (q31_t)0x5e204781, (q31_t)0x38775147, + (q31_t)0x5e2b5d38, (q31_t)0x387165e3, (q31_t)0x5e3671c5, (q31_t)0x386b7852, + (q31_t)0x5e418528, (q31_t)0x38658894, (q31_t)0x5e4c9760, (q31_t)0x385f96a9, + (q31_t)0x5e57a86d, (q31_t)0x3859a292, (q31_t)0x5e62b84f, (q31_t)0x3853ac4f, + (q31_t)0x5e6dc705, (q31_t)0x384db3e0, (q31_t)0x5e78d48e, (q31_t)0x3847b946, + (q31_t)0x5e83e0eb, (q31_t)0x3841bc7f, (q31_t)0x5e8eec1b, (q31_t)0x383bbd8e, + (q31_t)0x5e99f61d, (q31_t)0x3835bc71, (q31_t)0x5ea4fef0, (q31_t)0x382fb92a, + (q31_t)0x5eb00696, (q31_t)0x3829b3b9, (q31_t)0x5ebb0d0d, (q31_t)0x3823ac1d, + (q31_t)0x5ec61254, (q31_t)0x381da256, (q31_t)0x5ed1166b, (q31_t)0x38179666, + (q31_t)0x5edc1953, (q31_t)0x3811884d, (q31_t)0x5ee71b0a, (q31_t)0x380b780a, + (q31_t)0x5ef21b90, (q31_t)0x3805659e, (q31_t)0x5efd1ae4, (q31_t)0x37ff5109, + (q31_t)0x5f081907, (q31_t)0x37f93a4b, (q31_t)0x5f1315f7, (q31_t)0x37f32165, + (q31_t)0x5f1e11b5, (q31_t)0x37ed0657, (q31_t)0x5f290c3f, (q31_t)0x37e6e921, + (q31_t)0x5f340596, (q31_t)0x37e0c9c3, (q31_t)0x5f3efdb9, (q31_t)0x37daa83d, + (q31_t)0x5f49f4a8, (q31_t)0x37d48490, (q31_t)0x5f54ea62, (q31_t)0x37ce5ebd, + (q31_t)0x5f5fdee6, (q31_t)0x37c836c2, (q31_t)0x5f6ad235, (q31_t)0x37c20ca1, + (q31_t)0x5f75c44e, (q31_t)0x37bbe05a, (q31_t)0x5f80b531, (q31_t)0x37b5b1ec, + (q31_t)0x5f8ba4dc, (q31_t)0x37af8159, (q31_t)0x5f969350, (q31_t)0x37a94ea0, + (q31_t)0x5fa1808c, (q31_t)0x37a319c2, (q31_t)0x5fac6c91, (q31_t)0x379ce2be, + (q31_t)0x5fb7575c, (q31_t)0x3796a996, (q31_t)0x5fc240ef, (q31_t)0x37906e49, + (q31_t)0x5fcd2948, (q31_t)0x378a30d8, (q31_t)0x5fd81067, (q31_t)0x3783f143, + (q31_t)0x5fe2f64c, (q31_t)0x377daf89, (q31_t)0x5feddaf6, (q31_t)0x37776bac, + (q31_t)0x5ff8be65, (q31_t)0x377125ac, (q31_t)0x6003a099, (q31_t)0x376add88, + (q31_t)0x600e8190, (q31_t)0x37649341, (q31_t)0x6019614c, (q31_t)0x375e46d8, + (q31_t)0x60243fca, (q31_t)0x3757f84c, (q31_t)0x602f1d0b, (q31_t)0x3751a79e, + (q31_t)0x6039f90f, (q31_t)0x374b54ce, (q31_t)0x6044d3d4, (q31_t)0x3744ffdd, + (q31_t)0x604fad5b, (q31_t)0x373ea8ca, (q31_t)0x605a85a3, (q31_t)0x37384f95, + (q31_t)0x60655cac, (q31_t)0x3731f440, (q31_t)0x60703275, (q31_t)0x372b96ca, + (q31_t)0x607b06fe, (q31_t)0x37253733, (q31_t)0x6085da46, (q31_t)0x371ed57c, + (q31_t)0x6090ac4d, (q31_t)0x371871a5, (q31_t)0x609b7d13, (q31_t)0x37120bae, + (q31_t)0x60a64c97, (q31_t)0x370ba398, (q31_t)0x60b11ad9, (q31_t)0x37053962, + (q31_t)0x60bbe7d8, (q31_t)0x36fecd0e, (q31_t)0x60c6b395, (q31_t)0x36f85e9a, + (q31_t)0x60d17e0d, (q31_t)0x36f1ee09, (q31_t)0x60dc4742, (q31_t)0x36eb7b58, + (q31_t)0x60e70f32, (q31_t)0x36e5068a, (q31_t)0x60f1d5de, (q31_t)0x36de8f9e, + (q31_t)0x60fc9b44, (q31_t)0x36d81695, (q31_t)0x61075f65, (q31_t)0x36d19b6e, + (q31_t)0x61122240, (q31_t)0x36cb1e2a, (q31_t)0x611ce3d5, (q31_t)0x36c49ec9, + (q31_t)0x6127a423, (q31_t)0x36be1d4c, (q31_t)0x61326329, (q31_t)0x36b799b3, + (q31_t)0x613d20e8, (q31_t)0x36b113fd, (q31_t)0x6147dd5f, (q31_t)0x36aa8c2c, + (q31_t)0x6152988d, (q31_t)0x36a4023f, (q31_t)0x615d5273, (q31_t)0x369d7637, + (q31_t)0x61680b0f, (q31_t)0x3696e814, (q31_t)0x6172c262, (q31_t)0x369057d6, + (q31_t)0x617d786a, (q31_t)0x3689c57d, (q31_t)0x61882d28, (q31_t)0x3683310b, + (q31_t)0x6192e09b, (q31_t)0x367c9a7e, (q31_t)0x619d92c2, (q31_t)0x367601d7, + (q31_t)0x61a8439e, (q31_t)0x366f6717, (q31_t)0x61b2f32e, (q31_t)0x3668ca3e, + (q31_t)0x61bda171, (q31_t)0x36622b4c, (q31_t)0x61c84e67, (q31_t)0x365b8a41, + (q31_t)0x61d2fa0f, (q31_t)0x3654e71d, (q31_t)0x61dda46a, (q31_t)0x364e41e2, + (q31_t)0x61e84d76, (q31_t)0x36479a8e, (q31_t)0x61f2f534, (q31_t)0x3640f123, + (q31_t)0x61fd9ba3, (q31_t)0x363a45a0, (q31_t)0x620840c2, (q31_t)0x36339806, + (q31_t)0x6212e492, (q31_t)0x362ce855, (q31_t)0x621d8711, (q31_t)0x3626368d, + (q31_t)0x6228283f, (q31_t)0x361f82af, (q31_t)0x6232c81c, (q31_t)0x3618ccba, + (q31_t)0x623d66a8, (q31_t)0x361214b0, (q31_t)0x624803e2, (q31_t)0x360b5a90, + (q31_t)0x62529fca, (q31_t)0x36049e5b, (q31_t)0x625d3a5e, (q31_t)0x35fde011, + (q31_t)0x6267d3a0, (q31_t)0x35f71fb1, (q31_t)0x62726b8e, (q31_t)0x35f05d3d, + (q31_t)0x627d0228, (q31_t)0x35e998b5, (q31_t)0x6287976e, (q31_t)0x35e2d219, + (q31_t)0x62922b5e, (q31_t)0x35dc0968, (q31_t)0x629cbdfa, (q31_t)0x35d53ea5, + (q31_t)0x62a74f40, (q31_t)0x35ce71ce, (q31_t)0x62b1df30, (q31_t)0x35c7a2e3, + (q31_t)0x62bc6dca, (q31_t)0x35c0d1e7, (q31_t)0x62c6fb0c, (q31_t)0x35b9fed7, + (q31_t)0x62d186f8, (q31_t)0x35b329b5, (q31_t)0x62dc118c, (q31_t)0x35ac5282, + (q31_t)0x62e69ac8, (q31_t)0x35a5793c, (q31_t)0x62f122ab, (q31_t)0x359e9de5, + (q31_t)0x62fba936, (q31_t)0x3597c07d, (q31_t)0x63062e67, (q31_t)0x3590e104, + (q31_t)0x6310b23e, (q31_t)0x3589ff7a, (q31_t)0x631b34bc, (q31_t)0x35831be0, + (q31_t)0x6325b5df, (q31_t)0x357c3636, (q31_t)0x633035a7, (q31_t)0x35754e7c, + (q31_t)0x633ab414, (q31_t)0x356e64b2, (q31_t)0x63453125, (q31_t)0x356778d9, + (q31_t)0x634facda, (q31_t)0x35608af1, (q31_t)0x635a2733, (q31_t)0x35599afa, + (q31_t)0x6364a02e, (q31_t)0x3552a8f4, (q31_t)0x636f17cc, (q31_t)0x354bb4e1, + (q31_t)0x63798e0d, (q31_t)0x3544bebf, (q31_t)0x638402ef, (q31_t)0x353dc68f, + (q31_t)0x638e7673, (q31_t)0x3536cc52, (q31_t)0x6398e898, (q31_t)0x352fd008, + (q31_t)0x63a3595e, (q31_t)0x3528d1b1, (q31_t)0x63adc8c4, (q31_t)0x3521d14d, + (q31_t)0x63b836ca, (q31_t)0x351acedd, (q31_t)0x63c2a36f, (q31_t)0x3513ca60, + (q31_t)0x63cd0eb3, (q31_t)0x350cc3d8, (q31_t)0x63d77896, (q31_t)0x3505bb44, + (q31_t)0x63e1e117, (q31_t)0x34feb0a5, (q31_t)0x63ec4837, (q31_t)0x34f7a3fb, + (q31_t)0x63f6adf3, (q31_t)0x34f09546, (q31_t)0x6401124d, (q31_t)0x34e98487, + (q31_t)0x640b7543, (q31_t)0x34e271bd, (q31_t)0x6415d6d5, (q31_t)0x34db5cea, + (q31_t)0x64203704, (q31_t)0x34d4460c, (q31_t)0x642a95ce, (q31_t)0x34cd2d26, + (q31_t)0x6434f332, (q31_t)0x34c61236, (q31_t)0x643f4f32, (q31_t)0x34bef53d, + (q31_t)0x6449a9cc, (q31_t)0x34b7d63c, (q31_t)0x645402ff, (q31_t)0x34b0b533, + (q31_t)0x645e5acc, (q31_t)0x34a99221, (q31_t)0x6468b132, (q31_t)0x34a26d08, + (q31_t)0x64730631, (q31_t)0x349b45e7, (q31_t)0x647d59c8, (q31_t)0x34941cbf, + (q31_t)0x6487abf7, (q31_t)0x348cf190, (q31_t)0x6491fcbe, (q31_t)0x3485c45b, + (q31_t)0x649c4c1b, (q31_t)0x347e951f, (q31_t)0x64a69a0f, (q31_t)0x347763dd, + (q31_t)0x64b0e699, (q31_t)0x34703095, (q31_t)0x64bb31ba, (q31_t)0x3468fb47, + (q31_t)0x64c57b6f, (q31_t)0x3461c3f5, (q31_t)0x64cfc3ba, (q31_t)0x345a8a9d, + (q31_t)0x64da0a9a, (q31_t)0x34534f41, (q31_t)0x64e4500e, (q31_t)0x344c11e0, + (q31_t)0x64ee9415, (q31_t)0x3444d27b, (q31_t)0x64f8d6b0, (q31_t)0x343d9112, + (q31_t)0x650317df, (q31_t)0x34364da6, (q31_t)0x650d57a0, (q31_t)0x342f0836, + (q31_t)0x651795f3, (q31_t)0x3427c0c3, (q31_t)0x6521d2d8, (q31_t)0x3420774d, + (q31_t)0x652c0e4f, (q31_t)0x34192bd5, (q31_t)0x65364857, (q31_t)0x3411de5b, + (q31_t)0x654080ef, (q31_t)0x340a8edf, (q31_t)0x654ab818, (q31_t)0x34033d61, + (q31_t)0x6554edd1, (q31_t)0x33fbe9e2, (q31_t)0x655f2219, (q31_t)0x33f49462, + (q31_t)0x656954f1, (q31_t)0x33ed3ce1, (q31_t)0x65738657, (q31_t)0x33e5e360, + (q31_t)0x657db64c, (q31_t)0x33de87de, (q31_t)0x6587e4cf, (q31_t)0x33d72a5d, + (q31_t)0x659211df, (q31_t)0x33cfcadc, (q31_t)0x659c3d7c, (q31_t)0x33c8695b, + (q31_t)0x65a667a7, (q31_t)0x33c105db, (q31_t)0x65b0905d, (q31_t)0x33b9a05d, + (q31_t)0x65bab7a0, (q31_t)0x33b238e0, (q31_t)0x65c4dd6e, (q31_t)0x33aacf65, + (q31_t)0x65cf01c8, (q31_t)0x33a363ec, (q31_t)0x65d924ac, (q31_t)0x339bf675, + (q31_t)0x65e3461b, (q31_t)0x33948701, (q31_t)0x65ed6614, (q31_t)0x338d1590, + (q31_t)0x65f78497, (q31_t)0x3385a222, (q31_t)0x6601a1a2, (q31_t)0x337e2cb7, + (q31_t)0x660bbd37, (q31_t)0x3376b551, (q31_t)0x6615d754, (q31_t)0x336f3bee, + (q31_t)0x661feffa, (q31_t)0x3367c090, (q31_t)0x662a0727, (q31_t)0x33604336, + (q31_t)0x66341cdb, (q31_t)0x3358c3e2, (q31_t)0x663e3117, (q31_t)0x33514292, + (q31_t)0x664843d9, (q31_t)0x3349bf48, (q31_t)0x66525521, (q31_t)0x33423a04, + (q31_t)0x665c64ef, (q31_t)0x333ab2c6, (q31_t)0x66667342, (q31_t)0x3333298f, + (q31_t)0x6670801a, (q31_t)0x332b9e5e, (q31_t)0x667a8b77, (q31_t)0x33241134, + (q31_t)0x66849558, (q31_t)0x331c8211, (q31_t)0x668e9dbd, (q31_t)0x3314f0f6, + (q31_t)0x6698a4a6, (q31_t)0x330d5de3, (q31_t)0x66a2aa11, (q31_t)0x3305c8d7, + (q31_t)0x66acadff, (q31_t)0x32fe31d5, (q31_t)0x66b6b070, (q31_t)0x32f698db, + (q31_t)0x66c0b162, (q31_t)0x32eefdea, (q31_t)0x66cab0d6, (q31_t)0x32e76102, + (q31_t)0x66d4aecb, (q31_t)0x32dfc224, (q31_t)0x66deab41, (q31_t)0x32d82150, + (q31_t)0x66e8a637, (q31_t)0x32d07e85, (q31_t)0x66f29fad, (q31_t)0x32c8d9c6, + (q31_t)0x66fc97a3, (q31_t)0x32c13311, (q31_t)0x67068e18, (q31_t)0x32b98a67, + (q31_t)0x6710830c, (q31_t)0x32b1dfc9, (q31_t)0x671a767e, (q31_t)0x32aa3336, + (q31_t)0x6724686e, (q31_t)0x32a284b0, (q31_t)0x672e58dc, (q31_t)0x329ad435, + (q31_t)0x673847c8, (q31_t)0x329321c7, (q31_t)0x67423530, (q31_t)0x328b6d66, + (q31_t)0x674c2115, (q31_t)0x3283b712, (q31_t)0x67560b76, (q31_t)0x327bfecc, + (q31_t)0x675ff452, (q31_t)0x32744493, (q31_t)0x6769dbaa, (q31_t)0x326c8868, + (q31_t)0x6773c17d, (q31_t)0x3264ca4c, (q31_t)0x677da5cb, (q31_t)0x325d0a3e, + (q31_t)0x67878893, (q31_t)0x32554840, (q31_t)0x679169d5, (q31_t)0x324d8450, + (q31_t)0x679b4990, (q31_t)0x3245be70, (q31_t)0x67a527c4, (q31_t)0x323df6a0, + (q31_t)0x67af0472, (q31_t)0x32362ce0, (q31_t)0x67b8df97, (q31_t)0x322e6130, + (q31_t)0x67c2b934, (q31_t)0x32269391, (q31_t)0x67cc9149, (q31_t)0x321ec403, + (q31_t)0x67d667d5, (q31_t)0x3216f287, (q31_t)0x67e03cd8, (q31_t)0x320f1f1c, + (q31_t)0x67ea1052, (q31_t)0x320749c3, (q31_t)0x67f3e241, (q31_t)0x31ff727c, + (q31_t)0x67fdb2a7, (q31_t)0x31f79948, (q31_t)0x68078181, (q31_t)0x31efbe27, + (q31_t)0x68114ed0, (q31_t)0x31e7e118, (q31_t)0x681b1a94, (q31_t)0x31e0021e, + (q31_t)0x6824e4cc, (q31_t)0x31d82137, (q31_t)0x682ead78, (q31_t)0x31d03e64, + (q31_t)0x68387498, (q31_t)0x31c859a5, (q31_t)0x68423a2a, (q31_t)0x31c072fb, + (q31_t)0x684bfe2f, (q31_t)0x31b88a66, (q31_t)0x6855c0a6, (q31_t)0x31b09fe7, + (q31_t)0x685f8190, (q31_t)0x31a8b37c, (q31_t)0x686940ea, (q31_t)0x31a0c528, + (q31_t)0x6872feb6, (q31_t)0x3198d4ea, (q31_t)0x687cbaf3, (q31_t)0x3190e2c3, + (q31_t)0x688675a0, (q31_t)0x3188eeb2, (q31_t)0x68902ebd, (q31_t)0x3180f8b8, + (q31_t)0x6899e64a, (q31_t)0x317900d6, (q31_t)0x68a39c46, (q31_t)0x3171070c, + (q31_t)0x68ad50b1, (q31_t)0x31690b59, (q31_t)0x68b7038b, (q31_t)0x31610dbf, + (q31_t)0x68c0b4d2, (q31_t)0x31590e3e, (q31_t)0x68ca6488, (q31_t)0x31510cd5, + (q31_t)0x68d412ab, (q31_t)0x31490986, (q31_t)0x68ddbf3b, (q31_t)0x31410450, + (q31_t)0x68e76a37, (q31_t)0x3138fd35, (q31_t)0x68f113a0, (q31_t)0x3130f433, + (q31_t)0x68fabb75, (q31_t)0x3128e94c, (q31_t)0x690461b5, (q31_t)0x3120dc80, + (q31_t)0x690e0661, (q31_t)0x3118cdcf, (q31_t)0x6917a977, (q31_t)0x3110bd39, + (q31_t)0x69214af8, (q31_t)0x3108aabf, (q31_t)0x692aeae3, (q31_t)0x31009661, + (q31_t)0x69348937, (q31_t)0x30f8801f, (q31_t)0x693e25f5, (q31_t)0x30f067fb, + (q31_t)0x6947c11c, (q31_t)0x30e84df3, (q31_t)0x69515aab, (q31_t)0x30e03208, + (q31_t)0x695af2a3, (q31_t)0x30d8143b, (q31_t)0x69648902, (q31_t)0x30cff48c, + (q31_t)0x696e1dc9, (q31_t)0x30c7d2fb, (q31_t)0x6977b0f7, (q31_t)0x30bfaf89, + (q31_t)0x6981428c, (q31_t)0x30b78a36, (q31_t)0x698ad287, (q31_t)0x30af6302, + (q31_t)0x699460e8, (q31_t)0x30a739ed, (q31_t)0x699dedaf, (q31_t)0x309f0ef8, + (q31_t)0x69a778db, (q31_t)0x3096e223, (q31_t)0x69b1026c, (q31_t)0x308eb36f, + (q31_t)0x69ba8a61, (q31_t)0x308682dc, (q31_t)0x69c410ba, (q31_t)0x307e5069, + (q31_t)0x69cd9578, (q31_t)0x30761c18, (q31_t)0x69d71899, (q31_t)0x306de5e9, + (q31_t)0x69e09a1c, (q31_t)0x3065addb, (q31_t)0x69ea1a03, (q31_t)0x305d73f0, + (q31_t)0x69f3984c, (q31_t)0x30553828, (q31_t)0x69fd14f6, (q31_t)0x304cfa83, + (q31_t)0x6a069003, (q31_t)0x3044bb00, (q31_t)0x6a100970, (q31_t)0x303c79a2, + (q31_t)0x6a19813f, (q31_t)0x30343667, (q31_t)0x6a22f76e, (q31_t)0x302bf151, + (q31_t)0x6a2c6bfd, (q31_t)0x3023aa5f, (q31_t)0x6a35deeb, (q31_t)0x301b6193, + (q31_t)0x6a3f503a, (q31_t)0x301316eb, (q31_t)0x6a48bfe7, (q31_t)0x300aca69, + (q31_t)0x6a522df3, (q31_t)0x30027c0c, (q31_t)0x6a5b9a5d, (q31_t)0x2ffa2bd6, + (q31_t)0x6a650525, (q31_t)0x2ff1d9c7, (q31_t)0x6a6e6e4b, (q31_t)0x2fe985de, + (q31_t)0x6a77d5ce, (q31_t)0x2fe1301c, (q31_t)0x6a813bae, (q31_t)0x2fd8d882, + (q31_t)0x6a8a9fea, (q31_t)0x2fd07f0f, (q31_t)0x6a940283, (q31_t)0x2fc823c5, + (q31_t)0x6a9d6377, (q31_t)0x2fbfc6a3, (q31_t)0x6aa6c2c6, (q31_t)0x2fb767aa, + (q31_t)0x6ab02071, (q31_t)0x2faf06da, (q31_t)0x6ab97c77, (q31_t)0x2fa6a433, + (q31_t)0x6ac2d6d6, (q31_t)0x2f9e3fb6, (q31_t)0x6acc2f90, (q31_t)0x2f95d963, + (q31_t)0x6ad586a3, (q31_t)0x2f8d713a, (q31_t)0x6adedc10, (q31_t)0x2f85073c, + (q31_t)0x6ae82fd5, (q31_t)0x2f7c9b69, (q31_t)0x6af181f3, (q31_t)0x2f742dc1, + (q31_t)0x6afad269, (q31_t)0x2f6bbe45, (q31_t)0x6b042137, (q31_t)0x2f634cf5, + (q31_t)0x6b0d6e5c, (q31_t)0x2f5ad9d1, (q31_t)0x6b16b9d9, (q31_t)0x2f5264da, + (q31_t)0x6b2003ac, (q31_t)0x2f49ee0f, (q31_t)0x6b294bd5, (q31_t)0x2f417573, + (q31_t)0x6b329255, (q31_t)0x2f38fb03, (q31_t)0x6b3bd72a, (q31_t)0x2f307ec2, + (q31_t)0x6b451a55, (q31_t)0x2f2800af, (q31_t)0x6b4e5bd4, (q31_t)0x2f1f80ca, + (q31_t)0x6b579ba8, (q31_t)0x2f16ff14, (q31_t)0x6b60d9d0, (q31_t)0x2f0e7b8e, + (q31_t)0x6b6a164d, (q31_t)0x2f05f637, (q31_t)0x6b73511c, (q31_t)0x2efd6f10, + (q31_t)0x6b7c8a3f, (q31_t)0x2ef4e619, (q31_t)0x6b85c1b5, (q31_t)0x2eec5b53, + (q31_t)0x6b8ef77d, (q31_t)0x2ee3cebe, (q31_t)0x6b982b97, (q31_t)0x2edb405a, + (q31_t)0x6ba15e03, (q31_t)0x2ed2b027, (q31_t)0x6baa8ec0, (q31_t)0x2eca1e27, + (q31_t)0x6bb3bdce, (q31_t)0x2ec18a58, (q31_t)0x6bbceb2d, (q31_t)0x2eb8f4bc, + (q31_t)0x6bc616dd, (q31_t)0x2eb05d53, (q31_t)0x6bcf40dc, (q31_t)0x2ea7c41e, + (q31_t)0x6bd8692b, (q31_t)0x2e9f291b, (q31_t)0x6be18fc9, (q31_t)0x2e968c4d, + (q31_t)0x6beab4b6, (q31_t)0x2e8dedb3, (q31_t)0x6bf3d7f2, (q31_t)0x2e854d4d, + (q31_t)0x6bfcf97c, (q31_t)0x2e7cab1c, (q31_t)0x6c061953, (q31_t)0x2e740720, + (q31_t)0x6c0f3779, (q31_t)0x2e6b615a, (q31_t)0x6c1853eb, (q31_t)0x2e62b9ca, + (q31_t)0x6c216eaa, (q31_t)0x2e5a1070, (q31_t)0x6c2a87b6, (q31_t)0x2e51654c, + (q31_t)0x6c339f0e, (q31_t)0x2e48b860, (q31_t)0x6c3cb4b1, (q31_t)0x2e4009aa, + (q31_t)0x6c45c8a0, (q31_t)0x2e37592c, (q31_t)0x6c4edada, (q31_t)0x2e2ea6e6, + (q31_t)0x6c57eb5e, (q31_t)0x2e25f2d8, (q31_t)0x6c60fa2d, (q31_t)0x2e1d3d03, + (q31_t)0x6c6a0746, (q31_t)0x2e148566, (q31_t)0x6c7312a9, (q31_t)0x2e0bcc03, + (q31_t)0x6c7c1c55, (q31_t)0x2e0310d9, (q31_t)0x6c85244a, (q31_t)0x2dfa53e9, + (q31_t)0x6c8e2a87, (q31_t)0x2df19534, (q31_t)0x6c972f0d, (q31_t)0x2de8d4b8, + (q31_t)0x6ca031da, (q31_t)0x2de01278, (q31_t)0x6ca932ef, (q31_t)0x2dd74e73, + (q31_t)0x6cb2324c, (q31_t)0x2dce88aa, (q31_t)0x6cbb2fef, (q31_t)0x2dc5c11c, + (q31_t)0x6cc42bd9, (q31_t)0x2dbcf7cb, (q31_t)0x6ccd2609, (q31_t)0x2db42cb6, + (q31_t)0x6cd61e7f, (q31_t)0x2dab5fdf, (q31_t)0x6cdf153a, (q31_t)0x2da29144, + (q31_t)0x6ce80a3a, (q31_t)0x2d99c0e7, (q31_t)0x6cf0fd80, (q31_t)0x2d90eec8, + (q31_t)0x6cf9ef09, (q31_t)0x2d881ae8, (q31_t)0x6d02ded7, (q31_t)0x2d7f4545, + (q31_t)0x6d0bcce8, (q31_t)0x2d766de2, (q31_t)0x6d14b93d, (q31_t)0x2d6d94bf, + (q31_t)0x6d1da3d5, (q31_t)0x2d64b9da, (q31_t)0x6d268cb0, (q31_t)0x2d5bdd36, + (q31_t)0x6d2f73cd, (q31_t)0x2d52fed2, (q31_t)0x6d38592c, (q31_t)0x2d4a1eaf, + (q31_t)0x6d413ccd, (q31_t)0x2d413ccd, (q31_t)0x6d4a1eaf, (q31_t)0x2d38592c, + (q31_t)0x6d52fed2, (q31_t)0x2d2f73cd, (q31_t)0x6d5bdd36, (q31_t)0x2d268cb0, + (q31_t)0x6d64b9da, (q31_t)0x2d1da3d5, (q31_t)0x6d6d94bf, (q31_t)0x2d14b93d, + (q31_t)0x6d766de2, (q31_t)0x2d0bcce8, (q31_t)0x6d7f4545, (q31_t)0x2d02ded7, + (q31_t)0x6d881ae8, (q31_t)0x2cf9ef09, (q31_t)0x6d90eec8, (q31_t)0x2cf0fd80, + (q31_t)0x6d99c0e7, (q31_t)0x2ce80a3a, (q31_t)0x6da29144, (q31_t)0x2cdf153a, + (q31_t)0x6dab5fdf, (q31_t)0x2cd61e7f, (q31_t)0x6db42cb6, (q31_t)0x2ccd2609, + (q31_t)0x6dbcf7cb, (q31_t)0x2cc42bd9, (q31_t)0x6dc5c11c, (q31_t)0x2cbb2fef, + (q31_t)0x6dce88aa, (q31_t)0x2cb2324c, (q31_t)0x6dd74e73, (q31_t)0x2ca932ef, + (q31_t)0x6de01278, (q31_t)0x2ca031da, (q31_t)0x6de8d4b8, (q31_t)0x2c972f0d, + (q31_t)0x6df19534, (q31_t)0x2c8e2a87, (q31_t)0x6dfa53e9, (q31_t)0x2c85244a, + (q31_t)0x6e0310d9, (q31_t)0x2c7c1c55, (q31_t)0x6e0bcc03, (q31_t)0x2c7312a9, + (q31_t)0x6e148566, (q31_t)0x2c6a0746, (q31_t)0x6e1d3d03, (q31_t)0x2c60fa2d, + (q31_t)0x6e25f2d8, (q31_t)0x2c57eb5e, (q31_t)0x6e2ea6e6, (q31_t)0x2c4edada, + (q31_t)0x6e37592c, (q31_t)0x2c45c8a0, (q31_t)0x6e4009aa, (q31_t)0x2c3cb4b1, + (q31_t)0x6e48b860, (q31_t)0x2c339f0e, (q31_t)0x6e51654c, (q31_t)0x2c2a87b6, + (q31_t)0x6e5a1070, (q31_t)0x2c216eaa, (q31_t)0x6e62b9ca, (q31_t)0x2c1853eb, + (q31_t)0x6e6b615a, (q31_t)0x2c0f3779, (q31_t)0x6e740720, (q31_t)0x2c061953, + (q31_t)0x6e7cab1c, (q31_t)0x2bfcf97c, (q31_t)0x6e854d4d, (q31_t)0x2bf3d7f2, + (q31_t)0x6e8dedb3, (q31_t)0x2beab4b6, (q31_t)0x6e968c4d, (q31_t)0x2be18fc9, + (q31_t)0x6e9f291b, (q31_t)0x2bd8692b, (q31_t)0x6ea7c41e, (q31_t)0x2bcf40dc, + (q31_t)0x6eb05d53, (q31_t)0x2bc616dd, (q31_t)0x6eb8f4bc, (q31_t)0x2bbceb2d, + (q31_t)0x6ec18a58, (q31_t)0x2bb3bdce, (q31_t)0x6eca1e27, (q31_t)0x2baa8ec0, + (q31_t)0x6ed2b027, (q31_t)0x2ba15e03, (q31_t)0x6edb405a, (q31_t)0x2b982b97, + (q31_t)0x6ee3cebe, (q31_t)0x2b8ef77d, (q31_t)0x6eec5b53, (q31_t)0x2b85c1b5, + (q31_t)0x6ef4e619, (q31_t)0x2b7c8a3f, (q31_t)0x6efd6f10, (q31_t)0x2b73511c, + (q31_t)0x6f05f637, (q31_t)0x2b6a164d, (q31_t)0x6f0e7b8e, (q31_t)0x2b60d9d0, + (q31_t)0x6f16ff14, (q31_t)0x2b579ba8, (q31_t)0x6f1f80ca, (q31_t)0x2b4e5bd4, + (q31_t)0x6f2800af, (q31_t)0x2b451a55, (q31_t)0x6f307ec2, (q31_t)0x2b3bd72a, + (q31_t)0x6f38fb03, (q31_t)0x2b329255, (q31_t)0x6f417573, (q31_t)0x2b294bd5, + (q31_t)0x6f49ee0f, (q31_t)0x2b2003ac, (q31_t)0x6f5264da, (q31_t)0x2b16b9d9, + (q31_t)0x6f5ad9d1, (q31_t)0x2b0d6e5c, (q31_t)0x6f634cf5, (q31_t)0x2b042137, + (q31_t)0x6f6bbe45, (q31_t)0x2afad269, (q31_t)0x6f742dc1, (q31_t)0x2af181f3, + (q31_t)0x6f7c9b69, (q31_t)0x2ae82fd5, (q31_t)0x6f85073c, (q31_t)0x2adedc10, + (q31_t)0x6f8d713a, (q31_t)0x2ad586a3, (q31_t)0x6f95d963, (q31_t)0x2acc2f90, + (q31_t)0x6f9e3fb6, (q31_t)0x2ac2d6d6, (q31_t)0x6fa6a433, (q31_t)0x2ab97c77, + (q31_t)0x6faf06da, (q31_t)0x2ab02071, (q31_t)0x6fb767aa, (q31_t)0x2aa6c2c6, + (q31_t)0x6fbfc6a3, (q31_t)0x2a9d6377, (q31_t)0x6fc823c5, (q31_t)0x2a940283, + (q31_t)0x6fd07f0f, (q31_t)0x2a8a9fea, (q31_t)0x6fd8d882, (q31_t)0x2a813bae, + (q31_t)0x6fe1301c, (q31_t)0x2a77d5ce, (q31_t)0x6fe985de, (q31_t)0x2a6e6e4b, + (q31_t)0x6ff1d9c7, (q31_t)0x2a650525, (q31_t)0x6ffa2bd6, (q31_t)0x2a5b9a5d, + (q31_t)0x70027c0c, (q31_t)0x2a522df3, (q31_t)0x700aca69, (q31_t)0x2a48bfe7, + (q31_t)0x701316eb, (q31_t)0x2a3f503a, (q31_t)0x701b6193, (q31_t)0x2a35deeb, + (q31_t)0x7023aa5f, (q31_t)0x2a2c6bfd, (q31_t)0x702bf151, (q31_t)0x2a22f76e, + (q31_t)0x70343667, (q31_t)0x2a19813f, (q31_t)0x703c79a2, (q31_t)0x2a100970, + (q31_t)0x7044bb00, (q31_t)0x2a069003, (q31_t)0x704cfa83, (q31_t)0x29fd14f6, + (q31_t)0x70553828, (q31_t)0x29f3984c, (q31_t)0x705d73f0, (q31_t)0x29ea1a03, + (q31_t)0x7065addb, (q31_t)0x29e09a1c, (q31_t)0x706de5e9, (q31_t)0x29d71899, + (q31_t)0x70761c18, (q31_t)0x29cd9578, (q31_t)0x707e5069, (q31_t)0x29c410ba, + (q31_t)0x708682dc, (q31_t)0x29ba8a61, (q31_t)0x708eb36f, (q31_t)0x29b1026c, + (q31_t)0x7096e223, (q31_t)0x29a778db, (q31_t)0x709f0ef8, (q31_t)0x299dedaf, + (q31_t)0x70a739ed, (q31_t)0x299460e8, (q31_t)0x70af6302, (q31_t)0x298ad287, + (q31_t)0x70b78a36, (q31_t)0x2981428c, (q31_t)0x70bfaf89, (q31_t)0x2977b0f7, + (q31_t)0x70c7d2fb, (q31_t)0x296e1dc9, (q31_t)0x70cff48c, (q31_t)0x29648902, + (q31_t)0x70d8143b, (q31_t)0x295af2a3, (q31_t)0x70e03208, (q31_t)0x29515aab, + (q31_t)0x70e84df3, (q31_t)0x2947c11c, (q31_t)0x70f067fb, (q31_t)0x293e25f5, + (q31_t)0x70f8801f, (q31_t)0x29348937, (q31_t)0x71009661, (q31_t)0x292aeae3, + (q31_t)0x7108aabf, (q31_t)0x29214af8, (q31_t)0x7110bd39, (q31_t)0x2917a977, + (q31_t)0x7118cdcf, (q31_t)0x290e0661, (q31_t)0x7120dc80, (q31_t)0x290461b5, + (q31_t)0x7128e94c, (q31_t)0x28fabb75, (q31_t)0x7130f433, (q31_t)0x28f113a0, + (q31_t)0x7138fd35, (q31_t)0x28e76a37, (q31_t)0x71410450, (q31_t)0x28ddbf3b, + (q31_t)0x71490986, (q31_t)0x28d412ab, (q31_t)0x71510cd5, (q31_t)0x28ca6488, + (q31_t)0x71590e3e, (q31_t)0x28c0b4d2, (q31_t)0x71610dbf, (q31_t)0x28b7038b, + (q31_t)0x71690b59, (q31_t)0x28ad50b1, (q31_t)0x7171070c, (q31_t)0x28a39c46, + (q31_t)0x717900d6, (q31_t)0x2899e64a, (q31_t)0x7180f8b8, (q31_t)0x28902ebd, + (q31_t)0x7188eeb2, (q31_t)0x288675a0, (q31_t)0x7190e2c3, (q31_t)0x287cbaf3, + (q31_t)0x7198d4ea, (q31_t)0x2872feb6, (q31_t)0x71a0c528, (q31_t)0x286940ea, + (q31_t)0x71a8b37c, (q31_t)0x285f8190, (q31_t)0x71b09fe7, (q31_t)0x2855c0a6, + (q31_t)0x71b88a66, (q31_t)0x284bfe2f, (q31_t)0x71c072fb, (q31_t)0x28423a2a, + (q31_t)0x71c859a5, (q31_t)0x28387498, (q31_t)0x71d03e64, (q31_t)0x282ead78, + (q31_t)0x71d82137, (q31_t)0x2824e4cc, (q31_t)0x71e0021e, (q31_t)0x281b1a94, + (q31_t)0x71e7e118, (q31_t)0x28114ed0, (q31_t)0x71efbe27, (q31_t)0x28078181, + (q31_t)0x71f79948, (q31_t)0x27fdb2a7, (q31_t)0x71ff727c, (q31_t)0x27f3e241, + (q31_t)0x720749c3, (q31_t)0x27ea1052, (q31_t)0x720f1f1c, (q31_t)0x27e03cd8, + (q31_t)0x7216f287, (q31_t)0x27d667d5, (q31_t)0x721ec403, (q31_t)0x27cc9149, + (q31_t)0x72269391, (q31_t)0x27c2b934, (q31_t)0x722e6130, (q31_t)0x27b8df97, + (q31_t)0x72362ce0, (q31_t)0x27af0472, (q31_t)0x723df6a0, (q31_t)0x27a527c4, + (q31_t)0x7245be70, (q31_t)0x279b4990, (q31_t)0x724d8450, (q31_t)0x279169d5, + (q31_t)0x72554840, (q31_t)0x27878893, (q31_t)0x725d0a3e, (q31_t)0x277da5cb, + (q31_t)0x7264ca4c, (q31_t)0x2773c17d, (q31_t)0x726c8868, (q31_t)0x2769dbaa, + (q31_t)0x72744493, (q31_t)0x275ff452, (q31_t)0x727bfecc, (q31_t)0x27560b76, + (q31_t)0x7283b712, (q31_t)0x274c2115, (q31_t)0x728b6d66, (q31_t)0x27423530, + (q31_t)0x729321c7, (q31_t)0x273847c8, (q31_t)0x729ad435, (q31_t)0x272e58dc, + (q31_t)0x72a284b0, (q31_t)0x2724686e, (q31_t)0x72aa3336, (q31_t)0x271a767e, + (q31_t)0x72b1dfc9, (q31_t)0x2710830c, (q31_t)0x72b98a67, (q31_t)0x27068e18, + (q31_t)0x72c13311, (q31_t)0x26fc97a3, (q31_t)0x72c8d9c6, (q31_t)0x26f29fad, + (q31_t)0x72d07e85, (q31_t)0x26e8a637, (q31_t)0x72d82150, (q31_t)0x26deab41, + (q31_t)0x72dfc224, (q31_t)0x26d4aecb, (q31_t)0x72e76102, (q31_t)0x26cab0d6, + (q31_t)0x72eefdea, (q31_t)0x26c0b162, (q31_t)0x72f698db, (q31_t)0x26b6b070, + (q31_t)0x72fe31d5, (q31_t)0x26acadff, (q31_t)0x7305c8d7, (q31_t)0x26a2aa11, + (q31_t)0x730d5de3, (q31_t)0x2698a4a6, (q31_t)0x7314f0f6, (q31_t)0x268e9dbd, + (q31_t)0x731c8211, (q31_t)0x26849558, (q31_t)0x73241134, (q31_t)0x267a8b77, + (q31_t)0x732b9e5e, (q31_t)0x2670801a, (q31_t)0x7333298f, (q31_t)0x26667342, + (q31_t)0x733ab2c6, (q31_t)0x265c64ef, (q31_t)0x73423a04, (q31_t)0x26525521, + (q31_t)0x7349bf48, (q31_t)0x264843d9, (q31_t)0x73514292, (q31_t)0x263e3117, + (q31_t)0x7358c3e2, (q31_t)0x26341cdb, (q31_t)0x73604336, (q31_t)0x262a0727, + (q31_t)0x7367c090, (q31_t)0x261feffa, (q31_t)0x736f3bee, (q31_t)0x2615d754, + (q31_t)0x7376b551, (q31_t)0x260bbd37, (q31_t)0x737e2cb7, (q31_t)0x2601a1a2, + (q31_t)0x7385a222, (q31_t)0x25f78497, (q31_t)0x738d1590, (q31_t)0x25ed6614, + (q31_t)0x73948701, (q31_t)0x25e3461b, (q31_t)0x739bf675, (q31_t)0x25d924ac, + (q31_t)0x73a363ec, (q31_t)0x25cf01c8, (q31_t)0x73aacf65, (q31_t)0x25c4dd6e, + (q31_t)0x73b238e0, (q31_t)0x25bab7a0, (q31_t)0x73b9a05d, (q31_t)0x25b0905d, + (q31_t)0x73c105db, (q31_t)0x25a667a7, (q31_t)0x73c8695b, (q31_t)0x259c3d7c, + (q31_t)0x73cfcadc, (q31_t)0x259211df, (q31_t)0x73d72a5d, (q31_t)0x2587e4cf, + (q31_t)0x73de87de, (q31_t)0x257db64c, (q31_t)0x73e5e360, (q31_t)0x25738657, + (q31_t)0x73ed3ce1, (q31_t)0x256954f1, (q31_t)0x73f49462, (q31_t)0x255f2219, + (q31_t)0x73fbe9e2, (q31_t)0x2554edd1, (q31_t)0x74033d61, (q31_t)0x254ab818, + (q31_t)0x740a8edf, (q31_t)0x254080ef, (q31_t)0x7411de5b, (q31_t)0x25364857, + (q31_t)0x74192bd5, (q31_t)0x252c0e4f, (q31_t)0x7420774d, (q31_t)0x2521d2d8, + (q31_t)0x7427c0c3, (q31_t)0x251795f3, (q31_t)0x742f0836, (q31_t)0x250d57a0, + (q31_t)0x74364da6, (q31_t)0x250317df, (q31_t)0x743d9112, (q31_t)0x24f8d6b0, + (q31_t)0x7444d27b, (q31_t)0x24ee9415, (q31_t)0x744c11e0, (q31_t)0x24e4500e, + (q31_t)0x74534f41, (q31_t)0x24da0a9a, (q31_t)0x745a8a9d, (q31_t)0x24cfc3ba, + (q31_t)0x7461c3f5, (q31_t)0x24c57b6f, (q31_t)0x7468fb47, (q31_t)0x24bb31ba, + (q31_t)0x74703095, (q31_t)0x24b0e699, (q31_t)0x747763dd, (q31_t)0x24a69a0f, + (q31_t)0x747e951f, (q31_t)0x249c4c1b, (q31_t)0x7485c45b, (q31_t)0x2491fcbe, + (q31_t)0x748cf190, (q31_t)0x2487abf7, (q31_t)0x74941cbf, (q31_t)0x247d59c8, + (q31_t)0x749b45e7, (q31_t)0x24730631, (q31_t)0x74a26d08, (q31_t)0x2468b132, + (q31_t)0x74a99221, (q31_t)0x245e5acc, (q31_t)0x74b0b533, (q31_t)0x245402ff, + (q31_t)0x74b7d63c, (q31_t)0x2449a9cc, (q31_t)0x74bef53d, (q31_t)0x243f4f32, + (q31_t)0x74c61236, (q31_t)0x2434f332, (q31_t)0x74cd2d26, (q31_t)0x242a95ce, + (q31_t)0x74d4460c, (q31_t)0x24203704, (q31_t)0x74db5cea, (q31_t)0x2415d6d5, + (q31_t)0x74e271bd, (q31_t)0x240b7543, (q31_t)0x74e98487, (q31_t)0x2401124d, + (q31_t)0x74f09546, (q31_t)0x23f6adf3, (q31_t)0x74f7a3fb, (q31_t)0x23ec4837, + (q31_t)0x74feb0a5, (q31_t)0x23e1e117, (q31_t)0x7505bb44, (q31_t)0x23d77896, + (q31_t)0x750cc3d8, (q31_t)0x23cd0eb3, (q31_t)0x7513ca60, (q31_t)0x23c2a36f, + (q31_t)0x751acedd, (q31_t)0x23b836ca, (q31_t)0x7521d14d, (q31_t)0x23adc8c4, + (q31_t)0x7528d1b1, (q31_t)0x23a3595e, (q31_t)0x752fd008, (q31_t)0x2398e898, + (q31_t)0x7536cc52, (q31_t)0x238e7673, (q31_t)0x753dc68f, (q31_t)0x238402ef, + (q31_t)0x7544bebf, (q31_t)0x23798e0d, (q31_t)0x754bb4e1, (q31_t)0x236f17cc, + (q31_t)0x7552a8f4, (q31_t)0x2364a02e, (q31_t)0x75599afa, (q31_t)0x235a2733, + (q31_t)0x75608af1, (q31_t)0x234facda, (q31_t)0x756778d9, (q31_t)0x23453125, + (q31_t)0x756e64b2, (q31_t)0x233ab414, (q31_t)0x75754e7c, (q31_t)0x233035a7, + (q31_t)0x757c3636, (q31_t)0x2325b5df, (q31_t)0x75831be0, (q31_t)0x231b34bc, + (q31_t)0x7589ff7a, (q31_t)0x2310b23e, (q31_t)0x7590e104, (q31_t)0x23062e67, + (q31_t)0x7597c07d, (q31_t)0x22fba936, (q31_t)0x759e9de5, (q31_t)0x22f122ab, + (q31_t)0x75a5793c, (q31_t)0x22e69ac8, (q31_t)0x75ac5282, (q31_t)0x22dc118c, + (q31_t)0x75b329b5, (q31_t)0x22d186f8, (q31_t)0x75b9fed7, (q31_t)0x22c6fb0c, + (q31_t)0x75c0d1e7, (q31_t)0x22bc6dca, (q31_t)0x75c7a2e3, (q31_t)0x22b1df30, + (q31_t)0x75ce71ce, (q31_t)0x22a74f40, (q31_t)0x75d53ea5, (q31_t)0x229cbdfa, + (q31_t)0x75dc0968, (q31_t)0x22922b5e, (q31_t)0x75e2d219, (q31_t)0x2287976e, + (q31_t)0x75e998b5, (q31_t)0x227d0228, (q31_t)0x75f05d3d, (q31_t)0x22726b8e, + (q31_t)0x75f71fb1, (q31_t)0x2267d3a0, (q31_t)0x75fde011, (q31_t)0x225d3a5e, + (q31_t)0x76049e5b, (q31_t)0x22529fca, (q31_t)0x760b5a90, (q31_t)0x224803e2, + (q31_t)0x761214b0, (q31_t)0x223d66a8, (q31_t)0x7618ccba, (q31_t)0x2232c81c, + (q31_t)0x761f82af, (q31_t)0x2228283f, (q31_t)0x7626368d, (q31_t)0x221d8711, + (q31_t)0x762ce855, (q31_t)0x2212e492, (q31_t)0x76339806, (q31_t)0x220840c2, + (q31_t)0x763a45a0, (q31_t)0x21fd9ba3, (q31_t)0x7640f123, (q31_t)0x21f2f534, + (q31_t)0x76479a8e, (q31_t)0x21e84d76, (q31_t)0x764e41e2, (q31_t)0x21dda46a, + (q31_t)0x7654e71d, (q31_t)0x21d2fa0f, (q31_t)0x765b8a41, (q31_t)0x21c84e67, + (q31_t)0x76622b4c, (q31_t)0x21bda171, (q31_t)0x7668ca3e, (q31_t)0x21b2f32e, + (q31_t)0x766f6717, (q31_t)0x21a8439e, (q31_t)0x767601d7, (q31_t)0x219d92c2, + (q31_t)0x767c9a7e, (q31_t)0x2192e09b, (q31_t)0x7683310b, (q31_t)0x21882d28, + (q31_t)0x7689c57d, (q31_t)0x217d786a, (q31_t)0x769057d6, (q31_t)0x2172c262, + (q31_t)0x7696e814, (q31_t)0x21680b0f, (q31_t)0x769d7637, (q31_t)0x215d5273, + (q31_t)0x76a4023f, (q31_t)0x2152988d, (q31_t)0x76aa8c2c, (q31_t)0x2147dd5f, + (q31_t)0x76b113fd, (q31_t)0x213d20e8, (q31_t)0x76b799b3, (q31_t)0x21326329, + (q31_t)0x76be1d4c, (q31_t)0x2127a423, (q31_t)0x76c49ec9, (q31_t)0x211ce3d5, + (q31_t)0x76cb1e2a, (q31_t)0x21122240, (q31_t)0x76d19b6e, (q31_t)0x21075f65, + (q31_t)0x76d81695, (q31_t)0x20fc9b44, (q31_t)0x76de8f9e, (q31_t)0x20f1d5de, + (q31_t)0x76e5068a, (q31_t)0x20e70f32, (q31_t)0x76eb7b58, (q31_t)0x20dc4742, + (q31_t)0x76f1ee09, (q31_t)0x20d17e0d, (q31_t)0x76f85e9a, (q31_t)0x20c6b395, + (q31_t)0x76fecd0e, (q31_t)0x20bbe7d8, (q31_t)0x77053962, (q31_t)0x20b11ad9, + (q31_t)0x770ba398, (q31_t)0x20a64c97, (q31_t)0x77120bae, (q31_t)0x209b7d13, + (q31_t)0x771871a5, (q31_t)0x2090ac4d, (q31_t)0x771ed57c, (q31_t)0x2085da46, + (q31_t)0x77253733, (q31_t)0x207b06fe, (q31_t)0x772b96ca, (q31_t)0x20703275, + (q31_t)0x7731f440, (q31_t)0x20655cac, (q31_t)0x77384f95, (q31_t)0x205a85a3, + (q31_t)0x773ea8ca, (q31_t)0x204fad5b, (q31_t)0x7744ffdd, (q31_t)0x2044d3d4, + (q31_t)0x774b54ce, (q31_t)0x2039f90f, (q31_t)0x7751a79e, (q31_t)0x202f1d0b, + (q31_t)0x7757f84c, (q31_t)0x20243fca, (q31_t)0x775e46d8, (q31_t)0x2019614c, + (q31_t)0x77649341, (q31_t)0x200e8190, (q31_t)0x776add88, (q31_t)0x2003a099, + (q31_t)0x777125ac, (q31_t)0x1ff8be65, (q31_t)0x77776bac, (q31_t)0x1feddaf6, + (q31_t)0x777daf89, (q31_t)0x1fe2f64c, (q31_t)0x7783f143, (q31_t)0x1fd81067, + (q31_t)0x778a30d8, (q31_t)0x1fcd2948, (q31_t)0x77906e49, (q31_t)0x1fc240ef, + (q31_t)0x7796a996, (q31_t)0x1fb7575c, (q31_t)0x779ce2be, (q31_t)0x1fac6c91, + (q31_t)0x77a319c2, (q31_t)0x1fa1808c, (q31_t)0x77a94ea0, (q31_t)0x1f969350, + (q31_t)0x77af8159, (q31_t)0x1f8ba4dc, (q31_t)0x77b5b1ec, (q31_t)0x1f80b531, + (q31_t)0x77bbe05a, (q31_t)0x1f75c44e, (q31_t)0x77c20ca1, (q31_t)0x1f6ad235, + (q31_t)0x77c836c2, (q31_t)0x1f5fdee6, (q31_t)0x77ce5ebd, (q31_t)0x1f54ea62, + (q31_t)0x77d48490, (q31_t)0x1f49f4a8, (q31_t)0x77daa83d, (q31_t)0x1f3efdb9, + (q31_t)0x77e0c9c3, (q31_t)0x1f340596, (q31_t)0x77e6e921, (q31_t)0x1f290c3f, + (q31_t)0x77ed0657, (q31_t)0x1f1e11b5, (q31_t)0x77f32165, (q31_t)0x1f1315f7, + (q31_t)0x77f93a4b, (q31_t)0x1f081907, (q31_t)0x77ff5109, (q31_t)0x1efd1ae4, + (q31_t)0x7805659e, (q31_t)0x1ef21b90, (q31_t)0x780b780a, (q31_t)0x1ee71b0a, + (q31_t)0x7811884d, (q31_t)0x1edc1953, (q31_t)0x78179666, (q31_t)0x1ed1166b, + (q31_t)0x781da256, (q31_t)0x1ec61254, (q31_t)0x7823ac1d, (q31_t)0x1ebb0d0d, + (q31_t)0x7829b3b9, (q31_t)0x1eb00696, (q31_t)0x782fb92a, (q31_t)0x1ea4fef0, + (q31_t)0x7835bc71, (q31_t)0x1e99f61d, (q31_t)0x783bbd8e, (q31_t)0x1e8eec1b, + (q31_t)0x7841bc7f, (q31_t)0x1e83e0eb, (q31_t)0x7847b946, (q31_t)0x1e78d48e, + (q31_t)0x784db3e0, (q31_t)0x1e6dc705, (q31_t)0x7853ac4f, (q31_t)0x1e62b84f, + (q31_t)0x7859a292, (q31_t)0x1e57a86d, (q31_t)0x785f96a9, (q31_t)0x1e4c9760, + (q31_t)0x78658894, (q31_t)0x1e418528, (q31_t)0x786b7852, (q31_t)0x1e3671c5, + (q31_t)0x787165e3, (q31_t)0x1e2b5d38, (q31_t)0x78775147, (q31_t)0x1e204781, + (q31_t)0x787d3a7e, (q31_t)0x1e1530a1, (q31_t)0x78832187, (q31_t)0x1e0a1898, + (q31_t)0x78890663, (q31_t)0x1dfeff67, (q31_t)0x788ee910, (q31_t)0x1df3e50d, + (q31_t)0x7894c98f, (q31_t)0x1de8c98c, (q31_t)0x789aa7e0, (q31_t)0x1dddace4, + (q31_t)0x78a08402, (q31_t)0x1dd28f15, (q31_t)0x78a65df6, (q31_t)0x1dc7701f, + (q31_t)0x78ac35ba, (q31_t)0x1dbc5004, (q31_t)0x78b20b4f, (q31_t)0x1db12ec3, + (q31_t)0x78b7deb4, (q31_t)0x1da60c5d, (q31_t)0x78bdafea, (q31_t)0x1d9ae8d2, + (q31_t)0x78c37eef, (q31_t)0x1d8fc424, (q31_t)0x78c94bc4, (q31_t)0x1d849e51, + (q31_t)0x78cf1669, (q31_t)0x1d79775c, (q31_t)0x78d4dedd, (q31_t)0x1d6e4f43, + (q31_t)0x78daa520, (q31_t)0x1d632608, (q31_t)0x78e06932, (q31_t)0x1d57fbaa, + (q31_t)0x78e62b13, (q31_t)0x1d4cd02c, (q31_t)0x78ebeac2, (q31_t)0x1d41a38c, + (q31_t)0x78f1a840, (q31_t)0x1d3675cb, (q31_t)0x78f7638b, (q31_t)0x1d2b46ea, + (q31_t)0x78fd1ca4, (q31_t)0x1d2016e9, (q31_t)0x7902d38b, (q31_t)0x1d14e5c9, + (q31_t)0x7908883f, (q31_t)0x1d09b389, (q31_t)0x790e3ac0, (q31_t)0x1cfe802b, + (q31_t)0x7913eb0e, (q31_t)0x1cf34baf, (q31_t)0x79199929, (q31_t)0x1ce81615, + (q31_t)0x791f4510, (q31_t)0x1cdcdf5e, (q31_t)0x7924eec3, (q31_t)0x1cd1a78a, + (q31_t)0x792a9642, (q31_t)0x1cc66e99, (q31_t)0x79303b8e, (q31_t)0x1cbb348d, + (q31_t)0x7935dea4, (q31_t)0x1caff965, (q31_t)0x793b7f86, (q31_t)0x1ca4bd21, + (q31_t)0x79411e33, (q31_t)0x1c997fc4, (q31_t)0x7946baac, (q31_t)0x1c8e414b, + (q31_t)0x794c54ee, (q31_t)0x1c8301b9, (q31_t)0x7951ecfc, (q31_t)0x1c77c10e, + (q31_t)0x795782d3, (q31_t)0x1c6c7f4a, (q31_t)0x795d1675, (q31_t)0x1c613c6d, + (q31_t)0x7962a7e0, (q31_t)0x1c55f878, (q31_t)0x79683715, (q31_t)0x1c4ab36b, + (q31_t)0x796dc414, (q31_t)0x1c3f6d47, (q31_t)0x79734edc, (q31_t)0x1c34260c, + (q31_t)0x7978d76c, (q31_t)0x1c28ddbb, (q31_t)0x797e5dc6, (q31_t)0x1c1d9454, + (q31_t)0x7983e1e8, (q31_t)0x1c1249d8, (q31_t)0x798963d2, (q31_t)0x1c06fe46, + (q31_t)0x798ee385, (q31_t)0x1bfbb1a0, (q31_t)0x799460ff, (q31_t)0x1bf063e6, + (q31_t)0x7999dc42, (q31_t)0x1be51518, (q31_t)0x799f554b, (q31_t)0x1bd9c537, + (q31_t)0x79a4cc1c, (q31_t)0x1bce7442, (q31_t)0x79aa40b4, (q31_t)0x1bc3223c, + (q31_t)0x79afb313, (q31_t)0x1bb7cf23, (q31_t)0x79b52339, (q31_t)0x1bac7af9, + (q31_t)0x79ba9125, (q31_t)0x1ba125bd, (q31_t)0x79bffcd7, (q31_t)0x1b95cf71, + (q31_t)0x79c5664f, (q31_t)0x1b8a7815, (q31_t)0x79cacd8d, (q31_t)0x1b7f1fa9, + (q31_t)0x79d03291, (q31_t)0x1b73c62d, (q31_t)0x79d5955a, (q31_t)0x1b686ba3, + (q31_t)0x79daf5e8, (q31_t)0x1b5d100a, (q31_t)0x79e0543c, (q31_t)0x1b51b363, + (q31_t)0x79e5b054, (q31_t)0x1b4655ae, (q31_t)0x79eb0a31, (q31_t)0x1b3af6ec, + (q31_t)0x79f061d2, (q31_t)0x1b2f971e, (q31_t)0x79f5b737, (q31_t)0x1b243643, + (q31_t)0x79fb0a60, (q31_t)0x1b18d45c, (q31_t)0x7a005b4d, (q31_t)0x1b0d716a, + (q31_t)0x7a05a9fd, (q31_t)0x1b020d6c, (q31_t)0x7a0af671, (q31_t)0x1af6a865, + (q31_t)0x7a1040a8, (q31_t)0x1aeb4253, (q31_t)0x7a1588a2, (q31_t)0x1adfdb37, + (q31_t)0x7a1ace5f, (q31_t)0x1ad47312, (q31_t)0x7a2011de, (q31_t)0x1ac909e5, + (q31_t)0x7a25531f, (q31_t)0x1abd9faf, (q31_t)0x7a2a9223, (q31_t)0x1ab23471, + (q31_t)0x7a2fcee8, (q31_t)0x1aa6c82b, (q31_t)0x7a350970, (q31_t)0x1a9b5adf, + (q31_t)0x7a3a41b9, (q31_t)0x1a8fec8c, (q31_t)0x7a3f77c3, (q31_t)0x1a847d33, + (q31_t)0x7a44ab8e, (q31_t)0x1a790cd4, (q31_t)0x7a49dd1a, (q31_t)0x1a6d9b70, + (q31_t)0x7a4f0c67, (q31_t)0x1a622907, (q31_t)0x7a543974, (q31_t)0x1a56b599, + (q31_t)0x7a596442, (q31_t)0x1a4b4128, (q31_t)0x7a5e8cd0, (q31_t)0x1a3fcbb3, + (q31_t)0x7a63b31d, (q31_t)0x1a34553b, (q31_t)0x7a68d72b, (q31_t)0x1a28ddc0, + (q31_t)0x7a6df8f8, (q31_t)0x1a1d6544, (q31_t)0x7a731884, (q31_t)0x1a11ebc5, + (q31_t)0x7a7835cf, (q31_t)0x1a067145, (q31_t)0x7a7d50da, (q31_t)0x19faf5c5, + (q31_t)0x7a8269a3, (q31_t)0x19ef7944, (q31_t)0x7a87802a, (q31_t)0x19e3fbc3, + (q31_t)0x7a8c9470, (q31_t)0x19d87d42, (q31_t)0x7a91a674, (q31_t)0x19ccfdc2, + (q31_t)0x7a96b636, (q31_t)0x19c17d44, (q31_t)0x7a9bc3b6, (q31_t)0x19b5fbc8, + (q31_t)0x7aa0cef3, (q31_t)0x19aa794d, (q31_t)0x7aa5d7ee, (q31_t)0x199ef5d6, + (q31_t)0x7aaadea6, (q31_t)0x19937161, (q31_t)0x7aafe31b, (q31_t)0x1987ebf0, + (q31_t)0x7ab4e54c, (q31_t)0x197c6584, (q31_t)0x7ab9e53a, (q31_t)0x1970de1b, + (q31_t)0x7abee2e5, (q31_t)0x196555b8, (q31_t)0x7ac3de4c, (q31_t)0x1959cc5a, + (q31_t)0x7ac8d76f, (q31_t)0x194e4201, (q31_t)0x7acdce4d, (q31_t)0x1942b6af, + (q31_t)0x7ad2c2e8, (q31_t)0x19372a64, (q31_t)0x7ad7b53d, (q31_t)0x192b9d1f, + (q31_t)0x7adca54e, (q31_t)0x19200ee3, (q31_t)0x7ae1931a, (q31_t)0x19147fae, + (q31_t)0x7ae67ea1, (q31_t)0x1908ef82, (q31_t)0x7aeb67e3, (q31_t)0x18fd5e5f, + (q31_t)0x7af04edf, (q31_t)0x18f1cc45, (q31_t)0x7af53395, (q31_t)0x18e63935, + (q31_t)0x7afa1605, (q31_t)0x18daa52f, (q31_t)0x7afef630, (q31_t)0x18cf1034, + (q31_t)0x7b03d414, (q31_t)0x18c37a44, (q31_t)0x7b08afb2, (q31_t)0x18b7e35f, + (q31_t)0x7b0d8909, (q31_t)0x18ac4b87, (q31_t)0x7b126019, (q31_t)0x18a0b2bb, + (q31_t)0x7b1734e2, (q31_t)0x189518fc, (q31_t)0x7b1c0764, (q31_t)0x18897e4a, + (q31_t)0x7b20d79e, (q31_t)0x187de2a7, (q31_t)0x7b25a591, (q31_t)0x18724611, + (q31_t)0x7b2a713d, (q31_t)0x1866a88a, (q31_t)0x7b2f3aa0, (q31_t)0x185b0a13, + (q31_t)0x7b3401bb, (q31_t)0x184f6aab, (q31_t)0x7b38c68e, (q31_t)0x1843ca53, + (q31_t)0x7b3d8918, (q31_t)0x1838290c, (q31_t)0x7b42495a, (q31_t)0x182c86d5, + (q31_t)0x7b470753, (q31_t)0x1820e3b0, (q31_t)0x7b4bc303, (q31_t)0x18153f9d, + (q31_t)0x7b507c69, (q31_t)0x18099a9c, (q31_t)0x7b553386, (q31_t)0x17fdf4ae, + (q31_t)0x7b59e85a, (q31_t)0x17f24dd3, (q31_t)0x7b5e9ae4, (q31_t)0x17e6a60c, + (q31_t)0x7b634b23, (q31_t)0x17dafd59, (q31_t)0x7b67f919, (q31_t)0x17cf53bb, + (q31_t)0x7b6ca4c4, (q31_t)0x17c3a931, (q31_t)0x7b714e25, (q31_t)0x17b7fdbd, + (q31_t)0x7b75f53c, (q31_t)0x17ac515f, (q31_t)0x7b7a9a07, (q31_t)0x17a0a417, + (q31_t)0x7b7f3c87, (q31_t)0x1794f5e6, (q31_t)0x7b83dcbc, (q31_t)0x178946cc, + (q31_t)0x7b887aa6, (q31_t)0x177d96ca, (q31_t)0x7b8d1644, (q31_t)0x1771e5e0, + (q31_t)0x7b91af97, (q31_t)0x1766340f, (q31_t)0x7b96469d, (q31_t)0x175a8157, + (q31_t)0x7b9adb57, (q31_t)0x174ecdb8, (q31_t)0x7b9f6dc5, (q31_t)0x17431933, + (q31_t)0x7ba3fde7, (q31_t)0x173763c9, (q31_t)0x7ba88bbc, (q31_t)0x172bad7a, + (q31_t)0x7bad1744, (q31_t)0x171ff646, (q31_t)0x7bb1a080, (q31_t)0x17143e2d, + (q31_t)0x7bb6276e, (q31_t)0x17088531, (q31_t)0x7bbaac0e, (q31_t)0x16fccb51, + (q31_t)0x7bbf2e62, (q31_t)0x16f1108f, (q31_t)0x7bc3ae67, (q31_t)0x16e554ea, + (q31_t)0x7bc82c1f, (q31_t)0x16d99864, (q31_t)0x7bcca789, (q31_t)0x16cddafb, + (q31_t)0x7bd120a4, (q31_t)0x16c21cb2, (q31_t)0x7bd59771, (q31_t)0x16b65d88, + (q31_t)0x7bda0bf0, (q31_t)0x16aa9d7e, (q31_t)0x7bde7e20, (q31_t)0x169edc94, + (q31_t)0x7be2ee01, (q31_t)0x16931acb, (q31_t)0x7be75b93, (q31_t)0x16875823, + (q31_t)0x7bebc6d5, (q31_t)0x167b949d, (q31_t)0x7bf02fc9, (q31_t)0x166fd039, + (q31_t)0x7bf4966c, (q31_t)0x16640af7, (q31_t)0x7bf8fac0, (q31_t)0x165844d8, + (q31_t)0x7bfd5cc4, (q31_t)0x164c7ddd, (q31_t)0x7c01bc78, (q31_t)0x1640b606, + (q31_t)0x7c0619dc, (q31_t)0x1634ed53, (q31_t)0x7c0a74f0, (q31_t)0x162923c5, + (q31_t)0x7c0ecdb2, (q31_t)0x161d595d, (q31_t)0x7c132424, (q31_t)0x16118e1a, + (q31_t)0x7c177845, (q31_t)0x1605c1fd, (q31_t)0x7c1bca16, (q31_t)0x15f9f507, + (q31_t)0x7c201994, (q31_t)0x15ee2738, (q31_t)0x7c2466c2, (q31_t)0x15e25890, + (q31_t)0x7c28b19e, (q31_t)0x15d68911, (q31_t)0x7c2cfa28, (q31_t)0x15cab8ba, + (q31_t)0x7c314060, (q31_t)0x15bee78c, (q31_t)0x7c358446, (q31_t)0x15b31587, + (q31_t)0x7c39c5da, (q31_t)0x15a742ac, (q31_t)0x7c3e051b, (q31_t)0x159b6efb, + (q31_t)0x7c42420a, (q31_t)0x158f9a76, (q31_t)0x7c467ca6, (q31_t)0x1583c51b, + (q31_t)0x7c4ab4ef, (q31_t)0x1577eeec, (q31_t)0x7c4eeae5, (q31_t)0x156c17e9, + (q31_t)0x7c531e88, (q31_t)0x15604013, (q31_t)0x7c574fd8, (q31_t)0x1554676a, + (q31_t)0x7c5b7ed4, (q31_t)0x15488dee, (q31_t)0x7c5fab7c, (q31_t)0x153cb3a0, + (q31_t)0x7c63d5d1, (q31_t)0x1530d881, (q31_t)0x7c67fdd1, (q31_t)0x1524fc90, + (q31_t)0x7c6c237e, (q31_t)0x15191fcf, (q31_t)0x7c7046d6, (q31_t)0x150d423d, + (q31_t)0x7c7467d9, (q31_t)0x150163dc, (q31_t)0x7c788688, (q31_t)0x14f584ac, + (q31_t)0x7c7ca2e2, (q31_t)0x14e9a4ac, (q31_t)0x7c80bce7, (q31_t)0x14ddc3de, + (q31_t)0x7c84d496, (q31_t)0x14d1e242, (q31_t)0x7c88e9f1, (q31_t)0x14c5ffd9, + (q31_t)0x7c8cfcf6, (q31_t)0x14ba1ca3, (q31_t)0x7c910da5, (q31_t)0x14ae38a0, + (q31_t)0x7c951bff, (q31_t)0x14a253d1, (q31_t)0x7c992803, (q31_t)0x14966e36, + (q31_t)0x7c9d31b0, (q31_t)0x148a87d1, (q31_t)0x7ca13908, (q31_t)0x147ea0a0, + (q31_t)0x7ca53e09, (q31_t)0x1472b8a5, (q31_t)0x7ca940b3, (q31_t)0x1466cfe1, + (q31_t)0x7cad4107, (q31_t)0x145ae653, (q31_t)0x7cb13f04, (q31_t)0x144efbfc, + (q31_t)0x7cb53aaa, (q31_t)0x144310dd, (q31_t)0x7cb933f9, (q31_t)0x143724f5, + (q31_t)0x7cbd2af0, (q31_t)0x142b3846, (q31_t)0x7cc11f90, (q31_t)0x141f4ad1, + (q31_t)0x7cc511d9, (q31_t)0x14135c94, (q31_t)0x7cc901c9, (q31_t)0x14076d91, + (q31_t)0x7cccef62, (q31_t)0x13fb7dc9, (q31_t)0x7cd0daa2, (q31_t)0x13ef8d3c, + (q31_t)0x7cd4c38b, (q31_t)0x13e39be9, (q31_t)0x7cd8aa1b, (q31_t)0x13d7a9d3, + (q31_t)0x7cdc8e52, (q31_t)0x13cbb6f8, (q31_t)0x7ce07031, (q31_t)0x13bfc35b, + (q31_t)0x7ce44fb7, (q31_t)0x13b3cefa, (q31_t)0x7ce82ce4, (q31_t)0x13a7d9d7, + (q31_t)0x7cec07b8, (q31_t)0x139be3f2, (q31_t)0x7cefe032, (q31_t)0x138fed4b, + (q31_t)0x7cf3b653, (q31_t)0x1383f5e3, (q31_t)0x7cf78a1b, (q31_t)0x1377fdbb, + (q31_t)0x7cfb5b89, (q31_t)0x136c04d2, (q31_t)0x7cff2a9d, (q31_t)0x13600b2a, + (q31_t)0x7d02f757, (q31_t)0x135410c3, (q31_t)0x7d06c1b6, (q31_t)0x1348159d, + (q31_t)0x7d0a89bc, (q31_t)0x133c19b8, (q31_t)0x7d0e4f67, (q31_t)0x13301d16, + (q31_t)0x7d1212b7, (q31_t)0x13241fb6, (q31_t)0x7d15d3ad, (q31_t)0x1318219a, + (q31_t)0x7d199248, (q31_t)0x130c22c1, (q31_t)0x7d1d4e88, (q31_t)0x1300232c, + (q31_t)0x7d21086c, (q31_t)0x12f422db, (q31_t)0x7d24bff6, (q31_t)0x12e821cf, + (q31_t)0x7d287523, (q31_t)0x12dc2009, (q31_t)0x7d2c27f6, (q31_t)0x12d01d89, + (q31_t)0x7d2fd86c, (q31_t)0x12c41a4f, (q31_t)0x7d338687, (q31_t)0x12b8165b, + (q31_t)0x7d373245, (q31_t)0x12ac11af, (q31_t)0x7d3adba7, (q31_t)0x12a00c4b, + (q31_t)0x7d3e82ae, (q31_t)0x1294062f, (q31_t)0x7d422757, (q31_t)0x1287ff5b, + (q31_t)0x7d45c9a4, (q31_t)0x127bf7d1, (q31_t)0x7d496994, (q31_t)0x126fef90, + (q31_t)0x7d4d0728, (q31_t)0x1263e699, (q31_t)0x7d50a25e, (q31_t)0x1257dced, + (q31_t)0x7d543b37, (q31_t)0x124bd28c, (q31_t)0x7d57d1b3, (q31_t)0x123fc776, + (q31_t)0x7d5b65d2, (q31_t)0x1233bbac, (q31_t)0x7d5ef793, (q31_t)0x1227af2e, + (q31_t)0x7d6286f6, (q31_t)0x121ba1fd, (q31_t)0x7d6613fb, (q31_t)0x120f941a, + (q31_t)0x7d699ea3, (q31_t)0x12038584, (q31_t)0x7d6d26ec, (q31_t)0x11f7763c, + (q31_t)0x7d70acd7, (q31_t)0x11eb6643, (q31_t)0x7d743064, (q31_t)0x11df5599, + (q31_t)0x7d77b192, (q31_t)0x11d3443f, (q31_t)0x7d7b3061, (q31_t)0x11c73235, + (q31_t)0x7d7eacd2, (q31_t)0x11bb1f7c, (q31_t)0x7d8226e4, (q31_t)0x11af0c13, + (q31_t)0x7d859e96, (q31_t)0x11a2f7fc, (q31_t)0x7d8913ea, (q31_t)0x1196e337, + (q31_t)0x7d8c86de, (q31_t)0x118acdc4, (q31_t)0x7d8ff772, (q31_t)0x117eb7a4, + (q31_t)0x7d9365a8, (q31_t)0x1172a0d7, (q31_t)0x7d96d17d, (q31_t)0x1166895f, + (q31_t)0x7d9a3af2, (q31_t)0x115a713a, (q31_t)0x7d9da208, (q31_t)0x114e586a, + (q31_t)0x7da106bd, (q31_t)0x11423ef0, (q31_t)0x7da46912, (q31_t)0x113624cb, + (q31_t)0x7da7c907, (q31_t)0x112a09fc, (q31_t)0x7dab269b, (q31_t)0x111dee84, + (q31_t)0x7dae81cf, (q31_t)0x1111d263, (q31_t)0x7db1daa2, (q31_t)0x1105b599, + (q31_t)0x7db53113, (q31_t)0x10f99827, (q31_t)0x7db88524, (q31_t)0x10ed7a0e, + (q31_t)0x7dbbd6d4, (q31_t)0x10e15b4e, (q31_t)0x7dbf2622, (q31_t)0x10d53be7, + (q31_t)0x7dc2730f, (q31_t)0x10c91bda, (q31_t)0x7dc5bd9b, (q31_t)0x10bcfb28, + (q31_t)0x7dc905c5, (q31_t)0x10b0d9d0, (q31_t)0x7dcc4b8d, (q31_t)0x10a4b7d3, + (q31_t)0x7dcf8ef3, (q31_t)0x10989532, (q31_t)0x7dd2cff7, (q31_t)0x108c71ee, + (q31_t)0x7dd60e99, (q31_t)0x10804e06, (q31_t)0x7dd94ad8, (q31_t)0x1074297b, + (q31_t)0x7ddc84b5, (q31_t)0x1068044e, (q31_t)0x7ddfbc30, (q31_t)0x105bde7f, + (q31_t)0x7de2f148, (q31_t)0x104fb80e, (q31_t)0x7de623fd, (q31_t)0x104390fd, + (q31_t)0x7de9544f, (q31_t)0x1037694b, (q31_t)0x7dec823e, (q31_t)0x102b40f8, + (q31_t)0x7defadca, (q31_t)0x101f1807, (q31_t)0x7df2d6f3, (q31_t)0x1012ee76, + (q31_t)0x7df5fdb8, (q31_t)0x1006c446, (q31_t)0x7df9221a, (q31_t)0xffa9979, + (q31_t)0x7dfc4418, (q31_t)0xfee6e0d, (q31_t)0x7dff63b2, (q31_t)0xfe24205, + (q31_t)0x7e0280e9, (q31_t)0xfd6155f, (q31_t)0x7e059bbb, (q31_t)0xfc9e81e, + (q31_t)0x7e08b42a, (q31_t)0xfbdba40, (q31_t)0x7e0bca34, (q31_t)0xfb18bc8, + (q31_t)0x7e0eddd9, (q31_t)0xfa55cb4, (q31_t)0x7e11ef1b, (q31_t)0xf992d06, + (q31_t)0x7e14fdf7, (q31_t)0xf8cfcbe, (q31_t)0x7e180a6f, (q31_t)0xf80cbdc, + (q31_t)0x7e1b1482, (q31_t)0xf749a61, (q31_t)0x7e1e1c30, (q31_t)0xf68684e, + (q31_t)0x7e212179, (q31_t)0xf5c35a3, (q31_t)0x7e24245d, (q31_t)0xf500260, + (q31_t)0x7e2724db, (q31_t)0xf43ce86, (q31_t)0x7e2a22f4, (q31_t)0xf379a16, + (q31_t)0x7e2d1ea8, (q31_t)0xf2b650f, (q31_t)0x7e3017f6, (q31_t)0xf1f2f73, + (q31_t)0x7e330ede, (q31_t)0xf12f941, (q31_t)0x7e360360, (q31_t)0xf06c27a, + (q31_t)0x7e38f57c, (q31_t)0xefa8b20, (q31_t)0x7e3be532, (q31_t)0xeee5331, + (q31_t)0x7e3ed282, (q31_t)0xee21aaf, (q31_t)0x7e41bd6c, (q31_t)0xed5e19a, + (q31_t)0x7e44a5ef, (q31_t)0xec9a7f3, (q31_t)0x7e478c0b, (q31_t)0xebd6db9, + (q31_t)0x7e4a6fc1, (q31_t)0xeb132ef, (q31_t)0x7e4d5110, (q31_t)0xea4f793, + (q31_t)0x7e502ff9, (q31_t)0xe98bba7, (q31_t)0x7e530c7a, (q31_t)0xe8c7f2a, + (q31_t)0x7e55e694, (q31_t)0xe80421e, (q31_t)0x7e58be47, (q31_t)0xe740483, + (q31_t)0x7e5b9392, (q31_t)0xe67c65a, (q31_t)0x7e5e6676, (q31_t)0xe5b87a2, + (q31_t)0x7e6136f3, (q31_t)0xe4f485c, (q31_t)0x7e640507, (q31_t)0xe430889, + (q31_t)0x7e66d0b4, (q31_t)0xe36c82a, (q31_t)0x7e6999fa, (q31_t)0xe2a873e, + (q31_t)0x7e6c60d7, (q31_t)0xe1e45c6, (q31_t)0x7e6f254c, (q31_t)0xe1203c3, + (q31_t)0x7e71e759, (q31_t)0xe05c135, (q31_t)0x7e74a6fd, (q31_t)0xdf97e1d, + (q31_t)0x7e77643a, (q31_t)0xded3a7b, (q31_t)0x7e7a1f0d, (q31_t)0xde0f64f, + (q31_t)0x7e7cd778, (q31_t)0xdd4b19a, (q31_t)0x7e7f8d7b, (q31_t)0xdc86c5d, + (q31_t)0x7e824114, (q31_t)0xdbc2698, (q31_t)0x7e84f245, (q31_t)0xdafe04b, + (q31_t)0x7e87a10c, (q31_t)0xda39978, (q31_t)0x7e8a4d6a, (q31_t)0xd97521d, + (q31_t)0x7e8cf75f, (q31_t)0xd8b0a3d, (q31_t)0x7e8f9eeb, (q31_t)0xd7ec1d6, + (q31_t)0x7e92440d, (q31_t)0xd7278eb, (q31_t)0x7e94e6c6, (q31_t)0xd662f7b, + (q31_t)0x7e978715, (q31_t)0xd59e586, (q31_t)0x7e9a24fb, (q31_t)0xd4d9b0e, + (q31_t)0x7e9cc076, (q31_t)0xd415013, (q31_t)0x7e9f5988, (q31_t)0xd350495, + (q31_t)0x7ea1f02f, (q31_t)0xd28b894, (q31_t)0x7ea4846c, (q31_t)0xd1c6c11, + (q31_t)0x7ea7163f, (q31_t)0xd101f0e, (q31_t)0x7ea9a5a8, (q31_t)0xd03d189, + (q31_t)0x7eac32a6, (q31_t)0xcf78383, (q31_t)0x7eaebd3a, (q31_t)0xceb34fe, + (q31_t)0x7eb14563, (q31_t)0xcdee5f9, (q31_t)0x7eb3cb21, (q31_t)0xcd29676, + (q31_t)0x7eb64e75, (q31_t)0xcc64673, (q31_t)0x7eb8cf5d, (q31_t)0xcb9f5f3, + (q31_t)0x7ebb4ddb, (q31_t)0xcada4f5, (q31_t)0x7ebdc9ed, (q31_t)0xca1537a, + (q31_t)0x7ec04394, (q31_t)0xc950182, (q31_t)0x7ec2bad0, (q31_t)0xc88af0e, + (q31_t)0x7ec52fa0, (q31_t)0xc7c5c1e, (q31_t)0x7ec7a205, (q31_t)0xc7008b3, + (q31_t)0x7eca11fe, (q31_t)0xc63b4ce, (q31_t)0x7ecc7f8b, (q31_t)0xc57606e, + (q31_t)0x7eceeaad, (q31_t)0xc4b0b94, (q31_t)0x7ed15363, (q31_t)0xc3eb641, + (q31_t)0x7ed3b9ad, (q31_t)0xc326075, (q31_t)0x7ed61d8a, (q31_t)0xc260a31, + (q31_t)0x7ed87efc, (q31_t)0xc19b374, (q31_t)0x7edade01, (q31_t)0xc0d5c41, + (q31_t)0x7edd3a9a, (q31_t)0xc010496, (q31_t)0x7edf94c7, (q31_t)0xbf4ac75, + (q31_t)0x7ee1ec87, (q31_t)0xbe853de, (q31_t)0x7ee441da, (q31_t)0xbdbfad1, + (q31_t)0x7ee694c1, (q31_t)0xbcfa150, (q31_t)0x7ee8e53a, (q31_t)0xbc34759, + (q31_t)0x7eeb3347, (q31_t)0xbb6ecef, (q31_t)0x7eed7ee7, (q31_t)0xbaa9211, + (q31_t)0x7eefc81a, (q31_t)0xb9e36c0, (q31_t)0x7ef20ee0, (q31_t)0xb91dafc, + (q31_t)0x7ef45338, (q31_t)0xb857ec7, (q31_t)0x7ef69523, (q31_t)0xb79221f, + (q31_t)0x7ef8d4a1, (q31_t)0xb6cc506, (q31_t)0x7efb11b1, (q31_t)0xb60677c, + (q31_t)0x7efd4c54, (q31_t)0xb540982, (q31_t)0x7eff8489, (q31_t)0xb47ab19, + (q31_t)0x7f01ba50, (q31_t)0xb3b4c40, (q31_t)0x7f03eda9, (q31_t)0xb2eecf8, + (q31_t)0x7f061e95, (q31_t)0xb228d42, (q31_t)0x7f084d12, (q31_t)0xb162d1d, + (q31_t)0x7f0a7921, (q31_t)0xb09cc8c, (q31_t)0x7f0ca2c2, (q31_t)0xafd6b8d, + (q31_t)0x7f0ec9f5, (q31_t)0xaf10a22, (q31_t)0x7f10eeb9, (q31_t)0xae4a84b, + (q31_t)0x7f13110f, (q31_t)0xad84609, (q31_t)0x7f1530f7, (q31_t)0xacbe35b, + (q31_t)0x7f174e70, (q31_t)0xabf8043, (q31_t)0x7f19697a, (q31_t)0xab31cc1, + (q31_t)0x7f1b8215, (q31_t)0xaa6b8d5, (q31_t)0x7f1d9842, (q31_t)0xa9a5480, + (q31_t)0x7f1fabff, (q31_t)0xa8defc3, (q31_t)0x7f21bd4e, (q31_t)0xa818a9d, + (q31_t)0x7f23cc2e, (q31_t)0xa752510, (q31_t)0x7f25d89e, (q31_t)0xa68bf1b, + (q31_t)0x7f27e29f, (q31_t)0xa5c58c0, (q31_t)0x7f29ea31, (q31_t)0xa4ff1fe, + (q31_t)0x7f2bef53, (q31_t)0xa438ad7, (q31_t)0x7f2df206, (q31_t)0xa37234a, + (q31_t)0x7f2ff24a, (q31_t)0xa2abb59, (q31_t)0x7f31f01d, (q31_t)0xa1e5303, + (q31_t)0x7f33eb81, (q31_t)0xa11ea49, (q31_t)0x7f35e476, (q31_t)0xa05812c, + (q31_t)0x7f37dafa, (q31_t)0x9f917ac, (q31_t)0x7f39cf0e, (q31_t)0x9ecadc9, + (q31_t)0x7f3bc0b3, (q31_t)0x9e04385, (q31_t)0x7f3dafe7, (q31_t)0x9d3d8df, + (q31_t)0x7f3f9cab, (q31_t)0x9c76dd8, (q31_t)0x7f4186ff, (q31_t)0x9bb0271, + (q31_t)0x7f436ee3, (q31_t)0x9ae96aa, (q31_t)0x7f455456, (q31_t)0x9a22a83, + (q31_t)0x7f473759, (q31_t)0x995bdfd, (q31_t)0x7f4917eb, (q31_t)0x9895118, + (q31_t)0x7f4af60d, (q31_t)0x97ce3d5, (q31_t)0x7f4cd1be, (q31_t)0x9707635, + (q31_t)0x7f4eaafe, (q31_t)0x9640837, (q31_t)0x7f5081cd, (q31_t)0x95799dd, + (q31_t)0x7f52562c, (q31_t)0x94b2b27, (q31_t)0x7f54281a, (q31_t)0x93ebc14, + (q31_t)0x7f55f796, (q31_t)0x9324ca7, (q31_t)0x7f57c4a2, (q31_t)0x925dcdf, + (q31_t)0x7f598f3c, (q31_t)0x9196cbc, (q31_t)0x7f5b5765, (q31_t)0x90cfc40, + (q31_t)0x7f5d1d1d, (q31_t)0x9008b6a, (q31_t)0x7f5ee063, (q31_t)0x8f41a3c, + (q31_t)0x7f60a138, (q31_t)0x8e7a8b5, (q31_t)0x7f625f9b, (q31_t)0x8db36d6, + (q31_t)0x7f641b8d, (q31_t)0x8cec4a0, (q31_t)0x7f65d50d, (q31_t)0x8c25213, + (q31_t)0x7f678c1c, (q31_t)0x8b5df30, (q31_t)0x7f6940b8, (q31_t)0x8a96bf6, + (q31_t)0x7f6af2e3, (q31_t)0x89cf867, (q31_t)0x7f6ca29c, (q31_t)0x8908483, + (q31_t)0x7f6e4fe3, (q31_t)0x884104b, (q31_t)0x7f6ffab8, (q31_t)0x8779bbe, + (q31_t)0x7f71a31b, (q31_t)0x86b26de, (q31_t)0x7f73490b, (q31_t)0x85eb1ab, + (q31_t)0x7f74ec8a, (q31_t)0x8523c25, (q31_t)0x7f768d96, (q31_t)0x845c64d, + (q31_t)0x7f782c30, (q31_t)0x8395024, (q31_t)0x7f79c857, (q31_t)0x82cd9a9, + (q31_t)0x7f7b620c, (q31_t)0x82062de, (q31_t)0x7f7cf94e, (q31_t)0x813ebc2, + (q31_t)0x7f7e8e1e, (q31_t)0x8077457, (q31_t)0x7f80207b, (q31_t)0x7fafc9c, + (q31_t)0x7f81b065, (q31_t)0x7ee8493, (q31_t)0x7f833ddd, (q31_t)0x7e20c3b, + (q31_t)0x7f84c8e2, (q31_t)0x7d59396, (q31_t)0x7f865174, (q31_t)0x7c91aa3, + (q31_t)0x7f87d792, (q31_t)0x7bca163, (q31_t)0x7f895b3e, (q31_t)0x7b027d7, + (q31_t)0x7f8adc77, (q31_t)0x7a3adff, (q31_t)0x7f8c5b3d, (q31_t)0x79733dc, + (q31_t)0x7f8dd78f, (q31_t)0x78ab96e, (q31_t)0x7f8f516e, (q31_t)0x77e3eb5, + (q31_t)0x7f90c8da, (q31_t)0x771c3b3, (q31_t)0x7f923dd2, (q31_t)0x7654867, + (q31_t)0x7f93b058, (q31_t)0x758ccd2, (q31_t)0x7f952069, (q31_t)0x74c50f4, + (q31_t)0x7f968e07, (q31_t)0x73fd4cf, (q31_t)0x7f97f932, (q31_t)0x7335862, + (q31_t)0x7f9961e8, (q31_t)0x726dbae, (q31_t)0x7f9ac82c, (q31_t)0x71a5eb3, + (q31_t)0x7f9c2bfb, (q31_t)0x70de172, (q31_t)0x7f9d8d56, (q31_t)0x70163eb, + (q31_t)0x7f9eec3e, (q31_t)0x6f4e620, (q31_t)0x7fa048b2, (q31_t)0x6e86810, + (q31_t)0x7fa1a2b2, (q31_t)0x6dbe9bb, (q31_t)0x7fa2fa3d, (q31_t)0x6cf6b23, + (q31_t)0x7fa44f55, (q31_t)0x6c2ec48, (q31_t)0x7fa5a1f9, (q31_t)0x6b66d29, + (q31_t)0x7fa6f228, (q31_t)0x6a9edc9, (q31_t)0x7fa83fe3, (q31_t)0x69d6e27, + (q31_t)0x7fa98b2a, (q31_t)0x690ee44, (q31_t)0x7faad3fd, (q31_t)0x6846e1f, + (q31_t)0x7fac1a5b, (q31_t)0x677edbb, (q31_t)0x7fad5e45, (q31_t)0x66b6d16, + (q31_t)0x7fae9fbb, (q31_t)0x65eec33, (q31_t)0x7fafdebb, (q31_t)0x6526b10, + (q31_t)0x7fb11b48, (q31_t)0x645e9af, (q31_t)0x7fb2555f, (q31_t)0x6396810, + (q31_t)0x7fb38d02, (q31_t)0x62ce634, (q31_t)0x7fb4c231, (q31_t)0x620641a, + (q31_t)0x7fb5f4ea, (q31_t)0x613e1c5, (q31_t)0x7fb7252f, (q31_t)0x6075f33, + (q31_t)0x7fb852ff, (q31_t)0x5fadc66, (q31_t)0x7fb97e5a, (q31_t)0x5ee595d, + (q31_t)0x7fbaa740, (q31_t)0x5e1d61b, (q31_t)0x7fbbcdb1, (q31_t)0x5d5529e, + (q31_t)0x7fbcf1ad, (q31_t)0x5c8cee7, (q31_t)0x7fbe1334, (q31_t)0x5bc4af8, + (q31_t)0x7fbf3246, (q31_t)0x5afc6d0, (q31_t)0x7fc04ee3, (q31_t)0x5a3426f, + (q31_t)0x7fc1690a, (q31_t)0x596bdd7, (q31_t)0x7fc280bc, (q31_t)0x58a3908, + (q31_t)0x7fc395f9, (q31_t)0x57db403, (q31_t)0x7fc4a8c1, (q31_t)0x5712ec7, + (q31_t)0x7fc5b913, (q31_t)0x564a955, (q31_t)0x7fc6c6f0, (q31_t)0x55823ae, + (q31_t)0x7fc7d258, (q31_t)0x54b9dd3, (q31_t)0x7fc8db4a, (q31_t)0x53f17c3, + (q31_t)0x7fc9e1c6, (q31_t)0x532917f, (q31_t)0x7fcae5cd, (q31_t)0x5260b08, + (q31_t)0x7fcbe75e, (q31_t)0x519845e, (q31_t)0x7fcce67a, (q31_t)0x50cfd82, + (q31_t)0x7fcde320, (q31_t)0x5007674, (q31_t)0x7fcedd50, (q31_t)0x4f3ef35, + (q31_t)0x7fcfd50b, (q31_t)0x4e767c5, (q31_t)0x7fd0ca4f, (q31_t)0x4dae024, + (q31_t)0x7fd1bd1e, (q31_t)0x4ce5854, (q31_t)0x7fd2ad77, (q31_t)0x4c1d054, + (q31_t)0x7fd39b5a, (q31_t)0x4b54825, (q31_t)0x7fd486c7, (q31_t)0x4a8bfc7, + (q31_t)0x7fd56fbe, (q31_t)0x49c373c, (q31_t)0x7fd6563f, (q31_t)0x48fae83, + (q31_t)0x7fd73a4a, (q31_t)0x483259d, (q31_t)0x7fd81bdf, (q31_t)0x4769c8b, + (q31_t)0x7fd8fafe, (q31_t)0x46a134c, (q31_t)0x7fd9d7a7, (q31_t)0x45d89e2, + (q31_t)0x7fdab1d9, (q31_t)0x451004d, (q31_t)0x7fdb8996, (q31_t)0x444768d, + (q31_t)0x7fdc5edc, (q31_t)0x437eca4, (q31_t)0x7fdd31ac, (q31_t)0x42b6290, + (q31_t)0x7fde0205, (q31_t)0x41ed854, (q31_t)0x7fdecfe8, (q31_t)0x4124dee, + (q31_t)0x7fdf9b55, (q31_t)0x405c361, (q31_t)0x7fe0644b, (q31_t)0x3f938ac, + (q31_t)0x7fe12acb, (q31_t)0x3ecadcf, (q31_t)0x7fe1eed5, (q31_t)0x3e022cc, + (q31_t)0x7fe2b067, (q31_t)0x3d397a3, (q31_t)0x7fe36f84, (q31_t)0x3c70c54, + (q31_t)0x7fe42c2a, (q31_t)0x3ba80df, (q31_t)0x7fe4e659, (q31_t)0x3adf546, + (q31_t)0x7fe59e12, (q31_t)0x3a16988, (q31_t)0x7fe65354, (q31_t)0x394dda7, + (q31_t)0x7fe7061f, (q31_t)0x38851a2, (q31_t)0x7fe7b674, (q31_t)0x37bc57b, + (q31_t)0x7fe86452, (q31_t)0x36f3931, (q31_t)0x7fe90fb9, (q31_t)0x362acc5, + (q31_t)0x7fe9b8a9, (q31_t)0x3562038, (q31_t)0x7fea5f23, (q31_t)0x3499389, + (q31_t)0x7feb0326, (q31_t)0x33d06bb, (q31_t)0x7feba4b2, (q31_t)0x33079cc, + (q31_t)0x7fec43c7, (q31_t)0x323ecbe, (q31_t)0x7fece065, (q31_t)0x3175f91, + (q31_t)0x7fed7a8c, (q31_t)0x30ad245, (q31_t)0x7fee123d, (q31_t)0x2fe44dc, + (q31_t)0x7feea776, (q31_t)0x2f1b755, (q31_t)0x7fef3a39, (q31_t)0x2e529b0, + (q31_t)0x7fefca84, (q31_t)0x2d89bf0, (q31_t)0x7ff05858, (q31_t)0x2cc0e13, + (q31_t)0x7ff0e3b6, (q31_t)0x2bf801a, (q31_t)0x7ff16c9c, (q31_t)0x2b2f207, + (q31_t)0x7ff1f30b, (q31_t)0x2a663d8, (q31_t)0x7ff27703, (q31_t)0x299d590, + (q31_t)0x7ff2f884, (q31_t)0x28d472e, (q31_t)0x7ff3778e, (q31_t)0x280b8b3, + (q31_t)0x7ff3f420, (q31_t)0x2742a1f, (q31_t)0x7ff46e3c, (q31_t)0x2679b73, + (q31_t)0x7ff4e5e0, (q31_t)0x25b0caf, (q31_t)0x7ff55b0d, (q31_t)0x24e7dd4, + (q31_t)0x7ff5cdc3, (q31_t)0x241eee2, (q31_t)0x7ff63e01, (q31_t)0x2355fd9, + (q31_t)0x7ff6abc8, (q31_t)0x228d0bb, (q31_t)0x7ff71718, (q31_t)0x21c4188, + (q31_t)0x7ff77ff1, (q31_t)0x20fb240, (q31_t)0x7ff7e652, (q31_t)0x20322e3, + (q31_t)0x7ff84a3c, (q31_t)0x1f69373, (q31_t)0x7ff8abae, (q31_t)0x1ea03ef, + (q31_t)0x7ff90aaa, (q31_t)0x1dd7459, (q31_t)0x7ff9672d, (q31_t)0x1d0e4b0, + (q31_t)0x7ff9c13a, (q31_t)0x1c454f5, (q31_t)0x7ffa18cf, (q31_t)0x1b7c528, + (q31_t)0x7ffa6dec, (q31_t)0x1ab354b, (q31_t)0x7ffac092, (q31_t)0x19ea55d, + (q31_t)0x7ffb10c1, (q31_t)0x192155f, (q31_t)0x7ffb5e78, (q31_t)0x1858552, + (q31_t)0x7ffba9b8, (q31_t)0x178f536, (q31_t)0x7ffbf280, (q31_t)0x16c650b, + (q31_t)0x7ffc38d1, (q31_t)0x15fd4d2, (q31_t)0x7ffc7caa, (q31_t)0x153448c, + (q31_t)0x7ffcbe0c, (q31_t)0x146b438, (q31_t)0x7ffcfcf6, (q31_t)0x13a23d8, + (q31_t)0x7ffd3969, (q31_t)0x12d936c, (q31_t)0x7ffd7364, (q31_t)0x12102f4, + (q31_t)0x7ffdaae7, (q31_t)0x1147271, (q31_t)0x7ffddff3, (q31_t)0x107e1e3, + (q31_t)0x7ffe1288, (q31_t)0xfb514b, (q31_t)0x7ffe42a4, (q31_t)0xeec0aa, + (q31_t)0x7ffe704a, (q31_t)0xe22fff, (q31_t)0x7ffe9b77, (q31_t)0xd59f4c, + (q31_t)0x7ffec42d, (q31_t)0xc90e90, (q31_t)0x7ffeea6c, (q31_t)0xbc7dcc, + (q31_t)0x7fff0e32, (q31_t)0xafed02, (q31_t)0x7fff2f82, (q31_t)0xa35c30, + (q31_t)0x7fff4e59, (q31_t)0x96cb58, (q31_t)0x7fff6ab9, (q31_t)0x8a3a7b, + (q31_t)0x7fff84a1, (q31_t)0x7da998, (q31_t)0x7fff9c12, (q31_t)0x7118b0, + (q31_t)0x7fffb10b, (q31_t)0x6487c4, (q31_t)0x7fffc38c, (q31_t)0x57f6d4, + (q31_t)0x7fffd396, (q31_t)0x4b65e1, (q31_t)0x7fffe128, (q31_t)0x3ed4ea, + (q31_t)0x7fffec43, (q31_t)0x3243f1, (q31_t)0x7ffff4e6, (q31_t)0x25b2f7, + (q31_t)0x7ffffb11, (q31_t)0x1921fb, (q31_t)0x7ffffec4, (q31_t)0xc90fe, + (q31_t)0x7fffffff, (q31_t)0x0, (q31_t)0x7ffffec4, (q31_t)0xfff36f02, + (q31_t)0x7ffffb11, (q31_t)0xffe6de05, (q31_t)0x7ffff4e6, (q31_t)0xffda4d09, + (q31_t)0x7fffec43, (q31_t)0xffcdbc0f, (q31_t)0x7fffe128, (q31_t)0xffc12b16, + (q31_t)0x7fffd396, (q31_t)0xffb49a1f, (q31_t)0x7fffc38c, (q31_t)0xffa8092c, + (q31_t)0x7fffb10b, (q31_t)0xff9b783c, (q31_t)0x7fff9c12, (q31_t)0xff8ee750, + (q31_t)0x7fff84a1, (q31_t)0xff825668, (q31_t)0x7fff6ab9, (q31_t)0xff75c585, + (q31_t)0x7fff4e59, (q31_t)0xff6934a8, (q31_t)0x7fff2f82, (q31_t)0xff5ca3d0, + (q31_t)0x7fff0e32, (q31_t)0xff5012fe, (q31_t)0x7ffeea6c, (q31_t)0xff438234, + (q31_t)0x7ffec42d, (q31_t)0xff36f170, (q31_t)0x7ffe9b77, (q31_t)0xff2a60b4, + (q31_t)0x7ffe704a, (q31_t)0xff1dd001, (q31_t)0x7ffe42a4, (q31_t)0xff113f56, + (q31_t)0x7ffe1288, (q31_t)0xff04aeb5, (q31_t)0x7ffddff3, (q31_t)0xfef81e1d, + (q31_t)0x7ffdaae7, (q31_t)0xfeeb8d8f, (q31_t)0x7ffd7364, (q31_t)0xfedefd0c, + (q31_t)0x7ffd3969, (q31_t)0xfed26c94, (q31_t)0x7ffcfcf6, (q31_t)0xfec5dc28, + (q31_t)0x7ffcbe0c, (q31_t)0xfeb94bc8, (q31_t)0x7ffc7caa, (q31_t)0xfeacbb74, + (q31_t)0x7ffc38d1, (q31_t)0xfea02b2e, (q31_t)0x7ffbf280, (q31_t)0xfe939af5, + (q31_t)0x7ffba9b8, (q31_t)0xfe870aca, (q31_t)0x7ffb5e78, (q31_t)0xfe7a7aae, + (q31_t)0x7ffb10c1, (q31_t)0xfe6deaa1, (q31_t)0x7ffac092, (q31_t)0xfe615aa3, + (q31_t)0x7ffa6dec, (q31_t)0xfe54cab5, (q31_t)0x7ffa18cf, (q31_t)0xfe483ad8, + (q31_t)0x7ff9c13a, (q31_t)0xfe3bab0b, (q31_t)0x7ff9672d, (q31_t)0xfe2f1b50, + (q31_t)0x7ff90aaa, (q31_t)0xfe228ba7, (q31_t)0x7ff8abae, (q31_t)0xfe15fc11, + (q31_t)0x7ff84a3c, (q31_t)0xfe096c8d, (q31_t)0x7ff7e652, (q31_t)0xfdfcdd1d, + (q31_t)0x7ff77ff1, (q31_t)0xfdf04dc0, (q31_t)0x7ff71718, (q31_t)0xfde3be78, + (q31_t)0x7ff6abc8, (q31_t)0xfdd72f45, (q31_t)0x7ff63e01, (q31_t)0xfdcaa027, + (q31_t)0x7ff5cdc3, (q31_t)0xfdbe111e, (q31_t)0x7ff55b0d, (q31_t)0xfdb1822c, + (q31_t)0x7ff4e5e0, (q31_t)0xfda4f351, (q31_t)0x7ff46e3c, (q31_t)0xfd98648d, + (q31_t)0x7ff3f420, (q31_t)0xfd8bd5e1, (q31_t)0x7ff3778e, (q31_t)0xfd7f474d, + (q31_t)0x7ff2f884, (q31_t)0xfd72b8d2, (q31_t)0x7ff27703, (q31_t)0xfd662a70, + (q31_t)0x7ff1f30b, (q31_t)0xfd599c28, (q31_t)0x7ff16c9c, (q31_t)0xfd4d0df9, + (q31_t)0x7ff0e3b6, (q31_t)0xfd407fe6, (q31_t)0x7ff05858, (q31_t)0xfd33f1ed, + (q31_t)0x7fefca84, (q31_t)0xfd276410, (q31_t)0x7fef3a39, (q31_t)0xfd1ad650, + (q31_t)0x7feea776, (q31_t)0xfd0e48ab, (q31_t)0x7fee123d, (q31_t)0xfd01bb24, + (q31_t)0x7fed7a8c, (q31_t)0xfcf52dbb, (q31_t)0x7fece065, (q31_t)0xfce8a06f, + (q31_t)0x7fec43c7, (q31_t)0xfcdc1342, (q31_t)0x7feba4b2, (q31_t)0xfccf8634, + (q31_t)0x7feb0326, (q31_t)0xfcc2f945, (q31_t)0x7fea5f23, (q31_t)0xfcb66c77, + (q31_t)0x7fe9b8a9, (q31_t)0xfca9dfc8, (q31_t)0x7fe90fb9, (q31_t)0xfc9d533b, + (q31_t)0x7fe86452, (q31_t)0xfc90c6cf, (q31_t)0x7fe7b674, (q31_t)0xfc843a85, + (q31_t)0x7fe7061f, (q31_t)0xfc77ae5e, (q31_t)0x7fe65354, (q31_t)0xfc6b2259, + (q31_t)0x7fe59e12, (q31_t)0xfc5e9678, (q31_t)0x7fe4e659, (q31_t)0xfc520aba, + (q31_t)0x7fe42c2a, (q31_t)0xfc457f21, (q31_t)0x7fe36f84, (q31_t)0xfc38f3ac, + (q31_t)0x7fe2b067, (q31_t)0xfc2c685d, (q31_t)0x7fe1eed5, (q31_t)0xfc1fdd34, + (q31_t)0x7fe12acb, (q31_t)0xfc135231, (q31_t)0x7fe0644b, (q31_t)0xfc06c754, + (q31_t)0x7fdf9b55, (q31_t)0xfbfa3c9f, (q31_t)0x7fdecfe8, (q31_t)0xfbedb212, + (q31_t)0x7fde0205, (q31_t)0xfbe127ac, (q31_t)0x7fdd31ac, (q31_t)0xfbd49d70, + (q31_t)0x7fdc5edc, (q31_t)0xfbc8135c, (q31_t)0x7fdb8996, (q31_t)0xfbbb8973, + (q31_t)0x7fdab1d9, (q31_t)0xfbaeffb3, (q31_t)0x7fd9d7a7, (q31_t)0xfba2761e, + (q31_t)0x7fd8fafe, (q31_t)0xfb95ecb4, (q31_t)0x7fd81bdf, (q31_t)0xfb896375, + (q31_t)0x7fd73a4a, (q31_t)0xfb7cda63, (q31_t)0x7fd6563f, (q31_t)0xfb70517d, + (q31_t)0x7fd56fbe, (q31_t)0xfb63c8c4, (q31_t)0x7fd486c7, (q31_t)0xfb574039, + (q31_t)0x7fd39b5a, (q31_t)0xfb4ab7db, (q31_t)0x7fd2ad77, (q31_t)0xfb3e2fac, + (q31_t)0x7fd1bd1e, (q31_t)0xfb31a7ac, (q31_t)0x7fd0ca4f, (q31_t)0xfb251fdc, + (q31_t)0x7fcfd50b, (q31_t)0xfb18983b, (q31_t)0x7fcedd50, (q31_t)0xfb0c10cb, + (q31_t)0x7fcde320, (q31_t)0xfaff898c, (q31_t)0x7fcce67a, (q31_t)0xfaf3027e, + (q31_t)0x7fcbe75e, (q31_t)0xfae67ba2, (q31_t)0x7fcae5cd, (q31_t)0xfad9f4f8, + (q31_t)0x7fc9e1c6, (q31_t)0xfacd6e81, (q31_t)0x7fc8db4a, (q31_t)0xfac0e83d, + (q31_t)0x7fc7d258, (q31_t)0xfab4622d, (q31_t)0x7fc6c6f0, (q31_t)0xfaa7dc52, + (q31_t)0x7fc5b913, (q31_t)0xfa9b56ab, (q31_t)0x7fc4a8c1, (q31_t)0xfa8ed139, + (q31_t)0x7fc395f9, (q31_t)0xfa824bfd, (q31_t)0x7fc280bc, (q31_t)0xfa75c6f8, + (q31_t)0x7fc1690a, (q31_t)0xfa694229, (q31_t)0x7fc04ee3, (q31_t)0xfa5cbd91, + (q31_t)0x7fbf3246, (q31_t)0xfa503930, (q31_t)0x7fbe1334, (q31_t)0xfa43b508, + (q31_t)0x7fbcf1ad, (q31_t)0xfa373119, (q31_t)0x7fbbcdb1, (q31_t)0xfa2aad62, + (q31_t)0x7fbaa740, (q31_t)0xfa1e29e5, (q31_t)0x7fb97e5a, (q31_t)0xfa11a6a3, + (q31_t)0x7fb852ff, (q31_t)0xfa05239a, (q31_t)0x7fb7252f, (q31_t)0xf9f8a0cd, + (q31_t)0x7fb5f4ea, (q31_t)0xf9ec1e3b, (q31_t)0x7fb4c231, (q31_t)0xf9df9be6, + (q31_t)0x7fb38d02, (q31_t)0xf9d319cc, (q31_t)0x7fb2555f, (q31_t)0xf9c697f0, + (q31_t)0x7fb11b48, (q31_t)0xf9ba1651, (q31_t)0x7fafdebb, (q31_t)0xf9ad94f0, + (q31_t)0x7fae9fbb, (q31_t)0xf9a113cd, (q31_t)0x7fad5e45, (q31_t)0xf99492ea, + (q31_t)0x7fac1a5b, (q31_t)0xf9881245, (q31_t)0x7faad3fd, (q31_t)0xf97b91e1, + (q31_t)0x7fa98b2a, (q31_t)0xf96f11bc, (q31_t)0x7fa83fe3, (q31_t)0xf96291d9, + (q31_t)0x7fa6f228, (q31_t)0xf9561237, (q31_t)0x7fa5a1f9, (q31_t)0xf94992d7, + (q31_t)0x7fa44f55, (q31_t)0xf93d13b8, (q31_t)0x7fa2fa3d, (q31_t)0xf93094dd, + (q31_t)0x7fa1a2b2, (q31_t)0xf9241645, (q31_t)0x7fa048b2, (q31_t)0xf91797f0, + (q31_t)0x7f9eec3e, (q31_t)0xf90b19e0, (q31_t)0x7f9d8d56, (q31_t)0xf8fe9c15, + (q31_t)0x7f9c2bfb, (q31_t)0xf8f21e8e, (q31_t)0x7f9ac82c, (q31_t)0xf8e5a14d, + (q31_t)0x7f9961e8, (q31_t)0xf8d92452, (q31_t)0x7f97f932, (q31_t)0xf8cca79e, + (q31_t)0x7f968e07, (q31_t)0xf8c02b31, (q31_t)0x7f952069, (q31_t)0xf8b3af0c, + (q31_t)0x7f93b058, (q31_t)0xf8a7332e, (q31_t)0x7f923dd2, (q31_t)0xf89ab799, + (q31_t)0x7f90c8da, (q31_t)0xf88e3c4d, (q31_t)0x7f8f516e, (q31_t)0xf881c14b, + (q31_t)0x7f8dd78f, (q31_t)0xf8754692, (q31_t)0x7f8c5b3d, (q31_t)0xf868cc24, + (q31_t)0x7f8adc77, (q31_t)0xf85c5201, (q31_t)0x7f895b3e, (q31_t)0xf84fd829, + (q31_t)0x7f87d792, (q31_t)0xf8435e9d, (q31_t)0x7f865174, (q31_t)0xf836e55d, + (q31_t)0x7f84c8e2, (q31_t)0xf82a6c6a, (q31_t)0x7f833ddd, (q31_t)0xf81df3c5, + (q31_t)0x7f81b065, (q31_t)0xf8117b6d, (q31_t)0x7f80207b, (q31_t)0xf8050364, + (q31_t)0x7f7e8e1e, (q31_t)0xf7f88ba9, (q31_t)0x7f7cf94e, (q31_t)0xf7ec143e, + (q31_t)0x7f7b620c, (q31_t)0xf7df9d22, (q31_t)0x7f79c857, (q31_t)0xf7d32657, + (q31_t)0x7f782c30, (q31_t)0xf7c6afdc, (q31_t)0x7f768d96, (q31_t)0xf7ba39b3, + (q31_t)0x7f74ec8a, (q31_t)0xf7adc3db, (q31_t)0x7f73490b, (q31_t)0xf7a14e55, + (q31_t)0x7f71a31b, (q31_t)0xf794d922, (q31_t)0x7f6ffab8, (q31_t)0xf7886442, + (q31_t)0x7f6e4fe3, (q31_t)0xf77befb5, (q31_t)0x7f6ca29c, (q31_t)0xf76f7b7d, + (q31_t)0x7f6af2e3, (q31_t)0xf7630799, (q31_t)0x7f6940b8, (q31_t)0xf756940a, + (q31_t)0x7f678c1c, (q31_t)0xf74a20d0, (q31_t)0x7f65d50d, (q31_t)0xf73daded, + (q31_t)0x7f641b8d, (q31_t)0xf7313b60, (q31_t)0x7f625f9b, (q31_t)0xf724c92a, + (q31_t)0x7f60a138, (q31_t)0xf718574b, (q31_t)0x7f5ee063, (q31_t)0xf70be5c4, + (q31_t)0x7f5d1d1d, (q31_t)0xf6ff7496, (q31_t)0x7f5b5765, (q31_t)0xf6f303c0, + (q31_t)0x7f598f3c, (q31_t)0xf6e69344, (q31_t)0x7f57c4a2, (q31_t)0xf6da2321, + (q31_t)0x7f55f796, (q31_t)0xf6cdb359, (q31_t)0x7f54281a, (q31_t)0xf6c143ec, + (q31_t)0x7f52562c, (q31_t)0xf6b4d4d9, (q31_t)0x7f5081cd, (q31_t)0xf6a86623, + (q31_t)0x7f4eaafe, (q31_t)0xf69bf7c9, (q31_t)0x7f4cd1be, (q31_t)0xf68f89cb, + (q31_t)0x7f4af60d, (q31_t)0xf6831c2b, (q31_t)0x7f4917eb, (q31_t)0xf676aee8, + (q31_t)0x7f473759, (q31_t)0xf66a4203, (q31_t)0x7f455456, (q31_t)0xf65dd57d, + (q31_t)0x7f436ee3, (q31_t)0xf6516956, (q31_t)0x7f4186ff, (q31_t)0xf644fd8f, + (q31_t)0x7f3f9cab, (q31_t)0xf6389228, (q31_t)0x7f3dafe7, (q31_t)0xf62c2721, + (q31_t)0x7f3bc0b3, (q31_t)0xf61fbc7b, (q31_t)0x7f39cf0e, (q31_t)0xf6135237, + (q31_t)0x7f37dafa, (q31_t)0xf606e854, (q31_t)0x7f35e476, (q31_t)0xf5fa7ed4, + (q31_t)0x7f33eb81, (q31_t)0xf5ee15b7, (q31_t)0x7f31f01d, (q31_t)0xf5e1acfd, + (q31_t)0x7f2ff24a, (q31_t)0xf5d544a7, (q31_t)0x7f2df206, (q31_t)0xf5c8dcb6, + (q31_t)0x7f2bef53, (q31_t)0xf5bc7529, (q31_t)0x7f29ea31, (q31_t)0xf5b00e02, + (q31_t)0x7f27e29f, (q31_t)0xf5a3a740, (q31_t)0x7f25d89e, (q31_t)0xf59740e5, + (q31_t)0x7f23cc2e, (q31_t)0xf58adaf0, (q31_t)0x7f21bd4e, (q31_t)0xf57e7563, + (q31_t)0x7f1fabff, (q31_t)0xf572103d, (q31_t)0x7f1d9842, (q31_t)0xf565ab80, + (q31_t)0x7f1b8215, (q31_t)0xf559472b, (q31_t)0x7f19697a, (q31_t)0xf54ce33f, + (q31_t)0x7f174e70, (q31_t)0xf5407fbd, (q31_t)0x7f1530f7, (q31_t)0xf5341ca5, + (q31_t)0x7f13110f, (q31_t)0xf527b9f7, (q31_t)0x7f10eeb9, (q31_t)0xf51b57b5, + (q31_t)0x7f0ec9f5, (q31_t)0xf50ef5de, (q31_t)0x7f0ca2c2, (q31_t)0xf5029473, + (q31_t)0x7f0a7921, (q31_t)0xf4f63374, (q31_t)0x7f084d12, (q31_t)0xf4e9d2e3, + (q31_t)0x7f061e95, (q31_t)0xf4dd72be, (q31_t)0x7f03eda9, (q31_t)0xf4d11308, + (q31_t)0x7f01ba50, (q31_t)0xf4c4b3c0, (q31_t)0x7eff8489, (q31_t)0xf4b854e7, + (q31_t)0x7efd4c54, (q31_t)0xf4abf67e, (q31_t)0x7efb11b1, (q31_t)0xf49f9884, + (q31_t)0x7ef8d4a1, (q31_t)0xf4933afa, (q31_t)0x7ef69523, (q31_t)0xf486dde1, + (q31_t)0x7ef45338, (q31_t)0xf47a8139, (q31_t)0x7ef20ee0, (q31_t)0xf46e2504, + (q31_t)0x7eefc81a, (q31_t)0xf461c940, (q31_t)0x7eed7ee7, (q31_t)0xf4556def, + (q31_t)0x7eeb3347, (q31_t)0xf4491311, (q31_t)0x7ee8e53a, (q31_t)0xf43cb8a7, + (q31_t)0x7ee694c1, (q31_t)0xf4305eb0, (q31_t)0x7ee441da, (q31_t)0xf424052f, + (q31_t)0x7ee1ec87, (q31_t)0xf417ac22, (q31_t)0x7edf94c7, (q31_t)0xf40b538b, + (q31_t)0x7edd3a9a, (q31_t)0xf3fefb6a, (q31_t)0x7edade01, (q31_t)0xf3f2a3bf, + (q31_t)0x7ed87efc, (q31_t)0xf3e64c8c, (q31_t)0x7ed61d8a, (q31_t)0xf3d9f5cf, + (q31_t)0x7ed3b9ad, (q31_t)0xf3cd9f8b, (q31_t)0x7ed15363, (q31_t)0xf3c149bf, + (q31_t)0x7eceeaad, (q31_t)0xf3b4f46c, (q31_t)0x7ecc7f8b, (q31_t)0xf3a89f92, + (q31_t)0x7eca11fe, (q31_t)0xf39c4b32, (q31_t)0x7ec7a205, (q31_t)0xf38ff74d, + (q31_t)0x7ec52fa0, (q31_t)0xf383a3e2, (q31_t)0x7ec2bad0, (q31_t)0xf37750f2, + (q31_t)0x7ec04394, (q31_t)0xf36afe7e, (q31_t)0x7ebdc9ed, (q31_t)0xf35eac86, + (q31_t)0x7ebb4ddb, (q31_t)0xf3525b0b, (q31_t)0x7eb8cf5d, (q31_t)0xf3460a0d, + (q31_t)0x7eb64e75, (q31_t)0xf339b98d, (q31_t)0x7eb3cb21, (q31_t)0xf32d698a, + (q31_t)0x7eb14563, (q31_t)0xf3211a07, (q31_t)0x7eaebd3a, (q31_t)0xf314cb02, + (q31_t)0x7eac32a6, (q31_t)0xf3087c7d, (q31_t)0x7ea9a5a8, (q31_t)0xf2fc2e77, + (q31_t)0x7ea7163f, (q31_t)0xf2efe0f2, (q31_t)0x7ea4846c, (q31_t)0xf2e393ef, + (q31_t)0x7ea1f02f, (q31_t)0xf2d7476c, (q31_t)0x7e9f5988, (q31_t)0xf2cafb6b, + (q31_t)0x7e9cc076, (q31_t)0xf2beafed, (q31_t)0x7e9a24fb, (q31_t)0xf2b264f2, + (q31_t)0x7e978715, (q31_t)0xf2a61a7a, (q31_t)0x7e94e6c6, (q31_t)0xf299d085, + (q31_t)0x7e92440d, (q31_t)0xf28d8715, (q31_t)0x7e8f9eeb, (q31_t)0xf2813e2a, + (q31_t)0x7e8cf75f, (q31_t)0xf274f5c3, (q31_t)0x7e8a4d6a, (q31_t)0xf268ade3, + (q31_t)0x7e87a10c, (q31_t)0xf25c6688, (q31_t)0x7e84f245, (q31_t)0xf2501fb5, + (q31_t)0x7e824114, (q31_t)0xf243d968, (q31_t)0x7e7f8d7b, (q31_t)0xf23793a3, + (q31_t)0x7e7cd778, (q31_t)0xf22b4e66, (q31_t)0x7e7a1f0d, (q31_t)0xf21f09b1, + (q31_t)0x7e77643a, (q31_t)0xf212c585, (q31_t)0x7e74a6fd, (q31_t)0xf20681e3, + (q31_t)0x7e71e759, (q31_t)0xf1fa3ecb, (q31_t)0x7e6f254c, (q31_t)0xf1edfc3d, + (q31_t)0x7e6c60d7, (q31_t)0xf1e1ba3a, (q31_t)0x7e6999fa, (q31_t)0xf1d578c2, + (q31_t)0x7e66d0b4, (q31_t)0xf1c937d6, (q31_t)0x7e640507, (q31_t)0xf1bcf777, + (q31_t)0x7e6136f3, (q31_t)0xf1b0b7a4, (q31_t)0x7e5e6676, (q31_t)0xf1a4785e, + (q31_t)0x7e5b9392, (q31_t)0xf19839a6, (q31_t)0x7e58be47, (q31_t)0xf18bfb7d, + (q31_t)0x7e55e694, (q31_t)0xf17fbde2, (q31_t)0x7e530c7a, (q31_t)0xf17380d6, + (q31_t)0x7e502ff9, (q31_t)0xf1674459, (q31_t)0x7e4d5110, (q31_t)0xf15b086d, + (q31_t)0x7e4a6fc1, (q31_t)0xf14ecd11, (q31_t)0x7e478c0b, (q31_t)0xf1429247, + (q31_t)0x7e44a5ef, (q31_t)0xf136580d, (q31_t)0x7e41bd6c, (q31_t)0xf12a1e66, + (q31_t)0x7e3ed282, (q31_t)0xf11de551, (q31_t)0x7e3be532, (q31_t)0xf111accf, + (q31_t)0x7e38f57c, (q31_t)0xf10574e0, (q31_t)0x7e360360, (q31_t)0xf0f93d86, + (q31_t)0x7e330ede, (q31_t)0xf0ed06bf, (q31_t)0x7e3017f6, (q31_t)0xf0e0d08d, + (q31_t)0x7e2d1ea8, (q31_t)0xf0d49af1, (q31_t)0x7e2a22f4, (q31_t)0xf0c865ea, + (q31_t)0x7e2724db, (q31_t)0xf0bc317a, (q31_t)0x7e24245d, (q31_t)0xf0affda0, + (q31_t)0x7e212179, (q31_t)0xf0a3ca5d, (q31_t)0x7e1e1c30, (q31_t)0xf09797b2, + (q31_t)0x7e1b1482, (q31_t)0xf08b659f, (q31_t)0x7e180a6f, (q31_t)0xf07f3424, + (q31_t)0x7e14fdf7, (q31_t)0xf0730342, (q31_t)0x7e11ef1b, (q31_t)0xf066d2fa, + (q31_t)0x7e0eddd9, (q31_t)0xf05aa34c, (q31_t)0x7e0bca34, (q31_t)0xf04e7438, + (q31_t)0x7e08b42a, (q31_t)0xf04245c0, (q31_t)0x7e059bbb, (q31_t)0xf03617e2, + (q31_t)0x7e0280e9, (q31_t)0xf029eaa1, (q31_t)0x7dff63b2, (q31_t)0xf01dbdfb, + (q31_t)0x7dfc4418, (q31_t)0xf01191f3, (q31_t)0x7df9221a, (q31_t)0xf0056687, + (q31_t)0x7df5fdb8, (q31_t)0xeff93bba, (q31_t)0x7df2d6f3, (q31_t)0xefed118a, + (q31_t)0x7defadca, (q31_t)0xefe0e7f9, (q31_t)0x7dec823e, (q31_t)0xefd4bf08, + (q31_t)0x7de9544f, (q31_t)0xefc896b5, (q31_t)0x7de623fd, (q31_t)0xefbc6f03, + (q31_t)0x7de2f148, (q31_t)0xefb047f2, (q31_t)0x7ddfbc30, (q31_t)0xefa42181, + (q31_t)0x7ddc84b5, (q31_t)0xef97fbb2, (q31_t)0x7dd94ad8, (q31_t)0xef8bd685, + (q31_t)0x7dd60e99, (q31_t)0xef7fb1fa, (q31_t)0x7dd2cff7, (q31_t)0xef738e12, + (q31_t)0x7dcf8ef3, (q31_t)0xef676ace, (q31_t)0x7dcc4b8d, (q31_t)0xef5b482d, + (q31_t)0x7dc905c5, (q31_t)0xef4f2630, (q31_t)0x7dc5bd9b, (q31_t)0xef4304d8, + (q31_t)0x7dc2730f, (q31_t)0xef36e426, (q31_t)0x7dbf2622, (q31_t)0xef2ac419, + (q31_t)0x7dbbd6d4, (q31_t)0xef1ea4b2, (q31_t)0x7db88524, (q31_t)0xef1285f2, + (q31_t)0x7db53113, (q31_t)0xef0667d9, (q31_t)0x7db1daa2, (q31_t)0xeefa4a67, + (q31_t)0x7dae81cf, (q31_t)0xeeee2d9d, (q31_t)0x7dab269b, (q31_t)0xeee2117c, + (q31_t)0x7da7c907, (q31_t)0xeed5f604, (q31_t)0x7da46912, (q31_t)0xeec9db35, + (q31_t)0x7da106bd, (q31_t)0xeebdc110, (q31_t)0x7d9da208, (q31_t)0xeeb1a796, + (q31_t)0x7d9a3af2, (q31_t)0xeea58ec6, (q31_t)0x7d96d17d, (q31_t)0xee9976a1, + (q31_t)0x7d9365a8, (q31_t)0xee8d5f29, (q31_t)0x7d8ff772, (q31_t)0xee81485c, + (q31_t)0x7d8c86de, (q31_t)0xee75323c, (q31_t)0x7d8913ea, (q31_t)0xee691cc9, + (q31_t)0x7d859e96, (q31_t)0xee5d0804, (q31_t)0x7d8226e4, (q31_t)0xee50f3ed, + (q31_t)0x7d7eacd2, (q31_t)0xee44e084, (q31_t)0x7d7b3061, (q31_t)0xee38cdcb, + (q31_t)0x7d77b192, (q31_t)0xee2cbbc1, (q31_t)0x7d743064, (q31_t)0xee20aa67, + (q31_t)0x7d70acd7, (q31_t)0xee1499bd, (q31_t)0x7d6d26ec, (q31_t)0xee0889c4, + (q31_t)0x7d699ea3, (q31_t)0xedfc7a7c, (q31_t)0x7d6613fb, (q31_t)0xedf06be6, + (q31_t)0x7d6286f6, (q31_t)0xede45e03, (q31_t)0x7d5ef793, (q31_t)0xedd850d2, + (q31_t)0x7d5b65d2, (q31_t)0xedcc4454, (q31_t)0x7d57d1b3, (q31_t)0xedc0388a, + (q31_t)0x7d543b37, (q31_t)0xedb42d74, (q31_t)0x7d50a25e, (q31_t)0xeda82313, + (q31_t)0x7d4d0728, (q31_t)0xed9c1967, (q31_t)0x7d496994, (q31_t)0xed901070, + (q31_t)0x7d45c9a4, (q31_t)0xed84082f, (q31_t)0x7d422757, (q31_t)0xed7800a5, + (q31_t)0x7d3e82ae, (q31_t)0xed6bf9d1, (q31_t)0x7d3adba7, (q31_t)0xed5ff3b5, + (q31_t)0x7d373245, (q31_t)0xed53ee51, (q31_t)0x7d338687, (q31_t)0xed47e9a5, + (q31_t)0x7d2fd86c, (q31_t)0xed3be5b1, (q31_t)0x7d2c27f6, (q31_t)0xed2fe277, + (q31_t)0x7d287523, (q31_t)0xed23dff7, (q31_t)0x7d24bff6, (q31_t)0xed17de31, + (q31_t)0x7d21086c, (q31_t)0xed0bdd25, (q31_t)0x7d1d4e88, (q31_t)0xecffdcd4, + (q31_t)0x7d199248, (q31_t)0xecf3dd3f, (q31_t)0x7d15d3ad, (q31_t)0xece7de66, + (q31_t)0x7d1212b7, (q31_t)0xecdbe04a, (q31_t)0x7d0e4f67, (q31_t)0xeccfe2ea, + (q31_t)0x7d0a89bc, (q31_t)0xecc3e648, (q31_t)0x7d06c1b6, (q31_t)0xecb7ea63, + (q31_t)0x7d02f757, (q31_t)0xecabef3d, (q31_t)0x7cff2a9d, (q31_t)0xec9ff4d6, + (q31_t)0x7cfb5b89, (q31_t)0xec93fb2e, (q31_t)0x7cf78a1b, (q31_t)0xec880245, + (q31_t)0x7cf3b653, (q31_t)0xec7c0a1d, (q31_t)0x7cefe032, (q31_t)0xec7012b5, + (q31_t)0x7cec07b8, (q31_t)0xec641c0e, (q31_t)0x7ce82ce4, (q31_t)0xec582629, + (q31_t)0x7ce44fb7, (q31_t)0xec4c3106, (q31_t)0x7ce07031, (q31_t)0xec403ca5, + (q31_t)0x7cdc8e52, (q31_t)0xec344908, (q31_t)0x7cd8aa1b, (q31_t)0xec28562d, + (q31_t)0x7cd4c38b, (q31_t)0xec1c6417, (q31_t)0x7cd0daa2, (q31_t)0xec1072c4, + (q31_t)0x7cccef62, (q31_t)0xec048237, (q31_t)0x7cc901c9, (q31_t)0xebf8926f, + (q31_t)0x7cc511d9, (q31_t)0xebeca36c, (q31_t)0x7cc11f90, (q31_t)0xebe0b52f, + (q31_t)0x7cbd2af0, (q31_t)0xebd4c7ba, (q31_t)0x7cb933f9, (q31_t)0xebc8db0b, + (q31_t)0x7cb53aaa, (q31_t)0xebbcef23, (q31_t)0x7cb13f04, (q31_t)0xebb10404, + (q31_t)0x7cad4107, (q31_t)0xeba519ad, (q31_t)0x7ca940b3, (q31_t)0xeb99301f, + (q31_t)0x7ca53e09, (q31_t)0xeb8d475b, (q31_t)0x7ca13908, (q31_t)0xeb815f60, + (q31_t)0x7c9d31b0, (q31_t)0xeb75782f, (q31_t)0x7c992803, (q31_t)0xeb6991ca, + (q31_t)0x7c951bff, (q31_t)0xeb5dac2f, (q31_t)0x7c910da5, (q31_t)0xeb51c760, + (q31_t)0x7c8cfcf6, (q31_t)0xeb45e35d, (q31_t)0x7c88e9f1, (q31_t)0xeb3a0027, + (q31_t)0x7c84d496, (q31_t)0xeb2e1dbe, (q31_t)0x7c80bce7, (q31_t)0xeb223c22, + (q31_t)0x7c7ca2e2, (q31_t)0xeb165b54, (q31_t)0x7c788688, (q31_t)0xeb0a7b54, + (q31_t)0x7c7467d9, (q31_t)0xeafe9c24, (q31_t)0x7c7046d6, (q31_t)0xeaf2bdc3, + (q31_t)0x7c6c237e, (q31_t)0xeae6e031, (q31_t)0x7c67fdd1, (q31_t)0xeadb0370, + (q31_t)0x7c63d5d1, (q31_t)0xeacf277f, (q31_t)0x7c5fab7c, (q31_t)0xeac34c60, + (q31_t)0x7c5b7ed4, (q31_t)0xeab77212, (q31_t)0x7c574fd8, (q31_t)0xeaab9896, + (q31_t)0x7c531e88, (q31_t)0xea9fbfed, (q31_t)0x7c4eeae5, (q31_t)0xea93e817, + (q31_t)0x7c4ab4ef, (q31_t)0xea881114, (q31_t)0x7c467ca6, (q31_t)0xea7c3ae5, + (q31_t)0x7c42420a, (q31_t)0xea70658a, (q31_t)0x7c3e051b, (q31_t)0xea649105, + (q31_t)0x7c39c5da, (q31_t)0xea58bd54, (q31_t)0x7c358446, (q31_t)0xea4cea79, + (q31_t)0x7c314060, (q31_t)0xea411874, (q31_t)0x7c2cfa28, (q31_t)0xea354746, + (q31_t)0x7c28b19e, (q31_t)0xea2976ef, (q31_t)0x7c2466c2, (q31_t)0xea1da770, + (q31_t)0x7c201994, (q31_t)0xea11d8c8, (q31_t)0x7c1bca16, (q31_t)0xea060af9, + (q31_t)0x7c177845, (q31_t)0xe9fa3e03, (q31_t)0x7c132424, (q31_t)0xe9ee71e6, + (q31_t)0x7c0ecdb2, (q31_t)0xe9e2a6a3, (q31_t)0x7c0a74f0, (q31_t)0xe9d6dc3b, + (q31_t)0x7c0619dc, (q31_t)0xe9cb12ad, (q31_t)0x7c01bc78, (q31_t)0xe9bf49fa, + (q31_t)0x7bfd5cc4, (q31_t)0xe9b38223, (q31_t)0x7bf8fac0, (q31_t)0xe9a7bb28, + (q31_t)0x7bf4966c, (q31_t)0xe99bf509, (q31_t)0x7bf02fc9, (q31_t)0xe9902fc7, + (q31_t)0x7bebc6d5, (q31_t)0xe9846b63, (q31_t)0x7be75b93, (q31_t)0xe978a7dd, + (q31_t)0x7be2ee01, (q31_t)0xe96ce535, (q31_t)0x7bde7e20, (q31_t)0xe961236c, + (q31_t)0x7bda0bf0, (q31_t)0xe9556282, (q31_t)0x7bd59771, (q31_t)0xe949a278, + (q31_t)0x7bd120a4, (q31_t)0xe93de34e, (q31_t)0x7bcca789, (q31_t)0xe9322505, + (q31_t)0x7bc82c1f, (q31_t)0xe926679c, (q31_t)0x7bc3ae67, (q31_t)0xe91aab16, + (q31_t)0x7bbf2e62, (q31_t)0xe90eef71, (q31_t)0x7bbaac0e, (q31_t)0xe90334af, + (q31_t)0x7bb6276e, (q31_t)0xe8f77acf, (q31_t)0x7bb1a080, (q31_t)0xe8ebc1d3, + (q31_t)0x7bad1744, (q31_t)0xe8e009ba, (q31_t)0x7ba88bbc, (q31_t)0xe8d45286, + (q31_t)0x7ba3fde7, (q31_t)0xe8c89c37, (q31_t)0x7b9f6dc5, (q31_t)0xe8bce6cd, + (q31_t)0x7b9adb57, (q31_t)0xe8b13248, (q31_t)0x7b96469d, (q31_t)0xe8a57ea9, + (q31_t)0x7b91af97, (q31_t)0xe899cbf1, (q31_t)0x7b8d1644, (q31_t)0xe88e1a20, + (q31_t)0x7b887aa6, (q31_t)0xe8826936, (q31_t)0x7b83dcbc, (q31_t)0xe876b934, + (q31_t)0x7b7f3c87, (q31_t)0xe86b0a1a, (q31_t)0x7b7a9a07, (q31_t)0xe85f5be9, + (q31_t)0x7b75f53c, (q31_t)0xe853aea1, (q31_t)0x7b714e25, (q31_t)0xe8480243, + (q31_t)0x7b6ca4c4, (q31_t)0xe83c56cf, (q31_t)0x7b67f919, (q31_t)0xe830ac45, + (q31_t)0x7b634b23, (q31_t)0xe82502a7, (q31_t)0x7b5e9ae4, (q31_t)0xe81959f4, + (q31_t)0x7b59e85a, (q31_t)0xe80db22d, (q31_t)0x7b553386, (q31_t)0xe8020b52, + (q31_t)0x7b507c69, (q31_t)0xe7f66564, (q31_t)0x7b4bc303, (q31_t)0xe7eac063, + (q31_t)0x7b470753, (q31_t)0xe7df1c50, (q31_t)0x7b42495a, (q31_t)0xe7d3792b, + (q31_t)0x7b3d8918, (q31_t)0xe7c7d6f4, (q31_t)0x7b38c68e, (q31_t)0xe7bc35ad, + (q31_t)0x7b3401bb, (q31_t)0xe7b09555, (q31_t)0x7b2f3aa0, (q31_t)0xe7a4f5ed, + (q31_t)0x7b2a713d, (q31_t)0xe7995776, (q31_t)0x7b25a591, (q31_t)0xe78db9ef, + (q31_t)0x7b20d79e, (q31_t)0xe7821d59, (q31_t)0x7b1c0764, (q31_t)0xe77681b6, + (q31_t)0x7b1734e2, (q31_t)0xe76ae704, (q31_t)0x7b126019, (q31_t)0xe75f4d45, + (q31_t)0x7b0d8909, (q31_t)0xe753b479, (q31_t)0x7b08afb2, (q31_t)0xe7481ca1, + (q31_t)0x7b03d414, (q31_t)0xe73c85bc, (q31_t)0x7afef630, (q31_t)0xe730efcc, + (q31_t)0x7afa1605, (q31_t)0xe7255ad1, (q31_t)0x7af53395, (q31_t)0xe719c6cb, + (q31_t)0x7af04edf, (q31_t)0xe70e33bb, (q31_t)0x7aeb67e3, (q31_t)0xe702a1a1, + (q31_t)0x7ae67ea1, (q31_t)0xe6f7107e, (q31_t)0x7ae1931a, (q31_t)0xe6eb8052, + (q31_t)0x7adca54e, (q31_t)0xe6dff11d, (q31_t)0x7ad7b53d, (q31_t)0xe6d462e1, + (q31_t)0x7ad2c2e8, (q31_t)0xe6c8d59c, (q31_t)0x7acdce4d, (q31_t)0xe6bd4951, + (q31_t)0x7ac8d76f, (q31_t)0xe6b1bdff, (q31_t)0x7ac3de4c, (q31_t)0xe6a633a6, + (q31_t)0x7abee2e5, (q31_t)0xe69aaa48, (q31_t)0x7ab9e53a, (q31_t)0xe68f21e5, + (q31_t)0x7ab4e54c, (q31_t)0xe6839a7c, (q31_t)0x7aafe31b, (q31_t)0xe6781410, + (q31_t)0x7aaadea6, (q31_t)0xe66c8e9f, (q31_t)0x7aa5d7ee, (q31_t)0xe6610a2a, + (q31_t)0x7aa0cef3, (q31_t)0xe65586b3, (q31_t)0x7a9bc3b6, (q31_t)0xe64a0438, + (q31_t)0x7a96b636, (q31_t)0xe63e82bc, (q31_t)0x7a91a674, (q31_t)0xe633023e, + (q31_t)0x7a8c9470, (q31_t)0xe62782be, (q31_t)0x7a87802a, (q31_t)0xe61c043d, + (q31_t)0x7a8269a3, (q31_t)0xe61086bc, (q31_t)0x7a7d50da, (q31_t)0xe6050a3b, + (q31_t)0x7a7835cf, (q31_t)0xe5f98ebb, (q31_t)0x7a731884, (q31_t)0xe5ee143b, + (q31_t)0x7a6df8f8, (q31_t)0xe5e29abc, (q31_t)0x7a68d72b, (q31_t)0xe5d72240, + (q31_t)0x7a63b31d, (q31_t)0xe5cbaac5, (q31_t)0x7a5e8cd0, (q31_t)0xe5c0344d, + (q31_t)0x7a596442, (q31_t)0xe5b4bed8, (q31_t)0x7a543974, (q31_t)0xe5a94a67, + (q31_t)0x7a4f0c67, (q31_t)0xe59dd6f9, (q31_t)0x7a49dd1a, (q31_t)0xe5926490, + (q31_t)0x7a44ab8e, (q31_t)0xe586f32c, (q31_t)0x7a3f77c3, (q31_t)0xe57b82cd, + (q31_t)0x7a3a41b9, (q31_t)0xe5701374, (q31_t)0x7a350970, (q31_t)0xe564a521, + (q31_t)0x7a2fcee8, (q31_t)0xe55937d5, (q31_t)0x7a2a9223, (q31_t)0xe54dcb8f, + (q31_t)0x7a25531f, (q31_t)0xe5426051, (q31_t)0x7a2011de, (q31_t)0xe536f61b, + (q31_t)0x7a1ace5f, (q31_t)0xe52b8cee, (q31_t)0x7a1588a2, (q31_t)0xe52024c9, + (q31_t)0x7a1040a8, (q31_t)0xe514bdad, (q31_t)0x7a0af671, (q31_t)0xe509579b, + (q31_t)0x7a05a9fd, (q31_t)0xe4fdf294, (q31_t)0x7a005b4d, (q31_t)0xe4f28e96, + (q31_t)0x79fb0a60, (q31_t)0xe4e72ba4, (q31_t)0x79f5b737, (q31_t)0xe4dbc9bd, + (q31_t)0x79f061d2, (q31_t)0xe4d068e2, (q31_t)0x79eb0a31, (q31_t)0xe4c50914, + (q31_t)0x79e5b054, (q31_t)0xe4b9aa52, (q31_t)0x79e0543c, (q31_t)0xe4ae4c9d, + (q31_t)0x79daf5e8, (q31_t)0xe4a2eff6, (q31_t)0x79d5955a, (q31_t)0xe497945d, + (q31_t)0x79d03291, (q31_t)0xe48c39d3, (q31_t)0x79cacd8d, (q31_t)0xe480e057, + (q31_t)0x79c5664f, (q31_t)0xe47587eb, (q31_t)0x79bffcd7, (q31_t)0xe46a308f, + (q31_t)0x79ba9125, (q31_t)0xe45eda43, (q31_t)0x79b52339, (q31_t)0xe4538507, + (q31_t)0x79afb313, (q31_t)0xe44830dd, (q31_t)0x79aa40b4, (q31_t)0xe43cddc4, + (q31_t)0x79a4cc1c, (q31_t)0xe4318bbe, (q31_t)0x799f554b, (q31_t)0xe4263ac9, + (q31_t)0x7999dc42, (q31_t)0xe41aeae8, (q31_t)0x799460ff, (q31_t)0xe40f9c1a, + (q31_t)0x798ee385, (q31_t)0xe4044e60, (q31_t)0x798963d2, (q31_t)0xe3f901ba, + (q31_t)0x7983e1e8, (q31_t)0xe3edb628, (q31_t)0x797e5dc6, (q31_t)0xe3e26bac, + (q31_t)0x7978d76c, (q31_t)0xe3d72245, (q31_t)0x79734edc, (q31_t)0xe3cbd9f4, + (q31_t)0x796dc414, (q31_t)0xe3c092b9, (q31_t)0x79683715, (q31_t)0xe3b54c95, + (q31_t)0x7962a7e0, (q31_t)0xe3aa0788, (q31_t)0x795d1675, (q31_t)0xe39ec393, + (q31_t)0x795782d3, (q31_t)0xe39380b6, (q31_t)0x7951ecfc, (q31_t)0xe3883ef2, + (q31_t)0x794c54ee, (q31_t)0xe37cfe47, (q31_t)0x7946baac, (q31_t)0xe371beb5, + (q31_t)0x79411e33, (q31_t)0xe366803c, (q31_t)0x793b7f86, (q31_t)0xe35b42df, + (q31_t)0x7935dea4, (q31_t)0xe350069b, (q31_t)0x79303b8e, (q31_t)0xe344cb73, + (q31_t)0x792a9642, (q31_t)0xe3399167, (q31_t)0x7924eec3, (q31_t)0xe32e5876, + (q31_t)0x791f4510, (q31_t)0xe32320a2, (q31_t)0x79199929, (q31_t)0xe317e9eb, + (q31_t)0x7913eb0e, (q31_t)0xe30cb451, (q31_t)0x790e3ac0, (q31_t)0xe3017fd5, + (q31_t)0x7908883f, (q31_t)0xe2f64c77, (q31_t)0x7902d38b, (q31_t)0xe2eb1a37, + (q31_t)0x78fd1ca4, (q31_t)0xe2dfe917, (q31_t)0x78f7638b, (q31_t)0xe2d4b916, + (q31_t)0x78f1a840, (q31_t)0xe2c98a35, (q31_t)0x78ebeac2, (q31_t)0xe2be5c74, + (q31_t)0x78e62b13, (q31_t)0xe2b32fd4, (q31_t)0x78e06932, (q31_t)0xe2a80456, + (q31_t)0x78daa520, (q31_t)0xe29cd9f8, (q31_t)0x78d4dedd, (q31_t)0xe291b0bd, + (q31_t)0x78cf1669, (q31_t)0xe28688a4, (q31_t)0x78c94bc4, (q31_t)0xe27b61af, + (q31_t)0x78c37eef, (q31_t)0xe2703bdc, (q31_t)0x78bdafea, (q31_t)0xe265172e, + (q31_t)0x78b7deb4, (q31_t)0xe259f3a3, (q31_t)0x78b20b4f, (q31_t)0xe24ed13d, + (q31_t)0x78ac35ba, (q31_t)0xe243affc, (q31_t)0x78a65df6, (q31_t)0xe2388fe1, + (q31_t)0x78a08402, (q31_t)0xe22d70eb, (q31_t)0x789aa7e0, (q31_t)0xe222531c, + (q31_t)0x7894c98f, (q31_t)0xe2173674, (q31_t)0x788ee910, (q31_t)0xe20c1af3, + (q31_t)0x78890663, (q31_t)0xe2010099, (q31_t)0x78832187, (q31_t)0xe1f5e768, + (q31_t)0x787d3a7e, (q31_t)0xe1eacf5f, (q31_t)0x78775147, (q31_t)0xe1dfb87f, + (q31_t)0x787165e3, (q31_t)0xe1d4a2c8, (q31_t)0x786b7852, (q31_t)0xe1c98e3b, + (q31_t)0x78658894, (q31_t)0xe1be7ad8, (q31_t)0x785f96a9, (q31_t)0xe1b368a0, + (q31_t)0x7859a292, (q31_t)0xe1a85793, (q31_t)0x7853ac4f, (q31_t)0xe19d47b1, + (q31_t)0x784db3e0, (q31_t)0xe19238fb, (q31_t)0x7847b946, (q31_t)0xe1872b72, + (q31_t)0x7841bc7f, (q31_t)0xe17c1f15, (q31_t)0x783bbd8e, (q31_t)0xe17113e5, + (q31_t)0x7835bc71, (q31_t)0xe16609e3, (q31_t)0x782fb92a, (q31_t)0xe15b0110, + (q31_t)0x7829b3b9, (q31_t)0xe14ff96a, (q31_t)0x7823ac1d, (q31_t)0xe144f2f3, + (q31_t)0x781da256, (q31_t)0xe139edac, (q31_t)0x78179666, (q31_t)0xe12ee995, + (q31_t)0x7811884d, (q31_t)0xe123e6ad, (q31_t)0x780b780a, (q31_t)0xe118e4f6, + (q31_t)0x7805659e, (q31_t)0xe10de470, (q31_t)0x77ff5109, (q31_t)0xe102e51c, + (q31_t)0x77f93a4b, (q31_t)0xe0f7e6f9, (q31_t)0x77f32165, (q31_t)0xe0ecea09, + (q31_t)0x77ed0657, (q31_t)0xe0e1ee4b, (q31_t)0x77e6e921, (q31_t)0xe0d6f3c1, + (q31_t)0x77e0c9c3, (q31_t)0xe0cbfa6a, (q31_t)0x77daa83d, (q31_t)0xe0c10247, + (q31_t)0x77d48490, (q31_t)0xe0b60b58, (q31_t)0x77ce5ebd, (q31_t)0xe0ab159e, + (q31_t)0x77c836c2, (q31_t)0xe0a0211a, (q31_t)0x77c20ca1, (q31_t)0xe0952dcb, + (q31_t)0x77bbe05a, (q31_t)0xe08a3bb2, (q31_t)0x77b5b1ec, (q31_t)0xe07f4acf, + (q31_t)0x77af8159, (q31_t)0xe0745b24, (q31_t)0x77a94ea0, (q31_t)0xe0696cb0, + (q31_t)0x77a319c2, (q31_t)0xe05e7f74, (q31_t)0x779ce2be, (q31_t)0xe053936f, + (q31_t)0x7796a996, (q31_t)0xe048a8a4, (q31_t)0x77906e49, (q31_t)0xe03dbf11, + (q31_t)0x778a30d8, (q31_t)0xe032d6b8, (q31_t)0x7783f143, (q31_t)0xe027ef99, + (q31_t)0x777daf89, (q31_t)0xe01d09b4, (q31_t)0x77776bac, (q31_t)0xe012250a, + (q31_t)0x777125ac, (q31_t)0xe007419b, (q31_t)0x776add88, (q31_t)0xdffc5f67, + (q31_t)0x77649341, (q31_t)0xdff17e70, (q31_t)0x775e46d8, (q31_t)0xdfe69eb4, + (q31_t)0x7757f84c, (q31_t)0xdfdbc036, (q31_t)0x7751a79e, (q31_t)0xdfd0e2f5, + (q31_t)0x774b54ce, (q31_t)0xdfc606f1, (q31_t)0x7744ffdd, (q31_t)0xdfbb2c2c, + (q31_t)0x773ea8ca, (q31_t)0xdfb052a5, (q31_t)0x77384f95, (q31_t)0xdfa57a5d, + (q31_t)0x7731f440, (q31_t)0xdf9aa354, (q31_t)0x772b96ca, (q31_t)0xdf8fcd8b, + (q31_t)0x77253733, (q31_t)0xdf84f902, (q31_t)0x771ed57c, (q31_t)0xdf7a25ba, + (q31_t)0x771871a5, (q31_t)0xdf6f53b3, (q31_t)0x77120bae, (q31_t)0xdf6482ed, + (q31_t)0x770ba398, (q31_t)0xdf59b369, (q31_t)0x77053962, (q31_t)0xdf4ee527, + (q31_t)0x76fecd0e, (q31_t)0xdf441828, (q31_t)0x76f85e9a, (q31_t)0xdf394c6b, + (q31_t)0x76f1ee09, (q31_t)0xdf2e81f3, (q31_t)0x76eb7b58, (q31_t)0xdf23b8be, + (q31_t)0x76e5068a, (q31_t)0xdf18f0ce, (q31_t)0x76de8f9e, (q31_t)0xdf0e2a22, + (q31_t)0x76d81695, (q31_t)0xdf0364bc, (q31_t)0x76d19b6e, (q31_t)0xdef8a09b, + (q31_t)0x76cb1e2a, (q31_t)0xdeedddc0, (q31_t)0x76c49ec9, (q31_t)0xdee31c2b, + (q31_t)0x76be1d4c, (q31_t)0xded85bdd, (q31_t)0x76b799b3, (q31_t)0xdecd9cd7, + (q31_t)0x76b113fd, (q31_t)0xdec2df18, (q31_t)0x76aa8c2c, (q31_t)0xdeb822a1, + (q31_t)0x76a4023f, (q31_t)0xdead6773, (q31_t)0x769d7637, (q31_t)0xdea2ad8d, + (q31_t)0x7696e814, (q31_t)0xde97f4f1, (q31_t)0x769057d6, (q31_t)0xde8d3d9e, + (q31_t)0x7689c57d, (q31_t)0xde828796, (q31_t)0x7683310b, (q31_t)0xde77d2d8, + (q31_t)0x767c9a7e, (q31_t)0xde6d1f65, (q31_t)0x767601d7, (q31_t)0xde626d3e, + (q31_t)0x766f6717, (q31_t)0xde57bc62, (q31_t)0x7668ca3e, (q31_t)0xde4d0cd2, + (q31_t)0x76622b4c, (q31_t)0xde425e8f, (q31_t)0x765b8a41, (q31_t)0xde37b199, + (q31_t)0x7654e71d, (q31_t)0xde2d05f1, (q31_t)0x764e41e2, (q31_t)0xde225b96, + (q31_t)0x76479a8e, (q31_t)0xde17b28a, (q31_t)0x7640f123, (q31_t)0xde0d0acc, + (q31_t)0x763a45a0, (q31_t)0xde02645d, (q31_t)0x76339806, (q31_t)0xddf7bf3e, + (q31_t)0x762ce855, (q31_t)0xdded1b6e, (q31_t)0x7626368d, (q31_t)0xdde278ef, + (q31_t)0x761f82af, (q31_t)0xddd7d7c1, (q31_t)0x7618ccba, (q31_t)0xddcd37e4, + (q31_t)0x761214b0, (q31_t)0xddc29958, (q31_t)0x760b5a90, (q31_t)0xddb7fc1e, + (q31_t)0x76049e5b, (q31_t)0xddad6036, (q31_t)0x75fde011, (q31_t)0xdda2c5a2, + (q31_t)0x75f71fb1, (q31_t)0xdd982c60, (q31_t)0x75f05d3d, (q31_t)0xdd8d9472, + (q31_t)0x75e998b5, (q31_t)0xdd82fdd8, (q31_t)0x75e2d219, (q31_t)0xdd786892, + (q31_t)0x75dc0968, (q31_t)0xdd6dd4a2, (q31_t)0x75d53ea5, (q31_t)0xdd634206, + (q31_t)0x75ce71ce, (q31_t)0xdd58b0c0, (q31_t)0x75c7a2e3, (q31_t)0xdd4e20d0, + (q31_t)0x75c0d1e7, (q31_t)0xdd439236, (q31_t)0x75b9fed7, (q31_t)0xdd3904f4, + (q31_t)0x75b329b5, (q31_t)0xdd2e7908, (q31_t)0x75ac5282, (q31_t)0xdd23ee74, + (q31_t)0x75a5793c, (q31_t)0xdd196538, (q31_t)0x759e9de5, (q31_t)0xdd0edd55, + (q31_t)0x7597c07d, (q31_t)0xdd0456ca, (q31_t)0x7590e104, (q31_t)0xdcf9d199, + (q31_t)0x7589ff7a, (q31_t)0xdcef4dc2, (q31_t)0x75831be0, (q31_t)0xdce4cb44, + (q31_t)0x757c3636, (q31_t)0xdcda4a21, (q31_t)0x75754e7c, (q31_t)0xdccfca59, + (q31_t)0x756e64b2, (q31_t)0xdcc54bec, (q31_t)0x756778d9, (q31_t)0xdcbacedb, + (q31_t)0x75608af1, (q31_t)0xdcb05326, (q31_t)0x75599afa, (q31_t)0xdca5d8cd, + (q31_t)0x7552a8f4, (q31_t)0xdc9b5fd2, (q31_t)0x754bb4e1, (q31_t)0xdc90e834, + (q31_t)0x7544bebf, (q31_t)0xdc8671f3, (q31_t)0x753dc68f, (q31_t)0xdc7bfd11, + (q31_t)0x7536cc52, (q31_t)0xdc71898d, (q31_t)0x752fd008, (q31_t)0xdc671768, + (q31_t)0x7528d1b1, (q31_t)0xdc5ca6a2, (q31_t)0x7521d14d, (q31_t)0xdc52373c, + (q31_t)0x751acedd, (q31_t)0xdc47c936, (q31_t)0x7513ca60, (q31_t)0xdc3d5c91, + (q31_t)0x750cc3d8, (q31_t)0xdc32f14d, (q31_t)0x7505bb44, (q31_t)0xdc28876a, + (q31_t)0x74feb0a5, (q31_t)0xdc1e1ee9, (q31_t)0x74f7a3fb, (q31_t)0xdc13b7c9, + (q31_t)0x74f09546, (q31_t)0xdc09520d, (q31_t)0x74e98487, (q31_t)0xdbfeedb3, + (q31_t)0x74e271bd, (q31_t)0xdbf48abd, (q31_t)0x74db5cea, (q31_t)0xdbea292b, + (q31_t)0x74d4460c, (q31_t)0xdbdfc8fc, (q31_t)0x74cd2d26, (q31_t)0xdbd56a32, + (q31_t)0x74c61236, (q31_t)0xdbcb0cce, (q31_t)0x74bef53d, (q31_t)0xdbc0b0ce, + (q31_t)0x74b7d63c, (q31_t)0xdbb65634, (q31_t)0x74b0b533, (q31_t)0xdbabfd01, + (q31_t)0x74a99221, (q31_t)0xdba1a534, (q31_t)0x74a26d08, (q31_t)0xdb974ece, + (q31_t)0x749b45e7, (q31_t)0xdb8cf9cf, (q31_t)0x74941cbf, (q31_t)0xdb82a638, + (q31_t)0x748cf190, (q31_t)0xdb785409, (q31_t)0x7485c45b, (q31_t)0xdb6e0342, + (q31_t)0x747e951f, (q31_t)0xdb63b3e5, (q31_t)0x747763dd, (q31_t)0xdb5965f1, + (q31_t)0x74703095, (q31_t)0xdb4f1967, (q31_t)0x7468fb47, (q31_t)0xdb44ce46, + (q31_t)0x7461c3f5, (q31_t)0xdb3a8491, (q31_t)0x745a8a9d, (q31_t)0xdb303c46, + (q31_t)0x74534f41, (q31_t)0xdb25f566, (q31_t)0x744c11e0, (q31_t)0xdb1baff2, + (q31_t)0x7444d27b, (q31_t)0xdb116beb, (q31_t)0x743d9112, (q31_t)0xdb072950, + (q31_t)0x74364da6, (q31_t)0xdafce821, (q31_t)0x742f0836, (q31_t)0xdaf2a860, + (q31_t)0x7427c0c3, (q31_t)0xdae86a0d, (q31_t)0x7420774d, (q31_t)0xdade2d28, + (q31_t)0x74192bd5, (q31_t)0xdad3f1b1, (q31_t)0x7411de5b, (q31_t)0xdac9b7a9, + (q31_t)0x740a8edf, (q31_t)0xdabf7f11, (q31_t)0x74033d61, (q31_t)0xdab547e8, + (q31_t)0x73fbe9e2, (q31_t)0xdaab122f, (q31_t)0x73f49462, (q31_t)0xdaa0dde7, + (q31_t)0x73ed3ce1, (q31_t)0xda96ab0f, (q31_t)0x73e5e360, (q31_t)0xda8c79a9, + (q31_t)0x73de87de, (q31_t)0xda8249b4, (q31_t)0x73d72a5d, (q31_t)0xda781b31, + (q31_t)0x73cfcadc, (q31_t)0xda6dee21, (q31_t)0x73c8695b, (q31_t)0xda63c284, + (q31_t)0x73c105db, (q31_t)0xda599859, (q31_t)0x73b9a05d, (q31_t)0xda4f6fa3, + (q31_t)0x73b238e0, (q31_t)0xda454860, (q31_t)0x73aacf65, (q31_t)0xda3b2292, + (q31_t)0x73a363ec, (q31_t)0xda30fe38, (q31_t)0x739bf675, (q31_t)0xda26db54, + (q31_t)0x73948701, (q31_t)0xda1cb9e5, (q31_t)0x738d1590, (q31_t)0xda1299ec, + (q31_t)0x7385a222, (q31_t)0xda087b69, (q31_t)0x737e2cb7, (q31_t)0xd9fe5e5e, + (q31_t)0x7376b551, (q31_t)0xd9f442c9, (q31_t)0x736f3bee, (q31_t)0xd9ea28ac, + (q31_t)0x7367c090, (q31_t)0xd9e01006, (q31_t)0x73604336, (q31_t)0xd9d5f8d9, + (q31_t)0x7358c3e2, (q31_t)0xd9cbe325, (q31_t)0x73514292, (q31_t)0xd9c1cee9, + (q31_t)0x7349bf48, (q31_t)0xd9b7bc27, (q31_t)0x73423a04, (q31_t)0xd9adaadf, + (q31_t)0x733ab2c6, (q31_t)0xd9a39b11, (q31_t)0x7333298f, (q31_t)0xd9998cbe, + (q31_t)0x732b9e5e, (q31_t)0xd98f7fe6, (q31_t)0x73241134, (q31_t)0xd9857489, + (q31_t)0x731c8211, (q31_t)0xd97b6aa8, (q31_t)0x7314f0f6, (q31_t)0xd9716243, + (q31_t)0x730d5de3, (q31_t)0xd9675b5a, (q31_t)0x7305c8d7, (q31_t)0xd95d55ef, + (q31_t)0x72fe31d5, (q31_t)0xd9535201, (q31_t)0x72f698db, (q31_t)0xd9494f90, + (q31_t)0x72eefdea, (q31_t)0xd93f4e9e, (q31_t)0x72e76102, (q31_t)0xd9354f2a, + (q31_t)0x72dfc224, (q31_t)0xd92b5135, (q31_t)0x72d82150, (q31_t)0xd92154bf, + (q31_t)0x72d07e85, (q31_t)0xd91759c9, (q31_t)0x72c8d9c6, (q31_t)0xd90d6053, + (q31_t)0x72c13311, (q31_t)0xd903685d, (q31_t)0x72b98a67, (q31_t)0xd8f971e8, + (q31_t)0x72b1dfc9, (q31_t)0xd8ef7cf4, (q31_t)0x72aa3336, (q31_t)0xd8e58982, + (q31_t)0x72a284b0, (q31_t)0xd8db9792, (q31_t)0x729ad435, (q31_t)0xd8d1a724, + (q31_t)0x729321c7, (q31_t)0xd8c7b838, (q31_t)0x728b6d66, (q31_t)0xd8bdcad0, + (q31_t)0x7283b712, (q31_t)0xd8b3deeb, (q31_t)0x727bfecc, (q31_t)0xd8a9f48a, + (q31_t)0x72744493, (q31_t)0xd8a00bae, (q31_t)0x726c8868, (q31_t)0xd8962456, + (q31_t)0x7264ca4c, (q31_t)0xd88c3e83, (q31_t)0x725d0a3e, (q31_t)0xd8825a35, + (q31_t)0x72554840, (q31_t)0xd878776d, (q31_t)0x724d8450, (q31_t)0xd86e962b, + (q31_t)0x7245be70, (q31_t)0xd864b670, (q31_t)0x723df6a0, (q31_t)0xd85ad83c, + (q31_t)0x72362ce0, (q31_t)0xd850fb8e, (q31_t)0x722e6130, (q31_t)0xd8472069, + (q31_t)0x72269391, (q31_t)0xd83d46cc, (q31_t)0x721ec403, (q31_t)0xd8336eb7, + (q31_t)0x7216f287, (q31_t)0xd829982b, (q31_t)0x720f1f1c, (q31_t)0xd81fc328, + (q31_t)0x720749c3, (q31_t)0xd815efae, (q31_t)0x71ff727c, (q31_t)0xd80c1dbf, + (q31_t)0x71f79948, (q31_t)0xd8024d59, (q31_t)0x71efbe27, (q31_t)0xd7f87e7f, + (q31_t)0x71e7e118, (q31_t)0xd7eeb130, (q31_t)0x71e0021e, (q31_t)0xd7e4e56c, + (q31_t)0x71d82137, (q31_t)0xd7db1b34, (q31_t)0x71d03e64, (q31_t)0xd7d15288, + (q31_t)0x71c859a5, (q31_t)0xd7c78b68, (q31_t)0x71c072fb, (q31_t)0xd7bdc5d6, + (q31_t)0x71b88a66, (q31_t)0xd7b401d1, (q31_t)0x71b09fe7, (q31_t)0xd7aa3f5a, + (q31_t)0x71a8b37c, (q31_t)0xd7a07e70, (q31_t)0x71a0c528, (q31_t)0xd796bf16, + (q31_t)0x7198d4ea, (q31_t)0xd78d014a, (q31_t)0x7190e2c3, (q31_t)0xd783450d, + (q31_t)0x7188eeb2, (q31_t)0xd7798a60, (q31_t)0x7180f8b8, (q31_t)0xd76fd143, + (q31_t)0x717900d6, (q31_t)0xd76619b6, (q31_t)0x7171070c, (q31_t)0xd75c63ba, + (q31_t)0x71690b59, (q31_t)0xd752af4f, (q31_t)0x71610dbf, (q31_t)0xd748fc75, + (q31_t)0x71590e3e, (q31_t)0xd73f4b2e, (q31_t)0x71510cd5, (q31_t)0xd7359b78, + (q31_t)0x71490986, (q31_t)0xd72bed55, (q31_t)0x71410450, (q31_t)0xd72240c5, + (q31_t)0x7138fd35, (q31_t)0xd71895c9, (q31_t)0x7130f433, (q31_t)0xd70eec60, + (q31_t)0x7128e94c, (q31_t)0xd705448b, (q31_t)0x7120dc80, (q31_t)0xd6fb9e4b, + (q31_t)0x7118cdcf, (q31_t)0xd6f1f99f, (q31_t)0x7110bd39, (q31_t)0xd6e85689, + (q31_t)0x7108aabf, (q31_t)0xd6deb508, (q31_t)0x71009661, (q31_t)0xd6d5151d, + (q31_t)0x70f8801f, (q31_t)0xd6cb76c9, (q31_t)0x70f067fb, (q31_t)0xd6c1da0b, + (q31_t)0x70e84df3, (q31_t)0xd6b83ee4, (q31_t)0x70e03208, (q31_t)0xd6aea555, + (q31_t)0x70d8143b, (q31_t)0xd6a50d5d, (q31_t)0x70cff48c, (q31_t)0xd69b76fe, + (q31_t)0x70c7d2fb, (q31_t)0xd691e237, (q31_t)0x70bfaf89, (q31_t)0xd6884f09, + (q31_t)0x70b78a36, (q31_t)0xd67ebd74, (q31_t)0x70af6302, (q31_t)0xd6752d79, + (q31_t)0x70a739ed, (q31_t)0xd66b9f18, (q31_t)0x709f0ef8, (q31_t)0xd6621251, + (q31_t)0x7096e223, (q31_t)0xd6588725, (q31_t)0x708eb36f, (q31_t)0xd64efd94, + (q31_t)0x708682dc, (q31_t)0xd645759f, (q31_t)0x707e5069, (q31_t)0xd63bef46, + (q31_t)0x70761c18, (q31_t)0xd6326a88, (q31_t)0x706de5e9, (q31_t)0xd628e767, + (q31_t)0x7065addb, (q31_t)0xd61f65e4, (q31_t)0x705d73f0, (q31_t)0xd615e5fd, + (q31_t)0x70553828, (q31_t)0xd60c67b4, (q31_t)0x704cfa83, (q31_t)0xd602eb0a, + (q31_t)0x7044bb00, (q31_t)0xd5f96ffd, (q31_t)0x703c79a2, (q31_t)0xd5eff690, + (q31_t)0x70343667, (q31_t)0xd5e67ec1, (q31_t)0x702bf151, (q31_t)0xd5dd0892, + (q31_t)0x7023aa5f, (q31_t)0xd5d39403, (q31_t)0x701b6193, (q31_t)0xd5ca2115, + (q31_t)0x701316eb, (q31_t)0xd5c0afc6, (q31_t)0x700aca69, (q31_t)0xd5b74019, + (q31_t)0x70027c0c, (q31_t)0xd5add20d, (q31_t)0x6ffa2bd6, (q31_t)0xd5a465a3, + (q31_t)0x6ff1d9c7, (q31_t)0xd59afadb, (q31_t)0x6fe985de, (q31_t)0xd59191b5, + (q31_t)0x6fe1301c, (q31_t)0xd5882a32, (q31_t)0x6fd8d882, (q31_t)0xd57ec452, + (q31_t)0x6fd07f0f, (q31_t)0xd5756016, (q31_t)0x6fc823c5, (q31_t)0xd56bfd7d, + (q31_t)0x6fbfc6a3, (q31_t)0xd5629c89, (q31_t)0x6fb767aa, (q31_t)0xd5593d3a, + (q31_t)0x6faf06da, (q31_t)0xd54fdf8f, (q31_t)0x6fa6a433, (q31_t)0xd5468389, + (q31_t)0x6f9e3fb6, (q31_t)0xd53d292a, (q31_t)0x6f95d963, (q31_t)0xd533d070, + (q31_t)0x6f8d713a, (q31_t)0xd52a795d, (q31_t)0x6f85073c, (q31_t)0xd52123f0, + (q31_t)0x6f7c9b69, (q31_t)0xd517d02b, (q31_t)0x6f742dc1, (q31_t)0xd50e7e0d, + (q31_t)0x6f6bbe45, (q31_t)0xd5052d97, (q31_t)0x6f634cf5, (q31_t)0xd4fbdec9, + (q31_t)0x6f5ad9d1, (q31_t)0xd4f291a4, (q31_t)0x6f5264da, (q31_t)0xd4e94627, + (q31_t)0x6f49ee0f, (q31_t)0xd4dffc54, (q31_t)0x6f417573, (q31_t)0xd4d6b42b, + (q31_t)0x6f38fb03, (q31_t)0xd4cd6dab, (q31_t)0x6f307ec2, (q31_t)0xd4c428d6, + (q31_t)0x6f2800af, (q31_t)0xd4bae5ab, (q31_t)0x6f1f80ca, (q31_t)0xd4b1a42c, + (q31_t)0x6f16ff14, (q31_t)0xd4a86458, (q31_t)0x6f0e7b8e, (q31_t)0xd49f2630, + (q31_t)0x6f05f637, (q31_t)0xd495e9b3, (q31_t)0x6efd6f10, (q31_t)0xd48caee4, + (q31_t)0x6ef4e619, (q31_t)0xd48375c1, (q31_t)0x6eec5b53, (q31_t)0xd47a3e4b, + (q31_t)0x6ee3cebe, (q31_t)0xd4710883, (q31_t)0x6edb405a, (q31_t)0xd467d469, + (q31_t)0x6ed2b027, (q31_t)0xd45ea1fd, (q31_t)0x6eca1e27, (q31_t)0xd4557140, + (q31_t)0x6ec18a58, (q31_t)0xd44c4232, (q31_t)0x6eb8f4bc, (q31_t)0xd44314d3, + (q31_t)0x6eb05d53, (q31_t)0xd439e923, (q31_t)0x6ea7c41e, (q31_t)0xd430bf24, + (q31_t)0x6e9f291b, (q31_t)0xd42796d5, (q31_t)0x6e968c4d, (q31_t)0xd41e7037, + (q31_t)0x6e8dedb3, (q31_t)0xd4154b4a, (q31_t)0x6e854d4d, (q31_t)0xd40c280e, + (q31_t)0x6e7cab1c, (q31_t)0xd4030684, (q31_t)0x6e740720, (q31_t)0xd3f9e6ad, + (q31_t)0x6e6b615a, (q31_t)0xd3f0c887, (q31_t)0x6e62b9ca, (q31_t)0xd3e7ac15, + (q31_t)0x6e5a1070, (q31_t)0xd3de9156, (q31_t)0x6e51654c, (q31_t)0xd3d5784a, + (q31_t)0x6e48b860, (q31_t)0xd3cc60f2, (q31_t)0x6e4009aa, (q31_t)0xd3c34b4f, + (q31_t)0x6e37592c, (q31_t)0xd3ba3760, (q31_t)0x6e2ea6e6, (q31_t)0xd3b12526, + (q31_t)0x6e25f2d8, (q31_t)0xd3a814a2, (q31_t)0x6e1d3d03, (q31_t)0xd39f05d3, + (q31_t)0x6e148566, (q31_t)0xd395f8ba, (q31_t)0x6e0bcc03, (q31_t)0xd38ced57, + (q31_t)0x6e0310d9, (q31_t)0xd383e3ab, (q31_t)0x6dfa53e9, (q31_t)0xd37adbb6, + (q31_t)0x6df19534, (q31_t)0xd371d579, (q31_t)0x6de8d4b8, (q31_t)0xd368d0f3, + (q31_t)0x6de01278, (q31_t)0xd35fce26, (q31_t)0x6dd74e73, (q31_t)0xd356cd11, + (q31_t)0x6dce88aa, (q31_t)0xd34dcdb4, (q31_t)0x6dc5c11c, (q31_t)0xd344d011, + (q31_t)0x6dbcf7cb, (q31_t)0xd33bd427, (q31_t)0x6db42cb6, (q31_t)0xd332d9f7, + (q31_t)0x6dab5fdf, (q31_t)0xd329e181, (q31_t)0x6da29144, (q31_t)0xd320eac6, + (q31_t)0x6d99c0e7, (q31_t)0xd317f5c6, (q31_t)0x6d90eec8, (q31_t)0xd30f0280, + (q31_t)0x6d881ae8, (q31_t)0xd30610f7, (q31_t)0x6d7f4545, (q31_t)0xd2fd2129, + (q31_t)0x6d766de2, (q31_t)0xd2f43318, (q31_t)0x6d6d94bf, (q31_t)0xd2eb46c3, + (q31_t)0x6d64b9da, (q31_t)0xd2e25c2b, (q31_t)0x6d5bdd36, (q31_t)0xd2d97350, + (q31_t)0x6d52fed2, (q31_t)0xd2d08c33, (q31_t)0x6d4a1eaf, (q31_t)0xd2c7a6d4, + (q31_t)0x6d413ccd, (q31_t)0xd2bec333, (q31_t)0x6d38592c, (q31_t)0xd2b5e151, + (q31_t)0x6d2f73cd, (q31_t)0xd2ad012e, (q31_t)0x6d268cb0, (q31_t)0xd2a422ca, + (q31_t)0x6d1da3d5, (q31_t)0xd29b4626, (q31_t)0x6d14b93d, (q31_t)0xd2926b41, + (q31_t)0x6d0bcce8, (q31_t)0xd289921e, (q31_t)0x6d02ded7, (q31_t)0xd280babb, + (q31_t)0x6cf9ef09, (q31_t)0xd277e518, (q31_t)0x6cf0fd80, (q31_t)0xd26f1138, + (q31_t)0x6ce80a3a, (q31_t)0xd2663f19, (q31_t)0x6cdf153a, (q31_t)0xd25d6ebc, + (q31_t)0x6cd61e7f, (q31_t)0xd254a021, (q31_t)0x6ccd2609, (q31_t)0xd24bd34a, + (q31_t)0x6cc42bd9, (q31_t)0xd2430835, (q31_t)0x6cbb2fef, (q31_t)0xd23a3ee4, + (q31_t)0x6cb2324c, (q31_t)0xd2317756, (q31_t)0x6ca932ef, (q31_t)0xd228b18d, + (q31_t)0x6ca031da, (q31_t)0xd21fed88, (q31_t)0x6c972f0d, (q31_t)0xd2172b48, + (q31_t)0x6c8e2a87, (q31_t)0xd20e6acc, (q31_t)0x6c85244a, (q31_t)0xd205ac17, + (q31_t)0x6c7c1c55, (q31_t)0xd1fcef27, (q31_t)0x6c7312a9, (q31_t)0xd1f433fd, + (q31_t)0x6c6a0746, (q31_t)0xd1eb7a9a, (q31_t)0x6c60fa2d, (q31_t)0xd1e2c2fd, + (q31_t)0x6c57eb5e, (q31_t)0xd1da0d28, (q31_t)0x6c4edada, (q31_t)0xd1d1591a, + (q31_t)0x6c45c8a0, (q31_t)0xd1c8a6d4, (q31_t)0x6c3cb4b1, (q31_t)0xd1bff656, + (q31_t)0x6c339f0e, (q31_t)0xd1b747a0, (q31_t)0x6c2a87b6, (q31_t)0xd1ae9ab4, + (q31_t)0x6c216eaa, (q31_t)0xd1a5ef90, (q31_t)0x6c1853eb, (q31_t)0xd19d4636, + (q31_t)0x6c0f3779, (q31_t)0xd1949ea6, (q31_t)0x6c061953, (q31_t)0xd18bf8e0, + (q31_t)0x6bfcf97c, (q31_t)0xd18354e4, (q31_t)0x6bf3d7f2, (q31_t)0xd17ab2b3, + (q31_t)0x6beab4b6, (q31_t)0xd172124d, (q31_t)0x6be18fc9, (q31_t)0xd16973b3, + (q31_t)0x6bd8692b, (q31_t)0xd160d6e5, (q31_t)0x6bcf40dc, (q31_t)0xd1583be2, + (q31_t)0x6bc616dd, (q31_t)0xd14fa2ad, (q31_t)0x6bbceb2d, (q31_t)0xd1470b44, + (q31_t)0x6bb3bdce, (q31_t)0xd13e75a8, (q31_t)0x6baa8ec0, (q31_t)0xd135e1d9, + (q31_t)0x6ba15e03, (q31_t)0xd12d4fd9, (q31_t)0x6b982b97, (q31_t)0xd124bfa6, + (q31_t)0x6b8ef77d, (q31_t)0xd11c3142, (q31_t)0x6b85c1b5, (q31_t)0xd113a4ad, + (q31_t)0x6b7c8a3f, (q31_t)0xd10b19e7, (q31_t)0x6b73511c, (q31_t)0xd10290f0, + (q31_t)0x6b6a164d, (q31_t)0xd0fa09c9, (q31_t)0x6b60d9d0, (q31_t)0xd0f18472, + (q31_t)0x6b579ba8, (q31_t)0xd0e900ec, (q31_t)0x6b4e5bd4, (q31_t)0xd0e07f36, + (q31_t)0x6b451a55, (q31_t)0xd0d7ff51, (q31_t)0x6b3bd72a, (q31_t)0xd0cf813e, + (q31_t)0x6b329255, (q31_t)0xd0c704fd, (q31_t)0x6b294bd5, (q31_t)0xd0be8a8d, + (q31_t)0x6b2003ac, (q31_t)0xd0b611f1, (q31_t)0x6b16b9d9, (q31_t)0xd0ad9b26, + (q31_t)0x6b0d6e5c, (q31_t)0xd0a5262f, (q31_t)0x6b042137, (q31_t)0xd09cb30b, + (q31_t)0x6afad269, (q31_t)0xd09441bb, (q31_t)0x6af181f3, (q31_t)0xd08bd23f, + (q31_t)0x6ae82fd5, (q31_t)0xd0836497, (q31_t)0x6adedc10, (q31_t)0xd07af8c4, + (q31_t)0x6ad586a3, (q31_t)0xd0728ec6, (q31_t)0x6acc2f90, (q31_t)0xd06a269d, + (q31_t)0x6ac2d6d6, (q31_t)0xd061c04a, (q31_t)0x6ab97c77, (q31_t)0xd0595bcd, + (q31_t)0x6ab02071, (q31_t)0xd050f926, (q31_t)0x6aa6c2c6, (q31_t)0xd0489856, + (q31_t)0x6a9d6377, (q31_t)0xd040395d, (q31_t)0x6a940283, (q31_t)0xd037dc3b, + (q31_t)0x6a8a9fea, (q31_t)0xd02f80f1, (q31_t)0x6a813bae, (q31_t)0xd027277e, + (q31_t)0x6a77d5ce, (q31_t)0xd01ecfe4, (q31_t)0x6a6e6e4b, (q31_t)0xd0167a22, + (q31_t)0x6a650525, (q31_t)0xd00e2639, (q31_t)0x6a5b9a5d, (q31_t)0xd005d42a, + (q31_t)0x6a522df3, (q31_t)0xcffd83f4, (q31_t)0x6a48bfe7, (q31_t)0xcff53597, + (q31_t)0x6a3f503a, (q31_t)0xcfece915, (q31_t)0x6a35deeb, (q31_t)0xcfe49e6d, + (q31_t)0x6a2c6bfd, (q31_t)0xcfdc55a1, (q31_t)0x6a22f76e, (q31_t)0xcfd40eaf, + (q31_t)0x6a19813f, (q31_t)0xcfcbc999, (q31_t)0x6a100970, (q31_t)0xcfc3865e, + (q31_t)0x6a069003, (q31_t)0xcfbb4500, (q31_t)0x69fd14f6, (q31_t)0xcfb3057d, + (q31_t)0x69f3984c, (q31_t)0xcfaac7d8, (q31_t)0x69ea1a03, (q31_t)0xcfa28c10, + (q31_t)0x69e09a1c, (q31_t)0xcf9a5225, (q31_t)0x69d71899, (q31_t)0xcf921a17, + (q31_t)0x69cd9578, (q31_t)0xcf89e3e8, (q31_t)0x69c410ba, (q31_t)0xcf81af97, + (q31_t)0x69ba8a61, (q31_t)0xcf797d24, (q31_t)0x69b1026c, (q31_t)0xcf714c91, + (q31_t)0x69a778db, (q31_t)0xcf691ddd, (q31_t)0x699dedaf, (q31_t)0xcf60f108, + (q31_t)0x699460e8, (q31_t)0xcf58c613, (q31_t)0x698ad287, (q31_t)0xcf509cfe, + (q31_t)0x6981428c, (q31_t)0xcf4875ca, (q31_t)0x6977b0f7, (q31_t)0xcf405077, + (q31_t)0x696e1dc9, (q31_t)0xcf382d05, (q31_t)0x69648902, (q31_t)0xcf300b74, + (q31_t)0x695af2a3, (q31_t)0xcf27ebc5, (q31_t)0x69515aab, (q31_t)0xcf1fcdf8, + (q31_t)0x6947c11c, (q31_t)0xcf17b20d, (q31_t)0x693e25f5, (q31_t)0xcf0f9805, + (q31_t)0x69348937, (q31_t)0xcf077fe1, (q31_t)0x692aeae3, (q31_t)0xceff699f, + (q31_t)0x69214af8, (q31_t)0xcef75541, (q31_t)0x6917a977, (q31_t)0xceef42c7, + (q31_t)0x690e0661, (q31_t)0xcee73231, (q31_t)0x690461b5, (q31_t)0xcedf2380, + (q31_t)0x68fabb75, (q31_t)0xced716b4, (q31_t)0x68f113a0, (q31_t)0xcecf0bcd, + (q31_t)0x68e76a37, (q31_t)0xcec702cb, (q31_t)0x68ddbf3b, (q31_t)0xcebefbb0, + (q31_t)0x68d412ab, (q31_t)0xceb6f67a, (q31_t)0x68ca6488, (q31_t)0xceaef32b, + (q31_t)0x68c0b4d2, (q31_t)0xcea6f1c2, (q31_t)0x68b7038b, (q31_t)0xce9ef241, + (q31_t)0x68ad50b1, (q31_t)0xce96f4a7, (q31_t)0x68a39c46, (q31_t)0xce8ef8f4, + (q31_t)0x6899e64a, (q31_t)0xce86ff2a, (q31_t)0x68902ebd, (q31_t)0xce7f0748, + (q31_t)0x688675a0, (q31_t)0xce77114e, (q31_t)0x687cbaf3, (q31_t)0xce6f1d3d, + (q31_t)0x6872feb6, (q31_t)0xce672b16, (q31_t)0x686940ea, (q31_t)0xce5f3ad8, + (q31_t)0x685f8190, (q31_t)0xce574c84, (q31_t)0x6855c0a6, (q31_t)0xce4f6019, + (q31_t)0x684bfe2f, (q31_t)0xce47759a, (q31_t)0x68423a2a, (q31_t)0xce3f8d05, + (q31_t)0x68387498, (q31_t)0xce37a65b, (q31_t)0x682ead78, (q31_t)0xce2fc19c, + (q31_t)0x6824e4cc, (q31_t)0xce27dec9, (q31_t)0x681b1a94, (q31_t)0xce1ffde2, + (q31_t)0x68114ed0, (q31_t)0xce181ee8, (q31_t)0x68078181, (q31_t)0xce1041d9, + (q31_t)0x67fdb2a7, (q31_t)0xce0866b8, (q31_t)0x67f3e241, (q31_t)0xce008d84, + (q31_t)0x67ea1052, (q31_t)0xcdf8b63d, (q31_t)0x67e03cd8, (q31_t)0xcdf0e0e4, + (q31_t)0x67d667d5, (q31_t)0xcde90d79, (q31_t)0x67cc9149, (q31_t)0xcde13bfd, + (q31_t)0x67c2b934, (q31_t)0xcdd96c6f, (q31_t)0x67b8df97, (q31_t)0xcdd19ed0, + (q31_t)0x67af0472, (q31_t)0xcdc9d320, (q31_t)0x67a527c4, (q31_t)0xcdc20960, + (q31_t)0x679b4990, (q31_t)0xcdba4190, (q31_t)0x679169d5, (q31_t)0xcdb27bb0, + (q31_t)0x67878893, (q31_t)0xcdaab7c0, (q31_t)0x677da5cb, (q31_t)0xcda2f5c2, + (q31_t)0x6773c17d, (q31_t)0xcd9b35b4, (q31_t)0x6769dbaa, (q31_t)0xcd937798, + (q31_t)0x675ff452, (q31_t)0xcd8bbb6d, (q31_t)0x67560b76, (q31_t)0xcd840134, + (q31_t)0x674c2115, (q31_t)0xcd7c48ee, (q31_t)0x67423530, (q31_t)0xcd74929a, + (q31_t)0x673847c8, (q31_t)0xcd6cde39, (q31_t)0x672e58dc, (q31_t)0xcd652bcb, + (q31_t)0x6724686e, (q31_t)0xcd5d7b50, (q31_t)0x671a767e, (q31_t)0xcd55ccca, + (q31_t)0x6710830c, (q31_t)0xcd4e2037, (q31_t)0x67068e18, (q31_t)0xcd467599, + (q31_t)0x66fc97a3, (q31_t)0xcd3eccef, (q31_t)0x66f29fad, (q31_t)0xcd37263a, + (q31_t)0x66e8a637, (q31_t)0xcd2f817b, (q31_t)0x66deab41, (q31_t)0xcd27deb0, + (q31_t)0x66d4aecb, (q31_t)0xcd203ddc, (q31_t)0x66cab0d6, (q31_t)0xcd189efe, + (q31_t)0x66c0b162, (q31_t)0xcd110216, (q31_t)0x66b6b070, (q31_t)0xcd096725, + (q31_t)0x66acadff, (q31_t)0xcd01ce2b, (q31_t)0x66a2aa11, (q31_t)0xccfa3729, + (q31_t)0x6698a4a6, (q31_t)0xccf2a21d, (q31_t)0x668e9dbd, (q31_t)0xcceb0f0a, + (q31_t)0x66849558, (q31_t)0xcce37def, (q31_t)0x667a8b77, (q31_t)0xccdbeecc, + (q31_t)0x6670801a, (q31_t)0xccd461a2, (q31_t)0x66667342, (q31_t)0xccccd671, + (q31_t)0x665c64ef, (q31_t)0xccc54d3a, (q31_t)0x66525521, (q31_t)0xccbdc5fc, + (q31_t)0x664843d9, (q31_t)0xccb640b8, (q31_t)0x663e3117, (q31_t)0xccaebd6e, + (q31_t)0x66341cdb, (q31_t)0xcca73c1e, (q31_t)0x662a0727, (q31_t)0xcc9fbcca, + (q31_t)0x661feffa, (q31_t)0xcc983f70, (q31_t)0x6615d754, (q31_t)0xcc90c412, + (q31_t)0x660bbd37, (q31_t)0xcc894aaf, (q31_t)0x6601a1a2, (q31_t)0xcc81d349, + (q31_t)0x65f78497, (q31_t)0xcc7a5dde, (q31_t)0x65ed6614, (q31_t)0xcc72ea70, + (q31_t)0x65e3461b, (q31_t)0xcc6b78ff, (q31_t)0x65d924ac, (q31_t)0xcc64098b, + (q31_t)0x65cf01c8, (q31_t)0xcc5c9c14, (q31_t)0x65c4dd6e, (q31_t)0xcc55309b, + (q31_t)0x65bab7a0, (q31_t)0xcc4dc720, (q31_t)0x65b0905d, (q31_t)0xcc465fa3, + (q31_t)0x65a667a7, (q31_t)0xcc3efa25, (q31_t)0x659c3d7c, (q31_t)0xcc3796a5, + (q31_t)0x659211df, (q31_t)0xcc303524, (q31_t)0x6587e4cf, (q31_t)0xcc28d5a3, + (q31_t)0x657db64c, (q31_t)0xcc217822, (q31_t)0x65738657, (q31_t)0xcc1a1ca0, + (q31_t)0x656954f1, (q31_t)0xcc12c31f, (q31_t)0x655f2219, (q31_t)0xcc0b6b9e, + (q31_t)0x6554edd1, (q31_t)0xcc04161e, (q31_t)0x654ab818, (q31_t)0xcbfcc29f, + (q31_t)0x654080ef, (q31_t)0xcbf57121, (q31_t)0x65364857, (q31_t)0xcbee21a5, + (q31_t)0x652c0e4f, (q31_t)0xcbe6d42b, (q31_t)0x6521d2d8, (q31_t)0xcbdf88b3, + (q31_t)0x651795f3, (q31_t)0xcbd83f3d, (q31_t)0x650d57a0, (q31_t)0xcbd0f7ca, + (q31_t)0x650317df, (q31_t)0xcbc9b25a, (q31_t)0x64f8d6b0, (q31_t)0xcbc26eee, + (q31_t)0x64ee9415, (q31_t)0xcbbb2d85, (q31_t)0x64e4500e, (q31_t)0xcbb3ee20, + (q31_t)0x64da0a9a, (q31_t)0xcbacb0bf, (q31_t)0x64cfc3ba, (q31_t)0xcba57563, + (q31_t)0x64c57b6f, (q31_t)0xcb9e3c0b, (q31_t)0x64bb31ba, (q31_t)0xcb9704b9, + (q31_t)0x64b0e699, (q31_t)0xcb8fcf6b, (q31_t)0x64a69a0f, (q31_t)0xcb889c23, + (q31_t)0x649c4c1b, (q31_t)0xcb816ae1, (q31_t)0x6491fcbe, (q31_t)0xcb7a3ba5, + (q31_t)0x6487abf7, (q31_t)0xcb730e70, (q31_t)0x647d59c8, (q31_t)0xcb6be341, + (q31_t)0x64730631, (q31_t)0xcb64ba19, (q31_t)0x6468b132, (q31_t)0xcb5d92f8, + (q31_t)0x645e5acc, (q31_t)0xcb566ddf, (q31_t)0x645402ff, (q31_t)0xcb4f4acd, + (q31_t)0x6449a9cc, (q31_t)0xcb4829c4, (q31_t)0x643f4f32, (q31_t)0xcb410ac3, + (q31_t)0x6434f332, (q31_t)0xcb39edca, (q31_t)0x642a95ce, (q31_t)0xcb32d2da, + (q31_t)0x64203704, (q31_t)0xcb2bb9f4, (q31_t)0x6415d6d5, (q31_t)0xcb24a316, + (q31_t)0x640b7543, (q31_t)0xcb1d8e43, (q31_t)0x6401124d, (q31_t)0xcb167b79, + (q31_t)0x63f6adf3, (q31_t)0xcb0f6aba, (q31_t)0x63ec4837, (q31_t)0xcb085c05, + (q31_t)0x63e1e117, (q31_t)0xcb014f5b, (q31_t)0x63d77896, (q31_t)0xcafa44bc, + (q31_t)0x63cd0eb3, (q31_t)0xcaf33c28, (q31_t)0x63c2a36f, (q31_t)0xcaec35a0, + (q31_t)0x63b836ca, (q31_t)0xcae53123, (q31_t)0x63adc8c4, (q31_t)0xcade2eb3, + (q31_t)0x63a3595e, (q31_t)0xcad72e4f, (q31_t)0x6398e898, (q31_t)0xcad02ff8, + (q31_t)0x638e7673, (q31_t)0xcac933ae, (q31_t)0x638402ef, (q31_t)0xcac23971, + (q31_t)0x63798e0d, (q31_t)0xcabb4141, (q31_t)0x636f17cc, (q31_t)0xcab44b1f, + (q31_t)0x6364a02e, (q31_t)0xcaad570c, (q31_t)0x635a2733, (q31_t)0xcaa66506, + (q31_t)0x634facda, (q31_t)0xca9f750f, (q31_t)0x63453125, (q31_t)0xca988727, + (q31_t)0x633ab414, (q31_t)0xca919b4e, (q31_t)0x633035a7, (q31_t)0xca8ab184, + (q31_t)0x6325b5df, (q31_t)0xca83c9ca, (q31_t)0x631b34bc, (q31_t)0xca7ce420, + (q31_t)0x6310b23e, (q31_t)0xca760086, (q31_t)0x63062e67, (q31_t)0xca6f1efc, + (q31_t)0x62fba936, (q31_t)0xca683f83, (q31_t)0x62f122ab, (q31_t)0xca61621b, + (q31_t)0x62e69ac8, (q31_t)0xca5a86c4, (q31_t)0x62dc118c, (q31_t)0xca53ad7e, + (q31_t)0x62d186f8, (q31_t)0xca4cd64b, (q31_t)0x62c6fb0c, (q31_t)0xca460129, + (q31_t)0x62bc6dca, (q31_t)0xca3f2e19, (q31_t)0x62b1df30, (q31_t)0xca385d1d, + (q31_t)0x62a74f40, (q31_t)0xca318e32, (q31_t)0x629cbdfa, (q31_t)0xca2ac15b, + (q31_t)0x62922b5e, (q31_t)0xca23f698, (q31_t)0x6287976e, (q31_t)0xca1d2de7, + (q31_t)0x627d0228, (q31_t)0xca16674b, (q31_t)0x62726b8e, (q31_t)0xca0fa2c3, + (q31_t)0x6267d3a0, (q31_t)0xca08e04f, (q31_t)0x625d3a5e, (q31_t)0xca021fef, + (q31_t)0x62529fca, (q31_t)0xc9fb61a5, (q31_t)0x624803e2, (q31_t)0xc9f4a570, + (q31_t)0x623d66a8, (q31_t)0xc9edeb50, (q31_t)0x6232c81c, (q31_t)0xc9e73346, + (q31_t)0x6228283f, (q31_t)0xc9e07d51, (q31_t)0x621d8711, (q31_t)0xc9d9c973, + (q31_t)0x6212e492, (q31_t)0xc9d317ab, (q31_t)0x620840c2, (q31_t)0xc9cc67fa, + (q31_t)0x61fd9ba3, (q31_t)0xc9c5ba60, (q31_t)0x61f2f534, (q31_t)0xc9bf0edd, + (q31_t)0x61e84d76, (q31_t)0xc9b86572, (q31_t)0x61dda46a, (q31_t)0xc9b1be1e, + (q31_t)0x61d2fa0f, (q31_t)0xc9ab18e3, (q31_t)0x61c84e67, (q31_t)0xc9a475bf, + (q31_t)0x61bda171, (q31_t)0xc99dd4b4, (q31_t)0x61b2f32e, (q31_t)0xc99735c2, + (q31_t)0x61a8439e, (q31_t)0xc99098e9, (q31_t)0x619d92c2, (q31_t)0xc989fe29, + (q31_t)0x6192e09b, (q31_t)0xc9836582, (q31_t)0x61882d28, (q31_t)0xc97ccef5, + (q31_t)0x617d786a, (q31_t)0xc9763a83, (q31_t)0x6172c262, (q31_t)0xc96fa82a, + (q31_t)0x61680b0f, (q31_t)0xc96917ec, (q31_t)0x615d5273, (q31_t)0xc96289c9, + (q31_t)0x6152988d, (q31_t)0xc95bfdc1, (q31_t)0x6147dd5f, (q31_t)0xc95573d4, + (q31_t)0x613d20e8, (q31_t)0xc94eec03, (q31_t)0x61326329, (q31_t)0xc948664d, + (q31_t)0x6127a423, (q31_t)0xc941e2b4, (q31_t)0x611ce3d5, (q31_t)0xc93b6137, + (q31_t)0x61122240, (q31_t)0xc934e1d6, (q31_t)0x61075f65, (q31_t)0xc92e6492, + (q31_t)0x60fc9b44, (q31_t)0xc927e96b, (q31_t)0x60f1d5de, (q31_t)0xc9217062, + (q31_t)0x60e70f32, (q31_t)0xc91af976, (q31_t)0x60dc4742, (q31_t)0xc91484a8, + (q31_t)0x60d17e0d, (q31_t)0xc90e11f7, (q31_t)0x60c6b395, (q31_t)0xc907a166, + (q31_t)0x60bbe7d8, (q31_t)0xc90132f2, (q31_t)0x60b11ad9, (q31_t)0xc8fac69e, + (q31_t)0x60a64c97, (q31_t)0xc8f45c68, (q31_t)0x609b7d13, (q31_t)0xc8edf452, + (q31_t)0x6090ac4d, (q31_t)0xc8e78e5b, (q31_t)0x6085da46, (q31_t)0xc8e12a84, + (q31_t)0x607b06fe, (q31_t)0xc8dac8cd, (q31_t)0x60703275, (q31_t)0xc8d46936, + (q31_t)0x60655cac, (q31_t)0xc8ce0bc0, (q31_t)0x605a85a3, (q31_t)0xc8c7b06b, + (q31_t)0x604fad5b, (q31_t)0xc8c15736, (q31_t)0x6044d3d4, (q31_t)0xc8bb0023, + (q31_t)0x6039f90f, (q31_t)0xc8b4ab32, (q31_t)0x602f1d0b, (q31_t)0xc8ae5862, + (q31_t)0x60243fca, (q31_t)0xc8a807b4, (q31_t)0x6019614c, (q31_t)0xc8a1b928, + (q31_t)0x600e8190, (q31_t)0xc89b6cbf, (q31_t)0x6003a099, (q31_t)0xc8952278, + (q31_t)0x5ff8be65, (q31_t)0xc88eda54, (q31_t)0x5feddaf6, (q31_t)0xc8889454, + (q31_t)0x5fe2f64c, (q31_t)0xc8825077, (q31_t)0x5fd81067, (q31_t)0xc87c0ebd, + (q31_t)0x5fcd2948, (q31_t)0xc875cf28, (q31_t)0x5fc240ef, (q31_t)0xc86f91b7, + (q31_t)0x5fb7575c, (q31_t)0xc869566a, (q31_t)0x5fac6c91, (q31_t)0xc8631d42, + (q31_t)0x5fa1808c, (q31_t)0xc85ce63e, (q31_t)0x5f969350, (q31_t)0xc856b160, + (q31_t)0x5f8ba4dc, (q31_t)0xc8507ea7, (q31_t)0x5f80b531, (q31_t)0xc84a4e14, + (q31_t)0x5f75c44e, (q31_t)0xc8441fa6, (q31_t)0x5f6ad235, (q31_t)0xc83df35f, + (q31_t)0x5f5fdee6, (q31_t)0xc837c93e, (q31_t)0x5f54ea62, (q31_t)0xc831a143, + (q31_t)0x5f49f4a8, (q31_t)0xc82b7b70, (q31_t)0x5f3efdb9, (q31_t)0xc82557c3, + (q31_t)0x5f340596, (q31_t)0xc81f363d, (q31_t)0x5f290c3f, (q31_t)0xc81916df, + (q31_t)0x5f1e11b5, (q31_t)0xc812f9a9, (q31_t)0x5f1315f7, (q31_t)0xc80cde9b, + (q31_t)0x5f081907, (q31_t)0xc806c5b5, (q31_t)0x5efd1ae4, (q31_t)0xc800aef7, + (q31_t)0x5ef21b90, (q31_t)0xc7fa9a62, (q31_t)0x5ee71b0a, (q31_t)0xc7f487f6, + (q31_t)0x5edc1953, (q31_t)0xc7ee77b3, (q31_t)0x5ed1166b, (q31_t)0xc7e8699a, + (q31_t)0x5ec61254, (q31_t)0xc7e25daa, (q31_t)0x5ebb0d0d, (q31_t)0xc7dc53e3, + (q31_t)0x5eb00696, (q31_t)0xc7d64c47, (q31_t)0x5ea4fef0, (q31_t)0xc7d046d6, + (q31_t)0x5e99f61d, (q31_t)0xc7ca438f, (q31_t)0x5e8eec1b, (q31_t)0xc7c44272, + (q31_t)0x5e83e0eb, (q31_t)0xc7be4381, (q31_t)0x5e78d48e, (q31_t)0xc7b846ba, + (q31_t)0x5e6dc705, (q31_t)0xc7b24c20, (q31_t)0x5e62b84f, (q31_t)0xc7ac53b1, + (q31_t)0x5e57a86d, (q31_t)0xc7a65d6e, (q31_t)0x5e4c9760, (q31_t)0xc7a06957, + (q31_t)0x5e418528, (q31_t)0xc79a776c, (q31_t)0x5e3671c5, (q31_t)0xc79487ae, + (q31_t)0x5e2b5d38, (q31_t)0xc78e9a1d, (q31_t)0x5e204781, (q31_t)0xc788aeb9, + (q31_t)0x5e1530a1, (q31_t)0xc782c582, (q31_t)0x5e0a1898, (q31_t)0xc77cde79, + (q31_t)0x5dfeff67, (q31_t)0xc776f99d, (q31_t)0x5df3e50d, (q31_t)0xc77116f0, + (q31_t)0x5de8c98c, (q31_t)0xc76b3671, (q31_t)0x5dddace4, (q31_t)0xc7655820, + (q31_t)0x5dd28f15, (q31_t)0xc75f7bfe, (q31_t)0x5dc7701f, (q31_t)0xc759a20a, + (q31_t)0x5dbc5004, (q31_t)0xc753ca46, (q31_t)0x5db12ec3, (q31_t)0xc74df4b1, + (q31_t)0x5da60c5d, (q31_t)0xc748214c, (q31_t)0x5d9ae8d2, (q31_t)0xc7425016, + (q31_t)0x5d8fc424, (q31_t)0xc73c8111, (q31_t)0x5d849e51, (q31_t)0xc736b43c, + (q31_t)0x5d79775c, (q31_t)0xc730e997, (q31_t)0x5d6e4f43, (q31_t)0xc72b2123, + (q31_t)0x5d632608, (q31_t)0xc7255ae0, (q31_t)0x5d57fbaa, (q31_t)0xc71f96ce, + (q31_t)0x5d4cd02c, (q31_t)0xc719d4ed, (q31_t)0x5d41a38c, (q31_t)0xc714153e, + (q31_t)0x5d3675cb, (q31_t)0xc70e57c0, (q31_t)0x5d2b46ea, (q31_t)0xc7089c75, + (q31_t)0x5d2016e9, (q31_t)0xc702e35c, (q31_t)0x5d14e5c9, (q31_t)0xc6fd2c75, + (q31_t)0x5d09b389, (q31_t)0xc6f777c1, (q31_t)0x5cfe802b, (q31_t)0xc6f1c540, + (q31_t)0x5cf34baf, (q31_t)0xc6ec14f2, (q31_t)0x5ce81615, (q31_t)0xc6e666d7, + (q31_t)0x5cdcdf5e, (q31_t)0xc6e0baf0, (q31_t)0x5cd1a78a, (q31_t)0xc6db113d, + (q31_t)0x5cc66e99, (q31_t)0xc6d569be, (q31_t)0x5cbb348d, (q31_t)0xc6cfc472, + (q31_t)0x5caff965, (q31_t)0xc6ca215c, (q31_t)0x5ca4bd21, (q31_t)0xc6c4807a, + (q31_t)0x5c997fc4, (q31_t)0xc6bee1cd, (q31_t)0x5c8e414b, (q31_t)0xc6b94554, + (q31_t)0x5c8301b9, (q31_t)0xc6b3ab12, (q31_t)0x5c77c10e, (q31_t)0xc6ae1304, + (q31_t)0x5c6c7f4a, (q31_t)0xc6a87d2d, (q31_t)0x5c613c6d, (q31_t)0xc6a2e98b, + (q31_t)0x5c55f878, (q31_t)0xc69d5820, (q31_t)0x5c4ab36b, (q31_t)0xc697c8eb, + (q31_t)0x5c3f6d47, (q31_t)0xc6923bec, (q31_t)0x5c34260c, (q31_t)0xc68cb124, + (q31_t)0x5c28ddbb, (q31_t)0xc6872894, (q31_t)0x5c1d9454, (q31_t)0xc681a23a, + (q31_t)0x5c1249d8, (q31_t)0xc67c1e18, (q31_t)0x5c06fe46, (q31_t)0xc6769c2e, + (q31_t)0x5bfbb1a0, (q31_t)0xc6711c7b, (q31_t)0x5bf063e6, (q31_t)0xc66b9f01, + (q31_t)0x5be51518, (q31_t)0xc66623be, (q31_t)0x5bd9c537, (q31_t)0xc660aab5, + (q31_t)0x5bce7442, (q31_t)0xc65b33e4, (q31_t)0x5bc3223c, (q31_t)0xc655bf4c, + (q31_t)0x5bb7cf23, (q31_t)0xc6504ced, (q31_t)0x5bac7af9, (q31_t)0xc64adcc7, + (q31_t)0x5ba125bd, (q31_t)0xc6456edb, (q31_t)0x5b95cf71, (q31_t)0xc6400329, + (q31_t)0x5b8a7815, (q31_t)0xc63a99b1, (q31_t)0x5b7f1fa9, (q31_t)0xc6353273, + (q31_t)0x5b73c62d, (q31_t)0xc62fcd6f, (q31_t)0x5b686ba3, (q31_t)0xc62a6aa6, + (q31_t)0x5b5d100a, (q31_t)0xc6250a18, (q31_t)0x5b51b363, (q31_t)0xc61fabc4, + (q31_t)0x5b4655ae, (q31_t)0xc61a4fac, (q31_t)0x5b3af6ec, (q31_t)0xc614f5cf, + (q31_t)0x5b2f971e, (q31_t)0xc60f9e2e, (q31_t)0x5b243643, (q31_t)0xc60a48c9, + (q31_t)0x5b18d45c, (q31_t)0xc604f5a0, (q31_t)0x5b0d716a, (q31_t)0xc5ffa4b3, + (q31_t)0x5b020d6c, (q31_t)0xc5fa5603, (q31_t)0x5af6a865, (q31_t)0xc5f5098f, + (q31_t)0x5aeb4253, (q31_t)0xc5efbf58, (q31_t)0x5adfdb37, (q31_t)0xc5ea775e, + (q31_t)0x5ad47312, (q31_t)0xc5e531a1, (q31_t)0x5ac909e5, (q31_t)0xc5dfee22, + (q31_t)0x5abd9faf, (q31_t)0xc5daace1, (q31_t)0x5ab23471, (q31_t)0xc5d56ddd, + (q31_t)0x5aa6c82b, (q31_t)0xc5d03118, (q31_t)0x5a9b5adf, (q31_t)0xc5caf690, + (q31_t)0x5a8fec8c, (q31_t)0xc5c5be47, (q31_t)0x5a847d33, (q31_t)0xc5c0883d, + (q31_t)0x5a790cd4, (q31_t)0xc5bb5472, (q31_t)0x5a6d9b70, (q31_t)0xc5b622e6, + (q31_t)0x5a622907, (q31_t)0xc5b0f399, (q31_t)0x5a56b599, (q31_t)0xc5abc68c, + (q31_t)0x5a4b4128, (q31_t)0xc5a69bbe, (q31_t)0x5a3fcbb3, (q31_t)0xc5a17330, + (q31_t)0x5a34553b, (q31_t)0xc59c4ce3, (q31_t)0x5a28ddc0, (q31_t)0xc59728d5, + (q31_t)0x5a1d6544, (q31_t)0xc5920708, (q31_t)0x5a11ebc5, (q31_t)0xc58ce77c, + (q31_t)0x5a067145, (q31_t)0xc587ca31, (q31_t)0x59faf5c5, (q31_t)0xc582af26, + (q31_t)0x59ef7944, (q31_t)0xc57d965d, (q31_t)0x59e3fbc3, (q31_t)0xc5787fd6, + (q31_t)0x59d87d42, (q31_t)0xc5736b90, (q31_t)0x59ccfdc2, (q31_t)0xc56e598c, + (q31_t)0x59c17d44, (q31_t)0xc56949ca, (q31_t)0x59b5fbc8, (q31_t)0xc5643c4a, + (q31_t)0x59aa794d, (q31_t)0xc55f310d, (q31_t)0x599ef5d6, (q31_t)0xc55a2812, + (q31_t)0x59937161, (q31_t)0xc555215a, (q31_t)0x5987ebf0, (q31_t)0xc5501ce5, + (q31_t)0x597c6584, (q31_t)0xc54b1ab4, (q31_t)0x5970de1b, (q31_t)0xc5461ac6, + (q31_t)0x596555b8, (q31_t)0xc5411d1b, (q31_t)0x5959cc5a, (q31_t)0xc53c21b4, + (q31_t)0x594e4201, (q31_t)0xc5372891, (q31_t)0x5942b6af, (q31_t)0xc53231b3, + (q31_t)0x59372a64, (q31_t)0xc52d3d18, (q31_t)0x592b9d1f, (q31_t)0xc5284ac3, + (q31_t)0x59200ee3, (q31_t)0xc5235ab2, (q31_t)0x59147fae, (q31_t)0xc51e6ce6, + (q31_t)0x5908ef82, (q31_t)0xc519815f, (q31_t)0x58fd5e5f, (q31_t)0xc514981d, + (q31_t)0x58f1cc45, (q31_t)0xc50fb121, (q31_t)0x58e63935, (q31_t)0xc50acc6b, + (q31_t)0x58daa52f, (q31_t)0xc505e9fb, (q31_t)0x58cf1034, (q31_t)0xc50109d0, + (q31_t)0x58c37a44, (q31_t)0xc4fc2bec, (q31_t)0x58b7e35f, (q31_t)0xc4f7504e, + (q31_t)0x58ac4b87, (q31_t)0xc4f276f7, (q31_t)0x58a0b2bb, (q31_t)0xc4ed9fe7, + (q31_t)0x589518fc, (q31_t)0xc4e8cb1e, (q31_t)0x58897e4a, (q31_t)0xc4e3f89c, + (q31_t)0x587de2a7, (q31_t)0xc4df2862, (q31_t)0x58724611, (q31_t)0xc4da5a6f, + (q31_t)0x5866a88a, (q31_t)0xc4d58ec3, (q31_t)0x585b0a13, (q31_t)0xc4d0c560, + (q31_t)0x584f6aab, (q31_t)0xc4cbfe45, (q31_t)0x5843ca53, (q31_t)0xc4c73972, + (q31_t)0x5838290c, (q31_t)0xc4c276e8, (q31_t)0x582c86d5, (q31_t)0xc4bdb6a6, + (q31_t)0x5820e3b0, (q31_t)0xc4b8f8ad, (q31_t)0x58153f9d, (q31_t)0xc4b43cfd, + (q31_t)0x58099a9c, (q31_t)0xc4af8397, (q31_t)0x57fdf4ae, (q31_t)0xc4aacc7a, + (q31_t)0x57f24dd3, (q31_t)0xc4a617a6, (q31_t)0x57e6a60c, (q31_t)0xc4a1651c, + (q31_t)0x57dafd59, (q31_t)0xc49cb4dd, (q31_t)0x57cf53bb, (q31_t)0xc49806e7, + (q31_t)0x57c3a931, (q31_t)0xc4935b3c, (q31_t)0x57b7fdbd, (q31_t)0xc48eb1db, + (q31_t)0x57ac515f, (q31_t)0xc48a0ac4, (q31_t)0x57a0a417, (q31_t)0xc48565f9, + (q31_t)0x5794f5e6, (q31_t)0xc480c379, (q31_t)0x578946cc, (q31_t)0xc47c2344, + (q31_t)0x577d96ca, (q31_t)0xc477855a, (q31_t)0x5771e5e0, (q31_t)0xc472e9bc, + (q31_t)0x5766340f, (q31_t)0xc46e5069, (q31_t)0x575a8157, (q31_t)0xc469b963, + (q31_t)0x574ecdb8, (q31_t)0xc46524a9, (q31_t)0x57431933, (q31_t)0xc460923b, + (q31_t)0x573763c9, (q31_t)0xc45c0219, (q31_t)0x572bad7a, (q31_t)0xc4577444, + (q31_t)0x571ff646, (q31_t)0xc452e8bc, (q31_t)0x57143e2d, (q31_t)0xc44e5f80, + (q31_t)0x57088531, (q31_t)0xc449d892, (q31_t)0x56fccb51, (q31_t)0xc44553f2, + (q31_t)0x56f1108f, (q31_t)0xc440d19e, (q31_t)0x56e554ea, (q31_t)0xc43c5199, + (q31_t)0x56d99864, (q31_t)0xc437d3e1, (q31_t)0x56cddafb, (q31_t)0xc4335877, + (q31_t)0x56c21cb2, (q31_t)0xc42edf5c, (q31_t)0x56b65d88, (q31_t)0xc42a688f, + (q31_t)0x56aa9d7e, (q31_t)0xc425f410, (q31_t)0x569edc94, (q31_t)0xc42181e0, + (q31_t)0x56931acb, (q31_t)0xc41d11ff, (q31_t)0x56875823, (q31_t)0xc418a46d, + (q31_t)0x567b949d, (q31_t)0xc414392b, (q31_t)0x566fd039, (q31_t)0xc40fd037, + (q31_t)0x56640af7, (q31_t)0xc40b6994, (q31_t)0x565844d8, (q31_t)0xc4070540, + (q31_t)0x564c7ddd, (q31_t)0xc402a33c, (q31_t)0x5640b606, (q31_t)0xc3fe4388, + (q31_t)0x5634ed53, (q31_t)0xc3f9e624, (q31_t)0x562923c5, (q31_t)0xc3f58b10, + (q31_t)0x561d595d, (q31_t)0xc3f1324e, (q31_t)0x56118e1a, (q31_t)0xc3ecdbdc, + (q31_t)0x5605c1fd, (q31_t)0xc3e887bb, (q31_t)0x55f9f507, (q31_t)0xc3e435ea, + (q31_t)0x55ee2738, (q31_t)0xc3dfe66c, (q31_t)0x55e25890, (q31_t)0xc3db993e, + (q31_t)0x55d68911, (q31_t)0xc3d74e62, (q31_t)0x55cab8ba, (q31_t)0xc3d305d8, + (q31_t)0x55bee78c, (q31_t)0xc3cebfa0, (q31_t)0x55b31587, (q31_t)0xc3ca7bba, + (q31_t)0x55a742ac, (q31_t)0xc3c63a26, (q31_t)0x559b6efb, (q31_t)0xc3c1fae5, + (q31_t)0x558f9a76, (q31_t)0xc3bdbdf6, (q31_t)0x5583c51b, (q31_t)0xc3b9835a, + (q31_t)0x5577eeec, (q31_t)0xc3b54b11, (q31_t)0x556c17e9, (q31_t)0xc3b1151b, + (q31_t)0x55604013, (q31_t)0xc3ace178, (q31_t)0x5554676a, (q31_t)0xc3a8b028, + (q31_t)0x55488dee, (q31_t)0xc3a4812c, (q31_t)0x553cb3a0, (q31_t)0xc3a05484, + (q31_t)0x5530d881, (q31_t)0xc39c2a2f, (q31_t)0x5524fc90, (q31_t)0xc398022f, + (q31_t)0x55191fcf, (q31_t)0xc393dc82, (q31_t)0x550d423d, (q31_t)0xc38fb92a, + (q31_t)0x550163dc, (q31_t)0xc38b9827, (q31_t)0x54f584ac, (q31_t)0xc3877978, + (q31_t)0x54e9a4ac, (q31_t)0xc3835d1e, (q31_t)0x54ddc3de, (q31_t)0xc37f4319, + (q31_t)0x54d1e242, (q31_t)0xc37b2b6a, (q31_t)0x54c5ffd9, (q31_t)0xc377160f, + (q31_t)0x54ba1ca3, (q31_t)0xc373030a, (q31_t)0x54ae38a0, (q31_t)0xc36ef25b, + (q31_t)0x54a253d1, (q31_t)0xc36ae401, (q31_t)0x54966e36, (q31_t)0xc366d7fd, + (q31_t)0x548a87d1, (q31_t)0xc362ce50, (q31_t)0x547ea0a0, (q31_t)0xc35ec6f8, + (q31_t)0x5472b8a5, (q31_t)0xc35ac1f7, (q31_t)0x5466cfe1, (q31_t)0xc356bf4d, + (q31_t)0x545ae653, (q31_t)0xc352bef9, (q31_t)0x544efbfc, (q31_t)0xc34ec0fc, + (q31_t)0x544310dd, (q31_t)0xc34ac556, (q31_t)0x543724f5, (q31_t)0xc346cc07, + (q31_t)0x542b3846, (q31_t)0xc342d510, (q31_t)0x541f4ad1, (q31_t)0xc33ee070, + (q31_t)0x54135c94, (q31_t)0xc33aee27, (q31_t)0x54076d91, (q31_t)0xc336fe37, + (q31_t)0x53fb7dc9, (q31_t)0xc333109e, (q31_t)0x53ef8d3c, (q31_t)0xc32f255e, + (q31_t)0x53e39be9, (q31_t)0xc32b3c75, (q31_t)0x53d7a9d3, (q31_t)0xc32755e5, + (q31_t)0x53cbb6f8, (q31_t)0xc32371ae, (q31_t)0x53bfc35b, (q31_t)0xc31f8fcf, + (q31_t)0x53b3cefa, (q31_t)0xc31bb049, (q31_t)0x53a7d9d7, (q31_t)0xc317d31c, + (q31_t)0x539be3f2, (q31_t)0xc313f848, (q31_t)0x538fed4b, (q31_t)0xc3101fce, + (q31_t)0x5383f5e3, (q31_t)0xc30c49ad, (q31_t)0x5377fdbb, (q31_t)0xc30875e5, + (q31_t)0x536c04d2, (q31_t)0xc304a477, (q31_t)0x53600b2a, (q31_t)0xc300d563, + (q31_t)0x535410c3, (q31_t)0xc2fd08a9, (q31_t)0x5348159d, (q31_t)0xc2f93e4a, + (q31_t)0x533c19b8, (q31_t)0xc2f57644, (q31_t)0x53301d16, (q31_t)0xc2f1b099, + (q31_t)0x53241fb6, (q31_t)0xc2eded49, (q31_t)0x5318219a, (q31_t)0xc2ea2c53, + (q31_t)0x530c22c1, (q31_t)0xc2e66db8, (q31_t)0x5300232c, (q31_t)0xc2e2b178, + (q31_t)0x52f422db, (q31_t)0xc2def794, (q31_t)0x52e821cf, (q31_t)0xc2db400a, + (q31_t)0x52dc2009, (q31_t)0xc2d78add, (q31_t)0x52d01d89, (q31_t)0xc2d3d80a, + (q31_t)0x52c41a4f, (q31_t)0xc2d02794, (q31_t)0x52b8165b, (q31_t)0xc2cc7979, + (q31_t)0x52ac11af, (q31_t)0xc2c8cdbb, (q31_t)0x52a00c4b, (q31_t)0xc2c52459, + (q31_t)0x5294062f, (q31_t)0xc2c17d52, (q31_t)0x5287ff5b, (q31_t)0xc2bdd8a9, + (q31_t)0x527bf7d1, (q31_t)0xc2ba365c, (q31_t)0x526fef90, (q31_t)0xc2b6966c, + (q31_t)0x5263e699, (q31_t)0xc2b2f8d8, (q31_t)0x5257dced, (q31_t)0xc2af5da2, + (q31_t)0x524bd28c, (q31_t)0xc2abc4c9, (q31_t)0x523fc776, (q31_t)0xc2a82e4d, + (q31_t)0x5233bbac, (q31_t)0xc2a49a2e, (q31_t)0x5227af2e, (q31_t)0xc2a1086d, + (q31_t)0x521ba1fd, (q31_t)0xc29d790a, (q31_t)0x520f941a, (q31_t)0xc299ec05, + (q31_t)0x52038584, (q31_t)0xc296615d, (q31_t)0x51f7763c, (q31_t)0xc292d914, + (q31_t)0x51eb6643, (q31_t)0xc28f5329, (q31_t)0x51df5599, (q31_t)0xc28bcf9c, + (q31_t)0x51d3443f, (q31_t)0xc2884e6e, (q31_t)0x51c73235, (q31_t)0xc284cf9f, + (q31_t)0x51bb1f7c, (q31_t)0xc281532e, (q31_t)0x51af0c13, (q31_t)0xc27dd91c, + (q31_t)0x51a2f7fc, (q31_t)0xc27a616a, (q31_t)0x5196e337, (q31_t)0xc276ec16, + (q31_t)0x518acdc4, (q31_t)0xc2737922, (q31_t)0x517eb7a4, (q31_t)0xc270088e, + (q31_t)0x5172a0d7, (q31_t)0xc26c9a58, (q31_t)0x5166895f, (q31_t)0xc2692e83, + (q31_t)0x515a713a, (q31_t)0xc265c50e, (q31_t)0x514e586a, (q31_t)0xc2625df8, + (q31_t)0x51423ef0, (q31_t)0xc25ef943, (q31_t)0x513624cb, (q31_t)0xc25b96ee, + (q31_t)0x512a09fc, (q31_t)0xc25836f9, (q31_t)0x511dee84, (q31_t)0xc254d965, + (q31_t)0x5111d263, (q31_t)0xc2517e31, (q31_t)0x5105b599, (q31_t)0xc24e255e, + (q31_t)0x50f99827, (q31_t)0xc24aceed, (q31_t)0x50ed7a0e, (q31_t)0xc2477adc, + (q31_t)0x50e15b4e, (q31_t)0xc244292c, (q31_t)0x50d53be7, (q31_t)0xc240d9de, + (q31_t)0x50c91bda, (q31_t)0xc23d8cf1, (q31_t)0x50bcfb28, (q31_t)0xc23a4265, + (q31_t)0x50b0d9d0, (q31_t)0xc236fa3b, (q31_t)0x50a4b7d3, (q31_t)0xc233b473, + (q31_t)0x50989532, (q31_t)0xc230710d, (q31_t)0x508c71ee, (q31_t)0xc22d3009, + (q31_t)0x50804e06, (q31_t)0xc229f167, (q31_t)0x5074297b, (q31_t)0xc226b528, + (q31_t)0x5068044e, (q31_t)0xc2237b4b, (q31_t)0x505bde7f, (q31_t)0xc22043d0, + (q31_t)0x504fb80e, (q31_t)0xc21d0eb8, (q31_t)0x504390fd, (q31_t)0xc219dc03, + (q31_t)0x5037694b, (q31_t)0xc216abb1, (q31_t)0x502b40f8, (q31_t)0xc2137dc2, + (q31_t)0x501f1807, (q31_t)0xc2105236, (q31_t)0x5012ee76, (q31_t)0xc20d290d, + (q31_t)0x5006c446, (q31_t)0xc20a0248, (q31_t)0x4ffa9979, (q31_t)0xc206dde6, + (q31_t)0x4fee6e0d, (q31_t)0xc203bbe8, (q31_t)0x4fe24205, (q31_t)0xc2009c4e, + (q31_t)0x4fd6155f, (q31_t)0xc1fd7f17, (q31_t)0x4fc9e81e, (q31_t)0xc1fa6445, + (q31_t)0x4fbdba40, (q31_t)0xc1f74bd6, (q31_t)0x4fb18bc8, (q31_t)0xc1f435cc, + (q31_t)0x4fa55cb4, (q31_t)0xc1f12227, (q31_t)0x4f992d06, (q31_t)0xc1ee10e5, + (q31_t)0x4f8cfcbe, (q31_t)0xc1eb0209, (q31_t)0x4f80cbdc, (q31_t)0xc1e7f591, + (q31_t)0x4f749a61, (q31_t)0xc1e4eb7e, (q31_t)0x4f68684e, (q31_t)0xc1e1e3d0, + (q31_t)0x4f5c35a3, (q31_t)0xc1dede87, (q31_t)0x4f500260, (q31_t)0xc1dbdba3, + (q31_t)0x4f43ce86, (q31_t)0xc1d8db25, (q31_t)0x4f379a16, (q31_t)0xc1d5dd0c, + (q31_t)0x4f2b650f, (q31_t)0xc1d2e158, (q31_t)0x4f1f2f73, (q31_t)0xc1cfe80a, + (q31_t)0x4f12f941, (q31_t)0xc1ccf122, (q31_t)0x4f06c27a, (q31_t)0xc1c9fca0, + (q31_t)0x4efa8b20, (q31_t)0xc1c70a84, (q31_t)0x4eee5331, (q31_t)0xc1c41ace, + (q31_t)0x4ee21aaf, (q31_t)0xc1c12d7e, (q31_t)0x4ed5e19a, (q31_t)0xc1be4294, + (q31_t)0x4ec9a7f3, (q31_t)0xc1bb5a11, (q31_t)0x4ebd6db9, (q31_t)0xc1b873f5, + (q31_t)0x4eb132ef, (q31_t)0xc1b5903f, (q31_t)0x4ea4f793, (q31_t)0xc1b2aef0, + (q31_t)0x4e98bba7, (q31_t)0xc1afd007, (q31_t)0x4e8c7f2a, (q31_t)0xc1acf386, + (q31_t)0x4e80421e, (q31_t)0xc1aa196c, (q31_t)0x4e740483, (q31_t)0xc1a741b9, + (q31_t)0x4e67c65a, (q31_t)0xc1a46c6e, (q31_t)0x4e5b87a2, (q31_t)0xc1a1998a, + (q31_t)0x4e4f485c, (q31_t)0xc19ec90d, (q31_t)0x4e430889, (q31_t)0xc19bfaf9, + (q31_t)0x4e36c82a, (q31_t)0xc1992f4c, (q31_t)0x4e2a873e, (q31_t)0xc1966606, + (q31_t)0x4e1e45c6, (q31_t)0xc1939f29, (q31_t)0x4e1203c3, (q31_t)0xc190dab4, + (q31_t)0x4e05c135, (q31_t)0xc18e18a7, (q31_t)0x4df97e1d, (q31_t)0xc18b5903, + (q31_t)0x4ded3a7b, (q31_t)0xc1889bc6, (q31_t)0x4de0f64f, (q31_t)0xc185e0f3, + (q31_t)0x4dd4b19a, (q31_t)0xc1832888, (q31_t)0x4dc86c5d, (q31_t)0xc1807285, + (q31_t)0x4dbc2698, (q31_t)0xc17dbeec, (q31_t)0x4dafe04b, (q31_t)0xc17b0dbb, + (q31_t)0x4da39978, (q31_t)0xc1785ef4, (q31_t)0x4d97521d, (q31_t)0xc175b296, + (q31_t)0x4d8b0a3d, (q31_t)0xc17308a1, (q31_t)0x4d7ec1d6, (q31_t)0xc1706115, + (q31_t)0x4d7278eb, (q31_t)0xc16dbbf3, (q31_t)0x4d662f7b, (q31_t)0xc16b193a, + (q31_t)0x4d59e586, (q31_t)0xc16878eb, (q31_t)0x4d4d9b0e, (q31_t)0xc165db05, + (q31_t)0x4d415013, (q31_t)0xc1633f8a, (q31_t)0x4d350495, (q31_t)0xc160a678, + (q31_t)0x4d28b894, (q31_t)0xc15e0fd1, (q31_t)0x4d1c6c11, (q31_t)0xc15b7b94, + (q31_t)0x4d101f0e, (q31_t)0xc158e9c1, (q31_t)0x4d03d189, (q31_t)0xc1565a58, + (q31_t)0x4cf78383, (q31_t)0xc153cd5a, (q31_t)0x4ceb34fe, (q31_t)0xc15142c6, + (q31_t)0x4cdee5f9, (q31_t)0xc14eba9d, (q31_t)0x4cd29676, (q31_t)0xc14c34df, + (q31_t)0x4cc64673, (q31_t)0xc149b18b, (q31_t)0x4cb9f5f3, (q31_t)0xc14730a3, + (q31_t)0x4cada4f5, (q31_t)0xc144b225, (q31_t)0x4ca1537a, (q31_t)0xc1423613, + (q31_t)0x4c950182, (q31_t)0xc13fbc6c, (q31_t)0x4c88af0e, (q31_t)0xc13d4530, + (q31_t)0x4c7c5c1e, (q31_t)0xc13ad060, (q31_t)0x4c7008b3, (q31_t)0xc1385dfb, + (q31_t)0x4c63b4ce, (q31_t)0xc135ee02, (q31_t)0x4c57606e, (q31_t)0xc1338075, + (q31_t)0x4c4b0b94, (q31_t)0xc1311553, (q31_t)0x4c3eb641, (q31_t)0xc12eac9d, + (q31_t)0x4c326075, (q31_t)0xc12c4653, (q31_t)0x4c260a31, (q31_t)0xc129e276, + (q31_t)0x4c19b374, (q31_t)0xc1278104, (q31_t)0x4c0d5c41, (q31_t)0xc12521ff, + (q31_t)0x4c010496, (q31_t)0xc122c566, (q31_t)0x4bf4ac75, (q31_t)0xc1206b39, + (q31_t)0x4be853de, (q31_t)0xc11e1379, (q31_t)0x4bdbfad1, (q31_t)0xc11bbe26, + (q31_t)0x4bcfa150, (q31_t)0xc1196b3f, (q31_t)0x4bc34759, (q31_t)0xc1171ac6, + (q31_t)0x4bb6ecef, (q31_t)0xc114ccb9, (q31_t)0x4baa9211, (q31_t)0xc1128119, + (q31_t)0x4b9e36c0, (q31_t)0xc11037e6, (q31_t)0x4b91dafc, (q31_t)0xc10df120, + (q31_t)0x4b857ec7, (q31_t)0xc10bacc8, (q31_t)0x4b79221f, (q31_t)0xc1096add, + (q31_t)0x4b6cc506, (q31_t)0xc1072b5f, (q31_t)0x4b60677c, (q31_t)0xc104ee4f, + (q31_t)0x4b540982, (q31_t)0xc102b3ac, (q31_t)0x4b47ab19, (q31_t)0xc1007b77, + (q31_t)0x4b3b4c40, (q31_t)0xc0fe45b0, (q31_t)0x4b2eecf8, (q31_t)0xc0fc1257, + (q31_t)0x4b228d42, (q31_t)0xc0f9e16b, (q31_t)0x4b162d1d, (q31_t)0xc0f7b2ee, + (q31_t)0x4b09cc8c, (q31_t)0xc0f586df, (q31_t)0x4afd6b8d, (q31_t)0xc0f35d3e, + (q31_t)0x4af10a22, (q31_t)0xc0f1360b, (q31_t)0x4ae4a84b, (q31_t)0xc0ef1147, + (q31_t)0x4ad84609, (q31_t)0xc0eceef1, (q31_t)0x4acbe35b, (q31_t)0xc0eacf09, + (q31_t)0x4abf8043, (q31_t)0xc0e8b190, (q31_t)0x4ab31cc1, (q31_t)0xc0e69686, + (q31_t)0x4aa6b8d5, (q31_t)0xc0e47deb, (q31_t)0x4a9a5480, (q31_t)0xc0e267be, + (q31_t)0x4a8defc3, (q31_t)0xc0e05401, (q31_t)0x4a818a9d, (q31_t)0xc0de42b2, + (q31_t)0x4a752510, (q31_t)0xc0dc33d2, (q31_t)0x4a68bf1b, (q31_t)0xc0da2762, + (q31_t)0x4a5c58c0, (q31_t)0xc0d81d61, (q31_t)0x4a4ff1fe, (q31_t)0xc0d615cf, + (q31_t)0x4a438ad7, (q31_t)0xc0d410ad, (q31_t)0x4a37234a, (q31_t)0xc0d20dfa, + (q31_t)0x4a2abb59, (q31_t)0xc0d00db6, (q31_t)0x4a1e5303, (q31_t)0xc0ce0fe3, + (q31_t)0x4a11ea49, (q31_t)0xc0cc147f, (q31_t)0x4a05812c, (q31_t)0xc0ca1b8a, + (q31_t)0x49f917ac, (q31_t)0xc0c82506, (q31_t)0x49ecadc9, (q31_t)0xc0c630f2, + (q31_t)0x49e04385, (q31_t)0xc0c43f4d, (q31_t)0x49d3d8df, (q31_t)0xc0c25019, + (q31_t)0x49c76dd8, (q31_t)0xc0c06355, (q31_t)0x49bb0271, (q31_t)0xc0be7901, + (q31_t)0x49ae96aa, (q31_t)0xc0bc911d, (q31_t)0x49a22a83, (q31_t)0xc0baabaa, + (q31_t)0x4995bdfd, (q31_t)0xc0b8c8a7, (q31_t)0x49895118, (q31_t)0xc0b6e815, + (q31_t)0x497ce3d5, (q31_t)0xc0b509f3, (q31_t)0x49707635, (q31_t)0xc0b32e42, + (q31_t)0x49640837, (q31_t)0xc0b15502, (q31_t)0x495799dd, (q31_t)0xc0af7e33, + (q31_t)0x494b2b27, (q31_t)0xc0ada9d4, (q31_t)0x493ebc14, (q31_t)0xc0abd7e6, + (q31_t)0x49324ca7, (q31_t)0xc0aa086a, (q31_t)0x4925dcdf, (q31_t)0xc0a83b5e, + (q31_t)0x49196cbc, (q31_t)0xc0a670c4, (q31_t)0x490cfc40, (q31_t)0xc0a4a89b, + (q31_t)0x49008b6a, (q31_t)0xc0a2e2e3, (q31_t)0x48f41a3c, (q31_t)0xc0a11f9d, + (q31_t)0x48e7a8b5, (q31_t)0xc09f5ec8, (q31_t)0x48db36d6, (q31_t)0xc09da065, + (q31_t)0x48cec4a0, (q31_t)0xc09be473, (q31_t)0x48c25213, (q31_t)0xc09a2af3, + (q31_t)0x48b5df30, (q31_t)0xc09873e4, (q31_t)0x48a96bf6, (q31_t)0xc096bf48, + (q31_t)0x489cf867, (q31_t)0xc0950d1d, (q31_t)0x48908483, (q31_t)0xc0935d64, + (q31_t)0x4884104b, (q31_t)0xc091b01d, (q31_t)0x48779bbe, (q31_t)0xc0900548, + (q31_t)0x486b26de, (q31_t)0xc08e5ce5, (q31_t)0x485eb1ab, (q31_t)0xc08cb6f5, + (q31_t)0x48523c25, (q31_t)0xc08b1376, (q31_t)0x4845c64d, (q31_t)0xc089726a, + (q31_t)0x48395024, (q31_t)0xc087d3d0, (q31_t)0x482cd9a9, (q31_t)0xc08637a9, + (q31_t)0x482062de, (q31_t)0xc0849df4, (q31_t)0x4813ebc2, (q31_t)0xc08306b2, + (q31_t)0x48077457, (q31_t)0xc08171e2, (q31_t)0x47fafc9c, (q31_t)0xc07fdf85, + (q31_t)0x47ee8493, (q31_t)0xc07e4f9b, (q31_t)0x47e20c3b, (q31_t)0xc07cc223, + (q31_t)0x47d59396, (q31_t)0xc07b371e, (q31_t)0x47c91aa3, (q31_t)0xc079ae8c, + (q31_t)0x47bca163, (q31_t)0xc078286e, (q31_t)0x47b027d7, (q31_t)0xc076a4c2, + (q31_t)0x47a3adff, (q31_t)0xc0752389, (q31_t)0x479733dc, (q31_t)0xc073a4c3, + (q31_t)0x478ab96e, (q31_t)0xc0722871, (q31_t)0x477e3eb5, (q31_t)0xc070ae92, + (q31_t)0x4771c3b3, (q31_t)0xc06f3726, (q31_t)0x47654867, (q31_t)0xc06dc22e, + (q31_t)0x4758ccd2, (q31_t)0xc06c4fa8, (q31_t)0x474c50f4, (q31_t)0xc06adf97, + (q31_t)0x473fd4cf, (q31_t)0xc06971f9, (q31_t)0x47335862, (q31_t)0xc06806ce, + (q31_t)0x4726dbae, (q31_t)0xc0669e18, (q31_t)0x471a5eb3, (q31_t)0xc06537d4, + (q31_t)0x470de172, (q31_t)0xc063d405, (q31_t)0x470163eb, (q31_t)0xc06272aa, + (q31_t)0x46f4e620, (q31_t)0xc06113c2, (q31_t)0x46e86810, (q31_t)0xc05fb74e, + (q31_t)0x46dbe9bb, (q31_t)0xc05e5d4e, (q31_t)0x46cf6b23, (q31_t)0xc05d05c3, + (q31_t)0x46c2ec48, (q31_t)0xc05bb0ab, (q31_t)0x46b66d29, (q31_t)0xc05a5e07, + (q31_t)0x46a9edc9, (q31_t)0xc0590dd8, (q31_t)0x469d6e27, (q31_t)0xc057c01d, + (q31_t)0x4690ee44, (q31_t)0xc05674d6, (q31_t)0x46846e1f, (q31_t)0xc0552c03, + (q31_t)0x4677edbb, (q31_t)0xc053e5a5, (q31_t)0x466b6d16, (q31_t)0xc052a1bb, + (q31_t)0x465eec33, (q31_t)0xc0516045, (q31_t)0x46526b10, (q31_t)0xc0502145, + (q31_t)0x4645e9af, (q31_t)0xc04ee4b8, (q31_t)0x46396810, (q31_t)0xc04daaa1, + (q31_t)0x462ce634, (q31_t)0xc04c72fe, (q31_t)0x4620641a, (q31_t)0xc04b3dcf, + (q31_t)0x4613e1c5, (q31_t)0xc04a0b16, (q31_t)0x46075f33, (q31_t)0xc048dad1, + (q31_t)0x45fadc66, (q31_t)0xc047ad01, (q31_t)0x45ee595d, (q31_t)0xc04681a6, + (q31_t)0x45e1d61b, (q31_t)0xc04558c0, (q31_t)0x45d5529e, (q31_t)0xc044324f, + (q31_t)0x45c8cee7, (q31_t)0xc0430e53, (q31_t)0x45bc4af8, (q31_t)0xc041eccc, + (q31_t)0x45afc6d0, (q31_t)0xc040cdba, (q31_t)0x45a3426f, (q31_t)0xc03fb11d, + (q31_t)0x4596bdd7, (q31_t)0xc03e96f6, (q31_t)0x458a3908, (q31_t)0xc03d7f44, + (q31_t)0x457db403, (q31_t)0xc03c6a07, (q31_t)0x45712ec7, (q31_t)0xc03b573f, + (q31_t)0x4564a955, (q31_t)0xc03a46ed, (q31_t)0x455823ae, (q31_t)0xc0393910, + (q31_t)0x454b9dd3, (q31_t)0xc0382da8, (q31_t)0x453f17c3, (q31_t)0xc03724b6, + (q31_t)0x4532917f, (q31_t)0xc0361e3a, (q31_t)0x45260b08, (q31_t)0xc0351a33, + (q31_t)0x4519845e, (q31_t)0xc03418a2, (q31_t)0x450cfd82, (q31_t)0xc0331986, + (q31_t)0x45007674, (q31_t)0xc0321ce0, (q31_t)0x44f3ef35, (q31_t)0xc03122b0, + (q31_t)0x44e767c5, (q31_t)0xc0302af5, (q31_t)0x44dae024, (q31_t)0xc02f35b1, + (q31_t)0x44ce5854, (q31_t)0xc02e42e2, (q31_t)0x44c1d054, (q31_t)0xc02d5289, + (q31_t)0x44b54825, (q31_t)0xc02c64a6, (q31_t)0x44a8bfc7, (q31_t)0xc02b7939, + (q31_t)0x449c373c, (q31_t)0xc02a9042, (q31_t)0x448fae83, (q31_t)0xc029a9c1, + (q31_t)0x4483259d, (q31_t)0xc028c5b6, (q31_t)0x44769c8b, (q31_t)0xc027e421, + (q31_t)0x446a134c, (q31_t)0xc0270502, (q31_t)0x445d89e2, (q31_t)0xc0262859, + (q31_t)0x4451004d, (q31_t)0xc0254e27, (q31_t)0x4444768d, (q31_t)0xc024766a, + (q31_t)0x4437eca4, (q31_t)0xc023a124, (q31_t)0x442b6290, (q31_t)0xc022ce54, + (q31_t)0x441ed854, (q31_t)0xc021fdfb, (q31_t)0x44124dee, (q31_t)0xc0213018, + (q31_t)0x4405c361, (q31_t)0xc02064ab, (q31_t)0x43f938ac, (q31_t)0xc01f9bb5, + (q31_t)0x43ecadcf, (q31_t)0xc01ed535, (q31_t)0x43e022cc, (q31_t)0xc01e112b, + (q31_t)0x43d397a3, (q31_t)0xc01d4f99, (q31_t)0x43c70c54, (q31_t)0xc01c907c, + (q31_t)0x43ba80df, (q31_t)0xc01bd3d6, (q31_t)0x43adf546, (q31_t)0xc01b19a7, + (q31_t)0x43a16988, (q31_t)0xc01a61ee, (q31_t)0x4394dda7, (q31_t)0xc019acac, + (q31_t)0x438851a2, (q31_t)0xc018f9e1, (q31_t)0x437bc57b, (q31_t)0xc018498c, + (q31_t)0x436f3931, (q31_t)0xc0179bae, (q31_t)0x4362acc5, (q31_t)0xc016f047, + (q31_t)0x43562038, (q31_t)0xc0164757, (q31_t)0x43499389, (q31_t)0xc015a0dd, + (q31_t)0x433d06bb, (q31_t)0xc014fcda, (q31_t)0x433079cc, (q31_t)0xc0145b4e, + (q31_t)0x4323ecbe, (q31_t)0xc013bc39, (q31_t)0x43175f91, (q31_t)0xc0131f9b, + (q31_t)0x430ad245, (q31_t)0xc0128574, (q31_t)0x42fe44dc, (q31_t)0xc011edc3, + (q31_t)0x42f1b755, (q31_t)0xc011588a, (q31_t)0x42e529b0, (q31_t)0xc010c5c7, + (q31_t)0x42d89bf0, (q31_t)0xc010357c, (q31_t)0x42cc0e13, (q31_t)0xc00fa7a8, + (q31_t)0x42bf801a, (q31_t)0xc00f1c4a, (q31_t)0x42b2f207, (q31_t)0xc00e9364, + (q31_t)0x42a663d8, (q31_t)0xc00e0cf5, (q31_t)0x4299d590, (q31_t)0xc00d88fd, + (q31_t)0x428d472e, (q31_t)0xc00d077c, (q31_t)0x4280b8b3, (q31_t)0xc00c8872, + (q31_t)0x42742a1f, (q31_t)0xc00c0be0, (q31_t)0x42679b73, (q31_t)0xc00b91c4, + (q31_t)0x425b0caf, (q31_t)0xc00b1a20, (q31_t)0x424e7dd4, (q31_t)0xc00aa4f3, + (q31_t)0x4241eee2, (q31_t)0xc00a323d, (q31_t)0x42355fd9, (q31_t)0xc009c1ff, + (q31_t)0x4228d0bb, (q31_t)0xc0095438, (q31_t)0x421c4188, (q31_t)0xc008e8e8, + (q31_t)0x420fb240, (q31_t)0xc008800f, (q31_t)0x420322e3, (q31_t)0xc00819ae, + (q31_t)0x41f69373, (q31_t)0xc007b5c4, (q31_t)0x41ea03ef, (q31_t)0xc0075452, + (q31_t)0x41dd7459, (q31_t)0xc006f556, (q31_t)0x41d0e4b0, (q31_t)0xc00698d3, + (q31_t)0x41c454f5, (q31_t)0xc0063ec6, (q31_t)0x41b7c528, (q31_t)0xc005e731, + (q31_t)0x41ab354b, (q31_t)0xc0059214, (q31_t)0x419ea55d, (q31_t)0xc0053f6e, + (q31_t)0x4192155f, (q31_t)0xc004ef3f, (q31_t)0x41858552, (q31_t)0xc004a188, + (q31_t)0x4178f536, (q31_t)0xc0045648, (q31_t)0x416c650b, (q31_t)0xc0040d80, + (q31_t)0x415fd4d2, (q31_t)0xc003c72f, (q31_t)0x4153448c, (q31_t)0xc0038356, + (q31_t)0x4146b438, (q31_t)0xc00341f4, (q31_t)0x413a23d8, (q31_t)0xc003030a, + (q31_t)0x412d936c, (q31_t)0xc002c697, (q31_t)0x412102f4, (q31_t)0xc0028c9c, + (q31_t)0x41147271, (q31_t)0xc0025519, (q31_t)0x4107e1e3, (q31_t)0xc002200d, + (q31_t)0x40fb514b, (q31_t)0xc001ed78, (q31_t)0x40eec0aa, (q31_t)0xc001bd5c, + (q31_t)0x40e22fff, (q31_t)0xc0018fb6, (q31_t)0x40d59f4c, (q31_t)0xc0016489, + (q31_t)0x40c90e90, (q31_t)0xc0013bd3, (q31_t)0x40bc7dcc, (q31_t)0xc0011594, + (q31_t)0x40afed02, (q31_t)0xc000f1ce, (q31_t)0x40a35c30, (q31_t)0xc000d07e, + (q31_t)0x4096cb58, (q31_t)0xc000b1a7, (q31_t)0x408a3a7b, (q31_t)0xc0009547, + (q31_t)0x407da998, (q31_t)0xc0007b5f, (q31_t)0x407118b0, (q31_t)0xc00063ee, + (q31_t)0x406487c4, (q31_t)0xc0004ef5, (q31_t)0x4057f6d4, (q31_t)0xc0003c74, + (q31_t)0x404b65e1, (q31_t)0xc0002c6a, (q31_t)0x403ed4ea, (q31_t)0xc0001ed8, + (q31_t)0x403243f1, (q31_t)0xc00013bd, (q31_t)0x4025b2f7, (q31_t)0xc0000b1a, + (q31_t)0x401921fb, (q31_t)0xc00004ef, (q31_t)0x400c90fe, (q31_t)0xc000013c, +}; + +/** +* @} end of RealFFT_Table group +*/ + +/** +* @addtogroup RealFFT +* @{ +*/ + +/** +* @brief Initialization function for the Q31 RFFT/RIFFT. +* @param[in, out] *S points to an instance of the Q31 RFFT/RIFFT structure. +* @param[in] fftLenReal length of the FFT. +* @param[in] ifftFlagR flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. +* @param[in] bitReverseFlag flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. +* @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported value. +* +* \par Description: +* \par +* The parameter fftLenReal Specifies length of RFFT/RIFFT Process. Supported FFT Lengths are 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192. +* \par +* The parameter ifftFlagR controls whether a forward or inverse transform is computed. +* Set(=1) ifftFlagR to calculate RIFFT, otherwise RFFT is calculated. +* \par +* The parameter bitReverseFlag controls whether output is in normal order or bit reversed order. +* Set(=1) bitReverseFlag for output to be in normal order otherwise output is in bit reversed order. +* \par 7 +* This function also initializes Twiddle factor table. +*/ + +arm_status arm_rfft_init_q31( + arm_rfft_instance_q31 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag) +{ + /* Initialise the default arm status */ + arm_status status = ARM_MATH_SUCCESS; + + /* Initialize the Real FFT length */ + S->fftLenReal = (uint16_t) fftLenReal; + + /* Initialize the Twiddle coefficientA pointer */ + S->pTwiddleAReal = (q31_t *) realCoefAQ31; + + /* Initialize the Twiddle coefficientB pointer */ + S->pTwiddleBReal = (q31_t *) realCoefBQ31; + + /* Initialize the Flag for selection of RFFT or RIFFT */ + S->ifftFlagR = (uint8_t) ifftFlagR; + + /* Initialize the Flag for calculation Bit reversal or not */ + S->bitReverseFlagR = (uint8_t) bitReverseFlag; + + /* Initialization of coef modifier depending on the FFT length */ + switch (S->fftLenReal) + { + case 8192U: + S->twidCoefRModifier = 1U; + S->pCfft = &arm_cfft_sR_q31_len4096; + break; + case 4096U: + S->twidCoefRModifier = 2U; + S->pCfft = &arm_cfft_sR_q31_len2048; + break; + case 2048U: + S->twidCoefRModifier = 4U; + S->pCfft = &arm_cfft_sR_q31_len1024; + break; + case 1024U: + S->twidCoefRModifier = 8U; + S->pCfft = &arm_cfft_sR_q31_len512; + break; + case 512U: + S->twidCoefRModifier = 16U; + S->pCfft = &arm_cfft_sR_q31_len256; + break; + case 256U: + S->twidCoefRModifier = 32U; + S->pCfft = &arm_cfft_sR_q31_len128; + break; + case 128U: + S->twidCoefRModifier = 64U; + S->pCfft = &arm_cfft_sR_q31_len64; + break; + case 64U: + S->twidCoefRModifier = 128U; + S->pCfft = &arm_cfft_sR_q31_len32; + break; + case 32U: + S->twidCoefRModifier = 256U; + S->pCfft = &arm_cfft_sR_q31_len16; + break; + default: + /* Reporting argument error if rfftSize is not valid value */ + status = ARM_MATH_ARGUMENT_ERROR; + break; + } + + /* return the status of RFFT Init function */ + return (status); +} + +/** +* @} end of RealFFT group +*/ diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c new file mode 100644 index 0000000..8a888f4 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q15.c @@ -0,0 +1,426 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_rfft_q15.c + * Description: RFFT & RIFFT Q15 process function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/* ---------------------------------------------------------------------- + * Internal functions prototypes + * -------------------------------------------------------------------- */ + +void arm_split_rfft_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pATable, + q15_t * pBTable, + q15_t * pDst, + uint32_t modifier); + +void arm_split_rifft_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pATable, + q15_t * pBTable, + q15_t * pDst, + uint32_t modifier); + +/** +* @addtogroup RealFFT +* @{ +*/ + +/** +* @brief Processing function for the Q15 RFFT/RIFFT. +* @param[in] *S points to an instance of the Q15 RFFT/RIFFT structure. +* @param[in] *pSrc points to the input buffer. +* @param[out] *pDst points to the output buffer. +* @return none. +* +* \par Input an output formats: +* \par +* Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. +* Hence the output format is different for different RFFT sizes. +* The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT: +* \par +* \image html RFFTQ15.gif "Input and Output Formats for Q15 RFFT" +* \par +* \image html RIFFTQ15.gif "Input and Output Formats for Q15 RIFFT" +*/ + +void arm_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst) +{ + const arm_cfft_instance_q15 *S_CFFT = S->pCfft; + uint32_t i; + uint32_t L2 = S->fftLenReal >> 1; + + /* Calculation of RIFFT of input */ + if (S->ifftFlagR == 1U) + { + /* Real IFFT core process */ + arm_split_rifft_q15(pSrc, L2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + + /* Complex IFFT process */ + arm_cfft_q15(S_CFFT, pDst, S->ifftFlagR, S->bitReverseFlagR); + + for(i=0;ifftLenReal;i++) + { + pDst[i] = pDst[i] << 1; + } + } + else + { + /* Calculation of RFFT of input */ + + /* Complex FFT process */ + arm_cfft_q15(S_CFFT, pSrc, S->ifftFlagR, S->bitReverseFlagR); + + /* Real FFT core process */ + arm_split_rfft_q15(pSrc, L2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + } +} + +/** +* @} end of RealFFT group +*/ + +/** +* @brief Core Real FFT process +* @param *pSrc points to the input buffer. +* @param fftLen length of FFT. +* @param *pATable points to the A twiddle Coef buffer. +* @param *pBTable points to the B twiddle Coef buffer. +* @param *pDst points to the output buffer. +* @param modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. +* @return none. +* The function implements a Real FFT +*/ + +void arm_split_rfft_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pATable, + q15_t * pBTable, + q15_t * pDst, + uint32_t modifier) +{ + uint32_t i; /* Loop Counter */ + q31_t outR, outI; /* Temporary variables for output */ + q15_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + q15_t *pSrc1, *pSrc2; +#if defined (ARM_MATH_DSP) + q15_t *pD1, *pD2; +#endif + + // pSrc[2U * fftLen] = pSrc[0]; + // pSrc[(2U * fftLen) + 1U] = pSrc[1]; + + pCoefA = &pATable[modifier * 2U]; + pCoefB = &pBTable[modifier * 2U]; + + pSrc1 = &pSrc[2]; + pSrc2 = &pSrc[(2U * fftLen) - 2U]; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + i = 1U; + pD1 = pDst + 2; + pD2 = pDst + (4U * fftLen) - 2; + + for(i = fftLen - 1; i > 0; i--) + { + /* + outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] + + pSrc[2 * n - 2 * i] * pBTable[2 * i] + + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + */ + + /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */ + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] */ + outR = __SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA)); + +#else + + /* -(pSrc[2 * i + 1] * pATable[2 * i + 1] - pSrc[2 * i] * pATable[2 * i]) */ + outR = -(__SMUSD(*__SIMD32(pSrc1), *__SIMD32(pCoefA))); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* pSrc[2 * n - 2 * i] * pBTable[2 * i] + + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */ + outR = __SMLAD(*__SIMD32(pSrc2), *__SIMD32(pCoefB), outR) >> 16U; + + /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ + +#ifndef ARM_MATH_BIG_ENDIAN + + outI = __SMUSDX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB)); + +#else + + outI = __SMUSDX(*__SIMD32(pCoefB), *__SIMD32(pSrc2)--); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] */ + outI = __SMLADX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), outI); + + /* write output */ + *pD1++ = (q15_t) outR; + *pD1++ = outI >> 16U; + + /* write complex conjugate output */ + pD2[0] = (q15_t) outR; + pD2[1] = -(outI >> 16U); + pD2 -= 2; + + /* update coefficient pointer */ + pCoefB = pCoefB + (2U * modifier); + pCoefA = pCoefA + (2U * modifier); + } + + pDst[2U * fftLen] = (pSrc[0] - pSrc[1]) >> 1; + pDst[(2U * fftLen) + 1U] = 0; + + pDst[0] = (pSrc[0] + pSrc[1]) >> 1; + pDst[1] = 0; + +#else + + /* Run the below code for Cortex-M0 */ + i = 1U; + + while (i < fftLen) + { + /* + outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] + + pSrc[2 * n - 2 * i] * pBTable[2 * i] + + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + */ + + outR = *pSrc1 * *pCoefA; + outR = outR - (*(pSrc1 + 1) * *(pCoefA + 1)); + outR = outR + (*pSrc2 * *pCoefB); + outR = (outR + (*(pSrc2 + 1) * *(pCoefB + 1))) >> 16; + + + /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); + */ + + outI = *pSrc2 * *(pCoefB + 1); + outI = outI - (*(pSrc2 + 1) * *pCoefB); + outI = outI + (*(pSrc1 + 1) * *pCoefA); + outI = outI + (*pSrc1 * *(pCoefA + 1)); + + /* update input pointers */ + pSrc1 += 2U; + pSrc2 -= 2U; + + /* write output */ + pDst[2U * i] = (q15_t) outR; + pDst[(2U * i) + 1U] = outI >> 16U; + + /* write complex conjugate output */ + pDst[(4U * fftLen) - (2U * i)] = (q15_t) outR; + pDst[((4U * fftLen) - (2U * i)) + 1U] = -(outI >> 16U); + + /* update coefficient pointer */ + pCoefB = pCoefB + (2U * modifier); + pCoefA = pCoefA + (2U * modifier); + + i++; + } + + pDst[2U * fftLen] = (pSrc[0] - pSrc[1]) >> 1; + pDst[(2U * fftLen) + 1U] = 0; + + pDst[0] = (pSrc[0] + pSrc[1]) >> 1; + pDst[1] = 0; + +#endif /* #if defined (ARM_MATH_DSP) */ +} + + +/** +* @brief Core Real IFFT process +* @param[in] *pSrc points to the input buffer. +* @param[in] fftLen length of FFT. +* @param[in] *pATable points to the twiddle Coef A buffer. +* @param[in] *pBTable points to the twiddle Coef B buffer. +* @param[out] *pDst points to the output buffer. +* @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. +* @return none. +* The function implements a Real IFFT +*/ +void arm_split_rifft_q15( + q15_t * pSrc, + uint32_t fftLen, + q15_t * pATable, + q15_t * pBTable, + q15_t * pDst, + uint32_t modifier) +{ + uint32_t i; /* Loop Counter */ + q31_t outR, outI; /* Temporary variables for output */ + q15_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + q15_t *pSrc1, *pSrc2; + q15_t *pDst1 = &pDst[0]; + + pCoefA = &pATable[0]; + pCoefB = &pBTable[0]; + + pSrc1 = &pSrc[0]; + pSrc2 = &pSrc[2U * fftLen]; + +#if defined (ARM_MATH_DSP) + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + i = fftLen; + + while (i > 0U) + { + /* + outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + + outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); + */ + + +#ifndef ARM_MATH_BIG_ENDIAN + + /* pIn[2 * n - 2 * i] * pBTable[2 * i] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]) */ + outR = __SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB)); + +#else + + /* -(-pIn[2 * n - 2 * i] * pBTable[2 * i] + + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1])) */ + outR = -(__SMUSD(*__SIMD32(pSrc2), *__SIMD32(pCoefB))); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i] */ + outR = __SMLAD(*__SIMD32(pSrc1), *__SIMD32(pCoefA), outR) >> 16U; + + /* + -pIn[2 * n - 2 * i] * pBTable[2 * i + 1] + + pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ + outI = __SMUADX(*__SIMD32(pSrc2)--, *__SIMD32(pCoefB)); + + /* pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] */ + +#ifndef ARM_MATH_BIG_ENDIAN + + outI = __SMLSDX(*__SIMD32(pCoefA), *__SIMD32(pSrc1)++, -outI); + +#else + + outI = __SMLSDX(*__SIMD32(pSrc1)++, *__SIMD32(pCoefA), -outI); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + /* write output */ + +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst1)++ = __PKHBT(outR, (outI >> 16U), 16); + +#else + + *__SIMD32(pDst1)++ = __PKHBT((outI >> 16U), outR, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* update coefficient pointer */ + pCoefB = pCoefB + (2U * modifier); + pCoefA = pCoefA + (2U * modifier); + + i--; + } +#else + /* Run the below code for Cortex-M0 */ + i = fftLen; + + while (i > 0U) + { + /* + outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + */ + + outR = *pSrc2 * *pCoefB; + outR = outR - (*(pSrc2 + 1) * *(pCoefB + 1)); + outR = outR + (*pSrc1 * *pCoefA); + outR = (outR + (*(pSrc1 + 1) * *(pCoefA + 1))) >> 16; + + /* + outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); + */ + + outI = *(pSrc1 + 1) * *pCoefA; + outI = outI - (*pSrc1 * *(pCoefA + 1)); + outI = outI - (*pSrc2 * *(pCoefB + 1)); + outI = outI - (*(pSrc2 + 1) * *(pCoefB)); + + /* update input pointers */ + pSrc1 += 2U; + pSrc2 -= 2U; + + /* write output */ + *pDst1++ = (q15_t) outR; + *pDst1++ = (q15_t) (outI >> 16); + + /* update coefficient pointer */ + pCoefB = pCoefB + (2U * modifier); + pCoefA = pCoefA + (2U * modifier); + + i--; + } +#endif /* #if defined (ARM_MATH_DSP) */ +} diff --git a/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c new file mode 100644 index 0000000..d21b964 --- /dev/null +++ b/Drivers/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c @@ -0,0 +1,283 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS DSP Library + * Title: arm_rfft_q31.c + * Description: FFT & RIFFT Q31 process function + * + * $Date: 27. January 2017 + * $Revision: V.1.5.1 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2017 ARM Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" + +/* ---------------------------------------------------------------------- + * Internal functions prototypes + * -------------------------------------------------------------------- */ + +void arm_split_rfft_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pATable, + q31_t * pBTable, + q31_t * pDst, + uint32_t modifier); + +void arm_split_rifft_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pATable, + q31_t * pBTable, + q31_t * pDst, + uint32_t modifier); + +/** +* @addtogroup RealFFT +* @{ +*/ + +/** +* @brief Processing function for the Q31 RFFT/RIFFT. +* @param[in] *S points to an instance of the Q31 RFFT/RIFFT structure. +* @param[in] *pSrc points to the input buffer. +* @param[out] *pDst points to the output buffer. +* @return none. +* +* \par Input an output formats: +* \par +* Internally input is downscaled by 2 for every stage to avoid saturations inside CFFT/CIFFT process. +* Hence the output format is different for different RFFT sizes. +* The input and output formats for different RFFT sizes and number of bits to upscale are mentioned in the tables below for RFFT and RIFFT: +* \par +* \image html RFFTQ31.gif "Input and Output Formats for Q31 RFFT" +* +* \par +* \image html RIFFTQ31.gif "Input and Output Formats for Q31 RIFFT" +*/ +void arm_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst) +{ + const arm_cfft_instance_q31 *S_CFFT = S->pCfft; + uint32_t i; + uint32_t L2 = S->fftLenReal >> 1; + + /* Calculation of RIFFT of input */ + if (S->ifftFlagR == 1U) + { + /* Real IFFT core process */ + arm_split_rifft_q31(pSrc, L2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + + /* Complex IFFT process */ + arm_cfft_q31(S_CFFT, pDst, S->ifftFlagR, S->bitReverseFlagR); + + for(i=0;ifftLenReal;i++) + { + pDst[i] = pDst[i] << 1; + } + } + else + { + /* Calculation of RFFT of input */ + + /* Complex FFT process */ + arm_cfft_q31(S_CFFT, pSrc, S->ifftFlagR, S->bitReverseFlagR); + + /* Real FFT core process */ + arm_split_rfft_q31(pSrc, L2, S->pTwiddleAReal, + S->pTwiddleBReal, pDst, S->twidCoefRModifier); + } +} + +/** +* @} end of RealFFT group +*/ + +/** +* @brief Core Real FFT process +* @param[in] *pSrc points to the input buffer. +* @param[in] fftLen length of FFT. +* @param[in] *pATable points to the twiddle Coef A buffer. +* @param[in] *pBTable points to the twiddle Coef B buffer. +* @param[out] *pDst points to the output buffer. +* @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. +* @return none. +*/ +void arm_split_rfft_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pATable, + q31_t * pBTable, + q31_t * pDst, + uint32_t modifier) +{ + uint32_t i; /* Loop Counter */ + q31_t outR, outI; /* Temporary variables for output */ + q31_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + q31_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ + q31_t *pOut1 = &pDst[2], *pOut2 = &pDst[(4U * fftLen) - 1U]; + q31_t *pIn1 = &pSrc[2], *pIn2 = &pSrc[(2U * fftLen) - 1U]; + + /* Init coefficient pointers */ + pCoefA = &pATable[modifier * 2U]; + pCoefB = &pBTable[modifier * 2U]; + + i = fftLen - 1U; + + while (i > 0U) + { + /* + outR = (pSrc[2 * i] * pATable[2 * i] - pSrc[2 * i + 1] * pATable[2 * i + 1] + + pSrc[2 * n - 2 * i] * pBTable[2 * i] + + pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + */ + + /* outI = (pIn[2 * i + 1] * pATable[2 * i] + pIn[2 * i] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); */ + + CoefA1 = *pCoefA++; + CoefA2 = *pCoefA; + + /* outR = (pSrc[2 * i] * pATable[2 * i] */ + mult_32x32_keep32_R(outR, *pIn1, CoefA1); + + /* outI = pIn[2 * i] * pATable[2 * i + 1] */ + mult_32x32_keep32_R(outI, *pIn1++, CoefA2); + + /* - pSrc[2 * i + 1] * pATable[2 * i + 1] */ + multSub_32x32_keep32_R(outR, *pIn1, CoefA2); + + /* (pIn[2 * i + 1] * pATable[2 * i] */ + multAcc_32x32_keep32_R(outI, *pIn1++, CoefA1); + + /* pSrc[2 * n - 2 * i] * pBTable[2 * i] */ + multSub_32x32_keep32_R(outR, *pIn2, CoefA2); + CoefB1 = *pCoefB; + + /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */ + multSub_32x32_keep32_R(outI, *pIn2--, CoefB1); + + /* pSrc[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */ + multAcc_32x32_keep32_R(outR, *pIn2, CoefB1); + + /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ + multSub_32x32_keep32_R(outI, *pIn2--, CoefA2); + + /* write output */ + *pOut1++ = outR; + *pOut1++ = outI; + + /* write complex conjugate output */ + *pOut2-- = -outI; + *pOut2-- = outR; + + /* update coefficient pointer */ + pCoefB = pCoefB + (modifier * 2U); + pCoefA = pCoefA + ((modifier * 2U) - 1U); + + i--; + } + pDst[2U * fftLen] = (pSrc[0] - pSrc[1]) >> 1; + pDst[(2U * fftLen) + 1U] = 0; + + pDst[0] = (pSrc[0] + pSrc[1]) >> 1; + pDst[1] = 0; +} + +/** +* @brief Core Real IFFT process +* @param[in] *pSrc points to the input buffer. +* @param[in] fftLen length of FFT. +* @param[in] *pATable points to the twiddle Coef A buffer. +* @param[in] *pBTable points to the twiddle Coef B buffer. +* @param[out] *pDst points to the output buffer. +* @param[in] modifier twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. +* @return none. +*/ +void arm_split_rifft_q31( + q31_t * pSrc, + uint32_t fftLen, + q31_t * pATable, + q31_t * pBTable, + q31_t * pDst, + uint32_t modifier) +{ + q31_t outR, outI; /* Temporary variables for output */ + q31_t *pCoefA, *pCoefB; /* Temporary pointers for twiddle factors */ + q31_t CoefA1, CoefA2, CoefB1; /* Temporary variables for twiddle coefficients */ + q31_t *pIn1 = &pSrc[0], *pIn2 = &pSrc[(2U * fftLen) + 1U]; + + pCoefA = &pATable[0]; + pCoefB = &pBTable[0]; + + while (fftLen > 0U) + { + /* + outR = (pIn[2 * i] * pATable[2 * i] + pIn[2 * i + 1] * pATable[2 * i + 1] + + pIn[2 * n - 2 * i] * pBTable[2 * i] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1]); + + outI = (pIn[2 * i + 1] * pATable[2 * i] - pIn[2 * i] * pATable[2 * i + 1] - + pIn[2 * n - 2 * i] * pBTable[2 * i + 1] - + pIn[2 * n - 2 * i + 1] * pBTable[2 * i]); + */ + CoefA1 = *pCoefA++; + CoefA2 = *pCoefA; + + /* outR = (pIn[2 * i] * pATable[2 * i] */ + mult_32x32_keep32_R(outR, *pIn1, CoefA1); + + /* - pIn[2 * i] * pATable[2 * i + 1] */ + mult_32x32_keep32_R(outI, *pIn1++, -CoefA2); + + /* pIn[2 * i + 1] * pATable[2 * i + 1] */ + multAcc_32x32_keep32_R(outR, *pIn1, CoefA2); + + /* pIn[2 * i + 1] * pATable[2 * i] */ + multAcc_32x32_keep32_R(outI, *pIn1++, CoefA1); + + /* pIn[2 * n - 2 * i] * pBTable[2 * i] */ + multAcc_32x32_keep32_R(outR, *pIn2, CoefA2); + CoefB1 = *pCoefB; + + /* pIn[2 * n - 2 * i] * pBTable[2 * i + 1] */ + multSub_32x32_keep32_R(outI, *pIn2--, CoefB1); + + /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i + 1] */ + multAcc_32x32_keep32_R(outR, *pIn2, CoefB1); + + /* pIn[2 * n - 2 * i + 1] * pBTable[2 * i] */ + multAcc_32x32_keep32_R(outI, *pIn2--, CoefA2); + + /* write output */ + *pDst++ = outR; + *pDst++ = outI; + + /* update coefficient pointer */ + pCoefB = pCoefB + (modifier * 2U); + pCoefA = pCoefA + ((modifier * 2U) - 1U); + + /* Decrement loop count */ + fftLen--; + } +} diff --git a/Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h b/Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h new file mode 100644 index 0000000..6e08d2f --- /dev/null +++ b/Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h @@ -0,0 +1,18950 @@ +/** + ****************************************************************************** + * @file stm32f767xx.h + * @author MCD Application Team + * @brief CMSIS Cortex-M7 Device Peripheral Access Layer Header File. + * + * This file contains: + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral's registers hardware + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup stm32f767xx + * @{ + */ + +#ifndef __STM32F767xx_H +#define __STM32F767xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ + +/** + * @brief STM32F7xx Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ +typedef enum +{ +/****** Cortex-M7 Processor Exceptions Numbers ****************************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M7 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M7 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M7 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M7 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M7 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M7 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M7 System Tick Interrupt */ +/****** STM32 specific Interrupt Numbers **********************************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ + TAMP_STAMP_IRQn = 2, /*!< Tamper and TimeStamp interrupts through the EXTI line */ + RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI line */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Stream0_IRQn = 11, /*!< DMA1 Stream 0 global Interrupt */ + DMA1_Stream1_IRQn = 12, /*!< DMA1 Stream 1 global Interrupt */ + DMA1_Stream2_IRQn = 13, /*!< DMA1 Stream 2 global Interrupt */ + DMA1_Stream3_IRQn = 14, /*!< DMA1 Stream 3 global Interrupt */ + DMA1_Stream4_IRQn = 15, /*!< DMA1 Stream 4 global Interrupt */ + DMA1_Stream5_IRQn = 16, /*!< DMA1 Stream 5 global Interrupt */ + DMA1_Stream6_IRQn = 17, /*!< DMA1 Stream 6 global Interrupt */ + ADC_IRQn = 18, /*!< ADC1, ADC2 and ADC3 global Interrupts */ + CAN1_TX_IRQn = 19, /*!< CAN1 TX Interrupt */ + CAN1_RX0_IRQn = 20, /*!< CAN1 RX0 Interrupt */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM9_IRQn = 24, /*!< TIM1 Break interrupt and TIM9 global interrupt */ + TIM1_UP_TIM10_IRQn = 25, /*!< TIM1 Update Interrupt and TIM10 global interrupt */ + TIM1_TRG_COM_TIM11_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt and TIM11 global interrupt */ + TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */ + TIM2_IRQn = 28, /*!< TIM2 global Interrupt */ + TIM3_IRQn = 29, /*!< TIM3 global Interrupt */ + TIM4_IRQn = 30, /*!< TIM4 global Interrupt */ + I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */ + I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */ + I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */ + I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */ + SPI1_IRQn = 35, /*!< SPI1 global Interrupt */ + SPI2_IRQn = 36, /*!< SPI2 global Interrupt */ + USART1_IRQn = 37, /*!< USART1 global Interrupt */ + USART2_IRQn = 38, /*!< USART2 global Interrupt */ + USART3_IRQn = 39, /*!< USART3 global Interrupt */ + EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */ + RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */ + OTG_FS_WKUP_IRQn = 42, /*!< USB OTG FS Wakeup through EXTI line interrupt */ + TIM8_BRK_TIM12_IRQn = 43, /*!< TIM8 Break Interrupt and TIM12 global interrupt */ + TIM8_UP_TIM13_IRQn = 44, /*!< TIM8 Update Interrupt and TIM13 global interrupt */ + TIM8_TRG_COM_TIM14_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + DMA1_Stream7_IRQn = 47, /*!< DMA1 Stream7 Interrupt */ + FMC_IRQn = 48, /*!< FMC global Interrupt */ + SDMMC1_IRQn = 49, /*!< SDMMC1 global Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&2 underrun error interrupts */ + TIM7_IRQn = 55, /*!< TIM7 global interrupt */ + DMA2_Stream0_IRQn = 56, /*!< DMA2 Stream 0 global Interrupt */ + DMA2_Stream1_IRQn = 57, /*!< DMA2 Stream 1 global Interrupt */ + DMA2_Stream2_IRQn = 58, /*!< DMA2 Stream 2 global Interrupt */ + DMA2_Stream3_IRQn = 59, /*!< DMA2 Stream 3 global Interrupt */ + DMA2_Stream4_IRQn = 60, /*!< DMA2 Stream 4 global Interrupt */ + ETH_IRQn = 61, /*!< Ethernet global Interrupt */ + ETH_WKUP_IRQn = 62, /*!< Ethernet Wakeup through EXTI line Interrupt */ + CAN2_TX_IRQn = 63, /*!< CAN2 TX Interrupt */ + CAN2_RX0_IRQn = 64, /*!< CAN2 RX0 Interrupt */ + CAN2_RX1_IRQn = 65, /*!< CAN2 RX1 Interrupt */ + CAN2_SCE_IRQn = 66, /*!< CAN2 SCE Interrupt */ + OTG_FS_IRQn = 67, /*!< USB OTG FS global Interrupt */ + DMA2_Stream5_IRQn = 68, /*!< DMA2 Stream 5 global interrupt */ + DMA2_Stream6_IRQn = 69, /*!< DMA2 Stream 6 global interrupt */ + DMA2_Stream7_IRQn = 70, /*!< DMA2 Stream 7 global interrupt */ + USART6_IRQn = 71, /*!< USART6 global interrupt */ + I2C3_EV_IRQn = 72, /*!< I2C3 event interrupt */ + I2C3_ER_IRQn = 73, /*!< I2C3 error interrupt */ + OTG_HS_EP1_OUT_IRQn = 74, /*!< USB OTG HS End Point 1 Out global interrupt */ + OTG_HS_EP1_IN_IRQn = 75, /*!< USB OTG HS End Point 1 In global interrupt */ + OTG_HS_WKUP_IRQn = 76, /*!< USB OTG HS Wakeup through EXTI interrupt */ + OTG_HS_IRQn = 77, /*!< USB OTG HS global interrupt */ + DCMI_IRQn = 78, /*!< DCMI global interrupt */ + RNG_IRQn = 80, /*!< RNG global interrupt */ + FPU_IRQn = 81, /*!< FPU global interrupt */ + UART7_IRQn = 82, /*!< UART7 global interrupt */ + UART8_IRQn = 83, /*!< UART8 global interrupt */ + SPI4_IRQn = 84, /*!< SPI4 global Interrupt */ + SPI5_IRQn = 85, /*!< SPI5 global Interrupt */ + SPI6_IRQn = 86, /*!< SPI6 global Interrupt */ + SAI1_IRQn = 87, /*!< SAI1 global Interrupt */ + LTDC_IRQn = 88, /*!< LTDC global Interrupt */ + LTDC_ER_IRQn = 89, /*!< LTDC Error global Interrupt */ + DMA2D_IRQn = 90, /*!< DMA2D global Interrupt */ + SAI2_IRQn = 91, /*!< SAI2 global Interrupt */ + QUADSPI_IRQn = 92, /*!< Quad SPI global interrupt */ + LPTIM1_IRQn = 93, /*!< LP TIM1 interrupt */ + CEC_IRQn = 94, /*!< HDMI-CEC global Interrupt */ + I2C4_EV_IRQn = 95, /*!< I2C4 Event Interrupt */ + I2C4_ER_IRQn = 96, /*!< I2C4 Error Interrupt */ + SPDIF_RX_IRQn = 97, /*!< SPDIF-RX global Interrupt */ + DFSDM1_FLT0_IRQn = 99, /*!< DFSDM1 Filter 0 global Interrupt */ + DFSDM1_FLT1_IRQn = 100, /*!< DFSDM1 Filter 1 global Interrupt */ + DFSDM1_FLT2_IRQn = 101, /*!< DFSDM1 Filter 2 global Interrupt */ + DFSDM1_FLT3_IRQn = 102, /*!< DFSDM1 Filter 3 global Interrupt */ + SDMMC2_IRQn = 103, /*!< SDMMC2 global Interrupt */ + CAN3_TX_IRQn = 104, /*!< CAN3 TX Interrupt */ + CAN3_RX0_IRQn = 105, /*!< CAN3 RX0 Interrupt */ + CAN3_RX1_IRQn = 106, /*!< CAN3 RX1 Interrupt */ + CAN3_SCE_IRQn = 107, /*!< CAN3 SCE Interrupt */ + JPEG_IRQn = 108, /*!< JPEG global Interrupt */ + MDIOS_IRQn = 109 /*!< MDIO Slave global Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +/** + * @brief Configuration of the Cortex-M7 Processor and Core Peripherals + */ +#define __CM7_REV 0x0100U /*!< Cortex-M7 revision r1p0 */ +#define __MPU_PRESENT 1U /*!< CM7 provides an MPU */ +#define __NVIC_PRIO_BITS 4U /*!< CM7 uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ +#define __FPU_PRESENT 1U /*!< FPU present */ +#define __ICACHE_PRESENT 1U /*!< CM7 instruction cache present */ +#define __DCACHE_PRESENT 1U /*!< CM7 data cache present */ +#include "core_cm7.h" /*!< Cortex-M7 processor and core peripherals */ + + +#include "system_stm32f7xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t SR; /*!< ADC status register, Address offset: 0x00 */ + __IO uint32_t CR1; /*!< ADC control register 1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< ADC control register 2, Address offset: 0x08 */ + __IO uint32_t SMPR1; /*!< ADC sample time register 1, Address offset: 0x0C */ + __IO uint32_t SMPR2; /*!< ADC sample time register 2, Address offset: 0x10 */ + __IO uint32_t JOFR1; /*!< ADC injected channel data offset register 1, Address offset: 0x14 */ + __IO uint32_t JOFR2; /*!< ADC injected channel data offset register 2, Address offset: 0x18 */ + __IO uint32_t JOFR3; /*!< ADC injected channel data offset register 3, Address offset: 0x1C */ + __IO uint32_t JOFR4; /*!< ADC injected channel data offset register 4, Address offset: 0x20 */ + __IO uint32_t HTR; /*!< ADC watchdog higher threshold register, Address offset: 0x24 */ + __IO uint32_t LTR; /*!< ADC watchdog lower threshold register, Address offset: 0x28 */ + __IO uint32_t SQR1; /*!< ADC regular sequence register 1, Address offset: 0x2C */ + __IO uint32_t SQR2; /*!< ADC regular sequence register 2, Address offset: 0x30 */ + __IO uint32_t SQR3; /*!< ADC regular sequence register 3, Address offset: 0x34 */ + __IO uint32_t JSQR; /*!< ADC injected sequence register, Address offset: 0x38*/ + __IO uint32_t JDR1; /*!< ADC injected data register 1, Address offset: 0x3C */ + __IO uint32_t JDR2; /*!< ADC injected data register 2, Address offset: 0x40 */ + __IO uint32_t JDR3; /*!< ADC injected data register 3, Address offset: 0x44 */ + __IO uint32_t JDR4; /*!< ADC injected data register 4, Address offset: 0x48 */ + __IO uint32_t DR; /*!< ADC regular data register, Address offset: 0x4C */ +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC Common status register, Address offset: ADC1 base address + 0x300 */ + __IO uint32_t CCR; /*!< ADC common control register, Address offset: ADC1 base address + 0x304 */ + __IO uint32_t CDR; /*!< ADC common regular data register for dual + AND triple modes, Address offset: ADC1 base address + 0x308 */ +} ADC_Common_TypeDef; + + +/** + * @brief Controller Area Network TxMailBox + */ + +typedef struct +{ + __IO uint32_t TIR; /*!< CAN TX mailbox identifier register */ + __IO uint32_t TDTR; /*!< CAN mailbox data length control and time stamp register */ + __IO uint32_t TDLR; /*!< CAN mailbox data low register */ + __IO uint32_t TDHR; /*!< CAN mailbox data high register */ +} CAN_TxMailBox_TypeDef; + +/** + * @brief Controller Area Network FIFOMailBox + */ + +typedef struct +{ + __IO uint32_t RIR; /*!< CAN receive FIFO mailbox identifier register */ + __IO uint32_t RDTR; /*!< CAN receive FIFO mailbox data length control and time stamp register */ + __IO uint32_t RDLR; /*!< CAN receive FIFO mailbox data low register */ + __IO uint32_t RDHR; /*!< CAN receive FIFO mailbox data high register */ +} CAN_FIFOMailBox_TypeDef; + +/** + * @brief Controller Area Network FilterRegister + */ + +typedef struct +{ + __IO uint32_t FR1; /*!< CAN Filter bank register 1 */ + __IO uint32_t FR2; /*!< CAN Filter bank register 1 */ +} CAN_FilterRegister_TypeDef; + +/** + * @brief Controller Area Network + */ + +typedef struct +{ + __IO uint32_t MCR; /*!< CAN master control register, Address offset: 0x00 */ + __IO uint32_t MSR; /*!< CAN master status register, Address offset: 0x04 */ + __IO uint32_t TSR; /*!< CAN transmit status register, Address offset: 0x08 */ + __IO uint32_t RF0R; /*!< CAN receive FIFO 0 register, Address offset: 0x0C */ + __IO uint32_t RF1R; /*!< CAN receive FIFO 1 register, Address offset: 0x10 */ + __IO uint32_t IER; /*!< CAN interrupt enable register, Address offset: 0x14 */ + __IO uint32_t ESR; /*!< CAN error status register, Address offset: 0x18 */ + __IO uint32_t BTR; /*!< CAN bit timing register, Address offset: 0x1C */ + uint32_t RESERVED0[88]; /*!< Reserved, 0x020 - 0x17F */ + CAN_TxMailBox_TypeDef sTxMailBox[3]; /*!< CAN Tx MailBox, Address offset: 0x180 - 0x1AC */ + CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; /*!< CAN FIFO MailBox, Address offset: 0x1B0 - 0x1CC */ + uint32_t RESERVED1[12]; /*!< Reserved, 0x1D0 - 0x1FF */ + __IO uint32_t FMR; /*!< CAN filter master register, Address offset: 0x200 */ + __IO uint32_t FM1R; /*!< CAN filter mode register, Address offset: 0x204 */ + uint32_t RESERVED2; /*!< Reserved, 0x208 */ + __IO uint32_t FS1R; /*!< CAN filter scale register, Address offset: 0x20C */ + uint32_t RESERVED3; /*!< Reserved, 0x210 */ + __IO uint32_t FFA1R; /*!< CAN filter FIFO assignment register, Address offset: 0x214 */ + uint32_t RESERVED4; /*!< Reserved, 0x218 */ + __IO uint32_t FA1R; /*!< CAN filter activation register, Address offset: 0x21C */ + uint32_t RESERVED5[8]; /*!< Reserved, 0x220-0x23F */ + CAN_FilterRegister_TypeDef sFilterRegister[28]; /*!< CAN Filter Register, Address offset: 0x240-0x31C */ +} CAN_TypeDef; + +/** + * @brief HDMI-CEC + */ + +typedef struct +{ + __IO uint32_t CR; /*!< CEC control register, Address offset:0x00 */ + __IO uint32_t CFGR; /*!< CEC configuration register, Address offset:0x04 */ + __IO uint32_t TXDR; /*!< CEC Tx data register , Address offset:0x08 */ + __IO uint32_t RXDR; /*!< CEC Rx Data Register, Address offset:0x0C */ + __IO uint32_t ISR; /*!< CEC Interrupt and Status Register, Address offset:0x10 */ + __IO uint32_t IER; /*!< CEC interrupt enable register, Address offset:0x14 */ +}CEC_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint8_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + uint8_t RESERVED0; /*!< Reserved, 0x05 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ + uint32_t RESERVED2; /*!< Reserved, 0x0C */ + __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */ + __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */ +} CRC_TypeDef; + +/** + * @brief Digital to Analog Converter + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */ + __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */ + __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */ + __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */ + __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */ + __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */ + __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */ + __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */ + __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */ + __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */ + __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */ + __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */ + __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */ + __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */ +} DAC_TypeDef; + +/** + * @brief DFSDM module registers + */ +typedef struct +{ + __IO uint32_t FLTCR1; /*!< DFSDM control register1, Address offset: 0x100 */ + __IO uint32_t FLTCR2; /*!< DFSDM control register2, Address offset: 0x104 */ + __IO uint32_t FLTISR; /*!< DFSDM interrupt and status register, Address offset: 0x108 */ + __IO uint32_t FLTICR; /*!< DFSDM interrupt flag clear register, Address offset: 0x10C */ + __IO uint32_t FLTJCHGR; /*!< DFSDM injected channel group selection register, Address offset: 0x110 */ + __IO uint32_t FLTFCR; /*!< DFSDM filter control register, Address offset: 0x114 */ + __IO uint32_t FLTJDATAR; /*!< DFSDM data register for injected group, Address offset: 0x118 */ + __IO uint32_t FLTRDATAR; /*!< DFSDM data register for regular group, Address offset: 0x11C */ + __IO uint32_t FLTAWHTR; /*!< DFSDM analog watchdog high threshold register, Address offset: 0x120 */ + __IO uint32_t FLTAWLTR; /*!< DFSDM analog watchdog low threshold register, Address offset: 0x124 */ + __IO uint32_t FLTAWSR; /*!< DFSDM analog watchdog status register Address offset: 0x128 */ + __IO uint32_t FLTAWCFR; /*!< DFSDM analog watchdog clear flag register Address offset: 0x12C */ + __IO uint32_t FLTEXMAX; /*!< DFSDM extreme detector maximum register, Address offset: 0x130 */ + __IO uint32_t FLTEXMIN; /*!< DFSDM extreme detector minimum register Address offset: 0x134 */ + __IO uint32_t FLTCNVTIMR; /*!< DFSDM conversion timer, Address offset: 0x138 */ +} DFSDM_Filter_TypeDef; + +/** + * @brief DFSDM channel configuration registers + */ +typedef struct +{ + __IO uint32_t CHCFGR1; /*!< DFSDM channel configuration register1, Address offset: 0x00 */ + __IO uint32_t CHCFGR2; /*!< DFSDM channel configuration register2, Address offset: 0x04 */ + __IO uint32_t CHAWSCDR; /*!< DFSDM channel analog watchdog and + short circuit detector register, Address offset: 0x08 */ + __IO uint32_t CHWDATAR; /*!< DFSDM channel watchdog filter data register, Address offset: 0x0C */ + __IO uint32_t CHDATINR; /*!< DFSDM channel data input register, Address offset: 0x10 */ +} DFSDM_Channel_TypeDef; + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ + __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ + __IO uint32_t APB1FZ; /*!< Debug MCU APB1 freeze register, Address offset: 0x08 */ + __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x0C */ +}DBGMCU_TypeDef; + +/** + * @brief DCMI + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DCMI control register 1, Address offset: 0x00 */ + __IO uint32_t SR; /*!< DCMI status register, Address offset: 0x04 */ + __IO uint32_t RISR; /*!< DCMI raw interrupt status register, Address offset: 0x08 */ + __IO uint32_t IER; /*!< DCMI interrupt enable register, Address offset: 0x0C */ + __IO uint32_t MISR; /*!< DCMI masked interrupt status register, Address offset: 0x10 */ + __IO uint32_t ICR; /*!< DCMI interrupt clear register, Address offset: 0x14 */ + __IO uint32_t ESCR; /*!< DCMI embedded synchronization code register, Address offset: 0x18 */ + __IO uint32_t ESUR; /*!< DCMI embedded synchronization unmask register, Address offset: 0x1C */ + __IO uint32_t CWSTRTR; /*!< DCMI crop window start, Address offset: 0x20 */ + __IO uint32_t CWSIZER; /*!< DCMI crop window size, Address offset: 0x24 */ + __IO uint32_t DR; /*!< DCMI data register, Address offset: 0x28 */ +} DCMI_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DMA stream x configuration register */ + __IO uint32_t NDTR; /*!< DMA stream x number of data register */ + __IO uint32_t PAR; /*!< DMA stream x peripheral address register */ + __IO uint32_t M0AR; /*!< DMA stream x memory 0 address register */ + __IO uint32_t M1AR; /*!< DMA stream x memory 1 address register */ + __IO uint32_t FCR; /*!< DMA stream x FIFO control register */ +} DMA_Stream_TypeDef; + +typedef struct +{ + __IO uint32_t LISR; /*!< DMA low interrupt status register, Address offset: 0x00 */ + __IO uint32_t HISR; /*!< DMA high interrupt status register, Address offset: 0x04 */ + __IO uint32_t LIFCR; /*!< DMA low interrupt flag clear register, Address offset: 0x08 */ + __IO uint32_t HIFCR; /*!< DMA high interrupt flag clear register, Address offset: 0x0C */ +} DMA_TypeDef; + +/** + * @brief DMA2D Controller + */ + +typedef struct +{ + __IO uint32_t CR; /*!< DMA2D Control Register, Address offset: 0x00 */ + __IO uint32_t ISR; /*!< DMA2D Interrupt Status Register, Address offset: 0x04 */ + __IO uint32_t IFCR; /*!< DMA2D Interrupt Flag Clear Register, Address offset: 0x08 */ + __IO uint32_t FGMAR; /*!< DMA2D Foreground Memory Address Register, Address offset: 0x0C */ + __IO uint32_t FGOR; /*!< DMA2D Foreground Offset Register, Address offset: 0x10 */ + __IO uint32_t BGMAR; /*!< DMA2D Background Memory Address Register, Address offset: 0x14 */ + __IO uint32_t BGOR; /*!< DMA2D Background Offset Register, Address offset: 0x18 */ + __IO uint32_t FGPFCCR; /*!< DMA2D Foreground PFC Control Register, Address offset: 0x1C */ + __IO uint32_t FGCOLR; /*!< DMA2D Foreground Color Register, Address offset: 0x20 */ + __IO uint32_t BGPFCCR; /*!< DMA2D Background PFC Control Register, Address offset: 0x24 */ + __IO uint32_t BGCOLR; /*!< DMA2D Background Color Register, Address offset: 0x28 */ + __IO uint32_t FGCMAR; /*!< DMA2D Foreground CLUT Memory Address Register, Address offset: 0x2C */ + __IO uint32_t BGCMAR; /*!< DMA2D Background CLUT Memory Address Register, Address offset: 0x30 */ + __IO uint32_t OPFCCR; /*!< DMA2D Output PFC Control Register, Address offset: 0x34 */ + __IO uint32_t OCOLR; /*!< DMA2D Output Color Register, Address offset: 0x38 */ + __IO uint32_t OMAR; /*!< DMA2D Output Memory Address Register, Address offset: 0x3C */ + __IO uint32_t OOR; /*!< DMA2D Output Offset Register, Address offset: 0x40 */ + __IO uint32_t NLR; /*!< DMA2D Number of Line Register, Address offset: 0x44 */ + __IO uint32_t LWR; /*!< DMA2D Line Watermark Register, Address offset: 0x48 */ + __IO uint32_t AMTCR; /*!< DMA2D AHB Master Timer Configuration Register, Address offset: 0x4C */ + uint32_t RESERVED[236]; /*!< Reserved, 0x50-0x3FF */ + __IO uint32_t FGCLUT[256]; /*!< DMA2D Foreground CLUT, Address offset:400-7FF */ + __IO uint32_t BGCLUT[256]; /*!< DMA2D Background CLUT, Address offset:800-BFF */ +} DMA2D_TypeDef; + + +/** + * @brief Ethernet MAC + */ + +typedef struct +{ + __IO uint32_t MACCR; + __IO uint32_t MACFFR; + __IO uint32_t MACHTHR; + __IO uint32_t MACHTLR; + __IO uint32_t MACMIIAR; + __IO uint32_t MACMIIDR; + __IO uint32_t MACFCR; + __IO uint32_t MACVLANTR; /* 8 */ + uint32_t RESERVED0[2]; + __IO uint32_t MACRWUFFR; /* 11 */ + __IO uint32_t MACPMTCSR; + uint32_t RESERVED1; + __IO uint32_t MACDBGR; + __IO uint32_t MACSR; /* 15 */ + __IO uint32_t MACIMR; + __IO uint32_t MACA0HR; + __IO uint32_t MACA0LR; + __IO uint32_t MACA1HR; + __IO uint32_t MACA1LR; + __IO uint32_t MACA2HR; + __IO uint32_t MACA2LR; + __IO uint32_t MACA3HR; + __IO uint32_t MACA3LR; /* 24 */ + uint32_t RESERVED2[40]; + __IO uint32_t MMCCR; /* 65 */ + __IO uint32_t MMCRIR; + __IO uint32_t MMCTIR; + __IO uint32_t MMCRIMR; + __IO uint32_t MMCTIMR; /* 69 */ + uint32_t RESERVED3[14]; + __IO uint32_t MMCTGFSCCR; /* 84 */ + __IO uint32_t MMCTGFMSCCR; + uint32_t RESERVED4[5]; + __IO uint32_t MMCTGFCR; + uint32_t RESERVED5[10]; + __IO uint32_t MMCRFCECR; + __IO uint32_t MMCRFAECR; + uint32_t RESERVED6[10]; + __IO uint32_t MMCRGUFCR; + uint32_t RESERVED7[334]; + __IO uint32_t PTPTSCR; + __IO uint32_t PTPSSIR; + __IO uint32_t PTPTSHR; + __IO uint32_t PTPTSLR; + __IO uint32_t PTPTSHUR; + __IO uint32_t PTPTSLUR; + __IO uint32_t PTPTSAR; + __IO uint32_t PTPTTHR; + __IO uint32_t PTPTTLR; + __IO uint32_t RESERVED8; + __IO uint32_t PTPTSSR; + __IO uint32_t PTPPPSCR; + uint32_t RESERVED9[564]; + __IO uint32_t DMABMR; + __IO uint32_t DMATPDR; + __IO uint32_t DMARPDR; + __IO uint32_t DMARDLAR; + __IO uint32_t DMATDLAR; + __IO uint32_t DMASR; + __IO uint32_t DMAOMR; + __IO uint32_t DMAIER; + __IO uint32_t DMAMFBOCR; + __IO uint32_t DMARSWTR; + uint32_t RESERVED10[8]; + __IO uint32_t DMACHTDR; + __IO uint32_t DMACHRDR; + __IO uint32_t DMACHTBAR; + __IO uint32_t DMACHRBAR; +} ETH_TypeDef; + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR; /*!< EXTI Interrupt mask register, Address offset: 0x00 */ + __IO uint32_t EMR; /*!< EXTI Event mask register, Address offset: 0x04 */ + __IO uint32_t RTSR; /*!< EXTI Rising trigger selection register, Address offset: 0x08 */ + __IO uint32_t FTSR; /*!< EXTI Falling trigger selection register, Address offset: 0x0C */ + __IO uint32_t SWIER; /*!< EXTI Software interrupt event register, Address offset: 0x10 */ + __IO uint32_t PR; /*!< EXTI Pending register, Address offset: 0x14 */ +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */ + __IO uint32_t KEYR; /*!< FLASH key register, Address offset: 0x04 */ + __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< FLASH status register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< FLASH control register, Address offset: 0x10 */ + __IO uint32_t OPTCR; /*!< FLASH option control register , Address offset: 0x14 */ + __IO uint32_t OPTCR1; /*!< FLASH option control register 1 , Address offset: 0x18 */ +} FLASH_TypeDef; + + + +/** + * @brief Flexible Memory Controller + */ + +typedef struct +{ + __IO uint32_t BTCR[8]; /*!< NOR/PSRAM chip-select control register(BCR) and chip-select timing register(BTR), Address offset: 0x00-1C */ +} FMC_Bank1_TypeDef; + +/** + * @brief Flexible Memory Controller Bank1E + */ + +typedef struct +{ + __IO uint32_t BWTR[7]; /*!< NOR/PSRAM write timing registers, Address offset: 0x104-0x11C */ +} FMC_Bank1E_TypeDef; + +/** + * @brief Flexible Memory Controller Bank3 + */ + +typedef struct +{ + __IO uint32_t PCR; /*!< NAND Flash control register, Address offset: 0x80 */ + __IO uint32_t SR; /*!< NAND Flash FIFO status and interrupt register, Address offset: 0x84 */ + __IO uint32_t PMEM; /*!< NAND Flash Common memory space timing register, Address offset: 0x88 */ + __IO uint32_t PATT; /*!< NAND Flash Attribute memory space timing register, Address offset: 0x8C */ + uint32_t RESERVED0; /*!< Reserved, 0x90 */ + __IO uint32_t ECCR; /*!< NAND Flash ECC result registers, Address offset: 0x94 */ +} FMC_Bank3_TypeDef; + +/** + * @brief Flexible Memory Controller Bank5_6 + */ + +typedef struct +{ + __IO uint32_t SDCR[2]; /*!< SDRAM Control registers , Address offset: 0x140-0x144 */ + __IO uint32_t SDTR[2]; /*!< SDRAM Timing registers , Address offset: 0x148-0x14C */ + __IO uint32_t SDCMR; /*!< SDRAM Command Mode register, Address offset: 0x150 */ + __IO uint32_t SDRTR; /*!< SDRAM Refresh Timer register, Address offset: 0x154 */ + __IO uint32_t SDSR; /*!< SDRAM Status register, Address offset: 0x158 */ +} FMC_Bank5_6_TypeDef; + + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */ + __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */ +} GPIO_TypeDef; + +/** + * @brief System configuration controller + */ + +typedef struct +{ + __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */ + __IO uint32_t PMC; /*!< SYSCFG peripheral mode configuration register, Address offset: 0x04 */ + __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */ + uint32_t RESERVED; /*!< Reserved, 0x18 */ + __IO uint32_t CBR; /*!< SYSCFG Class B register, Address offset: 0x1C */ + __IO uint32_t CMPCR; /*!< SYSCFG Compensation cell control register, Address offset: 0x20 */ +} SYSCFG_TypeDef; + +/** + * @brief Inter-integrated Circuit Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */ + __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */ + __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */ + __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */ + __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */ + __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */ + __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */ + __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */ + __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */ + __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */ +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */ + __IO uint32_t WINR; /*!< IWDG Window register, Address offset: 0x10 */ +} IWDG_TypeDef; + + +/** + * @brief LCD-TFT Display Controller + */ + +typedef struct +{ + uint32_t RESERVED0[2]; /*!< Reserved, 0x00-0x04 */ + __IO uint32_t SSCR; /*!< LTDC Synchronization Size Configuration Register, Address offset: 0x08 */ + __IO uint32_t BPCR; /*!< LTDC Back Porch Configuration Register, Address offset: 0x0C */ + __IO uint32_t AWCR; /*!< LTDC Active Width Configuration Register, Address offset: 0x10 */ + __IO uint32_t TWCR; /*!< LTDC Total Width Configuration Register, Address offset: 0x14 */ + __IO uint32_t GCR; /*!< LTDC Global Control Register, Address offset: 0x18 */ + uint32_t RESERVED1[2]; /*!< Reserved, 0x1C-0x20 */ + __IO uint32_t SRCR; /*!< LTDC Shadow Reload Configuration Register, Address offset: 0x24 */ + uint32_t RESERVED2[1]; /*!< Reserved, 0x28 */ + __IO uint32_t BCCR; /*!< LTDC Background Color Configuration Register, Address offset: 0x2C */ + uint32_t RESERVED3[1]; /*!< Reserved, 0x30 */ + __IO uint32_t IER; /*!< LTDC Interrupt Enable Register, Address offset: 0x34 */ + __IO uint32_t ISR; /*!< LTDC Interrupt Status Register, Address offset: 0x38 */ + __IO uint32_t ICR; /*!< LTDC Interrupt Clear Register, Address offset: 0x3C */ + __IO uint32_t LIPCR; /*!< LTDC Line Interrupt Position Configuration Register, Address offset: 0x40 */ + __IO uint32_t CPSR; /*!< LTDC Current Position Status Register, Address offset: 0x44 */ + __IO uint32_t CDSR; /*!< LTDC Current Display Status Register, Address offset: 0x48 */ +} LTDC_TypeDef; + +/** + * @brief LCD-TFT Display layer x Controller + */ + +typedef struct +{ + __IO uint32_t CR; /*!< LTDC Layerx Control Register Address offset: 0x84 */ + __IO uint32_t WHPCR; /*!< LTDC Layerx Window Horizontal Position Configuration Register Address offset: 0x88 */ + __IO uint32_t WVPCR; /*!< LTDC Layerx Window Vertical Position Configuration Register Address offset: 0x8C */ + __IO uint32_t CKCR; /*!< LTDC Layerx Color Keying Configuration Register Address offset: 0x90 */ + __IO uint32_t PFCR; /*!< LTDC Layerx Pixel Format Configuration Register Address offset: 0x94 */ + __IO uint32_t CACR; /*!< LTDC Layerx Constant Alpha Configuration Register Address offset: 0x98 */ + __IO uint32_t DCCR; /*!< LTDC Layerx Default Color Configuration Register Address offset: 0x9C */ + __IO uint32_t BFCR; /*!< LTDC Layerx Blending Factors Configuration Register Address offset: 0xA0 */ + uint32_t RESERVED0[2]; /*!< Reserved */ + __IO uint32_t CFBAR; /*!< LTDC Layerx Color Frame Buffer Address Register Address offset: 0xAC */ + __IO uint32_t CFBLR; /*!< LTDC Layerx Color Frame Buffer Length Register Address offset: 0xB0 */ + __IO uint32_t CFBLNR; /*!< LTDC Layerx ColorFrame Buffer Line Number Register Address offset: 0xB4 */ + uint32_t RESERVED1[3]; /*!< Reserved */ + __IO uint32_t CLUTWR; /*!< LTDC Layerx CLUT Write Register Address offset: 0x144 */ + +} LTDC_Layer_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< PWR power control register 1, Address offset: 0x00 */ + __IO uint32_t CSR1; /*!< PWR power control/status register 2, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< PWR power control register 2, Address offset: 0x08 */ + __IO uint32_t CSR2; /*!< PWR power control/status register 2, Address offset: 0x0C */ +} PWR_TypeDef; + + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32_t PLLCFGR; /*!< RCC PLL configuration register, Address offset: 0x04 */ + __IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */ + __IO uint32_t CIR; /*!< RCC clock interrupt register, Address offset: 0x0C */ + __IO uint32_t AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x10 */ + __IO uint32_t AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x14 */ + __IO uint32_t AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x18 */ + uint32_t RESERVED0; /*!< Reserved, 0x1C */ + __IO uint32_t APB1RSTR; /*!< RCC APB1 peripheral reset register, Address offset: 0x20 */ + __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x24 */ + uint32_t RESERVED1[2]; /*!< Reserved, 0x28-0x2C */ + __IO uint32_t AHB1ENR; /*!< RCC AHB1 peripheral clock register, Address offset: 0x30 */ + __IO uint32_t AHB2ENR; /*!< RCC AHB2 peripheral clock register, Address offset: 0x34 */ + __IO uint32_t AHB3ENR; /*!< RCC AHB3 peripheral clock register, Address offset: 0x38 */ + uint32_t RESERVED2; /*!< Reserved, 0x3C */ + __IO uint32_t APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x40 */ + __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clock enable register, Address offset: 0x44 */ + uint32_t RESERVED3[2]; /*!< Reserved, 0x48-0x4C */ + __IO uint32_t AHB1LPENR; /*!< RCC AHB1 peripheral clock enable in low power mode register, Address offset: 0x50 */ + __IO uint32_t AHB2LPENR; /*!< RCC AHB2 peripheral clock enable in low power mode register, Address offset: 0x54 */ + __IO uint32_t AHB3LPENR; /*!< RCC AHB3 peripheral clock enable in low power mode register, Address offset: 0x58 */ + uint32_t RESERVED4; /*!< Reserved, 0x5C */ + __IO uint32_t APB1LPENR; /*!< RCC APB1 peripheral clock enable in low power mode register, Address offset: 0x60 */ + __IO uint32_t APB2LPENR; /*!< RCC APB2 peripheral clock enable in low power mode register, Address offset: 0x64 */ + uint32_t RESERVED5[2]; /*!< Reserved, 0x68-0x6C */ + __IO uint32_t BDCR; /*!< RCC Backup domain control register, Address offset: 0x70 */ + __IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x74 */ + uint32_t RESERVED6[2]; /*!< Reserved, 0x78-0x7C */ + __IO uint32_t SSCGR; /*!< RCC spread spectrum clock generation register, Address offset: 0x80 */ + __IO uint32_t PLLI2SCFGR; /*!< RCC PLLI2S configuration register, Address offset: 0x84 */ + __IO uint32_t PLLSAICFGR; /*!< RCC PLLSAI configuration register, Address offset: 0x88 */ + __IO uint32_t DCKCFGR1; /*!< RCC Dedicated Clocks configuration register1, Address offset: 0x8C */ + __IO uint32_t DCKCFGR2; /*!< RCC Dedicated Clocks configuration register 2, Address offset: 0x90 */ + +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ + +typedef struct +{ + __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */ + __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */ + __IO uint32_t CR; /*!< RTC control register, Address offset: 0x08 */ + __IO uint32_t ISR; /*!< RTC initialization and status register, Address offset: 0x0C */ + __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */ + __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */ + uint32_t reserved; /*!< Reserved */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x1C */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x28 */ + __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */ + __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */ + __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */ + __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */ + __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x3C */ + __IO uint32_t TAMPCR; /*!< RTC tamper configuration register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x48 */ + __IO uint32_t OR; /*!< RTC option register, Address offset: 0x4C */ + __IO uint32_t BKP0R; /*!< RTC backup register 0, Address offset: 0x50 */ + __IO uint32_t BKP1R; /*!< RTC backup register 1, Address offset: 0x54 */ + __IO uint32_t BKP2R; /*!< RTC backup register 2, Address offset: 0x58 */ + __IO uint32_t BKP3R; /*!< RTC backup register 3, Address offset: 0x5C */ + __IO uint32_t BKP4R; /*!< RTC backup register 4, Address offset: 0x60 */ + __IO uint32_t BKP5R; /*!< RTC backup register 5, Address offset: 0x64 */ + __IO uint32_t BKP6R; /*!< RTC backup register 6, Address offset: 0x68 */ + __IO uint32_t BKP7R; /*!< RTC backup register 7, Address offset: 0x6C */ + __IO uint32_t BKP8R; /*!< RTC backup register 8, Address offset: 0x70 */ + __IO uint32_t BKP9R; /*!< RTC backup register 9, Address offset: 0x74 */ + __IO uint32_t BKP10R; /*!< RTC backup register 10, Address offset: 0x78 */ + __IO uint32_t BKP11R; /*!< RTC backup register 11, Address offset: 0x7C */ + __IO uint32_t BKP12R; /*!< RTC backup register 12, Address offset: 0x80 */ + __IO uint32_t BKP13R; /*!< RTC backup register 13, Address offset: 0x84 */ + __IO uint32_t BKP14R; /*!< RTC backup register 14, Address offset: 0x88 */ + __IO uint32_t BKP15R; /*!< RTC backup register 15, Address offset: 0x8C */ + __IO uint32_t BKP16R; /*!< RTC backup register 16, Address offset: 0x90 */ + __IO uint32_t BKP17R; /*!< RTC backup register 17, Address offset: 0x94 */ + __IO uint32_t BKP18R; /*!< RTC backup register 18, Address offset: 0x98 */ + __IO uint32_t BKP19R; /*!< RTC backup register 19, Address offset: 0x9C */ + __IO uint32_t BKP20R; /*!< RTC backup register 20, Address offset: 0xA0 */ + __IO uint32_t BKP21R; /*!< RTC backup register 21, Address offset: 0xA4 */ + __IO uint32_t BKP22R; /*!< RTC backup register 22, Address offset: 0xA8 */ + __IO uint32_t BKP23R; /*!< RTC backup register 23, Address offset: 0xAC */ + __IO uint32_t BKP24R; /*!< RTC backup register 24, Address offset: 0xB0 */ + __IO uint32_t BKP25R; /*!< RTC backup register 25, Address offset: 0xB4 */ + __IO uint32_t BKP26R; /*!< RTC backup register 26, Address offset: 0xB8 */ + __IO uint32_t BKP27R; /*!< RTC backup register 27, Address offset: 0xBC */ + __IO uint32_t BKP28R; /*!< RTC backup register 28, Address offset: 0xC0 */ + __IO uint32_t BKP29R; /*!< RTC backup register 29, Address offset: 0xC4 */ + __IO uint32_t BKP30R; /*!< RTC backup register 30, Address offset: 0xC8 */ + __IO uint32_t BKP31R; /*!< RTC backup register 31, Address offset: 0xCC */ +} RTC_TypeDef; + + +/** + * @brief Serial Audio Interface + */ + +typedef struct +{ + __IO uint32_t GCR; /*!< SAI global configuration register, Address offset: 0x00 */ +} SAI_TypeDef; + +typedef struct +{ + __IO uint32_t CR1; /*!< SAI block x configuration register 1, Address offset: 0x04 */ + __IO uint32_t CR2; /*!< SAI block x configuration register 2, Address offset: 0x08 */ + __IO uint32_t FRCR; /*!< SAI block x frame configuration register, Address offset: 0x0C */ + __IO uint32_t SLOTR; /*!< SAI block x slot register, Address offset: 0x10 */ + __IO uint32_t IMR; /*!< SAI block x interrupt mask register, Address offset: 0x14 */ + __IO uint32_t SR; /*!< SAI block x status register, Address offset: 0x18 */ + __IO uint32_t CLRFR; /*!< SAI block x clear flag register, Address offset: 0x1C */ + __IO uint32_t DR; /*!< SAI block x data register, Address offset: 0x20 */ +} SAI_Block_TypeDef; + +/** + * @brief SPDIF-RX Interface + */ + +typedef struct +{ + __IO uint32_t CR; /*!< Control register, Address offset: 0x00 */ + __IO uint32_t IMR; /*!< Interrupt mask register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< Status register, Address offset: 0x08 */ + __IO uint32_t IFCR; /*!< Interrupt Flag Clear register, Address offset: 0x0C */ + __IO uint32_t DR; /*!< Data input register, Address offset: 0x10 */ + __IO uint32_t CSR; /*!< Channel Status register, Address offset: 0x14 */ + __IO uint32_t DIR; /*!< Debug Information register, Address offset: 0x18 */ +} SPDIFRX_TypeDef; + +/** + * @brief SD host Interface + */ + +typedef struct +{ + __IO uint32_t POWER; /*!< SDMMC power control register, Address offset: 0x00 */ + __IO uint32_t CLKCR; /*!< SDMMClock control register, Address offset: 0x04 */ + __IO uint32_t ARG; /*!< SDMMC argument register, Address offset: 0x08 */ + __IO uint32_t CMD; /*!< SDMMC command register, Address offset: 0x0C */ + __I uint32_t RESPCMD; /*!< SDMMC command response register, Address offset: 0x10 */ + __I uint32_t RESP1; /*!< SDMMC response 1 register, Address offset: 0x14 */ + __I uint32_t RESP2; /*!< SDMMC response 2 register, Address offset: 0x18 */ + __I uint32_t RESP3; /*!< SDMMC response 3 register, Address offset: 0x1C */ + __I uint32_t RESP4; /*!< SDMMC response 4 register, Address offset: 0x20 */ + __IO uint32_t DTIMER; /*!< SDMMC data timer register, Address offset: 0x24 */ + __IO uint32_t DLEN; /*!< SDMMC data length register, Address offset: 0x28 */ + __IO uint32_t DCTRL; /*!< SDMMC data control register, Address offset: 0x2C */ + __I uint32_t DCOUNT; /*!< SDMMC data counter register, Address offset: 0x30 */ + __I uint32_t STA; /*!< SDMMC status register, Address offset: 0x34 */ + __IO uint32_t ICR; /*!< SDMMC interrupt clear register, Address offset: 0x38 */ + __IO uint32_t MASK; /*!< SDMMC mask register, Address offset: 0x3C */ + uint32_t RESERVED0[2]; /*!< Reserved, 0x40-0x44 */ + __I uint32_t FIFOCNT; /*!< SDMMC FIFO counter register, Address offset: 0x48 */ + uint32_t RESERVED1[13]; /*!< Reserved, 0x4C-0x7C */ + __IO uint32_t FIFO; /*!< SDMMC data FIFO register, Address offset: 0x80 */ +} SDMMC_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< SPI control register 1 (not used in I2S mode), Address offset: 0x00 */ + __IO uint32_t CR2; /*!< SPI control register 2, Address offset: 0x04 */ + __IO uint32_t SR; /*!< SPI status register, Address offset: 0x08 */ + __IO uint32_t DR; /*!< SPI data register, Address offset: 0x0C */ + __IO uint32_t CRCPR; /*!< SPI CRC polynomial register (not used in I2S mode), Address offset: 0x10 */ + __IO uint32_t RXCRCR; /*!< SPI RX CRC register (not used in I2S mode), Address offset: 0x14 */ + __IO uint32_t TXCRCR; /*!< SPI TX CRC register (not used in I2S mode), Address offset: 0x18 */ + __IO uint32_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ + __IO uint32_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ +} SPI_TypeDef; + +/** + * @brief QUAD Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR; /*!< QUADSPI Control register, Address offset: 0x00 */ + __IO uint32_t DCR; /*!< QUADSPI Device Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< QUADSPI Status register, Address offset: 0x08 */ + __IO uint32_t FCR; /*!< QUADSPI Flag Clear register, Address offset: 0x0C */ + __IO uint32_t DLR; /*!< QUADSPI Data Length register, Address offset: 0x10 */ + __IO uint32_t CCR; /*!< QUADSPI Communication Configuration register, Address offset: 0x14 */ + __IO uint32_t AR; /*!< QUADSPI Address register, Address offset: 0x18 */ + __IO uint32_t ABR; /*!< QUADSPI Alternate Bytes register, Address offset: 0x1C */ + __IO uint32_t DR; /*!< QUADSPI Data register, Address offset: 0x20 */ + __IO uint32_t PSMKR; /*!< QUADSPI Polling Status Mask register, Address offset: 0x24 */ + __IO uint32_t PSMAR; /*!< QUADSPI Polling Status Match register, Address offset: 0x28 */ + __IO uint32_t PIR; /*!< QUADSPI Polling Interval register, Address offset: 0x2C */ + __IO uint32_t LPTR; /*!< QUADSPI Low Power Timeout register, Address offset: 0x30 */ +} QUADSPI_TypeDef; + +/** + * @brief TIM + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */ + __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */ + __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */ + __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */ + __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */ + __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */ + __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */ + __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */ + __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */ + __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */ + __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */ + __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */ + __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */ + __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */ + __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */ + __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */ + __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */ + __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x48 */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */ + __IO uint32_t OR; /*!< TIM option register, Address offset: 0x50 */ + __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x54 */ + __IO uint32_t CCR5; /*!< TIM capture/compare mode register5, Address offset: 0x58 */ + __IO uint32_t CCR6; /*!< TIM capture/compare mode register6, Address offset: 0x5C */ + __IO uint32_t AF1; /*!< TIM Alternate function option register 1, Address offset: 0x60 */ + __IO uint32_t AF2; /*!< TIM Alternate function option register 2, Address offset: 0x64 */ + +} TIM_TypeDef; + +/** + * @brief LPTIMIMER + */ +typedef struct +{ + __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */ + __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */ + __IO uint32_t IER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */ + __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */ + __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */ + __IO uint32_t CMP; /*!< LPTIM Compare register, Address offset: 0x14 */ + __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */ + __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */ +} LPTIM_TypeDef; + + +/** + * @brief Universal Synchronous Asynchronous Receiver Transmitter + */ + +typedef struct +{ + __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */ + __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */ + __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */ + __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */ + __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */ + __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */ + __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */ + __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */ + __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */ + __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */ + __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */ +} USART_TypeDef; + + +/** + * @brief Window WATCHDOG + */ + +typedef struct +{ + __IO uint32_t CR; /*!< WWDG Control register, Address offset: 0x00 */ + __IO uint32_t CFR; /*!< WWDG Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< WWDG Status register, Address offset: 0x08 */ +} WWDG_TypeDef; + + +/** + * @brief RNG + */ + +typedef struct +{ + __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */ + __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */ + __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */ +} RNG_TypeDef; + +/** + * @} + */ + +/** + * @brief USB_OTG_Core_Registers + */ +typedef struct +{ + __IO uint32_t GOTGCTL; /*!< USB_OTG Control and Status Register 000h */ + __IO uint32_t GOTGINT; /*!< USB_OTG Interrupt Register 004h */ + __IO uint32_t GAHBCFG; /*!< Core AHB Configuration Register 008h */ + __IO uint32_t GUSBCFG; /*!< Core USB Configuration Register 00Ch */ + __IO uint32_t GRSTCTL; /*!< Core Reset Register 010h */ + __IO uint32_t GINTSTS; /*!< Core Interrupt Register 014h */ + __IO uint32_t GINTMSK; /*!< Core Interrupt Mask Register 018h */ + __IO uint32_t GRXSTSR; /*!< Receive Sts Q Read Register 01Ch */ + __IO uint32_t GRXSTSP; /*!< Receive Sts Q Read & POP Register 020h */ + __IO uint32_t GRXFSIZ; /*!< Receive FIFO Size Register 024h */ + __IO uint32_t DIEPTXF0_HNPTXFSIZ; /*!< EP0 / Non Periodic Tx FIFO Size Register 028h */ + __IO uint32_t HNPTXSTS; /*!< Non Periodic Tx FIFO/Queue Sts reg 02Ch */ + uint32_t Reserved30[2]; /*!< Reserved 030h */ + __IO uint32_t GCCFG; /*!< General Purpose IO Register 038h */ + __IO uint32_t CID; /*!< User ID Register 03Ch */ + uint32_t Reserved5[3]; /*!< Reserved 040h-048h */ + __IO uint32_t GHWCFG3; /*!< User HW config3 04Ch */ + uint32_t Reserved6; /*!< Reserved 050h */ + __IO uint32_t GLPMCFG; /*!< LPM Register 054h */ + uint32_t Reserved7; /*!< Reserved 058h */ + __IO uint32_t GDFIFOCFG; /*!< DFIFO Software Config Register 05Ch */ + uint32_t Reserved43[40]; /*!< Reserved 60h-0FFh */ + __IO uint32_t HPTXFSIZ; /*!< Host Periodic Tx FIFO Size Reg 100h */ + __IO uint32_t DIEPTXF[0x0F]; /*!< dev Periodic Transmit FIFO 104h-13Ch */ +} USB_OTG_GlobalTypeDef; + + +/** + * @brief USB_OTG_device_Registers + */ +typedef struct +{ + __IO uint32_t DCFG; /*!< dev Configuration Register 800h */ + __IO uint32_t DCTL; /*!< dev Control Register 804h */ + __IO uint32_t DSTS; /*!< dev Status Register (RO) 808h */ + uint32_t Reserved0C; /*!< Reserved 80Ch */ + __IO uint32_t DIEPMSK; /*!< dev IN Endpoint Mask 810h */ + __IO uint32_t DOEPMSK; /*!< dev OUT Endpoint Mask 814h */ + __IO uint32_t DAINT; /*!< dev All Endpoints Itr Reg 818h */ + __IO uint32_t DAINTMSK; /*!< dev All Endpoints Itr Mask 81Ch */ + uint32_t Reserved20; /*!< Reserved 820h */ + uint32_t Reserved9; /*!< Reserved 824h */ + __IO uint32_t DVBUSDIS; /*!< dev VBUS discharge Register 828h */ + __IO uint32_t DVBUSPULSE; /*!< dev VBUS Pulse Register 82Ch */ + __IO uint32_t DTHRCTL; /*!< dev threshold 830h */ + __IO uint32_t DIEPEMPMSK; /*!< dev empty msk 834h */ + __IO uint32_t DEACHINT; /*!< dedicated EP interrupt 838h */ + __IO uint32_t DEACHMSK; /*!< dedicated EP msk 83Ch */ + uint32_t Reserved40; /*!< dedicated EP mask 840h */ + __IO uint32_t DINEP1MSK; /*!< dedicated EP mask 844h */ + uint32_t Reserved44[15]; /*!< Reserved 844-87Ch */ + __IO uint32_t DOUTEP1MSK; /*!< dedicated EP msk 884h */ +} USB_OTG_DeviceTypeDef; + + +/** + * @brief USB_OTG_IN_Endpoint-Specific_Register + */ +typedef struct +{ + __IO uint32_t DIEPCTL; /*!< dev IN Endpoint Control Reg 900h + (ep_num * 20h) + 00h */ + uint32_t Reserved04; /*!< Reserved 900h + (ep_num * 20h) + 04h */ + __IO uint32_t DIEPINT; /*!< dev IN Endpoint Itr Reg 900h + (ep_num * 20h) + 08h */ + uint32_t Reserved0C; /*!< Reserved 900h + (ep_num * 20h) + 0Ch */ + __IO uint32_t DIEPTSIZ; /*!< IN Endpoint Txfer Size 900h + (ep_num * 20h) + 10h */ + __IO uint32_t DIEPDMA; /*!< IN Endpoint DMA Address Reg 900h + (ep_num * 20h) + 14h */ + __IO uint32_t DTXFSTS; /*!< IN Endpoint Tx FIFO Status Reg 900h + (ep_num * 20h) + 18h */ + uint32_t Reserved18; /*!< Reserved 900h+(ep_num*20h)+1Ch-900h+ (ep_num * 20h) + 1Ch */ +} USB_OTG_INEndpointTypeDef; + + +/** + * @brief USB_OTG_OUT_Endpoint-Specific_Registers + */ +typedef struct +{ + __IO uint32_t DOEPCTL; /*!< dev OUT Endpoint Control Reg B00h + (ep_num * 20h) + 00h */ + uint32_t Reserved04; /*!< Reserved B00h + (ep_num * 20h) + 04h */ + __IO uint32_t DOEPINT; /*!< dev OUT Endpoint Itr Reg B00h + (ep_num * 20h) + 08h */ + uint32_t Reserved0C; /*!< Reserved B00h + (ep_num * 20h) + 0Ch */ + __IO uint32_t DOEPTSIZ; /*!< dev OUT Endpoint Txfer Size B00h + (ep_num * 20h) + 10h */ + __IO uint32_t DOEPDMA; /*!< dev OUT Endpoint DMA Address B00h + (ep_num * 20h) + 14h */ + uint32_t Reserved18[2]; /*!< Reserved B00h + (ep_num * 20h) + 18h - B00h + (ep_num * 20h) + 1Ch */ +} USB_OTG_OUTEndpointTypeDef; + + +/** + * @brief USB_OTG_Host_Mode_Register_Structures + */ +typedef struct +{ + __IO uint32_t HCFG; /*!< Host Configuration Register 400h */ + __IO uint32_t HFIR; /*!< Host Frame Interval Register 404h */ + __IO uint32_t HFNUM; /*!< Host Frame Nbr/Frame Remaining 408h */ + uint32_t Reserved40C; /*!< Reserved 40Ch */ + __IO uint32_t HPTXSTS; /*!< Host Periodic Tx FIFO/ Queue Status 410h */ + __IO uint32_t HAINT; /*!< Host All Channels Interrupt Register 414h */ + __IO uint32_t HAINTMSK; /*!< Host All Channels Interrupt Mask 418h */ +} USB_OTG_HostTypeDef; + +/** + * @brief USB_OTG_Host_Channel_Specific_Registers + */ +typedef struct +{ + __IO uint32_t HCCHAR; /*!< Host Channel Characteristics Register 500h */ + __IO uint32_t HCSPLT; /*!< Host Channel Split Control Register 504h */ + __IO uint32_t HCINT; /*!< Host Channel Interrupt Register 508h */ + __IO uint32_t HCINTMSK; /*!< Host Channel Interrupt Mask Register 50Ch */ + __IO uint32_t HCTSIZ; /*!< Host Channel Transfer Size Register 510h */ + __IO uint32_t HCDMA; /*!< Host Channel DMA Address Register 514h */ + uint32_t Reserved[2]; /*!< Reserved */ +} USB_OTG_HostChannelTypeDef; +/** + * @} + */ + +/** + * @brief JPEG Codec + */ +typedef struct +{ + __IO uint32_t CONFR0; /*!< JPEG Codec Control Register (JPEG_CONFR0), Address offset: 00h */ + __IO uint32_t CONFR1; /*!< JPEG Codec Control Register (JPEG_CONFR1), Address offset: 04h */ + __IO uint32_t CONFR2; /*!< JPEG Codec Control Register (JPEG_CONFR2), Address offset: 08h */ + __IO uint32_t CONFR3; /*!< JPEG Codec Control Register (JPEG_CONFR3), Address offset: 0Ch */ + __IO uint32_t CONFR4; /*!< JPEG Codec Control Register (JPEG_CONFR4), Address offset: 10h */ + __IO uint32_t CONFR5; /*!< JPEG Codec Control Register (JPEG_CONFR5), Address offset: 14h */ + __IO uint32_t CONFR6; /*!< JPEG Codec Control Register (JPEG_CONFR6), Address offset: 18h */ + __IO uint32_t CONFR7; /*!< JPEG Codec Control Register (JPEG_CONFR7), Address offset: 1Ch */ + uint32_t Reserved20[4]; /* Reserved Address offset: 20h-2Ch */ + __IO uint32_t CR; /*!< JPEG Control Register (JPEG_CR), Address offset: 30h */ + __IO uint32_t SR; /*!< JPEG Status Register (JPEG_SR), Address offset: 34h */ + __IO uint32_t CFR; /*!< JPEG Clear Flag Register (JPEG_CFR), Address offset: 38h */ + uint32_t Reserved3c; /* Reserved Address offset: 3Ch */ + __IO uint32_t DIR; /*!< JPEG Data Input Register (JPEG_DIR), Address offset: 40h */ + __IO uint32_t DOR; /*!< JPEG Data Output Register (JPEG_DOR), Address offset: 44h */ + uint32_t Reserved48[2]; /* Reserved Address offset: 48h-4Ch */ + __IO uint32_t QMEM0[16]; /*!< JPEG quantization tables 0, Address offset: 50h-8Ch */ + __IO uint32_t QMEM1[16]; /*!< JPEG quantization tables 1, Address offset: 90h-CCh */ + __IO uint32_t QMEM2[16]; /*!< JPEG quantization tables 2, Address offset: D0h-10Ch */ + __IO uint32_t QMEM3[16]; /*!< JPEG quantization tables 3, Address offset: 110h-14Ch */ + __IO uint32_t HUFFMIN[16]; /*!< JPEG HuffMin tables, Address offset: 150h-18Ch */ + __IO uint32_t HUFFBASE[32]; /*!< JPEG HuffSymb tables, Address offset: 190h-20Ch */ + __IO uint32_t HUFFSYMB[84]; /*!< JPEG HUFFSYMB tables, Address offset: 210h-35Ch */ + __IO uint32_t DHTMEM[103]; /*!< JPEG DHTMem tables, Address offset: 360h-4F8h */ + uint32_t Reserved4FC; /* Reserved Address offset: 4FCh */ + __IO uint32_t HUFFENC_AC0[88]; /*!< JPEG encoder, AC Huffman table 0, Address offset: 500h-65Ch */ + __IO uint32_t HUFFENC_AC1[88]; /*!< JPEG encoder, AC Huffman table 1, Address offset: 660h-7BCh */ + __IO uint32_t HUFFENC_DC0[8]; /*!< JPEG encoder, DC Huffman table 0, Address offset: 7C0h-7DCh */ + __IO uint32_t HUFFENC_DC1[8]; /*!< JPEG encoder, DC Huffman table 1, Address offset: 7E0h-7FCh */ + +} JPEG_TypeDef; + +/** + * @brief MDIOS + */ + +typedef struct +{ + __IO uint32_t CR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 00h */ + __IO uint32_t WRFR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 04h */ + __IO uint32_t CWRFR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 08h */ + __IO uint32_t RDFR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 0Ch */ + __IO uint32_t CRDFR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 10h */ + __IO uint32_t SR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 14h */ + __IO uint32_t CLRFR; /*!< MDIOS Configuration Register (MDIOS_CR), Address offset: 18h */ + uint32_t RESERVED0[57]; /* Reserved Address offset: 1Ch */ + __IO uint32_t DINR0; /*!< MDIOS Input Data Register (MDIOS_DINR0), Address offset: 100h */ + __IO uint32_t DINR1; /*!< MDIOS Input Data Register (MDIOS_DINR1), Address offset: 104h */ + __IO uint32_t DINR2; /*!< MDIOS Input Data Register (MDIOS_DINR2), Address offset: 108h */ + __IO uint32_t DINR3; /*!< MDIOS Input Data Register (MDIOS_DINR3), Address offset: 10Ch */ + __IO uint32_t DINR4; /*!< MDIOS Input Data Register (MDIOS_DINR4), Address offset: 110h */ + __IO uint32_t DINR5; /*!< MDIOS Input Data Register (MDIOS_DINR5), Address offset: 114h */ + __IO uint32_t DINR6; /*!< MDIOS Input Data Register (MDIOS_DINR6), Address offset: 118h */ + __IO uint32_t DINR7; /*!< MDIOS Input Data Register (MDIOS_DINR7), Address offset: 11Ch */ + __IO uint32_t DINR8; /*!< MDIOS Input Data Register (MDIOS_DINR8), Address offset: 120h */ + __IO uint32_t DINR9; /*!< MDIOS Input Data Register (MDIOS_DINR9), Address offset: 124h */ + __IO uint32_t DINR10; /*!< MDIOS Input Data Register (MDIOS_DINR10), Address offset: 128h */ + __IO uint32_t DINR11; /*!< MDIOS Input Data Register (MDIOS_DINR11), Address offset: 12Ch */ + __IO uint32_t DINR12; /*!< MDIOS Input Data Register (MDIOS_DINR12), Address offset: 130h */ + __IO uint32_t DINR13; /*!< MDIOS Input Data Register (MDIOS_DINR13), Address offset: 134h */ + __IO uint32_t DINR14; /*!< MDIOS Input Data Register (MDIOS_DINR14), Address offset: 138h */ + __IO uint32_t DINR15; /*!< MDIOS Input Data Register (MDIOS_DINR15), Address offset: 13Ch */ + __IO uint32_t DINR16; /*!< MDIOS Input Data Register (MDIOS_DINR16), Address offset: 140h */ + __IO uint32_t DINR17; /*!< MDIOS Input Data Register (MDIOS_DINR17), Address offset: 144h */ + __IO uint32_t DINR18; /*!< MDIOS Input Data Register (MDIOS_DINR18), Address offset: 148h */ + __IO uint32_t DINR19; /*!< MDIOS Input Data Register (MDIOS_DINR19), Address offset: 14Ch */ + __IO uint32_t DINR20; /*!< MDIOS Input Data Register (MDIOS_DINR20), Address offset: 150h */ + __IO uint32_t DINR21; /*!< MDIOS Input Data Register (MDIOS_DINR21), Address offset: 154h */ + __IO uint32_t DINR22; /*!< MDIOS Input Data Register (MDIOS_DINR22), Address offset: 158h */ + __IO uint32_t DINR23; /*!< MDIOS Input Data Register (MDIOS_DINR23), Address offset: 15Ch */ + __IO uint32_t DINR24; /*!< MDIOS Input Data Register (MDIOS_DINR24), Address offset: 160h */ + __IO uint32_t DINR25; /*!< MDIOS Input Data Register (MDIOS_DINR25), Address offset: 164h */ + __IO uint32_t DINR26; /*!< MDIOS Input Data Register (MDIOS_DINR26), Address offset: 168h */ + __IO uint32_t DINR27; /*!< MDIOS Input Data Register (MDIOS_DINR27), Address offset: 16Ch */ + __IO uint32_t DINR28; /*!< MDIOS Input Data Register (MDIOS_DINR28), Address offset: 170h */ + __IO uint32_t DINR29; /*!< MDIOS Input Data Register (MDIOS_DINR29), Address offset: 174h */ + __IO uint32_t DINR30; /*!< MDIOS Input Data Register (MDIOS_DINR30), Address offset: 178h */ + __IO uint32_t DINR31; /*!< MDIOS Input Data Register (MDIOS_DINR31), Address offset: 17Ch */ + __IO uint32_t DOUTR0; /*!< MDIOS Output Data Register (MDIOS_DOUTR0), Address offset: 180h */ + __IO uint32_t DOUTR1; /*!< MDIOS Output Data Register (MDIOS_DOUTR1), Address offset: 184h */ + __IO uint32_t DOUTR2; /*!< MDIOS Output Data Register (MDIOS_DOUTR2), Address offset: 188h */ + __IO uint32_t DOUTR3; /*!< MDIOS Output Data Register (MDIOS_DOUTR3), Address offset: 18Ch */ + __IO uint32_t DOUTR4; /*!< MDIOS Output Data Register (MDIOS_DOUTR4), Address offset: 190h */ + __IO uint32_t DOUTR5; /*!< MDIOS Output Data Register (MDIOS_DOUTR5), Address offset: 194h */ + __IO uint32_t DOUTR6; /*!< MDIOS Output Data Register (MDIOS_DOUTR6), Address offset: 198h */ + __IO uint32_t DOUTR7; /*!< MDIOS Output Data Register (MDIOS_DOUTR7), Address offset: 19Ch */ + __IO uint32_t DOUTR8; /*!< MDIOS Output Data Register (MDIOS_DOUTR8), Address offset: 1A0h */ + __IO uint32_t DOUTR9; /*!< MDIOS Output Data Register (MDIOS_DOUTR9), Address offset: 1A4h */ + __IO uint32_t DOUTR10; /*!< MDIOS Output Data Register (MDIOS_DOUTR10), Address offset: 1A8h */ + __IO uint32_t DOUTR11; /*!< MDIOS Output Data Register (MDIOS_DOUTR11), Address offset: 1ACh */ + __IO uint32_t DOUTR12; /*!< MDIOS Output Data Register (MDIOS_DOUTR12), Address offset: 1B0h */ + __IO uint32_t DOUTR13; /*!< MDIOS Output Data Register (MDIOS_DOUTR13), Address offset: 1B4h */ + __IO uint32_t DOUTR14; /*!< MDIOS Output Data Register (MDIOS_DOUTR14), Address offset: 1B8h */ + __IO uint32_t DOUTR15; /*!< MDIOS Output Data Register (MDIOS_DOUTR15), Address offset: 1BCh */ + __IO uint32_t DOUTR16; /*!< MDIOS Output Data Register (MDIOS_DOUTR16), Address offset: 1C0h */ + __IO uint32_t DOUTR17; /*!< MDIOS Output Data Register (MDIOS_DOUTR17), Address offset: 1C4h */ + __IO uint32_t DOUTR18; /*!< MDIOS Output Data Register (MDIOS_DOUTR18), Address offset: 1C8h */ + __IO uint32_t DOUTR19; /*!< MDIOS Output Data Register (MDIOS_DOUTR19), Address offset: 1CCh */ + __IO uint32_t DOUTR20; /*!< MDIOS Output Data Register (MDIOS_DOUTR20), Address offset: 1D0h */ + __IO uint32_t DOUTR21; /*!< MDIOS Output Data Register (MDIOS_DOUTR21), Address offset: 1D4h */ + __IO uint32_t DOUTR22; /*!< MDIOS Output Data Register (MDIOS_DOUTR22), Address offset: 1D8h */ + __IO uint32_t DOUTR23; /*!< MDIOS Output Data Register (MDIOS_DOUTR23), Address offset: 1DCh */ + __IO uint32_t DOUTR24; /*!< MDIOS Output Data Register (MDIOS_DOUTR24), Address offset: 1E0h */ + __IO uint32_t DOUTR25; /*!< MDIOS Output Data Register (MDIOS_DOUTR25), Address offset: 1E4h */ + __IO uint32_t DOUTR26; /*!< MDIOS Output Data Register (MDIOS_DOUTR26), Address offset: 1E8h */ + __IO uint32_t DOUTR27; /*!< MDIOS Output Data Register (MDIOS_DOUTR27), Address offset: 1ECh */ + __IO uint32_t DOUTR28; /*!< MDIOS Output Data Register (MDIOS_DOUTR28), Address offset: 1F0h */ + __IO uint32_t DOUTR29; /*!< MDIOS Output Data Register (MDIOS_DOUTR29), Address offset: 1F4h */ + __IO uint32_t DOUTR30; /*!< MDIOS Output Data Register (MDIOS_DOUTR30), Address offset: 1F8h */ + __IO uint32_t DOUTR31; /*!< MDIOS Output Data Register (MDIOS_DOUTR31), Address offset: 1FCh */ +} MDIOS_TypeDef; + + +/** @addtogroup Peripheral_memory_map + * @{ + */ +#define RAMITCM_BASE 0x00000000UL /*!< Base address of : 16KB RAM reserved for CPU execution/instruction accessible over ITCM */ +#define FLASHITCM_BASE 0x00200000UL /*!< Base address of : (up to 2 MB) embedded FLASH memory accessible over ITCM */ +#define FLASHAXI_BASE 0x08000000UL /*!< Base address of : (up to 2 MB) embedded FLASH memory accessible over AXI */ +#define RAMDTCM_BASE 0x20000000UL /*!< Base address of : 128KB system data RAM accessible over DTCM */ +#define PERIPH_BASE 0x40000000UL /*!< Base address of : AHB/ABP Peripherals */ +#define BKPSRAM_BASE 0x40024000UL /*!< Base address of : Backup SRAM(4 KB) */ +#define QSPI_BASE 0x90000000UL /*!< Base address of : QSPI memories accessible over AXI */ +#define FMC_R_BASE 0xA0000000UL /*!< Base address of : FMC Control registers */ +#define QSPI_R_BASE 0xA0001000UL /*!< Base address of : QSPI Control registers */ +#define SRAM1_BASE 0x20020000UL /*!< Base address of : 368KB RAM1 accessible over AXI/AHB */ +#define SRAM2_BASE 0x2007C000UL /*!< Base address of : 16KB RAM2 accessible over AXI/AHB */ +#define FLASH_END 0x081FFFFFUL /*!< FLASH end address */ +#define FLASH_OTP_BASE 0x1FF0F000UL /*!< Base address of : (up to 1024 Bytes) embedded FLASH OTP Area */ +#define FLASH_OTP_END 0x1FF0F41FUL /*!< End address of : (up to 1024 Bytes) embedded FLASH OTP Area */ + +/* Legacy define */ +#define FLASH_BASE FLASHAXI_BASE + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL) +#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000UL) +#define AHB2PERIPH_BASE (PERIPH_BASE + 0x10000000UL) + +/*!< APB1 peripherals */ +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000UL) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400UL) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800UL) +#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00UL) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000UL) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400UL) +#define TIM12_BASE (APB1PERIPH_BASE + 0x1800UL) +#define TIM13_BASE (APB1PERIPH_BASE + 0x1C00UL) +#define TIM14_BASE (APB1PERIPH_BASE + 0x2000UL) +#define LPTIM1_BASE (APB1PERIPH_BASE + 0x2400UL) +#define RTC_BASE (APB1PERIPH_BASE + 0x2800UL) +#define WWDG_BASE (APB1PERIPH_BASE + 0x2C00UL) +#define IWDG_BASE (APB1PERIPH_BASE + 0x3000UL) +#define CAN3_BASE (APB1PERIPH_BASE + 0x3400UL) +#define SPI2_BASE (APB1PERIPH_BASE + 0x3800UL) +#define SPI3_BASE (APB1PERIPH_BASE + 0x3C00UL) +#define SPDIFRX_BASE (APB1PERIPH_BASE + 0x4000UL) +#define USART2_BASE (APB1PERIPH_BASE + 0x4400UL) +#define USART3_BASE (APB1PERIPH_BASE + 0x4800UL) +#define UART4_BASE (APB1PERIPH_BASE + 0x4C00UL) +#define UART5_BASE (APB1PERIPH_BASE + 0x5000UL) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400UL) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800UL) +#define I2C3_BASE (APB1PERIPH_BASE + 0x5C00UL) +#define I2C4_BASE (APB1PERIPH_BASE + 0x6000UL) +#define CAN1_BASE (APB1PERIPH_BASE + 0x6400UL) +#define CAN2_BASE (APB1PERIPH_BASE + 0x6800UL) +#define CEC_BASE (APB1PERIPH_BASE + 0x6C00UL) +#define PWR_BASE (APB1PERIPH_BASE + 0x7000UL) +#define DAC_BASE (APB1PERIPH_BASE + 0x7400UL) +#define UART7_BASE (APB1PERIPH_BASE + 0x7800UL) +#define UART8_BASE (APB1PERIPH_BASE + 0x7C00UL) + +/*!< APB2 peripherals */ +#define TIM1_BASE (APB2PERIPH_BASE + 0x0000UL) +#define TIM8_BASE (APB2PERIPH_BASE + 0x0400UL) +#define USART1_BASE (APB2PERIPH_BASE + 0x1000UL) +#define USART6_BASE (APB2PERIPH_BASE + 0x1400UL) +#define SDMMC2_BASE (APB2PERIPH_BASE + 0x1C00UL) +#define ADC1_BASE (APB2PERIPH_BASE + 0x2000UL) +#define ADC2_BASE (APB2PERIPH_BASE + 0x2100UL) +#define ADC3_BASE (APB2PERIPH_BASE + 0x2200UL) +#define ADC_BASE (APB2PERIPH_BASE + 0x2300UL) +#define SDMMC1_BASE (APB2PERIPH_BASE + 0x2C00UL) +#define SPI1_BASE (APB2PERIPH_BASE + 0x3000UL) +#define SPI4_BASE (APB2PERIPH_BASE + 0x3400UL) +#define SYSCFG_BASE (APB2PERIPH_BASE + 0x3800UL) +#define EXTI_BASE (APB2PERIPH_BASE + 0x3C00UL) +#define TIM9_BASE (APB2PERIPH_BASE + 0x4000UL) +#define TIM10_BASE (APB2PERIPH_BASE + 0x4400UL) +#define TIM11_BASE (APB2PERIPH_BASE + 0x4800UL) +#define SPI5_BASE (APB2PERIPH_BASE + 0x5000UL) +#define SPI6_BASE (APB2PERIPH_BASE + 0x5400UL) +#define SAI1_BASE (APB2PERIPH_BASE + 0x5800UL) +#define SAI2_BASE (APB2PERIPH_BASE + 0x5C00UL) +#define SAI1_Block_A_BASE (SAI1_BASE + 0x004UL) +#define SAI1_Block_B_BASE (SAI1_BASE + 0x024UL) +#define SAI2_Block_A_BASE (SAI2_BASE + 0x004UL) +#define SAI2_Block_B_BASE (SAI2_BASE + 0x024UL) +#define LTDC_BASE (APB2PERIPH_BASE + 0x6800UL) +#define LTDC_Layer1_BASE (LTDC_BASE + 0x0084UL) +#define LTDC_Layer2_BASE (LTDC_BASE + 0x0104UL) +#define DFSDM1_BASE (APB2PERIPH_BASE + 0x7400UL) +#define DFSDM1_Channel0_BASE (DFSDM1_BASE + 0x00UL) +#define DFSDM1_Channel1_BASE (DFSDM1_BASE + 0x20UL) +#define DFSDM1_Channel2_BASE (DFSDM1_BASE + 0x40UL) +#define DFSDM1_Channel3_BASE (DFSDM1_BASE + 0x60UL) +#define DFSDM1_Channel4_BASE (DFSDM1_BASE + 0x80UL) +#define DFSDM1_Channel5_BASE (DFSDM1_BASE + 0xA0UL) +#define DFSDM1_Channel6_BASE (DFSDM1_BASE + 0xC0UL) +#define DFSDM1_Channel7_BASE (DFSDM1_BASE + 0xE0UL) +#define DFSDM1_Filter0_BASE (DFSDM1_BASE + 0x100UL) +#define DFSDM1_Filter1_BASE (DFSDM1_BASE + 0x180UL) +#define DFSDM1_Filter2_BASE (DFSDM1_BASE + 0x200UL) +#define DFSDM1_Filter3_BASE (DFSDM1_BASE + 0x280UL) +#define MDIOS_BASE (APB2PERIPH_BASE + 0x7800UL) +/*!< AHB1 peripherals */ +#define GPIOA_BASE (AHB1PERIPH_BASE + 0x0000UL) +#define GPIOB_BASE (AHB1PERIPH_BASE + 0x0400UL) +#define GPIOC_BASE (AHB1PERIPH_BASE + 0x0800UL) +#define GPIOD_BASE (AHB1PERIPH_BASE + 0x0C00UL) +#define GPIOE_BASE (AHB1PERIPH_BASE + 0x1000UL) +#define GPIOF_BASE (AHB1PERIPH_BASE + 0x1400UL) +#define GPIOG_BASE (AHB1PERIPH_BASE + 0x1800UL) +#define GPIOH_BASE (AHB1PERIPH_BASE + 0x1C00UL) +#define GPIOI_BASE (AHB1PERIPH_BASE + 0x2000UL) +#define GPIOJ_BASE (AHB1PERIPH_BASE + 0x2400UL) +#define GPIOK_BASE (AHB1PERIPH_BASE + 0x2800UL) +#define CRC_BASE (AHB1PERIPH_BASE + 0x3000UL) +#define RCC_BASE (AHB1PERIPH_BASE + 0x3800UL) +#define FLASH_R_BASE (AHB1PERIPH_BASE + 0x3C00UL) +#define UID_BASE 0x1FF0F420UL /*!< Unique device ID register base address */ +#define FLASHSIZE_BASE 0x1FF0F442UL /*!< FLASH Size register base address */ +#define PACKAGE_BASE 0x1FF0F7E0UL /*!< Package size register base address */ +/* Legacy define */ +#define PACKAGESIZE_BASE PACKAGE_BASE + +#define DMA1_BASE (AHB1PERIPH_BASE + 0x6000UL) +#define DMA1_Stream0_BASE (DMA1_BASE + 0x010UL) +#define DMA1_Stream1_BASE (DMA1_BASE + 0x028UL) +#define DMA1_Stream2_BASE (DMA1_BASE + 0x040UL) +#define DMA1_Stream3_BASE (DMA1_BASE + 0x058UL) +#define DMA1_Stream4_BASE (DMA1_BASE + 0x070UL) +#define DMA1_Stream5_BASE (DMA1_BASE + 0x088UL) +#define DMA1_Stream6_BASE (DMA1_BASE + 0x0A0UL) +#define DMA1_Stream7_BASE (DMA1_BASE + 0x0B8UL) +#define DMA2_BASE (AHB1PERIPH_BASE + 0x6400UL) +#define DMA2_Stream0_BASE (DMA2_BASE + 0x010UL) +#define DMA2_Stream1_BASE (DMA2_BASE + 0x028UL) +#define DMA2_Stream2_BASE (DMA2_BASE + 0x040UL) +#define DMA2_Stream3_BASE (DMA2_BASE + 0x058UL) +#define DMA2_Stream4_BASE (DMA2_BASE + 0x070UL) +#define DMA2_Stream5_BASE (DMA2_BASE + 0x088UL) +#define DMA2_Stream6_BASE (DMA2_BASE + 0x0A0UL) +#define DMA2_Stream7_BASE (DMA2_BASE + 0x0B8UL) +#define ETH_BASE (AHB1PERIPH_BASE + 0x8000UL) +#define ETH_MAC_BASE (ETH_BASE) +#define ETH_MMC_BASE (ETH_BASE + 0x0100UL) +#define ETH_PTP_BASE (ETH_BASE + 0x0700UL) +#define ETH_DMA_BASE (ETH_BASE + 0x1000UL) +#define DMA2D_BASE (AHB1PERIPH_BASE + 0xB000UL) +/*!< AHB2 peripherals */ +#define DCMI_BASE (AHB2PERIPH_BASE + 0x50000UL) +#define JPEG_BASE (AHB2PERIPH_BASE + 0x51000UL) +#define RNG_BASE (AHB2PERIPH_BASE + 0x60800UL) +/*!< FMC Bankx registers base address */ +#define FMC_Bank1_R_BASE (FMC_R_BASE + 0x0000UL) +#define FMC_Bank1E_R_BASE (FMC_R_BASE + 0x0104UL) +#define FMC_Bank3_R_BASE (FMC_R_BASE + 0x0080UL) +#define FMC_Bank5_6_R_BASE (FMC_R_BASE + 0x0140UL) + +/* Debug MCU registers base address */ +#define DBGMCU_BASE 0xE0042000UL + +/*!< USB registers base address */ +#define USB_OTG_HS_PERIPH_BASE 0x40040000UL +#define USB_OTG_FS_PERIPH_BASE 0x50000000UL + +#define USB_OTG_GLOBAL_BASE 0x0000UL +#define USB_OTG_DEVICE_BASE 0x0800UL +#define USB_OTG_IN_ENDPOINT_BASE 0x0900UL +#define USB_OTG_OUT_ENDPOINT_BASE 0x0B00UL +#define USB_OTG_EP_REG_SIZE 0x0020UL +#define USB_OTG_HOST_BASE 0x0400UL +#define USB_OTG_HOST_PORT_BASE 0x0440UL +#define USB_OTG_HOST_CHANNEL_BASE 0x0500UL +#define USB_OTG_HOST_CHANNEL_SIZE 0x0020UL +#define USB_OTG_PCGCCTL_BASE 0x0E00UL +#define USB_OTG_FIFO_BASE 0x1000UL +#define USB_OTG_FIFO_SIZE 0x1000UL + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ +#define TIM2 ((TIM_TypeDef *) TIM2_BASE) +#define TIM3 ((TIM_TypeDef *) TIM3_BASE) +#define TIM4 ((TIM_TypeDef *) TIM4_BASE) +#define TIM5 ((TIM_TypeDef *) TIM5_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define TIM12 ((TIM_TypeDef *) TIM12_BASE) +#define TIM13 ((TIM_TypeDef *) TIM13_BASE) +#define TIM14 ((TIM_TypeDef *) TIM14_BASE) +#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE) +#define RTC ((RTC_TypeDef *) RTC_BASE) +#define WWDG ((WWDG_TypeDef *) WWDG_BASE) +#define IWDG ((IWDG_TypeDef *) IWDG_BASE) +#define SPI2 ((SPI_TypeDef *) SPI2_BASE) +#define SPI3 ((SPI_TypeDef *) SPI3_BASE) +#define SPDIFRX ((SPDIFRX_TypeDef *) SPDIFRX_BASE) +#define USART2 ((USART_TypeDef *) USART2_BASE) +#define USART3 ((USART_TypeDef *) USART3_BASE) +#define UART4 ((USART_TypeDef *) UART4_BASE) +#define UART5 ((USART_TypeDef *) UART5_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define I2C3 ((I2C_TypeDef *) I2C3_BASE) +#define I2C4 ((I2C_TypeDef *) I2C4_BASE) +#define CAN1 ((CAN_TypeDef *) CAN1_BASE) +#define CAN2 ((CAN_TypeDef *) CAN2_BASE) +#define CEC ((CEC_TypeDef *) CEC_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define DAC1 ((DAC_TypeDef *) DAC_BASE) +#define DAC ((DAC_TypeDef *) DAC_BASE) /* Kept for legacy purpose */ +#define UART7 ((USART_TypeDef *) UART7_BASE) +#define UART8 ((USART_TypeDef *) UART8_BASE) +#define TIM1 ((TIM_TypeDef *) TIM1_BASE) +#define TIM8 ((TIM_TypeDef *) TIM8_BASE) +#define USART1 ((USART_TypeDef *) USART1_BASE) +#define USART6 ((USART_TypeDef *) USART6_BASE) +#define ADC ((ADC_Common_TypeDef *) ADC_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define ADC3 ((ADC_TypeDef *) ADC3_BASE) +#define ADC123_COMMON ((ADC_Common_TypeDef *) ADC_BASE) +#define SDMMC1 ((SDMMC_TypeDef *) SDMMC1_BASE) +#define SPI1 ((SPI_TypeDef *) SPI1_BASE) +#define SPI4 ((SPI_TypeDef *) SPI4_BASE) +#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define TIM9 ((TIM_TypeDef *) TIM9_BASE) +#define TIM10 ((TIM_TypeDef *) TIM10_BASE) +#define TIM11 ((TIM_TypeDef *) TIM11_BASE) +#define SPI5 ((SPI_TypeDef *) SPI5_BASE) +#define SPI6 ((SPI_TypeDef *) SPI6_BASE) +#define SAI1 ((SAI_TypeDef *) SAI1_BASE) +#define SAI2 ((SAI_TypeDef *) SAI2_BASE) +#define SAI1_Block_A ((SAI_Block_TypeDef *)SAI1_Block_A_BASE) +#define SAI1_Block_B ((SAI_Block_TypeDef *)SAI1_Block_B_BASE) +#define SAI2_Block_A ((SAI_Block_TypeDef *)SAI2_Block_A_BASE) +#define SAI2_Block_B ((SAI_Block_TypeDef *)SAI2_Block_B_BASE) +#define LTDC ((LTDC_TypeDef *)LTDC_BASE) +#define LTDC_Layer1 ((LTDC_Layer_TypeDef *)LTDC_Layer1_BASE) +#define LTDC_Layer2 ((LTDC_Layer_TypeDef *)LTDC_Layer2_BASE) +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) +#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) +#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE) +#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE) +#define GPIOH ((GPIO_TypeDef *) GPIOH_BASE) +#define GPIOI ((GPIO_TypeDef *) GPIOI_BASE) +#define GPIOJ ((GPIO_TypeDef *) GPIOJ_BASE) +#define GPIOK ((GPIO_TypeDef *) GPIOK_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA1_Stream0 ((DMA_Stream_TypeDef *) DMA1_Stream0_BASE) +#define DMA1_Stream1 ((DMA_Stream_TypeDef *) DMA1_Stream1_BASE) +#define DMA1_Stream2 ((DMA_Stream_TypeDef *) DMA1_Stream2_BASE) +#define DMA1_Stream3 ((DMA_Stream_TypeDef *) DMA1_Stream3_BASE) +#define DMA1_Stream4 ((DMA_Stream_TypeDef *) DMA1_Stream4_BASE) +#define DMA1_Stream5 ((DMA_Stream_TypeDef *) DMA1_Stream5_BASE) +#define DMA1_Stream6 ((DMA_Stream_TypeDef *) DMA1_Stream6_BASE) +#define DMA1_Stream7 ((DMA_Stream_TypeDef *) DMA1_Stream7_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define DMA2_Stream0 ((DMA_Stream_TypeDef *) DMA2_Stream0_BASE) +#define DMA2_Stream1 ((DMA_Stream_TypeDef *) DMA2_Stream1_BASE) +#define DMA2_Stream2 ((DMA_Stream_TypeDef *) DMA2_Stream2_BASE) +#define DMA2_Stream3 ((DMA_Stream_TypeDef *) DMA2_Stream3_BASE) +#define DMA2_Stream4 ((DMA_Stream_TypeDef *) DMA2_Stream4_BASE) +#define DMA2_Stream5 ((DMA_Stream_TypeDef *) DMA2_Stream5_BASE) +#define DMA2_Stream6 ((DMA_Stream_TypeDef *) DMA2_Stream6_BASE) +#define DMA2_Stream7 ((DMA_Stream_TypeDef *) DMA2_Stream7_BASE) +#define ETH ((ETH_TypeDef *) ETH_BASE) +#define DMA2D ((DMA2D_TypeDef *)DMA2D_BASE) +#define DCMI ((DCMI_TypeDef *) DCMI_BASE) +#define RNG ((RNG_TypeDef *) RNG_BASE) +#define FMC_Bank1 ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE) +#define FMC_Bank1E ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE) +#define FMC_Bank3 ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE) +#define FMC_Bank5_6 ((FMC_Bank5_6_TypeDef *) FMC_Bank5_6_R_BASE) +#define QUADSPI ((QUADSPI_TypeDef *) QSPI_R_BASE) +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) +#define USB_OTG_FS ((USB_OTG_GlobalTypeDef *) USB_OTG_FS_PERIPH_BASE) +#define USB_OTG_HS ((USB_OTG_GlobalTypeDef *) USB_OTG_HS_PERIPH_BASE) +#define CAN3 ((CAN_TypeDef *) CAN3_BASE) +#define SDMMC2 ((SDMMC_TypeDef *) SDMMC2_BASE) +#define MDIOS ((MDIOS_TypeDef *) MDIOS_BASE) +#define DFSDM1_Channel0 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel0_BASE) +#define DFSDM1_Channel1 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel1_BASE) +#define DFSDM1_Channel2 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel2_BASE) +#define DFSDM1_Channel3 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel3_BASE) +#define DFSDM1_Channel4 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel4_BASE) +#define DFSDM1_Channel5 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel5_BASE) +#define DFSDM1_Channel6 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel6_BASE) +#define DFSDM1_Channel7 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel7_BASE) +#define DFSDM1_Filter0 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter0_BASE) +#define DFSDM1_Filter1 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter1_BASE) +#define DFSDM1_Filter2 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter2_BASE) +#define DFSDM1_Filter3 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter3_BASE) +#define JPEG ((JPEG_TypeDef *) JPEG_BASE) + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Hardware_Constant_Definition + * @{ + */ +#define LSI_STARTUP_TIME 40U /*!< LSI Maximum startup time in us */ + + /** + * @} + */ + + /** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers_Bits_Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter */ +/* */ +/******************************************************************************/ +#define VREFINT_CAL_ADDR_CMSIS ((uint16_t*) (0x1FF0F44A)) /*!>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ + return result; +} +#endif + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ __clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +#else + #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +#else + #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +#else + #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXB(value, ptr) __strex(value, ptr) +#else + #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXH(value, ptr) __strex(value, ptr) +#else + #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXW(value, ptr) __strex(value, ptr) +#else + #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __clrex + + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) +{ + rrx r0, r0 + bx lr +} +#endif + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRBT(value, ptr) __strt(value, ptr) + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRHT(value, ptr) __strt(value, ptr) + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +#define __STRT(value, ptr) __strt(value, ptr) + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__attribute__((always_inline)) __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +#define __SADD8 __sadd8 +#define __QADD8 __qadd8 +#define __SHADD8 __shadd8 +#define __UADD8 __uadd8 +#define __UQADD8 __uqadd8 +#define __UHADD8 __uhadd8 +#define __SSUB8 __ssub8 +#define __QSUB8 __qsub8 +#define __SHSUB8 __shsub8 +#define __USUB8 __usub8 +#define __UQSUB8 __uqsub8 +#define __UHSUB8 __uhsub8 +#define __SADD16 __sadd16 +#define __QADD16 __qadd16 +#define __SHADD16 __shadd16 +#define __UADD16 __uadd16 +#define __UQADD16 __uqadd16 +#define __UHADD16 __uhadd16 +#define __SSUB16 __ssub16 +#define __QSUB16 __qsub16 +#define __SHSUB16 __shsub16 +#define __USUB16 __usub16 +#define __UQSUB16 __uqsub16 +#define __UHSUB16 __uhsub16 +#define __SASX __sasx +#define __QASX __qasx +#define __SHASX __shasx +#define __UASX __uasx +#define __UQASX __uqasx +#define __UHASX __uhasx +#define __SSAX __ssax +#define __QSAX __qsax +#define __SHSAX __shsax +#define __USAX __usax +#define __UQSAX __uqsax +#define __UHSAX __uhsax +#define __USAD8 __usad8 +#define __USADA8 __usada8 +#define __SSAT16 __ssat16 +#define __USAT16 __usat16 +#define __UXTB16 __uxtb16 +#define __UXTAB16 __uxtab16 +#define __SXTB16 __sxtb16 +#define __SXTAB16 __sxtab16 +#define __SMUAD __smuad +#define __SMUADX __smuadx +#define __SMLAD __smlad +#define __SMLADX __smladx +#define __SMLALD __smlald +#define __SMLALDX __smlaldx +#define __SMUSD __smusd +#define __SMUSDX __smusdx +#define __SMLSD __smlsd +#define __SMLSDX __smlsdx +#define __SMLSLD __smlsld +#define __SMLSLDX __smlsldx +#define __SEL __sel +#define __QADD __qadd +#define __QSUB __qsub + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ + ((int64_t)(ARG3) << 32U) ) >> 32U)) + +#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCC_H */ diff --git a/Drivers/CMSIS/Include/cmsis_armclang.h b/Drivers/CMSIS/Include/cmsis_armclang.h new file mode 100644 index 0000000..d8031b0 --- /dev/null +++ b/Drivers/CMSIS/Include/cmsis_armclang.h @@ -0,0 +1,1869 @@ +/**************************************************************************//** + * @file cmsis_armclang.h + * @brief CMSIS compiler armclang (Arm Compiler 6) header file + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +#ifndef __ARM_COMPAT_H +#include /* Compatibility header for Arm Compiler 5 intrinsics */ +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE __inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static __inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static __inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __enable_irq(); see arm_compat.h */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); see arm_compat.h */ + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \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"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq /* see arm_compat.h */ + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq /* see arm_compat.h */ + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)0U) +#endif + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#endif + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __builtin_arm_nop + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI __builtin_arm_wfi + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_sev + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +#define __ISB() __builtin_arm_isb(0xF); + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +#define __DSB() __builtin_arm_dsb(0xF); + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF); + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +#define __RBIT __builtin_arm_rbit + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ (uint8_t)__builtin_clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __builtin_arm_ssat + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT __builtin_arm_usat + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/Drivers/CMSIS/Include/cmsis_compiler.h b/Drivers/CMSIS/Include/cmsis_compiler.h new file mode 100644 index 0000000..79a2cac --- /dev/null +++ b/Drivers/CMSIS/Include/cmsis_compiler.h @@ -0,0 +1,266 @@ +/**************************************************************************//** + * @file cmsis_compiler.h + * @brief CMSIS compiler generic header file + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_COMPILER_H +#define __CMSIS_COMPILER_H + +#include + +/* + * Arm Compiler 4/5 + */ +#if defined ( __CC_ARM ) + #include "cmsis_armcc.h" + + +/* + * Arm Compiler 6 (armclang) + */ +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #include "cmsis_armclang.h" + + +/* + * GNU Compiler + */ +#elif defined ( __GNUC__ ) + #include "cmsis_gcc.h" + + +/* + * IAR Compiler + */ +#elif defined ( __ICCARM__ ) + #include + + +/* + * TI Arm Compiler + */ +#elif defined ( __TI_ARM__ ) + #include + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __attribute__((packed)) + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed)) + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed)) + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void*)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +/* + * TASKING Compiler + */ +#elif defined ( __TASKING__ ) + /* + * The CMSIS functions have been implemented as intrinsics in the compiler. + * Please use "carm -?i" to get an up to date list of all intrinsics, + * Including the CMSIS ones. + */ + + #ifndef __ASM + #define __ASM __asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + #define __NO_RETURN __attribute__((noreturn)) + #endif + #ifndef __USED + #define __USED __attribute__((used)) + #endif + #ifndef __WEAK + #define __WEAK __attribute__((weak)) + #endif + #ifndef __PACKED + #define __PACKED __packed__ + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __packed__ + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION union __packed__ + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + struct __packed__ T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #define __ALIGNED(x) __align(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +/* + * COSMIC Compiler + */ +#elif defined ( __CSMC__ ) + #include + + #ifndef __ASM + #define __ASM _asm + #endif + #ifndef __INLINE + #define __INLINE inline + #endif + #ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline + #endif + #ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __STATIC_INLINE + #endif + #ifndef __NO_RETURN + // NO RETURN is automatically detected hence no warning here + #define __NO_RETURN + #endif + #ifndef __USED + #warning No compiler specific solution for __USED. __USED is ignored. + #define __USED + #endif + #ifndef __WEAK + #define __WEAK __weak + #endif + #ifndef __PACKED + #define __PACKED @packed + #endif + #ifndef __PACKED_STRUCT + #define __PACKED_STRUCT @packed struct + #endif + #ifndef __PACKED_UNION + #define __PACKED_UNION @packed union + #endif + #ifndef __UNALIGNED_UINT32 /* deprecated */ + @packed struct T_UINT32 { uint32_t v; }; + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + #endif + #ifndef __UNALIGNED_UINT16_WRITE + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT16_READ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) + #endif + #ifndef __UNALIGNED_UINT32_WRITE + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) + #endif + #ifndef __UNALIGNED_UINT32_READ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) + #endif + #ifndef __ALIGNED + #warning No compiler specific solution for __ALIGNED. __ALIGNED is ignored. + #define __ALIGNED(x) + #endif + #ifndef __RESTRICT + #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. + #define __RESTRICT + #endif + + +#else + #error Unknown compiler. +#endif + + +#endif /* __CMSIS_COMPILER_H */ + diff --git a/Drivers/CMSIS/Include/cmsis_gcc.h b/Drivers/CMSIS/Include/cmsis_gcc.h new file mode 100644 index 0000000..1bd41a4 --- /dev/null +++ b/Drivers/CMSIS/Include/cmsis_gcc.h @@ -0,0 +1,2085 @@ +/**************************************************************************//** + * @file cmsis_gcc.h + * @brief CMSIS compiler GCC header file + * @version V5.0.4 + * @date 09. April 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __CMSIS_GCC_H +#define __CMSIS_GCC_H + +/* ignore some GCC warnings */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" + +/* Fallback for __has_builtin */ +#ifndef __has_builtin + #define __has_builtin(x) (0) +#endif + +/* CMSIS compiler specific defines */ +#ifndef __ASM + #define __ASM __asm +#endif +#ifndef __INLINE + #define __INLINE inline +#endif +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __attribute__((__noreturn__)) +#endif +#ifndef __USED + #define __USED __attribute__((used)) +#endif +#ifndef __WEAK + #define __WEAK __attribute__((weak)) +#endif +#ifndef __PACKED + #define __PACKED __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_STRUCT + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION union __attribute__((packed, aligned(1))) +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpacked" + #pragma GCC diagnostic ignored "-Wattributes" + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma GCC diagnostic pop + #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + + +/* ########################### Core Function Access ########################### */ +/** \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + @{ + */ + +/** + \brief Enable IRQ Interrupts + \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_irq(void) +{ + __ASM volatile ("cpsie i" : : : "memory"); +} + + +/** + \brief Disable IRQ Interrupts + \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"); +} + + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_FORCEINLINE uint32_t __get_CONTROL(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Control Register (non-secure) + \details Returns the content of the non-secure Control Register when in secure mode. + \return non-secure Control Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) +{ + __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Control Register (non-secure) + \details Writes the given value to the non-secure Control Register when in secure state. + \param [in] control Control Register value to set + */ +__STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) +{ + __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); +} +#endif + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_IPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_APSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_FORCEINLINE uint32_t __get_xPSR(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + return(result); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer (non-secure) + \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. + \return PSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Process Stack Pointer + \details Assigns the given value to the Process Stack Pointer (PSP). + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. + \param [in] topOfProcStack Process Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) +{ + __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); +} +#endif + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSP(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer (non-secure) + \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. + \return MSP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Main Stack Pointer + \details Assigns the given value to the Main Stack Pointer (MSP). + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + \param [in] topOfMainStack Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) +{ + __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); +} +#endif + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Stack Pointer (non-secure) + \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + \return SP Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + return(result); +} + + +/** + \brief Set Stack Pointer (non-secure) + \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + \param [in] topOfStack Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) +{ + __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); +} +#endif + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Priority Mask (non-secure) + \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. + \return Priority Mask value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + return(result); +} +#endif + + +/** + \brief Set Priority Mask + \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"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Priority Mask (non-secure) + \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + \param [in] priMask Priority Mask + */ +__STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) +{ + __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); +} +#endif + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __enable_fault_irq(void) +{ + __ASM volatile ("cpsie f" : : : "memory"); +} + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +__STATIC_FORCEINLINE void __disable_fault_irq(void) +{ + __ASM volatile ("cpsid f" : : : "memory"); +} + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Base Priority (non-secure) + \details Returns the current value of the non-secure Base Priority register when in secure state. + \return Base Priority register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) +{ + __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Base Priority (non-secure) + \details Assigns the given value to the non-secure Base Priority register when in secure state. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); +} +#endif + + +/** + \brief Set Base Priority with condition + \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, + or the new value increases the BASEPRI priority level. + \param [in] basePri Base Priority value to set + */ +__STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + return(result); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Fault Mask (non-secure) + \details Returns the current value of the non-secure Fault Mask register when in secure state. + \return Fault Mask register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) +{ + uint32_t result; + + __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + return(result); +} +#endif + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Fault Mask (non-secure) + \details Assigns the given value to the non-secure Fault Mask register when in secure state. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) +{ + __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); +} +#endif + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + +/** + \brief Get Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + return result; +#endif +} + +#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Process Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \return PSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Process Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Process Stack Pointer (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. + \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)ProcStackPtrLimit; +#else + __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); +#endif +} +#endif + + +/** + \brief Get Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always in non-secure + mode. + + \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + return result; +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Get Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence zero is returned always. + + \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. + \return MSPLIM Register value + */ +__STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + return 0U; +#else + uint32_t result; + __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + return result; +#endif +} +#endif + + +/** + \brief Set Main Stack Pointer Limit + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored in non-secure + mode. + + \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + */ +__STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); +#endif +} + + +#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) +/** + \brief Set Main Stack Pointer Limit (non-secure) + Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + Stack Pointer Limit register hence the write is silently ignored. + + \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. + \param [in] MainStackPtrLimit Main Stack Pointer value to set + */ +__STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) +{ +#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)MainStackPtrLimit; +#else + __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); +#endif +} +#endif + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_FORCEINLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_get_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + return __builtin_arm_get_fpscr(); +#else + uint32_t result; + + __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + return(result); +#endif +#else + return(0U); +#endif +} + + +/** + \brief Set FPSCR + \details Assigns the given value to the Floating Point Status/Control register. + \param [in] fpscr Floating Point Status/Control value to set + */ +__STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#if __has_builtin(__builtin_arm_set_fpscr) +// Re-enable using built-in when GCC has been fixed +// || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + __builtin_arm_set_fpscr(fpscr); +#else + __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); +#endif +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/* Define macros for porting to both thumb1 and thumb2. + * For thumb1, use low register (r0-r7), specified by constraint "l" + * Otherwise, use general registers, specified by constraint "r" */ +#if defined (__thumb__) && !defined (__thumb2__) +#define __CMSIS_GCC_OUT_REG(r) "=l" (r) +#define __CMSIS_GCC_RW_REG(r) "+l" (r) +#define __CMSIS_GCC_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_REG(r) "=r" (r) +#define __CMSIS_GCC_RW_REG(r) "+r" (r) +#define __CMSIS_GCC_USE_REG(r) "r" (r) +#endif + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP() __ASM volatile ("nop") + +/** + \brief Wait For Interrupt + \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. + */ +#define __WFI() __ASM volatile ("wfi") + + +/** + \brief Wait For Event + \details Wait For Event is a hint instruction that permits the processor to enter + a low-power state until one of a number of events occurs. + */ +#define __WFE() __ASM volatile ("wfe") + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV() __ASM volatile ("sev") + + +/** + \brief Instruction Synchronization Barrier + \details Instruction Synchronization Barrier flushes the pipeline in the processor, + so that all instructions following the ISB are fetched from cache or memory, + after the instruction has been completed. + */ +__STATIC_FORCEINLINE void __ISB(void) +{ + __ASM volatile ("isb 0xF":::"memory"); +} + + +/** + \brief Data Synchronization Barrier + \details Acts as a special kind of Data Memory Barrier. + It completes when all explicit memory accesses before this instruction complete. + */ +__STATIC_FORCEINLINE void __DSB(void) +{ + __ASM volatile ("dsb 0xF":::"memory"); +} + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +__STATIC_FORCEINLINE void __DMB(void) +{ + __ASM volatile ("dmb 0xF":::"memory"); +} + + +/** + \brief Reverse byte order (32 bit) + \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x78563412. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV(uint32_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + return __builtin_bswap32(value); +#else + uint32_t result; + + __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 0x34127856. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +} + + +/** + \brief Reverse byte order (16 bit) + \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For example, 0x0080 becomes 0x8000. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE int16_t __REVSH(int16_t value) +{ +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + return (int16_t)__builtin_bswap16(value); +#else + int16_t result; + + __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return result; +#endif +} + + +/** + \brief Rotate Right in unsigned value (32 bit) + \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. + \param [in] op1 Value to rotate + \param [in] op2 Number of Bits to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) +{ + op2 %= 32U; + if (op2 == 0U) + { + return op1; + } + return (op1 >> op2) | (op1 << (32U - op2)); +} + + +/** + \brief Breakpoint + \details Causes the processor to enter Debug state. + Debug tools can use this to investigate system state when the instruction at a particular address is reached. + \param [in] value is ignored by the processor. + If required, a debugger can use it to store additional information about the breakpoint. + */ +#define __BKPT(value) __ASM volatile ("bkpt "#value) + + +/** + \brief Reverse bit order of value + \details Reverses the bit order of the given value. + \param [in] value Value to reverse + \return Reversed value + */ +__STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); +#else + uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + + result = value; /* r will be reversed bits of v; first get LSB of v */ + for (value >>= 1U; value != 0U; value >>= 1U) + { + result <<= 1U; + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; +} + + +/** + \brief Count leading zeros + \details Counts the number of leading zeros of a data value. + \param [in] value Value to count the leading zeros + \return number of leading zeros in value + */ +#define __CLZ (uint8_t)__builtin_clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief LDR Exclusive (8 bit) + \details Executes a exclusive LDR instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (16 bit) + \details Executes a exclusive LDR instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDR Exclusive (32 bit) + \details Executes a exclusive LDR instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + return(result); +} + + +/** + \brief STR Exclusive (8 bit) + \details Executes a exclusive STR instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (16 bit) + \details Executes a exclusive STR instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +{ + uint32_t result; + + __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief STR Exclusive (32 bit) + \details Executes a exclusive STR instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) +{ + uint32_t result; + + __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + return(result); +} + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +__STATIC_FORCEINLINE void __CLREX(void) +{ + __ASM volatile ("clrex" ::: "memory"); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT(ARG1,ARG2) \ +__extension__ \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] ARG1 Value to be saturated + \param [in] ARG2 Bit position to saturate to (0..31) + \return Saturated value + */ +#define __USAT(ARG1,ARG2) \ + __extension__ \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + + +/** + \brief Rotate Right with Extend (32 bit) + \details Moves each bit of a bitstring right by one bit. + The carry input is shifted in at the left end of the bitstring. + \param [in] value Value to rotate + \return Rotated value + */ +__STATIC_FORCEINLINE uint32_t __RRX(uint32_t value) +{ + uint32_t result; + + __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + return(result); +} + + +/** + \brief LDRT Unprivileged (8 bit) + \details Executes a Unprivileged LDRT instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDRBT(volatile uint8_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint8_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (16 bit) + \details Executes a Unprivileged LDRT instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDRHT(volatile uint16_t *ptr) +{ + uint32_t result; + +#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); +#else + /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not + accepted by assembler. So has to use following less efficient pattern. + */ + __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (ptr) : "memory" ); +#endif + return ((uint16_t) result); /* Add explicit type cast here */ +} + + +/** + \brief LDRT Unprivileged (32 bit) + \details Executes a Unprivileged LDRT instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDRT(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief STRT Unprivileged (8 bit) + \details Executes a Unprivileged STRT instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (16 bit) + \details Executes a Unprivileged STRT instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief STRT Unprivileged (32 bit) + \details Executes a Unprivileged STRT instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STRT(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); +} + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + +/** + \brief Signed Saturate + \details Saturates a signed value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) +{ + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; +} + +/** + \brief Unsigned Saturate + \details Saturates an unsigned value. + \param [in] value Value to be saturated + \param [in] sat Bit position to saturate to (0..31) + \return Saturated value + */ +__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) +{ + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +/** + \brief Load-Acquire (8 bit) + \details Executes a LDAB instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire (16 bit) + \details Executes a LDAH instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire (32 bit) + \details Executes a LDA instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDA(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release (8 bit) + \details Executes a STLB instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLB(uint8_t value, volatile uint8_t *ptr) +{ + __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (16 bit) + \details Executes a STLH instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STLH(uint16_t value, volatile uint16_t *ptr) +{ + __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Store-Release (32 bit) + \details Executes a STL instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + */ +__STATIC_FORCEINLINE void __STL(uint32_t value, volatile uint32_t *ptr) +{ + __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); +} + + +/** + \brief Load-Acquire Exclusive (8 bit) + \details Executes a LDAB exclusive instruction for 8 bit value. + \param [in] ptr Pointer to data + \return value of type uint8_t at (*ptr) + */ +__STATIC_FORCEINLINE uint8_t __LDAEXB(volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexb %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint8_t) result); +} + + +/** + \brief Load-Acquire Exclusive (16 bit) + \details Executes a LDAH exclusive instruction for 16 bit values. + \param [in] ptr Pointer to data + \return value of type uint16_t at (*ptr) + */ +__STATIC_FORCEINLINE uint16_t __LDAEXH(volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaexh %0, %1" : "=r" (result) : "Q" (*ptr) ); + return ((uint16_t) result); +} + + +/** + \brief Load-Acquire Exclusive (32 bit) + \details Executes a LDA exclusive instruction for 32 bit values. + \param [in] ptr Pointer to data + \return value of type uint32_t at (*ptr) + */ +__STATIC_FORCEINLINE uint32_t __LDAEX(volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("ldaex %0, %1" : "=r" (result) : "Q" (*ptr) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (8 bit) + \details Executes a STLB exclusive instruction for 8 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexb %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (16 bit) + \details Executes a STLH exclusive instruction for 16 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlexh %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + + +/** + \brief Store-Release Exclusive (32 bit) + \details Executes a STL exclusive instruction for 32 bit values. + \param [in] value Value to store + \param [in] ptr Pointer to location + \return 0 Function succeeded + \return 1 Function failed + */ +__STATIC_FORCEINLINE uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) +{ + uint32_t result; + + __ASM volatile ("stlex %0, %2, %1" : "=&r" (result), "=Q" (*ptr) : "r" ((uint32_t)value) ); + return(result); +} + +#endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + +__STATIC_FORCEINLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + + +__STATIC_FORCEINLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#define __SSAT16(ARG1,ARG2) \ +({ \ + int32_t __RES, __ARG1 = (ARG1); \ + __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +#define __USAT16(ARG1,ARG2) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1); \ + __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ + __RES; \ + }) + +__STATIC_FORCEINLINE uint32_t __UXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTB16(uint32_t op1) +{ + uint32_t result; + + __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) +{ + uint32_t result; + + __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) +{ + union llreg_u{ + uint32_t w32[2]; + uint64_t w64; + } llr; + llr.w64 = acc; + +#ifndef __ARMEB__ /* Little endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); +#else /* Big endian */ + __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); +#endif + + return(llr.w64); +} + +__STATIC_FORCEINLINE uint32_t __SEL (uint32_t op1, uint32_t op2) +{ + uint32_t result; + + __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QADD( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +__STATIC_FORCEINLINE int32_t __QSUB( int32_t op1, int32_t op2) +{ + int32_t result; + + __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); + return(result); +} + +#if 0 +#define __PKHBT(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) + +#define __PKHTB(ARG1,ARG2,ARG3) \ +({ \ + uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ + if (ARG3 == 0) \ + __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ + else \ + __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ + __RES; \ + }) +#endif + +#define __PKHBT(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0x0000FFFFUL) | \ + ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL) ) + +#define __PKHTB(ARG1,ARG2,ARG3) ( ((((uint32_t)(ARG1)) ) & 0xFFFF0000UL) | \ + ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL) ) + +__STATIC_FORCEINLINE int32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) +{ + int32_t result; + + __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); + return(result); +} + +#endif /* (__ARM_FEATURE_DSP == 1) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#pragma GCC diagnostic pop + +#endif /* __CMSIS_GCC_H */ diff --git a/Drivers/CMSIS/Include/cmsis_iccarm.h b/Drivers/CMSIS/Include/cmsis_iccarm.h new file mode 100644 index 0000000..3c90a2c --- /dev/null +++ b/Drivers/CMSIS/Include/cmsis_iccarm.h @@ -0,0 +1,935 @@ +/**************************************************************************//** + * @file cmsis_iccarm.h + * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file + * @version V5.0.7 + * @date 19. June 2018 + ******************************************************************************/ + +//------------------------------------------------------------------------------ +// +// Copyright (c) 2017-2018 IAR Systems +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//------------------------------------------------------------------------------ + + +#ifndef __CMSIS_ICCARM_H__ +#define __CMSIS_ICCARM_H__ + +#ifndef __ICCARM__ + #error This file should only be compiled by ICCARM +#endif + +#pragma system_include + +#define __IAR_FT _Pragma("inline=forced") __intrinsic + +#if (__VER__ >= 8000000) + #define __ICCARM_V8 1 +#else + #define __ICCARM_V8 0 +#endif + +#ifndef __ALIGNED + #if __ICCARM_V8 + #define __ALIGNED(x) __attribute__((aligned(x))) + #elif (__VER__ >= 7080000) + /* Needs IAR language extensions */ + #define __ALIGNED(x) __attribute__((aligned(x))) + #else + #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored. + #define __ALIGNED(x) + #endif +#endif + + +/* Define compiler macros for CPU architecture, used in CMSIS 5. + */ +#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__ +/* Macros already defined */ +#else + #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M' + #if __ARM_ARCH == 6 + #define __ARM_ARCH_6M__ 1 + #elif __ARM_ARCH == 7 + #if __ARM_FEATURE_DSP + #define __ARM_ARCH_7EM__ 1 + #else + #define __ARM_ARCH_7M__ 1 + #endif + #endif /* __ARM_ARCH */ + #endif /* __ARM_ARCH_PROFILE == 'M' */ +#endif + +/* Alternativ core deduction for older ICCARM's */ +#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \ + !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__) + #if defined(__ARM6M__) && (__CORE__ == __ARM6M__) + #define __ARM_ARCH_6M__ 1 + #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__) + #define __ARM_ARCH_7M__ 1 + #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__) + #define __ARM_ARCH_7EM__ 1 + #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #else + #error "Unknown target." + #endif +#endif + + + +#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1 + #define __IAR_M0_FAMILY 1 +#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1 + #define __IAR_M0_FAMILY 1 +#else + #define __IAR_M0_FAMILY 0 +#endif + + +#ifndef __ASM + #define __ASM __asm +#endif + +#ifndef __INLINE + #define __INLINE inline +#endif + +#ifndef __NO_RETURN + #if __ICCARM_V8 + #define __NO_RETURN __attribute__((__noreturn__)) + #else + #define __NO_RETURN _Pragma("object_attribute=__noreturn") + #endif +#endif + +#ifndef __PACKED + #if __ICCARM_V8 + #define __PACKED __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED __packed + #endif +#endif + +#ifndef __PACKED_STRUCT + #if __ICCARM_V8 + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_STRUCT __packed struct + #endif +#endif + +#ifndef __PACKED_UNION + #if __ICCARM_V8 + #define __PACKED_UNION union __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_UNION __packed union + #endif +#endif + +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif + +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif + +#ifndef __FORCEINLINE + #define __FORCEINLINE _Pragma("inline=forced") +#endif + +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __FORCEINLINE __STATIC_INLINE +#endif + +#ifndef __UNALIGNED_UINT16_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint16_t __iar_uint16_read(void const *ptr) +{ + return *(__packed uint16_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR) +#endif + + +#ifndef __UNALIGNED_UINT16_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val) +{ + *(__packed uint16_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint32_t __iar_uint32_read(void const *ptr) +{ + return *(__packed uint32_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR) +#endif + +#ifndef __UNALIGNED_UINT32_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val) +{ + *(__packed uint32_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32 /* deprecated */ +#pragma language=save +#pragma language=extended +__packed struct __iar_u32 { uint32_t v; }; +#pragma language=restore +#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v) +#endif + +#ifndef __USED + #if __ICCARM_V8 + #define __USED __attribute__((used)) + #else + #define __USED _Pragma("__root") + #endif +#endif + +#ifndef __WEAK + #if __ICCARM_V8 + #define __WEAK __attribute__((weak)) + #else + #define __WEAK _Pragma("__weak") + #endif +#endif + + +#ifndef __ICCARM_INTRINSICS_VERSION__ + #define __ICCARM_INTRINSICS_VERSION__ 0 +#endif + +#if __ICCARM_INTRINSICS_VERSION__ == 2 + + #if defined(__CLZ) + #undef __CLZ + #endif + #if defined(__REVSH) + #undef __REVSH + #endif + #if defined(__RBIT) + #undef __RBIT + #endif + #if defined(__SSAT) + #undef __SSAT + #endif + #if defined(__USAT) + #undef __USAT + #endif + + #include "iccarm_builtin.h" + + #define __disable_fault_irq __iar_builtin_disable_fiq + #define __disable_irq __iar_builtin_disable_interrupt + #define __enable_fault_irq __iar_builtin_enable_fiq + #define __enable_irq __iar_builtin_enable_interrupt + #define __arm_rsr __iar_builtin_rsr + #define __arm_wsr __iar_builtin_wsr + + + #define __get_APSR() (__arm_rsr("APSR")) + #define __get_BASEPRI() (__arm_rsr("BASEPRI")) + #define __get_CONTROL() (__arm_rsr("CONTROL")) + #define __get_FAULTMASK() (__arm_rsr("FAULTMASK")) + + #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + #define __get_FPSCR() (__arm_rsr("FPSCR")) + #define __set_FPSCR(VALUE) (__arm_wsr("FPSCR", (VALUE))) + #else + #define __get_FPSCR() ( 0 ) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #define __get_IPSR() (__arm_rsr("IPSR")) + #define __get_MSP() (__arm_rsr("MSP")) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __get_MSPLIM() (0U) + #else + #define __get_MSPLIM() (__arm_rsr("MSPLIM")) + #endif + #define __get_PRIMASK() (__arm_rsr("PRIMASK")) + #define __get_PSP() (__arm_rsr("PSP")) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __get_PSPLIM() (0U) + #else + #define __get_PSPLIM() (__arm_rsr("PSPLIM")) + #endif + + #define __get_xPSR() (__arm_rsr("xPSR")) + + #define __set_BASEPRI(VALUE) (__arm_wsr("BASEPRI", (VALUE))) + #define __set_BASEPRI_MAX(VALUE) (__arm_wsr("BASEPRI_MAX", (VALUE))) + #define __set_CONTROL(VALUE) (__arm_wsr("CONTROL", (VALUE))) + #define __set_FAULTMASK(VALUE) (__arm_wsr("FAULTMASK", (VALUE))) + #define __set_MSP(VALUE) (__arm_wsr("MSP", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + #define __set_MSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_MSPLIM(VALUE) (__arm_wsr("MSPLIM", (VALUE))) + #endif + #define __set_PRIMASK(VALUE) (__arm_wsr("PRIMASK", (VALUE))) + #define __set_PSP(VALUE) (__arm_wsr("PSP", (VALUE))) + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __set_PSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_PSPLIM(VALUE) (__arm_wsr("PSPLIM", (VALUE))) + #endif + + #define __TZ_get_CONTROL_NS() (__arm_rsr("CONTROL_NS")) + #define __TZ_set_CONTROL_NS(VALUE) (__arm_wsr("CONTROL_NS", (VALUE))) + #define __TZ_get_PSP_NS() (__arm_rsr("PSP_NS")) + #define __TZ_set_PSP_NS(VALUE) (__arm_wsr("PSP_NS", (VALUE))) + #define __TZ_get_MSP_NS() (__arm_rsr("MSP_NS")) + #define __TZ_set_MSP_NS(VALUE) (__arm_wsr("MSP_NS", (VALUE))) + #define __TZ_get_SP_NS() (__arm_rsr("SP_NS")) + #define __TZ_set_SP_NS(VALUE) (__arm_wsr("SP_NS", (VALUE))) + #define __TZ_get_PRIMASK_NS() (__arm_rsr("PRIMASK_NS")) + #define __TZ_set_PRIMASK_NS(VALUE) (__arm_wsr("PRIMASK_NS", (VALUE))) + #define __TZ_get_BASEPRI_NS() (__arm_rsr("BASEPRI_NS")) + #define __TZ_set_BASEPRI_NS(VALUE) (__arm_wsr("BASEPRI_NS", (VALUE))) + #define __TZ_get_FAULTMASK_NS() (__arm_rsr("FAULTMASK_NS")) + #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr("FAULTMASK_NS", (VALUE))) + + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + #define __TZ_get_PSPLIM_NS() (0U) + #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE)) + #else + #define __TZ_get_PSPLIM_NS() (__arm_rsr("PSPLIM_NS")) + #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr("PSPLIM_NS", (VALUE))) + #endif + + #define __TZ_get_MSPLIM_NS() (__arm_rsr("MSPLIM_NS")) + #define __TZ_set_MSPLIM_NS(VALUE) (__arm_wsr("MSPLIM_NS", (VALUE))) + + #define __NOP __iar_builtin_no_operation + + #define __CLZ __iar_builtin_CLZ + #define __CLREX __iar_builtin_CLREX + + #define __DMB __iar_builtin_DMB + #define __DSB __iar_builtin_DSB + #define __ISB __iar_builtin_ISB + + #define __LDREXB __iar_builtin_LDREXB + #define __LDREXH __iar_builtin_LDREXH + #define __LDREXW __iar_builtin_LDREX + + #define __RBIT __iar_builtin_RBIT + #define __REV __iar_builtin_REV + #define __REV16 __iar_builtin_REV16 + + __IAR_FT int16_t __REVSH(int16_t val) + { + return (int16_t) __iar_builtin_REVSH(val); + } + + #define __ROR __iar_builtin_ROR + #define __RRX __iar_builtin_RRX + + #define __SEV __iar_builtin_SEV + + #if !__IAR_M0_FAMILY + #define __SSAT __iar_builtin_SSAT + #endif + + #define __STREXB __iar_builtin_STREXB + #define __STREXH __iar_builtin_STREXH + #define __STREXW __iar_builtin_STREX + + #if !__IAR_M0_FAMILY + #define __USAT __iar_builtin_USAT + #endif + + #define __WFE __iar_builtin_WFE + #define __WFI __iar_builtin_WFI + + #if __ARM_MEDIA__ + #define __SADD8 __iar_builtin_SADD8 + #define __QADD8 __iar_builtin_QADD8 + #define __SHADD8 __iar_builtin_SHADD8 + #define __UADD8 __iar_builtin_UADD8 + #define __UQADD8 __iar_builtin_UQADD8 + #define __UHADD8 __iar_builtin_UHADD8 + #define __SSUB8 __iar_builtin_SSUB8 + #define __QSUB8 __iar_builtin_QSUB8 + #define __SHSUB8 __iar_builtin_SHSUB8 + #define __USUB8 __iar_builtin_USUB8 + #define __UQSUB8 __iar_builtin_UQSUB8 + #define __UHSUB8 __iar_builtin_UHSUB8 + #define __SADD16 __iar_builtin_SADD16 + #define __QADD16 __iar_builtin_QADD16 + #define __SHADD16 __iar_builtin_SHADD16 + #define __UADD16 __iar_builtin_UADD16 + #define __UQADD16 __iar_builtin_UQADD16 + #define __UHADD16 __iar_builtin_UHADD16 + #define __SSUB16 __iar_builtin_SSUB16 + #define __QSUB16 __iar_builtin_QSUB16 + #define __SHSUB16 __iar_builtin_SHSUB16 + #define __USUB16 __iar_builtin_USUB16 + #define __UQSUB16 __iar_builtin_UQSUB16 + #define __UHSUB16 __iar_builtin_UHSUB16 + #define __SASX __iar_builtin_SASX + #define __QASX __iar_builtin_QASX + #define __SHASX __iar_builtin_SHASX + #define __UASX __iar_builtin_UASX + #define __UQASX __iar_builtin_UQASX + #define __UHASX __iar_builtin_UHASX + #define __SSAX __iar_builtin_SSAX + #define __QSAX __iar_builtin_QSAX + #define __SHSAX __iar_builtin_SHSAX + #define __USAX __iar_builtin_USAX + #define __UQSAX __iar_builtin_UQSAX + #define __UHSAX __iar_builtin_UHSAX + #define __USAD8 __iar_builtin_USAD8 + #define __USADA8 __iar_builtin_USADA8 + #define __SSAT16 __iar_builtin_SSAT16 + #define __USAT16 __iar_builtin_USAT16 + #define __UXTB16 __iar_builtin_UXTB16 + #define __UXTAB16 __iar_builtin_UXTAB16 + #define __SXTB16 __iar_builtin_SXTB16 + #define __SXTAB16 __iar_builtin_SXTAB16 + #define __SMUAD __iar_builtin_SMUAD + #define __SMUADX __iar_builtin_SMUADX + #define __SMMLA __iar_builtin_SMMLA + #define __SMLAD __iar_builtin_SMLAD + #define __SMLADX __iar_builtin_SMLADX + #define __SMLALD __iar_builtin_SMLALD + #define __SMLALDX __iar_builtin_SMLALDX + #define __SMUSD __iar_builtin_SMUSD + #define __SMUSDX __iar_builtin_SMUSDX + #define __SMLSD __iar_builtin_SMLSD + #define __SMLSDX __iar_builtin_SMLSDX + #define __SMLSLD __iar_builtin_SMLSLD + #define __SMLSLDX __iar_builtin_SMLSLDX + #define __SEL __iar_builtin_SEL + #define __QADD __iar_builtin_QADD + #define __QSUB __iar_builtin_QSUB + #define __PKHBT __iar_builtin_PKHBT + #define __PKHTB __iar_builtin_PKHTB + #endif + +#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #define __CLZ __cmsis_iar_clz_not_active + #define __SSAT __cmsis_iar_ssat_not_active + #define __USAT __cmsis_iar_usat_not_active + #define __RBIT __cmsis_iar_rbit_not_active + #define __get_APSR __cmsis_iar_get_APSR_not_active + #endif + + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #define __get_FPSCR __cmsis_iar_get_FPSR_not_active + #define __set_FPSCR __cmsis_iar_set_FPSR_not_active + #endif + + #ifdef __INTRINSICS_INCLUDED + #error intrinsics.h is already included previously! + #endif + + #include + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #undef __CLZ + #undef __SSAT + #undef __USAT + #undef __RBIT + #undef __get_APSR + + __STATIC_INLINE uint8_t __CLZ(uint32_t data) + { + if (data == 0U) { return 32U; } + + uint32_t count = 0U; + uint32_t mask = 0x80000000U; + + while ((data & mask) == 0U) + { + count += 1U; + mask = mask >> 1U; + } + return count; + } + + __STATIC_INLINE uint32_t __RBIT(uint32_t v) + { + uint8_t sc = 31U; + uint32_t r = v; + for (v >>= 1U; v; v >>= 1U) + { + r <<= 1U; + r |= v & 1U; + sc--; + } + return (r << sc); + } + + __STATIC_INLINE uint32_t __get_APSR(void) + { + uint32_t res; + __asm("MRS %0,APSR" : "=r" (res)); + return res; + } + + #endif + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #undef __get_FPSCR + #undef __set_FPSCR + #define __get_FPSCR() (0) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #pragma diag_suppress=Pe940 + #pragma diag_suppress=Pe177 + + #define __enable_irq __enable_interrupt + #define __disable_irq __disable_interrupt + #define __NOP __no_operation + + #define __get_xPSR __get_PSR + + #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0) + + __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr) + { + return __LDREX((unsigned long *)ptr); + } + + __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr) + { + return __STREX(value, (unsigned long *)ptr); + } + #endif + + + /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + #if (__CORTEX_M >= 0x03) + + __IAR_FT uint32_t __RRX(uint32_t value) + { + uint32_t result; + __ASM("RRX %0, %1" : "=r"(result) : "r" (value) : "cc"); + return(result); + } + + __IAR_FT void __set_BASEPRI_MAX(uint32_t value) + { + __asm volatile("MSR BASEPRI_MAX,%0"::"r" (value)); + } + + + #define __enable_fault_irq __enable_fiq + #define __disable_fault_irq __disable_fiq + + + #endif /* (__CORTEX_M >= 0x03) */ + + __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2) + { + return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2)); + } + + #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + __IAR_FT uint32_t __get_MSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,MSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_MSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure MSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR MSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __get_PSPLIM(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_PSPLIM(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_CONTROL_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,CONTROL_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_CONTROL_NS(uint32_t value) + { + __asm volatile("MSR CONTROL_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PSP_NS(uint32_t value) + { + __asm volatile("MSR PSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_MSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSP_NS(uint32_t value) + { + __asm volatile("MSR MSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_SP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,SP_NS" : "=r" (res)); + return res; + } + __IAR_FT void __TZ_set_SP_NS(uint32_t value) + { + __asm volatile("MSR SP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PRIMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PRIMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PRIMASK_NS(uint32_t value) + { + __asm volatile("MSR PRIMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_BASEPRI_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,BASEPRI_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_BASEPRI_NS(uint32_t value) + { + __asm volatile("MSR BASEPRI_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_FAULTMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,FAULTMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_FAULTMASK_NS(uint32_t value) + { + __asm volatile("MSR FAULTMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSPLIM_NS(void) + { + uint32_t res; + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM_NS" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __TZ_set_PSPLIM_NS(uint32_t value) + { + #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + (!defined (__ARM_FEATURE_CMSE ) || (__ARM_FEATURE_CMSE < 3))) + // without main extensions, the non-secure PSPLIM is RAZ/WI + (void)value; + #else + __asm volatile("MSR PSPLIM_NS,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_MSPLIM_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSPLIM_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSPLIM_NS(uint32_t value) + { + __asm volatile("MSR MSPLIM_NS,%0" :: "r" (value)); + } + + #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#endif /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + +#define __BKPT(value) __asm volatile ("BKPT %0" : : "i"(value)) + +#if __IAR_M0_FAMILY + __STATIC_INLINE int32_t __SSAT(int32_t val, uint32_t sat) + { + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; + } + + __STATIC_INLINE uint32_t __USAT(int32_t val, uint32_t sat) + { + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; + } +#endif + +#if (__CORTEX_M >= 0x03) /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + + __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr) + { + uint32_t res; + __ASM("LDRBT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr) + { + uint32_t res; + __ASM("LDRHT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDRT(volatile uint32_t *addr) + { + uint32_t res; + __ASM("LDRT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return res; + } + + __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr) + { + __ASM("STRBT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr) + { + __ASM("STRHT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr) + { + __ASM("STRT %1, [%0]" : : "r" (addr), "r" (value) : "memory"); + } + +#endif /* (__CORTEX_M >= 0x03) */ + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + + __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDA(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDA %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr) + { + __ASM volatile ("STLB %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr) + { + __ASM volatile ("STLH %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr) + { + __ASM volatile ("STL %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEX %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXB %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXH %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEX %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + +#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#undef __IAR_FT +#undef __IAR_M0_FAMILY +#undef __ICCARM_V8 + +#pragma diag_default=Pe940 +#pragma diag_default=Pe177 + +#endif /* __CMSIS_ICCARM_H__ */ diff --git a/Drivers/CMSIS/Include/cmsis_version.h b/Drivers/CMSIS/Include/cmsis_version.h new file mode 100644 index 0000000..ae3f2e3 --- /dev/null +++ b/Drivers/CMSIS/Include/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @file cmsis_version.h + * @brief CMSIS Core(M) Version definitions + * @version V5.0.2 + * @date 19. April 2017 + ******************************************************************************/ +/* + * Copyright (c) 2009-2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CMSIS_VERSION_H +#define __CMSIS_VERSION_H + +/* CMSIS Version definitions */ +#define __CM_CMSIS_VERSION_MAIN ( 5U) /*!< [31:16] CMSIS Core(M) main version */ +#define __CM_CMSIS_VERSION_SUB ( 1U) /*!< [15:0] CMSIS Core(M) sub version */ +#define __CM_CMSIS_VERSION ((__CM_CMSIS_VERSION_MAIN << 16U) | \ + __CM_CMSIS_VERSION_SUB ) /*!< CMSIS Core(M) version number */ +#endif diff --git a/Drivers/CMSIS/Include/core_armv8mbl.h b/Drivers/CMSIS/Include/core_armv8mbl.h new file mode 100644 index 0000000..ec76ab2 --- /dev/null +++ b/Drivers/CMSIS/Include/core_armv8mbl.h @@ -0,0 +1,1918 @@ +/**************************************************************************//** + * @file core_armv8mbl.h + * @brief CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 22. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV8MBL_H_GENERIC +#define __CORE_ARMV8MBL_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MBL + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __ARMv8MBL_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MBL_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MBL_CMSIS_VERSION ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MBL_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M ( 2U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MBL_H_DEPENDANT +#define __CORE_ARMV8MBL_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MBL_REV + #define __ARMv8MBL_REV 0x0000U + #warning "__ARMv8MBL_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MBL */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_armv8mml.h b/Drivers/CMSIS/Include/core_armv8mml.h new file mode 100644 index 0000000..2d0f106 --- /dev/null +++ b/Drivers/CMSIS/Include/core_armv8mml.h @@ -0,0 +1,2927 @@ +/**************************************************************************//** + * @file core_armv8mml.h + * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 06. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_ARMV8MML_H_GENERIC +#define __CORE_ARMV8MML_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_ARMv8MML + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS Armv8MML definitions */ +#define __ARMv8MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MML_CMSIS_VERSION ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (81U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MML_H_DEPENDANT +#define __CORE_ARMV8MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MML_REV + #define __ARMv8MML_REV 0x0000U + #warning "__ARMv8MML_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group ARMv8MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm0.h b/Drivers/CMSIS/Include/core_cm0.h new file mode 100644 index 0000000..6f82227 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm0.h @@ -0,0 +1,949 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V5.0.5 + * @date 28. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0_H_GENERIC +#define __CORE_CM0_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M0 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0 definitions */ +#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ + __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0_H_DEPENDANT +#define __CORE_CM0_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0_REV + #define __CM0_REV 0x0000U + #warning "__CM0_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M0 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm0plus.h b/Drivers/CMSIS/Include/core_cm0plus.h new file mode 100644 index 0000000..b9377e8 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm0plus.h @@ -0,0 +1,1083 @@ +/**************************************************************************//** + * @file core_cm0plus.h + * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File + * @version V5.0.6 + * @date 28. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM0PLUS_H_GENERIC +#define __CORE_CM0PLUS_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex-M0+ + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0+ definitions */ +#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0PLUS_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \ + __CM0PLUS_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0PLUS_H_DEPENDANT +#define __CORE_CM0PLUS_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0PLUS_REV + #define __CM0PLUS_REV 0x0000U + #warning "__CM0PLUS_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex-M0+ */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 8U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0+ header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M0+ */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; + +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm1.h b/Drivers/CMSIS/Include/core_cm1.h new file mode 100644 index 0000000..fd1c407 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm1.h @@ -0,0 +1,976 @@ +/**************************************************************************//** + * @file core_cm1.h + * @brief CMSIS Cortex-M1 Core Peripheral Access Layer Header File + * @version V1.0.0 + * @date 23. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM1_H_GENERIC +#define __CORE_CM1_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M1 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM1 definitions */ +#define __CM1_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM1_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM1_CMSIS_VERSION ((__CM1_CMSIS_VERSION_MAIN << 16U) | \ + __CM1_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (1U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM1_H_DEPENDANT +#define __CORE_CM1_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM1_REV + #define __CM1_REV 0x0100U + #warning "__CM1_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M1 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + uint32_t RESERVED0; + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_ITCMUAEN_Pos 4U /*!< ACTLR: Instruction TCM Upper Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMUAEN_Msk (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos) /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */ + +#define SCnSCB_ACTLR_ITCMLAEN_Pos 3U /*!< ACTLR: Instruction TCM Lower Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMLAEN_Msk (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos) /*!< ACTLR: Instruction TCM Lower Alias Enable Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M1 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M1 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for Cortex-M1 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + Address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm23.h b/Drivers/CMSIS/Include/core_cm23.h new file mode 100644 index 0000000..8202a8d --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm23.h @@ -0,0 +1,1993 @@ +/**************************************************************************//** + * @file core_cm23.h + * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File + * @version V5.0.7 + * @date 22. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM23_H_GENERIC +#define __CORE_CM23_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M23 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __CM23_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM23_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM23_CMSIS_VERSION ((__CM23_CMSIS_VERSION_MAIN << 16U) | \ + __CM23_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (23U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM23_H_DEPENDANT +#define __CORE_CM23_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM23_REV + #define __CM23_REV 0x0000U + #warning "__CM23_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT not defined in device header file; using default!" + #endif + +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M23 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for Cortex-M23 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for Cortex-M23 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm3.h b/Drivers/CMSIS/Include/core_cm3.h new file mode 100644 index 0000000..b0dfbd3 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm3.h @@ -0,0 +1,1941 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM3_H_GENERIC +#define __CORE_CM3_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M3 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16U) | \ + __CM3_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (3U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200U + #warning "__CM3_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M3 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#if defined (__CM3_REV) && (__CM3_REV < 0x0201U) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1U]; +#endif +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm33.h b/Drivers/CMSIS/Include/core_cm33.h new file mode 100644 index 0000000..02f82e2 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm33.h @@ -0,0 +1,3002 @@ +/**************************************************************************//** + * @file core_cm33.h + * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File + * @version V5.0.9 + * @date 06. July 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM33_H_GENERIC +#define __CORE_CM33_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M33 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM33 definitions */ +#define __CM33_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM33_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM33_CMSIS_VERSION ((__CM33_CMSIS_VERSION_MAIN << 16U) | \ + __CM33_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (33U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined (__TARGET_FPU_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined (__ARM_PCS_VFP) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined (__ARMVFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined (__TI_VFP_SUPPORT__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined (__FPU_VFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM33_H_DEPENDANT +#define __CORE_CM33_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM33_REV + #define __CM33_REV 0x0000U + #warning "__CM33_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M33 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:7; /*!< bit: 9..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TRACEBUSID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TRACEBUSID_Msk (0x7FUL << ITM_TCR_TRACEBUSID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPRESCALE_Pos 8U /*!< ITM TCR: TSPRESCALE Position */ +#define ITM_TCR_TSPRESCALE_Msk (3UL << ITM_TCR_TSPRESCALE_Pos) /*!< ITM TCR: TSPRESCALE Mask */ + +#define ITM_TCR_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ + #define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ + #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ + #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ + #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ + #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ + #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ + #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ + #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + + #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ + #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ + #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ + #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ + #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ + #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ + #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE ) /*!< Core Debug configuration struct */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ + #endif + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000002UL) /* bit [1] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \param [in] priority Priority to set. + \note The priority cannot be set for every non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM33_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm4.h b/Drivers/CMSIS/Include/core_cm4.h new file mode 100644 index 0000000..308b868 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm4.h @@ -0,0 +1,2129 @@ +/**************************************************************************//** + * @file core_cm4.h + * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM4_H_GENERIC +#define __CORE_CM4_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M4 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM4 definitions */ +#define __CM4_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM4_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM4_CMSIS_VERSION ((__CM4_CMSIS_VERSION_MAIN << 16U) | \ + __CM4_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (4U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM4_H_DEPENDANT +#define __CORE_CM4_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM4_REV + #define __CM4_REV 0x0000U + #warning "__CM4_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M4 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISOOFP_Pos 9U /*!< ACTLR: DISOOFP Position */ +#define SCnSCB_ACTLR_DISOOFP_Msk (1UL << SCnSCB_ACTLR_DISOOFP_Pos) /*!< ACTLR: DISOOFP Mask */ + +#define SCnSCB_ACTLR_DISFPCA_Pos 8U /*!< ACTLR: DISFPCA Position */ +#define SCnSCB_ACTLR_DISFPCA_Msk (1UL << SCnSCB_ACTLR_DISFPCA_Pos) /*!< ACTLR: DISFPCA Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISDEFWBUF_Pos 1U /*!< ACTLR: DISDEFWBUF Position */ +#define SCnSCB_ACTLR_DISDEFWBUF_Msk (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos) /*!< ACTLR: DISDEFWBUF Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = FPU->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM4_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm7.h b/Drivers/CMSIS/Include/core_cm7.h new file mode 100644 index 0000000..ada6c2a --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm7.h @@ -0,0 +1,2671 @@ +/**************************************************************************//** + * @file core_cm7.h + * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_CM7_H_GENERIC +#define __CORE_CM7_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup Cortex_M7 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM7 definitions */ +#define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (7U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions. +*/ +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + #define __FPU_USED 1U + #else + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #define __FPU_USED 0U + #endif + #else + #define __FPU_USED 0U + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM7_H_DEPENDANT +#define __CORE_CM7_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM7_REV + #define __CM7_REV 0x0000U + #warning "__CM7_REV not defined in device header file; using default!" + #endif + + #ifndef __FPU_PRESENT + #define __FPU_PRESENT 0U + #warning "__FPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group Cortex_M7 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core FPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + +#define APSR_GE_Pos 16U /*!< APSR: GE Position */ +#define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR: GE Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_GE_Pos 16U /*!< xPSR: GE Position */ +#define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR: GE Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_FPCA_Pos 2U /*!< CONTROL: FPCA Position */ +#define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONTROL: FPCA Mask */ + +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED3[93U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_BP_Pos 18U /*!< SCB CCR: Branch prediction enable bit Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: Branch prediction enable bit Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: Instruction cache enable bit Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: Instruction cache enable bit Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: Cache enable bit Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: Cache enable bit Mask */ + +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB CFSR (MMFSR): MLSPERR Position */ +#define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB CFSR (MMFSR): MLSPERR Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB CFSR (BFSR): LSPERR Position */ +#define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB CFSR (BFSR): LSPERR Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: DISRAMODE Position */ +#define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: DISRAMODE Mask */ + +#define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS Mask */ + +#define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: DISFOLD Position */ +#define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: DISFOLD Mask */ + +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED3[981U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 4U + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_FPU Floating Point Unit (FPU) + \brief Type definitions for the Floating Point Unit (FPU) + @{ + */ + +/** + \brief Structure type to access the Floating Point Unit (FPU). + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control Register */ + __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address Register */ + __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Control Register */ + __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 */ +} FPU_Type; + +/* Floating-Point Context Control Register Definitions */ +#define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCCR: ASPEN bit Position */ +#define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCCR: ASPEN bit Mask */ + +#define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCCR: LSPEN Position */ +#define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCCR: LSPEN bit Mask */ + +#define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCCR: MONRDY Position */ +#define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCCR: MONRDY bit Mask */ + +#define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCCR: BFRDY Position */ +#define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCCR: BFRDY bit Mask */ + +#define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCCR: MMRDY Position */ +#define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCCR: MMRDY bit Mask */ + +#define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCCR: HFRDY Position */ +#define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCCR: HFRDY bit Mask */ + +#define FPU_FPCCR_THREAD_Pos 3U /*!< FPCCR: processor mode bit Position */ +#define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCCR: processor mode active bit Mask */ + +#define FPU_FPCCR_USER_Pos 1U /*!< FPCCR: privilege level bit Position */ +#define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCCR: privilege level bit Mask */ + +#define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCCR: Lazy state preservation active bit Position */ +#define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCCR: Lazy state preservation active bit Mask */ + +/* Floating-Point Context Address Register Definitions */ +#define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCAR: ADDRESS bit Position */ +#define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCAR: ADDRESS bit Mask */ + +/* Floating-Point Default Status Control Register Definitions */ +#define FPU_FPDSCR_AHP_Pos 26U /*!< FPDSCR: AHP bit Position */ +#define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDSCR: AHP bit Mask */ + +#define FPU_FPDSCR_DN_Pos 25U /*!< FPDSCR: DN bit Position */ +#define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDSCR: DN bit Mask */ + +#define FPU_FPDSCR_FZ_Pos 24U /*!< FPDSCR: FZ bit Position */ +#define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDSCR: FZ bit Mask */ + +#define FPU_FPDSCR_RMode_Pos 22U /*!< FPDSCR: RMode bit Position */ +#define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDSCR: RMode bit Mask */ + +/* Media and FP Feature Register 0 Definitions */ +#define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR0: FP rounding modes bits Position */ +#define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR0: FP rounding modes bits Mask */ + +#define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR0: Short vectors bits Position */ +#define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR0: Short vectors bits Mask */ + +#define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR0: Square root bits Position */ +#define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR0: Square root bits Mask */ + +#define FPU_MVFR0_Divide_Pos 16U /*!< MVFR0: Divide bits Position */ +#define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR0: Divide bits Mask */ + +#define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR0: FP exception trapping bits Position */ +#define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR0: FP exception trapping bits Mask */ + +#define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR0: Double-precision bits Position */ +#define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR0: Double-precision bits Mask */ + +#define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR0: Single-precision bits Position */ +#define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR0: Single-precision bits Mask */ + +#define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR0: A_SIMD registers bits Position */ +#define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR0: A_SIMD registers bits Mask */ + +/* Media and FP Feature Register 1 Definitions */ +#define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR1: FP fused MAC bits Position */ +#define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR1: FP fused MAC bits Mask */ + +#define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR1: FP HPFP bits Position */ +#define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR1: FP HPFP bits Mask */ + +#define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR1: D_NaN mode bits Position */ +#define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR1: D_NaN mode bits Mask */ + +#define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR1: FtZ mode bits Position */ +#define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR1: FtZ mode bits Mask */ + +/* Media and FP Feature Register 2 Definitions */ + +/*@} end of group CMSIS_FPU */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +#define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +#define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ +#define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after return, restore floating-point state */ +#define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after return, restore floating-point state */ + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv7.h" + +#endif + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + uint32_t mvfr0; + + mvfr0 = SCB->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) + { + return 1U; /* Single precision FPU */ + } + else + { + return 0U; /* No FPU */ + } +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## Cache functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_INLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_INLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_INLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_INLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_INLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_INLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_INLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_INLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_InvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t)addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCIMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t) addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCCMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_INLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + int32_t op_size = dsize; + uint32_t op_addr = (uint32_t) addr; + int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ + + __DSB(); + + while (op_size > 0) { + SCB->DCCIMVAC = op_addr; + op_addr += (uint32_t)linesize; + op_size -= linesize; + } + + __DSB(); + __ISB(); + #endif +} + + +/*@} end of CMSIS_Core_CacheFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM7_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_sc000.h b/Drivers/CMSIS/Include/core_sc000.h new file mode 100644 index 0000000..9086c64 --- /dev/null +++ b/Drivers/CMSIS/Include/core_sc000.h @@ -0,0 +1,1022 @@ +/**************************************************************************//** + * @file core_sc000.h + * @brief CMSIS SC000 Core Peripheral Access Layer Header File + * @version V5.0.5 + * @date 28. May 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC000_H_GENERIC +#define __CORE_SC000_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC000 definitions */ +#define __SC000_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC000_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC000_CMSIS_VERSION ((__SC000_CMSIS_VERSION_MAIN << 16U) | \ + __SC000_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (000U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC000_H_DEPENDANT +#define __CORE_SC000_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC000_REV + #define __SC000_REV 0x0000U + #warning "__SC000_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC000 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:28; /*!< bit: 0..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + uint32_t RESERVED0[1U]; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + uint32_t RESERVED1[154U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: DISMCYCINT Position */ +#define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: DISMCYCINT Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the SC000 header file. + @{ + */ +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else +/*#define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping not available for SC000 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for SC000 */ + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +/*#define NVIC_GetActive __NVIC_GetActive not available for SC000 */ + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + 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))); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_sc300.h b/Drivers/CMSIS/Include/core_sc300.h new file mode 100644 index 0000000..665822d --- /dev/null +++ b/Drivers/CMSIS/Include/core_sc300.h @@ -0,0 +1,1915 @@ +/**************************************************************************//** + * @file core_sc300.h + * @brief CMSIS SC300 Core Peripheral Access Layer Header File + * @version V5.0.6 + * @date 04. June 2018 + ******************************************************************************/ +/* + * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef __CORE_SC300_H_GENERIC +#define __CORE_SC300_H_GENERIC + +#include + +#ifdef __cplusplus + extern "C" { +#endif + +/** + \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + CMSIS violates the following MISRA-C:2004 rules: + + \li Required Rule 8.5, object/function definition in header file.
+ Function definitions in header files are used to allow 'inlining'. + + \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ Unions are used for effective representation of core registers. + + \li Advisory Rule 19.7, Function-like macro defined.
+ Function-like macros are used to allow more efficient code. + */ + + +/******************************************************************************* + * CMSIS definitions + ******************************************************************************/ +/** + \ingroup SC3000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC300 definitions */ +#define __SC300_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC300_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC300_CMSIS_VERSION ((__SC300_CMSIS_VERSION_MAIN << 16U) | \ + __SC300_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (300U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_PCS_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC300_H_DEPENDANT +#define __CORE_SC300_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC300_REV + #define __SC300_REV 0x0000U + #warning "__SC300_REV not defined in device header file; using default!" + #endif + + #ifndef __MPU_PRESENT + #define __MPU_PRESENT 0U + #warning "__MPU_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 3U + #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + #endif + + #ifndef __Vendor_SysTickConfig + #define __Vendor_SysTickConfig 0U + #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + #endif +#endif + +/* IO definitions (access restrictions to peripheral registers) */ +/** + \defgroup CMSIS_glob_defs CMSIS Global Defines + + IO Type Qualifiers are used + \li to specify the access to peripheral variables. + \li for automatic generation of peripheral register debug information. +*/ +#ifdef __cplusplus + #define __I volatile /*!< Defines 'read only' permissions */ +#else + #define __I volatile const /*!< Defines 'read only' permissions */ +#endif +#define __O volatile /*!< Defines 'write only' permissions */ +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/* following defines should be used for structure members */ +#define __IM volatile const /*! Defines 'read only' structure member permissions */ +#define __OM volatile /*! Defines 'write only' structure member permissions */ +#define __IOM volatile /*! Defines 'read / write' structure member permissions */ + +/*@} end of group SC300 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + ******************************************************************************/ +/** + \defgroup CMSIS_core_register Defines and Type Definitions + \brief Type definitions and defines for Cortex-M processor based devices. +*/ + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CORE Status and Control Registers + \brief Core Register type definitions. + @{ + */ + +/** + \brief Union type to access the Application Program Status Register (APSR). + */ +typedef union +{ + struct + { + uint32_t _reserved0:27; /*!< bit: 0..26 Reserved */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} APSR_Type; + +/* APSR Register Definitions */ +#define APSR_N_Pos 31U /*!< APSR: N Position */ +#define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR: N Mask */ + +#define APSR_Z_Pos 30U /*!< APSR: Z Position */ +#define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR: Z Mask */ + +#define APSR_C_Pos 29U /*!< APSR: C Position */ +#define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR: C Mask */ + +#define APSR_V_Pos 28U /*!< APSR: V Position */ +#define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR: V Mask */ + +#define APSR_Q_Pos 27U /*!< APSR: Q Position */ +#define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR: Q Mask */ + + +/** + \brief Union type to access the Interrupt Program Status Register (IPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} IPSR_Type; + +/* IPSR Register Definitions */ +#define IPSR_ISR_Pos 0U /*!< IPSR: ISR Position */ +#define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR: ISR Mask */ + + +/** + \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + */ +typedef union +{ + struct + { + uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + uint32_t _reserved1:8; /*!< bit: 16..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit */ + uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} xPSR_Type; + +/* xPSR Register Definitions */ +#define xPSR_N_Pos 31U /*!< xPSR: N Position */ +#define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR: N Mask */ + +#define xPSR_Z_Pos 30U /*!< xPSR: Z Position */ +#define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR: Z Mask */ + +#define xPSR_C_Pos 29U /*!< xPSR: C Position */ +#define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR: C Mask */ + +#define xPSR_V_Pos 28U /*!< xPSR: V Position */ +#define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR: V Mask */ + +#define xPSR_Q_Pos 27U /*!< xPSR: Q Position */ +#define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR: Q Mask */ + +#define xPSR_ICI_IT_2_Pos 25U /*!< xPSR: ICI/IT part 2 Position */ +#define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR: ICI/IT part 2 Mask */ + +#define xPSR_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T Mask */ + +#define xPSR_ICI_IT_1_Pos 10U /*!< xPSR: ICI/IT part 1 Position */ +#define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR: ICI/IT part 1 Mask */ + +#define xPSR_ISR_Pos 0U /*!< xPSR: ISR Position */ +#define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR: ISR Mask */ + + +/** + \brief Union type to access the Control Registers (CONTROL). + */ +typedef union +{ + struct + { + uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL Mask */ + +#define CONTROL_nPRIV_Pos 0U /*!< CONTROL: nPRIV Position */ +#define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONTROL: nPRIV Mask */ + +/*@} end of group CMSIS_CORE */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + \brief Type definitions for the NVIC Registers + @{ + */ + +/** + \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + */ +typedef struct +{ + __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[24U]; + __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[24U]; + __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[24U]; + __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[24U]; + __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[56U]; + __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED5[644U]; + __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Register */ +} NVIC_Type; + +/* Software Triggered Interrupt Register Definitions */ +#define NVIC_STIR_INTID_Pos 0U /*!< STIR: INTLINESNUM Position */ +#define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_NVIC */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCB System Control Block (SCB) + \brief Type definitions for the System Control Block Registers + @{ + */ + +/** + \brief Structure type to access the System Control Block (SCB). + */ +typedef struct +{ + __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Register */ + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset Control Register */ + __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register */ + __IOM uint8_t SHP[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registers (4-7, 8-11, 12-15) */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Register */ + __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register */ + __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register */ + __IM uint32_t PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[5U]; + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED1[129U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features Control Register */ +} SCB_Type; + +/* SCB CPUID Register Definitions */ +#define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB CPUID: IMPLEMENTER Position */ +#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */ + +#define SCB_CPUID_VARIANT_Pos 20U /*!< SCB CPUID: VARIANT Position */ +#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */ + +#define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB CPUID: ARCHITECTURE Position */ +#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */ + +#define SCB_CPUID_PARTNO_Pos 4U /*!< SCB CPUID: PARTNO Position */ +#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */ + +#define SCB_CPUID_REVISION_Pos 0U /*!< SCB CPUID: REVISION Position */ +#define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB CPUID: REVISION Mask */ + +/* SCB Interrupt Control State Register Definitions */ +#define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB ICSR: NMIPENDSET Position */ +#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */ + +#define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB ICSR: PENDSVSET Position */ +#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */ + +#define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB ICSR: PENDSVCLR Position */ +#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */ + +#define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB ICSR: PENDSTSET Position */ +#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */ + +#define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB ICSR: PENDSTCLR Position */ +#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */ + +#define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB ICSR: ISRPREEMPT Position */ +#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */ + +#define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB ICSR: ISRPENDING Position */ +#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */ + +#define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB ICSR: VECTPENDING Position */ +#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */ + +#define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB ICSR: RETTOBASE Position */ +#define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB ICSR: RETTOBASE Mask */ + +#define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Vector Table Offset Register Definitions */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ + +/* SCB Application Interrupt and Reset Control Register Definitions */ +#define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB AIRCR: VECTKEY Position */ +#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */ + +#define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB AIRCR: VECTKEYSTAT Position */ +#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */ + +#define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB AIRCR: ENDIANESS Position */ +#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */ + +#define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB AIRCR: PRIGROUP Position */ +#define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB AIRCR: PRIGROUP Mask */ + +#define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB AIRCR: SYSRESETREQ Position */ +#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */ + +#define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB AIRCR: VECTCLRACTIVE Position */ +#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */ + +#define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB AIRCR: VECTRESET Position */ +#define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB AIRCR: VECTRESET Mask */ + +/* SCB System Control Register Definitions */ +#define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB SCR: SEVONPEND Position */ +#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */ + +#define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB SCR: SLEEPDEEP Position */ +#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */ + +#define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB SCR: SLEEPONEXIT Position */ +#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */ + +/* SCB Configuration Control Register Definitions */ +#define SCB_CCR_STKALIGN_Pos 9U /*!< SCB CCR: STKALIGN Position */ +#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */ + +#define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB CCR: BFHFNMIGN Position */ +#define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB CCR: BFHFNMIGN Mask */ + +#define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB CCR: DIV_0_TRP Position */ +#define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB CCR: DIV_0_TRP Mask */ + +#define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB CCR: UNALIGN_TRP Position */ +#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */ + +#define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB CCR: USERSETMPEND Position */ +#define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB CCR: USERSETMPEND Mask */ + +#define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB CCR: NONBASETHRDENA Position */ +#define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB CCR: NONBASETHRDENA Mask */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB SHCSR: USGFAULTENA Position */ +#define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB SHCSR: USGFAULTENA Mask */ + +#define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB SHCSR: BUSFAULTENA Position */ +#define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB SHCSR: BUSFAULTENA Mask */ + +#define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB SHCSR: MEMFAULTENA Position */ +#define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB SHCSR: MEMFAULTENA Mask */ + +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +#define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB SHCSR: BUSFAULTPENDED Position */ +#define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB SHCSR: BUSFAULTPENDED Mask */ + +#define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB SHCSR: MEMFAULTPENDED Position */ +#define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB SHCSR: MEMFAULTPENDED Mask */ + +#define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB SHCSR: USGFAULTPENDED Position */ +#define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB SHCSR: USGFAULTPENDED Mask */ + +#define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB SHCSR: SYSTICKACT Position */ +#define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB SHCSR: SYSTICKACT Mask */ + +#define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB SHCSR: PENDSVACT Position */ +#define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB SHCSR: PENDSVACT Mask */ + +#define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB SHCSR: MONITORACT Position */ +#define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB SHCSR: MONITORACT Mask */ + +#define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB SHCSR: USGFAULTACT Position */ +#define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB SHCSR: USGFAULTACT Mask */ + +#define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB SHCSR: BUSFAULTACT Position */ +#define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB SHCSR: BUSFAULTACT Mask */ + +#define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB SHCSR: MEMFAULTACT Position */ +#define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB SHCSR: MEMFAULTACT Mask */ + +/* SCB Configurable Fault Status Register Definitions */ +#define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB CFSR: Usage Fault Status Register Position */ +#define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB CFSR: Usage Fault Status Register Mask */ + +#define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB CFSR: Bus Fault Status Register Position */ +#define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB CFSR: Bus Fault Status Register Mask */ + +#define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB CFSR: Memory Manage Fault Status Register Position */ +#define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB CFSR: Memory Manage Fault Status Register Mask */ + +/* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB CFSR (MMFSR): MMARVALID Position */ +#define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB CFSR (MMFSR): MMARVALID Mask */ + +#define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB CFSR (MMFSR): MSTKERR Position */ +#define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB CFSR (MMFSR): MSTKERR Mask */ + +#define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB CFSR (MMFSR): MUNSTKERR Position */ +#define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB CFSR (MMFSR): MUNSTKERR Mask */ + +#define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB CFSR (MMFSR): DACCVIOL Position */ +#define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB CFSR (MMFSR): DACCVIOL Mask */ + +#define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB CFSR (MMFSR): IACCVIOL Position */ +#define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB CFSR (MMFSR): IACCVIOL Mask */ + +/* BusFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB CFSR (BFSR): BFARVALID Position */ +#define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB CFSR (BFSR): BFARVALID Mask */ + +#define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB CFSR (BFSR): STKERR Position */ +#define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB CFSR (BFSR): STKERR Mask */ + +#define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB CFSR (BFSR): UNSTKERR Position */ +#define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB CFSR (BFSR): UNSTKERR Mask */ + +#define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB CFSR (BFSR): IMPRECISERR Position */ +#define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB CFSR (BFSR): IMPRECISERR Mask */ + +#define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB CFSR (BFSR): PRECISERR Position */ +#define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB CFSR (BFSR): PRECISERR Mask */ + +#define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB CFSR (BFSR): IBUSERR Position */ +#define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB CFSR (BFSR): IBUSERR Mask */ + +/* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ +#define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB CFSR (UFSR): DIVBYZERO Position */ +#define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB CFSR (UFSR): DIVBYZERO Mask */ + +#define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB CFSR (UFSR): UNALIGNED Position */ +#define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB CFSR (UFSR): UNALIGNED Mask */ + +#define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB CFSR (UFSR): NOCP Position */ +#define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB CFSR (UFSR): NOCP Mask */ + +#define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB CFSR (UFSR): INVPC Position */ +#define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB CFSR (UFSR): INVPC Mask */ + +#define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB CFSR (UFSR): INVSTATE Position */ +#define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB CFSR (UFSR): INVSTATE Mask */ + +#define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB CFSR (UFSR): UNDEFINSTR Position */ +#define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB CFSR (UFSR): UNDEFINSTR Mask */ + +/* SCB Hard Fault Status Register Definitions */ +#define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB HFSR: DEBUGEVT Position */ +#define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB HFSR: DEBUGEVT Mask */ + +#define SCB_HFSR_FORCED_Pos 30U /*!< SCB HFSR: FORCED Position */ +#define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB HFSR: FORCED Mask */ + +#define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB HFSR: VECTTBL Position */ +#define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB HFSR: VECTTBL Mask */ + +/* SCB Debug Fault Status Register Definitions */ +#define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB DFSR: EXTERNAL Position */ +#define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB DFSR: EXTERNAL Mask */ + +#define SCB_DFSR_VCATCH_Pos 3U /*!< SCB DFSR: VCATCH Position */ +#define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB DFSR: VCATCH Mask */ + +#define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB DFSR: DWTTRAP Position */ +#define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB DFSR: DWTTRAP Mask */ + +#define SCB_DFSR_BKPT_Pos 1U /*!< SCB DFSR: BKPT Position */ +#define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB DFSR: BKPT Mask */ + +#define SCB_DFSR_HALTED_Pos 0U /*!< SCB DFSR: HALTED Position */ +#define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB DFSR: HALTED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + \brief Type definitions for the System Control and ID Register not in the SCB + @{ + */ + +/** + \brief Structure type to access the System Control and ID Register not in the SCB. + */ +typedef struct +{ + uint32_t RESERVED0[1U]; + __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Register */ + uint32_t RESERVED1[1U]; +} SCnSCB_Type; + +/* Interrupt Controller Type Register Definitions */ +#define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: INTLINESNUM Position */ +#define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: INTLINESNUM Mask */ + +/*@} end of group CMSIS_SCnotSCB */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SysTick System Tick Timer (SysTick) + \brief Type definitions for the System Timer Registers. + @{ + */ + +/** + \brief Structure type to access the System Timer (SysTick). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Register */ + __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register */ + __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ +} SysTick_Type; + +/* SysTick Control / Status Register Definitions */ +#define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysTick CTRL: COUNTFLAG Position */ +#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ + +#define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysTick CTRL: CLKSOURCE Position */ +#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */ + +#define SysTick_CTRL_TICKINT_Pos 1U /*!< SysTick CTRL: TICKINT Position */ +#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */ + +#define SysTick_CTRL_ENABLE_Pos 0U /*!< SysTick CTRL: ENABLE Position */ +#define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysTick CTRL: ENABLE Mask */ + +/* SysTick Reload Register Definitions */ +#define SysTick_LOAD_RELOAD_Pos 0U /*!< SysTick LOAD: RELOAD Position */ +#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysTick LOAD: RELOAD Mask */ + +/* SysTick Current Register Definitions */ +#define SysTick_VAL_CURRENT_Pos 0U /*!< SysTick VAL: CURRENT Position */ +#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysTick VAL: CURRENT Mask */ + +/* SysTick Calibration Register Definitions */ +#define SysTick_CALIB_NOREF_Pos 31U /*!< SysTick CALIB: NOREF Position */ +#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */ + +#define SysTick_CALIB_SKEW_Pos 30U /*!< SysTick CALIB: SKEW Position */ +#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */ + +#define SysTick_CALIB_TENMS_Pos 0U /*!< SysTick CALIB: TENMS Position */ +#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysTick CALIB: TENMS Mask */ + +/*@} end of group CMSIS_SysTick */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) + \brief Type definitions for the Instrumentation Trace Macrocell (ITM) + @{ + */ + +/** + \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). + */ +typedef struct +{ + __OM union + { + __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ + __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ + __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ + } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ + uint32_t RESERVED0[864U]; + __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ + uint32_t RESERVED1[15U]; + __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ + uint32_t RESERVED2[15U]; + __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ + uint32_t RESERVED3[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + uint32_t RESERVED4[43U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ + uint32_t RESERVED5[6U]; + __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Register #4 */ + __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Register #5 */ + __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Register #6 */ + __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Register #7 */ + __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Register #0 */ + __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Register #1 */ + __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Register #2 */ + __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Register #3 */ + __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Register #0 */ + __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Register #1 */ + __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Register #2 */ + __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Register #3 */ +} ITM_Type; + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM TPR: PRIVMASK Mask */ + +/* ITM Trace Control Register Definitions */ +#define ITM_TCR_BUSY_Pos 23U /*!< ITM TCR: BUSY Position */ +#define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM TCR: BUSY Mask */ + +#define ITM_TCR_TraceBusID_Pos 16U /*!< ITM TCR: ATBID Position */ +#define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM TCR: ATBID Mask */ + +#define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM TCR: Global timestamp frequency Position */ +#define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM TCR: Global timestamp frequency Mask */ + +#define ITM_TCR_TSPrescale_Pos 8U /*!< ITM TCR: TSPrescale Position */ +#define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM TCR: TSPrescale Mask */ + +#define ITM_TCR_SWOENA_Pos 4U /*!< ITM TCR: SWOENA Position */ +#define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM TCR: SWOENA Mask */ + +#define ITM_TCR_DWTENA_Pos 3U /*!< ITM TCR: DWTENA Position */ +#define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM TCR: DWTENA Mask */ + +#define ITM_TCR_SYNCENA_Pos 2U /*!< ITM TCR: SYNCENA Position */ +#define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM TCR: SYNCENA Mask */ + +#define ITM_TCR_TSENA_Pos 1U /*!< ITM TCR: TSENA Position */ +#define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM TCR: TSENA Mask */ + +#define ITM_TCR_ITMENA_Pos 0U /*!< ITM TCR: ITM Enable bit Position */ +#define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM TCR: ITM Enable bit Mask */ + +/* ITM Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION Mask */ + +/* ITM Lock Status Register Definitions */ +#define ITM_LSR_ByteAcc_Pos 2U /*!< ITM LSR: ByteAcc Position */ +#define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM LSR: ByteAcc Mask */ + +#define ITM_LSR_Access_Pos 1U /*!< ITM LSR: Access Position */ +#define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM LSR: Access Mask */ + +#define ITM_LSR_Present_Pos 0U /*!< ITM LSR: Present Position */ +#define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM LSR: Present Mask */ + +/*@}*/ /* end of group CMSIS_ITM */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) + \brief Type definitions for the Data Watchpoint and Trace (DWT) + @{ + */ + +/** + \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ + __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ + __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ + __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Register */ + __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ + __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ + __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Register */ + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +} DWT_Type; + +/* DWT Control Register Definitions */ +#define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTRL: NUMCOMP Position */ +#define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTRL: NUMCOMP Mask */ + +#define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTRL: NOTRCPKT Position */ +#define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTRL: NOTRCPKT Mask */ + +#define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTRL: NOEXTTRIG Position */ +#define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTRL: NOEXTTRIG Mask */ + +#define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTRL: NOCYCCNT Position */ +#define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTRL: NOCYCCNT Mask */ + +#define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTRL: NOPRFCNT Position */ +#define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTRL: NOPRFCNT Mask */ + +#define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTRL: CYCEVTENA Position */ +#define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTRL: CYCEVTENA Mask */ + +#define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTRL: FOLDEVTENA Position */ +#define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTRL: FOLDEVTENA Mask */ + +#define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTRL: LSUEVTENA Position */ +#define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTRL: LSUEVTENA Mask */ + +#define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTRL: SLEEPEVTENA Position */ +#define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTRL: SLEEPEVTENA Mask */ + +#define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTRL: EXCEVTENA Position */ +#define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTRL: EXCEVTENA Mask */ + +#define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTRL: CPIEVTENA Position */ +#define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTRL: CPIEVTENA Mask */ + +#define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTRL: EXCTRCENA Position */ +#define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTRL: EXCTRCENA Mask */ + +#define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTRL: PCSAMPLENA Position */ +#define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTRL: PCSAMPLENA Mask */ + +#define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTRL: SYNCTAP Position */ +#define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTRL: SYNCTAP Mask */ + +#define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTRL: CYCTAP Position */ +#define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTRL: CYCTAP Mask */ + +#define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTRL: POSTINIT Position */ +#define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTRL: POSTINIT Mask */ + +#define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTRL: POSTPRESET Position */ +#define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTRL: POSTPRESET Mask */ + +#define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTRL: CYCCNTENA Position */ +#define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTRL: CYCCNTENA Mask */ + +/* DWT CPI Count Register Definitions */ +#define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPICNT: CPICNT Position */ +#define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPICNT: CPICNT Mask */ + +/* DWT Exception Overhead Count Register Definitions */ +#define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXCCNT: EXCCNT Position */ +#define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXCCNT: EXCCNT Mask */ + +/* DWT Sleep Count Register Definitions */ +#define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLEEPCNT: SLEEPCNT Position */ +#define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLEEPCNT: SLEEPCNT Mask */ + +/* DWT LSU Count Register Definitions */ +#define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSUCNT: LSUCNT Position */ +#define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSUCNT: LSUCNT Mask */ + +/* DWT Folded-instruction Count Register Definitions */ +#define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOLDCNT: FOLDCNT Position */ +#define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOLDCNT: FOLDCNT Mask */ + +/* DWT Comparator Mask Register Definitions */ +#define DWT_MASK_MASK_Pos 0U /*!< DWT MASK: MASK Position */ +#define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MASK: MASK Mask */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUNCTION: MATCHED Position */ +#define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUNCTION: MATCHED Mask */ + +#define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUNCTION: DATAVADDR1 Position */ +#define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUNCTION: DATAVADDR1 Mask */ + +#define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUNCTION: DATAVADDR0 Position */ +#define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUNCTION: DATAVADDR0 Mask */ + +#define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUNCTION: LNK1ENA Position */ +#define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUNCTION: LNK1ENA Mask */ + +#define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUNCTION: DATAVMATCH Position */ +#define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUNCTION: DATAVMATCH Mask */ + +#define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUNCTION: CYCMATCH Position */ +#define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUNCTION: CYCMATCH Mask */ + +#define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUNCTION: EMITRANGE Position */ +#define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUNCTION: EMITRANGE Mask */ + +#define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUNCTION: FUNCTION Position */ +#define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUNCTION: FUNCTION Mask */ + +/*@}*/ /* end of group CMSIS_DWT */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_TPI Trace Port Interface (TPI) + \brief Type definitions for the Trace Port Interface (TPI) + @{ + */ + +/** + \brief Structure type to access the Trace Port Interface Register (TPI). + */ +typedef struct +{ + __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Register */ + uint32_t RESERVED0[2U]; + __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Register */ + uint32_t RESERVED1[55U]; + __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register */ + uint32_t RESERVED2[131U]; + __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Register */ + __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Register */ + __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counter Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ + __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ + __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ + __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + uint32_t RESERVED5[39U]; + __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ + __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ + uint32_t RESERVED7[8U]; + __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACPR: PRESCALER Position */ +#define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACPR: PRESCALER Mask */ + +/* TPI Selected Pin Protocol Register Definitions */ +#define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPPR: TXMODE Position */ +#define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPPR: TXMODE Mask */ + +/* TPI Formatter and Flush Status Register Definitions */ +#define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFSR: FtNonStop Position */ +#define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFSR: FtNonStop Mask */ + +#define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFSR: TCPresent Position */ +#define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFSR: TCPresent Mask */ + +#define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFSR: FtStopped Position */ +#define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFSR: FtStopped Mask */ + +#define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFSR: FlInProg Position */ +#define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFSR: FlInProg Mask */ + +/* TPI Formatter and Flush Control Register Definitions */ +#define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFCR: TrigIn Position */ +#define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFCR: TrigIn Mask */ + +#define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFCR: EnFCont Position */ +#define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFCR: EnFCont Mask */ + +/* TPI TRIGGER Register Definitions */ +#define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRIGGER: TRIGGER Position */ +#define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRIGGER: TRIGGER Mask */ + +/* TPI Integration ETM Data Register Definitions (FIFO0) */ +#define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIFO0: ITM_ATVALID Position */ +#define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIFO0: ITM_ATVALID Mask */ + +#define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIFO0: ITM_bytecount Position */ +#define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIFO0: ITM_bytecount Mask */ + +#define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIFO0: ETM_ATVALID Position */ +#define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIFO0: ETM_ATVALID Mask */ + +#define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIFO0: ETM_bytecount Position */ +#define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIFO0: ETM_bytecount Mask */ + +#define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIFO0: ETM2 Position */ +#define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIFO0: ETM2 Mask */ + +#define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIFO0: ETM1 Position */ +#define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIFO0: ETM1 Mask */ + +#define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIFO0: ETM0 Position */ +#define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIFO0: ETM0 Mask */ + +/* TPI ITATBCTR2 Register Definitions */ +#define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITATBCTR2: ATREADY2 Position */ +#define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITATBCTR2: ATREADY2 Mask */ + +#define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITATBCTR2: ATREADY1 Position */ +#define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITATBCTR2: ATREADY1 Mask */ + +/* TPI Integration ITM Data Register Definitions (FIFO1) */ +#define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIFO1: ITM_ATVALID Position */ +#define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIFO1: ITM_ATVALID Mask */ + +#define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIFO1: ITM_bytecount Position */ +#define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIFO1: ITM_bytecount Mask */ + +#define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIFO1: ETM_ATVALID Position */ +#define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIFO1: ETM_ATVALID Mask */ + +#define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIFO1: ETM_bytecount Position */ +#define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIFO1: ETM_bytecount Mask */ + +#define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIFO1: ITM2 Position */ +#define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIFO1: ITM2 Mask */ + +#define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIFO1: ITM1 Position */ +#define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIFO1: ITM1 Mask */ + +#define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIFO1: ITM0 Position */ +#define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIFO1: ITM0 Mask */ + +/* TPI ITATBCTR0 Register Definitions */ +#define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITATBCTR0: ATREADY2 Position */ +#define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITATBCTR0: ATREADY2 Mask */ + +#define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITATBCTR0: ATREADY1 Position */ +#define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITATBCTR0: ATREADY1 Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITCTRL: Mode Mask */ + +/* TPI DEVID Register Definitions */ +#define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEVID: NRZVALID Position */ +#define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEVID: NRZVALID Mask */ + +#define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEVID: MANCVALID Position */ +#define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEVID: MANCVALID Mask */ + +#define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEVID: PTINVALID Position */ +#define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEVID: PTINVALID Mask */ + +#define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEVID: MinBufSz Position */ +#define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEVID: MinBufSz Mask */ + +#define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEVID: AsynClkIn Position */ +#define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEVID: AsynClkIn Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEVID: NrTraceInput Mask */ + +/* TPI DEVTYPE Register Definitions */ +#define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType Mask */ + +#define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +/*@}*/ /* end of group CMSIS_TPI */ + + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_MPU Memory Protection Unit (MPU) + \brief Type definitions for the Memory Protection Unit (MPU) + @{ + */ + +/** + \brief Structure type to access the Memory Protection Unit (MPU). + */ +typedef struct +{ + __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ + __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address Register */ + __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address Register */ + __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and Size Register */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address Register */ + __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and Size Register */ +} MPU_Type; + +/* MPU Type Register Definitions */ +#define MPU_TYPE_IREGION_Pos 16U /*!< MPU TYPE: IREGION Position */ +#define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU TYPE: IREGION Mask */ + +#define MPU_TYPE_DREGION_Pos 8U /*!< MPU TYPE: DREGION Position */ +#define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU TYPE: DREGION Mask */ + +#define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU TYPE: SEPARATE Position */ +#define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU TYPE: SEPARATE Mask */ + +/* MPU Control Register Definitions */ +#define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU CTRL: PRIVDEFENA Position */ +#define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU CTRL: PRIVDEFENA Mask */ + +#define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU CTRL: HFNMIENA Position */ +#define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU CTRL: HFNMIENA Mask */ + +#define MPU_CTRL_ENABLE_Pos 0U /*!< MPU CTRL: ENABLE Position */ +#define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU CTRL: ENABLE Mask */ + +/* MPU Region Number Register Definitions */ +#define MPU_RNR_REGION_Pos 0U /*!< MPU RNR: REGION Position */ +#define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU RNR: REGION Mask */ + +/* MPU Region Base Address Register Definitions */ +#define MPU_RBAR_ADDR_Pos 5U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU RBAR: ADDR Mask */ + +#define MPU_RBAR_VALID_Pos 4U /*!< MPU RBAR: VALID Position */ +#define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU RBAR: VALID Mask */ + +#define MPU_RBAR_REGION_Pos 0U /*!< MPU RBAR: REGION Position */ +#define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU RBAR: REGION Mask */ + +/* MPU Region Attribute and Size Register Definitions */ +#define MPU_RASR_ATTRS_Pos 16U /*!< MPU RASR: MPU Region Attribute field Position */ +#define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU RASR: MPU Region Attribute field Mask */ + +#define MPU_RASR_XN_Pos 28U /*!< MPU RASR: ATTRS.XN Position */ +#define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU RASR: ATTRS.XN Mask */ + +#define MPU_RASR_AP_Pos 24U /*!< MPU RASR: ATTRS.AP Position */ +#define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU RASR: ATTRS.AP Mask */ + +#define MPU_RASR_TEX_Pos 19U /*!< MPU RASR: ATTRS.TEX Position */ +#define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU RASR: ATTRS.TEX Mask */ + +#define MPU_RASR_S_Pos 18U /*!< MPU RASR: ATTRS.S Position */ +#define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU RASR: ATTRS.S Mask */ + +#define MPU_RASR_C_Pos 17U /*!< MPU RASR: ATTRS.C Position */ +#define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU RASR: ATTRS.C Mask */ + +#define MPU_RASR_B_Pos 16U /*!< MPU RASR: ATTRS.B Position */ +#define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU RASR: ATTRS.B Mask */ + +#define MPU_RASR_SRD_Pos 8U /*!< MPU RASR: Sub-Region Disable Position */ +#define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU RASR: Sub-Region Disable Mask */ + +#define MPU_RASR_SIZE_Pos 1U /*!< MPU RASR: Region Size Field Position */ +#define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU RASR: Region Size Field Mask */ + +#define MPU_RASR_ENABLE_Pos 0U /*!< MPU RASR: Region enable bit Position */ +#define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU RASR: Region enable bit Disable Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Type definitions for the Core Debug Registers + @{ + */ + +/** + \brief Structure type to access the Core Debug Register (CoreDebug). + */ +typedef struct +{ + __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status Register */ + __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Register */ + __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Register */ + __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Control Register */ +} CoreDebug_Type; + +/* Debug Halting Control and Status Register Definitions */ +#define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< CoreDebug DHCSR: DBGKEY Position */ +#define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< CoreDebug DHCSR: DBGKEY Mask */ + +#define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< CoreDebug DHCSR: S_RESET_ST Position */ +#define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< CoreDebug DHCSR: S_RESET_ST Mask */ + +#define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< CoreDebug DHCSR: S_RETIRE_ST Position */ +#define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */ + +#define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< CoreDebug DHCSR: S_LOCKUP Position */ +#define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< CoreDebug DHCSR: S_LOCKUP Mask */ + +#define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< CoreDebug DHCSR: S_SLEEP Position */ +#define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< CoreDebug DHCSR: S_SLEEP Mask */ + +#define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< CoreDebug DHCSR: S_HALT Position */ +#define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< CoreDebug DHCSR: S_HALT Mask */ + +#define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< CoreDebug DHCSR: S_REGRDY Position */ +#define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< CoreDebug DHCSR: S_REGRDY Mask */ + +#define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< CoreDebug DHCSR: C_SNAPSTALL Position */ +#define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */ + +#define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< CoreDebug DHCSR: C_MASKINTS Position */ +#define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< CoreDebug DHCSR: C_MASKINTS Mask */ + +#define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< CoreDebug DHCSR: C_STEP Position */ +#define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< CoreDebug DHCSR: C_STEP Mask */ + +#define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< CoreDebug DHCSR: C_HALT Position */ +#define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< CoreDebug DHCSR: C_HALT Mask */ + +#define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< CoreDebug DHCSR: C_DEBUGEN Position */ +#define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< CoreDebug DHCSR: C_DEBUGEN Mask */ + +/* Debug Core Register Selector Register Definitions */ +#define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< CoreDebug DCRSR: REGWnR Position */ +#define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< CoreDebug DCRSR: REGWnR Mask */ + +#define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< CoreDebug DCRSR: REGSEL Position */ +#define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< CoreDebug DCRSR: REGSEL Mask */ + +/* Debug Exception and Monitor Control Register Definitions */ +#define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< CoreDebug DEMCR: TRCENA Position */ +#define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< CoreDebug DEMCR: TRCENA Mask */ + +#define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< CoreDebug DEMCR: MON_REQ Position */ +#define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< CoreDebug DEMCR: MON_REQ Mask */ + +#define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< CoreDebug DEMCR: MON_STEP Position */ +#define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< CoreDebug DEMCR: MON_STEP Mask */ + +#define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< CoreDebug DEMCR: MON_PEND Position */ +#define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< CoreDebug DEMCR: MON_PEND Mask */ + +#define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< CoreDebug DEMCR: MON_EN Position */ +#define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< CoreDebug DEMCR: MON_EN Mask */ + +#define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< CoreDebug DEMCR: VC_HARDERR Position */ +#define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< CoreDebug DEMCR: VC_HARDERR Mask */ + +#define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< CoreDebug DEMCR: VC_INTERR Position */ +#define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< CoreDebug DEMCR: VC_INTERR Mask */ + +#define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< CoreDebug DEMCR: VC_BUSERR Position */ +#define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< CoreDebug DEMCR: VC_BUSERR Mask */ + +#define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< CoreDebug DEMCR: VC_STATERR Position */ +#define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< CoreDebug DEMCR: VC_STATERR Mask */ + +#define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< CoreDebug DEMCR: VC_CHKERR Position */ +#define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< CoreDebug DEMCR: VC_CHKERR Mask */ + +#define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< CoreDebug DEMCR: VC_NOCPERR Position */ +#define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< CoreDebug DEMCR: VC_NOCPERR Mask */ + +#define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< CoreDebug DEMCR: VC_MMERR Position */ +#define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< CoreDebug DEMCR: VC_MMERR Mask */ + +#define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< CoreDebug DEMCR: VC_CORERESET Position */ +#define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< CoreDebug DEMCR: VC_CORERESET Mask */ + +/*@} end of group CMSIS_CoreDebug */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_bitfield Core register bit field macros + \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). + @{ + */ + +/** + \brief Mask and shift a bit field value for use in a register bit range. + \param[in] field Name of the register bit field. + \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. + \return Masked and shifted value. +*/ +#define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + +/** + \brief Mask and shift a register value to extract a bit filed value. + \param[in] field Name of the register bit field. + \param[in] value Value of register. This parameter is interpreted as an uint32_t type. + \return Masked and shifted bit field value. +*/ +#define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) + +/*@} end of group CMSIS_core_bitfield */ + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_core_base Core Definitions + \brief Definitions for base addresses, unions, and structures. + @{ + */ + +/* Memory mapping of Core Hardware */ +#define SCS_BASE (0xE000E000UL) /*!< System Control Space Base Address */ +#define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +#define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +#define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +#define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address */ +#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +#define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +#define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Base Address */ + +#define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register not in SCB */ +#define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct */ +#define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration struct */ +#define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struct */ +#define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct */ +#define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct */ +#define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct */ +#define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration struct */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit */ + #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit */ +#endif + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick Functions + - Core Debug Functions + - Core Register Access Functions + ******************************************************************************/ +/** + \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +*/ + + + +/* ########################## NVIC functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_NVICFunctions NVIC Functions + \brief Functions that manage interrupts and exceptions via the NVIC. + @{ + */ + +#ifdef CMSIS_NVIC_VIRTUAL + #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE + #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" + #endif + #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping + #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping + #define NVIC_EnableIRQ __NVIC_EnableIRQ + #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ + #define NVIC_DisableIRQ __NVIC_DisableIRQ + #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ + #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ + #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ + #define NVIC_GetActive __NVIC_GetActive + #define NVIC_SetPriority __NVIC_SetPriority + #define NVIC_GetPriority __NVIC_GetPriority + #define NVIC_SystemReset __NVIC_SystemReset +#endif /* CMSIS_NVIC_VIRTUAL */ + +#ifdef CMSIS_VECTAB_VIRTUAL + #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE + #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" + #endif + #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +#else + #define NVIC_SetVector __NVIC_SetVector + #define NVIC_GetVector __NVIC_GetVector +#endif /* (CMSIS_VECTAB_VIRTUAL) */ + +#define NVIC_USER_IRQ_OFFSET 16 + + +/* The following EXC_RETURN values are saved the LR on exception entry */ +#define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after return */ +#define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after return */ +#define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after return */ + + + +/** + \brief Set Priority Grouping + \details Sets the priority grouping field using the required unlock sequence. + The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. + Only values from 0..7 are used. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Priority grouping field. + */ +__STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB->AIRCR; /* read old register configuration */ + reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ + reg_value = (reg_value | + ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (PriorityGroupTmp << 8U) ); /* Insert write key and priorty group */ + SCB->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping + \details Reads the priority grouping field from the NVIC Interrupt Controller. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +{ + return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status + \details Returns a device specific interrupt enable status from the NVIC interrupt controller. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt is not enabled. + \return 1 Interrupt is enabled. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt + \details Disables 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_DisableIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + __DSB(); + __ISB(); + } +} + + +/** + \brief Get Pending Interrupt + \details Reads the NVIC pending register and returns the pending bit for the specified device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not pending. + \return 1 Interrupt status is pending. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt + \details Sets the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt + \details Clears the pending bit of a device specific interrupt in the NVIC pending register. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt + \details Reads the active register in the NVIC and returns the active bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 Interrupt status is not active. + \return 1 Interrupt status is active. + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority + \details Sets the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \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) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority + \details Reads the priority of a device specific interrupt or a processor exception. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Interrupt Priority. + Value is aligned automatically to the implemented priority bits of the microcontroller. + */ +__STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHP[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \brief Encode Priority + \details Encodes the priority for an interrupt with the given priority group, + preemptive priority value, and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. + \param [in] PriorityGroup Used priority group. + \param [in] PreemptPriority Preemptive priority value (starting from 0). + \param [in] SubPriority Subpriority value (starting from 0). + \return Encoded priority. Value can be used in the function \ref NVIC_SetPriority(). + */ +__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + return ( + ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | + ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + ); +} + + +/** + \brief Decode Priority + \details Decodes an interrupt priority value with a given priority group to + preemptive priority value and subpriority value. + In case of a conflict between priority grouping and available + priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. + \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC_GetPriority(). + \param [in] PriorityGroup Used priority group. + \param [out] pPreemptPriority Preemptive priority value (starting from 0). + \param [out] pSubPriority Subpriority value (starting from 0). + */ +__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority) +{ + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + uint32_t PreemptPriorityBits; + uint32_t SubPriorityBits; + + PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); + SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); + + *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL); + *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1UL); +} + + +/** + \brief Set Interrupt Vector + \details Sets an interrupt vector in SRAM based interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + VTOR must been relocated to SRAM before. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +} + + +/** + \brief Get Interrupt Vector + \details Reads an interrupt vector from interrupt vector table. + The interrupt number can be positive to specify a device specific interrupt, + or negative to specify a processor exception. + \param [in] IRQn Interrupt number. + \return Address of interrupt handler function + */ +__STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +{ + uint32_t *vectors = (uint32_t *)SCB->VTOR; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \brief System Reset + \details Initiates a system reset request to reset the MCU. + */ +__NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) +{ + __DSB(); /* Ensure all outstanding memory accesses included + buffered write are completed before reset */ + SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchanged */ + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## FPU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_FpuFunctions FPU Functions + \brief Function that provides FPU type. + @{ + */ + +/** + \brief get FPU type + \details returns the FPU type + \returns + - \b 0: No FPU + - \b 1: Single precision FPU + - \b 2: Double + Single precision FPU + */ +__STATIC_INLINE uint32_t SCB_GetFPUType(void) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ################################## SysTick function ############################################ */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SysTickFunctions SysTick Functions + \brief Functions that configure the System. + @{ + */ + +#if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) + +/** + \brief System Tick Configuration + \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. + Counter is in free running mode to generate periodic interrupts. + \param [in] ticks Number of ticks between two interrupts. + \return 0 Function succeeded. + \return 1 Function failed. + \note When the variable __Vendor_SysTickConfig is set to 1, then the + function SysTick_Config is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + */ +__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + +/* ##################################### Debug In/Output function ########################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_core_DebugFunctions ITM Functions + \brief Functions that access the ITM debug interface. + @{ + */ + +extern volatile int32_t ITM_RxBuffer; /*!< External variable to receive characters. */ +#define ITM_RXBUFFER_EMPTY ((int32_t)0x5AA55AA5U) /*!< Value identifying \ref ITM_RxBuffer is ready for next character. */ + + +/** + \brief ITM Send Character + \details Transmits a character via the ITM channel 0, and + \li Just returns when no debugger is connected that has booked the output. + \li Is blocking when a debugger is connected, but the previous character sent has not been transmitted. + \param [in] ch Character to transmit. + \returns Character to transmit. + */ +__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch) +{ + if (((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0UL) && /* ITM enabled */ + ((ITM->TER & 1UL ) != 0UL) ) /* ITM Port #0 enabled */ + { + while (ITM->PORT[0U].u32 == 0UL) + { + __NOP(); + } + ITM->PORT[0U].u8 = (uint8_t)ch; + } + return (ch); +} + + +/** + \brief ITM Receive Character + \details Inputs a character via the external variable \ref ITM_RxBuffer. + \return Received character. + \return -1 No character pending. + */ +__STATIC_INLINE int32_t ITM_ReceiveChar (void) +{ + int32_t ch = -1; /* no character available */ + + if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) + { + ch = ITM_RxBuffer; + ITM_RxBuffer = ITM_RXBUFFER_EMPTY; /* ready for next character */ + } + + return (ch); +} + + +/** + \brief ITM Check Character + \details Checks whether a character is pending for reading in the variable \ref ITM_RxBuffer. + \return 0 No character available. + \return 1 Character available. + */ +__STATIC_INLINE int32_t ITM_CheckChar (void) +{ + + if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) + { + return (0); /* no character available */ + } + else + { + return (1); /* character available */ + } +} + +/*@} end of CMSIS_core_DebugFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/mpu_armv7.h b/Drivers/CMSIS/Include/mpu_armv7.h new file mode 100644 index 0000000..7d4b600 --- /dev/null +++ b/Drivers/CMSIS/Include/mpu_armv7.h @@ -0,0 +1,270 @@ +/****************************************************************************** + * @file mpu_armv7.h + * @brief CMSIS MPU API for Armv7-M MPU + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV7_H +#define ARM_MPU_ARMV7_H + +#define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) ///!< MPU Region Size 32 Bytes +#define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) ///!< MPU Region Size 64 Bytes +#define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) ///!< MPU Region Size 128 Bytes +#define ARM_MPU_REGION_SIZE_256B ((uint8_t)0x07U) ///!< MPU Region Size 256 Bytes +#define ARM_MPU_REGION_SIZE_512B ((uint8_t)0x08U) ///!< MPU Region Size 512 Bytes +#define ARM_MPU_REGION_SIZE_1KB ((uint8_t)0x09U) ///!< MPU Region Size 1 KByte +#define ARM_MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) ///!< MPU Region Size 2 KBytes +#define ARM_MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) ///!< MPU Region Size 4 KBytes +#define ARM_MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) ///!< MPU Region Size 8 KBytes +#define ARM_MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) ///!< MPU Region Size 16 KBytes +#define ARM_MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) ///!< MPU Region Size 32 KBytes +#define ARM_MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) ///!< MPU Region Size 64 KBytes +#define ARM_MPU_REGION_SIZE_128KB ((uint8_t)0x10U) ///!< MPU Region Size 128 KBytes +#define ARM_MPU_REGION_SIZE_256KB ((uint8_t)0x11U) ///!< MPU Region Size 256 KBytes +#define ARM_MPU_REGION_SIZE_512KB ((uint8_t)0x12U) ///!< MPU Region Size 512 KBytes +#define ARM_MPU_REGION_SIZE_1MB ((uint8_t)0x13U) ///!< MPU Region Size 1 MByte +#define ARM_MPU_REGION_SIZE_2MB ((uint8_t)0x14U) ///!< MPU Region Size 2 MBytes +#define ARM_MPU_REGION_SIZE_4MB ((uint8_t)0x15U) ///!< MPU Region Size 4 MBytes +#define ARM_MPU_REGION_SIZE_8MB ((uint8_t)0x16U) ///!< MPU Region Size 8 MBytes +#define ARM_MPU_REGION_SIZE_16MB ((uint8_t)0x17U) ///!< MPU Region Size 16 MBytes +#define ARM_MPU_REGION_SIZE_32MB ((uint8_t)0x18U) ///!< MPU Region Size 32 MBytes +#define ARM_MPU_REGION_SIZE_64MB ((uint8_t)0x19U) ///!< MPU Region Size 64 MBytes +#define ARM_MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) ///!< MPU Region Size 128 MBytes +#define ARM_MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) ///!< MPU Region Size 256 MBytes +#define ARM_MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) ///!< MPU Region Size 512 MBytes +#define ARM_MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) ///!< MPU Region Size 1 GByte +#define ARM_MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) ///!< MPU Region Size 2 GBytes +#define ARM_MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) ///!< MPU Region Size 4 GBytes + +#define ARM_MPU_AP_NONE 0U ///!< MPU Access Permission no access +#define ARM_MPU_AP_PRIV 1U ///!< MPU Access Permission privileged access only +#define ARM_MPU_AP_URO 2U ///!< MPU Access Permission unprivileged access read-only +#define ARM_MPU_AP_FULL 3U ///!< MPU Access Permission full access +#define ARM_MPU_AP_PRO 5U ///!< MPU Access Permission privileged access read-only +#define ARM_MPU_AP_RO 6U ///!< MPU Access Permission read-only access + +/** MPU Region Base Address Register Value +* +* \param Region The region to be configured, number 0 to 15. +* \param BaseAddress The base address for the region. +*/ +#define ARM_MPU_RBAR(Region, BaseAddress) \ + (((BaseAddress) & MPU_RBAR_ADDR_Msk) | \ + ((Region) & MPU_RBAR_REGION_Msk) | \ + (MPU_RBAR_VALID_Msk)) + +/** +* MPU Memory Access Attributes +* +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +*/ +#define ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable) \ + ((((TypeExtField ) << MPU_RASR_TEX_Pos) & MPU_RASR_TEX_Msk) | \ + (((IsShareable ) << MPU_RASR_S_Pos) & MPU_RASR_S_Msk) | \ + (((IsCacheable ) << MPU_RASR_C_Pos) & MPU_RASR_C_Msk) | \ + (((IsBufferable ) << MPU_RASR_B_Pos) & MPU_RASR_B_Msk)) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param AccessAttributes Memory access attribution, see \ref ARM_MPU_ACCESS_. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR_EX(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size) \ + ((((DisableExec ) << MPU_RASR_XN_Pos) & MPU_RASR_XN_Msk) | \ + (((AccessPermission) << MPU_RASR_AP_Pos) & MPU_RASR_AP_Msk) | \ + (((AccessAttributes) ) & (MPU_RASR_TEX_Msk | MPU_RASR_S_Msk | MPU_RASR_C_Msk | MPU_RASR_B_Msk))) + +/** +* MPU Region Attribute and Size Register Value +* +* \param DisableExec Instruction access disable bit, 1= disable instruction fetches. +* \param AccessPermission Data access permissions, allows you to configure read/write access for User and Privileged mode. +* \param TypeExtField Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. +* \param IsShareable Region is shareable between multiple bus masters. +* \param IsCacheable Region is cacheable, i.e. its value may be kept in cache. +* \param IsBufferable Region is bufferable, i.e. using write-back caching. Cacheable but non-bufferable regions use write-through policy. +* \param SubRegionDisable Sub-region disable field. +* \param Size Region size of the region to be configured, for example 4K, 8K. +*/ +#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size) \ + ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size) + +/** +* MPU Memory Access Attribute for strongly ordered memory. +* - TEX: 000b +* - Shareable +* - Non-cacheable +* - Non-bufferable +*/ +#define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U) + +/** +* MPU Memory Access Attribute for device memory. +* - TEX: 000b (if non-shareable) or 010b (if shareable) +* - Shareable or non-shareable +* - Non-cacheable +* - Bufferable (if shareable) or non-bufferable (if non-shareable) +* +* \param IsShareable Configures the device memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U)) + +/** +* MPU Memory Access Attribute for normal memory. +* - TEX: 1BBb (reflecting outer cacheability rules) +* - Shareable or non-shareable +* - Cacheable or non-cacheable (reflecting inner cacheability rules) +* - Bufferable or non-bufferable (reflecting inner cacheability rules) +* +* \param OuterCp Configures the outer cache policy. +* \param InnerCp Configures the inner cache policy. +* \param IsShareable Configures the memory as shareable or non-shareable. +*/ +#define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) & 2U), ((InnerCp) & 1U)) + +/** +* MPU Memory Access Attribute non-cacheable policy. +*/ +#define ARM_MPU_CACHEP_NOCACHE 0U + +/** +* MPU Memory Access Attribute write-back, write and read allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_WRA 1U + +/** +* MPU Memory Access Attribute write-through, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WT_NWA 2U + +/** +* MPU Memory Access Attribute write-back, no write allocate policy. +*/ +#define ARM_MPU_CACHEP_WB_NWA 3U + + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; //!< The region base address register value (RBAR) + uint32_t RASR; //!< The region attribute and size register value (RASR) \ref MPU_RASR +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + MPU->RNR = rnr; + MPU->RASR = 0U; +} + +/** Configure an MPU region. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rbar, uint32_t rasr) +{ + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rsar Value for RSAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr) +{ + MPU->RNR = rnr; + MPU->RBAR = rbar; + MPU->RASR = rasr; +} + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void orderedCpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + while (cnt > MPU_TYPE_RALIASES) { + orderedCpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); + table += MPU_TYPE_RALIASES; + cnt -= MPU_TYPE_RALIASES; + } + orderedCpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); +} + +#endif diff --git a/Drivers/CMSIS/Include/mpu_armv8.h b/Drivers/CMSIS/Include/mpu_armv8.h new file mode 100644 index 0000000..99ee9f9 --- /dev/null +++ b/Drivers/CMSIS/Include/mpu_armv8.h @@ -0,0 +1,333 @@ +/****************************************************************************** + * @file mpu_armv8.h + * @brief CMSIS MPU API for Armv8-M MPU + * @version V5.0.4 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef ARM_MPU_ARMV8_H +#define ARM_MPU_ARMV8_H + +/** \brief Attribute for device memory (outer only) */ +#define ARM_MPU_ATTR_DEVICE ( 0U ) + +/** \brief Attribute for non-cacheable, normal memory */ +#define ARM_MPU_ATTR_NON_CACHEABLE ( 4U ) + +/** \brief Attribute for normal memory (outer and inner) +* \param NT Non-Transient: Set to 1 for non-transient data. +* \param WB Write-Back: Set to 1 to use write-back update policy. +* \param RA Read Allocation: Set to 1 to use cache allocation on read miss. +* \param WA Write Allocation: Set to 1 to use cache allocation on write miss. +*/ +#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \ + (((NT & 1U) << 3U) | ((WB & 1U) << 2U) | ((RA & 1U) << 1U) | (WA & 1U)) + +/** \brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U) + +/** \brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRE (1U) + +/** \brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGRE (2U) + +/** \brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_GRE (3U) + +/** \brief Memory Attribute +* \param O Outer memory attributes +* \param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes +*/ +#define ARM_MPU_ATTR(O, I) (((O & 0xFU) << 4U) | (((O & 0xFU) != 0U) ? (I & 0xFU) : ((I & 0x3U) << 2U))) + +/** \brief Normal memory non-shareable */ +#define ARM_MPU_SH_NON (0U) + +/** \brief Normal memory outer shareable */ +#define ARM_MPU_SH_OUTER (2U) + +/** \brief Normal memory inner shareable */ +#define ARM_MPU_SH_INNER (3U) + +/** \brief Memory access permissions +* \param RO Read-Only: Set to 1 for read-only memory. +* \param NP Non-Privileged: Set to 1 for non-privileged memory. +*/ +#define ARM_MPU_AP_(RO, NP) (((RO & 1U) << 1U) | (NP & 1U)) + +/** \brief Region Base Address Register value +* \param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned. +* \param SH Defines the Shareability domain for this memory region. +* \param RO Read-Only: Set to 1 for a read-only memory region. +* \param NP Non-Privileged: Set to 1 for a non-privileged memory region. +* \oaram XN eXecute Never: Set to 1 for a non-executable memory region. +*/ +#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \ + ((BASE & MPU_RBAR_BASE_Msk) | \ + ((SH << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \ + ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \ + ((XN << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk)) + +/** \brief Region Limit Address Register value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR(LIMIT, IDX) \ + ((LIMIT & MPU_RLAR_LIMIT_Msk) | \ + ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; /*!< Region Base Address Register value */ + uint32_t RLAR; /*!< Region Limit Address Register value */ +} ARM_MPU_Region_t; + +/** Enable the MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} + +#ifdef MPU_NS +/** Enable the Non-secure MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control) +{ + __DSB(); + __ISB(); + MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif +} + +/** Disable the Non-secure MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable_NS(void) +{ + __DSB(); + __ISB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU_NS->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} +#endif + +/** Set the memory attribute encoding to the given MPU. +* \param mpu Pointer to the MPU to be configured. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr) +{ + const uint8_t reg = idx / 4U; + const uint32_t pos = ((idx % 4U) * 8U); + const uint32_t mask = 0xFFU << pos; + + if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) { + return; // invalid index + } + + mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask)); +} + +/** Set the memory attribute encoding. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU, idx, attr); +} + +#ifdef MPU_NS +/** Set the memory attribute encoding to the Non-secure MPU. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr); +} +#endif + +/** Clear and disable the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr) +{ + mpu->RNR = rnr; + mpu->RLAR = 0U; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU, rnr); +} + +#ifdef MPU_NS +/** Clear and disable the given Non-secure MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU_NS, rnr); +} +#endif + +/** Configure the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + mpu->RNR = rnr; + mpu->RBAR = rbar; + mpu->RLAR = rlar; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar); +} + +#ifdef MPU_NS +/** Configure the given Non-secure MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar); +} +#endif + +/** Memcopy with strictly ordered memory access, e.g. for register targets. +* \param dst Destination data is copied to. +* \param src Source data is copied from. +* \param len Amount of data words to be copied. +*/ +__STATIC_INLINE void orderedCpy(volatile uint32_t* dst, const uint32_t* __RESTRICT src, uint32_t len) +{ + uint32_t i; + for (i = 0U; i < len; ++i) + { + dst[i] = src[i]; + } +} + +/** Load the given number of MPU regions from a table to the given MPU. +* \param mpu Pointer to the MPU registers to be used. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + if (cnt == 1U) { + mpu->RNR = rnr; + orderedCpy(&(mpu->RBAR), &(table->RBAR), rowWordSize); + } else { + uint32_t rnrBase = rnr & ~(MPU_TYPE_RALIASES-1U); + uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES; + + mpu->RNR = rnrBase; + while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) { + uint32_t c = MPU_TYPE_RALIASES - rnrOffset; + orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize); + table += c; + cnt -= c; + rnrOffset = 0U; + rnrBase += MPU_TYPE_RALIASES; + mpu->RNR = rnrBase; + } + + orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize); + } +} + +/** Load the given number of MPU regions from a table. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU, rnr, table, cnt); +} + +#ifdef MPU_NS +/** Load the given number of MPU regions from a table to the Non-secure MPU. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt); +} +#endif + +#endif + diff --git a/Drivers/CMSIS/Include/tz_context.h b/Drivers/CMSIS/Include/tz_context.h new file mode 100644 index 0000000..d4c1474 --- /dev/null +++ b/Drivers/CMSIS/Include/tz_context.h @@ -0,0 +1,70 @@ +/****************************************************************************** + * @file tz_context.h + * @brief Context Management for Armv8-M TrustZone + * @version V1.0.1 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef TZ_CONTEXT_H +#define TZ_CONTEXT_H + +#include + +#ifndef TZ_MODULEID_T +#define TZ_MODULEID_T +/// \details Data type that identifies secure software modules called by a process. +typedef uint32_t TZ_ModuleId_t; +#endif + +/// \details TZ Memory ID identifies an allocated memory slot. +typedef uint32_t TZ_MemoryId_t; + +/// Initialize secure context memory system +/// \return execution status (1: success, 0: error) +uint32_t TZ_InitContextSystem_S (void); + +/// Allocate context memory for calling secure software modules in TrustZone +/// \param[in] module identifies software modules called from non-secure mode +/// \return value != 0 id TrustZone memory slot identifier +/// \return value 0 no memory available or internal error +TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); + +/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); + +/// Load secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); + +/// Store secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); + +#endif // TZ_CONTEXT_H diff --git a/Drivers/CMSIS/LICENSE.txt b/Drivers/CMSIS/LICENSE.txt new file mode 100644 index 0000000..c0ee812 --- /dev/null +++ b/Drivers/CMSIS/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Drivers/CMSIS/Lib/ARM/arm_cortexM7b_math.lib b/Drivers/CMSIS/Lib/ARM/arm_cortexM7b_math.lib new file mode 100644 index 0000000..b17ef6a Binary files /dev/null and b/Drivers/CMSIS/Lib/ARM/arm_cortexM7b_math.lib differ diff --git a/Drivers/CMSIS/Lib/ARM/arm_cortexM7bfdp_math.lib b/Drivers/CMSIS/Lib/ARM/arm_cortexM7bfdp_math.lib new file mode 100644 index 0000000..9f5712a Binary files /dev/null and b/Drivers/CMSIS/Lib/ARM/arm_cortexM7bfdp_math.lib differ diff --git a/Drivers/CMSIS/Lib/ARM/arm_cortexM7bfsp_math.lib b/Drivers/CMSIS/Lib/ARM/arm_cortexM7bfsp_math.lib new file mode 100644 index 0000000..4ec7d63 Binary files /dev/null and b/Drivers/CMSIS/Lib/ARM/arm_cortexM7bfsp_math.lib differ diff --git a/Drivers/CMSIS/Lib/ARM/arm_cortexM7l_math.lib b/Drivers/CMSIS/Lib/ARM/arm_cortexM7l_math.lib new file mode 100644 index 0000000..bed5c16 Binary files /dev/null and b/Drivers/CMSIS/Lib/ARM/arm_cortexM7l_math.lib differ diff --git a/Drivers/CMSIS/Lib/ARM/arm_cortexM7lfdp_math.lib b/Drivers/CMSIS/Lib/ARM/arm_cortexM7lfdp_math.lib new file mode 100644 index 0000000..47f0121 Binary files /dev/null and b/Drivers/CMSIS/Lib/ARM/arm_cortexM7lfdp_math.lib differ diff --git a/Drivers/CMSIS/Lib/ARM/arm_cortexM7lfsp_math.lib b/Drivers/CMSIS/Lib/ARM/arm_cortexM7lfsp_math.lib new file mode 100644 index 0000000..d16578a Binary files /dev/null and b/Drivers/CMSIS/Lib/ARM/arm_cortexM7lfsp_math.lib differ diff --git a/Drivers/CMSIS/Lib/GCC/libarm_cortexM7l_math.a b/Drivers/CMSIS/Lib/GCC/libarm_cortexM7l_math.a new file mode 100644 index 0000000..376ab84 Binary files /dev/null and b/Drivers/CMSIS/Lib/GCC/libarm_cortexM7l_math.a differ diff --git a/Drivers/CMSIS/Lib/GCC/libarm_cortexM7lfdp_math.a b/Drivers/CMSIS/Lib/GCC/libarm_cortexM7lfdp_math.a new file mode 100644 index 0000000..170233a Binary files /dev/null and b/Drivers/CMSIS/Lib/GCC/libarm_cortexM7lfdp_math.a differ diff --git a/Drivers/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a b/Drivers/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a new file mode 100644 index 0000000..36c7461 Binary files /dev/null and b/Drivers/CMSIS/Lib/GCC/libarm_cortexM7lfsp_math.a differ diff --git a/Drivers/CMSIS/Lib/IAR/iar_cortexM7b_math.a b/Drivers/CMSIS/Lib/IAR/iar_cortexM7b_math.a new file mode 100644 index 0000000..b1f01fe Binary files /dev/null and b/Drivers/CMSIS/Lib/IAR/iar_cortexM7b_math.a differ diff --git a/Drivers/CMSIS/Lib/IAR/iar_cortexM7bf_math.a b/Drivers/CMSIS/Lib/IAR/iar_cortexM7bf_math.a new file mode 100644 index 0000000..8b49543 Binary files /dev/null and b/Drivers/CMSIS/Lib/IAR/iar_cortexM7bf_math.a differ diff --git a/Drivers/CMSIS/Lib/IAR/iar_cortexM7bs_math.a b/Drivers/CMSIS/Lib/IAR/iar_cortexM7bs_math.a new file mode 100644 index 0000000..7bdbbc9 Binary files /dev/null and b/Drivers/CMSIS/Lib/IAR/iar_cortexM7bs_math.a differ diff --git a/Drivers/CMSIS/Lib/IAR/iar_cortexM7l_math.a b/Drivers/CMSIS/Lib/IAR/iar_cortexM7l_math.a new file mode 100644 index 0000000..fa8fd7b Binary files /dev/null and b/Drivers/CMSIS/Lib/IAR/iar_cortexM7l_math.a differ diff --git a/Drivers/CMSIS/Lib/IAR/iar_cortexM7lf_math.a b/Drivers/CMSIS/Lib/IAR/iar_cortexM7lf_math.a new file mode 100644 index 0000000..8d85dc8 Binary files /dev/null and b/Drivers/CMSIS/Lib/IAR/iar_cortexM7lf_math.a differ diff --git a/Drivers/CMSIS/Lib/IAR/iar_cortexM7ls_math.a b/Drivers/CMSIS/Lib/IAR/iar_cortexM7ls_math.a new file mode 100644 index 0000000..97ee91e Binary files /dev/null and b/Drivers/CMSIS/Lib/IAR/iar_cortexM7ls_math.a differ diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Compiler/EventRecorderConf.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Compiler/EventRecorderConf.h new file mode 100644 index 0000000..5958233 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/Compiler/EventRecorderConf.h @@ -0,0 +1,44 @@ +/*------------------------------------------------------------------------------ + * MDK - Component ::Event Recorder + * Copyright (c) 2016 ARM Germany GmbH. All rights reserved. + *------------------------------------------------------------------------------ + * Name: EventRecorderConf.h + * Purpose: Event Recorder Configuration + * Rev.: V1.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Event Recorder + +// Number of Records +// <8=>8 <16=>16 <32=>32 <64=>64 <128=>128 <256=>256 <512=>512 <1024=>1024 +// <2048=>2048 <4096=>4096 <8192=>8192 <16384=>16384 <32768=>32768 +// <65536=>65536 <131072=>131072 <262144=>262144 <524288=>524288 +// <1048576=>1048576 +// Configure size of Event Record Buffer (each record is 16 bytes) +// Must be 2^n (min=8, max=1048576) +#define EVENT_RECORD_COUNT 64U + +// Time Stamp Source +// <0=> DWT Cycle Counter <1=> SysTick +// <3=> User Timer (Normal Reset) <4=> User Timer (Power-On Reset) +// Selects source for 32-bit time stamp +#define EVENT_TIMESTAMP_SOURCE 1 + +// SysTick Configuration +// Configure values when Time Stamp Source is set to SysTick + +// SysTick Input Clock Frequency [Hz] <1-1000000000> +// Defines SysTick input clock (typical identical with processor clock) +#define SYSTICK_CLOCK 100000000U + +// SysTick Interrupt Period [us] <1-1000000000> +// Defines time period of the SysTick timer interrupt +#define SYSTICK_PERIOD_US 1000U + +// + +// + +//------------- <<< end of configuration section >>> --------------------------- diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM0/RTE_Components.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM0/RTE_Components.h new file mode 100644 index 0000000..182fb76 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM0/RTE_Components.h @@ -0,0 +1,24 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_cifar10' + * Target: 'ARMCM0' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM0.h" + +#define RTE_Compiler_EventRecorder + #define RTE_Compiler_EventRecorder_DAP +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_EVR /* Compiler I/O: STDOUT EVR */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM3/RTE_Components.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM3/RTE_Components.h new file mode 100644 index 0000000..2aa5627 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM3/RTE_Components.h @@ -0,0 +1,22 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_cifar10' + * Target: 'ARMCM3' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM3.h" + +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_ITM /* Compiler I/O: STDOUT ITM */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM4_FP/RTE_Components.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM4_FP/RTE_Components.h new file mode 100644 index 0000000..bdf6fb9 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM4_FP/RTE_Components.h @@ -0,0 +1,22 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_cifar10' + * Target: 'ARMCM4_FP' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM4_FP.h" + +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_ITM /* Compiler I/O: STDOUT ITM */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM7_SP/RTE_Components.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM7_SP/RTE_Components.h new file mode 100644 index 0000000..9d43970 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/RTE/_ARMCM7_SP/RTE_Components.h @@ -0,0 +1,22 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_cifar10' + * Target: 'ARMCM7_SP' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM7_SP.h" + +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_ITM /* Compiler I/O: STDOUT ITM */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10.cpp b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10.cpp new file mode 100644 index 0000000..ee1083b --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10.cpp @@ -0,0 +1,196 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2018 Arm Limited. All rights reserved. +* +* +* Project: CMSIS NN Library +* Title: arm_nnexamples_cifar10.cpp +* +* Description: Convolutional Neural Network Example +* +* Target Processor: Cortex-M4/Cortex-M7 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of Arm LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup CNNExample Convolutional Neural Network Example + * + * \par Description: + * \par + * Demonstrates a convolutional neural network (CNN) example with the use of convolution, + * ReLU activation, pooling and fully-connected functions. + * + * \par Model definition: + * \par + * The CNN used in this example is based on CIFAR-10 example from Caffe [1]. + * The neural network consists + * of 3 convolution layers interspersed by ReLU activation and max pooling layers, followed by a + * fully-connected layer at the end. The input to the network is a 32x32 pixel color image, which will + * be classified into one of the 10 output classes. + * This example model implementation needs 32.3 KB to store weights, 40 KB for activations and + * 3.1 KB for storing the \c im2col data. + * + * \image html CIFAR10_CNN.gif "Neural Network model definition" + * + * \par Variables Description: + * \par + * \li \c conv1_wt, \c conv2_wt, \c conv3_wt are convolution layer weight matrices + * \li \c conv1_bias, \c conv2_bias, \c conv3_bias are convolution layer bias arrays + * \li \c ip1_wt, ip1_bias point to fully-connected layer weights and biases + * \li \c input_data points to the input image data + * \li \c output_data points to the classification output + * \li \c col_buffer is a buffer to store the \c im2col output + * \li \c scratch_buffer is used to store the activation data (intermediate layer outputs) + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_convolve_HWC_q7_RGB() + * - arm_convolve_HWC_q7_fast() + * - arm_relu_q7() + * - arm_maxpool_q7_HWC() + * - arm_avepool_q7_HWC() + * - arm_fully_connected_q7_opt() + * - arm_fully_connected_q7() + * + * Refer + * \link arm_nnexamples_cifar10.cpp \endlink + * + * \par [1] https://github.com/BVLC/caffe + */ + +#include +#include +#include "arm_math.h" +#include "arm_nnexamples_cifar10_parameter.h" +#include "arm_nnexamples_cifar10_weights.h" + +#include "arm_nnfunctions.h" +#include "arm_nnexamples_cifar10_inputs.h" + +#ifdef _RTE_ +#include "RTE_Components.h" +#ifdef RTE_Compiler_EventRecorder +#include "EventRecorder.h" +#endif +#endif + +// include the input and weights + +static q7_t conv1_wt[CONV1_IM_CH * CONV1_KER_DIM * CONV1_KER_DIM * CONV1_OUT_CH] = CONV1_WT; +static q7_t conv1_bias[CONV1_OUT_CH] = CONV1_BIAS; + +static q7_t conv2_wt[CONV2_IM_CH * CONV2_KER_DIM * CONV2_KER_DIM * CONV2_OUT_CH] = CONV2_WT; +static q7_t conv2_bias[CONV2_OUT_CH] = CONV2_BIAS; + +static q7_t conv3_wt[CONV3_IM_CH * CONV3_KER_DIM * CONV3_KER_DIM * CONV3_OUT_CH] = CONV3_WT; +static q7_t conv3_bias[CONV3_OUT_CH] = CONV3_BIAS; + +static q7_t ip1_wt[IP1_DIM * IP1_OUT] = IP1_WT; +static q7_t ip1_bias[IP1_OUT] = IP1_BIAS; + +/* Here the image_data should be the raw uint8 type RGB image in [RGB, RGB, RGB ... RGB] format */ +uint8_t image_data[CONV1_IM_CH * CONV1_IM_DIM * CONV1_IM_DIM] = IMG_DATA; +q7_t output_data[IP1_OUT]; + +//vector buffer: max(im2col buffer,average pool buffer, fully connected buffer) +q7_t col_buffer[2 * 5 * 5 * 32 * 2]; + +q7_t scratch_buffer[32 * 32 * 10 * 4]; + +int main() +{ + #ifdef RTE_Compiler_EventRecorder + EventRecorderInitialize (EventRecordAll, 1); // initialize and start Event Recorder + #endif + + printf("start execution\n"); + /* start the execution */ + + q7_t *img_buffer1 = scratch_buffer; + q7_t *img_buffer2 = img_buffer1 + 32 * 32 * 32; + + /* input pre-processing */ + int mean_data[3] = INPUT_MEAN_SHIFT; + unsigned int scale_data[3] = INPUT_RIGHT_SHIFT; + for (int i=0;i<32*32*3; i+=3) { + img_buffer2[i] = (q7_t)__SSAT( ((((int)image_data[i] - mean_data[0])<<7) + (0x1<<(scale_data[0]-1))) + >> scale_data[0], 8); + img_buffer2[i+1] = (q7_t)__SSAT( ((((int)image_data[i+1] - mean_data[1])<<7) + (0x1<<(scale_data[1]-1))) + >> scale_data[1], 8); + img_buffer2[i+2] = (q7_t)__SSAT( ((((int)image_data[i+2] - mean_data[2])<<7) + (0x1<<(scale_data[2]-1))) + >> scale_data[2], 8); + } + + // conv1 img_buffer2 -> img_buffer1 + arm_convolve_HWC_q7_RGB(img_buffer2, CONV1_IM_DIM, CONV1_IM_CH, conv1_wt, CONV1_OUT_CH, CONV1_KER_DIM, CONV1_PADDING, + CONV1_STRIDE, conv1_bias, CONV1_BIAS_LSHIFT, CONV1_OUT_RSHIFT, img_buffer1, CONV1_OUT_DIM, + (q15_t *) col_buffer, NULL); + + arm_relu_q7(img_buffer1, CONV1_OUT_DIM * CONV1_OUT_DIM * CONV1_OUT_CH); + + // pool1 img_buffer1 -> img_buffer2 + arm_maxpool_q7_HWC(img_buffer1, CONV1_OUT_DIM, CONV1_OUT_CH, POOL1_KER_DIM, + POOL1_PADDING, POOL1_STRIDE, POOL1_OUT_DIM, NULL, img_buffer2); + + // conv2 img_buffer2 -> img_buffer1 + arm_convolve_HWC_q7_fast(img_buffer2, CONV2_IM_DIM, CONV2_IM_CH, conv2_wt, CONV2_OUT_CH, CONV2_KER_DIM, + CONV2_PADDING, CONV2_STRIDE, conv2_bias, CONV2_BIAS_LSHIFT, CONV2_OUT_RSHIFT, img_buffer1, + CONV2_OUT_DIM, (q15_t *) col_buffer, NULL); + + arm_relu_q7(img_buffer1, CONV2_OUT_DIM * CONV2_OUT_DIM * CONV2_OUT_CH); + + // pool2 img_buffer1 -> img_buffer2 + arm_maxpool_q7_HWC(img_buffer1, CONV2_OUT_DIM, CONV2_OUT_CH, POOL2_KER_DIM, + POOL2_PADDING, POOL2_STRIDE, POOL2_OUT_DIM, col_buffer, img_buffer2); + +// conv3 img_buffer2 -> img_buffer1 + arm_convolve_HWC_q7_fast(img_buffer2, CONV3_IM_DIM, CONV3_IM_CH, conv3_wt, CONV3_OUT_CH, CONV3_KER_DIM, + CONV3_PADDING, CONV3_STRIDE, conv3_bias, CONV3_BIAS_LSHIFT, CONV3_OUT_RSHIFT, img_buffer1, + CONV3_OUT_DIM, (q15_t *) col_buffer, NULL); + + arm_relu_q7(img_buffer1, CONV3_OUT_DIM * CONV3_OUT_DIM * CONV3_OUT_CH); + + // pool3 img_buffer-> img_buffer2 + arm_maxpool_q7_HWC(img_buffer1, CONV3_OUT_DIM, CONV3_OUT_CH, POOL3_KER_DIM, + POOL3_PADDING, POOL3_STRIDE, POOL3_OUT_DIM, col_buffer, img_buffer2); + + arm_fully_connected_q7_opt(img_buffer2, ip1_wt, IP1_DIM, IP1_OUT, IP1_BIAS_LSHIFT, IP1_OUT_RSHIFT, ip1_bias, + output_data, (q15_t *) img_buffer1); + + arm_softmax_q7(output_data, 10, output_data); + + for (int i = 0; i < 10; i++) + { + printf("%d: %d\n", i, output_data[i]); + } + + return 0; +} diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_inputs.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_inputs.h new file mode 100644 index 0000000..4ff8dc2 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_inputs.h @@ -0,0 +1,6 @@ +/* Here are two different test images */ + +//#define IMG_DATA {158,112,49,159,111,47,165,116,51,166,118,53,160,112,46,156,109,41,162,115,47,159,113,45,158,111,44,159,113,41,161,116,41,160,111,52,161,111,49,166,117,41,169,117,45,170,119,44,167,117,40,162,113,38,160,111,39,160,112,43,156,109,44,149,107,45,150,107,45,148,106,43,149,107,44,143,101,39,140,98,43,141,97,41,143,97,38,137,95,36,126,91,36,116,85,33,152,112,51,151,110,40,159,114,45,166,116,56,162,112,49,160,113,43,164,117,47,162,114,45,163,116,46,156,110,38,155,111,41,159,110,54,163,113,52,170,119,41,171,117,40,171,115,33,169,115,30,160,111,33,154,112,41,151,115,50,145,110,53,139,104,55,140,102,52,141,100,48,149,105,50,147,102,46,145,102,45,142,97,38,143,98,34,136,95,31,125,91,32,119,88,34,151,110,47,151,109,33,158,111,36,167,111,48,160,106,42,163,115,44,165,117,45,165,117,45,163,115,43,162,115,43,158,114,48,157,109,57,161,111,51,166,115,38,167,114,37,169,113,35,170,116,39,159,114,47,145,111,54,121,96,49,110,90,52,98,78,50,101,77,47,114,85,50,120,86,48,134,96,55,143,103,51,140,99,39,142,99,35,139,98,34,130,95,34,120,89,33,155,107,40,155,110,32,160,109,31,174,112,44,167,110,43,167,117,46,169,120,48,169,119,48,165,115,44,165,117,45,167,123,57,191,146,95,177,130,75,157,111,41,162,115,47,164,114,54,158,112,58,149,111,67,104,80,47,103,87,65,98,90,76,92,90,84,80,75,66,74,63,50,86,70,52,83,62,39,113,85,45,132,98,46,140,102,43,140,101,39,136,99,39,127,94,36,155,107,41,156,114,48,161,115,49,170,114,47,169,114,43,163,113,40,169,120,47,166,116,44,164,113,41,164,116,42,173,128,59,246,214,164,195,156,107,151,114,56,146,111,60,142,108,71,111,80,50,78,53,31,85,69,56,113,103,98,112,110,111,106,114,118,97,102,105,93,94,93,74,72,67,84,78,70,85,73,47,105,83,45,128,96,48,138,101,46,133,94,36,129,93,36,148,109,54,133,104,64,130,100,57,147,112,53,161,115,44,165,113,39,167,116,41,167,115,41,163,111,37,165,116,39,163,118,42,180,138,85,157,122,78,128,102,58,97,75,43,66,50,31,69,58,43,66,56,45,89,83,76,118,113,110,122,121,120,119,122,122,114,116,116,94,96,96,99,100,97,91,91,86,58,58,47,67,58,37,108,84,49,140,105,58,138,98,44,134,95,40,127,100,57,109,95,80,47,37,17,88,74,28,153,117,48,170,118,43,168,115,40,170,118,43,169,117,42,166,116,37,164,120,39,147,107,52,129,98,59,127,108,75,100,87,70,68,67,57,78,83,72,72,75,64,83,84,74,132,130,121,146,142,132,124,118,108,105,99,90,107,102,94,115,111,103,85,83,77,63,71,69,46,47,39,79,61,36,132,98,58,141,99,48,134,93,39,131,115,90,99,96,92,42,43,38,70,64,41,143,111,56,167,117,42,165,114,36,168,116,39,171,119,49,161,113,51,140,109,51,120,94,49,130,110,77,144,131,107,116,106,93,88,87,79,91,95,88,85,88,82,77,77,69,124,118,107,163,153,140,136,124,112,102,93,81,106,98,88,100,93,84,85,81,74,54,60,58,49,53,49,57,47,32,107,83,50,138,103,51,136,97,39,170,161,144,103,105,105,54,58,59,124,121,113,153,124,82,161,113,43,163,117,41,166,122,50,165,121,66,174,135,95,113,89,59,125,105,78,157,141,121,156,143,128,121,111,101,86,80,74,82,81,77,84,85,82,80,78,73,81,71,61,138,125,112,146,135,123,113,103,93,87,79,70,83,77,69,86,82,76,71,73,67,56,57,53,40,35,27,74,59,35,133,106,59,137,103,45,180,176,163,134,139,143,94,100,105,154,154,149,174,149,112,158,116,51,156,116,47,153,118,60,207,180,146,237,214,198,207,180,166,156,131,119,174,153,145,148,131,125,125,110,107,93,85,79,86,84,79,74,74,71,59,57,53,76,68,58,137,125,112,143,133,122,133,124,114,106,98,89,86,81,74,87,85,78,84,85,78,75,76,71,50,49,43,40,30,15,95,75,44,132,103,57,183,183,175,108,116,122,142,151,158,165,169,168,177,156,122,155,112,50,159,118,51,122,89,47,213,197,179,237,224,226,220,191,188,164,135,131,183,159,155,156,137,132,125,108,104,120,111,104,78,76,69,80,80,77,45,44,40,91,85,77,175,165,154,157,147,137,155,147,138,107,100,92,87,83,77,103,102,96,88,88,79,78,79,73,59,59,59,41,36,33,59,46,31,104,81,46,188,191,189,100,108,116,135,144,153,170,175,178,187,167,136,166,120,59,173,123,55,134,93,44,117,95,80,194,182,188,199,171,164,170,142,133,185,161,151,189,171,159,134,119,106,117,107,95,102,98,89,84,84,79,38,38,34,125,121,113,210,201,192,160,152,142,146,139,130,93,89,82,83,80,75,94,93,88,104,104,94,85,87,81,73,75,78,55,53,55,62,55,48,76,56,26,189,194,194,90,96,105,127,134,144,175,180,185,174,156,133,166,123,68,178,123,53,159,109,47,97,68,44,168,154,152,168,144,126,137,114,94,186,166,148,216,202,183,160,149,129,123,113,98,120,114,105,115,114,109,50,50,47,150,147,140,194,187,178,155,149,140,123,118,111,91,88,83,84,83,79,84,84,80,95,95,85,86,87,81,84,87,89,73,73,73,79,74,64,73,55,24,189,192,193,93,95,103,152,154,163,185,188,192,119,110,98,136,106,66,173,124,58,167,116,50,103,72,39,147,132,120,145,125,103,167,149,127,189,174,155,226,216,200,180,172,157,141,131,117,126,117,107,117,114,109,71,71,68,154,152,147,186,181,174,149,144,136,114,110,104,87,85,80,80,80,76,72,73,70,80,80,72,99,100,94,100,101,99,90,88,81,97,89,69,94,73,34,194,196,196,108,107,112,168,167,172,186,186,188,105,109,109,99,89,67,156,119,62,167,122,55,100,74,34,115,106,88,138,123,103,198,185,169,190,180,169,172,165,159,145,140,140,154,143,134,146,136,125,103,100,95,71,71,70,152,152,149,179,175,170,137,133,127,130,128,122,110,109,105,85,86,83,91,93,91,95,96,90,109,110,104,115,116,111,100,96,80,97,85,53,117,95,47,197,197,197,132,129,136,172,167,174,184,178,181,130,137,142,78,83,77,140,120,88,155,125,77,115,94,52,130,120,93,143,131,116,230,221,211,242,236,230,145,138,137,135,130,130,131,121,112,121,112,101,108,104,95,95,88,75,144,134,118,168,159,146,152,147,138,112,108,101,87,85,80,71,72,68,87,88,87,105,104,99,112,109,99,120,110,93,103,86,54,121,96,48,136,104,48,203,203,204,146,146,160,168,164,178,191,182,188,168,170,172,78,86,90,126,125,126,138,126,113,138,121,82,96,80,37,154,143,133,173,163,155,162,152,141,140,132,117,113,106,88,113,106,90,101,101,92,105,101,87,112,90,58,171,143,104,156,138,109,148,141,126,135,130,118,109,105,97,78,76,72,79,79,77,94,93,94,101,91,82,107,83,55,125,88,45,151,108,55,144,104,46,214,215,215,163,166,180,164,167,184,183,184,194,176,182,186,94,102,105,96,96,102,156,149,145,148,137,111,106,93,61,129,116,105,118,105,95,114,102,89,116,105,89,102,91,73,115,110,98,86,91,88,101,103,95,144,128,102,118,96,64,68,56,32,128,120,105,133,126,115,75,69,61,60,56,51,58,56,53,71,70,65,102,93,78,116,94,64,143,112,68,150,116,64,140,110,54,212,211,205,178,184,192,167,175,189,173,181,193,176,184,188,124,131,133,86,88,96,141,139,143,153,148,141,135,128,111,104,90,80,77,64,55,134,121,108,124,111,96,129,117,100,147,143,133,85,92,93,92,96,93,150,139,120,132,117,93,117,109,92,107,99,86,75,68,58,64,59,52,44,41,39,65,62,60,86,69,40,133,105,59,155,119,62,160,120,54,154,115,45,151,111,46,199,192,180,187,189,187,171,176,181,174,179,185,177,182,184,144,149,152,86,90,99,119,121,132,122,124,130,137,136,135,144,134,126,70,59,51,129,118,108,108,97,86,145,134,123,184,176,168,116,118,118,73,75,73,131,119,103,137,124,105,134,129,118,89,86,78,51,49,44,52,51,50,47,49,52,90,90,93,121,91,60,163,118,68,171,121,64,164,113,52,158,111,50,149,107,46,165,156,146,195,193,187,179,178,175,177,173,172,181,181,180,152,157,160,99,103,111,131,135,146,171,175,185,103,105,111,93,90,87,80,77,73,93,90,86,122,118,116,178,173,173,191,182,177,150,148,148,100,100,101,89,78,66,87,77,63,60,61,57,46,52,54,38,46,51,24,33,41,46,57,69,60,71,83,108,100,75,144,125,82,144,123,76,128,109,61,127,113,69,120,105,63,117,120,124,195,200,200,177,178,176,178,169,168,181,179,179,138,144,147,83,87,91,150,153,159,245,247,250,219,222,225,133,140,144,134,141,147,149,156,164,176,182,192,190,196,208,194,192,197,168,172,181,125,133,143,110,109,109,61,62,62,35,49,58,34,54,68,49,70,87,58,81,102,61,85,110,58,84,111,69,99,122,72,101,119,78,104,120,69,96,112,59,92,112,55,90,115,79,105,133,175,197,213,174,183,192,176,172,177,177,177,182,140,146,150,109,112,113,211,211,209,253,252,247,252,253,252,208,224,232,124,143,157,114,132,149,124,141,162,116,133,156,122,133,152,104,124,148,68,93,119,68,87,104,60,82,101,52,84,111,50,84,110,51,85,115,56,93,125,56,94,131,51,91,130,43,96,135,51,104,141,59,108,142,48,97,132,43,97,137,42,95,132,41,89,135,96,137,168,144,168,188,168,174,188,178,182,192,165,170,174,165,166,164,246,245,237,253,251,241,227,231,228,110,136,153,60,88,111,53,80,105,49,76,105,49,75,107,48,72,101,45,79,115,42,81,120,46,81,113,42,82,116,38,86,125,46,90,125,46,89,126,43,87,128,42,89,132,46,93,139,46,94,137,50,96,137,55,96,135,53,94,134,51,95,139,45,90,133,29,91,141,29,87,130,59,102,134,131,153,176,166,179,191,132,136,137,194,189,181,254,250,242,241,245,245,141,159,175,61,94,127,50,84,118,50,84,119,51,85,121,49,83,120,50,84,116,47,86,117,42,84,117,39,82,115,34,79,113,35,83,120,39,86,125,38,85,125,42,89,130,45,92,134,56,103,145,62,103,142,59,101,142,56,102,146,50,99,144,46,94,140,51,103,149,48,111,162,30,94,140,34,85,124,73,106,136,128,148,167,128,136,143,215,213,209,255,253,249,187,198,205,66,93,118,54,91,128,50,88,125,52,90,127,52,90,127,46,83,121,45,82,115,43,82,113,41,81,112,36,80,113,39,83,117,40,86,123,40,89,131,43,92,134,46,95,138,59,108,150,62,110,152,64,109,147,59,108,149,54,108,154,50,105,152,70,123,167,83,137,182,52,114,165,35,99,147,31,86,130,41,83,122,66,95,126,128,145,164,224,229,234,240,245,247,124,143,153,58,92,114,49,87,123,56,94,131,54,92,129,44,82,119,44,82,119,47,83,119,46,84,119,43,83,119,43,86,123,44,88,127,44,90,131,45,97,141,54,106,150,58,110,154,54,105,150,46,97,141,43,95,140,36,91,138,51,108,158,73,130,178,85,138,182,76,125,169,50,110,162,35,98,149,29,89,138,35,86,133,44,83,126,78,106,138,202,219,233,211,228,234,97,126,140,65,104,126,54,94,129,48,87,124,58,97,133,48,87,123,40,80,116,45,82,119,47,84,122,48,87,126,47,89,130,46,89,132,51,97,140,39,92,138,39,93,139,48,102,148,47,101,147,39,93,139,28,85,133,40,101,153,67,129,182,67,126,176,46,98,142,51,96,139,50,108,161,35,97,147,32,92,143,33,88,141,41,88,138,46,84,125,104,133,159,170,197,211,64,100,119,54,97,121,52,94,128,53,95,130,61,103,139,58,100,135,54,96,131,45,83,120,42,79,118,41,80,120,46,88,130,49,92,135,46,92,136,42,95,139,40,93,138,39,92,136,37,90,135,40,93,138,44,102,151,63,125,178,47,110,164,31,90,140,15,60,103,51,93,136,68,124,177,42,100,148,31,88,137,38,91,146,37,87,139,43,89,132,42,79,113,71,107,133,49,89,114,31,77,105,27,71,105,38,82,117,49,93,128,56,100,135,58,102,137,53,92,128,56,94,131,60,99,137,57,99,139,53,97,138,50,95,137,45,94,136,39,88,131,33,83,125,42,91,133,62,112,154,79,132,179,73,131,181,56,116,168,38,97,146,13,64,108,40,85,127,61,116,168,49,102,148,35,85,132,43,91,143,39,90,139,42,92,134,44,88,125,40,81,112,42,85,115,27,72,104,23,67,102,30,74,109,27,71,106,29,73,108,36,80,115,47,86,120,56,95,128,62,101,135,66,109,144,75,119,156,69,113,152,49,95,134,43,88,127,43,88,127,60,105,144,85,130,170,109,156,197,93,145,190,60,115,164,26,82,130,29,82,126,20,64,107,54,107,160,56,105,149,45,89,132,43,86,134,40,89,134,40,92,132,40,87,123,38,81,115,36,79,114,26,69,105,22,66,101,29,73,108,25,69,104,29,73,108,19,63,98,18,58,89,32,70,100,47,87,118,61,104,137,74,119,152,66,111,145,53,96,131,52,95,130,45,87,123,67,109,145,89,131,167,105,146,182,89,135,175,48,99,145,24,77,124,34,84,129,21,67,110} + + +#define IMG_DATA {235,235,235,231,231,231,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,232,233,233,231,233,232,231,233,231,233,233,230,233,232,232,232,234,232,231,234,232,232,232,233,233,230,232,233,231,233,233,233,232,232,232,232,232,232,232,232,232,233,233,233,233,233,233,232,232,232,238,238,238,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,237,234,233,236,234,233,236,236,234,234,236,234,234,235,237,234,234,238,235,236,237,236,236,235,236,236,234,236,236,236,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236,235,235,235,237,237,237,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,234,234,236,233,231,236,234,231,235,235,234,234,235,236,227,230,233,231,235,238,231,233,235,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,235,235,234,234,234,238,238,238,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,235,234,233,233,230,232,232,231,228,230,232,223,226,231,186,192,197,209,216,219,207,210,213,228,228,230,236,235,235,234,234,234,234,234,234,234,234,234,234,234,234,235,235,235,235,235,235,235,235,235,237,237,237,234,234,234,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,234,234,234,234,234,234,235,235,235,235,235,235,234,234,234,234,234,234,235,235,235,235,235,235,236,238,236,233,237,237,219,225,230,203,210,219,163,172,179,195,205,208,214,218,221,230,229,232,237,235,237,235,235,235,235,235,235,235,235,235,235,236,236,236,236,236,236,236,236,236,236,236,239,239,238,236,235,235,236,235,235,236,235,235,236,235,235,236,235,235,235,236,235,235,235,235,234,234,234,235,235,235,237,236,236,237,236,236,234,235,236,232,233,234,235,237,237,229,231,232,208,216,218,194,205,210,185,198,207,174,188,200,165,179,189,184,196,202,207,215,220,226,228,232,236,235,237,236,236,235,236,236,235,236,236,235,236,236,236,237,237,237,237,237,237,237,237,237,228,229,229,228,227,228,232,230,231,231,228,230,234,232,233,237,236,236,237,237,235,236,237,235,237,235,236,237,235,236,239,236,237,239,237,238,225,229,230,224,228,229,233,237,238,221,226,228,183,197,204,161,180,190,159,180,191,154,176,190,144,163,177,143,159,171,156,169,177,198,206,211,233,238,239,236,237,234,235,236,233,235,235,235,235,236,236,236,238,237,237,237,237,239,237,238,212,220,222,224,230,233,230,234,238,227,232,234,229,234,234,234,237,236,237,238,235,238,237,236,239,237,238,239,237,238,239,236,237,240,238,239,201,204,203,219,222,221,233,236,235,214,218,218,193,204,210,185,201,210,184,201,211,173,191,203,165,182,196,159,174,187,162,176,185,186,199,204,229,239,240,234,239,238,233,238,237,233,238,238,234,239,238,236,239,238,237,239,238,238,238,238,216,234,241,221,236,243,225,238,246,225,239,243,227,240,240,231,238,237,236,237,235,238,236,235,238,236,237,238,236,237,237,237,237,239,239,239,197,198,196,220,221,218,233,234,231,230,231,229,209,213,217,209,216,222,219,228,235,208,218,227,209,221,234,210,224,235,217,233,240,218,235,241,225,240,243,228,238,240,228,239,240,230,240,240,230,240,239,235,240,239,237,240,239,238,238,238,118,140,149,119,138,148,124,142,153,136,155,161,172,188,191,225,234,233,235,236,233,237,234,232,236,233,234,235,235,235,235,237,236,233,237,235,214,216,214,226,228,226,232,234,232,236,237,236,228,230,232,227,230,235,231,236,241,225,232,239,225,237,247,217,233,243,201,219,226,185,204,211,172,189,195,167,179,186,167,180,185,186,199,201,223,235,235,235,241,239,236,240,239,238,240,239,109,130,141,103,121,133,108,125,137,111,127,137,146,159,165,222,229,231,227,228,225,229,226,224,236,232,233,234,234,234,231,236,234,230,237,235,229,234,235,231,235,236,232,237,238,230,235,236,231,236,238,231,237,240,229,237,241,223,232,238,191,206,213,164,184,191,146,165,172,137,156,163,134,149,159,128,140,153,121,133,143,149,162,166,216,228,229,234,241,239,235,240,238,237,240,239,195,212,224,188,202,215,199,211,224,200,211,223,209,217,227,223,227,231,213,213,211,211,209,206,216,213,214,220,222,222,219,226,225,210,221,219,209,219,223,211,221,225,216,225,230,220,229,233,225,234,237,226,236,239,225,237,241,218,231,237,183,204,208,175,198,203,181,200,207,178,194,202,186,197,211,170,178,196,142,151,164,185,195,202,219,230,233,231,240,238,234,241,239,236,240,239,193,207,222,191,202,217,202,211,224,214,217,234,223,225,241,214,219,227,203,208,208,171,174,174,177,180,183,207,213,214,174,184,188,98,112,121,93,114,126,101,121,132,111,129,139,122,138,147,137,152,161,153,167,174,202,216,220,223,236,237,218,232,235,220,233,238,223,234,240,217,226,233,221,228,237,212,219,229,196,203,212,222,230,237,219,227,234,221,230,233,232,239,242,235,241,242,113,130,152,111,125,147,113,125,141,125,131,151,138,145,165,170,182,193,191,201,205,190,199,204,208,219,226,216,230,234,158,172,183,54,71,92,45,70,91,49,73,91,53,73,90,66,84,98,102,114,129,159,168,179,221,227,233,234,239,241,233,237,241,227,231,237,223,228,233,207,211,217,202,208,212,211,218,220,212,219,223,199,206,214,179,186,196,188,197,205,211,221,227,221,231,234,61,81,108,69,86,114,63,79,100,68,85,102,123,141,155,139,155,164,151,157,164,195,200,207,214,228,234,206,223,228,163,180,190,103,121,138,95,112,131,101,117,135,138,151,168,181,192,207,207,212,223,221,222,232,219,219,227,205,203,212,183,186,195,158,166,174,147,154,163,131,138,147,125,133,140,130,139,144,136,146,152,133,142,151,128,137,147,138,153,160,182,197,203,197,212,216,40,53,77,58,70,94,85,98,116,127,144,153,132,151,156,96,107,110,119,115,118,163,158,161,173,180,182,184,194,197,182,194,198,181,193,200,183,194,202,198,209,217,218,228,236,200,210,217,174,181,186,159,165,172,145,150,159,132,136,149,116,125,138,98,111,123,94,106,118,99,111,123,105,118,128,107,121,130,122,135,145,138,151,161,150,164,174,157,174,184,188,206,213,185,203,208,13,15,35,26,29,47,134,140,151,206,216,220,138,150,150,118,123,123,141,133,134,172,162,162,181,181,180,207,209,211,220,224,225,228,234,233,224,234,232,230,241,240,226,238,238,176,189,190,144,159,163,138,154,162,142,158,170,145,163,177,154,171,187,149,165,182,149,165,182,154,171,187,157,174,189,160,177,191,173,190,204,187,204,217,190,207,218,178,196,208,165,183,193,157,175,183,5,5,24,58,62,79,200,207,217,225,232,239,197,205,212,199,207,211,212,212,218,226,224,229,229,230,237,233,236,246,232,238,245,230,238,239,209,221,220,223,238,239,221,238,241,210,228,234,198,217,228,180,200,214,193,216,230,188,213,229,189,212,231,194,214,234,192,212,232,184,204,224,172,193,212,171,191,209,161,181,197,144,165,179,136,156,169,131,146,161,128,143,158,138,154,165,39,45,71,145,155,179,190,204,222,186,196,216,184,197,217,192,211,229,194,211,230,194,208,227,194,206,227,191,203,228,192,207,228,190,207,221,177,193,207,180,198,215,154,176,193,147,169,188,145,161,184,156,171,195,146,163,186,113,133,156,114,137,161,132,157,180,126,150,173,111,135,158,92,115,138,91,112,135,93,114,133,94,116,131,105,125,140,121,133,151,129,141,158,129,142,156,122,135,161,162,179,207,143,160,194,137,154,189,131,152,187,128,152,190,127,150,192,130,150,193,131,150,192,128,147,190,127,147,189,129,149,189,129,149,188,124,145,186,104,126,163,100,122,154,102,120,154,118,134,170,112,128,163,94,109,145,94,112,148,94,117,153,87,112,144,83,103,136,80,97,130,83,103,134,93,111,139,101,117,141,108,121,144,115,125,146,121,133,148,130,144,156,73,87,109,76,90,113,77,90,122,80,93,127,84,98,134,87,102,142,87,102,147,90,105,150,94,111,152,102,119,160,107,124,165,113,131,172,115,137,181,118,136,186,118,132,180,120,133,175,115,136,172,110,133,168,106,127,163,100,119,155,95,109,148,85,101,139,79,97,132,80,92,127,80,94,129,77,100,133,80,100,129,82,98,122,92,104,126,113,119,138,125,135,146,136,149,156,13,25,41,3,11,25,9,16,35,18,26,48,18,26,52,21,25,56,20,25,58,22,30,61,26,36,62,34,43,70,42,51,77,48,59,87,52,69,106,60,75,121,66,77,126,70,79,126,71,87,127,72,88,126,67,81,120,60,72,112,55,67,106,53,68,104,53,69,103,57,69,102,57,71,105,57,78,110,72,89,115,87,100,119,104,113,128,120,124,136,130,136,141,137,146,149,36,46,55,11,16,20,8,13,19,32,44,53,36,45,58,22,25,41,8,11,30,3,8,24,1,4,17,0,2,15,0,2,15,0,4,20,6,13,42,5,18,56,1,19,60,3,23,62,13,29,71,24,38,81,21,33,77,21,31,76,21,38,78,22,44,79,30,50,83,39,58,90,57,70,101,85,90,118,113,115,138,123,123,138,116,115,125,122,123,128,134,139,137,153,160,158,35,41,45,26,27,26,13,19,18,27,41,41,71,81,84,70,70,76,49,50,57,27,31,37,15,15,21,5,5,11,2,2,7,0,0,7,17,17,35,57,64,91,31,50,78,10,36,62,4,30,60,4,30,62,7,30,63,14,35,69,25,43,74,41,55,83,62,71,99,86,97,123,122,124,146,144,131,149,132,120,135,114,105,114,117,111,116,132,134,133,146,152,146,172,179,175,16,15,17,13,10,9,4,10,8,3,12,11,45,44,46,65,52,57,54,43,47,36,33,35,18,18,20,4,4,7,2,2,4,0,1,3,7,8,15,118,117,134,161,158,179,131,128,148,112,112,131,105,105,125,105,103,124,109,105,127,118,107,126,138,115,133,154,126,144,151,126,141,127,106,116,105,86,91,106,94,97,120,116,116,129,130,129,142,147,144,164,172,165,184,194,190,40,40,35,12,10,7,0,3,3,0,4,4,12,6,7,30,12,17,32,12,17,21,10,12,7,6,7,2,1,3,2,1,2,3,2,3,0,0,2,68,58,64,182,128,146,205,130,148,196,127,144,194,123,141,195,119,137,187,113,129,172,110,122,150,96,106,123,75,83,103,66,69,95,71,70,104,93,88,122,118,113,129,132,126,132,141,135,152,162,158,171,182,176,185,197,194,69,77,64,26,29,21,1,1,1,1,1,2,4,1,0,12,2,5,18,3,9,12,2,5,4,1,2,2,0,0,2,0,0,4,0,1,1,1,1,32,12,11,153,45,59,203,47,68,195,46,67,191,48,69,179,50,67,155,49,59,119,42,49,91,38,42,81,48,46,94,77,71,117,110,102,125,126,116,125,128,120,129,135,128,144,153,147,162,176,171,173,187,183,184,198,196,83,94,82,47,52,43,1,1,1,2,1,2,2,0,0,5,1,2,7,1,5,4,0,2,1,0,0,1,0,0,1,0,0,3,0,0,1,2,0,27,3,2,142,25,38,205,32,54,198,25,46,169,25,43,121,25,36,85,29,34,74,41,39,85,66,56,102,92,82,121,113,105,128,124,115,122,126,115,121,127,118,132,139,131,147,157,150,165,179,174,176,191,187,186,201,199,92,102,93,54,60,50,6,7,3,3,2,1,2,2,0,1,3,1,1,3,3,1,2,2,1,1,1,1,0,0,1,0,0,1,1,1,0,3,2,15,1,0,102,19,28,157,31,47,117,17,23,74,13,12,56,27,22,74,58,55,99,90,81,115,115,99,122,126,111,124,124,112,123,123,113,125,130,119,128,135,126,136,145,137,148,159,151,162,176,171,177,192,188,188,202,201,87,99,89,43,51,37,19,23,11,11,12,4,8,10,2,5,11,4,2,10,4,2,7,2,3,4,1,3,4,1,3,4,1,2,3,2,0,6,6,4,5,2,42,13,13,71,21,24,53,27,25,57,50,41,80,77,62,113,98,82,132,113,101,134,126,113,123,126,112,116,125,111,120,128,115,131,138,126,139,148,137,143,154,145,156,168,161,169,184,179,182,197,193,188,202,201,82,96,82,46,57,36,36,44,22,31,35,17,27,30,15,22,28,15,17,26,13,16,23,12,18,21,12,19,21,13,20,22,14,19,23,15,19,27,20,23,31,21,37,40,27,64,55,45,87,70,67,104,88,81,116,102,85,128,112,88,139,121,105,131,122,110,117,122,107,115,127,112,123,133,119,131,139,127,139,149,138,148,160,151,159,172,164,174,189,183,185,200,196,187,202,200,85,101,83,62,75,48,58,67,38,55,61,37,51,56,35,47,53,33,46,53,34,48,55,38,49,55,40,51,56,41,53,58,44,55,62,46,59,67,45,68,71,48,81,84,59,104,96,74,116,103,83,127,109,92,133,116,97,127,121,97,127,127,107,118,124,106,114,125,108,122,131,117,129,136,123,136,145,133,141,152,141,149,162,153,158,171,163,168,183,178,180,195,191,186,200,199} diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_parameter.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_parameter.h new file mode 100644 index 0000000..423d069 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_parameter.h @@ -0,0 +1,43 @@ +#define CONV1_IM_DIM 32 +#define CONV1_IM_CH 3 +#define CONV1_KER_DIM 5 +#define CONV1_PADDING 2 +#define CONV1_STRIDE 1 +#define CONV1_OUT_CH 32 +#define CONV1_OUT_DIM 32 + +#define POOL1_KER_DIM 3 +#define POOL1_STRIDE 2 +#define POOL1_PADDING 0 +#define POOL1_OUT_DIM 16 + +#define CONV2_IM_DIM 16 +#define CONV2_IM_CH 32 +#define CONV2_KER_DIM 5 +#define CONV2_PADDING 2 +#define CONV2_STRIDE 1 +#define CONV2_OUT_CH 16 +#define CONV2_OUT_DIM 16 + +#define POOL2_KER_DIM 3 +#define POOL2_STRIDE 2 +#define POOL2_PADDING 0 +#define POOL2_OUT_DIM 8 + +#define CONV3_IM_DIM 8 +#define CONV3_IM_CH 16 +#define CONV3_KER_DIM 5 +#define CONV3_PADDING 2 +#define CONV3_STRIDE 1 +#define CONV3_OUT_CH 32 +#define CONV3_OUT_DIM 8 + +#define POOL3_KER_DIM 3 +#define POOL3_STRIDE 2 +#define POOL3_PADDING 0 +#define POOL3_OUT_DIM 4 + +#define IP1_DIM 4*4*32 +#define IP1_IM_DIM 4 +#define IP1_IM_CH 32 +#define IP1_OUT 10 diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_weights.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_weights.h new file mode 100644 index 0000000..2c3cedd --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/arm_nnexamples_cifar10_weights.h @@ -0,0 +1,26 @@ +#define CONV1_WT {-9,-1,2,6,-4,6,4,-11,8,-9,-11,10,-12,5,15,11,-1,-1,33,-25,-18,47,-35,-23,25,-27,-5,0,-4,9,2,-5,0,34,-25,-21,55,-40,-33,34,-32,-16,5,-7,2,-21,16,14,-4,5,3,14,-10,-7,3,-10,-2,-8,5,8,-29,23,12,-25,15,8,-15,4,7,-16,5,8,-13,17,12,2,-4,-1,-1,-10,9,6,-4,21,11,0,12,-10,-9,-4,13,10,12,19,11,27,0,-5,11,-21,-26,-28,-7,3,-15,16,14,26,-22,-25,-8,-29,-24,-23,0,6,-13,13,25,0,-21,-18,-3,-21,-19,-13,11,14,4,13,18,-4,6,16,-1,-10,-14,-7,12,9,5,13,8,-4,9,10,-9,-4,7,-3,7,7,-12,7,3,0,-1,-7,2,-8,-5,9,-3,6,-4,7,-10,-25,7,-7,-7,10,2,14,-4,2,17,-9,5,-3,7,-10,-25,4,-10,-8,0,0,16,-7,11,25,-14,13,4,7,-12,-23,5,-16,-17,8,0,11,2,13,21,-11,9,-3,2,-9,-9,-3,-14,-11,1,-1,6,-6,6,14,-1,16,11,7,3,-14,21,6,-6,17,13,4,1,7,-3,-6,2,2,27,13,-5,18,0,-7,-6,-4,2,-24,-11,0,-18,-8,6,24,8,-14,11,-6,-8,-8,0,12,-22,-2,13,-15,-3,7,29,6,-16,10,-6,-4,-12,-7,11,-26,-14,3,-10,-8,0,16,5,-8,-5,-5,3,-15,-2,23,-17,-5,17,1,1,12,10,3,-5,-7,-18,-7,-3,-4,2,3,6,4,4,2,-7,17,20,12,-23,-27,-15,-3,3,6,5,15,6,-2,2,-5,22,22,11,-26,-30,-19,-6,-5,3,10,12,6,2,1,-3,20,14,4,-15,-26,-18,0,-9,1,14,8,6,1,-7,-9,8,11,6,-10,-13,-11,-4,-4,8,2,5,17,-9,0,11,-9,-11,21,6,13,39,-7,1,30,2,12,36,-11,-1,28,-2,-25,-6,6,-16,-6,-9,-34,-24,3,-17,-15,2,-20,-11,0,-13,-11,25,13,6,0,-15,-20,16,7,-11,7,-3,-10,-5,-2,-6,14,22,12,-16,-5,-12,7,23,7,-10,5,-2,-10,-1,-9,7,21,8,-19,-2,-13,2,21,3,-15,9,-2,-4,-2,-2,-12,2,13,-19,1,6,0,16,-1,5,8,-28,11,-2,-4,-10,-1,21,-30,-4,22,-8,14,9,11,14,-21,20,-9,-23,0,-4,19,-28,-9,31,-30,-1,12,3,14,-11,30,3,-24,3,-8,6,-22,-9,31,-29,2,26,-5,11,8,24,2,-36,24,3,-9,-6,-17,4,-8,-8,12,1,-1,5,3,-12,15,-6,-2,-1,0,15,-11,-18,6,-18,-10,6,3,6,-3,3,-12,13,-14,-1,43,-23,-3,52,-16,-11,28,-8,4,-6,5,-11,16,-6,-20,32,-28,-24,38,-31,-22,20,-16,5,-13,7,-2,5,3,-6,17,-10,-8,22,-13,-5,13,0,11,-16,14,-3,-14,6,3,-4,4,4,-2,2,-3,-9,5,2,1,-2,-10,-6,-3,-17,-2,1,-19,2,1,-14,8,11,14,3,7,1,-13,-13,2,-1,-3,-9,0,-5,-18,4,0,18,3,9,15,-10,-8,10,-12,-18,5,-3,-16,-10,0,-14,5,4,14,14,-1,10,16,-6,-2,14,-1,-12,8,2,-18,-13,-1,17,-2,2,24,-4,-3,17,8,-1,12,9,-6,-3,-2,-9,3,-2,-13,-1,-5,-17,-5,-7,-16,-7,-8,-14,-9,3,-9,-1,0,-13,-7,4,-9,-7,3,-6,-8,-2,-4,-7,5,-7,-4,1,-8,-11,10,6,-3,14,12,-1,6,10,-2,0,-12,-16,-3,-9,-19,0,1,-12,9,12,-2,1,10,-1,10,4,-8,6,3,-11,11,14,1,12,19,8,3,16,9,-7,-1,4,-11,-1,3,1,12,8,7,15,13,-5,-2,4,-7,-5,1,-8,-3,2,1,10,9,-1,8,9,-11,-9,-2,0,-1,6,-14,-13,-6,1,3,10,3,4,11,-1,-5,5,7,4,10,-14,-17,-10,-12,-13,-6,-11,-14,-6,1,-6,1,2,-1,1,-5,-7,-3,-2,-4,1,-11,-13,-9,-12,-16,-12,-2,-1,-2,-9,-5,-4,-7,-3,3,-1,-3,8,9,-2,1,8,11,13,5,14,17,1,10,17,-1,3,18,0,-6,0,-1,0,3,4,13,16,-1,8,14,-4,2,14,-16,-20,-14,-3,-3,0,13,21,25,5,11,14,-5,-2,9,1,-5,2,-6,-9,-14,-7,-4,-8,-10,-9,-13,-10,-12,-12,7,-1,-2,-5,2,-14,-5,3,-6,1,9,3,-8,3,-1,-9,2,0,-12,-4,-21,6,17,8,17,28,22,-5,6,2,-15,-8,-7,8,21,-3,2,20,-5,-1,16,-8,7,17,3,0,6,1,11,26,0,-22,-4,-33,-36,-16,-40,-2,14,1,2,10,5,1,17,-10,-16,3,-22,-22,-1,-14,-9,10,6,-7,7,7,10,-8,5,-3,-4,-1,-7,-7,-7,1,0,-2,-7,11,9,5,-2,2,12,14,16,12,7,2,0,-9,-23,-14,-8,-23,-1,-11,-14,-7,-9,-7,14,11,7,44,35,19,34,38,12,1,3,9,-6,-4,8,-32,-28,-19,-41,-45,-37,-14,-17,-17,-7,4,-3,-5,8,8,3,16,21,8,14,24,-3,-5,6,-11,-15,-18,-8,-12,-12,-6,-14,-8,9,-6,1,16,3,11,3,3,-8,-5,0,-6,-13,-13,-13,-6,-15,-15,6,-5,-4,9,16,5,1,14,5,-4,7,-1,-12,-11,-18,0,-6,-12,5,14,0,-1,13,2,2,18,6,-9,-4,-16,0,-3,-17,4,12,0,-1,13,2,0,16,6,-6,1,-9,-5,-8,-19,18,-1,-4,16,-2,-6,18,-1,-4,9,-4,1,-12,-13,-4,9,-3,-9,6,-4,-14,15,5,-2,-5,-5,-1,-20,-9,-3,16,2,-5,12,3,-7,15,7,1,-12,-7,-2,-15,-2,2,18,7,-1,10,2,-5,-1,-8,-8,-18,-15,-7,-2,7,9,-15,-15,-17,-7,-6,-7,-12,-12,-6,-17,-12,-6,9,14,12,13,7,6,3,-3,2,-6,-7,1,-7,-4,3,-11,-12,-6,12,11,6,-4,-3,-2,-15,-12,-4,-7,-4,3,-9,-9,-4,15,17,12,-3,1,2,-18,-13,-6,4,5,10,6,1,5,9,14,8,-6,1,3,-21,-15,-7,-2,-1,5,4,-1,2,4,17,14,-4,4,9,-24,-20,-11,-7,-7,3,-2,-6,1,5,9,-10,6,9,-12,12,11,-7,4,1,-15,11,9,-6,25,15,5,21,13,5,23,14,7,13,2,-3,17,10,6,-1,-10,-2,-20,-21,-14,-11,-11,-2,-11,-12,-3,-16,-15,-3,-4,-14,6,-16,-19,-1,-3,-2,13,-1,-3,12,-6,-10,8,0,-5,10,-11,-10,4,-4,-1,8,-11,-5,3,-6,-1,8,-8,-15,0,-3,0,9,4,11,14,-3,3,4,-15,-9,-6,-12,-14,-1,-18,-8,-1,-26,-12,-8,-28,-12,-9,-30,-13,-8,10,-1,-6,15,17,5,11,22,8,15,24,8,17,25,12,10,-5,-9,4,4,-5,1,10,1,2,4,-8,6,7,-7,5,-10,-6,-1,-5,-3,3,8,10,1,4,-2,-1,0,-8,2,-8,3,0,-6,9,1,-2,-8,6,1,-3,1,-10,6,5,-6,7,-8,-12,0,11,17,-4,-7,-1,-12,1,-2,9,11,2,17,-35,-32,-21,38,52,20,-27,-17,-30,4,2,17,18,10,19,-44,-34,-34,43,59,28,-25,-17,-31,6,0,16,10,4,18,-31,-27,-22,27,31,16,-10,-9,-16,3,-6,6,-2,-11,15,10,0,14,-2,-8,-8,0,-7,-7,13,0,11,2,-7,3,10,4,3,0,-2,-14,-1,-1,-16,-1,3,-6,8,-4,3,12,4,2,4,1,-17,7,10,-8,0,10,-2,-3,-15,0,10,4,8,-10,-13,-24,-7,-2,-16,0,8,-3,-6,-6,7,7,11,13,2,9,-6,-4,11,-15,2,22,0,2,-4,-2,-10,-12,-5,24,15,25,-1,-4,-2,-11,-1,-3,7,11,5,-16,-17,-23,-29,-35,-30,53,45,54,-11,-9,-12,-3,5,4,44,39,36,-45,-51,-51,-19,-28,-16,25,24,28,-15,0,-12,7,1,2,44,42,40,-36,-41,-41,5,0,3,-1,18,5,-17,-15,-15,7,8,14,11,3,4,1,-11,-8,10,-1,-2,-5,-10,-3,6,6,10,5,9,9,-6,3,0,-14,-21,-16,-40,-39,-26,0,4,16,15,20,24,-14,-7,-5,3,-5,1,-13,-12,0,-16,-11,6,4,7,20,-11,-9,-1,11,-4,7,14,7,22,-14,-14,5,-7,-6,12,-4,-9,4,18,-6,5,14,-4,12,-2,-11,6,3,-5,11,4,-10,1,2,-1,-14,4,-6,-23,26,11,-15,12,-7,-33,6,-10,-15,13,6,-20,14,0,-25,2,-14,-34,1,-4,-11,3,9,23,1,6,-5,-6,-2,-8,-7,6,17,-5,18,42,-19,10,42,-3,-1,-2,-2,1,8,4,11,29,-18,-12,7,-16,-7,2,1,-1,9,-9,-9,15,-7,-5,18,-1,-4,6,1,2,-6,-10,7,-2,1,4,-2,-2,-4,6,5,-7,4,3,-7,-2,-11,17,0,-15,-18,-24,40,25,30,-9,-20,-18,1,4,1,-32,-12,-22,54,43,41,0,-19,-9,-29,-29,-25,5,16,20,20,6,8,29,5,16,-60,-74,-65,37,39,43,-5,-2,-2,21,-7,9,-21,-38,-19,6,22,14,2,25,17,-22,4,-11,3,6,-15,-5,2,-13,-2,12,-8,0,13,5,-4,1,5,-8,19,4,-5,28,29,-18,18,19,-20,1,-2,-9,-2,-10,-30,1,8,-57,-26,-3,-47,-28,-10,4,1,3,15,4,-1,-4,-8,4,12,-3,10,48,16,25,38,1,-1,15,-7,-4,23,-2,2,31,-7,-15,23,-17,-19,6,-20,-21,-2,-1,4,4,-4,3,9,0,8,10,-6,-3,17,-2,-11,14,-2,-20,-12,-8,18,-15,-9,20,-4,-1,23,7,6,20,-2,-3,-5,-12,-3,26,-27,-15,17,-22,-10,19,-10,-3,16,-10,-3,0,-7,-1,19,-16,-6,16,-12,-5,16,-7,-5,6,-6,-4,-9,-5,-4,8,-6,-2,9,1,-1,4,7,0,-6,9,5,-13,12,6,4,8,15,10,-22,-12,-15,-34,-20,-19,-14,-2,-3,9,0,7,13,18,21,3,21,22,-31,-11,-6,-24,-5,0,8,-10,-1,-12,-20,-13,8,13,13,16,28,24,5,21,22,3,-11,-5,1,-15,-11,18,6,0,3,1,-8,-1,2,6,-1,-5,-8,8,-5,-8,22,7,-6,6,-4,-13,-4,-12,-6,-12,-9,-10,-9,-9,-11,-6,-6,-9,-6,-7,-10,-6,-9,-10,-11,-8,-8,-9,-7,-7,-5,-3,-4,-5,-4,-4,-6,-5,-3,1,4,4,-1,3,3,1,4,4,-2,1,2,-2,1,5,-3,3,6,-5,1,4,-5,1,3,-4,0,3,-3,2,6,-9,-2,2,-6,1,3,-5,1,1,-5,0,2,-5,1,4,0,-4,-1,20,6,2,20,-2,-17,7,-1,-15,-10,4,-3,-12,-1,16,-1,-4,6,23,1,-7,22,0,-13,10,2,-2,-32,-10,14,-25,-13,11,16,3,6,25,0,-13,19,-1,-10,-27,-2,11,-41,-18,8,-1,0,11,17,-3,-12,26,0,-13,-6,10,10,-22,-1,16,-16,0,17,-3,-3,7,3,-11,-8,-19,14,-3,-12,13,2,-5,1,9,4,-1,-4,10,0,2,-20,18,2,-15,11,14,0,-6,11,20,-11,-17,17,-12,-13,-27,23,10,-18,15,25,4,-14,5,30,-16,-29,26,-13,-21,-33,21,14,-20,13,32,4,-19,2,32,-19,-29,22,-11,-18,-24,19,8,-11,12,22,5,-16,-3,25,-11,-16,7,-7,-11,-6,-3,-14,8,11,2,4,5,-2,9,-1,-1,17,-4,2,-10,-1,-9,-9,3,-4,-26,-13,-19,11,11,14,16,4,12,-11,2,-1,-19,-1,-5,-32,-12,-17,19,23,23,8,0,4,-16,-4,-5,-17,1,-3,-13,4,0,17,19,15,1,-8,-7,-16,-5,-5,-2,14,11,-3,10,6,10,7,3,-2,-11,-13} + +#define CONV1_BIAS {-49,-18,-7,-20,-12,-15,7,2,-10,-84,-72,-65,-53,-6,-87,-63,-64,-28,-28,-4,-3,-10,-52,-15,-5,-7,-31,-44,-102,-19,-5,-65} + +#define CONV2_WT {-3,-9,-16,-14,8,-17,-10,-9,-20,37,-11,-5,-21,9,-22,-10,-11,18,4,12,8,22,11,6,-14,-6,14,15,8,-15,-6,-10,-23,-32,-11,-11,34,29,-5,-14,-13,14,-31,-17,-12,8,-19,-9,11,12,-8,31,35,24,-35,7,16,-16,-6,20,3,0,9,-28,-36,-21,-12,-35,-6,-2,-10,23,10,-2,8,7,-16,26,-13,-15,-11,17,-3,16,15,-2,-23,-9,-23,-13,6,-21,7,-4,-40,-38,-24,-20,-3,-47,19,26,-3,4,21,-4,-4,9,1,24,14,-17,-26,-1,-12,38,19,13,-7,-18,49,1,1,-11,8,-7,-26,-8,-30,14,-28,-49,11,-15,-16,-8,39,1,6,-16,-23,35,4,-8,-7,-15,-15,33,14,8,-9,-2,42,27,4,15,0,-25,-13,-22,14,-10,-44,-35,-10,3,-16,14,-10,15,8,14,6,26,0,10,19,23,15,5,-8,12,-23,7,-18,14,8,19,-4,-9,4,-5,18,-31,-44,-35,9,7,-23,7,13,0,-15,-17,-2,25,-6,13,9,24,-12,26,16,35,-34,-14,19,10,-8,8,-8,16,14,-17,5,-21,4,-17,-20,6,7,43,26,-4,-2,-10,-1,30,-17,-9,-16,6,9,24,15,-21,-41,16,-4,34,11,-8,-6,-4,-39,-19,-3,-39,-21,-9,-5,-1,8,27,10,-21,-7,-3,-5,-10,-11,-11,-36,5,-14,12,6,25,-21,0,2,43,12,-13,3,-14,-36,-11,-10,-35,-37,-49,-7,-13,4,24,22,-16,-4,-16,-17,-18,-8,-13,-22,7,-30,34,6,23,-15,-22,26,3,-7,-5,-3,-20,-8,-22,21,-44,-34,3,-18,11,-27,15,15,4,25,12,-5,33,-4,-3,-5,26,-4,-8,-17,-1,-43,7,-17,13,2,-23,-23,-13,-21,-9,26,-46,-47,-5,-5,8,-34,2,28,-4,33,-23,-24,41,-15,-9,-15,5,-12,-17,6,-21,-20,-22,-6,8,-8,-22,-26,8,-1,-17,25,-28,6,-6,-35,15,-21,48,30,-5,24,-12,-48,70,-13,-12,-1,11,13,3,17,-4,-25,-9,-33,1,13,-18,-16,-15,4,-24,37,-26,11,-39,-17,8,-4,22,23,-7,21,-1,-31,44,-7,2,-37,-5,13,-16,1,2,-37,-20,-3,3,5,-14,-5,-32,-26,-2,10,16,20,-51,-9,12,4,13,9,-24,-19,13,-15,50,9,6,-16,-27,19,23,14,35,-12,-30,39,-18,2,2,-10,8,-17,29,9,-15,-12,14,-19,23,-7,-28,8,6,3,-15,-12,-26,20,-3,13,35,23,-25,-59,-32,10,36,-40,12,8,-8,15,-22,-20,1,-2,-54,-32,-14,-16,10,-30,-54,-3,0,-2,-10,-22,-10,5,-15,-5,26,23,-40,-60,-6,-12,9,-28,-21,4,-29,11,4,-28,8,4,-26,-17,-25,-44,30,-4,-24,18,4,13,-5,-23,15,22,-7,3,33,48,-28,-22,-20,-22,-3,-58,-2,32,5,22,2,-10,-20,-5,-23,15,-36,-28,42,-1,-41,12,1,18,6,-35,-4,14,1,-27,44,35,-36,-21,3,-21,-11,-50,-7,14,7,21,34,-24,1,-2,-12,3,-27,-8,54,1,-10,16,-24,-13,-27,-35,-10,7,-12,-5,21,-19,6,12,4,9,-42,-6,-16,7,-20,4,35,-9,63,-7,7,35,16,-10,49,13,-26,55,-28,17,-35,16,-40,17,4,19,32,-2,-20,-51,-21,5,38,-8,26,-2,-17,25,-6,0,21,-11,-20,8,-1,0,27,8,-38,14,-28,11,-44,3,-32,-19,-8,-25,15,-9,-16,-47,1,7,-10,-8,7,-4,1,20,-9,-34,16,-9,-26,22,-3,-15,49,11,5,21,-27,28,-31,15,54,10,-16,-21,-1,8,-2,-10,19,3,-1,-24,4,15,10,24,17,7,-13,-25,-27,26,-12,-3,9,-2,-5,34,-12,15,-23,-16,26,-2,-10,-1,-11,6,23,-21,15,6,20,-19,17,-2,-20,11,34,-8,16,-19,-3,38,-2,9,28,-9,11,21,-8,-22,-48,-15,-15,-13,-7,24,-7,-3,35,-9,18,-8,13,-1,27,-21,6,-10,36,41,32,11,12,-3,22,-10,13,-2,-16,7,-16,25,31,14,-11,6,7,6,7,-5,35,-22,3,37,18,54,-9,2,-17,-5,-6,2,-7,-1,2,21,8,5,14,8,-48,-18,-3,-3,7,-17,-11,7,23,-6,-21,-25,22,-26,21,-19,13,77,7,-29,-2,-12,1,23,-18,-4,-18,34,-1,2,19,53,6,3,9,5,4,-7,36,5,-6,-11,-18,-5,49,-15,9,15,-5,17,2,-14,12,8,42,59,-40,39,-9,7,-13,-3,-22,47,-9,-7,8,32,2,-27,0,-33,14,-10,-27,0,39,-15,23,-3,0,10,22,-7,-23,5,17,1,17,26,26,37,15,3,18,21,-20,3,-4,23,29,-7,-21,-32,34,-6,-2,42,22,-7,34,11,2,30,34,-4,-14,-7,10,14,4,6,-9,-9,37,-39,0,2,-14,21,-45,-5,28,-2,-6,8,0,16,37,-8,3,-25,30,57,15,-16,-28,-8,-17,4,-2,-45,1,-8,10,-18,1,19,-17,-11,-39,3,-27,-6,14,-19,-14,12,16,-25,-24,-41,-26,-11,57,20,-12,16,-3,-17,-1,-9,-3,-1,-5,-38,43,4,16,1,-14,38,-3,17,-5,-2,16,-16,17,26,-2,4,-17,-16,0,-10,47,25,9,22,13,-15,-16,14,13,-1,-17,-5,32,-13,5,5,-33,4,-34,9,12,10,18,-1,-27,-21,-1,1,7,11,-21,-13,4,6,12,46,24,-25,-4,-1,9,-25,18,-1,43,12,17,-15,0,-11,-22,-2,-3,-4,17,-30,3,-22,7,-12,22,34,-48,-22,-8,2,2,-6,18,-14,15,-5,16,-2,1,14,-22,-14,4,-42,-19,-30,11,16,10,-28,10,22,-7,5,-30,-14,46,29,-53,1,-37,29,2,-74,12,13,20,0,21,-40,-2,20,-10,-60,-16,-38,-4,-24,-13,0,-6,-12,-14,-1,-16,5,-20,-42,4,30,-110,-3,-6,5,-6,-85,-1,6,8,-12,-2,-49,1,-14,24,-17,11,-50,21,18,25,38,-22,-3,-16,-1,-15,24,-19,3,-16,39,-52,3,-24,3,27,-64,37,18,26,8,-4,-43,2,2,-14,-70,-15,-58,-6,-23,2,2,-8,-2,-4,15,-18,3,-27,-20,-21,3,-115,3,-33,31,14,-50,28,-13,20,8,-55,-51,34,19,-16,-42,17,-62,-9,-24,11,5,5,22,1,12,34,16,-19,-19,23,18,-103,-13,-34,29,12,-57,-2,3,17,0,-17,-25,8,9,-22,-36,-20,-34,15,-9,12,32,31,-18,17,-3,-23,-8,-8,-1,31,15,-37,-3,-29,24,1,-34,24,28,-7,11,21,-18,-21,18,-54,-68,-35,-63,-1,-19,-1,-16,8,-19,0,-19,-18,-2,-17,-39,16,3,-68,-21,-75,-17,-3,-80,-12,24,-46,4,-7,-45,-6,5,-26,4,-1,-44,39,20,18,4,-8,-2,12,-5,-16,12,-5,-17,15,6,-17,1,-75,-25,3,-51,12,46,24,19,-3,-31,1,23,-11,-58,-23,-88,8,-5,-24,-6,18,8,7,1,-27,21,-2,-32,11,-18,-88,2,-74,-6,-15,-52,-7,24,6,11,-36,-48,19,19,41,-13,3,-67,6,20,-13,31,33,5,-7,-4,4,20,11,-2,23,17,-43,-6,-49,-12,-15,24,19,34,42,8,-9,-27,-5,20,39,12,-17,-18,20,6,3,31,-11,-5,-26,26,16,-7,-5,-2,23,29,47,11,28,13,8,35,21,-7,21,3,50,1,-23,2,3,-10,-8,-36,-9,-25,-4,28,-23,-25,-17,-11,-1,2,-11,-2,-7,32,-5,1,-16,4,8,-12,-12,-5,3,1,-4,-19,-6,-28,5,17,-1,-2,19,9,32,17,-17,-18,13,-17,10,8,-5,1,-23,8,27,34,-42,-25,-8,-4,16,10,18,23,9,29,-5,3,6,-46,-26,-50,-37,-13,6,-27,6,1,-8,15,0,-7,5,-10,-18,4,-9,28,-14,-30,6,36,19,1,6,15,-35,-17,10,26,21,-1,15,6,-25,39,4,4,10,22,-26,23,-1,-1,13,16,9,-9,-2,21,7,2,22,56,25,28,36,19,4,26,9,-7,3,15,-6,-21,5,-14,28,-4,-44,8,-16,16,8,14,-18,25,-21,-5,13,-12,5,-2,4,-5,-13,27,-11,13,-13,-10,11,4,20,50,-10,11,12,1,42,-7,-5,-12,14,4,-4,3,-28,24,-14,14,0,-14,9,-1,-22,2,13,15,-17,21,3,-16,9,31,43,-36,12,8,-4,15,40,-6,29,12,14,-4,-5,-2,-37,38,-14,-5,-1,-23,-5,12,-21,-8,35,15,-4,21,-13,20,22,12,-22,-26,-13,-7,7,-26,17,-26,-11,3,-15,8,17,0,-15,-5,-16,4,-31,-3,-68,0,-22,-38,16,-3,2,21,-26,-45,10,15,-3,-25,-25,30,20,-20,15,22,-13,-5,10,-6,20,4,5,1,-12,-13,-12,-4,-2,19,-37,-17,0,17,11,15,-3,3,29,-7,-22,19,9,-11,5,19,24,-17,-51,23,-31,-19,22,4,-17,14,-30,-22,-20,-15,14,22,-23,5,-17,25,11,11,-2,-17,-6,3,4,32,14,3,13,19,12,-33,0,31,-13,0,3,-20,-30,0,16,11,-19,-33,-18,6,8,25,-2,13,-1,5,-18,-18,10,27,44,-11,22,2,-22,26,11,4,38,22,-9,11,-7,-31,-16,14,46,-2,-38,-24,-19,-3,30,24,59,-15,-20,-2,-29,43,2,0,-31,-21,-50,-27,-21,2,16,-5,-4,25,-12,-5,-15,-10,-10,-14,6,13,-55,-18,13,17,8,-43,31,-28,0,0,5,-37,-8,25,-25,-22,-61,-10,-14,25,18,38,-17,9,12,9,24,-21,-15,0,1,4,-15,-9,-18,34,-21,-8,14,-15,16,-18,25,-1,15,-15,-16,-14,5,18,-37,24,23,-17,-20,9,-22,-15,33,2,13,18,-7,-32,-2,-15,-14,3,-26,-3,1,10,-8,-24,12,37,-28,-12,52,-19,11,-6,-2,18,2,-6,14,0,-11,-4,-27,-10,18,7,33,10,-13,3,-22,7,-13,35,32,-5,-29,-18,-18,54,-16,-13,66,11,26,-9,4,14,-40,1,36,-16,14,-20,-58,-20,9,-17,26,2,-25,-10,-16,-16,14,24,74,-26,-11,-9,-27,99,13,-24,-29,-1,2,-4,-18,8,-11,21,-2,-3,6,-13,-6,18,-13,-14,-1,25,-49,0,12,-10,1,0,23,-19,-5,-17,-7,20,-13,-10,1,43,-12,-5,0,36,9,44,24,-1,29,10,30,-6,-3,-12,33,9,-14,9,30,17,-38,-12,23,-29,22,-33,5,12,-1,-27,17,-9,-9,5,-5,2,12,-5,14,9,-32,10,33,15,36,-2,23,-5,-19,-8,-18,-3,24,-14,7,25,3,-15,33,27,6,-32,13,13,7,-14,-2,-25,-40,4,7,-5,-17,-11,-30,27,17,21,18,-18,-12,4,-20,-4,10,-40,0,0,-53,-10,26,58,-13,-42,5,34,23,20,-3,-58,-98,-17,25,-17,1,-30,-74,-5,19,4,-19,-48,12,15,-22,-17,1,23,-43,-13,-32,-7,10,74,-7,-53,15,22,12,10,8,-87,-83,-1,9,-23,2,-40,-21,5,-12,19,-31,-12,-7,24,-20,-42,-23,-13,-65,-21,2,-10,-22,1,-34,-24,9,34,-10,-9,24,-70,-60,25,14,-7,7,-21,14,0,12,-25,7,-16,1,25,20,4,-18,-24,-51,-30,2,-14,6,6,-12,5,15,-9,-12,-26,31,-2,2,-7,-23,14,-30,25,-10,16,56,-6,2,9,10,-5,24,7,-16,20,41,18,-5,-8,9,1,10,-15,7,0,13,-32,-8,-23,-37,-7,-19,-7,-9,-3,-30,4,32,14,-12,-17,10,-2,2,11,-35,-4,7,2,-37,-5,4,30,-14,-52,25,41,1,11,-41,-48,-70,6,1,-31,-24,-35,-22,-22,0,8,-20,-24,22,25,23,-6,-15,33,-45,-11,-17,-1,7,27,10,-60,26,25,0,27,-34,-63,-63,4,-10,-17,-34,-35,6,-5,-14,20,7,-20,6,37,9,-25,-16,28,-32,-28,-15,-5,3,4,-48,-30,12,8,3,8,-24,-58,-65,1,-4,-9,-36,-8,3,2,67,-35,32,-13,10,36,38,6,-28,50,-25,-44,-9,-12,0,-11,-35,28,18,-7,-13,7,28,18,-13,6,6,7,0,-26,7,59,18,-2,22,6,-2,-80,33,6,-11,4,-5,-9,33,-2,-16,-20,-19,16,12,1,-36,-6,22,45,-3,-28,32,17,-7,-55,6,1,-5,12,-11,-15,21,-37,23,-14,-5,-4,2,-8,8,4,36,37,-53,-16,3,1,-11,-1,48,13,25,-22,23,0,-23,-49,17,-22,16,4,-8,1,4,-14,-23,4,16,-26,18,-21,12,1,7,-6,24,-6,30,-44,-25,-50,-11,-35,22,-37,-21,-6,8,-8,16,14,13,-9,-9,23,-50,-20,-55,7,1,-50,16,19,12,3,-16,-36,5,18,-4,7,15,1,17,1,17,-33,-16,-11,16,1,-16,20,3,-12,-23,11,-2,-17,33,13,3,-15,18,15,48,-6,-12,-27,10,-35,33,6,-7,5,10,14,-26,3,-15,23,-10,-27,-2,22,20,20,6,21,46,-44,8,-10,-14,38,-26,-34,22,-35,-14,-6,-33,-18,19,35,-1,42,14,46,-19,-1,22,10,-25,-37,16,-21,-2,23,-18,33,39,-9,58,-29,23,61,50,-24,11,-25,14,30,-47,-37,-6,-3,-19,18,9,2,10,-5,-20,5,-20,-18,17,-15,3,-3,0,27,23,25,13,1,34,8,40,-19,-15,-11,26,-15,-24,-15,-6,-54,-33,-41,-3,-36,-2,-25,-30,0,-3,-7,-1,-16,5,-7,17,-3,-49,-5,-65,14,-8,-49,14,25,-14,-4,-2,-52,-2,-4,-37,-22,14,-6,11,-21,14,-8,-21,6,3,-25,-1,-12,26,-5,12,-22,-9,5,-45,5,-7,-46,19,26,14,-17,-9,-48,3,-51,33,25,-8,52,-32,21,2,5,0,5,-4,-8,-7,-17,-14,-13,-14,29,28,-25,39,8,-16,30,11,-11,-23,6,8,18,5,-17,22,25,3,47,18,30,18,-8,-12,-6,-28,1,8,-22,-7,-22,6,33,9,22,48,-17,30,74,9,-20,-38,5,3,46,-2,-14,-24,-25,-7,8,-2,-13,31,-22,-33,-3,-12,-3,-32,-10,9,-17,6,38,8,28,-7,26,8,-10,-9,-28,-43,21,28,-4,-22,18,-26,-58,-29,-35,-7,-36,-4,-21,-17,-12,-2,12,25,-10,-1,-8,11,19,-46,17,-60,10,-29,-67,-33,16,-20,19,-14,-56,-6,28,-43,-18,11,-19,7,-20,-3,-16,-33,0,-9,22,36,-4,25,-2,11,27,-24,27,-43,-14,-27,-31,-3,11,-8,8,-16,-47,-2,-26,-17,-4,-22,-9,-17,16,-3,2,5,-15,-19,3,-24,-34,-21,-30,-28,25,-17,-35,-14,2,11,-3,22,7,-8,15,-38,-22,14,-7,-12,-8,-12,6,15,38,14,26,-5,-16,-15,14,-2,-39,-12,-25,-10,13,-48,12,-17,-1,3,22,-18,5,5,12,-34,0,-2,0,-21,-33,15,-6,-29,-6,14,2,-7,-13,-6,0,5,-17,-6,4,1,11,-11,20,-28,25,7,-36,3,5,-4,14,2,-27,-9,35,-16,-52,-24,-25,-16,-42,-20,-5,6,-10,-14,15,-2,-12,-3,0,-7,7,-31,-3,-47,13,-18,-51,-3,31,-15,13,-13,-49,1,38,-20,-20,-22,-22,14,-36,-2,-5,-6,5,-40,25,16,-9,1,6,1,18,-33,22,-29,-8,-19,-38,6,18,-4,11,-9,-57,13,-5,10,26,10,-5,-48,-13,-11,26,23,-34,-16,7,-2,-28,-22,17,13,-16,36,-10,13,-2,-22,48,29,10,-24,-25,-31,-26,-7,-11,6,11,35,28,-15,-1,19,48,17,-9,-21,31,3,-40,-19,11,11,-4,9,20,-21,-8,-5,23,16,6,4,-16,-22,-4,-2,-14,-30,-46,24,11,-23,-29,11,36,7,4,-9,-4,13,-29,-14,6,8,24,27,1,-9,17,10,-12,25,9,-3,-4,6,-26,16,15,-3,-41,-15,-11,-21,-32,-5,-2,19,1,-6,3,16,-16,-13,-4,9,6,-17,-3,-40,-4,10,-25,-27,37,-9,8,13,-53,3,18,-22,-9,-42,-26,-11,-28,21,-16,6,2,-26,14,5,-14,-18,-8,-6,7,-35,18,-21,-15,13,-30,-3,23,2,4,-3,-56,26,-29,-17,-2,13,10,-55,-25,-44,-63,21,9,5,24,-32,-46,-23,-24,-24,-7,-41,2,-26,8,-23,6,17,-8,17,7,15,14,30,-9,-27,-15,43,31,7,-7,-30,-1,3,1,-14,-6,-12,-28,-26,5,4,1,20,25,-41,5,-5,-21,2,-12,8,7,-21,38,10,-1,-17,-6,47,22,-2,16,-27,14,-36,10,-13,-6,10,-2,-27,24,42,-9,20,2,-23,14,7,-16,31,-11,0,15,4,46,26,19,-10,-15,21,-21,-7,17,-32,1,8,-1,-29,2,-14,-30,-10,28,25,-10,8,-24,-34,5,3,-15,11,-25,11,10,9,-13,-1,1,-9,5,10,13,26,58,-14,23,-13,-13,-13,-26,-26,-6,-30,24,-12,-1,23,-29,4,7,-12,23,14,-20,41,5,27,-12,15,-10,6,0,-2,16,-24,-21,3,-21,9,-14,-38,9,-11,-3,-3,-12,0,23,0,-4,4,20,15,18,15,-26,21,3,-10,-8,40,19,-23,-1,10,21,7,4,-18,6,-2,-27,-32,-19,-9,-16,8,2,-32,16,34,20,5,17,10,14,-18,-40,15,-5,-15,45,-11,25,3,26,27,41,21,6,-22,23,-32,0,31,-22,2,15,-16,1,-30,-6,23,13,-2,28,18,17,19,-15,8,4,-9,64,48,64,-10,-16,13,-5,-7,-12,-10,-6,5,-9,20,-32,-32,15,-25,26,-15,-18,14,-13,-26,24,-5,25,4,-14,18,3,9,26,17,38,19,-25,38,-17,-23,-2,0,-15,-18,-2,-20,-14,-6,-11,-27,20,-11,-6,11,-41,-21,-4,-8,25,-2,-17,-42,-13,-1,-15,7,5,19,8,13,39,40,-10,17,-33,2,-10,-10,0,1,22,-16,31,52,1,-7,-9,41,2,19,5,-23,-8,-19,17,5,15,36,55,9,2,-4,12,25,14,-3,-14,14,-16,-8,1,48,4,7,7,18,12,4,19,23,-51,17,18,15,-25,30,9,-10,44,-14,60,-2,5,3,22,43,16,9,-13,15,32,20,-24,11,3,-2,-27,8,6,-18,20,-4,-23,-1,27,47,3,20,6,-15,53,50,75,-9,15,-14,0,31,2,10,-13,23,15,18,-22,-19,4,9,8,18,-14,9,-1,-28,-3,-19,-13,20,23,32,2,-7,-12,20,10,32,-10,48,-8,-6,6,18,-34,17,22,16,23,-17,-20,12,7,18,-12,9,-45,-11,-30,2,13,2,22,10,0,-29,-31,28,-7,-13,-25,9,9,53,13,17,-38,17,-26,-17,-26,23,27,-9,14,12,-23,-28,-3,24,-9,-20,-11,0,2,17,-2,-13,7,31,25,-9,-42,-37,-27,7,14,17,-27,28,-27,-13,-2,7,-2,-20,3,-19,-3,-17,6,-62,-44,-8,-40,14,-12,-3,-9,-20,-1,-36,58,-3,-29,-17,-33,4,-25,23,-36,37,-1,18,10,18,-3,-7,-22,-11,-27,-50,15,-60,-10,25,-37,17,8,4,2,-29,-9,-10,57,13,-21,-12,-40,17,-13,11,-49,2,-9,-1,6,-6,-6,8,6,14,-33,-28,-14,-61,9,11,-18,18,36,-25,-1,-28,-32,-28,-10,42,-13,36,-8,26,-14,33,-62,-24,-12,-22,8,3,-22,13,11,19,-55,15,-30,-75,-11,7,43,-17,34,16,-10,-21,14,8,-8,10,-14,-12,-24,60,-1,5,11,-7,-4,17,16,46,30,0,-15,49,32,-9,-27,5,-21,17,-9,19,-23,28,-5,35,-5,-1,24,-27,-53,10,-21,41,13,8,-16,-3,-22,31,9,25,34,-10,-8,36,15,12,-9,-29,-20,9,-33,14,-31,-9,0,-19,-8,-9,30,15,-16,-10,-34,21,-51,19,-48,22,-1,23,20,5,24,-6,12,29,2,-24,4,-50,-26,0,-9,34,-15,1,-2,-12,-45,-15,26,20,24,-6,-44,34,-4,14,-71,28,17,10,17,6,2,6,24,12,5,-12,-25,-39,-4,21,-1,10,19,-11,-4,-7,-21,-6,-15,25,26,34,32,57,3,17,-54,6,11,13,4,-10,-12,24,19,-5,-5,39,-37,-59,4,35,-10,-21,34,-11,-7,-48,45,17,-17,27,10,-19,-17,-10,-19,-11,-1,-37,21,-24,-15,6,4,32,-14,-6,-14,4,-18,10,27,5,-18,14,22,6,-13,-12,-41,-1,-27,18,33,-25,10,10,-1,3,-16,-24,12,-3,-7,-7,-6,11,-27,-22,-8,-4,-3,-8,-5,13,-10,18,-9,-2,-20,11,-11,19,-6,20,54,-10,13,32,1,-21,-10,-8,17,-26,-4,-12,35,7,-14,-23,-10,11,-13,1,-8,-15,12,-3,-7,-3,-3,24,21,14,9,-21,12,2,37,-31,-3,3,4,2,-7,-20,23,-16,49,2,-9,-8,-16,3,-26,14,-14,-21,-18,-17,-17,26,8,14,0,-4,30,-8,22,13,-2,-24,-16,-6,3,10,-9,-23,-3,-23,27,3,-19,-6,-41,-9,-4,-13,-17,-25,-40,-45,-16,-1,17,6,-22,15,-25,37,12,-3,-5,25,-11,-1,23,0,42,-8,0,4,-1,43,-6,46,16,-21,-1,-7,17,8,21,39,-5,0,0,20,-42,10,-26,13,20,-19,-13,22,9,20,6,3,13,-1,-14,-20,-7,10,-13,19,9,-18,2,-5,-27,-3,-15,14,1,10,-20,37,-31,18,-3,6,58,7,-12,19,6,-2,-26,27,18,1,-7,-21,6,32,-5,-13,-8,4,-15,-1,-32,8,27,-41,11,-9,-18,32,-11,-37,6,-8,9,36,11,-30,4,-1,-4,-3,-21,-13,-6,-7,-20,-17,3,-13,2,-11,-18,-16,2,32,-4,-38,-2,-11,-1,-5,-8,-24,14,0,-9,21,-9,-13,-8,8,5,11,-50,-21,-19,-19,-25,-36,-11,-16,-1,-19,5,-40,-8,3,-9,-51,-8,-24,8,-26,-13,3,-13,36,-14,18,-5,36,-52,1,45,15,0,-30,32,-21,24,13,-2,10,12,-52,19,-40,6,-51,-46,44,-47,-19,33,23,-37,7,-11,34,30,11,-17,19,-35,11,6,31,-14,-23,17,-21,10,16,12,-16,-28,-24,17,-32,-11,-30,-12,22,-28,-16,17,28,-17,7,3,-11,108,32,1,18,3,-6,-43,30,-1,7,0,-10,-22,33,6,2,-24,-7,-10,-44,-18,37,21,-26,4,12,7,7,-31,-17,-3,17,34,27,-17,-21,3,-2,-35,1,4,13,11,7,-49,-11,5,13,12,-17,-30,-34,8,22,19,-31,6,12,-10,-29,14,3,-6,15,22,33,-15,-14,0,14,-15,-6,-12,15,-39,36,-52,-35,0,-13,47,-38,3,-26,-29,47,28,4,0,8,-24,-17,9,9,-3,17,-28,10,-29,-11,-49,13,24,22,-16,-10,33,-11,0,-8,-28,-17,16,-51,18,-45,-18,-7,-34,16,-30,-25,47,-26,-27,-2,-10,24,18,41,-12,-38,-27,10,-20,33,-1,-23,29,-22,-6,-1,5,-9,-24,-25,0,-44,-20,29,42,1,-18,-29,28,-12,-9,-11,-6,-17,49,45,2,-23,25,-18,-41,-2,14,0,0,-12,-31,21,11,-11,-42,-26,-36,-36,-3,46,15,-8,-8,-24,18,-26,-5,-20,-5,-27,23,27,-17,-21,16,-20,-25,-26,28,-3,13,-9,-37,-10,8,6,-11,-10,-41,5,15,36,38,-21,18,-3,-21,-22,19,48,4,0,-4,7,-9,17,25,4,-27,-18,28,12,-22,49,-30,-19,15,6,7,-25,13,0,0,1,18,6,35,-10,-40,8,26,42,-21,-8,-18,50,-23,1,-37,35,14,6,-29,13,22,-30,8,-13,-5,-8,2,-9,-9,-14,-23,36,-4,25,-36,-15,21,-34,-30,-11,-28,7,9,78,-15,-22,-7,3,-9,-1,-6,-8,16,-15,3,-7,51,4,0,-13,-34,-35,5,32,24,-7,-21,-16,6,-9,-5,-22,-4,4,6,42,-9,-30,29,-39,-9,-7,14,-23,-42,-6,-20,-15,25,-5,-19,-19,-33,-21,-32,8,0,8,-13,-10,5,-25,26,-51,19,8,-5,-12,-14,-25,26,-33,-12,-33,24,-35,-29,8,-22,-34,-9,0,-16,-22,-25,1,33,0,34,16,4,-10,-2,1,32,33,23,-16,14,32,0,25,42,18,0,-14,32,4,-10,33,-14,-15,12,-14,25,10,30,-6,35,11,36,27,17,4,-8,3,40,44,14,-3,-8,36,-16,-3,-2,-11,11,36,-5,2,7,-39,-27,-28,8,-26,-14,4,-8,-22,-26,-6,-21,15,-2,0,-5,49,-2,31,10,-50,-4,-2,24,9,2,6,-11,12,-12,-16,22,-35,-16,-26,22,-20,-20,25,13,-5,25,-20,-45,-25,13,17,-15,33,-11,20,7,-59,5,-17,17,6,-11,1,-8,2,-25,-10,26,-27,-7,-14,-5,-10,-15,-11,-2,-41,8,-13,-55,-38,28,44,-23,12,-28,-8,13,-14,-27,6,-19,3,-14,-9,-18,28,-26,-16,23,-24,-31,-9,-10,-6,-16,-26,4,-45,10,-12,-38,-31,19,4,-26,-1,-9,5,-8,16,-4,37,20,21,10,-7,-14,27,-27,-32,37,-30,0,23,-24,-16,2,15,9,16,1,-17,-16,-4,4,26,-29,13,23,32,16,-5,-10,27,-5,-17,-12,-2,22,16,-3,21,30,1,0,-18,4,-5,-23,-13,8,-22,-15,-35,8,-25,5,8,7,27,-28,9,22,-16,-34,25,3,11,7,0,30,25,7,1,27,2,-17,6,1,10,-12,-20,18,-40,12,-21,-37,-20,12,8,1,21,-20,-12,-1,-47,-59,-23,-6,32,-2,-11,15,4,-15,0,-16,-11,4,6,-9,11,-7,-5,4,-95,10,4,-77,-6,4,16,-8,-15,-50,-28,1,-6,-61,-17,-40,8,-13,-14,-18,12,-2,-4,-28,-13,-16,-6,-12,-6,4,-28,0,-91,4,18,-65,-13,6,-8,-5,-2,-43,-10,0,-2,-20,28,6,11,-11,3,-13,-10,-8,1,-5,-2,11,69,-13,-1,10,6,9,-23,10,8,-23,13,4,-1,-1,17,9,29,8,38,5,-20,2,-18,-32,-12,6,-7,6,3,-31,-27,1,-14,10,-46,3,-6,-6,34,6,-2,2,3,-16,6,7,13,11,30,-1,-5,7,2,32,20,-10,-15,14,-11,28,-30,0,23,-9,-2,11,1,11,-1,16,24,0,-22,14,-7,-18,-8,13,4,47,8,1,-11,-14,-29,-21,34,2,-28,7,-37,40,2,6,58,-9,8,-31,11,26,-37,-2,-24,-7,7,-31,31,-13,-10,7,-21,-19,-17,-14,2,-24,-44,-28,0,-17,-32,0,11,33,-2,-32,24,-13,-2,-16,9,5,-8,-7,-55,-12,18,-10,33,-13,-24,13,0,-21,-11,21,39,10,16,10,1,28,-11,-6,0,0,2,-16,-26,20,60,-18,13,23,8,-11,3,-2,-4,48,29,-9,-12,14,6,36,-17,-11,2,-3,-1,-11,-26,-7,18,-23,-7,9,-21,11,-28,36,16,-3,7,-13,-1,-19,-20,-9,36,34,-18,-21,-7,-5,-4,28,14,-17,24,-9,21,13,-6,19,34,23,19,8,-44,9,23,8,-4,6,33,9,52,8,13,14,35,26,-31,-25,0,19,-8,33,-19,-13,-7,-9,13,23,50,26,42,11,14,46,8,18,37,0,-6,9,65,42,10,31,-24,-10,49,-7,25,1,46,10,1,-11,-9,-7,13,-35,-30,2,39,9,27,25,18,21,5,-18,-10,35,-27,-15,60,39,17,6,11,-36,34,-43,24,4,1,18,2,-16,15,33,15,40,16,33,23,37,18,28,7,7,5,8,-21,37,20,2,22,19,62,0,40,-22,1,15,-3,-14,-14,11,3,36,-18,-8,7,-57,9,36,-11,-22,-17,-16,38,-19,-10,5,-32,16,-1,3,-13,-53,36,-19,-5,0,8,54,-13,-34,-38,8,-34,-7,40,-30,-36,-19,-23,7,13,10,-2,-27,25,4,5,-34,17,-4,-14,5,-13,-4,44,-9,-22,4,26,15,-20,-23,-30,10,-22,11,-11,-23,-10,-13,3,50,41,-1,8,-1,-4,28,19,0,21,-14,10,44,-6,12,33,26,-34,-13,36,36,9,-2,-3,-4,3,-27,-27,-19,9,-30,-41,-9,29,-5,-7,10,-5,6,15,-32,18,-14,-2,-3,16,-13,1,5,-29,9,28,-24,2,14,-26,1,16,-62,6,-15,-5,7,-56,24,40,25,16,2,-20,-25,4,-7,1,-8,4,-16,17,-20,44,1,64,-35,2,-3,5,0,-26,-9,-12,1,-2,18,-15,8,9,-24,15,11,10,-27,3,14,-9,8,-25,-16,4,6,-4,23,-19,-11,-6,11,-18,-6,16,36,-15,-10,-3,11,-3,5,1,-2,3,-9,32,18,21,-6,11,-6,0,17,-27,30,-21,5,-11,-7,2,-3,11,-22,-2,27,-13,28,37,-17,-20,-10,2,9,0,-17,17,-4,3,-25,1,-13,3,-8,4,20,-53,16,17,-7,1,-9,17,-33,7,23,-9,10,-18,11,5,-10,-2,2,0,15,13,11,5,0,-22,-23,-17,-9,-8,-1,-10,-11,-32,-8,25,-4,10,-23,-5,-9,-5,27,-6,28,7,-2,-40,-8,-10,9,-1,-4,6,44,20,-10,-20,-4,7,9,39,30,-17,-16,-15,-11,27,-17,0,27,-17,-11,-22,7,10,21,14,-1,10,10,7,34,-15,-11,-5,0,-10,2,-26,8,14,-16,3,1,25,11,-25,-9,16,5,-20,31,16,9,29,1,14,-5,-46,25,-33,-2,-18,-1,-6,1,-18,-13,32,3,-9,3,51,-18,4,-8,1,-5,-46,-13,-8,21,-9,-2,30,-1,-44,-22,-5,-40,-19,8,-16,-3,6,-10,29,-1,2,-31,15,-2,-25,-26,6,-31,-11,6,-14,-1,-37,-4,25,-10,-9,-27,11,-18,-21,15,6,45,4,-6,-38,-12,-16,7,-19,-15,31,-22,-12,13,-30,-10,-28,-6,-12,5,-36,-45,-12,6,28,-42,-8,-11,11,3,-24,5,19,99,29,-22,-13,-8,2,-6,-24,-3,15,17,-9,-2,-2,-12,15,16,19,-7,-15,-14,-18,11,21,-31,-10,12,-6,17,28,4,-14,34,4,-8,5,-3,-5,-12,-11,-13,-25,5,-9,16,-7,-2,17,2,21,14,27,-12,38,-40,17,-16,-1,12,9,-4,57,21,-6,-30,-5,27,-6,1,3,11,-24,-33,22,-33,-2,20,-10,-2,46,5,2,33,22,-1,-43,-21,-20,-11,7,-12,9,-1,-19,45,26,-1,5,11,-15,-6,-9,22,-10,-15,52,34,12,16,-7,-47,-34,-6,-10,4,-4,-22,-60,14,-5,-27,10,-31,6,-7,-28,32,26,127,55,-12,-9,-17,-13,30,-35,-13,70,47,9,-1,0,-22,-48,-9,18,-11,-14,-51,-14,19,9,-36,2,-2,8,6,-55,-1,-2,110,17,-28,-30,-14,-6,-8,-13,-1,16,11,25,23,9,-15,4,4,24,2,22,-22,5,10,29,-1,-7,-8,17,14,-16,2,-4,20,-7,9,-9,5,-5,-13,-11,-22,-11,-20,-6,6,-19,-19,-48,10,34,4,11,13,35,-34,16,4,-15,22,-23,-26,65,5,-6,24,-19,7,-26,17,-18,33,-8,-26,18,13,-16,-6,1,-29,-49,0,12,8,-22,-26,-5,2,-8,-28,4,-2,-2,-19,1,6,0,25,25,-8,-33,-3,-18,-2,-29,-35,72,53,47,-17,-8,-35,-68,-8,-15,-31,-21,-32,-38,3,-14,-12,4,-29,-28,4,-56,24,7,95,19,-36,-57,3,-27,8,-8,-20,68,-4,59,-25,-19,-22,-16,-26,-24,-20,13,-13,-14,1,-4,9,-33,-27,-26,8,-94,-29,-30,23,11,-7,-45,5,-27,-2,-13,6,26,-16,12,-9,-20,-6,37,-60,20,6,7,9,-39,-16,-4,2,9,-21,-5,-12,-52,-31,-37,-18,2,20,-31,0,-22,-15,-23,-50,33,25,41,0,-32,-33,-93,-11,1,-33,0,-34,-12,3,6,2,14,-21,-42,-41,9,-1,33,21,19,22,-24,11,-8,3,10,-33,-7,34,35,4,17,-13,-58,-16,-23,9,0,-30,4,17,15,5,-27,-20,-4,0,-7,-24,37,18,-12,7,-63,9,6,-1,-46,-41,-5,35,-3,14,2,-5,14,-11,-4,21,28,26,12,-2,4,17,-38,-23,-12,-11,19,-18,-1,-9,-11,-23,2,0,3,-35,1,-33,-2,-9,15,-46,15,2,48,12,6,5,19,32,19,-11,-19,25,4,-21,-14,9,17,-27,-5,-11,24,-4,4,-16,11,2,24,-4,24,-3,3,-9,3,25,61,12,33,42,-13,8,-14,-6,-7,10,11,9,-20,-9,-18,-4,-8,-8,54,23,12,-8,-16,-23,-6,-32,31,4,-30,-38,-11,-38,3,-21,-16,6,24,0,0,20,2,-17,-13,-52,0,2,2,-14,-19,-6,-29,0,-13,-5,-16,29,16,-11,-10,-9,-16,-40,-11,-16,17,0,-7,19,-15,1,17,14,-23,-35,-4,-56,-6,9,60,-18,-26,-32,-27,-14,10,-4,-6,2,1,-4,-31,19,-7,-2,-6,7,28,57,19,16,-7,22,31,11,-15,21,-21,3,9,28,76,-40,8,-44,-22,-37,21,0,26,-20,-22,1,-17,53,-15,6,-19,29,21,31,15,2,6,4,-21,8,-7,-25,-19,6,-3,21,16,-18,3,-13,-21,-27,-24,19,43,4,-13,3,-20,23,-5,21,-14,8,-2,16,-12,-19,-11,0,-24,18,-18,-23,-7,-5,-14,20,25,-20,1,21,1,1,-15,7,2,20,-15,-36,31,-13,-29,-14,21,-40,-10,-34,12,-16,-23,7,-26,7,-1,-24,0,-43,2,17,33,-7,-10,11,6,7,18,10,-26,-17,9,-31,16,-19,-47,-31,11,-26,-2,-8,13,-25,-17,-8,-8,19,-24,-35,-16,-8,-10,1,16,-27,-17,-4,14,1,24,0,-21,-46,-11,-30,-29,5,-31,-7,37,10,33,11,-3,-10,10,-27,34,4,-17,1,-23,-12,-22,-4,55,-14,-12,23,-14,-18,-16,-2,-2,-51,3,-29,-29,30,-14,-12,-16,0,29,-3,-2,-8,-16,-6,29,5,5,-17,-19,-19,-7,-8,31,-14,-13,40,-21,-19,-33,4,20,-18,11,-18,30,18,-18,12,-13,0,9,8,-14,-29,-25,-14,-15,35,-16,-31,-23,-18,-2,14,12,-9,-18,31,-18,-4,10,0,21,24,-16,-38,16,-45,-30,-49,-19,-16,-35,-36,16,-2,-3,-3,-28,-23,3,-27,-7,-9,-11,-15,14,6,54,-2,15,39,3,7,-30,-17,-15,-40,24,-23,-28,-44,-28,-18,-20,-34,17,-21,-3,-16,-28,-29,-4,-26,6,-6,-40,-18,12,-29,24,-5,15,47,33,0,-31,-53,-33,-53,31,-17,-28,-26,-9,9,0,-17,4,-21,18,-46,21,-22,-2,0,11,8,-29,-17,21,-30,37,-5,20,56,54,-2,-19,-14,-10,-45,5,-2,-29,-32,-19,16,23,-22,-35,-29,-1,-6,31,-5,-3,2,-6,-11,-24,-32,39,-11,25,29,43,46,4,-6,23,12,24,-34,39,15,9,15,-6,0,14,2,-13,-23,-10,6,31,5,1,-7,-5,-28,-6,-22,-23,4,-6,42,28,5,13,-12,-30,-4,-18,-29,53,-36,-2,-34,0,-24,-31,-36,27,-8,11,-17,-17,-18,23,-17,-36,-21,-23,-12,26,-5,-7,21,18,28,-11,7,-48,-23,-21,-28,51,-15,-12,-36,3,-24,-5,-28,27,5,-3,-6,-3,-20,9,-9,-6,-13,-32,-23,-7,-24,24,3,37,34,-17,4,-47,-24,-24,-34,28,-28,9,-38,17,-12,10,-26,9,6,-24,-27,16,-33,7,14,9,-2,12,-13,-15,-34,24,42,24,40,-18,9,-37,2,-21,-11,31,-14,9,-34,-8,-16,22,-36,7,3,-17,-4,12,-8,-10,-8,-7,-9,10,8,10,-5,14,21,40,28,-1,1,-28,18,-10,1,-5,14,40,-5,7,-14,27,-37,11,6,-2,-5,-14,-2,8,-3,-23,4,-12,-6,13,-41,13,28,0,-19,-6,-18,-33,-19,-24,-27,71,-11,23,-43,16,-9,-28,-54,33,-17,26,-11,-10,-21,0,1,-14,-20,8,-14,-20,-36,50,49,0,31,-1,3,-22,20,6,-21,26,-24,18,-49,11,-13,-4,-53,-6,-5,13,-21,19,-7,-15,-2,-25,-21,-19,-17,-21,-26,62,26,-10,40,-32,-6,-49,23,-22,-34,16,-15,25,-35,21,-7,11,-24,-3,-10,-4,-26,61,-16,-8,-19,-18,13,13,-13,-24,-35,59,21,40,53,-25,-5,-54,0,-4,-7,-14,-31,39,-18,-3,-13,18,3,23,12,-16,-9,31,12,22,-25,6,2,4,10,-11,-32,50,53,54,42,-49,-7,-39,26,-12,-2,6,-8,49,-14,-6,-8,20,-1,28,31,-9,11,2,5,55,-4,20,11,1,-1,-50,-24,71,3,36,4,-55,-6,-9,-7,-24,11,23,0,25,24,-16,-67,2,-27,-2,3,-58,21,-33,6,28,-47,-26,-2,-13,-21,-20,-22,-8,3,-19,-20,31,-32,-13,16,4,-9,10,28,-43,19,21,-47,-33,-40,-14,12,-27,10,2,-8,-6,-35,54,8,-21,-8,5,28,-6,61,44,-16,-46,18,9,27,10,-3,11,-28,-6,-32,-9,-66,-13,-25,-21,2,-28,-10,14,4,18,-11,32,14,-35,5,23,2,-5,-12,-13,-21,-1,21,-38,-26,-2,-10,20,-24,8,-1,-10,-63,3,19,-10,-19,-13,-17,42,10,10,-25,7,-37,0,40,57,-16,-18,-24,-5,-28,40,9,-26,-8,-10,-19,27,-3,12,13,-38,-42,20,9,24,-30,-13,15,-24,6,36,-20,-5,-24,-5,-25,-7,1,-31,-2,17,-25,20,4,10,-22,-23,26,-15,-23,15,7,5,-12,28,-29,-13,-33,10,-13,-17,30,16,21,-83,-4,11,-1,-12,-6,10,6,-34,12,50,-17,0,12,-17,-10,-11,-35,58,7,22,42,-42,-43,-3,9,21,15,27,-42,-2,5,25,-1,2,-5,-1,24,32,70,60,10,-26,28,6,37,-6,-10,-13,-2,22,-8,5,26,-38,-34,-12,-15,-38,66,70,-32,-19,2,83,5,-26,-21,2,16,15,6,30,2,9,26,60,-9,2,-10,7,41,-20,-21,12,13,9,52,12,-9,-21,-24,-9,-3,-5,23,11,-22,3,1,92,1,-8,-25,28,-11,31,5,49,-16,-4,-22,-1,36,-17,0,-13,13,37,30,29,-11,7,-29,-20,11,1,8,-41,-11,-15,-14,-16,-17,-7,-11,-25,0,-25,4,4,12,-5,30,13,-20,-21,21,-23,-21,34,-15,20,-64,2,19,-12,20,17,13,-77,-17,-27,-13,-5,22,-20,-32,-42,11,-18,-17,-2,3,6,-13,-21,-7,48,-8,6,23,-44,16,-15,-19,-5,1,10,-22,-14,-15,-1,-1,18,-18,15,1,11,0,11,-21,15,18,2,25,24,-46,40,-2,33,54,-2,25,-71,22,-38,-34,15,-18,60,-16,-9,-30,58,-16,8,-14,53,8,-20,56,88,-30,-3,11,94,7,-6,-34,24,22,-21,15,-19,10,-18,4,-23,-4,-9,-38,31,-15,-16,-1,-2,-2,11,-9,27,22,-27,23,82,-40,18,-8,73,-22,-34,-16,-1,44,-20,-6,-24,-4,39,7,14,-17,-6,-9,-11,41,-13,12,-68,-26,-1,-1,0,-21,-41,14,-14,-11,-39,-8,-3,-6,-6,14,-24,-5,-17,-11,-24,9,22,-10,16,-1,8,30,-15,7,22,21,-55,-12,-34,-9,15,-2,-27,-49,-24,24,-9,-25,14,-7,24,-8,2,15,30,11,-11,21,-29,12,-21,21,-11,22,13,2,-6,-5,-23,-1,-19,-13,37,-33,-30,-27,-21,7,18,7,32,-10,-21,-24,4,10,4,20,19,-2,-53,49,-30,-10,-14,14,-12,-28,17,-10,13,-32,-44,-1,26,-6,35,22,0,-3,-1,10,28,23,-37,-31,43,-3,14,20,16,17,-18,16,-6,0,-22,-36,5,9,22,18,-6,6,-15,-1,-27,6,6,24,-4,-13,-27,-13,17,1,-28,-28,19,-16,-9,-22,-16,10,13,-2,-8,-15,-29,30,-27,21,-9,16,-46,5,-20,0,-18,-13,8,-3,6,-3,12,-3,-1,-33,12,2,-9,27,7,-16,-19,-27,10,-17,14,14,-10,-28,-63,20,-24,10,-13,-20,1,-10,32,21,-2,-43,-22,15,15,-18,6,4,35,-7,-27,30,-3,4,-30,11,-11,3,-13,59,-26,-24,-6,6,-22,18,-1,-5,-9,-32,35,30,18,-35,-18,21,-10,7,21,8,8,-8,16,19,-26,-43,-9,-8,-19,29,7,13,-34,-22,15,6,16,-30,20,16,-30,-36,-17,41,16,-20,-14,6,-17,6,27,21,-23,-10,34,15,26,5,18,9,-18,11,17,-9,-40,9,-17,-3,20,6,2,34,-13,4,4,-5,22,5,13,10,-35,0,-4,13,18,-21,31,-36,14,-5,-6,6,12,5,-4,-19,-25,34,-36,17,-19,29,-42,-14,-16,-2,-1,-6,9,4,-8,-2,-13,10,-16,25,-4,-10,10,2,10,21,-13,-5,-1,15,28,23,-21,-6,-36,-13,11,19,-20,10,-13,-36,-12,26,19,14,22,-11,60,-3,26,-7,7,17,32,-12,-30,-26,32,-11,39,-3,42,1,-18,22,1,-6,-28,-6,-3,2,-25,-2,1,5,5,1,12,-1,21,14,-30,1,-15,34,2,-7,-6,-46,-24,16,3,-3,4,16,-38,37,1,35,2,-35,26,-7,-24,-38,19,25,-8,-13,5,7,34,14,-17,4,-31,49,-27,16,-6,3,0,21,24,9,21,5,-16,-1,-13,2,11,9,-14,-3,6,-37,19,10,2,1,-11,10,25,-8,8,11,-29,35,-9,4,-3,12,10,15,35,1,2,3,-3,11,20,-18,-18,19,-48,4,21,-22,11,4,-4,3,1,18,-32,-13,-4,6,-21,1,7,-42,-9,-18,9,-32,-16,-42,-26,20,-28,-18,-31,-18,9,14,-16,25,-19,-16,-42,-3,-28,36,11,28,14,-17,-5,0,4,23,20,-12,-1,-19,-10,-32,12,-13,-22,34,40,22,-5,-16,-12,-12,-8,2,-22,0,15,-11,10,44,-12,22,-20,-1,12,-9,-14,3,1,0,39,-46,-19,-7,8,-22,-39,32,26,29,-43,11,1,-33,6,-18,-9,-22,27,33,-11,-21,-24,34,-17,-8,57,5,0,9,-7,24,-13,-14,-4,4,21,-53,-14,17,-29,8,-39,0,-3,10,-37,5,5,-9,11,-13,-3,2,-24,34,-22,-23,-11,-17,-5,42,1,16,19,21,8,6,21,-39,-12,-17,-30,13,38,18,-8,0,-24,11,-21,-34,24,-22,23,-13,-1,27,28,-12,12,38,-14,-9,9,-48,6,-4,14,-4,-26,-20,-4,-16,5,-60,-16,-17,39,-2,14,-6,29,-7,-21,-18,13,33,-10,7,-11,-7,6,0,7,-16,40,14,7,40,17,4,8,-8,-21,-42,26,5,-2,1,3,-9,-1,-53,50,-2,38,23,8,85,-15,1,-16,2,-5,12,-49,14,-8,11,35,18,-13,42,37,-5,-23,1,21,1,16,45,-39,-32,2,-1,39,-14,60,81,-47,-17,-39,15,39,-2,38,10,-16,31,-31,22,-1,33,-21,19,55,-10,-6,13,-2,3,-19,20,2,-3,-21,38,42,19,-15,7,31,-21,-20,-1,-21,-9,38,-13,-9,42,-7,-25,16,-9,21,1,9,-35,-17,-4,-7,13,18,1,18,-6,-14,45,-9,-6,-33,-2,26,-12,63,27,6,4,-41,12,6,-27,20,9,-32,-7,6,-35,-56,-10,50,1,24,-34,22,5,32,-18,-24,-10,43,-9,-6,4,-16,-2,-15,-12,-59,-5,18,-23,-15,-26,-12,43,23,50,-1,11,-52,-13,7,-65,-5,-22,-60,-7,6,-10,-55,-46,20,-11,-6,16,-12,18,-32,-39,-85,-19,-18,21,-27,-7,-14,-5,2,26,-38,49,7,7,-16,-17,-44,-48,3,90,-21,-17,-24,-45,35,-14,20,12,-45,-7,-65,-11,-33,-16,11,44,-17,14,-29,7,9,13,-16,12,30,-15,-11,17,9,-7,40,19,-11,-3,-16,-22,50,28,-31,-20,-8,-30,-11,-16,6,5,20,-8,-10,19,10,-11,23,-25,13,-20,-4,-40,-7,-2,8,14,23,-21,33,21,37,16,-17,-4,-38,-2,-3,-30,38,11,14,0,-25,-13,-7,-28,-4,19,-11,45,5,-47,-43,-14,12,6,0,-45,21,30,25,10,-6,18,-1,-5,46,4,-17,3,29,-30,-1,9,3,-12,-24,-24,-12,86,45,27,-36,-5,-34,-16,-22,-50,-44,-46,-17,15,-15,12,-37,-6,-1,7,14,26,-14,21,-11,-43,-75,-41,-32,16,-1,-17,27,55,10,22,-26,13,3,-14,-36,15,-50,-29,-3,20,-20,29,-52,-7,9,15,-10,-50,-43,60,-8,-22,2,-33,24,68,-14,44,-5,16,-17,17,20,-2,39,-2,8,65,-7,5,31,-3,-12,-8,-13,21,-2,30,-30,-6,-14,-25,-9,-11,38,12,37,-8,-26,45,-37,-24,-12,-29,18,-7,-18,-34,29,23,20,5,44,-5,20,13,52,47,-34,-18,-24,0,13,-34,36,17,37,28,0,-32,0,-16,2,-14,8,-7,-8,-13,4,19,28,-22,-2,-16,-20,-20,-31,5,-25,-11,-29,7,11,-17,23,-21,-16,6,4,-4,-21,12,6,-22,10,-39,8,-5,-13,-24,6,8,8,-1,-12,25,10,-33,6,25,-49,-20,-13,39,11,-10,20,18,-10,10,-18,-1,3,17,12,-26,1,-13,31,12,-33,-7,-27,35,-7,1,-24,-13,2,-21,9,17,-37,-20,18,6,-5,-34,-14,10,-31,3,26,11,11,46,-4,-4,16,-13,28,23,-18,-3,-14,42,3,28,0,-2,10,-44,-1,-19,-19,-22,18,-6,31,-18,-30,6,-6,0,30,3,-23,-3,19,-7,11,-3,3,-22,-17,27,-17,7,-3,12,-11,-14,-11,18,16,34,-23,-19,-22,-16,13,0,-42,-14,-17,17,-3,-9,-25,1,-29,-10,-7,-14,3,-37,-22,-4,-10,0,5,-30,11,-11,-41,-11,-35,-6,-13,-17,-26,-4,-38,-31,10,-44,-33,-13,-8,-7,-22,6,8,-6,-17,15,10,6,11,14,7,24,7,-24,0,11,-27,15,-7,23,-19,23,3,24,5,-30,13,-13,-31,-15,9,-4,11,23,4,-6,-20,-14,35,-23,-9,-14,-5,84,-5,5,-32,-11,-17,13,-17,-37,-27,-16,8,-17,55,-32,26,-57,-48,-18,3,-8,21,52,8,16,-31,-20,15,-26,-6,-18,19,77,18,41,-36,-18,22,4,-4,-5,12,-20,-17,-1,61,-24,-4,-30,-40,-11,0,-12,21,58,15,12,21,-7,12,-25,46,10,28,36,30,68,-17,-13,57,8,35,23,46,2,-54,-7,5,-27,-44,-9,-14,-8,32,-15,14,8,-16,-8,7,-8,12,-15,-30,4,-25,-16,-12,-8,9,-4,-4,-11,-8,-4,-17,-14,-25,-12,16,-1,-11,-26,21,-6,-6,-10,-13,-16,15,-2,1,31,11,3,-27,5,-5,4,3,-8,28,-10,-17,-13,-35,14,-26,-36,-27,-5,-26,-16,10,-8,-25,10,21,-7,15,-12,-18,-8,4,-12,19,-7,-40,-3,-22,32,6,-2,29,0,-10,22,-14,-38,-38,-49,-5,-43,-3,5,13,-24,-26,19,-2,-9,0,33,11,-16,38,-58,-1,-30,-23,-3,7,84,-2,4,-21,-3,12,17,18,-9,-2,-24,-30,9,41,-23,-35,-11,-17,11,-30,15,34,33,12,-14,12,-28,6,22,43,-26,24,45,26,24,-47,-5,33,30,24,-22,-1,-5,-22,6,21,-21,-5,-33,-1,-30,-9,5,33,22,9,19,-1,-9,6,17,16,-16,-24,-11,-31,-11,11,-13,-10,-5,-18,-6,-4,-10,-39,-1,12,17,5,18,12,-6,-8,-13,-10,6,13,10,-28,30,37,-14,17,-15,-11,12,-15,-9,3,-16,-9,-22,-17,9,5,-23,-37,0,-9,-9,-14,-28,-3,13,20,-11,-17,-8,5,-7,32,7,21,8,20,-11,-20,-10,-16,-7,28,26,2,-8,30,-9,13,-22,-25,-31,-21,4,-27,21,10,21,-15,1,-1,-19,13,-27,49,-21,-21,-11,-2,11,-1,33,2,-9,-18,18,-9,-6,19,-18,5,-11,-29,3,-21,17,-29,42,8,19,-13,30,-3,-19,20,-28,14,-31,-14,13,-12,-4,17,31,17,5,-31,26,39,12,-5,-37,-5,6,16,-5,-17,-8,-13,34,-4,-7,-30,35,4,-21,2,15,5,16,2,16,17,-2,-12,-9,-31,1,11,-10,4,2,3,-9,10,7,-30,-4,-6,14,-13,-12,-5,-2,1,1,-5,20,19,27,-4,12,5,-1,2,10,-12,23,-18,1,-8,17,19,-28,7,32,13,4,6,8,-33,-27,-14,9,6,6,5,-8,-16,28,8,16,-6,11,13,6,-8,-2,-11,1,-14,1,27,28,10,-18,12,28,6,-6,9,-20,-2,-4,1,10,-1,9,-4,-1,-6,-18,19,-10,16,31,-24,2,-20,10,-2,-18,-10,-9,16,6,12,6,2,-8,-2,-11,11,16,13,22,8,-8,-31,18,-6,23,-17,-21,20,-20,-11,16,-21,2,-34,-3,25,-2,0,-24,-33,-13,-13,0,-25,1,4,-8,13,-4,11,-2,0,-4,-21,-3,19,41,-16,-35,-1,-24,20,-5,-14,-13,-18,-10,-33,-19,-14,-21,-14,-14,-17,-22,-3,24,-4,-5,-24,-3,-23,2,-7,11,19,3,-6,19,-9,8,-2,-18,-12,0,-1,2,2,3,-20,-17,14,2,2,6,-9,-20,19,2,-16,14,-19,8,9,30,10,-17,12,13,13,8,-1,-11,6,-20,-1,22,-25,15,-10,-2,-6,-15,19,1,31,-1,-13,-7,12,-23,-18,-15,-6,14,16,3,30,-31,-6,1,16,-10,5,-9,11,-20,-11,12,7,-5,-18,-15,3,-8,11,-13,30,-5,4,-5,2,3,-19,15,-23,18,5,-6,18,-31,-26,-13,19,-10,12,-15,6,-31,-6,13,5,-29,10,-23,-20,8,6,-18,-6,7,28,-4,-3,-20,-21,-21,-14,15,48,-4,-8,-33,-16,6,10,-12,18,19,-7,0,25,-3,9,-6,-23,3,-21,5,-1,2,4,16,-20,-5,16,23,9,10,-10,-13,-48,7,12,-18,-3,14,-12,3,5,20,2,-11,-6,16,27,-12,8,-3,-20,-9,1,10,9,17,18,0,25,-4,6,13,-50,9,-11,17,16,-57,-7,14,23,10,16,-10,1,-9,-30,32,7,5,12,-9,-20,-22,3,-8,39,-3,12,19,27,-11,-14,10,-15,19,-20,-14,8,-39,-13,0,-7,3,32,4,-34,-21,-3,23,5,12,8,-22,1,-10,-2,-23,31,-13,-19,11,7,18,-45,3,-15,7,-31,-35,-17,-43,-51,-18,22,-4,21,22,-7,-32,-28,8,3,-15,2,-17,-9,-8,-16,-24,-3,23,11,-3,4,7,-38,-3,-30,22,19,-9,-24,37,-48,-5,-1,-11,-5,16,5,29,-8,1,40,14,-35,-9,-25,2,12,-18,1,-7,-3,-23,-2,9,3,2,-65,-5,-16,16,2,-47,1,3,19,-11,-19,23,-24,7,30,8,-5,-34,-15,-15,-30,-31,-5,-10,-1,-28,48,-17,11,-15,5,14,-61,-14,-23,4,-9,22,27,-7,19,0,12,-6,-30,-7,16,12,0,-24,-4,1,-22,-17,-30,-15,16,-45,63,-5,36,0,-23,11,-32,-13,32,-6,-2,8,62,-11,-8,1,9,0,-18,-7,-37,-1,26,-3,-27,4,-7,9,-34,-2,11,-36,20,8,24,-5,-54,-4,-22,0,-4,17,-10,-24,32,-21,-4,-5,22,13,0,-16,-2,33,28,-10,-8,12,8,7,-23,5,-2,-9,3,16,30,17,-25,-11,-28,25,16,-13,-19,22,-44,-28,3,-19,14,33,24,19,40,-6,3,14,-16,3,-43,32,14,10,-15,-12,18,-8,3,16,-9,12,-32,-4,6,5,38,29,19,-10,14,0,-30,19,-12,-6,68,36,-31,-11,2,-12,-25,-13,20,8,-24,-51,-18,-22,8,-22,-30,69,-25,-5,-44,-1,98,76,58,-26,8,0,4,-1,-10,-16,59,14,-9,-40,5,-10,-27,12,4,-15,2,-32,-2,11,30,18,-32,24,-47,-38,6,-11,38,1,32,-32,24,3,-5,13,-16,10,-8,-19,13,-26,-37,2,-36,5,-31,4,2,-28,14,38,32,7,-44,-13,-31,-15,30,8,-6,-56,-15,-32,14,6,-22,43,-23,9,-29,36,17,-9,-46,5,-10,13,-27,18,-37,-28,-12,23,25,9,-21,-28,-14,-3,52,7,-2,-36,-29,-30,26,1,7,27,7,13,38,16,-9,2,17,29,-34,18,-6,22,-23,9,14,28,-15,24,9,-5,-12,-26,-18,7,16,19,0,12,3,5,5,5,-16,-7,23,36,-35,18,27,15,-22,-10,-10,-14,-31,-9,-22,-6,-17,-25,-6,35,-6,-21,-40,15,45,3,-7,3,-28,17,11,-8,-7,-7,-25,20,15,-12,23,18,-31,-31,-7,-29,1,-7,2,-8,-15,21,7,10,-28,-31,-12,23,9,-44,-30,-8,-17,16,-27,30,1,13,-18,39,3,-14,12,5,-41,-11,-10,-5,1,3,4,36,2,20,3,12,-25,-6,46,-9,-25,7,-30,2,13,12,-22,24,-9,21,-27,62,-9,7,-16,-1,-7,26,6,9,-21,1,8,52,1,14,-16,21,-22,-12,61,50,-11,-30,-34,-5,34,16,-18,-3,3,12,-40,-22,-12,-48,17,-40,-19,-1,31,-4,-8,-7,-17,-2,-24,-5,-29,-9,-42,5,29,-25,-32,13,0,4,20,-8,-3,-32,12,18,-34,3,-12,-20,3,15,-1,27,-9,17,-1,-9,21,5,-27,-29,-6,-41,-50,-28,25,3,-23,-55,-4,1,53,-2,24,-21,-21,4,-81,4,-54,-16,10,38,16,11,-11,28,-32,-10,15,-5,-32,0,-3,-46,-29,-40,53,2,-41,-68,-44,-9,47,4,53,-37,-33,19,-51,10,-31,-24,0,36,53,22,-1,7,7,-14,39,-12,-21,5,-13,-38,-14,-23,15,29,-37,-43,-18,-14,48,2,43,-18,-13,4,-2,9,3,-9,25,34,63,20,-3,4,-1,-10,6,-9,-14,1,-24,-15,0,-7,58,30,3,-28,-16,-11,33,8,30,18,20,19,18,13,34,6,-12,-46,-4,22,22,21,5,55,23,-3,4,16,8,13,0,32,4,-37,0,34,-9,8,9,-11,-4,-7,20,17,2,-20,-6,-24,-16,-8,-38,19,2,14,6,6,7,34,-9,-27,1,-13,10,-11,24,-6,-29,-12,-13,10,-5,-12,34,-3,-22,24,-30,15,-26,12,9,65,-34,13,-13,16,0,-10,6,18,-7,-4,-18,1,-7,-25,90,16,-50,-67,-61,6,13,3,16,-13,-19,31,-49,16,-21,-7,-9,62,18,20,-11,29,-8,-9,21,-19,-13,16,-18,1,-38,-18,56,-7,-58,-22,-63,-10,8,-2,45,-31,-51,13,-29,19,-14,-23,-9,24,34,39,-15,9,19,-61,41,-15,-32,-15,6,26,-25,-41,5,-8,2,-45,-43,-6,38,5,47,-29,-28,2,41,5,31,-6,0,-27,14,-12,14,-5,29,34,1,-13,4,-5,-3,-8,0,20,42,-3,34,34,12,1,13,-10,-17,5,33,7,46,-30,-8,-20,2,-8,2,-26,8,5,-2,5,25,26,-9,-29,-5,-2,-1,9,5,-33,-3,4,-13,17,-1,-4,4,11,-2,-2,-6,8,-18,-12,10,23,-29,38,-23,-4,-13,9,6,7,-11,-8,-18,-14,0,-6,47,-14,-40,16,-40,7,-30,-3,20,12,8,5,-36,14,-31,-22,-26,20,-23,46,-19,-18,-14,-21,4,24,-8,17,-49,-19,-46,-24,75,-15,-58,-37,-43,-13,-10,-15,38,8,-21,12,-15,31,-36,-19,-21,26,-8,29,-3,13,22,0,72,-3,-14,-26,6,4,-17,-43,70,25,-37,-25,-17,-3,15,-6,39,-4,-28,-15,-5,-21,16,-13,-29,-23,22,17,2,21,2,2,-10,15,9,-21,21,-9,-22,17,19,21,11,-11,-7,6,5,9,-12,-15,10,0,9,-45,-12,-17,-20,-26,16,12,13,19,-1,13,13,17,-3,-40,5,2,10,9,-9,-15,-7,14,-17,17,-27,4,18,14,13,-26,-2,12,-18,7,-5,2,2,5,0,-8,-6,-28,-12,47,-5,-20,-15,-13,-3,-2,-9,-30,-37,4,-30,14,-6,-19,17,-7,51,-24,-22,-38,-18,-17,-38,-15,-24,15,-4,-12,-2,-3,-2,24,10,7,-36,-28,-29,-4,29,-6,-59,-26,-31,-1,-25,-11,12,1,20,-20,-16,22,1,-1,5,3,-50,31,12,3,8,0,-22,11,33,-17,-26,16,-22,-32,29,2,-31,-14,-29,14,-18,-5,27,-12,12,-2,-2,-24,-15,15,-39,-28,46,12,10,-18,1,58,-30,21,16,-12,13,-19,-28,6,26,-5,-3,25,10,19,-9,4,-12,-13,9,-3,11,-19,-3,6,-42,-20,17,16,-10,-7,-13,19,-15,3,1,-20,-5,-25,27,29,-15,-17,4,-10,3,22,0,2,-3,24,-4,-21,-6,-16,0,22,-6,9,16,16,5,-31,-3,-12,2,3,-2,22,-13,-31,34,9,2,-13,7,33,10,10,-13,-13,-5,12,53,-36,-3,-20,17,-16,-40,-36,0,0,-8,-9,-4,15,-2,-14,40,33,-13,-27,33,17,36,-25,-4,52,-7,-8,9,-9,4,27,10,-32,8,11,-3,-4,-6,-14,-39,4,3,12,40,19,-22,-26,36,6,-25,0,17,13,50,-9,5,41,-8,1,-5,9,3,14,33,5,-9,-10,4,-15,47,-49,-21,-15,-26,-15,33,-7,-10,-6,-32,13,-11,5,-1,-2,-62,22,-20,-31,-13,7,-14,-5,-24,5,37,23,-12,-27,22,10,34,-60,-12,7,-27,-14,16,18,-25,16,-19,-5,1,-3,-10,-5,-15,-23,-16,-27,-31,0,-9,-10,-4,-10,16,21,-3,0,11,15,-1,13,-25,-15,-14,12,-20,13,-80,13,1,20,-2,-16,6,1,-8,-24,-25,-5,-16,4,23,-8,9,31,21,-10,27,25,0,37,9,23,-32,31,19,13,-19,-30,-50,-6,41,39,-33,-16,37,-10,3,-16,3,1,-55,-26,-9,-4,16,46,-4,-36,9,33,45,8,62,2,40,-3,41,21,6,-25,49,8,38,-47,24,13,26,19,27,3,-19,20,-26,19,-22,11,4,-5,-1,13,-42,-11,17,9,-11,-25,-25,0,-10,-10,28,-24,41,-14,-35,9,-10,26,-16,-11,-21,25,15,8,23,6,16,-7,-38,4,14,23,-32,-14,-8,-10,-13,-40,-17,4,-5,-39,20,-2,-5,17,-30,-28,2,1,-12,-14,-13,7,-11,-14,4,7,-2,-17,5,-23,8,15,-50,-9,10,10,-44,11,-36,0,-23,-7,-5,-28,-57,-1,-10,7,-10,-36,-3,-37,-54,9,-54,-23,-33,10,2,-20,5,14,-1,-22,-26,21,6,4,-34,21,-28,-17,6,-19,-24,-47,-81,-28,-6,37,-35,-46,47,-13,-61,-35,-16,-26,-68,-27,-27,7,24,37,-32,-20,44,24,43,26,7,-2,30,5,8,16,-9,-15,21,-33,5,-14,-16,31,31,6,-11,-7,-16,-5,-56,12,30,36,-20,-3,-4,29,-6,-19,24,1,3,-4,13,34,7,19,-12,-14,56,-17,0,31,37,37,-10,24,3,7,12,20,54,-14,16,-4,1,-9,-5,26,3,30,-5,-19,15,22,22,-10,7,-14,-7,3,-7,30,-6,10,43,36,-29,12,-6,-5,-10,27,35,13,-11,-4,21,-15,-2,9,-43,10,-12,18,-4,26,1,3,-27,16,-29,-13,-39,19,16,19,-9,-16,10,0,4,36,-79,1,13,12,-12,-7,28,30,11,-39,-35,33,16,35,-9,36,-15,1,4,-6,-41,-22,-55,-34,14,29,-50,-58,50,26,-23,-13,-28,-32,-31,-34,-50,5,18,26,7,-28,-10,60,43,55,-8,9,25,8,-29,9,-25,-12,-9,-7,-6,9,-44,31,17,40,-13,-24,-35,-5,-21,-14,5,6,-8,5,-15,9,3,-29,-12,0,-5,-3,14,-15,-5,5,-25,2,4,-11,-19,16,22,-1,3,16,-10,-13,17,-13,27,-8,20,17,-21,-18,-25,10,-4,26,-1,-7,-4,17,16,-16,-2,-20,-21,-2,-17,11,-5,26,-2,-25,-39,-11,-19,-2,-11,0,0,6,-16,23,22,-10,12,18,-31,6,7,17,-15,2,-3,7,9,10,-45,22,-33,11,1,12,-48,-51,-1,2,-9,6,-41,-30,-24,5,-30,13,17,3,25,-22,-45,46,27,-9,-40,19,-24,4,13,6,-14,-6,-47,-9,15,-5,-43,-63,34,16,-14,-15,-12,-39,-34,-39,-49,12,12,23,-12,-1,-18,25,39,18,-24,30,-3,41,-1,5,-3,-24,-7,5,3,2,-49,13,-19,31,-15,-1,-26,-21,-19,-16,-36,-4,42,15,-21,-9,-2,-11,3,-15,2,31,11,-11,-15,5,-2,-22,45,18,-28,6,7,1,22,15,-23,-27,36,-6,15,4,-19,14,15,5,-14,4,-4,6,1,-23,5,11,2,-25,-13,-8,25,0,21,7,-10,26,-28,1,-1,-11,-30,20,17,-4,31,17,-19,0,55,-11,22,21,-1,-19,12,21,-10,27,-1,-1,8,4,4,12,-11,-21,-7,16,-52,-14,-4,-2,14,-1,-13,-14,15,12,-35,-12,16,-16,28,-1,-6,27,3,2,-9,-4,20,-16,12,14,-1,25,-6,-23,9,-23,-46,-42,29,9,-7,15,2,-20,-17,-13,-27,-11,0,20,9,8,38,5,11,-12,-5,16,18,0,33,-3,-4,12,46,2,25,-3,-29,18,-31,-9,36,0,-16,-3,-17,-3,4,-3,20,18,-15,-6,21,14,26,14,-20,-18,13,-35,7,-14,-4,46,-61,7,-16,-3,-26,-28,-10,-6,-26,26,29,24,8,-10,-35,-20,9,30,7,-7,10,-19,35,7,-22,-20,-20,-53,25,-6,1,20,-61,-32,-3,-12,6,-23,-45,-9,-66,26,55,44,12,-13,-1,-16,-13,-20,48,-25,33,26,21,9,-29,-18,-16,-28,12,-7,-1,-2,-49,3,8,1,20,-4,-37,12,-9,41,64,2,-17,5,12,-7,-24,26,57,-29,1,47,2,22,-28,-20,4,-7,9,16,-7,18,-19,11,-9,23,-1,-19,-40,25,8,6,17,-15,-48,16,12,-1,-32,1,18,-8,-25,1,-19,-29,-58,6,11,16,4,24,1,20,-22,49,-8,2,-22,-16,-6,18,-18,17,-9,-30,-49,5,10,14,-39,-16,-13,-12,15,22,40,15,-10,10,19,-8,5,-10,-29,20,-63,23,-1,-27,-10,-11,6,-15,22,-8,-1,3,30,6,-10,-14,2,31,-1,-1,10,-50,23,-31,-5,-23,-4,-46,3,-3,-18,-13,-57,-5,-12,6,9,-10,-32,13,-43,15,17,-15,-20,-11,-41,-11,-34,-15,13,-13,-33,-16,17,-23,-22,-21,-16,-55,-10,-1,-26,4,-40,-9,4,9,16,-32,-35,-3,-31,18,-5,-1,-48,15,-15,-9,-22,-4,-5,-13,-9,27,-9,-20,-27,-35,-7,-37,-4,4,-32,1,-29,7,-5,13,19,-22,-29,17,19,-16,-33,-23,-47,16,7,-1,-18,-17,0,-3,1,20,-18,-20,-24,-6,4,13,12,13,-12,26,-42,26,-9,-7,-11,-2,-2,31,18,8,-29,-23,-28,15,25,2,-14,-19,-5,10,-62,88,23,23,-16,67,4,26,26,-13,-4,21,0,8,-7,-34,-15,14,39,-28,88,-9,38,3,-4,-1,42,-17,36,17,-22,11,-46,3,3,-4,-17,30,-5,17,-8,15,5,17,-10,-5,-13,6,16,19,-4,-1,22,-3,4,-23,-49,-4,23,3,17,-13,-15,-7,-13,-23,3,-40,-33,4,-24,-30,5,15,18,-12,-21,-2,-5,-2,-17,9,-36,-5,-61,11,10,-68,-30,20,20,9,20,-12,-16,-5,-1,0,5,-28,-29,-41,-28,-28,20,-11,20,4,-30,-2,-17,-8,-9,26,-15,10,-14,-27,36,6,-19,7,-13,12,-2,-28,-2,0,3,9,18,-4,-11,-14,-27,-3,20,-4,27,55,-52,33,-15,30,-30,37,-15,29,10,-1,41,40,14,-9,-18,4,1,-19,31,27,-3,42,-9,17,-29,70,-8,35,-25,4,-14,6,7,26,-19,-29,-15,-26,6,1,38,1,-21,1,8,18,14,2,35,7,-2,31,-39,11,-9,15,-12,55,-6,53,-2,4,-28,-14,6,22,-22,2,-3,-1,-20,4,47,23,-64,-34,4,13,44,10,31,-6,5,11,-6,-18,-30,-23,-5,20,-12,12,4,22,3,9,10,27,-8,-21,-26,22,13,-13,12,11,-19,-28,7,25,7,18,14,-13,-25,-9,19,-10,12,-27,-12,-32,-16,-23,16,-7,27,11,-7,-16,1,-16,-22,20,-6,5,-61,10,32,6,16,13,-24,6,-3,-18,10,-10,2,-12,26,11,-17,-25,-29,-26,3,-6,20,21,-3,10,25,32,-23,-2,-13,26,14,22,3,24,7,-12,-29,-3,-10,19,31,33,-13,-21,-20,-24,-33,20,-3,21,-4,-5,29,35,25,3,-3,-23,19,-16,-5,1,19,5,-4,31,31,29,14,23,3,-12,-15,14,5,32,-21,16,-5,50,10,30,-3,-33,-17,-11,10,7,-3,-18,1,4,10,-6,29,29,-4,5,16,11,35,17,20,-9,15,2,0,5,-27,2,-1,40,4,29,14,-6,-21,-7,12,15,3,-12,-8,6,17,-19,1,-3,-15,20,11,3,28,26,6,16,-34,1,1,-5,8,3,-14,-35,5,0,29,0,0,-7,-16,13,-2,-14,-14,9,16,-9,-25,-18,11,8,-14,-25,-5,6,22,-13,-14,-7,-25,-21,43,-5,-38,-20,-13,-4,13,10,37,6,11,-10,8,7,-9,-11,3,-2,-10,17,2,1,-14,-26,42,-11,-6,9,11} + +#define CONV2_BIAS {55,50,34,43,-37,35,-21,10,35,-53,-76,7,14,-1,92,20} + +#define CONV3_WT {15,10,3,1,-20,-11,5,-18,-9,-1,-4,-11,-5,-19,-26,-15,13,5,1,7,6,16,1,-20,3,35,0,-2,8,12,-41,-5,-20,4,6,3,-3,0,-28,-13,6,16,-4,-4,1,8,17,2,-4,-10,-9,-11,3,-2,-4,-9,-21,-10,-18,2,-6,-18,27,5,2,5,-5,-3,-4,-2,-16,17,1,-17,-13,-12,-1,-18,10,6,7,-4,-1,7,1,-4,7,-8,0,4,12,-4,-5,-13,8,-17,0,-22,-2,5,12,20,3,-6,4,10,16,4,-3,-7,0,-15,-17,-1,14,25,2,3,-15,-11,1,-4,-2,-14,-2,5,12,-2,5,-13,8,-1,-4,0,-6,12,-3,-22,-20,7,3,11,8,6,6,2,10,7,-5,-6,-6,18,-2,-23,2,1,-12,-9,-3,-2,0,-3,-9,4,-16,-3,-7,-23,-10,-8,-1,-26,-3,9,30,-16,-11,-13,-9,-11,-14,5,5,-9,-16,1,10,-5,-18,-14,31,-6,-1,1,5,-7,1,2,-17,3,8,1,2,-3,-4,3,-6,7,23,-10,-6,-3,-9,-9,-38,14,-3,9,-10,-3,17,13,-6,12,22,8,8,-6,9,9,-6,13,-1,-11,12,-2,-4,-3,-2,17,2,-8,-15,-2,-9,-10,-9,-19,2,-11,6,-5,-5,8,28,2,-23,12,-19,-12,-33,2,-8,-17,-3,-15,-1,23,-18,9,23,2,-9,18,-17,-29,17,9,21,6,13,3,13,32,-4,0,-7,10,-2,-2,-10,-5,-4,-5,8,-1,-1,-9,-20,11,1,4,-10,1,-1,-6,-24,-1,-6,-2,11,6,7,-9,2,8,-6,-8,-19,11,6,-10,5,-5,0,-14,18,-11,13,5,3,-7,0,6,-21,4,2,12,-14,3,-14,0,-10,-6,10,0,-21,17,3,19,-19,-2,13,21,-10,-11,-5,-18,-10,6,25,1,-19,0,2,-11,-36,-13,11,-24,4,-16,-3,-28,0,1,-9,-6,-3,-1,6,-11,-19,3,5,-6,-7,16,-22,-19,-11,-20,6,-2,-1,-12,24,3,-27,-2,-15,-18,-2,-3,5,-12,-8,-4,-23,1,5,19,-30,12,-5,-4,-1,10,-1,13,2,-4,-12,6,-3,2,13,5,-18,-3,2,1,4,20,13,8,22,-6,-3,8,-12,-10,-28,12,-12,-5,5,-12,-6,13,1,-17,-32,-11,20,-14,-9,-6,-11,-1,-8,-2,-13,-10,-1,31,-12,21,-32,-2,-14,-1,0,11,-1,-1,-13,16,-10,-8,-10,20,-2,1,3,-7,-17,-1,-12,-4,-14,-16,-20,-1,-2,-4,-3,11,16,6,-12,-11,3,0,2,-1,-2,-18,-21,-4,5,-9,12,16,7,21,9,13,-4,2,4,0,-21,-17,-3,2,-10,-24,-10,7,3,-15,3,-11,1,1,5,-8,0,-7,3,0,-3,2,0,31,-5,7,0,6,-13,-7,11,-15,-1,-13,2,13,-2,8,25,-6,-1,-16,-3,7,3,-21,10,0,-14,13,17,7,0,-7,14,10,-1,-6,-8,-14,-6,-16,4,-26,-11,-5,-1,-14,15,10,26,-1,-27,-22,6,23,-16,-14,-1,-12,-26,-21,-3,-5,1,-9,-13,-9,-9,-12,0,-6,-3,-6,-9,-2,-10,-3,-13,5,-4,4,-2,1,-3,1,-3,-13,6,-5,3,-18,-11,-6,-19,-2,-13,12,4,-10,23,-8,-23,15,10,-3,18,4,-5,2,5,10,1,-16,15,-14,2,33,-5,-4,5,-11,-19,-4,6,5,16,-14,20,12,6,-14,-24,-29,-11,1,16,-6,11,-8,-25,7,-9,-6,7,20,-19,-3,-7,-19,2,-8,15,-7,-5,2,-11,-11,-6,-4,4,-7,-1,-4,15,-2,-3,-2,7,-9,-16,-6,-4,-19,5,-6,6,12,14,-2,-3,-1,17,3,-11,-5,25,4,15,-7,8,7,1,-19,9,-32,19,17,6,4,8,2,-5,29,28,-9,14,14,-13,-3,5,-9,-20,-17,4,-12,0,-4,-2,14,9,5,9,-28,-15,8,-8,11,-16,-34,8,-3,-2,4,8,-20,-1,-11,-19,-14,-1,-14,-5,-3,25,-16,12,13,14,22,6,-4,1,-12,3,-15,3,-14,-12,-5,23,4,-13,3,-22,19,8,-3,-29,9,-12,-21,-12,-18,-15,-9,8,-6,1,-5,-21,7,-2,1,3,-9,-16,27,-11,-19,8,0,0,-1,-2,-9,-28,-25,-24,2,-7,-5,-20,1,-27,-15,2,8,-13,-1,-1,3,-21,-6,-10,9,4,15,-15,12,-12,-10,-6,-15,2,0,5,0,-2,-18,4,-8,-3,4,1,-9,-1,16,-8,20,11,7,12,-4,-34,11,-21,-6,-9,-12,-18,-39,7,14,-14,-1,-11,4,4,-5,-21,2,-7,9,-5,-9,20,31,17,-18,-14,-1,-6,1,-6,-14,-21,-11,-6,3,8,-4,5,26,2,-18,0,19,0,4,3,-8,2,-10,-6,13,7,-3,3,16,-7,-11,9,-11,19,-9,-6,-5,2,-1,-1,-8,-10,13,7,-9,-12,-2,0,24,10,-7,13,13,14,19,-6,0,-19,-14,10,-21,15,-1,-11,-3,21,0,1,23,-37,1,3,-9,0,13,10,13,31,-29,-3,-1,9,-2,-8,-11,-11,-6,-5,-17,15,-20,0,11,7,12,6,13,0,-12,-8,-13,-2,-3,-5,-1,-10,-6,4,6,0,8,-8,-7,10,-5,-6,-2,-23,-4,-4,-13,3,16,-1,16,5,-3,-12,9,-5,-2,11,-16,13,15,7,-12,0,-4,-18,-9,-7,4,-25,-6,-6,6,-19,-5,13,9,-1,-5,3,4,-7,16,5,-8,-6,3,5,1,-6,4,14,-4,14,2,2,-10,13,23,7,3,5,11,3,-13,-4,9,12,-6,-7,-2,-11,-3,0,-6,2,-2,23,8,-4,-13,-1,-7,4,-9,4,9,-8,-3,-8,5,-12,-14,-15,-13,-1,3,14,1,-9,4,-2,-8,-2,18,-5,-5,10,-4,-2,-8,12,30,-10,17,1,-10,-1,-15,-17,17,6,-3,-4,0,1,-13,0,2,-14,3,-4,-18,6,-12,9,12,-12,3,13,5,-6,-4,-7,2,-17,11,-7,3,-7,-2,12,0,-9,21,1,9,24,13,11,-2,-18,2,-3,-1,-14,-13,-14,2,-1,0,-2,19,-8,-3,-9,6,-20,-9,-5,-5,-4,-9,-17,-4,-4,3,-3,14,11,3,1,6,-20,12,-9,-16,-12,1,4,-6,-7,6,3,-5,0,-14,-2,20,-12,-2,-29,-15,-10,6,14,-17,1,-23,4,-2,-5,0,3,5,4,12,-20,1,6,-2,-1,1,-7,2,-2,-23,0,0,3,8,0,1,-20,17,-16,-7,-12,-2,5,1,-6,-15,6,-8,3,5,-14,-11,-2,3,-1,7,-2,13,-13,4,6,21,-18,-1,9,-7,-12,2,-12,-9,-6,1,10,5,-12,-5,5,-1,-18,-15,-13,19,1,10,-21,1,-8,8,-2,-5,-13,-8,9,0,-17,-11,-9,0,6,13,-4,10,0,-19,0,15,-15,-3,15,-7,-9,-8,-3,-5,2,5,-8,17,-5,1,-11,3,-10,10,8,4,11,-1,4,-12,-10,-11,9,-1,2,-6,-3,16,2,14,-15,2,0,0,8,-3,-20,-16,13,-1,-14,2,8,4,13,5,2,14,7,-26,11,2,-1,-13,-5,2,-9,1,-9,-3,-6,-2,19,-2,-26,0,8,-19,14,2,-8,2,-13,-16,-1,2,-12,-8,32,9,-23,-3,15,19,-22,2,25,-4,-1,-16,10,8,-18,4,23,8,4,8,-9,-12,-7,2,21,-4,3,-13,-13,-10,-12,-2,-13,-20,11,5,-8,8,-2,14,13,-5,8,-2,-10,-16,-4,-2,7,-7,12,-13,-5,10,11,18,10,6,12,-9,-12,17,15,3,13,7,-26,-13,16,-8,18,-9,1,8,-7,-3,4,6,11,-19,10,6,-4,-10,13,5,-16,-2,32,-2,-11,-2,-4,15,-30,-5,13,17,-14,9,-4,10,-30,-14,16,-17,0,-11,-8,-37,-5,9,-36,-6,-8,11,3,18,-11,-6,-1,-8,5,-10,0,-9,-7,4,-20,-7,-1,16,-5,-8,-3,-10,-7,-5,9,-2,-15,-11,2,8,-9,-18,16,7,-13,-1,0,10,-12,-12,13,21,-20,7,8,-17,-6,-9,15,9,11,-7,-17,-4,-11,-34,-5,0,-19,9,-15,-28,-10,0,-13,13,19,-7,-10,-10,-4,-8,4,-7,-15,18,18,10,-27,-9,-14,3,7,20,-5,1,-10,10,-3,-16,-1,2,14,-18,-2,-3,-2,5,8,12,-7,7,-9,14,1,-12,2,7,-12,4,-6,-7,-21,-3,15,0,-14,-9,-11,-11,3,-7,0,-4,-22,-15,2,-8,-25,11,15,6,8,2,4,-7,5,-2,-4,-13,-13,-17,-3,9,-9,-5,3,-5,-4,-1,-9,-7,3,-29,-1,0,-9,6,9,6,-13,-2,-5,10,0,4,-9,-3,12,-17,-3,-5,2,-3,13,2,-5,-6,-2,7,-8,9,5,5,-2,-15,-6,0,-9,-21,9,13,-13,-19,2,4,-2,-9,2,-12,4,-21,15,2,-12,0,-2,-17,-1,11,-7,2,27,-16,16,0,22,-18,-2,-8,-19,-16,-6,23,-12,-20,5,-24,-15,-3,-8,7,-1,-6,-1,-28,-6,0,11,-20,-1,-14,8,-8,-3,11,-4,-8,2,-15,-8,7,3,8,18,-20,-6,-17,3,-25,-6,-11,-15,-7,-12,20,3,0,-9,-31,20,-11,-16,-14,5,-5,-19,-10,-20,-11,-10,17,4,-18,-4,-5,-12,-6,-13,-11,-4,-8,1,-28,7,7,-7,16,1,-7,2,3,1,19,25,-10,12,-13,16,2,11,7,1,-2,5,8,-9,-7,0,3,27,-2,-11,-3,2,8,23,4,-7,-7,-3,-5,6,1,3,-1,12,8,3,-15,-2,0,-7,1,8,9,18,26,10,13,1,-7,17,2,-13,-2,17,-19,-7,-7,0,-4,6,-3,-5,-9,-12,-13,7,-11,-2,-11,5,-1,15,-12,-24,7,-13,0,-1,24,4,-21,-4,27,16,-9,-2,5,-7,-11,-19,-6,-7,33,2,6,9,-15,15,11,-16,-3,-26,13,-7,5,-15,-12,13,-9,-7,-1,3,-10,8,18,-2,-14,0,0,-5,-2,15,6,-4,15,-18,23,-2,-9,20,8,-21,-16,0,-8,11,-28,11,-8,2,-2,-11,6,-18,-11,-1,4,-16,-7,2,11,-15,-26,11,3,-20,-1,-14,14,-6,-8,-4,-16,3,6,13,-4,9,9,3,-14,-13,-11,13,5,0,-4,9,4,-13,10,-1,-19,-1,-5,-6,-12,-14,-23,-1,-19,-2,2,19,38,-8,-18,11,-2,-7,-12,14,-7,-18,-1,6,3,4,-12,-5,-20,3,8,4,4,-22,-5,-20,-2,10,-1,-3,-7,3,-2,9,-23,3,13,20,-3,19,-18,-29,-12,-4,-6,7,-2,-18,-8,2,-13,4,3,10,0,-1,15,5,-8,-5,2,14,18,4,-1,5,4,13,2,-1,-11,-2,20,16,12,3,-5,-16,1,10,3,9,13,3,-14,18,8,7,-1,8,-3,-22,7,-28,-7,8,19,-19,-12,2,3,-9,-1,13,2,9,-9,-4,-18,-19,0,-6,-1,0,-14,5,16,-14,-23,-14,-29,-12,-2,17,-11,-1,28,21,6,1,-2,5,1,-10,6,17,8,-2,-16,-11,0,-6,-1,-2,-18,6,1,0,-5,-3,5,-3,1,9,-16,-12,-13,-13,-7,-11,-11,4,26,5,-5,-4,1,-6,2,13,2,-21,-9,-12,-7,-24,-26,5,28,-8,-15,10,-23,-7,8,20,35,-4,-12,-19,-16,-21,-16,-4,-7,-16,10,9,9,-24,0,-4,8,-1,-5,1,15,8,-26,-23,0,2,1,-17,3,7,16,-14,1,-9,-7,-10,-22,8,-4,-6,-18,-14,-7,-19,3,-10,4,13,-4,-2,-2,-10,-24,-1,-18,3,-16,-7,2,-2,7,-12,1,-3,-32,-6,2,1,-31,-6,-24,-2,15,-13,-6,11,-6,9,2,26,14,1,9,-17,-22,-11,-16,5,-6,4,3,15,32,0,17,2,0,3,32,5,-8,-16,13,-1,-13,7,0,-8,-12,-18,-2,-22,-11,8,-11,-5,-17,-2,7,-9,-22,-4,-10,-6,-8,-4,1,8,4,25,-6,13,-3,-8,1,-10,-25,-5,-5,-10,-13,-2,19,-11,-7,10,9,-13,-19,-4,4,1,-6,5,1,-8,-7,8,4,-11,2,3,14,-3,-15,-18,14,-6,-4,24,-11,-4,1,-13,-8,-7,13,2,2,30,1,-18,32,-18,-15,24,6,5,-2,-24,2,-21,-1,8,-23,-3,21,-5,-5,-8,-9,7,-9,-13,-12,-17,-13,-2,5,21,6,5,10,-12,-16,-1,29,21,3,-7,-31,4,-25,-6,18,-8,10,-7,-2,-14,-19,3,26,33,10,0,-10,5,-11,-20,-4,-9,-14,10,-16,-12,6,21,3,10,-14,-20,4,-29,12,-8,9,1,29,-13,-4,9,-12,-20,-10,-1,-6,18,7,-16,-1,-25,14,-10,1,-22,6,8,-10,-27,-13,-8,-11,2,-1,1,13,-15,-1,15,-5,8,3,-8,3,-3,7,6,2,-3,-18,17,-15,-9,-21,0,0,18,-16,-22,-9,-9,-9,9,-16,-12,-17,25,-11,-15,-9,11,-21,21,-14,-9,7,-12,-24,-7,-5,-2,0,11,27,-12,0,25,17,2,8,23,-6,13,0,-10,8,-12,3,-25,10,12,2,-29,5,-6,-18,16,6,-9,2,-1,17,-9,-1,0,14,-2,-1,-2,-10,0,-16,-19,-15,6,18,-12,19,5,-10,43,-1,4,6,-8,-6,18,-11,6,-12,6,5,17,-34,-17,-3,-6,-17,-4,4,-1,3,12,5,41,10,-16,-16,-15,8,-6,-8,-27,6,-14,-14,-11,-13,-10,22,11,2,4,-5,-7,-2,-11,-10,-19,0,14,-8,-10,-1,-1,-7,10,6,-20,-11,-8,13,-2,-17,2,-11,-8,4,1,5,-10,-18,3,-9,-1,-10,-13,-4,15,2,11,8,-11,4,0,-17,19,0,3,-18,16,-10,1,-14,-5,-3,-10,7,-11,0,-9,5,-4,-1,16,4,-2,-24,6,9,-18,-22,-5,-9,1,-9,-3,-14,-7,-3,-16,18,37,-7,1,0,-3,-4,-1,2,12,-7,-3,-11,4,1,11,-9,-1,16,5,24,10,6,-5,1,-1,6,-10,-11,-7,-1,6,3,12,-1,2,5,-17,-1,6,13,8,-4,-11,-24,0,-2,0,1,16,10,17,6,-6,-4,8,-1,16,-8,-10,-6,-5,-9,14,1,-22,-13,6,1,-11,-18,1,4,10,-1,0,-1,-25,-4,-6,-8,-2,5,-2,20,9,1,-18,22,-9,-8,11,-25,1,5,5,-12,7,5,-15,15,-4,15,1,3,0,-17,1,-21,-11,-4,4,6,-4,4,-2,-12,-18,-3,-9,3,-10,-23,-8,-14,-1,-14,14,-7,4,-7,-4,4,-19,-14,-13,-9,-2,0,1,-2,-11,-5,8,1,15,-6,-2,-1,-13,-12,-9,18,-2,-8,-1,0,8,12,-4,-8,-23,-8,0,6,-4,-8,-4,32,-28,-3,1,-9,6,-24,-8,-11,12,22,7,1,6,-4,1,11,3,-6,-6,-22,14,1,14,-3,1,6,-11,-1,-8,-9,-1,0,-2,-14,-13,-7,9,-4,9,-15,12,13,-22,6,-1,-21,-2,-25,9,-7,-13,-11,16,9,4,20,12,-8,-25,12,0,-6,-12,14,6,1,9,-4,1,4,-3,-2,-21,-7,13,-1,-13,3,5,-1,-11,2,-16,-15,-6,-35,3,-11,0,11,47,-1,-13,3,7,-15,-2,-1,-9,-25,6,-12,-10,-15,-6,6,19,-1,-4,-15,7,-13,0,-4,2,1,4,15,-24,-23,18,22,-3,0,8,-1,5,-19,22,1,15,8,12,10,-1,-5,-5,14,-31,18,-8,10,-19,-17,1,2,-3,23,-6,-8,7,-3,-3,-2,1,-14,-16,12,-3,-14,0,0,-7,27,-6,-15,-8,13,-1,-23,47,-19,-15,13,3,-5,4,-4,-2,3,9,-34,-2,1,7,-22,20,-14,0,-2,26,-5,-17,-4,-5,-5,-7,10,-16,-28,13,-7,8,-13,-12,11,0,1,-14,-13,4,20,-9,2,3,-14,-5,-4,-10,1,-5,32,-26,12,-13,-9,-23,6,-1,-10,5,-2,-4,3,-25,-5,-2,-6,-5,17,23,0,-6,22,-9,29,-8,7,-14,-5,-9,1,-8,-13,28,1,6,-5,6,-1,-6,-20,15,-4,-2,-5,-25,-6,-19,-14,31,-10,-17,4,-6,-7,12,-2,-8,-7,-5,-7,-12,-13,-9,5,1,4,-4,-13,17,6,2,-1,3,3,-23,12,-8,19,-5,-7,-9,17,-8,-4,-2,3,-1,-13,-30,25,-17,-25,9,1,-1,2,-31,6,-5,-21,-15,2,1,-11,4,20,-10,-17,5,-3,-2,6,3,12,0,-11,13,12,0,-9,-1,-13,11,0,-2,-17,5,0,-15,8,5,-6,-5,-3,4,7,13,15,5,-10,0,-14,-10,-7,-9,-9,7,-4,-15,-11,12,-7,-2,13,-28,-7,-14,-2,-8,16,-9,-3,-8,16,-4,14,1,-12,1,-10,1,-7,-16,-7,0,7,-25,13,5,-17,-10,-2,-11,27,3,11,-2,-2,2,10,4,-11,-9,-6,3,-18,22,15,-4,-2,-9,-7,-2,1,-5,-15,-3,11,-20,2,6,-2,4,-6,4,1,-2,13,-9,2,-5,-13,6,1,0,-3,16,12,-13,0,10,-18,6,-12,-14,0,6,18,30,-3,-19,-16,0,21,-15,-1,-4,-4,8,-10,18,5,-2,-20,-6,-8,8,-8,21,0,-16,-19,6,17,-4,-22,24,-13,4,-8,4,-27,14,8,5,-11,0,-10,4,1,21,16,1,0,6,-23,-5,-10,-25,-17,16,-12,15,-11,9,-2,29,13,3,21,2,-34,-1,-11,1,-14,13,-1,-19,-7,-3,-9,-14,-14,-5,17,22,-24,17,12,-12,-23,0,-3,-8,-3,-3,5,-9,-24,-16,7,-19,5,-7,5,-2,-11,-8,1,-10,17,18,4,6,-6,7,9,-12,20,-10,-18,6,-2,4,0,-15,-2,0,15,6,-8,-20,6,-4,-3,-7,-5,-10,0,-4,-19,-10,-22,4,-2,20,7,-4,-15,-2,-7,-1,6,8,1,-15,-8,-17,-9,-9,-1,4,-3,7,-9,8,-7,-11,2,-9,-4,-5,-17,4,15,-2,24,21,10,-1,-2,-13,9,7,-4,-24,-25,-17,6,12,21,6,13,-18,8,1,-6,-9,8,-26,-14,-9,-28,6,22,19,4,-6,13,-17,5,-11,12,-7,-21,-2,-21,-5,-7,21,-3,-17,-11,-13,1,-15,2,-6,-22,-1,-8,-7,-1,8,-6,14,-3,-17,-2,-10,18,9,-6,-15,-15,3,-5,-17,1,3,-10,10,-7,-4,27,-1,-1,22,16,4,4,9,-13,-3,3,7,-6,-13,-43,0,3,21,-10,-3,-2,13,2,-11,-12,2,-11,-19,-12,-5,-10,-18,15,11,-6,-10,-7,-4,-17,8,14,-4,-4,-16,-10,-26,-19,-11,-9,-8,15,11,-11,-5,-19,-4,9,4,8,10,8,14,-10,4,16,2,17,13,-13,-2,2,18,12,1,6,3,10,18,4,-14,8,-2,13,5,-3,-9,-20,37,-16,-19,18,2,-15,-21,5,-1,-9,3,-12,-11,-2,16,-2,1,-12,-6,-3,-3,-27,-10,-16,16,22,-13,22,16,-17,-8,-23,-1,7,-15,9,-6,5,-22,-6,15,3,-7,-1,26,9,-3,-6,-5,8,4,8,-11,-5,2,-14,7,7,15,-6,19,14,9,-5,8,9,0,2,11,-4,15,-8,-4,4,-4,-4,-8,-5,-5,-4,-20,-9,-5,-40,-40,-20,-3,60,-16,-24,-3,-25,-23,-20,-4,4,-10,-5,-1,2,-17,-18,-19,35,25,-32,4,20,-6,-25,-25,-10,2,-2,2,2,1,8,-25,-1,12,-6,-15,11,-7,-18,-5,11,10,-10,19,-8,7,-13,-6,-13,-1,-8,1,0,-23,1,5,5,3,8,6,-6,1,-7,15,-7,-8,1,-1,-2,-9,-2,-6,0,-25,-4,-7,-13,-3,-4,-13,68,-31,-6,-7,-27,-10,7,-18,12,-1,12,-11,16,-12,20,-7,-4,-9,7,14,-14,-10,3,-10,-9,4,15,-22,3,-2,-1,-25,-26,0,8,-12,-19,-15,1,7,12,3,-21,9,-3,3,6,-16,-11,-1,-8,0,-4,-2,1,-2,9,1,-2,-8,6,-12,-12,-4,-7,0,6,-10,7,-6,5,2,6,15,-6,-2,-7,-8,-7,-26,5,-23,2,11,-25,-15,5,-26,8,-8,-10,5,3,4,22,-7,-30,0,16,10,-16,5,-7,-13,-8,-8,-2,-7,17,9,14,2,-28,6,-2,0,16,8,9,5,-10,3,-7,1,9,-2,14,28,-11,-2,-6,7,19,6,-7,8,-2,14,9,-14,5,-6,-8,22,-12,5,1,-4,6,14,4,3,1,18,10,-6,-8,-24,-5,-2,-4,-5,-15,-4,-5,-1,-7,-14,-11,15,7,2,-2,-7,2,-3,13,3,-12,-11,-1,10,-9,-28,2,12,-18,-3,-12,0,-4,-17,-6,-5,14,2,-16,-1,-19,-7,2,-16,-8,6,-4,14,-8,-7,-15,-6,5,36,-8,1,-20,11,5,1,-2,9,-1,-5,6,-21,-1,-7,9,16,-5,13,1,1,-14,-17,9,23,-10,14,-6,-4,-13,-9,-16,-21,-13,15,-21,-3,-19,3,25,8,-14,9,1,-9,-12,3,8,-3,-8,23,-5,-13,-16,-11,-6,-14,-15,-10,12,-13,-3,-10,19,-9,-18,-11,-9,-8,-7,-9,-12,-3,-10,-2,-22,-6,4,3,-10,3,-4,-1,-23,6,-2,-7,14,-6,14,10,-17,-13,-13,-13,-7,-11,-4,-6,-5,8,-12,26,-22,0,-9,9,-10,-27,-13,-4,3,0,11,-11,-1,25,0,24,-2,-5,-19,27,13,-15,-11,1,38,5,-3,8,-8,5,-14,2,-19,-6,0,-8,39,-10,-13,11,2,19,-11,26,-18,-12,0,4,-20,-4,-10,-16,-10,-17,9,-6,-3,-7,-1,-4,-19,0,-1,15,4,9,8,5,-2,-2,-12,-3,-9,-14,-4,-4,0,-9,-3,4,-7,-20,-5,12,5,-13,10,-3,8,2,24,-8,-10,-6,6,-20,11,-15,-9,21,1,-27,27,-1,-12,-17,10,-1,-10,-4,16,-7,9,2,22,-3,1,18,10,24,4,-1,-8,1,15,-7,-9,-13,-4,1,10,-8,-8,-3,12,3,-9,1,-3,-11,13,0,15,2,3,-6,0,2,-1,11,22,13,-13,-25,21,-1,-7,13,3,-9,7,-15,5,-29,-4,-37,-7,-18,-2,11,-2,17,15,-13,10,-18,4,-18,-8,-6,11,-1,-2,-17,2,10,-6,-21,2,-11,1,17,-4,-12,-12,-4,5,16,-9,18,4,1,8,6,-7,-6,-7,6,7,4,-1,-1,2,1,6,20,10,-26,2,-5,-3,29,-4,12,7,11,5,17,7,0,-9,-13,2,0,-11,-10,-16,-15,-1,9,-5,13,3,16,1,13,-1,-1,8,10,4,-12,-13,6,5,9,-11,-14,8,-3,12,9,2,-12,8,3,-2,-9,-12,-11,-2,-9,18,-22,11,-10,5,1,4,-10,-20,8,-1,-13,1,-10,-4,-7,-6,-12,4,-5,-12,12,-13,-25,21,-10,-15,9,-5,20,-2,14,-19,-9,7,-12,-2,-10,-5,-39,13,2,-2,-16,7,-15,-11,-6,-4,3,0,-15,-7,-7,-10,-11,-18,-5,-9,-21,-12,2,5,-9,6,11,-8,-9,5,-11,3,-4,-10,0,6,-21,5,8,19,4,-18,27,-25,-6,15,-4,-17,-23,-14,-7,-4,-10,13,-15,4,6,-5,1,-18,-8,-7,2,-10,-1,6,10,-1,-6,-22,3,2,5,-16,-11,-4,0,1,-10,-3,23,-14,-6,7,-30,3,20,-15,3,16,-22,5,-16,-7,-8,7,9,3,-20,-8,-14,4,4,-4,-15,22,-1,-11,-5,6,-5,4,9,12,12,7,-13,22,0,5,-3,17,11,6,-14,-5,0,-3,-12,-13,1,3,24,18,8,-19,13,-8,2,1,-20,-11,-1,26,26,-16,6,1,5,-8,-7,-2,1,17,-17,-33,8,16,-30,16,89,-24,13,8,-16,-3,8,16,14,15,-24,-14,3,-16,-9,4,-6,9,-1,9,1,-13,3,-4,-5,20,-9,5,16,-9,-10,0,-1,16,5,5,-5,-19,-8,-4,-8,11,7,14,39,-9,14,-13,-14,-5,12,-1,13,-5,2,-16,6,-10,-14,23,-17,1,3,-2,-18,-13,-8,-20,18,-2,-19,16,-1,5,-12,0,0,24,-19,-26,11,0,-12,8,-3,-13,-9,0,8,-13,3,10,15,-3,12,2,-3,-2,19,3,-9,15,2,4,-4,-3,2,4,-11,4,-2,1,-5,-5,7,-6,-1,4,-1,-2,-8,-10,-14,-6,1,-8,11,-10,-9,-17,1,-3,-16,-8,0,15,4,-13,4,6,-23,8,3,9,-19,-6,-6,1,-9,1,-11,11,4,-7,-3,-3,-6,6,-14,18,-6,-1,0,-3,-4,4,4,-6,-12,8,6,-17,0,-8,-5,-3,-2,-15,-6,-8,8,4,-4,-20,6,-5,5,0,0,-15,-6,-1,-10,-7,-12,-10,15,-7,-23,-36,-5,-9,19,19,-5,-14,-13,-11,21,-15,-21,-21,-16,6,5,0,-10,2,11,16,-4,-16,-11,-1,6,-5,-10,-2,-15,-11,18,2,5,1,-3,5,-1,-6,2,9,0,-17,7,-16,6,-16,-15,6,20,2,-2,-17,-2,12,-9,1,11,-28,-4,4,-11,7,-8,-4,-2,1,-2,-7,1,11,4,0,-4,1,-14,-3,13,4,-9,-23,17,-10,-5,-23,1,4,-8,3,2,0,-2,9,16,1,20,-12,8,-11,-2,1,-3,6,-8,-8,12,-13,4,-5,5,4,3,-10,7,-4,-2,10,12,10,-4,0,34,-7,17,7,15,0,-9,16,0,-8,-12,-2,-6,-7,-7,23,-8,-25,-19,15,-33,-5,3,6,4,-9,1,-11,-5,-6,-2,11,-8,-4,-31,11,0,-16,-1,30,-7,-10,-9,-22,-15,-9,1,-2,-5,30,-23,13,1,2,15,5,-1,4,-17,-11,2,7,-9,10,-2,2,-5,-9,-11,-17,-2,-1,-2,14,-2,-7,-6,-4,-12,3,16,-1,-1,2,-1,-17,9,-24,4,-12,-22,1,-5,-28,-29,18,-12,9,-11,7,-25,3,-1,-28,-3,-13,-7,-12,1,-22,-11,-7,-15,1,-24,13,-9,-19,13,20,-18,-13,1,-22,-9,-22,-4,-32,-22,45,-9,14,-6,-3,-5,31,-4,-13,-12,-24,-1,-6,9,0,-11,-9,-1,7,-2,-3,-5,15,-1,-8,-13,-16,-3,0,-3,-6,-5,-6,-8,-8,-13,-9,31,-8,11,-8,-16,5,-11,-4,7,28,23,13,16,26,-22,11,6,-13,-1,-5,6,-8,-2,-15,-7,-8,16,10,-4,4,-24,3,15,-23,7,-9,22,-5,7,0,18,-24,-12,12,-4,7,-4,4,1,-23,3,-12,-5,-6,0,-1,31,-16,10,0,7,11,19,-18,-4,0,10,-4,-19,-2,-18,6,7,16,3,-9,-5,10,3,0,-10,18,2,8,-10,-13,-15,-6,-2,1,8,6,0,-2,-3,-10,23,6,-5,-2,-1,2,23,0,2,-15,-9,-3,-5,10,-20,4,-4,-21,5,-17,34,17,-10,-2,-5,2,-6,6,-3,2,-9,-9,1,-14,-7,-21,-7,-9,-6,4,-15,-6,10,-10,10,7,11,-26,-12,-10,9,-24,4,-20,10,7,7,13,24,8,-3,17,-14,11,-2,1,-19,9,-16,-8,-6,-9,-10,-8,-4,-1,-8,-2,8,-3,12,26,2,7,-5,-11,-3,-12,-6,-2,-14,9,-4,-1,4,-1,1,-2,0,-3,11,-9,-28,6,-10,-1,-20,3,-6,0,10,-9,-23,-20,-11,2,-11,-12,-5,-11,-26,3,17,-30,-2,-3,9,13,-23,-8,4,-9,-8,-11,-1,2,-12,0,16,-12,0,1,-12,-15,-13,-13,-28,14,9,-19,-16,0,-5,-12,2,-7,-1,-7,5,13,27,7,9,20,-27,-22,-7,-7,-23,-17,1,-2,9,5,-6,9,30,29,-10,19,-20,11,-19,-9,-4,-20,-17,27,-5,20,4,4,-5,13,-17,19,-30,-3,-23,-2,13,1,-6,3,-15,-29,5,-13,-18,30,21,34,-15,0,-12,40,12,1,-13,-11,-4,-20,-8,0,-8,-11,2,-8,-4,-10,10,-2,-6,-14,3,-9,0,-5,-4,0,-20,-29,-12,6,0,-1,10,-4,-10,-16,22,-14,3,3,-4,19,11,0,-13,34,-14,1,-4,-7,-15,-18,-8,4,-7,12,18,19,2,5,-6,11,0,-5,-13,-14,-6,-1,-4,-6,-7,-9,3,1,-4,23,-6,21,6,-1,2,10,-1,7,-9,3,6,-3,-10,13,29,-1,10,-12,8,13,-15,2,1,15,1,-3,-8,-12,-20,-15,-19,-11,8,-9,-9,19,-6,3,-4,-21,-13,8,-12,-5,-9,-6,-7,-7,15,17,-13,10,-4,-8,-22,-8,10,8,-7,13,20,16,11,2,1,-10,5,-5,-13,-14,-5,-9,-3,-5,-15,8,7,5,12,11,6,-5,-3,0,10,4,-14,6,3,3,-7,8,-7,-9,-19,-13,-13,-4,-4,-7,-4,1,-11,-8,3,22,11,-4,-3,26,-29,-18,3,-7,2,14,5,2,4,9,6,-6,3,3,4,-14,27,21,-13,4,2,6,10,-3,22,9,-5,-16,18,-1,-18,-17,22,4,-14,5,20,10,-10,-1,27,-10,-18,7,5,-7,8,2,-3,6,-7,-5,-3,10,3,-10,-13,12,5,-3,-1,3,7,6,-7,-11,-9,0,4,-8,-16,-2,5,-15,-30,-2,0,-14,2,2,-16,-23,5,3,-3,-8,-27,-13,-11,-11,-8,-6,-14,-31,6,-12,11,0,24,13,-2,-2,-7,-23,-23,9,3,-16,-20,-11,-31,-9,22,0,8,-5,6,-19,-14,-2,7,-4,-13,-8,-15,-7,-12,-17,28,-8,-8,-4,-8,-10,-15,-11,-3,4,20,-18,-4,-11,1,-9,-11,-31,0,-11,11,28,8,-5,-5,1,15,7,4,-2,21,19,-18,-22,8,9,-2,14,11,-1,5,-7,7,1,-2,-10,24,-12,-3,-19,11,21,-1,15,27,-7,-20,1,-15,-6,-13,-10,-2,-13,18,1,-5,-7,2,-5,0,-17,8,9,-8,12,1,-8,-5,-13,8,-2,2,3,-6,2,4,-12,-12,-1,7,7,-2,5,9,3,14,-9,-12,4,-12,-16,1,10,-3,10,-21,-9,-8,5,6,2,1,-10,2,2,-2,12,-20,2,6,-7,0,14,-7,-4,13,-13,2,-10,5,14,-1,-6,8,-12,-22,-11,-12,-15,-5,-17,-14,-8,18,9,-21,1,-9,-3,-13,-17,-3,-12,4,-17,5,5,19,-12,2,1,-1,-2,-7,3,-16,4,3,-8,-4,21,1,6,16,-28,7,0,-18,17,-17,-2,-2,0,-10,5,17,-16,-9,16,-9,-1,-3,-5,-4,5,3,19,5,16,11,-10,17,-8,8,-5,5,-4,-1,-14,12,-20,27,2,-6,0,-20,0,15,5,-4,-28,-18,1,10,2,-5,-12,9,-13,-3,-12,-15,9,25,-16,4,-3,-4,-12,-3,-23,-2,-12,3,-2,16,8,-7,0,-5,8,14,-7,13,-21,-2,-22,5,-5,0,-11,-15,-7,14,-30,25,6,1,25,4,-15,3,-7,-9,-5,15,-12,10,-1,6,-9,9,-2,17,7,4,-24,2,11,-11,-23,4,4,-8,-14,-13,35,-7,-15,-12,-6,3,-23,7,13,-4,-3,15,-1,-9,-7,-3,19,-12,-13,4,-9,-1,-18,5,-20,6,-1,4,3,-4,0,0,-27,-16,6,-3,-4,-7,0,2,-19,16,-1,-2,5,-5,-7,13,-15,7,10,-28,16,1,17,9,-4,-6,4,-7,-6,11,-18,-18,-13,13,10,-16,23,-11,4,2,11,-24,-8,5,-16,15,3,-22,2,-9,-10,-18,-16,-24,0,0,17,7,-12,8,-6,8,14,-7,15,14,-18,12,-19,-5,-4,4,-9,15,-15,4,14,-7,17,1,-4,11,15,8,-11,9,-12,-8,13,1,-13,9,8,3,3,-3,-25,-21,5,3,13,16,4,3,-16,28,-11,-11,5,2,-37,-13,-2,-1,42,-16,28,6,-11,-7,-1,-5,-2,-10,-15,21,2,6,-4,-4,-7,-25,-20,-41,9,-18,-9,22,7,-10,0,-2,15,-18,-8,39,-8,19,-25,17,-4,-5,-6,5,6,-12,9,-2,-28,-11,-17,11,8,-2,-13,0,-15,0,-13,7,-6,10,4,9,7,0,-7,6,-20,1,-18,2,9,2,-20,-3,-12,-16,14,-12,-16,-6,21,-7,-11,26,-16,16,-1,-10,0,-24,-7,-11,-17,-27,-6,3,-21,-15,-21,-4,-22,-34,-1,-27,-17,-13,2,0,3,-8,-11,8,7,11,8,9,-5,3,-26,13,-3,9,28,-13,8,15,-15,0,-14,-19,0,5,11,15,-3,8,-13,-9,-5,-7,-11,-11,6,-7,3,2,-4,5,-18,13,7,17,1,-16,-4,-4,5,-18,-27,16,19,9,9,9,7,2,0,9,4,-29,-15,4,-11,-14,8,1,9,-24,-2,-6,-33,-34,11,-8,6,-1,3,22,-11,-13,28,0,11,-19,16,4,1,5,-25,-8,14,14,2,-9,6,6,-2,4,-9,2,-6,5,27,6,-3,4,1,-8,14,-8,-3,-17,-10,-13,-4,-6,-14,-11,8,-20,-4,-5,29,-13,33,-3,-26,-3,-8,-14,-10,-24,12,-19,-8,1,12,1,26,16,2,-21,19,4,0,6,-7,-5,-2,2,3,5,7,-10,-23,8,-23,-3,-12,-3,5,-6,3,6,-4,16,5,1,-20,-13,-15,-27,14,-3,-1,-6,-4,1,25,21,-5,-2,-6,-3,0,19,8,0,17,4,-26,-13,-9,-11,8,-2,-7,-12,-2,-15,9,6,15,-4,23,5,-10,18,-6,2,-10,-7,-1,3,-9,-5,2,9,4,-3,-24,-9,-17,14,13,23,-15,5,3,-8,-5,-2,-1,-10,-25,-17,-18,14,-21,-17,7,-3,-6,9,-6,-9,2,-5,-4,-13,-13,-11,-3,-6,-9,-3,1,18,2,0,4,-3,-15,-12,3,-6,1,6,6,4,-19,16,-2,-4,26,7,-20,26,-20,-13,36,-4,-9,8,5,-9,13,9,38,-5,-1,17,-21,9,-6,0,-4,7,-21,9,-5,-9,-7,-6,31,-6,2,16,-2,-1,-15,-29,4,18,8,-8,2,10,0,-15,5,-18,-12,-7,-24,-11,-24,0,-13,2,10,8,7,-2,-6,2,11,13,-1,0,-11,-11,-8,-8,-17,-12,-17,40,-2,-16,-20,-3,16,-21,-16,-12,-3,11,-11,-20,-8,1,-5,-8,-25,-27,11,8,-20,-4,-17,8,19,-14,-1,9,-5,7,-13,-5,7,-8,2,-9,-10,-19,18,-1,31,-16,-5,-8,11,16,6,-22,-2,15,-14,-10,5,-7,-7,-13,-2,-5,-3,12,-11,15,17,-19,9,9,12,-27,7,-3,-15,-20,-18,-12,-7,-12,-18,-29,-21,-4,-21,-9,-13,-3,26,-12,-6,0,3,34,4,-4,-4,-12,-9,-8,2,-34,1,-14,-26,13,1,15,18,9,17,25,-23,-8,-17,-5,3,3,9,-11,-18,1,6,2,2,-1,2,3,-13,0,7,9,14,8,-4,8,5,-10,-5,-4,-1,9,9,19,5,18,9,14,17,0,3,19,-10,-7,-16,-22,-15,-2,-8,8,10,-16,-10,2,-16,-23,-10,-28,6,0,-18,-15,5,3,4,12,1,4,2,4,-13,-14,0,-7,-1,3,-15,-13,2,-11,-9,-7,1,5,-3,0,-12,15,-2,-10,14,-3,-21,-2,17,-3,-13,1,-22,2,4,14,1,-1,25,-10,-20,1,35,3,-11,2,-2,2,-4,-17,-18,-6,32,-11,-9,-13,-13,-2,24,2,-7,-1,5,15,-1,-10,-15,-18,-17,-16,19,-16,7,19,-11,-13,7,9,1,7,-2,1,6,17,-14,-9,15,-13,5,20,2,-6,-1,-7,-9,-28,-13,0,-2,10,-17,1,4,-12,15,16,-16,13,-6,-9,4,-4,4,6,-7,-3,-3,0,3,-19,-1,19,-7,16,4,0,-4,15,1,-16,3,9,13,-3,-11,-19,0,1,-15,18,-15,-9,0,3,-22,8,13,-24,-4,-10,-8,10,25,-2,9,-11,3,22,9,-9,-1,16,9,7,-7,1,-7,11,-17,-14,-14,-12,-15,-2,-1,-19,0,-17,7,-9,-23,29,4,-9,0,4,-15,-29,0,10,-17,-2,9,-12,3,-12,-9,7,34,-1,24,30,-20,-1,17,2,-18,9,-11,-14,2,11,9,8,12,6,-3,0,-28,-5,-16,-13,-3,1,-19,-5,15,-8,-4,-20,-8,7,19,11,-5,11,5,9,-7,-16,-21,11,-20,-11,-9,-29,-2,12,-8,-17,6,0,-1,-9,3,-23,-8,-19,-17,-16,4,10,7,22,-13,-26,-3,-13,-16,-11,-6,-19,16,-4,2,5,3,10,8,3,0,-2,-20,-14,4,3,-21,-6,11,5,-13,8,3,-9,-9,17,-3,-1,-5,-22,-3,-10,-3,1,-1,-8,-3,0,3,7,2,-1,20,-6,-14,11,-14,3,6,-8,-5,-7,-10,4,-14,-10,-4,-4,-18,16,-7,3,7,-8,-2,-2,-23,7,-14,-12,11,1,-6,-6,1,11,13,5,-4,6,-4,-8,-8,12,-9,1,4,-20,-21,2,15,-6,23,9,2,7,-5,-6,14,17,8,1,-10,-9,-22,3,13,-3,9,-3,-7,10,-4,-1,8,-7,-32,29,-13,-20,2,0,-4,-2,4,-15,16,9,19,6,-9,-17,4,36,-11,4,17,29,-10,-24,-4,24,6,19,4,-19,11,-4,0,-20,-17,-10,-14,3,-17,-5,-1,6,-5,22,-11,8,-5,-4,-18,-13,-12,-4,18,-13,-14,-9,-6,15,1,7,-8,25,-10,-10,1,5,7,-3,-2,-24,-2,-6,8,7,16,0,-11,5,12,-18,-33,-34,1,-13,-11,3,19,6,-4,-13,11,-5,-6,12,-5,-13,-5,-9,13,4,8,24,-8,-17,-15,1,-13,-17,-6,-19,9,-12,-3,-13,-1,4,-24,6,4,-5,1,2,-2,-34,4,-18,-3,-14,-7,-14,7,-19,-6,-3,-6,-2,12,8,-15,-14,3,-1,1,-2,-3,12,12,-6,-25,-20,-4,-4,10,-7,-21,-20,-2,-14,21,14,-3,-29,5,-11,-18,-18,5,4,-4,13,-19,-20,-18,48,-5,3,9,-11,23,0,-23,-14,-22,3,-30,4,-24,-21,-16,1,1,11,2,-4,10,5,-21,-25,18,14,-27,-3,-11,-4,-20,10,-10,19,4,-5,17,4,-2,22,11,0,-5,-4,-9,-8,-4,22,1,29,0,23,18,-2,-7,0,-11,-8,-12,1,7,-6,8,3,-15,19,-7,-11,-19,-11,-6,-23,-14,7,-15,-5,-23,-7,-22,-2,-4,12,12,-9,-14,-5,-12,-5,-9,15,-18,-8,-16,-9,-20,-15,-18,-7,5,-11,-3,-7,9,-1,8,-2,-18,-4,-16,4,11,-8,-11,-10,9,-12,-12,14,-5,5,-1,-1,8,-6,4,-13,-13,9,-2,6,15,-7,-5,3,4,-1,-6,-7,0,5,1,6,3,16,-8,27,-12,8,1,-6,0,-10,-8,10,1,2,-11,-2,2,-9,-3,6,1,15,2,-16,-15,-1,-7,7,-14,8,-6,-11,-15,-8,-12,-6,-5,4,3,-13,7,-8,21,7,-4,4,6,15,16,-14,3,1,16,-10,-10,2,-7,7,10,7,14,-3,13,4,8,-7,18,9,13,12,-2,-5,-7,-5,-2,-9,-12,8,11,-14,0,-15,6,4,-2,11,-2,-5,-3,-4,-27,-4,14,-8,5,-20,9,6,-7,-1,-1,22,-1,-11,13,-10,-23,-1,1,-11,7,-21,10,8,-11,-8,-12,24,2,-18,-10,-12,0,-9,-13,1,-21,-16,-14,4,-4,-17,-10,-7,-9,-7,-6,7,6,-3,-8,0,-5,-7,0,9,12,1,-4,8,-7,-2,-5,21,0,3,-6,15,-6,-14,-6,5,-3,17,-10,13,1,-5,11,14,5,-13,17,1,11,8,4,9,-1,-10,-7,17,-3,-19,11,6,4,-7,31,-7,-13,4,1,5,12,-10,-27,2,18,-25,0,-13,-12,-6,10,-10,-8,10,-8,17,-5,-21,-11,-13,0,-1,5,-5,20,-1,12,-8,-13,0,1,0,14,-14,9,0,1,-18,-2,6,-3,-13,7,18,-8,7,28,3,18,15,-1,-12,9,-10,8,3,12,-10,-7,-3,-12,2,-12,13,-12,5,-6,8,-10,-12,4,-18,-2,-7,3,3,-19,7,-17,-12,-23,10,-20,-19,18,23,8,-31,-15,19,-12,-27,2,-6,-22,-23,-16,-6,13,-12,-7,34,11,-25,15,15,-2,-6,5,-11,-11,-13,-9,-19,13,-1,12,12,6,-27,-3,-12,-15,-7,24,6,8,0,-11,-21,8,-6,-13,-9,-7,-16,-13,12,-14,3,-17,3,9,-13,9,-2,2,-9,-17,-6,0,-5,-16,9,-3,14,-4,9,3,-20,-7,17,-6,-22,13,-2,-6,-9,-8,21,-10,-10,-3,16,-10,-13,2,2,8,-11,-7,0,-11,-14,-2,13,-3,-7,2,14,-22,-15,4,1,5,3,6,2,-7,-10,-4,-5,-16,-16,11,-6,-5,-10,-24,1,-14,8,9,-23,9,-10,-12,-7,0,3,-8,2,13,10,-12,4,-19,-1,18,-8,9,-5,-5,-1,2,5,25,9,17,8,-11,15,-4,0,3,0,13,-1,-1,-12,-16,-11,-10,17,-2,5,11,0,12,-11,-10,-4,12,0,11,5,-1,-11,9,9,-15,1,-11,1,5,0,-15,0,14,2,4,-1,-7,-7,29,8,-15,10,0,-14,3,8,-7,12,-3,-24,3,10,0,-21,-21,-13,-17,-33,-30,22,18,-6,-7,13,-29,-33,-11,3,-6,-17,-13,-12,-18,-29,-23,33,13,-4,-16,31,17,-12,8,31,15,-9,-3,12,-17,-21,-19,4,-10,6,3,-3,20,16,10,-4,5,5,14,4,-9,6,-14,-10,-5,4,5,-29,-7,-3,-2,-17,-20,1,-13,9,-9,24,0,-7,15,1,-5,23,-1,-12,17,9,-19,-7,-1,-4,-18,-27,-7,2,9,-5,-8,2,-1,-5,18,1,-23,-1,-9,-5,-10,5,-7,5,-15,3,-20,-15,5,-14,26,-7,-9,-8,-11,-12,-15,-1,-2,9,-8,12,-11,-17,6,-12,-8,-12,5,12,7,-16,-6,-6,7,-6,6,12,22,-3,0,-17,-10,8,-9,18,2,6,7,4,-8,-15,16,-5,-2,15,14,-9,3,13,-5,2,15,-7,-10,5,-4,-8,-6,-2,-5,-7,2,19,12,5,-7,-6,3,10,-11,3,15,-16,7,-2,-1,-14,-1,-4,17,10,4,-20,-2,2,-13,-15,-11,-33,-9,-12,-13,-7,7,13,-14,-13,16,3,-9,-3,12,-3,-6,-10,6,-7,9,13,11,2,2,4,-11,-8,-16,-10,3,-8,18,-18,0,-4,14,0,-5,6,1,2,-16,-16,9,-11,-10,8,1,-3,-1,18,5,-23,8,8,2,1,-19,-4,1,9,-6,16,-4,6,-4,5,-7,0,-6,2,14,10,-2,-8,12,1,-30,14,12,-7,-11,-7,-8,-7,8,4,-23,-15,1,-10,1,-8,3,8,2,-13,8,17,7,-7,1,4,-9,1,-16,-23,-10,0,5,17,-2,-7,13,9,7,-2,-7,-3,15,4,-23,-16,-7,-6,-16,-15,14,0,-6,0,5,-11,12,-9,-2,-4,-5,-11,-3,-7,-12,0,-12,2,-12,4,15,-7,25,0,11,7,8,12,23,15,-18,2,-4,5,-16,9,-3,-13,0,-7,-14,-19,16,19,7,5,7,-3,-2,-5,4,10,-3,-3,-15,9,-8,-7,5,-4,-2,-3,8,5,-4,0,-9,-4,18,11,-2,6,5,-11,1,-8,33,2,-12,1,-5,4,-7,24,19,-14,15,-17,-1,-7,4,-15,-8,-6,-4,-16,12,1,17,5,-2,-19,0,-4,-15,-13,-1,4,-9,-8,-7,-14,26,9,-2,6,-5,-16,-1,4,-23,-15,-22,-12,-13,-2,-8,4,-13,15,4,2,-11,-5,11,16,-10,-8,-13,-12,4,-7,-21,1,-8,10,17,-2,-9,24,11,13,-4,-8,1,4,-2,11,6,-4,6,-11,-7,-10,15,6,-11,-17,-6,1,11,-12,-3,-5,-15,12,12,-18,-8,-10,-3,-25,-16,-4,-19,2,-13,3,-8,-19,-5,12,9,-13,-8,-4,-1,-8,-2,1,-14,-2,-7,2,-14,-7,-19,16,-9,0,5,-13,-4,6,7,5,-6,3,-1,0,1,-14,-7,-1,-6,-3,20,3,6,10,-7,3,-7,11,8,3,-14,4,8,-4,6,-8,-4,-14,18,5,-2,-13,-3,-5,-13,-3,-10,-2,-5,12,-9,2,2,-10,10,-27,-2,12,-20,-6,-9,3,-9,-16,3,15,4,12,-3,-12,-5,-19,-20,-4,-2,-9,-19,-1,-27,-14,-10,2,-6,27,11,-20,3,-24,-1,2,-5,-1,-16,8,-15,-13,4,-5,2,-7,14,8,8,-25,-10,-8,2,-13,-14,3,5,9,-7,25,2,-19,-3,-9,-3,-27,-12,-18,-6,-16,-18,-1,-7,-3,-7,8,6,-12,7,-15,-1,-29,-7,-10,-7,-2,-4,6,-23,-10,9,27,13,-12,-8,-6,7,-27,-37,-8,15,-1,-10,15,-19,-6,-5,5,10,-14,-1,-4,13,-10,-30,-19,39,-12,-16,8,-19,11,-5,9,5,12,8,9,0,-15,-13,15,3,-2,-7,10,15,-4,-7,2,-3,14,-1,-9,-5,4,-6,-18,-14,3,6,-7,-5,-8,2,-10,1,19,-5,-31,-17,5,-3,3,4,19,10,-8,18,-1,23,10,8,20,-11,-12,-13,18,-11,-10,10,11,17,1,5,2,-9,7,-12,7,-19,2,2,26,-13,4,35,-1,15,-2,-20,4,-25,-4,-4,8,-18,-5,-29,-16,16,-23,8,1,16,-15,-2,24,-1,-1,-2,8,-24,-3,-11,-8,-11,-12,-5,3,0,-19,-11,8,1,-22,-21,4,-18,2,-7,-20,-24,-32,21,18,3,8,2,-17,3,5,-25,-2,-11,-13,8,-19,-5,-28,4,24,-3,-1,-19,-7,-10,-14,-9,9,-10,-6,-28,-16,-10,-8,1,3,1,3,-2,5,10,2,-8,-16,-16,-6,-10,-2,17,-5,14,-19,10,17,-6,-6,-14,8,16,15,-9,-16,5,-1,-4,-9,-3,8,0,5,-2,-3,-10,-10,1,10,-14,-8,-18,-1,-12,-15,-2,20,9,-6,0,-2,-1,3,-18,-12,-11,-18,-1,-27,9,1,-17,3,-6,13,4,-10,-12,-10,-10,0,6,2,-18,-6,1,0,-13,-7,7,4,5,-2,2,15,-8,27,5,-12,-14,3,5,4,-14,-14,10,-20,4,8,2,31,-10,8,-5,-3,-1,-12,-6,-17,-1,-9,8,14,-1,3,-4,4,-1,16,-5,-5,-4,10,-15,-14,10,11,15,12,1,-3,1,-21,9,15,0,-22,14,-5,2,-1,23,-17,8,18,-7,-12,7,-1,-8,6,6,12,14,-9,5,-5,13,12,6,-8,12,3,-8,27,1,-10,15,-5,2,-4,-11,-20,-21,1,-19,7,-3,-6,8,5,14,10,-9,-15,-6,-6,-3,-22,-18,14,-6,-16,8,4,29,-12,-14,-12,-20,0,3,5,-28,-12,18,-9,-14,1,-8,-15,-11,-34,-11,-23,-9,-12,-13,13,-17,-9,26,-6,-13,1,-9,12,-3,-16,-21,-16,10,-11,5,14,-13,-15,9,-2,-18,-21,-10,4,-21,-6,6,8,13,20,20,2,8,14,-8,0,13,9,0,7,1,-21,10,3,10,-17,2,-10,9,-12,-10,32,18,-10,11,-2,9,-7,-11,10,-3,5,-4,-14,16,-14,3,-12,17,1,-3,6,-3,-8,-29,5,0,3,-7,-4,11,-13,-18,-12,19,6,-4,7,-17,-15,-15,5,26,13,-2,-2,-1,0,16,5,5,-8,4,4,-6,-1,11,-3,-11,-2,8,-10,-9,-1,1,-11,-2,-6,-7,3,-14,-7,3,19,4,14,7,-18,-11,-5,-12,10,-8,-8,1,16,0,23,-26,12,13,-23,21,-10,-13,-13,2,3,6,3,1,-16,-20,20,-12,-5,4,4,-1,-6,10,-11,16,5,-2,-10,-1,15,-23,-7,4,-13,-2,18,-22,-19,-5,-9,6,-10,4,-20,-1,38,-5,-5,7,-24,-4,15,-20,-13,19,1,21,2,4,8,6,1,-10,-13,18,4,18,15,-1,-12,-7,-5,-12,7,-7,-1,1,10,-10,-8,5,3,14,-9,-7,-3,-11,1,-7,-11,3,-19,8,-1,-6,0,-10,7,-4,-4,-13,-3,3,-3,3,3,-7,-18,1,-8,-15,-1,-4,-3,-12,4,-5,-10,0,-3,-8,-5,0,4,11,-12,20,-5,9,-18,-31,6,-15,12,6,-21,6,-11,-9,33,9,5,18,6,-15,23,9,-28,-1,23,12,-6,-10,10,-15,19,22,-16,-2,-21,2,5,29,-32,11,0,9,-2,-2,4,-14,-1,7,-9,6,-24,15,16,-1,-24,0,-2,-5,-3,-2,34,8,3,8,2,-6,-2,-1,12,-33,8,16,11,-6,-2,-8,2,-13,13,2,2,8,-5,-3,-15,-34,-8,1,-6,-17,-5,-29,-13,-9,48,8,-12,-4,4,-7,3,-10,-13,18,-14,-9,-5,-13,-11,-2,-6,-2,-1,-13,-18,-7,-14,2,-30,9,-18,6,7,7,-6,-4,-2,-1,-1,0,8,-2,-17,-10,-7,-2,2,11,1,4,12,10,2,-6,7,-12,-5,-2,3,-20,4,8,-1,10,6,0,-12,-10,10,-17,12,4,13,-25,-13,-11,-1,17,-17,-10,13,-11,-3,0,-22,-6,-14,-13,-17,0,-6,2,14,20,4,-19,-8,-16,-2,-8,-28,-20,5,-10,-7,12,27,9,-8,-4,0,0,15,7,1,-13,-20,-21,1,-7,-4,-8,18,15,-10,-11,17,10,8,-4,6,10,-6,-3,-2,-19,2,-17,6,5,8,2,7,13,4,-14,-1,10,1,-6,0,-10,26,-18,1,6,-18,-8,-10,4,-18,-5,9,0,-8,-5,4,1,-3,17,-10,15,-15,-8,-1,-1,9,1,-16,-4,-18,10,-4,-32,-3,-4,-1,5,9,14,-5,-3,-10,1,-3,-10,-14,3,-1,2,-5,-11,-7,-5,-7,-4,-1,-3,-10,15,7,8,7,7,1,-12,19,-7,-5,10,13,9,13,-21,-6,-6,-15,-1,1,20,-21,-9,-18,1,9,-5,1,4,0,15,-5,-12,7,4,5,0,3,9,-15,-10,2,3,6,8,14,-15,3,-6,-17,-11,-15,24,-5,-11,-15,-14,-1,1,1,-1,-2,-23,-18,-4,-5,-5,-23,17,1,10,-20,-23,-7,-7,-18,-23,-1,0,-3,10,-3,10,-6,28,2,-8,7,-6,6,0,33,0,1,-12,-4,-5,-8,8,-6,18,-3,9,-10,14,-23,6,-2,11,6,7,-2,6,8,-2,-17,-11,-11,12,27,-13,-9,8,12,6,-4,-12,4,2,-14,-4,-5,0,-18,3,17,-15,-1,10,24,18,9,-1,17,6,-1,-6,-13,8,-26,14,27,-11,-2,-1,-3,-21,-2,-1,7,6,-20,-5,-20,-14,-14,-7,11,-9,-4,-30,20,-5,-7,-18,14,1,-3,21,-19,3,16,7,8,-25,-15,-22,4,-8,10,-17,-15,7,0,-8,8,-3,-12,-7,0,-5,-7,-11,17,3,14,-7,-13,-4,23,-12,-2,-13,-11,16,-8,-12,-2,12,10,12,-7,-18,-1,-13,20,-23,-5,-35,-9,12,-3,-23,-1,-6,0,7,1,13,-11,3,11,1,13,-12,-24,9,-12,2,11,-27,3,-7,0,3,-10,9,12,4,-13,7,-2,-12,15,1,5,-18,3,13,-7,-2,-17,-7,-9,19,-2,-1,-13,11,-18,-16,12,-12,5,11,-9,2,-4,-12,14,15,-9,-4,-10,13,-8,-14,12,-7,28,1,-14,-11,-7,0,9,3,-22,-9,1,12,-8,-26,-6,-22,8,19,-10,-4,12,9,-1,-13,1,6,-1,-5,-2,-8,13,-16,1,3,2,16,-2,2,-9,17,4,-7,-8,5,11,-8,-3,-12,-13,-4,29,4,1,-32,0,-19,3,-7,-15,2,-1,-12,-1,-8,2,-19,-6,22,15,-10,1,13,-13,-12,-2,16,3,-16,-4,-4,13,-14,-3,-2,9,4,-5,-6,-13,-6,-5,-8,-6,-22,0,1,-5,-14,-9,-3,16,3,5,-10,2,-4,0,-6,-1,-17,2,9,11,-15,-15,-8,-5,-16,-2,0,-1,23,15,-23,7,8,-1,-28,20,-11,-2,-25,15,-17,-6,6,19,-6,-13,-8,5,-19,-1,-28,0,-11,-6,2,15,-2,-15,10,28,10,0,5,4,-6,1,4,7,11,34,-27,-12,2,-11,-15,-2,3,2,-15,-9,-27,11,19,-2,1,6,-3,-26,-12,1,5,-18,-4,-7,1,-15,-14,9,6,-10,4,-7,-13,-12,-26,-6,14,2,6,-3,-10,-21,-19,-6,9,-6,-1,-26,-17,-17,12,-14,9,0,-5,-7,-15,8,7,-9,8,-7,30,-9,5,-15,-2,6,15,-3,12,2,7,4,6,10,11,7,29,-1,-6,-17,0,-11,3,-13,7,-9,1,-25,-10,21,23,2,-4,12,2,-11,-4,-1,-1,-15,-12,1,3,-11,-11,13,-1,-6,17,2,-4,-7,-8,-22,0,-12,-7,-9,-23,1,-14,6,32,12,11,-31,2,-24,13,-17,-25,-18,-4,-7,-21,3,1,-22,31,-12,-5,-21,22,-11,-10,18,4,7,3,7,6,9,-10,-2,-19,-22,-11,-10,13,2,-5,8,1,6,6,-8,3,-10,-3,-9,-9,-8,-11,-11,-2,1,4,-7,-8,-3,11,-1,15,-6,-4,11,0,0,6,0,3,1,-1,-12,-15,-7,-10,-4,7,3,-9,11,9,-9,9,4,7,-6,12,-1,-5,-16,-7,-1,-12,2,24,-4,11,11,1,-6,-2,-3,0,15,17,-19,21,-2,11,11,-9,16,-10,-10,2,-4,4,0,3,4,-6,-2,-6,5,4,9,-13,8,2,-7,9,-18,9,-7,-1,-2,1,-2,9,1,15,9,-4,11,6,6,-3,-10,5,6,-10,-21,-24,-6,-3,1,15,0,-6,2,-2,6,-5,-14,6,-9,-7,-17,-14,-2,-5,3,-21,3,-2,-10,-1,-15,-14,-5,0,-4,-13,-8,-5,-13,6,-7,-9,8,-15,14,-20,1,4,-20,-9,-18,21,17,1,6,-2,-8,-2,9,-22,8,-8,-14,-22,4,-15,-17,41,6,-24,4,-16,-6,-14,-3,-17,-21,-11,-9,27,17,0,-21,27,-12,-39,-4,-19,-6,-27,10,2,-7,-11,5,6,2,-1,-11,-9,6,-8,3,-5,-11,-11,14,0,-14,7,-14,-11,8,-8,3,-12,1,-6,4,8,-13,-13,11,-14,9,-1,-14,4,-10,-2,-19,-5,8,10,-8,15,-11,2,6,-17,13,-7,7,-14,-12,-11,-15,6,8,-2,-3,-9,9,8,7,-13,10,-5,25,4,1,-8,34,0,-9,-6,4,-23,-2,-27,-22,-4,-3,-22,-6,17,1,-6,-23,-13,4,-13,3,-17,2,-17,-5,11,-8,0,-9,-4,-5,-14,-2,-20,8,-21,8,6,1,-9,3,-18,-12,1,4,-9,-11,2,-23,-20,24,6,2,8,-4,1,-11,5,-7,-18,-8,-1,-4,10,-7,-25,-6,15,5,16,5,21,3,-10,1,-21,33,-3,5,10,25,-6,-10,9,22,-4,-5,-1,-13,10,20,6,-16,10,17,-2,2,-2,12,-15,-15,4,0,-9,-1,3,19,20,-8,-5,15,-6,17,-16,8,-2,-14,11,4,-6,3,-5,-1,13,-4,14,9,-10,3,-8,-5,-4,-7,2,13,-15,6,-3,-10,5,2,0,9,0,-13,4,5,-4,-20,8,10,9,-12,-15,-6,-12,-15,-13,-10,6,-1,4,-1,-1,-13,1,-1,-4,-14,5,2,4,23,2,-8,16,4,9,-9,-11,-9,2,8,-7,-6,-2,12,15,26,-2,-7,-1,-1,-10,10,-9,17,5,6,-10,-6,-6,15,20,30,20,-20,-3,8,-4,-11,-11,-5,-8,11,-4,-8,3,-5,1,11,-9,-5,-8,-7,12,-3,-5,-3,9,-11,-18,-3,-10,0,-13,15,-7,-16,-18,-20,-6,-2,13,-4,-3,-14,-20,15,-19,1,-20,-1,-13,-5,6,-11,-19,-23,15,18,-11,0,33,-3,-7,6,7,8,-5,7,-19,0,-12,-18,-2,-5,-8,0,9,2,-8,-7,5,-19,-15,-6,7,-3,19,-1,-14,-18,1,-7,-3,9,-2,-15,-10,-27,6,-5,19,22,23,8,-12,-9,-8,-4,-16,-10,-6,21,-6,-14,4,-8,4,28,1,2,-13,-11,-21,-16,-16,-22,-21,-6,-18,-19,-4,-1,-12,-5,-14,-11,18,7,-27,-16,0,-9,-2,-5,20,-10,-13,-7,2,-2,-17,8,-7,-12,-17,-6,-3,-5,-5,-10,7,-12,-14,-21,22,-29,28,28,0,0,-5,-6,-15,1,19,-4,-5,-21,7,-13,6,0,8,12,10,-4,-14,-8,-14,-16,-10,23,0,-11,1,-31,-9,-8,-1,-3,-4,-25,-12,7,-12,-15,-16,-12,19,-10,-15,-24,20,-2,-8,-21,-15,-4,6,-22,-18,-2,-10,9,16,16,-20,5,40,6,3,17,19,-12,5,-1,-7,-30,-35,5,-10,-7,-2,-1,1,-1,-28,14,19,-14,3,28,2,-14,-23,0,14,-9,-14,18,-8,-8,-18,-16,0,-5,12,8,-8,8,-8,0,33,3,-5,-14,-8,-32,-14,0,-13,-14,3,1,4,-2,-7,16,11,3,-2,-6,5,7,27,-8,-16,-17,-4,-3,12,-5,12,4,-20,5,8,6,0,-18,6,24,15,7,-2,-11,-13,1,2,13,-27,3,40,1,-14,-10,-19,-3,19,30,1,4,17,1,-12,3,2,-1,14,-6,4,-11,-9,0,-17,10,-8,19,10,3,2,-5,-7,4,1,11,0,-9,18,15,-6,15,-6,14,8,13,2,13,11,5,2,4,-5,-2,4,7,-2,-5,10,6,12,4,-8,-16,-10,-6,-3,15,-6,0,-16,-5,3,5,16,2,-10,21,-4,-2,14,-4,10,8,-8,0,-5,-19,9,11,-4,-4,3,16,-8,-6,18,-1,6,-5,0,11,-5,-4,-9,-5,2,10,-8,5,-18,-14,13,-5,24,0,2,5,-9,-1,-23,-7,-3,-12,-10,-10,4,8,12,12,7,-14,11,-20,-10,1,8,-11,1,19,4,-17,1,2,-11,-3,-11,-19,-12,-34,2,-1,-15,-9,-12,8,-2,0,-14,6,2,-6,-22,-24,15,-6,1,-2,-26,-2,-12,-8,20,-9,12,-4,-16,1,-13,-8,4,-5,4,17,-14,1,-7,-20,14,16,7,5,-17,8,14,2,-12,0,-2,-13,-14,0,-3,-4,1,18,12,-5,4,8,4,-4,22,0,-3,3,1,-8,3,-7,0,-5,8,-2,-12,-2,-14,-14,-6,-7,18,-1,-9,-1,-25,-13,-13,14,5,-6,-19,11,-4,-10,25,12,14,-7,2,18,-11,8,0,4,6,1,-11,8,0,1,0,18,-8,18,-11,-3,-2,-4,-9,12,-3,15,2,-2,5,1,-19,4,-15,-11,-14,5,-2,-6,-7,9,9,2,0,-5,1,-8,0,10,5,-5,19,-8,-7,10,-11,-8,6,15,5,-8,-19,8,-5,12,0,2,-4,-6,-6,6,-1,-8,-5,1,-8,-1,-4,4,36,-18,0,6,7,-9,-4,20,2,1,-13,14,4,0,1,-8,24,-4,5,5,-10,-23,4,17,-11,-1,0,1,-6,0,9,-6,-11,-15,-8,-9,2,13,-4,-8,-10,19,9,-13,10,1,-18,-12,5,10,-10,4,3,-6,-20,-8,-5,-2,-5,-5,12,8,5,-1,-5,5,-16,-1,-9,5,-13,-15,-8,-5,-16,-8,-19,-7,-12,-11,-5,20,3,2,14,-9,-2,-13,-10,-22,-9,-3,1,-8,3,14,-20,5,-9,-1,-27,-13,-10,-1,-21,12,-6,-9,1,-5,1,2,2,4,-15,1,-12,-9,-14,-2,-16,20,-21,-1,-6,21,-2,-11,20,7,-7,10,-9,7,4,17,10,1,5,9,4,3,15,-18,-13,-5,6,-1,-3,-1,-8,3,-13,-1,1,8,-13,3,-9,-13,-12,4,-22,5,28,17,22,0,-28,-22,-25,19,5,4,4,8,-20,9,-25,-12,-5,10,-1,-18,-38,-11,-13,17,-3,0,-5,28,-4,23,-9,13,8,11,-4,1,-32,-14,-21,8,-12,6,-8,40,-13,-8,-15,-17,-2,-3,-8,-3,-15,4,-10,14,-13,7,-17,-19,-19,-14,-16,-5,21,26,8,-11,1,-1,-9,-6,-20,-7,-22,-16,10,11,13,-15,-8,29,1,-22,2,-2,-21,-3,-18,0,1,-4,4,1,7,-2,-9,-28,5,-12,-28,-10,11,0,5,-16,1,-1,-7,-10,1,10,2,15,2,4,0,-12,-4,15,-17,4,-21,7,-10,11,12,-19,0,-8,-21,18,-15,6,-15,2,2,-2,6,8,-2,-5,19,-12,-8,-2,-9,-4,-8,-11,-10,-4,7,3,20,11,11,10,21,-6,-6,-10,-4,-5,-9,-3,-23,-10,2,4,-6,-7,5,1,-5,5,-9,-14,-2,-5,-21,3,5,-27,40,-10,17,5,-12,-23,-7,4,-24,-9,3,15,5,9,12,19,24,-6,16,6,13,5,0,-4,-6,-34,-19,6,-3,-7,-19,-11,15,10,13,1,17,-15,10,1,0,-6,-9,1,-10,-1,10,-19,-5,34,20,-20,51,-4,9,8,-4,-19,-32,-9,-10,-13,10,-6,-16,15,-12,-17,24,21,-13,9,-7,-20,-22,8,-2,-29,-9,6,9,-10,-1,-14,2,6,-27,-9,-20,-3,31,2,33,6,-7,-17,-1,3,3,11,8,16,-15,1,-16,8,-10,-3,1,1,3,-3,1,-6,1,5,-6,8,-16,-4,2,17,-7,16,-11,-2,-11,-6,-13,0,-14,-12,-16,-12,9,-7,-14,-10,-5,13,-11,10,10,-11,-11,7,-12,-11,-18,-21,-1,-7,3,-4,-35,1,-10,9,14,12,-2,-15,-9,-9,-2,-20,-7,-8,11,14,-17,9,10,4,-17,5,-13,10,-12,-2,-13,-8,0,-1,-28,8,-6,-13,-8,-1,3,3,9,13,-5,-6,-9,11,-2,12,-9,0,25,3,-12,14,-5,8,-14,-6,-7,-17,-11,-24,0,9,-5,-10,5,-5,-27,32,1,-2,-7,2,9,-12,-1,-11,6,1,40,-8,-8,-7,-16,-6,-13,-5,-1,-25,5,1,14,-21,3,-17,52,-17,-5,13,-19,-10,-17,-10,-5,-19,-8,-3,15,-3,-18,-9,-6,-24,17,8,-2,-6,-38,-9,-8,-5,11,-18,14,-7,-33,-25,20,8,5,23,5,0,-3,8,-10,18,4,4,-1,4,5,-12,7,2,2,15,4,3,-8,12,-5,-7,-11,-4,11,-8,-7,14,4,-4,-6,-7,11,-19,-21,13,-1,3,16,10,-3,-13,-7,4,-9,-5,13,9,-16,12,-7,-7,-13,-22,-9,-9,4,-27,-16,-11,-4,-2,-31,-29,-6,-8,-15,-10,-10,-2,5,-7,0,-20,-24,-13,1,5,2,-23,-9,-1,9,8,-3,14,0,-3,2,-7,23,-11,1,-2,17,-5,-2,16,10,-9,-12,13,-11,-17,-12,-16,5,9,4,-14,-17,-4,5,-7,-2,12,-3,13,3,0,-9,-2,-5,22,-3,-21,-7,5,6,-1,-16,5,-19,-5,-7,-2,20,-12,2,1,-7,6,1,-22,7,17,4,-18,0,5,10,-16,2,-15,1,-14,1,30,2,0,5,12,-2,-6,-6,15,9,-7,1,-3,15,-8,1,4,10,10,-6,2,0,-10,-8,7,1,-32,-13,-13,4,-16,-8,-4,1,-12,-12,-15,-13,4,-6,1,-1,-21,-9,-14,-15,-2,11,-20,5,-3,-3,-13,-1,-7,-8,-13,-6,8,4,1,7,3,-15,16,16,6,0,16,-9,-17,5,7,5,8,-5,-3,-6,-13,-11,13,7,-2,12,3,1,11,-1,9,-13,9,2,8,20,0,3,-2,3,13,-2,10,-15,3,-12,2,4,-25,-14,-1,14,-7,-5,9,-6,-9,-10,1,23,21,-9,-4,-13,-11,-3,-2,-4,-12,4,-5,-4,-2,-1,-13,11,-18,-19,4,-23,-7,-4,21,8,-13,-4,9,13,1,-4,-3,0,-16,6,-4,-19,7,7,0,0,-12,-10,-6,-7,-7,-2,-13,3,-1,3,-2,-15,5,10,0,10,8,9,-6,5,5,1,13,-11,8,-1,14,-3,-6,-1,-3,-4,0,-1,0,-4,-4,-3,6,11,-9,18,14,-24,-16,13,2,-12,-1,14,-12,8,9,-2,-4,12,-7,7,32,-3,-24,-18,-5,-9,-29,6,4,0,-14,-5,-22,24,21,32,6,-13,-4,-11,3,-18,8,1,-2,2,-5,23,-4,-7,27,-15,-17,-23,2,-22,-5,-13,30,12,-5,4,0,6,11,-7,-14,-13,2,-11,-19,-2,-9,5,19,-5,-7,-8,-2,-13,-11,-6,-8,4,-5,10,-2,15,-12,10,-9,-11,-4,-9,-3,4,-23,-9,4,3,-11,-21,-7,16,4,-4,11,-8,-13,8,-2,4,-14,28,-17,-14,3,-13,-10,0,32,10,1,2,-13,-6,-11,11,17,13,-12,-8,-9,23,25,23,-9,20,-10,17,4,-2,0,-22,-5,12,-9,5,-8,4,10,15,-12,13,-15,-5,5,21,-5,-10,-2,18,6,2,0,14,-3,10,-15,-9,-1,-11,-6,0,13,8,1,-15,23,-11,-2,-17,-16,18,27,5,0,-16,13,2,-5,-14,-18,-25,11,-23,6,13,-19,-16,7,-25,-15,19,-5,13,-8,15,21,-1,-23,-7,7,5,-7,-11,1,-11,-22,6,-3,-1,10,-7,-8,-12,-5,2,8,-7,-9,0,2,10,-11,-7,26,7,17,-1,-26,1,2,7,4,15,7,0,-6,9,9,-14,-3,-11,-11,-19,-8,24,16,-4,0,-6,11,-8,-17,-13,-14,-4,-3,-23,-9,-33,0,-12,1,-3,0,7,-3,2,-25,-12,6,17,2,-6,-5,1,23,-20,0,-10,-11,5,-24,-8,3,-29,4,-20,1,-2,-1,2,8,-12,3,-1,5,-14,-11,-14,8,-12,16,-5,-15,14,-10,20,2,-12,7,-12,-14,-12,-14,7,-8,6,6,-1,-4,8,-6,-7,-10,-3,10,-15,10,-4,26,-24,-4,-10,-22,-18,9,-10,3,-24,2,-13,5,-1,-4,-5,8,11,-3,-2,-8,14,-5,0,-6,-5,9,-23,1,-15,4,-16,-12,-7,2,10,-16,7,-9,-5,-13,-10,6,0,9,2,9,-4,4,-20,16,4,-11,19,-12,2,-1,-2,25,2,9,11,10,22,-20,-16,2,-3,-9,-6,-5,4,16,-7,4,8} + +#define CONV3_BIAS {18,36,-46,-45,64,8,13,-19,28,1,14,-57,23,20,-2,32,48,-11,85,73,-7,52,125,33,125,13,92,-72,89,-1,11,70} + +#define IP1_WT {38,-13,5,-20,15,-4,-3,13,36,-19,10,14,-18,-17,-11,15,25,-18,-16,-9,-9,-8,-4,21,-11,10,4,6,7,9,-14,-9,17,-6,1,8,18,5,14,12,0,2,9,-8,-3,15,-7,2,-18,-6,-26,20,-6,9,10,-2,12,11,-10,-7,18,-12,-12,41,18,6,11,-3,-1,2,11,24,1,22,9,6,4,33,-18,-12,-26,-22,7,3,-2,-8,-3,-8,19,-16,28,-18,1,2,16,-26,-30,-18,-12,-30,9,9,-7,13,7,12,-11,16,-2,-1,14,-10,15,11,4,-15,-5,-12,7,22,-15,-12,-7,1,22,1,-12,29,3,1,-3,-12,-5,-7,-1,22,20,-6,-20,25,3,5,1,2,-17,-2,-2,4,4,0,15,-19,6,-7,-20,11,-18,-26,14,1,0,-9,4,-8,11,-16,-1,15,-16,-7,17,-13,-10,1,2,8,14,-2,-16,32,-10,-10,12,-16,9,-11,-10,-15,3,9,-30,58,4,-20,6,-10,-6,11,0,-1,13,14,-14,0,-3,-12,-4,22,2,2,14,1,10,1,-12,-8,17,-12,-1,-10,-9,-9,-2,11,-28,-25,-6,-5,4,10,-3,11,6,16,13,-3,-6,5,35,-12,-1,5,26,-3,-29,2,-4,-6,-15,-6,-11,8,-8,-12,1,-13,-2,7,12,-16,7,-5,11,20,-6,-2,42,21,36,-4,-12,1,-4,25,6,0,-12,5,28,-5,1,5,-15,1,-2,1,-5,-4,-10,41,-14,9,-11,-23,0,33,0,-9,13,-9,-3,6,1,4,1,3,-9,4,2,-16,-2,21,-32,-9,6,-12,-2,3,-7,29,-8,-27,10,-3,-3,10,-20,-3,12,0,-4,-4,-11,7,-6,8,2,-11,6,7,-6,-13,-2,-4,17,-11,5,0,11,1,4,-6,-17,-9,-25,7,4,4,21,17,14,-5,4,-12,-17,5,46,-7,17,-10,22,0,-9,-13,-13,12,-4,1,-4,-17,-2,-7,-14,-14,-14,7,9,-11,-2,3,6,15,4,6,3,8,20,10,16,-4,-20,-10,25,7,-4,5,3,1,-2,-2,8,2,9,-2,-6,2,-5,-11,4,1,24,-10,-11,11,-17,-4,-5,-14,11,2,2,0,10,13,-31,9,-14,13,19,21,-29,-10,4,9,-33,3,9,0,-13,-16,-1,-3,-4,20,3,-2,12,-6,-38,-16,-17,-8,10,12,18,-10,-8,16,25,8,-4,-1,4,-12,-6,-8,-2,11,-10,2,-16,-11,40,-17,11,5,4,-21,-1,25,33,-5,12,-7,1,6,2,-4,5,-17,17,12,-18,3,6,-8,-9,33,-5,10,-22,-3,16,-3,-22,29,45,-5,-5,-19,11,13,-10,-12,-15,8,1,16,14,-3,-4,7,-9,-5,-6,1,2,5,-15,-32,-11,-9,8,-8,9,3,-18,-4,23,12,4,-14,36,3,-4,41,14,-3,-2,2,-3,12,4,-4,8,-15,-2,7,8,8,3,2,4,11,-1,10,-26,12,-7,11,-16,-1,28,-25,19,8,-5,-8,-3,-8,-4,16,-8,-14,-9,3,16,8,8,8,4,-12,3,-6,-12,3,22,-7,-21,-11,-14,-4,-1,7,-10,-3,6,13,-14,61,-10,-14,-15,-3,13,5,-30,-20,-15,-25,5,10,-9,12,8,-1,-7,5,-17,-1,-13,0,11,-6,60,5,0,-20,6,21,-22,6,-12,-9,1,-3,1,-19,-21,-7,-4,7,-15,-6,-9,11,-5,-5,12,-12,6,8,15,2,-6,-23,-23,0,-4,6,-8,-9,-21,31,-5,3,-5,1,5,-1,-7,-6,30,-14,-3,11,11,5,-4,0,15,-7,-8,-3,-4,2,-15,-4,-20,-7,13,-10,-15,-19,-25,-16,76,-15,17,26,2,7,-16,-17,-14,-1,-9,21,-4,-5,2,42,-6,2,-8,-6,6,6,-5,3,-10,-2,6,14,-12,0,4,22,26,-5,-12,-1,-4,28,19,2,11,-22,27,-20,-6,15,-9,1,-10,-9,4,-6,-5,4,0,2,5,-11,-9,-11,-6,16,22,-4,-3,2,1,-7,11,6,6,8,-13,-9,-16,7,1,7,-16,-15,-2,-3,11,3,-12,6,-17,-15,18,-5,11,8,-10,-8,22,5,-6,-4,-17,-10,-2,12,-16,2,-7,-5,12,4,-18,1,9,-14,-5,1,-4,13,-6,-2,11,-8,4,1,-8,-8,0,1,6,-4,23,4,-3,-7,1,20,-11,-8,1,-14,3,12,10,-6,-5,44,11,5,-2,-3,24,3,6,2,1,0,-13,7,2,13,-9,7,9,2,-14,2,27,-14,1,-10,3,1,23,-10,6,4,-5,12,11,-7,-3,-7,1,-11,-9,12,-21,7,-10,-9,-14,17,-2,-2,-4,2,24,-8,-12,-4,4,14,5,21,12,-7,0,-3,3,-12,0,2,5,-5,11,-4,6,-2,33,-10,-2,15,-6,-10,12,-10,5,6,7,-2,11,3,1,16,2,-11,-6,11,-10,-5,-3,6,-7,-27,5,1,-1,-2,-2,3,-18,0,4,-10,4,1,-3,-10,5,-7,13,-16,-15,22,2,8,-2,16,23,-11,19,-3,-12,-11,9,-11,-24,8,-17,-5,-3,-22,6,2,8,12,-17,10,4,-1,-6,0,-17,5,5,-1,-22,1,1,3,31,-7,6,-3,5,6,8,-4,-1,-11,11,-12,-10,31,-8,-2,-10,-9,28,2,-10,-8,-19,6,7,4,-16,17,-5,9,-17,-11,-3,13,15,-14,-5,10,-19,0,-2,7,-6,1,2,13,3,4,-14,-1,-14,-7,-11,46,18,2,6,-10,-18,55,14,-4,-1,3,7,-12,23,19,8,0,-12,9,-4,-11,-10,-21,7,9,4,-16,-2,-6,18,-14,-15,-9,-11,-10,-8,3,4,-21,3,-9,9,13,0,19,8,-12,-8,-30,1,6,6,9,-23,-1,3,-25,39,-27,11,-19,8,-12,7,17,0,10,-7,-5,-2,19,-3,-12,-20,9,4,18,4,4,10,-6,10,-20,1,6,-3,6,4,5,-7,-3,-6,-8,5,16,14,12,-20,2,-6,9,-14,-2,-26,2,12,12,-15,-16,14,6,3,-8,-5,-1,-4,0,-12,1,6,6,1,8,-4,-9,-13,-5,-16,42,-11,7,-8,-21,-2,-5,-13,-15,-11,-7,5,-11,15,32,-3,-10,6,-10,11,-8,10,19,-17,-28,-1,-14,-8,-12,-5,2,-12,3,31,5,-19,33,3,10,-9,-1,4,-15,1,12,0,-8,-20,2,2,-13,1,-5,11,0,-17,1,-8,5,4,3,15,27,4,-2,5,-36,2,-2,-16,0,12,-5,-3,6,31,-12,-14,0,-8,-1,-14,8,29,-8,-2,5,-3,1,-12,-4,10,12,-4,-8,19,-1,-15,-1,9,14,2,-16,-2,15,3,10,-11,-5,-2,2,9,2,-12,4,11,0,3,2,-10,-11,15,1,0,-23,3,-3,-23,0,-6,-12,-1,11,-12,-13,2,-4,-5,-3,17,0,0,0,9,-3,4,5,-9,-11,4,-5,7,-9,-1,-9,11,-7,-16,-3,-9,-7,-11,8,-2,-6,3,11,3,-4,-7,-14,1,12,-12,-1,-9,15,19,8,5,2,26,7,-19,-7,-17,-4,-7,-1,33,-15,1,-8,1,-4,-6,-5,-3,-14,10,-1,-2,12,6,8,-7,26,-6,-12,6,0,31,-9,19,-11,-2,14,-6,16,-1,1,5,6,-4,-13,4,11,-6,2,7,-6,-15,2,-3,7,-3,-13,2,-5,-6,6,4,-4,11,-2,32,-3,12,0,20,-1,-8,-1,-10,5,18,-37,-13,-5,16,-3,11,6,10,-3,-2,9,1,-17,1,-13,4,4,5,-6,2,1,11,-18,-7,-11,11,-2,-9,-3,7,0,-16,6,3,3,9,-9,1,26,-9,3,-6,-12,3,1,17,1,-5,4,2,3,-22,6,-18,-18,-17,-15,27,6,9,5,9,12,-9,-2,-13,-3,-12,10,0,-3,-8,-3,8,7,16,1,-9,38,14,-9,-8,0,-8,6,-11,-19,-3,-9,-18,13,5,-5,13,-4,-2,-8,-15,5,42,-14,-4,0,0,-3,12,-2,-5,5,18,-39,13,-6,12,7,13,6,8,0,7,2,-49,23,-15,-11,23,3,1,11,-1,-3,7,-1,-26,24,7,-2,-11,3,15,2,14,3,-5,21,-19,-17,4,-4,-16,-18,9,-11,25,1,5,-7,7,-2,-15,0,-5,6,10,-2,5,7,-12,-8,-4,10,16,0,-32,7,-7,-26,-24,20,-5,4,-6,2,-5,-4,-3,6,13,-17,10,14,-3,-11,-9,15,4,1,-11,-8,-10,0,20,18,19,-5,22,-11,23,-2,-8,5,9,11,2,-11,31,-14,0,-14,1,11,-6,28,30,-7,-7,9,14,-6,8,1,-5,22,17,-19,-18,-13,5,18,3,11,-1,3,3,-7,4,-11,-3,-9,-30,20,-18,14,8,11,-1,23,-13,5,-11,0,-8,-4,-5,-9,10,2,2,0,17,14,-21,25,-18,-2,-8,0,1,0,-1,-29,17,-4,-18,18,-10,7,9,3,-3,0,-5,23,18,8,9,9,17,-14,4,10,-10,3,-13,-4,-3,6,-9,21,-25,2,6,-2,-26,23,-9,1,20,8,9,-12,-2,3,-6,-2,-10,-6,5,-3,23,-7,14,-7,-14,3,-7,-4,-16,-6,13,-3,-5,-5,30,-6,7,7,6,5,-23,12,8,-18,-14,-6,23,-14,-5,4,-1,19,18,1,-6,6,-14,-2,9,21,5,5,-1,2,2,-8,4,-5,2,-8,-14,-1,-3,15,13,6,-10,0,3,1,5,-12,12,-6,10,-7,16,3,22,10,-6,25,-19,-2,-11,-15,8,-14,6,-9,10,-3,8,5,-2,-13,-10,-4,-5,0,-1,-5,-1,-16,-3,3,6,4,22,9,17,-2,-6,-16,25,1,4,4,23,-10,0,-2,-26,10,2,25,22,-1,0,1,-16,-5,-7,-10,-22,-14,10,-7,15,31,15,-17,-7,36,12,-22,-3,-7,10,8,-2,2,7,-4,8,2,-11,6,17,-15,2,-22,-33,-19,19,-23,-8,1,9,-10,10,2,4,5,-6,17,6,0,11,-8,-10,-18,-6,-2,21,3,-11,-1,4,6,2,17,15,-13,-1,7,27,-11,-1,-2,2,-9,2,5,3,2,-3,-3,3,18,12,-1,11,-7,24,-7,-5,-9,16,3,6,-5,8,7,1,-12,-2,15,9,-18,1,-1,-12,0,-5,5,9,-17,31,-4,-8,-10,-12,9,-2,9,4,-18,12,-11,-6,5,0,3,16,2,1,10,-16,-4,9,-6,-3,-2,9,-10,-16,12,5,9,-6,31,11,-2,-16,-12,10,3,1,-9,-8,10,4,-7,-6,-15,6,-10,4,17,-24,17,2,-33,9,-23,-1,-1,32,-5,16,-8,3,12,21,-1,-24,-1,-24,27,-3,-8,18,-1,-10,-7,45,-39,-18,2,-4,-6,5,5,-19,34,15,36,11,8,-7,-14,-11,0,0,-11,2,6,-18,-25,-17,1,-3,-15,-31,37,-9,-14,10,-24,1,-16,1,13,-21,-11,-5,15,5,6,27,4,27,24,-5,-19,37,-19,-18,-10,-17,-17,-16,-1,18,14,11,12,6,35,-17,35,-14,-12,-5,7,1,-8,-9,10,-8,-14,1,23,1,-24,-7,-4,-20,49,18,15,8,-12,-30,10,0,-7,-8,10,-3,-2,6,-25,-22,-10,-10,0,1,9,-18,-7,6,-11,11,-6,7,-12,1,-16,-15,-10,22,-5,86,-12,16,-41,-11,-1,-1,12,26,11,-7,12,-20,42,6,8,16,6,-27,4,2,-24,-20,7,43,-15,-5,-2,-8,3,-15,12,-16,-4,5,-5,1,2,9,3,-17,19,4,-11,-1,8,0,-13,6,-10,15,12,-28,-14,55,-4,13,16,-42,-5,46,-10,-8,-3,-14,-13,-15,0,26,-7,-8,25,34,-12,-34,22,-10,-9,-17,-5,11,-11,-14,-6,-6,-9,0,14,7,-14,-19,7,-8,37,-13,-7,-7,17,-16,19,23,-14,-13,-7,-18,9,18,-20,-25,1,-22,-26,14,-28,16,-17,-6,4,6,-26,-6,-5,-6,-17,-5,-5,19,13,22,-16,-14,4,-8,-15,3,2,8,7,-3,-6,-2,17,9,5,1,-12,-14,0,-14,-9,11,15,39,-5,-25,2,-18,-5,4,-1,23,18,-9,-7,2,22,-10,10,-13,37,14,-11,-9,-6,-5,14,-6,-9,-8,0,-8,6,28,-7,7,25,-13,-6,25,-3,7,-11,-14,-8,-7,-14,15,10,6,11,33,-2,-23,-16,10,14,-3,8,-10,0,-14,17,7,2,24,-6,-9,23,-1,-19,-7,14,-14,-4,-2,6,2,5,6,-1,-11,9,5,-7,9,-7,-6,14,-14,-6,3,9,0,-1,-4,2,14,-22,-11,18,8,-36,2,-1,9,-14,-4,2,-8,4,-1,5,-8,29,-16,10,-1,1,-8,35,1,10,4,-17,-13,15,-4,0,0,22,-31,4,18,-7,0,-2,-11,-15,29,10,3,7,3,5,-16,26,-6,33,-8,8,2,-7,9,12,11,10,11,10,2,-4,-17,9,-16,-29,-7,-1,-19,29,-11,0,3,-3,1,26,23,-3,7,-4,19,-5,-29,20,21,7,-4,3,-23,-5,-11,3,1,-27,-5,20,-12,22,-5,7,14,-6,-15,-16,5,-19,-7,11,-2,-16,-7,-12,-12,-21,-9,3,-9,1,-14,11,-11,-9,6,-27,-13,-7,-6,4,49,-7,4,9,-13,-12,56,4,11,14,-15,12,19,-4,-25,11,-17,-22,15,4,-6,-8,2,-5,0,-11,1,-23,-6,3,21,-12,-1,-7,-22,-23,-1,19,1,-7,-10,-20,5,-8,5,-21,-1,-2,13,-6,-11,5,-9,-9,-13,18,-3,2,5,-12,-6,30,-13,-4,-18,20,0,8,-8,8,4,0,-7,6,5,6,29,9,42,-2,-12,7,14,-10,-13,1,-1,-17,8,-19,4,-17,-13,-20,8,25,-1,-17,19,10,5,10,-6,3,-12,14,30,-6,-11,-8,-4,-17,-12,-9,-12,41,-16,-21,-2,-15,22,2,9,2,-5,5,2,22,-8,-13,-19,56,-16,6,33,-4,35,-3,10,-15,13,-11,-5,11,0,1,-5,3,-6,21,-12,-6,-16,7,15,-6,-5,-15,1,-8,1,-3,-17,-29,-2,1,-12,9,-8,-8,-8,30,10,18,17,-34,10,5,2,17,-14,-6,-3,0,-22,6,20,-32,-5,-21,-16,8,-8,1,-2,16,-3,-6,-20,-13,5,3,10,13,-9,-13,11,0,4,5,-10,-9,5,-19,10,-4,-11,-3,-12,-4,-11,-7,-21,-30,-10,6,14,8,-2,-1,16,1,19,-15,-14,4,-1,-4,4,-7,12,-13,-12,29,-1,3,0,2,4,-11,-3,-3,-22,4,-6,3,6,9,-25,16,-4,-14,36,3,5,2,-15,-4,1,-11,13,-4,-3,-4,0,-4,-3,44,14,-2,-7,-7,13,-1,-6,-9,2,0,28,-13,-8,-6,1,-5,-6,-9,6,6,10,-3,6,-2,12,-15,5,0,0,17,-2,-18,4,6,2,3,-7,-2,-10,-19,-4,-7,-3,-4,3,9,-17,10,-4,-10,-12,-2,-10,7,-22,-7,-7,1,7,-2,6,-8,-8,7,18,9,-5,3,-6,-4,-10,4,-14,-11,-7,9,13,1,-5,-15,27,7,-4,-13,0,-9,11,8,11,0,-1,0,-4,9,5,9,-15,5,-10,27,-8,6,11,15,-11,13,-25,-15,-16,-9,9,-4,14,-7,-6,-2,-2,3,2,-21,-8,-1,-22,-5,-27,-6,4,9,7,13,0,-7,-2,-8,-12,5,6,-5,-8,-7,-2,-5,8,7,-16,1,16,1,4,0,-6,11,7,-14,-6,15,-4,17,-5,-1,5,24,5,5,-14,11,-8,-6,-18,-3,-14,-13,3,-4,-10,8,-7,19,-2,4,6,36,22,8,18,-20,-8,10,-7,1,-12,8,-5,4,-8,7,-2,-3,-7,-6,-16,0,-9,11,10,3,-1,-9,-6,0,-3,-8,-11,2,-13,19,-1,-22,4,0,-6,0,-10,-12,12,7,-12,-5,-17,3,-12,-4,12,-5,27,19,-11,10,-6,13,7,1,-1,27,-8,12,7,6,-2,-6,6,-7,-16,24,-10,-2,-12,-11,13,-10,-5,-19,-27,-14,-11,1,-1,-15,-2,18,-19,-10,3,3,-3,19,9,-11,-8,-5,24,-3,2,20,-18,-24,-5,11,4,14,14,2,-9,8,0,-9,-12,-2,12,-2,17,-19,-17,4,16,17,-10,5,-5,14,15,5,20,-10,3,-8,24,-16,-4,-1,4,-20,-10,-20,-5,-2,5,2,5,6,-22,-18,3,-8,-7,5,5,-3,12,0,18,-8,12,-2,13,-4,2,3,-4,11,-15,-13,-14,11,0,-4,-10,-10,-22,17,25,20,-4,-10,-5,34,-2,29,3,4,-12,-8,-11,9,-10,13,-16,-5,3,-2,6,8,-4,-5,-10,1,-2,-6,15,3,14,-7,-5,6,-5,-2,13,7,-9,-13,-10,14,-7,-4,6,-2,8,-15,29,15,-14,15,-8,48,-2,-13,-3,-8,-6,-20,12,-3,6,-9,-16,-4,-8,-8,31,-6,11,-3,0,-10,-10,-6,17,6,-12,1,18,-10,1,9,2,3,2,-27,17,-5,-8,-6,-7,-2,6,-15,-12,-12,13,-12,-10,1,-6,10,13,7,0,-13,8,-18,0,25,7,-7,4,-8,-5,1,9,-3,-2,-12,-3,-4,-22,-7,4,6,18,1,1,-11,-7,7,5,-3,15,-6,5,10,-22,11,-9,-16,10,-6,6,2,21,-2,-1,2,12,-10,-2,-4,5,3,20,3,10,-9,-7,-4,-10,12,-14,-6,2,1,-8,7,5,0,-9,-4,46,-14,4,12,-13,3,2,0,8,4,31,-13,6,-7,1,-14,-2,8,4,-12,9,-13,-7,5,4,1,10,-7,-14,-6,-7,10,15,1,-4,-4,11,-2,-3,-13,15,-4,-11,-8,4,2,7,10,-1,-7,37,-15,-3,-7,-16,2,13,11,-3,-23,3,-19,-5,-2,-21,9,-8,1,0,8,10,-4,0,-4,-17,11,6,9,-22,12,-11,11,-1,14,10,22,2,1,6,-11,-7,-4,-4,5,-5,-13,9,-9,-5,-7,-9,-17,1,9,-2,3,0,7,-1,16,-5,14,-4,3,-6,-12,8,16,1,7,-14,1,0,-4,9,-14,1,1,7,13,-3,11,7,9,5,-12,5,-8,0,-2,18,-15,-9,-5,-13,12,-7,-5,2,13,-11,3,2,19,21,-16,-8,12,13,7,4,2,-18,-4,-5,-6,-16,-12,-16,0,4,9,4,-10,9,0,-7,10,-8,6,-5,6,-20,-14,-6,-5,3,-23,-10,-4,18,3,-10,6,-7,15,-8,7,0,-22,3,-21,-2,5,-11,33,2,-6,6,-13,-7,14,1,10,0,13,-20,-16,-15,21,-16,16,5,40,5,1,15,-10,8,17,2,-21,-24,3,-9,5,3,-4,-6,-7,-13,-4,0,2,-23,28,-4,0,6,0,3,11,1,-13,-6,-8,16,-3,36,2,8,6,-12,20,6,8,9,-7,-5,6,3,-1,16,-14,-10,-1,40,-16,-5,12,26,-1,5,-3,23,21,-14,-5,0,2,-3,15,6,-13,5,-14,-4,-1,-16,-13,-16,20,-1,23,0,-38,-2,-10,17,16,-9,-24,-9,7,17,9,-8,-10,11,0,-26,6,-5,-5,-8,-17,1,1,10,0,-11,-16,-18,-10,5,11,14,7,-22,5,-1,-1,-9,1,-5,18,-17,17,-15,-6,-7,31,-4,-4,-1,4,6,-2,-4,-11,1,-15,-3,-5,11,1,1,-16,-6,-1,7,4,-5,18,0,-9,2,17,-14,-15,-8,-25,-7,-9,13,14,5,12,-4,31,-6,2,-1,0,7,3,-18,18,-5,-7,14,-13,-11,-6,-10,-6,2,-16,-14,26,9,-3,28,-9,9,7,-2,-2,-15,-1,3,9,-6,-24,-2,2,-7,-1,3,3,21,-3,3,-7,-10,18,-1,-7,14,1,22,-10,-18,-5,26,7,-6,-6,-8,-6,-2,7,2,-18,10,9,9,3,-2,5,-11,16,27,-5,-5,-16,-12,-14,-3,7,2,-16,-17,-1,-10,7,0,-8,22,-9,7,-5,-1,5,4,13,-6,8,7,-10,-2,-5,-8,4,-1,-2,7,-16,0,-2,-12,3,-10,-3,-2,1,-8,-1,-13,5,5,9,16,-4,14,6,12,4,7,29,14,3,-4,-6,-3,22,-23,-5,15,-28,5,2,8,-12,5,-18,8,5,-3,-18,-8,4,-17,18,5,-6,-8,-12,0,-5,-2,-10,1,6,-17,6,10,-8,-6,17,2,-5,5,11,1,-5,-4,-26,-3,14,-10,-4,3,-11,-11,-16,-3,-1,-5,2,9,2,24,17,8,4,-4,38,16,14,6,-6,-11,-2,14,-10,11,-11,12,4,-8,-8,-26,-13,13,-8,-14,21,1,-8,10,11,22,-17,7,-4,-7,-10,0,-11,18,9,5,0,10,-17,0,-2,2,15,1,-2,-7,-2,2,17,-6,-14,-13,7,11,3,1,14,0,10,8,-11,20,-19,0,-4,16,8,-13,3,4,-1,4,0,29,-12,-24,26,4,11,-14,-12,-10,15,15,-5,1,6,-3,-8,3,-13,-15,7,-6,1,-3,-11,2,-18,14,-1,-17,-2,12,12,-6,12,-23,-13,9,-18,4,0,5,-3,-14,20,7,-6,-6,-11,10,-7,-6,6,-24,4,-18,26,-23,-2,18,-14,-13,-3,-10,28,-4,30,-22,9,-13,-17,11,-19,-9,-12,14,2,-6,25,27,0,1,-7,-17,-6,-16,4,1,13,-12,-6,-6,-11,2,-12,-22,17,-5,-15,-7,-4,5,15,35,0,-3,10,-14,13,-16,4,7,-5,12,-1,11,-2,-23,-9,-3,10,-8,-3,-5,9,12,-3,-12,-4,6,3,-26,-7,5,-24,-11,-3,-9,23,-9,-32,-16,3,30,0,16,7,5,-1,0,-15,-7,40,-20,-6,-9,-2,-13,-7,-2,-2,-4,0,-22,-4,12,-14,5,-1,-3,-6,-8,2,41,32,-10,-6,3,-10,-15,-16,10,-12,-7,-12,-5,-13,51,4,-9,5,-16,15,2,1,-10,40,-14,9,36,1,-16,-7,-3,6,5,25,23,-15,-6,-14,-11,-4,-2,-9,3,-2,17,-5,-4,0,10,17,18,-1,1,-17,3,8,-6,6,15,-1,2,-14,5,-10,7,-5,11,-1,0,-10,3,13,1,-10,16,7,-8,-6,-6,-13,-3,9,20,4,2,-13,-9,-22,-8,-2,-16,12,5,-16,7,-15,9,6,1,5,2,8,9,-7,15,-2,7,35,-11,0,-2,1,1,-9,17,-7,7,-7,-20,-8,11,-2,6,9,0,10,-4,-11,29,7,0,-2,-10,-15,-3,-1,-4,4,-15,-27,1,12,22,-10,-3,20,-17,19,7,-3,5,37,-4,9,18,-3,-7,-12,-3,15,2,0,16,-11,-12,7,8,10,-2,-15,20,-14,2,13,-1,6,4,13,17,15,6,8,-6,9,-7,6,16,4,-2,-3,-7,14,-14,2,-3,-10,-7,-14,4,8,-3,10,0,12,-4,4,5,-5,-10,17,42,-9,2,5,2,5,3,-3,-14,12,2,6,4,-41,-6,2,-3,9,3,0,-7,-8,7,1,-3,11,-3,0,-11,4,2,-3,23,-11,-3,-8,10,-21,26,12,-9,16,-8,16,2,-8,13,-13,-8,-16,-18,18,-19,8,-3,2,-6,-21,8,1,-13,-17,-14,-7,6,18,-21,-36,16,8,20,-13,-8,-16,8,-9,2,-3,2,-5,-5,-7,-3,-12,-4,0,3,-7,-5,-9,12,17,-16,-6,-18,-19,7,25,-12,-17,9,1,-14,-3,-14,6,4,-17,-5,-1,-13,-7,-4,15,-6,5,1,-5,1,-4,-2,1,3,9,-28,-9,-28,-10,28,-3,-12,-6,24,6,-5,-7,-6,1,5,1,38,-34,-3,-14,-15,14,-4,37,2,-8,-21,-21,-6,-13,1,6,-46,-12,-8,-5,5,10,3,-15,28,-10,4,-4,-12,2,1,5,-13,10,19,-12,2,7,-8,-3,0,-13,-33,-5,10,0,13,-2,-2,1,-21,-6,6,-19,-3,14,-21,9,7,6,23,-1,-23,-13,8,-2,16,1,0,-4,11,7,5,-6,-11,-10,0,1,20,6,12,-2,-1,-5,20,-14,5,44,4,1,-7,-7,10,1,-12,22,6,1,10,-6,-9,4,3,3,0,5,-1,0,0,13,-10,-1,-14,13,0,8,11,-14,-15,19,-11,-4,-3,-15,2,4,-9,37,11,-28,-4,-6,-4,-2,-17,-3,-2,-5,-28,19,15,-8,-30,-1,-13,4,6,-3,8,-9,18,6,-2,-24,-14,-13,-16,3,12,34,8,9,0,-3,-9,18,-13,0,-8,-11,19,-1,15,-6,37,7,-12,-1,11,-2,-12,3,-3,-29,2,-10,0,-7,36,-18,-10,-4,-9,0,3,-1,12,-8,-6,-14,13,18,24,12,-1,-4,40,3,-10,10,4,-3,21,14,13,-2,11,12,-5,-11,-6,11,-2,18,7,4,-3,-3,-2,10,6,6,6,-11,9,-14,-14,6,17,11,0,0,1,-1,8,-3,1,-3,5,0,14,-3,4,12,3,-4,-1,-19,-9,-6,3,-1,-1,-7,8,7,10,-14,10,-19,-7,3,10,-8,-2,-1,2,-7,-8,-7,2,26,2,17,-3,5,0,6,4,32,-3,-4,-3,-13,-11,-7,-10,12,4,11,33,0,-12,-10,11,5,16,-7,9,-4,-4,-16,-8,-8,14,2,9,-6,-5,-11,-6,14,-13,-6,-5,-8,-7,-3,-11,28,9,8,6,5,10,-11,-8,3,-23,-16,1,12,-14,0,-2,18,3,-10,5,25,9,-20,0,15,-3,1,4,1,-10,-7,-7,16,23,-7,21,0,-14,2,3,6,-14,-3,-15,-5,-15,-4,-8,14,5,4,-19,4,-6,-18,-8,15,-2,8,-4,3,-6,-5,-11,14,16,-10,-12,-3,-10,6,-1,-6,-9,12,-4,-9,-8,-1,-4,30,-4,24,-11,16,-2,7,6,27,5,-10,-2,0,17,-8,-14,-7,-10,3,27,29,-19,-11,-5,2,-10,-1,-14,2,-2,0,-9,1,-2,23,-23,15,-8,-12,21,4,14,-6,-1,-11,-1,10,-5,11,16,-3,9,35,-7,2,1,6,-4,-11,-7,-14,-3,-8,18,9,12,7,-12,34,-1,-27,9,11,7,-9,-8,9,6,-9,-4,7,-4,-10,10,10,-11,6,-7,4,-11,-6,0,-4,-1,10,-2,15,-13,13,-31,24,1,-13,-19,8,-2,-5,7,-4,10,-4,-10,-10,-10,-8,-1,-10,-8,-3,1,-9,-3,1,1,-11,-2,6,-10,34,-5,12,-15,34,-1,-20} + +#define IP1_BIAS {30,-121,-51,77,40,20,46,-35,28,-33} + +#define CONV1_BIAS_LSHIFT 6 +#define CONV1_OUT_RSHIFT 9 +#define CONV2_BIAS_LSHIFT 4 +#define CONV2_OUT_RSHIFT 9 +#define CONV3_BIAS_LSHIFT 1 +#define CONV3_OUT_RSHIFT 7 +#define IP1_BIAS_LSHIFT 1 +#define IP1_OUT_RSHIFT 8 +#define INPUT_MEAN_SHIFT {125,123,114} +#define INPUT_RIGHT_SHIFT {8,8,8} diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/readme.txt b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/readme.txt new file mode 100644 index 0000000..75b6e01 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/cifar10/readme.txt @@ -0,0 +1,4 @@ +CMSIS NN Lib example arm_nnexample_cifar10 for + Cortex-M4 and Cortex-M7. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Compiler/EventRecorderConf.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Compiler/EventRecorderConf.h new file mode 100644 index 0000000..5958233 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/Compiler/EventRecorderConf.h @@ -0,0 +1,44 @@ +/*------------------------------------------------------------------------------ + * MDK - Component ::Event Recorder + * Copyright (c) 2016 ARM Germany GmbH. All rights reserved. + *------------------------------------------------------------------------------ + * Name: EventRecorderConf.h + * Purpose: Event Recorder Configuration + * Rev.: V1.0.0 + *----------------------------------------------------------------------------*/ + +//-------- <<< Use Configuration Wizard in Context Menu >>> -------------------- + +// Event Recorder + +// Number of Records +// <8=>8 <16=>16 <32=>32 <64=>64 <128=>128 <256=>256 <512=>512 <1024=>1024 +// <2048=>2048 <4096=>4096 <8192=>8192 <16384=>16384 <32768=>32768 +// <65536=>65536 <131072=>131072 <262144=>262144 <524288=>524288 +// <1048576=>1048576 +// Configure size of Event Record Buffer (each record is 16 bytes) +// Must be 2^n (min=8, max=1048576) +#define EVENT_RECORD_COUNT 64U + +// Time Stamp Source +// <0=> DWT Cycle Counter <1=> SysTick +// <3=> User Timer (Normal Reset) <4=> User Timer (Power-On Reset) +// Selects source for 32-bit time stamp +#define EVENT_TIMESTAMP_SOURCE 1 + +// SysTick Configuration +// Configure values when Time Stamp Source is set to SysTick + +// SysTick Input Clock Frequency [Hz] <1-1000000000> +// Defines SysTick input clock (typical identical with processor clock) +#define SYSTICK_CLOCK 100000000U + +// SysTick Interrupt Period [us] <1-1000000000> +// Defines time period of the SysTick timer interrupt +#define SYSTICK_PERIOD_US 1000U + +// + +// + +//------------- <<< end of configuration section >>> --------------------------- diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM0/RTE_Components.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM0/RTE_Components.h new file mode 100644 index 0000000..73f80ad --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM0/RTE_Components.h @@ -0,0 +1,24 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_gru' + * Target: 'ARMCM0' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM0.h" + +#define RTE_Compiler_EventRecorder + #define RTE_Compiler_EventRecorder_DAP +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_EVR /* Compiler I/O: STDOUT EVR */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM3/RTE_Components.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM3/RTE_Components.h new file mode 100644 index 0000000..1f91822 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM3/RTE_Components.h @@ -0,0 +1,22 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_gru' + * Target: 'ARMCM3' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM3.h" + +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_ITM /* Compiler I/O: STDOUT ITM */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM4_FP/RTE_Components.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM4_FP/RTE_Components.h new file mode 100644 index 0000000..3df85a0 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM4_FP/RTE_Components.h @@ -0,0 +1,22 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_gru' + * Target: 'ARMCM4_FP' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM4_FP.h" + +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_ITM /* Compiler I/O: STDOUT ITM */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM7_SP/RTE_Components.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM7_SP/RTE_Components.h new file mode 100644 index 0000000..04bee02 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/RTE/_ARMCM7_SP/RTE_Components.h @@ -0,0 +1,22 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_gru' + * Target: 'ARMCM7_SP' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM7_SP.h" + +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_ITM /* Compiler I/O: STDOUT ITM */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/arm_nnexamples_gru.cpp b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/arm_nnexamples_gru.cpp new file mode 100644 index 0000000..efb3257 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/arm_nnexamples_gru.cpp @@ -0,0 +1,221 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2018 Arm Limited. All rights reserved. +* +* +* Project: CMSIS NN Library +* Title: arm_nnexamples_gru.cpp +* +* Description: Gated Recurrent Unit Example +* +* Target Processor: Cortex-M4/Cortex-M7 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of Arm LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +/** + * @ingroup groupExamples + */ + +/** + * @defgroup GRUExample Gated Recurrent Unit Example + * + * \par Description: + * \par + * Demonstrates a gated recurrent unit (GRU) example with the use of fully-connected, + * Tanh/Sigmoid activation functions. + * + * \par Model definition: + * \par + * GRU is a type of recurrent neural network (RNN). It contains two sigmoid gates and one hidden + * state. + * \par + * The computation can be summarized as: + *
z[t] = sigmoid( W_z ⋅ {h[t-1],x[t]} )
+ * r[t] = sigmoid( W_r ⋅ {h[t-1],x[t]} ) 
+ * n[t] = tanh( W_n ⋅ [r[t] × {h[t-1], x[t]} ) 
+ * h[t] = (1 - z[t]) × h[t-1] + z[t] × n[t] 
+ * \image html GRU.gif "Gate Recurrent Unit Diagram" + * + * \par Variables Description: + * \par + * \li \c update_gate_weights, \c reset_gate_weights, \c hidden_state_weights are weights corresponding to update gate (W_z), reset gate (W_r), and hidden state (W_n). + * \li \c update_gate_bias, \c reset_gate_bias, \c hidden_state_bias are layer bias arrays + * \li \c test_input1, \c test_input2, \c test_history are the inputs and initial history + * + * \par + * The buffer is allocated as: + * \par + * | reset | input | history | update | hidden_state | + * \par + * In this way, the concatination is automatically done since (reset, input) and (input, history) + * are physically concatinated in memory. + * \par + * The ordering of the weight matrix should be adjusted accordingly. + * + * + * + * \par CMSIS DSP Software Library Functions Used: + * \par + * - arm_fully_connected_mat_q7_vec_q15_opt() + * - arm_nn_activations_direct_q15() + * - arm_mult_q15() + * - arm_offset_q15() + * - arm_sub_q15() + * - arm_copy_q15() + * + * Refer + * \link arm_nnexamples_gru.cpp \endlink + * + */ + +#include +#include +#include +#include "arm_nnexamples_gru_test_data.h" +#include "arm_math.h" +#include "arm_nnfunctions.h" + +#ifdef _RTE_ +#include "RTE_Components.h" +#ifdef RTE_Compiler_EventRecorder +#include "EventRecorder.h" +#endif +#endif + +#define DIM_HISTORY 32 +#define DIM_INPUT 32 +#define DIM_VEC 64 + +#define USE_X4 + +#ifndef USE_X4 +static q7_t update_gate_weights[DIM_VEC * DIM_HISTORY] = UPDATE_GATE_WEIGHT_X2; +static q7_t reset_gate_weights[DIM_VEC * DIM_HISTORY] = RESET_GATE_WEIGHT_X2; +static q7_t hidden_state_weights[DIM_VEC * DIM_HISTORY] = HIDDEN_STATE_WEIGHT_X2; +#else +static q7_t update_gate_weights[DIM_VEC * DIM_HISTORY] = UPDATE_GATE_WEIGHT_X4; +static q7_t reset_gate_weights[DIM_VEC * DIM_HISTORY] = RESET_GATE_WEIGHT_X4; +static q7_t hidden_state_weights[DIM_VEC * DIM_HISTORY] = HIDDEN_STATE_WEIGHT_X4; +#endif + +static q7_t update_gate_bias[DIM_HISTORY] = UPDATE_GATE_BIAS; +static q7_t reset_gate_bias[DIM_HISTORY] = RESET_GATE_BIAS; +static q7_t hidden_state_bias[DIM_HISTORY] = HIDDEN_STATE_BIAS; + +static q15_t test_input1[DIM_INPUT] = INPUT_DATA1; +static q15_t test_input2[DIM_INPUT] = INPUT_DATA2; +static q15_t test_history[DIM_HISTORY] = HISTORY_DATA; + +q15_t scratch_buffer[DIM_HISTORY * 4 + DIM_INPUT]; + +void gru_example(q15_t * scratch_input, uint16_t input_size, uint16_t history_size, + q7_t * weights_update, q7_t * weights_reset, q7_t * weights_hidden_state, + q7_t * bias_update, q7_t * bias_reset, q7_t * bias_hidden_state) +{ + q15_t *reset = scratch_input; + q15_t *input = scratch_input + history_size; + q15_t *history = scratch_input + history_size + input_size; + q15_t *update = scratch_input + 2 * history_size + input_size; + q15_t *hidden_state = scratch_input + 3 * history_size + input_size; + + // reset gate calculation + // the range of the output can be adjusted with bias_shift and output_shift +#ifndef USE_X4 + arm_fully_connected_mat_q7_vec_q15(input, weights_reset, input_size + history_size, history_size, 0, 15, bias_reset, + reset, NULL); +#else + arm_fully_connected_mat_q7_vec_q15_opt(input, weights_reset, input_size + history_size, history_size, 0, 15, + bias_reset, reset, NULL); +#endif + // sigmoid function, the size of the integer bit-width should be consistent with out_shift + arm_nn_activations_direct_q15(reset, history_size, 0, ARM_SIGMOID); + arm_mult_q15(history, reset, reset, history_size); + + // update gate calculation + // the range of the output can be adjusted with bias_shift and output_shift +#ifndef USE_X4 + arm_fully_connected_mat_q7_vec_q15(input, weights_update, input_size + history_size, history_size, 0, 15, + bias_update, update, NULL); +#else + arm_fully_connected_mat_q7_vec_q15_opt(input, weights_update, input_size + history_size, history_size, 0, 15, + bias_update, update, NULL); +#endif + + // sigmoid function, the size of the integer bit-width should be consistent with out_shift + arm_nn_activations_direct_q15(update, history_size, 0, ARM_SIGMOID); + + // hidden state calculation +#ifndef USE_X4 + arm_fully_connected_mat_q7_vec_q15(reset, weights_hidden_state, input_size + history_size, history_size, 0, 15, + bias_hidden_state, hidden_state, NULL); +#else + arm_fully_connected_mat_q7_vec_q15_opt(reset, weights_hidden_state, input_size + history_size, history_size, 0, 15, + bias_hidden_state, hidden_state, NULL); +#endif + + // tanh function, the size of the integer bit-width should be consistent with out_shift + arm_nn_activations_direct_q15(hidden_state, history_size, 0, ARM_TANH); + arm_mult_q15(update, hidden_state, hidden_state, history_size); + + // we calculate z - 1 here + // so final addition becomes substraction + arm_offset_q15(update, 0x8000, update, history_size); + // multiply history + arm_mult_q15(history, update, update, history_size); + // calculate history_out + arm_sub_q15(hidden_state, update, history, history_size); + + return; +} + +int main() +{ + #ifdef RTE_Compiler_EventRecorder + EventRecorderInitialize (EventRecordAll, 1); // initialize and start Event Recorder + #endif + + printf("Start GRU execution\n"); + int input_size = DIM_INPUT; + int history_size = DIM_HISTORY; + + // copy over the input data + arm_copy_q15(test_input1, scratch_buffer + history_size, input_size); + arm_copy_q15(test_history, scratch_buffer + history_size + input_size, history_size); + + gru_example(scratch_buffer, input_size, history_size, + update_gate_weights, reset_gate_weights, hidden_state_weights, + update_gate_bias, reset_gate_bias, hidden_state_bias); + printf("Complete first iteration on GRU\n"); + + arm_copy_q15(test_input2, scratch_buffer + history_size, input_size); + gru_example(scratch_buffer, input_size, history_size, + update_gate_weights, reset_gate_weights, hidden_state_weights, + update_gate_bias, reset_gate_bias, hidden_state_bias); + printf("Complete second iteration on GRU\n"); + + return 0; +} diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/arm_nnexamples_gru_test_data.h b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/arm_nnexamples_gru_test_data.h new file mode 100644 index 0000000..e0ccbe1 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/arm_nnexamples_gru_test_data.h @@ -0,0 +1,23 @@ +#define UPDATE_GATE_WEIGHT_X2 {-62,83,-58,-89,-80,1,-93,31,101,95,121,-83,71,18,-98,-5,44,-100,-16,-73,25,62,34,-22,-16,42,9,-125,60,-78,15,-76,-76,-63,71,-25,78,-66,38,-118,-71,-120,-80,28,33,51,82,-105,26,-47,38,86,-114,44,90,-98,105,-123,24,95,-12,11,49,-35,78,104,104,17,-116,-40,-83,4,88,-110,-111,-98,18,-89,120,-84,66,-69,-8,-22,-91,-29,-41,110,55,-124,-67,103,-40,-100,1,-25,-68,-62,-89,-75,-20,-78,101,-92,-51,-97,-54,59,-78,41,34,-102,-9,-53,56,103,-55,13,81,-75,-20,-37,29,36,110,84,-80,-127,-68,-33,-70,-16,-42,-9,-104,107,-81,-16,42,-74,-63,-4,-128,-109,-105,55,-51,-68,-88,19,-39,116,-7,66,52,-29,63,-94,71,-2,-127,31,-103,120,124,41,-13,-23,127,59,-22,54,-2,32,-87,-109,85,-31,-5,-59,-122,-97,-14,-88,-19,43,-30,115,42,14,10,121,28,-63,83,-85,101,40,23,-39,74,-99,73,50,-20,123,-88,-13,-126,-25,70,-11,16,-28,121,-29,20,-69,104,117,-40,-1,-97,-12,31,32,15,-32,77,31,16,40,107,-52,-52,-89,-17,124,-95,54,48,-40,37,24,-46,42,119,5,-118,-45,-10,106,83,57,-74,-10,-56,85,37,-25,83,-31,-54,111,-78,-96,-114,-65,-100,28,-31,-111,33,66,74,-43,112,119,-80,-26,74,-81,-123,55,-126,32,-66,110,-86,-118,-21,15,16,26,13,-109,41,-16,88,81,-82,-55,-89,109,-52,118,-39,57,-16,86,-68,-10,-19,110,-50,-17,-84,103,-3,94,-8,50,15,-44,-87,6,18,8,61,66,-108,-67,-6,107,-68,25,25,25,-82,71,62,121,-31,-4,17,-6,-60,-17,116,-67,45,117,-90,12,-68,20,121,-65,-43,74,-104,-42,-69,35,4,-17,5,95,-82,18,65,43,-57,89,1,-8,37,-51,10,67,4,-50,-18,81,-120,44,98,16,-98,25,127,88,-111,-49,114,111,-17,-74,40,-18,35,19,31,48,-23,53,102,41,89,-27,87,-54,-121,-113,97,125,125,-108,58,-17,8,70,-67,-55,59,42,-85,78,27,16,66,67,54,-74,33,-19,72,77,126,-122,-7,-109,58,78,-88,15,2,16,37,-34,-114,-88,-53,88,115,19,7,-67,93,80,-48,-11,-61,31,38,29,-59,-70,0,25,106,-7,-44,53,62,19,-64,109,70,-103,-114,97,57,112,24,-66,-127,29,29,-31,-87,-125,54,-98,101,-39,56,-88,-63,-113,-73,-91,80,112,-27,-75,-42,-5,79,60,-55,23,-61,66,51,39,-91,96,-60,-64,-1,75,55,-108,73,38,75,-113,-9,-92,-92,-3,-30,93,-27,-100,-55,125,52,72,110,12,84,-83,65,-79,92,11,87,-106,35,-38,-24,-79,15,-11,-109,-22,95,82,-1,-2,-113,116,-64,93,-62,-11,101,35,-91,51,-6,21,29,25,-16,68,-103,-111,-23,-123,-80,24,-17,-7,53,23,114,-13,-105,-88,120,13,-25,-40,29,-38,-43,3,2,-121,-110,54,-43,30,66,28,60,-81,-6,-8,126,-80,64,-42,126,75,-69,-116,-41,81,94,31,-116,5,-46,5,-21,-105,78,-20,-34,54,46,-124,120,-83,44,-17,-52,-23,-110,34,-35,31,61,88,-108,-38,31,117,-26,38,-57,65,9,0,59,124,14,-39,-95,-91,107,-34,85,-83,-31,-68,-78,-86,21,-118,56,60,-3,-116,33,53,-94,85,77,91,-94,100,-89,97,88,111,36,74,-110,7,-74,91,-112,21,32,-59,98,36,10,-41,44,-114,-88,92,111,72,43,58,42,-125,-11,96,126,25,96,-105,-128,-70,85,-82,-17,103,23,-37,76,58,108,16,-116,-44,22,89,0,6,-108,27,-34,88,-125,22,-45,-116,28,-29,-70,-3,-81,-80,42,119,105,-40,-109,105,64,5,72,-32,-95,90,60,6,-29,40,-19,57,89,-50,34,-123,-32,-18,20,9,-19,-81,-45,-120,-120,20,2,18,70,75,100,64,126,-9,63,-82,114,-62,106,-11,104,-9,-13,88,-40,101,73,108,52,33,116,-54,-114,-47,85,2,-117,-80,100,-20,98,-75,-83,-24,-125,-91,-97,95,-46,15,-94,-21,53,-27,-18,65,87,112,38,-115,-27,37,-84,1,103,85,-50,36,-49,-119,68,20,119,-113,43,-67,105,44,4,-48,16,-42,83,-39,106,31,-34,-76,-51,68,82,-111,-116,-104,-118,109,-29,-6,-91,81,-102,-76,-82,64,121,27,-98,-24,-88,36,115,59,-84,-121,4,29,45,73,110,-56,-12,109,-88,85,-30,87,18,118,23,21,106,40,115,78,-72,-103,11,83,44,117,-63,98,30,115,123,-39,25,15,84,52,46,77,64,-104,125,-13,34,125,65,6,57,-128,-2,115,7,-65,-73,82,72,-109,99,43,-94,-106,-39,-4,-127,58,123,-128,29,-80,4,51,109,-50,-38,25,-13,-52,-106,87,76,44,78,101,16,-102,-20,104,23,107,-88,18,-85,119,-21,-53,-84,-7,-8,-114,23,-54,74,80,77,-40,19,-75,-41,60,77,82,-96,-121,-43,114,-124,-1,-75,32,34,-117,21,64,-87,-100,-29,-36,-45,-46,-111,4,-44,-94,-117,100,-25,-27,105,95,15,88,25,-38,-88,122,62,-62,-28,95,-86,125,-83,-9,-100,101,-124,22,21,-91,50,-100,-27,-92,115,86,85,33,-112,-43,61,114,62,-31,-84,-7,5,-26,-10,-21,-89,60,-96,48,-34,88,-80,-91,92,12,118,-2,-38,83,-50,-109,-111,-26,-109,-78,-7,84,60,-95,15,-71,112,126,71,36,39,-42,-85,-126,-68,105,-18,-127,48,-41,57,-93,13,-25,-71,66,-43,-23,122,4,-70,123,115,124,-61,-32,18,-18,49,123,-101,37,-50,-111,-73,124,-18,54,-64,93,-69,16,112,21,-56,56,127,113,-48,-57,-4,85,-84,53,44,28,-126,-59,-11,94,58,-64,112,82,127,58,50,5,-6,-102,90,-18,-86,104,17,108,-64,-22,73,-102,-17,-31,-11,-105,-40,-49,84,-82,104,57,30,112,-119,-92,78,-92,35,90,-45,-13,-75,-125,-19,-83,-75,29,15,-33,127,-14,29,-80,61,41,67,-14,-18,101,101,108,-24,-61,-90,-59,-48,-114,1,-14,106,52,109,-45,-100,74,-33,-68,-94,-68,-22,-99,31,-86,85,-27,-70,69,127,92,125,-95,117,-87,-8,-71,18,94,-90,103,-31,-1,-50,-60,-2,96,31,-1,-98,75,104,-6,-38,-24,127,94,-48,97,-96,4,-108,106,76,-31,-7,-41,58,-13,-72,-81,-116,-24,-45,46,-20,114,97,-14,125,11,22,26,27,-2,-88,-28,-76,119,50,52,66,65,120,-42,-43,-59,-56,-28,-42,-87,-18,-47,-85,74,119,97,-6,-127,-86,30,18,-43,48,-73,22,-5,34,122,9,115,-32,-63,-13,61,119,18,-113,-12,80,26,-39,-76,-101,-104,-6,48,38,-82,-52,-91,-38,112,110,115,76,69,100,-116,109,3,-35,16,94,24,110,86,25,-5,84,2,62,57,-121,-28,-108,29,127,-25,89,16,-86,15,-68,97,-115,-73,-110,-13,41,16,-47,-74,75,-71,-52,-20,-29,3,-34,68,-2,-29,63,-5,95,-79,26,-42,-91,-109,-19,107,-102,62,111,-35,80,36,55,-65,26,76,-86,26,-88,-116,110,84,-62,-13,120,-31,-47,-32,84,-98,58,74,18,-22,5,-83,-3,11,53,114,32,-118,16,-91,-74,-67,-68,78,-34,102,88,-80,-5,63,-35,22,-87,-97,-30,-76,94,116,44,-109,-122,38,112,-103,99,-119,49,35,107,108,47,54,11,-50,-73,37,-56,71,-125,108,-47,15,-115,-65,-90,-13,-27,-16,-94,72,-101,-74,-58,27,121,-91,110,-101,45,-54,105,-8,-88,-66,-71,-128,-35,-53,-50,-51,-85,113,96,16,-72,-80,-54,78,47,75,-82,-115,-53,40,-39,54,-43,23,-35,43,81,125,-8,51,49,-91,122,123,-102,-65,-78,19,14,51,-68,60,43,-36,105,44,-100,36,89,-40,123,31,105,26,-128,63,-49,-115,48,96,-91,-73,99,37,2,3,-52,-103,-11,10,31,-106,-119,-67,118,-71,-67,-52,-12,43,-21,99,-64,-88,64,100,-62,-11,-32,23,-90,68,-102,116,-21,-78,1,108,-2,116,-122,114,53,-33,102,65,33,73,92,-79,-51,-50,-65,49,76,119,-51,15,-21,95,-109,80,17,7,115,115,-117,-77,-39,-115,-19,-83,-35,-122,56,94,1,-13,83,8,-84,72,-88,87,77,-82,-125,-18,75,10,-106,51,-59,120,-85,22,-45,-68,-44,-38,64,38,-75,-69,122,88,53,18,41,-108,48,38,-127,34,-85,36,-116,-96,56,105,38,76,92,-41,99,-101,-100,112,74,57,60,85,-14,95,0,-73,-46,12,-93,-14,-78,-1,-2,-10,34,111,115,-91,16,-79,76,-108,-8,-84,33,111,-98,2,-6,8,0,-77,1,52,18,-5,-77,-46,-80,-20,-61,-30,-81,-73,-7,49,-107,-25,-97,-125,69,-89,31,-124,-108,76,96,58,88,24,49,79,11,-43,-60,100,108,62,21,-72,-111,81,46,-108,-107,29,90,-13,55,-23,-63,-10,-128,-124,86,88,3,-39,-39,98,-57,-24,-97,-124,85,-84,-78,4,11,59,-73,120,66,21,-73,20,-95,91,-53,76,98,-29,49,-76,-74,-67,-80,-29,-106,111,60,32,-127,-87,104,30,95,-21,93,-23,-97,26,-46,63,12,-28,123,12,30,102,-115,36,74,-54,-54,-103,-57,-95,-72,-60,24,-14,-41,27,9,19,-74,-12,-65,-7,17,122,-85,123,16,-127,22,75,-85,-28,-50,125,-102,-28,24,120,-53,-128,-108,-65,-37,60,-53,-10,28,-38,-11,71,-45,21,-77,-108,-115,-24,103,-29,121,-23,11,-102,-115,-108,-78,-55,84,-17,-58,-8,-118,-119,-56,1,-109,42,-94,51,54,6,-30,56,12,23,-10,121,-113,-74,9,12,0,-93,67,51,-110,44,-69,-40,-72,49,-16,-31,-16,9,-43,7,90,96,-63,-24,-74,-26,35,-16,109,-101,38,87,-13,11,-18,-54,33,37,106,84,79,80,23,-76,-80,-45,-106,56,3,-103,-92,86,-81,68,90,-126,-125,102,-83,-36,83,97,-39,-44,-14,-14,79,-9,-31,119,114,29,-27,-29,55,-72,-3,54,49,-40,22,-37,54,68,71,66,-66,-23,49,69,-73,83,-14,-70,9,117,-63,111,65,66,92,58,-56,15,20,52,-72,-4,34,-94,119,-95} + +#define UPDATE_GATE_WEIGHT_X4 {-62,78,83,104,-68,28,-33,-63,-58,104,-89,17,-70,83,-16,-85,-80,-116,1,-40,-42,101,-9,40,-93,-83,31,4,-104,23,107,-39,101,88,95,-110,-81,74,-16,-99,121,-111,-83,-98,42,73,-74,50,71,18,18,-89,-63,-20,-4,123,-98,120,-5,-84,-128,-88,-109,-13,44,66,-100,-69,-105,-126,55,-25,-16,-8,-73,-22,-51,70,-68,-11,25,-91,62,-29,-88,16,19,-28,34,-41,-22,110,-39,121,116,-29,-16,55,42,-124,-7,20,66,-69,9,-67,-125,103,52,104,-29,117,60,-40,-78,-100,63,-40,-94,-1,15,1,-76,-25,71,-97,-2,-12,-76,-68,-63,-62,-127,31,31,32,71,-89,-25,-75,-103,15,120,-32,78,-20,-66,-78,124,77,41,31,38,101,-118,-92,-13,16,-23,40,-71,-51,-120,-97,127,107,59,-52,-80,-54,28,59,-22,-52,54,-89,33,-78,51,41,-2,-17,32,124,82,34,-105,-102,-87,-95,-109,54,26,-9,-47,-53,85,48,-31,-40,38,56,86,103,-5,37,-59,24,-114,-55,44,13,-122,-46,-97,42,90,81,-98,-75,-14,119,-88,5,105,-20,-123,-37,-19,-118,43,-45,24,29,95,36,-30,-10,115,106,-12,110,11,84,42,83,14,57,49,-80,-35,-127,10,-74,121,-10,-56,-8,85,50,-120,37,44,-34,37,15,-25,-44,98,-114,16,-88,83,-87,-31,6,-98,-53,25,88,-54,18,111,8,127,115,88,19,-78,61,-96,66,-111,7,-49,-67,-114,-108,-65,-67,114,93,111,80,-100,-6,28,107,-17,-48,-74,-11,-31,-68,-111,25,40,-61,-18,31,33,25,66,25,35,38,19,29,74,-82,-43,71,31,-59,48,-70,112,62,119,121,-23,0,53,25,-80,-31,-26,-4,102,106,41,-7,74,17,-81,-6,89,-44,-27,53,-123,-60,55,-17,87,62,-54,19,-126,116,32,-67,-121,-64,-113,109,-66,45,110,117,97,70,125,-103,-86,-90,-118,12,125,-114,-108,97,-21,-68,15,20,58,57,-17,112,16,121,26,-65,8,24,70,-66,13,-43,-109,74,-67,-127,-55,29,41,-104,-16,-42,59,29,42,-31,88,-69,81,35,-85,-87,78,-125,-82,4,-55,-17,27,54,16,-98,-89,5,109,95,66,101,67,-39,-52,-82,118,18,54,56,-74,-88,-39,65,57,43,33,-63,-19,-113,-16,-57,86,89,72,-73,77,-91,-68,1,-10,-8,126,80,-122,112,-19,37,110,-51,-7,-27,-109,-75,-50,10,-17,67,58,-42,78,-5,-84,4,103,-50,-88,79,15,60,-3,-18,94,81,2,-55,16,23,-61,-16,66,68,-52,44,-23,-114,51,-103,39,-111,-110,-88,34,92,-91,-23,96,-123,-35,111,31,72,-60,-80,-64,24,61,43,88,58,-1,-17,75,-7,-108,42,-38,-125,55,53,-108,23,31,-11,117,96,73,114,38,-13,-26,126,38,25,75,-105,-113,-88,-57,96,65,-105,-9,120,-92,13,9,-128,0,-70,-92,-25,-3,-40,59,85,124,-82,-30,29,93,-38,14,-17,-39,103,-27,-43,-100,3,-95,23,-91,-37,-55,2,125,-121,107,76,-34,58,52,-110,72,54,85,108,-83,16,110,-43,12,30,-31,-116,-68,-44,84,66,-83,28,-78,22,-86,89,65,60,-79,-81,21,0,-118,6,92,-6,11,-8,56,-108,60,27,87,126,-106,-80,-3,-34,-116,88,35,64,-38,-42,33,-125,53,22,-24,126,-79,75,-94,-45,85,-116,15,-69,-11,-116,77,28,91,-29,-109,-41,-22,81,-94,-70,100,-3,95,94,82,31,-89,-81,97,-80,-1,-116,-2,5,88,42,111,119,-113,-46,116,5,36,105,74,-40,-64,-21,93,-105,-110,-109,7,105,-62,78,-11,-20,-74,64,91,5,101,-34,35,54,-112,72,21,-32,-91,46,51,-124,32,-95,-59,90,-6,120,21,-83,98,60,36,6,29,44,25,-17,10,-29,-41,40,-19,-18,57,65,110,4,-56,51,89,87,-50,112,-12,109,109,-50,34,38,-123,-115,-88,-38,85,25,-32,-27,-18,37,-30,-13,87,-52,20,-84,9,1,18,-106,118,87,-19,103,-81,85,23,76,21,44,-45,-50,-120,36,106,78,40,101,-120,-49,20,-119,115,16,78,-102,2,68,18,20,-72,-20,-103,104,70,119,75,-113,11,23,83,107,100,43,64,-67,44,-88,117,18,126,105,-9,44,-63,-85,98,119,63,4,-82,-48,30,-21,115,-53,114,16,-62,-42,123,-84,-39,-7,106,83,-11,-39,25,-8,15,-114,104,106,-9,31,84,23,52,-54,-13,-34,88,-76,46,74,77,80,-40,-51,101,68,64,77,-104,-40,73,82,108,-111,125,19,-13,-75,52,-116,33,-104,34,-41,125,60,116,-118,-54,109,65,77,6,82,-114,-29,-47,-6,57,-96,-128,-121,85,-91,2,81,-2,-43,115,114,-117,-102,-80,-76,7,-124,-65,-1,100,-82,-20,64,-73,-75,82,32,98,121,-75,27,72,34,-109,-117,-83,-98,-24,-24,99,21,43,64,-125,-88,-91,36,-94,-87,-106,-100,-97,115,95,59,-39,-29,-4,-36,-46,-84,15,-121,-127,-45,58,-46,-94,4,-21,29,123,-111,-128,4,53,45,-27,73,29,-44,-80,-94,-117,-109,100,-78,-84,-18,53,101,-25,-7,-27,84,44,101,28,108,105,60,95,-95,-126,-24,-59,-61,15,15,88,-71,-11,-90,94,-59,25,112,-38,126,58,-48,-64,-114,-88,71,122,36,112,1,82,-14,62,39,-62,-42,127,106,58,52,-28,-85,95,-126,50,109,5,-45,-86,-68,125,105,-6,-100,-102,74,-83,-18,-9,-127,90,-33,-18,-68,-100,48,101,-41,-86,-94,104,-68,-124,57,22,-93,17,-22,108,-99,21,13,-91,-25,-64,31,-22,-86,50,-71,-100,66,73,85,-102,-27,-27,-43,-92,-23,-17,-70,-31,69,115,122,86,4,-11,127,-105,92,85,-70,33,123,-40,125,-49,-95,-112,115,-43,124,84,117,-82,-87,61,-61,114,-32,104,-8,57,-71,62,18,-31,-18,30,18,112,94,-84,49,-7,123,-119,-90,-92,103,5,-101,-26,37,78,-31,-92,-1,-10,-50,-21,-111,35,-50,90,-60,-89,-73,60,124,-45,-2,-13,96,-96,-18,48,54,-75,31,-125,-1,-34,-64,88,93,-19,-98,-83,75,-80,-69,-91,16,-75,104,29,-6,92,112,12,21,15,-38,-33,-24,118,-56,-2,56,127,127,-14,94,-38,127,83,113,29,-48,-80,97,-50,-48,-109,-57,61,-96,41,4,-111,-4,-26,85,67,-108,-14,106,76,-113,-31,-12,-2,-30,-29,-76,-7,80,-41,26,63,94,-5,116,58,-39,-13,-76,95,44,-79,-109,-72,-101,-81,-104,26,-122,-42,38,-116,-6,-24,48,-91,112,-109,-103,-45,38,46,-82,-19,99,107,-119,-20,-52,114,-91,-102,49,62,35,97,-38,-14,112,111,107,-35,108,125,110,11,115,80,47,36,54,22,76,26,69,55,11,-65,-50,27,100,-2,-116,26,-73,76,37,-88,109,-28,3,-86,-56,26,71,-76,-35,119,16,-88,-125,-116,108,50,94,52,24,110,-47,84,15,66,110,65,86,-62,-115,-13,-65,120,25,-42,-5,120,-90,-31,-13,-43,84,-59,2,-47,-27,-32,-16,-56,62,-28,57,84,-94,-98,72,-42,-121,-87,-28,58,-101,74,-74,-18,-108,-47,29,18,-58,-22,27,-85,127,74,-25,5,121,-83,-91,119,89,97,16,-3,110,11,-101,-6,-86,-127,15,53,45,114,-54,-86,-68,30,97,32,105,-118,-8,18,-115,-43,-73,16,-88,-91,-66,48,-110,-73,-13,-74,-71,-67,-128,22,41,-5,16,-68,-35,78,-53,34,-47,122,-74,-34,-50,102,-51,9,75,115,-71,88,-85,-80,113,-32,-52,-63,-20,-5,96,63,16,-13,-29,61,3,-35,-72,22,-80,119,-34,18,68,-87,-54,-97,78,47,-12,75,43,-88,115,87,-91,-82,-21,-115,99,77,16,-82,-79,-53,-64,40,-88,-125,76,-18,-108,-39,64,54,100,75,-8,10,-84,-43,-62,23,-11,-106,33,51,111,-35,-32,43,23,-59,-98,120,2,81,-90,125,68,-85,-6,22,8,-8,-102,51,116,-45,0,-68,-77,49,-21,-91,-78,-44,1,-38,52,122,1,123,108,64,18,38,-5,-102,-2,-65,116,-75,-77,-69,-46,-78,-122,19,114,122,-80,88,-20,14,53,51,-33,53,-61,18,-30,-68,102,60,65,41,-81,-108,-73,43,33,-36,73,48,-7,38,49,105,92,44,-79,-127,-107,34,-25,-100,-51,36,-50,-85,-97,36,-125,89,-65,-40,49,-116,69,-96,-89,123,76,31,119,56,31,105,-124,105,-51,26,15,38,-108,76,76,-128,-21,63,95,92,96,-41,58,-49,-109,-115,80,99,88,-101,24,48,17,96,7,-100,49,112,79,-91,115,-73,115,74,11,57,-43,99,-117,37,-77,60,-60,85,100,2,-39,3,-115,-14,108,95,62,-52,-19,-103,-83,0,21,-73,-72,-11,-35,10,-122,-46,-111,12,81,31,56,-106,94,-93,46,-14,-108,-119,1,-67,-13,-78,-107,-1,29,118,83,-71,8,-2,90,-10,-13,-67,-84,-52,72,34,55,111,-23,-63,-54,-10,-103,-118,3,-119,-103,-128,-57,-124,-95,-56,-92,1,86,86,-72,88,-60,-109,-81,42,68,3,24,-39,-14,-94,90,51,-126,-39,-41,98,27,54,-125,6,102,-57,9,-24,19,-30,-83,56,-36,-97,-74,-124,-12,12,83,23,97,85,-65,-84,-7,-10,-39,121,-44,-78,17,4,122,-113,-14,-74,-14,11,-85,59,123,9,79,12,-9,-73,16,120,-127,0,-31,-93,119,66,22,21,75,67,114,51,29,-73,-85,20,-28,-110,-27,44,-29,-95,-50,91,125,-69,55,-40,-72,-53,-102,76,-28,-72,-3,49,54,98,24,-29,120,-16,49,-31,-40,49,-53,-76,-128,-16,22,9,-37,-74,-108,-67,-65,-43,54,7,68,-80,-37,-29,60,90,71,96,66,-106,-53,111,-10,-63,-66,-24,-23,60,28,32,-38,-74,49,-26,69,-127,-11,-87,71,35,-73,-16,83,104,-45,30,21,109,-14,-101,-70,95,-77,-21,-108,38,9,87,117,93,-115,-23,-24,-13,-63,11,111,-97,103,26,-29,-18,65,-54,66,-46,121,63,-23,33,92,37,58,12,11,-28,-102,106,-56,84,15,123,-115,12,-108,79,20,80,52,30,-78,102,-55,23,-72,-76,-4,-115,84,36,-17,-80,34,-45,-94,74,-58,-54,-8,-106,119,56,-95} + +#define RESET_GATE_WEIGHT_X2 {65,-28,-36,70,67,55,86,-53,23,25,-19,59,67,43,-92,48,94,-113,60,-58,24,76,-15,-19,15,36,-74,115,-59,3,34,-43,21,-125,-45,127,92,-5,-65,-103,-83,51,42,109,-51,-39,-97,-64,-4,57,79,-42,88,-4,-108,83,-4,20,86,82,-87,95,12,-69,28,30,-97,-13,-33,-48,75,119,18,31,-83,-59,-114,-21,127,34,-27,-26,-47,86,-83,-49,8,29,-48,-31,-94,-59,-49,-36,0,28,-64,113,65,-8,47,-55,-49,112,-40,-39,-100,-42,32,82,27,-78,-105,3,19,88,15,-121,-120,7,-9,-107,-23,104,114,66,113,-102,-90,24,80,-34,106,48,-91,-11,22,-96,-82,75,26,-42,59,-45,23,78,79,-76,6,20,63,-118,-125,-42,111,-80,-79,-59,-121,-79,83,49,-95,-49,81,15,-11,-54,-45,64,-30,-49,81,-57,71,91,113,-46,-63,-4,-96,-95,-27,5,-52,35,67,112,58,-62,48,112,106,80,-19,103,4,-32,-118,-74,12,13,-126,-20,-5,115,-74,-30,123,-74,-66,11,-99,-16,-102,-100,-81,-20,-24,92,-79,-31,44,-24,-85,-123,5,-52,-111,73,29,28,-19,18,23,-112,-32,-52,-38,99,-59,-52,-31,87,124,28,-42,-39,81,-87,-24,16,47,20,36,1,-70,121,124,13,1,30,112,87,-86,11,36,-18,74,-104,-100,-14,0,-24,28,-53,53,66,-63,-109,-10,-50,-15,63,34,82,-59,85,-44,105,-10,-27,99,5,-105,-69,-75,2,-47,-66,71,-30,73,-11,-45,93,47,-37,-34,-8,90,-106,103,112,65,-100,-25,-13,38,74,54,27,-81,-8,19,49,94,118,-121,-116,120,-71,-87,36,-65,-112,8,-59,-106,-40,-16,68,87,-109,53,12,-7,9,6,67,78,8,-42,-123,79,-93,-102,-40,12,-66,-109,47,15,-8,-5,51,-62,111,8,-66,-82,-102,120,68,-67,9,-73,-69,-79,56,-36,-10,-69,-99,-2,-11,-66,76,37,4,92,1,-89,74,85,-124,-25,40,106,-102,42,-19,-30,0,-70,82,84,106,-84,48,16,37,33,-114,38,-29,-117,51,101,26,56,127,-81,-76,38,-124,103,-25,54,-21,-112,40,102,3,63,36,-54,16,-18,114,39,5,105,83,117,-92,-5,-14,-102,-87,-48,-77,-19,-82,-55,119,-95,-43,97,126,-48,-50,-97,-25,-102,-53,47,111,66,-82,-16,-38,76,-15,23,20,88,-19,125,-90,107,-31,102,107,30,-111,71,38,26,43,-85,82,29,-99,126,-109,21,-42,-107,-115,-123,30,-46,39,4,-19,-44,-69,86,41,4,33,57,-110,95,-22,123,71,1,119,77,90,105,81,-68,74,-38,-109,6,-82,-20,-115,-104,38,27,-44,82,-107,99,-41,-28,-55,100,10,-42,7,91,56,-91,113,-91,70,-66,-48,-18,109,-27,42,-89,-20,-63,-41,77,-13,73,10,-74,-51,88,28,50,-5,7,92,18,-98,-41,-14,8,-16,99,30,-109,7,52,110,-120,-17,33,53,1,106,-99,-14,-93,-46,-60,7,-54,100,91,93,89,-84,118,58,-84,38,57,-24,-25,22,-52,119,-85,-75,-79,60,-97,1,-13,54,-43,98,-92,65,37,-110,64,21,-18,-111,-9,86,90,42,-71,-29,86,-10,-15,-20,106,-45,-22,44,105,55,-61,-89,-119,31,93,-97,-35,9,-113,86,-113,22,-68,-29,-36,-123,98,79,34,-29,71,44,49,56,93,4,63,-3,45,12,54,-96,27,-55,-72,84,69,27,-28,-111,-57,-41,92,-106,-90,55,105,-60,94,34,94,-1,112,-86,-55,-58,68,-65,37,110,-107,-62,66,61,-69,-52,27,-61,70,-56,-116,-101,-103,127,-98,-79,25,-117,40,33,111,10,-3,-65,1,84,-41,5,-93,-85,-96,78,54,43,70,77,-53,-71,-38,48,103,-88,115,94,20,-5,-125,-7,-61,30,-25,-57,-42,-100,63,-114,40,-53,123,50,-7,121,75,67,75,3,-38,-101,-44,-46,54,38,-22,4,18,102,-126,44,86,-10,-1,118,98,102,-125,74,32,18,74,73,72,64,47,105,-72,5,73,98,9,39,18,10,-68,81,-128,-89,27,-51,51,16,119,-71,-53,51,-84,107,-116,7,73,106,20,52,-85,-74,-103,-18,29,-13,73,106,-92,107,-115,5,65,83,-79,-7,98,-42,-33,82,-64,75,-32,100,-67,-122,84,43,-111,114,-99,46,12,99,43,50,-24,-88,-60,111,68,64,54,-105,-120,119,68,5,51,63,89,-57,-75,-25,-35,-28,42,-64,101,-103,-35,-99,-96,-18,-64,-94,-46,89,-65,-38,-1,-97,127,-67,84,-18,86,115,60,-78,-109,-61,-93,-67,-87,-80,124,26,-9,111,115,-88,-71,-86,-71,-65,-15,108,-25,111,9,86,-115,-55,-23,57,27,103,108,-28,65,86,68,114,62,126,-4,33,-34,-123,87,-76,-104,-126,26,-13,44,108,105,12,-35,-58,3,-5,-32,91,49,89,88,37,38,119,-125,-48,37,53,85,-73,67,116,-116,-127,103,127,-115,92,-35,-83,-45,25,-96,-13,-90,41,-27,105,119,85,27,-3,-64,93,17,-53,104,-70,-43,65,45,-90,61,-31,-49,-99,84,46,93,-37,84,-79,13,-59,-76,62,19,-11,-96,-104,-3,-8,-78,92,98,50,-7,-39,-82,37,-126,127,-113,67,94,115,-9,-33,-57,26,-67,9,28,-8,81,-98,-10,84,34,111,-95,127,75,38,-7,-2,-71,-62,-72,99,-74,25,123,114,51,-28,103,-110,43,113,7,58,75,-95,-52,19,-112,101,26,65,-115,-91,85,-5,-45,110,-103,-34,-69,50,-15,-19,-110,-44,-7,-112,-93,29,50,-84,-55,-41,11,19,-31,-47,-62,-12,-105,-47,68,-124,-47,-113,-55,30,25,55,-14,85,-66,-5,-105,62,-27,-89,-124,-84,112,34,52,25,104,32,-30,84,-46,-38,60,-2,-107,-95,-86,-25,117,60,-121,32,84,8,-88,-1,91,-46,-76,81,44,79,105,-105,82,20,59,-115,96,21,-113,19,92,122,76,36,-112,78,16,38,73,69,54,97,41,-49,78,-71,-69,95,-85,117,10,-98,25,72,126,47,-17,4,-44,-32,-16,-12,105,76,4,-82,-91,-21,-117,30,-67,46,-8,-125,84,-51,94,0,-60,127,99,43,60,16,55,-16,-121,-61,-115,38,25,17,35,23,68,9,-107,-44,118,119,43,99,-95,40,42,-70,54,19,92,-36,82,-35,122,-96,54,-29,-50,100,-79,-71,-99,-60,-2,-100,41,97,-93,-58,-123,126,-102,81,-5,83,110,-50,58,-86,41,-126,43,-49,98,-59,94,-91,115,16,-3,-58,-30,-109,110,-114,124,22,-88,-79,-29,-100,54,-33,23,-1,-77,52,-126,114,70,-50,90,82,-13,-25,-125,16,48,101,-93,19,-103,67,-1,-32,28,-72,-26,73,45,-22,83,-68,-61,89,57,-37,90,16,-38,-124,47,-5,-113,81,71,-30,-46,-18,-52,-104,-40,49,-101,106,38,6,125,-70,25,-88,-50,-77,-12,53,110,-84,23,-109,-53,112,2,88,101,-55,-10,-72,123,-35,42,-15,98,-85,48,-100,-54,123,52,-105,7,-28,86,-125,85,12,86,-34,103,-8,-65,-24,88,-43,57,-16,114,-98,101,81,34,-83,-8,3,-27,5,110,-24,-80,9,85,-108,96,-93,-34,76,-107,71,84,-98,-10,-94,71,71,-38,-96,-112,100,127,52,-32,-127,102,61,-119,-46,-119,125,109,-23,-80,-11,-68,84,-53,35,-115,105,-88,72,110,109,17,-121,80,-87,-72,-123,-31,13,71,63,-126,107,115,-100,27,39,10,75,-128,58,103,-104,126,-59,31,89,-67,97,-96,-69,87,19,99,49,111,9,91,-98,-4,-118,103,-63,-92,-74,106,-53,52,122,12,24,123,-126,-105,104,38,107,118,10,74,-38,14,-11,76,-112,-112,30,-47,95,112,65,-94,120,21,85,33,52,55,-54,-57,-77,-16,52,88,-81,-77,52,0,90,-126,66,88,-81,83,50,81,-28,-56,-36,-8,50,4,115,58,-30,-53,-78,-114,-16,-100,33,-80,-6,96,108,4,-27,-90,8,48,-118,-112,22,-56,114,-66,4,-11,-48,118,61,104,118,-27,13,52,2,74,112,-127,48,27,59,-37,-58,18,85,-5,-41,-91,-32,-56,-5,-40,-117,-89,-48,-8,-32,43,-75,-118,-109,-92,-122,67,88,107,79,-90,30,-65,-102,-100,-112,-104,57,-33,-103,69,-26,15,-12,106,-17,50,-20,33,51,14,98,-118,-82,63,-65,-40,-89,-8,-75,-16,-1,-13,118,76,34,-100,83,-10,72,26,-13,50,92,69,12,-33,-66,76,62,-47,-10,-31,60,-52,52,74,77,30,59,-98,-78,-124,107,38,-121,97,-39,-12,-1,63,-112,71,-65,9,-66,-31,50,39,77,56,-81,-125,-109,-36,-62,-74,12,31,-128,64,62,86,-9,26,69,-45,-35,46,39,95,78,-22,81,-5,-22,90,-47,-36,58,65,88,-89,37,81,115,-3,-108,52,7,-32,80,-96,-24,-22,104,-95,-3,117,59,105,66,-113,28,55,-75,46,45,-118,79,-3,-113,119,-114,-3,-64,56,34,118,67,32,25,-8,1,-64,91,112,31,-88,91,-53,115,33,-3,14,-43,82,-42,-57,-128,-124,127,-69,-112,98,-40,-9,-35,29,-87,-74,27,120,77,-70,93,39,95,118,-39,82,83,-26,60,106,-116,43,8,-114,66,28,5,-95,111,-11,68,24,44,65,-93,26,50,13,100,-33,-93,99,6,0,77,98,5,-10,84,77,46,4,-13,-31,-83,84,-78,-97,-58,76,-71,-6,2,27,-73,81,100,-126,-7,117,-10,-6,118,52,-4,25,56,43,-26,-43,-64,23,-44,-108,-53,45,-117,91,-88,-45,-87,63,120,82,70,73,-108,89,-12,35,-81,-98,-124,-114,-126,86,21,-35,-32,-105,122,111,98,77,38,-18,-7,-48,69,22,74,-127,-62,-47,-20,-8,9,-48,-2,-53,-58,-37,51,27,-91,57,69,-27,-91,76,-127,78,76,-108,-1,13,-71,-41,38,46,60,-5,-73,-98,123,106,35,-38,-102,2,125,25,-63,-110,9,25,-106,-21,-113,-111,97,-33,33,83,55,123,72,-11,-78,-85,35,56,-110,-18,118,9,85,-100,-65,126,24,-18,50,-32,98,40,114,59,-60,-6,-72,-68,16,21,-10,-6,113,-23,-24,-27,-116,-126,119,6,-78,118,15,-53,7,113,3,83,52,44,-44,-53,-85,78,-108,-83,-128,63,-10,-122,-92,24,28,21,-87} + +#define RESET_GATE_WEIGHT_X4 {65,28,-28,30,-90,106,24,80,-36,-97,70,-13,80,-19,-34,103,67,-33,55,-48,106,4,48,-32,86,75,-53,119,-91,-118,-11,-74,23,18,25,31,22,12,-96,13,-19,-83,59,-59,-82,-126,75,-20,67,-114,43,-21,26,-5,-42,115,-92,127,48,34,59,-74,-45,-30,94,-27,-113,-26,23,123,78,-74,60,-47,-58,86,79,-66,-76,11,24,-83,76,-49,6,-99,20,-16,-15,8,-19,29,63,-102,-118,-100,15,-48,36,-31,-125,-81,-42,-20,-74,-94,115,-59,111,-24,-80,92,-59,-49,3,-36,-79,-79,-59,-31,34,0,-43,28,-121,44,-79,-24,21,-64,-125,113,83,-85,49,-123,-45,65,127,-8,-95,5,-49,-52,92,47,-5,-55,81,-111,15,73,-65,-49,-103,112,-11,29,-54,28,-83,-40,51,-39,-45,-19,64,18,42,-100,109,-42,-30,23,-49,-112,-51,32,-39,82,81,-32,-57,-52,-97,27,-64,-78,71,-38,91,99,-4,-105,57,3,113,-59,-46,-52,79,19,-42,88,-63,-31,-4,87,88,15,-4,-121,-96,124,-95,28,-108,-120,83,7,-27,-42,5,-39,-4,-9,20,-107,-52,81,35,-87,86,-23,82,104,67,-24,112,16,-87,114,95,66,58,47,-62,20,12,113,-69,-102,48,36,112,1,-70,54,121,27,-2,-102,-11,-87,124,-81,13,-8,-66,-48,76,-77,1,19,30,49,37,-19,4,-82,112,94,87,118,92,-55,1,119,-86,-121,11,-116,-89,-95,74,-43,36,120,-18,-71,85,97,-124,126,74,-87,-104,36,-25,-48,40,-50,-100,-65,-14,-112,106,-97,-102,-25,0,8,-24,-59,42,-102,-19,-53,28,-106,-53,-40,-30,47,0,111,53,-16,66,68,-70,66,82,-82,-63,87,-109,-109,84,-16,106,-38,-10,53,-50,12,-84,76,48,-15,-15,-7,63,9,16,23,37,20,34,6,82,67,33,88,-114,-19,-59,78,85,8,38,125,-29,-90,-44,-42,105,-123,-117,107,51,-31,-10,79,-27,-93,101,102,26,107,99,-102,5,-40,56,30,127,-111,-105,12,-69,-66,-81,71,-76,38,-75,-109,2,47,38,26,-124,43,-47,15,-66,-8,103,-85,-25,82,71,-5,-30,51,54,29,-21,-99,73,-62,-11,111,-112,126,40,-109,-45,8,93,-66,102,21,3,-42,47,-82,-37,-102,63,-107,36,-115,-34,120,-8,68,-54,-123,16,30,90,-67,-106,9,-18,-46,114,39,103,-73,112,-69,39,4,5,-19,65,-79,-100,56,105,-44,83,-69,-25,-36,-13,-10,117,86,-92,41,38,-69,74,-99,-5,4,-14,33,57,-41,-110,-14,-15,68,-20,-65,95,8,-22,-16,106,37,-45,110,123,99,71,30,-22,-107,44,-62,1,-109,119,7,105,66,55,61,77,52,90,110,-61,-69,-89,-52,105,-120,81,-17,-119,27,31,-61,-68,33,74,53,93,70,-97,-56,-38,1,-109,106,-35,-116,9,-101,6,-99,-82,-14,-113,-103,86,127,-20,-93,-115,-46,-113,-98,22,-79,-104,-60,38,7,-68,25,-29,-117,27,-54,-44,100,-36,40,-123,33,82,91,-107,93,98,111,79,10,99,89,-41,-84,34,-3,-29,-65,-28,118,-55,58,71,1,44,84,100,-84,10,38,49,-41,56,5,-42,57,7,-24,93,-93,4,-85,91,-25,56,22,63,-96,-3,78,-91,-52,113,119,45,54,12,43,-91,-85,70,-75,54,70,-96,77,-66,-79,-48,60,27,-53,-55,-71,-18,-97,109,1,-72,-38,84,48,-27,-13,42,54,69,103,27,-88,-89,-43,-20,98,-28,115,-111,94,-63,-92,-41,65,-57,20,-41,-5,77,37,-13,-110,92,-125,-106,-7,73,64,10,21,-90,-61,55,30,-74,-18,-51,-111,105,-25,-60,-57,88,-9,28,86,94,-42,34,-100,50,90,-5,42,94,63,-1,-114,7,-71,92,-29,112,40,-86,-53,18,86,-98,-10,-55,123,-58,50,-7,-103,121,-18,-46,-35,89,-58,75,29,67,-13,-65,3,-38,-5,75,73,3,106,-1,-32,-97,91,-38,-92,-101,107,127,49,-67,89,-44,-115,-46,5,84,88,-18,37,54,65,38,83,86,38,115,119,-22,-79,4,-7,60,-125,-78,-48,18,98,102,-42,-109,37,-61,53,-126,-33,44,82,-93,85,-67,-73,86,-64,-10,75,-87,67,-80,116,-1,-32,118,100,124,-116,26,-127,98,-67,102,-122,-9,103,111,127,-125,84,74,43,115,-115,-88,92,32,-111,18,114,-71,-35,-86,-83,74,-99,73,46,-71,-45,-65,25,72,12,64,99,-15,-96,108,-13,47,43,105,50,-25,-90,111,41,-72,-24,5,-88,9,-27,86,105,73,-60,98,111,-115,119,-55,85,9,68,39,64,-23,27,57,-3,18,54,10,-105,27,-64,103,93,-68,-120,81,119,108,17,-28,-53,-128,68,-89,5,65,104,86,-70,27,51,-51,63,68,-43,114,65,51,89,16,-57,62,45,126,-90,119,-75,-71,-25,-4,61,33,-31,-53,-35,51,-28,-34,-49,-123,-99,-84,42,107,-64,87,84,-76,46,-116,101,7,-103,-104,93,-126,-37,73,-35,106,-99,26,84,-13,-79,20,-96,52,-18,44,13,108,-59,-85,-64,-74,-94,105,-76,12,62,19,-115,-11,-91,117,-67,60,46,-96,85,-104,-5,-121,-8,32,-125,-3,-45,-8,110,84,84,8,-51,-78,-103,92,-34,-88,94,-1,0,98,-69,50,50,91,-60,-46,127,-7,-15,-39,-19,-76,99,81,43,-82,-110,37,-44,44,60,79,16,-126,-7,127,-112,105,55,-105,-16,-113,-93,67,29,82,-121,20,-61,94,50,115,-84,59,-115,-115,38,-9,-55,-33,-41,96,25,21,17,-57,11,26,19,-113,35,19,23,-67,-31,9,-47,92,68,122,9,28,-62,-8,-12,76,-107,36,-44,81,-105,-98,-47,-112,118,78,119,-10,68,84,-124,16,43,38,99,34,-47,111,-113,73,-95,69,40,-95,-55,127,30,54,42,97,-70,75,25,38,55,41,54,-49,19,-7,-14,-2,85,78,92,-71,-36,-71,-66,-62,-5,-69,82,95,-35,-72,-105,99,62,-85,122,117,-96,-74,-27,25,-89,10,54,-98,-29,123,-124,114,-84,25,-50,72,100,51,112,-28,34,126,-79,47,-71,103,52,-110,25,-17,-99,4,-60,43,104,113,32,-44,-2,-32,-100,7,-30,58,84,-16,41,-12,97,75,-46,-95,-38,105,-93,76,-58,-52,60,19,-2,4,-123,-82,126,-112,-107,101,-95,-91,-102,-21,81,26,-86,65,-25,-117,-5,30,83,110,-38,-50,-124,57,-31,-16,13,58,47,-86,-5,114,71,-98,63,41,-113,-126,81,101,-126,81,107,43,71,-49,-30,34,115,-83,-100,98,-46,-59,-18,-8,27,3,39,94,-52,-91,-104,-27,10,5,75,115,-40,16,49,110,-128,-24,58,-3,-101,-58,106,-80,103,9,-104,-30,38,-109,6,85,126,-108,-59,110,125,-114,-70,96,31,-93,89,124,25,22,-88,-34,-67,76,97,-88,-50,-79,-77,-107,-96,71,-69,-29,-12,-100,53,84,87,-98,19,54,110,-33,-84,-10,99,-94,49,23,23,-1,-109,71,111,71,9,-77,-53,52,112,-38,91,-96,-98,-126,2,114,88,-112,-4,100,-118,70,101,-50,-55,127,103,52,-63,90,-10,82,-72,-32,-92,-127,-74,-13,123,-25,-35,102,106,61,-53,-125,42,16,-15,-119,52,-46,122,48,98,101,-85,-119,12,125,24,-93,48,19,-100,109,123,-23,-126,-103,-54,67,123,-80,-105,-11,104,-1,52,-32,-105,-68,38,84,107,28,7,-72,-28,-53,118,35,10,-26,86,73,-125,-115,74,105,-38,45,85,-22,12,-88,14,72,-11,83,86,-68,-34,110,76,109,-112,-61,103,89,-8,17,-112,-121,30,57,-65,-37,-24,80,-47,-87,95,90,88,16,-43,-72,112,-123,65,-94,52,120,2,-16,26,-1,69,21,74,85,112,-13,-45,118,-35,33,-127,52,48,76,46,34,39,55,27,-54,59,-100,95,83,78,-57,-37,-77,-58,-10,-22,72,81,-16,18,52,85,26,-5,-13,-22,88,-5,-81,-41,50,90,92,-47,-77,-91,52,-32,69,-36,12,58,0,-56,90,-5,-33,65,-66,88,-126,-40,66,-117,76,-89,62,37,88,-89,-81,-48,-47,81,-10,115,83,-8,50,-32,-31,-3,60,-108,81,43,-28,-75,-52,52,52,7,-56,-118,-36,-109,74,-32,77,80,-8,-92,50,-122,30,-96,59,-24,4,67,115,88,-98,-22,-78,104,58,107,-30,79,-124,-95,107,-3,-53,-90,-78,30,38,117,-121,59,-114,-65,-16,-102,97,105,-39,66,-100,-100,33,-112,-12,-113,-1,28,-80,-104,-6,57,63,55,-112,-75,96,-33,108,-103,71,46,-65,45,4,69,-27,-26,9,-118,-66,79,-90,15,8,-12,-31,-3,50,-113,48,106,-118,-17,39,119,77,-114,-112,50,22,-20,56,-3,-81,-64,-56,33,114,51,-125,56,-109,34,-66,14,4,98,-36,118,-62,67,-11,-118,-48,-82,-74,32,12,25,118,63,61,-65,31,-8,-128,1,104,-40,118,-89,64,-64,62,91,-27,-8,13,-75,86,112,-9,31,-88,-10,91,84,111,123,98,72,-53,77,115,46,77,-11,38,-78,33,4,-3,-13,-18,-85,-7,35,14,-31,-43,-83,-48,56,69,-110,82,84,-42,-78,22,-18,74,118,-57,-97,-128,-58,-127,9,-62,85,-124,76,127,-71,-47,-100,-20,-65,-69,-6,-112,2,-8,126,9,24,98,27,-40,-73,-48,-18,-2,50,-9,81,-35,100,-53,-32,-58,98,29,-126,-87,-7,-37,40,51,114,-74,117,27,-10,27,59,-91,-60,120,-6,77,118,57,-6,69,-72,-70,52,93,-4,-27,-68,-91,16,39,25,95,56,76,21,-127,-10,118,43,-39,-26,78,-6,76,113,82,-43,83,-64,-108,-23,-1,-24,-26,23,60,-44,13,-27,-71,-116,106,-108,-116,-53,-41,-126,38,119,43,45,8,-117,46,6,60,-78,-114,91,66,-88,-5,118,-73,15,28,-45,5,-87,-98,-53,123,7,-95,63,111,120,106,113,35,3,-11,82,68,70,-38,83,-102,52,24,73,44,-108,2,44,125,-44,65,89,-93,-12,25,-53,-63,-85,26,35,50,-81,-110,78,9,-108,13,-98,100,-124,25,-83,-106,-128,-33,-114,-93,-126,-21,63,-113,-10,99,86,6,21,-111,-122,97,-92,0,-35,77,-32,-33,24,33,28,98,-105,5,122,83,21,55,-87} + +#define HIDDEN_STATE_WEIGHT_X2 {-3,-33,59,21,117,70,0,44,108,108,-47,-80,-118,34,88,-91,-123,-108,8,51,26,82,-80,107,-100,-69,97,-90,17,19,63,111,-40,-125,110,24,58,-69,26,-31,-65,-37,-47,-41,-109,106,-100,108,-99,108,116,104,86,-50,-45,10,-53,112,34,96,-10,-39,-32,-25,69,102,-2,-4,-25,121,-1,-28,-48,-100,0,-128,60,-73,42,-32,118,-88,-113,-112,-113,70,-98,118,95,77,-52,123,-99,72,26,-102,-32,120,113,22,6,-68,84,-33,103,66,111,60,-76,33,10,25,-43,93,41,-79,110,13,67,107,-113,90,58,64,-125,79,-85,-18,76,80,-59,11,-18,-74,15,-102,99,-19,117,99,65,-50,-108,-121,-9,-104,33,94,-95,110,-48,-97,76,36,1,-58,86,-115,45,-88,38,51,123,-23,-20,-43,-37,15,91,-85,-88,6,-96,58,78,13,23,1,-43,62,-70,-108,44,30,74,90,79,-80,-20,71,-21,0,60,19,-59,-52,44,-14,77,92,-69,121,-123,-27,119,-84,79,87,24,85,118,1,-51,-96,60,102,-6,15,96,120,-109,6,35,11,-119,-109,-18,16,-112,91,-126,71,-29,121,-21,-120,37,57,-117,-39,93,56,-73,-104,77,-107,-52,111,-61,-4,44,-119,67,72,-66,36,-127,-113,-124,123,21,98,84,86,76,23,78,7,-127,-4,1,-46,-107,59,-21,53,-65,-99,-15,-98,53,-31,7,64,7,105,51,-75,50,-52,48,101,-126,-120,5,34,3,81,-39,70,41,112,25,30,79,-6,107,-11,-97,92,-84,67,49,107,60,101,-37,27,-91,-61,-96,120,-113,87,-46,68,64,102,-86,-60,13,-71,56,-105,90,-9,-35,27,103,120,39,23,-39,-1,-85,-95,-6,119,-41,-2,-69,102,102,-119,-3,-11,-125,-111,40,-115,-41,-117,-44,-7,83,123,-21,23,99,-107,43,100,-99,-3,89,3,-113,103,47,-94,-69,-38,-28,-37,49,-117,-49,-126,17,-98,37,92,55,-116,-70,-50,77,120,47,124,78,114,67,-48,6,-42,-115,85,116,-114,-46,-50,-13,70,-101,110,-55,20,-51,125,-19,-9,-15,46,30,-27,-123,114,-50,-30,-72,76,-83,71,47,-45,74,102,44,108,-26,108,-113,-43,110,-91,37,-69,76,-33,106,-76,-96,20,-117,63,-33,-5,11,-121,-51,63,-56,59,-16,-33,114,74,124,73,99,-50,51,-71,118,106,30,-92,26,-40,119,-121,2,-45,9,0,-5,-2,-89,88,-11,-85,-60,19,81,-96,75,82,-40,124,89,-36,-117,-100,-2,-34,112,101,39,-101,-106,60,59,-126,-32,96,68,-53,87,20,54,-24,46,-95,65,-112,22,60,122,-22,-106,-124,97,-37,-86,95,-110,-8,44,58,-12,-120,-45,-86,-32,-86,-94,-14,15,29,-8,-114,71,70,-93,-69,100,-123,-18,-47,-12,127,104,-102,93,-11,-73,121,87,-79,-92,46,92,-108,-107,79,121,-71,-89,16,-11,-52,72,-114,-32,-60,-9,-57,-4,10,-81,-22,68,74,76,-68,-127,96,-84,69,-3,-26,-106,-3,-87,-65,105,109,122,-103,31,-108,-86,-5,-39,85,88,67,-82,0,-25,93,61,-62,5,-54,-114,-51,-9,-114,20,49,-26,38,19,39,-103,33,-120,37,-97,32,-89,119,111,-124,-99,78,-49,-128,76,-18,-12,-109,96,90,-73,-104,59,-59,-92,123,55,54,-120,-80,-48,-16,-95,96,36,118,-119,-58,93,45,-43,-75,64,38,-2,-72,-111,22,-89,-75,-120,-42,45,108,59,-105,40,27,32,-66,121,-22,-71,-9,118,124,60,-96,47,4,14,-27,64,70,47,-91,-70,1,-44,94,-46,53,4,23,-124,-92,-95,83,-49,-81,40,-80,48,0,39,1,-113,32,40,-21,-1,-110,102,1,-74,-51,40,108,-35,-36,89,84,123,-48,-115,-115,83,-61,114,-127,-61,114,100,-82,-45,60,87,60,19,86,97,-68,40,-66,75,86,-32,-128,88,-57,-27,77,3,-27,43,-39,-62,66,5,-82,45,-104,-78,34,57,96,89,-90,66,-10,37,-110,-30,82,-58,13,94,12,115,35,117,0,80,61,-7,107,-104,-21,21,-70,-93,-94,-51,-61,39,-62,64,-82,-109,76,84,58,-47,-100,52,46,-51,88,91,8,-47,108,-80,25,-58,111,-59,-83,-75,92,98,110,54,106,65,-47,-120,-5,90,-123,101,-61,-85,-93,109,88,0,8,59,86,56,126,17,-26,58,-101,-25,35,0,-123,-3,-56,112,-128,8,17,-52,88,31,-3,105,-56,68,-1,-94,96,-19,10,-22,-88,-10,119,-44,19,42,75,-86,18,-107,89,-82,-120,76,40,84,-122,29,33,-47,17,-50,-13,23,-66,-46,85,-29,-110,42,-68,8,99,-93,-29,101,16,52,-13,127,0,86,-117,-92,-70,-32,-27,127,-123,1,34,-13,92,114,-11,29,-103,-121,-54,20,73,16,74,108,16,-61,89,50,-30,-14,116,44,-31,16,96,24,-51,7,39,-87,-69,-61,-98,61,-46,113,85,-95,103,67,99,-66,-45,-42,-70,96,104,5,-111,69,-25,99,-118,23,109,11,4,-41,-94,73,100,96,6,90,-75,-25,79,-13,-43,-6,-12,51,12,40,124,-56,81,-8,59,-60,-26,-54,33,122,85,53,-99,125,19,-26,94,41,-5,46,-48,-70,-10,41,102,-1,-98,-9,15,29,46,-66,-118,-53,45,119,-127,94,53,-58,90,124,5,-110,-98,-80,-77,77,29,19,105,-121,92,9,-124,50,-119,59,40,67,104,-12,13,103,101,47,-51,34,-66,-101,-117,112,-5,118,-48,-60,-114,38,-71,2,51,114,80,115,-5,116,20,16,-47,-19,30,24,-68,7,-30,-3,-64,-7,-34,-12,44,34,-91,-97,116,112,-99,108,-75,17,26,-14,-61,80,22,-7,34,47,-93,45,106,121,78,43,-97,39,-99,-68,-72,-7,64,-49,-82,-127,78,-64,48,18,15,126,-125,-111,-69,-111,10,-46,111,-75,123,-44,-67,-31,-96,-67,-53,-53,-106,67,-101,23,62,30,9,-114,-12,-57,-38,-78,95,-10,-3,110,88,123,-26,78,-125,114,53,10,-57,26,38,-51,73,92,-124,79,15,75,-62,109,-113,-67,1,35,52,-36,55,7,111,-43,109,101,88,122,-21,-32,-87,59,16,-122,-109,-118,17,-22,-39,53,-105,77,90,-24,-65,43,-27,113,30,-117,-30,106,37,55,59,54,-70,99,99,-73,120,97,-39,-88,-54,101,51,-76,70,-121,-68,23,-73,-31,75,-8,-63,-123,-93,96,-81,99,-95,28,-36,55,-104,32,-64,41,-97,95,-89,126,-26,-25,126,2,-26,-54,110,-86,110,74,-3,-110,56,-60,-49,117,-82,-55,-103,-112,70,-85,85,-63,82,7,75,-61,90,32,35,-115,72,73,-121,63,-84,-52,-29,-59,-4,29,64,119,127,58,-117,48,126,120,-115,-15,-10,27,27,-81,117,-5,121,-72,113,31,-13,10,27,-106,-51,81,-96,-22,19,-78,6,71,-34,123,118,75,-23,-72,-97,111,-121,0,80,28,52,95,59,-116,72,80,-75,-62,88,23,-102,13,6,113,-85,98,45,-96,-32,94,-7,12,-9,86,18,59,-15,75,13,-70,50,-93,52,67,53,-31,19,45,-111,36,39,-91,-77,104,71,7,-44,-76,3,-62,121,43,37,-7,-96,-6,57,-104,30,-126,-94,118,-44,91,29,124,-86,-13,55,41,-41,91,-112,-25,103,81,-70,-112,113,-25,-73,-82,16,67,-5,104,56,66,-115,-90,-126,106,80,-78,-51,-15,-68,-3,102,-10,-123,-10,-71,-111,86,48,-45,101,81,-114,-94,77,-127,-96,-100,86,109,-33,15,-34,60,88,-86,-63,-103,-46,101,-127,-88,90,-37,82,-125,-28,-6,61,-104,77,0,-52,59,-9,-82,59,-78,79,80,-77,-125,-95,16,26,-55,-16,15,-76,-9,56,110,85,-102,-23,-12,-6,-97,-34,32,-79,-95,71,126,127,30,-112,-115,75,-8,125,103,-118,65,-43,107,46,96,-41,-87,-64,-18,126,82,10,81,45,95,61,9,28,-113,-71,47,117,26,-81,73,49,-55,-126,-33,62,-84,-87,-56,-71,97,49,-124,-76,-9,97,119,-23,127,-29,20,-66,-80,-122,40,-2,116,126,-120,-48,124,57,-107,104,80,-13,81,118,33,88,119,-110,33,-35,-75,-6,89,-41,99,46,127,-36,54,-55,50,24,51,49,-71,37,-117,114,6,110,88,84,-30,-45,-50,113,-12,-57,59,-18,49,99,-124,46,-48,88,-82,-121,-97,15,-73,-128,-121,46,30,-93,-109,-15,-86,-2,75,1,-32,-27,-86,-13,-38,48,10,-36,-107,-27,-48,88,-7,-88,98,-83,61,-81,20,-123,18,-41,-127,-55,-66,24,-107,73,30,-42,-74,124,-43,-125,102,98,6,32,24,-123,32,113,105,-81,117,-41,-54,-113,-126,-28,31,-56,-64,-6,-103,-36,-2,-59,34,-40,-64,-39,-64,-74,-105,50,-86,-66,-14,-71,35,-116,-20,15,-119,-12,90,-117,-29,13,-8,-75,57,67,124,-38,66,113,-80,113,105,45,-74,-80,108,-24,-3,36,62,-8,109,-40,-101,106,12,-47,-113,-118,-12,-3,-86,-52,-93,-24,-62,-119,-93,67,39,4,-18,-103,24,1,71,93,95,-113,-7,34,-10,-77,-74,96,86,52,-2,-45,-71,-48,124,-97,1,23,-59,-117,-74,58,-31,-115,114,-14,-115,77,82,100,67,117,-16,-64,105,-19,59,124,124,-116,-33,22,-115,30,102,91,98,-124,38,12,-38,-23,-106,52,75,-45,74,-6,-29,31,117,20,99,66,27,-92,127,-67,-53,68,-66,-26,35,114,-84,-74,-94,-14,-43,-106,-32,-67,-27,28,29,-32,-101,-60,-55,-6,-101,-42,61,111,107,-87,-67,102,-36,119,-81,-54,52,-114,5,-26,115,-7,44,-30,-21,-67,33,-92,29,-30,3,7,-101,-83,-115,29,68,49,-70,-40,-116,63,-49,115,97,123,119,22,-13,47,-4,-14,-94,94,-122,56,58,57,-127,-60,-46,29,94,-105,49,-72,94,20,-8,104,35,-90,19,-26,24,-7,109,10,-9,80,-105,0,126,94,105,63,85,43,-63,-2,-32,39,-119,-12,-108,33,-67,127,-66,-23,-123,8,41,-21,-30,117,20,-85,-39,-87,2,96,-12,-128,83,67,-53,-101,3,-3,-22,-16,51,125,-125,-76,25,42,101,101,35,-36,103,85,-71,-24,6,26,105,60,112,-91,69,13,21,10,-93,22,-111,0,-38,4,-34,45,-86,121,-42,-54,7} + +#define HIDDEN_STATE_WEIGHT_X4 {-3,69,-33,102,76,60,80,19,59,-2,21,-4,-59,-59,11,-52,117,-25,70,121,-18,44,-74,-14,0,-1,44,-28,15,77,-102,92,108,-48,108,-100,99,-69,-19,121,-47,0,-80,-128,117,-123,99,-27,-118,60,34,-73,65,119,-50,-84,88,42,-91,-32,-108,79,-121,87,-123,118,-108,-88,-9,24,-104,85,8,-113,51,-112,33,118,94,1,26,-113,82,70,-95,-51,110,-96,-80,-98,107,118,-48,60,-97,102,-100,95,-69,77,76,-6,36,15,97,-52,-90,123,1,96,-58,120,17,-99,19,72,86,-109,-115,6,63,26,111,-102,45,35,-88,11,-40,-32,-125,120,38,-119,51,-109,110,113,24,22,123,-18,-23,16,58,6,-69,-68,-20,-112,-43,91,26,84,-31,-33,-37,-126,15,71,-65,103,-37,66,91,-29,-85,121,-47,111,-41,60,-88,-21,6,-120,-109,-76,106,33,-96,37,58,57,-100,10,108,25,78,-117,13,-39,-99,-43,108,93,23,93,1,56,116,41,104,-79,-43,-73,62,-104,86,110,-50,13,-70,77,-108,-107,-45,67,10,107,44,-52,30,111,-53,-113,112,90,74,-61,90,-4,34,58,96,64,79,44,-80,-119,-10,-125,-39,79,-20,67,71,72,-32,-85,-25,-18,-21,-66,0,36,-127,-96,-113,120,49,76,-117,-33,-124,-113,123,87,-49,106,-126,-76,21,-46,98,68,17,-96,-98,20,84,64,86,102,37,-117,92,63,76,-86,23,-60,55,-33,-116,-5,78,13,7,-71,-70,11,-50,-121,-127,56,-4,-105,77,-51,120,63,1,90,-46,-9,47,-56,124,59,-107,-35,59,27,78,-16,114,-33,-21,103,53,120,67,114,-48,74,-65,39,-99,23,6,124,-42,73,-15,-39,-98,-1,-115,99,85,-50,53,-85,-31,-95,116,51,-114,-71,7,-6,64,119,-46,118,-50,106,7,-41,105,-2,-13,30,70,-92,51,-69,-75,102,-101,26,110,-40,50,102,-52,-119,-55,119,20,-121,48,-3,101,-11,-51,2,125,-45,-126,-125,-120,-111,-19,9,-9,0,5,40,34,-115,-15,-5,46,-2,3,-41,81,-117,30,-89,-27,88,-39,-44,70,-7,-123,-11,114,-85,41,83,112,123,-50,-60,-30,19,25,-21,30,23,-72,81,76,-96,79,99,-6,-107,-83,75,71,82,107,43,-11,100,47,-40,-45,124,-97,-99,92,-3,74,89,102,-36,-84,89,67,3,44,-117,108,-100,49,-113,107,103,-26,-2,108,-34,60,47,101,-94,-113,112,-43,101,-37,-69,27,-38,110,39,-91,-101,-91,-28,-61,-37,37,-106,-69,60,59,121,-126,-71,-97,47,32,4,-32,-89,96,16,-89,14,119,-27,68,-11,-53,-52,111,64,-124,70,87,72,20,-114,-99,47,78,-91,54,-32,-24,-60,-49,-70,-128,1,46,-9,-95,-57,76,-44,-18,94,65,-4,-112,10,-12,-46,-109,53,22,-81,60,-22,96,4,90,23,122,68,-22,74,-73,-124,-104,-92,-106,76,-124,-68,59,-95,-59,83,97,-127,-37,96,-92,-49,123,-81,-86,-84,95,69,55,40,54,-80,-110,-3,-8,-26,-120,48,-80,0,44,-106,58,-3,-48,39,-16,1,-12,-87,-120,-65,-95,-113,96,32,-45,105,-86,109,36,40,118,-21,-32,122,-86,-103,-119,-1,-58,-110,-94,31,-14,-108,93,102,45,1,15,-86,29,-5,-43,-74,-75,-51,-8,-39,-114,85,64,40,38,108,71,88,70,67,-2,-35,-72,-36,-93,-82,-69,0,-111,89,22,84,100,-25,-123,93,-89,123,-75,-48,-18,61,-47,-62,-120,-115,-42,-115,-12,5,127,-54,45,83,108,-61,104,-114,-102,-51,59,114,-105,-127,93,-9,-11,-114,40,-61,27,114,-73,20,121,49,32,100,-66,-82,87,-26,-79,38,121,-45,-22,60,-92,19,46,39,-71,87,-9,60,92,-103,-108,33,118,19,124,86,-107,-120,79,37,60,97,-96,-68,40,-51,-66,88,-10,-61,119,89,75,91,86,8,-44,50,19,-30,-32,-47,-128,108,42,-14,75,116,88,-80,-57,25,-86,44,18,-31,-27,-58,77,111,-107,16,89,96,3,-59,-27,-83,-82,24,-120,-51,43,-75,-39,92,76,7,40,39,-62,98,66,110,84,-87,-122,-69,5,54,-82,106,29,-61,33,-98,45,65,-104,-47,-47,61,17,-46,-78,-120,34,-5,-50,113,-13,85,57,90,96,-123,23,-95,-66,103,89,101,-90,-61,-46,67,85,99,66,-85,-10,-93,-29,-66,-110,-45,37,109,-110,88,42,-42,-68,-70,-30,0,82,8,8,96,99,104,-58,59,13,86,-93,5,-29,-111,94,56,12,126,101,69,16,-25,115,17,35,-26,52,99,-13,-118,117,58,0,-101,127,23,0,109,80,-25,61,35,86,11,-117,4,-7,0,107,-123,-92,-41,-70,-94,-104,-3,-21,-56,-32,73,-27,100,21,112,-70,-128,127,96,-123,6,-93,8,-94,17,1,90,34,-75,-51,-52,-61,88,-13,-25,92,79,39,31,-62,-3,114,-13,-11,-43,64,105,-82,-56,29,-6,-103,-12,-109,68,76,-1,-121,51,-54,12,84,-94,58,96,20,40,73,124,-47,-19,-100,10,16,-56,74,81,52,-22,46,-88,108,-8,16,59,-60,-101,-26,-117,-127,-36,78,55,-54,112,33,-5,-64,7,48,111,122,118,85,-48,18,-43,15,109,53,-60,-99,-114,126,101,-125,88,125,38,19,-71,-111,122,-69,-21,-26,2,94,51,-111,-32,10,-87,41,114,-5,80,-46,59,111,16,46,115,-48,-5,-75,-122,123,-109,-70,116,-10,20,-44,-118,-67,17,41,16,102,-47,-31,-22,-96,-39,-1,-19,-98,30,-67,53,-53,-105,-9,24,15,-68,-53,77,-106,90,29,7,46,-30,67,-24,-101,-65,-66,-3,-118,-64,23,43,62,-27,-53,-7,45,-34,30,113,9,30,119,-12,-127,44,-114,-117,-12,-30,94,34,53,-91,-57,106,-38,37,-58,-97,90,116,-78,55,95,59,124,112,5,-99,-10,54,-3,-70,-110,108,-98,-75,110,99,88,99,-80,17,-77,26,123,-73,-26,120,77,-14,29,-61,78,97,-125,-39,19,80,105,22,114,-88,53,-54,-121,-7,92,34,10,101,-57,51,9,47,-124,-93,26,-76,38,70,50,45,-119,106,-51,-121,73,-68,59,121,40,78,92,23,-124,-73,67,43,104,-97,79,-31,15,75,-12,39,13,-99,75,-8,-62,-63,103,-68,101,-72,109,-123,-113,-93,47,-7,-51,64,-67,96,1,-81,34,-49,-66,-82,35,99,52,-95,28,27,-36,27,-93,-15,52,-68,55,-81,-104,117,67,-3,53,102,32,-5,-64,121,-31,-10,19,-123,41,-72,-97,113,45,-10,-111,-71,95,31,-89,-13,36,-111,39,86,126,10,-26,27,-91,48,-77,-45,-25,-106,126,-51,104,101,71,81,2,81,-26,-96,7,-114,-44,-94,-54,-22,110,19,-76,77,3,-127,-86,-78,110,6,-62,-96,121,-100,74,71,-3,-34,43,86,37,109,-110,123,56,118,-7,-33,-96,15,-60,75,-49,-23,-6,-34,57,60,117,-72,-82,-97,-104,88,30,-86,-55,111,-103,-121,-126,-63,-94,-103,-112,0,70,80,118,-46,-44,101,-85,28,85,52,91,-127,29,-88,-63,95,82,59,124,90,-86,-37,7,-116,75,72,-13,82,55,-125,-61,80,90,-75,41,-28,-41,-6,32,-62,35,88,91,61,-112,-104,-115,23,72,-102,-25,77,103,0,73,13,-121,6,81,-52,-70,59,63,113,-84,-85,-112,-9,113,-82,-52,98,-29,45,-25,59,-73,-78,-59,-96,-4,-32,-82,79,16,80,29,94,64,-7,67,-77,-5,-125,119,12,127,-9,104,-95,56,16,58,86,-117,18,66,26,-115,-55,48,59,126,-15,-90,-16,-126,15,120,75,-115,13,106,-76,80,-9,-15,-70,-10,50,-78,56,-51,110,85,-29,-102,20,15,-56,-73,-64,-23,-66,-12,-80,-128,-6,-121,-103,-6,-122,-97,40,46,-36,30,-2,-34,-2,32,116,-93,-59,-109,34,-79,126,-95,-120,-15,-40,-86,-64,71,-48,126,124,-2,-39,75,-64,127,57,30,-107,1,-74,-32,-105,-112,104,-115,80,-27,50,-86,-86,75,-13,-8,81,-13,-66,-38,-14,125,118,103,33,48,-71,10,35,-118,88,65,119,-36,-116,-107,-20,-43,-110,107,33,-27,15,-48,-119,46,-35,96,-75,88,-12,-7,90,-41,-6,-87,89,-88,-117,98,-29,-64,-41,-18,99,-83,13,61,-8,126,46,82,127,-81,-75,20,57,10,-36,81,54,-123,67,18,124,45,-55,95,50,-41,-38,-127,66,61,24,9,51,-55,113,-66,-80,28,49,-113,-71,24,113,-107,105,-71,37,47,-117,73,45,30,-74,117,114,26,6,-42,-80,-74,108,-81,110,73,88,124,-24,-43,-3,49,84,-55,-30,-125,36,102,62,-126,-45,-33,-50,98,-8,6,109,62,113,-84,-12,32,-40,24,-101,-87,-57,-56,59,-123,106,32,12,-71,-18,97,49,113,-47,105,-113,49,99,-124,-124,-81,-118,117,-12,-76,46,-9,-48,-41,-3,-54,-86,97,88,119,-82,-113,-52,-126,-93,-23,-121,127,-97,-28,-24,31,-62,-119,52,-93,75,7,33,-101,-67,67,-45,39,74,-83,127,-115,-66,4,-6,-18,-29,29,-23,68,-123,-103,31,24,117,49,8,-70,41,1,20,71,99,-40,-21,-116,-30,93,66,95,27,63,117,-49,20,-113,-92,-7,127,115,-85,97,-39,34,-67,-10,-53,123,-87,119,2,-77,68,-74,-66,22,96,-13,-12,96,-26,86,35,47,-128,-4,83,52,114,-2,-84,-14,67,-94,-53,-45,-74,-71,-94,94,-101,-122,3,-48,-14,124,-43,56,-3,58,-22,-97,-106,1,-32,57,-16,-127,51,23,-67,-59,-27,-60,125,-46,-125,-117,28,-74,29,29,-76,94,25,58,-32,-31,-101,-105,42,49,101,-115,-60,114,-55,-72,101,94,35,-14,-6,-115,-101,20,-36,-8,103,77,-42,82,61,104,85,35,-71,100,111,67,107,-90,-24,19,6,117,-87,-16,-67,-26,26,24,105,-64,102,105,-36,-7,60,109,112,-19,119,59,-81,10,-91,-9,69,124,-54,124,52,80,13,-105,21,-116,-114,-33,5,0,10,126,-93,22,-26,-115,115,94,22,105,-111,30,-7,102,44,63,0,85,-38,91,-30,98,-21,43,4,-63,-34,-124,-67,38,33,-2,45,-32,-86,12,-92,-38,29,39,121,-119,-42,-23,-30,-106,3,-12,-54,-108,7} + +#define UPDATE_GATE_BIAS {-85,78,113,70,33,38,8,114,70,-35,-67,65,31,-24,-70,-124,-89,104,124,-122,111,61,-87,75,-61,-98,83,-69,-63,45,-11,103} + +#define RESET_GATE_BIAS {-77,67,-93,-3,98,59,-121,33,49,50,41,91,-115,-33,71,47,-70,45,89,-115,72,106,-22,100,97,-100,-95,108,-33,3,14,30} + +#define HIDDEN_STATE_BIAS {-85,78,113,70,33,38,8,114,70,-35,-67,65,31,-24,-70,-124,-89,104,124,-122,111,61,-87,75,-61,-98,83,-69,-63,45,-11,103} + +#define INPUT_DATA1 {-367,-338,0,-89,453,-413,-343,-16,42,418,201,274,-352,477,-290,-92,266,-49,342,453,-398,247,-153,328,217,342,85,69,-38,351,73,128} + +#define INPUT_DATA2 {280,41,-322,61,315,350,504,-227,-221,-483,352,252,455,-236,344,364,-378,229,-187,-498,295,357,-511,58,-349,-458,-420,-66,-400,-379,477,-60} + +#define HISTORY_DATA {-38,53,105,-79,-463,51,-343,-226,-435,-282,218,441,-299,-215,-109,335,340,-471,-109,273,33,-245,-469,170,-26,-59,192,-119,76,-6,236,-145} diff --git a/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/readme.txt b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/readme.txt new file mode 100644 index 0000000..99cf676 --- /dev/null +++ b/Drivers/CMSIS/NN/Examples/ARM/arm_nn_examples/gru/readme.txt @@ -0,0 +1,4 @@ +CMSIS NN Lib example arm_nnexample_gru0 for + Cortex-M4 and Cortex-M7. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/NN/Include/arm_nn_tables.h b/Drivers/CMSIS/NN/Include/arm_nn_tables.h new file mode 100644 index 0000000..9357424 --- /dev/null +++ b/Drivers/CMSIS/NN/Include/arm_nn_tables.h @@ -0,0 +1,59 @@ +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nn_tables.h + * Description: Extern declaration for NN tables + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _ARM_NN_TABLES_H +#define _ARM_NN_TABLES_H + +#include "arm_math.h" + +/** +* @brief tables for various activation functions +* +*/ + +extern const q15_t sigmoidTable_q15[256]; +extern const q7_t sigmoidTable_q7[256]; + +extern const q7_t tanhTable_q7[256]; +extern const q15_t tanhTable_q15[256]; + + /** + * @brief 2-way tables for various activation functions + * + * 2-way table, H table for value larger than 1/4 + * L table for value smaller than 1/4, H table for remaining + * We have this only for the q15_t version. It does not make + * sense to have it for q7_t type + */ +extern const q15_t sigmoidHTable_q15[192]; +extern const q15_t sigmoidLTable_q15[128]; + +extern const q15_t sigmoidLTable_q15[128]; +extern const q15_t sigmoidHTable_q15[192]; + +#endif /* ARM_NN_TABLES_H */ diff --git a/Drivers/CMSIS/NN/Include/arm_nnfunctions.h b/Drivers/CMSIS/NN/Include/arm_nnfunctions.h new file mode 100644 index 0000000..96c59c2 --- /dev/null +++ b/Drivers/CMSIS/NN/Include/arm_nnfunctions.h @@ -0,0 +1,1010 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nnfunctions.h + * Description: Public header file for CMSIS NN Library + * + * $Date: 13. July 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ + +/** + \mainpage CMSIS NN Software Library + * + * Introduction + * ------------ + * + * This user manual describes the CMSIS NN software library, + * a collection of efficient neural network kernels developed to maximize the + * performance and minimize the memory footprint of neural networks on Cortex-M processor cores. + * + * The library is divided into a number of functions each covering a specific category: + * - Neural Network Convolution Functions + * - Neural Network Activation Functions + * - Fully-connected Layer Functions + * - Neural Network Pooling Functions + * - Softmax Functions + * - Neural Network Support Functions + * + * The library has separate functions for operating on different weight and activation data + * types including 8-bit integers (q7_t) and 16-bit integers (q15_t). The descrition of the + * kernels are included in the function description. The implementation details are also + * described in this paper [1]. + * + * Block Diagram + * -------- + * \image html CMSIS-NN-OVERVIEW.PNG + * + * Examples + * -------- + * + * The library ships with a number of examples which demonstrate how to use the library functions. + * + * Pre-processor Macros + * ------------ + * + * Each library project have differant pre-processor macros. + * + * - ARM_MATH_DSP: + * + * Define macro ARM_MATH_DSP, If the silicon supports DSP instructions. + * + * - ARM_MATH_BIG_ENDIAN: + * + * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets. + * + * - ARM_NN_TRUNCATE: + * + * Define macro ARM_NN_TRUNCATE to use floor instead of round-to-the-nearest-int for the computation. + * + * Copyright Notice + * ------------ + * + * Copyright (C) 2010-2018 Arm Limited. All rights reserved. + * + * [1] CMSIS-NN: Efficient Neural Network Kernels for Arm Cortex-M CPUs https://arxiv.org/abs/1801.06601 + */ + +/** + * @defgroup groupNN Neural Network Functions + * These functions perform basic operations for neural network layers. + */ + +#ifndef _ARM_NNFUNCTIONS_H +#define _ARM_NNFUNCTIONS_H + +#include "arm_nnsupportfunctions.h" +#include "arm_nn_tables.h" + +#define USE_INTRINSIC + +//#define ARM_NN_TRUNCATE /* This config the rounding model to floor or round to the nearest int */ + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + * @defgroup NNConv Neural Network Convolution Functions + * + * Perform convolution layer + * + * The convolution is implemented in 2 steps: im2col and GEMM + * + * im2col is a process of converting each patch of image data into + * a column. After im2col, the convolution is computed as matrix-matrix + * multiplication. + * + * To reduce the memory footprint, the im2col is performed partially. + * Each iteration, only a few column (i.e., patches) are generated and + * computed with GEMM kernels similar to CMSIS-DSP arm_mat_mult functions. + * + */ + + /** + * @brief Basic Q7 convolution function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns ARM_MATH_SUCCESS + * + */ + + arm_status arm_convolve_HWC_q7_basic(const q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB); + + /** + * @brief Basic Q7 convolution function (non-sqaure shape) + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in_x input tensor dimention x + * @param[in] dim_im_in_y input tensor dimention y + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel_x filter kernel size x + * @param[in] dim_kernel_y filter kernel size y + * @param[in] padding_x padding size x + * @param[in] padding_y padding size y + * @param[in] stride_x convolution stride x + * @param[in] stride_y convolution stride y + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out_x output tensor dimension x + * @param[in] dim_im_out_y output tensor dimension y + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns ARM_MATH_SUCCESS + */ + + arm_status arm_convolve_HWC_q7_basic_nonsquare(const q7_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB); + + /** + * @brief Basic Q15 convolution function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns ARM_MATH_SUCCESS + * + */ + + arm_status arm_convolve_HWC_q15_basic(const q15_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q15_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q15_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q15_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB); + + /** + * @brief Fast Q7 convolution function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * This function is the version with full list of optimization tricks, but with + * some contraints: + * ch_im_in is multiple of 4 + * ch_im_out is multiple of 2 + */ + + arm_status arm_convolve_HWC_q7_fast(const q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB); + + /** + * @brief Fast Q7 convolution function (non-sqaure shape) + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in_x input tensor dimention x + * @param[in] dim_im_in_y input tensor dimention y + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel_x filter kernel size x + * @param[in] dim_kernel_y filter kernel size y + * @param[in] padding_x padding size x + * @param[in] padding_y padding size y + * @param[in] stride_x convolution stride x + * @param[in] stride_y convolution stride y + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out_x output tensor dimension x + * @param[in] dim_im_out_y output tensor dimension y + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * This function is the version with full list of optimization tricks, but with + * some contraints: + * ch_im_in is multiple of 4 + * ch_im_out is multiple of 2 + */ + + arm_status arm_convolve_HWC_q7_fast_nonsquare(const q7_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB); + + /** + * @brief Fast Q7 version of 1x1 convolution (non-sqaure shape) + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in_x input tensor dimention x + * @param[in] dim_im_in_y input tensor dimention y + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel_x filter kernel size x + * @param[in] dim_kernel_y filter kernel size y + * @param[in] padding_x padding size x + * @param[in] padding_y padding size y + * @param[in] stride_x convolution stride x + * @param[in] stride_y convolution stride y + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out_x output tensor dimension x + * @param[in] dim_im_out_y output tensor dimension y + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * This function implement convolution with 1x1 kernel size (i.e., dim_kernel_x=1 + * and dim_kernel_y=1). It can be used for + * second half of MobileNets after depthwise separable convolution. + * + * This function is the version with full list of optimization tricks, but with + * some contraints: + * ch_im_in is multiple of 4 + * ch_im_out is multiple of 2 + */ + arm_status arm_convolve_1x1_HWC_q7_fast_nonsquare(const q7_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB); + + /** + * @brief Q7 version of convolution for RGB image + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * This kernel is written exclusively for convolution with ch_im_in + * equals 3. This applies on the first layer of CNNs which has input + * image with RGB format. + */ + + arm_status arm_convolve_HWC_q7_RGB(const q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB); + + /** + * @brief Fast Q15 convolution function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * This function is the version with full list of optimization tricks, but with + * some contraints: + * ch_im_in is multiple of 2 + * ch_im_out is multiple of 2 + */ + + arm_status arm_convolve_HWC_q15_fast(const q15_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q15_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q15_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q15_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB); + + /** + * @brief Fast Q15 convolution function (non-sqaure shape) + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in_x input tensor dimention x + * @param[in] dim_im_in_y input tensor dimention y + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel_x filter kernel size x + * @param[in] dim_kernel_y filter kernel size y + * @param[in] padding_x padding size x + * @param[in] padding_y padding size y + * @param[in] stride_x convolution stride x + * @param[in] stride_y convolution stride y + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out_x output tensor dimension x + * @param[in] dim_im_out_y output tensor dimension y + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * + * Buffer size: + * + * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel + * + * bufferB size: 0 + * + * Input dimension constraints: + * + * ch_im_in is multiple of 2 + * + * ch_im_out is multipe of 2 + * + */ + + arm_status + arm_convolve_HWC_q15_fast_nonsquare(const q15_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q15_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q15_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q15_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB); + + /** + * @brief Q7 depthwise separable convolution function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * This function is the version with full list of optimization tricks, but with + * some contraints: + * ch_im_in is multiple of 2 + * ch_im_out is multiple of 2 + */ + + arm_status arm_depthwise_separable_conv_HWC_q7(const q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB); + + /** + * @brief Q7 depthwise separable convolution function (non-square shape) + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in_x input tensor dimention x + * @param[in] dim_im_in_y input tensor dimention y + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel_x filter kernel size x + * @param[in] dim_kernel_y filter kernel size y + * @param[in] padding_x padding sizes x + * @param[in] padding_y padding sizes y + * @param[in] stride_x convolution stride x + * @param[in] stride_y convolution stride y + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out_x output tensor dimension x + * @param[in] dim_im_out_y output tensor dimension y + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * This function is the version with full list of optimization tricks, but with + * some contraints: + * ch_im_in is multiple of 2 + * ch_im_out is multiple of 2 + */ + arm_status arm_depthwise_separable_conv_HWC_q7_nonsquare(const q7_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB); + + +/** + * @defgroup FC Fully-connected Layer Functions + * + * Perform fully-connected layer + * + * Fully-connected layer is basically a matrix-vector multiplication + * with bias. The matrix is the weights and the input/output vectors + * are the activation values. Supported {weight, activation} precisions + * include {8-bit, 8-bit}, {16-bit, 16-bit}, and {8-bit, 16-bit}. + * + * Here we have two types of kernel functions. The basic function + * implements the function using regular GEMV approach. The opt functions + * operates with weights in interleaved formats. + * + */ + + /** + * @brief Q7 basic fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + */ + + arm_status arm_fully_connected_q7(const q7_t * pV, + const q7_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, + const q7_t * bias, + q7_t * pOut, + q15_t * vec_buffer); + + /** + * @brief Q7 opt fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + */ + + arm_status arm_fully_connected_q7_opt(const q7_t * pV, + const q7_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, + const q7_t * bias, + q7_t * pOut, + q15_t * vec_buffer); + + /** + * @brief Q15 basic fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + */ + + arm_status arm_fully_connected_q15(const q15_t * pV, + const q15_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, + const q15_t * bias, + q15_t * pOut, + q15_t * vec_buffer); + + /** + * @brief Q15 opt fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + */ + + arm_status arm_fully_connected_q15_opt(const q15_t * pV, + const q15_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, + const q15_t * bias, + q15_t * pOut, + q15_t * vec_buffer); + + /** + * @brief Mixed Q15-Q7 fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + */ + + arm_status arm_fully_connected_mat_q7_vec_q15(const q15_t * pV, + const q7_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, + const q7_t * bias, + q15_t * pOut, + q15_t * vec_buffer); + + /** + * @brief Mixed Q15-Q7 opt fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + */ + + arm_status arm_fully_connected_mat_q7_vec_q15_opt(const q15_t * pV, + const q7_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, + const q7_t * bias, + q15_t * pOut, + q15_t * vec_buffer); + +/** + * @brief Matrix-Multiplication Kernels for Convolution + * + * These functions are used within convolution layer functions for + * matrix multiplication. + * + * The implementation is similar to CMSIS-DSP arm_mat_mult functions + * with one Q7 and one Q15 operands. The Q15 operand is the im2col + * output which is always with 2 columns. + * + */ + + /** + * @brief Matrix-multiplication function for convolution + * @param[in] pA pointer to operand A + * @param[in] pInBuffer pointer to operand B, always conssists of 2 vectors + * @param[in] ch_im_out numRow of A + * @param[in] numCol_A numCol of A + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias the bias + * @param[in,out] pOut pointer to output + * @return The function returns the incremented output pointer + */ + + q7_t *arm_nn_mat_mult_kernel_q7_q15(const q7_t * pA, + const q15_t * pInBuffer, + const uint16_t ch_im_out, + const uint16_t numCol_A, + const uint16_t bias_shift, + const uint16_t out_shift, + const q7_t * bias, + q7_t * pOut); + + /** + * @brief Matrix-multiplication function for convolution with reordered columns + * @param[in] pA pointer to operand A + * @param[in] pInBuffer pointer to operand B, always conssists of 2 vectors + * @param[in] ch_im_out numRow of A + * @param[in] numCol_A numCol of A + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias the bias + * @param[in,out] pOut pointer to output + * @return The function returns the incremented output pointer + */ + + q7_t *arm_nn_mat_mult_kernel_q7_q15_reordered(const q7_t * pA, + const q15_t * pInBuffer, + const uint16_t ch_im_out, + const uint16_t numCol_A, + const uint16_t bias_shift, + const uint16_t out_shift, + const q7_t * bias, + q7_t * pOut); + +#ifdef __cplusplus +} +#endif + +/* + * Other functions + * These layers are typically not timing critical + * Basic implementation is supported here + */ + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + * @defgroup Acti Neural Network Activation Functions + * + * Perform activation layers, including ReLU (Rectified Linear Unit), + * sigmoid and tanh + * + */ + + /** + * @brief Q7 RELU function + * @param[in,out] data pointer to input + * @param[in] size number of elements + * @return none. + */ + + void arm_relu_q7(q7_t * data, uint16_t size); + + /** + * @brief Q15 RELU function + * @param[in,out] data pointer to input + * @param[in] size number of elements + * @return none. + */ + + void arm_relu_q15(q15_t * data, uint16_t size); + + /** + * @brief Q7 neural network activation function using direct table look-up + * @param[in,out] data pointer to input + * @param[in] size number of elements + * @param[in] int_width bit-width of the integer part, assume to be smaller than 3 + * @param[in] type type of activation functions + * @return none. + */ + + void arm_nn_activations_direct_q7(q7_t * data, uint16_t size, uint16_t int_width, + arm_nn_activation_type type); + + /** + * @brief Q15 neural network activation function using direct table look-up + * @param[in,out] data pointer to input + * @param[in] size number of elements + * @param[in] int_width bit-width of the integer part, assume to be smaller than 3 + * @param[in] type type of activation functions + * @return none. + */ + + void arm_nn_activations_direct_q15(q15_t * data, uint16_t size, uint16_t int_width, + arm_nn_activation_type type); + +/** + * @defgroup Pooling Neural Network Pooling Functions + * + * Perform pooling functions, including max pooling and average pooling + * + */ + + /** + * @brief Q7 max pooling function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] Im_out pointer to output tensor + * @return none. + * + */ + + void arm_maxpool_q7_HWC(q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const uint16_t dim_im_out, + q7_t * bufferA, + q7_t * Im_out); + + /** + * @brief Q7 average pooling function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] Im_out pointer to output tensor + * @return none. + * + */ + + void arm_avepool_q7_HWC(q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const uint16_t dim_im_out, + q7_t * bufferA, + q7_t * Im_out); + +/** + * @defgroup Softmax Softmax Functions + * + * EXP(2) based softmax function + * + */ + + /** + * @brief Q7 softmax function + * @param[in] vec_in pointer to input vector + * @param[in] dim_vec input vector dimention + * @param[out] p_out pointer to output vector + * @return none. + * + */ + + void arm_softmax_q7(const q7_t * vec_in, const uint16_t dim_vec, q7_t * p_out); + + /** + * @brief Q15 softmax function + * @param[in] vec_in pointer to input vector + * @param[in] dim_vec input vector dimention + * @param[out] p_out pointer to output vector + * @return none. + * + */ + + void arm_softmax_q15(const q15_t * vec_in, const uint16_t dim_vec, q15_t * p_out); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Drivers/CMSIS/NN/Include/arm_nnsupportfunctions.h b/Drivers/CMSIS/NN/Include/arm_nnsupportfunctions.h new file mode 100644 index 0000000..05a239d --- /dev/null +++ b/Drivers/CMSIS/NN/Include/arm_nnsupportfunctions.h @@ -0,0 +1,202 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nnsupportfunctions.h + * Description: Public header file of support functions for CMSIS NN Library + * + * $Date: 13. July 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ + +#ifndef _ARM_NNSUPPORTFUNCTIONS_H_ +#define _ARM_NNSUPPORTFUNCTIONS_H_ + +#include "arm_math.h" +#include "arm_common_tables.h" +//#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + * @brief Union for SIMD access of Q31/Q15/Q7 types + */ +union arm_nnword +{ + q31_t word; + /**< Q31 type */ + q15_t half_words[2]; + /**< Q15 type */ + q7_t bytes[4]; + /**< Q7 type */ +}; + +/** + * @brief Struct for specifying activation function types + * + */ +typedef enum +{ + ARM_SIGMOID = 0, + /**< Sigmoid activation function */ + ARM_TANH = 1, + /**< Tanh activation function */ +} arm_nn_activation_type; + +/** + * @defgroup nndata_convert Neural Network Data Conversion Functions + * + * Perform data type conversion in-between neural network operations + * + */ + +/** + * @brief Converts the elements of the Q7 vector to Q15 vector without left-shift + * @param[in] *pSrc points to the Q7 input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + */ + +void arm_q7_to_q15_no_shift(const q7_t * pSrc, q15_t * pDst, uint32_t blockSize); + +/** + * @brief Converts the elements of the Q7 vector to reordered Q15 vector without left-shift + * @param[in] *pSrc points to the Q7 input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + */ + +void arm_q7_to_q15_reordered_no_shift(const q7_t * pSrc, q15_t * pDst, uint32_t blockSize); + +#if defined (ARM_MATH_DSP) + +/** + * @brief read and expand one Q7 word into two Q15 words + */ + +__STATIC_FORCEINLINE void *read_and_pad(void *source, q31_t * out1, q31_t * out2) +{ + q31_t inA = *__SIMD32(source)++; + q31_t inAbuf1 = __SXTB16(__ROR(inA, 8)); + q31_t inAbuf2 = __SXTB16(inA); + +#ifndef ARM_MATH_BIG_ENDIAN + *out2 = __PKHTB(inAbuf1, inAbuf2, 16); + *out1 = __PKHBT(inAbuf2, inAbuf1, 16); +#else + *out1 = __PKHTB(inAbuf1, inAbuf2, 16); + *out2 = __PKHBT(inAbuf2, inAbuf1, 16); +#endif + + return source; +} + +/** + * @brief read and expand one Q7 word into two Q15 words with reordering + */ + +__STATIC_FORCEINLINE void *read_and_pad_reordered(void *source, q31_t * out1, q31_t * out2) +{ + q31_t inA = *__SIMD32(source)++; +#ifndef ARM_MATH_BIG_ENDIAN + *out2 = __SXTB16(__ROR(inA, 8)); + *out1 = __SXTB16(inA); +#else + *out1 = __SXTB16(__ROR(inA, 8)); + *out2 = __SXTB16(inA); +#endif + + return source; +} +#endif + +/** + * @defgroup NNBasicMath Basic Math Functions for Neural Network Computation + * + * Basic Math Functions for Neural Network Computation + * + */ + +/** + * @brief Q7 vector multiplication with variable output shifts + * @param[in] *pSrcA pointer to the first input vector + * @param[in] *pSrcB pointer to the second input vector + * @param[out] *pDst pointer to the output vector + * @param[in] out_shift amount of right-shift for output + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +void arm_nn_mult_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + const uint16_t out_shift, + uint32_t blockSize); + +/** + * @brief Q7 vector multiplication with variable output shifts + * @param[in] *pSrcA pointer to the first input vector + * @param[in] *pSrcB pointer to the second input vector + * @param[out] *pDst pointer to the output vector + * @param[in] out_shift amount of right-shift for output + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. + */ + +void arm_nn_mult_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + const uint16_t out_shift, + uint32_t blockSize); + +/** + * @brief defition to adding rouding offset + */ +#ifndef ARM_NN_TRUNCATE + #define NN_ROUND(out_shift) ( 0x1 << (out_shift - 1) ) +#else + #define NN_ROUND(out_shift) 0 +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM0/RTE_Components.h b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM0/RTE_Components.h new file mode 100644 index 0000000..bf1d6d1 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM0/RTE_Components.h @@ -0,0 +1,20 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_cifar10' + * Target: 'ARMCM0' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM0.h" + + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM3/RTE_Components.h b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM3/RTE_Components.h new file mode 100644 index 0000000..6993e2a --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM3/RTE_Components.h @@ -0,0 +1,26 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_nn_test' + * Target: 'ARMCM3' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM3.h" + +#define RTE_Compiler_IO_STDERR /* Compiler I/O: STDERR */ + #define RTE_Compiler_IO_STDERR_ITM /* Compiler I/O: STDERR ITM */ +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_ITM /* Compiler I/O: STDOUT ITM */ +#define RTE_Compiler_IO_TTY /* Compiler I/O: TTY */ + #define RTE_Compiler_IO_TTY_ITM /* Compiler I/O: TTY ITM */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM4_FP/RTE_Components.h b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM4_FP/RTE_Components.h new file mode 100644 index 0000000..374579e --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM4_FP/RTE_Components.h @@ -0,0 +1,26 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_nn_test' + * Target: 'ARMCM4_FP' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM4_FP.h" + +#define RTE_Compiler_IO_STDERR /* Compiler I/O: STDERR */ + #define RTE_Compiler_IO_STDERR_ITM /* Compiler I/O: STDERR ITM */ +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_ITM /* Compiler I/O: STDOUT ITM */ +#define RTE_Compiler_IO_TTY /* Compiler I/O: TTY */ + #define RTE_Compiler_IO_TTY_ITM /* Compiler I/O: TTY ITM */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM7_SP/RTE_Components.h b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM7_SP/RTE_Components.h new file mode 100644 index 0000000..40dfc78 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/RTE/_ARMCM7_SP/RTE_Components.h @@ -0,0 +1,26 @@ + +/* + * Auto generated Run-Time-Environment Component Configuration File + * *** Do not modify ! *** + * + * Project: 'arm_nnexamples_nn_test' + * Target: 'ARMCM7_SP' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "ARMCM7_SP.h" + +#define RTE_Compiler_IO_STDERR /* Compiler I/O: STDERR */ + #define RTE_Compiler_IO_STDERR_ITM /* Compiler I/O: STDERR ITM */ +#define RTE_Compiler_IO_STDOUT /* Compiler I/O: STDOUT */ + #define RTE_Compiler_IO_STDOUT_ITM /* Compiler I/O: STDOUT ITM */ +#define RTE_Compiler_IO_TTY /* Compiler I/O: TTY */ + #define RTE_Compiler_IO_TTY_ITM /* Compiler I/O: TTY ITM */ + +#endif /* RTE_COMPONENTS_H */ diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q15_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q15_ref.c new file mode 100644 index 0000000..4aa6077 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q15_ref.c @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_convolve_HWC_q15_ref(const q15_t * Im_in, // input image + const uint16_t dim_im_in, // input image dimention + const uint16_t ch_im_in, // number of input image channels + const q15_t * wt, // kernel weights + const uint16_t ch_im_out, // number of filters, i.e., output image channels + const uint16_t dim_kernel, // filter kernel size + const uint16_t padding, // padding sizes + const uint16_t stride, // stride + const q15_t * bias, // bias + const uint16_t bias_shift, const uint16_t out_shift, q15_t * Im_out, // output image + const uint16_t dim_im_out, // output image dimension + q15_t * bufferA, //buffer space for input + q7_t * bufferB //buffer space for output + ) +{ + int i, j, k, l, m, n; + int conv_out; + int in_row, in_col; + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out; j++) + { + for (k = 0; k < dim_im_out; k++) + { +#ifndef ARM_NN_TRUNCATE + conv_out = (bias[i] << bias_shift) + (0x1 << (out_shift - 1)); +#else + conv_out = bias[i] << bias_shift; +#endif + for (m = 0; m < dim_kernel; m++) + { + for (n = 0; n < dim_kernel; n++) + { + in_row = stride * j + m - padding; + in_col = stride * k + n - padding; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += Im_in[(in_row * dim_im_in + in_col) * ch_im_in + l] * + wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q15_t) __SSAT((conv_out >> out_shift), 16); + } + } + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q15_ref_nonsquare.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q15_ref_nonsquare.c new file mode 100644 index 0000000..69efcb2 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q15_ref_nonsquare.c @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void +arm_convolve_HWC_q15_nonsquare_ref(const q15_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q15_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q15_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q15_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB) + +{ + uint16_t i, j, k, l, m, n; + int conv_out; + signed char in_row, in_col; + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out_y; j++) + { + for (k = 0; k < dim_im_out_x; k++) + { +#ifndef ARM_NN_TRUNCATE + conv_out = (bias[i] << bias_shift) + (0x1 << (out_shift - 1)); +#else + conv_out = bias[i] << bias_shift; +#endif + for (m = 0; m < dim_kernel_y; m++) + { + for (n = 0; n < dim_kernel_x; n++) + { + in_row = stride_y * j + m - padding_y; + in_col = stride_x * k + n - padding_x; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += + Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + + l] * wt[i * ch_im_in * dim_kernel_x * dim_kernel_y + (m * dim_kernel_x + + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q15_t) __SSAT((conv_out >> out_shift), 16); + } + } + } +} + + diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q7_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q7_ref.c new file mode 100644 index 0000000..aaf25ba --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q7_ref.c @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_convolve_HWC_q7_ref(const q7_t * Im_in, // input image + const uint16_t dim_im_in, // input image dimention + const uint16_t ch_im_in, // number of input image channels + const q7_t * wt, // kernel weights + const uint16_t ch_im_out, // number of filters, i.e., output image channels + const uint16_t dim_kernel, // filter kernel size + const uint16_t padding, // padding sizes + const uint16_t stride, // stride + const q7_t * bias, // bias + const uint16_t bias_shift, const uint16_t out_shift, q7_t * Im_out, // output image + const uint16_t dim_im_out, // output image dimension + q15_t * bufferA, //buffer space for input + q7_t * bufferB //buffer space for output + ) +{ + int i, j, k, l, m, n; + int conv_out; + int in_row, in_col; + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out; j++) + { + for (k = 0; k < dim_im_out; k++) + { +#ifndef ARM_NN_TRUNCATE + conv_out = ((q31_t) (bias[i]) << bias_shift) + (0x1 << (out_shift - 1)); +#else + conv_out = bias[i] << bias_shift; +#endif + for (m = 0; m < dim_kernel; m++) + { + for (n = 0; n < dim_kernel; n++) + { + // if-for implementation + in_row = stride * j + m - padding; + in_col = stride * k + n - padding; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += Im_in[(in_row * dim_im_in + in_col) * ch_im_in + l] * + wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q7_ref_nonsquare.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q7_ref_nonsquare.c new file mode 100644 index 0000000..e731d07 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_convolve_HWC_q7_ref_nonsquare.c @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_convolve_HWC_q7_ref_nonsquare(const q7_t * Im_in, // input image + const uint16_t dim_im_in_x, // input image dimention x + const uint16_t dim_im_in_y, // input image dimention y + const uint16_t ch_im_in, // number of input image channels + const q7_t * wt, // kernel weights + const uint16_t ch_im_out, // number of filters, i.e., output image channels + const uint16_t dim_kernel_x, // filter kernel size x + const uint16_t dim_kernel_y, // filter kernel size y + const uint16_t padding_x, // padding sizes x + const uint16_t padding_y, // padding sizes y + const uint16_t stride_x, // stride x + const uint16_t stride_y, // stride y + const q7_t * bias, // bias + const uint16_t bias_shift, const uint16_t out_shift, q7_t * Im_out, // output image + const uint16_t dim_im_out_x, // output image dimension x + const uint16_t dim_im_out_y, // output image dimension y + q15_t * bufferA, //buffer space for input + q7_t * bufferB //buffer space for output + ) +{ + int i, j, k, l, m, n; + int conv_out; + int in_row, in_col; + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out_y; j++) + { + for (k = 0; k < dim_im_out_x; k++) + { +#ifndef ARM_NN_TRUNCATE + conv_out = ((q31_t) (bias[i]) << bias_shift) + (0x1 << (out_shift - 1)); +#else + conv_out = bias[i] << bias_shift; +#endif + for (m = 0; m < dim_kernel_y; m++) + { + for (n = 0; n < dim_kernel_x; n++) + { + // if-for implementation + in_row = stride_y * j + m - padding_y; + in_col = stride_x * k + n - padding_x; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + l] * + wt[i * ch_im_in * dim_kernel_y * dim_kernel_x + (m * dim_kernel_x + n) * ch_im_in + + l]; + } + } + } + } + Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_depthwise_separable_conv_HWC_q7_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_depthwise_separable_conv_HWC_q7_ref.c new file mode 100644 index 0000000..970effc --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_depthwise_separable_conv_HWC_q7_ref.c @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_depthwise_separable_conv_HWC_q7_ref(const q7_t * Im_in, // input image + const uint16_t dim_im_in, // input image dimention + const uint16_t ch_im_in, // number of input image channels + const q7_t * wt, // kernel weights + const uint16_t ch_im_out, // number of filters, i.e., output image channels + const uint16_t dim_kernel, // filter kernel size + const uint16_t padding, // padding sizes + const uint16_t stride, // stride + const q7_t * bias, // bias + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + q7_t * Im_out, // output image + const uint16_t dim_im_out, // output image dimension + q15_t * bufferA, //buffer space for input + q7_t * bufferB //buffer space for output + ) +{ + int i_out_y, i_out_x, i_ch_out; + int i_ker_y, i_ker_x; + for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++) + { + for (i_ch_out = 0; i_ch_out < ch_im_out; i_ch_out++) + { + // for each output +#ifndef ARM_NN_TRUNCATE + int conv_out = (bias[i_ch_out] << bias_shift) + (0x1 << (out_shift - 1)); +#else + int conv_out = bias[i_ch_out] << bias_shift; +#endif + for (i_ker_y = 0; i_ker_y < dim_kernel; i_ker_y++) + { + for (i_ker_x = 0; i_ker_x < dim_kernel; i_ker_x++) + { + int in_row = stride * i_out_y + i_ker_y - padding; + int in_col = stride * i_out_x + i_ker_x - padding; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in) + { + conv_out += Im_in[(in_row * dim_im_in + in_col) * ch_im_in + i_ch_out] * + wt[(i_ker_y * dim_kernel + i_ker_x) * ch_im_out + i_ch_out]; + } + } + } + Im_out[(i_out_y * dim_im_out + i_out_x) * ch_im_out + i_ch_out] = + (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_depthwise_separable_conv_HWC_q7_ref_nonsquare.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_depthwise_separable_conv_HWC_q7_ref_nonsquare.c new file mode 100644 index 0000000..8fa4147 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_depthwise_separable_conv_HWC_q7_ref_nonsquare.c @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_depthwise_separable_conv_HWC_q7_ref_nonsquare(const q7_t * Im_in, // input image + const uint16_t dim_im_in_x, // input image dimention x + const uint16_t dim_im_in_y, // input image dimention y + const uint16_t ch_im_in, // number of input image channels + const q7_t * wt, // kernel weights + const uint16_t ch_im_out, // number of filters, i.e., output image channels + const uint16_t dim_kernel_x, // filter kernel size x + const uint16_t dim_kernel_y, // filter kernel size y + const uint16_t padding_x, // padding sizes x + const uint16_t padding_y, // padding sizes y + const uint16_t stride_x, // stride x + const uint16_t stride_y, // stride y + const q7_t * bias, // bias + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + q7_t * Im_out, // output image + const uint16_t dim_im_out_x, // output image dimension x + const uint16_t dim_im_out_y, // output image dimension y + q15_t * bufferA, //buffer space for input + q7_t * bufferB //buffer space for output + ) +{ + int i_out_y, i_out_x, i_ch_out; + int i_ker_y, i_ker_x; + for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++) + { + for (i_ch_out = 0; i_ch_out < ch_im_out; i_ch_out++) + { + // for each output +#ifndef ARM_NN_TRUNCATE + int conv_out = (bias[i_ch_out] << bias_shift) + (0x1 << (out_shift - 1)); +#else + int conv_out = bias[i_ch_out] << bias_shift; +#endif + for (i_ker_y = 0; i_ker_y < dim_kernel_y; i_ker_y++) + { + for (i_ker_x = 0; i_ker_x < dim_kernel_x; i_ker_x++) + { + int in_row = stride_y * i_out_y + i_ker_y - padding_y; + int in_col = stride_x * i_out_x + i_ker_x - padding_x; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x) + { + conv_out += Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + i_ch_out] * + wt[(i_ker_y * dim_kernel_x + i_ker_x) * ch_im_out + i_ch_out]; + } + } + } + Im_out[(i_out_y * dim_im_out_x + i_out_x) * ch_im_out + i_ch_out] = + (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_mat_q7_vec_q15_opt_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_mat_q7_vec_q15_opt_ref.c new file mode 100644 index 0000000..6fe5e2b --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_mat_q7_vec_q15_opt_ref.c @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_fully_connected_mat_q7_vec_q15_opt_ref(const q15_t * pV, // pointer to vector + const q7_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q7_t * bias, q15_t * pOut, // output operand + q15_t * vec_buffer) +{ + + uint16_t rowCnt = num_of_rows >> 2; + const q7_t *pB = pM; + const q15_t *pA; + q15_t *pO = pOut; + const q7_t *pBias = bias; + + while (rowCnt) + { + pA = pV; +#ifndef ARM_NN_TRUNCATE + q31_t sum = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); + q31_t sum2 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); + q31_t sum3 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); + q31_t sum4 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); +#else + q31_t sum = *pBias++ << bias_shift; + q31_t sum2 = *pBias++ << bias_shift; + q31_t sum3 = *pBias++ << bias_shift; + q31_t sum4 = *pBias++ << bias_shift; +#endif + + uint16_t colCnt = dim_vec >> 1; + + while (colCnt) + { + q15_t inA1 = *pA++; + q15_t inA2 = *pA++; + + q7_t inB1 = *pB++; + q7_t inB3 = *pB++; + q7_t inB2 = *pB++; + q7_t inB4 = *pB++; + + sum += inA1 * inB1 + inA2 * inB2; + sum2 += inA1 * inB3 + inA2 * inB4; + + inB1 = *pB++; + inB3 = *pB++; + inB2 = *pB++; + inB4 = *pB++; + + sum3 += inA1 * inB1 + inA2 * inB2; + sum4 += inA1 * inB3 + inA2 * inB4; + + colCnt--; + } + colCnt = dim_vec & 0x1; + while (colCnt) + { + q15_t inA = *pA++; + q7_t inB = *pB++; + sum += inA * inB; + inB = *pB++; + sum2 += inA * inB; + inB = *pB++; + sum3 += inA * inB; + inB = *pB++; + sum4 += inA * inB; + + colCnt--; + } + *pO++ = (q15_t) __SSAT((sum >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum2 >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum3 >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum4 >> out_shift), 16); + + rowCnt--; + } + + rowCnt = num_of_rows & 0x3; + + while (rowCnt) + { + pA = pV; +#ifndef ARM_NN_TRUNCATE + int ip_out = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); +#else + int ip_out = *pBias++ << bias_shift; +#endif + for (int j = 0; j < dim_vec; j++) + { + q15_t inA = *pA++; + q7_t inB = *pB++; + ip_out += inA * inB; + } + *pO++ = (q15_t) __SSAT((ip_out >> out_shift), 16); + + rowCnt--; + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_mat_q7_vec_q15_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_mat_q7_vec_q15_ref.c new file mode 100644 index 0000000..6a4d385 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_mat_q7_vec_q15_ref.c @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_fully_connected_mat_q7_vec_q15_ref(const q15_t * pV, // pointer to vector + const q7_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q7_t * bias, q15_t * pOut, // output operand + q15_t * vec_buffer) +{ + for (int i = 0; i < num_of_rows; i++) + { +#ifndef ARM_NN_TRUNCATE + int ip_out = (bias[i] << bias_shift) + (0x1 << (out_shift - 1)); +#else + int ip_out = bias[i] << bias_shift; +#endif + for (int j = 0; j < dim_vec; j++) + { + ip_out += pV[j] * pM[i * dim_vec + j]; + } + pOut[i] = (q15_t) __SSAT((ip_out >> out_shift), 16); + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q15_opt_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q15_opt_ref.c new file mode 100644 index 0000000..475c757 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q15_opt_ref.c @@ -0,0 +1,119 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_fully_connected_q15_opt_ref(const q15_t * pV, // pointer to vector + const q15_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q15_t * bias, q15_t * pOut, // output operand + q15_t * vec_buffer) +{ + + uint16_t rowCnt = num_of_rows >> 2; + const q15_t *pB = pM; + const q15_t *pA; + q15_t *pO = pOut; + const q15_t *pBias = bias; + + while (rowCnt) + { + pA = pV; +#ifndef ARM_NN_TRUNCATE + q31_t sum = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); + q31_t sum2 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); + q31_t sum3 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); + q31_t sum4 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); +#else + q31_t sum = *pBias++ << bias_shift; + q31_t sum2 = *pBias++ << bias_shift; + q31_t sum3 = *pBias++ << bias_shift; + q31_t sum4 = *pBias++ << bias_shift; +#endif + + uint16_t colCnt = dim_vec >> 1; + + while (colCnt) + { + q15_t inA1 = *pA++; + q15_t inA2 = *pA++; + + q15_t inB1 = *pB++; + q15_t inB2 = *pB++; + sum += inA1 * inB1 + inA2 * inB2; + + inB1 = *pB++; + inB2 = *pB++; + sum2 += inA1 * inB1 + inA2 * inB2; + + inB1 = *pB++; + inB2 = *pB++; + sum3 += inA1 * inB1 + inA2 * inB2; + + inB1 = *pB++; + inB2 = *pB++; + sum4 += inA1 * inB1 + inA2 * inB2; + + colCnt--; + } + colCnt = dim_vec & 0x1; + while (colCnt) + { + q15_t inA = *pA++; + q15_t inB = *pB++; + sum += inA * inB; + inB = *pB++; + sum2 += inA * inB; + inB = *pB++; + sum3 += inA * inB; + inB = *pB++; + sum4 += inA * inB; + colCnt--; + } + *pO++ = (q15_t) __SSAT((sum >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum2 >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum3 >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum4 >> out_shift), 16); + + rowCnt--; + } + + rowCnt = num_of_rows & 0x3; + + while (rowCnt) + { + pA = pV; +#ifndef ARM_NN_TRUNCATE + int ip_out = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); +#else + int ip_out = *pBias++ << bias_shift; +#endif + for (int j = 0; j < dim_vec; j++) + { + q15_t inA = *pA++; + q15_t inB = *pB++; + ip_out += inA * inB; + } + *pO++ = (q15_t) __SSAT((ip_out >> out_shift), 16); + + rowCnt--; + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q15_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q15_ref.c new file mode 100644 index 0000000..3fd0bc0 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q15_ref.c @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_fully_connected_q15_ref(const q15_t * pV, // pointer to vector + const q15_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q15_t * bias, q15_t * pOut, // output operand + q15_t * vec_buffer) +{ + for (int i = 0; i < num_of_rows; i++) + { +#ifndef ARM_NN_TRUNCATE + int ip_out = (bias[i] << bias_shift) + (0x1 << (out_shift - 1)); +#else + int ip_out = bias[i] << bias_shift; +#endif + for (int j = 0; j < dim_vec; j++) + { + ip_out += pV[j] * pM[i * dim_vec + j]; + } + pOut[i] = (q15_t) __SSAT((ip_out >> out_shift), 16); + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q7_opt_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q7_opt_ref.c new file mode 100644 index 0000000..cee8faa --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q7_opt_ref.c @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_fully_connected_q7_opt_ref(const q7_t * pV, // pointer to vector + const q7_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q7_t * bias, q7_t * pOut, // output operand + q15_t * vec_buffer) +{ + + uint16_t rowCnt = num_of_rows >> 2; + const q7_t *pB = pM; + const q7_t *pA; + q7_t *pO = pOut; + const q7_t *pBias = bias; + + while (rowCnt) + { + pA = pV; +#ifndef ARM_NN_TRUNCATE + q31_t sum = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); + q31_t sum2 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); + q31_t sum3 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); + q31_t sum4 = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); +#else + q31_t sum = *pBias++ << bias_shift; + q31_t sum2 = *pBias++ << bias_shift; + q31_t sum3 = *pBias++ << bias_shift; + q31_t sum4 = *pBias++ << bias_shift; +#endif + + uint16_t colCnt = dim_vec >> 2; + + while (colCnt) + { + q7_t inA1 = *pA++; + q7_t inA3 = *pA++; + q7_t inA2 = *pA++; + q7_t inA4 = *pA++; + + q7_t inB1 = *pB++; + q7_t inB3 = *pB++; + q7_t inB2 = *pB++; + q7_t inB4 = *pB++; + + sum += inA1 * inB1 + inA2 * inB2; + sum2 += inA1 * inB3 + inA2 * inB4; + + inB1 = *pB++; + inB3 = *pB++; + inB2 = *pB++; + inB4 = *pB++; + + sum3 += inA1 * inB1 + inA2 * inB2; + sum4 += inA1 * inB3 + inA2 * inB4; + + inB1 = *pB++; + inB3 = *pB++; + inB2 = *pB++; + inB4 = *pB++; + + sum += inA3 * inB1 + inA4 * inB2; + sum2 += inA3 * inB3 + inA4 * inB4; + + inB1 = *pB++; + inB3 = *pB++; + inB2 = *pB++; + inB4 = *pB++; + + sum3 += inA3 * inB1 + inA4 * inB2; + sum4 += inA3 * inB3 + inA4 * inB4; + + colCnt--; + } + colCnt = dim_vec & 0x3; + while (colCnt) + { + q7_t inA = *pA++; + q7_t inB = *pB++; + sum += inA * inB; + inB = *pB++; + sum2 += inA * inB; + inB = *pB++; + sum3 += inA * inB; + inB = *pB++; + sum4 += inA * inB; + + colCnt--; + } + *pO++ = (q7_t) __SSAT((sum >> out_shift), 8); + *pO++ = (q7_t) __SSAT((sum2 >> out_shift), 8); + *pO++ = (q7_t) __SSAT((sum3 >> out_shift), 8); + *pO++ = (q7_t) __SSAT((sum4 >> out_shift), 8); + + rowCnt--; + } + + rowCnt = num_of_rows & 0x3; + + while (rowCnt) + { + pA = pV; +#ifndef ARM_NN_TRUNCATE + int ip_out = (*pBias++ << bias_shift) + (0x1 << (out_shift - 1)); +#else + int ip_out = *pBias++ << bias_shift; +#endif + for (int j = 0; j < dim_vec; j++) + { + q7_t inA = *pA++; + q7_t inB = *pB++; + ip_out += inA * inB; + } + *pO++ = (q7_t) __SSAT((ip_out >> out_shift), 8); + + rowCnt--; + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q7_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q7_ref.c new file mode 100644 index 0000000..78c891c --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_fully_connected_q7_ref.c @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_fully_connected_q7_ref(const q7_t * pV, // pointer to vector + const q7_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q7_t * bias, q7_t * pOut, // output operand + q15_t * vec_buffer) +{ + for (int i = 0; i < num_of_rows; i++) + { +#ifndef ARM_NN_TRUNCATE + int ip_out = (bias[i] << bias_shift) + (0x1 << (out_shift - 1)); +#else + int ip_out = bias[i] << bias_shift; +#endif + for (int j = 0; j < dim_vec; j++) + { + ip_out += pV[j] * pM[i * dim_vec + j]; + } + pOut[i] = (q7_t) __SSAT((ip_out >> out_shift), 8); + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_nn_mult_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_nn_mult_ref.c new file mode 100644 index 0000000..e78850f --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_nn_mult_ref.c @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +void arm_nn_mult_q7_ref(q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + const uint16_t out_shift, + uint32_t blockSize) { + uint16_t i; + +for (i = 0; i < blockSize; i++) + { + q31_t product = pSrcA[i] * pSrcB[i]; +#ifndef ARM_NN_TRUNCATE + pDst[i] = (q7_t)__SSAT((product + (0x1 << (out_shift - 1)))>>out_shift, 8); +#else + pDst[i] = (q7_t)__SSAT(product >> out_shift, 8); +#endif + } +} + +void arm_nn_mult_q15_ref(q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + const uint16_t out_shift, + uint32_t blockSize) { + uint16_t i; + +for (i = 0; i < blockSize; i++) + { + q31_t product = pSrcA[i] * pSrcB[i]; +#ifndef ARM_NN_TRUNCATE + pDst[i] = (q15_t)__SSAT((product + (0x1 << (out_shift - 1)))>>out_shift, 16); +#else + pDst[i] = (q15_t)__SSAT(product >> out_shift, 16); +#endif + + + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_pool_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_pool_ref.c new file mode 100644 index 0000000..b75a0a2 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_pool_ref.c @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ref_functions.h" + +void arm_avepool_q7_HWC_ref(const q7_t * Im_in, // input image + const uint16_t dim_im_in, // input image dimension + const uint16_t ch_im_in, // number of input image channels + const uint16_t dim_kernel, // window kernel size + const uint16_t padding, // padding sizes + const uint16_t stride, // stride + const uint16_t dim_im_out, // output image dimension + q7_t * bufferA, // a buffer for local storage + q7_t * Im_out) +{ + int16_t i_ch_in, i_x, i_y; + int16_t k_x, k_y; + + for (i_ch_in = 0; i_ch_in < ch_im_in; i_ch_in++) + { + for (i_y = 0; i_y < dim_im_out; i_y++) + { + for (i_x = 0; i_x < dim_im_out; i_x++) + { + int sum = 0; + int count = 0; + for (k_y = i_y * stride - padding; k_y < i_y * stride - padding + dim_kernel; k_y++) + { + for (k_x = i_x * stride - padding; k_x < i_x * stride - padding + dim_kernel; k_x++) + { + if (k_y >= 0 && k_x >= 0 && k_y < dim_im_in && k_x < dim_im_in) + { + sum += Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)]; + count++; + } + } + } + Im_out[i_ch_in + ch_im_in * (i_x + i_y * dim_im_out)] = sum / count; + } + } + } +} + +void arm_maxpool_q7_HWC_ref(const q7_t * Im_in, // input image + const uint16_t dim_im_in, // input image dimension + const uint16_t ch_im_in, // number of input image channels + const uint16_t dim_kernel, // window kernel size + const uint16_t padding, // padding sizes + const uint16_t stride, // stride + const uint16_t dim_im_out, // output image dimension + q7_t * bufferA, // a buffer for local storage + q7_t * Im_out) +{ + int16_t i_ch_in, i_x, i_y; + int16_t k_x, k_y; + + for (i_ch_in = 0; i_ch_in < ch_im_in; i_ch_in++) + { + for (i_y = 0; i_y < dim_im_out; i_y++) + { + for (i_x = 0; i_x < dim_im_out; i_x++) + { + int max = -129; + for (k_y = i_y * stride - padding; k_y < i_y * stride - padding + dim_kernel; k_y++) + { + for (k_x = i_x * stride - padding; k_x < i_x * stride - padding + dim_kernel; k_x++) + { + if (k_y >= 0 && k_x >= 0 && k_y < dim_im_in && k_x < dim_im_in) + { + if (Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)] > max) + { + max = Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)]; + } + } + } + } + Im_out[i_ch_in + ch_im_in * (i_x + i_y * dim_im_out)] = max; + } + } + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_relu_ref.c b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_relu_ref.c new file mode 100644 index 0000000..9397ef1 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/arm_relu_ref.c @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +void arm_relu_q7_ref(q7_t * data, uint16_t size) +{ + uint16_t i; + + for (i = 0; i < size; i++) + { + if (data[i] < 0) + data[i] = 0; + } +} + +void arm_relu_q15_ref(q15_t * data, uint16_t size) +{ + uint16_t i; + + for (i = 0; i < size; i++) + { + if (data[i] < 0) + data[i] = 0; + } +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/fully_connected_testing_weights.h b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/fully_connected_testing_weights.h new file mode 100644 index 0000000..31cdcb0 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/fully_connected_testing_weights.h @@ -0,0 +1,7 @@ +#define IP2_WEIGHT {18,-12,-120,-75,60,-92,62,106,43,43,-108,-80,78,76,94,13,-125,63,54,-121,-61,26,60,-125,-79,112,-45,-97,-59,-100,28,35,-15,26,-41,-65,-99,106,115,109,-20,-75,83,-106,51,-55,25,-126,15,-46,-73,62,-89,-15,-37,-79,-12,43,-30,120,46,116,113,11,-57,-81,113,-53,4,117,18,-31,101,65,125,60,76,91,-53,-63,-74,73,-47,-51,-87,-27,-126,-12,107,103,79,113,-41,93,124,122,-72,67,93,-103,-97,-61,62,-17,10,30,124,-119,-17,31,-60,4,88,-76,18,25,-109,-47,19,33,102,71,66,-42,-111,8,-4,-44,78,40,-19,107,-118,11,-105,-116,48,0,-73,-101,-55,-20,-81,71,-121,60,107,110,103,-28,88,-85,34,-90,12,-105,-21,-10,-115,118,-84,97,86,-67,-80,-43,-107,115,108,-49,-59,22,19,122,-76,82,-16,93,67,-100,-57,-41,-43,99,-1,-69,-79,54,-46,24,-59,-1,77,-94,111,-20,-35,108,54,3,107,-59,17,-112,106,-108,95,37,63,60,9,-65,-63,7,-118,-69,-48,111,120,40,44,63,-67,108,26,-37,127,96,-54,-1,21,88,-24,-112,-115,-27,-9,59,-89,22,109,45,47,-42,68,-72,94,55,-121,-23,-2,83,105,-18,104,-34,29,-80,58,-104,-6,-20,53,-86,-5,115,94,39,100,70,-70,-69,-121,-106,-43,94,83,120,121,-93,-97,90,0,-26,-87,6,-26,1,94,67,-26,-71,-21,64,53,35,-46,-102,-58,-103,-7,-34,15,-19,117,-27,59,20,111,-31,-31,43,-36,-19,49,94,-17,119,32,118,110,-19,121,24,30,-74,-12,-38,52,21,-38,98,-58,63,-115,-84,29,22,-93,63,-127,-113,56,25,-2,43,88,107,29,14,116,88,-24,115,-22,-14,-65,116,-119,-95,88,57,-64,18,-127,8,-123,-51,-80,75,-8,-98,2,-109,19,76,40,3,117,121,-4,61,92,-56,21,94,47,-32,24,-50,-38,-26,111,-61,118,-111,94,-14,-74,51,-38,-116,111,62,-39,-121,97,109,-45,-122,-37,-62,108,-74,73,34,59,-21,-20,37,-2,-102,45,121,-41,-116,80,-2,110,-52,-39,62,-12,-127,52,99,13,124,-15,-89,89,85,67,-119,110,-38,-13,-14,-53,-97,119,-121,16,14,-53,-65,-118,26,-4,19,111,-44,22,-57,81,110,-26,-70,45,55,-55,108,-122,-78,-34,24,-69,90,-48,-76,-80,-123,-49,10,113,89,58,119,68,-26,109,-35,-90,88,-90,-66,-24,78,-122,-84,82,76,93,106,123,-52,2,-19,-125,38,36,105,31,3,-99,-27,74,54,-29,8,40,30,-111,21,-118,87,95,58,-29,-117,84,-83,114,-75,96,64,94,-23,-44,46,-77,-82,62,104,74,26,-91,7,63,81,14,-27,33,41,31,-9,64,-19,60,-79,21,-120,49,26,63,-8,105,-116,-58,65,87,-38,-27,109,-97,-50,63,83,-70,111,32,-70,104,22,-123,74,-61,98,60,58,-13,-80,-37,-62,76,-82,-26,76,109,25,81,78,-104,96,-29,-9,-6,-46,-120,54,-33,-30,-108,41,22,110,-54,78,52,14,-40,-70,59,-101,-38,61,-122,77,46,116,-3,-21,-124,-23,41,80,83,29,-71,-43,9,101,77,35,-119,2,93,-30,22,-62,97,-12,29,40,41,36,106,-87,21,93,-41,-112,60,-100,81,91,-89,-10,79,-69,-7,-113,111,-47,51,-23,14,16,-56,98,26,-50,121,127,-104,39,-38,44,-22,-73,-69,125,61,15,-78,-119,-47,-15,-44,-90,-72,29,61,92,109,-10,25,-16,-49,-31,-109,121,5,-2,-125,10,53,80,-13,46,38,1,73,116,66,75,-18,-50,99,-44,-126,-60,-126,-26,-57,-121,-35,105,57,77,112,44,56,83,66,-94,106,60,-119,-124,-25,57,104,106,122,-52,-51,-38,68,47,64,-50,25,-64,-72,-127,73,124,-51,-96,116,53,75,-18,97,97,-96,-12,-16,46,29,105,-118,11,53,-31,-127,-98,-126,2,-115,-116,12,-47,-70,-106,-41,73,-115,-55,-96,126,-124,-41,-48,-43,-6,18,-107,-106,-59,86,-5,85,89,-17,91,-71,103,-116,-122,-80,99,-26,-87,-14,-4,-110,52,-44,-124,-47,15,104,-52,-16,18,62,92,-92,-81,101,94,38,45,-77,-103,-124,74,67,70,-113,25,25,-53,-125,124,33,-84,-119,118,105,-70,-101,-108,-48,111,118,-91,-49,38,102,105,24,56,-95,-119,-45,-96,88,33,126,-101,74,-30,17,-35,24,-23,123,47,-41,-82,91,-3,60,15,-4,46,38,49,-8,-35,82,28,110,8,-58,-108,-124,60,125,-5,49,31,69,-73,94,-25,75,107,75,-1,53,-32,66,20,121,-75,-39,-13,-84,120,15,8,-33,-46,-30,-121,-119,-17,73,-102,-36,103,-20,11,-62,-80,-111,69,-84,-37,38,82,-87,8,69,-110,80,66,-41,122,102,125,-90,72,109,-120,-25,-56,-43,-44,-93,48,63,-59,-30,106,85,-83,-68,44,112,-75,-61,-127,-4,21,-124,-79,-111,-65,68,0,-111,62,-14,41,27,53,68,69,102,-55,122,99,-5,-74,74,2,96,71,107,49,88,19,55,10,84,-124,2,10,-47,-66,-1,-61,-70,3,-101,37,113,120,33,3,18,3,52,-86,38,91,-88,-48,-115,104,-20,49,-25,26,-108,-82,86,80,-125,-86,-73,-109,-72,-49,108,56,-8,-103,-10,-115,-99,97,-120,15,-94,-52,90,-1,-39,-1,-2,89,-103,-69,-82,-63,-32,59,101,-23,-83,-67,-112,-23,-12,-47,-105,-85,-117,-9,-80,-34,-38,108,-77,89,112,-63,28,-69,70,-99,47,59,82,16,-89,47,-78,-21,-101,23,115,-98,-89,23,83,-113,-26,6,-15,101,-72,95,15,-116,46,107,117,67,-98,45,21,-30,10,108,120,99,-30,-91,-96,100,53,-62,-126,54,103,96,-20,-57,14,-128,123,-104,-7,-62,-49,-94,105,108,-104,52,5,-91,114,62,102,-103,10,84,1,30,-102,-17,-112,91,-115,14,1,54,-110,4,99,-10,-35,78,84,78,-66,120,-110,-29,-92,105,-96,118,64,81,48,-127,-32,-9,51,69,-31,40,-84,111,4,-123,-43,54,55,100,-61,19,33,-65,-50,-27,42,120,-66,-126,-17,36,107,2,53,80,95,-94,17,64,50,-25,29,9,-67,-101,-24,82,97,-53,-58,-119,-40,-10,8,-99,60,-29,79,-79,-43,-127,-73,26,-60,-26,114,-82,-19,-111,49,3,-54,100,67,45,72,-84,-50,-17,123,54,-94,-86,80,-9,-87,-51,-57,-32,-92,123,40,-93,-44,-61,-24,-128,-85,-52,-56,-52,51,32,-23,-108,-32,8,-69,9,-2,84,-36,24,126,-80,-73,3,42,20,30,-46,-29,25,89,-30,48,115,37,57,-47,-95,-100,-77,-38,-8,26,-37,-23,-31,124,65,67,-87,35,19,-80,107,-71,120,106,21,-28,69,24,-110,103,-43,-68,94,95,-105,28,-16,-49,-6,88,121,-36,-83,28,-101,102,-28,40,-7,-108,28,97,11,-98,117,80,2,-92,-62,-43,-67,113,74,59,18,-72,-124,-126,-52,102,-128,-14,125,-116,-40,21,82,13,-2,59,-111,-110,-125,-44,-94,109,111,49,-71,40,-52,1,2,-73,-62,-40,-30,-93,-43,25,-103,-94,-110,126,-112,78,32,24,-95,-121,101,25,95,66,-63,5,72,-61,-83,-66,-88,-57,118,113,-110,92,-44,-3,15,24,-14,-114,14,33,-76,-75,80,76,-110,122,-56,101,12,66,-89,21,-76,42,86,-49,77,65,97,127,-20,43,0,-117,115,9,-83,-27,119,15,-122,4,21,-47,72,-113,-68,-98,-124,-89,125,-90,-83,35,-74,79,101,-65,127,60,-118,104,73,44,-41,-111,79,54,-70,-52,-97,10,18,-17,91,-46,-72,3,-35,-23,44,84,-11,-17,-11,-45,-38,67,75,-100,3,54,-16,-22,66,-98,-79,41,-110,-49,-76,-6,-33,-109,30,6,-18,84,63,50,-119,64,-127,-79,101,-91,59,-87,-51,0,-18,-23,-102,-99,120,-28,123,-86,59,-81,-22,-13,43,107,-13,-92,78,95,-10,26,-108,36,-57,-44,-118,-93,-62,-77,-33,-6,-50,-122,-103,-20,57,24,3,-25,-95,-91,-47,74,14,20,16,23,52,78,-15,-17,69,13,-98,126,84,115,74,-125,23,62,110,34,124,-38,111,6,106,-24,82,53,-102,-53,-36,7,60,1,19,80,-26,-111,58,83,-76,-19,112,121,41,-45,69,112,-95,98,-126,68,-37,-109,-55,-70,77,-97,35,-61,12,-58,54,-36,93,-48,4,10,104,102,37,70,4,10,-18,33,26,0,60,69,-49,26,66,-114,-22,-72,-96,124,16,-6,-92,-52,83,103,96,77,-99,4,80,10,-119,-108,-117,122,39,-13,-72,-7,77,-91,58,111,3,29,52,93,116,-123,-16,44,-60,107,60,-57,83,15,42,33,-93,-16,60,-97,53,86,5,-76,120,-42,-88,-35,18,12,110,-4,-62,84,2,-46,-14,-99,27,96,96,-69,15,102,79,-84,-24,-7,-64,-49,107,-51,17,108,-3,-41,-104,122,-123,-2,-58,-69,-36,-69,-33,81,-78,12,0,11,-63,125,97,58,-43,-63,-49,48,73,-78,-87,-88,-94,94,97,56,-31,-27,-113,125,-128,-25,-65,5,67,71,-26,7,40,-115,-55,-119,74,-34,-111,-42,-77,-15,-80,41,71,-121,-62,54,-95,-76,122,-115,101,-80,36,82,-55,-25,11,11,105,39,-98,-80,-77,-45,-58,93,-118,64,126,124,-46,1,26,113,37,107,108,-117,-127,123,-17,-120,-64,-35,-99,10,81,2,55,-110,-122,-120,-3,-24,-11,109,126,72,60,-18,92,-79,32,84,2,103,-7,-22,-7,-2,-108,-40,-55,45,47,14,-77,-60,50,43,-98,67,-52,51,101,107,105,45,-24,52,93,46,-61,-45,-36,-63,-33,-33,50,-81,-30,38,-124,73,-106,-90,54,-116,-86,-77,76,-63,-5,121,-22,-79,-73,-87,29,69,68,5,87,-85,-36,43,124,0,-62,104,72,-98,-63,-90,76,88,52,12,107,63,119,-54,102,-30,80,-63,-50,51,-5,79,110,-101,-11,32,80,-90,-22,-28,78,42,-76,89,-22,74,111,9,-78,28,-76,-17,20,-113,44,99,-82,31,-94,40,42,-75,-10,57,27,41,-29,42,-104,127,-70,-119,115,-77,54,114,-5,89,-63,9,-51,-68,-117,99,13,-23,103,-30,-117,76,78,112,-118,-16,-87,41,-23,72,67,-4,-69,30,-16,-18,-97,-111,-93,-68,-104,-112,55,-92,123,52,-14,-78,3,69,61,-35,-108,68,88,87,-114,-81,-126,26,-94,-111,80,10,47,43,98,28,-115,-122,103,-88,20,-58,79,33,103,-48,118,102,6,86,35,52,126,123,-62,62,-37,-126,-52,65,84,28,127,49,120,-67,-80,-8,96,-60,-25,100,-47,-14,103,-79,-29,-11,75,-77,-29,-56,1,-88,75,39,-36,-12,-71,-77,34,-98,-35,-103,-89,-41,-106,-86,-56,-36,-119,113,-17,-1,118,48,-59,101,-9,-51,-117,4,-71,31,23,6,80,3,40,-52,18,103,-127,50,75,-102,-56,0,47,-16,29,-15,-38,-32,-10,97,60,-4,-77,-105,-38,115,32,-14,5,-57,34,-22,-125,107,-32,99,115,64,-114,-90,118,-101,-25,125,33,-98,105,-88,85,-121,-66,-62,-46,-108,49,-19,-15,86,-83,49,50,42,-25,-128,-3,-89,-107,99,-116,-101,-45,-44,5,-53,57,-96,107,-77,-119,127,-76,99,-94,45,59,-6,-1,6,108,-71,-46,-35,-3,-26,4,104,-106,23,-51,52,104,-67,-74,-38,-125,-107,-9,-24,-93,75,-123,80,-68,28,-98,-119,-69,15,91,105,-17,46,-110,4,76,39,106,18,23,-55,69,-77,7,105,-16,-19,53,38,-95,100,46,73,23,44,86,19,64,87,-28,76,-1,81,-59,-123,-39,70,127,-120,81,89,110,-27,-54,-92,36,70,-45,-3,-12,-72,88,-109,96,123,-80,26,101,87,-113,-100,-45,0,29,122,111,-86,-67,-104,-87,-6,-109,-49,94,110,-85,113,93,-49,-110,-48,67,-85,34,-60,50,89,-34,-1,-46,12,3,-74,-25,0,-23,-48,-100,-98,54,-126,101,95,68,127,-118,-22,9,-106,84,95,-124,-31,-90,-39,18,23,10,7,45,35,52,6,-102,37,40,-31,-9,-33,69,-95,119,-36,6,-124,-3,-100,75,-91,126,106,77,126,112,-72,-60,53,-127,90,-112,45,115,69,32,61,69,-82,56,80,-40,-115,50,-124,34,-13,109,35,-21,-19,-82,90,65,-93,10,-121,106,39,114,-81,10,-43,-58,91,-26,-88,125,-36,93,-19,70,40,121,-26,-124,-28,-28,-70,18,-94,-120,109,10,100,-19,96,-78,-26,62,127,60,91,-6,-52,-64,-52,34,-47,47,-85,-49,-2,-44,91,56,-100,90,-62,124,-113,-67,-127,-15,-67,-39,10,53,87,38,41,3,-58,83,14,36,109,13,57,32,-37,-97,-18,-4,3,5,-33,-31,-7,46,73,-1,-120,-117,33,-82,91,76,84,-35,-128,100,41,117,-102,126,71,-50,18,41,16,-109,117,-86,102,-36,56,-66,-77,-92,-67,-70,-66,75,49,98,53,-36,50,103,62,61,-15,61,11,-19,-51,126,79,14,76,32,-120,35,-21,106,93,66,-74,4,13,19,-18,68,-90,-91,55,93,27,68,70,-64,-97,13,-32,-112,65,-116,91,3,37,13,-77,21,-17,83,53,-56,69,-86,55,-107,-116,106,-49,2,-5,-59,63,124,16,30,-81,-27,-61,-60,65,92,103,72,39,-88,113,112,-31,-52,55,-46,53,-58,-50,50,51,57,-71,-112,-99,42,76,-33,58,2,115,-111,15,27,-49,114,74,-63,5,123,-108,-73,-56,8,-26,-122,-35,88,40,18,51,52,20,65,-35,-24,-41,-7,67,65,-47,20,8,-118,51,107,36,17,96,-108,-69,-40,-72,-61,-67,-17,-109,61,-26,59,-83,-31,10,-25,-62,-47,-113,65,46,25,13,86,-61,-14,113,-52,64,-100,0,110,34,-64,-35,-88,121,-84,81,46,33,-19,22,-23,106,49,40,4,-76,-89,53,110,86,-50,-71,-67,28,14,49,-123,-66,-18,66,-100,-83,111,101,54,18,-70,63,9,-48,-70,-115,-22,21,-71,-14,-74,65,-71,-2,-77,53,-62,-35,-127,-100,33,24,-5,-87,65,82,52,0,87,-37,20,104,-62,-52,31,11,29,-45,-58,-54,107,126,-119,-113,-47,-9,-72,-77,43,102,-116,-4,-79,-120,-90,79,-117,39,1,53,-91,127,123,41,-70,-104,38,31,-53,-85,-18,-127,45,18,13,-59,-5,-75,-110,1,24,-60,28,-110,58,-9,0,43,-104,92,-125,106,-91,-16,-75,-1,113,-115,-83,-95,66,-25,63,-120,-96,-26,101,51,83,27,47,-75,60,83,63,-58,-26,42,-88,-22,111,116,-72,-5,-65,-44,-78,-70,12,-109,95,-71,-27,125,9,-6,-72,104,-39,70,98,-38,48,117,67,-66,-117,-125,-89,49,-72,-71,127,-67,8,8,36,-76,-71,-105,-127,70,-100,-78,115,-84,32,38,78,26,85,43,62,-79,56,-78,113,-2,-12,-37,4,49,-17,123,-87,51,36,-90,-62,-27,11,47,73,-1,-37,18,75,18,19,-109,30,44,-96,91,-21,-115,-88,85,108,-17,-18,52,111,32,-88,108,66,-9,113,13,-117,-44,-49,15,-37,27,28,-57,-15,125,106,43,60,98,-21,-119,36,42,52,6,65,52,23,-39,60,-46,-61,100,50,116,111,8,-128,87,29,-27,-42,93,122,125,50,-82,45,95,-86,6,-10,21,-23,87,21,61,-14,-102,27,-64,43,8,3,-118,-97,-82,-66,-119,-82,56,-13,90,-109,-36,-116,-21,-42,64,-38,-55,-77,-14,-97,93,126,-10,77,39,-78,64,-39,46,-17,27,114,114,-88,80,-86,-88,-20,-121,-7,97,-20,100,82,-3,81,-108,-10,-40,53,-54,59,-103,31,-58,96,85,87,-76,118,-60,24,-41,78,84,38,-56,121,39,-101,55,6,103,40,-39,117,44,-26,-67,14,-33,-71,36,-38,-88,73,-5,28,-41,-21,-31,33,-53,82,93,54,-28,-63,31,-17,94,-48,-128,115,-62,-89,36,-28,-4,-48,75,-104,25,113,-76,-52,103,24,-96,-24,-44,107,-17,124,-95,-75,122,-64,122,51,74,121,106,-45,41,-77,-91,97,-17,87,111,106,-25,-38,-109,-87,-91,42,-71,-97,-111,-69,18,77,66,46,96,10,24,-89,16,-25,10,-1,-114,26,123,68,46,75,-115,44,-125,-121,-60,112,48,-110,-50,-10,-55,-10,75,4,-79,53,-84,99,98,-36,56,52,-66,67,-126,-77,29,-31,-88,-35,26,62,79,-79,-10,-114,-52,110,-21,-22,124,47,-114,-18,-101,-105,-44,-50,-114,-12,-104,-77,-38,-128,60,-81,-110,30,101,13,107,-57,-69,-40,14,-97,-50,-54,92,-60,59,127,-128,-95,95,-8,0,-119,83,24,-96,-106,-84,96,-29,14,-80,82,-120,-28,-116,-55,-78,-31,95,112,-82,68,92,-121,74,75,-62,24,-5,97,6,42,-123,-99,82,-82,-70,56,16,118,-84,66,111,80,-82,-15,-104,69,-12,-76,-23,-69,-55,-46,-48,22,79,16,-51,34,-115,64,23,-106,-77,71,-8,107,46,-22,34,-14,60,-80,117,-8,89,-108,123,25,-58,15,-25,64,-114,-19,69,50,95,-7,-95,120,98,106,-41,-31,-120,-127,88,71,53,41,-50,-68,-80,40,55,96,26,-8,-6,54,96,106,98,-60,-71,90,60,-17,48,24,17,-36,10,95,74,126,-123,51,79,118,115,69,-106,-78,65,121,77,96,78,-70,-49,91,27,-91,-51,62,53,-68,5,-96,-108,12,-45,79,-19,-80,-61,-30,-40,127,-117,77,83,22,116,19,-70,70,-95,95,-77,-120,59,24,-41,79,-100,95,-112,-22,89,-99,77,94,60,84,-5,112,55,-33,-92,63,88,-89,-88,-23,123,-20,-6,115,22,29,125,-46,65,-118,77,-50,94,-31,24,111,-107,63,19,-71,22,-69,-102,-26,-26,22,85,111,126,-55,46,90,-13,34,77,-5,61,43,-29,-60,13,114,107,19,-64,-107,108,-101,-63,103,51,32,-26,79,-115,-91,22,-120,-58,33,-83,-114,95,-48,-126,84,-112,-38,-38,54,-52,-113,46,111,-38,-111,-69,55,26,-43,-88,-81,94,-96,120,102,54,80,-68,-10,11,53,-68,102,32,-50,-60,50,20,124,-27,-57,15,87,-92,57,-50,51,49,-70,-124,32,-76,-51,-3,-38,22,-9,-18,102,-78,49,27,-96,-47,-9,89,-81,-39,37,-82,-70,-88,-104,46,95,31,-17,10,-62,-66,68,26,118,-104,-50,-50,-17,-108,24,-120,-88,22,-31,59,-7,-5,-15,75,101,-102,-17,106,57,12,93,-99,-105,24,51,-14,-7,107,-111,46,98,75,-8,-101,121,42,5,4,89,-110,-42,21,-14,-110,-46,49,-67,-64,-20,-85,72,41,-89,95,79,89,-97,43,48,14,121,109,-53,-50,35,-35,-103,12,-97,-111,-17,2,-89,28,-126,-36,-96,-98,71,-98,-9,74,-59,112,81,-89,-123,31,115,28,110,-20,-109,101,-107,-98,122,-101,15,47,27,-63,-19,85,-113,99,-67,109,-45,55,5,18,-97,31,117,-3,104,-8,11,24,-63,34,-86,42,-65,55,16,103,51,-82,-121,73,-61,104,76,-115,-92,30,86,-30,-110,-51,-115,-43,-108,-13,114,-89,-104,-51,-26,-112,-83,-29,79,8,112,-30,-47,94,71,-21,89,-38,7,-57,-70,105,62,-116,76,-12,95,-94,114,9,55,7,-46,-95,-105,96,61,24,88,25,-126,42,31,69,20,-93,-86,126,-79,97,39,87,-74,-104,-71,66,-83,87,-81,108,75,8,1,-121,120,-10,-1,-29,-47,-20,38,-73,67,7,52,-89,100,-57,92,9,-38,-58,-71,-112,-57,108,-121,-17,-127,-59,40,0,-69,-45,-98,115,-67,49,55,-76,-97,57,-94,-67,-60,97,-25,-13,-77,91,-54,118,36,-122,14,63,29,-66,-41,-87,2,9,-83,14,-42,34,25,-36,54,19,93,95,69,77,115,115,-67,-20,90,110,70,-83,-68,65,28,122,-51,102,-112,123,-55,-6,-88,42,76,-8,-96,127,117,-121,-97,36,62,120,90,-58,-89,79,56,-114,-1,62,69,-44,-96,-49,-18,102,6,-43,-9,-26,34,-127,83,-97,-74,-48,0,118,52,-66,42,-74,126,-89,-107,-37,-72,-114,64,-109,51,-2,34,-104,47,-122,-20,65,-48,24,81,2,-29,122,44,-11,61,27,11,114,75,21,18,22,39,114,-46,-109,124,-41,59,-99,-28,55,53,24,77,-63,51,118,122,101,-48,11,71,91,18,37,-41,-86,65,-69,-48,15,-101,-2,-43,122,20,-102,-58,-97,-88,25,3,47,22,-91,51,37,-14,70,118,-2,-47,25,49,111,45,83,15,-70,-96,8,23,112,-8,-79,-89,49,68,-35,118,101,-1,39,11,-51,98,-5,-67,-64,52,-41,-128,-128,30,-128,74,113,-85,-25,30,-22,2,127,-20,13,-85,-92,-32,-4,-21,31,-105,3,-47,22,35,5,29,-82,126,62,83,-28,-4,-94,93,-93,-120,44,16,19,-67,-70,5,-31,-100,85,80,30,123,-89,-9,52,2,87,79,105,45,82,-93,-46,99,-110,87,-13,-4,-52,19,7,17,54,-92,-118,-127,-24,71,-79,55,-102,0,30,-71,-42,-6,-112,-78,-55,85,29,-32,-103,-54,72,27,-76,-95,30,-7,-6,67,112,76,-79,84,-56,7,-84,85,33,-86,-39,-77,-27,103,100,99,-43,105,68,12,85,44,-92,76,-109,31,20,27,-28,-39,78,30,94,46,-28,-79,76,-103,-26,25,52,-21,-79,9,26,-26,-84,-17,-102,15,-120,70,-100,89,55,-3,-125,-80,-65,-27,89,-41,74,-8,-63,77,99,-9,-9,89,87,74,-101,-44,-16,112,100,102,9,-47,-40,-41,15,-53,-88,59,-44,93,-8,-51,26,76,-54,21,102,94,23,-81,9,110,-125,-76,59,-45,22,-78,72,19,98,127,21,-113,12,62,-80,-27,-21,58,-38,7,-112,-109,-111,-123,32,73,-29,-65,8,23,20,-58,106,-101,-30,20,-93,-36,-38,48,31,57,-26,-76,-93,93,-33,-99,12,25,-68,64,-90,120,-86,82,-102,103,-11,56,-96,104,3,101,83,-82,8,36,-38,-72,98,-94,112,-112,-83,-60,-123,125,86,96,64,17,89,113,34,2,68,51,-85,109,-92,102,50,64,-57,-64,114,66,-37,-120,-32,-102,96,-38,-90,-114,-81,46,-15,108,72,19,118,-98,64,33,-58,-93,-13,70,-93,41,67,93,-61,99,-53,88,-79,-64,-85,48,-67,56,-54,-46,58,2,-14,58,-127,-72,73,34,-12,-50,-50,31,48,-75,33,-89,-7,-93,-76,-95,-96,-52,85,122,35,-14,73,-30,-107,-112,127,-22,74,85,-127,44,13,-78,-85,-63,-86,-121,-58,126,-117,71,113,59,-95,117,41,48,-73,2,-89,34,18,-3,90,112,15,-26,-5,69,46,-24,99,-6,35,38,-33,-55,52,104,53,77,-114,-37,43,-36,-70,114,36,88,-43,-81,53,-99,75,108,-70,92,99,-6,102,-80,-128,-112,119,-107,-22,36,27,123,105,-80,76,-103,83,127,20,-7,14,-52,76,-23,-128,123,63,-65,-111,-53,25,100,-6,40,40,34,-42,-25,-44,-40,8,-36,-46,84,41,-123,106,117,-89,69,-53,-33,-58,-41,90,-114,-68,26,-80,-124,8,-77,92,-49,103,-48,-27,-77,-50,-96,-113,-6,55,-5,-60,106,112,-6,-111,-89,-127,-38,-33,99,83,-88,113,-2,-23,-73,-7,-88,-49,76,69,-42,35,46,58,-96,67,29,84,117,52,-97,93,-113,64,123,-90,-104,109,-41,-26,-50,-48,85,-52,41,104,-20,38,45,25,-105,37,85,15,-92,79,-23,81,-125,-40,-49,18,1,-124,-34,-125,59,-97,65,68,93,64,38,-5,-31,-59,-74,43,-104,-62,-100,95,14,-85,-60,-56,-37,37,116,27,41,106,63,124,64,75,109,72,47,44,-128,-119,60,28,105,58,20,-104,-35,-98,63,118,-61,-11,-28,32,-97,92,57,114,99,47,-80,92,39,-115,-55,-35,-57,-79,4,-113,28,43,124,-31,-119,-83,56,101,-114,-53,116,-102,-126,-73,-124,-97,46,83,-17,49,-17,-13,96,23,3,-60,-93,-73,23,4,-35,-119,-71,5,-118,30,-51,71,112,121,-95,97,23,-37,47,55,102,-6,17,107,-16,-70,124,-81,28,-5,71,77,-70,43,20,71,44,-72,-125,88,123,32,40,-27,98,62,-6,35,47,49,-74,20,-56,-112,82,-50,22,113,82,-11,102,-67,114,-6,-41,123,41,-73,-102,-65,-97,-39,-41,70,-25,-21,96,58,74,119,-125,-112,-101,-57,87,116,-29,-25,-79,24,8,-83,17,76,-28,40,25,80,-59,-77,61,-50,41,69,-21,38,-56,61,26,114,32,49,50,-47,5,-53,29,-43,41,-5,-80,38,-112,49,49,-26,-34,-54,-95,50,103,16,95,28,-31,-126,-31,-2,-48,74,122,-83,-73,-22,-122,89,52,-12,13,18,117,-80,52,-36,88,-57,-37,32,-107,33,-55,15,78,80,23,-30,-44,126,125,124,12,125,73,-3,-8,37,-15,8,29,70,73,92,19,63,-5,24,-123,60,53,-14,-27,-92,20,-12,-38,49,-43,9,-118,111,39,110,50,-16,98,-85,21,23,30,-9,93,-96,77,52,-107,-58,-19,-72,69,21,-127,-43,-43,19,-39,121,-103,-125,58,-105,2,90,92,-49,-74,-95,-52,119,81,38,-13,-63,11,112,-2,125,-34,-82,81,13,65,-43,-88,-74,5,17,-112,-41,26,60,-71,58,-93,-92,-75,-65,-24,-49,119,55,-118,-4,125,34,7,97,20,60,-3,105,-44,-111,-96,-73,53,-79,-83,-53,59,33,-20,-3,-89,117,59,98,-104,-43,-48,19,100,60,-125,76,58,-125,94,78,-40,23,-49,46,85,45,-108,-126,-108,-19,-101,-27,-68,-111,-16,-62,-4,123,18,98,-82,110,-81,-41,-120,76,-41,-76,123,21,-55,58,-24,-86,-125,-94,-37,-127,-77,31,108,-2,30,-24,123,116,10,-16,104,-111,-68,80,-113,62,-64,64,-78,-81,127,101,125,-15,-54,87,-48,-108,86,-119,-55,52,122,-118,47,-121,59,-84,-45,54,-97,-72,94,-38,114,-105,8,-53,-61,69,-113,-27,-30,75,-37,13,-51,24,-49,-122,12,97,111,29,68,-111,-35,21,50,-9,-105,-94,90,43,52,-80,0,-100,61,100,-68,-89,103,-52,-105,29,-128,109,-32,52,-88,77,59,6,38,69,-31,-110,-85,102,112,93,-64,-79,-51,-117,70,11,-51,100,102,-120,-48,79,123,-86,-32,5,5,-108,116,111,-34,-47,-90,79,-17,40,-59,-85,95,-69,-9,42,12,-77,54,-75,-3,68,-128,-88,-32,118,-126,19,20,56,118,-84,-30,-87,87,99,-19,-125,-62,-31,123,-19,-56,-83,21,87,1,-38,-96,73,-30,20,22,95,35,45,87,-61,48,10,80,125,122,24,33,27,37,85,-30,-54,-99,-7,-75,68,-63,-28,-22,14,-84,82,-89,-17,-82,-63,123,-76,77,107,89,-46,49,-69,-88,96,48,5,73,122,33,-16,67,-67,-92,-33,87,-68,113,-23,-45,93,69,-128,-8,-39,87,-91,-104,-76,13,71,-17,-20,-128,111,80,-43,55,34,110,85,-128,-111,48,-109,102,-52,-93,-26,-25,-88,90,81,123,88,-119,-54,63,-96,3,-13,-40,-48,-41,-79,-10,86,69,-62,65,105,-116,49,-107,-98,-38,23,-76,120,86,-74,-69,119,19,-58,-13,100,23,-121,-4,-85,-85,-41,93,117,-52,-75,89,119,55,-13,31,98,-51,110,18,-17,4,73,90,106,99,86,74,-80,45,-18,102,74,-83,-119,124,75,-72,-18,-27,93,-9,-77,-65,-33,86,-76,-94,-11,29,63,-69,-106,-115,107,81,9,-117,44,77,-4,-36,-109,-78,-40,-94,-79,15,-59,40,42,117,44,-44,-51,71,124,-65,73,-46,59,-61,59,45,-56,-95,-96,16,10,-28,-94,120,67,-92,86,-86,-43,-7,-95,112,-37,74,55,-21,-75,-112,97,-20,73,52,-53,-59,-120,71,-40,58,91,85,77,49,-15,-82,-86,-39,-67,-122,-91,-118,-30,-36,-7,50,-89,93,30,17,-99,-104,107,-76,8,-37,-14,101,-15,83,92,101,-82,-46,-91,45,-74,-122,-70,-93,-41,-50,-38,120,-17,-106,-118,98,80,-49,-70,-52,13,-29,39,-119,55,62,-43,-82,-40,-89,-59,112,-120,40,8,9,-81,-62,-6,84,-63,80,-2,-82,-17,-47,100,-64,100,5,13,-128,-81,-122,100,87,29,-100,-49,6,53,-103,52,86,4,-41,17,-126,63,16,79,-89,92,-123,120,34,-102,77,90,-65,-62,101,-36,63,-19,-125,113,-18,-120,-85,-50,55,-34,-69,101,-108,-46,106,-31,12,37,21,-53,-64,122,121,-73,109,-74,-74,-110,-122,54,6,31,114,-20,-63,-25,111,69,119,80,-24,-25,87,-11,-113,-76,-103,111,10,2,94,-22,124,-117,90,52,-85,92,15,-76,-24,-74,102,-57,-47,86,-77,67,-110,95,64,-118,-84,-113,-1,-123,5,5,-108,-28,-33,47,20,-126,58,-45,34,-128,57,-44,-23,-124,123,-13,-125,-87,-75,-60,-124,125,-127,-105,-77,63,-103,122,-3,-106,-99,51,4,65,-115,105,-115,98,-36,32,110,-24,-33,84,76,10,29,22,-85,45,-126,-108,30,-56,-121,47,-121,-114,82,-34,-21,-107,-46,60,-78,29,2,-87,109,-68,-25,-84,80,106,-62,-64,-73,-72,42,29,-46,10,-43,76,-12,-121,-5,39,86,73,74,-32,-115,-99,112,-10,-68,-38,-18,103,22,-122,-119,-52,-76,-124,13,127,47,1,-29,26,-108,-17,-86,52,-28,-81,-35,-1,-99,68,94,12,97,-24,-98,70,63,-96,-58,-37,105,-48,-62,107,-113,12,121,42,105,-7,112,86,-18,116,117,82,123,-54,2,-110,76,-118,54,57,82,68,92,22,76,-109,96,-71,-88,56,81,108,-8,76,-98,-104,-80,-116,77,-44,16,1,-103,-127,32,-25,-109,-127,-6,83,123,33,56,38,8,4,89,40,-116,77,-109,28,12,-88,89,-65,-27,-87,22,-37,62,23,68,15,30,-43,-49,-42,-32,-74,-11,104,-24,-78,-20,50,-9,96,-73,90,116,-68,-43,47,2,-84,-115,2,-39,3,-17,-21,-114,-104,38,114,-68,23,-97,-96,-25,68,-39,93,80,-117,-27,-96,-21,23,-50,-109,44,75,38,-8,-16,-99,-110,-29,34,-128,117,-4,53,-77,-110,-35,77,100,-117,-4,-101,-40,108,-86,65,-44,15,-63,-83,80,-50,34,-61,113,18,-29,-31,25,-128,-4,-105,89,120,3,-107,-29,31,-38,26,102,-7,-6,-34,-44,-2,25,-23,-30,108,25,124,100,-48,-46,-60,-71,62,-118,-89,58,-73,96,-128,73,-87,-99,63,-24,124,-86,38,34,-51,27,-71,53,117,99,-7,121,-9,-35,-108,-64,-105,99,-42,-6,72,-22,-19,36,107,-109,90,-27,32,-112,76,106,-81,-63,-57,-29,-11,-24,-118,77,-80,111,-52,48,-37,123,67,-124,-64,-101,34,100,-62,-37,113,-68,122,43,112,-86,-110,64,-33,-17,29,38,-90,107,40,-58,91,23,64,58,-101,94,-22,78,-36,48,-8,-49,28,15,-90,36,103,45,127,-89,-84,-56,-27,103,45,-112,121,104,-13,118,24,-84,-66,122,121,12,-78,-2,22,-59,92,7,116,92,-115,62,-3,-126,-24,113,122,-71,0,-68,-105,59,-62,18,110,-24,13,48,50,8,19,64,-127,74,-46,-86,-99,14,-115,-18,-124,-42,51,-27,-26,-119,-99,97,82,-47,47,117,78,-59,-109,-13,-61,-49,12,-86,-91,47,-64,-71,-79,67,-33,56,6,-33,-29,-76,-16,95,94,-76,-72,45,27,-117,-99,27,-37,47,-58,69,-90,100,107,23,-44,-76,-50,-9,113,20,44,121,-125,100,43,81,45,-66,104,-65,-31,-54,-81,-13,20,-54,-23,-35,37,44,78,61,-102,-106,46,-79,-52,-59,57,-18,28,81,-110,-94,44,83,-43,-51,19,-78,7,80,99,59,-61,100,21,96,100,-55,-108,-90,-41,94,-37,53,14,48,116,-4,111,-9,-32,88,-61,-15,79,36,-55,67,-35,38,13,-82,-61,-61,-70,14,34,30,-99,4,-29,41,-94,14,-58,45,90,-24,-63,54,3,110,113,-18,36,-5,39,82,121,-101,-81,107,-57,-4,-51,114,-77,105,-82,-15,83,-53,44,14,51,-58,-44,106,-79,-21,-106,-47,114,-91,-76,-55,81,-128,94,118,90,2,116,-69,103,14,-62,-35,-32,127,117,77,87,-115,-16,-3,-104,-67,-39,-91,61,-5,-34,-62,102,-123,89,-38,111,-2,92,-29,-2,-66,124,107,98,-74,-93,-58,-65,-103,-38,-23,88,82,99,76,67,56,-62,-121,-17,-80,-77,-4,-45,77,-85,-75,116,7,0,76,71,-104,-70,98,-66,26,44,27,63,-44,-97,-13,37,-7,8,-125,11,100,47,77,112,73,67,68,-96,23,-35,48,-56,-11,29,-78,116,-72,123,39,-21,10,-21,47,18,40,-7,-8,1,-50,18,35,-103,-99,-49,7,-10,84,34,-11,-62,-105,38,-55,-101,-46,-103,-3,44,-90,-78,-71,-103,70,-60,-93,59,48,3,60,11,-112,-44,88,102,52,-77,-90,46,101,47,32,-19,-78,8,-36,-66,60,-71,39,-100,103,127,-95,109,11,87,-71,-106,-118,72,73,119,37,-41,68,-41,38,-84,110,-63,77,112,72,-90,63,125,76,46,95,101,95,8,18,77,2,2,114,99,-88,65,13,48,11,28,99,32,101,-94,84,19,-48,4,5,-26,105,-14,-36,68,-20,-43,8,28,-98,97,-89,-47,102,-67,-41,49,20,50,-118,-121,-74,82,-68,81,102,7,99,-89,85,2,71,9,-104,124,81,-110,17,73,-32,81,-15,7,119,116,-26,-12,39,-43,96,-68,3,-88,-93,-56,-36,66,77,102,-80,1,-44,-81,63,83,-80,29,56,-124,-60,80,96,126,-74,53,-16,-117,6,52,-57,45,20,2,-33,34,27,-16,21,127,76,-105,56,68,6,-26,-21,35,-108,46,10,-58,80,-100,-77,63,-10,111,71,-22,-3,95,104,-90,-38,-11,-104,-31,111,-113,26,-4,-2,-30,-2,58,100,-112,49,-76,101,-40,-106,-45,-126,39,-24,5,-97,-90,-84,-113,-77,-18,41,63,-25,42,16,-85,90,-4,-80,-2,-117,21,-75,-35,28,-118,-20,45,83,88,122,30,-78,-127,54,-13,96,34,9,103,-88,92,120,-59,-87,48,86,116,-36,-38,-65,103,104,-70,-1,90,66,-35,71,-54,-7,-107,-3,-78,-49,-105,-87,82,22,29,-3,-13,23,108,87,-65,-39,78,37,-13,-19,59,6,83,118,85,3,58,5,-113,-23,-47,58,83,25,-85,-80,87,86,84,-75,-111,106,-89,-17,71,32,-81,106,-30,-125,-50,95,-74,-14,-86,-78,102,53,-66,89,95,-35,39,-83,32,-86,-56,103,71,110,-79,-97,-107,-24,29,-19,84,103,87,48,-13,-14,-40,17,-64,-74,21,74,-29,2,53,-84,4,-113,50,66,92,26,5,34,9,-126,109,67,19,116,85,-87,-53,12,-99,87,63,100,-80,-62,85,-99,60,-6,-80,-59,17,-56,-111,-7,-114,21,-13,-110,-115,112,70,-70,-40,-47,64,87,74,59,52,-96,-79,-61,12,32,-119,57,80,27,89,16,-95,-78,23,90,-14,-42,-117,-49,40,-2,-122,-94,-47,101,-47,43,-94,22,96,7,-7,30,78,-110,-19,-66,-86,4,-83,118,-105,83,46,-104,75,88,20,-82,-106,-80,-71,52,121,117,-39,77,3,105,-112,49,54,15,33,61,-48,6,-76,2,-101,-54,8,-50,-36,-105,-55,126,2,76,10,95,44,-85,-53,3,-75,-42,-102,6,-70,-9,88,91,33,84,-18,-28,21,33,-65,-97,-87,73,103,-96,-67,93,39,-58,-49,92,-48,-75,54,61,123,-29,-68,16,-84,-90,14,-84,-100,-37,82,57,-61,84,63,101,9,-97,-124,-31,102,98,-57,-77,26,-110,-16,102,119,80,-38,-54,-35,-45,-115,-114,123,-35,-99,111,-52,10,-99,-112,-16,99,30,-50,109,-66,70,48,-62,-45,37,-25,125,22,19,54,61,116,-52,108,70,120,9,-56,71,-8,-64,-5,-99,-7,65,-60,23,13,79,-63,-79,96,22,89,61,-41,-51,51,88,-61,-12,45,15,-71,-9,51,29,-105,-82,33,13,-29,-73,43,123,33,-86,-90,41,106,10,-124,52,11,114,82,-60,30,-47,-118,-6,117,-33,-5,1,-57,0,-60,27,-17,21,46,-83,-121,98,-59,92,4,-21,-109,-88,75,-40,80,97,-32,9,127,-2,-15,109,17,-55,-53,-94,65,79,64,-29,-24,-123,-121,-109,-99,-43,10,-111,-79,-124,68,-55,-83,-85,103,112,-122,-101,29,0,97,-61,-67,95,10,-86,53,-42,-119,12,-42,-24,20,3,123,87,74,-12,-102,105,-6,85,10,116,24,40,96,-5,-7,19,43,-104,121,32,7,-6,16,91,-70,80,39,62,44,29,-114,68,51,50,-51,17,-120,27,-52,-43,109,49,0,-13,74,26,83,-44,-108,96,99,5,-33,-69,-35,-80,47,-13,-117,-65,-78,110,61,-75,107,88,-100,-55,-64,-73,-29,65,26,-86,77,-54,127,-56,-77,61,65,10,-18,-57,28,2,-63,125,-116,88,12,-112,106,78,-36,4,-98,63,-57,83,-32,40,-19,-72,36,-59,3,10,-114,26,-1,-87,32,-36,13,8,-112,124,-50,-1,-28,-47,63,10,-28,69,-42,-101,15,-89,19,59,-76,115,14,68,-83,68,-2,-19,19,-93,31,61,29,116,121,-80,-84,115,69,75,-22,68,-51,-27,-106,105,-109,-48,-65,54,123,100,-13,-110,-79,103,-28,10,124,91,114,95,13,39,-34,-101,-128,-121,-18,-35,-102,101,-127,74,-107,-100,-19,-84,-56,-33,109,-48,29,-65,-86,-26,-111,-119,113,-35,-95,-24,125,-85,-105,9,-76,2,11,90,22,48,44,-2,76,-11,72,91,-93,79,-28,92,-39,-23,50,-34,91,56,-101,-86,3,-113,53,46,52,-108,25,57,117,-108,-59,105,-127,-108,65,-92,15,-71,-23,114,108,120,-36,77,-23,54,-100,-65,112,118,69,-118,-78,-43,-56,94,-47,30,-49,-111,-17,-109,-105,-41,-25,-80,-38,111,40,11,112,-95,-68,-13,-103,-46,-91,108,32,52,-76,-30,39,-52,-57,-15,-63,-48,-23,-57,27,29,117,-74,-112,20,109,24,4,25,-64,125,-1,-63,-29,-25,-89,83,-3,28,-63,30,47,1,-1,-29,22,24,43,-18,69,19,90,-37,27,-51,69,98,-13,-96,72,61,44,-103,72,74,92,83,98,94,92,79,-26,115,60,-73,-73,-98,34,-90,58,51,-77,-51,67,-124,-50,28,-54,-43,-111,35,-97,-50,22,83,98,29,13,-44,56,65,66,-31,-111,79,124,-28,-72,118,-88,116,-125,-66,-120,78,-79,-42,90,-115,-123,-19,-98,-86,68,40,-91,125,65,91,-111,114,90,5,-68,-52,97,59,64,102,107,1,25,-64,64,-21,29,115,15,-8,74,10,-104,-99,35,-94,20,43,-22,-44,23,-106,104,54,72,49,-12,40,33,-12,-108,-85,-48,-123,-111,-105,-107,-116,54,-25,-17,46,26,32,-31,42,-21,30,20,94,-33,35,-30,33,15,28,40,98,83,-102,-88,11,-8,95,-73,-109,81,77,-44,115,-36,86,43,-16,-98,-72,-33,6,-18,-27,-116,-113,14,-91,-17,28,-64,-1,-58,119,-16,109,-8,-17,108,-58,43,-54,-80,-75,117,-58,-72,-51,4,-33,20,123,-97,-15,41,93,24,-86,-87,-123,-40,2,-111,57,60,11,-45,83,-43,-62,-125,-97,-51,-12,94,-74,-37,-123,-31,2,18,8,37,-1,-105,40,43,40,-63,77,-53,86,-95,-96,120,107,-67,18,38,-70,111,14,-109,98,-72,60,7,-121,-10,-128,36,101,20,126,-72,-29,-11,95,27,-74,-51,-115,18,-101,16,-59,-43,68,38,106,-110,38,-122,-46,-61,77,-110,-23,62,-33,32,-96,38,53,84,-80,34,-115,91,-19,106,35,7,18,-51,88,109,-114,-121,51,-76,-43,-87,-46,15,-55,83,74,-38,-3,43,82,-5,85,-100,-55,127,117,-75,90,92,106,-41,-39,-120,-41,35,5,83,126,62,-105,-33,117,-81,69,110,43,-122,43,100,45,-46,-104,-2,21,75,27,90,-82,80,110,24,-40,113,64,-79,110,97,-121,-14,-128,-60,-30,-91,7,-89,36,85,57,-17,15,11,91,-98,64,38,-96,67,-71,0,44,-8,119,123,38,-122,45,7,-6,-92,-111,-67,27,-95,-126,86,40,46,30,90,-123,105,127,81,-70,4,-123,86,21,-125,-12,-25,-119,42,22,46,78,50,-123,-112,-83,-19,86,-33,-109,104,-28,111,69,-48,61,53,-80,-102,56,105,88,74,6,-49,123,88,60,9,122,-32,94,-60,-80,73,-27,-9,113,34,-66,-93,-117,-35,51,36,45,-95,88,95,4,-22,98,-38,102,119,-40,-115,82,-80,88,77,-97,-49,99,10,-71,-3,-82,-124,-27,25,74,-9,21,-33,77,-43,44,-15,112,100,85,-124,90,-10,83,59,64,-108,-89,-1,77,-14,-74,84,-128,-11,41,74,80,95,-69,3,-86,-111,-26,-34,-54,-37,81,112,-40,-44,32,-83,-55,-62,52,-33,127,106,-69,17,-70,48,-34,0,-92,44,-110,22,113,-51,30,73,30,86,89,-90,-95,69,30,125,54,4,6,3,-80,-76,16,53,-67,-27,-42,-105,-98,-32,-66,-93,126,107,45,-110,19,125,54,121,102,52,-121,119,103,49,-32,90,-115,60,54,-77,-94,59,-119,42,-42,-6,106,-5,-90,-6,-74,-32,-81,113,-103,-69,-126,119,-90,7,24,52,115,-52,-96,59,74,-113,32,69,5,127,-38,-91,126,-126,74,-90,94,50,-39,-117,-22,-102,-106,-98,109,52,122,12,-111,123,-100,-87,35,-54,14,-89,126,-119,88,-107,62,-88,56,95,9,-95,-106,-25,69,84,-67,35,-42,-76,-61,-99,-88,-82,-24,-20,-26,75,109,74,27,-100,-55,-77,72,-6,52,76,96,-100,67,53,5,111,48,-16,38,89,3,-1,-115,59,-19,-16,-34,-61,-94,-115,-16,90,-110,116,65,-121,-117,104,109,-107,-26,-72,123,108,-49,55,36,-100,91,59,-93,-7,40,77,-91,84,80,102,-108,-113,-104,-22,-64,-90,-57,-37,-63,78,33,-95,-78,102,20,-105,94,24,59,-81,-39,120,54,-40,-56,-45,9,-107,-104,74,72,29,-45,91,-18,-106,11,91,-51,62,-87,-109,70,126,-49,-117,119,-89,-117,79,-124,-95,-93,21,108,122,39,18,48,3,-107,30,-99,-19,103,-91,83,-110,41,107,-78,99,-23,58,-99,39,50,-47,89,126,-119,58,123,31,7,23,43,-17,64,65,93,7,-26,-107,50,-11,-63,-24,-39,2,-55,-119,68,6,119,-90,-16,-92,93,111,-79,-89,78,-4,95,-7,-65,32,-100,35,-20,76,114,-126,-69,-13,-127,-43,-11,62,-107,77,10,114,-76,94,85,-97,99,50,-76,-57,-72,-117,86,9,28,124,14,-108,26,19,37,83,38,-125,21,-56,-42,51,-69,-3,-108,51,70,15,33,-125,-36,-122,-34,126,29,25,103,9,66,-126,54,-54,105,-9,-124,59,-105,78,76,3,101,-94,-67,-71,90,-7,62,-77,94,26,49,-14,-112,55,67,92,-26,97,80,-36,-13,106,33,-111,-110,51,-12,118,21,-75,-25,14,75,2,-109,123,-11,98,77,109,-47,6,22,-38,124,-100,61,27,-124,89,-54,-108,-28,123,-99,-24,-77,115,70,105,-32,49,-83,-99,-29,87,-11,79,26,77,-83,-22,-38,-13,-56,-82,10,-66,4,-69,-26,-19,-7,91,-58,35,101,-31,80,-5,-37,53,-73,-126,90,-76,20,-51,-1,55,51,-93,96,-39,-81,-64,-111,65,-47,46,-87,-65,-89,100,-36,-5,-9,-2,81,-37,-97,98,-25,117,-75,79,-81,-118,112,76,-105,120,34,-116,23,-125,-13,77,-73,87,-115,-108,-44,19,-96,-103,89,-56,-60,52,-3,-105,-59,37,-43,124,76,-2,25,57,92,-57,113,-20,22,79,32,122,48,115,-85,-6,-35,-103,9,13,93,-26,-123,-98,109,7,29,4,92,-54,-89,52,-92,74,8,55,13,97,-49,87,-26,-28,-11,14,72,-29,112,-82,12,4,50,-24,63,-112,84,74,122,23,57,-58,-125,20,-85,104,-32,125,126,-86,50,-83,14,-82,107,-124,26,101,-55,-118,-72,-100,-105,102,-111,-76,123,47,103,10,-14,-109,56,-70,104,27,-18,-33,30,41,-56,122,-117,-56,-76,-45,49,41,-34,-45,-35,100,77,-36,-24,0,102,88,123,11,116,47,-1,-9,-3,78,127,-108,33,64,27,-115,30,110,-105,-92,-15,56,21,20,-70,15,47,127,9,-21,122,83,105,117,21,10,-5,31,-91,-126,63,-7,-128,-20,46,106,22,3,-102,96,110,-106,71,-93,-52,112,121,-117,-74,-49,-7,118,121,78,76,-94,93,108,52,-67,-10,-103,54,62,109,5,81,-90,-100,24,109,22,30,-48,-36,-61,-36,119,120,-47,-92,112,-125,-41,-7,-11,-106,50,-23,32,84,-125,79,-36,-6,68,41,-97,-102,-51,-72,114,-105,126,-127,-13,53,-112,-71,38,44,-98,0,93,123,-60,-19,69,108,-68,-106,-68,-53,-55,-21,-37,118,-117,-121,52,-52,88,-36,63,-82,-72,-77,-25,68,115,112,62,-124,-71,122,-68,30,42,110,98,-42,27,22,-112,22,-56,-64,74,72,-92,32,-119,-50,-69,-64,-106,-59,83,9,125,20,49,-65,-128,-33,102,-28,46,97,28,74,-47,-59,-32,-113,-96,33,-54,20,-18,7,107,-61,51,6,104,23,15,-128,123,-92,-12,-75,0,-37,-89,-17,-14,-106,126,-5,-25,57,39,-66,102,82,32,28,97,-78,33,93,125,53,4,-74,-102,121,-51,-126,84,57,34,127,22,97,4,-24,88,-23,-65,-63,89,85,119,-99,97,6,94,-107,-69,18,107,-79,-25,-71,68,14,-16,-75,-21,30,-20,106,98,71,38,105,48,-41,110,-45,-70,68,8,-42,-82,110,29,-32,71,60,-77,-53,-20,6,-94,-90,88,107,28,74,58,-95,-19,26,-63,-73,88,4,21,125,82,-71,16,85,107,-67,-48,119,-17,27,-63,49,102,-78,-20,31,98,125,64,56,-100,23,-82,-89,-65,10,49,-105,-38,18,48,-50,-114,-23,87,71,-84,-28,-101,-65,34,-112,-18,38,-80,-120,-95,90,-79,-27,92,28,8,63,49,30,3,-85,-111,-114,52,-111,-53,42,-118,22,119,35,65,21,-8,3,72,-89,-111,-121,-29,45,-125,53,-122,-24,49,-64,-80,-107,-23,125,-84,-91,-115,102,26,124,-9,-72,67,-57,29,-34,57,15,-2,-14,16,-84,5,-95,115,-97,15,-58,39,2,-24,80,-37,55,-62,-43,24,38,11,-110,-76,54,-58,-109,112,24,-65,6,-127,-94,78,107,-67,21,-23,16,-29,62,48,-53,46,41,-123,-39,51,-82,114,83,14,93,41,-59,69,-23,-17,50,-113,-41,-117,40,-95,2,4,45,23,75,-110,-90,74,-18,77,9,113,97,66,-102,-76,-16,78,2,49,-105,71,-105,94,-43,74,-86,-89,71,126,117,-51,-72,73,-27,-100,116,17,-60,-83,-55,42,-45,-37,91,-100,-75,-51,-11,90,41,102,-99,-108,-8,28,114,-24,-41,127,36,-23,118,-44,8,-41,48,-62,-127,-89,124,3,89,-1,19,38,-64,-128,123,121,14,-99,-79,-19,23,88,-53,-80,-35,119,38,51,84,-104,-50,-103,10,-41,-39,-88,-118,-37,-55,46,-41,123,1,-94,-50,-24,119,-86,-110,93,59,51,-56,71,-48,0,-110,4,-4,-56,-99,-99,-31,29,-21,-65,-23,116,1,93,3,25,-29,95,-1,-109,33,77,21,-116,78,40,-124,14,-114,-50,35,116,-19,-52,112,26,-110,47,-120,72,-36,19,-97,-53,-28,-64,71,4,104,101,-2,44,-26,-102,-4,-18,8,30,-35,6,39,-93,-39,44,-3,-92,16,-87,-38,51,-87,-82,79,17,-20,28,-18,-118,-21,-19,-18,127,-48,19,-43,36,93,42,-46,-34,-70,-121,-51,-128,83,20,-19,120,37,-8,118,58,30,-95,63,-108,-55,-1,-80,78,1,34,37,71,-16,8,20,-55,8,-15,122,107,-125,-21,111,38,75,87,12,-20,-77,115,26,-102,-86,94,-85,-97,-109,29,95,-48,-22,-117,-104,-28,-94,91,-65,51,-79,-51,-90,97,112,3,59,73,16,-119,-88,-21,52,4,-66,-107,85,-114,71,87,-68,116,11,-3,-123,-22,81,-77,-72,108,19,118,-18,-54,21,-35,24,1,76,9,72,-58,-31,-1,-124,-19,121,-47,71,118,-83,-12,54,40,-125,45,23,-121,-46,81,-16,-73,-127,56,-117,-112,-99,-128,-81,51,52,10,27,97,67,112,67,-1,-97,-94,-42,27,91,-28,-9,-82,-112,50,12,108,3,-42,86,22,115,-72,74,3,-17,28,38,79,-29,113,32,-27,-61,-87,-99,119,-53,112,-82,-17,100,-111,80,112,-106,72,94,-124,12,-29,-88,95,54,-107,-123,64,-3,124,-83,-63,120,-91,-46,-117,123,-21,-108,-65,-26,-63,-115,-54,126,81,27,80,-6,-56,71,-91,-22,46,23,-39,26,42,61,74,46,0,-56,28,28,-75,66,-20,45,-72,-86,36,-73,-41,14,115,97,102,20,55,46,-120,-26,-18,-24,-46,99,47,-2,10,-57,24,10,90,43,123,10,-90,112,99,-16,54,-3,107,-72,-84,-125,30,112,127,76,-107,114,-120,49,-117,-9,-109,116,-103,52,-108,-37,-68,-2,-107,24,-110,6,-53,-6,44,13,66,-92,29,34,-57,-41,-49,45,47,99,-15,-11,-104,127,-110,3,68,24,-97,-97,49,89,-9,-1,-53,-6,-18,-36,-18,-108,-97,-118,-104,21,-11,-55,-16,59,-72,-118,-23,87,-79,-118,-49,31,116,-62,40,88,-7,-18,-91,-36,54,28,103,44,-16,-121,-2,-122,17,38,44,91,-70,52,110,29,-53,-88,-102,-101,-91,85,115,-50,33,-24,-66,-43,-14,126,-30,81,34,88,51,-85,-37,123,64,-74,25,-82,-17,124,40,-74,63,14,-41,52,-65,-118,78,24,-15,-91,-115,-89,121,93,-28,49,-28,14,-37,-49,-100,93,-7,98,-99,86,23,-111,114,58,-26,5,22,-20,-51,-29,21,-67,57,39,5,-79,-87,94,26,-36,77,-69,127,114,31,-69,62,-44,127,-26,-84,-119,34,70,-108,53,-125,7,-12,-76,121,-125,-85,-19,-43,-121,34,-59,-4,-54,12,-89,67,-38,15,100,-44,-92,34,-7,38,-19,110,-45,6,-45,17,121,-71,36,-46,-32,53,117,82,36,101,-47,7,-108,-71,-25,117,-112,104,93,115,-116,-90,55,8,-4,109,-83,104,-54,64,14,60,89,6,-70,109,115,27,26,-74,77,48,1,-26,-21,82,-50,-39,-87,-115,-26,-41,11,17,46,-84,102,65,-5,67,24,19,-43,-105,-11,77,-44,-30,20,-11,44,-71,-84,2,98,95,-9,40,-111,-95,112,-96,85,-102,-53,113,-73,68,12,84,75,72,-59,63,-35,-81,-58,0,-67,-13,5,-14,-37,-45,72,-90,89,49,12,120,34,-37,123,-104,113,-75,25,-100,-113,58,-99,11,-58,41,64,-93,43,53,-90,-75,92,122,-39,-26,14,-108,-81,18,-125,33,41,10,53,-74,-77,69,89,65,72,-12,13,40,105,44,-20,-109,-37,-64,-47,36,-98,-62,-38,-56,-112,-53,-96,60,29,58,-84,104,36,-103,37,-93,38,19,107,-120,24,-122,38,35,-8,-4,-65,7,9,-61,-33,48,0,-99,10,-61,104,108,-83,122,14,23,89,104,107,-100,31,-111,-45,-5,16,-6,84,-15,-105,-27,-28,-31,-86,-119,35,-106,-19,-45,-5,38,113,-14,70,-100,118,39,102,59,44,90,-47,59,-28,-94,-85,75,1,-124,-45,-90,36,86,-45,-16,19,122,-57,-111,11,-53,19,-36,-32,79,123,114,-124,-116,67,-110,-3,47,-19,-21,-33,63,-121,14,50,30,-11,-94,-10,-41,65,7,18,13,-3,106,73,116,2,-7,31,-6,113,-15,117,-121,60,68,117,-101,-57,-15,-27,114,36,-27,-34,29,-100,79,19,12,-27,-14,-4,-120,116,-83,124,2,110,-37,67,99,-43,-103,-64,-31,-30,-100,-25,-94,-16,-62,-80,12,-128,-64,-3,0,95,102,-61,-42,51,93,-74,18,70,98,-60,-67,-2,-89,52,-35,0,-80,-70,39,16,-115,69,-115,127,39,65,-4,-67,-43,22,127,-83,59,99,91,-33,115,-86,4,-5,107,-68,-40,-56,20,37,94,31,-62,-100,-85,83,14,-65,-7,106,61,-70,-77,87,104,-59,-23,-108,125,-119,-39,-102,-126,96,6,72,61,-127,88,-57,111,-62,65,68,-32,-78,5,-65,61,46,97,125,-47,16,81,-20,-77,66,44,116,-80,-18,14,-77,-88,60,111,1,93,-64,-55,97,53,26,80,-23,20,-52,73,55,42,-13,-85,-17,-11,-54,-31,-109,-102,64,-87,104,-105,-121,86,67,32,44,72,-84,-67,-62,-54,28,-61,-46,-124,-100,-120,-49,53,-102,-113,-19,-54,-114,-115,127,27,-21,-27,-44,-86,-126,108,110,-120,85,67,-58,-91,-128,-68,10,-64,-65,-33,67,-32,41,-17,45,-121,-78,-114,74,117,26,56,-125,69,-117,43,52,-38,-19,-42,-4,110,95,-89,35,82,-83,54,-37,-39,-24,103,37,-65,-5,120,4,64,-88,69,54,-23,104,-100,-73,-80,-126,77,-18,-15,27,45,1,-40,51,108,-74,-69,121,-45,27,110,-74,43,60,68,-79,-7,-111,-1,-63,-59,0,-90,96,-12,103,58,39,-18,88,-62,-26,-19,-111,51,73,-82,50,-84,-126,-23,-110,11,4,-11,49,-54,-69,-50,-27,65,20,-19,-27,75,-46,-98,-42,-74,53,-23,10,-59,-99,106,-87,-83,-4,-2,95,-12,85,58,-12,-9,88,-2,86,35,-81,5,-120,-87,-9,-40,78,-9,76,-32,-101,80,-98,97,24,-56,25,109,74,99,15,-78,-15,98,-17,-102,-79,69,74,123,94,59,104,-85,-80,-123,-19,84,-124,44,-87,95,-64,-120,105,-27,-71,-92,116,-110,-26,-101,-123,87,11,62,-79,-79,-91,98,9,-36,-112,-113,94,87,-29,108,38,47,116,-110,-6,-11,-118,-67,93,-31,-36,46,-53,117,-24,82,-76,121,7,108,-107,84,-39,-82,75,-31,51,78,-92,-69,61,26,-67,-127,-49,-37,-67,17,78,-47,-31,68,77,116,105,-74,45,42,-59,-109,-89,-10,-26,64,-28,109,114,80,-71,-64,56,-75,16,-50,-20,96,-23,-39,42,-84,46,94,61,-100,-43,-63,35,54,110,37,48,54,9,32,-40,17,-100,33,-33,-103,-90,-86,5,21,45,-75,89,45,-78,-18,-55,-97,23,-15,-5,-108,-41,-102,-9,10,42,-36,-28,-17,-84,-53,-76,117,104,80,-112,-10,87,51,32,96,-87,-15,47,-44,-16,44,-55,-34,-122,-65,89,-59,61,93,-70,-10,-124,-64,-65,-118,64,-88,-100,-68,26,-44,51,-51,-112,53,-38,43,48,-60,-55,-101,116,-42,-89,-59,-47,-41,37,-122,61,109,-97,-94,-99,85,-128,11,120,-32,-71,59,-84,50,-26,-111,118,-10,-74,-105,85,-63,75,-73,96,-122,108,12,-2,122,2,22,-128,-8,15,-50,20,14,-58,-99,-91,62,66,32,19,112,-38,-9,-101,-40,50,68,58,-117,51,94,-18,112,19,88,-47,73,-109,81,67,-49,121,-67,-113,52,-116,-38,-53,18,83,124,34,-116,66,74,-47,-96,-64,76,-125,74,97,36,-53,-30,118,14,-23,97,-10,-87,-54,-103,-22,-122,-6,80,-82,-44,-59,-56,65,-66,-65,-73,-84,82,-66,127,-63,24,-26,38,105,-109,110,62,-17,-51,15,-123,-96,-122,-111,114,-52,122,120,-49,-51,-19,28,-11,-22,-55,77,54,99,-121,30,36,19,-84,-53,59,-118,-127,-18,81,-94,-75,101,106,94,5,35,87,-114,84,-93,112,-55,34,84,82,-100,102,114,38,-66,41,89,-73,-107,-67,16,-119,61,22,119,7,-103,-84,34,-116,20,67,-57,61,-38,-94,-96,-51,-44,54,10,-62,15,108,-68,-123,25,-122,67,-41,1,-77,67,-4,3,-120,8,106,86,-26,71,10,-19,121,52,29,84,52,-27,73,81,9,35,-73,-15,-62,100,-19,93,5,-30,31,-71,-43,-63,10,3,-103,-41,10,-16,94,101,-8,-11,44,105,-113,87,21,-75,30,-79,-44,55,-113,-105,36,42,-100,-128,93,-122,-99,-72,-86,90,-9,-106,29,-58,33,85,45,-49,-115,38,-114,-76,115,-13,43,77,-82,23,-3,117,93,101,-1,-89,-71,-113,123,5,3,-64,36,69,-124,97,65,-109,-62,106,33,81,-46,-40,-33,28,-89,-67,117,29,-110,98,-36,102,47,91,55,-67,-34,57,31,-124,13,99,108,-9,105,99,40,-95,-64,114,-108,-60,-4,-28,-1,-126,-1,121,-80,103,-4,-104,-78,-92,20,120,113,-19,-46,-13,11,-105,110,19,-82,76,-85,89,-103,107,-35,-14,-56,-92,-95,83,10,123,-73,113,-82,-53,-128,-6,44,-64,126,44,-63,67,-25,45,-69,48,-76,47,6,89,115,-17,-100,-92,-106,33,-79,-60,44,74,106,-90,-120,-107,-59,89,33,96,66,70,-104,102,-35,-4,14,101,99,-3,-120,105,122,35,48,-125,7,101,-95,86,-39,-8,90,-112,127,-77,13,-36,27,-83,48,-10,-40,102,97,50,-48,-111,110,45,-72,-4,-86,33,-13,126,95,67,-1,-4,-66,-91,119,67,-32,35,-124,-36,31,25,118,21,-2,-24,126,49,-102,74,100,-127,-15,89,84,-83,-17,-25,-54,35,-123,28,-98,52,-27,75,-45,-116,85,-112,-43,104,51,36,-84,82,-122,35,98,-20,-17,-62,-99,92,92,-26,85,108,-70,-118,-78,-85,-56,-2,-60,-115,54,-77,-8,-28,-57,-81,-16,-57,-92,40,89,-58,-19,-125,-31,-90,44,-117,-88,46,-12,96,-93,112,-67,50,-41,0,81,-26,-128,117,-53,65,-85,54,105,-124,-84,-5,-16,13,101,92,-51,-115,98,109,40,-23,43,-41,-28,-45,-10,18,5,-125,48,-116,111,-54,19,20,33,82,30,-123,55,120,3,79,-32,-55,70,90,-33,60,121,1,-28,77,-64,22,-95,37,-40,83,33,-107,-72,-96,-47,59,-76,117,-34,-13,-81,-38,117,36,-106,93,33,-86,-118,81,-71,-49,-126,-74,-61,66,73,-91,80,-98,-56,-31,60,4,36,-104,24,-53,-106,44,-120,5,90,79,83,-88,34,71,-32,-78,-50,-39,-42,-21,98,60,86,79,6,43,-27,32,-6,57,-54,-98,71,23,-60,22,-126,-86,64,-28,-128,-40,63,53,-31,-124,-98,13,-98,-81,-52,107,-46,71,34,-9,108,-50,9,16,64,93,-6,11,125,2,45,18,15,-15,116,111,109,-47,-107,-17,127,-19,125,-95,97,-79,41,56,44,46,-8,-12,86,36,-56,-92,4,-111,127,76,95,77,75,87,67,91,5,-35,89,43,-80,47,-84,11,0,-33,-44,-73,-104,46,-48,-28,-38,49,105,-30,-95,102,-112,-62,-1,72,-54,-56,49,85,47,41,114,42,-67,-97,9,7,113,-85,-22,58,90,25,118,-111,-62,-47,-81,-5,42,65,-111,89,-126,-46,-22,45,118,25,-29,74,-62,-77,124,-1,123,123,-46,-74,-24,-115,-5,-111,-82,24,-1,109,-70,-13,-1,37,121,-66,-119,-36,19,-61,-62,-6,82,-103,48,94,-24,15,-106,90,13,124,-94,16,83,-38,98,-30,-101,52,105,-13,3,-98,58,111,-61,-16,-32,-47,5,41,28,-126,86,5,22,77,-34,-55,64,100,-104,44,59,121,70,-7,110,-12,-19,68,-124,30,-97,105,17,14,-100,-48,56,26,108,-78,-56,-3,81,58,-14,-73,-83,51,-51,-116,-20,114,55,49,106,-64,-75,24,57,18,-113,74,-86,-14,109,-124,-21,-121,-78,46,-104,62,-39,34,-47,-110,77,-107,-23,43,-82,32,-111,-75,1,33,78,60,56,-6,120,-90,-92,-35,77,11,-42,-81,-123,64,-78,-43,118,52,-62,-96,53,8,70,-64,41,6,80,-20,-104,-124,-101,90,-24,-17,-11,99,105,88,122,-114,67,-122,69,7,56,23,67,61,74,-65,0,-50,-29,21,-76,84,85,-42,-60,103,-102,107,-24,-110,61,-102,102,-27,-81,-110,4,-79,-9,0,58,-38,62,94,-99,-44,64,76,8,-74,-118,-96,102,-40,112,-81,83,-72,97,-9,-102,-126,101,62,-44,-122,-107,25,-35,107,-100,-124,-65,1,109,-102,0,-96,37,-84,26,-67,91,46,83,-23,16,57,-70,75,-14,-123,-72,-102,38,79,-78,25,-121,-112,58,-9,-128,-70,30,-40,-51,122,27,-92,-8,119,-115,-125,71,-40,115,54,104,71,65,120,-95,14,-96,-69,-89,13,-56,2,26,71,-70,87,126,11,-6,94,-31,110,43,97,-22,-83,-93,-79,34,-116,-102,44,43,-54,-65,81,89,51,76,42,-28,18,115,-33,108,-17,88,61,101,-42,27,39,-20,120,-2,-83,26,-100,67,-13,27,-60,-120,-15,-7,59,-39,-53,107,-54,-44,-123,-110,104,-119,122,-90,102,-51,1,-85,30,-75,82,-94,6,39,-92,3,60,-2,2,43,-71,-110,-55,-102,116,116,-128,-85,70,48,93,-83,-127,82,-35,119,109,-107,48,-23,-8,-127,95,81,88,-109,-45,73,46,89,-107,15,-11,-108,-67,66,108,59,-80,25,-64,108,-29,53,72,75,23,-29,-9,7,-30,103,-6,29,-63,57,54,74,-115,-3,116,-54,68,-31,-13,-115,85,120,-69,-79,-44,75,117,-28,-67,121,-46,56,-83,114,-86,11,7,121,119,-49,7,87,-117,-105,21,50,9,65,-122,-13,16,127,100,121,-43,56,45,59,18,-70,-17,43,-40,-19,123,-22,56,35,-16,55,67,-23,-60,12,101,48,68,25,118,103,-85,-7,42,-52,-32,-11,-44,31,71,-72,-15,114,75,112,-37,8,-32,69,-21,-30,-78,106,9,-109,-15,37,-106,65,127,47,115,24,-119,-103,-20,-8,95,90,-7,113,37,-103,-113,87,-79,92,-11,31,-49,-21,-64,89,62,91,-109,65,-2,62,-48,-55,-25,86,29,-81,0,-23,-5,-4,58,65,123,-121,-108,119,-104,117,-68,52,118,75,-19,-64,-126,72,73,-121,-91,42,-104,0,-1,-103,-104,16,-109,-50,-29,-32,109,-9,-19,-105,-103,-50,77,-123,-23,-99,-95,58,-14,-90,-21,-38,24,-74,94,-121,-98,110,95,4,-48,122,-69,21,23,57,-50,76,-112,32,48,-38,116,-62,-54,-57,-39,-32,121,60,-67,-41,-107,31,29,65,122,90,107,-128,126,101,115,76,-109,-59,-58,-52,56,-114,-115,102,19,55,-53,-83,-61,-103,-26,-63,123,113,14,-83,-59,59,-104,3,7,-1,-39,-51,61,25,36,-84,-30,65,69,-66,-75,66,29,9,-128,99,-70,-18,1,-68,-22,-96,41,14,-54,11,-5,62,-115,-87,-40,57,-53,-117,70,-12,32,-123,31,-44,-63,16,-43,-34,126,-82,-115,68,-121,98,-68,4,-80,5,35,35,-53,17,70,34,14,125,-122,80,80,50,113,-39,52,-34,7,89,-87,-118,-25,-94,58,118,-69,-112,55,17,116,53,33,-84,22,-49,55,48,48,-102,78,76,-55,112,101,-75,-55,63,32,98,19,79,95,-13,67,113,15,-22,-123,51,34,114,-10,88,-62,59,88,23,53,109,-42,24,-21,61,25,-34,24,50,24,6,-95,-102,-85,65,127,62,-59,41,55,-67,-99,11,78,61,-108,64,58,-54,21,-119,76,-9,64,23,-48,-82,54,6,52,103,59,123,-35,55,24,35,-68,-56,-39,-74,32,17,-29,-7,37,62,-103,-58,19,-37,-123,28,-53,30,101,46,88,-127,14,72,27,-124,8,94,-56,-90,-97,-80,-17,90,-32,-12,107,92,-110,0,54,-36,-69,37,-95,-74,98,-57,-72,-38,79,-8,-31,77,122,-62,-118,68,-6,90,109,-1,121,114,91,-51,-58,73,13,-110,40,59,-25,-121,-65,31,-87,25,35,-72,-22,52,-60,15,-117,-37,26,-15,-32,99,94,-94,-53,117,-7,-108,10,-82,-55,-58,-28,-6,122,103,121,31,-68,11,-26,60,-66,-97,81,117,65,90,73,-11,102,-56,104,12,-75,20,-116,76,-116,-115,32,74,-46,94,105,53,74,-8,-21,45,-2,-65,108,-5,39,94,62,20,-61,36,-97,10,8,54,-117,61,40,-123,24,-16,63,24,-4,11,28,61,-104,127,-46,-90,114,72,-70,-105,-7,60,-51,-35,-5,71,-113,102,-66,-83,111,52,-128,6,100,114,84,-77,-52,50,-94,-33,56,55,-114,44,91,63,113,-5,127,66,-73,55,68,13,-76,10,-95,94,93,-124,28,-82,-117,37,31,-27,-36,-72,-31,-66,69,56,-8,-123,-102,76,-113,40,18,95,47,76,-90,73,-84,-46,-75,55,25,7,-95,38,-34,72,18,-84,-104,62,-92,-5,-77,-67,85,16,122,63,-31,64,97,-23,-55,-63,11,-90,-105,-80,57,5,-60,10,34,56,-39,-102,-104,-87,-85,23,-96,121,75,32,10,7,61,45,19,-110,106,58,-50,67,49,76,19,81,19,-65,-25,16,-79,80,96,125,107,93,-119,-43,13,15,-76,-127,-29,38,-29,-95,-43,-92,-120,-126,22,-39,-34,-81,-91,43,113,-13,-7,105,94,126,100,-79,77,7,25,-99,113,115,-125,26,2,-5,106,-89,76,-106,-70,-92,-71,-104,48,-16,88,-21,123,82,-58,109,7,-47,-62,-62,121,-75,122,-100,-103,51,86,95,101,-99,115,27,-8,-97,-109,50,-68,-15,64,126,76,-94,-94,87,-13,-45,11,62,-27,35,126,-56,-115,12,39,54,108,-127,-17,-76,-95,61,-98,-10,-14,-65,-52,87,9,45,-66,-110,114,-65,-54,-7,-115,-126,86,32,-21,24,97,-117,-50,-52,49,-106,-116,53,-39,15,112,99,90,111,34,24,-70,16,80,-85,-29,113,-90,-21,69,120,-111,47,73,110,-36,108,21,-117,-72,-63,-15,84,-65,13,-40,-96,57,-15,44,126,-114,51,1,105,40,-20,77,76,44,34,-115,-28,-114,22,-108,-96,110,-128,42,69,87,-68,-96,-57,89,66,-86,-32,43,-14,41,-114,16,106,-27,-22,23,23,16,-57,72,-53,116,9,59,44,20,46,29,77,-42,-17,-119,-66,1,-75,-88,33,-94,107,78,-28,-125,-96,-27,-71,-43,-52,-74,-126,-86,-77,33,37,22,-105,124,-5,80,-124,65,29,14,-23,2,13,102,-11,-86,0,24,76,-18,63,-66,111,5,-15,76,-125,126,-82,-92,43,-3,-59,-126,-99,-46,37,-76,10,-127,-80,21,98,24,-62,-99,62,-51,85,70,43,-112,-97,111,-111,120,-54,-56,-52,-93,-30,53,-107,53,53,21,-104,-97,-30,89,25,-54,-62,54,88,-83,74,109,120,85,15,48,76,76,-74,50,-36,-52,-99,-112,121,54,18,-75,-40,30,-64,-72,110,28,-7,45,-91,-65,115,-67,-20,22,107,14,103,-71,-102,92,-33,33,-72,-4,92,100,110,-70,91,-27,-52,-63,116,64,-124,50,-37,-48,-93,-23,51,56,-77,87,55,61,-37,-23,-96,19,-73,79,119,3,-34,31,65,86,-127,-120,21,-39,-117,-78,-18,109,89,-33,-42,49,5,-28,65,40,52,-99,-27,114,-28,42,36,38,-46,-36,-88,-8,-94,45,116,-120,48,-109,78,-22,-20,50,74,11,-11,-16,-73,-127,45,109,24,28,-113,102,-33,109,111,-70,-40,33,-112,81,19,40,6,9,65,-25,-38,45,122,-57,-69,-65,-28,37,86,42,-113,119,11,60,-114,4,69,125,93,-60,-52,-58,-72,76,-8,93,77,69,107,-42,-84,-28,100,38,41,-119,-115,-114,-80,-111,95,-113,-122,37,-10,-118,-21,-6,-45,87,-30,88,44,54,101,95,-29,122,124,-101,-72,92,28,-74,6,-29,83,-48,67,43,-92,94,-69,-99,20,124,22,13,-76,-104,-46,-74,-83,-61,48,-81,-115,93,7,-85,-125,-81,-37,81,-28,-85,-14,-79,10,74,86,91,65,127,-66,87,-30,24,126,45,114,-32,-7,-25,-9,-45,-113,28,-53,-106,19,53,85,65,91,-67,-107,-106,-103,-31,49,27,59,-52,113,119,90,125,126,-13,90,7,58,-93,78,-124,-59,80,-59,34,105,-49,-100,-119,-126,-86,73,-54,22,-71,88,112,36,60,-9,88,-96,-113,-70,-83,-105,126,36,-9,118,-33,58,-47,-17,29,-86,98,13,-103,-106,79,69,-102,37,-104,-35,97,53,-99,38,72,100,-88,121,112,116,26,-32,-105,-98,97,82,-125,64,81,-81,12,68,-86,-56,-80,5,123,21,48,-122,-99,50,10,-98,94,-30,51,-86,-97,-24,-95,109,-11,61,-1,-24,-103,-125,-28,-101,73,-111,-32,-41,75,117,96,-9,36,68,-34,121,-122,-83,-42,84,41,-116,-101,-29,-51,-104,-32,65,-37,-49,-117,-22,106,110,-20,73,-5,-105,59,-96,-79,-47,-115,-115,-103,83,5,-104,-126,97,94,39,107,1,-105,-91,-103,-70,-92,121,82,89,-85,-103,-5,122,-43,-10,94,-59,-116,-12,72,-73,54,17,-43,71,127,-7,-125,-31,-57,126,56,-96,-37,36,112,-80,-42,26,-118,81,124,59,96,-36,-31,8,-49,-80,83,62,-52,38,-106,122,-112,93,32,-47,-67,56,41,-120,110,43,-44,-31,119,-64,98,54,76,64,-28,122,95,-7,63,-41,-48,-95,76,71,-94,125,-82,-91,59,65,125,20,109,-42,23,78,3,-91,-29,-19,-84,37,-21,59,-80,-84,-50,-77,-46,-42,75,6,-14,-46,-102,-81,-94,-102,-68,91,-26,-85,-61,-43,-128,-84,-55,87,-45,-67,90,-24,91,-20,117,81,-2,124,65,-113,124,54,-116,-106,41,106,-12,55,6,-93,7,31,-44,54,-50,-16,-119,-17,-23,14,88,22,-41,-9,-3,52,78,-33,-61,-16,114,-101,-57,46,-113,-76,112,121,-82,2,-3,-50,117,-74,104,67,64,-45,84,-36,125,30,11,-16,40,-69,83,-80,115,-127,-72,-41,103,-16,71,-33,-38,22,-39,-81,54,72,-73,20,-105,65,61,97,57,-122,23,106,-111,-87,-72,-97,115,89,113,57,38,-67,-25,-29,-93,116,-123,113,-68,-111,92,46,-25,27,-44,-11,79,101,-30,12,-89,-29,82,68,22,-17,-52,71,105,52,85,-112,-72,34,-109,17,86,-55,42,-90,22,67,119,43,-80,-14,51,40,-73,85,-51,102,95,28,-44,82,-28,-74,127,-104,31,58,-27,92,-125,-125,80,47,-47,24,-24,37,-71,123,91,49,102,67,-42,-111,97,41,48,-111,-45,81,-31,72,-64,38,-118,70,-114,-102,42,7,-87,-41,-9,-54,118,-48,121,-105,19,-28,-109,-84,-108,110,-55,-107,122,-74,99,69,100,85,-105,83,-66,-78,-8,-51,-88,-102,40,-5,-9,-110,3,-36,-20,120,-121,-97,-53,-37,-80,-46,-101,85,-61,-46,-22,117,-80,-120,64,-3,120,-46,-117,-121,-122,-53,-9,15,127,-29,11,-32,9,11,-87,86,15,57,-59,100,-90,64,-47,121,-34,-43,52,91,-116,-35,122,117,122,-90,115,-128,112,29,66,-73,39,95,-107,44,124,-31,18,-104,102,59,78,-14,-47,-30,41,-21,26,18,122,-19,43,-66,59,28,105,45,-3,98,-77,60,100,81,-22,8,3,80,105,-87,62,116,-21,83,31,-95,112,-114,-126,-58,8,121,-65,46,-112,-94,79,-128,112,24,99,-114,83,28,-104,89,-18,-121,-10,16,-73,-18,-97,69,-94,-81,-18,108,-86,53,-87,-17,-30,99,-23,54,1,-111,11,-52,-63,112,-55,-125,60,56,70,4,-103,114,89,114,-80,53,-50,49,90,-97,-54,-89,126,-17,110,-99,-30,-9,-71,95,74,63,92,-38,26,111,61,37,53,-76,27,110,-96,101,63,21,-99,121,68,-10,-124,-17,32,-83,-19,-92,-72,-26,-78,108,105,-80,115,60,-10,52,-74,-46,-77,-70,123,109,-77,-48,57,-54,-30,-37,22,-90,66,-41,112,-125,-1,89,120,-93,68,-103,-97,1,7,94,116,-108,39,-102,-7,-113,79,-90,56,-76,-8,38,27,123,-40,-111,87,-47,105,114,77,-9,-69,54,-109,34,-25,85,-65,-16,106,-94,-75,-103,87,12,-123,101,-41,-3,-1,-7,48,-46,56,-1,92,-18,-4,120,-46,110,96,81,21,92,-37,-54,36,121,-18,86,-55,118,101,87,55,49,79,-96,-28,19,56,71,-27,-127,110,104,107,30,65,-128,-107,110,-20,-57,112,-103,-41,88,12,113,117,-5,46,33,-20,-115,-113,-106,-19,101,-120,5,-125,-89,-107,-33,-116,-69,107,-85,-101,-39,44,31,-69,108,-124,-2,67,15,37,32,41,0,-20,78,59,79,-8,-80,-50,-82,-115,-6,12,1,-30,-85,-90,7,-61,96,-81,99,97,51,123,-107,-68,-102,127,-82,58,23,11,42,62,-82,-51,-59,-40,73,76,0,66,-42,103,-104,59,25,-48,-25,-99,55,-9,43,123,82,-108,53,-32,-20,-4,-36,39,23,-48,100,-1,-114,20,-108,74,114,-12,83,111,-77,89,-14,-37,74,6,126,-52,29,109,62,110,-108,38,-32,55,36,-92,-16,88,60,-84,0,-3,96,-50,36,3,-111,92,-3,-13,-23,19,-122,-32,-35,43,-48,52,5,62,78,27,-86,-59,-114,-19,60,-111,-75,0,-120,122,125,77,-128,-124,11,-112,29,74,18,15,43,82,58,63,-69,-26,-90,63,125,25,122,39,48,-64,-103,-107,41,-105,-122,84,46,-95,-57,39,36,76,-3,19,-21,-57,-56,-47,34,-30,-41,-128,-47,-10,66,118,37,119,48,76,97,95,-119,-71,17,66,-128,47,96,15,83,-48,117,-22,-43,-68,-44,-128,102,17,-16,62,-34,85,79,80,-11,-2,123,-123,-68,-36,126,98,-5,99,-56,71,76,23,45,69,38,28,-9,-96,-80,-107,-9,-87,1,53,69,-10,-69,-74,-107,-38,83,-7,-46,105,-117,-30,49,-126,-29,-55,35,56,-18,-4,95,119,-9,-114,9,29,-32,-19,-55,-123,72,-30,-17,-56,-117,121,-92,-18,-11,67,-71,33,28,-9,92,48,-100,-7,-120,-18,-37,16,-105,-18,106,98,124,45,-45,46,90,-39,-120,-67,120,125,88,-12,125,-42,114,-84,-8,-63,-17,-109,41,80,-57,19,82,9,-87,-4,-58,-52,-60,-76,20,41,43,126,-19,-110,-26,32,-107,126,8,-74,29,108,59,28,71,-39,-12,100,-82,89,118,97,-96,-77,-41,31,4,-119,-38,85,-23,7,116,53,-115,-35,117,-67,-122,75,109,18,50,115,99,97,-72,-94,-48,-22,-122,-21,-22,81,47,108,51,-68,-115,109,7,91,-56,11,-6,12,-15,-62,2,26,-100,52,111,5,60,-52,82,110,93,-116,-31,-62,-2,83,113,10,20,-82,-58,-78,0,52,-108,-67,121,20,-18,79,90,79,94,35,88,68,92,20,46,67,79,-21,-23,27,68,-50,-9,-16,-113,-76,30,-35,-86,-10,17,-102,-88,-89,-112,-99,-67,-123,-108,84,110,-9,-92,-57,73,31,-107,98,60,111,-82,-127,88,45,64,116,-125,29,-115,-33,-81,-127,-121,109,112,126,126,-76,37,56,39,-45,-35,-53,69,-74,94,58,62,35,-120,-17,9,29,-92,-66,-110,-71,-96,-52,-25,-55,-98,23,102,115,-84,-115,3,29,83,61,27,-40,38,-8,-102,95,-83,-115,96,-2,-90,74,0,-13,-39,98,-119,117,-78,-87,36,98,-30,-96,-110,-122,-105,0,-113,-23,-115,86,31,-86,21,-91,54,15,-29,112,120,-128,18,-35,-67,15,77,33,115,-18,74,-51,126,99,-6,46,37,-13,-33,-47,92,-88,-108,-43,-25,-74,59,-67,-89,9,8,92,-126,-82,22,88,-51,-48,41,-111,-55,103,-36,-41,29,-11,-6,30,67,25,-109,-47,-43,-120,-15,-40,-69,-120,19,-113,-61,78,-21,-121,-127,125,30,-20,95,16,122,10,111,-37,107,-77,43,-97,-98,106,-121,-86,-94,-104,-39,86,10,-44,99,-14,37,-52,113,-37,-49,-44,10,-61,-55,2,-107,36,78,52,115,76,83,54,125,86,20,97,36,55,18,-114,-49,83,-48,-23,-90,83,69,-73,57,-128,-85,-16,-11,49,84,-15,9,83,4,-60,100,126,-41,-81,80,-16,114,-2,-92,60,28,77,118,102,45,86,50,79,29,1,81,126,53,15,79,-110,-113,-87,-55,-95,-46,75,-29,-56,88,-90,-17,-4,-24,-57,4,-101,-38,-86,54,-80,26,70,-97,-112,-53,-57,-58,-97,-38,2,-30,30,-53,60,102,-113,-78,9,39,-9,28,-37,69,-11,98,-78,11,-9,-38,54,-27,65,-86,101,-82,102,-36,-66,-55,-123,-1,107,94,41,-103,-47,-21,26,-40,-57,43,127,127,121,124,-126,-104,105,-121,-39,9,-107,121,125,-67,-79,64,-77,88,-47,-96,-78,27,-19,41,-57,36,39,-54,101,46,-27,-48,-95,-60,27,77,-26,-23,-52,122,-101,101,-96,44,-48,-7,-109,23,53,65,17,-119,52,-15,110,-49,-124,-17,62,-122,-91,95,-56,-100,-81,77,-10,30,-124,34,79,-9,117,85,-70,3,-64,24,-29,-78,-106,97,46,-16,35,54,-44,117,52,-29,54,68,-120,-11,111,81,0,-123,-4,-42,5,-69,34,51,-113,-116,-108,-91,34,126,-56,126,74,-20,-98,20,75,87,-63,-123,-85,6,-70,8,72,-60,-25,-78,19,62,-32,13,6,-48,-83,20,-20,70,-30,-114,48,-107,-60,99,-10,101,-50,7,116,-33,15,-73,41,27,-82,-117,-56,-25,10,9,85,108,44,20,-69,92,28,-61,116,-55,1,-25,31,75,-68,-21,21,-3,22,41,-111,-22,25,25,12,-32,-10,84,41,-3,-11,96,-83,85,-33,-59,74,107,-80,-40,-102,123,-28,18,-93,115,-66,117,-128,-88,-10,-99,101,58,-3,-51,-47,40,4,-36,50,28,-57,-126,-91,100,44,-47,36,-124,117,-46,-47,109,-65,112,-43,51,-48,-116,51,-113,-106,71,115,-123,-111,-82,-18,-126,10,94,98,-39,-50,-60,-58,-14,43,-124,18,25,98,-99,86,77,35,-85,-58,-127,10,-23,79,60,119,28,3,-11,-44,7,-70,108,115,-122,58,66,-96,55,76,-2,-1,15,98,-121,84,-120,94,121,-80,-58,84,110,92,107,-125,-61,75,-4,-94,-52,-7,3,84,96,12,-48,-16,-25,-36,6,-91,70,-80,-22,91,61,-82,-77,83,111,-47,22,-82,65,28,119,63,-71,94,-53,-74,-119,57,-103,-81,12,-26,-73,-113,124,100,-91,-102,-90,24,113,11,3,-18,-4,-50,-73,72,-2,-16,121,94,-70,106,-62,-105,-50,4,-46,-34,-52,-31,-15,-89,62,-11,-78,43,-36,-104,-118,-68,87,-106,-2,-86,112,-51,3,-24,120,-78,-20,14,44,-58,103,-70,-15,10,93,9,15,-66,-75,74,-106,-117,-65,-8,16,-10,-31,107,-114,125,-44,-84,-75,26,-97,2,12,-27,-117,80,45,-115,-29,8,97,-74,108,75,-60,17,-119,1,-14,10,-14,-18,81,-81,11,8,29,-110,122,122,-24,-35,-120,113,-78,86,27,-31,87,-89,76,9,-114,-29,-75,-43,-12,-70,-118,-94,-1,70,62,-56,34,-32,-99,-126,-15,97,-38,-86,88,-37,20,94,119,103,64,41,-44,-66,-78,33,22,-67,120,-109,84,-106,-62,-34,12,104,36,-88,21,-35,52,-78,74,37,6,121,70,-78,-109,26,8,-18,42,102,-104,22,25,87,120,-8,125,-90,-82,127,-100,1,6,102,-72,78,-42,-100,-59,-87,-125,-13,-86,34,43,-12,-109,-61,13,36,87,-108,29,33,24,-124,-36,-114,34,-88,114,-41,21,-115,-71,-3,-108,36,-31,19,57,-95,97,-114,46,-121,-102,114,77,76,82,79,11,124,-82,-124,-50,31,92,113,-100,-102,27,-88,122,4,-87,7,102,118,30,-98,-84,72,-73,24,-112,-97,-125,-29,58,-101,52,48,82,111,78,71,88,-40,-58,-28,11,-94,125,-6,12,-18,50,-62,78,-18,-62,102,29,127,80,-31,-126,7,114,-25,-100,-116,120,-75,69,25,26,124,-23,-68,-15,-79,-5,-14,108,4,11,-69,-41,75,59,-72,113,26,-66,48,-4,103,57,71,-94,-2,14,-28,-36,22,-8,-25,39,-51,25,99,91,70,63,11,-124,69,46,-34,-21,99,-70,-110,-90,32,116,34,-74,82,43,-104,-56,31,-117,-43,67,12,-72,115,-84,-62,-9,21,-30,105,82,94,86,12,40,-47,-39,40,-114,-67,-89,-72,-64,-62,-124,-105,32,95,-124,-41,-14,48,26,8,-116,-57,24,-45,-45,-75,-40,-111,-118,107,116,66,-97,-57,-79,-96,-85,-55,49,-55,-32,-87,-76,-12,42,-85,85,-16,75,-41,-112,49,-29,-28,-124,-10,-60,62,-2,-112,15,-36,-33,81,-95,117,120,51,99,-64,30,11,106,-21,-42,43,-59,51,117,12,45,3,-116,110,88,104,60,67,102,-74,108,80,-58,-108,28,38,-108,16,63,100,-24,-36,-1,70,97,7,32,118,-112,-122,-31,-36,106,10,115,-89,35,58,-15,-5,63,19,-123,-99,-11,-94,108,-18,-13,70,-12,-1,126,-15,-9,-25,113,111,66,-59,81,-88,-114,97,-121,-76,16,8,72,62,3,-107,106,-43,92,-91,63,60,-90,-61,96,-9,93,-24,-17,-22,38,-24,29,-27,-36,-25,117,99,-10,76,66,-77,-71,33,-87,100,48,-13,-122,-49,56,-104,72,72,-84,103,72,115,-10,45,19,-22,52,-97,-77,-107,50,-81,-93,-79,102,-71,46,73,6,-21,-52,5,-96,32,112,15,-44,-4,110,5,-26,-85,89,-87,35,73,-17,59,-95,-5,-123,94,127,-83,9,-122,-64,-58,-72,-111,33,-91,-82,56,63,1,6,-67,-106,-55,26,-12,-105,-32,115,-38,-95,118,117,67,-17,95,99,120,-75,2,28,-113,-105,117,-15,111,22,-46,116,25,-91,40,44,84,37,-4,-66,-125,15,69,-14,49,-12,-11,87,-68,20,91,110,117,125,-65,-34,-36,84,-29,-87,-27,60,-66,-118,-125,49,69,81,54,7,-119,53,-23,-60,-9,22,-116,-125,-58} + +#define IP4_WEIGHT {18,-44,-120,40,104,61,29,-56,-12,78,-75,-19,-34,92,-80,21,60,107,62,11,58,94,-6,-32,-92,-118,106,-105,-104,47,-20,24,43,-116,-108,0,53,-50,-5,-26,43,48,-80,-73,-86,-38,115,111,78,-101,94,-20,94,-61,100,-111,76,-55,13,-81,39,118,70,94,-125,71,54,60,-70,-14,-121,51,63,-121,-121,107,-69,-74,-106,-38,-61,110,60,-28,-43,-116,83,62,26,103,-125,88,94,111,120,-39,-79,-85,-45,-90,121,-121,-97,109,112,34,-97,12,-93,97,90,-45,-59,-105,28,-10,0,-122,-87,-62,-100,-21,35,-115,-26,-37,6,108,-15,118,-41,97,-26,-74,94,34,26,-84,-65,86,1,73,67,59,-99,-67,115,-43,-26,-21,-21,37,106,-80,109,-107,-71,-20,64,-2,-20,115,83,-49,53,-102,-46,121,-75,108,-106,-59,35,45,-102,-41,51,22,25,122,-58,-116,-7,-2,-55,19,-126,-76,-103,80,-34,110,15,82,-73,93,15,-52,117,62,-46,-16,62,67,-19,-39,-27,-12,-89,-100,-37,-41,59,-127,111,99,-15,-57,-79,-43,20,52,-31,13,-12,99,-30,-69,-31,124,-36,-89,43,-1,120,-79,43,-15,-19,89,46,54,113,24,49,85,-17,-119,116,-46,11,-59,94,67,119,110,-57,-1,113,-94,32,-38,110,-14,-81,77,-53,111,118,-13,-19,-53,4,-20,18,108,121,-97,30,-121,117,-35,-31,54,24,119,-74,16,101,3,125,-59,-12,14,52,-65,65,107,60,17,-38,-53,21,-118,76,-112,-53,-108,-38,26,-58,19,91,106,-63,95,98,-4,63,111,-74,37,-47,60,-115,-44,29,-57,73,63,-51,9,-84,22,22,81,-87,-65,-126,7,-93,110,-127,-70,-27,-63,-12,-118,63,-26,-113,45,107,-69,79,111,56,55,-2,108,103,-48,113,120,25,-55,43,-122,-41,40,124,63,88,-78,29,24,93,44,122,-67,107,-34,14,-69,-72,108,93,-37,116,90,-24,-76,67,26,-103,127,88,-48,115,-80,-97,96,62,-1,-22,-123,-65,10,-61,-54,-17,21,-14,-49,116,113,10,88,124,-112,-119,89,88,119,30,-24,-119,-115,-95,58,57,68,-17,-27,-60,59,-64,-26,-127,-35,31,-9,4,-89,18,109,8,-90,88,22,18,45,-123,88,-80,-66,-76,109,25,47,-51,-90,75,-24,-109,-42,19,-72,-8,78,2,-84,-47,68,33,94,-98,-122,-109,82,102,55,66,-23,19,76,40,106,71,-121,-42,-2,76,93,3,123,-111,83,117,-52,8,105,121,2,-4,-18,-4,-19,-125,80,36,29,25,123,-72,-41,38,83,105,-71,-64,47,-127,-82,31,-43,-99,101,73,91,-51,60,3,9,-27,77,124,-3,-96,15,74,35,-29,2,116,-4,75,38,54,-119,8,93,53,46,-18,49,40,-30,-111,-62,97,-8,-96,82,30,22,21,97,97,-35,-12,28,-118,-12,95,40,-16,110,29,-58,87,29,58,41,46,8,105,-108,-29,36,84,-87,-118,-124,53,125,-117,106,-83,21,11,60,-31,-5,114,93,96,-112,-127,49,-126,69,-75,-41,64,60,-98,31,2,-73,94,-100,-44,91,-115,94,12,75,-23,81,46,-89,-116,-25,-47,107,-77,-10,62,-69,-70,75,-41,53,-82,79,104,-7,-106,-1,73,-32,74,-113,-91,-47,-115,66,-96,121,26,111,7,51,-55,20,126,-75,63,-23,14,16,-124,-39,-48,-84,81,14,-27,-56,-41,-13,-43,120,33,98,31,-50,-6,15,-107,-33,41,26,-9,121,18,8,-106,-46,64,127,60,39,-59,-30,-5,-119,-19,-104,-79,-38,86,-121,85,-17,21,44,49,-73,89,73,91,-36,-120,-22,26,-69,-17,-102,-71,103,63,125,105,15,103,-20,-122,-62,-8,61,-116,-78,-116,11,-80,-80,-58,-119,87,-15,99,-111,-87,-84,65,-47,-38,-44,-26,69,-14,-37,-27,-90,-97,29,-4,38,52,-87,109,-72,-50,61,-110,82,-44,8,63,92,-70,-10,-124,69,15,80,83,109,111,25,-47,-110,104,66,32,-16,104,-31,-52,-41,18,102,-70,-49,22,-109,-16,122,62,125,-123,121,-61,-2,92,-90,-81,109,74,5,98,-125,-92,72,101,-120,60,10,-13,80,94,-25,45,-43,58,53,-80,-13,38,-56,-77,-44,-37,46,76,1,-103,-93,74,63,-62,38,-82,73,-124,48,67,-59,-26,116,109,75,70,-30,25,85,76,66,25,-18,-113,106,25,-83,81,-50,-104,-44,-53,-68,124,112,78,99,96,-126,-125,44,33,-75,-29,-60,-6,-26,-84,-61,118,-4,-9,-126,-46,-57,-119,-127,105,21,-120,-121,-33,105,-70,-124,-108,-111,54,-35,-30,57,-101,-79,-48,-65,-108,77,22,44,111,68,-91,-111,41,112,110,56,118,0,-49,62,-54,83,52,-94,38,-14,105,27,78,66,14,106,102,41,24,53,-40,60,59,-124,56,68,-119,102,-70,-119,-101,-25,-95,69,-45,-55,-38,57,-122,106,-96,122,33,-5,61,104,77,122,88,99,126,-74,46,-52,-3,-38,-101,74,-30,96,116,-51,-21,68,74,2,17,71,-124,47,-35,107,-23,64,24,49,41,-50,-23,88,19,-30,10,-96,3,-14,100,-116,55,-91,84,100,-54,125,67,-40,-124,53,10,-126,45,21,-84,13,2,-62,-47,54,72,82,-50,-2,-66,103,-61,-20,-17,59,54,-110,-1,96,-70,-57,123,-111,-94,-125,3,14,37,123,-86,-44,-9,109,-101,-128,113,-104,80,-94,-87,111,120,-7,3,-49,-51,49,-32,40,33,-62,18,-94,-57,-71,-92,-52,3,105,-86,-104,123,1,-93,-73,52,108,38,52,40,2,-44,-62,91,5,-48,114,-61,-40,-128,-93,-88,-91,-115,62,-24,-30,-85,-43,104,102,49,10,-52,25,-52,-94,-20,-103,-25,84,-56,-103,51,-110,26,1,-82,-102,32,126,-108,78,-108,30,86,-17,-23,-112,-32,32,80,-112,-86,-115,8,24,9,-121,-125,91,-73,14,-69,-95,-2,101,-109,1,-49,-110,84,25,24,66,-72,54,108,4,-36,95,126,-63,56,99,-103,-35,-80,5,3,-61,-8,-10,-10,78,-73,72,42,-83,-115,84,97,-66,20,-66,-46,-57,-99,78,-120,120,30,-88,-29,118,15,-110,-52,-92,25,113,-30,92,-94,-29,90,105,89,-110,48,-44,-1,-96,-1,64,115,-3,57,24,-39,118,-2,81,37,15,-47,-14,89,48,-69,-32,-95,-114,-77,33,-103,-127,-82,-9,-100,14,-38,-76,-63,51,59,-31,-8,-75,-37,76,-32,69,101,40,26,80,-23,-110,-23,-84,-67,4,-31,122,65,101,-83,111,-112,-123,124,-56,67,12,-23,-43,-47,55,-87,66,19,21,-12,54,-105,100,35,-89,-80,-76,-85,-61,-9,33,107,42,120,-49,-117,19,-80,-65,-71,86,106,77,-34,-50,108,42,21,65,69,127,-38,-27,-77,120,-28,97,24,-20,89,-66,-63,-17,-110,43,-43,-117,112,-126,28,36,103,0,-68,115,-69,107,-99,53,94,9,-105,-27,70,2,47,80,95,-83,28,119,59,95,16,17,-16,15,-6,4,82,-94,-89,64,-49,-122,88,21,47,50,-21,29,121,-47,-83,-113,-78,-25,-101,9,-36,72,28,-68,23,-67,-98,-24,-101,-98,-28,-89,115,-101,-89,82,102,-124,40,125,23,97,-113,-58,-7,-90,28,35,83,-53,-26,-119,-108,-83,97,-74,6,-40,101,8,11,79,117,-65,-15,-10,-72,-99,-98,101,80,127,95,60,-116,79,2,60,-62,104,15,-29,46,-79,-92,-118,-43,73,107,-43,67,-73,-67,44,74,-111,117,-127,-98,26,113,-41,59,79,45,-60,-30,114,18,54,-124,-52,21,-26,10,-82,-72,-70,-126,-97,108,-19,-52,10,120,-111,102,18,99,49,-128,-17,91,83,-72,-19,-3,45,-104,14,-46,-76,3,112,-41,47,122,-77,-35,121,44,-45,-123,-60,-58,43,-23,41,84,69,-2,50,-69,-98,-11,112,-11,98,-36,67,-33,51,-17,-95,-45,-126,-69,-52,81,101,-38,68,75,-109,-78,107,0,45,67,-37,-100,-55,12,105,11,-24,3,-70,-16,-97,-63,52,97,46,54,77,-22,35,125,93,58,-61,66,-61,-79,-58,-43,-45,-49,-63,-98,12,41,54,-63,-36,48,-33,-110,-36,-76,-48,73,-33,-87,-81,-49,93,-6,4,-78,50,-88,-30,-33,10,30,102,-94,38,97,73,-109,104,6,37,94,-124,56,-106,-18,70,63,10,-31,-90,-113,-116,84,4,50,-18,-27,54,125,-86,-119,33,-127,0,-128,-77,-65,-63,64,26,-79,60,-25,76,5,-5,101,69,59,26,67,121,-26,-79,-91,-49,-87,66,71,-22,7,-73,-51,-114,-18,-72,40,-87,-55,69,0,-22,-23,-96,-115,29,-119,68,-102,124,120,-6,74,5,-111,-85,-99,16,-28,-92,-34,87,-42,-36,123,-52,59,103,-77,43,-80,0,-86,83,-81,96,-15,124,41,-62,-22,77,43,4,71,104,-62,-98,-13,-99,107,80,-121,72,54,-63,-13,10,78,-108,-95,-90,122,88,-92,-119,95,-117,-76,76,-115,52,-10,122,-108,-13,101,12,36,63,26,39,36,-72,-80,107,82,119,-57,-7,-118,-91,-55,-54,11,-30,-44,77,-93,58,-25,102,11,80,-62,111,-33,29,105,-63,-98,51,-77,3,-6,52,39,-50,-80,-5,-50,93,-103,-123,-77,79,-58,-101,-122,116,-20,-16,-45,110,93,-11,57,44,3,107,-118,32,126,-90,24,-60,-25,60,64,80,124,-22,-95,-57,-47,15,-46,-28,26,42,-91,83,74,42,1,78,113,-76,14,33,16,-16,37,89,108,74,20,-93,23,60,107,-22,-117,111,52,-97,-15,86,-127,9,-17,28,78,53,-17,5,123,-78,-120,-76,69,-76,-98,-42,-64,-17,-99,-113,13,120,126,-88,-35,20,10,44,84,-35,74,12,81,99,55,31,115,18,-125,110,2,-82,-110,-94,23,-4,110,84,-122,40,-3,-75,62,-62,34,2,-120,42,-24,-10,124,-46,111,-99,-11,57,126,41,-38,-14,6,27,109,27,72,-29,106,96,82,-69,60,42,92,127,-24,96,53,15,-18,-104,-79,-70,-102,102,-36,-84,32,-119,2,-77,-53,79,7,-24,84,115,103,54,60,-7,19,-49,-7,114,-7,89,1,-64,80,107,-22,-5,-2,-63,-26,-51,-108,9,-111,17,-40,-51,58,108,-55,-68,-117,-51,13,4,-17,-33,-110,-95,99,-117,-23,-71,46,69,4,119,103,31,-117,6,76,-36,106,-124,-30,23,76,80,39,6,18,-3,78,3,-118,-52,23,-100,69,-91,112,40,-16,18,-55,75,-77,126,-87,103,-23,50,7,106,-16,126,41,-127,72,75,105,77,-19,112,67,-102,-69,0,53,-72,-95,53,-4,-56,30,47,38,-60,100,-127,-16,-16,-97,-15,46,90,23,45,-18,29,-111,-38,73,-112,44,115,-93,-32,-104,97,86,69,64,61,-68,-10,-112,60,19,32,87,69,55,-4,123,-105,-28,-82,-1,80,-92,-77,52,-38,76,56,81,-40,-14,115,3,-14,-59,-115,-39,-124,-78,32,69,5,-123,50,70,34,61,-57,-108,-22,127,-13,81,35,-35,34,68,-125,-120,109,89,-21,88,107,-114,99,110,-19,-54,90,87,-32,-81,115,-27,-82,-92,65,-126,64,-94,-90,36,-93,-45,-121,26,-114,-111,118,70,10,-3,106,80,-101,47,125,-12,39,88,-81,10,-25,43,33,-72,114,-109,10,98,-98,-115,-88,96,-43,-80,91,28,105,-122,85,123,-58,26,-26,103,-121,20,-62,101,-88,-113,-36,-88,-66,-58,-46,87,125,-100,93,79,-108,103,-19,-45,-19,29,40,33,49,-48,-15,0,70,122,121,118,86,6,49,111,-26,-67,-28,102,-83,86,50,-86,-124,-104,-28,35,42,126,-128,-87,-70,-109,-94,52,-25,123,-3,-6,18,-49,-120,-62,-89,-37,99,94,109,-85,100,62,-107,-126,-116,110,10,113,-19,-52,-101,84,-44,93,96,-110,-26,65,-45,28,5,-49,-78,-48,62,127,-53,120,-96,67,127,34,91,49,57,-67,107,-85,60,-60,-6,-80,-77,96,127,50,-52,-34,-52,-8,-119,-60,-76,89,-64,-1,34,-25,99,-47,45,-46,-47,3,-85,100,-94,-14,59,12,47,-74,-49,103,-6,-29,6,-25,-2,-23,91,-79,-1,-11,108,0,-44,-48,56,75,-71,-29,-35,-100,-100,54,-62,-77,-46,-56,-3,-98,90,-126,124,1,-26,75,104,101,-113,68,-127,-88,4,39,-106,95,-67,127,-15,-36,23,-71,52,-118,-67,9,10,-12,-51,-77,104,-22,-39,-106,53,34,-67,-35,-38,84,87,-124,41,-98,-74,-103,-125,95,38,-31,3,-89,-107,-106,-24,-90,-58,18,14,-41,-9,-86,-93,-39,83,23,36,-56,75,-119,80,10,109,45,57,-36,-123,113,-68,7,13,35,32,-17,28,118,-119,52,-37,-102,-18,-1,-98,48,-69,6,-97,37,-4,-59,15,40,3,101,91,-31,5,-9,105,-9,-33,-31,-71,46,-99,-71,70,-77,-38,-7,-112,73,42,-2,98,53,48,-1,76,-117,58,-62,117,-127,-66,-120,-33,33,2,-35,67,-100,-117,-82,115,76,15,33,-125,-5,49,91,-111,84,27,24,-89,-87,-72,-35,-49,100,74,65,-71,52,-67,-128,114,41,-63,82,127,0,8,117,5,126,-108,87,8,20,-76,-102,123,71,-73,-37,36,104,-71,-50,-56,41,-26,-62,-105,31,70,18,8,16,-122,-52,-127,11,-100,-109,-35,-86,40,29,-78,-58,-84,117,88,102,18,-45,115,-54,32,-36,51,-66,20,107,38,-119,26,56,52,-77,65,126,78,-113,85,-92,-35,-70,-41,-47,43,-72,-79,-67,-24,-66,-7,-9,62,-77,56,75,67,98,-47,43,-78,-116,-2,49,65,53,20,102,113,-4,-12,-36,8,103,51,-79,-37,-90,49,50,-118,62,107,-120,4,79,-17,61,36,61,96,-117,123,1,51,-15,17,11,-108,39,-87,53,36,-19,-69,126,-72,-91,-90,123,-27,-51,-40,79,-61,127,-62,41,11,14,-67,32,-109,-70,47,38,-1,76,-17,-120,61,-104,73,31,-37,35,-26,106,-83,-53,18,-18,18,-21,59,93,-31,-85,75,-127,19,66,10,4,-62,45,-109,13,44,-74,-25,13,-47,18,30,-59,-96,19,-113,68,46,-5,91,-110,-115,-18,65,-90,25,-75,-21,1,-88,-91,13,93,-61,24,85,28,-17,55,86,27,-14,-60,108,-110,-18,68,113,-64,64,58,52,0,32,70,-52,-97,-100,-9,111,43,-88,13,0,-112,34,-104,108,-125,-9,-32,110,65,-64,92,66,106,113,-116,-35,3,121,-91,13,-75,-44,91,-88,37,-84,-16,-117,-1,-49,13,81,21,33,113,15,-83,27,-77,46,-17,-19,-115,-37,-95,28,83,22,-56,106,66,-57,63,125,53,-23,69,49,-25,-15,-120,106,-86,40,-107,-76,-96,43,101,98,55,4,-116,-89,-26,60,51,-21,106,53,2,86,83,-119,47,42,-49,110,-5,-50,27,36,-75,52,-59,-71,124,28,60,6,63,52,63,-67,16,14,83,65,-58,23,30,49,-27,-66,-26,-39,-88,-46,-81,-123,-61,-18,42,60,-22,-61,-60,66,92,-83,111,100,-72,116,65,-100,103,111,116,50,-5,111,72,101,-88,18,-65,8,-78,87,39,54,113,-70,-44,-128,-70,29,112,63,-52,-48,12,-27,95,93,-31,9,55,-70,-109,-42,-71,122,-46,-115,-58,21,-27,125,9,-82,53,-22,-50,-71,125,50,-6,45,50,-14,-72,95,51,-74,104,-86,57,65,-39,6,-10,-76,-23,103,127,17,-95,10,21,-52,87,24,-128,-36,95,95,21,-96,-14,-44,-8,74,-119,-123,61,-24,-102,107,0,126,83,51,27,-17,43,-95,24,79,-106,115,-64,124,8,-75,-96,118,-84,69,3,122,-97,122,96,-106,14,65,-118,-64,-82,51,-29,-78,-80,121,-66,74,-82,106,82,77,-28,78,-119,121,56,-45,-120,96,-116,-70,-13,41,-109,-91,-55,-49,-31,27,90,-77,-36,97,-78,91,95,-91,-116,-17,-42,111,112,-51,68,53,-21,87,64,106,-82,62,92,-68,-38,-25,-77,-109,-121,5,75,-108,-55,-38,-14,-87,74,-96,-62,12,-97,-91,126,-71,24,-45,97,-19,93,42,-10,-97,-5,79,6,-80,77,-111,-78,18,42,-61,-99,-40,39,-69,64,77,-123,-30,82,127,-39,66,-17,96,-82,-117,56,83,46,46,27,10,-70,77,16,22,114,24,-88,16,118,116,66,-70,114,-89,80,-25,-84,19,111,70,-86,10,-20,-114,80,-95,-15,-77,-88,-1,-121,26,-82,95,-104,-120,-7,123,-20,46,69,59,-76,-41,97,68,100,75,-12,24,-23,79,82,-115,81,-125,-69,-100,-46,-112,-3,44,-108,-121,-55,95,-48,-22,-10,-60,53,48,22,89,16,77,-40,112,-54,-110,79,-99,-51,94,59,-50,31,-55,34,60,64,-5,-103,-10,-58,-10,-115,84,23,112,96,75,87,-79,-106,55,71,-92,85,4,-76,53,-77,-33,-8,63,118,-84,24,98,107,88,-22,-88,-60,99,-41,-36,46,-89,34,-23,78,56,38,-66,-14,123,-80,-6,84,52,-56,67,60,-20,117,115,121,-126,-101,29,-8,22,-108,125,39,-77,55,-31,89,29,123,-46,6,-88,40,26,25,65,15,77,103,-35,-39,62,-58,-118,-25,-50,117,79,-26,-10,64,94,-19,24,44,-79,-67,-114,-114,-31,69,111,14,-52,-71,-21,50,-107,-7,19,-33,110,36,-22,95,63,-95,-71,-38,124,73,-114,120,22,106,-102,-88,47,-5,-18,98,-69,-41,-26,28,-101,-21,-44,-31,-26,-127,85,-41,-105,-31,-50,-120,22,88,111,33,-114,82,-104,71,126,41,46,-53,-12,93,-77,53,-55,-50,90,54,-38,-63,60,-68,-13,40,77,-28,-128,31,-81,-80,34,55,-5,-17,-110,-48,101,96,61,-8,-29,94,30,-128,13,26,43,-6,-60,115,107,-89,-69,54,13,106,107,-62,-57,36,-40,96,114,98,19,-28,14,-48,-50,-60,-64,90,108,-4,-97,75,-54,-71,-107,60,-101,-104,92,-17,-63,25,-60,48,103,113,59,24,51,32,-101,79,42,71,-83,89,65,-26,121,-115,5,-21,-68,-38,28,-91,4,-120,-110,7,122,-70,102,22,89,-58,-42,-57,-51,105,-112,33,21,-114,-110,62,123,76,-6,-83,-14,95,-46,-116,-55,-12,-88,-48,49,84,-64,95,42,114,-8,-126,-67,-112,-20,-94,76,9,-96,-38,-85,54,41,55,127,-46,-121,-38,72,-52,-89,7,117,-95,-97,-113,95,111,89,-105,36,61,120,46,79,-38,-97,96,62,24,90,-111,43,55,14,88,-58,-126,79,-69,48,26,121,25,-89,42,56,-43,109,-81,-50,31,-114,20,62,-88,-53,94,35,69,-1,-93,69,-96,-35,102,12,-86,-44,-79,-49,120,-103,54,-97,126,-96,97,-18,80,-111,-10,2,39,102,-74,-43,-68,-17,11,-89,87,6,-104,-9,53,28,102,-36,-71,-26,-83,-127,-68,-126,32,-96,66,34,87,83,-50,-98,50,-98,-81,-97,75,-48,-60,71,20,-9,108,-74,8,0,124,74,-57,112,1,118,120,-66,-27,-59,15,81,-121,52,-10,42,87,-89,57,31,-1,-74,-47,-89,-92,-123,-50,115,-29,126,-20,-107,51,28,-70,-20,38,-37,67,-114,49,110,-124,-109,-73,-72,7,64,32,101,-51,-98,52,-109,100,-2,-76,-107,-3,122,-89,51,-57,34,-38,-101,-9,47,92,-104,-38,-122,22,15,-18,27,9,47,-58,-20,102,-63,49,85,-71,65,-57,24,-78,-19,27,-113,-112,-48,108,81,-96,99,-9,109,-121,2,-127,122,-47,-67,89,-45,-17,-29,-59,44,-81,55,37,18,40,-11,-69,27,-39,5,-82,-97,0,61,-45,11,-70,31,-104,-3,-98,114,-67,21,-88,117,46,104,115,75,49,18,95,-8,-17,24,55,22,-97,114,31,11,10,-63,-76,39,57,-46,-62,34,68,42,-94,-109,-60,-41,-66,-86,26,-65,-67,124,97,59,118,55,-50,103,-25,-99,-77,55,-104,16,-50,51,-13,-28,91,53,-17,-82,24,73,-54,24,36,-63,-108,-121,-120,-61,118,77,-122,51,-88,104,-31,-115,14,118,29,101,22,76,59,-92,63,122,-66,-48,-7,30,-15,-30,-41,11,2,91,-5,86,75,-110,-87,71,9,18,101,-51,-17,-43,-83,37,-42,-86,-102,-115,106,-108,14,-41,34,65,57,-13,93,-89,25,-69,54,15,12,114,-99,-104,-36,-48,19,-101,-105,-51,51,-112,93,-2,69,122,24,-26,-14,-83,95,-43,77,20,-7,-29,-111,8,115,-102,-67,-97,107,79,46,112,115,-58,-20,-88,98,-30,90,25,75,-47,110,3,-8,94,70,47,22,-103,51,72,58,-12,7,-50,-91,-54,37,27,-38,-50,-112,31,-14,-76,118,30,-109,48,-123,33,70,-95,-2,-7,-111,-75,32,-89,-47,-6,49,112,73,-7,-65,-76,25,67,111,76,-29,-93,8,-95,45,-79,15,-56,23,-96,-58,85,83,84,-70,7,20,-52,106,122,-96,-84,23,33,-101,35,20,73,8,85,112,-86,-30,-14,-93,-30,-8,-39,-89,-27,-36,-107,48,127,-79,-77,49,103,-38,-112,31,-22,68,100,118,-43,57,74,-76,-127,-35,99,101,105,-26,85,-93,44,-1,68,11,85,93,13,-99,-85,39,12,-51,44,-33,-78,12,-63,98,-92,-67,-109,25,-86,64,-58,-5,76,-64,31,-68,-121,-90,126,52,20,-128,-28,120,-117,82,113,-41,27,-128,-39,-86,71,-102,59,30,78,74,94,103,-95,56,41,-128,30,113,46,-11,117,-96,48,-85,-28,30,76,104,-73,101,-89,-25,-79,-22,-103,3,2,83,34,2,-26,-20,52,-82,18,36,90,127,25,13,-21,8,-3,-38,112,-85,-79,-32,26,-72,15,-94,-5,-92,9,-4,-26,98,-26,112,69,-21,-84,-105,-102,-112,46,-60,99,31,-17,3,15,-83,-24,-123,-6,-47,-120,35,-100,125,35,96,-33,22,70,5,89,86,38,64,-55,29,55,126,-125,17,52,113,53,-82,-3,62,-80,89,104,34,77,83,-65,-4,89,2,-114,51,43,-28,-27,-94,-41,68,-37,-85,-36,93,74,-120,-63,109,-70,102,36,-93,-8,44,77,-92,114,50,88,16,99,-67,-9,64,-43,-64,53,19,-9,-70,89,-57,-81,114,-99,5,87,-100,-101,66,75,-120,-70,-31,74,85,-44,-37,108,-32,92,80,-16,123,100,-102,99,-38,102,30,112,-89,102,96,-6,-90,-80,-9,9,2,-40,-114,-128,46,119,52,-47,87,-41,-81,-112,-15,-107,79,15,45,-88,108,-22,19,27,105,-53,82,59,72,36,118,123,-93,-44,99,-8,-98,105,33,76,-46,93,-110,-51,64,-80,-58,-103,87,26,-4,-54,-93,83,70,20,-13,76,-52,21,-13,127,-93,-7,19,102,17,23,41,14,93,76,7,94,54,-81,67,-52,-61,-23,-92,9,-127,-125,99,-128,88,63,-118,110,-24,-76,-53,123,-79,-65,71,59,55,22,-64,-111,48,25,-79,-45,-102,-78,-85,-53,-67,100,0,72,-71,98,56,-6,-46,40,30,19,-42,127,-54,40,58,34,-6,21,-78,12,2,-42,58,-44,-112,-113,-55,62,-14,-25,-127,-40,85,-80,-72,8,29,-27,73,-36,-32,-21,34,-46,84,75,-123,72,-41,-92,41,-12,41,109,106,47,123,20,-73,-38,117,44,69,-119,-102,49,-97,9,-89,-128,-53,60,-65,-43,-39,-118,-33,28,-41,58,-41,111,-25,110,-58,105,90,20,70,39,-21,50,-114,-104,26,-98,96,-16,74,-85,-68,-35,-80,63,58,98,119,21,-124,118,-77,-11,-125,23,-101,-9,8,-61,92,-28,-112,30,-57,93,-49,32,-48,92,87,-96,-29,52,103,-97,-27,57,116,77,-25,-107,-77,114,-96,47,-79,-58,8,-72,-50,99,-113,-80,24,-19,-83,69,-6,92,-5,-115,17,21,-28,-43,55,39,-60,-55,76,-127,40,-43,106,-35,-6,-79,25,19,-59,121,112,-57,-111,4,80,-39,-77,-103,-89,-113,-38,43,61,-125,41,-105,-127,28,-33,124,-50,58,69,2,99,-31,-88,-83,-21,90,-56,-49,83,-119,113,56,38,92,61,-74,-2,101,-73,-53,26,-95,32,119,-23,-114,-7,116,114,-52,49,81,-88,-102,76,-73,50,38,5,-63,-49,-126,69,-124,-47,-13,-53,11,-42,-97,46,83,29,112,41,125,35,46,58,-17,-43,-2,-5,-34,-96,49,29,-13,-80,-82,-112,13,67,-17,84,96,38,81,49,65,117,23,-97,-60,49,-43,-34,-74,52,3,93,-93,-26,-88,-54,5,-113,-73,123,4,-95,17,103,-41,64,23,-90,-35,50,-112,16,26,-104,-119,-41,5,95,60,-31,58,109,-71,-26,-118,28,-71,-126,-93,-50,30,85,71,-31,-92,-48,-65,-48,-51,-52,112,-2,-75,74,-24,41,121,-20,97,122,-49,-73,55,104,-95,38,23,-83,119,-22,-118,45,-37,-105,55,-122,-4,52,34,25,47,37,102,89,125,-12,7,85,-6,-92,107,13,97,117,60,15,17,79,-16,18,20,-80,-3,-23,-70,-125,-81,52,105,88,-111,81,124,-40,28,-36,-44,-57,-96,-49,-5,1,77,-37,-73,-107,-79,18,71,-124,-70,32,53,33,-83,-34,43,59,71,-55,-53,78,33,-125,20,-97,44,15,59,80,-20,65,-72,93,88,23,-3,-44,117,68,-125,64,123,-30,-89,126,59,38,32,-31,-27,125,98,12,-43,-5,40,-59,98,124,-104,125,-48,-74,62,-104,35,73,19,-8,60,43,-6,-62,47,-3,100,37,-125,-100,49,14,20,-15,76,29,-125,95,-74,-85,-56,8,58,70,94,-60,-112,-37,-50,73,78,19,23,-56,82,37,22,92,-40,63,-49,116,113,41,-11,-5,46,-123,45,27,82,106,102,24,85,60,-108,63,-67,53,-126,124,114,-14,-108,64,-6,-27,-19,-101,102,-68,93,-45,-4,69,-109,-27,112,-111,-64,93,-36,-128,-78,-16,-79,-4,-117,-8,-40,87,-79,-62,-51,123,70,-39,-94,-91,15,18,11,-82,100,-104,-59,13,42,98,-51,110,102,-76,40,71,117,-81,-120,-120,79,-17,44,-128,-51,-41,-48,76,123,-20,-44,111,71,-41,-86,123,5,80,124,55,73,-76,-32,21,5,-43,-65,34,-46,-55,-108,-24,111,110,59,-128,59,58,116,-86,-34,85,-61,-111,45,-125,-47,-37,79,48,-56,102,-96,-94,-90,-127,-17,-109,-95,-52,16,-77,40,108,-85,-93,10,-25,-94,31,-59,-2,95,-26,-28,-88,120,30,-69,123,42,90,67,123,86,-24,-9,116,12,81,-92,88,-86,10,-77,104,-75,-119,-43,63,-95,-16,54,-111,-3,-54,-7,-96,112,-68,68,-113,-88,3,-37,-40,55,80,-128,62,-32,-13,74,-48,-21,-64,118,-78,19,-41,-75,-10,97,64,-126,-81,20,-79,-112,86,-20,127,56,125,-84,69,73,65,-53,101,118,-15,-30,-62,52,105,-59,-54,-87,-48,99,-116,-120,-107,-40,87,87,-108,-19,49,71,-98,58,86,-125,-55,-31,-38,91,-76,77,-119,-62,52,123,23,85,120,49,122,-19,47,-83,86,-15,-69,-86,-118,-56,-121,21,-74,-82,119,-39,59,87,-45,-38,19,-67,-13,-91,-84,1,54,-96,-58,-122,100,-118,-97,73,94,20,23,-30,-4,-7,-72,-30,-38,22,-121,-36,-85,50,114,95,8,45,-85,-89,93,30,-105,35,-53,87,-41,93,117,17,-61,-61,-113,10,-52,-99,89,107,69,48,-27,80,-75,-104,119,-76,-30,125,-37,24,55,8,31,-14,75,122,13,33,-13,-37,98,101,-51,27,-49,85,-51,-15,18,92,24,37,-122,-30,110,83,-17,101,12,-54,111,-7,4,-82,90,-91,97,-99,29,-75,73,-46,106,45,68,68,-35,-28,99,-74,74,-70,-111,-63,21,-22,86,-122,-80,-93,50,14,-105,82,45,-41,102,-38,-9,-84,-94,-89,-18,-50,74,120,90,-17,52,-63,-83,-17,124,-118,43,-82,-80,123,-119,-106,75,98,0,-76,61,107,-72,80,-27,-70,-100,77,100,89,-18,-49,93,-52,-68,-46,103,-69,-9,13,-65,39,-89,49,-52,-88,-77,-29,-33,-119,-105,96,-128,5,86,55,-94,-43,29,48,109,73,-76,62,-11,-82,-32,122,-88,-16,29,-40,-69,-59,52,33,77,67,63,-89,-106,112,59,-67,38,-33,-115,-120,81,8,6,-92,69,87,107,40,9,9,-31,-68,-117,-81,-110,113,44,-62,-85,-23,77,-6,84,-126,80,-45,105,75,-62,-8,-63,58,-2,34,-48,38,107,-16,-82,-128,-47,-44,-113,-99,121,-29,-17,57,100,-23,12,-110,42,34,-64,-124,5,-13,105,-128,112,-4,100,123,13,-125,-7,117,86,53,-128,-87,-122,-60,-18,-77,117,-35,-81,-75,100,-124,116,-110,82,77,87,125,-100,-105,123,100,2,-4,29,-127,-49,-77,-54,-117,-110,-101,6,63,-103,122,76,-40,54,-86,53,-103,52,-3,-118,108,57,65,86,-106,-41,51,82,-44,92,-63,4,-99,17,4,68,15,22,-83,-126,65,16,105,76,80,96,34,63,-115,79,-115,-109,-50,-71,-61,-89,98,-123,32,-88,113,81,-29,92,-36,120,110,56,18,108,-31,34,-24,77,84,-8,25,-98,-4,-102,-33,90,76,76,-128,-104,-105,-65,10,101,22,-80,89,77,3,-62,29,-36,-85,-116,120,-44,-107,63,45,-125,-108,16,-29,-103,-38,-19,-126,113,30,1,31,-127,26,-18,-56,-85,47,32,102,-109,-6,-120,-121,-50,-121,-25,-7,-127,-34,55,-114,-69,-34,-6,-44,123,25,-34,82,101,-21,83,-2,33,-23,-108,-107,106,60,56,-30,8,25,-46,-46,-31,-78,38,108,4,124,12,29,21,-87,89,100,-116,-46,37,2,-53,109,40,-48,77,-60,-64,-68,121,-84,-109,-71,12,-118,122,-25,-73,80,28,62,-88,-89,109,106,-74,-64,89,58,-27,96,-74,-62,-110,-73,-65,-73,-87,-128,-122,-72,6,29,22,73,62,-99,54,42,31,-46,-37,-87,23,63,114,10,-63,76,68,-24,30,-86,-20,-43,-25,-12,15,124,-43,38,111,-121,119,39,-49,34,-32,27,69,-5,80,86,-42,-51,-74,-71,-24,73,87,-32,-11,53,-24,99,-25,74,-11,-115,104,117,-78,-7,-113,-99,-103,-10,-20,121,-9,-35,-76,112,111,-68,50,-9,96,-108,10,-38,94,103,-73,-64,116,99,2,-18,-22,22,90,-105,-68,-42,124,-122,90,-52,-43,-6,2,-22,-117,-119,52,-76,47,72,-84,-19,-85,-124,15,127,-115,36,-39,-109,92,13,-76,47,2,107,3,90,-24,1,102,26,-17,-27,-114,-112,-74,-29,-57,-108,-21,32,-104,76,-47,-17,-77,52,38,106,-68,-63,86,-86,67,-28,114,-81,23,-57,-110,-81,64,-1,-97,-29,-25,-24,95,-35,-118,-99,-96,-11,68,-118,-84,68,-1,12,-39,77,80,111,-113,94,-123,97,93,-80,-117,-52,5,-24,-108,70,-27,48,-21,123,5,-98,-28,63,-96,-37,23,67,-33,-96,-50,-124,47,-58,-109,-64,20,-37,44,-101,34,95,-62,-76,-57,39,-51,10,100,94,-37,-72,-4,-21,114,-21,113,45,122,-117,-77,47,-82,40,-68,27,43,-99,105,18,-15,-7,112,27,-110,47,83,-8,44,-50,-86,-37,64,-58,-53,1,14,18,-33,69,29,100,51,35,-44,-99,-17,-90,38,107,-58,-103,106,-49,-90,23,40,-76,-79,7,-106,84,107,-44,-58,-50,-21,-10,-47,34,91,-9,64,20,114,-11,-76,-105,23,113,58,44,-91,-62,-55,38,-101,121,-22,100,81,-55,94,-46,94,-125,78,43,-128,-101,118,-103,-36,81,-8,-66,90,-3,116,-90,48,45,-49,104,2,44,-69,-78,28,-65,-90,-54,103,-71,-62,70,15,-31,36,-81,14,-103,-35,-60,103,-13,127,-54,-32,-93,117,48,45,20,-89,-23,127,59,77,3,-84,-35,-27,44,87,60,-16,-112,-56,37,103,78,-115,11,-3,-44,45,61,121,-106,-104,88,-39,52,-112,-102,104,46,-67,102,-91,-77,-13,-79,24,-59,61,-90,-34,101,118,-52,-84,57,-5,46,-62,47,-66,-18,121,81,102,32,89,-78,122,28,12,-110,-123,-19,-38,8,-78,-94,22,83,111,-36,92,60,-2,44,-59,-43,-2,-66,-29,-71,92,-51,116,-78,-2,39,124,103,7,19,92,7,-66,-100,107,127,-115,80,-3,59,98,-95,-93,11,62,99,-126,-61,-74,109,-58,87,-24,100,122,96,-65,-71,-38,-118,113,21,-71,100,-103,-106,-23,72,0,-55,-105,-90,88,73,99,37,-68,-108,59,-41,82,119,76,-41,-62,94,110,53,67,68,-62,38,18,-37,-24,14,56,-41,-121,-84,13,48,50,-4,-17,110,-77,77,48,116,8,111,-80,-63,-4,112,19,-9,-127,88,-45,72,-85,63,64,-32,74,-61,77,-90,-75,125,-46,-15,-99,36,116,76,0,95,-86,79,14,-55,7,46,76,101,-115,67,-124,38,71,95,-70,18,-18,-35,-42,13,-104,8,98,77,51,-82,-26,-61,-66,2,44,114,-27,-61,-119,-70,26,2,27,99,-99,14,82,30,63,-88,-97,13,97,34,-47,-99,-44,65,-13,48,47,4,78,41,37,11,8,99,117,-29,-59,-94,-7,28,-125,32,-109,14,-61,45,11,101,47,84,-13,-58,-49,90,100,-94,77,19,12,-24,-91,54,112,-48,67,5,-86,-63,47,3,73,4,68,-26,-64,110,-79,-18,-96,105,-35,-36,-71,113,67,36,23,-14,48,68,-33,-5,6,82,-56,-20,29,8,56,39,-33,121,-11,-43,-78,28,-29,-101,116,-98,-76,-81,-72,97,-16,107,123,-89,-47,-84,-67,-77,-107,105,29,49,102,-113,-41,-18,-24,-112,-19,54,49,41,50,-25,84,15,87,61,20,63,-118,42,103,33,48,-48,-121,16,82,90,-13,6,-40,2,-74,-85,-68,-4,-14,-76,17,-101,81,-80,7,-117,-64,-54,21,-50,102,-2,99,21,-74,8,74,-36,-89,-75,2,28,-29,-105,53,126,85,-35,71,-118,2,-55,-84,2,9,-20,124,83,4,76,50,95,-104,45,81,88,-113,10,66,44,-110,122,73,-78,92,-85,5,3,17,30,-32,-127,26,-53,34,-75,81,54,7,96,9,-42,109,6,-15,-13,119,34,-126,-102,67,-70,116,9,-12,-88,19,-9,85,91,-26,103,39,92,116,88,-87,33,-43,120,-68,-87,-53,84,-99,-28,96,-59,3,48,12,-18,87,21,-88,86,-56,-36,63,33,-80,-97,-93,116,-36,-38,100,-65,-62,-87,66,-65,102,104,85,73,60,-96,77,103,-80,-70,-99,103,-6,-67,1,-1,-81,66,-80,93,17,-58,-44,90,63,-35,-59,39,-56,-49,83,71,29,-7,-111,92,-114,-75,-80,-54,56,-107,-7,-48,21,54,-124,-3,80,-49,-13,61,-115,-29,-60,-78,96,-105,-110,123,112,-68,126,-87,53,22,70,16,-40,-90,-74,82,-16,29,-70,-84,-47,14,-117,-3,52,23,64,-84,74,-37,6,-13,-57,108,87,-100,59,82,45,87,2,-39,52,57,-79,84,20,-65,-33,78,-96,-61,-61,63,34,37,-16,-19,12,101,-119,-97,27,-13,21,59,32,9,57,-124,127,6,-105,118,80,-31,89,98,76,83,56,85,27,102,16,-57,68,3,-26,5,-95,-77,23,-110,6,58,-21,-113,-78,26,90,-16,35,-23,46,58,-14,102,-117,80,-108,-47,10,83,-42,119,-49,-38,-58,25,-100,-80,40,-54,-122,-45,80,-85,-77,87,-2,-35,-94,-115,63,86,111,-75,-47,-114,-47,-35,-10,84,71,-111,101,123,43,-99,-22,106,95,-17,-94,111,96,10,-3,-89,104,71,22,-52,7,-99,-90,32,-11,106,-7,-112,78,99,-38,-81,-104,-30,30,-16,-110,30,-31,-125,-113,95,-19,-50,-86,-66,111,-50,26,-74,-66,109,4,70,-4,-14,-30,-78,-83,48,-105,-45,-2,-86,-2,102,118,-62,83,37,58,53,-112,89,46,-25,75,22,100,-66,49,95,-104,125,88,19,-76,-35,-40,-83,20,54,-106,116,101,39,-106,32,-82,61,-80,-52,-45,-86,39,103,-71,108,121,120,-126,-56,-24,71,52,70,117,9,5,110,-39,-56,-97,-79,77,71,-90,-97,3,-8,-64,-102,-99,-6,59,-100,115,112,-5,105,-7,85,-76,-65,14,118,65,10,23,24,68,69,68,-78,-60,116,13,40,-83,-118,-2,-43,79,96,-79,-7,-19,-56,-93,-47,-63,-5,96,19,19,94,31,30,22,43,61,121,61,-49,116,-17,89,-104,-41,32,29,-111,121,-109,-51,7,88,16,-80,-105,115,-25,51,-6,-61,91,-84,-41,69,-80,-12,-70,15,39,75,-38,68,40,45,80,-71,62,-22,111,-51,11,-9,44,29,-114,-27,112,105,-68,51,29,-105,68,-106,-95,-109,-13,-82,51,13,-51,-48,-103,54,-91,33,50,-29,17,-65,-46,123,108,-73,-120,123,-52,100,32,-110,-76,43,27,33,-43,-13,52,-79,-30,-86,109,41,0,103,39,10,-57,-90,49,106,-13,-28,-52,124,-15,10,74,52,83,91,-63,95,-23,-124,26,11,-44,114,-48,13,-57,114,-108,-60,99,39,27,-101,117,82,96,30,5,-34,29,-128,-74,-47,-33,-6,-35,-121,-112,-35,109,-118,-69,117,-80,-18,20,-102,24,-33,47,1,-117,101,4,74,-64,-5,-13,-57,-65,-127,25,-107,125,0,-78,27,61,-100,-1,-84,-29,-60,110,-17,-75,-19,-63,-56,-25,21,107,-83,-100,-33,-89,-48,-3,46,88,-121,-55,109,83,29,28,98,-64,92,-29,-65,-63,-26,47,-59,-73,4,65,-86,30,-111,1,-21,26,-88,77,-119,-1,-35,22,-109,-86,75,-54,113,-29,-95,24,-40,127,97,-77,-24,43,-85,69,80,-56,-32,61,125,-18,-105,19,9,65,-2,-18,9,90,2,27,127,10,-15,-57,-76,-37,11,-51,109,28,-55,-63,90,69,48,-13,17,2,-53,125,22,98,44,-96,-94,-116,79,12,-2,72,-11,44,65,88,64,-112,76,61,72,-103,-29,106,-123,-36,91,72,79,92,-24,78,-121,4,-93,74,-28,83,-109,-98,-43,-57,92,98,-23,92,-99,63,10,83,-39,94,50,79,-111,-32,-124,-19,-34,-26,56,60,-79,40,68,-72,91,115,-101,-73,-55,36,-85,3,-86,-73,-113,34,-83,-59,103,10,3,-98,53,-90,112,-114,-101,-1,46,58,-108,-77,-122,26,29,-87,52,51,25,-51,0,32,-61,13,57,67,-108,-50,97,-36,-67,8,117,-124,-59,28,95,-112,-86,-50,105,-54,-108,-111,10,124,53,-1,-127,-43,65,35,-42,-28,12,63,-92,-97,-71,22,-119,-47,-42,10,15,-50,-23,83,-24,-28,3,-42,114,98,120,13,20,69,123,-101,108,29,-36,-44,87,15,77,56,74,-89,-23,65,-12,19,54,66,-31,-16,79,-8,-43,111,-46,-48,-111,109,124,-17,-87,69,15,61,-28,108,118,43,-55,53,74,-102,-72,-58,-88,-54,83,-80,-38,56,116,-80,-66,117,-3,105,82,74,-125,-75,-120,-58,43,88,-5,6,78,-72,-42,4,85,-49,-55,88,-79,-51,90,-33,-100,123,127,60,-115,20,-19,-97,117,9,90,-32,-123,123,-98,-15,-75,122,92,94,-86,41,40,24,106,-60,-39,73,68,93,-91,-86,-41,-80,-120,-27,125,-87,91,-40,-41,-9,5,34,65,-123,-111,2,35,113,83,-66,114,-111,5,60,126,-93,-105,-35,90,57,-68,11,62,-117,-33,51,-52,-45,59,-43,117,36,69,-95,97,83,64,-62,-81,45,110,88,102,-125,1,-51,43,95,43,-22,107,-97,25,-12,-122,4,100,98,-64,94,-21,-37,45,-38,-104,119,64,-74,29,-123,-46,102,-2,-40,115,-31,-8,18,21,-115,27,-80,15,2,74,8,75,82,90,88,10,37,-99,-105,-82,77,110,-49,-104,-1,35,40,80,-97,24,99,-94,43,43,-63,-40,10,64,-3,20,40,-22,77,113,-71,-79,-82,-44,-53,-106,-95,110,-124,-121,25,23,86,104,-96,97,-27,-14,74,54,120,49,-67,-128,-9,-30,-33,72,107,-12,18,-60,21,-91,77,40,38,-12,111,7,-43,36,-15,33,-70,-108,14,-89,44,85,112,-85,-109,-123,-72,57,100,15,-124,-48,98,-111,60,-17,85,11,90,-105,7,-116,-10,91,-10,64,59,-107,-121,54,-128,-98,83,38,64,-25,36,46,20,-96,-108,-71,-1,-17,101,26,126,67,-89,0,77,32,-72,42,-11,44,-14,119,84,-31,-29,-21,95,-8,-74,123,-128,30,27,94,-51,38,-11,45,74,20,-74,-33,-115,-122,41,7,80,35,18,33,16,-6,95,-111,3,-30,-101,15,-59,-92,-69,-67,-86,28,-43,98,38,27,-111,-126,-34,40,68,83,106,-95,-26,86,-54,-102,-110,11,-122,40,-37,30,112,-88,38,-8,-46,46,81,90,-40,95,-61,-109,-110,-123,-44,127,-83,-73,77,81,-23,105,32,81,-55,77,62,115,32,-70,-62,-123,-33,-44,-33,-36,-96,4,52,86,127,86,38,-16,84,21,106,-12,17,43,53,-98,-80,-125,-69,-25,-70,-72,34,6,91,-119,48,22,0,-33,-115,-18,-19,42,-34,46,-92,-27,106,-113,7,78,44,-123,22,-116,35,14,18,50,-110,-112,113,-91,-51,28,109,-83,-51,86,73,-17,88,-64,-114,-19,30,-33,30,-1,-121,-109,86,-58,51,104,89,119,-76,-28,-90,-95,-100,30,-77,-23,-14,-99,55,69,-55,125,72,58,-112,39,67,54,-6,6,76,50,92,89,97,4,52,3,96,-47,-26,126,80,-80,-100,16,53,-119,-36,123,106,-76,67,53,5,58,-13,31,33,-67,111,-42,-16,7,-111,43,51,-27,48,-105,38,23,-110,-17,-12,-98,89,-66,-1,64,118,93,-75,-32,3,-93,-115,65,21,7,-25,126,59,45,-16,-26,14,50,2,107,-19,-110,-34,-107,75,-11,-109,19,-61,54,-115,-63,123,-39,98,125,-94,121,-16,-24,-11,2,77,102,90,-121,116,-55,109,68,6,52,-110,119,65,-119,-47,6,22,103,-121,-32,104,119,-38,-16,-100,49,-117,90,109,-90,124,-92,61,-115,-107,54,-72,93,27,-79,89,60,-26,-77,123,111,-124,-89,-54,-94,108,-119,55,78,-108,95,123,59,-49,42,36,-4,-28,-7,-99,-42,-100,106,59,-65,-24,-100,115,-6,91,-5,-93,32,-77,35,70,-90,-7,-74,77,-20,105,114,49,-6,40,-32,-91,76,-32,-126,-83,-81,84,-103,102,-69,-99,-127,87,113,80,-69,-108,-13,-29,-43,-11,-126,-113,-90,-22,-11,79,-107,77,119,-104,7,-64,62,26,77,-83,24,-90,115,-37,10,-22,-76,-13,52,-57,-52,-63,114,-38,94,-56,-96,78,74,-95,85,-82,99,-66,59,33,-113,-78,-97,10,50,4,32,102,5,-105,-76,-69,-72,-19,69,20,127,94,-57,-26,-117,-7,-38,24,126,-81,86,91,28,35,-91,59,-126,-39,9,-58,124,101,74,120,94,-40,14,-31,26,-5,-90,54,50,-56,-108,80,19,-37,-39,-45,-22,-107,37,53,38,-126,-117,9,-102,-104,83,-73,-125,90,-106,74,109,29,21,-76,-42,-51,-98,72,52,-45,-56,20,51,-1,122,91,-111,-106,-69,55,-108,-93,12,-18,123,11,-3,51,51,96,-100,91,35,62,70,-39,33,-64,-87,-51,-54,-87,15,-81,-125,-111,14,-109,126,126,-36,65,-34,46,-89,70,-119,-49,-122,-47,126,-87,88,-117,62,-89,29,-65,103,100,-107,119,-88,-117,25,-89,9,-36,56,79,9,-95,66,-5,54,-2,95,-124,-95,-93,-126,-9,-54,81,-106,21,69,122,105,-37,-124,98,-25,108,84,39,-9,-97,59,-25,-67,18,-42,3,-105,117,76,79,35,48,-76,-107,78,-75,3,-81,-61,30,-88,-19,101,-118,-67,76,-99,-99,-82,103,-94,112,-71,-105,-24,-91,-26,-110,90,120,62,-116,-20,83,75,41,-7,34,-77,23,109,107,94,-125,74,-78,26,-13,27,99,49,77,-73,100,-115,-36,0,88,123,-65,87,77,-108,-24,93,-23,-60,-63,-44,0,-96,88,-19,89,108,119,19,102,-103,123,69,85,-68,-99,89,11,-60,47,-106,97,-53,94,-56,116,52,-1,-68,6,-55,-107,-3,-9,-59,78,-21,-69,118,107,-105,-3,37,127,-37,18,-117,-79,-43,-108,76,64,-121,-25,-52,68,124,33,-2,27,52,-71,88,14,25,-115,92,110,-36,-16,-82,-21,57,30,-57,-105,63,-75,-72,30,113,-92,22,56,-77,-20,68,98,-20,-15,79,21,-25,106,115,71,32,20,48,15,112,38,-124,48,122,-70,115,47,62,105,-71,-41,-85,127,-35,-21,122,110,30,-70,-6,9,-103,122,-68,-45,42,68,9,83,93,117,110,8,-42,-82,13,105,-26,21,98,-42,27,110,-123,10,109,31,22,29,22,71,-98,-5,7,-91,-112,-32,-56,60,29,-126,92,-7,-64,-77,72,-20,4,63,-54,-128,74,-53,-92,6,-89,-20,-92,106,32,-94,-50,88,52,46,74,22,-119,-90,-69,107,8,3,13,96,-64,28,-59,58,55,-102,97,110,-106,74,83,-95,-49,-106,-26,-93,9,-19,20,-63,87,71,-28,-52,125,26,49,-73,-11,112,72,-117,-65,88,-33,21,14,121,-29,-74,-128,4,102,125,112,-49,12,118,-28,82,97,16,-82,-7,4,121,46,-71,28,85,50,78,63,-94,74,107,-59,-48,-24,76,-112,93,-47,-67,-32,119,84,108,122,-67,-113,-17,33,-63,74,52,23,-10,-96,27,-54,49,57,-103,-125,62,20,102,7,-20,-58,54,20,109,-18,-78,107,31,-85,5,-32,-90,-61,98,6,64,104,81,125,-100,51,125,104,56,126,24,50,22,23,-100,-128,-82,-86,109,-83,30,15,23,123,-89,14,-48,107,-61,-92,-65,-75,49,-82,-36,-124,-36,-12,10,0,-105,26,119,-55,-47,-37,-38,-17,48,101,120,-118,-92,-89,18,-14,-50,-72,112,-105,-41,-106,-114,-5,87,-100,-125,102,-7,126,-23,-25,71,-111,-11,123,50,57,-84,-66,-101,-76,-106,47,-23,39,-28,102,-65,103,32,-14,-125,82,34,28,-18,10,84,-109,79,32,-112,97,38,56,-36,104,68,-78,-80,93,-95,-70,-6,27,41,33,-120,125,90,-18,-97,30,-51,53,-79,-74,92,-33,-102,41,-72,4,-27,-102,28,-56,114,-117,126,121,8,-126,49,122,-105,-56,-127,-51,63,84,30,-76,-13,49,-112,57,3,127,-111,-45,53,41,-71,34,-85,22,-114,-34,38,97,52,-45,44,4,-111,-35,-98,-24,-53,42,74,22,-89,-19,-119,112,-21,-118,-86,119,71,-52,-88,26,52,35,126,21,-51,-110,4,-120,-107,65,117,-8,-72,47,-66,72,85,3,73,-89,-100,-36,-114,-97,87,72,-27,-111,116,19,71,-53,-68,-121,17,45,-83,-28,116,71,-3,-29,-60,-125,-55,-64,11,4,-123,53,42,-24,-37,104,-22,-2,-77,-122,-45,49,91,101,81,44,-72,-64,-100,-107,-51,-26,108,-4,118,-80,-75,-23,-11,-102,19,-18,-18,125,90,-91,102,8,-54,-35,-35,-84,41,-115,-99,30,21,6,24,102,-108,124,28,39,1,-39,9,26,-8,-9,114,-93,76,44,72,-72,-24,-57,127,-3,-58,16,-1,67,-41,29,36,-92,-31,-87,-124,-34,-23,15,-44,-38,-19,-87,-47,57,118,-2,8,51,121,-82,71,-14,-41,-84,-62,79,118,-20,-12,16,48,5,-127,17,-83,28,54,-95,-89,-97,3,-18,40,-21,45,115,124,15,89,-118,-125,-19,23,-58,-1,2,38,-18,-121,-48,81,39,19,-24,-64,127,-46,19,-16,80,-128,55,121,-43,-73,93,56,-37,123,-62,14,36,-127,42,-117,-43,-99,38,-19,-46,-112,-70,-128,24,-79,11,23,-34,-99,-121,-81,-110,88,54,-80,-51,51,83,10,-76,-53,-58,-35,-128,52,20,27,-109,119,24,51,-19,97,37,112,112,38,-65,84,120,67,-8,67,6,-104,-94,-103,118,-1,30,-94,-127,-50,78,10,58,-97,-95,-42,107,-41,21,-88,63,27,-55,-28,-67,-39,-23,-118,-108,91,-1,-9,16,-37,62,46,-80,-82,1,50,-29,-55,48,-41,78,-112,34,12,-53,123,41,-94,37,108,-16,-42,46,1,-123,-50,71,3,8,86,-39,-24,-82,-86,20,22,8,-72,51,119,114,-110,-55,115,-15,74,83,93,93,51,122,3,-125,28,14,59,41,-56,107,-17,-21,38,-59,71,-23,0,111,79,75,113,69,-48,-17,-110,38,-29,87,32,50,4,-41,-56,12,-27,-77,-87,-113,-4,-117,-99,-20,-61,115,-99,40,-99,2,29,26,119,-86,112,-95,-31,4,-21,-102,-53,94,-82,45,-65,75,116,-85,-17,-109,-111,23,-23,-110,1,-97,100,29,80,-90,93,-18,25,95,112,-22,72,74,3,77,-29,-48,-106,-117,94,9,95,97,-109,-104,-124,-94,-29,113,-1,66,33,-28,12,91,-88,-102,77,-16,-116,-65,95,-79,-107,-76,21,78,78,51,54,-51,-123,2,40,-105,14,-90,64,112,124,49,-124,71,-114,97,-3,3,-83,-105,-50,59,-63,94,35,73,120,-43,116,16,-91,-46,-18,123,-97,-26,84,-119,72,-117,-108,-21,-118,-84,75,34,-59,-108,-104,-26,-11,70,63,53,-81,-65,21,-63,-55,-108,-35,-125,-58,-115,-16,126,-72,7,0,-76,-13,-54,59,81,-118,-12,-67,121,5,27,-23,-6,-79,-125,-14,-19,-45,80,87,-56,-118,-85,-37,-43,72,71,-49,-22,116,-121,-90,-59,49,-91,31,46,-62,34,89,-4,12,23,40,26,-7,-54,120,-89,-37,-39,88,42,-18,12,34,67,123,61,-91,46,54,-38,-104,100,-75,74,-36,0,28,15,113,-44,25,-56,103,28,-16,-92,-100,-7,58,28,44,-75,-121,34,-113,38,-99,66,-2,45,17,-19,11,-45,41,-20,-122,-72,38,110,-58,6,64,-86,44,-73,-70,-45,-93,121,53,36,91,-41,52,17,43,-71,-90,14,110,97,-53,36,-75,-32,122,115,29,102,-88,-46,92,53,-39,20,-102,46,-91,117,-26,36,-108,55,-101,-120,85,82,14,101,-81,-26,115,-24,33,-47,18,-108,33,-18,-50,-46,-24,7,-125,-71,41,99,-66,-2,-14,-25,10,-112,-74,47,-43,10,126,117,53,104,-77,-57,-30,10,34,93,69,-116,65,24,81,90,88,115,89,-90,72,43,51,10,-37,55,-12,-4,40,123,-85,-90,123,8,13,109,105,112,64,-16,25,-83,44,-54,-109,99,-74,54,-82,104,-20,64,-37,-3,-17,-72,40,14,-64,89,36,107,124,-84,-74,60,-47,6,-98,-125,63,112,-41,-70,-62,115,-56,30,14,127,52,109,-38,27,-112,76,-65,114,78,26,-53,77,60,-107,-118,-120,24,-74,-96,48,29,49,-15,-9,-115,1,58,-21,104,-117,-91,-109,-89,-26,-84,82,36,116,121,52,-28,-50,-103,-87,-93,-103,93,-108,49,-39,37,-115,38,-37,-28,-2,-37,-26,19,11,-120,-68,14,-107,-49,-41,107,17,24,24,-100,6,-7,46,-122,102,35,-110,93,-53,98,-84,38,65,-8,-6,-99,13,23,-5,-4,24,7,44,86,66,-111,67,-65,19,9,-92,114,34,-26,-43,-61,-11,48,29,58,-57,5,-105,-33,77,0,-41,22,45,-51,-44,-99,20,-61,-49,-20,47,-29,-30,10,-11,104,99,21,-11,57,44,108,-84,122,-15,-67,-104,39,-71,-83,2,14,127,5,3,-87,98,23,-9,104,-110,-79,68,94,95,89,40,107,24,26,-97,77,-111,-100,112,-111,-97,-36,49,-69,-95,31,-96,-45,89,127,-1,31,85,-5,-53,-6,-9,114,-53,-69,-102,16,113,84,-6,62,-73,-15,-18,-44,68,-105,-36,127,12,-27,-28,-42,-86,93,-121,-19,67,51,-31,51,-119,-74,86,-111,32,73,35,18,-19,98,44,-82,-84,-84,-106,70,-45,-60,72,50,-67,-126,-5,-67,113,-89,-62,-23,28,11,38,-2,-14,52,-54,-110,-61,4,70,-35,118,-80,-46,-11,-100,-54,-100,0,39,-70,-124,49,-120,-69,102,39,44,-115,-49,-50,-102,65,59,16,90,69,53,-27,-113,20,-47,-115,-28,39,-19,-19,-114,75,59,127,-94,65,-54,-27,-115,-46,-85,-4,1,-43,127,-98,-21,-74,75,-67,-124,22,27,-42,-27,53,-45,127,36,59,-44,-23,-126,-59,-90,-83,86,99,-86,10,108,-99,-45,91,19,115,110,106,85,-83,-16,-33,122,-86,-120,-87,67,-4,-57,4,11,107,-58,-2,-128,-12,-111,-5,-53,-68,-91,95,-68,85,19,-40,-32,20,10,58,-65,-9,-36,-56,79,37,-64,-12,-33,88,123,94,-124,-62,67,-2,41,35,114,31,-116,-100,-32,86,-17,-81,67,-85,-3,14,45,5,-78,-87,-110,83,47,-65,-121,-120,-114,-9,-19,-7,-33,61,74,-40,26,-9,-21,106,63,-70,117,78,56,76,-121,-77,50,104,-125,-32,-117,80,14,87,30,-59,69,-101,43,-98,-11,-23,-10,125,52,97,-19,-56,-94,-108,-41,-119,-38,24,-42,25,65,-39,18,-126,-4,109,95,99,7,-102,13,96,110,74,-89,15,-3,6,73,61,35,-78,-83,98,106,72,116,-127,82,-15,54,-17,2,88,31,111,-37,-102,-24,69,-7,-57,-6,-62,-39,-79,103,74,113,65,117,-32,37,123,-5,59,-15,68,-121,-78,-65,94,120,104,60,5,117,61,4,-85,-88,-123,68,-65,-101,46,64,-80,69,-19,-57,97,-27,-47,54,84,104,44,-15,125,114,16,-23,-124,-100,-87,36,81,-34,-77,-73,95,-126,-120,-27,-20,29,66,-80,-64,77,105,-100,44,19,-80,-18,-27,27,-92,79,116,12,-18,-15,-71,45,116,-27,14,-4,-88,1,-110,51,-101,-14,-77,-120,60,-40,-26,108,-123,116,111,124,93,-74,87,121,62,-83,1,2,-64,-69,11,-45,-79,110,-55,67,53,27,-79,-74,98,-37,97,99,26,110,-91,43,9,-43,80,-64,20,60,-36,-79,-113,-103,-23,-31,-52,68,-112,-7,94,-30,73,-25,42,-111,87,-63,108,-100,55,-94,-13,-1,-29,-59,38,-16,-85,-80,-11,0,47,96,-110,-62,-17,12,-54,-90,116,-12,-6,-128,-31,-3,-102,103,-11,39,-67,-64,-109,0,64,58,-118,-18,93,95,-87,88,-31,102,104,-62,-36,-61,-105,-26,46,-53,93,-24,-10,-54,121,-22,29,117,-70,82,-124,-103,52,-122,84,-76,-64,7,-118,-6,52,-82,73,121,-65,108,64,80,-27,-44,81,-107,-88,-39,-68,-59,9,65,-73,84,-100,-82,26,-56,35,-66,-15,75,-44,51,-51,-65,-62,-84,-19,-31,51,78,-112,-73,100,82,93,-92,53,61,43,-66,5,-63,31,-69,-38,26,48,127,-30,24,-71,-67,-60,-49,-101,-26,-43,105,10,-127,-55,-37,116,38,-63,-109,3,-67,-42,78,-59,110,-103,-17,10,17,-89,-47,-47,62,-41,-51,-16,-31,-41,77,-122,15,94,-96,-8,68,37,116,61,-123,101,-122,-11,105,109,45,-94,-111,44,-52,-113,-74,-97,42,-99,114,105,122,87,-59,85,-89,11,120,21,-51,30,-109,-128,-10,120,-49,-75,-19,-79,-26,-32,-28,59,28,-44,-22,-113,64,-71,109,-84,-11,55,-55,-105,114,50,-71,-111,77,36,99,-100,80,-26,-64,118,54,42,-121,-128,56,-10,16,-105,30,93,19,-99,-75,-74,-50,85,36,-122,-84,-72,-20,-63,-23,-73,-53,-86,-118,-9,96,75,-39,96,59,90,-127,-106,42,-122,46,12,-18,29,-94,33,-84,108,94,-2,81,-58,-75,85,61,122,-43,22,101,45,94,-115,-100,2,-63,-128,106,-49,5,38,35,-8,110,-50,35,-114,-114,115,54,15,37,20,87,-76,84,-13,48,14,9,-99,-93,43,-55,-82,54,-58,32,-91,112,77,34,23,-40,62,-100,32,84,-3,-100,93,17,66,33,19,82,117,102,101,-33,112,-90,-9,114,-1,-66,-71,-103,-38,-86,-101,38,-89,41,-113,5,-40,45,68,89,123,-107,3,21,50,-75,58,-73,5,-67,-64,89,-117,-78,94,16,36,61,-124,45,51,-18,-18,-119,69,22,97,-55,112,23,88,119,65,-103,-62,-97,19,-15,-47,7,-109,-84,106,-5,73,-41,81,34,33,20,-46,-108,-109,-102,67,-116,81,67,-40,-9,-49,42,-67,-57,-33,-38,-89,10,121,-36,-113,61,28,-94,-67,-28,52,-84,-38,-96,117,-44,-110,-17,-116,-53,-53,-51,29,54,98,-76,18,104,124,10,-36,15,47,117,83,80,34,-62,102,108,91,-112,-116,87,74,-68,55,25,-34,-10,66,51,-47,-123,-67,-122,57,32,-96,-87,76,67,31,1,13,96,-64,-15,-125,-41,-124,-77,99,47,74,-16,36,67,108,3,105,-44,97,44,-53,-4,-9,-120,99,-55,-30,-122,14,8,40,86,-64,-34,118,-65,-23,106,-95,-26,114,89,97,71,-108,-59,-10,10,-60,61,-87,-19,-4,-28,-32,-126,-124,-123,109,120,-107,-1,35,-1,-36,55,-47,3,-17,121,31,103,118,79,127,-55,125,-80,25,-4,21,-32,-19,70,-95,-104,-2,-92,126,90,97,60,41,-78,-24,20,49,-33,-79,121,56,120,-102,-19,100,1,44,77,-8,113,74,-46,-127,-28,46,-64,-12,-13,-15,-105,84,22,86,37,-56,11,89,110,-83,-95,36,-40,-92,19,-17,76,-54,83,4,-107,127,-82,-25,-85,35,33,-111,-72,76,89,-123,107,-98,-96,95,59,75,-103,28,-35,52,-47,77,-76,87,-14,-27,-92,-45,117,67,-13,5,-56,75,-95,-116,-34,91,-81,-35,83,85,123,-43,-38,89,36,-80,10,-112,-73,104,117,43,-106,47,113,51,-53,-84,93,-84,-86,0,-82,36,-128,82,33,11,-118,-33,-6,-122,-64,98,81,-44,-49,-104,44,35,126,-20,-71,-73,-126,46,44,-17,67,-99,-74,-48,66,-38,-63,-62,-25,92,-61,-28,73,49,45,92,48,85,-91,105,-98,-95,-69,-26,-76,108,80,-30,-56,102,47,-70,89,-78,-31,-112,4,-1,6,-118,115,-85,60,-62,36,72,-17,-56,-92,-60,-104,-54,-53,49,-100,-2,-106,-115,24,-56,-106,85,33,54,-60,-8,44,47,5,114,-79,-77,44,-28,-120,41,90,42,74,-57,-90,-16,79,-67,-88,9,106,-81,-120,-57,83,-97,34,7,-107,-92,89,89,71,113,-78,-22,-59,40,33,-58,-32,-85,-50,58,96,-19,70,-31,-39,90,-21,118,66,-125,-104,-90,-42,25,98,-111,102,44,-4,-88,60,-62,79,-81,-35,-117,14,46,86,-47,6,-5,101,-12,-3,-93,43,42,32,-111,99,96,-120,112,-27,65,-6,89,105,-67,35,-41,57,-126,-98,-22,122,50,48,0,-54,-46,71,45,-125,81,101,-128,23,118,22,-29,7,-26,-95,117,-60,25,-126,74,86,-53,-8,-85,-86,-62,-28,124,-39,65,90,54,64,-77,-128,-1,-112,105,-77,-84,-40,123,53,-46,127,-124,13,-5,63,123,-31,-74,-36,-16,-83,101,-124,-24,13,-5,27,13,48,92,-98,-115,-98,-111,-10,-51,102,98,-81,-82,107,-1,-40,-115,97,109,-52,24,-46,109,50,40,-111,43,71,-70,-9,-1,-48,-23,110,-41,34,-13,108,37,45,-28,-4,-10,-50,121,16,-119,-72,-45,-86,18,9,-66,64,-36,33,5,126,48,93,19,11,-62,-13,-125,95,-116,-6,-61,125,-6,67,111,-4,19,2,82,18,48,-1,-54,-66,20,45,-103,15,94,-91,33,-15,-24,119,82,116,15,67,30,111,-106,90,80,124,-104,71,66,120,59,13,-20,-94,-124,65,108,-95,-80,16,-101,-38,-24,14,25,-69,108,83,90,98,-17,-96,-64,-89,-29,-30,-11,52,105,13,53,2,75,-101,99,105,88,-56,72,26,23,-13,122,-98,67,71,-29,87,7,3,-114,58,-122,-70,-9,126,-30,111,69,-16,56,11,103,94,29,-61,7,-32,23,-6,-6,-31,-63,-47,67,41,74,110,57,97,74,5,61,28,-65,43,54,-22,-115,-126,0,5,-29,-83,-3,-79,-54,86,-50,22,21,-93,116,34,68,77,-76,-55,85,-116,-31,44,-115,-34,84,64,-42,-102,-13,43,85,100,-60,44,-102,-54,120,81,-79,-104,103,59,107,-65,-69,89,-44,121,-24,-7,61,51,75,42,-28,70,-110,110,-102,76,117,-28,-67,-12,102,68,-81,18,121,-33,56,-19,-27,-124,-110,115,-46,108,-83,30,4,105,-9,-17,114,61,11,-97,-79,17,0,88,-86,101,7,14,58,-48,62,-42,121,39,-49,-100,-38,56,94,27,119,-20,7,26,-99,-78,64,120,87,-83,-105,108,-44,-56,76,-2,-117,26,21,-3,8,58,-118,-100,50,-13,65,81,-74,-14,-96,67,9,27,-122,-73,102,51,112,-60,-13,-15,127,-83,-40,-51,-81,-120,16,-7,100,-116,83,114,97,59,121,-53,56,-20,-72,55,-9,-39,-43,107,45,49,-102,-64,101,-54,59,-123,-70,106,-126,-75,62,-44,18,-110,-17,24,-44,18,-107,104,43,122,-19,57,-122,-113,25,-119,-40,-90,123,74,-35,-14,-100,102,-22,1,35,-86,107,109,-124,-51,56,-85,-16,-124,-65,-121,109,30,55,82,-23,-21,1,-78,-102,-75,67,-94,-60,46,0,62,37,6,12,-92,48,-104,-96,-39,-84,39,101,3,68,34,26,-110,91,60,25,2,103,-47,-67,77,46,-2,118,43,-85,-107,83,43,16,-71,-7,-55,-52,-23,-23,-82,57,-110,42,-102,-32,32,-70,-75,-14,116,-11,-128,31,-111,75,1,-123,116,-44,-85,71,33,-72,60,38,70,-72,93,114,78,-102,56,79,48,-15,-83,75,-6,-78,-90,-121,-127,112,-35,8,120,25,-92,-112,82,-37,119,-32,-35,58,11,-128,109,69,48,-30,77,-9,-42,-70,-107,-21,-23,-78,-81,30,64,-51,-8,106,95,-109,-123,-40,-78,122,-127,9,81,-15,-43,27,52,-8,88,37,-45,65,118,-92,-62,119,-109,-106,73,127,-96,-115,8,71,46,47,-107,24,53,-125,70,-40,89,115,15,-119,-64,115,-11,-103,41,54,-108,-20,6,104,-67,-8,95,102,-7,55,15,73,-123,-110,90,19,113,-53,-22,13,51,40,37,-83,-113,-103,34,59,-10,-121,-103,-61,87,-26,114,-25,88,-65,-79,-63,-11,113,-62,31,88,25,92,123,31,14,59,-87,23,35,-49,-83,-64,59,53,-72,-42,52,-21,-59,89,-104,109,-22,24,-60,62,3,-109,-1,-21,15,25,-37,91,7,65,-39,61,-117,-34,26,-2,-51,-48,25,24,-15,24,99,62,61,-55,36,50,-32,6,94,-25,-84,29,65,-95,-94,-85,117,86,-30,-81,69,-102,-53,65,-7,0,-66,-5,66,127,-108,-59,-82,-23,-75,-4,29,62,10,41,-55,58,9,123,99,55,-58,-99,-6,65,-128,-121,-70,-67,-28,11,122,-108,-18,-104,-68,78,103,-108,31,119,1,117,-22,61,121,64,-68,-68,-96,118,14,58,11,21,60,52,41,75,-54,-54,-26,-119,-66,-19,11,-126,62,76,-97,64,117,-64,-5,72,-115,-9,81,23,65,73,-87,-91,57,-48,90,54,-11,-121,-40,42,-53,-82,73,6,102,-104,-117,-1,-12,52,-56,59,12,0,70,-103,32,103,104,123,-75,-104,-123,-109,-44,-35,20,24,76,16,31,-50,-63,55,-116,35,-116,-29,16,109,-34,-68,-115,-39,74,-32,-43,-9,126,-56,32,-74,-46,-19,-82,-103,68,32,94,-29,53,-105,-115,-50,-121,17,105,-7,74,77,98,-23,4,37,-8,-103,45,-123,-68,-99,-80,62,-21,-58,-2,-95,5,-14,35,19,-65,-123,-5,58,35,-90,-53,-37,108,28,39,-21,17,24,34,-53,94,101,20,-38,70,-74,14,30,62,46,-61,94,125,-98,80,88,36,14,10,-121,-122,110,80,-127,-97,72,8,95,50,-48,-39,27,54,8,61,4,113,122,52,-124,-117,94,40,-69,-34,23,89,-56,-123,-97,-16,21,7,57,-87,-90,24,-80,63,-50,-118,-112,-94,-17,24,-32,11,76,-25,32,58,90,-4,-12,28,48,118,116,-112,107,61,-110,127,-38,-69,-62,55,92,-104,0,-46,-54,17,-39,53,54,-90,-69,72,-57,116,-32,33,-36,114,37,-70,121,-84,-67,-49,-95,-105,98,60,60,22,-41,55,-74,-7,-57,-51,-107,48,29,-102,-72,-35,79,71,31,48,65,78,-38,-5,-8,-113,122,76,107,112,-31,102,122,-83,90,-55,-128,101,77,-66,-62,111,126,-75,115,63,-118,52,-6,6,101,-55,76,32,68,-128,90,100,-109,98,-58,79,109,114,121,-77,-59,19,-52,95,-1,84,114,-52,56,-13,91,50,-114,67,-51,-94,-115,113,-58,-33,56,-92,-114,-126,80,-125,-29,-82,55,-120,44,22,-85,126,113,-92,91,-39,113,-81,-90,43,69,-59,63,-34,-5,-91,-21,-3,120,-126,127,43,-73,-13,-111,-99,73,37,66,113,55,-7,47,-46,110,-76,68,105,-76,126,-36,10,21,-80,13,94,10,100,108,-127,-117,21,-95,-79,93,7,-72,98,-15,-62,94,77,-124,25,-63,24,84,-99,28,-99,-117,115,-65,62,-40,85,-82,113,37,-125,13,-51,-96,70,31,26,-36,-5,57,43,44,-97,-27,2,-72,106,-15,-112,126,111,-31,-89,69,-106,-114,-111,1,-54,-66,76,56,-70,51,120,105,-56,-8,-92,-102,-104,40,-52,77,-30,-123,-71,76,48,-20,-93,76,53,-113,-16,18,-21,44,-107,-115,53,40,88,95,123,34,53,-28,21,47,82,-90,109,-114,-104,-108,-30,76,-58,73,7,22,-97,-96,89,-84,-47,-75,-62,110,25,42,-62,-46,-62,55,121,-128,-54,69,54,25,-75,-95,-100,87,88,-96,74,7,122,38,-103,-68,-83,-57,109,-34,51,18,95,89,120,-86,15,72,86,-84,101,66,85,-32,48,-104,-99,-92,27,43,76,41,-74,62,115,-5,-8,-14,76,-114,50,-77,-97,85,50,16,-36,-27,-99,-67,-109,16,-68,106,-52,-22,-112,122,-15,-31,126,23,121,16,18,63,64,64,76,23,54,-57,-75,97,-94,-55,87,72,-40,116,-64,-23,-94,-63,-13,-53,30,9,-72,11,-45,-105,62,59,110,20,-7,-90,11,-80,-27,44,28,46,45,57,35,-60,-56,29,-91,-42,115,5,126,10,-115,77,-65,-17,-67,34,12,-39,54,-119,-20,1,107,56,39,-102,108,-66,22,-75,14,-104,-127,-85,-76,-88,103,-94,-102,-87,-17,23,-95,33,-71,107,92,-96,61,75,-10,78,-33,-125,-72,121,-98,32,-14,-28,33,-96,-4,10,-65,61,87,-27,92,-43,110,7,-52,45,9,-71,100,-52,-70,19,45,106,-110,-74,91,-86,-52,-110,-66,58,114,-126,-27,-77,-63,-50,-65,49,-7,33,116,22,-124,67,-54,76,-115,37,64,-105,50,19,-126,19,32,124,-37,80,-93,81,86,-65,-21,-5,-48,-124,-23,-25,24,-79,-117,65,51,14,-77,16,97,80,-50,29,56,-23,87,96,-52,107,-106,2,55,102,-37,125,49,93,-116,13,61,-11,-23,-119,53,13,15,-86,-96,24,-73,-43,-39,15,112,0,19,76,79,-76,99,-29,111,-18,119,-66,-34,-127,90,38,34,63,3,111,31,-29,24,5,65,-95,-70,-15,86,-43,16,76,-127,-120,6,-39,83,97,-31,-99,126,21,-29,-117,-48,53,-57,38,56,-78,67,109,-92,72,-96,-88,36,-18,43,89,94,100,-37,121,112,-33,-69,49,20,112,-80,26,26,-42,-99,5,124,116,-42,-32,-118,-28,22,40,-76,-105,81,97,59,65,13,52,-104,-98,124,82,96,-99,-46,114,-83,-125,-36,81,8,-27,-74,-28,-61,64,-31,-81,-49,42,48,38,-115,12,-80,-86,62,36,-81,-46,93,68,83,-56,-52,-36,7,-8,-125,-80,38,123,122,-88,-85,-94,-81,5,-106,21,-112,45,-37,-120,-28,48,93,-99,-47,116,81,48,-85,-122,32,50,-67,-109,-14,-22,10,10,56,94,-120,78,-79,-20,74,-98,41,-30,110,50,86,11,65,51,43,-97,-31,74,91,-11,127,-86,-44,-24,119,-16,-66,-127,-30,-95,-64,-11,54,-73,87,45,24,109,98,61,76,109,126,28,114,-1,64,-103,122,24,45,-113,-32,-24,-28,-125,95,102,-7,109,-9,-28,-7,73,-41,-33,-25,111,-45,-101,63,-111,-48,-70,-113,33,-53,-32,-95,75,71,-40,28,-112,-106,-41,76,117,-94,81,19,40,85,96,125,36,-91,19,53,6,65,-9,-82,68,59,9,91,-25,-107,-34,65,-122,20,65,-67,-38,-106,121,125,-83,109,45,-103,-57,49,-42,-42,41,78,122,-31,-69,27,84,23,-116,3,-65,59,37,113,-101,-91,-51,-19,-28,-52,86,119,-29,-29,-104,-84,42,90,119,126,-32,37,-37,59,-113,125,11,-13,65,-21,-49,-80,60,90,4,58,-117,-84,106,-77,-114,7,69,-93,-22,-50,110,-46,125,78,-60,-59,-20,-42,-5,6,93,-124,-52,80,73,75,-105,-14,-58,-59,76,105,59,-46,-79,-81,-72,34,-8,-49,-96,-102,-47,-94,93,-100,69,-126,-115,-102,-103,91,77,-119,107,-86,-115,-68,83,-26,-42,73,-28,22,5,-85,-126,-43,-84,-54,100,-71,-104,-61,97,-128,38,88,-119,36,94,-84,107,87,41,112,-115,60,39,-55,1,-45,-114,-9,-111,-96,-105,-67,-103,-24,-80,88,95,-113,-91,90,-70,91,-113,-70,37,-105,-92,-20,82,81,-122,-83,-10,126,121,117,89,-2,-118,36,-6,118,-85,124,-5,-113,-21,-9,-45,-33,-103,65,122,124,87,58,88,-17,-43,54,94,-106,-30,-47,44,29,-10,-116,-59,41,54,-86,95,13,-116,106,72,55,101,98,-29,-103,-12,-12,-73,6,122,-106,-101,69,54,-93,-43,31,124,79,-72,-102,17,7,71,-44,92,37,127,54,28,-104,-7,-50,-74,-35,-125,-16,-119,28,-23,82,122,63,122,-38,-17,-44,14,-28,117,92,-90,26,88,-74,-41,-104,115,111,112,37,22,127,-9,31,-128,61,29,53,-3,58,78,92,66,-76,39,110,52,-27,-33,-125,-73,27,95,-96,-61,-125,114,47,-107,101,124,21,-16,80,-101,-47,44,63,-31,-99,-57,24,-113,37,18,121,102,-10,46,-24,-76,-71,-104,68,59,-124,112,123,-82,49,78,-17,-47,-83,121,91,2,102,-14,32,-30,-19,-3,67,117,-111,41,-92,26,-26,-50,-42,-74,97,-21,-72,18,-78,104,41,64,-111,122,108,43,-80,67,48,-45,-45,-19,105,-66,115,84,81,125,72,59,60,105,52,-36,-31,30,-64,28,-10,45,-74,11,38,40,70,-3,-46,-77,-70,-16,-118,-69,-114,98,-77,60,123,83,-102,115,7,100,109,-22,-48,-80,42,-127,-87,81,-77,8,57,-72,-41,103,-54,3,-54,105,-37,-41,-9,-16,118,80,-30,-87,22,71,-48,-38,-105,62,-90,-21,-41,-33,121,22,19,116,66,83,112,-39,-28,54,-84,31,-125,112,89,-81,-109,72,-108,-95,-1,-114,120,-73,110,-105,-107,-126,-93,8,-103,20,-55,65,122,-58,68,121,-97,61,-74,57,69,-65,1,-112,94,97,99,-122,100,46,7,-94,116,23,85,-111,83,79,-108,112,-102,106,-105,-87,-66,-128,39,24,-7,-72,-78,115,-51,99,-113,83,-90,-97,-8,89,-88,-114,79,28,56,113,-102,38,-5,-104,-76,-18,38,57,40,-67,-9,89,-8,-121,27,-25,-110,-93,-36,-10,123,-73,-111,-29,3,116,-20,16,-40,-18,87,-123,120,-68,-97,-97,-47,-94,114,113,-121,-111,-53,69,105,-81,77,92,-37,-25,-46,-18,-9,-86,54,46,-80,27,-101,108,-69,53,-109,-44,85,79,-46,-87,34,-30,85,-11,-61,101,-22,-17,-25,99,-65,-30,117,-89,-120,-23,-16,1,-94,12,-80,-29,64,54,106,-111,-75,82,-3,22,-46,11,-103,-63,12,68,120,-17,-117,-52,87,112,-123,-52,-121,105,-53,-55,101,60,-3,71,-122,52,-9,-125,-41,56,-1,85,15,-72,-29,70,-7,-103,-46,-112,127,34,11,4,48,114,56,-109,-32,86,11,89,-1,-80,-18,17,9,-55,-87,114,92,53,-4,42,86,22,57,-50,120,90,110,-90,15,67,-59,49,-46,-97,96,119,100,-80,64,-54,81,126,92,43,-90,-14,-47,-89,21,-17,-37,51,121,-73,-43,110,-54,-30,121,40,-34,85,52,-99,36,-9,-18,-51,91,-71,86,102,-116,95,-55,95,-35,74,118,101,-114,55,-108,-48,-60,-22,20,87,20,49,74,117,-76,-43,41,79,114,-28,83,-68,43,-128,-19,-96,-12,19,111,-44,126,102,-110,56,-77,-27,-14,17,-26,62,-107,71,89,-127,-37,-16,32,-34,126,110,74,107,126,85,8,80,29,104,6,30,-52,79,-74,-11,108,65,29,-107,62,-2,59,-123,71,-128,109,110,110,123,28,-68,-39,-20,-108,112,-32,-36,-12,98,-82,-57,38,-103,55,126,100,-5,89,-41,36,12,-16,99,118,71,-96,88,-92,113,88,-56,97,76,-77,117,60,46,0,23,-41,69,4,-5,-84,33,-3,45,31,38,-119,-20,96,-113,36,28,-38,-96,-23,-115,-50,-106,3,-9,85,-80,7,-19,-111,-120,-3,-107,116,-87,-115,101,92,5,-13,-9,53,1,-35,-125,-23,-107,-122,53,117,-10,-122,-89,19,-33,-32,69,-67,-69,75,-116,-35,107,-48,-74,109,-38,50,-69,43,-85,52,-107,18,83,115,-101,5,44,78,-7,99,105,-72,-39,62,31,27,-46,97,-117,-94,-69,-86,-124,-114,-30,-48,-126,-122,108,-59,-2,-19,49,-22,-29,-21,67,60,37,-75,-55,-22,56,47,15,-111,32,0,35,81,-18,108,41,-120,-20,125,-4,51,119,-115,0,122,78,77,95,-68,-9,109,59,-128,-8,11,-114,7,29,-56,79,-124,-80,-112,9,91,-32,11,-50,29,-115,18,-19,-6,-123,-15,-82,74,-6,15,-55,12,72,-62,12,43,-30,58,-30,2,-56,-100,1,82,-85,63,-17,26,-117,52,-90,-69,-61,-90,121,111,-18,60,7,-26,96,63,-92,5,-11,-52,-81,125,97,122,67,82,33,93,99,25,51,39,-71,110,28,-116,123,48,-68,-103,-9,-31,48,-2,-107,-64,-102,-107,92,-62,-100,83,127,41,58,-122,-7,113,-18,20,-82,-105,23,84,-120,10,-37,-82,11,46,62,-57,16,-58,-18,0,42,-95,-82,39,-105,-78,106,52,-51,36,-40,-3,98,-108,45,121,-59,76,73,19,124,-67,-45,20,76,-21,66,-56,46,-18,-39,90,0,-57,-42,-47,90,79,-120,79,103,34,59,-41,-67,94,125,88,-104,-30,25,-128,120,35,88,68,-48,-47,-99,66,-12,92,-42,46,-25,-10,55,118,125,20,114,67,-9,37,123,48,-84,79,-63,-23,43,119,82,76,-8,-21,-17,27,-108,97,-32,-119,-109,68,80,-9,53,95,-20,-71,41,-50,-57,-16,-4,17,39,-128,19,-113,9,30,-36,66,23,47,82,-76,-87,-35,-48,96,-4,-86,100,15,-58,-10,-1,83,-52,17,-102,37,-89,-33,-2,-23,60,122,-88,-13,-112,-47,-92,-52,28,-101,-99,92,-123,-108,77,101,102,44,-67,-88,-108,-43,118,-96,45,-48,84,-25,-9,59,86,-7,79,23,110,-74,-92,-67,50,-109,29,53,-57,-89,31,8,1,65,126,-119,73,9,-107,92,81,17,53,52,98,-126,111,22,15,-15,-110,-49,60,-82,-82,88,79,110,-113,-124,-127,-51,45,41,-87,-17,-95,-122,88,-48,64,-111,-55,62,-46,-91,116,-55,29,-36,75,95,-56,-100,-125,103,-115,-41,-29,-56,88,-81,-33,29,-127,-6,-90,77,-4,30,-81,-11,-121,30,-17,-10,-24,-124,109,67,126,-109,-57,34,-101,-9,112,25,126,-47,4,79,-38,117,-76,-43,56,-15,-86,85,-80,3,37,-120,39,-40,54,-70,26,-64,-45,-69,-53,19,70,24,-112,-78,-35,-120,69,-113,-97,-29,-53,-106,-74,-61,58,-21,-57,97,-97,-16,94,78,62,-121,-58,46,-38,35,35,-127,-17,30,2,54,30,117,-120,125,9,-20,-30,-44,-53,52,29,95,-66,122,60,-29,-113,68,-92,16,-110,10,102,54,-78,-120,-71,111,-52,107,9,-11,-9,81,-96,-37,-25,-77,39,111,28,0,-55,43,23,-98,-37,-123,-11,-42,-98,-97,102,106,69,-4,98,5,115,-121,-115,-94,-78,-69,-9,51,-84,-86,3,-104,11,34,-38,-113,29,-39,61,10,54,-116,65,-91,83,86,27,-44,-27,-108,-86,34,-40,99,-8,37,101,126,102,126,38,-14,-102,-52,-82,-56,-36,74,95,113,-115,-49,-66,-20,-123,20,-83,-37,96,-44,-55,-98,-1,75,-2,10,74,-55,107,87,41,-123,-90,-61,0,2,94,-63,-103,-85,-13,-107,98,78,-47,6,26,8,-39,36,-119,52,-21,-70,-40,72,117,115,-87,83,-57,-60,127,-78,-78,76,36,54,43,-25,127,19,98,125,-96,20,121,62,-126,13,-30,86,-110,97,124,-32,-104,6,-122,36,0,18,105,-48,-39,20,-105,55,-113,-114,-121,-83,9,-20,-23,-49,86,-48,-107,70,125,-114,-115,83,31,-23,121,-30,-67,48,-86,-90,-91,69,-79,-107,-77,99,21,83,54,-73,64,-60,88,-10,15,57,112,-85,-47,101,-78,7,-29,-128,120,-16,-96,-50,27,116,-128,-11,-35,84,-19,-33,-57,-73,18,49,-67,-15,41,15,36,41,15,9,33,4,39,27,101,-117,77,83,115,-60,-54,-82,46,-56,-18,100,-51,-41,-27,-25,-95,9,74,126,126,-81,-48,10,-60,85,99,80,27,108,-6,-16,77,44,46,114,-26,20,-69,15,28,-121,107,-59,125,-125,92,98,-61,84,-114,-87,-44,-13,116,-120,1,121,-84,-86,26,43,-55,94,-25,-80,-75,34,-97,-12,31,-58,-68,110,2,-109,-27,13,75,84,-21,92,12,-61,-117,36,21,107,22,-61,80,87,-115,29,-3,-125,41,75,45,-108,-29,33,-111,-4,25,-52,8,24,-74,-36,-22,-94,25,-7,97,-124,108,-114,12,3,-10,96,75,34,17,114,-32,84,84,12,-60,-88,-119,-41,41,-48,-11,-25,1,21,10,-71,-3,-16,96,-36,-14,-115,-14,-3,-83,6,-33,70,-18,-108,-81,-31,85,-91,-59,-80,81,36,11,19,74,-22,-80,61,8,57,-110,97,107,91,-40,-82,29,-95,122,-114,-102,-77,-28,111,122,46,-35,-102,123,83,18,-47,-24,-121,-120,114,-93,22,-66,65,113,77,86,82,115,-82,117,28,-78,76,27,79,-128,119,-10,-71,-31,11,-89,-82,-88,63,-99,94,87,124,76,-124,101,-53,-3,-119,9,-50,-29,92,58,-74,-51,57,-114,31,-75,113,-47,-103,4,12,-43,-100,-70,27,40,-81,-36,-26,-12,-102,-118,-88,50,-73,-57,124,-94,122,70,-87,28,-113,-126,100,-1,4,62,7,-91,-91,44,-90,-56,102,-32,30,100,-102,-47,24,34,118,-99,-98,36,113,117,3,-126,-84,97,-73,-124,11,-46,-18,-15,72,-38,24,-47,-4,-65,-73,-86,-112,-37,-125,109,-50,112,72,88,-97,20,-29,-43,-2,-48,121,94,58,103,52,51,-16,-116,94,119,-101,64,48,51,-70,-106,-62,41,82,-66,78,-113,106,71,-105,-44,111,-78,71,115,-50,-111,-46,33,88,-67,-58,-123,4,-82,-34,22,-40,120,-28,-18,-52,10,-15,-109,11,-106,125,-126,-31,94,-89,84,-94,-62,-6,98,62,-50,-78,-34,12,104,50,-39,-11,-60,43,12,-18,36,-62,-58,-36,43,-118,-88,78,-35,-62,-14,-104,-124,-68,21,-18,52,102,18,87,98,-2,-78,29,37,80,25,-106,-99,-86,74,127,6,-31,86,112,35,3,121,-126,-78,114,77,-51,-85,-24,70,7,-109,-25,-58,120,10,-20,26,-100,-18,120,-127,-78,-23,14,8,-116,42,-75,79,44,119,103,102,69,22,26,60,-58,28,-70,-104,25,25,124,3,-15,-44,93,87,-23,-8,-15,-11,10,7,9,120,-68,125,-79,-70,15,115,-75,-90,-5,127,108,108,-66,-122,74,-82,-14,-100,4,58,-106,-96,-65,1,11,102,-41,66,-117,55,-8,6,-69,-72,75,76,16,78,59,-2,-10,-42,-72,-1,-31,-100,113,26,-66,48,-4,103,57,71,-94,-2,14,-28,-36,22,-8,-25,39,-51,25,99,91,70,63,11,-124,69,46,-34,-21,99,-70,-110,-90,32,116,34,-74,82,43,-104,-56,31,-117,-43,67,12,-72,115,-84,-62,-9,21,-30,105,82,94,86,12,40,-47,-39,40,-114,-67,-89,-72,-64,-62,-124,-105,32,95,-124,-41,-14,48,26,8,-116,-57,24,-45,-45,-75,-40,-111,-118,107,116,66,-97,-57,-79,-96,-85,-55,49,-55,-32,-87,-76,-12,42,-85,85,-16,75,-41,-112,49,-29,-28,-124,-10,-60,62,-2,-112,15,-36,-33,81,-95,117,120,51,99,-64,30,11,106,-21,-42,43,-59,51,117,12,45,3,-116,110,88,104,60,67,102,-74,108,80,-58,-108,28,38,-108,16,63,100,-24,-36,-1,70,97,7,32,118,-112,-122,-31,-36,106,10,115,-89,35,58,-15,-5,63,19,-123,-99,-11,-94,108,-18,-13,70,-12,-1,126,-15,-9,-25,113,111,66,-59,81,-88,-114,97,-121,-76,16,8,72,62,3,-107,106,-43,92,-91,63,60,-90,-61,96,-9,93,-24,-17,-22,38,-24,29,-27,-36,-25,117,99,-10,76,66,-77,-71,33,-87,100,48,-13,-122,-49,56,-104,72,72,-84,103,72,115,-10,45,19,-22,52,-97,-77,-107,50,-81,-93,-79,102,-71,46,73,6,-21,-52,5,-96,32,112,15,-44,-4,110,5,-26,-85,89,-87,35,73,-17,59,-95,-5,-123,94,127,-83,9,-122,-64,-58,-72,-111,33,-91,-82,56,63,1,6,-67,-106,-55,26,-12,-105,-32,115,-38,-95,118,117,67,-17,95,99,120,-75,2,28,-113,-105,117,-15,111,22,-46,116,25,-91,40,44,84,37,-4,-66,-125,15,69,-14,49,-12,-11,87,-68,20,91,110,117,125,-65,-34,-36,84,-29,-87,-27,60,-66,-118,-125,49,69,81,54,7,-119,53,-23,-60,-9,22,-116,-125,-58} + +#define IP4_q7_q15_WEIGHT {18,-44,-12,78,104,61,-34,92,-120,40,-75,-19,29,-56,-80,21,60,107,-92,-118,58,94,-104,47,62,11,106,-105,-6,-32,-20,24,43,-116,43,48,53,-50,-86,-38,-108,0,-80,-73,-5,-26,115,111,78,-101,76,-55,94,-61,39,118,94,-20,13,-81,100,-111,70,94,-125,71,63,-121,-70,-14,-69,-74,54,60,-121,107,-121,51,-106,-38,-61,110,26,103,-43,-116,94,111,60,-28,-125,88,83,62,120,-39,-79,-85,112,34,121,-121,-93,97,-45,-90,-97,12,-97,109,90,-45,-59,-105,-100,-21,0,-122,-26,-37,28,-10,35,-115,-87,-62,6,108,-15,118,26,-84,-26,-74,1,73,-41,97,-65,86,94,34,67,59,-99,-67,106,-80,-26,-21,-71,-20,115,-43,109,-107,-21,37,64,-2,-20,115,-75,108,53,-102,35,45,83,-49,-106,-59,-46,121,-102,-41,51,22,-55,19,-58,-116,-103,80,25,122,-126,-76,-7,-2,-34,110,15,82,-46,-16,15,-52,-19,-39,-73,93,62,67,117,62,-27,-12,-89,-100,-15,-57,59,-127,20,52,-37,-41,-79,-43,111,99,-31,13,-12,99,43,-1,-31,124,43,-15,-30,-69,120,-79,-36,-89,-19,89,46,54,116,-46,49,85,94,67,113,24,11,-59,-17,-119,119,110,-57,-1,-81,77,32,-38,118,-13,113,-94,-53,111,110,-14,-19,-53,4,-20,117,-35,121,-97,24,119,18,108,-31,54,30,-121,-74,16,101,3,65,107,-12,14,-38,-53,125,-59,60,17,52,-65,21,-118,76,-112,91,106,-38,26,98,-4,-53,-108,-63,95,-58,19,63,111,-74,37,73,63,-115,-44,-84,22,-47,60,-51,9,29,-57,22,81,-87,-65,-27,-63,-93,110,63,-26,-126,7,-12,-118,-127,-70,-113,45,107,-69,103,-48,56,55,25,-55,79,111,113,120,-2,108,43,-122,-41,40,93,44,88,-78,107,-34,124,63,122,-67,29,24,14,-69,-72,108,67,26,116,90,88,-48,93,-37,-103,127,-24,-76,115,-80,-97,96,-61,-54,-22,-123,-14,-49,62,-1,-17,21,-65,10,116,113,10,88,30,-24,-119,89,-95,58,124,-112,-119,-115,88,119,57,68,-17,-27,31,-9,-64,-26,18,109,-60,59,4,-89,-127,-35,8,-90,88,22,-76,109,-123,88,-51,-90,18,45,25,47,-80,-66,75,-24,-109,-42,-47,68,-8,78,-98,-122,19,-72,33,94,2,-84,-109,82,102,55,71,-121,19,76,76,93,66,-23,-42,-2,40,106,3,123,-111,83,8,105,117,-52,121,2,-4,-18,-4,-19,-125,80,38,83,25,123,-64,47,36,29,105,-71,-72,-41,-127,-82,31,-43,3,9,73,91,124,-3,-99,101,-27,77,-51,60,-96,15,74,35,54,-119,116,-4,53,46,-29,2,8,93,75,38,-18,49,40,-30,30,22,97,-8,97,-35,-111,-62,21,97,-96,82,-12,28,-118,-12,87,29,-16,110,46,8,95,40,58,41,29,-58,105,-108,-29,36,-117,106,-118,-124,11,60,84,-87,-83,21,53,125,-31,-5,114,93,-75,-41,-127,49,-98,31,96,-112,64,60,-126,69,2,-73,94,-100,-23,81,-115,94,-116,-25,-44,91,46,-89,12,75,-47,107,-77,-10,-82,79,-70,75,-106,-1,62,-69,104,-7,-41,53,73,-32,74,-113,26,111,-115,66,-55,20,-91,-47,7,51,-96,121,126,-75,63,-23,81,14,-124,-39,-41,-13,14,16,-27,-56,-48,-84,-43,120,33,98,41,26,-6,15,18,8,31,-50,-9,121,-107,-33,-106,-46,64,127,-19,-104,-59,-30,86,-121,60,39,-79,-38,-5,-119,85,-17,21,44,-120,-22,89,73,-17,-102,49,-73,26,-69,91,-36,-71,103,63,125,-8,61,103,-20,-116,11,105,15,-116,-78,-122,-62,-80,-80,-58,-119,65,-47,99,-111,-26,69,87,-15,-38,-44,-87,-84,-14,-37,-27,-90,109,-72,-4,38,-110,82,-97,29,-50,61,52,-87,-44,8,63,92,83,109,-124,69,-47,-110,-70,-10,111,25,15,80,104,66,32,-16,-70,-49,-52,-41,-16,122,104,-31,22,-109,18,102,62,125,-123,121,74,5,92,-90,-92,72,-61,-2,98,-125,-81,109,101,-120,60,10,58,53,94,-25,38,-56,-13,80,-80,-13,45,-43,-77,-44,-37,46,-62,38,-103,-93,-124,48,76,1,-82,73,74,63,67,-59,-26,116,76,66,70,-30,-113,106,109,75,25,-18,25,85,25,-83,81,-50,78,99,-53,-68,-125,44,-104,-44,96,-126,124,112,33,-75,-29,-60,-9,-126,-84,-61,-119,-127,-6,-26,-46,-57,118,-4,105,21,-120,-121,54,-35,-70,-124,-101,-79,-33,105,-30,57,-108,-111,-48,-65,-108,77,41,112,111,68,118,0,22,44,110,56,-91,-111,-49,62,-54,83,78,66,38,-14,102,41,52,-94,14,106,105,27,24,53,-40,60,-70,-119,56,68,-95,69,59,-124,-101,-25,-119,102,-45,-55,-38,57,61,104,-96,122,88,99,-122,106,77,122,33,-5,126,-74,46,-52,116,-51,-101,74,74,2,-3,-38,-21,68,-30,96,17,71,-124,47,-23,64,-35,107,24,49,41,-50,-23,88,19,-30,55,-91,3,-14,-54,125,10,-96,84,100,100,-116,67,-40,-124,53,2,-62,45,21,72,82,10,-126,-47,54,-84,13,-50,-2,-66,103,-1,96,-17,59,123,-111,-61,-20,-70,-57,54,-110,-94,-125,3,14,-101,-128,-86,-44,80,-94,37,123,113,-104,-9,109,-87,111,120,-7,33,-62,-51,49,-57,-71,3,-49,18,-94,-32,40,-92,-52,3,105,52,108,123,1,40,2,-86,-104,38,52,-93,-73,-44,-62,91,5,-88,-91,-61,-40,-24,-30,-48,114,-115,62,-128,-93,-85,-43,104,102,-20,-103,-52,25,-56,-103,49,10,-25,84,-52,-94,51,-110,26,1,-108,30,32,126,-23,-112,-82,-102,86,-17,-108,78,-32,32,80,-112,-125,91,8,24,-69,-95,-86,-115,-73,14,9,-121,-2,101,-109,1,-72,54,84,25,-36,95,-49,-110,108,4,24,66,126,-63,56,99,-8,-10,-80,5,-73,72,-103,-35,-10,78,3,-61,42,-83,-115,84,-99,78,20,-66,30,-88,97,-66,-120,120,-46,-57,-29,118,15,-110,-94,-29,25,113,89,-110,-52,-92,90,105,-30,92,48,-44,-1,-96,-39,118,115,-3,37,15,-1,64,-2,81,57,24,-47,-14,89,48,-103,-127,-95,-114,-100,14,-69,-32,-82,-9,-77,33,-38,-76,-63,51,-32,69,-8,-75,26,80,59,-31,101,40,-37,76,-23,-110,-23,-84,-83,111,-31,122,124,-56,-67,4,-112,-123,65,101,67,12,-23,-43,-12,54,-87,66,35,-89,-47,55,-105,100,19,21,-80,-76,-85,-61,-117,19,107,42,-71,86,-9,33,-80,-65,120,-49,106,77,-34,-50,-38,-27,21,65,-28,97,108,42,-77,120,69,127,24,-20,89,-66,112,-126,-110,43,103,0,-63,-17,28,36,-43,-117,-68,115,-69,107,70,2,94,9,95,-83,-99,53,47,80,-105,-27,28,119,59,95,82,-94,-16,15,-49,-122,16,17,-89,64,-6,4,88,21,47,50,-78,-25,121,-47,-36,72,-21,29,-101,9,-83,-113,28,-68,23,-67,115,-101,-101,-98,102,-124,-98,-24,-89,82,-28,-89,40,125,23,97,83,-53,-7,-90,-108,-83,-113,-58,-26,-119,28,35,97,-74,6,-40,-15,-10,11,79,-98,101,101,8,-72,-99,117,-65,80,127,95,60,15,-29,2,60,-92,-118,-116,79,46,-79,-62,104,-43,73,107,-43,117,-127,-67,44,113,-41,67,-73,-98,26,74,-111,59,79,45,-60,21,-26,18,54,-72,-70,-30,114,10,-82,-124,-52,-126,-97,108,-19,120,-111,-52,10,102,18,99,49,-128,-17,91,83,-46,-76,-3,45,-41,47,-72,-19,3,112,-104,14,122,-77,-35,121,-23,41,-123,-60,-2,50,44,-45,84,69,-58,43,-69,-98,-11,112,-17,-95,-36,67,-69,-52,-11,98,-45,-126,-33,51,81,101,-38,68,67,-37,-78,107,12,105,75,-109,-100,-55,0,45,11,-24,3,-70,54,77,-63,52,125,93,-16,-97,-22,35,97,46,58,-61,66,-61,-98,12,-43,-45,-63,-36,-79,-58,41,54,-49,-63,48,-33,-110,-36,-49,93,73,-33,-78,50,-76,-48,-6,4,-87,-81,-88,-30,-33,10,-109,104,-94,38,94,-124,30,102,6,37,97,73,56,-106,-18,70,84,4,-31,-90,-27,54,63,10,50,-18,-113,-116,125,-86,-119,33,64,26,-128,-77,-25,76,-127,0,-79,60,-65,-63,5,-5,101,69,-91,-49,67,121,71,-22,59,26,-87,66,-26,-79,7,-73,-51,-114,0,-22,40,-87,-115,29,-18,-72,-23,-96,-55,69,-119,68,-102,124,-99,16,74,5,-34,87,120,-6,-28,-92,-111,-85,-42,-36,123,-52,-86,83,-77,43,-15,124,59,103,-81,96,-80,0,41,-62,-22,77,-13,-99,71,104,-121,72,43,4,107,80,-62,-98,54,-63,-13,10,-92,-119,-95,-90,-76,76,78,-108,95,-117,122,88,-115,52,-10,122,26,39,101,12,-80,107,-108,-13,36,-72,36,63,82,119,-57,-7,-44,77,-55,-54,-25,102,-118,-91,-93,58,11,-30,11,80,-62,111,-77,3,105,-63,39,-50,-33,29,-6,52,-98,51,-80,-5,-50,93,-122,116,-77,79,-45,110,-103,-123,-20,-16,-58,-101,93,-11,57,44,24,-60,-118,32,64,80,3,107,-25,60,126,-90,124,-22,-95,-57,-91,83,-46,-28,1,78,-47,15,74,42,26,42,113,-76,14,33,20,-93,37,89,107,-22,16,-16,23,60,108,74,-117,111,52,-97,78,53,-127,9,123,-78,-15,86,-17,5,-17,28,-120,-76,69,-76,13,120,-64,-17,-35,20,-98,-42,126,-88,-99,-113,10,44,84,-35,115,18,81,99,2,-82,74,12,-125,110,55,31,-110,-94,23,-4,62,-62,-122,40,-120,42,110,84,34,2,-3,-75,-24,-10,124,-46,-38,-14,-11,57,109,27,111,-99,6,27,126,41,72,-29,106,96,-24,96,60,42,-18,-104,82,-69,53,15,92,127,-79,-70,-102,102,-53,79,32,-119,84,115,-36,-84,7,-24,2,-77,103,54,60,-7,1,-64,-7,114,-22,-5,19,-49,80,107,-7,89,-2,-63,-26,-51,-111,17,-108,9,-40,-51,58,108,-55,-68,-117,-51,99,-117,-17,-33,46,69,13,4,-23,-71,-110,-95,4,119,103,31,-30,23,76,-36,39,6,-117,6,76,80,106,-124,18,-3,78,3,112,40,23,-100,-55,75,-118,-52,-16,18,69,-91,-77,126,-87,103,41,-127,7,106,105,77,-23,50,72,75,-16,126,-19,112,67,-102,-4,-56,53,-72,38,-60,-69,0,30,47,-95,53,100,-127,-16,-16,-18,29,46,90,73,-112,-97,-15,-111,-38,23,45,44,115,-93,-32,-68,-10,86,69,19,32,-104,97,-112,60,64,61,87,69,55,-4,-92,-77,-28,-82,76,56,123,-105,52,-38,-1,80,81,-40,-14,115,-78,32,-59,-115,-123,50,3,-14,69,5,-39,-124,70,34,61,-57,-35,34,127,-13,-120,109,-108,-22,68,-125,81,35,89,-21,88,107,87,-32,110,-19,-27,-82,-114,99,-81,115,-54,90,-92,65,-126,64,26,-114,36,-93,70,10,-94,-90,-111,118,-45,-121,-3,106,80,-101,10,-25,-12,39,-72,114,47,125,43,33,88,-81,-109,10,98,-98,28,105,96,-43,123,-58,-115,-88,-122,85,-80,91,26,-26,103,-121,-88,-66,101,-88,87,125,20,-62,-58,-46,-113,-36,-100,93,79,-108,33,49,-45,-19,0,70,103,-19,-48,-15,29,40,122,121,118,86,102,-83,111,-26,-86,-124,6,49,86,50,-67,-28,-104,-28,35,42,52,-25,-87,-70,-6,18,126,-128,123,-3,-109,-94,-49,-120,-62,-89,62,-107,94,109,110,10,-37,99,-126,-116,-85,100,113,-19,-52,-101,65,-45,93,96,-49,-78,84,-44,28,5,-110,-26,-48,62,127,-53,49,57,67,127,-85,60,120,-96,-67,107,34,91,-60,-6,-80,-77,-8,-119,50,-52,89,-64,96,127,-60,-76,-34,-52,-1,34,-25,99,100,-94,-46,-47,12,47,-47,45,-14,59,3,-85,-74,-49,103,-6,-79,-1,-25,-2,0,-44,-29,6,-11,108,-23,91,-48,56,75,-71,-77,-46,-100,-100,-98,90,-29,-35,-56,-3,54,-62,-126,124,1,-26,-88,4,101,-113,95,-67,75,104,39,-106,68,-127,127,-15,-36,23,-12,-51,-118,-67,-22,-39,-71,52,-77,104,9,10,-106,53,34,-67,-98,-74,84,87,95,38,-35,-38,-103,-125,-124,41,-31,3,-89,-107,-41,-9,-90,-58,-39,83,-106,-24,-86,-93,18,14,23,36,-56,75,-36,-123,10,109,7,13,-119,80,113,-68,45,57,35,32,-17,28,-1,-98,52,-37,6,-97,118,-119,48,-69,-102,-18,37,-4,-59,15,101,91,40,3,-31,5,-9,105,-9,-33,-31,-71,-7,-112,-71,70,-2,98,46,-99,73,42,-77,-38,53,48,-1,76,-120,-33,-62,117,-35,67,-117,58,33,2,-127,-66,-100,-117,-82,115,91,-111,33,-125,24,-89,76,15,84,27,-5,49,-87,-72,-35,-49,-128,114,65,-71,82,127,100,74,41,-63,52,-67,0,8,117,5,-102,123,87,8,-37,36,126,-108,71,-73,20,-76,104,-71,-50,-56,18,8,-62,-105,-52,-127,41,-26,16,-122,31,70,11,-100,-109,-35,117,88,29,-78,-45,115,-86,40,102,18,-58,-84,-54,32,-36,51,56,52,107,38,126,78,-66,20,-77,65,-119,26,-113,85,-92,-35,-67,-24,-47,43,-9,62,-70,-41,-66,-7,-72,-79,-77,56,75,67,49,65,43,-78,102,113,98,-47,53,20,-116,-2,-4,-12,-36,8,50,-118,-79,-37,-120,4,103,51,62,107,-90,49,79,-17,61,36,-15,17,-117,123,39,-87,61,96,11,-108,1,51,53,36,-19,-69,-51,-40,-91,-90,127,-62,126,-72,79,-61,123,-27,41,11,14,-67,76,-17,-70,47,-104,73,32,-109,-120,61,38,-1,31,-37,35,-26,-21,59,-53,18,-85,75,106,-83,93,-31,-18,18,-127,19,66,10,-74,-25,45,-109,18,30,4,-62,13,-47,13,44,-59,-96,19,-113,-18,65,-5,91,-75,-21,68,46,-90,25,-110,-115,1,-88,-91,13,55,86,24,85,-60,108,93,-61,27,-14,28,-17,-110,-18,68,113,70,-52,58,52,-9,111,-64,64,-97,-100,0,32,43,-88,13,0,-32,110,-104,108,92,66,-112,34,65,-64,-125,-9,106,113,-116,-35,91,-88,-91,13,-16,-117,3,121,37,-84,-75,-44,-1,-49,13,81,-77,46,113,15,-115,-37,21,33,-17,-19,-83,27,-95,28,83,22,53,-23,66,-57,-25,-15,-56,106,69,49,63,125,-120,106,-86,40,55,4,-96,43,-26,60,-107,-76,-116,-89,101,98,51,-21,106,53,-49,110,83,-119,27,36,2,86,-5,-50,47,42,-75,52,-59,-71,63,-67,60,6,83,65,124,28,16,14,63,52,-58,23,30,49,-81,-123,-26,-39,42,60,-27,-66,-61,-18,-88,-46,-22,-61,-60,66,65,-100,111,100,116,50,92,-83,103,111,-72,116,-5,111,72,101,39,54,-65,8,-44,-128,-88,18,113,-70,-78,87,-70,29,112,63,-31,9,12,-27,-109,-42,-52,-48,55,-70,95,93,-71,122,-46,-115,53,-22,-27,125,125,50,-58,21,-50,-71,9,-82,-6,45,50,-14,51,-74,-72,95,104,-86,57,65,-39,6,-10,-76,21,-52,127,17,-128,-36,-23,103,87,24,-95,10,95,95,21,-96,61,-24,-8,74,0,126,-14,-44,-102,107,-119,-123,83,51,27,-17,-64,124,24,79,-96,118,43,-95,8,-75,-106,115,-84,69,3,122,-118,-64,96,-106,-29,-78,-97,122,-82,51,14,65,-80,121,-66,74,-119,121,82,77,-120,96,-82,106,56,-45,-28,78,-116,-70,-13,41,90,-77,-55,-49,-78,91,-109,-91,-36,97,-31,27,95,-91,-116,-17,-21,87,112,-51,-82,62,-42,111,64,106,68,53,92,-68,-38,-25,-55,-38,-121,5,74,-96,-77,-109,-14,-87,75,-108,-62,12,-97,-91,93,42,24,-45,-5,79,126,-71,-10,-97,97,-19,6,-80,77,-111,39,-69,42,-61,-123,-30,-78,18,64,77,-99,-40,82,127,-39,66,46,46,-82,-117,-70,77,-17,96,27,10,56,83,16,22,114,24,114,-89,118,116,-84,19,-88,16,80,-25,66,-70,111,70,-86,10,-88,-1,80,-95,-82,95,-20,-114,-121,26,-15,-77,-104,-120,-7,123,97,68,69,59,-12,24,-20,46,100,75,-76,-41,-23,79,82,-115,-3,44,-69,-100,-55,95,81,-125,-108,-121,-46,-112,-48,-22,-10,-60,-40,112,22,89,79,-99,53,48,-54,-110,16,77,-51,94,59,-50,-103,-10,34,60,-115,84,31,-55,-58,-10,64,-5,23,112,96,75,85,4,-106,55,-77,-33,87,-79,-76,53,71,-92,-8,63,118,-84,-60,99,107,88,46,-89,24,98,-41,-36,-22,-88,34,-23,78,56,84,52,-14,123,60,-20,38,-66,-56,67,-80,-6,117,115,121,-126,39,-77,-8,22,89,29,-101,29,55,-31,-108,125,123,-46,6,-88,103,-35,25,65,-58,-118,40,26,-39,62,15,77,-25,-50,117,79,44,-79,64,94,-114,-31,-26,-10,-67,-114,-19,24,69,111,14,-52,-33,110,50,-107,95,63,-71,-21,36,-22,-7,19,-95,-71,-38,124,-88,47,120,22,98,-69,73,-114,-5,-18,106,-102,-41,-26,28,-101,-41,-105,-31,-26,-120,22,-21,-44,-31,-50,-127,85,88,111,33,-114,-53,-12,71,126,53,-55,82,-104,93,-77,41,46,-50,90,54,-38,-28,-128,-68,-13,-80,34,-63,60,31,-81,40,77,55,-5,-17,-110,94,30,96,61,26,43,-48,101,-128,13,-8,-29,-6,-60,115,107,-62,-57,54,13,96,114,-89,-69,36,-40,106,107,98,19,-28,14,-4,-97,-60,-64,-71,-107,-48,-50,75,-54,90,108,60,-101,-104,92,25,-60,-17,-63,48,103,113,59,24,51,32,-101,-26,121,71,-83,-21,-68,79,42,-115,5,89,65,-38,28,-91,4,22,89,7,122,-57,-51,-120,-110,-58,-42,-70,102,105,-112,33,21,-83,-14,62,123,-116,-55,-114,-110,95,-46,76,-6,-12,-88,-48,49,-126,-67,95,42,-94,76,84,-64,-112,-20,114,-8,9,-96,-38,-85,-38,72,55,127,7,117,54,41,-52,-89,-46,-121,-95,-97,-113,95,46,79,-105,36,96,62,111,89,-38,-97,61,120,24,90,-111,43,-69,48,88,-58,25,-89,55,14,26,121,-126,79,42,56,-43,109,-88,-53,31,-114,69,-1,-81,-50,94,35,20,62,-93,69,-96,-35,120,-103,-86,-44,126,-96,102,12,54,-97,-79,-49,97,-18,80,-111,-68,-17,39,102,87,6,-10,2,11,-89,-74,-43,-104,-9,53,28,-68,-126,-71,-26,66,34,102,-36,32,-96,-83,-127,87,83,-50,-98,-60,71,-81,-97,108,-74,50,-98,20,-9,75,-48,8,0,124,74,-27,-59,1,118,-121,52,-57,112,15,81,120,-66,-10,42,87,-89,-92,-123,-1,-74,-29,126,57,31,-50,115,-47,-89,-20,-107,51,28,49,110,38,-37,-73,-72,-70,-20,-124,-109,67,-114,7,64,32,101,-76,-107,52,-109,-89,51,-51,-98,-3,122,100,-2,-57,34,-38,-101,22,15,92,-104,9,47,-9,47,-18,27,-38,-122,-58,-20,102,-63,-78,-19,-71,65,-112,-48,49,85,27,-113,-57,24,108,81,-96,99,-47,-67,-121,2,-17,-29,-9,109,89,-45,-127,122,-59,44,-81,55,-39,5,40,-11,0,61,37,18,-82,-97,-69,27,-45,11,-70,31,-88,117,-98,114,115,75,-104,-3,46,104,-67,21,49,18,95,-8,31,11,55,22,-76,39,-17,24,10,-63,-97,114,57,-46,-62,34,-66,-86,-94,-109,-67,124,68,42,26,-65,-60,-41,97,59,118,55,-104,16,-25,-99,-13,-28,-50,103,-50,51,-77,55,91,53,-17,-82,-108,-121,-54,24,118,77,24,73,-120,-61,36,-63,-122,51,-88,104,22,76,14,118,63,122,-31,-115,59,-92,29,101,-66,-48,-7,30,-5,86,-41,11,-87,71,-15,-30,75,-110,2,91,9,18,101,-51,-102,-115,-83,37,14,-41,-17,-43,106,-108,-42,-86,34,65,57,-13,12,114,25,-69,-36,-48,93,-89,-99,-104,54,15,19,-101,-105,-51,24,-26,93,-2,95,-43,51,-112,-14,-83,69,122,77,20,-7,-29,107,79,115,-102,115,-58,-111,8,46,112,-67,-97,-20,-88,98,-30,75,-47,90,25,110,3,-8,94,70,47,22,-103,-91,-54,58,-12,-38,-50,51,72,37,27,7,-50,-112,31,-14,-76,70,-95,-109,48,-111,-75,118,30,-2,-7,-123,33,32,-89,-47,-6,25,67,73,-7,-29,-93,49,112,111,76,-65,-76,8,-95,45,-79,83,84,23,-96,20,-52,15,-56,-70,7,-58,85,106,122,-96,-84,8,85,-101,35,-30,-14,23,33,112,-86,20,73,-93,-30,-8,-39,-79,-77,-36,-107,-38,-112,-89,-27,49,103,48,127,31,-22,68,100,-35,99,57,74,-26,85,118,-43,101,105,-76,-127,-93,44,-1,68,39,12,93,13,-33,-78,11,85,-51,44,-99,-85,12,-63,98,-92,-5,76,25,-86,-68,-121,-67,-109,-64,31,64,-58,-90,126,52,20,-41,27,120,-117,-86,71,-128,-28,-128,-39,82,113,-102,59,30,78,-128,30,103,-95,-11,117,74,94,113,46,56,41,-96,48,-85,-28,-25,-79,104,-73,3,2,30,76,-22,-103,101,-89,83,34,2,-26,127,25,-82,18,8,-3,-20,52,13,-21,36,90,-38,112,-85,-79,-92,9,-72,15,98,-26,-32,26,-4,-26,-94,-5,112,69,-21,-84,31,-17,-112,46,-83,-24,-105,-102,3,15,-60,99,-123,-6,-47,-120,22,70,125,35,86,38,35,-100,5,89,96,-33,64,-55,29,55,-82,-3,17,52,89,104,126,-125,62,-80,113,53,34,77,83,-65,-28,-27,2,-114,68,-37,-4,89,-94,-41,51,43,-85,-36,93,74,-93,-8,109,-70,-92,114,-120,-63,44,77,102,36,50,88,16,99,19,-9,64,-43,-57,-81,-67,-9,-70,89,-64,53,114,-99,5,87,-31,74,66,75,-37,108,-100,-101,85,-44,-120,-70,-32,92,80,-16,30,112,-102,99,96,-6,123,100,-89,102,-38,102,-90,-80,-9,9,52,-47,-114,-128,-81,-112,2,-40,87,-41,46,119,-15,-107,79,15,105,-53,108,-22,72,36,45,-88,82,59,19,27,118,123,-93,-44,-46,93,-98,105,64,-80,99,-8,-110,-51,33,76,-58,-103,87,26,-13,76,-93,83,-13,127,-4,-54,-52,21,70,20,-93,-7,19,102,7,94,41,14,67,-52,17,23,54,-81,93,76,-61,-23,-92,9,-118,110,99,-128,-53,123,-127,-125,-24,-76,88,63,-79,-65,71,59,-79,-45,-64,-111,-85,-53,55,22,-102,-78,48,25,-67,100,0,72,30,19,56,-6,-54,40,-71,98,-42,127,-46,40,58,34,-6,21,-112,-113,2,-42,-14,-25,-78,12,-55,62,58,-44,-127,-40,85,-80,29,-27,-72,8,73,-36,-32,-21,34,-46,84,75,41,109,-41,-92,123,20,-123,72,106,47,41,-12,-73,-38,117,44,-89,-128,-102,49,-65,-43,69,-119,-53,60,-97,9,-39,-118,-33,28,-58,105,-41,111,70,39,-41,58,90,20,-25,110,-21,50,-114,-104,-68,-35,96,-16,58,98,26,-98,-80,63,74,-85,119,21,-124,118,8,-61,-125,23,-112,30,-77,-11,92,-28,-101,-9,-57,93,-49,32,103,-97,87,-96,116,77,-48,92,-27,57,-29,52,-25,-107,-77,114,-50,99,-79,-58,24,-19,-96,47,-113,-80,8,-72,-83,69,-6,92,55,39,17,21,76,-127,-5,-115,-60,-55,-28,-43,40,-43,106,-35,112,-57,25,19,80,-39,-6,-79,-111,4,-59,121,-77,-103,-89,-113,-127,28,61,-125,-50,58,-38,43,-33,124,41,-105,69,2,99,-31,83,-119,-21,90,38,92,-88,-83,113,56,-56,-49,61,-74,-2,101,-23,-114,26,-95,114,-52,-73,-53,-7,116,32,119,49,81,-88,-102,-49,-126,50,38,-47,-13,76,-73,69,-124,5,-63,-53,11,-42,-97,35,46,29,112,-43,-2,46,83,58,-17,41,125,-5,-34,-96,49,67,-17,-80,-82,38,81,29,-13,84,96,-112,13,49,65,117,23,52,3,49,-43,-26,-88,-97,-60,93,-93,-34,-74,-54,5,-113,-73,64,23,-95,17,50,-112,123,4,-90,-35,103,-41,16,26,-104,-119,109,-71,95,60,28,-71,-41,5,-26,-118,-31,58,-126,-93,-50,30,-48,-51,-31,-92,-2,-75,85,71,-52,112,-48,-65,74,-24,41,121,104,-95,122,-49,-83,119,-20,97,38,23,-73,55,-22,-118,45,-37,25,47,-122,-4,89,125,-105,55,37,102,52,34,-12,7,85,-6,15,17,13,97,18,20,-92,107,79,-16,117,60,-80,-3,-23,-70,81,124,52,105,-36,-44,-125,-81,-40,28,88,-111,-57,-96,-49,-5,18,71,-37,-73,32,53,1,77,-124,-70,-107,-79,33,-83,-34,43,-125,20,-55,-53,15,59,59,71,-97,44,78,33,80,-20,65,-72,68,-125,23,-3,-30,-89,93,88,64,123,-44,117,126,59,38,32,-5,40,125,98,124,-104,-31,-27,-59,98,12,-43,125,-48,-74,62,43,-6,73,19,-3,100,-104,35,-62,47,-8,60,37,-125,-100,49,95,-74,-15,76,8,58,14,20,-85,-56,29,-125,70,94,-60,-112,-56,82,73,78,92,-40,-37,-50,37,22,19,23,63,-49,116,113,27,82,-5,46,24,85,41,-11,106,102,-123,45,60,-108,63,-67,124,114,53,-126,-14,-108,64,-6,-27,-19,-101,102,-27,112,-45,-4,93,-36,-68,93,-111,-64,69,-109,-128,-78,-16,-79,-62,-51,-8,-40,-39,-94,-4,-117,123,70,87,-79,-91,15,18,11,98,-51,-104,-59,-76,40,-82,100,110,102,13,42,71,117,-81,-120,-41,-48,-17,44,-20,-44,-120,79,76,123,-128,-51,111,71,-41,-86,-76,-32,80,124,-43,-65,123,5,21,5,55,73,34,-46,-55,-108,58,116,110,59,85,-61,-24,111,-86,-34,-128,59,-111,45,-125,-47,-94,-90,48,-56,-109,-95,-37,79,-127,-17,102,-96,-52,16,-77,40,31,-59,-93,10,-26,-28,108,-85,-2,95,-25,-94,-88,120,30,-69,-24,-9,90,67,81,-92,123,42,116,12,123,86,88,-86,10,-77,-16,54,-119,-43,-54,-7,104,-75,-111,-3,63,-95,-96,112,-68,68,80,-128,3,-37,-13,74,-113,-88,62,-32,-40,55,-48,-21,-64,118,64,-126,-41,-75,-79,-112,-78,19,-81,20,-10,97,86,-20,127,56,101,118,69,73,-62,52,125,-84,-15,-30,65,-53,105,-59,-54,-87,87,87,-116,-120,49,71,-48,99,-108,-19,-107,-40,-98,58,86,-125,-119,-62,-38,91,23,85,-55,-31,52,123,-76,77,120,49,122,-19,-118,-56,86,-15,-74,-82,47,-83,-121,21,-69,-86,119,-39,59,87,-84,1,19,-67,-58,-122,-45,-38,54,-96,-13,-91,100,-118,-97,73,-72,-30,23,-30,-121,-36,94,20,-38,22,-4,-7,-85,50,114,95,-105,35,-85,-89,-41,93,8,45,-53,87,93,30,117,17,-61,-61,69,48,-52,-99,-75,-104,-113,10,-27,80,89,107,119,-76,-30,125,75,122,55,8,-13,-37,-37,24,13,33,31,-14,98,101,-51,27,24,37,-51,-15,110,83,-49,85,-122,-30,18,92,-17,101,12,-54,97,-99,4,-82,73,-46,111,-7,29,-75,90,-91,106,45,68,68,-111,-63,99,-74,86,-122,-35,-28,21,-22,74,-70,-80,-93,50,14,-9,-84,45,-41,-18,-50,-105,82,-94,-89,102,-38,74,120,90,-17,43,-82,-83,-17,-119,-106,52,-63,-80,123,124,-118,75,98,0,-76,-100,77,-72,80,-18,-49,61,107,100,89,-27,-70,93,-52,-68,-46,-89,49,-9,13,-77,-29,103,-69,-52,-88,-65,39,-33,-119,-105,96,29,48,86,55,-76,62,-128,5,109,73,-94,-43,-11,-82,-32,122,52,33,29,-40,63,-89,-88,-16,77,67,-69,-59,-106,112,59,-67,6,-92,-115,-120,107,40,38,-33,69,87,81,8,9,9,-31,-68,-110,113,-117,-81,44,-62,-85,-23,77,-6,84,-126,-63,58,105,75,-48,38,80,-45,-2,34,-62,-8,107,-16,-82,-128,-17,57,-113,-99,12,-110,-47,-44,100,-23,121,-29,42,34,-64,-124,100,123,105,-128,-7,117,5,-13,13,-125,112,-4,86,53,-128,-87,-81,-75,-18,-77,116,-110,-122,-60,100,-124,117,-35,82,77,87,125,29,-127,123,100,-54,-117,-100,-105,-49,-77,2,-4,-110,-101,6,63,53,-103,76,-40,-118,108,-103,122,52,-3,54,-86,57,65,86,-106,4,-99,82,-44,68,15,-41,51,17,4,92,-63,22,-83,-126,65,63,-115,76,80,-109,-50,16,105,79,-115,96,34,-71,-61,-89,98,92,-36,-88,113,56,18,-123,32,120,110,81,-29,108,-31,34,-24,-102,-33,-8,25,76,-128,77,84,90,76,-98,-4,-104,-105,-65,10,-62,29,-80,89,-116,120,101,22,-36,-85,77,3,-44,-107,63,45,-19,-126,16,-29,1,31,-125,-108,113,30,-103,-38,-127,26,-18,-56,-120,-121,32,102,-25,-7,-85,47,-50,-121,-109,-6,-127,-34,55,-114,-34,82,-6,-44,83,-2,-69,-34,101,-21,123,25,33,-23,-108,-107,-46,-46,56,-30,38,108,106,60,-31,-78,8,25,4,124,12,29,37,2,89,100,40,-48,21,-87,-53,109,-116,-46,77,-60,-64,-68,122,-25,-109,-71,28,62,121,-84,-73,80,12,-118,-88,-89,109,106,-74,-62,89,58,-65,-73,-74,-64,-110,-73,-27,96,-87,-128,-122,-72,54,42,22,73,-37,-87,6,29,31,-46,62,-99,23,63,114,10,-20,-43,68,-24,15,124,-63,76,-25,-12,30,-86,-43,38,111,-121,69,-5,-49,34,-42,-51,119,39,80,86,-32,27,-74,-71,-24,73,-25,74,-11,53,104,117,87,-32,-11,-115,-24,99,-78,-7,-113,-99,-76,112,-20,121,50,-9,-103,-10,111,-68,-9,-35,96,-108,10,-38,2,-18,-73,-64,90,-105,94,103,-22,22,116,99,-68,-42,124,-122,-117,-119,-43,-6,47,72,90,-52,52,-76,2,-22,-84,-19,-85,-124,92,13,-115,36,2,107,15,127,-76,47,-39,-109,3,90,-24,1,-74,-29,-17,-27,-21,32,102,26,-57,-108,-114,-112,-104,76,-47,-17,86,-86,38,106,114,-81,-77,52,67,-28,-68,-63,23,-57,-110,-81,95,-35,-97,-29,-96,-11,64,-1,-118,-99,-25,-24,68,-118,-84,68,-113,94,-39,77,93,-80,-1,12,-123,97,80,111,-117,-52,5,-24,5,-98,-27,48,-96,-37,-108,70,-28,63,-21,123,23,67,-33,-96,47,-58,-50,-124,-109,-64,20,-37,44,-101,34,95,100,94,-57,39,-4,-21,-62,-76,-37,-72,-51,10,114,-21,113,45,-68,27,-77,47,105,18,122,-117,43,-99,-82,40,-15,-7,112,27,-86,-37,83,-8,-53,1,-110,47,64,-58,44,-50,14,18,-33,69,-17,-90,51,35,-58,-103,29,100,38,107,-44,-99,106,-49,-90,23,107,-44,-79,7,-21,-10,40,-76,-58,-50,-106,84,-47,34,91,-9,23,113,114,-11,-91,-62,64,20,58,44,-76,-105,-55,38,-101,121,94,-125,81,-55,-128,-101,-22,100,78,43,94,-46,118,-103,-36,81,48,45,90,-3,2,44,-8,-66,-49,104,116,-90,-69,-78,28,-65,15,-31,103,-71,14,-103,-90,-54,36,-81,-62,70,-35,-60,103,-13,45,20,-32,-93,127,59,127,-54,-89,-23,117,48,77,3,-84,-35,-56,37,87,60,-115,11,-27,44,103,78,-16,-112,-3,-44,45,61,-112,-102,-104,88,-67,102,121,-106,104,46,-39,52,-91,-77,-13,-79,118,-52,61,-90,-5,46,24,-59,-84,57,-34,101,-62,47,-66,-18,122,28,102,32,-123,-19,121,81,12,-110,89,-78,-38,8,-78,-94,-2,44,111,-36,-2,-66,22,83,-59,-43,92,60,-29,-71,92,-51,7,19,-2,39,-66,-100,116,-78,92,7,124,103,107,127,-115,80,62,99,98,-95,-74,109,-3,59,-126,-61,-93,11,-58,87,-24,100,113,21,-65,-71,-103,-106,122,96,-71,100,-38,-118,-23,72,0,-55,-68,-108,88,73,82,119,-105,-90,59,-41,99,37,76,-41,-62,94,18,-37,67,68,56,-41,110,53,-24,14,-62,38,-121,-84,13,48,48,116,-17,110,-80,-63,50,-4,8,111,-77,77,-4,112,19,-9,64,-32,-45,72,77,-90,-127,88,74,-61,-85,63,-75,125,-46,-15,-86,79,116,76,7,46,-99,36,14,-55,0,95,76,101,-115,67,-18,-35,71,95,-104,8,-124,38,-42,13,-70,18,98,77,51,-82,-27,-61,-66,2,26,2,-26,-61,-119,-70,44,114,27,99,-99,14,97,34,63,-88,-44,65,82,30,-47,-99,-97,13,-13,48,47,4,117,-29,37,11,-7,28,78,41,-59,-94,8,99,-125,32,-109,14,-13,-58,11,101,100,-94,-61,45,-49,90,47,84,77,19,12,-24,-86,-63,112,-48,73,4,-91,54,47,3,67,5,68,-26,-64,110,-71,113,-96,105,23,-14,-79,-18,67,36,-35,-36,48,68,-33,-5,56,39,-56,-20,-11,-43,6,82,-33,121,29,8,-78,28,-29,-101,-76,-81,116,-98,-72,97,-16,107,123,-89,-47,-84,102,-113,-107,105,-24,-112,-67,-77,-41,-18,29,49,-19,54,49,41,20,63,84,15,103,33,50,-25,-118,42,87,61,48,-48,-121,16,-74,-85,-13,6,-14,-76,82,90,-68,-4,-40,2,17,-101,81,-80,102,-2,-64,-54,-74,8,7,-117,99,21,21,-50,74,-36,-89,-75,85,-35,-29,-105,2,-55,2,28,71,-118,53,126,-84,2,9,-20,-104,45,4,76,-113,10,124,83,81,88,50,95,66,44,-110,122,17,30,92,-85,26,-53,73,-78,-32,-127,5,3,34,-75,81,54,-15,-13,9,-42,-126,-102,7,96,119,34,109,6,67,-70,116,9,-26,103,19,-9,116,88,-12,-88,39,92,85,91,-87,33,-43,120,96,-59,-53,84,12,-18,-68,-87,3,48,-99,-28,87,21,-88,86,-93,116,63,33,100,-65,-56,-36,-36,-38,-80,-97,-62,-87,66,-65,77,103,85,73,-99,103,102,104,-80,-70,60,-96,-6,-67,1,-1,-44,90,-80,93,-59,39,-81,66,63,-35,17,-58,-56,-49,83,71,-80,-54,-111,92,-7,-48,29,-7,56,-107,-114,-75,21,54,-124,-3,-60,-78,-13,61,-110,123,80,-49,96,-105,-115,-29,112,-68,126,-87,-74,82,70,16,-70,-84,53,22,-16,29,-40,-90,-47,14,-117,-3,6,-13,64,-84,87,-100,52,23,-57,108,74,-37,59,82,45,87,20,-65,52,57,-96,-61,2,-39,-33,78,-79,84,-61,63,34,37,27,-13,12,101,32,9,-16,-19,21,59,-119,-97,57,-124,127,6,76,83,80,-31,27,102,-105,118,56,85,89,98,16,-57,68,3,6,58,-95,-77,-78,26,-26,5,-21,-113,23,-110,90,-16,35,-23,-108,-47,-14,102,-42,119,46,58,10,83,-117,80,-49,-38,-58,25,80,-85,40,-54,-2,-35,-100,-80,-77,87,-122,-45,-94,-115,63,86,-10,84,-47,-114,101,123,111,-75,71,-111,-47,-35,43,-99,-22,106,-3,-89,-94,111,22,-52,95,-17,104,71,96,10,7,-99,-90,32,-38,-81,-7,-112,30,-16,-11,106,-104,-30,78,99,-110,30,-31,-125,111,-50,-19,-50,-66,109,-113,95,26,-74,-86,-66,4,70,-4,-14,-2,-86,-83,48,118,-62,-30,-78,-2,102,-105,-45,83,37,58,53,100,-66,46,-25,-104,125,-112,89,49,95,75,22,88,19,-76,-35,101,39,20,54,-82,61,-40,-83,-106,32,-106,116,-80,-52,-45,-86,-126,-56,-71,108,52,70,39,103,-24,71,121,120,117,9,5,110,-97,-79,-39,-56,77,71,-90,-97,3,-8,-64,-102,-5,105,59,-100,-76,-65,-99,-6,-7,85,115,112,14,118,65,10,-60,116,68,69,-83,-118,23,24,13,40,68,-78,-2,-43,79,96,-63,-5,-19,-56,19,94,-79,-7,96,19,-93,-47,31,30,22,43,89,-104,61,-49,29,-111,61,121,-41,32,116,-17,121,-109,-51,7,51,-6,-80,-105,-84,-41,88,16,-61,91,115,-25,69,-80,-12,-70,45,80,75,-38,-22,111,15,39,-71,62,68,40,-51,11,-9,44,51,29,-27,112,-106,-95,29,-114,-105,68,105,-68,-109,-13,-82,51,33,50,-48,-103,-65,-46,13,-51,-29,17,54,-91,123,108,-73,-120,43,27,100,32,-13,52,123,-52,33,-43,-110,-76,-79,-30,-86,109,-90,49,103,39,-28,-52,41,0,106,-13,10,-57,124,-15,10,74,-124,26,91,-63,114,-48,52,83,11,-44,95,-23,13,-57,114,-108,82,96,39,27,-34,29,-60,99,30,5,-101,117,-128,-74,-47,-33,-118,-69,-121,-112,-18,20,-6,-35,117,-80,-35,109,-102,24,-33,47,-5,-13,101,4,-127,25,1,-117,-57,-65,74,-64,-107,125,0,-78,-60,110,-100,-1,-19,-63,27,61,-17,-75,-84,-29,-56,-25,21,107,46,88,-33,-89,109,83,-83,-100,-121,-55,-48,-3,29,28,98,-64,-59,-73,-65,-63,-86,30,92,-29,4,65,-26,47,-111,1,-21,26,-109,-86,-119,-1,113,-29,-88,77,75,-54,-35,22,-95,24,-40,127,80,-56,-24,43,125,-18,97,-77,-32,61,-85,69,-105,19,9,65,127,10,9,90,-76,-37,-2,-18,-15,-57,2,27,11,-51,109,28,17,2,90,69,22,98,-55,-63,-53,125,48,-13,44,-96,-94,-116,65,88,-2,72,76,61,79,12,64,-112,-11,44,72,-103,-29,106,-24,78,91,72,-93,74,-123,-36,-121,4,79,92,-28,83,-109,-98,-99,63,92,98,-39,94,-43,-57,10,83,-23,92,50,79,-111,-32,-79,40,-34,-26,91,115,-124,-19,68,-72,56,60,-101,-73,-55,36,-83,-59,-86,-73,3,-98,-85,3,103,10,-113,34,53,-90,112,-114,-122,26,46,58,52,51,-101,-1,29,-87,-108,-77,25,-51,0,32,97,-36,57,67,117,-124,-61,13,-67,8,-108,-50,-59,28,95,-112,10,124,105,-54,-127,-43,-86,-50,53,-1,-108,-111,65,35,-42,-28,-119,-47,-92,-97,15,-50,12,63,-42,10,-71,22,-23,83,-24,-28,20,69,114,98,108,29,3,-42,123,-101,120,13,-36,-44,87,15,74,-89,77,56,-23,65,-12,19,54,66,-31,-16,-111,109,-43,111,-87,69,79,-8,124,-17,-46,-48,15,61,-28,108,-72,-58,-55,53,83,-80,118,43,-88,-54,74,-102,-38,56,116,-80,-125,-75,-3,105,43,88,-66,117,-120,-58,82,74,-5,6,78,-72,-79,-51,85,-49,-100,123,-42,4,90,-33,-55,88,127,60,-115,20,-123,123,117,9,-75,122,-19,-97,-98,-15,90,-32,92,94,-86,41,68,93,106,-60,-41,-80,40,24,-91,-86,-39,73,-120,-27,125,-87,65,-123,-41,-9,35,113,91,-40,-111,2,5,34,83,-66,114,-111,90,57,126,-93,62,-117,5,60,-68,11,-105,-35,-33,51,-52,-45,97,83,117,36,-81,45,59,-43,64,-62,69,-95,110,88,102,-125,107,-97,43,95,-122,4,1,-51,25,-12,43,-22,100,98,-64,94,64,-74,45,-38,-46,102,-21,-37,29,-123,-104,119,-2,-40,115,-31,15,2,21,-115,75,82,-8,18,74,8,27,-80,90,88,10,37,-104,-1,-82,77,80,-97,-99,-105,35,40,110,-49,24,99,-94,43,20,40,-40,10,113,-71,43,-63,-22,77,64,-3,-79,-82,-44,-53,23,86,110,-124,97,-27,-106,-95,104,-96,-121,25,-14,74,54,120,72,107,-128,-9,-60,21,49,-67,-12,18,-30,-33,-91,77,40,38,33,-70,7,-43,-89,44,-12,111,-108,14,36,-15,85,112,-85,-109,-48,98,57,100,-17,85,-123,-72,-111,60,15,-124,11,90,-105,7,-107,-121,91,-10,-98,83,-116,-10,54,-128,64,59,38,64,-25,36,-17,101,-96,-108,67,-89,46,20,26,126,-71,-1,0,77,32,-72,-31,-29,44,-14,-8,-74,42,-11,-21,95,119,84,123,-128,30,27,20,-74,38,-11,-122,41,94,-51,-33,-115,45,74,7,80,35,18,-30,-101,-6,95,-92,-69,33,16,15,-59,-111,3,-67,-86,28,-43,40,68,27,-111,-95,-26,98,38,83,106,-126,-34,86,-54,-102,-110,-88,38,40,-37,46,81,11,-122,-8,-46,30,112,90,-40,95,-61,-73,77,-123,-44,105,32,-109,-110,81,-23,127,-83,81,-55,77,62,-44,-33,-70,-62,4,52,115,32,-36,-96,-123,-33,86,127,86,38,43,53,21,106,-125,-69,-16,84,-98,-80,-12,17,-25,-70,-72,34,-33,-115,-119,48,42,-34,6,91,-18,-19,22,0,46,-92,-27,106,-116,35,78,44,50,-110,-113,7,14,18,-123,22,-112,113,-91,-51,-17,88,-83,-51,-19,30,28,109,-64,-114,86,73,-33,30,-1,-121,-58,51,-109,86,104,89,119,-76,-28,-90,-95,-100,69,-55,-23,-14,58,-112,30,-77,125,72,-99,55,39,67,54,-6,4,52,50,92,-47,-26,6,76,3,96,89,97,126,80,-80,-100,-76,67,-119,-36,58,-13,16,53,53,5,123,106,31,33,-67,111,-27,48,7,-111,23,-110,-42,-16,-105,38,43,51,-17,-12,-98,89,-32,3,64,118,65,21,-66,-1,-93,-115,93,-75,7,-25,126,59,107,-19,-26,14,-107,75,45,-16,-110,-34,50,2,-11,-109,19,-61,125,-94,-63,123,-24,-11,54,-115,121,-16,-39,98,2,77,102,90,52,-110,-55,109,-119,-47,-121,116,119,65,68,6,6,22,103,-121,49,-117,119,-38,-90,124,-32,104,90,109,-16,-100,-92,61,-115,-107,60,-26,93,27,111,-124,54,-72,-77,123,-79,89,-89,-54,-94,108,59,-49,78,-108,-4,-28,-119,55,42,36,95,123,-7,-99,-42,-100,-6,91,-65,-24,32,-77,106,59,-5,-93,-100,115,35,70,-90,-7,-6,40,-20,105,76,-32,-74,77,-32,-91,114,49,-126,-83,-81,84,113,80,-69,-99,-13,-29,-103,102,-69,-108,-127,87,-43,-11,-126,-113,119,-104,-11,79,62,26,-90,-22,7,-64,-107,77,77,-83,24,-90,52,-57,10,-22,114,-38,115,-37,-52,-63,-76,-13,94,-56,-96,78,59,33,85,-82,-97,10,74,-95,-113,-78,99,-66,50,4,32,102,69,20,-76,-69,-57,-26,5,-105,127,94,-72,-19,-117,-7,-38,24,-91,59,86,91,9,-58,126,-81,-126,-39,28,35,124,101,74,120,-90,54,14,-31,-108,80,94,-40,50,-56,26,-5,19,-37,-39,-45,-117,9,37,53,83,-73,-22,-107,-102,-104,38,-126,-125,90,-106,74,-98,72,21,-76,-56,20,109,29,52,-45,-42,-51,51,-1,122,91,12,-18,-69,55,-3,51,-111,-106,123,11,-108,-93,51,96,-100,91,-87,-51,70,-39,15,-81,35,62,-54,-87,33,-64,-125,-111,14,-109,-89,70,-36,65,-122,-47,126,126,-119,-49,-34,46,126,-87,88,-117,-107,119,29,-65,25,-89,62,-89,-88,-117,103,100,9,-36,56,79,95,-124,66,-5,-126,-9,9,-95,-95,-93,54,-2,-54,81,-106,21,-25,108,105,-37,-9,-97,69,122,84,39,-124,98,59,-25,-67,18,35,48,-105,117,78,-75,-42,3,-76,-107,76,79,3,-81,-61,30,-99,-99,101,-118,-94,112,-88,-19,-82,103,-67,76,-71,-105,-24,-91,-20,83,90,120,-7,34,-26,-110,75,41,62,-116,-77,23,109,107,74,-78,94,-125,26,-13,27,99,49,77,-73,100,87,77,0,88,93,-23,-115,-36,-108,-24,123,-65,-60,-63,-44,0,19,102,-19,89,69,85,-96,88,-103,123,108,119,-68,-99,89,11,-56,116,-106,97,-68,6,-60,47,52,-1,-53,94,-55,-107,-3,-9,-105,-3,-21,-69,-37,18,-59,78,37,127,118,107,-117,-79,-43,-108,124,33,-121,-25,52,-71,76,64,-2,27,-52,68,88,14,25,-115,57,30,-36,-16,63,-75,92,110,-57,-105,-82,-21,-72,30,113,-92,-20,-15,-77,-20,-25,106,22,56,79,21,68,98,115,71,32,20,122,-70,112,38,62,105,48,15,115,47,-124,48,-71,-41,-85,127,-6,9,122,110,-68,-45,-35,-21,-103,122,30,-70,42,68,9,83,13,105,110,8,98,-42,93,117,-26,21,-42,-82,27,110,-123,10,-98,-5,22,29,-112,-32,109,31,7,-91,22,71,-56,60,29,-126,4,63,-64,-77,74,-53,92,-7,-54,-128,72,-20,-92,6,-89,-20,52,46,32,-94,-119,-90,-92,106,74,22,-50,88,-69,107,8,3,55,-102,-64,28,-106,74,13,96,97,110,-59,58,83,-95,-49,-106,87,71,9,-19,125,26,-26,-93,-28,-52,20,-63,49,-73,-11,112,14,121,-65,88,-128,4,72,-117,-29,-74,-33,21,102,125,112,-49,-82,-7,-28,82,46,-71,12,118,4,121,97,16,28,85,50,78,-24,76,74,107,-47,-67,63,-94,-112,93,-59,-48,-32,119,84,108,74,52,-113,-17,-96,27,122,-67,23,-10,33,-63,-54,49,57,-103,-58,54,20,102,-18,-78,-125,62,20,109,7,-20,107,31,-85,5,104,81,-61,98,51,125,-32,-90,125,-100,6,64,104,56,126,24,-86,109,23,-100,15,23,50,22,-83,30,-128,-82,123,-89,14,-48,-82,-36,-92,-65,-12,10,107,-61,-124,-36,-75,49,0,-105,26,119,101,120,-37,-38,-89,18,-55,-47,-118,-92,-17,48,-14,-50,-72,112,-100,-125,-106,-114,126,-23,-105,-41,102,-7,-5,87,-25,71,-111,-11,-76,-106,57,-84,39,-28,123,50,47,-23,-66,-101,102,-65,103,32,10,84,82,34,32,-112,-14,-125,-109,79,28,-18,97,38,56,-36,-70,-6,-78,-80,33,-120,104,68,27,41,93,-95,125,90,-18,-97,-33,-102,53,-79,4,-27,30,-51,41,-72,-74,92,-102,28,-56,114,122,-105,121,8,-51,63,-117,126,-56,-127,-126,49,84,30,-76,-13,-45,53,57,3,34,-85,49,-112,41,-71,127,-111,22,-114,-34,38,-45,44,97,52,4,-111,-35,-98,-24,-53,42,74,-118,-86,-19,-119,-52,-88,22,-89,119,71,112,-21,26,52,35,126,65,117,-110,4,47,-66,21,-51,-8,-72,-120,-107,72,85,3,73,72,-27,-36,-114,19,71,-89,-100,-111,116,-97,87,-53,-68,-121,17,-29,-60,-28,116,-64,11,45,-83,-125,-55,71,-3,4,-123,53,42,-122,-45,104,-22,101,81,-24,-37,49,91,-2,-77,44,-72,-64,-100,-80,-75,-26,108,-102,19,-107,-51,-23,-11,-4,118,-18,-18,125,90,-84,41,8,-54,30,21,-91,102,-115,-99,-35,-35,6,24,102,-108,26,-8,39,1,-93,76,124,28,-9,114,-39,9,44,72,-72,-24,67,-41,-3,-58,-92,-31,-57,127,29,36,16,-1,-87,-124,-34,-23,57,118,-38,-19,51,121,15,-44,-2,8,-87,-47,-82,71,-14,-41,16,48,79,118,17,-83,-84,-62,5,-127,-20,-12,28,54,-95,-89,115,124,-18,40,-118,-125,-97,3,15,89,-21,45,-19,23,-58,-1,39,19,-18,-121,127,-46,2,38,-24,-64,-48,81,19,-16,80,-128,-37,123,-43,-73,36,-127,55,121,-62,14,93,56,42,-117,-43,-99,24,-79,-46,-112,-34,-99,38,-19,11,23,-70,-128,-121,-81,-110,88,-76,-53,-51,51,-128,52,54,-80,-58,-35,83,10,20,27,-109,119,112,38,-19,97,120,67,24,51,-65,84,37,112,-8,67,6,-104,-127,-50,118,-1,58,-97,-94,-103,78,10,30,-94,-95,-42,107,-41,-67,-39,63,27,-108,91,21,-88,-23,-118,-55,-28,-1,-9,16,-37,-29,-55,-80,-82,78,-112,62,46,48,-41,1,50,34,12,-53,123,46,1,37,108,71,3,41,-94,-123,-50,-16,-42,8,86,-39,-24,51,119,20,22,-55,115,-82,-86,114,-110,8,-72,-15,74,83,93,14,59,122,3,107,-17,93,51,41,-56,-125,28,-21,38,-59,71,69,-48,111,79,38,-29,-23,0,-17,-110,75,113,87,32,50,4,-113,-4,12,-27,-20,-61,-41,-56,-117,-99,-77,-87,115,-99,40,-99,-95,-31,26,119,-102,-53,2,29,4,-21,-86,112,94,-82,45,-65,23,-23,-85,-17,-97,100,75,116,-110,1,-109,-111,29,80,-90,93,74,3,95,112,-48,-106,-18,25,77,-29,-22,72,-117,94,9,95,113,-1,-104,-124,-28,12,97,-109,66,33,-94,-29,91,-88,-102,77,-76,21,-65,95,51,54,-16,-116,78,78,-79,-107,-51,-123,2,40,49,-124,-90,64,97,-3,-105,14,71,-114,112,124,3,-83,-105,-50,94,35,59,-63,73,120,-43,116,16,-91,-46,-18,-117,-108,-26,84,-84,75,123,-97,-21,-118,-119,72,34,-59,-108,-104,-65,21,70,63,-108,-35,-26,-11,-63,-55,53,-81,-125,-58,-115,-16,-54,59,7,0,-12,-67,126,-72,81,-118,-76,-13,121,5,27,-23,80,87,-125,-14,-85,-37,-6,-79,-56,-118,-19,-45,-43,72,71,-49,-91,31,-121,-90,34,89,-22,116,46,-62,-59,49,-4,12,23,40,-39,88,-54,120,12,34,26,-7,42,-18,-89,-37,67,123,61,-91,74,-36,-38,-104,15,113,46,54,0,28,100,-75,-44,25,-56,103,28,44,-92,-100,34,-113,28,-16,-75,-121,-7,58,38,-99,66,-2,-20,-122,-19,11,110,-58,45,17,-72,38,-45,41,6,64,-86,44,36,91,-45,-93,17,43,-73,-70,-41,52,121,53,-71,-90,14,110,115,29,36,-75,-46,92,97,-53,102,-88,-32,122,53,-39,20,-102,55,-101,117,-26,82,14,46,-91,-120,85,36,-108,101,-81,-26,115,-18,-50,-47,18,7,-125,-24,33,-46,-24,-108,33,-71,41,99,-66,47,-43,-25,10,117,53,-2,-14,10,126,-112,-74,104,-77,-57,-30,24,81,93,69,115,89,10,34,90,88,-116,65,-90,72,43,51,123,-85,55,-12,8,13,10,-37,-90,123,-4,40,109,105,112,64,99,-74,-83,44,104,-20,-16,25,54,-82,-54,-109,64,-37,-3,-17,107,124,14,-64,60,-47,-72,40,-84,-74,89,36,6,-98,-125,63,30,14,-70,-62,109,-38,112,-41,127,52,115,-56,27,-112,76,-65,-107,-118,26,-53,-74,-96,114,78,-120,24,77,60,48,29,49,-15,-117,-91,1,58,-26,-84,-9,-115,-109,-89,-21,104,82,36,116,121,-103,93,-50,-103,-39,37,52,-28,-108,49,-87,-93,-115,38,-37,-28,-68,14,-26,19,-41,107,-2,-37,-107,-49,11,-120,17,24,24,-100,-110,93,46,-122,-84,38,6,-7,-53,98,102,35,65,-8,-6,-99,44,86,-5,-4,67,-65,13,23,66,-111,24,7,19,9,-92,114,29,58,-43,-61,-105,-33,34,-26,-57,5,-11,48,77,0,-41,22,-49,-20,-44,-99,-30,10,45,-51,47,-29,20,-61,-11,104,99,21,-15,-67,44,108,-71,-83,-11,57,-104,39,-84,122,2,14,127,5,-110,-79,98,23,95,89,3,-87,68,94,-9,104,40,107,24,26,-97,-36,-111,-100,-95,31,-97,77,49,-69,112,-111,-96,-45,89,127,-9,114,85,-5,-102,16,-1,31,-53,-69,-53,-6,113,84,-6,62,-18,-44,-73,-15,68,-105,-36,127,12,-27,-28,-42,-31,51,-121,-19,86,-111,-86,93,-119,-74,67,51,32,73,35,18,-106,70,44,-82,72,50,-19,98,-45,-60,-84,-84,-67,-126,-5,-67,38,-2,-62,-23,-54,-110,113,-89,-14,52,28,11,-61,4,70,-35,-100,0,-46,-11,-124,49,118,-80,39,-70,-100,-54,-120,-69,102,39,59,16,-49,-50,53,-27,44,-115,90,69,-102,65,-113,20,-47,-115,59,127,-19,-19,-54,-27,-28,39,-94,65,-114,75,-115,-46,-85,-4,75,-67,127,-98,27,-42,1,-43,-124,22,-21,-74,-27,53,-45,127,-90,-83,-44,-23,-86,10,36,59,86,99,-126,-59,108,-99,-45,91,-16,-33,110,106,-120,-87,19,115,122,-86,85,-83,67,-4,-57,4,-111,-5,-58,-2,-91,95,11,107,-53,-68,-128,-12,-68,85,19,-40,-36,-56,10,58,-64,-12,-32,20,79,37,-65,-9,-33,88,123,94,114,31,67,-2,-32,86,-124,-62,-116,-100,41,35,-17,-81,67,-85,-110,83,45,5,-121,-120,-3,14,47,-65,-78,-87,-114,-9,-19,-7,-21,106,74,-40,117,78,-33,61,63,-70,26,-9,56,76,-121,-77,14,87,-125,-32,69,-101,50,104,30,-59,-117,80,43,-98,-11,-23,-94,-108,52,97,-38,24,-10,125,-41,-119,-19,-56,-42,25,65,-39,7,-102,-4,109,110,74,18,-126,13,96,95,99,-89,15,-3,6,106,72,35,-78,82,-15,73,61,116,-127,-83,98,54,-17,2,88,-7,-57,-37,-102,-39,-79,31,111,-6,-62,-24,69,103,74,113,65,-15,68,37,123,-65,94,117,-32,-121,-78,-5,59,120,104,60,5,68,-65,4,-85,64,-80,117,61,-101,46,-88,-123,69,-19,-57,97,-15,125,54,84,-23,-124,-27,-47,114,16,104,44,-100,-87,36,81,-27,-20,-73,95,-80,-64,-34,-77,29,66,-126,-120,77,105,-100,44,79,116,-18,-27,-15,-71,19,-80,12,-18,27,-92,45,116,-27,14,-14,-77,1,-110,-40,-26,-4,-88,-120,60,51,-101,108,-123,116,111,-83,1,-74,87,-69,11,124,93,2,-64,121,62,-45,-79,110,-55,-37,97,27,-79,110,-91,67,53,99,26,-74,98,43,9,-43,80,-103,-23,60,-36,68,-112,-64,20,-31,-52,-79,-113,-7,94,-30,73,-100,55,-111,87,-1,-29,-25,42,-94,-13,-63,108,-59,38,-16,-85,-62,-17,0,47,-90,116,-80,-11,12,-54,96,-110,-12,-6,-128,-31,-64,-109,103,-11,58,-118,-3,-102,0,64,39,-67,-18,93,95,-87,102,104,88,-31,-62,-36,-61,-105,-26,46,-53,93,117,-70,-54,121,-103,52,-24,-10,82,-124,-22,29,-122,84,-76,-64,121,-65,-6,52,80,-27,7,-118,108,64,-82,73,-44,81,-107,-88,84,-100,-59,9,-56,35,-39,-68,-82,26,65,-73,-66,-15,75,-44,-31,51,-65,-62,-73,100,51,-51,78,-112,-84,-19,82,93,-92,53,-69,-38,-66,5,127,-30,61,43,26,48,-63,31,24,-71,-67,-60,-127,-55,-26,-43,38,-63,-49,-101,-37,116,105,10,-109,3,-67,-42,17,-89,110,-103,62,-41,78,-59,-47,-47,-17,10,-51,-16,-31,-41,68,37,15,94,-123,101,77,-122,116,61,-96,-8,-122,-11,105,109,-74,-97,-111,44,114,105,45,-94,42,-99,-52,-113,122,87,-59,85,-109,-128,120,21,-49,-75,-89,11,-10,120,-51,30,-19,-79,-26,-32,64,-71,28,-44,-11,55,-28,59,109,-84,-22,-113,-55,-105,114,50,80,-26,77,36,54,42,-71,-111,-64,118,99,-100,-121,-128,56,-10,-75,-74,30,93,36,-122,16,-105,-50,85,19,-99,-84,-72,-20,-63,96,75,-53,-86,59,90,-23,-73,-39,96,-118,-9,-127,-106,42,-122,-84,108,-18,29,81,-58,46,12,94,-2,-94,33,-75,85,61,122,-100,2,101,45,106,-49,-43,22,-63,-128,94,-115,5,38,35,-8,54,15,35,-114,87,-76,110,-50,37,20,-114,115,84,-13,48,14,54,-58,-93,43,112,77,9,-99,32,-91,-55,-82,34,23,-40,62,17,66,84,-3,82,117,-100,32,33,19,-100,93,102,101,-33,112,-103,-38,114,-1,38,-89,-90,-9,-86,-101,-66,-71,41,-113,5,-40,21,50,89,123,-73,5,45,68,-75,58,-107,3,-67,-64,89,-117,45,51,16,36,-119,69,-78,94,-18,-18,61,-124,22,97,-55,112,-97,19,119,65,7,-109,23,88,-15,-47,-103,-62,-84,106,-5,73,-108,-109,34,33,-116,81,-41,81,-102,67,20,-46,67,-40,-9,-49,10,121,-57,-33,61,28,42,-67,-36,-113,-38,-89,-94,-67,-28,52,-17,-116,-96,117,-51,29,-84,-38,-53,-53,-44,-110,54,98,-76,18,117,83,10,-36,-62,102,104,124,80,34,15,47,108,91,-112,-116,-10,66,-68,55,-123,-67,87,74,51,-47,25,-34,-122,57,32,-96,96,-64,67,31,-41,-124,-87,76,-15,-125,1,13,-77,99,47,74,-44,97,67,108,-4,-9,-16,36,44,-53,3,105,-120,99,-55,-30,-34,118,8,40,106,-95,-122,14,-65,-23,86,-64,-26,114,89,97,-59,-10,71,-108,10,-60,61,-87,-19,-4,-28,-32,-1,35,-123,109,55,-47,-126,-124,-1,-36,120,-107,3,-17,121,31,-80,25,79,127,-32,-19,103,118,-4,21,-55,125,70,-95,-104,-2,-78,-24,90,97,-33,-79,-92,126,20,49,60,41,121,56,120,-102,113,74,1,44,-28,46,-19,100,-46,-127,77,-8,-64,-12,-13,-15,11,89,22,86,-95,36,-105,84,110,-83,37,-56,-40,-92,19,-17,-82,-25,83,4,33,-111,76,-54,-85,35,-107,127,-72,76,89,-123,-103,28,-96,95,-47,77,107,-98,-35,52,59,75,-76,87,-14,-27,-56,75,117,67,-34,91,-92,-45,-95,-116,-13,5,-81,-35,83,85,10,-112,-38,89,117,43,123,-43,-73,104,36,-80,-106,47,113,51,-82,36,93,-84,33,11,-53,-84,-128,82,-86,0,-118,-33,-6,-122,44,35,81,-44,-71,-73,-64,98,126,-20,-49,-104,-126,46,44,-17,-63,-62,-74,-48,-61,-28,67,-99,-25,92,66,-38,73,49,45,92,-69,-26,-91,105,80,-30,48,85,-76,108,-98,-95,-56,102,47,-70,6,-118,-31,-112,60,-62,89,-78,115,-85,4,-1,36,72,-17,-56,-100,-2,-104,-54,24,-56,-92,-60,-106,-115,-53,49,-106,85,33,54,-79,-77,44,47,-120,41,-60,-8,44,-28,5,114,90,42,74,-57,106,-81,79,-67,83,-97,-90,-16,-120,-57,-88,9,34,7,-107,-92,-59,40,71,113,-32,-85,89,89,33,-58,-78,-22,-50,58,96,-19,66,-125,-39,90,-42,25,70,-31,-104,-90,-21,118,98,-111,102,44,-35,-117,60,-62,86,-47,-4,-88,14,46,79,-81,6,-5,101,-12,99,96,43,42,-27,65,-3,-93,-120,112,32,-111,-6,89,105,-67,122,50,57,-126,-54,-46,35,-41,48,0,-98,-22,71,45,-125,81,7,-26,23,118,-60,25,101,-128,-95,117,22,-29,-126,74,86,-53,-39,65,-86,-62,64,-77,-8,-85,90,54,-28,124,-128,-1,-112,105,127,-124,-40,123,63,123,-77,-84,13,-5,53,-46,-31,-74,-36,-16,27,13,-124,-24,-98,-115,-83,101,48,92,13,-5,-98,-111,-10,-51,-40,-115,-81,-82,-52,24,102,98,97,109,107,-1,-46,109,50,40,-48,-23,71,-70,34,-13,-111,43,110,-41,-9,-1,108,37,45,-28,-72,-45,-50,121,9,-66,-4,-10,-86,18,16,-119,64,-36,33,5,-13,-125,93,19,-6,-61,126,48,95,-116,11,-62,125,-6,67,111,-1,-54,2,82,45,-103,-4,19,-66,20,18,48,15,94,-91,33,119,82,-15,-24,116,15,67,30,111,-106,90,80,13,-20,71,66,65,108,124,-104,-94,-124,120,59,-95,-80,16,-101,83,90,14,25,-96,-64,-38,-24,98,-17,-69,108,-89,-29,-30,-11,-101,99,13,53,-56,72,52,105,105,88,2,75,26,23,-13,122,3,-114,71,-29,-70,-9,-98,67,58,-122,87,7,126,-30,111,69,-61,7,11,103,-6,-6,-16,56,-32,23,94,29,-31,-63,-47,67,5,61,110,57,43,54,41,74,28,-65,97,74,-22,-115,-126,0,86,-50,-83,-3,-93,116,5,-29,22,21,-79,-54,34,68,77,-76,-34,84,-116,-31,-102,-13,-55,85,64,-42,44,-115,43,85,100,-60,-104,103,-54,120,-65,-69,44,-102,59,107,81,-79,89,-44,121,-24,70,-110,51,75,76,117,-7,61,110,-102,42,-28,-28,-67,-12,102,-19,-27,18,121,115,-46,68,-81,-124,-110,-33,56,108,-83,30,4,-97,-79,-17,114,88,-86,105,-9,17,0,61,11,101,7,14,58,-100,-38,-42,121,27,119,-48,62,56,94,39,-49,-20,7,26,-99,108,-44,120,87,-2,-117,-78,64,-56,76,-83,-105,26,21,-3,8,81,-74,-100,50,67,9,58,-118,-14,-96,-13,65,27,-122,-73,102,-83,-40,-60,-13,-120,16,51,112,-51,-81,-15,127,-7,100,-116,83,-20,-72,59,121,-39,-43,114,97,55,-9,-53,56,107,45,49,-102,106,-126,-54,59,-44,18,-64,101,-75,62,-123,-70,-110,-17,24,-44,57,-122,104,43,-119,-40,18,-107,-113,25,122,-19,-90,123,74,-35,-86,107,102,-22,-51,56,-14,-100,109,-124,1,35,-85,-16,-124,-65,-21,1,30,55,-75,67,-121,109,-78,-102,82,-23,-94,-60,46,0,-104,-96,6,12,39,101,62,37,-39,-84,-92,48,3,68,34,26,-47,-67,60,25,-2,118,-110,91,77,46,2,103,43,-85,-107,83,-23,-23,-71,-7,-110,42,43,16,-82,57,-55,-52,-102,-32,32,-70,-111,75,116,-11,116,-44,-75,-14,1,-123,-128,31,-85,71,33,-72,78,-102,70,-72,48,-15,60,38,56,79,93,114,-83,75,-6,-78,120,25,-127,112,82,-37,-90,-121,-92,-112,-35,8,119,-32,-35,58,77,-9,109,69,-107,-21,11,-128,-42,-70,48,-30,-23,-78,-81,30,-123,-40,-8,106,-127,9,64,-51,-78,122,95,-109,81,-15,-43,27,118,-92,88,37,-109,-106,52,-8,-62,119,-45,65,73,127,-96,-115,53,-125,46,47,89,115,8,71,70,-40,-107,24,15,-119,-64,115,41,54,-11,-103,-108,-20,6,104,-67,-8,95,102,90,19,15,73,-22,13,-7,55,113,-53,-123,-110,51,40,37,-83,-103,-61,34,59,114,-25,-113,-103,87,-26,-10,-121,88,-65,-79,-63,92,123,-62,31,59,-87,-11,113,31,14,88,25,23,35,-49,-83,-21,-59,53,-72,109,-22,-64,59,89,-104,-42,52,24,-60,62,3,91,7,-21,15,61,-117,-109,-1,65,-39,25,-37,-34,26,-2,-51,62,61,24,-15,50,-32,-48,25,-55,36,24,99,6,94,-25,-84,86,-30,-95,-94,-102,-53,29,65,-81,69,-85,117,65,-7,0,-66,-23,-75,127,-108,62,10,-5,66,-4,29,-59,-82,41,-55,58,9,65,-128,55,-58,-67,-28,123,99,-121,-70,-99,-6,11,122,-108,-18,119,1,78,103,61,121,-104,-68,117,-22,-108,31,64,-68,-68,-96,52,41,58,11,-54,-26,118,14,75,-54,21,60,-119,-66,-19,11,-64,-5,76,-97,-9,81,-126,62,72,-115,64,117,23,65,73,-87,-121,-40,-48,90,-82,73,-91,57,42,-53,54,-11,6,102,-104,-117,0,70,52,-56,103,104,-1,-12,-103,32,59,12,123,-75,-104,-123,16,31,-35,20,55,-116,-109,-44,-50,-63,24,76,35,-116,-29,16,-32,-43,-68,-115,-56,32,109,-34,-9,126,-39,74,-74,-46,-19,-82,-105,-115,32,94,17,105,-103,68,-50,-121,-29,53,-7,74,77,98,-123,-68,37,-8,62,-21,-23,4,-99,-80,-103,45,-58,-2,-95,5,58,35,19,-65,-37,108,-14,35,-90,-53,-123,-5,28,39,-21,17,-38,70,-53,94,30,62,24,34,-74,14,101,20,46,-61,94,125,-121,-122,88,36,-127,-97,-98,80,110,80,14,10,72,8,95,50,4,113,27,54,-124,-117,-48,-39,122,52,8,61,94,40,-69,-34,21,7,-56,-123,-90,24,23,89,57,-87,-97,-16,-80,63,-50,-118,76,-25,-17,24,90,-4,-112,-94,32,58,-32,11,-12,28,48,118,-38,-69,107,61,92,-104,116,-112,-62,55,-110,127,0,-46,-54,17,-57,116,54,-90,-36,114,-39,53,-32,33,-69,72,37,-70,121,-84,60,22,-95,-105,-74,-7,-67,-49,-41,55,98,60,-57,-51,-107,48,31,48,-72,-35,-38,-5,29,-102,65,78,79,71,-8,-113,122,76,90,-55,-31,102,77,-66,107,112,-128,101,122,-83,-62,111,126,-75,101,-55,-118,52,68,-128,115,63,76,32,-6,6,90,100,-109,98,-59,19,109,114,-1,84,-58,79,-52,95,121,-77,114,-52,56,-13,-114,67,91,50,-51,-94,-115,113,-58,-33,56,-92,55,-120,80,-125,-85,126,-114,-126,44,22,-29,-82,113,-92,91,-39,63,-34,-90,43,-21,-3,113,-81,-5,-91,69,-59,120,-126,127,43,66,113,-111,-99,47,-46,-73,-13,55,-7,73,37,110,-76,68,105,13,94,-36,10,108,-127,-76,126,10,100,21,-80,-117,21,-95,-79,94,77,-72,98,-63,24,93,7,-124,25,-15,-62,84,-99,28,-99,-82,113,-65,62,13,-51,-117,115,37,-125,-40,85,-96,70,31,26,-27,2,57,43,-15,-112,-36,-5,-72,106,44,-97,126,111,-31,-89,-66,76,-114,-111,51,120,69,-106,56,-70,1,-54,105,-56,-8,-92,-123,-71,40,-52,-20,-93,-102,-104,76,48,77,-30,76,53,-113,-16,40,88,44,-107,34,53,18,-21,95,123,-115,53,-28,21,47,82,76,-58,-114,-104,22,-97,-90,109,73,7,-108,-30,-96,89,-84,-47,-46,-62,110,25,-128,-54,-75,-62,55,121,42,-62,69,54,25,-75,7,122,87,88,-68,-83,-95,-100,38,-103,-96,74,-57,109,-34,51,72,86,89,120,66,85,18,95,-84,101,-86,15,-32,48,-104,-99,62,115,43,76,-14,76,-92,27,-5,-8,41,-74,-114,50,-77,-97,-67,-109,16,-36,106,-52,85,50,16,-68,-27,-99,-22,-112,122,-15,63,64,23,121,23,54,-31,126,64,76,16,18,-57,-75,97,-94,-23,-94,72,-40,-53,30,-55,87,-63,-13,116,-64,9,-72,11,-45,-90,11,59,110,44,28,-105,62,-80,-27,20,-7,46,45,57,35,5,126,29,-91,77,-65,-60,-56,10,-115,-42,115,-17,-67,34,12,56,39,-119,-20,-66,22,-39,54,-102,108,1,107,-75,14,-104,-127,-87,-17,-88,103,33,-71,-85,-76,23,-95,-94,-102,107,92,-96,61,121,-98,78,-33,-28,33,75,-10,32,-14,-125,-72,-96,-4,10,-65,7,-52,-27,92,-71,100,61,87,45,9,-43,110,-52,-70,19,45,-110,-66,-74,91,-126,-27,106,-110,58,114,-86,-52,-77,-63,-50,-65,67,-54,33,116,37,64,49,-7,76,-115,22,-124,-105,50,19,-126,81,86,124,-37,-5,-48,19,32,-65,-21,80,-93,-124,-23,-25,24,16,97,65,51,29,56,-79,-117,80,-50,14,-77,-23,87,96,-52,125,49,2,55,13,61,107,-106,93,-116,102,-37,-11,-23,-119,53,-43,-39,-86,-96,0,19,13,15,15,112,24,-73,76,79,-76,99,-127,90,-18,119,63,3,-29,111,38,34,-66,-34,111,31,-29,24,-95,-70,5,65,-15,86,-43,16,76,-127,-120,6,21,-29,97,-31,53,-57,-39,83,-117,-48,-99,126,38,56,-78,67,-18,43,72,-96,100,-37,109,-92,89,94,-88,36,121,112,-33,-69,-42,-99,112,-80,116,-42,49,20,5,124,26,26,-32,-118,-28,22,65,13,-105,81,-98,124,40,-76,52,-104,97,59,82,96,-99,-46,-27,-74,-125,-36,64,-31,114,-83,-28,-61,81,8,-81,-49,42,48,36,-81,12,-80,68,83,38,-115,-46,93,-86,62,-56,-52,-36,7,-88,-85,-80,38,5,-106,-8,-125,-94,-81,123,122,21,-112,45,-37,116,81,48,93,-122,32,-120,-28,48,-85,-99,-47,50,-67,-109,-14,78,-79,10,56,-98,41,-22,10,-20,74,94,-120,-30,110,50,86,74,91,51,43,-86,-44,11,65,-11,127,-97,-31,-24,119,-16,-66,-73,87,-95,-64,109,98,-127,-30,45,24,-11,54,61,76,109,126,24,45,-1,64,-24,-28,28,114,-113,-32,-103,122,-125,95,102,-7,-33,-25,-28,-7,-101,63,109,-9,111,-45,73,-41,-111,-48,-70,-113,-40,28,-32,-95,-41,76,33,-53,-112,-106,75,71,117,-94,81,19,19,53,96,125,-9,-82,40,85,6,65,36,-91,68,59,9,91,65,-67,-34,65,121,125,-25,-107,-38,-106,-122,20,-83,109,45,-103,122,-31,-42,-42,84,23,-57,49,-69,27,41,78,-116,3,-65,59,-28,-52,-101,-91,-29,-29,37,113,86,119,-51,-19,-104,-84,42,90,-113,125,-32,37,65,-21,119,126,11,-13,-37,59,-49,-80,60,90,-114,7,-117,-84,-22,-50,4,58,69,-93,106,-77,110,-46,125,78,93,-124,-20,-42,73,75,-60,-59,-52,80,-5,6,-105,-14,-58,-59,-72,34,59,-46,-96,-102,76,105,-8,-49,-79,-81,-47,-94,93,-100,77,-119,-115,-102,-115,-68,69,-126,107,-86,-103,91,83,-26,-42,73,-84,-54,5,-85,-104,-61,-28,22,100,-71,-126,-43,97,-128,38,88,41,112,94,-84,39,-55,-119,36,-115,60,107,87,1,-45,-114,-9,-80,88,-105,-67,-91,90,-111,-96,95,-113,-103,-24,-70,91,-113,-70,-122,-83,-92,-20,121,117,37,-105,-10,126,82,81,89,-2,-118,36,-21,-9,-85,124,-103,65,-6,118,-45,-33,-5,-113,122,124,87,58,-30,-47,-43,54,-10,-116,88,-17,44,29,94,-106,-59,41,54,-86,101,98,-116,106,-12,-12,95,13,-29,-103,72,55,-73,6,122,-106,124,79,54,-93,17,7,-101,69,-72,-102,-43,31,71,-44,92,37,28,-104,127,54,-7,-50,-74,-35,-125,-16,-119,28,-17,-44,122,63,117,92,-23,82,14,-28,122,-38,-90,26,88,-74,22,127,115,111,-128,61,-41,-104,-9,31,112,37,29,53,-3,58,52,-27,66,-76,-73,27,78,92,-33,-125,39,110,95,-96,-61,-125,-16,80,-107,101,44,63,114,47,-101,-47,124,21,-31,-99,-57,24,46,-24,18,121,-104,68,-113,37,-76,-71,102,-10,59,-124,112,123,121,91,78,-17,-14,32,-82,49,2,102,-47,-83,-30,-19,-3,67,-50,-42,41,-92,-21,-72,117,-111,-74,97,26,-26,18,-78,104,41,67,48,122,108,-19,105,64,-111,-45,-45,43,-80,-66,115,84,81,-36,-31,59,60,28,-10,125,72,30,-64,105,52,45,-74,11,38,-16,-118,-3,-46,98,-77,40,70,-69,-114,-77,-70,60,123,83,-102,-80,42,100,109,81,-77,115,7,-127,-87,-22,-48,8,57,-72,-41,-41,-9,3,-54,80,-30,103,-54,-16,118,105,-37,-87,22,71,-48,-33,121,62,-90,116,66,-38,-105,22,19,-21,-41,83,112,-39,-28,-81,-109,31,-125,-95,-1,54,-84,72,-108,112,89,-114,120,-73,110,20,-55,-126,-93,-58,68,-105,-107,65,122,8,-103,121,-97,61,-74,97,99,-65,1,46,7,57,69,-122,100,-112,94,-94,116,23,85,106,-105,79,-108,-128,39,-111,83,-87,-66,112,-102,24,-7,-72,-78,-97,-8,99,-113,-114,79,115,-51,89,-88,83,-90,28,56,113,-102,57,40,-104,-76,89,-8,38,-5,-67,-9,-18,38,-121,27,-25,-110,-29,3,-10,123,16,-40,-93,-36,116,-20,-73,-111,-18,87,-123,120,113,-121,-97,-47,69,105,-68,-97,-111,-53,-94,114,-81,77,92,-37,46,-80,-18,-9,108,-69,-25,-46,27,-101,-86,54,53,-109,-44,85,-11,-61,-87,34,-17,-25,79,-46,101,-22,-30,85,99,-65,-30,117,12,-80,-23,-16,54,106,-89,-120,-29,64,1,-94,-111,-75,82,-3,68,120,11,-103,-52,87,22,-46,-17,-117,-63,12,112,-123,-52,-121,71,-122,-55,101,-125,-41,105,-53,52,-9,60,-3,56,-1,85,15,-112,127,70,-7,4,48,-72,-29,34,11,-103,-46,114,56,-109,-32,17,9,89,-1,114,92,86,11,-55,-87,-80,-18,53,-4,42,86,-90,15,-50,120,49,-46,22,57,67,-59,90,110,-97,96,119,100,43,-90,-54,81,-89,21,-80,64,-14,-47,126,92,-17,-37,51,121,40,-34,110,-54,-99,36,-73,-43,85,52,-30,121,-9,-18,-51,91,102,-116,-71,86,95,-55,95,-35,74,118,101,-114,87,20,-48,-60,117,-76,55,-108,49,74,-22,20,-43,41,79,114,-96,-12,-68,43,-44,126,-28,83,19,111,-128,-19,102,-110,56,-77,71,89,17,-26,-16,32,-27,-14,-127,-37,62,-107,-34,126,110,74,104,6,85,8,79,-74,107,126,30,-52,80,29,-11,108,65,29,-128,109,-2,59,123,28,-107,62,110,110,-123,71,-68,-39,-20,-108,-57,38,-36,-12,126,100,112,-32,-103,55,98,-82,-5,89,-41,36,88,-92,99,118,-56,97,12,-16,113,88,71,-96,76,-77,117,60,-5,-84,23,-41,45,31,46,0,33,-3,69,4,38,-119,-20,96,-115,-50,28,-38,-9,85,-113,36,-106,3,-96,-23,-80,7,-19,-111,101,92,-107,116,-9,53,-120,-3,5,-13,-87,-115,1,-35,-125,-23,-89,19,53,117,69,-67,-107,-122,-33,-32,-10,-122,-69,75,-116,-35,-69,43,-74,109,-107,18,107,-48,-85,52,-38,50,83,115,-101,5,-39,62,-7,99,-46,97,44,78,31,27,105,-72,-117,-94,-69,-86,108,-59,-30,-48,49,-22,-124,-114,-2,-19,-126,-122,-29,-21,67,60,15,-111,-55,-22,35,81,37,-75,32,0,56,47,-18,108,41,-120,0,122,-4,51,95,-68,-20,125,78,77,119,-115,-9,109,59,-128,79,-124,-114,7,9,91,-8,11,-80,-112,29,-56,-32,11,-50,29,-82,74,-19,-6,-55,12,-115,18,-6,15,-123,-15,72,-62,12,43,1,82,-30,2,-17,26,-30,58,-85,63,-56,-100,-117,52,-90,-69,7,-26,121,111,-92,5,-61,-90,96,63,-18,60,-11,-52,-81,125,99,25,67,82,-71,110,97,122,51,39,33,93,28,-116,123,48,-107,-64,-9,-31,92,-62,-68,-103,-102,-107,48,-2,-100,83,127,41,-82,-105,-7,113,-120,10,58,-122,23,84,-18,20,-37,-82,11,46,42,-95,16,-58,-105,-78,62,-57,-82,39,-18,0,106,52,-51,36,-59,76,98,-108,124,-67,-40,-3,73,19,45,121,-45,20,76,-21,0,-57,46,-18,90,79,66,-56,-42,-47,-39,90,-120,79,103,34,-104,-30,-67,94,120,35,59,-41,25,-128,125,88,88,68,-48,-47,-25,-10,-12,92,125,20,-99,66,55,118,-42,46,114,67,-9,37,43,119,-84,79,-8,-21,123,48,82,76,-63,-23,-17,27,-108,97,53,95,-109,68,41,-50,-32,-119,-20,-71,80,-9,-57,-16,-4,17,-36,66,19,-113,82,-76,39,-128,23,47,9,30,-87,-35,-48,96,100,15,-4,-86,-58,-10,-1,83,-52,17,-102,37,-88,-13,-2,-23,-92,-52,-89,-33,-112,-47,60,122,28,-101,-99,92,-67,-88,77,101,118,-96,-123,-108,-108,-43,102,44,45,-48,84,-25,110,-74,86,-7,50,-109,-9,59,-92,-67,79,23,29,53,-57,-89,73,9,1,65,81,17,31,8,-107,92,126,-119,53,52,98,-126,60,-82,15,-15,79,110,111,22,-82,88,-110,-49,-113,-124,-127,-51,88,-48,-87,-17,-55,62,45,41,64,-111,-95,-122,-46,-91,116,-55,-125,103,75,95,-29,-56,29,-36,-115,-41,-56,-100,88,-81,-33,29,-81,-11,-90,77,-17,-10,-127,-6,-121,30,-4,30,-24,-124,109,67,112,25,-57,34,4,79,126,-109,126,-47,-101,-9,-38,117,-76,-43,37,-120,-86,85,54,-70,56,-15,39,-40,-80,3,26,-64,-45,-69,-35,-120,70,24,-97,-29,-53,19,69,-113,-112,-78,-53,-106,-74,-61,94,78,-57,97,-58,46,58,-21,62,-121,-97,-16,-38,35,35,-127,-120,125,2,54,-30,-44,-17,30,9,-20,30,117,-53,52,29,95,-92,16,60,-29,102,54,-66,122,-110,10,-113,68,-78,-120,-71,111,-96,-37,9,-11,39,111,-52,107,-25,-77,-9,81,28,0,-55,43,-98,-97,-37,-123,69,-4,23,-98,102,106,-11,-42,98,5,115,-121,-84,-86,-78,-69,11,34,-115,-94,3,-104,-9,51,-38,-113,29,-39,83,86,54,-116,-27,-108,61,10,27,-44,65,-91,-86,34,-40,99,38,-14,101,126,-82,-56,-8,37,-102,-52,102,126,-36,74,95,113,-83,-37,-66,-20,-55,-98,-115,-49,96,-44,-123,20,-1,75,-2,10,-90,-61,107,87,94,-63,74,-55,0,2,41,-123,-103,-85,-13,-107,-39,36,-47,6,-21,-70,98,78,-119,52,26,8,-40,72,117,115,-78,76,-57,-60,43,-25,-87,83,36,54,127,-78,127,19,98,125,-30,86,121,62,124,-32,-96,20,-110,97,-126,13,-104,6,-122,36,-105,55,105,-48,-121,-83,0,18,-113,-114,-39,20,9,-20,-23,-49,-115,83,-107,70,121,-30,86,-48,31,-23,125,-114,-67,48,-86,-90,21,83,-79,-107,64,-60,-91,69,54,-73,-77,99,88,-10,15,57,-29,-128,-47,101,-96,-50,112,-85,120,-16,-78,7,27,116,-128,-11,18,49,-19,-33,41,15,-35,84,-67,-15,-57,-73,36,41,15,9,77,83,39,27,-54,-82,33,4,115,-60,101,-117,46,-56,-18,100,74,126,-27,-25,-48,10,-51,-41,126,-81,-95,9,-60,85,99,80,-6,-16,27,108,77,44,46,114,-26,20,-69,15,92,98,107,-59,-114,-87,28,-121,-61,84,125,-125,-44,-13,116,-120,-55,94,-84,-86,-75,34,1,121,-25,-80,26,43,-97,-12,31,-58,75,84,2,-109,12,-61,-68,110,-21,92,-27,13,-117,36,21,107,-3,-125,80,87,45,-108,22,-61,41,75,-115,29,-29,33,-111,-4,-22,-94,8,24,97,-124,25,-52,25,-7,-74,-36,108,-114,12,3,-32,84,75,34,-60,-88,-10,96,84,12,17,114,-119,-41,41,-48,-3,-16,1,21,-14,-115,-11,-25,96,-36,10,-71,-14,-3,-83,6,85,-91,-18,-108,81,36,-33,70,-59,-80,-81,-31,11,19,74,-22,107,91,8,57,29,-95,-80,61,-40,-82,-110,97,122,-114,-102,-77,123,83,122,46,-24,-121,-28,111,18,-47,-35,-102,-120,114,-93,22,115,-82,113,77,-78,76,-66,65,117,28,86,82,27,79,-128,119,-88,63,-31,11,87,124,-10,-71,-99,94,-89,-82,76,-124,101,-53,58,-74,9,-50,-114,31,-3,-119,-51,57,-29,92,-75,113,-47,-103,40,-81,-43,-100,-12,-102,4,12,-36,-26,-70,27,-118,-88,50,-73,28,-113,-94,122,-1,4,-57,124,-126,100,70,-87,62,7,-91,-91,100,-102,-56,102,34,118,44,-90,-47,24,-32,30,-99,-98,36,113,-124,11,-126,-84,-15,72,117,3,-46,-18,97,-73,-38,24,-47,-4,109,-50,-86,-112,88,-97,-65,-73,112,72,-37,-125,20,-29,-43,-2,51,-16,94,58,119,-101,-48,121,-116,94,103,52,64,48,51,-70,-113,106,41,82,-44,111,-106,-62,71,-105,-66,78,-78,71,115,-50,-123,4,33,88,22,-40,-111,-46,-82,-34,-67,-58,120,-28,-18,-52,-126,-31,-109,11,84,-94,10,-15,94,-89,-106,125,-62,-6,98,62,-39,-11,-34,12,12,-18,-50,-78,-60,43,104,50,36,-62,-58,-36,-14,-104,-88,78,21,-18,43,-118,-124,-68,-35,-62,52,102,18,87,25,-106,-78,29,74,127,98,-2,-99,-86,37,80,6,-31,86,112,77,-51,121,-126,70,7,35,3,-85,-24,-78,114,-109,-25,-58,120,-127,-78,26,-100,8,-116,10,-20,-23,14,-18,120,42,-75,79,44,60,-58,102,69,-104,25,119,103,28,-70,22,26,25,124,3,-15,-11,10,87,-23,120,-68,-44,93,7,9,-8,-15,125,-79,-70,15,108,-66,-90,-5,-82,-14,115,-75,-122,74,127,108,-100,4,58,-106,66,-117,1,11,6,-69,-96,-65,55,-8,102,-41,-72,75,76,16,-2,-10,78,59,-42,-72,-1,-31,-100,113,26,-66,48,-4,103,57,71,-94,-2,14,-28,-36,22,-8,-25,39,-51,25,99,91,70,63,11,-124,69,46,-34,-21,99,-70,-110,-90,32,116,34,-74,82,43,-104,-56,31,-117,-43,67,12,-72,115,-84,-62,-9,21,-30,105,82,94,86,12,40,-47,-39,40,-114,-67,-89,-72,-64,-62,-124,-105,32,95,-124,-41,-14,48,26,8,-116,-57,24,-45,-45,-75,-40,-111,-118,107,116,66,-97,-57,-79,-96,-85,-55,49,-55,-32,-87,-76,-12,42,-85,85,-16,75,-41,-112,49,-29,-28,-124,-10,-60,62,-2,-112,15,-36,-33,81,-95,117,120,51,99,-64,30,11,106,-21,-42,43,-59,51,117,12,45,3,-116,110,88,104,60,67,102,-74,108,80,-58,-108,28,38,-108,16,63,100,-24,-36,-1,70,97,7,32,118,-112,-122,-31,-36,106,10,115,-89,35,58,-15,-5,63,19,-123,-99,-11,-94,108,-18,-13,70,-12,-1,126,-15,-9,-25,113,111,66,-59,81,-88,-114,97,-121,-76,16,8,72,62,3,-107,106,-43,92,-91,63,60,-90,-61,96,-9,93,-24,-17,-22,38,-24,29,-27,-36,-25,117,99,-10,76,66,-77,-71,33,-87,100,48,-13,-122,-49,56,-104,72,72,-84,103,72,115,-10,45,19,-22,52,-97,-77,-107,50,-81,-93,-79,102,-71,46,73,6,-21,-52,5,-96,32,112,15,-44,-4,110,5,-26,-85,89,-87,35,73,-17,59,-95,-5,-123,94,127,-83,9,-122,-64,-58,-72,-111,33,-91,-82,56,63,1,6,-67,-106,-55,26,-12,-105,-32,115,-38,-95,118,117,67,-17,95,99,120,-75,2,28,-113,-105,117,-15,111,22,-46,116,25,-91,40,44,84,37,-4,-66,-125,15,69,-14,49,-12,-11,87,-68,20,91,110,117,125,-65,-34,-36,84,-29,-87,-27,60,-66,-118,-125,49,69,81,54,7,-119,53,-23,-60,-9,22,-116,-125,-58} + +#define IP4_WEIGHT_Q15 {18,-12,-44,78,104,-34,61,92,-120,-75,40,-19,29,-80,-56,21,60,-92,107,-118,58,-104,94,47,62,106,11,-105,-6,-20,-32,24,43,43,-116,48,53,-86,-50,-38,-108,-80,0,-73,-5,115,-26,111,78,76,-101,-55,94,39,-61,118,94,13,-20,-81,100,70,-111,94,-125,63,71,-121,-70,-69,-14,-74,54,-121,60,107,-121,-106,51,-38,-61,26,110,103,-43,94,-116,111,60,-125,-28,88,83,120,62,-39,-79,112,-85,34,121,-93,-121,97,-45,-97,-90,12,-97,90,109,-45,-59,-100,-105,-21,0,-26,-122,-37,28,35,-10,-115,-87,6,-62,108,-15,26,118,-84,-26,1,-74,73,-41,-65,97,86,94,67,34,59,-99,106,-67,-80,-26,-71,-21,-20,115,109,-43,-107,-21,64,37,-2,-20,-75,115,108,53,35,-102,45,83,-106,-49,-59,-46,-102,121,-41,51,-55,22,19,-58,-103,-116,80,25,-126,122,-76,-7,-34,-2,110,15,-46,82,-16,15,-19,-52,-39,-73,62,93,67,117,-27,62,-12,-89,-15,-100,-57,59,20,-127,52,-37,-79,-41,-43,111,-31,99,13,-12,43,99,-1,-31,43,124,-15,-30,120,-69,-79,-36,-19,-89,89,46,116,54,-46,49,94,85,67,113,11,24,-59,-17,119,-119,110,-57,-81,-1,77,32,118,-38,-13,113,-53,-94,111,110,-19,-14,-53,4,117,-20,-35,121,24,-97,119,18,-31,108,54,30,-74,-121,16,101,65,3,107,-12,-38,14,-53,125,60,-59,17,52,21,-65,-118,76,91,-112,106,-38,98,26,-4,-53,-63,-108,95,-58,63,19,111,-74,73,37,63,-115,-84,-44,22,-47,-51,60,9,29,22,-57,81,-87,-27,-65,-63,-93,63,110,-26,-126,-12,7,-118,-127,-113,-70,45,107,103,-69,-48,56,25,55,-55,79,113,111,120,-2,43,108,-122,-41,93,40,44,88,107,-78,-34,124,122,63,-67,29,14,24,-69,-72,67,108,26,116,88,90,-48,93,-103,-37,127,-24,115,-76,-80,-97,-61,96,-54,-22,-14,-123,-49,62,-17,-1,21,-65,116,10,113,10,30,88,-24,-119,-95,89,58,124,-119,-112,-115,88,57,119,68,-17,31,-27,-9,-64,18,-26,109,-60,4,59,-89,-127,8,-35,-90,88,-76,22,109,-123,-51,88,-90,18,25,45,47,-80,75,-66,-24,-109,-47,-42,68,-8,-98,78,-122,19,33,-72,94,2,-109,-84,82,102,71,55,-121,19,76,76,93,66,-42,-23,-2,40,3,106,123,-111,8,83,105,117,121,-52,2,-4,-18,-4,-19,-125,38,80,83,25,-64,123,47,36,105,29,-71,-72,-127,-41,-82,31,3,-43,9,73,124,91,-3,-99,-27,101,77,-51,-96,60,15,74,54,35,-119,116,53,-4,46,-29,8,2,93,75,-18,38,49,40,30,-30,22,97,97,-8,-35,-111,21,-62,97,-96,-12,82,28,-118,87,-12,29,-16,46,110,8,95,58,40,41,29,105,-58,-108,-29,-117,36,106,-118,11,-124,60,84,-83,-87,21,53,-31,125,-5,114,-75,93,-41,-127,-98,49,31,96,64,-112,60,-126,2,69,-73,94,-23,-100,81,-115,-116,94,-25,-44,46,91,-89,12,-47,75,107,-77,-82,-10,79,-70,-106,75,-1,62,104,-69,-7,-41,73,53,-32,74,26,-113,111,-115,-55,66,20,-91,7,-47,51,-96,126,121,-75,63,81,-23,14,-124,-41,-39,-13,14,-27,16,-56,-48,-43,-84,120,33,41,98,26,-6,18,15,8,31,-9,-50,121,-107,-106,-33,-46,64,-19,127,-104,-59,86,-30,-121,60,-79,39,-38,-5,85,-119,-17,21,-120,44,-22,89,-17,73,-102,49,26,-73,-69,91,-71,-36,103,63,-8,125,61,103,-116,-20,11,105,-116,15,-78,-122,-80,-62,-80,-58,65,-119,-47,99,-26,-111,69,87,-38,-15,-44,-87,-14,-84,-37,-27,109,-90,-72,-4,-110,38,82,-97,-50,29,61,52,-44,-87,8,63,83,92,109,-124,-47,69,-110,-70,111,-10,25,15,104,80,66,32,-70,-16,-49,-52,-16,-41,122,104,22,-31,-109,18,62,102,125,-123,74,121,5,92,-92,-90,72,-61,98,-2,-125,-81,101,109,-120,60,58,10,53,94,38,-25,-56,-13,-80,80,-13,45,-77,-43,-44,-37,-62,46,38,-103,-124,-93,48,76,-82,1,73,74,67,63,-59,-26,76,116,66,70,-113,-30,106,109,25,75,-18,25,25,85,-83,81,78,-50,99,-53,-125,-68,44,-104,96,-44,-126,124,33,112,-75,-29,-9,-60,-126,-84,-119,-61,-127,-6,-46,-26,-57,118,105,-4,21,-120,54,-121,-35,-70,-101,-124,-79,-33,-30,105,57,-108,-48,-111,-65,-108,41,77,112,111,118,68,0,22,110,44,56,-91,-49,-111,62,-54,78,83,66,38,102,-14,41,52,14,-94,106,105,24,27,53,-40,-70,60,-119,56,-95,68,69,59,-101,-124,-25,-119,-45,102,-55,-38,61,57,104,-96,88,122,99,-122,77,106,122,33,126,-5,-74,46,116,-52,-51,-101,74,74,2,-3,-21,-38,68,-30,17,96,71,-124,-23,47,64,-35,24,107,49,41,-50,-23,88,19,55,-30,-91,3,-54,-14,125,10,84,-96,100,100,67,-116,-40,-124,2,53,-62,45,72,21,82,10,-47,-126,54,-84,-50,13,-2,-66,-1,103,96,-17,123,59,-111,-61,-70,-20,-57,54,-94,-110,-125,3,-101,14,-128,-86,80,-44,-94,37,113,123,-104,-9,-87,109,111,120,33,-7,-62,-51,-57,49,-71,3,18,-49,-94,-32,-92,40,-52,3,52,105,108,123,40,1,2,-86,38,-104,52,-93,-44,-73,-62,91,-88,5,-91,-61,-24,-40,-30,-48,-115,114,62,-128,-85,-93,-43,104,-20,102,-103,-52,-56,25,-103,49,-25,10,84,-52,51,-94,-110,26,-108,1,30,32,-23,126,-112,-82,86,-102,-17,-108,-32,78,32,80,-125,-112,91,8,-69,24,-95,-86,-73,-115,14,9,-2,-121,101,-109,-72,1,54,84,-36,25,95,-49,108,-110,4,24,126,66,-63,56,-8,99,-10,-80,-73,5,72,-103,-10,-35,78,3,42,-61,-83,-115,-99,84,78,20,30,-66,-88,97,-120,-66,120,-46,-29,-57,118,15,-94,-110,-29,25,89,113,-110,-52,90,-92,105,-30,48,92,-44,-1,-39,-96,118,115,37,-3,15,-1,-2,64,81,57,-47,24,-14,89,-103,48,-127,-95,-100,-114,14,-69,-82,-32,-9,-77,-38,33,-76,-63,-32,51,69,-8,26,-75,80,59,101,-31,40,-37,-23,76,-110,-23,-83,-84,111,-31,124,122,-56,-67,-112,4,-123,65,67,101,12,-23,-12,-43,54,-87,35,66,-89,-47,-105,55,100,19,-80,21,-76,-85,-117,-61,19,107,-71,42,86,-9,-80,33,-65,120,106,-49,77,-34,-38,-50,-27,21,-28,65,97,108,-77,42,120,69,24,127,-20,89,112,-66,-126,-110,103,43,0,-63,28,-17,36,-43,-68,-117,115,-69,70,107,2,94,95,9,-83,-99,47,53,80,-105,28,-27,119,59,82,95,-94,-16,-49,15,-122,16,-89,17,64,-6,88,4,21,47,-78,50,-25,121,-36,-47,72,-21,-101,29,9,-83,28,-113,-68,23,115,-67,-101,-101,102,-98,-124,-98,-89,-24,82,-28,40,-89,125,23,83,97,-53,-7,-108,-90,-83,-113,-26,-58,-119,28,97,35,-74,6,-15,-40,-10,11,-98,79,101,101,-72,8,-99,117,80,-65,127,95,15,60,-29,2,-92,60,-118,-116,46,79,-79,-62,-43,104,73,107,117,-43,-127,-67,113,44,-41,67,-98,-73,26,74,59,-111,79,45,21,-60,-26,18,-72,54,-70,-30,10,114,-82,-124,-126,-52,-97,108,120,-19,-111,-52,102,10,18,99,49,-128,-17,91,-46,83,-76,-3,-41,45,47,-72,3,-19,112,-104,122,14,-77,-35,-23,121,41,-123,-2,-60,50,44,84,-45,69,-58,-69,43,-98,-11,-17,112,-95,-36,-69,67,-52,-11,-45,98,-126,-33,81,51,101,-38,67,68,-37,-78,12,107,105,75,-100,-109,-55,0,11,45,-24,3,54,-70,77,-63,125,52,93,-16,-22,-97,35,97,58,46,-61,66,-98,-61,12,-43,-63,-45,-36,-79,41,-58,54,-49,48,-63,-33,-110,-49,-36,93,73,-78,-33,50,-76,-6,-48,4,-87,-88,-81,-30,-33,-109,10,104,-94,94,38,-124,30,6,102,37,97,56,73,-106,-18,84,70,4,-31,-27,-90,54,63,50,10,-18,-113,125,-116,-86,-119,64,33,26,-128,-25,-77,76,-127,-79,0,60,-65,5,-63,-5,101,-91,69,-49,67,71,121,-22,59,-87,26,66,-26,7,-79,-73,-51,0,-114,-22,40,-115,-87,29,-18,-23,-72,-96,-55,-119,69,68,-102,-99,124,16,74,-34,5,87,120,-28,-6,-92,-111,-42,-85,-36,123,-86,-52,83,-77,-15,43,124,59,-81,103,96,-80,41,0,-62,-22,-13,77,-99,71,-121,104,72,43,107,4,80,-62,54,-98,-63,-13,-92,10,-119,-95,-76,-90,76,78,95,-108,-117,122,-115,88,52,-10,26,122,39,101,-80,12,107,-108,36,-13,-72,36,82,63,119,-57,-44,-7,77,-55,-25,-54,102,-118,-93,-91,58,11,11,-30,80,-62,-77,111,3,105,39,-63,-50,-33,-6,29,52,-98,-80,51,-5,-50,-122,93,116,-77,-45,79,110,-103,-20,-123,-16,-58,93,-101,-11,57,24,44,-60,-118,64,32,80,3,-25,107,60,126,124,-90,-22,-95,-91,-57,83,-46,1,-28,78,-47,74,15,42,26,113,42,-76,14,20,33,-93,37,107,89,-22,16,23,-16,60,108,-117,74,111,52,78,-97,53,-127,123,9,-78,-15,-17,86,5,-17,-120,28,-76,69,13,-76,120,-64,-35,-17,20,-98,126,-42,-88,-99,10,-113,44,84,115,-35,18,81,2,99,-82,74,-125,12,110,55,-110,31,-94,23,62,-4,-62,-122,-120,40,42,110,34,84,2,-3,-24,-75,-10,124,-38,-46,-14,-11,109,57,27,111,6,-99,27,126,72,41,-29,106,-24,96,96,60,-18,42,-104,82,53,-69,15,92,-79,127,-70,-102,-53,102,79,32,84,-119,115,-36,7,-84,-24,2,103,-77,54,60,1,-7,-64,-7,-22,114,-5,19,80,-49,107,-7,-2,89,-63,-26,-111,-51,17,-108,-40,9,-51,58,108,-55,-68,-117,99,-51,-117,-17,46,-33,69,13,-23,4,-71,-110,4,-95,119,103,-30,31,23,76,39,-36,6,-117,76,6,80,106,18,-124,-3,78,112,3,40,23,-55,-100,75,-118,-16,-52,18,69,-77,-91,126,-87,41,103,-127,7,105,106,77,-23,72,50,75,-16,-19,126,112,67,-4,-102,-56,53,38,-72,-60,-69,30,0,47,-95,100,53,-127,-16,-18,-16,29,46,73,90,-112,-97,-111,-15,-38,23,44,45,115,-93,-68,-32,-10,86,19,69,32,-104,-112,97,60,64,87,61,69,55,-92,-4,-77,-28,76,-82,56,123,52,-105,-38,-1,81,80,-40,-14,-78,115,32,-59,-123,-115,50,3,69,-14,5,-39,70,-124,34,61,-35,-57,34,127,-120,-13,109,-108,68,-22,-125,81,89,35,-21,88,87,107,-32,110,-27,-19,-82,-114,-81,99,115,-54,-92,90,65,-126,26,64,-114,36,70,-93,10,-94,-111,-90,118,-45,-3,-121,106,80,10,-101,-25,-12,-72,39,114,47,43,125,33,88,-109,-81,10,98,28,-98,105,96,123,-43,-58,-115,-122,-88,85,-80,26,91,-26,103,-88,-121,-66,101,87,-88,125,20,-58,-62,-46,-113,-100,-36,93,79,33,-108,49,-45,0,-19,70,103,-48,-19,-15,29,122,40,121,118,102,86,-83,111,-86,-26,-124,6,86,49,50,-67,-104,-28,-28,35,52,42,-25,-87,-6,-70,18,126,123,-128,-3,-109,-49,-94,-120,-62,62,-89,-107,94,110,109,10,-37,-126,99,-116,-85,113,100,-19,-52,65,-101,-45,93,-49,96,-78,84,28,-44,5,-110,-48,-26,62,127,49,-53,57,67,-85,127,60,120,-67,-96,107,34,-60,91,-6,-80,-8,-77,-119,50,89,-52,-64,96,-60,127,-76,-34,-1,-52,34,-25,100,99,-94,-46,12,-47,47,-47,-14,45,59,3,-74,-85,-49,103,-79,-6,-1,-25,0,-2,-44,-29,-11,6,108,-23,-48,91,56,75,-77,-71,-46,-100,-98,-100,90,-29,-56,-35,-3,54,-126,-62,124,1,-88,-26,4,101,95,-113,-67,75,39,104,-106,68,127,-127,-15,-36,-12,23,-51,-118,-22,-67,-39,-71,-77,52,104,9,-106,10,53,34,-98,-67,-74,84,95,87,38,-35,-103,-38,-125,-124,-31,41,3,-89,-41,-107,-9,-90,-39,-58,83,-106,-86,-24,-93,18,23,14,36,-56,-36,75,-123,10,7,109,13,-119,113,80,-68,45,35,57,32,-17,-1,28,-98,52,6,-37,-97,118,48,-119,-69,-102,37,-18,-4,-59,101,15,91,40,-31,3,5,-9,105,-9,-33,-31,-7,-71,-112,-71,-2,70,98,46,73,-99,42,-77,53,-38,48,-1,-120,76,-33,-62,-35,117,67,-117,33,58,2,-127,-100,-66,-117,-82,91,115,-111,33,24,-125,-89,76,84,15,27,-5,-87,49,-72,-35,-128,-49,114,65,82,-71,127,100,41,74,-63,52,0,-67,8,117,-102,5,123,87,-37,8,36,126,71,-108,-73,20,104,-76,-71,-50,18,-56,8,-62,-52,-105,-127,41,16,-26,-122,31,11,70,-100,-109,117,-35,88,29,-45,-78,115,-86,102,40,18,-58,-54,-84,32,-36,56,51,52,107,126,38,78,-66,-77,20,65,-119,-113,26,85,-92,-67,-35,-24,-47,-9,43,62,-70,-66,-41,-7,-72,-77,-79,56,75,49,67,65,43,102,-78,113,98,53,-47,20,-116,-4,-2,-12,-36,50,8,-118,-79,-120,-37,4,103,62,51,107,-90,79,49,-17,61,-15,36,17,-117,39,123,-87,61,11,96,-108,1,53,51,36,-19,-51,-69,-40,-91,127,-90,-62,126,79,-72,-61,123,41,-27,11,14,76,-67,-17,-70,-104,47,73,32,-120,-109,61,38,31,-1,-37,35,-21,-26,59,-53,-85,18,75,106,93,-83,-31,-18,-127,18,19,66,-74,10,-25,45,18,-109,30,4,13,-62,-47,13,-59,44,-96,19,-18,-113,65,-5,-75,91,-21,68,-90,46,25,-110,1,-115,-88,-91,55,13,86,24,-60,85,108,93,27,-61,-14,28,-110,-17,-18,68,70,113,-52,58,-9,52,111,-64,-97,64,-100,0,43,32,-88,13,-32,0,110,-104,92,108,66,-112,65,34,-64,-125,106,-9,113,-116,91,-35,-88,-91,-16,13,-117,3,37,121,-84,-75,-1,-44,-49,13,-77,81,46,113,-115,15,-37,21,-17,33,-19,-83,-95,27,28,83,53,22,-23,66,-25,-57,-15,-56,69,106,49,63,-120,125,106,-86,55,40,4,-96,-26,43,60,-107,-116,-76,-89,101,51,98,-21,106,-49,53,110,83,27,-119,36,2,-5,86,-50,47,-75,42,52,-59,63,-71,-67,60,83,6,65,124,16,28,14,63,-58,52,23,30,-81,49,-123,-26,42,-39,60,-27,-61,-66,-18,-88,-22,-46,-61,-60,65,66,-100,111,116,100,50,92,103,-83,111,-72,-5,116,111,72,39,101,54,-65,-44,8,-128,-88,113,18,-70,-78,-70,87,29,112,-31,63,9,12,-109,-27,-42,-52,55,-48,-70,95,-71,93,122,-46,53,-115,-22,-27,125,125,50,-58,-50,21,-71,9,-6,-82,45,50,51,-14,-74,-72,104,95,-86,57,65,-39,6,-10,21,-76,-52,127,-128,17,-36,-23,87,103,24,-95,95,10,95,21,61,-96,-24,-8,0,74,126,-14,-102,-44,107,-119,83,-123,51,27,-64,-17,124,24,-96,79,118,43,8,-95,-75,-106,-84,115,69,3,-118,122,-64,96,-29,-106,-78,-97,-82,122,51,14,-80,65,121,-66,-119,74,121,82,-120,77,96,-82,56,106,-45,-28,-116,78,-70,-13,90,41,-77,-55,-78,-49,91,-109,-36,-91,97,-31,95,27,-91,-116,-21,-17,87,112,-82,-51,62,-42,64,111,106,68,92,53,-68,-38,-55,-25,-38,-121,74,5,-96,-77,-14,-109,-87,75,-62,-108,12,-97,93,-91,42,24,-5,-45,79,126,-10,-71,-97,97,6,-19,-80,77,39,-111,-69,42,-123,-61,-30,-78,64,18,77,-99,82,-40,127,-39,46,66,46,-82,-70,-117,77,-17,27,96,10,56,16,83,22,114,114,24,-89,118,-84,116,19,-88,80,16,-25,66,111,-70,70,-86,-88,10,-1,80,-82,-95,95,-20,-121,-114,26,-15,-104,-77,-120,-7,97,123,68,69,-12,59,24,-20,100,46,75,-76,-23,-41,79,82,-3,-115,44,-69,-55,-100,95,81,-108,-125,-121,-46,-48,-112,-22,-10,-40,-60,112,22,79,89,-99,53,-54,48,-110,16,-51,77,94,59,-103,-50,-10,34,-115,60,84,31,-58,-55,-10,64,23,-5,112,96,85,75,4,-106,-77,55,-33,87,-76,-79,53,71,-8,-92,63,118,-60,-84,99,107,46,88,-89,24,-41,98,-36,-22,34,-88,-23,78,84,56,52,-14,60,123,-20,38,-56,-66,67,-80,117,-6,115,121,39,-126,-77,-8,89,22,29,-101,55,29,-31,-108,123,125,-46,6,103,-88,-35,25,-58,65,-118,40,-39,26,62,15,-25,77,-50,117,44,79,-79,64,-114,94,-31,-26,-67,-10,-114,-19,69,24,111,14,-33,-52,110,50,95,-107,63,-71,36,-21,-22,-7,-95,19,-71,-38,-88,124,47,120,98,22,-69,73,-5,-114,-18,106,-41,-102,-26,28,-41,-101,-105,-31,-120,-26,22,-21,-31,-44,-50,-127,88,85,111,33,-53,-114,-12,71,53,126,-55,82,93,-104,-77,41,-50,46,90,54,-28,-38,-128,-68,-80,-13,34,-63,31,60,-81,40,55,77,-5,-17,94,-110,30,96,26,61,43,-48,-128,101,13,-8,-6,-29,-60,115,-62,107,-57,54,96,13,114,-89,36,-69,-40,106,98,107,19,-28,-4,14,-97,-60,-71,-64,-107,-48,75,-50,-54,90,60,108,-101,-104,25,92,-60,-17,48,-63,103,113,59,24,51,32,-26,-101,121,71,-21,-83,-68,79,-115,42,5,89,-38,65,28,-91,22,4,89,7,-57,122,-51,-120,-58,-110,-42,-70,105,102,-112,33,-83,21,-14,62,-116,123,-55,-114,95,-110,-46,76,-12,-6,-88,-48,-126,49,-67,95,-94,42,76,84,-112,-64,-20,114,9,-8,-96,-38,-38,-85,72,55,7,127,117,54,-52,41,-89,-46,-95,-121,-97,-113,46,95,79,-105,96,36,62,111,-38,89,-97,61,24,120,90,-111,-69,43,48,88,25,-58,-89,55,26,14,121,-126,42,79,56,-43,-88,109,-53,31,69,-114,-1,-81,94,-50,35,20,-93,62,69,-96,120,-35,-103,-86,126,-44,-96,102,54,12,-97,-79,97,-49,-18,80,-68,-111,-17,39,87,102,6,-10,11,2,-89,-74,-104,-43,-9,53,-68,28,-126,-71,66,-26,34,102,32,-36,-96,-83,87,-127,83,-50,-60,-98,71,-81,108,-97,-74,50,20,-98,-9,75,8,-48,0,124,-27,74,-59,1,-121,118,52,-57,15,112,81,120,-10,-66,42,87,-92,-89,-123,-1,-29,-74,126,57,-50,31,115,-47,-20,-89,-107,51,49,28,110,38,-73,-37,-72,-70,-124,-20,-109,67,7,-114,64,32,-76,101,-107,52,-89,-109,51,-51,-3,-98,122,100,-57,-2,34,-38,22,-101,15,92,9,-104,47,-9,-18,47,27,-38,-58,-122,-20,102,-78,-63,-19,-71,-112,65,-48,49,27,85,-113,-57,108,24,81,-96,-47,99,-67,-121,-17,2,-29,-9,89,109,-45,-127,-59,122,44,-81,-39,55,5,40,0,-11,61,37,-82,18,-97,-69,-45,27,11,-70,-88,31,117,-98,115,114,75,-104,46,-3,104,-67,49,21,18,95,31,-8,11,55,-76,22,39,-17,10,24,-63,-97,57,114,-46,-62,-66,34,-86,-94,-67,-109,124,68,26,42,-65,-60,97,-41,59,118,-104,55,16,-25,-13,-99,-28,-50,-50,103,51,-77,91,55,53,-17,-108,-82,-121,-54,118,24,77,24,-120,73,-61,36,-122,-63,51,-88,22,104,76,14,63,118,122,-31,59,-115,-92,29,-66,101,-48,-7,-5,30,86,-41,-87,11,71,-15,75,-30,-110,2,9,91,18,101,-102,-51,-115,-83,14,37,-41,-17,106,-43,-108,-42,34,-86,65,57,12,-13,114,25,-36,-69,-48,93,-99,-89,-104,54,19,15,-101,-105,24,-51,-26,93,95,-2,-43,51,-14,-112,-83,69,77,122,20,-7,107,-29,79,115,115,-102,-58,-111,46,8,112,-67,-20,-97,-88,98,75,-30,-47,90,110,25,3,-8,94,70,47,22,-91,-103,-54,58,-38,-12,-50,51,37,72,27,7,-112,-50,31,-14,70,-76,-95,-109,-111,48,-75,118,-2,30,-7,-123,32,33,-89,-47,25,-6,67,73,-29,-7,-93,49,111,112,76,-65,8,-76,-95,45,83,-79,84,23,20,-96,-52,15,-70,-56,7,-58,106,85,122,-96,8,-84,85,-101,-30,35,-14,23,112,33,-86,20,-93,73,-30,-8,-79,-39,-77,-36,-38,-107,-112,-89,49,-27,103,48,31,127,-22,68,-35,100,99,57,-26,74,85,118,101,-43,105,-76,-93,-127,44,-1,39,68,12,93,-33,13,-78,11,-51,85,44,-99,12,-85,-63,98,-5,-92,76,25,-68,-86,-121,-67,-64,-109,31,64,-90,-58,126,52,-41,20,27,120,-86,-117,71,-128,-128,-28,-39,82,-102,113,59,30,-128,78,30,103,-11,-95,117,74,113,94,46,56,-96,41,48,-85,-25,-28,-79,104,3,-73,2,30,-22,76,-103,101,83,-89,34,2,127,-26,25,-82,8,18,-3,-20,13,52,-21,36,-38,90,112,-85,-92,-79,9,-72,98,15,-26,-32,-4,26,-26,-94,112,-5,69,-21,31,-84,-17,-112,-83,46,-24,-105,3,-102,15,-60,-123,99,-6,-47,22,-120,70,125,86,35,38,35,5,-100,89,96,64,-33,-55,29,-82,55,-3,17,89,52,104,126,62,-125,-80,113,34,53,77,83,-28,-65,-27,2,68,-114,-37,-4,-94,89,-41,51,-85,43,-36,93,-93,74,-8,109,-92,-70,114,-120,44,-63,77,102,50,36,88,16,19,99,-9,64,-57,-43,-81,-67,-70,-9,89,-64,114,53,-99,5,-31,87,74,66,-37,75,108,-100,85,-101,-44,-120,-32,-70,92,80,30,-16,112,-102,96,99,-6,123,-89,100,102,-38,-90,102,-80,-9,52,9,-47,-114,-81,-128,-112,2,87,-40,-41,46,-15,119,-107,79,105,15,-53,108,72,-22,36,45,82,-88,59,19,118,27,123,-93,-46,-44,93,-98,64,105,-80,99,-110,-8,-51,33,-58,76,-103,87,-13,26,76,-93,-13,83,127,-4,-52,-54,21,70,-93,20,-7,19,7,102,94,41,67,14,-52,17,54,23,-81,93,-61,76,-23,-92,-118,9,110,99,-53,-128,123,-127,-24,-125,-76,88,-79,63,-65,71,-79,59,-45,-64,-85,-111,-53,55,-102,22,-78,48,-67,25,100,0,30,72,19,56,-54,-6,40,-71,-42,98,127,-46,58,40,34,-6,-112,21,-113,2,-14,-42,-25,-78,-55,12,62,58,-127,-44,-40,85,29,-80,-27,-72,73,8,-36,-32,-21,34,-46,84,41,75,109,-41,123,-92,20,-123,106,72,47,41,-73,-12,-38,117,-89,44,-128,-102,-65,49,-43,69,-53,-119,60,-97,-39,9,-118,-33,-58,28,105,-41,70,111,39,-41,90,58,20,-25,-21,110,50,-114,-68,-104,-35,96,58,-16,98,26,-80,-98,63,74,119,-85,21,-124,8,118,-61,-125,-112,23,30,-77,92,-11,-28,-101,-57,-9,93,-49,103,32,-97,87,116,-96,77,-48,-27,92,57,-29,-25,52,-107,-77,-50,114,99,-79,24,-58,-19,-96,-113,47,-80,8,-83,-72,69,-6,55,92,39,17,76,21,-127,-5,-60,-115,-55,-28,40,-43,-43,106,112,-35,-57,25,80,19,-39,-6,-111,-79,4,-59,-77,121,-103,-89,-127,-113,28,61,-50,-125,58,-38,-33,43,124,41,69,-105,2,99,83,-31,-119,-21,38,90,92,-88,113,-83,56,-56,61,-49,-74,-2,-23,101,-114,26,114,-95,-52,-73,-7,-53,116,32,49,119,81,-88,-49,-102,-126,50,-47,38,-13,76,69,-73,-124,5,-53,-63,11,-42,35,-97,46,29,-43,112,-2,46,58,83,-17,41,-5,125,-34,-96,67,49,-17,-80,38,-82,81,29,84,-13,96,-112,49,13,65,117,52,23,3,49,-26,-43,-88,-97,93,-60,-93,-34,-54,-74,5,-113,64,-73,23,-95,50,17,-112,123,-90,4,-35,103,16,-41,26,-104,109,-119,-71,95,28,60,-71,-41,-26,5,-118,-31,-126,58,-93,-50,-48,30,-51,-31,-2,-92,-75,85,-52,71,112,-48,74,-65,-24,41,104,121,-95,122,-83,-49,119,-20,38,97,23,-73,-22,55,-118,45,25,-37,47,-122,89,-4,125,-105,37,55,102,52,-12,34,7,85,15,-6,17,13,18,97,20,-92,79,107,-16,117,-80,60,-3,-23,81,-70,124,52,-36,105,-44,-125,-40,-81,28,88,-57,-111,-96,-49,18,-5,71,-37,32,-73,53,1,-124,77,-70,-107,33,-79,-83,-34,-125,43,20,-55,15,-53,59,59,-97,71,44,78,80,33,-20,65,68,-72,-125,23,-30,-3,-89,93,64,88,123,-44,126,117,59,38,-5,32,40,125,124,98,-104,-31,-59,-27,98,12,125,-43,-48,-74,43,62,-6,73,-3,19,100,-104,-62,35,47,-8,37,60,-125,-100,95,49,-74,-15,8,76,58,14,-85,20,-56,29,70,-125,94,-60,-56,-112,82,73,92,78,-40,-37,37,-50,22,19,63,23,-49,116,27,113,82,-5,24,46,85,41,106,-11,102,-123,60,45,-108,63,124,-67,114,53,-14,-126,-108,64,-6,-27,-19,-101,-27,102,112,-45,93,-4,-36,-68,-111,93,-64,69,-128,-109,-78,-16,-62,-79,-51,-8,-39,-40,-94,-4,123,-117,70,87,-91,-79,15,18,98,11,-51,-104,-76,-59,40,-82,110,100,102,13,71,42,117,-81,-41,-120,-48,-17,-20,44,-44,-120,76,79,123,-128,111,-51,71,-41,-76,-86,-32,80,-43,124,-65,123,21,5,5,55,34,73,-46,-55,58,-108,116,110,85,59,-61,-24,-86,111,-34,-128,-111,59,45,-125,-94,-47,-90,48,-109,-56,-95,-37,-127,79,-17,102,-52,-96,16,-77,31,40,-59,-93,-26,10,-28,108,-2,-85,95,-25,-88,-94,120,30,-24,-69,-9,90,81,67,-92,123,116,42,12,123,88,86,-86,10,-16,-77,54,-119,-54,-43,-7,104,-111,-75,-3,63,-96,-95,112,-68,80,68,-128,3,-13,-37,74,-113,62,-88,-32,-40,-48,55,-21,-64,64,118,-126,-41,-79,-75,-112,-78,-81,19,20,-10,86,97,-20,127,101,56,118,69,-62,73,52,125,-15,-84,-30,65,105,-53,-59,-54,87,-87,87,-116,49,-120,71,-48,-108,99,-19,-107,-98,-40,58,86,-119,-125,-62,-38,23,91,85,-55,52,-31,123,-76,120,77,49,122,-118,-19,-56,86,-74,-15,-82,47,-121,-83,21,-69,119,-86,-39,59,-84,87,1,19,-58,-67,-122,-45,54,-38,-96,-13,100,-91,-118,-97,-72,73,-30,23,-121,-30,-36,94,-38,20,22,-4,-85,-7,50,114,-105,95,35,-85,-41,-89,93,8,-53,45,87,93,117,30,17,-61,69,-61,48,-52,-75,-99,-104,-113,-27,10,80,89,119,107,-76,-30,75,125,122,55,-13,8,-37,-37,13,24,33,31,98,-14,101,-51,24,27,37,-51,110,-15,83,-49,-122,85,-30,18,-17,92,101,12,97,-54,-99,4,73,-82,-46,111,29,-7,-75,90,106,-91,45,68,-111,68,-63,99,86,-74,-122,-35,21,-28,-22,74,-80,-70,-93,50,-9,14,-84,45,-18,-41,-50,-105,-94,82,-89,102,74,-38,120,90,43,-17,-82,-83,-119,-17,-106,52,-80,-63,123,124,75,-118,98,0,-100,-76,77,-72,-18,80,-49,61,100,107,89,-27,93,-70,-52,-68,-89,-46,49,-9,-77,13,-29,103,-52,-69,-88,-65,-33,39,-119,-105,29,96,48,86,-76,55,62,-128,109,5,73,-94,-11,-43,-82,-32,52,122,33,29,63,-40,-89,-88,77,-16,67,-69,-106,-59,112,59,6,-67,-92,-115,107,-120,40,38,69,-33,87,81,9,8,9,-31,-110,-68,113,-117,44,-81,-62,-85,-23,77,-6,84,-63,-126,58,105,-48,75,38,80,-2,-45,34,-62,107,-8,-16,-82,-17,-128,57,-113,12,-99,-110,-47,100,-44,-23,121,42,-29,34,-64,100,-124,123,105,-7,-128,117,5,13,-13,-125,112,86,-4,53,-128,-81,-87,-75,-18,116,-77,-110,-122,100,-60,-124,117,82,-35,77,87,29,125,-127,123,-54,100,-117,-100,-49,-105,-77,2,-110,-4,-101,6,53,63,-103,76,-118,-40,108,-103,52,122,-3,54,57,-86,65,86,4,-106,-99,82,68,-44,15,-41,17,51,4,92,22,-63,-83,-126,63,65,-115,76,-109,80,-50,16,79,105,-115,96,-71,34,-61,-89,92,98,-36,-88,56,113,18,-123,120,32,110,81,108,-29,-31,34,-102,-24,-33,-8,76,25,-128,77,90,84,76,-98,-104,-4,-105,-65,-62,10,29,-80,-116,89,120,101,-36,22,-85,77,-44,3,-107,63,-19,45,-126,16,1,-29,31,-125,113,-108,30,-103,-127,-38,26,-18,-120,-56,-121,32,-25,102,-7,-85,-50,47,-121,-109,-127,-6,-34,55,-34,-114,82,-6,83,-44,-2,-69,101,-34,-21,123,33,25,-23,-108,-46,-107,-46,56,38,-30,108,106,-31,60,-78,8,4,25,124,12,37,29,2,89,40,100,-48,21,-53,-87,109,-116,77,-46,-60,-64,122,-68,-25,-109,28,-71,62,121,-73,-84,80,12,-88,-118,-89,109,-74,106,-62,89,-65,58,-73,-74,-110,-64,-73,-27,-87,96,-128,-122,54,-72,42,22,-37,73,-87,6,31,29,-46,62,23,-99,63,114,-20,10,-43,68,15,-24,124,-63,-25,76,-12,30,-43,-86,38,111,69,-121,-5,-49,-42,34,-51,119,80,39,86,-32,-74,27,-71,-24,-25,73,74,-11,104,53,117,87,-11,-32,-115,-24,-78,99,-7,-113,-76,-99,112,-20,50,121,-9,-103,111,-10,-68,-9,96,-35,-108,10,2,-38,-18,-73,90,-64,-105,94,-22,103,22,116,-68,99,-42,124,-117,-122,-119,-43,47,-6,72,90,52,-52,-76,2,-84,-22,-19,-85,92,-124,13,-115,2,36,107,15,-76,127,47,-39,3,-109,90,-24,-74,1,-29,-17,-21,-27,32,102,-57,26,-108,-114,-104,-112,76,-47,86,-17,-86,38,114,106,-81,-77,67,52,-28,-68,23,-63,-57,-110,95,-81,-35,-97,-96,-29,-11,64,-118,-1,-99,-25,68,-24,-118,-84,-113,68,94,-39,93,77,-80,-1,-123,12,97,80,-117,111,-52,5,5,-24,-98,-27,-96,48,-37,-108,-28,70,63,-21,23,123,67,-33,47,-96,-58,-50,-109,-124,-64,20,-37,44,-101,34,100,95,94,-57,-4,39,-21,-62,-37,-76,-72,-51,114,10,-21,113,-68,45,27,-77,105,47,18,122,43,-117,-99,-82,-15,40,-7,112,-86,27,-37,83,-53,-8,1,-110,64,47,-58,44,14,-50,18,-33,-17,69,-90,51,-58,35,-103,29,38,100,107,-44,106,-99,-49,-90,107,23,-44,-79,-21,7,-10,40,-58,-76,-50,-106,-47,84,34,91,23,-9,113,114,-91,-11,-62,64,58,20,44,-76,-55,-105,38,-101,94,121,-125,81,-128,-55,-101,-22,78,100,43,94,118,-46,-103,-36,48,81,45,90,2,-3,44,-8,-49,-66,104,116,-69,-90,-78,28,15,-65,-31,103,14,-71,-103,-90,36,-54,-81,-62,-35,70,-60,103,45,-13,20,-32,127,-93,59,127,-89,-54,-23,117,77,48,3,-84,-56,-35,37,87,-115,60,11,-27,103,44,78,-16,-3,-112,-44,45,-112,61,-102,-104,-67,88,102,121,104,-106,46,-39,-91,52,-77,-13,118,-79,-52,61,-5,-90,46,24,-84,-59,57,-34,-62,101,47,-66,122,-18,28,102,-123,32,-19,121,12,81,-110,89,-38,-78,8,-78,-2,-94,44,111,-2,-36,-66,22,-59,83,-43,92,-29,60,-71,92,7,-51,19,-2,-66,39,-100,116,92,-78,7,124,107,103,127,-115,62,80,99,98,-74,-95,109,-3,-126,59,-61,-93,-58,11,87,-24,113,100,21,-65,-103,-71,-106,122,-71,96,100,-38,-23,-118,72,0,-68,-55,-108,88,82,73,119,-105,59,-90,-41,99,76,37,-41,-62,18,94,-37,67,56,68,-41,110,-24,53,14,-62,-121,38,-84,13,48,48,116,-17,-80,110,-63,50,8,-4,111,-77,-4,77,112,19,64,-9,-32,-45,77,72,-90,-127,74,88,-61,-85,-75,63,125,-46,-86,-15,79,116,7,76,46,-99,14,36,-55,0,76,95,101,-115,-18,67,-35,71,-104,95,8,-124,-42,38,13,-70,98,18,77,51,-27,-82,-61,-66,26,2,2,-26,-119,-61,-70,44,27,114,99,-99,97,14,34,63,-44,-88,65,82,-47,30,-99,-97,-13,13,48,47,117,4,-29,37,-7,11,28,78,-59,41,-94,8,-125,99,32,-109,-13,14,-58,11,100,101,-94,-61,-49,45,90,47,77,84,19,12,-86,-24,-63,112,73,-48,4,-91,47,54,3,67,68,5,-26,-64,-71,110,113,-96,23,105,-14,-79,67,-18,36,-35,48,-36,68,-33,56,-5,39,-56,-11,-20,-43,6,-33,82,121,29,-78,8,28,-29,-76,-101,-81,116,-72,-98,97,-16,107,123,-89,-47,102,-84,-113,-107,-24,105,-112,-67,-41,-77,-18,29,-19,49,54,49,20,41,63,84,103,15,33,50,-118,-25,42,87,48,61,-48,-121,-74,16,-85,-13,-14,6,-76,82,-68,90,-4,-40,17,2,-101,81,102,-80,-2,-64,-74,-54,8,7,99,-117,21,21,74,-50,-36,-89,85,-75,-35,-29,2,-105,-55,2,71,28,-118,53,-84,126,2,9,-104,-20,45,4,-113,76,10,124,81,83,88,50,66,95,44,-110,17,122,30,92,26,-85,-53,73,-32,-78,-127,5,34,3,-75,81,-15,54,-13,9,-126,-42,-102,7,119,96,34,109,67,6,-70,116,-26,9,103,19,116,-9,88,-12,39,-88,92,85,-87,91,33,-43,96,120,-59,-53,12,84,-18,-68,3,-87,48,-99,87,-28,21,-88,-93,86,116,63,100,33,-65,-56,-36,-36,-38,-80,-62,-97,-87,66,77,-65,103,85,-99,73,103,102,-80,104,-70,60,-6,-96,-67,1,-44,-1,90,-80,-59,93,39,-81,63,66,-35,17,-56,-58,-49,83,-80,71,-54,-111,-7,92,-48,29,56,-7,-107,-114,21,-75,54,-124,-60,-3,-78,-13,-110,61,123,80,96,-49,-105,-115,112,-29,-68,126,-74,-87,82,70,-70,16,-84,53,-16,22,29,-40,-47,-90,14,-117,6,-3,-13,64,87,-84,-100,52,-57,23,108,74,59,-37,82,45,20,87,-65,52,-96,57,-61,2,-33,-39,78,-79,-61,84,63,34,27,37,-13,12,32,101,9,-16,21,-19,59,-119,57,-97,-124,127,76,6,83,80,27,-31,102,-105,56,118,85,89,16,98,-57,68,6,3,58,-95,-78,-77,26,-26,-21,5,-113,23,90,-110,-16,35,-108,-23,-47,-14,-42,102,119,46,10,58,83,-117,-49,80,-38,-58,80,25,-85,40,-2,-54,-35,-100,-77,-80,87,-122,-94,-45,-115,63,-10,86,84,-47,101,-114,123,111,71,-75,-111,-47,43,-35,-99,-22,-3,106,-89,-94,22,111,-52,95,104,-17,71,96,7,10,-99,-90,-38,32,-81,-7,30,-112,-16,-11,-104,106,-30,78,-110,99,30,-31,111,-125,-50,-19,-66,-50,109,-113,26,95,-74,-86,4,-66,70,-4,-2,-14,-86,-83,118,48,-62,-30,-2,-78,102,-105,83,-45,37,58,100,53,-66,46,-104,-25,125,-112,49,89,95,75,88,22,19,-76,101,-35,39,20,-82,54,61,-40,-106,-83,32,-106,-80,116,-52,-45,-126,-86,-56,-71,52,108,70,39,-24,103,71,121,117,120,9,5,-97,110,-79,-39,77,-56,71,-90,-97,3,-8,-64,-5,-102,105,59,-76,-100,-65,-99,-7,-6,85,115,14,112,118,65,-60,10,116,68,-83,69,-118,23,13,24,40,68,-2,-78,-43,79,-63,96,-5,-19,19,-56,94,-79,96,-7,19,-93,31,-47,30,22,89,43,-104,61,29,-49,-111,61,-41,121,32,116,121,-17,-109,-51,51,7,-6,-80,-84,-105,-41,88,-61,16,91,115,69,-25,-80,-12,45,-70,80,75,-22,-38,111,15,-71,39,62,68,-51,40,11,-9,51,44,29,-27,-106,112,-95,29,-105,-114,68,105,-109,-68,-13,-82,33,51,50,-48,-65,-103,-46,13,-29,-51,17,54,123,-91,108,-73,43,-120,27,100,-13,32,52,123,33,-52,-43,-110,-79,-76,-30,-86,-90,109,49,103,-28,39,-52,41,106,0,-13,10,124,-57,-15,10,-124,74,26,91,114,-63,-48,52,11,83,-44,95,13,-23,-57,114,82,-108,96,39,-34,27,29,-60,30,99,5,-101,-128,117,-74,-47,-118,-33,-69,-121,-18,-112,20,-6,117,-35,-80,-35,-102,109,24,-33,-5,47,-13,101,-127,4,25,1,-57,-117,-65,74,-107,-64,125,0,-60,-78,110,-100,-19,-1,-63,27,-17,61,-75,-84,-56,-29,-25,21,46,107,88,-33,109,-89,83,-83,-121,-100,-55,-48,29,-3,28,98,-59,-64,-73,-65,-86,-63,30,92,4,-29,65,-26,-111,47,1,-21,-109,26,-86,-119,113,-1,-29,-88,75,77,-54,-35,-95,22,24,-40,80,127,-56,-24,125,43,-18,97,-32,-77,61,-85,-105,69,19,9,127,65,10,9,-76,90,-37,-2,-15,-18,-57,2,11,27,-51,109,17,28,2,90,22,69,98,-55,-53,-63,125,48,44,-13,-96,-94,65,-116,88,-2,76,72,61,79,64,12,-112,-11,72,44,-103,-29,-24,106,78,91,-93,72,74,-123,-121,-36,4,79,-28,92,83,-109,-99,-98,63,92,-39,98,94,-43,10,-57,83,-23,50,92,79,-111,-79,-32,40,-34,91,-26,115,-124,68,-19,-72,56,-101,60,-73,-55,-83,36,-59,-86,3,-73,-98,-85,103,3,10,-113,53,34,-90,112,-122,-114,26,46,52,58,51,-101,29,-1,-87,-108,25,-77,-51,0,97,32,-36,57,117,67,-124,-61,-67,13,8,-108,-59,-50,28,95,10,-112,124,105,-127,-54,-43,-86,53,-50,-1,-108,65,-111,35,-42,-119,-28,-47,-92,15,-97,-50,12,-42,63,10,-71,-23,22,83,-24,20,-28,69,114,108,98,29,3,123,-42,-101,120,-36,13,-44,87,74,15,-89,77,-23,56,65,-12,19,54,66,-31,-111,-16,109,-43,-87,111,69,79,124,-8,-17,-46,15,-48,61,-28,-72,108,-58,-55,83,53,-80,118,-88,43,-54,74,-38,-102,56,116,-125,-80,-75,-3,43,105,88,-66,-120,117,-58,82,-5,74,6,78,-79,-72,-51,85,-100,-49,123,-42,90,4,-33,-55,127,88,60,-115,-123,20,123,117,-75,9,122,-19,-98,-97,-15,90,92,-32,94,-86,68,41,93,106,-41,-60,-80,40,-91,24,-86,-39,-120,73,-27,125,65,-87,-123,-41,35,-9,113,91,-111,-40,2,5,83,34,-66,114,90,-111,57,126,62,-93,-117,5,-68,60,11,-105,-33,-35,51,-52,97,-45,83,117,-81,36,45,59,64,-43,-62,69,110,-95,88,102,107,-125,-97,43,-122,95,4,1,25,-51,-12,43,100,-22,98,-64,64,94,-74,45,-46,-38,102,-21,29,-37,-123,-104,-2,119,-40,115,15,-31,2,21,75,-115,82,-8,74,18,8,27,90,-80,88,10,-104,37,-1,-82,80,77,-97,-99,35,-105,40,110,24,-49,99,-94,20,43,40,-40,113,10,-71,43,-22,-63,77,64,-79,-3,-82,-44,23,-53,86,110,97,-124,-27,-106,104,-95,-96,-121,-14,25,74,54,72,120,107,-128,-60,-9,21,49,-12,-67,18,-30,-91,-33,77,40,33,38,-70,7,-89,-43,44,-12,-108,111,14,36,85,-15,112,-85,-48,-109,98,57,-17,100,85,-123,-111,-72,60,15,11,-124,90,-105,-107,7,-121,91,-98,-10,83,-116,54,-10,-128,64,38,59,64,-25,-17,36,101,-96,67,-108,-89,46,26,20,126,-71,0,-1,77,32,-31,-72,-29,44,-8,-14,-74,42,-21,-11,95,119,123,84,-128,30,20,27,-74,38,-122,-11,41,94,-33,-51,-115,45,7,74,80,35,-30,18,-101,-6,-92,95,-69,33,15,16,-59,-111,-67,3,-86,28,40,-43,68,27,-95,-111,-26,98,83,38,106,-126,86,-34,-54,-102,-88,-110,38,40,46,-37,81,11,-8,-122,-46,30,90,112,-40,95,-73,-61,77,-123,105,-44,32,-109,81,-110,-23,127,81,-83,-55,77,-44,62,-33,-70,4,-62,52,115,-36,32,-96,-123,86,-33,127,86,43,38,53,21,-125,106,-69,-16,-98,84,-80,-12,-25,17,-70,-72,-33,34,-115,-119,42,48,-34,6,-18,91,-19,22,46,0,-92,-27,-116,106,35,78,50,44,-110,-113,14,7,18,-123,-112,22,113,-91,-17,-51,88,-83,-19,-51,30,28,-64,109,-114,86,-33,73,30,-1,-58,-121,51,-109,104,86,89,119,-76,-28,-90,-95,69,-100,-55,-23,58,-14,-112,30,125,-77,72,-99,39,55,67,54,4,-6,52,50,-47,92,-26,6,3,76,96,89,126,97,80,-80,-76,-100,67,-119,58,-36,-13,16,53,53,5,123,31,106,33,-67,-27,111,48,7,23,-111,-110,-42,-105,-16,38,43,-17,51,-12,-98,-32,89,3,64,65,118,21,-66,-93,-1,-115,93,7,-75,-25,126,107,59,-19,-26,-107,14,75,45,-110,-16,-34,50,-11,2,-109,19,125,-61,-94,-63,-24,123,-11,54,121,-115,-16,-39,2,98,77,102,52,90,-110,-55,-119,109,-47,-121,119,116,65,68,6,6,22,103,49,-121,-117,119,-90,-38,124,-32,90,104,109,-16,-92,-100,61,-115,60,-107,-26,93,111,27,-124,54,-77,-72,123,-79,-89,89,-54,-94,59,108,-49,78,-4,-108,-28,-119,42,55,36,95,-7,123,-99,-42,-6,-100,91,-65,32,-24,-77,106,-5,59,-93,-100,35,115,70,-90,-6,-7,40,-20,76,105,-32,-74,-32,77,-91,114,-126,49,-83,-81,113,84,80,-69,-13,-99,-29,-103,-69,102,-108,-127,-43,87,-11,-126,119,-113,-104,-11,62,79,26,-90,7,-22,-64,-107,77,77,-83,24,52,-90,-57,10,114,-22,-38,115,-52,-37,-63,-76,94,-13,-56,-96,59,78,33,85,-97,-82,10,74,-113,-95,-78,99,50,-66,4,32,69,102,20,-76,-57,-69,-26,5,127,-105,94,-72,-117,-19,-7,-38,-91,24,59,86,9,91,-58,126,-126,-81,-39,28,124,35,101,74,-90,120,54,14,-108,-31,80,94,50,-40,-56,26,19,-5,-37,-39,-117,-45,9,37,83,53,-73,-22,-102,-107,-104,38,-125,-126,90,-106,-98,74,72,21,-56,-76,20,109,52,29,-45,-42,51,-51,-1,122,12,91,-18,-69,-3,55,51,-111,123,-106,11,-108,51,-93,96,-100,-87,91,-51,70,15,-39,-81,35,-54,62,-87,33,-125,-64,-111,14,-89,-109,70,-36,-122,65,-47,126,-119,126,-49,-34,126,46,-87,88,-107,-117,119,29,25,-65,-89,62,-88,-89,-117,103,9,100,-36,56,95,79,-124,66,-126,-5,-9,9,-95,-95,-93,54,-54,-2,81,-106,-25,21,108,105,-9,-37,-97,69,84,122,39,-124,59,98,-25,-67,35,18,48,-105,78,117,-75,-42,-76,3,-107,76,3,79,-81,-61,-99,30,-99,101,-94,-118,112,-88,-82,-19,103,-67,-71,76,-105,-24,-20,-91,83,90,-7,120,34,-26,75,-110,41,62,-77,-116,23,109,74,107,-78,94,26,-125,-13,27,99,49,77,-73,87,100,77,0,93,88,-23,-115,-108,-36,-24,123,-60,-65,-63,-44,19,0,102,-19,69,89,85,-96,-103,88,123,108,-68,119,-99,89,-56,11,116,-106,-68,97,6,-60,52,47,-1,-53,-55,94,-107,-3,-105,-9,-3,-21,-37,-69,18,-59,37,78,127,118,-117,107,-79,-43,124,-108,33,-121,52,-25,-71,76,-2,64,27,-52,88,68,14,25,57,-115,30,-36,63,-16,-75,92,-57,110,-105,-82,-72,-21,30,113,-20,-92,-15,-77,-25,-20,106,22,79,56,21,68,115,98,71,32,122,20,-70,112,62,38,105,48,115,15,47,-124,-71,48,-41,-85,-6,127,9,122,-68,110,-45,-35,-103,-21,122,30,42,-70,68,9,13,83,105,110,98,8,-42,93,-26,117,21,-42,27,-82,110,-123,-98,10,-5,22,-112,29,-32,109,7,31,-91,22,-56,71,60,29,4,-126,63,-64,74,-77,-53,92,-54,-7,-128,72,-92,-20,6,-89,52,-20,46,32,-119,-94,-90,-92,74,106,22,-50,-69,88,107,8,55,3,-102,-64,-106,28,74,13,97,96,110,-59,83,58,-95,-49,87,-106,71,9,125,-19,26,-26,-28,-93,-52,20,49,-63,-73,-11,14,112,121,-65,-128,88,4,72,-29,-117,-74,-33,102,21,125,112,-82,-49,-7,-28,46,82,-71,12,4,118,121,97,28,16,85,50,-24,78,76,74,-47,107,-67,63,-112,-94,93,-59,-32,-48,119,84,74,108,52,-113,-96,-17,27,122,23,-67,-10,33,-54,-63,49,57,-58,-103,54,20,-18,102,-78,-125,20,62,109,7,107,-20,31,-85,104,5,81,-61,51,98,125,-32,125,-90,-100,6,104,64,56,126,-86,24,109,23,15,-100,23,50,-83,22,30,-128,123,-82,-89,14,-82,-48,-36,-92,-12,-65,10,107,-124,-61,-36,-75,0,49,-105,26,101,119,120,-37,-89,-38,18,-55,-118,-47,-92,-17,-14,48,-50,-72,-100,112,-125,-106,126,-114,-23,-105,102,-41,-7,-5,-25,87,71,-111,-76,-11,-106,57,39,-84,-28,123,47,50,-23,-66,102,-101,-65,103,10,32,84,82,32,34,-112,-14,-109,-125,79,28,97,-18,38,56,-70,-36,-6,-78,33,-80,-120,104,27,68,41,93,125,-95,90,-18,-33,-97,-102,53,4,-79,-27,30,41,-51,-72,-74,-102,92,28,-56,122,114,-105,121,-51,8,63,-117,-56,126,-127,-126,84,49,30,-76,-45,-13,53,57,34,3,-85,49,41,-112,-71,127,22,-111,-114,-34,-45,38,44,97,4,52,-111,-35,-98,-24,-53,42,-118,74,-86,-19,-52,-119,-88,22,119,-89,71,112,26,-21,52,35,65,126,117,-110,47,4,-66,21,-8,-51,-72,-120,72,-107,85,3,72,73,-27,-36,19,-114,71,-89,-111,-100,116,-97,-53,87,-68,-121,-29,17,-60,-28,-64,116,11,45,-125,-83,-55,71,4,-3,-123,53,-122,42,-45,104,101,-22,81,-24,49,-37,91,-2,44,-77,-72,-64,-80,-100,-75,-26,-102,108,19,-107,-23,-51,-11,-4,-18,118,-18,125,-84,90,41,8,30,-54,21,-91,-115,102,-99,-35,6,-35,24,102,26,-108,-8,39,-93,1,76,124,-9,28,114,-39,44,9,72,-72,67,-24,-41,-3,-92,-58,-31,-57,29,127,36,16,-87,-1,-124,-34,57,-23,118,-38,51,-19,121,15,-2,-44,8,-87,-82,-47,71,-14,16,-41,48,79,17,118,-83,-84,5,-62,-127,-20,28,-12,54,-95,115,-89,124,-18,-118,40,-125,-97,15,3,89,-21,-19,45,23,-58,39,-1,19,-18,127,-121,-46,2,-24,38,-64,-48,19,81,-16,80,-37,-128,123,-43,36,-73,-127,55,-62,121,14,93,42,56,-117,-43,24,-99,-79,-46,-34,-112,-99,38,11,-19,23,-70,-121,-128,-81,-110,-76,88,-53,-51,-128,51,52,54,-58,-80,-35,83,20,10,27,-109,112,119,38,-19,120,97,67,24,-65,51,84,37,-8,112,67,6,-127,-104,-50,118,58,-1,-97,-94,78,-103,10,30,-95,-94,-42,107,-67,-41,-39,63,-108,27,91,21,-23,-88,-118,-55,-1,-28,-9,16,-29,-37,-55,-80,78,-82,-112,62,48,46,-41,1,34,50,12,-53,46,123,1,37,71,108,3,41,-123,-94,-50,-16,8,-42,86,-39,51,-24,119,20,-55,22,115,-82,114,-86,-110,8,-15,-72,74,83,14,93,59,122,107,3,-17,93,41,51,-56,-125,-21,28,38,-59,69,71,-48,111,38,79,-29,-23,-17,0,-110,75,87,113,32,50,-113,4,-4,12,-20,-27,-61,-41,-117,-56,-99,-77,115,-87,-99,40,-95,-99,-31,26,-102,119,-53,2,4,29,-21,-86,94,112,-82,45,23,-65,-23,-85,-97,-17,100,75,-110,116,1,-109,29,-111,80,-90,74,93,3,95,-48,112,-106,-18,77,25,-29,-22,-117,72,94,9,113,95,-1,-104,-28,-124,12,97,66,-109,33,-94,91,-29,-88,-102,-76,77,21,-65,51,95,54,-16,78,-116,78,-79,-51,-107,-123,2,49,40,-124,-90,97,64,-3,-105,71,14,-114,112,3,124,-83,-105,94,-50,35,59,73,-63,120,-43,116,16,-91,-46,-117,-18,-108,-26,-84,84,75,123,-21,-97,-118,-119,34,72,-59,-108,-65,-104,21,70,-108,63,-35,-26,-63,-11,-55,53,-125,-81,-58,-115,-54,-16,59,7,-12,0,-67,126,81,-72,-118,-76,121,-13,5,27,80,-23,87,-125,-85,-14,-37,-6,-56,-79,-118,-19,-43,-45,72,71,-91,-49,31,-121,34,-90,89,-22,46,116,-62,-59,-4,49,12,23,-39,40,88,-54,12,120,34,26,42,-7,-18,-89,67,-37,123,61,74,-91,-36,-38,15,-104,113,46,0,54,28,100,-44,-75,25,-56,28,103,44,-92,34,-100,-113,28,-75,-16,-121,-7,38,58,-99,66,-20,-2,-122,-19,110,11,-58,45,-72,17,38,-45,6,41,64,-86,36,44,91,-45,17,-93,43,-73,-41,-70,52,121,-71,53,-90,14,115,110,29,36,-46,-75,92,97,102,-53,-88,-32,53,122,-39,20,55,-102,-101,117,82,-26,14,46,-120,-91,85,36,101,-108,-81,-26,-18,115,-50,-47,7,18,-125,-24,-46,33,-24,-108,-71,33,41,99,47,-66,-43,-25,117,10,53,-2,10,-14,126,-112,104,-74,-77,-57,24,-30,81,93,115,69,89,10,90,34,88,-116,-90,65,72,43,123,51,-85,55,8,-12,13,10,-90,-37,123,-4,109,40,105,112,99,64,-74,-83,104,44,-20,-16,54,25,-82,-54,64,-109,-37,-3,107,-17,124,14,60,-64,-47,-72,-84,40,-74,89,6,36,-98,-125,30,63,14,-70,109,-62,-38,112,127,-41,52,115,27,-56,-112,76,-107,-65,-118,26,-74,-53,-96,114,-120,78,24,77,48,60,29,49,-117,-15,-91,1,-26,58,-84,-9,-109,-115,-89,-21,82,104,36,116,-103,121,93,-50,-39,-103,37,52,-108,-28,49,-87,-115,-93,38,-37,-68,-28,14,-26,-41,19,107,-2,-107,-37,-49,11,17,-120,24,24,-110,-100,93,46,-84,-122,38,6,-53,-7,98,102,65,35,-8,-6,44,-99,86,-5,67,-4,-65,13,66,23,-111,24,19,7,9,-92,29,114,58,-43,-105,-61,-33,34,-57,-26,5,-11,77,48,0,-41,-49,22,-20,-44,-30,-99,10,45,47,-51,-29,20,-11,-61,104,99,-15,21,-67,44,-71,108,-83,-11,-104,57,39,-84,2,122,14,127,-110,5,-79,98,95,23,89,3,68,-87,94,-9,40,104,107,24,-97,26,-36,-111,-95,-100,31,-97,49,77,-69,112,-96,-111,-45,89,-9,127,114,85,-102,-5,16,-1,-53,31,-69,-53,113,-6,84,-6,-18,62,-44,-73,68,-15,-105,-36,127,12,-27,-28,-31,-42,51,-121,86,-19,-111,-86,-119,93,-74,67,32,51,73,35,-106,18,70,44,72,-82,50,-19,-45,98,-60,-84,-67,-84,-126,-5,38,-67,-2,-62,-54,-23,-110,113,-14,-89,52,28,-61,11,4,70,-100,-35,0,-46,-124,-11,49,118,39,-80,-70,-100,-120,-54,-69,102,59,39,16,-49,53,-50,-27,44,90,-115,69,-102,-113,65,20,-47,59,-115,127,-19,-54,-19,-27,-28,-94,39,65,-114,-115,75,-46,-85,75,-4,-67,127,27,-98,-42,1,-124,-43,22,-21,-27,-74,53,-45,-90,127,-83,-44,-86,-23,10,36,86,59,99,-126,108,-59,-99,-45,-16,91,-33,110,-120,106,-87,19,122,115,-86,85,67,-83,-4,-57,-111,4,-5,-58,-91,-2,95,11,-53,107,-68,-128,-68,-12,85,19,-36,-40,-56,10,-64,58,-12,-32,79,20,37,-65,-33,-9,88,123,114,94,31,67,-32,-2,86,-124,-116,-62,-100,41,-17,35,-81,67,-110,-85,83,45,-121,5,-120,-3,47,14,-65,-78,-114,-87,-9,-19,-21,-7,106,74,117,-40,78,-33,63,61,-70,26,56,-9,76,-121,14,-77,87,-125,69,-32,-101,50,30,104,-59,-117,43,80,-98,-11,-94,-23,-108,52,-38,97,24,-10,-41,125,-119,-19,-42,-56,25,65,7,-39,-102,-4,110,109,74,18,13,-126,96,95,-89,99,15,-3,106,6,72,35,82,-78,-15,73,116,61,-127,-83,54,98,-17,2,-7,88,-57,-37,-39,-102,-79,31,-6,111,-62,-24,103,69,74,113,-15,65,68,37,-65,123,94,117,-121,-32,-78,-5,120,59,104,60,68,5,-65,4,64,-85,-80,117,-101,61,46,-88,69,-123,-19,-57,-15,97,125,54,-23,84,-124,-27,114,-47,16,104,-100,44,-87,36,-27,81,-20,-73,-80,95,-64,-34,29,-77,66,-126,77,-120,105,-100,79,44,116,-18,-15,-27,-71,19,12,-80,-18,27,45,-92,116,-27,-14,14,-77,1,-40,-110,-26,-4,-120,-88,60,51,108,-101,-123,116,-83,111,1,-74,-69,87,11,124,2,93,-64,121,-45,62,-79,110,-37,-55,97,27,110,-79,-91,67,99,53,26,-74,43,98,9,-43,-103,80,-23,60,68,-36,-112,-64,-31,20,-52,-79,-7,-113,94,-30,-100,73,55,-111,-1,87,-29,-25,-94,42,-13,-63,-59,108,38,-16,-62,-85,-17,0,-90,47,116,-80,12,-11,-54,96,-12,-110,-6,-128,-64,-31,-109,103,58,-11,-118,-3,0,-102,64,39,-18,-67,93,95,102,-87,104,88,-62,-31,-36,-61,-105,-26,46,-53,117,93,-70,-54,-103,121,52,-24,82,-10,-124,-22,-122,29,84,-76,121,-64,-65,-6,80,52,-27,7,108,-118,64,-82,-44,73,81,-107,84,-88,-100,-59,-56,9,35,-39,-82,-68,26,65,-66,-73,-15,75,-31,-44,51,-65,-73,-62,100,51,78,-51,-112,-84,82,-19,93,-92,-69,53,-38,-66,127,5,-30,61,26,43,48,-63,24,31,-71,-67,-127,-60,-55,-26,38,-43,-63,-49,-37,-101,116,105,-109,10,3,-67,17,-42,-89,110,62,-103,-41,78,-47,-59,-47,-17,-51,10,-16,-31,68,-41,37,15,-123,94,101,77,116,-122,61,-96,-122,-8,-11,105,-74,109,-97,-111,114,44,105,45,42,-94,-99,-52,122,-113,87,-59,-109,85,-128,120,-49,21,-75,-89,-10,11,120,-51,-19,30,-79,-26,64,-32,-71,28,-11,-44,55,-28,109,59,-84,-22,-55,-113,-105,114,80,50,-26,77,54,36,42,-71,-64,-111,118,99,-121,-100,-128,56,-75,-10,-74,30,36,93,-122,16,-50,-105,85,19,-84,-99,-72,-20,96,-63,75,-53,59,-86,90,-23,-39,-73,96,-118,-127,-9,-106,42,-84,-122,108,-18,81,29,-58,46,94,12,-2,-94,-75,33,85,61,-100,122,2,101,106,45,-49,-43,-63,22,-128,94,5,-115,38,35,54,-8,15,35,87,-114,-76,110,37,-50,20,-114,84,115,-13,48,54,14,-58,-93,112,43,77,9,32,-99,-91,-55,34,-82,23,-40,17,62,66,84,82,-3,117,-100,33,32,19,-100,102,93,101,-33,-103,112,-38,114,38,-1,-89,-90,-86,-9,-101,-66,41,-71,-113,5,21,-40,50,89,-73,123,5,45,-75,68,58,-107,-67,3,-64,89,45,-117,51,16,-119,36,69,-78,-18,94,-18,61,22,-124,97,-55,-97,112,19,119,7,65,-109,23,-15,88,-47,-103,-84,-62,106,-5,-108,73,-109,34,-116,33,81,-41,-102,81,67,20,67,-46,-40,-9,10,-49,121,-57,61,-33,28,42,-36,-67,-113,-38,-94,-89,-67,-28,-17,52,-116,-96,-51,117,29,-84,-53,-38,-53,-44,54,-110,98,-76,117,18,83,10,-62,-36,102,104,80,124,34,15,108,47,91,-112,-10,-116,66,-68,-123,55,-67,87,51,74,-47,25,-122,-34,57,32,96,-96,-64,67,-41,31,-124,-87,-15,76,-125,1,-77,13,99,47,-44,74,97,67,-4,108,-9,-16,44,36,-53,3,-120,105,99,-55,-34,-30,118,8,106,40,-95,-122,-65,14,-23,86,-26,-64,114,89,-59,97,-10,71,10,-108,-60,61,-87,-19,-4,-28,-1,-32,35,-123,55,109,-47,-126,-1,-124,-36,120,3,-107,-17,121,-80,31,25,79,-32,127,-19,103,-4,118,21,-55,70,125,-95,-104,-78,-2,-24,90,-33,97,-79,-92,20,126,49,60,121,41,56,120,113,-102,74,1,-28,44,46,-19,-46,100,-127,77,-64,-8,-12,-13,11,-15,89,22,-95,86,36,-105,110,84,-83,37,-40,-56,-92,19,-82,-17,-25,83,33,4,-111,76,-85,-54,35,-107,-72,127,76,89,-103,-123,28,-96,-47,95,77,107,-35,-98,52,59,-76,75,87,-14,-56,-27,75,117,-34,67,91,-92,-95,-45,-116,-13,-81,5,-35,83,10,85,-112,-38,117,89,43,123,-73,-43,104,36,-106,-80,47,113,-82,51,36,93,33,-84,11,-53,-128,-84,82,-86,-118,0,-33,-6,44,-122,35,81,-71,-44,-73,-64,126,98,-20,-49,-126,-104,46,44,-63,-17,-62,-74,-61,-48,-28,67,-25,-99,92,66,73,-38,49,45,-69,92,-26,-91,80,105,-30,48,-76,85,108,-98,-56,-95,102,47,6,-70,-118,-31,60,-112,-62,89,115,-78,-85,4,36,-1,72,-17,-100,-56,-2,-104,24,-54,-56,-92,-106,-60,-115,-53,-106,49,85,33,-79,54,-77,44,-120,47,41,-60,44,-8,-28,5,90,114,42,74,106,-57,-81,79,83,-67,-97,-90,-120,-16,-57,-88,34,9,7,-107,-59,-92,40,71,-32,113,-85,89,33,89,-58,-78,-50,-22,58,96,66,-19,-125,-39,-42,90,25,70,-104,-31,-90,-21,98,118,-111,102,-35,44,-117,60,86,-62,-47,-4,14,-88,46,79,6,-81,-5,101,99,-12,96,43,-27,42,65,-3,-120,-93,112,32,-6,-111,89,105,122,-67,50,57,-54,-126,-46,35,48,-41,0,-98,71,-22,45,-125,7,81,-26,23,-60,118,25,101,-95,-128,117,22,-126,-29,74,86,-39,-53,65,-86,64,-62,-77,-8,90,-85,54,-28,-128,124,-1,-112,127,105,-124,-40,63,123,123,-77,13,-84,-5,53,-31,-46,-74,-36,27,-16,13,-124,-98,-24,-115,-83,48,101,92,13,-98,-5,-111,-10,-40,-51,-115,-81,-52,-82,24,102,97,98,109,107,-46,-1,109,50,-48,40,-23,71,34,-70,-13,-111,110,43,-41,-9,108,-1,37,45,-72,-28,-45,-50,9,121,-66,-4,-86,-10,18,16,64,-119,-36,33,-13,5,-125,93,-6,19,-61,126,95,48,-116,11,125,-62,-6,67,-1,111,-54,2,45,82,-103,-4,-66,19,20,18,15,48,94,-91,119,33,82,-15,116,-24,15,67,30,111,-106,90,13,80,-20,71,65,66,108,124,-94,-104,-124,120,-95,59,-80,16,83,-101,90,14,-96,25,-64,-38,98,-24,-17,-69,-89,108,-29,-30,-101,-11,99,13,-56,53,72,52,105,105,88,2,26,75,23,-13,3,122,-114,71,-70,-29,-9,-98,58,67,-122,87,126,7,-30,111,-61,69,7,11,-6,103,-6,-16,-32,56,23,94,-31,29,-63,-47,5,67,61,110,43,57,54,41,28,74,-65,97,-22,74,-115,-126,86,0,-50,-83,-93,-3,116,5,22,-29,21,-79,34,-54,68,77,-34,-76,84,-116,-102,-31,-13,-55,64,85,-42,44,43,-115,85,100,-104,-60,103,-54,-65,120,-69,44,59,-102,107,81,89,-79,-44,121,70,-24,-110,51,76,75,117,-7,110,61,-102,42,-28,-28,-67,-12,-19,102,-27,18,115,121,-46,68,-124,-81,-110,-33,108,56,-83,30,-97,4,-79,-17,88,114,-86,105,17,-9,0,61,101,11,7,14,-100,58,-38,-42,27,121,119,-48,56,62,94,39,-20,-49,7,26,108,-99,-44,120,-2,87,-117,-78,-56,64,76,-83,26,-105,21,-3,81,8,-74,-100,67,50,9,58,-14,-118,-96,-13,27,65,-122,-73,-83,102,-40,-60,-120,-13,16,51,-51,112,-81,-15,-7,127,100,-116,-20,83,-72,59,-39,121,-43,114,55,97,-9,-53,107,56,45,49,106,-102,-126,-54,-44,59,18,-64,-75,101,62,-123,-110,-70,-17,24,57,-44,-122,104,-119,43,-40,18,-113,-107,25,122,-90,-19,123,74,-86,-35,107,102,-51,-22,56,-14,109,-100,-124,1,-85,35,-16,-124,-21,-65,1,30,-75,55,67,-121,-78,109,-102,82,-94,-23,-60,46,-104,0,-96,6,39,12,101,62,-39,37,-84,-92,3,48,68,34,-47,26,-67,60,-2,25,118,-110,77,91,46,2,43,103,-85,-107,-23,83,-23,-71,-110,-7,42,43,-82,16,57,-55,-102,-52,-32,32,-111,-70,75,116,116,-11,-44,-75,1,-14,-123,-128,-85,31,71,33,78,-72,-102,70,48,-72,-15,60,56,38,79,93,-83,114,75,-6,120,-78,25,-127,82,112,-37,-90,-92,-121,-112,-35,119,8,-32,-35,77,58,-9,109,-107,69,-21,11,-42,-128,-70,48,-23,-30,-78,-81,-123,30,-40,-8,-127,106,9,64,-78,-51,122,95,81,-109,-15,-43,118,27,-92,88,-109,37,-106,52,-62,-8,119,-45,73,65,127,-96,53,-115,-125,46,89,47,115,8,70,71,-40,-107,15,24,-119,-64,41,115,54,-11,-108,-103,-20,6,104,-67,-8,95,90,102,19,15,-22,73,13,-7,113,55,-53,-123,51,-110,40,37,-103,-83,-61,34,114,59,-25,-113,87,-103,-26,-10,88,-121,-65,-79,92,-63,123,-62,59,31,-87,-11,31,113,14,88,23,25,35,-49,-21,-83,-59,53,109,-72,-22,-64,89,59,-104,-42,24,52,-60,62,91,3,7,-21,61,15,-117,-109,65,-1,-39,25,-34,-37,26,-2,62,-51,61,24,50,-15,-32,-48,-55,25,36,24,6,99,94,-25,86,-84,-30,-95,-102,-94,-53,29,-81,65,69,-85,65,117,-7,0,-23,-66,-75,127,62,-108,10,-5,-4,66,29,-59,41,-82,-55,58,65,9,-128,55,-67,-58,-28,123,-121,99,-70,-99,11,-6,122,-108,119,-18,1,78,61,103,121,-104,117,-68,-22,-108,64,31,-68,-68,52,-96,41,58,-54,11,-26,118,75,14,-54,21,-119,60,-66,-19,-64,11,-5,76,-9,-97,81,-126,72,62,-115,64,23,117,65,73,-121,-87,-40,-48,-82,90,73,-91,42,57,-53,54,6,-11,102,-104,0,-117,70,52,103,-56,104,-1,-103,-12,32,59,123,12,-75,-104,16,-123,31,-35,55,20,-116,-109,-50,-44,-63,24,35,76,-116,-29,-32,16,-43,-68,-56,-115,32,109,-9,-34,126,-39,-74,74,-46,-19,-105,-82,-115,32,17,94,105,-103,-50,68,-121,-29,-7,53,74,77,-123,98,-68,37,62,-8,-21,-23,-99,4,-80,-103,-58,45,-2,-95,58,5,35,19,-37,-65,108,-14,-90,35,-53,-123,28,-5,39,-21,-38,17,70,-53,30,94,62,24,-74,34,14,101,46,20,-61,94,-121,125,-122,88,-127,36,-97,-98,110,80,80,14,72,10,8,95,4,50,113,27,-124,54,-117,-48,122,-39,52,8,94,61,40,-69,21,-34,7,-56,-90,-123,24,23,57,89,-87,-97,-80,-16,63,-50,76,-118,-25,-17,90,24,-4,-112,32,-94,58,-32,-12,11,28,48,-38,118,-69,107,92,61,-104,116,-62,-112,55,-110,0,127,-46,-54,-57,17,116,54,-36,-90,114,-39,-32,53,33,-69,37,72,-70,121,60,-84,22,-95,-74,-105,-7,-67,-41,-49,55,98,-57,60,-51,-107,31,48,48,-72,-38,-35,-5,29,65,-102,78,79,-8,71,-113,122,90,76,-55,-31,77,102,-66,107,-128,112,101,122,-62,-83,111,126,101,-75,-55,-118,68,52,-128,115,76,63,32,-6,90,6,100,-109,-59,98,19,109,-1,114,84,-58,-52,79,95,121,114,-77,-52,56,-114,-13,67,91,-51,50,-94,-115,113,-58,-33,56,55,-92,-120,80,-85,-125,126,-114,44,-126,22,-29,113,-82,-92,91,63,-39,-34,-90,-21,43,-3,113,-5,-81,-91,69,120,-59,-126,127,66,43,113,-111,47,-99,-46,-73,55,-13,-7,73,110,37,-76,68,13,105,94,-36,108,10,-127,-76,10,126,100,21,-117,-80,21,-95,94,-79,77,-72,-63,98,24,93,-124,7,25,-15,84,-62,-99,28,-82,-99,113,-65,13,62,-51,-117,37,115,-125,-40,-96,85,70,31,-27,26,2,57,-15,43,-112,-36,-72,-5,106,44,126,-97,111,-31,-66,-89,76,-114,51,-111,120,69,56,-106,-70,1,105,-54,-56,-8,-123,-92,-71,40,-20,-52,-93,-102,76,-104,48,77,76,-30,53,-113,40,-16,88,44,34,-107,53,18,95,-21,123,-115,-28,53,21,47,76,82,-58,-114,22,-104,-97,-90,73,109,7,-108,-96,-30,89,-84,-46,-47,-62,110,-128,25,-54,-75,55,-62,121,42,69,-62,54,25,7,-75,122,87,-68,88,-83,-95,38,-100,-103,-96,-57,74,109,-34,72,51,86,89,66,120,85,18,-84,95,101,-86,-32,15,48,-104,62,-99,115,43,-14,76,76,-92,-5,27,-8,41,-114,-74,50,-77,-67,-97,-109,16,106,-36,-52,85,16,50,-68,-27,-22,-99,-112,122,63,-15,64,23,23,121,54,-31,64,126,76,16,-57,18,-75,97,-23,-94,-94,72,-53,-40,30,-55,-63,87,-13,116,9,-64,-72,11,-90,-45,11,59,44,110,28,-105,-80,62,-27,20,46,-7,45,57,5,35,126,29,77,-91,-65,-60,10,-56,-115,-42,-17,115,-67,34,56,12,39,-119,-66,-20,22,-39,-102,54,108,1,-75,107,14,-104,-87,-127,-17,-88,33,103,-71,-85,23,-76,-95,-94,107,-102,92,-96,121,61,-98,78,-28,-33,33,75,32,-10,-14,-125,-96,-72,-4,10,7,-65,-52,-27,-71,92,100,61,45,87,9,-43,-52,110,-70,19,-110,45,-66,-74,-126,91,-27,106,58,-110,114,-86,-77,-52,-63,-50,67,-65,-54,33,37,116,64,49,76,-7,-115,22,-105,-124,50,19,81,-126,86,124,-5,-37,-48,19,-65,32,-21,80,-124,-93,-23,-25,16,24,97,65,29,51,56,-79,80,-117,-50,14,-23,-77,87,96,125,-52,49,2,13,55,61,107,93,-106,-116,102,-11,-37,-23,-119,-43,53,-39,-86,0,-96,19,13,15,15,112,24,76,-73,79,-76,-127,99,90,-18,63,119,3,-29,38,111,34,-66,111,-34,31,-29,-95,24,-70,5,-15,65,86,-43,16,76,-127,-120,21,6,-29,97,53,-31,-57,-39,-117,83,-48,-99,38,126,56,-78,-18,67,43,72,100,-96,-37,109,89,-92,94,-88,121,36,112,-33,-42,-69,-99,112,116,-80,-42,49,5,20,124,26,-32,26,-118,-28,65,22,13,-105,-98,81,124,40,52,-76,-104,97,82,59,96,-99,-27,-46,-74,-125,64,-36,-31,114,-28,-83,-61,81,-81,8,-49,42,36,48,-81,12,68,-80,83,38,-46,-115,93,-86,-56,62,-52,-36,-88,7,-85,-80,5,38,-106,-8,-94,-125,-81,123,21,122,-112,45,116,-37,81,48,-122,93,32,-120,48,-28,-85,-99,50,-47,-67,-109,78,-14,-79,10,-98,56,41,-22,-20,10,74,94,-30,-120,110,50,74,86,91,51,-86,43,-44,11,-11,65,127,-97,-24,-31,119,-16,-73,-66,87,-95,109,-64,98,-127,45,-30,24,-11,61,54,76,109,24,126,45,-1,-24,64,-28,28,-113,114,-32,-103,-125,122,95,102,-33,-7,-25,-28,-101,-7,63,109,111,-9,-45,73,-111,-41,-48,-70,-40,-113,28,-32,-41,-95,76,33,-112,-53,-106,75,117,71,-94,81,19,19,53,96,-9,125,-82,40,6,85,65,36,68,-91,59,9,65,91,-67,-34,121,65,125,-25,-38,-107,-106,-122,-83,20,109,45,122,-103,-31,-42,84,-42,23,-57,-69,49,27,41,-116,78,3,-65,-28,59,-52,-101,-29,-91,-29,37,86,113,119,-51,-104,-19,-84,42,-113,90,125,-32,65,37,-21,119,11,126,-13,-37,-49,59,-80,60,-114,90,7,-117,-22,-84,-50,4,69,58,-93,106,110,-77,-46,125,93,78,-124,-20,73,-42,75,-60,-52,-59,80,-5,-105,6,-14,-58,-72,-59,34,59,-96,-46,-102,76,-8,105,-49,-79,-47,-81,-94,93,77,-100,-119,-115,-115,-102,-68,69,107,-126,-86,-103,83,91,-26,-42,-84,73,-54,5,-104,-85,-61,-28,100,22,-71,-126,97,-43,-128,38,41,88,112,94,39,-84,-55,-119,-115,36,60,107,1,87,-45,-114,-80,-9,88,-105,-91,-67,90,-111,95,-96,-113,-103,-70,-24,91,-113,-122,-70,-83,-92,121,-20,117,37,-10,-105,126,82,89,81,-2,-118,-21,36,-9,-85,-103,124,65,-6,-45,118,-33,-5,122,-113,124,87,-30,58,-47,-43,-10,54,-116,88,44,-17,29,94,-59,-106,41,54,101,-86,98,-116,-12,106,-12,95,-29,13,-103,72,-73,55,6,122,124,-106,79,54,17,-93,7,-101,-72,69,-102,-43,71,31,-44,92,28,37,-104,127,-7,54,-50,-74,-35,-125,-16,-119,-17,28,-44,122,117,63,92,-23,14,82,-28,122,-90,-38,26,88,22,-74,127,115,-128,111,61,-41,-9,-104,31,112,29,37,53,-3,52,58,-27,66,-73,-76,27,78,-33,92,-125,39,95,110,-96,-61,-16,-125,80,-107,44,101,63,114,-101,47,-47,124,-31,21,-99,-57,46,24,-24,18,-104,121,68,-113,-76,37,-71,102,59,-10,-124,112,121,123,91,78,-14,-17,32,-82,2,49,102,-47,-30,-83,-19,-3,-50,67,-42,41,-21,-92,-72,117,-74,-111,97,26,18,-26,-78,104,67,41,48,122,-19,108,105,64,-45,-111,-45,43,-66,-80,115,84,-36,81,-31,59,28,60,-10,125,30,72,-64,105,45,52,-74,11,-16,38,-118,-3,98,-46,-77,40,-69,70,-114,-77,60,-70,123,83,-80,-102,42,100,81,109,-77,115,-127,7,-87,-22,8,-48,57,-72,-41,-41,-9,3,80,-54,-30,103,-16,-54,118,105,-87,-37,22,71,-33,-48,121,62,116,-90,66,-38,22,-105,19,-21,83,-41,112,-39,-81,-28,-109,31,-95,-125,-1,54,72,-84,-108,112,-114,89,120,-73,20,110,-55,-126,-58,-93,68,-105,65,-107,122,8,121,-103,-97,61,97,-74,99,-65,46,1,7,57,-122,69,100,-112,-94,94,116,23,106,85,-105,79,-128,-108,39,-111,-87,83,-66,112,24,-102,-7,-72,-97,-78,-8,99,-114,-113,79,115,89,-51,-88,83,28,-90,56,113,57,-102,40,-104,89,-76,-8,38,-67,-5,-9,-18,-121,38,27,-25,-29,-110,3,-10,16,123,-40,-93,116,-36,-20,-73,-18,-111,87,-123,113,120,-121,-97,69,-47,105,-68,-111,-97,-53,-94,-81,114,77,92,46,-37,-80,-18,108,-9,-69,-25,27,-46,-101,-86,53,54,-109,-44,-11,85,-61,-87,-17,34,-25,79,101,-46,-22,-30,99,85,-65,-30,12,117,-80,-23,54,-16,106,-89,-29,-120,64,1,-111,-94,-75,82,68,-3,120,11,-52,-103,87,22,-17,-46,-117,-63,112,12,-123,-52,71,-121,-122,-55,-125,101,-41,105,52,-53,-9,60,56,-3,-1,85,-112,15,127,70,4,-7,48,-72,34,-29,11,-103,114,-46,56,-109,17,-32,9,89,114,-1,92,86,-55,11,-87,-80,53,-18,-4,42,-90,86,15,-50,49,120,-46,22,67,57,-59,90,-97,110,96,119,43,100,-90,-54,-89,81,21,-80,-14,64,-47,126,-17,92,-37,51,40,121,-34,110,-99,-54,36,-73,85,-43,52,-30,-9,121,-18,-51,102,91,-116,-71,95,86,-55,95,-35,74,118,101,87,-114,20,-48,117,-60,-76,55,49,-108,74,-22,-43,20,41,79,-96,114,-12,-68,-44,43,126,-28,19,83,111,-128,102,-19,-110,56,71,-77,89,17,-16,-26,32,-27,-127,-14,-37,62,-34,-107,126,110,104,74,6,85,79,8,-74,107,30,126,-52,80,-11,29,108,65,-128,29,109,-2,123,59,28,-107,110,62,110,-123,-68,71,-39,-20,-57,-108,38,-36,126,-12,100,112,-103,-32,55,98,-5,-82,89,-41,88,36,-92,99,-56,118,97,12,113,-16,88,71,76,-96,-77,117,-5,60,-84,23,45,-41,31,46,33,0,-3,69,38,4,-119,-20,-115,96,-50,28,-9,-38,85,-113,-106,36,3,-96,-80,-23,7,-19,101,-111,92,-107,-9,116,53,-120,5,-3,-13,-87,1,-115,-35,-125,-89,-23,19,53,69,117,-67,-107,-33,-122,-32,-10,-69,-122,75,-116,-69,-35,43,-74,-107,109,18,107,-85,-48,52,-38,83,50,115,-101,-39,5,62,-7,-46,99,97,44,31,78,27,105,-117,-72,-94,-69,108,-86,-59,-30,49,-48,-22,-124,-2,-114,-19,-126,-29,-122,-21,67,15,60,-111,-55,35,-22,81,37,32,-75,0,56,-18,47,108,41,0,-120,122,-4,95,51,-68,-20,78,125,77,119,-9,-115,109,59,79,-128,-124,-114,9,7,91,-8,-80,11,-112,29,-32,-56,11,-50,-82,29,74,-19,-55,-6,12,-115,-6,18,15,-123,72,-15,-62,12,1,43,82,-30,-17,2,26,-30,-85,58,63,-56,-117,-100,52,-90,7,-69,-26,121,-92,111,5,-61,96,-90,63,-18,-11,60,-52,-81,99,125,25,67,-71,82,110,97,51,122,39,33,28,93,-116,123,-107,48,-64,-9,92,-31,-62,-68,-102,-103,-107,48,-100,-2,83,127,-82,41,-105,-7,-120,113,10,58,23,-122,84,-18,-37,20,-82,11,42,46,-95,16,-105,-58,-78,62,-82,-57,39,-18,106,0,52,-51,-59,36,76,98,124,-108,-67,-40,73,-3,19,45,-45,121,20,76,0,-21,-57,46,90,-18,79,66,-42,-56,-47,-39,-120,90,79,103,-104,34,-30,-67,120,94,35,59,25,-41,-128,125,88,88,68,-48,-25,-47,-10,-12,125,92,20,-99,55,66,118,-42,114,46,67,-9,43,37,119,-84,-8,79,-21,123,82,48,76,-63,-17,-23,27,-108,53,97,95,-109,41,68,-50,-32,-20,-119,-71,80,-57,-9,-16,-4,-36,17,66,19,82,-113,-76,39,23,-128,47,9,-87,30,-35,-48,100,96,15,-4,-58,-86,-10,-1,83,-52,17,-102,-88,37,-13,-2,-92,-23,-52,-89,-112,-33,-47,60,28,122,-101,-99,-67,92,-88,77,118,101,-96,-123,-108,-108,-43,102,45,44,-48,84,110,-25,-74,86,50,-7,-109,-9,-92,59,-67,79,29,23,53,-57,73,-89,9,1,81,65,17,31,-107,8,92,126,53,-119,52,98,60,-126,-82,15,79,-15,110,111,-82,22,88,-110,-113,-49,-124,-127,88,-51,-48,-87,-55,-17,62,45,64,41,-111,-95,-46,-122,-91,116,-125,-55,103,75,-29,95,-56,29,-115,-36,-41,-56,88,-100,-81,-33,-81,29,-11,-90,-17,77,-10,-127,-121,-6,30,-4,-24,30,-124,109,112,67,25,-57,4,34,79,126,126,-109,-47,-101,-38,-9,117,-76,37,-43,-120,-86,54,85,-70,56,39,-15,-40,-80,26,3,-64,-45,-35,-69,-120,70,-97,24,-29,-53,69,19,-113,-112,-53,-78,-106,-74,94,-61,78,-57,-58,97,46,58,62,-21,-121,-97,-38,-16,35,35,-120,-127,125,2,-30,54,-44,-17,9,30,-20,30,-53,117,52,29,-92,95,16,60,102,-29,54,-66,-110,122,10,-113,-78,68,-120,-71,-96,111,-37,9,39,-11,111,-52,-25,107,-77,-9,28,81,0,-55,-98,43,-97,-37,69,-123,-4,23,102,-98,106,-11,98,-42,5,115,-84,-121,-86,-78,11,-69,34,-115,3,-94,-104,-9,-38,51,-113,29,83,-39,86,54,-27,-116,-108,61,27,10,-44,65,-86,-91,34,-40,38,99,-14,101,-82,126,-56,-8,-102,37,-52,102,-36,126,74,95,-83,113,-37,-66,-55,-20,-98,-115,96,-49,-44,-123,-1,20,75,-2,-90,10,-61,107,94,87,-63,74,0,-55,2,41,-103,-123,-85,-13,-39,-107,36,-47,-21,6,-70,98,-119,78,52,26,-40,8,72,117,-78,115,76,-57,43,-60,-25,-87,36,83,54,127,127,-78,19,98,-30,125,86,121,124,62,-32,-96,-110,20,97,-126,-104,13,6,-122,-105,36,55,105,-121,-48,-83,0,-113,18,-114,-39,9,20,-20,-23,-115,-49,83,-107,121,70,-30,86,31,-48,-23,125,-67,-114,48,-86,21,-90,83,-79,64,-107,-60,-91,54,69,-73,-77,88,99,-10,15,-29,57,-128,-47,-96,101,-50,112,120,-85,-16,-78,27,7,116,-128,18,-11,49,-19,41,-33,15,-35,-67,84,-15,-57,36,-73,41,15,77,9,83,39,-54,27,-82,33,115,4,-60,101,46,-117,-56,-18,74,100,126,-27,-48,-25,10,-51,126,-41,-81,-95,-60,9,85,99,-6,80,-16,27,77,108,44,46,114,-26,20,-69,92,15,98,107,-114,-59,-87,28,-61,-121,84,125,-44,-125,-13,116,-55,-120,94,-84,-75,-86,34,1,-25,121,-80,26,-97,43,-12,31,75,-58,84,2,12,-109,-61,-68,-21,110,92,-27,-117,13,36,21,-3,107,-125,80,45,87,-108,22,41,-61,75,-115,-29,29,33,-111,-22,-4,-94,8,97,24,-124,25,25,-52,-7,-74,108,-36,-114,12,-32,3,84,75,-60,34,-88,-10,84,96,12,17,-119,114,-41,41,-3,-48,-16,1,-14,21,-115,-11,96,-25,-36,10,-14,-71,-3,-83,85,6,-91,-18,81,-108,36,-33,-59,70,-80,-81,11,-31,19,74,107,-22,91,8,29,57,-95,-80,-40,61,-82,-110,122,97,-114,-102,123,-77,83,122,-24,46,-121,-28,18,111,-47,-35,-120,-102,114,-93,115,22,-82,113,-78,77,76,-66,117,65,28,86,27,82,79,-128,-88,119,63,-31,87,11,124,-10,-99,-71,94,-89,76,-82,-124,101,58,-53,-74,9,-114,-50,31,-3,-51,-119,57,-29,-75,92,113,-47,40,-103,-81,-43,-12,-100,-102,4,-36,12,-26,-70,-118,27,-88,50,28,-73,-113,-94,-1,122,4,-57,-126,124,100,70,62,-87,7,-91,100,-91,-102,-56,34,102,118,44,-47,-90,24,-32,-99,30,-98,36,-124,113,11,-126,-15,-84,72,117,-46,3,-18,97,-38,-73,24,-47,109,-4,-50,-86,88,-112,-97,-65,112,-73,72,-37,20,-125,-29,-43,51,-2,-16,94,119,58,-101,-48,-116,121,94,103,64,52,48,51,-113,-70,106,41,-44,82,111,-106,71,-62,-105,-66,-78,78,71,115,-123,-50,4,33,22,88,-40,-111,-82,-46,-34,-67,120,-58,-28,-18,-126,-52,-31,-109,84,11,-94,10,94,-15,-89,-106,-62,125,-6,98,-39,62,-11,-34,12,12,-18,-50,-60,-78,43,104,36,50,-62,-58,-14,-36,-104,-88,21,78,-18,43,-124,-118,-68,-35,52,-62,102,18,25,87,-106,-78,74,29,127,98,-99,-2,-86,37,6,80,-31,86,77,112,-51,121,70,-126,7,35,-85,3,-24,-78,-109,114,-25,-58,-127,120,-78,26,8,-100,-116,10,-23,-20,14,-18,42,120,-75,79,60,44,-58,102,-104,69,25,119,28,103,-70,22,25,26,124,3,-11,-15,10,87,120,-23,-68,-44,7,93,9,-8,125,-15,-79,-70,108,15,-66,-90,-82,-5,-14,115,-122,-75,74,127,-100,108,4,58,66,-106,-117,1,6,11,-69,-96,55,-65,-8,102,-72,-41,75,76,-2,16,-10,78,-42,59,-72,-1,-31,-100,113,26,-66,48,-4,103,57,71,-94,-2,14,-28,-36,22,-8,-25,39,-51,25,99,91,70,63,11,-124,69,46,-34,-21,99,-70,-110,-90,32,116,34,-74,82,43,-104,-56,31,-117,-43,67,12,-72,115,-84,-62,-9,21,-30,105,82,94,86,12,40,-47,-39,40,-114,-67,-89,-72,-64,-62,-124,-105,32,95,-124,-41,-14,48,26,8,-116,-57,24,-45,-45,-75,-40,-111,-118,107,116,66,-97,-57,-79,-96,-85,-55,49,-55,-32,-87,-76,-12,42,-85,85,-16,75,-41,-112,49,-29,-28,-124,-10,-60,62,-2,-112,15,-36,-33,81,-95,117,120,51,99,-64,30,11,106,-21,-42,43,-59,51,117,12,45,3,-116,110,88,104,60,67,102,-74,108,80,-58,-108,28,38,-108,16,63,100,-24,-36,-1,70,97,7,32,118,-112,-122,-31,-36,106,10,115,-89,35,58,-15,-5,63,19,-123,-99,-11,-94,108,-18,-13,70,-12,-1,126,-15,-9,-25,113,111,66,-59,81,-88,-114,97,-121,-76,16,8,72,62,3,-107,106,-43,92,-91,63,60,-90,-61,96,-9,93,-24,-17,-22,38,-24,29,-27,-36,-25,117,99,-10,76,66,-77,-71,33,-87,100,48,-13,-122,-49,56,-104,72,72,-84,103,72,115,-10,45,19,-22,52,-97,-77,-107,50,-81,-93,-79,102,-71,46,73,6,-21,-52,5,-96,32,112,15,-44,-4,110,5,-26,-85,89,-87,35,73,-17,59,-95,-5,-123,94,127,-83,9,-122,-64,-58,-72,-111,33,-91,-82,56,63,1,6,-67,-106,-55,26,-12,-105,-32,115,-38,-95,118,117,67,-17,95,99,120,-75,2,28,-113,-105,117,-15,111,22,-46,116,25,-91,40,44,84,37,-4,-66,-125,15,69,-14,49,-12,-11,87,-68,20,91,110,117,125,-65,-34,-36,84,-29,-87,-27,60,-66,-118,-125,49,69,81,54,7,-119,53,-23,-60,-9,22,-116,-125,-58} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/ref_functions.h b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/ref_functions.h new file mode 100644 index 0000000..5a25ffa --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/Ref_Implementations/ref_functions.h @@ -0,0 +1,250 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _REF_FUNCTIONS_H_ +#define _REF_FUNCTIONS_H_ + +#include "arm_math.h" +#include "arm_nnfunctions.h" +//#include "arm_nnsupportfunctions.h" +#include "fully_connected_testing_weights.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* + * + * Convolution reference implemenation + * + */ + + void arm_convolve_HWC_q7_ref(const q7_t * Im_in, // input image + const uint16_t dim_im_in, // input image dimention + const uint16_t ch_im_in, // number of input image channels + const q7_t * wt, // kernel weights + const uint16_t ch_im_out, // number of filters, i.e., output image channels + const uint16_t dim_kernel, // filter kernel size + const uint16_t padding, // padding sizes + const uint16_t stride, // stride + const q7_t * bias, // bias + const uint16_t bias_shift, const uint16_t out_shift, q7_t * Im_out, // output image + const uint16_t dim_im_out, // output image dimension + q15_t * bufferA, //buffer space for input + q7_t * bufferB //buffer space for output + ); + + void arm_convolve_HWC_q7_ref_nonsquare(const q7_t * Im_in, // input image + const uint16_t dim_im_in_x, // input image dimention x + const uint16_t dim_im_in_y, // input image dimention y + const uint16_t ch_im_in, // number of input image channels + const q7_t * wt, // kernel weights + const uint16_t ch_im_out, // number of filters, i.e., output image channels + const uint16_t dim_kernel_x, // filter kernel size x + const uint16_t dim_kernel_y, // filter kernel size y + const uint16_t padding_x, // padding sizes x + const uint16_t padding_y, // padding sizes y + const uint16_t stride_x, // stride x + const uint16_t stride_y, // stride y + const q7_t * bias, // bias + const uint16_t bias_shift, const uint16_t out_shift, q7_t * Im_out, // output image + const uint16_t dim_im_out_x, // output image dimension x + const uint16_t dim_im_out_y, // output image dimension y + q15_t * bufferA, //buffer space for input + q7_t * bufferB //buffer space for output + ); + + void arm_convolve_HWC_q15_ref(const q15_t * Im_in, // input image + const uint16_t dim_im_in, // input image dimention + const uint16_t ch_im_in, // number of input image channels + const q15_t * wt, // kernel weights + const uint16_t ch_im_out, // number of filters, i.e., output image channels + const uint16_t dim_kernel, // filter kernel size + const uint16_t padding, // padding sizes + const uint16_t stride, // stride + const q15_t * bias, // bias + const uint16_t bias_shift, const uint16_t out_shift, q15_t * Im_out, // output image + const uint16_t dim_im_out, // output image dimension + q15_t * bufferA, //buffer space for input + q7_t * bufferB //buffer space for output + ); + void arm_convolve_HWC_q15_nonsquare_ref(const q15_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q15_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q15_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q15_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB); + + void arm_depthwise_separable_conv_HWC_q7_ref(const q7_t * Im_in, // input image + const uint16_t dim_im_in, // input image dimention + const uint16_t ch_im_in, // number of input image channels + const q7_t * wt, // kernel weights + const uint16_t ch_im_out, // number of filters, i.e., output image channels + const uint16_t dim_kernel, // filter kernel size + const uint16_t padding, // padding sizes + const uint16_t stride, // stride + const q7_t * bias, // bias + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + q7_t * Im_out, // output image + const uint16_t dim_im_out, // output image dimension + q15_t * bufferA, //buffer space for input + q7_t * bufferB //buffer space for output + ); + void arm_depthwise_separable_conv_HWC_q7_ref_nonsquare(const q7_t * Im_in, // input image + const uint16_t dim_im_in_x, // input image dimention x + const uint16_t dim_im_in_y, // input image dimention y + const uint16_t ch_im_in, // number of input image channels + const q7_t * wt, // kernel weights + const uint16_t ch_im_out, // number of filters, i.e., output image channels + const uint16_t dim_kernel_x, // filter kernel size x + const uint16_t dim_kernel_y, // filter kernel size y + const uint16_t padding_x, // padding sizes x + const uint16_t padding_y, // padding sizes y + const uint16_t stride_x, // stride x + const uint16_t stride_y, // stride y + const q7_t * bias, // bias + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + q7_t * Im_out, // output image + const uint16_t dim_im_out_x, // output image dimension x + const uint16_t dim_im_out_y, // output image dimension y + q15_t * bufferA, //buffer space for input + q7_t * bufferB //buffer space for output + ); + +/* + * + * Fully-connected reference implemenation + * + */ + + void arm_fully_connected_q7_ref(const q7_t * pV, // pointer to vector + const q7_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q7_t * bias, q7_t * pOut, // output operand + q15_t * vec_buffer); + + void arm_fully_connected_q15_ref(const q15_t * pV, // pointer to vector + const q15_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q15_t * bias, q15_t * pOut, // output operand + q15_t * vec_buffer); + + void arm_fully_connected_mat_q7_vec_q15_ref(const q15_t * pV, // pointer to vector + const q7_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q7_t * bias, q15_t * pOut, // output operand + q15_t * vec_buffer); + + void arm_fully_connected_q7_opt_ref(const q7_t * pV, // pointer to vector + const q7_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q7_t * bias, q7_t * pOut, // output operand + q15_t * vec_buffer); + + void arm_fully_connected_q15_opt_ref(const q15_t * pV, // pointer to vector + const q15_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q15_t * bias, q15_t * pOut, // output operand + q15_t * vec_buffer); + + void arm_fully_connected_mat_q7_vec_q15_opt_ref(const q15_t * pV, // pointer to vector + const q7_t * pM, // pointer to matrix + const uint16_t dim_vec, // length of the vector + const uint16_t num_of_rows, // numCol of A + const uint16_t bias_shift, // amount of left-shift for bias + const uint16_t out_shift, // amount of right-shift for output + const q7_t * bias, q15_t * pOut, // output operand + q15_t * vec_buffer); + +/* + * + * Pooling reference implemenation + * + */ + + void arm_avepool_q7_HWC_ref(const q7_t * Im_in, // input image + const uint16_t dim_im_in, // input image dimension + const uint16_t ch_im_in, // number of input image channels + const uint16_t dim_kernel, // window kernel size + const uint16_t padding, // padding sizes + const uint16_t stride, // stride + const uint16_t dim_im_out, // output image dimension + q7_t * bufferA, // a buffer for local storage + q7_t * Im_out); + + void arm_maxpool_q7_HWC_ref(const q7_t * Im_in, // input image + const uint16_t dim_im_in, // input image dimension + const uint16_t ch_im_in, // number of input image channels + const uint16_t dim_kernel, // window kernel size + const uint16_t padding, // padding sizes + const uint16_t stride, // stride + const uint16_t dim_im_out, // output image dimension + q7_t * bufferA, // a buffer for local storage + q7_t * Im_out); + +/* + * + * Other reference implemenation + * + */ + + void arm_relu_q7_ref(q7_t * data, uint16_t size); + + void arm_relu_q15_ref(q15_t * data, uint16_t size); + + void arm_nn_mult_q7_ref(q7_t * pSrcA, q7_t * pSrcB, q7_t * pDst, const uint16_t out_shift, uint32_t blockSize); + + void arm_nn_mult_q15_ref(q15_t * pSrcA, q15_t * pSrcB, q15_t * pDst, const uint16_t out_shift, uint32_t blockSize); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/arm_nnexamples_nn_test.cpp b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/arm_nnexamples_nn_test.cpp new file mode 100644 index 0000000..41088fe --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/arm_nnexamples_nn_test.cpp @@ -0,0 +1,801 @@ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2018 Arm Limited. All rights reserved. +* +* +* Project: CMSIS NN Library +* Title: arm_nnexamples_nn_test.cpp +* +* Description: Example code for NN kernel testing. +* +* Target Processor: Cortex-M cores +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +#include "arm_nnexamples_nn_test.h" + +//#define TEST_SIGMOID +//#define TEST_TANH +#define TEST_POOL +#define TEST_RELU +#define TEST_IP +#define TEST_CONV +#define TEST_NONSQUARE +#define TEST_NNMULT + +int test_index = 0; +q7_t test_flags[50]; +bool test_pass; + +int main() +{ + printf("start tests\n"); + + srand(1); + + // common pointers for testing data + q7_t *test1; + q15_t *test2; + q7_t *test3; + q15_t *test4; + + for (test_index = 0; test_index<50; test_index++) { + test_flags[test_index] = -1; + } + test_index = 0; + +#ifdef TEST_NNMULT +#define NNMULT_DIM 128 + test1 = new q7_t[NNMULT_DIM*2]; + test2 = new q15_t[NNMULT_DIM*2]; + test3 = new q7_t[NNMULT_DIM*2]; + test4 = new q15_t[NNMULT_DIM*2]; + + q7_t * mult_out_q7 = test3; + q7_t * mult_ref_q7 = test3 + NNMULT_DIM; + q15_t * mult_out_q15 = test4; + q15_t * mult_ref_q15 = test4 + NNMULT_DIM; + + for (int i=0;i= 2 || pool_out_opt[i] - pool_out_ref[i] >= 2) + { + printf("Output mismatch at %d, expected %d, actual %d\n", i, pool_out_ref[i], pool_out_opt[i]); + if_ave_pool_match = false; + } + } + if (if_ave_pool_match == true) + { + printf("Outputs match.\n"); + } + + delete[]test1; + delete[]test2; + delete[]test3; + +#endif + +#ifdef TEST_RELU + +#define RELU_DIM 127 + + test1 = new q7_t[RELU_DIM]; + test2 = new q15_t[RELU_DIM]; + test3 = new q7_t[RELU_DIM]; + test4 = new q15_t[RELU_DIM]; + + for (int i = 0; i < RELU_DIM; i++) + { + test1[i] = (rand() % 256 - 128); + test2[i] = (rand() % 65536 - 32768); + test3[i] = test1[i]; + test4[i] = test2[i]; + } + + q7_t *relu_ref_data_q7 = test1; + q7_t *relu_opt_data_q7 = test3; + q15_t *relu_ref_data_q15 = test2; + q15_t *relu_opt_data_q15 = test4; + + printf("Start ref relu q7 implementation\n"); + + arm_relu_q7_ref(relu_ref_data_q7, RELU_DIM); + + printf("Start opt relu q7 implementation\n"); + + arm_relu_q7(relu_opt_data_q7, RELU_DIM); + + verify_results_q7(relu_ref_data_q7, relu_opt_data_q7, RELU_DIM); + + printf("Start ref relu q15 implementation\n"); + + arm_relu_q15_ref(relu_ref_data_q15, RELU_DIM); + + printf("Start opt relu q15 implementation\n"); + + arm_relu_q15(relu_opt_data_q15, RELU_DIM); + + verify_results_q15(relu_ref_data_q15, relu_opt_data_q15, RELU_DIM); + + delete[]test1; + delete[]test2; + delete[]test3; + delete[]test4; + +#endif + +#ifdef TEST_IP + +#define IP_ROW_DIM 127 +#define IP_COL_DIM 127 + + q7_t ip_weights[IP_ROW_DIM * IP_COL_DIM] = IP2_WEIGHT; + q7_t ip_q7_opt_weights[IP_ROW_DIM * IP_COL_DIM] = IP4_WEIGHT; + q7_t ip_q7_q15_opt_weights[IP_ROW_DIM * IP_COL_DIM] = IP4_q7_q15_WEIGHT; + q15_t ip_q15_weights[IP_ROW_DIM * IP_COL_DIM] = IP2_WEIGHT; + q15_t ip_q15_opt_weights[IP_ROW_DIM * IP_COL_DIM] = IP4_WEIGHT_Q15; + + test1 = new q7_t[IP_COL_DIM + IP_ROW_DIM]; + test2 = new q15_t[IP_COL_DIM]; + test3 = new q7_t[IP_ROW_DIM * 3]; + test4 = new q15_t[IP_COL_DIM + IP_ROW_DIM * 2]; + + for (int i = 0; i < IP_ROW_DIM + IP_COL_DIM; i++) + { + test1[i] = rand() % 256 - 100; + } + for (int i = 0; i < IP_ROW_DIM * 3; i++) + { + test3[i] = 0; + } + + q7_t *ip_bias_q7 = test1 + IP_COL_DIM; + + q7_t *ip_out_q7_ref = test3; + q7_t *ip_out_q7_opt = test3 + IP_ROW_DIM; + q7_t *ip_out_q7_opt_fast = test3 + 2 * IP_ROW_DIM; + q15_t *ip_out_q15_ref = test4 + IP_COL_DIM; + q15_t *ip_out_q15_opt = test4 + IP_COL_DIM + IP_ROW_DIM; + + initialize_results_q7(ip_out_q7_ref, ip_out_q7_opt, IP_ROW_DIM); + initialize_results_q7(ip_out_q7_ref, ip_out_q7_opt_fast, IP_ROW_DIM); + initialize_results_q7(ip_out_q7_ref, ip_out_q7_opt_fast, IP_ROW_DIM); + + printf("Start ref q7 implementation\n"); + + arm_fully_connected_q7_ref(test1, ip_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, ip_out_q7_ref, test2); + + printf("Start q7 implementation\n"); + + arm_fully_connected_q7(test1, ip_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, ip_out_q7_opt, test2); + + verify_results_q7(ip_out_q7_ref, ip_out_q7_opt, IP_ROW_DIM); + + printf("Start q7 ref opt implementation\n"); + + arm_fully_connected_q7_opt_ref(test1, ip_q7_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, + ip_out_q7_opt_fast, test2); + + verify_results_q7(ip_out_q7_ref, ip_out_q7_opt_fast, IP_ROW_DIM); + + printf("Start q7 opt implementation\n"); + + arm_fully_connected_q7_opt(test1, ip_q7_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, ip_out_q7_opt_fast, + test2); + + verify_results_q7(ip_out_q7_ref, ip_out_q7_opt_fast, IP_ROW_DIM); + + for (int i = 0; i < IP_ROW_DIM + IP_COL_DIM; i++) + { + test4[i] = (rand() % 65536 - 32768); + } + + initialize_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM); + + printf("Start ref q15 implementation\n"); + + arm_fully_connected_q15_ref(test4, ip_q15_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, test2, ip_out_q15_ref, NULL); + + printf("Start q15 implementation\n"); + + arm_fully_connected_q15(test4, ip_q15_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, test2, ip_out_q15_opt, NULL); + + verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM); + + printf("Start ref opt q15 implementation\n"); + + arm_fully_connected_q15_opt_ref(test4, ip_q15_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, test2, ip_out_q15_opt, + NULL); + + verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM); + + printf("Start opt q15 implementation\n"); + + arm_fully_connected_q15_opt(test4, ip_q15_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, test2, ip_out_q15_opt, NULL); + + verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM); + + initialize_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM); + + printf("Start ref q7_q15 implementation\n"); + + arm_fully_connected_mat_q7_vec_q15_ref(test4, ip_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, ip_out_q15_ref, + test2); + + printf("Start q7_q15 implementation\n"); + + arm_fully_connected_mat_q7_vec_q15(test4, ip_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, ip_out_q15_opt, + test2); + + verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM); + + printf("Start ref opt q7_q15 implementation\n"); + + arm_fully_connected_mat_q7_vec_q15_opt_ref(test4, ip_q7_q15_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, + ip_out_q15_opt, test2); + + verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM); + + printf("Start opt q7_q15 implementation\n"); + + arm_fully_connected_mat_q7_vec_q15_opt(test4, ip_q7_q15_opt_weights, IP_COL_DIM, IP_ROW_DIM, 1, 7, ip_bias_q7, + ip_out_q15_opt, test2); + + verify_results_q15(ip_out_q15_ref, ip_out_q15_opt, IP_ROW_DIM); + + delete[]test1; + delete[]test2; + delete[]test3; + delete[]test4; + +#endif + +#ifdef TEST_NONSQUARE + +/* Use RCONV to differential with square CONV */ + +#define RCONV_IM_DIM_X 10 +#define RCONV_IM_DIM_Y 8 +#define RCONV_IM_CH 4 +#define RCONV_KER_DIM_X 5 +#define RCONV_KER_DIM_Y 3 +#define RCONV_STRIDE_X 1 +#define RCONV_STRIDE_Y 1 +#define RCONV_PADDING_X 2 +#define RCONV_PADDING_Y 1 +#define RCONV_OUT_CH 4 +#define RCONV_OUT_DIM_X 10 +#define RCONV_OUT_DIM_Y 8 + + test1 = new q7_t[RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH + RCONV_OUT_CH]; + test2 = new q15_t[2 * RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH]; + test3 = + new q7_t[RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH + 2 * RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH]; + + for (int i = 0; i < RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH + RCONV_OUT_CH; i++) + { + test1[i] = rand() % 256 - 100; + } + + for (int i = 0; + i < RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH + 2 * RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH; i++) + { + test3[i] = rand() % 256 - 100; + } + + q7_t *rconv_weight_q7 = test1; + q7_t *rconv_bias_q7 = test1 + RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH; + + q15_t *rconv_buf = test2; + + q7_t *rconv_im_in_q7 = test3; + q7_t *rconv_im_out_ref_q7 = test3 + RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH; + q7_t *rconv_im_out_opt_q7 = + test3 + RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH + RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH; + + initialize_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH); + + printf("start conv q7 nonsquare ref implementation\n"); + arm_convolve_HWC_q7_ref_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7, + RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y, + RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_ref_q7, + RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL); + + printf("start conv q7 nonsquare opt implementation\n"); + arm_convolve_HWC_q7_fast_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7, + RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y, + RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_opt_q7, + RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL); + + verify_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH); + + initialize_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH); + + printf("start conv q7 nonsquare ref implementation\n"); + arm_convolve_HWC_q7_ref_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7, + RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y, + RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_ref_q7, + RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL); + + printf("start conv q7 nonsquare basic implementation\n"); + arm_convolve_HWC_q7_basic_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7, + RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y, + RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_opt_q7, + RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL); + + verify_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH); + + initialize_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH); + + printf("start 1x1 conv q7 nonsquare fast implementation\n"); + arm_convolve_HWC_q7_fast_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7, + RCONV_OUT_CH, 1, 1, 0, 0, RCONV_STRIDE_X, + RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_ref_q7, RCONV_OUT_DIM_X, + RCONV_OUT_DIM_Y, rconv_buf, NULL); + + printf("start 1x1 conv q7 nonsquare dedicated function implementation\n"); + arm_convolve_1x1_HWC_q7_fast_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q7, + RCONV_OUT_CH, 1, 1, 0, 0, RCONV_STRIDE_X, + RCONV_STRIDE_Y, rconv_bias_q7, 1, 7, rconv_im_out_opt_q7, RCONV_OUT_DIM_X, + RCONV_OUT_DIM_Y, rconv_buf, NULL); + + verify_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH); + + printf("start depthwise separable conv q7 nonsquare ref implementation\n"); + arm_depthwise_separable_conv_HWC_q7_ref_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, + rconv_weight_q7, RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, + RCONV_PADDING_X, RCONV_PADDING_Y, RCONV_STRIDE_X, RCONV_STRIDE_Y, + rconv_bias_q7, 1, 7, rconv_im_out_ref_q7, RCONV_OUT_DIM_X, + RCONV_OUT_DIM_Y, rconv_buf, NULL); + + printf("start depthwise separable conv q7 nonsquare opt implementation\n"); + arm_depthwise_separable_conv_HWC_q7_nonsquare(rconv_im_in_q7, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, + rconv_weight_q7, RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, + RCONV_PADDING_X, RCONV_PADDING_Y, RCONV_STRIDE_X, RCONV_STRIDE_Y, + rconv_bias_q7, 1, 7, rconv_im_out_opt_q7, RCONV_OUT_DIM_X, + RCONV_OUT_DIM_Y, rconv_buf, NULL); + + verify_results_q7(rconv_im_out_ref_q7, rconv_im_out_opt_q7, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH); + + delete[]test1; + delete[]test2; + delete[]test3; + + test2 = new q15_t[RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH + RCONV_OUT_CH]; // weights + bias + test4 = new q15_t[2 * RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH //buffer + + RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH + 2 * RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH]; // i/o + + for (int i = 0; i < RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH + RCONV_OUT_CH; i++) + { + test2[i] = rand() % 256 - 100; + } + + for (int i = 0; + i < 2 * RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH + + RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH + 2 * RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH; + i++) + { + test4[i] = rand() % 256 - 100; + } + + q15_t *rconv_weight_q15 = test2; + q15_t *rconv_bias_q15 = test2 + RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH * RCONV_OUT_CH; + + rconv_buf = test4; + + q15_t *rconv_im_in_q15 = test4 + 2 * RCONV_KER_DIM_Y * RCONV_KER_DIM_X * RCONV_IM_CH; + q15_t *rconv_im_out_ref_q15 = rconv_im_in_q15 + RCONV_IM_DIM_Y * RCONV_IM_DIM_X * RCONV_IM_CH; + q15_t *rconv_im_out_opt_q15 = rconv_im_out_ref_q15 + RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH; + + initialize_results_q15(rconv_im_out_ref_q15, rconv_im_out_opt_q15, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH); + + printf("start conv q15 nonsquare ref implementation\n"); + arm_convolve_HWC_q15_nonsquare_ref(rconv_im_in_q15, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q15, + RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y, + RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q15, 1, 7, rconv_im_out_ref_q15, + RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL); + + printf("start conv q5 nonsquare opt implementation\n"); + arm_convolve_HWC_q15_fast_nonsquare(rconv_im_in_q15, RCONV_IM_DIM_X, RCONV_IM_DIM_Y, RCONV_IM_CH, rconv_weight_q15, + RCONV_OUT_CH, RCONV_KER_DIM_X, RCONV_KER_DIM_Y, RCONV_PADDING_X, RCONV_PADDING_Y, + RCONV_STRIDE_X, RCONV_STRIDE_Y, rconv_bias_q15, 1, 7, rconv_im_out_opt_q15, + RCONV_OUT_DIM_X, RCONV_OUT_DIM_Y, rconv_buf, NULL); + + verify_results_q15(rconv_im_out_ref_q15, rconv_im_out_opt_q15, RCONV_OUT_DIM_Y * RCONV_OUT_DIM_X * RCONV_OUT_CH); + + delete [] test2; + delete [] test4; +#endif + +#ifdef TEST_CONV + +#define CONV_IM_DIM 16 +#define CONV_IM_CH 16 +#define CONV_KER_DIM 5 +#define CONV_OUT_CH 16 +#define CONV_OUT_DIM 16 + + test1 = new q7_t[CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + CONV_OUT_CH]; + test2 = + new q15_t[CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + + 2 * CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + CONV_OUT_CH]; + test3 = new q7_t[CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + 2 * CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH]; + test4 = new q15_t[CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + 2 * CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH]; + + for (int i = 0; i < CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + CONV_OUT_CH; i++) + { + test1[i] = rand() % 256 - 100; + } + + for (int i = 0; + i < + CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + + 2 * CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + CONV_OUT_CH; i++) + { + test2[i] = (rand() % 65536 - 32768); + } + + for (int i = 0; i < CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + 2 * CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH; i++) + { + test3[i] = rand() % 256 - 100; + } + + for (int i = 0; i < CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + 2 * CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH; i++) + { + test4[i] = (rand() % 65536 - 32768); + } + + q7_t *conv_weight_q7 = test1; + q7_t *conv_bias_q7 = test1 + CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH; + + q15_t *conv_weight_q15 = test2; + q15_t *conv_buf = test2 + CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH; + q15_t *conv_bias_q15 = + test2 + CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH + + 2 * CONV_KER_DIM * CONV_KER_DIM * CONV_IM_CH * CONV_OUT_CH; + + q7_t *conv_im_in_q7 = test3; + q7_t *conv_im_out_ref_q7 = test3 + CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH; + q7_t *conv_im_out_opt_q7 = + test3 + CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH; + + q15_t *conv_im_in_q15 = test4; + q15_t *conv_im_out_ref_q15 = test4 + CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH; + q15_t *conv_im_out_opt_q15 = + test4 + CONV_IM_DIM * CONV_IM_DIM * CONV_IM_CH + CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH; + + initialize_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH); + + printf("start q7 ref implementation\n"); + + arm_convolve_HWC_q7_ref(conv_im_in_q7, CONV_IM_DIM, CONV_IM_CH, conv_weight_q7, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_ref_q7, + CONV_OUT_DIM, conv_buf, NULL); + + printf("start q7 basic implementation\n"); + + arm_convolve_HWC_q7_basic(conv_im_in_q7, CONV_IM_DIM, CONV_IM_CH, conv_weight_q7, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_opt_q7, + CONV_OUT_DIM, conv_buf, NULL); + + verify_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH); + + printf("start q7 fast implementation\n"); + + arm_convolve_HWC_q7_fast(conv_im_in_q7, CONV_IM_DIM, CONV_IM_CH, conv_weight_q7, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_opt_q7, + CONV_OUT_DIM, conv_buf, NULL); + + verify_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH); + + // testing with RGB + printf("start q7 ref implementation for RGB\n"); + + arm_convolve_HWC_q7_ref(conv_im_in_q7, CONV_IM_DIM, 3, conv_weight_q7, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_ref_q7, + CONV_OUT_DIM, conv_buf, NULL); + + printf("start q7 basic implementation for RGB\n"); + + arm_convolve_HWC_q7_basic(conv_im_in_q7, CONV_IM_DIM, 3, conv_weight_q7, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_opt_q7, + CONV_OUT_DIM, conv_buf, NULL); + + verify_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH); + + printf("start q7 RGB implementation for RGB\n"); + + arm_convolve_HWC_q7_RGB(conv_im_in_q7, CONV_IM_DIM, 3, conv_weight_q7, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_opt_q7, + CONV_OUT_DIM, conv_buf, NULL); + + verify_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH); + + // testing q15 + initialize_results_q15(conv_im_out_ref_q15, conv_im_out_opt_q15, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH); + + printf("start q15 ref implementation\n"); + + arm_convolve_HWC_q15_ref(conv_im_in_q15, CONV_IM_DIM, CONV_IM_CH, conv_weight_q15, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q15, 0, 15, conv_im_out_ref_q15, + CONV_OUT_DIM, conv_buf, NULL); + + printf("start q15 basic implementation\n"); + + arm_convolve_HWC_q15_basic(conv_im_in_q15, CONV_IM_DIM, CONV_IM_CH, conv_weight_q15, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q15, 0, 15, conv_im_out_opt_q15, + CONV_OUT_DIM, conv_buf, NULL); + + verify_results_q15(conv_im_out_ref_q15, conv_im_out_opt_q15, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH); + + printf("start q15 fast implementation\n"); + + arm_convolve_HWC_q15_fast(conv_im_in_q15, CONV_IM_DIM, CONV_IM_CH, conv_weight_q15, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q15, 0, 15, conv_im_out_opt_q15, + CONV_OUT_DIM, conv_buf, NULL); + + verify_results_q15(conv_im_out_ref_q15, conv_im_out_opt_q15, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH); + + // depthwise separable conv + initialize_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH); + + printf("start q7 depthwise_separable_conv ref implementation\n"); + + arm_depthwise_separable_conv_HWC_q7_ref(conv_im_in_q7, CONV_IM_DIM, CONV_IM_CH, conv_weight_q7, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_ref_q7, + CONV_OUT_DIM, conv_buf, NULL); + + printf("start q7 depthwise_separable_conv implementation\n"); + + arm_depthwise_separable_conv_HWC_q7(conv_im_in_q7, CONV_IM_DIM, CONV_IM_CH, conv_weight_q7, + CONV_OUT_CH, CONV_KER_DIM, 2, 1, conv_bias_q7, 1, 7, conv_im_out_opt_q7, + CONV_OUT_DIM, conv_buf, NULL); + + verify_results_q7(conv_im_out_ref_q7, conv_im_out_opt_q7, CONV_OUT_DIM * CONV_OUT_DIM * CONV_OUT_CH); + + delete[]test1; + delete[]test2; + delete[]test3; + delete[]test4; + +#endif + + test_pass = true; + test_index = 0; + while (test_flags[test_index] != -1) { + if (test_flags[test_index]) { + test_pass = false; + } + test_index ++; + } + if (test_pass) { + printf("All tests passed\n"); + } else { + printf("Test failed passed\n"); + } + + return 0; +} diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/arm_nnexamples_nn_test.h b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/arm_nnexamples_nn_test.h new file mode 100644 index 0000000..2e33988 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/arm_nnexamples_nn_test.h @@ -0,0 +1,78 @@ +#ifndef _MAIN_H_ +#define _MAIN_H_ + +#include +#include +#include + +#include "arm_math.h" + +#include "arm_nnfunctions.h" +#include "ref_functions.h" + +extern int test_index; +extern q7_t test_flags[50]; + +void initialize_results_q7(q7_t * ref, q7_t * opt, int length) +{ + arm_fill_q7(0, ref, length); + arm_fill_q7(37, opt, length); +} + +void initialize_results_q15(q15_t * ref, q15_t * opt, int length) +{ + arm_fill_q15(0, ref, length); + arm_fill_q15(0x5F5, opt, length); +} + +void verify_results_q7(q7_t * ref, q7_t * opt, int length) +{ + + bool if_match = true; + + for (int i = 0; i < length; i++) + { + if (ref[i] != opt[i]) + { + printf("Output mismatch at %d, expected %d, actual %d\r\n", i, ref[i], opt[i]); + + if_match = false; + } + } + + if (if_match == true) + { + printf("Outputs match.\r\n\r\n"); + test_flags[test_index++] = 0; + } else { + test_flags[test_index++] = 1; + } + +} + +void verify_results_q15(q15_t * ref, q15_t * opt, int length) +{ + + bool if_match = true; + + for (int i = 0; i < length; i++) + { + if (ref[i] != opt[i]) + { + printf("Output mismatch at %d, expected %d, actual %d\r\n", i, ref[i], opt[i]); + + if_match = false; + } + } + + if (if_match == true) + { + printf("Outputs match.\r\n\r\n"); + test_flags[test_index++] = 0; + } else { + test_flags[test_index++] = 1; + } + +} + +#endif diff --git a/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/readme.txt b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/readme.txt new file mode 100644 index 0000000..0ea82e7 --- /dev/null +++ b/Drivers/CMSIS/NN/NN_Lib_Tests/nn_test/readme.txt @@ -0,0 +1,4 @@ +CMSIS DSP_Lib example arm_nnexample_nn_test for + Cortex-M3, Cortex-M4 and Cortex-M7. + +The example is configured for uVision Simulator. diff --git a/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q15.c b/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q15.c new file mode 100644 index 0000000..fd447e5 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q15.c @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nn_activations_q15.c + * Description: Q15 neural network activation function using direct table look-up + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_common_tables.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup Acti + * @{ + */ + + /** + * @brief Q15 neural network activation function using direct table look-up + * @param[in,out] data pointer to input + * @param[in] size number of elements + * @param[in] int_width bit-width of the integer part, assume to be smaller than 3 + * @param[in] type type of activation functions + * @return none. + * + * @details + * + * This is the direct table look-up approach. + * + * Assume here the integer part of the fixed-point is <= 3. + * More than 3 just not making much sense, makes no difference with + * saturation followed by any of these activation functions. + */ + +void arm_nn_activations_direct_q15(q15_t * data, uint16_t size, uint16_t int_width, arm_nn_activation_type type) +{ + uint16_t i = size; + q15_t *pIn = data; + q15_t *pOut = data; + uint16_t shift_size = 8 + 3 - int_width; + uint32_t bit_mask = 0x7FF >> int_width; + uint32_t full_frac = bit_mask + 1; + const q15_t *lookup_table; + + switch (type) + { + case ARM_SIGMOID: + lookup_table = sigmoidTable_q15; + break; + case ARM_TANH: + default: + lookup_table = tanhTable_q15; + break; + } + + while (i) + { + q15_t out; + q15_t in = *pIn++; + q15_t frac = (uint32_t) in & bit_mask; + q15_t value = lookup_table[__USAT(in >> shift_size, 8)]; + q15_t value2 = lookup_table[__USAT(1 + (in >> shift_size), 8)]; + + /* doing the interpolation here for better accuracy */ + out = ((q31_t) (full_frac - frac) * value + (q31_t) value2 * frac) >> shift_size; + + *pOut++ = out; + i--; + } + +} + +/** + * @} end of Acti group + */ diff --git a/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q7.c b/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q7.c new file mode 100644 index 0000000..2953bd5 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_nn_activations_q7.c @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nn_activations_q7.c + * Description: Q7 neural network activation function using direct table look-up + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_common_tables.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup Acti + * @{ + */ + + /** + * @brief Q7 neural network activation function using direct table look-up + * @param[in,out] data pointer to input + * @param[in] size number of elements + * @param[in] int_width bit-width of the integer part, assume to be smaller than 3 + * @param[in] type type of activation functions + * @return none. + * + * @details + * + * This is the direct table look-up approach. + * + * Assume here the integer part of the fixed-point is <= 3. + * More than 3 just not making much sense, makes no difference with + * saturation followed by any of these activation functions. + */ + +void arm_nn_activations_direct_q7(q7_t * data, uint16_t size, uint16_t int_width, arm_nn_activation_type type) +{ + uint16_t i = size; + q7_t *pIn = data; + q7_t *pOut = data; + q7_t in; + q7_t out; + uint16_t shift_size = 3 - int_width; + const q7_t *lookup_table; + switch (type) + { + case ARM_SIGMOID: + lookup_table = sigmoidTable_q7; + break; + case ARM_TANH: + default: + lookup_table = tanhTable_q7; + break; + } + while (i) + { + in = *pIn++; + out = lookup_table[(uint8_t) (in >> shift_size)]; + *pOut++ = out; + i--; + } +} + +/** + * @} end of Acti group + */ diff --git a/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_relu_q15.c b/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_relu_q15.c new file mode 100644 index 0000000..6a1b907 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_relu_q15.c @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_relu_q15.c + * Description: Q15 version of ReLU + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup Acti + * @{ + */ + + /** + * @brief Q15 RELU function + * @param[in,out] data pointer to input + * @param[in] size number of elements + * @return none. + * + * @details + * + * Optimized relu with QSUB instructions. + * + */ + +void arm_relu_q15(q15_t * data, uint16_t size) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + uint16_t i = size >> 1; + q15_t *pIn = data; + q15_t *pOut = data; + q31_t in; + q31_t buf; + q31_t mask; + + while (i) + { + in = *__SIMD32(pIn)++; + + /* extract the first bit */ + buf = __ROR(in & 0x80008000, 15); + + /* if MSB=1, mask will be 0xFF, 0x0 otherwise */ + mask = __QSUB16(0x00000000, buf); + + *__SIMD32(pOut)++ = in & (~mask); + i--; + } + + if (size & 0x1) + { + if (*pIn < 0) + { + *pIn = 0; + } + pIn++; + } +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + uint16_t i; + + for (i = 0; i < size; i++) + { + if (data[i] < 0) + data[i] = 0; + } + +#endif /* ARM_MATH_DSP */ + +} + +/** + * @} end of Acti group + */ diff --git a/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c b/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c new file mode 100644 index 0000000..caa027b --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_relu_q7.c + * Description: Q7 version of ReLU + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup Acti + * @{ + */ + + /** + * @brief Q7 RELU function + * @param[in,out] data pointer to input + * @param[in] size number of elements + * @return none. + * + * @details + * + * Optimized relu with QSUB instructions. + * + */ + +void arm_relu_q7(q7_t * data, uint16_t size) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + uint16_t i = size >> 2; + q7_t *pIn = data; + q7_t *pOut = data; + q31_t in; + q31_t buf; + q31_t mask; + + while (i) + { + in = *__SIMD32(pIn)++; + + /* extract the first bit */ + buf = __ROR(in & 0x80808080, 7); + + /* if MSB=1, mask will be 0xFF, 0x0 otherwise */ + mask = __QSUB8(0x00000000, buf); + + *__SIMD32(pOut)++ = in & (~mask); + i--; + } + + i = size & 0x3; + while (i) + { + if (*pIn < 0) + { + *pIn = 0; + } + pIn++; + i--; + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + + uint16_t i; + + for (i = 0; i < size; i++) + { + if (data[i] < 0) + data[i] = 0; + } + +#endif /* ARM_MATH_DSP */ + +} + +/** + * @} end of Acti group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_1x1_HWC_q7_fast_nonsquare.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_1x1_HWC_q7_fast_nonsquare.c new file mode 100644 index 0000000..4c69e7c --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_1x1_HWC_q7_fast_nonsquare.c @@ -0,0 +1,235 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_convolve_1x1_HWC_q7_fast_nonsquare.c + * Description: Fast Q7 version of 1x1 convolution (non-square shape) + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + +/** + * @brief Fast Q7 version of 1x1 convolution (non-sqaure shape) + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in_x input tensor dimention x + * @param[in] dim_im_in_y input tensor dimention y + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel_x filter kernel size x + * @param[in] dim_kernel_y filter kernel size y + * @param[in] padding_x padding size x + * @param[in] padding_y padding size y + * @param[in] stride_x convolution stride x + * @param[in] stride_y convolution stride y + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out_x output tensor dimension x + * @param[in] dim_im_out_y output tensor dimension y + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * This function is optimized for convolution with 1x1 kernel size (i.e., dim_kernel_x=1 + * and dim_kernel_y=1). It can be used for the second half of MobileNets [1] after depthwise + * separable convolution. + * + * This function is the version with full list of optimization tricks, but with + * some contraints: + * ch_im_in is multiple of 4 + * ch_im_out is multiple of 2 + * + * [1] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications + * https://arxiv.org/abs/1704.04861 + */ + +arm_status arm_convolve_1x1_HWC_q7_fast_nonsquare(const q7_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + int16_t i_out_y, i_out_x; + int16_t i_ch_out; + + /* ----------------------- + * Here we use bufferA as q15_t internally as computation are done with q15_t level + * im2col are done to output in q15_t format from q7_t input + */ + + q15_t *pBuffer = bufferA; + q7_t *pOut = Im_out; + + if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0 || dim_kernel_x != 1 || dim_kernel_y != 1 + || padding_x != 0 || padding_y != 0 || stride_x != 1 || stride_y != 1) + { + /* check if the input dimension meets the constraints */ + return ARM_MATH_SIZE_MISMATCH; + } + + for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++) + { + /* This part implements the im2col function */ + arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + (i_out_y * dim_im_in_x + i_out_x) * ch_im_in, pBuffer, + ch_im_in); + pBuffer += ch_im_in; + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in, bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + } + + /* check if there is left-over for compute */ + if (pBuffer != bufferA) + { + const q7_t *pA = wt; + for (i_ch_out = 0; i_ch_out < ch_im_out; i_ch_out++) + { + q31_t sum = ((q31_t)(bias[i_ch_out]) << bias_shift) + NN_ROUND(out_shift); + q15_t *pB = bufferA; + /* basically each time it process 4 entries */ + uint16_t colCnt = ch_im_in * dim_kernel_x * dim_kernel_y >> 2; + + while (colCnt) + { + + q31_t inA1, inA2; + q31_t inB1, inB2; + + pA = (const q7_t *)read_and_pad_reordered((void *)pA, &inA1, &inA2); + + inB1 = *__SIMD32(pB)++; + sum = __SMLAD(inA1, inB1, sum); + inB2 = *__SIMD32(pB)++; + sum = __SMLAD(inA2, inB2, sum); + + colCnt--; + } + colCnt = ch_im_in * dim_kernel_y * dim_kernel_x & 0x3; + while (colCnt) + { + q7_t inA1 = *pA++; + q15_t inB1 = *pB++; + sum += inA1 * inB1; + colCnt--; + } + *pOut = (q7_t) __SSAT((sum >> out_shift), 8); + pOut++; + + } + + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + + int i, j, k, l, m, n; + int conv_out; + int in_row, in_col; + + if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0 || dim_kernel_x != 1 || dim_kernel_y != 1 + || padding_x != 0 || padding_y != 0 || stride_x != 1 || stride_y != 1) + { + /* check if the input dimension meets the constraints */ + return ARM_MATH_SIZE_MISMATCH; + } + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out_y; j++) + { + for (k = 0; k < dim_im_out_x; k++) + { + conv_out = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift); + for (m = 0; m < dim_kernel_y; m++) + { + for (n = 0; n < dim_kernel_x; n++) + { + // if-for implementation + in_row = stride_y * j + m - padding_y; + in_col = stride_x * k + n - padding_x; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + l] * + wt[i * ch_im_in * dim_kernel_y * dim_kernel_x + (m * dim_kernel_y + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return ARM_MATH_SUCCESS; +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_basic.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_basic.c new file mode 100644 index 0000000..ee08d74 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_basic.c @@ -0,0 +1,207 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_convolve_HWC_q15_basic.c + * Description: Q15 version of convolution + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + + /** + * @brief Basic Q15 convolution function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns ARM_MATH_SUCCESS + * + * @details + * + * Buffer size: + * + * bufferA size: ch_im_in*dim_kernel*dim_kernel + * + * bufferB size: 0 + * + * This basic version is designed to work for any input tensor and weight + * dimension. + */ + +arm_status +arm_convolve_HWC_q15_basic(const q15_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q15_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q15_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q15_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + int16_t i_out_y, i_out_x, i_ker_y, i_ker_x; + + uint16_t im2col_out_pixel_index = 0; + q15_t *pBuffer = bufferA; + q15_t *pOut = Im_out; + q15_t *im_buffer = bufferA; + const q15_t *pA; + int i; + + /* This part implements the im2col function */ + for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++) + { + for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++) + { + for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in) + { + /* Filling 0 for out-of-bound paddings */ + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + /* arm_copy_q15((q15_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); */ + memcpy(pBuffer, (q15_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, sizeof(q15_t)*ch_im_in); + } + pBuffer += ch_im_in; + } + } + + pA = wt; + for (i = 0; i < ch_im_out; i++) + { + q31_t sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + q15_t *pB = im_buffer; + uint16_t colCnt = ch_im_in * dim_kernel * dim_kernel >> 2; + while (colCnt) + { + q31_t inA1 = *__SIMD32(pA)++; + q31_t inB1 = *__SIMD32(pB)++; + q31_t inA2 = *__SIMD32(pA)++; + q31_t inB2 = *__SIMD32(pB)++; + + sum = __SMLAD(inA1, inB1, sum); + sum = __SMLAD(inA2, inB2, sum); + + colCnt--; + } + colCnt = ch_im_in * dim_kernel * dim_kernel & 0x3; + while (colCnt) + { + q15_t inA1 = *pA++; + q15_t inB1 = *pB++; + sum += inA1 * inB1; + colCnt--; + } + *pOut = (q15_t) __SSAT((sum >> out_shift), 16); + pOut++; + } + + /* counter reset */ + pBuffer = im_buffer; + im2col_out_pixel_index++; + } + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + uint16_t i, j, k, l, m, n; + int conv_out; + signed char in_row, in_col; + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out; j++) + { + for (k = 0; k < dim_im_out; k++) + { + conv_out = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + for (m = 0; m < dim_kernel; m++) + { + for (n = 0; n < dim_kernel; n++) + { + in_row = stride * j + m - padding; + in_col = stride * k + n - padding; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += + Im_in[(in_row * dim_im_in + in_col) * ch_im_in + + l] * wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel + + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q15_t) __SSAT((conv_out >> out_shift), 16); + } + } + } + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return ARM_MATH_SUCCESS; +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast.c new file mode 100644 index 0000000..a02aaa0 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast.c @@ -0,0 +1,255 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_convolve_HWC_q15_fast.c + * Description: Fast Q15 version of convolution + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + + /** + * @brief Fast Q15 convolution function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * + * Buffer size: + * + * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel + * + * bufferB size: 0 + * + * Input dimension constraints: + * + * ch_im_in is multiple of 2 + * + * ch_im_out is multipe of 2 + * + */ + +arm_status +arm_convolve_HWC_q15_fast(const q15_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q15_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q15_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q15_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + int16_t i_out_y, i_out_x, i_ker_y, i_ker_x; + + q15_t *pBuffer = bufferA; + q15_t *im_buffer = bufferA; + q15_t *pOut = Im_out; + + if (ch_im_in % 2 != 0 || ch_im_out % 2 != 0) + { + /* check if the input dimension meets the constraints */ + return ARM_MATH_SIZE_MISMATCH; + } + + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + /* This part implements the im2col function */ + for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++) + { + for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++) + { + for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in) + { + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + /* arm_copy_q15((q15_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); */ + memcpy(pBuffer, (q15_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, sizeof(q15_t)*ch_im_in); + } + pBuffer += ch_im_in; + } + } + + if (i_out_x & 0x1) + { + int i; + /* initialize the matrix pointers for A */ + const q15_t *pA = wt; + + /* set up the second output pointers */ + q15_t *pOut2 = pOut + ch_im_out; + + /* this loop over rows in A */ + for (i = 0; i < ch_im_out; i += 2) + { + /* setup pointers for B */ + q15_t *pB = im_buffer; + const q15_t *pB2 = pB + ch_im_in * dim_kernel * dim_kernel; + + /* aling the second pointer for A */ + const q15_t *pA2 = pA + ch_im_in * dim_kernel * dim_kernel; + + /* init the sum with bias */ + q31_t sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)bias[i + 1] << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)bias[i + 1] << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = ch_im_in * dim_kernel * dim_kernel >> 1; + /* accumulate over the vector */ + while (colCnt) + { + q31_t inA1 = *__SIMD32(pA)++; + q31_t inB1 = *__SIMD32(pB)++; + q31_t inA2 = *__SIMD32(pA2)++; + q31_t inB2 = *__SIMD32(pB2)++; + + sum = __SMLAD(inA1, inB1, sum); + sum2 = __SMLAD(inA1, inB2, sum2); + sum3 = __SMLAD(inA2, inB1, sum3); + sum4 = __SMLAD(inA2, inB2, sum4); + + colCnt--; + } /* while over colCnt */ + colCnt = ch_im_in * dim_kernel * dim_kernel & 0x1; + while (colCnt) + { + q15_t inA1 = *pA++; + q15_t inB1 = *pB++; + q15_t inA2 = *pA2++; + q15_t inB2 = *pB2++; + + sum += inA1 * inB1; + sum2 += inA1 * inB2; + sum3 += inA2 * inB1; + sum4 += inA2 * inB2; + colCnt--; + } /* while over colCnt */ + *pOut++ = (q15_t) __SSAT(sum >> out_shift, 16); + *pOut++ = (q15_t) __SSAT(sum3 >> out_shift, 16); + *pOut2++ = (q15_t) __SSAT(sum2 >> out_shift, 16); + *pOut2++ = (q15_t) __SSAT(sum4 >> out_shift, 16); + + /* skip the row computed with A2 */ + pA += ch_im_in * dim_kernel * dim_kernel; + } /* for over ch_im_out */ + + pOut += ch_im_out; + /* counter reset */ + pBuffer = im_buffer; + } + } + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + uint16_t i, j, k, l, m, n; + int conv_out; + signed char in_row, in_col; + + if (ch_im_in % 2 != 0 || ch_im_out % 2 != 0) + { + /* check if the input dimension meets the constraints */ + return ARM_MATH_SIZE_MISMATCH; + } + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out; j++) + { + for (k = 0; k < dim_im_out; k++) + { + conv_out = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + for (m = 0; m < dim_kernel; m++) + { + for (n = 0; n < dim_kernel; n++) + { + in_row = stride * j + m - padding; + in_col = stride * k + n - padding; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += + Im_in[(in_row * dim_im_in + in_col) * ch_im_in + + l] * wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel + + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q15_t) __SSAT((conv_out >> out_shift), 16); + } + } + } + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return ARM_MATH_SUCCESS; +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast_nonsquare.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast_nonsquare.c new file mode 100644 index 0000000..14d9130 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q15_fast_nonsquare.c @@ -0,0 +1,265 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_convolve_HWC_q15_fast.c + * Description: Fast Q15 version of convolution + * + * $Date: 24. May 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + + /** + * @brief Fast Q15 convolution function (non-sqaure shape) + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in_x input tensor dimention x + * @param[in] dim_im_in_y input tensor dimention y + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel_x filter kernel size x + * @param[in] dim_kernel_y filter kernel size y + * @param[in] padding_x padding size x + * @param[in] padding_y padding size y + * @param[in] stride_x convolution stride x + * @param[in] stride_y convolution stride y + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out_x output tensor dimension x + * @param[in] dim_im_out_y output tensor dimension y + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * + * Buffer size: + * + * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel + * + * bufferB size: 0 + * + * Input dimension constraints: + * + * ch_im_in is multiple of 2 + * + * ch_im_out is multipe of 2 + * + */ + +arm_status +arm_convolve_HWC_q15_fast_nonsquare(const q15_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q15_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q15_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q15_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + int16_t i_out_y, i_out_x, i_ker_y, i_ker_x; + + q15_t *pBuffer = bufferA; + q15_t *im_buffer = bufferA; + q15_t *pOut = Im_out; + + if (ch_im_in % 2 != 0 || ch_im_out % 2 != 0) + { + /* check if the input dimension meets the constraints */ + return ARM_MATH_SIZE_MISMATCH; + } + + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + /* This part implements the im2col function */ + for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++) + { + for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y; i_ker_y++) + { + for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x; i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in_y || i_ker_x < 0 || i_ker_x >= dim_im_in_x) + { + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + /* arm_copy_q15((q15_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, pBuffer, ch_im_in); */ + memcpy(pBuffer, (q15_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, sizeof(q15_t)*ch_im_in); + } + pBuffer += ch_im_in; + } + } + + if (i_out_x & 0x1) + { + int i; + /* initialize the matrix pointers for A */ + const q15_t *pA = wt; + + /* set up the second output pointers */ + q15_t *pOut2 = pOut + ch_im_out; + + /* this loop over rows in A */ + for (i = 0; i < ch_im_out; i += 2) + { + /* setup pointers for B */ + q15_t *pB = im_buffer; + const q15_t *pB2 = pB + ch_im_in * dim_kernel_y * dim_kernel_x; + + /* aling the second pointer for A */ + const q15_t *pA2 = pA + ch_im_in * dim_kernel_y * dim_kernel_x; + + /* init the sum with bias */ + q31_t sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)bias[i + 1] << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)bias[i + 1] << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = ch_im_in * dim_kernel_y * dim_kernel_x >> 1; + /* accumulate over the vector */ + while (colCnt) + { + q31_t inA1 = *__SIMD32(pA)++; + q31_t inB1 = *__SIMD32(pB)++; + q31_t inA2 = *__SIMD32(pA2)++; + q31_t inB2 = *__SIMD32(pB2)++; + + sum = __SMLAD(inA1, inB1, sum); + sum2 = __SMLAD(inA1, inB2, sum2); + sum3 = __SMLAD(inA2, inB1, sum3); + sum4 = __SMLAD(inA2, inB2, sum4); + + colCnt--; + } /* while over colCnt */ + colCnt = ch_im_in * dim_kernel_y * dim_kernel_x & 0x1; + while (colCnt) + { + q15_t inA1 = *pA++; + q15_t inB1 = *pB++; + q15_t inA2 = *pA2++; + q15_t inB2 = *pB2++; + + sum += inA1 * inB1; + sum2 += inA1 * inB2; + sum3 += inA2 * inB1; + sum4 += inA2 * inB2; + colCnt--; + } /* while over colCnt */ + *pOut++ = (q15_t) __SSAT(sum >> out_shift, 16); + *pOut++ = (q15_t) __SSAT(sum3 >> out_shift, 16); + *pOut2++ = (q15_t) __SSAT(sum2 >> out_shift, 16); + *pOut2++ = (q15_t) __SSAT(sum4 >> out_shift, 16); + + /* skip the row computed with A2 */ + pA += ch_im_in * dim_kernel_y * dim_kernel_x; + } /* for over ch_im_out */ + + pOut += ch_im_out; + /* counter reset */ + pBuffer = im_buffer; + } + } + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + uint16_t i, j, k, l, m, n; + int conv_out; + signed char in_row, in_col; + + if (ch_im_in % 2 != 0 || ch_im_out % 2 != 0) + { + /* check if the input dimension meets the constraints */ + return ARM_MATH_SIZE_MISMATCH; + } + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out_y; j++) + { + for (k = 0; k < dim_im_out_x; k++) + { + conv_out = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + for (m = 0; m < dim_kernel_y; m++) + { + for (n = 0; n < dim_kernel_x; n++) + { + in_row = stride_y * j + m - padding_y; + in_col = stride_x * k + n - padding_x; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += + Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + + l] * wt[i * ch_im_in * dim_kernel_x * dim_kernel_y + (m * dim_kernel_x + + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q15_t) __SSAT((conv_out >> out_shift), 16); + } + } + } + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return ARM_MATH_SUCCESS; +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c new file mode 100644 index 0000000..e53c6f9 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c @@ -0,0 +1,279 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_convolve_HWC_q7_RGB.c + * Description: Q7 version of convolution for RGB image + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + + /** + * @brief Q7 convolution function for RGB image + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * + * Buffer size: + * + * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel + * + * bufferB size: 0 + * + * Input dimension constraints: + * + * ch_im_in equals 3 + * + * This kernel is written exclusively for convolution with ch_im_in + * equals 3. This applies on the first layer of CNNs which has input + * image with RGB format. + */ + +arm_status +arm_convolve_HWC_q7_RGB(const q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, const uint16_t dim_im_out, q15_t * bufferA, q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + int16_t i_out_y, i_out_x, i_ker_y, i_ker_x; + + /* + * Here we use bufferA as q15_t internally as computation are done with q15_t level + * im2col are done to output in q15_t format from q7_t input + */ + q15_t *pBuffer = bufferA; + q7_t *pOut = Im_out; + + // check if number of input channels is 3 + if (ch_im_in != 3) + { + return ARM_MATH_SIZE_MISMATCH; + } + // This part implements the im2col function + for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++) + { + for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++) + { + for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in) + { + /* Equivalent to arm_fill_q15(0, pBuffer, ch_im_in) with assumption: ch_im_in = 3 */ + *__SIMD32(pBuffer) = 0x0; + *(pBuffer + 2) = 0; + pBuffer += 3; + } else + { + /* + * Equivalent to: + * arm_q7_to_q15_no_shift( (q7_t*)Im_in+(i_ker_y*dim_im_in+i_ker_x)*3, pBuffer, 3); + */ + + const q7_t *pPixel = Im_in + (i_ker_y * dim_im_in + i_ker_x) * 3; + q31_t buf = *__SIMD32(pPixel); + + union arm_nnword top; + union arm_nnword bottom; + + top.word = __SXTB16(buf); + bottom.word = __SXTB16(__ROR(buf, 8)); + +#ifndef ARM_MATH_BIG_ENDIAN + /* + * little-endian, | omit | 3rd | 2nd | 1st | + * MSB LSB + * top | 3rd | 1st |; bottom | omit | 2nd | + * + * version 1, need to swap 2nd and 3rd weight + * *__SIMD32(pBuffer) = top.word; + * *(pBuffer+2) = bottom.half_words[0]; + * + * version 2, no weight shuffling required + */ + *pBuffer++ = top.half_words[0]; + *__SIMD32(pBuffer) = __PKHBT(bottom.word, top.word, 0); +#else + /* + * big-endian, | 1st | 2nd | 3rd | omit | + * MSB LSB + * top | 2nd | omit |; bottom | 1st | 3rd | + * + * version 1, need to swap 2nd and 3rd weight + * *__SIMD32(pBuffer) = bottom.word; + * *(pBuffer+2) = top.half_words[1]; + * + * version 2, no weight shuffling required + */ + *pBuffer++ = bottom.half_words[0]; + *__SIMD32(pBuffer) = __PKHTB(top.word, bottom.word, 0); +#endif + pBuffer += 2; + } + } + } + + if (pBuffer == bufferA + 2 * 3 * dim_kernel * dim_kernel) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15(wt, bufferA, + ch_im_out, + 3 * dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut); + + /* counter reset */ + pBuffer = bufferA; + } + } + } + + /* left-over because odd number of output pixels */ + if (pBuffer != bufferA) + { + const q7_t *pA = wt; + int i; + + for (i = 0; i < ch_im_out; i++) + { + q31_t sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + q15_t *pB = bufferA; + /* basically each time it process 4 entries */ + uint16_t colCnt = 3 * dim_kernel * dim_kernel >> 2; + + while (colCnt) + { + + q31_t inA1, inA2; + q31_t inB1, inB2; + + pA = (q7_t *) read_and_pad((void *)pA, &inA1, &inA2); + + inB1 = *__SIMD32(pB)++; + sum = __SMLAD(inA1, inB1, sum); + inB2 = *__SIMD32(pB)++; + sum = __SMLAD(inA2, inB2, sum); + + colCnt--; + } + colCnt = 3 * dim_kernel * dim_kernel & 0x3; + while (colCnt) + { + q7_t inA1 = *pA++; + q15_t inB1 = *pB++; + sum += inA1 * inB1; + colCnt--; + } + *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8); + } + } +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + + uint16_t i, j, k, l, m, n; + int conv_out; + signed char in_row, in_col; + + // check if number of input channels is 3 + if (ch_im_in != 3) + { + return ARM_MATH_SIZE_MISMATCH; + } + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out; j++) + { + for (k = 0; k < dim_im_out; k++) + { + conv_out = (bias[i] << bias_shift) + NN_ROUND(out_shift); + for (m = 0; m < dim_kernel; m++) + { + for (n = 0; n < dim_kernel; n++) + { + /* if-for implementation */ + in_row = stride * j + m - padding; + in_col = stride * k + n - padding; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += + Im_in[(in_row * dim_im_in + in_col) * ch_im_in + + l] * wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel + + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return (ARM_MATH_SUCCESS); +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic.c new file mode 100644 index 0000000..7c9ec65 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic.c @@ -0,0 +1,230 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_convolve_HWC_q7_basic.c + * Description: Q7 version of convolution + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + + /** + * @brief Basic Q7 convolution function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns ARM_MATH_SUCCESS + * + * @details + * + * Buffer size: + * + * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel + * + * bufferB size: 0 + * + * This basic version is designed to work for any input tensor and weight + * dimension. + */ + +arm_status +arm_convolve_HWC_q7_basic(const q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + int16_t i_out_y, i_out_x, i_ker_y, i_ker_x; + + /* + * Here we use bufferA as q15_t internally as computation are done with q15_t level + * im2col are done to output in q15_t format from q7_t input + */ + q15_t *pBuffer = bufferA; + q7_t *pOut = Im_out; + + /* This part implements the im2col function */ + for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++) + { + for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++) + { + for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in) + { + /* Filling 0 for out-of-bound paddings */ + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + /* Copying the pixel data to column */ + arm_q7_to_q15_no_shift((q7_t *) + Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + /* Computation is filed for every 2 columns */ + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15(wt, bufferA, + ch_im_out, + ch_im_in * + dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut); + + /* counter reset */ + pBuffer = bufferA; + } + } + } + + /* left-over because odd number of output pixels */ + if (pBuffer != bufferA) + { + const q7_t *pA = wt; + int i; + + for (i = 0; i < ch_im_out; i++) + { + /* Load the accumulator with bias first */ + q31_t sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + + /* Point to the beging of the im2col buffer */ + q15_t *pB = bufferA; + + /* Each time it process 4 entries */ + uint16_t colCnt = ch_im_in * dim_kernel * dim_kernel >> 2; + + while (colCnt) + { + q31_t inA1, inA2; + q31_t inB1, inB2; + + pA = (q7_t *) read_and_pad((void *)pA, &inA1, &inA2); + + inB1 = *__SIMD32(pB)++; + sum = __SMLAD(inA1, inB1, sum); + inB2 = *__SIMD32(pB)++; + sum = __SMLAD(inA2, inB2, sum); + + colCnt--; + } + colCnt = ch_im_in * dim_kernel * dim_kernel & 0x3; + while (colCnt) + { + q7_t inA1 = *pA++; + q15_t inB1 = *pB++; + sum += inA1 * inB1; + colCnt--; + } + *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8); + } + } +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + + uint16_t i, j, k, l, m, n; + int conv_out; + signed char in_row, in_col; + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out; j++) + { + for (k = 0; k < dim_im_out; k++) + { + conv_out = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + for (m = 0; m < dim_kernel; m++) + { + for (n = 0; n < dim_kernel; n++) + { + // if-for implementation + in_row = stride * j + m - padding; + in_col = stride * k + n - padding; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += + Im_in[(in_row * dim_im_in + in_col) * ch_im_in + + l] * wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel + + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return ARM_MATH_SUCCESS; +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic_nonsquare.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic_nonsquare.c new file mode 100644 index 0000000..24356d9 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_basic_nonsquare.c @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_convolve_HWC_q7_basic.c + * Description: Q7 version of convolution + * + * $Date: 13. July 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + + /** + * @brief Basic Q7 convolution function (non-sqaure shape) + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in_x input tensor dimention x + * @param[in] dim_im_in_y input tensor dimention y + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel_x filter kernel size x + * @param[in] dim_kernel_y filter kernel size y + * @param[in] padding_x padding size x + * @param[in] padding_y padding size y + * @param[in] stride_x convolution stride x + * @param[in] stride_y convolution stride y + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out_x output tensor dimension x + * @param[in] dim_im_out_y output tensor dimension y + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns ARM_MATH_SUCCESS + */ + +arm_status arm_convolve_HWC_q7_basic_nonsquare(const q7_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + int16_t i_out_y, i_out_x, i_ker_y, i_ker_x; + + /* + * Here we use bufferA as q15_t internally as computation are done with q15_t level + * im2col are done to output in q15_t format from q7_t input + */ + q15_t *pBuffer = bufferA; + q7_t *pOut = Im_out; + + /* This part implements the im2col function */ + for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++) + { + for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y; i_ker_y++) + { + for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x; i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in_y || i_ker_x < 0 || i_ker_x >= dim_im_in_x) + { + /* Filling 0 for out-of-bound paddings */ + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + /* Copying the pixel data to column */ + arm_q7_to_q15_no_shift((q7_t *) + Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, pBuffer, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + /* Computation is filed for every 2 columns */ + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_y * dim_kernel_x) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15(wt, bufferA, + ch_im_out, + ch_im_in * + dim_kernel_y * dim_kernel_x, bias_shift, out_shift, bias, pOut); + + /* counter reset */ + pBuffer = bufferA; + } + } + } + + /* left-over because odd number of output pixels */ + if (pBuffer != bufferA) + { + const q7_t *pA = wt; + int i; + + for (i = 0; i < ch_im_out; i++) + { + /* Load the accumulator with bias first */ + q31_t sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + + /* Point to the beging of the im2col buffer */ + q15_t *pB = bufferA; + + /* Each time it process 4 entries */ + uint16_t colCnt = ch_im_in * dim_kernel_y * dim_kernel_x >> 2; + + while (colCnt) + { + q31_t inA1, inA2; + q31_t inB1, inB2; + + pA = (q7_t *) read_and_pad((void *)pA, &inA1, &inA2); + + inB1 = *__SIMD32(pB)++; + sum = __SMLAD(inA1, inB1, sum); + inB2 = *__SIMD32(pB)++; + sum = __SMLAD(inA2, inB2, sum); + + colCnt--; + } + colCnt = ch_im_in * dim_kernel_y * dim_kernel_x & 0x3; + while (colCnt) + { + q7_t inA1 = *pA++; + q15_t inB1 = *pB++; + sum += inA1 * inB1; + colCnt--; + } + *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8); + } + } +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + + uint16_t i, j, k, l, m, n; + int conv_out; + signed char in_row, in_col; + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out_y; j++) + { + for (k = 0; k < dim_im_out_x; k++) + { + conv_out = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + for (m = 0; m < dim_kernel_y; m++) + { + for (n = 0; n < dim_kernel_x; n++) + { + // if-for implementation + in_row = stride_y * j + m - padding_y; + in_col = stride_x * k + n - padding_x; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += + Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + l] * + wt[i * ch_im_in * dim_kernel_y * dim_kernel_x + + (m * dim_kernel_x + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return ARM_MATH_SUCCESS; +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c new file mode 100644 index 0000000..e2d469f --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c @@ -0,0 +1,408 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_convolve_HWC_q7_fast.c + * Description: Fast Q7 version of convolution + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + + /** + * @brief Fast Q7 convolution function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * + * Buffer size: + * + * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel + * + * bufferB size: 0 + * + * Input dimension constraints: + * + * ch_im_in is multiple of 4 ( because of the SIMD32 read and swap ) + * + * ch_im_out is multipe of 2 ( bacause 2x2 mat_mult kernel ) + * + * The im2col converts the Q7 tensor input into Q15 column, which is stored in + * bufferA. There is reordering happenning during this im2col process with + * arm_q7_to_q15_reordered_no_shift. For every four elements, the second and + * third elements are swapped. + * + * The computation kernel arm_nn_mat_mult_kernel_q7_q15_reordered does the + * GEMM computation with the reordered columns. + * + * To speed-up the determination of the padding condition, we split the + * computation into 3x3 parts, i.e., {top, mid, bottom} X {left, mid, right}. + * This reduces the total number of boundary condition checks and improves + * the data copying performance. + */ + +arm_status +arm_convolve_HWC_q7_fast(const q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + int16_t i_out_y, i_out_x, i_ker_y, i_ker_x; + + /* + * Here we use bufferA as q15_t internally as computation are done with q15_t level + * im2col are done to output in q15_t format from q7_t input + */ + + q15_t *pBuffer = bufferA; + q7_t *pOut = Im_out; + + if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0) + { + /* check if the input dimension meets the constraints */ + return ARM_MATH_SIZE_MISMATCH; + } + + /* + * Here we split the entire matrix into three regions depending on the padding situation + * Top: i_out_y from 0 to padding - 1 + * Middle: i_out_y from padding to dim_im_out-padding-1 + * Bottom: i_out_y from dim_im_out-padding to dim_im_out-1 + */ + + /* top part */ + for (i_out_y = 0; i_out_y < padding; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++) + { + /* This part implements the im2col function */ + for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++) + { + for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in) + { + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + arm_q7_to_q15_reordered_no_shift + ((q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, + bufferA, + ch_im_out, + ch_im_in + * + dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + } + + /* middle part, here we also divide the x into left, mid and right */ + for (; i_out_y < dim_im_out - padding; i_out_y++) + { + + /* left part */ + for (i_out_x = 0; i_out_x < padding; i_out_x++) + { + /* This part implements the im2col function */ + for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++) + { + for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++) + { + if (i_ker_x < 0 || i_ker_x >= dim_im_in) + { + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + arm_q7_to_q15_reordered_no_shift + ((q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, + bufferA, + ch_im_out, + ch_im_in + * + dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + + /* mid part */ + for (; i_out_x < dim_im_out - padding; i_out_x++) + { + /* This part implements the im2col function */ + for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++) + { + arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + + + (i_ker_y * + dim_im_in + + i_out_x * + stride - padding) * ch_im_in, pBuffer, ch_im_in * dim_kernel); + pBuffer += ch_im_in * dim_kernel; + } + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, + bufferA, + ch_im_out, + ch_im_in + * + dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + + /* right part */ + for (; i_out_x < dim_im_out; i_out_x++) + { + /* This part implements the im2col function */ + for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++) + { + for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++) + { + if (i_ker_x < 0 || i_ker_x >= dim_im_in) + { + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + arm_q7_to_q15_reordered_no_shift + ((q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, + bufferA, + ch_im_out, + ch_im_in + * + dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + } + + for (; i_out_y < dim_im_out; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++) + { + /* This part implements the im2col function */ + for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++) + { + for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in) + { + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + arm_q7_to_q15_reordered_no_shift + ((q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel * dim_kernel) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, + bufferA, + ch_im_out, + ch_im_in + * + dim_kernel * dim_kernel, bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + } + + /* check if there is left-over for compute */ + if (pBuffer != bufferA) + { + const q7_t *pA = wt; + int i; + + for (i = 0; i < ch_im_out; i++) + { + q31_t sum = ((q31_t)bias[i] << bias_shift) + NN_ROUND(out_shift); + q15_t *pB = bufferA; + /* each time it process 4 entries */ + uint16_t colCnt = ch_im_in * dim_kernel * dim_kernel >> 2; + + while (colCnt) + { + + q31_t inA1, inA2; + q31_t inB1, inB2; + + pA = (q7_t *) read_and_pad_reordered((void *)pA, &inA1, &inA2); + + inB1 = *__SIMD32(pB)++; + sum = __SMLAD(inA1, inB1, sum); + inB2 = *__SIMD32(pB)++; + sum = __SMLAD(inA2, inB2, sum); + + colCnt--; + } + colCnt = ch_im_in * dim_kernel * dim_kernel & 0x3; + while (colCnt) + { + q7_t inA1 = *pA++; + q15_t inB1 = *pB++; + sum += inA1 * inB1; + colCnt--; + } + *pOut = (q7_t) __SSAT((sum >> out_shift), 8); + pOut++; + + } + + } +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + + uint16_t i, j, k, l, m, n; + int conv_out; + signed char in_row, in_col; + + if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0) + { + /* check if the input dimension meets the constraints */ + return ARM_MATH_SIZE_MISMATCH; + } + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out; j++) + { + for (k = 0; k < dim_im_out; k++) + { + conv_out = (bias[i] << bias_shift) + NN_ROUND(out_shift); + for (m = 0; m < dim_kernel; m++) + { + for (n = 0; n < dim_kernel; n++) + { + // if-for implementation + in_row = stride * j + m - padding; + in_col = stride * k + n - padding; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += + Im_in[(in_row * dim_im_in + in_col) * ch_im_in + + l] * wt[i * ch_im_in * dim_kernel * dim_kernel + (m * dim_kernel + + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return ARM_MATH_SUCCESS; +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast_nonsquare.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast_nonsquare.c new file mode 100644 index 0000000..6dc6f0b --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast_nonsquare.c @@ -0,0 +1,379 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_convolve_HWC_q7_fast_nonsquare.c + * Description: Fast Q7 version of convolution (non-sqaure shape) + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + +/** + * @brief Fast Q7 convolution function (non-sqaure shape) + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in_x input tensor dimention x + * @param[in] dim_im_in_y input tensor dimention y + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel_x filter kernel size x + * @param[in] dim_kernel_y filter kernel size y + * @param[in] padding_x padding size x + * @param[in] padding_y padding size y + * @param[in] stride_x convolution stride x + * @param[in] stride_y convolution stride y + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out_x output tensor dimension x + * @param[in] dim_im_out_y output tensor dimension y + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * This function is the version with full list of optimization tricks, but with + * some contraints: + * ch_im_in is multiple of 4 + * ch_im_out is multiple of 2 + */ + +arm_status arm_convolve_HWC_q7_fast_nonsquare(const q7_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + int16_t i_out_y, i_out_x, i_ker_y, i_ker_x; + + /* ----------------------- + * Here we use bufferA as q15_t internally as computation are done with q15_t level + * im2col are done to output in q15_t format from q7_t input + */ + + q15_t *pBuffer = bufferA; + q7_t *pOut = Im_out; + + if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0) + { + /* check if the input dimension meets the constraints */ + return ARM_MATH_SIZE_MISMATCH; + } + + /* + * Here we split the entire matrix into three regions depending on the padding situation + * Top: i_out_y from 0 to padding - 1 + * Middle: i_out_y from padding to dim_im_out-padding-1 + * Bottom: i_out_y from dim_im_out-padding to dim_im_out-1 + */ + + /* top part */ + for (i_out_y = 0; i_out_y < padding_y; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++) + { + /* This part implements the im2col function */ + for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y; + i_ker_y++) + { + for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x; + i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in_y || i_ker_x < 0 || i_ker_x >= dim_im_in_x) + { + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, + pBuffer, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in * dim_kernel_x * dim_kernel_y, + bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + } + + /* middle part, here we also divide the x into left, mid and right */ + for (; i_out_y < dim_im_out_y - padding_y; i_out_y++) + { + + /* left part */ + for (i_out_x = 0; i_out_x < padding_x; i_out_x++) + { + /* This part implements the im2col function */ + for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y; + i_ker_y++) + { + for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x; + i_ker_x++) + { + if (i_ker_x < 0 || i_ker_x >= dim_im_in_x) + { + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, + pBuffer, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in * dim_kernel_x * dim_kernel_y, + bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + + /* mid part */ + for (; i_out_x < dim_im_out_x - padding_x; i_out_x++) + { + /* This part implements the im2col function */ + for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y; + i_ker_y++) + { + arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + + (i_ker_y * dim_im_in_x + i_out_x * stride_x - padding_x) * ch_im_in, + pBuffer, ch_im_in * dim_kernel_x); + pBuffer += ch_im_in * dim_kernel_x; + } + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in * dim_kernel_x * dim_kernel_y, + bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + + /* right part */ + for (; i_out_x < dim_im_out_x; i_out_x++) + { + /* This part implements the im2col function */ + for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y; + i_ker_y++) + { + for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x; + i_ker_x++) + { + if (i_ker_x < 0 || i_ker_x >= dim_im_in_x) + { + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, + pBuffer, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in * dim_kernel_x * dim_kernel_y, + bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + } + + for (; i_out_y < dim_im_out_y; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++) + { + /* This part implements the im2col function */ + for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y; + i_ker_y++) + { + for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x; + i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in_y || i_ker_x < 0 || i_ker_x >= dim_im_in_x) + { + /* arm_fill_q15(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, sizeof(q15_t)*ch_im_in); + } else + { + arm_q7_to_q15_reordered_no_shift((q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, + pBuffer, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + if (pBuffer == bufferA + 2 * ch_im_in * dim_kernel_x * dim_kernel_y) + { + pOut = + arm_nn_mat_mult_kernel_q7_q15_reordered(wt, bufferA, ch_im_out, ch_im_in * dim_kernel_x * dim_kernel_y, + bias_shift, out_shift, bias, pOut); + /* counter reset */ + pBuffer = bufferA; + } + } + } + + /* check if there is left-over for compute */ + if (pBuffer != bufferA) + { + const q7_t *pA = wt; + int i; + for (i = 0; i < ch_im_out; i++) + { + q31_t sum = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift); + q15_t *pB = bufferA; + /* basically each time it process 4 entries */ + uint16_t colCnt = ch_im_in * dim_kernel_x * dim_kernel_y >> 2; + + while (colCnt) + { + + q31_t inA1, inA2; + q31_t inB1, inB2; + + pA = (const q7_t *)read_and_pad_reordered((void *)pA, &inA1, &inA2); + + inB1 = *__SIMD32(pB)++; + sum = __SMLAD(inA1, inB1, sum); + inB2 = *__SIMD32(pB)++; + sum = __SMLAD(inA2, inB2, sum); + + colCnt--; + } + colCnt = (ch_im_in * dim_kernel_y * dim_kernel_x) & 0x3; + while (colCnt) + { + q7_t inA1 = *pA++; + q15_t inB1 = *pB++; + sum += inA1 * inB1; + colCnt--; + } + *pOut = (q7_t) __SSAT((sum >> out_shift), 8); + pOut++; + + } + + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + int i, j, k, l, m, n; + int conv_out; + int in_row, in_col; + + if (ch_im_in % 4 != 0 || ch_im_out % 2 != 0) + { + /* check if the input dimension meets the constraints */ + return ARM_MATH_SIZE_MISMATCH; + } + + for (i = 0; i < ch_im_out; i++) + { + for (j = 0; j < dim_im_out_y; j++) + { + for (k = 0; k < dim_im_out_x; k++) + { + conv_out = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift); + for (m = 0; m < dim_kernel_y; m++) + { + for (n = 0; n < dim_kernel_x; n++) + { + /* if-for implementation */ + in_row = stride_y * j + m - padding_y; + in_col = stride_x * k + n - padding_x; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x) + { + for (l = 0; l < ch_im_in; l++) + { + conv_out += Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + l] * + wt[i * ch_im_in * dim_kernel_y * dim_kernel_x + (m * dim_kernel_x + n) * ch_im_in + l]; + } + } + } + } + Im_out[i + (j * dim_im_out_x + k) * ch_im_out] = (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } + + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return ARM_MATH_SUCCESS; +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7.c new file mode 100644 index 0000000..705fa6a --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7.c @@ -0,0 +1,418 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_depthwise_separable_conv_HWC_q7.c + * Description: Q7 depthwise separable convolution function + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + +/** + * @brief Q7 depthwise separable convolution function + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * @details + * + * Buffer size: + * + * bufferA size: 2*ch_im_in*dim_kernel*dim_kernel + * + * bufferB size: 0 + * + * Input dimension constraints: + * + * ch_im_in equals ch_im_out + * + * Implementation: + * There are 3 nested loop here: + * Inner loop: calculate each output value with MAC instruction over an accumulator + * Mid loop: loop over different output channel + * Outer loop: loop over different output (x, y) + */ + +arm_status arm_depthwise_separable_conv_HWC_q7(const q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out, + q15_t * bufferA, + q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + int16_t i_out_y, i_out_x; + int16_t i_ker_y, i_ker_x; + q7_t *colBuffer = (q7_t *) bufferA; + q7_t *pBuffer = colBuffer; + const q7_t *pBias = bias; + q7_t *pOut = Im_out; + uint16_t rowCnt; + uint16_t row_shift; + + /* do some checking here, basically ch_im_in == ch_im_out */ + if (ch_im_in != ch_im_out) + { + return ARM_MATH_SIZE_MISMATCH; + } + + for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++) + { + /* we first do im2col here */ + for (i_ker_y = i_out_y * stride - padding; i_ker_y < i_out_y * stride - padding + dim_kernel; i_ker_y++) + { + for (i_ker_x = i_out_x * stride - padding; i_ker_x < i_out_x * stride - padding + dim_kernel; i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in || i_ker_x < 0 || i_ker_x >= dim_im_in) + { + /* arm_fill_q7(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, ch_im_in); + } else + { + /* arm_copy_q7((q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, pBuffer, ch_im_in); */ + memcpy(pBuffer, (q7_t *) Im_in + (i_ker_y * dim_im_in + i_ker_x) * ch_im_in, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + /* we will do the computation here for each channel */ + rowCnt = ch_im_out >> 2; + row_shift = 0; + pBias = bias; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = (dim_kernel * dim_kernel) >> 1; + q7_t *pB = colBuffer + row_shift; + const q7_t *pA = wt + row_shift; + row_shift += 4; + +#ifdef USE_INTRINSIC + +#ifndef ARM_MATH_BIG_ENDIAN + + while (colCnt) + { + q31_t inA1, inA2, inB1, inB2, opA, opB; + + inB1 = *__SIMD32(pB); + pB += ch_im_in; + opB = *__SIMD32(pB); + pB += ch_im_in; + inB2 = __PKHTB(opB, inB1, 16); + inB1 = __PKHBT(inB1, opB, 16); + inA1 = *__SIMD32(pA); + pA += ch_im_in; + opB = *__SIMD32(pA); + pA += ch_im_in; + inA2 = __PKHTB(opB, inA1, 16); + inA1 = __PKHBT(inA1, opB, 16); + opA = __SXTB16(inA1); + opB = __SXTB16(inB1); + sum = __SMLAD(opA, opB, sum); + opA = __SXTB16(__ROR(inA1, 8)); + opB = __SXTB16(__ROR(inB1, 8)); + sum2 = __SMLAD(opA, opB, sum2); + opA = __SXTB16(inA2); + opB = __SXTB16(inB2); + sum3 = __SMLAD(opA, opB, sum3); + opA = __SXTB16(__ROR(inA2, 8)); + opB = __SXTB16(__ROR(inB2, 8)); + sum4 = __SMLAD(opA, opB, sum4); + colCnt--; + } +#else + + while (colCnt) + { + q31_t inA1, inA2, inB1, inB2, opA, opB; + + inB1 = *__SIMD32(pB); + pB += ch_im_in; + opB = *__SIMD32(pB); + pB += ch_im_in; + inB2 = __PKHBT(opB, inB1, 16); + inB1 = __PKHTB(inB1, opB, 16); + inA1 = *__SIMD32(pA); + pA += ch_im_in; + opB = *__SIMD32(pA); + pA += ch_im_in; + inA2 = __PKHBT(opB, inA1, 16); + inA1 = __PKHTB(inA1, opB, 16); + opA = __SXTB16(inA1); + opB = __SXTB16(inB1); + sum2 = __SMLAD(opA, opB, sum2); + opA = __SXTB16(__ROR(inA1, 8)); + opB = __SXTB16(__ROR(inB1, 8)); + sum = __SMLAD(opA, opB, sum); + opA = __SXTB16(inA2); + opB = __SXTB16(inB2); + sum4 = __SMLAD(opA, opB, sum4); + opA = __SXTB16(__ROR(inA2, 8)); + opB = __SXTB16(__ROR(inB2, 8)); + sum3 = __SMLAD(opA, opB, sum3); + colCnt--; + } + +#endif /* ARM_MATH_BIG_ENDIAN */ + +#else + +#ifndef ARM_MATH_BIG_ENDIAN + /* + * r0 r1 r2 r3 r4 r5 + * inA1, inA2, inB1, inB2, opA, opB + */ + + asm volatile ("COL_LOOP_%=:\n" + "ldr.w r2, [%[pB], #0]\n" + "add.w %[pB], %[pB], %[ch_im_in]\n" + "ldr.w r5, [%[pB], #0]\n" + "add.w %[pB], %[pB], %[ch_im_in]\n" + "pkhtb r3, r5, r2, ASR #16\n" + "pkhbt r2, r2, r5, LSL #16\n" + "ldr.w r0, [%[pA], #0]\n" + "add.w %[pA], %[pA], %[ch_im_in]\n" + "ldr.w r5, [%[pA], #0]\n" + "add.w %[pA], %[pA], %[ch_im_in]\n" + "pkhtb r1, r5, r0, ASR #16\n" + "pkhbt r0, r0, r5, LSL #16\n" + "sxtb16 r4, r0\n" + "sxtb16 r5, r2\n" + "smlad %[sum], r4, r5, %[sum]\n" + "mov.w r4, r0, ror #8\n" + "mov.w r5, r2, ror #8\n" + "sxtb16 r4, r4\n" + "sxtb16 r5, r5\n" + "smlad %[sum2], r4, r5, %[sum2]\n" + "sxtb16 r4, r1\n" + "sxtb16 r5, r3\n" + "smlad %[sum3], r4, r5, %[sum3]\n" + "mov.w r4, r1, ror #8\n" + "mov.w r5, r3, ror #8\n" + "sxtb16 r4, r4\n" + "sxtb16 r5, r5\n" + "smlad %[sum4], r4, r5, %[sum4]\n" + "subs %[colCnt], #1\n" + "bne COL_LOOP_%=\n":[sum] + "+r"(sum),[sum2] "+r"(sum2), + [sum3] "+r"(sum3), + [sum4] "+r"(sum4),[pB] "+r"(pB), + [pA] "+r"(pA):[colCnt] + "r"(colCnt),[ch_im_in] "r"(ch_im_in):"r0", "r1", "r2", "r3", "r4", "r5"); +#else + /* + * r0 r1 r2 r3 r4 r5 + * inA1, inA2, inB1, inB2, opA, opB + */ + asm volatile ("COL_LOOP_%=:\n" + "ldr.w r2, [%[pB], #0]\n" + "add.w %[pB], %[pB], %[ch_im_in]\n" + "ldr.w r5, [%[pB], #0]\n" + "add.w %[pB], %[pB], %[ch_im_in]\n" + "pkhbt r3, r5, r2, LSL #16\n" + "pkhtb r2, r2, r5, ASR #16\n" + "ldr.w r0, [%[pA], #0]\n" + "add.w %[pA], %[pA], %[ch_im_in]\n" + "ldr.w r5, [%[pA], #0]\n" + "add.w %[pA], %[pA], %[ch_im_in]\n" + "pkhbt r1, r5, r0, LSL #16\n" + "pkhtb r0, r0, r5, ASR #16\n" + "sxtb16 r4, r0\n" + "sxtb16 r5, r2\n" + "smlad %[sum2], r4, r5, %[sum2]\n" + "mov.w r4, r0, ror #8\n" + "mov.w r5, r2, ror #8\n" + "sxtb16 r4, r4\n" + "sxtb16 r5, r5\n" + "smlad %[sum], r4, r5, %[sum]\n" + "sxtb16 r4, r1\n" + "sxtb16 r5, r3\n" + "smlad %[sum4], r4, r5, %[sum4]\n" + "mov.w r4, r1, ror #8\n" + "mov.w r5, r3, ror #8\n" + "sxtb16 r4, r4\n" + "sxtb16 r5, r5\n" + "smlad %[sum3], r4, r5, %[sum3]\n" + "subs %[colCnt], #1\n" + "bne COL_LOOP_%=\n":[sum] + "+r"(sum),[sum2] "+r"(sum2), + [sum3] "+r"(sum3), + [sum4] "+r"(sum4),[pB] "+r"(pB), + [pA] "+r"(pA):[colCnt] + "r"(colCnt),[ch_im_in] "r"(ch_im_in):"r0", "r1", "r2", "r3", "r4", "r5"); + +#endif /* ARM_MATH_BIG_ENDIAN */ + +#endif /* USE_INTRINSIC */ + + colCnt = (dim_kernel * dim_kernel) & 0x1; + while (colCnt) + { + union arm_nnword inA, inB; + inA.word = *__SIMD32(pA); + pA += ch_im_in; + inB.word = *__SIMD32(pB); + pB += ch_im_in; + sum += inA.bytes[0] * inB.bytes[0]; + sum2 += inA.bytes[1] * inB.bytes[1]; + sum3 += inA.bytes[2] * inB.bytes[2]; + sum4 += inA.bytes[3] * inB.bytes[3]; + colCnt--; + } + + *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8); + *pOut++ = (q7_t) __SSAT((sum2 >> out_shift), 8); + *pOut++ = (q7_t) __SSAT((sum3 >> out_shift), 8); + *pOut++ = (q7_t) __SSAT((sum4 >> out_shift), 8); + + rowCnt--; + } + + rowCnt = ch_im_out & 0x3; + while (rowCnt) + { + q7_t *pB = colBuffer + row_shift; + const q7_t *pA = wt + row_shift; + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + uint16_t colCnt = (dim_kernel * dim_kernel); + + row_shift += 1; + + while (colCnt) + { + q7_t A1 = *pA; + q7_t B1 = *pB; + pA += ch_im_in; + pB += ch_im_in; + sum += A1 * B1; + + colCnt--; + } + *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8); + rowCnt--; + } + + /* clear counter and pointers */ + pBuffer = colBuffer; + } + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + int i_out_y, i_out_x, i_ch_out, i_ker_x, i_ker_y; + int conv_out; + + /* do some checking here, basically ch_im_in == ch_im_out */ + if (ch_im_in != ch_im_out) + { + return ARM_MATH_SIZE_MISMATCH; + } + + for (i_out_y = 0; i_out_y < dim_im_out; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out; i_out_x++) + { + for (i_ch_out = 0; i_ch_out < ch_im_out; i_ch_out++) + { + // for each output + conv_out = ((q31_t)(bias[i_ch_out]) << bias_shift) + NN_ROUND(out_shift); + for (i_ker_y = 0; i_ker_y < dim_kernel; i_ker_y++) + { + for (i_ker_x = 0; i_ker_x < dim_kernel; i_ker_x++) + { + int in_row = stride * i_out_y + i_ker_y - padding; + int in_col = stride * i_out_x + i_ker_x - padding; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in && in_col < dim_im_in) + { + conv_out += + Im_in[(in_row * + dim_im_in + + in_col) * + ch_im_in + + i_ch_out] * wt[(i_ker_y * dim_kernel + i_ker_x) * ch_im_out + i_ch_out]; + } + } + } + Im_out[(i_out_y * dim_im_out + + i_out_x) * ch_im_out + i_ch_out] = (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return ARM_MATH_SUCCESS; + +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7_nonsquare.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7_nonsquare.c new file mode 100644 index 0000000..5989304 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_depthwise_separable_conv_HWC_q7_nonsquare.c @@ -0,0 +1,411 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_depthwise_separable_conv_HWC_q7_nonsquare.c + * Description: Q7 depthwise separable convolution function (non-square shape) + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup NNConv + * @{ + */ + +/** + * @brief Q7 depthwise separable convolution function (non-square shape) + * @param[in] Im_in pointer to input tensor + * @param[in] dim_im_in_x input tensor dimention x + * @param[in] dim_im_in_y input tensor dimention y + * @param[in] ch_im_in number of input tensor channels + * @param[in] wt pointer to kernel weights + * @param[in] ch_im_out number of filters, i.e., output tensor channels + * @param[in] dim_kernel_x filter kernel size x + * @param[in] dim_kernel_y filter kernel size y + * @param[in] padding_x padding sizes x + * @param[in] padding_y padding sizes y + * @param[in] stride_x convolution stride x + * @param[in] stride_y convolution stride y + * @param[in] bias pointer to bias + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in,out] Im_out pointer to output tensor + * @param[in] dim_im_out_x output tensor dimension x + * @param[in] dim_im_out_y output tensor dimension y + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] bufferB pointer to buffer space for output + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + * + * This function is the version with full list of optimization tricks, but with + * some contraints: + * ch_im_in is multiple of 2 + * ch_im_out is multiple of 2 + */ + +arm_status arm_depthwise_separable_conv_HWC_q7_nonsquare(const q7_t * Im_in, + const uint16_t dim_im_in_x, + const uint16_t dim_im_in_y, + const uint16_t ch_im_in, + const q7_t * wt, + const uint16_t ch_im_out, + const uint16_t dim_kernel_x, + const uint16_t dim_kernel_y, + const uint16_t padding_x, + const uint16_t padding_y, + const uint16_t stride_x, + const uint16_t stride_y, + const q7_t * bias, + const uint16_t bias_shift, + const uint16_t out_shift, + q7_t * Im_out, + const uint16_t dim_im_out_x, + const uint16_t dim_im_out_y, + q15_t * bufferA, + q7_t * bufferB) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + +/* + * Implementation: + * There are 3 nested loop here: + * Inner loop: calculate each output value with MAC instruction over an accumulator + * Mid loop: loop over different output channel + * Outer loop: loop over different output (x, y) + * + */ + + int16_t i_out_y, i_out_x; + int16_t i_ker_y, i_ker_x; + q7_t *colBuffer = (q7_t *) bufferA; + q7_t *pBuffer = colBuffer; + const q7_t *pBias = bias; + q7_t *pOut = Im_out; + uint16_t rowCnt; + uint16_t row_shift; + + /* do some checking here, basically ch_im_in == ch_im_out */ + if (ch_im_in != ch_im_out) + { + return ARM_MATH_SIZE_MISMATCH; + } + + for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++) + { + /* we first do im2col here */ + for (i_ker_y = i_out_y * stride_y - padding_y; i_ker_y < i_out_y * stride_y - padding_y + dim_kernel_y; + i_ker_y++) + { + for (i_ker_x = i_out_x * stride_x - padding_x; i_ker_x < i_out_x * stride_x - padding_x + dim_kernel_x; + i_ker_x++) + { + if (i_ker_y < 0 || i_ker_y >= dim_im_in_y || i_ker_x < 0 || i_ker_x >= dim_im_in_x) + { + /* arm_fill_q7(0, pBuffer, ch_im_in); */ + memset(pBuffer, 0, ch_im_in); + } else + { + /* arm_copy_q7((q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, pBuffer, ch_im_in); */ + memcpy(pBuffer, (q7_t *) Im_in + (i_ker_y * dim_im_in_x + i_ker_x) * ch_im_in, ch_im_in); + } + pBuffer += ch_im_in; + } + } + + /* we will do the computation here for each channel */ + rowCnt = ch_im_out >> 2; + row_shift = 0; + pBias = bias; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = (dim_kernel_x * dim_kernel_y) >> 1; + q7_t *pB = colBuffer + row_shift; + const q7_t *pA = wt + row_shift; + row_shift += 4; + +#ifdef USE_INTRINSIC + +#ifndef ARM_MATH_BIG_ENDIAN + + while (colCnt) + { + q31_t inA1, inA2, inB1, inB2, opA, opB; + + inB1 = *__SIMD32(pB); + pB += ch_im_in; + opB = *__SIMD32(pB); + pB += ch_im_in; + inB2 = __PKHTB(opB, inB1, 16); + inB1 = __PKHBT(inB1, opB, 16); + inA1 = *__SIMD32(pA); + pA += ch_im_in; + opB = *__SIMD32(pA); + pA += ch_im_in; + inA2 = __PKHTB(opB, inA1, 16); + inA1 = __PKHBT(inA1, opB, 16); + opA = __SXTB16(inA1); + opB = __SXTB16(inB1); + sum = __SMLAD(opA, opB, sum); + opA = __SXTB16(__ROR(inA1, 8)); + opB = __SXTB16(__ROR(inB1, 8)); + sum2 = __SMLAD(opA, opB, sum2); + opA = __SXTB16(inA2); + opB = __SXTB16(inB2); + sum3 = __SMLAD(opA, opB, sum3); + opA = __SXTB16(__ROR(inA2, 8)); + opB = __SXTB16(__ROR(inB2, 8)); + sum4 = __SMLAD(opA, opB, sum4); + colCnt--; + } +#else + + while (colCnt) + { + q31_t inA1, inA2, inB1, inB2, opA, opB; + + inB1 = *__SIMD32(pB); + pB += ch_im_in; + opB = *__SIMD32(pB); + pB += ch_im_in; + inB2 = __PKHBT(opB, inB1, 16); + inB1 = __PKHTB(inB1, opB, 16); + inA1 = *__SIMD32(pA); + pA += ch_im_in; + opB = *__SIMD32(pA); + pA += ch_im_in; + inA2 = __PKHBT(opB, inA1, 16); + inA1 = __PKHTB(inA1, opB, 16); + opA = __SXTB16(inA1); + opB = __SXTB16(inB1); + sum2 = __SMLAD(opA, opB, sum2); + opA = __SXTB16(__ROR(inA1, 8)); + opB = __SXTB16(__ROR(inB1, 8)); + sum = __SMLAD(opA, opB, sum); + opA = __SXTB16(inA2); + opB = __SXTB16(inB2); + sum4 = __SMLAD(opA, opB, sum4); + opA = __SXTB16(__ROR(inA2, 8)); + opB = __SXTB16(__ROR(inB2, 8)); + sum3 = __SMLAD(opA, opB, sum3); + colCnt--; + } + +#endif /* ARM_MATH_BIG_ENDIAN */ + +#else + +#ifndef ARM_MATH_BIG_ENDIAN + // r0 r1 r2 r3 r4 r5 + // inA1, inA2, inB1, inB2, opA, opB + asm volatile ("COL_LOOP:\n" + "ldr.w r2, [%[pB], #0]\n" + "add.w %[pB], %[pB], %[ch_im_in]\n" + "ldr.w r5, [%[pB], #0]\n" + "add.w %[pB], %[pB], %[ch_im_in]\n" + "pkhtb r3, r5, r2, ASR #16\n" + "pkhbt r2, r2, r5, LSL #16\n" + "ldr.w r0, [%[pA], #0]\n" + "add.w %[pA], %[pA], %[ch_im_in]\n" + "ldr.w r5, [%[pA], #0]\n" + "add.w %[pA], %[pA], %[ch_im_in]\n" + "pkhtb r1, r5, r0, ASR #16\n" + "pkhbt r0, r0, r5, LSL #16\n" + "sxtb16 r4, r0\n" + "sxtb16 r5, r2\n" + "smlad %[sum], r4, r5, %[sum]\n" + "mov.w r4, r0, ror #8\n" + "mov.w r5, r2, ror #8\n" + "sxtb16 r4, r4\n" + "sxtb16 r5, r5\n" + "smlad %[sum2], r4, r5, %[sum2]\n" + "sxtb16 r4, r1\n" + "sxtb16 r5, r3\n" + "smlad %[sum3], r4, r5, %[sum3]\n" + "mov.w r4, r1, ror #8\n" + "mov.w r5, r3, ror #8\n" + "sxtb16 r4, r4\n" + "sxtb16 r5, r5\n" + "smlad %[sum4], r4, r5, %[sum4]\n" + "subs %[colCnt], #1\n" + "bne COL_LOOP\n":[sum] "+r"(sum),[sum2] "+r"(sum2),[sum3] "+r"(sum3), + [sum4] "+r"(sum4),[pB] "+r"(pB),[pA] "+r"(pA):[colCnt] "r"(colCnt), + [ch_im_in] "r"(ch_im_in):"r0", "r1", "r2", "r3", "r4", "r5"); +#else + // r0 r1 r2 r3 r4 r5 + // inA1, inA2, inB1, inB2, opA, opB + asm volatile ("COL_LOOP:\n" + "ldr.w r2, [%[pB], #0]\n" + "add.w %[pB], %[pB], %[ch_im_in]\n" + "ldr.w r5, [%[pB], #0]\n" + "add.w %[pB], %[pB], %[ch_im_in]\n" + "pkhbt r3, r5, r2, LSL #16\n" + "pkhtb r2, r2, r5, ASR #16\n" + "ldr.w r0, [%[pA], #0]\n" + "add.w %[pA], %[pA], %[ch_im_in]\n" + "ldr.w r5, [%[pA], #0]\n" + "add.w %[pA], %[pA], %[ch_im_in]\n" + "pkhbt r1, r5, r0, LSL #16\n" + "pkhtb r0, r0, r5, ASR #16\n" + "sxtb16 r4, r0\n" + "sxtb16 r5, r2\n" + "smlad %[sum2], r4, r5, %[sum2]\n" + "mov.w r4, r0, ror #8\n" + "mov.w r5, r2, ror #8\n" + "sxtb16 r4, r4\n" + "sxtb16 r5, r5\n" + "smlad %[sum], r4, r5, %[sum]\n" + "sxtb16 r4, r1\n" + "sxtb16 r5, r3\n" + "smlad %[sum4], r4, r5, %[sum4]\n" + "mov.w r4, r1, ror #8\n" + "mov.w r5, r3, ror #8\n" + "sxtb16 r4, r4\n" + "sxtb16 r5, r5\n" + "smlad %[sum3], r4, r5, %[sum3]\n" + "subs %[colCnt], #1\n" + "bne COL_LOOP\n":[sum] "+r"(sum),[sum2] "+r"(sum2),[sum3] "+r"(sum3), + [sum4] "+r"(sum4),[pB] "+r"(pB),[pA] "+r"(pA):[colCnt] "r"(colCnt), + [ch_im_in] "r"(ch_im_in):"r0", "r1", "r2", "r3", "r4", "r5"); +#endif /*ARM_MATH_BIG_ENDIAN */ + +#endif /* USE_INTRINSIC */ + + colCnt = (dim_kernel_x * dim_kernel_y) & 0x1; + while (colCnt) + { + union arm_nnword inA, inB; + inA.word = *__SIMD32(pA); + pA += ch_im_in; + inB.word = *__SIMD32(pB); + pB += ch_im_in; + sum += inA.bytes[0] * inB.bytes[0]; + sum2 += inA.bytes[1] * inB.bytes[1]; + sum3 += inA.bytes[2] * inB.bytes[2]; + sum4 += inA.bytes[3] * inB.bytes[3]; + colCnt--; + } + + *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8); + *pOut++ = (q7_t) __SSAT((sum2 >> out_shift), 8); + *pOut++ = (q7_t) __SSAT((sum3 >> out_shift), 8); + *pOut++ = (q7_t) __SSAT((sum4 >> out_shift), 8); + + rowCnt--; + } + + rowCnt = ch_im_out & 0x3; + while (rowCnt) + { + q7_t *pB = colBuffer + row_shift; + const q7_t *pA = wt + row_shift; + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + uint16_t colCnt = (dim_kernel_x * dim_kernel_y); + + row_shift += 1; + + while (colCnt) + { + q7_t A1 = *pA; + q7_t B1 = *pB; + pA += ch_im_in; + pB += ch_im_in; + sum += A1 * B1; + + colCnt--; + } + *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8); + rowCnt--; + } + + // clear counter and pointers + pBuffer = colBuffer; + } + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + int i_out_y, i_out_x, i_ch_out; + int i_ker_y, i_ker_x; + + /* do some checking here, basically ch_im_in == ch_im_out */ + if (ch_im_in != ch_im_out) + { + return ARM_MATH_SIZE_MISMATCH; + } + + for (i_out_y = 0; i_out_y < dim_im_out_y; i_out_y++) + { + for (i_out_x = 0; i_out_x < dim_im_out_x; i_out_x++) + { + for (i_ch_out = 0; i_ch_out < ch_im_out; i_ch_out++) + { + // for each output + int conv_out = ((q31_t)(bias[i_ch_out]) << bias_shift) + NN_ROUND(out_shift); + for (i_ker_y = 0; i_ker_y < dim_kernel_y; i_ker_y++) + { + for (i_ker_x = 0; i_ker_x < dim_kernel_x; i_ker_x++) + { + int in_row = stride_y * i_out_y + i_ker_y - padding_y; + int in_col = stride_x * i_out_x + i_ker_x - padding_x; + if (in_row >= 0 && in_col >= 0 && in_row < dim_im_in_y && in_col < dim_im_in_x) + { + conv_out += Im_in[(in_row * dim_im_in_x + in_col) * ch_im_in + i_ch_out] * + wt[(i_ker_y * dim_kernel_x + i_ker_x) * ch_im_out + i_ch_out]; + } + } + } + Im_out[(i_out_y * dim_im_out_x + i_out_x) * ch_im_out + i_ch_out] = + (q7_t) __SSAT((conv_out >> out_shift), 8); + } + } + } + +#endif /* ARM_MATH_DSP */ + + + /* Return to application */ + return ARM_MATH_SUCCESS; + +} + +/** + * @} end of NNConv group + */ diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c new file mode 100644 index 0000000..24ab412 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c @@ -0,0 +1,187 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nn_mat_mult_kernel_q7_q15.c + * Description: Matrix-multiplication function for convolution + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + + /** + * @brief Matrix-multiplication function for convolution + * @param[in] pA pointer to operand A + * @param[in] pInBuffer pointer to operand B, always conssists of 2 vectors + * @param[in] ch_im_out numRow of A + * @param[in] numCol_A numCol of A + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias the bias + * @param[in,out] pOut pointer to output + * @return The function returns the incremented output pointer + * + * @details + * + * This function does the matrix multiplication with weight matrix + * and 2 columns from im2col. + */ + +q7_t *arm_nn_mat_mult_kernel_q7_q15(const q7_t * pA, + const q15_t * pInBuffer, + const uint16_t ch_im_out, + const uint16_t numCol_A, + const uint16_t bias_shift, + const uint16_t out_shift, + const q7_t * bias, + q7_t * pOut) +{ +#if defined (ARM_MATH_DSP) + /* set up the second output pointers */ + q7_t *pOut2 = pOut + ch_im_out; + const q7_t *pBias = bias; + + uint16_t rowCnt = ch_im_out >> 1; + /* this loop over rows in A */ + while (rowCnt) + { + /* setup pointers for B */ + const q15_t *pB = pInBuffer; + const q15_t *pB2 = pB + numCol_A; + + /* align the second pointer for A */ + const q7_t *pA2 = pA + numCol_A; + + /* init the sum with bias */ + q31_t sum = ((q31_t)(*pBias) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)(*pBias) << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = numCol_A >> 2; + /* accumulate over the vector */ + while (colCnt) + { + q31_t inA11, inA12, inA21, inA22; + q31_t inB1 = *__SIMD32(pB)++; + q31_t inB2 = *__SIMD32(pB2)++; + + pA = (q7_t *) read_and_pad((void *)pA, &inA11, &inA12); + pA2 = (q7_t *) read_and_pad((void *)pA2, &inA21, &inA22); + + sum = __SMLAD(inA11, inB1, sum); + sum2 = __SMLAD(inA11, inB2, sum2); + sum3 = __SMLAD(inA21, inB1, sum3); + sum4 = __SMLAD(inA21, inB2, sum4); + + inB1 = *__SIMD32(pB)++; + inB2 = *__SIMD32(pB2)++; + + sum = __SMLAD(inA12, inB1, sum); + sum2 = __SMLAD(inA12, inB2, sum2); + sum3 = __SMLAD(inA22, inB1, sum3); + sum4 = __SMLAD(inA22, inB2, sum4); + + colCnt--; + } /* while over colCnt */ + colCnt = numCol_A & 0x3; + while (colCnt) + { + q7_t inA1 = *pA++; + q15_t inB1 = *pB++; + q7_t inA2 = *pA2++; + q15_t inB2 = *pB2++; + + sum += inA1 * inB1; + sum2 += inA1 * inB2; + sum3 += inA2 * inB1; + sum4 += inA2 * inB2; + colCnt--; + } /* while over colCnt */ + *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8); + *pOut++ = (q7_t) __SSAT((sum3 >> out_shift), 8); + *pOut2++ = (q7_t) __SSAT((sum2 >> out_shift), 8); + *pOut2++ = (q7_t) __SSAT((sum4 >> out_shift), 8); + + /* skip the row computed with A2 */ + pA += numCol_A; + rowCnt--; + } /* for over ch_im_out */ + + /* compute left-over row if any */ + if (ch_im_out & 0x1) + { + /* setup pointers for B */ + const q15_t *pB = pInBuffer; + const q15_t *pB2 = pB + numCol_A; + + /* load the bias */ + q31_t sum = ((q31_t)(*pBias) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = numCol_A >> 2; + while (colCnt) + { + q31_t inA11, inA12; + q31_t inB1 = *__SIMD32(pB)++; + q31_t inB2 = *__SIMD32(pB2)++; + + pA = (q7_t *) read_and_pad((void *)pA, &inA11, &inA12); + + sum = __SMLAD(inA11, inB1, sum); + sum2 = __SMLAD(inA11, inB2, sum2); + + inB1 = *__SIMD32(pB)++; + inB2 = *__SIMD32(pB2)++; + sum = __SMLAD(inA12, inB1, sum); + sum2 = __SMLAD(inA12, inB2, sum2); + + colCnt--; + } + colCnt = numCol_A & 0x3; + while (colCnt) + { + q7_t inA1 = *pA++; + q15_t inB1 = *pB++; + q15_t inB2 = *pB2++; + + sum += inA1 * inB1; + sum2 += inA1 * inB2; + colCnt--; + } + + *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8); + *pOut2++ = (q7_t) __SSAT((sum2 >> out_shift), 8); + } + + pOut += ch_im_out; + + /* return the new output pointer with offset */ + return pOut; +#else + /* To be completed */ + return NULL; +#endif /* ARM_MATH_DSP */ + +} diff --git a/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15_reordered.c b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15_reordered.c new file mode 100644 index 0000000..36af21a --- /dev/null +++ b/Drivers/CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15_reordered.c @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nn_mat_mult_kernel_q7_q15_reordered.c + * Description: Matrix-multiplication function for convolution with reordered columns + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * -------------------------------------------------------------------- */ + +#include "arm_nnfunctions.h" +#include "arm_math.h" + + /** + * @brief Matrix-multiplication function for convolution with reordered columns + * @param[in] pA pointer to operand A + * @param[in] pInBuffer pointer to operand B, always conssists of 2 vectors + * @param[in] ch_im_out numRow of A + * @param[in] numCol_A numCol of A + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias the bias + * @param[in,out] pOut pointer to output + * @return The function returns the incremented output pointer + * + * @details + * + * This function assumes that data in pInBuffer are reordered + */ + +q7_t *arm_nn_mat_mult_kernel_q7_q15_reordered(const q7_t * pA, + const q15_t * pInBuffer, + const uint16_t ch_im_out, + const uint16_t numCol_A, + const uint16_t bias_shift, + const uint16_t out_shift, + const q7_t * bias, + q7_t * pOut) +{ + +#if defined (ARM_MATH_DSP) + /* set up the second output pointers */ + q7_t *pOut2 = pOut + ch_im_out; + int i; + + /* this loop over rows in A */ + for (i = 0; i < ch_im_out; i += 2) + { + /* setup pointers for B */ + const q15_t *pB = pInBuffer; + const q15_t *pB2 = pB + numCol_A; + + /* align the second pointer for A */ + const q7_t *pA2 = pA + numCol_A; + + /* init the sum with bias */ + q31_t sum = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)(bias[i + 1]) << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)(bias[i + 1]) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = numCol_A >> 2; + /* accumulate over the vector */ + while (colCnt) + { + q31_t inA11, inA12, inA21, inA22; + q31_t inB1 = *__SIMD32(pB)++; + q31_t inB2 = *__SIMD32(pB2)++; + + pA = (q7_t *) read_and_pad_reordered((void *)pA, &inA11, &inA12); + pA2 = (q7_t *) read_and_pad_reordered((void *)pA2, &inA21, &inA22); + + sum = __SMLAD(inA11, inB1, sum); + sum2 = __SMLAD(inA11, inB2, sum2); + sum3 = __SMLAD(inA21, inB1, sum3); + sum4 = __SMLAD(inA21, inB2, sum4); + + inB1 = *__SIMD32(pB)++; + inB2 = *__SIMD32(pB2)++; + + sum = __SMLAD(inA12, inB1, sum); + sum2 = __SMLAD(inA12, inB2, sum2); + sum3 = __SMLAD(inA22, inB1, sum3); + sum4 = __SMLAD(inA22, inB2, sum4); + + colCnt--; + } /* while over colCnt */ + colCnt = numCol_A & 0x3; + while (colCnt) + { + q7_t inA1 = *pA++; + q15_t inB1 = *pB++; + q7_t inA2 = *pA2++; + q15_t inB2 = *pB2++; + + sum += inA1 * inB1; + sum2 += inA1 * inB2; + sum3 += inA2 * inB1; + sum4 += inA2 * inB2; + colCnt--; + } /* while over colCnt */ + *pOut++ = (q7_t) __SSAT((sum >> out_shift), 8); + *pOut++ = (q7_t) __SSAT((sum3 >> out_shift), 8); + *pOut2++ = (q7_t) __SSAT((sum2 >> out_shift), 8); + *pOut2++ = (q7_t) __SSAT((sum4 >> out_shift), 8); + + /* skip the row computed with A2 */ + pA += numCol_A; + } /* for over ch_im_out */ + + pOut += ch_im_out; + + /* return the new output pointer with offset */ + return pOut; +#else + /* To be completed */ + return NULL; +#endif /* ARM_MATH_DSP */ +} diff --git a/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15.c b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15.c new file mode 100644 index 0000000..bb9a091 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15.c @@ -0,0 +1,199 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_fully_connected_mat_q7_vec_q15.c + * Description: Mixed Q15-Q7 fully-connected layer function + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup FC + * @{ + */ + + /** + * @brief Mixed Q15-Q7 fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + * @details + * + * Buffer size: + * + * vec_buffer size: 0 + * + * Q7_Q15 version of the fully connected layer + * + * Weights are in q7_t and Activations are in q15_t + * + */ + +arm_status +arm_fully_connected_mat_q7_vec_q15(const q15_t * pV, + const q7_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, + const q7_t * bias, + q15_t * pOut, + q15_t * vec_buffer) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + const q7_t *pB = pM; + const q7_t *pB2; + q15_t *pO = pOut; + const q7_t *pBias = bias; + const q15_t *pA = pV; + + uint16_t rowCnt = num_of_rows >> 1; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + uint16_t colCnt = dim_vec >> 2; + + pA = pV; + pB2 = pB + dim_vec; + + while (colCnt) + { + q31_t inV, inM11, inM12, inM21, inM22; + pB = (q7_t *) read_and_pad((void *)pB, &inM11, &inM12); + pB2 = (q7_t *) read_and_pad((void *)pB2, &inM21, &inM22); + + inV = *__SIMD32(pA)++; + + sum = __SMLAD(inV, inM11, sum); + sum2 = __SMLAD(inV, inM21, sum2); + + inV = *__SIMD32(pA)++; + + sum = __SMLAD(inV, inM12, sum); + sum2 = __SMLAD(inV, inM22, sum2); + + colCnt--; + } + colCnt = dim_vec & 0x3; + while (colCnt) + { + q15_t inV = *pA++; + q7_t inM = *pB++; + q7_t inM2 = *pB2++; + + sum += inV * inM; + sum2 += inV * inM2; + colCnt--; + } /* while over colCnt */ + *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16)); + *pO++ = (q15_t) (__SSAT((sum2 >> out_shift), 16)); + + /*adjust the pointers and counters */ + pB += dim_vec; + rowCnt--; + } + + /* left-over part of the rows */ + rowCnt = num_of_rows & 0x1; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + uint16_t colCnt = dim_vec >> 2; + + pA = pV; + + while (colCnt) + { + q31_t inV1, inV2, inM11, inM12; + + pB = (q7_t *) read_and_pad((void *)pB, &inM11, &inM12); + + inV1 = *__SIMD32(pA)++; + sum = __SMLAD(inV1, inM11, sum); + + inV2 = *__SIMD32(pA)++; + sum = __SMLAD(inV2, inM12, sum); + + colCnt--; + } + + /* left-over of the vector */ + colCnt = dim_vec & 0x3; + while (colCnt) + { + q15_t inV = *pA++; + q7_t inM = *pB++; + sum += inV * inM; + colCnt--; + } + + *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16)); + + rowCnt--; + } + +#else + int i, j; + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + for (i = 0; i < num_of_rows; i++) + { + int ip_out = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift); + for (j = 0; j < dim_vec; j++) + { + ip_out += pV[j] * pM[i * dim_vec + j]; + } + pOut[i] = (q15_t) __SSAT((ip_out >> out_shift), 16); + } + +#endif /* ARM_MATH_DSP */ + + /* Return to ARM_MATH_SUCCESS */ + return (ARM_MATH_SUCCESS); + +} + +/** + * @} end of FC group + */ diff --git a/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15_opt.c b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15_opt.c new file mode 100644 index 0000000..b0c308b --- /dev/null +++ b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_mat_q7_vec_q15_opt.c @@ -0,0 +1,403 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_fully_connected_mat_q7_vec_q15_opt.c + * Description: Mixed Q15-Q7 opt fully-connected layer function + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup FC + * @{ + */ + + /** + * @brief Mixed Q15-Q7 opt fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + * @details + * + * Buffer size: + * + * vec_buffer size: 0 + * + * Q7_Q15 version of the fully connected layer + * + * Weights are in q7_t and Activations are in q15_t + * + * Limitation: x4 version requires weight reordering to work + * + * Here we use only one pointer to read 4 rows in the weight + * matrix. So if the original q7_t matrix looks like this: + * + * | a11 | a12 | a13 | a14 | a15 | a16 | a17 | + * + * | a21 | a22 | a23 | a24 | a25 | a26 | a27 | + * + * | a31 | a32 | a33 | a34 | a35 | a36 | a37 | + * + * | a41 | a42 | a43 | a44 | a45 | a46 | a47 | + * + * | a51 | a52 | a53 | a54 | a55 | a56 | a57 | + * + * | a61 | a62 | a63 | a64 | a65 | a66 | a67 | + * + * We operates on multiple-of-4 rows, so the first four rows becomes + * + * | a11 | a21 | a12 | a22 | a31 | a41 | a32 | a42 | + * + * | a13 | a23 | a14 | a24 | a33 | a43 | a34 | a44 | + * + * | a15 | a25 | a16 | a26 | a35 | a45 | a36 | a46 | + * + * The column left over will be in-order. + * which is: + * | a17 | a27 | a37 | a47 | + * + * For the left-over rows, we do 1x1 computation, so the data remains + * as its original order. + * + * So the stored weight matrix looks like this: + * + * | a11 | a21 | a12 | a22 | a31 | a41 | + * + * | a32 | a42 | a13 | a23 | a14 | a24 | + * + * | a33 | a43 | a34 | a44 | a15 | a25 | + * + * | a16 | a26 | a35 | a45 | a36 | a46 | + * + * | a17 | a27 | a37 | a47 | a51 | a52 | + * + * | a53 | a54 | a55 | a56 | a57 | a61 | + * + * | a62 | a63 | a64 | a65 | a66 | a67 | + * + */ + +arm_status +arm_fully_connected_mat_q7_vec_q15_opt(const q15_t * pV, + const q7_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, const q7_t * bias, q15_t * pOut, q15_t * vec_buffer) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + const q7_t *pB = pM; + q15_t *pO = pOut; + const q7_t *pBias = bias; + const q15_t *pA = pV; + + uint16_t rowCnt = num_of_rows >> 2; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = dim_vec >> 1; + + pA = pV; + +#ifdef USE_INTRINSIC + +#ifndef ARM_MATH_BIG_ENDIAN + + while (colCnt) + { + q31_t inM11, inM12, inM13, inM14; + q31_t inV; + + inV = *__SIMD32(pA)++; + inM11 = *__SIMD32(pB)++; + inM12 = __SXTB16(__ROR(inM11, 8)); + inM11 = __SXTB16(inM11); + sum = __SMLAD(inM11, inV, sum); + sum2 = __SMLAD(inM12, inV, sum2); + inM13 = *__SIMD32(pB)++; + inM14 = __SXTB16(__ROR(inM13, 8)); + inM13 = __SXTB16(inM13); + sum3 = __SMLAD(inM13, inV, sum3); + sum4 = __SMLAD(inM14, inV, sum4); + colCnt--; + } + +#else + + while (colCnt) + { + q31_t inM11, inM12, inM13, inM14; + q31_t inV; + + inV = *__SIMD32(pA)++; + inM11 = *__SIMD32(pB)++; + inM12 = __SXTB16(__ROR(inM11, 8)); + inM11 = __SXTB16(inM11); + sum = __SMLAD(inM12, inV, sum); + sum2 = __SMLAD(inM11, inV, sum2); + inM13 = *__SIMD32(pB)++; + inM14 = __SXTB16(__ROR(inM13, 8)); + inM13 = __SXTB16(inM13); + sum3 = __SMLAD(inM14, inV, sum3); + sum4 = __SMLAD(inM13, inV, sum4); + colCnt--; + } + +#endif /* ARM_MATH_BIG_ENDIAN */ + +#else + + /* + * register needed: + * loop counter: colCnt + * accumulators: sum, sum2, sum3, sum4 + * pointers: pB, pA + * weight data: inM11, inM12, inM13, inM14 + * activation data: inV + */ + +#ifndef ARM_MATH_BIG_ENDIAN + asm volatile ("COL_LOOP_%=:\n" + "ldr.w r4, [%[pA]], #4\n" + "ldr.w r1, [%[pB]], #8\n" + "mov.w r0, r1, ror #8\n" + "sxtb16 r0, r0\n" + "sxtb16 r1, r1\n" + "smlad %[sum], r4, r1, %[sum]\n" + "smlad %[sum2], r4, r0, %[sum2]\n" + "ldr.w r3, [%[pB], #-4]\n" + "mov.w r2, r3, ror #8\n" + "sxtb16 r2, r2\n" + "sxtb16 r3, r3\n" + "smlad %[sum3], r4, r3, %[sum3]\n" + "smlad %[sum4], r4, r2, %[sum4]\n" + "subs %[colCnt], #1\n" + "bne COL_LOOP_%=\n":[sum] "+r"(sum), + [sum2] "+r"(sum2),[sum3] "+r"(sum3), + [sum4] "+r"(sum4),[pB] "+r"(pB),[pA] "+r"(pA):[colCnt] "r"(colCnt):"r0", "r1", "r2", "r3", "r4"); +#else + asm volatile ("COL_LOOP_%=:\n" + "ldr.w r4, [%[pA]], #4\n" + "ldr.w r1, [%[pB]], #8\n" + "mov.w r0, r1, ror #8\n" + "sxtb16 r0, r0\n" + "sxtb16 r1, r1\n" + "smlad %[sum], r4, r0, %[sum]\n" + "smlad %[sum2], r4, r1, %[sum2]\n" + "ldr.w r3, [%[pB], #-4]\n" + "mov.w r2, r3, ror #8\n" + "sxtb16 r2, r2\n" + "sxtb16 r3, r3\n" + "smlad %[sum3], r4, r2, %[sum3]\n" + "smlad %[sum4], r4, r3, %[sum4]\n" + "subs %[colCnt], #1\n" + "bne COL_LOOP_%=\n":[sum] "+r"(sum), + [sum2] "+r"(sum2),[sum3] "+r"(sum3), + [sum4] "+r"(sum4),[pB] "+r"(pB),[pA] "+r"(pA):[colCnt] "r"(colCnt):"r0", "r1", "r2", "r3", "r4"); +#endif /* ARM_MATH_BIG_ENDIAN */ + +#endif /* USE_INTRINSIC */ + + colCnt = dim_vec & 0x1; + while (colCnt) + { + q15_t inV = *pA++; + q7_t inM = *pB++; + q7_t inM2 = *pB++; + q7_t inM3 = *pB++; + q7_t inM4 = *pB++; + + sum += inV * inM; + sum2 += inV * inM2; + sum3 += inV * inM3; + sum4 += inV * inM4; + colCnt--; + } /* while over colCnt */ + *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16)); + *pO++ = (q15_t) (__SSAT((sum2 >> out_shift), 16)); + *pO++ = (q15_t) (__SSAT((sum3 >> out_shift), 16)); + *pO++ = (q15_t) (__SSAT((sum4 >> out_shift), 16)); + + /* adjust the pointers and counters */ + rowCnt--; + } + + /* left-over part of the rows */ + rowCnt = num_of_rows & 0x3; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = dim_vec >> 2; + + pA = pV; + + while (colCnt) + { + q31_t inV1, inV2, inM11, inM12; + + pB = (q7_t *) read_and_pad((void *)pB, &inM11, &inM12); + + inV1 = *__SIMD32(pA)++; + sum = __SMLAD(inV1, inM11, sum); + + inV2 = *__SIMD32(pA)++; + sum = __SMLAD(inV2, inM12, sum); + + colCnt--; + } + + /* left-over of the vector */ + colCnt = dim_vec & 0x3; + while (colCnt) + { + q15_t inV = *pA++; + q7_t inM = *pB++; + sum += inV * inM; + colCnt--; + } + + *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16)); + + rowCnt--; + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + uint16_t rowCnt = num_of_rows >> 2; + const q7_t *pB = pM; + const q15_t *pA; + q15_t *pO = pOut; + const q7_t *pBias = bias; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + uint16_t colCnt = dim_vec >> 1; + + pA = pV; + + while (colCnt) + { + q15_t inA1 = *pA++; + q15_t inA2 = *pA++; + + q7_t inB1 = *pB++; + q7_t inB3 = *pB++; + q7_t inB2 = *pB++; + q7_t inB4 = *pB++; + + sum += inA1 * inB1 + inA2 * inB2; + sum2 += inA1 * inB3 + inA2 * inB4; + + inB1 = *pB++; + inB3 = *pB++; + inB2 = *pB++; + inB4 = *pB++; + + sum3 += inA1 * inB1 + inA2 * inB2; + sum4 += inA1 * inB3 + inA2 * inB4; + + colCnt--; + } + + colCnt = dim_vec & 0x1; + while (colCnt) + { + q15_t inA = *pA++; + q7_t inB = *pB++; + sum += inA * inB; + inB = *pB++; + sum2 += inA * inB; + inB = *pB++; + sum3 += inA * inB; + inB = *pB++; + sum4 += inA * inB; + + colCnt--; + } + *pO++ = (q15_t) __SSAT((sum >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum2 >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum3 >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum4 >> out_shift), 16); + + rowCnt--; + } + + rowCnt = num_of_rows & 0x3; + + while (rowCnt) + { + int ip_out = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + int j; + + pA = pV; + for (j = 0; j < dim_vec; j++) + { + q15_t inA = *pA++; + q7_t inB = *pB++; + ip_out += inA * inB; + } + *pO++ = (q15_t) __SSAT((ip_out >> out_shift), 16); + + rowCnt--; + } + +#endif /* ARM_MATH_DSP */ + + /* Return to ARM_MATH_SUCCESS */ + return (ARM_MATH_SUCCESS); + +} + +/** + * @} end of FC group + */ diff --git a/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15.c b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15.c new file mode 100644 index 0000000..a4c6bba --- /dev/null +++ b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15.c @@ -0,0 +1,193 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_fully_connected_q15.c + * Description: Q15 basic fully-connected layer function + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup FC + * @{ + */ + + /** + * @brief Q15 opt fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + * + * @details + * + * Buffer size: + * + * vec_buffer size: 0 + * + */ + +arm_status +arm_fully_connected_q15(const q15_t * pV, + const q15_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, + const q15_t * bias, + q15_t * pOut, + q15_t * vec_buffer) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + const q15_t *pB = pM; + const q15_t *pB2 = pB + dim_vec; + q15_t *pO = pOut; + const q15_t *pA; + const q15_t *pBias = bias; + uint16_t rowCnt = num_of_rows >> 1; + + /* this loop loops over different output */ + while (rowCnt) { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = dim_vec >> 2; + + pA = pV; + pB2 = pB + dim_vec; + + while (colCnt) + { + q31_t inV1, inM1, inM2; + inV1 = *__SIMD32(pA)++; + inM1 = *__SIMD32(pB)++; + sum = __SMLAD(inV1, inM1, sum); + inM2 = *__SIMD32(pB2)++; + sum2 = __SMLAD(inV1, inM2, sum2); + + inV1 = *__SIMD32(pA)++; + inM1 = *__SIMD32(pB)++; + sum = __SMLAD(inV1, inM1, sum); + inM2 = *__SIMD32(pB2)++; + sum2 = __SMLAD(inV1, inM2, sum2); + + colCnt--; + } + colCnt = dim_vec & 0x3; + while (colCnt) + { + q15_t inV = *pA++; + q15_t inM = *pB++; + q15_t inM2 = *pB2++; + + sum += inV * inM; + sum2 += inV * inM2; + colCnt--; + } /* while over colCnt */ + *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16)); + *pO++ = (q15_t) (__SSAT((sum2>> out_shift), 16)); + + /* adjust the pointers and counters */ + pB = pB + dim_vec; + rowCnt --; + } + + rowCnt = num_of_rows & 0x1; + + while (rowCnt) { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = dim_vec >> 2; + + pA = pV; + + while (colCnt) { + q31_t inV1, inM1; + inV1 = *__SIMD32(pA)++; + inM1 = *__SIMD32(pB)++; + sum = __SMLAD(inV1, inM1, sum); + + inV1 = *__SIMD32(pA)++; + inM1 = *__SIMD32(pB)++; + sum = __SMLAD(inV1, inM1, sum); + + colCnt--; + } + + /* left-over of the vector */ + colCnt = dim_vec & 0x3; + while(colCnt) { + q15_t inV = *pA++; + q15_t inM = *pB++; + + sum += inV * inM; + + colCnt--; + } + + *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16)); + + rowCnt --; + } + +#else + int i, j; + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + for (i = 0; i < num_of_rows; i++) + { + int ip_out = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift); + for (j = 0; j < dim_vec; j++) + { + ip_out += pV[j] * pM[i * dim_vec + j]; + } + pOut[i] = (q15_t) __SSAT((ip_out >> out_shift), 16); + } + +#endif /* ARM_MATH_DSP */ + + /* Return to application */ + return (ARM_MATH_SUCCESS); + +} + +/** + * @} end of FC group + */ diff --git a/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15_opt.c b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15_opt.c new file mode 100644 index 0000000..8f3bbea --- /dev/null +++ b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q15_opt.c @@ -0,0 +1,332 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_fully_connected_q15_opt.c + * Description: Q15 opt fully-connected layer function + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup FC + * @{ + */ + + /** + * @brief Q15 opt fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + * + * @details + * + * Buffer size: + * + * vec_buffer size: 0 + * + * Here we use only one pointer to read 4 rows in the weight + * matrix. So if the original matrix looks like this: + * + * | a11 | a12 | a13 | + * + * | a21 | a22 | a23 | + * + * | a31 | a32 | a33 | + * + * | a41 | a42 | a43 | + * + * | a51 | a52 | a53 | + * + * | a61 | a62 | a63 | + * + * We operates on multiple-of-4 rows, so the first four rows becomes + * + * | a11 | a12 | a21 | a22 | a31 | a32 | a41 | a42 | + * + * | a13 | a23 | a33 | a43 | + * + * Remaining rows are kept the same original order. + * + * So the stored weight matrix looks like this: + * + * + * | a11 | a12 | a21 | a22 | a31 | a32 | a41 | a42 | + * + * | a13 | a23 | a33 | a43 | a51 | a52 | a53 | a61 | + * + * | a62 | a63 | + */ + +arm_status +arm_fully_connected_q15_opt(const q15_t * pV, + const q15_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, + const q15_t * bias, + q15_t * pOut, + q15_t * vec_buffer) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + const q15_t *pB = pM; + q15_t *pO = pOut; + const q15_t *pBias = bias; + const q15_t *pA = pV; + + uint16_t rowCnt = num_of_rows >> 2; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = dim_vec >> 1; + + pA = pV; + +#ifdef USE_INTRINSIC + + while (colCnt) + { + q31_t inM11, inM12, inM13, inM14; + q31_t inV; + + inV = *__SIMD32(pA)++; + inM11 = *__SIMD32(pB)++; + sum = __SMLAD(inV, inM11, sum); + inM12 = *__SIMD32(pB)++; + sum2 = __SMLAD(inV, inM12, sum2); + inM13 = *__SIMD32(pB)++; + sum3 = __SMLAD(inV, inM13, sum3); + inM14 = *__SIMD32(pB)++; + sum4 = __SMLAD(inV, inM14, sum4); + colCnt--; + } + +#else + + /* + * register needed: + * loop counter: colCnt + * accumulators: sum, sum2, sum3, sum4 + * pointers: pB, pA + * weight data: inM11, inM12, inM13, inM14 + * activation data: inV + */ + + asm volatile ("COL_LOOP_%=:\n" + "ldr.w r4, [%[pA]], #4\n" + "ldr.w r0, [%[pB]], #16\n" + "smlad %[sum], r4, r0, %[sum]\n" + "ldr.w r1, [%[pB] , #-12]\n" + "smlad %[sum2], r4, r1, %[sum2]\n" + "ldr.w r2, [%[pB] , #-8]\n" + "smlad %[sum3], r4, r2, %[sum3]\n" + "ldr.w r3, [%[pB] , #-4]\n" + "smlad %[sum4], r4, r3, %[sum4]\n" + "subs %[colCnt], #1\n" + "bne COL_LOOP_%=\n":[sum] "+r"(sum), + [sum2] "+r"(sum2),[sum3] "+r"(sum3), + [sum4] "+r"(sum4),[pB] "+r"(pB),[pA] "+r"(pA):[colCnt] "r"(colCnt):"r0", "r1", "r2", "r3", "r4"); + +#endif /* USE_INTRINSIC */ + + colCnt = dim_vec & 0x1; + while (colCnt) + { + + q15_t inV = *pA++; + q15_t inM = *pB++; + q15_t inM2 = *pB++; + q15_t inM3 = *pB++; + q15_t inM4 = *pB++; + + sum += inV * inM; + sum2 += inV * inM2; + sum3 += inV * inM3; + sum4 += inV * inM4; + colCnt--; + } /* while over colCnt */ + *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16)); + *pO++ = (q15_t) (__SSAT((sum2 >> out_shift), 16)); + *pO++ = (q15_t) (__SSAT((sum3 >> out_shift), 16)); + *pO++ = (q15_t) (__SSAT((sum4 >> out_shift), 16)); + + /* adjust the pointers and counters */ + rowCnt--; + } + + /* left-over part of the rows */ + rowCnt = num_of_rows & 0x3; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = dim_vec >> 2; + + pA = pV; + + while (colCnt) + { + q31_t inV1, inV2, inM1, inM2; + + inM1 = *__SIMD32(pB)++; + inV1 = *__SIMD32(pA)++; + sum = __SMLAD(inV1, inM1, sum); + + inM2 = *__SIMD32(pB)++; + inV2 = *__SIMD32(pA)++; + sum = __SMLAD(inV2, inM2, sum); + + colCnt--; + } + + /* left-over of the vector */ + colCnt = dim_vec & 0x3; + while (colCnt) + { + q15_t inV = *pA++; + q15_t inM = *pB++; + sum += inV * inM; + colCnt--; + } + + *pO++ = (q15_t) (__SSAT((sum >> out_shift), 16)); + + rowCnt--; + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + uint16_t rowCnt = num_of_rows >> 2; + const q15_t *pB = pM; + const q15_t *pA; + q15_t *pO = pOut; + const q15_t *pBias = bias; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = dim_vec >> 1; + + pA = pV; + while (colCnt) + { + q15_t inA1 = *pA++; + q15_t inA2 = *pA++; + + q15_t inB1 = *pB++; + q15_t inB2 = *pB++; + sum += inA1 * inB1 + inA2 * inB2; + + inB1 = *pB++; + inB2 = *pB++; + sum2 += inA1 * inB1 + inA2 * inB2; + + inB1 = *pB++; + inB2 = *pB++; + sum3 += inA1 * inB1 + inA2 * inB2; + + inB1 = *pB++; + inB2 = *pB++; + sum4 += inA1 * inB1 + inA2 * inB2; + + colCnt--; + } + colCnt = dim_vec & 0x1; + while (colCnt) + { + q15_t inA = *pA++; + q15_t inB = *pB++; + sum += inA * inB; + inB = *pB++; + sum2 += inA * inB; + inB = *pB++; + sum3 += inA * inB; + inB = *pB++; + sum4 += inA * inB; + colCnt--; + } + *pO++ = (q15_t) __SSAT((sum >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum2 >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum3 >> out_shift), 16); + *pO++ = (q15_t) __SSAT((sum4 >> out_shift), 16); + + rowCnt--; + } + rowCnt = num_of_rows & 0x3; + + while (rowCnt) + { + int ip_out = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + int j; + + pA = pV; + for (j = 0; j < dim_vec; j++) + { + q15_t inA = *pA++; + q15_t inB = *pB++; + ip_out += inA * inB; + } + *pO++ = (q15_t) __SSAT((ip_out >> out_shift), 16); + + rowCnt--; + } + +#endif /* ARM_MATH_DSP */ + + /* Return to ARM_MATH_SUCCESS */ + return (ARM_MATH_SUCCESS); + +} + +/** + * @} end of FC group + */ diff --git a/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c new file mode 100644 index 0000000..75e924f --- /dev/null +++ b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c @@ -0,0 +1,198 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_fully_connected_q7.c + * Description: Q7 basic fully-connected layer function + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup FC + * @{ + */ + + /** + * @brief Q7 basic fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + * @details + * + * Buffer size: + * + * vec_buffer size: dim_vec + * + * This basic function is designed to work with regular weight + * matrix without interleaving. + * + */ + +arm_status +arm_fully_connected_q7(const q7_t * pV, + const q7_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, const q7_t * bias, q7_t * pOut, q15_t * vec_buffer) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + const q7_t *pB = pM; + const q7_t *pB2; + q7_t *pO = pOut; + const q7_t *pBias = bias; + q15_t *pA; + uint16_t rowCnt = num_of_rows >> 1; + + /* expand the vector into the buffer */ + arm_q7_to_q15_reordered_no_shift(pV, vec_buffer, dim_vec); + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + uint16_t colCnt = dim_vec >> 2; + + pA = vec_buffer; + pB2 = pB + dim_vec; + + while (colCnt) + { + q31_t inV, inM11, inM12, inM21, inM22; + pB = (q7_t *) read_and_pad_reordered((void *)pB, &inM11, &inM12); + pB2 = (q7_t *) read_and_pad_reordered((void *)pB2, &inM21, &inM22); + + inV = *__SIMD32(pA)++; + + sum = __SMLAD(inV, inM11, sum); + sum2 = __SMLAD(inV, inM21, sum2); + + inV = *__SIMD32(pA)++; + + sum = __SMLAD(inV, inM12, sum); + sum2 = __SMLAD(inV, inM22, sum2); + + colCnt--; + } + colCnt = dim_vec & 0x3; + while (colCnt) + { + q7_t inV = *pA++; + q15_t inM = *pB++; + q15_t inM2 = *pB2++; + + sum += inV * inM; + sum2 += inV * inM2; + colCnt--; + } /* while over colCnt */ + *pO++ = (q7_t) (__SSAT((sum >> out_shift), 8)); + *pO++ = (q7_t) (__SSAT((sum2 >> out_shift), 8)); + + /* adjust the pointers and counters */ + pB += dim_vec; + rowCnt--; + } + + /* left-over part of the rows */ + rowCnt = num_of_rows & 0x1; + + while (rowCnt) + { + uint16_t colCnt = dim_vec >> 2; + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + pA = vec_buffer; + + while (colCnt) + { + q31_t inV1, inV2, inM11, inM12; + + pB = (q7_t *) read_and_pad_reordered((void *)pB, &inM11, &inM12); + + inV1 = *__SIMD32(pA)++; + sum = __SMLAD(inV1, inM11, sum); + + inV2 = *__SIMD32(pA)++; + sum = __SMLAD(inV2, inM12, sum); + + colCnt--; + } + + /* left-over of the vector */ + colCnt = dim_vec & 0x3; + while (colCnt) + { + q7_t inV = *pA++; + q15_t inM = *pB++; + sum += inV * inM; + colCnt--; + } + + *pO++ = (q7_t) (__SSAT((sum >> out_shift), 8)); + + rowCnt--; + } + +#else + int i, j; + + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + for (i = 0; i < num_of_rows; i++) + { + int ip_out = ((q31_t)(bias[i]) << bias_shift) + NN_ROUND(out_shift); + for (j = 0; j < dim_vec; j++) + { + ip_out += pV[j] * pM[i * dim_vec + j]; + } + pOut[i] = (q7_t) __SSAT((ip_out >> out_shift), 8); + } + +#endif /* ARM_MATH_DSP */ + + /* Return to ARM_MATH_SUCCESS */ + return (ARM_MATH_SUCCESS); + +} + +/** + * @} end of FC group + */ diff --git a/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c new file mode 100644 index 0000000..d197adc --- /dev/null +++ b/Drivers/CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c @@ -0,0 +1,484 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_fully_connected_q7_opt.c + * Description: Q7 basic fully-connected layer function + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup FC + * @{ + */ + + /** + * @brief Q7 opt fully-connected layer function + * @param[in] pV pointer to input vector + * @param[in] pM pointer to matrix weights + * @param[in] dim_vec length of the vector + * @param[in] num_of_rows number of rows in weight matrix + * @param[in] bias_shift amount of left-shift for bias + * @param[in] out_shift amount of right-shift for output + * @param[in] bias pointer to bias + * @param[in,out] pOut pointer to output vector + * @param[in,out] vec_buffer pointer to buffer space for input + * @return The function returns ARM_MATH_SUCCESS + * + * @details + * + * Buffer size: + * + * vec_buffer size: dim_vec + * + * This opt function is designed to work with interleaved weight + * matrix. The vector input is assumed in q7_t format, we call + * arm_q7_to_q15_no_shift_shuffle function to expand into + * q15_t format with certain weight re-ordering, refer to the function + * comments for more details. + * Here we use only one pointer to read 4 rows in the weight + * matrix. So if the original q7_t matrix looks like this: + * + * | a11 | a12 | a13 | a14 | a15 | a16 | a17 | + * + * | a21 | a22 | a23 | a24 | a25 | a26 | a27 | + * + * | a31 | a32 | a33 | a34 | a35 | a36 | a37 | + * + * | a41 | a42 | a43 | a44 | a45 | a46 | a47 | + * + * | a51 | a52 | a53 | a54 | a55 | a56 | a57 | + * + * | a61 | a62 | a63 | a64 | a65 | a66 | a67 | + * + * + * We operates on multiple-of-4 rows, so the first four rows becomes + * + * | a11 | a21 | a13 | a23 | a31 | a41 | a33 | a43 | + * + * | a12 | a22 | a14 | a24 | a32 | a42 | a34 | a44 | + * + * | a15 | a25 | a35 | a45 | a16 | a26 | a36 | a46 | + * + * So within the kernel, we first read the re-ordered vector in as: + * + * | b1 | b3 | and | b2 | b4 | + * + * the four q31_t weights will look like + * + * | a11 | a13 |, | a21 | a23 |, | a31 | a33 |, | a41 | a43 | + * + * | a12 | a14 |, | a22 | a24 |, | a32 | a34 |, | a42 | a44 | + * + * The column left over will be in-order. + * which is: + * + * | a17 | a27 | a37 | a47 | + * + * For the left-over rows, we do 1x1 computation, so the data remains + * as its original order. + * + * So the stored weight matrix looks like this: + * + * | a11 | a21 | a13 | a23 | a31 | a41 | + * + * | a33 | a43 | a12 | a22 | a14 | a24 | + * + * | a32 | a42 | a34 | a44 | a15 | a25 | + * + * | a35 | a45 | a16 | a26 | a36 | a46 | + * + * | a17 | a27 | a37 | a47 | a51 | a52 | + * + * | a53 | a54 | a55 | a56 | a57 | a61 | + * + * | a62 | a63 | a64 | a65 | a66 | a67 | + * + * + */ + +arm_status +arm_fully_connected_q7_opt(const q7_t * pV, + const q7_t * pM, + const uint16_t dim_vec, + const uint16_t num_of_rows, + const uint16_t bias_shift, + const uint16_t out_shift, + const q7_t * bias, + q7_t * pOut, + q15_t * vec_buffer) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + const q7_t *pB = pM; + q7_t *pO = pOut; + const q7_t *pBias = bias; + q15_t *pA; + uint16_t rowCnt = num_of_rows >> 2; + + arm_q7_to_q15_reordered_no_shift(pV, vec_buffer, dim_vec); + + while (rowCnt) + { + + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = dim_vec >> 2; + + pA = vec_buffer; + +#ifdef USE_INTRINSIC + +#ifndef ARM_MATH_BIG_ENDIAN + while (colCnt) + { + q31_t inM11, inM12, inM13, inM14; + q31_t inV; + + inV = *__SIMD32(pA)++; + inM11 = *__SIMD32(pB)++; + inM12 = __SXTB16(__ROR(inM11, 8)); + inM11 = __SXTB16(inM11); + sum = __SMLAD(inM11, inV, sum); + sum2 = __SMLAD(inM12, inV, sum2); + inM13 = *__SIMD32(pB)++; + inM14 = __SXTB16(__ROR(inM13, 8)); + inM13 = __SXTB16(inM13); + sum3 = __SMLAD(inM13, inV, sum3); + sum4 = __SMLAD(inM14, inV, sum4); + + inV = *__SIMD32(pA)++; + inM11 = *__SIMD32(pB)++; + inM12 = __SXTB16(__ROR(inM11, 8)); + inM11 = __SXTB16(inM11); + sum = __SMLAD(inM11, inV, sum); + sum2 = __SMLAD(inM12, inV, sum2); + inM13 = *__SIMD32(pB)++; + inM14 = __SXTB16(__ROR(inM13, 8)); + inM13 = __SXTB16(inM13); + sum3 = __SMLAD(inM13, inV, sum3); + sum4 = __SMLAD(inM14, inV, sum4); + colCnt--; + } +#else + while (colCnt) + { + q31_t inM11, inM12, inM13, inM14; + q31_t inV; + + inV = *__SIMD32(pA)++; + inM11 = *__SIMD32(pB)++; + inM12 = __SXTB16(__ROR(inM11, 8)); + inM11 = __SXTB16(inM11); + sum = __SMLAD(inM12, inV, sum); + sum2 = __SMLAD(inM11, inV, sum2); + inM13 = *__SIMD32(pB)++; + inM14 = __SXTB16(__ROR(inM13, 8)); + inM13 = __SXTB16(inM13); + sum3 = __SMLAD(inM14, inV, sum3); + sum4 = __SMLAD(inM13, inV, sum4); + + inV = *__SIMD32(pA)++; + inM11 = *__SIMD32(pB)++; + inM12 = __SXTB16(__ROR(inM11, 8)); + inM11 = __SXTB16(inM11); + sum = __SMLAD(inM12, inV, sum); + sum2 = __SMLAD(inM11, inV, sum2); + inM13 = *__SIMD32(pB)++; + inM14 = __SXTB16(__ROR(inM13, 8)); + inM13 = __SXTB16(inM13); + sum3 = __SMLAD(inM14, inV, sum3); + sum4 = __SMLAD(inM13, inV, sum4); + colCnt--; + } +#endif /* ARM_MATH_BIG_ENDIAN */ + +#else + + /* + * register needed: + * loop counter: colCnt + * accumulators: sum, sum2, sum3, sum4 + * pointers: pB, pA + * weight data: inM11, inM12, inM13, inM14 + * activation data: inV + */ + +#ifndef ARM_MATH_BIG_ENDIAN + asm volatile ("COL_LOOP_%=:\n" + "ldr.w r4, [%[pA]], #8\n" + "ldr.w r1, [%[pB]], #16\n" + "mov.w r0, r1, ror #8\n" + "sxtb16 r0, r0\n" + "sxtb16 r1, r1\n" + "smlad %[sum], r4, r1, %[sum]\n" + "smlad %[sum2], r4, r0, %[sum2]\n" + "ldr.w r3, [%[pB], #-12]\n" + "mov.w r2, r3, ror #8\n" + "sxtb16 r2, r2\n" + "sxtb16 r3, r3\n" + "smlad %[sum3], r4, r3, %[sum3]\n" + "smlad %[sum4], r4, r2, %[sum4]\n" + "ldr.w r4, [%[pA], #-4]\n" + "ldr.w r1, [%[pB], #-8]\n" + "mov.w r0, r1, ror #8\n" + "sxtb16 r0, r0\n" + "sxtb16 r1, r1\n" + "smlad %[sum], r4, r1, %[sum]\n" + "smlad %[sum2], r4, r0, %[sum2]\n" + "ldr.w r3, [%[pB], #-4]\n" + "mov.w r2, r3, ror #8\n" + "sxtb16 r2, r2\n" + "sxtb16 r3, r3\n" + "smlad %[sum3], r4, r3, %[sum3]\n" + "smlad %[sum4], r4, r2, %[sum4]\n" + "subs %[colCnt], #1\n" + "bne COL_LOOP_%=\n":[sum] "+r"(sum), + [sum2] "+r"(sum2),[sum3] "+r"(sum3), + [sum4] "+r"(sum4),[pB] "+r"(pB),[pA] "+r"(pA):[colCnt] "r"(colCnt):"r0", "r1", "r2", "r3", "r4"); +#else + asm volatile ("COL_LOOP_%=:\n" + "ldr.w r4, [%[pA]], #8\n" + "ldr.w r1, [%[pB]], #16\n" + "mov.w r0, r1, ror #8\n" + "sxtb16 r0, r0\n" + "sxtb16 r1, r1\n" + "smlad %[sum], r4, r0, %[sum]\n" + "smlad %[sum2], r4, r1, %[sum2]\n" + "ldr.w r3, [%[pB], #-12]\n" + "mov.w r2, r3, ror #8\n" + "sxtb16 r2, r2\n" + "sxtb16 r3, r3\n" + "smlad %[sum3], r4, r2, %[sum3]\n" + "smlad %[sum4], r4, r3, %[sum4]\n" + "ldr.w r4, [%[pA], #-4]\n" + "ldr.w r1, [%[pB], #-8]\n" + "mov.w r0, r1, ror #8\n" + "sxtb16 r0, r0\n" + "sxtb16 r1, r1\n" + "smlad %[sum], r4, r0, %[sum]\n" + "smlad %[sum2], r4, r1, %[sum2]\n" + "ldr.w r3, [%[pB], #-4]\n" + "mov.w r2, r3, ror #8\n" + "sxtb16 r2, r2\n" + "sxtb16 r3, r3\n" + "smlad %[sum3], r4, r2, %[sum3]\n" + "smlad %[sum4], r4, r3, %[sum4]\n" + "subs %[colCnt], #1\n" + "bne COL_LOOP_%=\n":[sum] "+r"(sum), + [sum2] "+r"(sum2),[sum3] "+r"(sum3), + [sum4] "+r"(sum4),[pB] "+r"(pB),[pA] "+r"(pA):[colCnt] "r"(colCnt):"r0", "r1", "r2", "r3", "r4"); +#endif /* ARM_MATH_BIG_ENDIAN */ + +#endif /* USE_INTRINSIC */ + + colCnt = dim_vec & 0x3; + while (colCnt) + { + q15_t inV = *pA++; + q7_t inM = *pB++; + q7_t inM2 = *pB++; + q7_t inM3 = *pB++; + q7_t inM4 = *pB++; + + sum += inV * inM; + sum2 += inV * inM2; + sum3 += inV * inM3; + sum4 += inV * inM4; + colCnt--; + } /* while over colCnt */ + *pO++ = (q7_t) (__SSAT((sum >> out_shift), 8)); + *pO++ = (q7_t) (__SSAT((sum2 >> out_shift), 8)); + *pO++ = (q7_t) (__SSAT((sum3 >> out_shift), 8)); + *pO++ = (q7_t) (__SSAT((sum4 >> out_shift), 8)); + + /* adjust the pointers and counters */ + rowCnt--; + } + + /* left-over part of the rows */ + rowCnt = num_of_rows & 0x3; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + uint16_t colCnt = dim_vec >> 2; + + pA = vec_buffer; + + while (colCnt) + { + q31_t inV1, inV2, inM11, inM12; + + pB = (q7_t *) read_and_pad_reordered((void *)pB, &inM11, &inM12); + + inV1 = *__SIMD32(pA)++; + sum = __SMLAD(inV1, inM11, sum); + + inV2 = *__SIMD32(pA)++; + sum = __SMLAD(inV2, inM12, sum); + + colCnt--; + } + + /* left-over of the vector */ + colCnt = dim_vec & 0x3; + while (colCnt) + { + q15_t inV = *pA++; + q7_t inM = *pB++; + sum += inV * inM; + colCnt--; + } + + *pO++ = (q7_t) (__SSAT((sum >> out_shift), 8)); + + rowCnt--; + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + uint16_t rowCnt = num_of_rows >> 2; + const q7_t *pB = pM; + const q7_t *pA; + q7_t *pO = pOut; + const q7_t *pBias = bias; + + while (rowCnt) + { + q31_t sum = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum2 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum3 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + q31_t sum4 = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + uint16_t colCnt = dim_vec >> 2; + + pA = pV; + + while (colCnt) + { + q7_t inA1 = *pA++; + q7_t inA3 = *pA++; + q7_t inA2 = *pA++; + q7_t inA4 = *pA++; + + q7_t inB1 = *pB++; + q7_t inB3 = *pB++; + q7_t inB2 = *pB++; + q7_t inB4 = *pB++; + + sum += inA1 * inB1 + inA2 * inB2; + sum2 += inA1 * inB3 + inA2 * inB4; + + inB1 = *pB++; + inB3 = *pB++; + inB2 = *pB++; + inB4 = *pB++; + + sum3 += inA1 * inB1 + inA2 * inB2; + sum4 += inA1 * inB3 + inA2 * inB4; + + inB1 = *pB++; + inB3 = *pB++; + inB2 = *pB++; + inB4 = *pB++; + + sum += inA3 * inB1 + inA4 * inB2; + sum2 += inA3 * inB3 + inA4 * inB4; + + inB1 = *pB++; + inB3 = *pB++; + inB2 = *pB++; + inB4 = *pB++; + + sum3 += inA3 * inB1 + inA4 * inB2; + sum4 += inA3 * inB3 + inA4 * inB4; + + colCnt--; + } + colCnt = dim_vec & 0x3; + while (colCnt) + { + q7_t inA = *pA++; + q7_t inB = *pB++; + sum += inA * inB; + inB = *pB++; + sum2 += inA * inB; + inB = *pB++; + sum3 += inA * inB; + inB = *pB++; + sum4 += inA * inB; + + colCnt--; + } + *pO++ = (q7_t) __SSAT((sum >> out_shift), 8); + *pO++ = (q7_t) __SSAT((sum2 >> out_shift), 8); + *pO++ = (q7_t) __SSAT((sum3 >> out_shift), 8); + *pO++ = (q7_t) __SSAT((sum4 >> out_shift), 8); + + rowCnt--; + } + + rowCnt = num_of_rows & 0x3; + + while (rowCnt) + { + int ip_out = ((q31_t)(*pBias++) << bias_shift) + NN_ROUND(out_shift); + + int j; + + pA = pV; + for (j = 0; j < dim_vec; j++) + { + q7_t inA = *pA++; + q7_t inB = *pB++; + ip_out += inA * inB; + } + *pO++ = (q7_t) __SSAT((ip_out >> out_shift), 8); + + rowCnt--; + } + +#endif /* ARM_MATH_DSP */ + + /* Return to ARM_MATH_SUCCESS */ + return (ARM_MATH_SUCCESS); + +} + +/** + * @} end of FC group + */ diff --git a/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nn_mult_q15.c b/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nn_mult_q15.c new file mode 100644 index 0000000..de7668b --- /dev/null +++ b/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nn_mult_q15.c @@ -0,0 +1,147 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nn_mult_q15.c + * Description: Q15 vector multiplication with variable output shifts + * + * $Date: 13. July 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_nnfunctions.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup NNBasicMath + * @{ + */ + + +/** + * @brief Q7 vector multiplication with variable output shifts + * @param[in] *pSrcA pointer to the first input vector + * @param[in] *pSrcB pointer to the second input vector + * @param[out] *pDst pointer to the output vector + * @param[in] out_shift amount of right-shift for output + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q15 range [0x8000 0x7FFF] will be saturated. + */ + +void arm_nn_mult_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + const uint16_t out_shift, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counters */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q31_t inA1, inA2, inB1, inB2; /* temporary input variables */ + q15_t out1, out2, out3, out4; /* temporary output variables */ + q31_t mul1, mul2, mul3, mul4; /* temporary variables */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* read two samples at a time from sourceA */ + inA1 = *__SIMD32(pSrcA)++; + /* read two samples at a time from sourceB */ + inB1 = *__SIMD32(pSrcB)++; + /* read two samples at a time from sourceA */ + inA2 = *__SIMD32(pSrcA)++; + /* read two samples at a time from sourceB */ + inB2 = *__SIMD32(pSrcB)++; + + /* multiply mul = sourceA * sourceB */ + mul1 = (q31_t) ((q15_t) (inA1 >> 16) * (q15_t) (inB1 >> 16)); + mul2 = (q31_t) ((q15_t) inA1 * (q15_t) inB1); + mul3 = (q31_t) ((q15_t) (inA2 >> 16) * (q15_t) (inB2 >> 16)); + mul4 = (q31_t) ((q15_t) inA2 * (q15_t) inB2); + + /* saturate result to 16 bit */ + out1 = (q15_t) __SSAT((mul1 + NN_ROUND(out_shift)) >> out_shift, 16); + out2 = (q15_t) __SSAT((mul2 + NN_ROUND(out_shift)) >> out_shift, 16); + out3 = (q15_t) __SSAT((mul3 + NN_ROUND(out_shift)) >> out_shift, 16); + out4 = (q15_t) __SSAT((mul4 + NN_ROUND(out_shift)) >> out_shift, 16); + + /* store the result */ +#ifndef ARM_MATH_BIG_ENDIAN + + *__SIMD32(pDst)++ = __PKHBT(out2, out1, 16); + *__SIMD32(pDst)++ = __PKHBT(out4, out3, 16); + +#else + + *__SIMD32(pDst)++ = __PKHBT(out2, out1, 16); + *__SIMD32(pDst)++ = __PKHBT(out4, out3, 16); + +#endif /* #ifndef ARM_MATH_BIG_ENDIAN */ + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and store the result in the destination buffer */ + *pDst++ = (q15_t) __SSAT((((q31_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 16); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } +} + +/** + * @} end of NNBasicMath group + */ + diff --git a/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nn_mult_q7.c b/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nn_mult_q7.c new file mode 100644 index 0000000..1b4e02c --- /dev/null +++ b/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nn_mult_q7.c @@ -0,0 +1,119 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nn_mult_q7.c + * Description: Q7 vector multiplication with variable output shifts + * + * $Date: 13. July 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_nnfunctions.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup NNBasicMath + * @{ + */ + +/** + * @brief Q7 vector multiplication with variable output shifts + * @param[in] *pSrcA pointer to the first input vector + * @param[in] *pSrcB pointer to the second input vector + * @param[out] *pDst pointer to the output vector + * @param[in] out_shift amount of right-shift for output + * @param[in] blockSize number of samples in each vector + * @return none. + * + * Scaling and Overflow Behavior: + * \par + * The function uses saturating arithmetic. + * Results outside of the allowable Q7 range [0x80 0x7F] will be saturated. + */ + +void arm_nn_mult_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + const uint16_t out_shift, + uint32_t blockSize) +{ + uint32_t blkCnt; /* loop counters */ + +#if defined (ARM_MATH_DSP) + +/* Run the below code for Cortex-M4 and Cortex-M3 */ + q7_t out1, out2, out3, out4; /* Temporary variables to store the product */ + + /* loop Unrolling */ + blkCnt = blockSize >> 2U; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and store the results in temporary variables */ + out1 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 8); + out2 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 8); + out3 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 8); + out4 = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 8); + + /* Store the results of 4 inputs in the destination buffer in single cycle by packing */ + *__SIMD32(pDst)++ = __PACKq7(out1, out2, out3, out4); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4U; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Initialize blkCnt with number of samples */ + blkCnt = blockSize; + +#endif /* #if defined (ARM_MATH_DSP) */ + + + while (blkCnt > 0U) + { + /* C = A * B */ + /* Multiply the inputs and store the result in the destination buffer */ + *pDst++ = (q7_t) __SSAT((((q15_t) (*pSrcA++) * (*pSrcB++) + NN_ROUND(out_shift)) >> out_shift), 8); + + /* Decrement the blockSize loop counter */ + blkCnt--; + } +} + +/** + * @} end of NNBasicMath group + */ diff --git a/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nntables.c b/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nntables.c new file mode 100644 index 0000000..cabd9b1 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_nntables.c @@ -0,0 +1,297 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_nntables.c + * Description: Converts the elements of the Q7 vector to Q15 vector without left-shift + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_nnsupportfunctions.h" + +/** + * @brief tables for various activation functions + * + * This file include the declaration of common tables. + * Most of them are used for activation functions + * + * Assumption: + * Unified table: input is 3.x format, i.e, range of [-8, 8) + * sigmoid(8) = 0.9996646498695336 + * tanh(8) = 0.9999997749296758 + * The accuracy here should be good enough + * + * 2-stage HL table: + * + * The entire input range is divided into two parts: + * + * Low range table: 0x000x xxxx or 0x111x xxxx + * table entry will be the binary number excluding the first + * two digits, i.e., 0x0x xxxx or 0x1x xxxx + * + * + * + * High range table 0x0010 0000 -- 0x0111 1111 + * 0x1000 0000 -- 0x1101 1111 + * + * For positive numbers, table entry will be + * 0x0010 0000 -- 0x0111 1111 minus 0x0010 0000 + * i.e., 0x0000 0000 - 0x0101 11111 + * + * same thing for the negative numbers, table entry will be + * 0x1000 0000 -- 0x1101 1111 minux 0x0010 0000 + * i.e., 0x0110 0000 - 0x1011 1111 + */ + +const q7_t sigmoidTable_q7[256] = { + 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, + 0x50, 0x52, 0x53, 0x55, 0x57, 0x59, 0x5a, 0x5c, + 0x5e, 0x5f, 0x61, 0x62, 0x63, 0x65, 0x66, 0x67, + 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, + 0x71, 0x72, 0x72, 0x73, 0x74, 0x74, 0x75, 0x76, + 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7a, + 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, + 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7e, + 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06, + 0x06, 0x06, 0x07, 0x07, 0x08, 0x08, 0x09, 0x09, + 0x0a, 0x0a, 0x0b, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, + 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x19, 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x21, + 0x22, 0x24, 0x26, 0x27, 0x29, 0x2b, 0x2d, 0x2e, + 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, +}; + +const q15_t sigmoidTable_q15[256] = { + 0x4000, 0x4200, 0x43ff, 0x45fc, 0x47f5, 0x49eb, 0x4bdc, 0x4dc8, + 0x4fad, 0x518a, 0x5360, 0x552c, 0x56ef, 0x58a8, 0x5a57, 0x5bfb, + 0x5d93, 0x5f20, 0x60a1, 0x6216, 0x637f, 0x64db, 0x662b, 0x676f, + 0x68a6, 0x69d2, 0x6af1, 0x6c05, 0x6d0d, 0x6e09, 0x6efb, 0x6fe2, + 0x70be, 0x7190, 0x7258, 0x7316, 0x73cc, 0x7478, 0x751b, 0x75b7, + 0x764a, 0x76d6, 0x775b, 0x77d8, 0x784f, 0x78c0, 0x792a, 0x798f, + 0x79ee, 0x7a48, 0x7a9d, 0x7aed, 0x7b39, 0x7b80, 0x7bc4, 0x7c03, + 0x7c3f, 0x7c78, 0x7cad, 0x7ce0, 0x7d0f, 0x7d3c, 0x7d66, 0x7d8d, + 0x7db3, 0x7dd6, 0x7df7, 0x7e16, 0x7e33, 0x7e4f, 0x7e69, 0x7e81, + 0x7e98, 0x7eae, 0x7ec2, 0x7ed5, 0x7ee7, 0x7ef8, 0x7f08, 0x7f17, + 0x7f25, 0x7f32, 0x7f3e, 0x7f4a, 0x7f55, 0x7f5f, 0x7f69, 0x7f72, + 0x7f7b, 0x7f83, 0x7f8a, 0x7f91, 0x7f98, 0x7f9e, 0x7fa4, 0x7faa, + 0x7faf, 0x7fb4, 0x7fb8, 0x7fbd, 0x7fc1, 0x7fc5, 0x7fc8, 0x7fcc, + 0x7fcf, 0x7fd2, 0x7fd5, 0x7fd7, 0x7fda, 0x7fdc, 0x7fde, 0x7fe0, + 0x7fe2, 0x7fe4, 0x7fe6, 0x7fe7, 0x7fe9, 0x7fea, 0x7feb, 0x7fed, + 0x7fee, 0x7fef, 0x7ff0, 0x7ff1, 0x7ff2, 0x7ff3, 0x7ff4, 0x7ff4, + 0x000b, 0x000c, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, + 0x0012, 0x0013, 0x0015, 0x0016, 0x0017, 0x0019, 0x001a, 0x001c, + 0x001e, 0x0020, 0x0022, 0x0024, 0x0026, 0x0029, 0x002b, 0x002e, + 0x0031, 0x0034, 0x0038, 0x003b, 0x003f, 0x0043, 0x0048, 0x004c, + 0x0051, 0x0056, 0x005c, 0x0062, 0x0068, 0x006f, 0x0076, 0x007d, + 0x0085, 0x008e, 0x0097, 0x00a1, 0x00ab, 0x00b6, 0x00c2, 0x00ce, + 0x00db, 0x00e9, 0x00f8, 0x0108, 0x0119, 0x012b, 0x013e, 0x0152, + 0x0168, 0x017f, 0x0197, 0x01b1, 0x01cd, 0x01ea, 0x0209, 0x022a, + 0x024d, 0x0273, 0x029a, 0x02c4, 0x02f1, 0x0320, 0x0353, 0x0388, + 0x03c1, 0x03fd, 0x043c, 0x0480, 0x04c7, 0x0513, 0x0563, 0x05b8, + 0x0612, 0x0671, 0x06d6, 0x0740, 0x07b1, 0x0828, 0x08a5, 0x092a, + 0x09b6, 0x0a49, 0x0ae5, 0x0b88, 0x0c34, 0x0cea, 0x0da8, 0x0e70, + 0x0f42, 0x101e, 0x1105, 0x11f7, 0x12f3, 0x13fb, 0x150f, 0x162e, + 0x175a, 0x1891, 0x19d5, 0x1b25, 0x1c81, 0x1dea, 0x1f5f, 0x20e0, + 0x226d, 0x2405, 0x25a9, 0x2758, 0x2911, 0x2ad4, 0x2ca0, 0x2e76, + 0x3053, 0x3238, 0x3424, 0x3615, 0x380b, 0x3a04, 0x3c01, 0x3e00, +}; + +const q15_t sigmoidLTable_q15[128] = { + 0x4000, 0x4100, 0x4200, 0x42ff, 0x43ff, 0x44fd, 0x45fc, 0x46f9, + 0x47f5, 0x48f1, 0x49eb, 0x4ae5, 0x4bdc, 0x4cd3, 0x4dc8, 0x4ebb, + 0x4fad, 0x509c, 0x518a, 0x5276, 0x5360, 0x5447, 0x552c, 0x560f, + 0x56ef, 0x57cd, 0x58a8, 0x5981, 0x5a57, 0x5b2a, 0x5bfb, 0x5cc9, + 0x5d93, 0x5e5b, 0x5f20, 0x5fe2, 0x60a1, 0x615d, 0x6216, 0x62cc, + 0x637f, 0x642e, 0x64db, 0x6584, 0x662b, 0x66ce, 0x676f, 0x680c, + 0x68a6, 0x693d, 0x69d2, 0x6a63, 0x6af1, 0x6b7c, 0x6c05, 0x6c8a, + 0x6d0d, 0x6d8d, 0x6e09, 0x6e84, 0x6efb, 0x6f70, 0x6fe2, 0x7051, + 0x0f42, 0x0faf, 0x101e, 0x1090, 0x1105, 0x117c, 0x11f7, 0x1273, + 0x12f3, 0x1376, 0x13fb, 0x1484, 0x150f, 0x159d, 0x162e, 0x16c3, + 0x175a, 0x17f4, 0x1891, 0x1932, 0x19d5, 0x1a7c, 0x1b25, 0x1bd2, + 0x1c81, 0x1d34, 0x1dea, 0x1ea3, 0x1f5f, 0x201e, 0x20e0, 0x21a5, + 0x226d, 0x2337, 0x2405, 0x24d6, 0x25a9, 0x267f, 0x2758, 0x2833, + 0x2911, 0x29f1, 0x2ad4, 0x2bb9, 0x2ca0, 0x2d8a, 0x2e76, 0x2f64, + 0x3053, 0x3145, 0x3238, 0x332d, 0x3424, 0x351b, 0x3615, 0x370f, + 0x380b, 0x3907, 0x3a04, 0x3b03, 0x3c01, 0x3d01, 0x3e00, 0x3f00, +}; + +const q15_t sigmoidHTable_q15[192] = { + 0x70be, 0x7190, 0x7258, 0x7316, 0x73cc, 0x7478, 0x751b, 0x75b7, + 0x764a, 0x76d6, 0x775b, 0x77d8, 0x784f, 0x78c0, 0x792a, 0x798f, + 0x79ee, 0x7a48, 0x7a9d, 0x7aed, 0x7b39, 0x7b80, 0x7bc4, 0x7c03, + 0x7c3f, 0x7c78, 0x7cad, 0x7ce0, 0x7d0f, 0x7d3c, 0x7d66, 0x7d8d, + 0x7db3, 0x7dd6, 0x7df7, 0x7e16, 0x7e33, 0x7e4f, 0x7e69, 0x7e81, + 0x7e98, 0x7eae, 0x7ec2, 0x7ed5, 0x7ee7, 0x7ef8, 0x7f08, 0x7f17, + 0x7f25, 0x7f32, 0x7f3e, 0x7f4a, 0x7f55, 0x7f5f, 0x7f69, 0x7f72, + 0x7f7b, 0x7f83, 0x7f8a, 0x7f91, 0x7f98, 0x7f9e, 0x7fa4, 0x7faa, + 0x7faf, 0x7fb4, 0x7fb8, 0x7fbd, 0x7fc1, 0x7fc5, 0x7fc8, 0x7fcc, + 0x7fcf, 0x7fd2, 0x7fd5, 0x7fd7, 0x7fda, 0x7fdc, 0x7fde, 0x7fe0, + 0x7fe2, 0x7fe4, 0x7fe6, 0x7fe7, 0x7fe9, 0x7fea, 0x7feb, 0x7fed, + 0x7fee, 0x7fef, 0x7ff0, 0x7ff1, 0x7ff2, 0x7ff3, 0x7ff4, 0x7ff4, + 0x000b, 0x000c, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, + 0x0012, 0x0013, 0x0015, 0x0016, 0x0017, 0x0019, 0x001a, 0x001c, + 0x001e, 0x0020, 0x0022, 0x0024, 0x0026, 0x0029, 0x002b, 0x002e, + 0x0031, 0x0034, 0x0038, 0x003b, 0x003f, 0x0043, 0x0048, 0x004c, + 0x0051, 0x0056, 0x005c, 0x0062, 0x0068, 0x006f, 0x0076, 0x007d, + 0x0085, 0x008e, 0x0097, 0x00a1, 0x00ab, 0x00b6, 0x00c2, 0x00ce, + 0x00db, 0x00e9, 0x00f8, 0x0108, 0x0119, 0x012b, 0x013e, 0x0152, + 0x0168, 0x017f, 0x0197, 0x01b1, 0x01cd, 0x01ea, 0x0209, 0x022a, + 0x024d, 0x0273, 0x029a, 0x02c4, 0x02f1, 0x0320, 0x0353, 0x0388, + 0x03c1, 0x03fd, 0x043c, 0x0480, 0x04c7, 0x0513, 0x0563, 0x05b8, + 0x0612, 0x0671, 0x06d6, 0x0740, 0x07b1, 0x0828, 0x08a5, 0x092a, + 0x09b6, 0x0a49, 0x0ae5, 0x0b88, 0x0c34, 0x0cea, 0x0da8, 0x0e70, +}; + +const q7_t tanhTable_q7[256] = { + 0x00, 0x08, 0x10, 0x18, 0x1f, 0x27, 0x2e, 0x35, + 0x3b, 0x41, 0x47, 0x4c, 0x51, 0x56, 0x5a, 0x5e, + 0x61, 0x65, 0x68, 0x6a, 0x6d, 0x6f, 0x71, 0x72, + 0x74, 0x75, 0x76, 0x78, 0x78, 0x79, 0x7a, 0x7b, + 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, + 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, + 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, + 0x82, 0x82, 0x82, 0x82, 0x83, 0x83, 0x84, 0x84, + 0x85, 0x85, 0x86, 0x87, 0x88, 0x88, 0x8a, 0x8b, + 0x8c, 0x8e, 0x8f, 0x91, 0x93, 0x96, 0x98, 0x9b, + 0x9f, 0xa2, 0xa6, 0xaa, 0xaf, 0xb4, 0xb9, 0xbf, + 0xc5, 0xcb, 0xd2, 0xd9, 0xe1, 0xe8, 0xf0, 0xf8, +}; + +const q15_t tanhTable_q15[256] = { + 0x0000, 0x07fd, 0x0feb, 0x17b9, 0x1f59, 0x26bf, 0x2ddf, 0x34ae, + 0x3b27, 0x4142, 0x46fd, 0x4c56, 0x514d, 0x55e2, 0x5a1a, 0x5df6, + 0x617c, 0x64b0, 0x6797, 0x6a37, 0x6c95, 0x6eb5, 0x709e, 0x7254, + 0x73dc, 0x753a, 0x7672, 0x7788, 0x787f, 0x795b, 0x7a1e, 0x7acb, + 0x7b65, 0x7bee, 0x7c66, 0x7cd1, 0x7d30, 0x7d84, 0x7dce, 0x7e0f, + 0x7e49, 0x7e7d, 0x7eaa, 0x7ed2, 0x7ef5, 0x7f14, 0x7f30, 0x7f48, + 0x7f5e, 0x7f71, 0x7f82, 0x7f91, 0x7f9e, 0x7fa9, 0x7fb3, 0x7fbc, + 0x7fc4, 0x7fcb, 0x7fd1, 0x7fd7, 0x7fdc, 0x7fe0, 0x7fe4, 0x7fe7, + 0x7fea, 0x7fed, 0x7fef, 0x7ff1, 0x7ff3, 0x7ff4, 0x7ff6, 0x7ff7, + 0x7ff8, 0x7ff9, 0x7ffa, 0x7ffa, 0x7ffb, 0x7ffc, 0x7ffc, 0x7ffd, + 0x7ffd, 0x7ffd, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, + 0x8001, 0x8001, 0x8001, 0x8002, 0x8002, 0x8002, 0x8002, 0x8003, + 0x8003, 0x8003, 0x8004, 0x8004, 0x8005, 0x8006, 0x8006, 0x8007, + 0x8008, 0x8009, 0x800a, 0x800c, 0x800d, 0x800f, 0x8011, 0x8013, + 0x8016, 0x8019, 0x801c, 0x8020, 0x8024, 0x8029, 0x802f, 0x8035, + 0x803c, 0x8044, 0x804d, 0x8057, 0x8062, 0x806f, 0x807e, 0x808f, + 0x80a2, 0x80b8, 0x80d0, 0x80ec, 0x810b, 0x812e, 0x8156, 0x8183, + 0x81b7, 0x81f1, 0x8232, 0x827c, 0x82d0, 0x832f, 0x839a, 0x8412, + 0x849b, 0x8535, 0x85e2, 0x86a5, 0x8781, 0x8878, 0x898e, 0x8ac6, + 0x8c24, 0x8dac, 0x8f62, 0x914b, 0x936b, 0x95c9, 0x9869, 0x9b50, + 0x9e84, 0xa20a, 0xa5e6, 0xaa1e, 0xaeb3, 0xb3aa, 0xb903, 0xbebe, + 0xc4d9, 0xcb52, 0xd221, 0xd941, 0xe0a7, 0xe847, 0xf015, 0xf803, +}; + +const q15_t tanhLTable_q15[128] = { + 0x0000, 0x0400, 0x07fd, 0x0bf7, 0x0feb, 0x13d7, 0x17b9, 0x1b90, + 0x1f59, 0x2314, 0x26bf, 0x2a58, 0x2ddf, 0x3151, 0x34ae, 0x37f6, + 0x3b27, 0x3e40, 0x4142, 0x442c, 0x46fd, 0x49b6, 0x4c56, 0x4edd, + 0x514d, 0x53a3, 0x55e2, 0x580a, 0x5a1a, 0x5c13, 0x5df6, 0x5fc4, + 0x617c, 0x6320, 0x64b0, 0x662d, 0x6797, 0x68f0, 0x6a37, 0x6b6e, + 0x6c95, 0x6dac, 0x6eb5, 0x6fb0, 0x709e, 0x717f, 0x7254, 0x731e, + 0x73dc, 0x7490, 0x753a, 0x75da, 0x7672, 0x7701, 0x7788, 0x7807, + 0x787f, 0x78f0, 0x795b, 0x79bf, 0x7a1e, 0x7a77, 0x7acb, 0x7b1b, + 0x849b, 0x84e5, 0x8535, 0x8589, 0x85e2, 0x8641, 0x86a5, 0x8710, + 0x8781, 0x87f9, 0x8878, 0x88ff, 0x898e, 0x8a26, 0x8ac6, 0x8b70, + 0x8c24, 0x8ce2, 0x8dac, 0x8e81, 0x8f62, 0x9050, 0x914b, 0x9254, + 0x936b, 0x9492, 0x95c9, 0x9710, 0x9869, 0x99d3, 0x9b50, 0x9ce0, + 0x9e84, 0xa03c, 0xa20a, 0xa3ed, 0xa5e6, 0xa7f6, 0xaa1e, 0xac5d, + 0xaeb3, 0xb123, 0xb3aa, 0xb64a, 0xb903, 0xbbd4, 0xbebe, 0xc1c0, + 0xc4d9, 0xc80a, 0xcb52, 0xceaf, 0xd221, 0xd5a8, 0xd941, 0xdcec, + 0xe0a7, 0xe470, 0xe847, 0xec29, 0xf015, 0xf409, 0xf803, 0xfc00, +}; + +const q15_t tanhHTable_q15[192] = { + 0x7b65, 0x7bee, 0x7c66, 0x7cd1, 0x7d30, 0x7d84, 0x7dce, 0x7e0f, + 0x7e49, 0x7e7d, 0x7eaa, 0x7ed2, 0x7ef5, 0x7f14, 0x7f30, 0x7f48, + 0x7f5e, 0x7f71, 0x7f82, 0x7f91, 0x7f9e, 0x7fa9, 0x7fb3, 0x7fbc, + 0x7fc4, 0x7fcb, 0x7fd1, 0x7fd7, 0x7fdc, 0x7fe0, 0x7fe4, 0x7fe7, + 0x7fea, 0x7fed, 0x7fef, 0x7ff1, 0x7ff3, 0x7ff4, 0x7ff6, 0x7ff7, + 0x7ff8, 0x7ff9, 0x7ffa, 0x7ffa, 0x7ffb, 0x7ffc, 0x7ffc, 0x7ffd, + 0x7ffd, 0x7ffd, 0x7ffe, 0x7ffe, 0x7ffe, 0x7ffe, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, + 0x8000, 0x8000, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, + 0x8001, 0x8001, 0x8001, 0x8002, 0x8002, 0x8002, 0x8002, 0x8003, + 0x8003, 0x8003, 0x8004, 0x8004, 0x8005, 0x8006, 0x8006, 0x8007, + 0x8008, 0x8009, 0x800a, 0x800c, 0x800d, 0x800f, 0x8011, 0x8013, + 0x8016, 0x8019, 0x801c, 0x8020, 0x8024, 0x8029, 0x802f, 0x8035, + 0x803c, 0x8044, 0x804d, 0x8057, 0x8062, 0x806f, 0x807e, 0x808f, + 0x80a2, 0x80b8, 0x80d0, 0x80ec, 0x810b, 0x812e, 0x8156, 0x8183, + 0x81b7, 0x81f1, 0x8232, 0x827c, 0x82d0, 0x832f, 0x839a, 0x8412, +}; diff --git a/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c b/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c new file mode 100644 index 0000000..e043b38 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_q7_to_q15_no_shift.c + * Description: Converts the elements of the Q7 vector to Q15 vector without left-shift + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_nnsupportfunctions.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup nndata_convert + * @{ + */ + +/** + * @brief Converts the elements of the Q7 vector to Q15 vector without left-shift + * @param[in] *pSrc points to the Q7 input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * \par Description: + * + * The equation used for the conversion process is: + * + *
    
+ * 	pDst[n] = (q15_t) pSrc[n];   0 <= n < blockSize.    
+ * 
+ * + */ + +void arm_q7_to_q15_no_shift(const q7_t * pSrc, q15_t * pDst, uint32_t blockSize) +{ + const q7_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0_FAMILY + q31_t in; + q31_t in1, in2; + q31_t out1, out2; + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0u) + { + /* C = (q15_t) A << 8 */ + /* convert from q7 to q15 and then store the results in the destination buffer */ + in = *__SIMD32(pIn)++; + + /* rotatate in by 8 and extend two q7_t values to q15_t values */ + in1 = __SXTB16(__ROR(in, 8)); + + /* extend remainig two q7_t values to q15_t values */ + in2 = __SXTB16(in); + +#ifndef ARM_MATH_BIG_ENDIAN + + out2 = __PKHTB(in1, in2, 16); + out1 = __PKHBT(in2, in1, 16); + +#else + + out1 = __PKHTB(in1, in2, 16); + out2 = __PKHBT(in2, in1, 16); + +#endif + + *__SIMD32(pDst)++ = out1; + *__SIMD32(pDst)++ = out2; + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0_FAMILY */ + + while (blkCnt > 0u) + { + /* C = (q15_t) A << 8 */ + /* convert from q7 to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) * pIn++; + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of nndata_convert group + */ diff --git a/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c b/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c new file mode 100644 index 0000000..52f5f8e --- /dev/null +++ b/Drivers/CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c @@ -0,0 +1,145 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_q7_to_q15_reordered_no_shift.c + * Description: Converts the elements of the Q7 vector to reordered Q15 vector without left-shift + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_nnsupportfunctions.h" + +/** + * @ingroup groupSupport + */ + +/** + * @addtogroup nndata_convert + * @{ + */ + +/** + * @brief Converts the elements of the Q7 vector to reordered Q15 vector without left-shift + * @param[in] *pSrc points to the Q7 input vector + * @param[out] *pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + * @return none. + * + * @details + * + * This function does the q7 to q15 expansion with re-ordering + * + *
+ *                          |   A1   |   A2   |   A3   |   A4   |
+ *
+ *                           0      7 8     15 16    23 24    31
+ * 
+ * + * is converted into: + * + *
+ *  |       A1       |       A3       |   and  |       A2       |       A4       |
+ *
+ *   0             15 16            31          0             15 16            31
+ * 
+ * + * + * This looks strange but is natural considering how sign-extension is done at + * assembly level. + * + * The expansion of other other oprand will follow the same rule so that the end + * results are the same. + * + * The tail (i.e., last (N % 4) elements) will still be in original order. + * + */ + +void arm_q7_to_q15_reordered_no_shift(const q7_t * pSrc, q15_t * pDst, uint32_t blockSize) +{ + const q7_t *pIn = pSrc; /* Src pointer */ + uint32_t blkCnt; /* loop counter */ + +#ifndef ARM_MATH_CM0_FAMILY + q31_t in; + q31_t in1, in2; + + /* Run the below code for Cortex-M4 and Cortex-M3 */ + + /*loop Unrolling */ + blkCnt = blockSize >> 2u; + + /* First part of the processing with loop unrolling. Compute 4 outputs at a time. + ** a second loop below computes the remaining 1 to 3 samples. */ + while (blkCnt > 0u) + { + /* C = (q15_t) A << 8 */ + /* convert from q7 to q15 and then store the results in the destination buffer */ + in = *__SIMD32(pIn)++; + + /* rotatate in by 8 and extend two q7_t values to q15_t values */ + in1 = __SXTB16(__ROR(in, 8)); + + /* extend remainig two q7_t values to q15_t values */ + in2 = __SXTB16(in); + +#ifndef ARM_MATH_BIG_ENDIAN + *__SIMD32(pDst)++ = in2; + *__SIMD32(pDst)++ = in1; +#else + *__SIMD32(pDst)++ = in1; + *__SIMD32(pDst)++ = in2; +#endif + + /* Decrement the loop counter */ + blkCnt--; + } + + /* If the blockSize is not a multiple of 4, compute any remaining output samples here. + ** No loop unrolling is used. */ + blkCnt = blockSize % 0x4u; + +#else + + /* Run the below code for Cortex-M0 */ + + /* Loop over blockSize number of values */ + blkCnt = blockSize; + +#endif /* #ifndef ARM_MATH_CM0_FAMILY */ + + while (blkCnt > 0u) + { + /* C = (q15_t) A << 8 */ + /* convert from q7 to q15 and then store the results in the destination buffer */ + *pDst++ = (q15_t) * pIn++; + + /* Decrement the loop counter */ + blkCnt--; + } + +} + +/** + * @} end of q7_to_x group + */ diff --git a/Drivers/CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c b/Drivers/CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c new file mode 100644 index 0000000..2759731 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c @@ -0,0 +1,448 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_pool_q7_HWC.c + * Description: Pooling function implementations + * + * $Date: 17. January 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +#if defined (ARM_MATH_DSP) + +/** + * @brief A few utility functions used by pooling functions + * + * + */ + +static void buffer_scale_back_q15_to_q7(q15_t * buffer, q7_t * target, uint16_t length, uint16_t scale) +{ + int i; + + for (i = 0; i < length; i++) + { + target[i] = (q7_t) (buffer[i] / scale); + } +} + +static void compare_and_replace_if_larger_q7(q7_t * base, // base data + q7_t * target, // compare target + const uint16_t length // data length + ) +{ + q7_t *pIn = base; + q7_t *pCom = target; + union arm_nnword in; + union arm_nnword com; + uint16_t cnt = length >> 2; + + while (cnt > 0u) + { + in.word = *__SIMD32(pIn); + com.word = *__SIMD32(pCom)++; + + // if version + if (com.bytes[0] > in.bytes[0]) + in.bytes[0] = com.bytes[0]; + if (com.bytes[1] > in.bytes[1]) + in.bytes[1] = com.bytes[1]; + if (com.bytes[2] > in.bytes[2]) + in.bytes[2] = com.bytes[2]; + if (com.bytes[3] > in.bytes[3]) + in.bytes[3] = com.bytes[3]; + + *__SIMD32(pIn)++ = in.word; + + cnt--; + } +} + +static void accumulate_q7_to_q15(q15_t * base, q7_t * target, const uint16_t length) +{ + q15_t *pCnt = base; + q7_t *pV = target; + q31_t v1, v2, vo1, vo2; + uint16_t cnt = length >> 2; + q31_t in; + + while (cnt > 0u) + { + q31_t value = *__SIMD32(pV)++; + v1 = __SXTB16(__ROR(value, 8)); + v2 = __SXTB16(value); +#ifndef ARM_MATH_BIG_ENDIAN + + vo2 = __PKHTB(v1, v2, 16); + vo1 = __PKHBT(v2, v1, 16); + +#else + + vo1 = __PKHTB(v1, v2, 16); + vo2 = __PKHBT(v2, v1, 16); + +#endif + + in = *__SIMD32(pCnt); + *__SIMD32(pCnt)++ = __QADD16(vo1, in); + + in = *__SIMD32(pCnt); + *__SIMD32(pCnt)++ = __QADD16(vo2, in); + + cnt--; + } + cnt = length & 0x3; + while (cnt > 0u) + { + *pCnt++ += *pV++; + cnt--; + } +} + +#endif // ARM_MATH_DSP + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup Pooling + * @{ + */ + + /** + * @brief Q7 max pooling function + * @param[in, out] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] Im_out pointer to output tensor + * @return none. + * + * @details + * + * Buffer size: + * + * bufferA size: 0 + * + * The pooling function is implemented as split x-pooling then + * y-pooling. + * + * This pooling function is input-destructive. Input data is undefined + * after calling this function. + * + */ + +void +arm_maxpool_q7_HWC(q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, const uint16_t dim_im_out, q7_t * bufferA, q7_t * Im_out) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + int16_t i_x, i_y; + + /* first does the pooling along x axis */ + for (i_y = 0; i_y < dim_im_in; i_y++) + { + + for (i_x = 0; i_x < dim_im_out; i_x++) + { + /* for each output pixel */ + q7_t *target = Im_in + (i_y * dim_im_in + i_x) * ch_im_in; + q7_t *win_start; + q7_t *win_stop; + if (i_x * stride - padding < 0) + { + win_start = target; + } else + { + win_start = Im_in + (i_y * dim_im_in + i_x * stride - padding) * ch_im_in; + } + + if (i_x * stride - padding + dim_kernel >= dim_im_in) + { + win_stop = Im_in + (i_y * dim_im_in + dim_im_in) * ch_im_in; + } else + { + win_stop = Im_in + (i_y * dim_im_in + i_x * stride - padding + dim_kernel) * ch_im_in; + } + + /* first step is to copy over initial data */ + /* arm_copy_q7(win_start, target, ch_im_in); */ + memmove(target, win_start, ch_im_in); + + /* start the max operation from the second part */ + win_start += ch_im_in; + for (; win_start < win_stop; win_start += ch_im_in) + { + compare_and_replace_if_larger_q7(target, win_start, ch_im_in); + } + } + } + + /* then does the pooling along y axis */ + for (i_y = 0; i_y < dim_im_out; i_y++) + { + + /* for each output row */ + q7_t *target = Im_out + i_y * dim_im_out * ch_im_in; + q7_t *row_start; + q7_t *row_end; + /* setting the starting row */ + if (i_y * stride - padding < 0) + { + row_start = Im_in; + } else + { + row_start = Im_in + (i_y * stride - padding) * dim_im_in * ch_im_in; + } + /* setting the stopping row */ + if (i_y * stride - padding + dim_kernel >= dim_im_in) + { + row_end = Im_in + dim_im_in * dim_im_in * ch_im_in; + } else + { + row_end = Im_in + (i_y * stride - padding + dim_kernel) * dim_im_in * ch_im_in; + } + + /* copy over the first row */ + /* arm_copy_q7(row_start, target, dim_im_out * ch_im_in); */ + memmove(target, row_start, dim_im_out * ch_im_in); + + /* move over to next row */ + row_start += ch_im_in * dim_im_in; + + for (; row_start < row_end; row_start += dim_im_in * ch_im_in) + { + compare_and_replace_if_larger_q7(target, row_start, dim_im_out * ch_im_in); + } + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + + int16_t i_ch_in, i_x, i_y; + int16_t k_x, k_y; + + for (i_ch_in = 0; i_ch_in < ch_im_in; i_ch_in++) + { + for (i_y = 0; i_y < dim_im_out; i_y++) + { + for (i_x = 0; i_x < dim_im_out; i_x++) + { + int max = -129; + for (k_y = i_y * stride - padding; k_y < i_y * stride - padding + dim_kernel; k_y++) + { + for (k_x = i_x * stride - padding; k_x < i_x * stride - padding + dim_kernel; k_x++) + { + if (k_y >= 0 && k_x >= 0 && k_y < dim_im_in && k_x < dim_im_in) + { + if (Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)] > max) + { + max = Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)]; + } + } + } + } + Im_out[i_ch_in + ch_im_in * (i_x + i_y * dim_im_out)] = max; + } + } + } + +#endif /* ARM_MATH_DSP */ + +} + + /** + * @brief Q7 average pooling function + * @param[in,out] Im_in pointer to input tensor + * @param[in] dim_im_in input tensor dimention + * @param[in] ch_im_in number of input tensor channels + * @param[in] dim_kernel filter kernel size + * @param[in] padding padding sizes + * @param[in] stride convolution stride + * @param[in] dim_im_out output tensor dimension + * @param[in,out] bufferA pointer to buffer space for input + * @param[in,out] Im_out pointer to output tensor + * @return none. + * + * @details + * + * Buffer size: + * + * bufferA size: 2*dim_im_out*ch_im_in + * + * The pooling function is implemented as split x-pooling then + * y-pooling. + * + * This pooling function is input-destructive. Input data is undefined + * after calling this function. + * + */ + +void +arm_avepool_q7_HWC(q7_t * Im_in, + const uint16_t dim_im_in, + const uint16_t ch_im_in, + const uint16_t dim_kernel, + const uint16_t padding, + const uint16_t stride, const uint16_t dim_im_out, q7_t * bufferA, q7_t * Im_out) +{ + +#if defined (ARM_MATH_DSP) + /* Run the following code for Cortex-M4 and Cortex-M7 */ + + q15_t *buffer = (q15_t *) bufferA; + int16_t i_x, i_y; + int16_t count = 0; + + /* first does the pooling along x axis */ + for (i_y = 0; i_y < dim_im_in; i_y++) + { + + for (i_x = 0; i_x < dim_im_out; i_x++) + { + /* for each output pixel */ + q7_t *target = Im_in + (i_y * dim_im_in + i_x) * ch_im_in; + q7_t *win_start; + q7_t *win_stop; + if (i_x * stride - padding < 0) + { + win_start = target; + } else + { + win_start = Im_in + (i_y * dim_im_in + i_x * stride - padding) * ch_im_in; + } + + if (i_x * stride - padding + dim_kernel >= dim_im_in) + { + win_stop = Im_in + (i_y * dim_im_in + dim_im_in) * ch_im_in; + } else + { + win_stop = Im_in + (i_y * dim_im_in + i_x * stride - padding + dim_kernel) * ch_im_in; + } + + /* first step is to copy over initial data */ + arm_q7_to_q15_no_shift(win_start, buffer, ch_im_in); + count = 1; + + /* start the max operation from the second part */ + win_start += ch_im_in; + for (; win_start < win_stop; win_start += ch_im_in) + { + accumulate_q7_to_q15(buffer, win_start, ch_im_in); + count++; + } + buffer_scale_back_q15_to_q7(buffer, target, ch_im_in, count); + } + } + + /* then does the pooling along y axis */ + for (i_y = 0; i_y < dim_im_out; i_y++) + { + /* for each output row */ + q7_t *target = Im_out + i_y * dim_im_out * ch_im_in; + q7_t *row_start; + q7_t *row_end; + /* setting the starting row */ + if (i_y * stride - padding < 0) + { + row_start = Im_in; + } else + { + row_start = Im_in + (i_y * stride - padding) * dim_im_in * ch_im_in; + } + /* setting the stopping row */ + if (i_y * stride - padding + dim_kernel >= dim_im_in) + { + row_end = Im_in + dim_im_in * dim_im_in * ch_im_in; + } else + { + row_end = Im_in + (i_y * stride - padding + dim_kernel) * dim_im_in * ch_im_in; + } + + /* copy over the first row */ + arm_q7_to_q15_no_shift(row_start, buffer, dim_im_out * ch_im_in); + count = 1; + + /* move over to next row */ + row_start += ch_im_in * dim_im_in; + + for (; row_start < row_end; row_start += dim_im_in * ch_im_in) + { + accumulate_q7_to_q15(buffer, row_start, dim_im_out * ch_im_in); + count++; + } + buffer_scale_back_q15_to_q7(buffer, target, dim_im_out * ch_im_in, count); + } + +#else + /* Run the following code as reference implementation for Cortex-M0 and Cortex-M3 */ + + int16_t i_ch_in, i_x, i_y; + int16_t k_x, k_y; + + for (i_ch_in = 0; i_ch_in < ch_im_in; i_ch_in++) + { + for (i_y = 0; i_y < dim_im_out; i_y++) + { + for (i_x = 0; i_x < dim_im_out; i_x++) + { + int sum = 0; + int count = 0; + for (k_y = i_y * stride - padding; k_y < i_y * stride - padding + dim_kernel; k_y++) + { + for (k_x = i_x * stride - padding; k_x < i_x * stride - padding + dim_kernel; k_x++) + { + if (k_y >= 0 && k_x >= 0 && k_y < dim_im_in && k_x < dim_im_in) + { + sum += Im_in[i_ch_in + ch_im_in * (k_x + k_y * dim_im_in)]; + count++; + } + } + } + Im_out[i_ch_in + ch_im_in * (i_x + i_y * dim_im_out)] = sum / count; + } + } + } + +#endif /* ARM_MATH_DSP */ + +} + +/** + * @} end of Pooling group + */ diff --git a/Drivers/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q15.c b/Drivers/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q15.c new file mode 100644 index 0000000..22fa62b --- /dev/null +++ b/Drivers/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q15.c @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_softmax_q15.c + * Description: Q15 softmax function + * + * $Date: 20. February 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup Softmax + * @{ + */ + + /** + * @brief Q15 softmax function + * @param[in] vec_in pointer to input vector + * @param[in] dim_vec input vector dimention + * @param[out] p_out pointer to output vector + * @return none. + * + * @details + * + * Here, instead of typical e based softmax, we use + * 2-based softmax, i.e.,: + * + * y_i = 2^(x_i) / sum(2^x_j) + * + * The relative output will be different here. + * But mathematically, the gradient will be the same + * with a log(2) scaling factor. + * + */ + +void arm_softmax_q15(const q15_t * vec_in, const uint16_t dim_vec, q15_t * p_out) +{ + q31_t sum; + int16_t i; + uint8_t shift; + q31_t base; + base = -1 * 0x100000; + for (i = 0; i < dim_vec; i++) + { + if (vec_in[i] > base) + { + base = vec_in[i]; + } + } + + /* we ignore really small values + * anyway, they will be 0 after shrinking + * to q15_t + */ + base = base - 16; + + sum = 0; + + for (i = 0; i < dim_vec; i++) + { + if (vec_in[i] > base) + { + shift = (uint8_t)__USAT(vec_in[i] - base, 5); + sum += 0x1 << shift; + } + } + + /* This is effectively (0x1 << 32) / sum */ + int64_t div_base = 0x100000000LL; + int output_base = (int32_t)(div_base / sum); + + /* Final confidence will be output_base >> ( 17 - (vec_in[i] - base) ) + * so 32768 (0x1<<15) -> 100% confidence when sum = 0x1 << 16, output_base = 0x1 << 16 + * and vec_in[i]-base = 16 + */ + for (i = 0; i < dim_vec; i++) + { + if (vec_in[i] > base) + { + /* Here minimum value of 17+base-vec[i] will be 1 */ + shift = (uint8_t)__USAT(17+base-vec_in[i], 5); + p_out[i] = (q15_t) __SSAT((output_base >> shift), 16); + } else + { + p_out[i] = 0; + } + } + +} + +/** + * @} end of Softmax group + */ diff --git a/Drivers/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c b/Drivers/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c new file mode 100644 index 0000000..06a69e1 --- /dev/null +++ b/Drivers/CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c @@ -0,0 +1,121 @@ +/* + * Copyright (C) 2010-2018 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* ---------------------------------------------------------------------- + * Project: CMSIS NN Library + * Title: arm_softmax_q7.c + * Description: Q7 softmax function + * + * $Date: 20. February 2018 + * $Revision: V.1.0.0 + * + * Target Processor: Cortex-M cores + * + * -------------------------------------------------------------------- */ + +#include "arm_math.h" +#include "arm_nnfunctions.h" + +/** + * @ingroup groupNN + */ + +/** + * @addtogroup Softmax + * @{ + */ + + /** + * @brief Q7 softmax function + * @param[in] vec_in pointer to input vector + * @param[in] dim_vec input vector dimention + * @param[out] p_out pointer to output vector + * @return none. + * + * @details + * + * Here, instead of typical natural logarithm e based softmax, we use + * 2-based softmax here, i.e.,: + * + * y_i = 2^(x_i) / sum(2^x_j) + * + * The relative output will be different here. + * But mathematically, the gradient will be the same + * with a log(2) scaling factor. + * + */ + +void arm_softmax_q7(const q7_t * vec_in, const uint16_t dim_vec, q7_t * p_out) +{ + q31_t sum; + int16_t i; + uint8_t shift; + q15_t base; + base = -257; + + /* We first search for the maximum */ + for (i = 0; i < dim_vec; i++) + { + if (vec_in[i] > base) + { + base = vec_in[i]; + } + } + + /* + * So the base is set to max-8, meaning + * that we ignore really small values. + * anyway, they will be 0 after shrinking to q7_t. + */ + base = base - 8; + + sum = 0; + + for (i = 0; i < dim_vec; i++) + { + if (vec_in[i] > base) + { + shift = (uint8_t)__USAT(vec_in[i] - base, 5); + sum += 0x1 << shift; + } + } + + /* This is effectively (0x1 << 20) / sum */ + int output_base = 0x100000 / sum; + + /* + * Final confidence will be output_base >> ( 13 - (vec_in[i] - base) ) + * so 128 (0x1<<7) -> 100% confidence when sum = 0x1 << 8, output_base = 0x1 << 12 + * and vec_in[i]-base = 8 + */ + for (i = 0; i < dim_vec; i++) + { + if (vec_in[i] > base) + { + /* Here minimum value of 13+base-vec_in[i] will be 5 */ + shift = (uint8_t)__USAT(13+base-vec_in[i], 5); + p_out[i] = (q7_t) __SSAT((output_base >> shift), 8); + } else { + p_out[i] = 0; + } + } +} + +/** + * @} end of Softmax group + */ diff --git a/Drivers/CMSIS/RTOS/Template/cmsis_os.h b/Drivers/CMSIS/RTOS/Template/cmsis_os.h new file mode 100644 index 0000000..85e24a4 --- /dev/null +++ b/Drivers/CMSIS/RTOS/Template/cmsis_os.h @@ -0,0 +1,698 @@ +/* ---------------------------------------------------------------------- + * $Date: 5. February 2013 + * $Revision: V1.02 + * + * Project: CMSIS-RTOS API + * Title: cmsis_os.h template header file + * + * Version 0.02 + * Initial Proposal Phase + * Version 0.03 + * osKernelStart added, optional feature: main started as thread + * osSemaphores have standard behavior + * osTimerCreate does not start the timer, added osTimerStart + * osThreadPass is renamed to osThreadYield + * Version 1.01 + * Support for C++ interface + * - const attribute removed from the osXxxxDef_t typedef's + * - const attribute added to the osXxxxDef macros + * Added: osTimerDelete, osMutexDelete, osSemaphoreDelete + * Added: osKernelInitialize + * Version 1.02 + * Control functions for short timeouts in microsecond resolution: + * Added: osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec + * Removed: osSignalGet + *---------------------------------------------------------------------------- + * + * Copyright (c) 2013-2017 ARM LIMITED + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *---------------------------------------------------------------------------*/ + + +#ifndef _CMSIS_OS_H +#define _CMSIS_OS_H + +/// \note MUST REMAIN UNCHANGED: \b osCMSIS identifies the CMSIS-RTOS API version. +#define osCMSIS 0x10002 ///< API version (main [31:16] .sub [15:0]) + +/// \note CAN BE CHANGED: \b osCMSIS_KERNEL identifies the underlying RTOS kernel and version number. +#define osCMSIS_KERNEL 0x10000 ///< RTOS identification and version (main [31:16] .sub [15:0]) + +/// \note MUST REMAIN UNCHANGED: \b osKernelSystemId shall be consistent in every CMSIS-RTOS. +#define osKernelSystemId "KERNEL V1.00" ///< RTOS identification string + +/// \note MUST REMAIN UNCHANGED: \b osFeature_xxx shall be consistent in every CMSIS-RTOS. +#define osFeature_MainThread 1 ///< main thread 1=main can be thread, 0=not available +#define osFeature_Pool 1 ///< Memory Pools: 1=available, 0=not available +#define osFeature_MailQ 1 ///< Mail Queues: 1=available, 0=not available +#define osFeature_MessageQ 1 ///< Message Queues: 1=available, 0=not available +#define osFeature_Signals 8 ///< maximum number of Signal Flags available per thread +#define osFeature_Semaphore 30 ///< maximum count for \ref osSemaphoreCreate function +#define osFeature_Wait 1 ///< osWait function: 1=available, 0=not available +#define osFeature_SysTick 1 ///< osKernelSysTick functions: 1=available, 0=not available + +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + +// ==== Enumeration, structures, defines ==== + +/// Priority used for thread control. +/// \note MUST REMAIN UNCHANGED: \b osPriority shall be consistent in every CMSIS-RTOS. +typedef enum { + osPriorityIdle = -3, ///< priority: idle (lowest) + osPriorityLow = -2, ///< priority: low + osPriorityBelowNormal = -1, ///< priority: below normal + osPriorityNormal = 0, ///< priority: normal (default) + osPriorityAboveNormal = +1, ///< priority: above normal + osPriorityHigh = +2, ///< priority: high + osPriorityRealtime = +3, ///< priority: realtime (highest) + osPriorityError = 0x84 ///< system cannot determine priority or thread has illegal priority +} osPriority; + +/// Timeout value. +/// \note MUST REMAIN UNCHANGED: \b osWaitForever shall be consistent in every CMSIS-RTOS. +#define osWaitForever 0xFFFFFFFF ///< wait forever timeout value + +/// Status code values returned by CMSIS-RTOS functions. +/// \note MUST REMAIN UNCHANGED: \b osStatus shall be consistent in every CMSIS-RTOS. +typedef enum { + osOK = 0, ///< function completed; no error or event occurred. + osEventSignal = 0x08, ///< function completed; signal event occurred. + osEventMessage = 0x10, ///< function completed; message event occurred. + osEventMail = 0x20, ///< function completed; mail event occurred. + osEventTimeout = 0x40, ///< function completed; timeout occurred. + osErrorParameter = 0x80, ///< parameter error: a mandatory parameter was missing or specified an incorrect object. + osErrorResource = 0x81, ///< resource not available: a specified resource was not available. + osErrorTimeoutResource = 0xC1, ///< resource not available within given time: a specified resource was not available within the timeout period. + osErrorISR = 0x82, ///< not allowed in ISR context: the function cannot be called from interrupt service routines. + osErrorISRRecursive = 0x83, ///< function called multiple times from ISR with same object. + osErrorPriority = 0x84, ///< system cannot determine priority or thread has illegal priority. + osErrorNoMemory = 0x85, ///< system is out of memory: it was impossible to allocate or reserve memory for the operation. + osErrorValue = 0x86, ///< value of a parameter is out of range. + osErrorOS = 0xFF, ///< unspecified RTOS error: run-time error but no other error message fits. + os_status_reserved = 0x7FFFFFFF ///< prevent from enum down-size compiler optimization. +} osStatus; + + +/// Timer type value for the timer definition. +/// \note MUST REMAIN UNCHANGED: \b os_timer_type shall be consistent in every CMSIS-RTOS. +typedef enum { + osTimerOnce = 0, ///< one-shot timer + osTimerPeriodic = 1 ///< repeating timer +} os_timer_type; + +/// Entry point of a thread. +/// \note MUST REMAIN UNCHANGED: \b os_pthread shall be consistent in every CMSIS-RTOS. +typedef void (*os_pthread) (void const *argument); + +/// Entry point of a timer call back function. +/// \note MUST REMAIN UNCHANGED: \b os_ptimer shall be consistent in every CMSIS-RTOS. +typedef void (*os_ptimer) (void const *argument); + +// >>> the following data type definitions may shall adapted towards a specific RTOS + +/// Thread ID identifies the thread (pointer to a thread control block). +/// \note CAN BE CHANGED: \b os_thread_cb is implementation specific in every CMSIS-RTOS. +typedef struct os_thread_cb *osThreadId; + +/// Timer ID identifies the timer (pointer to a timer control block). +/// \note CAN BE CHANGED: \b os_timer_cb is implementation specific in every CMSIS-RTOS. +typedef struct os_timer_cb *osTimerId; + +/// Mutex ID identifies the mutex (pointer to a mutex control block). +/// \note CAN BE CHANGED: \b os_mutex_cb is implementation specific in every CMSIS-RTOS. +typedef struct os_mutex_cb *osMutexId; + +/// Semaphore ID identifies the semaphore (pointer to a semaphore control block). +/// \note CAN BE CHANGED: \b os_semaphore_cb is implementation specific in every CMSIS-RTOS. +typedef struct os_semaphore_cb *osSemaphoreId; + +/// Pool ID identifies the memory pool (pointer to a memory pool control block). +/// \note CAN BE CHANGED: \b os_pool_cb is implementation specific in every CMSIS-RTOS. +typedef struct os_pool_cb *osPoolId; + +/// Message ID identifies the message queue (pointer to a message queue control block). +/// \note CAN BE CHANGED: \b os_messageQ_cb is implementation specific in every CMSIS-RTOS. +typedef struct os_messageQ_cb *osMessageQId; + +/// Mail ID identifies the mail queue (pointer to a mail queue control block). +/// \note CAN BE CHANGED: \b os_mailQ_cb is implementation specific in every CMSIS-RTOS. +typedef struct os_mailQ_cb *osMailQId; + + +/// Thread Definition structure contains startup information of a thread. +/// \note CAN BE CHANGED: \b os_thread_def is implementation specific in every CMSIS-RTOS. +typedef struct os_thread_def { + os_pthread pthread; ///< start address of thread function + osPriority tpriority; ///< initial thread priority + uint32_t instances; ///< maximum number of instances of that thread function + uint32_t stacksize; ///< stack size requirements in bytes; 0 is default stack size +} osThreadDef_t; + +/// Timer Definition structure contains timer parameters. +/// \note CAN BE CHANGED: \b os_timer_def is implementation specific in every CMSIS-RTOS. +typedef struct os_timer_def { + os_ptimer ptimer; ///< start address of a timer function +} osTimerDef_t; + +/// Mutex Definition structure contains setup information for a mutex. +/// \note CAN BE CHANGED: \b os_mutex_def is implementation specific in every CMSIS-RTOS. +typedef struct os_mutex_def { + uint32_t dummy; ///< dummy value. +} osMutexDef_t; + +/// Semaphore Definition structure contains setup information for a semaphore. +/// \note CAN BE CHANGED: \b os_semaphore_def is implementation specific in every CMSIS-RTOS. +typedef struct os_semaphore_def { + uint32_t dummy; ///< dummy value. +} osSemaphoreDef_t; + +/// Definition structure for memory block allocation. +/// \note CAN BE CHANGED: \b os_pool_def is implementation specific in every CMSIS-RTOS. +typedef struct os_pool_def { + uint32_t pool_sz; ///< number of items (elements) in the pool + uint32_t item_sz; ///< size of an item + void *pool; ///< pointer to memory for pool +} osPoolDef_t; + +/// Definition structure for message queue. +/// \note CAN BE CHANGED: \b os_messageQ_def is implementation specific in every CMSIS-RTOS. +typedef struct os_messageQ_def { + uint32_t queue_sz; ///< number of elements in the queue + uint32_t item_sz; ///< size of an item + void *pool; ///< memory array for messages +} osMessageQDef_t; + +/// Definition structure for mail queue. +/// \note CAN BE CHANGED: \b os_mailQ_def is implementation specific in every CMSIS-RTOS. +typedef struct os_mailQ_def { + uint32_t queue_sz; ///< number of elements in the queue + uint32_t item_sz; ///< size of an item + void *pool; ///< memory array for mail +} osMailQDef_t; + +/// Event structure contains detailed information about an event. +/// \note MUST REMAIN UNCHANGED: \b os_event shall be consistent in every CMSIS-RTOS. +/// However the struct may be extended at the end. +typedef struct { + osStatus status; ///< status code: event or error information + union { + uint32_t v; ///< message as 32-bit value + void *p; ///< message or mail as void pointer + int32_t signals; ///< signal flags + } value; ///< event value + union { + osMailQId mail_id; ///< mail id obtained by \ref osMailCreate + osMessageQId message_id; ///< message id obtained by \ref osMessageCreate + } def; ///< event definition +} osEvent; + + +// ==== Kernel Control Functions ==== + +/// Initialize the RTOS Kernel for creating objects. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osKernelInitialize shall be consistent in every CMSIS-RTOS. +osStatus osKernelInitialize (void); + +/// Start the RTOS Kernel. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osKernelStart shall be consistent in every CMSIS-RTOS. +osStatus osKernelStart (void); + +/// Check if the RTOS kernel is already started. +/// \note MUST REMAIN UNCHANGED: \b osKernelRunning shall be consistent in every CMSIS-RTOS. +/// \return 0 RTOS is not started, 1 RTOS is started. +int32_t osKernelRunning(void); + +#if (defined (osFeature_SysTick) && (osFeature_SysTick != 0)) // System Timer available + +/// Get the RTOS kernel system timer counter +/// \note MUST REMAIN UNCHANGED: \b osKernelSysTick shall be consistent in every CMSIS-RTOS. +/// \return RTOS kernel system timer as 32-bit value +uint32_t osKernelSysTick (void); + +/// The RTOS kernel system timer frequency in Hz +/// \note Reflects the system timer setting and is typically defined in a configuration file. +#define osKernelSysTickFrequency 100000000 + +/// Convert a microseconds value to a RTOS kernel system timer value. +/// \param microsec time value in microseconds. +/// \return time value normalized to the \ref osKernelSysTickFrequency +#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000) + +#endif // System Timer available + +// ==== Thread Management ==== + +/// Create a Thread Definition with function, priority, and stack requirements. +/// \param name name of the thread function. +/// \param priority initial priority of the thread function. +/// \param instances number of possible thread instances. +/// \param stacksz stack size (in bytes) requirements for the thread function. +/// \note CAN BE CHANGED: The parameters to \b osThreadDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osThreadDef(name, priority, instances, stacksz) \ +extern const osThreadDef_t os_thread_def_##name +#else // define the object +#define osThreadDef(name, priority, instances, stacksz) \ +const osThreadDef_t os_thread_def_##name = \ +{ (name), (priority), (instances), (stacksz) } +#endif + +/// Access a Thread definition. +/// \param name name of the thread definition object. +/// \note CAN BE CHANGED: The parameter to \b osThread shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osThread(name) \ +&os_thread_def_##name + +/// Create a thread and add it to Active Threads and set it to state READY. +/// \param[in] thread_def thread definition referenced with \ref osThread. +/// \param[in] argument pointer that is passed to the thread function as start argument. +/// \return thread ID for reference by other functions or NULL in case of error. +/// \note MUST REMAIN UNCHANGED: \b osThreadCreate shall be consistent in every CMSIS-RTOS. +osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument); + +/// Return the thread ID of the current running thread. +/// \return thread ID for reference by other functions or NULL in case of error. +/// \note MUST REMAIN UNCHANGED: \b osThreadGetId shall be consistent in every CMSIS-RTOS. +osThreadId osThreadGetId (void); + +/// Terminate execution of a thread and remove it from Active Threads. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osThreadTerminate shall be consistent in every CMSIS-RTOS. +osStatus osThreadTerminate (osThreadId thread_id); + +/// Pass control to next thread that is in state \b READY. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osThreadYield shall be consistent in every CMSIS-RTOS. +osStatus osThreadYield (void); + +/// Change priority of an active thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \param[in] priority new priority value for the thread function. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osThreadSetPriority shall be consistent in every CMSIS-RTOS. +osStatus osThreadSetPriority (osThreadId thread_id, osPriority priority); + +/// Get current priority of an active thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \return current priority value of the thread function. +/// \note MUST REMAIN UNCHANGED: \b osThreadGetPriority shall be consistent in every CMSIS-RTOS. +osPriority osThreadGetPriority (osThreadId thread_id); + + +// ==== Generic Wait Functions ==== + +/// Wait for Timeout (Time Delay). +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue "time delay" value +/// \return status code that indicates the execution status of the function. +osStatus osDelay (uint32_t millisec); + +#if (defined (osFeature_Wait) && (osFeature_Wait != 0)) // Generic Wait available + +/// Wait for Signal, Message, Mail, or Timeout. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out +/// \return event that contains signal, message, or mail information or error code. +/// \note MUST REMAIN UNCHANGED: \b osWait shall be consistent in every CMSIS-RTOS. +osEvent osWait (uint32_t millisec); + +#endif // Generic Wait available + + +// ==== Timer Management Functions ==== +/// Define a Timer object. +/// \param name name of the timer object. +/// \param function name of the timer call back function. +/// \note CAN BE CHANGED: The parameter to \b osTimerDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osTimerDef(name, function) \ +extern const osTimerDef_t os_timer_def_##name +#else // define the object +#define osTimerDef(name, function) \ +const osTimerDef_t os_timer_def_##name = \ +{ (function) } +#endif + +/// Access a Timer definition. +/// \param name name of the timer object. +/// \note CAN BE CHANGED: The parameter to \b osTimer shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osTimer(name) \ +&os_timer_def_##name + +/// Create a timer. +/// \param[in] timer_def timer object referenced with \ref osTimer. +/// \param[in] type osTimerOnce for one-shot or osTimerPeriodic for periodic behavior. +/// \param[in] argument argument to the timer call back function. +/// \return timer ID for reference by other functions or NULL in case of error. +/// \note MUST REMAIN UNCHANGED: \b osTimerCreate shall be consistent in every CMSIS-RTOS. +osTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument); + +/// Start or restart a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue "time delay" value of the timer. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osTimerStart shall be consistent in every CMSIS-RTOS. +osStatus osTimerStart (osTimerId timer_id, uint32_t millisec); + +/// Stop the timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerCreate. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osTimerStop shall be consistent in every CMSIS-RTOS. +osStatus osTimerStop (osTimerId timer_id); + +/// Delete a timer that was created by \ref osTimerCreate. +/// \param[in] timer_id timer ID obtained by \ref osTimerCreate. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osTimerDelete shall be consistent in every CMSIS-RTOS. +osStatus osTimerDelete (osTimerId timer_id); + + +// ==== Signal Management ==== + +/// Set the specified Signal Flags of an active thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \param[in] signals specifies the signal flags of the thread that should be set. +/// \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters. +/// \note MUST REMAIN UNCHANGED: \b osSignalSet shall be consistent in every CMSIS-RTOS. +int32_t osSignalSet (osThreadId thread_id, int32_t signals); + +/// Clear the specified Signal Flags of an active thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \param[in] signals specifies the signal flags of the thread that shall be cleared. +/// \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters or call from ISR. +/// \note MUST REMAIN UNCHANGED: \b osSignalClear shall be consistent in every CMSIS-RTOS. +int32_t osSignalClear (osThreadId thread_id, int32_t signals); + +/// Wait for one or more Signal Flags to become signaled for the current \b RUNNING thread. +/// \param[in] signals wait until all specified signal flags set or 0 for any single signal flag. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return event flag information or error code. +/// \note MUST REMAIN UNCHANGED: \b osSignalWait shall be consistent in every CMSIS-RTOS. +osEvent osSignalWait (int32_t signals, uint32_t millisec); + + +// ==== Mutex Management ==== + +/// Define a Mutex. +/// \param name name of the mutex object. +/// \note CAN BE CHANGED: The parameter to \b osMutexDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osMutexDef(name) \ +extern const osMutexDef_t os_mutex_def_##name +#else // define the object +#define osMutexDef(name) \ +const osMutexDef_t os_mutex_def_##name = { 0 } +#endif + +/// Access a Mutex definition. +/// \param name name of the mutex object. +/// \note CAN BE CHANGED: The parameter to \b osMutex shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osMutex(name) \ +&os_mutex_def_##name + +/// Create and Initialize a Mutex object. +/// \param[in] mutex_def mutex definition referenced with \ref osMutex. +/// \return mutex ID for reference by other functions or NULL in case of error. +/// \note MUST REMAIN UNCHANGED: \b osMutexCreate shall be consistent in every CMSIS-RTOS. +osMutexId osMutexCreate (const osMutexDef_t *mutex_def); + +/// Wait until a Mutex becomes available. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osMutexWait shall be consistent in every CMSIS-RTOS. +osStatus osMutexWait (osMutexId mutex_id, uint32_t millisec); + +/// Release a Mutex that was obtained by \ref osMutexWait. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osMutexRelease shall be consistent in every CMSIS-RTOS. +osStatus osMutexRelease (osMutexId mutex_id); + +/// Delete a Mutex that was created by \ref osMutexCreate. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osMutexDelete shall be consistent in every CMSIS-RTOS. +osStatus osMutexDelete (osMutexId mutex_id); + + +// ==== Semaphore Management Functions ==== + +#if (defined (osFeature_Semaphore) && (osFeature_Semaphore != 0)) // Semaphore available + +/// Define a Semaphore object. +/// \param name name of the semaphore object. +/// \note CAN BE CHANGED: The parameter to \b osSemaphoreDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osSemaphoreDef(name) \ +extern const osSemaphoreDef_t os_semaphore_def_##name +#else // define the object +#define osSemaphoreDef(name) \ +const osSemaphoreDef_t os_semaphore_def_##name = { 0 } +#endif + +/// Access a Semaphore definition. +/// \param name name of the semaphore object. +/// \note CAN BE CHANGED: The parameter to \b osSemaphore shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osSemaphore(name) \ +&os_semaphore_def_##name + +/// Create and Initialize a Semaphore object used for managing resources. +/// \param[in] semaphore_def semaphore definition referenced with \ref osSemaphore. +/// \param[in] count number of available resources. +/// \return semaphore ID for reference by other functions or NULL in case of error. +/// \note MUST REMAIN UNCHANGED: \b osSemaphoreCreate shall be consistent in every CMSIS-RTOS. +osSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count); + +/// Wait until a Semaphore token becomes available. +/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return number of available tokens, or -1 in case of incorrect parameters. +/// \note MUST REMAIN UNCHANGED: \b osSemaphoreWait shall be consistent in every CMSIS-RTOS. +int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec); + +/// Release a Semaphore token. +/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osSemaphoreRelease shall be consistent in every CMSIS-RTOS. +osStatus osSemaphoreRelease (osSemaphoreId semaphore_id); + +/// Delete a Semaphore that was created by \ref osSemaphoreCreate. +/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osSemaphoreDelete shall be consistent in every CMSIS-RTOS. +osStatus osSemaphoreDelete (osSemaphoreId semaphore_id); + +#endif // Semaphore available + + +// ==== Memory Pool Management Functions ==== + +#if (defined (osFeature_Pool) && (osFeature_Pool != 0)) // Memory Pool Management available + +/// \brief Define a Memory Pool. +/// \param name name of the memory pool. +/// \param no maximum number of blocks (objects) in the memory pool. +/// \param type data type of a single block (object). +/// \note CAN BE CHANGED: The parameter to \b osPoolDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osPoolDef(name, no, type) \ +extern const osPoolDef_t os_pool_def_##name +#else // define the object +#define osPoolDef(name, no, type) \ +const osPoolDef_t os_pool_def_##name = \ +{ (no), sizeof(type), NULL } +#endif + +/// \brief Access a Memory Pool definition. +/// \param name name of the memory pool +/// \note CAN BE CHANGED: The parameter to \b osPool shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osPool(name) \ +&os_pool_def_##name + +/// Create and Initialize a memory pool. +/// \param[in] pool_def memory pool definition referenced with \ref osPool. +/// \return memory pool ID for reference by other functions or NULL in case of error. +/// \note MUST REMAIN UNCHANGED: \b osPoolCreate shall be consistent in every CMSIS-RTOS. +osPoolId osPoolCreate (const osPoolDef_t *pool_def); + +/// Allocate a memory block from a memory pool. +/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. +/// \return address of the allocated memory block or NULL in case of no memory available. +/// \note MUST REMAIN UNCHANGED: \b osPoolAlloc shall be consistent in every CMSIS-RTOS. +void *osPoolAlloc (osPoolId pool_id); + +/// Allocate a memory block from a memory pool and set memory block to zero. +/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. +/// \return address of the allocated memory block or NULL in case of no memory available. +/// \note MUST REMAIN UNCHANGED: \b osPoolCAlloc shall be consistent in every CMSIS-RTOS. +void *osPoolCAlloc (osPoolId pool_id); + +/// Return an allocated memory block back to a specific memory pool. +/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. +/// \param[in] block address of the allocated memory block that is returned to the memory pool. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osPoolFree shall be consistent in every CMSIS-RTOS. +osStatus osPoolFree (osPoolId pool_id, void *block); + +#endif // Memory Pool Management available + + +// ==== Message Queue Management Functions ==== + +#if (defined (osFeature_MessageQ) && (osFeature_MessageQ != 0)) // Message Queues available + +/// \brief Create a Message Queue Definition. +/// \param name name of the queue. +/// \param queue_sz maximum number of messages in the queue. +/// \param type data type of a single message element (for debugger). +/// \note CAN BE CHANGED: The parameter to \b osMessageQDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osMessageQDef(name, queue_sz, type) \ +extern const osMessageQDef_t os_messageQ_def_##name +#else // define the object +#define osMessageQDef(name, queue_sz, type) \ +const osMessageQDef_t os_messageQ_def_##name = \ +{ (queue_sz), sizeof (type) } +#endif + +/// \brief Access a Message Queue Definition. +/// \param name name of the queue +/// \note CAN BE CHANGED: The parameter to \b osMessageQ shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osMessageQ(name) \ +&os_messageQ_def_##name + +/// Create and Initialize a Message Queue. +/// \param[in] queue_def queue definition referenced with \ref osMessageQ. +/// \param[in] thread_id thread ID (obtained by \ref osThreadCreate or \ref osThreadGetId) or NULL. +/// \return message queue ID for reference by other functions or NULL in case of error. +/// \note MUST REMAIN UNCHANGED: \b osMessageCreate shall be consistent in every CMSIS-RTOS. +osMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id); + +/// Put a Message to a Queue. +/// \param[in] queue_id message queue ID obtained with \ref osMessageCreate. +/// \param[in] info message information. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osMessagePut shall be consistent in every CMSIS-RTOS. +osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec); + +/// Get a Message or Wait for a Message from a Queue. +/// \param[in] queue_id message queue ID obtained with \ref osMessageCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return event information that includes status code. +/// \note MUST REMAIN UNCHANGED: \b osMessageGet shall be consistent in every CMSIS-RTOS. +osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec); + +#endif // Message Queues available + + +// ==== Mail Queue Management Functions ==== + +#if (defined (osFeature_MailQ) && (osFeature_MailQ != 0)) // Mail Queues available + +/// \brief Create a Mail Queue Definition. +/// \param name name of the queue +/// \param queue_sz maximum number of messages in queue +/// \param type data type of a single message element +/// \note CAN BE CHANGED: The parameter to \b osMailQDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osMailQDef(name, queue_sz, type) \ +extern const osMailQDef_t os_mailQ_def_##name +#else // define the object +#define osMailQDef(name, queue_sz, type) \ +const osMailQDef_t os_mailQ_def_##name = \ +{ (queue_sz), sizeof (type) } +#endif + +/// \brief Access a Mail Queue Definition. +/// \param name name of the queue +/// \note CAN BE CHANGED: The parameter to \b osMailQ shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osMailQ(name) \ +&os_mailQ_def_##name + +/// Create and Initialize mail queue. +/// \param[in] queue_def reference to the mail queue definition obtain with \ref osMailQ +/// \param[in] thread_id thread ID (obtained by \ref osThreadCreate or \ref osThreadGetId) or NULL. +/// \return mail queue ID for reference by other functions or NULL in case of error. +/// \note MUST REMAIN UNCHANGED: \b osMailCreate shall be consistent in every CMSIS-RTOS. +osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id); + +/// Allocate a memory block from a mail. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out +/// \return pointer to memory block that can be filled with mail or NULL in case of error. +/// \note MUST REMAIN UNCHANGED: \b osMailAlloc shall be consistent in every CMSIS-RTOS. +void *osMailAlloc (osMailQId queue_id, uint32_t millisec); + +/// Allocate a memory block from a mail and set memory block to zero. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out +/// \return pointer to memory block that can be filled with mail or NULL in case of error. +/// \note MUST REMAIN UNCHANGED: \b osMailCAlloc shall be consistent in every CMSIS-RTOS. +void *osMailCAlloc (osMailQId queue_id, uint32_t millisec); + +/// Put a mail to a queue. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] mail memory block previously allocated with \ref osMailAlloc or \ref osMailCAlloc. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osMailPut shall be consistent in every CMSIS-RTOS. +osStatus osMailPut (osMailQId queue_id, void *mail); + +/// Get a mail from a queue. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out +/// \return event that contains mail information or error code. +/// \note MUST REMAIN UNCHANGED: \b osMailGet shall be consistent in every CMSIS-RTOS. +osEvent osMailGet (osMailQId queue_id, uint32_t millisec); + +/// Free a memory block from a mail. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] mail pointer to the memory block that was obtained with \ref osMailGet. +/// \return status code that indicates the execution status of the function. +/// \note MUST REMAIN UNCHANGED: \b osMailFree shall be consistent in every CMSIS-RTOS. +osStatus osMailFree (osMailQId queue_id, void *mail); + +#endif // Mail Queues available + + +#ifdef __cplusplus +} +#endif + +#endif // _CMSIS_OS_H diff --git a/Drivers/CMSIS/RTOS2/Include/cmsis_os2.h b/Drivers/CMSIS/RTOS2/Include/cmsis_os2.h new file mode 100644 index 0000000..c86740d --- /dev/null +++ b/Drivers/CMSIS/RTOS2/Include/cmsis_os2.h @@ -0,0 +1,756 @@ +/* + * Copyright (c) 2013-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ---------------------------------------------------------------------- + * + * $Date: 18. June 2018 + * $Revision: V2.1.3 + * + * Project: CMSIS-RTOS2 API + * Title: cmsis_os2.h header file + * + * Version 2.1.3 + * Additional functions allowed to be called from Interrupt Service Routines: + * - osThreadGetId + * Version 2.1.2 + * Additional functions allowed to be called from Interrupt Service Routines: + * - osKernelGetInfo, osKernelGetState + * Version 2.1.1 + * Additional functions allowed to be called from Interrupt Service Routines: + * - osKernelGetTickCount, osKernelGetTickFreq + * Changed Kernel Tick type to uint32_t: + * - updated: osKernelGetTickCount, osDelayUntil + * Version 2.1.0 + * Support for critical and uncritical sections (nesting safe): + * - updated: osKernelLock, osKernelUnlock + * - added: osKernelRestoreLock + * Updated Thread and Event Flags: + * - changed flags parameter and return type from int32_t to uint32_t + * Version 2.0.0 + * Initial Release + *---------------------------------------------------------------------------*/ + +#ifndef CMSIS_OS2_H_ +#define CMSIS_OS2_H_ + +#ifndef __NO_RETURN +#if defined(__CC_ARM) +#define __NO_RETURN __declspec(noreturn) +#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) +#define __NO_RETURN __attribute__((__noreturn__)) +#elif defined(__GNUC__) +#define __NO_RETURN __attribute__((__noreturn__)) +#elif defined(__ICCARM__) +#define __NO_RETURN __noreturn +#else +#define __NO_RETURN +#endif +#endif + +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + +// ==== Enumerations, structures, defines ==== + +/// Version information. +typedef struct { + uint32_t api; ///< API version (major.minor.rev: mmnnnrrrr dec). + uint32_t kernel; ///< Kernel version (major.minor.rev: mmnnnrrrr dec). +} osVersion_t; + +/// Kernel state. +typedef enum { + osKernelInactive = 0, ///< Inactive. + osKernelReady = 1, ///< Ready. + osKernelRunning = 2, ///< Running. + osKernelLocked = 3, ///< Locked. + osKernelSuspended = 4, ///< Suspended. + osKernelError = -1, ///< Error. + osKernelReserved = 0x7FFFFFFFU ///< Prevents enum down-size compiler optimization. +} osKernelState_t; + +/// Thread state. +typedef enum { + osThreadInactive = 0, ///< Inactive. + osThreadReady = 1, ///< Ready. + osThreadRunning = 2, ///< Running. + osThreadBlocked = 3, ///< Blocked. + osThreadTerminated = 4, ///< Terminated. + osThreadError = -1, ///< Error. + osThreadReserved = 0x7FFFFFFF ///< Prevents enum down-size compiler optimization. +} osThreadState_t; + +/// Priority values. +typedef enum { + osPriorityNone = 0, ///< No priority (not initialized). + osPriorityIdle = 1, ///< Reserved for Idle thread. + osPriorityLow = 8, ///< Priority: low + osPriorityLow1 = 8+1, ///< Priority: low + 1 + osPriorityLow2 = 8+2, ///< Priority: low + 2 + osPriorityLow3 = 8+3, ///< Priority: low + 3 + osPriorityLow4 = 8+4, ///< Priority: low + 4 + osPriorityLow5 = 8+5, ///< Priority: low + 5 + osPriorityLow6 = 8+6, ///< Priority: low + 6 + osPriorityLow7 = 8+7, ///< Priority: low + 7 + osPriorityBelowNormal = 16, ///< Priority: below normal + osPriorityBelowNormal1 = 16+1, ///< Priority: below normal + 1 + osPriorityBelowNormal2 = 16+2, ///< Priority: below normal + 2 + osPriorityBelowNormal3 = 16+3, ///< Priority: below normal + 3 + osPriorityBelowNormal4 = 16+4, ///< Priority: below normal + 4 + osPriorityBelowNormal5 = 16+5, ///< Priority: below normal + 5 + osPriorityBelowNormal6 = 16+6, ///< Priority: below normal + 6 + osPriorityBelowNormal7 = 16+7, ///< Priority: below normal + 7 + osPriorityNormal = 24, ///< Priority: normal + osPriorityNormal1 = 24+1, ///< Priority: normal + 1 + osPriorityNormal2 = 24+2, ///< Priority: normal + 2 + osPriorityNormal3 = 24+3, ///< Priority: normal + 3 + osPriorityNormal4 = 24+4, ///< Priority: normal + 4 + osPriorityNormal5 = 24+5, ///< Priority: normal + 5 + osPriorityNormal6 = 24+6, ///< Priority: normal + 6 + osPriorityNormal7 = 24+7, ///< Priority: normal + 7 + osPriorityAboveNormal = 32, ///< Priority: above normal + osPriorityAboveNormal1 = 32+1, ///< Priority: above normal + 1 + osPriorityAboveNormal2 = 32+2, ///< Priority: above normal + 2 + osPriorityAboveNormal3 = 32+3, ///< Priority: above normal + 3 + osPriorityAboveNormal4 = 32+4, ///< Priority: above normal + 4 + osPriorityAboveNormal5 = 32+5, ///< Priority: above normal + 5 + osPriorityAboveNormal6 = 32+6, ///< Priority: above normal + 6 + osPriorityAboveNormal7 = 32+7, ///< Priority: above normal + 7 + osPriorityHigh = 40, ///< Priority: high + osPriorityHigh1 = 40+1, ///< Priority: high + 1 + osPriorityHigh2 = 40+2, ///< Priority: high + 2 + osPriorityHigh3 = 40+3, ///< Priority: high + 3 + osPriorityHigh4 = 40+4, ///< Priority: high + 4 + osPriorityHigh5 = 40+5, ///< Priority: high + 5 + osPriorityHigh6 = 40+6, ///< Priority: high + 6 + osPriorityHigh7 = 40+7, ///< Priority: high + 7 + osPriorityRealtime = 48, ///< Priority: realtime + osPriorityRealtime1 = 48+1, ///< Priority: realtime + 1 + osPriorityRealtime2 = 48+2, ///< Priority: realtime + 2 + osPriorityRealtime3 = 48+3, ///< Priority: realtime + 3 + osPriorityRealtime4 = 48+4, ///< Priority: realtime + 4 + osPriorityRealtime5 = 48+5, ///< Priority: realtime + 5 + osPriorityRealtime6 = 48+6, ///< Priority: realtime + 6 + osPriorityRealtime7 = 48+7, ///< Priority: realtime + 7 + osPriorityISR = 56, ///< Reserved for ISR deferred thread. + osPriorityError = -1, ///< System cannot determine priority or illegal priority. + osPriorityReserved = 0x7FFFFFFF ///< Prevents enum down-size compiler optimization. +} osPriority_t; + +/// Entry point of a thread. +typedef void (*osThreadFunc_t) (void *argument); + +/// Timer callback function. +typedef void (*osTimerFunc_t) (void *argument); + +/// Timer type. +typedef enum { + osTimerOnce = 0, ///< One-shot timer. + osTimerPeriodic = 1 ///< Repeating timer. +} osTimerType_t; + +// Timeout value. +#define osWaitForever 0xFFFFFFFFU ///< Wait forever timeout value. + +// Flags options (\ref osThreadFlagsWait and \ref osEventFlagsWait). +#define osFlagsWaitAny 0x00000000U ///< Wait for any flag (default). +#define osFlagsWaitAll 0x00000001U ///< Wait for all flags. +#define osFlagsNoClear 0x00000002U ///< Do not clear flags which have been specified to wait for. + +// Flags errors (returned by osThreadFlagsXxxx and osEventFlagsXxxx). +#define osFlagsError 0x80000000U ///< Error indicator. +#define osFlagsErrorUnknown 0xFFFFFFFFU ///< osError (-1). +#define osFlagsErrorTimeout 0xFFFFFFFEU ///< osErrorTimeout (-2). +#define osFlagsErrorResource 0xFFFFFFFDU ///< osErrorResource (-3). +#define osFlagsErrorParameter 0xFFFFFFFCU ///< osErrorParameter (-4). +#define osFlagsErrorISR 0xFFFFFFFAU ///< osErrorISR (-6). + +// Thread attributes (attr_bits in \ref osThreadAttr_t). +#define osThreadDetached 0x00000000U ///< Thread created in detached mode (default) +#define osThreadJoinable 0x00000001U ///< Thread created in joinable mode + +// Mutex attributes (attr_bits in \ref osMutexAttr_t). +#define osMutexRecursive 0x00000001U ///< Recursive mutex. +#define osMutexPrioInherit 0x00000002U ///< Priority inherit protocol. +#define osMutexRobust 0x00000008U ///< Robust mutex. + +/// Status code values returned by CMSIS-RTOS functions. +typedef enum { + osOK = 0, ///< Operation completed successfully. + osError = -1, ///< Unspecified RTOS error: run-time error but no other error message fits. + osErrorTimeout = -2, ///< Operation not completed within the timeout period. + osErrorResource = -3, ///< Resource not available. + osErrorParameter = -4, ///< Parameter error. + osErrorNoMemory = -5, ///< System is out of memory: it was impossible to allocate or reserve memory for the operation. + osErrorISR = -6, ///< Not allowed in ISR context: the function cannot be called from interrupt service routines. + osStatusReserved = 0x7FFFFFFF ///< Prevents enum down-size compiler optimization. +} osStatus_t; + + +/// \details Thread ID identifies the thread. +typedef void *osThreadId_t; + +/// \details Timer ID identifies the timer. +typedef void *osTimerId_t; + +/// \details Event Flags ID identifies the event flags. +typedef void *osEventFlagsId_t; + +/// \details Mutex ID identifies the mutex. +typedef void *osMutexId_t; + +/// \details Semaphore ID identifies the semaphore. +typedef void *osSemaphoreId_t; + +/// \details Memory Pool ID identifies the memory pool. +typedef void *osMemoryPoolId_t; + +/// \details Message Queue ID identifies the message queue. +typedef void *osMessageQueueId_t; + + +#ifndef TZ_MODULEID_T +#define TZ_MODULEID_T +/// \details Data type that identifies secure software modules called by a process. +typedef uint32_t TZ_ModuleId_t; +#endif + + +/// Attributes structure for thread. +typedef struct { + const char *name; ///< name of the thread + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block + void *stack_mem; ///< memory for stack + uint32_t stack_size; ///< size of stack + osPriority_t priority; ///< initial thread priority (default: osPriorityNormal) + TZ_ModuleId_t tz_module; ///< TrustZone module identifier + uint32_t reserved; ///< reserved (must be 0) +} osThreadAttr_t; + +/// Attributes structure for timer. +typedef struct { + const char *name; ///< name of the timer + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block +} osTimerAttr_t; + +/// Attributes structure for event flags. +typedef struct { + const char *name; ///< name of the event flags + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block +} osEventFlagsAttr_t; + +/// Attributes structure for mutex. +typedef struct { + const char *name; ///< name of the mutex + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block +} osMutexAttr_t; + +/// Attributes structure for semaphore. +typedef struct { + const char *name; ///< name of the semaphore + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block +} osSemaphoreAttr_t; + +/// Attributes structure for memory pool. +typedef struct { + const char *name; ///< name of the memory pool + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block + void *mp_mem; ///< memory for data storage + uint32_t mp_size; ///< size of provided memory for data storage +} osMemoryPoolAttr_t; + +/// Attributes structure for message queue. +typedef struct { + const char *name; ///< name of the message queue + uint32_t attr_bits; ///< attribute bits + void *cb_mem; ///< memory for control block + uint32_t cb_size; ///< size of provided memory for control block + void *mq_mem; ///< memory for data storage + uint32_t mq_size; ///< size of provided memory for data storage +} osMessageQueueAttr_t; + + +// ==== Kernel Management Functions ==== + +/// Initialize the RTOS Kernel. +/// \return status code that indicates the execution status of the function. +osStatus_t osKernelInitialize (void); + +/// Get RTOS Kernel Information. +/// \param[out] version pointer to buffer for retrieving version information. +/// \param[out] id_buf pointer to buffer for retrieving kernel identification string. +/// \param[in] id_size size of buffer for kernel identification string. +/// \return status code that indicates the execution status of the function. +osStatus_t osKernelGetInfo (osVersion_t *version, char *id_buf, uint32_t id_size); + +/// Get the current RTOS Kernel state. +/// \return current RTOS Kernel state. +osKernelState_t osKernelGetState (void); + +/// Start the RTOS Kernel scheduler. +/// \return status code that indicates the execution status of the function. +osStatus_t osKernelStart (void); + +/// Lock the RTOS Kernel scheduler. +/// \return previous lock state (1 - locked, 0 - not locked, error code if negative). +int32_t osKernelLock (void); + +/// Unlock the RTOS Kernel scheduler. +/// \return previous lock state (1 - locked, 0 - not locked, error code if negative). +int32_t osKernelUnlock (void); + +/// Restore the RTOS Kernel scheduler lock state. +/// \param[in] lock lock state obtained by \ref osKernelLock or \ref osKernelUnlock. +/// \return new lock state (1 - locked, 0 - not locked, error code if negative). +int32_t osKernelRestoreLock (int32_t lock); + +/// Suspend the RTOS Kernel scheduler. +/// \return time in ticks, for how long the system can sleep or power-down. +uint32_t osKernelSuspend (void); + +/// Resume the RTOS Kernel scheduler. +/// \param[in] sleep_ticks time in ticks for how long the system was in sleep or power-down mode. +void osKernelResume (uint32_t sleep_ticks); + +/// Get the RTOS kernel tick count. +/// \return RTOS kernel current tick count. +uint32_t osKernelGetTickCount (void); + +/// Get the RTOS kernel tick frequency. +/// \return frequency of the kernel tick in hertz, i.e. kernel ticks per second. +uint32_t osKernelGetTickFreq (void); + +/// Get the RTOS kernel system timer count. +/// \return RTOS kernel current system timer count as 32-bit value. +uint32_t osKernelGetSysTimerCount (void); + +/// Get the RTOS kernel system timer frequency. +/// \return frequency of the system timer in hertz, i.e. timer ticks per second. +uint32_t osKernelGetSysTimerFreq (void); + + +// ==== Thread Management Functions ==== + +/// Create a thread and add it to Active Threads. +/// \param[in] func thread function. +/// \param[in] argument pointer that is passed to the thread function as start argument. +/// \param[in] attr thread attributes; NULL: default values. +/// \return thread ID for reference by other functions or NULL in case of error. +osThreadId_t osThreadNew (osThreadFunc_t func, void *argument, const osThreadAttr_t *attr); + +/// Get name of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return name as null-terminated string. +const char *osThreadGetName (osThreadId_t thread_id); + +/// Return the thread ID of the current running thread. +/// \return thread ID for reference by other functions or NULL in case of error. +osThreadId_t osThreadGetId (void); + +/// Get current thread state of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return current thread state of the specified thread. +osThreadState_t osThreadGetState (osThreadId_t thread_id); + +/// Get stack size of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return stack size in bytes. +uint32_t osThreadGetStackSize (osThreadId_t thread_id); + +/// Get available stack space of a thread based on stack watermark recording during execution. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return remaining stack space in bytes. +uint32_t osThreadGetStackSpace (osThreadId_t thread_id); + +/// Change priority of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \param[in] priority new priority value for the thread function. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadSetPriority (osThreadId_t thread_id, osPriority_t priority); + +/// Get current priority of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return current priority value of the specified thread. +osPriority_t osThreadGetPriority (osThreadId_t thread_id); + +/// Pass control to next thread that is in state \b READY. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadYield (void); + +/// Suspend execution of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadSuspend (osThreadId_t thread_id); + +/// Resume execution of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadResume (osThreadId_t thread_id); + +/// Detach a thread (thread storage can be reclaimed when thread terminates). +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadDetach (osThreadId_t thread_id); + +/// Wait for specified thread to terminate. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadJoin (osThreadId_t thread_id); + +/// Terminate execution of current running thread. +__NO_RETURN void osThreadExit (void); + +/// Terminate execution of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +osStatus_t osThreadTerminate (osThreadId_t thread_id); + +/// Get number of active threads. +/// \return number of active threads. +uint32_t osThreadGetCount (void); + +/// Enumerate active threads. +/// \param[out] thread_array pointer to array for retrieving thread IDs. +/// \param[in] array_items maximum number of items in array for retrieving thread IDs. +/// \return number of enumerated threads. +uint32_t osThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items); + + +// ==== Thread Flags Functions ==== + +/// Set the specified Thread Flags of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadNew or \ref osThreadGetId. +/// \param[in] flags specifies the flags of the thread that shall be set. +/// \return thread flags after setting or error code if highest bit set. +uint32_t osThreadFlagsSet (osThreadId_t thread_id, uint32_t flags); + +/// Clear the specified Thread Flags of current running thread. +/// \param[in] flags specifies the flags of the thread that shall be cleared. +/// \return thread flags before clearing or error code if highest bit set. +uint32_t osThreadFlagsClear (uint32_t flags); + +/// Get the current Thread Flags of current running thread. +/// \return current thread flags. +uint32_t osThreadFlagsGet (void); + +/// Wait for one or more Thread Flags of the current running thread to become signaled. +/// \param[in] flags specifies the flags to wait for. +/// \param[in] options specifies flags options (osFlagsXxxx). +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return thread flags before clearing or error code if highest bit set. +uint32_t osThreadFlagsWait (uint32_t flags, uint32_t options, uint32_t timeout); + + +// ==== Generic Wait Functions ==== + +/// Wait for Timeout (Time Delay). +/// \param[in] ticks \ref CMSIS_RTOS_TimeOutValue "time ticks" value +/// \return status code that indicates the execution status of the function. +osStatus_t osDelay (uint32_t ticks); + +/// Wait until specified time. +/// \param[in] ticks absolute time in ticks +/// \return status code that indicates the execution status of the function. +osStatus_t osDelayUntil (uint32_t ticks); + + +// ==== Timer Management Functions ==== + +/// Create and Initialize a timer. +/// \param[in] func function pointer to callback function. +/// \param[in] type \ref osTimerOnce for one-shot or \ref osTimerPeriodic for periodic behavior. +/// \param[in] argument argument to the timer callback function. +/// \param[in] attr timer attributes; NULL: default values. +/// \return timer ID for reference by other functions or NULL in case of error. +osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr); + +/// Get name of a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerNew. +/// \return name as null-terminated string. +const char *osTimerGetName (osTimerId_t timer_id); + +/// Start or restart a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerNew. +/// \param[in] ticks \ref CMSIS_RTOS_TimeOutValue "time ticks" value of the timer. +/// \return status code that indicates the execution status of the function. +osStatus_t osTimerStart (osTimerId_t timer_id, uint32_t ticks); + +/// Stop a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osTimerStop (osTimerId_t timer_id); + +/// Check if a timer is running. +/// \param[in] timer_id timer ID obtained by \ref osTimerNew. +/// \return 0 not running, 1 running. +uint32_t osTimerIsRunning (osTimerId_t timer_id); + +/// Delete a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osTimerDelete (osTimerId_t timer_id); + + +// ==== Event Flags Management Functions ==== + +/// Create and Initialize an Event Flags object. +/// \param[in] attr event flags attributes; NULL: default values. +/// \return event flags ID for reference by other functions or NULL in case of error. +osEventFlagsId_t osEventFlagsNew (const osEventFlagsAttr_t *attr); + +/// Get name of an Event Flags object. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \return name as null-terminated string. +const char *osEventFlagsGetName (osEventFlagsId_t ef_id); + +/// Set the specified Event Flags. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \param[in] flags specifies the flags that shall be set. +/// \return event flags after setting or error code if highest bit set. +uint32_t osEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags); + +/// Clear the specified Event Flags. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \param[in] flags specifies the flags that shall be cleared. +/// \return event flags before clearing or error code if highest bit set. +uint32_t osEventFlagsClear (osEventFlagsId_t ef_id, uint32_t flags); + +/// Get the current Event Flags. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \return current event flags. +uint32_t osEventFlagsGet (osEventFlagsId_t ef_id); + +/// Wait for one or more Event Flags to become signaled. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \param[in] flags specifies the flags to wait for. +/// \param[in] options specifies flags options (osFlagsXxxx). +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return event flags before clearing or error code if highest bit set. +uint32_t osEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout); + +/// Delete an Event Flags object. +/// \param[in] ef_id event flags ID obtained by \ref osEventFlagsNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osEventFlagsDelete (osEventFlagsId_t ef_id); + + +// ==== Mutex Management Functions ==== + +/// Create and Initialize a Mutex object. +/// \param[in] attr mutex attributes; NULL: default values. +/// \return mutex ID for reference by other functions or NULL in case of error. +osMutexId_t osMutexNew (const osMutexAttr_t *attr); + +/// Get name of a Mutex object. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexNew. +/// \return name as null-terminated string. +const char *osMutexGetName (osMutexId_t mutex_id); + +/// Acquire a Mutex or timeout if it is locked. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexNew. +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +osStatus_t osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout); + +/// Release a Mutex that was acquired by \ref osMutexAcquire. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osMutexRelease (osMutexId_t mutex_id); + +/// Get Thread which owns a Mutex object. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexNew. +/// \return thread ID of owner thread or NULL when mutex was not acquired. +osThreadId_t osMutexGetOwner (osMutexId_t mutex_id); + +/// Delete a Mutex object. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osMutexDelete (osMutexId_t mutex_id); + + +// ==== Semaphore Management Functions ==== + +/// Create and Initialize a Semaphore object. +/// \param[in] max_count maximum number of available tokens. +/// \param[in] initial_count initial number of available tokens. +/// \param[in] attr semaphore attributes; NULL: default values. +/// \return semaphore ID for reference by other functions or NULL in case of error. +osSemaphoreId_t osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr); + +/// Get name of a Semaphore object. +/// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew. +/// \return name as null-terminated string. +const char *osSemaphoreGetName (osSemaphoreId_t semaphore_id); + +/// Acquire a Semaphore token or timeout if no tokens are available. +/// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew. +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +osStatus_t osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout); + +/// Release a Semaphore token up to the initial maximum count. +/// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osSemaphoreRelease (osSemaphoreId_t semaphore_id); + +/// Get current Semaphore token count. +/// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew. +/// \return number of tokens available. +uint32_t osSemaphoreGetCount (osSemaphoreId_t semaphore_id); + +/// Delete a Semaphore object. +/// \param[in] semaphore_id semaphore ID obtained by \ref osSemaphoreNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osSemaphoreDelete (osSemaphoreId_t semaphore_id); + + +// ==== Memory Pool Management Functions ==== + +/// Create and Initialize a Memory Pool object. +/// \param[in] block_count maximum number of memory blocks in memory pool. +/// \param[in] block_size memory block size in bytes. +/// \param[in] attr memory pool attributes; NULL: default values. +/// \return memory pool ID for reference by other functions or NULL in case of error. +osMemoryPoolId_t osMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr); + +/// Get name of a Memory Pool object. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return name as null-terminated string. +const char *osMemoryPoolGetName (osMemoryPoolId_t mp_id); + +/// Allocate a memory block from a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return address of the allocated memory block or NULL in case of no memory is available. +void *osMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout); + +/// Return an allocated memory block back to a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \param[in] block address of the allocated memory block to be returned to the memory pool. +/// \return status code that indicates the execution status of the function. +osStatus_t osMemoryPoolFree (osMemoryPoolId_t mp_id, void *block); + +/// Get maximum number of memory blocks in a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return maximum number of memory blocks. +uint32_t osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id); + +/// Get memory block size in a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return memory block size in bytes. +uint32_t osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id); + +/// Get number of memory blocks used in a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return number of memory blocks used. +uint32_t osMemoryPoolGetCount (osMemoryPoolId_t mp_id); + +/// Get number of memory blocks available in a Memory Pool. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return number of memory blocks available. +uint32_t osMemoryPoolGetSpace (osMemoryPoolId_t mp_id); + +/// Delete a Memory Pool object. +/// \param[in] mp_id memory pool ID obtained by \ref osMemoryPoolNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osMemoryPoolDelete (osMemoryPoolId_t mp_id); + + +// ==== Message Queue Management Functions ==== + +/// Create and Initialize a Message Queue object. +/// \param[in] msg_count maximum number of messages in queue. +/// \param[in] msg_size maximum message size in bytes. +/// \param[in] attr message queue attributes; NULL: default values. +/// \return message queue ID for reference by other functions or NULL in case of error. +osMessageQueueId_t osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr); + +/// Get name of a Message Queue object. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return name as null-terminated string. +const char *osMessageQueueGetName (osMessageQueueId_t mq_id); + +/// Put a Message into a Queue or timeout if Queue is full. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \param[in] msg_ptr pointer to buffer with message to put into a queue. +/// \param[in] msg_prio message priority. +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +osStatus_t osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout); + +/// Get a Message from a Queue or timeout if Queue is empty. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \param[out] msg_ptr pointer to buffer for message to get from a queue. +/// \param[out] msg_prio pointer to buffer for message priority or NULL. +/// \param[in] timeout \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +osStatus_t osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout); + +/// Get maximum number of messages in a Message Queue. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return maximum number of messages. +uint32_t osMessageQueueGetCapacity (osMessageQueueId_t mq_id); + +/// Get maximum message size in a Memory Pool. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return maximum message size in bytes. +uint32_t osMessageQueueGetMsgSize (osMessageQueueId_t mq_id); + +/// Get number of queued messages in a Message Queue. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return number of queued messages. +uint32_t osMessageQueueGetCount (osMessageQueueId_t mq_id); + +/// Get number of available slots for messages in a Message Queue. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return number of available slots for messages. +uint32_t osMessageQueueGetSpace (osMessageQueueId_t mq_id); + +/// Reset a Message Queue to initial empty state. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osMessageQueueReset (osMessageQueueId_t mq_id); + +/// Delete a Message Queue object. +/// \param[in] mq_id message queue ID obtained by \ref osMessageQueueNew. +/// \return status code that indicates the execution status of the function. +osStatus_t osMessageQueueDelete (osMessageQueueId_t mq_id); + + +#ifdef __cplusplus +} +#endif + +#endif // CMSIS_OS2_H_ diff --git a/Drivers/CMSIS/RTOS2/Include/os_tick.h b/Drivers/CMSIS/RTOS2/Include/os_tick.h new file mode 100644 index 0000000..dfeb953 --- /dev/null +++ b/Drivers/CMSIS/RTOS2/Include/os_tick.h @@ -0,0 +1,71 @@ +/**************************************************************************//** + * @file os_tick.h + * @brief CMSIS OS Tick header file + * @version V1.0.1 + * @date 24. November 2017 + ******************************************************************************/ +/* + * Copyright (c) 2017-2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef OS_TICK_H +#define OS_TICK_H + +#include + +/// IRQ Handler. +#ifndef IRQHANDLER_T +#define IRQHANDLER_T +typedef void (*IRQHandler_t) (void); +#endif + +/// Setup OS Tick timer to generate periodic RTOS Kernel Ticks +/// \param[in] freq tick frequency in Hz +/// \param[in] handler tick IRQ handler +/// \return 0 on success, -1 on error. +int32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler); + +/// Enable OS Tick timer interrupt +void OS_Tick_Enable (void); + +/// Disable OS Tick timer interrupt +void OS_Tick_Disable (void); + +/// Acknowledge execution of OS Tick timer interrupt +void OS_Tick_AcknowledgeIRQ (void); + +/// Get OS Tick timer IRQ number +/// \return OS Tick IRQ number +int32_t OS_Tick_GetIRQn (void); + +/// Get OS Tick timer clock frequency +/// \return OS Tick timer clock frequency in Hz +uint32_t OS_Tick_GetClock (void); + +/// Get OS Tick timer interval reload value +/// \return OS Tick timer interval reload value +uint32_t OS_Tick_GetInterval (void); + +/// Get OS Tick timer counter value +/// \return OS Tick timer counter value +uint32_t OS_Tick_GetCount (void); + +/// Get OS Tick timer overflow status +/// \return OS Tick overflow status (1 - overflow, 0 - no overflow). +uint32_t OS_Tick_GetOverflow (void); + +#endif /* OS_TICK_H */ diff --git a/Drivers/CMSIS/RTOS2/Source/os_systick.c b/Drivers/CMSIS/RTOS2/Source/os_systick.c new file mode 100644 index 0000000..f114caa --- /dev/null +++ b/Drivers/CMSIS/RTOS2/Source/os_systick.c @@ -0,0 +1,132 @@ +/**************************************************************************//** + * @file os_systick.c + * @brief CMSIS OS Tick SysTick implementation + * @version V1.0.1 + * @date 24. November 2017 + ******************************************************************************/ +/* + * Copyright (c) 2017-2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "os_tick.h" + +//lint -emacro((923,9078),SCB,SysTick) "cast from unsigned long to pointer" +#include "RTE_Components.h" +#include CMSIS_device_header + +#ifdef SysTick + +#ifndef SYSTICK_IRQ_PRIORITY +#define SYSTICK_IRQ_PRIORITY 0xFFU +#endif + +static uint8_t PendST; + +// Setup OS Tick. +__WEAK int32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler) { + uint32_t load; + (void)handler; + + if (freq == 0U) { + //lint -e{904} "Return statement before end of function" + return (-1); + } + + load = (SystemCoreClock / freq) - 1U; + if (load > 0x00FFFFFFU) { + //lint -e{904} "Return statement before end of function" + return (-1); + } + + // Set SysTick Interrupt Priority +#if ((defined(__ARM_ARCH_8M_MAIN__) && (__ARM_ARCH_8M_MAIN__ != 0)) || \ + (defined(__CORTEX_M) && (__CORTEX_M == 7U))) + SCB->SHPR[11] = SYSTICK_IRQ_PRIORITY; +#elif (defined(__ARM_ARCH_8M_BASE__) && (__ARM_ARCH_8M_BASE__ != 0)) + SCB->SHPR[1] |= ((uint32_t)SYSTICK_IRQ_PRIORITY << 24); +#elif ((defined(__ARM_ARCH_7M__) && (__ARM_ARCH_7M__ != 0)) || \ + (defined(__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ != 0))) + SCB->SHP[11] = SYSTICK_IRQ_PRIORITY; +#elif (defined(__ARM_ARCH_6M__) && (__ARM_ARCH_6M__ != 0)) + SCB->SHP[1] |= ((uint32_t)SYSTICK_IRQ_PRIORITY << 24); +#else +#error "Unknown ARM Core!" +#endif + + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk; + SysTick->LOAD = load; + SysTick->VAL = 0U; + + PendST = 0U; + + return (0); +} + +/// Enable OS Tick. +__WEAK void OS_Tick_Enable (void) { + + if (PendST != 0U) { + PendST = 0U; + SCB->ICSR = SCB_ICSR_PENDSTSET_Msk; + } + + SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; +} + +/// Disable OS Tick. +__WEAK void OS_Tick_Disable (void) { + + SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; + + if ((SCB->ICSR & SCB_ICSR_PENDSTSET_Msk) != 0U) { + SCB->ICSR = SCB_ICSR_PENDSTCLR_Msk; + PendST = 1U; + } +} + +// Acknowledge OS Tick IRQ. +__WEAK void OS_Tick_AcknowledgeIRQ (void) { + (void)SysTick->CTRL; +} + +// Get OS Tick IRQ number. +__WEAK int32_t OS_Tick_GetIRQn (void) { + return ((int32_t)SysTick_IRQn); +} + +// Get OS Tick clock. +__WEAK uint32_t OS_Tick_GetClock (void) { + return (SystemCoreClock); +} + +// Get OS Tick interval. +__WEAK uint32_t OS_Tick_GetInterval (void) { + return (SysTick->LOAD + 1U); +} + +// Get OS Tick count value. +__WEAK uint32_t OS_Tick_GetCount (void) { + uint32_t load = SysTick->LOAD; + return (load - SysTick->VAL); +} + +// Get OS Tick overflow status. +__WEAK uint32_t OS_Tick_GetOverflow (void) { + return ((SysTick->CTRL >> 16) & 1U); +} + +#endif // SysTick diff --git a/Drivers/CMSIS/RTOS2/Source/os_tick_gtim.c b/Drivers/CMSIS/RTOS2/Source/os_tick_gtim.c new file mode 100644 index 0000000..1778ab7 --- /dev/null +++ b/Drivers/CMSIS/RTOS2/Source/os_tick_gtim.c @@ -0,0 +1,187 @@ +/**************************************************************************//** + * @file os_tick_gtim.c + * @brief CMSIS OS Tick implementation for Generic Timer + * @version V1.0.1 + * @date 24. November 2017 + ******************************************************************************/ +/* + * Copyright (c) 2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "os_tick.h" +#include "irq_ctrl.h" + +#include "RTE_Components.h" +#include CMSIS_device_header + +#ifndef GTIM_IRQ_PRIORITY +#define GTIM_IRQ_PRIORITY 0xFFU +#endif + +#ifndef GTIM_IRQ_NUM +#define GTIM_IRQ_NUM SecurePhyTimer_IRQn +#endif + +// Timer interrupt pending flag +static uint8_t GTIM_PendIRQ; + +// Timer tick frequency +static uint32_t GTIM_Clock; + +// Timer load value +static uint32_t GTIM_Load; + +// Setup OS Tick. +int32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler) { + uint32_t prio, bits; + + if (freq == 0U) { + return (-1); + } + + GTIM_PendIRQ = 0U; + + // Get timer clock +#ifdef SCTR_BASE + GTIM_Clock = *(uint32_t*)(SCTR_BASE+0x20); +#else + // FVP REFCLK CNTControl 100MHz + GTIM_Clock = 100000000UL; +#endif + + PL1_SetCounterFrequency(GTIM_Clock); + + // Calculate load value + GTIM_Load = (GTIM_Clock / freq) - 1U; + + // Disable Generic Timer and set load value + PL1_SetControl(0U); + PL1_SetLoadValue(GTIM_Load); + + // Disable corresponding IRQ + IRQ_Disable(GTIM_IRQ_NUM); + IRQ_ClearPending(GTIM_IRQ_NUM); + + // Determine number of implemented priority bits + IRQ_SetPriority(GTIM_IRQ_NUM, 0xFFU); + + prio = IRQ_GetPriority(GTIM_IRQ_NUM); + + // At least bits [7:4] must be implemented + if ((prio & 0xF0U) == 0U) { + return (-1); + } + + for (bits = 0; bits < 4; bits++) { + if ((prio & 0x01) != 0) { + break; + } + prio >>= 1; + } + + // Adjust configured priority to the number of implemented priority bits + prio = (GTIM_IRQ_PRIORITY << bits) & 0xFFUL; + + // Set Private Timer interrupt priority + IRQ_SetPriority(GTIM_IRQ_NUM, prio-1U); + + // Set edge-triggered IRQ + IRQ_SetMode(GTIM_IRQ_NUM, IRQ_MODE_TRIG_EDGE); + + // Register tick interrupt handler function + IRQ_SetHandler(GTIM_IRQ_NUM, handler); + + // Enable corresponding interrupt + IRQ_Enable(GTIM_IRQ_NUM); + + // Enable system counter and timer control +#ifdef SCTR_BASE + *(uint32_t*)SCTR_BASE |= 3U; +#endif + + // Enable timer control + PL1_SetControl(1U); + + return (0); +} + +/// Enable OS Tick. +void OS_Tick_Enable (void) { + uint32_t ctrl; + + // Set pending interrupt if flag set + if (GTIM_PendIRQ != 0U) { + GTIM_PendIRQ = 0U; + IRQ_SetPending (GTIM_IRQ_NUM); + } + + // Start the Private Timer + ctrl = PL1_GetControl(); + // Set bit: Timer enable + ctrl |= 1U; + PL1_SetControl(ctrl); +} + +/// Disable OS Tick. +void OS_Tick_Disable (void) { + uint32_t ctrl; + + // Stop the Private Timer + ctrl = PL1_GetControl(); + // Clear bit: Timer enable + ctrl &= ~1U; + PL1_SetControl(ctrl); + + // Remember pending interrupt flag + if (IRQ_GetPending(GTIM_IRQ_NUM) != 0) { + IRQ_ClearPending(GTIM_IRQ_NUM); + GTIM_PendIRQ = 1U; + } +} + +// Acknowledge OS Tick IRQ. +void OS_Tick_AcknowledgeIRQ (void) { + IRQ_ClearPending (GTIM_IRQ_NUM); + PL1_SetLoadValue(GTIM_Load); +} + +// Get OS Tick IRQ number. +int32_t OS_Tick_GetIRQn (void) { + return (GTIM_IRQ_NUM); +} + +// Get OS Tick clock. +uint32_t OS_Tick_GetClock (void) { + return (GTIM_Clock); +} + +// Get OS Tick interval. +uint32_t OS_Tick_GetInterval (void) { + return (GTIM_Load + 1U); +} + +// Get OS Tick count value. +uint32_t OS_Tick_GetCount (void) { + return (GTIM_Load - PL1_GetCurrentValue()); +} + +// Get OS Tick overflow status. +uint32_t OS_Tick_GetOverflow (void) { + CNTP_CTL_Type cntp_ctl; + cntp_ctl.w = PL1_GetControl(); + return (cntp_ctl.b.ISTATUS); +} diff --git a/Drivers/CMSIS/RTOS2/Source/os_tick_ptim.c b/Drivers/CMSIS/RTOS2/Source/os_tick_ptim.c new file mode 100644 index 0000000..ccd9cb6 --- /dev/null +++ b/Drivers/CMSIS/RTOS2/Source/os_tick_ptim.c @@ -0,0 +1,165 @@ +/**************************************************************************//** + * @file os_tick_ptim.c + * @brief CMSIS OS Tick implementation for Private Timer + * @version V1.0.2 + * @date 02. March 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "RTE_Components.h" +#include CMSIS_device_header + +#if defined(PTIM) + +#include "os_tick.h" +#include "irq_ctrl.h" + +#ifndef PTIM_IRQ_PRIORITY +#define PTIM_IRQ_PRIORITY 0xFFU +#endif + +static uint8_t PTIM_PendIRQ; // Timer interrupt pending flag + +// Setup OS Tick. +int32_t OS_Tick_Setup (uint32_t freq, IRQHandler_t handler) { + uint32_t load; + uint32_t prio; + uint32_t bits; + + if (freq == 0U) { + return (-1); + } + + PTIM_PendIRQ = 0U; + + // Private Timer runs with the system frequency + load = (SystemCoreClock / freq) - 1U; + + // Disable Private Timer and set load value + PTIM_SetControl (0U); + PTIM_SetLoadValue (load); + + // Disable corresponding IRQ + IRQ_Disable (PrivTimer_IRQn); + IRQ_ClearPending(PrivTimer_IRQn); + + // Determine number of implemented priority bits + IRQ_SetPriority (PrivTimer_IRQn, 0xFFU); + + prio = IRQ_GetPriority (PrivTimer_IRQn); + + // At least bits [7:4] must be implemented + if ((prio & 0xF0U) == 0U) { + return (-1); + } + + for (bits = 0; bits < 4; bits++) { + if ((prio & 0x01) != 0) { + break; + } + prio >>= 1; + } + + // Adjust configured priority to the number of implemented priority bits + prio = (PTIM_IRQ_PRIORITY << bits) & 0xFFUL; + + // Set Private Timer interrupt priority + IRQ_SetPriority(PrivTimer_IRQn, prio-1U); + + // Set edge-triggered IRQ + IRQ_SetMode(PrivTimer_IRQn, IRQ_MODE_TRIG_EDGE); + + // Register tick interrupt handler function + IRQ_SetHandler(PrivTimer_IRQn, handler); + + // Enable corresponding interrupt + IRQ_Enable (PrivTimer_IRQn); + + // Set bits: IRQ enable and Auto reload + PTIM_SetControl (0x06U); + + return (0); +} + +/// Enable OS Tick. +void OS_Tick_Enable (void) { + uint32_t ctrl; + + // Set pending interrupt if flag set + if (PTIM_PendIRQ != 0U) { + PTIM_PendIRQ = 0U; + IRQ_SetPending (PrivTimer_IRQn); + } + + // Start the Private Timer + ctrl = PTIM_GetControl(); + // Set bit: Timer enable + ctrl |= 1U; + PTIM_SetControl (ctrl); +} + +/// Disable OS Tick. +void OS_Tick_Disable (void) { + uint32_t ctrl; + + // Stop the Private Timer + ctrl = PTIM_GetControl(); + // Clear bit: Timer enable + ctrl &= ~1U; + PTIM_SetControl (ctrl); + + // Remember pending interrupt flag + if (IRQ_GetPending(PrivTimer_IRQn) != 0) { + IRQ_ClearPending (PrivTimer_IRQn); + PTIM_PendIRQ = 1U; + } +} + +// Acknowledge OS Tick IRQ. +void OS_Tick_AcknowledgeIRQ (void) { + PTIM_ClearEventFlag(); +} + +// Get OS Tick IRQ number. +int32_t OS_Tick_GetIRQn (void) { + return (PrivTimer_IRQn); +} + +// Get OS Tick clock. +uint32_t OS_Tick_GetClock (void) { + return (SystemCoreClock); +} + +// Get OS Tick interval. +uint32_t OS_Tick_GetInterval (void) { + return (PTIM_GetLoadValue() + 1U); +} + +// Get OS Tick count value. +uint32_t OS_Tick_GetCount (void) { + uint32_t load = PTIM_GetLoadValue(); + return (load - PTIM_GetCurrentValue()); +} + +// Get OS Tick overflow status. +uint32_t OS_Tick_GetOverflow (void) { + return (PTIM->ISR & 1); +} + +#endif // PTIM diff --git a/Drivers/CMSIS/RTOS2/Template/cmsis_os.h b/Drivers/CMSIS/RTOS2/Template/cmsis_os.h new file mode 100644 index 0000000..5447842 --- /dev/null +++ b/Drivers/CMSIS/RTOS2/Template/cmsis_os.h @@ -0,0 +1,922 @@ +/* + * Copyright (c) 2013-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ---------------------------------------------------------------------- + * + * $Date: 18. June 2018 + * $Revision: V2.1.3 + * + * Project: CMSIS-RTOS API + * Title: cmsis_os.h template header file + * + * Version 0.02 + * Initial Proposal Phase + * Version 0.03 + * osKernelStart added, optional feature: main started as thread + * osSemaphores have standard behavior + * osTimerCreate does not start the timer, added osTimerStart + * osThreadPass is renamed to osThreadYield + * Version 1.01 + * Support for C++ interface + * - const attribute removed from the osXxxxDef_t typedefs + * - const attribute added to the osXxxxDef macros + * Added: osTimerDelete, osMutexDelete, osSemaphoreDelete + * Added: osKernelInitialize + * Version 1.02 + * Control functions for short timeouts in microsecond resolution: + * Added: osKernelSysTick, osKernelSysTickFrequency, osKernelSysTickMicroSec + * Removed: osSignalGet + * Version 2.0.0 + * OS objects creation without macros (dynamic creation and resource allocation): + * - added: osXxxxNew functions which replace osXxxxCreate + * - added: osXxxxAttr_t structures + * - deprecated: osXxxxCreate functions, osXxxxDef_t structures + * - deprecated: osXxxxDef and osXxxx macros + * osStatus codes simplified and renamed to osStatus_t + * osEvent return structure deprecated + * Kernel: + * - added: osKernelInfo_t and osKernelGetInfo + * - added: osKernelState_t and osKernelGetState (replaces osKernelRunning) + * - added: osKernelLock, osKernelUnlock + * - added: osKernelSuspend, osKernelResume + * - added: osKernelGetTickCount, osKernelGetTickFreq + * - renamed osKernelSysTick to osKernelGetSysTimerCount + * - replaced osKernelSysTickFrequency with osKernelGetSysTimerFreq + * - deprecated osKernelSysTickMicroSec + * Thread: + * - extended number of thread priorities + * - renamed osPrioriry to osPrioriry_t + * - replaced osThreadCreate with osThreadNew + * - added: osThreadGetName + * - added: osThreadState_t and osThreadGetState + * - added: osThreadGetStackSize, osThreadGetStackSpace + * - added: osThreadSuspend, osThreadResume + * - added: osThreadJoin, osThreadDetach, osThreadExit + * - added: osThreadGetCount, osThreadEnumerate + * - added: Thread Flags (moved from Signals) + * Signals: + * - renamed osSignals to osThreadFlags (moved to Thread Flags) + * - changed return value of Set/Clear/Wait functions + * - Clear function limited to current running thread + * - extended Wait function (options) + * - added: osThreadFlagsGet + * Event Flags: + * - added new independent object for handling Event Flags + * Delay and Wait functions: + * - added: osDelayUntil + * - deprecated: osWait + * Timer: + * - replaced osTimerCreate with osTimerNew + * - added: osTimerGetName, osTimerIsRunning + * Mutex: + * - extended: attributes (Recursive, Priority Inherit, Robust) + * - replaced osMutexCreate with osMutexNew + * - renamed osMutexWait to osMutexAcquire + * - added: osMutexGetName, osMutexGetOwner + * Semaphore: + * - extended: maximum and initial token count + * - replaced osSemaphoreCreate with osSemaphoreNew + * - renamed osSemaphoreWait to osSemaphoreAcquire (changed return value) + * - added: osSemaphoreGetName, osSemaphoreGetCount + * Memory Pool: + * - using osMemoryPool prefix instead of osPool + * - replaced osPoolCreate with osMemoryPoolNew + * - extended osMemoryPoolAlloc (timeout) + * - added: osMemoryPoolGetName + * - added: osMemoryPoolGetCapacity, osMemoryPoolGetBlockSize + * - added: osMemoryPoolGetCount, osMemoryPoolGetSpace + * - added: osMemoryPoolDelete + * - deprecated: osPoolCAlloc + * Message Queue: + * - extended: fixed size message instead of a single 32-bit value + * - using osMessageQueue prefix instead of osMessage + * - replaced osMessageCreate with osMessageQueueNew + * - updated: osMessageQueuePut, osMessageQueueGet + * - added: osMessageQueueGetName + * - added: osMessageQueueGetCapacity, osMessageQueueGetMsgSize + * - added: osMessageQueueGetCount, osMessageQueueGetSpace + * - added: osMessageQueueReset, osMessageQueueDelete + * Mail Queue: + * - deprecated (superseded by extended Message Queue functionality) + * Version 2.1.0 + * Support for critical and uncritical sections (nesting safe): + * - updated: osKernelLock, osKernelUnlock + * - added: osKernelRestoreLock + * Updated Thread and Event Flags: + * - changed flags parameter and return type from int32_t to uint32_t + * Version 2.1.1 + * Additional functions allowed to be called from Interrupt Service Routines: + * - osKernelGetTickCount, osKernelGetTickFreq + * Changed Kernel Tick type to uint32_t: + * - updated: osKernelGetTickCount, osDelayUntil + * Version 2.1.2 + * Additional functions allowed to be called from Interrupt Service Routines: + * - osKernelGetInfo, osKernelGetState + * Version 2.1.3 + * Additional functions allowed to be called from Interrupt Service Routines: + * - osThreadGetId + *---------------------------------------------------------------------------*/ + +#ifndef CMSIS_OS_H_ +#define CMSIS_OS_H_ + +/// \b osCMSIS identifies the CMSIS-RTOS API version. +#define osCMSIS 0x20001U ///< API version (main[31:16].sub[15:0]) + +/// \note CAN BE CHANGED: \b osCMSIS_KERNEL identifies the underlying RTOS kernel and version number. +#define osCMSIS_KERNEL 0x10000U ///< RTOS identification and version (main[31:16].sub[15:0]) + +/// \note CAN BE CHANGED: \b osKernelSystemId identifies the underlying RTOS kernel. +#define osKernelSystemId "KERNEL V1.0" ///< RTOS identification string + +/// \note CAN BE CHANGED: \b osFeature_xxx identifies RTOS features. +#define osFeature_MainThread 0 ///< main thread 1=main can be thread, 0=not available +#define osFeature_Signals 16U ///< maximum number of Signal Flags available per thread +#define osFeature_Semaphore 65535U ///< maximum count for \ref osSemaphoreCreate function +#define osFeature_Wait 0 ///< osWait function: 1=available, 0=not available +#define osFeature_SysTick 1 ///< osKernelSysTick functions: 1=available, 0=not available +#define osFeature_Pool 1 ///< Memory Pools: 1=available, 0=not available +#define osFeature_MessageQ 1 ///< Message Queues: 1=available, 0=not available +#define osFeature_MailQ 1 ///< Mail Queues: 1=available, 0=not available + +#if (osCMSIS >= 0x20000U) +#include "cmsis_os2.h" +#else +#include +#include +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + + +// ==== Enumerations, structures, defines ==== + +/// Priority values. +#if (osCMSIS < 0x20000U) +typedef enum { + osPriorityIdle = -3, ///< Priority: idle (lowest) + osPriorityLow = -2, ///< Priority: low + osPriorityBelowNormal = -1, ///< Priority: below normal + osPriorityNormal = 0, ///< Priority: normal (default) + osPriorityAboveNormal = +1, ///< Priority: above normal + osPriorityHigh = +2, ///< Priority: high + osPriorityRealtime = +3, ///< Priority: realtime (highest) + osPriorityError = 0x84, ///< System cannot determine priority or illegal priority. + osPriorityReserved = 0x7FFFFFFF ///< Prevents enum down-size compiler optimization. +} osPriority; +#else +#define osPriority osPriority_t +#endif + +/// Entry point of a thread. +typedef void (*os_pthread) (void const *argument); + +/// Entry point of a timer call back function. +typedef void (*os_ptimer) (void const *argument); + +/// Timer type. +#if (osCMSIS < 0x20000U) +typedef enum { + osTimerOnce = 0, ///< One-shot timer. + osTimerPeriodic = 1 ///< Repeating timer. +} os_timer_type; +#else +#define os_timer_type osTimerType_t +#endif + +/// Timeout value. +#define osWaitForever 0xFFFFFFFFU ///< Wait forever timeout value. + +/// Status code values returned by CMSIS-RTOS functions. +#if (osCMSIS < 0x20000U) +typedef enum { + osOK = 0, ///< Function completed; no error or event occurred. + osEventSignal = 0x08, ///< Function completed; signal event occurred. + osEventMessage = 0x10, ///< Function completed; message event occurred. + osEventMail = 0x20, ///< Function completed; mail event occurred. + osEventTimeout = 0x40, ///< Function completed; timeout occurred. + osErrorParameter = 0x80, ///< Parameter error: a mandatory parameter was missing or specified an incorrect object. + osErrorResource = 0x81, ///< Resource not available: a specified resource was not available. + osErrorTimeoutResource = 0xC1, ///< Resource not available within given time: a specified resource was not available within the timeout period. + osErrorISR = 0x82, ///< Not allowed in ISR context: the function cannot be called from interrupt service routines. + osErrorISRRecursive = 0x83, ///< Function called multiple times from ISR with same object. + osErrorPriority = 0x84, ///< System cannot determine priority or thread has illegal priority. + osErrorNoMemory = 0x85, ///< System is out of memory: it was impossible to allocate or reserve memory for the operation. + osErrorValue = 0x86, ///< Value of a parameter is out of range. + osErrorOS = 0xFF, ///< Unspecified RTOS error: run-time error but no other error message fits. + osStatusReserved = 0x7FFFFFFF ///< Prevents enum down-size compiler optimization. +} osStatus; +#else +typedef int32_t osStatus; +#define osEventSignal (0x08) +#define osEventMessage (0x10) +#define osEventMail (0x20) +#define osEventTimeout (0x40) +#define osErrorOS osError +#define osErrorTimeoutResource osErrorTimeout +#define osErrorISRRecursive (-126) +#define osErrorValue (-127) +#define osErrorPriority (-128) +#endif + + +// >>> the following data type definitions may be adapted towards a specific RTOS + +/// Thread ID identifies the thread. +/// \note CAN BE CHANGED: \b implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef void *osThreadId; +#else +#define osThreadId osThreadId_t +#endif + +/// Timer ID identifies the timer. +/// \note CAN BE CHANGED: \b implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef void *osTimerId; +#else +#define osTimerId osTimerId_t +#endif + +/// Mutex ID identifies the mutex. +/// \note CAN BE CHANGED: \b implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef void *osMutexId; +#else +#define osMutexId osMutexId_t +#endif + +/// Semaphore ID identifies the semaphore. +/// \note CAN BE CHANGED: \b implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef void *osSemaphoreId; +#else +#define osSemaphoreId osSemaphoreId_t +#endif + +/// Pool ID identifies the memory pool. +/// \note CAN BE CHANGED: \b implementation specific in every CMSIS-RTOS. +typedef void *osPoolId; + +/// Message ID identifies the message queue. +/// \note CAN BE CHANGED: \b implementation specific in every CMSIS-RTOS. +typedef void *osMessageQId; + +/// Mail ID identifies the mail queue. +/// \note CAN BE CHANGED: \b implementation specific in every CMSIS-RTOS. +typedef void *osMailQId; + + +/// Thread Definition structure contains startup information of a thread. +/// \note CAN BE CHANGED: \b os_thread_def is implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef struct os_thread_def { + os_pthread pthread; ///< start address of thread function + osPriority tpriority; ///< initial thread priority + uint32_t instances; ///< maximum number of instances of that thread function + uint32_t stacksize; ///< stack size requirements in bytes; 0 is default stack size +} osThreadDef_t; +#else +typedef struct os_thread_def { + os_pthread pthread; ///< start address of thread function + osThreadAttr_t attr; ///< thread attributes +} osThreadDef_t; +#endif + +/// Timer Definition structure contains timer parameters. +/// \note CAN BE CHANGED: \b os_timer_def is implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef struct os_timer_def { + os_ptimer ptimer; ///< start address of a timer function +} osTimerDef_t; +#else +typedef struct os_timer_def { + os_ptimer ptimer; ///< start address of a timer function + osTimerAttr_t attr; ///< timer attributes +} osTimerDef_t; +#endif + +/// Mutex Definition structure contains setup information for a mutex. +/// \note CAN BE CHANGED: \b os_mutex_def is implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef struct os_mutex_def { + uint32_t dummy; ///< dummy value +} osMutexDef_t; +#else +#define osMutexDef_t osMutexAttr_t +#endif + +/// Semaphore Definition structure contains setup information for a semaphore. +/// \note CAN BE CHANGED: \b os_semaphore_def is implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef struct os_semaphore_def { + uint32_t dummy; ///< dummy value +} osSemaphoreDef_t; +#else +#define osSemaphoreDef_t osSemaphoreAttr_t +#endif + +/// Definition structure for memory block allocation. +/// \note CAN BE CHANGED: \b os_pool_def is implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef struct os_pool_def { + uint32_t pool_sz; ///< number of items (elements) in the pool + uint32_t item_sz; ///< size of an item + void *pool; ///< pointer to memory for pool +} osPoolDef_t; +#else +typedef struct os_pool_def { + uint32_t pool_sz; ///< number of items (elements) in the pool + uint32_t item_sz; ///< size of an item + osMemoryPoolAttr_t attr; ///< memory pool attributes +} osPoolDef_t; +#endif + +/// Definition structure for message queue. +/// \note CAN BE CHANGED: \b os_messageQ_def is implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef struct os_messageQ_def { + uint32_t queue_sz; ///< number of elements in the queue + void *pool; ///< memory array for messages +} osMessageQDef_t; +#else +typedef struct os_messageQ_def { + uint32_t queue_sz; ///< number of elements in the queue + osMessageQueueAttr_t attr; ///< message queue attributes +} osMessageQDef_t; +#endif + +/// Definition structure for mail queue. +/// \note CAN BE CHANGED: \b os_mailQ_def is implementation specific in every CMSIS-RTOS. +#if (osCMSIS < 0x20000U) +typedef struct os_mailQ_def { + uint32_t queue_sz; ///< number of elements in the queue + uint32_t item_sz; ///< size of an item + void *pool; ///< memory array for mail +} osMailQDef_t; +#else +typedef struct os_mailQ_def { + uint32_t queue_sz; ///< number of elements in the queue + uint32_t item_sz; ///< size of an item + void *mail; ///< pointer to mail + osMemoryPoolAttr_t mp_attr; ///< memory pool attributes + osMessageQueueAttr_t mq_attr; ///< message queue attributes +} osMailQDef_t; +#endif + + +/// Event structure contains detailed information about an event. +typedef struct { + osStatus status; ///< status code: event or error information + union { + uint32_t v; ///< message as 32-bit value + void *p; ///< message or mail as void pointer + int32_t signals; ///< signal flags + } value; ///< event value + union { + osMailQId mail_id; ///< mail id obtained by \ref osMailCreate + osMessageQId message_id; ///< message id obtained by \ref osMessageCreate + } def; ///< event definition +} osEvent; + + +// ==== Kernel Management Functions ==== + +/// Initialize the RTOS Kernel for creating objects. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osKernelInitialize (void); +#endif + +/// Start the RTOS Kernel scheduler. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osKernelStart (void); +#endif + +/// Check if the RTOS kernel is already started. +/// \return 0 RTOS is not started, 1 RTOS is started. +#if (osCMSIS < 0x20000U) +int32_t osKernelRunning(void); +#endif + +#if (defined(osFeature_SysTick) && (osFeature_SysTick != 0)) // System Timer available + +/// Get the RTOS kernel system timer counter. +/// \return RTOS kernel system timer as 32-bit value +#if (osCMSIS < 0x20000U) +uint32_t osKernelSysTick (void); +#else +#define osKernelSysTick osKernelGetSysTimerCount +#endif + +/// The RTOS kernel system timer frequency in Hz. +/// \note Reflects the system timer setting and is typically defined in a configuration file. +#if (osCMSIS < 0x20000U) +#define osKernelSysTickFrequency 100000000 +#endif + +/// Convert a microseconds value to a RTOS kernel system timer value. +/// \param microsec time value in microseconds. +/// \return time value normalized to the \ref osKernelSysTickFrequency +#if (osCMSIS < 0x20000U) +#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000) +#else +#define osKernelSysTickMicroSec(microsec) (((uint64_t)microsec * osKernelGetSysTimerFreq()) / 1000000) +#endif + +#endif // System Timer available + + +// ==== Thread Management Functions ==== + +/// Create a Thread Definition with function, priority, and stack requirements. +/// \param name name of the thread function. +/// \param priority initial priority of the thread function. +/// \param instances number of possible thread instances. +/// \param stacksz stack size (in bytes) requirements for the thread function. +/// \note CAN BE CHANGED: The parameters to \b osThreadDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osThreadDef(name, priority, instances, stacksz) \ +extern const osThreadDef_t os_thread_def_##name +#else // define the object +#if (osCMSIS < 0x20000U) +#define osThreadDef(name, priority, instances, stacksz) \ +const osThreadDef_t os_thread_def_##name = \ +{ (name), (priority), (instances), (stacksz) } +#else +#define osThreadDef(name, priority, instances, stacksz) \ +const osThreadDef_t os_thread_def_##name = \ +{ (name), \ + { NULL, osThreadDetached, NULL, 0U, NULL, 8*((stacksz+7)/8), (priority), 0U, 0U } } +#endif +#endif + +/// Access a Thread definition. +/// \param name name of the thread definition object. +/// \note CAN BE CHANGED: The parameter to \b osThread shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osThread(name) \ +&os_thread_def_##name + +/// Create a thread and add it to Active Threads and set it to state READY. +/// \param[in] thread_def thread definition referenced with \ref osThread. +/// \param[in] argument pointer that is passed to the thread function as start argument. +/// \return thread ID for reference by other functions or NULL in case of error. +osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument); + +/// Return the thread ID of the current running thread. +/// \return thread ID for reference by other functions or NULL in case of error. +#if (osCMSIS < 0x20000U) +osThreadId osThreadGetId (void); +#endif + +/// Change priority of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \param[in] priority new priority value for the thread function. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osThreadSetPriority (osThreadId thread_id, osPriority priority); +#endif + +/// Get current priority of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \return current priority value of the specified thread. +#if (osCMSIS < 0x20000U) +osPriority osThreadGetPriority (osThreadId thread_id); +#endif + +/// Pass control to next thread that is in state \b READY. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osThreadYield (void); +#endif + +/// Terminate execution of a thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osThreadTerminate (osThreadId thread_id); +#endif + + +// ==== Signal Management ==== + +/// Set the specified Signal Flags of an active thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \param[in] signals specifies the signal flags of the thread that should be set. +/// \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters. +int32_t osSignalSet (osThreadId thread_id, int32_t signals); + +/// Clear the specified Signal Flags of an active thread. +/// \param[in] thread_id thread ID obtained by \ref osThreadCreate or \ref osThreadGetId. +/// \param[in] signals specifies the signal flags of the thread that shall be cleared. +/// \return previous signal flags of the specified thread or 0x80000000 in case of incorrect parameters or call from ISR. +int32_t osSignalClear (osThreadId thread_id, int32_t signals); + +/// Wait for one or more Signal Flags to become signaled for the current \b RUNNING thread. +/// \param[in] signals wait until all specified signal flags set or 0 for any single signal flag. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return event flag information or error code. +osEvent osSignalWait (int32_t signals, uint32_t millisec); + + +// ==== Generic Wait Functions ==== + +/// Wait for Timeout (Time Delay). +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue "time delay" value +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osDelay (uint32_t millisec); +#endif + +#if (defined (osFeature_Wait) && (osFeature_Wait != 0)) // Generic Wait available + +/// Wait for Signal, Message, Mail, or Timeout. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out +/// \return event that contains signal, message, or mail information or error code. +osEvent osWait (uint32_t millisec); + +#endif // Generic Wait available + + +// ==== Timer Management Functions ==== + +/// Define a Timer object. +/// \param name name of the timer object. +/// \param function name of the timer call back function. +/// \note CAN BE CHANGED: The parameter to \b osTimerDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osTimerDef(name, function) \ +extern const osTimerDef_t os_timer_def_##name +#else // define the object +#if (osCMSIS < 0x20000U) +#define osTimerDef(name, function) \ +const osTimerDef_t os_timer_def_##name = { (function) } +#else +#define osTimerDef(name, function) \ +const osTimerDef_t os_timer_def_##name = \ +{ (function), { NULL, 0U, NULL, 0U } } +#endif +#endif + +/// Access a Timer definition. +/// \param name name of the timer object. +/// \note CAN BE CHANGED: The parameter to \b osTimer shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osTimer(name) \ +&os_timer_def_##name + +/// Create and Initialize a timer. +/// \param[in] timer_def timer object referenced with \ref osTimer. +/// \param[in] type osTimerOnce for one-shot or osTimerPeriodic for periodic behavior. +/// \param[in] argument argument to the timer call back function. +/// \return timer ID for reference by other functions or NULL in case of error. +osTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument); + +/// Start or restart a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue "time delay" value of the timer. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osTimerStart (osTimerId timer_id, uint32_t millisec); +#endif + +/// Stop a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osTimerStop (osTimerId timer_id); +#endif + +/// Delete a timer. +/// \param[in] timer_id timer ID obtained by \ref osTimerCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osTimerDelete (osTimerId timer_id); +#endif + + +// ==== Mutex Management Functions ==== + +/// Define a Mutex. +/// \param name name of the mutex object. +/// \note CAN BE CHANGED: The parameter to \b osMutexDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osMutexDef(name) \ +extern const osMutexDef_t os_mutex_def_##name +#else // define the object +#if (osCMSIS < 0x20000U) +#define osMutexDef(name) \ +const osMutexDef_t os_mutex_def_##name = { 0 } +#else +#define osMutexDef(name) \ +const osMutexDef_t os_mutex_def_##name = \ +{ NULL, osMutexRecursive | osMutexPrioInherit | osMutexRobust, NULL, 0U } +#endif +#endif + +/// Access a Mutex definition. +/// \param name name of the mutex object. +/// \note CAN BE CHANGED: The parameter to \b osMutex shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osMutex(name) \ +&os_mutex_def_##name + +/// Create and Initialize a Mutex object. +/// \param[in] mutex_def mutex definition referenced with \ref osMutex. +/// \return mutex ID for reference by other functions or NULL in case of error. +osMutexId osMutexCreate (const osMutexDef_t *mutex_def); + +/// Wait until a Mutex becomes available. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osMutexWait (osMutexId mutex_id, uint32_t millisec); +#else +#define osMutexWait osMutexAcquire +#endif + +/// Release a Mutex that was obtained by \ref osMutexWait. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osMutexRelease (osMutexId mutex_id); +#endif + +/// Delete a Mutex object. +/// \param[in] mutex_id mutex ID obtained by \ref osMutexCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osMutexDelete (osMutexId mutex_id); +#endif + + +// ==== Semaphore Management Functions ==== + +#if (defined (osFeature_Semaphore) && (osFeature_Semaphore != 0U)) // Semaphore available + +/// Define a Semaphore object. +/// \param name name of the semaphore object. +/// \note CAN BE CHANGED: The parameter to \b osSemaphoreDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osSemaphoreDef(name) \ +extern const osSemaphoreDef_t os_semaphore_def_##name +#else // define the object +#if (osCMSIS < 0x20000U) +#define osSemaphoreDef(name) \ +const osSemaphoreDef_t os_semaphore_def_##name = { 0 } +#else +#define osSemaphoreDef(name) \ +const osSemaphoreDef_t os_semaphore_def_##name = \ +{ NULL, 0U, NULL, 0U } +#endif +#endif + +/// Access a Semaphore definition. +/// \param name name of the semaphore object. +/// \note CAN BE CHANGED: The parameter to \b osSemaphore shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osSemaphore(name) \ +&os_semaphore_def_##name + +/// Create and Initialize a Semaphore object. +/// \param[in] semaphore_def semaphore definition referenced with \ref osSemaphore. +/// \param[in] count maximum and initial number of available tokens. +/// \return semaphore ID for reference by other functions or NULL in case of error. +osSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count); + +/// Wait until a Semaphore token becomes available. +/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return number of available tokens, or -1 in case of incorrect parameters. +int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec); + +/// Release a Semaphore token. +/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osSemaphoreRelease (osSemaphoreId semaphore_id); +#endif + +/// Delete a Semaphore object. +/// \param[in] semaphore_id semaphore object referenced with \ref osSemaphoreCreate. +/// \return status code that indicates the execution status of the function. +#if (osCMSIS < 0x20000U) +osStatus osSemaphoreDelete (osSemaphoreId semaphore_id); +#endif + +#endif // Semaphore available + + +// ==== Memory Pool Management Functions ==== + +#if (defined(osFeature_Pool) && (osFeature_Pool != 0)) // Memory Pool available + +/// \brief Define a Memory Pool. +/// \param name name of the memory pool. +/// \param no maximum number of blocks (objects) in the memory pool. +/// \param type data type of a single block (object). +/// \note CAN BE CHANGED: The parameter to \b osPoolDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osPoolDef(name, no, type) \ +extern const osPoolDef_t os_pool_def_##name +#else // define the object +#if (osCMSIS < 0x20000U) +#define osPoolDef(name, no, type) \ +const osPoolDef_t os_pool_def_##name = \ +{ (no), sizeof(type), NULL } +#else +#define osPoolDef(name, no, type) \ +const osPoolDef_t os_pool_def_##name = \ +{ (no), sizeof(type), { NULL, 0U, NULL, 0U, NULL, 0U } } +#endif +#endif + +/// \brief Access a Memory Pool definition. +/// \param name name of the memory pool +/// \note CAN BE CHANGED: The parameter to \b osPool shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osPool(name) \ +&os_pool_def_##name + +/// Create and Initialize a Memory Pool object. +/// \param[in] pool_def memory pool definition referenced with \ref osPool. +/// \return memory pool ID for reference by other functions or NULL in case of error. +osPoolId osPoolCreate (const osPoolDef_t *pool_def); + +/// Allocate a memory block from a Memory Pool. +/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. +/// \return address of the allocated memory block or NULL in case of no memory available. +void *osPoolAlloc (osPoolId pool_id); + +/// Allocate a memory block from a Memory Pool and set memory block to zero. +/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. +/// \return address of the allocated memory block or NULL in case of no memory available. +void *osPoolCAlloc (osPoolId pool_id); + +/// Return an allocated memory block back to a Memory Pool. +/// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. +/// \param[in] block address of the allocated memory block to be returned to the memory pool. +/// \return status code that indicates the execution status of the function. +osStatus osPoolFree (osPoolId pool_id, void *block); + +#endif // Memory Pool available + + +// ==== Message Queue Management Functions ==== + +#if (defined(osFeature_MessageQ) && (osFeature_MessageQ != 0)) // Message Queue available + +/// \brief Create a Message Queue Definition. +/// \param name name of the queue. +/// \param queue_sz maximum number of messages in the queue. +/// \param type data type of a single message element (for debugger). +/// \note CAN BE CHANGED: The parameter to \b osMessageQDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osMessageQDef(name, queue_sz, type) \ +extern const osMessageQDef_t os_messageQ_def_##name +#else // define the object +#if (osCMSIS < 0x20000U) +#define osMessageQDef(name, queue_sz, type) \ +const osMessageQDef_t os_messageQ_def_##name = \ +{ (queue_sz), NULL } +#else +#define osMessageQDef(name, queue_sz, type) \ +const osMessageQDef_t os_messageQ_def_##name = \ +{ (queue_sz), { NULL, 0U, NULL, 0U, NULL, 0U } } +#endif +#endif + +/// \brief Access a Message Queue Definition. +/// \param name name of the queue +/// \note CAN BE CHANGED: The parameter to \b osMessageQ shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osMessageQ(name) \ +&os_messageQ_def_##name + +/// Create and Initialize a Message Queue object. +/// \param[in] queue_def message queue definition referenced with \ref osMessageQ. +/// \param[in] thread_id thread ID (obtained by \ref osThreadCreate or \ref osThreadGetId) or NULL. +/// \return message queue ID for reference by other functions or NULL in case of error. +osMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id); + +/// Put a Message to a Queue. +/// \param[in] queue_id message queue ID obtained with \ref osMessageCreate. +/// \param[in] info message information. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return status code that indicates the execution status of the function. +osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec); + +/// Get a Message from a Queue or timeout if Queue is empty. +/// \param[in] queue_id message queue ID obtained with \ref osMessageCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return event information that includes status code. +osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec); + +#endif // Message Queue available + + +// ==== Mail Queue Management Functions ==== + +#if (defined(osFeature_MailQ) && (osFeature_MailQ != 0)) // Mail Queue available + +/// \brief Create a Mail Queue Definition. +/// \param name name of the queue. +/// \param queue_sz maximum number of mails in the queue. +/// \param type data type of a single mail element. +/// \note CAN BE CHANGED: The parameter to \b osMailQDef shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#if defined (osObjectsExternal) // object is external +#define osMailQDef(name, queue_sz, type) \ +extern const osMailQDef_t os_mailQ_def_##name +#else // define the object +#if (osCMSIS < 0x20000U) +#define osMailQDef(name, queue_sz, type) \ +const osMailQDef_t os_mailQ_def_##name = \ +{ (queue_sz), sizeof(type), NULL } +#else +#define osMailQDef(name, queue_sz, type) \ +static void *os_mail_p_##name[2]; \ +const osMailQDef_t os_mailQ_def_##name = \ +{ (queue_sz), sizeof(type), (&os_mail_p_##name), \ + { NULL, 0U, NULL, 0U, NULL, 0U }, \ + { NULL, 0U, NULL, 0U, NULL, 0U } } +#endif +#endif + +/// \brief Access a Mail Queue Definition. +/// \param name name of the queue +/// \note CAN BE CHANGED: The parameter to \b osMailQ shall be consistent but the +/// macro body is implementation specific in every CMSIS-RTOS. +#define osMailQ(name) \ +&os_mailQ_def_##name + +/// Create and Initialize a Mail Queue object. +/// \param[in] queue_def mail queue definition referenced with \ref osMailQ. +/// \param[in] thread_id thread ID (obtained by \ref osThreadCreate or \ref osThreadGetId) or NULL. +/// \return mail queue ID for reference by other functions or NULL in case of error. +osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id); + +/// Allocate a memory block for mail from a mail memory pool. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out +/// \return pointer to memory block that can be filled with mail or NULL in case of error. +void *osMailAlloc (osMailQId queue_id, uint32_t millisec); + +/// Allocate a memory block for mail from a mail memory pool and set memory block to zero. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out +/// \return pointer to memory block that can be filled with mail or NULL in case of error. +void *osMailCAlloc (osMailQId queue_id, uint32_t millisec); + +/// Put a Mail into a Queue. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] mail pointer to memory with mail to put into a queue. +/// \return status code that indicates the execution status of the function. +osStatus osMailPut (osMailQId queue_id, const void *mail); + +/// Get a Mail from a Queue or timeout if Queue is empty. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] millisec \ref CMSIS_RTOS_TimeOutValue or 0 in case of no time-out. +/// \return event information that includes status code. +osEvent osMailGet (osMailQId queue_id, uint32_t millisec); + +/// Free a memory block by returning it to a mail memory pool. +/// \param[in] queue_id mail queue ID obtained with \ref osMailCreate. +/// \param[in] mail pointer to memory block that was obtained with \ref osMailGet. +/// \return status code that indicates the execution status of the function. +osStatus osMailFree (osMailQId queue_id, void *mail); + +#endif // Mail Queue available + + +#ifdef __cplusplus +} +#endif + +#endif // CMSIS_OS_H_ diff --git a/Drivers/CMSIS/RTOS2/Template/cmsis_os1.c b/Drivers/CMSIS/RTOS2/Template/cmsis_os1.c new file mode 100644 index 0000000..effe4a1 --- /dev/null +++ b/Drivers/CMSIS/RTOS2/Template/cmsis_os1.c @@ -0,0 +1,361 @@ +/* + * Copyright (c) 2013-2017 ARM Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ---------------------------------------------------------------------- + * + * $Date: 10. January 2017 + * $Revision: V1.2 + * + * Project: CMSIS-RTOS API V1 + * Title: cmsis_os_v1.c V1 module file + *---------------------------------------------------------------------------*/ + +#include +#include "cmsis_os.h" + +#if (osCMSIS >= 0x20000U) + + +// Thread +osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument) { + + if (thread_def == NULL) { + return (osThreadId)NULL; + } + return osThreadNew((osThreadFunc_t)thread_def->pthread, argument, &thread_def->attr); +} + + +// Signals + +#define SignalMask ((1U< 0U) && (flags < 0x80000000U)) { + event.status = osEventSignal; + event.value.signals = (int32_t)flags; + } else { + switch ((int32_t)flags) { + case osErrorResource: + event.status = osOK; + break; + case osErrorTimeout: + event.status = osEventTimeout; + break; + case osErrorParameter: + event.status = osErrorValue; + break; + default: + event.status = (osStatus)flags; + break; + } + } + return event; +} + + +// Timer +osTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument) { + + if (timer_def == NULL) { + return (osTimerId)NULL; + } + return osTimerNew((osTimerFunc_t)timer_def->ptimer, type, argument, &timer_def->attr); +} + + +// Mutex +osMutexId osMutexCreate (const osMutexDef_t *mutex_def) { + + if (mutex_def == NULL) { + return (osMutexId)NULL; + } + return osMutexNew(mutex_def); +} + + +// Semaphore + +#if (defined (osFeature_Semaphore) && (osFeature_Semaphore != 0U)) + +osSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count) { + + if (semaphore_def == NULL) { + return (osSemaphoreId)NULL; + } + return osSemaphoreNew((uint32_t)count, (uint32_t)count, semaphore_def); +} + +int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec) { + osStatus_t status; + uint32_t count; + + status = osSemaphoreAcquire(semaphore_id, millisec); + switch (status) { + case osOK: + count = osSemaphoreGetCount(semaphore_id); + return ((int32_t)count + 1); + case osErrorResource: + case osErrorTimeout: + return 0; + default: + break; + } + return -1; +} + +#endif // Semaphore + + +// Memory Pool + +#if (defined(osFeature_Pool) && (osFeature_Pool != 0)) + +osPoolId osPoolCreate (const osPoolDef_t *pool_def) { + + if (pool_def == NULL) { + return (osPoolId)NULL; + } + return ((osPoolId)(osMemoryPoolNew(pool_def->pool_sz, pool_def->item_sz, &pool_def->attr))); +} + +void *osPoolAlloc (osPoolId pool_id) { + return osMemoryPoolAlloc((osMemoryPoolId_t)pool_id, 0U); +} + +void *osPoolCAlloc (osPoolId pool_id) { + void *block; + uint32_t block_size; + + block_size = osMemoryPoolGetBlockSize((osMemoryPoolId_t)pool_id); + if (block_size == 0U) { + return NULL; + } + block = osMemoryPoolAlloc((osMemoryPoolId_t)pool_id, 0U); + if (block != NULL) { + memset(block, 0, block_size); + } + return block; +} + +osStatus osPoolFree (osPoolId pool_id, void *block) { + return osMemoryPoolFree((osMemoryPoolId_t)pool_id, block); +} + +#endif // Memory Pool + + +// Message Queue + +#if (defined(osFeature_MessageQ) && (osFeature_MessageQ != 0)) + +osMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id) { + (void)thread_id; + + if (queue_def == NULL) { + return (osMessageQId)NULL; + } + return ((osMessageQId)(osMessageQueueNew(queue_def->queue_sz, sizeof(uint32_t), &queue_def->attr))); +} + +osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec) { + return osMessageQueuePut((osMessageQueueId_t)queue_id, &info, 0U, millisec); +} + +osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec) { + osStatus_t status; + osEvent event; + uint32_t message; + + status = osMessageQueueGet((osMessageQueueId_t)queue_id, &message, NULL, millisec); + switch (status) { + case osOK: + event.status = osEventMessage; + event.value.v = message; + break; + case osErrorResource: + event.status = osOK; + break; + case osErrorTimeout: + event.status = osEventTimeout; + break; + default: + event.status = status; + break; + } + return event; +} + +#endif // Message Queue + + +// Mail Queue + +#if (defined(osFeature_MailQ) && (osFeature_MailQ != 0)) + +typedef struct os_mail_queue_s { + osMemoryPoolId_t mp_id; + osMessageQueueId_t mq_id; +} os_mail_queue_t; + +osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id) { + os_mail_queue_t *ptr; + (void)thread_id; + + if (queue_def == NULL) { + return (osMailQId)NULL; + } + + ptr = queue_def->mail; + if (ptr == NULL) { + return (osMailQId)NULL; + } + + ptr->mp_id = osMemoryPoolNew (queue_def->queue_sz, queue_def->item_sz, &queue_def->mp_attr); + ptr->mq_id = osMessageQueueNew(queue_def->queue_sz, sizeof(void *), &queue_def->mq_attr); + if ((ptr->mp_id == (osMemoryPoolId_t)NULL) || (ptr->mq_id == (osMessageQueueId_t)NULL)) { + if (ptr->mp_id != (osMemoryPoolId_t)NULL) { + osMemoryPoolDelete(ptr->mp_id); + } + if (ptr->mq_id != (osMessageQueueId_t)NULL) { + osMessageQueueDelete(ptr->mq_id); + } + return (osMailQId)NULL; + } + + return (osMailQId)ptr; +} + +void *osMailAlloc (osMailQId queue_id, uint32_t millisec) { + os_mail_queue_t *ptr = (os_mail_queue_t *)queue_id; + + if (ptr == NULL) { + return NULL; + } + return osMemoryPoolAlloc(ptr->mp_id, millisec); +} + +void *osMailCAlloc (osMailQId queue_id, uint32_t millisec) { + os_mail_queue_t *ptr = (os_mail_queue_t *)queue_id; + void *block; + uint32_t block_size; + + if (ptr == NULL) { + return NULL; + } + block_size = osMemoryPoolGetBlockSize(ptr->mp_id); + if (block_size == 0U) { + return NULL; + } + block = osMemoryPoolAlloc(ptr->mp_id, millisec); + if (block != NULL) { + memset(block, 0, block_size); + } + + return block; + +} + +osStatus osMailPut (osMailQId queue_id, const void *mail) { + os_mail_queue_t *ptr = (os_mail_queue_t *)queue_id; + + if (ptr == NULL) { + return osErrorParameter; + } + if (mail == NULL) { + return osErrorValue; + } + return osMessageQueuePut(ptr->mq_id, &mail, 0U, 0U); +} + +osEvent osMailGet (osMailQId queue_id, uint32_t millisec) { + os_mail_queue_t *ptr = (os_mail_queue_t *)queue_id; + osStatus_t status; + osEvent event; + void *mail; + + if (ptr == NULL) { + event.status = osErrorParameter; + return event; + } + + status = osMessageQueueGet(ptr->mq_id, &mail, NULL, millisec); + switch (status) { + case osOK: + event.status = osEventMail; + event.value.p = mail; + break; + case osErrorResource: + event.status = osOK; + break; + case osErrorTimeout: + event.status = osEventTimeout; + break; + default: + event.status = status; + break; + } + return event; +} + +osStatus osMailFree (osMailQId queue_id, void *mail) { + os_mail_queue_t *ptr = (os_mail_queue_t *)queue_id; + + if (ptr == NULL) { + return osErrorParameter; + } + if (mail == NULL) { + return osErrorValue; + } + return osMemoryPoolFree(ptr->mp_id, mail); +} + +#endif // Mail Queue + + +#endif // osCMSIS diff --git a/Drivers/CMSIS/docs/General/html/LICENSE.txt b/Drivers/CMSIS/docs/General/html/LICENSE.txt new file mode 100644 index 0000000..c0ee812 --- /dev/null +++ b/Drivers/CMSIS/docs/General/html/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h b/Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h new file mode 100644 index 0000000..ea1539b --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h @@ -0,0 +1,4353 @@ +/** + ****************************************************************************** + * @file stm32_hal_legacy.h + * @author MCD Application Team + * @brief This file contains aliases definition for the STM32Cube HAL constants + * macros and functions maintained for legacy purpose. + ****************************************************************************** + * @attention + * + * Copyright (c) 2021 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32_HAL_LEGACY +#define STM32_HAL_LEGACY + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup HAL_AES_Aliased_Defines HAL CRYP Aliased Defines maintained for legacy purpose + * @{ + */ +#define AES_FLAG_RDERR CRYP_FLAG_RDERR +#define AES_FLAG_WRERR CRYP_FLAG_WRERR +#define AES_CLEARFLAG_CCF CRYP_CLEARFLAG_CCF +#define AES_CLEARFLAG_RDERR CRYP_CLEARFLAG_RDERR +#define AES_CLEARFLAG_WRERR CRYP_CLEARFLAG_WRERR +#if defined(STM32H7) || defined(STM32MP1) +#define CRYP_DATATYPE_32B CRYP_NO_SWAP +#define CRYP_DATATYPE_16B CRYP_HALFWORD_SWAP +#define CRYP_DATATYPE_8B CRYP_BYTE_SWAP +#define CRYP_DATATYPE_1B CRYP_BIT_SWAP +#endif /* STM32H7 || STM32MP1 */ +/** + * @} + */ + +/** @defgroup HAL_ADC_Aliased_Defines HAL ADC Aliased Defines maintained for legacy purpose + * @{ + */ +#define ADC_RESOLUTION12b ADC_RESOLUTION_12B +#define ADC_RESOLUTION10b ADC_RESOLUTION_10B +#define ADC_RESOLUTION8b ADC_RESOLUTION_8B +#define ADC_RESOLUTION6b ADC_RESOLUTION_6B +#define OVR_DATA_OVERWRITTEN ADC_OVR_DATA_OVERWRITTEN +#define OVR_DATA_PRESERVED ADC_OVR_DATA_PRESERVED +#define EOC_SINGLE_CONV ADC_EOC_SINGLE_CONV +#define EOC_SEQ_CONV ADC_EOC_SEQ_CONV +#define EOC_SINGLE_SEQ_CONV ADC_EOC_SINGLE_SEQ_CONV +#define REGULAR_GROUP ADC_REGULAR_GROUP +#define INJECTED_GROUP ADC_INJECTED_GROUP +#define REGULAR_INJECTED_GROUP ADC_REGULAR_INJECTED_GROUP +#define AWD_EVENT ADC_AWD_EVENT +#define AWD1_EVENT ADC_AWD1_EVENT +#define AWD2_EVENT ADC_AWD2_EVENT +#define AWD3_EVENT ADC_AWD3_EVENT +#define OVR_EVENT ADC_OVR_EVENT +#define JQOVF_EVENT ADC_JQOVF_EVENT +#define ALL_CHANNELS ADC_ALL_CHANNELS +#define REGULAR_CHANNELS ADC_REGULAR_CHANNELS +#define INJECTED_CHANNELS ADC_INJECTED_CHANNELS +#define SYSCFG_FLAG_SENSOR_ADC ADC_FLAG_SENSOR +#define SYSCFG_FLAG_VREF_ADC ADC_FLAG_VREFINT +#define ADC_CLOCKPRESCALER_PCLK_DIV1 ADC_CLOCK_SYNC_PCLK_DIV1 +#define ADC_CLOCKPRESCALER_PCLK_DIV2 ADC_CLOCK_SYNC_PCLK_DIV2 +#define ADC_CLOCKPRESCALER_PCLK_DIV4 ADC_CLOCK_SYNC_PCLK_DIV4 +#define ADC_CLOCKPRESCALER_PCLK_DIV6 ADC_CLOCK_SYNC_PCLK_DIV6 +#define ADC_CLOCKPRESCALER_PCLK_DIV8 ADC_CLOCK_SYNC_PCLK_DIV8 +#define ADC_EXTERNALTRIG0_T6_TRGO ADC_EXTERNALTRIGCONV_T6_TRGO +#define ADC_EXTERNALTRIG1_T21_CC2 ADC_EXTERNALTRIGCONV_T21_CC2 +#define ADC_EXTERNALTRIG2_T2_TRGO ADC_EXTERNALTRIGCONV_T2_TRGO +#define ADC_EXTERNALTRIG3_T2_CC4 ADC_EXTERNALTRIGCONV_T2_CC4 +#define ADC_EXTERNALTRIG4_T22_TRGO ADC_EXTERNALTRIGCONV_T22_TRGO +#define ADC_EXTERNALTRIG7_EXT_IT11 ADC_EXTERNALTRIGCONV_EXT_IT11 +#define ADC_CLOCK_ASYNC ADC_CLOCK_ASYNC_DIV1 +#define ADC_EXTERNALTRIG_EDGE_NONE ADC_EXTERNALTRIGCONVEDGE_NONE +#define ADC_EXTERNALTRIG_EDGE_RISING ADC_EXTERNALTRIGCONVEDGE_RISING +#define ADC_EXTERNALTRIG_EDGE_FALLING ADC_EXTERNALTRIGCONVEDGE_FALLING +#define ADC_EXTERNALTRIG_EDGE_RISINGFALLING ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING +#define ADC_SAMPLETIME_2CYCLE_5 ADC_SAMPLETIME_2CYCLES_5 + +#define HAL_ADC_STATE_BUSY_REG HAL_ADC_STATE_REG_BUSY +#define HAL_ADC_STATE_BUSY_INJ HAL_ADC_STATE_INJ_BUSY +#define HAL_ADC_STATE_EOC_REG HAL_ADC_STATE_REG_EOC +#define HAL_ADC_STATE_EOC_INJ HAL_ADC_STATE_INJ_EOC +#define HAL_ADC_STATE_ERROR HAL_ADC_STATE_ERROR_INTERNAL +#define HAL_ADC_STATE_BUSY HAL_ADC_STATE_BUSY_INTERNAL +#define HAL_ADC_STATE_AWD HAL_ADC_STATE_AWD1 + +#if defined(STM32H7) +#define ADC_CHANNEL_VBAT_DIV4 ADC_CHANNEL_VBAT +#endif /* STM32H7 */ + +#if defined(STM32U5) +#define ADC_SAMPLETIME_5CYCLE ADC_SAMPLETIME_5CYCLES +#define ADC_SAMPLETIME_391CYCLES_5 ADC_SAMPLETIME_391CYCLES +#define ADC4_SAMPLETIME_160CYCLES_5 ADC4_SAMPLETIME_814CYCLES_5 +#endif /* STM32U5 */ + +#if defined(STM32H5) +#define ADC_CHANNEL_VCORE ADC_CHANNEL_VDDCORE +#endif /* STM32H5 */ +/** + * @} + */ + +/** @defgroup HAL_CEC_Aliased_Defines HAL CEC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define __HAL_CEC_GET_IT __HAL_CEC_GET_FLAG + +/** + * @} + */ + +/** @defgroup HAL_COMP_Aliased_Defines HAL COMP Aliased Defines maintained for legacy purpose + * @{ + */ +#define COMP_WINDOWMODE_DISABLED COMP_WINDOWMODE_DISABLE +#define COMP_WINDOWMODE_ENABLED COMP_WINDOWMODE_ENABLE +#define COMP_EXTI_LINE_COMP1_EVENT COMP_EXTI_LINE_COMP1 +#define COMP_EXTI_LINE_COMP2_EVENT COMP_EXTI_LINE_COMP2 +#define COMP_EXTI_LINE_COMP3_EVENT COMP_EXTI_LINE_COMP3 +#define COMP_EXTI_LINE_COMP4_EVENT COMP_EXTI_LINE_COMP4 +#define COMP_EXTI_LINE_COMP5_EVENT COMP_EXTI_LINE_COMP5 +#define COMP_EXTI_LINE_COMP6_EVENT COMP_EXTI_LINE_COMP6 +#define COMP_EXTI_LINE_COMP7_EVENT COMP_EXTI_LINE_COMP7 +#if defined(STM32L0) +#define COMP_LPTIMCONNECTION_ENABLED ((uint32_t)0x00000003U) /*!< COMPX output generic naming: connected to LPTIM + input 1 for COMP1, LPTIM input 2 for COMP2 */ +#endif +#define COMP_OUTPUT_COMP6TIM2OCREFCLR COMP_OUTPUT_COMP6_TIM2OCREFCLR +#if defined(STM32F373xC) || defined(STM32F378xx) +#define COMP_OUTPUT_TIM3IC1 COMP_OUTPUT_COMP1_TIM3IC1 +#define COMP_OUTPUT_TIM3OCREFCLR COMP_OUTPUT_COMP1_TIM3OCREFCLR +#endif /* STM32F373xC || STM32F378xx */ + +#if defined(STM32L0) || defined(STM32L4) +#define COMP_WINDOWMODE_ENABLE COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON + +#define COMP_NONINVERTINGINPUT_IO1 COMP_INPUT_PLUS_IO1 +#define COMP_NONINVERTINGINPUT_IO2 COMP_INPUT_PLUS_IO2 +#define COMP_NONINVERTINGINPUT_IO3 COMP_INPUT_PLUS_IO3 +#define COMP_NONINVERTINGINPUT_IO4 COMP_INPUT_PLUS_IO4 +#define COMP_NONINVERTINGINPUT_IO5 COMP_INPUT_PLUS_IO5 +#define COMP_NONINVERTINGINPUT_IO6 COMP_INPUT_PLUS_IO6 + +#define COMP_INVERTINGINPUT_1_4VREFINT COMP_INPUT_MINUS_1_4VREFINT +#define COMP_INVERTINGINPUT_1_2VREFINT COMP_INPUT_MINUS_1_2VREFINT +#define COMP_INVERTINGINPUT_3_4VREFINT COMP_INPUT_MINUS_3_4VREFINT +#define COMP_INVERTINGINPUT_VREFINT COMP_INPUT_MINUS_VREFINT +#define COMP_INVERTINGINPUT_DAC1_CH1 COMP_INPUT_MINUS_DAC1_CH1 +#define COMP_INVERTINGINPUT_DAC1_CH2 COMP_INPUT_MINUS_DAC1_CH2 +#define COMP_INVERTINGINPUT_DAC1 COMP_INPUT_MINUS_DAC1_CH1 +#define COMP_INVERTINGINPUT_DAC2 COMP_INPUT_MINUS_DAC1_CH2 +#define COMP_INVERTINGINPUT_IO1 COMP_INPUT_MINUS_IO1 +#if defined(STM32L0) +/* Issue fixed on STM32L0 COMP driver: only 2 dedicated IO (IO1 and IO2), */ +/* IO2 was wrongly assigned to IO shared with DAC and IO3 was corresponding */ +/* to the second dedicated IO (only for COMP2). */ +#define COMP_INVERTINGINPUT_IO2 COMP_INPUT_MINUS_DAC1_CH2 +#define COMP_INVERTINGINPUT_IO3 COMP_INPUT_MINUS_IO2 +#else +#define COMP_INVERTINGINPUT_IO2 COMP_INPUT_MINUS_IO2 +#define COMP_INVERTINGINPUT_IO3 COMP_INPUT_MINUS_IO3 +#endif +#define COMP_INVERTINGINPUT_IO4 COMP_INPUT_MINUS_IO4 +#define COMP_INVERTINGINPUT_IO5 COMP_INPUT_MINUS_IO5 + +#define COMP_OUTPUTLEVEL_LOW COMP_OUTPUT_LEVEL_LOW +#define COMP_OUTPUTLEVEL_HIGH COMP_OUTPUT_LEVEL_HIGH + +/* Note: Literal "COMP_FLAG_LOCK" kept for legacy purpose. */ +/* To check COMP lock state, use macro "__HAL_COMP_IS_LOCKED()". */ +#if defined(COMP_CSR_LOCK) +#define COMP_FLAG_LOCK COMP_CSR_LOCK +#elif defined(COMP_CSR_COMP1LOCK) +#define COMP_FLAG_LOCK COMP_CSR_COMP1LOCK +#elif defined(COMP_CSR_COMPxLOCK) +#define COMP_FLAG_LOCK COMP_CSR_COMPxLOCK +#endif + +#if defined(STM32L4) +#define COMP_BLANKINGSRCE_TIM1OC5 COMP_BLANKINGSRC_TIM1_OC5_COMP1 +#define COMP_BLANKINGSRCE_TIM2OC3 COMP_BLANKINGSRC_TIM2_OC3_COMP1 +#define COMP_BLANKINGSRCE_TIM3OC3 COMP_BLANKINGSRC_TIM3_OC3_COMP1 +#define COMP_BLANKINGSRCE_TIM3OC4 COMP_BLANKINGSRC_TIM3_OC4_COMP2 +#define COMP_BLANKINGSRCE_TIM8OC5 COMP_BLANKINGSRC_TIM8_OC5_COMP2 +#define COMP_BLANKINGSRCE_TIM15OC1 COMP_BLANKINGSRC_TIM15_OC1_COMP2 +#define COMP_BLANKINGSRCE_NONE COMP_BLANKINGSRC_NONE +#endif + +#if defined(STM32L0) +#define COMP_MODE_HIGHSPEED COMP_POWERMODE_MEDIUMSPEED +#define COMP_MODE_LOWSPEED COMP_POWERMODE_ULTRALOWPOWER +#else +#define COMP_MODE_HIGHSPEED COMP_POWERMODE_HIGHSPEED +#define COMP_MODE_MEDIUMSPEED COMP_POWERMODE_MEDIUMSPEED +#define COMP_MODE_LOWPOWER COMP_POWERMODE_LOWPOWER +#define COMP_MODE_ULTRALOWPOWER COMP_POWERMODE_ULTRALOWPOWER +#endif + +#endif + +#if defined(STM32U5) +#define __HAL_COMP_COMP1_EXTI_CLEAR_RASING_FLAG __HAL_COMP_COMP1_EXTI_CLEAR_RISING_FLAG +#endif + +/** + * @} + */ + +/** @defgroup HAL_CORTEX_Aliased_Defines HAL CORTEX Aliased Defines maintained for legacy purpose + * @{ + */ +#define __HAL_CORTEX_SYSTICKCLK_CONFIG HAL_SYSTICK_CLKSourceConfig +#if defined(STM32U5) +#define MPU_DEVICE_nGnRnE MPU_DEVICE_NGNRNE +#define MPU_DEVICE_nGnRE MPU_DEVICE_NGNRE +#define MPU_DEVICE_nGRE MPU_DEVICE_NGRE +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup CRC_Aliases CRC API aliases + * @{ + */ +#if defined(STM32H5) || defined(STM32C0) +#else +#define HAL_CRC_Input_Data_Reverse HAL_CRCEx_Input_Data_Reverse /*!< Aliased to HAL_CRCEx_Input_Data_Reverse for + inter STM32 series compatibility */ +#define HAL_CRC_Output_Data_Reverse HAL_CRCEx_Output_Data_Reverse /*!< Aliased to HAL_CRCEx_Output_Data_Reverse for + inter STM32 series compatibility */ +#endif +/** + * @} + */ + +/** @defgroup HAL_CRC_Aliased_Defines HAL CRC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define CRC_OUTPUTDATA_INVERSION_DISABLED CRC_OUTPUTDATA_INVERSION_DISABLE +#define CRC_OUTPUTDATA_INVERSION_ENABLED CRC_OUTPUTDATA_INVERSION_ENABLE + +/** + * @} + */ + +/** @defgroup HAL_DAC_Aliased_Defines HAL DAC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define DAC1_CHANNEL_1 DAC_CHANNEL_1 +#define DAC1_CHANNEL_2 DAC_CHANNEL_2 +#define DAC2_CHANNEL_1 DAC_CHANNEL_1 +#define DAC_WAVE_NONE 0x00000000U +#define DAC_WAVE_NOISE DAC_CR_WAVE1_0 +#define DAC_WAVE_TRIANGLE DAC_CR_WAVE1_1 +#define DAC_WAVEGENERATION_NONE DAC_WAVE_NONE +#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE +#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE + +#if defined(STM32G4) || defined(STM32H7) || defined (STM32U5) +#define DAC_CHIPCONNECT_DISABLE DAC_CHIPCONNECT_EXTERNAL +#define DAC_CHIPCONNECT_ENABLE DAC_CHIPCONNECT_INTERNAL +#endif + +#if defined(STM32U5) +#define DAC_TRIGGER_STOP_LPTIM1_OUT DAC_TRIGGER_STOP_LPTIM1_CH1 +#define DAC_TRIGGER_STOP_LPTIM3_OUT DAC_TRIGGER_STOP_LPTIM3_CH1 +#define DAC_TRIGGER_LPTIM1_OUT DAC_TRIGGER_LPTIM1_CH1 +#define DAC_TRIGGER_LPTIM3_OUT DAC_TRIGGER_LPTIM3_CH1 +#endif + +#if defined(STM32H5) +#define DAC_TRIGGER_LPTIM1_OUT DAC_TRIGGER_LPTIM1_CH1 +#define DAC_TRIGGER_LPTIM2_OUT DAC_TRIGGER_LPTIM2_CH1 +#endif + +#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32L5) || defined(STM32H7) || \ + defined(STM32F4) || defined(STM32G4) +#define HAL_DAC_MSP_INIT_CB_ID HAL_DAC_MSPINIT_CB_ID +#define HAL_DAC_MSP_DEINIT_CB_ID HAL_DAC_MSPDEINIT_CB_ID +#endif + +/** + * @} + */ + +/** @defgroup HAL_DMA_Aliased_Defines HAL DMA Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_REMAPDMA_ADC_DMA_CH2 DMA_REMAP_ADC_DMA_CH2 +#define HAL_REMAPDMA_USART1_TX_DMA_CH4 DMA_REMAP_USART1_TX_DMA_CH4 +#define HAL_REMAPDMA_USART1_RX_DMA_CH5 DMA_REMAP_USART1_RX_DMA_CH5 +#define HAL_REMAPDMA_TIM16_DMA_CH4 DMA_REMAP_TIM16_DMA_CH4 +#define HAL_REMAPDMA_TIM17_DMA_CH2 DMA_REMAP_TIM17_DMA_CH2 +#define HAL_REMAPDMA_USART3_DMA_CH32 DMA_REMAP_USART3_DMA_CH32 +#define HAL_REMAPDMA_TIM16_DMA_CH6 DMA_REMAP_TIM16_DMA_CH6 +#define HAL_REMAPDMA_TIM17_DMA_CH7 DMA_REMAP_TIM17_DMA_CH7 +#define HAL_REMAPDMA_SPI2_DMA_CH67 DMA_REMAP_SPI2_DMA_CH67 +#define HAL_REMAPDMA_USART2_DMA_CH67 DMA_REMAP_USART2_DMA_CH67 +#define HAL_REMAPDMA_I2C1_DMA_CH76 DMA_REMAP_I2C1_DMA_CH76 +#define HAL_REMAPDMA_TIM1_DMA_CH6 DMA_REMAP_TIM1_DMA_CH6 +#define HAL_REMAPDMA_TIM2_DMA_CH7 DMA_REMAP_TIM2_DMA_CH7 +#define HAL_REMAPDMA_TIM3_DMA_CH6 DMA_REMAP_TIM3_DMA_CH6 + +#define IS_HAL_REMAPDMA IS_DMA_REMAP +#define __HAL_REMAPDMA_CHANNEL_ENABLE __HAL_DMA_REMAP_CHANNEL_ENABLE +#define __HAL_REMAPDMA_CHANNEL_DISABLE __HAL_DMA_REMAP_CHANNEL_DISABLE + +#if defined(STM32L4) + +#define HAL_DMAMUX1_REQUEST_GEN_EXTI0 HAL_DMAMUX1_REQ_GEN_EXTI0 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI1 HAL_DMAMUX1_REQ_GEN_EXTI1 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI2 HAL_DMAMUX1_REQ_GEN_EXTI2 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI3 HAL_DMAMUX1_REQ_GEN_EXTI3 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI4 HAL_DMAMUX1_REQ_GEN_EXTI4 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI5 HAL_DMAMUX1_REQ_GEN_EXTI5 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI6 HAL_DMAMUX1_REQ_GEN_EXTI6 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI7 HAL_DMAMUX1_REQ_GEN_EXTI7 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI8 HAL_DMAMUX1_REQ_GEN_EXTI8 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI9 HAL_DMAMUX1_REQ_GEN_EXTI9 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI10 HAL_DMAMUX1_REQ_GEN_EXTI10 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI11 HAL_DMAMUX1_REQ_GEN_EXTI11 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI12 HAL_DMAMUX1_REQ_GEN_EXTI12 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI13 HAL_DMAMUX1_REQ_GEN_EXTI13 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI14 HAL_DMAMUX1_REQ_GEN_EXTI14 +#define HAL_DMAMUX1_REQUEST_GEN_EXTI15 HAL_DMAMUX1_REQ_GEN_EXTI15 +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH0_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH1_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH2_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH3_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH3_EVT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM1_OUT HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT +#define HAL_DMAMUX1_REQUEST_GEN_DSI_TE HAL_DMAMUX1_REQ_GEN_DSI_TE +#define HAL_DMAMUX1_REQUEST_GEN_DSI_EOT HAL_DMAMUX1_REQ_GEN_DSI_EOT +#define HAL_DMAMUX1_REQUEST_GEN_DMA2D_EOT HAL_DMAMUX1_REQ_GEN_DMA2D_EOT +#define HAL_DMAMUX1_REQUEST_GEN_LTDC_IT HAL_DMAMUX1_REQ_GEN_LTDC_IT + +#define HAL_DMAMUX_REQUEST_GEN_NO_EVENT HAL_DMAMUX_REQ_GEN_NO_EVENT +#define HAL_DMAMUX_REQUEST_GEN_RISING HAL_DMAMUX_REQ_GEN_RISING +#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING +#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING + +#if defined(STM32L4R5xx) || defined(STM32L4R9xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || \ + defined(STM32L4S7xx) || defined(STM32L4S9xx) +#define DMA_REQUEST_DCMI_PSSI DMA_REQUEST_DCMI +#endif + +#endif /* STM32L4 */ + +#if defined(STM32G0) +#define DMA_REQUEST_DAC1_CHANNEL1 DMA_REQUEST_DAC1_CH1 +#define DMA_REQUEST_DAC1_CHANNEL2 DMA_REQUEST_DAC1_CH2 +#define DMA_REQUEST_TIM16_TRIG_COM DMA_REQUEST_TIM16_COM +#define DMA_REQUEST_TIM17_TRIG_COM DMA_REQUEST_TIM17_COM + +#define LL_DMAMUX_REQ_TIM16_TRIG_COM LL_DMAMUX_REQ_TIM16_COM +#define LL_DMAMUX_REQ_TIM17_TRIG_COM LL_DMAMUX_REQ_TIM17_COM +#endif + +#if defined(STM32H7) + +#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1 +#define DMA_REQUEST_DAC2 DMA_REQUEST_DAC1_CH2 + +#define BDMA_REQUEST_LP_UART1_RX BDMA_REQUEST_LPUART1_RX +#define BDMA_REQUEST_LP_UART1_TX BDMA_REQUEST_LPUART1_TX + +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH0_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH1_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT +#define HAL_DMAMUX1_REQUEST_GEN_DMAMUX1_CH2_EVT HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM1_OUT HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT +#define HAL_DMAMUX1_REQUEST_GEN_LPTIM3_OUT HAL_DMAMUX1_REQ_GEN_LPTIM3_OUT +#define HAL_DMAMUX1_REQUEST_GEN_EXTI0 HAL_DMAMUX1_REQ_GEN_EXTI0 +#define HAL_DMAMUX1_REQUEST_GEN_TIM12_TRGO HAL_DMAMUX1_REQ_GEN_TIM12_TRGO + +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH0_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH0_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH1_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH1_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH2_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH2_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH3_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH3_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH4_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH4_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH5_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH5_EVT +#define HAL_DMAMUX2_REQUEST_GEN_DMAMUX2_CH6_EVT HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH6_EVT +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_RX_WKUP HAL_DMAMUX2_REQ_GEN_LPUART1_RX_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_TX_WKUP HAL_DMAMUX2_REQ_GEN_LPUART1_TX_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM2_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM2_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM2_OUT HAL_DMAMUX2_REQ_GEN_LPTIM2_OUT +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM3_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM3_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM3_OUT HAL_DMAMUX2_REQ_GEN_LPTIM3_OUT +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM4_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM4_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_LPTIM5_WKUP HAL_DMAMUX2_REQ_GEN_LPTIM5_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_I2C4_WKUP HAL_DMAMUX2_REQ_GEN_I2C4_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_SPI6_WKUP HAL_DMAMUX2_REQ_GEN_SPI6_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_COMP1_OUT HAL_DMAMUX2_REQ_GEN_COMP1_OUT +#define HAL_DMAMUX2_REQUEST_GEN_COMP2_OUT HAL_DMAMUX2_REQ_GEN_COMP2_OUT +#define HAL_DMAMUX2_REQUEST_GEN_RTC_WKUP HAL_DMAMUX2_REQ_GEN_RTC_WKUP +#define HAL_DMAMUX2_REQUEST_GEN_EXTI0 HAL_DMAMUX2_REQ_GEN_EXTI0 +#define HAL_DMAMUX2_REQUEST_GEN_EXTI2 HAL_DMAMUX2_REQ_GEN_EXTI2 +#define HAL_DMAMUX2_REQUEST_GEN_I2C4_IT_EVT HAL_DMAMUX2_REQ_GEN_I2C4_IT_EVT +#define HAL_DMAMUX2_REQUEST_GEN_SPI6_IT HAL_DMAMUX2_REQ_GEN_SPI6_IT +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_TX_IT HAL_DMAMUX2_REQ_GEN_LPUART1_TX_IT +#define HAL_DMAMUX2_REQUEST_GEN_LPUART1_RX_IT HAL_DMAMUX2_REQ_GEN_LPUART1_RX_IT +#define HAL_DMAMUX2_REQUEST_GEN_ADC3_IT HAL_DMAMUX2_REQ_GEN_ADC3_IT +#define HAL_DMAMUX2_REQUEST_GEN_ADC3_AWD1_OUT HAL_DMAMUX2_REQ_GEN_ADC3_AWD1_OUT +#define HAL_DMAMUX2_REQUEST_GEN_BDMA_CH0_IT HAL_DMAMUX2_REQ_GEN_BDMA_CH0_IT +#define HAL_DMAMUX2_REQUEST_GEN_BDMA_CH1_IT HAL_DMAMUX2_REQ_GEN_BDMA_CH1_IT + +#define HAL_DMAMUX_REQUEST_GEN_NO_EVENT HAL_DMAMUX_REQ_GEN_NO_EVENT +#define HAL_DMAMUX_REQUEST_GEN_RISING HAL_DMAMUX_REQ_GEN_RISING +#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING +#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING + +#define DFSDM_FILTER_EXT_TRIG_LPTIM1 DFSDM_FILTER_EXT_TRIG_LPTIM1_OUT +#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT +#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT + +#define DAC_TRIGGER_LP1_OUT DAC_TRIGGER_LPTIM1_OUT +#define DAC_TRIGGER_LP2_OUT DAC_TRIGGER_LPTIM2_OUT + +#endif /* STM32H7 */ + +#if defined(STM32U5) +#define GPDMA1_REQUEST_DCMI GPDMA1_REQUEST_DCMI_PSSI +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_FLASH_Aliased_Defines HAL FLASH Aliased Defines maintained for legacy purpose + * @{ + */ + +#define TYPEPROGRAM_BYTE FLASH_TYPEPROGRAM_BYTE +#define TYPEPROGRAM_HALFWORD FLASH_TYPEPROGRAM_HALFWORD +#define TYPEPROGRAM_WORD FLASH_TYPEPROGRAM_WORD +#define TYPEPROGRAM_DOUBLEWORD FLASH_TYPEPROGRAM_DOUBLEWORD +#define TYPEERASE_SECTORS FLASH_TYPEERASE_SECTORS +#define TYPEERASE_PAGES FLASH_TYPEERASE_PAGES +#define TYPEERASE_PAGEERASE FLASH_TYPEERASE_PAGES +#define TYPEERASE_MASSERASE FLASH_TYPEERASE_MASSERASE +#define WRPSTATE_DISABLE OB_WRPSTATE_DISABLE +#define WRPSTATE_ENABLE OB_WRPSTATE_ENABLE +#define HAL_FLASH_TIMEOUT_VALUE FLASH_TIMEOUT_VALUE +#define OBEX_PCROP OPTIONBYTE_PCROP +#define OBEX_BOOTCONFIG OPTIONBYTE_BOOTCONFIG +#define PCROPSTATE_DISABLE OB_PCROP_STATE_DISABLE +#define PCROPSTATE_ENABLE OB_PCROP_STATE_ENABLE +#define TYPEERASEDATA_BYTE FLASH_TYPEERASEDATA_BYTE +#define TYPEERASEDATA_HALFWORD FLASH_TYPEERASEDATA_HALFWORD +#define TYPEERASEDATA_WORD FLASH_TYPEERASEDATA_WORD +#define TYPEPROGRAMDATA_BYTE FLASH_TYPEPROGRAMDATA_BYTE +#define TYPEPROGRAMDATA_HALFWORD FLASH_TYPEPROGRAMDATA_HALFWORD +#define TYPEPROGRAMDATA_WORD FLASH_TYPEPROGRAMDATA_WORD +#define TYPEPROGRAMDATA_FASTBYTE FLASH_TYPEPROGRAMDATA_FASTBYTE +#define TYPEPROGRAMDATA_FASTHALFWORD FLASH_TYPEPROGRAMDATA_FASTHALFWORD +#define TYPEPROGRAMDATA_FASTWORD FLASH_TYPEPROGRAMDATA_FASTWORD +#define PAGESIZE FLASH_PAGE_SIZE +#define TYPEPROGRAM_FASTBYTE FLASH_TYPEPROGRAM_BYTE +#define TYPEPROGRAM_FASTHALFWORD FLASH_TYPEPROGRAM_HALFWORD +#define TYPEPROGRAM_FASTWORD FLASH_TYPEPROGRAM_WORD +#define VOLTAGE_RANGE_1 FLASH_VOLTAGE_RANGE_1 +#define VOLTAGE_RANGE_2 FLASH_VOLTAGE_RANGE_2 +#define VOLTAGE_RANGE_3 FLASH_VOLTAGE_RANGE_3 +#define VOLTAGE_RANGE_4 FLASH_VOLTAGE_RANGE_4 +#define TYPEPROGRAM_FAST FLASH_TYPEPROGRAM_FAST +#define TYPEPROGRAM_FAST_AND_LAST FLASH_TYPEPROGRAM_FAST_AND_LAST +#define WRPAREA_BANK1_AREAA OB_WRPAREA_BANK1_AREAA +#define WRPAREA_BANK1_AREAB OB_WRPAREA_BANK1_AREAB +#define WRPAREA_BANK2_AREAA OB_WRPAREA_BANK2_AREAA +#define WRPAREA_BANK2_AREAB OB_WRPAREA_BANK2_AREAB +#define IWDG_STDBY_FREEZE OB_IWDG_STDBY_FREEZE +#define IWDG_STDBY_ACTIVE OB_IWDG_STDBY_RUN +#define IWDG_STOP_FREEZE OB_IWDG_STOP_FREEZE +#define IWDG_STOP_ACTIVE OB_IWDG_STOP_RUN +#define FLASH_ERROR_NONE HAL_FLASH_ERROR_NONE +#define FLASH_ERROR_RD HAL_FLASH_ERROR_RD +#define FLASH_ERROR_PG HAL_FLASH_ERROR_PROG +#define FLASH_ERROR_PGP HAL_FLASH_ERROR_PGS +#define FLASH_ERROR_WRP HAL_FLASH_ERROR_WRP +#define FLASH_ERROR_OPTV HAL_FLASH_ERROR_OPTV +#define FLASH_ERROR_OPTVUSR HAL_FLASH_ERROR_OPTVUSR +#define FLASH_ERROR_PROG HAL_FLASH_ERROR_PROG +#define FLASH_ERROR_OP HAL_FLASH_ERROR_OPERATION +#define FLASH_ERROR_PGA HAL_FLASH_ERROR_PGA +#define FLASH_ERROR_SIZE HAL_FLASH_ERROR_SIZE +#define FLASH_ERROR_SIZ HAL_FLASH_ERROR_SIZE +#define FLASH_ERROR_PGS HAL_FLASH_ERROR_PGS +#define FLASH_ERROR_MIS HAL_FLASH_ERROR_MIS +#define FLASH_ERROR_FAST HAL_FLASH_ERROR_FAST +#define FLASH_ERROR_FWWERR HAL_FLASH_ERROR_FWWERR +#define FLASH_ERROR_NOTZERO HAL_FLASH_ERROR_NOTZERO +#define FLASH_ERROR_OPERATION HAL_FLASH_ERROR_OPERATION +#define FLASH_ERROR_ERS HAL_FLASH_ERROR_ERS +#define OB_WDG_SW OB_IWDG_SW +#define OB_WDG_HW OB_IWDG_HW +#define OB_SDADC12_VDD_MONITOR_SET OB_SDACD_VDD_MONITOR_SET +#define OB_SDADC12_VDD_MONITOR_RESET OB_SDACD_VDD_MONITOR_RESET +#define OB_RAM_PARITY_CHECK_SET OB_SRAM_PARITY_SET +#define OB_RAM_PARITY_CHECK_RESET OB_SRAM_PARITY_RESET +#define IS_OB_SDADC12_VDD_MONITOR IS_OB_SDACD_VDD_MONITOR +#define OB_RDP_LEVEL0 OB_RDP_LEVEL_0 +#define OB_RDP_LEVEL1 OB_RDP_LEVEL_1 +#define OB_RDP_LEVEL2 OB_RDP_LEVEL_2 +#if defined(STM32G0) || defined(STM32C0) +#define OB_BOOT_LOCK_DISABLE OB_BOOT_ENTRY_FORCED_NONE +#define OB_BOOT_LOCK_ENABLE OB_BOOT_ENTRY_FORCED_FLASH +#else +#define OB_BOOT_ENTRY_FORCED_NONE OB_BOOT_LOCK_DISABLE +#define OB_BOOT_ENTRY_FORCED_FLASH OB_BOOT_LOCK_ENABLE +#endif +#if defined(STM32H7) +#define FLASH_FLAG_SNECCE_BANK1RR FLASH_FLAG_SNECCERR_BANK1 +#define FLASH_FLAG_DBECCE_BANK1RR FLASH_FLAG_DBECCERR_BANK1 +#define FLASH_FLAG_STRBER_BANK1R FLASH_FLAG_STRBERR_BANK1 +#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2 +#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2 +#define FLASH_FLAG_STRBER_BANK2R FLASH_FLAG_STRBERR_BANK2 +#define FLASH_FLAG_WDW FLASH_FLAG_WBNE +#define OB_WRP_SECTOR_All OB_WRP_SECTOR_ALL +#endif /* STM32H7 */ +#if defined(STM32U5) +#define OB_USER_nRST_STOP OB_USER_NRST_STOP +#define OB_USER_nRST_STDBY OB_USER_NRST_STDBY +#define OB_USER_nRST_SHDW OB_USER_NRST_SHDW +#define OB_USER_nSWBOOT0 OB_USER_NSWBOOT0 +#define OB_USER_nBOOT0 OB_USER_NBOOT0 +#define OB_nBOOT0_RESET OB_NBOOT0_RESET +#define OB_nBOOT0_SET OB_NBOOT0_SET +#define OB_USER_SRAM134_RST OB_USER_SRAM_RST +#define OB_SRAM134_RST_ERASE OB_SRAM_RST_ERASE +#define OB_SRAM134_RST_NOT_ERASE OB_SRAM_RST_NOT_ERASE +#endif /* STM32U5 */ +#if defined(STM32U0) +#define OB_USER_nRST_STOP OB_USER_NRST_STOP +#define OB_USER_nRST_STDBY OB_USER_NRST_STDBY +#define OB_USER_nRST_SHDW OB_USER_NRST_SHDW +#define OB_USER_nBOOT_SEL OB_USER_NBOOT_SEL +#define OB_USER_nBOOT0 OB_USER_NBOOT0 +#define OB_USER_nBOOT1 OB_USER_NBOOT1 +#define OB_nBOOT0_RESET OB_NBOOT0_RESET +#define OB_nBOOT0_SET OB_NBOOT0_SET +#endif /* STM32U0 */ + +/** + * @} + */ + +/** @defgroup HAL_JPEG_Aliased_Macros HAL JPEG Aliased Macros maintained for legacy purpose + * @{ + */ + +#if defined(STM32H7) +#define __HAL_RCC_JPEG_CLK_ENABLE __HAL_RCC_JPGDECEN_CLK_ENABLE +#define __HAL_RCC_JPEG_CLK_DISABLE __HAL_RCC_JPGDECEN_CLK_DISABLE +#define __HAL_RCC_JPEG_FORCE_RESET __HAL_RCC_JPGDECRST_FORCE_RESET +#define __HAL_RCC_JPEG_RELEASE_RESET __HAL_RCC_JPGDECRST_RELEASE_RESET +#define __HAL_RCC_JPEG_CLK_SLEEP_ENABLE __HAL_RCC_JPGDEC_CLK_SLEEP_ENABLE +#define __HAL_RCC_JPEG_CLK_SLEEP_DISABLE __HAL_RCC_JPGDEC_CLK_SLEEP_DISABLE +#endif /* STM32H7 */ + +/** + * @} + */ + +/** @defgroup HAL_SYSCFG_Aliased_Defines HAL SYSCFG Aliased Defines maintained for legacy purpose + * @{ + */ + +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA9 I2C_FASTMODEPLUS_PA9 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PA10 I2C_FASTMODEPLUS_PA10 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB6 I2C_FASTMODEPLUS_PB6 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB7 I2C_FASTMODEPLUS_PB7 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB8 I2C_FASTMODEPLUS_PB8 +#define HAL_SYSCFG_FASTMODEPLUS_I2C_PB9 I2C_FASTMODEPLUS_PB9 +#define HAL_SYSCFG_FASTMODEPLUS_I2C1 I2C_FASTMODEPLUS_I2C1 +#define HAL_SYSCFG_FASTMODEPLUS_I2C2 I2C_FASTMODEPLUS_I2C2 +#define HAL_SYSCFG_FASTMODEPLUS_I2C3 I2C_FASTMODEPLUS_I2C3 +#if defined(STM32G4) + +#define HAL_SYSCFG_EnableIOAnalogSwitchBooster HAL_SYSCFG_EnableIOSwitchBooster +#define HAL_SYSCFG_DisableIOAnalogSwitchBooster HAL_SYSCFG_DisableIOSwitchBooster +#define HAL_SYSCFG_EnableIOAnalogSwitchVDD HAL_SYSCFG_EnableIOSwitchVDD +#define HAL_SYSCFG_DisableIOAnalogSwitchVDD HAL_SYSCFG_DisableIOSwitchVDD +#endif /* STM32G4 */ + +#if defined(STM32H5) +#define SYSCFG_IT_FPU_IOC SBS_IT_FPU_IOC +#define SYSCFG_IT_FPU_DZC SBS_IT_FPU_DZC +#define SYSCFG_IT_FPU_UFC SBS_IT_FPU_UFC +#define SYSCFG_IT_FPU_OFC SBS_IT_FPU_OFC +#define SYSCFG_IT_FPU_IDC SBS_IT_FPU_IDC +#define SYSCFG_IT_FPU_IXC SBS_IT_FPU_IXC + +#define SYSCFG_BREAK_FLASH_ECC SBS_BREAK_FLASH_ECC +#define SYSCFG_BREAK_PVD SBS_BREAK_PVD +#define SYSCFG_BREAK_SRAM_ECC SBS_BREAK_SRAM_ECC +#define SYSCFG_BREAK_LOCKUP SBS_BREAK_LOCKUP + +#define SYSCFG_VREFBUF_VOLTAGE_SCALE0 VREFBUF_VOLTAGE_SCALE0 +#define SYSCFG_VREFBUF_VOLTAGE_SCALE1 VREFBUF_VOLTAGE_SCALE1 +#define SYSCFG_VREFBUF_VOLTAGE_SCALE2 VREFBUF_VOLTAGE_SCALE2 +#define SYSCFG_VREFBUF_VOLTAGE_SCALE3 VREFBUF_VOLTAGE_SCALE3 + +#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_DISABLE VREFBUF_HIGH_IMPEDANCE_DISABLE +#define SYSCFG_VREFBUF_HIGH_IMPEDANCE_ENABLE VREFBUF_HIGH_IMPEDANCE_ENABLE + +#define SYSCFG_FASTMODEPLUS_PB6 SBS_FASTMODEPLUS_PB6 +#define SYSCFG_FASTMODEPLUS_PB7 SBS_FASTMODEPLUS_PB7 +#define SYSCFG_FASTMODEPLUS_PB8 SBS_FASTMODEPLUS_PB8 +#define SYSCFG_FASTMODEPLUS_PB9 SBS_FASTMODEPLUS_PB9 + +#define SYSCFG_ETH_MII SBS_ETH_MII +#define SYSCFG_ETH_RMII SBS_ETH_RMII +#define IS_SYSCFG_ETHERNET_CONFIG IS_SBS_ETHERNET_CONFIG + +#define SYSCFG_MEMORIES_ERASE_FLAG_IPMEE SBS_MEMORIES_ERASE_FLAG_IPMEE +#define SYSCFG_MEMORIES_ERASE_FLAG_MCLR SBS_MEMORIES_ERASE_FLAG_MCLR +#define IS_SYSCFG_MEMORIES_ERASE_FLAG IS_SBS_MEMORIES_ERASE_FLAG + +#define IS_SYSCFG_CODE_CONFIG IS_SBS_CODE_CONFIG + +#define SYSCFG_MPU_NSEC SBS_MPU_NSEC +#define SYSCFG_VTOR_NSEC SBS_VTOR_NSEC +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#define SYSCFG_SAU SBS_SAU +#define SYSCFG_MPU_SEC SBS_MPU_SEC +#define SYSCFG_VTOR_AIRCR_SEC SBS_VTOR_AIRCR_SEC +#define SYSCFG_LOCK_ALL SBS_LOCK_ALL +#else +#define SYSCFG_LOCK_ALL SBS_LOCK_ALL +#endif /* __ARM_FEATURE_CMSE */ + +#define SYSCFG_CLK SBS_CLK +#define SYSCFG_CLASSB SBS_CLASSB +#define SYSCFG_FPU SBS_FPU +#define SYSCFG_ALL SBS_ALL + +#define SYSCFG_SEC SBS_SEC +#define SYSCFG_NSEC SBS_NSEC + +#define __HAL_SYSCFG_FPU_INTERRUPT_ENABLE __HAL_SBS_FPU_INTERRUPT_ENABLE +#define __HAL_SYSCFG_FPU_INTERRUPT_DISABLE __HAL_SBS_FPU_INTERRUPT_DISABLE + +#define __HAL_SYSCFG_BREAK_ECC_LOCK __HAL_SBS_BREAK_ECC_LOCK +#define __HAL_SYSCFG_BREAK_LOCKUP_LOCK __HAL_SBS_BREAK_LOCKUP_LOCK +#define __HAL_SYSCFG_BREAK_PVD_LOCK __HAL_SBS_BREAK_PVD_LOCK +#define __HAL_SYSCFG_BREAK_SRAM_ECC_LOCK __HAL_SBS_BREAK_SRAM_ECC_LOCK + +#define __HAL_SYSCFG_FASTMODEPLUS_ENABLE __HAL_SBS_FASTMODEPLUS_ENABLE +#define __HAL_SYSCFG_FASTMODEPLUS_DISABLE __HAL_SBS_FASTMODEPLUS_DISABLE + +#define __HAL_SYSCFG_GET_MEMORIES_ERASE_STATUS __HAL_SBS_GET_MEMORIES_ERASE_STATUS +#define __HAL_SYSCFG_CLEAR_MEMORIES_ERASE_STATUS __HAL_SBS_CLEAR_MEMORIES_ERASE_STATUS + +#define IS_SYSCFG_FPU_INTERRUPT IS_SBS_FPU_INTERRUPT +#define IS_SYSCFG_BREAK_CONFIG IS_SBS_BREAK_CONFIG +#define IS_SYSCFG_VREFBUF_VOLTAGE_SCALE IS_VREFBUF_VOLTAGE_SCALE +#define IS_SYSCFG_VREFBUF_HIGH_IMPEDANCE IS_VREFBUF_HIGH_IMPEDANCE +#define IS_SYSCFG_VREFBUF_TRIMMING IS_VREFBUF_TRIMMING +#define IS_SYSCFG_FASTMODEPLUS IS_SBS_FASTMODEPLUS +#define IS_SYSCFG_ITEMS_ATTRIBUTES IS_SBS_ITEMS_ATTRIBUTES +#define IS_SYSCFG_ATTRIBUTES IS_SBS_ATTRIBUTES +#define IS_SYSCFG_LOCK_ITEMS IS_SBS_LOCK_ITEMS + +#define HAL_SYSCFG_VREFBUF_VoltageScalingConfig HAL_VREFBUF_VoltageScalingConfig +#define HAL_SYSCFG_VREFBUF_HighImpedanceConfig HAL_VREFBUF_HighImpedanceConfig +#define HAL_SYSCFG_VREFBUF_TrimmingConfig HAL_VREFBUF_TrimmingConfig +#define HAL_SYSCFG_EnableVREFBUF HAL_EnableVREFBUF +#define HAL_SYSCFG_DisableVREFBUF HAL_DisableVREFBUF + +#define HAL_SYSCFG_EnableIOAnalogSwitchBooster HAL_SBS_EnableIOAnalogSwitchBooster +#define HAL_SYSCFG_DisableIOAnalogSwitchBooster HAL_SBS_DisableIOAnalogSwitchBooster +#define HAL_SYSCFG_ETHInterfaceSelect HAL_SBS_ETHInterfaceSelect + +#define HAL_SYSCFG_Lock HAL_SBS_Lock +#define HAL_SYSCFG_GetLock HAL_SBS_GetLock + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +#define HAL_SYSCFG_ConfigAttributes HAL_SBS_ConfigAttributes +#define HAL_SYSCFG_GetConfigAttributes HAL_SBS_GetConfigAttributes +#endif /* __ARM_FEATURE_CMSE */ + +#endif /* STM32H5 */ + + +/** + * @} + */ + + +/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose + * @{ + */ +#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4) +#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE FMC_NAND_WAIT_FEATURE_DISABLE +#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE FMC_NAND_WAIT_FEATURE_ENABLE +#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 FMC_NAND_MEM_BUS_WIDTH_8 +#define FMC_NAND_PCC_MEM_BUS_WIDTH_16 FMC_NAND_MEM_BUS_WIDTH_16 +#elif defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) +#define FMC_NAND_WAIT_FEATURE_DISABLE FMC_NAND_PCC_WAIT_FEATURE_DISABLE +#define FMC_NAND_WAIT_FEATURE_ENABLE FMC_NAND_PCC_WAIT_FEATURE_ENABLE +#define FMC_NAND_MEM_BUS_WIDTH_8 FMC_NAND_PCC_MEM_BUS_WIDTH_8 +#define FMC_NAND_MEM_BUS_WIDTH_16 FMC_NAND_PCC_MEM_BUS_WIDTH_16 +#endif +/** + * @} + */ + +/** @defgroup LL_FSMC_Aliased_Defines LL FSMC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define FSMC_NORSRAM_TYPEDEF FSMC_NORSRAM_TypeDef +#define FSMC_NORSRAM_EXTENDED_TYPEDEF FSMC_NORSRAM_EXTENDED_TypeDef +/** + * @} + */ + +/** @defgroup HAL_GPIO_Aliased_Macros HAL GPIO Aliased Macros maintained for legacy purpose + * @{ + */ +#define GET_GPIO_SOURCE GPIO_GET_INDEX +#define GET_GPIO_INDEX GPIO_GET_INDEX + +#if defined(STM32F4) +#define GPIO_AF12_SDMMC GPIO_AF12_SDIO +#define GPIO_AF12_SDMMC1 GPIO_AF12_SDIO +#endif + +#if defined(STM32F7) +#define GPIO_AF12_SDIO GPIO_AF12_SDMMC1 +#define GPIO_AF12_SDMMC GPIO_AF12_SDMMC1 +#endif + +#if defined(STM32L4) +#define GPIO_AF12_SDIO GPIO_AF12_SDMMC1 +#define GPIO_AF12_SDMMC GPIO_AF12_SDMMC1 +#endif + +#if defined(STM32H7) +#define GPIO_AF7_SDIO1 GPIO_AF7_SDMMC1 +#define GPIO_AF8_SDIO1 GPIO_AF8_SDMMC1 +#define GPIO_AF12_SDIO1 GPIO_AF12_SDMMC1 +#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2 +#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2 +#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2 + +#if defined (STM32H743xx) || defined (STM32H753xx) || defined (STM32H750xx) || defined (STM32H742xx) || \ + defined (STM32H745xx) || defined (STM32H755xx) || defined (STM32H747xx) || defined (STM32H757xx) +#define GPIO_AF10_OTG2_HS GPIO_AF10_OTG2_FS +#define GPIO_AF10_OTG1_FS GPIO_AF10_OTG1_HS +#define GPIO_AF12_OTG2_FS GPIO_AF12_OTG1_FS +#endif /*STM32H743xx || STM32H753xx || STM32H750xx || STM32H742xx || STM32H745xx || STM32H755xx || STM32H747xx || \ + STM32H757xx */ +#endif /* STM32H7 */ + +#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1 +#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1 +#define GPIO_AF2_LPTIM GPIO_AF2_LPTIM1 + +#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || \ + defined(STM32G4) || defined(STM32H7) || defined(STM32WB) || defined(STM32U5) +#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW +#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM +#define GPIO_SPEED_FAST GPIO_SPEED_FREQ_HIGH +#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH +#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32G4 || STM32H7 || STM32WB || STM32U5*/ + +#if defined(STM32L1) +#define GPIO_SPEED_VERY_LOW GPIO_SPEED_FREQ_LOW +#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_MEDIUM +#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_HIGH +#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH +#endif /* STM32L1 */ + +#if defined(STM32F0) || defined(STM32F3) || defined(STM32F1) +#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW +#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM +#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_HIGH +#endif /* STM32F0 || STM32F3 || STM32F1 */ + +#define GPIO_AF6_DFSDM GPIO_AF6_DFSDM1 + +#if defined(STM32U5) || defined(STM32H5) +#define GPIO_AF0_RTC_50Hz GPIO_AF0_RTC_50HZ +#endif /* STM32U5 || STM32H5 */ +#if defined(STM32U5) +#define GPIO_AF0_S2DSTOP GPIO_AF0_SRDSTOP +#define GPIO_AF11_LPGPIO GPIO_AF11_LPGPIO1 +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_GTZC_Aliased_Defines HAL GTZC Aliased Defines maintained for legacy purpose + * @{ + */ +#if defined(STM32U5) +#define GTZC_PERIPH_DCMI GTZC_PERIPH_DCMI_PSSI +#define GTZC_PERIPH_LTDC GTZC_PERIPH_LTDCUSB +#endif /* STM32U5 */ +#if defined(STM32H5) +#define GTZC_PERIPH_DAC12 GTZC_PERIPH_DAC1 +#define GTZC_PERIPH_ADC12 GTZC_PERIPH_ADC +#define GTZC_PERIPH_USBFS GTZC_PERIPH_USB +#endif /* STM32H5 */ +#if defined(STM32H5) || defined(STM32U5) +#define GTZC_MCPBB_NB_VCTR_REG_MAX GTZC_MPCBB_NB_VCTR_REG_MAX +#define GTZC_MCPBB_NB_LCK_VCTR_REG_MAX GTZC_MPCBB_NB_LCK_VCTR_REG_MAX +#define GTZC_MCPBB_SUPERBLOCK_UNLOCKED GTZC_MPCBB_SUPERBLOCK_UNLOCKED +#define GTZC_MCPBB_SUPERBLOCK_LOCKED GTZC_MPCBB_SUPERBLOCK_LOCKED +#define GTZC_MCPBB_BLOCK_NSEC GTZC_MPCBB_BLOCK_NSEC +#define GTZC_MCPBB_BLOCK_SEC GTZC_MPCBB_BLOCK_SEC +#define GTZC_MCPBB_BLOCK_NPRIV GTZC_MPCBB_BLOCK_NPRIV +#define GTZC_MCPBB_BLOCK_PRIV GTZC_MPCBB_BLOCK_PRIV +#define GTZC_MCPBB_LOCK_OFF GTZC_MPCBB_LOCK_OFF +#define GTZC_MCPBB_LOCK_ON GTZC_MPCBB_LOCK_ON +#endif /* STM32H5 || STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_HRTIM_Aliased_Macros HAL HRTIM Aliased Macros maintained for legacy purpose + * @{ + */ +#define HRTIM_TIMDELAYEDPROTECTION_DISABLED HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DISABLED +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV68 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV6 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT1_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_DEEV7 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDOUT2_DEEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_DEEV7 +#define HRTIM_TIMDELAYEDPROTECTION_DELAYEDBOTH_EEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV7 +#define HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV79 HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV7 + +#define __HAL_HRTIM_SetCounter __HAL_HRTIM_SETCOUNTER +#define __HAL_HRTIM_GetCounter __HAL_HRTIM_GETCOUNTER +#define __HAL_HRTIM_SetPeriod __HAL_HRTIM_SETPERIOD +#define __HAL_HRTIM_GetPeriod __HAL_HRTIM_GETPERIOD +#define __HAL_HRTIM_SetClockPrescaler __HAL_HRTIM_SETCLOCKPRESCALER +#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER +#define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE +#define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE + +#if defined(STM32G4) +#define HAL_HRTIM_ExternalEventCounterConfig HAL_HRTIM_ExtEventCounterConfig +#define HAL_HRTIM_ExternalEventCounterEnable HAL_HRTIM_ExtEventCounterEnable +#define HAL_HRTIM_ExternalEventCounterDisable HAL_HRTIM_ExtEventCounterDisable +#define HAL_HRTIM_ExternalEventCounterReset HAL_HRTIM_ExtEventCounterReset +#define HRTIM_TIMEEVENT_A HRTIM_EVENTCOUNTER_A +#define HRTIM_TIMEEVENT_B HRTIM_EVENTCOUNTER_B +#define HRTIM_TIMEEVENTRESETMODE_UNCONDITIONAL HRTIM_EVENTCOUNTER_RSTMODE_UNCONDITIONAL +#define HRTIM_TIMEEVENTRESETMODE_CONDITIONAL HRTIM_EVENTCOUNTER_RSTMODE_CONDITIONAL +#endif /* STM32G4 */ + +#if defined(STM32H7) +#define HRTIM_OUTPUTSET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTSET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTSET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTSET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTSET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTSET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTSET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTSET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTSET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTSET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9 + +#define HRTIM_OUTPUTRESET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9 +#define HRTIM_OUTPUTRESET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1 +#define HRTIM_OUTPUTRESET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2 +#define HRTIM_OUTPUTRESET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3 +#define HRTIM_OUTPUTRESET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4 +#define HRTIM_OUTPUTRESET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5 +#define HRTIM_OUTPUTRESET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6 +#define HRTIM_OUTPUTRESET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7 +#define HRTIM_OUTPUTRESET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8 +#define HRTIM_OUTPUTRESET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9 +#endif /* STM32H7 */ + +#if defined(STM32F3) +/** @brief Constants defining available sources associated to external events. + */ +#define HRTIM_EVENTSRC_1 (0x00000000U) +#define HRTIM_EVENTSRC_2 (HRTIM_EECR1_EE1SRC_0) +#define HRTIM_EVENTSRC_3 (HRTIM_EECR1_EE1SRC_1) +#define HRTIM_EVENTSRC_4 (HRTIM_EECR1_EE1SRC_1 | HRTIM_EECR1_EE1SRC_0) + +/** @brief Constants defining the DLL calibration periods (in micro seconds) + */ +#define HRTIM_CALIBRATIONRATE_7300 0x00000000U +#define HRTIM_CALIBRATIONRATE_910 (HRTIM_DLLCR_CALRTE_0) +#define HRTIM_CALIBRATIONRATE_114 (HRTIM_DLLCR_CALRTE_1) +#define HRTIM_CALIBRATIONRATE_14 (HRTIM_DLLCR_CALRTE_1 | HRTIM_DLLCR_CALRTE_0) + +#endif /* STM32F3 */ +/** + * @} + */ + +/** @defgroup HAL_I2C_Aliased_Defines HAL I2C Aliased Defines maintained for legacy purpose + * @{ + */ +#define I2C_DUALADDRESS_DISABLED I2C_DUALADDRESS_DISABLE +#define I2C_DUALADDRESS_ENABLED I2C_DUALADDRESS_ENABLE +#define I2C_GENERALCALL_DISABLED I2C_GENERALCALL_DISABLE +#define I2C_GENERALCALL_ENABLED I2C_GENERALCALL_ENABLE +#define I2C_NOSTRETCH_DISABLED I2C_NOSTRETCH_DISABLE +#define I2C_NOSTRETCH_ENABLED I2C_NOSTRETCH_ENABLE +#define I2C_ANALOGFILTER_ENABLED I2C_ANALOGFILTER_ENABLE +#define I2C_ANALOGFILTER_DISABLED I2C_ANALOGFILTER_DISABLE +#if defined(STM32F0) || defined(STM32F1) || defined(STM32F3) || defined(STM32G0) || defined(STM32L4) || \ + defined(STM32L1) || defined(STM32F7) +#define HAL_I2C_STATE_MEM_BUSY_TX HAL_I2C_STATE_BUSY_TX +#define HAL_I2C_STATE_MEM_BUSY_RX HAL_I2C_STATE_BUSY_RX +#define HAL_I2C_STATE_MASTER_BUSY_TX HAL_I2C_STATE_BUSY_TX +#define HAL_I2C_STATE_MASTER_BUSY_RX HAL_I2C_STATE_BUSY_RX +#define HAL_I2C_STATE_SLAVE_BUSY_TX HAL_I2C_STATE_BUSY_TX +#define HAL_I2C_STATE_SLAVE_BUSY_RX HAL_I2C_STATE_BUSY_RX +#endif +/** + * @} + */ + +/** @defgroup HAL_IRDA_Aliased_Defines HAL IRDA Aliased Defines maintained for legacy purpose + * @{ + */ +#define IRDA_ONE_BIT_SAMPLE_DISABLED IRDA_ONE_BIT_SAMPLE_DISABLE +#define IRDA_ONE_BIT_SAMPLE_ENABLED IRDA_ONE_BIT_SAMPLE_ENABLE + +/** + * @} + */ + +/** @defgroup HAL_IWDG_Aliased_Defines HAL IWDG Aliased Defines maintained for legacy purpose + * @{ + */ +#define KR_KEY_RELOAD IWDG_KEY_RELOAD +#define KR_KEY_ENABLE IWDG_KEY_ENABLE +#define KR_KEY_EWA IWDG_KEY_WRITE_ACCESS_ENABLE +#define KR_KEY_DWA IWDG_KEY_WRITE_ACCESS_DISABLE +/** + * @} + */ + +/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose + * @{ + */ + +#define LPTIM_CLOCKSAMPLETIME_DIRECTTRANSISTION LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION +#define LPTIM_CLOCKSAMPLETIME_2TRANSISTIONS LPTIM_CLOCKSAMPLETIME_2TRANSITIONS +#define LPTIM_CLOCKSAMPLETIME_4TRANSISTIONS LPTIM_CLOCKSAMPLETIME_4TRANSITIONS +#define LPTIM_CLOCKSAMPLETIME_8TRANSISTIONS LPTIM_CLOCKSAMPLETIME_8TRANSITIONS + +#define LPTIM_CLOCKPOLARITY_RISINGEDGE LPTIM_CLOCKPOLARITY_RISING +#define LPTIM_CLOCKPOLARITY_FALLINGEDGE LPTIM_CLOCKPOLARITY_FALLING +#define LPTIM_CLOCKPOLARITY_BOTHEDGES LPTIM_CLOCKPOLARITY_RISING_FALLING + +#define LPTIM_TRIGSAMPLETIME_DIRECTTRANSISTION LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION +#define LPTIM_TRIGSAMPLETIME_2TRANSISTIONS LPTIM_TRIGSAMPLETIME_2TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_4TRANSISTIONS LPTIM_TRIGSAMPLETIME_4TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_8TRANSISTIONS LPTIM_TRIGSAMPLETIME_8TRANSITIONS + +/* The following 3 definition have also been present in a temporary version of lptim.h */ +/* They need to be renamed also to the right name, just in case */ +#define LPTIM_TRIGSAMPLETIME_2TRANSITION LPTIM_TRIGSAMPLETIME_2TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_4TRANSITION LPTIM_TRIGSAMPLETIME_4TRANSITIONS +#define LPTIM_TRIGSAMPLETIME_8TRANSITION LPTIM_TRIGSAMPLETIME_8TRANSITIONS + + +/** @defgroup HAL_LPTIM_Aliased_Defines HAL LPTIM Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_LPTIM_ReadCompare HAL_LPTIM_ReadCapturedValue +/** + * @} + */ + +#if defined(STM32U5) +#define LPTIM_ISR_CC1 LPTIM_ISR_CC1IF +#define LPTIM_ISR_CC2 LPTIM_ISR_CC2IF +#define LPTIM_CHANNEL_ALL 0x00000000U +#endif /* STM32U5 */ +/** + * @} + */ + +/** @defgroup HAL_NAND_Aliased_Defines HAL NAND Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_NAND_Read_Page HAL_NAND_Read_Page_8b +#define HAL_NAND_Write_Page HAL_NAND_Write_Page_8b +#define HAL_NAND_Read_SpareArea HAL_NAND_Read_SpareArea_8b +#define HAL_NAND_Write_SpareArea HAL_NAND_Write_SpareArea_8b + +#define NAND_AddressTypedef NAND_AddressTypeDef + +#define __ARRAY_ADDRESS ARRAY_ADDRESS +#define __ADDR_1st_CYCLE ADDR_1ST_CYCLE +#define __ADDR_2nd_CYCLE ADDR_2ND_CYCLE +#define __ADDR_3rd_CYCLE ADDR_3RD_CYCLE +#define __ADDR_4th_CYCLE ADDR_4TH_CYCLE +/** + * @} + */ + +/** @defgroup HAL_NOR_Aliased_Defines HAL NOR Aliased Defines maintained for legacy purpose + * @{ + */ +#define NOR_StatusTypedef HAL_NOR_StatusTypeDef +#define NOR_SUCCESS HAL_NOR_STATUS_SUCCESS +#define NOR_ONGOING HAL_NOR_STATUS_ONGOING +#define NOR_ERROR HAL_NOR_STATUS_ERROR +#define NOR_TIMEOUT HAL_NOR_STATUS_TIMEOUT + +#define __NOR_WRITE NOR_WRITE +#define __NOR_ADDR_SHIFT NOR_ADDR_SHIFT +/** + * @} + */ + +/** @defgroup HAL_OPAMP_Aliased_Defines HAL OPAMP Aliased Defines maintained for legacy purpose + * @{ + */ + +#define OPAMP_NONINVERTINGINPUT_VP0 OPAMP_NONINVERTINGINPUT_IO0 +#define OPAMP_NONINVERTINGINPUT_VP1 OPAMP_NONINVERTINGINPUT_IO1 +#define OPAMP_NONINVERTINGINPUT_VP2 OPAMP_NONINVERTINGINPUT_IO2 +#define OPAMP_NONINVERTINGINPUT_VP3 OPAMP_NONINVERTINGINPUT_IO3 + +#define OPAMP_SEC_NONINVERTINGINPUT_VP0 OPAMP_SEC_NONINVERTINGINPUT_IO0 +#define OPAMP_SEC_NONINVERTINGINPUT_VP1 OPAMP_SEC_NONINVERTINGINPUT_IO1 +#define OPAMP_SEC_NONINVERTINGINPUT_VP2 OPAMP_SEC_NONINVERTINGINPUT_IO2 +#define OPAMP_SEC_NONINVERTINGINPUT_VP3 OPAMP_SEC_NONINVERTINGINPUT_IO3 + +#define OPAMP_INVERTINGINPUT_VM0 OPAMP_INVERTINGINPUT_IO0 +#define OPAMP_INVERTINGINPUT_VM1 OPAMP_INVERTINGINPUT_IO1 + +#define IOPAMP_INVERTINGINPUT_VM0 OPAMP_INVERTINGINPUT_IO0 +#define IOPAMP_INVERTINGINPUT_VM1 OPAMP_INVERTINGINPUT_IO1 + +#define OPAMP_SEC_INVERTINGINPUT_VM0 OPAMP_SEC_INVERTINGINPUT_IO0 +#define OPAMP_SEC_INVERTINGINPUT_VM1 OPAMP_SEC_INVERTINGINPUT_IO1 + +#define OPAMP_INVERTINGINPUT_VINM OPAMP_SEC_INVERTINGINPUT_IO1 + +#define OPAMP_PGACONNECT_NO OPAMP_PGA_CONNECT_INVERTINGINPUT_NO +#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0 +#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1 + +#if defined(STM32L1) || defined(STM32L4) || defined(STM32L5) || defined(STM32H7) || defined(STM32G4) || defined(STM32U5) +#define HAL_OPAMP_MSP_INIT_CB_ID HAL_OPAMP_MSPINIT_CB_ID +#define HAL_OPAMP_MSP_DEINIT_CB_ID HAL_OPAMP_MSPDEINIT_CB_ID +#endif + +#if defined(STM32L4) || defined(STM32L5) +#define OPAMP_POWERMODE_NORMAL OPAMP_POWERMODE_NORMALPOWER +#elif defined(STM32G4) +#define OPAMP_POWERMODE_NORMAL OPAMP_POWERMODE_NORMALSPEED +#endif + +/** + * @} + */ + +/** @defgroup HAL_I2S_Aliased_Defines HAL I2S Aliased Defines maintained for legacy purpose + * @{ + */ +#define I2S_STANDARD_PHILLIPS I2S_STANDARD_PHILIPS + +#if defined(STM32H7) +#define I2S_IT_TXE I2S_IT_TXP +#define I2S_IT_RXNE I2S_IT_RXP + +#define I2S_FLAG_TXE I2S_FLAG_TXP +#define I2S_FLAG_RXNE I2S_FLAG_RXP +#endif + +#if defined(STM32F7) +#define I2S_CLOCK_SYSCLK I2S_CLOCK_PLL +#endif +/** + * @} + */ + +/** @defgroup HAL_PCCARD_Aliased_Defines HAL PCCARD Aliased Defines maintained for legacy purpose + * @{ + */ + +/* Compact Flash-ATA registers description */ +#define CF_DATA ATA_DATA +#define CF_SECTOR_COUNT ATA_SECTOR_COUNT +#define CF_SECTOR_NUMBER ATA_SECTOR_NUMBER +#define CF_CYLINDER_LOW ATA_CYLINDER_LOW +#define CF_CYLINDER_HIGH ATA_CYLINDER_HIGH +#define CF_CARD_HEAD ATA_CARD_HEAD +#define CF_STATUS_CMD ATA_STATUS_CMD +#define CF_STATUS_CMD_ALTERNATE ATA_STATUS_CMD_ALTERNATE +#define CF_COMMON_DATA_AREA ATA_COMMON_DATA_AREA + +/* Compact Flash-ATA commands */ +#define CF_READ_SECTOR_CMD ATA_READ_SECTOR_CMD +#define CF_WRITE_SECTOR_CMD ATA_WRITE_SECTOR_CMD +#define CF_ERASE_SECTOR_CMD ATA_ERASE_SECTOR_CMD +#define CF_IDENTIFY_CMD ATA_IDENTIFY_CMD + +#define PCCARD_StatusTypedef HAL_PCCARD_StatusTypeDef +#define PCCARD_SUCCESS HAL_PCCARD_STATUS_SUCCESS +#define PCCARD_ONGOING HAL_PCCARD_STATUS_ONGOING +#define PCCARD_ERROR HAL_PCCARD_STATUS_ERROR +#define PCCARD_TIMEOUT HAL_PCCARD_STATUS_TIMEOUT +/** + * @} + */ + +/** @defgroup HAL_RTC_Aliased_Defines HAL RTC Aliased Defines maintained for legacy purpose + * @{ + */ + +#define FORMAT_BIN RTC_FORMAT_BIN +#define FORMAT_BCD RTC_FORMAT_BCD + +#define RTC_ALARMSUBSECONDMASK_None RTC_ALARMSUBSECONDMASK_NONE +#define RTC_TAMPERERASEBACKUP_DISABLED RTC_TAMPER_ERASE_BACKUP_DISABLE +#define RTC_TAMPERMASK_FLAG_DISABLED RTC_TAMPERMASK_FLAG_DISABLE +#define RTC_TAMPERMASK_FLAG_ENABLED RTC_TAMPERMASK_FLAG_ENABLE + +#define RTC_MASKTAMPERFLAG_DISABLED RTC_TAMPERMASK_FLAG_DISABLE +#define RTC_MASKTAMPERFLAG_ENABLED RTC_TAMPERMASK_FLAG_ENABLE +#define RTC_TAMPERERASEBACKUP_ENABLED RTC_TAMPER_ERASE_BACKUP_ENABLE +#define RTC_TAMPER1_2_INTERRUPT RTC_ALL_TAMPER_INTERRUPT +#define RTC_TAMPER1_2_3_INTERRUPT RTC_ALL_TAMPER_INTERRUPT + +#define RTC_TIMESTAMPPIN_PC13 RTC_TIMESTAMPPIN_DEFAULT +#define RTC_TIMESTAMPPIN_PA0 RTC_TIMESTAMPPIN_POS1 +#define RTC_TIMESTAMPPIN_PI8 RTC_TIMESTAMPPIN_POS1 +#define RTC_TIMESTAMPPIN_PC1 RTC_TIMESTAMPPIN_POS2 + +#define RTC_OUTPUT_REMAP_PC13 RTC_OUTPUT_REMAP_NONE +#define RTC_OUTPUT_REMAP_PB14 RTC_OUTPUT_REMAP_POS1 +#define RTC_OUTPUT_REMAP_PB2 RTC_OUTPUT_REMAP_POS1 + +#define RTC_TAMPERPIN_PC13 RTC_TAMPERPIN_DEFAULT +#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1 +#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1 + +#if defined(STM32H5) || defined(STM32H7RS) +#define TAMP_SECRETDEVICE_ERASE_NONE TAMP_DEVICESECRETS_ERASE_NONE +#define TAMP_SECRETDEVICE_ERASE_BKP_SRAM TAMP_DEVICESECRETS_ERASE_BKPSRAM +#endif /* STM32H5 || STM32H7RS */ + +#if defined(STM32WBA) +#define TAMP_SECRETDEVICE_ERASE_NONE TAMP_DEVICESECRETS_ERASE_NONE +#define TAMP_SECRETDEVICE_ERASE_SRAM2 TAMP_DEVICESECRETS_ERASE_SRAM2 +#define TAMP_SECRETDEVICE_ERASE_RHUK TAMP_DEVICESECRETS_ERASE_RHUK +#define TAMP_SECRETDEVICE_ERASE_ICACHE TAMP_DEVICESECRETS_ERASE_ICACHE +#define TAMP_SECRETDEVICE_ERASE_SAES_AES_HASH TAMP_DEVICESECRETS_ERASE_SAES_AES_HASH +#define TAMP_SECRETDEVICE_ERASE_PKA_SRAM TAMP_DEVICESECRETS_ERASE_PKA_SRAM +#define TAMP_SECRETDEVICE_ERASE_ALL TAMP_DEVICESECRETS_ERASE_ALL +#endif /* STM32WBA */ + +#if defined(STM32H5) || defined(STM32WBA) || defined(STM32H7RS) +#define TAMP_SECRETDEVICE_ERASE_DISABLE TAMP_DEVICESECRETS_ERASE_NONE +#define TAMP_SECRETDEVICE_ERASE_ENABLE TAMP_SECRETDEVICE_ERASE_ALL +#endif /* STM32H5 || STM32WBA || STM32H7RS */ + +#if defined(STM32F7) +#define RTC_TAMPCR_TAMPXE RTC_TAMPER_ENABLE_BITS_MASK +#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_IT_ENABLE_BITS_MASK +#endif /* STM32F7 */ + +#if defined(STM32H7) +#define RTC_TAMPCR_TAMPXE RTC_TAMPER_X +#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_X_INTERRUPT +#endif /* STM32H7 */ + +#if defined(STM32F7) || defined(STM32H7) || defined(STM32L0) +#define RTC_TAMPER1_INTERRUPT RTC_IT_TAMP1 +#define RTC_TAMPER2_INTERRUPT RTC_IT_TAMP2 +#define RTC_TAMPER3_INTERRUPT RTC_IT_TAMP3 +#define RTC_ALL_TAMPER_INTERRUPT RTC_IT_TAMP +#endif /* STM32F7 || STM32H7 || STM32L0 */ + +/** + * @} + */ + + +/** @defgroup HAL_SMARTCARD_Aliased_Defines HAL SMARTCARD Aliased Defines maintained for legacy purpose + * @{ + */ +#define SMARTCARD_NACK_ENABLED SMARTCARD_NACK_ENABLE +#define SMARTCARD_NACK_DISABLED SMARTCARD_NACK_DISABLE + +#define SMARTCARD_ONEBIT_SAMPLING_DISABLED SMARTCARD_ONE_BIT_SAMPLE_DISABLE +#define SMARTCARD_ONEBIT_SAMPLING_ENABLED SMARTCARD_ONE_BIT_SAMPLE_ENABLE +#define SMARTCARD_ONEBIT_SAMPLING_DISABLE SMARTCARD_ONE_BIT_SAMPLE_DISABLE +#define SMARTCARD_ONEBIT_SAMPLING_ENABLE SMARTCARD_ONE_BIT_SAMPLE_ENABLE + +#define SMARTCARD_TIMEOUT_DISABLED SMARTCARD_TIMEOUT_DISABLE +#define SMARTCARD_TIMEOUT_ENABLED SMARTCARD_TIMEOUT_ENABLE + +#define SMARTCARD_LASTBIT_DISABLED SMARTCARD_LASTBIT_DISABLE +#define SMARTCARD_LASTBIT_ENABLED SMARTCARD_LASTBIT_ENABLE +/** + * @} + */ + + +/** @defgroup HAL_SMBUS_Aliased_Defines HAL SMBUS Aliased Defines maintained for legacy purpose + * @{ + */ +#define SMBUS_DUALADDRESS_DISABLED SMBUS_DUALADDRESS_DISABLE +#define SMBUS_DUALADDRESS_ENABLED SMBUS_DUALADDRESS_ENABLE +#define SMBUS_GENERALCALL_DISABLED SMBUS_GENERALCALL_DISABLE +#define SMBUS_GENERALCALL_ENABLED SMBUS_GENERALCALL_ENABLE +#define SMBUS_NOSTRETCH_DISABLED SMBUS_NOSTRETCH_DISABLE +#define SMBUS_NOSTRETCH_ENABLED SMBUS_NOSTRETCH_ENABLE +#define SMBUS_ANALOGFILTER_ENABLED SMBUS_ANALOGFILTER_ENABLE +#define SMBUS_ANALOGFILTER_DISABLED SMBUS_ANALOGFILTER_DISABLE +#define SMBUS_PEC_DISABLED SMBUS_PEC_DISABLE +#define SMBUS_PEC_ENABLED SMBUS_PEC_ENABLE +#define HAL_SMBUS_STATE_SLAVE_LISTEN HAL_SMBUS_STATE_LISTEN +/** + * @} + */ + +/** @defgroup HAL_SPI_Aliased_Defines HAL SPI Aliased Defines maintained for legacy purpose + * @{ + */ +#define SPI_TIMODE_DISABLED SPI_TIMODE_DISABLE +#define SPI_TIMODE_ENABLED SPI_TIMODE_ENABLE + +#define SPI_CRCCALCULATION_DISABLED SPI_CRCCALCULATION_DISABLE +#define SPI_CRCCALCULATION_ENABLED SPI_CRCCALCULATION_ENABLE + +#define SPI_NSS_PULSE_DISABLED SPI_NSS_PULSE_DISABLE +#define SPI_NSS_PULSE_ENABLED SPI_NSS_PULSE_ENABLE + +#if defined(STM32H7) + +#define SPI_FLAG_TXE SPI_FLAG_TXP +#define SPI_FLAG_RXNE SPI_FLAG_RXP + +#define SPI_IT_TXE SPI_IT_TXP +#define SPI_IT_RXNE SPI_IT_RXP + +#define SPI_FRLVL_EMPTY SPI_RX_FIFO_0PACKET +#define SPI_FRLVL_QUARTER_FULL SPI_RX_FIFO_1PACKET +#define SPI_FRLVL_HALF_FULL SPI_RX_FIFO_2PACKET +#define SPI_FRLVL_FULL SPI_RX_FIFO_3PACKET + +#endif /* STM32H7 */ + +/** + * @} + */ + +/** @defgroup HAL_TIM_Aliased_Defines HAL TIM Aliased Defines maintained for legacy purpose + * @{ + */ +#define CCER_CCxE_MASK TIM_CCER_CCxE_MASK +#define CCER_CCxNE_MASK TIM_CCER_CCxNE_MASK + +#define TIM_DMABase_CR1 TIM_DMABASE_CR1 +#define TIM_DMABase_CR2 TIM_DMABASE_CR2 +#define TIM_DMABase_SMCR TIM_DMABASE_SMCR +#define TIM_DMABase_DIER TIM_DMABASE_DIER +#define TIM_DMABase_SR TIM_DMABASE_SR +#define TIM_DMABase_EGR TIM_DMABASE_EGR +#define TIM_DMABase_CCMR1 TIM_DMABASE_CCMR1 +#define TIM_DMABase_CCMR2 TIM_DMABASE_CCMR2 +#define TIM_DMABase_CCER TIM_DMABASE_CCER +#define TIM_DMABase_CNT TIM_DMABASE_CNT +#define TIM_DMABase_PSC TIM_DMABASE_PSC +#define TIM_DMABase_ARR TIM_DMABASE_ARR +#define TIM_DMABase_RCR TIM_DMABASE_RCR +#define TIM_DMABase_CCR1 TIM_DMABASE_CCR1 +#define TIM_DMABase_CCR2 TIM_DMABASE_CCR2 +#define TIM_DMABase_CCR3 TIM_DMABASE_CCR3 +#define TIM_DMABase_CCR4 TIM_DMABASE_CCR4 +#define TIM_DMABase_BDTR TIM_DMABASE_BDTR +#define TIM_DMABase_DCR TIM_DMABASE_DCR +#define TIM_DMABase_DMAR TIM_DMABASE_DMAR +#define TIM_DMABase_OR1 TIM_DMABASE_OR1 +#define TIM_DMABase_CCMR3 TIM_DMABASE_CCMR3 +#define TIM_DMABase_CCR5 TIM_DMABASE_CCR5 +#define TIM_DMABase_CCR6 TIM_DMABASE_CCR6 +#define TIM_DMABase_OR2 TIM_DMABASE_OR2 +#define TIM_DMABase_OR3 TIM_DMABASE_OR3 +#define TIM_DMABase_OR TIM_DMABASE_OR + +#define TIM_EventSource_Update TIM_EVENTSOURCE_UPDATE +#define TIM_EventSource_CC1 TIM_EVENTSOURCE_CC1 +#define TIM_EventSource_CC2 TIM_EVENTSOURCE_CC2 +#define TIM_EventSource_CC3 TIM_EVENTSOURCE_CC3 +#define TIM_EventSource_CC4 TIM_EVENTSOURCE_CC4 +#define TIM_EventSource_COM TIM_EVENTSOURCE_COM +#define TIM_EventSource_Trigger TIM_EVENTSOURCE_TRIGGER +#define TIM_EventSource_Break TIM_EVENTSOURCE_BREAK +#define TIM_EventSource_Break2 TIM_EVENTSOURCE_BREAK2 + +#define TIM_DMABurstLength_1Transfer TIM_DMABURSTLENGTH_1TRANSFER +#define TIM_DMABurstLength_2Transfers TIM_DMABURSTLENGTH_2TRANSFERS +#define TIM_DMABurstLength_3Transfers TIM_DMABURSTLENGTH_3TRANSFERS +#define TIM_DMABurstLength_4Transfers TIM_DMABURSTLENGTH_4TRANSFERS +#define TIM_DMABurstLength_5Transfers TIM_DMABURSTLENGTH_5TRANSFERS +#define TIM_DMABurstLength_6Transfers TIM_DMABURSTLENGTH_6TRANSFERS +#define TIM_DMABurstLength_7Transfers TIM_DMABURSTLENGTH_7TRANSFERS +#define TIM_DMABurstLength_8Transfers TIM_DMABURSTLENGTH_8TRANSFERS +#define TIM_DMABurstLength_9Transfers TIM_DMABURSTLENGTH_9TRANSFERS +#define TIM_DMABurstLength_10Transfers TIM_DMABURSTLENGTH_10TRANSFERS +#define TIM_DMABurstLength_11Transfers TIM_DMABURSTLENGTH_11TRANSFERS +#define TIM_DMABurstLength_12Transfers TIM_DMABURSTLENGTH_12TRANSFERS +#define TIM_DMABurstLength_13Transfers TIM_DMABURSTLENGTH_13TRANSFERS +#define TIM_DMABurstLength_14Transfers TIM_DMABURSTLENGTH_14TRANSFERS +#define TIM_DMABurstLength_15Transfers TIM_DMABURSTLENGTH_15TRANSFERS +#define TIM_DMABurstLength_16Transfers TIM_DMABURSTLENGTH_16TRANSFERS +#define TIM_DMABurstLength_17Transfers TIM_DMABURSTLENGTH_17TRANSFERS +#define TIM_DMABurstLength_18Transfers TIM_DMABURSTLENGTH_18TRANSFERS + +#if defined(STM32L0) +#define TIM22_TI1_GPIO1 TIM22_TI1_GPIO +#define TIM22_TI1_GPIO2 TIM22_TI1_GPIO +#endif + +#if defined(STM32F3) +#define IS_TIM_HALL_INTERFACE_INSTANCE IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE +#endif + +#if defined(STM32H7) +#define TIM_TIM1_ETR_COMP1_OUT TIM_TIM1_ETR_COMP1 +#define TIM_TIM1_ETR_COMP2_OUT TIM_TIM1_ETR_COMP2 +#define TIM_TIM8_ETR_COMP1_OUT TIM_TIM8_ETR_COMP1 +#define TIM_TIM8_ETR_COMP2_OUT TIM_TIM8_ETR_COMP2 +#define TIM_TIM2_ETR_COMP1_OUT TIM_TIM2_ETR_COMP1 +#define TIM_TIM2_ETR_COMP2_OUT TIM_TIM2_ETR_COMP2 +#define TIM_TIM3_ETR_COMP1_OUT TIM_TIM3_ETR_COMP1 +#define TIM_TIM1_TI1_COMP1_OUT TIM_TIM1_TI1_COMP1 +#define TIM_TIM8_TI1_COMP2_OUT TIM_TIM8_TI1_COMP2 +#define TIM_TIM2_TI4_COMP1_OUT TIM_TIM2_TI4_COMP1 +#define TIM_TIM2_TI4_COMP2_OUT TIM_TIM2_TI4_COMP2 +#define TIM_TIM2_TI4_COMP1COMP2_OUT TIM_TIM2_TI4_COMP1_COMP2 +#define TIM_TIM3_TI1_COMP1_OUT TIM_TIM3_TI1_COMP1 +#define TIM_TIM3_TI1_COMP2_OUT TIM_TIM3_TI1_COMP2 +#define TIM_TIM3_TI1_COMP1COMP2_OUT TIM_TIM3_TI1_COMP1_COMP2 +#endif + +#if defined(STM32U5) +#define OCREF_CLEAR_SELECT_Pos OCREF_CLEAR_SELECT_POS +#define OCREF_CLEAR_SELECT_Msk OCREF_CLEAR_SELECT_MSK +#endif +/** + * @} + */ + +/** @defgroup HAL_TSC_Aliased_Defines HAL TSC Aliased Defines maintained for legacy purpose + * @{ + */ +#define TSC_SYNC_POL_FALL TSC_SYNC_POLARITY_FALLING +#define TSC_SYNC_POL_RISE_HIGH TSC_SYNC_POLARITY_RISING +/** + * @} + */ + +/** @defgroup HAL_UART_Aliased_Defines HAL UART Aliased Defines maintained for legacy purpose + * @{ + */ +#define UART_ONEBIT_SAMPLING_DISABLED UART_ONE_BIT_SAMPLE_DISABLE +#define UART_ONEBIT_SAMPLING_ENABLED UART_ONE_BIT_SAMPLE_ENABLE +#define UART_ONE_BIT_SAMPLE_DISABLED UART_ONE_BIT_SAMPLE_DISABLE +#define UART_ONE_BIT_SAMPLE_ENABLED UART_ONE_BIT_SAMPLE_ENABLE + +#define __HAL_UART_ONEBIT_ENABLE __HAL_UART_ONE_BIT_SAMPLE_ENABLE +#define __HAL_UART_ONEBIT_DISABLE __HAL_UART_ONE_BIT_SAMPLE_DISABLE + +#define __DIV_SAMPLING16 UART_DIV_SAMPLING16 +#define __DIVMANT_SAMPLING16 UART_DIVMANT_SAMPLING16 +#define __DIVFRAQ_SAMPLING16 UART_DIVFRAQ_SAMPLING16 +#define __UART_BRR_SAMPLING16 UART_BRR_SAMPLING16 + +#define __DIV_SAMPLING8 UART_DIV_SAMPLING8 +#define __DIVMANT_SAMPLING8 UART_DIVMANT_SAMPLING8 +#define __DIVFRAQ_SAMPLING8 UART_DIVFRAQ_SAMPLING8 +#define __UART_BRR_SAMPLING8 UART_BRR_SAMPLING8 + +#define __DIV_LPUART UART_DIV_LPUART + +#define UART_WAKEUPMETHODE_IDLELINE UART_WAKEUPMETHOD_IDLELINE +#define UART_WAKEUPMETHODE_ADDRESSMARK UART_WAKEUPMETHOD_ADDRESSMARK + +/** + * @} + */ + + +/** @defgroup HAL_USART_Aliased_Defines HAL USART Aliased Defines maintained for legacy purpose + * @{ + */ + +#define USART_CLOCK_DISABLED USART_CLOCK_DISABLE +#define USART_CLOCK_ENABLED USART_CLOCK_ENABLE + +#define USARTNACK_ENABLED USART_NACK_ENABLE +#define USARTNACK_DISABLED USART_NACK_DISABLE +/** + * @} + */ + +/** @defgroup HAL_WWDG_Aliased_Defines HAL WWDG Aliased Defines maintained for legacy purpose + * @{ + */ +#define CFR_BASE WWDG_CFR_BASE + +/** + * @} + */ + +/** @defgroup HAL_CAN_Aliased_Defines HAL CAN Aliased Defines maintained for legacy purpose + * @{ + */ +#define CAN_FilterFIFO0 CAN_FILTER_FIFO0 +#define CAN_FilterFIFO1 CAN_FILTER_FIFO1 +#define CAN_IT_RQCP0 CAN_IT_TME +#define CAN_IT_RQCP1 CAN_IT_TME +#define CAN_IT_RQCP2 CAN_IT_TME +#define INAK_TIMEOUT CAN_TIMEOUT_VALUE +#define SLAK_TIMEOUT CAN_TIMEOUT_VALUE +#define CAN_TXSTATUS_FAILED ((uint8_t)0x00U) +#define CAN_TXSTATUS_OK ((uint8_t)0x01U) +#define CAN_TXSTATUS_PENDING ((uint8_t)0x02U) + +/** + * @} + */ + +/** @defgroup HAL_ETH_Aliased_Defines HAL ETH Aliased Defines maintained for legacy purpose + * @{ + */ + +#define VLAN_TAG ETH_VLAN_TAG +#define MIN_ETH_PAYLOAD ETH_MIN_ETH_PAYLOAD +#define MAX_ETH_PAYLOAD ETH_MAX_ETH_PAYLOAD +#define JUMBO_FRAME_PAYLOAD ETH_JUMBO_FRAME_PAYLOAD +#define MACMIIAR_CR_MASK ETH_MACMIIAR_CR_MASK +#define MACCR_CLEAR_MASK ETH_MACCR_CLEAR_MASK +#define MACFCR_CLEAR_MASK ETH_MACFCR_CLEAR_MASK +#define DMAOMR_CLEAR_MASK ETH_DMAOMR_CLEAR_MASK + +#define ETH_MMCCR 0x00000100U +#define ETH_MMCRIR 0x00000104U +#define ETH_MMCTIR 0x00000108U +#define ETH_MMCRIMR 0x0000010CU +#define ETH_MMCTIMR 0x00000110U +#define ETH_MMCTGFSCCR 0x0000014CU +#define ETH_MMCTGFMSCCR 0x00000150U +#define ETH_MMCTGFCR 0x00000168U +#define ETH_MMCRFCECR 0x00000194U +#define ETH_MMCRFAECR 0x00000198U +#define ETH_MMCRGUFCR 0x000001C4U + +#define ETH_MAC_TXFIFO_FULL 0x02000000U /* Tx FIFO full */ +#define ETH_MAC_TXFIFONOT_EMPTY 0x01000000U /* Tx FIFO not empty */ +#define ETH_MAC_TXFIFO_WRITE_ACTIVE 0x00400000U /* Tx FIFO write active */ +#define ETH_MAC_TXFIFO_IDLE 0x00000000U /* Tx FIFO read status: Idle */ +#define ETH_MAC_TXFIFO_READ 0x00100000U /* Tx FIFO read status: Read (transferring data to + the MAC transmitter) */ +#define ETH_MAC_TXFIFO_WAITING 0x00200000U /* Tx FIFO read status: Waiting for TxStatus from + MAC transmitter */ +#define ETH_MAC_TXFIFO_WRITING 0x00300000U /* Tx FIFO read status: Writing the received TxStatus + or flushing the TxFIFO */ +#define ETH_MAC_TRANSMISSION_PAUSE 0x00080000U /* MAC transmitter in pause */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_IDLE 0x00000000U /* MAC transmit frame controller: Idle */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_WAITING 0x00020000U /* MAC transmit frame controller: Waiting for Status + of previous frame or IFG/backoff period to be over */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_GENRATING_PCF 0x00040000U /* MAC transmit frame controller: Generating and + transmitting a Pause control frame (in full duplex mode) */ +#define ETH_MAC_TRANSMITFRAMECONTROLLER_TRANSFERRING 0x00060000U /* MAC transmit frame controller: Transferring input + frame for transmission */ +#define ETH_MAC_MII_TRANSMIT_ACTIVE 0x00010000U /* MAC MII transmit engine active */ +#define ETH_MAC_RXFIFO_EMPTY 0x00000000U /* Rx FIFO fill level: empty */ +#define ETH_MAC_RXFIFO_BELOW_THRESHOLD 0x00000100U /* Rx FIFO fill level: fill-level below flow-control + de-activate threshold */ +#define ETH_MAC_RXFIFO_ABOVE_THRESHOLD 0x00000200U /* Rx FIFO fill level: fill-level above flow-control + activate threshold */ +#define ETH_MAC_RXFIFO_FULL 0x00000300U /* Rx FIFO fill level: full */ +#if defined(STM32F1) +#else +#define ETH_MAC_READCONTROLLER_IDLE 0x00000000U /* Rx FIFO read controller IDLE state */ +#define ETH_MAC_READCONTROLLER_READING_DATA 0x00000020U /* Rx FIFO read controller Reading frame data */ +#define ETH_MAC_READCONTROLLER_READING_STATUS 0x00000040U /* Rx FIFO read controller Reading frame status + (or time-stamp) */ +#endif +#define ETH_MAC_READCONTROLLER_FLUSHING 0x00000060U /* Rx FIFO read controller Flushing the frame data and + status */ +#define ETH_MAC_RXFIFO_WRITE_ACTIVE 0x00000010U /* Rx FIFO write controller active */ +#define ETH_MAC_SMALL_FIFO_NOTACTIVE 0x00000000U /* MAC small FIFO read / write controllers not active */ +#define ETH_MAC_SMALL_FIFO_READ_ACTIVE 0x00000002U /* MAC small FIFO read controller active */ +#define ETH_MAC_SMALL_FIFO_WRITE_ACTIVE 0x00000004U /* MAC small FIFO write controller active */ +#define ETH_MAC_SMALL_FIFO_RW_ACTIVE 0x00000006U /* MAC small FIFO read / write controllers active */ +#define ETH_MAC_MII_RECEIVE_PROTOCOL_ACTIVE 0x00000001U /* MAC MII receive protocol engine active */ + +#define ETH_TxPacketConfig ETH_TxPacketConfigTypeDef /* Transmit Packet Configuration structure definition */ + +/** + * @} + */ + +/** @defgroup HAL_DCMI_Aliased_Defines HAL DCMI Aliased Defines maintained for legacy purpose + * @{ + */ +#define HAL_DCMI_ERROR_OVF HAL_DCMI_ERROR_OVR +#define DCMI_IT_OVF DCMI_IT_OVR +#define DCMI_FLAG_OVFRI DCMI_FLAG_OVRRI +#define DCMI_FLAG_OVFMI DCMI_FLAG_OVRMI + +#define HAL_DCMI_ConfigCROP HAL_DCMI_ConfigCrop +#define HAL_DCMI_EnableCROP HAL_DCMI_EnableCrop +#define HAL_DCMI_DisableCROP HAL_DCMI_DisableCrop + +/** + * @} + */ + +#if defined(STM32L4) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) \ + || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx) \ + || defined(STM32H7) +/** @defgroup HAL_DMA2D_Aliased_Defines HAL DMA2D Aliased Defines maintained for legacy purpose + * @{ + */ +#define DMA2D_ARGB8888 DMA2D_OUTPUT_ARGB8888 +#define DMA2D_RGB888 DMA2D_OUTPUT_RGB888 +#define DMA2D_RGB565 DMA2D_OUTPUT_RGB565 +#define DMA2D_ARGB1555 DMA2D_OUTPUT_ARGB1555 +#define DMA2D_ARGB4444 DMA2D_OUTPUT_ARGB4444 + +#define CM_ARGB8888 DMA2D_INPUT_ARGB8888 +#define CM_RGB888 DMA2D_INPUT_RGB888 +#define CM_RGB565 DMA2D_INPUT_RGB565 +#define CM_ARGB1555 DMA2D_INPUT_ARGB1555 +#define CM_ARGB4444 DMA2D_INPUT_ARGB4444 +#define CM_L8 DMA2D_INPUT_L8 +#define CM_AL44 DMA2D_INPUT_AL44 +#define CM_AL88 DMA2D_INPUT_AL88 +#define CM_L4 DMA2D_INPUT_L4 +#define CM_A8 DMA2D_INPUT_A8 +#define CM_A4 DMA2D_INPUT_A4 +/** + * @} + */ +#endif /* STM32L4 || STM32F7 || STM32F4 || STM32H7 */ + +#if defined(STM32L4) || defined(STM32F7) || defined(STM32F427xx) || defined(STM32F437xx) \ + || defined(STM32F429xx) || defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx) \ + || defined(STM32H7) || defined(STM32U5) +/** @defgroup DMA2D_Aliases DMA2D API Aliases + * @{ + */ +#define HAL_DMA2D_DisableCLUT HAL_DMA2D_CLUTLoading_Abort /*!< Aliased to HAL_DMA2D_CLUTLoading_Abort + for compatibility with legacy code */ +/** + * @} + */ + +#endif /* STM32L4 || STM32F7 || STM32F4 || STM32H7 || STM32U5 */ + +/** @defgroup HAL_PPP_Aliased_Defines HAL PPP Aliased Defines maintained for legacy purpose + * @{ + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup HAL_CRYP_Aliased_Functions HAL CRYP Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_CRYP_ComputationCpltCallback HAL_CRYPEx_ComputationCpltCallback +/** + * @} + */ + +/** @defgroup HAL_DCACHE_Aliased_Functions HAL DCACHE Aliased Functions maintained for legacy purpose + * @{ + */ + +#if defined(STM32U5) +#define HAL_DCACHE_CleanInvalidateByAddr HAL_DCACHE_CleanInvalidByAddr +#define HAL_DCACHE_CleanInvalidateByAddr_IT HAL_DCACHE_CleanInvalidByAddr_IT +#endif /* STM32U5 */ + +/** + * @} + */ + +#if !defined(STM32F2) +/** @defgroup HASH_alias HASH API alias + * @{ + */ +#define HAL_HASHEx_IRQHandler HAL_HASH_IRQHandler /*!< Redirection for compatibility with legacy code */ +/** + * + * @} + */ +#endif /* STM32F2 */ +/** @defgroup HAL_HASH_Aliased_Functions HAL HASH Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_HASH_STATETypeDef HAL_HASH_StateTypeDef +#define HAL_HASHPhaseTypeDef HAL_HASH_PhaseTypeDef +#define HAL_HMAC_MD5_Finish HAL_HASH_MD5_Finish +#define HAL_HMAC_SHA1_Finish HAL_HASH_SHA1_Finish +#define HAL_HMAC_SHA224_Finish HAL_HASH_SHA224_Finish +#define HAL_HMAC_SHA256_Finish HAL_HASH_SHA256_Finish + +/*HASH Algorithm Selection*/ + +#define HASH_AlgoSelection_SHA1 HASH_ALGOSELECTION_SHA1 +#define HASH_AlgoSelection_SHA224 HASH_ALGOSELECTION_SHA224 +#define HASH_AlgoSelection_SHA256 HASH_ALGOSELECTION_SHA256 +#define HASH_AlgoSelection_MD5 HASH_ALGOSELECTION_MD5 + +#define HASH_AlgoMode_HASH HASH_ALGOMODE_HASH +#define HASH_AlgoMode_HMAC HASH_ALGOMODE_HMAC + +#define HASH_HMACKeyType_ShortKey HASH_HMAC_KEYTYPE_SHORTKEY +#define HASH_HMACKeyType_LongKey HASH_HMAC_KEYTYPE_LONGKEY + +#if defined(STM32L4) || defined(STM32L5) || defined(STM32F2) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7) + +#define HAL_HASH_MD5_Accumulate HAL_HASH_MD5_Accmlt +#define HAL_HASH_MD5_Accumulate_End HAL_HASH_MD5_Accmlt_End +#define HAL_HASH_MD5_Accumulate_IT HAL_HASH_MD5_Accmlt_IT +#define HAL_HASH_MD5_Accumulate_End_IT HAL_HASH_MD5_Accmlt_End_IT + +#define HAL_HASH_SHA1_Accumulate HAL_HASH_SHA1_Accmlt +#define HAL_HASH_SHA1_Accumulate_End HAL_HASH_SHA1_Accmlt_End +#define HAL_HASH_SHA1_Accumulate_IT HAL_HASH_SHA1_Accmlt_IT +#define HAL_HASH_SHA1_Accumulate_End_IT HAL_HASH_SHA1_Accmlt_End_IT + +#define HAL_HASHEx_SHA224_Accumulate HAL_HASHEx_SHA224_Accmlt +#define HAL_HASHEx_SHA224_Accumulate_End HAL_HASHEx_SHA224_Accmlt_End +#define HAL_HASHEx_SHA224_Accumulate_IT HAL_HASHEx_SHA224_Accmlt_IT +#define HAL_HASHEx_SHA224_Accumulate_End_IT HAL_HASHEx_SHA224_Accmlt_End_IT + +#define HAL_HASHEx_SHA256_Accumulate HAL_HASHEx_SHA256_Accmlt +#define HAL_HASHEx_SHA256_Accumulate_End HAL_HASHEx_SHA256_Accmlt_End +#define HAL_HASHEx_SHA256_Accumulate_IT HAL_HASHEx_SHA256_Accmlt_IT +#define HAL_HASHEx_SHA256_Accumulate_End_IT HAL_HASHEx_SHA256_Accmlt_End_IT + +#endif /* STM32L4 || STM32L5 || STM32F2 || STM32F4 || STM32F7 || STM32H7 */ +/** + * @} + */ + +/** @defgroup HAL_Aliased_Functions HAL Generic Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_EnableDBGSleepMode HAL_DBGMCU_EnableDBGSleepMode +#define HAL_DisableDBGSleepMode HAL_DBGMCU_DisableDBGSleepMode +#define HAL_EnableDBGStopMode HAL_DBGMCU_EnableDBGStopMode +#define HAL_DisableDBGStopMode HAL_DBGMCU_DisableDBGStopMode +#define HAL_EnableDBGStandbyMode HAL_DBGMCU_EnableDBGStandbyMode +#define HAL_DisableDBGStandbyMode HAL_DBGMCU_DisableDBGStandbyMode +#define HAL_DBG_LowPowerConfig(Periph, cmd) (((cmd\ + )==ENABLE)? HAL_DBGMCU_DBG_EnableLowPowerConfig(Periph) : \ + HAL_DBGMCU_DBG_DisableLowPowerConfig(Periph)) +#define HAL_VREFINT_OutputSelect HAL_SYSCFG_VREFINT_OutputSelect +#define HAL_Lock_Cmd(cmd) (((cmd)==ENABLE) ? HAL_SYSCFG_Enable_Lock_VREFINT() : HAL_SYSCFG_Disable_Lock_VREFINT()) +#if defined(STM32L0) +#else +#define HAL_VREFINT_Cmd(cmd) (((cmd)==ENABLE)? HAL_SYSCFG_EnableVREFINT() : HAL_SYSCFG_DisableVREFINT()) +#endif +#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT()) +#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd\ + )==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : \ + HAL_ADCEx_DisableVREFINTTempSensor()) +#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7B0xx) || defined(STM32H7A3xxQ) || \ + defined(STM32H7B3xxQ) || defined(STM32H7B0xxQ) +#define HAL_EnableSRDomainDBGStopMode HAL_EnableDomain3DBGStopMode +#define HAL_DisableSRDomainDBGStopMode HAL_DisableDomain3DBGStopMode +#define HAL_EnableSRDomainDBGStandbyMode HAL_EnableDomain3DBGStandbyMode +#define HAL_DisableSRDomainDBGStandbyMode HAL_DisableDomain3DBGStandbyMode +#endif /* STM32H7A3xx || STM32H7B3xx || STM32H7B0xx || STM32H7A3xxQ || STM32H7B3xxQ || STM32H7B0xxQ */ + +/** + * @} + */ + +/** @defgroup HAL_FLASH_Aliased_Functions HAL FLASH Aliased Functions maintained for legacy purpose + * @{ + */ +#define FLASH_HalfPageProgram HAL_FLASHEx_HalfPageProgram +#define FLASH_EnableRunPowerDown HAL_FLASHEx_EnableRunPowerDown +#define FLASH_DisableRunPowerDown HAL_FLASHEx_DisableRunPowerDown +#define HAL_DATA_EEPROMEx_Unlock HAL_FLASHEx_DATAEEPROM_Unlock +#define HAL_DATA_EEPROMEx_Lock HAL_FLASHEx_DATAEEPROM_Lock +#define HAL_DATA_EEPROMEx_Erase HAL_FLASHEx_DATAEEPROM_Erase +#define HAL_DATA_EEPROMEx_Program HAL_FLASHEx_DATAEEPROM_Program + +/** + * @} + */ + +/** @defgroup HAL_I2C_Aliased_Functions HAL I2C Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_I2CEx_AnalogFilter_Config HAL_I2CEx_ConfigAnalogFilter +#define HAL_I2CEx_DigitalFilter_Config HAL_I2CEx_ConfigDigitalFilter +#define HAL_FMPI2CEx_AnalogFilter_Config HAL_FMPI2CEx_ConfigAnalogFilter +#define HAL_FMPI2CEx_DigitalFilter_Config HAL_FMPI2CEx_ConfigDigitalFilter + +#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) ((cmd == ENABLE)? \ + HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): \ + HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus)) + +#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || \ + defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || \ + defined(STM32L4) || defined(STM32L5) || defined(STM32G4) || defined(STM32L1) +#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT +#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT +#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT +#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT +#endif /* STM32H7 || STM32WB || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 || + STM32L4 || STM32L5 || STM32G4 || STM32L1 */ +#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || \ + defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)|| defined(STM32L1) +#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA +#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA +#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA +#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA +#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 || STM32L1 */ + +#if defined(STM32F4) +#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT +#define HAL_FMPI2C_Master_Sequential_Receive_IT HAL_FMPI2C_Master_Seq_Receive_IT +#define HAL_FMPI2C_Slave_Sequential_Transmit_IT HAL_FMPI2C_Slave_Seq_Transmit_IT +#define HAL_FMPI2C_Slave_Sequential_Receive_IT HAL_FMPI2C_Slave_Seq_Receive_IT +#define HAL_FMPI2C_Master_Sequential_Transmit_DMA HAL_FMPI2C_Master_Seq_Transmit_DMA +#define HAL_FMPI2C_Master_Sequential_Receive_DMA HAL_FMPI2C_Master_Seq_Receive_DMA +#define HAL_FMPI2C_Slave_Sequential_Transmit_DMA HAL_FMPI2C_Slave_Seq_Transmit_DMA +#define HAL_FMPI2C_Slave_Sequential_Receive_DMA HAL_FMPI2C_Slave_Seq_Receive_DMA +#endif /* STM32F4 */ +/** + * @} + */ + +/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose + * @{ + */ + +#if defined(STM32G0) +#define HAL_PWR_ConfigPVD HAL_PWREx_ConfigPVD +#define HAL_PWR_EnablePVD HAL_PWREx_EnablePVD +#define HAL_PWR_DisablePVD HAL_PWREx_DisablePVD +#define HAL_PWR_PVD_IRQHandler HAL_PWREx_PVD_IRQHandler +#endif +#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD +#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg +#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown +#define HAL_PWR_DisableVddio2Monitor HAL_PWREx_DisableVddio2Monitor +#define HAL_PWR_EnableBkUpReg HAL_PWREx_EnableBkUpReg +#define HAL_PWR_EnableFlashPowerDown HAL_PWREx_EnableFlashPowerDown +#define HAL_PWR_EnableVddio2Monitor HAL_PWREx_EnableVddio2Monitor +#define HAL_PWR_PVD_PVM_IRQHandler HAL_PWREx_PVD_PVM_IRQHandler +#define HAL_PWR_PVDLevelConfig HAL_PWR_ConfigPVD +#define HAL_PWR_Vddio2Monitor_IRQHandler HAL_PWREx_Vddio2Monitor_IRQHandler +#define HAL_PWR_Vddio2MonitorCallback HAL_PWREx_Vddio2MonitorCallback +#define HAL_PWREx_ActivateOverDrive HAL_PWREx_EnableOverDrive +#define HAL_PWREx_DeactivateOverDrive HAL_PWREx_DisableOverDrive +#define HAL_PWREx_DisableSDADCAnalog HAL_PWREx_DisableSDADC +#define HAL_PWREx_EnableSDADCAnalog HAL_PWREx_EnableSDADC +#define HAL_PWREx_PVMConfig HAL_PWREx_ConfigPVM + +#define PWR_MODE_NORMAL PWR_PVD_MODE_NORMAL +#define PWR_MODE_IT_RISING PWR_PVD_MODE_IT_RISING +#define PWR_MODE_IT_FALLING PWR_PVD_MODE_IT_FALLING +#define PWR_MODE_IT_RISING_FALLING PWR_PVD_MODE_IT_RISING_FALLING +#define PWR_MODE_EVENT_RISING PWR_PVD_MODE_EVENT_RISING +#define PWR_MODE_EVENT_FALLING PWR_PVD_MODE_EVENT_FALLING +#define PWR_MODE_EVENT_RISING_FALLING PWR_PVD_MODE_EVENT_RISING_FALLING + +#define CR_OFFSET_BB PWR_CR_OFFSET_BB +#define CSR_OFFSET_BB PWR_CSR_OFFSET_BB +#define PMODE_BIT_NUMBER VOS_BIT_NUMBER +#define CR_PMODE_BB CR_VOS_BB + +#define DBP_BitNumber DBP_BIT_NUMBER +#define PVDE_BitNumber PVDE_BIT_NUMBER +#define PMODE_BitNumber PMODE_BIT_NUMBER +#define EWUP_BitNumber EWUP_BIT_NUMBER +#define FPDS_BitNumber FPDS_BIT_NUMBER +#define ODEN_BitNumber ODEN_BIT_NUMBER +#define ODSWEN_BitNumber ODSWEN_BIT_NUMBER +#define MRLVDS_BitNumber MRLVDS_BIT_NUMBER +#define LPLVDS_BitNumber LPLVDS_BIT_NUMBER +#define BRE_BitNumber BRE_BIT_NUMBER + +#define PWR_MODE_EVT PWR_PVD_MODE_NORMAL + +#if defined (STM32U5) +#define PWR_SRAM1_PAGE1_STOP_RETENTION PWR_SRAM1_PAGE1_STOP +#define PWR_SRAM1_PAGE2_STOP_RETENTION PWR_SRAM1_PAGE2_STOP +#define PWR_SRAM1_PAGE3_STOP_RETENTION PWR_SRAM1_PAGE3_STOP +#define PWR_SRAM1_PAGE4_STOP_RETENTION PWR_SRAM1_PAGE4_STOP +#define PWR_SRAM1_PAGE5_STOP_RETENTION PWR_SRAM1_PAGE5_STOP +#define PWR_SRAM1_PAGE6_STOP_RETENTION PWR_SRAM1_PAGE6_STOP +#define PWR_SRAM1_PAGE7_STOP_RETENTION PWR_SRAM1_PAGE7_STOP +#define PWR_SRAM1_PAGE8_STOP_RETENTION PWR_SRAM1_PAGE8_STOP +#define PWR_SRAM1_PAGE9_STOP_RETENTION PWR_SRAM1_PAGE9_STOP +#define PWR_SRAM1_PAGE10_STOP_RETENTION PWR_SRAM1_PAGE10_STOP +#define PWR_SRAM1_PAGE11_STOP_RETENTION PWR_SRAM1_PAGE11_STOP +#define PWR_SRAM1_PAGE12_STOP_RETENTION PWR_SRAM1_PAGE12_STOP +#define PWR_SRAM1_FULL_STOP_RETENTION PWR_SRAM1_FULL_STOP + +#define PWR_SRAM2_PAGE1_STOP_RETENTION PWR_SRAM2_PAGE1_STOP +#define PWR_SRAM2_PAGE2_STOP_RETENTION PWR_SRAM2_PAGE2_STOP +#define PWR_SRAM2_FULL_STOP_RETENTION PWR_SRAM2_FULL_STOP + +#define PWR_SRAM3_PAGE1_STOP_RETENTION PWR_SRAM3_PAGE1_STOP +#define PWR_SRAM3_PAGE2_STOP_RETENTION PWR_SRAM3_PAGE2_STOP +#define PWR_SRAM3_PAGE3_STOP_RETENTION PWR_SRAM3_PAGE3_STOP +#define PWR_SRAM3_PAGE4_STOP_RETENTION PWR_SRAM3_PAGE4_STOP +#define PWR_SRAM3_PAGE5_STOP_RETENTION PWR_SRAM3_PAGE5_STOP +#define PWR_SRAM3_PAGE6_STOP_RETENTION PWR_SRAM3_PAGE6_STOP +#define PWR_SRAM3_PAGE7_STOP_RETENTION PWR_SRAM3_PAGE7_STOP +#define PWR_SRAM3_PAGE8_STOP_RETENTION PWR_SRAM3_PAGE8_STOP +#define PWR_SRAM3_PAGE9_STOP_RETENTION PWR_SRAM3_PAGE9_STOP +#define PWR_SRAM3_PAGE10_STOP_RETENTION PWR_SRAM3_PAGE10_STOP +#define PWR_SRAM3_PAGE11_STOP_RETENTION PWR_SRAM3_PAGE11_STOP +#define PWR_SRAM3_PAGE12_STOP_RETENTION PWR_SRAM3_PAGE12_STOP +#define PWR_SRAM3_PAGE13_STOP_RETENTION PWR_SRAM3_PAGE13_STOP +#define PWR_SRAM3_FULL_STOP_RETENTION PWR_SRAM3_FULL_STOP + +#define PWR_SRAM4_FULL_STOP_RETENTION PWR_SRAM4_FULL_STOP + +#define PWR_SRAM5_PAGE1_STOP_RETENTION PWR_SRAM5_PAGE1_STOP +#define PWR_SRAM5_PAGE2_STOP_RETENTION PWR_SRAM5_PAGE2_STOP +#define PWR_SRAM5_PAGE3_STOP_RETENTION PWR_SRAM5_PAGE3_STOP +#define PWR_SRAM5_PAGE4_STOP_RETENTION PWR_SRAM5_PAGE4_STOP +#define PWR_SRAM5_PAGE5_STOP_RETENTION PWR_SRAM5_PAGE5_STOP +#define PWR_SRAM5_PAGE6_STOP_RETENTION PWR_SRAM5_PAGE6_STOP +#define PWR_SRAM5_PAGE7_STOP_RETENTION PWR_SRAM5_PAGE7_STOP +#define PWR_SRAM5_PAGE8_STOP_RETENTION PWR_SRAM5_PAGE8_STOP +#define PWR_SRAM5_PAGE9_STOP_RETENTION PWR_SRAM5_PAGE9_STOP +#define PWR_SRAM5_PAGE10_STOP_RETENTION PWR_SRAM5_PAGE10_STOP +#define PWR_SRAM5_PAGE11_STOP_RETENTION PWR_SRAM5_PAGE11_STOP +#define PWR_SRAM5_PAGE12_STOP_RETENTION PWR_SRAM5_PAGE12_STOP +#define PWR_SRAM5_PAGE13_STOP_RETENTION PWR_SRAM5_PAGE13_STOP +#define PWR_SRAM5_FULL_STOP_RETENTION PWR_SRAM5_FULL_STOP + +#define PWR_SRAM6_PAGE1_STOP_RETENTION PWR_SRAM6_PAGE1_STOP +#define PWR_SRAM6_PAGE2_STOP_RETENTION PWR_SRAM6_PAGE2_STOP +#define PWR_SRAM6_PAGE3_STOP_RETENTION PWR_SRAM6_PAGE3_STOP +#define PWR_SRAM6_PAGE4_STOP_RETENTION PWR_SRAM6_PAGE4_STOP +#define PWR_SRAM6_PAGE5_STOP_RETENTION PWR_SRAM6_PAGE5_STOP +#define PWR_SRAM6_PAGE6_STOP_RETENTION PWR_SRAM6_PAGE6_STOP +#define PWR_SRAM6_PAGE7_STOP_RETENTION PWR_SRAM6_PAGE7_STOP +#define PWR_SRAM6_PAGE8_STOP_RETENTION PWR_SRAM6_PAGE8_STOP +#define PWR_SRAM6_FULL_STOP_RETENTION PWR_SRAM6_FULL_STOP + + +#define PWR_ICACHE_FULL_STOP_RETENTION PWR_ICACHE_FULL_STOP +#define PWR_DCACHE1_FULL_STOP_RETENTION PWR_DCACHE1_FULL_STOP +#define PWR_DCACHE2_FULL_STOP_RETENTION PWR_DCACHE2_FULL_STOP +#define PWR_DMA2DRAM_FULL_STOP_RETENTION PWR_DMA2DRAM_FULL_STOP +#define PWR_PERIPHRAM_FULL_STOP_RETENTION PWR_PERIPHRAM_FULL_STOP +#define PWR_PKA32RAM_FULL_STOP_RETENTION PWR_PKA32RAM_FULL_STOP +#define PWR_GRAPHICPRAM_FULL_STOP_RETENTION PWR_GRAPHICPRAM_FULL_STOP +#define PWR_DSIRAM_FULL_STOP_RETENTION PWR_DSIRAM_FULL_STOP +#define PWR_JPEGRAM_FULL_STOP_RETENTION PWR_JPEGRAM_FULL_STOP + + +#define PWR_SRAM2_PAGE1_STANDBY_RETENTION PWR_SRAM2_PAGE1_STANDBY +#define PWR_SRAM2_PAGE2_STANDBY_RETENTION PWR_SRAM2_PAGE2_STANDBY +#define PWR_SRAM2_FULL_STANDBY_RETENTION PWR_SRAM2_FULL_STANDBY + +#define PWR_SRAM1_FULL_RUN_RETENTION PWR_SRAM1_FULL_RUN +#define PWR_SRAM2_FULL_RUN_RETENTION PWR_SRAM2_FULL_RUN +#define PWR_SRAM3_FULL_RUN_RETENTION PWR_SRAM3_FULL_RUN +#define PWR_SRAM4_FULL_RUN_RETENTION PWR_SRAM4_FULL_RUN +#define PWR_SRAM5_FULL_RUN_RETENTION PWR_SRAM5_FULL_RUN +#define PWR_SRAM6_FULL_RUN_RETENTION PWR_SRAM6_FULL_RUN + +#define PWR_ALL_RAM_RUN_RETENTION_MASK PWR_ALL_RAM_RUN_MASK +#endif + +/** + * @} + */ + +/** @defgroup HAL_RTC_Aliased_Functions HAL RTC Aliased Functions maintained for legacy purpose + * @{ + */ +#if defined(STM32H5) || defined(STM32WBA) || defined(STM32H7RS) +#define HAL_RTCEx_SetBoothardwareKey HAL_RTCEx_LockBootHardwareKey +#define HAL_RTCEx_BKUPBlock_Enable HAL_RTCEx_BKUPBlock +#define HAL_RTCEx_BKUPBlock_Disable HAL_RTCEx_BKUPUnblock +#define HAL_RTCEx_Erase_SecretDev_Conf HAL_RTCEx_ConfigEraseDeviceSecrets +#endif /* STM32H5 || STM32WBA || STM32H7RS */ + +/** + * @} + */ + +/** @defgroup HAL_SMBUS_Aliased_Functions HAL SMBUS Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_SMBUS_Slave_Listen_IT HAL_SMBUS_EnableListen_IT +#define HAL_SMBUS_SlaveAddrCallback HAL_SMBUS_AddrCallback +#define HAL_SMBUS_SlaveListenCpltCallback HAL_SMBUS_ListenCpltCallback +/** + * @} + */ + +/** @defgroup HAL_SPI_Aliased_Functions HAL SPI Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_SPI_FlushRxFifo HAL_SPIEx_FlushRxFifo +/** + * @} + */ + +/** @defgroup HAL_TIM_Aliased_Functions HAL TIM Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_TIM_DMADelayPulseCplt TIM_DMADelayPulseCplt +#define HAL_TIM_DMAError TIM_DMAError +#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt +#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt +#if defined(STM32H7) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || \ + defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) +#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro +#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT +#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback +#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent +#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT +#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA +#endif /* STM32H7 || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 */ +/** + * @} + */ + +/** @defgroup HAL_UART_Aliased_Functions HAL UART Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_UART_WakeupCallback HAL_UARTEx_WakeupCallback +/** + * @} + */ + +/** @defgroup HAL_LTDC_Aliased_Functions HAL LTDC Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_LTDC_LineEvenCallback HAL_LTDC_LineEventCallback +#define HAL_LTDC_Relaod HAL_LTDC_Reload +#define HAL_LTDC_StructInitFromVideoConfig HAL_LTDCEx_StructInitFromVideoConfig +#define HAL_LTDC_StructInitFromAdaptedCommandConfig HAL_LTDCEx_StructInitFromAdaptedCommandConfig +/** + * @} + */ + + +/** @defgroup HAL_PPP_Aliased_Functions HAL PPP Aliased Functions maintained for legacy purpose + * @{ + */ + +/** + * @} + */ + +/* Exported macros ------------------------------------------------------------*/ + +/** @defgroup HAL_AES_Aliased_Macros HAL CRYP Aliased Macros maintained for legacy purpose + * @{ + */ +#define AES_IT_CC CRYP_IT_CC +#define AES_IT_ERR CRYP_IT_ERR +#define AES_FLAG_CCF CRYP_FLAG_CCF +/** + * @} + */ + +/** @defgroup HAL_Aliased_Macros HAL Generic Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_GET_BOOT_MODE __HAL_SYSCFG_GET_BOOT_MODE +#define __HAL_REMAPMEMORY_FLASH __HAL_SYSCFG_REMAPMEMORY_FLASH +#define __HAL_REMAPMEMORY_SYSTEMFLASH __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH +#define __HAL_REMAPMEMORY_SRAM __HAL_SYSCFG_REMAPMEMORY_SRAM +#define __HAL_REMAPMEMORY_FMC __HAL_SYSCFG_REMAPMEMORY_FMC +#define __HAL_REMAPMEMORY_FMC_SDRAM __HAL_SYSCFG_REMAPMEMORY_FMC_SDRAM +#define __HAL_REMAPMEMORY_FSMC __HAL_SYSCFG_REMAPMEMORY_FSMC +#define __HAL_REMAPMEMORY_QUADSPI __HAL_SYSCFG_REMAPMEMORY_QUADSPI +#define __HAL_FMC_BANK __HAL_SYSCFG_FMC_BANK +#define __HAL_GET_FLAG __HAL_SYSCFG_GET_FLAG +#define __HAL_CLEAR_FLAG __HAL_SYSCFG_CLEAR_FLAG +#define __HAL_VREFINT_OUT_ENABLE __HAL_SYSCFG_VREFINT_OUT_ENABLE +#define __HAL_VREFINT_OUT_DISABLE __HAL_SYSCFG_VREFINT_OUT_DISABLE +#define __HAL_SYSCFG_SRAM2_WRP_ENABLE __HAL_SYSCFG_SRAM2_WRP_0_31_ENABLE + +#define SYSCFG_FLAG_VREF_READY SYSCFG_FLAG_VREFINT_READY +#define SYSCFG_FLAG_RC48 RCC_FLAG_HSI48 +#define IS_SYSCFG_FASTMODEPLUS_CONFIG IS_I2C_FASTMODEPLUS +#define UFB_MODE_BitNumber UFB_MODE_BIT_NUMBER +#define CMP_PD_BitNumber CMP_PD_BIT_NUMBER + +/** + * @} + */ + + +/** @defgroup HAL_ADC_Aliased_Macros HAL ADC Aliased Macros maintained for legacy purpose + * @{ + */ +#define __ADC_ENABLE __HAL_ADC_ENABLE +#define __ADC_DISABLE __HAL_ADC_DISABLE +#define __HAL_ADC_ENABLING_CONDITIONS ADC_ENABLING_CONDITIONS +#define __HAL_ADC_DISABLING_CONDITIONS ADC_DISABLING_CONDITIONS +#define __HAL_ADC_IS_ENABLED ADC_IS_ENABLE +#define __ADC_IS_ENABLED ADC_IS_ENABLE +#define __HAL_ADC_IS_SOFTWARE_START_REGULAR ADC_IS_SOFTWARE_START_REGULAR +#define __HAL_ADC_IS_SOFTWARE_START_INJECTED ADC_IS_SOFTWARE_START_INJECTED +#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED ADC_IS_CONVERSION_ONGOING_REGULAR_INJECTED +#define __HAL_ADC_IS_CONVERSION_ONGOING_REGULAR ADC_IS_CONVERSION_ONGOING_REGULAR +#define __HAL_ADC_IS_CONVERSION_ONGOING_INJECTED ADC_IS_CONVERSION_ONGOING_INJECTED +#define __HAL_ADC_IS_CONVERSION_ONGOING ADC_IS_CONVERSION_ONGOING +#define __HAL_ADC_CLEAR_ERRORCODE ADC_CLEAR_ERRORCODE + +#define __HAL_ADC_GET_RESOLUTION ADC_GET_RESOLUTION +#define __HAL_ADC_JSQR_RK ADC_JSQR_RK +#define __HAL_ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_SHIFT +#define __HAL_ADC_CFGR_AWD23CR ADC_CFGR_AWD23CR +#define __HAL_ADC_CFGR_INJECT_AUTO_CONVERSION ADC_CFGR_INJECT_AUTO_CONVERSION +#define __HAL_ADC_CFGR_INJECT_CONTEXT_QUEUE ADC_CFGR_INJECT_CONTEXT_QUEUE +#define __HAL_ADC_CFGR_INJECT_DISCCONTINUOUS ADC_CFGR_INJECT_DISCCONTINUOUS +#define __HAL_ADC_CFGR_REG_DISCCONTINUOUS ADC_CFGR_REG_DISCCONTINUOUS +#define __HAL_ADC_CFGR_DISCONTINUOUS_NUM ADC_CFGR_DISCONTINUOUS_NUM +#define __HAL_ADC_CFGR_AUTOWAIT ADC_CFGR_AUTOWAIT +#define __HAL_ADC_CFGR_CONTINUOUS ADC_CFGR_CONTINUOUS +#define __HAL_ADC_CFGR_OVERRUN ADC_CFGR_OVERRUN +#define __HAL_ADC_CFGR_DMACONTREQ ADC_CFGR_DMACONTREQ +#define __HAL_ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_SET +#define __HAL_ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_SET +#define __HAL_ADC_OFR_CHANNEL ADC_OFR_CHANNEL +#define __HAL_ADC_DIFSEL_CHANNEL ADC_DIFSEL_CHANNEL +#define __HAL_ADC_CALFACT_DIFF_SET ADC_CALFACT_DIFF_SET +#define __HAL_ADC_CALFACT_DIFF_GET ADC_CALFACT_DIFF_GET +#define __HAL_ADC_TRX_HIGHTHRESHOLD ADC_TRX_HIGHTHRESHOLD + +#define __HAL_ADC_OFFSET_SHIFT_RESOLUTION ADC_OFFSET_SHIFT_RESOLUTION +#define __HAL_ADC_AWD1THRESHOLD_SHIFT_RESOLUTION ADC_AWD1THRESHOLD_SHIFT_RESOLUTION +#define __HAL_ADC_AWD23THRESHOLD_SHIFT_RESOLUTION ADC_AWD23THRESHOLD_SHIFT_RESOLUTION +#define __HAL_ADC_COMMON_REGISTER ADC_COMMON_REGISTER +#define __HAL_ADC_COMMON_CCR_MULTI ADC_COMMON_CCR_MULTI +#define __HAL_ADC_MULTIMODE_IS_ENABLED ADC_MULTIMODE_IS_ENABLE +#define __ADC_MULTIMODE_IS_ENABLED ADC_MULTIMODE_IS_ENABLE +#define __HAL_ADC_NONMULTIMODE_OR_MULTIMODEMASTER ADC_NONMULTIMODE_OR_MULTIMODEMASTER +#define __HAL_ADC_COMMON_ADC_OTHER ADC_COMMON_ADC_OTHER +#define __HAL_ADC_MULTI_SLAVE ADC_MULTI_SLAVE + +#define __HAL_ADC_SQR1_L ADC_SQR1_L_SHIFT +#define __HAL_ADC_JSQR_JL ADC_JSQR_JL_SHIFT +#define __HAL_ADC_JSQR_RK_JL ADC_JSQR_RK_JL +#define __HAL_ADC_CR1_DISCONTINUOUS_NUM ADC_CR1_DISCONTINUOUS_NUM +#define __HAL_ADC_CR1_SCAN ADC_CR1_SCAN_SET +#define __HAL_ADC_CONVCYCLES_MAX_RANGE ADC_CONVCYCLES_MAX_RANGE +#define __HAL_ADC_CLOCK_PRESCALER_RANGE ADC_CLOCK_PRESCALER_RANGE +#define __HAL_ADC_GET_CLOCK_PRESCALER ADC_GET_CLOCK_PRESCALER + +#define __HAL_ADC_SQR1 ADC_SQR1 +#define __HAL_ADC_SMPR1 ADC_SMPR1 +#define __HAL_ADC_SMPR2 ADC_SMPR2 +#define __HAL_ADC_SQR3_RK ADC_SQR3_RK +#define __HAL_ADC_SQR2_RK ADC_SQR2_RK +#define __HAL_ADC_SQR1_RK ADC_SQR1_RK +#define __HAL_ADC_CR2_CONTINUOUS ADC_CR2_CONTINUOUS +#define __HAL_ADC_CR1_DISCONTINUOUS ADC_CR1_DISCONTINUOUS +#define __HAL_ADC_CR1_SCANCONV ADC_CR1_SCANCONV +#define __HAL_ADC_CR2_EOCSelection ADC_CR2_EOCSelection +#define __HAL_ADC_CR2_DMAContReq ADC_CR2_DMAContReq +#define __HAL_ADC_JSQR ADC_JSQR + +#define __HAL_ADC_CHSELR_CHANNEL ADC_CHSELR_CHANNEL +#define __HAL_ADC_CFGR1_REG_DISCCONTINUOUS ADC_CFGR1_REG_DISCCONTINUOUS +#define __HAL_ADC_CFGR1_AUTOOFF ADC_CFGR1_AUTOOFF +#define __HAL_ADC_CFGR1_AUTOWAIT ADC_CFGR1_AUTOWAIT +#define __HAL_ADC_CFGR1_CONTINUOUS ADC_CFGR1_CONTINUOUS +#define __HAL_ADC_CFGR1_OVERRUN ADC_CFGR1_OVERRUN +#define __HAL_ADC_CFGR1_SCANDIR ADC_CFGR1_SCANDIR +#define __HAL_ADC_CFGR1_DMACONTREQ ADC_CFGR1_DMACONTREQ + +/** + * @} + */ + +/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_DHR12R1_ALIGNEMENT DAC_DHR12R1_ALIGNMENT +#define __HAL_DHR12R2_ALIGNEMENT DAC_DHR12R2_ALIGNMENT +#define __HAL_DHR12RD_ALIGNEMENT DAC_DHR12RD_ALIGNMENT +#define IS_DAC_GENERATE_WAVE IS_DAC_WAVE + +/** + * @} + */ + +/** @defgroup HAL_DBGMCU_Aliased_Macros HAL DBGMCU Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_FREEZE_TIM1_DBGMCU __HAL_DBGMCU_FREEZE_TIM1 +#define __HAL_UNFREEZE_TIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM1 +#define __HAL_FREEZE_TIM2_DBGMCU __HAL_DBGMCU_FREEZE_TIM2 +#define __HAL_UNFREEZE_TIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM2 +#define __HAL_FREEZE_TIM3_DBGMCU __HAL_DBGMCU_FREEZE_TIM3 +#define __HAL_UNFREEZE_TIM3_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM3 +#define __HAL_FREEZE_TIM4_DBGMCU __HAL_DBGMCU_FREEZE_TIM4 +#define __HAL_UNFREEZE_TIM4_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM4 +#define __HAL_FREEZE_TIM5_DBGMCU __HAL_DBGMCU_FREEZE_TIM5 +#define __HAL_UNFREEZE_TIM5_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM5 +#define __HAL_FREEZE_TIM6_DBGMCU __HAL_DBGMCU_FREEZE_TIM6 +#define __HAL_UNFREEZE_TIM6_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM6 +#define __HAL_FREEZE_TIM7_DBGMCU __HAL_DBGMCU_FREEZE_TIM7 +#define __HAL_UNFREEZE_TIM7_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM7 +#define __HAL_FREEZE_TIM8_DBGMCU __HAL_DBGMCU_FREEZE_TIM8 +#define __HAL_UNFREEZE_TIM8_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM8 + +#define __HAL_FREEZE_TIM9_DBGMCU __HAL_DBGMCU_FREEZE_TIM9 +#define __HAL_UNFREEZE_TIM9_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM9 +#define __HAL_FREEZE_TIM10_DBGMCU __HAL_DBGMCU_FREEZE_TIM10 +#define __HAL_UNFREEZE_TIM10_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM10 +#define __HAL_FREEZE_TIM11_DBGMCU __HAL_DBGMCU_FREEZE_TIM11 +#define __HAL_UNFREEZE_TIM11_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM11 +#define __HAL_FREEZE_TIM12_DBGMCU __HAL_DBGMCU_FREEZE_TIM12 +#define __HAL_UNFREEZE_TIM12_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM12 +#define __HAL_FREEZE_TIM13_DBGMCU __HAL_DBGMCU_FREEZE_TIM13 +#define __HAL_UNFREEZE_TIM13_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM13 +#define __HAL_FREEZE_TIM14_DBGMCU __HAL_DBGMCU_FREEZE_TIM14 +#define __HAL_UNFREEZE_TIM14_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM14 +#define __HAL_FREEZE_CAN2_DBGMCU __HAL_DBGMCU_FREEZE_CAN2 +#define __HAL_UNFREEZE_CAN2_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN2 + + +#define __HAL_FREEZE_TIM15_DBGMCU __HAL_DBGMCU_FREEZE_TIM15 +#define __HAL_UNFREEZE_TIM15_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM15 +#define __HAL_FREEZE_TIM16_DBGMCU __HAL_DBGMCU_FREEZE_TIM16 +#define __HAL_UNFREEZE_TIM16_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM16 +#define __HAL_FREEZE_TIM17_DBGMCU __HAL_DBGMCU_FREEZE_TIM17 +#define __HAL_UNFREEZE_TIM17_DBGMCU __HAL_DBGMCU_UNFREEZE_TIM17 +#define __HAL_FREEZE_RTC_DBGMCU __HAL_DBGMCU_FREEZE_RTC +#define __HAL_UNFREEZE_RTC_DBGMCU __HAL_DBGMCU_UNFREEZE_RTC +#if defined(STM32H7) +#define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG1 +#define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UnFreeze_WWDG1 +#define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG1 +#define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UnFreeze_IWDG1 +#else +#define __HAL_FREEZE_WWDG_DBGMCU __HAL_DBGMCU_FREEZE_WWDG +#define __HAL_UNFREEZE_WWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_WWDG +#define __HAL_FREEZE_IWDG_DBGMCU __HAL_DBGMCU_FREEZE_IWDG +#define __HAL_UNFREEZE_IWDG_DBGMCU __HAL_DBGMCU_UNFREEZE_IWDG +#endif /* STM32H7 */ +#define __HAL_FREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT +#define __HAL_UNFREEZE_I2C1_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT +#define __HAL_FREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT +#define __HAL_UNFREEZE_I2C2_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT +#define __HAL_FREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT +#define __HAL_UNFREEZE_I2C3_TIMEOUT_DBGMCU __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT +#define __HAL_FREEZE_CAN1_DBGMCU __HAL_DBGMCU_FREEZE_CAN1 +#define __HAL_UNFREEZE_CAN1_DBGMCU __HAL_DBGMCU_UNFREEZE_CAN1 +#define __HAL_FREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM1 +#define __HAL_UNFREEZE_LPTIM1_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM1 +#define __HAL_FREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_FREEZE_LPTIM2 +#define __HAL_UNFREEZE_LPTIM2_DBGMCU __HAL_DBGMCU_UNFREEZE_LPTIM2 + +/** + * @} + */ + +/** @defgroup HAL_COMP_Aliased_Macros HAL COMP Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined(STM32F3) +#define COMP_START __HAL_COMP_ENABLE +#define COMP_STOP __HAL_COMP_DISABLE +#define COMP_LOCK __HAL_COMP_LOCK + +#if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || defined(STM32F303x8) || \ + defined(STM32F334x8) || defined(STM32F328xx) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP6_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP6_EXTI_CLEAR_FLAG()) +#endif +#if defined(STM32F302xE) || defined(STM32F302xC) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP6_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP6_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP6_EXTI_CLEAR_FLAG()) +#endif +#if defined(STM32F303xE) || defined(STM32F398xx) || defined(STM32F303xC) || defined(STM32F358xx) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_RISING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_FALLING_EDGE() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP7_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_ENABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP7_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_DISABLE_IT() : \ + ((__EXTILINE__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP7_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_GET_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP7_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP2) ? __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP3) ? __HAL_COMP_COMP3_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP4) ? __HAL_COMP_COMP4_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP5) ? __HAL_COMP_COMP5_EXTI_CLEAR_FLAG() : \ + ((__FLAG__) == COMP_EXTI_LINE_COMP6) ? __HAL_COMP_COMP6_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP7_EXTI_CLEAR_FLAG()) +#endif +#if defined(STM32F373xC) ||defined(STM32F378xx) +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP2_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP2_EXTI_CLEAR_FLAG()) +#endif +#else +#define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE()) +#define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_ENABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_ENABLE_IT()) +#define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (((__EXTILINE__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_DISABLE_IT() : \ + __HAL_COMP_COMP2_EXTI_DISABLE_IT()) +#define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_GET_FLAG() : \ + __HAL_COMP_COMP2_EXTI_GET_FLAG()) +#define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__) (((__FLAG__) == COMP_EXTI_LINE_COMP1) ? __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() : \ + __HAL_COMP_COMP2_EXTI_CLEAR_FLAG()) +#endif + +#define __HAL_COMP_GET_EXTI_LINE COMP_GET_EXTI_LINE + +#if defined(STM32L0) || defined(STM32L4) +/* Note: On these STM32 families, the only argument of this macro */ +/* is COMP_FLAG_LOCK. */ +/* This macro is replaced by __HAL_COMP_IS_LOCKED with only HAL handle */ +/* argument. */ +#define __HAL_COMP_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_COMP_IS_LOCKED(__HANDLE__)) +#endif +/** + * @} + */ + +#if defined(STM32L0) || defined(STM32L4) +/** @defgroup HAL_COMP_Aliased_Functions HAL COMP Aliased Functions maintained for legacy purpose + * @{ + */ +#define HAL_COMP_Start_IT HAL_COMP_Start /* Function considered as legacy as EXTI event or IT configuration is + done into HAL_COMP_Init() */ +#define HAL_COMP_Stop_IT HAL_COMP_Stop /* Function considered as legacy as EXTI event or IT configuration is + done into HAL_COMP_Init() */ +/** + * @} + */ +#endif + +/** @defgroup HAL_DAC_Aliased_Macros HAL DAC Aliased Macros maintained for legacy purpose + * @{ + */ + +#define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_WAVE_NONE) || \ + ((WAVE) == DAC_WAVE_NOISE)|| \ + ((WAVE) == DAC_WAVE_TRIANGLE)) + +/** + * @} + */ + +/** @defgroup HAL_FLASH_Aliased_Macros HAL FLASH Aliased Macros maintained for legacy purpose + * @{ + */ + +#define IS_WRPAREA IS_OB_WRPAREA +#define IS_TYPEPROGRAM IS_FLASH_TYPEPROGRAM +#define IS_TYPEPROGRAMFLASH IS_FLASH_TYPEPROGRAM +#define IS_TYPEERASE IS_FLASH_TYPEERASE +#define IS_NBSECTORS IS_FLASH_NBSECTORS +#define IS_OB_WDG_SOURCE IS_OB_IWDG_SOURCE + +/** + * @} + */ + +/** @defgroup HAL_I2C_Aliased_Macros HAL I2C Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_I2C_RESET_CR2 I2C_RESET_CR2 +#define __HAL_I2C_GENERATE_START I2C_GENERATE_START +#if defined(STM32F1) +#define __HAL_I2C_FREQ_RANGE I2C_FREQRANGE +#else +#define __HAL_I2C_FREQ_RANGE I2C_FREQ_RANGE +#endif /* STM32F1 */ +#define __HAL_I2C_RISE_TIME I2C_RISE_TIME +#define __HAL_I2C_SPEED_STANDARD I2C_SPEED_STANDARD +#define __HAL_I2C_SPEED_FAST I2C_SPEED_FAST +#define __HAL_I2C_SPEED I2C_SPEED +#define __HAL_I2C_7BIT_ADD_WRITE I2C_7BIT_ADD_WRITE +#define __HAL_I2C_7BIT_ADD_READ I2C_7BIT_ADD_READ +#define __HAL_I2C_10BIT_ADDRESS I2C_10BIT_ADDRESS +#define __HAL_I2C_10BIT_HEADER_WRITE I2C_10BIT_HEADER_WRITE +#define __HAL_I2C_10BIT_HEADER_READ I2C_10BIT_HEADER_READ +#define __HAL_I2C_MEM_ADD_MSB I2C_MEM_ADD_MSB +#define __HAL_I2C_MEM_ADD_LSB I2C_MEM_ADD_LSB +#define __HAL_I2C_FREQRANGE I2C_FREQRANGE +/** + * @} + */ + +/** @defgroup HAL_I2S_Aliased_Macros HAL I2S Aliased Macros maintained for legacy purpose + * @{ + */ + +#define IS_I2S_INSTANCE IS_I2S_ALL_INSTANCE +#define IS_I2S_INSTANCE_EXT IS_I2S_ALL_INSTANCE_EXT + +#if defined(STM32H7) +#define __HAL_I2S_CLEAR_FREFLAG __HAL_I2S_CLEAR_TIFREFLAG +#endif + +/** + * @} + */ + +/** @defgroup HAL_IRDA_Aliased_Macros HAL IRDA Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __IRDA_DISABLE __HAL_IRDA_DISABLE +#define __IRDA_ENABLE __HAL_IRDA_ENABLE + +#define __HAL_IRDA_GETCLOCKSOURCE IRDA_GETCLOCKSOURCE +#define __HAL_IRDA_MASK_COMPUTATION IRDA_MASK_COMPUTATION +#define __IRDA_GETCLOCKSOURCE IRDA_GETCLOCKSOURCE +#define __IRDA_MASK_COMPUTATION IRDA_MASK_COMPUTATION + +#define IS_IRDA_ONEBIT_SAMPLE IS_IRDA_ONE_BIT_SAMPLE + + +/** + * @} + */ + + +/** @defgroup HAL_IWDG_Aliased_Macros HAL IWDG Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_IWDG_ENABLE_WRITE_ACCESS IWDG_ENABLE_WRITE_ACCESS +#define __HAL_IWDG_DISABLE_WRITE_ACCESS IWDG_DISABLE_WRITE_ACCESS +/** + * @} + */ + + +/** @defgroup HAL_LPTIM_Aliased_Macros HAL LPTIM Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_LPTIM_ENABLE_INTERRUPT __HAL_LPTIM_ENABLE_IT +#define __HAL_LPTIM_DISABLE_INTERRUPT __HAL_LPTIM_DISABLE_IT +#define __HAL_LPTIM_GET_ITSTATUS __HAL_LPTIM_GET_IT_SOURCE + +/** + * @} + */ + + +/** @defgroup HAL_OPAMP_Aliased_Macros HAL OPAMP Aliased Macros maintained for legacy purpose + * @{ + */ +#define __OPAMP_CSR_OPAXPD OPAMP_CSR_OPAXPD +#define __OPAMP_CSR_S3SELX OPAMP_CSR_S3SELX +#define __OPAMP_CSR_S4SELX OPAMP_CSR_S4SELX +#define __OPAMP_CSR_S5SELX OPAMP_CSR_S5SELX +#define __OPAMP_CSR_S6SELX OPAMP_CSR_S6SELX +#define __OPAMP_CSR_OPAXCAL_L OPAMP_CSR_OPAXCAL_L +#define __OPAMP_CSR_OPAXCAL_H OPAMP_CSR_OPAXCAL_H +#define __OPAMP_CSR_OPAXLPM OPAMP_CSR_OPAXLPM +#define __OPAMP_CSR_ALL_SWITCHES OPAMP_CSR_ALL_SWITCHES +#define __OPAMP_CSR_ANAWSELX OPAMP_CSR_ANAWSELX +#define __OPAMP_CSR_OPAXCALOUT OPAMP_CSR_OPAXCALOUT +#define __OPAMP_OFFSET_TRIM_BITSPOSITION OPAMP_OFFSET_TRIM_BITSPOSITION +#define __OPAMP_OFFSET_TRIM_SET OPAMP_OFFSET_TRIM_SET + +/** + * @} + */ + + +/** @defgroup HAL_PWR_Aliased_Macros HAL PWR Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_PVD_EVENT_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_EVENT +#define __HAL_PVD_EVENT_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_EVENT +#define __HAL_PVD_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE +#define __HAL_PVD_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PVD_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE +#define __HAL_PVD_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE +#define __HAL_PVM_EVENT_DISABLE __HAL_PWR_PVM_EVENT_DISABLE +#define __HAL_PVM_EVENT_ENABLE __HAL_PWR_PVM_EVENT_ENABLE +#define __HAL_PVM_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_DISABLE +#define __HAL_PVM_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVM_EXTI_FALLINGTRIGGER_ENABLE +#define __HAL_PVM_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVM_EXTI_RISINGTRIGGER_DISABLE +#define __HAL_PVM_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVM_EXTI_RISINGTRIGGER_ENABLE +#define __HAL_PWR_INTERNALWAKEUP_DISABLE HAL_PWREx_DisableInternalWakeUpLine +#define __HAL_PWR_INTERNALWAKEUP_ENABLE HAL_PWREx_EnableInternalWakeUpLine +#define __HAL_PWR_PULL_UP_DOWN_CONFIG_DISABLE HAL_PWREx_DisablePullUpPullDownConfig +#define __HAL_PWR_PULL_UP_DOWN_CONFIG_ENABLE HAL_PWREx_EnablePullUpPullDownConfig +#define __HAL_PWR_PVD_EXTI_CLEAR_EGDE_TRIGGER() do { __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE(); \ + __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); \ + } while(0) +#define __HAL_PWR_PVD_EXTI_EVENT_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_EVENT +#define __HAL_PWR_PVD_EXTI_EVENT_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_EVENT +#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE +#define __HAL_PWR_PVD_EXTI_FALLINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_DISABLE __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE +#define __HAL_PWR_PVD_EXTI_RISINGTRIGGER_ENABLE __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE +#define __HAL_PWR_PVD_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PWR_PVD_EXTI_SET_RISING_EDGE_TRIGGER __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE +#define __HAL_PWR_PVM_DISABLE() do { HAL_PWREx_DisablePVM1();HAL_PWREx_DisablePVM2(); \ + HAL_PWREx_DisablePVM3();HAL_PWREx_DisablePVM4(); \ + } while(0) +#define __HAL_PWR_PVM_ENABLE() do { HAL_PWREx_EnablePVM1();HAL_PWREx_EnablePVM2(); \ + HAL_PWREx_EnablePVM3();HAL_PWREx_EnablePVM4(); \ + } while(0) +#define __HAL_PWR_SRAM2CONTENT_PRESERVE_DISABLE HAL_PWREx_DisableSRAM2ContentRetention +#define __HAL_PWR_SRAM2CONTENT_PRESERVE_ENABLE HAL_PWREx_EnableSRAM2ContentRetention +#define __HAL_PWR_VDDIO2_DISABLE HAL_PWREx_DisableVddIO2 +#define __HAL_PWR_VDDIO2_ENABLE HAL_PWREx_EnableVddIO2 +#define __HAL_PWR_VDDIO2_EXTI_CLEAR_EGDE_TRIGGER __HAL_PWR_VDDIO2_EXTI_DISABLE_FALLING_EDGE +#define __HAL_PWR_VDDIO2_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_PWR_VDDIO2_EXTI_ENABLE_FALLING_EDGE +#define __HAL_PWR_VDDUSB_DISABLE HAL_PWREx_DisableVddUSB +#define __HAL_PWR_VDDUSB_ENABLE HAL_PWREx_EnableVddUSB + +#if defined (STM32F4) +#define __HAL_PVD_EXTI_ENABLE_IT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_ENABLE_IT() +#define __HAL_PVD_EXTI_DISABLE_IT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_DISABLE_IT() +#define __HAL_PVD_EXTI_GET_FLAG(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_GET_FLAG() +#define __HAL_PVD_EXTI_CLEAR_FLAG(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_CLEAR_FLAG() +#define __HAL_PVD_EXTI_GENERATE_SWIT(PWR_EXTI_LINE_PVD) __HAL_PWR_PVD_EXTI_GENERATE_SWIT() +#else +#define __HAL_PVD_EXTI_CLEAR_FLAG __HAL_PWR_PVD_EXTI_CLEAR_FLAG +#define __HAL_PVD_EXTI_DISABLE_IT __HAL_PWR_PVD_EXTI_DISABLE_IT +#define __HAL_PVD_EXTI_ENABLE_IT __HAL_PWR_PVD_EXTI_ENABLE_IT +#define __HAL_PVD_EXTI_GENERATE_SWIT __HAL_PWR_PVD_EXTI_GENERATE_SWIT +#define __HAL_PVD_EXTI_GET_FLAG __HAL_PWR_PVD_EXTI_GET_FLAG +#endif /* STM32F4 */ +/** + * @} + */ + + +/** @defgroup HAL_RCC_Aliased HAL RCC Aliased maintained for legacy purpose + * @{ + */ + +#define RCC_StopWakeUpClock_MSI RCC_STOP_WAKEUPCLOCK_MSI +#define RCC_StopWakeUpClock_HSI RCC_STOP_WAKEUPCLOCK_HSI + +#define HAL_RCC_CCSCallback HAL_RCC_CSSCallback +#define HAL_RC48_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? \ + HAL_RCCEx_EnableHSI48_VREFINT() : HAL_RCCEx_DisableHSI48_VREFINT()) + +#define __ADC_CLK_DISABLE __HAL_RCC_ADC_CLK_DISABLE +#define __ADC_CLK_ENABLE __HAL_RCC_ADC_CLK_ENABLE +#define __ADC_CLK_SLEEP_DISABLE __HAL_RCC_ADC_CLK_SLEEP_DISABLE +#define __ADC_CLK_SLEEP_ENABLE __HAL_RCC_ADC_CLK_SLEEP_ENABLE +#define __ADC_FORCE_RESET __HAL_RCC_ADC_FORCE_RESET +#define __ADC_RELEASE_RESET __HAL_RCC_ADC_RELEASE_RESET +#define __ADC1_CLK_DISABLE __HAL_RCC_ADC1_CLK_DISABLE +#define __ADC1_CLK_ENABLE __HAL_RCC_ADC1_CLK_ENABLE +#define __ADC1_FORCE_RESET __HAL_RCC_ADC1_FORCE_RESET +#define __ADC1_RELEASE_RESET __HAL_RCC_ADC1_RELEASE_RESET +#define __ADC1_CLK_SLEEP_ENABLE __HAL_RCC_ADC1_CLK_SLEEP_ENABLE +#define __ADC1_CLK_SLEEP_DISABLE __HAL_RCC_ADC1_CLK_SLEEP_DISABLE +#define __ADC2_CLK_DISABLE __HAL_RCC_ADC2_CLK_DISABLE +#define __ADC2_CLK_ENABLE __HAL_RCC_ADC2_CLK_ENABLE +#define __ADC2_FORCE_RESET __HAL_RCC_ADC2_FORCE_RESET +#define __ADC2_RELEASE_RESET __HAL_RCC_ADC2_RELEASE_RESET +#define __ADC3_CLK_DISABLE __HAL_RCC_ADC3_CLK_DISABLE +#define __ADC3_CLK_ENABLE __HAL_RCC_ADC3_CLK_ENABLE +#define __ADC3_FORCE_RESET __HAL_RCC_ADC3_FORCE_RESET +#define __ADC3_RELEASE_RESET __HAL_RCC_ADC3_RELEASE_RESET +#define __AES_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE +#define __AES_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE +#define __AES_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE +#define __AES_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE +#define __AES_FORCE_RESET __HAL_RCC_AES_FORCE_RESET +#define __AES_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET +#define __CRYP_CLK_SLEEP_ENABLE __HAL_RCC_CRYP_CLK_SLEEP_ENABLE +#define __CRYP_CLK_SLEEP_DISABLE __HAL_RCC_CRYP_CLK_SLEEP_DISABLE +#define __CRYP_CLK_ENABLE __HAL_RCC_CRYP_CLK_ENABLE +#define __CRYP_CLK_DISABLE __HAL_RCC_CRYP_CLK_DISABLE +#define __CRYP_FORCE_RESET __HAL_RCC_CRYP_FORCE_RESET +#define __CRYP_RELEASE_RESET __HAL_RCC_CRYP_RELEASE_RESET +#define __AFIO_CLK_DISABLE __HAL_RCC_AFIO_CLK_DISABLE +#define __AFIO_CLK_ENABLE __HAL_RCC_AFIO_CLK_ENABLE +#define __AFIO_FORCE_RESET __HAL_RCC_AFIO_FORCE_RESET +#define __AFIO_RELEASE_RESET __HAL_RCC_AFIO_RELEASE_RESET +#define __AHB_FORCE_RESET __HAL_RCC_AHB_FORCE_RESET +#define __AHB_RELEASE_RESET __HAL_RCC_AHB_RELEASE_RESET +#define __AHB1_FORCE_RESET __HAL_RCC_AHB1_FORCE_RESET +#define __AHB1_RELEASE_RESET __HAL_RCC_AHB1_RELEASE_RESET +#define __AHB2_FORCE_RESET __HAL_RCC_AHB2_FORCE_RESET +#define __AHB2_RELEASE_RESET __HAL_RCC_AHB2_RELEASE_RESET +#define __AHB3_FORCE_RESET __HAL_RCC_AHB3_FORCE_RESET +#define __AHB3_RELEASE_RESET __HAL_RCC_AHB3_RELEASE_RESET +#define __APB1_FORCE_RESET __HAL_RCC_APB1_FORCE_RESET +#define __APB1_RELEASE_RESET __HAL_RCC_APB1_RELEASE_RESET +#define __APB2_FORCE_RESET __HAL_RCC_APB2_FORCE_RESET +#define __APB2_RELEASE_RESET __HAL_RCC_APB2_RELEASE_RESET +#define __BKP_CLK_DISABLE __HAL_RCC_BKP_CLK_DISABLE +#define __BKP_CLK_ENABLE __HAL_RCC_BKP_CLK_ENABLE +#define __BKP_FORCE_RESET __HAL_RCC_BKP_FORCE_RESET +#define __BKP_RELEASE_RESET __HAL_RCC_BKP_RELEASE_RESET +#define __CAN1_CLK_DISABLE __HAL_RCC_CAN1_CLK_DISABLE +#define __CAN1_CLK_ENABLE __HAL_RCC_CAN1_CLK_ENABLE +#define __CAN1_CLK_SLEEP_DISABLE __HAL_RCC_CAN1_CLK_SLEEP_DISABLE +#define __CAN1_CLK_SLEEP_ENABLE __HAL_RCC_CAN1_CLK_SLEEP_ENABLE +#define __CAN1_FORCE_RESET __HAL_RCC_CAN1_FORCE_RESET +#define __CAN1_RELEASE_RESET __HAL_RCC_CAN1_RELEASE_RESET +#define __CAN_CLK_DISABLE __HAL_RCC_CAN1_CLK_DISABLE +#define __CAN_CLK_ENABLE __HAL_RCC_CAN1_CLK_ENABLE +#define __CAN_FORCE_RESET __HAL_RCC_CAN1_FORCE_RESET +#define __CAN_RELEASE_RESET __HAL_RCC_CAN1_RELEASE_RESET +#define __CAN2_CLK_DISABLE __HAL_RCC_CAN2_CLK_DISABLE +#define __CAN2_CLK_ENABLE __HAL_RCC_CAN2_CLK_ENABLE +#define __CAN2_FORCE_RESET __HAL_RCC_CAN2_FORCE_RESET +#define __CAN2_RELEASE_RESET __HAL_RCC_CAN2_RELEASE_RESET +#define __CEC_CLK_DISABLE __HAL_RCC_CEC_CLK_DISABLE +#define __CEC_CLK_ENABLE __HAL_RCC_CEC_CLK_ENABLE +#define __COMP_CLK_DISABLE __HAL_RCC_COMP_CLK_DISABLE +#define __COMP_CLK_ENABLE __HAL_RCC_COMP_CLK_ENABLE +#define __COMP_FORCE_RESET __HAL_RCC_COMP_FORCE_RESET +#define __COMP_RELEASE_RESET __HAL_RCC_COMP_RELEASE_RESET +#define __COMP_CLK_SLEEP_ENABLE __HAL_RCC_COMP_CLK_SLEEP_ENABLE +#define __COMP_CLK_SLEEP_DISABLE __HAL_RCC_COMP_CLK_SLEEP_DISABLE +#define __CEC_FORCE_RESET __HAL_RCC_CEC_FORCE_RESET +#define __CEC_RELEASE_RESET __HAL_RCC_CEC_RELEASE_RESET +#define __CRC_CLK_DISABLE __HAL_RCC_CRC_CLK_DISABLE +#define __CRC_CLK_ENABLE __HAL_RCC_CRC_CLK_ENABLE +#define __CRC_CLK_SLEEP_DISABLE __HAL_RCC_CRC_CLK_SLEEP_DISABLE +#define __CRC_CLK_SLEEP_ENABLE __HAL_RCC_CRC_CLK_SLEEP_ENABLE +#define __CRC_FORCE_RESET __HAL_RCC_CRC_FORCE_RESET +#define __CRC_RELEASE_RESET __HAL_RCC_CRC_RELEASE_RESET +#define __DAC_CLK_DISABLE __HAL_RCC_DAC_CLK_DISABLE +#define __DAC_CLK_ENABLE __HAL_RCC_DAC_CLK_ENABLE +#define __DAC_FORCE_RESET __HAL_RCC_DAC_FORCE_RESET +#define __DAC_RELEASE_RESET __HAL_RCC_DAC_RELEASE_RESET +#define __DAC1_CLK_DISABLE __HAL_RCC_DAC1_CLK_DISABLE +#define __DAC1_CLK_ENABLE __HAL_RCC_DAC1_CLK_ENABLE +#define __DAC1_CLK_SLEEP_DISABLE __HAL_RCC_DAC1_CLK_SLEEP_DISABLE +#define __DAC1_CLK_SLEEP_ENABLE __HAL_RCC_DAC1_CLK_SLEEP_ENABLE +#define __DAC1_FORCE_RESET __HAL_RCC_DAC1_FORCE_RESET +#define __DAC1_RELEASE_RESET __HAL_RCC_DAC1_RELEASE_RESET +#define __DBGMCU_CLK_ENABLE __HAL_RCC_DBGMCU_CLK_ENABLE +#define __DBGMCU_CLK_DISABLE __HAL_RCC_DBGMCU_CLK_DISABLE +#define __DBGMCU_FORCE_RESET __HAL_RCC_DBGMCU_FORCE_RESET +#define __DBGMCU_RELEASE_RESET __HAL_RCC_DBGMCU_RELEASE_RESET +#define __DFSDM_CLK_DISABLE __HAL_RCC_DFSDM_CLK_DISABLE +#define __DFSDM_CLK_ENABLE __HAL_RCC_DFSDM_CLK_ENABLE +#define __DFSDM_CLK_SLEEP_DISABLE __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE +#define __DFSDM_CLK_SLEEP_ENABLE __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE +#define __DFSDM_FORCE_RESET __HAL_RCC_DFSDM_FORCE_RESET +#define __DFSDM_RELEASE_RESET __HAL_RCC_DFSDM_RELEASE_RESET +#define __DMA1_CLK_DISABLE __HAL_RCC_DMA1_CLK_DISABLE +#define __DMA1_CLK_ENABLE __HAL_RCC_DMA1_CLK_ENABLE +#define __DMA1_CLK_SLEEP_DISABLE __HAL_RCC_DMA1_CLK_SLEEP_DISABLE +#define __DMA1_CLK_SLEEP_ENABLE __HAL_RCC_DMA1_CLK_SLEEP_ENABLE +#define __DMA1_FORCE_RESET __HAL_RCC_DMA1_FORCE_RESET +#define __DMA1_RELEASE_RESET __HAL_RCC_DMA1_RELEASE_RESET +#define __DMA2_CLK_DISABLE __HAL_RCC_DMA2_CLK_DISABLE +#define __DMA2_CLK_ENABLE __HAL_RCC_DMA2_CLK_ENABLE +#define __DMA2_CLK_SLEEP_DISABLE __HAL_RCC_DMA2_CLK_SLEEP_DISABLE +#define __DMA2_CLK_SLEEP_ENABLE __HAL_RCC_DMA2_CLK_SLEEP_ENABLE +#define __DMA2_FORCE_RESET __HAL_RCC_DMA2_FORCE_RESET +#define __DMA2_RELEASE_RESET __HAL_RCC_DMA2_RELEASE_RESET +#define __ETHMAC_CLK_DISABLE __HAL_RCC_ETHMAC_CLK_DISABLE +#define __ETHMAC_CLK_ENABLE __HAL_RCC_ETHMAC_CLK_ENABLE +#define __ETHMAC_FORCE_RESET __HAL_RCC_ETHMAC_FORCE_RESET +#define __ETHMAC_RELEASE_RESET __HAL_RCC_ETHMAC_RELEASE_RESET +#define __ETHMACRX_CLK_DISABLE __HAL_RCC_ETHMACRX_CLK_DISABLE +#define __ETHMACRX_CLK_ENABLE __HAL_RCC_ETHMACRX_CLK_ENABLE +#define __ETHMACTX_CLK_DISABLE __HAL_RCC_ETHMACTX_CLK_DISABLE +#define __ETHMACTX_CLK_ENABLE __HAL_RCC_ETHMACTX_CLK_ENABLE +#define __FIREWALL_CLK_DISABLE __HAL_RCC_FIREWALL_CLK_DISABLE +#define __FIREWALL_CLK_ENABLE __HAL_RCC_FIREWALL_CLK_ENABLE +#define __FLASH_CLK_DISABLE __HAL_RCC_FLASH_CLK_DISABLE +#define __FLASH_CLK_ENABLE __HAL_RCC_FLASH_CLK_ENABLE +#define __FLASH_CLK_SLEEP_DISABLE __HAL_RCC_FLASH_CLK_SLEEP_DISABLE +#define __FLASH_CLK_SLEEP_ENABLE __HAL_RCC_FLASH_CLK_SLEEP_ENABLE +#define __FLASH_FORCE_RESET __HAL_RCC_FLASH_FORCE_RESET +#define __FLASH_RELEASE_RESET __HAL_RCC_FLASH_RELEASE_RESET +#define __FLITF_CLK_DISABLE __HAL_RCC_FLITF_CLK_DISABLE +#define __FLITF_CLK_ENABLE __HAL_RCC_FLITF_CLK_ENABLE +#define __FLITF_FORCE_RESET __HAL_RCC_FLITF_FORCE_RESET +#define __FLITF_RELEASE_RESET __HAL_RCC_FLITF_RELEASE_RESET +#define __FLITF_CLK_SLEEP_ENABLE __HAL_RCC_FLITF_CLK_SLEEP_ENABLE +#define __FLITF_CLK_SLEEP_DISABLE __HAL_RCC_FLITF_CLK_SLEEP_DISABLE +#define __FMC_CLK_DISABLE __HAL_RCC_FMC_CLK_DISABLE +#define __FMC_CLK_ENABLE __HAL_RCC_FMC_CLK_ENABLE +#define __FMC_CLK_SLEEP_DISABLE __HAL_RCC_FMC_CLK_SLEEP_DISABLE +#define __FMC_CLK_SLEEP_ENABLE __HAL_RCC_FMC_CLK_SLEEP_ENABLE +#define __FMC_FORCE_RESET __HAL_RCC_FMC_FORCE_RESET +#define __FMC_RELEASE_RESET __HAL_RCC_FMC_RELEASE_RESET +#define __FSMC_CLK_DISABLE __HAL_RCC_FSMC_CLK_DISABLE +#define __FSMC_CLK_ENABLE __HAL_RCC_FSMC_CLK_ENABLE +#define __GPIOA_CLK_DISABLE __HAL_RCC_GPIOA_CLK_DISABLE +#define __GPIOA_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE +#define __GPIOA_CLK_SLEEP_DISABLE __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE +#define __GPIOA_CLK_SLEEP_ENABLE __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE +#define __GPIOA_FORCE_RESET __HAL_RCC_GPIOA_FORCE_RESET +#define __GPIOA_RELEASE_RESET __HAL_RCC_GPIOA_RELEASE_RESET +#define __GPIOB_CLK_DISABLE __HAL_RCC_GPIOB_CLK_DISABLE +#define __GPIOB_CLK_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE +#define __GPIOB_CLK_SLEEP_DISABLE __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE +#define __GPIOB_CLK_SLEEP_ENABLE __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE +#define __GPIOB_FORCE_RESET __HAL_RCC_GPIOB_FORCE_RESET +#define __GPIOB_RELEASE_RESET __HAL_RCC_GPIOB_RELEASE_RESET +#define __GPIOC_CLK_DISABLE __HAL_RCC_GPIOC_CLK_DISABLE +#define __GPIOC_CLK_ENABLE __HAL_RCC_GPIOC_CLK_ENABLE +#define __GPIOC_CLK_SLEEP_DISABLE __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE +#define __GPIOC_CLK_SLEEP_ENABLE __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE +#define __GPIOC_FORCE_RESET __HAL_RCC_GPIOC_FORCE_RESET +#define __GPIOC_RELEASE_RESET __HAL_RCC_GPIOC_RELEASE_RESET +#define __GPIOD_CLK_DISABLE __HAL_RCC_GPIOD_CLK_DISABLE +#define __GPIOD_CLK_ENABLE __HAL_RCC_GPIOD_CLK_ENABLE +#define __GPIOD_CLK_SLEEP_DISABLE __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE +#define __GPIOD_CLK_SLEEP_ENABLE __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE +#define __GPIOD_FORCE_RESET __HAL_RCC_GPIOD_FORCE_RESET +#define __GPIOD_RELEASE_RESET __HAL_RCC_GPIOD_RELEASE_RESET +#define __GPIOE_CLK_DISABLE __HAL_RCC_GPIOE_CLK_DISABLE +#define __GPIOE_CLK_ENABLE __HAL_RCC_GPIOE_CLK_ENABLE +#define __GPIOE_CLK_SLEEP_DISABLE __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE +#define __GPIOE_CLK_SLEEP_ENABLE __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE +#define __GPIOE_FORCE_RESET __HAL_RCC_GPIOE_FORCE_RESET +#define __GPIOE_RELEASE_RESET __HAL_RCC_GPIOE_RELEASE_RESET +#define __GPIOF_CLK_DISABLE __HAL_RCC_GPIOF_CLK_DISABLE +#define __GPIOF_CLK_ENABLE __HAL_RCC_GPIOF_CLK_ENABLE +#define __GPIOF_CLK_SLEEP_DISABLE __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE +#define __GPIOF_CLK_SLEEP_ENABLE __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE +#define __GPIOF_FORCE_RESET __HAL_RCC_GPIOF_FORCE_RESET +#define __GPIOF_RELEASE_RESET __HAL_RCC_GPIOF_RELEASE_RESET +#define __GPIOG_CLK_DISABLE __HAL_RCC_GPIOG_CLK_DISABLE +#define __GPIOG_CLK_ENABLE __HAL_RCC_GPIOG_CLK_ENABLE +#define __GPIOG_CLK_SLEEP_DISABLE __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE +#define __GPIOG_CLK_SLEEP_ENABLE __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE +#define __GPIOG_FORCE_RESET __HAL_RCC_GPIOG_FORCE_RESET +#define __GPIOG_RELEASE_RESET __HAL_RCC_GPIOG_RELEASE_RESET +#define __GPIOH_CLK_DISABLE __HAL_RCC_GPIOH_CLK_DISABLE +#define __GPIOH_CLK_ENABLE __HAL_RCC_GPIOH_CLK_ENABLE +#define __GPIOH_CLK_SLEEP_DISABLE __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE +#define __GPIOH_CLK_SLEEP_ENABLE __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE +#define __GPIOH_FORCE_RESET __HAL_RCC_GPIOH_FORCE_RESET +#define __GPIOH_RELEASE_RESET __HAL_RCC_GPIOH_RELEASE_RESET +#define __I2C1_CLK_DISABLE __HAL_RCC_I2C1_CLK_DISABLE +#define __I2C1_CLK_ENABLE __HAL_RCC_I2C1_CLK_ENABLE +#define __I2C1_CLK_SLEEP_DISABLE __HAL_RCC_I2C1_CLK_SLEEP_DISABLE +#define __I2C1_CLK_SLEEP_ENABLE __HAL_RCC_I2C1_CLK_SLEEP_ENABLE +#define __I2C1_FORCE_RESET __HAL_RCC_I2C1_FORCE_RESET +#define __I2C1_RELEASE_RESET __HAL_RCC_I2C1_RELEASE_RESET +#define __I2C2_CLK_DISABLE __HAL_RCC_I2C2_CLK_DISABLE +#define __I2C2_CLK_ENABLE __HAL_RCC_I2C2_CLK_ENABLE +#define __I2C2_CLK_SLEEP_DISABLE __HAL_RCC_I2C2_CLK_SLEEP_DISABLE +#define __I2C2_CLK_SLEEP_ENABLE __HAL_RCC_I2C2_CLK_SLEEP_ENABLE +#define __I2C2_FORCE_RESET __HAL_RCC_I2C2_FORCE_RESET +#define __I2C2_RELEASE_RESET __HAL_RCC_I2C2_RELEASE_RESET +#define __I2C3_CLK_DISABLE __HAL_RCC_I2C3_CLK_DISABLE +#define __I2C3_CLK_ENABLE __HAL_RCC_I2C3_CLK_ENABLE +#define __I2C3_CLK_SLEEP_DISABLE __HAL_RCC_I2C3_CLK_SLEEP_DISABLE +#define __I2C3_CLK_SLEEP_ENABLE __HAL_RCC_I2C3_CLK_SLEEP_ENABLE +#define __I2C3_FORCE_RESET __HAL_RCC_I2C3_FORCE_RESET +#define __I2C3_RELEASE_RESET __HAL_RCC_I2C3_RELEASE_RESET +#define __LCD_CLK_DISABLE __HAL_RCC_LCD_CLK_DISABLE +#define __LCD_CLK_ENABLE __HAL_RCC_LCD_CLK_ENABLE +#define __LCD_CLK_SLEEP_DISABLE __HAL_RCC_LCD_CLK_SLEEP_DISABLE +#define __LCD_CLK_SLEEP_ENABLE __HAL_RCC_LCD_CLK_SLEEP_ENABLE +#define __LCD_FORCE_RESET __HAL_RCC_LCD_FORCE_RESET +#define __LCD_RELEASE_RESET __HAL_RCC_LCD_RELEASE_RESET +#define __LPTIM1_CLK_DISABLE __HAL_RCC_LPTIM1_CLK_DISABLE +#define __LPTIM1_CLK_ENABLE __HAL_RCC_LPTIM1_CLK_ENABLE +#define __LPTIM1_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE +#define __LPTIM1_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE +#define __LPTIM1_FORCE_RESET __HAL_RCC_LPTIM1_FORCE_RESET +#define __LPTIM1_RELEASE_RESET __HAL_RCC_LPTIM1_RELEASE_RESET +#define __LPTIM2_CLK_DISABLE __HAL_RCC_LPTIM2_CLK_DISABLE +#define __LPTIM2_CLK_ENABLE __HAL_RCC_LPTIM2_CLK_ENABLE +#define __LPTIM2_CLK_SLEEP_DISABLE __HAL_RCC_LPTIM2_CLK_SLEEP_DISABLE +#define __LPTIM2_CLK_SLEEP_ENABLE __HAL_RCC_LPTIM2_CLK_SLEEP_ENABLE +#define __LPTIM2_FORCE_RESET __HAL_RCC_LPTIM2_FORCE_RESET +#define __LPTIM2_RELEASE_RESET __HAL_RCC_LPTIM2_RELEASE_RESET +#define __LPUART1_CLK_DISABLE __HAL_RCC_LPUART1_CLK_DISABLE +#define __LPUART1_CLK_ENABLE __HAL_RCC_LPUART1_CLK_ENABLE +#define __LPUART1_CLK_SLEEP_DISABLE __HAL_RCC_LPUART1_CLK_SLEEP_DISABLE +#define __LPUART1_CLK_SLEEP_ENABLE __HAL_RCC_LPUART1_CLK_SLEEP_ENABLE +#define __LPUART1_FORCE_RESET __HAL_RCC_LPUART1_FORCE_RESET +#define __LPUART1_RELEASE_RESET __HAL_RCC_LPUART1_RELEASE_RESET +#define __OPAMP_CLK_DISABLE __HAL_RCC_OPAMP_CLK_DISABLE +#define __OPAMP_CLK_ENABLE __HAL_RCC_OPAMP_CLK_ENABLE +#define __OPAMP_CLK_SLEEP_DISABLE __HAL_RCC_OPAMP_CLK_SLEEP_DISABLE +#define __OPAMP_CLK_SLEEP_ENABLE __HAL_RCC_OPAMP_CLK_SLEEP_ENABLE +#define __OPAMP_FORCE_RESET __HAL_RCC_OPAMP_FORCE_RESET +#define __OPAMP_RELEASE_RESET __HAL_RCC_OPAMP_RELEASE_RESET +#define __OTGFS_CLK_DISABLE __HAL_RCC_OTGFS_CLK_DISABLE +#define __OTGFS_CLK_ENABLE __HAL_RCC_OTGFS_CLK_ENABLE +#define __OTGFS_CLK_SLEEP_DISABLE __HAL_RCC_OTGFS_CLK_SLEEP_DISABLE +#define __OTGFS_CLK_SLEEP_ENABLE __HAL_RCC_OTGFS_CLK_SLEEP_ENABLE +#define __OTGFS_FORCE_RESET __HAL_RCC_OTGFS_FORCE_RESET +#define __OTGFS_RELEASE_RESET __HAL_RCC_OTGFS_RELEASE_RESET +#define __PWR_CLK_DISABLE __HAL_RCC_PWR_CLK_DISABLE +#define __PWR_CLK_ENABLE __HAL_RCC_PWR_CLK_ENABLE +#define __PWR_CLK_SLEEP_DISABLE __HAL_RCC_PWR_CLK_SLEEP_DISABLE +#define __PWR_CLK_SLEEP_ENABLE __HAL_RCC_PWR_CLK_SLEEP_ENABLE +#define __PWR_FORCE_RESET __HAL_RCC_PWR_FORCE_RESET +#define __PWR_RELEASE_RESET __HAL_RCC_PWR_RELEASE_RESET +#define __QSPI_CLK_DISABLE __HAL_RCC_QSPI_CLK_DISABLE +#define __QSPI_CLK_ENABLE __HAL_RCC_QSPI_CLK_ENABLE +#define __QSPI_CLK_SLEEP_DISABLE __HAL_RCC_QSPI_CLK_SLEEP_DISABLE +#define __QSPI_CLK_SLEEP_ENABLE __HAL_RCC_QSPI_CLK_SLEEP_ENABLE +#define __QSPI_FORCE_RESET __HAL_RCC_QSPI_FORCE_RESET +#define __QSPI_RELEASE_RESET __HAL_RCC_QSPI_RELEASE_RESET + +#if defined(STM32WB) +#define __HAL_RCC_QSPI_CLK_DISABLE __HAL_RCC_QUADSPI_CLK_DISABLE +#define __HAL_RCC_QSPI_CLK_ENABLE __HAL_RCC_QUADSPI_CLK_ENABLE +#define __HAL_RCC_QSPI_CLK_SLEEP_DISABLE __HAL_RCC_QUADSPI_CLK_SLEEP_DISABLE +#define __HAL_RCC_QSPI_CLK_SLEEP_ENABLE __HAL_RCC_QUADSPI_CLK_SLEEP_ENABLE +#define __HAL_RCC_QSPI_FORCE_RESET __HAL_RCC_QUADSPI_FORCE_RESET +#define __HAL_RCC_QSPI_RELEASE_RESET __HAL_RCC_QUADSPI_RELEASE_RESET +#define __HAL_RCC_QSPI_IS_CLK_ENABLED __HAL_RCC_QUADSPI_IS_CLK_ENABLED +#define __HAL_RCC_QSPI_IS_CLK_DISABLED __HAL_RCC_QUADSPI_IS_CLK_DISABLED +#define __HAL_RCC_QSPI_IS_CLK_SLEEP_ENABLED __HAL_RCC_QUADSPI_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_QSPI_IS_CLK_SLEEP_DISABLED __HAL_RCC_QUADSPI_IS_CLK_SLEEP_DISABLED +#define QSPI_IRQHandler QUADSPI_IRQHandler +#endif /* __HAL_RCC_QUADSPI_CLK_ENABLE */ + +#define __RNG_CLK_DISABLE __HAL_RCC_RNG_CLK_DISABLE +#define __RNG_CLK_ENABLE __HAL_RCC_RNG_CLK_ENABLE +#define __RNG_CLK_SLEEP_DISABLE __HAL_RCC_RNG_CLK_SLEEP_DISABLE +#define __RNG_CLK_SLEEP_ENABLE __HAL_RCC_RNG_CLK_SLEEP_ENABLE +#define __RNG_FORCE_RESET __HAL_RCC_RNG_FORCE_RESET +#define __RNG_RELEASE_RESET __HAL_RCC_RNG_RELEASE_RESET +#define __SAI1_CLK_DISABLE __HAL_RCC_SAI1_CLK_DISABLE +#define __SAI1_CLK_ENABLE __HAL_RCC_SAI1_CLK_ENABLE +#define __SAI1_CLK_SLEEP_DISABLE __HAL_RCC_SAI1_CLK_SLEEP_DISABLE +#define __SAI1_CLK_SLEEP_ENABLE __HAL_RCC_SAI1_CLK_SLEEP_ENABLE +#define __SAI1_FORCE_RESET __HAL_RCC_SAI1_FORCE_RESET +#define __SAI1_RELEASE_RESET __HAL_RCC_SAI1_RELEASE_RESET +#define __SAI2_CLK_DISABLE __HAL_RCC_SAI2_CLK_DISABLE +#define __SAI2_CLK_ENABLE __HAL_RCC_SAI2_CLK_ENABLE +#define __SAI2_CLK_SLEEP_DISABLE __HAL_RCC_SAI2_CLK_SLEEP_DISABLE +#define __SAI2_CLK_SLEEP_ENABLE __HAL_RCC_SAI2_CLK_SLEEP_ENABLE +#define __SAI2_FORCE_RESET __HAL_RCC_SAI2_FORCE_RESET +#define __SAI2_RELEASE_RESET __HAL_RCC_SAI2_RELEASE_RESET +#define __SDIO_CLK_DISABLE __HAL_RCC_SDIO_CLK_DISABLE +#define __SDIO_CLK_ENABLE __HAL_RCC_SDIO_CLK_ENABLE +#define __SDMMC_CLK_DISABLE __HAL_RCC_SDMMC_CLK_DISABLE +#define __SDMMC_CLK_ENABLE __HAL_RCC_SDMMC_CLK_ENABLE +#define __SDMMC_CLK_SLEEP_DISABLE __HAL_RCC_SDMMC_CLK_SLEEP_DISABLE +#define __SDMMC_CLK_SLEEP_ENABLE __HAL_RCC_SDMMC_CLK_SLEEP_ENABLE +#define __SDMMC_FORCE_RESET __HAL_RCC_SDMMC_FORCE_RESET +#define __SDMMC_RELEASE_RESET __HAL_RCC_SDMMC_RELEASE_RESET +#define __SPI1_CLK_DISABLE __HAL_RCC_SPI1_CLK_DISABLE +#define __SPI1_CLK_ENABLE __HAL_RCC_SPI1_CLK_ENABLE +#define __SPI1_CLK_SLEEP_DISABLE __HAL_RCC_SPI1_CLK_SLEEP_DISABLE +#define __SPI1_CLK_SLEEP_ENABLE __HAL_RCC_SPI1_CLK_SLEEP_ENABLE +#define __SPI1_FORCE_RESET __HAL_RCC_SPI1_FORCE_RESET +#define __SPI1_RELEASE_RESET __HAL_RCC_SPI1_RELEASE_RESET +#define __SPI2_CLK_DISABLE __HAL_RCC_SPI2_CLK_DISABLE +#define __SPI2_CLK_ENABLE __HAL_RCC_SPI2_CLK_ENABLE +#define __SPI2_CLK_SLEEP_DISABLE __HAL_RCC_SPI2_CLK_SLEEP_DISABLE +#define __SPI2_CLK_SLEEP_ENABLE __HAL_RCC_SPI2_CLK_SLEEP_ENABLE +#define __SPI2_FORCE_RESET __HAL_RCC_SPI2_FORCE_RESET +#define __SPI2_RELEASE_RESET __HAL_RCC_SPI2_RELEASE_RESET +#define __SPI3_CLK_DISABLE __HAL_RCC_SPI3_CLK_DISABLE +#define __SPI3_CLK_ENABLE __HAL_RCC_SPI3_CLK_ENABLE +#define __SPI3_CLK_SLEEP_DISABLE __HAL_RCC_SPI3_CLK_SLEEP_DISABLE +#define __SPI3_CLK_SLEEP_ENABLE __HAL_RCC_SPI3_CLK_SLEEP_ENABLE +#define __SPI3_FORCE_RESET __HAL_RCC_SPI3_FORCE_RESET +#define __SPI3_RELEASE_RESET __HAL_RCC_SPI3_RELEASE_RESET +#define __SRAM_CLK_DISABLE __HAL_RCC_SRAM_CLK_DISABLE +#define __SRAM_CLK_ENABLE __HAL_RCC_SRAM_CLK_ENABLE +#define __SRAM1_CLK_SLEEP_DISABLE __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE +#define __SRAM1_CLK_SLEEP_ENABLE __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE +#define __SRAM2_CLK_SLEEP_DISABLE __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE +#define __SRAM2_CLK_SLEEP_ENABLE __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE +#define __SWPMI1_CLK_DISABLE __HAL_RCC_SWPMI1_CLK_DISABLE +#define __SWPMI1_CLK_ENABLE __HAL_RCC_SWPMI1_CLK_ENABLE +#define __SWPMI1_CLK_SLEEP_DISABLE __HAL_RCC_SWPMI1_CLK_SLEEP_DISABLE +#define __SWPMI1_CLK_SLEEP_ENABLE __HAL_RCC_SWPMI1_CLK_SLEEP_ENABLE +#define __SWPMI1_FORCE_RESET __HAL_RCC_SWPMI1_FORCE_RESET +#define __SWPMI1_RELEASE_RESET __HAL_RCC_SWPMI1_RELEASE_RESET +#define __SYSCFG_CLK_DISABLE __HAL_RCC_SYSCFG_CLK_DISABLE +#define __SYSCFG_CLK_ENABLE __HAL_RCC_SYSCFG_CLK_ENABLE +#define __SYSCFG_CLK_SLEEP_DISABLE __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE +#define __SYSCFG_CLK_SLEEP_ENABLE __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE +#define __SYSCFG_FORCE_RESET __HAL_RCC_SYSCFG_FORCE_RESET +#define __SYSCFG_RELEASE_RESET __HAL_RCC_SYSCFG_RELEASE_RESET +#define __TIM1_CLK_DISABLE __HAL_RCC_TIM1_CLK_DISABLE +#define __TIM1_CLK_ENABLE __HAL_RCC_TIM1_CLK_ENABLE +#define __TIM1_CLK_SLEEP_DISABLE __HAL_RCC_TIM1_CLK_SLEEP_DISABLE +#define __TIM1_CLK_SLEEP_ENABLE __HAL_RCC_TIM1_CLK_SLEEP_ENABLE +#define __TIM1_FORCE_RESET __HAL_RCC_TIM1_FORCE_RESET +#define __TIM1_RELEASE_RESET __HAL_RCC_TIM1_RELEASE_RESET +#define __TIM10_CLK_DISABLE __HAL_RCC_TIM10_CLK_DISABLE +#define __TIM10_CLK_ENABLE __HAL_RCC_TIM10_CLK_ENABLE +#define __TIM10_FORCE_RESET __HAL_RCC_TIM10_FORCE_RESET +#define __TIM10_RELEASE_RESET __HAL_RCC_TIM10_RELEASE_RESET +#define __TIM11_CLK_DISABLE __HAL_RCC_TIM11_CLK_DISABLE +#define __TIM11_CLK_ENABLE __HAL_RCC_TIM11_CLK_ENABLE +#define __TIM11_FORCE_RESET __HAL_RCC_TIM11_FORCE_RESET +#define __TIM11_RELEASE_RESET __HAL_RCC_TIM11_RELEASE_RESET +#define __TIM12_CLK_DISABLE __HAL_RCC_TIM12_CLK_DISABLE +#define __TIM12_CLK_ENABLE __HAL_RCC_TIM12_CLK_ENABLE +#define __TIM12_FORCE_RESET __HAL_RCC_TIM12_FORCE_RESET +#define __TIM12_RELEASE_RESET __HAL_RCC_TIM12_RELEASE_RESET +#define __TIM13_CLK_DISABLE __HAL_RCC_TIM13_CLK_DISABLE +#define __TIM13_CLK_ENABLE __HAL_RCC_TIM13_CLK_ENABLE +#define __TIM13_FORCE_RESET __HAL_RCC_TIM13_FORCE_RESET +#define __TIM13_RELEASE_RESET __HAL_RCC_TIM13_RELEASE_RESET +#define __TIM14_CLK_DISABLE __HAL_RCC_TIM14_CLK_DISABLE +#define __TIM14_CLK_ENABLE __HAL_RCC_TIM14_CLK_ENABLE +#define __TIM14_FORCE_RESET __HAL_RCC_TIM14_FORCE_RESET +#define __TIM14_RELEASE_RESET __HAL_RCC_TIM14_RELEASE_RESET +#define __TIM15_CLK_DISABLE __HAL_RCC_TIM15_CLK_DISABLE +#define __TIM15_CLK_ENABLE __HAL_RCC_TIM15_CLK_ENABLE +#define __TIM15_CLK_SLEEP_DISABLE __HAL_RCC_TIM15_CLK_SLEEP_DISABLE +#define __TIM15_CLK_SLEEP_ENABLE __HAL_RCC_TIM15_CLK_SLEEP_ENABLE +#define __TIM15_FORCE_RESET __HAL_RCC_TIM15_FORCE_RESET +#define __TIM15_RELEASE_RESET __HAL_RCC_TIM15_RELEASE_RESET +#define __TIM16_CLK_DISABLE __HAL_RCC_TIM16_CLK_DISABLE +#define __TIM16_CLK_ENABLE __HAL_RCC_TIM16_CLK_ENABLE +#define __TIM16_CLK_SLEEP_DISABLE __HAL_RCC_TIM16_CLK_SLEEP_DISABLE +#define __TIM16_CLK_SLEEP_ENABLE __HAL_RCC_TIM16_CLK_SLEEP_ENABLE +#define __TIM16_FORCE_RESET __HAL_RCC_TIM16_FORCE_RESET +#define __TIM16_RELEASE_RESET __HAL_RCC_TIM16_RELEASE_RESET +#define __TIM17_CLK_DISABLE __HAL_RCC_TIM17_CLK_DISABLE +#define __TIM17_CLK_ENABLE __HAL_RCC_TIM17_CLK_ENABLE +#define __TIM17_CLK_SLEEP_DISABLE __HAL_RCC_TIM17_CLK_SLEEP_DISABLE +#define __TIM17_CLK_SLEEP_ENABLE __HAL_RCC_TIM17_CLK_SLEEP_ENABLE +#define __TIM17_FORCE_RESET __HAL_RCC_TIM17_FORCE_RESET +#define __TIM17_RELEASE_RESET __HAL_RCC_TIM17_RELEASE_RESET +#define __TIM2_CLK_DISABLE __HAL_RCC_TIM2_CLK_DISABLE +#define __TIM2_CLK_ENABLE __HAL_RCC_TIM2_CLK_ENABLE +#define __TIM2_CLK_SLEEP_DISABLE __HAL_RCC_TIM2_CLK_SLEEP_DISABLE +#define __TIM2_CLK_SLEEP_ENABLE __HAL_RCC_TIM2_CLK_SLEEP_ENABLE +#define __TIM2_FORCE_RESET __HAL_RCC_TIM2_FORCE_RESET +#define __TIM2_RELEASE_RESET __HAL_RCC_TIM2_RELEASE_RESET +#define __TIM3_CLK_DISABLE __HAL_RCC_TIM3_CLK_DISABLE +#define __TIM3_CLK_ENABLE __HAL_RCC_TIM3_CLK_ENABLE +#define __TIM3_CLK_SLEEP_DISABLE __HAL_RCC_TIM3_CLK_SLEEP_DISABLE +#define __TIM3_CLK_SLEEP_ENABLE __HAL_RCC_TIM3_CLK_SLEEP_ENABLE +#define __TIM3_FORCE_RESET __HAL_RCC_TIM3_FORCE_RESET +#define __TIM3_RELEASE_RESET __HAL_RCC_TIM3_RELEASE_RESET +#define __TIM4_CLK_DISABLE __HAL_RCC_TIM4_CLK_DISABLE +#define __TIM4_CLK_ENABLE __HAL_RCC_TIM4_CLK_ENABLE +#define __TIM4_CLK_SLEEP_DISABLE __HAL_RCC_TIM4_CLK_SLEEP_DISABLE +#define __TIM4_CLK_SLEEP_ENABLE __HAL_RCC_TIM4_CLK_SLEEP_ENABLE +#define __TIM4_FORCE_RESET __HAL_RCC_TIM4_FORCE_RESET +#define __TIM4_RELEASE_RESET __HAL_RCC_TIM4_RELEASE_RESET +#define __TIM5_CLK_DISABLE __HAL_RCC_TIM5_CLK_DISABLE +#define __TIM5_CLK_ENABLE __HAL_RCC_TIM5_CLK_ENABLE +#define __TIM5_CLK_SLEEP_DISABLE __HAL_RCC_TIM5_CLK_SLEEP_DISABLE +#define __TIM5_CLK_SLEEP_ENABLE __HAL_RCC_TIM5_CLK_SLEEP_ENABLE +#define __TIM5_FORCE_RESET __HAL_RCC_TIM5_FORCE_RESET +#define __TIM5_RELEASE_RESET __HAL_RCC_TIM5_RELEASE_RESET +#define __TIM6_CLK_DISABLE __HAL_RCC_TIM6_CLK_DISABLE +#define __TIM6_CLK_ENABLE __HAL_RCC_TIM6_CLK_ENABLE +#define __TIM6_CLK_SLEEP_DISABLE __HAL_RCC_TIM6_CLK_SLEEP_DISABLE +#define __TIM6_CLK_SLEEP_ENABLE __HAL_RCC_TIM6_CLK_SLEEP_ENABLE +#define __TIM6_FORCE_RESET __HAL_RCC_TIM6_FORCE_RESET +#define __TIM6_RELEASE_RESET __HAL_RCC_TIM6_RELEASE_RESET +#define __TIM7_CLK_DISABLE __HAL_RCC_TIM7_CLK_DISABLE +#define __TIM7_CLK_ENABLE __HAL_RCC_TIM7_CLK_ENABLE +#define __TIM7_CLK_SLEEP_DISABLE __HAL_RCC_TIM7_CLK_SLEEP_DISABLE +#define __TIM7_CLK_SLEEP_ENABLE __HAL_RCC_TIM7_CLK_SLEEP_ENABLE +#define __TIM7_FORCE_RESET __HAL_RCC_TIM7_FORCE_RESET +#define __TIM7_RELEASE_RESET __HAL_RCC_TIM7_RELEASE_RESET +#define __TIM8_CLK_DISABLE __HAL_RCC_TIM8_CLK_DISABLE +#define __TIM8_CLK_ENABLE __HAL_RCC_TIM8_CLK_ENABLE +#define __TIM8_CLK_SLEEP_DISABLE __HAL_RCC_TIM8_CLK_SLEEP_DISABLE +#define __TIM8_CLK_SLEEP_ENABLE __HAL_RCC_TIM8_CLK_SLEEP_ENABLE +#define __TIM8_FORCE_RESET __HAL_RCC_TIM8_FORCE_RESET +#define __TIM8_RELEASE_RESET __HAL_RCC_TIM8_RELEASE_RESET +#define __TIM9_CLK_DISABLE __HAL_RCC_TIM9_CLK_DISABLE +#define __TIM9_CLK_ENABLE __HAL_RCC_TIM9_CLK_ENABLE +#define __TIM9_FORCE_RESET __HAL_RCC_TIM9_FORCE_RESET +#define __TIM9_RELEASE_RESET __HAL_RCC_TIM9_RELEASE_RESET +#define __TSC_CLK_DISABLE __HAL_RCC_TSC_CLK_DISABLE +#define __TSC_CLK_ENABLE __HAL_RCC_TSC_CLK_ENABLE +#define __TSC_CLK_SLEEP_DISABLE __HAL_RCC_TSC_CLK_SLEEP_DISABLE +#define __TSC_CLK_SLEEP_ENABLE __HAL_RCC_TSC_CLK_SLEEP_ENABLE +#define __TSC_FORCE_RESET __HAL_RCC_TSC_FORCE_RESET +#define __TSC_RELEASE_RESET __HAL_RCC_TSC_RELEASE_RESET +#define __UART4_CLK_DISABLE __HAL_RCC_UART4_CLK_DISABLE +#define __UART4_CLK_ENABLE __HAL_RCC_UART4_CLK_ENABLE +#define __UART4_CLK_SLEEP_DISABLE __HAL_RCC_UART4_CLK_SLEEP_DISABLE +#define __UART4_CLK_SLEEP_ENABLE __HAL_RCC_UART4_CLK_SLEEP_ENABLE +#define __UART4_FORCE_RESET __HAL_RCC_UART4_FORCE_RESET +#define __UART4_RELEASE_RESET __HAL_RCC_UART4_RELEASE_RESET +#define __UART5_CLK_DISABLE __HAL_RCC_UART5_CLK_DISABLE +#define __UART5_CLK_ENABLE __HAL_RCC_UART5_CLK_ENABLE +#define __UART5_CLK_SLEEP_DISABLE __HAL_RCC_UART5_CLK_SLEEP_DISABLE +#define __UART5_CLK_SLEEP_ENABLE __HAL_RCC_UART5_CLK_SLEEP_ENABLE +#define __UART5_FORCE_RESET __HAL_RCC_UART5_FORCE_RESET +#define __UART5_RELEASE_RESET __HAL_RCC_UART5_RELEASE_RESET +#define __USART1_CLK_DISABLE __HAL_RCC_USART1_CLK_DISABLE +#define __USART1_CLK_ENABLE __HAL_RCC_USART1_CLK_ENABLE +#define __USART1_CLK_SLEEP_DISABLE __HAL_RCC_USART1_CLK_SLEEP_DISABLE +#define __USART1_CLK_SLEEP_ENABLE __HAL_RCC_USART1_CLK_SLEEP_ENABLE +#define __USART1_FORCE_RESET __HAL_RCC_USART1_FORCE_RESET +#define __USART1_RELEASE_RESET __HAL_RCC_USART1_RELEASE_RESET +#define __USART2_CLK_DISABLE __HAL_RCC_USART2_CLK_DISABLE +#define __USART2_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE +#define __USART2_CLK_SLEEP_DISABLE __HAL_RCC_USART2_CLK_SLEEP_DISABLE +#define __USART2_CLK_SLEEP_ENABLE __HAL_RCC_USART2_CLK_SLEEP_ENABLE +#define __USART2_FORCE_RESET __HAL_RCC_USART2_FORCE_RESET +#define __USART2_RELEASE_RESET __HAL_RCC_USART2_RELEASE_RESET +#define __USART3_CLK_DISABLE __HAL_RCC_USART3_CLK_DISABLE +#define __USART3_CLK_ENABLE __HAL_RCC_USART3_CLK_ENABLE +#define __USART3_CLK_SLEEP_DISABLE __HAL_RCC_USART3_CLK_SLEEP_DISABLE +#define __USART3_CLK_SLEEP_ENABLE __HAL_RCC_USART3_CLK_SLEEP_ENABLE +#define __USART3_FORCE_RESET __HAL_RCC_USART3_FORCE_RESET +#define __USART3_RELEASE_RESET __HAL_RCC_USART3_RELEASE_RESET +#define __USART4_CLK_DISABLE __HAL_RCC_UART4_CLK_DISABLE +#define __USART4_CLK_ENABLE __HAL_RCC_UART4_CLK_ENABLE +#define __USART4_CLK_SLEEP_ENABLE __HAL_RCC_UART4_CLK_SLEEP_ENABLE +#define __USART4_CLK_SLEEP_DISABLE __HAL_RCC_UART4_CLK_SLEEP_DISABLE +#define __USART4_FORCE_RESET __HAL_RCC_UART4_FORCE_RESET +#define __USART4_RELEASE_RESET __HAL_RCC_UART4_RELEASE_RESET +#define __USART5_CLK_DISABLE __HAL_RCC_UART5_CLK_DISABLE +#define __USART5_CLK_ENABLE __HAL_RCC_UART5_CLK_ENABLE +#define __USART5_CLK_SLEEP_ENABLE __HAL_RCC_UART5_CLK_SLEEP_ENABLE +#define __USART5_CLK_SLEEP_DISABLE __HAL_RCC_UART5_CLK_SLEEP_DISABLE +#define __USART5_FORCE_RESET __HAL_RCC_UART5_FORCE_RESET +#define __USART5_RELEASE_RESET __HAL_RCC_UART5_RELEASE_RESET +#define __USART7_CLK_DISABLE __HAL_RCC_UART7_CLK_DISABLE +#define __USART7_CLK_ENABLE __HAL_RCC_UART7_CLK_ENABLE +#define __USART7_FORCE_RESET __HAL_RCC_UART7_FORCE_RESET +#define __USART7_RELEASE_RESET __HAL_RCC_UART7_RELEASE_RESET +#define __USART8_CLK_DISABLE __HAL_RCC_UART8_CLK_DISABLE +#define __USART8_CLK_ENABLE __HAL_RCC_UART8_CLK_ENABLE +#define __USART8_FORCE_RESET __HAL_RCC_UART8_FORCE_RESET +#define __USART8_RELEASE_RESET __HAL_RCC_UART8_RELEASE_RESET +#define __USB_CLK_DISABLE __HAL_RCC_USB_CLK_DISABLE +#define __USB_CLK_ENABLE __HAL_RCC_USB_CLK_ENABLE +#define __USB_FORCE_RESET __HAL_RCC_USB_FORCE_RESET +#define __USB_CLK_SLEEP_ENABLE __HAL_RCC_USB_CLK_SLEEP_ENABLE +#define __USB_CLK_SLEEP_DISABLE __HAL_RCC_USB_CLK_SLEEP_DISABLE +#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE +#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE +#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET + +#if defined(STM32H7) +#define __HAL_RCC_WWDG_CLK_DISABLE __HAL_RCC_WWDG1_CLK_DISABLE +#define __HAL_RCC_WWDG_CLK_ENABLE __HAL_RCC_WWDG1_CLK_ENABLE +#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG1_CLK_SLEEP_DISABLE +#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG1_CLK_SLEEP_ENABLE + +#define __HAL_RCC_WWDG_FORCE_RESET ((void)0U) /* Not available on the STM32H7*/ +#define __HAL_RCC_WWDG_RELEASE_RESET ((void)0U) /* Not available on the STM32H7*/ + + +#define __HAL_RCC_WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG1_IS_CLK_ENABLED +#define __HAL_RCC_WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG1_IS_CLK_DISABLED +#define RCC_SPI4CLKSOURCE_D2PCLK1 RCC_SPI4CLKSOURCE_D2PCLK2 +#define RCC_SPI5CLKSOURCE_D2PCLK1 RCC_SPI5CLKSOURCE_D2PCLK2 +#define RCC_SPI45CLKSOURCE_D2PCLK1 RCC_SPI45CLKSOURCE_D2PCLK2 +#define RCC_SPI45CLKSOURCE_CDPCLK1 RCC_SPI45CLKSOURCE_CDPCLK2 +#define RCC_SPI45CLKSOURCE_PCLK1 RCC_SPI45CLKSOURCE_PCLK2 +#endif + +#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE +#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE +#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE +#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE +#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET +#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET + +#define __TIM21_CLK_ENABLE __HAL_RCC_TIM21_CLK_ENABLE +#define __TIM21_CLK_DISABLE __HAL_RCC_TIM21_CLK_DISABLE +#define __TIM21_FORCE_RESET __HAL_RCC_TIM21_FORCE_RESET +#define __TIM21_RELEASE_RESET __HAL_RCC_TIM21_RELEASE_RESET +#define __TIM21_CLK_SLEEP_ENABLE __HAL_RCC_TIM21_CLK_SLEEP_ENABLE +#define __TIM21_CLK_SLEEP_DISABLE __HAL_RCC_TIM21_CLK_SLEEP_DISABLE +#define __TIM22_CLK_ENABLE __HAL_RCC_TIM22_CLK_ENABLE +#define __TIM22_CLK_DISABLE __HAL_RCC_TIM22_CLK_DISABLE +#define __TIM22_FORCE_RESET __HAL_RCC_TIM22_FORCE_RESET +#define __TIM22_RELEASE_RESET __HAL_RCC_TIM22_RELEASE_RESET +#define __TIM22_CLK_SLEEP_ENABLE __HAL_RCC_TIM22_CLK_SLEEP_ENABLE +#define __TIM22_CLK_SLEEP_DISABLE __HAL_RCC_TIM22_CLK_SLEEP_DISABLE +#define __CRS_CLK_DISABLE __HAL_RCC_CRS_CLK_DISABLE +#define __CRS_CLK_ENABLE __HAL_RCC_CRS_CLK_ENABLE +#define __CRS_CLK_SLEEP_DISABLE __HAL_RCC_CRS_CLK_SLEEP_DISABLE +#define __CRS_CLK_SLEEP_ENABLE __HAL_RCC_CRS_CLK_SLEEP_ENABLE +#define __CRS_FORCE_RESET __HAL_RCC_CRS_FORCE_RESET +#define __CRS_RELEASE_RESET __HAL_RCC_CRS_RELEASE_RESET +#define __RCC_BACKUPRESET_FORCE __HAL_RCC_BACKUPRESET_FORCE +#define __RCC_BACKUPRESET_RELEASE __HAL_RCC_BACKUPRESET_RELEASE + +#define __USB_OTG_FS_FORCE_RESET __HAL_RCC_USB_OTG_FS_FORCE_RESET +#define __USB_OTG_FS_RELEASE_RESET __HAL_RCC_USB_OTG_FS_RELEASE_RESET +#define __USB_OTG_FS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE +#define __USB_OTG_FS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE +#define __USB_OTG_HS_CLK_DISABLE __HAL_RCC_USB_OTG_HS_CLK_DISABLE +#define __USB_OTG_HS_CLK_ENABLE __HAL_RCC_USB_OTG_HS_CLK_ENABLE +#define __USB_OTG_HS_ULPI_CLK_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE +#define __USB_OTG_HS_ULPI_CLK_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE +#define __TIM9_CLK_SLEEP_ENABLE __HAL_RCC_TIM9_CLK_SLEEP_ENABLE +#define __TIM9_CLK_SLEEP_DISABLE __HAL_RCC_TIM9_CLK_SLEEP_DISABLE +#define __TIM10_CLK_SLEEP_ENABLE __HAL_RCC_TIM10_CLK_SLEEP_ENABLE +#define __TIM10_CLK_SLEEP_DISABLE __HAL_RCC_TIM10_CLK_SLEEP_DISABLE +#define __TIM11_CLK_SLEEP_ENABLE __HAL_RCC_TIM11_CLK_SLEEP_ENABLE +#define __TIM11_CLK_SLEEP_DISABLE __HAL_RCC_TIM11_CLK_SLEEP_DISABLE +#define __ETHMACPTP_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACPTP_CLK_SLEEP_ENABLE +#define __ETHMACPTP_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACPTP_CLK_SLEEP_DISABLE +#define __ETHMACPTP_CLK_ENABLE __HAL_RCC_ETHMACPTP_CLK_ENABLE +#define __ETHMACPTP_CLK_DISABLE __HAL_RCC_ETHMACPTP_CLK_DISABLE +#define __HASH_CLK_ENABLE __HAL_RCC_HASH_CLK_ENABLE +#define __HASH_FORCE_RESET __HAL_RCC_HASH_FORCE_RESET +#define __HASH_RELEASE_RESET __HAL_RCC_HASH_RELEASE_RESET +#define __HASH_CLK_SLEEP_ENABLE __HAL_RCC_HASH_CLK_SLEEP_ENABLE +#define __HASH_CLK_SLEEP_DISABLE __HAL_RCC_HASH_CLK_SLEEP_DISABLE +#define __HASH_CLK_DISABLE __HAL_RCC_HASH_CLK_DISABLE +#define __SPI5_CLK_ENABLE __HAL_RCC_SPI5_CLK_ENABLE +#define __SPI5_CLK_DISABLE __HAL_RCC_SPI5_CLK_DISABLE +#define __SPI5_FORCE_RESET __HAL_RCC_SPI5_FORCE_RESET +#define __SPI5_RELEASE_RESET __HAL_RCC_SPI5_RELEASE_RESET +#define __SPI5_CLK_SLEEP_ENABLE __HAL_RCC_SPI5_CLK_SLEEP_ENABLE +#define __SPI5_CLK_SLEEP_DISABLE __HAL_RCC_SPI5_CLK_SLEEP_DISABLE +#define __SPI6_CLK_ENABLE __HAL_RCC_SPI6_CLK_ENABLE +#define __SPI6_CLK_DISABLE __HAL_RCC_SPI6_CLK_DISABLE +#define __SPI6_FORCE_RESET __HAL_RCC_SPI6_FORCE_RESET +#define __SPI6_RELEASE_RESET __HAL_RCC_SPI6_RELEASE_RESET +#define __SPI6_CLK_SLEEP_ENABLE __HAL_RCC_SPI6_CLK_SLEEP_ENABLE +#define __SPI6_CLK_SLEEP_DISABLE __HAL_RCC_SPI6_CLK_SLEEP_DISABLE +#define __LTDC_CLK_ENABLE __HAL_RCC_LTDC_CLK_ENABLE +#define __LTDC_CLK_DISABLE __HAL_RCC_LTDC_CLK_DISABLE +#define __LTDC_FORCE_RESET __HAL_RCC_LTDC_FORCE_RESET +#define __LTDC_RELEASE_RESET __HAL_RCC_LTDC_RELEASE_RESET +#define __LTDC_CLK_SLEEP_ENABLE __HAL_RCC_LTDC_CLK_SLEEP_ENABLE +#define __ETHMAC_CLK_SLEEP_ENABLE __HAL_RCC_ETHMAC_CLK_SLEEP_ENABLE +#define __ETHMAC_CLK_SLEEP_DISABLE __HAL_RCC_ETHMAC_CLK_SLEEP_DISABLE +#define __ETHMACTX_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACTX_CLK_SLEEP_ENABLE +#define __ETHMACTX_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACTX_CLK_SLEEP_DISABLE +#define __ETHMACRX_CLK_SLEEP_ENABLE __HAL_RCC_ETHMACRX_CLK_SLEEP_ENABLE +#define __ETHMACRX_CLK_SLEEP_DISABLE __HAL_RCC_ETHMACRX_CLK_SLEEP_DISABLE +#define __TIM12_CLK_SLEEP_ENABLE __HAL_RCC_TIM12_CLK_SLEEP_ENABLE +#define __TIM12_CLK_SLEEP_DISABLE __HAL_RCC_TIM12_CLK_SLEEP_DISABLE +#define __TIM13_CLK_SLEEP_ENABLE __HAL_RCC_TIM13_CLK_SLEEP_ENABLE +#define __TIM13_CLK_SLEEP_DISABLE __HAL_RCC_TIM13_CLK_SLEEP_DISABLE +#define __TIM14_CLK_SLEEP_ENABLE __HAL_RCC_TIM14_CLK_SLEEP_ENABLE +#define __TIM14_CLK_SLEEP_DISABLE __HAL_RCC_TIM14_CLK_SLEEP_DISABLE +#define __BKPSRAM_CLK_ENABLE __HAL_RCC_BKPSRAM_CLK_ENABLE +#define __BKPSRAM_CLK_DISABLE __HAL_RCC_BKPSRAM_CLK_DISABLE +#define __BKPSRAM_CLK_SLEEP_ENABLE __HAL_RCC_BKPSRAM_CLK_SLEEP_ENABLE +#define __BKPSRAM_CLK_SLEEP_DISABLE __HAL_RCC_BKPSRAM_CLK_SLEEP_DISABLE +#define __CCMDATARAMEN_CLK_ENABLE __HAL_RCC_CCMDATARAMEN_CLK_ENABLE +#define __CCMDATARAMEN_CLK_DISABLE __HAL_RCC_CCMDATARAMEN_CLK_DISABLE +#define __USART6_CLK_ENABLE __HAL_RCC_USART6_CLK_ENABLE +#define __USART6_CLK_DISABLE __HAL_RCC_USART6_CLK_DISABLE +#define __USART6_FORCE_RESET __HAL_RCC_USART6_FORCE_RESET +#define __USART6_RELEASE_RESET __HAL_RCC_USART6_RELEASE_RESET +#define __USART6_CLK_SLEEP_ENABLE __HAL_RCC_USART6_CLK_SLEEP_ENABLE +#define __USART6_CLK_SLEEP_DISABLE __HAL_RCC_USART6_CLK_SLEEP_DISABLE +#define __SPI4_CLK_ENABLE __HAL_RCC_SPI4_CLK_ENABLE +#define __SPI4_CLK_DISABLE __HAL_RCC_SPI4_CLK_DISABLE +#define __SPI4_FORCE_RESET __HAL_RCC_SPI4_FORCE_RESET +#define __SPI4_RELEASE_RESET __HAL_RCC_SPI4_RELEASE_RESET +#define __SPI4_CLK_SLEEP_ENABLE __HAL_RCC_SPI4_CLK_SLEEP_ENABLE +#define __SPI4_CLK_SLEEP_DISABLE __HAL_RCC_SPI4_CLK_SLEEP_DISABLE +#define __GPIOI_CLK_ENABLE __HAL_RCC_GPIOI_CLK_ENABLE +#define __GPIOI_CLK_DISABLE __HAL_RCC_GPIOI_CLK_DISABLE +#define __GPIOI_FORCE_RESET __HAL_RCC_GPIOI_FORCE_RESET +#define __GPIOI_RELEASE_RESET __HAL_RCC_GPIOI_RELEASE_RESET +#define __GPIOI_CLK_SLEEP_ENABLE __HAL_RCC_GPIOI_CLK_SLEEP_ENABLE +#define __GPIOI_CLK_SLEEP_DISABLE __HAL_RCC_GPIOI_CLK_SLEEP_DISABLE +#define __GPIOJ_CLK_ENABLE __HAL_RCC_GPIOJ_CLK_ENABLE +#define __GPIOJ_CLK_DISABLE __HAL_RCC_GPIOJ_CLK_DISABLE +#define __GPIOJ_FORCE_RESET __HAL_RCC_GPIOJ_FORCE_RESET +#define __GPIOJ_RELEASE_RESET __HAL_RCC_GPIOJ_RELEASE_RESET +#define __GPIOJ_CLK_SLEEP_ENABLE __HAL_RCC_GPIOJ_CLK_SLEEP_ENABLE +#define __GPIOJ_CLK_SLEEP_DISABLE __HAL_RCC_GPIOJ_CLK_SLEEP_DISABLE +#define __GPIOK_CLK_ENABLE __HAL_RCC_GPIOK_CLK_ENABLE +#define __GPIOK_CLK_DISABLE __HAL_RCC_GPIOK_CLK_DISABLE +#define __GPIOK_RELEASE_RESET __HAL_RCC_GPIOK_RELEASE_RESET +#define __GPIOK_CLK_SLEEP_ENABLE __HAL_RCC_GPIOK_CLK_SLEEP_ENABLE +#define __GPIOK_CLK_SLEEP_DISABLE __HAL_RCC_GPIOK_CLK_SLEEP_DISABLE +#define __ETH_CLK_ENABLE __HAL_RCC_ETH_CLK_ENABLE +#define __ETH_CLK_DISABLE __HAL_RCC_ETH_CLK_DISABLE +#define __DCMI_CLK_ENABLE __HAL_RCC_DCMI_CLK_ENABLE +#define __DCMI_CLK_DISABLE __HAL_RCC_DCMI_CLK_DISABLE +#define __DCMI_FORCE_RESET __HAL_RCC_DCMI_FORCE_RESET +#define __DCMI_RELEASE_RESET __HAL_RCC_DCMI_RELEASE_RESET +#define __DCMI_CLK_SLEEP_ENABLE __HAL_RCC_DCMI_CLK_SLEEP_ENABLE +#define __DCMI_CLK_SLEEP_DISABLE __HAL_RCC_DCMI_CLK_SLEEP_DISABLE +#define __UART7_CLK_ENABLE __HAL_RCC_UART7_CLK_ENABLE +#define __UART7_CLK_DISABLE __HAL_RCC_UART7_CLK_DISABLE +#define __UART7_RELEASE_RESET __HAL_RCC_UART7_RELEASE_RESET +#define __UART7_FORCE_RESET __HAL_RCC_UART7_FORCE_RESET +#define __UART7_CLK_SLEEP_ENABLE __HAL_RCC_UART7_CLK_SLEEP_ENABLE +#define __UART7_CLK_SLEEP_DISABLE __HAL_RCC_UART7_CLK_SLEEP_DISABLE +#define __UART8_CLK_ENABLE __HAL_RCC_UART8_CLK_ENABLE +#define __UART8_CLK_DISABLE __HAL_RCC_UART8_CLK_DISABLE +#define __UART8_FORCE_RESET __HAL_RCC_UART8_FORCE_RESET +#define __UART8_RELEASE_RESET __HAL_RCC_UART8_RELEASE_RESET +#define __UART8_CLK_SLEEP_ENABLE __HAL_RCC_UART8_CLK_SLEEP_ENABLE +#define __UART8_CLK_SLEEP_DISABLE __HAL_RCC_UART8_CLK_SLEEP_DISABLE +#define __OTGHS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE +#define __OTGHS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE +#define __OTGHS_FORCE_RESET __HAL_RCC_USB_OTG_HS_FORCE_RESET +#define __OTGHS_RELEASE_RESET __HAL_RCC_USB_OTG_HS_RELEASE_RESET +#define __OTGHSULPI_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE +#define __OTGHSULPI_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE +#define __HAL_RCC_OTGHS_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE +#define __HAL_RCC_OTGHS_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE +#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_ENABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_OTGHS_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_DISABLED +#define __HAL_RCC_OTGHS_FORCE_RESET __HAL_RCC_USB_OTG_HS_FORCE_RESET +#define __HAL_RCC_OTGHS_RELEASE_RESET __HAL_RCC_USB_OTG_HS_RELEASE_RESET +#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_ENABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE +#define __HAL_RCC_OTGHSULPI_CLK_SLEEP_DISABLE __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE +#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_ENABLED __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_OTGHSULPI_IS_CLK_SLEEP_DISABLED __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_DISABLED +#define __SRAM3_CLK_SLEEP_ENABLE __HAL_RCC_SRAM3_CLK_SLEEP_ENABLE +#define __CAN2_CLK_SLEEP_ENABLE __HAL_RCC_CAN2_CLK_SLEEP_ENABLE +#define __CAN2_CLK_SLEEP_DISABLE __HAL_RCC_CAN2_CLK_SLEEP_DISABLE +#define __DAC_CLK_SLEEP_ENABLE __HAL_RCC_DAC_CLK_SLEEP_ENABLE +#define __DAC_CLK_SLEEP_DISABLE __HAL_RCC_DAC_CLK_SLEEP_DISABLE +#define __ADC2_CLK_SLEEP_ENABLE __HAL_RCC_ADC2_CLK_SLEEP_ENABLE +#define __ADC2_CLK_SLEEP_DISABLE __HAL_RCC_ADC2_CLK_SLEEP_DISABLE +#define __ADC3_CLK_SLEEP_ENABLE __HAL_RCC_ADC3_CLK_SLEEP_ENABLE +#define __ADC3_CLK_SLEEP_DISABLE __HAL_RCC_ADC3_CLK_SLEEP_DISABLE +#define __FSMC_FORCE_RESET __HAL_RCC_FSMC_FORCE_RESET +#define __FSMC_RELEASE_RESET __HAL_RCC_FSMC_RELEASE_RESET +#define __FSMC_CLK_SLEEP_ENABLE __HAL_RCC_FSMC_CLK_SLEEP_ENABLE +#define __FSMC_CLK_SLEEP_DISABLE __HAL_RCC_FSMC_CLK_SLEEP_DISABLE +#define __SDIO_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET +#define __SDIO_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET +#define __SDIO_CLK_SLEEP_DISABLE __HAL_RCC_SDIO_CLK_SLEEP_DISABLE +#define __SDIO_CLK_SLEEP_ENABLE __HAL_RCC_SDIO_CLK_SLEEP_ENABLE +#define __DMA2D_CLK_ENABLE __HAL_RCC_DMA2D_CLK_ENABLE +#define __DMA2D_CLK_DISABLE __HAL_RCC_DMA2D_CLK_DISABLE +#define __DMA2D_FORCE_RESET __HAL_RCC_DMA2D_FORCE_RESET +#define __DMA2D_RELEASE_RESET __HAL_RCC_DMA2D_RELEASE_RESET +#define __DMA2D_CLK_SLEEP_ENABLE __HAL_RCC_DMA2D_CLK_SLEEP_ENABLE +#define __DMA2D_CLK_SLEEP_DISABLE __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE + +/* alias define maintained for legacy */ +#define __HAL_RCC_OTGFS_FORCE_RESET __HAL_RCC_USB_OTG_FS_FORCE_RESET +#define __HAL_RCC_OTGFS_RELEASE_RESET __HAL_RCC_USB_OTG_FS_RELEASE_RESET + +#define __ADC12_CLK_ENABLE __HAL_RCC_ADC12_CLK_ENABLE +#define __ADC12_CLK_DISABLE __HAL_RCC_ADC12_CLK_DISABLE +#define __ADC34_CLK_ENABLE __HAL_RCC_ADC34_CLK_ENABLE +#define __ADC34_CLK_DISABLE __HAL_RCC_ADC34_CLK_DISABLE +#define __DAC2_CLK_ENABLE __HAL_RCC_DAC2_CLK_ENABLE +#define __DAC2_CLK_DISABLE __HAL_RCC_DAC2_CLK_DISABLE +#define __TIM18_CLK_ENABLE __HAL_RCC_TIM18_CLK_ENABLE +#define __TIM18_CLK_DISABLE __HAL_RCC_TIM18_CLK_DISABLE +#define __TIM19_CLK_ENABLE __HAL_RCC_TIM19_CLK_ENABLE +#define __TIM19_CLK_DISABLE __HAL_RCC_TIM19_CLK_DISABLE +#define __TIM20_CLK_ENABLE __HAL_RCC_TIM20_CLK_ENABLE +#define __TIM20_CLK_DISABLE __HAL_RCC_TIM20_CLK_DISABLE +#define __HRTIM1_CLK_ENABLE __HAL_RCC_HRTIM1_CLK_ENABLE +#define __HRTIM1_CLK_DISABLE __HAL_RCC_HRTIM1_CLK_DISABLE +#define __SDADC1_CLK_ENABLE __HAL_RCC_SDADC1_CLK_ENABLE +#define __SDADC2_CLK_ENABLE __HAL_RCC_SDADC2_CLK_ENABLE +#define __SDADC3_CLK_ENABLE __HAL_RCC_SDADC3_CLK_ENABLE +#define __SDADC1_CLK_DISABLE __HAL_RCC_SDADC1_CLK_DISABLE +#define __SDADC2_CLK_DISABLE __HAL_RCC_SDADC2_CLK_DISABLE +#define __SDADC3_CLK_DISABLE __HAL_RCC_SDADC3_CLK_DISABLE + +#define __ADC12_FORCE_RESET __HAL_RCC_ADC12_FORCE_RESET +#define __ADC12_RELEASE_RESET __HAL_RCC_ADC12_RELEASE_RESET +#define __ADC34_FORCE_RESET __HAL_RCC_ADC34_FORCE_RESET +#define __ADC34_RELEASE_RESET __HAL_RCC_ADC34_RELEASE_RESET +#define __DAC2_FORCE_RESET __HAL_RCC_DAC2_FORCE_RESET +#define __DAC2_RELEASE_RESET __HAL_RCC_DAC2_RELEASE_RESET +#define __TIM18_FORCE_RESET __HAL_RCC_TIM18_FORCE_RESET +#define __TIM18_RELEASE_RESET __HAL_RCC_TIM18_RELEASE_RESET +#define __TIM19_FORCE_RESET __HAL_RCC_TIM19_FORCE_RESET +#define __TIM19_RELEASE_RESET __HAL_RCC_TIM19_RELEASE_RESET +#define __TIM20_FORCE_RESET __HAL_RCC_TIM20_FORCE_RESET +#define __TIM20_RELEASE_RESET __HAL_RCC_TIM20_RELEASE_RESET +#define __HRTIM1_FORCE_RESET __HAL_RCC_HRTIM1_FORCE_RESET +#define __HRTIM1_RELEASE_RESET __HAL_RCC_HRTIM1_RELEASE_RESET +#define __SDADC1_FORCE_RESET __HAL_RCC_SDADC1_FORCE_RESET +#define __SDADC2_FORCE_RESET __HAL_RCC_SDADC2_FORCE_RESET +#define __SDADC3_FORCE_RESET __HAL_RCC_SDADC3_FORCE_RESET +#define __SDADC1_RELEASE_RESET __HAL_RCC_SDADC1_RELEASE_RESET +#define __SDADC2_RELEASE_RESET __HAL_RCC_SDADC2_RELEASE_RESET +#define __SDADC3_RELEASE_RESET __HAL_RCC_SDADC3_RELEASE_RESET + +#define __ADC1_IS_CLK_ENABLED __HAL_RCC_ADC1_IS_CLK_ENABLED +#define __ADC1_IS_CLK_DISABLED __HAL_RCC_ADC1_IS_CLK_DISABLED +#define __ADC12_IS_CLK_ENABLED __HAL_RCC_ADC12_IS_CLK_ENABLED +#define __ADC12_IS_CLK_DISABLED __HAL_RCC_ADC12_IS_CLK_DISABLED +#define __ADC34_IS_CLK_ENABLED __HAL_RCC_ADC34_IS_CLK_ENABLED +#define __ADC34_IS_CLK_DISABLED __HAL_RCC_ADC34_IS_CLK_DISABLED +#define __CEC_IS_CLK_ENABLED __HAL_RCC_CEC_IS_CLK_ENABLED +#define __CEC_IS_CLK_DISABLED __HAL_RCC_CEC_IS_CLK_DISABLED +#define __CRC_IS_CLK_ENABLED __HAL_RCC_CRC_IS_CLK_ENABLED +#define __CRC_IS_CLK_DISABLED __HAL_RCC_CRC_IS_CLK_DISABLED +#define __DAC1_IS_CLK_ENABLED __HAL_RCC_DAC1_IS_CLK_ENABLED +#define __DAC1_IS_CLK_DISABLED __HAL_RCC_DAC1_IS_CLK_DISABLED +#define __DAC2_IS_CLK_ENABLED __HAL_RCC_DAC2_IS_CLK_ENABLED +#define __DAC2_IS_CLK_DISABLED __HAL_RCC_DAC2_IS_CLK_DISABLED +#define __DMA1_IS_CLK_ENABLED __HAL_RCC_DMA1_IS_CLK_ENABLED +#define __DMA1_IS_CLK_DISABLED __HAL_RCC_DMA1_IS_CLK_DISABLED +#define __DMA2_IS_CLK_ENABLED __HAL_RCC_DMA2_IS_CLK_ENABLED +#define __DMA2_IS_CLK_DISABLED __HAL_RCC_DMA2_IS_CLK_DISABLED +#define __FLITF_IS_CLK_ENABLED __HAL_RCC_FLITF_IS_CLK_ENABLED +#define __FLITF_IS_CLK_DISABLED __HAL_RCC_FLITF_IS_CLK_DISABLED +#define __FMC_IS_CLK_ENABLED __HAL_RCC_FMC_IS_CLK_ENABLED +#define __FMC_IS_CLK_DISABLED __HAL_RCC_FMC_IS_CLK_DISABLED +#define __GPIOA_IS_CLK_ENABLED __HAL_RCC_GPIOA_IS_CLK_ENABLED +#define __GPIOA_IS_CLK_DISABLED __HAL_RCC_GPIOA_IS_CLK_DISABLED +#define __GPIOB_IS_CLK_ENABLED __HAL_RCC_GPIOB_IS_CLK_ENABLED +#define __GPIOB_IS_CLK_DISABLED __HAL_RCC_GPIOB_IS_CLK_DISABLED +#define __GPIOC_IS_CLK_ENABLED __HAL_RCC_GPIOC_IS_CLK_ENABLED +#define __GPIOC_IS_CLK_DISABLED __HAL_RCC_GPIOC_IS_CLK_DISABLED +#define __GPIOD_IS_CLK_ENABLED __HAL_RCC_GPIOD_IS_CLK_ENABLED +#define __GPIOD_IS_CLK_DISABLED __HAL_RCC_GPIOD_IS_CLK_DISABLED +#define __GPIOE_IS_CLK_ENABLED __HAL_RCC_GPIOE_IS_CLK_ENABLED +#define __GPIOE_IS_CLK_DISABLED __HAL_RCC_GPIOE_IS_CLK_DISABLED +#define __GPIOF_IS_CLK_ENABLED __HAL_RCC_GPIOF_IS_CLK_ENABLED +#define __GPIOF_IS_CLK_DISABLED __HAL_RCC_GPIOF_IS_CLK_DISABLED +#define __GPIOG_IS_CLK_ENABLED __HAL_RCC_GPIOG_IS_CLK_ENABLED +#define __GPIOG_IS_CLK_DISABLED __HAL_RCC_GPIOG_IS_CLK_DISABLED +#define __GPIOH_IS_CLK_ENABLED __HAL_RCC_GPIOH_IS_CLK_ENABLED +#define __GPIOH_IS_CLK_DISABLED __HAL_RCC_GPIOH_IS_CLK_DISABLED +#define __HRTIM1_IS_CLK_ENABLED __HAL_RCC_HRTIM1_IS_CLK_ENABLED +#define __HRTIM1_IS_CLK_DISABLED __HAL_RCC_HRTIM1_IS_CLK_DISABLED +#define __I2C1_IS_CLK_ENABLED __HAL_RCC_I2C1_IS_CLK_ENABLED +#define __I2C1_IS_CLK_DISABLED __HAL_RCC_I2C1_IS_CLK_DISABLED +#define __I2C2_IS_CLK_ENABLED __HAL_RCC_I2C2_IS_CLK_ENABLED +#define __I2C2_IS_CLK_DISABLED __HAL_RCC_I2C2_IS_CLK_DISABLED +#define __I2C3_IS_CLK_ENABLED __HAL_RCC_I2C3_IS_CLK_ENABLED +#define __I2C3_IS_CLK_DISABLED __HAL_RCC_I2C3_IS_CLK_DISABLED +#define __PWR_IS_CLK_ENABLED __HAL_RCC_PWR_IS_CLK_ENABLED +#define __PWR_IS_CLK_DISABLED __HAL_RCC_PWR_IS_CLK_DISABLED +#define __SYSCFG_IS_CLK_ENABLED __HAL_RCC_SYSCFG_IS_CLK_ENABLED +#define __SYSCFG_IS_CLK_DISABLED __HAL_RCC_SYSCFG_IS_CLK_DISABLED +#define __SPI1_IS_CLK_ENABLED __HAL_RCC_SPI1_IS_CLK_ENABLED +#define __SPI1_IS_CLK_DISABLED __HAL_RCC_SPI1_IS_CLK_DISABLED +#define __SPI2_IS_CLK_ENABLED __HAL_RCC_SPI2_IS_CLK_ENABLED +#define __SPI2_IS_CLK_DISABLED __HAL_RCC_SPI2_IS_CLK_DISABLED +#define __SPI3_IS_CLK_ENABLED __HAL_RCC_SPI3_IS_CLK_ENABLED +#define __SPI3_IS_CLK_DISABLED __HAL_RCC_SPI3_IS_CLK_DISABLED +#define __SPI4_IS_CLK_ENABLED __HAL_RCC_SPI4_IS_CLK_ENABLED +#define __SPI4_IS_CLK_DISABLED __HAL_RCC_SPI4_IS_CLK_DISABLED +#define __SDADC1_IS_CLK_ENABLED __HAL_RCC_SDADC1_IS_CLK_ENABLED +#define __SDADC1_IS_CLK_DISABLED __HAL_RCC_SDADC1_IS_CLK_DISABLED +#define __SDADC2_IS_CLK_ENABLED __HAL_RCC_SDADC2_IS_CLK_ENABLED +#define __SDADC2_IS_CLK_DISABLED __HAL_RCC_SDADC2_IS_CLK_DISABLED +#define __SDADC3_IS_CLK_ENABLED __HAL_RCC_SDADC3_IS_CLK_ENABLED +#define __SDADC3_IS_CLK_DISABLED __HAL_RCC_SDADC3_IS_CLK_DISABLED +#define __SRAM_IS_CLK_ENABLED __HAL_RCC_SRAM_IS_CLK_ENABLED +#define __SRAM_IS_CLK_DISABLED __HAL_RCC_SRAM_IS_CLK_DISABLED +#define __TIM1_IS_CLK_ENABLED __HAL_RCC_TIM1_IS_CLK_ENABLED +#define __TIM1_IS_CLK_DISABLED __HAL_RCC_TIM1_IS_CLK_DISABLED +#define __TIM2_IS_CLK_ENABLED __HAL_RCC_TIM2_IS_CLK_ENABLED +#define __TIM2_IS_CLK_DISABLED __HAL_RCC_TIM2_IS_CLK_DISABLED +#define __TIM3_IS_CLK_ENABLED __HAL_RCC_TIM3_IS_CLK_ENABLED +#define __TIM3_IS_CLK_DISABLED __HAL_RCC_TIM3_IS_CLK_DISABLED +#define __TIM4_IS_CLK_ENABLED __HAL_RCC_TIM4_IS_CLK_ENABLED +#define __TIM4_IS_CLK_DISABLED __HAL_RCC_TIM4_IS_CLK_DISABLED +#define __TIM5_IS_CLK_ENABLED __HAL_RCC_TIM5_IS_CLK_ENABLED +#define __TIM5_IS_CLK_DISABLED __HAL_RCC_TIM5_IS_CLK_DISABLED +#define __TIM6_IS_CLK_ENABLED __HAL_RCC_TIM6_IS_CLK_ENABLED +#define __TIM6_IS_CLK_DISABLED __HAL_RCC_TIM6_IS_CLK_DISABLED +#define __TIM7_IS_CLK_ENABLED __HAL_RCC_TIM7_IS_CLK_ENABLED +#define __TIM7_IS_CLK_DISABLED __HAL_RCC_TIM7_IS_CLK_DISABLED +#define __TIM8_IS_CLK_ENABLED __HAL_RCC_TIM8_IS_CLK_ENABLED +#define __TIM8_IS_CLK_DISABLED __HAL_RCC_TIM8_IS_CLK_DISABLED +#define __TIM12_IS_CLK_ENABLED __HAL_RCC_TIM12_IS_CLK_ENABLED +#define __TIM12_IS_CLK_DISABLED __HAL_RCC_TIM12_IS_CLK_DISABLED +#define __TIM13_IS_CLK_ENABLED __HAL_RCC_TIM13_IS_CLK_ENABLED +#define __TIM13_IS_CLK_DISABLED __HAL_RCC_TIM13_IS_CLK_DISABLED +#define __TIM14_IS_CLK_ENABLED __HAL_RCC_TIM14_IS_CLK_ENABLED +#define __TIM14_IS_CLK_DISABLED __HAL_RCC_TIM14_IS_CLK_DISABLED +#define __TIM15_IS_CLK_ENABLED __HAL_RCC_TIM15_IS_CLK_ENABLED +#define __TIM15_IS_CLK_DISABLED __HAL_RCC_TIM15_IS_CLK_DISABLED +#define __TIM16_IS_CLK_ENABLED __HAL_RCC_TIM16_IS_CLK_ENABLED +#define __TIM16_IS_CLK_DISABLED __HAL_RCC_TIM16_IS_CLK_DISABLED +#define __TIM17_IS_CLK_ENABLED __HAL_RCC_TIM17_IS_CLK_ENABLED +#define __TIM17_IS_CLK_DISABLED __HAL_RCC_TIM17_IS_CLK_DISABLED +#define __TIM18_IS_CLK_ENABLED __HAL_RCC_TIM18_IS_CLK_ENABLED +#define __TIM18_IS_CLK_DISABLED __HAL_RCC_TIM18_IS_CLK_DISABLED +#define __TIM19_IS_CLK_ENABLED __HAL_RCC_TIM19_IS_CLK_ENABLED +#define __TIM19_IS_CLK_DISABLED __HAL_RCC_TIM19_IS_CLK_DISABLED +#define __TIM20_IS_CLK_ENABLED __HAL_RCC_TIM20_IS_CLK_ENABLED +#define __TIM20_IS_CLK_DISABLED __HAL_RCC_TIM20_IS_CLK_DISABLED +#define __TSC_IS_CLK_ENABLED __HAL_RCC_TSC_IS_CLK_ENABLED +#define __TSC_IS_CLK_DISABLED __HAL_RCC_TSC_IS_CLK_DISABLED +#define __UART4_IS_CLK_ENABLED __HAL_RCC_UART4_IS_CLK_ENABLED +#define __UART4_IS_CLK_DISABLED __HAL_RCC_UART4_IS_CLK_DISABLED +#define __UART5_IS_CLK_ENABLED __HAL_RCC_UART5_IS_CLK_ENABLED +#define __UART5_IS_CLK_DISABLED __HAL_RCC_UART5_IS_CLK_DISABLED +#define __USART1_IS_CLK_ENABLED __HAL_RCC_USART1_IS_CLK_ENABLED +#define __USART1_IS_CLK_DISABLED __HAL_RCC_USART1_IS_CLK_DISABLED +#define __USART2_IS_CLK_ENABLED __HAL_RCC_USART2_IS_CLK_ENABLED +#define __USART2_IS_CLK_DISABLED __HAL_RCC_USART2_IS_CLK_DISABLED +#define __USART3_IS_CLK_ENABLED __HAL_RCC_USART3_IS_CLK_ENABLED +#define __USART3_IS_CLK_DISABLED __HAL_RCC_USART3_IS_CLK_DISABLED +#define __USB_IS_CLK_ENABLED __HAL_RCC_USB_IS_CLK_ENABLED +#define __USB_IS_CLK_DISABLED __HAL_RCC_USB_IS_CLK_DISABLED +#define __WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG_IS_CLK_ENABLED +#define __WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG_IS_CLK_DISABLED + +#if defined(STM32L1) +#define __HAL_RCC_CRYP_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE +#define __HAL_RCC_CRYP_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE +#define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE +#define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE +#define __HAL_RCC_CRYP_FORCE_RESET __HAL_RCC_AES_FORCE_RESET +#define __HAL_RCC_CRYP_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET +#endif /* STM32L1 */ + +#if defined(STM32F4) +#define __HAL_RCC_SDMMC1_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET +#define __HAL_RCC_SDMMC1_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET +#define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE __HAL_RCC_SDIO_CLK_SLEEP_ENABLE +#define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE __HAL_RCC_SDIO_CLK_SLEEP_DISABLE +#define __HAL_RCC_SDMMC1_CLK_ENABLE __HAL_RCC_SDIO_CLK_ENABLE +#define __HAL_RCC_SDMMC1_CLK_DISABLE __HAL_RCC_SDIO_CLK_DISABLE +#define __HAL_RCC_SDMMC1_IS_CLK_ENABLED __HAL_RCC_SDIO_IS_CLK_ENABLED +#define __HAL_RCC_SDMMC1_IS_CLK_DISABLED __HAL_RCC_SDIO_IS_CLK_DISABLED +#define Sdmmc1ClockSelection SdioClockSelection +#define RCC_PERIPHCLK_SDMMC1 RCC_PERIPHCLK_SDIO +#define RCC_SDMMC1CLKSOURCE_CLK48 RCC_SDIOCLKSOURCE_CK48 +#define RCC_SDMMC1CLKSOURCE_SYSCLK RCC_SDIOCLKSOURCE_SYSCLK +#define __HAL_RCC_SDMMC1_CONFIG __HAL_RCC_SDIO_CONFIG +#define __HAL_RCC_GET_SDMMC1_SOURCE __HAL_RCC_GET_SDIO_SOURCE +#endif + +#if defined(STM32F7) || defined(STM32L4) +#define __HAL_RCC_SDIO_FORCE_RESET __HAL_RCC_SDMMC1_FORCE_RESET +#define __HAL_RCC_SDIO_RELEASE_RESET __HAL_RCC_SDMMC1_RELEASE_RESET +#define __HAL_RCC_SDIO_CLK_SLEEP_ENABLE __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE +#define __HAL_RCC_SDIO_CLK_SLEEP_DISABLE __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE +#define __HAL_RCC_SDIO_CLK_ENABLE __HAL_RCC_SDMMC1_CLK_ENABLE +#define __HAL_RCC_SDIO_CLK_DISABLE __HAL_RCC_SDMMC1_CLK_DISABLE +#define __HAL_RCC_SDIO_IS_CLK_ENABLED __HAL_RCC_SDMMC1_IS_CLK_ENABLED +#define __HAL_RCC_SDIO_IS_CLK_DISABLED __HAL_RCC_SDMMC1_IS_CLK_DISABLED +#define SdioClockSelection Sdmmc1ClockSelection +#define RCC_PERIPHCLK_SDIO RCC_PERIPHCLK_SDMMC1 +#define __HAL_RCC_SDIO_CONFIG __HAL_RCC_SDMMC1_CONFIG +#define __HAL_RCC_GET_SDIO_SOURCE __HAL_RCC_GET_SDMMC1_SOURCE +#endif + +#if defined(STM32F7) +#define RCC_SDIOCLKSOURCE_CLK48 RCC_SDMMC1CLKSOURCE_CLK48 +#define RCC_SDIOCLKSOURCE_SYSCLK RCC_SDMMC1CLKSOURCE_SYSCLK +#endif + +#if defined(STM32H7) +#define __HAL_RCC_USB_OTG_HS_CLK_ENABLE() __HAL_RCC_USB1_OTG_HS_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_HS_CLK_DISABLE() __HAL_RCC_USB1_OTG_HS_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_HS_FORCE_RESET() __HAL_RCC_USB1_OTG_HS_FORCE_RESET() +#define __HAL_RCC_USB_OTG_HS_RELEASE_RESET() __HAL_RCC_USB1_OTG_HS_RELEASE_RESET() +#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE() __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE() __HAL_RCC_USB1_OTG_HS_CLK_SLEEP_DISABLE() +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE() __HAL_RCC_USB1_OTG_HS_ULPI_CLK_SLEEP_DISABLE() + +#define __HAL_RCC_USB_OTG_FS_CLK_ENABLE() __HAL_RCC_USB2_OTG_FS_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_ENABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_ENABLE() +#define __HAL_RCC_USB_OTG_FS_CLK_DISABLE() __HAL_RCC_USB2_OTG_FS_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_DISABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_DISABLE() +#define __HAL_RCC_USB_OTG_FS_FORCE_RESET() __HAL_RCC_USB2_OTG_FS_FORCE_RESET() +#define __HAL_RCC_USB_OTG_FS_RELEASE_RESET() __HAL_RCC_USB2_OTG_FS_RELEASE_RESET() +#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE() __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_SLEEP_ENABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_ENABLE() +#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE() __HAL_RCC_USB2_OTG_FS_CLK_SLEEP_DISABLE() +#define __HAL_RCC_USB_OTG_FS_ULPI_CLK_SLEEP_DISABLE() __HAL_RCC_USB2_OTG_FS_ULPI_CLK_SLEEP_DISABLE() +#endif + +#define __HAL_RCC_I2SCLK __HAL_RCC_I2S_CONFIG +#define __HAL_RCC_I2SCLK_CONFIG __HAL_RCC_I2S_CONFIG + +#define __RCC_PLLSRC RCC_GET_PLL_OSCSOURCE + +#define IS_RCC_MSIRANGE IS_RCC_MSI_CLOCK_RANGE +#define IS_RCC_RTCCLK_SOURCE IS_RCC_RTCCLKSOURCE +#define IS_RCC_SYSCLK_DIV IS_RCC_HCLK +#define IS_RCC_HCLK_DIV IS_RCC_PCLK +#define IS_RCC_PERIPHCLK IS_RCC_PERIPHCLOCK + +#define RCC_IT_HSI14 RCC_IT_HSI14RDY + +#define RCC_IT_CSSLSE RCC_IT_LSECSS +#define RCC_IT_CSSHSE RCC_IT_CSS + +#define RCC_PLLMUL_3 RCC_PLL_MUL3 +#define RCC_PLLMUL_4 RCC_PLL_MUL4 +#define RCC_PLLMUL_6 RCC_PLL_MUL6 +#define RCC_PLLMUL_8 RCC_PLL_MUL8 +#define RCC_PLLMUL_12 RCC_PLL_MUL12 +#define RCC_PLLMUL_16 RCC_PLL_MUL16 +#define RCC_PLLMUL_24 RCC_PLL_MUL24 +#define RCC_PLLMUL_32 RCC_PLL_MUL32 +#define RCC_PLLMUL_48 RCC_PLL_MUL48 + +#define RCC_PLLDIV_2 RCC_PLL_DIV2 +#define RCC_PLLDIV_3 RCC_PLL_DIV3 +#define RCC_PLLDIV_4 RCC_PLL_DIV4 + +#define IS_RCC_MCOSOURCE IS_RCC_MCO1SOURCE +#define __HAL_RCC_MCO_CONFIG __HAL_RCC_MCO1_CONFIG +#define RCC_MCO_NODIV RCC_MCODIV_1 +#define RCC_MCO_DIV1 RCC_MCODIV_1 +#define RCC_MCO_DIV2 RCC_MCODIV_2 +#define RCC_MCO_DIV4 RCC_MCODIV_4 +#define RCC_MCO_DIV8 RCC_MCODIV_8 +#define RCC_MCO_DIV16 RCC_MCODIV_16 +#define RCC_MCO_DIV32 RCC_MCODIV_32 +#define RCC_MCO_DIV64 RCC_MCODIV_64 +#define RCC_MCO_DIV128 RCC_MCODIV_128 +#define RCC_MCOSOURCE_NONE RCC_MCO1SOURCE_NOCLOCK +#define RCC_MCOSOURCE_LSI RCC_MCO1SOURCE_LSI +#define RCC_MCOSOURCE_LSE RCC_MCO1SOURCE_LSE +#define RCC_MCOSOURCE_SYSCLK RCC_MCO1SOURCE_SYSCLK +#define RCC_MCOSOURCE_HSI RCC_MCO1SOURCE_HSI +#define RCC_MCOSOURCE_HSI14 RCC_MCO1SOURCE_HSI14 +#define RCC_MCOSOURCE_HSI48 RCC_MCO1SOURCE_HSI48 +#define RCC_MCOSOURCE_HSE RCC_MCO1SOURCE_HSE +#define RCC_MCOSOURCE_PLLCLK_DIV1 RCC_MCO1SOURCE_PLLCLK +#define RCC_MCOSOURCE_PLLCLK_NODIV RCC_MCO1SOURCE_PLLCLK +#define RCC_MCOSOURCE_PLLCLK_DIV2 RCC_MCO1SOURCE_PLLCLK_DIV2 + +#if defined(STM32U0) +#define RCC_SYSCLKSOURCE_STATUS_PLLR RCC_SYSCLKSOURCE_STATUS_PLLCLK +#endif + +#if defined(STM32L4) || defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5) || \ + defined(STM32WL) || defined(STM32C0) || defined(STM32H7RS) || defined(STM32U0) +#define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE +#else +#define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK +#endif + +#define RCC_USBCLK_PLLSAI1 RCC_USBCLKSOURCE_PLLSAI1 +#define RCC_USBCLK_PLL RCC_USBCLKSOURCE_PLL +#define RCC_USBCLK_MSI RCC_USBCLKSOURCE_MSI +#define RCC_USBCLKSOURCE_PLLCLK RCC_USBCLKSOURCE_PLL +#define RCC_USBPLLCLK_DIV1 RCC_USBCLKSOURCE_PLL +#define RCC_USBPLLCLK_DIV1_5 RCC_USBCLKSOURCE_PLL_DIV1_5 +#define RCC_USBPLLCLK_DIV2 RCC_USBCLKSOURCE_PLL_DIV2 +#define RCC_USBPLLCLK_DIV3 RCC_USBCLKSOURCE_PLL_DIV3 + +#define HSION_BitNumber RCC_HSION_BIT_NUMBER +#define HSION_BITNUMBER RCC_HSION_BIT_NUMBER +#define HSEON_BitNumber RCC_HSEON_BIT_NUMBER +#define HSEON_BITNUMBER RCC_HSEON_BIT_NUMBER +#define MSION_BITNUMBER RCC_MSION_BIT_NUMBER +#define CSSON_BitNumber RCC_CSSON_BIT_NUMBER +#define CSSON_BITNUMBER RCC_CSSON_BIT_NUMBER +#define PLLON_BitNumber RCC_PLLON_BIT_NUMBER +#define PLLON_BITNUMBER RCC_PLLON_BIT_NUMBER +#define PLLI2SON_BitNumber RCC_PLLI2SON_BIT_NUMBER +#define I2SSRC_BitNumber RCC_I2SSRC_BIT_NUMBER +#define RTCEN_BitNumber RCC_RTCEN_BIT_NUMBER +#define RTCEN_BITNUMBER RCC_RTCEN_BIT_NUMBER +#define BDRST_BitNumber RCC_BDRST_BIT_NUMBER +#define BDRST_BITNUMBER RCC_BDRST_BIT_NUMBER +#define RTCRST_BITNUMBER RCC_RTCRST_BIT_NUMBER +#define LSION_BitNumber RCC_LSION_BIT_NUMBER +#define LSION_BITNUMBER RCC_LSION_BIT_NUMBER +#define LSEON_BitNumber RCC_LSEON_BIT_NUMBER +#define LSEON_BITNUMBER RCC_LSEON_BIT_NUMBER +#define LSEBYP_BITNUMBER RCC_LSEBYP_BIT_NUMBER +#define PLLSAION_BitNumber RCC_PLLSAION_BIT_NUMBER +#define TIMPRE_BitNumber RCC_TIMPRE_BIT_NUMBER +#define RMVF_BitNumber RCC_RMVF_BIT_NUMBER +#define RMVF_BITNUMBER RCC_RMVF_BIT_NUMBER +#define RCC_CR2_HSI14TRIM_BitNumber RCC_HSI14TRIM_BIT_NUMBER +#define CR_BYTE2_ADDRESS RCC_CR_BYTE2_ADDRESS +#define CIR_BYTE1_ADDRESS RCC_CIR_BYTE1_ADDRESS +#define CIR_BYTE2_ADDRESS RCC_CIR_BYTE2_ADDRESS +#define BDCR_BYTE0_ADDRESS RCC_BDCR_BYTE0_ADDRESS +#define DBP_TIMEOUT_VALUE RCC_DBP_TIMEOUT_VALUE +#define LSE_TIMEOUT_VALUE RCC_LSE_TIMEOUT_VALUE + +#define CR_HSION_BB RCC_CR_HSION_BB +#define CR_CSSON_BB RCC_CR_CSSON_BB +#define CR_PLLON_BB RCC_CR_PLLON_BB +#define CR_PLLI2SON_BB RCC_CR_PLLI2SON_BB +#define CR_MSION_BB RCC_CR_MSION_BB +#define CSR_LSION_BB RCC_CSR_LSION_BB +#define CSR_LSEON_BB RCC_CSR_LSEON_BB +#define CSR_LSEBYP_BB RCC_CSR_LSEBYP_BB +#define CSR_RTCEN_BB RCC_CSR_RTCEN_BB +#define CSR_RTCRST_BB RCC_CSR_RTCRST_BB +#define CFGR_I2SSRC_BB RCC_CFGR_I2SSRC_BB +#define BDCR_RTCEN_BB RCC_BDCR_RTCEN_BB +#define BDCR_BDRST_BB RCC_BDCR_BDRST_BB +#define CR_HSEON_BB RCC_CR_HSEON_BB +#define CSR_RMVF_BB RCC_CSR_RMVF_BB +#define CR_PLLSAION_BB RCC_CR_PLLSAION_BB +#define DCKCFGR_TIMPRE_BB RCC_DCKCFGR_TIMPRE_BB + +#define __HAL_RCC_CRS_ENABLE_FREQ_ERROR_COUNTER __HAL_RCC_CRS_FREQ_ERROR_COUNTER_ENABLE +#define __HAL_RCC_CRS_DISABLE_FREQ_ERROR_COUNTER __HAL_RCC_CRS_FREQ_ERROR_COUNTER_DISABLE +#define __HAL_RCC_CRS_ENABLE_AUTOMATIC_CALIB __HAL_RCC_CRS_AUTOMATIC_CALIB_ENABLE +#define __HAL_RCC_CRS_DISABLE_AUTOMATIC_CALIB __HAL_RCC_CRS_AUTOMATIC_CALIB_DISABLE +#define __HAL_RCC_CRS_CALCULATE_RELOADVALUE __HAL_RCC_CRS_RELOADVALUE_CALCULATE + +#define __HAL_RCC_GET_IT_SOURCE __HAL_RCC_GET_IT + +#define RCC_CRS_SYNCWARM RCC_CRS_SYNCWARN +#define RCC_CRS_TRIMOV RCC_CRS_TRIMOVF + +#define RCC_PERIPHCLK_CK48 RCC_PERIPHCLK_CLK48 +#define RCC_CK48CLKSOURCE_PLLQ RCC_CLK48CLKSOURCE_PLLQ +#define RCC_CK48CLKSOURCE_PLLSAIP RCC_CLK48CLKSOURCE_PLLSAIP +#define RCC_CK48CLKSOURCE_PLLI2SQ RCC_CLK48CLKSOURCE_PLLI2SQ +#define IS_RCC_CK48CLKSOURCE IS_RCC_CLK48CLKSOURCE +#define RCC_SDIOCLKSOURCE_CK48 RCC_SDIOCLKSOURCE_CLK48 + +#define __HAL_RCC_DFSDM_CLK_ENABLE __HAL_RCC_DFSDM1_CLK_ENABLE +#define __HAL_RCC_DFSDM_CLK_DISABLE __HAL_RCC_DFSDM1_CLK_DISABLE +#define __HAL_RCC_DFSDM_IS_CLK_ENABLED __HAL_RCC_DFSDM1_IS_CLK_ENABLED +#define __HAL_RCC_DFSDM_IS_CLK_DISABLED __HAL_RCC_DFSDM1_IS_CLK_DISABLED +#define __HAL_RCC_DFSDM_FORCE_RESET __HAL_RCC_DFSDM1_FORCE_RESET +#define __HAL_RCC_DFSDM_RELEASE_RESET __HAL_RCC_DFSDM1_RELEASE_RESET +#define __HAL_RCC_DFSDM_CLK_SLEEP_ENABLE __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE +#define __HAL_RCC_DFSDM_CLK_SLEEP_DISABLE __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE +#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_ENABLED __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED +#define __HAL_RCC_DFSDM_IS_CLK_SLEEP_DISABLED __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED +#define DfsdmClockSelection Dfsdm1ClockSelection +#define RCC_PERIPHCLK_DFSDM RCC_PERIPHCLK_DFSDM1 +#define RCC_DFSDMCLKSOURCE_PCLK RCC_DFSDM1CLKSOURCE_PCLK2 +#define RCC_DFSDMCLKSOURCE_SYSCLK RCC_DFSDM1CLKSOURCE_SYSCLK +#define __HAL_RCC_DFSDM_CONFIG __HAL_RCC_DFSDM1_CONFIG +#define __HAL_RCC_GET_DFSDM_SOURCE __HAL_RCC_GET_DFSDM1_SOURCE +#define RCC_DFSDM1CLKSOURCE_PCLK RCC_DFSDM1CLKSOURCE_PCLK2 +#define RCC_SWPMI1CLKSOURCE_PCLK RCC_SWPMI1CLKSOURCE_PCLK1 +#if !defined(STM32U0) +#define RCC_LPTIM1CLKSOURCE_PCLK RCC_LPTIM1CLKSOURCE_PCLK1 +#define RCC_LPTIM2CLKSOURCE_PCLK RCC_LPTIM2CLKSOURCE_PCLK1 +#endif + +#define RCC_DFSDM1AUDIOCLKSOURCE_I2SAPB1 RCC_DFSDM1AUDIOCLKSOURCE_I2S1 +#define RCC_DFSDM1AUDIOCLKSOURCE_I2SAPB2 RCC_DFSDM1AUDIOCLKSOURCE_I2S2 +#define RCC_DFSDM2AUDIOCLKSOURCE_I2SAPB1 RCC_DFSDM2AUDIOCLKSOURCE_I2S1 +#define RCC_DFSDM2AUDIOCLKSOURCE_I2SAPB2 RCC_DFSDM2AUDIOCLKSOURCE_I2S2 +#define RCC_DFSDM1CLKSOURCE_APB2 RCC_DFSDM1CLKSOURCE_PCLK2 +#define RCC_DFSDM2CLKSOURCE_APB2 RCC_DFSDM2CLKSOURCE_PCLK2 +#define RCC_FMPI2C1CLKSOURCE_APB RCC_FMPI2C1CLKSOURCE_PCLK1 +#if defined(STM32U5) +#define MSIKPLLModeSEL RCC_MSIKPLL_MODE_SEL +#define MSISPLLModeSEL RCC_MSISPLL_MODE_SEL +#define __HAL_RCC_AHB21_CLK_DISABLE __HAL_RCC_AHB2_1_CLK_DISABLE +#define __HAL_RCC_AHB22_CLK_DISABLE __HAL_RCC_AHB2_2_CLK_DISABLE +#define __HAL_RCC_AHB1_CLK_Disable_Clear __HAL_RCC_AHB1_CLK_ENABLE +#define __HAL_RCC_AHB21_CLK_Disable_Clear __HAL_RCC_AHB2_1_CLK_ENABLE +#define __HAL_RCC_AHB22_CLK_Disable_Clear __HAL_RCC_AHB2_2_CLK_ENABLE +#define __HAL_RCC_AHB3_CLK_Disable_Clear __HAL_RCC_AHB3_CLK_ENABLE +#define __HAL_RCC_APB1_CLK_Disable_Clear __HAL_RCC_APB1_CLK_ENABLE +#define __HAL_RCC_APB2_CLK_Disable_Clear __HAL_RCC_APB2_CLK_ENABLE +#define __HAL_RCC_APB3_CLK_Disable_Clear __HAL_RCC_APB3_CLK_ENABLE +#define IS_RCC_MSIPLLModeSelection IS_RCC_MSIPLLMODE_SELECT +#define RCC_PERIPHCLK_CLK48 RCC_PERIPHCLK_ICLK +#define RCC_CLK48CLKSOURCE_HSI48 RCC_ICLK_CLKSOURCE_HSI48 +#define RCC_CLK48CLKSOURCE_PLL2 RCC_ICLK_CLKSOURCE_PLL2 +#define RCC_CLK48CLKSOURCE_PLL1 RCC_ICLK_CLKSOURCE_PLL1 +#define RCC_CLK48CLKSOURCE_MSIK RCC_ICLK_CLKSOURCE_MSIK +#define __HAL_RCC_ADC1_CLK_ENABLE __HAL_RCC_ADC12_CLK_ENABLE +#define __HAL_RCC_ADC1_CLK_DISABLE __HAL_RCC_ADC12_CLK_DISABLE +#define __HAL_RCC_ADC1_IS_CLK_ENABLED __HAL_RCC_ADC12_IS_CLK_ENABLED +#define __HAL_RCC_ADC1_IS_CLK_DISABLED __HAL_RCC_ADC12_IS_CLK_DISABLED +#define __HAL_RCC_ADC1_FORCE_RESET __HAL_RCC_ADC12_FORCE_RESET +#define __HAL_RCC_ADC1_RELEASE_RESET __HAL_RCC_ADC12_RELEASE_RESET +#define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE __HAL_RCC_ADC12_CLK_SLEEP_ENABLE +#define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE __HAL_RCC_ADC12_CLK_SLEEP_DISABLE +#define __HAL_RCC_GET_CLK48_SOURCE __HAL_RCC_GET_ICLK_SOURCE +#define __HAL_RCC_PLLFRACN_ENABLE __HAL_RCC_PLL_FRACN_ENABLE +#define __HAL_RCC_PLLFRACN_DISABLE __HAL_RCC_PLL_FRACN_DISABLE +#define __HAL_RCC_PLLFRACN_CONFIG __HAL_RCC_PLL_FRACN_CONFIG +#define IS_RCC_PLLFRACN_VALUE IS_RCC_PLL_FRACN_VALUE +#endif /* STM32U5 */ + +#if defined(STM32H5) +#define __HAL_RCC_PLLFRACN_ENABLE __HAL_RCC_PLL_FRACN_ENABLE +#define __HAL_RCC_PLLFRACN_DISABLE __HAL_RCC_PLL_FRACN_DISABLE +#define __HAL_RCC_PLLFRACN_CONFIG __HAL_RCC_PLL_FRACN_CONFIG +#define IS_RCC_PLLFRACN_VALUE IS_RCC_PLL_FRACN_VALUE + +#define RCC_PLLSOURCE_NONE RCC_PLL1_SOURCE_NONE +#define RCC_PLLSOURCE_HSI RCC_PLL1_SOURCE_HSI +#define RCC_PLLSOURCE_CSI RCC_PLL1_SOURCE_CSI +#define RCC_PLLSOURCE_HSE RCC_PLL1_SOURCE_HSE +#define RCC_PLLVCIRANGE_0 RCC_PLL1_VCIRANGE_0 +#define RCC_PLLVCIRANGE_1 RCC_PLL1_VCIRANGE_1 +#define RCC_PLLVCIRANGE_2 RCC_PLL1_VCIRANGE_2 +#define RCC_PLLVCIRANGE_3 RCC_PLL1_VCIRANGE_3 +#define RCC_PLL1VCOWIDE RCC_PLL1_VCORANGE_WIDE +#define RCC_PLL1VCOMEDIUM RCC_PLL1_VCORANGE_MEDIUM + +#define IS_RCC_PLLSOURCE IS_RCC_PLL1_SOURCE +#define IS_RCC_PLLRGE_VALUE IS_RCC_PLL1_VCIRGE_VALUE +#define IS_RCC_PLLVCORGE_VALUE IS_RCC_PLL1_VCORGE_VALUE +#define IS_RCC_PLLCLOCKOUT_VALUE IS_RCC_PLL1_CLOCKOUT_VALUE +#define IS_RCC_PLL_FRACN_VALUE IS_RCC_PLL1_FRACN_VALUE +#define IS_RCC_PLLM_VALUE IS_RCC_PLL1_DIVM_VALUE +#define IS_RCC_PLLN_VALUE IS_RCC_PLL1_MULN_VALUE +#define IS_RCC_PLLP_VALUE IS_RCC_PLL1_DIVP_VALUE +#define IS_RCC_PLLQ_VALUE IS_RCC_PLL1_DIVQ_VALUE +#define IS_RCC_PLLR_VALUE IS_RCC_PLL1_DIVR_VALUE + +#define __HAL_RCC_PLL_ENABLE __HAL_RCC_PLL1_ENABLE +#define __HAL_RCC_PLL_DISABLE __HAL_RCC_PLL1_DISABLE +#define __HAL_RCC_PLL_FRACN_ENABLE __HAL_RCC_PLL1_FRACN_ENABLE +#define __HAL_RCC_PLL_FRACN_DISABLE __HAL_RCC_PLL1_FRACN_DISABLE +#define __HAL_RCC_PLL_CONFIG __HAL_RCC_PLL1_CONFIG +#define __HAL_RCC_PLL_PLLSOURCE_CONFIG __HAL_RCC_PLL1_PLLSOURCE_CONFIG +#define __HAL_RCC_PLL_DIVM_CONFIG __HAL_RCC_PLL1_DIVM_CONFIG +#define __HAL_RCC_PLL_FRACN_CONFIG __HAL_RCC_PLL1_FRACN_CONFIG +#define __HAL_RCC_PLL_VCIRANGE __HAL_RCC_PLL1_VCIRANGE +#define __HAL_RCC_PLL_VCORANGE __HAL_RCC_PLL1_VCORANGE +#define __HAL_RCC_GET_PLL_OSCSOURCE __HAL_RCC_GET_PLL1_OSCSOURCE +#define __HAL_RCC_PLLCLKOUT_ENABLE __HAL_RCC_PLL1_CLKOUT_ENABLE +#define __HAL_RCC_PLLCLKOUT_DISABLE __HAL_RCC_PLL1_CLKOUT_DISABLE +#define __HAL_RCC_GET_PLLCLKOUT_CONFIG __HAL_RCC_GET_PLL1_CLKOUT_CONFIG + +#define __HAL_RCC_PLL2FRACN_ENABLE __HAL_RCC_PLL2_FRACN_ENABLE +#define __HAL_RCC_PLL2FRACN_DISABLE __HAL_RCC_PLL2_FRACN_DISABLE +#define __HAL_RCC_PLL2CLKOUT_ENABLE __HAL_RCC_PLL2_CLKOUT_ENABLE +#define __HAL_RCC_PLL2CLKOUT_DISABLE __HAL_RCC_PLL2_CLKOUT_DISABLE +#define __HAL_RCC_PLL2FRACN_CONFIG __HAL_RCC_PLL2_FRACN_CONFIG +#define __HAL_RCC_GET_PLL2CLKOUT_CONFIG __HAL_RCC_GET_PLL2_CLKOUT_CONFIG + +#define __HAL_RCC_PLL3FRACN_ENABLE __HAL_RCC_PLL3_FRACN_ENABLE +#define __HAL_RCC_PLL3FRACN_DISABLE __HAL_RCC_PLL3_FRACN_DISABLE +#define __HAL_RCC_PLL3CLKOUT_ENABLE __HAL_RCC_PLL3_CLKOUT_ENABLE +#define __HAL_RCC_PLL3CLKOUT_DISABLE __HAL_RCC_PLL3_CLKOUT_DISABLE +#define __HAL_RCC_PLL3FRACN_CONFIG __HAL_RCC_PLL3_FRACN_CONFIG +#define __HAL_RCC_GET_PLL3CLKOUT_CONFIG __HAL_RCC_GET_PLL3_CLKOUT_CONFIG + +#define RCC_PLL2VCIRANGE_0 RCC_PLL2_VCIRANGE_0 +#define RCC_PLL2VCIRANGE_1 RCC_PLL2_VCIRANGE_1 +#define RCC_PLL2VCIRANGE_2 RCC_PLL2_VCIRANGE_2 +#define RCC_PLL2VCIRANGE_3 RCC_PLL2_VCIRANGE_3 + +#define RCC_PLL2VCOWIDE RCC_PLL2_VCORANGE_WIDE +#define RCC_PLL2VCOMEDIUM RCC_PLL2_VCORANGE_MEDIUM + +#define RCC_PLL2SOURCE_NONE RCC_PLL2_SOURCE_NONE +#define RCC_PLL2SOURCE_HSI RCC_PLL2_SOURCE_HSI +#define RCC_PLL2SOURCE_CSI RCC_PLL2_SOURCE_CSI +#define RCC_PLL2SOURCE_HSE RCC_PLL2_SOURCE_HSE + +#define RCC_PLL3VCIRANGE_0 RCC_PLL3_VCIRANGE_0 +#define RCC_PLL3VCIRANGE_1 RCC_PLL3_VCIRANGE_1 +#define RCC_PLL3VCIRANGE_2 RCC_PLL3_VCIRANGE_2 +#define RCC_PLL3VCIRANGE_3 RCC_PLL3_VCIRANGE_3 + +#define RCC_PLL3VCOWIDE RCC_PLL3_VCORANGE_WIDE +#define RCC_PLL3VCOMEDIUM RCC_PLL3_VCORANGE_MEDIUM + +#define RCC_PLL3SOURCE_NONE RCC_PLL3_SOURCE_NONE +#define RCC_PLL3SOURCE_HSI RCC_PLL3_SOURCE_HSI +#define RCC_PLL3SOURCE_CSI RCC_PLL3_SOURCE_CSI +#define RCC_PLL3SOURCE_HSE RCC_PLL3_SOURCE_HSE + + +#endif /* STM32H5 */ + +/** + * @} + */ + +/** @defgroup HAL_RNG_Aliased_Macros HAL RNG Aliased Macros maintained for legacy purpose + * @{ + */ +#define HAL_RNG_ReadyCallback(__HANDLE__) HAL_RNG_ReadyDataCallback((__HANDLE__), uint32_t random32bit) + +/** + * @} + */ + +/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || \ + defined (STM32L4P5xx)|| defined (STM32L4Q5xx) || defined (STM32G4) || defined (STM32WL) || defined (STM32U5) || \ + defined (STM32WBA) || defined (STM32H5) || defined (STM32C0) || defined (STM32H7RS) || defined (STM32U0) +#else +#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG +#endif +#define __HAL_RTC_DISABLE_IT __HAL_RTC_EXTI_DISABLE_IT +#define __HAL_RTC_ENABLE_IT __HAL_RTC_EXTI_ENABLE_IT + +#if defined (STM32F1) +#define __HAL_RTC_EXTI_CLEAR_FLAG(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_CLEAR_FLAG() + +#define __HAL_RTC_EXTI_ENABLE_IT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_ENABLE_IT() + +#define __HAL_RTC_EXTI_DISABLE_IT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_DISABLE_IT() + +#define __HAL_RTC_EXTI_GET_FLAG(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_GET_FLAG() + +#define __HAL_RTC_EXTI_GENERATE_SWIT(RTC_EXTI_LINE_ALARM_EVENT) __HAL_RTC_ALARM_EXTI_GENERATE_SWIT() +#else +#define __HAL_RTC_EXTI_CLEAR_FLAG(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_CLEAR_FLAG() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG())) +#define __HAL_RTC_EXTI_ENABLE_IT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_ENABLE_IT() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT())) +#define __HAL_RTC_EXTI_DISABLE_IT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_DISABLE_IT() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT())) +#define __HAL_RTC_EXTI_GET_FLAG(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GET_FLAG() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG())) +#define __HAL_RTC_EXTI_GENERATE_SWIT(__EXTI_LINE__) (((__EXTI_LINE__) == RTC_EXTI_LINE_ALARM_EVENT) ? __HAL_RTC_ALARM_EXTI_GENERATE_SWIT() : \ + (((__EXTI_LINE__) == RTC_EXTI_LINE_WAKEUPTIMER_EVENT) ? __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT() : \ + __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT())) +#endif /* STM32F1 */ + +#if defined (STM32F0) || defined (STM32F2) || defined (STM32F3) || defined (STM32F4) || defined (STM32F7) || \ + defined (STM32H7) || \ + defined (STM32L0) || defined (STM32L1) || \ + defined (STM32WB) +#define __HAL_RTC_TAMPER_GET_IT __HAL_RTC_TAMPER_GET_FLAG +#endif + +#define IS_ALARM IS_RTC_ALARM +#define IS_ALARM_MASK IS_RTC_ALARM_MASK +#define IS_TAMPER IS_RTC_TAMPER +#define IS_TAMPER_ERASE_MODE IS_RTC_TAMPER_ERASE_MODE +#define IS_TAMPER_FILTER IS_RTC_TAMPER_FILTER +#define IS_TAMPER_INTERRUPT IS_RTC_TAMPER_INTERRUPT +#define IS_TAMPER_MASKFLAG_STATE IS_RTC_TAMPER_MASKFLAG_STATE +#define IS_TAMPER_PRECHARGE_DURATION IS_RTC_TAMPER_PRECHARGE_DURATION +#define IS_TAMPER_PULLUP_STATE IS_RTC_TAMPER_PULLUP_STATE +#define IS_TAMPER_SAMPLING_FREQ IS_RTC_TAMPER_SAMPLING_FREQ +#define IS_TAMPER_TIMESTAMPONTAMPER_DETECTION IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION +#define IS_TAMPER_TRIGGER IS_RTC_TAMPER_TRIGGER +#define IS_WAKEUP_CLOCK IS_RTC_WAKEUP_CLOCK +#define IS_WAKEUP_COUNTER IS_RTC_WAKEUP_COUNTER + +#define __RTC_WRITEPROTECTION_ENABLE __HAL_RTC_WRITEPROTECTION_ENABLE +#define __RTC_WRITEPROTECTION_DISABLE __HAL_RTC_WRITEPROTECTION_DISABLE + +#if defined (STM32H5) +#define __HAL_RCC_RTCAPB_CLK_ENABLE __HAL_RCC_RTC_CLK_ENABLE +#define __HAL_RCC_RTCAPB_CLK_DISABLE __HAL_RCC_RTC_CLK_DISABLE +#endif /* STM32H5 */ + +/** + * @} + */ + +/** @defgroup HAL_SD_Aliased_Macros HAL SD/MMC Aliased Macros maintained for legacy purpose + * @{ + */ + +#define SD_OCR_CID_CSD_OVERWRIETE SD_OCR_CID_CSD_OVERWRITE +#define SD_CMD_SD_APP_STAUS SD_CMD_SD_APP_STATUS + +#if !defined(STM32F1) && !defined(STM32F2) && !defined(STM32F4) && !defined(STM32L1) +#define eMMC_HIGH_VOLTAGE_RANGE EMMC_HIGH_VOLTAGE_RANGE +#define eMMC_DUAL_VOLTAGE_RANGE EMMC_DUAL_VOLTAGE_RANGE +#define eMMC_LOW_VOLTAGE_RANGE EMMC_LOW_VOLTAGE_RANGE + +#define SDMMC_NSpeed_CLK_DIV SDMMC_NSPEED_CLK_DIV +#define SDMMC_HSpeed_CLK_DIV SDMMC_HSPEED_CLK_DIV +#endif + +#if defined(STM32F4) || defined(STM32F2) +#define SD_SDMMC_DISABLED SD_SDIO_DISABLED +#define SD_SDMMC_FUNCTION_BUSY SD_SDIO_FUNCTION_BUSY +#define SD_SDMMC_FUNCTION_FAILED SD_SDIO_FUNCTION_FAILED +#define SD_SDMMC_UNKNOWN_FUNCTION SD_SDIO_UNKNOWN_FUNCTION +#define SD_CMD_SDMMC_SEN_OP_COND SD_CMD_SDIO_SEN_OP_COND +#define SD_CMD_SDMMC_RW_DIRECT SD_CMD_SDIO_RW_DIRECT +#define SD_CMD_SDMMC_RW_EXTENDED SD_CMD_SDIO_RW_EXTENDED +#define __HAL_SD_SDMMC_ENABLE __HAL_SD_SDIO_ENABLE +#define __HAL_SD_SDMMC_DISABLE __HAL_SD_SDIO_DISABLE +#define __HAL_SD_SDMMC_DMA_ENABLE __HAL_SD_SDIO_DMA_ENABLE +#define __HAL_SD_SDMMC_DMA_DISABLE __HAL_SD_SDIO_DMA_DISABL +#define __HAL_SD_SDMMC_ENABLE_IT __HAL_SD_SDIO_ENABLE_IT +#define __HAL_SD_SDMMC_DISABLE_IT __HAL_SD_SDIO_DISABLE_IT +#define __HAL_SD_SDMMC_GET_FLAG __HAL_SD_SDIO_GET_FLAG +#define __HAL_SD_SDMMC_CLEAR_FLAG __HAL_SD_SDIO_CLEAR_FLAG +#define __HAL_SD_SDMMC_GET_IT __HAL_SD_SDIO_GET_IT +#define __HAL_SD_SDMMC_CLEAR_IT __HAL_SD_SDIO_CLEAR_IT +#define SDMMC_STATIC_FLAGS SDIO_STATIC_FLAGS +#define SDMMC_CMD0TIMEOUT SDIO_CMD0TIMEOUT +#define SD_SDMMC_SEND_IF_COND SD_SDIO_SEND_IF_COND +/* alias CMSIS */ +#define SDMMC1_IRQn SDIO_IRQn +#define SDMMC1_IRQHandler SDIO_IRQHandler +#endif + +#if defined(STM32F7) || defined(STM32L4) +#define SD_SDIO_DISABLED SD_SDMMC_DISABLED +#define SD_SDIO_FUNCTION_BUSY SD_SDMMC_FUNCTION_BUSY +#define SD_SDIO_FUNCTION_FAILED SD_SDMMC_FUNCTION_FAILED +#define SD_SDIO_UNKNOWN_FUNCTION SD_SDMMC_UNKNOWN_FUNCTION +#define SD_CMD_SDIO_SEN_OP_COND SD_CMD_SDMMC_SEN_OP_COND +#define SD_CMD_SDIO_RW_DIRECT SD_CMD_SDMMC_RW_DIRECT +#define SD_CMD_SDIO_RW_EXTENDED SD_CMD_SDMMC_RW_EXTENDED +#define __HAL_SD_SDIO_ENABLE __HAL_SD_SDMMC_ENABLE +#define __HAL_SD_SDIO_DISABLE __HAL_SD_SDMMC_DISABLE +#define __HAL_SD_SDIO_DMA_ENABLE __HAL_SD_SDMMC_DMA_ENABLE +#define __HAL_SD_SDIO_DMA_DISABL __HAL_SD_SDMMC_DMA_DISABLE +#define __HAL_SD_SDIO_ENABLE_IT __HAL_SD_SDMMC_ENABLE_IT +#define __HAL_SD_SDIO_DISABLE_IT __HAL_SD_SDMMC_DISABLE_IT +#define __HAL_SD_SDIO_GET_FLAG __HAL_SD_SDMMC_GET_FLAG +#define __HAL_SD_SDIO_CLEAR_FLAG __HAL_SD_SDMMC_CLEAR_FLAG +#define __HAL_SD_SDIO_GET_IT __HAL_SD_SDMMC_GET_IT +#define __HAL_SD_SDIO_CLEAR_IT __HAL_SD_SDMMC_CLEAR_IT +#define SDIO_STATIC_FLAGS SDMMC_STATIC_FLAGS +#define SDIO_CMD0TIMEOUT SDMMC_CMD0TIMEOUT +#define SD_SDIO_SEND_IF_COND SD_SDMMC_SEND_IF_COND +/* alias CMSIS for compatibilities */ +#define SDIO_IRQn SDMMC1_IRQn +#define SDIO_IRQHandler SDMMC1_IRQHandler +#endif + +#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2) || defined(STM32L4) || defined(STM32H7) +#define HAL_SD_CardCIDTypedef HAL_SD_CardCIDTypeDef +#define HAL_SD_CardCSDTypedef HAL_SD_CardCSDTypeDef +#define HAL_SD_CardStatusTypedef HAL_SD_CardStatusTypeDef +#define HAL_SD_CardStateTypedef HAL_SD_CardStateTypeDef +#endif + +#if defined(STM32H7) || defined(STM32L5) +#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback HAL_MMCEx_Read_DMADoubleBuf0CpltCallback +#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback HAL_MMCEx_Read_DMADoubleBuf1CpltCallback +#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback HAL_MMCEx_Write_DMADoubleBuf0CpltCallback +#define HAL_MMCEx_Write_DMADoubleBuffer1CpltCallback HAL_MMCEx_Write_DMADoubleBuf1CpltCallback +#define HAL_SDEx_Read_DMADoubleBuffer0CpltCallback HAL_SDEx_Read_DMADoubleBuf0CpltCallback +#define HAL_SDEx_Read_DMADoubleBuffer1CpltCallback HAL_SDEx_Read_DMADoubleBuf1CpltCallback +#define HAL_SDEx_Write_DMADoubleBuffer0CpltCallback HAL_SDEx_Write_DMADoubleBuf0CpltCallback +#define HAL_SDEx_Write_DMADoubleBuffer1CpltCallback HAL_SDEx_Write_DMADoubleBuf1CpltCallback +#define HAL_SD_DriveTransciver_1_8V_Callback HAL_SD_DriveTransceiver_1_8V_Callback +#endif +/** + * @} + */ + +/** @defgroup HAL_SMARTCARD_Aliased_Macros HAL SMARTCARD Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __SMARTCARD_ENABLE_IT __HAL_SMARTCARD_ENABLE_IT +#define __SMARTCARD_DISABLE_IT __HAL_SMARTCARD_DISABLE_IT +#define __SMARTCARD_ENABLE __HAL_SMARTCARD_ENABLE +#define __SMARTCARD_DISABLE __HAL_SMARTCARD_DISABLE +#define __SMARTCARD_DMA_REQUEST_ENABLE __HAL_SMARTCARD_DMA_REQUEST_ENABLE +#define __SMARTCARD_DMA_REQUEST_DISABLE __HAL_SMARTCARD_DMA_REQUEST_DISABLE + +#define __HAL_SMARTCARD_GETCLOCKSOURCE SMARTCARD_GETCLOCKSOURCE +#define __SMARTCARD_GETCLOCKSOURCE SMARTCARD_GETCLOCKSOURCE + +#define IS_SMARTCARD_ONEBIT_SAMPLING IS_SMARTCARD_ONE_BIT_SAMPLE + +/** + * @} + */ + +/** @defgroup HAL_SMBUS_Aliased_Macros HAL SMBUS Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_SMBUS_RESET_CR1 SMBUS_RESET_CR1 +#define __HAL_SMBUS_RESET_CR2 SMBUS_RESET_CR2 +#define __HAL_SMBUS_GENERATE_START SMBUS_GENERATE_START +#define __HAL_SMBUS_GET_ADDR_MATCH SMBUS_GET_ADDR_MATCH +#define __HAL_SMBUS_GET_DIR SMBUS_GET_DIR +#define __HAL_SMBUS_GET_STOP_MODE SMBUS_GET_STOP_MODE +#define __HAL_SMBUS_GET_PEC_MODE SMBUS_GET_PEC_MODE +#define __HAL_SMBUS_GET_ALERT_ENABLED SMBUS_GET_ALERT_ENABLED +/** + * @} + */ + +/** @defgroup HAL_SPI_Aliased_Macros HAL SPI Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_SPI_1LINE_TX SPI_1LINE_TX +#define __HAL_SPI_1LINE_RX SPI_1LINE_RX +#define __HAL_SPI_RESET_CRC SPI_RESET_CRC + +/** + * @} + */ + +/** @defgroup HAL_UART_Aliased_Macros HAL UART Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_UART_GETCLOCKSOURCE UART_GETCLOCKSOURCE +#define __HAL_UART_MASK_COMPUTATION UART_MASK_COMPUTATION +#define __UART_GETCLOCKSOURCE UART_GETCLOCKSOURCE +#define __UART_MASK_COMPUTATION UART_MASK_COMPUTATION + +#define IS_UART_WAKEUPMETHODE IS_UART_WAKEUPMETHOD + +#define IS_UART_ONEBIT_SAMPLE IS_UART_ONE_BIT_SAMPLE +#define IS_UART_ONEBIT_SAMPLING IS_UART_ONE_BIT_SAMPLE + +/** + * @} + */ + + +/** @defgroup HAL_USART_Aliased_Macros HAL USART Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __USART_ENABLE_IT __HAL_USART_ENABLE_IT +#define __USART_DISABLE_IT __HAL_USART_DISABLE_IT +#define __USART_ENABLE __HAL_USART_ENABLE +#define __USART_DISABLE __HAL_USART_DISABLE + +#define __HAL_USART_GETCLOCKSOURCE USART_GETCLOCKSOURCE +#define __USART_GETCLOCKSOURCE USART_GETCLOCKSOURCE + +#if defined(STM32F0) || defined(STM32F3) || defined(STM32F7) +#define USART_OVERSAMPLING_16 0x00000000U +#define USART_OVERSAMPLING_8 USART_CR1_OVER8 + +#define IS_USART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == USART_OVERSAMPLING_16) || \ + ((__SAMPLING__) == USART_OVERSAMPLING_8)) +#endif /* STM32F0 || STM32F3 || STM32F7 */ +/** + * @} + */ + +/** @defgroup HAL_USB_Aliased_Macros HAL USB Aliased Macros maintained for legacy purpose + * @{ + */ +#define USB_EXTI_LINE_WAKEUP USB_WAKEUP_EXTI_LINE + +#define USB_FS_EXTI_TRIGGER_RISING_EDGE USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE +#define USB_FS_EXTI_TRIGGER_FALLING_EDGE USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE +#define USB_FS_EXTI_TRIGGER_BOTH_EDGE USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE +#define USB_FS_EXTI_LINE_WAKEUP USB_OTG_FS_WAKEUP_EXTI_LINE + +#define USB_HS_EXTI_TRIGGER_RISING_EDGE USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE +#define USB_HS_EXTI_TRIGGER_FALLING_EDGE USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE +#define USB_HS_EXTI_TRIGGER_BOTH_EDGE USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE +#define USB_HS_EXTI_LINE_WAKEUP USB_OTG_HS_WAKEUP_EXTI_LINE + +#define __HAL_USB_EXTI_ENABLE_IT __HAL_USB_WAKEUP_EXTI_ENABLE_IT +#define __HAL_USB_EXTI_DISABLE_IT __HAL_USB_WAKEUP_EXTI_DISABLE_IT +#define __HAL_USB_EXTI_GET_FLAG __HAL_USB_WAKEUP_EXTI_GET_FLAG +#define __HAL_USB_EXTI_CLEAR_FLAG __HAL_USB_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_USB_EXTI_SET_RISING_EDGE_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_EDGE +#define __HAL_USB_EXTI_SET_FALLING_EDGE_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_FALLING_EDGE +#define __HAL_USB_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE + +#define __HAL_USB_FS_EXTI_ENABLE_IT __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT +#define __HAL_USB_FS_EXTI_DISABLE_IT __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT +#define __HAL_USB_FS_EXTI_GET_FLAG __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG +#define __HAL_USB_FS_EXTI_CLEAR_FLAG __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_USB_FS_EXTI_SET_RISING_EGDE_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE +#define __HAL_USB_FS_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_FALLING_EDGE +#define __HAL_USB_FS_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE +#define __HAL_USB_FS_EXTI_GENERATE_SWIT __HAL_USB_OTG_FS_WAKEUP_EXTI_GENERATE_SWIT + +#define __HAL_USB_HS_EXTI_ENABLE_IT __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT +#define __HAL_USB_HS_EXTI_DISABLE_IT __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT +#define __HAL_USB_HS_EXTI_GET_FLAG __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG +#define __HAL_USB_HS_EXTI_CLEAR_FLAG __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_USB_HS_EXTI_SET_RISING_EGDE_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE +#define __HAL_USB_HS_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_FALLING_EDGE +#define __HAL_USB_HS_EXTI_SET_FALLINGRISING_TRIGGER __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_FALLING_EDGE +#define __HAL_USB_HS_EXTI_GENERATE_SWIT __HAL_USB_OTG_HS_WAKEUP_EXTI_GENERATE_SWIT + +#define HAL_PCD_ActiveRemoteWakeup HAL_PCD_ActivateRemoteWakeup +#define HAL_PCD_DeActiveRemoteWakeup HAL_PCD_DeActivateRemoteWakeup + +#define HAL_PCD_SetTxFiFo HAL_PCDEx_SetTxFiFo +#define HAL_PCD_SetRxFiFo HAL_PCDEx_SetRxFiFo +/** + * @} + */ + +/** @defgroup HAL_TIM_Aliased_Macros HAL TIM Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_TIM_SetICPrescalerValue TIM_SET_ICPRESCALERVALUE +#define __HAL_TIM_ResetICPrescalerValue TIM_RESET_ICPRESCALERVALUE + +#define TIM_GET_ITSTATUS __HAL_TIM_GET_IT_SOURCE +#define TIM_GET_CLEAR_IT __HAL_TIM_CLEAR_IT + +#define __HAL_TIM_GET_ITSTATUS __HAL_TIM_GET_IT_SOURCE + +#define __HAL_TIM_DIRECTION_STATUS __HAL_TIM_IS_TIM_COUNTING_DOWN +#define __HAL_TIM_PRESCALER __HAL_TIM_SET_PRESCALER +#define __HAL_TIM_SetCounter __HAL_TIM_SET_COUNTER +#define __HAL_TIM_GetCounter __HAL_TIM_GET_COUNTER +#define __HAL_TIM_SetAutoreload __HAL_TIM_SET_AUTORELOAD +#define __HAL_TIM_GetAutoreload __HAL_TIM_GET_AUTORELOAD +#define __HAL_TIM_SetClockDivision __HAL_TIM_SET_CLOCKDIVISION +#define __HAL_TIM_GetClockDivision __HAL_TIM_GET_CLOCKDIVISION +#define __HAL_TIM_SetICPrescaler __HAL_TIM_SET_ICPRESCALER +#define __HAL_TIM_GetICPrescaler __HAL_TIM_GET_ICPRESCALER +#define __HAL_TIM_SetCompare __HAL_TIM_SET_COMPARE +#define __HAL_TIM_GetCompare __HAL_TIM_GET_COMPARE + +#define TIM_BREAKINPUTSOURCE_DFSDM TIM_BREAKINPUTSOURCE_DFSDM1 + +#define TIM_OCMODE_ASSYMETRIC_PWM1 TIM_OCMODE_ASYMMETRIC_PWM1 +#define TIM_OCMODE_ASSYMETRIC_PWM2 TIM_OCMODE_ASYMMETRIC_PWM2 +/** + * @} + */ + +/** @defgroup HAL_ETH_Aliased_Macros HAL ETH Aliased Macros maintained for legacy purpose + * @{ + */ + +#define __HAL_ETH_EXTI_ENABLE_IT __HAL_ETH_WAKEUP_EXTI_ENABLE_IT +#define __HAL_ETH_EXTI_DISABLE_IT __HAL_ETH_WAKEUP_EXTI_DISABLE_IT +#define __HAL_ETH_EXTI_GET_FLAG __HAL_ETH_WAKEUP_EXTI_GET_FLAG +#define __HAL_ETH_EXTI_CLEAR_FLAG __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG +#define __HAL_ETH_EXTI_SET_RISING_EGDE_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_RISING_EDGE_TRIGGER +#define __HAL_ETH_EXTI_SET_FALLING_EGDE_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLING_EDGE_TRIGGER +#define __HAL_ETH_EXTI_SET_FALLINGRISING_TRIGGER __HAL_ETH_WAKEUP_EXTI_ENABLE_FALLINGRISING_TRIGGER + +#define ETH_PROMISCIOUSMODE_ENABLE ETH_PROMISCUOUS_MODE_ENABLE +#define ETH_PROMISCIOUSMODE_DISABLE ETH_PROMISCUOUS_MODE_DISABLE +#define IS_ETH_PROMISCIOUS_MODE IS_ETH_PROMISCUOUS_MODE +/** + * @} + */ + +/** @defgroup HAL_LTDC_Aliased_Macros HAL LTDC Aliased Macros maintained for legacy purpose + * @{ + */ +#define __HAL_LTDC_LAYER LTDC_LAYER +#define __HAL_LTDC_RELOAD_CONFIG __HAL_LTDC_RELOAD_IMMEDIATE_CONFIG +/** + * @} + */ + +/** @defgroup HAL_SAI_Aliased_Macros HAL SAI Aliased Macros maintained for legacy purpose + * @{ + */ +#define SAI_OUTPUTDRIVE_DISABLED SAI_OUTPUTDRIVE_DISABLE +#define SAI_OUTPUTDRIVE_ENABLED SAI_OUTPUTDRIVE_ENABLE +#define SAI_MASTERDIVIDER_ENABLED SAI_MASTERDIVIDER_ENABLE +#define SAI_MASTERDIVIDER_DISABLED SAI_MASTERDIVIDER_DISABLE +#define SAI_STREOMODE SAI_STEREOMODE +#define SAI_FIFOStatus_Empty SAI_FIFOSTATUS_EMPTY +#define SAI_FIFOStatus_Less1QuarterFull SAI_FIFOSTATUS_LESS1QUARTERFULL +#define SAI_FIFOStatus_1QuarterFull SAI_FIFOSTATUS_1QUARTERFULL +#define SAI_FIFOStatus_HalfFull SAI_FIFOSTATUS_HALFFULL +#define SAI_FIFOStatus_3QuartersFull SAI_FIFOSTATUS_3QUARTERFULL +#define SAI_FIFOStatus_Full SAI_FIFOSTATUS_FULL +#define IS_SAI_BLOCK_MONO_STREO_MODE IS_SAI_BLOCK_MONO_STEREO_MODE +#define SAI_SYNCHRONOUS_EXT SAI_SYNCHRONOUS_EXT_SAI1 +#define SAI_SYNCEXT_IN_ENABLE SAI_SYNCEXT_OUTBLOCKA_ENABLE +/** + * @} + */ + +/** @defgroup HAL_SPDIFRX_Aliased_Macros HAL SPDIFRX Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined(STM32H7) +#define HAL_SPDIFRX_ReceiveControlFlow HAL_SPDIFRX_ReceiveCtrlFlow +#define HAL_SPDIFRX_ReceiveControlFlow_IT HAL_SPDIFRX_ReceiveCtrlFlow_IT +#define HAL_SPDIFRX_ReceiveControlFlow_DMA HAL_SPDIFRX_ReceiveCtrlFlow_DMA +#endif +/** + * @} + */ + +/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose + * @{ + */ +#if defined (STM32H7) || defined (STM32G4) || defined (STM32F3) +#define HAL_HRTIM_WaveformCounterStart_IT HAL_HRTIM_WaveformCountStart_IT +#define HAL_HRTIM_WaveformCounterStart_DMA HAL_HRTIM_WaveformCountStart_DMA +#define HAL_HRTIM_WaveformCounterStart HAL_HRTIM_WaveformCountStart +#define HAL_HRTIM_WaveformCounterStop_IT HAL_HRTIM_WaveformCountStop_IT +#define HAL_HRTIM_WaveformCounterStop_DMA HAL_HRTIM_WaveformCountStop_DMA +#define HAL_HRTIM_WaveformCounterStop HAL_HRTIM_WaveformCountStop +#endif +/** + * @} + */ + +/** @defgroup HAL_QSPI_Aliased_Macros HAL QSPI Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined (STM32L4) || defined (STM32F4) || defined (STM32F7) || defined(STM32H7) +#define HAL_QPSI_TIMEOUT_DEFAULT_VALUE HAL_QSPI_TIMEOUT_DEFAULT_VALUE +#endif /* STM32L4 || STM32F4 || STM32F7 */ +/** + * @} + */ + +/** @defgroup HAL_Generic_Aliased_Macros HAL Generic Aliased Macros maintained for legacy purpose + * @{ + */ +#if defined (STM32F7) +#define ART_ACCLERATOR_ENABLE ART_ACCELERATOR_ENABLE +#endif /* STM32F7 */ +/** + * @} + */ + +/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose + * @{ + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32_HAL_LEGACY */ + + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h new file mode 100644 index 0000000..9beac83 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h @@ -0,0 +1,275 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal.h + * @author MCD Application Team + * @brief This file contains all the functions prototypes for the HAL + * module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_H +#define __STM32F7xx_HAL_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_conf.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup HAL + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup HAL_Exported_Constants HAL Exported Constants + * @{ + */ + +/** @defgroup HAL_TICK_FREQ Tick Frequency + * @{ + */ +typedef enum +{ + HAL_TICK_FREQ_10HZ = 100U, + HAL_TICK_FREQ_100HZ = 10U, + HAL_TICK_FREQ_1KHZ = 1U, + HAL_TICK_FREQ_DEFAULT = HAL_TICK_FREQ_1KHZ +} HAL_TickFreqTypeDef; +/** + * @} + */ + +/** @defgroup SYSCFG_BootMode Boot Mode + * @{ + */ +#define SYSCFG_MEM_BOOT_ADD0 ((uint32_t)0x00000000U) +#define SYSCFG_MEM_BOOT_ADD1 SYSCFG_MEMRMP_MEM_BOOT +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup HAL_Exported_Macros HAL Exported Macros + * @{ + */ + +/** @brief Freeze/Unfreeze Peripherals in Debug mode + */ +#define __HAL_DBGMCU_FREEZE_TIM2() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM2_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM3() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM3_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM4() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM4_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM5() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM5_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM6() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM6_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM7() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM7_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM12() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM12_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM13() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM13_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM14() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_TIM14_STOP)) +#define __HAL_DBGMCU_FREEZE_LPTIM1() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_LPTIM1_STOP)) +#define __HAL_DBGMCU_FREEZE_RTC() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_RTC_STOP)) +#define __HAL_DBGMCU_FREEZE_WWDG() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_WWDG_STOP)) +#define __HAL_DBGMCU_FREEZE_IWDG() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_IWDG_STOP)) +#define __HAL_DBGMCU_FREEZE_I2C1_TIMEOUT() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT)) +#define __HAL_DBGMCU_FREEZE_I2C2_TIMEOUT() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT)) +#define __HAL_DBGMCU_FREEZE_I2C3_TIMEOUT() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT)) +#define __HAL_DBGMCU_FREEZE_I2C4_TIMEOUT() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT)) +#define __HAL_DBGMCU_FREEZE_CAN1() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_CAN1_STOP)) +#define __HAL_DBGMCU_FREEZE_CAN2() (DBGMCU->APB1FZ |= (DBGMCU_APB1_FZ_DBG_CAN2_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM1() (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM1_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM8() (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM8_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM9() (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM9_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM10() (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM10_STOP)) +#define __HAL_DBGMCU_FREEZE_TIM11() (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM11_STOP)) + +#define __HAL_DBGMCU_UNFREEZE_TIM2() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM2_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM3() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM3_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM4() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM4_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM5() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM5_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM6() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM6_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM7() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM7_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM12() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM12_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM13() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM13_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM14() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_TIM14_STOP)) +#define __HAL_DBGMCU_UNFREEZE_LPTIM1() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_LPTIM1_STOP)) +#define __HAL_DBGMCU_UNFREEZE_RTC() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_RTC_STOP)) +#define __HAL_DBGMCU_UNFREEZE_WWDG() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_WWDG_STOP)) +#define __HAL_DBGMCU_UNFREEZE_IWDG() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_IWDG_STOP)) +#define __HAL_DBGMCU_UNFREEZE_I2C1_TIMEOUT() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT)) +#define __HAL_DBGMCU_UNFREEZE_I2C2_TIMEOUT() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT)) +#define __HAL_DBGMCU_UNFREEZE_I2C3_TIMEOUT() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT)) +#define __HAL_DBGMCU_UNFREEZE_I2C4_TIMEOUT() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT)) +#define __HAL_DBGMCU_UNFREEZE_CAN1() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_CAN1_STOP)) +#define __HAL_DBGMCU_UNFREEZE_CAN2() (DBGMCU->APB1FZ &= ~(DBGMCU_APB1_FZ_DBG_CAN2_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM1() (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM1_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM8() (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM8_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM9() (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM9_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM10() (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM10_STOP)) +#define __HAL_DBGMCU_UNFREEZE_TIM11() (DBGMCU->APB2FZ &= ~(DBGMCU_APB2_FZ_DBG_TIM11_STOP)) + + +/** @brief FMC (NOR/RAM) mapped at 0x60000000 and SDRAM mapped at 0xC0000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_FMC() (SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_SWP_FMC)) + + +/** @brief FMC/SDRAM mapped at 0x60000000 (NOR/RAM) mapped at 0xC0000000 + */ +#define __HAL_SYSCFG_REMAPMEMORY_FMC_SDRAM() do {SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_SWP_FMC);\ + SYSCFG->MEMRMP |= (SYSCFG_MEMRMP_SWP_FMC_0);\ + }while(0); +/** + * @brief Return the memory boot mapping as configured by user. + * @retval The boot mode as configured by user. The returned value can be one + * of the following values: + * @arg @ref SYSCFG_MEM_BOOT_ADD0 + * @arg @ref SYSCFG_MEM_BOOT_ADD1 + */ +#define __HAL_SYSCFG_GET_BOOT_MODE() READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_BOOT) + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +/** @brief SYSCFG Break Cortex-M7 Lockup lock. + * Enable and lock the connection of Cortex-M7 LOCKUP (Hardfault) output to TIM1/8 Break input. + * @note The selected configuration is locked and can be unlocked only by system reset. + */ +#define __HAL_SYSCFG_BREAK_LOCKUP_LOCK() SET_BIT(SYSCFG->CBR, SYSCFG_CBR_CLL) + +/** @brief SYSCFG Break PVD lock. + * Enable and lock the PVD connection to Timer1/8 Break input, as well as the PVDE and PLS[2:0] in the PWR_CR1 register. + * @note The selected configuration is locked and can be unlocked only by system reset. + */ +#define __HAL_SYSCFG_BREAK_PVD_LOCK() SET_BIT(SYSCFG->CBR, SYSCFG_CBR_PVDL) +#endif /* STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @} + */ + +/** @defgroup HAL_Private_Macros HAL Private Macros + * @{ + */ +#define IS_TICKFREQ(FREQ) (((FREQ) == HAL_TICK_FREQ_10HZ) || \ + ((FREQ) == HAL_TICK_FREQ_100HZ) || \ + ((FREQ) == HAL_TICK_FREQ_1KHZ)) +/** + * @} + */ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup HAL_Exported_Functions + * @{ + */ +/** @addtogroup HAL_Exported_Functions_Group1 + * @{ + */ +/* Initialization and Configuration functions ******************************/ +HAL_StatusTypeDef HAL_Init(void); +HAL_StatusTypeDef HAL_DeInit(void); +void HAL_MspInit(void); +void HAL_MspDeInit(void); +HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority); +/** + * @} + */ + + /* Exported variables ---------------------------------------------------------*/ +/** @addtogroup HAL_Exported_Variables + * @{ + */ +extern __IO uint32_t uwTick; +extern uint32_t uwTickPrio; +extern HAL_TickFreqTypeDef uwTickFreq; +/** + * @} + */ + +/** @addtogroup HAL_Exported_Functions_Group2 + * @{ + */ +/* Peripheral Control functions ************************************************/ +void HAL_IncTick(void); +void HAL_Delay(uint32_t Delay); +uint32_t HAL_GetTick(void); +uint32_t HAL_GetTickPrio(void); +HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq); +HAL_TickFreqTypeDef HAL_GetTickFreq(void); +void HAL_SuspendTick(void); +void HAL_ResumeTick(void); +uint32_t HAL_GetHalVersion(void); +uint32_t HAL_GetREVID(void); +uint32_t HAL_GetDEVID(void); +uint32_t HAL_GetUIDw0(void); +uint32_t HAL_GetUIDw1(void); +uint32_t HAL_GetUIDw2(void); +void HAL_DBGMCU_EnableDBGSleepMode(void); +void HAL_DBGMCU_DisableDBGSleepMode(void); +void HAL_DBGMCU_EnableDBGStopMode(void); +void HAL_DBGMCU_DisableDBGStopMode(void); +void HAL_DBGMCU_EnableDBGStandbyMode(void); +void HAL_DBGMCU_DisableDBGStandbyMode(void); +void HAL_EnableCompensationCell(void); +void HAL_DisableCompensationCell(void); +void HAL_EnableFMCMemorySwapping(void); +void HAL_DisableFMCMemorySwapping(void); +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +void HAL_EnableMemorySwappingBank(void); +void HAL_DisableMemorySwappingBank(void); +#endif /* STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +/** + * @} + */ + +/** + * @} + */ +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup HAL_Private_Variables HAL Private Variables + * @{ + */ +/** + * @} + */ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup HAL_Private_Constants HAL Private Constants + * @{ + */ +/** + * @} + */ +/* Private macros ------------------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_H */ + + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h new file mode 100644 index 0000000..d227917 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h @@ -0,0 +1,957 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_adc.h + * @author MCD Application Team + * @brief Header file of ADC HAL extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_ADC_H +#define STM32F7xx_ADC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup ADC + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup ADC_Exported_Types ADC Exported Types + * @{ + */ + +/** + * @brief Structure definition of ADC and regular group initialization + * @note Parameters of this structure are shared within 2 scopes: + * - Scope entire ADC (affects regular and injected groups): ClockPrescaler, Resolution, ScanConvMode, DataAlign, ScanConvMode, EOCSelection, LowPowerAutoWait, LowPowerAutoPowerOff, ChannelsBank. + * - Scope regular group: ContinuousConvMode, NbrOfConversion, DiscontinuousConvMode, NbrOfDiscConversion, ExternalTrigConvEdge, ExternalTrigConv. + * @note The setting of these parameters with function HAL_ADC_Init() is conditioned to ADC state. + * ADC state can be either: + * - For all parameters: ADC disabled + * - For all parameters except 'Resolution', 'ScanConvMode', 'DiscontinuousConvMode', 'NbrOfDiscConversion' : ADC enabled without conversion on going on regular group. + * - For parameters 'ExternalTrigConv' and 'ExternalTrigConvEdge': ADC enabled, even with conversion on going. + * If ADC is not in the appropriate state to modify some parameters, these parameters setting is bypassed + * without error reporting (as it can be the expected behaviour in case of intended action to update another parameter (which fulfills the ADC state condition) on the fly). + */ +typedef struct +{ + uint32_t ClockPrescaler; /*!< Select ADC clock prescaler. The clock is common for + all the ADCs. + This parameter can be a value of @ref ADC_ClockPrescaler */ + uint32_t Resolution; /*!< Configures the ADC resolution. + This parameter can be a value of @ref ADC_Resolution */ + uint32_t DataAlign; /*!< Specifies ADC data alignment to right (MSB on register bit 11 and LSB on register bit 0) (default setting) + or to left (if regular group: MSB on register bit 15 and LSB on register bit 4, if injected group (MSB kept as signed value due to potential negative value after offset application): MSB on register bit 14 and LSB on register bit 3). + This parameter can be a value of @ref ADC_Data_Align */ + uint32_t ScanConvMode; /*!< Configures the sequencer of regular and injected groups. + This parameter can be associated to parameter 'DiscontinuousConvMode' to have main sequence subdivided in successive parts. + If disabled: Conversion is performed in single mode (one channel converted, the one defined in rank 1). + Parameters 'NbrOfConversion' and 'InjectedNbrOfConversion' are discarded (equivalent to set to 1). + If enabled: Conversions are performed in sequence mode (multiple ranks defined by 'NbrOfConversion'/'InjectedNbrOfConversion' and each channel rank). + Scan direction is upward: from rank1 to rank 'n'. + This parameter can be a value of @ref ADC_Scan_mode. + This parameter can be set to ENABLE or DISABLE */ + uint32_t EOCSelection; /*!< Specifies what EOC (End Of Conversion) flag is used for conversion by polling and interruption: end of conversion of each rank or complete sequence. + This parameter can be a value of @ref ADC_EOCSelection. + Note: For injected group, end of conversion (flag&IT) is raised only at the end of the sequence. + Therefore, if end of conversion is set to end of each conversion, injected group should not be used with interruption (HAL_ADCEx_InjectedStart_IT) + or polling (HAL_ADCEx_InjectedStart and HAL_ADCEx_InjectedPollForConversion). By the way, polling is still possible since driver will use an estimated timing for end of injected conversion. + Note: If overrun feature is intended to be used, use ADC in mode 'interruption' (function HAL_ADC_Start_IT() ) with parameter EOCSelection set to end of each conversion or in mode 'transfer by DMA' (function HAL_ADC_Start_DMA()). + If overrun feature is intended to be bypassed, use ADC in mode 'polling' or 'interruption' with parameter EOCSelection must be set to end of sequence */ + uint32_t ContinuousConvMode; /*!< Specifies whether the conversion is performed in single mode (one conversion) or continuous mode for regular group, + after the selected trigger occurred (software start or external trigger). + This parameter can be set to ENABLE or DISABLE. */ + uint32_t NbrOfConversion; /*!< Specifies the number of ranks that will be converted within the regular group sequencer. + To use regular group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled. + This parameter must be a number between Min_Data = 1 and Max_Data = 16. */ + FunctionalState DiscontinuousConvMode; /*!< Specifies whether the conversions sequence of regular group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts). + Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded. + Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded. + This parameter can be set to ENABLE or DISABLE. */ + uint32_t NbrOfDiscConversion; /*!< Specifies the number of discontinuous conversions in which the main sequence of regular group (parameter NbrOfConversion) will be subdivided. + If parameter 'DiscontinuousConvMode' is disabled, this parameter is discarded. + This parameter must be a number between Min_Data = 1 and Max_Data = 8. */ + uint32_t ExternalTrigConv; /*!< Selects the external event used to trigger the conversion start of regular group. + If set to ADC_SOFTWARE_START, external triggers are disabled. + If set to external trigger source, triggering is on event rising edge by default. + This parameter can be a value of @ref ADC_External_trigger_Source_Regular */ + uint32_t ExternalTrigConvEdge; /*!< Selects the external trigger edge of regular group. + If trigger is set to ADC_SOFTWARE_START, this parameter is discarded. + This parameter can be a value of @ref ADC_External_trigger_edge_Regular */ + FunctionalState DMAContinuousRequests; /*!< Specifies whether the DMA requests are performed in one shot mode (DMA transfer stop when number of conversions is reached) + or in Continuous mode (DMA transfer unlimited, whatever number of conversions). + Note: In continuous mode, DMA must be configured in circular mode. Otherwise an overrun will be triggered when DMA buffer maximum pointer is reached. + Note: This parameter must be modified when no conversion is on going on both regular and injected groups (ADC disabled, or ADC enabled without continuous mode or external trigger that could launch a conversion). + This parameter can be set to ENABLE or DISABLE. */ +}ADC_InitTypeDef; + + + +/** + * @brief Structure definition of ADC channel for regular group + * @note The setting of these parameters with function HAL_ADC_ConfigChannel() is conditioned to ADC state. + * ADC can be either disabled or enabled without conversion on going on regular group. + */ +typedef struct +{ + uint32_t Channel; /*!< Specifies the channel to configure into ADC regular group. + This parameter can be a value of @ref ADC_channels */ + uint32_t Rank; /*!< Specifies the rank in the regular group sequencer. + This parameter must be a number between Min_Data = 1 and Max_Data = 16 + This parameter can be a value of @ref ADC_regular_rank */ + uint32_t SamplingTime; /*!< Sampling time value to be set for the selected channel. + Unit: ADC clock cycles + Conversion time is the addition of sampling time and processing time (12 ADC clock cycles at ADC resolution 12 bits, 11 cycles at 10 bits, 9 cycles at 8 bits, 7 cycles at 6 bits). + This parameter can be a value of @ref ADC_sampling_times + Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups. + If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting. + Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor), + sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting) + Refer to device datasheet for timings values, parameters TS_vrefint, TS_temp (values rough order: 4us min). */ + uint32_t Offset; /*!< Reserved for future use, can be set to 0 */ +}ADC_ChannelConfTypeDef; + +/** + * @brief ADC Configuration multi-mode structure definition + */ +typedef struct +{ + uint32_t WatchdogMode; /*!< Configures the ADC analog watchdog mode. + This parameter can be a value of @ref ADC_analog_watchdog_selection */ + uint32_t HighThreshold; /*!< Configures the ADC analog watchdog High threshold value. + This parameter must be a 12-bit value. */ + uint32_t LowThreshold; /*!< Configures the ADC analog watchdog High threshold value. + This parameter must be a 12-bit value. */ + uint32_t Channel; /*!< Configures ADC channel for the analog watchdog. + This parameter has an effect only if watchdog mode is configured on single channel + This parameter can be a value of @ref ADC_channels */ + FunctionalState ITMode; /*!< Specifies whether the analog watchdog is configured + is interrupt mode or in polling mode. + This parameter can be set to ENABLE or DISABLE */ + uint32_t WatchdogNumber; /*!< Reserved for future use, can be set to 0 */ +}ADC_AnalogWDGConfTypeDef; + +/** + * @brief HAL ADC state machine: ADC states definition (bitfields) + */ +/* States of ADC global scope */ +#define HAL_ADC_STATE_RESET ((uint32_t)0x00000000U) /*!< ADC not yet initialized or disabled */ +#define HAL_ADC_STATE_READY ((uint32_t)0x00000001U) /*!< ADC peripheral ready for use */ +#define HAL_ADC_STATE_BUSY_INTERNAL ((uint32_t)0x00000002U) /*!< ADC is busy to internal process (initialization, calibration) */ +#define HAL_ADC_STATE_TIMEOUT ((uint32_t)0x00000004U) /*!< TimeOut occurrence */ + +/* States of ADC errors */ +#define HAL_ADC_STATE_ERROR_INTERNAL ((uint32_t)0x00000010U) /*!< Internal error occurrence */ +#define HAL_ADC_STATE_ERROR_CONFIG ((uint32_t)0x00000020U) /*!< Configuration error occurrence */ +#define HAL_ADC_STATE_ERROR_DMA ((uint32_t)0x00000040U) /*!< DMA error occurrence */ + +/* States of ADC group regular */ +#define HAL_ADC_STATE_REG_BUSY ((uint32_t)0x00000100U) /*!< A conversion on group regular is ongoing or can occur (either by continuous mode, + external trigger, low power auto power-on (if feature available), multimode ADC master control (if feature available)) */ +#define HAL_ADC_STATE_REG_EOC ((uint32_t)0x00000200U) /*!< Conversion data available on group regular */ +#define HAL_ADC_STATE_REG_OVR ((uint32_t)0x00000400U) /*!< Overrun occurrence */ + +/* States of ADC group injected */ +#define HAL_ADC_STATE_INJ_BUSY ((uint32_t)0x00001000U) /*!< A conversion on group injected is ongoing or can occur (either by auto-injection mode, + external trigger, low power auto power-on (if feature available), multimode ADC master control (if feature available)) */ +#define HAL_ADC_STATE_INJ_EOC ((uint32_t)0x00002000U) /*!< Conversion data available on group injected */ + +/* States of ADC analog watchdogs */ +#define HAL_ADC_STATE_AWD1 ((uint32_t)0x00010000U) /*!< Out-of-window occurrence of analog watchdog 1 */ +#define HAL_ADC_STATE_AWD2 ((uint32_t)0x00020000U) /*!< Not available on STM32F7 device: Out-of-window occurrence of analog watchdog 2 */ +#define HAL_ADC_STATE_AWD3 ((uint32_t)0x00040000U) /*!< Not available on STM32F7 device: Out-of-window occurrence of analog watchdog 3 */ + +/* States of ADC multi-mode */ +#define HAL_ADC_STATE_MULTIMODE_SLAVE ((uint32_t)0x00100000U) /*!< Not available on STM32F7 device: ADC in multimode slave state, controlled by another ADC master ( */ + + +/** + * @brief ADC handle Structure definition + */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +typedef struct __ADC_HandleTypeDef +#else +typedef struct +#endif +{ + ADC_TypeDef *Instance; /*!< Register base address */ + + ADC_InitTypeDef Init; /*!< ADC required parameters */ + + __IO uint32_t NbrOfCurrentConversionRank; /*!< ADC number of current conversion rank */ + + DMA_HandleTypeDef *DMA_Handle; /*!< Pointer DMA Handler */ + + HAL_LockTypeDef Lock; /*!< ADC locking object */ + + __IO uint32_t State; /*!< ADC communication state */ + + __IO uint32_t ErrorCode; /*!< ADC Error code */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + void (* ConvCpltCallback)(struct __ADC_HandleTypeDef *hadc); /*!< ADC conversion complete callback */ + void (* ConvHalfCpltCallback)(struct __ADC_HandleTypeDef *hadc); /*!< ADC conversion DMA half-transfer callback */ + void (* LevelOutOfWindowCallback)(struct __ADC_HandleTypeDef *hadc); /*!< ADC analog watchdog 1 callback */ + void (* ErrorCallback)(struct __ADC_HandleTypeDef *hadc); /*!< ADC error callback */ + void (* InjectedConvCpltCallback)(struct __ADC_HandleTypeDef *hadc); /*!< ADC group injected conversion complete callback */ + void (* MspInitCallback)(struct __ADC_HandleTypeDef *hadc); /*!< ADC Msp Init callback */ + void (* MspDeInitCallback)(struct __ADC_HandleTypeDef *hadc); /*!< ADC Msp DeInit callback */ +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +}ADC_HandleTypeDef; + + +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +/** + * @brief HAL ADC Callback ID enumeration definition + */ +typedef enum +{ + HAL_ADC_CONVERSION_COMPLETE_CB_ID = 0x00U, /*!< ADC conversion complete callback ID */ + HAL_ADC_CONVERSION_HALF_CB_ID = 0x01U, /*!< ADC conversion DMA half-transfer callback ID */ + HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID = 0x02U, /*!< ADC analog watchdog 1 callback ID */ + HAL_ADC_ERROR_CB_ID = 0x03U, /*!< ADC error callback ID */ + HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID = 0x04U, /*!< ADC group injected conversion complete callback ID */ + HAL_ADC_MSPINIT_CB_ID = 0x05U, /*!< ADC Msp Init callback ID */ + HAL_ADC_MSPDEINIT_CB_ID = 0x06U /*!< ADC Msp DeInit callback ID */ +} HAL_ADC_CallbackIDTypeDef; + +/** + * @brief HAL ADC Callback pointer definition + */ +typedef void (*pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc); /*!< pointer to a ADC callback function */ + +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup ADC_Exported_Constants ADC Exported Constants + * @{ + */ + +/** @defgroup ADC_Error_Code ADC Error Code + * @{ + */ +#define HAL_ADC_ERROR_NONE ((uint32_t)0x00U) /*!< No error */ +#define HAL_ADC_ERROR_INTERNAL ((uint32_t)0x01U) /*!< ADC IP internal error: if problem of clocking, + enable/disable, erroneous state */ +#define HAL_ADC_ERROR_OVR ((uint32_t)0x02U) /*!< Overrun error */ +#define HAL_ADC_ERROR_DMA ((uint32_t)0x04U) /*!< DMA transfer error */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +#define HAL_ADC_ERROR_INVALID_CALLBACK (0x10U) /*!< Invalid Callback error */ +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +/** + * @} + */ + + +/** @defgroup ADC_ClockPrescaler ADC Clock Prescaler + * @{ + */ +#define ADC_CLOCK_SYNC_PCLK_DIV2 ((uint32_t)0x00000000U) +#define ADC_CLOCK_SYNC_PCLK_DIV4 ((uint32_t)ADC_CCR_ADCPRE_0) +#define ADC_CLOCK_SYNC_PCLK_DIV6 ((uint32_t)ADC_CCR_ADCPRE_1) +#define ADC_CLOCK_SYNC_PCLK_DIV8 ((uint32_t)ADC_CCR_ADCPRE) +/** + * @} + */ + +/** @defgroup ADC_delay_between_2_sampling_phases ADC Delay Between 2 Sampling Phases + * @{ + */ +#define ADC_TWOSAMPLINGDELAY_5CYCLES ((uint32_t)0x00000000U) +#define ADC_TWOSAMPLINGDELAY_6CYCLES ((uint32_t)ADC_CCR_DELAY_0) +#define ADC_TWOSAMPLINGDELAY_7CYCLES ((uint32_t)ADC_CCR_DELAY_1) +#define ADC_TWOSAMPLINGDELAY_8CYCLES ((uint32_t)(ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0)) +#define ADC_TWOSAMPLINGDELAY_9CYCLES ((uint32_t)ADC_CCR_DELAY_2) +#define ADC_TWOSAMPLINGDELAY_10CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0)) +#define ADC_TWOSAMPLINGDELAY_11CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1)) +#define ADC_TWOSAMPLINGDELAY_12CYCLES ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0)) +#define ADC_TWOSAMPLINGDELAY_13CYCLES ((uint32_t)ADC_CCR_DELAY_3) +#define ADC_TWOSAMPLINGDELAY_14CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0)) +#define ADC_TWOSAMPLINGDELAY_15CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1)) +#define ADC_TWOSAMPLINGDELAY_16CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0)) +#define ADC_TWOSAMPLINGDELAY_17CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2)) +#define ADC_TWOSAMPLINGDELAY_18CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0)) +#define ADC_TWOSAMPLINGDELAY_19CYCLES ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1)) +#define ADC_TWOSAMPLINGDELAY_20CYCLES ((uint32_t)ADC_CCR_DELAY) +/** + * @} + */ + +/** @defgroup ADC_Resolution ADC Resolution + * @{ + */ +#define ADC_RESOLUTION_12B ((uint32_t)0x00000000U) +#define ADC_RESOLUTION_10B ((uint32_t)ADC_CR1_RES_0) +#define ADC_RESOLUTION_8B ((uint32_t)ADC_CR1_RES_1) +#define ADC_RESOLUTION_6B ((uint32_t)ADC_CR1_RES) +/** + * @} + */ + +/** @defgroup ADC_External_trigger_edge_Regular ADC External Trigger Edge Regular + * @{ + */ +#define ADC_EXTERNALTRIGCONVEDGE_NONE ((uint32_t)0x00000000U) +#define ADC_EXTERNALTRIGCONVEDGE_RISING ((uint32_t)ADC_CR2_EXTEN_0) +#define ADC_EXTERNALTRIGCONVEDGE_FALLING ((uint32_t)ADC_CR2_EXTEN_1) +#define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING ((uint32_t)ADC_CR2_EXTEN) +/** + * @} + */ + +/** @defgroup ADC_External_trigger_Source_Regular ADC External Trigger Source Regular + * @{ + */ +/* Note: Parameter ADC_SOFTWARE_START is a software parameter used for */ +/* compatibility with other STM32 devices. */ + + +#define ADC_EXTERNALTRIGCONV_T1_CC1 ((uint32_t)0x00000000U) +#define ADC_EXTERNALTRIGCONV_T1_CC2 ((uint32_t)ADC_CR2_EXTSEL_0) +#define ADC_EXTERNALTRIGCONV_T1_CC3 ((uint32_t)ADC_CR2_EXTSEL_1) +#define ADC_EXTERNALTRIGCONV_T2_CC2 ((uint32_t)(ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0)) +#define ADC_EXTERNALTRIGCONV_T5_TRGO ((uint32_t)ADC_CR2_EXTSEL_2) +#define ADC_EXTERNALTRIGCONV_T4_CC4 ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0)) +#define ADC_EXTERNALTRIGCONV_T3_CC4 ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1)) +#define ADC_EXTERNALTRIGCONV_T8_TRGO ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0)) +#define ADC_EXTERNALTRIGCONV_T8_TRGO2 ((uint32_t)ADC_CR2_EXTSEL_3) +#define ADC_EXTERNALTRIGCONV_T1_TRGO ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_0)) +#define ADC_EXTERNALTRIGCONV_T1_TRGO2 ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1)) +#define ADC_EXTERNALTRIGCONV_T2_TRGO ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0)) +#define ADC_EXTERNALTRIGCONV_T4_TRGO ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2)) +#define ADC_EXTERNALTRIGCONV_T6_TRGO ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0)) + +#define ADC_EXTERNALTRIGCONV_EXT_IT11 ((uint32_t)ADC_CR2_EXTSEL) +#define ADC_SOFTWARE_START ((uint32_t)ADC_CR2_EXTSEL + 1) + +/** + * @} + */ + +/** @defgroup ADC_Data_Align ADC Data Align + * @{ + */ +#define ADC_DATAALIGN_RIGHT ((uint32_t)0x00000000U) +#define ADC_DATAALIGN_LEFT ((uint32_t)ADC_CR2_ALIGN) +/** + * @} + */ + +/** @defgroup ADC_Scan_mode ADC sequencer scan mode + * @{ + */ +#define ADC_SCAN_DISABLE ((uint32_t)0x00000000) /*!< Scan mode disabled */ +#define ADC_SCAN_ENABLE ((uint32_t)0x00000001) /*!< Scan mode enabled */ +/** + * @} + */ + +/** @defgroup ADC_regular_rank ADC group regular sequencer rank + * @{ + */ +#define ADC_REGULAR_RANK_1 ((uint32_t)0x00000001) /*!< ADC regular conversion rank 1 */ +#define ADC_REGULAR_RANK_2 ((uint32_t)0x00000002) /*!< ADC regular conversion rank 2 */ +#define ADC_REGULAR_RANK_3 ((uint32_t)0x00000003) /*!< ADC regular conversion rank 3 */ +#define ADC_REGULAR_RANK_4 ((uint32_t)0x00000004) /*!< ADC regular conversion rank 4 */ +#define ADC_REGULAR_RANK_5 ((uint32_t)0x00000005) /*!< ADC regular conversion rank 5 */ +#define ADC_REGULAR_RANK_6 ((uint32_t)0x00000006) /*!< ADC regular conversion rank 6 */ +#define ADC_REGULAR_RANK_7 ((uint32_t)0x00000007) /*!< ADC regular conversion rank 7 */ +#define ADC_REGULAR_RANK_8 ((uint32_t)0x00000008) /*!< ADC regular conversion rank 8 */ +#define ADC_REGULAR_RANK_9 ((uint32_t)0x00000009) /*!< ADC regular conversion rank 9 */ +#define ADC_REGULAR_RANK_10 ((uint32_t)0x0000000A) /*!< ADC regular conversion rank 10 */ +#define ADC_REGULAR_RANK_11 ((uint32_t)0x0000000B) /*!< ADC regular conversion rank 11 */ +#define ADC_REGULAR_RANK_12 ((uint32_t)0x0000000C) /*!< ADC regular conversion rank 12 */ +#define ADC_REGULAR_RANK_13 ((uint32_t)0x0000000D) /*!< ADC regular conversion rank 13 */ +#define ADC_REGULAR_RANK_14 ((uint32_t)0x0000000E) /*!< ADC regular conversion rank 14 */ +#define ADC_REGULAR_RANK_15 ((uint32_t)0x0000000F) /*!< ADC regular conversion rank 15 */ +#define ADC_REGULAR_RANK_16 ((uint32_t)0x00000010) /*!< ADC regular conversion rank 16 */ +/** + * @} + */ + +/** @defgroup ADC_channels ADC Common Channels + * @{ + */ +#define ADC_CHANNEL_0 ((uint32_t)0x00000000U) +#define ADC_CHANNEL_1 ((uint32_t)ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_2 ((uint32_t)ADC_CR1_AWDCH_1) +#define ADC_CHANNEL_3 ((uint32_t)(ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)) +#define ADC_CHANNEL_4 ((uint32_t)ADC_CR1_AWDCH_2) +#define ADC_CHANNEL_5 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0)) +#define ADC_CHANNEL_6 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1)) +#define ADC_CHANNEL_7 ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)) +#define ADC_CHANNEL_8 ((uint32_t)ADC_CR1_AWDCH_3) +#define ADC_CHANNEL_9 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_0)) +#define ADC_CHANNEL_10 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1)) +#define ADC_CHANNEL_11 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)) +#define ADC_CHANNEL_12 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2)) +#define ADC_CHANNEL_13 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0)) +#define ADC_CHANNEL_14 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1)) +#define ADC_CHANNEL_15 ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0)) +#define ADC_CHANNEL_16 ((uint32_t)ADC_CR1_AWDCH_4) +#define ADC_CHANNEL_17 ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_0)) +#define ADC_CHANNEL_18 ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_1)) + +#define ADC_INTERNAL_NONE 0x80000000U +#define ADC_CHANNEL_VREFINT ((uint32_t)ADC_CHANNEL_17) +#define ADC_CHANNEL_VBAT ((uint32_t)ADC_CHANNEL_18) +#define ADC_CHANNEL_TEMPSENSOR ((uint32_t)(ADC_CHANNEL_18 | 0x10000000U)) +/** + * @} + */ + +/** @defgroup ADC_sampling_times ADC Sampling Times + * @{ + */ +#define ADC_SAMPLETIME_3CYCLES ((uint32_t)0x00000000U) +#define ADC_SAMPLETIME_15CYCLES ((uint32_t)ADC_SMPR1_SMP10_0) +#define ADC_SAMPLETIME_28CYCLES ((uint32_t)ADC_SMPR1_SMP10_1) +#define ADC_SAMPLETIME_56CYCLES ((uint32_t)(ADC_SMPR1_SMP10_1 | ADC_SMPR1_SMP10_0)) +#define ADC_SAMPLETIME_84CYCLES ((uint32_t)ADC_SMPR1_SMP10_2) +#define ADC_SAMPLETIME_112CYCLES ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_0)) +#define ADC_SAMPLETIME_144CYCLES ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_1)) +#define ADC_SAMPLETIME_480CYCLES ((uint32_t)ADC_SMPR1_SMP10) +/** + * @} + */ + + /** @defgroup ADC_EOCSelection ADC EOC Selection + * @{ + */ +#define ADC_EOC_SEQ_CONV ((uint32_t)0x00000000U) +#define ADC_EOC_SINGLE_CONV ((uint32_t)0x00000001U) +#define ADC_EOC_SINGLE_SEQ_CONV ((uint32_t)0x00000002U) /*!< reserved for future use */ +/** + * @} + */ + +/** @defgroup ADC_Event_type ADC Event Type + * @{ + */ +#define ADC_AWD_EVENT ((uint32_t)ADC_FLAG_AWD) +#define ADC_OVR_EVENT ((uint32_t)ADC_FLAG_OVR) +/** + * @} + */ + +/** @defgroup ADC_analog_watchdog_selection ADC Analog Watchdog Selection + * @{ + */ +#define ADC_ANALOGWATCHDOG_SINGLE_REG ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN)) +#define ADC_ANALOGWATCHDOG_SINGLE_INJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN)) +#define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN | ADC_CR1_JAWDEN)) +#define ADC_ANALOGWATCHDOG_ALL_REG ((uint32_t)ADC_CR1_AWDEN) +#define ADC_ANALOGWATCHDOG_ALL_INJEC ((uint32_t)ADC_CR1_JAWDEN) +#define ADC_ANALOGWATCHDOG_ALL_REGINJEC ((uint32_t)(ADC_CR1_AWDEN | ADC_CR1_JAWDEN)) +#define ADC_ANALOGWATCHDOG_NONE ((uint32_t)0x00000000U) +/** + * @} + */ + +/** @defgroup ADC_interrupts_definition ADC Interrupts Definition + * @{ + */ +#define ADC_IT_EOC ((uint32_t)ADC_CR1_EOCIE) +#define ADC_IT_AWD ((uint32_t)ADC_CR1_AWDIE) +#define ADC_IT_JEOC ((uint32_t)ADC_CR1_JEOCIE) +#define ADC_IT_OVR ((uint32_t)ADC_CR1_OVRIE) +/** + * @} + */ + +/** @defgroup ADC_flags_definition ADC Flags Definition + * @{ + */ +#define ADC_FLAG_AWD ((uint32_t)ADC_SR_AWD) +#define ADC_FLAG_EOC ((uint32_t)ADC_SR_EOC) +#define ADC_FLAG_JEOC ((uint32_t)ADC_SR_JEOC) +#define ADC_FLAG_JSTRT ((uint32_t)ADC_SR_JSTRT) +#define ADC_FLAG_STRT ((uint32_t)ADC_SR_STRT) +#define ADC_FLAG_OVR ((uint32_t)ADC_SR_OVR) +/** + * @} + */ + +/** @defgroup ADC_channels_type ADC Channels Type + * @{ + */ +#define ADC_ALL_CHANNELS ((uint32_t)0x00000001U) +#define ADC_REGULAR_CHANNELS ((uint32_t)0x00000002U) /*!< reserved for future use */ +#define ADC_INJECTED_CHANNELS ((uint32_t)0x00000003U) /*!< reserved for future use */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup ADC_Exported_Macros ADC Exported Macros + * @{ + */ + +/** @brief Reset ADC handle state + * @param __HANDLE__ ADC handle + * @retval None + */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +#define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) \ + do{ \ + (__HANDLE__)->State = HAL_ADC_STATE_RESET; \ + (__HANDLE__)->MspInitCallback = NULL; \ + (__HANDLE__)->MspDeInitCallback = NULL; \ + } while(0) +#else +#define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) \ + ((__HANDLE__)->State = HAL_ADC_STATE_RESET) +#endif + +/** + * @brief Enable the ADC peripheral. + * @param __HANDLE__ ADC handle + * @retval None + */ +#define __HAL_ADC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 |= ADC_CR2_ADON) + +/** + * @brief Disable the ADC peripheral. + * @param __HANDLE__ ADC handle + * @retval None + */ +#define __HAL_ADC_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 &= ~ADC_CR2_ADON) + +/** + * @brief Enable the ADC end of conversion interrupt. + * @param __HANDLE__ specifies the ADC Handle. + * @param __INTERRUPT__ ADC Interrupt. + * @retval None + */ +#define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) |= (__INTERRUPT__)) + +/** + * @brief Disable the ADC end of conversion interrupt. + * @param __HANDLE__ specifies the ADC Handle. + * @param __INTERRUPT__ ADC interrupt. + * @retval None + */ +#define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) &= ~(__INTERRUPT__)) + +/** @brief Check if the specified ADC interrupt source is enabled or disabled. + * @param __HANDLE__ specifies the ADC Handle. + * @param __INTERRUPT__ specifies the ADC interrupt source to check. + * @retval The new state of __IT__ (TRUE or FALSE). + */ +#define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__)) + +/** + * @brief Clear the ADC's pending flags. + * @param __HANDLE__ specifies the ADC Handle. + * @param __FLAG__ ADC flag. + * @retval None + */ +#define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = ~(__FLAG__)) + +/** + * @brief Get the selected ADC's flag status. + * @param __HANDLE__ specifies the ADC Handle. + * @param __FLAG__ ADC flag. + * @retval None + */ +#define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__)) + +/** + * @} + */ + +/* Include ADC HAL Extension module */ +#include "stm32f7xx_hal_adc_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup ADC_Exported_Functions + * @{ + */ + +/** @addtogroup ADC_Exported_Functions_Group1 + * @{ + */ +/* Initialization/de-initialization functions ***********************************/ +HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc); +HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc); +void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc); +void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc); + +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +/* Callbacks Register/UnRegister functions ***********************************/ +HAL_StatusTypeDef HAL_ADC_RegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID, pADC_CallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_ADC_UnRegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** @addtogroup ADC_Exported_Functions_Group2 + * @{ + */ +/* I/O operation functions ******************************************************/ +HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc); +HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc); +HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout); + +HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout); + +HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc); +HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc); + +void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc); + +HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length); +HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc); + +uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc); + +void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc); +void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc); +void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc); +void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc); +/** + * @} + */ + +/** @addtogroup ADC_Exported_Functions_Group3 + * @{ + */ +/* Peripheral Control functions *************************************************/ +HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig); +HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig); +/** + * @} + */ + +/** @addtogroup ADC_Exported_Functions_Group4 + * @{ + */ +/* Peripheral State functions ***************************************************/ +uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc); +uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc); +/** + * @} + */ + +/** + * @} + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup ADC_Private_Constants ADC Private Constants + * @{ + */ +/* Delay for ADC stabilization time. */ +/* Maximum delay is 1us (refer to device datasheet, parameter tSTAB). */ +/* Unit: us */ +#define ADC_STAB_DELAY_US ((uint32_t) 3U) +/* Delay for temperature sensor stabilization time. */ +/* Maximum delay is 10us (refer to device datasheet, parameter tSTART). */ +/* Unit: us */ +#define ADC_TEMPSENSOR_DELAY_US ((uint32_t) 10U) +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup ADC_Private_Macros ADC Private Macros + * @{ + */ +/* Macro reserved for internal HAL driver usage, not intended to be used in + code of final user */ + +/** + * @brief Verification of ADC state: enabled or disabled + * @param __HANDLE__ ADC handle + * @retval SET (ADC enabled) or RESET (ADC disabled) + */ +#define ADC_IS_ENABLE(__HANDLE__) \ + ((( ((__HANDLE__)->Instance->SR & ADC_SR_ADONS) == ADC_SR_ADONS ) \ + ) ? SET : RESET) + +/** + * @brief Test if conversion trigger of regular group is software start + * or external trigger. + * @param __HANDLE__ ADC handle + * @retval SET (software start) or RESET (external trigger) + */ +#define ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__) \ + (((__HANDLE__)->Instance->CR2 & ADC_CR2_EXTEN) == RESET) + +/** + * @brief Test if conversion trigger of injected group is software start + * or external trigger. + * @param __HANDLE__ ADC handle + * @retval SET (software start) or RESET (external trigger) + */ +#define ADC_IS_SOFTWARE_START_INJECTED(__HANDLE__) \ + (((__HANDLE__)->Instance->CR2 & ADC_CR2_JEXTEN) == RESET) + +/** + * @brief Simultaneously clears and sets specific bits of the handle State + * @note: ADC_STATE_CLR_SET() macro is merely aliased to generic macro MODIFY_REG(), + * the first parameter is the ADC handle State, the second parameter is the + * bit field to clear, the third and last parameter is the bit field to set. + * @retval None + */ +#define ADC_STATE_CLR_SET MODIFY_REG + +/** + * @brief Clear ADC error code (set it to error code: "no error") + * @param __HANDLE__ ADC handle + * @retval None + */ +#define ADC_CLEAR_ERRORCODE(__HANDLE__) \ + ((__HANDLE__)->ErrorCode = HAL_ADC_ERROR_NONE) + +#define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) <= ADC_CHANNEL_18) || \ + ((CHANNEL) == ADC_CHANNEL_TEMPSENSOR) || \ + ((CHANNEL) == ADC_INTERNAL_NONE)) +#define IS_ADC_CLOCKPRESCALER(__ADC_CLOCK__) (((__ADC_CLOCK__) == ADC_CLOCK_SYNC_PCLK_DIV2) || \ + ((__ADC_CLOCK__) == ADC_CLOCK_SYNC_PCLK_DIV4) || \ + ((__ADC_CLOCK__) == ADC_CLOCK_SYNC_PCLK_DIV6) || \ + ((__ADC_CLOCK__) == ADC_CLOCK_SYNC_PCLK_DIV8)) +#define IS_ADC_SAMPLING_DELAY(__DELAY__) (((__DELAY__) == ADC_TWOSAMPLINGDELAY_5CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_6CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_7CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_8CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_9CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_10CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_11CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_12CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_13CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_14CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_15CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_16CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_17CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_18CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_19CYCLES) || \ + ((__DELAY__) == ADC_TWOSAMPLINGDELAY_20CYCLES)) +#define IS_ADC_RESOLUTION(__RESOLUTION__) (((__RESOLUTION__) == ADC_RESOLUTION_12B) || \ + ((__RESOLUTION__) == ADC_RESOLUTION_10B) || \ + ((__RESOLUTION__) == ADC_RESOLUTION_8B) || \ + ((__RESOLUTION__) == ADC_RESOLUTION_6B)) +#define IS_ADC_EXT_TRIG_EDGE(__EDGE__) (((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_NONE) || \ + ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_RISING) || \ + ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \ + ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING)) +#define IS_ADC_EXT_TRIG(__REGTRIG__) (((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T1_CC1) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T1_CC2) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T1_CC3) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T2_CC2) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T5_TRGO) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T4_CC4) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T3_CC4) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T8_TRGO) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T8_TRGO2) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T1_TRGO) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T1_TRGO2) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T4_TRGO) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T6_TRGO) || \ + ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \ + ((__REGTRIG__) == ADC_SOFTWARE_START)) +#define IS_ADC_DATA_ALIGN(__ALIGN__) (((__ALIGN__) == ADC_DATAALIGN_RIGHT) || \ + ((__ALIGN__) == ADC_DATAALIGN_LEFT)) + + +#define IS_ADC_SAMPLE_TIME(__TIME__) (((__TIME__) == ADC_SAMPLETIME_3CYCLES) || \ + ((__TIME__) == ADC_SAMPLETIME_15CYCLES) || \ + ((__TIME__) == ADC_SAMPLETIME_28CYCLES) || \ + ((__TIME__) == ADC_SAMPLETIME_56CYCLES) || \ + ((__TIME__) == ADC_SAMPLETIME_84CYCLES) || \ + ((__TIME__) == ADC_SAMPLETIME_112CYCLES) || \ + ((__TIME__) == ADC_SAMPLETIME_144CYCLES) || \ + ((__TIME__) == ADC_SAMPLETIME_480CYCLES)) +#define IS_ADC_EOCSelection(__EOCSelection__) (((__EOCSelection__) == ADC_EOC_SINGLE_CONV) || \ + ((__EOCSelection__) == ADC_EOC_SEQ_CONV) || \ + ((__EOCSelection__) == ADC_EOC_SINGLE_SEQ_CONV)) +#define IS_ADC_EVENT_TYPE(__EVENT__) (((__EVENT__) == ADC_AWD_EVENT) || \ + ((__EVENT__) == ADC_OVR_EVENT)) +#define IS_ADC_ANALOG_WATCHDOG(__WATCHDOG__) (((__WATCHDOG__) == ADC_ANALOGWATCHDOG_SINGLE_REG) || \ + ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_SINGLE_INJEC) || \ + ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC) || \ + ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_ALL_REG) || \ + ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_ALL_INJEC) || \ + ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_ALL_REGINJEC) || \ + ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_NONE)) +#define IS_ADC_CHANNELS_TYPE(CHANNEL_TYPE) (((CHANNEL_TYPE) == ADC_ALL_CHANNELS) || \ + ((CHANNEL_TYPE) == ADC_REGULAR_CHANNELS) || \ + ((CHANNEL_TYPE) == ADC_INJECTED_CHANNELS)) + +#define IS_ADC_REGULAR_RANK(__RANK__) (((__RANK__) == ADC_REGULAR_RANK_1 ) || \ + ((__RANK__) == ADC_REGULAR_RANK_2 ) || \ + ((__RANK__) == ADC_REGULAR_RANK_3 ) || \ + ((__RANK__) == ADC_REGULAR_RANK_4 ) || \ + ((__RANK__) == ADC_REGULAR_RANK_5 ) || \ + ((__RANK__) == ADC_REGULAR_RANK_6 ) || \ + ((__RANK__) == ADC_REGULAR_RANK_7 ) || \ + ((__RANK__) == ADC_REGULAR_RANK_8 ) || \ + ((__RANK__) == ADC_REGULAR_RANK_9 ) || \ + ((__RANK__) == ADC_REGULAR_RANK_10) || \ + ((__RANK__) == ADC_REGULAR_RANK_11) || \ + ((__RANK__) == ADC_REGULAR_RANK_12) || \ + ((__RANK__) == ADC_REGULAR_RANK_13) || \ + ((__RANK__) == ADC_REGULAR_RANK_14) || \ + ((__RANK__) == ADC_REGULAR_RANK_15) || \ + ((__RANK__) == ADC_REGULAR_RANK_16)) + +#define IS_ADC_SCAN_MODE(__SCAN_MODE__) (((__SCAN_MODE__) == ADC_SCAN_DISABLE) || \ + ((__SCAN_MODE__) == ADC_SCAN_ENABLE)) + +#define IS_ADC_THRESHOLD(__THRESHOLD__) ((__THRESHOLD__) <= ((uint32_t)0xFFF)) +#define IS_ADC_REGULAR_LENGTH(__LENGTH__) (((__LENGTH__) >= ((uint32_t)1)) && ((__LENGTH__) <= ((uint32_t)16))) +#define IS_ADC_REGULAR_DISC_NUMBER(__NUMBER__) (((__NUMBER__) >= ((uint32_t)1)) && ((__NUMBER__) <= ((uint32_t)8))) +#define IS_ADC_RANGE(__RESOLUTION__, __ADC_VALUE__) \ + ((((__RESOLUTION__) == ADC_RESOLUTION_12B) && ((__ADC_VALUE__) <= ((uint32_t)0x0FFF))) || \ + (((__RESOLUTION__) == ADC_RESOLUTION_10B) && ((__ADC_VALUE__) <= ((uint32_t)0x03FF))) || \ + (((__RESOLUTION__) == ADC_RESOLUTION_8B) && ((__ADC_VALUE__) <= ((uint32_t)0x00FF))) || \ + (((__RESOLUTION__) == ADC_RESOLUTION_6B) && ((__ADC_VALUE__) <= ((uint32_t)0x003F)))) + +/** + * @brief Set ADC Regular channel sequence length. + * @param _NbrOfConversion_ Regular channel sequence length. + * @retval None + */ +#define ADC_SQR1(_NbrOfConversion_) (((_NbrOfConversion_) - (uint8_t)1) << 20) + +/** + * @brief Set the ADC's sample time for channel numbers between 10 and 18. + * @param _SAMPLETIME_ Sample time parameter. + * @param _CHANNELNB_ Channel number. + * @retval None + */ +#define ADC_SMPR1(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3 * (((uint32_t)((uint16_t)(_CHANNELNB_))) - 10))) + +/** + * @brief Set the ADC's sample time for channel numbers between 0 and 9. + * @param _SAMPLETIME_ Sample time parameter. + * @param _CHANNELNB_ Channel number. + * @retval None + */ +#define ADC_SMPR2(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3 * ((uint32_t)((uint16_t)(_CHANNELNB_))))) + +/** + * @brief Set the selected regular channel rank for rank between 1 and 6. + * @param _CHANNELNB_ Channel number. + * @param _RANKNB_ Rank number. + * @retval None + */ +#define ADC_SQR3_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5 * ((_RANKNB_) - 1))) + +/** + * @brief Set the selected regular channel rank for rank between 7 and 12. + * @param _CHANNELNB_ Channel number. + * @param _RANKNB_ Rank number. + * @retval None + */ +#define ADC_SQR2_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5 * ((_RANKNB_) - 7))) + +/** + * @brief Set the selected regular channel rank for rank between 13 and 16. + * @param _CHANNELNB_ Channel number. + * @param _RANKNB_ Rank number. + * @retval None + */ +#define ADC_SQR1_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5 * ((_RANKNB_) - 13))) + +/** + * @brief Enable ADC continuous conversion mode. + * @param _CONTINUOUS_MODE_ Continuous mode. + * @retval None + */ +#define ADC_CR2_CONTINUOUS(_CONTINUOUS_MODE_) ((_CONTINUOUS_MODE_) << 1) + +/** + * @brief Configures the number of discontinuous conversions for the regular group channels. + * @param _NBR_DISCONTINUOUSCONV_ Number of discontinuous conversions. + * @retval None + */ +#define ADC_CR1_DISCONTINUOUS(_NBR_DISCONTINUOUSCONV_) (((_NBR_DISCONTINUOUSCONV_) - 1) << ADC_CR1_DISCNUM_Pos) + +/** + * @brief Enable ADC scan mode. + * @param _SCANCONV_MODE_ Scan conversion mode. + * @retval None + */ +#define ADC_CR1_SCANCONV(_SCANCONV_MODE_) ((_SCANCONV_MODE_) << 8) + +/** + * @brief Enable the ADC end of conversion selection. + * @param _EOCSelection_MODE_ End of conversion selection mode. + * @retval None + */ +#define ADC_CR2_EOCSelection(_EOCSelection_MODE_) ((_EOCSelection_MODE_) << 10) + +/** + * @brief Enable the ADC DMA continuous request. + * @param _DMAContReq_MODE_ DMA continuous request mode. + * @retval None + */ +#define ADC_CR2_DMAContReq(_DMAContReq_MODE_) ((_DMAContReq_MODE_) << 9) + +/** + * @brief Return resolution bits in CR1 register. + * @param __HANDLE__ ADC handle + * @retval None + */ +#define ADC_GET_RESOLUTION(__HANDLE__) (((__HANDLE__)->Instance->CR1) & ADC_CR1_RES) + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup ADC_Private_Functions ADC Private Functions + * @{ + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F7xx_ADC_H */ + + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h new file mode 100644 index 0000000..6ac4023 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h @@ -0,0 +1,354 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_adc.h + * @author MCD Application Team + * @brief Header file of ADC HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_ADC_EX_H +#define STM32F7xx_ADC_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup ADCEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup ADCEx_Exported_Types ADC Exported Types + * @{ + */ + +/** + * @brief ADC Configuration injected Channel structure definition + * @note Parameters of this structure are shared within 2 scopes: + * - Scope channel: InjectedChannel, InjectedRank, InjectedSamplingTime, InjectedOffset + * - Scope injected group (affects all channels of injected group): InjectedNbrOfConversion, InjectedDiscontinuousConvMode, + * AutoInjectedConv, ExternalTrigInjecConvEdge, ExternalTrigInjecConv. + * @note The setting of these parameters with function HAL_ADCEx_InjectedConfigChannel() is conditioned to ADC state. + * ADC state can be either: + * - For all parameters: ADC disabled + * - For all except parameters 'InjectedDiscontinuousConvMode' and 'AutoInjectedConv': ADC enabled without conversion on going on injected group. + * - For parameters 'ExternalTrigInjecConv' and 'ExternalTrigInjecConvEdge': ADC enabled, even with conversion on going on injected group. + */ +typedef struct +{ + uint32_t InjectedChannel; /*!< Selection of ADC channel to configure + This parameter can be a value of @ref ADC_channels + Note: Depending on devices, some channels may not be available on package pins. Refer to device datasheet for channels availability. */ + uint32_t InjectedRank; /*!< Rank in the injected group sequencer + This parameter must be a value of @ref ADCEx_injected_rank + Note: In case of need to disable a channel or change order of conversion sequencer, rank containing a previous channel setting can be overwritten by the new channel setting (or parameter number of conversions can be adjusted) */ + uint32_t InjectedSamplingTime; /*!< Sampling time value to be set for the selected channel. + Unit: ADC clock cycles + Conversion time is the addition of sampling time and processing time (12 ADC clock cycles at ADC resolution 12 bits, 11 cycles at 10 bits, 9 cycles at 8 bits, 7 cycles at 6 bits). + This parameter can be a value of @ref ADC_sampling_times + Caution: This parameter updates the parameter property of the channel, that can be used into regular and/or injected groups. + If this same channel has been previously configured in the other group (regular/injected), it will be updated to last setting. + Note: In case of usage of internal measurement channels (VrefInt/Vbat/TempSensor), + sampling time constraints must be respected (sampling time can be adjusted in function of ADC clock frequency and sampling time setting) + Refer to device datasheet for timings values, parameters TS_vrefint, TS_temp (values rough order: 4us min). */ + uint32_t InjectedOffset; /*!< Defines the offset to be subtracted from the raw converted data (for channels set on injected group only). + Offset value must be a positive number. + Depending of ADC resolution selected (12, 10, 8 or 6 bits), + this parameter must be a number between Min_Data = 0x000 and Max_Data = 0xFFF, 0x3FF, 0xFF or 0x3F respectively. */ + uint32_t InjectedNbrOfConversion; /*!< Specifies the number of ranks that will be converted within the injected group sequencer. + To use the injected group sequencer and convert several ranks, parameter 'ScanConvMode' must be enabled. + This parameter must be a number between Min_Data = 1 and Max_Data = 4. + Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to + configure a channel on injected group can impact the configuration of other channels previously set. */ + FunctionalState InjectedDiscontinuousConvMode; /*!< Specifies whether the conversions sequence of injected group is performed in Complete-sequence/Discontinuous-sequence (main sequence subdivided in successive parts). + Discontinuous mode is used only if sequencer is enabled (parameter 'ScanConvMode'). If sequencer is disabled, this parameter is discarded. + Discontinuous mode can be enabled only if continuous mode is disabled. If continuous mode is enabled, this parameter setting is discarded. + This parameter can be set to ENABLE or DISABLE. + Note: For injected group, number of discontinuous ranks increment is fixed to one-by-one. + Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to + configure a channel on injected group can impact the configuration of other channels previously set. */ + FunctionalState AutoInjectedConv; /*!< Enables or disables the selected ADC automatic injected group conversion after regular one + This parameter can be set to ENABLE or DISABLE. + Note: To use Automatic injected conversion, discontinuous mode must be disabled ('DiscontinuousConvMode' and 'InjectedDiscontinuousConvMode' set to DISABLE) + Note: To use Automatic injected conversion, injected group external triggers must be disabled ('ExternalTrigInjecConv' set to ADC_SOFTWARE_START) + Note: In case of DMA used with regular group: if DMA configured in normal mode (single shot) JAUTO will be stopped upon DMA transfer complete. + To maintain JAUTO always enabled, DMA must be configured in circular mode. + Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to + configure a channel on injected group can impact the configuration of other channels previously set. */ + uint32_t ExternalTrigInjecConv; /*!< Selects the external event used to trigger the conversion start of injected group. + If set to ADC_INJECTED_SOFTWARE_START, external triggers are disabled. + If set to external trigger source, triggering is on event rising edge. + This parameter can be a value of @ref ADCEx_External_trigger_Source_Injected + Note: This parameter must be modified when ADC is disabled (before ADC start conversion or after ADC stop conversion). + If ADC is enabled, this parameter setting is bypassed without error reporting (as it can be the expected behaviour in case of another parameter update on the fly) + Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to + configure a channel on injected group can impact the configuration of other channels previously set. */ + uint32_t ExternalTrigInjecConvEdge; /*!< Selects the external trigger edge of injected group. + This parameter can be a value of @ref ADCEx_External_trigger_edge_Injected. + If trigger is set to ADC_INJECTED_SOFTWARE_START, this parameter is discarded. + Caution: this setting impacts the entire injected group. Therefore, call of HAL_ADCEx_InjectedConfigChannel() to + configure a channel on injected group can impact the configuration of other channels previously set. */ +}ADC_InjectionConfTypeDef; + +/** + * @brief ADC Configuration multi-mode structure definition + */ +typedef struct +{ + uint32_t Mode; /*!< Configures the ADC to operate in independent or multi mode. + This parameter can be a value of @ref ADCEx_Common_mode */ + uint32_t DMAAccessMode; /*!< Configures the Direct memory access mode for multi ADC mode. + This parameter can be a value of @ref ADCEx_Direct_memory_access_mode_for_multi_mode */ + uint32_t TwoSamplingDelay; /*!< Configures the Delay between 2 sampling phases. + This parameter can be a value of @ref ADC_delay_between_2_sampling_phases */ +}ADC_MultiModeTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup ADCEx_Exported_Constants ADC Exported Constants + * @{ + */ + +/** @defgroup ADCEx_Common_mode ADC Common Mode + * @{ + */ +#define ADC_MODE_INDEPENDENT ((uint32_t)0x00000000U) +#define ADC_DUALMODE_REGSIMULT_INJECSIMULT ((uint32_t)ADC_CCR_MULTI_0) +#define ADC_DUALMODE_REGSIMULT_ALTERTRIG ((uint32_t)ADC_CCR_MULTI_1) +#define ADC_DUALMODE_INJECSIMULT ((uint32_t)(ADC_CCR_MULTI_2 | ADC_CCR_MULTI_0)) +#define ADC_DUALMODE_REGSIMULT ((uint32_t)(ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1)) +#define ADC_DUALMODE_INTERL ((uint32_t)(ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0)) +#define ADC_DUALMODE_ALTERTRIG ((uint32_t)(ADC_CCR_MULTI_3 | ADC_CCR_MULTI_0)) +#define ADC_TRIPLEMODE_REGSIMULT_INJECSIMULT ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_0)) +#define ADC_TRIPLEMODE_REGSIMULT_AlterTrig ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_1)) +#define ADC_TRIPLEMODE_INJECSIMULT ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_0)) +#define ADC_TRIPLEMODE_REGSIMULT ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1)) +#define ADC_TRIPLEMODE_INTERL ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0)) +#define ADC_TRIPLEMODE_ALTERTRIG ((uint32_t)(ADC_CCR_MULTI_4 | ADC_CCR_MULTI_3 | ADC_CCR_MULTI_0)) +/** + * @} + */ + +/** @defgroup ADCEx_Direct_memory_access_mode_for_multi_mode ADC Direct Memory Access Mode For Multi Mode + * @{ + */ +#define ADC_DMAACCESSMODE_DISABLED ((uint32_t)0x00000000U) /*!< DMA mode disabled */ +#define ADC_DMAACCESSMODE_1 ((uint32_t)ADC_CCR_DMA_0) /*!< DMA mode 1 enabled (2 / 3 half-words one by one - 1 then 2 then 3)*/ +#define ADC_DMAACCESSMODE_2 ((uint32_t)ADC_CCR_DMA_1) /*!< DMA mode 2 enabled (2 / 3 half-words by pairs - 2&1 then 1&3 then 3&2)*/ +#define ADC_DMAACCESSMODE_3 ((uint32_t)ADC_CCR_DMA) /*!< DMA mode 3 enabled (2 / 3 bytes by pairs - 2&1 then 1&3 then 3&2) */ +/** + * @} + */ + +/** @defgroup ADCEx_External_trigger_edge_Injected ADC External Trigger Edge Injected + * @{ + */ +#define ADC_EXTERNALTRIGINJECCONVEDGE_NONE ((uint32_t)0x00000000U) +#define ADC_EXTERNALTRIGINJECCONVEDGE_RISING ((uint32_t)ADC_CR2_JEXTEN_0) +#define ADC_EXTERNALTRIGINJECCONVEDGE_FALLING ((uint32_t)ADC_CR2_JEXTEN_1) +#define ADC_EXTERNALTRIGINJECCONVEDGE_RISINGFALLING ((uint32_t)ADC_CR2_JEXTEN) +/** + * @} + */ + +/** @defgroup ADCEx_External_trigger_Source_Injected ADC External Trigger Source Injected + * @{ + */ +#define ADC_EXTERNALTRIGINJECCONV_T1_TRGO ((uint32_t)0x00000000U) +#define ADC_EXTERNALTRIGINJECCONV_T1_CC4 ((uint32_t)ADC_CR2_JEXTSEL_0) +#define ADC_EXTERNALTRIGINJECCONV_T2_TRGO ((uint32_t)ADC_CR2_JEXTSEL_1) +#define ADC_EXTERNALTRIGINJECCONV_T2_CC1 ((uint32_t)(ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0)) +#define ADC_EXTERNALTRIGINJECCONV_T3_CC4 ((uint32_t)ADC_CR2_JEXTSEL_2) +#define ADC_EXTERNALTRIGINJECCONV_T4_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0)) + +#define ADC_EXTERNALTRIGINJECCONV_T8_CC4 ((uint32_t)(ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0)) +#define ADC_EXTERNALTRIGINJECCONV_T1_TRGO2 ((uint32_t)ADC_CR2_JEXTSEL_3) +#define ADC_EXTERNALTRIGINJECCONV_T8_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_0)) +#define ADC_EXTERNALTRIGINJECCONV_T8_TRGO2 ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_1)) +#define ADC_EXTERNALTRIGINJECCONV_T3_CC3 ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0)) +#define ADC_EXTERNALTRIGINJECCONV_T5_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2)) +#define ADC_EXTERNALTRIGINJECCONV_T3_CC1 ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0)) +#define ADC_EXTERNALTRIGINJECCONV_T6_TRGO ((uint32_t)(ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1)) +#define ADC_INJECTED_SOFTWARE_START ((uint32_t)ADC_CR2_JEXTSEL + 1) +/** + * @} + */ + +/** @defgroup ADCEx_injected_rank ADC Injected Channel Rank + * @{ + */ +#define ADC_INJECTED_RANK_1 ((uint32_t)0x00000001U) +#define ADC_INJECTED_RANK_2 ((uint32_t)0x00000002U) +#define ADC_INJECTED_RANK_3 ((uint32_t)0x00000003U) +#define ADC_INJECTED_RANK_4 ((uint32_t)0x00000004U) +/** + * @} + */ + +/** @defgroup ADCEx_channels ADC Specific Channels + * @{ + */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup ADC_Exported_Macros ADC Exported Macros + * @{ + */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup ADCEx_Exported_Functions + * @{ + */ + +/** @addtogroup ADCEx_Exported_Functions_Group1 + * @{ + */ + +/* I/O operation functions ******************************************************/ +HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef* hadc); +HAL_StatusTypeDef HAL_ADCEx_InjectedStop(ADC_HandleTypeDef* hadc); +HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout); +HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef* hadc); +HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(ADC_HandleTypeDef* hadc); +uint32_t HAL_ADCEx_InjectedGetValue(ADC_HandleTypeDef* hadc, uint32_t InjectedRank); +HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length); +HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef* hadc); +uint32_t HAL_ADCEx_MultiModeGetValue(ADC_HandleTypeDef* hadc); +void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc); + +/* Peripheral Control functions *************************************************/ +HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef* hadc,ADC_InjectionConfTypeDef* sConfigInjected); +HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef* hadc, ADC_MultiModeTypeDef* multimode); + +/** + * @} + */ + +/** + * @} + */ +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup ADCEx_Private_Constants ADC Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup ADCEx_Private_Macros ADC Private Macros + * @{ + */ + +#define IS_ADC_MODE(__MODE__) (((__MODE__) == ADC_MODE_INDEPENDENT) || \ + ((__MODE__) == ADC_DUALMODE_REGSIMULT_INJECSIMULT) || \ + ((__MODE__) == ADC_DUALMODE_REGSIMULT_ALTERTRIG) || \ + ((__MODE__) == ADC_DUALMODE_INJECSIMULT) || \ + ((__MODE__) == ADC_DUALMODE_REGSIMULT) || \ + ((__MODE__) == ADC_DUALMODE_INTERL) || \ + ((__MODE__) == ADC_DUALMODE_ALTERTRIG) || \ + ((__MODE__) == ADC_TRIPLEMODE_REGSIMULT_INJECSIMULT) || \ + ((__MODE__) == ADC_TRIPLEMODE_REGSIMULT_AlterTrig) || \ + ((__MODE__) == ADC_TRIPLEMODE_INJECSIMULT) || \ + ((__MODE__) == ADC_TRIPLEMODE_REGSIMULT) || \ + ((__MODE__) == ADC_TRIPLEMODE_INTERL) || \ + ((__MODE__) == ADC_TRIPLEMODE_ALTERTRIG)) +#define IS_ADC_DMA_ACCESS_MODE(__MODE__) (((__MODE__) == ADC_DMAACCESSMODE_DISABLED) || \ + ((__MODE__) == ADC_DMAACCESSMODE_1) || \ + ((__MODE__) == ADC_DMAACCESSMODE_2) || \ + ((__MODE__) == ADC_DMAACCESSMODE_3)) +#define IS_ADC_EXT_INJEC_TRIG_EDGE(__EDGE__) (((__EDGE__) == ADC_EXTERNALTRIGINJECCONVEDGE_NONE) || \ + ((__EDGE__) == ADC_EXTERNALTRIGINJECCONVEDGE_RISING) || \ + ((__EDGE__) == ADC_EXTERNALTRIGINJECCONVEDGE_FALLING) || \ + ((__EDGE__) == ADC_EXTERNALTRIGINJECCONVEDGE_RISINGFALLING)) +#define IS_ADC_EXT_INJEC_TRIG(__INJTRIG__) (((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T1_CC4) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T2_TRGO) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T2_CC1) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T3_CC4) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T4_TRGO) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T8_CC4) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T1_TRGO2) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T8_TRGO) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T8_TRGO2) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T3_CC3) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T5_TRGO) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T3_CC1) || \ + ((__INJTRIG__) == ADC_EXTERNALTRIGINJECCONV_T6_TRGO) || \ + ((__INJTRIG__) == ADC_INJECTED_SOFTWARE_START)) +#define IS_ADC_INJECTED_RANK(__RANK__) (((__RANK__) == ADC_INJECTED_RANK_1) || \ + ((__RANK__) == ADC_INJECTED_RANK_2) || \ + ((__RANK__) == ADC_INJECTED_RANK_3) || \ + ((__RANK__) == ADC_INJECTED_RANK_4)) +#define IS_ADC_INJECTED_LENGTH(__LENGTH__) (((__LENGTH__) >= ((uint32_t)1)) && ((__LENGTH__) <= ((uint32_t)4))) + +/** + * @brief Set the selected injected Channel rank. + * @param _CHANNELNB_ Channel number. + * @param _RANKNB_ Rank number. + * @param _JSQR_JL_ Sequence length. + * @retval None + */ +#define ADC_JSQR(_CHANNELNB_, _RANKNB_,_JSQR_JL_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5 * (uint8_t)(((_RANKNB_) + 3) - (_JSQR_JL_)))) +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup ADCEx_Private_Functions ADC Private Functions + * @{ + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F7xx_ADC_EX_H */ + + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h new file mode 100644 index 0000000..61907ec --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h @@ -0,0 +1,406 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_cortex.h + * @author MCD Application Team + * @brief Header file of CORTEX HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_CORTEX_H +#define __STM32F7xx_HAL_CORTEX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup CORTEX + * @{ + */ +/* Exported types ------------------------------------------------------------*/ +/** @defgroup CORTEX_Exported_Types Cortex Exported Types + * @{ + */ + +#if (__MPU_PRESENT == 1) +/** @defgroup CORTEX_MPU_Region_Initialization_Structure_definition MPU Region Initialization Structure Definition + * @brief MPU Region initialization structure + * @{ + */ +typedef struct +{ + uint8_t Enable; /*!< Specifies the status of the region. + This parameter can be a value of @ref CORTEX_MPU_Region_Enable */ + uint8_t Number; /*!< Specifies the number of the region to protect. + This parameter can be a value of @ref CORTEX_MPU_Region_Number */ + uint32_t BaseAddress; /*!< Specifies the base address of the region to protect. */ + uint8_t Size; /*!< Specifies the size of the region to protect. + This parameter can be a value of @ref CORTEX_MPU_Region_Size */ + uint8_t SubRegionDisable; /*!< Specifies the number of the subregion protection to disable. + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF */ + uint8_t TypeExtField; /*!< Specifies the TEX field level. + This parameter can be a value of @ref CORTEX_MPU_TEX_Levels */ + uint8_t AccessPermission; /*!< Specifies the region access permission type. + This parameter can be a value of @ref CORTEX_MPU_Region_Permission_Attributes */ + uint8_t DisableExec; /*!< Specifies the instruction access status. + This parameter can be a value of @ref CORTEX_MPU_Instruction_Access */ + uint8_t IsShareable; /*!< Specifies the shareability status of the protected region. + This parameter can be a value of @ref CORTEX_MPU_Access_Shareable */ + uint8_t IsCacheable; /*!< Specifies the cacheable status of the region protected. + This parameter can be a value of @ref CORTEX_MPU_Access_Cacheable */ + uint8_t IsBufferable; /*!< Specifies the bufferable status of the protected region. + This parameter can be a value of @ref CORTEX_MPU_Access_Bufferable */ +}MPU_Region_InitTypeDef; +/** + * @} + */ +#endif /* __MPU_PRESENT */ + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup CORTEX_Exported_Constants CORTEX Exported Constants + * @{ + */ + +/** @defgroup CORTEX_Preemption_Priority_Group CORTEX Preemption Priority Group + * @{ + */ +#define NVIC_PRIORITYGROUP_0 ((uint32_t)0x00000007U) /*!< 0 bits for pre-emption priority + 4 bits for subpriority */ +#define NVIC_PRIORITYGROUP_1 ((uint32_t)0x00000006U) /*!< 1 bits for pre-emption priority + 3 bits for subpriority */ +#define NVIC_PRIORITYGROUP_2 ((uint32_t)0x00000005U) /*!< 2 bits for pre-emption priority + 2 bits for subpriority */ +#define NVIC_PRIORITYGROUP_3 ((uint32_t)0x00000004U) /*!< 3 bits for pre-emption priority + 1 bits for subpriority */ +#define NVIC_PRIORITYGROUP_4 ((uint32_t)0x00000003U) /*!< 4 bits for pre-emption priority + 0 bits for subpriority */ +/** + * @} + */ + +/** @defgroup CORTEX_SysTick_clock_source CORTEX _SysTick clock source + * @{ + */ +#define SYSTICK_CLKSOURCE_HCLK_DIV8 ((uint32_t)0x00000000U) +#define SYSTICK_CLKSOURCE_HCLK ((uint32_t)0x00000004U) + +/** + * @} + */ + +#if (__MPU_PRESENT == 1) +/** @defgroup CORTEX_MPU_HFNMI_PRIVDEF_Control MPU HFNMI and PRIVILEGED Access control + * @{ + */ +#define MPU_HFNMI_PRIVDEF_NONE ((uint32_t)0x00000000U) +#define MPU_HARDFAULT_NMI ((uint32_t)0x00000002U) +#define MPU_PRIVILEGED_DEFAULT ((uint32_t)0x00000004U) +#define MPU_HFNMI_PRIVDEF ((uint32_t)0x00000006U) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Enable CORTEX MPU Region Enable + * @{ + */ +#define MPU_REGION_ENABLE ((uint8_t)0x01U) +#define MPU_REGION_DISABLE ((uint8_t)0x00U) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Instruction_Access CORTEX MPU Instruction Access + * @{ + */ +#define MPU_INSTRUCTION_ACCESS_ENABLE ((uint8_t)0x00U) +#define MPU_INSTRUCTION_ACCESS_DISABLE ((uint8_t)0x01U) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Access_Shareable CORTEX MPU Instruction Access Shareable + * @{ + */ +#define MPU_ACCESS_SHAREABLE ((uint8_t)0x01U) +#define MPU_ACCESS_NOT_SHAREABLE ((uint8_t)0x00U) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Access_Cacheable CORTEX MPU Instruction Access Cacheable + * @{ + */ +#define MPU_ACCESS_CACHEABLE ((uint8_t)0x01U) +#define MPU_ACCESS_NOT_CACHEABLE ((uint8_t)0x00U) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Access_Bufferable CORTEX MPU Instruction Access Bufferable + * @{ + */ +#define MPU_ACCESS_BUFFERABLE ((uint8_t)0x01U) +#define MPU_ACCESS_NOT_BUFFERABLE ((uint8_t)0x00U) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_TEX_Levels MPU TEX Levels + * @{ + */ +#define MPU_TEX_LEVEL0 ((uint8_t)0x00U) +#define MPU_TEX_LEVEL1 ((uint8_t)0x01U) +#define MPU_TEX_LEVEL2 ((uint8_t)0x02U) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Size CORTEX MPU Region Size + * @{ + */ +#define MPU_REGION_SIZE_32B ((uint8_t)0x04U) +#define MPU_REGION_SIZE_64B ((uint8_t)0x05U) +#define MPU_REGION_SIZE_128B ((uint8_t)0x06U) +#define MPU_REGION_SIZE_256B ((uint8_t)0x07U) +#define MPU_REGION_SIZE_512B ((uint8_t)0x08U) +#define MPU_REGION_SIZE_1KB ((uint8_t)0x09U) +#define MPU_REGION_SIZE_2KB ((uint8_t)0x0AU) +#define MPU_REGION_SIZE_4KB ((uint8_t)0x0BU) +#define MPU_REGION_SIZE_8KB ((uint8_t)0x0CU) +#define MPU_REGION_SIZE_16KB ((uint8_t)0x0DU) +#define MPU_REGION_SIZE_32KB ((uint8_t)0x0EU) +#define MPU_REGION_SIZE_64KB ((uint8_t)0x0FU) +#define MPU_REGION_SIZE_128KB ((uint8_t)0x10U) +#define MPU_REGION_SIZE_256KB ((uint8_t)0x11U) +#define MPU_REGION_SIZE_512KB ((uint8_t)0x12U) +#define MPU_REGION_SIZE_1MB ((uint8_t)0x13U) +#define MPU_REGION_SIZE_2MB ((uint8_t)0x14U) +#define MPU_REGION_SIZE_4MB ((uint8_t)0x15U) +#define MPU_REGION_SIZE_8MB ((uint8_t)0x16U) +#define MPU_REGION_SIZE_16MB ((uint8_t)0x17U) +#define MPU_REGION_SIZE_32MB ((uint8_t)0x18U) +#define MPU_REGION_SIZE_64MB ((uint8_t)0x19U) +#define MPU_REGION_SIZE_128MB ((uint8_t)0x1AU) +#define MPU_REGION_SIZE_256MB ((uint8_t)0x1BU) +#define MPU_REGION_SIZE_512MB ((uint8_t)0x1CU) +#define MPU_REGION_SIZE_1GB ((uint8_t)0x1DU) +#define MPU_REGION_SIZE_2GB ((uint8_t)0x1EU) +#define MPU_REGION_SIZE_4GB ((uint8_t)0x1FU) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Permission_Attributes CORTEX MPU Region Permission Attributes + * @{ + */ +#define MPU_REGION_NO_ACCESS ((uint8_t)0x00U) +#define MPU_REGION_PRIV_RW ((uint8_t)0x01U) +#define MPU_REGION_PRIV_RW_URO ((uint8_t)0x02U) +#define MPU_REGION_FULL_ACCESS ((uint8_t)0x03U) +#define MPU_REGION_PRIV_RO ((uint8_t)0x05U) +#define MPU_REGION_PRIV_RO_URO ((uint8_t)0x06U) +/** + * @} + */ + +/** @defgroup CORTEX_MPU_Region_Number CORTEX MPU Region Number + * @{ + */ +#define MPU_REGION_NUMBER0 ((uint8_t)0x00U) +#define MPU_REGION_NUMBER1 ((uint8_t)0x01U) +#define MPU_REGION_NUMBER2 ((uint8_t)0x02U) +#define MPU_REGION_NUMBER3 ((uint8_t)0x03U) +#define MPU_REGION_NUMBER4 ((uint8_t)0x04U) +#define MPU_REGION_NUMBER5 ((uint8_t)0x05U) +#define MPU_REGION_NUMBER6 ((uint8_t)0x06U) +#define MPU_REGION_NUMBER7 ((uint8_t)0x07U) +/** + * @} + */ +#endif /* __MPU_PRESENT */ + +/** + * @} + */ + + +/* Exported Macros -----------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup CORTEX_Exported_Functions + * @{ + */ + +/** @addtogroup CORTEX_Exported_Functions_Group1 + * @{ + */ +/* Initialization and de-initialization functions *****************************/ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup); +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority); +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn); +void HAL_NVIC_DisableIRQ(IRQn_Type IRQn); +void HAL_NVIC_SystemReset(void); +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb); +/** + * @} + */ + +/** @addtogroup CORTEX_Exported_Functions_Group2 + * @{ + */ +/* Peripheral Control functions ***********************************************/ +#if (__MPU_PRESENT == 1) +void HAL_MPU_Enable(uint32_t MPU_Control); +void HAL_MPU_Disable(void); +void HAL_MPU_EnableRegion(uint32_t RegionNumber); +void HAL_MPU_DisableRegion(uint32_t RegionNumber); +void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init); +#endif /* __MPU_PRESENT */ +uint32_t HAL_NVIC_GetPriorityGrouping(void); +void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority); +uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn); +void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn); +void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn); +uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn); +void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource); +void HAL_SYSTICK_IRQHandler(void); +void HAL_SYSTICK_Callback(void); +/** + * @} + */ + +/** + * @} + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @defgroup CORTEX_Private_Macros CORTEX Private Macros + * @{ + */ +#define IS_NVIC_PRIORITY_GROUP(GROUP) (((GROUP) == NVIC_PRIORITYGROUP_0) || \ + ((GROUP) == NVIC_PRIORITYGROUP_1) || \ + ((GROUP) == NVIC_PRIORITYGROUP_2) || \ + ((GROUP) == NVIC_PRIORITYGROUP_3) || \ + ((GROUP) == NVIC_PRIORITYGROUP_4)) + +#define IS_NVIC_PREEMPTION_PRIORITY(PRIORITY) ((PRIORITY) < 0x10U) + +#define IS_NVIC_SUB_PRIORITY(PRIORITY) ((PRIORITY) < 0x10U) + +#define IS_NVIC_DEVICE_IRQ(IRQ) ((IRQ) >= 0x00) + +#define IS_SYSTICK_CLK_SOURCE(SOURCE) (((SOURCE) == SYSTICK_CLKSOURCE_HCLK) || \ + ((SOURCE) == SYSTICK_CLKSOURCE_HCLK_DIV8)) + +#if (__MPU_PRESENT == 1) +#define IS_MPU_REGION_ENABLE(STATE) (((STATE) == MPU_REGION_ENABLE) || \ + ((STATE) == MPU_REGION_DISABLE)) + +#define IS_MPU_INSTRUCTION_ACCESS(STATE) (((STATE) == MPU_INSTRUCTION_ACCESS_ENABLE) || \ + ((STATE) == MPU_INSTRUCTION_ACCESS_DISABLE)) + +#define IS_MPU_ACCESS_SHAREABLE(STATE) (((STATE) == MPU_ACCESS_SHAREABLE) || \ + ((STATE) == MPU_ACCESS_NOT_SHAREABLE)) + +#define IS_MPU_ACCESS_CACHEABLE(STATE) (((STATE) == MPU_ACCESS_CACHEABLE) || \ + ((STATE) == MPU_ACCESS_NOT_CACHEABLE)) + +#define IS_MPU_ACCESS_BUFFERABLE(STATE) (((STATE) == MPU_ACCESS_BUFFERABLE) || \ + ((STATE) == MPU_ACCESS_NOT_BUFFERABLE)) + +#define IS_MPU_TEX_LEVEL(TYPE) (((TYPE) == MPU_TEX_LEVEL0) || \ + ((TYPE) == MPU_TEX_LEVEL1) || \ + ((TYPE) == MPU_TEX_LEVEL2)) + +#define IS_MPU_REGION_PERMISSION_ATTRIBUTE(TYPE) (((TYPE) == MPU_REGION_NO_ACCESS) || \ + ((TYPE) == MPU_REGION_PRIV_RW) || \ + ((TYPE) == MPU_REGION_PRIV_RW_URO) || \ + ((TYPE) == MPU_REGION_FULL_ACCESS) || \ + ((TYPE) == MPU_REGION_PRIV_RO) || \ + ((TYPE) == MPU_REGION_PRIV_RO_URO)) + +#define IS_MPU_REGION_NUMBER(NUMBER) (((NUMBER) == MPU_REGION_NUMBER0) || \ + ((NUMBER) == MPU_REGION_NUMBER1) || \ + ((NUMBER) == MPU_REGION_NUMBER2) || \ + ((NUMBER) == MPU_REGION_NUMBER3) || \ + ((NUMBER) == MPU_REGION_NUMBER4) || \ + ((NUMBER) == MPU_REGION_NUMBER5) || \ + ((NUMBER) == MPU_REGION_NUMBER6) || \ + ((NUMBER) == MPU_REGION_NUMBER7)) + +#define IS_MPU_REGION_SIZE(SIZE) (((SIZE) == MPU_REGION_SIZE_32B) || \ + ((SIZE) == MPU_REGION_SIZE_64B) || \ + ((SIZE) == MPU_REGION_SIZE_128B) || \ + ((SIZE) == MPU_REGION_SIZE_256B) || \ + ((SIZE) == MPU_REGION_SIZE_512B) || \ + ((SIZE) == MPU_REGION_SIZE_1KB) || \ + ((SIZE) == MPU_REGION_SIZE_2KB) || \ + ((SIZE) == MPU_REGION_SIZE_4KB) || \ + ((SIZE) == MPU_REGION_SIZE_8KB) || \ + ((SIZE) == MPU_REGION_SIZE_16KB) || \ + ((SIZE) == MPU_REGION_SIZE_32KB) || \ + ((SIZE) == MPU_REGION_SIZE_64KB) || \ + ((SIZE) == MPU_REGION_SIZE_128KB) || \ + ((SIZE) == MPU_REGION_SIZE_256KB) || \ + ((SIZE) == MPU_REGION_SIZE_512KB) || \ + ((SIZE) == MPU_REGION_SIZE_1MB) || \ + ((SIZE) == MPU_REGION_SIZE_2MB) || \ + ((SIZE) == MPU_REGION_SIZE_4MB) || \ + ((SIZE) == MPU_REGION_SIZE_8MB) || \ + ((SIZE) == MPU_REGION_SIZE_16MB) || \ + ((SIZE) == MPU_REGION_SIZE_32MB) || \ + ((SIZE) == MPU_REGION_SIZE_64MB) || \ + ((SIZE) == MPU_REGION_SIZE_128MB) || \ + ((SIZE) == MPU_REGION_SIZE_256MB) || \ + ((SIZE) == MPU_REGION_SIZE_512MB) || \ + ((SIZE) == MPU_REGION_SIZE_1GB) || \ + ((SIZE) == MPU_REGION_SIZE_2GB) || \ + ((SIZE) == MPU_REGION_SIZE_4GB)) + +#define IS_MPU_SUB_REGION_DISABLE(SUBREGION) ((SUBREGION) < (uint16_t)0x00FFU) +#endif /* __MPU_PRESENT */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_CORTEX_H */ + + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h new file mode 100644 index 0000000..d0c34b6 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h @@ -0,0 +1,220 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_def.h + * @author MCD Application Team + * @brief This file contains HAL common defines, enumeration, macros and + * structures definitions. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_DEF +#define __STM32F7xx_HAL_DEF + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" +#include "Legacy/stm32_hal_legacy.h" +#include + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief HAL Status structures definition + */ +typedef enum +{ + HAL_OK = 0x00U, + HAL_ERROR = 0x01U, + HAL_BUSY = 0x02U, + HAL_TIMEOUT = 0x03U +} HAL_StatusTypeDef; + +/** + * @brief HAL Lock structures definition + */ +typedef enum +{ + HAL_UNLOCKED = 0x00U, + HAL_LOCKED = 0x01U +} HAL_LockTypeDef; + +/* Exported macro ------------------------------------------------------------*/ + +#if !defined(UNUSED) +#define UNUSED(X) (void)X /* To avoid gcc/g++ warnings */ +#endif /* UNUSED */ + +#define HAL_MAX_DELAY 0xFFFFFFFFU + +#define HAL_IS_BIT_SET(REG, BIT) (((REG) & (BIT)) == (BIT)) +#define HAL_IS_BIT_CLR(REG, BIT) (((REG) & (BIT)) == 0U) + +#define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \ + do{ \ + (__HANDLE__)->__PPP_DMA_FIELD__ = &(__DMA_HANDLE__); \ + (__DMA_HANDLE__).Parent = (__HANDLE__); \ + } while(0) + +/** @brief Reset the Handle's State field. + * @param __HANDLE__ specifies the Peripheral Handle. + * @note This macro can be used for the following purpose: + * - When the Handle is declared as local variable; before passing it as parameter + * to HAL_PPP_Init() for the first time, it is mandatory to use this macro + * to set to 0 the Handle's "State" field. + * Otherwise, "State" field may have any random value and the first time the function + * HAL_PPP_Init() is called, the low level hardware initialization will be missed + * (i.e. HAL_PPP_MspInit() will not be executed). + * - When there is a need to reconfigure the low level hardware: instead of calling + * HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init(). + * In this later function, when the Handle's "State" field is set to 0, it will execute the function + * HAL_PPP_MspInit() which will reconfigure the low level hardware. + * @retval None + */ +#define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0U) + +#if (USE_RTOS == 1U) + /* Reserved for future use */ + #error "USE_RTOS should be 0 in the current HAL release" +#else + #define __HAL_LOCK(__HANDLE__) \ + do{ \ + if((__HANDLE__)->Lock == HAL_LOCKED) \ + { \ + return HAL_BUSY; \ + } \ + else \ + { \ + (__HANDLE__)->Lock = HAL_LOCKED; \ + } \ + }while (0U) + + #define __HAL_UNLOCK(__HANDLE__) \ + do{ \ + (__HANDLE__)->Lock = HAL_UNLOCKED; \ + }while (0U) +#endif /* USE_RTOS */ + +#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) /* ARM Compiler V6 */ + #ifndef __weak + #define __weak __attribute__((weak)) + #endif + #ifndef __packed + #define __packed __attribute__((packed)) + #endif +#elif defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ + #ifndef __weak + #define __weak __attribute__((weak)) + #endif /* __weak */ + #ifndef __packed + #define __packed __attribute__((__packed__)) + #endif /* __packed */ +#endif /* __GNUC__ */ + + +/* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */ +#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) /* ARM Compiler V6 */ + #ifndef __ALIGN_BEGIN + #define __ALIGN_BEGIN + #endif + #ifndef __ALIGN_END + #define __ALIGN_END __attribute__ ((aligned (4))) + #endif +#elif defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ + #ifndef __ALIGN_END + #define __ALIGN_END __attribute__ ((aligned (4))) + #endif /* __ALIGN_END */ + #ifndef __ALIGN_BEGIN + #define __ALIGN_BEGIN + #endif /* __ALIGN_BEGIN */ +#else + #ifndef __ALIGN_END + #define __ALIGN_END + #endif /* __ALIGN_END */ + #ifndef __ALIGN_BEGIN + #if defined (__CC_ARM) /* ARM Compiler V5*/ + #define __ALIGN_BEGIN __align(4) + #elif defined (__ICCARM__) /* IAR Compiler */ + #define __ALIGN_BEGIN + #endif /* __CC_ARM */ + #endif /* __ALIGN_BEGIN */ +#endif /* __GNUC__ */ + +/* Macro to get variable aligned on 32-bytes,needed for cache maintenance purpose */ +#if defined (__GNUC__) /* GNU Compiler */ + #define ALIGN_32BYTES(buf) buf __attribute__ ((aligned (32))) +#elif defined (__ICCARM__) /* IAR Compiler */ + #define ALIGN_32BYTES(buf) _Pragma("data_alignment=32") buf +#elif defined (__CC_ARM) /* ARM Compiler */ + #define ALIGN_32BYTES(buf) __align(32) buf +#endif + +/** + * @brief __RAM_FUNC definition + */ +#if defined ( __CC_ARM ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) +/* ARM Compiler V4/V5 and V6 + -------------------------- + RAM functions are defined using the toolchain options. + Functions that are executed in RAM should reside in a separate source module. + Using the 'Options for File' dialog you can simply change the 'Code / Const' + area of a module to a memory space in physical RAM. + Available memory areas are declared in the 'Target' tab of the 'Options for Target' + dialog. +*/ +#define __RAM_FUNC + +#elif defined ( __ICCARM__ ) +/* ICCARM Compiler + --------------- + RAM functions are defined using a specific toolchain keyword "__ramfunc". +*/ +#define __RAM_FUNC __ramfunc + +#elif defined ( __GNUC__ ) +/* GNU Compiler + ------------ + RAM functions are defined using a specific toolchain attribute + "__attribute__((section(".RamFunc")))". +*/ +#define __RAM_FUNC __attribute__((section(".RamFunc"))) + +#endif + +/** + * @brief __NOINLINE definition + */ +#if defined ( __CC_ARM ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) || defined ( __GNUC__ ) +/* ARM V4/V5 and V6 & GNU Compiler + ------------------------------- +*/ +#define __NOINLINE __attribute__ ( (noinline) ) + +#elif defined ( __ICCARM__ ) +/* ICCARM Compiler + --------------- +*/ +#define __NOINLINE _Pragma("optimize = no_inline") + +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ___STM32F7xx_HAL_DEF */ + + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h new file mode 100644 index 0000000..cca4509 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h @@ -0,0 +1,747 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_dma.h + * @author MCD Application Team + * @brief Header file of DMA HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_DMA_H +#define __STM32F7xx_HAL_DMA_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup DMA + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup DMA_Exported_Types DMA Exported Types + * @brief DMA Exported Types + * @{ + */ + +/** + * @brief DMA Configuration Structure definition + */ +typedef struct +{ + uint32_t Channel; /*!< Specifies the channel used for the specified stream. + This parameter can be a value of @ref DMAEx_Channel_selection */ + + uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, + from memory to memory or from peripheral to memory. + This parameter can be a value of @ref DMA_Data_transfer_direction */ + + uint32_t PeriphInc; /*!< Specifies whether the Peripheral address register should be incremented or not. + This parameter can be a value of @ref DMA_Peripheral_incremented_mode */ + + uint32_t MemInc; /*!< Specifies whether the memory address register should be incremented or not. + This parameter can be a value of @ref DMA_Memory_incremented_mode */ + + uint32_t PeriphDataAlignment; /*!< Specifies the Peripheral data width. + This parameter can be a value of @ref DMA_Peripheral_data_size */ + + uint32_t MemDataAlignment; /*!< Specifies the Memory data width. + This parameter can be a value of @ref DMA_Memory_data_size */ + + uint32_t Mode; /*!< Specifies the operation mode of the DMAy Streamx. + This parameter can be a value of @ref DMA_mode + @note The circular buffer mode cannot be used if the memory-to-memory + data transfer is configured on the selected Stream */ + + uint32_t Priority; /*!< Specifies the software priority for the DMAy Streamx. + This parameter can be a value of @ref DMA_Priority_level */ + + uint32_t FIFOMode; /*!< Specifies if the FIFO mode or Direct mode will be used for the specified stream. + This parameter can be a value of @ref DMA_FIFO_direct_mode + @note The Direct mode (FIFO mode disabled) cannot be used if the + memory-to-memory data transfer is configured on the selected stream */ + + uint32_t FIFOThreshold; /*!< Specifies the FIFO threshold level. + This parameter can be a value of @ref DMA_FIFO_threshold_level */ + + uint32_t MemBurst; /*!< Specifies the Burst transfer configuration for the memory transfers. + It specifies the amount of data to be transferred in a single non interruptible + transaction. + This parameter can be a value of @ref DMA_Memory_burst + @note The burst mode is possible only if the address Increment mode is enabled. */ + + uint32_t PeriphBurst; /*!< Specifies the Burst transfer configuration for the peripheral transfers. + It specifies the amount of data to be transferred in a single non interruptible + transaction. + This parameter can be a value of @ref DMA_Peripheral_burst + @note The burst mode is possible only if the address Increment mode is enabled. */ +}DMA_InitTypeDef; + +/** + * @brief HAL DMA State structures definition + */ +typedef enum +{ + HAL_DMA_STATE_RESET = 0x00U, /*!< DMA not yet initialized or disabled */ + HAL_DMA_STATE_READY = 0x01U, /*!< DMA initialized and ready for use */ + HAL_DMA_STATE_BUSY = 0x02U, /*!< DMA process is ongoing */ + HAL_DMA_STATE_TIMEOUT = 0x03U, /*!< DMA timeout state */ + HAL_DMA_STATE_ERROR = 0x04U, /*!< DMA error state */ + HAL_DMA_STATE_ABORT = 0x05U, /*!< DMA Abort state */ +}HAL_DMA_StateTypeDef; + +/** + * @brief HAL DMA Error Code structure definition + */ +typedef enum +{ + HAL_DMA_FULL_TRANSFER = 0x00U, /*!< Full transfer */ + HAL_DMA_HALF_TRANSFER = 0x01U, /*!< Half Transfer */ +}HAL_DMA_LevelCompleteTypeDef; + +/** + * @brief HAL DMA Error Code structure definition + */ +typedef enum +{ + HAL_DMA_XFER_CPLT_CB_ID = 0x00U, /*!< Full transfer */ + HAL_DMA_XFER_HALFCPLT_CB_ID = 0x01U, /*!< Half Transfer */ + HAL_DMA_XFER_M1CPLT_CB_ID = 0x02U, /*!< M1 Full Transfer */ + HAL_DMA_XFER_M1HALFCPLT_CB_ID = 0x03U, /*!< M1 Half Transfer */ + HAL_DMA_XFER_ERROR_CB_ID = 0x04U, /*!< Error */ + HAL_DMA_XFER_ABORT_CB_ID = 0x05U, /*!< Abort */ + HAL_DMA_XFER_ALL_CB_ID = 0x06U /*!< All */ +}HAL_DMA_CallbackIDTypeDef; + +/** + * @brief DMA handle Structure definition + */ +typedef struct __DMA_HandleTypeDef +{ + DMA_Stream_TypeDef *Instance; /*!< Register base address */ + + DMA_InitTypeDef Init; /*!< DMA communication parameters */ + + HAL_LockTypeDef Lock; /*!< DMA locking object */ + + __IO HAL_DMA_StateTypeDef State; /*!< DMA transfer state */ + + void *Parent; /*!< Parent object state */ + + void (* XferCpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer complete callback */ + + void (* XferHalfCpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA Half transfer complete callback */ + + void (* XferM1CpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer complete Memory1 callback */ + + void (* XferM1HalfCpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer Half complete Memory1 callback */ + + void (* XferErrorCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer error callback */ + + void (* XferAbortCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA transfer Abort callback */ + + __IO uint32_t ErrorCode; /*!< DMA Error code */ + + uint32_t StreamBaseAddress; /*!< DMA Stream Base Address */ + + uint32_t StreamIndex; /*!< DMA Stream Index */ + +}DMA_HandleTypeDef; + +/** + * @} + */ + + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup DMA_Exported_Constants DMA Exported Constants + * @brief DMA Exported constants + * @{ + */ + +/** @defgroup DMA_Error_Code DMA Error Code + * @brief DMA Error Code + * @{ + */ +#define HAL_DMA_ERROR_NONE 0x00000000U /*!< No error */ +#define HAL_DMA_ERROR_TE 0x00000001U /*!< Transfer error */ +#define HAL_DMA_ERROR_FE 0x00000002U /*!< FIFO error */ +#define HAL_DMA_ERROR_DME 0x00000004U /*!< Direct Mode error */ +#define HAL_DMA_ERROR_TIMEOUT 0x00000020U /*!< Timeout error */ +#define HAL_DMA_ERROR_PARAM 0x00000040U /*!< Parameter error */ +#define HAL_DMA_ERROR_NO_XFER 0x00000080U /*!< Abort requested with no Xfer ongoing */ +#define HAL_DMA_ERROR_NOT_SUPPORTED 0x00000100U /*!< Not supported mode */ +/** + * @} + */ + +/** @defgroup DMA_Data_transfer_direction DMA Data transfer direction + * @brief DMA data transfer direction + * @{ + */ +#define DMA_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ +#define DMA_MEMORY_TO_PERIPH DMA_SxCR_DIR_0 /*!< Memory to peripheral direction */ +#define DMA_MEMORY_TO_MEMORY DMA_SxCR_DIR_1 /*!< Memory to memory direction */ +/** + * @} + */ + +/** @defgroup DMA_Peripheral_incremented_mode DMA Peripheral incremented mode + * @brief DMA peripheral incremented mode + * @{ + */ +#define DMA_PINC_ENABLE DMA_SxCR_PINC /*!< Peripheral increment mode enable */ +#define DMA_PINC_DISABLE 0x00000000U /*!< Peripheral increment mode disable */ +/** + * @} + */ + +/** @defgroup DMA_Memory_incremented_mode DMA Memory incremented mode + * @brief DMA memory incremented mode + * @{ + */ +#define DMA_MINC_ENABLE DMA_SxCR_MINC /*!< Memory increment mode enable */ +#define DMA_MINC_DISABLE 0x00000000U /*!< Memory increment mode disable */ +/** + * @} + */ + +/** @defgroup DMA_Peripheral_data_size DMA Peripheral data size + * @brief DMA peripheral data size + * @{ + */ +#define DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment: Byte */ +#define DMA_PDATAALIGN_HALFWORD DMA_SxCR_PSIZE_0 /*!< Peripheral data alignment: HalfWord */ +#define DMA_PDATAALIGN_WORD DMA_SxCR_PSIZE_1 /*!< Peripheral data alignment: Word */ +/** + * @} + */ + +/** @defgroup DMA_Memory_data_size DMA Memory data size + * @brief DMA memory data size + * @{ + */ +#define DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment: Byte */ +#define DMA_MDATAALIGN_HALFWORD DMA_SxCR_MSIZE_0 /*!< Memory data alignment: HalfWord */ +#define DMA_MDATAALIGN_WORD DMA_SxCR_MSIZE_1 /*!< Memory data alignment: Word */ +/** + * @} + */ + +/** @defgroup DMA_mode DMA mode + * @brief DMA mode + * @{ + */ +#define DMA_NORMAL 0x00000000U /*!< Normal mode */ +#define DMA_CIRCULAR DMA_SxCR_CIRC /*!< Circular mode */ +#define DMA_PFCTRL DMA_SxCR_PFCTRL /*!< Peripheral flow control mode */ +/** + * @} + */ + +/** @defgroup DMA_Priority_level DMA Priority level + * @brief DMA priority levels + * @{ + */ +#define DMA_PRIORITY_LOW 0x00000000U /*!< Priority level: Low */ +#define DMA_PRIORITY_MEDIUM DMA_SxCR_PL_0 /*!< Priority level: Medium */ +#define DMA_PRIORITY_HIGH DMA_SxCR_PL_1 /*!< Priority level: High */ +#define DMA_PRIORITY_VERY_HIGH DMA_SxCR_PL /*!< Priority level: Very High */ +/** + * @} + */ + +/** @defgroup DMA_FIFO_direct_mode DMA FIFO direct mode + * @brief DMA FIFO direct mode + * @{ + */ +#define DMA_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode disable */ +#define DMA_FIFOMODE_ENABLE DMA_SxFCR_DMDIS /*!< FIFO mode enable */ +/** + * @} + */ + +/** @defgroup DMA_FIFO_threshold_level DMA FIFO threshold level + * @brief DMA FIFO level + * @{ + */ +#define DMA_FIFO_THRESHOLD_1QUARTERFULL 0x00000000U /*!< FIFO threshold 1 quart full configuration */ +#define DMA_FIFO_THRESHOLD_HALFFULL DMA_SxFCR_FTH_0 /*!< FIFO threshold half full configuration */ +#define DMA_FIFO_THRESHOLD_3QUARTERSFULL DMA_SxFCR_FTH_1 /*!< FIFO threshold 3 quarts full configuration */ +#define DMA_FIFO_THRESHOLD_FULL DMA_SxFCR_FTH /*!< FIFO threshold full configuration */ +/** + * @} + */ + +/** @defgroup DMA_Memory_burst DMA Memory burst + * @brief DMA memory burst + * @{ + */ +#define DMA_MBURST_SINGLE 0x00000000U +#define DMA_MBURST_INC4 DMA_SxCR_MBURST_0 +#define DMA_MBURST_INC8 DMA_SxCR_MBURST_1 +#define DMA_MBURST_INC16 DMA_SxCR_MBURST +/** + * @} + */ + +/** @defgroup DMA_Peripheral_burst DMA Peripheral burst + * @brief DMA peripheral burst + * @{ + */ +#define DMA_PBURST_SINGLE 0x00000000U +#define DMA_PBURST_INC4 DMA_SxCR_PBURST_0 +#define DMA_PBURST_INC8 DMA_SxCR_PBURST_1 +#define DMA_PBURST_INC16 DMA_SxCR_PBURST +/** + * @} + */ + +/** @defgroup DMA_interrupt_enable_definitions DMA interrupt enable definitions + * @brief DMA interrupts definition + * @{ + */ +#define DMA_IT_TC DMA_SxCR_TCIE +#define DMA_IT_HT DMA_SxCR_HTIE +#define DMA_IT_TE DMA_SxCR_TEIE +#define DMA_IT_DME DMA_SxCR_DMEIE +#define DMA_IT_FE 0x00000080U +/** + * @} + */ + +/** @defgroup DMA_flag_definitions DMA flag definitions + * @brief DMA flag definitions + * @{ + */ +#define DMA_FLAG_FEIF0_4 0x00000001U +#define DMA_FLAG_DMEIF0_4 0x00000004U +#define DMA_FLAG_TEIF0_4 0x00000008U +#define DMA_FLAG_HTIF0_4 0x00000010U +#define DMA_FLAG_TCIF0_4 0x00000020U +#define DMA_FLAG_FEIF1_5 0x00000040U +#define DMA_FLAG_DMEIF1_5 0x00000100U +#define DMA_FLAG_TEIF1_5 0x00000200U +#define DMA_FLAG_HTIF1_5 0x00000400U +#define DMA_FLAG_TCIF1_5 0x00000800U +#define DMA_FLAG_FEIF2_6 0x00010000U +#define DMA_FLAG_DMEIF2_6 0x00040000U +#define DMA_FLAG_TEIF2_6 0x00080000U +#define DMA_FLAG_HTIF2_6 0x00100000U +#define DMA_FLAG_TCIF2_6 0x00200000U +#define DMA_FLAG_FEIF3_7 0x00400000U +#define DMA_FLAG_DMEIF3_7 0x01000000U +#define DMA_FLAG_TEIF3_7 0x02000000U +#define DMA_FLAG_HTIF3_7 0x04000000U +#define DMA_FLAG_TCIF3_7 0x08000000U +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/** @brief Reset DMA handle state + * @param __HANDLE__ specifies the DMA handle. + * @retval None + */ +#define __HAL_DMA_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DMA_STATE_RESET) + +/** + * @brief Return the current DMA Stream FIFO filled level. + * @param __HANDLE__ DMA handle + * @retval The FIFO filling state. + * - DMA_FIFOStatus_Less1QuarterFull: when FIFO is less than 1 quarter-full + * and not empty. + * - DMA_FIFOStatus_1QuarterFull: if more than 1 quarter-full. + * - DMA_FIFOStatus_HalfFull: if more than 1 half-full. + * - DMA_FIFOStatus_3QuartersFull: if more than 3 quarters-full. + * - DMA_FIFOStatus_Empty: when FIFO is empty + * - DMA_FIFOStatus_Full: when FIFO is full + */ +#define __HAL_DMA_GET_FS(__HANDLE__) (((__HANDLE__)->Instance->FCR & (DMA_SxFCR_FS))) + +/** + * @brief Enable the specified DMA Stream. + * @param __HANDLE__ DMA handle + * @retval None + */ +#define __HAL_DMA_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= DMA_SxCR_EN) + +/** + * @brief Disable the specified DMA Stream. + * @param __HANDLE__ DMA handle + * @retval None + */ +#define __HAL_DMA_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~DMA_SxCR_EN) + +/* Interrupt & Flag management */ + +/** + * @brief Return the current DMA Stream transfer complete flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer complete flag index. + */ +#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TCIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TCIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TCIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TCIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TCIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TCIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TCIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TCIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TCIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TCIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TCIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TCIF2_6 :\ + DMA_FLAG_TCIF3_7) + +/** + * @brief Return the current DMA Stream half transfer complete flag. + * @param __HANDLE__ DMA handle + * @retval The specified half transfer complete flag index. + */ +#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_HTIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_HTIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_HTIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_HTIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_HTIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_HTIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_HTIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_HTIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_HTIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_HTIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_HTIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_HTIF2_6 :\ + DMA_FLAG_HTIF3_7) + +/** + * @brief Return the current DMA Stream transfer error flag. + * @param __HANDLE__ DMA handle + * @retval The specified transfer error flag index. + */ +#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TEIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TEIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TEIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TEIF2_6 :\ + DMA_FLAG_TEIF3_7) + +/** + * @brief Return the current DMA Stream FIFO error flag. + * @param __HANDLE__ DMA handle + * @retval The specified FIFO error flag index. + */ +#define __HAL_DMA_GET_FE_FLAG_INDEX(__HANDLE__)\ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_FEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_FEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_FEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_FEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_FEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_FEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_FEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_FEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_FEIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_FEIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_FEIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_FEIF2_6 :\ + DMA_FLAG_FEIF3_7) + +/** + * @brief Return the current DMA Stream direct mode error flag. + * @param __HANDLE__ DMA handle + * @retval The specified direct mode error flag index. + */ +#define __HAL_DMA_GET_DME_FLAG_INDEX(__HANDLE__)\ +(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_DMEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_DMEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_DMEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_DMEIF0_4 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_DMEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_DMEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_DMEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_DMEIF1_5 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_DMEIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_DMEIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_DMEIF2_6 :\ + ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_DMEIF2_6 :\ + DMA_FLAG_DMEIF3_7) + +/** + * @brief Get the DMA Stream pending flags. + * @param __HANDLE__ DMA handle + * @param __FLAG__ Get the specified flag. + * This parameter can be any combination of the following values: + * @arg DMA_FLAG_TCIFx: Transfer complete flag. + * @arg DMA_FLAG_HTIFx: Half transfer complete flag. + * @arg DMA_FLAG_TEIFx: Transfer error flag. + * @arg DMA_FLAG_DMEIFx: Direct mode error flag. + * @arg DMA_FLAG_FEIFx: FIFO error flag. + * Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag. + * @retval The state of FLAG (SET or RESET). + */ +#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\ +(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)? (DMA2->HISR & (__FLAG__)) :\ + ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)? (DMA2->LISR & (__FLAG__)) :\ + ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)? (DMA1->HISR & (__FLAG__)) : (DMA1->LISR & (__FLAG__))) + +/** + * @brief Clear the DMA Stream pending flags. + * @param __HANDLE__ DMA handle + * @param __FLAG__ specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg DMA_FLAG_TCIFx: Transfer complete flag. + * @arg DMA_FLAG_HTIFx: Half transfer complete flag. + * @arg DMA_FLAG_TEIFx: Transfer error flag. + * @arg DMA_FLAG_DMEIFx: Direct mode error flag. + * @arg DMA_FLAG_FEIFx: FIFO error flag. + * Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag. + * @retval None + */ +#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \ +(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)? (DMA2->HIFCR = (__FLAG__)) :\ + ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)? (DMA2->LIFCR = (__FLAG__)) :\ + ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)? (DMA1->HIFCR = (__FLAG__)) : (DMA1->LIFCR = (__FLAG__))) + +/** + * @brief Enable the specified DMA Stream interrupts. + * @param __HANDLE__ DMA handle + * @param __INTERRUPT__ specifies the DMA interrupt sources to be enabled or disabled. + * This parameter can be one of the following values: + * @arg DMA_IT_TC: Transfer complete interrupt mask. + * @arg DMA_IT_HT: Half transfer complete interrupt mask. + * @arg DMA_IT_TE: Transfer error interrupt mask. + * @arg DMA_IT_FE: FIFO error interrupt mask. + * @arg DMA_IT_DME: Direct mode error interrupt. + * @retval None + */ +#define __HAL_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__INTERRUPT__) != DMA_IT_FE)? \ +((__HANDLE__)->Instance->CR |= (__INTERRUPT__)) : ((__HANDLE__)->Instance->FCR |= (__INTERRUPT__))) + +/** + * @brief Disable the specified DMA Stream interrupts. + * @param __HANDLE__ DMA handle + * @param __INTERRUPT__ specifies the DMA interrupt sources to be enabled or disabled. + * This parameter can be one of the following values: + * @arg DMA_IT_TC: Transfer complete interrupt mask. + * @arg DMA_IT_HT: Half transfer complete interrupt mask. + * @arg DMA_IT_TE: Transfer error interrupt mask. + * @arg DMA_IT_FE: FIFO error interrupt mask. + * @arg DMA_IT_DME: Direct mode error interrupt. + * @retval None + */ +#define __HAL_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__INTERRUPT__) != DMA_IT_FE)? \ +((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__)) : ((__HANDLE__)->Instance->FCR &= ~(__INTERRUPT__))) + +/** + * @brief Check whether the specified DMA Stream interrupt is enabled or not. + * @param __HANDLE__ DMA handle + * @param __INTERRUPT__ specifies the DMA interrupt source to check. + * This parameter can be one of the following values: + * @arg DMA_IT_TC: Transfer complete interrupt mask. + * @arg DMA_IT_HT: Half transfer complete interrupt mask. + * @arg DMA_IT_TE: Transfer error interrupt mask. + * @arg DMA_IT_FE: FIFO error interrupt mask. + * @arg DMA_IT_DME: Direct mode error interrupt. + * @retval The state of DMA_IT. + */ +#define __HAL_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__INTERRUPT__) != DMA_IT_FE)? \ + ((__HANDLE__)->Instance->CR & (__INTERRUPT__)) : \ + ((__HANDLE__)->Instance->FCR & (__INTERRUPT__))) + +/** + * @brief Writes the number of data units to be transferred on the DMA Stream. + * @param __HANDLE__ DMA handle + * @param __COUNTER__ Number of data units to be transferred (from 0 to 65535) + * Number of data items depends only on the Peripheral data format. + * + * @note If Peripheral data format is Bytes: number of data units is equal + * to total number of bytes to be transferred. + * + * @note If Peripheral data format is Half-Word: number of data units is + * equal to total number of bytes to be transferred / 2. + * + * @note If Peripheral data format is Word: number of data units is equal + * to total number of bytes to be transferred / 4. + * + * @retval The number of remaining data units in the current DMAy Streamx transfer. + */ +#define __HAL_DMA_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->NDTR = (uint16_t)(__COUNTER__)) + +/** + * @brief Returns the number of remaining data units in the current DMAy Streamx transfer. + * @param __HANDLE__ DMA handle + * + * @retval The number of remaining data units in the current DMA Stream transfer. + */ +#define __HAL_DMA_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->NDTR) + + +/* Include DMA HAL Extension module */ +#include "stm32f7xx_hal_dma_ex.h" + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup DMA_Exported_Functions DMA Exported Functions + * @brief DMA Exported functions + * @{ + */ + +/** @defgroup DMA_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and de-initialization functions + * @{ + */ +HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma); +/** + * @} + */ + +/** @defgroup DMA_Exported_Functions_Group2 I/O operation functions + * @brief I/O operation functions + * @{ + */ +HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength); +HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength); +HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout); +void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma); +HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)(DMA_HandleTypeDef *_hdma)); +HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID); + +/** + * @} + */ + +/** @defgroup DMA_Exported_Functions_Group3 Peripheral State functions + * @brief Peripheral State functions + * @{ + */ +HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma); +uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma); +/** + * @} + */ +/** + * @} + */ +/* Private Constants -------------------------------------------------------------*/ +/** @defgroup DMA_Private_Constants DMA Private Constants + * @brief DMA private defines and constants + * @{ + */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup DMA_Private_Macros DMA Private Macros + * @brief DMA private macros + * @{ + */ +#define IS_DMA_DIRECTION(DIRECTION) (((DIRECTION) == DMA_PERIPH_TO_MEMORY ) || \ + ((DIRECTION) == DMA_MEMORY_TO_PERIPH) || \ + ((DIRECTION) == DMA_MEMORY_TO_MEMORY)) + +#define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x01U) && ((SIZE) < 0x10000U)) + +#define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PINC_ENABLE) || \ + ((STATE) == DMA_PINC_DISABLE)) + +#define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MINC_ENABLE) || \ + ((STATE) == DMA_MINC_DISABLE)) + +#define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PDATAALIGN_BYTE) || \ + ((SIZE) == DMA_PDATAALIGN_HALFWORD) || \ + ((SIZE) == DMA_PDATAALIGN_WORD)) + +#define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MDATAALIGN_BYTE) || \ + ((SIZE) == DMA_MDATAALIGN_HALFWORD) || \ + ((SIZE) == DMA_MDATAALIGN_WORD )) + +#define IS_DMA_MODE(MODE) (((MODE) == DMA_NORMAL ) || \ + ((MODE) == DMA_CIRCULAR) || \ + ((MODE) == DMA_PFCTRL)) + +#define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_PRIORITY_LOW ) || \ + ((PRIORITY) == DMA_PRIORITY_MEDIUM) || \ + ((PRIORITY) == DMA_PRIORITY_HIGH) || \ + ((PRIORITY) == DMA_PRIORITY_VERY_HIGH)) + +#define IS_DMA_FIFO_MODE_STATE(STATE) (((STATE) == DMA_FIFOMODE_DISABLE ) || \ + ((STATE) == DMA_FIFOMODE_ENABLE)) + +#define IS_DMA_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == DMA_FIFO_THRESHOLD_1QUARTERFULL ) || \ + ((THRESHOLD) == DMA_FIFO_THRESHOLD_HALFFULL) || \ + ((THRESHOLD) == DMA_FIFO_THRESHOLD_3QUARTERSFULL) || \ + ((THRESHOLD) == DMA_FIFO_THRESHOLD_FULL)) + +#define IS_DMA_MEMORY_BURST(BURST) (((BURST) == DMA_MBURST_SINGLE) || \ + ((BURST) == DMA_MBURST_INC4) || \ + ((BURST) == DMA_MBURST_INC8) || \ + ((BURST) == DMA_MBURST_INC16)) + +#define IS_DMA_PERIPHERAL_BURST(BURST) (((BURST) == DMA_PBURST_SINGLE) || \ + ((BURST) == DMA_PBURST_INC4) || \ + ((BURST) == DMA_PBURST_INC8) || \ + ((BURST) == DMA_PBURST_INC16)) +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup DMA_Private_Functions DMA Private Functions + * @brief DMA private functions + * @{ + */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_DMA_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h new file mode 100644 index 0000000..286fb30 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h @@ -0,0 +1,183 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_dma_ex.h + * @author MCD Application Team + * @brief Header file of DMA HAL extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_DMA_EX_H +#define __STM32F7xx_HAL_DMA_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup DMAEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup DMAEx_Exported_Types DMAEx Exported Types + * @brief DMAEx Exported types + * @{ + */ + +/** + * @brief HAL DMA Memory definition + */ +typedef enum +{ + MEMORY0 = 0x00U, /*!< Memory 0 */ + MEMORY1 = 0x01U, /*!< Memory 1 */ + +}HAL_DMA_MemoryTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup DMA_Exported_Constants DMA Exported Constants + * @brief DMA Exported constants + * @{ + */ + +/** @defgroup DMAEx_Channel_selection DMA Channel selection + * @brief DMAEx channel selection + * @{ + */ +#define DMA_CHANNEL_0 0x00000000U /*!< DMA Channel 0 */ +#define DMA_CHANNEL_1 0x02000000U /*!< DMA Channel 1 */ +#define DMA_CHANNEL_2 0x04000000U /*!< DMA Channel 2 */ +#define DMA_CHANNEL_3 0x06000000U /*!< DMA Channel 3 */ +#define DMA_CHANNEL_4 0x08000000U /*!< DMA Channel 4 */ +#define DMA_CHANNEL_5 0x0A000000U /*!< DMA Channel 5 */ +#define DMA_CHANNEL_6 0x0C000000U /*!< DMA Channel 6 */ +#define DMA_CHANNEL_7 0x0E000000U /*!< DMA Channel 7 */ +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\ + defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\ + defined (STM32F779xx) || defined (STM32F730xx) +#define DMA_CHANNEL_8 0x10000000U /*!< DMA Channel 8 */ +#define DMA_CHANNEL_9 0x12000000U /*!< DMA Channel 9 */ +#define DMA_CHANNEL_10 0x14000000U /*!< DMA Channel 10*/ +#define DMA_CHANNEL_11 0x16000000U /*!< DMA Channel 11*/ +#define DMA_CHANNEL_12 0x18000000U /*!< DMA Channel 12*/ +#define DMA_CHANNEL_13 0x1A000000U /*!< DMA Channel 13*/ +#define DMA_CHANNEL_14 0x1C000000U /*!< DMA Channel 14*/ +#define DMA_CHANNEL_15 0x1E000000U /*!< DMA Channel 15*/ +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || + STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup DMAEx_Exported_Functions DMAEx Exported Functions + * @brief DMAEx Exported functions + * @{ + */ + +/** @defgroup DMAEx_Exported_Functions_Group1 Extended features functions + * @brief Extended features functions + * @{ + */ + +/* IO operation functions *******************************************************/ +HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength); +HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength); +HAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory); + +/** + * @} + */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup DMAEx_Private_Macros DMA Private Macros + * @brief DMAEx private macros + * @{ + */ +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\ + defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\ + defined (STM32F779xx) || defined (STM32F730xx) +#define IS_DMA_CHANNEL(CHANNEL) (((CHANNEL) == DMA_CHANNEL_0) || \ + ((CHANNEL) == DMA_CHANNEL_1) || \ + ((CHANNEL) == DMA_CHANNEL_2) || \ + ((CHANNEL) == DMA_CHANNEL_3) || \ + ((CHANNEL) == DMA_CHANNEL_4) || \ + ((CHANNEL) == DMA_CHANNEL_5) || \ + ((CHANNEL) == DMA_CHANNEL_6) || \ + ((CHANNEL) == DMA_CHANNEL_7) || \ + ((CHANNEL) == DMA_CHANNEL_8) || \ + ((CHANNEL) == DMA_CHANNEL_9) || \ + ((CHANNEL) == DMA_CHANNEL_10) || \ + ((CHANNEL) == DMA_CHANNEL_11) || \ + ((CHANNEL) == DMA_CHANNEL_12) || \ + ((CHANNEL) == DMA_CHANNEL_13) || \ + ((CHANNEL) == DMA_CHANNEL_14) || \ + ((CHANNEL) == DMA_CHANNEL_15)) +#else +#define IS_DMA_CHANNEL(CHANNEL) (((CHANNEL) == DMA_CHANNEL_0) || \ + ((CHANNEL) == DMA_CHANNEL_1) || \ + ((CHANNEL) == DMA_CHANNEL_2) || \ + ((CHANNEL) == DMA_CHANNEL_3) || \ + ((CHANNEL) == DMA_CHANNEL_4) || \ + ((CHANNEL) == DMA_CHANNEL_5) || \ + ((CHANNEL) == DMA_CHANNEL_6) || \ + ((CHANNEL) == DMA_CHANNEL_7)) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || + STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx*/ +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup DMAEx_Private_Functions DMAEx Private Functions + * @brief DMAEx Private functions + * @{ + */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_DMA_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h new file mode 100644 index 0000000..992d22e --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h @@ -0,0 +1,317 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_exti.h + * @author MCD Application Team + * @brief Header file of EXTI HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_HAL_EXTI_H +#define STM32F7xx_HAL_EXTI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup EXTI EXTI + * @brief EXTI HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup EXTI_Exported_Types EXTI Exported Types + * @{ + */ +typedef enum +{ + HAL_EXTI_COMMON_CB_ID = 0x00U +} EXTI_CallbackIDTypeDef; + +/** + * @brief EXTI Handle structure definition + */ +typedef struct +{ + uint32_t Line; /*!< Exti line number */ + void (* PendingCallback)(void); /*!< Exti pending callback */ +} EXTI_HandleTypeDef; + +/** + * @brief EXTI Configuration structure definition + */ +typedef struct +{ + uint32_t Line; /*!< The Exti line to be configured. This parameter + can be a value of @ref EXTI_Line */ + uint32_t Mode; /*!< The Exit Mode to be configured for a core. + This parameter can be a combination of @ref EXTI_Mode */ + uint32_t Trigger; /*!< The Exti Trigger to be configured. This parameter + can be a value of @ref EXTI_Trigger */ + uint32_t GPIOSel; /*!< The Exti GPIO multiplexer selection to be configured. + This parameter is only possible for line 0 to 15. It + can be a value of @ref EXTI_GPIOSel */ +} EXTI_ConfigTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup EXTI_Exported_Constants EXTI Exported Constants + * @{ + */ + +/** @defgroup EXTI_Line EXTI Line + * @{ + */ +#define EXTI_LINE_0 (EXTI_GPIO | 0x00u) /*!< External interrupt line 0 */ +#define EXTI_LINE_1 (EXTI_GPIO | 0x01u) /*!< External interrupt line 1 */ +#define EXTI_LINE_2 (EXTI_GPIO | 0x02u) /*!< External interrupt line 2 */ +#define EXTI_LINE_3 (EXTI_GPIO | 0x03u) /*!< External interrupt line 3 */ +#define EXTI_LINE_4 (EXTI_GPIO | 0x04u) /*!< External interrupt line 4 */ +#define EXTI_LINE_5 (EXTI_GPIO | 0x05u) /*!< External interrupt line 5 */ +#define EXTI_LINE_6 (EXTI_GPIO | 0x06u) /*!< External interrupt line 6 */ +#define EXTI_LINE_7 (EXTI_GPIO | 0x07u) /*!< External interrupt line 7 */ +#define EXTI_LINE_8 (EXTI_GPIO | 0x08u) /*!< External interrupt line 8 */ +#define EXTI_LINE_9 (EXTI_GPIO | 0x09u) /*!< External interrupt line 9 */ +#define EXTI_LINE_10 (EXTI_GPIO | 0x0Au) /*!< External interrupt line 10 */ +#define EXTI_LINE_11 (EXTI_GPIO | 0x0Bu) /*!< External interrupt line 11 */ +#define EXTI_LINE_12 (EXTI_GPIO | 0x0Cu) /*!< External interrupt line 12 */ +#define EXTI_LINE_13 (EXTI_GPIO | 0x0Du) /*!< External interrupt line 13 */ +#define EXTI_LINE_14 (EXTI_GPIO | 0x0Eu) /*!< External interrupt line 14 */ +#define EXTI_LINE_15 (EXTI_GPIO | 0x0Fu) /*!< External interrupt line 15 */ +#define EXTI_LINE_16 (EXTI_CONFIG | 0x10u) /*!< External interrupt line 16 Connected to the PVD Output */ +#define EXTI_LINE_17 (EXTI_CONFIG | 0x11u) /*!< External interrupt line 17 Connected to the RTC Alarm event */ +#define EXTI_LINE_18 (EXTI_CONFIG | 0x12u) /*!< External interrupt line 18 Connected to the USB OTG FS Wakeup from suspend event */ +#if defined(ETH) +#define EXTI_LINE_19 (EXTI_CONFIG | 0x13u) /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */ +#else +#define EXTI_LINE_19 (EXTI_RESERVED | 0x13u) /*!< No interrupt supported in this line */ +#endif /* ETH */ +#define EXTI_LINE_20 (EXTI_CONFIG | 0x14u) /*!< External interrupt line 20 Connected to the USB OTG HS (configured in FS) Wakeup event */ +#define EXTI_LINE_21 (EXTI_CONFIG | 0x15u) /*!< External interrupt line 21 Connected to the RTC Tamper and Time Stamp events */ +#define EXTI_LINE_22 (EXTI_CONFIG | 0x16u) /*!< External interrupt line 22 Connected to the RTC Wakeup event */ +#define EXTI_LINE_23 (EXTI_CONFIG | 0x17u) /*!< External interrupt line 23 Connected to the LPTIM Wakeup event */ +#if defined(EXTI_IMR_IM24) +#define EXTI_LINE_24 (EXTI_CONFIG | 0x18u) /*!< External interrupt line 24 Connected to the MDIO Slave global Interrupt Wakeup event */ +#endif /* EXTI_IMR_IM24 */ +/** + * @} + */ + +/** @defgroup EXTI_Mode EXTI Mode + * @{ + */ +#define EXTI_MODE_NONE 0x00000000u +#define EXTI_MODE_INTERRUPT 0x00000001u +#define EXTI_MODE_EVENT 0x00000002u +/** + * @} + */ + +/** @defgroup EXTI_Trigger EXTI Trigger + * @{ + */ + +#define EXTI_TRIGGER_NONE 0x00000000u +#define EXTI_TRIGGER_RISING 0x00000001u +#define EXTI_TRIGGER_FALLING 0x00000002u +#define EXTI_TRIGGER_RISING_FALLING (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING) +/** + * @} + */ + +/** @defgroup EXTI_GPIOSel EXTI GPIOSel + * @brief + * @{ + */ +#define EXTI_GPIOA 0x00000000u +#define EXTI_GPIOB 0x00000001u +#define EXTI_GPIOC 0x00000002u +#define EXTI_GPIOD 0x00000003u +#define EXTI_GPIOE 0x00000004u +#define EXTI_GPIOF 0x00000005u +#define EXTI_GPIOG 0x00000006u +#define EXTI_GPIOH 0x00000007u +#define EXTI_GPIOI 0x00000008u +#define EXTI_GPIOJ 0x00000009u +#if defined (GPIOK) +#define EXTI_GPIOK 0x0000000Au +#endif /* GPIOK */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup EXTI_Exported_Macros EXTI Exported Macros + * @{ + */ + +/** + * @} + */ + +/* Private constants --------------------------------------------------------*/ +/** @defgroup EXTI_Private_Constants EXTI Private Constants + * @{ + */ +/** + * @brief EXTI Line property definition + */ +#define EXTI_PROPERTY_SHIFT 24u +#define EXTI_CONFIG (0x02uL << EXTI_PROPERTY_SHIFT) +#define EXTI_GPIO ((0x04uL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG) +#define EXTI_RESERVED (0x08uL << EXTI_PROPERTY_SHIFT) +#define EXTI_PROPERTY_MASK (EXTI_CONFIG | EXTI_GPIO) + +/** + * @brief EXTI bit usage + */ +#define EXTI_PIN_MASK 0x0000001Fu + +/** + * @brief EXTI Mask for interrupt & event mode + */ +#define EXTI_MODE_MASK (EXTI_MODE_EVENT | EXTI_MODE_INTERRUPT) + +/** + * @brief EXTI Mask for trigger possibilities + */ +#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING) + +/** + * @brief EXTI Line number + */ +#if defined(EXTI_IMR_IM24) +#define EXTI_LINE_NB 25u +#else +#define EXTI_LINE_NB 24u +#endif /* EXTI_IMR_IM24 */ + + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup EXTI_Private_Macros EXTI Private Macros + * @{ + */ +#define IS_EXTI_LINE(__EXTI_LINE__) ((((__EXTI_LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_PIN_MASK)) == 0x00u) && \ + ((((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG) || \ + (((__EXTI_LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO)) && \ + (((__EXTI_LINE__) & EXTI_PIN_MASK) < EXTI_LINE_NB)) + +#define IS_EXTI_MODE(__EXTI_LINE__) ((((__EXTI_LINE__) & EXTI_MODE_MASK) != 0x00u) && \ + (((__EXTI_LINE__) & ~EXTI_MODE_MASK) == 0x00u)) + +#define IS_EXTI_TRIGGER(__EXTI_LINE__) (((__EXTI_LINE__) & ~EXTI_TRIGGER_MASK) == 0x00u) + +#define IS_EXTI_PENDING_EDGE(__EXTI_LINE__) (((__EXTI_LINE__) == EXTI_TRIGGER_FALLING) || \ + ((__EXTI_LINE__) == EXTI_TRIGGER_RISING) || \ + ((__EXTI_LINE__) == EXTI_TRIGGER_RISING_FALLING)) + +#define IS_EXTI_CONFIG_LINE(__EXTI_LINE__) (((__EXTI_LINE__) & EXTI_CONFIG) != 0x00u) + +#if defined (GPIOK) +#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \ + ((__PORT__) == EXTI_GPIOB) || \ + ((__PORT__) == EXTI_GPIOC) || \ + ((__PORT__) == EXTI_GPIOD) || \ + ((__PORT__) == EXTI_GPIOE) || \ + ((__PORT__) == EXTI_GPIOF) || \ + ((__PORT__) == EXTI_GPIOG) || \ + ((__PORT__) == EXTI_GPIOH) || \ + ((__PORT__) == EXTI_GPIOI) || \ + ((__PORT__) == EXTI_GPIOJ) || \ + ((__PORT__) == EXTI_GPIOK)) +#else +#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \ + ((__PORT__) == EXTI_GPIOB) || \ + ((__PORT__) == EXTI_GPIOC) || \ + ((__PORT__) == EXTI_GPIOD) || \ + ((__PORT__) == EXTI_GPIOE) || \ + ((__PORT__) == EXTI_GPIOF) || \ + ((__PORT__) == EXTI_GPIOG) || \ + ((__PORT__) == EXTI_GPIOH) || \ + ((__PORT__) == EXTI_GPIOI) || \ + ((__PORT__) == EXTI_GPIOJ)) +#endif /* GPIOK */ + +#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16U) +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup EXTI_Exported_Functions EXTI Exported Functions + * @brief EXTI Exported Functions + * @{ + */ + +/** @defgroup EXTI_Exported_Functions_Group1 Configuration functions + * @brief Configuration functions + * @{ + */ +/* Configuration functions ****************************************************/ +HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig); +HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig); +HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti); +HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void)); +HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine); +/** + * @} + */ + +/** @defgroup EXTI_Exported_Functions_Group2 IO operation functions + * @brief IO operation functions + * @{ + */ +/* IO operation functions *****************************************************/ +void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti); +uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge); +void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge); +void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F7xx_HAL_EXTI_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h new file mode 100644 index 0000000..39e859e --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h @@ -0,0 +1,415 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_flash.h + * @author MCD Application Team + * @brief Header file of FLASH HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_FLASH_H +#define __STM32F7xx_HAL_FLASH_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup FLASH + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Types FLASH Exported Types + * @{ + */ + +/** + * @brief FLASH Procedure structure definition + */ +typedef enum +{ + FLASH_PROC_NONE = 0U, + FLASH_PROC_SECTERASE, + FLASH_PROC_MASSERASE, + FLASH_PROC_PROGRAM +} FLASH_ProcedureTypeDef; + + +/** + * @brief FLASH handle Structure definition + */ +typedef struct +{ + __IO FLASH_ProcedureTypeDef ProcedureOnGoing; /* Internal variable to indicate which procedure is ongoing or not in IT context */ + + __IO uint32_t NbSectorsToErase; /* Internal variable to save the remaining sectors to erase in IT context */ + + __IO uint8_t VoltageForErase; /* Internal variable to provide voltage range selected by user in IT context */ + + __IO uint32_t Sector; /* Internal variable to define the current sector which is erasing */ + + __IO uint32_t Address; /* Internal variable to save address selected for program */ + + HAL_LockTypeDef Lock; /* FLASH locking object */ + + __IO uint32_t ErrorCode; /* FLASH error code */ + +}FLASH_ProcessTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Constants FLASH Exported Constants + * @{ + */ + +/** @defgroup FLASH_Error_Code FLASH Error Code + * @brief FLASH Error Code + * @{ + */ +#define HAL_FLASH_ERROR_NONE ((uint32_t)0x00000000U) /*!< No error */ +#define HAL_FLASH_ERROR_ERS ((uint32_t)0x00000002U) /*!< Programming Sequence error */ +#define HAL_FLASH_ERROR_PGP ((uint32_t)0x00000004U) /*!< Programming Parallelism error */ +#define HAL_FLASH_ERROR_PGA ((uint32_t)0x00000008U) /*!< Programming Alignment error */ +#define HAL_FLASH_ERROR_WRP ((uint32_t)0x00000010U) /*!< Write protection error */ +#define HAL_FLASH_ERROR_OPERATION ((uint32_t)0x00000020U) /*!< Operation Error */ +#define HAL_FLASH_ERROR_RD ((uint32_t)0x00000040U) /*!< Read Protection Error */ +/** + * @} + */ + +/** @defgroup FLASH_Type_Program FLASH Type Program + * @{ + */ +#define FLASH_TYPEPROGRAM_BYTE ((uint32_t)0x00U) /*!< Program byte (8-bit) at a specified address */ +#define FLASH_TYPEPROGRAM_HALFWORD ((uint32_t)0x01U) /*!< Program a half-word (16-bit) at a specified address */ +#define FLASH_TYPEPROGRAM_WORD ((uint32_t)0x02U) /*!< Program a word (32-bit) at a specified address */ +#define FLASH_TYPEPROGRAM_DOUBLEWORD ((uint32_t)0x03U) /*!< Program a double word (64-bit) at a specified address */ +/** + * @} + */ + +/** @defgroup FLASH_Flag_definition FLASH Flag definition + * @brief Flag definition + * @{ + */ +#define FLASH_FLAG_EOP FLASH_SR_EOP /*!< FLASH End of Operation flag */ +#define FLASH_FLAG_OPERR FLASH_SR_OPERR /*!< FLASH operation Error flag */ +#define FLASH_FLAG_WRPERR FLASH_SR_WRPERR /*!< FLASH Write protected error flag */ +#define FLASH_FLAG_PGAERR FLASH_SR_PGAERR /*!< FLASH Programming Alignment error flag */ +#define FLASH_FLAG_PGPERR FLASH_SR_PGPERR /*!< FLASH Programming Parallelism error flag */ +#define FLASH_FLAG_ERSERR FLASH_SR_ERSERR /*!< FLASH Erasing Sequence error flag */ +#define FLASH_FLAG_BSY FLASH_SR_BSY /*!< FLASH Busy flag */ + +#if defined (FLASH_OPTCR2_PCROP) +#define FLASH_FLAG_RDERR FLASH_SR_RDERR /*!< FLASH Read protection error flag */ +#define FLASH_FLAG_ALL_ERRORS (FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ + FLASH_FLAG_PGPERR | FLASH_FLAG_ERSERR | FLASH_FLAG_RDERR) +#else +#define FLASH_FLAG_ALL_ERRORS (FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ + FLASH_FLAG_PGPERR | FLASH_FLAG_ERSERR) +#endif /* FLASH_OPTCR2_PCROP */ +/** + * @} + */ + +/** @defgroup FLASH_Interrupt_definition FLASH Interrupt definition + * @brief FLASH Interrupt definition + * @{ + */ +#define FLASH_IT_EOP FLASH_CR_EOPIE /*!< End of FLASH Operation Interrupt source */ +#define FLASH_IT_ERR ((uint32_t)0x02000000U) /*!< Error Interrupt source */ +/** + * @} + */ + +/** @defgroup FLASH_Program_Parallelism FLASH Program Parallelism + * @{ + */ +#define FLASH_PSIZE_BYTE ((uint32_t)0x00000000U) +#define FLASH_PSIZE_HALF_WORD ((uint32_t)FLASH_CR_PSIZE_0) +#define FLASH_PSIZE_WORD ((uint32_t)FLASH_CR_PSIZE_1) +#define FLASH_PSIZE_DOUBLE_WORD ((uint32_t)FLASH_CR_PSIZE) +#define CR_PSIZE_MASK ((uint32_t)0xFFFFFCFFU) +/** + * @} + */ + +/** @defgroup FLASH_Keys FLASH Keys + * @{ + */ +#define FLASH_KEY1 ((uint32_t)0x45670123U) +#define FLASH_KEY2 ((uint32_t)0xCDEF89ABU) +#define FLASH_OPT_KEY1 ((uint32_t)0x08192A3BU) +#define FLASH_OPT_KEY2 ((uint32_t)0x4C5D6E7FU) +/** + * @} + */ + +/** @defgroup FLASH_Sectors FLASH Sectors + * @{ + */ +#if (FLASH_SECTOR_TOTAL == 2) +#define FLASH_SECTOR_0 ((uint32_t)0U) /*!< Sector Number 0 */ +#define FLASH_SECTOR_1 ((uint32_t)1U) /*!< Sector Number 1 */ +#elif (FLASH_SECTOR_TOTAL == 4) +#define FLASH_SECTOR_0 ((uint32_t)0U) /*!< Sector Number 0 */ +#define FLASH_SECTOR_1 ((uint32_t)1U) /*!< Sector Number 1 */ +#define FLASH_SECTOR_2 ((uint32_t)2U) /*!< Sector Number 2 */ +#define FLASH_SECTOR_3 ((uint32_t)3U) /*!< Sector Number 3 */ +#else +#define FLASH_SECTOR_0 ((uint32_t)0U) /*!< Sector Number 0 */ +#define FLASH_SECTOR_1 ((uint32_t)1U) /*!< Sector Number 1 */ +#define FLASH_SECTOR_2 ((uint32_t)2U) /*!< Sector Number 2 */ +#define FLASH_SECTOR_3 ((uint32_t)3U) /*!< Sector Number 3 */ +#define FLASH_SECTOR_4 ((uint32_t)4U) /*!< Sector Number 4 */ +#define FLASH_SECTOR_5 ((uint32_t)5U) /*!< Sector Number 5 */ +#define FLASH_SECTOR_6 ((uint32_t)6U) /*!< Sector Number 6 */ +#define FLASH_SECTOR_7 ((uint32_t)7U) /*!< Sector Number 7 */ +#endif /* FLASH_SECTOR_TOTAL */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Macros FLASH Exported Macros + * @{ + */ +/** + * @brief Set the FLASH Latency. + * @param __LATENCY__ FLASH Latency + * The value of this parameter depend on device used within the same series + * @retval none + */ +#define __HAL_FLASH_SET_LATENCY(__LATENCY__) \ + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(__LATENCY__)) + +/** + * @brief Get the FLASH Latency. + * @retval FLASH Latency + * The value of this parameter depend on device used within the same series + */ +#define __HAL_FLASH_GET_LATENCY() (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY)) + +/** + * @brief Enable the FLASH prefetch buffer. + * @retval none + */ +#define __HAL_FLASH_PREFETCH_BUFFER_ENABLE() (FLASH->ACR |= FLASH_ACR_PRFTEN) + +/** + * @brief Disable the FLASH prefetch buffer. + * @retval none + */ +#define __HAL_FLASH_PREFETCH_BUFFER_DISABLE() (FLASH->ACR &= (~FLASH_ACR_PRFTEN)) + +/** + * @brief Enable the FLASH Adaptive Real-Time memory accelerator. + * @note The ART accelerator is available only for flash access on ITCM interface. + * @retval none + */ +#define __HAL_FLASH_ART_ENABLE() SET_BIT(FLASH->ACR, FLASH_ACR_ARTEN) + +/** + * @brief Disable the FLASH Adaptive Real-Time memory accelerator. + * @retval none + */ +#define __HAL_FLASH_ART_DISABLE() CLEAR_BIT(FLASH->ACR, FLASH_ACR_ARTEN) + +/** + * @brief Resets the FLASH Adaptive Real-Time memory accelerator. + * @note This function must be used only when the Adaptive Real-Time memory accelerator + * is disabled. + * @retval None + */ +#define __HAL_FLASH_ART_RESET() (FLASH->ACR |= FLASH_ACR_ARTRST) + +/** + * @brief Enable the specified FLASH interrupt. + * @param __INTERRUPT__ FLASH interrupt + * This parameter can be any combination of the following values: + * @arg FLASH_IT_EOP: End of FLASH Operation Interrupt + * @arg FLASH_IT_ERR: Error Interrupt + * @retval none + */ +#define __HAL_FLASH_ENABLE_IT(__INTERRUPT__) (FLASH->CR |= (__INTERRUPT__)) + +/** + * @brief Disable the specified FLASH interrupt. + * @param __INTERRUPT__ FLASH interrupt + * This parameter can be any combination of the following values: + * @arg FLASH_IT_EOP: End of FLASH Operation Interrupt + * @arg FLASH_IT_ERR: Error Interrupt + * @retval none + */ +#define __HAL_FLASH_DISABLE_IT(__INTERRUPT__) (FLASH->CR &= ~(uint32_t)(__INTERRUPT__)) + +/** + * @brief Get the specified FLASH flag status. + * @param __FLAG__ specifies the FLASH flag to check. + * This parameter can be one of the following values: + * @arg FLASH_FLAG_EOP : FLASH End of Operation flag + * @arg FLASH_FLAG_OPERR : FLASH operation Error flag + * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag + * @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag + * @arg FLASH_FLAG_PGPERR: FLASH Programming Parallelism error flag + * @arg FLASH_FLAG_ERSERR : FLASH Erasing Sequence error flag + * @arg FLASH_FLAG_BSY : FLASH Busy flag + * @retval The new state of __FLAG__ (SET or RESET). + */ +#define __HAL_FLASH_GET_FLAG(__FLAG__) ((FLASH->SR & (__FLAG__))) + +/** + * @brief Clear the specified FLASH flag. + * @param __FLAG__ specifies the FLASH flags to clear. + * This parameter can be any combination of the following values: + * @arg FLASH_FLAG_EOP : FLASH End of Operation flag + * @arg FLASH_FLAG_OPERR : FLASH operation Error flag + * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag + * @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag + * @arg FLASH_FLAG_PGPERR: FLASH Programming Parallelism error flag + * @arg FLASH_FLAG_ERSERR : FLASH Erasing Sequence error flag + * @retval none + */ +#define __HAL_FLASH_CLEAR_FLAG(__FLAG__) (FLASH->SR = (__FLAG__)) +/** + * @} + */ + +/* Include FLASH HAL Extension module */ +#include "stm32f7xx_hal_flash_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup FLASH_Exported_Functions + * @{ + */ +/** @addtogroup FLASH_Exported_Functions_Group1 + * @{ + */ +/* Program operation functions ***********************************************/ +HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data); +HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data); +/* FLASH IRQ handler method */ +void HAL_FLASH_IRQHandler(void); +/* Callbacks in non blocking modes */ +void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue); +void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue); +/** + * @} + */ + +/** @addtogroup FLASH_Exported_Functions_Group2 + * @{ + */ +/* Peripheral Control functions **********************************************/ +HAL_StatusTypeDef HAL_FLASH_Unlock(void); +HAL_StatusTypeDef HAL_FLASH_Lock(void); +HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void); +HAL_StatusTypeDef HAL_FLASH_OB_Lock(void); +/* Option bytes control */ +HAL_StatusTypeDef HAL_FLASH_OB_Launch(void); +/** + * @} + */ + +/** @addtogroup FLASH_Exported_Functions_Group3 + * @{ + */ +/* Peripheral State functions ************************************************/ +uint32_t HAL_FLASH_GetError(void); +HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); +/** + * @} + */ + +/** + * @} + */ +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup FLASH_Private_Variables FLASH Private Variables + * @{ + */ + +/** + * @} + */ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup FLASH_Private_Constants FLASH Private Constants + * @{ + */ + +/** + * @brief OPTCR register byte 1 (Bits[15:8]) base address + */ +#define OPTCR_BYTE1_ADDRESS ((uint32_t)0x40023C15) + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup FLASH_Private_Macros FLASH Private Macros + * @{ + */ + +/** @defgroup FLASH_IS_FLASH_Definitions FLASH Private macros to check input parameters + * @{ + */ +#define IS_FLASH_TYPEPROGRAM(VALUE)(((VALUE) == FLASH_TYPEPROGRAM_BYTE) || \ + ((VALUE) == FLASH_TYPEPROGRAM_HALFWORD) || \ + ((VALUE) == FLASH_TYPEPROGRAM_WORD) || \ + ((VALUE) == FLASH_TYPEPROGRAM_DOUBLEWORD)) +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup FLASH_Private_Functions FLASH Private Functions + * @{ + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_FLASH_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h new file mode 100644 index 0000000..6ec226a --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h @@ -0,0 +1,697 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_flash_ex.h + * @author MCD Application Team + * @brief Header file of FLASH HAL Extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_FLASH_EX_H +#define __STM32F7xx_HAL_FLASH_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup FLASHEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup FLASHEx_Exported_Types FLASH Exported Types + * @{ + */ + +/** + * @brief FLASH Erase structure definition + */ +typedef struct +{ + uint32_t TypeErase; /*!< Mass erase or sector Erase. + This parameter can be a value of @ref FLASHEx_Type_Erase */ + +#if defined (FLASH_OPTCR_nDBANK) + uint32_t Banks; /*!< Select banks to erase when Mass erase is enabled. + This parameter must be a value of @ref FLASHEx_Banks */ +#endif /* FLASH_OPTCR_nDBANK */ + + uint32_t Sector; /*!< Initial FLASH sector to erase when Mass erase is disabled + This parameter must be a value of @ref FLASHEx_Sectors */ + + uint32_t NbSectors; /*!< Number of sectors to be erased. + This parameter must be a value between 1 and (max number of sectors - value of Initial sector)*/ + + uint32_t VoltageRange;/*!< The device voltage range which defines the erase parallelism + This parameter must be a value of @ref FLASHEx_Voltage_Range */ + +} FLASH_EraseInitTypeDef; + +/** + * @brief FLASH Option Bytes Program structure definition + */ +typedef struct +{ + uint32_t OptionType; /*!< Option byte to be configured. + This parameter can be a value of @ref FLASHEx_Option_Type */ + + uint32_t WRPState; /*!< Write protection activation or deactivation. + This parameter can be a value of @ref FLASHEx_WRP_State */ + + uint32_t WRPSector; /*!< Specifies the sector(s) to be write protected. + The value of this parameter depend on device used within the same series */ + + uint32_t RDPLevel; /*!< Set the read protection level. + This parameter can be a value of @ref FLASHEx_Option_Bytes_Read_Protection */ + + uint32_t BORLevel; /*!< Set the BOR Level. + This parameter can be a value of @ref FLASHEx_BOR_Reset_Level */ + + uint32_t USERConfig; /*!< Program the FLASH User Option Byte: WWDG_SW / IWDG_SW / RST_STOP / RST_STDBY / + IWDG_FREEZE_STOP / IWDG_FREEZE_SANDBY / nDBANK / nDBOOT. + nDBANK / nDBOOT are only available for STM32F76xxx/STM32F77xxx devices */ + + uint32_t BootAddr0; /*!< Boot base address when Boot pin = 0. + This parameter can be a value of @ref FLASHEx_Boot_Address */ + + uint32_t BootAddr1; /*!< Boot base address when Boot pin = 1. + This parameter can be a value of @ref FLASHEx_Boot_Address */ + +#if defined (FLASH_OPTCR2_PCROP) + uint32_t PCROPSector; /*!< Set the PCROP sector. + This parameter can be a value of @ref FLASHEx_Option_Bytes_PCROP_Sectors */ + + uint32_t PCROPRdp; /*!< Set the PCROP_RDP option. + This parameter can be a value of @ref FLASHEx_Option_Bytes_PCROP_RDP */ +#endif /* FLASH_OPTCR2_PCROP */ + +} FLASH_OBProgramInitTypeDef; + +/** + * @} + */ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup FLASHEx_Exported_Constants FLASH Exported Constants + * @{ + */ + +/** @defgroup FLASHEx_Type_Erase FLASH Type Erase + * @{ + */ +#define FLASH_TYPEERASE_SECTORS ((uint32_t)0x00U) /*!< Sectors erase only */ +#define FLASH_TYPEERASE_MASSERASE ((uint32_t)0x01U) /*!< Flash Mass erase activation */ +/** + * @} + */ + +/** @defgroup FLASHEx_Voltage_Range FLASH Voltage Range + * @{ + */ +#define FLASH_VOLTAGE_RANGE_1 ((uint32_t)0x00U) /*!< Device operating range: 1.8V to 2.1V */ +#define FLASH_VOLTAGE_RANGE_2 ((uint32_t)0x01U) /*!< Device operating range: 2.1V to 2.7V */ +#define FLASH_VOLTAGE_RANGE_3 ((uint32_t)0x02U) /*!< Device operating range: 2.7V to 3.6V */ +#define FLASH_VOLTAGE_RANGE_4 ((uint32_t)0x03U) /*!< Device operating range: 2.7V to 3.6V + External Vpp */ +/** + * @} + */ + +/** @defgroup FLASHEx_WRP_State FLASH WRP State + * @{ + */ +#define OB_WRPSTATE_DISABLE ((uint32_t)0x00U) /*!< Disable the write protection of the desired bank 1 sectors */ +#define OB_WRPSTATE_ENABLE ((uint32_t)0x01U) /*!< Enable the write protection of the desired bank 1 sectors */ +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Type FLASH Option Type + * @{ + */ +#define OPTIONBYTE_WRP ((uint32_t)0x01U) /*!< WRP option byte configuration */ +#define OPTIONBYTE_RDP ((uint32_t)0x02U) /*!< RDP option byte configuration */ +#define OPTIONBYTE_USER ((uint32_t)0x04U) /*!< USER option byte configuration */ +#define OPTIONBYTE_BOR ((uint32_t)0x08U) /*!< BOR option byte configuration */ +#define OPTIONBYTE_BOOTADDR_0 ((uint32_t)0x10U) /*!< Boot 0 Address configuration */ +#define OPTIONBYTE_BOOTADDR_1 ((uint32_t)0x20U) /*!< Boot 1 Address configuration */ +#if defined (FLASH_OPTCR2_PCROP) +#define OPTIONBYTE_PCROP ((uint32_t)0x40U) /*!< PCROP configuration */ +#define OPTIONBYTE_PCROP_RDP ((uint32_t)0x80U) /*!< PCROP_RDP configuration */ +#endif /* FLASH_OPTCR2_PCROP */ +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Bytes_Read_Protection FLASH Option Bytes Read Protection + * @{ + */ +#define OB_RDP_LEVEL_0 ((uint8_t)0xAAU) +#define OB_RDP_LEVEL_1 ((uint8_t)0x55U) +#define OB_RDP_LEVEL_2 ((uint8_t)0xCCU) /*!< Warning: When enabling read protection level 2 + it s no more possible to go back to level 1 or 0 */ +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Bytes_WWatchdog FLASH Option Bytes WWatchdog + * @{ + */ +#define OB_WWDG_SW ((uint32_t)0x10U) /*!< Software WWDG selected */ +#define OB_WWDG_HW ((uint32_t)0x00U) /*!< Hardware WWDG selected */ +/** + * @} + */ + + +/** @defgroup FLASHEx_Option_Bytes_IWatchdog FLASH Option Bytes IWatchdog + * @{ + */ +#define OB_IWDG_SW ((uint32_t)0x20U) /*!< Software IWDG selected */ +#define OB_IWDG_HW ((uint32_t)0x00U) /*!< Hardware IWDG selected */ +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Bytes_nRST_STOP FLASH Option Bytes nRST_STOP + * @{ + */ +#define OB_STOP_NO_RST ((uint32_t)0x40U) /*!< No reset generated when entering in STOP */ +#define OB_STOP_RST ((uint32_t)0x00U) /*!< Reset generated when entering in STOP */ +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Bytes_nRST_STDBY FLASH Option Bytes nRST_STDBY + * @{ + */ +#define OB_STDBY_NO_RST ((uint32_t)0x80U) /*!< No reset generated when entering in STANDBY */ +#define OB_STDBY_RST ((uint32_t)0x00U) /*!< Reset generated when entering in STANDBY */ +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Bytes_IWDG_FREEZE_STOP FLASH IWDG Counter Freeze in STOP + * @{ + */ +#define OB_IWDG_STOP_FREEZE ((uint32_t)0x00000000U) /*!< Freeze IWDG counter in STOP mode */ +#define OB_IWDG_STOP_ACTIVE ((uint32_t)0x80000000U) /*!< IWDG counter active in STOP mode */ +/** + * @} + */ + +/** @defgroup FLASHEx_Option_Bytes_IWDG_FREEZE_SANDBY FLASH IWDG Counter Freeze in STANDBY + * @{ + */ +#define OB_IWDG_STDBY_FREEZE ((uint32_t)0x00000000U) /*!< Freeze IWDG counter in STANDBY mode */ +#define OB_IWDG_STDBY_ACTIVE ((uint32_t)0x40000000U) /*!< IWDG counter active in STANDBY mode */ +/** + * @} + */ + +/** @defgroup FLASHEx_BOR_Reset_Level FLASH BOR Reset Level + * @{ + */ +#define OB_BOR_LEVEL3 ((uint32_t)0x00U) /*!< Supply voltage ranges from 2.70 to 3.60 V */ +#define OB_BOR_LEVEL2 ((uint32_t)0x04U) /*!< Supply voltage ranges from 2.40 to 2.70 V */ +#define OB_BOR_LEVEL1 ((uint32_t)0x08U) /*!< Supply voltage ranges from 2.10 to 2.40 V */ +#define OB_BOR_OFF ((uint32_t)0x0CU) /*!< Supply voltage ranges from 1.62 to 2.10 V */ +/** + * @} + */ + +#if defined (FLASH_OPTCR_nDBOOT) +/** @defgroup FLASHEx_Option_Bytes_nDBOOT FLASH Option Bytes nDBOOT + * @{ + */ +#define OB_DUAL_BOOT_DISABLE ((uint32_t)0x10000000U) /* !< Dual Boot disable. Boot according to boot address option */ +#define OB_DUAL_BOOT_ENABLE ((uint32_t)0x00000000U) /* !< Dual Boot enable. Boot always from system memory if boot address in flash + (Dual bank Boot mode), or RAM if Boot address option in RAM */ +/** + * @} + */ +#endif /* FLASH_OPTCR_nDBOOT */ + +#if defined (FLASH_OPTCR_nDBANK) +/** @defgroup FLASHEx_Option_Bytes_nDBank FLASH Single Bank or Dual Bank + * @{ + */ +#define OB_NDBANK_SINGLE_BANK ((uint32_t)0x20000000U) /*!< NDBANK bit is set : Single Bank mode */ +#define OB_NDBANK_DUAL_BANK ((uint32_t)0x00000000U) /*!< NDBANK bit is reset : Dual Bank mode */ +/** + * @} + */ +#endif /* FLASH_OPTCR_nDBANK */ + +/** @defgroup FLASHEx_Boot_Address FLASH Boot Address + * @{ + */ +#define OB_BOOTADDR_ITCM_RAM ((uint32_t)0x0000U) /*!< Boot from ITCM RAM (0x00000000) */ +#define OB_BOOTADDR_SYSTEM ((uint32_t)0x0040U) /*!< Boot from System memory bootloader (0x00100000) */ +#define OB_BOOTADDR_ITCM_FLASH ((uint32_t)0x0080U) /*!< Boot from Flash on ITCM interface (0x00200000) */ +#define OB_BOOTADDR_AXIM_FLASH ((uint32_t)0x2000U) /*!< Boot from Flash on AXIM interface (0x08000000) */ +#define OB_BOOTADDR_DTCM_RAM ((uint32_t)0x8000U) /*!< Boot from DTCM RAM (0x20000000) */ +#define OB_BOOTADDR_SRAM1 ((uint32_t)0x8004U) /*!< Boot from SRAM1 (0x20010000) */ +#if (SRAM2_BASE == 0x2003C000U) +#define OB_BOOTADDR_SRAM2 ((uint32_t)0x800FU) /*!< Boot from SRAM2 (0x2003C000) */ +#else +#define OB_BOOTADDR_SRAM2 ((uint32_t)0x8013U) /*!< Boot from SRAM2 (0x2004C000) */ +#endif /* SRAM2_BASE == 0x2003C000U */ +/** + * @} + */ + +/** @defgroup FLASH_Latency FLASH Latency + * @{ + */ +#define FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH Zero Latency cycle */ +#define FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH One Latency cycle */ +#define FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH Two Latency cycles */ +#define FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH Three Latency cycles */ +#define FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH Four Latency cycles */ +#define FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH Five Latency cycles */ +#define FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH Six Latency cycles */ +#define FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH Seven Latency cycles */ +#define FLASH_LATENCY_8 FLASH_ACR_LATENCY_8WS /*!< FLASH Eight Latency cycles */ +#define FLASH_LATENCY_9 FLASH_ACR_LATENCY_9WS /*!< FLASH Nine Latency cycles */ +#define FLASH_LATENCY_10 FLASH_ACR_LATENCY_10WS /*!< FLASH Ten Latency cycles */ +#define FLASH_LATENCY_11 FLASH_ACR_LATENCY_11WS /*!< FLASH Eleven Latency cycles */ +#define FLASH_LATENCY_12 FLASH_ACR_LATENCY_12WS /*!< FLASH Twelve Latency cycles */ +#define FLASH_LATENCY_13 FLASH_ACR_LATENCY_13WS /*!< FLASH Thirteen Latency cycles */ +#define FLASH_LATENCY_14 FLASH_ACR_LATENCY_14WS /*!< FLASH Fourteen Latency cycles */ +#define FLASH_LATENCY_15 FLASH_ACR_LATENCY_15WS /*!< FLASH Fifteen Latency cycles */ +/** + * @} + */ + +#if defined (FLASH_OPTCR_nDBANK) +/** @defgroup FLASHEx_Banks FLASH Banks + * @{ + */ +#define FLASH_BANK_1 ((uint32_t)0x01U) /*!< Bank 1 */ +#define FLASH_BANK_2 ((uint32_t)0x02U) /*!< Bank 2 */ +#define FLASH_BANK_BOTH ((uint32_t)(FLASH_BANK_1 | FLASH_BANK_2)) /*!< Bank1 and Bank2 */ +/** + * @} + */ +#endif /* FLASH_OPTCR_nDBANK */ + +/** @defgroup FLASHEx_MassErase_bit FLASH Mass Erase bit + * @{ + */ +#if defined (FLASH_OPTCR_nDBANK) +#define FLASH_MER_BIT (FLASH_CR_MER1 | FLASH_CR_MER2) /*!< 2 MER bits */ +#else +#define FLASH_MER_BIT (FLASH_CR_MER) /*!< only 1 MER bit */ +#endif /* FLASH_OPTCR_nDBANK */ +/** + * @} + */ + +/** @defgroup FLASHEx_Sectors FLASH Sectors + * @{ + */ +#if (FLASH_SECTOR_TOTAL == 24) +#define FLASH_SECTOR_8 ((uint32_t)8U) /*!< Sector Number 8 */ +#define FLASH_SECTOR_9 ((uint32_t)9U) /*!< Sector Number 9 */ +#define FLASH_SECTOR_10 ((uint32_t)10U) /*!< Sector Number 10 */ +#define FLASH_SECTOR_11 ((uint32_t)11U) /*!< Sector Number 11 */ +#define FLASH_SECTOR_12 ((uint32_t)12U) /*!< Sector Number 12 */ +#define FLASH_SECTOR_13 ((uint32_t)13U) /*!< Sector Number 13 */ +#define FLASH_SECTOR_14 ((uint32_t)14U) /*!< Sector Number 14 */ +#define FLASH_SECTOR_15 ((uint32_t)15U) /*!< Sector Number 15 */ +#define FLASH_SECTOR_16 ((uint32_t)16U) /*!< Sector Number 16 */ +#define FLASH_SECTOR_17 ((uint32_t)17U) /*!< Sector Number 17 */ +#define FLASH_SECTOR_18 ((uint32_t)18U) /*!< Sector Number 18 */ +#define FLASH_SECTOR_19 ((uint32_t)19U) /*!< Sector Number 19 */ +#define FLASH_SECTOR_20 ((uint32_t)20U) /*!< Sector Number 20 */ +#define FLASH_SECTOR_21 ((uint32_t)21U) /*!< Sector Number 21 */ +#define FLASH_SECTOR_22 ((uint32_t)22U) /*!< Sector Number 22 */ +#define FLASH_SECTOR_23 ((uint32_t)23U) /*!< Sector Number 23 */ +#endif /* FLASH_SECTOR_TOTAL == 24 */ +/** + * @} + */ + +#if (FLASH_SECTOR_TOTAL == 24) +/** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection + * @note For Single Bank mode, use OB_WRP_SECTOR_x defines: In fact, in FLASH_OPTCR register, + * nWRP[11:0] bits contain the value of the write-protection option bytes for sectors 0 to 11. + * For Dual Bank mode, use OB_WRP_DB_SECTOR_x defines: In fact, in FLASH_OPTCR register, + * nWRP[11:0] bits are divided on two groups, one group dedicated for bank 1 and + * a second one dedicated for bank 2 (nWRP[i] activates Write protection on sector 2*i and 2*i+1). + * This behavior is applicable only for STM32F76xxx / STM32F77xxx devices. + * @{ + */ +/* Single Bank Sectors */ +#define OB_WRP_SECTOR_0 ((uint32_t)0x00010000U) /*!< Write protection of Single Bank Sector0 */ +#define OB_WRP_SECTOR_1 ((uint32_t)0x00020000U) /*!< Write protection of Single Bank Sector1 */ +#define OB_WRP_SECTOR_2 ((uint32_t)0x00040000U) /*!< Write protection of Single Bank Sector2 */ +#define OB_WRP_SECTOR_3 ((uint32_t)0x00080000U) /*!< Write protection of Single Bank Sector3 */ +#define OB_WRP_SECTOR_4 ((uint32_t)0x00100000U) /*!< Write protection of Single Bank Sector4 */ +#define OB_WRP_SECTOR_5 ((uint32_t)0x00200000U) /*!< Write protection of Single Bank Sector5 */ +#define OB_WRP_SECTOR_6 ((uint32_t)0x00400000U) /*!< Write protection of Single Bank Sector6 */ +#define OB_WRP_SECTOR_7 ((uint32_t)0x00800000U) /*!< Write protection of Single Bank Sector7 */ +#define OB_WRP_SECTOR_8 ((uint32_t)0x01000000U) /*!< Write protection of Single Bank Sector8 */ +#define OB_WRP_SECTOR_9 ((uint32_t)0x02000000U) /*!< Write protection of Single Bank Sector9 */ +#define OB_WRP_SECTOR_10 ((uint32_t)0x04000000U) /*!< Write protection of Single Bank Sector10 */ +#define OB_WRP_SECTOR_11 ((uint32_t)0x08000000U) /*!< Write protection of Single Bank Sector11 */ +#define OB_WRP_SECTOR_All ((uint32_t)0x0FFF0000U) /*!< Write protection of all Sectors for Single Bank Flash */ + +/* Dual Bank Sectors */ +#define OB_WRP_DB_SECTOR_0 ((uint32_t)0x00010000U) /*!< Write protection of Dual Bank Sector0 */ +#define OB_WRP_DB_SECTOR_1 ((uint32_t)0x00010000U) /*!< Write protection of Dual Bank Sector1 */ +#define OB_WRP_DB_SECTOR_2 ((uint32_t)0x00020000U) /*!< Write protection of Dual Bank Sector2 */ +#define OB_WRP_DB_SECTOR_3 ((uint32_t)0x00020000U) /*!< Write protection of Dual Bank Sector3 */ +#define OB_WRP_DB_SECTOR_4 ((uint32_t)0x00040000U) /*!< Write protection of Dual Bank Sector4 */ +#define OB_WRP_DB_SECTOR_5 ((uint32_t)0x00040000U) /*!< Write protection of Dual Bank Sector5 */ +#define OB_WRP_DB_SECTOR_6 ((uint32_t)0x00080000U) /*!< Write protection of Dual Bank Sector6 */ +#define OB_WRP_DB_SECTOR_7 ((uint32_t)0x00080000U) /*!< Write protection of Dual Bank Sector7 */ +#define OB_WRP_DB_SECTOR_8 ((uint32_t)0x00100000U) /*!< Write protection of Dual Bank Sector8 */ +#define OB_WRP_DB_SECTOR_9 ((uint32_t)0x00100000U) /*!< Write protection of Dual Bank Sector9 */ +#define OB_WRP_DB_SECTOR_10 ((uint32_t)0x00200000U) /*!< Write protection of Dual Bank Sector10 */ +#define OB_WRP_DB_SECTOR_11 ((uint32_t)0x00200000U) /*!< Write protection of Dual Bank Sector11 */ +#define OB_WRP_DB_SECTOR_12 ((uint32_t)0x00400000U) /*!< Write protection of Dual Bank Sector12 */ +#define OB_WRP_DB_SECTOR_13 ((uint32_t)0x00400000U) /*!< Write protection of Dual Bank Sector13 */ +#define OB_WRP_DB_SECTOR_14 ((uint32_t)0x00800000U) /*!< Write protection of Dual Bank Sector14 */ +#define OB_WRP_DB_SECTOR_15 ((uint32_t)0x00800000U) /*!< Write protection of Dual Bank Sector15 */ +#define OB_WRP_DB_SECTOR_16 ((uint32_t)0x01000000U) /*!< Write protection of Dual Bank Sector16 */ +#define OB_WRP_DB_SECTOR_17 ((uint32_t)0x01000000U) /*!< Write protection of Dual Bank Sector17 */ +#define OB_WRP_DB_SECTOR_18 ((uint32_t)0x02000000U) /*!< Write protection of Dual Bank Sector18 */ +#define OB_WRP_DB_SECTOR_19 ((uint32_t)0x02000000U) /*!< Write protection of Dual Bank Sector19 */ +#define OB_WRP_DB_SECTOR_20 ((uint32_t)0x04000000U) /*!< Write protection of Dual Bank Sector20 */ +#define OB_WRP_DB_SECTOR_21 ((uint32_t)0x04000000U) /*!< Write protection of Dual Bank Sector21 */ +#define OB_WRP_DB_SECTOR_22 ((uint32_t)0x08000000U) /*!< Write protection of Dual Bank Sector22 */ +#define OB_WRP_DB_SECTOR_23 ((uint32_t)0x08000000U) /*!< Write protection of Dual Bank Sector23 */ +#define OB_WRP_DB_SECTOR_All ((uint32_t)0x0FFF0000U) /*!< Write protection of all Sectors for Dual Bank Flash */ +/** + * @} + */ +#endif /* FLASH_SECTOR_TOTAL == 24 */ + +#if (FLASH_SECTOR_TOTAL == 8) +/** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection + * @{ + */ +#define OB_WRP_SECTOR_0 ((uint32_t)0x00010000U) /*!< Write protection of Sector0 */ +#define OB_WRP_SECTOR_1 ((uint32_t)0x00020000U) /*!< Write protection of Sector1 */ +#define OB_WRP_SECTOR_2 ((uint32_t)0x00040000U) /*!< Write protection of Sector2 */ +#define OB_WRP_SECTOR_3 ((uint32_t)0x00080000U) /*!< Write protection of Sector3 */ +#define OB_WRP_SECTOR_4 ((uint32_t)0x00100000U) /*!< Write protection of Sector4 */ +#define OB_WRP_SECTOR_5 ((uint32_t)0x00200000U) /*!< Write protection of Sector5 */ +#define OB_WRP_SECTOR_6 ((uint32_t)0x00400000U) /*!< Write protection of Sector6 */ +#define OB_WRP_SECTOR_7 ((uint32_t)0x00800000U) /*!< Write protection of Sector7 */ +#define OB_WRP_SECTOR_All ((uint32_t)0x00FF0000U) /*!< Write protection of all Sectors */ +/** + * @} + */ +#endif /* FLASH_SECTOR_TOTAL == 8 */ + +#if (FLASH_SECTOR_TOTAL == 4) +/** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection + * @{ + */ +#define OB_WRP_SECTOR_0 ((uint32_t)0x00010000U) /*!< Write protection of Sector0 */ +#define OB_WRP_SECTOR_1 ((uint32_t)0x00020000U) /*!< Write protection of Sector1 */ +#define OB_WRP_SECTOR_2 ((uint32_t)0x00040000U) /*!< Write protection of Sector2 */ +#define OB_WRP_SECTOR_3 ((uint32_t)0x00080000U) /*!< Write protection of Sector3 */ +#define OB_WRP_SECTOR_All ((uint32_t)0x000F0000U) /*!< Write protection of all Sectors */ +/** + * @} + */ +#endif /* FLASH_SECTOR_TOTAL == 4 */ + +#if (FLASH_SECTOR_TOTAL == 2) +/** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection + * @{ + */ +#define OB_WRP_SECTOR_0 ((uint32_t)0x00010000U) /*!< Write protection of Sector0 */ +#define OB_WRP_SECTOR_1 ((uint32_t)0x00020000U) /*!< Write protection of Sector1 */ +#define OB_WRP_SECTOR_All ((uint32_t)0x00030000U) /*!< Write protection of all Sectors */ +/** + * @} + */ +#endif /* FLASH_SECTOR_TOTAL == 2 */ + +#if defined (FLASH_OPTCR2_PCROP) +#if (FLASH_SECTOR_TOTAL == 8) +/** @defgroup FLASHEx_Option_Bytes_PCROP_Sectors FLASH Option Bytes PCROP Sectors + * @{ + */ +#define OB_PCROP_SECTOR_0 ((uint32_t)0x00000001U) /*!< PC Readout protection of Sector0 */ +#define OB_PCROP_SECTOR_1 ((uint32_t)0x00000002U) /*!< PC Readout protection of Sector1 */ +#define OB_PCROP_SECTOR_2 ((uint32_t)0x00000004U) /*!< PC Readout protection of Sector2 */ +#define OB_PCROP_SECTOR_3 ((uint32_t)0x00000008U) /*!< PC Readout protection of Sector3 */ +#define OB_PCROP_SECTOR_4 ((uint32_t)0x00000010U) /*!< PC Readout protection of Sector4 */ +#define OB_PCROP_SECTOR_5 ((uint32_t)0x00000020U) /*!< PC Readout protection of Sector5 */ +#define OB_PCROP_SECTOR_6 ((uint32_t)0x00000040U) /*!< PC Readout protection of Sector6 */ +#define OB_PCROP_SECTOR_7 ((uint32_t)0x00000080U) /*!< PC Readout protection of Sector7 */ +#define OB_PCROP_SECTOR_All ((uint32_t)0x000000FFU) /*!< PC Readout protection of all Sectors */ +/** + * @} + */ +#endif /* FLASH_SECTOR_TOTAL == 8 */ + +#if (FLASH_SECTOR_TOTAL == 4) +/** @defgroup FLASHEx_Option_Bytes_PCROP_Sectors FLASH Option Bytes PCROP Sectors + * @{ + */ +#define OB_PCROP_SECTOR_0 ((uint32_t)0x00000001U) /*!< PC Readout protection of Sector0 */ +#define OB_PCROP_SECTOR_1 ((uint32_t)0x00000002U) /*!< PC Readout protection of Sector1 */ +#define OB_PCROP_SECTOR_2 ((uint32_t)0x00000004U) /*!< PC Readout protection of Sector2 */ +#define OB_PCROP_SECTOR_3 ((uint32_t)0x00000008U) /*!< PC Readout protection of Sector3 */ +#define OB_PCROP_SECTOR_All ((uint32_t)0x0000000FU) /*!< PC Readout protection of all Sectors */ +/** + * @} + */ +#endif /* FLASH_SECTOR_TOTAL == 4 */ + +/** @defgroup FLASHEx_Option_Bytes_PCROP_RDP FLASH Option Bytes PCROP_RDP Bit + * @{ + */ +#define OB_PCROP_RDP_ENABLE ((uint32_t)0x80000000U) /*!< PCROP_RDP Enable */ +#define OB_PCROP_RDP_DISABLE ((uint32_t)0x00000000U) /*!< PCROP_RDP Disable */ +/** + * @} + */ +#endif /* FLASH_OPTCR2_PCROP */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Macros FLASH Exported Macros + * @{ + */ +/** + * @brief Calculate the FLASH Boot Base Address (BOOT_ADD0 or BOOT_ADD1) + * @note Returned value BOOT_ADDx[15:0] corresponds to boot address [29:14]. + * @param __ADDRESS__ FLASH Boot Address (in the range 0x0000 0000 to 0x2004 FFFF with a granularity of 16KB) + * @retval The FLASH Boot Base Address + */ +#define __HAL_FLASH_CALC_BOOT_BASE_ADR(__ADDRESS__) ((__ADDRESS__) >> 14) + /** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup FLASHEx_Exported_Functions + * @{ + */ + +/** @addtogroup FLASHEx_Exported_Functions_Group1 + * @{ + */ +/* Extension Program operation functions *************************************/ +HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError); +HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit); +HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit); +void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit); + +/** + * @} + */ + +/** + * @} + */ +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @defgroup FLASHEx_Private_Macros FLASH Private Macros + * @{ + */ + +/** @defgroup FLASHEx_IS_FLASH_Definitions FLASH Private macros to check input parameters + * @{ + */ + +#define IS_FLASH_TYPEERASE(VALUE)(((VALUE) == FLASH_TYPEERASE_SECTORS) || \ + ((VALUE) == FLASH_TYPEERASE_MASSERASE)) + +#define IS_VOLTAGERANGE(RANGE)(((RANGE) == FLASH_VOLTAGE_RANGE_1) || \ + ((RANGE) == FLASH_VOLTAGE_RANGE_2) || \ + ((RANGE) == FLASH_VOLTAGE_RANGE_3) || \ + ((RANGE) == FLASH_VOLTAGE_RANGE_4)) + +#define IS_WRPSTATE(VALUE)(((VALUE) == OB_WRPSTATE_DISABLE) || \ + ((VALUE) == OB_WRPSTATE_ENABLE)) + +#if defined (FLASH_OPTCR2_PCROP) +#define IS_OPTIONBYTE(VALUE)(((VALUE) <= (OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER |\ + OPTIONBYTE_BOR | OPTIONBYTE_BOOTADDR_0 | OPTIONBYTE_BOOTADDR_1 |\ + OPTIONBYTE_PCROP | OPTIONBYTE_PCROP_RDP))) +#else +#define IS_OPTIONBYTE(VALUE)(((VALUE) <= (OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER |\ + OPTIONBYTE_BOR | OPTIONBYTE_BOOTADDR_0 | OPTIONBYTE_BOOTADDR_1))) +#endif /* FLASH_OPTCR2_PCROP */ + +#define IS_OB_BOOT_ADDRESS(ADDRESS) ((ADDRESS) <= 0x8013) + +#define IS_OB_RDP_LEVEL(LEVEL) (((LEVEL) == OB_RDP_LEVEL_0) ||\ + ((LEVEL) == OB_RDP_LEVEL_1) ||\ + ((LEVEL) == OB_RDP_LEVEL_2)) + +#define IS_OB_WWDG_SOURCE(SOURCE) (((SOURCE) == OB_WWDG_SW) || ((SOURCE) == OB_WWDG_HW)) + +#define IS_OB_IWDG_SOURCE(SOURCE) (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW)) + +#define IS_OB_STOP_SOURCE(SOURCE) (((SOURCE) == OB_STOP_NO_RST) || ((SOURCE) == OB_STOP_RST)) + +#define IS_OB_STDBY_SOURCE(SOURCE) (((SOURCE) == OB_STDBY_NO_RST) || ((SOURCE) == OB_STDBY_RST)) + +#define IS_OB_IWDG_STOP_FREEZE(FREEZE) (((FREEZE) == OB_IWDG_STOP_FREEZE) || ((FREEZE) == OB_IWDG_STOP_ACTIVE)) + +#define IS_OB_IWDG_STDBY_FREEZE(FREEZE) (((FREEZE) == OB_IWDG_STDBY_FREEZE) || ((FREEZE) == OB_IWDG_STDBY_ACTIVE)) + +#define IS_OB_BOR_LEVEL(LEVEL) (((LEVEL) == OB_BOR_LEVEL1) || ((LEVEL) == OB_BOR_LEVEL2) ||\ + ((LEVEL) == OB_BOR_LEVEL3) || ((LEVEL) == OB_BOR_OFF)) + +#define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_LATENCY_0) || \ + ((LATENCY) == FLASH_LATENCY_1) || \ + ((LATENCY) == FLASH_LATENCY_2) || \ + ((LATENCY) == FLASH_LATENCY_3) || \ + ((LATENCY) == FLASH_LATENCY_4) || \ + ((LATENCY) == FLASH_LATENCY_5) || \ + ((LATENCY) == FLASH_LATENCY_6) || \ + ((LATENCY) == FLASH_LATENCY_7) || \ + ((LATENCY) == FLASH_LATENCY_8) || \ + ((LATENCY) == FLASH_LATENCY_9) || \ + ((LATENCY) == FLASH_LATENCY_10) || \ + ((LATENCY) == FLASH_LATENCY_11) || \ + ((LATENCY) == FLASH_LATENCY_12) || \ + ((LATENCY) == FLASH_LATENCY_13) || \ + ((LATENCY) == FLASH_LATENCY_14) || \ + ((LATENCY) == FLASH_LATENCY_15)) + +#define IS_FLASH_ADDRESS(ADDRESS) ((((ADDRESS) >= FLASH_BASE) && ((ADDRESS) <= FLASH_END)) || \ + (((ADDRESS) >= FLASH_OTP_BASE) && ((ADDRESS) <= FLASH_OTP_END))) +#define IS_FLASH_NBSECTORS(NBSECTORS) (((NBSECTORS) != 0U) && ((NBSECTORS) <= FLASH_SECTOR_TOTAL)) + +#if (FLASH_SECTOR_TOTAL == 8) +#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\ + ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\ + ((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\ + ((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7)) + +#define IS_OB_WRP_SECTOR(SECTOR) ((((SECTOR) & 0xFF00FFFFU) == 0x00000000U) && ((SECTOR) != 0x00000000U)) +#endif /* FLASH_SECTOR_TOTAL == 8 */ + +#if (FLASH_SECTOR_TOTAL == 24) +#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\ + ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\ + ((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\ + ((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7) ||\ + ((SECTOR) == FLASH_SECTOR_8) || ((SECTOR) == FLASH_SECTOR_9) ||\ + ((SECTOR) == FLASH_SECTOR_10) || ((SECTOR) == FLASH_SECTOR_11) ||\ + ((SECTOR) == FLASH_SECTOR_12) || ((SECTOR) == FLASH_SECTOR_13) ||\ + ((SECTOR) == FLASH_SECTOR_14) || ((SECTOR) == FLASH_SECTOR_15) ||\ + ((SECTOR) == FLASH_SECTOR_16) || ((SECTOR) == FLASH_SECTOR_17) ||\ + ((SECTOR) == FLASH_SECTOR_18) || ((SECTOR) == FLASH_SECTOR_19) ||\ + ((SECTOR) == FLASH_SECTOR_20) || ((SECTOR) == FLASH_SECTOR_21) ||\ + ((SECTOR) == FLASH_SECTOR_22) || ((SECTOR) == FLASH_SECTOR_23)) + +#define IS_OB_WRP_SECTOR(SECTOR) ((((SECTOR) & 0xF000FFFFU) == 0x00000000U) && ((SECTOR) != 0x00000000U)) +#endif /* FLASH_SECTOR_TOTAL == 24 */ + +#if (FLASH_SECTOR_TOTAL == 4) +#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\ + ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3)) + +#define IS_OB_WRP_SECTOR(SECTOR) ((((SECTOR) & 0xFFF0FFFFU) == 0x00000000U) && ((SECTOR) != 0x00000000U)) +#endif /* FLASH_SECTOR_TOTAL == 4 */ + +#if (FLASH_SECTOR_TOTAL == 2) +#define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1)) + +#define IS_OB_WRP_SECTOR(SECTOR) ((((SECTOR) & 0xFFFCFFFFU) == 0x00000000U) && ((SECTOR) != 0x00000000U)) +#endif /* FLASH_SECTOR_TOTAL == 2 */ + +#if defined (FLASH_OPTCR_nDBANK) +#define IS_OB_NDBANK(VALUE) (((VALUE) == OB_NDBANK_SINGLE_BANK) || \ + ((VALUE) == OB_NDBANK_DUAL_BANK)) + +#define IS_FLASH_BANK(BANK) (((BANK) == FLASH_BANK_1) || \ + ((BANK) == FLASH_BANK_2) || \ + ((BANK) == FLASH_BANK_BOTH)) +#endif /* FLASH_OPTCR_nDBANK */ + +#if defined (FLASH_OPTCR_nDBOOT) +#define IS_OB_NDBOOT(VALUE) (((VALUE) == OB_DUAL_BOOT_DISABLE) || \ + ((VALUE) == OB_DUAL_BOOT_ENABLE)) +#endif /* FLASH_OPTCR_nDBOOT */ + +#if defined (FLASH_OPTCR2_PCROP) +#define IS_OB_PCROP_SECTOR(SECTOR) (((SECTOR) & (uint32_t)0xFFFFFF00U) == 0x00000000U) +#define IS_OB_PCROP_RDP_VALUE(VALUE) (((VALUE) == OB_PCROP_RDP_DISABLE) || \ + ((VALUE) == OB_PCROP_RDP_ENABLE)) +#endif /* FLASH_OPTCR2_PCROP */ + +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup FLASHEx_Private_Functions FLASH Private Functions + * @{ + */ +void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange); +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_FLASH_EX_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h new file mode 100644 index 0000000..9fc8540 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h @@ -0,0 +1,323 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_gpio.h + * @author MCD Application Team + * @brief Header file of GPIO HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_GPIO_H +#define __STM32F7xx_HAL_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup GPIO + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup GPIO_Exported_Types GPIO Exported Types + * @{ + */ + +/** + * @brief GPIO Init structure definition + */ +typedef struct +{ + uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_pins_define */ + + uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIO_mode_define */ + + uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins. + This parameter can be a value of @ref GPIO_pull_define */ + + uint32_t Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIO_speed_define */ + + uint32_t Alternate; /*!< Peripheral to be connected to the selected pins. + This parameter can be a value of @ref GPIO_Alternate_function_selection */ +} GPIO_InitTypeDef; + +/** + * @brief GPIO Bit SET and Bit RESET enumeration + */ +typedef enum +{ + GPIO_PIN_RESET = 0, + GPIO_PIN_SET +} GPIO_PinState; +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup GPIO_Exported_Constants GPIO Exported Constants + * @{ + */ + +/** @defgroup GPIO_pins_define GPIO pins define + * @{ + */ +#define GPIO_PIN_0 ((uint16_t)0x0001U) /* Pin 0 selected */ +#define GPIO_PIN_1 ((uint16_t)0x0002U) /* Pin 1 selected */ +#define GPIO_PIN_2 ((uint16_t)0x0004U) /* Pin 2 selected */ +#define GPIO_PIN_3 ((uint16_t)0x0008U) /* Pin 3 selected */ +#define GPIO_PIN_4 ((uint16_t)0x0010U) /* Pin 4 selected */ +#define GPIO_PIN_5 ((uint16_t)0x0020U) /* Pin 5 selected */ +#define GPIO_PIN_6 ((uint16_t)0x0040U) /* Pin 6 selected */ +#define GPIO_PIN_7 ((uint16_t)0x0080U) /* Pin 7 selected */ +#define GPIO_PIN_8 ((uint16_t)0x0100U) /* Pin 8 selected */ +#define GPIO_PIN_9 ((uint16_t)0x0200U) /* Pin 9 selected */ +#define GPIO_PIN_10 ((uint16_t)0x0400U) /* Pin 10 selected */ +#define GPIO_PIN_11 ((uint16_t)0x0800U) /* Pin 11 selected */ +#define GPIO_PIN_12 ((uint16_t)0x1000U) /* Pin 12 selected */ +#define GPIO_PIN_13 ((uint16_t)0x2000U) /* Pin 13 selected */ +#define GPIO_PIN_14 ((uint16_t)0x4000U) /* Pin 14 selected */ +#define GPIO_PIN_15 ((uint16_t)0x8000U) /* Pin 15 selected */ +#define GPIO_PIN_All ((uint16_t)0xFFFFU) /* All pins selected */ + +#define GPIO_PIN_MASK ((uint32_t)0x0000FFFFU) /* PIN mask for assert test */ +/** + * @} + */ + +/** @defgroup GPIO_mode_define GPIO mode define + * @brief GPIO Configuration Mode + * Elements values convention: 0x00WX00YZ + * - W : EXTI trigger detection on 3 bits + * - X : EXTI mode (IT or Event) on 2 bits + * - Y : Output type (Push Pull or Open Drain) on 1 bit + * - Z : GPIO mode (Input, Output, Alternate or Analog) on 2 bits + * @{ + */ +#define GPIO_MODE_INPUT MODE_INPUT /*!< Input Floating Mode */ +#define GPIO_MODE_OUTPUT_PP (MODE_OUTPUT | OUTPUT_PP) /*!< Output Push Pull Mode */ +#define GPIO_MODE_OUTPUT_OD (MODE_OUTPUT | OUTPUT_OD) /*!< Output Open Drain Mode */ +#define GPIO_MODE_AF_PP (MODE_AF | OUTPUT_PP) /*!< Alternate Function Push Pull Mode */ +#define GPIO_MODE_AF_OD (MODE_AF | OUTPUT_OD) /*!< Alternate Function Open Drain Mode */ + +#define GPIO_MODE_ANALOG MODE_ANALOG /*!< Analog Mode */ + +#define GPIO_MODE_IT_RISING (MODE_INPUT | EXTI_IT | TRIGGER_RISING) /*!< External Interrupt Mode with Rising edge trigger detection */ +#define GPIO_MODE_IT_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_FALLING) /*!< External Interrupt Mode with Falling edge trigger detection */ +#define GPIO_MODE_IT_RISING_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_RISING | TRIGGER_FALLING) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ + +#define GPIO_MODE_EVT_RISING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING) /*!< External Event Mode with Rising edge trigger detection */ +#define GPIO_MODE_EVT_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_FALLING) /*!< External Event Mode with Falling edge trigger detection */ +#define GPIO_MODE_EVT_RISING_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING | TRIGGER_FALLING) /*!< External Event Mode with Rising/Falling edge trigger detection */ +/** + * @} + */ + +/** @defgroup GPIO_speed_define GPIO speed define + * @brief GPIO Output Maximum frequency + * @{ + */ +#define GPIO_SPEED_FREQ_LOW ((uint32_t)0x00000000U) /*!< Low speed */ +#define GPIO_SPEED_FREQ_MEDIUM ((uint32_t)0x00000001U) /*!< Medium speed */ +#define GPIO_SPEED_FREQ_HIGH ((uint32_t)0x00000002U) /*!< Fast speed */ +#define GPIO_SPEED_FREQ_VERY_HIGH ((uint32_t)0x00000003U) /*!< High speed */ +/** + * @} + */ + +/** @defgroup GPIO_pull_define GPIO pull define + * @brief GPIO Pull-Up or Pull-Down Activation + * @{ + */ +#define GPIO_NOPULL ((uint32_t)0x00000000U) /*!< No Pull-up or Pull-down activation */ +#define GPIO_PULLUP ((uint32_t)0x00000001U) /*!< Pull-up activation */ +#define GPIO_PULLDOWN ((uint32_t)0x00000002U) /*!< Pull-down activation */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIO_Exported_Macros GPIO Exported Macros + * @{ + */ + +/** + * @brief Checks whether the specified EXTI line flag is set or not. + * @param __EXTI_LINE__ specifies the EXTI line flag to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval The new state of __EXTI_LINE__ (SET or RESET). + */ +#define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__)) + +/** + * @brief Clears the EXTI's line pending flags. + * @param __EXTI_LINE__ specifies the EXTI lines flags to clear. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__)) + +/** + * @brief Checks whether the specified EXTI line is asserted or not. + * @param __EXTI_LINE__ specifies the EXTI line to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval The new state of __EXTI_LINE__ (SET or RESET). + */ +#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__)) + +/** + * @brief Clears the EXTI's line pending bits. + * @param __EXTI_LINE__ specifies the EXTI lines to clear. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__)) + +/** + * @brief Generates a Software interrupt on selected EXTI line. + * @param __EXTI_LINE__ specifies the EXTI line to check. + * This parameter can be GPIO_PIN_x where x can be(0..15) + * @retval None + */ +#define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER |= (__EXTI_LINE__)) +/** + * @} + */ + +/* Include GPIO HAL Extension module */ +#include "stm32f7xx_hal_gpio_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup GPIO_Exported_Functions + * @{ + */ + +/** @addtogroup GPIO_Exported_Functions_Group1 + * @{ + */ +/* Initialization and de-initialization functions *****************************/ +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); +void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin); +/** + * @} + */ + +/** @addtogroup GPIO_Exported_Functions_Group2 + * @{ + */ +/* IO operation functions *****************************************************/ +GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); +void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); +void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); +HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin); +void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); + +/** + * @} + */ + +/** + * @} + */ +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup GPIO_Private_Constants GPIO Private Constants + * @{ + */ +#define GPIO_MODE_Pos 0U +#define GPIO_MODE (0x3UL << GPIO_MODE_Pos) +#define MODE_INPUT (0x0UL << GPIO_MODE_Pos) +#define MODE_OUTPUT (0x1UL << GPIO_MODE_Pos) +#define MODE_AF (0x2UL << GPIO_MODE_Pos) +#define MODE_ANALOG (0x3UL << GPIO_MODE_Pos) +#define OUTPUT_TYPE_Pos 4U +#define OUTPUT_TYPE (0x1UL << OUTPUT_TYPE_Pos) +#define OUTPUT_PP (0x0UL << OUTPUT_TYPE_Pos) +#define OUTPUT_OD (0x1UL << OUTPUT_TYPE_Pos) +#define EXTI_MODE_Pos 16U +#define EXTI_MODE (0x3UL << EXTI_MODE_Pos) +#define EXTI_IT (0x1UL << EXTI_MODE_Pos) +#define EXTI_EVT (0x2UL << EXTI_MODE_Pos) +#define TRIGGER_MODE_Pos 20U +#define TRIGGER_MODE (0x7UL << TRIGGER_MODE_Pos) +#define TRIGGER_RISING (0x1UL << TRIGGER_MODE_Pos) +#define TRIGGER_FALLING (0x2UL << TRIGGER_MODE_Pos) +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup GPIO_Private_Macros GPIO Private Macros + * @{ + */ +#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET)) +#define IS_GPIO_PIN(__PIN__) ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00U)) +#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\ + ((MODE) == GPIO_MODE_OUTPUT_PP) ||\ + ((MODE) == GPIO_MODE_OUTPUT_OD) ||\ + ((MODE) == GPIO_MODE_AF_PP) ||\ + ((MODE) == GPIO_MODE_AF_OD) ||\ + ((MODE) == GPIO_MODE_IT_RISING) ||\ + ((MODE) == GPIO_MODE_IT_FALLING) ||\ + ((MODE) == GPIO_MODE_IT_RISING_FALLING) ||\ + ((MODE) == GPIO_MODE_EVT_RISING) ||\ + ((MODE) == GPIO_MODE_EVT_FALLING) ||\ + ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\ + ((MODE) == GPIO_MODE_ANALOG)) +#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_LOW) || ((SPEED) == GPIO_SPEED_MEDIUM) || \ + ((SPEED) == GPIO_SPEED_FAST) || ((SPEED) == GPIO_SPEED_HIGH)) +#define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \ + ((PULL) == GPIO_PULLDOWN)) +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup GPIO_Private_Functions GPIO Private Functions + * @{ + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_GPIO_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h new file mode 100644 index 0000000..0e2cb48 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h @@ -0,0 +1,656 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_gpio_ex.h + * @author MCD Application Team + * @brief Header file of GPIO HAL Extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_GPIO_EX_H +#define __STM32F7xx_HAL_GPIO_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup GPIOEx GPIOEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup GPIOEx_Exported_Constants GPIO Exported Constants + * @{ + */ + +/** @defgroup GPIO_Alternate_function_selection GPIO Alternate Function Selection + * @{ + */ +/*--------------- STM32F74xxx/STM32F75xxx/STM32F76xxx/STM32F77xxx -------------*/ +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || defined (STM32F767xx) ||\ + defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +/** + * @brief AF 0 selection + */ +#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */ +#define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */ + +/** + * @brief AF 1 selection + */ +#define GPIO_AF1_TIM1 ((uint8_t)0x01U) /* TIM1 Alternate Function mapping */ +#define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */ +#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) +#define GPIO_AF1_UART5 ((uint8_t)0x01U) /* UART5 Alternate Function mapping */ +#define GPIO_AF1_I2C4 ((uint8_t)0x01U) /* I2C4 Alternate Function mapping */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */ +#define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */ +#define GPIO_AF2_TIM5 ((uint8_t)0x02U) /* TIM5 Alternate Function mapping */ + +/** + * @brief AF 3 selection + */ +#define GPIO_AF3_TIM8 ((uint8_t)0x03U) /* TIM8 Alternate Function mapping */ +#define GPIO_AF3_TIM9 ((uint8_t)0x03U) /* TIM9 Alternate Function mapping */ +#define GPIO_AF3_TIM10 ((uint8_t)0x03U) /* TIM10 Alternate Function mapping */ +#define GPIO_AF3_TIM11 ((uint8_t)0x03U) /* TIM11 Alternate Function mapping */ +#define GPIO_AF3_LPTIM1 ((uint8_t)0x03U) /* LPTIM1 Alternate Function mapping */ +#define GPIO_AF3_CEC ((uint8_t)0x03U) /* CEC Alternate Function mapping */ +#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) +#define GPIO_AF3_DFSDM1 ((uint8_t)0x03U) /* DFSDM1 Alternate Function mapping */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +/** + * @brief AF 4 selection + */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF4_I2C3 ((uint8_t)0x04U) /* I2C3 Alternate Function mapping */ +#define GPIO_AF4_I2C4 ((uint8_t)0x04U) /* I2C4 Alternate Function mapping */ +#define GPIO_AF4_CEC ((uint8_t)0x04U) /* CEC Alternate Function mapping */ +#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) +#define GPIO_AF4_USART1 ((uint8_t)0x04) /* USART1 Alternate Function mapping */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */ +#define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */ +#define GPIO_AF5_SPI4 ((uint8_t)0x05U) /* SPI4 Alternate Function mapping */ +#define GPIO_AF5_SPI5 ((uint8_t)0x05U) /* SPI5 Alternate Function mapping */ +#define GPIO_AF5_SPI6 ((uint8_t)0x05U) /* SPI6 Alternate Function mapping */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */ +#define GPIO_AF6_SAI1 ((uint8_t)0x06U) /* SAI1 Alternate Function mapping */ +#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) +#define GPIO_AF6_UART4 ((uint8_t)0x06U) /* UART4 Alternate Function mapping */ +#define GPIO_AF6_DFSDM1 ((uint8_t)0x06U) /* DFSDM1 Alternate Function mapping */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */ +#define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */ +#define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */ +#define GPIO_AF7_UART5 ((uint8_t)0x07U) /* UART5 Alternate Function mapping */ +#define GPIO_AF7_SPDIFRX ((uint8_t)0x07U) /* SPDIF-RX Alternate Function mapping */ +#define GPIO_AF7_SPI2 ((uint8_t)0x07U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF7_SPI3 ((uint8_t)0x07U) /* SPI3 Alternate Function mapping */ +#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) +#define GPIO_AF7_SPI6 ((uint8_t)0x07U) /* SPI6 Alternate Function mapping */ +#define GPIO_AF7_DFSDM1 ((uint8_t)0x07U) /* DFSDM1 Alternate Function mapping */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @brief AF 8 selection + */ +#define GPIO_AF8_UART4 ((uint8_t)0x08U) /* UART4 Alternate Function mapping */ +#define GPIO_AF8_UART5 ((uint8_t)0x08U) /* UART5 Alternate Function mapping */ +#define GPIO_AF8_USART6 ((uint8_t)0x08U) /* USART6 Alternate Function mapping */ +#define GPIO_AF8_UART7 ((uint8_t)0x08U) /* UART7 Alternate Function mapping */ +#define GPIO_AF8_UART8 ((uint8_t)0x08U) /* UART8 Alternate Function mapping */ +#define GPIO_AF8_SPDIFRX ((uint8_t)0x08U) /* SPIDIF-RX Alternate Function mapping */ +#define GPIO_AF8_SAI2 ((uint8_t)0x08U) /* SAI2 Alternate Function mapping */ +#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) +#define GPIO_AF8_SPI6 ((uint8_t)0x08U) /* SPI6 Alternate Function mapping */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + + +/** + * @brief AF 9 selection + */ +#define GPIO_AF9_CAN1 ((uint8_t)0x09U) /* CAN1 Alternate Function mapping */ +#define GPIO_AF9_CAN2 ((uint8_t)0x09U) /* CAN2 Alternate Function mapping */ +#define GPIO_AF9_TIM12 ((uint8_t)0x09U) /* TIM12 Alternate Function mapping */ +#define GPIO_AF9_TIM13 ((uint8_t)0x09U) /* TIM13 Alternate Function mapping */ +#define GPIO_AF9_TIM14 ((uint8_t)0x09U) /* TIM14 Alternate Function mapping */ +#define GPIO_AF9_QUADSPI ((uint8_t)0x09U) /* QUADSPI Alternate Function mapping */ +#if defined(STM32F746xx) || defined(STM32F756xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) || defined(STM32F750xx) +#define GPIO_AF9_LTDC ((uint8_t)0x09U) /* LCD-TFT Alternate Function mapping */ +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#if defined(STM32F746xx) || defined(STM32F756xx) || defined(STM32F765xx) || defined(STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) || defined(STM32F750xx) +#define GPIO_AF9_FMC ((uint8_t)0x09U) /* FMC Alternate Function mapping */ +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +/** + * @brief AF 10 selection + */ +#define GPIO_AF10_OTG_FS ((uint8_t)0xAU) /* OTG_FS Alternate Function mapping */ +#define GPIO_AF10_OTG_HS ((uint8_t)0xAU) /* OTG_HS Alternate Function mapping */ +#define GPIO_AF10_QUADSPI ((uint8_t)0xAU) /* QUADSPI Alternate Function mapping */ +#define GPIO_AF10_SAI2 ((uint8_t)0xAU) /* SAI2 Alternate Function mapping */ +#if defined (STM32F765xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) +#define GPIO_AF10_DFSDM1 ((uint8_t)0x0AU) /* DFSDM1 Alternate Function mapping */ +#define GPIO_AF10_SDMMC2 ((uint8_t)0x0AU) /* SDMMC2 Alternate Function mapping */ +#define GPIO_AF10_LTDC ((uint8_t)0x0AU) /* LCD-TFT Alternate Function mapping */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @brief AF 11 selection + */ +#define GPIO_AF11_ETH ((uint8_t)0x0BU) /* ETHERNET Alternate Function mapping */ +#if defined(STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define GPIO_AF11_CAN3 ((uint8_t)0x0BU) /* CAN3 Alternate Function mapping */ +#define GPIO_AF11_SDMMC2 ((uint8_t)0x0BU) /* SDMMC2 Alternate Function mapping */ +#define GPIO_AF11_I2C4 ((uint8_t)0x0BU) /* I2C4 Alternate Function mapping */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @brief AF 12 selection + */ +#define GPIO_AF12_FMC ((uint8_t)0xCU) /* FMC Alternate Function mapping */ +#define GPIO_AF12_OTG_HS_FS ((uint8_t)0xCU) /* OTG HS configured in FS, Alternate Function mapping */ +#define GPIO_AF12_SDMMC1 ((uint8_t)0xCU) /* SDMMC1 Alternate Function mapping */ +#if defined(STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define GPIO_AF12_MDIOS ((uint8_t)0xCU) /* SDMMC1 Alternate Function mapping */ +#define GPIO_AF12_UART7 ((uint8_t)0xCU) /* UART7 Alternate Function mapping */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @brief AF 13 selection + */ +#define GPIO_AF13_DCMI ((uint8_t)0x0DU) /* DCMI Alternate Function mapping */ +#if defined (STM32F769xx) || defined (STM32F779xx) +#define GPIO_AF13_DSI ((uint8_t)0x0DU) /* DSI Alternate Function mapping */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#if defined(STM32F746xx) || defined(STM32F756xx) || defined(STM32F767xx) || defined(STM32F769xx) || defined(STM32F777xx) || defined(STM32F779xx) || defined(STM32F750xx) +#define GPIO_AF13_LTDC ((uint8_t)0x0DU) /* LTDC Alternate Function mapping */ + +/** + * @brief AF 14 selection + */ +#define GPIO_AF14_LTDC ((uint8_t)0x0EU) /* LCD-TFT Alternate Function mapping */ +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +/** + * @brief AF 15 selection + */ +#define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */ +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +/*----------------------------------------------------------------------------*/ + +/*---------------------------- STM32F72xxx/STM32F73xxx -----------------------*/ +#if defined(STM32F722xx) || defined(STM32F723xx) || defined(STM32F732xx) || defined(STM32F733xx) || defined(STM32F730xx) +/** + * @brief AF 0 selection + */ +#define GPIO_AF0_RTC_50Hz ((uint8_t)0x00U) /* RTC_50Hz Alternate Function mapping */ +#define GPIO_AF0_MCO ((uint8_t)0x00U) /* MCO (MCO1 and MCO2) Alternate Function mapping */ +#define GPIO_AF0_SWJ ((uint8_t)0x00U) /* SWJ (SWD and JTAG) Alternate Function mapping */ +#define GPIO_AF0_TRACE ((uint8_t)0x00U) /* TRACE Alternate Function mapping */ + +/** + * @brief AF 1 selection + */ +#define GPIO_AF1_TIM1 ((uint8_t)0x01U) /* TIM1 Alternate Function mapping */ +#define GPIO_AF1_TIM2 ((uint8_t)0x01U) /* TIM2 Alternate Function mapping */ + +/** + * @brief AF 2 selection + */ +#define GPIO_AF2_TIM3 ((uint8_t)0x02U) /* TIM3 Alternate Function mapping */ +#define GPIO_AF2_TIM4 ((uint8_t)0x02U) /* TIM4 Alternate Function mapping */ +#define GPIO_AF2_TIM5 ((uint8_t)0x02U) /* TIM5 Alternate Function mapping */ + +/** + * @brief AF 3 selection + */ +#define GPIO_AF3_TIM8 ((uint8_t)0x03U) /* TIM8 Alternate Function mapping */ +#define GPIO_AF3_TIM9 ((uint8_t)0x03U) /* TIM9 Alternate Function mapping */ +#define GPIO_AF3_TIM10 ((uint8_t)0x03U) /* TIM10 Alternate Function mapping */ +#define GPIO_AF3_TIM11 ((uint8_t)0x03U) /* TIM11 Alternate Function mapping */ +#define GPIO_AF3_LPTIM1 ((uint8_t)0x03U) /* LPTIM1 Alternate Function mapping */ + +/** + * @brief AF 4 selection + */ +#define GPIO_AF4_I2C1 ((uint8_t)0x04U) /* I2C1 Alternate Function mapping */ +#define GPIO_AF4_I2C2 ((uint8_t)0x04U) /* I2C2 Alternate Function mapping */ +#define GPIO_AF4_I2C3 ((uint8_t)0x04U) /* I2C3 Alternate Function mapping */ + +/** + * @brief AF 5 selection + */ +#define GPIO_AF5_SPI1 ((uint8_t)0x05U) /* SPI1 Alternate Function mapping */ +#define GPIO_AF5_SPI2 ((uint8_t)0x05U) /* SPI2/I2S2 Alternate Function mapping */ +#define GPIO_AF5_SPI3 ((uint8_t)0x05U) /* SPI3/I2S3 Alternate Function mapping */ +#define GPIO_AF5_SPI4 ((uint8_t)0x05U) /* SPI4 Alternate Function mapping */ +#define GPIO_AF5_SPI5 ((uint8_t)0x05U) /* SPI5 Alternate Function mapping */ + +/** + * @brief AF 6 selection + */ +#define GPIO_AF6_SPI3 ((uint8_t)0x06U) /* SPI3/I2S3 Alternate Function mapping */ +#define GPIO_AF6_SAI1 ((uint8_t)0x06U) /* SAI1 Alternate Function mapping */ + +/** + * @brief AF 7 selection + */ +#define GPIO_AF7_USART1 ((uint8_t)0x07U) /* USART1 Alternate Function mapping */ +#define GPIO_AF7_USART2 ((uint8_t)0x07U) /* USART2 Alternate Function mapping */ +#define GPIO_AF7_USART3 ((uint8_t)0x07U) /* USART3 Alternate Function mapping */ +#define GPIO_AF7_UART5 ((uint8_t)0x07U) /* UART5 Alternate Function mapping */ +#define GPIO_AF7_SPI2 ((uint8_t)0x07U) /* SPI2 Alternate Function mapping */ +#define GPIO_AF7_SPI3 ((uint8_t)0x07U) /* SPI3 Alternate Function mapping */ + +/** + * @brief AF 8 selection + */ +#define GPIO_AF8_UART4 ((uint8_t)0x08U) /* UART4 Alternate Function mapping */ +#define GPIO_AF8_UART5 ((uint8_t)0x08U) /* UART5 Alternate Function mapping */ +#define GPIO_AF8_USART6 ((uint8_t)0x08U) /* USART6 Alternate Function mapping */ +#define GPIO_AF8_UART7 ((uint8_t)0x08U) /* UART7 Alternate Function mapping */ +#define GPIO_AF8_UART8 ((uint8_t)0x08U) /* UART8 Alternate Function mapping */ +#define GPIO_AF8_SAI2 ((uint8_t)0x08U) /* SAI2 Alternate Function mapping */ + +/** + * @brief AF 9 selection + */ +#define GPIO_AF9_CAN1 ((uint8_t)0x09U) /* CAN1 Alternate Function mapping */ +#define GPIO_AF9_TIM12 ((uint8_t)0x09U) /* TIM12 Alternate Function mapping */ +#define GPIO_AF9_TIM13 ((uint8_t)0x09U) /* TIM13 Alternate Function mapping */ +#define GPIO_AF9_TIM14 ((uint8_t)0x09U) /* TIM14 Alternate Function mapping */ +#define GPIO_AF9_QUADSPI ((uint8_t)0x09U) /* QUADSPI Alternate Function mapping */ + +/** + * @brief AF 10 selection + */ +#define GPIO_AF10_OTG_FS ((uint8_t)0xAU) /* OTG_FS Alternate Function mapping */ +#define GPIO_AF10_OTG_HS ((uint8_t)0xAU) /* OTG_HS Alternate Function mapping */ +#define GPIO_AF10_QUADSPI ((uint8_t)0xAU) /* QUADSPI Alternate Function mapping */ +#define GPIO_AF10_SAI2 ((uint8_t)0xAU) /* SAI2 Alternate Function mapping */ +#define GPIO_AF10_SDMMC2 ((uint8_t)0x0AU) /* SDMMC2 Alternate Function mapping */ + +/** + * @brief AF 11 selection + */ +#define GPIO_AF11_SDMMC2 ((uint8_t)0x0BU) /* SDMMC2 Alternate Function mapping */ + +/** + * @brief AF 12 selection + */ +#define GPIO_AF12_FMC ((uint8_t)0xCU) /* FMC Alternate Function mapping */ +#define GPIO_AF12_OTG_HS_FS ((uint8_t)0xCU) /* OTG HS configured in FS, Alternate Function mapping */ +#define GPIO_AF12_SDMMC1 ((uint8_t)0xCU) /* SDMMC1 Alternate Function mapping */ + +/** + * @brief AF 13 selection + */ +#define GPIO_AF13_RNG ((uint8_t)0x0DU) /* RNG Alternate Function mapping */ + +/** + * @brief AF 15 selection + */ +#define GPIO_AF15_EVENTOUT ((uint8_t)0x0FU) /* EVENTOUT Alternate Function mapping */ +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */ +/*----------------------------------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIOEx_Exported_Macros GPIO Exported Macros + * @{ + */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIOEx_Exported_Functions GPIO Exported Functions + * @{ + */ +/** + * @} + */ +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup GPIOEx_Private_Constants GPIO Private Constants + * @{ + */ + +/** + * @brief GPIO pin available on the platform + */ +/* Defines the available pins per GPIOs */ +#define GPIOA_PIN_AVAILABLE GPIO_PIN_All +#define GPIOB_PIN_AVAILABLE GPIO_PIN_All +#define GPIOC_PIN_AVAILABLE GPIO_PIN_All +#define GPIOD_PIN_AVAILABLE GPIO_PIN_All +#define GPIOE_PIN_AVAILABLE GPIO_PIN_All +#define GPIOF_PIN_AVAILABLE GPIO_PIN_All +#define GPIOG_PIN_AVAILABLE GPIO_PIN_All +#define GPIOI_PIN_AVAILABLE GPIO_PIN_All +#define GPIOJ_PIN_AVAILABLE GPIO_PIN_All +#define GPIOH_PIN_AVAILABLE GPIO_PIN_All +#define GPIOK_PIN_AVAILABLE (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | \ + GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7) + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup GPIOEx_Private_Macros GPIO Private Macros + * @{ + */ +/** @defgroup GPIOEx_Get_Port_Index GPIO Get Port Index + * @{ + */ +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\ + ((__GPIOx__) == (GPIOB))? 1U :\ + ((__GPIOx__) == (GPIOC))? 2U :\ + ((__GPIOx__) == (GPIOD))? 3U :\ + ((__GPIOx__) == (GPIOE))? 4U :\ + ((__GPIOx__) == (GPIOF))? 5U :\ + ((__GPIOx__) == (GPIOG))? 6U :\ + ((__GPIOx__) == (GPIOH))? 7U :\ + ((__GPIOx__) == (GPIOI))? 8U :\ + ((__GPIOx__) == (GPIOJ))? 9U : 10U) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define GPIO_GET_INDEX(__GPIOx__) (uint8_t)(((__GPIOx__) == (GPIOA))? 0U :\ + ((__GPIOx__) == (GPIOB))? 1U :\ + ((__GPIOx__) == (GPIOC))? 2U :\ + ((__GPIOx__) == (GPIOD))? 3U :\ + ((__GPIOx__) == (GPIOE))? 4U :\ + ((__GPIOx__) == (GPIOF))? 5U :\ + ((__GPIOx__) == (GPIOG))? 6U :\ + ((__GPIOx__) == (GPIOH))? 7U : 8U) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */ +/** + * @} + */ + +#define IS_GPIO_PIN_AVAILABLE(__INSTANCE__,__PIN__) \ + ((((__INSTANCE__) == GPIOA) && (((__PIN__) & (GPIOA_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOA_PIN_AVAILABLE)) == (GPIOA_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOB) && (((__PIN__) & (GPIOB_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOB_PIN_AVAILABLE)) == (GPIOB_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOC) && (((__PIN__) & (GPIOC_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOC_PIN_AVAILABLE)) == (GPIOC_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOD) && (((__PIN__) & (GPIOD_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOD_PIN_AVAILABLE)) == (GPIOD_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOE) && (((__PIN__) & (GPIOE_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOE_PIN_AVAILABLE)) == (GPIOE_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOF) && (((__PIN__) & (GPIOF_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOF_PIN_AVAILABLE)) == (GPIOF_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOG) && (((__PIN__) & (GPIOG_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOG_PIN_AVAILABLE)) == (GPIOG_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOI) && (((__PIN__) & (GPIOI_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOI_PIN_AVAILABLE)) == (GPIOI_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOJ) && (((__PIN__) & (GPIOJ_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOJ_PIN_AVAILABLE)) == (GPIOJ_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOK) && (((__PIN__) & (GPIOK_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOK_PIN_AVAILABLE)) == (GPIOK_PIN_AVAILABLE))) || \ + (((__INSTANCE__) == GPIOH) && (((__PIN__) & (GPIOH_PIN_AVAILABLE)) != 0) && (((__PIN__) | (GPIOH_PIN_AVAILABLE)) == (GPIOH_PIN_AVAILABLE)))) +/** @defgroup GPIOEx_IS_Alternat_function_selection GPIO Check Alternate Function + * @{ + */ +#if defined(STM32F756xx) || defined(STM32F746xx) || defined(STM32F750xx) +#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \ + ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ + ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \ + ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ + ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ + ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \ + ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \ + ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \ + ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ + ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF4_I2C4) || \ + ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \ + ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF5_SPI4) || \ + ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \ + ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \ + ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \ + ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ + ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \ + ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \ + ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \ + ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \ + ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \ + ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ + ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM13) || \ + ((AF) == GPIO_AF9_TIM14) || ((AF) == GPIO_AF9_QUADSPI) || \ + ((AF) == GPIO_AF9_LTDC) || ((AF) == GPIO_AF10_OTG_FS) || \ + ((AF) == GPIO_AF10_OTG_HS) || ((AF) == GPIO_AF10_SAI2) || \ + ((AF) == GPIO_AF10_QUADSPI) || ((AF) == GPIO_AF11_ETH) || \ + ((AF) == GPIO_AF12_OTG_HS_FS) || ((AF) == GPIO_AF12_SDMMC1) || \ + ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF15_EVENTOUT) || \ + ((AF) == GPIO_AF13_DCMI) || ((AF) == GPIO_AF14_LTDC)) +#elif defined(STM32F745xx) +#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \ + ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ + ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \ + ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ + ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ + ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \ + ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \ + ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \ + ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ + ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF4_I2C4) || \ + ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \ + ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF5_SPI4) || \ + ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \ + ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \ + ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \ + ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ + ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \ + ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \ + ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \ + ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \ + ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \ + ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ + ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM13) || \ + ((AF) == GPIO_AF9_TIM14) || ((AF) == GPIO_AF9_QUADSPI) || \ + ((AF) == GPIO_AF13_DCMI) || ((AF) == GPIO_AF10_OTG_FS) || \ + ((AF) == GPIO_AF10_OTG_HS) || ((AF) == GPIO_AF10_SAI2) || \ + ((AF) == GPIO_AF10_QUADSPI) || ((AF) == GPIO_AF11_ETH) || \ + ((AF) == GPIO_AF12_OTG_HS_FS) || ((AF) == GPIO_AF12_SDMMC1) || \ + ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF15_EVENTOUT)) +#elif defined(STM32F767xx) || defined(STM32F777xx) +#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \ + ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ + ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \ + ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ + ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ + ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \ + ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \ + ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \ + ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ + ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF4_I2C4) || \ + ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \ + ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF5_SPI4) || \ + ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \ + ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \ + ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \ + ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ + ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \ + ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \ + ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \ + ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \ + ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \ + ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ + ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM13) || \ + ((AF) == GPIO_AF9_TIM14) || ((AF) == GPIO_AF9_QUADSPI) || \ + ((AF) == GPIO_AF10_OTG_FS) || ((AF) == GPIO_AF9_LTDC) || \ + ((AF) == GPIO_AF10_OTG_HS) || ((AF) == GPIO_AF10_SAI2) || \ + ((AF) == GPIO_AF10_QUADSPI) || ((AF) == GPIO_AF11_ETH) || \ + ((AF) == GPIO_AF10_SDMMC2) || ((AF) == GPIO_AF11_SDMMC2) || \ + ((AF) == GPIO_AF11_CAN3) || ((AF) == GPIO_AF12_OTG_HS_FS) || \ + ((AF) == GPIO_AF12_SDMMC1) || ((AF) == GPIO_AF12_FMC) || \ + ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF13_DCMI) || \ + ((AF) == GPIO_AF14_LTDC)) +#elif defined(STM32F769xx) || defined(STM32F779xx) +#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \ + ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ + ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \ + ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ + ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ + ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \ + ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \ + ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \ + ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ + ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF4_I2C4) || \ + ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \ + ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF5_SPI4) || \ + ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \ + ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \ + ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \ + ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ + ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \ + ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \ + ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \ + ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \ + ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \ + ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ + ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM13) || \ + ((AF) == GPIO_AF9_TIM14) || ((AF) == GPIO_AF9_QUADSPI) || \ + ((AF) == GPIO_AF9_LTDC) || ((AF) == GPIO_AF10_OTG_FS) || \ + ((AF) == GPIO_AF10_OTG_HS) || ((AF) == GPIO_AF10_SAI2) || \ + ((AF) == GPIO_AF10_QUADSPI) || ((AF) == GPIO_AF11_ETH) || \ + ((AF) == GPIO_AF10_SDMMC2) || ((AF) == GPIO_AF11_SDMMC2) || \ + ((AF) == GPIO_AF11_CAN3) || ((AF) == GPIO_AF12_OTG_HS_FS) || \ + ((AF) == GPIO_AF12_SDMMC1) || ((AF) == GPIO_AF12_FMC) || \ + ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF13_DCMI) || \ + ((AF) == GPIO_AF14_LTDC) || ((AF) == GPIO_AF13_DSI)) +#elif defined(STM32F765xx) +#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \ + ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ + ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \ + ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ + ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ + ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \ + ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \ + ((AF) == GPIO_AF3_CEC) || ((AF) == GPIO_AF4_CEC) || \ + ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ + ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF4_I2C4) || \ + ((AF) == GPIO_AF5_SPI1) || ((AF) == GPIO_AF5_SPI2) || \ + ((AF) == GPIO_AF5_SPI3) || ((AF) == GPIO_AF5_SPI4) || \ + ((AF) == GPIO_AF5_SPI5) || ((AF) == GPIO_AF5_SPI6) || \ + ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \ + ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \ + ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ + ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \ + ((AF) == GPIO_AF7_SPDIFRX) || ((AF) == GPIO_AF8_SPDIFRX) || \ + ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \ + ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \ + ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \ + ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_CAN2) || \ + ((AF) == GPIO_AF9_TIM12) || ((AF) == GPIO_AF9_TIM12) || \ + ((AF) == GPIO_AF9_TIM14) || ((AF) == GPIO_AF9_QUADSPI) || \ + ((AF) == GPIO_AF10_OTG_HS) || ((AF) == GPIO_AF10_SAI2) || \ + ((AF) == GPIO_AF10_QUADSPI) || ((AF) == GPIO_AF11_ETH) || \ + ((AF) == GPIO_AF10_SDMMC2) || ((AF) == GPIO_AF11_SDMMC2) || \ + ((AF) == GPIO_AF11_CAN3) || ((AF) == GPIO_AF12_OTG_HS_FS) || \ + ((AF) == GPIO_AF12_SDMMC1) || ((AF) == GPIO_AF12_FMC) || \ + ((AF) == GPIO_AF15_EVENTOUT) || ((AF) == GPIO_AF13_DCMI) || \ + ((AF) == GPIO_AF10_OTG_FS)) +#elif defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define IS_GPIO_AF(AF) (((AF) == GPIO_AF0_RTC_50Hz) || ((AF) == GPIO_AF1_TIM1) || \ + ((AF) == GPIO_AF0_SWJ) || ((AF) == GPIO_AF0_TRACE) || \ + ((AF) == GPIO_AF0_MCO) || ((AF) == GPIO_AF1_TIM2) || \ + ((AF) == GPIO_AF2_TIM3) || ((AF) == GPIO_AF2_TIM4) || \ + ((AF) == GPIO_AF2_TIM5) || ((AF) == GPIO_AF3_TIM8) || \ + ((AF) == GPIO_AF3_TIM9) || ((AF) == GPIO_AF3_TIM10) || \ + ((AF) == GPIO_AF3_TIM11) || ((AF) == GPIO_AF3_LPTIM1) || \ + ((AF) == GPIO_AF4_I2C1) || ((AF) == GPIO_AF4_I2C2) || \ + ((AF) == GPIO_AF4_I2C3) || ((AF) == GPIO_AF5_SPI1) || \ + ((AF) == GPIO_AF5_SPI2) || ((AF) == GPIO_AF5_SPI3) || \ + ((AF) == GPIO_AF5_SPI4) || ((AF) == GPIO_AF5_SPI5) || \ + ((AF) == GPIO_AF6_SPI3) || ((AF) == GPIO_AF6_SAI1) || \ + ((AF) == GPIO_AF7_SPI3) || ((AF) == GPIO_AF7_SPI2) || \ + ((AF) == GPIO_AF7_USART1) || ((AF) == GPIO_AF7_USART2) || \ + ((AF) == GPIO_AF7_USART3) || ((AF) == GPIO_AF7_UART5) || \ + ((AF) == GPIO_AF8_SAI2) || ((AF) == GPIO_AF8_USART6) || \ + ((AF) == GPIO_AF8_UART4) || ((AF) == GPIO_AF8_UART5) || \ + ((AF) == GPIO_AF8_UART7) || ((AF) == GPIO_AF8_UART8) || \ + ((AF) == GPIO_AF9_CAN1) || ((AF) == GPIO_AF9_TIM12) || \ + ((AF) == GPIO_AF9_TIM13) || ((AF) == GPIO_AF9_TIM14) || \ + ((AF) == GPIO_AF9_QUADSPI) || ((AF) == GPIO_AF10_OTG_HS) || \ + ((AF) == GPIO_AF10_SAI2) || ((AF) == GPIO_AF10_QUADSPI) || \ + ((AF) == GPIO_AF10_SDMMC2) || ((AF) == GPIO_AF11_SDMMC2) || \ + ((AF) == GPIO_AF12_OTG_HS_FS) || ((AF) == GPIO_AF12_SDMMC1) || \ + ((AF) == GPIO_AF12_FMC) || ((AF) == GPIO_AF15_EVENTOUT) || \ + ((AF) == GPIO_AF10_OTG_FS)) +#endif /* STM32F756xx || STM32F746xx || STM32F750xx */ +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup GPIOEx_Private_Functions GPIO Private Functions + * @{ + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_GPIO_EX_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h new file mode 100644 index 0000000..6239a9f --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h @@ -0,0 +1,838 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_i2c.h + * @author MCD Application Team + * @brief Header file of I2C HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_HAL_I2C_H +#define STM32F7xx_HAL_I2C_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup I2C + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup I2C_Exported_Types I2C Exported Types + * @{ + */ + +/** @defgroup I2C_Configuration_Structure_definition I2C Configuration Structure definition + * @brief I2C Configuration Structure definition + * @{ + */ +typedef struct +{ + uint32_t Timing; /*!< Specifies the I2C_TIMINGR_register value. + This parameter calculated by referring to I2C initialization section + in Reference manual */ + + uint32_t OwnAddress1; /*!< Specifies the first device own address. + This parameter can be a 7-bit or 10-bit address. */ + + uint32_t AddressingMode; /*!< Specifies if 7-bit or 10-bit addressing mode is selected. + This parameter can be a value of @ref I2C_ADDRESSING_MODE */ + + uint32_t DualAddressMode; /*!< Specifies if dual addressing mode is selected. + This parameter can be a value of @ref I2C_DUAL_ADDRESSING_MODE */ + + uint32_t OwnAddress2; /*!< Specifies the second device own address if dual addressing mode is selected + This parameter can be a 7-bit address. */ + + uint32_t OwnAddress2Masks; /*!< Specifies the acknowledge mask address second device own address if dual addressing + mode is selected. + This parameter can be a value of @ref I2C_OWN_ADDRESS2_MASKS */ + + uint32_t GeneralCallMode; /*!< Specifies if general call mode is selected. + This parameter can be a value of @ref I2C_GENERAL_CALL_ADDRESSING_MODE */ + + uint32_t NoStretchMode; /*!< Specifies if nostretch mode is selected. + This parameter can be a value of @ref I2C_NOSTRETCH_MODE */ + +} I2C_InitTypeDef; + +/** + * @} + */ + +/** @defgroup HAL_state_structure_definition HAL state structure definition + * @brief HAL State structure definition + * @note HAL I2C State value coding follow below described bitmap :\n + * b7-b6 Error information\n + * 00 : No Error\n + * 01 : Abort (Abort user request on going)\n + * 10 : Timeout\n + * 11 : Error\n + * b5 Peripheral initialization status\n + * 0 : Reset (peripheral not initialized)\n + * 1 : Init done (peripheral initialized and ready to use. HAL I2C Init function called)\n + * b4 (not used)\n + * x : Should be set to 0\n + * b3\n + * 0 : Ready or Busy (No Listen mode ongoing)\n + * 1 : Listen (peripheral in Address Listen Mode)\n + * b2 Intrinsic process state\n + * 0 : Ready\n + * 1 : Busy (peripheral busy with some configuration or internal operations)\n + * b1 Rx state\n + * 0 : Ready (no Rx operation ongoing)\n + * 1 : Busy (Rx operation ongoing)\n + * b0 Tx state\n + * 0 : Ready (no Tx operation ongoing)\n + * 1 : Busy (Tx operation ongoing) + * @{ + */ +typedef enum +{ + HAL_I2C_STATE_RESET = 0x00U, /*!< Peripheral is not yet Initialized */ + HAL_I2C_STATE_READY = 0x20U, /*!< Peripheral Initialized and ready for use */ + HAL_I2C_STATE_BUSY = 0x24U, /*!< An internal process is ongoing */ + HAL_I2C_STATE_BUSY_TX = 0x21U, /*!< Data Transmission process is ongoing */ + HAL_I2C_STATE_BUSY_RX = 0x22U, /*!< Data Reception process is ongoing */ + HAL_I2C_STATE_LISTEN = 0x28U, /*!< Address Listen Mode is ongoing */ + HAL_I2C_STATE_BUSY_TX_LISTEN = 0x29U, /*!< Address Listen Mode and Data Transmission + process is ongoing */ + HAL_I2C_STATE_BUSY_RX_LISTEN = 0x2AU, /*!< Address Listen Mode and Data Reception + process is ongoing */ + HAL_I2C_STATE_ABORT = 0x60U, /*!< Abort user request ongoing */ + +} HAL_I2C_StateTypeDef; + +/** + * @} + */ + +/** @defgroup HAL_mode_structure_definition HAL mode structure definition + * @brief HAL Mode structure definition + * @note HAL I2C Mode value coding follow below described bitmap :\n + * b7 (not used)\n + * x : Should be set to 0\n + * b6\n + * 0 : None\n + * 1 : Memory (HAL I2C communication is in Memory Mode)\n + * b5\n + * 0 : None\n + * 1 : Slave (HAL I2C communication is in Slave Mode)\n + * b4\n + * 0 : None\n + * 1 : Master (HAL I2C communication is in Master Mode)\n + * b3-b2-b1-b0 (not used)\n + * xxxx : Should be set to 0000 + * @{ + */ +typedef enum +{ + HAL_I2C_MODE_NONE = 0x00U, /*!< No I2C communication on going */ + HAL_I2C_MODE_MASTER = 0x10U, /*!< I2C communication is in Master Mode */ + HAL_I2C_MODE_SLAVE = 0x20U, /*!< I2C communication is in Slave Mode */ + HAL_I2C_MODE_MEM = 0x40U /*!< I2C communication is in Memory Mode */ + +} HAL_I2C_ModeTypeDef; + +/** + * @} + */ + +/** @defgroup I2C_Error_Code_definition I2C Error Code definition + * @brief I2C Error Code definition + * @{ + */ +#define HAL_I2C_ERROR_NONE (0x00000000U) /*!< No error */ +#define HAL_I2C_ERROR_BERR (0x00000001U) /*!< BERR error */ +#define HAL_I2C_ERROR_ARLO (0x00000002U) /*!< ARLO error */ +#define HAL_I2C_ERROR_AF (0x00000004U) /*!< ACKF error */ +#define HAL_I2C_ERROR_OVR (0x00000008U) /*!< OVR error */ +#define HAL_I2C_ERROR_DMA (0x00000010U) /*!< DMA transfer error */ +#define HAL_I2C_ERROR_TIMEOUT (0x00000020U) /*!< Timeout error */ +#define HAL_I2C_ERROR_SIZE (0x00000040U) /*!< Size Management error */ +#define HAL_I2C_ERROR_DMA_PARAM (0x00000080U) /*!< DMA Parameter Error */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +#define HAL_I2C_ERROR_INVALID_CALLBACK (0x00000100U) /*!< Invalid Callback error */ +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +#define HAL_I2C_ERROR_INVALID_PARAM (0x00000200U) /*!< Invalid Parameters error */ +/** + * @} + */ + +/** @defgroup I2C_handle_Structure_definition I2C handle Structure definition + * @brief I2C handle Structure definition + * @{ + */ +typedef struct __I2C_HandleTypeDef +{ + I2C_TypeDef *Instance; /*!< I2C registers base address */ + + I2C_InitTypeDef Init; /*!< I2C communication parameters */ + + uint8_t *pBuffPtr; /*!< Pointer to I2C transfer buffer */ + + uint16_t XferSize; /*!< I2C transfer size */ + + __IO uint16_t XferCount; /*!< I2C transfer counter */ + + __IO uint32_t XferOptions; /*!< I2C sequantial transfer options, this parameter can + be a value of @ref I2C_XFEROPTIONS */ + + __IO uint32_t PreviousState; /*!< I2C communication Previous state */ + + HAL_StatusTypeDef(*XferISR)(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources); + /*!< I2C transfer IRQ handler function pointer */ + + DMA_HandleTypeDef *hdmatx; /*!< I2C Tx DMA handle parameters */ + + DMA_HandleTypeDef *hdmarx; /*!< I2C Rx DMA handle parameters */ + + + HAL_LockTypeDef Lock; /*!< I2C locking object */ + + __IO HAL_I2C_StateTypeDef State; /*!< I2C communication state */ + + __IO HAL_I2C_ModeTypeDef Mode; /*!< I2C communication mode */ + + __IO uint32_t ErrorCode; /*!< I2C Error code */ + + __IO uint32_t AddrEventCount; /*!< I2C Address Event counter */ + + __IO uint32_t Devaddress; /*!< I2C Target device address */ + + __IO uint32_t Memaddress; /*!< I2C Target memory address */ + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + void (* MasterTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Master Tx Transfer completed callback */ + void (* MasterRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Master Rx Transfer completed callback */ + void (* SlaveTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Slave Tx Transfer completed callback */ + void (* SlaveRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Slave Rx Transfer completed callback */ + void (* ListenCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Listen Complete callback */ + void (* MemTxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Memory Tx Transfer completed callback */ + void (* MemRxCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Memory Rx Transfer completed callback */ + void (* ErrorCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Error callback */ + void (* AbortCpltCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Abort callback */ + + void (* AddrCallback)(struct __I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode); + /*!< I2C Slave Address Match callback */ + + void (* MspInitCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Msp Init callback */ + void (* MspDeInitCallback)(struct __I2C_HandleTypeDef *hi2c); + /*!< I2C Msp DeInit callback */ + +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +} I2C_HandleTypeDef; + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +/** + * @brief HAL I2C Callback ID enumeration definition + */ +typedef enum +{ + HAL_I2C_MASTER_TX_COMPLETE_CB_ID = 0x00U, /*!< I2C Master Tx Transfer completed callback ID */ + HAL_I2C_MASTER_RX_COMPLETE_CB_ID = 0x01U, /*!< I2C Master Rx Transfer completed callback ID */ + HAL_I2C_SLAVE_TX_COMPLETE_CB_ID = 0x02U, /*!< I2C Slave Tx Transfer completed callback ID */ + HAL_I2C_SLAVE_RX_COMPLETE_CB_ID = 0x03U, /*!< I2C Slave Rx Transfer completed callback ID */ + HAL_I2C_LISTEN_COMPLETE_CB_ID = 0x04U, /*!< I2C Listen Complete callback ID */ + HAL_I2C_MEM_TX_COMPLETE_CB_ID = 0x05U, /*!< I2C Memory Tx Transfer callback ID */ + HAL_I2C_MEM_RX_COMPLETE_CB_ID = 0x06U, /*!< I2C Memory Rx Transfer completed callback ID */ + HAL_I2C_ERROR_CB_ID = 0x07U, /*!< I2C Error callback ID */ + HAL_I2C_ABORT_CB_ID = 0x08U, /*!< I2C Abort callback ID */ + + HAL_I2C_MSPINIT_CB_ID = 0x09U, /*!< I2C Msp Init callback ID */ + HAL_I2C_MSPDEINIT_CB_ID = 0x0AU /*!< I2C Msp DeInit callback ID */ + +} HAL_I2C_CallbackIDTypeDef; + +/** + * @brief HAL I2C Callback pointer definition + */ +typedef void (*pI2C_CallbackTypeDef)(I2C_HandleTypeDef *hi2c); +/*!< pointer to an I2C callback function */ +typedef void (*pI2C_AddrCallbackTypeDef)(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, + uint16_t AddrMatchCode); +/*!< pointer to an I2C Address Match callback function */ + +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** + * @} + */ +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup I2C_Exported_Constants I2C Exported Constants + * @{ + */ + +/** @defgroup I2C_XFEROPTIONS I2C Sequential Transfer Options + * @{ + */ +#define I2C_FIRST_FRAME ((uint32_t)I2C_SOFTEND_MODE) +#define I2C_FIRST_AND_NEXT_FRAME ((uint32_t)(I2C_RELOAD_MODE | I2C_SOFTEND_MODE)) +#define I2C_NEXT_FRAME ((uint32_t)(I2C_RELOAD_MODE | I2C_SOFTEND_MODE)) +#define I2C_FIRST_AND_LAST_FRAME ((uint32_t)I2C_AUTOEND_MODE) +#define I2C_LAST_FRAME ((uint32_t)I2C_AUTOEND_MODE) +#define I2C_LAST_FRAME_NO_STOP ((uint32_t)I2C_SOFTEND_MODE) + +/* List of XferOptions in usage of : + * 1- Restart condition in all use cases (direction change or not) + */ +#define I2C_OTHER_FRAME (0x000000AAU) +#define I2C_OTHER_AND_LAST_FRAME (0x0000AA00U) +/** + * @} + */ + +/** @defgroup I2C_ADDRESSING_MODE I2C Addressing Mode + * @{ + */ +#define I2C_ADDRESSINGMODE_7BIT (0x00000001U) +#define I2C_ADDRESSINGMODE_10BIT (0x00000002U) +/** + * @} + */ + +/** @defgroup I2C_DUAL_ADDRESSING_MODE I2C Dual Addressing Mode + * @{ + */ +#define I2C_DUALADDRESS_DISABLE (0x00000000U) +#define I2C_DUALADDRESS_ENABLE I2C_OAR2_OA2EN +/** + * @} + */ + +/** @defgroup I2C_OWN_ADDRESS2_MASKS I2C Own Address2 Masks + * @{ + */ +#define I2C_OA2_NOMASK ((uint8_t)0x00U) +#define I2C_OA2_MASK01 ((uint8_t)0x01U) +#define I2C_OA2_MASK02 ((uint8_t)0x02U) +#define I2C_OA2_MASK03 ((uint8_t)0x03U) +#define I2C_OA2_MASK04 ((uint8_t)0x04U) +#define I2C_OA2_MASK05 ((uint8_t)0x05U) +#define I2C_OA2_MASK06 ((uint8_t)0x06U) +#define I2C_OA2_MASK07 ((uint8_t)0x07U) +/** + * @} + */ + +/** @defgroup I2C_GENERAL_CALL_ADDRESSING_MODE I2C General Call Addressing Mode + * @{ + */ +#define I2C_GENERALCALL_DISABLE (0x00000000U) +#define I2C_GENERALCALL_ENABLE I2C_CR1_GCEN +/** + * @} + */ + +/** @defgroup I2C_NOSTRETCH_MODE I2C No-Stretch Mode + * @{ + */ +#define I2C_NOSTRETCH_DISABLE (0x00000000U) +#define I2C_NOSTRETCH_ENABLE I2C_CR1_NOSTRETCH +/** + * @} + */ + +/** @defgroup I2C_MEMORY_ADDRESS_SIZE I2C Memory Address Size + * @{ + */ +#define I2C_MEMADD_SIZE_8BIT (0x00000001U) +#define I2C_MEMADD_SIZE_16BIT (0x00000002U) +/** + * @} + */ + +/** @defgroup I2C_XFERDIRECTION I2C Transfer Direction Master Point of View + * @{ + */ +#define I2C_DIRECTION_TRANSMIT (0x00000000U) +#define I2C_DIRECTION_RECEIVE (0x00000001U) +/** + * @} + */ + +/** @defgroup I2C_RELOAD_END_MODE I2C Reload End Mode + * @{ + */ +#define I2C_RELOAD_MODE I2C_CR2_RELOAD +#define I2C_AUTOEND_MODE I2C_CR2_AUTOEND +#define I2C_SOFTEND_MODE (0x00000000U) +/** + * @} + */ + +/** @defgroup I2C_START_STOP_MODE I2C Start or Stop Mode + * @{ + */ +#define I2C_NO_STARTSTOP (0x00000000U) +#define I2C_GENERATE_STOP (uint32_t)(0x80000000U | I2C_CR2_STOP) +#define I2C_GENERATE_START_READ (uint32_t)(0x80000000U | I2C_CR2_START | I2C_CR2_RD_WRN) +#define I2C_GENERATE_START_WRITE (uint32_t)(0x80000000U | I2C_CR2_START) +/** + * @} + */ + +/** @defgroup I2C_Interrupt_configuration_definition I2C Interrupt configuration definition + * @brief I2C Interrupt definition + * Elements values convention: 0xXXXXXXXX + * - XXXXXXXX : Interrupt control mask + * @{ + */ +#define I2C_IT_ERRI I2C_CR1_ERRIE +#define I2C_IT_TCI I2C_CR1_TCIE +#define I2C_IT_STOPI I2C_CR1_STOPIE +#define I2C_IT_NACKI I2C_CR1_NACKIE +#define I2C_IT_ADDRI I2C_CR1_ADDRIE +#define I2C_IT_RXI I2C_CR1_RXIE +#define I2C_IT_TXI I2C_CR1_TXIE +/** + * @} + */ + +/** @defgroup I2C_Flag_definition I2C Flag definition + * @{ + */ +#define I2C_FLAG_TXE I2C_ISR_TXE +#define I2C_FLAG_TXIS I2C_ISR_TXIS +#define I2C_FLAG_RXNE I2C_ISR_RXNE +#define I2C_FLAG_ADDR I2C_ISR_ADDR +#define I2C_FLAG_AF I2C_ISR_NACKF +#define I2C_FLAG_STOPF I2C_ISR_STOPF +#define I2C_FLAG_TC I2C_ISR_TC +#define I2C_FLAG_TCR I2C_ISR_TCR +#define I2C_FLAG_BERR I2C_ISR_BERR +#define I2C_FLAG_ARLO I2C_ISR_ARLO +#define I2C_FLAG_OVR I2C_ISR_OVR +#define I2C_FLAG_PECERR I2C_ISR_PECERR +#define I2C_FLAG_TIMEOUT I2C_ISR_TIMEOUT +#define I2C_FLAG_ALERT I2C_ISR_ALERT +#define I2C_FLAG_BUSY I2C_ISR_BUSY +#define I2C_FLAG_DIR I2C_ISR_DIR +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ + +/** @defgroup I2C_Exported_Macros I2C Exported Macros + * @{ + */ + +/** @brief Reset I2C handle state. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) do{ \ + (__HANDLE__)->State = HAL_I2C_STATE_RESET; \ + (__HANDLE__)->MspInitCallback = NULL; \ + (__HANDLE__)->MspDeInitCallback = NULL; \ + } while(0) +#else +#define __HAL_I2C_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_I2C_STATE_RESET) +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + +/** @brief Enable the specified I2C interrupt. + * @param __HANDLE__ specifies the I2C Handle. + * @param __INTERRUPT__ specifies the interrupt source to enable. + * This parameter can be one of the following values: + * @arg @ref I2C_IT_ERRI Errors interrupt enable + * @arg @ref I2C_IT_TCI Transfer complete interrupt enable + * @arg @ref I2C_IT_STOPI STOP detection interrupt enable + * @arg @ref I2C_IT_NACKI NACK received interrupt enable + * @arg @ref I2C_IT_ADDRI Address match interrupt enable + * @arg @ref I2C_IT_RXI RX interrupt enable + * @arg @ref I2C_IT_TXI TX interrupt enable + * + * @retval None + */ +#define __HAL_I2C_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR1 |= (__INTERRUPT__)) + +/** @brief Disable the specified I2C interrupt. + * @param __HANDLE__ specifies the I2C Handle. + * @param __INTERRUPT__ specifies the interrupt source to disable. + * This parameter can be one of the following values: + * @arg @ref I2C_IT_ERRI Errors interrupt enable + * @arg @ref I2C_IT_TCI Transfer complete interrupt enable + * @arg @ref I2C_IT_STOPI STOP detection interrupt enable + * @arg @ref I2C_IT_NACKI NACK received interrupt enable + * @arg @ref I2C_IT_ADDRI Address match interrupt enable + * @arg @ref I2C_IT_RXI RX interrupt enable + * @arg @ref I2C_IT_TXI TX interrupt enable + * + * @retval None + */ +#define __HAL_I2C_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR1 &= (~(__INTERRUPT__))) + +/** @brief Check whether the specified I2C interrupt source is enabled or not. + * @param __HANDLE__ specifies the I2C Handle. + * @param __INTERRUPT__ specifies the I2C interrupt source to check. + * This parameter can be one of the following values: + * @arg @ref I2C_IT_ERRI Errors interrupt enable + * @arg @ref I2C_IT_TCI Transfer complete interrupt enable + * @arg @ref I2C_IT_STOPI STOP detection interrupt enable + * @arg @ref I2C_IT_NACKI NACK received interrupt enable + * @arg @ref I2C_IT_ADDRI Address match interrupt enable + * @arg @ref I2C_IT_RXI RX interrupt enable + * @arg @ref I2C_IT_TXI TX interrupt enable + * + * @retval The new state of __INTERRUPT__ (SET or RESET). + */ +#define __HAL_I2C_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR1 & \ + (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) + +/** @brief Check whether the specified I2C flag is set or not. + * @param __HANDLE__ specifies the I2C Handle. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg @ref I2C_FLAG_TXE Transmit data register empty + * @arg @ref I2C_FLAG_TXIS Transmit interrupt status + * @arg @ref I2C_FLAG_RXNE Receive data register not empty + * @arg @ref I2C_FLAG_ADDR Address matched (slave mode) + * @arg @ref I2C_FLAG_AF Acknowledge failure received flag + * @arg @ref I2C_FLAG_STOPF STOP detection flag + * @arg @ref I2C_FLAG_TC Transfer complete (master mode) + * @arg @ref I2C_FLAG_TCR Transfer complete reload + * @arg @ref I2C_FLAG_BERR Bus error + * @arg @ref I2C_FLAG_ARLO Arbitration lost + * @arg @ref I2C_FLAG_OVR Overrun/Underrun + * @arg @ref I2C_FLAG_PECERR PEC error in reception + * @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag + * @arg @ref I2C_FLAG_ALERT SMBus alert + * @arg @ref I2C_FLAG_BUSY Bus busy + * @arg @ref I2C_FLAG_DIR Transfer direction (slave mode) + * + * @retval The new state of __FLAG__ (SET or RESET). + */ +#define I2C_FLAG_MASK (0x0001FFFFU) +#define __HAL_I2C_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & \ + (__FLAG__)) == (__FLAG__)) ? SET : RESET) + +/** @brief Clear the I2C pending flags which are cleared by writing 1 in a specific bit. + * @param __HANDLE__ specifies the I2C Handle. + * @param __FLAG__ specifies the flag to clear. + * This parameter can be any combination of the following values: + * @arg @ref I2C_FLAG_TXE Transmit data register empty + * @arg @ref I2C_FLAG_ADDR Address matched (slave mode) + * @arg @ref I2C_FLAG_AF Acknowledge failure received flag + * @arg @ref I2C_FLAG_STOPF STOP detection flag + * @arg @ref I2C_FLAG_BERR Bus error + * @arg @ref I2C_FLAG_ARLO Arbitration lost + * @arg @ref I2C_FLAG_OVR Overrun/Underrun + * @arg @ref I2C_FLAG_PECERR PEC error in reception + * @arg @ref I2C_FLAG_TIMEOUT Timeout or Tlow detection flag + * @arg @ref I2C_FLAG_ALERT SMBus alert + * + * @retval None + */ +#define __HAL_I2C_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__FLAG__) == I2C_FLAG_TXE) ? \ + ((__HANDLE__)->Instance->ISR |= (__FLAG__)) : \ + ((__HANDLE__)->Instance->ICR = (__FLAG__))) + +/** @brief Enable the specified I2C peripheral. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#define __HAL_I2C_ENABLE(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE)) + +/** @brief Disable the specified I2C peripheral. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#define __HAL_I2C_DISABLE(__HANDLE__) (CLEAR_BIT((__HANDLE__)->Instance->CR1, I2C_CR1_PE)) + +/** @brief Generate a Non-Acknowledge I2C peripheral in Slave mode. + * @param __HANDLE__ specifies the I2C Handle. + * @retval None + */ +#define __HAL_I2C_GENERATE_NACK(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->CR2, I2C_CR2_NACK)) +/** + * @} + */ + +/* Include I2C HAL Extended module */ +#include "stm32f7xx_hal_i2c_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup I2C_Exported_Functions + * @{ + */ + +/** @addtogroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ +/* Initialization and de-initialization functions******************************/ +HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c); + +/* Callbacks Register/UnRegister functions ***********************************/ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID, + pI2C_CallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID); + +HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** @addtogroup I2C_Exported_Functions_Group2 Input and Output operation functions + * @{ + */ +/* IO operation functions ****************************************************/ +/******* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, + uint32_t Timeout); + +/******* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); + +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c); +HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress); + +/******* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size); + +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions); +/** + * @} + */ + +/** @addtogroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks + * @{ + */ +/******* I2C IRQHandler and Callbacks used in non blocking modes (Interrupt and DMA) */ +void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c); +void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode); +void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c); +void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c); +/** + * @} + */ + +/** @addtogroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions + * @{ + */ +/* Peripheral State, Mode and Error functions *********************************/ +HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c); +HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c); +uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c); + +/** + * @} + */ + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup I2C_Private_Constants I2C Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup I2C_Private_Macro I2C Private Macros + * @{ + */ + +#define IS_I2C_ADDRESSING_MODE(MODE) (((MODE) == I2C_ADDRESSINGMODE_7BIT) || \ + ((MODE) == I2C_ADDRESSINGMODE_10BIT)) + +#define IS_I2C_DUAL_ADDRESS(ADDRESS) (((ADDRESS) == I2C_DUALADDRESS_DISABLE) || \ + ((ADDRESS) == I2C_DUALADDRESS_ENABLE)) + +#define IS_I2C_OWN_ADDRESS2_MASK(MASK) (((MASK) == I2C_OA2_NOMASK) || \ + ((MASK) == I2C_OA2_MASK01) || \ + ((MASK) == I2C_OA2_MASK02) || \ + ((MASK) == I2C_OA2_MASK03) || \ + ((MASK) == I2C_OA2_MASK04) || \ + ((MASK) == I2C_OA2_MASK05) || \ + ((MASK) == I2C_OA2_MASK06) || \ + ((MASK) == I2C_OA2_MASK07)) + +#define IS_I2C_GENERAL_CALL(CALL) (((CALL) == I2C_GENERALCALL_DISABLE) || \ + ((CALL) == I2C_GENERALCALL_ENABLE)) + +#define IS_I2C_NO_STRETCH(STRETCH) (((STRETCH) == I2C_NOSTRETCH_DISABLE) || \ + ((STRETCH) == I2C_NOSTRETCH_ENABLE)) + +#define IS_I2C_MEMADD_SIZE(SIZE) (((SIZE) == I2C_MEMADD_SIZE_8BIT) || \ + ((SIZE) == I2C_MEMADD_SIZE_16BIT)) + +#define IS_TRANSFER_MODE(MODE) (((MODE) == I2C_RELOAD_MODE) || \ + ((MODE) == I2C_AUTOEND_MODE) || \ + ((MODE) == I2C_SOFTEND_MODE)) + +#define IS_TRANSFER_REQUEST(REQUEST) (((REQUEST) == I2C_GENERATE_STOP) || \ + ((REQUEST) == I2C_GENERATE_START_READ) || \ + ((REQUEST) == I2C_GENERATE_START_WRITE) || \ + ((REQUEST) == I2C_NO_STARTSTOP)) + +#define IS_I2C_TRANSFER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_FIRST_FRAME) || \ + ((REQUEST) == I2C_FIRST_AND_NEXT_FRAME) || \ + ((REQUEST) == I2C_NEXT_FRAME) || \ + ((REQUEST) == I2C_FIRST_AND_LAST_FRAME) || \ + ((REQUEST) == I2C_LAST_FRAME) || \ + ((REQUEST) == I2C_LAST_FRAME_NO_STOP) || \ + IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST)) + +#define IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(REQUEST) (((REQUEST) == I2C_OTHER_FRAME) || \ + ((REQUEST) == I2C_OTHER_AND_LAST_FRAME)) + +#define I2C_RESET_CR2(__HANDLE__) ((__HANDLE__)->Instance->CR2 &= \ + (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_HEAD10R | \ + I2C_CR2_NBYTES | I2C_CR2_RELOAD | \ + I2C_CR2_RD_WRN))) + +#define I2C_GET_ADDR_MATCH(__HANDLE__) ((uint16_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_ADDCODE) \ + >> 16U)) +#define I2C_GET_DIR(__HANDLE__) ((uint8_t)(((__HANDLE__)->Instance->ISR & I2C_ISR_DIR) \ + >> 16U)) +#define I2C_GET_STOP_MODE(__HANDLE__) ((__HANDLE__)->Instance->CR2 & I2C_CR2_AUTOEND) +#define I2C_GET_OWN_ADDRESS1(__HANDLE__) ((uint16_t)((__HANDLE__)->Instance->OAR1 & I2C_OAR1_OA1)) +#define I2C_GET_OWN_ADDRESS2(__HANDLE__) ((uint16_t)((__HANDLE__)->Instance->OAR2 & I2C_OAR2_OA2)) + +#define IS_I2C_OWN_ADDRESS1(ADDRESS1) ((ADDRESS1) <= 0x000003FFU) +#define IS_I2C_OWN_ADDRESS2(ADDRESS2) ((ADDRESS2) <= (uint16_t)0x00FFU) + +#define I2C_MEM_ADD_MSB(__ADDRESS__) ((uint8_t)((uint16_t)(((uint16_t)((__ADDRESS__) & \ + (uint16_t)(0xFF00U))) >> 8U))) +#define I2C_MEM_ADD_LSB(__ADDRESS__) ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FFU)))) + +#define I2C_GENERATE_START(__ADDMODE__,__ADDRESS__) (((__ADDMODE__) == I2C_ADDRESSINGMODE_7BIT) ? \ + (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \ + (I2C_CR2_START) | (I2C_CR2_AUTOEND)) & \ + (~I2C_CR2_RD_WRN)) : \ + (uint32_t)((((uint32_t)(__ADDRESS__) & (I2C_CR2_SADD)) | \ + (I2C_CR2_ADD10) | (I2C_CR2_START) | \ + (I2C_CR2_AUTOEND)) & (~I2C_CR2_RD_WRN))) + +#define I2C_CHECK_FLAG(__ISR__, __FLAG__) ((((__ISR__) & ((__FLAG__) & I2C_FLAG_MASK)) == \ + ((__FLAG__) & I2C_FLAG_MASK)) ? SET : RESET) +#define I2C_CHECK_IT_SOURCE(__CR1__, __IT__) ((((__CR1__) & (__IT__)) == (__IT__)) ? SET : RESET) +/** + * @} + */ + +/* Private Functions ---------------------------------------------------------*/ +/** @defgroup I2C_Private_Functions I2C Private Functions + * @{ + */ +/* Private functions are defined in stm32f7xx_hal_i2c.c file */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32F7xx_HAL_I2C_H */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h new file mode 100644 index 0000000..27bdcf0 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h @@ -0,0 +1,212 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_i2c_ex.h + * @author MCD Application Team + * @brief Header file of I2C HAL Extended module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_HAL_I2C_EX_H +#define STM32F7xx_HAL_I2C_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup I2CEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup I2CEx_Exported_Constants I2C Extended Exported Constants + * @{ + */ + +/** @defgroup I2CEx_Analog_Filter I2C Extended Analog Filter + * @{ + */ +#define I2C_ANALOGFILTER_ENABLE 0x00000000U +#define I2C_ANALOGFILTER_DISABLE I2C_CR1_ANFOFF +/** + * @} + */ + +/** @defgroup I2CEx_FastModePlus I2C Extended Fast Mode Plus + * @{ + */ +#define I2C_FMP_NOT_SUPPORTED 0xAAAA0000U /*!< Fast Mode Plus not supported */ +#if defined(SYSCFG_PMC_I2C_PB6_FMP) +#define I2C_FASTMODEPLUS_PB6 SYSCFG_PMC_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */ +#define I2C_FASTMODEPLUS_PB7 SYSCFG_PMC_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */ +#else +#define I2C_FASTMODEPLUS_PB6 (uint32_t)(0x00000004U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB6 not supported */ +#define I2C_FASTMODEPLUS_PB7 (uint32_t)(0x00000008U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB7 not supported */ +#endif /* SYSCFG_PMC_I2C_PB6_FMP */ +#if defined(SYSCFG_PMC_I2C_PB8_FMP) +#define I2C_FASTMODEPLUS_PB8 SYSCFG_PMC_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */ +#define I2C_FASTMODEPLUS_PB9 SYSCFG_PMC_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */ +#else +#define I2C_FASTMODEPLUS_PB8 (uint32_t)(0x00000010U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB8 not supported */ +#define I2C_FASTMODEPLUS_PB9 (uint32_t)(0x00000012U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus PB9 not supported */ +#endif /* SYSCFG_PMC_I2C_PB8_FMP */ +#if defined(SYSCFG_PMC_I2C1_FMP) +#define I2C_FASTMODEPLUS_I2C1 SYSCFG_PMC_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */ +#else +#define I2C_FASTMODEPLUS_I2C1 (uint32_t)(0x00000100U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C1 not supported */ +#endif /* SYSCFG_PMC_I2C1_FMP */ +#if defined(SYSCFG_PMC_I2C2_FMP) +#define I2C_FASTMODEPLUS_I2C2 SYSCFG_PMC_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */ +#else +#define I2C_FASTMODEPLUS_I2C2 (uint32_t)(0x00000200U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C2 not supported */ +#endif /* SYSCFG_PMC_I2C2_FMP */ +#if defined(SYSCFG_PMC_I2C3_FMP) +#define I2C_FASTMODEPLUS_I2C3 SYSCFG_PMC_I2C3_FMP /*!< Enable Fast Mode Plus on I2C3 pins */ +#else +#define I2C_FASTMODEPLUS_I2C3 (uint32_t)(0x00000400U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C3 not supported */ +#endif /* SYSCFG_PMC_I2C3_FMP */ +#if defined(SYSCFG_PMC_I2C4_FMP) +#define I2C_FASTMODEPLUS_I2C4 SYSCFG_PMC_I2C4_FMP /*!< Enable Fast Mode Plus on I2C4 pins */ +#else +#define I2C_FASTMODEPLUS_I2C4 (uint32_t)(0x00000800U | I2C_FMP_NOT_SUPPORTED) /*!< Fast Mode Plus I2C4 not supported */ +#endif /* SYSCFG_PMC_I2C4_FMP */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup I2CEx_Exported_Macros I2C Extended Exported Macros + * @{ + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup I2CEx_Exported_Functions I2C Extended Exported Functions + * @{ + */ + +/** @addtogroup I2CEx_Exported_Functions_Group1 Filter Mode Functions + * @{ + */ +/* Peripheral Control functions ************************************************/ +HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter); +HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter); +/** + * @} + */ +#if (defined(SYSCFG_PMC_I2C_PB6_FMP) || defined(SYSCFG_PMC_I2C_PB7_FMP)) || (defined(SYSCFG_PMC_I2C_PB8_FMP) || defined(SYSCFG_PMC_I2C_PB9_FMP)) || (defined(SYSCFG_PMC_I2C1_FMP)) || (defined(SYSCFG_PMC_I2C2_FMP)) || defined(SYSCFG_PMC_I2C3_FMP) || defined(SYSCFG_PMC_I2C4_FMP) + +/** @addtogroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions + * @{ + */ +void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus); +void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus); +/** + * @} + */ +#endif /* Fast Mode Plus Availability */ + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup I2CEx_Private_Constants I2C Extended Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup I2CEx_Private_Macro I2C Extended Private Macros + * @{ + */ +#define IS_I2C_ANALOG_FILTER(FILTER) (((FILTER) == I2C_ANALOGFILTER_ENABLE) || \ + ((FILTER) == I2C_ANALOGFILTER_DISABLE)) + +#define IS_I2C_DIGITAL_FILTER(FILTER) ((FILTER) <= 0x0000000FU) + +#if defined(SYSCFG_PMC_I2C4_FMP) +#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_I2C4) == I2C_FASTMODEPLUS_I2C4)) +#elif defined(SYSCFG_PMC_I2C3_FMP) +#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_I2C3) == I2C_FASTMODEPLUS_I2C3)) +#elif defined(SYSCFG_PMC_I2C2_FMP) +#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_I2C2) == I2C_FASTMODEPLUS_I2C2)) +#elif defined(SYSCFG_PMC_I2C1_FMP) +#define IS_I2C_FASTMODEPLUS(__CONFIG__) ((((__CONFIG__) & I2C_FASTMODEPLUS_PB6) == I2C_FASTMODEPLUS_PB6) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB7) == I2C_FASTMODEPLUS_PB7) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB8) == I2C_FASTMODEPLUS_PB8) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \ + (((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1)) +#endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */ +/** + * @} + */ + +/* Private Functions ---------------------------------------------------------*/ +/** @defgroup I2CEx_Private_Functions I2C Extended Private Functions + * @{ + */ +/* Private functions are defined in stm32f7xx_hal_i2c_ex.c file */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F7xx_HAL_I2C_EX_H */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h new file mode 100644 index 0000000..736ff6f --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h @@ -0,0 +1,402 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_pwr.h + * @author MCD Application Team + * @brief Header file of PWR HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_PWR_H +#define __STM32F7xx_HAL_PWR_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup PWR + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup PWR_Exported_Types PWR Exported Types + * @{ + */ + +/** + * @brief PWR PVD configuration structure definition + */ +typedef struct +{ + uint32_t PVDLevel; /*!< PVDLevel: Specifies the PVD detection level. + This parameter can be a value of @ref PWR_PVD_detection_level */ + + uint32_t Mode; /*!< Mode: Specifies the operating mode for the selected pins. + This parameter can be a value of @ref PWR_PVD_Mode */ +}PWR_PVDTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PWR_Exported_Constants PWR Exported Constants + * @{ + */ + +/** @defgroup PWR_PVD_detection_level PWR PVD detection level + * @{ + */ +#define PWR_PVDLEVEL_0 PWR_CR1_PLS_LEV0 +#define PWR_PVDLEVEL_1 PWR_CR1_PLS_LEV1 +#define PWR_PVDLEVEL_2 PWR_CR1_PLS_LEV2 +#define PWR_PVDLEVEL_3 PWR_CR1_PLS_LEV3 +#define PWR_PVDLEVEL_4 PWR_CR1_PLS_LEV4 +#define PWR_PVDLEVEL_5 PWR_CR1_PLS_LEV5 +#define PWR_PVDLEVEL_6 PWR_CR1_PLS_LEV6 +#define PWR_PVDLEVEL_7 PWR_CR1_PLS_LEV7/* External input analog voltage + (Compare internally to VREFINT) */ + +/** + * @} + */ + +/** @defgroup PWR_PVD_Mode PWR PVD Mode + * @{ + */ +#define PWR_PVD_MODE_NORMAL ((uint32_t)0x00000000U) /*!< basic mode is used */ +#define PWR_PVD_MODE_IT_RISING ((uint32_t)0x00010001U) /*!< External Interrupt Mode with Rising edge trigger detection */ +#define PWR_PVD_MODE_IT_FALLING ((uint32_t)0x00010002U) /*!< External Interrupt Mode with Falling edge trigger detection */ +#define PWR_PVD_MODE_IT_RISING_FALLING ((uint32_t)0x00010003U) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ +#define PWR_PVD_MODE_EVENT_RISING ((uint32_t)0x00020001U) /*!< Event Mode with Rising edge trigger detection */ +#define PWR_PVD_MODE_EVENT_FALLING ((uint32_t)0x00020002U) /*!< Event Mode with Falling edge trigger detection */ +#define PWR_PVD_MODE_EVENT_RISING_FALLING ((uint32_t)0x00020003U) /*!< Event Mode with Rising/Falling edge trigger detection */ +/** + * @} + */ + +/** @defgroup PWR_Regulator_state_in_STOP_mode PWR Regulator state in SLEEP/STOP mode + * @{ + */ +#define PWR_MAINREGULATOR_ON ((uint32_t)0x00000000U) +#define PWR_LOWPOWERREGULATOR_ON PWR_CR1_LPDS +/** + * @} + */ + +/** @defgroup PWR_SLEEP_mode_entry PWR SLEEP mode entry + * @{ + */ +#define PWR_SLEEPENTRY_WFI ((uint8_t)0x01U) +#define PWR_SLEEPENTRY_WFE ((uint8_t)0x02U) +/** + * @} + */ + +/** @defgroup PWR_STOP_mode_entry PWR STOP mode entry + * @{ + */ +#define PWR_STOPENTRY_WFI ((uint8_t)0x01U) +#define PWR_STOPENTRY_WFE ((uint8_t)0x02U) +/** + * @} + */ + +/** @defgroup PWR_Regulator_Voltage_Scale PWR Regulator Voltage Scale + * @{ + */ +#define PWR_REGULATOR_VOLTAGE_SCALE1 PWR_CR1_VOS +#define PWR_REGULATOR_VOLTAGE_SCALE2 PWR_CR1_VOS_1 +#define PWR_REGULATOR_VOLTAGE_SCALE3 PWR_CR1_VOS_0 +/** + * @} + */ + +/** @defgroup PWR_Flag PWR Flag + * @{ + */ +#define PWR_FLAG_WU PWR_CSR1_WUIF +#define PWR_FLAG_SB PWR_CSR1_SBF +#define PWR_FLAG_PVDO PWR_CSR1_PVDO +#define PWR_FLAG_BRR PWR_CSR1_BRR +#define PWR_FLAG_VOSRDY PWR_CSR1_VOSRDY +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup PWR_Exported_Macro PWR Exported Macro + * @{ + */ + +/** @brief macros configure the main internal regulator output voltage. + * @param __REGULATOR__ specifies the regulator output voltage to achieve + * a tradeoff between performance and power consumption when the device does + * not operate at the maximum frequency (refer to the datasheets for more details). + * This parameter can be one of the following values: + * @arg PWR_REGULATOR_VOLTAGE_SCALE1: Regulator voltage output Scale 1 mode + * @arg PWR_REGULATOR_VOLTAGE_SCALE2: Regulator voltage output Scale 2 mode + * @arg PWR_REGULATOR_VOLTAGE_SCALE3: Regulator voltage output Scale 3 mode + * @retval None + */ +#define __HAL_PWR_VOLTAGESCALING_CONFIG(__REGULATOR__) do { \ + __IO uint32_t tmpreg; \ + MODIFY_REG(PWR->CR1, PWR_CR1_VOS, (__REGULATOR__)); \ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(PWR->CR1, PWR_CR1_VOS); \ + UNUSED(tmpreg); \ + } while(0) + +/** @brief Check PWR flag is set or not. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg PWR_FLAG_WU: Wake Up flag. This flag indicates that a wakeup event + * was received on the internal wakeup line in standby mode (RTC alarm (Alarm A or Alarm B), + * RTC Tamper event, RTC TimeStamp event or RTC Wakeup)). + * @arg PWR_FLAG_SB: StandBy flag. This flag indicates that the system was + * resumed from StandBy mode. + * @arg PWR_FLAG_PVDO: PVD Output. This flag is valid only if PVD is enabled + * by the HAL_PWR_EnablePVD() function. The PVD is stopped by Standby mode + * For this reason, this bit is equal to 0 after Standby or reset + * until the PVDE bit is set. + * @arg PWR_FLAG_BRR: Backup regulator ready flag. This bit is not reset + * when the device wakes up from Standby mode or by a system reset + * or power reset. + * @arg PWR_FLAG_VOSRDY: This flag indicates that the Regulator voltage + * scaling output selection is ready. + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_PWR_GET_FLAG(__FLAG__) ((PWR->CSR1 & (__FLAG__)) == (__FLAG__)) + +/** @brief Clear the PWR's pending flags. + * @param __FLAG__ specifies the flag to clear. + * This parameter can be one of the following values: + * @arg PWR_FLAG_SB: StandBy flag + */ +#define __HAL_PWR_CLEAR_FLAG(__FLAG__) (PWR->CR1 |= (__FLAG__) << 2) + +/** + * @brief Enable the PVD Exti Line 16. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_IT() (EXTI->IMR |= (PWR_EXTI_LINE_PVD)) + +/** + * @brief Disable the PVD EXTI Line 16. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_IT() (EXTI->IMR &= ~(PWR_EXTI_LINE_PVD)) + +/** + * @brief Enable event on PVD Exti Line 16. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_EVENT() (EXTI->EMR |= (PWR_EXTI_LINE_PVD)) + +/** + * @brief Disable event on PVD Exti Line 16. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_EVENT() (EXTI->EMR &= ~(PWR_EXTI_LINE_PVD)) + +/** + * @brief Enable the PVD Extended Interrupt Rising Trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE() SET_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD) + +/** + * @brief Disable the PVD Extended Interrupt Rising Trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE() CLEAR_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD) + +/** + * @brief Enable the PVD Extended Interrupt Falling Trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE() SET_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD) + + +/** + * @brief Disable the PVD Extended Interrupt Falling Trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE() CLEAR_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD) + + +/** + * @brief PVD EXTI line configuration: set rising & falling edge trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE() __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE(); + +/** + * @brief Disable the PVD Extended Interrupt Rising & Falling Trigger. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE() __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); + +/** + * @brief checks whether the specified PVD Exti interrupt flag is set or not. + * @retval EXTI PVD Line Status. + */ +#define __HAL_PWR_PVD_EXTI_GET_FLAG() (EXTI->PR & (PWR_EXTI_LINE_PVD)) + +/** + * @brief Clear the PVD Exti flag. + * @retval None. + */ +#define __HAL_PWR_PVD_EXTI_CLEAR_FLAG() (EXTI->PR = (PWR_EXTI_LINE_PVD)) + +/** + * @brief Generates a Software interrupt on PVD EXTI line. + * @retval None + */ +#define __HAL_PWR_PVD_EXTI_GENERATE_SWIT() (EXTI->SWIER |= (PWR_EXTI_LINE_PVD)) + +/** + * @} + */ + +/* Include PWR HAL Extension module */ +#include "stm32f7xx_hal_pwr_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PWR_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @addtogroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ +/* Initialization and de-initialization functions *****************************/ +void HAL_PWR_DeInit(void); +void HAL_PWR_EnableBkUpAccess(void); +void HAL_PWR_DisableBkUpAccess(void); +/** + * @} + */ + +/** @addtogroup PWR_Exported_Functions_Group2 Peripheral Control functions + * @{ + */ +/* Peripheral Control functions **********************************************/ +/* PVD configuration */ +void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD); +void HAL_PWR_EnablePVD(void); +void HAL_PWR_DisablePVD(void); + +/* WakeUp pins configuration */ +void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity); +void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx); + +/* Low Power modes entry */ +void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry); +void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry); +void HAL_PWR_EnterSTANDBYMode(void); + +/* Power PVD IRQ Handler */ +void HAL_PWR_PVD_IRQHandler(void); +void HAL_PWR_PVDCallback(void); + +/* Cortex System Control functions *******************************************/ +void HAL_PWR_EnableSleepOnExit(void); +void HAL_PWR_DisableSleepOnExit(void); +void HAL_PWR_EnableSEVOnPend(void); +void HAL_PWR_DisableSEVOnPend(void); +/** + * @} + */ + +/** + * @} + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup PWR_Private_Constants PWR Private Constants + * @{ + */ + +/** @defgroup PWR_PVD_EXTI_Line PWR PVD EXTI Line + * @{ + */ +#define PWR_EXTI_LINE_PVD ((uint32_t)EXTI_IMR_IM16) /*!< External interrupt line 16 Connected to the PVD EXTI Line */ +/** + * @} + */ + +/** + * @} + */ +/* Private macros ------------------------------------------------------------*/ +/** @defgroup PWR_Private_Macros PWR Private Macros + * @{ + */ + +/** @defgroup PWR_IS_PWR_Definitions PWR Private macros to check input parameters + * @{ + */ +#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLEVEL_0) || ((LEVEL) == PWR_PVDLEVEL_1)|| \ + ((LEVEL) == PWR_PVDLEVEL_2) || ((LEVEL) == PWR_PVDLEVEL_3)|| \ + ((LEVEL) == PWR_PVDLEVEL_4) || ((LEVEL) == PWR_PVDLEVEL_5)|| \ + ((LEVEL) == PWR_PVDLEVEL_6) || ((LEVEL) == PWR_PVDLEVEL_7)) +#define IS_PWR_PVD_MODE(MODE) (((MODE) == PWR_PVD_MODE_IT_RISING)|| ((MODE) == PWR_PVD_MODE_IT_FALLING) || \ + ((MODE) == PWR_PVD_MODE_IT_RISING_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING) || \ + ((MODE) == PWR_PVD_MODE_EVENT_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING_FALLING) || \ + ((MODE) == PWR_PVD_MODE_NORMAL)) +#define IS_PWR_REGULATOR(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_ON) || \ + ((REGULATOR) == PWR_LOWPOWERREGULATOR_ON)) +#define IS_PWR_SLEEP_ENTRY(ENTRY) (((ENTRY) == PWR_SLEEPENTRY_WFI) || ((ENTRY) == PWR_SLEEPENTRY_WFE)) +#define IS_PWR_STOP_ENTRY(ENTRY) (((ENTRY) == PWR_STOPENTRY_WFI) || ((ENTRY) == PWR_STOPENTRY_WFE)) +#define IS_PWR_REGULATOR_VOLTAGE(VOLTAGE) (((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE1) || \ + ((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE2) || \ + ((VOLTAGE) == PWR_REGULATOR_VOLTAGE_SCALE3)) + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* __STM32F7xx_HAL_PWR_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h new file mode 100644 index 0000000..e4a5995 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h @@ -0,0 +1,260 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_pwr_ex.h + * @author MCD Application Team + * @brief Header file of PWR HAL Extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_PWR_EX_H +#define __STM32F7xx_HAL_PWR_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup PWREx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PWREx_Exported_Constants PWREx Exported Constants + * @{ + */ +/** @defgroup PWREx_WakeUp_Pins PWREx Wake Up Pins + * @{ + */ +#define PWR_WAKEUP_PIN1 PWR_CSR2_EWUP1 +#define PWR_WAKEUP_PIN2 PWR_CSR2_EWUP2 +#define PWR_WAKEUP_PIN3 PWR_CSR2_EWUP3 +#define PWR_WAKEUP_PIN4 PWR_CSR2_EWUP4 +#define PWR_WAKEUP_PIN5 PWR_CSR2_EWUP5 +#define PWR_WAKEUP_PIN6 PWR_CSR2_EWUP6 +#define PWR_WAKEUP_PIN1_HIGH PWR_CSR2_EWUP1 +#define PWR_WAKEUP_PIN2_HIGH PWR_CSR2_EWUP2 +#define PWR_WAKEUP_PIN3_HIGH PWR_CSR2_EWUP3 +#define PWR_WAKEUP_PIN4_HIGH PWR_CSR2_EWUP4 +#define PWR_WAKEUP_PIN5_HIGH PWR_CSR2_EWUP5 +#define PWR_WAKEUP_PIN6_HIGH PWR_CSR2_EWUP6 +#define PWR_WAKEUP_PIN1_LOW (uint32_t)((PWR_CR2_WUPP1<<6) | PWR_CSR2_EWUP1) +#define PWR_WAKEUP_PIN2_LOW (uint32_t)((PWR_CR2_WUPP2<<6) | PWR_CSR2_EWUP2) +#define PWR_WAKEUP_PIN3_LOW (uint32_t)((PWR_CR2_WUPP3<<6) | PWR_CSR2_EWUP3) +#define PWR_WAKEUP_PIN4_LOW (uint32_t)((PWR_CR2_WUPP4<<6) | PWR_CSR2_EWUP4) +#define PWR_WAKEUP_PIN5_LOW (uint32_t)((PWR_CR2_WUPP5<<6) | PWR_CSR2_EWUP5) +#define PWR_WAKEUP_PIN6_LOW (uint32_t)((PWR_CR2_WUPP6<<6) | PWR_CSR2_EWUP6) + +/** + * @} + */ + +/** @defgroup PWREx_Regulator_state_in_UnderDrive_mode PWREx Regulator state in UnderDrive mode + * @{ + */ +#define PWR_MAINREGULATOR_UNDERDRIVE_ON PWR_CR1_MRUDS +#define PWR_LOWPOWERREGULATOR_UNDERDRIVE_ON ((uint32_t)(PWR_CR1_LPDS | PWR_CR1_LPUDS)) +/** + * @} + */ + +/** @defgroup PWREx_Over_Under_Drive_Flag PWREx Over Under Drive Flag + * @{ + */ +#define PWR_FLAG_ODRDY PWR_CSR1_ODRDY +#define PWR_FLAG_ODSWRDY PWR_CSR1_ODSWRDY +#define PWR_FLAG_UDRDY PWR_CSR1_UDRDY +/** + * @} + */ + +/** @defgroup PWREx_Wakeup_Pins_Flag PWREx Wake Up Pin Flags + * @{ + */ +#define PWR_WAKEUP_PIN_FLAG1 PWR_CSR2_WUPF1 +#define PWR_WAKEUP_PIN_FLAG2 PWR_CSR2_WUPF2 +#define PWR_WAKEUP_PIN_FLAG3 PWR_CSR2_WUPF3 +#define PWR_WAKEUP_PIN_FLAG4 PWR_CSR2_WUPF4 +#define PWR_WAKEUP_PIN_FLAG5 PWR_CSR2_WUPF5 +#define PWR_WAKEUP_PIN_FLAG6 PWR_CSR2_WUPF6 +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup PWREx_Exported_Macro PWREx Exported Macro + * @{ + */ +/** @brief Macros to enable or disable the Over drive mode. + */ +#define __HAL_PWR_OVERDRIVE_ENABLE() (PWR->CR1 |= (uint32_t)PWR_CR1_ODEN) +#define __HAL_PWR_OVERDRIVE_DISABLE() (PWR->CR1 &= (uint32_t)(~PWR_CR1_ODEN)) + +/** @brief Macros to enable or disable the Over drive switching. + */ +#define __HAL_PWR_OVERDRIVESWITCHING_ENABLE() (PWR->CR1 |= (uint32_t)PWR_CR1_ODSWEN) +#define __HAL_PWR_OVERDRIVESWITCHING_DISABLE() (PWR->CR1 &= (uint32_t)(~PWR_CR1_ODSWEN)) + +/** @brief Macros to enable or disable the Under drive mode. + * @note This mode is enabled only with STOP low power mode. + * In this mode, the 1.2V domain is preserved in reduced leakage mode. This + * mode is only available when the main regulator or the low power regulator + * is in low voltage mode. + * @note If the Under-drive mode was enabled, it is automatically disabled after + * exiting Stop mode. + * When the voltage regulator operates in Under-drive mode, an additional + * startup delay is induced when waking up from Stop mode. + */ +#define __HAL_PWR_UNDERDRIVE_ENABLE() (PWR->CR1 |= (uint32_t)PWR_CR1_UDEN) +#define __HAL_PWR_UNDERDRIVE_DISABLE() (PWR->CR1 &= (uint32_t)(~PWR_CR1_UDEN)) + +/** @brief Check PWR flag is set or not. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg PWR_FLAG_ODRDY: This flag indicates that the Over-drive mode + * is ready + * @arg PWR_FLAG_ODSWRDY: This flag indicates that the Over-drive mode + * switching is ready + * @arg PWR_FLAG_UDRDY: This flag indicates that the Under-drive mode + * is enabled in Stop mode + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_PWR_GET_ODRUDR_FLAG(__FLAG__) ((PWR->CSR1 & (__FLAG__)) == (__FLAG__)) + +/** @brief Clear the Under-Drive Ready flag. + */ +#define __HAL_PWR_CLEAR_ODRUDR_FLAG() (PWR->CSR1 |= (PWR_FLAG_UDRDY | PWR_CSR1_EIWUP)) + +/** @brief Check Wake Up flag is set or not. + * @param __WUFLAG__ specifies the Wake Up flag to check. + * This parameter can be one of the following values: + * @arg PWR_WAKEUP_PIN_FLAG1: Wakeup Pin Flag for PA0 + * @arg PWR_WAKEUP_PIN_FLAG2: Wakeup Pin Flag for PA2 + * @arg PWR_WAKEUP_PIN_FLAG3: Wakeup Pin Flag for PC1 + * @arg PWR_WAKEUP_PIN_FLAG4: Wakeup Pin Flag for PC13 + * @arg PWR_WAKEUP_PIN_FLAG5: Wakeup Pin Flag for PI8 + * @arg PWR_WAKEUP_PIN_FLAG6: Wakeup Pin Flag for PI11 + */ +#define __HAL_PWR_GET_WAKEUP_FLAG(__WUFLAG__) (PWR->CSR2 & (__WUFLAG__)) + +/** @brief Clear the WakeUp pins flags. + * @param __WUFLAG__ specifies the Wake Up pin flag to clear. + * This parameter can be one of the following values: + * @arg PWR_WAKEUP_PIN_FLAG1: Wakeup Pin Flag for PA0 + * @arg PWR_WAKEUP_PIN_FLAG2: Wakeup Pin Flag for PA2 + * @arg PWR_WAKEUP_PIN_FLAG3: Wakeup Pin Flag for PC1 + * @arg PWR_WAKEUP_PIN_FLAG4: Wakeup Pin Flag for PC13 + * @arg PWR_WAKEUP_PIN_FLAG5: Wakeup Pin Flag for PI8 + * @arg PWR_WAKEUP_PIN_FLAG6: Wakeup Pin Flag for PI11 + */ +#define __HAL_PWR_CLEAR_WAKEUP_FLAG(__WUFLAG__) (PWR->CR2 |= (__WUFLAG__)) +/** + * @} + */ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PWREx_Exported_Functions PWREx Exported Functions + * @{ + */ + +/** @addtogroup PWREx_Exported_Functions_Group1 + * @{ + */ +uint32_t HAL_PWREx_GetVoltageRange(void); +HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling); + +void HAL_PWREx_EnableFlashPowerDown(void); +void HAL_PWREx_DisableFlashPowerDown(void); +HAL_StatusTypeDef HAL_PWREx_EnableBkUpReg(void); +HAL_StatusTypeDef HAL_PWREx_DisableBkUpReg(void); + +void HAL_PWREx_EnableMainRegulatorLowVoltage(void); +void HAL_PWREx_DisableMainRegulatorLowVoltage(void); +void HAL_PWREx_EnableLowRegulatorLowVoltage(void); +void HAL_PWREx_DisableLowRegulatorLowVoltage(void); + +HAL_StatusTypeDef HAL_PWREx_EnableOverDrive(void); +HAL_StatusTypeDef HAL_PWREx_DisableOverDrive(void); +HAL_StatusTypeDef HAL_PWREx_EnterUnderDriveSTOPMode(uint32_t Regulator, uint8_t STOPEntry); + +/** + * @} + */ + +/** + * @} + */ +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @defgroup PWREx_Private_Macros PWREx Private Macros + * @{ + */ + +/** @defgroup PWREx_IS_PWR_Definitions PWREx Private macros to check input parameters + * @{ + */ +#define IS_PWR_REGULATOR_UNDERDRIVE(REGULATOR) (((REGULATOR) == PWR_MAINREGULATOR_UNDERDRIVE_ON) || \ + ((REGULATOR) == PWR_LOWPOWERREGULATOR_UNDERDRIVE_ON)) +#define IS_PWR_WAKEUP_PIN(__PIN__) (((__PIN__) == PWR_WAKEUP_PIN1) || \ + ((__PIN__) == PWR_WAKEUP_PIN2) || \ + ((__PIN__) == PWR_WAKEUP_PIN3) || \ + ((__PIN__) == PWR_WAKEUP_PIN4) || \ + ((__PIN__) == PWR_WAKEUP_PIN5) || \ + ((__PIN__) == PWR_WAKEUP_PIN6) || \ + ((__PIN__) == PWR_WAKEUP_PIN1_HIGH) || \ + ((__PIN__) == PWR_WAKEUP_PIN2_HIGH) || \ + ((__PIN__) == PWR_WAKEUP_PIN3_HIGH) || \ + ((__PIN__) == PWR_WAKEUP_PIN4_HIGH) || \ + ((__PIN__) == PWR_WAKEUP_PIN5_HIGH) || \ + ((__PIN__) == PWR_WAKEUP_PIN6_HIGH) || \ + ((__PIN__) == PWR_WAKEUP_PIN1_LOW) || \ + ((__PIN__) == PWR_WAKEUP_PIN2_LOW) || \ + ((__PIN__) == PWR_WAKEUP_PIN3_LOW) || \ + ((__PIN__) == PWR_WAKEUP_PIN4_LOW) || \ + ((__PIN__) == PWR_WAKEUP_PIN5_LOW) || \ + ((__PIN__) == PWR_WAKEUP_PIN6_LOW)) +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* __STM32F7xx_HAL_PWR_EX_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h new file mode 100644 index 0000000..f3309a3 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h @@ -0,0 +1,1307 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_rcc.h + * @author MCD Application Team + * @brief Header file of RCC HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_RCC_H +#define __STM32F7xx_HAL_RCC_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/* Include RCC HAL Extended module */ +/* (include on top of file since RCC structures are defined in extended file) */ +#include "stm32f7xx_hal_rcc_ex.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup RCC + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** @defgroup RCC_Exported_Types RCC Exported Types + * @{ + */ + +/** + * @brief RCC Internal/External Oscillator (HSE, HSI, LSE and LSI) configuration structure definition + */ +typedef struct +{ + uint32_t OscillatorType; /*!< The oscillators to be configured. + This parameter can be a value of @ref RCC_Oscillator_Type */ + + uint32_t HSEState; /*!< The new state of the HSE. + This parameter can be a value of @ref RCC_HSE_Config */ + + uint32_t LSEState; /*!< The new state of the LSE. + This parameter can be a value of @ref RCC_LSE_Config */ + + uint32_t HSIState; /*!< The new state of the HSI. + This parameter can be a value of @ref RCC_HSI_Config */ + + uint32_t HSICalibrationValue; /*!< The HSI calibration trimming value (default is RCC_HSICALIBRATION_DEFAULT). + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x1F */ + + uint32_t LSIState; /*!< The new state of the LSI. + This parameter can be a value of @ref RCC_LSI_Config */ + + RCC_PLLInitTypeDef PLL; /*!< PLL structure parameters */ + +}RCC_OscInitTypeDef; + +/** + * @brief RCC System, AHB and APB buses clock configuration structure definition + */ +typedef struct +{ + uint32_t ClockType; /*!< The clock to be configured. + This parameter can be a value of @ref RCC_System_Clock_Type */ + + uint32_t SYSCLKSource; /*!< The clock source (SYSCLKS) used as system clock. + This parameter can be a value of @ref RCC_System_Clock_Source */ + + uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK). + This parameter can be a value of @ref RCC_AHB_Clock_Source */ + + uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */ + + uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_APB1_APB2_Clock_Source */ + +}RCC_ClkInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RCC_Exported_Constants RCC Exported Constants + * @{ + */ + +/** @defgroup RCC_Oscillator_Type Oscillator Type + * @{ + */ +#define RCC_OSCILLATORTYPE_NONE ((uint32_t)0x00000000U) +#define RCC_OSCILLATORTYPE_HSE ((uint32_t)0x00000001U) +#define RCC_OSCILLATORTYPE_HSI ((uint32_t)0x00000002U) +#define RCC_OSCILLATORTYPE_LSE ((uint32_t)0x00000004U) +#define RCC_OSCILLATORTYPE_LSI ((uint32_t)0x00000008U) +/** + * @} + */ + +/** @defgroup RCC_HSE_Config RCC HSE Config + * @{ + */ +#define RCC_HSE_OFF ((uint32_t)0x00000000U) +#define RCC_HSE_ON RCC_CR_HSEON +#define RCC_HSE_BYPASS ((uint32_t)(RCC_CR_HSEBYP | RCC_CR_HSEON)) +/** + * @} + */ + +/** @defgroup RCC_LSE_Config RCC LSE Config + * @{ + */ +#define RCC_LSE_OFF ((uint32_t)0x00000000U) +#define RCC_LSE_ON RCC_BDCR_LSEON +#define RCC_LSE_BYPASS ((uint32_t)(RCC_BDCR_LSEBYP | RCC_BDCR_LSEON)) +/** + * @} + */ + +/** @defgroup RCC_HSI_Config RCC HSI Config + * @{ + */ +#define RCC_HSI_OFF ((uint32_t)0x00000000U) +#define RCC_HSI_ON RCC_CR_HSION + +#define RCC_HSICALIBRATION_DEFAULT ((uint32_t)0x10U) /* Default HSI calibration trimming value */ +/** + * @} + */ + +/** @defgroup RCC_LSI_Config RCC LSI Config + * @{ + */ +#define RCC_LSI_OFF ((uint32_t)0x00000000U) +#define RCC_LSI_ON RCC_CSR_LSION +/** + * @} + */ + +/** @defgroup RCC_PLL_Config RCC PLL Config + * @{ + */ +#define RCC_PLL_NONE ((uint32_t)0x00000000U) +#define RCC_PLL_OFF ((uint32_t)0x00000001U) +#define RCC_PLL_ON ((uint32_t)0x00000002U) +/** + * @} + */ + +/** @defgroup RCC_PLLP_Clock_Divider PLLP Clock Divider + * @{ + */ +#define RCC_PLLP_DIV2 ((uint32_t)0x00000002U) +#define RCC_PLLP_DIV4 ((uint32_t)0x00000004U) +#define RCC_PLLP_DIV6 ((uint32_t)0x00000006U) +#define RCC_PLLP_DIV8 ((uint32_t)0x00000008U) +/** + * @} + */ + +/** @defgroup RCC_PLL_Clock_Source PLL Clock Source + * @{ + */ +#define RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI +#define RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE +/** + * @} + */ + +/** @defgroup RCC_System_Clock_Type RCC System Clock Type + * @{ + */ +#define RCC_CLOCKTYPE_SYSCLK ((uint32_t)0x00000001U) +#define RCC_CLOCKTYPE_HCLK ((uint32_t)0x00000002U) +#define RCC_CLOCKTYPE_PCLK1 ((uint32_t)0x00000004U) +#define RCC_CLOCKTYPE_PCLK2 ((uint32_t)0x00000008U) +/** + * @} + */ + +/** @defgroup RCC_System_Clock_Source RCC System Clock Source + * @{ + */ +#define RCC_SYSCLKSOURCE_HSI RCC_CFGR_SW_HSI +#define RCC_SYSCLKSOURCE_HSE RCC_CFGR_SW_HSE +#define RCC_SYSCLKSOURCE_PLLCLK RCC_CFGR_SW_PLL +/** + * @} + */ + + +/** @defgroup RCC_System_Clock_Source_Status System Clock Source Status + * @{ + */ +#define RCC_SYSCLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */ +#define RCC_SYSCLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */ +#define RCC_SYSCLKSOURCE_STATUS_PLLCLK RCC_CFGR_SWS_PLL /*!< PLL used as system clock */ +/** + * @} + */ + +/** @defgroup RCC_AHB_Clock_Source RCC AHB Clock Source + * @{ + */ +#define RCC_SYSCLK_DIV1 RCC_CFGR_HPRE_DIV1 +#define RCC_SYSCLK_DIV2 RCC_CFGR_HPRE_DIV2 +#define RCC_SYSCLK_DIV4 RCC_CFGR_HPRE_DIV4 +#define RCC_SYSCLK_DIV8 RCC_CFGR_HPRE_DIV8 +#define RCC_SYSCLK_DIV16 RCC_CFGR_HPRE_DIV16 +#define RCC_SYSCLK_DIV64 RCC_CFGR_HPRE_DIV64 +#define RCC_SYSCLK_DIV128 RCC_CFGR_HPRE_DIV128 +#define RCC_SYSCLK_DIV256 RCC_CFGR_HPRE_DIV256 +#define RCC_SYSCLK_DIV512 RCC_CFGR_HPRE_DIV512 +/** + * @} + */ + +/** @defgroup RCC_APB1_APB2_Clock_Source RCC APB1/APB2 Clock Source + * @{ + */ +#define RCC_HCLK_DIV1 RCC_CFGR_PPRE1_DIV1 +#define RCC_HCLK_DIV2 RCC_CFGR_PPRE1_DIV2 +#define RCC_HCLK_DIV4 RCC_CFGR_PPRE1_DIV4 +#define RCC_HCLK_DIV8 RCC_CFGR_PPRE1_DIV8 +#define RCC_HCLK_DIV16 RCC_CFGR_PPRE1_DIV16 +/** + * @} + */ + +/** @defgroup RCC_RTC_Clock_Source RCC RTC Clock Source + * @{ + */ +#define RCC_RTCCLKSOURCE_NO_CLK ((uint32_t)0x00000000U) +#define RCC_RTCCLKSOURCE_LSE ((uint32_t)0x00000100U) +#define RCC_RTCCLKSOURCE_LSI ((uint32_t)0x00000200U) +#define RCC_RTCCLKSOURCE_HSE_DIVX ((uint32_t)0x00000300U) +#define RCC_RTCCLKSOURCE_HSE_DIV2 ((uint32_t)0x00020300U) +#define RCC_RTCCLKSOURCE_HSE_DIV3 ((uint32_t)0x00030300U) +#define RCC_RTCCLKSOURCE_HSE_DIV4 ((uint32_t)0x00040300U) +#define RCC_RTCCLKSOURCE_HSE_DIV5 ((uint32_t)0x00050300U) +#define RCC_RTCCLKSOURCE_HSE_DIV6 ((uint32_t)0x00060300U) +#define RCC_RTCCLKSOURCE_HSE_DIV7 ((uint32_t)0x00070300U) +#define RCC_RTCCLKSOURCE_HSE_DIV8 ((uint32_t)0x00080300U) +#define RCC_RTCCLKSOURCE_HSE_DIV9 ((uint32_t)0x00090300U) +#define RCC_RTCCLKSOURCE_HSE_DIV10 ((uint32_t)0x000A0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV11 ((uint32_t)0x000B0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV12 ((uint32_t)0x000C0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV13 ((uint32_t)0x000D0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV14 ((uint32_t)0x000E0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV15 ((uint32_t)0x000F0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV16 ((uint32_t)0x00100300U) +#define RCC_RTCCLKSOURCE_HSE_DIV17 ((uint32_t)0x00110300U) +#define RCC_RTCCLKSOURCE_HSE_DIV18 ((uint32_t)0x00120300U) +#define RCC_RTCCLKSOURCE_HSE_DIV19 ((uint32_t)0x00130300U) +#define RCC_RTCCLKSOURCE_HSE_DIV20 ((uint32_t)0x00140300U) +#define RCC_RTCCLKSOURCE_HSE_DIV21 ((uint32_t)0x00150300U) +#define RCC_RTCCLKSOURCE_HSE_DIV22 ((uint32_t)0x00160300U) +#define RCC_RTCCLKSOURCE_HSE_DIV23 ((uint32_t)0x00170300U) +#define RCC_RTCCLKSOURCE_HSE_DIV24 ((uint32_t)0x00180300U) +#define RCC_RTCCLKSOURCE_HSE_DIV25 ((uint32_t)0x00190300U) +#define RCC_RTCCLKSOURCE_HSE_DIV26 ((uint32_t)0x001A0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV27 ((uint32_t)0x001B0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV28 ((uint32_t)0x001C0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV29 ((uint32_t)0x001D0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV30 ((uint32_t)0x001E0300U) +#define RCC_RTCCLKSOURCE_HSE_DIV31 ((uint32_t)0x001F0300U) +/** + * @} + */ + + + +/** @defgroup RCC_MCO_Index RCC MCO Index + * @{ + */ +#define RCC_MCO1 ((uint32_t)0x00000000U) +#define RCC_MCO2 ((uint32_t)0x00000001U) +/** + * @} + */ + +/** @defgroup RCC_MCO1_Clock_Source RCC MCO1 Clock Source + * @{ + */ +#define RCC_MCO1SOURCE_HSI ((uint32_t)0x00000000U) +#define RCC_MCO1SOURCE_LSE RCC_CFGR_MCO1_0 +#define RCC_MCO1SOURCE_HSE RCC_CFGR_MCO1_1 +#define RCC_MCO1SOURCE_PLLCLK RCC_CFGR_MCO1 +/** + * @} + */ + +/** @defgroup RCC_MCO2_Clock_Source RCC MCO2 Clock Source + * @{ + */ +#define RCC_MCO2SOURCE_SYSCLK ((uint32_t)0x00000000U) +#define RCC_MCO2SOURCE_PLLI2SCLK RCC_CFGR_MCO2_0 +#define RCC_MCO2SOURCE_HSE RCC_CFGR_MCO2_1 +#define RCC_MCO2SOURCE_PLLCLK RCC_CFGR_MCO2 +/** + * @} + */ + +/** @defgroup RCC_MCOx_Clock_Prescaler RCC MCO1 Clock Prescaler + * @{ + */ +#define RCC_MCODIV_1 ((uint32_t)0x00000000U) +#define RCC_MCODIV_2 RCC_CFGR_MCO1PRE_2 +#define RCC_MCODIV_3 ((uint32_t)RCC_CFGR_MCO1PRE_0 | RCC_CFGR_MCO1PRE_2) +#define RCC_MCODIV_4 ((uint32_t)RCC_CFGR_MCO1PRE_1 | RCC_CFGR_MCO1PRE_2) +#define RCC_MCODIV_5 RCC_CFGR_MCO1PRE +/** + * @} + */ + +/** @defgroup RCC_Interrupt RCC Interrupt + * @{ + */ +#define RCC_IT_LSIRDY ((uint8_t)0x01U) +#define RCC_IT_LSERDY ((uint8_t)0x02U) +#define RCC_IT_HSIRDY ((uint8_t)0x04U) +#define RCC_IT_HSERDY ((uint8_t)0x08U) +#define RCC_IT_PLLRDY ((uint8_t)0x10U) +#define RCC_IT_PLLI2SRDY ((uint8_t)0x20U) +#define RCC_IT_PLLSAIRDY ((uint8_t)0x40U) +#define RCC_IT_CSS ((uint8_t)0x80U) +/** + * @} + */ + +/** @defgroup RCC_Flag RCC Flags + * Elements values convention: 0XXYYYYYb + * - YYYYY : Flag position in the register + * - 0XX : Register index + * - 01: CR register + * - 10: BDCR register + * - 11: CSR register + * @{ + */ +/* Flags in the CR register */ +#define RCC_FLAG_HSIRDY ((uint8_t)0x21U) +#define RCC_FLAG_HSERDY ((uint8_t)0x31U) +#define RCC_FLAG_PLLRDY ((uint8_t)0x39U) +#define RCC_FLAG_PLLI2SRDY ((uint8_t)0x3BU) +#define RCC_FLAG_PLLSAIRDY ((uint8_t)0x3CU) + +/* Flags in the BDCR register */ +#define RCC_FLAG_LSERDY ((uint8_t)0x41U) + +/* Flags in the CSR register */ +#define RCC_FLAG_LSIRDY ((uint8_t)0x61U) +#define RCC_FLAG_BORRST ((uint8_t)0x79U) +#define RCC_FLAG_PINRST ((uint8_t)0x7AU) +#define RCC_FLAG_PORRST ((uint8_t)0x7BU) +#define RCC_FLAG_SFTRST ((uint8_t)0x7CU) +#define RCC_FLAG_IWDGRST ((uint8_t)0x7DU) +#define RCC_FLAG_WWDGRST ((uint8_t)0x7EU) +#define RCC_FLAG_LPWRRST ((uint8_t)0x7FU) +/** + * @} + */ + +/** @defgroup RCC_LSEDrive_Configuration RCC LSE Drive configurations + * @{ + */ +#define RCC_LSEDRIVE_LOW ((uint32_t)0x00000000U) +#define RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_1 +#define RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_0 +#define RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup RCC_Exported_Macros RCC Exported Macros + * @{ + */ + +/** @defgroup RCC_AHB1_Clock_Enable_Disable AHB1 Peripheral Clock Enable Disable + * @brief Enable or disable the AHB1 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#define __HAL_RCC_CRC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_CRCEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_DMA1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_CRC_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_CRCEN)) +#define __HAL_RCC_DMA1_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_DMA1EN)) + +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Enable_Disable APB1 Peripheral Clock Enable Disable + * @brief Enable or disable the Low Speed APB (APB1) peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#define __HAL_RCC_WWDG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_WWDGEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_WWDGEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_PWR_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_PWREN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_WWDG_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_WWDGEN)) +#define __HAL_RCC_PWR_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_PWREN)) +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Enable_Disable APB2 Peripheral Clock Enable Disable + * @brief Enable or disable the High Speed APB (APB2) peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#define __HAL_RCC_SYSCFG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SYSCFGEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_SYSCFG_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SYSCFGEN)) + +/** + * @} + */ + +/** @defgroup RCC_AHB1_Peripheral_Clock_Enable_Disable_Status AHB1 Peripheral Clock Enable Disable Status + * @brief Get the enable or disable status of the AHB1 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#define __HAL_RCC_CRC_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_CRCEN)) != RESET) +#define __HAL_RCC_DMA1_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA1EN)) != RESET) + +#define __HAL_RCC_CRC_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_CRCEN)) == RESET) +#define __HAL_RCC_DMA1_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA1EN)) == RESET) +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Enable_Disable_Status APB1 Peripheral Clock Enable Disable Status + * @brief Get the enable or disable status of the APB1 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#define __HAL_RCC_WWDG_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_WWDGEN)) != RESET) +#define __HAL_RCC_PWR_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_PWREN)) != RESET) + +#define __HAL_RCC_WWDG_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_WWDGEN)) == RESET) +#define __HAL_RCC_PWR_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_PWREN)) == RESET) +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Enable_Disable_Status APB2 Peripheral Clock Enable Disable Status + * @brief EGet the enable or disable status of the APB2 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ +#define __HAL_RCC_SYSCFG_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SYSCFGEN)) != RESET) +#define __HAL_RCC_SYSCFG_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SYSCFGEN)) == RESET) +/** + * @} + */ + +/** @defgroup RCC_Peripheral_Clock_Force_Release RCC Peripheral Clock Force Release + * @brief Force or release AHB peripheral reset. + * @{ + */ +#define __HAL_RCC_AHB1_FORCE_RESET() (RCC->AHB1RSTR = 0xFFFFFFFFU) +#define __HAL_RCC_CRC_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_CRCRST)) +#define __HAL_RCC_DMA1_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_DMA1RST)) + +#define __HAL_RCC_AHB1_RELEASE_RESET() (RCC->AHB1RSTR = 0x00U) +#define __HAL_RCC_CRC_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_CRCRST)) +#define __HAL_RCC_DMA1_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_DMA1RST)) +/** + * @} + */ + +/** @defgroup RCC_APB1_Force_Release_Reset APB1 Force Release Reset + * @brief Force or release APB1 peripheral reset. + * @{ + */ +#define __HAL_RCC_APB1_FORCE_RESET() (RCC->APB1RSTR = 0xFFFFFFFFU) +#define __HAL_RCC_WWDG_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_WWDGRST)) +#define __HAL_RCC_PWR_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_PWRRST)) + +#define __HAL_RCC_APB1_RELEASE_RESET() (RCC->APB1RSTR = 0x00U) +#define __HAL_RCC_WWDG_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_WWDGRST)) +#define __HAL_RCC_PWR_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_PWRRST)) +/** + * @} + */ + +/** @defgroup RCC_APB2_Force_Release_Reset APB2 Force Release Reset + * @brief Force or release APB2 peripheral reset. + * @{ + */ +#define __HAL_RCC_APB2_FORCE_RESET() (RCC->APB2RSTR = 0xFFFFFFFFU) +#define __HAL_RCC_SYSCFG_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SYSCFGRST)) + +#define __HAL_RCC_APB2_RELEASE_RESET() (RCC->APB2RSTR = 0x00U) +#define __HAL_RCC_SYSCFG_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SYSCFGRST)) + +/** + * @} + */ + +/** @defgroup RCC_Peripheral_Clock_Sleep_Enable_Disable RCC Peripheral Clock Sleep Enable Disable + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ +#define __HAL_RCC_CRC_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_CRCLPEN)) +#define __HAL_RCC_DMA1_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_DMA1LPEN)) + +#define __HAL_RCC_CRC_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_CRCLPEN)) +#define __HAL_RCC_DMA1_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_DMA1LPEN)) + +/** @brief Enable or disable the APB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_WWDGLPEN)) +#define __HAL_RCC_PWR_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_PWRLPEN)) + +#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_WWDGLPEN)) +#define __HAL_RCC_PWR_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_PWRLPEN)) + +/** @brief Enable or disable the APB2 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_SYSCFG_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SYSCFGLPEN)) +#define __HAL_RCC_SYSCFG_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SYSCFGLPEN)) + +/** + * @} + */ + +/** @defgroup RCC_AHB1_Clock_Sleep_Enable_Disable_Status AHB1 Peripheral Clock Sleep Enable Disable Status + * @brief Get the enable or disable status of the AHB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ +#define __HAL_RCC_CRC_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_CRCLPEN)) != RESET) +#define __HAL_RCC_DMA1_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA1LPEN)) != RESET) + +#define __HAL_RCC_CRC_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_CRCLPEN)) == RESET) +#define __HAL_RCC_DMA1_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA1LPEN)) == RESET) +/** + * @} + */ + +/** @defgroup RCC_APB1_Clock_Sleep_Enable_Disable_Status APB1 Peripheral Clock Sleep Enable Disable Status + * @brief Get the enable or disable status of the APB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ +#define __HAL_RCC_WWDG_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_WWDGLPEN)) != RESET) +#define __HAL_RCC_PWR_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_PWRLPEN)) != RESET) + +#define __HAL_RCC_WWDG_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_WWDGLPEN)) == RESET) +#define __HAL_RCC_PWR_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_PWRLPEN)) == RESET) +/** + * @} + */ + +/** @defgroup RCC_APB2_Clock_Sleep_Enable_Disable_Status APB2 Peripheral Clock Sleep Enable Disable Status + * @brief Get the enable or disable status of the APB2 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ +#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SYSCFGLPEN)) != RESET) +#define __HAL_RCC_SYSCFG_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SYSCFGLPEN)) == RESET) +/** + * @} + */ + +/** @defgroup RCC_HSI_Configuration HSI Configuration + * @{ + */ + +/** @brief Macros to enable or disable the Internal High Speed oscillator (HSI). + * @note The HSI is stopped by hardware when entering STOP and STANDBY modes. + * It is used (enabled by hardware) as system clock source after startup + * from Reset, wakeup from STOP and STANDBY mode, or in case of failure + * of the HSE used directly or indirectly as system clock (if the Clock + * Security System CSS is enabled). + * @note HSI can not be stopped if it is used as system clock source. In this case, + * you have to select another source of the system clock then stop the HSI. + * @note After enabling the HSI, the application software should wait on HSIRDY + * flag to be set indicating that HSI clock is stable and can be used as + * system clock source. + * @note When the HSI is stopped, HSIRDY flag goes low after 6 HSI oscillator + * clock cycles. + */ +#define __HAL_RCC_HSI_ENABLE() (RCC->CR |= (RCC_CR_HSION)) +#define __HAL_RCC_HSI_DISABLE() (RCC->CR &= ~(RCC_CR_HSION)) + +/** @brief Macro to adjust the Internal High Speed oscillator (HSI) calibration value. + * @note The calibration is used to compensate for the variations in voltage + * and temperature that influence the frequency of the internal HSI RC. + * @param __HSICALIBRATIONVALUE__ specifies the calibration trimming value. + * (default is RCC_HSICALIBRATION_DEFAULT). + */ +#define __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(__HSICALIBRATIONVALUE__) (MODIFY_REG(RCC->CR,\ + RCC_CR_HSITRIM, (uint32_t)(__HSICALIBRATIONVALUE__) << RCC_CR_HSITRIM_Pos)) +/** + * @} + */ + +/** @defgroup RCC_LSI_Configuration LSI Configuration + * @{ + */ + +/** @brief Macros to enable or disable the Internal Low Speed oscillator (LSI). + * @note After enabling the LSI, the application software should wait on + * LSIRDY flag to be set indicating that LSI clock is stable and can + * be used to clock the IWDG and/or the RTC. + * @note LSI can not be disabled if the IWDG is running. + * @note When the LSI is stopped, LSIRDY flag goes low after 6 LSI oscillator + * clock cycles. + */ +#define __HAL_RCC_LSI_ENABLE() (RCC->CSR |= (RCC_CSR_LSION)) +#define __HAL_RCC_LSI_DISABLE() (RCC->CSR &= ~(RCC_CSR_LSION)) +/** + * @} + */ + +/** @defgroup RCC_HSE_Configuration HSE Configuration + * @{ + */ +/** + * @brief Macro to configure the External High Speed oscillator (HSE). + * @note Transitions HSE Bypass to HSE On and HSE On to HSE Bypass are not + * supported by this macro. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @note After enabling the HSE (RCC_HSE_ON or RCC_HSE_Bypass), the application + * software should wait on HSERDY flag to be set indicating that HSE clock + * is stable and can be used to clock the PLL and/or system clock. + * @note HSE state can not be changed if it is used directly or through the + * PLL as system clock. In this case, you have to select another source + * of the system clock then change the HSE state (ex. disable it). + * @note The HSE is stopped by hardware when entering STOP and STANDBY modes. + * @note This function reset the CSSON bit, so if the clock security system(CSS) + * was previously enabled you have to enable it again after calling this + * function. + * @param __STATE__ specifies the new state of the HSE. + * This parameter can be one of the following values: + * @arg RCC_HSE_OFF: turn OFF the HSE oscillator, HSERDY flag goes low after + * 6 HSE oscillator clock cycles. + * @arg RCC_HSE_ON: turn ON the HSE oscillator. + * @arg RCC_HSE_BYPASS: HSE oscillator bypassed with external clock. + */ +#define __HAL_RCC_HSE_CONFIG(__STATE__) \ + do { \ + if ((__STATE__) == RCC_HSE_ON) \ + { \ + SET_BIT(RCC->CR, RCC_CR_HSEON); \ + } \ + else if ((__STATE__) == RCC_HSE_OFF) \ + { \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \ + } \ + else if ((__STATE__) == RCC_HSE_BYPASS) \ + { \ + SET_BIT(RCC->CR, RCC_CR_HSEBYP); \ + SET_BIT(RCC->CR, RCC_CR_HSEON); \ + } \ + else \ + { \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); \ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); \ + } \ + } while(0) +/** + * @} + */ + +/** @defgroup RCC_LSE_Configuration LSE Configuration + * @{ + */ + +/** + * @brief Macro to configure the External Low Speed oscillator (LSE). + * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not supported by this macro. + * User should request a transition to LSE Off first and then LSE On or LSE Bypass. + * @note As the LSE is in the Backup domain and write access is denied to + * this domain after reset, you have to enable write access using + * HAL_PWR_EnableBkUpAccess() function before to configure the LSE + * (to be done once after reset). + * @note After enabling the LSE (RCC_LSE_ON or RCC_LSE_BYPASS), the application + * software should wait on LSERDY flag to be set indicating that LSE clock + * is stable and can be used to clock the RTC. + * @param __STATE__ specifies the new state of the LSE. + * This parameter can be one of the following values: + * @arg RCC_LSE_OFF: turn OFF the LSE oscillator, LSERDY flag goes low after + * 6 LSE oscillator clock cycles. + * @arg RCC_LSE_ON: turn ON the LSE oscillator. + * @arg RCC_LSE_BYPASS: LSE oscillator bypassed with external clock. + */ +#define __HAL_RCC_LSE_CONFIG(__STATE__) \ + do { \ + if((__STATE__) == RCC_LSE_ON) \ + { \ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ + } \ + else if((__STATE__) == RCC_LSE_OFF) \ + { \ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \ + } \ + else if((__STATE__) == RCC_LSE_BYPASS) \ + { \ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ + } \ + else \ + { \ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); \ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); \ + } \ + } while(0) +/** + * @} + */ + +/** @defgroup RCC_Internal_RTC_Clock_Configuration RTC Clock Configuration + * @{ + */ + +/** @brief Macros to enable or disable the RTC clock. + * @note These macros must be used only after the RTC clock source was selected. + */ +#define __HAL_RCC_RTC_ENABLE() (RCC->BDCR |= (RCC_BDCR_RTCEN)) +#define __HAL_RCC_RTC_DISABLE() (RCC->BDCR &= ~(RCC_BDCR_RTCEN)) + +/** @brief Macros to configure the RTC clock (RTCCLK). + * @note As the RTC clock configuration bits are in the Backup domain and write + * access is denied to this domain after reset, you have to enable write + * access using the Power Backup Access macro before to configure + * the RTC clock source (to be done once after reset). + * @note Once the RTC clock is configured it can't be changed unless the + * Backup domain is reset using __HAL_RCC_BackupReset_RELEASE() macro, or by + * a Power On Reset (POR). + * @param __RTCCLKSource__ specifies the RTC clock source. + * This parameter can be one of the following values: + @arg @ref RCC_RTCCLKSOURCE_NO_CLK: No clock selected as RTC clock. + * @arg @ref RCC_RTCCLKSOURCE_LSE: LSE selected as RTC clock. + * @arg @ref RCC_RTCCLKSOURCE_LSI: LSI selected as RTC clock. + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIVX: HSE clock divided by x selected + * as RTC clock, where x:[2,31] + * @note If the LSE or LSI is used as RTC clock source, the RTC continues to + * work in STOP and STANDBY modes, and can be used as wakeup source. + * However, when the HSE clock is used as RTC clock source, the RTC + * cannot be used in STOP and STANDBY modes. + * @note The maximum input clock frequency for RTC is 1MHz (when using HSE as + * RTC clock source). + */ +#define __HAL_RCC_RTC_CLKPRESCALER(__RTCCLKSource__) (((__RTCCLKSource__) & RCC_BDCR_RTCSEL) == RCC_BDCR_RTCSEL) ? \ + MODIFY_REG(RCC->CFGR, RCC_CFGR_RTCPRE, ((__RTCCLKSource__) & 0xFFFFCFF)) : CLEAR_BIT(RCC->CFGR, RCC_CFGR_RTCPRE) + +#define __HAL_RCC_RTC_CONFIG(__RTCCLKSource__) do { __HAL_RCC_RTC_CLKPRESCALER(__RTCCLKSource__); \ + RCC->BDCR |= ((__RTCCLKSource__) & 0x00000FFF); \ + } while (0) + +/** @brief Macro to get the RTC clock source. + * @retval The clock source can be one of the following values: + * @arg @ref RCC_RTCCLKSOURCE_NO_CLK No clock selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_LSE LSE selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_LSI LSI selected as RTC clock + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIVX HSE divided by X selected as RTC clock (X can be retrieved thanks to @ref __HAL_RCC_GET_RTC_HSE_PRESCALER() + */ +#define __HAL_RCC_GET_RTC_SOURCE() (READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)) + +/** + * @brief Get the RTC and HSE clock divider (RTCPRE). + * @retval Returned value can be one of the following values: + * @arg @ref RCC_RTCCLKSOURCE_HSE_DIVX: HSE clock divided by x selected + * as RTC clock, where x:[2,31] + */ +#define __HAL_RCC_GET_RTC_HSE_PRESCALER() (READ_BIT(RCC->CFGR, RCC_CFGR_RTCPRE) | RCC_BDCR_RTCSEL) + +/** @brief Macros to force or release the Backup domain reset. + * @note This function resets the RTC peripheral (including the backup registers) + * and the RTC clock source selection in RCC_CSR register. + * @note The BKPSRAM is not affected by this reset. + */ +#define __HAL_RCC_BACKUPRESET_FORCE() (RCC->BDCR |= (RCC_BDCR_BDRST)) +#define __HAL_RCC_BACKUPRESET_RELEASE() (RCC->BDCR &= ~(RCC_BDCR_BDRST)) +/** + * @} + */ + +/** @defgroup RCC_PLL_Configuration PLL Configuration + * @{ + */ + +/** @brief Macros to enable or disable the main PLL. + * @note After enabling the main PLL, the application software should wait on + * PLLRDY flag to be set indicating that PLL clock is stable and can + * be used as system clock source. + * @note The main PLL can not be disabled if it is used as system clock source + * @note The main PLL is disabled by hardware when entering STOP and STANDBY modes. + */ +#define __HAL_RCC_PLL_ENABLE() SET_BIT(RCC->CR, RCC_CR_PLLON) +#define __HAL_RCC_PLL_DISABLE() CLEAR_BIT(RCC->CR, RCC_CR_PLLON) + +/** @brief Macro to configure the PLL clock source. + * @note This function must be used only when the main PLL is disabled. + * @param __PLLSOURCE__ specifies the PLL entry clock source. + * This parameter can be one of the following values: + * @arg RCC_PLLSOURCE_HSI: HSI oscillator clock selected as PLL clock entry + * @arg RCC_PLLSOURCE_HSE: HSE oscillator clock selected as PLL clock entry + * + */ +#define __HAL_RCC_PLL_PLLSOURCE_CONFIG(__PLLSOURCE__) MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, (__PLLSOURCE__)) + +/** @brief Macro to configure the PLL multiplication factor. + * @note This function must be used only when the main PLL is disabled. + * @param __PLLM__ specifies the division factor for PLL VCO input clock + * This parameter must be a number between Min_Data = 2 and Max_Data = 63. + * @note You have to set the PLLM parameter correctly to ensure that the VCO input + * frequency ranges from 1 to 2 MHz. It is recommended to select a frequency + * of 2 MHz to limit PLL jitter. + * + */ +#define __HAL_RCC_PLL_PLLM_CONFIG(__PLLM__) MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLM, (__PLLM__)) +/** + * @} + */ + +/** @defgroup RCC_PLL_I2S_Configuration PLL I2S Configuration + * @{ + */ + +/** @brief Macro to configure the I2S clock source (I2SCLK). + * @note This function must be called before enabling the I2S APB clock. + * @param __SOURCE__ specifies the I2S clock source. + * This parameter can be one of the following values: + * @arg RCC_I2SCLKSOURCE_PLLI2S: PLLI2S clock used as I2S clock source. + * @arg RCC_I2SCLKSOURCE_EXT: External clock mapped on the I2S_CKIN pin + * used as I2S clock source. + */ +#define __HAL_RCC_I2S_CONFIG(__SOURCE__) do {RCC->CFGR &= ~(RCC_CFGR_I2SSRC); \ + RCC->CFGR |= (__SOURCE__); \ + }while(0) + +/** @brief Macros to enable or disable the PLLI2S. + * @note The PLLI2S is disabled by hardware when entering STOP and STANDBY modes. + */ +#define __HAL_RCC_PLLI2S_ENABLE() (RCC->CR |= (RCC_CR_PLLI2SON)) +#define __HAL_RCC_PLLI2S_DISABLE() (RCC->CR &= ~(RCC_CR_PLLI2SON)) +/** + * @} + */ + +/** @defgroup RCC_Get_Clock_source Get Clock source + * @{ + */ +/** + * @brief Macro to configure the system clock source. + * @param __RCC_SYSCLKSOURCE__ specifies the system clock source. + * This parameter can be one of the following values: + * - RCC_SYSCLKSOURCE_HSI: HSI oscillator is used as system clock source. + * - RCC_SYSCLKSOURCE_HSE: HSE oscillator is used as system clock source. + * - RCC_SYSCLKSOURCE_PLLCLK: PLL output is used as system clock source. + */ +#define __HAL_RCC_SYSCLK_CONFIG(__RCC_SYSCLKSOURCE__) MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, (__RCC_SYSCLKSOURCE__)) + +/** @brief Macro to get the clock source used as system clock. + * @retval The clock source used as system clock. The returned value can be one + * of the following: + * - RCC_SYSCLKSOURCE_STATUS_HSI: HSI used as system clock. + * - RCC_SYSCLKSOURCE_STATUS_HSE: HSE used as system clock. + * - RCC_SYSCLKSOURCE_STATUS_PLLCLK: PLL used as system clock. + */ +#define __HAL_RCC_GET_SYSCLK_SOURCE() (RCC->CFGR & RCC_CFGR_SWS) + +/** + * @brief Macro to configures the External Low Speed oscillator (LSE) drive capability. + * @note As the LSE is in the Backup domain and write access is denied to + * this domain after reset, you have to enable write access using + * HAL_PWR_EnableBkUpAccess() function before to configure the LSE + * (to be done once after reset). + * @param __RCC_LSEDRIVE__ specifies the new state of the LSE drive capability. + * This parameter can be one of the following values: + * @arg RCC_LSEDRIVE_LOW: LSE oscillator low drive capability. + * @arg RCC_LSEDRIVE_MEDIUMLOW: LSE oscillator medium low drive capability. + * @arg RCC_LSEDRIVE_MEDIUMHIGH: LSE oscillator medium high drive capability. + * @arg RCC_LSEDRIVE_HIGH: LSE oscillator high drive capability. + * @retval None + */ +#define __HAL_RCC_LSEDRIVE_CONFIG(__RCC_LSEDRIVE__) \ + (MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, (uint32_t)(__RCC_LSEDRIVE__) )) + +/** @brief Macro to get the oscillator used as PLL clock source. + * @retval The oscillator used as PLL clock source. The returned value can be one + * of the following: + * - RCC_PLLSOURCE_HSI: HSI oscillator is used as PLL clock source. + * - RCC_PLLSOURCE_HSE: HSE oscillator is used as PLL clock source. + */ +#define __HAL_RCC_GET_PLL_OSCSOURCE() ((uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC)) +/** + * @} + */ + +/** @defgroup RCCEx_MCOx_Clock_Config RCC Extended MCOx Clock Config + * @{ + */ + +/** @brief Macro to configure the MCO1 clock. + * @param __MCOCLKSOURCE__ specifies the MCO clock source. + * This parameter can be one of the following values: + * @arg RCC_MCO1SOURCE_HSI: HSI clock selected as MCO1 source + * @arg RCC_MCO1SOURCE_LSE: LSE clock selected as MCO1 source + * @arg RCC_MCO1SOURCE_HSE: HSE clock selected as MCO1 source + * @arg RCC_MCO1SOURCE_PLLCLK: main PLL clock selected as MCO1 source + * @param __MCODIV__ specifies the MCO clock prescaler. + * This parameter can be one of the following values: + * @arg RCC_MCODIV_1: no division applied to MCOx clock + * @arg RCC_MCODIV_2: division by 2 applied to MCOx clock + * @arg RCC_MCODIV_3: division by 3 applied to MCOx clock + * @arg RCC_MCODIV_4: division by 4 applied to MCOx clock + * @arg RCC_MCODIV_5: division by 5 applied to MCOx clock + */ + +#define __HAL_RCC_MCO1_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \ + MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO1 | RCC_CFGR_MCO1PRE), ((__MCOCLKSOURCE__) | (__MCODIV__))) + +/** @brief Macro to configure the MCO2 clock. + * @param __MCOCLKSOURCE__ specifies the MCO clock source. + * This parameter can be one of the following values: + * @arg RCC_MCO2SOURCE_SYSCLK: System clock (SYSCLK) selected as MCO2 source + * @arg RCC_MCO2SOURCE_PLLI2SCLK: PLLI2S clock selected as MCO2 source + * @arg RCC_MCO2SOURCE_HSE: HSE clock selected as MCO2 source + * @arg RCC_MCO2SOURCE_PLLCLK: main PLL clock selected as MCO2 source + * @param __MCODIV__ specifies the MCO clock prescaler. + * This parameter can be one of the following values: + * @arg RCC_MCODIV_1: no division applied to MCOx clock + * @arg RCC_MCODIV_2: division by 2 applied to MCOx clock + * @arg RCC_MCODIV_3: division by 3 applied to MCOx clock + * @arg RCC_MCODIV_4: division by 4 applied to MCOx clock + * @arg RCC_MCODIV_5: division by 5 applied to MCOx clock + */ + +#define __HAL_RCC_MCO2_CONFIG(__MCOCLKSOURCE__, __MCODIV__) \ + MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2 | RCC_CFGR_MCO2PRE), ((__MCOCLKSOURCE__) | ((__MCODIV__) << 3))); +/** + * @} + */ + +/** @defgroup RCC_Flags_Interrupts_Management Flags Interrupts Management + * @brief macros to manage the specified RCC Flags and interrupts. + * @{ + */ + +/** @brief Enable RCC interrupt (Perform Byte access to RCC_CIR[14:8] bits to enable + * the selected interrupts). + * @param __INTERRUPT__ specifies the RCC interrupt sources to be enabled. + * This parameter can be any combination of the following values: + * @arg RCC_IT_LSIRDY: LSI ready interrupt. + * @arg RCC_IT_LSERDY: LSE ready interrupt. + * @arg RCC_IT_HSIRDY: HSI ready interrupt. + * @arg RCC_IT_HSERDY: HSE ready interrupt. + * @arg RCC_IT_PLLRDY: Main PLL ready interrupt. + * @arg RCC_IT_PLLI2SRDY: PLLI2S ready interrupt. + */ +#define __HAL_RCC_ENABLE_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE1_ADDRESS |= (__INTERRUPT__)) + +/** @brief Disable RCC interrupt (Perform Byte access to RCC_CIR[14:8] bits to disable + * the selected interrupts). + * @param __INTERRUPT__ specifies the RCC interrupt sources to be disabled. + * This parameter can be any combination of the following values: + * @arg RCC_IT_LSIRDY: LSI ready interrupt. + * @arg RCC_IT_LSERDY: LSE ready interrupt. + * @arg RCC_IT_HSIRDY: HSI ready interrupt. + * @arg RCC_IT_HSERDY: HSE ready interrupt. + * @arg RCC_IT_PLLRDY: Main PLL ready interrupt. + * @arg RCC_IT_PLLI2SRDY: PLLI2S ready interrupt. + */ +#define __HAL_RCC_DISABLE_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE1_ADDRESS &= (uint8_t)(~(__INTERRUPT__))) + +/** @brief Clear the RCC's interrupt pending bits (Perform Byte access to RCC_CIR[23:16] + * bits to clear the selected interrupt pending bits. + * @param __INTERRUPT__ specifies the interrupt pending bit to clear. + * This parameter can be any combination of the following values: + * @arg RCC_IT_LSIRDY: LSI ready interrupt. + * @arg RCC_IT_LSERDY: LSE ready interrupt. + * @arg RCC_IT_HSIRDY: HSI ready interrupt. + * @arg RCC_IT_HSERDY: HSE ready interrupt. + * @arg RCC_IT_PLLRDY: Main PLL ready interrupt. + * @arg RCC_IT_PLLI2SRDY: PLLI2S ready interrupt. + * @arg RCC_IT_CSS: Clock Security System interrupt + */ +#define __HAL_RCC_CLEAR_IT(__INTERRUPT__) (*(__IO uint8_t *) RCC_CIR_BYTE2_ADDRESS = (__INTERRUPT__)) + +/** @brief Check the RCC's interrupt has occurred or not. + * @param __INTERRUPT__ specifies the RCC interrupt source to check. + * This parameter can be one of the following values: + * @arg RCC_IT_LSIRDY: LSI ready interrupt. + * @arg RCC_IT_LSERDY: LSE ready interrupt. + * @arg RCC_IT_HSIRDY: HSI ready interrupt. + * @arg RCC_IT_HSERDY: HSE ready interrupt. + * @arg RCC_IT_PLLRDY: Main PLL ready interrupt. + * @arg RCC_IT_PLLI2SRDY: PLLI2S ready interrupt. + * @arg RCC_IT_CSS: Clock Security System interrupt + * @retval The new state of __INTERRUPT__ (TRUE or FALSE). + */ +#define __HAL_RCC_GET_IT(__INTERRUPT__) ((RCC->CIR & (__INTERRUPT__)) == (__INTERRUPT__)) + +/** @brief Set RMVF bit to clear the reset flags: RCC_FLAG_PINRST, RCC_FLAG_PORRST, + * RCC_FLAG_SFTRST, RCC_FLAG_IWDGRST, RCC_FLAG_WWDGRST and RCC_FLAG_LPWRRST. + */ +#define __HAL_RCC_CLEAR_RESET_FLAGS() (RCC->CSR |= RCC_CSR_RMVF) + +/** @brief Check RCC flag is set or not. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of the following values: + * @arg RCC_FLAG_HSIRDY: HSI oscillator clock ready. + * @arg RCC_FLAG_HSERDY: HSE oscillator clock ready. + * @arg RCC_FLAG_PLLRDY: Main PLL clock ready. + * @arg RCC_FLAG_PLLI2SRDY: PLLI2S clock ready. + * @arg RCC_FLAG_LSERDY: LSE oscillator clock ready. + * @arg RCC_FLAG_LSIRDY: LSI oscillator clock ready. + * @arg RCC_FLAG_BORRST: POR/PDR or BOR reset. + * @arg RCC_FLAG_PINRST: Pin reset. + * @arg RCC_FLAG_PORRST: POR/PDR reset. + * @arg RCC_FLAG_SFTRST: Software reset. + * @arg RCC_FLAG_IWDGRST: Independent Watchdog reset. + * @arg RCC_FLAG_WWDGRST: Window Watchdog reset. + * @arg RCC_FLAG_LPWRRST: Low Power reset. + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define RCC_FLAG_MASK ((uint8_t)0x1F) +#define __HAL_RCC_GET_FLAG(__FLAG__) (((((((__FLAG__) >> 5) == 1)? RCC->CR :((((__FLAG__) >> 5) == 2) ? RCC->BDCR :((((__FLAG__) >> 5) == 3)? RCC->CSR :RCC->CIR))) & ((uint32_t)1 << ((__FLAG__) & RCC_FLAG_MASK)))!= 0)? 1 : 0) + +/** + * @} + */ + +/** + * @} + */ + +/* Include RCC HAL Extension module */ +#include "stm32f7xx_hal_rcc_ex.h" + +/* Exported functions --------------------------------------------------------*/ + /** @addtogroup RCC_Exported_Functions + * @{ + */ + +/** @addtogroup RCC_Exported_Functions_Group1 + * @{ + */ +/* Initialization and de-initialization functions ******************************/ +HAL_StatusTypeDef HAL_RCC_DeInit(void); +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); +HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency); +/** + * @} + */ + +/** @addtogroup RCC_Exported_Functions_Group2 + * @{ + */ +/* Peripheral Control functions ************************************************/ +void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv); +void HAL_RCC_EnableCSS(void); +void HAL_RCC_DisableCSS(void); +uint32_t HAL_RCC_GetSysClockFreq(void); +uint32_t HAL_RCC_GetHCLKFreq(void); +uint32_t HAL_RCC_GetPCLK1Freq(void); +uint32_t HAL_RCC_GetPCLK2Freq(void); +void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); +void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency); + +/* CSS NMI IRQ handler */ +void HAL_RCC_NMI_IRQHandler(void); + +/* User Callbacks in non blocking mode (IT mode) */ +void HAL_RCC_CSSCallback(void); +/** + * @} + */ + +/** + * @} + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup RCC_Private_Constants RCC Private Constants + * @{ + */ +#define HSE_TIMEOUT_VALUE HSE_STARTUP_TIMEOUT +#define HSI_TIMEOUT_VALUE ((uint32_t)2) /* 2 ms */ +#define LSI_TIMEOUT_VALUE ((uint32_t)2) /* 2 ms */ +#define PLL_TIMEOUT_VALUE ((uint32_t)2) /* 2 ms */ +#define CLOCKSWITCH_TIMEOUT_VALUE ((uint32_t)5000) /* 5 s */ +#define PLLI2S_TIMEOUT_VALUE 100U /* Timeout value fixed to 100 ms */ +#define PLLSAI_TIMEOUT_VALUE 100U /* Timeout value fixed to 100 ms */ + +/** @defgroup RCC_BitAddress_Alias RCC BitAddress Alias + * @brief RCC registers bit address alias + * @{ + */ +/* CIR register byte 2 (Bits[15:8]) base address */ +#define RCC_CIR_BYTE1_ADDRESS ((uint32_t)(RCC_BASE + 0x0C + 0x01)) + +/* CIR register byte 3 (Bits[23:16]) base address */ +#define RCC_CIR_BYTE2_ADDRESS ((uint32_t)(RCC_BASE + 0x0C + 0x02)) + +#define RCC_DBP_TIMEOUT_VALUE ((uint32_t)100) +#define RCC_LSE_TIMEOUT_VALUE LSE_STARTUP_TIMEOUT +/** + * @} + */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup RCC_Private_Macros RCC Private Macros + * @{ + */ + +/** @defgroup RCC_IS_RCC_Definitions RCC Private macros to check input parameters + * @{ + */ +#define IS_RCC_OSCILLATORTYPE(OSCILLATOR) ((OSCILLATOR) <= 15) + +#define IS_RCC_HSE(HSE) (((HSE) == RCC_HSE_OFF) || ((HSE) == RCC_HSE_ON) || \ + ((HSE) == RCC_HSE_BYPASS)) + +#define IS_RCC_LSE(LSE) (((LSE) == RCC_LSE_OFF) || ((LSE) == RCC_LSE_ON) || \ + ((LSE) == RCC_LSE_BYPASS)) + +#define IS_RCC_HSI(HSI) (((HSI) == RCC_HSI_OFF) || ((HSI) == RCC_HSI_ON)) + +#define IS_RCC_LSI(LSI) (((LSI) == RCC_LSI_OFF) || ((LSI) == RCC_LSI_ON)) + +#define IS_RCC_PLL(PLL) (((PLL) == RCC_PLL_NONE) ||((PLL) == RCC_PLL_OFF) || ((PLL) == RCC_PLL_ON)) + +#define IS_RCC_PLLSOURCE(SOURCE) (((SOURCE) == RCC_PLLSOURCE_HSI) || \ + ((SOURCE) == RCC_PLLSOURCE_HSE)) + +#define IS_RCC_SYSCLKSOURCE(SOURCE) (((SOURCE) == RCC_SYSCLKSOURCE_HSI) || \ + ((SOURCE) == RCC_SYSCLKSOURCE_HSE) || \ + ((SOURCE) == RCC_SYSCLKSOURCE_PLLCLK)) +#define IS_RCC_PLLM_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 63)) + +#define IS_RCC_PLLN_VALUE(VALUE) ((50 <= (VALUE)) && ((VALUE) <= 432)) + +#define IS_RCC_PLLP_VALUE(VALUE) (((VALUE) == RCC_PLLP_DIV2) || ((VALUE) == RCC_PLLP_DIV4) || \ + ((VALUE) == RCC_PLLP_DIV6) || ((VALUE) == RCC_PLLP_DIV8)) +#define IS_RCC_PLLQ_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 15)) + +#define IS_RCC_HCLK(HCLK) (((HCLK) == RCC_SYSCLK_DIV1) || ((HCLK) == RCC_SYSCLK_DIV2) || \ + ((HCLK) == RCC_SYSCLK_DIV4) || ((HCLK) == RCC_SYSCLK_DIV8) || \ + ((HCLK) == RCC_SYSCLK_DIV16) || ((HCLK) == RCC_SYSCLK_DIV64) || \ + ((HCLK) == RCC_SYSCLK_DIV128) || ((HCLK) == RCC_SYSCLK_DIV256) || \ + ((HCLK) == RCC_SYSCLK_DIV512)) + +#define IS_RCC_CLOCKTYPE(CLK) ((1 <= (CLK)) && ((CLK) <= 15)) + +#define IS_RCC_PCLK(PCLK) (((PCLK) == RCC_HCLK_DIV1) || ((PCLK) == RCC_HCLK_DIV2) || \ + ((PCLK) == RCC_HCLK_DIV4) || ((PCLK) == RCC_HCLK_DIV8) || \ + ((PCLK) == RCC_HCLK_DIV16)) + +#define IS_RCC_MCO(MCOX) (((MCOX) == RCC_MCO1) || ((MCOX) == RCC_MCO2)) + + +#define IS_RCC_MCO1SOURCE(SOURCE) (((SOURCE) == RCC_MCO1SOURCE_HSI) || ((SOURCE) == RCC_MCO1SOURCE_LSE) || \ + ((SOURCE) == RCC_MCO1SOURCE_HSE) || ((SOURCE) == RCC_MCO1SOURCE_PLLCLK)) + +#define IS_RCC_MCO2SOURCE(SOURCE) (((SOURCE) == RCC_MCO2SOURCE_SYSCLK) || ((SOURCE) == RCC_MCO2SOURCE_PLLI2SCLK)|| \ + ((SOURCE) == RCC_MCO2SOURCE_HSE) || ((SOURCE) == RCC_MCO2SOURCE_PLLCLK)) + +#define IS_RCC_MCODIV(DIV) (((DIV) == RCC_MCODIV_1) || ((DIV) == RCC_MCODIV_2) || \ + ((DIV) == RCC_MCODIV_3) || ((DIV) == RCC_MCODIV_4) || \ + ((DIV) == RCC_MCODIV_5)) +#define IS_RCC_CALIBRATION_VALUE(VALUE) ((VALUE) <= 0x1F) + +#define IS_RCC_RTCCLKSOURCE(SOURCE) (((SOURCE) == RCC_RTCCLKSOURCE_LSE) || ((SOURCE) == RCC_RTCCLKSOURCE_LSI) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV2) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV3) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV4) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV5) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV6) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV7) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV8) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV9) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV10) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV11) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV12) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV13) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV14) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV15) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV16) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV17) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV18) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV19) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV20) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV21) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV22) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV23) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV24) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV25) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV26) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV27) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV28) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV29) || \ + ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV30) || ((SOURCE) == RCC_RTCCLKSOURCE_HSE_DIV31)) + + +#define IS_RCC_LSE_DRIVE(DRIVE) (((DRIVE) == RCC_LSEDRIVE_LOW) || \ + ((DRIVE) == RCC_LSEDRIVE_MEDIUMLOW) || \ + ((DRIVE) == RCC_LSEDRIVE_MEDIUMHIGH) || \ + ((DRIVE) == RCC_LSEDRIVE_HIGH)) +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_RCC_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h new file mode 100644 index 0000000..558a743 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h @@ -0,0 +1,3555 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_rcc_ex.h + * @author MCD Application Team + * @brief Header file of RCC HAL Extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_RCC_EX_H +#define __STM32F7xx_HAL_RCC_EX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup RCCEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup RCCEx_Exported_Types RCCEx Exported Types + * @{ + */ + +/** + * @brief RCC PLL configuration structure definition + */ +typedef struct +{ + uint32_t PLLState; /*!< The new state of the PLL. + This parameter can be a value of @ref RCC_PLL_Config */ + + uint32_t PLLSource; /*!< RCC_PLLSource: PLL entry clock source. + This parameter must be a value of @ref RCC_PLL_Clock_Source */ + + uint32_t PLLM; /*!< PLLM: Division factor for PLL VCO input clock. + This parameter must be a number between Min_Data = 2 and Max_Data = 63 */ + + uint32_t PLLN; /*!< PLLN: Multiplication factor for PLL VCO output clock. + This parameter must be a number between Min_Data = 50 and Max_Data = 432 */ + + uint32_t PLLP; /*!< PLLP: Division factor for main system clock (SYSCLK). + This parameter must be a value of @ref RCC_PLLP_Clock_Divider */ + + uint32_t PLLQ; /*!< PLLQ: Division factor for OTG FS, SDMMC and RNG clocks. + This parameter must be a number between Min_Data = 2 and Max_Data = 15 */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) + uint32_t PLLR; /*!< PLLR: Division factor for DSI clock. + This parameter must be a number between Min_Data = 2 and Max_Data = 7 */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +}RCC_PLLInitTypeDef; + +/** + * @brief PLLI2S Clock structure definition + */ +typedef struct +{ + uint32_t PLLI2SN; /*!< Specifies the multiplication factor for PLLI2S VCO output clock. + This parameter must be a number between Min_Data = 50 and Max_Data = 432. + This parameter will be used only when PLLI2S is selected as Clock Source I2S or SAI */ + + uint32_t PLLI2SR; /*!< Specifies the division factor for I2S clock. + This parameter must be a number between Min_Data = 2 and Max_Data = 7. + This parameter will be used only when PLLI2S is selected as Clock Source I2S or SAI */ + + uint32_t PLLI2SQ; /*!< Specifies the division factor for SAI1 clock. + This parameter must be a number between Min_Data = 2 and Max_Data = 15. + This parameter will be used only when PLLI2S is selected as Clock Source SAI */ + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || defined (STM32F767xx) || \ + defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) + uint32_t PLLI2SP; /*!< Specifies the division factor for SPDIF-RX clock. + This parameter must be a value of @ref RCCEx_PLLI2SP_Clock_Divider. + This parameter will be used only when PLLI2S is selected as Clock Source SPDIF-RX */ +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +}RCC_PLLI2SInitTypeDef; + +/** + * @brief PLLSAI Clock structure definition + */ +typedef struct +{ + uint32_t PLLSAIN; /*!< Specifies the multiplication factor for PLLI2S VCO output clock. + This parameter must be a number between Min_Data = 50 and Max_Data = 432. + This parameter will be used only when PLLSAI is selected as Clock Source SAI or LTDC */ + + uint32_t PLLSAIQ; /*!< Specifies the division factor for SAI1 clock. + This parameter must be a number between Min_Data = 2 and Max_Data = 15. + This parameter will be used only when PLLSAI is selected as Clock Source SAI or LTDC */ + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || defined (STM32F767xx) || \ + defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) + uint32_t PLLSAIR; /*!< specifies the division factor for LTDC clock + This parameter must be a number between Min_Data = 2 and Max_Data = 7. + This parameter will be used only when PLLSAI is selected as Clock Source LTDC */ +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + + uint32_t PLLSAIP; /*!< Specifies the division factor for 48MHz clock. + This parameter must be a value of @ref RCCEx_PLLSAIP_Clock_Divider + This parameter will be used only when PLLSAI is disabled */ +}RCC_PLLSAIInitTypeDef; + +/** + * @brief RCC extended clocks structure definition + */ +typedef struct +{ + uint32_t PeriphClockSelection; /*!< The Extended Clock to be configured. + This parameter can be a value of @ref RCCEx_Periph_Clock_Selection */ + + RCC_PLLI2SInitTypeDef PLLI2S; /*!< PLL I2S structure parameters. + This parameter will be used only when PLLI2S is selected as Clock Source I2S or SAI */ + + RCC_PLLSAIInitTypeDef PLLSAI; /*!< PLL SAI structure parameters. + This parameter will be used only when PLLI2S is selected as Clock Source SAI or LTDC */ + + uint32_t PLLI2SDivQ; /*!< Specifies the PLLI2S division factor for SAI1 clock. + This parameter must be a number between Min_Data = 1 and Max_Data = 32 + This parameter will be used only when PLLI2S is selected as Clock Source SAI */ + + uint32_t PLLSAIDivQ; /*!< Specifies the PLLI2S division factor for SAI1 clock. + This parameter must be a number between Min_Data = 1 and Max_Data = 32 + This parameter will be used only when PLLSAI is selected as Clock Source SAI */ + + uint32_t PLLSAIDivR; /*!< Specifies the PLLSAI division factor for LTDC clock. + This parameter must be one value of @ref RCCEx_PLLSAI_DIVR */ + + uint32_t RTCClockSelection; /*!< Specifies RTC Clock source Selection. + This parameter can be a value of @ref RCC_RTC_Clock_Source */ + + uint32_t I2sClockSelection; /*!< Specifies I2S Clock source Selection. + This parameter can be a value of @ref RCCEx_I2S_Clock_Source */ + + uint32_t TIMPresSelection; /*!< Specifies TIM Clock Prescalers Selection. + This parameter can be a value of @ref RCCEx_TIM_Prescaler_Selection */ + + uint32_t Sai1ClockSelection; /*!< Specifies SAI1 Clock Prescalers Selection + This parameter can be a value of @ref RCCEx_SAI1_Clock_Source */ + + uint32_t Sai2ClockSelection; /*!< Specifies SAI2 Clock Prescalers Selection + This parameter can be a value of @ref RCCEx_SAI2_Clock_Source */ + + uint32_t Usart1ClockSelection; /*!< USART1 clock source + This parameter can be a value of @ref RCCEx_USART1_Clock_Source */ + + uint32_t Usart2ClockSelection; /*!< USART2 clock source + This parameter can be a value of @ref RCCEx_USART2_Clock_Source */ + + uint32_t Usart3ClockSelection; /*!< USART3 clock source + This parameter can be a value of @ref RCCEx_USART3_Clock_Source */ + + uint32_t Uart4ClockSelection; /*!< UART4 clock source + This parameter can be a value of @ref RCCEx_UART4_Clock_Source */ + + uint32_t Uart5ClockSelection; /*!< UART5 clock source + This parameter can be a value of @ref RCCEx_UART5_Clock_Source */ + + uint32_t Usart6ClockSelection; /*!< USART6 clock source + This parameter can be a value of @ref RCCEx_USART6_Clock_Source */ + + uint32_t Uart7ClockSelection; /*!< UART7 clock source + This parameter can be a value of @ref RCCEx_UART7_Clock_Source */ + + uint32_t Uart8ClockSelection; /*!< UART8 clock source + This parameter can be a value of @ref RCCEx_UART8_Clock_Source */ + + uint32_t I2c1ClockSelection; /*!< I2C1 clock source + This parameter can be a value of @ref RCCEx_I2C1_Clock_Source */ + + uint32_t I2c2ClockSelection; /*!< I2C2 clock source + This parameter can be a value of @ref RCCEx_I2C2_Clock_Source */ + + uint32_t I2c3ClockSelection; /*!< I2C3 clock source + This parameter can be a value of @ref RCCEx_I2C3_Clock_Source */ + + uint32_t I2c4ClockSelection; /*!< I2C4 clock source + This parameter can be a value of @ref RCCEx_I2C4_Clock_Source */ + + uint32_t Lptim1ClockSelection; /*!< Specifies LPTIM1 clock source + This parameter can be a value of @ref RCCEx_LPTIM1_Clock_Source */ + + uint32_t CecClockSelection; /*!< CEC clock source + This parameter can be a value of @ref RCCEx_CEC_Clock_Source */ + + uint32_t Clk48ClockSelection; /*!< Specifies 48Mhz clock source used by USB OTG FS, RNG and SDMMC + This parameter can be a value of @ref RCCEx_CLK48_Clock_Source */ + + uint32_t Sdmmc1ClockSelection; /*!< SDMMC1 clock source + This parameter can be a value of @ref RCCEx_SDMMC1_Clock_Source */ + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) + uint32_t Sdmmc2ClockSelection; /*!< SDMMC2 clock source + This parameter can be a value of @ref RCCEx_SDMMC2_Clock_Source */ +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) + uint32_t Dfsdm1ClockSelection; /*!< DFSDM1 clock source + This parameter can be a value of @ref RCCEx_DFSDM1_Kernel_Clock_Source */ + + uint32_t Dfsdm1AudioClockSelection; /*!< DFSDM1 clock source + This parameter can be a value of @ref RCCEx_DFSDM1_AUDIO_Clock_Source */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +}RCC_PeriphCLKInitTypeDef; +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RCCEx_Exported_Constants RCCEx Exported Constants + * @{ + */ + +/** @defgroup RCCEx_Periph_Clock_Selection RCC Periph Clock Selection + * @{ + */ +#define RCC_PERIPHCLK_I2S ((uint32_t)0x00000001U) +#if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define RCC_PERIPHCLK_LTDC ((uint32_t)0x00000008U) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#define RCC_PERIPHCLK_TIM ((uint32_t)0x00000010U) +#define RCC_PERIPHCLK_RTC ((uint32_t)0x00000020U) +#define RCC_PERIPHCLK_USART1 ((uint32_t)0x00000040U) +#define RCC_PERIPHCLK_USART2 ((uint32_t)0x00000080U) +#define RCC_PERIPHCLK_USART3 ((uint32_t)0x00000100U) +#define RCC_PERIPHCLK_UART4 ((uint32_t)0x00000200U) +#define RCC_PERIPHCLK_UART5 ((uint32_t)0x00000400U) +#define RCC_PERIPHCLK_USART6 ((uint32_t)0x00000800U) +#define RCC_PERIPHCLK_UART7 ((uint32_t)0x00001000U) +#define RCC_PERIPHCLK_UART8 ((uint32_t)0x00002000U) +#define RCC_PERIPHCLK_I2C1 ((uint32_t)0x00004000U) +#define RCC_PERIPHCLK_I2C2 ((uint32_t)0x00008000U) +#define RCC_PERIPHCLK_I2C3 ((uint32_t)0x00010000U) +#define RCC_PERIPHCLK_I2C4 ((uint32_t)0x00020000U) +#define RCC_PERIPHCLK_LPTIM1 ((uint32_t)0x00040000U) +#define RCC_PERIPHCLK_SAI1 ((uint32_t)0x00080000U) +#define RCC_PERIPHCLK_SAI2 ((uint32_t)0x00100000U) +#define RCC_PERIPHCLK_CLK48 ((uint32_t)0x00200000U) +#define RCC_PERIPHCLK_CEC ((uint32_t)0x00400000U) +#define RCC_PERIPHCLK_SDMMC1 ((uint32_t)0x00800000U) +#define RCC_PERIPHCLK_SPDIFRX ((uint32_t)0x01000000U) +#define RCC_PERIPHCLK_PLLI2S ((uint32_t)0x02000000U) +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +#define RCC_PERIPHCLK_SDMMC2 ((uint32_t)0x04000000U) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define RCC_PERIPHCLK_DFSDM1 ((uint32_t)0x08000000U) +#define RCC_PERIPHCLK_DFSDM1_AUDIO ((uint32_t)0x10000000U) +#endif /* STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @} + */ + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || defined (STM32F767xx) || \ + defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +/** @defgroup RCCEx_PLLI2SP_Clock_Divider RCCEx PLLI2SP Clock Divider + * @{ + */ +#define RCC_PLLI2SP_DIV2 ((uint32_t)0x00000000U) +#define RCC_PLLI2SP_DIV4 ((uint32_t)0x00000001U) +#define RCC_PLLI2SP_DIV6 ((uint32_t)0x00000002U) +#define RCC_PLLI2SP_DIV8 ((uint32_t)0x00000003U) +/** + * @} + */ +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @defgroup RCCEx_PLLSAIP_Clock_Divider RCCEx PLLSAIP Clock Divider + * @{ + */ +#define RCC_PLLSAIP_DIV2 ((uint32_t)0x00000000U) +#define RCC_PLLSAIP_DIV4 ((uint32_t)0x00000001U) +#define RCC_PLLSAIP_DIV6 ((uint32_t)0x00000002U) +#define RCC_PLLSAIP_DIV8 ((uint32_t)0x00000003U) +/** + * @} + */ + +/** @defgroup RCCEx_PLLSAI_DIVR RCCEx PLLSAI DIVR + * @{ + */ +#define RCC_PLLSAIDIVR_2 ((uint32_t)0x00000000U) +#define RCC_PLLSAIDIVR_4 RCC_DCKCFGR1_PLLSAIDIVR_0 +#define RCC_PLLSAIDIVR_8 RCC_DCKCFGR1_PLLSAIDIVR_1 +#define RCC_PLLSAIDIVR_16 RCC_DCKCFGR1_PLLSAIDIVR +/** + * @} + */ + +/** @defgroup RCCEx_I2S_Clock_Source RCCEx I2S Clock Source + * @{ + */ +#define RCC_I2SCLKSOURCE_PLLI2S ((uint32_t)0x00000000U) +#define RCC_I2SCLKSOURCE_EXT RCC_CFGR_I2SSRC + +/** + * @} + */ + +/** @defgroup RCCEx_SAI1_Clock_Source RCCEx SAI1 Clock Source + * @{ + */ +#define RCC_SAI1CLKSOURCE_PLLSAI ((uint32_t)0x00000000U) +#define RCC_SAI1CLKSOURCE_PLLI2S RCC_DCKCFGR1_SAI1SEL_0 +#define RCC_SAI1CLKSOURCE_PIN RCC_DCKCFGR1_SAI1SEL_1 +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define RCC_SAI1CLKSOURCE_PLLSRC RCC_DCKCFGR1_SAI1SEL +#endif /* STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +/** + * @} + */ + +/** @defgroup RCCEx_SAI2_Clock_Source RCCEx SAI2 Clock Source + * @{ + */ +#define RCC_SAI2CLKSOURCE_PLLSAI ((uint32_t)0x00000000U) +#define RCC_SAI2CLKSOURCE_PLLI2S RCC_DCKCFGR1_SAI2SEL_0 +#define RCC_SAI2CLKSOURCE_PIN RCC_DCKCFGR1_SAI2SEL_1 +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define RCC_SAI2CLKSOURCE_PLLSRC RCC_DCKCFGR1_SAI2SEL +#endif /* STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +/** + * @} + */ + +/** @defgroup RCCEx_CEC_Clock_Source RCCEx CEC Clock Source + * @{ + */ +#define RCC_CECCLKSOURCE_LSE ((uint32_t)0x00000000U) +#define RCC_CECCLKSOURCE_HSI RCC_DCKCFGR2_CECSEL /* CEC clock is HSI/488*/ +/** + * @} + */ + +/** @defgroup RCCEx_USART1_Clock_Source RCCEx USART1 Clock Source + * @{ + */ +#define RCC_USART1CLKSOURCE_PCLK2 ((uint32_t)0x00000000U) +#define RCC_USART1CLKSOURCE_SYSCLK RCC_DCKCFGR2_USART1SEL_0 +#define RCC_USART1CLKSOURCE_HSI RCC_DCKCFGR2_USART1SEL_1 +#define RCC_USART1CLKSOURCE_LSE RCC_DCKCFGR2_USART1SEL +/** + * @} + */ + +/** @defgroup RCCEx_USART2_Clock_Source RCCEx USART2 Clock Source + * @{ + */ +#define RCC_USART2CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_USART2CLKSOURCE_SYSCLK RCC_DCKCFGR2_USART2SEL_0 +#define RCC_USART2CLKSOURCE_HSI RCC_DCKCFGR2_USART2SEL_1 +#define RCC_USART2CLKSOURCE_LSE RCC_DCKCFGR2_USART2SEL +/** + * @} + */ + +/** @defgroup RCCEx_USART3_Clock_Source RCCEx USART3 Clock Source + * @{ + */ +#define RCC_USART3CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_USART3CLKSOURCE_SYSCLK RCC_DCKCFGR2_USART3SEL_0 +#define RCC_USART3CLKSOURCE_HSI RCC_DCKCFGR2_USART3SEL_1 +#define RCC_USART3CLKSOURCE_LSE RCC_DCKCFGR2_USART3SEL +/** + * @} + */ + +/** @defgroup RCCEx_UART4_Clock_Source RCCEx UART4 Clock Source + * @{ + */ +#define RCC_UART4CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_UART4CLKSOURCE_SYSCLK RCC_DCKCFGR2_UART4SEL_0 +#define RCC_UART4CLKSOURCE_HSI RCC_DCKCFGR2_UART4SEL_1 +#define RCC_UART4CLKSOURCE_LSE RCC_DCKCFGR2_UART4SEL +/** + * @} + */ + +/** @defgroup RCCEx_UART5_Clock_Source RCCEx UART5 Clock Source + * @{ + */ +#define RCC_UART5CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_UART5CLKSOURCE_SYSCLK RCC_DCKCFGR2_UART5SEL_0 +#define RCC_UART5CLKSOURCE_HSI RCC_DCKCFGR2_UART5SEL_1 +#define RCC_UART5CLKSOURCE_LSE RCC_DCKCFGR2_UART5SEL +/** + * @} + */ + +/** @defgroup RCCEx_USART6_Clock_Source RCCEx USART6 Clock Source + * @{ + */ +#define RCC_USART6CLKSOURCE_PCLK2 ((uint32_t)0x00000000U) +#define RCC_USART6CLKSOURCE_SYSCLK RCC_DCKCFGR2_USART6SEL_0 +#define RCC_USART6CLKSOURCE_HSI RCC_DCKCFGR2_USART6SEL_1 +#define RCC_USART6CLKSOURCE_LSE RCC_DCKCFGR2_USART6SEL +/** + * @} + */ + +/** @defgroup RCCEx_UART7_Clock_Source RCCEx UART7 Clock Source + * @{ + */ +#define RCC_UART7CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_UART7CLKSOURCE_SYSCLK RCC_DCKCFGR2_UART7SEL_0 +#define RCC_UART7CLKSOURCE_HSI RCC_DCKCFGR2_UART7SEL_1 +#define RCC_UART7CLKSOURCE_LSE RCC_DCKCFGR2_UART7SEL +/** + * @} + */ + +/** @defgroup RCCEx_UART8_Clock_Source RCCEx UART8 Clock Source + * @{ + */ +#define RCC_UART8CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_UART8CLKSOURCE_SYSCLK RCC_DCKCFGR2_UART8SEL_0 +#define RCC_UART8CLKSOURCE_HSI RCC_DCKCFGR2_UART8SEL_1 +#define RCC_UART8CLKSOURCE_LSE RCC_DCKCFGR2_UART8SEL +/** + * @} + */ + +/** @defgroup RCCEx_I2C1_Clock_Source RCCEx I2C1 Clock Source + * @{ + */ +#define RCC_I2C1CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_I2C1CLKSOURCE_SYSCLK RCC_DCKCFGR2_I2C1SEL_0 +#define RCC_I2C1CLKSOURCE_HSI RCC_DCKCFGR2_I2C1SEL_1 +/** + * @} + */ + +/** @defgroup RCCEx_I2C2_Clock_Source RCCEx I2C2 Clock Source + * @{ + */ +#define RCC_I2C2CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_I2C2CLKSOURCE_SYSCLK RCC_DCKCFGR2_I2C2SEL_0 +#define RCC_I2C2CLKSOURCE_HSI RCC_DCKCFGR2_I2C2SEL_1 + +/** + * @} + */ + +/** @defgroup RCCEx_I2C3_Clock_Source RCCEx I2C3 Clock Source + * @{ + */ +#define RCC_I2C3CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_I2C3CLKSOURCE_SYSCLK RCC_DCKCFGR2_I2C3SEL_0 +#define RCC_I2C3CLKSOURCE_HSI RCC_DCKCFGR2_I2C3SEL_1 +/** + * @} + */ + +/** @defgroup RCCEx_I2C4_Clock_Source RCCEx I2C4 Clock Source + * @{ + */ +#define RCC_I2C4CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_I2C4CLKSOURCE_SYSCLK RCC_DCKCFGR2_I2C4SEL_0 +#define RCC_I2C4CLKSOURCE_HSI RCC_DCKCFGR2_I2C4SEL_1 +/** + * @} + */ + +/** @defgroup RCCEx_LPTIM1_Clock_Source RCCEx LPTIM1 Clock Source + * @{ + */ +#define RCC_LPTIM1CLKSOURCE_PCLK1 ((uint32_t)0x00000000U) +#define RCC_LPTIM1CLKSOURCE_LSI RCC_DCKCFGR2_LPTIM1SEL_0 +#define RCC_LPTIM1CLKSOURCE_HSI RCC_DCKCFGR2_LPTIM1SEL_1 +#define RCC_LPTIM1CLKSOURCE_LSE RCC_DCKCFGR2_LPTIM1SEL + +/** + * @} + */ + +/** @defgroup RCCEx_CLK48_Clock_Source RCCEx CLK48 Clock Source + * @{ + */ +#define RCC_CLK48SOURCE_PLL ((uint32_t)0x00000000U) +#define RCC_CLK48SOURCE_PLLSAIP RCC_DCKCFGR2_CK48MSEL +/** + * @} + */ + +/** @defgroup RCCEx_TIM_Prescaler_Selection RCCEx TIM Prescaler Selection + * @{ + */ +#define RCC_TIMPRES_DESACTIVATED ((uint32_t)0x00000000U) +#define RCC_TIMPRES_ACTIVATED RCC_DCKCFGR1_TIMPRE +/** + * @} + */ + +/** @defgroup RCCEx_SDMMC1_Clock_Source RCCEx SDMMC1 Clock Source + * @{ + */ +#define RCC_SDMMC1CLKSOURCE_CLK48 ((uint32_t)0x00000000U) +#define RCC_SDMMC1CLKSOURCE_SYSCLK RCC_DCKCFGR2_SDMMC1SEL +/** + * @} + */ + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +/** @defgroup RCCEx_SDMMC2_Clock_Source RCCEx SDMMC2 Clock Source + * @{ + */ +#define RCC_SDMMC2CLKSOURCE_CLK48 ((uint32_t)0x00000000U) +#define RCC_SDMMC2CLKSOURCE_SYSCLK RCC_DCKCFGR2_SDMMC2SEL +/** + * @} + */ +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +/** @defgroup RCCEx_DFSDM1_Kernel_Clock_Source RCCEx DFSDM1 Kernel Clock Source + * @{ + */ +#define RCC_DFSDM1CLKSOURCE_PCLK2 ((uint32_t)0x00000000U) +#define RCC_DFSDM1CLKSOURCE_SYSCLK RCC_DCKCFGR1_DFSDM1SEL +/** + * @} + */ + +/** @defgroup RCCEx_DFSDM1_AUDIO_Clock_Source RCCEx DFSDM1 AUDIO Clock Source + * @{ + */ +#define RCC_DFSDM1AUDIOCLKSOURCE_SAI1 ((uint32_t)0x00000000U) +#define RCC_DFSDM1AUDIOCLKSOURCE_SAI2 RCC_DCKCFGR1_ADFSDM1SEL +/** + * @} + */ +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +#if defined (STM32F769xx) || defined (STM32F779xx) +/** @defgroup RCCEx_DSI_Clock_Source RCC DSI Clock Source + * @{ + */ +#define RCC_DSICLKSOURCE_DSIPHY ((uint32_t)0x00000000U) +#define RCC_DSICLKSOURCE_PLLR ((uint32_t)RCC_DCKCFGR2_DSISEL) +/** + * @} + */ +#endif /* STM32F769xx || STM32F779xx */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup RCCEx_Exported_Macros RCCEx Exported Macros + * @{ + */ +/** @defgroup RCCEx_Peripheral_Clock_Enable_Disable RCCEx_Peripheral_Clock_Enable_Disable + * @brief Enables or disables the AHB/APB peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +/** @brief Enables or disables the AHB1 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#define __HAL_RCC_BKPSRAM_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_BKPSRAMEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_BKPSRAMEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_DTCMRAMEN_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DTCMRAMEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DTCMRAMEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_DMA2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_USB_OTG_HS_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_OTGHSEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_OTGHSEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_OTGHSULPIEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_OTGHSULPIEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOA_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOAEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOAEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOB_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOBEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOBEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOCEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOD_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIODEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIODEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOE_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOEEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOEEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOF_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOFEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOFEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOGEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOGEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOH_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOHEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOHEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOI_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOIEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOIEN);\ + UNUSED(tmpreg); \ + } while(0) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_GPIOJ_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOJEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOJEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_GPIOK_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOKEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOKEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_DMA2D_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2DEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_DMA2DEN);\ + UNUSED(tmpreg); \ + } while(0) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#define __HAL_RCC_BKPSRAM_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_BKPSRAMEN)) +#define __HAL_RCC_DTCMRAMEN_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_DTCMRAMEN)) +#define __HAL_RCC_DMA2_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_DMA2EN)) +#define __HAL_RCC_USB_OTG_HS_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_OTGHSEN)) +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_OTGHSULPIEN)) +#define __HAL_RCC_GPIOA_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOAEN)) +#define __HAL_RCC_GPIOB_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOBEN)) +#define __HAL_RCC_GPIOC_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOCEN)) +#define __HAL_RCC_GPIOD_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIODEN)) +#define __HAL_RCC_GPIOE_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOEEN)) +#define __HAL_RCC_GPIOF_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOFEN)) +#define __HAL_RCC_GPIOG_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOGEN)) +#define __HAL_RCC_GPIOH_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOHEN)) +#define __HAL_RCC_GPIOI_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOIEN)) +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_GPIOJ_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOJEN)) +#define __HAL_RCC_GPIOK_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOKEN)) +#define __HAL_RCC_DMA2D_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_DMA2DEN)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +/** + * @brief Enable ETHERNET clock. + */ +#define __HAL_RCC_ETHMAC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_ETHMACTX_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACTXEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACTXEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_ETHMACRX_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACRXEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACRXEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_ETHMACPTP_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACPTPEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_ETHMACPTPEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_ETH_CLK_ENABLE() do { \ + __HAL_RCC_ETHMAC_CLK_ENABLE(); \ + __HAL_RCC_ETHMACTX_CLK_ENABLE(); \ + __HAL_RCC_ETHMACRX_CLK_ENABLE(); \ + } while(0) +/** + * @brief Disable ETHERNET clock. + */ +#define __HAL_RCC_ETHMAC_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_ETHMACEN)) +#define __HAL_RCC_ETHMACTX_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_ETHMACTXEN)) +#define __HAL_RCC_ETHMACRX_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_ETHMACRXEN)) +#define __HAL_RCC_ETHMACPTP_CLK_DISABLE() (RCC->AHB1ENR &= ~(RCC_AHB1ENR_ETHMACPTPEN)) +#define __HAL_RCC_ETH_CLK_DISABLE() do { \ + __HAL_RCC_ETHMACTX_CLK_DISABLE(); \ + __HAL_RCC_ETHMACRX_CLK_DISABLE(); \ + __HAL_RCC_ETHMAC_CLK_DISABLE(); \ + } while(0) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @brief Enable or disable the AHB2 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_DCMI_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_DCMIEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_DCMIEN);\ + UNUSED(tmpreg); \ + } while(0) +#define __HAL_RCC_DCMI_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_DCMIEN)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_JPEG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_JPEGEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_JPEGEN);\ + UNUSED(tmpreg); \ + } while(0) +#define __HAL_RCC_JPEG_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_JPEGEN)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +#define __HAL_RCC_RNG_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_RNGEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_USB_OTG_FS_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_OTGFSEN);\ + UNUSED(tmpreg); \ + __HAL_RCC_SYSCFG_CLK_ENABLE();\ + } while(0) + +#define __HAL_RCC_RNG_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_RNGEN)) + +#define __HAL_RCC_USB_OTG_FS_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_OTGFSEN)) +#if defined(STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_CRYP_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_CRYPEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_CRYPEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_HASH_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_HASHEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_HASHEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_CRYP_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_CRYPEN)) +#define __HAL_RCC_HASH_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_HASHEN)) +#endif /* STM32F756x || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined(STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_AES_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_AESEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_AES_CLK_DISABLE() (RCC->AHB2ENR &= ~(RCC_AHB2ENR_AESEN)) +#endif /* STM32F732xx || STM32F733xx || STM32F730xx */ + +/** @brief Enables or disables the AHB3 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#define __HAL_RCC_FMC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_FMCEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_QSPI_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->AHB3ENR, RCC_AHB3ENR_QSPIEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_FMC_CLK_DISABLE() (RCC->AHB3ENR &= ~(RCC_AHB3ENR_FMCEN)) +#define __HAL_RCC_QSPI_CLK_DISABLE() (RCC->AHB3ENR &= ~(RCC_AHB3ENR_QSPIEN)) + +/** @brief Enable or disable the Low Speed APB (APB1) peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#define __HAL_RCC_TIM2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM2EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM3EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM4_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM4EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM4EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM5_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM5EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM6_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM6EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM7_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM7EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM12_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM12EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM12EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM13_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM13EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM13EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM14_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM14EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_TIM14EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_LPTIM1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_LPTIM1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\ + defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\ + defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_RTC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_RTCEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_RTCEN);\ + UNUSED(tmpreg); \ + } while(0) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || + STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_CAN3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN3EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN3EN);\ + UNUSED(tmpreg); \ + } while(0) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +#define __HAL_RCC_SPI2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI2EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_SPI3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPI3EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_USART2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART2EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_USART3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_USART3EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_USART3EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_UART4_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART4EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_UART5_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART5EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_I2C1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_I2C2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C2EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_I2C3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C3EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C3EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_CAN1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_DAC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_DACEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_UART7_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART7EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART7EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_UART8_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_UART8EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_UART8EN);\ + UNUSED(tmpreg); \ + } while(0) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPDIFRX_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_SPDIFRXEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_SPDIFRXEN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_I2C4_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C4EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C4EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_CAN2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN2EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CAN2EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_CEC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB1ENR, RCC_APB1ENR_CECEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB1ENR, RCC_APB1ENR_CECEN);\ + UNUSED(tmpreg); \ + } while(0) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#define __HAL_RCC_TIM2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM2EN)) +#define __HAL_RCC_TIM3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM3EN)) +#define __HAL_RCC_TIM4_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM4EN)) +#define __HAL_RCC_TIM5_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM5EN)) +#define __HAL_RCC_TIM6_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM6EN)) +#define __HAL_RCC_TIM7_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM7EN)) +#define __HAL_RCC_TIM12_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM12EN)) +#define __HAL_RCC_TIM13_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM13EN)) +#define __HAL_RCC_TIM14_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_TIM14EN)) +#define __HAL_RCC_LPTIM1_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_LPTIM1EN)) +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\ + defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\ + defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_RTC_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_RTCEN)) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || + STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_CAN3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_CAN3EN)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#define __HAL_RCC_SPI2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_SPI2EN)) +#define __HAL_RCC_SPI3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_SPI3EN)) +#define __HAL_RCC_USART2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_USART2EN)) +#define __HAL_RCC_USART3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_USART3EN)) +#define __HAL_RCC_UART4_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART4EN)) +#define __HAL_RCC_UART5_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART5EN)) +#define __HAL_RCC_I2C1_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C1EN)) +#define __HAL_RCC_I2C2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C2EN)) +#define __HAL_RCC_I2C3_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C3EN)) +#define __HAL_RCC_CAN1_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_CAN1EN)) +#define __HAL_RCC_DAC_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_DACEN)) +#define __HAL_RCC_UART7_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART7EN)) +#define __HAL_RCC_UART8_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_UART8EN)) +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPDIFRX_CLK_DISABLE()(RCC->APB1ENR &= ~(RCC_APB1ENR_SPDIFRXEN)) +#define __HAL_RCC_I2C4_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_I2C4EN)) +#define __HAL_RCC_CAN2_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_CAN2EN)) +#define __HAL_RCC_CEC_CLK_DISABLE() (RCC->APB1ENR &= ~(RCC_APB1ENR_CECEN)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || || STM32F750xx */ + +/** @brief Enable or disable the High Speed APB (APB2) peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#define __HAL_RCC_TIM1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM8_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM8EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_USART1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_USART6_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_USART6EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_USART6EN);\ + UNUSED(tmpreg); \ + } while(0) + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_SDMMC2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC2EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC2EN);\ + UNUSED(tmpreg); \ + } while(0) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || || STM32F730xx */ + +#define __HAL_RCC_ADC1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_ADC2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC2EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC2EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_ADC3_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC3EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_ADC3EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_SDMMC1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SDMMC1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_SPI1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_SPI4_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI4EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI4EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM9_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM9EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM9EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM10_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM10EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM10EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_TIM11_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM11EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_TIM11EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_SPI5_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI5EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI5EN);\ + UNUSED(tmpreg); \ + } while(0) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPI6_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI6EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SPI6EN);\ + UNUSED(tmpreg); \ + } while(0) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#define __HAL_RCC_SAI1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_SAI2_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_SAI2EN);\ + UNUSED(tmpreg); \ + } while(0) + +#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_LTDC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_LTDCEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_LTDCEN);\ + UNUSED(tmpreg); \ + } while(0) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined (STM32F769xx) || defined (STM32F779xx) +#define __HAL_RCC_DSI_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_DSIEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DSIEN);\ + UNUSED(tmpreg); \ + } while(0) +#endif /* STM32F769xx || STM32F779xx */ + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_DFSDM1_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_DFSDM1EN);\ + UNUSED(tmpreg); \ + } while(0) + +#define __HAL_RCC_MDIO_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_MDIOEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_MDIOEN);\ + UNUSED(tmpreg); \ + } while(0) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_OTGPHYC_CLK_ENABLE() do { \ + __IO uint32_t tmpreg; \ + SET_BIT(RCC->APB2ENR, RCC_APB2ENR_OTGPHYCEN);\ + /* Delay after an RCC peripheral clock enabling */ \ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_OTGPHYCEN);\ + UNUSED(tmpreg); \ + } while(0) +#endif /* STM32F723xx || STM32F733xx || STM32F730xx */ + +#define __HAL_RCC_TIM1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM1EN)) +#define __HAL_RCC_TIM8_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM8EN)) +#define __HAL_RCC_USART1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_USART1EN)) +#define __HAL_RCC_USART6_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_USART6EN)) +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_SDMMC2_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SDMMC2EN)) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ +#define __HAL_RCC_ADC1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_ADC1EN)) +#define __HAL_RCC_ADC2_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_ADC2EN)) +#define __HAL_RCC_ADC3_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_ADC3EN)) +#define __HAL_RCC_SDMMC1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SDMMC1EN)) +#define __HAL_RCC_SPI1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SPI1EN)) +#define __HAL_RCC_SPI4_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SPI4EN)) +#define __HAL_RCC_TIM9_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM9EN)) +#define __HAL_RCC_TIM10_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM10EN)) +#define __HAL_RCC_TIM11_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_TIM11EN)) +#define __HAL_RCC_SPI5_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SPI5EN)) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPI6_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SPI6EN)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#define __HAL_RCC_SAI1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SAI1EN)) +#define __HAL_RCC_SAI2_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_SAI2EN)) +#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_LTDC_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_LTDCEN)) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#if defined (STM32F769xx) || defined (STM32F779xx) +#define __HAL_RCC_DSI_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_DSIEN)) +#endif /* STM32F769xx || STM32F779xx */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_DFSDM1_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_DFSDM1EN)) +#define __HAL_RCC_MDIO_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_MDIOEN)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_OTGPHYC_CLK_DISABLE() (RCC->APB2ENR &= ~(RCC_APB2ENR_OTGPHYCEN)) +#endif /* STM32F723xx || STM32F733xx || STM32F730xx */ + +/** + * @} + */ + +/** @defgroup RCCEx_Peripheral_Clock_Enable_Disable_Status Peripheral Clock Enable Disable Status + * @brief Get the enable or disable status of the AHB/APB peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + * @{ + */ + +/** @brief Get the enable or disable status of the AHB1 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#define __HAL_RCC_BKPSRAM_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_BKPSRAMEN)) != RESET) +#define __HAL_RCC_DTCMRAMEN_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DTCMRAMEN)) != RESET) +#define __HAL_RCC_DMA2_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA2EN)) != RESET) +#define __HAL_RCC_USB_OTG_HS_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_OTGHSEN)) != RESET) +#define __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_OTGHSULPIEN)) != RESET) +#define __HAL_RCC_GPIOA_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOAEN)) != RESET) +#define __HAL_RCC_GPIOB_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOBEN)) != RESET) +#define __HAL_RCC_GPIOC_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOCEN)) != RESET) +#define __HAL_RCC_GPIOD_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIODEN)) != RESET) +#define __HAL_RCC_GPIOE_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOEEN)) != RESET) +#define __HAL_RCC_GPIOF_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOFEN)) != RESET) +#define __HAL_RCC_GPIOG_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOGEN)) != RESET) +#define __HAL_RCC_GPIOH_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOHEN)) != RESET) +#define __HAL_RCC_GPIOI_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOIEN)) != RESET) +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_GPIOJ_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOJEN)) != RESET) +#define __HAL_RCC_GPIOK_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOKEN)) != RESET) +#define __HAL_RCC_DMA2D_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA2DEN)) != RESET) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#define __HAL_RCC_BKPSRAM_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_BKPSRAMEN)) == RESET) +#define __HAL_RCC_DTCMRAMEN_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DTCMRAMEN)) == RESET) +#define __HAL_RCC_DMA2_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA2EN)) == RESET) +#define __HAL_RCC_USB_OTG_HS_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_OTGHSEN)) == RESET) +#define __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_OTGHSULPIEN)) == RESET) +#define __HAL_RCC_GPIOA_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOAEN)) == RESET) +#define __HAL_RCC_GPIOB_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOBEN)) == RESET) +#define __HAL_RCC_GPIOC_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOCEN)) == RESET) +#define __HAL_RCC_GPIOD_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIODEN)) == RESET) +#define __HAL_RCC_GPIOE_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOEEN)) == RESET) +#define __HAL_RCC_GPIOF_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOFEN)) == RESET) +#define __HAL_RCC_GPIOG_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOGEN)) == RESET) +#define __HAL_RCC_GPIOH_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOHEN)) == RESET) +#define __HAL_RCC_GPIOI_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOIEN)) == RESET) +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_GPIOJ_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOJEN)) == RESET) +#define __HAL_RCC_GPIOK_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_GPIOKEN)) == RESET) +#define __HAL_RCC_DMA2D_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_DMA2DEN)) == RESET) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +/** + * @brief Enable ETHERNET clock. + */ +#define __HAL_RCC_ETHMAC_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACEN)) != RESET) +#define __HAL_RCC_ETHMACTX_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACTXEN)) != RESET) +#define __HAL_RCC_ETHMACRX_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACRXEN)) != RESET) +#define __HAL_RCC_ETHMACPTP_IS_CLK_ENABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACPTPEN)) != RESET) +#define __HAL_RCC_ETH_IS_CLK_ENABLED() (__HAL_RCC_ETHMAC_IS_CLK_ENABLED() && \ + __HAL_RCC_ETHMACTX_IS_CLK_ENABLED() && \ + __HAL_RCC_ETHMACRX_IS_CLK_ENABLED()) + +/** + * @brief Disable ETHERNET clock. + */ +#define __HAL_RCC_ETHMAC_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACEN)) == RESET) +#define __HAL_RCC_ETHMACTX_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACTXEN)) == RESET) +#define __HAL_RCC_ETHMACRX_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACRXEN)) == RESET) +#define __HAL_RCC_ETHMACPTP_IS_CLK_DISABLED() ((RCC->AHB1ENR & (RCC_AHB1ENR_ETHMACPTPEN)) == RESET) +#define __HAL_RCC_ETH_IS_CLK_DISABLED() (__HAL_RCC_ETHMAC_IS_CLK_DISABLED() && \ + __HAL_RCC_ETHMACTX_IS_CLK_DISABLED() && \ + __HAL_RCC_ETHMACRX_IS_CLK_DISABLED()) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @brief Get the enable or disable status of the AHB2 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#define __HAL_RCC_RNG_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_RNGEN)) != RESET) +#define __HAL_RCC_USB_OTG_FS_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_OTGFSEN)) != RESET) + +#define __HAL_RCC_RNG_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_RNGEN)) == RESET) +#define __HAL_RCC_USB_IS_OTG_FS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_OTGFSEN)) == RESET) + +#if defined(STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_CRYP_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_CRYPEN)) != RESET) +#define __HAL_RCC_HASH_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_HASHEN)) != RESET) +#define __HAL_RCC_CRYP_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_CRYPEN)) == RESET) +#define __HAL_RCC_HASH_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_HASHEN)) == RESET) +#endif /* STM32F756xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined(STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_AES_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_AESEN)) != RESET) +#define __HAL_RCC_AES_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_AESEN)) == RESET) +#endif /* STM32F732xx || STM32F733xx || STM32F730xx */ + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_DCMI_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_DCMIEN)) != RESET) +#define __HAL_RCC_DCMI_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_DCMIEN)) == RESET) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_JPEG_IS_CLK_ENABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_JPEGEN)) != RESET) +#define __HAL_RCC_JPEG_IS_CLK_DISABLED() ((RCC->AHB2ENR & (RCC_AHB2ENR_JPEGEN)) == RESET) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** @brief Get the enable or disable status of the AHB3 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#define __HAL_RCC_FMC_IS_CLK_ENABLED() ((RCC->AHB3ENR & (RCC_AHB3ENR_FMCEN)) != RESET) +#define __HAL_RCC_QSPI_IS_CLK_ENABLED() ((RCC->AHB3ENR & (RCC_AHB3ENR_QSPIEN)) != RESET) + +#define __HAL_RCC_FMC_IS_CLK_DISABLED() ((RCC->AHB3ENR & (RCC_AHB3ENR_FMCEN)) == RESET) +#define __HAL_RCC_QSPI_IS_CLK_DISABLED() ((RCC->AHB3ENR & (RCC_AHB3ENR_QSPIEN)) == RESET) + +/** @brief Get the enable or disable status of the APB1 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#define __HAL_RCC_TIM2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM2EN)) != RESET) +#define __HAL_RCC_TIM3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM3EN)) != RESET) +#define __HAL_RCC_TIM4_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM4EN)) != RESET) +#define __HAL_RCC_TIM5_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) != RESET) +#define __HAL_RCC_TIM6_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM6EN)) != RESET) +#define __HAL_RCC_TIM7_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM7EN)) != RESET) +#define __HAL_RCC_TIM12_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM12EN)) != RESET) +#define __HAL_RCC_TIM13_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM13EN)) != RESET) +#define __HAL_RCC_TIM14_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM14EN)) != RESET) +#define __HAL_RCC_LPTIM1_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_LPTIM1EN)) != RESET) +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_CAN3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN3EN)) != RESET) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#define __HAL_RCC_SPI2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI2EN)) != RESET) +#define __HAL_RCC_SPI3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) != RESET) +#define __HAL_RCC_USART2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART2EN)) != RESET) +#define __HAL_RCC_USART3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART3EN)) != RESET) +#define __HAL_RCC_UART4_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) != RESET) +#define __HAL_RCC_UART5_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) != RESET) +#define __HAL_RCC_I2C1_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C1EN)) != RESET) +#define __HAL_RCC_I2C2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C2EN)) != RESET) +#define __HAL_RCC_I2C3_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C3EN)) != RESET) +#define __HAL_RCC_CAN1_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN1EN)) != RESET) +#define __HAL_RCC_DAC_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_DACEN)) != RESET) +#define __HAL_RCC_UART7_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART7EN)) != RESET) +#define __HAL_RCC_UART8_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART8EN)) != RESET) + +#define __HAL_RCC_TIM2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM2EN)) == RESET) +#define __HAL_RCC_TIM3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM3EN)) == RESET) +#define __HAL_RCC_TIM4_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM4EN)) == RESET) +#define __HAL_RCC_TIM5_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM5EN)) == RESET) +#define __HAL_RCC_TIM6_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM6EN)) == RESET) +#define __HAL_RCC_TIM7_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM7EN)) == RESET) +#define __HAL_RCC_TIM12_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM12EN)) == RESET) +#define __HAL_RCC_TIM13_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM13EN)) == RESET) +#define __HAL_RCC_TIM14_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_TIM14EN)) == RESET) +#define __HAL_RCC_LPTIM1_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_LPTIM1EN)) == RESET) +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_CAN3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN3EN)) == RESET) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#define __HAL_RCC_SPI2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI2EN)) == RESET) +#define __HAL_RCC_SPI3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPI3EN)) == RESET) +#define __HAL_RCC_USART2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART2EN)) == RESET) +#define __HAL_RCC_USART3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_USART3EN)) == RESET) +#define __HAL_RCC_UART4_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART4EN)) == RESET) +#define __HAL_RCC_UART5_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART5EN)) == RESET) +#define __HAL_RCC_I2C1_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C1EN)) == RESET) +#define __HAL_RCC_I2C2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C2EN)) == RESET) +#define __HAL_RCC_I2C3_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C3EN)) == RESET) +#define __HAL_RCC_CAN1_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN1EN)) == RESET) +#define __HAL_RCC_DAC_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_DACEN)) == RESET) +#define __HAL_RCC_UART7_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART7EN)) == RESET) +#define __HAL_RCC_UART8_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_UART8EN)) == RESET) +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPDIFRX_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_SPDIFRXEN)) != RESET) +#define __HAL_RCC_CAN2_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN2EN)) != RESET) +#define __HAL_RCC_CEC_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CECEN)) != RESET) +#define __HAL_RCC_I2C4_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C4EN)) != RESET) + +#define __HAL_RCC_SPDIFRX_IS_CLK_DISABLED()((RCC->APB1ENR & (RCC_APB1ENR_SPDIFRXEN)) == RESET) +#define __HAL_RCC_CAN2_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CAN2EN)) == RESET) +#define __HAL_RCC_CEC_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_CECEN)) == RESET) +#define __HAL_RCC_I2C4_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_I2C4EN)) == RESET) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\ + defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\ + defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_RTC_IS_CLK_ENABLED() ((RCC->APB1ENR & (RCC_APB1ENR_RTCEN)) != RESET) +#define __HAL_RCC_RTC_IS_CLK_DISABLED() ((RCC->APB1ENR & (RCC_APB1ENR_RTCEN)) == RESET) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || + STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ + +/** @brief Get the enable or disable status of the APB2 peripheral clock. + * @note After reset, the peripheral clock (used for registers read/write access) + * is disabled and the application software has to enable this clock before + * using it. + */ +#define __HAL_RCC_TIM1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM1EN)) != RESET) +#define __HAL_RCC_TIM8_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM8EN)) != RESET) +#define __HAL_RCC_USART1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_USART1EN)) != RESET) +#define __HAL_RCC_USART6_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_USART6EN)) != RESET) +#define __HAL_RCC_ADC1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC1EN)) != RESET) +#define __HAL_RCC_ADC2_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC2EN)) != RESET) +#define __HAL_RCC_ADC3_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC3EN)) != RESET) +#define __HAL_RCC_SDMMC1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDMMC1EN)) != RESET) +#define __HAL_RCC_SPI1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI1EN)) != RESET) +#define __HAL_RCC_SPI4_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI4EN)) != RESET) +#define __HAL_RCC_TIM9_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM9EN)) != RESET) +#define __HAL_RCC_TIM10_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM10EN)) != RESET) +#define __HAL_RCC_TIM11_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM11EN)) != RESET) +#define __HAL_RCC_SPI5_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI5EN)) != RESET) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPI6_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI6EN)) != RESET) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#define __HAL_RCC_SAI1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SAI1EN)) != RESET) +#define __HAL_RCC_SAI2_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SAI2EN)) != RESET) +#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_LTDC_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_LTDCEN)) != RESET) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#if defined (STM32F769xx) || defined (STM32F779xx) +#define __HAL_RCC_DSI_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_DSIEN)) != RESET) +#endif /* STM32F769xx || STM32F779xx */ +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_SDMMC2_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDMMC2EN)) != RESET) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_DFSDM1_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_DFSDM1EN)) != RESET) +#define __HAL_RCC_MDIO_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_MDIOEN)) != RESET) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_OTGPHYC_IS_CLK_ENABLED() ((RCC->APB2ENR & (RCC_APB2ENR_OTGPHYCEN)) != RESET) +#endif /* STM32F723xx || STM32F733xx || STM32F730xx */ + +#define __HAL_RCC_TIM1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM1EN)) == RESET) +#define __HAL_RCC_TIM8_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM8EN)) == RESET) +#define __HAL_RCC_USART1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_USART1EN)) == RESET) +#define __HAL_RCC_USART6_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_USART6EN)) == RESET) +#define __HAL_RCC_ADC1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC1EN)) == RESET) +#define __HAL_RCC_ADC2_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC2EN)) == RESET) +#define __HAL_RCC_ADC3_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_ADC3EN)) == RESET) +#define __HAL_RCC_SDMMC1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDMMC1EN)) == RESET) +#define __HAL_RCC_SPI1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI1EN)) == RESET) +#define __HAL_RCC_SPI4_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI4EN)) == RESET) +#define __HAL_RCC_TIM9_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM9EN)) == RESET) +#define __HAL_RCC_TIM10_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM10EN)) == RESET) +#define __HAL_RCC_TIM11_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_TIM11EN)) == RESET) +#define __HAL_RCC_SPI5_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI5EN)) == RESET) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPI6_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SPI6EN)) == RESET) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#define __HAL_RCC_SAI1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SAI1EN)) == RESET) +#define __HAL_RCC_SAI2_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SAI2EN)) == RESET) +#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_LTDC_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_LTDCEN)) == RESET) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#if defined (STM32F769xx) || defined (STM32F779xx) +#define __HAL_RCC_DSI_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_DSIEN)) == RESET) +#endif /* STM32F769xx || STM32F779xx */ +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_SDMMC2_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_SDMMC2EN)) == RESET) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_DFSDM1_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_DFSDM1EN)) == RESET) +#define __HAL_RCC_MDIO_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_MDIOEN)) == RESET) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_OTGPHYC_IS_CLK_DISABLED() ((RCC->APB2ENR & (RCC_APB2ENR_OTGPHYCEN)) == RESET) +#endif /* STM32F723xx || STM32F733xx || STM32F730xx */ + +/** + * @} + */ + +/** @defgroup RCCEx_Force_Release_Peripheral_Reset RCCEx Force Release Peripheral Reset + * @brief Forces or releases AHB/APB peripheral reset. + * @{ + */ + +/** @brief Force or release AHB1 peripheral reset. + */ +#define __HAL_RCC_DMA2_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_DMA2RST)) +#define __HAL_RCC_USB_OTG_HS_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_OTGHRST)) +#define __HAL_RCC_GPIOA_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOARST)) +#define __HAL_RCC_GPIOB_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOBRST)) +#define __HAL_RCC_GPIOC_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOCRST)) +#define __HAL_RCC_GPIOD_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIODRST)) +#define __HAL_RCC_GPIOE_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOERST)) +#define __HAL_RCC_GPIOF_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOFRST)) +#define __HAL_RCC_GPIOG_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOGRST)) +#define __HAL_RCC_GPIOH_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOHRST)) +#define __HAL_RCC_GPIOI_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOIRST)) + +#define __HAL_RCC_DMA2_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_DMA2RST)) +#define __HAL_RCC_USB_OTG_HS_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_OTGHRST)) +#define __HAL_RCC_GPIOA_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOARST)) +#define __HAL_RCC_GPIOB_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOBRST)) +#define __HAL_RCC_GPIOC_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOCRST)) +#define __HAL_RCC_GPIOD_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIODRST)) +#define __HAL_RCC_GPIOE_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOERST)) +#define __HAL_RCC_GPIOF_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOFRST)) +#define __HAL_RCC_GPIOG_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOGRST)) +#define __HAL_RCC_GPIOH_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOHRST)) +#define __HAL_RCC_GPIOI_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOIRST)) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_DMA2D_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_DMA2DRST)) +#define __HAL_RCC_ETHMAC_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_ETHMACRST)) +#define __HAL_RCC_GPIOJ_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOJRST)) +#define __HAL_RCC_GPIOK_FORCE_RESET() (RCC->AHB1RSTR |= (RCC_AHB1RSTR_GPIOKRST)) + +#define __HAL_RCC_DMA2D_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_DMA2DRST)) +#define __HAL_RCC_ETHMAC_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_ETHMACRST)) +#define __HAL_RCC_GPIOJ_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOJRST)) +#define __HAL_RCC_GPIOK_RELEASE_RESET() (RCC->AHB1RSTR &= ~(RCC_AHB1RSTR_GPIOKRST)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @brief Force or release AHB2 peripheral reset. + */ +#define __HAL_RCC_AHB2_FORCE_RESET() (RCC->AHB2RSTR = 0xFFFFFFFFU) +#define __HAL_RCC_RNG_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_RNGRST)) +#define __HAL_RCC_USB_OTG_FS_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_OTGFSRST)) + +#define __HAL_RCC_AHB2_RELEASE_RESET() (RCC->AHB2RSTR = 0x00U) +#define __HAL_RCC_RNG_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_RNGRST)) +#define __HAL_RCC_USB_OTG_FS_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_OTGFSRST)) + +#if defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_JPEG_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_JPEGRST)) +#define __HAL_RCC_JPEG_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_JPEGRST)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +#if defined(STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_CRYP_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_CRYPRST)) +#define __HAL_RCC_HASH_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_HASHRST)) +#define __HAL_RCC_CRYP_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_CRYPRST)) +#define __HAL_RCC_HASH_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_HASHRST)) +#endif /* STM32F756xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined(STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_AES_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_AESRST)) +#define __HAL_RCC_AES_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_AESRST)) +#endif /* STM32F732xx || STM32F733xx || STM32F730xx */ + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_DCMI_FORCE_RESET() (RCC->AHB2RSTR |= (RCC_AHB2RSTR_DCMIRST)) +#define __HAL_RCC_DCMI_RELEASE_RESET() (RCC->AHB2RSTR &= ~(RCC_AHB2RSTR_DCMIRST)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @brief Force or release AHB3 peripheral reset + */ +#define __HAL_RCC_AHB3_FORCE_RESET() (RCC->AHB3RSTR = 0xFFFFFFFFU) +#define __HAL_RCC_FMC_FORCE_RESET() (RCC->AHB3RSTR |= (RCC_AHB3RSTR_FMCRST)) +#define __HAL_RCC_QSPI_FORCE_RESET() (RCC->AHB3RSTR |= (RCC_AHB3RSTR_QSPIRST)) + +#define __HAL_RCC_AHB3_RELEASE_RESET() (RCC->AHB3RSTR = 0x00U) +#define __HAL_RCC_FMC_RELEASE_RESET() (RCC->AHB3RSTR &= ~(RCC_AHB3RSTR_FMCRST)) +#define __HAL_RCC_QSPI_RELEASE_RESET() (RCC->AHB3RSTR &= ~(RCC_AHB3RSTR_QSPIRST)) + +/** @brief Force or release APB1 peripheral reset. + */ +#define __HAL_RCC_TIM2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM2RST)) +#define __HAL_RCC_TIM3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM3RST)) +#define __HAL_RCC_TIM4_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM4RST)) +#define __HAL_RCC_TIM5_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM5RST)) +#define __HAL_RCC_TIM6_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM6RST)) +#define __HAL_RCC_TIM7_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM7RST)) +#define __HAL_RCC_TIM12_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM12RST)) +#define __HAL_RCC_TIM13_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM13RST)) +#define __HAL_RCC_TIM14_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_TIM14RST)) +#define __HAL_RCC_LPTIM1_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_LPTIM1RST)) +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_CAN3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_CAN3RST)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#define __HAL_RCC_SPI2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI2RST)) +#define __HAL_RCC_SPI3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_SPI3RST)) +#define __HAL_RCC_USART2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_USART2RST)) +#define __HAL_RCC_USART3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_USART3RST)) +#define __HAL_RCC_UART4_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART4RST)) +#define __HAL_RCC_UART5_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART5RST)) +#define __HAL_RCC_I2C1_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C1RST)) +#define __HAL_RCC_I2C2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C2RST)) +#define __HAL_RCC_I2C3_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C3RST)) +#define __HAL_RCC_CAN1_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_CAN1RST)) +#define __HAL_RCC_DAC_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_DACRST)) +#define __HAL_RCC_UART7_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART7RST)) +#define __HAL_RCC_UART8_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_UART8RST)) + +#define __HAL_RCC_TIM2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM2RST)) +#define __HAL_RCC_TIM3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM3RST)) +#define __HAL_RCC_TIM4_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM4RST)) +#define __HAL_RCC_TIM5_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM5RST)) +#define __HAL_RCC_TIM6_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM6RST)) +#define __HAL_RCC_TIM7_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM7RST)) +#define __HAL_RCC_TIM12_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM12RST)) +#define __HAL_RCC_TIM13_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM13RST)) +#define __HAL_RCC_TIM14_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_TIM14RST)) +#define __HAL_RCC_LPTIM1_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_LPTIM1RST)) +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_CAN3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CAN3RST)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#define __HAL_RCC_SPI2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI2RST)) +#define __HAL_RCC_SPI3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPI3RST)) +#define __HAL_RCC_USART2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_USART2RST)) +#define __HAL_RCC_USART3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_USART3RST)) +#define __HAL_RCC_UART4_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART4RST)) +#define __HAL_RCC_UART5_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART5RST)) +#define __HAL_RCC_I2C1_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C1RST)) +#define __HAL_RCC_I2C2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C2RST)) +#define __HAL_RCC_I2C3_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C3RST)) +#define __HAL_RCC_CAN1_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CAN1RST)) +#define __HAL_RCC_DAC_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_DACRST)) +#define __HAL_RCC_UART7_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART7RST)) +#define __HAL_RCC_UART8_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_UART8RST)) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPDIFRX_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_SPDIFRXRST)) +#define __HAL_RCC_I2C4_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_I2C4RST)) +#define __HAL_RCC_CAN2_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_CAN2RST)) +#define __HAL_RCC_CEC_FORCE_RESET() (RCC->APB1RSTR |= (RCC_APB1RSTR_CECRST)) + +#define __HAL_RCC_SPDIFRX_RELEASE_RESET()(RCC->APB1RSTR &= ~(RCC_APB1RSTR_SPDIFRXRST)) +#define __HAL_RCC_I2C4_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_I2C4RST)) +#define __HAL_RCC_CAN2_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CAN2RST)) +#define __HAL_RCC_CEC_RELEASE_RESET() (RCC->APB1RSTR &= ~(RCC_APB1RSTR_CECRST)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @brief Force or release APB2 peripheral reset. + */ +#define __HAL_RCC_TIM1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM1RST)) +#define __HAL_RCC_TIM8_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM8RST)) +#define __HAL_RCC_USART1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_USART1RST)) +#define __HAL_RCC_USART6_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_USART6RST)) +#define __HAL_RCC_ADC_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_ADCRST)) +#define __HAL_RCC_SDMMC1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SDMMC1RST)) +#define __HAL_RCC_SPI1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI1RST)) +#define __HAL_RCC_SPI4_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI4RST)) +#define __HAL_RCC_TIM9_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM9RST)) +#define __HAL_RCC_TIM10_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM10RST)) +#define __HAL_RCC_TIM11_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_TIM11RST)) +#define __HAL_RCC_SPI5_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI5RST)) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPI6_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SPI6RST)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#define __HAL_RCC_SAI1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SAI1RST)) +#define __HAL_RCC_SAI2_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SAI2RST)) +#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_LTDC_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_LTDCRST)) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_OTGPHYC_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_OTGPHYCRST)) +#endif /* STM32F723xx || STM32F733xx || STM32F730xx */ + +#define __HAL_RCC_TIM1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM1RST)) +#define __HAL_RCC_TIM8_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM8RST)) +#define __HAL_RCC_USART1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_USART1RST)) +#define __HAL_RCC_USART6_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_USART6RST)) +#define __HAL_RCC_ADC_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_ADCRST)) +#define __HAL_RCC_SDMMC1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SDMMC1RST)) +#define __HAL_RCC_SPI1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI1RST)) +#define __HAL_RCC_SPI4_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI4RST)) +#define __HAL_RCC_TIM9_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM9RST)) +#define __HAL_RCC_TIM10_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM10RST)) +#define __HAL_RCC_TIM11_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_TIM11RST)) +#define __HAL_RCC_SPI5_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI5RST)) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPI6_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SPI6RST)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#define __HAL_RCC_SAI1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SAI1RST)) +#define __HAL_RCC_SAI2_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SAI2RST)) +#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_LTDC_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_LTDCRST)) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#if defined (STM32F723xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_OTGPHYC_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_OTGPHYCRST)) +#endif /* STM32F723xx || STM32F733xx || STM32F730xx */ + +#if defined (STM32F769xx) || defined (STM32F779xx) +#define __HAL_RCC_DSI_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_DSIRST)) +#define __HAL_RCC_DSI_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_DSIRST)) +#endif /* STM32F769xx || STM32F779xx */ + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_SDMMC2_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_SDMMC2RST)) +#define __HAL_RCC_SDMMC2_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_SDMMC2RST)) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_DFSDM1_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_DFSDM1RST)) +#define __HAL_RCC_MDIO_FORCE_RESET() (RCC->APB2RSTR |= (RCC_APB2RSTR_MDIORST)) +#define __HAL_RCC_DFSDM1_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_DFSDM1RST)) +#define __HAL_RCC_MDIO_RELEASE_RESET() (RCC->APB2RSTR &= ~(RCC_APB2RSTR_MDIORST)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +/** + * @} + */ + +/** @defgroup RCCEx_Peripheral_Clock_Sleep_Enable_Disable RCCEx Peripheral Clock Sleep Enable Disable + * @brief Enables or disables the AHB/APB peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +/** @brief Enable or disable the AHB1 peripheral clock during Low Power (Sleep) mode. + */ +#define __HAL_RCC_FLITF_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_FLITFLPEN)) +#define __HAL_RCC_AXI_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_AXILPEN)) +#define __HAL_RCC_SRAM1_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_SRAM1LPEN)) +#define __HAL_RCC_SRAM2_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_SRAM2LPEN)) +#define __HAL_RCC_BKPSRAM_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_BKPSRAMLPEN)) +#define __HAL_RCC_DTCM_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_DTCMLPEN)) +#define __HAL_RCC_DMA2_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_DMA2LPEN)) +#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_OTGHSLPEN)) +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_OTGHSULPILPEN)) +#define __HAL_RCC_GPIOA_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOALPEN)) +#define __HAL_RCC_GPIOB_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOBLPEN)) +#define __HAL_RCC_GPIOC_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOCLPEN)) +#define __HAL_RCC_GPIOD_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIODLPEN)) +#define __HAL_RCC_GPIOE_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOELPEN)) +#define __HAL_RCC_GPIOF_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOFLPEN)) +#define __HAL_RCC_GPIOG_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOGLPEN)) +#define __HAL_RCC_GPIOH_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOHLPEN)) +#define __HAL_RCC_GPIOI_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOILPEN)) + +#define __HAL_RCC_FLITF_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_FLITFLPEN)) +#define __HAL_RCC_AXI_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_AXILPEN)) +#define __HAL_RCC_SRAM1_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_SRAM1LPEN)) +#define __HAL_RCC_SRAM2_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_SRAM2LPEN)) +#define __HAL_RCC_BKPSRAM_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_BKPSRAMLPEN)) +#define __HAL_RCC_DTCM_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_DTCMLPEN)) +#define __HAL_RCC_DMA2_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_DMA2LPEN)) +#define __HAL_RCC_USB_OTG_HS_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_OTGHSLPEN)) +#define __HAL_RCC_USB_OTG_HS_ULPI_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_OTGHSULPILPEN)) +#define __HAL_RCC_GPIOA_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOALPEN)) +#define __HAL_RCC_GPIOB_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOBLPEN)) +#define __HAL_RCC_GPIOC_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOCLPEN)) +#define __HAL_RCC_GPIOD_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIODLPEN)) +#define __HAL_RCC_GPIOE_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOELPEN)) +#define __HAL_RCC_GPIOF_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOFLPEN)) +#define __HAL_RCC_GPIOG_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOGLPEN)) +#define __HAL_RCC_GPIOH_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOHLPEN)) +#define __HAL_RCC_GPIOI_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOILPEN)) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_DMA2D_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_DMA2DLPEN)) +#define __HAL_RCC_ETHMAC_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETHMACLPEN)) +#define __HAL_RCC_ETHMACTX_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETHMACTXLPEN)) +#define __HAL_RCC_ETHMACRX_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETHMACRXLPEN)) +#define __HAL_RCC_ETHMACPTP_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_ETHMACPTPLPEN)) +#define __HAL_RCC_GPIOJ_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOJLPEN)) +#define __HAL_RCC_GPIOK_CLK_SLEEP_ENABLE() (RCC->AHB1LPENR |= (RCC_AHB1LPENR_GPIOKLPEN)) + +#define __HAL_RCC_DMA2D_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_DMA2DLPEN)) +#define __HAL_RCC_ETHMAC_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_ETHMACLPEN)) +#define __HAL_RCC_ETHMACTX_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_ETHMACTXLPEN)) +#define __HAL_RCC_ETHMACRX_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_ETHMACRXLPEN)) +#define __HAL_RCC_ETHMACPTP_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_ETHMACPTPLPEN)) +#define __HAL_RCC_GPIOJ_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOJLPEN)) +#define __HAL_RCC_GPIOK_CLK_SLEEP_DISABLE() (RCC->AHB1LPENR &= ~(RCC_AHB1LPENR_GPIOKLPEN)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @brief Enable or disable the AHB2 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_DCMI_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_DCMILPEN)) +#define __HAL_RCC_DCMI_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_DCMILPEN)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_JPEG_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_JPEGLPEN)) +#define __HAL_RCC_JPEG_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_JPEGLPEN)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +#define __HAL_RCC_RNG_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_RNGLPEN)) +#define __HAL_RCC_RNG_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_RNGLPEN)) + +#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_OTGFSLPEN)) +#define __HAL_RCC_USB_OTG_FS_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_OTGFSLPEN)) + +#if defined(STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_CRYPLPEN)) +#define __HAL_RCC_HASH_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_HASHLPEN)) + +#define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_CRYPLPEN)) +#define __HAL_RCC_HASH_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_HASHLPEN)) +#endif /* STM32F756xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined(STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_AES_CLK_SLEEP_ENABLE() (RCC->AHB2LPENR |= (RCC_AHB2LPENR_AESLPEN)) +#define __HAL_RCC_AES_CLK_SLEEP_DISABLE() (RCC->AHB2LPENR &= ~(RCC_AHB2LPENR_AESLPEN)) +#endif /* STM32F732xx || STM32F733xx || STM32F730xx */ + +/** @brief Enable or disable the AHB3 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_FMC_CLK_SLEEP_ENABLE() (RCC->AHB3LPENR |= (RCC_AHB3LPENR_FMCLPEN)) +#define __HAL_RCC_FMC_CLK_SLEEP_DISABLE() (RCC->AHB3LPENR &= ~(RCC_AHB3LPENR_FMCLPEN)) + +#define __HAL_RCC_QSPI_CLK_SLEEP_ENABLE() (RCC->AHB3LPENR |= (RCC_AHB3LPENR_QSPILPEN)) +#define __HAL_RCC_QSPI_CLK_SLEEP_DISABLE() (RCC->AHB3LPENR &= ~(RCC_AHB3LPENR_QSPILPEN)) + +/** @brief Enable or disable the APB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_TIM2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM2LPEN)) +#define __HAL_RCC_TIM3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM3LPEN)) +#define __HAL_RCC_TIM4_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM4LPEN)) +#define __HAL_RCC_TIM5_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM5LPEN)) +#define __HAL_RCC_TIM6_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM6LPEN)) +#define __HAL_RCC_TIM7_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM7LPEN)) +#define __HAL_RCC_TIM12_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM12LPEN)) +#define __HAL_RCC_TIM13_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM13LPEN)) +#define __HAL_RCC_TIM14_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_TIM14LPEN)) +#define __HAL_RCC_LPTIM1_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_LPTIM1LPEN)) +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_CAN3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_CAN3LPEN)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#define __HAL_RCC_SPI2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_SPI2LPEN)) +#define __HAL_RCC_SPI3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_SPI3LPEN)) +#define __HAL_RCC_USART2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_USART2LPEN)) +#define __HAL_RCC_USART3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_USART3LPEN)) +#define __HAL_RCC_UART4_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART4LPEN)) +#define __HAL_RCC_UART5_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART5LPEN)) +#define __HAL_RCC_I2C1_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_I2C1LPEN)) +#define __HAL_RCC_I2C2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_I2C2LPEN)) +#define __HAL_RCC_I2C3_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_I2C3LPEN)) +#define __HAL_RCC_CAN1_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_CAN1LPEN)) +#define __HAL_RCC_DAC_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_DACLPEN)) +#define __HAL_RCC_UART7_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART7LPEN)) +#define __HAL_RCC_UART8_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_UART8LPEN)) + +#define __HAL_RCC_TIM2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM2LPEN)) +#define __HAL_RCC_TIM3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM3LPEN)) +#define __HAL_RCC_TIM4_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM4LPEN)) +#define __HAL_RCC_TIM5_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM5LPEN)) +#define __HAL_RCC_TIM6_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM6LPEN)) +#define __HAL_RCC_TIM7_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM7LPEN)) +#define __HAL_RCC_TIM12_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM12LPEN)) +#define __HAL_RCC_TIM13_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM13LPEN)) +#define __HAL_RCC_TIM14_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_TIM14LPEN)) +#define __HAL_RCC_LPTIM1_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_LPTIM1LPEN)) +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_CAN3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_CAN3LPEN)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#define __HAL_RCC_SPI2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_SPI2LPEN)) +#define __HAL_RCC_SPI3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_SPI3LPEN)) +#define __HAL_RCC_USART2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_USART2LPEN)) +#define __HAL_RCC_USART3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_USART3LPEN)) +#define __HAL_RCC_UART4_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART4LPEN)) +#define __HAL_RCC_UART5_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART5LPEN)) +#define __HAL_RCC_I2C1_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_I2C1LPEN)) +#define __HAL_RCC_I2C2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_I2C2LPEN)) +#define __HAL_RCC_I2C3_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_I2C3LPEN)) +#define __HAL_RCC_CAN1_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_CAN1LPEN)) +#define __HAL_RCC_DAC_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_DACLPEN)) +#define __HAL_RCC_UART7_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART7LPEN)) +#define __HAL_RCC_UART8_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_UART8LPEN)) + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\ + defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\ + defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_RTC_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_RTCLPEN)) +#define __HAL_RCC_RTC_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_RTCLPEN)) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || + STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPDIFRX_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_SPDIFRXLPEN)) +#define __HAL_RCC_I2C4_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_I2C4LPEN)) +#define __HAL_RCC_CAN2_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_CAN2LPEN)) +#define __HAL_RCC_CEC_CLK_SLEEP_ENABLE() (RCC->APB1LPENR |= (RCC_APB1LPENR_CECLPEN)) + +#define __HAL_RCC_SPDIFRX_CLK_SLEEP_DISABLE()(RCC->APB1LPENR &= ~(RCC_APB1LPENR_SPDIFRXLPEN)) +#define __HAL_RCC_I2C4_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_I2C4LPEN)) +#define __HAL_RCC_CAN2_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_CAN2LPEN)) +#define __HAL_RCC_CEC_CLK_SLEEP_DISABLE() (RCC->APB1LPENR &= ~(RCC_APB1LPENR_CECLPEN)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @brief Enable or disable the APB2 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_TIM1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM1LPEN)) +#define __HAL_RCC_TIM8_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM8LPEN)) +#define __HAL_RCC_USART1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_USART1LPEN)) +#define __HAL_RCC_USART6_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_USART6LPEN)) +#define __HAL_RCC_ADC1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_ADC1LPEN)) +#define __HAL_RCC_ADC2_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_ADC2LPEN)) +#define __HAL_RCC_ADC3_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_ADC3LPEN)) +#define __HAL_RCC_SDMMC1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SDMMC1LPEN)) +#define __HAL_RCC_SPI1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SPI1LPEN)) +#define __HAL_RCC_SPI4_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SPI4LPEN)) +#define __HAL_RCC_TIM9_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM9LPEN)) +#define __HAL_RCC_TIM10_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM10LPEN)) +#define __HAL_RCC_TIM11_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_TIM11LPEN)) +#define __HAL_RCC_SPI5_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SPI5LPEN)) +#define __HAL_RCC_SAI1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SAI1LPEN)) +#define __HAL_RCC_SAI2_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SAI2LPEN)) +#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_LTDC_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_LTDCLPEN)) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#define __HAL_RCC_TIM1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM1LPEN)) +#define __HAL_RCC_TIM8_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM8LPEN)) +#define __HAL_RCC_USART1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_USART1LPEN)) +#define __HAL_RCC_USART6_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_USART6LPEN)) +#define __HAL_RCC_ADC1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_ADC1LPEN)) +#define __HAL_RCC_ADC2_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_ADC2LPEN)) +#define __HAL_RCC_ADC3_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_ADC3LPEN)) +#define __HAL_RCC_SDMMC1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SDMMC1LPEN)) +#define __HAL_RCC_SPI1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SPI1LPEN)) +#define __HAL_RCC_SPI4_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SPI4LPEN)) +#define __HAL_RCC_TIM9_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM9LPEN)) +#define __HAL_RCC_TIM10_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM10LPEN)) +#define __HAL_RCC_TIM11_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_TIM11LPEN)) +#define __HAL_RCC_SPI5_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SPI5LPEN)) +#define __HAL_RCC_SAI1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SAI1LPEN)) +#define __HAL_RCC_SAI2_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SAI2LPEN)) +#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx)|| defined (STM32F750xx) +#define __HAL_RCC_LTDC_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_LTDCLPEN)) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#if defined (STM32F769xx) || defined (STM32F779xx) +#define __HAL_RCC_DSI_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_DSILPEN)) +#define __HAL_RCC_DSI_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_DSILPEN)) +#endif /* STM32F769xx || STM32F779xx */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_DFSDM1_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_DFSDM1LPEN)) +#define __HAL_RCC_MDIO_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_MDIOLPEN)) +#define __HAL_RCC_DFSDM1_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_DFSDM1LPEN)) +#define __HAL_RCC_MDIO_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_MDIOLPEN)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_SDMMC2_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SDMMC2LPEN)) +#define __HAL_RCC_SDMMC2_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SDMMC2LPEN)) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPI6_CLK_SLEEP_ENABLE() (RCC->APB2LPENR |= (RCC_APB2LPENR_SPI6LPEN)) +#define __HAL_RCC_SPI6_CLK_SLEEP_DISABLE() (RCC->APB2LPENR &= ~(RCC_APB2LPENR_SPI6LPEN)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +/** + * @} + */ + +/** @defgroup RCC_Clock_Sleep_Enable_Disable_Status AHB/APB Peripheral Clock Sleep Enable Disable Status + * @brief Get the enable or disable status of the AHB/APB peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + * @{ + */ + +/** @brief Get the enable or disable status of the AHB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_FLITF_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_FLITFLPEN)) != RESET) +#define __HAL_RCC_AXI_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_AXILPEN)) != RESET) +#define __HAL_RCC_SRAM1_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_SRAM1LPEN)) != RESET) +#define __HAL_RCC_SRAM2_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_SRAM2LPEN)) != RESET) +#define __HAL_RCC_BKPSRAM_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_BKPSRAMLPEN)) != RESET) +#define __HAL_RCC_DTCM_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DTCMLPEN)) != RESET) +#define __HAL_RCC_DMA2_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA2LPEN)) != RESET) +#define __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_OTGHSLPEN)) != RESET) +#define __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_OTGHSULPILPEN)) != RESET) +#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOALPEN)) != RESET) +#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOBLPEN)) != RESET) +#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOCLPEN)) != RESET) +#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIODLPEN)) != RESET) +#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOELPEN)) != RESET) +#define __HAL_RCC_GPIOF_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOFLPEN)) != RESET) +#define __HAL_RCC_GPIOG_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOGLPEN)) != RESET) +#define __HAL_RCC_GPIOH_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOHLPEN)) != RESET) +#define __HAL_RCC_GPIOI_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOILPEN)) != RESET) + +#define __HAL_RCC_FLITF_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_FLITFLPEN)) == RESET) +#define __HAL_RCC_AXI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_AXILPEN)) == RESET) +#define __HAL_RCC_SRAM1_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_SRAM1LPEN)) == RESET) +#define __HAL_RCC_SRAM2_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_SRAM2LPEN)) == RESET) +#define __HAL_RCC_BKPSRAM_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_BKPSRAMLPEN)) == RESET) +#define __HAL_RCC_DTCM_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DTCMLPEN)) == RESET) +#define __HAL_RCC_DMA2_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA2LPEN)) == RESET) +#define __HAL_RCC_USB_OTG_HS_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_OTGHSLPEN)) == RESET) +#define __HAL_RCC_USB_OTG_HS_ULPI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_OTGHSULPILPEN)) == RESET) +#define __HAL_RCC_GPIOA_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOALPEN)) == RESET) +#define __HAL_RCC_GPIOB_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOBLPEN)) == RESET) +#define __HAL_RCC_GPIOC_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOCLPEN)) == RESET) +#define __HAL_RCC_GPIOD_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIODLPEN)) == RESET) +#define __HAL_RCC_GPIOE_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOELPEN)) == RESET) +#define __HAL_RCC_GPIOF_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOFLPEN)) == RESET) +#define __HAL_RCC_GPIOG_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOGLPEN)) == RESET) +#define __HAL_RCC_GPIOH_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOHLPEN)) == RESET) +#define __HAL_RCC_GPIOI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOILPEN)) == RESET) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_DMA2D_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA2DLPEN)) != RESET) +#define __HAL_RCC_ETHMAC_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACLPEN)) != RESET) +#define __HAL_RCC_ETHMACTX_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACTXLPEN)) != RESET) +#define __HAL_RCC_ETHMACRX_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACRXLPEN)) != RESET) +#define __HAL_RCC_ETHMACPTP_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACPTPLPEN)) != RESET) +#define __HAL_RCC_GPIOJ_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOJLPEN)) != RESET) +#define __HAL_RCC_GPIOK_IS_CLK_SLEEP_ENABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOKLPEN)) != RESET) + +#define __HAL_RCC_DMA2D_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_DMA2DLPEN)) == RESET) +#define __HAL_RCC_ETHMAC_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACLPEN)) == RESET) +#define __HAL_RCC_ETHMACTX_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACTXLPEN)) == RESET) +#define __HAL_RCC_ETHMACRX_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACRXLPEN)) == RESET) +#define __HAL_RCC_ETHMACPTP_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_ETHMACPTPLPEN)) == RESET) +#define __HAL_RCC_GPIOJ_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOJLPEN)) == RESET) +#define __HAL_RCC_GPIOK_IS_CLK_SLEEP_DISABLED() ((RCC->AHB1LPENR & (RCC_AHB1LPENR_GPIOKLPEN)) == RESET) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @brief Get the enable or disable status of the AHB2 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_DCMI_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_DCMILPEN)) != RESET) +#define __HAL_RCC_DCMI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_DCMILPEN)) == RESET) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined(STM32F767xx) || defined(STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_JPEG_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_JPEGLPEN)) != RESET) +#define __HAL_RCC_JPEG_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_JPEGLPEN)) == RESET) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +#define __HAL_RCC_RNG_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_RNGLPEN)) != RESET) +#define __HAL_RCC_RNG_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_RNGLPEN)) == RESET) + +#define __HAL_RCC_USB_OTG_FS_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_OTGFSLPEN)) != RESET) +#define __HAL_RCC_USB_OTG_FS_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_OTGFSLPEN)) == RESET) + +#if defined(STM32F756xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_CRYP_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_CRYPLPEN)) != RESET) +#define __HAL_RCC_HASH_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_HASHLPEN)) != RESET) + +#define __HAL_RCC_CRYP_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_CRYPLPEN)) == RESET) +#define __HAL_RCC_HASH_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_HASHLPEN)) == RESET) +#endif /* STM32F756xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined(STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define __HAL_RCC_AES_IS_CLK_SLEEP_ENABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_AESLPEN)) != RESET) +#define __HAL_RCC_AES_IS_CLK_SLEEP_DISABLED() ((RCC->AHB2LPENR & (RCC_AHB2LPENR_AESLPEN)) == RESET) +#endif /* STM32F732xx || STM32F733xx || STM32F730xx */ + +/** @brief Get the enable or disable status of the AHB3 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_FMC_IS_CLK_SLEEP_ENABLED() ((RCC->AHB3LPENR & (RCC_AHB3LPENR_FMCLPEN)) != RESET) +#define __HAL_RCC_FMC_IS_CLK_SLEEP_DISABLED() ((RCC->AHB3LPENR & (RCC_AHB3LPENR_FMCLPEN)) == RESET) + +#define __HAL_RCC_QSPI_IS_CLK_SLEEP_ENABLED() ((RCC->AHB3LPENR & (RCC_AHB3LPENR_QSPILPEN)) != RESET) +#define __HAL_RCC_QSPI_IS_CLK_SLEEP_DISABLED() ((RCC->AHB3LPENR & (RCC_AHB3LPENR_QSPILPEN)) == RESET) + +/** @brief Get the enable or disable status of the APB1 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM2LPEN)) != RESET) +#define __HAL_RCC_TIM3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM3LPEN)) != RESET) +#define __HAL_RCC_TIM4_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM4LPEN)) != RESET) +#define __HAL_RCC_TIM5_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM5LPEN)) != RESET) +#define __HAL_RCC_TIM6_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM6LPEN)) != RESET) +#define __HAL_RCC_TIM7_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM7LPEN)) != RESET) +#define __HAL_RCC_TIM12_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM12LPEN)) != RESET) +#define __HAL_RCC_TIM13_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM13LPEN)) != RESET) +#define __HAL_RCC_TIM14_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM14LPEN)) != RESET) +#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_LPTIM1LPEN)) != RESET) +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\ + defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\ + defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_RTC_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_RTCLPEN)) != RESET) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || + STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_CAN3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN3LPEN)) != RESET) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#define __HAL_RCC_SPI2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI2LPEN)) != RESET) +#define __HAL_RCC_SPI3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI3LPEN)) != RESET) +#define __HAL_RCC_USART2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART2LPEN)) != RESET) +#define __HAL_RCC_USART3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART3LPEN)) != RESET) +#define __HAL_RCC_UART4_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART4LPEN)) != RESET) +#define __HAL_RCC_UART5_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART5LPEN)) != RESET) +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C1LPEN)) != RESET) +#define __HAL_RCC_I2C2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C2LPEN)) != RESET) +#define __HAL_RCC_I2C3_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C3LPEN)) != RESET) +#define __HAL_RCC_CAN1_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN1LPEN)) != RESET) +#define __HAL_RCC_DAC_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_DACLPEN)) != RESET) +#define __HAL_RCC_UART7_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART7LPEN)) != RESET) +#define __HAL_RCC_UART8_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART8LPEN)) != RESET) + +#define __HAL_RCC_TIM2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM2LPEN)) == RESET) +#define __HAL_RCC_TIM3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM3LPEN)) == RESET) +#define __HAL_RCC_TIM4_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM4LPEN)) == RESET) +#define __HAL_RCC_TIM5_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM5LPEN)) == RESET) +#define __HAL_RCC_TIM6_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM6LPEN)) == RESET) +#define __HAL_RCC_TIM7_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM7LPEN)) == RESET) +#define __HAL_RCC_TIM12_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM12LPEN)) == RESET) +#define __HAL_RCC_TIM13_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM13LPEN)) == RESET) +#define __HAL_RCC_TIM14_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_TIM14LPEN)) == RESET) +#define __HAL_RCC_LPTIM1_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_LPTIM1LPEN)) == RESET) +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) ||\ + defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) ||\ + defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_RTC_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_RTCLPEN)) == RESET) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || + STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_CAN3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN3LPEN)) == RESET) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +#define __HAL_RCC_SPI2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI2LPEN)) == RESET) +#define __HAL_RCC_SPI3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPI3LPEN)) == RESET) +#define __HAL_RCC_USART2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART2LPEN)) == RESET) +#define __HAL_RCC_USART3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_USART3LPEN)) == RESET) +#define __HAL_RCC_UART4_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART4LPEN)) == RESET) +#define __HAL_RCC_UART5_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART5LPEN)) == RESET) +#define __HAL_RCC_I2C1_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C1LPEN)) == RESET) +#define __HAL_RCC_I2C2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C2LPEN)) == RESET) +#define __HAL_RCC_I2C3_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C3LPEN)) == RESET) +#define __HAL_RCC_CAN1_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN1LPEN)) == RESET) +#define __HAL_RCC_DAC_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_DACLPEN)) == RESET) +#define __HAL_RCC_UART7_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART7LPEN)) == RESET) +#define __HAL_RCC_UART8_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_UART8LPEN)) == RESET) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPDIFRX_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_SPDIFRXLPEN)) != RESET) +#define __HAL_RCC_I2C4_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C4LPEN)) != RESET) +#define __HAL_RCC_CAN2_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN2LPEN)) != RESET) +#define __HAL_RCC_CEC_IS_CLK_SLEEP_ENABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CECLPEN)) != RESET) + +#define __HAL_RCC_SPDIFRX_IS_CLK_SLEEP_DISABLED()((RCC->APB1LPENR & (RCC_APB1LPENR_SPDIFRXLPEN)) == RESET) +#define __HAL_RCC_I2C4_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_I2C4LPEN)) == RESET) +#define __HAL_RCC_CAN2_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CAN2LPEN)) == RESET) +#define __HAL_RCC_CEC_IS_CLK_SLEEP_DISABLED() ((RCC->APB1LPENR & (RCC_APB1LPENR_CECLPEN)) == RESET) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @brief Get the enable or disable status of the APB2 peripheral clock during Low Power (Sleep) mode. + * @note Peripheral clock gating in SLEEP mode can be used to further reduce + * power consumption. + * @note After wakeup from SLEEP mode, the peripheral clock is enabled again. + * @note By default, all peripheral clocks are enabled during SLEEP mode. + */ +#define __HAL_RCC_TIM1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM1LPEN)) != RESET) +#define __HAL_RCC_TIM8_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM8LPEN)) != RESET) +#define __HAL_RCC_USART1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_USART1LPEN)) != RESET) +#define __HAL_RCC_USART6_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_USART6LPEN)) != RESET) +#define __HAL_RCC_ADC1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC1LPEN)) != RESET) +#define __HAL_RCC_ADC2_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC2LPEN)) != RESET) +#define __HAL_RCC_ADC3_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC3LPEN)) != RESET) +#define __HAL_RCC_SDMMC1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDMMC1LPEN)) != RESET) +#define __HAL_RCC_SPI1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI1LPEN)) != RESET) +#define __HAL_RCC_SPI4_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI4LPEN)) != RESET) +#define __HAL_RCC_TIM9_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM9LPEN)) != RESET) +#define __HAL_RCC_TIM10_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM10LPEN)) != RESET) +#define __HAL_RCC_TIM11_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM11LPEN)) != RESET) +#define __HAL_RCC_SPI5_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI5LPEN)) != RESET) +#define __HAL_RCC_SAI1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI1LPEN)) != RESET) +#define __HAL_RCC_SAI2_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI2LPEN)) != RESET) +#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_LTDC_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_LTDCLPEN)) != RESET) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#if defined (STM32F769xx) || defined (STM32F779xx) +#define __HAL_RCC_DSI_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_DSILPEN)) != RESET) +#endif /* STM32F769xx || STM32F779xx */ +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_SDMMC2_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDMMC2LPEN)) != RESET) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_DFSDM1_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_DFSDM1LPEN)) != RESET) +#define __HAL_RCC_MDIO_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_MDIOLPEN)) != RESET) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +#define __HAL_RCC_TIM1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM1LPEN)) == RESET) +#define __HAL_RCC_TIM8_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM8LPEN)) == RESET) +#define __HAL_RCC_USART1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_USART1LPEN)) == RESET) +#define __HAL_RCC_USART6_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_USART6LPEN)) == RESET) +#define __HAL_RCC_ADC1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC1LPEN)) == RESET) +#define __HAL_RCC_ADC2_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC2LPEN)) == RESET) +#define __HAL_RCC_ADC3_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_ADC3LPEN)) == RESET) +#define __HAL_RCC_SDMMC1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDMMC1LPEN)) == RESET) +#define __HAL_RCC_SPI1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI1LPEN)) == RESET) +#define __HAL_RCC_SPI4_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI4LPEN)) == RESET) +#define __HAL_RCC_TIM9_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM9LPEN)) == RESET) +#define __HAL_RCC_TIM10_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM10LPEN)) == RESET) +#define __HAL_RCC_TIM11_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_TIM11LPEN)) == RESET) +#define __HAL_RCC_SPI5_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI5LPEN)) == RESET) +#define __HAL_RCC_SAI1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI1LPEN)) == RESET) +#define __HAL_RCC_SAI2_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SAI2LPEN)) == RESET) +#if defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define __HAL_RCC_LTDC_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_LTDCLPEN)) == RESET) +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#if defined (STM32F769xx) || defined (STM32F779xx) +#define __HAL_RCC_DSI_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_DSILPEN)) == RESET) +#endif /* STM32F769xx || STM32F779xx */ +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +#define __HAL_RCC_SDMMC2_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SDMMC2LPEN)) == RESET) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define __HAL_RCC_DFSDM1_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_DFSDM1LPEN)) == RESET) +#define __HAL_RCC_MDIO_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_MDIOLPEN)) == RESET) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +#define __HAL_RCC_SPI6_IS_CLK_SLEEP_ENABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI6LPEN)) != RESET) +#define __HAL_RCC_SPI6_IS_CLK_SLEEP_DISABLED() ((RCC->APB2LPENR & (RCC_APB2LPENR_SPI6LPEN)) == RESET) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +/** + * @} + */ + +/*------------------------------- PLL Configuration --------------------------*/ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +/** @brief Macro to configure the main PLL clock source, multiplication and division factors. + * @note This function must be used only when the main PLL is disabled. + * @param __RCC_PLLSource__ specifies the PLL entry clock source. + * This parameter can be one of the following values: + * @arg RCC_PLLSOURCE_HSI: HSI oscillator clock selected as PLL clock entry + * @arg RCC_PLLSOURCE_HSE: HSE oscillator clock selected as PLL clock entry + * @note This clock source (RCC_PLLSource) is common for the main PLL and PLLI2S. + * @param __PLLM__ specifies the division factor for PLL VCO input clock + * This parameter must be a number between Min_Data = 2 and Max_Data = 63. + * @note You have to set the PLLM parameter correctly to ensure that the VCO input + * frequency ranges from 1 to 2 MHz. It is recommended to select a frequency + * of 2 MHz to limit PLL jitter. + * @param __PLLN__ specifies the multiplication factor for PLL VCO output clock + * This parameter must be a number between Min_Data = 50 and Max_Data = 432. + * @note You have to set the PLLN parameter correctly to ensure that the VCO + * output frequency is between 100 and 432 MHz. + * @param __PLLP__ specifies the division factor for main system clock (SYSCLK) + * This parameter must be a number in the range {2, 4, 6, or 8}. + * @note You have to set the PLLP parameter correctly to not exceed 216 MHz on + * the System clock frequency. + * @param __PLLQ__ specifies the division factor for OTG FS, SDMMC and RNG clocks + * This parameter must be a number between Min_Data = 2 and Max_Data = 15. + * @note If the USB OTG FS is used in your application, you have to set the + * PLLQ parameter correctly to have 48 MHz clock for the USB. However, + * the SDMMC and RNG need a frequency lower than or equal to 48 MHz to work + * correctly. + * @param __PLLR__ specifies the division factor for DSI clock + * This parameter must be a number between Min_Data = 2 and Max_Data = 7. + */ +#define __HAL_RCC_PLL_CONFIG(__RCC_PLLSource__, __PLLM__, __PLLN__, __PLLP__, __PLLQ__,__PLLR__) \ + (RCC->PLLCFGR = ((__RCC_PLLSource__) | (__PLLM__) | \ + ((__PLLN__) << RCC_PLLCFGR_PLLN_Pos) | \ + ((((__PLLP__) >> 1) -1) << RCC_PLLCFGR_PLLP_Pos) | \ + ((__PLLQ__) << RCC_PLLCFGR_PLLQ_Pos) | \ + ((__PLLR__) << RCC_PLLCFGR_PLLR_Pos))) +#else +/** @brief Macro to configure the main PLL clock source, multiplication and division factors. + * @note This function must be used only when the main PLL is disabled. + * @param __RCC_PLLSource__ specifies the PLL entry clock source. + * This parameter can be one of the following values: + * @arg RCC_PLLSOURCE_HSI: HSI oscillator clock selected as PLL clock entry + * @arg RCC_PLLSOURCE_HSE: HSE oscillator clock selected as PLL clock entry + * @note This clock source (RCC_PLLSource) is common for the main PLL and PLLI2S. + * @param __PLLM__ specifies the division factor for PLL VCO input clock + * This parameter must be a number between Min_Data = 2 and Max_Data = 63. + * @note You have to set the PLLM parameter correctly to ensure that the VCO input + * frequency ranges from 1 to 2 MHz. It is recommended to select a frequency + * of 2 MHz to limit PLL jitter. + * @param __PLLN__ specifies the multiplication factor for PLL VCO output clock + * This parameter must be a number between Min_Data = 50 and Max_Data = 432. + * @note You have to set the PLLN parameter correctly to ensure that the VCO + * output frequency is between 100 and 432 MHz. + * @param __PLLP__ specifies the division factor for main system clock (SYSCLK) + * This parameter must be a number in the range {2, 4, 6, or 8}. + * @note You have to set the PLLP parameter correctly to not exceed 216 MHz on + * the System clock frequency. + * @param __PLLQ__ specifies the division factor for OTG FS, SDMMC and RNG clocks + * This parameter must be a number between Min_Data = 2 and Max_Data = 15. + * @note If the USB OTG FS is used in your application, you have to set the + * PLLQ parameter correctly to have 48 MHz clock for the USB. However, + * the SDMMC and RNG need a frequency lower than or equal to 48 MHz to work + * correctly. + */ +#define __HAL_RCC_PLL_CONFIG(__RCC_PLLSource__, __PLLM__, __PLLN__, __PLLP__, __PLLQ__) \ + (RCC->PLLCFGR = (0x20000000 | (__RCC_PLLSource__) | (__PLLM__)| \ + ((__PLLN__) << RCC_PLLCFGR_PLLN_Pos) | \ + ((((__PLLP__) >> 1) -1) << RCC_PLLCFGR_PLLP_Pos) | \ + ((__PLLQ__) << RCC_PLLCFGR_PLLQ_Pos))) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +/*---------------------------------------------------------------------------------------------*/ + +/** @brief Macro to configure the Timers clocks prescalers + * @param __PRESC__ specifies the Timers clocks prescalers selection + * This parameter can be one of the following values: + * @arg RCC_TIMPRES_DESACTIVATED: The Timers kernels clocks prescaler is + * equal to HPRE if PPREx is corresponding to division by 1 or 2, + * else it is equal to [(HPRE * PPREx) / 2] if PPREx is corresponding to + * division by 4 or more. + * @arg RCC_TIMPRES_ACTIVATED: The Timers kernels clocks prescaler is + * equal to HPRE if PPREx is corresponding to division by 1, 2 or 4, + * else it is equal to [(HPRE * PPREx) / 4] if PPREx is corresponding + * to division by 8 or more. + */ +#define __HAL_RCC_TIMCLKPRESCALER(__PRESC__) do {RCC->DCKCFGR1 &= ~(RCC_DCKCFGR1_TIMPRE);\ + RCC->DCKCFGR1 |= (__PRESC__); \ + }while(0) + +/** @brief Macros to Enable or Disable the PLLISAI. + * @note The PLLSAI is disabled by hardware when entering STOP and STANDBY modes. + */ +#define __HAL_RCC_PLLSAI_ENABLE() (RCC->CR |= (RCC_CR_PLLSAION)) +#define __HAL_RCC_PLLSAI_DISABLE() (RCC->CR &= ~(RCC_CR_PLLSAION)) + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) +/** @brief Macro to configure the PLLSAI clock multiplication and division factors. + * @note This function must be used only when the PLLSAI is disabled. + * @note PLLSAI clock source is common with the main PLL (configured in + * RCC_PLLConfig function ) + * @param __PLLSAIN__ specifies the multiplication factor for PLLSAI VCO output clock. + * This parameter must be a number between Min_Data = 50 and Max_Data = 432. + * @note You have to set the PLLSAIN parameter correctly to ensure that the VCO + * output frequency is between Min_Data = 100 and Max_Data = 432 MHz. + * @param __PLLSAIP__ specifies the division factor for USB, RNG, SDMMC clocks + * This parameter can be a value of @ref RCCEx_PLLSAIP_Clock_Divider. + * @param __PLLSAIQ__ specifies the division factor for SAI clock + * This parameter must be a number between Min_Data = 2 and Max_Data = 15. + */ +#define __HAL_RCC_PLLSAI_CONFIG(__PLLSAIN__, __PLLSAIP__, __PLLSAIQ__) \ + (RCC->PLLSAICFGR = ((__PLLSAIN__) << RCC_PLLSAICFGR_PLLSAIN_Pos) |\ + ((__PLLSAIP__) << RCC_PLLSAICFGR_PLLSAIP_Pos) |\ + ((__PLLSAIQ__) << RCC_PLLSAICFGR_PLLSAIQ_Pos)) + +/** @brief Macro to configure the PLLI2S clock multiplication and division factors. + * @note This macro must be used only when the PLLI2S is disabled. + * @note PLLI2S clock source is common with the main PLL (configured in + * HAL_RCC_ClockConfig() API) + * @param __PLLI2SN__ specifies the multiplication factor for PLLI2S VCO output clock. + * This parameter must be a number between Min_Data = 50 and Max_Data = 432. + * @note You have to set the PLLI2SN parameter correctly to ensure that the VCO + * output frequency is between Min_Data = 100 and Max_Data = 432 MHz. + * @param __PLLI2SQ__ specifies the division factor for SAI clock. + * This parameter must be a number between Min_Data = 2 and Max_Data = 15. + * @param __PLLI2SR__ specifies the division factor for I2S clock + * This parameter must be a number between Min_Data = 2 and Max_Data = 7. + * @note You have to set the PLLI2SR parameter correctly to not exceed 192 MHz + * on the I2S clock frequency. + */ +#define __HAL_RCC_PLLI2S_CONFIG(__PLLI2SN__, __PLLI2SQ__, __PLLI2SR__) \ + (RCC->PLLI2SCFGR = ((__PLLI2SN__) << RCC_PLLI2SCFGR_PLLI2SN_Pos) |\ + ((__PLLI2SQ__) << RCC_PLLI2SCFGR_PLLI2SQ_Pos) |\ + ((__PLLI2SR__) << RCC_PLLI2SCFGR_PLLI2SR_Pos)) +#else +/** @brief Macro to configure the PLLSAI clock multiplication and division factors. + * @note This function must be used only when the PLLSAI is disabled. + * @note PLLSAI clock source is common with the main PLL (configured in + * RCC_PLLConfig function ) + * @param __PLLSAIN__ specifies the multiplication factor for PLLSAI VCO output clock. + * This parameter must be a number between Min_Data = 50 and Max_Data = 432. + * @note You have to set the PLLSAIN parameter correctly to ensure that the VCO + * output frequency is between Min_Data = 100 and Max_Data = 432 MHz. + * @param __PLLSAIP__ specifies the division factor for USB, RNG, SDMMC clocks + * This parameter can be a value of @ref RCCEx_PLLSAIP_Clock_Divider. + * @param __PLLSAIQ__ specifies the division factor for SAI clock + * This parameter must be a number between Min_Data = 2 and Max_Data = 15. + * @param __PLLSAIR__ specifies the division factor for LTDC clock + * This parameter must be a number between Min_Data = 2 and Max_Data = 7. + */ +#define __HAL_RCC_PLLSAI_CONFIG(__PLLSAIN__, __PLLSAIP__, __PLLSAIQ__, __PLLSAIR__) \ + (RCC->PLLSAICFGR = ((__PLLSAIN__) << RCC_PLLSAICFGR_PLLSAIN_Pos) |\ + ((__PLLSAIP__) << RCC_PLLSAICFGR_PLLSAIP_Pos) |\ + ((__PLLSAIQ__) << RCC_PLLSAICFGR_PLLSAIQ_Pos) |\ + ((__PLLSAIR__) << RCC_PLLSAICFGR_PLLSAIR_Pos)) + +/** @brief Macro to configure the PLLI2S clock multiplication and division factors. + * @note This macro must be used only when the PLLI2S is disabled. + * @note PLLI2S clock source is common with the main PLL (configured in + * HAL_RCC_ClockConfig() API) + * @param __PLLI2SN__ specifies the multiplication factor for PLLI2S VCO output clock. + * This parameter must be a number between Min_Data = 50 and Max_Data = 432. + * @note You have to set the PLLI2SN parameter correctly to ensure that the VCO + * output frequency is between Min_Data = 100 and Max_Data = 432 MHz. + * @param __PLLI2SP__ specifies the division factor for SPDDIF-RX clock. + * This parameter can be a value of @ref RCCEx_PLLI2SP_Clock_Divider. + * @param __PLLI2SQ__ specifies the division factor for SAI clock. + * This parameter must be a number between Min_Data = 2 and Max_Data = 15. + * @param __PLLI2SR__ specifies the division factor for I2S clock + * This parameter must be a number between Min_Data = 2 and Max_Data = 7. + * @note You have to set the PLLI2SR parameter correctly to not exceed 192 MHz + * on the I2S clock frequency. + */ +#define __HAL_RCC_PLLI2S_CONFIG(__PLLI2SN__, __PLLI2SP__, __PLLI2SQ__, __PLLI2SR__) \ + (RCC->PLLI2SCFGR = ((__PLLI2SN__) << RCC_PLLI2SCFGR_PLLI2SN_Pos) |\ + ((__PLLI2SP__) << RCC_PLLI2SCFGR_PLLI2SP_Pos) |\ + ((__PLLI2SQ__) << RCC_PLLI2SCFGR_PLLI2SQ_Pos) |\ + ((__PLLI2SR__) << RCC_PLLI2SCFGR_PLLI2SR_Pos)) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */ + +/** @brief Macro to configure the SAI clock Divider coming from PLLI2S. + * @note This function must be called before enabling the PLLI2S. + * @param __PLLI2SDivQ__ specifies the PLLI2S division factor for SAI1 clock . + * This parameter must be a number between 1 and 32. + * SAI1 clock frequency = f(PLLI2SQ) / __PLLI2SDivQ__ + */ +#define __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(__PLLI2SDivQ__) (MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLI2SDIVQ, (__PLLI2SDivQ__)-1)) + +/** @brief Macro to configure the SAI clock Divider coming from PLLSAI. + * @note This function must be called before enabling the PLLSAI. + * @param __PLLSAIDivQ__ specifies the PLLSAI division factor for SAI1 clock . + * This parameter must be a number between Min_Data = 1 and Max_Data = 32. + * SAI1 clock frequency = f(PLLSAIQ) / __PLLSAIDivQ__ + */ +#define __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(__PLLSAIDivQ__) (MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVQ, ((__PLLSAIDivQ__)-1)<<8)) + +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) ||\ + defined (STM32F750xx) +/** @brief Macro to configure the LTDC clock Divider coming from PLLSAI. + * @note This function must be called before enabling the PLLSAI. + * @param __PLLSAIDivR__ specifies the PLLSAI division factor for LTDC clock . + * This parameter can be a value of @ref RCCEx_PLLSAI_DIVR. + * LTDC clock frequency = f(PLLSAIR) / __PLLSAIDivR__ + */ +#define __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(__PLLSAIDivR__)\ + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVR, (uint32_t)(__PLLSAIDivR__)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +/** @brief Macro to configure SAI1 clock source selection. + * @note This function must be called before enabling PLLSAI, PLLI2S and + * the SAI clock. + * @param __SOURCE__ specifies the SAI1 clock source. + * This parameter can be one of the following values: + * @arg RCC_SAI1CLKSOURCE_PLLI2S: PLLI2S_Q clock divided by PLLI2SDIVQ used + * as SAI1 clock. + * @arg RCC_SAI1CLKSOURCE_PLLSAI: PLLISAI_Q clock divided by PLLSAIDIVQ used + * as SAI1 clock. + * @arg RCC_SAI1CLKSOURCE_PIN: External clock mapped on the I2S_CKIN pin + * used as SAI1 clock. + * @arg RCC_SAI1CLKSOURCE_PLLSRC: HSI or HSE depending from PLL Source clock + * used as SAI1 clock. + * @note The RCC_SAI1CLKSOURCE_PLLSRC value is only available with STM32F767/769/777/779xx Devices + */ +#define __HAL_RCC_SAI1_CONFIG(__SOURCE__)\ + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_SAI1SEL, (uint32_t)(__SOURCE__)) + +/** @brief Macro to get the SAI1 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_SAI1CLKSOURCE_PLLI2S: PLLI2S_Q clock divided by PLLI2SDIVQ used + * as SAI1 clock. + * @arg RCC_SAI1CLKSOURCE_PLLSAI: PLLISAI_Q clock divided by PLLSAIDIVQ used + * as SAI1 clock. + * @arg RCC_SAI1CLKSOURCE_PIN: External clock mapped on the I2S_CKIN pin + * used as SAI1 clock. + * @arg RCC_SAI1CLKSOURCE_PLLSRC: HSI or HSE depending from PLL Source clock + * used as SAI1 clock. + * @note The RCC_SAI1CLKSOURCE_PLLSRC value is only available with STM32F767/769/777/779xx Devices + */ +#define __HAL_RCC_GET_SAI1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_SAI1SEL))) + +/** @brief Macro to configure SAI2 clock source selection. + * @note This function must be called before enabling PLLSAI, PLLI2S and + * the SAI clock. + * @param __SOURCE__ specifies the SAI2 clock source. + * This parameter can be one of the following values: + * @arg RCC_SAI2CLKSOURCE_PLLI2S: PLLI2S_Q clock divided by PLLI2SDIVQ used + * as SAI2 clock. + * @arg RCC_SAI2CLKSOURCE_PLLSAI: PLLISAI_Q clock divided by PLLSAIDIVQ used + * as SAI2 clock. + * @arg RCC_SAI2CLKSOURCE_PIN: External clock mapped on the I2S_CKIN pin + * used as SAI2 clock. + * @arg RCC_SAI2CLKSOURCE_PLLSRC: HSI or HSE depending from PLL Source clock + * used as SAI2 clock. + * @note The RCC_SAI2CLKSOURCE_PLLSRC value is only available with STM32F767/769/777/779xx Devices + */ +#define __HAL_RCC_SAI2_CONFIG(__SOURCE__)\ + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_SAI2SEL, (uint32_t)(__SOURCE__)) + + +/** @brief Macro to get the SAI2 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_SAI2CLKSOURCE_PLLI2S: PLLI2S_Q clock divided by PLLI2SDIVQ used + * as SAI2 clock. + * @arg RCC_SAI2CLKSOURCE_PLLSAI: PLLISAI_Q clock divided by PLLSAIDIVQ used + * as SAI2 clock. + * @arg RCC_SAI2CLKSOURCE_PIN: External clock mapped on the I2S_CKIN pin + * used as SAI2 clock. + * @arg RCC_SAI2CLKSOURCE_PLLSRC: HSI or HSE depending from PLL Source clock + * used as SAI2 clock. + * @note The RCC_SAI2CLKSOURCE_PLLSRC value is only available with STM32F767/769/777/779xx Devices + */ +#define __HAL_RCC_GET_SAI2_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_SAI2SEL))) + + +/** @brief Enable PLLSAI_RDY interrupt. + */ +#define __HAL_RCC_PLLSAI_ENABLE_IT() (RCC->CIR |= (RCC_CIR_PLLSAIRDYIE)) + +/** @brief Disable PLLSAI_RDY interrupt. + */ +#define __HAL_RCC_PLLSAI_DISABLE_IT() (RCC->CIR &= ~(RCC_CIR_PLLSAIRDYIE)) + +/** @brief Clear the PLLSAI RDY interrupt pending bits. + */ +#define __HAL_RCC_PLLSAI_CLEAR_IT() (RCC->CIR |= (RCC_CIR_PLLSAIRDYF)) + +/** @brief Check the PLLSAI RDY interrupt has occurred or not. + * @retval The new state (TRUE or FALSE). + */ +#define __HAL_RCC_PLLSAI_GET_IT() ((RCC->CIR & (RCC_CIR_PLLSAIRDYIE)) == (RCC_CIR_PLLSAIRDYIE)) + +/** @brief Check PLLSAI RDY flag is set or not. + * @retval The new state (TRUE or FALSE). + */ +#define __HAL_RCC_PLLSAI_GET_FLAG() ((RCC->CR & (RCC_CR_PLLSAIRDY)) == (RCC_CR_PLLSAIRDY)) + +/** @brief Macro to Get I2S clock source selection. + * @retval The clock source can be one of the following values: + * @arg RCC_I2SCLKSOURCE_PLLI2S: PLLI2S VCO output clock divided by PLLI2SR used as I2S clock. + * @arg RCC_I2SCLKSOURCE_EXT: External clock mapped on the I2S_CKIN pin used as I2S clock source + */ +#define __HAL_RCC_GET_I2SCLKSOURCE() (READ_BIT(RCC->CFGR, RCC_CFGR_I2SSRC)) + +/** @brief Macro to configure the I2C1 clock (I2C1CLK). + * + * @param __I2C1_CLKSOURCE__ specifies the I2C1 clock source. + * This parameter can be one of the following values: + * @arg RCC_I2C1CLKSOURCE_PCLK1: PCLK1 selected as I2C1 clock + * @arg RCC_I2C1CLKSOURCE_HSI: HSI selected as I2C1 clock + * @arg RCC_I2C1CLKSOURCE_SYSCLK: System Clock selected as I2C1 clock + */ +#define __HAL_RCC_I2C1_CONFIG(__I2C1_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C1SEL, (uint32_t)(__I2C1_CLKSOURCE__)) + +/** @brief Macro to get the I2C1 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_I2C1CLKSOURCE_PCLK1: PCLK1 selected as I2C1 clock + * @arg RCC_I2C1CLKSOURCE_HSI: HSI selected as I2C1 clock + * @arg RCC_I2C1CLKSOURCE_SYSCLK: System Clock selected as I2C1 clock + */ +#define __HAL_RCC_GET_I2C1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C1SEL))) + +/** @brief Macro to configure the I2C2 clock (I2C2CLK). + * + * @param __I2C2_CLKSOURCE__ specifies the I2C2 clock source. + * This parameter can be one of the following values: + * @arg RCC_I2C2CLKSOURCE_PCLK1: PCLK1 selected as I2C2 clock + * @arg RCC_I2C2CLKSOURCE_HSI: HSI selected as I2C2 clock + * @arg RCC_I2C2CLKSOURCE_SYSCLK: System Clock selected as I2C2 clock + */ +#define __HAL_RCC_I2C2_CONFIG(__I2C2_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C2SEL, (uint32_t)(__I2C2_CLKSOURCE__)) + +/** @brief Macro to get the I2C2 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_I2C2CLKSOURCE_PCLK1: PCLK1 selected as I2C2 clock + * @arg RCC_I2C2CLKSOURCE_HSI: HSI selected as I2C2 clock + * @arg RCC_I2C2CLKSOURCE_SYSCLK: System Clock selected as I2C2 clock + */ +#define __HAL_RCC_GET_I2C2_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C2SEL))) + +/** @brief Macro to configure the I2C3 clock (I2C3CLK). + * + * @param __I2C3_CLKSOURCE__ specifies the I2C3 clock source. + * This parameter can be one of the following values: + * @arg RCC_I2C3CLKSOURCE_PCLK1: PCLK1 selected as I2C3 clock + * @arg RCC_I2C3CLKSOURCE_HSI: HSI selected as I2C3 clock + * @arg RCC_I2C3CLKSOURCE_SYSCLK: System Clock selected as I2C3 clock + */ +#define __HAL_RCC_I2C3_CONFIG(__I2C3_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C3SEL, (uint32_t)(__I2C3_CLKSOURCE__)) + +/** @brief macro to get the I2C3 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_I2C3CLKSOURCE_PCLK1: PCLK1 selected as I2C3 clock + * @arg RCC_I2C3CLKSOURCE_HSI: HSI selected as I2C3 clock + * @arg RCC_I2C3CLKSOURCE_SYSCLK: System Clock selected as I2C3 clock + */ +#define __HAL_RCC_GET_I2C3_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C3SEL))) + +/** @brief Macro to configure the I2C4 clock (I2C4CLK). + * + * @param __I2C4_CLKSOURCE__ specifies the I2C4 clock source. + * This parameter can be one of the following values: + * @arg RCC_I2C4CLKSOURCE_PCLK1: PCLK1 selected as I2C4 clock + * @arg RCC_I2C4CLKSOURCE_HSI: HSI selected as I2C4 clock + * @arg RCC_I2C4CLKSOURCE_SYSCLK: System Clock selected as I2C4 clock + */ +#define __HAL_RCC_I2C4_CONFIG(__I2C4_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C4SEL, (uint32_t)(__I2C4_CLKSOURCE__)) + +/** @brief macro to get the I2C4 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_I2C4CLKSOURCE_PCLK1: PCLK1 selected as I2C4 clock + * @arg RCC_I2C4CLKSOURCE_HSI: HSI selected as I2C4 clock + * @arg RCC_I2C4CLKSOURCE_SYSCLK: System Clock selected as I2C4 clock + */ +#define __HAL_RCC_GET_I2C4_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_I2C4SEL))) + +/** @brief Macro to configure the USART1 clock (USART1CLK). + * + * @param __USART1_CLKSOURCE__ specifies the USART1 clock source. + * This parameter can be one of the following values: + * @arg RCC_USART1CLKSOURCE_PCLK2: PCLK2 selected as USART1 clock + * @arg RCC_USART1CLKSOURCE_HSI: HSI selected as USART1 clock + * @arg RCC_USART1CLKSOURCE_SYSCLK: System Clock selected as USART1 clock + * @arg RCC_USART1CLKSOURCE_LSE: LSE selected as USART1 clock + */ +#define __HAL_RCC_USART1_CONFIG(__USART1_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_USART1SEL, (uint32_t)(__USART1_CLKSOURCE__)) + +/** @brief macro to get the USART1 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_USART1CLKSOURCE_PCLK2: PCLK2 selected as USART1 clock + * @arg RCC_USART1CLKSOURCE_HSI: HSI selected as USART1 clock + * @arg RCC_USART1CLKSOURCE_SYSCLK: System Clock selected as USART1 clock + * @arg RCC_USART1CLKSOURCE_LSE: LSE selected as USART1 clock + */ +#define __HAL_RCC_GET_USART1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_USART1SEL))) + +/** @brief Macro to configure the USART2 clock (USART2CLK). + * + * @param __USART2_CLKSOURCE__ specifies the USART2 clock source. + * This parameter can be one of the following values: + * @arg RCC_USART2CLKSOURCE_PCLK1: PCLK1 selected as USART2 clock + * @arg RCC_USART2CLKSOURCE_HSI: HSI selected as USART2 clock + * @arg RCC_USART2CLKSOURCE_SYSCLK: System Clock selected as USART2 clock + * @arg RCC_USART2CLKSOURCE_LSE: LSE selected as USART2 clock + */ +#define __HAL_RCC_USART2_CONFIG(__USART2_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_USART2SEL, (uint32_t)(__USART2_CLKSOURCE__)) + +/** @brief macro to get the USART2 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_USART2CLKSOURCE_PCLK1: PCLK1 selected as USART2 clock + * @arg RCC_USART2CLKSOURCE_HSI: HSI selected as USART2 clock + * @arg RCC_USART2CLKSOURCE_SYSCLK: System Clock selected as USART2 clock + * @arg RCC_USART2CLKSOURCE_LSE: LSE selected as USART2 clock + */ +#define __HAL_RCC_GET_USART2_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_USART2SEL))) + +/** @brief Macro to configure the USART3 clock (USART3CLK). + * + * @param __USART3_CLKSOURCE__ specifies the USART3 clock source. + * This parameter can be one of the following values: + * @arg RCC_USART3CLKSOURCE_PCLK1: PCLK1 selected as USART3 clock + * @arg RCC_USART3CLKSOURCE_HSI: HSI selected as USART3 clock + * @arg RCC_USART3CLKSOURCE_SYSCLK: System Clock selected as USART3 clock + * @arg RCC_USART3CLKSOURCE_LSE: LSE selected as USART3 clock + */ +#define __HAL_RCC_USART3_CONFIG(__USART3_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_USART3SEL, (uint32_t)(__USART3_CLKSOURCE__)) + +/** @brief macro to get the USART3 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_USART3CLKSOURCE_PCLK1: PCLK1 selected as USART3 clock + * @arg RCC_USART3CLKSOURCE_HSI: HSI selected as USART3 clock + * @arg RCC_USART3CLKSOURCE_SYSCLK: System Clock selected as USART3 clock + * @arg RCC_USART3CLKSOURCE_LSE: LSE selected as USART3 clock + */ +#define __HAL_RCC_GET_USART3_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_USART3SEL))) + + /** @brief Macro to configure the UART4 clock (UART4CLK). + * + * @param __UART4_CLKSOURCE__ specifies the UART4 clock source. + * This parameter can be one of the following values: + * @arg RCC_UART4CLKSOURCE_PCLK1: PCLK1 selected as UART4 clock + * @arg RCC_UART4CLKSOURCE_HSI: HSI selected as UART4 clock + * @arg RCC_UART4CLKSOURCE_SYSCLK: System Clock selected as UART4 clock + * @arg RCC_UART4CLKSOURCE_LSE: LSE selected as UART4 clock + */ +#define __HAL_RCC_UART4_CONFIG(__UART4_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_UART4SEL, (uint32_t)(__UART4_CLKSOURCE__)) + +/** @brief macro to get the UART4 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_UART4CLKSOURCE_PCLK1: PCLK1 selected as UART4 clock + * @arg RCC_UART4CLKSOURCE_HSI: HSI selected as UART4 clock + * @arg RCC_UART4CLKSOURCE_SYSCLK: System Clock selected as UART4 clock + * @arg RCC_UART4CLKSOURCE_LSE: LSE selected as UART4 clock + */ +#define __HAL_RCC_GET_UART4_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_UART4SEL))) + + /** @brief Macro to configure the UART5 clock (UART5CLK). + * + * @param __UART5_CLKSOURCE__ specifies the UART5 clock source. + * This parameter can be one of the following values: + * @arg RCC_UART5CLKSOURCE_PCLK1: PCLK1 selected as UART5 clock + * @arg RCC_UART5CLKSOURCE_HSI: HSI selected as UART5 clock + * @arg RCC_UART5CLKSOURCE_SYSCLK: System Clock selected as UART5 clock + * @arg RCC_UART5CLKSOURCE_LSE: LSE selected as UART5 clock + */ +#define __HAL_RCC_UART5_CONFIG(__UART5_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_UART5SEL, (uint32_t)(__UART5_CLKSOURCE__)) + +/** @brief macro to get the UART5 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_UART5CLKSOURCE_PCLK1: PCLK1 selected as UART5 clock + * @arg RCC_UART5CLKSOURCE_HSI: HSI selected as UART5 clock + * @arg RCC_UART5CLKSOURCE_SYSCLK: System Clock selected as UART5 clock + * @arg RCC_UART5CLKSOURCE_LSE: LSE selected as UART5 clock + */ +#define __HAL_RCC_GET_UART5_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_UART5SEL))) + + /** @brief Macro to configure the USART6 clock (USART6CLK). + * + * @param __USART6_CLKSOURCE__ specifies the USART6 clock source. + * This parameter can be one of the following values: + * @arg RCC_USART6CLKSOURCE_PCLK1: PCLK1 selected as USART6 clock + * @arg RCC_USART6CLKSOURCE_HSI: HSI selected as USART6 clock + * @arg RCC_USART6CLKSOURCE_SYSCLK: System Clock selected as USART6 clock + * @arg RCC_USART6CLKSOURCE_LSE: LSE selected as USART6 clock + */ +#define __HAL_RCC_USART6_CONFIG(__USART6_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_USART6SEL, (uint32_t)(__USART6_CLKSOURCE__)) + +/** @brief macro to get the USART6 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_USART6CLKSOURCE_PCLK1: PCLK1 selected as USART6 clock + * @arg RCC_USART6CLKSOURCE_HSI: HSI selected as USART6 clock + * @arg RCC_USART6CLKSOURCE_SYSCLK: System Clock selected as USART6 clock + * @arg RCC_USART6CLKSOURCE_LSE: LSE selected as USART6 clock + */ +#define __HAL_RCC_GET_USART6_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_USART6SEL))) + + /** @brief Macro to configure the UART7 clock (UART7CLK). + * + * @param __UART7_CLKSOURCE__ specifies the UART7 clock source. + * This parameter can be one of the following values: + * @arg RCC_UART7CLKSOURCE_PCLK1: PCLK1 selected as UART7 clock + * @arg RCC_UART7CLKSOURCE_HSI: HSI selected as UART7 clock + * @arg RCC_UART7CLKSOURCE_SYSCLK: System Clock selected as UART7 clock + * @arg RCC_UART7CLKSOURCE_LSE: LSE selected as UART7 clock + */ +#define __HAL_RCC_UART7_CONFIG(__UART7_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_UART7SEL, (uint32_t)(__UART7_CLKSOURCE__)) + +/** @brief macro to get the UART7 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_UART7CLKSOURCE_PCLK1: PCLK1 selected as UART7 clock + * @arg RCC_UART7CLKSOURCE_HSI: HSI selected as UART7 clock + * @arg RCC_UART7CLKSOURCE_SYSCLK: System Clock selected as UART7 clock + * @arg RCC_UART7CLKSOURCE_LSE: LSE selected as UART7 clock + */ +#define __HAL_RCC_GET_UART7_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_UART7SEL))) + +/** @brief Macro to configure the UART8 clock (UART8CLK). + * + * @param __UART8_CLKSOURCE__ specifies the UART8 clock source. + * This parameter can be one of the following values: + * @arg RCC_UART8CLKSOURCE_PCLK1: PCLK1 selected as UART8 clock + * @arg RCC_UART8CLKSOURCE_HSI: HSI selected as UART8 clock + * @arg RCC_UART8CLKSOURCE_SYSCLK: System Clock selected as UART8 clock + * @arg RCC_UART8CLKSOURCE_LSE: LSE selected as UART8 clock + */ +#define __HAL_RCC_UART8_CONFIG(__UART8_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_UART8SEL, (uint32_t)(__UART8_CLKSOURCE__)) + +/** @brief macro to get the UART8 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_UART8CLKSOURCE_PCLK1: PCLK1 selected as UART8 clock + * @arg RCC_UART8CLKSOURCE_HSI: HSI selected as UART8 clock + * @arg RCC_UART8CLKSOURCE_SYSCLK: System Clock selected as UART8 clock + * @arg RCC_UART8CLKSOURCE_LSE: LSE selected as UART8 clock + */ +#define __HAL_RCC_GET_UART8_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_UART8SEL))) + +/** @brief Macro to configure the LPTIM1 clock (LPTIM1CLK). + * + * @param __LPTIM1_CLKSOURCE__ specifies the LPTIM1 clock source. + * This parameter can be one of the following values: + * @arg RCC_LPTIM1CLKSOURCE_PCLK1: PCLK selected as LPTIM1 clock + * @arg RCC_LPTIM1CLKSOURCE_HSI: HSI selected as LPTIM1 clock + * @arg RCC_LPTIM1CLKSOURCE_LSI: LSI selected as LPTIM1 clock + * @arg RCC_LPTIM1CLKSOURCE_LSE: LSE selected as LPTIM1 clock + */ +#define __HAL_RCC_LPTIM1_CONFIG(__LPTIM1_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_LPTIM1SEL, (uint32_t)(__LPTIM1_CLKSOURCE__)) + +/** @brief macro to get the LPTIM1 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_LPTIM1CLKSOURCE_PCLK1: PCLK selected as LPTIM1 clock + * @arg RCC_LPTIM1CLKSOURCE_HSI: HSI selected as LPTIM1 clock + * @arg RCC_LPTIM1CLKSOURCE_LSI: LSI selected as LPTIM1 clock + * @arg RCC_LPTIM1CLKSOURCE_LSE: LSE selected as LPTIM1 clock + */ +#define __HAL_RCC_GET_LPTIM1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_LPTIM1SEL))) + +/** @brief Macro to configure the CEC clock (CECCLK). + * + * @param __CEC_CLKSOURCE__ specifies the CEC clock source. + * This parameter can be one of the following values: + * @arg RCC_CECCLKSOURCE_LSE: LSE selected as CEC clock + * @arg RCC_CECCLKSOURCE_HSI: HSI divided by 488 selected as CEC clock + */ +#define __HAL_RCC_CEC_CONFIG(__CEC_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CECSEL, (uint32_t)(__CEC_CLKSOURCE__)) + +/** @brief macro to get the CEC clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_CECCLKSOURCE_LSE: LSE selected as CEC clock + * @arg RCC_CECCLKSOURCE_HSI: HSI selected as CEC clock + */ +#define __HAL_RCC_GET_CEC_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_CECSEL))) + +/** @brief Macro to configure the CLK48 source (CLK48CLK). + * + * @param __CLK48_SOURCE__ specifies the CLK48 clock source. + * This parameter can be one of the following values: + * @arg RCC_CLK48SOURCE_PLL: PLL selected as CLK48 source + * @arg RCC_CLK48SOURCE_PLLSAIP: PLLSAIP selected as CLK48 source + */ +#define __HAL_RCC_CLK48_CONFIG(__CLK48_SOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, (uint32_t)(__CLK48_SOURCE__)) + +/** @brief macro to get the CLK48 source. + * @retval The clock source can be one of the following values: + * @arg RCC_CLK48SOURCE_PLL: PLL used as CLK48 source + * @arg RCC_CLK48SOURCE_PLLSAIP: PLLSAIP used as CLK48 source + */ +#define __HAL_RCC_GET_CLK48_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL))) + +/** @brief Macro to configure the SDMMC1 clock (SDMMC1CLK). + * + * @param __SDMMC1_CLKSOURCE__ specifies the SDMMC1 clock source. + * This parameter can be one of the following values: + * @arg RCC_SDMMC1CLKSOURCE_CLK48: CLK48 selected as SDMMC clock + * @arg RCC_SDMMC1CLKSOURCE_SYSCLK: SYSCLK selected as SDMMC clock + */ +#define __HAL_RCC_SDMMC1_CONFIG(__SDMMC1_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_SDMMC1SEL, (uint32_t)(__SDMMC1_CLKSOURCE__)) + +/** @brief macro to get the SDMMC1 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_SDMMC1CLKSOURCE_CLK48: CLK48 selected as SDMMC1 clock + * @arg RCC_SDMMC1CLKSOURCE_SYSCLK: SYSCLK selected as SDMMC1 clock + */ +#define __HAL_RCC_GET_SDMMC1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_SDMMC1SEL))) + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +/** @brief Macro to configure the SDMMC2 clock (SDMMC2CLK). + * @param __SDMMC2_CLKSOURCE__ specifies the SDMMC2 clock source. + * This parameter can be one of the following values: + * @arg RCC_SDMMC2CLKSOURCE_CLK48: CLK48 selected as SDMMC2 clock + * @arg RCC_SDMMC2CLKSOURCE_SYSCLK: SYSCLK selected as SDMMC2 clock + */ +#define __HAL_RCC_SDMMC2_CONFIG(__SDMMC2_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_SDMMC2SEL, (uint32_t)(__SDMMC2_CLKSOURCE__)) + +/** @brief macro to get the SDMMC2 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_SDMMC2CLKSOURCE_CLK48: CLK48 selected as SDMMC2 clock + * @arg RCC_SDMMC2CLKSOURCE_SYSCLK: SYSCLK selected as SDMMC2 clock + */ +#define __HAL_RCC_GET_SDMMC2_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_SDMMC2SEL))) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +/** @brief Macro to configure the DFSDM1 clock + * @param __DFSDM1_CLKSOURCE__ specifies the DFSDM1 clock source. + * This parameter can be one of the following values: + * @arg RCC_DFSDM1CLKSOURCE_PCLK2: PCLK2 Clock selected as DFSDM clock + * @arg RCC_DFSDMCLKSOURCE_SYSCLK: System Clock selected as DFSDM clock + */ +#define __HAL_RCC_DFSDM1_CONFIG(__DFSDM1_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_DFSDM1SEL, (uint32_t)(__DFSDM1_CLKSOURCE__)) + +/** @brief Macro to get the DFSDM1 clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_DFSDM1CLKSOURCE_PCLK2: PCLK2 Clock selected as DFSDM1 clock + * @arg RCC_DFSDM1CLKSOURCE_SYSCLK: System Clock selected as DFSDM1 clock + */ +#define __HAL_RCC_GET_DFSDM1_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_DFSDM1SEL))) + +/** @brief Macro to configure the DFSDM1 Audio clock + * @param __DFSDM1AUDIO_CLKSOURCE__ specifies the DFSDM1 Audio clock source. + * This parameter can be one of the following values: + * @arg RCC_DFSDM1AUDIOCLKSOURCE_SAI1: SAI1 Clock selected as DFSDM1 Audio clock + * @arg RCC_DFSDM1AUDIOCLKSOURCE_SAI2: SAI2 Clock selected as DFSDM1 Audio clock + */ +#define __HAL_RCC_DFSDM1AUDIO_CONFIG(__DFSDM1AUDIO_CLKSOURCE__) \ + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_ADFSDM1SEL, (uint32_t)(__DFSDM1AUDIO_CLKSOURCE__)) + +/** @brief Macro to get the DFSDM1 Audio clock source. + * @retval The clock source can be one of the following values: + * @arg RCC_DFSDM1AUDIOCLKSOURCE_SAI1: SAI1 Clock selected as DFSDM1 Audio clock + * @arg RCC_DFSDM1AUDIOCLKSOURCE_SAI2: SAI2 Clock selected as DFSDM1 Audio clock + */ +#define __HAL_RCC_GET_DFSDM1AUDIO_SOURCE() ((uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_ADFSDM1SEL))) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +#if defined (STM32F769xx) || defined (STM32F779xx) +/** @brief Macro to configure the DSI clock. + * @param __DSI_CLKSOURCE__ specifies the DSI clock source. + * This parameter can be one of the following values: + * @arg RCC_DSICLKSOURCE_PLLR: PLLR output used as DSI clock. + * @arg RCC_DSICLKSOURCE_DSIPHY: DSI-PHY output used as DSI clock. + */ +#define __HAL_RCC_DSI_CONFIG(__DSI_CLKSOURCE__) (MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_DSISEL, (uint32_t)(__DSI_CLKSOURCE__))) + +/** @brief Macro to Get the DSI clock. + * @retval The clock source can be one of the following values: + * @arg RCC_DSICLKSOURCE_PLLR: PLLR output used as DSI clock. + * @arg RCC_DSICLKSOURCE_DSIPHY: DSI-PHY output used as DSI clock. + */ +#define __HAL_RCC_GET_DSI_SOURCE() (READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_DSISEL)) +#endif /* STM32F769xx || STM32F779xx */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup RCCEx_Exported_Functions_Group1 + * @{ + */ +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit); +void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit); +uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk); +HAL_StatusTypeDef HAL_RCCEx_EnablePLLI2S(RCC_PLLI2SInitTypeDef *PLLI2SInit); +HAL_StatusTypeDef HAL_RCCEx_DisablePLLI2S(void); +HAL_StatusTypeDef HAL_RCCEx_EnablePLLSAI(RCC_PLLSAIInitTypeDef *PLLSAIInit); +HAL_StatusTypeDef HAL_RCCEx_DisablePLLSAI(void); +/** + * @} + */ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup RCCEx_Private_Macros RCCEx Private Macros + * @{ + */ +/** @defgroup RCCEx_IS_RCC_Definitions RCC Private macros to check input parameters + * @{ + */ +#if defined(STM32F756xx) || defined(STM32F746xx) || defined(STM32F750xx) +#define IS_RCC_PERIPHCLOCK(SELECTION) \ + ((((SELECTION) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || \ + (((SELECTION) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC) || \ + (((SELECTION) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) || \ + (((SELECTION) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((SELECTION) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((SELECTION) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \ + (((SELECTION) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) || \ + (((SELECTION) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) || \ + (((SELECTION) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) || \ + (((SELECTION) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) || \ + (((SELECTION) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) || \ + (((SELECTION) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((SELECTION) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) || \ + (((SELECTION) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) || \ + (((SELECTION) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) || \ + (((SELECTION) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \ + (((SELECTION) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) || \ + (((SELECTION) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) || \ + (((SELECTION) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) +#elif defined(STM32F745xx) +#define IS_RCC_PERIPHCLOCK(SELECTION) \ + ((((SELECTION) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || \ + (((SELECTION) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) || \ + (((SELECTION) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((SELECTION) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((SELECTION) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \ + (((SELECTION) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) || \ + (((SELECTION) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) || \ + (((SELECTION) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) || \ + (((SELECTION) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) || \ + (((SELECTION) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) || \ + (((SELECTION) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((SELECTION) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) || \ + (((SELECTION) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) || \ + (((SELECTION) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) || \ + (((SELECTION) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \ + (((SELECTION) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) || \ + (((SELECTION) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) || \ + (((SELECTION) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) +#elif defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define IS_RCC_PERIPHCLOCK(SELECTION) \ + ((((SELECTION) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || \ + (((SELECTION) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC) || \ + (((SELECTION) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) || \ + (((SELECTION) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((SELECTION) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((SELECTION) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \ + (((SELECTION) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) || \ + (((SELECTION) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) || \ + (((SELECTION) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) || \ + (((SELECTION) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) || \ + (((SELECTION) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) || \ + (((SELECTION) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((SELECTION) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) || \ + (((SELECTION) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) || \ + (((SELECTION) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) || \ + (((SELECTION) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \ + (((SELECTION) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) || \ + (((SELECTION) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2) || \ + (((SELECTION) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1) || \ + (((SELECTION) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO) || \ + (((SELECTION) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) || \ + (((SELECTION) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) +#elif defined (STM32F765xx) +#define IS_RCC_PERIPHCLOCK(SELECTION) \ + ((((SELECTION) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || \ + (((SELECTION) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) || \ + (((SELECTION) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((SELECTION) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((SELECTION) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \ + (((SELECTION) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) || \ + (((SELECTION) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) || \ + (((SELECTION) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) || \ + (((SELECTION) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) || \ + (((SELECTION) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) || \ + (((SELECTION) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((SELECTION) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) || \ + (((SELECTION) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) || \ + (((SELECTION) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) || \ + (((SELECTION) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) || \ + (((SELECTION) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) || \ + (((SELECTION) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2) || \ + (((SELECTION) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1) || \ + (((SELECTION) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO) || \ + (((SELECTION) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) || \ + (((SELECTION) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) +#elif defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) +#define IS_RCC_PERIPHCLOCK(SELECTION) \ + ((((SELECTION) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) || \ + (((SELECTION) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) || \ + (((SELECTION) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) || \ + (((SELECTION) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) || \ + (((SELECTION) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) || \ + (((SELECTION) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) || \ + (((SELECTION) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) || \ + (((SELECTION) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) || \ + (((SELECTION) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) || \ + (((SELECTION) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) || \ + (((SELECTION) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) || \ + (((SELECTION) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) || \ + (((SELECTION) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) || \ + (((SELECTION) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) || \ + (((SELECTION) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) || \ + (((SELECTION) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) || \ + (((SELECTION) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2) || \ + (((SELECTION) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC)) +#endif /* STM32F746xx || STM32F756xx || STM32F750xx */ +#define IS_RCC_PLLI2SN_VALUE(VALUE) ((50 <= (VALUE)) && ((VALUE) <= 432)) +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || defined (STM32F767xx) || \ + defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) +#define IS_RCC_PLLI2SP_VALUE(VALUE) (((VALUE) == RCC_PLLI2SP_DIV2) ||\ + ((VALUE) == RCC_PLLI2SP_DIV4) ||\ + ((VALUE) == RCC_PLLI2SP_DIV6) ||\ + ((VALUE) == RCC_PLLI2SP_DIV8)) +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ +#define IS_RCC_PLLI2SQ_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 15)) +#define IS_RCC_PLLI2SR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7)) + +#define IS_RCC_PLLSAIN_VALUE(VALUE) ((50 <= (VALUE)) && ((VALUE) <= 432)) +#define IS_RCC_PLLSAIP_VALUE(VALUE) (((VALUE) == RCC_PLLSAIP_DIV2) ||\ + ((VALUE) == RCC_PLLSAIP_DIV4) ||\ + ((VALUE) == RCC_PLLSAIP_DIV6) ||\ + ((VALUE) == RCC_PLLSAIP_DIV8)) +#define IS_RCC_PLLSAIQ_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 15)) +#define IS_RCC_PLLSAIR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7)) + +#define IS_RCC_PLLSAI_DIVQ_VALUE(VALUE) ((1 <= (VALUE)) && ((VALUE) <= 32)) + +#define IS_RCC_PLLI2S_DIVQ_VALUE(VALUE) ((1 <= (VALUE)) && ((VALUE) <= 32)) + +#define IS_RCC_PLLSAI_DIVR_VALUE(VALUE) (((VALUE) == RCC_PLLSAIDIVR_2) ||\ + ((VALUE) == RCC_PLLSAIDIVR_4) ||\ + ((VALUE) == RCC_PLLSAIDIVR_8) ||\ + ((VALUE) == RCC_PLLSAIDIVR_16)) +#define IS_RCC_I2SCLKSOURCE(SOURCE) (((SOURCE) == RCC_I2SCLKSOURCE_PLLI2S) || \ + ((SOURCE) == RCC_I2SCLKSOURCE_EXT)) + +#define IS_RCC_SDMMC1CLKSOURCE(SOURCE) (((SOURCE) == RCC_SDMMC1CLKSOURCE_SYSCLK) || \ + ((SOURCE) == RCC_SDMMC1CLKSOURCE_CLK48)) + +#define IS_RCC_CECCLKSOURCE(SOURCE) (((SOURCE) == RCC_CECCLKSOURCE_HSI) || \ + ((SOURCE) == RCC_CECCLKSOURCE_LSE)) +#define IS_RCC_USART1CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_USART1CLKSOURCE_PCLK2) || \ + ((SOURCE) == RCC_USART1CLKSOURCE_SYSCLK) || \ + ((SOURCE) == RCC_USART1CLKSOURCE_LSE) || \ + ((SOURCE) == RCC_USART1CLKSOURCE_HSI)) + +#define IS_RCC_USART2CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_USART2CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_USART2CLKSOURCE_SYSCLK) || \ + ((SOURCE) == RCC_USART2CLKSOURCE_LSE) || \ + ((SOURCE) == RCC_USART2CLKSOURCE_HSI)) +#define IS_RCC_USART3CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_USART3CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_USART3CLKSOURCE_SYSCLK) || \ + ((SOURCE) == RCC_USART3CLKSOURCE_LSE) || \ + ((SOURCE) == RCC_USART3CLKSOURCE_HSI)) + +#define IS_RCC_UART4CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_UART4CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_UART4CLKSOURCE_SYSCLK) || \ + ((SOURCE) == RCC_UART4CLKSOURCE_LSE) || \ + ((SOURCE) == RCC_UART4CLKSOURCE_HSI)) + +#define IS_RCC_UART5CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_UART5CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_UART5CLKSOURCE_SYSCLK) || \ + ((SOURCE) == RCC_UART5CLKSOURCE_LSE) || \ + ((SOURCE) == RCC_UART5CLKSOURCE_HSI)) + +#define IS_RCC_USART6CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_USART6CLKSOURCE_PCLK2) || \ + ((SOURCE) == RCC_USART6CLKSOURCE_SYSCLK) || \ + ((SOURCE) == RCC_USART6CLKSOURCE_LSE) || \ + ((SOURCE) == RCC_USART6CLKSOURCE_HSI)) + +#define IS_RCC_UART7CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_UART7CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_UART7CLKSOURCE_SYSCLK) || \ + ((SOURCE) == RCC_UART7CLKSOURCE_LSE) || \ + ((SOURCE) == RCC_UART7CLKSOURCE_HSI)) + +#define IS_RCC_UART8CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_UART8CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_UART8CLKSOURCE_SYSCLK) || \ + ((SOURCE) == RCC_UART8CLKSOURCE_LSE) || \ + ((SOURCE) == RCC_UART8CLKSOURCE_HSI)) +#define IS_RCC_I2C1CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_I2C1CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_I2C1CLKSOURCE_SYSCLK)|| \ + ((SOURCE) == RCC_I2C1CLKSOURCE_HSI)) +#define IS_RCC_I2C2CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_I2C2CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_I2C2CLKSOURCE_SYSCLK)|| \ + ((SOURCE) == RCC_I2C2CLKSOURCE_HSI)) + +#define IS_RCC_I2C3CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_I2C3CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_I2C3CLKSOURCE_SYSCLK)|| \ + ((SOURCE) == RCC_I2C3CLKSOURCE_HSI)) +#define IS_RCC_I2C4CLKSOURCE(SOURCE) \ + (((SOURCE) == RCC_I2C4CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_I2C4CLKSOURCE_SYSCLK)|| \ + ((SOURCE) == RCC_I2C4CLKSOURCE_HSI)) +#define IS_RCC_LPTIM1CLK(SOURCE) \ + (((SOURCE) == RCC_LPTIM1CLKSOURCE_PCLK1) || \ + ((SOURCE) == RCC_LPTIM1CLKSOURCE_LSI) || \ + ((SOURCE) == RCC_LPTIM1CLKSOURCE_HSI) || \ + ((SOURCE) == RCC_LPTIM1CLKSOURCE_LSE)) +#define IS_RCC_CLK48SOURCE(SOURCE) \ + (((SOURCE) == RCC_CLK48SOURCE_PLLSAIP) || \ + ((SOURCE) == RCC_CLK48SOURCE_PLL)) +#define IS_RCC_TIMPRES(VALUE) \ + (((VALUE) == RCC_TIMPRES_DESACTIVATED) || \ + ((VALUE) == RCC_TIMPRES_ACTIVATED)) + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F745xx) ||\ + defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F730xx) || defined (STM32F750xx) +#define IS_RCC_SAI1CLKSOURCE(SOURCE) (((SOURCE) == RCC_SAI1CLKSOURCE_PLLSAI) || \ + ((SOURCE) == RCC_SAI1CLKSOURCE_PLLI2S) || \ + ((SOURCE) == RCC_SAI1CLKSOURCE_PIN)) +#define IS_RCC_SAI2CLKSOURCE(SOURCE) (((SOURCE) == RCC_SAI2CLKSOURCE_PLLSAI) || \ + ((SOURCE) == RCC_SAI2CLKSOURCE_PLLI2S) || \ + ((SOURCE) == RCC_SAI2CLKSOURCE_PIN)) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F745xx || STM32F746xx || STM32F756xx || STM32F750xx || STM32F730xx */ + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define IS_RCC_PLLR_VALUE(VALUE) ((2 <= (VALUE)) && ((VALUE) <= 7)) + +#define IS_RCC_SAI1CLKSOURCE(SOURCE) (((SOURCE) == RCC_SAI1CLKSOURCE_PLLSAI) || \ + ((SOURCE) == RCC_SAI1CLKSOURCE_PLLI2S) || \ + ((SOURCE) == RCC_SAI1CLKSOURCE_PIN) || \ + ((SOURCE) == RCC_SAI1CLKSOURCE_PLLSRC)) + +#define IS_RCC_SAI2CLKSOURCE(SOURCE) (((SOURCE) == RCC_SAI2CLKSOURCE_PLLSAI) || \ + ((SOURCE) == RCC_SAI2CLKSOURCE_PLLI2S) || \ + ((SOURCE) == RCC_SAI2CLKSOURCE_PIN) || \ + ((SOURCE) == RCC_SAI2CLKSOURCE_PLLSRC)) + +#define IS_RCC_DFSDM1CLKSOURCE(SOURCE) (((SOURCE) == RCC_DFSDM1CLKSOURCE_PCLK2) || \ + ((SOURCE) == RCC_DFSDM1CLKSOURCE_SYSCLK)) + +#define IS_RCC_DFSDM1AUDIOCLKSOURCE(SOURCE) (((SOURCE) == RCC_DFSDM1AUDIOCLKSOURCE_SAI1) || \ + ((SOURCE) == RCC_DFSDM1AUDIOCLKSOURCE_SAI2)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F765xx) ||\ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F730xx) +#define IS_RCC_SDMMC2CLKSOURCE(SOURCE) (((SOURCE) == RCC_SDMMC2CLKSOURCE_SYSCLK) || \ + ((SOURCE) == RCC_SDMMC2CLKSOURCE_CLK48)) +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F730xx */ + +#if defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +#define IS_RCC_DSIBYTELANECLKSOURCE(SOURCE) (((SOURCE) == RCC_DSICLKSOURCE_PLLR) ||\ + ((SOURCE) == RCC_DSICLKSOURCE_DSIPHY)) +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_RCC_EX_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h new file mode 100644 index 0000000..8604832 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h @@ -0,0 +1,758 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_sd.h + * @author MCD Application Team + * @brief Header file of SD HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_HAL_SD_H +#define STM32F7xx_HAL_SD_H + +#ifdef __cplusplus + extern "C" { +#endif + +#if defined(SDMMC1) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_ll_sdmmc.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup SD SD + * @brief SD HAL module driver + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup SD_Exported_Types SD Exported Types + * @{ + */ + +/** @defgroup SD_Exported_Types_Group1 SD State enumeration structure + * @{ + */ +typedef enum +{ + HAL_SD_STATE_RESET = 0x00000000U, /*!< SD not yet initialized or disabled */ + HAL_SD_STATE_READY = 0x00000001U, /*!< SD initialized and ready for use */ + HAL_SD_STATE_TIMEOUT = 0x00000002U, /*!< SD Timeout state */ + HAL_SD_STATE_BUSY = 0x00000003U, /*!< SD process ongoing */ + HAL_SD_STATE_PROGRAMMING = 0x00000004U, /*!< SD Programming State */ + HAL_SD_STATE_RECEIVING = 0x00000005U, /*!< SD Receiving State */ + HAL_SD_STATE_TRANSFER = 0x00000006U, /*!< SD Transfer State */ + HAL_SD_STATE_ERROR = 0x0000000FU /*!< SD is in error state */ +}HAL_SD_StateTypeDef; +/** + * @} + */ + +/** @defgroup SD_Exported_Types_Group2 SD Card State enumeration structure + * @{ + */ +typedef uint32_t HAL_SD_CardStateTypeDef; + +#define HAL_SD_CARD_READY 0x00000001U /*!< Card state is ready */ +#define HAL_SD_CARD_IDENTIFICATION 0x00000002U /*!< Card is in identification state */ +#define HAL_SD_CARD_STANDBY 0x00000003U /*!< Card is in standby state */ +#define HAL_SD_CARD_TRANSFER 0x00000004U /*!< Card is in transfer state */ +#define HAL_SD_CARD_SENDING 0x00000005U /*!< Card is sending an operation */ +#define HAL_SD_CARD_RECEIVING 0x00000006U /*!< Card is receiving operation information */ +#define HAL_SD_CARD_PROGRAMMING 0x00000007U /*!< Card is in programming state */ +#define HAL_SD_CARD_DISCONNECTED 0x00000008U /*!< Card is disconnected */ +#define HAL_SD_CARD_ERROR 0x000000FFU /*!< Card response Error */ +/** + * @} + */ + +/** @defgroup SD_Exported_Types_Group3 SD Handle Structure definition + * @{ + */ +#define SD_InitTypeDef SDMMC_InitTypeDef +#define SD_TypeDef SDMMC_TypeDef + +/** + * @brief SD Card Information Structure definition + */ +typedef struct +{ + uint32_t CardType; /*!< Specifies the card Type */ + + uint32_t CardVersion; /*!< Specifies the card version */ + + uint32_t Class; /*!< Specifies the class of the card class */ + + uint32_t RelCardAdd; /*!< Specifies the Relative Card Address */ + + uint32_t BlockNbr; /*!< Specifies the Card Capacity in blocks */ + + uint32_t BlockSize; /*!< Specifies one block size in bytes */ + + uint32_t LogBlockNbr; /*!< Specifies the Card logical Capacity in blocks */ + + uint32_t LogBlockSize; /*!< Specifies logical block size in bytes */ + +}HAL_SD_CardInfoTypeDef; + +/** + * @brief SD handle Structure definition + */ +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +typedef struct __SD_HandleTypeDef +#else +typedef struct +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +{ + SD_TypeDef *Instance; /*!< SD registers base address */ + + SD_InitTypeDef Init; /*!< SD required parameters */ + + HAL_LockTypeDef Lock; /*!< SD locking object */ + + uint8_t *pTxBuffPtr; /*!< Pointer to SD Tx transfer Buffer */ + + uint32_t TxXferSize; /*!< SD Tx Transfer size */ + + uint8_t *pRxBuffPtr; /*!< Pointer to SD Rx transfer Buffer */ + + uint32_t RxXferSize; /*!< SD Rx Transfer size */ + + __IO uint32_t Context; /*!< SD transfer context */ + + __IO HAL_SD_StateTypeDef State; /*!< SD card State */ + + __IO uint32_t ErrorCode; /*!< SD Card Error codes */ + + DMA_HandleTypeDef *hdmatx; /*!< SD Tx DMA handle parameters */ + + DMA_HandleTypeDef *hdmarx; /*!< SD Rx DMA handle parameters */ + + HAL_SD_CardInfoTypeDef SdCard; /*!< SD Card information */ + + uint32_t CSD[4]; /*!< SD card specific data table */ + + uint32_t CID[4]; /*!< SD card identification number table */ + +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + void (* TxCpltCallback) (struct __SD_HandleTypeDef *hsd); + void (* RxCpltCallback) (struct __SD_HandleTypeDef *hsd); + void (* ErrorCallback) (struct __SD_HandleTypeDef *hsd); + void (* AbortCpltCallback) (struct __SD_HandleTypeDef *hsd); + + void (* MspInitCallback) (struct __SD_HandleTypeDef *hsd); + void (* MspDeInitCallback) (struct __SD_HandleTypeDef *hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +}SD_HandleTypeDef; + +/** + * @} + */ + +/** @defgroup SD_Exported_Types_Group4 Card Specific Data: CSD Register + * @{ + */ +typedef struct +{ + __IO uint8_t CSDStruct; /*!< CSD structure */ + __IO uint8_t SysSpecVersion; /*!< System specification version */ + __IO uint8_t Reserved1; /*!< Reserved */ + __IO uint8_t TAAC; /*!< Data read access time 1 */ + __IO uint8_t NSAC; /*!< Data read access time 2 in CLK cycles */ + __IO uint8_t MaxBusClkFrec; /*!< Max. bus clock frequency */ + __IO uint16_t CardComdClasses; /*!< Card command classes */ + __IO uint8_t RdBlockLen; /*!< Max. read data block length */ + __IO uint8_t PartBlockRead; /*!< Partial blocks for read allowed */ + __IO uint8_t WrBlockMisalign; /*!< Write block misalignment */ + __IO uint8_t RdBlockMisalign; /*!< Read block misalignment */ + __IO uint8_t DSRImpl; /*!< DSR implemented */ + __IO uint8_t Reserved2; /*!< Reserved */ + __IO uint32_t DeviceSize; /*!< Device Size */ + __IO uint8_t MaxRdCurrentVDDMin; /*!< Max. read current @ VDD min */ + __IO uint8_t MaxRdCurrentVDDMax; /*!< Max. read current @ VDD max */ + __IO uint8_t MaxWrCurrentVDDMin; /*!< Max. write current @ VDD min */ + __IO uint8_t MaxWrCurrentVDDMax; /*!< Max. write current @ VDD max */ + __IO uint8_t DeviceSizeMul; /*!< Device size multiplier */ + __IO uint8_t EraseGrSize; /*!< Erase group size */ + __IO uint8_t EraseGrMul; /*!< Erase group size multiplier */ + __IO uint8_t WrProtectGrSize; /*!< Write protect group size */ + __IO uint8_t WrProtectGrEnable; /*!< Write protect group enable */ + __IO uint8_t ManDeflECC; /*!< Manufacturer default ECC */ + __IO uint8_t WrSpeedFact; /*!< Write speed factor */ + __IO uint8_t MaxWrBlockLen; /*!< Max. write data block length */ + __IO uint8_t WriteBlockPaPartial; /*!< Partial blocks for write allowed */ + __IO uint8_t Reserved3; /*!< Reserved */ + __IO uint8_t ContentProtectAppli; /*!< Content protection application */ + __IO uint8_t FileFormatGroup; /*!< File format group */ + __IO uint8_t CopyFlag; /*!< Copy flag (OTP) */ + __IO uint8_t PermWrProtect; /*!< Permanent write protection */ + __IO uint8_t TempWrProtect; /*!< Temporary write protection */ + __IO uint8_t FileFormat; /*!< File format */ + __IO uint8_t ECC; /*!< ECC code */ + __IO uint8_t CSD_CRC; /*!< CSD CRC */ + __IO uint8_t Reserved4; /*!< Always 1 */ +}HAL_SD_CardCSDTypeDef; +/** + * @} + */ + +/** @defgroup SD_Exported_Types_Group5 Card Identification Data: CID Register + * @{ + */ +typedef struct +{ + __IO uint8_t ManufacturerID; /*!< Manufacturer ID */ + __IO uint16_t OEM_AppliID; /*!< OEM/Application ID */ + __IO uint32_t ProdName1; /*!< Product Name part1 */ + __IO uint8_t ProdName2; /*!< Product Name part2 */ + __IO uint8_t ProdRev; /*!< Product Revision */ + __IO uint32_t ProdSN; /*!< Product Serial Number */ + __IO uint8_t Reserved1; /*!< Reserved1 */ + __IO uint16_t ManufactDate; /*!< Manufacturing Date */ + __IO uint8_t CID_CRC; /*!< CID CRC */ + __IO uint8_t Reserved2; /*!< Always 1 */ + +}HAL_SD_CardCIDTypeDef; +/** + * @} + */ + +/** @defgroup SD_Exported_Types_Group6 SD Card Status returned by ACMD13 + * @{ + */ +typedef struct +{ + __IO uint8_t DataBusWidth; /*!< Shows the currently defined data bus width */ + __IO uint8_t SecuredMode; /*!< Card is in secured mode of operation */ + __IO uint16_t CardType; /*!< Carries information about card type */ + __IO uint32_t ProtectedAreaSize; /*!< Carries information about the capacity of protected area */ + __IO uint8_t SpeedClass; /*!< Carries information about the speed class of the card */ + __IO uint8_t PerformanceMove; /*!< Carries information about the card's performance move */ + __IO uint8_t AllocationUnitSize; /*!< Carries information about the card's allocation unit size */ + __IO uint16_t EraseSize; /*!< Determines the number of AUs to be erased in one operation */ + __IO uint8_t EraseTimeout; /*!< Determines the timeout for any number of AU erase */ + __IO uint8_t EraseOffset; /*!< Carries information about the erase offset */ + +}HAL_SD_CardStatusTypeDef; +/** + * @} + */ + +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +/** @defgroup SD_Exported_Types_Group7 SD Callback ID enumeration definition + * @{ + */ +typedef enum +{ + HAL_SD_TX_CPLT_CB_ID = 0x00U, /*!< SD Tx Complete Callback ID */ + HAL_SD_RX_CPLT_CB_ID = 0x01U, /*!< SD Rx Complete Callback ID */ + HAL_SD_ERROR_CB_ID = 0x02U, /*!< SD Error Callback ID */ + HAL_SD_ABORT_CB_ID = 0x03U, /*!< SD Abort Callback ID */ + + HAL_SD_MSP_INIT_CB_ID = 0x10U, /*!< SD MspInit Callback ID */ + HAL_SD_MSP_DEINIT_CB_ID = 0x11U /*!< SD MspDeInit Callback ID */ +}HAL_SD_CallbackIDTypeDef; +/** + * @} + */ + +/** @defgroup SD_Exported_Types_Group8 SD Callback pointer definition + * @{ + */ +typedef void (*pSD_CallbackTypeDef) (SD_HandleTypeDef *hsd); +/** + * @} + */ +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SD_Exported_Constants Exported Constants + * @{ + */ + +#define BLOCKSIZE 512U /*!< Block size is 512 bytes */ + +/** @defgroup SD_Exported_Constansts_Group1 SD Error status enumeration Structure definition + * @{ + */ +#define HAL_SD_ERROR_NONE SDMMC_ERROR_NONE /*!< No error */ +#define HAL_SD_ERROR_CMD_CRC_FAIL SDMMC_ERROR_CMD_CRC_FAIL /*!< Command response received (but CRC check failed) */ +#define HAL_SD_ERROR_DATA_CRC_FAIL SDMMC_ERROR_DATA_CRC_FAIL /*!< Data block sent/received (CRC check failed) */ +#define HAL_SD_ERROR_CMD_RSP_TIMEOUT SDMMC_ERROR_CMD_RSP_TIMEOUT /*!< Command response timeout */ +#define HAL_SD_ERROR_DATA_TIMEOUT SDMMC_ERROR_DATA_TIMEOUT /*!< Data timeout */ +#define HAL_SD_ERROR_TX_UNDERRUN SDMMC_ERROR_TX_UNDERRUN /*!< Transmit FIFO underrun */ +#define HAL_SD_ERROR_RX_OVERRUN SDMMC_ERROR_RX_OVERRUN /*!< Receive FIFO overrun */ +#define HAL_SD_ERROR_ADDR_MISALIGNED SDMMC_ERROR_ADDR_MISALIGNED /*!< Misaligned address */ +#define HAL_SD_ERROR_BLOCK_LEN_ERR SDMMC_ERROR_BLOCK_LEN_ERR /*!< Transferred block length is not allowed for the card or the + number of transferred bytes does not match the block length */ +#define HAL_SD_ERROR_ERASE_SEQ_ERR SDMMC_ERROR_ERASE_SEQ_ERR /*!< An error in the sequence of erase command occurs */ +#define HAL_SD_ERROR_BAD_ERASE_PARAM SDMMC_ERROR_BAD_ERASE_PARAM /*!< An invalid selection for erase groups */ +#define HAL_SD_ERROR_WRITE_PROT_VIOLATION SDMMC_ERROR_WRITE_PROT_VIOLATION /*!< Attempt to program a write protect block */ +#define HAL_SD_ERROR_LOCK_UNLOCK_FAILED SDMMC_ERROR_LOCK_UNLOCK_FAILED /*!< Sequence or password error has been detected in unlock + command or if there was an attempt to access a locked card */ +#define HAL_SD_ERROR_COM_CRC_FAILED SDMMC_ERROR_COM_CRC_FAILED /*!< CRC check of the previous command failed */ +#define HAL_SD_ERROR_ILLEGAL_CMD SDMMC_ERROR_ILLEGAL_CMD /*!< Command is not legal for the card state */ +#define HAL_SD_ERROR_CARD_ECC_FAILED SDMMC_ERROR_CARD_ECC_FAILED /*!< Card internal ECC was applied but failed to correct the data */ +#define HAL_SD_ERROR_CC_ERR SDMMC_ERROR_CC_ERR /*!< Internal card controller error */ +#define HAL_SD_ERROR_GENERAL_UNKNOWN_ERR SDMMC_ERROR_GENERAL_UNKNOWN_ERR /*!< General or unknown error */ +#define HAL_SD_ERROR_STREAM_READ_UNDERRUN SDMMC_ERROR_STREAM_READ_UNDERRUN /*!< The card could not sustain data reading in stream rmode */ +#define HAL_SD_ERROR_STREAM_WRITE_OVERRUN SDMMC_ERROR_STREAM_WRITE_OVERRUN /*!< The card could not sustain data programming in stream mode */ +#define HAL_SD_ERROR_CID_CSD_OVERWRITE SDMMC_ERROR_CID_CSD_OVERWRITE /*!< CID/CSD overwrite error */ +#define HAL_SD_ERROR_WP_ERASE_SKIP SDMMC_ERROR_WP_ERASE_SKIP /*!< Only partial address space was erased */ +#define HAL_SD_ERROR_CARD_ECC_DISABLED SDMMC_ERROR_CARD_ECC_DISABLED /*!< Command has been executed without using internal ECC */ +#define HAL_SD_ERROR_ERASE_RESET SDMMC_ERROR_ERASE_RESET /*!< Erase sequence was cleared before executing because an out + of erase sequence command was received */ +#define HAL_SD_ERROR_AKE_SEQ_ERR SDMMC_ERROR_AKE_SEQ_ERR /*!< Error in sequence of authentication */ +#define HAL_SD_ERROR_INVALID_VOLTRANGE SDMMC_ERROR_INVALID_VOLTRANGE /*!< Error in case of invalid voltage range */ +#define HAL_SD_ERROR_ADDR_OUT_OF_RANGE SDMMC_ERROR_ADDR_OUT_OF_RANGE /*!< Error when addressed block is out of range */ +#define HAL_SD_ERROR_REQUEST_NOT_APPLICABLE SDMMC_ERROR_REQUEST_NOT_APPLICABLE /*!< Error when command request is not applicable */ +#define HAL_SD_ERROR_PARAM SDMMC_ERROR_INVALID_PARAMETER /*!< the used parameter is not valid */ +#define HAL_SD_ERROR_UNSUPPORTED_FEATURE SDMMC_ERROR_UNSUPPORTED_FEATURE /*!< Error when feature is not insupported */ +#define HAL_SD_ERROR_BUSY SDMMC_ERROR_BUSY /*!< Error when transfer process is busy */ +#define HAL_SD_ERROR_DMA SDMMC_ERROR_DMA /*!< Error while DMA transfer */ +#define HAL_SD_ERROR_TIMEOUT SDMMC_ERROR_TIMEOUT /*!< Timeout error */ + +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +#define HAL_SD_ERROR_INVALID_CALLBACK SDMMC_ERROR_INVALID_PARAMETER /*!< Invalid callback error */ +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +/** + * @} + */ + +/** @defgroup SD_Exported_Constansts_Group2 SD context enumeration + * @{ + */ +#define SD_CONTEXT_NONE 0x00000000U /*!< None */ +#define SD_CONTEXT_READ_SINGLE_BLOCK 0x00000001U /*!< Read single block operation */ +#define SD_CONTEXT_READ_MULTIPLE_BLOCK 0x00000002U /*!< Read multiple blocks operation */ +#define SD_CONTEXT_WRITE_SINGLE_BLOCK 0x00000010U /*!< Write single block operation */ +#define SD_CONTEXT_WRITE_MULTIPLE_BLOCK 0x00000020U /*!< Write multiple blocks operation */ +#define SD_CONTEXT_IT 0x00000008U /*!< Process in Interrupt mode */ +#define SD_CONTEXT_DMA 0x00000080U /*!< Process in DMA mode */ + +/** + * @} + */ + +/** @defgroup SD_Exported_Constansts_Group3 SD Supported Memory Cards + * @{ + */ +#define CARD_SDSC 0x00000000U /*!< SD Standard Capacity <2Go */ +#define CARD_SDHC_SDXC 0x00000001U /*!< SD High Capacity <32Go, SD Extended Capacity <2To */ +#define CARD_SECURED 0x00000003U + +/** + * @} + */ + +/** @defgroup SD_Exported_Constansts_Group4 SD Supported Version + * @{ + */ +#define CARD_V1_X 0x00000000U +#define CARD_V2_X 0x00000001U +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup SD_Exported_macros SD Exported Macros + * @brief macros to handle interrupts and specific clock configurations + * @{ + */ +/** @brief Reset SD handle state. + * @param __HANDLE__ : SD handle. + * @retval None + */ +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +#define __HAL_SD_RESET_HANDLE_STATE(__HANDLE__) do { \ + (__HANDLE__)->State = HAL_SD_STATE_RESET; \ + (__HANDLE__)->MspInitCallback = NULL; \ + (__HANDLE__)->MspDeInitCallback = NULL; \ + } while(0) +#else +#define __HAL_SD_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SD_STATE_RESET) +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + +/** + * @brief Enable the SD device. + * @retval None + */ +#define __HAL_SD_ENABLE(__HANDLE__) __SDMMC_ENABLE((__HANDLE__)->Instance) + +/** + * @brief Disable the SD device. + * @retval None + */ +#define __HAL_SD_DISABLE(__HANDLE__) __SDMMC_DISABLE((__HANDLE__)->Instance) + +/** + * @brief Enable the SDMMC DMA transfer. + * @retval None + */ +#define __HAL_SD_DMA_ENABLE(__HANDLE__) __SDMMC_DMA_ENABLE((__HANDLE__)->Instance) + +/** + * @brief Disable the SDMMC DMA transfer. + * @retval None + */ +#define __HAL_SD_DMA_DISABLE(__HANDLE__) __SDMMC_DMA_DISABLE((__HANDLE__)->Instance) + +/** + * @brief Enable the SD device interrupt. + * @param __HANDLE__: SD Handle + * @param __INTERRUPT__: specifies the SDMMC interrupt sources to be enabled. + * This parameter can be one or a combination of the following values: + * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt + * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDMMC_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDMMC_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDACT: Command transfer in progress interrupt + * @arg SDMMC_IT_TXACT: Data transmit in progress interrupt + * @arg SDMMC_IT_RXACT: Data receive in progress interrupt + * @arg SDMMC_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDMMC_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDMMC_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDMMC_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDMMC_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDMMC_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDMMC_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDMMC_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDMMC_IT_SDIOIT: SDIO interrupt received interrupt + * @retval None + */ +#define __HAL_SD_ENABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_ENABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__)) + +/** + * @brief Disable the SD device interrupt. + * @param __HANDLE__: SD Handle + * @param __INTERRUPT__: specifies the SDMMC interrupt sources to be disabled. + * This parameter can be one or a combination of the following values: + * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt + * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDMMC_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDMMC_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDACT: Command transfer in progress interrupt + * @arg SDMMC_IT_TXACT: Data transmit in progress interrupt + * @arg SDMMC_IT_RXACT: Data receive in progress interrupt + * @arg SDMMC_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDMMC_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDMMC_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDMMC_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDMMC_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDMMC_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDMMC_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDMMC_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDMMC_IT_SDIOIT: SDIO interrupt received interrupt + * @retval None + */ +#define __HAL_SD_DISABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_DISABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__)) + +/** + * @brief Check whether the specified SD flag is set or not. + * @param __HANDLE__: SD Handle + * @param __FLAG__: specifies the flag to check. + * This parameter can be one of the following values: + * @arg SDMMC_FLAG_CCRCFAIL: Command response received (CRC check failed) + * @arg SDMMC_FLAG_DCRCFAIL: Data block sent/received (CRC check failed) + * @arg SDMMC_FLAG_CTIMEOUT: Command response timeout + * @arg SDMMC_FLAG_DTIMEOUT: Data timeout + * @arg SDMMC_FLAG_TXUNDERR: Transmit FIFO underrun error + * @arg SDMMC_FLAG_RXOVERR: Received FIFO overrun error + * @arg SDMMC_FLAG_CMDREND: Command response received (CRC check passed) + * @arg SDMMC_FLAG_CMDSENT: Command sent (no response required) + * @arg SDMMC_FLAG_DATAEND: Data end (data counter, DATACOUNT, is zero) + * @arg SDMMC_FLAG_DBCKEND: Data block sent/received (CRC check passed) + * @arg SDMMC_FLAG_CMDACT: Command transfer in progress + * @arg SDMMC_FLAG_TXACT: Data transmit in progress + * @arg SDMMC_FLAG_RXACT: Data receive in progress + * @arg SDMMC_FLAG_TXFIFOHE: Transmit FIFO Half Empty + * @arg SDMMC_FLAG_RXFIFOHF: Receive FIFO Half Full + * @arg SDMMC_FLAG_TXFIFOF: Transmit FIFO full + * @arg SDMMC_FLAG_RXFIFOF: Receive FIFO full + * @arg SDMMC_FLAG_TXFIFOE: Transmit FIFO empty + * @arg SDMMC_FLAG_RXFIFOE: Receive FIFO empty + * @arg SDMMC_FLAG_TXDAVL: Data available in transmit FIFO + * @arg SDMMC_FLAG_RXDAVL: Data available in receive FIFO + * @arg SDMMC_FLAG_SDIOIT: SDIO interrupt received + * @retval The new state of SD FLAG (SET or RESET). + */ +#define __HAL_SD_GET_FLAG(__HANDLE__, __FLAG__) __SDMMC_GET_FLAG((__HANDLE__)->Instance, (__FLAG__)) + +/** + * @brief Clear the SD's pending flags. + * @param __HANDLE__: SD Handle + * @param __FLAG__: specifies the flag to clear. + * This parameter can be one or a combination of the following values: + * @arg SDMMC_FLAG_CCRCFAIL: Command response received (CRC check failed) + * @arg SDMMC_FLAG_DCRCFAIL: Data block sent/received (CRC check failed) + * @arg SDMMC_FLAG_CTIMEOUT: Command response timeout + * @arg SDMMC_FLAG_DTIMEOUT: Data timeout + * @arg SDMMC_FLAG_TXUNDERR: Transmit FIFO underrun error + * @arg SDMMC_FLAG_RXOVERR: Received FIFO overrun error + * @arg SDMMC_FLAG_CMDREND: Command response received (CRC check passed) + * @arg SDMMC_FLAG_CMDSENT: Command sent (no response required) + * @arg SDMMC_FLAG_DATAEND: Data end (data counter, DATACOUNT, is zero) + * @arg SDMMC_FLAG_DBCKEND: Data block sent/received (CRC check passed) + * @arg SDMMC_FLAG_SDIOIT: SDIO interrupt received + * @retval None + */ +#define __HAL_SD_CLEAR_FLAG(__HANDLE__, __FLAG__) __SDMMC_CLEAR_FLAG((__HANDLE__)->Instance, (__FLAG__)) + +/** + * @brief Check whether the specified SD interrupt has occurred or not. + * @param __HANDLE__: SD Handle + * @param __INTERRUPT__: specifies the SDMMC interrupt source to check. + * This parameter can be one of the following values: + * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt + * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDMMC_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDMMC_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDACT: Command transfer in progress interrupt + * @arg SDMMC_IT_TXACT: Data transmit in progress interrupt + * @arg SDMMC_IT_RXACT: Data receive in progress interrupt + * @arg SDMMC_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDMMC_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDMMC_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDMMC_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDMMC_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDMMC_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDMMC_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDMMC_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDMMC_IT_SDIOIT: SDIO interrupt received interrupt + * @retval The new state of SD IT (SET or RESET). + */ +#define __HAL_SD_GET_IT(__HANDLE__, __INTERRUPT__) __SDMMC_GET_IT((__HANDLE__)->Instance, (__INTERRUPT__)) + +/** + * @brief Clear the SD's interrupt pending bits. + * @param __HANDLE__: SD Handle + * @param __INTERRUPT__: specifies the interrupt pending bit to clear. + * This parameter can be one or a combination of the following values: + * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt + * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDMMC_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDMMC_IT_SDIOIT: SDIO interrupt received interrupt + * @retval None + */ +#define __HAL_SD_CLEAR_IT(__HANDLE__, __INTERRUPT__) __SDMMC_CLEAR_IT((__HANDLE__)->Instance, (__INTERRUPT__)) + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup SD_Exported_Functions SD Exported Functions + * @{ + */ + +/** @defgroup SD_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ +HAL_StatusTypeDef HAL_SD_Init(SD_HandleTypeDef *hsd); +HAL_StatusTypeDef HAL_SD_InitCard(SD_HandleTypeDef *hsd); +HAL_StatusTypeDef HAL_SD_DeInit (SD_HandleTypeDef *hsd); +void HAL_SD_MspInit(SD_HandleTypeDef *hsd); +void HAL_SD_MspDeInit(SD_HandleTypeDef *hsd); +/** + * @} + */ + +/** @defgroup SD_Exported_Functions_Group2 Input and Output operation functions + * @{ + */ +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks, uint32_t Timeout); +HAL_StatusTypeDef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks, uint32_t Timeout); +HAL_StatusTypeDef HAL_SD_Erase(SD_HandleTypeDef *hsd, uint32_t BlockStartAdd, uint32_t BlockEndAdd); +/* Non-Blocking mode: IT */ +HAL_StatusTypeDef HAL_SD_ReadBlocks_IT(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks); +HAL_StatusTypeDef HAL_SD_WriteBlocks_IT(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks); +HAL_StatusTypeDef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks); + +void HAL_SD_IRQHandler(SD_HandleTypeDef *hsd); + +/* Callback in non blocking modes (DMA) */ +void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd); +void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd); +void HAL_SD_ErrorCallback(SD_HandleTypeDef *hsd); +void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd); + +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +/* SD callback registering/unregistering */ +HAL_StatusTypeDef HAL_SD_RegisterCallback (SD_HandleTypeDef *hsd, HAL_SD_CallbackIDTypeDef CallbackId, pSD_CallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_SD_UnRegisterCallback(SD_HandleTypeDef *hsd, HAL_SD_CallbackIDTypeDef CallbackId); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup SD_Exported_Functions_Group3 Peripheral Control functions + * @{ + */ +HAL_StatusTypeDef HAL_SD_ConfigWideBusOperation(SD_HandleTypeDef *hsd, uint32_t WideMode); +/** + * @} + */ + +/** @defgroup SD_Exported_Functions_Group4 SD card related functions + * @{ + */ +HAL_StatusTypeDef HAL_SD_SendSDStatus(SD_HandleTypeDef *hsd, uint32_t *pSDstatus); +HAL_SD_CardStateTypeDef HAL_SD_GetCardState(SD_HandleTypeDef *hsd); +HAL_StatusTypeDef HAL_SD_GetCardCID(SD_HandleTypeDef *hsd, HAL_SD_CardCIDTypeDef *pCID); +HAL_StatusTypeDef HAL_SD_GetCardCSD(SD_HandleTypeDef *hsd, HAL_SD_CardCSDTypeDef *pCSD); +HAL_StatusTypeDef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypeDef *pStatus); +HAL_StatusTypeDef HAL_SD_GetCardInfo(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypeDef *pCardInfo); +/** + * @} + */ + +/** @defgroup SD_Exported_Functions_Group5 Peripheral State and Errors functions + * @{ + */ +HAL_SD_StateTypeDef HAL_SD_GetState(SD_HandleTypeDef *hsd); +uint32_t HAL_SD_GetError(SD_HandleTypeDef *hsd); +/** + * @} + */ + +/** @defgroup SD_Exported_Functions_Group6 Perioheral Abort management + * @{ + */ +HAL_StatusTypeDef HAL_SD_Abort(SD_HandleTypeDef *hsd); +HAL_StatusTypeDef HAL_SD_Abort_IT(SD_HandleTypeDef *hsd); +/** + * @} + */ + +/* Private types -------------------------------------------------------------*/ +/** @defgroup SD_Private_Types SD Private Types + * @{ + */ + +/** + * @} + */ + +/* Private defines -----------------------------------------------------------*/ +/** @defgroup SD_Private_Defines SD Private Defines + * @{ + */ + +/** + * @} + */ + +/* Private variables ---------------------------------------------------------*/ +/** @defgroup SD_Private_Variables SD Private Variables + * @{ + */ + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup SD_Private_Constants SD Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup SD_Private_Macros SD Private Macros + * @{ + */ + +/** + * @} + */ + +/* Private functions prototypes ----------------------------------------------*/ +/** @defgroup SD_Private_Functions_Prototypes SD Private Functions Prototypes + * @{ + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup SD_Private_Functions SD Private Functions + * @{ + */ + +/** + * @} + */ + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* SDMMC1 */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32F7xx_HAL_SD_H */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h new file mode 100644 index 0000000..a088bc1 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h @@ -0,0 +1,2419 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_tim.h + * @author MCD Application Team + * @brief Header file of TIM HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_HAL_TIM_H +#define STM32F7xx_HAL_TIM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup TIM + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup TIM_Exported_Types TIM Exported Types + * @{ + */ + +/** + * @brief TIM Time base Configuration Structure definition + */ +typedef struct +{ + uint32_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ + + uint32_t CounterMode; /*!< Specifies the counter mode. + This parameter can be a value of @ref TIM_Counter_Mode */ + + uint32_t Period; /*!< Specifies the period value to be loaded into the active + Auto-Reload Register at the next update event. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. */ + + uint32_t ClockDivision; /*!< Specifies the clock division. + This parameter can be a value of @ref TIM_ClockDivision */ + + uint32_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter + reaches zero, an update event is generated and counting restarts + from the RCR value (N). + This means in PWM mode that (N+1) corresponds to: + - the number of PWM periods in edge-aligned mode + - the number of half PWM period in center-aligned mode + GP timers: this parameter must be a number between Min_Data = 0x00 and + Max_Data = 0xFF. + Advanced timers: this parameter must be a number between Min_Data = 0x0000 and + Max_Data = 0xFFFF. */ + + uint32_t AutoReloadPreload; /*!< Specifies the auto-reload preload. + This parameter can be a value of @ref TIM_AutoReloadPreload */ +} TIM_Base_InitTypeDef; + +/** + * @brief TIM Output Compare Configuration Structure definition + */ +typedef struct +{ + uint32_t OCMode; /*!< Specifies the TIM mode. + This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ + + uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ + + uint32_t OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_Output_Compare_Polarity */ + + uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_Output_Compare_N_Polarity + @note This parameter is valid only for timer instances supporting break feature. */ + + uint32_t OCFastMode; /*!< Specifies the Fast mode state. + This parameter can be a value of @ref TIM_Output_Fast_State + @note This parameter is valid only in PWM1 and PWM2 mode. */ + + + uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_Idle_State + @note This parameter is valid only for timer instances supporting break feature. */ + + uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State + @note This parameter is valid only for timer instances supporting break feature. */ +} TIM_OC_InitTypeDef; + +/** + * @brief TIM One Pulse Mode Configuration Structure definition + */ +typedef struct +{ + uint32_t OCMode; /*!< Specifies the TIM mode. + This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ + + uint32_t Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ + + uint32_t OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_Output_Compare_Polarity */ + + uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_Output_Compare_N_Polarity + @note This parameter is valid only for timer instances supporting break feature. */ + + uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_Idle_State + @note This parameter is valid only for timer instances supporting break feature. */ + + uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State + @note This parameter is valid only for timer instances supporting break feature. */ + + uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint32_t ICSelection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t ICFilter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_OnePulse_InitTypeDef; + +/** + * @brief TIM Input Capture Configuration Structure definition + */ +typedef struct +{ + uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint32_t ICSelection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t ICFilter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_IC_InitTypeDef; + +/** + * @brief TIM Encoder Configuration Structure definition + */ +typedef struct +{ + uint32_t EncoderMode; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Encoder_Mode */ + + uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Encoder_Input_Polarity */ + + uint32_t IC1Selection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t IC1Filter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + + uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Encoder_Input_Polarity */ + + uint32_t IC2Selection; /*!< Specifies the input. + This parameter can be a value of @ref TIM_Input_Capture_Selection */ + + uint32_t IC2Prescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t IC2Filter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_Encoder_InitTypeDef; + +/** + * @brief Clock Configuration Handle Structure definition + */ +typedef struct +{ + uint32_t ClockSource; /*!< TIM clock sources + This parameter can be a value of @ref TIM_Clock_Source */ + uint32_t ClockPolarity; /*!< TIM clock polarity + This parameter can be a value of @ref TIM_Clock_Polarity */ + uint32_t ClockPrescaler; /*!< TIM clock prescaler + This parameter can be a value of @ref TIM_Clock_Prescaler */ + uint32_t ClockFilter; /*!< TIM clock filter + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_ClockConfigTypeDef; + +/** + * @brief TIM Clear Input Configuration Handle Structure definition + */ +typedef struct +{ + uint32_t ClearInputState; /*!< TIM clear Input state + This parameter can be ENABLE or DISABLE */ + uint32_t ClearInputSource; /*!< TIM clear Input sources + This parameter can be a value of @ref TIM_ClearInput_Source */ + uint32_t ClearInputPolarity; /*!< TIM Clear Input polarity + This parameter can be a value of @ref TIM_ClearInput_Polarity */ + uint32_t ClearInputPrescaler; /*!< TIM Clear Input prescaler + This parameter must be 0: When OCRef clear feature is used with ETR source, + ETR prescaler must be off */ + uint32_t ClearInputFilter; /*!< TIM Clear Input filter + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ +} TIM_ClearInputConfigTypeDef; + +/** + * @brief TIM Master configuration Structure definition + * @note Advanced timers provide TRGO2 internal line which is redirected + * to the ADC + */ +typedef struct +{ + uint32_t MasterOutputTrigger; /*!< Trigger output (TRGO) selection + This parameter can be a value of @ref TIM_Master_Mode_Selection */ + uint32_t MasterOutputTrigger2; /*!< Trigger output2 (TRGO2) selection + This parameter can be a value of @ref TIM_Master_Mode_Selection_2 */ + uint32_t MasterSlaveMode; /*!< Master/slave mode selection + This parameter can be a value of @ref TIM_Master_Slave_Mode + @note When the Master/slave mode is enabled, the effect of + an event on the trigger input (TRGI) is delayed to allow a + perfect synchronization between the current timer and its + slaves (through TRGO). It is not mandatory in case of timer + synchronization mode. */ +} TIM_MasterConfigTypeDef; + +/** + * @brief TIM Slave configuration Structure definition + */ +typedef struct +{ + uint32_t SlaveMode; /*!< Slave mode selection + This parameter can be a value of @ref TIM_Slave_Mode */ + uint32_t InputTrigger; /*!< Input Trigger source + This parameter can be a value of @ref TIM_Trigger_Selection */ + uint32_t TriggerPolarity; /*!< Input Trigger polarity + This parameter can be a value of @ref TIM_Trigger_Polarity */ + uint32_t TriggerPrescaler; /*!< Input trigger prescaler + This parameter can be a value of @ref TIM_Trigger_Prescaler */ + uint32_t TriggerFilter; /*!< Input trigger filter + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + +} TIM_SlaveConfigTypeDef; + +/** + * @brief TIM Break input(s) and Dead time configuration Structure definition + * @note 2 break inputs can be configured (BKIN and BKIN2) with configurable + * filter and polarity. + */ +typedef struct +{ + uint32_t OffStateRunMode; /*!< TIM off state in run mode, This parameter can be a value of @ref TIM_OSSR_Off_State_Selection_for_Run_mode_state */ + + uint32_t OffStateIDLEMode; /*!< TIM off state in IDLE mode, This parameter can be a value of @ref TIM_OSSI_Off_State_Selection_for_Idle_mode_state */ + + uint32_t LockLevel; /*!< TIM Lock level, This parameter can be a value of @ref TIM_Lock_level */ + + uint32_t DeadTime; /*!< TIM dead Time, This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF */ + + uint32_t BreakState; /*!< TIM Break State, This parameter can be a value of @ref TIM_Break_Input_enable_disable */ + + uint32_t BreakPolarity; /*!< TIM Break input polarity, This parameter can be a value of @ref TIM_Break_Polarity */ + + uint32_t BreakFilter; /*!< Specifies the break input filter.This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + + uint32_t Break2State; /*!< TIM Break2 State, This parameter can be a value of @ref TIM_Break2_Input_enable_disable */ + + uint32_t Break2Polarity; /*!< TIM Break2 input polarity, This parameter can be a value of @ref TIM_Break2_Polarity */ + + uint32_t Break2Filter; /*!< TIM break2 input filter.This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + + uint32_t AutomaticOutput; /*!< TIM Automatic Output Enable state, This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */ + +} TIM_BreakDeadTimeConfigTypeDef; + +/** + * @brief HAL State structures definition + */ +typedef enum +{ + HAL_TIM_STATE_RESET = 0x00U, /*!< Peripheral not yet initialized or disabled */ + HAL_TIM_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */ + HAL_TIM_STATE_BUSY = 0x02U, /*!< An internal process is ongoing */ + HAL_TIM_STATE_TIMEOUT = 0x03U, /*!< Timeout state */ + HAL_TIM_STATE_ERROR = 0x04U /*!< Reception process is ongoing */ +} HAL_TIM_StateTypeDef; + +/** + * @brief TIM Channel States definition + */ +typedef enum +{ + HAL_TIM_CHANNEL_STATE_RESET = 0x00U, /*!< TIM Channel initial state */ + HAL_TIM_CHANNEL_STATE_READY = 0x01U, /*!< TIM Channel ready for use */ + HAL_TIM_CHANNEL_STATE_BUSY = 0x02U, /*!< An internal process is ongoing on the TIM channel */ +} HAL_TIM_ChannelStateTypeDef; + +/** + * @brief DMA Burst States definition + */ +typedef enum +{ + HAL_DMA_BURST_STATE_RESET = 0x00U, /*!< DMA Burst initial state */ + HAL_DMA_BURST_STATE_READY = 0x01U, /*!< DMA Burst ready for use */ + HAL_DMA_BURST_STATE_BUSY = 0x02U, /*!< Ongoing DMA Burst */ +} HAL_TIM_DMABurstStateTypeDef; + +/** + * @brief HAL Active channel structures definition + */ +typedef enum +{ + HAL_TIM_ACTIVE_CHANNEL_1 = 0x01U, /*!< The active channel is 1 */ + HAL_TIM_ACTIVE_CHANNEL_2 = 0x02U, /*!< The active channel is 2 */ + HAL_TIM_ACTIVE_CHANNEL_3 = 0x04U, /*!< The active channel is 3 */ + HAL_TIM_ACTIVE_CHANNEL_4 = 0x08U, /*!< The active channel is 4 */ + HAL_TIM_ACTIVE_CHANNEL_5 = 0x10U, /*!< The active channel is 5 */ + HAL_TIM_ACTIVE_CHANNEL_6 = 0x20U, /*!< The active channel is 6 */ + HAL_TIM_ACTIVE_CHANNEL_CLEARED = 0x00U /*!< All active channels cleared */ +} HAL_TIM_ActiveChannel; + +/** + * @brief TIM Time Base Handle Structure definition + */ +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +typedef struct __TIM_HandleTypeDef +#else +typedef struct +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +{ + TIM_TypeDef *Instance; /*!< Register base address */ + TIM_Base_InitTypeDef Init; /*!< TIM Time Base required parameters */ + HAL_TIM_ActiveChannel Channel; /*!< Active channel */ + DMA_HandleTypeDef *hdma[7]; /*!< DMA Handlers array + This array is accessed by a @ref DMA_Handle_index */ + HAL_LockTypeDef Lock; /*!< Locking object */ + __IO HAL_TIM_StateTypeDef State; /*!< TIM operation state */ + __IO HAL_TIM_ChannelStateTypeDef ChannelState[6]; /*!< TIM channel operation state */ + __IO HAL_TIM_ChannelStateTypeDef ChannelNState[4]; /*!< TIM complementary channel operation state */ + __IO HAL_TIM_DMABurstStateTypeDef DMABurstState; /*!< DMA burst operation state */ + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + void (* Base_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp Init Callback */ + void (* Base_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Base Msp DeInit Callback */ + void (* IC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp Init Callback */ + void (* IC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM IC Msp DeInit Callback */ + void (* OC_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp Init Callback */ + void (* OC_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM OC Msp DeInit Callback */ + void (* PWM_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp Init Callback */ + void (* PWM_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Msp DeInit Callback */ + void (* OnePulse_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp Init Callback */ + void (* OnePulse_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM One Pulse Msp DeInit Callback */ + void (* Encoder_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp Init Callback */ + void (* Encoder_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Encoder Msp DeInit Callback */ + void (* HallSensor_MspInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Hall Sensor Msp Init Callback */ + void (* HallSensor_MspDeInitCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Hall Sensor Msp DeInit Callback */ + void (* PeriodElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed Callback */ + void (* PeriodElapsedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Period Elapsed half complete Callback */ + void (* TriggerCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger Callback */ + void (* TriggerHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Trigger half complete Callback */ + void (* IC_CaptureCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture Callback */ + void (* IC_CaptureHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Input Capture half complete Callback */ + void (* OC_DelayElapsedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Output Compare Delay Elapsed Callback */ + void (* PWM_PulseFinishedCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished Callback */ + void (* PWM_PulseFinishedHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM PWM Pulse Finished half complete Callback */ + void (* ErrorCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Error Callback */ + void (* CommutationCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Commutation Callback */ + void (* CommutationHalfCpltCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Commutation half complete Callback */ + void (* BreakCallback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Break Callback */ + void (* Break2Callback)(struct __TIM_HandleTypeDef *htim); /*!< TIM Break2 Callback */ +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} TIM_HandleTypeDef; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +/** + * @brief HAL TIM Callback ID enumeration definition + */ +typedef enum +{ + HAL_TIM_BASE_MSPINIT_CB_ID = 0x00U /*!< TIM Base MspInit Callback ID */ + , HAL_TIM_BASE_MSPDEINIT_CB_ID = 0x01U /*!< TIM Base MspDeInit Callback ID */ + , HAL_TIM_IC_MSPINIT_CB_ID = 0x02U /*!< TIM IC MspInit Callback ID */ + , HAL_TIM_IC_MSPDEINIT_CB_ID = 0x03U /*!< TIM IC MspDeInit Callback ID */ + , HAL_TIM_OC_MSPINIT_CB_ID = 0x04U /*!< TIM OC MspInit Callback ID */ + , HAL_TIM_OC_MSPDEINIT_CB_ID = 0x05U /*!< TIM OC MspDeInit Callback ID */ + , HAL_TIM_PWM_MSPINIT_CB_ID = 0x06U /*!< TIM PWM MspInit Callback ID */ + , HAL_TIM_PWM_MSPDEINIT_CB_ID = 0x07U /*!< TIM PWM MspDeInit Callback ID */ + , HAL_TIM_ONE_PULSE_MSPINIT_CB_ID = 0x08U /*!< TIM One Pulse MspInit Callback ID */ + , HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID = 0x09U /*!< TIM One Pulse MspDeInit Callback ID */ + , HAL_TIM_ENCODER_MSPINIT_CB_ID = 0x0AU /*!< TIM Encoder MspInit Callback ID */ + , HAL_TIM_ENCODER_MSPDEINIT_CB_ID = 0x0BU /*!< TIM Encoder MspDeInit Callback ID */ + , HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID = 0x0CU /*!< TIM Hall Sensor MspDeInit Callback ID */ + , HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID = 0x0DU /*!< TIM Hall Sensor MspDeInit Callback ID */ + , HAL_TIM_PERIOD_ELAPSED_CB_ID = 0x0EU /*!< TIM Period Elapsed Callback ID */ + , HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID = 0x0FU /*!< TIM Period Elapsed half complete Callback ID */ + , HAL_TIM_TRIGGER_CB_ID = 0x10U /*!< TIM Trigger Callback ID */ + , HAL_TIM_TRIGGER_HALF_CB_ID = 0x11U /*!< TIM Trigger half complete Callback ID */ + , HAL_TIM_IC_CAPTURE_CB_ID = 0x12U /*!< TIM Input Capture Callback ID */ + , HAL_TIM_IC_CAPTURE_HALF_CB_ID = 0x13U /*!< TIM Input Capture half complete Callback ID */ + , HAL_TIM_OC_DELAY_ELAPSED_CB_ID = 0x14U /*!< TIM Output Compare Delay Elapsed Callback ID */ + , HAL_TIM_PWM_PULSE_FINISHED_CB_ID = 0x15U /*!< TIM PWM Pulse Finished Callback ID */ + , HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID = 0x16U /*!< TIM PWM Pulse Finished half complete Callback ID */ + , HAL_TIM_ERROR_CB_ID = 0x17U /*!< TIM Error Callback ID */ + , HAL_TIM_COMMUTATION_CB_ID = 0x18U /*!< TIM Commutation Callback ID */ + , HAL_TIM_COMMUTATION_HALF_CB_ID = 0x19U /*!< TIM Commutation half complete Callback ID */ + , HAL_TIM_BREAK_CB_ID = 0x1AU /*!< TIM Break Callback ID */ + , HAL_TIM_BREAK2_CB_ID = 0x1BU /*!< TIM Break2 Callback ID */ +} HAL_TIM_CallbackIDTypeDef; + +/** + * @brief HAL TIM Callback pointer definition + */ +typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to the TIM callback function */ + +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ +/* End of exported types -----------------------------------------------------*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup TIM_Exported_Constants TIM Exported Constants + * @{ + */ + +/** @defgroup TIM_ClearInput_Source TIM Clear Input Source + * @{ + */ +#define TIM_CLEARINPUTSOURCE_NONE 0x00000000U /*!< OCREF_CLR is disabled */ +#define TIM_CLEARINPUTSOURCE_ETR 0x00000001U /*!< OCREF_CLR is connected to ETRF input */ +/** + * @} + */ + +/** @defgroup TIM_DMA_Base_address TIM DMA Base Address + * @{ + */ +#define TIM_DMABASE_CR1 0x00000000U +#define TIM_DMABASE_CR2 0x00000001U +#define TIM_DMABASE_SMCR 0x00000002U +#define TIM_DMABASE_DIER 0x00000003U +#define TIM_DMABASE_SR 0x00000004U +#define TIM_DMABASE_EGR 0x00000005U +#define TIM_DMABASE_CCMR1 0x00000006U +#define TIM_DMABASE_CCMR2 0x00000007U +#define TIM_DMABASE_CCER 0x00000008U +#define TIM_DMABASE_CNT 0x00000009U +#define TIM_DMABASE_PSC 0x0000000AU +#define TIM_DMABASE_ARR 0x0000000BU +#define TIM_DMABASE_RCR 0x0000000CU +#define TIM_DMABASE_CCR1 0x0000000DU +#define TIM_DMABASE_CCR2 0x0000000EU +#define TIM_DMABASE_CCR3 0x0000000FU +#define TIM_DMABASE_CCR4 0x00000010U +#define TIM_DMABASE_BDTR 0x00000011U +#define TIM_DMABASE_DCR 0x00000012U +#define TIM_DMABASE_DMAR 0x00000013U +#define TIM_DMABASE_OR 0x00000014U +#define TIM_DMABASE_CCMR3 0x00000015U +#define TIM_DMABASE_CCR5 0x00000016U +#define TIM_DMABASE_CCR6 0x00000017U +#if defined(TIM_BREAK_INPUT_SUPPORT) +#define TIM_DMABASE_AF1 0x00000018U +#define TIM_DMABASE_AF2 0x00000019U +#endif /* TIM_BREAK_INPUT_SUPPORT */ +/** + * @} + */ + +/** @defgroup TIM_Event_Source TIM Event Source + * @{ + */ +#define TIM_EVENTSOURCE_UPDATE TIM_EGR_UG /*!< Reinitialize the counter and generates an update of the registers */ +#define TIM_EVENTSOURCE_CC1 TIM_EGR_CC1G /*!< A capture/compare event is generated on channel 1 */ +#define TIM_EVENTSOURCE_CC2 TIM_EGR_CC2G /*!< A capture/compare event is generated on channel 2 */ +#define TIM_EVENTSOURCE_CC3 TIM_EGR_CC3G /*!< A capture/compare event is generated on channel 3 */ +#define TIM_EVENTSOURCE_CC4 TIM_EGR_CC4G /*!< A capture/compare event is generated on channel 4 */ +#define TIM_EVENTSOURCE_COM TIM_EGR_COMG /*!< A commutation event is generated */ +#define TIM_EVENTSOURCE_TRIGGER TIM_EGR_TG /*!< A trigger event is generated */ +#define TIM_EVENTSOURCE_BREAK TIM_EGR_BG /*!< A break event is generated */ +#define TIM_EVENTSOURCE_BREAK2 TIM_EGR_B2G /*!< A break 2 event is generated */ +/** + * @} + */ + +/** @defgroup TIM_Input_Channel_Polarity TIM Input Channel polarity + * @{ + */ +#define TIM_INPUTCHANNELPOLARITY_RISING 0x00000000U /*!< Polarity for TIx source */ +#define TIM_INPUTCHANNELPOLARITY_FALLING TIM_CCER_CC1P /*!< Polarity for TIx source */ +#define TIM_INPUTCHANNELPOLARITY_BOTHEDGE (TIM_CCER_CC1P | TIM_CCER_CC1NP) /*!< Polarity for TIx source */ +/** + * @} + */ + +/** @defgroup TIM_ETR_Polarity TIM ETR Polarity + * @{ + */ +#define TIM_ETRPOLARITY_INVERTED TIM_SMCR_ETP /*!< Polarity for ETR source */ +#define TIM_ETRPOLARITY_NONINVERTED 0x00000000U /*!< Polarity for ETR source */ +/** + * @} + */ + +/** @defgroup TIM_ETR_Prescaler TIM ETR Prescaler + * @{ + */ +#define TIM_ETRPRESCALER_DIV1 0x00000000U /*!< No prescaler is used */ +#define TIM_ETRPRESCALER_DIV2 TIM_SMCR_ETPS_0 /*!< ETR input source is divided by 2 */ +#define TIM_ETRPRESCALER_DIV4 TIM_SMCR_ETPS_1 /*!< ETR input source is divided by 4 */ +#define TIM_ETRPRESCALER_DIV8 TIM_SMCR_ETPS /*!< ETR input source is divided by 8 */ +/** + * @} + */ + +/** @defgroup TIM_Counter_Mode TIM Counter Mode + * @{ + */ +#define TIM_COUNTERMODE_UP 0x00000000U /*!< Counter used as up-counter */ +#define TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as down-counter */ +#define TIM_COUNTERMODE_CENTERALIGNED1 TIM_CR1_CMS_0 /*!< Center-aligned mode 1 */ +#define TIM_COUNTERMODE_CENTERALIGNED2 TIM_CR1_CMS_1 /*!< Center-aligned mode 2 */ +#define TIM_COUNTERMODE_CENTERALIGNED3 TIM_CR1_CMS /*!< Center-aligned mode 3 */ +/** + * @} + */ + +/** @defgroup TIM_Update_Interrupt_Flag_Remap TIM Update Interrupt Flag Remap + * @{ + */ +#define TIM_UIFREMAP_DISABLE 0x00000000U /*!< Update interrupt flag remap disabled */ +#define TIM_UIFREMAP_ENABLE TIM_CR1_UIFREMAP /*!< Update interrupt flag remap enabled */ +/** + * @} + */ + +/** @defgroup TIM_ClockDivision TIM Clock Division + * @{ + */ +#define TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< Clock division: tDTS=tCK_INT */ +#define TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< Clock division: tDTS=2*tCK_INT */ +#define TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< Clock division: tDTS=4*tCK_INT */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_State TIM Output Compare State + * @{ + */ +#define TIM_OUTPUTSTATE_DISABLE 0x00000000U /*!< Capture/Compare 1 output disabled */ +#define TIM_OUTPUTSTATE_ENABLE TIM_CCER_CC1E /*!< Capture/Compare 1 output enabled */ +/** + * @} + */ + +/** @defgroup TIM_AutoReloadPreload TIM Auto-Reload Preload + * @{ + */ +#define TIM_AUTORELOAD_PRELOAD_DISABLE 0x00000000U /*!< TIMx_ARR register is not buffered */ +#define TIM_AUTORELOAD_PRELOAD_ENABLE TIM_CR1_ARPE /*!< TIMx_ARR register is buffered */ + +/** + * @} + */ + +/** @defgroup TIM_Output_Fast_State TIM Output Fast State + * @{ + */ +#define TIM_OCFAST_DISABLE 0x00000000U /*!< Output Compare fast disable */ +#define TIM_OCFAST_ENABLE TIM_CCMR1_OC1FE /*!< Output Compare fast enable */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_State TIM Complementary Output Compare State + * @{ + */ +#define TIM_OUTPUTNSTATE_DISABLE 0x00000000U /*!< OCxN is disabled */ +#define TIM_OUTPUTNSTATE_ENABLE TIM_CCER_CC1NE /*!< OCxN is enabled */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Polarity TIM Output Compare Polarity + * @{ + */ +#define TIM_OCPOLARITY_HIGH 0x00000000U /*!< Capture/Compare output polarity */ +#define TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< Capture/Compare output polarity */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_Polarity TIM Complementary Output Compare Polarity + * @{ + */ +#define TIM_OCNPOLARITY_HIGH 0x00000000U /*!< Capture/Compare complementary output polarity */ +#define TIM_OCNPOLARITY_LOW TIM_CCER_CC1NP /*!< Capture/Compare complementary output polarity */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_Idle_State TIM Output Compare Idle State + * @{ + */ +#define TIM_OCIDLESTATE_SET TIM_CR2_OIS1 /*!< Output Idle state: OCx=1 when MOE=0 */ +#define TIM_OCIDLESTATE_RESET 0x00000000U /*!< Output Idle state: OCx=0 when MOE=0 */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_N_Idle_State TIM Complementary Output Compare Idle State + * @{ + */ +#define TIM_OCNIDLESTATE_SET TIM_CR2_OIS1N /*!< Complementary output Idle state: OCxN=1 when MOE=0 */ +#define TIM_OCNIDLESTATE_RESET 0x00000000U /*!< Complementary output Idle state: OCxN=0 when MOE=0 */ +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Polarity TIM Input Capture Polarity + * @{ + */ +#define TIM_ICPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Capture triggered by rising edge on timer input */ +#define TIM_ICPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Capture triggered by falling edge on timer input */ +#define TIM_ICPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Capture triggered by both rising and falling edges on timer input*/ +/** + * @} + */ + +/** @defgroup TIM_Encoder_Input_Polarity TIM Encoder Input Polarity + * @{ + */ +#define TIM_ENCODERINPUTPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Encoder input with rising edge polarity */ +#define TIM_ENCODERINPUTPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Encoder input with falling edge polarity */ +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection + * @{ + */ +#define TIM_ICSELECTION_DIRECTTI TIM_CCMR1_CC1S_0 /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC1, IC2, IC3 or IC4, respectively */ +#define TIM_ICSELECTION_INDIRECTTI TIM_CCMR1_CC1S_1 /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to IC2, IC1, IC4 or IC3, respectively */ +#define TIM_ICSELECTION_TRC TIM_CCMR1_CC1S /*!< TIM Input 1, 2, 3 or 4 is selected to be connected to TRC */ +/** + * @} + */ + +/** @defgroup TIM_Input_Capture_Prescaler TIM Input Capture Prescaler + * @{ + */ +#define TIM_ICPSC_DIV1 0x00000000U /*!< Capture performed each time an edge is detected on the capture input */ +#define TIM_ICPSC_DIV2 TIM_CCMR1_IC1PSC_0 /*!< Capture performed once every 2 events */ +#define TIM_ICPSC_DIV4 TIM_CCMR1_IC1PSC_1 /*!< Capture performed once every 4 events */ +#define TIM_ICPSC_DIV8 TIM_CCMR1_IC1PSC /*!< Capture performed once every 8 events */ +/** + * @} + */ + +/** @defgroup TIM_One_Pulse_Mode TIM One Pulse Mode + * @{ + */ +#define TIM_OPMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at the next update event */ +#define TIM_OPMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at update event */ +/** + * @} + */ + +/** @defgroup TIM_Encoder_Mode TIM Encoder Mode + * @{ + */ +#define TIM_ENCODERMODE_TI1 TIM_SMCR_SMS_0 /*!< Quadrature encoder mode 1, x2 mode, counts up/down on TI1FP1 edge depending on TI2FP2 level */ +#define TIM_ENCODERMODE_TI2 TIM_SMCR_SMS_1 /*!< Quadrature encoder mode 2, x2 mode, counts up/down on TI2FP2 edge depending on TI1FP1 level. */ +#define TIM_ENCODERMODE_TI12 (TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< Quadrature encoder mode 3, x4 mode, counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. */ +/** + * @} + */ + +/** @defgroup TIM_Interrupt_definition TIM interrupt Definition + * @{ + */ +#define TIM_IT_UPDATE TIM_DIER_UIE /*!< Update interrupt */ +#define TIM_IT_CC1 TIM_DIER_CC1IE /*!< Capture/Compare 1 interrupt */ +#define TIM_IT_CC2 TIM_DIER_CC2IE /*!< Capture/Compare 2 interrupt */ +#define TIM_IT_CC3 TIM_DIER_CC3IE /*!< Capture/Compare 3 interrupt */ +#define TIM_IT_CC4 TIM_DIER_CC4IE /*!< Capture/Compare 4 interrupt */ +#define TIM_IT_COM TIM_DIER_COMIE /*!< Commutation interrupt */ +#define TIM_IT_TRIGGER TIM_DIER_TIE /*!< Trigger interrupt */ +#define TIM_IT_BREAK TIM_DIER_BIE /*!< Break interrupt */ +/** + * @} + */ + +/** @defgroup TIM_Commutation_Source TIM Commutation Source + * @{ + */ +#define TIM_COMMUTATION_TRGI TIM_CR2_CCUS /*!< When Capture/compare control bits are preloaded, they are updated by setting the COMG bit or when an rising edge occurs on trigger input */ +#define TIM_COMMUTATION_SOFTWARE 0x00000000U /*!< When Capture/compare control bits are preloaded, they are updated by setting the COMG bit */ +/** + * @} + */ + +/** @defgroup TIM_DMA_sources TIM DMA Sources + * @{ + */ +#define TIM_DMA_UPDATE TIM_DIER_UDE /*!< DMA request is triggered by the update event */ +#define TIM_DMA_CC1 TIM_DIER_CC1DE /*!< DMA request is triggered by the capture/compare macth 1 event */ +#define TIM_DMA_CC2 TIM_DIER_CC2DE /*!< DMA request is triggered by the capture/compare macth 2 event event */ +#define TIM_DMA_CC3 TIM_DIER_CC3DE /*!< DMA request is triggered by the capture/compare macth 3 event event */ +#define TIM_DMA_CC4 TIM_DIER_CC4DE /*!< DMA request is triggered by the capture/compare macth 4 event event */ +#define TIM_DMA_COM TIM_DIER_COMDE /*!< DMA request is triggered by the commutation event */ +#define TIM_DMA_TRIGGER TIM_DIER_TDE /*!< DMA request is triggered by the trigger event */ +/** + * @} + */ + +/** @defgroup TIM_CC_DMA_Request CCx DMA request selection + * @{ + */ +#define TIM_CCDMAREQUEST_CC 0x00000000U /*!< CCx DMA request sent when capture or compare match event occurs */ +#define TIM_CCDMAREQUEST_UPDATE TIM_CR2_CCDS /*!< CCx DMA requests sent when update event occurs */ +/** + * @} + */ + +/** @defgroup TIM_Flag_definition TIM Flag Definition + * @{ + */ +#define TIM_FLAG_UPDATE TIM_SR_UIF /*!< Update interrupt flag */ +#define TIM_FLAG_CC1 TIM_SR_CC1IF /*!< Capture/Compare 1 interrupt flag */ +#define TIM_FLAG_CC2 TIM_SR_CC2IF /*!< Capture/Compare 2 interrupt flag */ +#define TIM_FLAG_CC3 TIM_SR_CC3IF /*!< Capture/Compare 3 interrupt flag */ +#define TIM_FLAG_CC4 TIM_SR_CC4IF /*!< Capture/Compare 4 interrupt flag */ +#define TIM_FLAG_CC5 TIM_SR_CC5IF /*!< Capture/Compare 5 interrupt flag */ +#define TIM_FLAG_CC6 TIM_SR_CC6IF /*!< Capture/Compare 6 interrupt flag */ +#define TIM_FLAG_COM TIM_SR_COMIF /*!< Commutation interrupt flag */ +#define TIM_FLAG_TRIGGER TIM_SR_TIF /*!< Trigger interrupt flag */ +#define TIM_FLAG_BREAK TIM_SR_BIF /*!< Break interrupt flag */ +#define TIM_FLAG_BREAK2 TIM_SR_B2IF /*!< Break 2 interrupt flag */ +#define TIM_FLAG_SYSTEM_BREAK TIM_SR_SBIF /*!< System Break interrupt flag */ +#define TIM_FLAG_CC1OF TIM_SR_CC1OF /*!< Capture 1 overcapture flag */ +#define TIM_FLAG_CC2OF TIM_SR_CC2OF /*!< Capture 2 overcapture flag */ +#define TIM_FLAG_CC3OF TIM_SR_CC3OF /*!< Capture 3 overcapture flag */ +#define TIM_FLAG_CC4OF TIM_SR_CC4OF /*!< Capture 4 overcapture flag */ +/** + * @} + */ + +/** @defgroup TIM_Channel TIM Channel + * @{ + */ +#define TIM_CHANNEL_1 0x00000000U /*!< Capture/compare channel 1 identifier */ +#define TIM_CHANNEL_2 0x00000004U /*!< Capture/compare channel 2 identifier */ +#define TIM_CHANNEL_3 0x00000008U /*!< Capture/compare channel 3 identifier */ +#define TIM_CHANNEL_4 0x0000000CU /*!< Capture/compare channel 4 identifier */ +#define TIM_CHANNEL_5 0x00000010U /*!< Compare channel 5 identifier */ +#define TIM_CHANNEL_6 0x00000014U /*!< Compare channel 6 identifier */ +#define TIM_CHANNEL_ALL 0x0000003CU /*!< Global Capture/compare channel identifier */ +/** + * @} + */ + +/** @defgroup TIM_Clock_Source TIM Clock Source + * @{ + */ +#define TIM_CLOCKSOURCE_INTERNAL TIM_SMCR_ETPS_0 /*!< Internal clock source */ +#define TIM_CLOCKSOURCE_ETRMODE1 TIM_TS_ETRF /*!< External clock source mode 1 (ETRF) */ +#define TIM_CLOCKSOURCE_ETRMODE2 TIM_SMCR_ETPS_1 /*!< External clock source mode 2 */ +#define TIM_CLOCKSOURCE_TI1ED TIM_TS_TI1F_ED /*!< External clock source mode 1 (TTI1FP1 + edge detect.) */ +#define TIM_CLOCKSOURCE_TI1 TIM_TS_TI1FP1 /*!< External clock source mode 1 (TTI1FP1) */ +#define TIM_CLOCKSOURCE_TI2 TIM_TS_TI2FP2 /*!< External clock source mode 1 (TTI2FP2) */ +#define TIM_CLOCKSOURCE_ITR0 TIM_TS_ITR0 /*!< External clock source mode 1 (ITR0) */ +#define TIM_CLOCKSOURCE_ITR1 TIM_TS_ITR1 /*!< External clock source mode 1 (ITR1) */ +#define TIM_CLOCKSOURCE_ITR2 TIM_TS_ITR2 /*!< External clock source mode 1 (ITR2) */ +#define TIM_CLOCKSOURCE_ITR3 TIM_TS_ITR3 /*!< External clock source mode 1 (ITR3) */ +/** + * @} + */ + +/** @defgroup TIM_Clock_Polarity TIM Clock Polarity + * @{ + */ +#define TIM_CLOCKPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx clock sources */ +#define TIM_CLOCKPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx clock sources */ +#define TIM_CLOCKPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIx clock sources */ +#define TIM_CLOCKPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIx clock sources */ +#define TIM_CLOCKPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIx clock sources */ +/** + * @} + */ + +/** @defgroup TIM_Clock_Prescaler TIM Clock Prescaler + * @{ + */ +#define TIM_CLOCKPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ +#define TIM_CLOCKPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Clock: Capture performed once every 2 events. */ +#define TIM_CLOCKPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Clock: Capture performed once every 4 events. */ +#define TIM_CLOCKPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Clock: Capture performed once every 8 events. */ +/** + * @} + */ + +/** @defgroup TIM_ClearInput_Polarity TIM Clear Input Polarity + * @{ + */ +#define TIM_CLEARINPUTPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx pin */ +#define TIM_CLEARINPUTPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx pin */ +/** + * @} + */ + +/** @defgroup TIM_ClearInput_Prescaler TIM Clear Input Prescaler + * @{ + */ +#define TIM_CLEARINPUTPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ +#define TIM_CLEARINPUTPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR pin: Capture performed once every 2 events. */ +#define TIM_CLEARINPUTPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR pin: Capture performed once every 4 events. */ +#define TIM_CLEARINPUTPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR pin: Capture performed once every 8 events. */ +/** + * @} + */ + +/** @defgroup TIM_OSSR_Off_State_Selection_for_Run_mode_state TIM OSSR OffState Selection for Run mode state + * @{ + */ +#define TIM_OSSR_ENABLE TIM_BDTR_OSSR /*!< When inactive, OC/OCN outputs are enabled (still controlled by the timer) */ +#define TIM_OSSR_DISABLE 0x00000000U /*!< When inactive, OC/OCN outputs are disabled (not controlled any longer by the timer) */ +/** + * @} + */ + +/** @defgroup TIM_OSSI_Off_State_Selection_for_Idle_mode_state TIM OSSI OffState Selection for Idle mode state + * @{ + */ +#define TIM_OSSI_ENABLE TIM_BDTR_OSSI /*!< When inactive, OC/OCN outputs are enabled (still controlled by the timer) */ +#define TIM_OSSI_DISABLE 0x00000000U /*!< When inactive, OC/OCN outputs are disabled (not controlled any longer by the timer) */ +/** + * @} + */ +/** @defgroup TIM_Lock_level TIM Lock level + * @{ + */ +#define TIM_LOCKLEVEL_OFF 0x00000000U /*!< LOCK OFF */ +#define TIM_LOCKLEVEL_1 TIM_BDTR_LOCK_0 /*!< LOCK Level 1 */ +#define TIM_LOCKLEVEL_2 TIM_BDTR_LOCK_1 /*!< LOCK Level 2 */ +#define TIM_LOCKLEVEL_3 TIM_BDTR_LOCK /*!< LOCK Level 3 */ +/** + * @} + */ + +/** @defgroup TIM_Break_Input_enable_disable TIM Break Input Enable + * @{ + */ +#define TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break input BRK is enabled */ +#define TIM_BREAK_DISABLE 0x00000000U /*!< Break input BRK is disabled */ +/** + * @} + */ + +/** @defgroup TIM_Break_Polarity TIM Break Input Polarity + * @{ + */ +#define TIM_BREAKPOLARITY_LOW 0x00000000U /*!< Break input BRK is active low */ +#define TIM_BREAKPOLARITY_HIGH TIM_BDTR_BKP /*!< Break input BRK is active high */ +/** + * @} + */ + +/** @defgroup TIM_Break2_Input_enable_disable TIM Break input 2 Enable + * @{ + */ +#define TIM_BREAK2_DISABLE 0x00000000U /*!< Break input BRK2 is disabled */ +#define TIM_BREAK2_ENABLE TIM_BDTR_BK2E /*!< Break input BRK2 is enabled */ +/** + * @} + */ + +/** @defgroup TIM_Break2_Polarity TIM Break Input 2 Polarity + * @{ + */ +#define TIM_BREAK2POLARITY_LOW 0x00000000U /*!< Break input BRK2 is active low */ +#define TIM_BREAK2POLARITY_HIGH TIM_BDTR_BK2P /*!< Break input BRK2 is active high */ +/** + * @} + */ + +/** @defgroup TIM_AOE_Bit_Set_Reset TIM Automatic Output Enable + * @{ + */ +#define TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by software */ +#define TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by software or automatically at the next update event (if none of the break inputs BRK and BRK2 is active) */ +/** + * @} + */ + +/** @defgroup TIM_Group_Channel5 TIM Group Channel 5 and Channel 1, 2 or 3 + * @{ + */ +#define TIM_GROUPCH5_NONE 0x00000000U /*!< No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC */ +#define TIM_GROUPCH5_OC1REFC TIM_CCR5_GC5C1 /*!< OC1REFC is the logical AND of OC1REFC and OC5REF */ +#define TIM_GROUPCH5_OC2REFC TIM_CCR5_GC5C2 /*!< OC2REFC is the logical AND of OC2REFC and OC5REF */ +#define TIM_GROUPCH5_OC3REFC TIM_CCR5_GC5C3 /*!< OC3REFC is the logical AND of OC3REFC and OC5REF */ +/** + * @} + */ + +/** @defgroup TIM_Master_Mode_Selection TIM Master Mode Selection + * @{ + */ +#define TIM_TRGO_RESET 0x00000000U /*!< TIMx_EGR.UG bit is used as trigger output (TRGO) */ +#define TIM_TRGO_ENABLE TIM_CR2_MMS_0 /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO) */ +#define TIM_TRGO_UPDATE TIM_CR2_MMS_1 /*!< Update event is used as trigger output (TRGO) */ +#define TIM_TRGO_OC1 (TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< Capture or a compare match 1 is used as trigger output (TRGO) */ +#define TIM_TRGO_OC1REF TIM_CR2_MMS_2 /*!< OC1REF signal is used as trigger output (TRGO) */ +#define TIM_TRGO_OC2REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_0) /*!< OC2REF signal is used as trigger output(TRGO) */ +#define TIM_TRGO_OC3REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1) /*!< OC3REF signal is used as trigger output(TRGO) */ +#define TIM_TRGO_OC4REF (TIM_CR2_MMS_2 | TIM_CR2_MMS_1 | TIM_CR2_MMS_0) /*!< OC4REF signal is used as trigger output(TRGO) */ +/** + * @} + */ + +/** @defgroup TIM_Master_Mode_Selection_2 TIM Master Mode Selection 2 (TRGO2) + * @{ + */ +#define TIM_TRGO2_RESET 0x00000000U /*!< TIMx_EGR.UG bit is used as trigger output (TRGO2) */ +#define TIM_TRGO2_ENABLE TIM_CR2_MMS2_0 /*!< TIMx_CR1.CEN bit is used as trigger output (TRGO2) */ +#define TIM_TRGO2_UPDATE TIM_CR2_MMS2_1 /*!< Update event is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC1 (TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< Capture or a compare match 1 is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC1REF TIM_CR2_MMS2_2 /*!< OC1REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC2REF (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0) /*!< OC2REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC3REF (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1) /*!< OC3REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC4REF (TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< OC4REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC5REF TIM_CR2_MMS2_3 /*!< OC5REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC6REF (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_0) /*!< OC6REF signal is used as trigger output (TRGO2) */ +#define TIM_TRGO2_OC4REF_RISINGFALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1) /*!< OC4REF rising or falling edges generate pulses on TRGO2 */ +#define TIM_TRGO2_OC6REF_RISINGFALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< OC6REF rising or falling edges generate pulses on TRGO2 */ +#define TIM_TRGO2_OC4REF_RISING_OC6REF_RISING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2) /*!< OC4REF or OC6REF rising edges generate pulses on TRGO2 */ +#define TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_0) /*!< OC4REF rising or OC6REF falling edges generate pulses on TRGO2 */ +#define TIM_TRGO2_OC5REF_RISING_OC6REF_RISING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 |TIM_CR2_MMS2_1) /*!< OC5REF or OC6REF rising edges generate pulses on TRGO2 */ +#define TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING (TIM_CR2_MMS2_3 | TIM_CR2_MMS2_2 | TIM_CR2_MMS2_1 | TIM_CR2_MMS2_0) /*!< OC5REF or OC6REF rising edges generate pulses on TRGO2 */ +/** + * @} + */ + +/** @defgroup TIM_Master_Slave_Mode TIM Master/Slave Mode + * @{ + */ +#define TIM_MASTERSLAVEMODE_ENABLE TIM_SMCR_MSM /*!< No action */ +#define TIM_MASTERSLAVEMODE_DISABLE 0x00000000U /*!< Master/slave mode is selected */ +/** + * @} + */ + +/** @defgroup TIM_Slave_Mode TIM Slave mode + * @{ + */ +#define TIM_SLAVEMODE_DISABLE 0x00000000U /*!< Slave mode disabled */ +#define TIM_SLAVEMODE_RESET TIM_SMCR_SMS_2 /*!< Reset Mode */ +#define TIM_SLAVEMODE_GATED (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_0) /*!< Gated Mode */ +#define TIM_SLAVEMODE_TRIGGER (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1) /*!< Trigger Mode */ +#define TIM_SLAVEMODE_EXTERNAL1 (TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1 | TIM_SMCR_SMS_0) /*!< External Clock Mode 1 */ +#define TIM_SLAVEMODE_COMBINED_RESETTRIGGER TIM_SMCR_SMS_3 /*!< Combined reset + trigger mode */ +/** + * @} + */ + +/** @defgroup TIM_Output_Compare_and_PWM_modes TIM Output Compare and PWM Modes + * @{ + */ +#define TIM_OCMODE_TIMING 0x00000000U /*!< Frozen */ +#define TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 /*!< Set channel to active level on match */ +#define TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 /*!< Set channel to inactive level on match */ +#define TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< Toggle */ +#define TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) /*!< PWM mode 1 */ +#define TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!< PWM mode 2 */ +#define TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) /*!< Force active level */ +#define TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 /*!< Force inactive level */ +#define TIM_OCMODE_RETRIGERRABLE_OPM1 TIM_CCMR1_OC1M_3 /*!< Retrigerrable OPM mode 1 */ +#define TIM_OCMODE_RETRIGERRABLE_OPM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0) /*!< Retrigerrable OPM mode 2 */ +#define TIM_OCMODE_COMBINED_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_2) /*!< Combined PWM mode 1 */ +#define TIM_OCMODE_COMBINED_PWM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1M_2) /*!< Combined PWM mode 2 */ +#define TIM_OCMODE_ASYMMETRIC_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2) /*!< Asymmetric PWM mode 1 */ +#define TIM_OCMODE_ASYMMETRIC_PWM2 TIM_CCMR1_OC1M /*!< Asymmetric PWM mode 2 */ +/** + * @} + */ + +/** @defgroup TIM_Trigger_Selection TIM Trigger Selection + * @{ + */ +#define TIM_TS_ITR0 0x00000000U /*!< Internal Trigger 0 (ITR0) */ +#define TIM_TS_ITR1 TIM_SMCR_TS_0 /*!< Internal Trigger 1 (ITR1) */ +#define TIM_TS_ITR2 TIM_SMCR_TS_1 /*!< Internal Trigger 2 (ITR2) */ +#define TIM_TS_ITR3 (TIM_SMCR_TS_0 | TIM_SMCR_TS_1) /*!< Internal Trigger 3 (ITR3) */ +#define TIM_TS_TI1F_ED TIM_SMCR_TS_2 /*!< TI1 Edge Detector (TI1F_ED) */ +#define TIM_TS_TI1FP1 (TIM_SMCR_TS_0 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 1 (TI1FP1) */ +#define TIM_TS_TI2FP2 (TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered Timer Input 2 (TI2FP2) */ +#define TIM_TS_ETRF (TIM_SMCR_TS_0 | TIM_SMCR_TS_1 | TIM_SMCR_TS_2) /*!< Filtered External Trigger input (ETRF) */ +#define TIM_TS_NONE 0x0000FFFFU /*!< No trigger selected */ +/** + * @} + */ + +/** @defgroup TIM_Trigger_Polarity TIM Trigger Polarity + * @{ + */ +#define TIM_TRIGGERPOLARITY_INVERTED TIM_ETRPOLARITY_INVERTED /*!< Polarity for ETRx trigger sources */ +#define TIM_TRIGGERPOLARITY_NONINVERTED TIM_ETRPOLARITY_NONINVERTED /*!< Polarity for ETRx trigger sources */ +#define TIM_TRIGGERPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Polarity for TIxFPx or TI1_ED trigger sources */ +#define TIM_TRIGGERPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Polarity for TIxFPx or TI1_ED trigger sources */ +#define TIM_TRIGGERPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE /*!< Polarity for TIxFPx or TI1_ED trigger sources */ +/** + * @} + */ + +/** @defgroup TIM_Trigger_Prescaler TIM Trigger Prescaler + * @{ + */ +#define TIM_TRIGGERPRESCALER_DIV1 TIM_ETRPRESCALER_DIV1 /*!< No prescaler is used */ +#define TIM_TRIGGERPRESCALER_DIV2 TIM_ETRPRESCALER_DIV2 /*!< Prescaler for External ETR Trigger: Capture performed once every 2 events. */ +#define TIM_TRIGGERPRESCALER_DIV4 TIM_ETRPRESCALER_DIV4 /*!< Prescaler for External ETR Trigger: Capture performed once every 4 events. */ +#define TIM_TRIGGERPRESCALER_DIV8 TIM_ETRPRESCALER_DIV8 /*!< Prescaler for External ETR Trigger: Capture performed once every 8 events. */ +/** + * @} + */ + +/** @defgroup TIM_TI1_Selection TIM TI1 Input Selection + * @{ + */ +#define TIM_TI1SELECTION_CH1 0x00000000U /*!< The TIMx_CH1 pin is connected to TI1 input */ +#define TIM_TI1SELECTION_XORCOMBINATION TIM_CR2_TI1S /*!< The TIMx_CH1, CH2 and CH3 pins are connected to the TI1 input (XOR combination) */ +/** + * @} + */ + +/** @defgroup TIM_DMA_Burst_Length TIM DMA Burst Length + * @{ + */ +#define TIM_DMABURSTLENGTH_1TRANSFER 0x00000000U /*!< The transfer is done to 1 register starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_2TRANSFERS 0x00000100U /*!< The transfer is done to 2 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_3TRANSFERS 0x00000200U /*!< The transfer is done to 3 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_4TRANSFERS 0x00000300U /*!< The transfer is done to 4 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_5TRANSFERS 0x00000400U /*!< The transfer is done to 5 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_6TRANSFERS 0x00000500U /*!< The transfer is done to 6 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_7TRANSFERS 0x00000600U /*!< The transfer is done to 7 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_8TRANSFERS 0x00000700U /*!< The transfer is done to 8 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_9TRANSFERS 0x00000800U /*!< The transfer is done to 9 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_10TRANSFERS 0x00000900U /*!< The transfer is done to 10 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_11TRANSFERS 0x00000A00U /*!< The transfer is done to 11 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_12TRANSFERS 0x00000B00U /*!< The transfer is done to 12 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_13TRANSFERS 0x00000C00U /*!< The transfer is done to 13 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_14TRANSFERS 0x00000D00U /*!< The transfer is done to 14 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_15TRANSFERS 0x00000E00U /*!< The transfer is done to 15 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_16TRANSFERS 0x00000F00U /*!< The transfer is done to 16 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_17TRANSFERS 0x00001000U /*!< The transfer is done to 17 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +#define TIM_DMABURSTLENGTH_18TRANSFERS 0x00001100U /*!< The transfer is done to 18 registers starting from TIMx_CR1 + TIMx_DCR.DBA */ +/** + * @} + */ + +/** @defgroup DMA_Handle_index TIM DMA Handle Index + * @{ + */ +#define TIM_DMA_ID_UPDATE ((uint16_t) 0x0000) /*!< Index of the DMA handle used for Update DMA requests */ +#define TIM_DMA_ID_CC1 ((uint16_t) 0x0001) /*!< Index of the DMA handle used for Capture/Compare 1 DMA requests */ +#define TIM_DMA_ID_CC2 ((uint16_t) 0x0002) /*!< Index of the DMA handle used for Capture/Compare 2 DMA requests */ +#define TIM_DMA_ID_CC3 ((uint16_t) 0x0003) /*!< Index of the DMA handle used for Capture/Compare 3 DMA requests */ +#define TIM_DMA_ID_CC4 ((uint16_t) 0x0004) /*!< Index of the DMA handle used for Capture/Compare 4 DMA requests */ +#define TIM_DMA_ID_COMMUTATION ((uint16_t) 0x0005) /*!< Index of the DMA handle used for Commutation DMA requests */ +#define TIM_DMA_ID_TRIGGER ((uint16_t) 0x0006) /*!< Index of the DMA handle used for Trigger DMA requests */ +/** + * @} + */ + +/** @defgroup Channel_CC_State TIM Capture/Compare Channel State + * @{ + */ +#define TIM_CCx_ENABLE 0x00000001U /*!< Input or output channel is enabled */ +#define TIM_CCx_DISABLE 0x00000000U /*!< Input or output channel is disabled */ +#define TIM_CCxN_ENABLE 0x00000004U /*!< Complementary output channel is enabled */ +#define TIM_CCxN_DISABLE 0x00000000U /*!< Complementary output channel is enabled */ +/** + * @} + */ + +/** @defgroup TIM_Break_System TIM Break System + * @{ + */ +#define TIM_BREAK_SYSTEM_ECC SYSCFG_CFGR2_ECCL /*!< Enables and locks the ECC error signal with Break Input of TIM1/8/15/16/17 */ +#define TIM_BREAK_SYSTEM_PVD SYSCFG_CFGR2_PVDL /*!< Enables and locks the PVD connection with TIM1/8/15/16/17 Break Input and also the PVDE and PLS bits of the Power Control Interface */ +#define TIM_BREAK_SYSTEM_SRAM_PARITY_ERROR SYSCFG_CFGR2_SPL /*!< Enables and locks the SRAM_PARITY error signal with Break Input of TIM1/8/15/16/17 */ +#define TIM_BREAK_SYSTEM_LOCKUP SYSCFG_CFGR2_CLL /*!< Enables and locks the LOCKUP output of CortexM4 with Break Input of TIM1/8/15/16/17 */ +/** + * @} + */ + +/** + * @} + */ +/* End of exported constants -------------------------------------------------*/ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup TIM_Exported_Macros TIM Exported Macros + * @{ + */ + +/** @brief Reset TIM handle state. + * @param __HANDLE__ TIM handle. + * @retval None + */ +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \ + (__HANDLE__)->State = HAL_TIM_STATE_RESET; \ + (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[4] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[5] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \ + (__HANDLE__)->Base_MspInitCallback = NULL; \ + (__HANDLE__)->Base_MspDeInitCallback = NULL; \ + (__HANDLE__)->IC_MspInitCallback = NULL; \ + (__HANDLE__)->IC_MspDeInitCallback = NULL; \ + (__HANDLE__)->OC_MspInitCallback = NULL; \ + (__HANDLE__)->OC_MspDeInitCallback = NULL; \ + (__HANDLE__)->PWM_MspInitCallback = NULL; \ + (__HANDLE__)->PWM_MspDeInitCallback = NULL; \ + (__HANDLE__)->OnePulse_MspInitCallback = NULL; \ + (__HANDLE__)->OnePulse_MspDeInitCallback = NULL; \ + (__HANDLE__)->Encoder_MspInitCallback = NULL; \ + (__HANDLE__)->Encoder_MspDeInitCallback = NULL; \ + (__HANDLE__)->HallSensor_MspInitCallback = NULL; \ + (__HANDLE__)->HallSensor_MspDeInitCallback = NULL; \ + } while(0) +#else +#define __HAL_TIM_RESET_HANDLE_STATE(__HANDLE__) do { \ + (__HANDLE__)->State = HAL_TIM_STATE_RESET; \ + (__HANDLE__)->ChannelState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[4] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelState[5] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[0] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[1] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[2] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->ChannelNState[3] = HAL_TIM_CHANNEL_STATE_RESET; \ + (__HANDLE__)->DMABurstState = HAL_DMA_BURST_STATE_RESET; \ + } while(0) +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @brief Enable the TIM peripheral. + * @param __HANDLE__ TIM handle + * @retval None + */ +#define __HAL_TIM_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|=(TIM_CR1_CEN)) + +/** + * @brief Enable the TIM main Output. + * @param __HANDLE__ TIM handle + * @retval None + */ +#define __HAL_TIM_MOE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->BDTR|=(TIM_BDTR_MOE)) + +/** + * @brief Disable the TIM peripheral. + * @param __HANDLE__ TIM handle + * @retval None + */ +#define __HAL_TIM_DISABLE(__HANDLE__) \ + do { \ + if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \ + { \ + if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \ + { \ + (__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \ + } \ + } \ + } while(0) + +/** + * @brief Disable the TIM main Output. + * @param __HANDLE__ TIM handle + * @retval None + * @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been + * disabled + */ +#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \ + do { \ + if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \ + { \ + if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \ + { \ + (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \ + } \ + } \ + } while(0) + +/** + * @brief Disable the TIM main Output. + * @param __HANDLE__ TIM handle + * @retval None + * @note The Main Output Enable of a timer instance is disabled unconditionally + */ +#define __HAL_TIM_MOE_DISABLE_UNCONDITIONALLY(__HANDLE__) (__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE) + +/** @brief Enable the specified TIM interrupt. + * @param __HANDLE__ specifies the TIM Handle. + * @param __INTERRUPT__ specifies the TIM interrupt source to enable. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_COM: Commutation interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @arg TIM_IT_BREAK: Break interrupt + * @retval None + */ +#define __HAL_TIM_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER |= (__INTERRUPT__)) + +/** @brief Disable the specified TIM interrupt. + * @param __HANDLE__ specifies the TIM Handle. + * @param __INTERRUPT__ specifies the TIM interrupt source to disable. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_COM: Commutation interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @arg TIM_IT_BREAK: Break interrupt + * @retval None + */ +#define __HAL_TIM_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->DIER &= ~(__INTERRUPT__)) + +/** @brief Enable the specified DMA request. + * @param __HANDLE__ specifies the TIM Handle. + * @param __DMA__ specifies the TIM DMA request to enable. + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: Update DMA request + * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request + * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request + * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request + * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request + * @arg TIM_DMA_COM: Commutation DMA request + * @arg TIM_DMA_TRIGGER: Trigger DMA request + * @retval None + */ +#define __HAL_TIM_ENABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER |= (__DMA__)) + +/** @brief Disable the specified DMA request. + * @param __HANDLE__ specifies the TIM Handle. + * @param __DMA__ specifies the TIM DMA request to disable. + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: Update DMA request + * @arg TIM_DMA_CC1: Capture/Compare 1 DMA request + * @arg TIM_DMA_CC2: Capture/Compare 2 DMA request + * @arg TIM_DMA_CC3: Capture/Compare 3 DMA request + * @arg TIM_DMA_CC4: Capture/Compare 4 DMA request + * @arg TIM_DMA_COM: Commutation DMA request + * @arg TIM_DMA_TRIGGER: Trigger DMA request + * @retval None + */ +#define __HAL_TIM_DISABLE_DMA(__HANDLE__, __DMA__) ((__HANDLE__)->Instance->DIER &= ~(__DMA__)) + +/** @brief Check whether the specified TIM interrupt flag is set or not. + * @param __HANDLE__ specifies the TIM Handle. + * @param __FLAG__ specifies the TIM interrupt flag to check. + * This parameter can be one of the following values: + * @arg TIM_FLAG_UPDATE: Update interrupt flag + * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag + * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag + * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag + * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag + * @arg TIM_FLAG_CC5: Compare 5 interrupt flag + * @arg TIM_FLAG_CC6: Compare 6 interrupt flag + * @arg TIM_FLAG_COM: Commutation interrupt flag + * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag + * @arg TIM_FLAG_BREAK: Break interrupt flag + * @arg TIM_FLAG_BREAK2: Break 2 interrupt flag + * @arg TIM_FLAG_SYSTEM_BREAK: System Break interrupt flag + * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag + * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag + * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag + * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_TIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR &(__FLAG__)) == (__FLAG__)) + +/** @brief Clear the specified TIM interrupt flag. + * @param __HANDLE__ specifies the TIM Handle. + * @param __FLAG__ specifies the TIM interrupt flag to clear. + * This parameter can be one of the following values: + * @arg TIM_FLAG_UPDATE: Update interrupt flag + * @arg TIM_FLAG_CC1: Capture/Compare 1 interrupt flag + * @arg TIM_FLAG_CC2: Capture/Compare 2 interrupt flag + * @arg TIM_FLAG_CC3: Capture/Compare 3 interrupt flag + * @arg TIM_FLAG_CC4: Capture/Compare 4 interrupt flag + * @arg TIM_FLAG_CC5: Compare 5 interrupt flag + * @arg TIM_FLAG_CC6: Compare 6 interrupt flag + * @arg TIM_FLAG_COM: Commutation interrupt flag + * @arg TIM_FLAG_TRIGGER: Trigger interrupt flag + * @arg TIM_FLAG_BREAK: Break interrupt flag + * @arg TIM_FLAG_BREAK2: Break 2 interrupt flag + * @arg TIM_FLAG_SYSTEM_BREAK: System Break interrupt flag + * @arg TIM_FLAG_CC1OF: Capture/Compare 1 overcapture flag + * @arg TIM_FLAG_CC2OF: Capture/Compare 2 overcapture flag + * @arg TIM_FLAG_CC3OF: Capture/Compare 3 overcapture flag + * @arg TIM_FLAG_CC4OF: Capture/Compare 4 overcapture flag + * @retval The new state of __FLAG__ (TRUE or FALSE). + */ +#define __HAL_TIM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__)) + +/** + * @brief Check whether the specified TIM interrupt source is enabled or not. + * @param __HANDLE__ TIM handle + * @param __INTERRUPT__ specifies the TIM interrupt source to check. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_COM: Commutation interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @arg TIM_IT_BREAK: Break interrupt + * @retval The state of TIM_IT (SET or RESET). + */ +#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) \ + == (__INTERRUPT__)) ? SET : RESET) + +/** @brief Clear the TIM interrupt pending bits. + * @param __HANDLE__ TIM handle + * @param __INTERRUPT__ specifies the interrupt pending bit to clear. + * This parameter can be one of the following values: + * @arg TIM_IT_UPDATE: Update interrupt + * @arg TIM_IT_CC1: Capture/Compare 1 interrupt + * @arg TIM_IT_CC2: Capture/Compare 2 interrupt + * @arg TIM_IT_CC3: Capture/Compare 3 interrupt + * @arg TIM_IT_CC4: Capture/Compare 4 interrupt + * @arg TIM_IT_COM: Commutation interrupt + * @arg TIM_IT_TRIGGER: Trigger interrupt + * @arg TIM_IT_BREAK: Break interrupt + * @retval None + */ +#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__)) + +/** + * @brief Force a continuous copy of the update interrupt flag (UIF) into the timer counter register (bit 31). + * @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read + * in an atomic way. + * @param __HANDLE__ TIM handle. + * @retval None +mode. + */ +#define __HAL_TIM_UIFREMAP_ENABLE(__HANDLE__) (((__HANDLE__)->Instance->CR1 |= TIM_CR1_UIFREMAP)) + +/** + * @brief Disable update interrupt flag (UIF) remapping. + * @param __HANDLE__ TIM handle. + * @retval None +mode. + */ +#define __HAL_TIM_UIFREMAP_DISABLE(__HANDLE__) (((__HANDLE__)->Instance->CR1 &= ~TIM_CR1_UIFREMAP)) + +/** + * @brief Get update interrupt flag (UIF) copy status. + * @param __COUNTER__ Counter value. + * @retval The state of UIFCPY (TRUE or FALSE). +mode. + */ +#define __HAL_TIM_GET_UIFCPY(__COUNTER__) (((__COUNTER__) & (TIM_CNT_UIFCPY)) == (TIM_CNT_UIFCPY)) + +/** + * @brief Indicates whether or not the TIM Counter is used as downcounter. + * @param __HANDLE__ TIM handle. + * @retval False (Counter used as upcounter) or True (Counter used as downcounter) + * @note This macro is particularly useful to get the counting mode when the timer operates in Center-aligned mode + * or Encoder mode. + */ +#define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__) (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR)) + +/** + * @brief Set the TIM Prescaler on runtime. + * @param __HANDLE__ TIM handle. + * @param __PRESC__ specifies the Prescaler new value. + * @retval None + */ +#define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__) ((__HANDLE__)->Instance->PSC = (__PRESC__)) + +/** + * @brief Set the TIM Counter Register value on runtime. + * Note Please check if the bit 31 of CNT register is used as UIF copy or not, this may affect the counter range in + * case of 32 bits counter TIM instance. + * Bit 31 of CNT can be enabled/disabled using __HAL_TIM_UIFREMAP_ENABLE()/__HAL_TIM_UIFREMAP_DISABLE() macros. + * @param __HANDLE__ TIM handle. + * @param __COUNTER__ specifies the Counter register new value. + * @retval None + */ +#define __HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->CNT = (__COUNTER__)) + +/** + * @brief Get the TIM Counter Register value on runtime. + * @param __HANDLE__ TIM handle. + * @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT) + */ +#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT) + +/** + * @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function. + * @param __HANDLE__ TIM handle. + * @param __AUTORELOAD__ specifies the Counter register new value. + * @retval None + */ +#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \ + do{ \ + (__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \ + (__HANDLE__)->Init.Period = (__AUTORELOAD__); \ + } while(0) + +/** + * @brief Get the TIM Autoreload Register value on runtime. + * @param __HANDLE__ TIM handle. + * @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR) + */ +#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) ((__HANDLE__)->Instance->ARR) + +/** + * @brief Set the TIM Clock Division value on runtime without calling another time any Init function. + * @param __HANDLE__ TIM handle. + * @param __CKD__ specifies the clock division value. + * This parameter can be one of the following value: + * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT + * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT + * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT + * @retval None + */ +#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \ + do{ \ + (__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \ + (__HANDLE__)->Instance->CR1 |= (__CKD__); \ + (__HANDLE__)->Init.ClockDivision = (__CKD__); \ + } while(0) + +/** + * @brief Get the TIM Clock Division value on runtime. + * @param __HANDLE__ TIM handle. + * @retval The clock division can be one of the following values: + * @arg TIM_CLOCKDIVISION_DIV1: tDTS=tCK_INT + * @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT + * @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT + */ +#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD) + +/** + * @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() + * function. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param __ICPSC__ specifies the Input Capture4 prescaler new value. + * This parameter can be one of the following values: + * @arg TIM_ICPSC_DIV1: no prescaler + * @arg TIM_ICPSC_DIV2: capture is done once every 2 events + * @arg TIM_ICPSC_DIV4: capture is done once every 4 events + * @arg TIM_ICPSC_DIV8: capture is done once every 8 events + * @retval None + */ +#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \ + do{ \ + TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \ + TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \ + } while(0) + +/** + * @brief Get the TIM Input Capture prescaler on runtime. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: get input capture 1 prescaler value + * @arg TIM_CHANNEL_2: get input capture 2 prescaler value + * @arg TIM_CHANNEL_3: get input capture 3 prescaler value + * @arg TIM_CHANNEL_4: get input capture 4 prescaler value + * @retval The input capture prescaler can be one of the following values: + * @arg TIM_ICPSC_DIV1: no prescaler + * @arg TIM_ICPSC_DIV2: capture is done once every 2 events + * @arg TIM_ICPSC_DIV4: capture is done once every 4 events + * @arg TIM_ICPSC_DIV8: capture is done once every 8 events + */ +#define __HAL_TIM_GET_ICPRESCALER(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC1PSC) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? (((__HANDLE__)->Instance->CCMR1 & TIM_CCMR1_IC2PSC) >> 8U) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC3PSC) :\ + (((__HANDLE__)->Instance->CCMR2 & TIM_CCMR2_IC4PSC)) >> 8U) + +/** + * @brief Set the TIM Capture Compare Register value on runtime without calling another time ConfigChannel function. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @param __COMPARE__ specifies the Capture Compare register new value. + * @retval None + */ +#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\ + ((__HANDLE__)->Instance->CCR6 = (__COMPARE__))) + +/** + * @brief Get the TIM Capture Compare Register value on runtime. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channel associated with the capture compare register + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: get capture/compare 1 register value + * @arg TIM_CHANNEL_2: get capture/compare 2 register value + * @arg TIM_CHANNEL_3: get capture/compare 3 register value + * @arg TIM_CHANNEL_4: get capture/compare 4 register value + * @arg TIM_CHANNEL_5: get capture/compare 5 register value + * @arg TIM_CHANNEL_6: get capture/compare 6 register value + * @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy) + */ +#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\ + ((__HANDLE__)->Instance->CCR6)) + +/** + * @brief Set the TIM Output compare preload. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval None + */ +#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5PE) :\ + ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6PE)) + +/** + * @brief Reset the TIM Output compare preload. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval None + */ +#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4PE) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5PE) :\ + ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6PE)) + +/** + * @brief Enable fast mode for a given channel. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @note When fast mode is enabled an active edge on the trigger input acts + * like a compare match on CCx output. Delay to sample the trigger + * input and to activate CCx output is reduced to 3 clock cycles. + * @note Fast mode acts only if the channel is configured in PWM1 or PWM2 mode. + * @retval None + */ +#define __HAL_TIM_ENABLE_OCxFAST(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5FE) :\ + ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6FE)) + +/** + * @brief Disable fast mode for a given channel. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @note When fast mode is disabled CCx output behaves normally depending + * on counter and CCRx values even when the trigger is ON. The minimum + * delay to activate CCx output when an active edge occurs on the + * trigger input is 5 clock cycles. + * @retval None + */ +#define __HAL_TIM_DISABLE_OCxFAST(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE) :\ + ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE)) + +/** + * @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register. + * @param __HANDLE__ TIM handle. + * @note When the URS bit of the TIMx_CR1 register is set, only counter + * overflow/underflow generates an update interrupt or DMA request (if + * enabled) + * @retval None + */ +#define __HAL_TIM_URS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS) + +/** + * @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register. + * @param __HANDLE__ TIM handle. + * @note When the URS bit of the TIMx_CR1 register is reset, any of the + * following events generate an update interrupt or DMA request (if + * enabled): + * _ Counter overflow underflow + * _ Setting the UG bit + * _ Update generation through the slave mode controller + * @retval None + */ +#define __HAL_TIM_URS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS) + +/** + * @brief Set the TIM Capture x input polarity on runtime. + * @param __HANDLE__ TIM handle. + * @param __CHANNEL__ TIM Channels to be configured. + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param __POLARITY__ Polarity for TIx source + * @arg TIM_INPUTCHANNELPOLARITY_RISING: Rising Edge + * @arg TIM_INPUTCHANNELPOLARITY_FALLING: Falling Edge + * @arg TIM_INPUTCHANNELPOLARITY_BOTHEDGE: Rising and Falling Edge + * @retval None + */ +#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \ + do{ \ + TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \ + TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \ + }while(0) + +/** @brief Select the Capture/compare DMA request source. + * @param __HANDLE__ specifies the TIM Handle. + * @param __CCDMA__ specifies Capture/compare DMA request source + * This parameter can be one of the following values: + * @arg TIM_CCDMAREQUEST_CC: CCx DMA request generated on Capture/Compare event + * @arg TIM_CCDMAREQUEST_UPDATE: CCx DMA request generated on Update event + * @retval None + */ +#define __HAL_TIM_SELECT_CCDMAREQUEST(__HANDLE__, __CCDMA__) \ + MODIFY_REG((__HANDLE__)->Instance->CR2, TIM_CR2_CCDS, (__CCDMA__)) + +/** + * @} + */ +/* End of exported macros ----------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup TIM_Private_Constants TIM Private Constants + * @{ + */ +/* The counter of a timer instance is disabled only if all the CCx and CCxN + channels have been disabled */ +#define TIM_CCER_CCxE_MASK ((uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E)) +#define TIM_CCER_CCxNE_MASK ((uint32_t)(TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE)) +/** + * @} + */ +/* End of private constants --------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup TIM_Private_Macros TIM Private Macros + * @{ + */ +#define IS_TIM_CLEARINPUT_SOURCE(__MODE__) (((__MODE__) == TIM_CLEARINPUTSOURCE_NONE) || \ + ((__MODE__) == TIM_CLEARINPUTSOURCE_ETR)) + +#if defined(TIM_AF1_BKINE)&&defined(TIM_AF2_BKINE) +#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \ + ((__BASE__) == TIM_DMABASE_CR2) || \ + ((__BASE__) == TIM_DMABASE_SMCR) || \ + ((__BASE__) == TIM_DMABASE_DIER) || \ + ((__BASE__) == TIM_DMABASE_SR) || \ + ((__BASE__) == TIM_DMABASE_EGR) || \ + ((__BASE__) == TIM_DMABASE_CCMR1) || \ + ((__BASE__) == TIM_DMABASE_CCMR2) || \ + ((__BASE__) == TIM_DMABASE_CCER) || \ + ((__BASE__) == TIM_DMABASE_CNT) || \ + ((__BASE__) == TIM_DMABASE_PSC) || \ + ((__BASE__) == TIM_DMABASE_ARR) || \ + ((__BASE__) == TIM_DMABASE_RCR) || \ + ((__BASE__) == TIM_DMABASE_CCR1) || \ + ((__BASE__) == TIM_DMABASE_CCR2) || \ + ((__BASE__) == TIM_DMABASE_CCR3) || \ + ((__BASE__) == TIM_DMABASE_CCR4) || \ + ((__BASE__) == TIM_DMABASE_BDTR) || \ + ((__BASE__) == TIM_DMABASE_OR) || \ + ((__BASE__) == TIM_DMABASE_CCMR3) || \ + ((__BASE__) == TIM_DMABASE_CCR5) || \ + ((__BASE__) == TIM_DMABASE_CCR6) || \ + ((__BASE__) == TIM_DMABASE_AF1) || \ + ((__BASE__) == TIM_DMABASE_AF2)) +#else +#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \ + ((__BASE__) == TIM_DMABASE_CR2) || \ + ((__BASE__) == TIM_DMABASE_SMCR) || \ + ((__BASE__) == TIM_DMABASE_DIER) || \ + ((__BASE__) == TIM_DMABASE_SR) || \ + ((__BASE__) == TIM_DMABASE_EGR) || \ + ((__BASE__) == TIM_DMABASE_CCMR1) || \ + ((__BASE__) == TIM_DMABASE_CCMR2) || \ + ((__BASE__) == TIM_DMABASE_CCER) || \ + ((__BASE__) == TIM_DMABASE_CNT) || \ + ((__BASE__) == TIM_DMABASE_PSC) || \ + ((__BASE__) == TIM_DMABASE_ARR) || \ + ((__BASE__) == TIM_DMABASE_RCR) || \ + ((__BASE__) == TIM_DMABASE_CCR1) || \ + ((__BASE__) == TIM_DMABASE_CCR2) || \ + ((__BASE__) == TIM_DMABASE_CCR3) || \ + ((__BASE__) == TIM_DMABASE_CCR4) || \ + ((__BASE__) == TIM_DMABASE_BDTR) || \ + ((__BASE__) == TIM_DMABASE_OR) || \ + ((__BASE__) == TIM_DMABASE_CCMR3) || \ + ((__BASE__) == TIM_DMABASE_CCR5) || \ + ((__BASE__) == TIM_DMABASE_CCR6)) +#endif /* TIM_AF1_BKINE && TIM_AF1_BKINE */ + +#define IS_TIM_EVENT_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFFFE00U) == 0x00000000U) && ((__SOURCE__) != 0x00000000U)) + +#define IS_TIM_COUNTER_MODE(__MODE__) (((__MODE__) == TIM_COUNTERMODE_UP) || \ + ((__MODE__) == TIM_COUNTERMODE_DOWN) || \ + ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED1) || \ + ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \ + ((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3)) + +#define IS_TIM_UIFREMAP_MODE(__MODE__) (((__MODE__) == TIM_UIFREMAP_DISABLE) || \ + ((__MODE__) == TIM_UIFREMAP_ENABLE)) + +#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \ + ((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \ + ((__DIV__) == TIM_CLOCKDIVISION_DIV4)) + +#define IS_TIM_AUTORELOAD_PRELOAD(PRELOAD) (((PRELOAD) == TIM_AUTORELOAD_PRELOAD_DISABLE) || \ + ((PRELOAD) == TIM_AUTORELOAD_PRELOAD_ENABLE)) + +#define IS_TIM_FAST_STATE(__STATE__) (((__STATE__) == TIM_OCFAST_DISABLE) || \ + ((__STATE__) == TIM_OCFAST_ENABLE)) + +#define IS_TIM_OC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCPOLARITY_HIGH) || \ + ((__POLARITY__) == TIM_OCPOLARITY_LOW)) + +#define IS_TIM_OCN_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_OCNPOLARITY_HIGH) || \ + ((__POLARITY__) == TIM_OCNPOLARITY_LOW)) + +#define IS_TIM_OCIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCIDLESTATE_SET) || \ + ((__STATE__) == TIM_OCIDLESTATE_RESET)) + +#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \ + ((__STATE__) == TIM_OCNIDLESTATE_RESET)) + +#define IS_TIM_ENCODERINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_RISING) || \ + ((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_FALLING)) + +#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \ + ((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \ + ((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE)) + +#define IS_TIM_IC_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_ICSELECTION_DIRECTTI) || \ + ((__SELECTION__) == TIM_ICSELECTION_INDIRECTTI) || \ + ((__SELECTION__) == TIM_ICSELECTION_TRC)) + +#define IS_TIM_IC_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_ICPSC_DIV1) || \ + ((__PRESCALER__) == TIM_ICPSC_DIV2) || \ + ((__PRESCALER__) == TIM_ICPSC_DIV4) || \ + ((__PRESCALER__) == TIM_ICPSC_DIV8)) + +#define IS_TIM_CCX_CHANNEL(__INSTANCE__, __CHANNEL__) (IS_TIM_CCX_INSTANCE(__INSTANCE__, __CHANNEL__) && \ + ((__CHANNEL__) != (TIM_CHANNEL_5)) && \ + ((__CHANNEL__) != (TIM_CHANNEL_6))) + +#define IS_TIM_OPM_MODE(__MODE__) (((__MODE__) == TIM_OPMODE_SINGLE) || \ + ((__MODE__) == TIM_OPMODE_REPETITIVE)) + +#define IS_TIM_ENCODER_MODE(__MODE__) (((__MODE__) == TIM_ENCODERMODE_TI1) || \ + ((__MODE__) == TIM_ENCODERMODE_TI2) || \ + ((__MODE__) == TIM_ENCODERMODE_TI12)) + +#define IS_TIM_DMA_SOURCE(__SOURCE__) ((((__SOURCE__) & 0xFFFF80FFU) == 0x00000000U) && ((__SOURCE__) != 0x00000000U)) + +#define IS_TIM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2) || \ + ((__CHANNEL__) == TIM_CHANNEL_3) || \ + ((__CHANNEL__) == TIM_CHANNEL_4) || \ + ((__CHANNEL__) == TIM_CHANNEL_5) || \ + ((__CHANNEL__) == TIM_CHANNEL_6) || \ + ((__CHANNEL__) == TIM_CHANNEL_ALL)) + +#define IS_TIM_OPM_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2)) + +#define IS_TIM_PERIOD(__HANDLE__, __PERIOD__) ((IS_TIM_32B_COUNTER_INSTANCE(((__HANDLE__)->Instance)) == 0U) ? \ + (((__PERIOD__) > 0U) && ((__PERIOD__) <= 0x0000FFFFU)) : \ + ((__PERIOD__) > 0U)) + +#define IS_TIM_COMPLEMENTARY_CHANNELS(__CHANNEL__) (((__CHANNEL__) == TIM_CHANNEL_1) || \ + ((__CHANNEL__) == TIM_CHANNEL_2) || \ + ((__CHANNEL__) == TIM_CHANNEL_3)) + +#define IS_TIM_CLOCKSOURCE(__CLOCK__) (((__CLOCK__) == TIM_CLOCKSOURCE_INTERNAL) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE1) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ETRMODE2) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_TI1ED) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_TI1) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_TI2) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR0) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR1) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR2) || \ + ((__CLOCK__) == TIM_CLOCKSOURCE_ITR3)) + +#define IS_TIM_CLOCKPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLOCKPOLARITY_INVERTED) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_NONINVERTED) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_RISING) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_FALLING) || \ + ((__POLARITY__) == TIM_CLOCKPOLARITY_BOTHEDGE)) + +#define IS_TIM_CLOCKPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV1) || \ + ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV2) || \ + ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV4) || \ + ((__PRESCALER__) == TIM_CLOCKPRESCALER_DIV8)) + +#define IS_TIM_CLOCKFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_CLEARINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_CLEARINPUTPOLARITY_INVERTED) || \ + ((__POLARITY__) == TIM_CLEARINPUTPOLARITY_NONINVERTED)) + +#define IS_TIM_CLEARINPUT_PRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV1) || \ + ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV2) || \ + ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV4) || \ + ((__PRESCALER__) == TIM_CLEARINPUTPRESCALER_DIV8)) + +#define IS_TIM_CLEARINPUT_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_OSSR_STATE(__STATE__) (((__STATE__) == TIM_OSSR_ENABLE) || \ + ((__STATE__) == TIM_OSSR_DISABLE)) + +#define IS_TIM_OSSI_STATE(__STATE__) (((__STATE__) == TIM_OSSI_ENABLE) || \ + ((__STATE__) == TIM_OSSI_DISABLE)) + +#define IS_TIM_LOCK_LEVEL(__LEVEL__) (((__LEVEL__) == TIM_LOCKLEVEL_OFF) || \ + ((__LEVEL__) == TIM_LOCKLEVEL_1) || \ + ((__LEVEL__) == TIM_LOCKLEVEL_2) || \ + ((__LEVEL__) == TIM_LOCKLEVEL_3)) + +#define IS_TIM_BREAK_FILTER(__BRKFILTER__) ((__BRKFILTER__) <= 0xFUL) + +#define IS_TIM_BREAK_STATE(__STATE__) (((__STATE__) == TIM_BREAK_ENABLE) || \ + ((__STATE__) == TIM_BREAK_DISABLE)) + +#define IS_TIM_BREAK_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAKPOLARITY_LOW) || \ + ((__POLARITY__) == TIM_BREAKPOLARITY_HIGH)) + +#define IS_TIM_BREAK2_STATE(__STATE__) (((__STATE__) == TIM_BREAK2_ENABLE) || \ + ((__STATE__) == TIM_BREAK2_DISABLE)) + +#define IS_TIM_BREAK2_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAK2POLARITY_LOW) || \ + ((__POLARITY__) == TIM_BREAK2POLARITY_HIGH)) + +#define IS_TIM_AUTOMATIC_OUTPUT_STATE(__STATE__) (((__STATE__) == TIM_AUTOMATICOUTPUT_ENABLE) || \ + ((__STATE__) == TIM_AUTOMATICOUTPUT_DISABLE)) + +#define IS_TIM_GROUPCH5(__OCREF__) ((((__OCREF__) & 0x1FFFFFFFU) == 0x00000000U)) + +#define IS_TIM_TRGO_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO_RESET) || \ + ((__SOURCE__) == TIM_TRGO_ENABLE) || \ + ((__SOURCE__) == TIM_TRGO_UPDATE) || \ + ((__SOURCE__) == TIM_TRGO_OC1) || \ + ((__SOURCE__) == TIM_TRGO_OC1REF) || \ + ((__SOURCE__) == TIM_TRGO_OC2REF) || \ + ((__SOURCE__) == TIM_TRGO_OC3REF) || \ + ((__SOURCE__) == TIM_TRGO_OC4REF)) + +#define IS_TIM_TRGO2_SOURCE(__SOURCE__) (((__SOURCE__) == TIM_TRGO2_RESET) || \ + ((__SOURCE__) == TIM_TRGO2_ENABLE) || \ + ((__SOURCE__) == TIM_TRGO2_UPDATE) || \ + ((__SOURCE__) == TIM_TRGO2_OC1) || \ + ((__SOURCE__) == TIM_TRGO2_OC1REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC2REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC3REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC3REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC4REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC5REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC6REF) || \ + ((__SOURCE__) == TIM_TRGO2_OC4REF_RISINGFALLING) || \ + ((__SOURCE__) == TIM_TRGO2_OC6REF_RISINGFALLING) || \ + ((__SOURCE__) == TIM_TRGO2_OC4REF_RISING_OC6REF_RISING) || \ + ((__SOURCE__) == TIM_TRGO2_OC4REF_RISING_OC6REF_FALLING) || \ + ((__SOURCE__) == TIM_TRGO2_OC5REF_RISING_OC6REF_RISING) || \ + ((__SOURCE__) == TIM_TRGO2_OC5REF_RISING_OC6REF_FALLING)) + +#define IS_TIM_MSM_STATE(__STATE__) (((__STATE__) == TIM_MASTERSLAVEMODE_ENABLE) || \ + ((__STATE__) == TIM_MASTERSLAVEMODE_DISABLE)) + +#define IS_TIM_SLAVE_MODE(__MODE__) (((__MODE__) == TIM_SLAVEMODE_DISABLE) || \ + ((__MODE__) == TIM_SLAVEMODE_RESET) || \ + ((__MODE__) == TIM_SLAVEMODE_GATED) || \ + ((__MODE__) == TIM_SLAVEMODE_TRIGGER) || \ + ((__MODE__) == TIM_SLAVEMODE_EXTERNAL1) || \ + ((__MODE__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER)) + +#define IS_TIM_PWM_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_PWM1) || \ + ((__MODE__) == TIM_OCMODE_PWM2) || \ + ((__MODE__) == TIM_OCMODE_COMBINED_PWM1) || \ + ((__MODE__) == TIM_OCMODE_COMBINED_PWM2) || \ + ((__MODE__) == TIM_OCMODE_ASYMMETRIC_PWM1) || \ + ((__MODE__) == TIM_OCMODE_ASYMMETRIC_PWM2)) + +#define IS_TIM_OC_MODE(__MODE__) (((__MODE__) == TIM_OCMODE_TIMING) || \ + ((__MODE__) == TIM_OCMODE_ACTIVE) || \ + ((__MODE__) == TIM_OCMODE_INACTIVE) || \ + ((__MODE__) == TIM_OCMODE_TOGGLE) || \ + ((__MODE__) == TIM_OCMODE_FORCED_ACTIVE) || \ + ((__MODE__) == TIM_OCMODE_FORCED_INACTIVE) || \ + ((__MODE__) == TIM_OCMODE_RETRIGERRABLE_OPM1) || \ + ((__MODE__) == TIM_OCMODE_RETRIGERRABLE_OPM2)) + +#define IS_TIM_TRIGGER_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \ + ((__SELECTION__) == TIM_TS_ITR1) || \ + ((__SELECTION__) == TIM_TS_ITR2) || \ + ((__SELECTION__) == TIM_TS_ITR3) || \ + ((__SELECTION__) == TIM_TS_TI1F_ED) || \ + ((__SELECTION__) == TIM_TS_TI1FP1) || \ + ((__SELECTION__) == TIM_TS_TI2FP2) || \ + ((__SELECTION__) == TIM_TS_ETRF)) + +#define IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(__SELECTION__) (((__SELECTION__) == TIM_TS_ITR0) || \ + ((__SELECTION__) == TIM_TS_ITR1) || \ + ((__SELECTION__) == TIM_TS_ITR2) || \ + ((__SELECTION__) == TIM_TS_ITR3) || \ + ((__SELECTION__) == TIM_TS_NONE)) + +#define IS_TIM_TRIGGERPOLARITY(__POLARITY__) (((__POLARITY__) == TIM_TRIGGERPOLARITY_INVERTED ) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_NONINVERTED) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_RISING ) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_FALLING ) || \ + ((__POLARITY__) == TIM_TRIGGERPOLARITY_BOTHEDGE )) + +#define IS_TIM_TRIGGERPRESCALER(__PRESCALER__) (((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV1) || \ + ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV2) || \ + ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV4) || \ + ((__PRESCALER__) == TIM_TRIGGERPRESCALER_DIV8)) + +#define IS_TIM_TRIGGERFILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_TI1SELECTION(__TI1SELECTION__) (((__TI1SELECTION__) == TIM_TI1SELECTION_CH1) || \ + ((__TI1SELECTION__) == TIM_TI1SELECTION_XORCOMBINATION)) + +#define IS_TIM_DMA_LENGTH(__LENGTH__) (((__LENGTH__) == TIM_DMABURSTLENGTH_1TRANSFER) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_2TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_3TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_4TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_5TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_6TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_7TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_8TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_9TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_10TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_11TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_12TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_13TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_14TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_15TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_16TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_17TRANSFERS) || \ + ((__LENGTH__) == TIM_DMABURSTLENGTH_18TRANSFERS)) + +#define IS_TIM_DMA_DATA_LENGTH(LENGTH) (((LENGTH) >= 0x1U) && ((LENGTH) < 0x10000U)) + +#define IS_TIM_IC_FILTER(__ICFILTER__) ((__ICFILTER__) <= 0xFU) + +#define IS_TIM_DEADTIME(__DEADTIME__) ((__DEADTIME__) <= 0xFFU) + +#define IS_TIM_BREAK_SYSTEM(__CONFIG__) (((__CONFIG__) == TIM_BREAK_SYSTEM_ECC) || \ + ((__CONFIG__) == TIM_BREAK_SYSTEM_PVD) || \ + ((__CONFIG__) == TIM_BREAK_SYSTEM_SRAM_PARITY_ERROR) || \ + ((__CONFIG__) == TIM_BREAK_SYSTEM_LOCKUP)) + +#define IS_TIM_SLAVEMODE_TRIGGER_ENABLED(__TRIGGER__) (((__TRIGGER__) == TIM_SLAVEMODE_TRIGGER) || \ + ((__TRIGGER__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER)) + +#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\ + ((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U))) + +#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\ + ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC)) + +#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\ + ((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U)))) + +#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\ + ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP))) + +#define TIM_CHANNEL_STATE_GET(__HANDLE__, __CHANNEL__)\ + (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelState[0] :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelState[1] :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelState[2] :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? (__HANDLE__)->ChannelState[3] :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? (__HANDLE__)->ChannelState[4] :\ + (__HANDLE__)->ChannelState[5]) + +#define TIM_CHANNEL_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelState[0] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelState[1] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelState[2] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->ChannelState[3] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->ChannelState[4] = (__CHANNEL_STATE__)) :\ + ((__HANDLE__)->ChannelState[5] = (__CHANNEL_STATE__))) + +#define TIM_CHANNEL_STATE_SET_ALL(__HANDLE__, __CHANNEL_STATE__) do { \ + (__HANDLE__)->ChannelState[0] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[1] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[2] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[3] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[4] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelState[5] = \ + (__CHANNEL_STATE__); \ + } while(0) + +#define TIM_CHANNEL_N_STATE_GET(__HANDLE__, __CHANNEL__)\ + (((__CHANNEL__) == TIM_CHANNEL_1) ? (__HANDLE__)->ChannelNState[0] :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? (__HANDLE__)->ChannelNState[1] :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? (__HANDLE__)->ChannelNState[2] :\ + (__HANDLE__)->ChannelNState[3]) + +#define TIM_CHANNEL_N_STATE_SET(__HANDLE__, __CHANNEL__, __CHANNEL_STATE__) \ + (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->ChannelNState[0] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->ChannelNState[1] = (__CHANNEL_STATE__)) :\ + ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->ChannelNState[2] = (__CHANNEL_STATE__)) :\ + ((__HANDLE__)->ChannelNState[3] = (__CHANNEL_STATE__))) + +#define TIM_CHANNEL_N_STATE_SET_ALL(__HANDLE__, __CHANNEL_STATE__) do { \ + (__HANDLE__)->ChannelNState[0] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelNState[1] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelNState[2] = \ + (__CHANNEL_STATE__); \ + (__HANDLE__)->ChannelNState[3] = \ + (__CHANNEL_STATE__); \ + } while(0) + +/** + * @} + */ +/* End of private macros -----------------------------------------------------*/ + +/* Include TIM HAL Extended module */ +#include "stm32f7xx_hal_tim_ex.h" + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup TIM_Exported_Functions TIM Exported Functions + * @{ + */ + +/** @addtogroup TIM_Exported_Functions_Group1 TIM Time Base functions + * @brief Time Base functions + * @{ + */ +/* Time Base functions ********************************************************/ +HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, const uint32_t *pData, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group2 TIM Output Compare functions + * @brief TIM Output Compare functions + * @{ + */ +/* Timer Output Compare functions *********************************************/ +HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length); +HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group3 TIM PWM functions + * @brief TIM PWM functions + * @{ + */ +/* Timer PWM functions ********************************************************/ +HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length); +HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group4 TIM Input Capture functions + * @brief TIM Input Capture functions + * @{ + */ +/* Timer Input Capture functions **********************************************/ +HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group5 TIM One Pulse functions + * @brief TIM One Pulse functions + * @{ + */ +/* Timer One Pulse functions **************************************************/ +HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode); +HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group6 TIM Encoder functions + * @brief TIM Encoder functions + * @{ + */ +/* Timer Encoder functions ****************************************************/ +HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, const TIM_Encoder_InitTypeDef *sConfig); +HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim); +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, + uint32_t *pData2, uint16_t Length); +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIM_Exported_Functions_Group7 TIM IRQ handler management + * @brief IRQ handler management + * @{ + */ +/* Interrupt Handler functions ***********************************************/ +void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions + * @brief Peripheral Control functions + * @{ + */ +/* Control functions *********************************************************/ +HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_IC_InitTypeDef *sConfig, + uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, + uint32_t OutputChannel, uint32_t InputChannel); +HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, + const TIM_ClearInputConfigTypeDef *sClearInputConfig, + uint32_t Channel); +HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef *sClockSourceConfig); +HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection); +HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig); +HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef *sSlaveConfig); +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, + uint32_t BurstLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc); +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength); +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc); +HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource); +uint32_t HAL_TIM_ReadCapturedValue(const TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions + * @brief TIM Callbacks functions + * @{ + */ +/* Callback in non blocking modes (Interrupt and DMA) *************************/ +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim); + +/* Callbacks Register/UnRegister functions ***********************************/ +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, + pTIM_CallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions + * @brief Peripheral State functions + * @{ + */ +/* Peripheral State functions ************************************************/ +HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(const TIM_HandleTypeDef *htim); + +/* Peripheral Channel state functions ************************************************/ +HAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(const TIM_HandleTypeDef *htim); +HAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(const TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(const TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** + * @} + */ +/* End of exported functions -------------------------------------------------*/ + +/* Private functions----------------------------------------------------------*/ +/** @defgroup TIM_Private_Functions TIM Private Functions + * @{ + */ +void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure); +void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter); +void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, + uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter); + +void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma); +void TIM_DMAError(DMA_HandleTypeDef *hdma); +void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma); +void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma); +void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +void TIM_ResetCallback(TIM_HandleTypeDef *htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ +/* End of private functions --------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F7xx_HAL_TIM_H */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h new file mode 100644 index 0000000..11b372f --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h @@ -0,0 +1,360 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_tim_ex.h + * @author MCD Application Team + * @brief Header file of TIM HAL Extended module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_HAL_TIM_EX_H +#define STM32F7xx_HAL_TIM_EX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup TIMEx + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Types TIM Extended Exported Types + * @{ + */ + +/** + * @brief TIM Hall sensor Configuration Structure definition + */ + +typedef struct +{ + uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_Input_Capture_Polarity */ + + uint32_t IC1Prescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ + + uint32_t IC1Filter; /*!< Specifies the input capture filter. + This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */ + + uint32_t Commutation_Delay; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF */ +} TIM_HallSensor_InitTypeDef; +#if defined(TIM_BREAK_INPUT_SUPPORT) + +/** + * @brief TIM Break/Break2 input configuration + */ +typedef struct +{ + uint32_t Source; /*!< Specifies the source of the timer break input. + This parameter can be a value of @ref TIMEx_Break_Input_Source */ + uint32_t Enable; /*!< Specifies whether or not the break input source is enabled. + This parameter can be a value of @ref TIMEx_Break_Input_Source_Enable */ + uint32_t Polarity; /*!< Specifies the break input source polarity. + This parameter can be a value of @ref TIMEx_Break_Input_Source_Polarity + Not relevant when analog watchdog output of the DFSDM1 used as break input source */ +} TIMEx_BreakInputConfigTypeDef; + +#endif /* TIM_BREAK_INPUT_SUPPORT */ +/** + * @} + */ +/* End of exported types -----------------------------------------------------*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Constants TIM Extended Exported Constants + * @{ + */ + +/** @defgroup TIMEx_Remap TIM Extended Remapping + * @{ + */ +#define TIM_TIM2_TIM8_TRGO (0x00000000U) +#define TIM_TIM2_ETH_PTP (0x00000400U) +#define TIM_TIM2_USBFS_SOF (0x00000800U) +#define TIM_TIM2_USBHS_SOF (0x00000C00U) +#define TIM_TIM5_GPIO (0x00000000U) +#define TIM_TIM5_LSI (0x00000040U) +#define TIM_TIM5_LSE (0x00000080U) +#define TIM_TIM5_RTC (0x000000C0U) +#define TIM_TIM11_GPIO (0x00000000U) +#define TIM_TIM11_SPDIFRX (0x00000001U) +#define TIM_TIM11_HSE (0x00000002U) +#define TIM_TIM11_MCO1 (0x00000003U) +/** + * @} + */ +#if defined(TIM_BREAK_INPUT_SUPPORT) + +/** @defgroup TIMEx_Break_Input TIM Extended Break input + * @{ + */ +#define TIM_BREAKINPUT_BRK 0x00000001U /*!< Timer break input */ +#define TIM_BREAKINPUT_BRK2 0x00000002U /*!< Timer break2 input */ +/** + * @} + */ + +/** @defgroup TIMEx_Break_Input_Source TIM Extended Break input source + * @{ + */ +#define TIM_BREAKINPUTSOURCE_BKIN (0x00000001U) /*!< An external source (GPIO) is connected to the BKIN pin */ +#define TIM_BREAKINPUTSOURCE_DFSDM1 (0x00000008U) /*!< The analog watchdog output of the DFSDM1 peripheral is connected to the break input */ +/** + * @} + */ + +/** @defgroup TIMEx_Break_Input_Source_Enable TIM Extended Break input source enabling + * @{ + */ +#define TIM_BREAKINPUTSOURCE_DISABLE 0x00000000U /*!< Break input source is disabled */ +#define TIM_BREAKINPUTSOURCE_ENABLE 0x00000001U /*!< Break input source is enabled */ +/** + * @} + */ + +/** @defgroup TIMEx_Break_Input_Source_Polarity TIM Extended Break input polarity + * @{ + */ +#define TIM_BREAKINPUTSOURCE_POLARITY_LOW 0x00000001U /*!< Break input source is active low */ +#define TIM_BREAKINPUTSOURCE_POLARITY_HIGH 0x00000000U /*!< Break input source is active_high */ +/** + * @} + */ +#endif /* TIM_BREAK_INPUT_SUPPORT */ + +/** + * @} + */ +/* End of exported constants -------------------------------------------------*/ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Macros TIM Extended Exported Macros + * @{ + */ + +/** + * @} + */ +/* End of exported macro -----------------------------------------------------*/ + +/* Private macro -------------------------------------------------------------*/ +/** @defgroup TIMEx_Private_Macros TIM Extended Private Macros + * @{ + */ +#define IS_TIM_REMAP(__TIM_REMAP__) (((__TIM_REMAP__) == TIM_TIM2_TIM8_TRGO)||\ + ((__TIM_REMAP__) == TIM_TIM2_ETH_PTP) ||\ + ((__TIM_REMAP__) == TIM_TIM2_USBFS_SOF)||\ + ((__TIM_REMAP__) == TIM_TIM2_USBHS_SOF)||\ + ((__TIM_REMAP__) == TIM_TIM5_GPIO) ||\ + ((__TIM_REMAP__) == TIM_TIM5_LSI) ||\ + ((__TIM_REMAP__) == TIM_TIM5_LSE) ||\ + ((__TIM_REMAP__) == TIM_TIM5_RTC) ||\ + ((__TIM_REMAP__) == TIM_TIM11_GPIO) ||\ + ((__TIM_REMAP__) == TIM_TIM11_SPDIFRX) ||\ + ((__TIM_REMAP__) == TIM_TIM11_HSE) ||\ + ((__TIM_REMAP__) == TIM_TIM11_MCO1)) +#if defined(TIM_BREAK_INPUT_SUPPORT) + +#define IS_TIM_BREAKINPUT(__BREAKINPUT__) (((__BREAKINPUT__) == TIM_BREAKINPUT_BRK) || \ + ((__BREAKINPUT__) == TIM_BREAKINPUT_BRK2)) + +#define IS_TIM_BREAKINPUTSOURCE(__SOURCE__) (((__SOURCE__) == TIM_BREAKINPUTSOURCE_BKIN) || \ + ((__SOURCE__) == TIM_BREAKINPUTSOURCE_DFSDM)) + +#define IS_TIM_BREAKINPUTSOURCE_STATE(__STATE__) (((__STATE__) == TIM_BREAKINPUTSOURCE_DISABLE) || \ + ((__STATE__) == TIM_BREAKINPUTSOURCE_ENABLE)) + +#define IS_TIM_BREAKINPUTSOURCE_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_BREAKINPUTSOURCE_POLARITY_LOW) || \ + ((__POLARITY__) == TIM_BREAKINPUTSOURCE_POLARITY_HIGH)) +#endif /* TIM_BREAK_INPUT_SUPPORT */ + +/** + * @} + */ +/* End of private macro ------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup TIMEx_Exported_Functions TIM Extended Exported Functions + * @{ + */ + +/** @addtogroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions + * @brief Timer Hall Sensor functions + * @{ + */ +/* Timer Hall Sensor functions **********************************************/ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, const TIM_HallSensor_InitTypeDef *sConfig); +HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim); + +void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim); +void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim); + +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim); +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim); +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length); +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions + * @brief Timer Complementary Output Compare functions + * @{ + */ +/* Timer Complementary Output Compare functions *****************************/ +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); + +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); + +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length); +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions + * @brief Timer Complementary PWM functions + * @{ + */ +/* Timer Complementary PWM functions ****************************************/ +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel); + +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel); +/* Non-Blocking mode: DMA */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length); +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions + * @brief Timer Complementary One Pulse functions + * @{ + */ +/* Timer Complementary One Pulse functions **********************************/ +/* Blocking mode: Polling */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel); + +/* Non-Blocking mode: Interrupt */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions + * @brief Peripheral Control functions + * @{ + */ +/* Extended Control functions ************************************************/ +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource); +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource); +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource); +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig); +HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, + const TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig); +#if defined(TIM_BREAK_INPUT_SUPPORT) +HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput, + const TIMEx_BreakInputConfigTypeDef *sBreakInputConfig); +#endif /* TIM_BREAK_INPUT_SUPPORT */ +HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels); +HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group6 Extended Callbacks functions + * @brief Extended Callbacks functions + * @{ + */ +/* Extended Callback **********************************************************/ +void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim); +void HAL_TIMEx_CommutHalfCpltCallback(TIM_HandleTypeDef *htim); +void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim); +void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim); +/** + * @} + */ + +/** @addtogroup TIMEx_Exported_Functions_Group7 Extended Peripheral State functions + * @brief Extended Peripheral State functions + * @{ + */ +/* Extended Peripheral State functions ***************************************/ +HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(const TIM_HandleTypeDef *htim); +HAL_TIM_ChannelStateTypeDef HAL_TIMEx_GetChannelNState(const TIM_HandleTypeDef *htim, uint32_t ChannelN); +/** + * @} + */ + +/** + * @} + */ +/* End of exported functions -------------------------------------------------*/ + +/* Private functions----------------------------------------------------------*/ +/** @addtogroup TIMEx_Private_Functions TIM Extended Private Functions + * @{ + */ +void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma); +void TIMEx_DMACommutationHalfCplt(DMA_HandleTypeDef *hdma); +/** + * @} + */ +/* End of private functions --------------------------------------------------*/ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32F7xx_HAL_TIM_EX_H */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_adc.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_adc.h new file mode 100644 index 0000000..55a34ae --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_adc.h @@ -0,0 +1,4730 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_adc.h + * @author MCD Application Team + * @brief Header file of ADC LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_ADC_H +#define __STM32F7xx_LL_ADC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (ADC1) || defined (ADC2) || defined (ADC3) + +/** @defgroup ADC_LL ADC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup ADC_LL_Private_Constants ADC Private Constants + * @{ + */ + +/* Internal mask for ADC group regular sequencer: */ +/* To select into literal LL_ADC_REG_RANK_x the relevant bits for: */ +/* - sequencer register offset */ +/* - sequencer rank bits position into the selected register */ + +/* Internal register offset for ADC group regular sequencer configuration */ +/* (offset placed into a spare area of literal definition) */ +#define ADC_SQR1_REGOFFSET 0x00000000U +#define ADC_SQR2_REGOFFSET 0x00000100U +#define ADC_SQR3_REGOFFSET 0x00000200U +#define ADC_SQR4_REGOFFSET 0x00000300U + +#define ADC_REG_SQRX_REGOFFSET_MASK (ADC_SQR1_REGOFFSET | ADC_SQR2_REGOFFSET | ADC_SQR3_REGOFFSET | ADC_SQR4_REGOFFSET) +#define ADC_REG_RANK_ID_SQRX_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0) + +/* Definition of ADC group regular sequencer bits information to be inserted */ +/* into ADC group regular sequencer ranks literals definition. */ +#define ADC_REG_RANK_1_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ1) */ +#define ADC_REG_RANK_2_SQRX_BITOFFSET_POS ( 5U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ2) */ +#define ADC_REG_RANK_3_SQRX_BITOFFSET_POS (10U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ3) */ +#define ADC_REG_RANK_4_SQRX_BITOFFSET_POS (15U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ4) */ +#define ADC_REG_RANK_5_SQRX_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ5) */ +#define ADC_REG_RANK_6_SQRX_BITOFFSET_POS (25U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ6) */ +#define ADC_REG_RANK_7_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ7) */ +#define ADC_REG_RANK_8_SQRX_BITOFFSET_POS ( 5U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ8) */ +#define ADC_REG_RANK_9_SQRX_BITOFFSET_POS (10U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ9) */ +#define ADC_REG_RANK_10_SQRX_BITOFFSET_POS (15U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ10) */ +#define ADC_REG_RANK_11_SQRX_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ11) */ +#define ADC_REG_RANK_12_SQRX_BITOFFSET_POS (25U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ12) */ +#define ADC_REG_RANK_13_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ13) */ +#define ADC_REG_RANK_14_SQRX_BITOFFSET_POS ( 5U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ14) */ +#define ADC_REG_RANK_15_SQRX_BITOFFSET_POS (10U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ15) */ +#define ADC_REG_RANK_16_SQRX_BITOFFSET_POS (15U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ16) */ + +/* Internal mask for ADC group injected sequencer: */ +/* To select into literal LL_ADC_INJ_RANK_x the relevant bits for: */ +/* - data register offset */ +/* - offset register offset */ +/* - sequencer rank bits position into the selected register */ + +/* Internal register offset for ADC group injected data register */ +/* (offset placed into a spare area of literal definition) */ +#define ADC_JDR1_REGOFFSET 0x00000000U +#define ADC_JDR2_REGOFFSET 0x00000100U +#define ADC_JDR3_REGOFFSET 0x00000200U +#define ADC_JDR4_REGOFFSET 0x00000300U + +/* Internal register offset for ADC group injected offset configuration */ +/* (offset placed into a spare area of literal definition) */ +#define ADC_JOFR1_REGOFFSET 0x00000000U +#define ADC_JOFR2_REGOFFSET 0x00001000U +#define ADC_JOFR3_REGOFFSET 0x00002000U +#define ADC_JOFR4_REGOFFSET 0x00003000U + +#define ADC_INJ_JDRX_REGOFFSET_MASK (ADC_JDR1_REGOFFSET | ADC_JDR2_REGOFFSET | ADC_JDR3_REGOFFSET | ADC_JDR4_REGOFFSET) +#define ADC_INJ_JOFRX_REGOFFSET_MASK (ADC_JOFR1_REGOFFSET | ADC_JOFR2_REGOFFSET | ADC_JOFR3_REGOFFSET | ADC_JOFR4_REGOFFSET) +#define ADC_INJ_RANK_ID_JSQR_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0) + +/* Internal mask for ADC group regular trigger: */ +/* To select into literal LL_ADC_REG_TRIG_x the relevant bits for: */ +/* - regular trigger source */ +/* - regular trigger edge */ +#define ADC_REG_TRIG_EXT_EDGE_DEFAULT (ADC_CR2_EXTEN_0) /* Trigger edge set to rising edge (default setting for compatibility with some ADC on other STM32 families having this setting set by HW default value) */ + +/* Mask containing trigger source masks for each of possible */ +/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */ +/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */ +#define ADC_REG_TRIG_SOURCE_MASK (((LL_ADC_REG_TRIG_SOFTWARE & ADC_CR2_EXTSEL) >> (4U * 0U)) | \ + ((ADC_CR2_EXTSEL) >> (4U * 1U)) | \ + ((ADC_CR2_EXTSEL) >> (4U * 2U)) | \ + ((ADC_CR2_EXTSEL) >> (4U * 3U))) + +/* Mask containing trigger edge masks for each of possible */ +/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */ +/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */ +#define ADC_REG_TRIG_EDGE_MASK (((LL_ADC_REG_TRIG_SOFTWARE & ADC_CR2_EXTEN) >> (4U * 0U)) | \ + ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) >> (4U * 1U)) | \ + ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) >> (4U * 2U)) | \ + ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) >> (4U * 3U))) + +/* Definition of ADC group regular trigger bits information. */ +#define ADC_REG_TRIG_EXTSEL_BITOFFSET_POS (24U) /* Value equivalent to POSITION_VAL(ADC_CR2_EXTSEL) */ +#define ADC_REG_TRIG_EXTEN_BITOFFSET_POS (28U) /* Value equivalent to POSITION_VAL(ADC_CR2_EXTEN) */ + + + +/* Internal mask for ADC group injected trigger: */ +/* To select into literal LL_ADC_INJ_TRIG_x the relevant bits for: */ +/* - injected trigger source */ +/* - injected trigger edge */ +#define ADC_INJ_TRIG_EXT_EDGE_DEFAULT (ADC_CR2_JEXTEN_0) /* Trigger edge set to rising edge (default setting for compatibility with some ADC on other STM32 families having this setting set by HW default value) */ + +/* Mask containing trigger source masks for each of possible */ +/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */ +/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */ +#define ADC_INJ_TRIG_SOURCE_MASK (((LL_ADC_REG_TRIG_SOFTWARE & ADC_CR2_JEXTSEL) >> (4U * 0U)) | \ + ((ADC_CR2_JEXTSEL) >> (4U * 1U)) | \ + ((ADC_CR2_JEXTSEL) >> (4U * 2U)) | \ + ((ADC_CR2_JEXTSEL) >> (4U * 3U))) + +/* Mask containing trigger edge masks for each of possible */ +/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */ +/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */ +#define ADC_INJ_TRIG_EDGE_MASK (((LL_ADC_INJ_TRIG_SOFTWARE & ADC_CR2_JEXTEN) >> (4U * 0U)) | \ + ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) >> (4U * 1U)) | \ + ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) >> (4U * 2U)) | \ + ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) >> (4U * 3U))) + +/* Definition of ADC group injected trigger bits information. */ +#define ADC_INJ_TRIG_EXTSEL_BITOFFSET_POS (16U) /* Value equivalent to POSITION_VAL(ADC_CR2_JEXTSEL) */ +#define ADC_INJ_TRIG_EXTEN_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_CR2_JEXTEN) */ + +/* Internal mask for ADC channel: */ +/* To select into literal LL_ADC_CHANNEL_x the relevant bits for: */ +/* - channel identifier defined by number */ +/* - channel differentiation between external channels (connected to */ +/* GPIO pins) and internal channels (connected to internal paths) */ +/* - channel sampling time defined by SMPRx register offset */ +/* and SMPx bits positions into SMPRx register */ +#define ADC_CHANNEL_ID_NUMBER_MASK (ADC_CR1_AWDCH) +#define ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS ( 0U)/* Value equivalent to POSITION_VAL(ADC_CHANNEL_ID_NUMBER_MASK) */ +#define ADC_CHANNEL_ID_MASK (ADC_CHANNEL_ID_NUMBER_MASK | ADC_CHANNEL_ID_INTERNAL_CH_MASK) +/* Equivalent mask of ADC_CHANNEL_NUMBER_MASK aligned on register LSB (bit 0) */ +#define ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 0x0000001FU /* Equivalent to shift: (ADC_CHANNEL_NUMBER_MASK >> POSITION_VAL(ADC_CHANNEL_NUMBER_MASK)) */ + +/* Channel differentiation between external and internal channels */ +#define ADC_CHANNEL_ID_INTERNAL_CH 0x80000000U /* Marker of internal channel */ +#define ADC_CHANNEL_ID_INTERNAL_CH_2 0x40000000U /* Marker of internal channel for other ADC instances, in case of different ADC internal channels mapped on same channel number on different ADC instances */ +#define ADC_CHANNEL_DIFFERENCIATION_TEMPSENSOR_VBAT 0x10000000U /* Dummy bit for driver internal usage, not used in ADC channel setting registers CR1 or SQRx */ +#define ADC_CHANNEL_ID_INTERNAL_CH_MASK (ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2 | ADC_CHANNEL_DIFFERENCIATION_TEMPSENSOR_VBAT) + +/* Internal register offset for ADC channel sampling time configuration */ +/* (offset placed into a spare area of literal definition) */ +#define ADC_SMPR1_REGOFFSET 0x00000000U +#define ADC_SMPR2_REGOFFSET 0x02000000U +#define ADC_CHANNEL_SMPRX_REGOFFSET_MASK (ADC_SMPR1_REGOFFSET | ADC_SMPR2_REGOFFSET) + +#define ADC_CHANNEL_SMPx_BITOFFSET_MASK 0x01F00000U +#define ADC_CHANNEL_SMPx_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_CHANNEL_SMPx_BITOFFSET_MASK) */ + +/* Definition of channels ID number information to be inserted into */ +/* channels literals definition. */ +#define ADC_CHANNEL_0_NUMBER 0x00000000U +#define ADC_CHANNEL_1_NUMBER ( ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_2_NUMBER ( ADC_CR1_AWDCH_1 ) +#define ADC_CHANNEL_3_NUMBER ( ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_4_NUMBER ( ADC_CR1_AWDCH_2 ) +#define ADC_CHANNEL_5_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_6_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 ) +#define ADC_CHANNEL_7_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_8_NUMBER ( ADC_CR1_AWDCH_3 ) +#define ADC_CHANNEL_9_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_10_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 ) +#define ADC_CHANNEL_11_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_12_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 ) +#define ADC_CHANNEL_13_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_14_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 ) +#define ADC_CHANNEL_15_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_16_NUMBER (ADC_CR1_AWDCH_4 ) +#define ADC_CHANNEL_17_NUMBER (ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_18_NUMBER (ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_1 ) + +/* Definition of channels sampling time information to be inserted into */ +/* channels literals definition. */ +#define ADC_CHANNEL_0_SMP (ADC_SMPR2_REGOFFSET | (( 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP0) */ +#define ADC_CHANNEL_1_SMP (ADC_SMPR2_REGOFFSET | (( 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP1) */ +#define ADC_CHANNEL_2_SMP (ADC_SMPR2_REGOFFSET | (( 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP2) */ +#define ADC_CHANNEL_3_SMP (ADC_SMPR2_REGOFFSET | (( 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP3) */ +#define ADC_CHANNEL_4_SMP (ADC_SMPR2_REGOFFSET | ((12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP4) */ +#define ADC_CHANNEL_5_SMP (ADC_SMPR2_REGOFFSET | ((15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP5) */ +#define ADC_CHANNEL_6_SMP (ADC_SMPR2_REGOFFSET | ((18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP6) */ +#define ADC_CHANNEL_7_SMP (ADC_SMPR2_REGOFFSET | ((21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP7) */ +#define ADC_CHANNEL_8_SMP (ADC_SMPR2_REGOFFSET | ((24U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP8) */ +#define ADC_CHANNEL_9_SMP (ADC_SMPR2_REGOFFSET | ((27U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP9) */ +#define ADC_CHANNEL_10_SMP (ADC_SMPR1_REGOFFSET | (( 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP10) */ +#define ADC_CHANNEL_11_SMP (ADC_SMPR1_REGOFFSET | (( 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP11) */ +#define ADC_CHANNEL_12_SMP (ADC_SMPR1_REGOFFSET | (( 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP12) */ +#define ADC_CHANNEL_13_SMP (ADC_SMPR1_REGOFFSET | (( 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP13) */ +#define ADC_CHANNEL_14_SMP (ADC_SMPR1_REGOFFSET | ((12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP14) */ +#define ADC_CHANNEL_15_SMP (ADC_SMPR1_REGOFFSET | ((15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP15) */ +#define ADC_CHANNEL_16_SMP (ADC_SMPR1_REGOFFSET | ((18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP16) */ +#define ADC_CHANNEL_17_SMP (ADC_SMPR1_REGOFFSET | ((21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP17) */ +#define ADC_CHANNEL_18_SMP (ADC_SMPR1_REGOFFSET | ((24U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP18) */ + +/* Internal mask for ADC analog watchdog: */ +/* To select into literals LL_ADC_AWD_CHANNELx_xxx the relevant bits for: */ +/* (concatenation of multiple bits used in different analog watchdogs, */ +/* (feature of several watchdogs not available on all STM32 families)). */ +/* - analog watchdog 1: monitored channel defined by number, */ +/* selection of ADC group (ADC groups regular and-or injected). */ + +/* Internal register offset for ADC analog watchdog channel configuration */ +#define ADC_AWD_CR1_REGOFFSET 0x00000000U + +#define ADC_AWD_CRX_REGOFFSET_MASK (ADC_AWD_CR1_REGOFFSET) + +#define ADC_AWD_CR1_CHANNEL_MASK (ADC_CR1_AWDCH | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) +#define ADC_AWD_CR_ALL_CHANNEL_MASK (ADC_AWD_CR1_CHANNEL_MASK) + +/* Internal register offset for ADC analog watchdog threshold configuration */ +#define ADC_AWD_TR1_HIGH_REGOFFSET 0x00000000U +#define ADC_AWD_TR1_LOW_REGOFFSET 0x00000001U +#define ADC_AWD_TRX_REGOFFSET_MASK (ADC_AWD_TR1_HIGH_REGOFFSET | ADC_AWD_TR1_LOW_REGOFFSET) + +/* ADC registers bits positions */ +#define ADC_CR1_RES_BITOFFSET_POS (24U) /* Value equivalent to POSITION_VAL(ADC_CR1_RES) */ +#define ADC_TR_HT_BITOFFSET_POS (16U) /* Value equivalent to POSITION_VAL(ADC_TR_HT) */ +/* ADC internal channels related definitions */ +/* Internal voltage reference VrefInt */ +#define VREFINT_CAL_ADDR VREFINT_CAL_ADDR_CMSIS /* Internal voltage reference, address of parameter VREFINT_CAL: VrefInt ADC raw data acquired at temperature 30 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */ +#define VREFINT_CAL_VREF ( 3300U) /* Analog voltage reference (Vref+) value with which temperature sensor has been calibrated in production (tolerance: +-10 mV) (unit: mV). */ +/* Temperature sensor */ +#define TEMPSENSOR_CAL1_ADDR TEMPSENSOR_CAL1_ADDR_CMSIS /* Internal temperature sensor, address of parameter TS_CAL1: On STM32F7, temperature sensor ADC raw data acquired at temperature 30 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */ +#define TEMPSENSOR_CAL2_ADDR TEMPSENSOR_CAL2_ADDR_CMSIS /* Internal temperature sensor, address of parameter TS_CAL2: On STM32F7, temperature sensor ADC raw data acquired at temperature 110 DegC (tolerance: +-5 DegC), Vref+ = 3.3 V (tolerance: +-10 mV). */ +#define TEMPSENSOR_CAL1_TEMP (( int32_t) 30) /* Internal temperature sensor, temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL1_ADDR (tolerance: +-5 DegC) (unit: DegC). */ +#define TEMPSENSOR_CAL2_TEMP (( int32_t) 110) /* Internal temperature sensor, temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL2_ADDR (tolerance: +-5 DegC) (unit: DegC). */ +#define TEMPSENSOR_CAL_VREFANALOG ( 3300U) /* Analog voltage reference (Vref+) voltage with which temperature sensor has been calibrated in production (+-10 mV) (unit: mV). */ +/** + * @} + */ + + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup ADC_LL_Private_Macros ADC Private Macros + * @{ + */ + +/** + * @brief Driver macro reserved for internal use: isolate bits with the + * selected mask and shift them to the register LSB + * (shift mask on register position bit 0). + * @param __BITS__ Bits in register 32 bits + * @param __MASK__ Mask in register 32 bits + * @retval Bits in register 32 bits + */ +#define __ADC_MASK_SHIFT(__BITS__, __MASK__) \ + (((__BITS__) & (__MASK__)) >> POSITION_VAL((__MASK__))) + +/** + * @brief Driver macro reserved for internal use: set a pointer to + * a register from a register basis from which an offset + * is applied. + * @param __REG__ Register basis from which the offset is applied. + * @param __REG_OFFFSET__ Offset to be applied (unit number of registers). + * @retval Pointer to register address + */ +#define __ADC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \ + ((__IO uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U)))) + +/** + * @} + */ + + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup ADC_LL_ES_INIT ADC Exported Init structure + * @{ + */ + +/** + * @brief Structure definition of some features of ADC common parameters + * and multimode + * (all ADC instances belonging to the same ADC common instance). + * @note The setting of these parameters by function @ref LL_ADC_CommonInit() + * is conditioned to ADC instances state (all ADC instances + * sharing the same ADC common instance): + * All ADC instances sharing the same ADC common instance must be + * disabled. + */ +typedef struct +{ + uint32_t CommonClock; /*!< Set parameter common to several ADC: Clock source and prescaler. + This parameter can be a value of @ref ADC_LL_EC_COMMON_CLOCK_SOURCE + + This feature can be modified afterwards using unitary function @ref LL_ADC_SetCommonClock(). */ + + uint32_t Multimode; /*!< Set ADC multimode configuration to operate in independent mode or multimode (for devices with several ADC instances). + This parameter can be a value of @ref ADC_LL_EC_MULTI_MODE + + This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultimode(). */ + + uint32_t MultiDMATransfer; /*!< Set ADC multimode conversion data transfer: no transfer or transfer by DMA. + This parameter can be a value of @ref ADC_LL_EC_MULTI_DMA_TRANSFER + + This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultiDMATransfer(). */ + + uint32_t MultiTwoSamplingDelay; /*!< Set ADC multimode delay between 2 sampling phases. + This parameter can be a value of @ref ADC_LL_EC_MULTI_TWOSMP_DELAY + + This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultiTwoSamplingDelay(). */ + +} LL_ADC_CommonInitTypeDef; + +/** + * @brief Structure definition of some features of ADC instance. + * @note These parameters have an impact on ADC scope: ADC instance. + * Affects both group regular and group injected (availability + * of ADC group injected depends on STM32 families). + * Refer to corresponding unitary functions into + * @ref ADC_LL_EF_Configuration_ADC_Instance . + * @note The setting of these parameters by function @ref LL_ADC_Init() + * is conditioned to ADC state: + * ADC instance must be disabled. + * This condition is applied to all ADC features, for efficiency + * and compatibility over all STM32 families. However, the different + * features can be set under different ADC state conditions + * (setting possible with ADC enabled without conversion on going, + * ADC enabled with conversion on going, ...) + * Each feature can be updated afterwards with a unitary function + * and potentially with ADC in a different state than disabled, + * refer to description of each function for setting + * conditioned to ADC state. + */ +typedef struct +{ + uint32_t Resolution; /*!< Set ADC resolution. + This parameter can be a value of @ref ADC_LL_EC_RESOLUTION + + This feature can be modified afterwards using unitary function @ref LL_ADC_SetResolution(). */ + + uint32_t DataAlignment; /*!< Set ADC conversion data alignment. + This parameter can be a value of @ref ADC_LL_EC_DATA_ALIGN + + This feature can be modified afterwards using unitary function @ref LL_ADC_SetDataAlignment(). */ + + uint32_t SequencersScanMode; /*!< Set ADC scan selection. + This parameter can be a value of @ref ADC_LL_EC_SCAN_SELECTION + + This feature can be modified afterwards using unitary function @ref LL_ADC_SetSequencersScanMode(). */ + +} LL_ADC_InitTypeDef; + +/** + * @brief Structure definition of some features of ADC group regular. + * @note These parameters have an impact on ADC scope: ADC group regular. + * Refer to corresponding unitary functions into + * @ref ADC_LL_EF_Configuration_ADC_Group_Regular + * (functions with prefix "REG"). + * @note The setting of these parameters by function @ref LL_ADC_REG_Init() + * is conditioned to ADC state: + * ADC instance must be disabled. + * This condition is applied to all ADC features, for efficiency + * and compatibility over all STM32 families. However, the different + * features can be set under different ADC state conditions + * (setting possible with ADC enabled without conversion on going, + * ADC enabled with conversion on going, ...) + * Each feature can be updated afterwards with a unitary function + * and potentially with ADC in a different state than disabled, + * refer to description of each function for setting + * conditioned to ADC state. + */ +typedef struct +{ + uint32_t TriggerSource; /*!< Set ADC group regular conversion trigger source: internal (SW start) or from external IP (timer event, external interrupt line). + This parameter can be a value of @ref ADC_LL_EC_REG_TRIGGER_SOURCE + @note On this STM32 series, setting of external trigger edge is performed + using function @ref LL_ADC_REG_StartConversionExtTrig(). + + This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetTriggerSource(). */ + + uint32_t SequencerLength; /*!< Set ADC group regular sequencer length. + This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_SCAN_LENGTH + @note This parameter is discarded if scan mode is disabled (refer to parameter 'ADC_SequencersScanMode'). + + This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerLength(). */ + + uint32_t SequencerDiscont; /*!< Set ADC group regular sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks. + This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_DISCONT_MODE + @note This parameter has an effect only if group regular sequencer is enabled + (scan length of 2 ranks or more). + + This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerDiscont(). */ + + uint32_t ContinuousMode; /*!< Set ADC continuous conversion mode on ADC group regular, whether ADC conversions are performed in single mode (one conversion per trigger) or in continuous mode (after the first trigger, following conversions launched successively automatically). + This parameter can be a value of @ref ADC_LL_EC_REG_CONTINUOUS_MODE + Note: It is not possible to enable both ADC group regular continuous mode and discontinuous mode. + + This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetContinuousMode(). */ + + uint32_t DMATransfer; /*!< Set ADC group regular conversion data transfer: no transfer or transfer by DMA, and DMA requests mode. + This parameter can be a value of @ref ADC_LL_EC_REG_DMA_TRANSFER + + This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetDMATransfer(). */ + +} LL_ADC_REG_InitTypeDef; + +/** + * @brief Structure definition of some features of ADC group injected. + * @note These parameters have an impact on ADC scope: ADC group injected. + * Refer to corresponding unitary functions into + * @ref ADC_LL_EF_Configuration_ADC_Group_Regular + * (functions with prefix "INJ"). + * @note The setting of these parameters by function @ref LL_ADC_INJ_Init() + * is conditioned to ADC state: + * ADC instance must be disabled. + * This condition is applied to all ADC features, for efficiency + * and compatibility over all STM32 families. However, the different + * features can be set under different ADC state conditions + * (setting possible with ADC enabled without conversion on going, + * ADC enabled with conversion on going, ...) + * Each feature can be updated afterwards with a unitary function + * and potentially with ADC in a different state than disabled, + * refer to description of each function for setting + * conditioned to ADC state. + */ +typedef struct +{ + uint32_t TriggerSource; /*!< Set ADC group injected conversion trigger source: internal (SW start) or from external IP (timer event, external interrupt line). + This parameter can be a value of @ref ADC_LL_EC_INJ_TRIGGER_SOURCE + @note On this STM32 series, setting of external trigger edge is performed + using function @ref LL_ADC_INJ_StartConversionExtTrig(). + + This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTriggerSource(). */ + + uint32_t SequencerLength; /*!< Set ADC group injected sequencer length. + This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_SCAN_LENGTH + @note This parameter is discarded if scan mode is disabled (refer to parameter 'ADC_SequencersScanMode'). + + This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerLength(). */ + + uint32_t SequencerDiscont; /*!< Set ADC group injected sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks. + This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_DISCONT_MODE + @note This parameter has an effect only if group injected sequencer is enabled + (scan length of 2 ranks or more). + + This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerDiscont(). */ + + uint32_t TrigAuto; /*!< Set ADC group injected conversion trigger: independent or from ADC group regular. + This parameter can be a value of @ref ADC_LL_EC_INJ_TRIG_AUTO + Note: This parameter must be set to set to independent trigger if injected trigger source is set to an external trigger. + + This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTrigAuto(). */ + +} LL_ADC_INJ_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup ADC_LL_Exported_Constants ADC Exported Constants + * @{ + */ + +/** @defgroup ADC_LL_EC_FLAG ADC flags + * @brief Flags defines which can be used with LL_ADC_ReadReg function + * @{ + */ +#define LL_ADC_FLAG_STRT ADC_SR_STRT /*!< ADC flag ADC group regular conversion start */ +#define LL_ADC_FLAG_EOCS ADC_SR_EOC /*!< ADC flag ADC group regular end of unitary conversion or sequence conversions (to configure flag of end of conversion, use function @ref LL_ADC_REG_SetFlagEndOfConversion() ) */ +#define LL_ADC_FLAG_OVR ADC_SR_OVR /*!< ADC flag ADC group regular overrun */ +#define LL_ADC_FLAG_JSTRT ADC_SR_JSTRT /*!< ADC flag ADC group injected conversion start */ +#define LL_ADC_FLAG_JEOS ADC_SR_JEOC /*!< ADC flag ADC group injected end of sequence conversions (Note: on this STM32 series, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) */ +#define LL_ADC_FLAG_AWD1 ADC_SR_AWD /*!< ADC flag ADC analog watchdog 1 */ +#define LL_ADC_FLAG_EOCS_MST ADC_CSR_EOC1 /*!< ADC flag ADC multimode master group regular end of unitary conversion or sequence conversions (to configure flag of end of conversion, use function @ref LL_ADC_REG_SetFlagEndOfConversion() ) */ +#define LL_ADC_FLAG_EOCS_SLV1 ADC_CSR_EOC2 /*!< ADC flag ADC multimode slave 1 group regular end of unitary conversion or sequence conversions (to configure flag of end of conversion, use function @ref LL_ADC_REG_SetFlagEndOfConversion() ) */ +#define LL_ADC_FLAG_EOCS_SLV2 ADC_CSR_EOC3 /*!< ADC flag ADC multimode slave 2 group regular end of unitary conversion or sequence conversions (to configure flag of end of conversion, use function @ref LL_ADC_REG_SetFlagEndOfConversion() ) */ +#define LL_ADC_FLAG_OVR_MST ADC_CSR_OVR1 /*!< ADC flag ADC multimode master group regular overrun */ +#define LL_ADC_FLAG_OVR_SLV1 ADC_CSR_OVR2 /*!< ADC flag ADC multimode slave 1 group regular overrun */ +#define LL_ADC_FLAG_OVR_SLV2 ADC_CSR_OVR3 /*!< ADC flag ADC multimode slave 2 group regular overrun */ +#define LL_ADC_FLAG_JEOS_MST ADC_CSR_JEOC1 /*!< ADC flag ADC multimode master group injected end of sequence conversions (Note: on this STM32 series, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) */ +#define LL_ADC_FLAG_JEOS_SLV1 ADC_CSR_JEOC2 /*!< ADC flag ADC multimode slave 1 group injected end of sequence conversions (Note: on this STM32 series, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) */ +#define LL_ADC_FLAG_JEOS_SLV2 ADC_CSR_JEOC3 /*!< ADC flag ADC multimode slave 2 group injected end of sequence conversions (Note: on this STM32 series, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) */ +#define LL_ADC_FLAG_AWD1_MST ADC_CSR_AWD1 /*!< ADC flag ADC multimode master analog watchdog 1 of the ADC master */ +#define LL_ADC_FLAG_AWD1_SLV1 ADC_CSR_AWD2 /*!< ADC flag ADC multimode slave 1 analog watchdog 1 */ +#define LL_ADC_FLAG_AWD1_SLV2 ADC_CSR_AWD3 /*!< ADC flag ADC multimode slave 2 analog watchdog 1 */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_IT ADC interruptions for configuration (interruption enable or disable) + * @brief IT defines which can be used with LL_ADC_ReadReg and LL_ADC_WriteReg functions + * @{ + */ +#define LL_ADC_IT_EOCS ADC_CR1_EOCIE /*!< ADC interruption ADC group regular end of unitary conversion or sequence conversions (to configure flag of end of conversion, use function @ref LL_ADC_REG_SetFlagEndOfConversion() ) */ +#define LL_ADC_IT_OVR ADC_CR1_OVRIE /*!< ADC interruption ADC group regular overrun */ +#define LL_ADC_IT_JEOS ADC_CR1_JEOCIE /*!< ADC interruption ADC group injected end of sequence conversions (Note: on this STM32 series, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) */ +#define LL_ADC_IT_AWD1 ADC_CR1_AWDIE /*!< ADC interruption ADC analog watchdog 1 */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REGISTERS ADC registers compliant with specific purpose + * @{ + */ +/* List of ADC registers intended to be used (most commonly) with */ +/* DMA transfer. */ +/* Refer to function @ref LL_ADC_DMA_GetRegAddr(). */ +#define LL_ADC_DMA_REG_REGULAR_DATA 0x00000000U /* ADC group regular conversion data register (corresponding to register DR) to be used with ADC configured in independent mode. Without DMA transfer, register accessed by LL function @ref LL_ADC_REG_ReadConversionData32() and other functions @ref LL_ADC_REG_ReadConversionDatax() */ +#define LL_ADC_DMA_REG_REGULAR_DATA_MULTI 0x00000001U /* ADC group regular conversion data register (corresponding to register CDR) to be used with ADC configured in multimode (available on STM32 devices with several ADC instances). Without DMA transfer, register accessed by LL function @ref LL_ADC_REG_ReadMultiConversionData32() */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_COMMON_CLOCK_SOURCE ADC common - Clock source + * @{ + */ +#define LL_ADC_CLOCK_SYNC_PCLK_DIV2 0x00000000U /*!< ADC synchronous clock derived from AHB clock with prescaler division by 2 */ +#define LL_ADC_CLOCK_SYNC_PCLK_DIV4 ( ADC_CCR_ADCPRE_0) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 4 */ +#define LL_ADC_CLOCK_SYNC_PCLK_DIV6 (ADC_CCR_ADCPRE_1 ) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 6 */ +#define LL_ADC_CLOCK_SYNC_PCLK_DIV8 (ADC_CCR_ADCPRE_1 | ADC_CCR_ADCPRE_0) /*!< ADC synchronous clock derived from AHB clock with prescaler division by 8 */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_COMMON_PATH_INTERNAL ADC common - Measurement path to internal channels + * @{ + */ +/* Note: Other measurement paths to internal channels may be available */ +/* (connections to other peripherals). */ +/* If they are not listed below, they do not require any specific */ +/* path enable. In this case, Access to measurement path is done */ +/* only by selecting the corresponding ADC internal channel. */ +#define LL_ADC_PATH_INTERNAL_NONE 0x00000000U /*!< ADC measurement paths all disabled */ +#define LL_ADC_PATH_INTERNAL_VREFINT (ADC_CCR_TSVREFE) /*!< ADC measurement path to internal channel VrefInt */ +#define LL_ADC_PATH_INTERNAL_TEMPSENSOR (ADC_CCR_TSVREFE) /*!< ADC measurement path to internal channel temperature sensor */ +#define LL_ADC_PATH_INTERNAL_VBAT (ADC_CCR_VBATE) /*!< ADC measurement path to internal channel Vbat */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_RESOLUTION ADC instance - Resolution + * @{ + */ +#define LL_ADC_RESOLUTION_12B 0x00000000U /*!< ADC resolution 12 bits */ +#define LL_ADC_RESOLUTION_10B ( ADC_CR1_RES_0) /*!< ADC resolution 10 bits */ +#define LL_ADC_RESOLUTION_8B (ADC_CR1_RES_1 ) /*!< ADC resolution 8 bits */ +#define LL_ADC_RESOLUTION_6B (ADC_CR1_RES_1 | ADC_CR1_RES_0) /*!< ADC resolution 6 bits */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_DATA_ALIGN ADC instance - Data alignment + * @{ + */ +#define LL_ADC_DATA_ALIGN_RIGHT 0x00000000U /*!< ADC conversion data alignment: right aligned (alignment on data register LSB bit 0)*/ +#define LL_ADC_DATA_ALIGN_LEFT (ADC_CR2_ALIGN) /*!< ADC conversion data alignment: left aligned (alignment on data register MSB bit 15)*/ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_SCAN_SELECTION ADC instance - Scan selection + * @{ + */ +#define LL_ADC_SEQ_SCAN_DISABLE 0x00000000U /*!< ADC conversion is performed in unitary conversion mode (one channel converted, that defined in rank 1). Configuration of both groups regular and injected sequencers (sequence length, ...) is discarded: equivalent to length of 1 rank.*/ +#define LL_ADC_SEQ_SCAN_ENABLE (ADC_CR1_SCAN) /*!< ADC conversions are performed in sequence conversions mode, according to configuration of both groups regular and injected sequencers (sequence length, ...). */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_GROUPS ADC instance - Groups + * @{ + */ +#define LL_ADC_GROUP_REGULAR 0x00000001U /*!< ADC group regular (available on all STM32 devices) */ +#define LL_ADC_GROUP_INJECTED 0x00000002U /*!< ADC group injected (not available on all STM32 devices)*/ +#define LL_ADC_GROUP_REGULAR_INJECTED 0x00000003U /*!< ADC both groups regular and injected */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_CHANNEL ADC instance - Channel number + * @{ + */ +#define LL_ADC_CHANNEL_0 (ADC_CHANNEL_0_NUMBER | ADC_CHANNEL_0_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN0 */ +#define LL_ADC_CHANNEL_1 (ADC_CHANNEL_1_NUMBER | ADC_CHANNEL_1_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN1 */ +#define LL_ADC_CHANNEL_2 (ADC_CHANNEL_2_NUMBER | ADC_CHANNEL_2_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN2 */ +#define LL_ADC_CHANNEL_3 (ADC_CHANNEL_3_NUMBER | ADC_CHANNEL_3_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN3 */ +#define LL_ADC_CHANNEL_4 (ADC_CHANNEL_4_NUMBER | ADC_CHANNEL_4_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN4 */ +#define LL_ADC_CHANNEL_5 (ADC_CHANNEL_5_NUMBER | ADC_CHANNEL_5_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN5 */ +#define LL_ADC_CHANNEL_6 (ADC_CHANNEL_6_NUMBER | ADC_CHANNEL_6_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN6 */ +#define LL_ADC_CHANNEL_7 (ADC_CHANNEL_7_NUMBER | ADC_CHANNEL_7_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN7 */ +#define LL_ADC_CHANNEL_8 (ADC_CHANNEL_8_NUMBER | ADC_CHANNEL_8_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN8 */ +#define LL_ADC_CHANNEL_9 (ADC_CHANNEL_9_NUMBER | ADC_CHANNEL_9_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN9 */ +#define LL_ADC_CHANNEL_10 (ADC_CHANNEL_10_NUMBER | ADC_CHANNEL_10_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN10 */ +#define LL_ADC_CHANNEL_11 (ADC_CHANNEL_11_NUMBER | ADC_CHANNEL_11_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN11 */ +#define LL_ADC_CHANNEL_12 (ADC_CHANNEL_12_NUMBER | ADC_CHANNEL_12_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN12 */ +#define LL_ADC_CHANNEL_13 (ADC_CHANNEL_13_NUMBER | ADC_CHANNEL_13_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN13 */ +#define LL_ADC_CHANNEL_14 (ADC_CHANNEL_14_NUMBER | ADC_CHANNEL_14_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN14 */ +#define LL_ADC_CHANNEL_15 (ADC_CHANNEL_15_NUMBER | ADC_CHANNEL_15_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN15 */ +#define LL_ADC_CHANNEL_16 (ADC_CHANNEL_16_NUMBER | ADC_CHANNEL_16_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN16 */ +#define LL_ADC_CHANNEL_17 (ADC_CHANNEL_17_NUMBER | ADC_CHANNEL_17_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN17 */ +#define LL_ADC_CHANNEL_18 (ADC_CHANNEL_18_NUMBER | ADC_CHANNEL_18_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN18 */ +#define LL_ADC_CHANNEL_VREFINT (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to VrefInt: Internal voltage reference. On STM32F7, ADC channel available only on ADC instance: ADC1. */ +#define LL_ADC_CHANNEL_VBAT (LL_ADC_CHANNEL_18 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda. On STM32F7, ADC channel available only on ADC instance: ADC1. */ +#define LL_ADC_CHANNEL_TEMPSENSOR (LL_ADC_CHANNEL_18 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to Temperature sensor. On STM32F7, ADC channel available only on ADC instance: ADC1. */ + +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_TRIGGER_SOURCE ADC group regular - Trigger source + * @{ + */ +#define LL_ADC_REG_TRIG_SOFTWARE 0x00000000U /*!< ADC group regular conversion trigger internal: SW start. */ +#define LL_ADC_REG_TRIG_EXT_TIM1_CH1 ((uint32_t)ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM1_CH2 (ADC_CR2_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM1_CH3 (ADC_CR2_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM2_CH2 (ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM5_TRGO (ADC_CR2_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM5 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM4_CH4 (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM3_CH4 (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM8_TRGO (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM8_TRGO2 (ADC_CR2_EXTSEL_3 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO2. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM1_TRGO (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM1_TRGO2 (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM2_TRGO (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM4_TRGO (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM6_TRGO (ADC_CR2_EXTSEL_3 |ADC_CR2_EXTSEL_2| ADC_CR2_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group regular conversion trigger from external IP: external interrupt line 11. Trigger edge set to rising edge (default setting). */ + +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_TRIGGER_EDGE ADC group regular - Trigger edge + * @{ + */ +#define LL_ADC_REG_TRIG_EXT_RISING ( ADC_CR2_EXTEN_0) /*!< ADC group regular conversion trigger polarity set to rising edge */ +#define LL_ADC_REG_TRIG_EXT_FALLING (ADC_CR2_EXTEN_1 ) /*!< ADC group regular conversion trigger polarity set to falling edge */ +#define LL_ADC_REG_TRIG_EXT_RISINGFALLING (ADC_CR2_EXTEN_1 | ADC_CR2_EXTEN_0) /*!< ADC group regular conversion trigger polarity set to both rising and falling edges */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_CONTINUOUS_MODE ADC group regular - Continuous mode +* @{ +*/ +#define LL_ADC_REG_CONV_SINGLE 0x00000000U /*!< ADC conversions are performed in single mode: one conversion per trigger */ +#define LL_ADC_REG_CONV_CONTINUOUS (ADC_CR2_CONT) /*!< ADC conversions are performed in continuous mode: after the first trigger, following conversions launched successively automatically */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_DMA_TRANSFER ADC group regular - DMA transfer of ADC conversion data + * @{ + */ +#define LL_ADC_REG_DMA_TRANSFER_NONE 0x00000000U /*!< ADC conversions are not transferred by DMA */ +#define LL_ADC_REG_DMA_TRANSFER_LIMITED ( ADC_CR2_DMA) /*!< ADC conversion data are transferred by DMA, in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. */ +#define LL_ADC_REG_DMA_TRANSFER_UNLIMITED (ADC_CR2_DDS | ADC_CR2_DMA) /*!< ADC conversion data are transferred by DMA, in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions). This ADC mode is intended to be used with DMA mode circular. */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_FLAG_EOC_SELECTION ADC group regular - Flag EOC selection (unitary or sequence conversions) + * @{ + */ +#define LL_ADC_REG_FLAG_EOC_SEQUENCE_CONV 0x00000000U /*!< ADC flag EOC (end of unitary conversion) selected */ +#define LL_ADC_REG_FLAG_EOC_UNITARY_CONV (ADC_CR2_EOCS) /*!< ADC flag EOS (end of sequence conversions) selected */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_SEQ_SCAN_LENGTH ADC group regular - Sequencer scan length + * @{ + */ +#define LL_ADC_REG_SEQ_SCAN_DISABLE 0x00000000U /*!< ADC group regular sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS ( ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 2 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS ( ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 3 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS ( ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 4 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS ( ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 5 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 6 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 7 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 8 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS (ADC_SQR1_L_3 ) /*!< ADC group regular sequencer enable with 9 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 10 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 11 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 12 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 13 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 14 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 15 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 16 ranks in the sequence */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_SEQ_DISCONT_MODE ADC group regular - Sequencer discontinuous mode + * @{ + */ +#define LL_ADC_REG_SEQ_DISCONT_DISABLE 0x00000000U /*!< ADC group regular sequencer discontinuous mode disable */ +#define LL_ADC_REG_SEQ_DISCONT_1RANK ( ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every rank */ +#define LL_ADC_REG_SEQ_DISCONT_2RANKS ( ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enabled with sequence interruption every 2 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_3RANKS ( ADC_CR1_DISCNUM_1 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 3 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_4RANKS ( ADC_CR1_DISCNUM_1 | ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 4 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_5RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 5 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_6RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 6 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_7RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCNUM_1 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 7 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_8RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCNUM_1 | ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 8 ranks */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_SEQ_RANKS ADC group regular - Sequencer ranks + * @{ + */ +#define LL_ADC_REG_RANK_1 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_1_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 1 */ +#define LL_ADC_REG_RANK_2 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_2_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 2 */ +#define LL_ADC_REG_RANK_3 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_3_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 3 */ +#define LL_ADC_REG_RANK_4 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_4_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 4 */ +#define LL_ADC_REG_RANK_5 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_5_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 5 */ +#define LL_ADC_REG_RANK_6 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_6_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 6 */ +#define LL_ADC_REG_RANK_7 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_7_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 7 */ +#define LL_ADC_REG_RANK_8 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_8_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 8 */ +#define LL_ADC_REG_RANK_9 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_9_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 9 */ +#define LL_ADC_REG_RANK_10 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_10_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 10 */ +#define LL_ADC_REG_RANK_11 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_11_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 11 */ +#define LL_ADC_REG_RANK_12 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_12_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 12 */ +#define LL_ADC_REG_RANK_13 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_13_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 13 */ +#define LL_ADC_REG_RANK_14 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_14_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 14 */ +#define LL_ADC_REG_RANK_15 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_15_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 15 */ +#define LL_ADC_REG_RANK_16 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_16_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 16 */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_INJ_TRIGGER_SOURCE ADC group injected - Trigger source + * @{ + */ +#define LL_ADC_INJ_TRIG_SOFTWARE 0x00000000U /*!< ADC group injected conversion trigger internal: SW start. */ +#define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (ADC_CR2_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM2 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (ADC_CR2_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM8_CH4 (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2 (ADC_CR2_JEXTSEL_3 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM1 TRGO2. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM8_TRGO (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2 (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM8 TRGO2. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM3_CH3 (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM5_TRGO (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM5 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM3_CH1 (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM6_TRGO (ADC_CR2_JEXTSEL_3 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT) /*!< ADC group injected conversion trigger from external IP: TIM6 TRGO. Trigger edge set to rising edge (default setting). */ + +/** + * @} + */ + +/** @defgroup ADC_LL_EC_INJ_TRIGGER_EDGE ADC group injected - Trigger edge + * @{ + */ +#define LL_ADC_INJ_TRIG_EXT_RISING ( ADC_CR2_JEXTEN_0) /*!< ADC group injected conversion trigger polarity set to rising edge */ +#define LL_ADC_INJ_TRIG_EXT_FALLING (ADC_CR2_JEXTEN_1 ) /*!< ADC group injected conversion trigger polarity set to falling edge */ +#define LL_ADC_INJ_TRIG_EXT_RISINGFALLING (ADC_CR2_JEXTEN_1 | ADC_CR2_JEXTEN_0) /*!< ADC group injected conversion trigger polarity set to both rising and falling edges */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_INJ_TRIG_AUTO ADC group injected - Automatic trigger mode +* @{ +*/ +#define LL_ADC_INJ_TRIG_INDEPENDENT 0x00000000U /*!< ADC group injected conversion trigger independent. Setting mandatory if ADC group injected injected trigger source is set to an external trigger. */ +#define LL_ADC_INJ_TRIG_FROM_GRP_REGULAR (ADC_CR1_JAUTO) /*!< ADC group injected conversion trigger from ADC group regular. Setting compliant only with group injected trigger source set to SW start, without any further action on ADC group injected conversion start or stop: in this case, ADC group injected is controlled only from ADC group regular. */ +/** + * @} + */ + + +/** @defgroup ADC_LL_EC_INJ_SEQ_SCAN_LENGTH ADC group injected - Sequencer scan length + * @{ + */ +#define LL_ADC_INJ_SEQ_SCAN_DISABLE 0x00000000U /*!< ADC group injected sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */ +#define LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS ( ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 2 ranks in the sequence */ +#define LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS (ADC_JSQR_JL_1 ) /*!< ADC group injected sequencer enable with 3 ranks in the sequence */ +#define LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS (ADC_JSQR_JL_1 | ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 4 ranks in the sequence */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_INJ_SEQ_DISCONT_MODE ADC group injected - Sequencer discontinuous mode + * @{ + */ +#define LL_ADC_INJ_SEQ_DISCONT_DISABLE 0x00000000U /*!< ADC group injected sequencer discontinuous mode disable */ +#define LL_ADC_INJ_SEQ_DISCONT_1RANK (ADC_CR1_JDISCEN) /*!< ADC group injected sequencer discontinuous mode enable with sequence interruption every rank */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_INJ_SEQ_RANKS ADC group injected - Sequencer ranks + * @{ + */ +#define LL_ADC_INJ_RANK_1 (ADC_JDR1_REGOFFSET | ADC_JOFR1_REGOFFSET | 0x00000001U) /*!< ADC group injected sequencer rank 1 */ +#define LL_ADC_INJ_RANK_2 (ADC_JDR2_REGOFFSET | ADC_JOFR2_REGOFFSET | 0x00000002U) /*!< ADC group injected sequencer rank 2 */ +#define LL_ADC_INJ_RANK_3 (ADC_JDR3_REGOFFSET | ADC_JOFR3_REGOFFSET | 0x00000003U) /*!< ADC group injected sequencer rank 3 */ +#define LL_ADC_INJ_RANK_4 (ADC_JDR4_REGOFFSET | ADC_JOFR4_REGOFFSET | 0x00000004U) /*!< ADC group injected sequencer rank 4 */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_CHANNEL_SAMPLINGTIME Channel - Sampling time + * @{ + */ +#define LL_ADC_SAMPLINGTIME_3CYCLES 0x00000000U /*!< Sampling time 3 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_15CYCLES (ADC_SMPR1_SMP10_0) /*!< Sampling time 15 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_28CYCLES (ADC_SMPR1_SMP10_1) /*!< Sampling time 28 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_56CYCLES (ADC_SMPR1_SMP10_1 | ADC_SMPR1_SMP10_0) /*!< Sampling time 56 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_84CYCLES (ADC_SMPR1_SMP10_2) /*!< Sampling time 84 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_112CYCLES (ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_0) /*!< Sampling time 112 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_144CYCLES (ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_1) /*!< Sampling time 144 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_480CYCLES (ADC_SMPR1_SMP10) /*!< Sampling time 480 ADC clock cycles */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_AWD_NUMBER Analog watchdog - Analog watchdog number + * @{ + */ +#define LL_ADC_AWD1 (ADC_AWD_CR1_CHANNEL_MASK | ADC_AWD_CR1_REGOFFSET) /*!< ADC analog watchdog number 1 */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_AWD_CHANNELS Analog watchdog - Monitored channels + * @{ + */ +#define LL_ADC_AWD_DISABLE 0x00000000U /*!< ADC analog watchdog monitoring disabled */ +#define LL_ADC_AWD_ALL_CHANNELS_REG ( ADC_CR1_AWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by group regular only */ +#define LL_ADC_AWD_ALL_CHANNELS_INJ ( ADC_CR1_JAWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by group injected only */ +#define LL_ADC_AWD_ALL_CHANNELS_REG_INJ ( ADC_CR1_JAWDEN | ADC_CR1_AWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_0_REG ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_0_INJ ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_0_REG_INJ ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_1_REG ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_1_INJ ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_1_REG_INJ ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_2_REG ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_2_INJ ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_2_REG_INJ ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_3_REG ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_3_INJ ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_3_REG_INJ ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_4_REG ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_4_INJ ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_4_REG_INJ ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_5_REG ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_5_INJ ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_5_REG_INJ ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_6_REG ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_6_INJ ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_6_REG_INJ ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_7_REG ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_7_INJ ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_7_REG_INJ ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_8_REG ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_8_INJ ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_8_REG_INJ ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_9_REG ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_9_INJ ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_9_REG_INJ ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_10_REG ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_10_INJ ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_10_REG_INJ ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_11_REG ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_11_INJ ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_11_REG_INJ ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_12_REG ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_12_INJ ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_12_REG_INJ ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_13_REG ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_13_INJ ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_13_REG_INJ ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_14_REG ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_14_INJ ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_14_REG_INJ ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_15_REG ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_15_INJ ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_15_REG_INJ ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_16_REG ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_16_INJ ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_16_REG_INJ ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_17_REG ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_17_INJ ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_17_REG_INJ ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_18_REG ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_18_INJ ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_18_REG_INJ ((LL_ADC_CHANNEL_18 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN18, converted by either group regular or injected */ +#define LL_ADC_AWD_CH_VREFINT_REG ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by group regular only */ +#define LL_ADC_AWD_CH_VREFINT_INJ ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by group injected only */ +#define LL_ADC_AWD_CH_VREFINT_REG_INJ ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by either group regular or injected */ +#define LL_ADC_AWD_CH_VBAT_REG ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda, converted by group regular only */ +#define LL_ADC_AWD_CH_VBAT_INJ ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda, converted by group injected only */ +#define LL_ADC_AWD_CH_VBAT_REG_INJ ((LL_ADC_CHANNEL_VBAT & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Vbat/3: Vbat voltage through a divider ladder of factor 1/3 to have Vbat always below Vdda */ +#define LL_ADC_AWD_CH_TEMPSENSOR_REG ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by group regular only. This internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. */ +#define LL_ADC_AWD_CH_TEMPSENSOR_INJ ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by group injected only. This internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. */ +#define LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by either group regular or injected. This internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_AWD_THRESHOLDS Analog watchdog - Thresholds + * @{ + */ +#define LL_ADC_AWD_THRESHOLD_HIGH (ADC_AWD_TR1_HIGH_REGOFFSET) /*!< ADC analog watchdog threshold high */ +#define LL_ADC_AWD_THRESHOLD_LOW (ADC_AWD_TR1_LOW_REGOFFSET) /*!< ADC analog watchdog threshold low */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_MULTI_MODE Multimode - Mode + * @{ + */ +#define LL_ADC_MULTI_INDEPENDENT 0x00000000U /*!< ADC dual mode disabled (ADC independent mode) */ +#define LL_ADC_MULTI_DUAL_REG_SIMULT ( ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 ) /*!< ADC dual mode enabled: group regular simultaneous */ +#define LL_ADC_MULTI_DUAL_REG_INTERL ( ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0) /*!< ADC dual mode enabled: Combined group regular interleaved */ +#define LL_ADC_MULTI_DUAL_INJ_SIMULT ( ADC_CCR_MULTI_2 | ADC_CCR_MULTI_0) /*!< ADC dual mode enabled: group injected simultaneous */ +#define LL_ADC_MULTI_DUAL_INJ_ALTERN (ADC_CCR_MULTI_3 | ADC_CCR_MULTI_0) /*!< ADC dual mode enabled: group injected alternate trigger. Works only with external triggers (not internal SW start) */ +#define LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM ( ADC_CCR_MULTI_0) /*!< ADC dual mode enabled: Combined group regular simultaneous + group injected simultaneous */ +#define LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT ( ADC_CCR_MULTI_1 ) /*!< ADC dual mode enabled: Combined group regular simultaneous + group injected alternate trigger */ +#define LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM ( ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0) /*!< ADC dual mode enabled: Combined group regular interleaved + group injected simultaneous */ +#if defined(ADC3) +#define LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_SIM (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_0) /*!< ADC triple mode enabled: Combined group regular simultaneous + group injected simultaneous */ +#define LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_ALT (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_1 ) /*!< ADC triple mode enabled: Combined group regular simultaneous + group injected alternate trigger */ +#define LL_ADC_MULTI_TRIPLE_INJ_SIMULT (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_0) /*!< ADC triple mode enabled: group injected simultaneous */ +#define LL_ADC_MULTI_TRIPLE_REG_SIMULT (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 ) /*!< ADC triple mode enabled: group regular simultaneous */ +#define LL_ADC_MULTI_TRIPLE_REG_INTERL (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_2 | ADC_CCR_MULTI_1 | ADC_CCR_MULTI_0) /*!< ADC triple mode enabled: Combined group regular interleaved */ +#define LL_ADC_MULTI_TRIPLE_INJ_ALTERN (ADC_CCR_MULTI_4 | ADC_CCR_MULTI_0) /*!< ADC triple mode enabled: group injected alternate trigger. Works only with external triggers (not internal SW start) */ +#endif +/** + * @} + */ + +/** @defgroup ADC_LL_EC_MULTI_DMA_TRANSFER Multimode - DMA transfer + * @{ + */ +#define LL_ADC_MULTI_REG_DMA_EACH_ADC 0x00000000U /*!< ADC multimode group regular conversions are transferred by DMA: each ADC uses its own DMA channel, with its individual DMA transfer settings */ +#define LL_ADC_MULTI_REG_DMA_LIMIT_1 ( ADC_CCR_DMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (DMA of ADC master), in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting of DMA mode 1: 2 or 3 (dual or triple mode) half-words one by one, ADC1 then ADC2 then ADC3. */ +#define LL_ADC_MULTI_REG_DMA_LIMIT_2 ( ADC_CCR_DMA_1 ) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (DMA of ADC master), in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting of DMA mode 2: 2 or 3 (dual or triple mode) half-words one by one, ADC2&1 then ADC1&3 then ADC3&2. */ +#define LL_ADC_MULTI_REG_DMA_LIMIT_3 ( ADC_CCR_DMA_0 | ADC_CCR_DMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (DMA of ADC master), in limited mode (one shot mode): DMA transfer requests are stopped when number of DMA data transfers (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting of DMA mode 3: 2 or 3 (dual or triple mode) bytes one by one, ADC2&1 then ADC1&3 then ADC3&2. */ +#define LL_ADC_MULTI_REG_DMA_UNLMT_1 (ADC_CCR_DDS | ADC_CCR_DMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (DMA of ADC master), in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting of DMA mode 1: 2 or 3 (dual or triple mode) half-words one by one, ADC1 then ADC2 then ADC3. */ +#define LL_ADC_MULTI_REG_DMA_UNLMT_2 (ADC_CCR_DDS | ADC_CCR_DMA_1 ) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (DMA of ADC master), in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting of DMA mode 2: 2 or 3 (dual or triple mode) half-words by pairs, ADC2&1 then ADC1&3 then ADC3&2. */ +#define LL_ADC_MULTI_REG_DMA_UNLMT_3 (ADC_CCR_DDS | ADC_CCR_DMA_0 | ADC_CCR_DMA_0) /*!< ADC multimode group regular conversions are transferred by DMA, one DMA channel for all ADC instances (DMA of ADC master), in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions) is reached. This ADC mode is intended to be used with DMA mode non-circular. Setting of DMA mode 3: 2 or 3 (dual or triple mode) bytes one by one, ADC2&1 then ADC1&3 then ADC3&2. */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_MULTI_TWOSMP_DELAY Multimode - Delay between two sampling phases + * @{ + */ +#define LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES 0x00000000U /*!< ADC multimode delay between two sampling phases: 5 ADC clock cycles*/ +#define LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES ( ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 6 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES ( ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 7 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES ( ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 8 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES ( ADC_CCR_DELAY_2 ) /*!< ADC multimode delay between two sampling phases: 9 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 10 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 11 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES ( ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 12 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_13CYCLES (ADC_CCR_DELAY_3 ) /*!< ADC multimode delay between two sampling phases: 13 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_14CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 14 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_15CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 15 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_16CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 16 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_17CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 ) /*!< ADC multimode delay between two sampling phases: 17 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_18CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 18 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_19CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 ) /*!< ADC multimode delay between two sampling phases: 19 ADC clock cycles */ +#define LL_ADC_MULTI_TWOSMP_DELAY_20CYCLES (ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0) /*!< ADC multimode delay between two sampling phases: 20 ADC clock cycles */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_MULTI_MASTER_SLAVE Multimode - ADC master or slave + * @{ + */ +#define LL_ADC_MULTI_MASTER ( ADC_CDR_RDATA_MST) /*!< In multimode, selection among several ADC instances: ADC master */ +#define LL_ADC_MULTI_SLAVE (ADC_CDR_RDATA_SLV ) /*!< In multimode, selection among several ADC instances: ADC slave */ +#define LL_ADC_MULTI_MASTER_SLAVE (ADC_CDR_RDATA_SLV | ADC_CDR_RDATA_MST) /*!< In multimode, selection among several ADC instances: both ADC master and ADC slave */ +/** + * @} + */ + + + +/** @defgroup ADC_LL_EC_HW_DELAYS Definitions of ADC hardware constraints delays + * @note Only ADC IP HW delays are defined in ADC LL driver driver, + * not timeout values. + * For details on delays values, refer to descriptions in source code + * above each literal definition. + * @{ + */ + +/* Note: Only ADC IP HW delays are defined in ADC LL driver driver, */ +/* not timeout values. */ +/* Timeout values for ADC operations are dependent to device clock */ +/* configuration (system clock versus ADC clock), */ +/* and therefore must be defined in user application. */ +/* Indications for estimation of ADC timeout delays, for this */ +/* STM32 series: */ +/* - ADC enable time: maximum delay is 2us */ +/* (refer to device datasheet, parameter "tSTAB") */ +/* - ADC conversion time: duration depending on ADC clock and ADC */ +/* configuration. */ +/* (refer to device reference manual, section "Timing") */ + +/* Delay for internal voltage reference stabilization time. */ +/* Delay set to maximum value (refer to device datasheet, */ +/* parameter "tSTART"). */ +/* Unit: us */ +#define LL_ADC_DELAY_VREFINT_STAB_US ( 10U) /*!< Delay for internal voltage reference stabilization time */ + +/* Delay for temperature sensor stabilization time. */ +/* Literal set to maximum value (refer to device datasheet, */ +/* parameter "tSTART"). */ +/* Unit: us */ +#define LL_ADC_DELAY_TEMPSENSOR_STAB_US ( 10U) /*!< Delay for internal voltage reference stabilization time */ + +/** + * @} + */ + +/** + * @} + */ + + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup ADC_LL_Exported_Macros ADC Exported Macros + * @{ + */ + +/** @defgroup ADC_LL_EM_WRITE_READ Common write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in ADC register + * @param __INSTANCE__ ADC Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_ADC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in ADC register + * @param __INSTANCE__ ADC Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_ADC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup ADC_LL_EM_HELPER_MACRO ADC helper macro + * @{ + */ + +/** + * @brief Helper macro to get ADC channel number in decimal format + * from literals LL_ADC_CHANNEL_x. + * @note Example: + * __LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_CHANNEL_4) + * will return decimal number "4". + * @note The input can be a value from functions where a channel + * number is returned, either defined with number + * or with bitfield (only one bit must be set). + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. + * @retval Value between Min_Data=0 and Max_Data=18 + */ +#define __LL_ADC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \ + (((__CHANNEL__) & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) + +/** + * @brief Helper macro to get ADC channel in literal format LL_ADC_CHANNEL_x + * from number in decimal format. + * @note Example: + * __LL_ADC_DECIMAL_NB_TO_CHANNEL(4) + * will return a data equivalent to "LL_ADC_CHANNEL_4". + * @param __DECIMAL_NB__ Value between Min_Data=0 and Max_Data=18 + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.\n + * (1) For ADC channel read back from ADC register, + * comparison with internal channel parameter to be done + * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). + */ +#define __LL_ADC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \ + (((__DECIMAL_NB__) <= 9U) \ + ? ( \ + ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \ + (ADC_SMPR2_REGOFFSET | (((uint32_t) (3U * (__DECIMAL_NB__))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \ + ) \ + : \ + ( \ + ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \ + (ADC_SMPR1_REGOFFSET | (((uint32_t) (3U * ((__DECIMAL_NB__) - 10U))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \ + ) \ + ) + +/** + * @brief Helper macro to determine whether the selected channel + * corresponds to literal definitions of driver. + * @note The different literal definitions of ADC channels are: + * - ADC internal channel: + * LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ... + * - ADC external channel (channel connected to a GPIO pin): + * LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ... + * @note The channel parameter must be a value defined from literal + * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT, + * LL_ADC_CHANNEL_TEMPSENSOR, ...), + * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...), + * must not be a value from functions where a channel number is + * returned from ADC registers, + * because internal and external channels share the same channel + * number in ADC registers. The differentiation is made only with + * parameters definitions of driver. + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. + * @retval Value "0" if the channel corresponds to a parameter definition of a ADC external channel (channel connected to a GPIO pin). + * Value "1" if the channel corresponds to a parameter definition of a ADC internal channel. + */ +#define __LL_ADC_IS_CHANNEL_INTERNAL(__CHANNEL__) \ + (((__CHANNEL__) & ADC_CHANNEL_ID_INTERNAL_CH_MASK) != 0U) + +/** + * @brief Helper macro to convert a channel defined from parameter + * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT, + * LL_ADC_CHANNEL_TEMPSENSOR, ...), + * to its equivalent parameter definition of a ADC external channel + * (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...). + * @note The channel parameter can be, additionally to a value + * defined from parameter definition of a ADC internal channel + * (LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ...), + * a value defined from parameter definition of + * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...) + * or a value from functions where a channel number is returned + * from ADC registers. + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + */ +#define __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(__CHANNEL__) \ + ((__CHANNEL__) & ~ADC_CHANNEL_ID_INTERNAL_CH_MASK) + +/** + * @brief Helper macro to determine whether the internal channel + * selected is available on the ADC instance selected. + * @note The channel parameter must be a value defined from parameter + * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT, + * LL_ADC_CHANNEL_TEMPSENSOR, ...), + * must not be a value defined from parameter definition of + * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...) + * or a value from functions where a channel number is + * returned from ADC registers, + * because internal and external channels share the same channel + * number in ADC registers. The differentiation is made only with + * parameters definitions of driver. + * @param __ADC_INSTANCE__ ADC instance + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1. + * (2) On devices STM32F7x, limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. + * @retval Value "0" if the internal channel selected is not available on the ADC instance selected. + * Value "1" if the internal channel selected is available on the ADC instance selected. + */ +#define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \ + ( \ + ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \ + ((__CHANNEL__) == LL_ADC_CHANNEL_VBAT) \ + ) +/** + * @brief Helper macro to define ADC analog watchdog parameter: + * define a single channel to monitor with analog watchdog + * from sequencer channel and groups definition. + * @note To be used with function @ref LL_ADC_SetAnalogWDMonitChannels(). + * Example: + * LL_ADC_SetAnalogWDMonitChannels( + * ADC1, LL_ADC_AWD1, + * __LL_ADC_ANALOGWD_CHANNEL_GROUP(LL_ADC_CHANNEL4, LL_ADC_GROUP_REGULAR)) + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.\n + * (1) For ADC channel read back from ADC register, + * comparison with internal channel parameter to be done + * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). + * @param __GROUP__ This parameter can be one of the following values: + * @arg @ref LL_ADC_GROUP_REGULAR + * @arg @ref LL_ADC_GROUP_INJECTED + * @arg @ref LL_ADC_GROUP_REGULAR_INJECTED + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_AWD_DISABLE + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG + * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG + * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG + * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG + * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG + * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG + * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG + * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG + * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG + * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG + * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG + * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG + * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG + * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG + * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG + * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG + * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG + * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG + * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_18_REG + * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ + * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (1) + * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (1) + * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (1) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (1)(2) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (1)(2) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (1)(2) + * @arg @ref LL_ADC_AWD_CH_VBAT_REG (1) + * @arg @ref LL_ADC_AWD_CH_VBAT_INJ (1) + * @arg @ref LL_ADC_AWD_CH_VBAT_REG_INJ (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F7xx,a limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. + */ +#define __LL_ADC_ANALOGWD_CHANNEL_GROUP(__CHANNEL__, __GROUP__) \ + (((__GROUP__) == LL_ADC_GROUP_REGULAR) \ + ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) \ + : \ + ((__GROUP__) == LL_ADC_GROUP_INJECTED) \ + ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) \ + : \ + (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) \ + ) + +/** + * @brief Helper macro to set the value of ADC analog watchdog threshold high + * or low in function of ADC resolution, when ADC resolution is + * different of 12 bits. + * @note To be used with function @ref LL_ADC_SetAnalogWDThresholds(). + * Example, with a ADC resolution of 8 bits, to set the value of + * analog watchdog threshold high (on 8 bits): + * LL_ADC_SetAnalogWDThresholds + * (< ADCx param >, + * __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(LL_ADC_RESOLUTION_8B, ) + * ); + * @param __ADC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + * @param __AWD_THRESHOLD__ Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +#define __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD__) \ + ((__AWD_THRESHOLD__) << ((__ADC_RESOLUTION__) >> (ADC_CR1_RES_BITOFFSET_POS - 1U ))) + +/** + * @brief Helper macro to get the value of ADC analog watchdog threshold high + * or low in function of ADC resolution, when ADC resolution is + * different of 12 bits. + * @note To be used with function @ref LL_ADC_GetAnalogWDThresholds(). + * Example, with a ADC resolution of 8 bits, to get the value of + * analog watchdog threshold high (on 8 bits): + * < threshold_value_6_bits > = __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION + * (LL_ADC_RESOLUTION_8B, + * LL_ADC_GetAnalogWDThresholds(, LL_ADC_AWD_THRESHOLD_HIGH) + * ); + * @param __ADC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + * @param __AWD_THRESHOLD_12_BITS__ Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +#define __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD_12_BITS__) \ + ((__AWD_THRESHOLD_12_BITS__) >> ((__ADC_RESOLUTION__) >> (ADC_CR1_RES_BITOFFSET_POS - 1U ))) + +/** + * @brief Helper macro to get the ADC multimode conversion data of ADC master + * or ADC slave from raw value with both ADC conversion data concatenated. + * @note This macro is intended to be used when multimode transfer by DMA + * is enabled: refer to function @ref LL_ADC_SetMultiDMATransfer(). + * In this case the transferred data need to processed with this macro + * to separate the conversion data of ADC master and ADC slave. + * @param __ADC_MULTI_MASTER_SLAVE__ This parameter can be one of the following values: + * @arg @ref LL_ADC_MULTI_MASTER + * @arg @ref LL_ADC_MULTI_SLAVE + * @param __ADC_MULTI_CONV_DATA__ Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +#define __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(__ADC_MULTI_MASTER_SLAVE__, __ADC_MULTI_CONV_DATA__) \ + (((__ADC_MULTI_CONV_DATA__) >> POSITION_VAL((__ADC_MULTI_MASTER_SLAVE__))) & ADC_CDR_RDATA_MST) + +/** + * @brief Helper macro to select the ADC common instance + * to which is belonging the selected ADC instance. + * @note ADC common register instance can be used for: + * - Set parameters common to several ADC instances + * - Multimode (for devices with several ADC instances) + * Refer to functions having argument "ADCxy_COMMON" as parameter. + * @param __ADCx__ ADC instance + * @retval ADC common register instance + */ +#if defined(ADC1) && defined(ADC2) && defined(ADC3) +#define __LL_ADC_COMMON_INSTANCE(__ADCx__) \ + (ADC123_COMMON) +#elif defined(ADC1) && defined(ADC2) +#define __LL_ADC_COMMON_INSTANCE(__ADCx__) \ + (ADC12_COMMON) +#else +#define __LL_ADC_COMMON_INSTANCE(__ADCx__) \ + (ADC1_COMMON) +#endif + +/** + * @brief Helper macro to check if all ADC instances sharing the same + * ADC common instance are disabled. + * @note This check is required by functions with setting conditioned to + * ADC state: + * All ADC instances of the ADC common group must be disabled. + * Refer to functions having argument "ADCxy_COMMON" as parameter. + * @note On devices with only 1 ADC common instance, parameter of this macro + * is useless and can be ignored (parameter kept for compatibility + * with devices featuring several ADC common instances). + * @param __ADCXY_COMMON__ ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval Value "0" if all ADC instances sharing the same ADC common instance + * are disabled. + * Value "1" if at least one ADC instance sharing the same ADC common instance + * is enabled. + */ +#if defined(ADC1) && defined(ADC2) && defined(ADC3) +#define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \ + (LL_ADC_IsEnabled(ADC1) | \ + LL_ADC_IsEnabled(ADC2) | \ + LL_ADC_IsEnabled(ADC3) ) +#elif defined(ADC1) && defined(ADC2) +#define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \ + (LL_ADC_IsEnabled(ADC1) | \ + LL_ADC_IsEnabled(ADC2) ) +#else +#define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \ + (LL_ADC_IsEnabled(ADC1)) +#endif + +/** + * @brief Helper macro to define the ADC conversion data full-scale digital + * value corresponding to the selected ADC resolution. + * @note ADC conversion data full-scale corresponds to voltage range + * determined by analog voltage references Vref+ and Vref- + * (refer to reference manual). + * @param __ADC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + * @retval ADC conversion data equivalent voltage value (unit: mVolt) + */ +#define __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \ + (0xFFFU >> ((__ADC_RESOLUTION__) >> (ADC_CR1_RES_BITOFFSET_POS - 1U))) + +/** + * @brief Helper macro to convert the ADC conversion data from + * a resolution to another resolution. + * @param __DATA__ ADC conversion data to be converted + * @param __ADC_RESOLUTION_CURRENT__ Resolution of to the data to be converted + * This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + * @param __ADC_RESOLUTION_TARGET__ Resolution of the data after conversion + * This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + * @retval ADC conversion data to the requested resolution + */ +#define __LL_ADC_CONVERT_DATA_RESOLUTION(__DATA__, __ADC_RESOLUTION_CURRENT__, __ADC_RESOLUTION_TARGET__) \ + (((__DATA__) \ + << ((__ADC_RESOLUTION_CURRENT__) >> (ADC_CR1_RES_BITOFFSET_POS - 1U))) \ + >> ((__ADC_RESOLUTION_TARGET__) >> (ADC_CR1_RES_BITOFFSET_POS - 1U)) \ + ) + +/** + * @brief Helper macro to calculate the voltage (unit: mVolt) + * corresponding to a ADC conversion data (unit: digital value). + * @note Analog reference voltage (Vref+) must be either known from + * user board environment or can be calculated using ADC measurement + * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE(). + * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit mV) + * @param __ADC_DATA__ ADC conversion data (resolution 12 bits) + * (unit: digital value). + * @param __ADC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + * @retval ADC conversion data equivalent voltage value (unit: mVolt) + */ +#define __LL_ADC_CALC_DATA_TO_VOLTAGE(__VREFANALOG_VOLTAGE__,\ + __ADC_DATA__,\ + __ADC_RESOLUTION__) \ + ((__ADC_DATA__) * (__VREFANALOG_VOLTAGE__) \ + / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \ + ) + +/** + * @brief Helper macro to calculate analog reference voltage (Vref+) + * (unit: mVolt) from ADC conversion data of internal voltage + * reference VrefInt. + * @note Computation is using VrefInt calibration value + * stored in system memory for each device during production. + * @note This voltage depends on user board environment: voltage level + * connected to pin Vref+. + * On devices with small package, the pin Vref+ is not present + * and internally bonded to pin Vdda. + * @note On this STM32 series, calibration data of internal voltage reference + * VrefInt corresponds to a resolution of 12 bits, + * this is the recommended ADC resolution to convert voltage of + * internal voltage reference VrefInt. + * Otherwise, this macro performs the processing to scale + * ADC conversion data to 12 bits. + * @param __VREFINT_ADC_DATA__ ADC conversion data (resolution 12 bits) + * of internal voltage reference VrefInt (unit: digital value). + * @param __ADC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + * @retval Analog reference voltage (unit: mV) + */ +#define __LL_ADC_CALC_VREFANALOG_VOLTAGE(__VREFINT_ADC_DATA__,\ + __ADC_RESOLUTION__) \ + (((uint32_t)(*VREFINT_CAL_ADDR) * VREFINT_CAL_VREF) \ + / __LL_ADC_CONVERT_DATA_RESOLUTION((__VREFINT_ADC_DATA__), \ + (__ADC_RESOLUTION__), \ + LL_ADC_RESOLUTION_12B) \ + ) + +/** + * @brief Helper macro to calculate the temperature (unit: degree Celsius) + * from ADC conversion data of internal temperature sensor. + * @note Computation is using temperature sensor calibration values + * stored in system memory for each device during production. + * @note Calculation formula: + * Temperature = ((TS_ADC_DATA - TS_CAL1) + * * (TS_CAL2_TEMP - TS_CAL1_TEMP)) + * / (TS_CAL2 - TS_CAL1) + TS_CAL1_TEMP + * with TS_ADC_DATA = temperature sensor raw data measured by ADC + * Avg_Slope = (TS_CAL2 - TS_CAL1) + * / (TS_CAL2_TEMP - TS_CAL1_TEMP) + * TS_CAL1 = equivalent TS_ADC_DATA at temperature + * TEMP_DEGC_CAL1 (calibrated in factory) + * TS_CAL2 = equivalent TS_ADC_DATA at temperature + * TEMP_DEGC_CAL2 (calibrated in factory) + * Caution: Calculation relevancy under reserve that calibration + * parameters are correct (address and data). + * To calculate temperature using temperature sensor + * datasheet typical values (generic values less, therefore + * less accurate than calibrated values), + * use helper macro @ref __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS(). + * @note As calculation input, the analog reference voltage (Vref+) must be + * defined as it impacts the ADC LSB equivalent voltage. + * @note Analog reference voltage (Vref+) must be either known from + * user board environment or can be calculated using ADC measurement + * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE(). + * @note On this STM32 series, calibration data of temperature sensor + * corresponds to a resolution of 12 bits, + * this is the recommended ADC resolution to convert voltage of + * temperature sensor. + * Otherwise, this macro performs the processing to scale + * ADC conversion data to 12 bits. + * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit mV) + * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal + * temperature sensor (unit: digital value). + * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature + * sensor voltage has been measured. + * This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + * @retval Temperature (unit: degree Celsius) + */ +#define __LL_ADC_CALC_TEMPERATURE(__VREFANALOG_VOLTAGE__,\ + __TEMPSENSOR_ADC_DATA__,\ + __ADC_RESOLUTION__) \ + (((( ((int32_t)((__LL_ADC_CONVERT_DATA_RESOLUTION((__TEMPSENSOR_ADC_DATA__), \ + (__ADC_RESOLUTION__), \ + LL_ADC_RESOLUTION_12B) \ + * (__VREFANALOG_VOLTAGE__)) \ + / TEMPSENSOR_CAL_VREFANALOG) \ + - (int32_t) *TEMPSENSOR_CAL1_ADDR) \ + ) * (int32_t)(TEMPSENSOR_CAL2_TEMP - TEMPSENSOR_CAL1_TEMP) \ + ) / (int32_t)((int32_t)*TEMPSENSOR_CAL2_ADDR - (int32_t)*TEMPSENSOR_CAL1_ADDR) \ + ) + TEMPSENSOR_CAL1_TEMP \ + ) + +/** + * @brief Helper macro to calculate the temperature (unit: degree Celsius) + * from ADC conversion data of internal temperature sensor. + * @note Computation is using temperature sensor typical values + * (refer to device datasheet). + * @note Calculation formula: + * Temperature = (TS_TYP_CALx_VOLT(uV) - TS_ADC_DATA * Conversion_uV) + * / Avg_Slope + CALx_TEMP + * with TS_ADC_DATA = temperature sensor raw data measured by ADC + * (unit: digital value) + * Avg_Slope = temperature sensor slope + * (unit: uV/Degree Celsius) + * TS_TYP_CALx_VOLT = temperature sensor digital value at + * temperature CALx_TEMP (unit: mV) + * Caution: Calculation relevancy under reserve the temperature sensor + * of the current device has characteristics in line with + * datasheet typical values. + * If temperature sensor calibration values are available on + * on this device (presence of macro __LL_ADC_CALC_TEMPERATURE()), + * temperature calculation will be more accurate using + * helper macro @ref __LL_ADC_CALC_TEMPERATURE(). + * @note As calculation input, the analog reference voltage (Vref+) must be + * defined as it impacts the ADC LSB equivalent voltage. + * @note Analog reference voltage (Vref+) must be either known from + * user board environment or can be calculated using ADC measurement + * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE(). + * @note ADC measurement data must correspond to a resolution of 12bits + * (full scale digital value 4095). If not the case, the data must be + * preliminarily rescaled to an equivalent resolution of 12 bits. + * @param __TEMPSENSOR_TYP_AVGSLOPE__ Device datasheet data Temperature sensor slope typical value (unit uV/DegCelsius). + * On STM32F7, refer to device datasheet parameter "Avg_Slope". + * @param __TEMPSENSOR_TYP_CALX_V__ Device datasheet data Temperature sensor voltage typical value (at temperature and Vref+ defined in parameters below) (unit mV). + * On STM32F4, refer to device datasheet parameter "V25". + * @param __TEMPSENSOR_CALX_TEMP__ Device datasheet data Temperature at which temperature sensor voltage (see parameter above) is corresponding (unit mV) + * @param __VREFANALOG_VOLTAGE__ Analog voltage reference (Vref+) voltage (unit mV) + * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal temperature sensor (unit digital value). + * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature sensor voltage has been measured. + * This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + * @retval Temperature (unit: degree Celsius) + */ +#define __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS(__TEMPSENSOR_TYP_AVGSLOPE__,\ + __TEMPSENSOR_TYP_CALX_V__,\ + __TEMPSENSOR_CALX_TEMP__,\ + __VREFANALOG_VOLTAGE__,\ + __TEMPSENSOR_ADC_DATA__,\ + __ADC_RESOLUTION__) \ + ((( ( \ + (int32_t)(((__TEMPSENSOR_TYP_CALX_V__)) \ + * 1000) \ + - \ + (int32_t)((((__TEMPSENSOR_ADC_DATA__) * (__VREFANALOG_VOLTAGE__)) \ + / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__)) \ + * 1000) \ + ) \ + ) / (__TEMPSENSOR_TYP_AVGSLOPE__) \ + ) + (__TEMPSENSOR_CALX_TEMP__) \ + ) + +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup ADC_LL_Exported_Functions ADC Exported Functions + * @{ + */ + +/** @defgroup ADC_LL_EF_DMA_Management ADC DMA management + * @{ + */ +/* Note: LL ADC functions to set DMA transfer are located into sections of */ +/* configuration of ADC instance, groups and multimode (if available): */ +/* @ref LL_ADC_REG_SetDMATransfer(), ... */ + +/** + * @brief Function to help to configure DMA transfer from ADC: retrieve the + * ADC register address from ADC instance and a list of ADC registers + * intended to be used (most commonly) with DMA transfer. + * @note These ADC registers are data registers: + * when ADC conversion data is available in ADC data registers, + * ADC generates a DMA transfer request. + * @note This macro is intended to be used with LL DMA driver, refer to + * function "LL_DMA_ConfigAddresses()". + * Example: + * LL_DMA_ConfigAddresses(DMA1, + * LL_DMA_CHANNEL_1, + * LL_ADC_DMA_GetRegAddr(ADC1, LL_ADC_DMA_REG_REGULAR_DATA), + * (uint32_t)&< array or variable >, + * LL_DMA_DIRECTION_PERIPH_TO_MEMORY); + * @note For devices with several ADC: in multimode, some devices + * use a different data register outside of ADC instance scope + * (common data register). This macro manages this register difference, + * only ADC instance has to be set as parameter. + * @rmtoll DR RDATA LL_ADC_DMA_GetRegAddr\n + * CDR RDATA_MST LL_ADC_DMA_GetRegAddr\n + * CDR RDATA_SLV LL_ADC_DMA_GetRegAddr + * @param ADCx ADC instance + * @param Register This parameter can be one of the following values: + * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA + * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA_MULTI (1) + * + * (1) Available on devices with several ADC instances. + * @retval ADC register address + */ +__STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register) +{ + uint32_t data_reg_addr = 0U; + + if (Register == LL_ADC_DMA_REG_REGULAR_DATA) + { + /* Retrieve address of register DR */ + data_reg_addr = (uint32_t)&(ADCx->DR); + } + else /* (Register == LL_ADC_DMA_REG_REGULAR_DATA_MULTI) */ + { + /* Retrieve address of register CDR */ + data_reg_addr = (uint32_t)&((__LL_ADC_COMMON_INSTANCE(ADCx))->CDR); + } + + return data_reg_addr; +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_Common Configuration of ADC hierarchical scope: common to several ADC instances + * @{ + */ + +/** + * @brief Set parameter common to several ADC: Clock source and prescaler. + * @rmtoll CCR ADCPRE LL_ADC_SetCommonClock + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @param CommonClock This parameter can be one of the following values: + * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV2 + * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV4 + * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV6 + * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV8 + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t CommonClock) +{ + MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_ADCPRE, CommonClock); +} + +/** + * @brief Get parameter common to several ADC: Clock source and prescaler. + * @rmtoll CCR ADCPRE LL_ADC_GetCommonClock + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV2 + * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV4 + * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV6 + * @arg @ref LL_ADC_CLOCK_SYNC_PCLK_DIV8 + */ +__STATIC_INLINE uint32_t LL_ADC_GetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_ADCPRE)); +} + +/** + * @brief Set parameter common to several ADC: measurement path to internal + * channels (VrefInt, temperature sensor, ...). + * @note One or several values can be selected. + * Example: (LL_ADC_PATH_INTERNAL_VREFINT | + * LL_ADC_PATH_INTERNAL_TEMPSENSOR) + * @note Stabilization time of measurement path to internal channel: + * After enabling internal paths, before starting ADC conversion, + * a delay is required for internal voltage reference and + * temperature sensor stabilization time. + * Refer to device datasheet. + * Refer to literal @ref LL_ADC_DELAY_VREFINT_STAB_US. + * Refer to literal @ref LL_ADC_DELAY_TEMPSENSOR_STAB_US. + * @note ADC internal channel sampling time constraint: + * For ADC conversion of internal channels, + * a sampling time minimum value is required. + * Refer to device datasheet. + * @rmtoll CCR TSVREFE LL_ADC_SetCommonPathInternalCh\n + * CCR VBATE LL_ADC_SetCommonPathInternalCh + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @param PathInternal This parameter can be a combination of the following values: + * @arg @ref LL_ADC_PATH_INTERNAL_NONE + * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT + * @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) +{ + MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_TSVREFE | ADC_CCR_VBATE, PathInternal); +} + +/** + * @brief Get parameter common to several ADC: measurement path to internal + * channels (VrefInt, temperature sensor, ...). + * @note One or several values can be selected. + * Example: (LL_ADC_PATH_INTERNAL_VREFINT | + * LL_ADC_PATH_INTERNAL_TEMPSENSOR) + * @rmtoll CCR TSVREFE LL_ADC_GetCommonPathInternalCh\n + * CCR VBATE LL_ADC_GetCommonPathInternalCh + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval Returned value can be a combination of the following values: + * @arg @ref LL_ADC_PATH_INTERNAL_NONE + * @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) +{ + return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_TSVREFE | ADC_CCR_VBATE)); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_Instance Configuration of ADC hierarchical scope: ADC instance + * @{ + */ + +/** + * @brief Set ADC resolution. + * Refer to reference manual for alignments formats + * dependencies to ADC resolutions. + * @rmtoll CR1 RES LL_ADC_SetResolution + * @param ADCx ADC instance + * @param Resolution This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetResolution(ADC_TypeDef *ADCx, uint32_t Resolution) +{ + MODIFY_REG(ADCx->CR1, ADC_CR1_RES, Resolution); +} + +/** + * @brief Get ADC resolution. + * Refer to reference manual for alignments formats + * dependencies to ADC resolutions. + * @rmtoll CR1 RES LL_ADC_GetResolution + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @arg @ref LL_ADC_RESOLUTION_10B + * @arg @ref LL_ADC_RESOLUTION_8B + * @arg @ref LL_ADC_RESOLUTION_6B + */ +__STATIC_INLINE uint32_t LL_ADC_GetResolution(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_RES)); +} + +/** + * @brief Set ADC conversion data alignment. + * @note Refer to reference manual for alignments formats + * dependencies to ADC resolutions. + * @rmtoll CR2 ALIGN LL_ADC_SetDataAlignment + * @param ADCx ADC instance + * @param DataAlignment This parameter can be one of the following values: + * @arg @ref LL_ADC_DATA_ALIGN_RIGHT + * @arg @ref LL_ADC_DATA_ALIGN_LEFT + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetDataAlignment(ADC_TypeDef *ADCx, uint32_t DataAlignment) +{ + MODIFY_REG(ADCx->CR2, ADC_CR2_ALIGN, DataAlignment); +} + +/** + * @brief Get ADC conversion data alignment. + * @note Refer to reference manual for alignments formats + * dependencies to ADC resolutions. + * @rmtoll CR2 ALIGN LL_ADC_SetDataAlignment + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_DATA_ALIGN_RIGHT + * @arg @ref LL_ADC_DATA_ALIGN_LEFT + */ +__STATIC_INLINE uint32_t LL_ADC_GetDataAlignment(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_ALIGN)); +} + +/** + * @brief Set ADC sequencers scan mode, for all ADC groups + * (group regular, group injected). + * @note According to sequencers scan mode : + * - If disabled: ADC conversion is performed in unitary conversion + * mode (one channel converted, that defined in rank 1). + * Configuration of sequencers of all ADC groups + * (sequencer scan length, ...) is discarded: equivalent to + * scan length of 1 rank. + * - If enabled: ADC conversions are performed in sequence conversions + * mode, according to configuration of sequencers of + * each ADC group (sequencer scan length, ...). + * Refer to function @ref LL_ADC_REG_SetSequencerLength() + * and to function @ref LL_ADC_INJ_SetSequencerLength(). + * @rmtoll CR1 SCAN LL_ADC_SetSequencersScanMode + * @param ADCx ADC instance + * @param ScanMode This parameter can be one of the following values: + * @arg @ref LL_ADC_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_SEQ_SCAN_ENABLE + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetSequencersScanMode(ADC_TypeDef *ADCx, uint32_t ScanMode) +{ + MODIFY_REG(ADCx->CR1, ADC_CR1_SCAN, ScanMode); +} + +/** + * @brief Get ADC sequencers scan mode, for all ADC groups + * (group regular, group injected). + * @note According to sequencers scan mode : + * - If disabled: ADC conversion is performed in unitary conversion + * mode (one channel converted, that defined in rank 1). + * Configuration of sequencers of all ADC groups + * (sequencer scan length, ...) is discarded: equivalent to + * scan length of 1 rank. + * - If enabled: ADC conversions are performed in sequence conversions + * mode, according to configuration of sequencers of + * each ADC group (sequencer scan length, ...). + * Refer to function @ref LL_ADC_REG_SetSequencerLength() + * and to function @ref LL_ADC_INJ_SetSequencerLength(). + * @rmtoll CR1 SCAN LL_ADC_GetSequencersScanMode + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_SEQ_SCAN_ENABLE + */ +__STATIC_INLINE uint32_t LL_ADC_GetSequencersScanMode(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_SCAN)); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_Group_Regular Configuration of ADC hierarchical scope: group regular + * @{ + */ + +/** + * @brief Set ADC group regular conversion trigger source: + * internal (SW start) or from external IP (timer event, + * external interrupt line). + * @note On this STM32 series, setting of external trigger edge is performed + * using function @ref LL_ADC_REG_StartConversionExtTrig(). + * @note Availability of parameters of trigger sources from timer + * depends on timers availability on the selected device. + * @rmtoll CR2 EXTSEL LL_ADC_REG_SetTriggerSource\n + * CR2 EXTEN LL_ADC_REG_SetTriggerSource + * @param ADCx ADC instance + * @param TriggerSource This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_TRIG_SOFTWARE + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH3 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH4 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO2 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO2 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM6_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11 + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource) +{ +/* Note: On this STM32 series, ADC group regular external trigger edge */ +/* is used to perform a ADC conversion start. */ +/* This function does not set external trigger edge. */ +/* This feature is set using function */ +/* @ref LL_ADC_REG_StartConversionExtTrig(). */ + MODIFY_REG(ADCx->CR2, ADC_CR2_EXTSEL, (TriggerSource & ADC_CR2_EXTSEL)); +} + +/** + * @brief Get ADC group regular conversion trigger source: + * internal (SW start) or from external IP (timer event, + * external interrupt line). + * @note To determine whether group regular trigger source is + * internal (SW start) or external, without detail + * of which peripheral is selected as external trigger, + * (equivalent to + * "if(LL_ADC_REG_GetTriggerSource(ADC1) == LL_ADC_REG_TRIG_SOFTWARE)") + * use function @ref LL_ADC_REG_IsTriggerSourceSWStart. + * @note Availability of parameters of trigger sources from timer + * depends on timers availability on the selected device. + * @rmtoll CR2 EXTSEL LL_ADC_REG_GetTriggerSource\n + * CR2 EXTEN LL_ADC_REG_GetTriggerSource + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_TRIG_SOFTWARE + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH3 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH4 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO2 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_TRGO2 + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM6_TRGO + * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11 + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerSource(ADC_TypeDef *ADCx) +{ + uint32_t TriggerSource = READ_BIT(ADCx->CR2, ADC_CR2_EXTSEL | ADC_CR2_EXTEN); + + /* Value for shift of {0; 4; 8; 12} depending on value of bitfield */ + /* corresponding to ADC_CR2_EXTEN {0; 1; 2; 3}. */ + uint32_t ShiftExten = ((TriggerSource & ADC_CR2_EXTEN) >> (ADC_REG_TRIG_EXTEN_BITOFFSET_POS - 2U)); + + /* Set bitfield corresponding to ADC_CR2_EXTEN and ADC_CR2_EXTSEL */ + /* to match with triggers literals definition. */ + return ((TriggerSource + & (ADC_REG_TRIG_SOURCE_MASK << ShiftExten) & ADC_CR2_EXTSEL) + | ((ADC_REG_TRIG_EDGE_MASK << ShiftExten) & ADC_CR2_EXTEN) + ); +} + +/** + * @brief Get ADC group regular conversion trigger source internal (SW start) + or external. + * @note In case of group regular trigger source set to external trigger, + * to determine which peripheral is selected as external trigger, + * use function @ref LL_ADC_REG_GetTriggerSource(). + * @rmtoll CR2 EXTEN LL_ADC_REG_IsTriggerSourceSWStart + * @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) +{ + return (READ_BIT(ADCx->CR2, ADC_CR2_EXTEN) == (LL_ADC_REG_TRIG_SOFTWARE & ADC_CR2_EXTEN)); +} + +/** + * @brief Get ADC group regular conversion trigger polarity. + * @note Applicable only for trigger source set to external trigger. + * @note On this STM32 series, setting of external trigger edge is performed + * using function @ref LL_ADC_REG_StartConversionExtTrig(). + * @rmtoll CR2 EXTEN LL_ADC_REG_GetTriggerEdge + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_TRIG_EXT_RISING + * @arg @ref LL_ADC_REG_TRIG_EXT_FALLING + * @arg @ref LL_ADC_REG_TRIG_EXT_RISINGFALLING + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerEdge(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_EXTEN)); +} + + +/** + * @brief Set ADC group regular sequencer length and scan direction. + * @note Description of ADC group regular sequencer features: + * - For devices with sequencer fully configurable + * (function "LL_ADC_REG_SetSequencerRanks()" available): + * sequencer length and each rank affectation to a channel + * are configurable. + * This function performs configuration of: + * - Sequence length: Number of ranks in the scan sequence. + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from rank 1 to rank n). + * Sequencer ranks are selected using + * function "LL_ADC_REG_SetSequencerRanks()". + * - For devices with sequencer not fully configurable + * (function "LL_ADC_REG_SetSequencerChannels()" available): + * sequencer length and each rank affectation to a channel + * are defined by channel number. + * This function performs configuration of: + * - Sequence length: Number of ranks in the scan sequence is + * defined by number of channels set in the sequence, + * rank of each channel is fixed by channel HW number. + * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...). + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from lowest channel number to + * highest channel number). + * Sequencer ranks are selected using + * function "LL_ADC_REG_SetSequencerChannels()". + * @note On this STM32 series, group regular sequencer configuration + * is conditioned to ADC instance sequencer mode. + * If ADC instance sequencer mode is disabled, sequencers of + * all groups (group regular, group injected) can be configured + * but their execution is disabled (limited to rank 1). + * Refer to function @ref LL_ADC_SetSequencersScanMode(). + * @note Sequencer disabled is equivalent to sequencer of 1 rank: + * ADC conversion on only 1 channel. + * @rmtoll SQR1 L LL_ADC_REG_SetSequencerLength + * @param ADCx ADC instance + * @param SequencerNbRanks This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks) +{ + MODIFY_REG(ADCx->SQR1, ADC_SQR1_L, SequencerNbRanks); +} + +/** + * @brief Get ADC group regular sequencer length and scan direction. + * @note Description of ADC group regular sequencer features: + * - For devices with sequencer fully configurable + * (function "LL_ADC_REG_SetSequencerRanks()" available): + * sequencer length and each rank affectation to a channel + * are configurable. + * This function retrieves: + * - Sequence length: Number of ranks in the scan sequence. + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from rank 1 to rank n). + * Sequencer ranks are selected using + * function "LL_ADC_REG_SetSequencerRanks()". + * - For devices with sequencer not fully configurable + * (function "LL_ADC_REG_SetSequencerChannels()" available): + * sequencer length and each rank affectation to a channel + * are defined by channel number. + * This function retrieves: + * - Sequence length: Number of ranks in the scan sequence is + * defined by number of channels set in the sequence, + * rank of each channel is fixed by channel HW number. + * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...). + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from lowest channel number to + * highest channel number). + * Sequencer ranks are selected using + * function "LL_ADC_REG_SetSequencerChannels()". + * @note On this STM32 series, group regular sequencer configuration + * is conditioned to ADC instance sequencer mode. + * If ADC instance sequencer mode is disabled, sequencers of + * all groups (group regular, group injected) can be configured + * but their execution is disabled (limited to rank 1). + * Refer to function @ref LL_ADC_SetSequencersScanMode(). + * @note Sequencer disabled is equivalent to sequencer of 1 rank: + * ADC conversion on only 1 channel. + * @rmtoll SQR1 L LL_ADC_REG_SetSequencerLength + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerLength(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->SQR1, ADC_SQR1_L)); +} + +/** + * @brief Set ADC group regular sequencer discontinuous mode: + * sequence subdivided and scan conversions interrupted every selected + * number of ranks. + * @note It is not possible to enable both ADC group regular + * continuous mode and sequencer discontinuous mode. + * @note It is not possible to enable both ADC auto-injected mode + * and ADC group regular sequencer discontinuous mode. + * @rmtoll CR1 DISCEN LL_ADC_REG_SetSequencerDiscont\n + * CR1 DISCNUM LL_ADC_REG_SetSequencerDiscont + * @param ADCx ADC instance + * @param SeqDiscont This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE + * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK + * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont) +{ + MODIFY_REG(ADCx->CR1, ADC_CR1_DISCEN | ADC_CR1_DISCNUM, SeqDiscont); +} + +/** + * @brief Get ADC group regular sequencer discontinuous mode: + * sequence subdivided and scan conversions interrupted every selected + * number of ranks. + * @rmtoll CR1 DISCEN LL_ADC_REG_GetSequencerDiscont\n + * CR1 DISCNUM LL_ADC_REG_GetSequencerDiscont + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE + * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK + * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerDiscont(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_DISCEN | ADC_CR1_DISCNUM)); +} + +/** + * @brief Set ADC group regular sequence: channel on the selected + * scan sequence rank. + * @note This function performs configuration of: + * - Channels ordering into each rank of scan sequence: + * whatever channel can be placed into whatever rank. + * @note On this STM32 series, ADC group regular sequencer is + * fully configurable: sequencer length and each rank + * affectation to a channel are configurable. + * Refer to description of function @ref LL_ADC_REG_SetSequencerLength(). + * @note Depending on devices and packages, some channels may not be available. + * Refer to device datasheet for channels availability. + * @note On this STM32 series, to measure internal channels (VrefInt, + * TempSensor, ...), measurement paths to internal channels must be + * enabled separately. + * This can be done using function @ref LL_ADC_SetCommonPathInternalCh(). + * @rmtoll SQR3 SQ1 LL_ADC_REG_SetSequencerRanks\n + * SQR3 SQ2 LL_ADC_REG_SetSequencerRanks\n + * SQR3 SQ3 LL_ADC_REG_SetSequencerRanks\n + * SQR3 SQ4 LL_ADC_REG_SetSequencerRanks\n + * SQR3 SQ5 LL_ADC_REG_SetSequencerRanks\n + * SQR3 SQ6 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ7 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ8 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ9 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ10 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ11 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ12 LL_ADC_REG_SetSequencerRanks\n + * SQR1 SQ13 LL_ADC_REG_SetSequencerRanks\n + * SQR1 SQ14 LL_ADC_REG_SetSequencerRanks\n + * SQR1 SQ15 LL_ADC_REG_SetSequencerRanks\n + * SQR1 SQ16 LL_ADC_REG_SetSequencerRanks + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_RANK_1 + * @arg @ref LL_ADC_REG_RANK_2 + * @arg @ref LL_ADC_REG_RANK_3 + * @arg @ref LL_ADC_REG_RANK_4 + * @arg @ref LL_ADC_REG_RANK_5 + * @arg @ref LL_ADC_REG_RANK_6 + * @arg @ref LL_ADC_REG_RANK_7 + * @arg @ref LL_ADC_REG_RANK_8 + * @arg @ref LL_ADC_REG_RANK_9 + * @arg @ref LL_ADC_REG_RANK_10 + * @arg @ref LL_ADC_REG_RANK_11 + * @arg @ref LL_ADC_REG_RANK_12 + * @arg @ref LL_ADC_REG_RANK_13 + * @arg @ref LL_ADC_REG_RANK_14 + * @arg @ref LL_ADC_REG_RANK_15 + * @arg @ref LL_ADC_REG_RANK_16 + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel) +{ + /* Set bits with content of parameter "Channel" with bits position */ + /* in register and register position depending on parameter "Rank". */ + /* Parameters "Rank" and "Channel" are used with masks because containing */ + /* other bits reserved for other purpose. */ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK)); + + MODIFY_REG(*preg, + ADC_CHANNEL_ID_NUMBER_MASK << (Rank & ADC_REG_RANK_ID_SQRX_MASK), + (Channel & ADC_CHANNEL_ID_NUMBER_MASK) << (Rank & ADC_REG_RANK_ID_SQRX_MASK)); +} + +/** + * @brief Get ADC group regular sequence: channel on the selected + * scan sequence rank. + * @note On this STM32 series, ADC group regular sequencer is + * fully configurable: sequencer length and each rank + * affectation to a channel are configurable. + * Refer to description of function @ref LL_ADC_REG_SetSequencerLength(). + * @note Depending on devices and packages, some channels may not be available. + * Refer to device datasheet for channels availability. + * @note Usage of the returned channel number: + * - To reinject this channel into another function LL_ADC_xxx: + * the returned channel number is only partly formatted on definition + * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared + * with parts of literals LL_ADC_CHANNEL_x or using + * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * Then the selected literal LL_ADC_CHANNEL_x can be used + * as parameter for another function. + * - To get the channel number in decimal format: + * process the returned value with the helper macro + * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * @rmtoll SQR3 SQ1 LL_ADC_REG_GetSequencerRanks\n + * SQR3 SQ2 LL_ADC_REG_GetSequencerRanks\n + * SQR3 SQ3 LL_ADC_REG_GetSequencerRanks\n + * SQR3 SQ4 LL_ADC_REG_GetSequencerRanks\n + * SQR3 SQ5 LL_ADC_REG_GetSequencerRanks\n + * SQR3 SQ6 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ7 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ8 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ9 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ10 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ11 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ12 LL_ADC_REG_GetSequencerRanks\n + * SQR1 SQ13 LL_ADC_REG_GetSequencerRanks\n + * SQR1 SQ14 LL_ADC_REG_GetSequencerRanks\n + * SQR1 SQ15 LL_ADC_REG_GetSequencerRanks\n + * SQR1 SQ16 LL_ADC_REG_GetSequencerRanks + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_RANK_1 + * @arg @ref LL_ADC_REG_RANK_2 + * @arg @ref LL_ADC_REG_RANK_3 + * @arg @ref LL_ADC_REG_RANK_4 + * @arg @ref LL_ADC_REG_RANK_5 + * @arg @ref LL_ADC_REG_RANK_6 + * @arg @ref LL_ADC_REG_RANK_7 + * @arg @ref LL_ADC_REG_RANK_8 + * @arg @ref LL_ADC_REG_RANK_9 + * @arg @ref LL_ADC_REG_RANK_10 + * @arg @ref LL_ADC_REG_RANK_11 + * @arg @ref LL_ADC_REG_RANK_12 + * @arg @ref LL_ADC_REG_RANK_13 + * @arg @ref LL_ADC_REG_RANK_14 + * @arg @ref LL_ADC_REG_RANK_15 + * @arg @ref LL_ADC_REG_RANK_16 + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.\n + * (1) For ADC channel read back from ADC register, + * comparison with internal channel parameter to be done + * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK)); + + return (uint32_t) (READ_BIT(*preg, + ADC_CHANNEL_ID_NUMBER_MASK << (Rank & ADC_REG_RANK_ID_SQRX_MASK)) + >> (Rank & ADC_REG_RANK_ID_SQRX_MASK) + ); +} + +/** + * @brief Set ADC continuous conversion mode on ADC group regular. + * @note Description of ADC continuous conversion mode: + * - single mode: one conversion per trigger + * - continuous mode: after the first trigger, following + * conversions launched successively automatically. + * @note It is not possible to enable both ADC group regular + * continuous mode and sequencer discontinuous mode. + * @rmtoll CR2 CONT LL_ADC_REG_SetContinuousMode + * @param ADCx ADC instance + * @param Continuous This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_CONV_SINGLE + * @arg @ref LL_ADC_REG_CONV_CONTINUOUS + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetContinuousMode(ADC_TypeDef *ADCx, uint32_t Continuous) +{ + MODIFY_REG(ADCx->CR2, ADC_CR2_CONT, Continuous); +} + +/** + * @brief Get ADC continuous conversion mode on ADC group regular. + * @note Description of ADC continuous conversion mode: + * - single mode: one conversion per trigger + * - continuous mode: after the first trigger, following + * conversions launched successively automatically. + * @rmtoll CR2 CONT LL_ADC_REG_GetContinuousMode + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_CONV_SINGLE + * @arg @ref LL_ADC_REG_CONV_CONTINUOUS + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetContinuousMode(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_CONT)); +} + +/** + * @brief Set ADC group regular conversion data transfer: no transfer or + * transfer by DMA, and DMA requests mode. + * @note If transfer by DMA selected, specifies the DMA requests + * mode: + * - Limited mode (One shot mode): DMA transfer requests are stopped + * when number of DMA data transfers (number of + * ADC conversions) is reached. + * This ADC mode is intended to be used with DMA mode non-circular. + * - Unlimited mode: DMA transfer requests are unlimited, + * whatever number of DMA data transfers (number of + * ADC conversions). + * This ADC mode is intended to be used with DMA mode circular. + * @note If ADC DMA requests mode is set to unlimited and DMA is set to + * mode non-circular: + * when DMA transfers size will be reached, DMA will stop transfers of + * ADC conversions data ADC will raise an overrun error + * (overrun flag and interruption if enabled). + * @note For devices with several ADC instances: ADC multimode DMA + * settings are available using function @ref LL_ADC_SetMultiDMATransfer(). + * @note To configure DMA source address (peripheral address), + * use function @ref LL_ADC_DMA_GetRegAddr(). + * @rmtoll CR2 DMA LL_ADC_REG_SetDMATransfer\n + * CR2 DDS LL_ADC_REG_SetDMATransfer + * @param ADCx ADC instance + * @param DMATransfer This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE + * @arg @ref LL_ADC_REG_DMA_TRANSFER_LIMITED + * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetDMATransfer(ADC_TypeDef *ADCx, uint32_t DMATransfer) +{ + MODIFY_REG(ADCx->CR2, ADC_CR2_DMA | ADC_CR2_DDS, DMATransfer); +} + +/** + * @brief Get ADC group regular conversion data transfer: no transfer or + * transfer by DMA, and DMA requests mode. + * @note If transfer by DMA selected, specifies the DMA requests + * mode: + * - Limited mode (One shot mode): DMA transfer requests are stopped + * when number of DMA data transfers (number of + * ADC conversions) is reached. + * This ADC mode is intended to be used with DMA mode non-circular. + * - Unlimited mode: DMA transfer requests are unlimited, + * whatever number of DMA data transfers (number of + * ADC conversions). + * This ADC mode is intended to be used with DMA mode circular. + * @note If ADC DMA requests mode is set to unlimited and DMA is set to + * mode non-circular: + * when DMA transfers size will be reached, DMA will stop transfers of + * ADC conversions data ADC will raise an overrun error + * (overrun flag and interruption if enabled). + * @note For devices with several ADC instances: ADC multimode DMA + * settings are available using function @ref LL_ADC_GetMultiDMATransfer(). + * @note To configure DMA source address (peripheral address), + * use function @ref LL_ADC_DMA_GetRegAddr(). + * @rmtoll CR2 DMA LL_ADC_REG_GetDMATransfer\n + * CR2 DDS LL_ADC_REG_GetDMATransfer + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE + * @arg @ref LL_ADC_REG_DMA_TRANSFER_LIMITED + * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetDMATransfer(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_DMA | ADC_CR2_DDS)); +} + +/** + * @brief Specify which ADC flag between EOC (end of unitary conversion) + * or EOS (end of sequence conversions) is used to indicate + * the end of conversion. + * @note This feature is aimed to be set when using ADC with + * programming model by polling or interruption + * (programming model by DMA usually uses DMA interruptions + * to indicate end of conversion and data transfer). + * @note For ADC group injected, end of conversion (flag&IT) is raised + * only at the end of the sequence. + * @rmtoll CR2 EOCS LL_ADC_REG_SetFlagEndOfConversion + * @param ADCx ADC instance + * @param EocSelection This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_FLAG_EOC_SEQUENCE_CONV + * @arg @ref LL_ADC_REG_FLAG_EOC_UNITARY_CONV + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetFlagEndOfConversion(ADC_TypeDef *ADCx, uint32_t EocSelection) +{ + MODIFY_REG(ADCx->CR2, ADC_CR2_EOCS, EocSelection); +} + +/** + * @brief Get which ADC flag between EOC (end of unitary conversion) + * or EOS (end of sequence conversions) is used to indicate + * the end of conversion. + * @rmtoll CR2 EOCS LL_ADC_REG_GetFlagEndOfConversion + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_FLAG_EOC_SEQUENCE_CONV + * @arg @ref LL_ADC_REG_FLAG_EOC_UNITARY_CONV + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetFlagEndOfConversion(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_EOCS)); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_Group_Injected Configuration of ADC hierarchical scope: group injected + * @{ + */ + +/** + * @brief Set ADC group injected conversion trigger source: + * internal (SW start) or from external IP (timer event, + * external interrupt line). + * @note On this STM32 series, setting of external trigger edge is performed + * using function @ref LL_ADC_INJ_StartConversionExtTrig(). + * @note Availability of parameters of trigger sources from timer + * depends on timers availability on the selected device. + * @rmtoll CR2 JEXTSEL LL_ADC_INJ_SetTriggerSource\n + * CR2 JEXTEN LL_ADC_INJ_SetTriggerSource + * @param ADCx ADC instance + * @param TriggerSource This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM5_TRGO + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource) +{ +/* Note: On this STM32 series, ADC group injected external trigger edge */ +/* is used to perform a ADC conversion start. */ +/* This function does not set external trigger edge. */ +/* This feature is set using function */ +/* @ref LL_ADC_INJ_StartConversionExtTrig(). */ + MODIFY_REG(ADCx->CR2, ADC_CR2_JEXTSEL, (TriggerSource & ADC_CR2_JEXTSEL)); +} + +/** + * @brief Get ADC group injected conversion trigger source: + * internal (SW start) or from external IP (timer event, + * external interrupt line). + * @note To determine whether group injected trigger source is + * internal (SW start) or external, without detail + * of which peripheral is selected as external trigger, + * (equivalent to + * "if(LL_ADC_INJ_GetTriggerSource(ADC1) == LL_ADC_INJ_TRIG_SOFTWARE)") + * use function @ref LL_ADC_INJ_IsTriggerSourceSWStart. + * @note Availability of parameters of trigger sources from timer + * depends on timers availability on the selected device. + * @rmtoll CR2 JEXTSEL LL_ADC_INJ_GetTriggerSource\n + * CR2 JEXTEN LL_ADC_INJ_GetTriggerSource + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO2 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_TRGO2 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH3 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM5_TRGO + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH1 + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM6_TRGO + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerSource(ADC_TypeDef *ADCx) +{ + uint32_t TriggerSource = READ_BIT(ADCx->CR2, ADC_CR2_JEXTSEL | ADC_CR2_JEXTEN); + + /* Value for shift of {0; 4; 8; 12} depending on value of bitfield */ + /* corresponding to ADC_CR2_JEXTEN {0; 1; 2; 3}. */ + uint32_t ShiftExten = ((TriggerSource & ADC_CR2_JEXTEN) >> (ADC_INJ_TRIG_EXTEN_BITOFFSET_POS - 2U)); + + /* Set bitfield corresponding to ADC_CR2_JEXTEN and ADC_CR2_JEXTSEL */ + /* to match with triggers literals definition. */ + return ((TriggerSource + & (ADC_INJ_TRIG_SOURCE_MASK << ShiftExten) & ADC_CR2_JEXTSEL) + | ((ADC_INJ_TRIG_EDGE_MASK << ShiftExten) & ADC_CR2_JEXTEN) + ); +} + +/** + * @brief Get ADC group injected conversion trigger source internal (SW start) + or external + * @note In case of group injected trigger source set to external trigger, + * to determine which peripheral is selected as external trigger, + * use function @ref LL_ADC_INJ_GetTriggerSource. + * @rmtoll CR2 JEXTEN LL_ADC_INJ_IsTriggerSourceSWStart + * @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_INJ_IsTriggerSourceSWStart(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->CR2, ADC_CR2_JEXTEN) == (LL_ADC_INJ_TRIG_SOFTWARE & ADC_CR2_JEXTEN)); +} + +/** + * @brief Get ADC group injected conversion trigger polarity. + * Applicable only for trigger source set to external trigger. + * @rmtoll CR2 JEXTEN LL_ADC_INJ_GetTriggerEdge + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING + * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING + * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerEdge(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_JEXTEN)); +} + +/** + * @brief Set ADC group injected sequencer length and scan direction. + * @note This function performs configuration of: + * - Sequence length: Number of ranks in the scan sequence. + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from rank 1 to rank n). + * @note On this STM32 series, group injected sequencer configuration + * is conditioned to ADC instance sequencer mode. + * If ADC instance sequencer mode is disabled, sequencers of + * all groups (group regular, group injected) can be configured + * but their execution is disabled (limited to rank 1). + * Refer to function @ref LL_ADC_SetSequencersScanMode(). + * @note Sequencer disabled is equivalent to sequencer of 1 rank: + * ADC conversion on only 1 channel. + * @rmtoll JSQR JL LL_ADC_INJ_SetSequencerLength + * @param ADCx ADC instance + * @param SequencerNbRanks This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks) +{ + MODIFY_REG(ADCx->JSQR, ADC_JSQR_JL, SequencerNbRanks); +} + +/** + * @brief Get ADC group injected sequencer length and scan direction. + * @note This function retrieves: + * - Sequence length: Number of ranks in the scan sequence. + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from rank 1 to rank n). + * @note On this STM32 series, group injected sequencer configuration + * is conditioned to ADC instance sequencer mode. + * If ADC instance sequencer mode is disabled, sequencers of + * all groups (group regular, group injected) can be configured + * but their execution is disabled (limited to rank 1). + * Refer to function @ref LL_ADC_SetSequencersScanMode(). + * @note Sequencer disabled is equivalent to sequencer of 1 rank: + * ADC conversion on only 1 channel. + * @rmtoll JSQR JL LL_ADC_INJ_GetSequencerLength + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerLength(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JL)); +} + +/** + * @brief Set ADC group injected sequencer discontinuous mode: + * sequence subdivided and scan conversions interrupted every selected + * number of ranks. + * @note It is not possible to enable both ADC group injected + * auto-injected mode and sequencer discontinuous mode. + * @rmtoll CR1 DISCEN LL_ADC_INJ_SetSequencerDiscont + * @param ADCx ADC instance + * @param SeqDiscont This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE + * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont) +{ + MODIFY_REG(ADCx->CR1, ADC_CR1_JDISCEN, SeqDiscont); +} + +/** + * @brief Get ADC group injected sequencer discontinuous mode: + * sequence subdivided and scan conversions interrupted every selected + * number of ranks. + * @rmtoll CR1 DISCEN LL_ADC_REG_GetSequencerDiscont + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE + * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerDiscont(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_JDISCEN)); +} + +/** + * @brief Set ADC group injected sequence: channel on the selected + * sequence rank. + * @note Depending on devices and packages, some channels may not be available. + * Refer to device datasheet for channels availability. + * @note On this STM32 series, to measure internal channels (VrefInt, + * TempSensor, ...), measurement paths to internal channels must be + * enabled separately. + * This can be done using function @ref LL_ADC_SetCommonPathInternalCh(). + * @rmtoll JSQR JSQ1 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ2 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ3 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ4 LL_ADC_INJ_SetSequencerRanks + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel) +{ + /* 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. */ + uint32_t tmpreg1 = (READ_BIT(ADCx->JSQR, ADC_JSQR_JL) >> ADC_JSQR_JL_Pos) + 1U; + + MODIFY_REG(ADCx->JSQR, + ADC_CHANNEL_ID_NUMBER_MASK << (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1))), + (Channel & ADC_CHANNEL_ID_NUMBER_MASK) << (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1)))); +} + +/** + * @brief Get ADC group injected sequence: channel on the selected + * sequence rank. + * @note Depending on devices and packages, some channels may not be available. + * Refer to device datasheet for channels availability. + * @note Usage of the returned channel number: + * - To reinject this channel into another function LL_ADC_xxx: + * the returned channel number is only partly formatted on definition + * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared + * with parts of literals LL_ADC_CHANNEL_x or using + * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * Then the selected literal LL_ADC_CHANNEL_x can be used + * as parameter for another function. + * - To get the channel number in decimal format: + * process the returned value with the helper macro + * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * @rmtoll JSQR JSQ1 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ2 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ3 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ4 LL_ADC_INJ_SetSequencerRanks + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled.\n + * (1) For ADC channel read back from ADC register, + * comparison with internal channel parameter to be done + * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank) +{ + uint32_t tmpreg1 = (READ_BIT(ADCx->JSQR, ADC_JSQR_JL) >> ADC_JSQR_JL_Pos) + 1U; + + return (uint32_t)(READ_BIT(ADCx->JSQR, + ADC_CHANNEL_ID_NUMBER_MASK << (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1)))) + >> (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1))) + ); +} + +/** + * @brief Set ADC group injected conversion trigger: + * independent or from ADC group regular. + * @note This mode can be used to extend number of data registers + * updated after one ADC conversion trigger and with data + * permanently kept (not erased by successive conversions of scan of + * ADC sequencer ranks), up to 5 data registers: + * 1 data register on ADC group regular, 4 data registers + * on ADC group injected. + * @note If ADC group injected injected trigger source is set to an + * external trigger, this feature must be must be set to + * independent trigger. + * ADC group injected automatic trigger is compliant only with + * group injected trigger source set to SW start, without any + * further action on ADC group injected conversion start or stop: + * in this case, ADC group injected is controlled only + * from ADC group regular. + * @note It is not possible to enable both ADC group injected + * auto-injected mode and sequencer discontinuous mode. + * @rmtoll CR1 JAUTO LL_ADC_INJ_SetTrigAuto + * @param ADCx ADC instance + * @param TrigAuto This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT + * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetTrigAuto(ADC_TypeDef *ADCx, uint32_t TrigAuto) +{ + MODIFY_REG(ADCx->CR1, ADC_CR1_JAUTO, TrigAuto); +} + +/** + * @brief Get ADC group injected conversion trigger: + * independent or from ADC group regular. + * @rmtoll CR1 JAUTO LL_ADC_INJ_GetTrigAuto + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT + * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetTrigAuto(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_JAUTO)); +} + +/** + * @brief Set ADC group injected offset. + * @note It sets: + * - ADC group injected rank to which the offset programmed + * will be applied + * - Offset level (offset to be subtracted from the raw + * converted data). + * Caution: Offset format is dependent to ADC resolution: + * offset has to be left-aligned on bit 11, the LSB (right bits) + * are set to 0. + * @note Offset cannot be enabled or disabled. + * To emulate offset disabled, set an offset value equal to 0. + * @rmtoll JOFR1 JOFFSET1 LL_ADC_INJ_SetOffset\n + * JOFR2 JOFFSET2 LL_ADC_INJ_SetOffset\n + * JOFR3 JOFFSET3 LL_ADC_INJ_SetOffset\n + * JOFR4 JOFFSET4 LL_ADC_INJ_SetOffset + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @param OffsetLevel Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetOffset(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t OffsetLevel) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JOFR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JOFRX_REGOFFSET_MASK)); + + MODIFY_REG(*preg, + ADC_JOFR1_JOFFSET1, + OffsetLevel); +} + +/** + * @brief Get ADC group injected offset. + * @note It gives offset level (offset to be subtracted from the raw converted data). + * Caution: Offset format is dependent to ADC resolution: + * offset has to be left-aligned on bit 11, the LSB (right bits) + * are set to 0. + * @rmtoll JOFR1 JOFFSET1 LL_ADC_INJ_GetOffset\n + * JOFR2 JOFFSET2 LL_ADC_INJ_GetOffset\n + * JOFR3 JOFFSET3 LL_ADC_INJ_GetOffset\n + * JOFR4 JOFFSET4 LL_ADC_INJ_GetOffset + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetOffset(ADC_TypeDef *ADCx, uint32_t Rank) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JOFR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JOFRX_REGOFFSET_MASK)); + + return (uint32_t)(READ_BIT(*preg, + ADC_JOFR1_JOFFSET1) + ); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_Channels Configuration of ADC hierarchical scope: channels + * @{ + */ + +/** + * @brief Set sampling time of the selected ADC channel + * Unit: ADC clock cycles. + * @note On this device, sampling time is on channel scope: independently + * of channel mapped on ADC group regular or injected. + * @note In case of internal channel (VrefInt, TempSensor, ...) to be + * converted: + * sampling time constraints must be respected (sampling time can be + * adjusted in function of ADC clock frequency and sampling time + * setting). + * Refer to device datasheet for timings values (parameters TS_vrefint, + * TS_temp, ...). + * @note Conversion time is the addition of sampling time and processing time. + * Refer to reference manual for ADC processing time of + * this STM32 series. + * @note In case of ADC conversion of internal channel (VrefInt, + * temperature sensor, ...), a sampling time minimum value + * is required. + * Refer to device datasheet. + * @rmtoll SMPR1 SMP18 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP17 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP16 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP15 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP14 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP13 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP12 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP11 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP10 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP9 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP8 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP7 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP6 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP5 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP4 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP3 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP2 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP1 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP0 LL_ADC_SetChannelSamplingTime + * @param ADCx ADC instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. + * @param SamplingTime This parameter can be one of the following values: + * @arg @ref LL_ADC_SAMPLINGTIME_3CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_15CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_28CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_56CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_84CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_112CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_144CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_480CYCLES + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime) +{ + /* Set bits with content of parameter "SamplingTime" with bits position */ + /* in register and register position depending on parameter "Channel". */ + /* Parameter "Channel" is used with masks because containing */ + /* other bits reserved for other purpose. */ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK)); + + MODIFY_REG(*preg, + ADC_SMPR2_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK), + SamplingTime << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK)); +} + +/** + * @brief Get sampling time of the selected ADC channel + * Unit: ADC clock cycles. + * @note On this device, sampling time is on channel scope: independently + * of channel mapped on ADC group regular or injected. + * @note Conversion time is the addition of sampling time and processing time. + * Refer to reference manual for ADC processing time of + * this STM32 series. + * @rmtoll SMPR1 SMP18 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP17 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP16 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP15 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP14 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP13 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP12 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP11 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP10 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP9 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP8 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP7 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP6 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP5 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP4 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP3 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP2 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP1 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP0 LL_ADC_GetChannelSamplingTime + * @param ADCx ADC instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_18 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1)(2) + * @arg @ref LL_ADC_CHANNEL_VBAT (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F75x, STM32F74x, STM32F76x, STM32F77x, STM32F72x and STM32F73x: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_SAMPLINGTIME_3CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_15CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_28CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_56CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_84CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_112CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_144CYCLES + * @arg @ref LL_ADC_SAMPLINGTIME_480CYCLES + */ +__STATIC_INLINE uint32_t LL_ADC_GetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK)); + + return (uint32_t)(READ_BIT(*preg, + ADC_SMPR2_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK)) + >> __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK) + ); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_AnalogWatchdog Configuration of ADC transversal scope: analog watchdog + * @{ + */ + +/** + * @brief Set ADC analog watchdog monitored channels: + * a single channel or all channels, + * on ADC groups regular and-or injected. + * @note Once monitored channels are selected, analog watchdog + * is enabled. + * @note In case of need to define a single channel to monitor + * with analog watchdog from sequencer channel definition, + * use helper macro @ref __LL_ADC_ANALOGWD_CHANNEL_GROUP(). + * @note On this STM32 series, there is only 1 kind of analog watchdog + * instance: + * - AWD standard (instance AWD1): + * - channels monitored: can monitor 1 channel or all channels. + * - groups monitored: ADC groups regular and-or injected. + * - resolution: resolution is not limited (corresponds to + * ADC resolution configured). + * @rmtoll CR1 AWD1CH LL_ADC_SetAnalogWDMonitChannels\n + * CR1 AWD1SGL LL_ADC_SetAnalogWDMonitChannels\n + * CR1 AWD1EN LL_ADC_SetAnalogWDMonitChannels + * @param ADCx ADC instance + * @param AWDChannelGroup This parameter can be one of the following values: + * @arg @ref LL_ADC_AWD_DISABLE + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG + * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG + * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG + * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG + * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG + * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG + * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG + * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG + * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG + * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG + * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG + * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG + * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG + * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG + * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG + * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG + * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG + * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG + * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_18_REG + * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ + * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (1) + * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (1) + * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (1) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (1)(2) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (1)(2) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (1)(2) + * @arg @ref LL_ADC_AWD_CH_VBAT_REG (1) + * @arg @ref LL_ADC_AWD_CH_VBAT_INJ (1) + * @arg @ref LL_ADC_AWD_CH_VBAT_REG_INJ (1) + * + * (1) On STM32F7, parameter available only on ADC instance: ADC1.\n + * (2) On devices STM32F7xx,a limitation: this internal channel is shared between temperature sensor and Vbat, only 1 measurement path must be enabled. + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t AWDChannelGroup) +{ + MODIFY_REG(ADCx->CR1, + (ADC_CR1_AWDEN | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL | ADC_CR1_AWDCH), + AWDChannelGroup); +} + +/** + * @brief Get ADC analog watchdog monitored channel. + * @note Usage of the returned channel number: + * - To reinject this channel into another function LL_ADC_xxx: + * the returned channel number is only partly formatted on definition + * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared + * with parts of literals LL_ADC_CHANNEL_x or using + * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * Then the selected literal LL_ADC_CHANNEL_x can be used + * as parameter for another function. + * - To get the channel number in decimal format: + * process the returned value with the helper macro + * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * Applicable only when the analog watchdog is set to monitor + * one channel. + * @note On this STM32 series, there is only 1 kind of analog watchdog + * instance: + * - AWD standard (instance AWD1): + * - channels monitored: can monitor 1 channel or all channels. + * - groups monitored: ADC groups regular and-or injected. + * - resolution: resolution is not limited (corresponds to + * ADC resolution configured). + * @rmtoll CR1 AWD1CH LL_ADC_GetAnalogWDMonitChannels\n + * CR1 AWD1SGL LL_ADC_GetAnalogWDMonitChannels\n + * CR1 AWD1EN LL_ADC_GetAnalogWDMonitChannels + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_AWD_DISABLE + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG + * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG + * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG + * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG + * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG + * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG + * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG + * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG + * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG + * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG + * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG + * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG + * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG + * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG + * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG + * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG + * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG + * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG + * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_18_REG + * @arg @ref LL_ADC_AWD_CHANNEL_18_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_18_REG_INJ + */ +__STATIC_INLINE uint32_t LL_ADC_GetAnalogWDMonitChannels(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, (ADC_CR1_AWDEN | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL | ADC_CR1_AWDCH))); +} + +/** + * @brief Set ADC analog watchdog threshold value of threshold + * high or low. + * @note In case of ADC resolution different of 12 bits, + * analog watchdog thresholds data require a specific shift. + * Use helper macro @ref __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(). + * @note On this STM32 series, there is only 1 kind of analog watchdog + * instance: + * - AWD standard (instance AWD1): + * - channels monitored: can monitor 1 channel or all channels. + * - groups monitored: ADC groups regular and-or injected. + * - resolution: resolution is not limited (corresponds to + * ADC resolution configured). + * @rmtoll HTR HT LL_ADC_SetAnalogWDThresholds\n + * LTR LT LL_ADC_SetAnalogWDThresholds + * @param ADCx ADC instance + * @param AWDThresholdsHighLow This parameter can be one of the following values: + * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH + * @arg @ref LL_ADC_AWD_THRESHOLD_LOW + * @param AWDThresholdValue Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDThresholdsHighLow, uint32_t AWDThresholdValue) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->HTR, AWDThresholdsHighLow); + + MODIFY_REG(*preg, + ADC_HTR_HT, + AWDThresholdValue); +} + +/** + * @brief Get ADC analog watchdog threshold value of threshold high or + * threshold low. + * @note In case of ADC resolution different of 12 bits, + * analog watchdog thresholds data require a specific shift. + * Use helper macro @ref __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION(). + * @rmtoll HTR HT LL_ADC_GetAnalogWDThresholds\n + * LTR LT LL_ADC_GetAnalogWDThresholds + * @param ADCx ADC instance + * @param AWDThresholdsHighLow This parameter can be one of the following values: + * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH + * @arg @ref LL_ADC_AWD_THRESHOLD_LOW + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF +*/ +__STATIC_INLINE uint32_t LL_ADC_GetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDThresholdsHighLow) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->HTR, AWDThresholdsHighLow); + + return (uint32_t)(READ_BIT(*preg, ADC_HTR_HT)); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_Multimode Configuration of ADC hierarchical scope: multimode + * @{ + */ + +/** + * @brief Set ADC multimode configuration to operate in independent mode + * or multimode (for devices with several ADC instances). + * @note If multimode configuration: the selected ADC instance is + * either master or slave depending on hardware. + * Refer to reference manual. + * @rmtoll CCR MULTI LL_ADC_SetMultimode + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @param Multimode This parameter can be one of the following values: + * @arg @ref LL_ADC_MULTI_INDEPENDENT + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIMULT + * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL + * @arg @ref LL_ADC_MULTI_DUAL_INJ_SIMULT + * @arg @ref LL_ADC_MULTI_DUAL_INJ_ALTERN + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT + * @arg @ref LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM + * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_SIM + * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_ALT + * @arg @ref LL_ADC_MULTI_TRIPLE_INJ_SIMULT + * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIMULT + * @arg @ref LL_ADC_MULTI_TRIPLE_REG_INTERL + * @arg @ref LL_ADC_MULTI_TRIPLE_INJ_ALTERN + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetMultimode(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t Multimode) +{ + MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_MULTI, Multimode); +} + +/** + * @brief Get ADC multimode configuration to operate in independent mode + * or multimode (for devices with several ADC instances). + * @note If multimode configuration: the selected ADC instance is + * either master or slave depending on hardware. + * Refer to reference manual. + * @rmtoll CCR MULTI LL_ADC_GetMultimode + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_MULTI_INDEPENDENT + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIMULT + * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL + * @arg @ref LL_ADC_MULTI_DUAL_INJ_SIMULT + * @arg @ref LL_ADC_MULTI_DUAL_INJ_ALTERN + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT + * @arg @ref LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM + * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_SIM + * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_ALT + * @arg @ref LL_ADC_MULTI_TRIPLE_INJ_SIMULT + * @arg @ref LL_ADC_MULTI_TRIPLE_REG_SIMULT + * @arg @ref LL_ADC_MULTI_TRIPLE_REG_INTERL + * @arg @ref LL_ADC_MULTI_TRIPLE_INJ_ALTERN + */ +__STATIC_INLINE uint32_t LL_ADC_GetMultimode(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_MULTI)); +} + +/** + * @brief Set ADC multimode conversion data transfer: no transfer + * or transfer by DMA. + * @note If ADC multimode transfer by DMA is not selected: + * each ADC uses its own DMA channel, with its individual + * DMA transfer settings. + * If ADC multimode transfer by DMA is selected: + * One DMA channel is used for both ADC (DMA of ADC master) + * Specifies the DMA requests mode: + * - Limited mode (One shot mode): DMA transfer requests are stopped + * when number of DMA data transfers (number of + * ADC conversions) is reached. + * This ADC mode is intended to be used with DMA mode non-circular. + * - Unlimited mode: DMA transfer requests are unlimited, + * whatever number of DMA data transfers (number of + * ADC conversions). + * This ADC mode is intended to be used with DMA mode circular. + * @note If ADC DMA requests mode is set to unlimited and DMA is set to + * mode non-circular: + * when DMA transfers size will be reached, DMA will stop transfers of + * ADC conversions data ADC will raise an overrun error + * (overrun flag and interruption if enabled). + * @note How to retrieve multimode conversion data: + * Whatever multimode transfer by DMA setting: using function + * @ref LL_ADC_REG_ReadMultiConversionData32(). + * If ADC multimode transfer by DMA is selected: conversion data + * is a raw data with ADC master and slave concatenated. + * A macro is available to get the conversion data of + * ADC master or ADC slave: see helper macro + * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(). + * @rmtoll CCR MDMA LL_ADC_SetMultiDMATransfer\n + * CCR DDS LL_ADC_SetMultiDMATransfer + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @param MultiDMATransfer This parameter can be one of the following values: + * @arg @ref LL_ADC_MULTI_REG_DMA_EACH_ADC + * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_1 + * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_2 + * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_3 + * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_1 + * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_2 + * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_3 + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t MultiDMATransfer) +{ + MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_DMA | ADC_CCR_DDS, MultiDMATransfer); +} + +/** + * @brief Get ADC multimode conversion data transfer: no transfer + * or transfer by DMA. + * @note If ADC multimode transfer by DMA is not selected: + * each ADC uses its own DMA channel, with its individual + * DMA transfer settings. + * If ADC multimode transfer by DMA is selected: + * One DMA channel is used for both ADC (DMA of ADC master) + * Specifies the DMA requests mode: + * - Limited mode (One shot mode): DMA transfer requests are stopped + * when number of DMA data transfers (number of + * ADC conversions) is reached. + * This ADC mode is intended to be used with DMA mode non-circular. + * - Unlimited mode: DMA transfer requests are unlimited, + * whatever number of DMA data transfers (number of + * ADC conversions). + * This ADC mode is intended to be used with DMA mode circular. + * @note If ADC DMA requests mode is set to unlimited and DMA is set to + * mode non-circular: + * when DMA transfers size will be reached, DMA will stop transfers of + * ADC conversions data ADC will raise an overrun error + * (overrun flag and interruption if enabled). + * @note How to retrieve multimode conversion data: + * Whatever multimode transfer by DMA setting: using function + * @ref LL_ADC_REG_ReadMultiConversionData32(). + * If ADC multimode transfer by DMA is selected: conversion data + * is a raw data with ADC master and slave concatenated. + * A macro is available to get the conversion data of + * ADC master or ADC slave: see helper macro + * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(). + * @rmtoll CCR MDMA LL_ADC_GetMultiDMATransfer\n + * CCR DDS LL_ADC_GetMultiDMATransfer + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_MULTI_REG_DMA_EACH_ADC + * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_1 + * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_2 + * @arg @ref LL_ADC_MULTI_REG_DMA_LIMIT_3 + * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_1 + * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_2 + * @arg @ref LL_ADC_MULTI_REG_DMA_UNLMT_3 + */ +__STATIC_INLINE uint32_t LL_ADC_GetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DMA | ADC_CCR_DDS)); +} + +/** + * @brief Set ADC multimode delay between 2 sampling phases. + * @note The sampling delay range depends on ADC resolution: + * - ADC resolution 12 bits can have maximum delay of 12 cycles. + * - ADC resolution 10 bits can have maximum delay of 10 cycles. + * - ADC resolution 8 bits can have maximum delay of 8 cycles. + * - ADC resolution 6 bits can have maximum delay of 6 cycles. + * @rmtoll CCR DELAY LL_ADC_SetMultiTwoSamplingDelay + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @param MultiTwoSamplingDelay This parameter can be one of the following values: + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_13CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_14CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_15CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_16CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_17CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_18CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_19CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_20CYCLES + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetMultiTwoSamplingDelay(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t MultiTwoSamplingDelay) +{ + MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_DELAY, MultiTwoSamplingDelay); +} + +/** + * @brief Get ADC multimode delay between 2 sampling phases. + * @rmtoll CCR DELAY LL_ADC_GetMultiTwoSamplingDelay + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_13CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_14CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_15CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_16CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_17CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_18CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_19CYCLES + * @arg @ref LL_ADC_MULTI_TWOSMP_DELAY_20CYCLES + */ +__STATIC_INLINE uint32_t LL_ADC_GetMultiTwoSamplingDelay(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DELAY)); +} + +/** + * @} + */ +/** @defgroup ADC_LL_EF_Operation_ADC_Instance Operation on ADC hierarchical scope: ADC instance + * @{ + */ + +/** + * @brief Enable the selected ADC instance. + * @note On this STM32 series, after ADC enable, a delay for + * ADC internal analog stabilization is required before performing a + * ADC conversion start. + * Refer to device datasheet, parameter tSTAB. + * @rmtoll CR2 ADON LL_ADC_Enable + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_Enable(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR2, ADC_CR2_ADON); +} + +/** + * @brief Disable the selected ADC instance. + * @rmtoll CR2 ADON LL_ADC_Disable + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_Disable(ADC_TypeDef *ADCx) +{ + CLEAR_BIT(ADCx->CR2, ADC_CR2_ADON); +} + +/** + * @brief Get the selected ADC instance enable state. + * @rmtoll CR2 ADON 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) +{ + return (READ_BIT(ADCx->CR2, ADC_CR2_ADON) == (ADC_CR2_ADON)); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Operation_ADC_Group_Regular Operation on ADC hierarchical scope: group regular + * @{ + */ + +/** + * @brief Start ADC group regular conversion. + * @note On this STM32 series, this function is relevant only for + * internal trigger (SW start), not for external trigger: + * - If ADC trigger has been set to software start, ADC conversion + * starts immediately. + * - If ADC trigger has been set to external trigger, ADC conversion + * start must be performed using function + * @ref LL_ADC_REG_StartConversionExtTrig(). + * (if external trigger edge would have been set during ADC other + * settings, ADC conversion would start at trigger event + * as soon as ADC is enabled). + * @rmtoll CR2 SWSTART LL_ADC_REG_StartConversionSWStart + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_StartConversionSWStart(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR2, ADC_CR2_SWSTART); +} + +/** + * @brief Start ADC group regular conversion from external trigger. + * @note ADC conversion will start at next trigger event (on the selected + * trigger edge) following the ADC start conversion command. + * @note On this STM32 series, this function is relevant for + * ADC conversion start from external trigger. + * If internal trigger (SW start) is needed, perform ADC conversion + * start using function @ref LL_ADC_REG_StartConversionSWStart(). + * @rmtoll CR2 EXTEN LL_ADC_REG_StartConversionExtTrig + * @param ExternalTriggerEdge This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_TRIG_EXT_RISING + * @arg @ref LL_ADC_REG_TRIG_EXT_FALLING + * @arg @ref LL_ADC_REG_TRIG_EXT_RISINGFALLING + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_StartConversionExtTrig(ADC_TypeDef *ADCx, uint32_t ExternalTriggerEdge) +{ + SET_BIT(ADCx->CR2, ExternalTriggerEdge); +} + +/** + * @brief Stop ADC group regular conversion from external trigger. + * @note No more ADC conversion will start at next trigger event + * following the ADC stop conversion command. + * If a conversion is on-going, it will be completed. + * @note On this STM32 series, there is no specific command + * to stop a conversion on-going or to stop ADC converting + * in continuous mode. These actions can be performed + * using function @ref LL_ADC_Disable(). + * @rmtoll CR2 EXTEN LL_ADC_REG_StopConversionExtTrig + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_StopConversionExtTrig(ADC_TypeDef *ADCx) +{ + CLEAR_BIT(ADCx->CR2, ADC_CR2_EXTEN); +} + +/** + * @brief Get ADC group regular conversion data, range fit for + * all ADC configurations: all ADC resolutions and + * all oversampling increased data width (for devices + * with feature oversampling). + * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData32 + * @param ADCx ADC instance + * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_ADC_REG_ReadConversionData32(ADC_TypeDef *ADCx) +{ + return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA)); +} + +/** + * @brief Get ADC group regular conversion data, range fit for + * ADC resolution 12 bits. + * @note For devices with feature oversampling: Oversampling + * can increase data width, function for extended range + * may be needed: @ref LL_ADC_REG_ReadConversionData32. + * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData12 + * @param ADCx ADC instance + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData12(ADC_TypeDef *ADCx) +{ + return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA)); +} + +/** + * @brief Get ADC group regular conversion data, range fit for + * ADC resolution 10 bits. + * @note For devices with feature oversampling: Oversampling + * can increase data width, function for extended range + * may be needed: @ref LL_ADC_REG_ReadConversionData32. + * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData10 + * @param ADCx ADC instance + * @retval Value between Min_Data=0x000 and Max_Data=0x3FF + */ +__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData10(ADC_TypeDef *ADCx) +{ + return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA)); +} + +/** + * @brief Get ADC group regular conversion data, range fit for + * ADC resolution 8 bits. + * @note For devices with feature oversampling: Oversampling + * can increase data width, function for extended range + * may be needed: @ref LL_ADC_REG_ReadConversionData32. + * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData8 + * @param ADCx ADC instance + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData8(ADC_TypeDef *ADCx) +{ + return (uint8_t)(READ_BIT(ADCx->DR, ADC_DR_DATA) & 0x000000FFUL); +} + +/** + * @brief Get ADC group regular conversion data, range fit for + * ADC resolution 6 bits. + * @note For devices with feature oversampling: Oversampling + * can increase data width, function for extended range + * may be needed: @ref LL_ADC_REG_ReadConversionData32. + * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData6 + * @param ADCx ADC instance + * @retval Value between Min_Data=0x00 and Max_Data=0x3F + */ +__STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData6(ADC_TypeDef *ADCx) +{ + return (uint8_t)(READ_BIT(ADCx->DR, ADC_DR_DATA) & 0x000000FFUL); +} + +/** + * @brief Get ADC multimode conversion data of ADC master, ADC slave + * or raw data with ADC master and slave concatenated. + * @note If raw data with ADC master and slave concatenated is retrieved, + * a macro is available to get the conversion data of + * ADC master or ADC slave: see helper macro + * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(). + * (however this macro is mainly intended for multimode + * transfer by DMA, because this function can do the same + * by getting multimode conversion data of ADC master or ADC slave + * separately). + * @rmtoll CDR DATA1 LL_ADC_REG_ReadMultiConversionData32\n + * CDR DATA2 LL_ADC_REG_ReadMultiConversionData32 + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @param ConversionData This parameter can be one of the following values: + * @arg @ref LL_ADC_MULTI_MASTER + * @arg @ref LL_ADC_MULTI_SLAVE + * @arg @ref LL_ADC_MULTI_MASTER_SLAVE + * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_ADC_REG_ReadMultiConversionData32(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t ConversionData) +{ + return (uint32_t)(READ_BIT(ADCxy_COMMON->CDR, + ADC_DR_ADC2DATA) + >> POSITION_VAL(ConversionData) + ); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Operation_ADC_Group_Injected Operation on ADC hierarchical scope: group injected + * @{ + */ + +/** + * @brief Start ADC group injected conversion. + * @note On this STM32 series, this function is relevant only for + * internal trigger (SW start), not for external trigger: + * - If ADC trigger has been set to software start, ADC conversion + * starts immediately. + * - If ADC trigger has been set to external trigger, ADC conversion + * start must be performed using function + * @ref LL_ADC_INJ_StartConversionExtTrig(). + * (if external trigger edge would have been set during ADC other + * settings, ADC conversion would start at trigger event + * as soon as ADC is enabled). + * @rmtoll CR2 JSWSTART LL_ADC_INJ_StartConversionSWStart + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_StartConversionSWStart(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR2, ADC_CR2_JSWSTART); +} + +/** + * @brief Start ADC group injected conversion from external trigger. + * @note ADC conversion will start at next trigger event (on the selected + * trigger edge) following the ADC start conversion command. + * @note On this STM32 series, this function is relevant for + * ADC conversion start from external trigger. + * If internal trigger (SW start) is needed, perform ADC conversion + * start using function @ref LL_ADC_INJ_StartConversionSWStart(). + * @rmtoll CR2 JEXTEN LL_ADC_INJ_StartConversionExtTrig + * @param ExternalTriggerEdge This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING + * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING + * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_StartConversionExtTrig(ADC_TypeDef *ADCx, uint32_t ExternalTriggerEdge) +{ + SET_BIT(ADCx->CR2, ExternalTriggerEdge); +} + +/** + * @brief Stop ADC group injected conversion from external trigger. + * @note No more ADC conversion will start at next trigger event + * following the ADC stop conversion command. + * If a conversion is on-going, it will be completed. + * @note On this STM32 series, there is no specific command + * to stop a conversion on-going or to stop ADC converting + * in continuous mode. These actions can be performed + * using function @ref LL_ADC_Disable(). + * @rmtoll CR2 JEXTEN LL_ADC_INJ_StopConversionExtTrig + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_StopConversionExtTrig(ADC_TypeDef *ADCx) +{ + CLEAR_BIT(ADCx->CR2, ADC_CR2_JEXTEN); +} + +/** + * @brief Get ADC group regular conversion data, range fit for + * all ADC configurations: all ADC resolutions and + * all oversampling increased data width (for devices + * with feature oversampling). + * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData32\n + * JDR2 JDATA LL_ADC_INJ_ReadConversionData32\n + * JDR3 JDATA LL_ADC_INJ_ReadConversionData32\n + * JDR4 JDATA LL_ADC_INJ_ReadConversionData32 + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_ReadConversionData32(ADC_TypeDef *ADCx, uint32_t Rank) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK)); + + return (uint32_t)(READ_BIT(*preg, + ADC_JDR1_JDATA) + ); +} + +/** + * @brief Get ADC group injected conversion data, range fit for + * ADC resolution 12 bits. + * @note For devices with feature oversampling: Oversampling + * can increase data width, function for extended range + * may be needed: @ref LL_ADC_INJ_ReadConversionData32. + * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData12\n + * JDR2 JDATA LL_ADC_INJ_ReadConversionData12\n + * JDR3 JDATA LL_ADC_INJ_ReadConversionData12\n + * JDR4 JDATA LL_ADC_INJ_ReadConversionData12 + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData12(ADC_TypeDef *ADCx, uint32_t Rank) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK)); + + return (uint16_t)(READ_BIT(*preg, + ADC_JDR1_JDATA) + ); +} + +/** + * @brief Get ADC group injected conversion data, range fit for + * ADC resolution 10 bits. + * @note For devices with feature oversampling: Oversampling + * can increase data width, function for extended range + * may be needed: @ref LL_ADC_INJ_ReadConversionData32. + * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData10\n + * JDR2 JDATA LL_ADC_INJ_ReadConversionData10\n + * JDR3 JDATA LL_ADC_INJ_ReadConversionData10\n + * JDR4 JDATA LL_ADC_INJ_ReadConversionData10 + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Value between Min_Data=0x000 and Max_Data=0x3FF + */ +__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData10(ADC_TypeDef *ADCx, uint32_t Rank) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK)); + + return (uint16_t)(READ_BIT(*preg, + ADC_JDR1_JDATA) + ); +} + +/** + * @brief Get ADC group injected conversion data, range fit for + * ADC resolution 8 bits. + * @note For devices with feature oversampling: Oversampling + * can increase data width, function for extended range + * may be needed: @ref LL_ADC_INJ_ReadConversionData32. + * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData8\n + * JDR2 JDATA LL_ADC_INJ_ReadConversionData8\n + * JDR3 JDATA LL_ADC_INJ_ReadConversionData8\n + * JDR4 JDATA LL_ADC_INJ_ReadConversionData8 + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData8(ADC_TypeDef *ADCx, uint32_t Rank) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK)); + + return (uint8_t)(READ_BIT(*preg, + ADC_JDR1_JDATA) & 0x000000FFUL + ); +} + +/** + * @brief Get ADC group injected conversion data, range fit for + * ADC resolution 6 bits. + * @note For devices with feature oversampling: Oversampling + * can increase data width, function for extended range + * may be needed: @ref LL_ADC_INJ_ReadConversionData32. + * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData6\n + * JDR2 JDATA LL_ADC_INJ_ReadConversionData6\n + * JDR3 JDATA LL_ADC_INJ_ReadConversionData6\n + * JDR4 JDATA LL_ADC_INJ_ReadConversionData6 + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Value between Min_Data=0x00 and Max_Data=0x3F + */ +__STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData6(ADC_TypeDef *ADCx, uint32_t Rank) +{ + __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK)); + + return (uint8_t)(READ_BIT(*preg, + ADC_JDR1_JDATA) & 0x000000FFUL + ); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_FLAG_Management ADC flag management + * @{ + */ + +/** + * @brief Get flag ADC group regular end of unitary conversion + * or end of sequence conversions, depending on + * ADC configuration. + * @note To configure flag of end of conversion, + * use function @ref LL_ADC_REG_SetFlagEndOfConversion(). + * @rmtoll SR EOC LL_ADC_IsActiveFlag_EOCS + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOCS(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->SR, LL_ADC_FLAG_EOCS) == (LL_ADC_FLAG_EOCS)); +} + +/** + * @brief Get flag ADC group regular overrun. + * @rmtoll SR OVR LL_ADC_IsActiveFlag_OVR + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_OVR(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->SR, LL_ADC_FLAG_OVR) == (LL_ADC_FLAG_OVR)); +} + + +/** + * @brief Get flag ADC group injected end of sequence conversions. + * @rmtoll SR JEOC LL_ADC_IsActiveFlag_JEOS + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 series, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADCx->SR, LL_ADC_FLAG_JEOS) == (LL_ADC_FLAG_JEOS)); +} + +/** + * @brief Get flag ADC analog watchdog 1 flag + * @rmtoll SR AWD LL_ADC_IsActiveFlag_AWD1 + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD1(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->SR, LL_ADC_FLAG_AWD1) == (LL_ADC_FLAG_AWD1)); +} + +/** + * @brief Clear flag ADC group regular end of unitary conversion + * or end of sequence conversions, depending on + * ADC configuration. + * @note To configure flag of end of conversion, + * use function @ref LL_ADC_REG_SetFlagEndOfConversion(). + * @rmtoll SR EOC LL_ADC_ClearFlag_EOCS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_ClearFlag_EOCS(ADC_TypeDef *ADCx) +{ + WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_EOCS); +} + +/** + * @brief Clear flag ADC group regular overrun. + * @rmtoll SR OVR LL_ADC_ClearFlag_OVR + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_ClearFlag_OVR(ADC_TypeDef *ADCx) +{ + WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_OVR); +} + + +/** + * @brief Clear flag ADC group injected end of sequence conversions. + * @rmtoll SR JEOC LL_ADC_ClearFlag_JEOS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_ClearFlag_JEOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 series, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_JEOS); +} + +/** + * @brief Clear flag ADC analog watchdog 1. + * @rmtoll SR AWD LL_ADC_ClearFlag_AWD1 + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_ClearFlag_AWD1(ADC_TypeDef *ADCx) +{ + WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_AWD1); +} + +/** + * @brief Get flag multimode ADC group regular end of unitary conversion + * or end of sequence conversions, depending on + * ADC configuration, of the ADC master. + * @note To configure flag of end of conversion, + * use function @ref LL_ADC_REG_SetFlagEndOfConversion(). + * @rmtoll CSR EOC1 LL_ADC_IsActiveFlag_MST_EOCS + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOCS(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (READ_BIT(ADC1->SR, LL_ADC_FLAG_EOCS) == (LL_ADC_FLAG_EOCS)); +} + +/** + * @brief Get flag multimode ADC group regular end of unitary conversion + * or end of sequence conversions, depending on + * ADC configuration, of the ADC slave 1. + * @note To configure flag of end of conversion, + * use function @ref LL_ADC_REG_SetFlagEndOfConversion(). + * @rmtoll CSR EOC2 LL_ADC_IsActiveFlag_SLV1_EOCS + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV1_EOCS(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOCS_SLV1) == (LL_ADC_FLAG_EOCS_SLV1)); +} + +/** + * @brief Get flag multimode ADC group regular end of unitary conversion + * or end of sequence conversions, depending on + * ADC configuration, of the ADC slave 2. + * @note To configure flag of end of conversion, + * use function @ref LL_ADC_REG_SetFlagEndOfConversion(). + * @rmtoll CSR EOC3 LL_ADC_IsActiveFlag_SLV2_EOCS + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV2_EOCS(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOCS_SLV2) == (LL_ADC_FLAG_EOCS_SLV2)); +} +/** + * @brief Get flag multimode ADC group regular overrun of the ADC master. + * @rmtoll CSR OVR1 LL_ADC_IsActiveFlag_MST_OVR + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_OVR(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_MST) == (LL_ADC_FLAG_OVR_MST)); +} + +/** + * @brief Get flag multimode ADC group regular overrun of the ADC slave 1. + * @rmtoll CSR OVR2 LL_ADC_IsActiveFlag_SLV1_OVR + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV1_OVR(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_SLV1) == (LL_ADC_FLAG_OVR_SLV1)); +} + +/** + * @brief Get flag multimode ADC group regular overrun of the ADC slave 2. + * @rmtoll CSR OVR3 LL_ADC_IsActiveFlag_SLV2_OVR + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV2_OVR(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_SLV2) == (LL_ADC_FLAG_OVR_SLV2)); +} + + +/** + * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC master. + * @rmtoll CSR JEOC LL_ADC_IsActiveFlag_MST_EOCS + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOS(ADC_Common_TypeDef *ADCxy_COMMON) +{ + /* Note: on this STM32 series, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADCxy_COMMON->CSR, ADC_CSR_JEOC1) == (ADC_CSR_JEOC1)); +} + +/** + * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC slave 1. + * @rmtoll CSR JEOC2 LL_ADC_IsActiveFlag_SLV1_JEOS + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV1_JEOS(ADC_Common_TypeDef *ADCxy_COMMON) +{ + /* Note: on this STM32 series, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADCxy_COMMON->CSR, ADC_CSR_JEOC2) == (ADC_CSR_JEOC2)); +} + +/** + * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC slave 2. + * @rmtoll CSR JEOC3 LL_ADC_IsActiveFlag_SLV2_JEOS + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV2_JEOS(ADC_Common_TypeDef *ADCxy_COMMON) +{ + /* Note: on this STM32 series, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADCxy_COMMON->CSR, ADC_CSR_JEOC3) == (ADC_CSR_JEOC3)); +} + +/** + * @brief Get flag multimode ADC analog watchdog 1 of the ADC master. + * @rmtoll CSR AWD1 LL_ADC_IsActiveFlag_MST_AWD1 + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD1(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_MST) == (LL_ADC_FLAG_AWD1_MST)); +} + +/** + * @brief Get flag multimode analog watchdog 1 of the ADC slave 1. + * @rmtoll CSR AWD2 LL_ADC_IsActiveFlag_SLV1_AWD1 + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV1_AWD1(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_SLV1) == (LL_ADC_FLAG_AWD1_SLV1)); +} + +/** + * @brief Get flag multimode analog watchdog 1 of the ADC slave 2. + * @rmtoll CSR AWD3 LL_ADC_IsActiveFlag_SLV2_AWD1 + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV2_AWD1(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_SLV2) == (LL_ADC_FLAG_AWD1_SLV2)); +} + + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_IT_Management ADC IT management + * @{ + */ + +/** + * @brief Enable interruption ADC group regular end of unitary conversion + * or end of sequence conversions, depending on + * ADC configuration. + * @note To configure flag of end of conversion, + * use function @ref LL_ADC_REG_SetFlagEndOfConversion(). + * @rmtoll CR1 EOCIE LL_ADC_EnableIT_EOCS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_EnableIT_EOCS(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR1, LL_ADC_IT_EOCS); +} + +/** + * @brief Enable ADC group regular interruption overrun. + * @rmtoll CR1 OVRIE LL_ADC_EnableIT_OVR + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_EnableIT_OVR(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR1, LL_ADC_IT_OVR); +} + + +/** + * @brief Enable interruption ADC group injected end of sequence conversions. + * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_EnableIT_JEOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 series, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + SET_BIT(ADCx->CR1, LL_ADC_IT_JEOS); +} + +/** + * @brief Enable interruption ADC analog watchdog 1. + * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1 + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_EnableIT_AWD1(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR1, LL_ADC_IT_AWD1); +} + +/** + * @brief Disable interruption ADC group regular end of unitary conversion + * or end of sequence conversions, depending on + * ADC configuration. + * @note To configure flag of end of conversion, + * use function @ref LL_ADC_REG_SetFlagEndOfConversion(). + * @rmtoll CR1 EOCIE LL_ADC_DisableIT_EOCS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_DisableIT_EOCS(ADC_TypeDef *ADCx) +{ + CLEAR_BIT(ADCx->CR1, LL_ADC_IT_EOCS); +} + +/** + * @brief Disable interruption ADC group regular overrun. + * @rmtoll CR1 OVRIE LL_ADC_DisableIT_OVR + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_DisableIT_OVR(ADC_TypeDef *ADCx) +{ + CLEAR_BIT(ADCx->CR1, LL_ADC_IT_OVR); +} + + +/** + * @brief Disable interruption ADC group injected end of sequence conversions. + * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_DisableIT_JEOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 series, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + CLEAR_BIT(ADCx->CR1, LL_ADC_IT_JEOS); +} + +/** + * @brief Disable interruption ADC analog watchdog 1. + * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1 + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_DisableIT_AWD1(ADC_TypeDef *ADCx) +{ + CLEAR_BIT(ADCx->CR1, LL_ADC_IT_AWD1); +} + +/** + * @brief Get state of interruption ADC group regular end of unitary conversion + * or end of sequence conversions, depending on + * ADC configuration. + * @note To configure flag of end of conversion, + * use function @ref LL_ADC_REG_SetFlagEndOfConversion(). + * (0: interrupt disabled, 1: interrupt enabled) + * @rmtoll CR1 EOCIE LL_ADC_IsEnabledIT_EOCS + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOCS(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->CR1, LL_ADC_IT_EOCS) == (LL_ADC_IT_EOCS)); +} + +/** + * @brief Get state of interruption ADC group regular overrun + * (0: interrupt disabled, 1: interrupt enabled). + * @rmtoll CR1 OVRIE LL_ADC_IsEnabledIT_OVR + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_OVR(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->CR1, LL_ADC_IT_OVR) == (LL_ADC_IT_OVR)); +} + + +/** + * @brief Get state of interruption ADC group injected end of sequence conversions + * (0: interrupt disabled, 1: interrupt enabled). + * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 series, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADCx->CR1, LL_ADC_IT_JEOS) == (LL_ADC_IT_JEOS)); +} + +/** + * @brief Get state of interruption ADC analog watchdog 1 + * (0: interrupt disabled, 1: interrupt enabled). + * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1 + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD1(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->CR1, LL_ADC_IT_AWD1) == (LL_ADC_IT_AWD1)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup ADC_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +/* Initialization of some features of ADC common parameters and multimode */ +ErrorStatus LL_ADC_CommonDeInit(ADC_Common_TypeDef *ADCxy_COMMON); +ErrorStatus LL_ADC_CommonInit(ADC_Common_TypeDef *ADCxy_COMMON, LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct); +void LL_ADC_CommonStructInit(LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct); + +/* De-initialization of ADC instance, ADC group regular and ADC group injected */ +/* (availability of ADC group injected depends on STM32 families) */ +ErrorStatus LL_ADC_DeInit(ADC_TypeDef *ADCx); + +/* Initialization of some features of ADC instance */ +ErrorStatus LL_ADC_Init(ADC_TypeDef *ADCx, LL_ADC_InitTypeDef *ADC_InitStruct); +void LL_ADC_StructInit(LL_ADC_InitTypeDef *ADC_InitStruct); + +/* Initialization of some features of ADC instance and ADC group regular */ +ErrorStatus LL_ADC_REG_Init(ADC_TypeDef *ADCx, LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct); +void LL_ADC_REG_StructInit(LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct); + +/* Initialization of some features of ADC instance and ADC group injected */ +ErrorStatus LL_ADC_INJ_Init(ADC_TypeDef *ADCx, LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct); +void LL_ADC_INJ_StructInit(LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* ADC1 || ADC2 || ADC3 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_ADC_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h new file mode 100644 index 0000000..a7af3f4 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h @@ -0,0 +1,1973 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_bus.h + * @author MCD Application Team + * @brief Header file of BUS LL module. + + @verbatim + ##### RCC Limitations ##### + ============================================================================== + [..] + A delay between an RCC peripheral clock enable and the effective peripheral + enabling should be taken into account in order to manage the peripheral read/write + from/to registers. + (+) This delay depends on the peripheral mapping. + (++) AHB & APB peripherals, 1 dummy read is necessary + + [..] + Workarounds: + (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_BUS_H +#define __STM32F7xx_LL_BUS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup BUS_LL BUS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + * @{ + */ + +/** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + * @{ + */ +#define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_AHB1_GRP1_PERIPH_GPIOA RCC_AHB1ENR_GPIOAEN +#define LL_AHB1_GRP1_PERIPH_GPIOB RCC_AHB1ENR_GPIOBEN +#define LL_AHB1_GRP1_PERIPH_GPIOC RCC_AHB1ENR_GPIOCEN +#define LL_AHB1_GRP1_PERIPH_GPIOD RCC_AHB1ENR_GPIODEN +#define LL_AHB1_GRP1_PERIPH_GPIOE RCC_AHB1ENR_GPIOEEN +#define LL_AHB1_GRP1_PERIPH_GPIOF RCC_AHB1ENR_GPIOFEN +#define LL_AHB1_GRP1_PERIPH_GPIOG RCC_AHB1ENR_GPIOGEN +#define LL_AHB1_GRP1_PERIPH_GPIOH RCC_AHB1ENR_GPIOHEN +#define LL_AHB1_GRP1_PERIPH_GPIOI RCC_AHB1ENR_GPIOIEN +#if defined(GPIOJ) +#define LL_AHB1_GRP1_PERIPH_GPIOJ RCC_AHB1ENR_GPIOJEN +#endif /* GPIOJ */ +#if defined(GPIOK) +#define LL_AHB1_GRP1_PERIPH_GPIOK RCC_AHB1ENR_GPIOKEN +#endif /* GPIOK */ +#define LL_AHB1_GRP1_PERIPH_CRC RCC_AHB1ENR_CRCEN +#define LL_AHB1_GRP1_PERIPH_BKPSRAM RCC_AHB1ENR_BKPSRAMEN +#define LL_AHB1_GRP1_PERIPH_DTCMRAM RCC_AHB1ENR_DTCMRAMEN +#define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHB1ENR_DMA1EN +#define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHB1ENR_DMA2EN +#if defined(DMA2D) +#define LL_AHB1_GRP1_PERIPH_DMA2D RCC_AHB1ENR_DMA2DEN +#endif /* DMA2D */ +#if defined(ETH) +#define LL_AHB1_GRP1_PERIPH_ETHMAC RCC_AHB1ENR_ETHMACEN +#define LL_AHB1_GRP1_PERIPH_ETHMACTX RCC_AHB1ENR_ETHMACTXEN +#define LL_AHB1_GRP1_PERIPH_ETHMACRX RCC_AHB1ENR_ETHMACRXEN +#define LL_AHB1_GRP1_PERIPH_ETHMACPTP RCC_AHB1ENR_ETHMACPTPEN +#endif /* ETH */ +#define LL_AHB1_GRP1_PERIPH_OTGHS RCC_AHB1ENR_OTGHSEN +#define LL_AHB1_GRP1_PERIPH_OTGHSULPI RCC_AHB1ENR_OTGHSULPIEN +#define LL_AHB1_GRP1_PERIPH_AXI RCC_AHB1LPENR_AXILPEN +#define LL_AHB1_GRP1_PERIPH_FLITF RCC_AHB1LPENR_FLITFLPEN +#define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHB1LPENR_SRAM1LPEN +#define LL_AHB1_GRP1_PERIPH_SRAM2 RCC_AHB1LPENR_SRAM2LPEN +/** + * @} + */ + +/** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH + * @{ + */ +#define LL_AHB2_GRP1_PERIPH_ALL 0xFFFFFFFFU +#if defined(DCMI) +#define LL_AHB2_GRP1_PERIPH_DCMI RCC_AHB2ENR_DCMIEN +#endif /* DCMI */ +#if defined(JPEG) +#define LL_AHB2_GRP1_PERIPH_JPEG RCC_AHB2ENR_JPEGEN +#endif /* JPEG */ +#if defined(CRYP) +#define LL_AHB2_GRP1_PERIPH_CRYP RCC_AHB2ENR_CRYPEN +#endif /* CRYP */ +#if defined(AES) +#define LL_AHB2_GRP1_PERIPH_AES RCC_AHB2ENR_AESEN +#endif /* AES */ +#if defined(HASH) +#define LL_AHB2_GRP1_PERIPH_HASH RCC_AHB2ENR_HASHEN +#endif /* HASH */ +#define LL_AHB2_GRP1_PERIPH_RNG RCC_AHB2ENR_RNGEN +#define LL_AHB2_GRP1_PERIPH_OTGFS RCC_AHB2ENR_OTGFSEN +/** + * @} + */ + +/** @defgroup BUS_LL_EC_AHB3_GRP1_PERIPH AHB3 GRP1 PERIPH + * @{ + */ +#define LL_AHB3_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_AHB3_GRP1_PERIPH_FMC RCC_AHB3ENR_FMCEN +#define LL_AHB3_GRP1_PERIPH_QSPI RCC_AHB3ENR_QSPIEN +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + * @{ + */ +#define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN +#define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN +#define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN +#define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN +#define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN +#define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN +#define LL_APB1_GRP1_PERIPH_TIM12 RCC_APB1ENR_TIM12EN +#define LL_APB1_GRP1_PERIPH_TIM13 RCC_APB1ENR_TIM13EN +#define LL_APB1_GRP1_PERIPH_TIM14 RCC_APB1ENR_TIM14EN +#define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APB1ENR_LPTIM1EN +#define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN +#define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN +#define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN +#if defined(SPDIFRX) +#define LL_APB1_GRP1_PERIPH_SPDIFRX RCC_APB1ENR_SPDIFRXEN +#endif /* SPDIFRX */ +#define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN +#define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN +#define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN +#define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN +#define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN +#define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN +#define LL_APB1_GRP1_PERIPH_I2C3 RCC_APB1ENR_I2C3EN +#if defined(I2C4) +#define LL_APB1_GRP1_PERIPH_I2C4 RCC_APB1ENR_I2C4EN +#endif /* I2C4 */ +#define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR_CAN1EN +#if defined(CAN2) +#define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR_CAN2EN +#endif /* CAN2 */ +#if defined(CAN3) +#define LL_APB1_GRP1_PERIPH_CAN3 RCC_APB1ENR_CAN3EN +#endif /* CAN3 */ +#if defined(CEC) +#define LL_APB1_GRP1_PERIPH_CEC RCC_APB1ENR_CECEN +#endif /* CEC */ +#define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN +#define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN +#define LL_APB1_GRP1_PERIPH_UART7 RCC_APB1ENR_UART7EN +#define LL_APB1_GRP1_PERIPH_UART8 RCC_APB1ENR_UART8EN +#if defined(RCC_APB1ENR_RTCEN) +#define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APB1ENR_RTCEN +#endif /* RCC_APB1ENR_RTCEN */ +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + * @{ + */ +#define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN +#define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN +#define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN +#define LL_APB2_GRP1_PERIPH_USART6 RCC_APB2ENR_USART6EN +#define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN +#define LL_APB2_GRP1_PERIPH_ADC2 RCC_APB2ENR_ADC2EN +#define LL_APB2_GRP1_PERIPH_ADC3 RCC_APB2ENR_ADC3EN +#define LL_APB2_GRP1_PERIPH_SDMMC1 RCC_APB2ENR_SDMMC1EN +#if defined(SDMMC2) +#define LL_APB2_GRP1_PERIPH_SDMMC2 RCC_APB2ENR_SDMMC2EN +#endif /* SDMMC2 */ +#define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN +#define LL_APB2_GRP1_PERIPH_SPI4 RCC_APB2ENR_SPI4EN +#define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN +#define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN +#define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN +#define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN +#define LL_APB2_GRP1_PERIPH_SPI5 RCC_APB2ENR_SPI5EN +#if defined(SPI6) +#define LL_APB2_GRP1_PERIPH_SPI6 RCC_APB2ENR_SPI6EN +#endif /* SPI6 */ +#define LL_APB2_GRP1_PERIPH_SAI1 RCC_APB2ENR_SAI1EN +#define LL_APB2_GRP1_PERIPH_SAI2 RCC_APB2ENR_SAI2EN +#if defined(LTDC) +#define LL_APB2_GRP1_PERIPH_LTDC RCC_APB2ENR_LTDCEN +#endif /* LTDC */ +#if defined(DSI) +#define LL_APB2_GRP1_PERIPH_DSI RCC_APB2ENR_DSIEN +#endif /* DSI */ +#if defined(DFSDM1_Channel0) +#define LL_APB2_GRP1_PERIPH_DFSDM1 RCC_APB2ENR_DFSDM1EN +#endif /* DFSDM1_Channel0 */ +#if defined(MDIOS) +#define LL_APB2_GRP1_PERIPH_MDIO RCC_APB2ENR_MDIOEN +#endif /* MDIOS */ +#if defined(USB_HS_PHYC) +#define LL_APB2_GRP1_PERIPH_OTGPHYC RCC_APB2ENR_OTGPHYCEN +#endif /* USB_HS_PHYC */ +#define LL_APB2_GRP1_PERIPH_ADC RCC_APB2RSTR_ADCRST +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + * @{ + */ + +/** @defgroup BUS_LL_EF_AHB1 AHB1 + * @{ + */ + +/** + * @brief Enable AHB1 peripherals clock. + * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GPIOBEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GPIOCEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GPIODEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GPIOEEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GPIOFEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GPIOGEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GPIOHEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GPIOIEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GPIOJEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GPIOKEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR CRCEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR DMA1EN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR DMA2EN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR DMA2DEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR ETHMACEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR OTGHSEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR OTGHSULPIEN LL_AHB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB1ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if AHB1 peripheral clock is enabled or not + * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GPIOBEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GPIOCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GPIODEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GPIOEEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GPIOFEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GPIOGEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GPIOHEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GPIOIEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GPIOJEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GPIOKEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR DMA2DEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR ETHMACEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR OTGHSEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->AHB1ENR, Periphs) == Periphs); +} + +/** + * @brief Disable AHB1 peripherals clock. + * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GPIOBEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GPIOCEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GPIODEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GPIOEEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GPIOFEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GPIOGEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GPIOHEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GPIOIEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GPIOJEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GPIOKEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR CRCEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR DMA1EN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR DMA2EN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR DMA2DEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR ETHMACEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR OTGHSEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB1ENR, Periphs); +} + +/** + * @brief Force AHB1 peripherals reset. + * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GPIODRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GPIOERST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR CRCRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR DMA2RST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->AHB1RSTR, Periphs); +} + +/** + * @brief Release AHB1 peripherals reset. + * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GPIODRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GPIOERST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB1RSTR, Periphs); +} + +/** + * @brief Enable AHB1 peripheral clocks in low-power mode + * @rmtoll AHB1LPENR GPIOALPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR GPIOBLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR GPIOCLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR GPIODLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR GPIOELPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR GPIOFLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR GPIOGLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR GPIOHLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR GPIOILPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR GPIOJLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR GPIOKLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR CRCLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR AXILPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR FLITFLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR SRAM1LPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR SRAM2LPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR BKPSRAMLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR DTCMRAMLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR DMA1LPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR DMA2LPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR DMA2DLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR ETHMACLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR ETHMACTXLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR ETHMACRXLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR ETHMACPTPLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR OTGHSLPEN LL_AHB1_GRP1_EnableClockLowPower\n + * AHB1LPENR OTGHSULPILPEN LL_AHB1_GRP1_EnableClockLowPower + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_AXI + * @arg @ref LL_AHB1_GRP1_PERIPH_FLITF + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM2 + * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_EnableClockLowPower(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB1LPENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB1LPENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable AHB1 peripheral clocks in low-power mode + * @rmtoll AHB1LPENR GPIOALPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR GPIOBLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR GPIOCLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR GPIODLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR GPIOELPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR GPIOFLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR GPIOGLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR GPIOHLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR GPIOILPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR GPIOJLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR GPIOKLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR CRCLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR AXILPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR FLITFLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR SRAM1LPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR SRAM2LPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR BKPSRAMLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR DTCMRAMLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR DMA1LPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR DMA2LPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR DMA2DLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR ETHMACLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR ETHMACTXLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR ETHMACRXLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR ETHMACPTPLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR OTGHSLPEN LL_AHB1_GRP1_DisableClockLowPower\n + * AHB1LPENR OTGHSULPILPEN LL_AHB1_GRP1_DisableClockLowPower + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_AXI + * @arg @ref LL_AHB1_GRP1_PERIPH_FLITF + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM2 + * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_DisableClockLowPower(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB1LPENR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_AHB2 AHB2 + * @{ + */ + +/** + * @brief Enable AHB2 peripherals clock. + * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR JPEGEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR CRYPEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR AESEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR HASHEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR RNGEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR OTGFSEN LL_AHB2_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB2ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if AHB2 peripheral clock is enabled or not + * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR JPEGEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR CRYPEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR AESEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR HASHEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR RNGEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR OTGFSEN LL_AHB2_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_AHB2_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->AHB2ENR, Periphs) == Periphs); +} + +/** + * @brief Disable AHB2 peripherals clock. + * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR JPEGEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR CRYPEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR AESEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR HASHEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR RNGEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR OTGFSEN LL_AHB2_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB2ENR, Periphs); +} + +/** + * @brief Force AHB2 peripherals reset. + * @rmtoll AHB2RSTR DCMIRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR JPEGRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR CRYPRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR AESRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR HASHRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR RNGRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->AHB2RSTR, Periphs); +} + +/** + * @brief Release AHB2 peripherals reset. + * @rmtoll AHB2RSTR DCMIRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR JPEGRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR CRYPRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR AESRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR HASHRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR RNGRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB2RSTR, Periphs); +} + +/** + * @brief Enable AHB2 peripheral clocks in low-power mode + * @rmtoll AHB2LPENR DCMILPEN LL_AHB2_GRP1_EnableClockLowPower\n + * AHB2LPENR JPEGLPEN LL_AHB2_GRP1_EnableClockLowPower\n + * AHB2LPENR CRYPLPEN LL_AHB2_GRP1_EnableClockLowPower\n + * AHB2LPENR AESLPEN LL_AHB2_GRP1_EnableClockLowPower\n + * AHB2LPENR HASHLPEN LL_AHB2_GRP1_EnableClockLowPower\n + * AHB2LPENR RNGLPEN LL_AHB2_GRP1_EnableClockLowPower\n + * AHB2LPENR OTGFSLPEN LL_AHB2_GRP1_EnableClockLowPower + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_EnableClockLowPower(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB2LPENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB2LPENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable AHB2 peripheral clocks in low-power mode + * @rmtoll AHB2LPENR DCMILPEN LL_AHB2_GRP1_DisableClockLowPower\n + * AHB2LPENR JPEGLPEN LL_AHB2_GRP1_DisableClockLowPower\n + * AHB2LPENR CRYPLPEN LL_AHB2_GRP1_DisableClockLowPower\n + * AHB2LPENR AESLPEN LL_AHB2_GRP1_DisableClockLowPower\n + * AHB2LPENR HASHLPEN LL_AHB2_GRP1_DisableClockLowPower\n + * AHB2LPENR RNGLPEN LL_AHB2_GRP1_DisableClockLowPower\n + * AHB2LPENR OTGFSLPEN LL_AHB2_GRP1_DisableClockLowPower + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_DisableClockLowPower(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB2LPENR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_AHB3 AHB3 + * @{ + */ + +/** + * @brief Enable AHB3 peripherals clock. + * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_EnableClock\n + * AHB3ENR QSPIEN LL_AHB3_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB3ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB3ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if AHB3 peripheral clock is enabled or not + * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_IsEnabledClock\n + * AHB3ENR QSPIEN LL_AHB3_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_AHB3_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->AHB3ENR, Periphs) == Periphs); +} + +/** + * @brief Disable AHB3 peripherals clock. + * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_DisableClock\n + * AHB3ENR QSPIEN LL_AHB3_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB3ENR, Periphs); +} + +/** + * @brief Force AHB3 peripherals reset. + * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ForceReset\n + * AHB3RSTR QSPIRST LL_AHB3_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_ALL + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->AHB3RSTR, Periphs); +} + +/** + * @brief Release AHB3 peripherals reset. + * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ReleaseReset\n + * AHB3RSTR QSPIRST LL_AHB3_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB3RSTR, Periphs); +} + +/** + * @brief Enable AHB3 peripheral clocks in low-power mode + * @rmtoll AHB3LPENR FMCLPEN LL_AHB3_GRP1_EnableClockLowPower\n + * AHB3LPENR QSPILPEN LL_AHB3_GRP1_EnableClockLowPower + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_EnableClockLowPower(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB3LPENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB3LPENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable AHB3 peripheral clocks in low-power mode + * @rmtoll AHB3LPENR FMCLPEN LL_AHB3_GRP1_DisableClockLowPower\n + * AHB3LPENR QSPILPEN LL_AHB3_GRP1_DisableClockLowPower + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_DisableClockLowPower(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB3LPENR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB1 APB1 + * @{ + */ + +/** + * @brief Enable APB1 peripherals clock. + * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM12EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM13EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM14EN LL_APB1_GRP1_EnableClock\n + * APB1ENR LPTIM1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_EnableClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR SPDIFRXEN LL_APB1_GRP1_EnableClock\n + * APB1ENR USART2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR USART3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR UART4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR UART5EN LL_APB1_GRP1_EnableClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR I2C3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR I2C4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR CAN1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR CAN2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR CAN3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR CECEN LL_APB1_GRP1_EnableClock\n + * APB1ENR PWREN LL_APB1_GRP1_EnableClock\n + * APB1ENR DACEN LL_APB1_GRP1_EnableClock\n + * APB1ENR UART7EN LL_APB1_GRP1_EnableClock\n + * APB1ENR UART8EN LL_APB1_GRP1_EnableClock\n + * APB1ENR RTCEN LL_APB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_UART7 + * @arg @ref LL_APB1_GRP1_PERIPH_UART8 + * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB1ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB1 peripheral clock is enabled or not + * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM12EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM13EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM14EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR LPTIM1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR SPDIFRXEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USART2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USART3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR UART4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR UART5EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR I2C3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR I2C4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR CAN1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR CAN2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR CAN3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR CECEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR PWREN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR DACEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR UART7EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR UART8EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR RTCEN LL_APB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_UART7 + * @arg @ref LL_APB1_GRP1_PERIPH_UART8 + * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->APB1ENR, Periphs) == Periphs); +} + +/** + * @brief Disable APB1 peripherals clock. + * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM12EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM13EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM14EN LL_APB1_GRP1_DisableClock\n + * APB1ENR LPTIM1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_DisableClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR SPDIFRXEN LL_APB1_GRP1_DisableClock\n + * APB1ENR USART2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR USART3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR UART4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR UART5EN LL_APB1_GRP1_DisableClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR I2C3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR I2C4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR CAN1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR CAN2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR CAN3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR CECEN LL_APB1_GRP1_DisableClock\n + * APB1ENR PWREN LL_APB1_GRP1_DisableClock\n + * APB1ENR DACEN LL_APB1_GRP1_DisableClock\n + * APB1ENR UART7EN LL_APB1_GRP1_DisableClock\n + * APB1ENR UART8EN LL_APB1_GRP1_DisableClock\n + * APB1ENR RTCEN LL_APB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_UART7 + * @arg @ref LL_APB1_GRP1_PERIPH_UART8 + * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1ENR, Periphs); +} + +/** + * @brief Force APB1 peripherals reset. + * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM5RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM6RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM7RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM12RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM13RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM14RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR LPTIM1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR WWDGRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR SPI2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR SPI3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR SPDIFRXRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USART2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USART3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR UART4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR UART5RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR I2C1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR I2C2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR I2C3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR I2C4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR CAN1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR CAN2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR CAN3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR CECRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR PWRRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR DACRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR UART7RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR UART8RST LL_APB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_UART7 + * @arg @ref LL_APB1_GRP1_PERIPH_UART8 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB1RSTR, Periphs); +} + +/** + * @brief Release APB1 peripherals reset. + * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM5RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM6RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM7RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM12RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM13RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM14RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR LPTIM1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR WWDGRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR SPI2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR SPI3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR SPDIFRXRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USART2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USART3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR UART4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR UART5RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR I2C1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR I2C2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR I2C3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR I2C4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR CAN1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR CAN2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR CAN3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR CECRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR PWRRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR DACRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR UART7RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR UART8RST LL_APB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_UART7 + * @arg @ref LL_APB1_GRP1_PERIPH_UART8 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1RSTR, Periphs); +} + +/** + * @brief Enable APB1 peripheral clocks in low-power mode + * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR TIM3LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR TIM4LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR TIM5LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR TIM6LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR TIM7LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR TIM12LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR TIM13LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR TIM14LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR LPTIM1LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR WWDGLPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR SPI2LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR SPI3LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR SPDIFRXLPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR USART2LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR USART3LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR UART4LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR UART5LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR I2C1LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR I2C2LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR I2C3LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR I2C4LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR CAN1LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR CAN2LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR CAN3LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR CECLPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR PWRLPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR DACLPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR UART7LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR UART8LPEN LL_APB1_GRP1_EnableClockLowPower\n + * APB1LPENR RTCLPEN LL_APB1_GRP1_EnableClockLowPower + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_UART7 + * @arg @ref LL_APB1_GRP1_PERIPH_UART8 + * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_EnableClockLowPower(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB1LPENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1LPENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable APB1 peripheral clocks in low-power mode + * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR TIM3LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR TIM4LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR TIM5LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR TIM6LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR TIM7LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR TIM12LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR TIM13LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR TIM14LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR LPTIM1LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR WWDGLPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR SPI2LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR SPI3LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR SPDIFRXLPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR USART2LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR USART3LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR UART4LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR UART5LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR I2C1LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR I2C2LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR I2C3LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR I2C4LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR CAN1LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR CAN2LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR CAN3LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR CECLPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR PWRLPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR DACLPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR UART7LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR UART8LPEN LL_APB1_GRP1_DisableClockLowPower\n + * APB1LPENR RTCLPEN LL_APB1_GRP1_DisableClockLowPower + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_UART7 + * @arg @ref LL_APB1_GRP1_PERIPH_UART8 + * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_DisableClockLowPower(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1LPENR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB2 APB2 + * @{ + */ + +/** + * @brief Enable APB2 peripherals clock. + * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_EnableClock\n + * APB2ENR USART1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR USART6EN LL_APB2_GRP1_EnableClock\n + * APB2ENR ADC1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR ADC2EN LL_APB2_GRP1_EnableClock\n + * APB2ENR ADC3EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SDMMC1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SDMMC2EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SPI4EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SYSCFGEN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SPI5EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SPI6EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SAI1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SAI2EN LL_APB2_GRP1_EnableClock\n + * APB2ENR LTDCEN LL_APB2_GRP1_EnableClock\n + * APB2ENR DSIEN LL_APB2_GRP1_EnableClock\n + * APB2ENR DFSDM1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR MDIOEN LL_APB2_GRP1_EnableClock\n + * APB2ENR OTGPHYCEN LL_APB2_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART6 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB2ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB2 peripheral clock is enabled or not + * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR USART6EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR ADC1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR ADC2EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR ADC3EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SDMMC1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SDMMC2EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SPI4EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SYSCFGEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SPI5EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SPI6EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SAI1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SAI2EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR LTDCEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR DSIEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR DFSDM1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR MDIOEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR OTGPHYCEN LL_APB2_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART6 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->APB2ENR, Periphs) == Periphs); +} + +/** + * @brief Disable APB2 peripherals clock. + * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_DisableClock\n + * APB2ENR USART1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR USART6EN LL_APB2_GRP1_DisableClock\n + * APB2ENR ADC1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR ADC2EN LL_APB2_GRP1_DisableClock\n + * APB2ENR ADC3EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SDMMC1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SDMMC2EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SPI4EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SYSCFGEN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SPI5EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SPI6EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SAI1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SAI2EN LL_APB2_GRP1_DisableClock\n + * APB2ENR LTDCEN LL_APB2_GRP1_DisableClock\n + * APB2ENR DSIEN LL_APB2_GRP1_DisableClock\n + * APB2ENR DFSDM1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR MDIOEN LL_APB2_GRP1_DisableClock\n + * APB2ENR OTGPHYCEN LL_APB2_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART6 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2ENR, Periphs); +} + +/** + * @brief Force APB2 peripherals reset. + * @rmtoll APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM8RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR USART6RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR ADCRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SDMMC1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SDMMC2RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SPI4RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SYSCFGRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM9RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM10RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM11RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SPI5RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SPI6RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SAI1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SAI2RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR LTDCRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR DSIRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR DFSDM1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR MDIORST LL_APB2_GRP1_ForceReset\n + * APB2RSTR OTGPHYCRST LL_APB2_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART6 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB2RSTR, Periphs); +} + +/** + * @brief Release APB2 peripherals reset. + * @rmtoll APB2RSTR TIM1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM8RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR USART1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR USART6RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR ADCRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SDMMC1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SDMMC2RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SPI1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SPI4RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SYSCFGRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM9RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM10RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM11RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SPI5RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SPI6RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SAI1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SAI2RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR LTDCRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR DSIRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR DFSDM1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR MDIORST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR OTGPHYCRST LL_APB2_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART6 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) + * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2RSTR, Periphs); +} + +/** + * @brief Enable APB2 peripheral clocks in low-power mode + * @rmtoll APB2LPENR TIM1LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR TIM8LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR USART1LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR USART6LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR ADC1LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR ADC2LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR ADC3LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR SDMMC1LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR SDMMC2LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR SPI1LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR SPI4LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR SYSCFGLPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR TIM9LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR TIM10LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR TIM11LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR SPI5LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR SPI6LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR SAI1LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR SAI2LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR LTDCLPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR DSILPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR DFSDM1LPEN LL_APB2_GRP1_EnableClockLowPower\n + * APB2LPENR MDIOLPEN LL_APB2_GRP1_EnableClockLowPower + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART6 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_EnableClockLowPower(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB2LPENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2LPENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable APB2 peripheral clocks in low-power mode + * @rmtoll APB2LPENR TIM1LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR TIM8LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR USART1LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR USART6LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR ADC1LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR ADC2LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR ADC3LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR SDMMC1LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR SDMMC2LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR SPI1LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR SPI4LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR SYSCFGLPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR TIM9LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR TIM10LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR TIM11LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR SPI5LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR SPI6LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR SAI1LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR SAI2LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR LTDCLPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR DSILPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR DFSDM1LPEN LL_APB2_GRP1_DisableClockLowPower\n + * APB2LPENR MDIOLPEN LL_APB2_GRP1_DisableClockLowPower + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_USART6 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_DisableClockLowPower(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2LPENR, Periphs); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RCC) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_BUS_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h new file mode 100644 index 0000000..ad98cc2 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h @@ -0,0 +1,639 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_cortex.h + * @author MCD Application Team + * @brief Header file of CORTEX LL module. + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL CORTEX driver contains a set of generic APIs that can be + used by user: + (+) SYSTICK configuration used by LL_mDelay and LL_Init1msTick + functions + (+) Low power mode configuration (SCB register of Cortex-MCU) + (+) MPU API to configure and enable regions + (+) API to access to MCU info (CPUID register) + (+) API to enable fault handler (SHCSR accesses) + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_CORTEX_H +#define __STM32F7xx_LL_CORTEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +/** @defgroup CORTEX_LL CORTEX + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Constants CORTEX Exported Constants + * @{ + */ + +/** @defgroup CORTEX_LL_EC_CLKSOURCE_HCLK SYSTICK Clock Source + * @{ + */ +#define LL_SYSTICK_CLKSOURCE_HCLK_DIV8 0x00000000U /*!< AHB clock divided by 8 selected as SysTick clock source.*/ +#define LL_SYSTICK_CLKSOURCE_HCLK SysTick_CTRL_CLKSOURCE_Msk /*!< AHB clock selected as SysTick clock source. */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_FAULT Handler Fault type + * @{ + */ +#define LL_HANDLER_FAULT_USG SCB_SHCSR_USGFAULTENA_Msk /*!< Usage fault */ +#define LL_HANDLER_FAULT_BUS SCB_SHCSR_BUSFAULTENA_Msk /*!< Bus fault */ +#define LL_HANDLER_FAULT_MEM SCB_SHCSR_MEMFAULTENA_Msk /*!< Memory management fault */ +/** + * @} + */ + +#if __MPU_PRESENT + +/** @defgroup CORTEX_LL_EC_CTRL_HFNMI_PRIVDEF MPU Control + * @{ + */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF_NONE 0x00000000U /*!< Disable NMI and privileged SW access */ +#define LL_MPU_CTRL_HARDFAULT_NMI MPU_CTRL_HFNMIENA_Msk /*!< Enables the operation of MPU during hard fault, NMI, and FAULTMASK handlers */ +#define LL_MPU_CTRL_PRIVILEGED_DEFAULT MPU_CTRL_PRIVDEFENA_Msk /*!< Enable privileged software access to default memory map */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF (MPU_CTRL_HFNMIENA_Msk | MPU_CTRL_PRIVDEFENA_Msk) /*!< Enable NMI and privileged SW access */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION MPU Region Number + * @{ + */ +#define LL_MPU_REGION_NUMBER0 0x00U /*!< REGION Number 0 */ +#define LL_MPU_REGION_NUMBER1 0x01U /*!< REGION Number 1 */ +#define LL_MPU_REGION_NUMBER2 0x02U /*!< REGION Number 2 */ +#define LL_MPU_REGION_NUMBER3 0x03U /*!< REGION Number 3 */ +#define LL_MPU_REGION_NUMBER4 0x04U /*!< REGION Number 4 */ +#define LL_MPU_REGION_NUMBER5 0x05U /*!< REGION Number 5 */ +#define LL_MPU_REGION_NUMBER6 0x06U /*!< REGION Number 6 */ +#define LL_MPU_REGION_NUMBER7 0x07U /*!< REGION Number 7 */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_SIZE MPU Region Size + * @{ + */ +#define LL_MPU_REGION_SIZE_32B (0x04U << MPU_RASR_SIZE_Pos) /*!< 32B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64B (0x05U << MPU_RASR_SIZE_Pos) /*!< 64B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128B (0x06U << MPU_RASR_SIZE_Pos) /*!< 128B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256B (0x07U << MPU_RASR_SIZE_Pos) /*!< 256B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512B (0x08U << MPU_RASR_SIZE_Pos) /*!< 512B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1KB (0x09U << MPU_RASR_SIZE_Pos) /*!< 1KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2KB (0x0AU << MPU_RASR_SIZE_Pos) /*!< 2KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4KB (0x0BU << MPU_RASR_SIZE_Pos) /*!< 4KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8KB (0x0CU << MPU_RASR_SIZE_Pos) /*!< 8KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16KB (0x0DU << MPU_RASR_SIZE_Pos) /*!< 16KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32KB (0x0EU << MPU_RASR_SIZE_Pos) /*!< 32KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64KB (0x0FU << MPU_RASR_SIZE_Pos) /*!< 64KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128KB (0x10U << MPU_RASR_SIZE_Pos) /*!< 128KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256KB (0x11U << MPU_RASR_SIZE_Pos) /*!< 256KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512KB (0x12U << MPU_RASR_SIZE_Pos) /*!< 512KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1MB (0x13U << MPU_RASR_SIZE_Pos) /*!< 1MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2MB (0x14U << MPU_RASR_SIZE_Pos) /*!< 2MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4MB (0x15U << MPU_RASR_SIZE_Pos) /*!< 4MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8MB (0x16U << MPU_RASR_SIZE_Pos) /*!< 8MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16MB (0x17U << MPU_RASR_SIZE_Pos) /*!< 16MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32MB (0x18U << MPU_RASR_SIZE_Pos) /*!< 32MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64MB (0x19U << MPU_RASR_SIZE_Pos) /*!< 64MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128MB (0x1AU << MPU_RASR_SIZE_Pos) /*!< 128MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256MB (0x1BU << MPU_RASR_SIZE_Pos) /*!< 256MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512MB (0x1CU << MPU_RASR_SIZE_Pos) /*!< 512MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1GB (0x1DU << MPU_RASR_SIZE_Pos) /*!< 1GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2GB (0x1EU << MPU_RASR_SIZE_Pos) /*!< 2GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4GB (0x1FU << MPU_RASR_SIZE_Pos) /*!< 4GB Size of the MPU protection region */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_PRIVILEDGES MPU Region Privileges + * @{ + */ +#define LL_MPU_REGION_NO_ACCESS (0x00U << MPU_RASR_AP_Pos) /*!< No access*/ +#define LL_MPU_REGION_PRIV_RW (0x01U << MPU_RASR_AP_Pos) /*!< RW privileged (privileged access only)*/ +#define LL_MPU_REGION_PRIV_RW_URO (0x02U << MPU_RASR_AP_Pos) /*!< RW privileged - RO user (Write in a user program generates a fault) */ +#define LL_MPU_REGION_FULL_ACCESS (0x03U << MPU_RASR_AP_Pos) /*!< RW privileged & user (Full access) */ +#define LL_MPU_REGION_PRIV_RO (0x05U << MPU_RASR_AP_Pos) /*!< RO privileged (privileged read only)*/ +#define LL_MPU_REGION_PRIV_RO_URO (0x06U << MPU_RASR_AP_Pos) /*!< RO privileged & user (read only) */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_TEX MPU TEX Level + * @{ + */ +#define LL_MPU_TEX_LEVEL0 (0x00U << MPU_RASR_TEX_Pos) /*!< b000 for TEX bits */ +#define LL_MPU_TEX_LEVEL1 (0x01U << MPU_RASR_TEX_Pos) /*!< b001 for TEX bits */ +#define LL_MPU_TEX_LEVEL2 (0x02U << MPU_RASR_TEX_Pos) /*!< b010 for TEX bits */ + +/* Legacy Define */ +#define LL_MPU_TEX_LEVEL4 (0x04U << MPU_RASR_TEX_Pos) /*!< b100 for TEX bits */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_INSTRUCTION_ACCESS MPU Instruction Access + * @{ + */ +#define LL_MPU_INSTRUCTION_ACCESS_ENABLE 0x00U /*!< Instruction fetches enabled */ +#define LL_MPU_INSTRUCTION_ACCESS_DISABLE MPU_RASR_XN_Msk /*!< Instruction fetches disabled*/ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_SHAREABLE_ACCESS MPU Shareable Access + * @{ + */ +#define LL_MPU_ACCESS_SHAREABLE MPU_RASR_S_Msk /*!< Shareable memory attribute */ +#define LL_MPU_ACCESS_NOT_SHAREABLE 0x00U /*!< Not Shareable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_CACHEABLE_ACCESS MPU Cacheable Access + * @{ + */ +#define LL_MPU_ACCESS_CACHEABLE MPU_RASR_C_Msk /*!< Cacheable memory attribute */ +#define LL_MPU_ACCESS_NOT_CACHEABLE 0x00U /*!< Not Cacheable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_BUFFERABLE_ACCESS MPU Bufferable Access + * @{ + */ +#define LL_MPU_ACCESS_BUFFERABLE MPU_RASR_B_Msk /*!< Bufferable memory attribute */ +#define LL_MPU_ACCESS_NOT_BUFFERABLE 0x00U /*!< Not Bufferable memory attribute */ +/** + * @} + */ +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Functions CORTEX Exported Functions + * @{ + */ + +/** @defgroup CORTEX_LL_EF_SYSTICK SYSTICK + * @{ + */ + +/** + * @brief This function checks if the Systick counter flag is active or not. + * @note It can be used in timeout function on application side. + * @rmtoll STK_CTRL COUNTFLAG LL_SYSTICK_IsActiveCounterFlag + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsActiveCounterFlag(void) +{ + return ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == (SysTick_CTRL_COUNTFLAG_Msk)); +} + +/** + * @brief Configures the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_SetClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_SetClkSource(uint32_t Source) +{ + if (Source == LL_SYSTICK_CLKSOURCE_HCLK) + { + SET_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } + else + { + CLEAR_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } +} + +/** + * @brief Get the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_GetClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + */ +__STATIC_INLINE uint32_t LL_SYSTICK_GetClkSource(void) +{ + return READ_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); +} + +/** + * @brief Enable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_EnableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_EnableIT(void) +{ + SET_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Disable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_DisableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_DisableIT(void) +{ + CLEAR_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Checks if the SYSTICK interrupt is enabled or disabled. + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_IsEnabledIT + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsEnabledIT(void) +{ + return (READ_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk) == (SysTick_CTRL_TICKINT_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_LOW_POWER_MODE LOW POWER MODE + * @{ + */ + +/** + * @brief Processor uses sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleep(void) +{ + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Processor uses deep sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableDeepSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableDeepSleep(void) +{ + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Configures sleep-on-exit when returning from Handler mode to Thread mode. + * @note Setting this bit to 1 enables an interrupt-driven application to avoid returning to an + * empty main application. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_EnableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleepOnExit(void) +{ + /* Set SLEEPONEXIT bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Do not sleep when returning to Thread mode. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_DisableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableSleepOnExit(void) +{ + /* Clear SLEEPONEXIT bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Enabled events and all interrupts, including disabled interrupts, can wakeup the + * processor. + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_EnableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableEventOnPend(void) +{ + /* Set SEVEONPEND bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @brief Only enabled interrupts or events can wakeup the processor, disabled interrupts are + * excluded + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_DisableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableEventOnPend(void) +{ + /* Clear SEVEONPEND bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_HANDLER HANDLER + * @{ + */ + +/** + * @brief Enable a fault in System handler control register (SHCSR) + * @rmtoll SCB_SHCSR MEMFAULTENA LL_HANDLER_EnableFault + * @param Fault This parameter can be a combination of the following values: + * @arg @ref LL_HANDLER_FAULT_USG + * @arg @ref LL_HANDLER_FAULT_BUS + * @arg @ref LL_HANDLER_FAULT_MEM + * @retval None + */ +__STATIC_INLINE void LL_HANDLER_EnableFault(uint32_t Fault) +{ + /* Enable the system handler fault */ + SET_BIT(SCB->SHCSR, Fault); +} + +/** + * @brief Disable a fault in System handler control register (SHCSR) + * @rmtoll SCB_SHCSR MEMFAULTENA LL_HANDLER_DisableFault + * @param Fault This parameter can be a combination of the following values: + * @arg @ref LL_HANDLER_FAULT_USG + * @arg @ref LL_HANDLER_FAULT_BUS + * @arg @ref LL_HANDLER_FAULT_MEM + * @retval None + */ +__STATIC_INLINE void LL_HANDLER_DisableFault(uint32_t Fault) +{ + /* Disable the system handler fault */ + CLEAR_BIT(SCB->SHCSR, Fault); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_MCU_INFO MCU INFO + * @{ + */ + +/** + * @brief Get Implementer code + * @rmtoll SCB_CPUID IMPLEMENTER LL_CPUID_GetImplementer + * @retval Value should be equal to 0x41 for ARM + */ +__STATIC_INLINE uint32_t LL_CPUID_GetImplementer(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_IMPLEMENTER_Msk) >> SCB_CPUID_IMPLEMENTER_Pos); +} + +/** + * @brief Get Variant number (The r value in the rnpn product revision identifier) + * @rmtoll SCB_CPUID VARIANT LL_CPUID_GetVariant + * @retval Value between 0 and 255 (0x0: revision 0) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetVariant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_VARIANT_Msk) >> SCB_CPUID_VARIANT_Pos); +} + +/** + * @brief Get Constant number + * @rmtoll SCB_CPUID ARCHITECTURE LL_CPUID_GetConstant + * @retval Value should be equal to 0xF for Cortex-M7 devices + */ +__STATIC_INLINE uint32_t LL_CPUID_GetConstant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_ARCHITECTURE_Msk) >> SCB_CPUID_ARCHITECTURE_Pos); +} + +/** + * @brief Get Part number + * @rmtoll SCB_CPUID PARTNO LL_CPUID_GetParNo + * @retval Value should be equal to 0xC27 for Cortex-M7 + */ +__STATIC_INLINE uint32_t LL_CPUID_GetParNo(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_PARTNO_Msk) >> SCB_CPUID_PARTNO_Pos); +} + +/** + * @brief Get Revision number (The p value in the rnpn product revision identifier, indicates patch release) + * @rmtoll SCB_CPUID REVISION LL_CPUID_GetRevision + * @retval Value between 0 and 255 (0x1: patch 1) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetRevision(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_REVISION_Msk) >> SCB_CPUID_REVISION_Pos); +} + +/** + * @} + */ + +#if __MPU_PRESENT +/** @defgroup CORTEX_LL_EF_MPU MPU + * @{ + */ + +/** + * @brief Enable MPU with input options + * @rmtoll MPU_CTRL ENABLE LL_MPU_Enable + * @param Options This parameter can be one of the following values: + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF_NONE + * @arg @ref LL_MPU_CTRL_HARDFAULT_NMI + * @arg @ref LL_MPU_CTRL_PRIVILEGED_DEFAULT + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF + * @retval None + */ +__STATIC_INLINE void LL_MPU_Enable(uint32_t Options) +{ + /* Enable the MPU*/ + WRITE_REG(MPU->CTRL, (MPU_CTRL_ENABLE_Msk | Options)); + /* Ensure MPU settings take effects */ + __DSB(); + /* Sequence instruction fetches using update settings */ + __ISB(); +} + +/** + * @brief Disable MPU + * @rmtoll MPU_CTRL ENABLE LL_MPU_Disable + * @retval None + */ +__STATIC_INLINE void LL_MPU_Disable(void) +{ + /* Make sure outstanding transfers are done */ + __DMB(); + /* Disable MPU*/ + WRITE_REG(MPU->CTRL, 0U); +} + +/** + * @brief Check if MPU is enabled or not + * @rmtoll MPU_CTRL ENABLE LL_MPU_IsEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_MPU_IsEnabled(void) +{ + return (READ_BIT(MPU->CTRL, MPU_CTRL_ENABLE_Msk) == (MPU_CTRL_ENABLE_Msk)); +} + +/** + * @brief Enable a MPU region + * @rmtoll MPU_RASR ENABLE LL_MPU_EnableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_EnableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Enable the MPU region */ + SET_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @brief Configure and enable a region + * @rmtoll MPU_RNR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR ADDR LL_MPU_ConfigRegion\n + * MPU_RASR XN LL_MPU_ConfigRegion\n + * MPU_RASR AP LL_MPU_ConfigRegion\n + * MPU_RASR S LL_MPU_ConfigRegion\n + * MPU_RASR C LL_MPU_ConfigRegion\n + * MPU_RASR B LL_MPU_ConfigRegion\n + * MPU_RASR SIZE LL_MPU_ConfigRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @param Address Value of region base address + * @param SubRegionDisable Sub-region disable value between Min_Data = 0x00 and Max_Data = 0xFF + * @param Attributes This parameter can be a combination of the following values: + * @arg @ref LL_MPU_REGION_SIZE_32B or @ref LL_MPU_REGION_SIZE_64B or @ref LL_MPU_REGION_SIZE_128B or @ref LL_MPU_REGION_SIZE_256B or @ref LL_MPU_REGION_SIZE_512B + * or @ref LL_MPU_REGION_SIZE_1KB or @ref LL_MPU_REGION_SIZE_2KB or @ref LL_MPU_REGION_SIZE_4KB or @ref LL_MPU_REGION_SIZE_8KB or @ref LL_MPU_REGION_SIZE_16KB + * or @ref LL_MPU_REGION_SIZE_32KB or @ref LL_MPU_REGION_SIZE_64KB or @ref LL_MPU_REGION_SIZE_128KB or @ref LL_MPU_REGION_SIZE_256KB or @ref LL_MPU_REGION_SIZE_512KB + * or @ref LL_MPU_REGION_SIZE_1MB or @ref LL_MPU_REGION_SIZE_2MB or @ref LL_MPU_REGION_SIZE_4MB or @ref LL_MPU_REGION_SIZE_8MB or @ref LL_MPU_REGION_SIZE_16MB + * or @ref LL_MPU_REGION_SIZE_32MB or @ref LL_MPU_REGION_SIZE_64MB or @ref LL_MPU_REGION_SIZE_128MB or @ref LL_MPU_REGION_SIZE_256MB or @ref LL_MPU_REGION_SIZE_512MB + * or @ref LL_MPU_REGION_SIZE_1GB or @ref LL_MPU_REGION_SIZE_2GB or @ref LL_MPU_REGION_SIZE_4GB + * @arg @ref LL_MPU_REGION_NO_ACCESS or @ref LL_MPU_REGION_PRIV_RW or @ref LL_MPU_REGION_PRIV_RW_URO or @ref LL_MPU_REGION_FULL_ACCESS + * or @ref LL_MPU_REGION_PRIV_RO or @ref LL_MPU_REGION_PRIV_RO_URO + * @arg @ref LL_MPU_TEX_LEVEL0 or @ref LL_MPU_TEX_LEVEL1 or @ref LL_MPU_TEX_LEVEL2 + * @arg @ref LL_MPU_INSTRUCTION_ACCESS_ENABLE or @ref LL_MPU_INSTRUCTION_ACCESS_DISABLE + * @arg @ref LL_MPU_ACCESS_SHAREABLE or @ref LL_MPU_ACCESS_NOT_SHAREABLE + * @arg @ref LL_MPU_ACCESS_CACHEABLE or @ref LL_MPU_ACCESS_NOT_CACHEABLE + * @arg @ref LL_MPU_ACCESS_BUFFERABLE or @ref LL_MPU_ACCESS_NOT_BUFFERABLE + * @retval None + */ +__STATIC_INLINE void LL_MPU_ConfigRegion(uint32_t Region, uint32_t SubRegionDisable, uint32_t Address, uint32_t Attributes) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Set base address */ + WRITE_REG(MPU->RBAR, (Address & 0xFFFFFFE0U)); + /* Configure MPU */ + WRITE_REG(MPU->RASR, (MPU_RASR_ENABLE_Msk | Attributes | (SubRegionDisable << MPU_RASR_SRD_Pos))); +} + +/** + * @brief Disable a region + * @rmtoll MPU_RNR REGION LL_MPU_DisableRegion\n + * MPU_RASR ENABLE LL_MPU_DisableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_DisableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Disable the MPU region */ + CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @} + */ + +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_CORTEX_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h new file mode 100644 index 0000000..07933e4 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h @@ -0,0 +1,2891 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_dma.h + * @author MCD Application Team + * @brief Header file of DMA LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_DMA_H +#define __STM32F7xx_LL_DMA_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (DMA1) || defined (DMA2) + +/** @defgroup DMA_LL DMA + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup DMA_LL_Private_Variables DMA Private Variables + * @{ + */ +/* Array used to get the DMA stream register offset versus stream index LL_DMA_STREAM_x */ +static const uint8_t STREAM_OFFSET_TAB[] = +{ + (uint8_t)(DMA1_Stream0_BASE - DMA1_BASE), + (uint8_t)(DMA1_Stream1_BASE - DMA1_BASE), + (uint8_t)(DMA1_Stream2_BASE - DMA1_BASE), + (uint8_t)(DMA1_Stream3_BASE - DMA1_BASE), + (uint8_t)(DMA1_Stream4_BASE - DMA1_BASE), + (uint8_t)(DMA1_Stream5_BASE - DMA1_BASE), + (uint8_t)(DMA1_Stream6_BASE - DMA1_BASE), + (uint8_t)(DMA1_Stream7_BASE - DMA1_BASE) +}; + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup DMA_LL_Private_Constants DMA Private Constants + * @{ + */ +#if defined(DMA_SxCR_CHSEL_3) +#define DMA_CHANNEL_SELECTION_8_15 +#endif /* DMA_SxCR_CHSEL_3 */ +/** + * @} + */ + + +/* Private macros ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_ES_INIT DMA Exported Init structure + * @{ + */ +typedef struct +{ + uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer + or as Source base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer + or as Destination base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, + from memory to memory or from peripheral to memory. + This parameter can be a value of @ref DMA_LL_EC_DIRECTION + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */ + + uint32_t Mode; /*!< Specifies the normal or circular operation mode. + This parameter can be a value of @ref DMA_LL_EC_MODE + @note The circular buffer mode cannot be used if the memory to memory + data transfer direction is configured on the selected Stream + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */ + + uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_PERIPH + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */ + + uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_MEMORY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */ + + uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */ + + uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */ + + uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. + The data unit is equal to the source buffer configuration set in PeripheralSize + or MemorySize parameters depending in the transfer direction. + This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */ + + uint32_t Channel; /*!< Specifies the peripheral channel. + This parameter can be a value of @ref DMA_LL_EC_CHANNEL + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetChannelSelection(). */ + + uint32_t Priority; /*!< Specifies the channel priority level. + This parameter can be a value of @ref DMA_LL_EC_PRIORITY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetStreamPriorityLevel(). */ + + uint32_t FIFOMode; /*!< Specifies if the FIFO mode or Direct mode will be used for the specified stream. + This parameter can be a value of @ref DMA_LL_FIFOMODE + @note The Direct mode (FIFO mode disabled) cannot be used if the + memory-to-memory data transfer is configured on the selected stream + + This feature can be modified afterwards using unitary functions @ref LL_DMA_EnableFifoMode() or @ref LL_DMA_EnableFifoMode() . */ + + uint32_t FIFOThreshold; /*!< Specifies the FIFO threshold level. + This parameter can be a value of @ref DMA_LL_EC_FIFOTHRESHOLD + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetFIFOThreshold(). */ + + uint32_t MemBurst; /*!< Specifies the Burst transfer configuration for the memory transfers. + It specifies the amount of data to be transferred in a single non interruptible + transaction. + This parameter can be a value of @ref DMA_LL_EC_MBURST + @note The burst mode is possible only if the address Increment mode is enabled. + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryBurstxfer(). */ + + uint32_t PeriphBurst; /*!< Specifies the Burst transfer configuration for the peripheral transfers. + It specifies the amount of data to be transferred in a single non interruptible + transaction. + This parameter can be a value of @ref DMA_LL_EC_PBURST + @note The burst mode is possible only if the address Increment mode is enabled. + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphBurstxfer(). */ + +} LL_DMA_InitTypeDef; +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Constants DMA Exported Constants + * @{ + */ + +/** @defgroup DMA_LL_EC_STREAM STREAM + * @{ + */ +#define LL_DMA_STREAM_0 0x00000000U +#define LL_DMA_STREAM_1 0x00000001U +#define LL_DMA_STREAM_2 0x00000002U +#define LL_DMA_STREAM_3 0x00000003U +#define LL_DMA_STREAM_4 0x00000004U +#define LL_DMA_STREAM_5 0x00000005U +#define LL_DMA_STREAM_6 0x00000006U +#define LL_DMA_STREAM_7 0x00000007U +#define LL_DMA_STREAM_ALL 0xFFFF0000U +/** + * @} + */ + +/** @defgroup DMA_LL_EC_DIRECTION DIRECTION + * @{ + */ +#define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_SxCR_DIR_0 /*!< Memory to peripheral direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_SxCR_DIR_1 /*!< Memory to memory direction */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MODE MODE + * @{ + */ +#define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */ +#define LL_DMA_MODE_CIRCULAR DMA_SxCR_CIRC /*!< Circular Mode */ +#define LL_DMA_MODE_PFCTRL DMA_SxCR_PFCTRL /*!< Peripheral flow control mode */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_DOUBLEBUFFER_MODE DOUBLE BUFFER MODE + * @{ + */ +#define LL_DMA_DOUBLEBUFFER_MODE_DISABLE 0x00000000U /*!< Disable double buffering mode */ +#define LL_DMA_DOUBLEBUFFER_MODE_ENABLE DMA_SxCR_DBM /*!< Enable double buffering mode */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PERIPH PERIPH + * @{ + */ +#define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */ +#define LL_DMA_PERIPH_INCREMENT DMA_SxCR_PINC /*!< Peripheral increment mode Enable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MEMORY MEMORY + * @{ + */ +#define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */ +#define LL_DMA_MEMORY_INCREMENT DMA_SxCR_MINC /*!< Memory increment mode Enable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PDATAALIGN PDATAALIGN + * @{ + */ +#define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */ +#define LL_DMA_PDATAALIGN_HALFWORD DMA_SxCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */ +#define LL_DMA_PDATAALIGN_WORD DMA_SxCR_PSIZE_1 /*!< Peripheral data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MDATAALIGN MDATAALIGN + * @{ + */ +#define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */ +#define LL_DMA_MDATAALIGN_HALFWORD DMA_SxCR_MSIZE_0 /*!< Memory data alignment : HalfWord */ +#define LL_DMA_MDATAALIGN_WORD DMA_SxCR_MSIZE_1 /*!< Memory data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_OFFSETSIZE OFFSETSIZE + * @{ + */ +#define LL_DMA_OFFSETSIZE_PSIZE 0x00000000U /*!< Peripheral increment offset size is linked to the PSIZE */ +#define LL_DMA_OFFSETSIZE_FIXEDTO4 DMA_SxCR_PINCOS /*!< Peripheral increment offset size is fixed to 4 (32-bit alignment) */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PRIORITY PRIORITY + * @{ + */ +#define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */ +#define LL_DMA_PRIORITY_MEDIUM DMA_SxCR_PL_0 /*!< Priority level : Medium */ +#define LL_DMA_PRIORITY_HIGH DMA_SxCR_PL_1 /*!< Priority level : High */ +#define LL_DMA_PRIORITY_VERYHIGH DMA_SxCR_PL /*!< Priority level : Very_High */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_CHANNEL CHANNEL + * @{ + */ +#define LL_DMA_CHANNEL_0 0x00000000U /* Select Channel0 of DMA Instance */ +#define LL_DMA_CHANNEL_1 DMA_SxCR_CHSEL_0 /* Select Channel1 of DMA Instance */ +#define LL_DMA_CHANNEL_2 DMA_SxCR_CHSEL_1 /* Select Channel2 of DMA Instance */ +#define LL_DMA_CHANNEL_3 (DMA_SxCR_CHSEL_0 | DMA_SxCR_CHSEL_1) /* Select Channel3 of DMA Instance */ +#define LL_DMA_CHANNEL_4 DMA_SxCR_CHSEL_2 /* Select Channel4 of DMA Instance */ +#define LL_DMA_CHANNEL_5 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_0) /* Select Channel5 of DMA Instance */ +#define LL_DMA_CHANNEL_6 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1) /* Select Channel6 of DMA Instance */ +#define LL_DMA_CHANNEL_7 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0) /* Select Channel7 of DMA Instance */ +#if defined(DMA_CHANNEL_SELECTION_8_15) +#define LL_DMA_CHANNEL_8 DMA_SxCR_CHSEL_3 /* Select Channel8 of DMA Instance */ +#define LL_DMA_CHANNEL_9 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_0) /* Select Channel9 of DMA Instance */ +#define LL_DMA_CHANNEL_10 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_1) /* Select Channel10 of DMA Instance */ +#define LL_DMA_CHANNEL_11 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0) /* Select Channel11 of DMA Instance */ +#define LL_DMA_CHANNEL_12 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2) /* Select Channel12 of DMA Instance */ +#define LL_DMA_CHANNEL_13 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_0) /* Select Channel13 of DMA Instance */ +#define LL_DMA_CHANNEL_14 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1) /* Select Channel14 of DMA Instance */ +#define LL_DMA_CHANNEL_15 DMA_SxCR_CHSEL /* Select Channel15 of DMA Instance */ +#endif /* DMA_CHANNEL_SELECTION_8_15 */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MBURST MBURST + * @{ + */ +#define LL_DMA_MBURST_SINGLE 0x00000000U /*!< Memory burst single transfer configuration */ +#define LL_DMA_MBURST_INC4 DMA_SxCR_MBURST_0 /*!< Memory burst of 4 beats transfer configuration */ +#define LL_DMA_MBURST_INC8 DMA_SxCR_MBURST_1 /*!< Memory burst of 8 beats transfer configuration */ +#define LL_DMA_MBURST_INC16 (DMA_SxCR_MBURST_0 | DMA_SxCR_MBURST_1) /*!< Memory burst of 16 beats transfer configuration */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PBURST PBURST + * @{ + */ +#define LL_DMA_PBURST_SINGLE 0x00000000U /*!< Peripheral burst single transfer configuration */ +#define LL_DMA_PBURST_INC4 DMA_SxCR_PBURST_0 /*!< Peripheral burst of 4 beats transfer configuration */ +#define LL_DMA_PBURST_INC8 DMA_SxCR_PBURST_1 /*!< Peripheral burst of 8 beats transfer configuration */ +#define LL_DMA_PBURST_INC16 (DMA_SxCR_PBURST_0 | DMA_SxCR_PBURST_1) /*!< Peripheral burst of 16 beats transfer configuration */ +/** + * @} + */ + +/** @defgroup DMA_LL_FIFOMODE DMA_LL_FIFOMODE + * @{ + */ +#define LL_DMA_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode disable (direct mode is enabled) */ +#define LL_DMA_FIFOMODE_ENABLE DMA_SxFCR_DMDIS /*!< FIFO mode enable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_FIFOSTATUS_0 FIFOSTATUS 0 + * @{ + */ +#define LL_DMA_FIFOSTATUS_0_25 0x00000000U /*!< 0 < fifo_level < 1/4 */ +#define LL_DMA_FIFOSTATUS_25_50 DMA_SxFCR_FS_0 /*!< 1/4 < fifo_level < 1/2 */ +#define LL_DMA_FIFOSTATUS_50_75 DMA_SxFCR_FS_1 /*!< 1/2 < fifo_level < 3/4 */ +#define LL_DMA_FIFOSTATUS_75_100 (DMA_SxFCR_FS_1 | DMA_SxFCR_FS_0) /*!< 3/4 < fifo_level < full */ +#define LL_DMA_FIFOSTATUS_EMPTY DMA_SxFCR_FS_2 /*!< FIFO is empty */ +#define LL_DMA_FIFOSTATUS_FULL (DMA_SxFCR_FS_2 | DMA_SxFCR_FS_0) /*!< FIFO is full */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_FIFOTHRESHOLD FIFOTHRESHOLD + * @{ + */ +#define LL_DMA_FIFOTHRESHOLD_1_4 0x00000000U /*!< FIFO threshold 1 quart full configuration */ +#define LL_DMA_FIFOTHRESHOLD_1_2 DMA_SxFCR_FTH_0 /*!< FIFO threshold half full configuration */ +#define LL_DMA_FIFOTHRESHOLD_3_4 DMA_SxFCR_FTH_1 /*!< FIFO threshold 3 quarts full configuration */ +#define LL_DMA_FIFOTHRESHOLD_FULL DMA_SxFCR_FTH /*!< FIFO threshold full configuration */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_CURRENTTARGETMEM CURRENTTARGETMEM + * @{ + */ +#define LL_DMA_CURRENTTARGETMEM0 0x00000000U /*!< Set CurrentTarget Memory to Memory 0 */ +#define LL_DMA_CURRENTTARGETMEM1 DMA_SxCR_CT /*!< Set CurrentTarget Memory to Memory 1 */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Macros DMA Exported Macros + * @{ + */ + +/** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros + * @{ + */ +/** + * @brief Write a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxStreamy + * @{ + */ +/** + * @brief Convert DMAx_Streamy into DMAx + * @param __STREAM_INSTANCE__ DMAx_Streamy + * @retval DMAx + */ +#define __LL_DMA_GET_INSTANCE(__STREAM_INSTANCE__) \ +(((uint32_t)(__STREAM_INSTANCE__) > ((uint32_t)DMA1_Stream7)) ? DMA2 : DMA1) + +/** + * @brief Convert DMAx_Streamy into LL_DMA_STREAM_y + * @param __STREAM_INSTANCE__ DMAx_Streamy + * @retval LL_DMA_CHANNEL_y + */ +#define __LL_DMA_GET_STREAM(__STREAM_INSTANCE__) \ +(((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream0)) ? LL_DMA_STREAM_0 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream0)) ? LL_DMA_STREAM_0 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream1)) ? LL_DMA_STREAM_1 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream1)) ? LL_DMA_STREAM_1 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream2)) ? LL_DMA_STREAM_2 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream2)) ? LL_DMA_STREAM_2 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream3)) ? LL_DMA_STREAM_3 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream3)) ? LL_DMA_STREAM_3 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream4)) ? LL_DMA_STREAM_4 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream4)) ? LL_DMA_STREAM_4 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream5)) ? LL_DMA_STREAM_5 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream5)) ? LL_DMA_STREAM_5 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream6)) ? LL_DMA_STREAM_6 : \ + ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream6)) ? LL_DMA_STREAM_6 : \ + LL_DMA_STREAM_7) + +/** + * @brief Convert DMA Instance DMAx and LL_DMA_STREAM_y into DMAx_Streamy + * @param __DMA_INSTANCE__ DMAx + * @param __STREAM__ LL_DMA_STREAM_y + * @retval DMAx_Streamy + */ +#define __LL_DMA_GET_STREAM_INSTANCE(__DMA_INSTANCE__, __STREAM__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_0))) ? DMA1_Stream0 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_0))) ? DMA2_Stream0 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_1))) ? DMA1_Stream1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_1))) ? DMA2_Stream1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_2))) ? DMA1_Stream2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_2))) ? DMA2_Stream2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_3))) ? DMA1_Stream3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_3))) ? DMA2_Stream3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_4))) ? DMA1_Stream4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_4))) ? DMA2_Stream4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_5))) ? DMA1_Stream5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_5))) ? DMA2_Stream5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_6))) ? DMA1_Stream6 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_6))) ? DMA2_Stream6 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_7))) ? DMA1_Stream7 : \ + DMA2_Stream7) + +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ + /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions + * @{ + */ + +/** @defgroup DMA_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Enable DMA stream. + * @rmtoll CR EN LL_DMA_EnableStream + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableStream(DMA_TypeDef *DMAx, uint32_t Stream) +{ + SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_EN); +} + +/** + * @brief Disable DMA stream. + * @rmtoll CR EN LL_DMA_DisableStream + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableStream(DMA_TypeDef *DMAx, uint32_t Stream) +{ + CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_EN); +} + +/** + * @brief Check if DMA stream is enabled or disabled. + * @rmtoll CR EN LL_DMA_IsEnabledStream + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledStream(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_EN) == (DMA_SxCR_EN)); +} + +/** + * @brief Configure all parameters linked to DMA transfer. + * @rmtoll CR DIR LL_DMA_ConfigTransfer\n + * CR CIRC LL_DMA_ConfigTransfer\n + * CR PINC LL_DMA_ConfigTransfer\n + * CR MINC LL_DMA_ConfigTransfer\n + * CR PSIZE LL_DMA_ConfigTransfer\n + * CR MSIZE LL_DMA_ConfigTransfer\n + * CR PL LL_DMA_ConfigTransfer\n + * CR PFCTRL LL_DMA_ConfigTransfer + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR or @ref LL_DMA_MODE_PFCTRL + * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT + * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT + * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD + * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD + * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH + *@retval None + */ +__STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Configuration) +{ + MODIFY_REG(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, + DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_SxCR_MSIZE | DMA_SxCR_PL | DMA_SxCR_PFCTRL, + Configuration); +} + +/** + * @brief Set Data transfer direction (read from peripheral or from memory). + * @rmtoll CR DIR LL_DMA_SetDataTransferDirection + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Direction) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_DIR, Direction); +} + +/** + * @brief Get Data transfer direction (read from peripheral or from memory). + * @rmtoll CR DIR LL_DMA_GetDataTransferDirection + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_DIR)); +} + +/** + * @brief Set DMA mode normal, circular or peripheral flow control. + * @rmtoll CR CIRC LL_DMA_SetMode\n + * CR PFCTRL LL_DMA_SetMode + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + * @arg @ref LL_DMA_MODE_PFCTRL + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mode) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_CIRC | DMA_SxCR_PFCTRL, Mode); +} + +/** + * @brief Get DMA mode normal, circular or peripheral flow control. + * @rmtoll CR CIRC LL_DMA_GetMode\n + * CR PFCTRL LL_DMA_GetMode + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + * @arg @ref LL_DMA_MODE_PFCTRL + */ +__STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_CIRC | DMA_SxCR_PFCTRL)); +} + +/** + * @brief Set Peripheral increment mode. + * @rmtoll CR PINC LL_DMA_SetPeriphIncMode + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param IncrementMode This parameter can be one of the following values: + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_PINC, IncrementMode); +} + +/** + * @brief Get Peripheral increment mode. + * @rmtoll CR PINC LL_DMA_GetPeriphIncMode + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + * @arg @ref LL_DMA_PERIPH_INCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_PINC)); +} + +/** + * @brief Set Memory increment mode. + * @rmtoll CR MINC LL_DMA_SetMemoryIncMode + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param IncrementMode This parameter can be one of the following values: + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_MINC, IncrementMode); +} + +/** + * @brief Get Memory increment mode. + * @rmtoll CR MINC LL_DMA_GetMemoryIncMode + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + * @arg @ref LL_DMA_MEMORY_INCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_MINC)); +} + +/** + * @brief Set Peripheral size. + * @rmtoll CR PSIZE LL_DMA_SetPeriphSize + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Size This parameter can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_PSIZE, Size); +} + +/** + * @brief Get Peripheral size. + * @rmtoll CR PSIZE LL_DMA_GetPeriphSize + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_PSIZE)); +} + +/** + * @brief Set Memory size. + * @rmtoll CR MSIZE LL_DMA_SetMemorySize + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Size This parameter can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_MSIZE, Size); +} + +/** + * @brief Get Memory size. + * @rmtoll CR MSIZE LL_DMA_GetMemorySize + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_MSIZE)); +} + +/** + * @brief Set Peripheral increment offset size. + * @rmtoll CR PINCOS LL_DMA_SetIncOffsetSize + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param OffsetSize This parameter can be one of the following values: + * @arg @ref LL_DMA_OFFSETSIZE_PSIZE + * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4 + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t OffsetSize) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_PINCOS, OffsetSize); +} + +/** + * @brief Get Peripheral increment offset size. + * @rmtoll CR PINCOS LL_DMA_GetIncOffsetSize + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_OFFSETSIZE_PSIZE + * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4 + */ +__STATIC_INLINE uint32_t LL_DMA_GetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_PINCOS)); +} + +/** + * @brief Set Stream priority level. + * @rmtoll CR PL LL_DMA_SetStreamPriorityLevel + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Priority This parameter can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Priority) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_PL, Priority); +} + +/** + * @brief Get Stream priority level. + * @rmtoll CR PL LL_DMA_GetStreamPriorityLevel + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + */ +__STATIC_INLINE uint32_t LL_DMA_GetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_PL)); +} + +/** + * @brief Set Number of data to transfer. + * @rmtoll NDTR NDT LL_DMA_SetDataLength + * @note This action has no effect if + * stream is enabled. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param NbData Between 0 to 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t NbData) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->NDTR, DMA_SxNDT, NbData); +} + +/** + * @brief Get Number of data to transfer. + * @rmtoll NDTR NDT LL_DMA_GetDataLength + * @note Once the stream is enabled, the return value indicate the + * remaining bytes to be transmitted. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Between 0 to 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef* DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->NDTR, DMA_SxNDT)); +} + +/** + * @brief Select Channel number associated to the Stream. + * @rmtoll CR CHSEL LL_DMA_SetChannelSelection + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_0 + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @arg @ref LL_DMA_CHANNEL_8 (*) + * @arg @ref LL_DMA_CHANNEL_9 (*) + * @arg @ref LL_DMA_CHANNEL_10 (*) + * @arg @ref LL_DMA_CHANNEL_11 (*) + * @arg @ref LL_DMA_CHANNEL_12 (*) + * @arg @ref LL_DMA_CHANNEL_13 (*) + * @arg @ref LL_DMA_CHANNEL_14 (*) + * @arg @ref LL_DMA_CHANNEL_15 (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetChannelSelection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Channel) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_CHSEL, Channel); +} + +/** + * @brief Get the Channel number associated to the Stream. + * @rmtoll CR CHSEL LL_DMA_GetChannelSelection + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_0 + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @arg @ref LL_DMA_CHANNEL_8 (*) + * @arg @ref LL_DMA_CHANNEL_9 (*) + * @arg @ref LL_DMA_CHANNEL_10 (*) + * @arg @ref LL_DMA_CHANNEL_11 (*) + * @arg @ref LL_DMA_CHANNEL_12 (*) + * @arg @ref LL_DMA_CHANNEL_13 (*) + * @arg @ref LL_DMA_CHANNEL_14 (*) + * @arg @ref LL_DMA_CHANNEL_15 (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_DMA_GetChannelSelection(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_CHSEL)); +} + +/** + * @brief Set Memory burst transfer configuration. + * @rmtoll CR MBURST LL_DMA_SetMemoryBurstxfer + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Mburst This parameter can be one of the following values: + * @arg @ref LL_DMA_MBURST_SINGLE + * @arg @ref LL_DMA_MBURST_INC4 + * @arg @ref LL_DMA_MBURST_INC8 + * @arg @ref LL_DMA_MBURST_INC16 + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mburst) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_MBURST, Mburst); +} + +/** + * @brief Get Memory burst transfer configuration. + * @rmtoll CR MBURST LL_DMA_GetMemoryBurstxfer + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MBURST_SINGLE + * @arg @ref LL_DMA_MBURST_INC4 + * @arg @ref LL_DMA_MBURST_INC8 + * @arg @ref LL_DMA_MBURST_INC16 + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_MBURST)); +} + +/** + * @brief Set Peripheral burst transfer configuration. + * @rmtoll CR PBURST LL_DMA_SetPeriphBurstxfer + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Pburst This parameter can be one of the following values: + * @arg @ref LL_DMA_PBURST_SINGLE + * @arg @ref LL_DMA_PBURST_INC4 + * @arg @ref LL_DMA_PBURST_INC8 + * @arg @ref LL_DMA_PBURST_INC16 + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pburst) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_PBURST, Pburst); +} + +/** + * @brief Get Peripheral burst transfer configuration. + * @rmtoll CR PBURST LL_DMA_GetPeriphBurstxfer + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PBURST_SINGLE + * @arg @ref LL_DMA_PBURST_INC4 + * @arg @ref LL_DMA_PBURST_INC8 + * @arg @ref LL_DMA_PBURST_INC16 + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_PBURST)); +} + +/** + * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0. + * @rmtoll CR CT LL_DMA_SetCurrentTargetMem + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param CurrentMemory This parameter can be one of the following values: + * @arg @ref LL_DMA_CURRENTTARGETMEM0 + * @arg @ref LL_DMA_CURRENTTARGETMEM1 + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t CurrentMemory) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_CT, CurrentMemory); +} + +/** + * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0. + * @rmtoll CR CT LL_DMA_GetCurrentTargetMem + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_CURRENTTARGETMEM0 + * @arg @ref LL_DMA_CURRENTTARGETMEM1 + */ +__STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_CT)); +} + +/** + * @brief Enable the double buffer mode. + * @rmtoll CR DBM LL_DMA_EnableDoubleBufferMode + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +{ + SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_DBM); +} + +/** + * @brief Disable the double buffer mode. + * @rmtoll CR DBM LL_DMA_DisableDoubleBufferMode + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +{ + CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_DBM); +} + +/** + * @brief Get FIFO status. + * @rmtoll FCR FS LL_DMA_GetFIFOStatus + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_FIFOSTATUS_0_25 + * @arg @ref LL_DMA_FIFOSTATUS_25_50 + * @arg @ref LL_DMA_FIFOSTATUS_50_75 + * @arg @ref LL_DMA_FIFOSTATUS_75_100 + * @arg @ref LL_DMA_FIFOSTATUS_EMPTY + * @arg @ref LL_DMA_FIFOSTATUS_FULL + */ +__STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DMA_SxFCR_FS)); +} + +/** + * @brief Disable Fifo mode. + * @rmtoll FCR DMDIS LL_DMA_DisableFifoMode + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) +{ + CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DMA_SxFCR_DMDIS); +} + +/** + * @brief Enable Fifo mode. + * @rmtoll FCR DMDIS LL_DMA_EnableFifoMode + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) +{ + SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DMA_SxFCR_DMDIS); +} + +/** + * @brief Select FIFO threshold. + * @rmtoll FCR FTH LL_DMA_SetFIFOThreshold + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Threshold This parameter can be one of the following values: + * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 + * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 + * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 + * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Threshold) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DMA_SxFCR_FTH, Threshold); +} + +/** + * @brief Get FIFO threshold. + * @rmtoll FCR FTH LL_DMA_GetFIFOThreshold + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 + * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 + * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 + * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL + */ +__STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DMA_SxFCR_FTH)); +} + +/** + * @brief Configure the FIFO . + * @rmtoll FCR FTH LL_DMA_ConfigFifo\n + * FCR DMDIS LL_DMA_ConfigFifo + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param FifoMode This parameter can be one of the following values: + * @arg @ref LL_DMA_FIFOMODE_ENABLE + * @arg @ref LL_DMA_FIFOMODE_DISABLE + * @param FifoThreshold This parameter can be one of the following values: + * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 + * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 + * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 + * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigFifo(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t FifoMode, uint32_t FifoThreshold) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DMA_SxFCR_FTH|DMA_SxFCR_DMDIS, FifoMode|FifoThreshold); +} + +/** + * @brief Configure the Source and Destination addresses. + * @note This API must not be called when the DMA stream is enabled. + * @rmtoll M0AR M0A LL_DMA_ConfigAddresses\n + * PAR PA LL_DMA_ConfigAddresses + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param SrcAddress Between 0 to 0xFFFFFFFF + * @param DstAddress Between 0 to 0xFFFFFFFF + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t SrcAddress, uint32_t DstAddress, uint32_t Direction) +{ + /* Direction Memory to Periph */ + if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) + { + WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR, SrcAddress); + WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, DstAddress); + } + /* Direction Periph to Memory and Memory to Memory */ + else + { + WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, SrcAddress); + WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR, DstAddress); + } +} + +/** + * @brief Set the Memory address. + * @rmtoll M0AR M0A LL_DMA_SetMemoryAddress + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param MemoryAddress Between 0 to 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR, MemoryAddress); +} + +/** + * @brief Set the Peripheral address. + * @rmtoll PAR PA LL_DMA_SetPeriphAddress + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param PeriphAddress Between 0 to 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t PeriphAddress) +{ + WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, PeriphAddress); +} + +/** + * @brief Get the Memory address. + * @rmtoll M0AR M0A LL_DMA_GetMemoryAddress + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Between 0 to 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef* DMAx, uint32_t Stream) +{ + return (READ_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR)); +} + +/** + * @brief Get the Peripheral address. + * @rmtoll PAR PA LL_DMA_GetPeriphAddress + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Between 0 to 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef* DMAx, uint32_t Stream) +{ + return (READ_REG(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR)); +} + +/** + * @brief Set the Memory to Memory Source address. + * @rmtoll PAR PA LL_DMA_SetM2MSrcAddress + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param MemoryAddress Between 0 to 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, MemoryAddress); +} + +/** + * @brief Set the Memory to Memory Destination address. + * @rmtoll M0AR M0A LL_DMA_SetM2MDstAddress + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param MemoryAddress Between 0 to 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAddress) + { + WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR, MemoryAddress); + } + +/** + * @brief Get the Memory to Memory Source address. + * @rmtoll PAR PA LL_DMA_GetM2MSrcAddress + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Between 0 to 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef* DMAx, uint32_t Stream) + { + return (READ_REG(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR)); + } + +/** + * @brief Get the Memory to Memory Destination address. + * @rmtoll M0AR M0A LL_DMA_GetM2MDstAddress + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Between 0 to 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef* DMAx, uint32_t Stream) +{ + return (READ_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR)); +} + +/** + * @brief Set Memory 1 address (used in case of Double buffer mode). + * @rmtoll M1AR M1A LL_DMA_SetMemory1Address + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param Address Between 0 to 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Address) +{ + MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M1AR, DMA_SxM1AR_M1A, Address); +} + +/** + * @brief Get Memory 1 address (used in case of Double buffer mode). + * @rmtoll M1AR M1A LL_DMA_GetMemory1Address + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval Between 0 to 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M1AR); +} + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Stream 0 half transfer flag. + * @rmtoll LISR HTIF0 LL_DMA_IsActiveFlag_HT0 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT0(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF0)==(DMA_LISR_HTIF0)); +} + +/** + * @brief Get Stream 1 half transfer flag. + * @rmtoll LISR HTIF1 LL_DMA_IsActiveFlag_HT1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF1)==(DMA_LISR_HTIF1)); +} + +/** + * @brief Get Stream 2 half transfer flag. + * @rmtoll LISR HTIF2 LL_DMA_IsActiveFlag_HT2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF2)==(DMA_LISR_HTIF2)); +} + +/** + * @brief Get Stream 3 half transfer flag. + * @rmtoll LISR HTIF3 LL_DMA_IsActiveFlag_HT3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF3)==(DMA_LISR_HTIF3)); +} + +/** + * @brief Get Stream 4 half transfer flag. + * @rmtoll HISR HTIF4 LL_DMA_IsActiveFlag_HT4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF4)==(DMA_HISR_HTIF4)); +} + +/** + * @brief Get Stream 5 half transfer flag. + * @rmtoll HISR HTIF0 LL_DMA_IsActiveFlag_HT5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF5)==(DMA_HISR_HTIF5)); +} + +/** + * @brief Get Stream 6 half transfer flag. + * @rmtoll HISR HTIF6 LL_DMA_IsActiveFlag_HT6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF6)==(DMA_HISR_HTIF6)); +} + +/** + * @brief Get Stream 7 half transfer flag. + * @rmtoll HISR HTIF7 LL_DMA_IsActiveFlag_HT7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF7)==(DMA_HISR_HTIF7)); +} + +/** + * @brief Get Stream 0 transfer complete flag. + * @rmtoll LISR TCIF0 LL_DMA_IsActiveFlag_TC0 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC0(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF0)==(DMA_LISR_TCIF0)); +} + +/** + * @brief Get Stream 1 transfer complete flag. + * @rmtoll LISR TCIF1 LL_DMA_IsActiveFlag_TC1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF1)==(DMA_LISR_TCIF1)); +} + +/** + * @brief Get Stream 2 transfer complete flag. + * @rmtoll LISR TCIF2 LL_DMA_IsActiveFlag_TC2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF2)==(DMA_LISR_TCIF2)); +} + +/** + * @brief Get Stream 3 transfer complete flag. + * @rmtoll LISR TCIF3 LL_DMA_IsActiveFlag_TC3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF3)==(DMA_LISR_TCIF3)); +} + +/** + * @brief Get Stream 4 transfer complete flag. + * @rmtoll HISR TCIF4 LL_DMA_IsActiveFlag_TC4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF4)==(DMA_HISR_TCIF4)); +} + +/** + * @brief Get Stream 5 transfer complete flag. + * @rmtoll HISR TCIF0 LL_DMA_IsActiveFlag_TC5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF5)==(DMA_HISR_TCIF5)); +} + +/** + * @brief Get Stream 6 transfer complete flag. + * @rmtoll HISR TCIF6 LL_DMA_IsActiveFlag_TC6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF6)==(DMA_HISR_TCIF6)); +} + +/** + * @brief Get Stream 7 transfer complete flag. + * @rmtoll HISR TCIF7 LL_DMA_IsActiveFlag_TC7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF7)==(DMA_HISR_TCIF7)); +} + +/** + * @brief Get Stream 0 transfer error flag. + * @rmtoll LISR TEIF0 LL_DMA_IsActiveFlag_TE0 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE0(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF0)==(DMA_LISR_TEIF0)); +} + +/** + * @brief Get Stream 1 transfer error flag. + * @rmtoll LISR TEIF1 LL_DMA_IsActiveFlag_TE1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF1)==(DMA_LISR_TEIF1)); +} + +/** + * @brief Get Stream 2 transfer error flag. + * @rmtoll LISR TEIF2 LL_DMA_IsActiveFlag_TE2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF2)==(DMA_LISR_TEIF2)); +} + +/** + * @brief Get Stream 3 transfer error flag. + * @rmtoll LISR TEIF3 LL_DMA_IsActiveFlag_TE3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF3)==(DMA_LISR_TEIF3)); +} + +/** + * @brief Get Stream 4 transfer error flag. + * @rmtoll HISR TEIF4 LL_DMA_IsActiveFlag_TE4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF4)==(DMA_HISR_TEIF4)); +} + +/** + * @brief Get Stream 5 transfer error flag. + * @rmtoll HISR TEIF0 LL_DMA_IsActiveFlag_TE5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF5)==(DMA_HISR_TEIF5)); +} + +/** + * @brief Get Stream 6 transfer error flag. + * @rmtoll HISR TEIF6 LL_DMA_IsActiveFlag_TE6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF6)==(DMA_HISR_TEIF6)); +} + +/** + * @brief Get Stream 7 transfer error flag. + * @rmtoll HISR TEIF7 LL_DMA_IsActiveFlag_TE7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF7)==(DMA_HISR_TEIF7)); +} + +/** + * @brief Get Stream 0 direct mode error flag. + * @rmtoll LISR DMEIF0 LL_DMA_IsActiveFlag_DME0 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME0(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF0)==(DMA_LISR_DMEIF0)); +} + +/** + * @brief Get Stream 1 direct mode error flag. + * @rmtoll LISR DMEIF1 LL_DMA_IsActiveFlag_DME1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF1)==(DMA_LISR_DMEIF1)); +} + +/** + * @brief Get Stream 2 direct mode error flag. + * @rmtoll LISR DMEIF2 LL_DMA_IsActiveFlag_DME2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF2)==(DMA_LISR_DMEIF2)); +} + +/** + * @brief Get Stream 3 direct mode error flag. + * @rmtoll LISR DMEIF3 LL_DMA_IsActiveFlag_DME3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF3)==(DMA_LISR_DMEIF3)); +} + +/** + * @brief Get Stream 4 direct mode error flag. + * @rmtoll HISR DMEIF4 LL_DMA_IsActiveFlag_DME4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF4)==(DMA_HISR_DMEIF4)); +} + +/** + * @brief Get Stream 5 direct mode error flag. + * @rmtoll HISR DMEIF0 LL_DMA_IsActiveFlag_DME5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF5)==(DMA_HISR_DMEIF5)); +} + +/** + * @brief Get Stream 6 direct mode error flag. + * @rmtoll HISR DMEIF6 LL_DMA_IsActiveFlag_DME6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF6)==(DMA_HISR_DMEIF6)); +} + +/** + * @brief Get Stream 7 direct mode error flag. + * @rmtoll HISR DMEIF7 LL_DMA_IsActiveFlag_DME7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF7)==(DMA_HISR_DMEIF7)); +} + +/** + * @brief Get Stream 0 FIFO error flag. + * @rmtoll LISR FEIF0 LL_DMA_IsActiveFlag_FE0 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE0(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF0)==(DMA_LISR_FEIF0)); +} + +/** + * @brief Get Stream 1 FIFO error flag. + * @rmtoll LISR FEIF1 LL_DMA_IsActiveFlag_FE1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF1)==(DMA_LISR_FEIF1)); +} + +/** + * @brief Get Stream 2 FIFO error flag. + * @rmtoll LISR FEIF2 LL_DMA_IsActiveFlag_FE2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF2)==(DMA_LISR_FEIF2)); +} + +/** + * @brief Get Stream 3 FIFO error flag. + * @rmtoll LISR FEIF3 LL_DMA_IsActiveFlag_FE3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF3)==(DMA_LISR_FEIF3)); +} + +/** + * @brief Get Stream 4 FIFO error flag. + * @rmtoll HISR FEIF4 LL_DMA_IsActiveFlag_FE4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF4)==(DMA_HISR_FEIF4)); +} + +/** + * @brief Get Stream 5 FIFO error flag. + * @rmtoll HISR FEIF0 LL_DMA_IsActiveFlag_FE5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF5)==(DMA_HISR_FEIF5)); +} + +/** + * @brief Get Stream 6 FIFO error flag. + * @rmtoll HISR FEIF6 LL_DMA_IsActiveFlag_FE6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF6)==(DMA_HISR_FEIF6)); +} + +/** + * @brief Get Stream 7 FIFO error flag. + * @rmtoll HISR FEIF7 LL_DMA_IsActiveFlag_FE7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF7)==(DMA_HISR_FEIF7)); +} + +/** + * @brief Clear Stream 0 half transfer flag. + * @rmtoll LIFCR CHTIF0 LL_DMA_ClearFlag_HT0 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT0(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF0); +} + +/** + * @brief Clear Stream 1 half transfer flag. + * @rmtoll LIFCR CHTIF1 LL_DMA_ClearFlag_HT1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF1); +} + +/** + * @brief Clear Stream 2 half transfer flag. + * @rmtoll LIFCR CHTIF2 LL_DMA_ClearFlag_HT2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF2); +} + +/** + * @brief Clear Stream 3 half transfer flag. + * @rmtoll LIFCR CHTIF3 LL_DMA_ClearFlag_HT3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF3); +} + +/** + * @brief Clear Stream 4 half transfer flag. + * @rmtoll HIFCR CHTIF4 LL_DMA_ClearFlag_HT4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF4); +} + +/** + * @brief Clear Stream 5 half transfer flag. + * @rmtoll HIFCR CHTIF5 LL_DMA_ClearFlag_HT5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF5); +} + +/** + * @brief Clear Stream 6 half transfer flag. + * @rmtoll HIFCR CHTIF6 LL_DMA_ClearFlag_HT6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF6); +} + +/** + * @brief Clear Stream 7 half transfer flag. + * @rmtoll HIFCR CHTIF7 LL_DMA_ClearFlag_HT7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF7); +} + +/** + * @brief Clear Stream 0 transfer complete flag. + * @rmtoll LIFCR CTCIF0 LL_DMA_ClearFlag_TC0 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC0(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF0); +} + +/** + * @brief Clear Stream 1 transfer complete flag. + * @rmtoll LIFCR CTCIF1 LL_DMA_ClearFlag_TC1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF1); +} + +/** + * @brief Clear Stream 2 transfer complete flag. + * @rmtoll LIFCR CTCIF2 LL_DMA_ClearFlag_TC2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF2); +} + +/** + * @brief Clear Stream 3 transfer complete flag. + * @rmtoll LIFCR CTCIF3 LL_DMA_ClearFlag_TC3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF3); +} + +/** + * @brief Clear Stream 4 transfer complete flag. + * @rmtoll HIFCR CTCIF4 LL_DMA_ClearFlag_TC4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF4); +} + +/** + * @brief Clear Stream 5 transfer complete flag. + * @rmtoll HIFCR CTCIF5 LL_DMA_ClearFlag_TC5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF5); +} + +/** + * @brief Clear Stream 6 transfer complete flag. + * @rmtoll HIFCR CTCIF6 LL_DMA_ClearFlag_TC6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF6); +} + +/** + * @brief Clear Stream 7 transfer complete flag. + * @rmtoll HIFCR CTCIF7 LL_DMA_ClearFlag_TC7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF7); +} + +/** + * @brief Clear Stream 0 transfer error flag. + * @rmtoll LIFCR CTEIF0 LL_DMA_ClearFlag_TE0 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE0(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF0); +} + +/** + * @brief Clear Stream 1 transfer error flag. + * @rmtoll LIFCR CTEIF1 LL_DMA_ClearFlag_TE1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF1); +} + +/** + * @brief Clear Stream 2 transfer error flag. + * @rmtoll LIFCR CTEIF2 LL_DMA_ClearFlag_TE2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF2); +} + +/** + * @brief Clear Stream 3 transfer error flag. + * @rmtoll LIFCR CTEIF3 LL_DMA_ClearFlag_TE3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF3); +} + +/** + * @brief Clear Stream 4 transfer error flag. + * @rmtoll HIFCR CTEIF4 LL_DMA_ClearFlag_TE4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF4); +} + +/** + * @brief Clear Stream 5 transfer error flag. + * @rmtoll HIFCR CTEIF5 LL_DMA_ClearFlag_TE5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF5); +} + +/** + * @brief Clear Stream 6 transfer error flag. + * @rmtoll HIFCR CTEIF6 LL_DMA_ClearFlag_TE6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF6); +} + +/** + * @brief Clear Stream 7 transfer error flag. + * @rmtoll HIFCR CTEIF7 LL_DMA_ClearFlag_TE7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF7); +} + +/** + * @brief Clear Stream 0 direct mode error flag. + * @rmtoll LIFCR CDMEIF0 LL_DMA_ClearFlag_DME0 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_DME0(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CDMEIF0); +} + +/** + * @brief Clear Stream 1 direct mode error flag. + * @rmtoll LIFCR CDMEIF1 LL_DMA_ClearFlag_DME1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_DME1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CDMEIF1); +} + +/** + * @brief Clear Stream 2 direct mode error flag. + * @rmtoll LIFCR CDMEIF2 LL_DMA_ClearFlag_DME2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_DME2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CDMEIF2); +} + +/** + * @brief Clear Stream 3 direct mode error flag. + * @rmtoll LIFCR CDMEIF3 LL_DMA_ClearFlag_DME3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_DME3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CDMEIF3); +} + +/** + * @brief Clear Stream 4 direct mode error flag. + * @rmtoll HIFCR CDMEIF4 LL_DMA_ClearFlag_DME4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_DME4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CDMEIF4); +} + +/** + * @brief Clear Stream 5 direct mode error flag. + * @rmtoll HIFCR CDMEIF5 LL_DMA_ClearFlag_DME5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_DME5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CDMEIF5); +} + +/** + * @brief Clear Stream 6 direct mode error flag. + * @rmtoll HIFCR CDMEIF6 LL_DMA_ClearFlag_DME6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_DME6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CDMEIF6); +} + +/** + * @brief Clear Stream 7 direct mode error flag. + * @rmtoll HIFCR CDMEIF7 LL_DMA_ClearFlag_DME7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_DME7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CDMEIF7); +} + +/** + * @brief Clear Stream 0 FIFO error flag. + * @rmtoll LIFCR CFEIF0 LL_DMA_ClearFlag_FE0 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_FE0(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CFEIF0); +} + +/** + * @brief Clear Stream 1 FIFO error flag. + * @rmtoll LIFCR CFEIF1 LL_DMA_ClearFlag_FE1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_FE1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CFEIF1); +} + +/** + * @brief Clear Stream 2 FIFO error flag. + * @rmtoll LIFCR CFEIF2 LL_DMA_ClearFlag_FE2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_FE2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CFEIF2); +} + +/** + * @brief Clear Stream 3 FIFO error flag. + * @rmtoll LIFCR CFEIF3 LL_DMA_ClearFlag_FE3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_FE3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CFEIF3); +} + +/** + * @brief Clear Stream 4 FIFO error flag. + * @rmtoll HIFCR CFEIF4 LL_DMA_ClearFlag_FE4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_FE4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CFEIF4); +} + +/** + * @brief Clear Stream 5 FIFO error flag. + * @rmtoll HIFCR CFEIF5 LL_DMA_ClearFlag_FE5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_FE5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CFEIF5); +} + +/** + * @brief Clear Stream 6 FIFO error flag. + * @rmtoll HIFCR CFEIF6 LL_DMA_ClearFlag_FE6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_FE6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CFEIF6); +} + +/** + * @brief Clear Stream 7 FIFO error flag. + * @rmtoll HIFCR CFEIF7 LL_DMA_ClearFlag_FE7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_FE7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CFEIF7); +} + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable Half transfer interrupt. + * @rmtoll CR HTIE LL_DMA_EnableIT_HT + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream) +{ + SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_HTIE); +} + +/** + * @brief Enable Transfer error interrupt. + * @rmtoll CR TEIE LL_DMA_EnableIT_TE + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream) +{ + SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_TEIE); +} + +/** + * @brief Enable Transfer complete interrupt. + * @rmtoll CR TCIE LL_DMA_EnableIT_TC + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream) +{ + SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_TCIE); +} + +/** + * @brief Enable Direct mode error interrupt. + * @rmtoll CR DMEIE LL_DMA_EnableIT_DME + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream) +{ + SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_DMEIE); +} + +/** + * @brief Enable FIFO error interrupt. + * @rmtoll FCR FEIE LL_DMA_EnableIT_FE + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream) +{ + SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DMA_SxFCR_FEIE); +} + +/** + * @brief Disable Half transfer interrupt. + * @rmtoll CR HTIE LL_DMA_DisableIT_HT + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream) +{ + CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_HTIE); +} + +/** + * @brief Disable Transfer error interrupt. + * @rmtoll CR TEIE LL_DMA_DisableIT_TE + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream) +{ + CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_TEIE); +} + +/** + * @brief Disable Transfer complete interrupt. + * @rmtoll CR TCIE LL_DMA_DisableIT_TC + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream) +{ + CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_TCIE); +} + +/** + * @brief Disable Direct mode error interrupt. + * @rmtoll CR DMEIE LL_DMA_DisableIT_DME + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream) +{ + CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_DMEIE); +} + +/** + * @brief Disable FIFO error interrupt. + * @rmtoll FCR FEIE LL_DMA_DisableIT_FE + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream) +{ + CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DMA_SxFCR_FEIE); +} + +/** + * @brief Check if Half transfer interrup is enabled. + * @rmtoll CR HTIE LL_DMA_IsEnabledIT_HT + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_HTIE) == DMA_SxCR_HTIE); +} + +/** + * @brief Check if Transfer error nterrup is enabled. + * @rmtoll CR TEIE LL_DMA_IsEnabledIT_TE + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_TEIE) == DMA_SxCR_TEIE); +} + +/** + * @brief Check if Transfer complete interrup is enabled. + * @rmtoll CR TCIE LL_DMA_IsEnabledIT_TC + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_TCIE) == DMA_SxCR_TCIE); +} + +/** + * @brief Check if Direct mode error interrupt is enabled. + * @rmtoll CR DMEIE LL_DMA_IsEnabledIT_DME + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DME(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA_SxCR_DMEIE) == DMA_SxCR_DMEIE); +} + +/** + * @brief Check if FIFO error interrup is enabled. + * @rmtoll FCR FEIE LL_DMA_IsEnabledIT_FE + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_FE(DMA_TypeDef *DMAx, uint32_t Stream) +{ + return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DMA_SxFCR_FEIE) == DMA_SxFCR_FEIE); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Stream, LL_DMA_InitTypeDef *DMA_InitStruct); +uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Stream); +void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMA1 || DMA2 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_DMA_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h new file mode 100644 index 0000000..b240d5d --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h @@ -0,0 +1,948 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_exti.h + * @author MCD Application Team + * @brief Header file of EXTI LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_EXTI_H +#define __STM32F7xx_LL_EXTI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (EXTI) + +/** @defgroup EXTI_LL EXTI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private Macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_Private_Macros EXTI Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_ES_INIT EXTI Exported Init structure + * @{ + */ +typedef struct +{ + + uint32_t Line_0_31; /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 0 to 31 + This parameter can be any combination of @ref EXTI_LL_EC_LINE */ + + FunctionalState LineCommand; /*!< Specifies the new state of the selected EXTI lines. + This parameter can be set either to ENABLE or DISABLE */ + + uint8_t Mode; /*!< Specifies the mode for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_MODE. */ + + uint8_t Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_TRIGGER. */ +} LL_EXTI_InitTypeDef; + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Constants EXTI Exported Constants + * @{ + */ + +/** @defgroup EXTI_LL_EC_LINE LINE + * @{ + */ +#define LL_EXTI_LINE_0 EXTI_IMR_IM0 /*!< Extended line 0 */ +#define LL_EXTI_LINE_1 EXTI_IMR_IM1 /*!< Extended line 1 */ +#define LL_EXTI_LINE_2 EXTI_IMR_IM2 /*!< Extended line 2 */ +#define LL_EXTI_LINE_3 EXTI_IMR_IM3 /*!< Extended line 3 */ +#define LL_EXTI_LINE_4 EXTI_IMR_IM4 /*!< Extended line 4 */ +#define LL_EXTI_LINE_5 EXTI_IMR_IM5 /*!< Extended line 5 */ +#define LL_EXTI_LINE_6 EXTI_IMR_IM6 /*!< Extended line 6 */ +#define LL_EXTI_LINE_7 EXTI_IMR_IM7 /*!< Extended line 7 */ +#define LL_EXTI_LINE_8 EXTI_IMR_IM8 /*!< Extended line 8 */ +#define LL_EXTI_LINE_9 EXTI_IMR_IM9 /*!< Extended line 9 */ +#define LL_EXTI_LINE_10 EXTI_IMR_IM10 /*!< Extended line 10 */ +#define LL_EXTI_LINE_11 EXTI_IMR_IM11 /*!< Extended line 11 */ +#define LL_EXTI_LINE_12 EXTI_IMR_IM12 /*!< Extended line 12 */ +#define LL_EXTI_LINE_13 EXTI_IMR_IM13 /*!< Extended line 13 */ +#define LL_EXTI_LINE_14 EXTI_IMR_IM14 /*!< Extended line 14 */ +#define LL_EXTI_LINE_15 EXTI_IMR_IM15 /*!< Extended line 15 */ +#if defined(EXTI_IMR_IM16) +#define LL_EXTI_LINE_16 EXTI_IMR_IM16 /*!< Extended line 16 */ +#endif +#define LL_EXTI_LINE_17 EXTI_IMR_IM17 /*!< Extended line 17 */ +#if defined(EXTI_IMR_IM18) +#define LL_EXTI_LINE_18 EXTI_IMR_IM18 /*!< Extended line 18 */ +#endif +#define LL_EXTI_LINE_19 EXTI_IMR_IM19 /*!< Extended line 19 */ +#if defined(EXTI_IMR_IM20) +#define LL_EXTI_LINE_20 EXTI_IMR_IM20 /*!< Extended line 20 */ +#endif +#if defined(EXTI_IMR_IM21) +#define LL_EXTI_LINE_21 EXTI_IMR_IM21 /*!< Extended line 21 */ +#endif +#if defined(EXTI_IMR_IM22) +#define LL_EXTI_LINE_22 EXTI_IMR_IM22 /*!< Extended line 22 */ +#endif +#define LL_EXTI_LINE_23 EXTI_IMR_IM23 /*!< Extended line 23 */ +#if defined(EXTI_IMR_IM24) +#define LL_EXTI_LINE_24 EXTI_IMR_IM24 /*!< Extended line 24 */ +#endif +#if defined(EXTI_IMR_IM25) +#define LL_EXTI_LINE_25 EXTI_IMR_IM25 /*!< Extended line 25 */ +#endif +#if defined(EXTI_IMR_IM26) +#define LL_EXTI_LINE_26 EXTI_IMR_IM26 /*!< Extended line 26 */ +#endif +#if defined(EXTI_IMR_IM27) +#define LL_EXTI_LINE_27 EXTI_IMR_IM27 /*!< Extended line 27 */ +#endif +#if defined(EXTI_IMR_IM28) +#define LL_EXTI_LINE_28 EXTI_IMR_IM28 /*!< Extended line 28 */ +#endif +#if defined(EXTI_IMR_IM29) +#define LL_EXTI_LINE_29 EXTI_IMR_IM29 /*!< Extended line 29 */ +#endif +#if defined(EXTI_IMR_IM30) +#define LL_EXTI_LINE_30 EXTI_IMR_IM30 /*!< Extended line 30 */ +#endif +#if defined(EXTI_IMR_IM31) +#define LL_EXTI_LINE_31 EXTI_IMR_IM31 /*!< Extended line 31 */ +#endif +#define LL_EXTI_LINE_ALL_0_31 EXTI_IMR_IM /*!< All Extended line not reserved*/ + + +#define LL_EXTI_LINE_ALL (0xFFFFFFFFU) /*!< All Extended line */ + +#if defined(USE_FULL_LL_DRIVER) +#define LL_EXTI_LINE_NONE (0x00000000U) /*!< None Extended line */ +#endif /*USE_FULL_LL_DRIVER*/ + +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup EXTI_LL_EC_MODE Mode + * @{ + */ +#define LL_EXTI_MODE_IT ((uint8_t)0x00U) /*!< Interrupt Mode */ +#define LL_EXTI_MODE_EVENT ((uint8_t)0x01U) /*!< Event Mode */ +#define LL_EXTI_MODE_IT_EVENT ((uint8_t)0x02U) /*!< Interrupt & Event Mode */ +/** + * @} + */ + +/** @defgroup EXTI_LL_EC_TRIGGER Edge Trigger + * @{ + */ +#define LL_EXTI_TRIGGER_NONE ((uint8_t)0x00U) /*!< No Trigger Mode */ +#define LL_EXTI_TRIGGER_RISING ((uint8_t)0x01U) /*!< Trigger Rising Mode */ +#define LL_EXTI_TRIGGER_FALLING ((uint8_t)0x02U) /*!< Trigger Falling Mode */ +#define LL_EXTI_TRIGGER_RISING_FALLING ((uint8_t)0x03U) /*!< Trigger Rising & Falling Mode */ + +/** + * @} + */ + + +#endif /*USE_FULL_LL_DRIVER*/ + + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Macros EXTI Exported Macros + * @{ + */ + +/** @defgroup EXTI_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in EXTI register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_EXTI_WriteReg(__REG__, __VALUE__) WRITE_REG(EXTI->__REG__, (__VALUE__)) + +/** + * @brief Read a value in EXTI register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_EXTI_ReadReg(__REG__) READ_REG(EXTI->__REG__) +/** + * @} + */ + + +/** + * @} + */ + + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Functions EXTI Exported Functions + * @{ + */ +/** @defgroup EXTI_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_EnableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24(*) + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note (*): Available in some devices + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableIT_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->IMR, ExtiLine); +} + +/** + * @brief Disable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_DisableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24(*) + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note (*): Available in some devices + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableIT_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->IMR, ExtiLine); +} + + +/** + * @brief Indicate if ExtiLine Interrupt request is enabled for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_IsEnabledIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24(*) + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note (*): Available in some devices + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->IMR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Event_Management Event_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_EnableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24(*) + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note (*): Available in some devices + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->EMR, ExtiLine); + +} + + +/** + * @brief Disable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_DisableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24(*) + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note (*): Available in some devices + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->EMR, ExtiLine); +} + + +/** + * @brief Indicate if ExtiLine Event request is enabled for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_IsEnabledEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24(*) + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note (*): Available in some devices + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->EMR, ExtiLine) == (ExtiLine)); + +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Rising_Trigger_Management Rising_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR RTx LL_EXTI_EnableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->RTSR, ExtiLine); + +} + + +/** + * @brief Disable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR RTx LL_EXTI_DisableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->RTSR, ExtiLine); + +} + + +/** + * @brief Check if rising edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll RTSR RTx LL_EXTI_IsEnabledRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->RTSR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Falling_Trigger_Management Falling_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll FTSR FTx LL_EXTI_EnableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->FTSR, ExtiLine); +} + + +/** + * @brief Disable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a Falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for the same interrupt line. + * In this case, both generate a trigger condition. + * @rmtoll FTSR FTx LL_EXTI_DisableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->FTSR, ExtiLine); +} + + +/** + * @brief Check if falling edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll FTSR FTx LL_EXTI_IsEnabledFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->FTSR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Software_Interrupt_Management Software_Interrupt_Management + * @{ + */ + +/** + * @brief Generate a software Interrupt Event for Lines in range 0 to 31 + * @note If the interrupt is enabled on this line in the EXTI_IMR, writing a 1 to + * this bit when it is at '0' sets the corresponding pending bit in EXTI_PR + * resulting in an interrupt request generation. + * This bit is cleared by clearing the corresponding bit in the EXTI_PR + * register (by writing a 1 into the bit) + * @rmtoll SWIER SWIx LL_EXTI_GenerateSWI_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_GenerateSWI_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->SWIER, ExtiLine); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Flag_Management Flag_Management + * @{ + */ + +/** + * @brief Check if the ExtLine Flag is set or not for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_IsActiveFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsActiveFlag_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->PR, ExtiLine) == (ExtiLine)); +} + + +/** + * @brief Read ExtLine Combination Flag for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_ReadFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @note Please check each device line mapping for EXTI Line availability + * @retval @note This bit is set when the selected edge event arrives on the interrupt + */ +__STATIC_INLINE uint32_t LL_EXTI_ReadFlag_0_31(uint32_t ExtiLine) +{ + return (uint32_t)(READ_BIT(EXTI->PR, ExtiLine)); +} + + +/** + * @brief Clear ExtLine Flags for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_ClearFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_ClearFlag_0_31(uint32_t ExtiLine) +{ + WRITE_REG(EXTI->PR, ExtiLine); +} + + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct); +uint32_t LL_EXTI_DeInit(void); +void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct); + + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* EXTI */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_EXTI_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h new file mode 100644 index 0000000..14c67ca --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h @@ -0,0 +1,981 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_gpio.h + * @author MCD Application Team + * @brief Header file of GPIO LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_GPIO_H +#define __STM32F7xx_LL_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK) + +/** @defgroup GPIO_LL GPIO + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_Private_Macros GPIO Private Macros + * @{ + */ + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures + * @{ + */ + +/** + * @brief LL GPIO Init Structure definition + */ +typedef struct +{ + uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_LL_EC_PIN */ + + uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_MODE. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/ + + uint32_t Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_SPEED. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/ + + uint32_t OutputType; /*!< Specifies the operating output type for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_OUTPUT. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/ + + uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_PULL. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/ + + uint32_t Alternate; /*!< Specifies the Peripheral to be connected to the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_AF. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetAFPin_0_7() and LL_GPIO_SetAFPin_8_15().*/ +} LL_GPIO_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants + * @{ + */ + +/** @defgroup GPIO_LL_EC_PIN PIN + * @{ + */ +#define LL_GPIO_PIN_0 GPIO_BSRR_BS_0 /*!< Select pin 0 */ +#define LL_GPIO_PIN_1 GPIO_BSRR_BS_1 /*!< Select pin 1 */ +#define LL_GPIO_PIN_2 GPIO_BSRR_BS_2 /*!< Select pin 2 */ +#define LL_GPIO_PIN_3 GPIO_BSRR_BS_3 /*!< Select pin 3 */ +#define LL_GPIO_PIN_4 GPIO_BSRR_BS_4 /*!< Select pin 4 */ +#define LL_GPIO_PIN_5 GPIO_BSRR_BS_5 /*!< Select pin 5 */ +#define LL_GPIO_PIN_6 GPIO_BSRR_BS_6 /*!< Select pin 6 */ +#define LL_GPIO_PIN_7 GPIO_BSRR_BS_7 /*!< Select pin 7 */ +#define LL_GPIO_PIN_8 GPIO_BSRR_BS_8 /*!< Select pin 8 */ +#define LL_GPIO_PIN_9 GPIO_BSRR_BS_9 /*!< Select pin 9 */ +#define LL_GPIO_PIN_10 GPIO_BSRR_BS_10 /*!< Select pin 10 */ +#define LL_GPIO_PIN_11 GPIO_BSRR_BS_11 /*!< Select pin 11 */ +#define LL_GPIO_PIN_12 GPIO_BSRR_BS_12 /*!< Select pin 12 */ +#define LL_GPIO_PIN_13 GPIO_BSRR_BS_13 /*!< Select pin 13 */ +#define LL_GPIO_PIN_14 GPIO_BSRR_BS_14 /*!< Select pin 14 */ +#define LL_GPIO_PIN_15 GPIO_BSRR_BS_15 /*!< Select pin 15 */ +#define LL_GPIO_PIN_ALL (GPIO_BSRR_BS_0 | GPIO_BSRR_BS_1 | GPIO_BSRR_BS_2 | \ + GPIO_BSRR_BS_3 | GPIO_BSRR_BS_4 | GPIO_BSRR_BS_5 | \ + GPIO_BSRR_BS_6 | GPIO_BSRR_BS_7 | GPIO_BSRR_BS_8 | \ + GPIO_BSRR_BS_9 | GPIO_BSRR_BS_10 | GPIO_BSRR_BS_11 | \ + GPIO_BSRR_BS_12 | GPIO_BSRR_BS_13 | GPIO_BSRR_BS_14 | \ + GPIO_BSRR_BS_15) /*!< Select all pins */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_MODE Mode + * @{ + */ +#define LL_GPIO_MODE_INPUT (0x00000000U) /*!< Select input mode */ +#define LL_GPIO_MODE_OUTPUT GPIO_MODER_MODER0_0 /*!< Select output mode */ +#define LL_GPIO_MODE_ALTERNATE GPIO_MODER_MODER0_1 /*!< Select alternate function mode */ +#define LL_GPIO_MODE_ANALOG GPIO_MODER_MODER0 /*!< Select analog mode */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_OUTPUT Output Type + * @{ + */ +#define LL_GPIO_OUTPUT_PUSHPULL (0x00000000U) /*!< Select push-pull as output type */ +#define LL_GPIO_OUTPUT_OPENDRAIN GPIO_OTYPER_OT_0 /*!< Select open-drain as output type */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_SPEED Output Speed + * @{ + */ +#define LL_GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Select I/O low output speed */ +#define LL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDER_OSPEEDR0_0 /*!< Select I/O medium output speed */ +#define LL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDER_OSPEEDR0_1 /*!< Select I/O fast output speed */ +#define LL_GPIO_SPEED_FREQ_VERY_HIGH GPIO_OSPEEDER_OSPEEDR0 /*!< Select I/O high output speed */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down + * @{ + */ +#define LL_GPIO_PULL_NO (0x00000000U) /*!< Select I/O no pull */ +#define LL_GPIO_PULL_UP GPIO_PUPDR_PUPDR0_0 /*!< Select I/O pull up */ +#define LL_GPIO_PULL_DOWN GPIO_PUPDR_PUPDR0_1 /*!< Select I/O pull down */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_AF Alternate Function + * @{ + */ +#define LL_GPIO_AF_0 (0x0000000U) /*!< Select alternate function 0 */ +#define LL_GPIO_AF_1 (0x0000001U) /*!< Select alternate function 1 */ +#define LL_GPIO_AF_2 (0x0000002U) /*!< Select alternate function 2 */ +#define LL_GPIO_AF_3 (0x0000003U) /*!< Select alternate function 3 */ +#define LL_GPIO_AF_4 (0x0000004U) /*!< Select alternate function 4 */ +#define LL_GPIO_AF_5 (0x0000005U) /*!< Select alternate function 5 */ +#define LL_GPIO_AF_6 (0x0000006U) /*!< Select alternate function 6 */ +#define LL_GPIO_AF_7 (0x0000007U) /*!< Select alternate function 7 */ +#define LL_GPIO_AF_8 (0x0000008U) /*!< Select alternate function 8 */ +#define LL_GPIO_AF_9 (0x0000009U) /*!< Select alternate function 9 */ +#define LL_GPIO_AF_10 (0x000000AU) /*!< Select alternate function 10 */ +#define LL_GPIO_AF_11 (0x000000BU) /*!< Select alternate function 11 */ +#define LL_GPIO_AF_12 (0x000000CU) /*!< Select alternate function 12 */ +#define LL_GPIO_AF_13 (0x000000DU) /*!< Select alternate function 13 */ +#define LL_GPIO_AF_14 (0x000000EU) /*!< Select alternate function 14 */ +#define LL_GPIO_AF_15 (0x000000FU) /*!< Select alternate function 15 */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros + * @{ + */ + +/** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions + * @{ + */ + +/** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration + * @{ + */ + +/** + * @brief Configure gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll MODER MODEy LL_GPIO_SetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @arg @ref LL_GPIO_MODE_ANALOG + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) +{ + MODIFY_REG(GPIOx->MODER, (GPIO_MODER_MODER0 << (POSITION_VAL(Pin) * 2U)), (Mode << (POSITION_VAL(Pin) * 2U))); +} + +/** + * @brief Return gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll MODER MODEy LL_GPIO_GetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @arg @ref LL_GPIO_MODE_ANALOG + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->MODER, + (GPIO_MODER_MODER0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U)); +} + +/** + * @brief Configure gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @rmtoll OTYPER OTy LL_GPIO_SetPinOutputType + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @param OutputType This parameter can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t OutputType) +{ + MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType)); +} + +/** + * @brief Return gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll OTYPER OTy LL_GPIO_GetPinOutputType + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) >> POSITION_VAL(Pin)); +} + +/** + * @brief Configure gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium, Fast or High speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll OSPEEDR OSPEEDy LL_GPIO_SetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Speed This parameter can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed) +{ + MODIFY_REG(GPIOx->OSPEEDR, (GPIO_OSPEEDER_OSPEEDR0 << (POSITION_VAL(Pin) * 2U)), + (Speed << (POSITION_VAL(Pin) * 2U))); +} + +/** + * @brief Return gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium, Fast or High speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll OSPEEDR OSPEEDy LL_GPIO_GetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->OSPEEDR, + (GPIO_OSPEEDER_OSPEEDR0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U)); +} + +/** + * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll PUPDR PUPDy LL_GPIO_SetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Pull This parameter can be one of the following values: + * @arg @ref LL_GPIO_PULL_NO + * @arg @ref LL_GPIO_PULL_UP + * @arg @ref LL_GPIO_PULL_DOWN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull) +{ + MODIFY_REG(GPIOx->PUPDR, (GPIO_PUPDR_PUPDR0 << (POSITION_VAL(Pin) * 2U)), (Pull << (POSITION_VAL(Pin) * 2U))); +} + +/** + * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port + * @note Warning: only one pin can be passed as parameter. + * @rmtoll PUPDR PUPDy LL_GPIO_GetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_PULL_NO + * @arg @ref LL_GPIO_PULL_UP + * @arg @ref LL_GPIO_PULL_DOWN + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->PUPDR, + (GPIO_PUPDR_PUPDR0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U)); +} + +/** + * @brief Configure gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. + * @note Possible values are from AF0 to AF15 depending on target. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll AFRL AFSELy LL_GPIO_SetAFPin_0_7 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @param Alternate This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) +{ + MODIFY_REG(GPIOx->AFR[0], (GPIO_AFRL_AFRL0 << (POSITION_VAL(Pin) * 4U)), + (Alternate << (POSITION_VAL(Pin) * 4U))); +} + +/** + * @brief Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. + * @rmtoll AFRL AFSELy LL_GPIO_GetAFPin_0_7 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + */ +__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->AFR[0], + (GPIO_AFRL_AFRL0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); +} + +/** + * @brief Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. + * @note Possible values are from AF0 to AF15 depending on target. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll AFRH AFSELy LL_GPIO_SetAFPin_8_15 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Alternate This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) +{ + MODIFY_REG(GPIOx->AFR[1], (GPIO_AFRH_AFRH0 << (POSITION_VAL(Pin >> 8U) * 4U)), + (Alternate << (POSITION_VAL(Pin >> 8U) * 4U))); +} + +/** + * @brief Return gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. + * @note Possible values are from AF0 to AF15 depending on target. + * @rmtoll AFRH AFSELy LL_GPIO_GetAFPin_8_15 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + */ +__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->AFR[1], + (GPIO_AFRH_AFRH0 << (POSITION_VAL(Pin >> 8U) * 4U))) >> (POSITION_VAL(Pin >> 8U) * 4U)); +} + + +/** + * @brief Lock configuration of several pins for a dedicated port. + * @note When the lock sequence has been applied on a port bit, the + * value of this port bit can no longer be modified until the + * next reset. + * @note Each lock bit freezes a specific configuration register + * (control and alternate function registers). + * @rmtoll LCKR LCKK LL_GPIO_LockPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + __IO uint32_t temp; + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); + WRITE_REG(GPIOx->LCKR, PinMask); + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); + temp = READ_REG(GPIOx->LCKR); + (void) temp; +} + +/** + * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0. + * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->LCKR, PinMask) == (PinMask)); +} + +/** + * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0. + * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked + * @param GPIOx GPIO Port + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) +{ + return (READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK)); +} + +/** + * @} + */ + +/** @defgroup GPIO_LL_EF_Data_Access Data Access + * @{ + */ + +/** + * @brief Return full input data register value for a dedicated port. + * @rmtoll IDR IDy LL_GPIO_ReadInputPort + * @param GPIOx GPIO Port + * @retval Input data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) +{ + return (uint32_t)(READ_REG(GPIOx->IDR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll IDR IDy LL_GPIO_IsInputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->IDR, PinMask) == (PinMask)); +} + +/** + * @brief Write output data register for the port. + * @rmtoll ODR ODy LL_GPIO_WriteOutputPort + * @param GPIOx GPIO Port + * @param PortValue Level value for each pin of the port + * @retval None + */ +__STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue) +{ + WRITE_REG(GPIOx->ODR, PortValue); +} + +/** + * @brief Return full output data register value for a dedicated port. + * @rmtoll ODR ODy LL_GPIO_ReadOutputPort + * @param GPIOx GPIO Port + * @retval Output data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) +{ + return (uint32_t)(READ_REG(GPIOx->ODR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->ODR, PinMask) == (PinMask)); +} + +/** + * @brief Set several pins to high level on dedicated gpio port. + * @rmtoll BSRR BSy LL_GPIO_SetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BSRR, PinMask); +} + +/** + * @brief Set several pins to low level on dedicated gpio port. + * @rmtoll BSRR BRy LL_GPIO_ResetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BSRR, (PinMask << 16)); +} + +/** + * @brief Toggle data value for several pin of dedicated port. + * @rmtoll ODR ODy LL_GPIO_TogglePin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + uint32_t odr = READ_REG(GPIOx->ODR); + WRITE_REG(GPIOx->BSRR, ((odr & PinMask) << 16u) | (~odr & PinMask)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx); +ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct); +void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK) */ +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_GPIO_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h new file mode 100644 index 0000000..88e3f70 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h @@ -0,0 +1,1016 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_pwr.h + * @author MCD Application Team + * @brief Header file of PWR LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_PWR_H +#define __STM32F7xx_LL_PWR_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined(PWR) + +/** @defgroup PWR_LL PWR + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Constants PWR Exported Constants + * @{ + */ + +/** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_PWR_WriteReg function + * @{ + */ +#define LL_PWR_CR1_CSBF PWR_CR1_CSBF /*!< Clear standby flag */ + +#define LL_PWR_CR2_CWUF6 PWR_CR2_CWUF6 /*!< Clear WKUP pin 6 */ +#define LL_PWR_CR2_CWUF5 PWR_CR2_CWUF5 /*!< Clear WKUP pin 5 */ +#define LL_PWR_CR2_CWUF4 PWR_CR2_CWUF4 /*!< Clear WKUP pin 4 */ +#define LL_PWR_CR2_CWUF3 PWR_CR2_CWUF3 /*!< Clear WKUP pin 3 */ +#define LL_PWR_CR2_CWUF2 PWR_CR2_CWUF2 /*!< Clear WKUP pin 2 */ +#define LL_PWR_CR2_CWUF1 PWR_CR2_CWUF1 /*!< Clear WKUP pin 1 */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_PWR_ReadReg function + * @{ + */ +#define LL_PWR_CSR1_WUIF PWR_CSR1_WUIF /*!< Wakeup flag */ +#define LL_PWR_CSR1_SBF PWR_CSR1_SBF /*!< Standby flag */ +#define LL_PWR_CSR1_PVDO PWR_CSR1_PVDO /*!< Power voltage detector output flag */ +#define LL_PWR_CSR1_BRR PWR_CSR1_BRR /*!< Backup Regulator ready flag */ +#define LL_PWR_CSR1_VOSRDY PWR_CSR1_VOSRDY /*!< Voltage scaling select flag */ +#define LL_PWR_CSR1_ODRDY PWR_CSR1_ODRDY /*!< Over-drive mode ready */ +#define LL_PWR_CSR1_ODSWRDY PWR_CSR1_ODSWRDY /*!< Over-drive mode switching ready */ +#define LL_PWR_CSR1_UDRDY PWR_CSR1_UDRDY /*!< Under-drive ready flag */ + +#define LL_PWR_CSR2_EWUP1 PWR_CSR2_EWUP1 /*!< Enable WKUP pin 1 */ +#define LL_PWR_CSR2_EWUP2 PWR_CSR2_EWUP2 /*!< Enable WKUP pin 2 */ +#define LL_PWR_CSR2_EWUP3 PWR_CSR2_EWUP3 /*!< Enable WKUP pin 3 */ +#define LL_PWR_CSR2_EWUP4 PWR_CSR2_EWUP4 /*!< Enable WKUP pin 4 */ +#define LL_PWR_CSR2_EWUP5 PWR_CSR2_EWUP5 /*!< Enable WKUP pin 5 */ +#define LL_PWR_CSR2_EWUP6 PWR_CSR2_EWUP6 /*!< Enable WKUP pin 6 */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_MODE_PWR Mode Power + * @{ + */ +#define LL_PWR_MODE_STOP_MAINREGU 0x00000000U /*!< Enter Stop mode (with main Regulator ON) when the CPU enters deepsleep */ +#define LL_PWR_MODE_STOP_MAINREGU_UNDERDRIVE (PWR_CR1_MRUDS | PWR_CR1_FPDS) /*!< Enter Stop mode (with main Regulator in under-drive mode) when the CPU enters deepsleep */ +#define LL_PWR_MODE_STOP_LPREGU PWR_CR1_LPDS /*!< Enter Stop mode (with low power Regulator ON) when the CPU enters deepsleep */ +#define LL_PWR_MODE_STOP_LPREGU_UNDERDRIVE (PWR_CR1_LPDS | PWR_CR1_LPUDS | PWR_CR1_FPDS) /*!< Enter Stop mode (with low power Regulator in under-drive mode) when the CPU enters deepsleep */ +#define LL_PWR_MODE_STANDBY PWR_CR1_PDDS /*!< Enter Standby mode when the CPU enters deepsleep */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_REGU_VOLTAGE Regulator Voltage + * @{ + */ +#define LL_PWR_REGU_VOLTAGE_SCALE3 PWR_CR1_VOS_0 +#define LL_PWR_REGU_VOLTAGE_SCALE2 PWR_CR1_VOS_1 +#define LL_PWR_REGU_VOLTAGE_SCALE1 (PWR_CR1_VOS_0 | PWR_CR1_VOS_1) +/** + * @} + */ + +/** @defgroup PWR_LL_EC_REGU_MODE_DS_MODE Regulator Mode In Deep Sleep Mode + * @{ + */ +#define LL_PWR_REGU_DSMODE_MAIN 0x00000000U /*!< Voltage Regulator in main mode during deepsleep mode */ +#define LL_PWR_REGU_DSMODE_LOW_POWER PWR_CR1_LPDS /*!< Voltage Regulator in low-power mode during deepsleep mode */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_PVDLEVEL Power Voltage Detector Level + * @{ + */ +#define LL_PWR_PVDLEVEL_0 PWR_CR1_PLS_LEV0 /*!< Voltage threshold detected by PVD 2.0 V */ +#define LL_PWR_PVDLEVEL_1 PWR_CR1_PLS_LEV1 /*!< Voltage threshold detected by PVD 2.1 V */ +#define LL_PWR_PVDLEVEL_2 PWR_CR1_PLS_LEV2 /*!< Voltage threshold detected by PVD 2.3 V */ +#define LL_PWR_PVDLEVEL_3 PWR_CR1_PLS_LEV3 /*!< Voltage threshold detected by PVD 2.5 V */ +#define LL_PWR_PVDLEVEL_4 PWR_CR1_PLS_LEV4 /*!< Voltage threshold detected by PVD 2.6 V */ +#define LL_PWR_PVDLEVEL_5 PWR_CR1_PLS_LEV5 /*!< Voltage threshold detected by PVD 2.7 V */ +#define LL_PWR_PVDLEVEL_6 PWR_CR1_PLS_LEV6 /*!< Voltage threshold detected by PVD 2.8 V */ +#define LL_PWR_PVDLEVEL_7 PWR_CR1_PLS_LEV7 /*!< Voltage threshold detected by PVD 2.9 V */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_WAKEUP_PIN Wakeup Pins + * @{ + */ +#define LL_PWR_WAKEUP_PIN1 PWR_CSR2_EWUP1 /*!< WKUP pin 1 : PA0 */ +#define LL_PWR_WAKEUP_PIN2 PWR_CSR2_EWUP2 /*!< WKUP pin 2 : PA2 */ +#define LL_PWR_WAKEUP_PIN3 PWR_CSR2_EWUP3 /*!< WKUP pin 3 : PC1 */ +#define LL_PWR_WAKEUP_PIN4 PWR_CSR2_EWUP4 /*!< WKUP pin 4 : PC13 */ +#define LL_PWR_WAKEUP_PIN5 PWR_CSR2_EWUP5 /*!< WKUP pin 5 : PI8 */ +#define LL_PWR_WAKEUP_PIN6 PWR_CSR2_EWUP6 /*!< WKUP pin 6 : PI11 */ +/** + * @} + */ + +/** + * @} + */ +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Macros PWR Exported Macros + * @{ + */ + +/** @defgroup PWR_LL_EM_WRITE_READ Common write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in PWR register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__)) + +/** + * @brief Read a value in PWR register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__) +/** + * @} + */ + +/** + * @} + */ +/* Exported functions --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @defgroup PWR_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Enable Under Drive Mode + * @rmtoll CR1 UDEN LL_PWR_EnableUnderDriveMode + * @note This mode is enabled only with STOP low power mode. + * In this mode, the 1.2V domain is preserved in reduced leakage mode. This + * mode is only available when the main Regulator or the low power Regulator + * is in low voltage mode. + * @note If the Under-drive mode was enabled, it is automatically disabled after + * exiting Stop mode. + * When the voltage Regulator operates in Under-drive mode, an additional + * startup delay is induced when waking up from Stop mode. + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableUnderDriveMode(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_UDEN); +} + +/** + * @brief Disable Under Drive Mode + * @rmtoll CR1 UDEN LL_PWR_DisableUnderDriveMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableUnderDriveMode(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_UDEN); +} + +/** + * @brief Check if Under Drive Mode is enabled + * @rmtoll CR1 UDEN LL_PWR_IsEnabledUnderDriveMode + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledUnderDriveMode(void) +{ + return (READ_BIT(PWR->CR1, PWR_CR1_UDEN) == (PWR_CR1_UDEN)); +} + +/** + * @brief Enable Over drive switching + * @rmtoll CR1 ODSWEN LL_PWR_EnableOverDriveSwitching + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableOverDriveSwitching(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_ODSWEN); +} + +/** + * @brief Disable Over drive switching + * @rmtoll CR1 ODSWEN LL_PWR_DisableOverDriveSwitching + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableOverDriveSwitching(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_ODSWEN); +} + +/** + * @brief Check if Over drive switching is enabled + * @rmtoll CR1 ODSWEN LL_PWR_IsEnabledOverDriveSwitching + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledOverDriveSwitching(void) +{ + return (READ_BIT(PWR->CR1, PWR_CR1_ODSWEN) == (PWR_CR1_ODSWEN)); +} + +/** + * @brief Enable Over drive Mode + * @rmtoll CR1 ODEN LL_PWR_EnableOverDriveMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableOverDriveMode(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_ODEN); +} + +/** + * @brief Disable Over drive Mode + * @rmtoll CR1 ODEN LL_PWR_DisableOverDriveMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableOverDriveMode(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_ODEN); +} + +/** + * @brief Check if Over drive switching is enabled + * @rmtoll CR1 ODEN LL_PWR_IsEnabledOverDriveMode + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledOverDriveMode(void) +{ + return (READ_BIT(PWR->CR1, PWR_CR1_ODEN) == (PWR_CR1_ODEN)); +} + +/** + * @brief Set the main internal Regulator output voltage + * @rmtoll CR1 VOS LL_PWR_SetRegulVoltageScaling + * @param VoltageScaling This parameter can be one of the following values: + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling) +{ + MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling); +} + +/** + * @brief Get the main internal Regulator output voltage + * @rmtoll CR1 VOS LL_PWR_GetRegulVoltageScaling + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3 + */ +__STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void) +{ + return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_VOS)); +} + +/** + * @brief Enable Main Regulator in deepsleep under-drive Mode + * @rmtoll CR1 MRUDS LL_PWR_EnableMainRegulatorDeepSleepUDMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableMainRegulatorDeepSleepUDMode(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_MRUDS); +} + +/** + * @brief Disable Main Regulator in deepsleep under-drive Mode + * @rmtoll CR1 MRUDS LL_PWR_DisableMainRegulatorDeepSleepUDMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableMainRegulatorDeepSleepUDMode(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_MRUDS); +} + +/** + * @brief Check if Main Regulator in deepsleep under-drive Mode is enabled + * @rmtoll CR1 MRUDS LL_PWR_IsEnabledMainRegulatorDeepSleepUDMode + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledMainRegulatorDeepSleepUDMode(void) +{ + return (READ_BIT(PWR->CR1, PWR_CR1_MRUDS) == (PWR_CR1_MRUDS)); +} + +/** + * @brief Enable Low Power Regulator in deepsleep under-drive Mode + * @rmtoll CR1 LPUDS LL_PWR_EnableLowPowerRegulatorDeepSleepUDMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableLowPowerRegulatorDeepSleepUDMode(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_LPUDS); +} + +/** + * @brief Disable Low Power Regulator in deepsleep under-drive Mode + * @rmtoll CR1 LPUDS LL_PWR_DisableLowPowerRegulatorDeepSleepUDMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableLowPowerRegulatorDeepSleepUDMode(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_LPUDS); +} + +/** + * @brief Check if Low Power Regulator in deepsleep under-drive Mode is enabled + * @rmtoll CR1 LPUDS LL_PWR_IsEnabledLowPowerRegulatorDeepSleepUDMode + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledLowPowerRegulatorDeepSleepUDMode(void) +{ + return (READ_BIT(PWR->CR1, PWR_CR1_LPUDS) == (PWR_CR1_LPUDS)); +} + +/** + * @brief Enable the Flash Power Down in Stop Mode + * @rmtoll CR1 FPDS LL_PWR_EnableFlashPowerDown + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableFlashPowerDown(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_FPDS); +} + +/** + * @brief Disable the Flash Power Down in Stop Mode + * @rmtoll CR1 FPDS LL_PWR_DisableFlashPowerDown + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableFlashPowerDown(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_FPDS); +} + +/** + * @brief Check if the Flash Power Down in Stop Mode is enabled + * @rmtoll CR1 FPDS LL_PWR_IsEnabledFlashPowerDown + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledFlashPowerDown(void) +{ + return (READ_BIT(PWR->CR1, PWR_CR1_FPDS) == (PWR_CR1_FPDS)); +} + +/** + * @brief Enable access to the backup domain + * @rmtoll CR1 DBP LL_PWR_EnableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableBkUpAccess(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_DBP); +} + +/** + * @brief Disable access to the backup domain + * @rmtoll CR1 DBP LL_PWR_DisableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableBkUpAccess(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_DBP); +} + +/** + * @brief Check if the backup domain is enabled + * @rmtoll CR1 DBP LL_PWR_IsEnabledBkUpAccess + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void) +{ + return (READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP)); +} + +/** + * @brief Enable Backup Regulator + * @rmtoll CSR1 BRE LL_PWR_EnableBkUpRegulator + * @note When set, the Backup Regulator (used to maintain backup SRAM content in Standby and + * VBAT modes) is enabled. If BRE is reset, the backup Regulator is switched off. The backup + * SRAM can still be used but its content will be lost in the Standby and VBAT modes. Once set, + * the application must wait that the Backup Regulator Ready flag (BRR) is set to indicate that + * the data written into the RAM will be maintained in the Standby and VBAT modes. + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableBkUpRegulator(void) +{ + SET_BIT(PWR->CSR1, PWR_CSR1_BRE); +} + +/** + * @brief Disable Backup Regulator + * @rmtoll CSR1 BRE LL_PWR_DisableBkUpRegulator + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableBkUpRegulator(void) +{ + CLEAR_BIT(PWR->CSR1, PWR_CSR1_BRE); +} + +/** + * @brief Check if the backup Regulator is enabled + * @rmtoll CSR1 BRE LL_PWR_IsEnabledBkUpRegulator + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpRegulator(void) +{ + return (READ_BIT(PWR->CSR1, PWR_CSR1_BRE) == (PWR_CSR1_BRE)); +} + +/** + * @brief Set voltage Regulator mode during deep sleep mode + * @rmtoll CR1 LPDS LL_PWR_SetRegulModeDS + * @param RegulMode This parameter can be one of the following values: + * @arg @ref LL_PWR_REGU_DSMODE_MAIN + * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetRegulModeDS(uint32_t RegulMode) +{ + MODIFY_REG(PWR->CR1, PWR_CR1_LPDS, RegulMode); +} + +/** + * @brief Get voltage Regulator mode during deep sleep mode + * @rmtoll CR1 LPDS LL_PWR_GetRegulModeDS + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_REGU_DSMODE_MAIN + * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER + */ +__STATIC_INLINE uint32_t LL_PWR_GetRegulModeDS(void) +{ + return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_LPDS)); +} + +/** + * @brief Set Power Down mode when CPU enters deepsleep + * @rmtoll CR1 PDDS LL_PWR_SetPowerMode\n + * CR1 LPDS LL_PWR_SetPowerMode\n + * CR1 FPDS LL_PWR_SetPowerMode\n + * CR1 LPUDS LL_PWR_SetPowerMode\n + * CR1 MRUDS LL_PWR_SetPowerMode + * @param PDMode This parameter can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP_MAINREGU + * @arg @ref LL_PWR_MODE_STOP_MAINREGU_UNDERDRIVE + * @arg @ref LL_PWR_MODE_STOP_LPREGU + * @arg @ref LL_PWR_MODE_STOP_LPREGU_UNDERDRIVE + * @arg @ref LL_PWR_MODE_STANDBY + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPowerMode(uint32_t PDMode) +{ + MODIFY_REG(PWR->CR1, (PWR_CR1_PDDS | PWR_CR1_LPDS | PWR_CR1_FPDS | PWR_CR1_LPUDS | PWR_CR1_MRUDS), PDMode); +} + +/** + * @brief Get Power Down mode when CPU enters deepsleep + * @rmtoll CR1 PDDS LL_PWR_GetPowerMode\n + * CR1 LPDS LL_PWR_GetPowerMode\n + * CR1 FPDS LL_PWR_GetPowerMode\n + * CR1 LPUDS LL_PWR_GetPowerMode\n + * CR1 MRUDS LL_PWR_GetPowerMode + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP_MAINREGU + * @arg @ref LL_PWR_MODE_STOP_MAINREGU_UNDERDRIVE + * @arg @ref LL_PWR_MODE_STOP_LPREGU + * @arg @ref LL_PWR_MODE_STOP_LPREGU_UNDERDRIVE + * @arg @ref LL_PWR_MODE_STANDBY + */ +__STATIC_INLINE uint32_t LL_PWR_GetPowerMode(void) +{ + return (uint32_t)(READ_BIT(PWR->CR1, (PWR_CR1_PDDS | PWR_CR1_LPDS | PWR_CR1_FPDS | PWR_CR1_LPUDS | PWR_CR1_MRUDS))); +} + +/** + * @brief Configure the voltage threshold detected by the Power Voltage Detector + * @rmtoll CR1 PLS LL_PWR_SetPVDLevel + * @param PVDLevel This parameter can be one of the following values: + * @arg @ref LL_PWR_PVDLEVEL_0 + * @arg @ref LL_PWR_PVDLEVEL_1 + * @arg @ref LL_PWR_PVDLEVEL_2 + * @arg @ref LL_PWR_PVDLEVEL_3 + * @arg @ref LL_PWR_PVDLEVEL_4 + * @arg @ref LL_PWR_PVDLEVEL_5 + * @arg @ref LL_PWR_PVDLEVEL_6 + * @arg @ref LL_PWR_PVDLEVEL_7 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel) +{ + MODIFY_REG(PWR->CR1, PWR_CR1_PLS, PVDLevel); +} + +/** + * @brief Get the voltage threshold detection + * @rmtoll CR1 PLS LL_PWR_GetPVDLevel + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_PVDLEVEL_0 + * @arg @ref LL_PWR_PVDLEVEL_1 + * @arg @ref LL_PWR_PVDLEVEL_2 + * @arg @ref LL_PWR_PVDLEVEL_3 + * @arg @ref LL_PWR_PVDLEVEL_4 + * @arg @ref LL_PWR_PVDLEVEL_5 + * @arg @ref LL_PWR_PVDLEVEL_6 + * @arg @ref LL_PWR_PVDLEVEL_7 + */ +__STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void) +{ + return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_PLS)); +} + +/** + * @brief Enable Power Voltage Detector + * @rmtoll CR1 PVDE LL_PWR_EnablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnablePVD(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_PVDE); +} + +/** + * @brief Disable Power Voltage Detector + * @rmtoll CR1 PVDE LL_PWR_DisablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisablePVD(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_PVDE); +} + +/** + * @brief Check if Power Voltage Detector is enabled + * @rmtoll CR1 PVDE LL_PWR_IsEnabledPVD + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void) +{ + return (READ_BIT(PWR->CR1, PWR_CR1_PVDE) == (PWR_CR1_PVDE)); +} + +/** + * @brief Enable the WakeUp PINx functionality + * @rmtoll CSR2 EWUP1 LL_PWR_EnableWakeUpPin\n + * CSR2 EWUP2 LL_PWR_EnableWakeUpPin\n + * CSR2 EWUP3 LL_PWR_EnableWakeUpPin\n + * CSR2 EWUP4 LL_PWR_EnableWakeUpPin\n + * CSR2 EWUP5 LL_PWR_EnableWakeUpPin\n + * CSR2 EWUP6 LL_PWR_EnableWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin) +{ + SET_BIT(PWR->CSR2, WakeUpPin); +} + +/** + * @brief Disable the WakeUp PINx functionality + * @rmtoll CSR2 EWUP1 LL_PWR_DisableWakeUpPin\n + * CSR2 EWUP2 LL_PWR_DisableWakeUpPin\n + * CSR2 EWUP3 LL_PWR_DisableWakeUpPin\n + * CSR2 EWUP4 LL_PWR_DisableWakeUpPin\n + * CSR2 EWUP5 LL_PWR_DisableWakeUpPin\n + * CSR2 EWUP6 LL_PWR_DisableWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin) +{ + CLEAR_BIT(PWR->CSR2, WakeUpPin); +} + +/** + * @brief Check if the WakeUp PINx functionality is enabled + * @rmtoll CSR2 EWUP1 LL_PWR_IsEnabledWakeUpPin\n + * CSR2 EWUP2 LL_PWR_IsEnabledWakeUpPin\n + * CSR2 EWUP3 LL_PWR_IsEnabledWakeUpPin\n + * CSR2 EWUP4 LL_PWR_IsEnabledWakeUpPin\n + * CSR2 EWUP5 LL_PWR_IsEnabledWakeUpPin\n + * CSR2 EWUP6 LL_PWR_IsEnabledWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin) +{ + return (READ_BIT(PWR->CSR2, WakeUpPin) == (WakeUpPin)); +} + +/** + * @brief Set the Wake-Up pin polarity low for the event detection + * @rmtoll CR2 WUPP1 LL_PWR_SetWakeUpPinPolarityLow\n + * CR2 WUPP2 LL_PWR_SetWakeUpPinPolarityLow\n + * CR2 WUPP3 LL_PWR_SetWakeUpPinPolarityLow\n + * CR2 WUPP4 LL_PWR_SetWakeUpPinPolarityLow\n + * CR2 WUPP5 LL_PWR_SetWakeUpPinPolarityLow\n + * CR2 WUPP6 LL_PWR_SetWakeUpPinPolarityLow + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin) +{ + SET_BIT(PWR->CR2, WakeUpPin); +} + +/** + * @brief Set the Wake-Up pin polarity high for the event detection + * @rmtoll CR2 WUPP1 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR2 WUPP2 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR2 WUPP3 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR2 WUPP4 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR2 WUPP5 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR2 WUPP6 LL_PWR_SetWakeUpPinPolarityHigh + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin) +{ + CLEAR_BIT(PWR->CR2, WakeUpPin); +} + +/** + * @brief Get the Wake-Up pin polarity for the event detection + * @rmtoll CR2 WUPP1 LL_PWR_IsWakeUpPinPolarityLow\n + * CR2 WUPP2 LL_PWR_IsWakeUpPinPolarityLow\n + * CR2 WUPP3 LL_PWR_IsWakeUpPinPolarityLow\n + * CR2 WUPP4 LL_PWR_IsWakeUpPinPolarityLow\n + * CR2 WUPP5 LL_PWR_IsWakeUpPinPolarityLow\n + * CR2 WUPP6 LL_PWR_IsWakeUpPinPolarityLow + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @arg @ref LL_PWR_WAKEUP_PIN6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin) +{ + return (READ_BIT(PWR->CR2, WakeUpPin) == (WakeUpPin)); +} + +/** + * @brief Enable Internal WakeUp + * @rmtoll CSR1 EIWUP LL_PWR_EnableInternalWakeUp + * @note This API must be used when RTC events (Alarm A or Alarm B, RTC Tamper, RTC TimeStamp + * or RTC Wakeup time) are used to wake up the system from Standby mode. + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableInternalWakeUp(void) +{ + SET_BIT(PWR->CSR1, PWR_CSR1_EIWUP); +} + +/** + * @brief Disable Internal WakeUp + * @rmtoll CSR1 EIWUP LL_PWR_DisableInternalWakeUp + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableInternalWakeUp(void) +{ + CLEAR_BIT(PWR->CSR1, PWR_CSR1_EIWUP); +} + +/** + * @brief Check if the Internal WakeUp functionality is enabled + * @rmtoll CSR1 EIWUP LL_PWR_IsEnabledInternalWakeUp + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledInternalWakeUp(void) +{ + return (READ_BIT(PWR->CSR1, PWR_CSR1_EIWUP) == (PWR_CSR1_EIWUP)); +} + +/** + * @} + */ + +/** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Wake-up Flag 6 + * @rmtoll CSR2 WUPF6 LL_PWR_IsActiveFlag_WU6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU6(void) +{ + return (READ_BIT(PWR->CSR2, PWR_CSR2_WUPF6) == (PWR_CSR2_WUPF6)); +} + +/** + * @brief Get Wake-up Flag 5 + * @rmtoll CSR2 WUPF5 LL_PWR_IsActiveFlag_WU5 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU5(void) +{ + return (READ_BIT(PWR->CSR2, PWR_CSR2_WUPF5) == (PWR_CSR2_WUPF5)); +} + +/** + * @brief Get Wake-up Flag 4 + * @rmtoll CSR2 WUPF4 LL_PWR_IsActiveFlag_WU4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU4(void) +{ + return (READ_BIT(PWR->CSR2, PWR_CSR2_WUPF4) == (PWR_CSR2_WUPF4)); +} + +/** + * @brief Get Wake-up Flag 3 + * @rmtoll CSR2 WUPF3 LL_PWR_IsActiveFlag_WU3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU3(void) +{ + return (READ_BIT(PWR->CSR2, PWR_CSR2_WUPF3) == (PWR_CSR2_WUPF3)); +} + +/** + * @brief Get Wake-up Flag 2 + * @rmtoll CSR2 WUPF2 LL_PWR_IsActiveFlag_WU2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU2(void) +{ + return (READ_BIT(PWR->CSR2, PWR_CSR2_WUPF2) == (PWR_CSR2_WUPF2)); +} + +/** + * @brief Get Wake-up Flag 1 + * @rmtoll CSR2 WUPF1 LL_PWR_IsActiveFlag_WU1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU1(void) +{ + return (READ_BIT(PWR->CSR2, PWR_CSR2_WUPF1) == (PWR_CSR2_WUPF1)); +} + +/** + * @brief Get Standby Flag + * @rmtoll CSR1 SBF LL_PWR_IsActiveFlag_SB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(void) +{ + return (READ_BIT(PWR->CSR1, PWR_CSR1_SBF) == (PWR_CSR1_SBF)); +} + +/** + * @brief Indicate whether VDD voltage is below the selected PVD threshold + * @rmtoll CSR1 PVDO LL_PWR_IsActiveFlag_PVDO + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void) +{ + return (READ_BIT(PWR->CSR1, PWR_CSR1_PVDO) == (PWR_CSR1_PVDO)); +} + +/** + * @brief Get Backup Regulator ready Flag + * @rmtoll CSR1 BRR LL_PWR_IsActiveFlag_BRR + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_BRR(void) +{ + return (READ_BIT(PWR->CSR1, PWR_CSR1_BRR) == (PWR_CSR1_BRR)); +} + +/** + * @brief Indicate whether the Regulator is ready in the selected voltage range or if its output voltage is still changing to the required voltage level + * @rmtoll CSR1 VOSRDY LL_PWR_IsActiveFlag_VOS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(void) +{ + return (READ_BIT(PWR->CSR1, PWR_CSR1_VOSRDY) == (PWR_CSR1_VOSRDY)); +} + +/** + * @brief Indicate whether the Over-Drive mode is ready or not + * @rmtoll CSR1 ODRDY LL_PWR_IsActiveFlag_OD + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_OD(void) +{ + return (READ_BIT(PWR->CSR1, PWR_CSR1_ODRDY) == (PWR_CSR1_ODRDY)); +} + +/** + * @brief Indicate whether the Over-Drive mode switching is ready or not + * @rmtoll CSR1 ODSWRDY LL_PWR_IsActiveFlag_ODSW + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_ODSW(void) +{ + return (READ_BIT(PWR->CSR1, PWR_CSR1_ODSWRDY) == (PWR_CSR1_ODSWRDY)); +} + +/** + * @brief Indicate whether the Under-Drive mode is ready or not + * @rmtoll CSR1 UDRDY LL_PWR_IsActiveFlag_UD + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_UD(void) +{ + return (READ_BIT(PWR->CSR1, PWR_CSR1_UDRDY) == (PWR_CSR1_UDRDY)); +} + +/** + * @brief Clear Standby Flag + * @rmtoll CR1 CSBF LL_PWR_ClearFlag_SB + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_SB(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_CSBF); +} + +/** + * @brief Clear Wake-up Flag 6 + * @rmtoll CR2 CWUF6 LL_PWR_ClearFlag_WU6 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU6(void) +{ + WRITE_REG(PWR->CR2, PWR_CR2_CWUPF6); +} + +/** + * @brief Clear Wake-up Flag 5 + * @rmtoll CR2 CWUF5 LL_PWR_ClearFlag_WU5 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU5(void) +{ + WRITE_REG(PWR->CR2, PWR_CR2_CWUPF5); +} + +/** + * @brief Clear Wake-up Flag 4 + * @rmtoll CR2 CWUF4 LL_PWR_ClearFlag_WU4 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU4(void) +{ + WRITE_REG(PWR->CR2, PWR_CR2_CWUPF4); +} + +/** + * @brief Clear Wake-up Flag 3 + * @rmtoll CR2 CWUF3 LL_PWR_ClearFlag_WU3 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU3(void) +{ + WRITE_REG(PWR->CR2, PWR_CR2_CWUPF3); +} + +/** + * @brief Clear Wake-up Flag 2 + * @rmtoll CR2 CWUF2 LL_PWR_ClearFlag_WU2 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU2(void) +{ + WRITE_REG(PWR->CR2, PWR_CR2_CWUPF2); +} + +/** + * @brief Clear Wake-up Flag 1 + * @rmtoll CR2 CWUF1 LL_PWR_ClearFlag_WU1 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU1(void) +{ + WRITE_REG(PWR->CR2, PWR_CR2_CWUPF1); +} + +/** + * @brief Clear Under-Drive ready Flag + * @rmtoll CSR1 UDRDY LL_PWR_ClearFlag_UD + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_UD(void) +{ + WRITE_REG(PWR->CSR1, PWR_CSR1_UDRDY); +} + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup PWR_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_PWR_DeInit(void); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(PWR) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_PWR_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h new file mode 100644 index 0000000..360cc30 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h @@ -0,0 +1,5170 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_rcc.h + * @author MCD Application Team + * @brief Header file of RCC LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_RCC_H +#define __STM32F7xx_LL_RCC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup RCC_LL RCC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup RCC_LL_Private_Variables RCC Private Variables + * @{ + */ + +#if defined(RCC_DCKCFGR1_PLLSAIDIVR) +static const uint8_t aRCC_PLLSAIDIVRPrescTable[4] = {2, 4, 8, 16}; +#endif /* RCC_DCKCFGR1_PLLSAIDIVR */ + +/** + * @} + */ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_Private_Macros RCC Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_Exported_Types RCC Exported Types + * @{ + */ + +/** @defgroup LL_ES_CLOCK_FREQ Clocks Frequency Structure + * @{ + */ + +/** + * @brief RCC Clocks Frequency Structure + */ +typedef struct +{ + uint32_t SYSCLK_Frequency; /*!< SYSCLK clock frequency */ + uint32_t HCLK_Frequency; /*!< HCLK clock frequency */ + uint32_t PCLK1_Frequency; /*!< PCLK1 clock frequency */ + uint32_t PCLK2_Frequency; /*!< PCLK2 clock frequency */ +} LL_RCC_ClocksTypeDef; + +/** + * @} + */ + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Constants RCC Exported Constants + * @{ + */ + +/** @defgroup RCC_LL_EC_OSC_VALUES Oscillator Values adaptation + * @brief Defines used to adapt values of different oscillators + * @note These values could be modified in the user environment according to + * HW set-up. + * @{ + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE 25000000U /*!< Value of the HSE oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) +#define HSI_VALUE 16000000U /*!< Value of the HSI oscillator in Hz */ +#endif /* HSI_VALUE */ + +#if !defined (LSE_VALUE) +#define LSE_VALUE 32768U /*!< Value of the LSE oscillator in Hz */ +#endif /* LSE_VALUE */ + +#if !defined (LSI_VALUE) +#define LSI_VALUE 32000U /*!< Value of the LSI oscillator in Hz */ +#endif /* LSI_VALUE */ + +#if !defined (EXTERNAL_CLOCK_VALUE) +#define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the I2S_CKIN external oscillator in Hz */ +#endif /* EXTERNAL_CLOCK_VALUE */ + +#if !defined (EXTERNAL_SAI1_CLOCK_VALUE) +#define EXTERNAL_SAI1_CLOCK_VALUE 48000U /*!< Value of the SAI1_EXTCLK external oscillator in Hz */ +#endif /* EXTERNAL_SAI1_CLOCK_VALUE */ + +#if !defined (EXTERNAL_SAI2_CLOCK_VALUE) +#define EXTERNAL_SAI2_CLOCK_VALUE 48000U /*!< Value of the SAI2_EXTCLK external oscillator in Hz */ +#endif /* EXTERNAL_SAI2_CLOCK_VALUE */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_RCC_WriteReg function + * @{ + */ +#define LL_RCC_CIR_LSIRDYC RCC_CIR_LSIRDYC /*!< LSI Ready Interrupt Clear */ +#define LL_RCC_CIR_LSERDYC RCC_CIR_LSERDYC /*!< LSE Ready Interrupt Clear */ +#define LL_RCC_CIR_HSIRDYC RCC_CIR_HSIRDYC /*!< HSI Ready Interrupt Clear */ +#define LL_RCC_CIR_HSERDYC RCC_CIR_HSERDYC /*!< HSE Ready Interrupt Clear */ +#define LL_RCC_CIR_PLLRDYC RCC_CIR_PLLRDYC /*!< PLL Ready Interrupt Clear */ +#define LL_RCC_CIR_PLLI2SRDYC RCC_CIR_PLLI2SRDYC /*!< PLLI2S Ready Interrupt Clear */ +#define LL_RCC_CIR_PLLSAIRDYC RCC_CIR_PLLSAIRDYC /*!< PLLSAI Ready Interrupt Clear */ +#define LL_RCC_CIR_CSSC RCC_CIR_CSSC /*!< Clock Security System Interrupt Clear */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_RCC_ReadReg function + * @{ + */ +#define LL_RCC_CIR_LSIRDYF RCC_CIR_LSIRDYF /*!< LSI Ready Interrupt flag */ +#define LL_RCC_CIR_LSERDYF RCC_CIR_LSERDYF /*!< LSE Ready Interrupt flag */ +#define LL_RCC_CIR_HSIRDYF RCC_CIR_HSIRDYF /*!< HSI Ready Interrupt flag */ +#define LL_RCC_CIR_HSERDYF RCC_CIR_HSERDYF /*!< HSE Ready Interrupt flag */ +#define LL_RCC_CIR_PLLRDYF RCC_CIR_PLLRDYF /*!< PLL Ready Interrupt flag */ +#define LL_RCC_CIR_PLLI2SRDYF RCC_CIR_PLLI2SRDYF /*!< PLLI2S Ready Interrupt flag */ +#define LL_RCC_CIR_PLLSAIRDYF RCC_CIR_PLLSAIRDYF /*!< PLLSAI Ready Interrupt flag */ +#define LL_RCC_CIR_CSSF RCC_CIR_CSSF /*!< Clock Security System Interrupt flag */ +#define LL_RCC_CSR_LPWRRSTF RCC_CSR_LPWRRSTF /*!< Low-Power reset flag */ +#define LL_RCC_CSR_PINRSTF RCC_CSR_PINRSTF /*!< PIN reset flag */ +#define LL_RCC_CSR_PORRSTF RCC_CSR_PORRSTF /*!< POR/PDR reset flag */ +#define LL_RCC_CSR_SFTRSTF RCC_CSR_SFTRSTF /*!< Software Reset flag */ +#define LL_RCC_CSR_IWDGRSTF RCC_CSR_IWDGRSTF /*!< Independent Watchdog reset flag */ +#define LL_RCC_CSR_WWDGRSTF RCC_CSR_WWDGRSTF /*!< Window watchdog reset flag */ +#define LL_RCC_CSR_BORRSTF RCC_CSR_BORRSTF /*!< BOR reset flag */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_RCC_ReadReg and LL_RCC_WriteReg functions + * @{ + */ +#define LL_RCC_CIR_LSIRDYIE RCC_CIR_LSIRDYIE /*!< LSI Ready Interrupt Enable */ +#define LL_RCC_CIR_LSERDYIE RCC_CIR_LSERDYIE /*!< LSE Ready Interrupt Enable */ +#define LL_RCC_CIR_HSIRDYIE RCC_CIR_HSIRDYIE /*!< HSI Ready Interrupt Enable */ +#define LL_RCC_CIR_HSERDYIE RCC_CIR_HSERDYIE /*!< HSE Ready Interrupt Enable */ +#define LL_RCC_CIR_PLLRDYIE RCC_CIR_PLLRDYIE /*!< PLL Ready Interrupt Enable */ +#define LL_RCC_CIR_PLLI2SRDYIE RCC_CIR_PLLI2SRDYIE /*!< PLLI2S Ready Interrupt Enable */ +#define LL_RCC_CIR_PLLSAIRDYIE RCC_CIR_PLLSAIRDYIE /*!< PLLSAI Ready Interrupt Enable */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_LSEDRIVE LSE oscillator drive capability + * @{ + */ +#define LL_RCC_LSEDRIVE_LOW 0x00000000U /*!< Xtal mode lower driving capability */ +#define LL_RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_0 /*!< Xtal mode medium high driving capability */ +#define LL_RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_1 /*!< Xtal mode medium low driving capability */ +#define LL_RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV /*!< Xtal mode higher driving capability */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYS_CLKSOURCE System clock switch + * @{ + */ +#define LL_RCC_SYS_CLKSOURCE_HSI RCC_CFGR_SW_HSI /*!< HSI selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_HSE RCC_CFGR_SW_HSE /*!< HSE selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_PLL RCC_CFGR_SW_PLL /*!< PLL selection as system clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYS_CLKSOURCE_STATUS System clock switch status + * @{ + */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_PLL RCC_CFGR_SWS_PLL /*!< PLL used as system clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYSCLK_DIV AHB prescaler + * @{ + */ +#define LL_RCC_SYSCLK_DIV_1 RCC_CFGR_HPRE_DIV1 /*!< SYSCLK not divided */ +#define LL_RCC_SYSCLK_DIV_2 RCC_CFGR_HPRE_DIV2 /*!< SYSCLK divided by 2 */ +#define LL_RCC_SYSCLK_DIV_4 RCC_CFGR_HPRE_DIV4 /*!< SYSCLK divided by 4 */ +#define LL_RCC_SYSCLK_DIV_8 RCC_CFGR_HPRE_DIV8 /*!< SYSCLK divided by 8 */ +#define LL_RCC_SYSCLK_DIV_16 RCC_CFGR_HPRE_DIV16 /*!< SYSCLK divided by 16 */ +#define LL_RCC_SYSCLK_DIV_64 RCC_CFGR_HPRE_DIV64 /*!< SYSCLK divided by 64 */ +#define LL_RCC_SYSCLK_DIV_128 RCC_CFGR_HPRE_DIV128 /*!< SYSCLK divided by 128 */ +#define LL_RCC_SYSCLK_DIV_256 RCC_CFGR_HPRE_DIV256 /*!< SYSCLK divided by 256 */ +#define LL_RCC_SYSCLK_DIV_512 RCC_CFGR_HPRE_DIV512 /*!< SYSCLK divided by 512 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_APB1_DIV APB low-speed prescaler (APB1) + * @{ + */ +#define LL_RCC_APB1_DIV_1 RCC_CFGR_PPRE1_DIV1 /*!< HCLK not divided */ +#define LL_RCC_APB1_DIV_2 RCC_CFGR_PPRE1_DIV2 /*!< HCLK divided by 2 */ +#define LL_RCC_APB1_DIV_4 RCC_CFGR_PPRE1_DIV4 /*!< HCLK divided by 4 */ +#define LL_RCC_APB1_DIV_8 RCC_CFGR_PPRE1_DIV8 /*!< HCLK divided by 8 */ +#define LL_RCC_APB1_DIV_16 RCC_CFGR_PPRE1_DIV16 /*!< HCLK divided by 16 */ +/** + * @} + */ +/** @defgroup RCC_LL_EC_APB2_DIV APB high-speed prescaler (APB2) + * @{ + */ +#define LL_RCC_APB2_DIV_1 RCC_CFGR_PPRE2_DIV1 /*!< HCLK not divided */ +#define LL_RCC_APB2_DIV_2 RCC_CFGR_PPRE2_DIV2 /*!< HCLK divided by 2 */ +#define LL_RCC_APB2_DIV_4 RCC_CFGR_PPRE2_DIV4 /*!< HCLK divided by 4 */ +#define LL_RCC_APB2_DIV_8 RCC_CFGR_PPRE2_DIV8 /*!< HCLK divided by 8 */ +#define LL_RCC_APB2_DIV_16 RCC_CFGR_PPRE2_DIV16 /*!< HCLK divided by 16 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MCOxSOURCE MCO source selection + * @{ + */ +#define LL_RCC_MCO1SOURCE_HSI (uint32_t)(RCC_CFGR_MCO1|0x00000000U) /*!< HSI selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_LSE (uint32_t)(RCC_CFGR_MCO1|(RCC_CFGR_MCO1_0 >> 16U)) /*!< LSE selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_HSE (uint32_t)(RCC_CFGR_MCO1|(RCC_CFGR_MCO1_1 >> 16U)) /*!< HSE selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_PLLCLK (uint32_t)(RCC_CFGR_MCO1|((RCC_CFGR_MCO1_1|RCC_CFGR_MCO1_0) >> 16U)) /*!< PLLCLK selection as MCO1 source */ +#define LL_RCC_MCO2SOURCE_SYSCLK (uint32_t)(RCC_CFGR_MCO2|0x00000000U) /*!< SYSCLK selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_PLLI2S (uint32_t)(RCC_CFGR_MCO2|(RCC_CFGR_MCO2_0 >> 16U)) /*!< PLLI2S selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_HSE (uint32_t)(RCC_CFGR_MCO2|(RCC_CFGR_MCO2_1 >> 16U)) /*!< HSE selection as MCO2 source */ +#define LL_RCC_MCO2SOURCE_PLLCLK (uint32_t)(RCC_CFGR_MCO2|((RCC_CFGR_MCO2_1|RCC_CFGR_MCO2_0) >> 16U)) /*!< PLLCLK selection as MCO2 source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MCOx_DIV MCO prescaler + * @{ + */ +#define LL_RCC_MCO1_DIV_1 (uint32_t)(RCC_CFGR_MCO1PRE|0x00000000U) /*!< MCO1 not divided */ +#define LL_RCC_MCO1_DIV_2 (uint32_t)(RCC_CFGR_MCO1PRE|(RCC_CFGR_MCO1PRE_2 >> 16U)) /*!< MCO1 divided by 2 */ +#define LL_RCC_MCO1_DIV_3 (uint32_t)(RCC_CFGR_MCO1PRE|((RCC_CFGR_MCO1PRE_2|RCC_CFGR_MCO1PRE_0) >> 16U)) /*!< MCO1 divided by 3 */ +#define LL_RCC_MCO1_DIV_4 (uint32_t)(RCC_CFGR_MCO1PRE|((RCC_CFGR_MCO1PRE_2|RCC_CFGR_MCO1PRE_1) >> 16U)) /*!< MCO1 divided by 4 */ +#define LL_RCC_MCO1_DIV_5 (uint32_t)(RCC_CFGR_MCO1PRE|(RCC_CFGR_MCO1PRE >> 16U)) /*!< MCO1 divided by 5 */ +#define LL_RCC_MCO2_DIV_1 (uint32_t)(RCC_CFGR_MCO2PRE|0x00000000U) /*!< MCO2 not divided */ +#define LL_RCC_MCO2_DIV_2 (uint32_t)(RCC_CFGR_MCO2PRE|(RCC_CFGR_MCO2PRE_2 >> 16U)) /*!< MCO2 divided by 2 */ +#define LL_RCC_MCO2_DIV_3 (uint32_t)(RCC_CFGR_MCO2PRE|((RCC_CFGR_MCO2PRE_2|RCC_CFGR_MCO2PRE_0) >> 16U)) /*!< MCO2 divided by 3 */ +#define LL_RCC_MCO2_DIV_4 (uint32_t)(RCC_CFGR_MCO2PRE|((RCC_CFGR_MCO2PRE_2|RCC_CFGR_MCO2PRE_1) >> 16U)) /*!< MCO2 divided by 4 */ +#define LL_RCC_MCO2_DIV_5 (uint32_t)(RCC_CFGR_MCO2PRE|(RCC_CFGR_MCO2PRE >> 16U)) /*!< MCO2 divided by 5 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_RTC_HSEDIV HSE prescaler for RTC clock + * @{ + */ +#define LL_RCC_RTC_NOCLOCK 0x00000000U /*!< HSE not divided */ +#define LL_RCC_RTC_HSE_DIV_2 RCC_CFGR_RTCPRE_1 /*!< HSE clock divided by 2 */ +#define LL_RCC_RTC_HSE_DIV_3 (RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 3 */ +#define LL_RCC_RTC_HSE_DIV_4 RCC_CFGR_RTCPRE_2 /*!< HSE clock divided by 4 */ +#define LL_RCC_RTC_HSE_DIV_5 (RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 5 */ +#define LL_RCC_RTC_HSE_DIV_6 (RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) /*!< HSE clock divided by 6 */ +#define LL_RCC_RTC_HSE_DIV_7 (RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 7 */ +#define LL_RCC_RTC_HSE_DIV_8 RCC_CFGR_RTCPRE_3 /*!< HSE clock divided by 8 */ +#define LL_RCC_RTC_HSE_DIV_9 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 9 */ +#define LL_RCC_RTC_HSE_DIV_10 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1) /*!< HSE clock divided by 10 */ +#define LL_RCC_RTC_HSE_DIV_11 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 11 */ +#define LL_RCC_RTC_HSE_DIV_12 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2) /*!< HSE clock divided by 12 */ +#define LL_RCC_RTC_HSE_DIV_13 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 13 */ +#define LL_RCC_RTC_HSE_DIV_14 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) /*!< HSE clock divided by 14 */ +#define LL_RCC_RTC_HSE_DIV_15 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 15 */ +#define LL_RCC_RTC_HSE_DIV_16 RCC_CFGR_RTCPRE_4 /*!< HSE clock divided by 16 */ +#define LL_RCC_RTC_HSE_DIV_17 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 17 */ +#define LL_RCC_RTC_HSE_DIV_18 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1) /*!< HSE clock divided by 18 */ +#define LL_RCC_RTC_HSE_DIV_19 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 19 */ +#define LL_RCC_RTC_HSE_DIV_20 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2) /*!< HSE clock divided by 20 */ +#define LL_RCC_RTC_HSE_DIV_21 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 21 */ +#define LL_RCC_RTC_HSE_DIV_22 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) /*!< HSE clock divided by 22 */ +#define LL_RCC_RTC_HSE_DIV_23 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 23 */ +#define LL_RCC_RTC_HSE_DIV_24 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3) /*!< HSE clock divided by 24 */ +#define LL_RCC_RTC_HSE_DIV_25 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 25 */ +#define LL_RCC_RTC_HSE_DIV_26 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1) /*!< HSE clock divided by 26 */ +#define LL_RCC_RTC_HSE_DIV_27 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 27 */ +#define LL_RCC_RTC_HSE_DIV_28 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2) /*!< HSE clock divided by 28 */ +#define LL_RCC_RTC_HSE_DIV_29 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 29 */ +#define LL_RCC_RTC_HSE_DIV_30 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) /*!< HSE clock divided by 30 */ +#define LL_RCC_RTC_HSE_DIV_31 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) /*!< HSE clock divided by 31 */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_EC_PERIPH_FREQUENCY Peripheral clock frequency + * @{ + */ +#define LL_RCC_PERIPH_FREQUENCY_NO 0x00000000U /*!< No clock enabled for the peripheral */ +#define LL_RCC_PERIPH_FREQUENCY_NA 0xFFFFFFFFU /*!< Frequency cannot be provided as external clock */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup RCC_LL_EC_USARTx_CLKSOURCE Peripheral USART clock source selection + * @{ + */ +#define LL_RCC_USART1_CLKSOURCE_PCLK2 (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | 0x00000000U) /*!< PCLK2 clock used as USART1 clock source */ +#define LL_RCC_USART1_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | RCC_DCKCFGR2_USART1SEL_0) /*!< SYSCLK clock used as USART1 clock source */ +#define LL_RCC_USART1_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | RCC_DCKCFGR2_USART1SEL_1) /*!< HSI clock used as USART1 clock source */ +#define LL_RCC_USART1_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | RCC_DCKCFGR2_USART1SEL) /*!< LSE clock used as USART1 clock source */ +#define LL_RCC_USART2_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as USART2 clock source */ +#define LL_RCC_USART2_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | RCC_DCKCFGR2_USART2SEL_0) /*!< SYSCLK clock used as USART2 clock source */ +#define LL_RCC_USART2_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | RCC_DCKCFGR2_USART2SEL_1) /*!< HSI clock used as USART2 clock source */ +#define LL_RCC_USART2_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | RCC_DCKCFGR2_USART2SEL) /*!< LSE clock used as USART2 clock source */ +#define LL_RCC_USART3_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as USART3 clock source */ +#define LL_RCC_USART3_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | RCC_DCKCFGR2_USART3SEL_0) /*!< SYSCLK clock used as USART3 clock source */ +#define LL_RCC_USART3_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | RCC_DCKCFGR2_USART3SEL_1) /*!< HSI clock used as USART3 clock source */ +#define LL_RCC_USART3_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | RCC_DCKCFGR2_USART3SEL) /*!< LSE clock used as USART3 clock source */ +#define LL_RCC_USART6_CLKSOURCE_PCLK2 (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | 0x00000000U) /*!< PCLK2 clock used as USART6 clock source */ +#define LL_RCC_USART6_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | RCC_DCKCFGR2_USART6SEL_0) /*!< SYSCLK clock used as USART6 clock source */ +#define LL_RCC_USART6_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | RCC_DCKCFGR2_USART6SEL_1) /*!< HSI clock used as USART6 clock source */ +#define LL_RCC_USART6_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | RCC_DCKCFGR2_USART6SEL) /*!< LSE clock used as USART6 clock source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_UARTx_CLKSOURCE Peripheral UART clock source selection + * @{ + */ +#define LL_RCC_UART4_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as UART4 clock source */ +#define LL_RCC_UART4_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | RCC_DCKCFGR2_UART4SEL_0) /*!< SYSCLK clock used as UART4 clock source */ +#define LL_RCC_UART4_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | RCC_DCKCFGR2_UART4SEL_1) /*!< HSI clock used as UART4 clock source */ +#define LL_RCC_UART4_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | RCC_DCKCFGR2_UART4SEL) /*!< LSE clock used as UART4 clock source */ +#define LL_RCC_UART5_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as UART5 clock source */ +#define LL_RCC_UART5_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | RCC_DCKCFGR2_UART5SEL_0) /*!< SYSCLK clock used as UART5 clock source */ +#define LL_RCC_UART5_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | RCC_DCKCFGR2_UART5SEL_1) /*!< HSI clock used as UART5 clock source */ +#define LL_RCC_UART5_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | RCC_DCKCFGR2_UART5SEL) /*!< LSE clock used as UART5 clock source */ +#define LL_RCC_UART7_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as UART7 clock source */ +#define LL_RCC_UART7_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | RCC_DCKCFGR2_UART7SEL_0) /*!< SYSCLK clock used as UART7 clock source */ +#define LL_RCC_UART7_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | RCC_DCKCFGR2_UART7SEL_1) /*!< HSI clock used as UART7 clock source */ +#define LL_RCC_UART7_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | RCC_DCKCFGR2_UART7SEL) /*!< LSE clock used as UART7 clock source */ +#define LL_RCC_UART8_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | 0x00000000U) /*!< PCLK1 clock used as UART8 clock source */ +#define LL_RCC_UART8_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | RCC_DCKCFGR2_UART8SEL_0) /*!< SYSCLK clock used as UART8 clock source */ +#define LL_RCC_UART8_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | RCC_DCKCFGR2_UART8SEL_1) /*!< HSI clock used as UART8 clock source */ +#define LL_RCC_UART8_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | RCC_DCKCFGR2_UART8SEL) /*!< LSE clock used as UART8 clock source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_I2Cx_CLKSOURCE Peripheral I2C clock source selection + * @{ + */ +#define LL_RCC_I2C1_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C1SEL|0x00000000U) /*!< PCLK1 clock used as I2C1 clock source */ +#define LL_RCC_I2C1_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C1SEL|(RCC_DCKCFGR2_I2C1SEL_0 >> 16U)) /*!< SYSCLK clock used as I2C1 clock source */ +#define LL_RCC_I2C1_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C1SEL|(RCC_DCKCFGR2_I2C1SEL_1 >> 16U)) /*!< HSI clock used as I2C1 clock source */ +#define LL_RCC_I2C2_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C2SEL|0x00000000U) /*!< PCLK1 clock used as I2C2 clock source */ +#define LL_RCC_I2C2_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C2SEL|(RCC_DCKCFGR2_I2C2SEL_0 >> 16U)) /*!< SYSCLK clock used as I2C2 clock source */ +#define LL_RCC_I2C2_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C2SEL|(RCC_DCKCFGR2_I2C2SEL_1 >> 16U)) /*!< HSI clock used as I2C2 clock source */ +#define LL_RCC_I2C3_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C3SEL|0x00000000U) /*!< PCLK1 clock used as I2C3 clock source */ +#define LL_RCC_I2C3_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C3SEL|(RCC_DCKCFGR2_I2C3SEL_0 >> 16U)) /*!< SYSCLK clock used as I2C3 clock source */ +#define LL_RCC_I2C3_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C3SEL|(RCC_DCKCFGR2_I2C3SEL_1 >> 16U)) /*!< HSI clock used as I2C3 clock source */ +#if defined(I2C4) +#define LL_RCC_I2C4_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C4SEL|0x00000000U) /*!< PCLK1 clock used as I2C4 clock source */ +#define LL_RCC_I2C4_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C4SEL|(RCC_DCKCFGR2_I2C4SEL_0 >> 16U)) /*!< SYSCLK clock used as I2C4 clock source */ +#define LL_RCC_I2C4_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C4SEL|(RCC_DCKCFGR2_I2C4SEL_1 >> 16U)) /*!< HSI clock used as I2C4 clock source */ +#endif /* I2C4 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_LPTIM1_CLKSOURCE Peripheral LPTIM clock source selection + * @{ + */ +#define LL_RCC_LPTIM1_CLKSOURCE_PCLK1 0x00000000U /*!< PCLK1 clock used as LPTIM1 clock */ +#define LL_RCC_LPTIM1_CLKSOURCE_LSI RCC_DCKCFGR2_LPTIM1SEL_0 /*!< LSI oscillator clock used as LPTIM1 clock */ +#define LL_RCC_LPTIM1_CLKSOURCE_HSI RCC_DCKCFGR2_LPTIM1SEL_1 /*!< HSI oscillator clock used as LPTIM1 clock */ +#define LL_RCC_LPTIM1_CLKSOURCE_LSE (uint32_t)(RCC_DCKCFGR2_LPTIM1SEL_1 | RCC_DCKCFGR2_LPTIM1SEL_0) /*!< LSE oscillator clock used as LPTIM1 clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SAIx_CLKSOURCE Peripheral SAI clock source selection + * @{ + */ +#define LL_RCC_SAI1_CLKSOURCE_PLLSAI (uint32_t)(RCC_DCKCFGR1_SAI1SEL | 0x00000000U) /*!< PLLSAI clock used as SAI1 clock source */ +#define LL_RCC_SAI1_CLKSOURCE_PLLI2S (uint32_t)(RCC_DCKCFGR1_SAI1SEL | (RCC_DCKCFGR1_SAI1SEL_0 >> 16U)) /*!< PLLI2S clock used as SAI1 clock source */ +#define LL_RCC_SAI1_CLKSOURCE_PIN (uint32_t)(RCC_DCKCFGR1_SAI1SEL | (RCC_DCKCFGR1_SAI1SEL_1 >> 16U)) /*!< External pin clock used as SAI1 clock source */ +#if defined(RCC_SAI1SEL_PLLSRC_SUPPORT) +#define LL_RCC_SAI1_CLKSOURCE_PLLSRC (uint32_t)(RCC_DCKCFGR1_SAI1SEL | (RCC_DCKCFGR1_SAI1SEL >> 16U)) /*!< Main source clock used as SAI1 clock source */ +#endif /* RCC_SAI1SEL_PLLSRC_SUPPORT */ +#define LL_RCC_SAI2_CLKSOURCE_PLLSAI (uint32_t)(RCC_DCKCFGR1_SAI2SEL | 0x00000000U) /*!< PLLSAI clock used as SAI2 clock source */ +#define LL_RCC_SAI2_CLKSOURCE_PLLI2S (uint32_t)(RCC_DCKCFGR1_SAI2SEL | (RCC_DCKCFGR1_SAI2SEL_0 >> 16U)) /*!< PLLI2S clock used as SAI2 clock source */ +#define LL_RCC_SAI2_CLKSOURCE_PIN (uint32_t)(RCC_DCKCFGR1_SAI2SEL | (RCC_DCKCFGR1_SAI2SEL_1 >> 16U)) /*!< External pin clock used as SAI2 clock source */ +#if defined(RCC_SAI2SEL_PLLSRC_SUPPORT) +#define LL_RCC_SAI2_CLKSOURCE_PLLSRC (uint32_t)(RCC_DCKCFGR1_SAI2SEL | (RCC_DCKCFGR1_SAI2SEL >> 16U)) /*!< Main source clock used as SAI2 clock source */ +#endif /* RCC_SAI2SEL_PLLSRC_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SDMMCx_CLKSOURCE Peripheral SDMMC clock source selection + * @{ + */ +#define LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK (uint32_t)(RCC_DCKCFGR2_SDMMC1SEL | 0x00000000U) /*!< PLL 48M domain clock used as SDMMC1 clock */ +#define LL_RCC_SDMMC1_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_SDMMC1SEL | (RCC_DCKCFGR2_SDMMC1SEL >> 16U)) /*!< System clock clock used as SDMMC1 clock */ +#if defined(SDMMC2) +#define LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK (uint32_t)(RCC_DCKCFGR2_SDMMC2SEL | 0x00000000U) /*!< PLL 48M domain clock used as SDMMC2 clock */ +#define LL_RCC_SDMMC2_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_SDMMC2SEL | (RCC_DCKCFGR2_SDMMC2SEL >> 16U)) /*!< System clock clock used as SDMMC2 clock */ +#endif /* SDMMC2 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_RNG_CLKSOURCE Peripheral RNG clock source selection + * @{ + */ +#define LL_RCC_RNG_CLKSOURCE_PLL 0x00000000U /*!< PLL clock used as RNG clock source */ +#define LL_RCC_RNG_CLKSOURCE_PLLSAI RCC_DCKCFGR2_CK48MSEL /*!< PLLSAI clock used as RNG clock source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_USB_CLKSOURCE Peripheral USB clock source selection + * @{ + */ +#define LL_RCC_USB_CLKSOURCE_PLL 0x00000000U /*!< PLL clock used as USB clock source */ +#define LL_RCC_USB_CLKSOURCE_PLLSAI RCC_DCKCFGR2_CK48MSEL /*!< PLLSAI1 clock used as USB clock source */ +/** + * @} + */ + +#if defined(DSI) +/** @defgroup RCC_LL_EC_DSI_CLKSOURCE Peripheral DSI clock source selection + * @{ + */ +#define LL_RCC_DSI_CLKSOURCE_PHY 0x00000000U /*!< DSI-PHY clock used as DSI byte lane clock source */ +#define LL_RCC_DSI_CLKSOURCE_PLL RCC_DCKCFGR2_DSISEL /*!< PLL clock used as DSI byte lane clock source */ +/** + * @} + */ +#endif /* DSI */ + +#if defined(CEC) +/** @defgroup RCC_LL_EC_CEC_CLKSOURCE Peripheral CEC clock source selection + * @{ + */ +#define LL_RCC_CEC_CLKSOURCE_LSE 0x00000000U /*!< LSE oscillator clock used as CEC clock */ +#define LL_RCC_CEC_CLKSOURCE_HSI_DIV488 RCC_DCKCFGR2_CECSEL /*!< HSI oscillator clock divided by 488 used as CEC clock */ +/** + * @} + */ +#endif /* CEC */ + +/** @defgroup RCC_LL_EC_I2S1_CLKSOURCE Peripheral I2S clock source selection + * @{ + */ +#define LL_RCC_I2S1_CLKSOURCE_PLLI2S 0x00000000U /*!< I2S oscillator clock used as I2S1 clock */ +#define LL_RCC_I2S1_CLKSOURCE_PIN RCC_CFGR_I2SSRC /*!< External pin clock used as I2S1 clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_CK48M_CLKSOURCE Peripheral 48Mhz domain clock source selection + * @{ + */ +#define LL_RCC_CK48M_CLKSOURCE_PLL 0x00000000U /*!< PLL oscillator clock used as 48Mhz domain clock */ +#define LL_RCC_CK48M_CLKSOURCE_PLLSAI RCC_DCKCFGR2_CK48MSEL /*!< PLLSAI oscillator clock used as 48Mhz domain clock */ +/** + * @} + */ + +#if defined(DFSDM1_Channel0) +/** @defgroup RCC_LL_EC_DFSDM1_AUDIO_CLKSOURCE Peripheral DFSDM Audio clock source selection + * @{ + */ +#define LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 0x00000000U /*!< SAI1 clock used as DFSDM1 Audio clock */ +#define LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2 RCC_DCKCFGR1_ADFSDM1SEL /*!< SAI2 clock used as DFSDM1 Audio clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_DFSDM1_CLKSOURCE Peripheral DFSDM clock source selection + * @{ + */ +#define LL_RCC_DFSDM1_CLKSOURCE_PCLK2 0x00000000U /*!< PCLK2 clock used as DFSDM1 clock */ +#define LL_RCC_DFSDM1_CLKSOURCE_SYSCLK RCC_DCKCFGR1_DFSDM1SEL /*!< System clock used as DFSDM1 clock */ +/** + * @} + */ +#endif /* DFSDM1_Channel0 */ + +/** @defgroup RCC_LL_EC_USARTx Peripheral USART get clock source + * @{ + */ +#define LL_RCC_USART1_CLKSOURCE RCC_DCKCFGR2_USART1SEL /*!< USART1 Clock source selection */ +#define LL_RCC_USART2_CLKSOURCE RCC_DCKCFGR2_USART2SEL /*!< USART2 Clock source selection */ +#define LL_RCC_USART3_CLKSOURCE RCC_DCKCFGR2_USART3SEL /*!< USART3 Clock source selection */ +#define LL_RCC_USART6_CLKSOURCE RCC_DCKCFGR2_USART6SEL /*!< USART6 Clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_UARTx Peripheral UART get clock source + * @{ + */ +#define LL_RCC_UART4_CLKSOURCE RCC_DCKCFGR2_UART4SEL /*!< UART4 Clock source selection */ +#define LL_RCC_UART5_CLKSOURCE RCC_DCKCFGR2_UART5SEL /*!< UART5 Clock source selection */ +#define LL_RCC_UART7_CLKSOURCE RCC_DCKCFGR2_UART7SEL /*!< UART7 Clock source selection */ +#define LL_RCC_UART8_CLKSOURCE RCC_DCKCFGR2_UART8SEL /*!< UART8 Clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_I2Cx Peripheral I2C get clock source + * @{ + */ +#define LL_RCC_I2C1_CLKSOURCE RCC_DCKCFGR2_I2C1SEL /*!< I2C1 Clock source selection */ +#define LL_RCC_I2C2_CLKSOURCE RCC_DCKCFGR2_I2C2SEL /*!< I2C2 Clock source selection */ +#define LL_RCC_I2C3_CLKSOURCE RCC_DCKCFGR2_I2C3SEL /*!< I2C3 Clock source selection */ +#if defined(I2C4) +#define LL_RCC_I2C4_CLKSOURCE RCC_DCKCFGR2_I2C4SEL /*!< I2C4 Clock source selection */ +#endif /* I2C4 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_LPTIM1 Peripheral LPTIM get clock source + * @{ + */ +#define LL_RCC_LPTIM1_CLKSOURCE RCC_DCKCFGR2_LPTIM1SEL /*!< LPTIM1 Clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SAIx Peripheral SAI get clock source + * @{ + */ +#define LL_RCC_SAI1_CLKSOURCE RCC_DCKCFGR1_SAI1SEL /*!< SAI1 Clock source selection */ +#define LL_RCC_SAI2_CLKSOURCE RCC_DCKCFGR1_SAI2SEL /*!< SAI2 Clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SDMMCx Peripheral SDMMC get clock source + * @{ + */ +#define LL_RCC_SDMMC1_CLKSOURCE RCC_DCKCFGR2_SDMMC1SEL /*!< SDMMC1 Clock source selection */ +#if defined(SDMMC2) +#define LL_RCC_SDMMC2_CLKSOURCE RCC_DCKCFGR2_SDMMC2SEL /*!< SDMMC2 Clock source selection */ +#endif /* SDMMC2 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_CK48M Peripheral CK48M get clock source + * @{ + */ +#define LL_RCC_CK48M_CLKSOURCE RCC_DCKCFGR2_CK48MSEL /*!< CK48M Domain clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_RNG Peripheral RNG get clock source + * @{ + */ +#define LL_RCC_RNG_CLKSOURCE RCC_DCKCFGR2_CK48MSEL /*!< RNG Clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_USB Peripheral USB get clock source + * @{ + */ +#define LL_RCC_USB_CLKSOURCE RCC_DCKCFGR2_CK48MSEL /*!< USB Clock source selection */ +/** + * @} + */ + +#if defined(CEC) +/** @defgroup RCC_LL_EC_CEC Peripheral CEC get clock source + * @{ + */ +#define LL_RCC_CEC_CLKSOURCE RCC_DCKCFGR2_CECSEL /*!< CEC Clock source selection */ +/** + * @} + */ +#endif /* CEC */ + +/** @defgroup RCC_LL_EC_I2S1 Peripheral I2S get clock source + * @{ + */ +#define LL_RCC_I2S1_CLKSOURCE RCC_CFGR_I2SSRC /*!< I2S Clock source selection */ +/** + * @} + */ +#if defined(DFSDM1_Channel0) +/** @defgroup RCC_LL_EC_DFSDM_AUDIO Peripheral DFSDM Audio get clock source + * @{ + */ +#define LL_RCC_DFSDM1_AUDIO_CLKSOURCE RCC_DCKCFGR1_ADFSDM1SEL /*!< DFSDM Audio Clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_DFSDM Peripheral DFSDM get clock source + * @{ + */ +#define LL_RCC_DFSDM1_CLKSOURCE RCC_DCKCFGR1_DFSDM1SEL /*!< DFSDM Clock source selection */ +/** + * @} + */ +#endif /* DFSDM1_Channel0 */ + +#if defined(DSI) +/** @defgroup RCC_LL_EC_DSI Peripheral DSI get clock source + * @{ + */ +#define LL_RCC_DSI_CLKSOURCE RCC_DCKCFGR2_DSISEL /*!< DSI Clock source selection */ +/** + * @} + */ +#endif /* DSI */ + +#if defined(LTDC) +/** @defgroup RCC_LL_EC_LTDC Peripheral LTDC get clock source + * @{ + */ +#define LL_RCC_LTDC_CLKSOURCE RCC_DCKCFGR1_PLLSAIDIVR /*!< LTDC Clock source selection */ +/** + * @} + */ +#endif /* LTDC */ + +#if defined(SPDIFRX) +/** @defgroup RCC_LL_EC_SPDIFRX Peripheral SPDIFRX get clock source + * @{ + */ +#define LL_RCC_SPDIFRX1_CLKSOURCE RCC_PLLI2SCFGR_PLLI2SP /*!< SPDIFRX Clock source selection */ +/** + * @} + */ +#endif /* SPDIFRX */ + +/** @defgroup RCC_LL_EC_RTC_CLKSOURCE RTC clock source selection + * @{ + */ +#define LL_RCC_RTC_CLKSOURCE_NONE 0x00000000U /*!< No clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_LSE RCC_BDCR_RTCSEL_0 /*!< LSE oscillator clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_LSI RCC_BDCR_RTCSEL_1 /*!< LSI oscillator clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_HSE RCC_BDCR_RTCSEL /*!< HSE oscillator clock divided by HSE prescaler used as RTC clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_TIM_CLKPRESCALER Timers clocks prescalers selection + * @{ + */ +#define LL_RCC_TIM_PRESCALER_TWICE 0x00000000U /*!< Timers clock to twice PCLK */ +#define LL_RCC_TIM_PRESCALER_FOUR_TIMES RCC_DCKCFGR1_TIMPRE /*!< Timers clock to four time PCLK */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLSOURCE PLL, PLLI2S and PLLSAI entry clock source + * @{ + */ +#define LL_RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI /*!< HSI16 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE /*!< HSE clock selected as PLL entry clock source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLM_DIV PLL, PLLI2S and PLLSAI division factor + * @{ + */ +#define LL_RCC_PLLM_DIV_2 (RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 2 */ +#define LL_RCC_PLLM_DIV_3 (RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 3 */ +#define LL_RCC_PLLM_DIV_4 (RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI2S and PLLSAI division factor by 4 */ +#define LL_RCC_PLLM_DIV_5 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 5 */ +#define LL_RCC_PLLM_DIV_6 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 6 */ +#define LL_RCC_PLLM_DIV_7 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 7 */ +#define LL_RCC_PLLM_DIV_8 (RCC_PLLCFGR_PLLM_3) /*!< PLL, PLLI2S and PLLSAI division factor by 8 */ +#define LL_RCC_PLLM_DIV_9 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 9 */ +#define LL_RCC_PLLM_DIV_10 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 10 */ +#define LL_RCC_PLLM_DIV_11 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 11 */ +#define LL_RCC_PLLM_DIV_12 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI2S and PLLSAI division factor by 12 */ +#define LL_RCC_PLLM_DIV_13 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 13 */ +#define LL_RCC_PLLM_DIV_14 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 14 */ +#define LL_RCC_PLLM_DIV_15 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 15 */ +#define LL_RCC_PLLM_DIV_16 (RCC_PLLCFGR_PLLM_4) /*!< PLL, PLLI2S and PLLSAI division factor by 16 */ +#define LL_RCC_PLLM_DIV_17 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 17 */ +#define LL_RCC_PLLM_DIV_18 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 18 */ +#define LL_RCC_PLLM_DIV_19 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 19 */ +#define LL_RCC_PLLM_DIV_20 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI2S and PLLSAI division factor by 20 */ +#define LL_RCC_PLLM_DIV_21 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 21 */ +#define LL_RCC_PLLM_DIV_22 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 22 */ +#define LL_RCC_PLLM_DIV_23 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 23 */ +#define LL_RCC_PLLM_DIV_24 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3) /*!< PLL, PLLI2S and PLLSAI division factor by 24 */ +#define LL_RCC_PLLM_DIV_25 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 25 */ +#define LL_RCC_PLLM_DIV_26 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 26 */ +#define LL_RCC_PLLM_DIV_27 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 27 */ +#define LL_RCC_PLLM_DIV_28 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI2S and PLLSAI division factor by 28 */ +#define LL_RCC_PLLM_DIV_29 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 29 */ +#define LL_RCC_PLLM_DIV_30 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 30 */ +#define LL_RCC_PLLM_DIV_31 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 31 */ +#define LL_RCC_PLLM_DIV_32 (RCC_PLLCFGR_PLLM_5) /*!< PLL, PLLI2S and PLLSAI division factor by 32 */ +#define LL_RCC_PLLM_DIV_33 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 33 */ +#define LL_RCC_PLLM_DIV_34 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 34 */ +#define LL_RCC_PLLM_DIV_35 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 35 */ +#define LL_RCC_PLLM_DIV_36 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI2S and PLLSAI division factor by 36 */ +#define LL_RCC_PLLM_DIV_37 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 37 */ +#define LL_RCC_PLLM_DIV_38 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 38 */ +#define LL_RCC_PLLM_DIV_39 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 39 */ +#define LL_RCC_PLLM_DIV_40 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3) /*!< PLL, PLLI2S and PLLSAI division factor by 40 */ +#define LL_RCC_PLLM_DIV_41 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 41 */ +#define LL_RCC_PLLM_DIV_42 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 42 */ +#define LL_RCC_PLLM_DIV_43 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 43 */ +#define LL_RCC_PLLM_DIV_44 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI2S and PLLSAI division factor by 44 */ +#define LL_RCC_PLLM_DIV_45 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 45 */ +#define LL_RCC_PLLM_DIV_46 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 46 */ +#define LL_RCC_PLLM_DIV_47 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 47 */ +#define LL_RCC_PLLM_DIV_48 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4) /*!< PLL, PLLI2S and PLLSAI division factor by 48 */ +#define LL_RCC_PLLM_DIV_49 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 49 */ +#define LL_RCC_PLLM_DIV_50 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 50 */ +#define LL_RCC_PLLM_DIV_51 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 51 */ +#define LL_RCC_PLLM_DIV_52 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI2S and PLLSAI division factor by 52 */ +#define LL_RCC_PLLM_DIV_53 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 53 */ +#define LL_RCC_PLLM_DIV_54 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 54 */ +#define LL_RCC_PLLM_DIV_55 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 55 */ +#define LL_RCC_PLLM_DIV_56 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3) /*!< PLL, PLLI2S and PLLSAI division factor by 56 */ +#define LL_RCC_PLLM_DIV_57 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 57 */ +#define LL_RCC_PLLM_DIV_58 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 58 */ +#define LL_RCC_PLLM_DIV_59 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 59 */ +#define LL_RCC_PLLM_DIV_60 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI2S and PLLSAI division factor by 60 */ +#define LL_RCC_PLLM_DIV_61 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 61 */ +#define LL_RCC_PLLM_DIV_62 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI division factor by 62 */ +#define LL_RCC_PLLM_DIV_63 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI2S and PLLSAI division factor by 63 */ +/** + * @} + */ + +#if defined(RCC_PLLCFGR_PLLR) +/** @defgroup RCC_LL_EC_PLLR_DIV PLL division factor (PLLR) + * @{ + */ +#define LL_RCC_PLLR_DIV_2 (RCC_PLLCFGR_PLLR_1) /*!< Main PLL division factor for PLLCLK (system clock) by 2 */ +#define LL_RCC_PLLR_DIV_3 (RCC_PLLCFGR_PLLR_1|RCC_PLLCFGR_PLLR_0) /*!< Main PLL division factor for PLLCLK (system clock) by 3 */ +#define LL_RCC_PLLR_DIV_4 (RCC_PLLCFGR_PLLR_2) /*!< Main PLL division factor for PLLCLK (system clock) by 4 */ +#define LL_RCC_PLLR_DIV_5 (RCC_PLLCFGR_PLLR_2|RCC_PLLCFGR_PLLR_0) /*!< Main PLL division factor for PLLCLK (system clock) by 5 */ +#define LL_RCC_PLLR_DIV_6 (RCC_PLLCFGR_PLLR_2|RCC_PLLCFGR_PLLR_1) /*!< Main PLL division factor for PLLCLK (system clock) by 6 */ +#define LL_RCC_PLLR_DIV_7 (RCC_PLLCFGR_PLLR) /*!< Main PLL division factor for PLLCLK (system clock) by 7 */ +/** + * @} + */ +#endif /* RCC_PLLCFGR_PLLR */ + +/** @defgroup RCC_LL_EC_PLLP_DIV PLL division factor (PLLP) + * @{ + */ +#define LL_RCC_PLLP_DIV_2 0x00000000U /*!< Main PLL division factor for PLLP output by 2 */ +#define LL_RCC_PLLP_DIV_4 RCC_PLLCFGR_PLLP_0 /*!< Main PLL division factor for PLLP output by 4 */ +#define LL_RCC_PLLP_DIV_6 RCC_PLLCFGR_PLLP_1 /*!< Main PLL division factor for PLLP output by 6 */ +#define LL_RCC_PLLP_DIV_8 (RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< Main PLL division factor for PLLP output by 8 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLQ_DIV PLL division factor (PLLQ) + * @{ + */ +#define LL_RCC_PLLQ_DIV_2 RCC_PLLCFGR_PLLQ_1 /*!< Main PLL division factor for PLLQ output by 2 */ +#define LL_RCC_PLLQ_DIV_3 (RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 3 */ +#define LL_RCC_PLLQ_DIV_4 RCC_PLLCFGR_PLLQ_2 /*!< Main PLL division factor for PLLQ output by 4 */ +#define LL_RCC_PLLQ_DIV_5 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 5 */ +#define LL_RCC_PLLQ_DIV_6 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_1) /*!< Main PLL division factor for PLLQ output by 6 */ +#define LL_RCC_PLLQ_DIV_7 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 7 */ +#define LL_RCC_PLLQ_DIV_8 RCC_PLLCFGR_PLLQ_3 /*!< Main PLL division factor for PLLQ output by 8 */ +#define LL_RCC_PLLQ_DIV_9 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 9 */ +#define LL_RCC_PLLQ_DIV_10 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_1) /*!< Main PLL division factor for PLLQ output by 10 */ +#define LL_RCC_PLLQ_DIV_11 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 11 */ +#define LL_RCC_PLLQ_DIV_12 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2) /*!< Main PLL division factor for PLLQ output by 12 */ +#define LL_RCC_PLLQ_DIV_13 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 13 */ +#define LL_RCC_PLLQ_DIV_14 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_1) /*!< Main PLL division factor for PLLQ output by 14 */ +#define LL_RCC_PLLQ_DIV_15 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 15 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLL_SPRE_SEL PLL Spread Spectrum Selection + * @{ + */ +#define LL_RCC_SPREAD_SELECT_CENTER 0x00000000U /*!< PLL center spread spectrum selection */ +#define LL_RCC_SPREAD_SELECT_DOWN RCC_SSCGR_SPREADSEL /*!< PLL down spread spectrum selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLI2SQ PLLI2SQ division factor (PLLI2SQ) + * @{ + */ +#define LL_RCC_PLLI2SQ_DIV_2 RCC_PLLI2SCFGR_PLLI2SQ_1 /*!< PLLI2S division factor for PLLI2SQ output by 2 */ +#define LL_RCC_PLLI2SQ_DIV_3 (RCC_PLLI2SCFGR_PLLI2SQ_1 | RCC_PLLI2SCFGR_PLLI2SQ_0) /*!< PLLI2S division factor for PLLI2SQ output by 3 */ +#define LL_RCC_PLLI2SQ_DIV_4 RCC_PLLI2SCFGR_PLLI2SQ_2 /*!< PLLI2S division factor for PLLI2SQ output by 4 */ +#define LL_RCC_PLLI2SQ_DIV_5 (RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_0) /*!< PLLI2S division factor for PLLI2SQ output by 5 */ +#define LL_RCC_PLLI2SQ_DIV_6 (RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_1) /*!< PLLI2S division factor for PLLI2SQ output by 6 */ +#define LL_RCC_PLLI2SQ_DIV_7 (RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_1 | RCC_PLLI2SCFGR_PLLI2SQ_0) /*!< PLLI2S division factor for PLLI2SQ output by 7 */ +#define LL_RCC_PLLI2SQ_DIV_8 RCC_PLLI2SCFGR_PLLI2SQ_3 /*!< PLLI2S division factor for PLLI2SQ output by 8 */ +#define LL_RCC_PLLI2SQ_DIV_9 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_0) /*!< PLLI2S division factor for PLLI2SQ output by 9 */ +#define LL_RCC_PLLI2SQ_DIV_10 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_1) /*!< PLLI2S division factor for PLLI2SQ output by 10 */ +#define LL_RCC_PLLI2SQ_DIV_11 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_1 | RCC_PLLI2SCFGR_PLLI2SQ_0) /*!< PLLI2S division factor for PLLI2SQ output by 11 */ +#define LL_RCC_PLLI2SQ_DIV_12 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2) /*!< PLLI2S division factor for PLLI2SQ output by 12 */ +#define LL_RCC_PLLI2SQ_DIV_13 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_0) /*!< PLLI2S division factor for PLLI2SQ output by 13 */ +#define LL_RCC_PLLI2SQ_DIV_14 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_1) /*!< PLLI2S division factor for PLLI2SQ output by 14 */ +#define LL_RCC_PLLI2SQ_DIV_15 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_1 | RCC_PLLI2SCFGR_PLLI2SQ_0) /*!< PLLI2S division factor for PLLI2SQ output by 15 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLI2SDIVQ PLLI2SDIVQ division factor (PLLI2SDIVQ) + * @{ + */ +#define LL_RCC_PLLI2SDIVQ_DIV_1 0x00000000U /*!< PLLI2S division factor for PLLI2SDIVQ output by 1 */ +#define LL_RCC_PLLI2SDIVQ_DIV_2 RCC_DCKCFGR1_PLLI2SDIVQ_0 /*!< PLLI2S division factor for PLLI2SDIVQ output by 2 */ +#define LL_RCC_PLLI2SDIVQ_DIV_3 RCC_DCKCFGR1_PLLI2SDIVQ_1 /*!< PLLI2S division factor for PLLI2SDIVQ output by 3 */ +#define LL_RCC_PLLI2SDIVQ_DIV_4 (RCC_DCKCFGR1_PLLI2SDIVQ_1 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 4 */ +#define LL_RCC_PLLI2SDIVQ_DIV_5 RCC_DCKCFGR1_PLLI2SDIVQ_2 /*!< PLLI2S division factor for PLLI2SDIVQ output by 5 */ +#define LL_RCC_PLLI2SDIVQ_DIV_6 (RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 6 */ +#define LL_RCC_PLLI2SDIVQ_DIV_7 (RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1) /*!< PLLI2S division factor for PLLI2SDIVQ output by 7 */ +#define LL_RCC_PLLI2SDIVQ_DIV_8 (RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 8 */ +#define LL_RCC_PLLI2SDIVQ_DIV_9 RCC_DCKCFGR1_PLLI2SDIVQ_3 /*!< PLLI2S division factor for PLLI2SDIVQ output by 9 */ +#define LL_RCC_PLLI2SDIVQ_DIV_10 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 10 */ +#define LL_RCC_PLLI2SDIVQ_DIV_11 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_1) /*!< PLLI2S division factor for PLLI2SDIVQ output by 11 */ +#define LL_RCC_PLLI2SDIVQ_DIV_12 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 12 */ +#define LL_RCC_PLLI2SDIVQ_DIV_13 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2) /*!< PLLI2S division factor for PLLI2SDIVQ output by 13 */ +#define LL_RCC_PLLI2SDIVQ_DIV_14 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 14 */ +#define LL_RCC_PLLI2SDIVQ_DIV_15 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1) /*!< PLLI2S division factor for PLLI2SDIVQ output by 15 */ +#define LL_RCC_PLLI2SDIVQ_DIV_16 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 16 */ +#define LL_RCC_PLLI2SDIVQ_DIV_17 RCC_DCKCFGR1_PLLI2SDIVQ_4 /*!< PLLI2S division factor for PLLI2SDIVQ output by 17 */ +#define LL_RCC_PLLI2SDIVQ_DIV_18 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 18 */ +#define LL_RCC_PLLI2SDIVQ_DIV_19 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_1) /*!< PLLI2S division factor for PLLI2SDIVQ output by 19 */ +#define LL_RCC_PLLI2SDIVQ_DIV_20 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 20 */ +#define LL_RCC_PLLI2SDIVQ_DIV_21 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2) /*!< PLLI2S division factor for PLLI2SDIVQ output by 21 */ +#define LL_RCC_PLLI2SDIVQ_DIV_22 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 22 */ +#define LL_RCC_PLLI2SDIVQ_DIV_23 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1) /*!< PLLI2S division factor for PLLI2SDIVQ output by 23 */ +#define LL_RCC_PLLI2SDIVQ_DIV_24 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 24 */ +#define LL_RCC_PLLI2SDIVQ_DIV_25 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3) /*!< PLLI2S division factor for PLLI2SDIVQ output by 25 */ +#define LL_RCC_PLLI2SDIVQ_DIV_26 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 26 */ +#define LL_RCC_PLLI2SDIVQ_DIV_27 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_1) /*!< PLLI2S division factor for PLLI2SDIVQ output by 27 */ +#define LL_RCC_PLLI2SDIVQ_DIV_28 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 28 */ +#define LL_RCC_PLLI2SDIVQ_DIV_29 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2) /*!< PLLI2S division factor for PLLI2SDIVQ output by 29 */ +#define LL_RCC_PLLI2SDIVQ_DIV_30 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 30 */ +#define LL_RCC_PLLI2SDIVQ_DIV_31 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1) /*!< PLLI2S division factor for PLLI2SDIVQ output by 31 */ +#define LL_RCC_PLLI2SDIVQ_DIV_32 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | RCC_DCKCFGR1_PLLI2SDIVQ_0) /*!< PLLI2S division factor for PLLI2SDIVQ output by 32 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLI2SR PLLI2SR division factor (PLLI2SR) + * @{ + */ +#define LL_RCC_PLLI2SR_DIV_2 RCC_PLLI2SCFGR_PLLI2SR_1 /*!< PLLI2S division factor for PLLI2SR output by 2 */ +#define LL_RCC_PLLI2SR_DIV_3 (RCC_PLLI2SCFGR_PLLI2SR_1 | RCC_PLLI2SCFGR_PLLI2SR_0) /*!< PLLI2S division factor for PLLI2SR output by 3 */ +#define LL_RCC_PLLI2SR_DIV_4 RCC_PLLI2SCFGR_PLLI2SR_2 /*!< PLLI2S division factor for PLLI2SR output by 4 */ +#define LL_RCC_PLLI2SR_DIV_5 (RCC_PLLI2SCFGR_PLLI2SR_2 | RCC_PLLI2SCFGR_PLLI2SR_0) /*!< PLLI2S division factor for PLLI2SR output by 5 */ +#define LL_RCC_PLLI2SR_DIV_6 (RCC_PLLI2SCFGR_PLLI2SR_2 | RCC_PLLI2SCFGR_PLLI2SR_1) /*!< PLLI2S division factor for PLLI2SR output by 6 */ +#define LL_RCC_PLLI2SR_DIV_7 (RCC_PLLI2SCFGR_PLLI2SR_2 | RCC_PLLI2SCFGR_PLLI2SR_1 | RCC_PLLI2SCFGR_PLLI2SR_0) /*!< PLLI2S division factor for PLLI2SR output by 7 */ +/** + * @} + */ + +#if defined(RCC_PLLI2SCFGR_PLLI2SP) +/** @defgroup RCC_LL_EC_PLLI2SP PLLI2SP division factor (PLLI2SP) + * @{ + */ +#define LL_RCC_PLLI2SP_DIV_2 0x00000000U /*!< PLLI2S division factor for PLLI2SP output by 2 */ +#define LL_RCC_PLLI2SP_DIV_4 RCC_PLLI2SCFGR_PLLI2SP_0 /*!< PLLI2S division factor for PLLI2SP output by 4 */ +#define LL_RCC_PLLI2SP_DIV_6 RCC_PLLI2SCFGR_PLLI2SP_1 /*!< PLLI2S division factor for PLLI2SP output by 6 */ +#define LL_RCC_PLLI2SP_DIV_8 (RCC_PLLI2SCFGR_PLLI2SP_1 | RCC_PLLI2SCFGR_PLLI2SP_0) /*!< PLLI2S division factor for PLLI2SP output by 8 */ +/** + * @} + */ +#endif /* RCC_PLLI2SCFGR_PLLI2SP */ + +/** @defgroup RCC_LL_EC_PLLSAIQ PLLSAIQ division factor (PLLSAIQ) + * @{ + */ +#define LL_RCC_PLLSAIQ_DIV_2 RCC_PLLSAICFGR_PLLSAIQ_1 /*!< PLLSAI division factor for PLLSAIQ output by 2 */ +#define LL_RCC_PLLSAIQ_DIV_3 (RCC_PLLSAICFGR_PLLSAIQ_1 | RCC_PLLSAICFGR_PLLSAIQ_0) /*!< PLLSAI division factor for PLLSAIQ output by 3 */ +#define LL_RCC_PLLSAIQ_DIV_4 RCC_PLLSAICFGR_PLLSAIQ_2 /*!< PLLSAI division factor for PLLSAIQ output by 4 */ +#define LL_RCC_PLLSAIQ_DIV_5 (RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_0) /*!< PLLSAI division factor for PLLSAIQ output by 5 */ +#define LL_RCC_PLLSAIQ_DIV_6 (RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_1) /*!< PLLSAI division factor for PLLSAIQ output by 6 */ +#define LL_RCC_PLLSAIQ_DIV_7 (RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_1 | RCC_PLLSAICFGR_PLLSAIQ_0) /*!< PLLSAI division factor for PLLSAIQ output by 7 */ +#define LL_RCC_PLLSAIQ_DIV_8 RCC_PLLSAICFGR_PLLSAIQ_3 /*!< PLLSAI division factor for PLLSAIQ output by 8 */ +#define LL_RCC_PLLSAIQ_DIV_9 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_0) /*!< PLLSAI division factor for PLLSAIQ output by 9 */ +#define LL_RCC_PLLSAIQ_DIV_10 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_1) /*!< PLLSAI division factor for PLLSAIQ output by 10 */ +#define LL_RCC_PLLSAIQ_DIV_11 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_1 | RCC_PLLSAICFGR_PLLSAIQ_0) /*!< PLLSAI division factor for PLLSAIQ output by 11 */ +#define LL_RCC_PLLSAIQ_DIV_12 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2) /*!< PLLSAI division factor for PLLSAIQ output by 12 */ +#define LL_RCC_PLLSAIQ_DIV_13 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_0) /*!< PLLSAI division factor for PLLSAIQ output by 13 */ +#define LL_RCC_PLLSAIQ_DIV_14 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_1) /*!< PLLSAI division factor for PLLSAIQ output by 14 */ +#define LL_RCC_PLLSAIQ_DIV_15 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_1 | RCC_PLLSAICFGR_PLLSAIQ_0) /*!< PLLSAI division factor for PLLSAIQ output by 15 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLSAIDIVQ PLLSAIDIVQ division factor (PLLSAIDIVQ) + * @{ + */ +#define LL_RCC_PLLSAIDIVQ_DIV_1 0x00000000U /*!< PLLSAI division factor for PLLSAIDIVQ output by 1 */ +#define LL_RCC_PLLSAIDIVQ_DIV_2 RCC_DCKCFGR1_PLLSAIDIVQ_0 /*!< PLLSAI division factor for PLLSAIDIVQ output by 2 */ +#define LL_RCC_PLLSAIDIVQ_DIV_3 RCC_DCKCFGR1_PLLSAIDIVQ_1 /*!< PLLSAI division factor for PLLSAIDIVQ output by 3 */ +#define LL_RCC_PLLSAIDIVQ_DIV_4 (RCC_DCKCFGR1_PLLSAIDIVQ_1 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 4 */ +#define LL_RCC_PLLSAIDIVQ_DIV_5 RCC_DCKCFGR1_PLLSAIDIVQ_2 /*!< PLLSAI division factor for PLLSAIDIVQ output by 5 */ +#define LL_RCC_PLLSAIDIVQ_DIV_6 (RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 6 */ +#define LL_RCC_PLLSAIDIVQ_DIV_7 (RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1) /*!< PLLSAI division factor for PLLSAIDIVQ output by 7 */ +#define LL_RCC_PLLSAIDIVQ_DIV_8 (RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 8 */ +#define LL_RCC_PLLSAIDIVQ_DIV_9 RCC_DCKCFGR1_PLLSAIDIVQ_3 /*!< PLLSAI division factor for PLLSAIDIVQ output by 9 */ +#define LL_RCC_PLLSAIDIVQ_DIV_10 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 10 */ +#define LL_RCC_PLLSAIDIVQ_DIV_11 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_1) /*!< PLLSAI division factor for PLLSAIDIVQ output by 11 */ +#define LL_RCC_PLLSAIDIVQ_DIV_12 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 12 */ +#define LL_RCC_PLLSAIDIVQ_DIV_13 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2) /*!< PLLSAI division factor for PLLSAIDIVQ output by 13 */ +#define LL_RCC_PLLSAIDIVQ_DIV_14 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 14 */ +#define LL_RCC_PLLSAIDIVQ_DIV_15 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1) /*!< PLLSAI division factor for PLLSAIDIVQ output by 15 */ +#define LL_RCC_PLLSAIDIVQ_DIV_16 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 16 */ +#define LL_RCC_PLLSAIDIVQ_DIV_17 RCC_DCKCFGR1_PLLSAIDIVQ_4 /*!< PLLSAI division factor for PLLSAIDIVQ output by 17 */ +#define LL_RCC_PLLSAIDIVQ_DIV_18 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 18 */ +#define LL_RCC_PLLSAIDIVQ_DIV_19 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_1) /*!< PLLSAI division factor for PLLSAIDIVQ output by 19 */ +#define LL_RCC_PLLSAIDIVQ_DIV_20 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 20 */ +#define LL_RCC_PLLSAIDIVQ_DIV_21 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2) /*!< PLLSAI division factor for PLLSAIDIVQ output by 21 */ +#define LL_RCC_PLLSAIDIVQ_DIV_22 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 22 */ +#define LL_RCC_PLLSAIDIVQ_DIV_23 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1) /*!< PLLSAI division factor for PLLSAIDIVQ output by 23 */ +#define LL_RCC_PLLSAIDIVQ_DIV_24 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 24 */ +#define LL_RCC_PLLSAIDIVQ_DIV_25 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3) /*!< PLLSAI division factor for PLLSAIDIVQ output by 25 */ +#define LL_RCC_PLLSAIDIVQ_DIV_26 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 26 */ +#define LL_RCC_PLLSAIDIVQ_DIV_27 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_1) /*!< PLLSAI division factor for PLLSAIDIVQ output by 27 */ +#define LL_RCC_PLLSAIDIVQ_DIV_28 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 28 */ +#define LL_RCC_PLLSAIDIVQ_DIV_29 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2) /*!< PLLSAI division factor for PLLSAIDIVQ output by 29 */ +#define LL_RCC_PLLSAIDIVQ_DIV_30 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 30 */ +#define LL_RCC_PLLSAIDIVQ_DIV_31 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1) /*!< PLLSAI division factor for PLLSAIDIVQ output by 31 */ +#define LL_RCC_PLLSAIDIVQ_DIV_32 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | RCC_DCKCFGR1_PLLSAIDIVQ_0) /*!< PLLSAI division factor for PLLSAIDIVQ output by 32 */ +/** + * @} + */ + +#if defined(RCC_PLLSAICFGR_PLLSAIR) +/** @defgroup RCC_LL_EC_PLLSAIR PLLSAIR division factor (PLLSAIR) + * @{ + */ +#define LL_RCC_PLLSAIR_DIV_2 RCC_PLLSAICFGR_PLLSAIR_1 /*!< PLLSAI division factor for PLLSAIR output by 2 */ +#define LL_RCC_PLLSAIR_DIV_3 (RCC_PLLSAICFGR_PLLSAIR_1 | RCC_PLLSAICFGR_PLLSAIR_0) /*!< PLLSAI division factor for PLLSAIR output by 3 */ +#define LL_RCC_PLLSAIR_DIV_4 RCC_PLLSAICFGR_PLLSAIR_2 /*!< PLLSAI division factor for PLLSAIR output by 4 */ +#define LL_RCC_PLLSAIR_DIV_5 (RCC_PLLSAICFGR_PLLSAIR_2 | RCC_PLLSAICFGR_PLLSAIR_0) /*!< PLLSAI division factor for PLLSAIR output by 5 */ +#define LL_RCC_PLLSAIR_DIV_6 (RCC_PLLSAICFGR_PLLSAIR_2 | RCC_PLLSAICFGR_PLLSAIR_1) /*!< PLLSAI division factor for PLLSAIR output by 6 */ +#define LL_RCC_PLLSAIR_DIV_7 (RCC_PLLSAICFGR_PLLSAIR_2 | RCC_PLLSAICFGR_PLLSAIR_1 | RCC_PLLSAICFGR_PLLSAIR_0) /*!< PLLSAI division factor for PLLSAIR output by 7 */ +/** + * @} + */ +#endif /* RCC_PLLSAICFGR_PLLSAIR */ + +#if defined(RCC_DCKCFGR1_PLLSAIDIVR) +/** @defgroup RCC_LL_EC_PLLSAIDIVR PLLSAIDIVR division factor (PLLSAIDIVR) + * @{ + */ +#define LL_RCC_PLLSAIDIVR_DIV_2 0x00000000U /*!< PLLSAI division factor for PLLSAIDIVR output by 2 */ +#define LL_RCC_PLLSAIDIVR_DIV_4 RCC_DCKCFGR1_PLLSAIDIVR_0 /*!< PLLSAI division factor for PLLSAIDIVR output by 4 */ +#define LL_RCC_PLLSAIDIVR_DIV_8 RCC_DCKCFGR1_PLLSAIDIVR_1 /*!< PLLSAI division factor for PLLSAIDIVR output by 8 */ +#define LL_RCC_PLLSAIDIVR_DIV_16 (RCC_DCKCFGR1_PLLSAIDIVR_1 | RCC_DCKCFGR1_PLLSAIDIVR_0) /*!< PLLSAI division factor for PLLSAIDIVR output by 16 */ +/** + * @} + */ +#endif /* RCC_DCKCFGR1_PLLSAIDIVR */ + +/** @defgroup RCC_LL_EC_PLLSAIP PLLSAIP division factor (PLLSAIP) + * @{ + */ +#define LL_RCC_PLLSAIP_DIV_2 0x00000000U /*!< PLLSAI division factor for PLLSAIP output by 2 */ +#define LL_RCC_PLLSAIP_DIV_4 RCC_PLLSAICFGR_PLLSAIP_0 /*!< PLLSAI division factor for PLLSAIP output by 4 */ +#define LL_RCC_PLLSAIP_DIV_6 RCC_PLLSAICFGR_PLLSAIP_1 /*!< PLLSAI division factor for PLLSAIP output by 6 */ +#define LL_RCC_PLLSAIP_DIV_8 (RCC_PLLSAICFGR_PLLSAIP_1 | RCC_PLLSAICFGR_PLLSAIP_0) /*!< PLLSAI division factor for PLLSAIP output by 8 */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Macros RCC Exported Macros + * @{ + */ + +/** @defgroup RCC_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in RCC register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_RCC_WriteReg(__REG__, __VALUE__) WRITE_REG(RCC->__REG__, (__VALUE__)) + +/** + * @brief Read a value in RCC register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_RCC_ReadReg(__REG__) READ_REG(RCC->__REG__) +/** + * @} + */ + +/** @defgroup RCC_LL_EM_CALC_FREQ Calculate frequencies + * @{ + */ + +/** + * @brief Helper macro to calculate the PLLCLK frequency on system domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param __PLLN__ Between 50 and 432 + * @param __PLLP__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLP__) ((__INPUTFREQ__) / (__PLLM__) * (__PLLN__) / \ + ((((__PLLP__) >> RCC_PLLCFGR_PLLP_Pos ) + 1U) * 2U)) + +/** + * @brief Helper macro to calculate the PLLCLK frequency used on 48M domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_48M_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param __PLLN__ Between 50 and 432 + * @param __PLLQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @arg @ref LL_RCC_PLLQ_DIV_9 + * @arg @ref LL_RCC_PLLQ_DIV_10 + * @arg @ref LL_RCC_PLLQ_DIV_11 + * @arg @ref LL_RCC_PLLQ_DIV_12 + * @arg @ref LL_RCC_PLLQ_DIV_13 + * @arg @ref LL_RCC_PLLQ_DIV_14 + * @arg @ref LL_RCC_PLLQ_DIV_15 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_48M_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLQ__) ((__INPUTFREQ__) / (__PLLM__) * (__PLLN__) / \ + ((__PLLQ__) >> RCC_PLLCFGR_PLLQ_Pos )) + +#if defined(DSI) +/** + * @brief Helper macro to calculate the PLLCLK frequency used on DSI + * @note ex: @ref __LL_RCC_CALC_PLLCLK_DSI_FREQ (HSE_VALUE, @ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetR ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param __PLLN__ Between 50 and 432 + * @param __PLLR__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLR_DIV_2 + * @arg @ref LL_RCC_PLLR_DIV_3 + * @arg @ref LL_RCC_PLLR_DIV_4 + * @arg @ref LL_RCC_PLLR_DIV_5 + * @arg @ref LL_RCC_PLLR_DIV_6 + * @arg @ref LL_RCC_PLLR_DIV_7 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_DSI_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLR__) ((__INPUTFREQ__) / (__PLLM__) * (__PLLN__) / \ + ((__PLLR__) >> RCC_PLLCFGR_PLLR_Pos )) +#endif /* DSI */ + +/** + * @brief Helper macro to calculate the PLLSAI frequency used for SAI1 and SAI2 domains + * @note ex: @ref __LL_RCC_CALC_PLLSAI_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLSAI_GetN (), @ref LL_RCC_PLLSAI_GetQ (), @ref LL_RCC_PLLSAI_GetDIVQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param __PLLSAIN__ Between 50 and 432 + * @param __PLLSAIQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAIQ_DIV_2 + * @arg @ref LL_RCC_PLLSAIQ_DIV_3 + * @arg @ref LL_RCC_PLLSAIQ_DIV_4 + * @arg @ref LL_RCC_PLLSAIQ_DIV_5 + * @arg @ref LL_RCC_PLLSAIQ_DIV_6 + * @arg @ref LL_RCC_PLLSAIQ_DIV_7 + * @arg @ref LL_RCC_PLLSAIQ_DIV_8 + * @arg @ref LL_RCC_PLLSAIQ_DIV_9 + * @arg @ref LL_RCC_PLLSAIQ_DIV_10 + * @arg @ref LL_RCC_PLLSAIQ_DIV_11 + * @arg @ref LL_RCC_PLLSAIQ_DIV_12 + * @arg @ref LL_RCC_PLLSAIQ_DIV_13 + * @arg @ref LL_RCC_PLLSAIQ_DIV_14 + * @arg @ref LL_RCC_PLLSAIQ_DIV_15 + * @param __PLLSAIDIVQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_1 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_2 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_3 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_4 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_5 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_6 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_7 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_8 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_9 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_10 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_11 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_12 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_13 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_14 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_15 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_16 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_17 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_18 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_19 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_20 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_21 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_22 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_23 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_24 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_25 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_26 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_27 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_28 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_29 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_30 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_31 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_32 + * @retval PLLSAI clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAIN__, __PLLSAIQ__, __PLLSAIDIVQ__) (((__INPUTFREQ__) / (__PLLM__)) * (__PLLSAIN__) / \ + (((__PLLSAIQ__) >> RCC_PLLSAICFGR_PLLSAIQ_Pos) * (((__PLLSAIDIVQ__) >> RCC_DCKCFGR1_PLLSAIDIVQ_Pos) + 1U))) + +/** + * @brief Helper macro to calculate the PLLSAI frequency used on 48Mhz domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI_48M_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLSAI_GetN (), @ref LL_RCC_PLLSAI_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param __PLLSAIN__ Between 50 and 432 + * @param __PLLSAIP__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAIP_DIV_2 + * @arg @ref LL_RCC_PLLSAIP_DIV_4 + * @arg @ref LL_RCC_PLLSAIP_DIV_6 + * @arg @ref LL_RCC_PLLSAIP_DIV_8 + * @retval PLLSAI clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI_48M_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAIN__, __PLLSAIP__) (((__INPUTFREQ__) / (__PLLM__)) * (__PLLSAIN__) / \ + ((((__PLLSAIP__) >> RCC_PLLSAICFGR_PLLSAIP_Pos) + 1U ) * 2U)) + +#if defined(LTDC) +/** + * @brief Helper macro to calculate the PLLSAI frequency used for LTDC domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI_LTDC_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLSAI_GetN (), @ref LL_RCC_PLLSAI_GetR (), @ref LL_RCC_PLLSAI_GetDIVR ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param __PLLSAIN__ Between 50 and 432 + * @param __PLLSAIR__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAIR_DIV_2 + * @arg @ref LL_RCC_PLLSAIR_DIV_3 + * @arg @ref LL_RCC_PLLSAIR_DIV_4 + * @arg @ref LL_RCC_PLLSAIR_DIV_5 + * @arg @ref LL_RCC_PLLSAIR_DIV_6 + * @arg @ref LL_RCC_PLLSAIR_DIV_7 + * @param __PLLSAIDIVR__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_2 + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_4 + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_8 + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_16 + * @retval PLLSAI clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI_LTDC_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAIN__, __PLLSAIR__, __PLLSAIDIVR__) (((__INPUTFREQ__) / (__PLLM__)) * (__PLLSAIN__) / \ + (((__PLLSAIR__) >> RCC_PLLSAICFGR_PLLSAIR_Pos) * (aRCC_PLLSAIDIVRPrescTable[(__PLLSAIDIVR__) >> RCC_DCKCFGR1_PLLSAIDIVR_Pos]))) +#endif /* LTDC */ + +/** + * @brief Helper macro to calculate the PLLI2S frequency used for SAI1 and SAI2 domains + * @note ex: @ref __LL_RCC_CALC_PLLI2S_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLI2S_GetN (), @ref LL_RCC_PLLI2S_GetQ (), @ref LL_RCC_PLLI2S_GetDIVQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param __PLLI2SN__ Between 50 and 432 + * @param __PLLI2SQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLI2SQ_DIV_2 + * @arg @ref LL_RCC_PLLI2SQ_DIV_3 + * @arg @ref LL_RCC_PLLI2SQ_DIV_4 + * @arg @ref LL_RCC_PLLI2SQ_DIV_5 + * @arg @ref LL_RCC_PLLI2SQ_DIV_6 + * @arg @ref LL_RCC_PLLI2SQ_DIV_7 + * @arg @ref LL_RCC_PLLI2SQ_DIV_8 + * @arg @ref LL_RCC_PLLI2SQ_DIV_9 + * @arg @ref LL_RCC_PLLI2SQ_DIV_10 + * @arg @ref LL_RCC_PLLI2SQ_DIV_11 + * @arg @ref LL_RCC_PLLI2SQ_DIV_12 + * @arg @ref LL_RCC_PLLI2SQ_DIV_13 + * @arg @ref LL_RCC_PLLI2SQ_DIV_14 + * @arg @ref LL_RCC_PLLI2SQ_DIV_15 + * @param __PLLI2SDIVQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_1 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_2 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_3 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_4 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_5 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_6 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_7 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_8 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_9 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_10 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_11 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_12 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_13 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_14 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_15 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_16 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_17 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_18 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_19 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_20 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_21 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_22 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_23 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_24 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_25 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_26 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_27 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_28 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_29 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_30 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_31 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_32 + * @retval PLLI2S clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLI2S_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLI2SN__, __PLLI2SQ__, __PLLI2SDIVQ__) (((__INPUTFREQ__) / (__PLLM__)) * (__PLLI2SN__) / \ + (((__PLLI2SQ__) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos) * (((__PLLI2SDIVQ__) >> RCC_DCKCFGR1_PLLI2SDIVQ_Pos) + 1U))) + +#if defined(SPDIFRX) +/** + * @brief Helper macro to calculate the PLLI2S frequency used on SPDIFRX domain + * @note ex: @ref __LL_RCC_CALC_PLLI2S_SPDIFRX_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLI2S_GetN (), @ref LL_RCC_PLLI2S_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param __PLLI2SN__ Between 50 and 432 + * @param __PLLI2SP__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLI2SP_DIV_2 + * @arg @ref LL_RCC_PLLI2SP_DIV_4 + * @arg @ref LL_RCC_PLLI2SP_DIV_6 + * @arg @ref LL_RCC_PLLI2SP_DIV_8 + * @retval PLLI2S clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLI2S_SPDIFRX_FREQ(__INPUTFREQ__, __PLLM__, __PLLI2SN__, __PLLI2SP__) (((__INPUTFREQ__) / (__PLLM__)) * (__PLLI2SN__) / \ + ((((__PLLI2SP__) >> RCC_PLLI2SCFGR_PLLI2SP_Pos) + 1U) * 2U)) +#endif /* SPDIFRX */ + +/** + * @brief Helper macro to calculate the PLLI2S frequency used for I2S domain + * @note ex: @ref __LL_RCC_CALC_PLLI2S_I2S_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLI2S_GetN (), @ref LL_RCC_PLLI2S_GetR ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param __PLLI2SN__ Between 50 and 432 + * @param __PLLI2SR__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLI2SR_DIV_2 + * @arg @ref LL_RCC_PLLI2SR_DIV_3 + * @arg @ref LL_RCC_PLLI2SR_DIV_4 + * @arg @ref LL_RCC_PLLI2SR_DIV_5 + * @arg @ref LL_RCC_PLLI2SR_DIV_6 + * @arg @ref LL_RCC_PLLI2SR_DIV_7 + * @retval PLLI2S clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLI2S_I2S_FREQ(__INPUTFREQ__, __PLLM__, __PLLI2SN__, __PLLI2SR__) (((__INPUTFREQ__) / (__PLLM__)) * (__PLLI2SN__) / \ + ((__PLLI2SR__) >> RCC_PLLI2SCFGR_PLLI2SR_Pos)) + +/** + * @brief Helper macro to calculate the HCLK frequency + * @param __SYSCLKFREQ__ SYSCLK frequency (based on HSE/HSI/PLLCLK) + * @param __AHBPRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval HCLK clock frequency (in Hz) + */ +#define __LL_RCC_CALC_HCLK_FREQ(__SYSCLKFREQ__, __AHBPRESCALER__) ((__SYSCLKFREQ__) >> AHBPrescTable[((__AHBPRESCALER__) & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]) + +/** + * @brief Helper macro to calculate the PCLK1 frequency (ABP1) + * @param __HCLKFREQ__ HCLK frequency + * @param __APB1PRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval PCLK1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PCLK1_FREQ(__HCLKFREQ__, __APB1PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[(__APB1PRESCALER__) >> RCC_CFGR_PPRE1_Pos]) + +/** + * @brief Helper macro to calculate the PCLK2 frequency (ABP2) + * @param __HCLKFREQ__ HCLK frequency + * @param __APB2PRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + * @retval PCLK2 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PCLK2_FREQ(__HCLKFREQ__, __APB2PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[(__APB2PRESCALER__) >> RCC_CFGR_PPRE2_Pos]) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Functions RCC Exported Functions + * @{ + */ + +/** @defgroup RCC_LL_EF_HSE HSE + * @{ + */ + +/** + * @brief Enable the Clock Security System. + * @rmtoll CR CSSON LL_RCC_HSE_EnableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_EnableCSS(void) +{ + SET_BIT(RCC->CR, RCC_CR_CSSON); +} + +/** + * @brief Enable HSE external oscillator (HSE Bypass) + * @rmtoll CR HSEBYP LL_RCC_HSE_EnableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_EnableBypass(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSEBYP); +} + +/** + * @brief Disable HSE external oscillator (HSE Bypass) + * @rmtoll CR HSEBYP LL_RCC_HSE_DisableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_DisableBypass(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); +} + +/** + * @brief Enable HSE crystal oscillator (HSE ON) + * @rmtoll CR HSEON LL_RCC_HSE_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSEON); +} + +/** + * @brief Disable HSE crystal oscillator (HSE ON) + * @rmtoll CR HSEON LL_RCC_HSE_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); +} + +/** + * @brief Check if HSE oscillator Ready + * @rmtoll CR HSERDY LL_RCC_HSE_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void) +{ + return (READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_HSI HSI + * @{ + */ + +/** + * @brief Enable HSI oscillator + * @rmtoll CR HSION LL_RCC_HSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSION); +} + +/** + * @brief Disable HSI oscillator + * @rmtoll CR HSION LL_RCC_HSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSION); +} + +/** + * @brief Check if HSI clock is ready + * @rmtoll CR HSIRDY LL_RCC_HSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void) +{ + return (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY)); +} + +/** + * @brief Get HSI Calibration value + * @note When HSITRIM is written, HSICAL is updated with the sum of + * HSITRIM and the factory trim value + * @rmtoll CR HSICAL LL_RCC_HSI_GetCalibration + * @retval Between Min_Data = 0x00 and Max_Data = 0xFF + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibration(void) +{ + return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_HSICAL) >> RCC_CR_HSICAL_Pos); +} + +/** + * @brief Set HSI Calibration trimming + * @note user-programmable trimming value that is added to the HSICAL + * @note Default value is 16, which, when added to the HSICAL value, + * should trim the HSI to 16 MHz +/- 1 % + * @rmtoll CR HSITRIM LL_RCC_HSI_SetCalibTrimming + * @param Value Between Min_Data = 0 and Max_Data = 31 + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value) +{ + MODIFY_REG(RCC->CR, RCC_CR_HSITRIM, Value << RCC_CR_HSITRIM_Pos); +} + +/** + * @brief Get HSI Calibration trimming + * @rmtoll CR HSITRIM LL_RCC_HSI_GetCalibTrimming + * @retval Between Min_Data = 0 and Max_Data = 31 + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibTrimming(void) +{ + return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_LSE LSE + * @{ + */ + +/** + * @brief Enable Low Speed External (LSE) crystal. + * @rmtoll BDCR LSEON LL_RCC_LSE_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_Enable(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); +} + +/** + * @brief Disable Low Speed External (LSE) crystal. + * @rmtoll BDCR LSEON LL_RCC_LSE_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_Disable(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); +} + +/** + * @brief Enable external clock source (LSE bypass). + * @rmtoll BDCR LSEBYP LL_RCC_LSE_EnableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_EnableBypass(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +} + +/** + * @brief Disable external clock source (LSE bypass). + * @rmtoll BDCR LSEBYP LL_RCC_LSE_DisableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_DisableBypass(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +} + +/** + * @brief Set LSE oscillator drive capability + * @note The oscillator is in Xtal mode when it is not in bypass mode. + * @rmtoll BDCR LSEDRV LL_RCC_LSE_SetDriveCapability + * @param LSEDrive This parameter can be one of the following values: + * @arg @ref LL_RCC_LSEDRIVE_LOW + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW + * @arg @ref LL_RCC_LSEDRIVE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_SetDriveCapability(uint32_t LSEDrive) +{ + MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, LSEDrive); +} + +/** + * @brief Get LSE oscillator drive capability + * @rmtoll BDCR LSEDRV LL_RCC_LSE_GetDriveCapability + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LSEDRIVE_LOW + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW + * @arg @ref LL_RCC_LSEDRIVE_HIGH + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_GetDriveCapability(void) +{ + return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_LSEDRV)); +} + +/** + * @brief Check if LSE oscillator Ready + * @rmtoll BDCR LSERDY LL_RCC_LSE_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void) +{ + return (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_LSI LSI + * @{ + */ + +/** + * @brief Enable LSI Oscillator + * @rmtoll CSR LSION LL_RCC_LSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_Enable(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_LSION); +} + +/** + * @brief Disable LSI Oscillator + * @rmtoll CSR LSION LL_RCC_LSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_Disable(void) +{ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); +} + +/** + * @brief Check if LSI is Ready + * @rmtoll CSR LSIRDY LL_RCC_LSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_System System + * @{ + */ + +/** + * @brief Configure the system clock source + * @rmtoll CFGR SW LL_RCC_SetSysClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); +} + +/** + * @brief Get the system clock source + * @rmtoll CFGR SWS LL_RCC_GetSysClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); +} + +/** + * @brief Set AHB prescaler + * @rmtoll CFGR HPRE LL_RCC_SetAHBPrescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, Prescaler); +} + +/** + * @brief Set APB1 prescaler + * @rmtoll CFGR PPRE1 LL_RCC_SetAPB1Prescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, Prescaler); +} + +/** + * @brief Set APB2 prescaler + * @rmtoll CFGR PPRE2 LL_RCC_SetAPB2Prescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, Prescaler); +} + +/** + * @brief Get AHB prescaler + * @rmtoll CFGR HPRE LL_RCC_GetAHBPrescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HPRE)); +} + +/** + * @brief Get APB1 prescaler + * @rmtoll CFGR PPRE1 LL_RCC_GetAPB1Prescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @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) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1)); +} + +/** + * @brief Get APB2 prescaler + * @rmtoll CFGR PPRE2 LL_RCC_GetAPB2Prescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAPB2Prescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_MCO MCO + * @{ + */ + +/** + * @brief Configure MCOx + * @rmtoll CFGR MCO1 LL_RCC_ConfigMCO\n + * CFGR MCO1PRE LL_RCC_ConfigMCO\n + * CFGR MCO2 LL_RCC_ConfigMCO\n + * CFGR MCO2PRE LL_RCC_ConfigMCO + * @param MCOxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO1SOURCE_HSI + * @arg @ref LL_RCC_MCO1SOURCE_LSE + * @arg @ref LL_RCC_MCO1SOURCE_HSE + * @arg @ref LL_RCC_MCO1SOURCE_PLLCLK + * @arg @ref LL_RCC_MCO2SOURCE_SYSCLK + * @arg @ref LL_RCC_MCO2SOURCE_PLLI2S + * @arg @ref LL_RCC_MCO2SOURCE_HSE + * @arg @ref LL_RCC_MCO2SOURCE_PLLCLK + * @param MCOxPrescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO1_DIV_1 + * @arg @ref LL_RCC_MCO1_DIV_2 + * @arg @ref LL_RCC_MCO1_DIV_3 + * @arg @ref LL_RCC_MCO1_DIV_4 + * @arg @ref LL_RCC_MCO1_DIV_5 + * @arg @ref LL_RCC_MCO2_DIV_1 + * @arg @ref LL_RCC_MCO2_DIV_2 + * @arg @ref LL_RCC_MCO2_DIV_3 + * @arg @ref LL_RCC_MCO2_DIV_4 + * @arg @ref LL_RCC_MCO2_DIV_5 + * @retval None + */ +__STATIC_INLINE void LL_RCC_ConfigMCO(uint32_t MCOxSource, uint32_t MCOxPrescaler) +{ + MODIFY_REG(RCC->CFGR, (MCOxSource & 0xFFFF0000U) | (MCOxPrescaler & 0xFFFF0000U), (MCOxSource << 16U) | (MCOxPrescaler << 16U)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_Peripheral_Clock_Source Peripheral Clock Source + * @{ + */ + +/** + * @brief Configure USARTx clock source + * @rmtoll DCKCFGR2 USART1SEL LL_RCC_SetUSARTClockSource\n + * DCKCFGR2 USART2SEL LL_RCC_SetUSARTClockSource\n + * DCKCFGR2 USART3SEL LL_RCC_SetUSARTClockSource\n + * DCKCFGR2 USART6SEL LL_RCC_SetUSARTClockSource + * @param USARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE_PCLK2 + * @arg @ref LL_RCC_USART1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART1_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART1_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_USART2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART2_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART2_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART3_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_USART3_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART3_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART3_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART6_CLKSOURCE_PCLK2 + * @arg @ref LL_RCC_USART6_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART6_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART6_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetUSARTClockSource(uint32_t USARTxSource) +{ + MODIFY_REG(RCC->DCKCFGR2, (USARTxSource >> 16U), (USARTxSource & 0x0000FFFFU)); +} + +/** + * @brief Configure UARTx clock source + * @rmtoll DCKCFGR2 UART4SEL LL_RCC_SetUARTClockSource\n + * DCKCFGR2 UART5SEL LL_RCC_SetUARTClockSource\n + * DCKCFGR2 UART7SEL LL_RCC_SetUARTClockSource\n + * DCKCFGR2 UART8SEL LL_RCC_SetUARTClockSource + * @param UARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_UART4_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART4_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART4_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART4_CLKSOURCE_LSE + * @arg @ref LL_RCC_UART5_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART5_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART5_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART5_CLKSOURCE_LSE + * @arg @ref LL_RCC_UART7_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART7_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART7_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART7_CLKSOURCE_LSE + * @arg @ref LL_RCC_UART8_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART8_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART8_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART8_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetUARTClockSource(uint32_t UARTxSource) +{ + MODIFY_REG(RCC->DCKCFGR2, (UARTxSource >> 16U), (UARTxSource & 0x0000FFFFU)); +} + +/** + * @brief Configure I2Cx clock source + * @rmtoll DCKCFGR2 I2C1SEL LL_RCC_SetI2CClockSource\n + * DCKCFGR2 I2C2SEL LL_RCC_SetI2CClockSource\n + * DCKCFGR2 I2C3SEL LL_RCC_SetI2CClockSource\n + * DCKCFGR2 I2C4SEL LL_RCC_SetI2CClockSource + * @param I2CxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C1_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C2_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C3_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C3_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C3_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_I2C4_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetI2CClockSource(uint32_t I2CxSource) +{ + MODIFY_REG(RCC->DCKCFGR2, (I2CxSource & 0xFFFF0000U), (I2CxSource << 16U)); +} + +/** + * @brief Configure LPTIMx clock source + * @rmtoll DCKCFGR2 LPTIM1SEL LL_RCC_SetLPTIMClockSource + * @param LPTIMxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetLPTIMClockSource(uint32_t LPTIMxSource) +{ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_LPTIM1SEL, LPTIMxSource); +} + +/** + * @brief Configure SAIx clock source + * @rmtoll DCKCFGR1 SAI1SEL LL_RCC_SetSAIClockSource\n + * DCKCFGR1 SAI2SEL LL_RCC_SetSAIClockSource + * @param SAIxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSAI + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLI2S + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PIN + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSRC (*) + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSAI + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLI2S + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PIN + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSRC (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSAIClockSource(uint32_t SAIxSource) +{ + MODIFY_REG(RCC->DCKCFGR1, (SAIxSource & 0xFFFF0000U), (SAIxSource << 16U)); +} + +/** + * @brief Configure SDMMC clock source + * @rmtoll DCKCFGR2 SDMMC1SEL LL_RCC_SetSDMMCClockSource\n + * DCKCFGR2 SDMMC2SEL LL_RCC_SetSDMMCClockSource + * @param SDMMCxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK (*) + * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_SYSCLK (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSDMMCClockSource(uint32_t SDMMCxSource) +{ + MODIFY_REG(RCC->DCKCFGR2, (SDMMCxSource & 0xFFFF0000U), (SDMMCxSource << 16U)); +} + +/** + * @brief Configure 48Mhz domain clock source + * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_SetCK48MClockSource + * @param CK48MxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLL + * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLLSAI + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetCK48MClockSource(uint32_t CK48MxSource) +{ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, CK48MxSource); +} + +/** + * @brief Configure RNG clock source + * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_SetRNGClockSource + * @param RNGxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL + * @arg @ref LL_RCC_RNG_CLKSOURCE_PLLSAI + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRNGClockSource(uint32_t RNGxSource) +{ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, RNGxSource); +} + +/** + * @brief Configure USB clock source + * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_SetUSBClockSource + * @param USBxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL + * @arg @ref LL_RCC_USB_CLKSOURCE_PLLSAI + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetUSBClockSource(uint32_t USBxSource) +{ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, USBxSource); +} + +#if defined(CEC) +/** + * @brief Configure CEC clock source + * @rmtoll DCKCFGR2 CECSEL LL_RCC_SetCECClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE + * @arg @ref LL_RCC_CEC_CLKSOURCE_HSI_DIV488 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetCECClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CECSEL, Source); +} +#endif /* CEC */ + +/** + * @brief Configure I2S clock source + * @rmtoll CFGR I2SSRC LL_RCC_SetI2SClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PLLI2S + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PIN + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetI2SClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_I2SSRC, Source); +} + +#if defined(DSI) +/** + * @brief Configure DSI clock source + * @rmtoll DCKCFGR2 DSISEL LL_RCC_SetDSIClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY + * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetDSIClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_DSISEL, Source); +} +#endif /* DSI */ + +#if defined(DFSDM1_Channel0) +/** + * @brief Configure DFSDM Audio clock source + * @rmtoll DCKCFGR1 ADFSDM1SEL LL_RCC_SetDFSDMAudioClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetDFSDMAudioClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_ADFSDM1SEL, Source); +} + +/** + * @brief Configure DFSDM Kernel clock source + * @rmtoll DCKCFGR1 DFSDM1SEL LL_RCC_SetDFSDMClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2 + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetDFSDMClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_DFSDM1SEL, Source); +} +#endif /* DFSDM1_Channel0 */ + +/** + * @brief Get USARTx clock source + * @rmtoll DCKCFGR2 USART1SEL LL_RCC_GetUSARTClockSource\n + * DCKCFGR2 USART2SEL LL_RCC_GetUSARTClockSource\n + * DCKCFGR2 USART3SEL LL_RCC_GetUSARTClockSource\n + * DCKCFGR2 USART6SEL LL_RCC_GetUSARTClockSource + * @param USARTx This parameter can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE + * @arg @ref LL_RCC_USART2_CLKSOURCE + * @arg @ref LL_RCC_USART3_CLKSOURCE + * @arg @ref LL_RCC_USART6_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE_PCLK2 + * @arg @ref LL_RCC_USART1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART1_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART1_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_USART2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART2_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART2_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART3_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_USART3_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART3_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART3_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART6_CLKSOURCE_PCLK2 + * @arg @ref LL_RCC_USART6_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART6_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART6_CLKSOURCE_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetUSARTClockSource(uint32_t USARTx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR2, USARTx) | (USARTx << 16U)); +} + +/** + * @brief Get UARTx clock source + * @rmtoll DCKCFGR2 UART4SEL LL_RCC_GetUARTClockSource\n + * DCKCFGR2 UART5SEL LL_RCC_GetUARTClockSource\n + * DCKCFGR2 UART7SEL LL_RCC_GetUARTClockSource\n + * DCKCFGR2 UART8SEL LL_RCC_GetUARTClockSource + * @param UARTx This parameter can be one of the following values: + * @arg @ref LL_RCC_UART4_CLKSOURCE + * @arg @ref LL_RCC_UART5_CLKSOURCE + * @arg @ref LL_RCC_UART7_CLKSOURCE + * @arg @ref LL_RCC_UART8_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_UART4_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART4_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART4_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART4_CLKSOURCE_LSE + * @arg @ref LL_RCC_UART5_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART5_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART5_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART5_CLKSOURCE_LSE + * @arg @ref LL_RCC_UART7_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART7_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART7_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART7_CLKSOURCE_LSE + * @arg @ref LL_RCC_UART8_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART8_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART8_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART8_CLKSOURCE_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetUARTClockSource(uint32_t UARTx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR2, UARTx) | (UARTx << 16U)); +} + +/** + * @brief Get I2Cx clock source + * @rmtoll DCKCFGR2 I2C1SEL LL_RCC_GetI2CClockSource\n + * DCKCFGR2 I2C2SEL LL_RCC_GetI2CClockSource\n + * DCKCFGR2 I2C3SEL LL_RCC_GetI2CClockSource\n + * DCKCFGR2 I2C4SEL LL_RCC_GetI2CClockSource + * @param I2Cx This parameter can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE + * @arg @ref LL_RCC_I2C2_CLKSOURCE + * @arg @ref LL_RCC_I2C3_CLKSOURCE + * @arg @ref LL_RCC_I2C4_CLKSOURCE (*) + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C1_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C2_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C3_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C3_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C3_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_I2C4_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetI2CClockSource(uint32_t I2Cx) +{ + return (uint32_t)((READ_BIT(RCC->DCKCFGR2, I2Cx) >> 16U) | I2Cx); +} + +/** + * @brief Get LPTIMx clock source + * @rmtoll DCKCFGR2 LPTIM1SEL LL_RCC_GetLPTIMClockSource + * @param LPTIMx This parameter can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetLPTIMClockSource(uint32_t LPTIMx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_LPTIM1SEL)); +} + +/** + * @brief Get SAIx clock source + * @rmtoll DCKCFGR1 SAI1SEL LL_RCC_GetSAIClockSource\n + * DCKCFGR1 SAI2SEL LL_RCC_GetSAIClockSource + * @param SAIx This parameter can be one of the following values: + * @arg @ref LL_RCC_SAI1_CLKSOURCE + * @arg @ref LL_RCC_SAI2_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSAI + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLI2S + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PIN + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSRC (*) + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSAI + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLI2S + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PIN + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSRC (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetSAIClockSource(uint32_t SAIx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR1, SAIx) >> 16U | SAIx); +} + +/** + * @brief Get SDMMCx clock source + * @rmtoll DCKCFGR2 SDMMC1SEL LL_RCC_GetSDMMCClockSource\n + * DCKCFGR2 SDMMC2SEL LL_RCC_GetSDMMCClockSource + * @param SDMMCx This parameter can be one of the following values: + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE (*) + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK (*) + * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_SYSCLK (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetSDMMCClockSource(uint32_t SDMMCx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR2, SDMMCx) >> 16U | SDMMCx); +} + +/** + * @brief Get 48Mhz domain clock source + * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_GetCK48MClockSource + * @param CK48Mx This parameter can be one of the following values: + * @arg @ref LL_RCC_CK48M_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLL + * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLLSAI + */ +__STATIC_INLINE uint32_t LL_RCC_GetCK48MClockSource(uint32_t CK48Mx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR2, CK48Mx)); +} + +/** + * @brief Get RNGx clock source + * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_GetRNGClockSource + * @param RNGx This parameter can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL + * @arg @ref LL_RCC_RNG_CLKSOURCE_PLLSAI + */ +__STATIC_INLINE uint32_t LL_RCC_GetRNGClockSource(uint32_t RNGx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR2, RNGx)); +} + +/** + * @brief Get USBx clock source + * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_GetUSBClockSource + * @param USBx This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL + * @arg @ref LL_RCC_USB_CLKSOURCE_PLLSAI + */ +__STATIC_INLINE uint32_t LL_RCC_GetUSBClockSource(uint32_t USBx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR2, USBx)); +} + +#if defined(CEC) +/** + * @brief Get CEC Clock Source + * @rmtoll DCKCFGR2 CECSEL LL_RCC_GetCECClockSource + * @param CECx This parameter can be one of the following values: + * @arg @ref LL_RCC_CEC_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE + * @arg @ref LL_RCC_CEC_CLKSOURCE_HSI_DIV488 + */ +__STATIC_INLINE uint32_t LL_RCC_GetCECClockSource(uint32_t CECx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR2, CECx)); +} +#endif /* CEC */ + +/** + * @brief Get I2S Clock Source + * @rmtoll CFGR I2SSRC LL_RCC_GetI2SClockSource + * @param I2Sx This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PLLI2S + * @arg @ref LL_RCC_I2S1_CLKSOURCE_PIN + */ +__STATIC_INLINE uint32_t LL_RCC_GetI2SClockSource(uint32_t I2Sx) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, I2Sx)); +} + +#if defined(DFSDM1_Channel0) +/** + * @brief Get DFSDM Audio Clock Source + * @rmtoll DCKCFGR1 ADFSDM1SEL LL_RCC_GetDFSDMAudioClockSource + * @param DFSDMx This parameter can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2 + */ +__STATIC_INLINE uint32_t LL_RCC_GetDFSDMAudioClockSource(uint32_t DFSDMx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR1, DFSDMx)); +} + +/** + * @brief Get DFSDM Audio Clock Source + * @rmtoll DCKCFGR1 DFSDM1SEL LL_RCC_GetDFSDMClockSource + * @param DFSDMx This parameter can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2 + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK + */ +__STATIC_INLINE uint32_t LL_RCC_GetDFSDMClockSource(uint32_t DFSDMx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR1, DFSDMx)); +} +#endif /* DFSDM1_Channel0 */ + +#if defined(DSI) +/** + * @brief Get DSI Clock Source + * @rmtoll DCKCFGR2 DSISEL LL_RCC_GetDSIClockSource + * @param DSIx This parameter can be one of the following values: + * @arg @ref LL_RCC_DSI_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY + * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetDSIClockSource(uint32_t DSIx) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR2, DSIx)); +} +#endif /* DSI */ + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_RTC RTC + * @{ + */ + +/** + * @brief Set RTC Clock Source + * @note Once the RTC clock source has been selected, it cannot be changed anymore unless + * the Backup domain is reset, or unless a failure is detected on LSE (LSECSSD is + * set). The BDRST bit can be used to reset them. + * @rmtoll BDCR RTCSEL LL_RCC_SetRTCClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI + * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRTCClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, Source); +} + +/** + * @brief Get RTC Clock Source + * @rmtoll BDCR RTCSEL LL_RCC_GetRTCClockSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI + * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetRTCClockSource(void) +{ + return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)); +} + +/** + * @brief Enable RTC + * @rmtoll BDCR RTCEN LL_RCC_EnableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableRTC(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +} + +/** + * @brief Disable RTC + * @rmtoll BDCR RTCEN LL_RCC_DisableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableRTC(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +} + +/** + * @brief Check if RTC has been enabled or not + * @rmtoll BDCR RTCEN LL_RCC_IsEnabledRTC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledRTC(void) +{ + return (READ_BIT(RCC->BDCR, RCC_BDCR_RTCEN) == (RCC_BDCR_RTCEN)); +} + +/** + * @brief Force the Backup domain reset + * @rmtoll BDCR BDRST LL_RCC_ForceBackupDomainReset + * @retval None + */ +__STATIC_INLINE void LL_RCC_ForceBackupDomainReset(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_BDRST); +} + +/** + * @brief Release the Backup domain reset + * @rmtoll BDCR BDRST LL_RCC_ReleaseBackupDomainReset + * @retval None + */ +__STATIC_INLINE void LL_RCC_ReleaseBackupDomainReset(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST); +} + +/** + * @brief Set HSE Prescalers for RTC Clock + * @rmtoll CFGR RTCPRE LL_RCC_SetRTC_HSEPrescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_RTC_NOCLOCK + * @arg @ref LL_RCC_RTC_HSE_DIV_2 + * @arg @ref LL_RCC_RTC_HSE_DIV_3 + * @arg @ref LL_RCC_RTC_HSE_DIV_4 + * @arg @ref LL_RCC_RTC_HSE_DIV_5 + * @arg @ref LL_RCC_RTC_HSE_DIV_6 + * @arg @ref LL_RCC_RTC_HSE_DIV_7 + * @arg @ref LL_RCC_RTC_HSE_DIV_8 + * @arg @ref LL_RCC_RTC_HSE_DIV_9 + * @arg @ref LL_RCC_RTC_HSE_DIV_10 + * @arg @ref LL_RCC_RTC_HSE_DIV_11 + * @arg @ref LL_RCC_RTC_HSE_DIV_12 + * @arg @ref LL_RCC_RTC_HSE_DIV_13 + * @arg @ref LL_RCC_RTC_HSE_DIV_14 + * @arg @ref LL_RCC_RTC_HSE_DIV_15 + * @arg @ref LL_RCC_RTC_HSE_DIV_16 + * @arg @ref LL_RCC_RTC_HSE_DIV_17 + * @arg @ref LL_RCC_RTC_HSE_DIV_18 + * @arg @ref LL_RCC_RTC_HSE_DIV_19 + * @arg @ref LL_RCC_RTC_HSE_DIV_20 + * @arg @ref LL_RCC_RTC_HSE_DIV_21 + * @arg @ref LL_RCC_RTC_HSE_DIV_22 + * @arg @ref LL_RCC_RTC_HSE_DIV_23 + * @arg @ref LL_RCC_RTC_HSE_DIV_24 + * @arg @ref LL_RCC_RTC_HSE_DIV_25 + * @arg @ref LL_RCC_RTC_HSE_DIV_26 + * @arg @ref LL_RCC_RTC_HSE_DIV_27 + * @arg @ref LL_RCC_RTC_HSE_DIV_28 + * @arg @ref LL_RCC_RTC_HSE_DIV_29 + * @arg @ref LL_RCC_RTC_HSE_DIV_30 + * @arg @ref LL_RCC_RTC_HSE_DIV_31 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRTC_HSEPrescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_RTCPRE, Prescaler); +} + +/** + * @brief Get HSE Prescalers for RTC Clock + * @rmtoll CFGR RTCPRE LL_RCC_GetRTC_HSEPrescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RTC_NOCLOCK + * @arg @ref LL_RCC_RTC_HSE_DIV_2 + * @arg @ref LL_RCC_RTC_HSE_DIV_3 + * @arg @ref LL_RCC_RTC_HSE_DIV_4 + * @arg @ref LL_RCC_RTC_HSE_DIV_5 + * @arg @ref LL_RCC_RTC_HSE_DIV_6 + * @arg @ref LL_RCC_RTC_HSE_DIV_7 + * @arg @ref LL_RCC_RTC_HSE_DIV_8 + * @arg @ref LL_RCC_RTC_HSE_DIV_9 + * @arg @ref LL_RCC_RTC_HSE_DIV_10 + * @arg @ref LL_RCC_RTC_HSE_DIV_11 + * @arg @ref LL_RCC_RTC_HSE_DIV_12 + * @arg @ref LL_RCC_RTC_HSE_DIV_13 + * @arg @ref LL_RCC_RTC_HSE_DIV_14 + * @arg @ref LL_RCC_RTC_HSE_DIV_15 + * @arg @ref LL_RCC_RTC_HSE_DIV_16 + * @arg @ref LL_RCC_RTC_HSE_DIV_17 + * @arg @ref LL_RCC_RTC_HSE_DIV_18 + * @arg @ref LL_RCC_RTC_HSE_DIV_19 + * @arg @ref LL_RCC_RTC_HSE_DIV_20 + * @arg @ref LL_RCC_RTC_HSE_DIV_21 + * @arg @ref LL_RCC_RTC_HSE_DIV_22 + * @arg @ref LL_RCC_RTC_HSE_DIV_23 + * @arg @ref LL_RCC_RTC_HSE_DIV_24 + * @arg @ref LL_RCC_RTC_HSE_DIV_25 + * @arg @ref LL_RCC_RTC_HSE_DIV_26 + * @arg @ref LL_RCC_RTC_HSE_DIV_27 + * @arg @ref LL_RCC_RTC_HSE_DIV_28 + * @arg @ref LL_RCC_RTC_HSE_DIV_29 + * @arg @ref LL_RCC_RTC_HSE_DIV_30 + * @arg @ref LL_RCC_RTC_HSE_DIV_31 + */ +__STATIC_INLINE uint32_t LL_RCC_GetRTC_HSEPrescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_RTCPRE)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_TIM_CLOCK_PRESCALER TIM + * @{ + */ + +/** + * @brief Set Timers Clock Prescalers + * @rmtoll DCKCFGR1 TIMPRE LL_RCC_SetTIMPrescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_TIM_PRESCALER_TWICE + * @arg @ref LL_RCC_TIM_PRESCALER_FOUR_TIMES + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetTIMPrescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_TIMPRE, Prescaler); +} + +/** + * @brief Get Timers Clock Prescalers + * @rmtoll DCKCFGR1 TIMPRE LL_RCC_GetTIMPrescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_TIM_PRESCALER_TWICE + * @arg @ref LL_RCC_TIM_PRESCALER_FOUR_TIMES + */ +__STATIC_INLINE uint32_t LL_RCC_GetTIMPrescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_TIMPRE)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_PLL PLL + * @{ + */ + +/** + * @brief Enable PLL + * @rmtoll CR PLLON LL_RCC_PLL_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLLON); +} + +/** + * @brief Disable PLL + * @note Cannot be disabled if the PLL clock is used as the system clock + * @rmtoll CR PLLON LL_RCC_PLL_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLLON); +} + +/** + * @brief Check if PLL Ready + * @rmtoll CR PLLRDY LL_RCC_PLL_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void) +{ + return (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == (RCC_CR_PLLRDY)); +} + +/** + * @brief Configure PLL used for SYSCLK Domain + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLI2S and PLLSAI are disabled + * @note PLLN/PLLP can be written only when PLL is disabled + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_SYS\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_SYS\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_SYS\n + * PLLCFGR PLLP LL_RCC_PLL_ConfigDomain_SYS + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param PLLN Between 50 and 432 + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SYS(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLP, + Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); +} + +/** + * @brief Configure PLL used for 48Mhz domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLI2S and PLLSAI are disabled + * @note PLLN/PLLQ can be written only when PLL is disabled + * @note This can be selected for USB, RNG, SDMMC1 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_48M\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_48M\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_48M\n + * PLLCFGR PLLQ LL_RCC_PLL_ConfigDomain_48M + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param PLLN Between 50 and 432 + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @arg @ref LL_RCC_PLLQ_DIV_9 + * @arg @ref LL_RCC_PLLQ_DIV_10 + * @arg @ref LL_RCC_PLLQ_DIV_11 + * @arg @ref LL_RCC_PLLQ_DIV_12 + * @arg @ref LL_RCC_PLLQ_DIV_13 + * @arg @ref LL_RCC_PLLQ_DIV_14 + * @arg @ref LL_RCC_PLLQ_DIV_15 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_48M(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLQ, + Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLQ); +} + +#if defined(DSI) +/** + * @brief Configure PLL used for DSI clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLI2S and PLLSAI are disabled + * @note PLLN/PLLR can be written only when PLL is disabled + * @note This can be selected for DSI + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_DSI\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_DSI\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_DSI\n + * PLLCFGR PLLR LL_RCC_PLL_ConfigDomain_DSI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param PLLN Between 50 and 432 + * @param PLLR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLR_DIV_2 + * @arg @ref LL_RCC_PLLR_DIV_3 + * @arg @ref LL_RCC_PLLR_DIV_4 + * @arg @ref LL_RCC_PLLR_DIV_5 + * @arg @ref LL_RCC_PLLR_DIV_6 + * @arg @ref LL_RCC_PLLR_DIV_7 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_DSI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLR) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLR, + Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLR); +} +#endif /* DSI */ + +/** + * @brief Configure PLL clock source + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_SetMainSource + * @param PLLSource This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_SetMainSource(uint32_t PLLSource) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, PLLSource); +} + +/** + * @brief Get the oscillator used as PLL clock source. + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_GetMainSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetMainSource(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC)); +} + +/** + * @brief Get Main PLL multiplication factor for VCO + * @rmtoll PLLCFGR PLLN LL_RCC_PLL_GetN + * @retval Between 50 and 432 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetN(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); +} + +/** + * @brief Get Main PLL division factor for PLLP + * @rmtoll PLLCFGR PLLP LL_RCC_PLL_GetP + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetP(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP)); +} + +/** + * @brief Get Main PLL division factor for PLLQ + * @note used for PLL48MCLK selected for USB, RNG, SDMMC (48 MHz clock) + * @rmtoll PLLCFGR PLLQ LL_RCC_PLL_GetQ + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_3 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_5 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_7 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @arg @ref LL_RCC_PLLQ_DIV_9 + * @arg @ref LL_RCC_PLLQ_DIV_10 + * @arg @ref LL_RCC_PLLQ_DIV_11 + * @arg @ref LL_RCC_PLLQ_DIV_12 + * @arg @ref LL_RCC_PLLQ_DIV_13 + * @arg @ref LL_RCC_PLLQ_DIV_14 + * @arg @ref LL_RCC_PLLQ_DIV_15 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetQ(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ)); +} + +#if defined(RCC_PLLCFGR_PLLR) +/** + * @brief Get Main PLL division factor for PLLR + * @note used for PLLCLK (system clock) + * @rmtoll PLLCFGR PLLR LL_RCC_PLL_GetR + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLR_DIV_2 + * @arg @ref LL_RCC_PLLR_DIV_3 + * @arg @ref LL_RCC_PLLR_DIV_4 + * @arg @ref LL_RCC_PLLR_DIV_5 + * @arg @ref LL_RCC_PLLR_DIV_6 + * @arg @ref LL_RCC_PLLR_DIV_7 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetR(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR)); +} +#endif /* RCC_PLLCFGR_PLLR */ + +/** + * @brief Get Division factor for the main PLL and other PLL + * @rmtoll PLLCFGR PLLM LL_RCC_PLL_GetDivider + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetDivider(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM)); +} + +/** + * @brief Configure Spread Spectrum used for PLL + * @note These bits must be written before enabling PLL + * @rmtoll SSCGR MODPER LL_RCC_PLL_ConfigSpreadSpectrum\n + * SSCGR INCSTEP LL_RCC_PLL_ConfigSpreadSpectrum\n + * SSCGR SPREADSEL LL_RCC_PLL_ConfigSpreadSpectrum + * @param Mod Between Min_Data=0 and Max_Data=8191 + * @param Inc Between Min_Data=0 and Max_Data=32767 + * @param Sel This parameter can be one of the following values: + * @arg @ref LL_RCC_SPREAD_SELECT_CENTER + * @arg @ref LL_RCC_SPREAD_SELECT_DOWN + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigSpreadSpectrum(uint32_t Mod, uint32_t Inc, uint32_t Sel) +{ + MODIFY_REG(RCC->SSCGR, RCC_SSCGR_MODPER | RCC_SSCGR_INCSTEP | RCC_SSCGR_SPREADSEL, Mod | (Inc << RCC_SSCGR_INCSTEP_Pos) | Sel); +} + +/** + * @brief Get Spread Spectrum Modulation Period for PLL + * @rmtoll SSCGR MODPER LL_RCC_PLL_GetPeriodModulation + * @retval Between Min_Data=0 and Max_Data=8191 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetPeriodModulation(void) +{ + return (uint32_t)(READ_BIT(RCC->SSCGR, RCC_SSCGR_MODPER)); +} + +/** + * @brief Get Spread Spectrum Incrementation Step for PLL + * @note Must be written before enabling PLL + * @rmtoll SSCGR INCSTEP LL_RCC_PLL_GetStepIncrementation + * @retval Between Min_Data=0 and Max_Data=32767 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetStepIncrementation(void) +{ + return (uint32_t)(READ_BIT(RCC->SSCGR, RCC_SSCGR_INCSTEP) >> RCC_SSCGR_INCSTEP_Pos); +} + +/** + * @brief Get Spread Spectrum Selection for PLL + * @note Must be written before enabling PLL + * @rmtoll SSCGR SPREADSEL LL_RCC_PLL_GetSpreadSelection + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SPREAD_SELECT_CENTER + * @arg @ref LL_RCC_SPREAD_SELECT_DOWN + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetSpreadSelection(void) +{ + return (uint32_t)(READ_BIT(RCC->SSCGR, RCC_SSCGR_SPREADSEL)); +} + +/** + * @brief Enable Spread Spectrum for PLL. + * @rmtoll SSCGR SSCGEN LL_RCC_PLL_SpreadSpectrum_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_SpreadSpectrum_Enable(void) +{ + SET_BIT(RCC->SSCGR, RCC_SSCGR_SSCGEN); +} + +/** + * @brief Disable Spread Spectrum for PLL. + * @rmtoll SSCGR SSCGEN LL_RCC_PLL_SpreadSpectrum_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_SpreadSpectrum_Disable(void) +{ + CLEAR_BIT(RCC->SSCGR, RCC_SSCGR_SSCGEN); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_PLLI2S PLLI2S + * @{ + */ + +/** + * @brief Enable PLLI2S + * @rmtoll CR PLLI2SON LL_RCC_PLLI2S_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLI2S_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLLI2SON); +} + +/** + * @brief Disable PLLI2S + * @rmtoll CR PLLI2SON LL_RCC_PLLI2S_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLI2S_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLLI2SON); +} + +/** + * @brief Check if PLLI2S Ready + * @rmtoll CR PLLI2SRDY LL_RCC_PLLI2S_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLLI2S_IsReady(void) +{ + return (READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) == (RCC_CR_PLLI2SRDY)); +} + +/** + * @brief Configure PLLI2S used for SAI1 and SAI2 domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLI2S and PLLSAI are disabled + * @note PLLN/PLLQ can be written only when PLLI2S is disabled + * @note This can be selected for SAI1 and SAI2 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLI2S_ConfigDomain_SAI\n + * PLLCFGR PLLM LL_RCC_PLLI2S_ConfigDomain_SAI\n + * PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_ConfigDomain_SAI\n + * PLLI2SCFGR PLLI2SQ LL_RCC_PLLI2S_ConfigDomain_SAI\n + * DCKCFGR1 PLLI2SDIVQ LL_RCC_PLLI2S_ConfigDomain_SAI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param PLLN Between 50 and 432 + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLI2SQ_DIV_2 + * @arg @ref LL_RCC_PLLI2SQ_DIV_3 + * @arg @ref LL_RCC_PLLI2SQ_DIV_4 + * @arg @ref LL_RCC_PLLI2SQ_DIV_5 + * @arg @ref LL_RCC_PLLI2SQ_DIV_6 + * @arg @ref LL_RCC_PLLI2SQ_DIV_7 + * @arg @ref LL_RCC_PLLI2SQ_DIV_8 + * @arg @ref LL_RCC_PLLI2SQ_DIV_9 + * @arg @ref LL_RCC_PLLI2SQ_DIV_10 + * @arg @ref LL_RCC_PLLI2SQ_DIV_11 + * @arg @ref LL_RCC_PLLI2SQ_DIV_12 + * @arg @ref LL_RCC_PLLI2SQ_DIV_13 + * @arg @ref LL_RCC_PLLI2SQ_DIV_14 + * @arg @ref LL_RCC_PLLI2SQ_DIV_15 + * @param PLLDIVQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_1 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_2 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_3 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_4 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_5 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_6 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_7 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_8 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_9 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_10 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_11 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_12 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_13 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_14 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_15 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_16 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_17 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_18 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_19 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_20 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_21 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_22 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_23 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_24 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_25 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_26 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_27 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_28 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_29 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_30 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_31 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_32 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLI2S_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ, uint32_t PLLDIVQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN | RCC_PLLI2SCFGR_PLLI2SQ, PLLN << RCC_PLLI2SCFGR_PLLI2SN_Pos | PLLQ); + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLI2SDIVQ, PLLDIVQ); +} + +#if defined(SPDIFRX) +/** + * @brief Configure PLLI2S used for SPDIFRX domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLI2S and PLLSAI are disabled + * @note PLLN/PLLP can be written only when PLLI2S is disabled + * @note This can be selected for SPDIFRX + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLI2S_ConfigDomain_SPDIFRX\n + * PLLCFGR PLLM LL_RCC_PLLI2S_ConfigDomain_SPDIFRX\n + * PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_ConfigDomain_SPDIFRX\n + * PLLI2SCFGR PLLI2SP LL_RCC_PLLI2S_ConfigDomain_SPDIFRX + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param PLLN Between 50 and 432 + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLI2SP_DIV_2 + * @arg @ref LL_RCC_PLLI2SP_DIV_4 + * @arg @ref LL_RCC_PLLI2SP_DIV_6 + * @arg @ref LL_RCC_PLLI2SP_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLI2S_ConfigDomain_SPDIFRX(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN | RCC_PLLI2SCFGR_PLLI2SP, PLLN << RCC_PLLI2SCFGR_PLLI2SN_Pos | PLLP); +} +#endif /* SPDIFRX */ + +/** + * @brief Configure PLLI2S used for I2S1 domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLI2S and PLLSAI are disabled + * @note PLLN/PLLR can be written only when PLLI2S is disabled + * @note This can be selected for I2S + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLI2S_ConfigDomain_I2S\n + * PLLCFGR PLLM LL_RCC_PLLI2S_ConfigDomain_I2S\n + * PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_ConfigDomain_I2S\n + * PLLI2SCFGR PLLI2SR LL_RCC_PLLI2S_ConfigDomain_I2S + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param PLLN Between 50 and 432 + * @param PLLR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLI2SR_DIV_2 + * @arg @ref LL_RCC_PLLI2SR_DIV_3 + * @arg @ref LL_RCC_PLLI2SR_DIV_4 + * @arg @ref LL_RCC_PLLI2SR_DIV_5 + * @arg @ref LL_RCC_PLLI2SR_DIV_6 + * @arg @ref LL_RCC_PLLI2SR_DIV_7 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLI2S_ConfigDomain_I2S(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLR) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN | RCC_PLLI2SCFGR_PLLI2SR, PLLN << RCC_PLLI2SCFGR_PLLI2SN_Pos | PLLR); +} + +/** + * @brief Get I2SPLL multiplication factor for VCO + * @rmtoll PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_GetN + * @retval Between 50 and 432 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetN(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos); +} + +/** + * @brief Get I2SPLL division factor for PLLI2SQ + * @rmtoll PLLI2SCFGR PLLI2SQ LL_RCC_PLLI2S_GetQ + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLI2SQ_DIV_2 + * @arg @ref LL_RCC_PLLI2SQ_DIV_3 + * @arg @ref LL_RCC_PLLI2SQ_DIV_4 + * @arg @ref LL_RCC_PLLI2SQ_DIV_5 + * @arg @ref LL_RCC_PLLI2SQ_DIV_6 + * @arg @ref LL_RCC_PLLI2SQ_DIV_7 + * @arg @ref LL_RCC_PLLI2SQ_DIV_8 + * @arg @ref LL_RCC_PLLI2SQ_DIV_9 + * @arg @ref LL_RCC_PLLI2SQ_DIV_10 + * @arg @ref LL_RCC_PLLI2SQ_DIV_11 + * @arg @ref LL_RCC_PLLI2SQ_DIV_12 + * @arg @ref LL_RCC_PLLI2SQ_DIV_13 + * @arg @ref LL_RCC_PLLI2SQ_DIV_14 + * @arg @ref LL_RCC_PLLI2SQ_DIV_15 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetQ(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SQ)); +} + +/** + * @brief Get I2SPLL division factor for PLLI2SR + * @note used for PLLI2SCLK (I2S clock) + * @rmtoll PLLI2SCFGR PLLI2SR LL_RCC_PLLI2S_GetR + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLI2SR_DIV_2 + * @arg @ref LL_RCC_PLLI2SR_DIV_3 + * @arg @ref LL_RCC_PLLI2SR_DIV_4 + * @arg @ref LL_RCC_PLLI2SR_DIV_5 + * @arg @ref LL_RCC_PLLI2SR_DIV_6 + * @arg @ref LL_RCC_PLLI2SR_DIV_7 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetR(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SR)); +} + +#if defined(RCC_PLLI2SCFGR_PLLI2SP) +/** + * @brief Get I2SPLL division factor for PLLI2SP + * @note used for PLLSPDIFRXCLK (SPDIFRX clock) + * @rmtoll PLLI2SCFGR PLLI2SP LL_RCC_PLLI2S_GetP + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLI2SP_DIV_2 + * @arg @ref LL_RCC_PLLI2SP_DIV_4 + * @arg @ref LL_RCC_PLLI2SP_DIV_6 + * @arg @ref LL_RCC_PLLI2SP_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetP(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SP)); +} +#endif /* RCC_PLLI2SCFGR_PLLI2SP */ + +/** + * @brief Get I2SPLL division factor for PLLI2SDIVQ + * @note used PLLSAI1CLK, PLLSAI2CLK selected (SAI1 and SAI2 clock) + * @rmtoll DCKCFGR1 PLLI2SDIVQ LL_RCC_PLLI2S_GetDIVQ + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_1 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_2 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_3 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_4 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_5 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_6 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_7 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_8 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_9 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_10 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_11 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_12 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_13 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_14 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_15 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_16 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_17 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_18 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_19 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_20 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_21 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_22 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_23 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_24 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_25 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_26 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_27 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_28 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_29 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_30 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_31 + * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_32 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetDIVQ(void) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLI2SDIVQ)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_PLLSAI PLLSAI + * @{ + */ + +/** + * @brief Enable PLLSAI + * @rmtoll CR PLLSAION LL_RCC_PLLSAI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLLSAION); +} + +/** + * @brief Disable PLLSAI + * @rmtoll CR PLLSAION LL_RCC_PLLSAI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLLSAION); +} + +/** + * @brief Check if PLLSAI Ready + * @rmtoll CR PLLSAIRDY LL_RCC_PLLSAI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI_IsReady(void) +{ + return (READ_BIT(RCC->CR, RCC_CR_PLLSAIRDY) == (RCC_CR_PLLSAIRDY)); +} + +/** + * @brief Configure PLLSAI used for SAI1 and SAI2 domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLI2S and PLLSAI are disabled + * @note PLLN/PLLQ can be written only when PLLSAI is disabled + * @note This can be selected for SAI1 and SAI2 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI_ConfigDomain_SAI\n + * PLLCFGR PLLM LL_RCC_PLLSAI_ConfigDomain_SAI\n + * PLLSAICFGR PLLSAIN LL_RCC_PLLSAI_ConfigDomain_SAI\n + * PLLSAICFGR PLLSAIQ LL_RCC_PLLSAI_ConfigDomain_SAI\n + * DCKCFGR1 PLLSAIDIVQ LL_RCC_PLLSAI_ConfigDomain_SAI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param PLLN Between 50 and 432 + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAIQ_DIV_2 + * @arg @ref LL_RCC_PLLSAIQ_DIV_3 + * @arg @ref LL_RCC_PLLSAIQ_DIV_4 + * @arg @ref LL_RCC_PLLSAIQ_DIV_5 + * @arg @ref LL_RCC_PLLSAIQ_DIV_6 + * @arg @ref LL_RCC_PLLSAIQ_DIV_7 + * @arg @ref LL_RCC_PLLSAIQ_DIV_8 + * @arg @ref LL_RCC_PLLSAIQ_DIV_9 + * @arg @ref LL_RCC_PLLSAIQ_DIV_10 + * @arg @ref LL_RCC_PLLSAIQ_DIV_11 + * @arg @ref LL_RCC_PLLSAIQ_DIV_12 + * @arg @ref LL_RCC_PLLSAIQ_DIV_13 + * @arg @ref LL_RCC_PLLSAIQ_DIV_14 + * @arg @ref LL_RCC_PLLSAIQ_DIV_15 + * @param PLLDIVQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_1 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_2 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_3 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_4 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_5 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_6 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_7 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_8 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_9 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_10 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_11 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_12 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_13 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_14 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_15 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_16 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_17 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_18 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_19 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_20 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_21 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_22 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_23 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_24 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_25 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_26 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_27 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_28 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_29 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_30 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_31 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_32 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ, uint32_t PLLDIVQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIN | RCC_PLLSAICFGR_PLLSAIQ, PLLN << RCC_PLLSAICFGR_PLLSAIN_Pos | PLLQ); + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVQ, PLLDIVQ); +} + +/** + * @brief Configure PLLSAI used for 48Mhz domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLI2S and PLLSAI are disabled + * @note PLLN/PLLP can be written only when PLLSAI is disabled + * @note This can be selected for USB, RNG, SDMMC1 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI_ConfigDomain_48M\n + * PLLCFGR PLLM LL_RCC_PLLSAI_ConfigDomain_48M\n + * PLLSAICFGR PLLSAIN LL_RCC_PLLSAI_ConfigDomain_48M\n + * PLLSAICFGR PLLSAIP LL_RCC_PLLSAI_ConfigDomain_48M + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param PLLN Between 50 and 432 + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAIP_DIV_2 + * @arg @ref LL_RCC_PLLSAIP_DIV_4 + * @arg @ref LL_RCC_PLLSAIP_DIV_6 + * @arg @ref LL_RCC_PLLSAIP_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI_ConfigDomain_48M(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIN | RCC_PLLSAICFGR_PLLSAIP, PLLN << RCC_PLLSAICFGR_PLLSAIN_Pos | PLLP); +} + +#if defined(LTDC) +/** + * @brief Configure PLLSAI used for LTDC domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLI2S and PLLSAI are disabled + * @note PLLN/PLLR can be written only when PLLSAI is disabled + * @note This can be selected for LTDC + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI_ConfigDomain_LTDC\n + * PLLCFGR PLLM LL_RCC_PLLSAI_ConfigDomain_LTDC\n + * PLLSAICFGR PLLSAIN LL_RCC_PLLSAI_ConfigDomain_LTDC\n + * PLLSAICFGR PLLSAIR LL_RCC_PLLSAI_ConfigDomain_LTDC\n + * DCKCFGR1 PLLSAIDIVR LL_RCC_PLLSAI_ConfigDomain_LTDC + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 + * @arg @ref LL_RCC_PLLM_DIV_10 + * @arg @ref LL_RCC_PLLM_DIV_11 + * @arg @ref LL_RCC_PLLM_DIV_12 + * @arg @ref LL_RCC_PLLM_DIV_13 + * @arg @ref LL_RCC_PLLM_DIV_14 + * @arg @ref LL_RCC_PLLM_DIV_15 + * @arg @ref LL_RCC_PLLM_DIV_16 + * @arg @ref LL_RCC_PLLM_DIV_17 + * @arg @ref LL_RCC_PLLM_DIV_18 + * @arg @ref LL_RCC_PLLM_DIV_19 + * @arg @ref LL_RCC_PLLM_DIV_20 + * @arg @ref LL_RCC_PLLM_DIV_21 + * @arg @ref LL_RCC_PLLM_DIV_22 + * @arg @ref LL_RCC_PLLM_DIV_23 + * @arg @ref LL_RCC_PLLM_DIV_24 + * @arg @ref LL_RCC_PLLM_DIV_25 + * @arg @ref LL_RCC_PLLM_DIV_26 + * @arg @ref LL_RCC_PLLM_DIV_27 + * @arg @ref LL_RCC_PLLM_DIV_28 + * @arg @ref LL_RCC_PLLM_DIV_29 + * @arg @ref LL_RCC_PLLM_DIV_30 + * @arg @ref LL_RCC_PLLM_DIV_31 + * @arg @ref LL_RCC_PLLM_DIV_32 + * @arg @ref LL_RCC_PLLM_DIV_33 + * @arg @ref LL_RCC_PLLM_DIV_34 + * @arg @ref LL_RCC_PLLM_DIV_35 + * @arg @ref LL_RCC_PLLM_DIV_36 + * @arg @ref LL_RCC_PLLM_DIV_37 + * @arg @ref LL_RCC_PLLM_DIV_38 + * @arg @ref LL_RCC_PLLM_DIV_39 + * @arg @ref LL_RCC_PLLM_DIV_40 + * @arg @ref LL_RCC_PLLM_DIV_41 + * @arg @ref LL_RCC_PLLM_DIV_42 + * @arg @ref LL_RCC_PLLM_DIV_43 + * @arg @ref LL_RCC_PLLM_DIV_44 + * @arg @ref LL_RCC_PLLM_DIV_45 + * @arg @ref LL_RCC_PLLM_DIV_46 + * @arg @ref LL_RCC_PLLM_DIV_47 + * @arg @ref LL_RCC_PLLM_DIV_48 + * @arg @ref LL_RCC_PLLM_DIV_49 + * @arg @ref LL_RCC_PLLM_DIV_50 + * @arg @ref LL_RCC_PLLM_DIV_51 + * @arg @ref LL_RCC_PLLM_DIV_52 + * @arg @ref LL_RCC_PLLM_DIV_53 + * @arg @ref LL_RCC_PLLM_DIV_54 + * @arg @ref LL_RCC_PLLM_DIV_55 + * @arg @ref LL_RCC_PLLM_DIV_56 + * @arg @ref LL_RCC_PLLM_DIV_57 + * @arg @ref LL_RCC_PLLM_DIV_58 + * @arg @ref LL_RCC_PLLM_DIV_59 + * @arg @ref LL_RCC_PLLM_DIV_60 + * @arg @ref LL_RCC_PLLM_DIV_61 + * @arg @ref LL_RCC_PLLM_DIV_62 + * @arg @ref LL_RCC_PLLM_DIV_63 + * @param PLLN Between 50 and 432 + * @param PLLR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAIR_DIV_2 + * @arg @ref LL_RCC_PLLSAIR_DIV_3 + * @arg @ref LL_RCC_PLLSAIR_DIV_4 + * @arg @ref LL_RCC_PLLSAIR_DIV_5 + * @arg @ref LL_RCC_PLLSAIR_DIV_6 + * @arg @ref LL_RCC_PLLSAIR_DIV_7 + * @param PLLDIVR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_2 + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_4 + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_8 + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI_ConfigDomain_LTDC(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLR, uint32_t PLLDIVR) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIN | RCC_PLLSAICFGR_PLLSAIR, PLLN << RCC_PLLSAICFGR_PLLSAIN_Pos | PLLR); + MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVR, PLLDIVR); +} +#endif /* LTDC */ + +/** + * @brief Get SAIPLL multiplication factor for VCO + * @rmtoll PLLSAICFGR PLLSAIN LL_RCC_PLLSAI_GetN + * @retval Between 50 and 432 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetN(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLSAICFGR_PLLSAIN_Pos); +} + +/** + * @brief Get SAIPLL division factor for PLLSAIQ + * @rmtoll PLLSAICFGR PLLSAIQ LL_RCC_PLLSAI_GetQ + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAIQ_DIV_2 + * @arg @ref LL_RCC_PLLSAIQ_DIV_3 + * @arg @ref LL_RCC_PLLSAIQ_DIV_4 + * @arg @ref LL_RCC_PLLSAIQ_DIV_5 + * @arg @ref LL_RCC_PLLSAIQ_DIV_6 + * @arg @ref LL_RCC_PLLSAIQ_DIV_7 + * @arg @ref LL_RCC_PLLSAIQ_DIV_8 + * @arg @ref LL_RCC_PLLSAIQ_DIV_9 + * @arg @ref LL_RCC_PLLSAIQ_DIV_10 + * @arg @ref LL_RCC_PLLSAIQ_DIV_11 + * @arg @ref LL_RCC_PLLSAIQ_DIV_12 + * @arg @ref LL_RCC_PLLSAIQ_DIV_13 + * @arg @ref LL_RCC_PLLSAIQ_DIV_14 + * @arg @ref LL_RCC_PLLSAIQ_DIV_15 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetQ(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIQ)); +} + +#if defined(RCC_PLLSAICFGR_PLLSAIR) +/** + * @brief Get SAIPLL division factor for PLLSAIR + * @note used for PLLSAICLK (SAI clock) + * @rmtoll PLLSAICFGR PLLSAIR LL_RCC_PLLSAI_GetR + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAIR_DIV_2 + * @arg @ref LL_RCC_PLLSAIR_DIV_3 + * @arg @ref LL_RCC_PLLSAIR_DIV_4 + * @arg @ref LL_RCC_PLLSAIR_DIV_5 + * @arg @ref LL_RCC_PLLSAIR_DIV_6 + * @arg @ref LL_RCC_PLLSAIR_DIV_7 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetR(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIR)); +} +#endif /* RCC_PLLSAICFGR_PLLSAIR */ + +/** + * @brief Get SAIPLL division factor for PLLSAIP + * @note used for PLL48MCLK (48M domain clock) + * @rmtoll PLLSAICFGR PLLSAIP LL_RCC_PLLSAI_GetP + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAIP_DIV_2 + * @arg @ref LL_RCC_PLLSAIP_DIV_4 + * @arg @ref LL_RCC_PLLSAIP_DIV_6 + * @arg @ref LL_RCC_PLLSAIP_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetP(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIP)); +} + +/** + * @brief Get SAIPLL division factor for PLLSAIDIVQ + * @note used PLLSAI1CLK, PLLSAI2CLK selected (SAI1 and SAI2 clock) + * @rmtoll DCKCFGR1 PLLSAIDIVQ LL_RCC_PLLSAI_GetDIVQ + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_1 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_2 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_3 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_4 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_5 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_6 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_7 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_8 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_9 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_10 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_11 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_12 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_13 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_14 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_15 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_16 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_17 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_18 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_19 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_20 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_21 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_22 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_23 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_24 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_25 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_26 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_27 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_28 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_29 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_30 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_31 + * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_32 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetDIVQ(void) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVQ)); +} + +#if defined(RCC_DCKCFGR1_PLLSAIDIVR) +/** + * @brief Get SAIPLL division factor for PLLSAIDIVR + * @note used for LTDC domain clock + * @rmtoll DCKCFGR1 PLLSAIDIVR LL_RCC_PLLSAI_GetDIVR + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_2 + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_4 + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_8 + * @arg @ref LL_RCC_PLLSAIDIVR_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetDIVR(void) +{ + return (uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVR)); +} +#endif /* RCC_DCKCFGR1_PLLSAIDIVR */ + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_FLAG_Management FLAG Management + * @{ + */ + +/** + * @brief Clear LSI ready interrupt flag + * @rmtoll CIR LSIRDYC LL_RCC_ClearFlag_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSIRDYC); +} + +/** + * @brief Clear LSE ready interrupt flag + * @rmtoll CIR LSERDYC LL_RCC_ClearFlag_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSERDYC); +} + +/** + * @brief Clear HSI ready interrupt flag + * @rmtoll CIR HSIRDYC LL_RCC_ClearFlag_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSIRDYC); +} + +/** + * @brief Clear HSE ready interrupt flag + * @rmtoll CIR HSERDYC LL_RCC_ClearFlag_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSERDYC); +} + +/** + * @brief Clear PLL ready interrupt flag + * @rmtoll CIR PLLRDYC LL_RCC_ClearFlag_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLLRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLLRDYC); +} + +/** + * @brief Clear PLLI2S ready interrupt flag + * @rmtoll CIR PLLI2SRDYC LL_RCC_ClearFlag_PLLI2SRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLLI2SRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLLI2SRDYC); +} + +/** + * @brief Clear PLLSAI ready interrupt flag + * @rmtoll CIR PLLSAIRDYC LL_RCC_ClearFlag_PLLSAIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLLSAIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLLSAIRDYC); +} + +/** + * @brief Clear Clock security system interrupt flag + * @rmtoll CIR CSSC LL_RCC_ClearFlag_HSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSECSS(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_CSSC); +} + +/** + * @brief Check if LSI ready interrupt occurred or not + * @rmtoll CIR LSIRDYF LL_RCC_IsActiveFlag_LSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSIRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_LSIRDYF) == (RCC_CIR_LSIRDYF)); +} + +/** + * @brief Check if LSE ready interrupt occurred or not + * @rmtoll CIR LSERDYF LL_RCC_IsActiveFlag_LSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSERDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_LSERDYF) == (RCC_CIR_LSERDYF)); +} + +/** + * @brief Check if HSI ready interrupt occurred or not + * @rmtoll CIR HSIRDYF LL_RCC_IsActiveFlag_HSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSIRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_HSIRDYF) == (RCC_CIR_HSIRDYF)); +} + +/** + * @brief Check if HSE ready interrupt occurred or not + * @rmtoll CIR HSERDYF LL_RCC_IsActiveFlag_HSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSERDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_HSERDYF) == (RCC_CIR_HSERDYF)); +} + +/** + * @brief Check if PLL ready interrupt occurred or not + * @rmtoll CIR PLLRDYF LL_RCC_IsActiveFlag_PLLRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLLRDYF) == (RCC_CIR_PLLRDYF)); +} + +/** + * @brief Check if PLLI2S ready interrupt occurred or not + * @rmtoll CIR PLLI2SRDYF LL_RCC_IsActiveFlag_PLLI2SRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLI2SRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLLI2SRDYF) == (RCC_CIR_PLLI2SRDYF)); +} + +/** + * @brief Check if PLLSAI ready interrupt occurred or not + * @rmtoll CIR PLLSAIRDYF LL_RCC_IsActiveFlag_PLLSAIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLSAIRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLLSAIRDYF) == (RCC_CIR_PLLSAIRDYF)); +} + +/** + * @brief Check if Clock security system interrupt occurred or not + * @rmtoll CIR CSSF LL_RCC_IsActiveFlag_HSECSS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSECSS(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_CSSF) == (RCC_CIR_CSSF)); +} + +/** + * @brief Check if RCC flag Independent Watchdog reset is set or not. + * @rmtoll CSR IWDGRSTF LL_RCC_IsActiveFlag_IWDGRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_IWDGRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_IWDGRSTF) == (RCC_CSR_IWDGRSTF)); +} + +/** + * @brief Check if RCC flag Low Power reset is set or not. + * @rmtoll CSR LPWRRSTF LL_RCC_IsActiveFlag_LPWRRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LPWRRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_LPWRRSTF) == (RCC_CSR_LPWRRSTF)); +} + +/** + * @brief Check if RCC flag Pin reset is set or not. + * @rmtoll CSR PINRSTF LL_RCC_IsActiveFlag_PINRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PINRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_PINRSTF) == (RCC_CSR_PINRSTF)); +} + +/** + * @brief Check if RCC flag POR/PDR reset is set or not. + * @rmtoll CSR PORRSTF LL_RCC_IsActiveFlag_PORRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PORRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_PORRSTF) == (RCC_CSR_PORRSTF)); +} + +/** + * @brief Check if RCC flag Software reset is set or not. + * @rmtoll CSR SFTRSTF LL_RCC_IsActiveFlag_SFTRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SFTRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_SFTRSTF) == (RCC_CSR_SFTRSTF)); +} + +/** + * @brief Check if RCC flag Window Watchdog reset is set or not. + * @rmtoll CSR WWDGRSTF LL_RCC_IsActiveFlag_WWDGRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_WWDGRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_WWDGRSTF) == (RCC_CSR_WWDGRSTF)); +} + +/** + * @brief Check if RCC flag BOR reset is set or not. + * @rmtoll CSR BORRSTF LL_RCC_IsActiveFlag_BORRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_BORRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_BORRSTF) == (RCC_CSR_BORRSTF)); +} + +/** + * @brief Set RMVF bit to clear the reset flags. + * @rmtoll CSR RMVF LL_RCC_ClearResetFlags + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearResetFlags(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_RMVF); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_IT_Management IT Management + * @{ + */ + +/** + * @brief Enable LSI ready interrupt + * @rmtoll CIR LSIRDYIE LL_RCC_EnableIT_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSIRDYIE); +} + +/** + * @brief Enable LSE ready interrupt + * @rmtoll CIR LSERDYIE LL_RCC_EnableIT_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSERDYIE); +} + +/** + * @brief Enable HSI ready interrupt + * @rmtoll CIR HSIRDYIE LL_RCC_EnableIT_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSIRDYIE); +} + +/** + * @brief Enable HSE ready interrupt + * @rmtoll CIR HSERDYIE LL_RCC_EnableIT_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSERDYIE); +} + +/** + * @brief Enable PLL ready interrupt + * @rmtoll CIR PLLRDYIE LL_RCC_EnableIT_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLLRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLLRDYIE); +} + +/** + * @brief Enable PLLI2S ready interrupt + * @rmtoll CIR PLLI2SRDYIE LL_RCC_EnableIT_PLLI2SRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLLI2SRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLLI2SRDYIE); +} + +/** + * @brief Enable PLLSAI ready interrupt + * @rmtoll CIR PLLSAIRDYIE LL_RCC_EnableIT_PLLSAIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLLSAIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLLSAIRDYIE); +} + +/** + * @brief Disable LSI ready interrupt + * @rmtoll CIR LSIRDYIE LL_RCC_DisableIT_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSIRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_LSIRDYIE); +} + +/** + * @brief Disable LSE ready interrupt + * @rmtoll CIR LSERDYIE LL_RCC_DisableIT_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSERDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_LSERDYIE); +} + +/** + * @brief Disable HSI ready interrupt + * @rmtoll CIR HSIRDYIE LL_RCC_DisableIT_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSIRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_HSIRDYIE); +} + +/** + * @brief Disable HSE ready interrupt + * @rmtoll CIR HSERDYIE LL_RCC_DisableIT_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSERDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_HSERDYIE); +} + +/** + * @brief Disable PLL ready interrupt + * @rmtoll CIR PLLRDYIE LL_RCC_DisableIT_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLLRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_PLLRDYIE); +} + +/** + * @brief Disable PLLI2S ready interrupt + * @rmtoll CIR PLLI2SRDYIE LL_RCC_DisableIT_PLLI2SRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLLI2SRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_PLLI2SRDYIE); +} + +/** + * @brief Disable PLLSAI ready interrupt + * @rmtoll CIR PLLSAIRDYIE LL_RCC_DisableIT_PLLSAIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLLSAIRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_PLLSAIRDYIE); +} + +/** + * @brief Checks if LSI ready interrupt source is enabled or disabled. + * @rmtoll CIR LSIRDYIE LL_RCC_IsEnabledIT_LSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSIRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_LSIRDYIE) == (RCC_CIR_LSIRDYIE)); +} + +/** + * @brief Checks if LSE ready interrupt source is enabled or disabled. + * @rmtoll CIR LSERDYIE LL_RCC_IsEnabledIT_LSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSERDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_LSERDYIE) == (RCC_CIR_LSERDYIE)); +} + +/** + * @brief Checks if HSI ready interrupt source is enabled or disabled. + * @rmtoll CIR HSIRDYIE LL_RCC_IsEnabledIT_HSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSIRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_HSIRDYIE) == (RCC_CIR_HSIRDYIE)); +} + +/** + * @brief Checks if HSE ready interrupt source is enabled or disabled. + * @rmtoll CIR HSERDYIE LL_RCC_IsEnabledIT_HSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSERDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_HSERDYIE) == (RCC_CIR_HSERDYIE)); +} + +/** + * @brief Checks if PLL ready interrupt source is enabled or disabled. + * @rmtoll CIR PLLRDYIE LL_RCC_IsEnabledIT_PLLRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLLRDYIE) == (RCC_CIR_PLLRDYIE)); +} + +/** + * @brief Checks if PLLI2S ready interrupt source is enabled or disabled. + * @rmtoll CIR PLLI2SRDYIE LL_RCC_IsEnabledIT_PLLI2SRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLI2SRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLLI2SRDYIE) == (RCC_CIR_PLLI2SRDYIE)); +} + +/** + * @brief Checks if PLLSAI ready interrupt source is enabled or disabled. + * @rmtoll CIR PLLSAIRDYIE LL_RCC_IsEnabledIT_PLLSAIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLSAIRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLLSAIRDYIE) == (RCC_CIR_PLLSAIRDYIE)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_RCC_DeInit(void); +/** + * @} + */ + +/** @defgroup RCC_LL_EF_Get_Freq Get system and peripherals clocks frequency functions + * @{ + */ +void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks); +uint32_t LL_RCC_GetUSARTClockFreq(uint32_t USARTxSource); +uint32_t LL_RCC_GetUARTClockFreq(uint32_t UARTxSource); +uint32_t LL_RCC_GetI2CClockFreq(uint32_t I2CxSource); +uint32_t LL_RCC_GetLPTIMClockFreq(uint32_t LPTIMxSource); +uint32_t LL_RCC_GetSAIClockFreq(uint32_t SAIxSource); +uint32_t LL_RCC_GetSDMMCClockFreq(uint32_t SDMMCxSource); +uint32_t LL_RCC_GetRNGClockFreq(uint32_t RNGxSource); +uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource); +#if defined(DFSDM1_Channel0) +uint32_t LL_RCC_GetDFSDMClockFreq(uint32_t DFSDMxSource); +uint32_t LL_RCC_GetDFSDMAudioClockFreq(uint32_t DFSDMxSource); +#endif /* DFSDM1_Channel0 */ +uint32_t LL_RCC_GetI2SClockFreq(uint32_t I2SxSource); +#if defined(CEC) +uint32_t LL_RCC_GetCECClockFreq(uint32_t CECxSource); +#endif /* CEC */ +#if defined(LTDC) +uint32_t LL_RCC_GetLTDCClockFreq(uint32_t LTDCxSource); +#endif /* LTDC */ +#if defined(SPDIFRX) +uint32_t LL_RCC_GetSPDIFRXClockFreq(uint32_t SPDIFRXxSource); +#endif /* SPDIFRX */ +#if defined(DSI) +uint32_t LL_RCC_GetDSIClockFreq(uint32_t DSIxSource); +#endif /* DSI */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RCC) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_RCC_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h new file mode 100644 index 0000000..4122a81 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h @@ -0,0 +1,1036 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_sdmmc.h + * @author MCD Application Team + * @brief Header file of SDMMC HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_LL_SDMMC_H +#define STM32F7xx_LL_SDMMC_H + +#ifdef __cplusplus + extern "C" { +#endif + +#if defined(SDMMC1) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal_def.h" + +/** @addtogroup STM32F7xx_Driver + * @{ + */ + +/** @addtogroup SDMMC_LL + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup SDMMC_LL_Exported_Types SDMMC_LL Exported Types + * @{ + */ + +/** + * @brief SDMMC Configuration Structure definition + */ +typedef struct +{ + uint32_t ClockEdge; /*!< Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref SDMMC_LL_Clock_Edge */ + + uint32_t ClockBypass; /*!< Specifies whether the SDMMC Clock divider bypass is + enabled or disabled. + This parameter can be a value of @ref SDMMC_LL_Clock_Bypass */ + + uint32_t ClockPowerSave; /*!< Specifies whether SDMMC Clock output is enabled or + disabled when the bus is idle. + This parameter can be a value of @ref SDMMC_LL_Clock_Power_Save */ + + uint32_t BusWide; /*!< Specifies the SDMMC bus width. + This parameter can be a value of @ref SDMMC_LL_Bus_Wide */ + + uint32_t HardwareFlowControl; /*!< Specifies whether the SDMMC hardware flow control is enabled or disabled. + This parameter can be a value of @ref SDMMC_LL_Hardware_Flow_Control */ + + uint32_t ClockDiv; /*!< Specifies the clock frequency of the SDMMC controller. + This parameter can be a value between Min_Data = 0 and Max_Data = 255 */ + +}SDMMC_InitTypeDef; + + +/** + * @brief SDMMC Command Control structure + */ +typedef struct +{ + uint32_t Argument; /*!< Specifies the SDMMC command argument which is sent + to a card as part of a command message. If a command + contains an argument, it must be loaded into this register + before writing the command to the command register. */ + + uint32_t CmdIndex; /*!< Specifies the SDMMC command index. It must be Min_Data = 0 and + Max_Data = 64 */ + + uint32_t Response; /*!< Specifies the SDMMC response type. + This parameter can be a value of @ref SDMMC_LL_Response_Type */ + + uint32_t WaitForInterrupt; /*!< Specifies whether SDMMC wait for interrupt request is + enabled or disabled. + This parameter can be a value of @ref SDMMC_LL_Wait_Interrupt_State */ + + uint32_t CPSM; /*!< Specifies whether SDMMC Command path state machine (CPSM) + is enabled or disabled. + This parameter can be a value of @ref SDMMC_LL_CPSM_State */ +}SDMMC_CmdInitTypeDef; + + +/** + * @brief SDMMC Data Control structure + */ +typedef struct +{ + uint32_t DataTimeOut; /*!< Specifies the data timeout period in card bus clock periods. */ + + uint32_t DataLength; /*!< Specifies the number of data bytes to be transferred. */ + + uint32_t DataBlockSize; /*!< Specifies the data block size for block transfer. + This parameter can be a value of @ref SDMMC_LL_Data_Block_Size */ + + uint32_t TransferDir; /*!< Specifies the data transfer direction, whether the transfer + is a read or write. + This parameter can be a value of @ref SDMMC_LL_Transfer_Direction */ + + uint32_t TransferMode; /*!< Specifies whether data transfer is in stream or block mode. + This parameter can be a value of @ref SDMMC_LL_Transfer_Type */ + + uint32_t DPSM; /*!< Specifies whether SDMMC Data path state machine (DPSM) + is enabled or disabled. + This parameter can be a value of @ref SDMMC_LL_DPSM_State */ +}SDMMC_DataInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SDMMC_LL_Exported_Constants SDMMC_LL Exported Constants + * @{ + */ +#define SDMMC_ERROR_NONE 0x00000000U /*!< No error */ +#define SDMMC_ERROR_CMD_CRC_FAIL 0x00000001U /*!< Command response received (but CRC check failed) */ +#define SDMMC_ERROR_DATA_CRC_FAIL 0x00000002U /*!< Data block sent/received (CRC check failed) */ +#define SDMMC_ERROR_CMD_RSP_TIMEOUT 0x00000004U /*!< Command response timeout */ +#define SDMMC_ERROR_DATA_TIMEOUT 0x00000008U /*!< Data timeout */ +#define SDMMC_ERROR_TX_UNDERRUN 0x00000010U /*!< Transmit FIFO underrun */ +#define SDMMC_ERROR_RX_OVERRUN 0x00000020U /*!< Receive FIFO overrun */ +#define SDMMC_ERROR_ADDR_MISALIGNED 0x00000040U /*!< Misaligned address */ +#define SDMMC_ERROR_BLOCK_LEN_ERR 0x00000080U /*!< Transferred block length is not allowed for the card or the + number of transferred bytes does not match the block length */ +#define SDMMC_ERROR_ERASE_SEQ_ERR 0x00000100U /*!< An error in the sequence of erase command occurs */ +#define SDMMC_ERROR_BAD_ERASE_PARAM 0x00000200U /*!< An invalid selection for erase groups */ +#define SDMMC_ERROR_WRITE_PROT_VIOLATION 0x00000400U /*!< Attempt to program a write protect block */ +#define SDMMC_ERROR_LOCK_UNLOCK_FAILED 0x00000800U /*!< Sequence or password error has been detected in unlock + command or if there was an attempt to access a locked card */ +#define SDMMC_ERROR_COM_CRC_FAILED 0x00001000U /*!< CRC check of the previous command failed */ +#define SDMMC_ERROR_ILLEGAL_CMD 0x00002000U /*!< Command is not legal for the card state */ +#define SDMMC_ERROR_CARD_ECC_FAILED 0x00004000U /*!< Card internal ECC was applied but failed to correct the data */ +#define SDMMC_ERROR_CC_ERR 0x00008000U /*!< Internal card controller error */ +#define SDMMC_ERROR_GENERAL_UNKNOWN_ERR 0x00010000U /*!< General or unknown error */ +#define SDMMC_ERROR_STREAM_READ_UNDERRUN 0x00020000U /*!< The card could not sustain data reading in stream rmode */ +#define SDMMC_ERROR_STREAM_WRITE_OVERRUN 0x00040000U /*!< The card could not sustain data programming in stream mode */ +#define SDMMC_ERROR_CID_CSD_OVERWRITE 0x00080000U /*!< CID/CSD overwrite error */ +#define SDMMC_ERROR_WP_ERASE_SKIP 0x00100000U /*!< Only partial address space was erased */ +#define SDMMC_ERROR_CARD_ECC_DISABLED 0x00200000U /*!< Command has been executed without using internal ECC */ +#define SDMMC_ERROR_ERASE_RESET 0x00400000U /*!< Erase sequence was cleared before executing because an out + of erase sequence command was received */ +#define SDMMC_ERROR_AKE_SEQ_ERR 0x00800000U /*!< Error in sequence of authentication */ +#define SDMMC_ERROR_INVALID_VOLTRANGE 0x01000000U /*!< Error in case of invalid voltage range */ +#define SDMMC_ERROR_ADDR_OUT_OF_RANGE 0x02000000U /*!< Error when addressed block is out of range */ +#define SDMMC_ERROR_REQUEST_NOT_APPLICABLE 0x04000000U /*!< Error when command request is not applicable */ +#define SDMMC_ERROR_INVALID_PARAMETER 0x08000000U /*!< the used parameter is not valid */ +#define SDMMC_ERROR_UNSUPPORTED_FEATURE 0x10000000U /*!< Error when feature is not insupported */ +#define SDMMC_ERROR_BUSY 0x20000000U /*!< Error when transfer process is busy */ +#define SDMMC_ERROR_DMA 0x40000000U /*!< Error while DMA transfer */ +#define SDMMC_ERROR_TIMEOUT 0x80000000U /*!< Timeout error */ + +/** + * @brief SDMMC Commands Index + */ +#define SDMMC_CMD_GO_IDLE_STATE 0U /*!< Resets the SD memory card. */ +#define SDMMC_CMD_SEND_OP_COND 1U /*!< Sends host capacity support information and activates the card's initialization process. */ +#define SDMMC_CMD_ALL_SEND_CID 2U /*!< Asks any card connected to the host to send the CID numbers on the CMD line. */ +#define SDMMC_CMD_SET_REL_ADDR 3U /*!< Asks the card to publish a new relative address (RCA). */ +#define SDMMC_CMD_SET_DSR 4U /*!< Programs the DSR of all cards. */ +#define SDMMC_CMD_SDMMC_SEN_OP_COND 5U /*!< Sends host capacity support information (HCS) and asks the accessed card to send its + operating condition register (OCR) content in the response on the CMD line. */ +#define SDMMC_CMD_HS_SWITCH 6U /*!< Checks switchable function (mode 0) and switch card function (mode 1). */ +#define SDMMC_CMD_SEL_DESEL_CARD 7U /*!< Selects the card by its own relative address and gets deselected by any other address */ +#define SDMMC_CMD_HS_SEND_EXT_CSD 8U /*!< Sends SD Memory Card interface condition, which includes host supply voltage information + and asks the card whether card supports voltage. */ +#define SDMMC_CMD_SEND_CSD 9U /*!< Addressed card sends its card specific data (CSD) on the CMD line. */ +#define SDMMC_CMD_SEND_CID 10U /*!< Addressed card sends its card identification (CID) on the CMD line. */ +#define SDMMC_CMD_READ_DAT_UNTIL_STOP 11U /*!< SD card doesn't support it. */ +#define SDMMC_CMD_STOP_TRANSMISSION 12U /*!< Forces the card to stop transmission. */ +#define SDMMC_CMD_SEND_STATUS 13U /*!< Addressed card sends its status register. */ +#define SDMMC_CMD_HS_BUSTEST_READ 14U /*!< Reserved */ +#define SDMMC_CMD_GO_INACTIVE_STATE 15U /*!< Sends an addressed card into the inactive state. */ +#define SDMMC_CMD_SET_BLOCKLEN 16U /*!< Sets the block length (in bytes for SDSC) for all following block commands + (read, write, lock). Default block length is fixed to 512 Bytes. Not effective + for SDHS and SDXC. */ +#define SDMMC_CMD_READ_SINGLE_BLOCK 17U /*!< Reads single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of + fixed 512 bytes in case of SDHC and SDXC. */ +#define SDMMC_CMD_READ_MULT_BLOCK 18U /*!< Continuously transfers data blocks from card to host until interrupted by + STOP_TRANSMISSION command. */ +#define SDMMC_CMD_HS_BUSTEST_WRITE 19U /*!< 64 bytes tuning pattern is sent for SDR50 and SDR104. */ +#define SDMMC_CMD_WRITE_DAT_UNTIL_STOP 20U /*!< Speed class control command. */ +#define SDMMC_CMD_SET_BLOCK_COUNT 23U /*!< Specify block count for CMD18 and CMD25. */ +#define SDMMC_CMD_WRITE_SINGLE_BLOCK 24U /*!< Writes single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of + fixed 512 bytes in case of SDHC and SDXC. */ +#define SDMMC_CMD_WRITE_MULT_BLOCK 25U /*!< Continuously writes blocks of data until a STOP_TRANSMISSION follows. */ +#define SDMMC_CMD_PROG_CID 26U /*!< Reserved for manufacturers. */ +#define SDMMC_CMD_PROG_CSD 27U /*!< Programming of the programmable bits of the CSD. */ +#define SDMMC_CMD_SET_WRITE_PROT 28U /*!< Sets the write protection bit of the addressed group. */ +#define SDMMC_CMD_CLR_WRITE_PROT 29U /*!< Clears the write protection bit of the addressed group. */ +#define SDMMC_CMD_SEND_WRITE_PROT 30U /*!< Asks the card to send the status of the write protection bits. */ +#define SDMMC_CMD_SD_ERASE_GRP_START 32U /*!< Sets the address of the first write block to be erased. (For SD card only). */ +#define SDMMC_CMD_SD_ERASE_GRP_END 33U /*!< Sets the address of the last write block of the continuous range to be erased. */ +#define SDMMC_CMD_ERASE_GRP_START 35U /*!< Sets the address of the first write block to be erased. Reserved for each command + system set by switch function command (CMD6). */ +#define SDMMC_CMD_ERASE_GRP_END 36U /*!< Sets the address of the last write block of the continuous range to be erased. + Reserved for each command system set by switch function command (CMD6). */ +#define SDMMC_CMD_ERASE 38U /*!< Reserved for SD security applications. */ +#define SDMMC_CMD_FAST_IO 39U /*!< SD card doesn't support it (Reserved). */ +#define SDMMC_CMD_GO_IRQ_STATE 40U /*!< SD card doesn't support it (Reserved). */ +#define SDMMC_CMD_LOCK_UNLOCK 42U /*!< Sets/resets the password or lock/unlock the card. The size of the data block is set by + the SET_BLOCK_LEN command. */ +#define SDMMC_CMD_APP_CMD 55U /*!< Indicates to the card that the next command is an application specific command rather + than a standard command. */ +#define SDMMC_CMD_GEN_CMD 56U /*!< Used either to transfer a data block to the card or to get a data block from the card + for general purpose/application specific commands. */ +#define SDMMC_CMD_NO_CMD 64U /*!< No command */ + +/** + * @brief Following commands are SD Card Specific commands. + * SDMMC_APP_CMD should be sent before sending these commands. + */ +#define SDMMC_CMD_APP_SD_SET_BUSWIDTH 6U /*!< (ACMD6) Defines the data bus width to be used for data transfer. The allowed data bus + widths are given in SCR register. */ +#define SDMMC_CMD_SD_APP_STATUS 13U /*!< (ACMD13) Sends the SD status. */ +#define SDMMC_CMD_SD_APP_SEND_NUM_WRITE_BLOCKS 22U /*!< (ACMD22) Sends the number of the written (without errors) write blocks. Responds with + 32bit+CRC data block. */ +#define SDMMC_CMD_SD_APP_OP_COND 41U /*!< (ACMD41) Sends host capacity support information (HCS) and asks the accessed card to + send its operating condition register (OCR) content in the response on the CMD line. */ +#define SDMMC_CMD_SD_APP_SET_CLR_CARD_DETECT 42U /*!< (ACMD42) Connect/Disconnect the 50 KOhm pull-up resistor on CD/DAT3 (pin 1) of the card */ +#define SDMMC_CMD_SD_APP_SEND_SCR 51U /*!< Reads the SD Configuration Register (SCR). */ +#define SDMMC_CMD_SDMMC_RW_DIRECT 52U /*!< For SD I/O card only, reserved for security specification. */ +#define SDMMC_CMD_SDMMC_RW_EXTENDED 53U /*!< For SD I/O card only, reserved for security specification. */ + +/** + * @brief Following commands are SD Card Specific security commands. + * SDMMC_CMD_APP_CMD should be sent before sending these commands. + */ +#define SDMMC_CMD_SD_APP_GET_MKB 43U +#define SDMMC_CMD_SD_APP_GET_MID 44U +#define SDMMC_CMD_SD_APP_SET_CER_RN1 45U +#define SDMMC_CMD_SD_APP_GET_CER_RN2 46U +#define SDMMC_CMD_SD_APP_SET_CER_RES2 47U +#define SDMMC_CMD_SD_APP_GET_CER_RES1 48U +#define SDMMC_CMD_SD_APP_SECURE_READ_MULTIPLE_BLOCK 18U +#define SDMMC_CMD_SD_APP_SECURE_WRITE_MULTIPLE_BLOCK 25U +#define SDMMC_CMD_SD_APP_SECURE_ERASE 38U +#define SDMMC_CMD_SD_APP_CHANGE_SECURE_AREA 49U +#define SDMMC_CMD_SD_APP_SECURE_WRITE_MKB 48U + +/** + * @brief Masks for errors Card Status R1 (OCR Register) + */ +#define SDMMC_OCR_ADDR_OUT_OF_RANGE 0x80000000U +#define SDMMC_OCR_ADDR_MISALIGNED 0x40000000U +#define SDMMC_OCR_BLOCK_LEN_ERR 0x20000000U +#define SDMMC_OCR_ERASE_SEQ_ERR 0x10000000U +#define SDMMC_OCR_BAD_ERASE_PARAM 0x08000000U +#define SDMMC_OCR_WRITE_PROT_VIOLATION 0x04000000U +#define SDMMC_OCR_LOCK_UNLOCK_FAILED 0x01000000U +#define SDMMC_OCR_COM_CRC_FAILED 0x00800000U +#define SDMMC_OCR_ILLEGAL_CMD 0x00400000U +#define SDMMC_OCR_CARD_ECC_FAILED 0x00200000U +#define SDMMC_OCR_CC_ERROR 0x00100000U +#define SDMMC_OCR_GENERAL_UNKNOWN_ERROR 0x00080000U +#define SDMMC_OCR_STREAM_READ_UNDERRUN 0x00040000U +#define SDMMC_OCR_STREAM_WRITE_OVERRUN 0x00020000U +#define SDMMC_OCR_CID_CSD_OVERWRITE 0x00010000U +#define SDMMC_OCR_WP_ERASE_SKIP 0x00008000U +#define SDMMC_OCR_CARD_ECC_DISABLED 0x00004000U +#define SDMMC_OCR_ERASE_RESET 0x00002000U +#define SDMMC_OCR_AKE_SEQ_ERROR 0x00000008U +#define SDMMC_OCR_ERRORBITS 0xFDFFE008U + +/** + * @brief Masks for R6 Response + */ +#define SDMMC_R6_GENERAL_UNKNOWN_ERROR 0x00002000U +#define SDMMC_R6_ILLEGAL_CMD 0x00004000U +#define SDMMC_R6_COM_CRC_FAILED 0x00008000U + +#define SDMMC_VOLTAGE_WINDOW_SD 0x80100000U +#define SDMMC_HIGH_CAPACITY 0x40000000U +#define SDMMC_STD_CAPACITY 0x00000000U +#define SDMMC_CHECK_PATTERN 0x000001AAU +#define SD_SWITCH_1_8V_CAPACITY 0x01000000U + +#define SDMMC_MAX_VOLT_TRIAL 0x0000FFFFU + +#define SDMMC_MAX_TRIAL 0x0000FFFFU + +#define SDMMC_ALLZERO 0x00000000U + +#define SDMMC_WIDE_BUS_SUPPORT 0x00040000U +#define SDMMC_SINGLE_BUS_SUPPORT 0x00010000U +#define SDMMC_CARD_LOCKED 0x02000000U + +#ifndef SDMMC_DATATIMEOUT +#define SDMMC_DATATIMEOUT 0xFFFFFFFFU +#endif /* SDMMC_DATATIMEOUT */ + +#define SDMMC_0TO7BITS 0x000000FFU +#define SDMMC_8TO15BITS 0x0000FF00U +#define SDMMC_16TO23BITS 0x00FF0000U +#define SDMMC_24TO31BITS 0xFF000000U +#define SDMMC_MAX_DATA_LENGTH 0x01FFFFFFU + +#define SDMMC_HALFFIFO 0x00000008U +#define SDMMC_HALFFIFOBYTES 0x00000020U + +/** + * @brief Command Class supported + */ +#define SDMMC_CCCC_ERASE 0x00000020U + +#define SDMMC_CMDTIMEOUT 5000U /* Command send and response timeout */ +#define SDMMC_MAXERASETIMEOUT 63000U /* Max erase Timeout 63 s */ +#define SDMMC_STOPTRANSFERTIMEOUT 100000000U /* Timeout for STOP TRANSMISSION command */ + +/** @defgroup SDMMC_LL_Clock_Edge Clock Edge + * @{ + */ +#define SDMMC_CLOCK_EDGE_RISING 0x00000000U +#define SDMMC_CLOCK_EDGE_FALLING SDMMC_CLKCR_NEGEDGE + +#define IS_SDMMC_CLOCK_EDGE(EDGE) (((EDGE) == SDMMC_CLOCK_EDGE_RISING) || \ + ((EDGE) == SDMMC_CLOCK_EDGE_FALLING)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Clock_Bypass Clock Bypass + * @{ + */ +#define SDMMC_CLOCK_BYPASS_DISABLE 0x00000000U +#define SDMMC_CLOCK_BYPASS_ENABLE SDMMC_CLKCR_BYPASS + +#define IS_SDMMC_CLOCK_BYPASS(BYPASS) (((BYPASS) == SDMMC_CLOCK_BYPASS_DISABLE) || \ + ((BYPASS) == SDMMC_CLOCK_BYPASS_ENABLE)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Clock_Power_Save Clock Power Saving + * @{ + */ +#define SDMMC_CLOCK_POWER_SAVE_DISABLE 0x00000000U +#define SDMMC_CLOCK_POWER_SAVE_ENABLE SDMMC_CLKCR_PWRSAV + +#define IS_SDMMC_CLOCK_POWER_SAVE(SAVE) (((SAVE) == SDMMC_CLOCK_POWER_SAVE_DISABLE) || \ + ((SAVE) == SDMMC_CLOCK_POWER_SAVE_ENABLE)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Bus_Wide Bus Width + * @{ + */ +#define SDMMC_BUS_WIDE_1B 0x00000000U +#define SDMMC_BUS_WIDE_4B SDMMC_CLKCR_WIDBUS_0 +#define SDMMC_BUS_WIDE_8B SDMMC_CLKCR_WIDBUS_1 + +#define IS_SDMMC_BUS_WIDE(WIDE) (((WIDE) == SDMMC_BUS_WIDE_1B) || \ + ((WIDE) == SDMMC_BUS_WIDE_4B) || \ + ((WIDE) == SDMMC_BUS_WIDE_8B)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Hardware_Flow_Control Hardware Flow Control + * @{ + */ +#define SDMMC_HARDWARE_FLOW_CONTROL_DISABLE 0x00000000U +#define SDMMC_HARDWARE_FLOW_CONTROL_ENABLE SDMMC_CLKCR_HWFC_EN + +#define IS_SDMMC_HARDWARE_FLOW_CONTROL(CONTROL) (((CONTROL) == SDMMC_HARDWARE_FLOW_CONTROL_DISABLE) || \ + ((CONTROL) == SDMMC_HARDWARE_FLOW_CONTROL_ENABLE)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Clock_Division Clock Division + * @{ + */ +#define IS_SDMMC_CLKDIV(DIV) ((DIV) <= 0xFFU) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Command_Index Command Index + * @{ + */ +#define IS_SDMMC_CMD_INDEX(INDEX) ((INDEX) < 0x40U) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Response_Type Response Type + * @{ + */ +#define SDMMC_RESPONSE_NO 0x00000000U +#define SDMMC_RESPONSE_SHORT SDMMC_CMD_WAITRESP_0 +#define SDMMC_RESPONSE_LONG SDMMC_CMD_WAITRESP + +#define IS_SDMMC_RESPONSE(RESPONSE) (((RESPONSE) == SDMMC_RESPONSE_NO) || \ + ((RESPONSE) == SDMMC_RESPONSE_SHORT) || \ + ((RESPONSE) == SDMMC_RESPONSE_LONG)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Wait_Interrupt_State Wait Interrupt + * @{ + */ +#define SDMMC_WAIT_NO 0x00000000U +#define SDMMC_WAIT_IT SDMMC_CMD_WAITINT +#define SDMMC_WAIT_PEND SDMMC_CMD_WAITPEND + +#define IS_SDMMC_WAIT(WAIT) (((WAIT) == SDMMC_WAIT_NO) || \ + ((WAIT) == SDMMC_WAIT_IT) || \ + ((WAIT) == SDMMC_WAIT_PEND)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_CPSM_State CPSM State + * @{ + */ +#define SDMMC_CPSM_DISABLE 0x00000000U +#define SDMMC_CPSM_ENABLE SDMMC_CMD_CPSMEN + +#define IS_SDMMC_CPSM(CPSM) (((CPSM) == SDMMC_CPSM_DISABLE) || \ + ((CPSM) == SDMMC_CPSM_ENABLE)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Response_Registers Response Register + * @{ + */ +#define SDMMC_RESP1 0x00000000U +#define SDMMC_RESP2 0x00000004U +#define SDMMC_RESP3 0x00000008U +#define SDMMC_RESP4 0x0000000CU + +#define IS_SDMMC_RESP(RESP) (((RESP) == SDMMC_RESP1) || \ + ((RESP) == SDMMC_RESP2) || \ + ((RESP) == SDMMC_RESP3) || \ + ((RESP) == SDMMC_RESP4)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Data_Length Data Length + * @{ + */ +#define IS_SDMMC_DATA_LENGTH(LENGTH) ((LENGTH) <= 0x01FFFFFFU) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Data_Block_Size Data Block Size + * @{ + */ +#define SDMMC_DATABLOCK_SIZE_1B 0x00000000U +#define SDMMC_DATABLOCK_SIZE_2B SDMMC_DCTRL_DBLOCKSIZE_0 +#define SDMMC_DATABLOCK_SIZE_4B SDMMC_DCTRL_DBLOCKSIZE_1 +#define SDMMC_DATABLOCK_SIZE_8B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_1) +#define SDMMC_DATABLOCK_SIZE_16B SDMMC_DCTRL_DBLOCKSIZE_2 +#define SDMMC_DATABLOCK_SIZE_32B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_2) +#define SDMMC_DATABLOCK_SIZE_64B (SDMMC_DCTRL_DBLOCKSIZE_1|SDMMC_DCTRL_DBLOCKSIZE_2) +#define SDMMC_DATABLOCK_SIZE_128B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_1|SDMMC_DCTRL_DBLOCKSIZE_2) +#define SDMMC_DATABLOCK_SIZE_256B SDMMC_DCTRL_DBLOCKSIZE_3 +#define SDMMC_DATABLOCK_SIZE_512B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_3) +#define SDMMC_DATABLOCK_SIZE_1024B (SDMMC_DCTRL_DBLOCKSIZE_1|SDMMC_DCTRL_DBLOCKSIZE_3) +#define SDMMC_DATABLOCK_SIZE_2048B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_1|SDMMC_DCTRL_DBLOCKSIZE_3) +#define SDMMC_DATABLOCK_SIZE_4096B (SDMMC_DCTRL_DBLOCKSIZE_2|SDMMC_DCTRL_DBLOCKSIZE_3) +#define SDMMC_DATABLOCK_SIZE_8192B (SDMMC_DCTRL_DBLOCKSIZE_0|SDMMC_DCTRL_DBLOCKSIZE_2|SDMMC_DCTRL_DBLOCKSIZE_3) +#define SDMMC_DATABLOCK_SIZE_16384B (SDMMC_DCTRL_DBLOCKSIZE_1|SDMMC_DCTRL_DBLOCKSIZE_2|SDMMC_DCTRL_DBLOCKSIZE_3) + +#define IS_SDMMC_BLOCK_SIZE(SIZE) (((SIZE) == SDMMC_DATABLOCK_SIZE_1B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_2B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_4B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_8B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_16B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_32B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_64B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_128B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_256B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_512B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_1024B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_2048B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_4096B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_8192B) || \ + ((SIZE) == SDMMC_DATABLOCK_SIZE_16384B)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Transfer_Direction Transfer Direction + * @{ + */ +#define SDMMC_TRANSFER_DIR_TO_CARD 0x00000000U +#define SDMMC_TRANSFER_DIR_TO_SDMMC SDMMC_DCTRL_DTDIR + +#define IS_SDMMC_TRANSFER_DIR(DIR) (((DIR) == SDMMC_TRANSFER_DIR_TO_CARD) || \ + ((DIR) == SDMMC_TRANSFER_DIR_TO_SDMMC)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Transfer_Type Transfer Type + * @{ + */ +#define SDMMC_TRANSFER_MODE_BLOCK 0x00000000U +#define SDMMC_TRANSFER_MODE_STREAM SDMMC_DCTRL_DTMODE + +#define IS_SDMMC_TRANSFER_MODE(MODE) (((MODE) == SDMMC_TRANSFER_MODE_BLOCK) || \ + ((MODE) == SDMMC_TRANSFER_MODE_STREAM)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_DPSM_State DPSM State + * @{ + */ +#define SDMMC_DPSM_DISABLE 0x00000000U +#define SDMMC_DPSM_ENABLE SDMMC_DCTRL_DTEN + +#define IS_SDMMC_DPSM(DPSM) (((DPSM) == SDMMC_DPSM_DISABLE) ||\ + ((DPSM) == SDMMC_DPSM_ENABLE)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Read_Wait_Mode Read Wait Mode + * @{ + */ +#define SDMMC_READ_WAIT_MODE_DATA2 0x00000000U +#define SDMMC_READ_WAIT_MODE_CLK (SDMMC_DCTRL_RWMOD) + +#define IS_SDMMC_READWAIT_MODE(MODE) (((MODE) == SDMMC_READ_WAIT_MODE_CLK) || \ + ((MODE) == SDMMC_READ_WAIT_MODE_DATA2)) +/** + * @} + */ + +/** @defgroup SDMMC_LL_Interrupt_sources Interrupt Sources + * @{ + */ +#define SDMMC_IT_CCRCFAIL SDMMC_MASK_CCRCFAILIE +#define SDMMC_IT_DCRCFAIL SDMMC_MASK_DCRCFAILIE +#define SDMMC_IT_CTIMEOUT SDMMC_MASK_CTIMEOUTIE +#define SDMMC_IT_DTIMEOUT SDMMC_MASK_DTIMEOUTIE +#define SDMMC_IT_TXUNDERR SDMMC_MASK_TXUNDERRIE +#define SDMMC_IT_RXOVERR SDMMC_MASK_RXOVERRIE +#define SDMMC_IT_CMDREND SDMMC_MASK_CMDRENDIE +#define SDMMC_IT_CMDSENT SDMMC_MASK_CMDSENTIE +#define SDMMC_IT_DATAEND SDMMC_MASK_DATAENDIE +#define SDMMC_IT_DBCKEND SDMMC_MASK_DBCKENDIE +#define SDMMC_IT_CMDACT SDMMC_MASK_CMDACTIE +#define SDMMC_IT_TXACT SDMMC_MASK_TXACTIE +#define SDMMC_IT_RXACT SDMMC_MASK_RXACTIE +#define SDMMC_IT_TXFIFOHE SDMMC_MASK_TXFIFOHEIE +#define SDMMC_IT_RXFIFOHF SDMMC_MASK_RXFIFOHFIE +#define SDMMC_IT_TXFIFOF SDMMC_MASK_TXFIFOFIE +#define SDMMC_IT_RXFIFOF SDMMC_MASK_RXFIFOFIE +#define SDMMC_IT_TXFIFOE SDMMC_MASK_TXFIFOEIE +#define SDMMC_IT_RXFIFOE SDMMC_MASK_RXFIFOEIE +#define SDMMC_IT_TXDAVL SDMMC_MASK_TXDAVLIE +#define SDMMC_IT_RXDAVL SDMMC_MASK_RXDAVLIE +#define SDMMC_IT_SDIOIT SDMMC_MASK_SDIOITIE +/** + * @} + */ + +/** @defgroup SDMMC_LL_Flags Flags + * @{ + */ +#define SDMMC_FLAG_CCRCFAIL SDMMC_STA_CCRCFAIL +#define SDMMC_FLAG_DCRCFAIL SDMMC_STA_DCRCFAIL +#define SDMMC_FLAG_CTIMEOUT SDMMC_STA_CTIMEOUT +#define SDMMC_FLAG_DTIMEOUT SDMMC_STA_DTIMEOUT +#define SDMMC_FLAG_TXUNDERR SDMMC_STA_TXUNDERR +#define SDMMC_FLAG_RXOVERR SDMMC_STA_RXOVERR +#define SDMMC_FLAG_CMDREND SDMMC_STA_CMDREND +#define SDMMC_FLAG_CMDSENT SDMMC_STA_CMDSENT +#define SDMMC_FLAG_DATAEND SDMMC_STA_DATAEND +#define SDMMC_FLAG_DBCKEND SDMMC_STA_DBCKEND +#define SDMMC_FLAG_CMDACT SDMMC_STA_CMDACT +#define SDMMC_FLAG_TXACT SDMMC_STA_TXACT +#define SDMMC_FLAG_RXACT SDMMC_STA_RXACT +#define SDMMC_FLAG_TXFIFOHE SDMMC_STA_TXFIFOHE +#define SDMMC_FLAG_RXFIFOHF SDMMC_STA_RXFIFOHF +#define SDMMC_FLAG_TXFIFOF SDMMC_STA_TXFIFOF +#define SDMMC_FLAG_RXFIFOF SDMMC_STA_RXFIFOF +#define SDMMC_FLAG_TXFIFOE SDMMC_STA_TXFIFOE +#define SDMMC_FLAG_RXFIFOE SDMMC_STA_RXFIFOE +#define SDMMC_FLAG_TXDAVL SDMMC_STA_TXDAVL +#define SDMMC_FLAG_RXDAVL SDMMC_STA_RXDAVL +#define SDMMC_FLAG_SDIOIT SDMMC_STA_SDIOIT +#define SDMMC_STATIC_FLAGS ((uint32_t)(SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_CTIMEOUT |\ + SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_TXUNDERR | SDMMC_FLAG_RXOVERR |\ + SDMMC_FLAG_CMDREND | SDMMC_FLAG_CMDSENT | SDMMC_FLAG_DATAEND |\ + SDMMC_FLAG_DBCKEND | SDMMC_FLAG_SDIOIT)) + +#define SDMMC_STATIC_CMD_FLAGS ((uint32_t)(SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CTIMEOUT | SDMMC_FLAG_CMDREND |\ + SDMMC_FLAG_CMDSENT)) + +#define SDMMC_STATIC_DATA_FLAGS ((uint32_t)(SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_TXUNDERR |\ + SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DATAEND | SDMMC_FLAG_DBCKEND)) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup SDMMC_LL_Exported_macros SDMMC_LL Exported Macros + * @{ + */ + +/** @defgroup SDMMC_LL_Register Bits And Addresses Definitions + * @brief SDMMC_LL registers bit address in the alias region + * @{ + */ +/* ---------------------- SDMMC registers bit mask --------------------------- */ +/* --- CLKCR Register ---*/ +/* CLKCR register clear mask */ +#define CLKCR_CLEAR_MASK ((uint32_t)(SDMMC_CLKCR_CLKDIV | SDMMC_CLKCR_PWRSAV |\ + SDMMC_CLKCR_BYPASS | SDMMC_CLKCR_WIDBUS |\ + SDMMC_CLKCR_NEGEDGE | SDMMC_CLKCR_HWFC_EN)) + +/* --- DCTRL Register ---*/ +/* SDMMC DCTRL Clear Mask */ +#define DCTRL_CLEAR_MASK ((uint32_t)(SDMMC_DCTRL_DTEN | SDMMC_DCTRL_DTDIR |\ + SDMMC_DCTRL_DTMODE | SDMMC_DCTRL_DBLOCKSIZE)) + +/* --- CMD Register ---*/ +/* CMD Register clear mask */ +#define CMD_CLEAR_MASK ((uint32_t)(SDMMC_CMD_CMDINDEX | SDMMC_CMD_WAITRESP |\ + SDMMC_CMD_WAITINT | SDMMC_CMD_WAITPEND |\ + SDMMC_CMD_CPSMEN | SDMMC_CMD_SDIOSUSPEND)) + +/* SDMMC Initialization Frequency (400KHz max) */ +#define SDMMC_INIT_CLK_DIV ((uint8_t)0x76) /* 48MHz / (SDMMC_INIT_CLK_DIV + 2) < 400KHz */ + +/* SDMMC Data Transfer Frequency (25MHz max) */ +#define SDMMC_TRANSFER_CLK_DIV ((uint8_t)0x0) /* 48MHz / (SDMMC_TRANSFER_CLK_DIV + 2) < 25MHz */ +/** + * @} + */ + +/** @defgroup SDMMC_LL_Interrupt_Clock Interrupt And Clock Configuration + * @brief macros to handle interrupts and specific clock configurations + * @{ + */ + +/** + * @brief Enable the SDMMC device. + * @param __INSTANCE__: SDMMC Instance + * @retval None + */ +#define __SDMMC_ENABLE(__INSTANCE__) ((__INSTANCE__)->CLKCR |= SDMMC_CLKCR_CLKEN) + +/** + * @brief Disable the SDMMC device. + * @param __INSTANCE__: SDMMC Instance + * @retval None + */ +#define __SDMMC_DISABLE(__INSTANCE__) ((__INSTANCE__)->CLKCR &= ~SDMMC_CLKCR_CLKEN) + +/** + * @brief Enable the SDMMC DMA transfer. + * @param __INSTANCE__: SDMMC Instance + * @retval None + */ +#define __SDMMC_DMA_ENABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL |= SDMMC_DCTRL_DMAEN) + +/** + * @brief Disable the SDMMC DMA transfer. + * @param __INSTANCE__: SDMMC Instance + * @retval None + */ +#define __SDMMC_DMA_DISABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL &= ~SDMMC_DCTRL_DMAEN) + +/** + * @brief Enable the SDMMC device interrupt. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @param __INTERRUPT__ : specifies the SDMMC interrupt sources to be enabled. + * This parameter can be one or a combination of the following values: + * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt + * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDMMC_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDMMC_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDACT: Command transfer in progress interrupt + * @arg SDMMC_IT_TXACT: Data transmit in progress interrupt + * @arg SDMMC_IT_RXACT: Data receive in progress interrupt + * @arg SDMMC_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDMMC_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDMMC_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDMMC_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDMMC_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDMMC_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDMMC_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDMMC_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDMMC_IT_SDIOIT: SDIO interrupt received interrupt + * @retval None + */ +#define __SDMMC_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->MASK |= (__INTERRUPT__)) + +/** + * @brief Disable the SDMMC device interrupt. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @param __INTERRUPT__ : specifies the SDMMC interrupt sources to be disabled. + * This parameter can be one or a combination of the following values: + * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt + * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDMMC_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDMMC_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDACT: Command transfer in progress interrupt + * @arg SDMMC_IT_TXACT: Data transmit in progress interrupt + * @arg SDMMC_IT_RXACT: Data receive in progress interrupt + * @arg SDMMC_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDMMC_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDMMC_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDMMC_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDMMC_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDMMC_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDMMC_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDMMC_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDMMC_IT_SDIOIT: SDIO interrupt received interrupt + * @retval None + */ +#define __SDMMC_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->MASK &= ~(__INTERRUPT__)) + +/** + * @brief Checks whether the specified SDMMC flag is set or not. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @param __FLAG__: specifies the flag to check. + * This parameter can be one of the following values: + * @arg SDMMC_FLAG_CCRCFAIL: Command response received (CRC check failed) + * @arg SDMMC_FLAG_DCRCFAIL: Data block sent/received (CRC check failed) + * @arg SDMMC_FLAG_CTIMEOUT: Command response timeout + * @arg SDMMC_FLAG_DTIMEOUT: Data timeout + * @arg SDMMC_FLAG_TXUNDERR: Transmit FIFO underrun error + * @arg SDMMC_FLAG_RXOVERR: Received FIFO overrun error + * @arg SDMMC_FLAG_CMDREND: Command response received (CRC check passed) + * @arg SDMMC_FLAG_CMDSENT: Command sent (no response required) + * @arg SDMMC_FLAG_DATAEND: Data end (data counter, DATACOUNT, is zero) + * @arg SDMMC_FLAG_DBCKEND: Data block sent/received (CRC check passed) + * @arg SDMMC_FLAG_CMDACT: Command transfer in progress + * @arg SDMMC_FLAG_TXACT: Data transmit in progress + * @arg SDMMC_FLAG_RXACT: Data receive in progress + * @arg SDMMC_FLAG_TXFIFOHE: Transmit FIFO Half Empty + * @arg SDMMC_FLAG_RXFIFOHF: Receive FIFO Half Full + * @arg SDMMC_FLAG_TXFIFOF: Transmit FIFO full + * @arg SDMMC_FLAG_RXFIFOF: Receive FIFO full + * @arg SDMMC_FLAG_TXFIFOE: Transmit FIFO empty + * @arg SDMMC_FLAG_RXFIFOE: Receive FIFO empty + * @arg SDMMC_FLAG_TXDAVL: Data available in transmit FIFO + * @arg SDMMC_FLAG_RXDAVL: Data available in receive FIFO + * @arg SDMMC_FLAG_SDIOIT: SDIO interrupt received + * @retval The new state of SDMMC_FLAG (SET or RESET). + */ +#define __SDMMC_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->STA &(__FLAG__)) != 0U) + + +/** + * @brief Clears the SDMMC pending flags. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @param __FLAG__: specifies the flag to clear. + * This parameter can be one or a combination of the following values: + * @arg SDMMC_FLAG_CCRCFAIL: Command response received (CRC check failed) + * @arg SDMMC_FLAG_DCRCFAIL: Data block sent/received (CRC check failed) + * @arg SDMMC_FLAG_CTIMEOUT: Command response timeout + * @arg SDMMC_FLAG_DTIMEOUT: Data timeout + * @arg SDMMC_FLAG_TXUNDERR: Transmit FIFO underrun error + * @arg SDMMC_FLAG_RXOVERR: Received FIFO overrun error + * @arg SDMMC_FLAG_CMDREND: Command response received (CRC check passed) + * @arg SDMMC_FLAG_CMDSENT: Command sent (no response required) + * @arg SDMMC_FLAG_DATAEND: Data end (data counter, DATACOUNT, is zero) + * @arg SDMMC_FLAG_DBCKEND: Data block sent/received (CRC check passed) + * @arg SDMMC_FLAG_SDIOIT: SDIO interrupt received + * @retval None + */ +#define __SDMMC_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->ICR = (__FLAG__)) + +/** + * @brief Checks whether the specified SDMMC interrupt has occurred or not. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @param __INTERRUPT__: specifies the SDMMC interrupt source to check. + * This parameter can be one of the following values: + * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt + * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDMMC_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDMMC_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDACT: Command transfer in progress interrupt + * @arg SDMMC_IT_TXACT: Data transmit in progress interrupt + * @arg SDMMC_IT_RXACT: Data receive in progress interrupt + * @arg SDMMC_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDMMC_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDMMC_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDMMC_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDMMC_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDMMC_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDMMC_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDMMC_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDMMC_IT_SDIOIT: SDIO interrupt received interrupt + * @retval The new state of SDMMC_IT (SET or RESET). + */ +#define __SDMMC_GET_IT (__INSTANCE__, __INTERRUPT__) (((__INSTANCE__)->STA &(__INTERRUPT__)) == (__INTERRUPT__)) + +/** + * @brief Clears the SDMMC's interrupt pending bits. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @param __INTERRUPT__: specifies the interrupt pending bit to clear. + * This parameter can be one or a combination of the following values: + * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt + * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDMMC_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDMMC_IT_SDIOIT: SDIO interrupt received interrupt + * @retval None + */ +#define __SDMMC_CLEAR_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->ICR = (__INTERRUPT__)) + +/** + * @brief Enable Start the SD I/O Read Wait operation. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @retval None + */ +#define __SDMMC_START_READWAIT_ENABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL |= SDMMC_DCTRL_RWSTART) + +/** + * @brief Disable Start the SD I/O Read Wait operations. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @retval None + */ +#define __SDMMC_START_READWAIT_DISABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL &= ~SDMMC_DCTRL_RWSTART) + +/** + * @brief Enable Start the SD I/O Read Wait operation. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @retval None + */ +#define __SDMMC_STOP_READWAIT_ENABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL |= SDMMC_DCTRL_RWSTOP) + +/** + * @brief Disable Stop the SD I/O Read Wait operations. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @retval None + */ +#define __SDMMC_STOP_READWAIT_DISABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL &= ~SDMMC_DCTRL_RWSTOP) + +/** + * @brief Enable the SD I/O Mode Operation. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @retval None + */ +#define __SDMMC_OPERATION_ENABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL |= SDMMC_DCTRL_SDIOEN) + +/** + * @brief Disable the SD I/O Mode Operation. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @retval None + */ +#define __SDMMC_OPERATION_DISABLE(__INSTANCE__) ((__INSTANCE__)->DCTRL &= ~SDMMC_DCTRL_SDIOEN) + +/** + * @brief Enable the SD I/O Suspend command sending. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @retval None + */ +#define __SDMMC_SUSPEND_CMD_ENABLE(__INSTANCE__) ((__INSTANCE__)->CMD |= SDMMC_CMD_SDIOSUSPEND) + +/** + * @brief Disable the SD I/O Suspend command sending. + * @param __INSTANCE__ : Pointer to SDMMC register base + * @retval None + */ +#define __SDMMC_SUSPEND_CMD_DISABLE(__INSTANCE__) ((__INSTANCE__)->CMD &= ~SDMMC_CMD_SDIOSUSPEND) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup SDMMC_LL_Exported_Functions + * @{ + */ + +/* Initialization/de-initialization functions **********************************/ +/** @addtogroup HAL_SDMMC_LL_Group1 + * @{ + */ +HAL_StatusTypeDef SDMMC_Init(SDMMC_TypeDef *SDMMCx, SDMMC_InitTypeDef Init); +/** + * @} + */ + +/* I/O operation functions *****************************************************/ +/** @addtogroup HAL_SDMMC_LL_Group2 + * @{ + */ +uint32_t SDMMC_ReadFIFO(SDMMC_TypeDef *SDMMCx); +HAL_StatusTypeDef SDMMC_WriteFIFO(SDMMC_TypeDef *SDMMCx, uint32_t *pWriteData); +/** + * @} + */ + +/* Peripheral Control functions ************************************************/ +/** @addtogroup HAL_SDMMC_LL_Group3 + * @{ + */ +HAL_StatusTypeDef SDMMC_PowerState_ON(SDMMC_TypeDef *SDMMCx); +HAL_StatusTypeDef SDMMC_PowerState_OFF(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_GetPowerState(SDMMC_TypeDef *SDMMCx); + +/* Command path state machine (CPSM) management functions */ +HAL_StatusTypeDef SDMMC_SendCommand(SDMMC_TypeDef *SDMMCx, SDMMC_CmdInitTypeDef *Command); +uint8_t SDMMC_GetCommandResponse(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_GetResponse(SDMMC_TypeDef *SDMMCx, uint32_t Response); + +/* Data path state machine (DPSM) management functions */ +HAL_StatusTypeDef SDMMC_ConfigData(SDMMC_TypeDef *SDMMCx, SDMMC_DataInitTypeDef* Data); +uint32_t SDMMC_GetDataCounter(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_GetFIFOCount(SDMMC_TypeDef *SDMMCx); + +/* SDMMC Cards mode management functions */ +HAL_StatusTypeDef SDMMC_SetSDMMCReadWaitMode(SDMMC_TypeDef *SDMMCx, uint32_t SDMMC_ReadWaitMode); +/** + * @} + */ + +/* SDMMC Commands management functions */ +/** @addtogroup HAL_SDMMC_LL_Group4 + * @{ + */ +uint32_t SDMMC_CmdBlockLength(SDMMC_TypeDef *SDMMCx, uint32_t BlockSize); +uint32_t SDMMC_CmdReadSingleBlock(SDMMC_TypeDef *SDMMCx, uint32_t ReadAdd); +uint32_t SDMMC_CmdReadMultiBlock(SDMMC_TypeDef *SDMMCx, uint32_t ReadAdd); +uint32_t SDMMC_CmdWriteSingleBlock(SDMMC_TypeDef *SDMMCx, uint32_t WriteAdd); +uint32_t SDMMC_CmdWriteMultiBlock(SDMMC_TypeDef *SDMMCx, uint32_t WriteAdd); +uint32_t SDMMC_CmdEraseStartAdd(SDMMC_TypeDef *SDMMCx, uint32_t StartAdd); +uint32_t SDMMC_CmdSDEraseStartAdd(SDMMC_TypeDef *SDMMCx, uint32_t StartAdd); +uint32_t SDMMC_CmdEraseEndAdd(SDMMC_TypeDef *SDMMCx, uint32_t EndAdd); +uint32_t SDMMC_CmdSDEraseEndAdd(SDMMC_TypeDef *SDMMCx, uint32_t EndAdd); +uint32_t SDMMC_CmdErase(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_CmdStopTransfer(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_CmdSelDesel(SDMMC_TypeDef *SDMMCx, uint64_t Addr); +uint32_t SDMMC_CmdGoIdleState(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_CmdOperCond(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_CmdAppCommand(SDMMC_TypeDef *SDMMCx, uint32_t Argument); +uint32_t SDMMC_CmdAppOperCommand(SDMMC_TypeDef *SDMMCx, uint32_t Argument); +uint32_t SDMMC_CmdBusWidth(SDMMC_TypeDef *SDMMCx, uint32_t BusWidth); +uint32_t SDMMC_CmdSendSCR(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_CmdSendCID(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_CmdSendCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument); +uint32_t SDMMC_CmdSetRelAdd(SDMMC_TypeDef *SDMMCx, uint16_t *pRCA); +uint32_t SDMMC_CmdSetRelAddMmc(SDMMC_TypeDef *SDMMCx, uint16_t RCA); +uint32_t SDMMC_CmdSendStatus(SDMMC_TypeDef *SDMMCx, uint32_t Argument); +uint32_t SDMMC_CmdStatusRegister(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_CmdOpCondition(SDMMC_TypeDef *SDMMCx, uint32_t Argument); +uint32_t SDMMC_CmdSwitch(SDMMC_TypeDef *SDMMCx, uint32_t Argument); +uint32_t SDMMC_CmdSendEXTCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument); +/** + * @} + */ + +/* SDMMC Responses management functions *****************************************/ +/** @addtogroup HAL_SDMMC_LL_Group5 + * @{ + */ +uint32_t SDMMC_GetCmdResp1(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint32_t Timeout); +uint32_t SDMMC_GetCmdResp2(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_GetCmdResp3(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_GetCmdResp6(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint16_t *pRCA); +uint32_t SDMMC_GetCmdResp7(SDMMC_TypeDef *SDMMCx); +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* SDMMC1 */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F7xx_LL_SDMMC_H */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h new file mode 100644 index 0000000..7eb04a5 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h @@ -0,0 +1,2282 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_spi.h + * @author MCD Application Team + * @brief Header file of SPI LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_LL_SPI_H +#define STM32F7xx_LL_SPI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (SPI1) || defined (SPI2) || defined (SPI3) || defined (SPI4) || defined (SPI5) || defined(SPI6) + +/** @defgroup SPI_LL SPI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup SPI_LL_ES_INIT SPI Exported Init structure + * @{ + */ + +/** + * @brief SPI Init structures definition + */ +typedef struct +{ + uint32_t TransferDirection; /*!< Specifies the SPI unidirectional or bidirectional data mode. + This parameter can be a value of @ref SPI_LL_EC_TRANSFER_MODE. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetTransferDirection().*/ + + uint32_t Mode; /*!< Specifies the SPI mode (Master/Slave). + This parameter can be a value of @ref SPI_LL_EC_MODE. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetMode().*/ + + uint32_t DataWidth; /*!< Specifies the SPI data width. + This parameter can be a value of @ref SPI_LL_EC_DATAWIDTH. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetDataWidth().*/ + + uint32_t ClockPolarity; /*!< Specifies the serial clock steady state. + This parameter can be a value of @ref SPI_LL_EC_POLARITY. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetClockPolarity().*/ + + uint32_t ClockPhase; /*!< Specifies the clock active edge for the bit capture. + This parameter can be a value of @ref SPI_LL_EC_PHASE. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetClockPhase().*/ + + uint32_t NSS; /*!< Specifies whether the NSS signal is managed by hardware (NSS pin) or by software using the SSI bit. + This parameter can be a value of @ref SPI_LL_EC_NSS_MODE. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetNSSMode().*/ + + uint32_t BaudRate; /*!< Specifies the BaudRate prescaler value which will be used to configure the transmit and receive SCK clock. + This parameter can be a value of @ref SPI_LL_EC_BAUDRATEPRESCALER. + @note The communication clock is derived from the master clock. The slave clock does not need to be set. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetBaudRatePrescaler().*/ + + uint32_t BitOrder; /*!< Specifies whether data transfers start from MSB or LSB bit. + This parameter can be a value of @ref SPI_LL_EC_BIT_ORDER. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetTransferBitOrder().*/ + + uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not. + This parameter can be a value of @ref SPI_LL_EC_CRC_CALCULATION. + + This feature can be modified afterwards using unitary functions @ref LL_SPI_EnableCRC() and @ref LL_SPI_DisableCRC().*/ + + uint32_t CRCPoly; /*!< Specifies the polynomial used for the CRC calculation. + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFF. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetCRCPolynomial().*/ + +} LL_SPI_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SPI_LL_Exported_Constants SPI Exported Constants + * @{ + */ + +/** @defgroup SPI_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_SPI_ReadReg function + * @{ + */ +#define LL_SPI_SR_RXNE SPI_SR_RXNE /*!< Rx buffer not empty flag */ +#define LL_SPI_SR_TXE SPI_SR_TXE /*!< Tx buffer empty flag */ +#define LL_SPI_SR_BSY SPI_SR_BSY /*!< Busy flag */ +#define LL_SPI_SR_CRCERR SPI_SR_CRCERR /*!< CRC error flag */ +#define LL_SPI_SR_MODF SPI_SR_MODF /*!< Mode fault flag */ +#define LL_SPI_SR_OVR SPI_SR_OVR /*!< Overrun flag */ +#define LL_SPI_SR_FRE SPI_SR_FRE /*!< TI mode frame format error flag */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions + * @{ + */ +#define LL_SPI_CR2_RXNEIE SPI_CR2_RXNEIE /*!< Rx buffer not empty interrupt enable */ +#define LL_SPI_CR2_TXEIE SPI_CR2_TXEIE /*!< Tx buffer empty interrupt enable */ +#define LL_SPI_CR2_ERRIE SPI_CR2_ERRIE /*!< Error interrupt enable */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_MODE Operation Mode + * @{ + */ +#define LL_SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI) /*!< Master configuration */ +#define LL_SPI_MODE_SLAVE 0x00000000U /*!< Slave configuration */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_PROTOCOL Serial Protocol + * @{ + */ +#define LL_SPI_PROTOCOL_MOTOROLA 0x00000000U /*!< Motorola mode. Used as default value */ +#define LL_SPI_PROTOCOL_TI (SPI_CR2_FRF) /*!< TI mode */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_PHASE Clock Phase + * @{ + */ +#define LL_SPI_PHASE_1EDGE 0x00000000U /*!< First clock transition is the first data capture edge */ +#define LL_SPI_PHASE_2EDGE (SPI_CR1_CPHA) /*!< Second clock transition is the first data capture edge */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_POLARITY Clock Polarity + * @{ + */ +#define LL_SPI_POLARITY_LOW 0x00000000U /*!< Clock to 0 when idle */ +#define LL_SPI_POLARITY_HIGH (SPI_CR1_CPOL) /*!< Clock to 1 when idle */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_BAUDRATEPRESCALER Baud Rate Prescaler + * @{ + */ +#define LL_SPI_BAUDRATEPRESCALER_DIV2 0x00000000U /*!< BaudRate control equal to fPCLK/2 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV4 (SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/4 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV8 (SPI_CR1_BR_1) /*!< BaudRate control equal to fPCLK/8 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV16 (SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/16 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV32 (SPI_CR1_BR_2) /*!< BaudRate control equal to fPCLK/32 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV64 (SPI_CR1_BR_2 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/64 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV128 (SPI_CR1_BR_2 | SPI_CR1_BR_1) /*!< BaudRate control equal to fPCLK/128 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV256 (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/256 */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_BIT_ORDER Transmission Bit Order + * @{ + */ +#define LL_SPI_LSB_FIRST (SPI_CR1_LSBFIRST) /*!< Data is transmitted/received with the LSB first */ +#define LL_SPI_MSB_FIRST 0x00000000U /*!< Data is transmitted/received with the MSB first */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_TRANSFER_MODE Transfer Mode + * @{ + */ +#define LL_SPI_FULL_DUPLEX 0x00000000U /*!< Full-Duplex mode. Rx and Tx transfer on 2 lines */ +#define LL_SPI_SIMPLEX_RX (SPI_CR1_RXONLY) /*!< Simplex Rx mode. Rx transfer only on 1 line */ +#define LL_SPI_HALF_DUPLEX_RX (SPI_CR1_BIDIMODE) /*!< Half-Duplex Rx mode. Rx transfer on 1 line */ +#define LL_SPI_HALF_DUPLEX_TX (SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE) /*!< Half-Duplex Tx mode. Tx transfer on 1 line */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_NSS_MODE Slave Select Pin Mode + * @{ + */ +#define LL_SPI_NSS_SOFT (SPI_CR1_SSM) /*!< NSS managed internally. NSS pin not used and free */ +#define LL_SPI_NSS_HARD_INPUT 0x00000000U /*!< NSS pin used in Input. Only used in Master mode */ +#define LL_SPI_NSS_HARD_OUTPUT (((uint32_t)SPI_CR2_SSOE << 16U)) /*!< NSS pin used in Output. Only used in Slave mode as chip select */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_DATAWIDTH Datawidth + * @{ + */ +#define LL_SPI_DATAWIDTH_4BIT (SPI_CR2_DS_0 | SPI_CR2_DS_1) /*!< Data length for SPI transfer: 4 bits */ +#define LL_SPI_DATAWIDTH_5BIT (SPI_CR2_DS_2) /*!< Data length for SPI transfer: 5 bits */ +#define LL_SPI_DATAWIDTH_6BIT (SPI_CR2_DS_2 | SPI_CR2_DS_0) /*!< Data length for SPI transfer: 6 bits */ +#define LL_SPI_DATAWIDTH_7BIT (SPI_CR2_DS_2 | SPI_CR2_DS_1) /*!< Data length for SPI transfer: 7 bits */ +#define LL_SPI_DATAWIDTH_8BIT (SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0) /*!< Data length for SPI transfer: 8 bits */ +#define LL_SPI_DATAWIDTH_9BIT (SPI_CR2_DS_3) /*!< Data length for SPI transfer: 9 bits */ +#define LL_SPI_DATAWIDTH_10BIT (SPI_CR2_DS_3 | SPI_CR2_DS_0) /*!< Data length for SPI transfer: 10 bits */ +#define LL_SPI_DATAWIDTH_11BIT (SPI_CR2_DS_3 | SPI_CR2_DS_1) /*!< Data length for SPI transfer: 11 bits */ +#define LL_SPI_DATAWIDTH_12BIT (SPI_CR2_DS_3 | SPI_CR2_DS_1 | SPI_CR2_DS_0) /*!< Data length for SPI transfer: 12 bits */ +#define LL_SPI_DATAWIDTH_13BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2) /*!< Data length for SPI transfer: 13 bits */ +#define LL_SPI_DATAWIDTH_14BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_0) /*!< Data length for SPI transfer: 14 bits */ +#define LL_SPI_DATAWIDTH_15BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1) /*!< Data length for SPI transfer: 15 bits */ +#define LL_SPI_DATAWIDTH_16BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0) /*!< Data length for SPI transfer: 16 bits */ +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup SPI_LL_EC_CRC_CALCULATION CRC Calculation + * @{ + */ +#define LL_SPI_CRCCALCULATION_DISABLE 0x00000000U /*!< CRC calculation disabled */ +#define LL_SPI_CRCCALCULATION_ENABLE (SPI_CR1_CRCEN) /*!< CRC calculation enabled */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup SPI_LL_EC_CRC_LENGTH CRC Length + * @{ + */ +#define LL_SPI_CRC_8BIT 0x00000000U /*!< 8-bit CRC length */ +#define LL_SPI_CRC_16BIT (SPI_CR1_CRCL) /*!< 16-bit CRC length */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_RX_FIFO_TH RX FIFO Threshold + * @{ + */ +#define LL_SPI_RX_FIFO_TH_HALF 0x00000000U /*!< RXNE event is generated if FIFO level is greater than or equal to 1/2 (16-bit) */ +#define LL_SPI_RX_FIFO_TH_QUARTER (SPI_CR2_FRXTH) /*!< RXNE event is generated if FIFO level is greater than or equal to 1/4 (8-bit) */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_RX_FIFO RX FIFO Level + * @{ + */ +#define LL_SPI_RX_FIFO_EMPTY 0x00000000U /*!< FIFO reception empty */ +#define LL_SPI_RX_FIFO_QUARTER_FULL (SPI_SR_FRLVL_0) /*!< FIFO reception 1/4 */ +#define LL_SPI_RX_FIFO_HALF_FULL (SPI_SR_FRLVL_1) /*!< FIFO reception 1/2 */ +#define LL_SPI_RX_FIFO_FULL (SPI_SR_FRLVL_1 | SPI_SR_FRLVL_0) /*!< FIFO reception full */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_TX_FIFO TX FIFO Level + * @{ + */ +#define LL_SPI_TX_FIFO_EMPTY 0x00000000U /*!< FIFO transmission empty */ +#define LL_SPI_TX_FIFO_QUARTER_FULL (SPI_SR_FTLVL_0) /*!< FIFO transmission 1/4 */ +#define LL_SPI_TX_FIFO_HALF_FULL (SPI_SR_FTLVL_1) /*!< FIFO transmission 1/2 */ +#define LL_SPI_TX_FIFO_FULL (SPI_SR_FTLVL_1 | SPI_SR_FTLVL_0) /*!< FIFO transmission full */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_DMA_PARITY DMA Parity + * @{ + */ +#define LL_SPI_DMA_PARITY_EVEN 0x00000000U /*!< Select DMA parity Even */ +#define LL_SPI_DMA_PARITY_ODD 0x00000001U /*!< Select DMA parity Odd */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup SPI_LL_Exported_Macros SPI Exported Macros + * @{ + */ + +/** @defgroup SPI_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in SPI register + * @param __INSTANCE__ SPI Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_SPI_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in SPI register + * @param __INSTANCE__ SPI Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_SPI_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup SPI_LL_Exported_Functions SPI Exported Functions + * @{ + */ + +/** @defgroup SPI_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Enable SPI peripheral + * @rmtoll CR1 SPE LL_SPI_Enable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_Enable(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR1, SPI_CR1_SPE); +} + +/** + * @brief Disable SPI peripheral + * @note When disabling the SPI, follow the procedure described in the Reference Manual. + * @rmtoll CR1 SPE LL_SPI_Disable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_Disable(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE); +} + +/** + * @brief Check if SPI peripheral is enabled + * @rmtoll CR1 SPE LL_SPI_IsEnabled + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabled(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR1, SPI_CR1_SPE) == (SPI_CR1_SPE)) ? 1UL : 0UL); +} + +/** + * @brief Set SPI operation mode to Master or Slave + * @note This bit should not be changed when communication is ongoing. + * @rmtoll CR1 MSTR LL_SPI_SetMode\n + * CR1 SSI LL_SPI_SetMode + * @param SPIx SPI Instance + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_SPI_MODE_MASTER + * @arg @ref LL_SPI_MODE_SLAVE + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetMode(SPI_TypeDef *SPIx, uint32_t Mode) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI, Mode); +} + +/** + * @brief Get SPI operation mode (Master or Slave) + * @rmtoll CR1 MSTR LL_SPI_GetMode\n + * CR1 SSI LL_SPI_GetMode + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_MODE_MASTER + * @arg @ref LL_SPI_MODE_SLAVE + */ +__STATIC_INLINE uint32_t LL_SPI_GetMode(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI)); +} + +/** + * @brief Set serial protocol used + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR2 FRF LL_SPI_SetStandard + * @param SPIx SPI Instance + * @param Standard This parameter can be one of the following values: + * @arg @ref LL_SPI_PROTOCOL_MOTOROLA + * @arg @ref LL_SPI_PROTOCOL_TI + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard) +{ + MODIFY_REG(SPIx->CR2, SPI_CR2_FRF, Standard); +} + +/** + * @brief Get serial protocol used + * @rmtoll CR2 FRF LL_SPI_GetStandard + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_PROTOCOL_MOTOROLA + * @arg @ref LL_SPI_PROTOCOL_TI + */ +__STATIC_INLINE uint32_t LL_SPI_GetStandard(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_FRF)); +} + +/** + * @brief Set clock phase + * @note This bit should not be changed when communication is ongoing. + * This bit is not used in SPI TI mode. + * @rmtoll CR1 CPHA LL_SPI_SetClockPhase + * @param SPIx SPI Instance + * @param ClockPhase This parameter can be one of the following values: + * @arg @ref LL_SPI_PHASE_1EDGE + * @arg @ref LL_SPI_PHASE_2EDGE + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetClockPhase(SPI_TypeDef *SPIx, uint32_t ClockPhase) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_CPHA, ClockPhase); +} + +/** + * @brief Get clock phase + * @rmtoll CR1 CPHA LL_SPI_GetClockPhase + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_PHASE_1EDGE + * @arg @ref LL_SPI_PHASE_2EDGE + */ +__STATIC_INLINE uint32_t LL_SPI_GetClockPhase(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPHA)); +} + +/** + * @brief Set clock polarity + * @note This bit should not be changed when communication is ongoing. + * This bit is not used in SPI TI mode. + * @rmtoll CR1 CPOL LL_SPI_SetClockPolarity + * @param SPIx SPI Instance + * @param ClockPolarity This parameter can be one of the following values: + * @arg @ref LL_SPI_POLARITY_LOW + * @arg @ref LL_SPI_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_CPOL, ClockPolarity); +} + +/** + * @brief Get clock polarity + * @rmtoll CR1 CPOL LL_SPI_GetClockPolarity + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_POLARITY_LOW + * @arg @ref LL_SPI_POLARITY_HIGH + */ +__STATIC_INLINE uint32_t LL_SPI_GetClockPolarity(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPOL)); +} + +/** + * @brief Set baud rate prescaler + * @note These bits should not be changed when communication is ongoing. SPI BaudRate = fPCLK/Prescaler. + * @rmtoll CR1 BR LL_SPI_SetBaudRatePrescaler + * @param SPIx SPI Instance + * @param BaudRate This parameter can be one of the following values: + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256 + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetBaudRatePrescaler(SPI_TypeDef *SPIx, uint32_t BaudRate) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_BR, BaudRate); +} + +/** + * @brief Get baud rate prescaler + * @rmtoll CR1 BR LL_SPI_GetBaudRatePrescaler + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256 + */ +__STATIC_INLINE uint32_t LL_SPI_GetBaudRatePrescaler(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_BR)); +} + +/** + * @brief Set transfer bit order + * @note This bit should not be changed when communication is ongoing. This bit is not used in SPI TI mode. + * @rmtoll CR1 LSBFIRST LL_SPI_SetTransferBitOrder + * @param SPIx SPI Instance + * @param BitOrder This parameter can be one of the following values: + * @arg @ref LL_SPI_LSB_FIRST + * @arg @ref LL_SPI_MSB_FIRST + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetTransferBitOrder(SPI_TypeDef *SPIx, uint32_t BitOrder) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_LSBFIRST, BitOrder); +} + +/** + * @brief Get transfer bit order + * @rmtoll CR1 LSBFIRST LL_SPI_GetTransferBitOrder + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_LSB_FIRST + * @arg @ref LL_SPI_MSB_FIRST + */ +__STATIC_INLINE uint32_t LL_SPI_GetTransferBitOrder(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_LSBFIRST)); +} + +/** + * @brief Set transfer direction mode + * @note For Half-Duplex mode, Rx Direction is set by default. + * In master mode, the MOSI pin is used and in slave mode, the MISO pin is used for Half-Duplex. + * @rmtoll CR1 RXONLY LL_SPI_SetTransferDirection\n + * CR1 BIDIMODE LL_SPI_SetTransferDirection\n + * CR1 BIDIOE LL_SPI_SetTransferDirection + * @param SPIx SPI Instance + * @param TransferDirection This parameter can be one of the following values: + * @arg @ref LL_SPI_FULL_DUPLEX + * @arg @ref LL_SPI_SIMPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_TX + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetTransferDirection(SPI_TypeDef *SPIx, uint32_t TransferDirection) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE, TransferDirection); +} + +/** + * @brief Get transfer direction mode + * @rmtoll CR1 RXONLY LL_SPI_GetTransferDirection\n + * CR1 BIDIMODE LL_SPI_GetTransferDirection\n + * CR1 BIDIOE LL_SPI_GetTransferDirection + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_FULL_DUPLEX + * @arg @ref LL_SPI_SIMPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_TX + */ +__STATIC_INLINE uint32_t LL_SPI_GetTransferDirection(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE)); +} + +/** + * @brief Set frame data width + * @rmtoll CR2 DS LL_SPI_SetDataWidth + * @param SPIx SPI Instance + * @param DataWidth This parameter can be one of the following values: + * @arg @ref LL_SPI_DATAWIDTH_4BIT + * @arg @ref LL_SPI_DATAWIDTH_5BIT + * @arg @ref LL_SPI_DATAWIDTH_6BIT + * @arg @ref LL_SPI_DATAWIDTH_7BIT + * @arg @ref LL_SPI_DATAWIDTH_8BIT + * @arg @ref LL_SPI_DATAWIDTH_9BIT + * @arg @ref LL_SPI_DATAWIDTH_10BIT + * @arg @ref LL_SPI_DATAWIDTH_11BIT + * @arg @ref LL_SPI_DATAWIDTH_12BIT + * @arg @ref LL_SPI_DATAWIDTH_13BIT + * @arg @ref LL_SPI_DATAWIDTH_14BIT + * @arg @ref LL_SPI_DATAWIDTH_15BIT + * @arg @ref LL_SPI_DATAWIDTH_16BIT + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetDataWidth(SPI_TypeDef *SPIx, uint32_t DataWidth) +{ + MODIFY_REG(SPIx->CR2, SPI_CR2_DS, DataWidth); +} + +/** + * @brief Get frame data width + * @rmtoll CR2 DS LL_SPI_GetDataWidth + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_DATAWIDTH_4BIT + * @arg @ref LL_SPI_DATAWIDTH_5BIT + * @arg @ref LL_SPI_DATAWIDTH_6BIT + * @arg @ref LL_SPI_DATAWIDTH_7BIT + * @arg @ref LL_SPI_DATAWIDTH_8BIT + * @arg @ref LL_SPI_DATAWIDTH_9BIT + * @arg @ref LL_SPI_DATAWIDTH_10BIT + * @arg @ref LL_SPI_DATAWIDTH_11BIT + * @arg @ref LL_SPI_DATAWIDTH_12BIT + * @arg @ref LL_SPI_DATAWIDTH_13BIT + * @arg @ref LL_SPI_DATAWIDTH_14BIT + * @arg @ref LL_SPI_DATAWIDTH_15BIT + * @arg @ref LL_SPI_DATAWIDTH_16BIT + */ +__STATIC_INLINE uint32_t LL_SPI_GetDataWidth(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_DS)); +} + +/** + * @brief Set threshold of RXFIFO that triggers an RXNE event + * @rmtoll CR2 FRXTH LL_SPI_SetRxFIFOThreshold + * @param SPIx SPI Instance + * @param Threshold This parameter can be one of the following values: + * @arg @ref LL_SPI_RX_FIFO_TH_HALF + * @arg @ref LL_SPI_RX_FIFO_TH_QUARTER + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetRxFIFOThreshold(SPI_TypeDef *SPIx, uint32_t Threshold) +{ + MODIFY_REG(SPIx->CR2, SPI_CR2_FRXTH, Threshold); +} + +/** + * @brief Get threshold of RXFIFO that triggers an RXNE event + * @rmtoll CR2 FRXTH LL_SPI_GetRxFIFOThreshold + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_RX_FIFO_TH_HALF + * @arg @ref LL_SPI_RX_FIFO_TH_QUARTER + */ +__STATIC_INLINE uint32_t LL_SPI_GetRxFIFOThreshold(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_FRXTH)); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_CRC_Management CRC Management + * @{ + */ + +/** + * @brief Enable CRC + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR1 CRCEN LL_SPI_EnableCRC + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableCRC(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR1, SPI_CR1_CRCEN); +} + +/** + * @brief Disable CRC + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR1 CRCEN LL_SPI_DisableCRC + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableCRC(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR1, SPI_CR1_CRCEN); +} + +/** + * @brief Check if CRC is enabled + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR1 CRCEN LL_SPI_IsEnabledCRC + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledCRC(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR1, SPI_CR1_CRCEN) == (SPI_CR1_CRCEN)) ? 1UL : 0UL); +} + +/** + * @brief Set CRC Length + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR1 CRCL LL_SPI_SetCRCWidth + * @param SPIx SPI Instance + * @param CRCLength This parameter can be one of the following values: + * @arg @ref LL_SPI_CRC_8BIT + * @arg @ref LL_SPI_CRC_16BIT + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetCRCWidth(SPI_TypeDef *SPIx, uint32_t CRCLength) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_CRCL, CRCLength); +} + +/** + * @brief Get CRC Length + * @rmtoll CR1 CRCL LL_SPI_GetCRCWidth + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_CRC_8BIT + * @arg @ref LL_SPI_CRC_16BIT + */ +__STATIC_INLINE uint32_t LL_SPI_GetCRCWidth(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CRCL)); +} + +/** + * @brief Set CRCNext to transfer CRC on the line + * @note This bit has to be written as soon as the last data is written in the SPIx_DR register. + * @rmtoll CR1 CRCNEXT LL_SPI_SetCRCNext + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetCRCNext(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR1, SPI_CR1_CRCNEXT); +} + +/** + * @brief Set polynomial for CRC calculation + * @rmtoll CRCPR CRCPOLY LL_SPI_SetCRCPolynomial + * @param SPIx SPI Instance + * @param CRCPoly This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFF + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetCRCPolynomial(SPI_TypeDef *SPIx, uint32_t CRCPoly) +{ + WRITE_REG(SPIx->CRCPR, (uint16_t)CRCPoly); +} + +/** + * @brief Get polynomial for CRC calculation + * @rmtoll CRCPR CRCPOLY LL_SPI_GetCRCPolynomial + * @param SPIx SPI Instance + * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_SPI_GetCRCPolynomial(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_REG(SPIx->CRCPR)); +} + +/** + * @brief Get Rx CRC + * @rmtoll RXCRCR RXCRC LL_SPI_GetRxCRC + * @param SPIx SPI Instance + * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_SPI_GetRxCRC(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_REG(SPIx->RXCRCR)); +} + +/** + * @brief Get Tx CRC + * @rmtoll TXCRCR TXCRC LL_SPI_GetTxCRC + * @param SPIx SPI Instance + * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_SPI_GetTxCRC(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_REG(SPIx->TXCRCR)); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_NSS_Management Slave Select Pin Management + * @{ + */ + +/** + * @brief Set NSS mode + * @note LL_SPI_NSS_SOFT Mode is not used in SPI TI mode. + * @rmtoll CR1 SSM LL_SPI_SetNSSMode\n + * @rmtoll CR2 SSOE LL_SPI_SetNSSMode + * @param SPIx SPI Instance + * @param NSS This parameter can be one of the following values: + * @arg @ref LL_SPI_NSS_SOFT + * @arg @ref LL_SPI_NSS_HARD_INPUT + * @arg @ref LL_SPI_NSS_HARD_OUTPUT + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetNSSMode(SPI_TypeDef *SPIx, uint32_t NSS) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_SSM, NSS); + MODIFY_REG(SPIx->CR2, SPI_CR2_SSOE, ((uint32_t)(NSS >> 16U))); +} + +/** + * @brief Get NSS mode + * @rmtoll CR1 SSM LL_SPI_GetNSSMode\n + * @rmtoll CR2 SSOE LL_SPI_GetNSSMode + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_NSS_SOFT + * @arg @ref LL_SPI_NSS_HARD_INPUT + * @arg @ref LL_SPI_NSS_HARD_OUTPUT + */ +__STATIC_INLINE uint32_t LL_SPI_GetNSSMode(SPI_TypeDef *SPIx) +{ + uint32_t Ssm = (READ_BIT(SPIx->CR1, SPI_CR1_SSM)); + uint32_t Ssoe = (READ_BIT(SPIx->CR2, SPI_CR2_SSOE) << 16U); + return (Ssm | Ssoe); +} + +/** + * @brief Enable NSS pulse management + * @note This bit should not be changed when communication is ongoing. This bit is not used in SPI TI mode. + * @rmtoll CR2 NSSP LL_SPI_EnableNSSPulseMgt + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableNSSPulseMgt(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_NSSP); +} + +/** + * @brief Disable NSS pulse management + * @note This bit should not be changed when communication is ongoing. This bit is not used in SPI TI mode. + * @rmtoll CR2 NSSP LL_SPI_DisableNSSPulseMgt + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableNSSPulseMgt(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_NSSP); +} + +/** + * @brief Check if NSS pulse is enabled + * @note This bit should not be changed when communication is ongoing. This bit is not used in SPI TI mode. + * @rmtoll CR2 NSSP LL_SPI_IsEnabledNSSPulse + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledNSSPulse(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_NSSP) == (SPI_CR2_NSSP)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_FLAG_Management FLAG Management + * @{ + */ + +/** + * @brief Check if Rx buffer is not empty + * @rmtoll SR RXNE LL_SPI_IsActiveFlag_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_RXNE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_RXNE) == (SPI_SR_RXNE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Tx buffer is empty + * @rmtoll SR TXE LL_SPI_IsActiveFlag_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_TXE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_TXE) == (SPI_SR_TXE)) ? 1UL : 0UL); +} + +/** + * @brief Get CRC error flag + * @rmtoll SR CRCERR LL_SPI_IsActiveFlag_CRCERR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_CRCERR(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_CRCERR) == (SPI_SR_CRCERR)) ? 1UL : 0UL); +} + +/** + * @brief Get mode fault error flag + * @rmtoll SR MODF LL_SPI_IsActiveFlag_MODF + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_MODF(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_MODF) == (SPI_SR_MODF)) ? 1UL : 0UL); +} + +/** + * @brief Get overrun error flag + * @rmtoll SR OVR LL_SPI_IsActiveFlag_OVR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_OVR(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_OVR) == (SPI_SR_OVR)) ? 1UL : 0UL); +} + +/** + * @brief Get busy flag + * @note The BSY flag is cleared under any one of the following conditions: + * -When the SPI is correctly disabled + * -When a fault is detected in Master mode (MODF bit set to 1) + * -In Master mode, when it finishes a data transmission and no new data is ready to be + * sent + * -In Slave mode, when the BSY flag is set to '0' for at least one SPI clock cycle between + * each data transfer. + * @rmtoll SR BSY LL_SPI_IsActiveFlag_BSY + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_BSY(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_BSY) == (SPI_SR_BSY)) ? 1UL : 0UL); +} + +/** + * @brief Get frame format error flag + * @rmtoll SR FRE LL_SPI_IsActiveFlag_FRE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_FRE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_FRE) == (SPI_SR_FRE)) ? 1UL : 0UL); +} + +/** + * @brief Get FIFO reception Level + * @rmtoll SR FRLVL LL_SPI_GetRxFIFOLevel + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_RX_FIFO_EMPTY + * @arg @ref LL_SPI_RX_FIFO_QUARTER_FULL + * @arg @ref LL_SPI_RX_FIFO_HALF_FULL + * @arg @ref LL_SPI_RX_FIFO_FULL + */ +__STATIC_INLINE uint32_t LL_SPI_GetRxFIFOLevel(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->SR, SPI_SR_FRLVL)); +} + +/** + * @brief Get FIFO Transmission Level + * @rmtoll SR FTLVL LL_SPI_GetTxFIFOLevel + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_TX_FIFO_EMPTY + * @arg @ref LL_SPI_TX_FIFO_QUARTER_FULL + * @arg @ref LL_SPI_TX_FIFO_HALF_FULL + * @arg @ref LL_SPI_TX_FIFO_FULL + */ +__STATIC_INLINE uint32_t LL_SPI_GetTxFIFOLevel(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->SR, SPI_SR_FTLVL)); +} + +/** + * @brief Clear CRC error flag + * @rmtoll SR CRCERR LL_SPI_ClearFlag_CRCERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_CRCERR(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->SR, SPI_SR_CRCERR); +} + +/** + * @brief Clear mode fault error flag + * @note Clearing this flag is done by a read access to the SPIx_SR + * register followed by a write access to the SPIx_CR1 register + * @rmtoll SR MODF LL_SPI_ClearFlag_MODF + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_MODF(SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg_sr; + tmpreg_sr = SPIx->SR; + (void) tmpreg_sr; + CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE); +} + +/** + * @brief Clear overrun error flag + * @note Clearing this flag is done by a read access to the SPIx_DR + * register followed by a read access to the SPIx_SR register + * @rmtoll SR OVR LL_SPI_ClearFlag_OVR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_OVR(SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg; + tmpreg = SPIx->DR; + (void) tmpreg; + tmpreg = SPIx->SR; + (void) tmpreg; +} + +/** + * @brief Clear frame format error flag + * @note Clearing this flag is done by reading SPIx_SR register + * @rmtoll SR FRE LL_SPI_ClearFlag_FRE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_FRE(SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg; + tmpreg = SPIx->SR; + (void) tmpreg; +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_IT_Management Interrupt Management + * @{ + */ + +/** + * @brief Enable error interrupt + * @note This bit controls the generation of an interrupt when an error condition occurs (CRCERR, OVR, MODF in SPI mode, FRE at TI mode). + * @rmtoll CR2 ERRIE LL_SPI_EnableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableIT_ERR(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_ERRIE); +} + +/** + * @brief Enable Rx buffer not empty interrupt + * @rmtoll CR2 RXNEIE LL_SPI_EnableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableIT_RXNE(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_RXNEIE); +} + +/** + * @brief Enable Tx buffer empty interrupt + * @rmtoll CR2 TXEIE LL_SPI_EnableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableIT_TXE(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_TXEIE); +} + +/** + * @brief Disable error interrupt + * @note This bit controls the generation of an interrupt when an error condition occurs (CRCERR, OVR, MODF in SPI mode, FRE at TI mode). + * @rmtoll CR2 ERRIE LL_SPI_DisableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableIT_ERR(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_ERRIE); +} + +/** + * @brief Disable Rx buffer not empty interrupt + * @rmtoll CR2 RXNEIE LL_SPI_DisableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableIT_RXNE(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_RXNEIE); +} + +/** + * @brief Disable Tx buffer empty interrupt + * @rmtoll CR2 TXEIE LL_SPI_DisableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableIT_TXE(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_TXEIE); +} + +/** + * @brief Check if error interrupt is enabled + * @rmtoll CR2 ERRIE LL_SPI_IsEnabledIT_ERR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_ERR(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_ERRIE) == (SPI_CR2_ERRIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Rx buffer not empty interrupt is enabled + * @rmtoll CR2 RXNEIE LL_SPI_IsEnabledIT_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_RXNE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_RXNEIE) == (SPI_CR2_RXNEIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Tx buffer empty interrupt + * @rmtoll CR2 TXEIE LL_SPI_IsEnabledIT_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_TXE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_TXEIE) == (SPI_CR2_TXEIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_DMA_Management DMA Management + * @{ + */ + +/** + * @brief Enable DMA Rx + * @rmtoll CR2 RXDMAEN LL_SPI_EnableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableDMAReq_RX(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_RXDMAEN); +} + +/** + * @brief Disable DMA Rx + * @rmtoll CR2 RXDMAEN LL_SPI_DisableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableDMAReq_RX(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_RXDMAEN); +} + +/** + * @brief Check if DMA Rx is enabled + * @rmtoll CR2 RXDMAEN LL_SPI_IsEnabledDMAReq_RX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_RX(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_RXDMAEN) == (SPI_CR2_RXDMAEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable DMA Tx + * @rmtoll CR2 TXDMAEN LL_SPI_EnableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableDMAReq_TX(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_TXDMAEN); +} + +/** + * @brief Disable DMA Tx + * @rmtoll CR2 TXDMAEN LL_SPI_DisableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableDMAReq_TX(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_TXDMAEN); +} + +/** + * @brief Check if DMA Tx is enabled + * @rmtoll CR2 TXDMAEN LL_SPI_IsEnabledDMAReq_TX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_TX(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_TXDMAEN) == (SPI_CR2_TXDMAEN)) ? 1UL : 0UL); +} + +/** + * @brief Set parity of Last DMA reception + * @rmtoll CR2 LDMARX LL_SPI_SetDMAParity_RX + * @param SPIx SPI Instance + * @param Parity This parameter can be one of the following values: + * @arg @ref LL_SPI_DMA_PARITY_ODD + * @arg @ref LL_SPI_DMA_PARITY_EVEN + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetDMAParity_RX(SPI_TypeDef *SPIx, uint32_t Parity) +{ + MODIFY_REG(SPIx->CR2, SPI_CR2_LDMARX, (Parity << SPI_CR2_LDMARX_Pos)); +} + +/** + * @brief Get parity configuration for Last DMA reception + * @rmtoll CR2 LDMARX LL_SPI_GetDMAParity_RX + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_DMA_PARITY_ODD + * @arg @ref LL_SPI_DMA_PARITY_EVEN + */ +__STATIC_INLINE uint32_t LL_SPI_GetDMAParity_RX(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_LDMARX) >> SPI_CR2_LDMARX_Pos); +} + +/** + * @brief Set parity of Last DMA transmission + * @rmtoll CR2 LDMATX LL_SPI_SetDMAParity_TX + * @param SPIx SPI Instance + * @param Parity This parameter can be one of the following values: + * @arg @ref LL_SPI_DMA_PARITY_ODD + * @arg @ref LL_SPI_DMA_PARITY_EVEN + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetDMAParity_TX(SPI_TypeDef *SPIx, uint32_t Parity) +{ + MODIFY_REG(SPIx->CR2, SPI_CR2_LDMATX, (Parity << SPI_CR2_LDMATX_Pos)); +} + +/** + * @brief Get parity configuration for Last DMA transmission + * @rmtoll CR2 LDMATX LL_SPI_GetDMAParity_TX + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_DMA_PARITY_ODD + * @arg @ref LL_SPI_DMA_PARITY_EVEN + */ +__STATIC_INLINE uint32_t LL_SPI_GetDMAParity_TX(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_LDMATX) >> SPI_CR2_LDMATX_Pos); +} + +/** + * @brief Get the data register address used for DMA transfer + * @rmtoll DR DR LL_SPI_DMA_GetRegAddr + * @param SPIx SPI Instance + * @retval Address of data register + */ +__STATIC_INLINE uint32_t LL_SPI_DMA_GetRegAddr(SPI_TypeDef *SPIx) +{ + return (uint32_t) &(SPIx->DR); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_DATA_Management DATA Management + * @{ + */ + +/** + * @brief Read 8-Bits in the data register + * @rmtoll DR DR LL_SPI_ReceiveData8 + * @param SPIx SPI Instance + * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint8_t LL_SPI_ReceiveData8(SPI_TypeDef *SPIx) +{ + return (*((__IO uint8_t *)&SPIx->DR)); +} + +/** + * @brief Read 16-Bits in the data register + * @rmtoll DR DR LL_SPI_ReceiveData16 + * @param SPIx SPI Instance + * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint16_t LL_SPI_ReceiveData16(SPI_TypeDef *SPIx) +{ + return (uint16_t)(READ_REG(SPIx->DR)); +} + +/** + * @brief Write 8-Bits in the data register + * @rmtoll DR DR LL_SPI_TransmitData8 + * @param SPIx SPI Instance + * @param TxData Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_SPI_TransmitData8(SPI_TypeDef *SPIx, uint8_t TxData) +{ +#if defined (__GNUC__) + __IO uint8_t *spidr = ((__IO uint8_t *)&SPIx->DR); + *spidr = TxData; +#else + *((__IO uint8_t *)&SPIx->DR) = TxData; +#endif /* __GNUC__ */ +} + +/** + * @brief Write 16-Bits in the data register + * @rmtoll DR DR LL_SPI_TransmitData16 + * @param SPIx SPI Instance + * @param TxData Value between Min_Data=0x00 and Max_Data=0xFFFF + * @retval None + */ +__STATIC_INLINE void LL_SPI_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData) +{ +#if defined (__GNUC__) + __IO uint16_t *spidr = ((__IO uint16_t *)&SPIx->DR); + *spidr = TxData; +#else + SPIx->DR = TxData; +#endif /* __GNUC__ */ +} + +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup SPI_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_SPI_DeInit(SPI_TypeDef *SPIx); +ErrorStatus LL_SPI_Init(SPI_TypeDef *SPIx, LL_SPI_InitTypeDef *SPI_InitStruct); +void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup I2S_LL I2S + * @{ + */ + +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2S_LL_ES_INIT I2S Exported Init structure + * @{ + */ + +/** + * @brief I2S Init structure definition + */ + +typedef struct +{ + uint32_t Mode; /*!< Specifies the I2S operating mode. + This parameter can be a value of @ref I2S_LL_EC_MODE + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetTransferMode().*/ + + uint32_t Standard; /*!< Specifies the standard used for the I2S communication. + This parameter can be a value of @ref I2S_LL_EC_STANDARD + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetStandard().*/ + + + uint32_t DataFormat; /*!< Specifies the data format for the I2S communication. + This parameter can be a value of @ref I2S_LL_EC_DATA_FORMAT + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetDataFormat().*/ + + + uint32_t MCLKOutput; /*!< Specifies whether the I2S MCLK output is enabled or not. + This parameter can be a value of @ref I2S_LL_EC_MCLK_OUTPUT + + This feature can be modified afterwards using unitary functions @ref LL_I2S_EnableMasterClock() or @ref LL_I2S_DisableMasterClock.*/ + + + uint32_t AudioFreq; /*!< Specifies the frequency selected for the I2S communication. + This parameter can be a value of @ref I2S_LL_EC_AUDIO_FREQ + + Audio Frequency can be modified afterwards using Reference manual formulas to calculate Prescaler Linear, Parity + and unitary functions @ref LL_I2S_SetPrescalerLinear() and @ref LL_I2S_SetPrescalerParity() to set it.*/ + + + uint32_t ClockPolarity; /*!< Specifies the idle state of the I2S clock. + This parameter can be a value of @ref I2S_LL_EC_POLARITY + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetClockPolarity().*/ + +} LL_I2S_InitTypeDef; + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup I2S_LL_Exported_Constants I2S Exported Constants + * @{ + */ + +/** @defgroup I2S_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_I2S_ReadReg function + * @{ + */ +#define LL_I2S_SR_RXNE LL_SPI_SR_RXNE /*!< Rx buffer not empty flag */ +#define LL_I2S_SR_TXE LL_SPI_SR_TXE /*!< Tx buffer empty flag */ +#define LL_I2S_SR_BSY LL_SPI_SR_BSY /*!< Busy flag */ +#define LL_I2S_SR_UDR SPI_SR_UDR /*!< Underrun flag */ +#define LL_I2S_SR_OVR LL_SPI_SR_OVR /*!< Overrun flag */ +#define LL_I2S_SR_FRE LL_SPI_SR_FRE /*!< TI mode frame format error flag */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions + * @{ + */ +#define LL_I2S_CR2_RXNEIE LL_SPI_CR2_RXNEIE /*!< Rx buffer not empty interrupt enable */ +#define LL_I2S_CR2_TXEIE LL_SPI_CR2_TXEIE /*!< Tx buffer empty interrupt enable */ +#define LL_I2S_CR2_ERRIE LL_SPI_CR2_ERRIE /*!< Error interrupt enable */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_DATA_FORMAT Data format + * @{ + */ +#define LL_I2S_DATAFORMAT_16B 0x00000000U /*!< Data length 16 bits, Channel length 16bit */ +#define LL_I2S_DATAFORMAT_16B_EXTENDED (SPI_I2SCFGR_CHLEN) /*!< Data length 16 bits, Channel length 32bit */ +#define LL_I2S_DATAFORMAT_24B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0) /*!< Data length 24 bits, Channel length 32bit */ +#define LL_I2S_DATAFORMAT_32B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_1) /*!< Data length 16 bits, Channel length 32bit */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_POLARITY Clock Polarity + * @{ + */ +#define LL_I2S_POLARITY_LOW 0x00000000U /*!< Clock steady state is low level */ +#define LL_I2S_POLARITY_HIGH (SPI_I2SCFGR_CKPOL) /*!< Clock steady state is high level */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_STANDARD I2s Standard + * @{ + */ +#define LL_I2S_STANDARD_PHILIPS 0x00000000U /*!< I2S standard philips */ +#define LL_I2S_STANDARD_MSB (SPI_I2SCFGR_I2SSTD_0) /*!< MSB justified standard (left justified) */ +#define LL_I2S_STANDARD_LSB (SPI_I2SCFGR_I2SSTD_1) /*!< LSB justified standard (right justified) */ +#define LL_I2S_STANDARD_PCM_SHORT (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1) /*!< PCM standard, short frame synchronization */ +#define LL_I2S_STANDARD_PCM_LONG (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1 | SPI_I2SCFGR_PCMSYNC) /*!< PCM standard, long frame synchronization */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_MODE Operation Mode + * @{ + */ +#define LL_I2S_MODE_SLAVE_TX 0x00000000U /*!< Slave Tx configuration */ +#define LL_I2S_MODE_SLAVE_RX (SPI_I2SCFGR_I2SCFG_0) /*!< Slave Rx configuration */ +#define LL_I2S_MODE_MASTER_TX (SPI_I2SCFGR_I2SCFG_1) /*!< Master Tx configuration */ +#define LL_I2S_MODE_MASTER_RX (SPI_I2SCFGR_I2SCFG_0 | SPI_I2SCFGR_I2SCFG_1) /*!< Master Rx configuration */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_PRESCALER_FACTOR Prescaler Factor + * @{ + */ +#define LL_I2S_PRESCALER_PARITY_EVEN 0x00000000U /*!< Odd factor: Real divider value is = I2SDIV * 2 */ +#define LL_I2S_PRESCALER_PARITY_ODD (SPI_I2SPR_ODD >> 8U) /*!< Odd factor: Real divider value is = (I2SDIV * 2)+1 */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup I2S_LL_EC_MCLK_OUTPUT MCLK Output + * @{ + */ +#define LL_I2S_MCLK_OUTPUT_DISABLE 0x00000000U /*!< Master clock output is disabled */ +#define LL_I2S_MCLK_OUTPUT_ENABLE (SPI_I2SPR_MCKOE) /*!< Master clock output is enabled */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_AUDIO_FREQ Audio Frequency + * @{ + */ + +#define LL_I2S_AUDIOFREQ_192K 192000U /*!< Audio Frequency configuration 192000 Hz */ +#define LL_I2S_AUDIOFREQ_96K 96000U /*!< Audio Frequency configuration 96000 Hz */ +#define LL_I2S_AUDIOFREQ_48K 48000U /*!< Audio Frequency configuration 48000 Hz */ +#define LL_I2S_AUDIOFREQ_44K 44100U /*!< Audio Frequency configuration 44100 Hz */ +#define LL_I2S_AUDIOFREQ_32K 32000U /*!< Audio Frequency configuration 32000 Hz */ +#define LL_I2S_AUDIOFREQ_22K 22050U /*!< Audio Frequency configuration 22050 Hz */ +#define LL_I2S_AUDIOFREQ_16K 16000U /*!< Audio Frequency configuration 16000 Hz */ +#define LL_I2S_AUDIOFREQ_11K 11025U /*!< Audio Frequency configuration 11025 Hz */ +#define LL_I2S_AUDIOFREQ_8K 8000U /*!< Audio Frequency configuration 8000 Hz */ +#define LL_I2S_AUDIOFREQ_DEFAULT 2U /*!< Audio Freq not specified. Register I2SDIV = 2 */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup I2S_LL_Exported_Macros I2S Exported Macros + * @{ + */ + +/** @defgroup I2S_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in I2S register + * @param __INSTANCE__ I2S Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_I2S_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in I2S register + * @param __INSTANCE__ I2S Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_I2S_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup I2S_LL_Exported_Functions I2S Exported Functions + * @{ + */ + +/** @defgroup I2S_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Select I2S mode and Enable I2S peripheral + * @rmtoll I2SCFGR I2SMOD LL_I2S_Enable\n + * I2SCFGR I2SE LL_I2S_Enable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_Enable(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE); +} + +/** + * @brief Disable I2S peripheral + * @rmtoll I2SCFGR I2SE LL_I2S_Disable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_Disable(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE); +} + +/** + * @brief Check if I2S peripheral is enabled + * @rmtoll I2SCFGR I2SE LL_I2S_IsEnabled + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabled(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SE) == (SPI_I2SCFGR_I2SE)) ? 1UL : 0UL); +} + +/** + * @brief Set I2S data frame length + * @rmtoll I2SCFGR DATLEN LL_I2S_SetDataFormat\n + * I2SCFGR CHLEN LL_I2S_SetDataFormat + * @param SPIx SPI Instance + * @param DataFormat This parameter can be one of the following values: + * @arg @ref LL_I2S_DATAFORMAT_16B + * @arg @ref LL_I2S_DATAFORMAT_16B_EXTENDED + * @arg @ref LL_I2S_DATAFORMAT_24B + * @arg @ref LL_I2S_DATAFORMAT_32B + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetDataFormat(SPI_TypeDef *SPIx, uint32_t DataFormat) +{ + MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN, DataFormat); +} + +/** + * @brief Get I2S data frame length + * @rmtoll I2SCFGR DATLEN LL_I2S_GetDataFormat\n + * I2SCFGR CHLEN LL_I2S_GetDataFormat + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_DATAFORMAT_16B + * @arg @ref LL_I2S_DATAFORMAT_16B_EXTENDED + * @arg @ref LL_I2S_DATAFORMAT_24B + * @arg @ref LL_I2S_DATAFORMAT_32B + */ +__STATIC_INLINE uint32_t LL_I2S_GetDataFormat(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN)); +} + +/** + * @brief Set I2S clock polarity + * @rmtoll I2SCFGR CKPOL LL_I2S_SetClockPolarity + * @param SPIx SPI Instance + * @param ClockPolarity This parameter can be one of the following values: + * @arg @ref LL_I2S_POLARITY_LOW + * @arg @ref LL_I2S_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity) +{ + SET_BIT(SPIx->I2SCFGR, ClockPolarity); +} + +/** + * @brief Get I2S clock polarity + * @rmtoll I2SCFGR CKPOL LL_I2S_GetClockPolarity + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_POLARITY_LOW + * @arg @ref LL_I2S_POLARITY_HIGH + */ +__STATIC_INLINE uint32_t LL_I2S_GetClockPolarity(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_CKPOL)); +} + +/** + * @brief Set I2S standard protocol + * @rmtoll I2SCFGR I2SSTD LL_I2S_SetStandard\n + * I2SCFGR PCMSYNC LL_I2S_SetStandard + * @param SPIx SPI Instance + * @param Standard This parameter can be one of the following values: + * @arg @ref LL_I2S_STANDARD_PHILIPS + * @arg @ref LL_I2S_STANDARD_MSB + * @arg @ref LL_I2S_STANDARD_LSB + * @arg @ref LL_I2S_STANDARD_PCM_SHORT + * @arg @ref LL_I2S_STANDARD_PCM_LONG + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard) +{ + MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC, Standard); +} + +/** + * @brief Get I2S standard protocol + * @rmtoll I2SCFGR I2SSTD LL_I2S_GetStandard\n + * I2SCFGR PCMSYNC LL_I2S_GetStandard + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_STANDARD_PHILIPS + * @arg @ref LL_I2S_STANDARD_MSB + * @arg @ref LL_I2S_STANDARD_LSB + * @arg @ref LL_I2S_STANDARD_PCM_SHORT + * @arg @ref LL_I2S_STANDARD_PCM_LONG + */ +__STATIC_INLINE uint32_t LL_I2S_GetStandard(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC)); +} + +/** + * @brief Set I2S transfer mode + * @rmtoll I2SCFGR I2SCFG LL_I2S_SetTransferMode + * @param SPIx SPI Instance + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_I2S_MODE_SLAVE_TX + * @arg @ref LL_I2S_MODE_SLAVE_RX + * @arg @ref LL_I2S_MODE_MASTER_TX + * @arg @ref LL_I2S_MODE_MASTER_RX + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetTransferMode(SPI_TypeDef *SPIx, uint32_t Mode) +{ + MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_I2SCFG, Mode); +} + +/** + * @brief Get I2S transfer mode + * @rmtoll I2SCFGR I2SCFG LL_I2S_GetTransferMode + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_MODE_SLAVE_TX + * @arg @ref LL_I2S_MODE_SLAVE_RX + * @arg @ref LL_I2S_MODE_MASTER_TX + * @arg @ref LL_I2S_MODE_MASTER_RX + */ +__STATIC_INLINE uint32_t LL_I2S_GetTransferMode(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SCFG)); +} + +/** + * @brief Set I2S linear prescaler + * @rmtoll I2SPR I2SDIV LL_I2S_SetPrescalerLinear + * @param SPIx SPI Instance + * @param PrescalerLinear Value between Min_Data=0x02 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetPrescalerLinear(SPI_TypeDef *SPIx, uint8_t PrescalerLinear) +{ + MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_I2SDIV, PrescalerLinear); +} + +/** + * @brief Get I2S linear prescaler + * @rmtoll I2SPR I2SDIV LL_I2S_GetPrescalerLinear + * @param SPIx SPI Instance + * @retval PrescalerLinear Value between Min_Data=0x02 and Max_Data=0xFF + */ +__STATIC_INLINE uint32_t LL_I2S_GetPrescalerLinear(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SPR, SPI_I2SPR_I2SDIV)); +} + +/** + * @brief Set I2S parity prescaler + * @rmtoll I2SPR ODD LL_I2S_SetPrescalerParity + * @param SPIx SPI Instance + * @param PrescalerParity This parameter can be one of the following values: + * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN + * @arg @ref LL_I2S_PRESCALER_PARITY_ODD + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetPrescalerParity(SPI_TypeDef *SPIx, uint32_t PrescalerParity) +{ + MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_ODD, PrescalerParity << 8U); +} + +/** + * @brief Get I2S parity prescaler + * @rmtoll I2SPR ODD LL_I2S_GetPrescalerParity + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN + * @arg @ref LL_I2S_PRESCALER_PARITY_ODD + */ +__STATIC_INLINE uint32_t LL_I2S_GetPrescalerParity(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SPR, SPI_I2SPR_ODD) >> 8U); +} + +/** + * @brief Enable the master clock output (Pin MCK) + * @rmtoll I2SPR MCKOE LL_I2S_EnableMasterClock + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableMasterClock(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE); +} + +/** + * @brief Disable the master clock output (Pin MCK) + * @rmtoll I2SPR MCKOE LL_I2S_DisableMasterClock + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableMasterClock(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE); +} + +/** + * @brief Check if the master clock output (Pin MCK) is enabled + * @rmtoll I2SPR MCKOE LL_I2S_IsEnabledMasterClock + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledMasterClock(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE) == (SPI_I2SPR_MCKOE)) ? 1UL : 0UL); +} + +#if defined(SPI_I2SCFGR_ASTRTEN) +/** + * @brief Enable asynchronous start + * @rmtoll I2SCFGR ASTRTEN LL_I2S_EnableAsyncStart + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableAsyncStart(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_ASTRTEN); +} + +/** + * @brief Disable asynchronous start + * @rmtoll I2SCFGR ASTRTEN LL_I2S_DisableAsyncStart + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableAsyncStart(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_ASTRTEN); +} + +/** + * @brief Check if asynchronous start is enabled + * @rmtoll I2SCFGR ASTRTEN LL_I2S_IsEnabledAsyncStart + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledAsyncStart(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_ASTRTEN) == (SPI_I2SCFGR_ASTRTEN)) ? 1UL : 0UL); +} +#endif /* SPI_I2SCFGR_ASTRTEN */ + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_FLAG FLAG Management + * @{ + */ + +/** + * @brief Check if Rx buffer is not empty + * @rmtoll SR RXNE LL_I2S_IsActiveFlag_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_RXNE(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_RXNE(SPIx); +} + +/** + * @brief Check if Tx buffer is empty + * @rmtoll SR TXE LL_I2S_IsActiveFlag_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_TXE(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_TXE(SPIx); +} + +/** + * @brief Get busy flag + * @rmtoll SR BSY LL_I2S_IsActiveFlag_BSY + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_BSY(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_BSY(SPIx); +} + +/** + * @brief Get overrun error flag + * @rmtoll SR OVR LL_I2S_IsActiveFlag_OVR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_OVR(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_OVR(SPIx); +} + +/** + * @brief Get underrun error flag + * @rmtoll SR UDR LL_I2S_IsActiveFlag_UDR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_UDR(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_UDR) == (SPI_SR_UDR)) ? 1UL : 0UL); +} + +/** + * @brief Get frame format error flag + * @rmtoll SR FRE LL_I2S_IsActiveFlag_FRE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_FRE(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_FRE(SPIx); +} + +/** + * @brief Get channel side flag. + * @note 0: Channel Left has to be transmitted or has been received\n + * 1: Channel Right has to be transmitted or has been received\n + * It has no significance in PCM mode. + * @rmtoll SR CHSIDE LL_I2S_IsActiveFlag_CHSIDE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_CHSIDE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_CHSIDE) == (SPI_SR_CHSIDE)) ? 1UL : 0UL); +} + +/** + * @brief Clear overrun error flag + * @rmtoll SR OVR LL_I2S_ClearFlag_OVR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_ClearFlag_OVR(SPI_TypeDef *SPIx) +{ + LL_SPI_ClearFlag_OVR(SPIx); +} + +/** + * @brief Clear underrun error flag + * @rmtoll SR UDR LL_I2S_ClearFlag_UDR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_ClearFlag_UDR(SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg; + tmpreg = SPIx->SR; + (void)tmpreg; +} + +/** + * @brief Clear frame format error flag + * @rmtoll SR FRE LL_I2S_ClearFlag_FRE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_ClearFlag_FRE(SPI_TypeDef *SPIx) +{ + LL_SPI_ClearFlag_FRE(SPIx); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_IT Interrupt Management + * @{ + */ + +/** + * @brief Enable error IT + * @note This bit controls the generation of an interrupt when an error condition occurs (OVR, UDR and FRE in I2S mode). + * @rmtoll CR2 ERRIE LL_I2S_EnableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableIT_ERR(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableIT_ERR(SPIx); +} + +/** + * @brief Enable Rx buffer not empty IT + * @rmtoll CR2 RXNEIE LL_I2S_EnableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableIT_RXNE(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableIT_RXNE(SPIx); +} + +/** + * @brief Enable Tx buffer empty IT + * @rmtoll CR2 TXEIE LL_I2S_EnableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableIT_TXE(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableIT_TXE(SPIx); +} + +/** + * @brief Disable error IT + * @note This bit controls the generation of an interrupt when an error condition occurs (OVR, UDR and FRE in I2S mode). + * @rmtoll CR2 ERRIE LL_I2S_DisableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableIT_ERR(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableIT_ERR(SPIx); +} + +/** + * @brief Disable Rx buffer not empty IT + * @rmtoll CR2 RXNEIE LL_I2S_DisableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableIT_RXNE(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableIT_RXNE(SPIx); +} + +/** + * @brief Disable Tx buffer empty IT + * @rmtoll CR2 TXEIE LL_I2S_DisableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableIT_TXE(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableIT_TXE(SPIx); +} + +/** + * @brief Check if ERR IT is enabled + * @rmtoll CR2 ERRIE LL_I2S_IsEnabledIT_ERR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_ERR(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledIT_ERR(SPIx); +} + +/** + * @brief Check if RXNE IT is enabled + * @rmtoll CR2 RXNEIE LL_I2S_IsEnabledIT_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_RXNE(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledIT_RXNE(SPIx); +} + +/** + * @brief Check if TXE IT is enabled + * @rmtoll CR2 TXEIE LL_I2S_IsEnabledIT_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_TXE(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledIT_TXE(SPIx); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_DMA DMA Management + * @{ + */ + +/** + * @brief Enable DMA Rx + * @rmtoll CR2 RXDMAEN LL_I2S_EnableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableDMAReq_RX(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableDMAReq_RX(SPIx); +} + +/** + * @brief Disable DMA Rx + * @rmtoll CR2 RXDMAEN LL_I2S_DisableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableDMAReq_RX(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableDMAReq_RX(SPIx); +} + +/** + * @brief Check if DMA Rx is enabled + * @rmtoll CR2 RXDMAEN LL_I2S_IsEnabledDMAReq_RX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledDMAReq_RX(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledDMAReq_RX(SPIx); +} + +/** + * @brief Enable DMA Tx + * @rmtoll CR2 TXDMAEN LL_I2S_EnableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableDMAReq_TX(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableDMAReq_TX(SPIx); +} + +/** + * @brief Disable DMA Tx + * @rmtoll CR2 TXDMAEN LL_I2S_DisableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableDMAReq_TX(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableDMAReq_TX(SPIx); +} + +/** + * @brief Check if DMA Tx is enabled + * @rmtoll CR2 TXDMAEN LL_I2S_IsEnabledDMAReq_TX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledDMAReq_TX(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledDMAReq_TX(SPIx); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_DATA DATA Management + * @{ + */ + +/** + * @brief Read 16-Bits in data register + * @rmtoll DR DR LL_I2S_ReceiveData16 + * @param SPIx SPI Instance + * @retval RxData Value between Min_Data=0x0000 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint16_t LL_I2S_ReceiveData16(SPI_TypeDef *SPIx) +{ + return LL_SPI_ReceiveData16(SPIx); +} + +/** + * @brief Write 16-Bits in data register + * @rmtoll DR DR LL_I2S_TransmitData16 + * @param SPIx SPI Instance + * @param TxData Value between Min_Data=0x0000 and Max_Data=0xFFFF + * @retval None + */ +__STATIC_INLINE void LL_I2S_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData) +{ + LL_SPI_TransmitData16(SPIx, TxData); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2S_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_I2S_DeInit(SPI_TypeDef *SPIx); +ErrorStatus LL_I2S_Init(SPI_TypeDef *SPIx, LL_I2S_InitTypeDef *I2S_InitStruct); +void LL_I2S_StructInit(LL_I2S_InitTypeDef *I2S_InitStruct); +void LL_I2S_ConfigPrescaler(SPI_TypeDef *SPIx, uint32_t PrescalerLinear, uint32_t PrescalerParity); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (SPI1) || defined (SPI2) || defined (SPI3) || defined (SPI4) || defined (SPI5) || defined(SPI6) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F7xx_LL_SPI_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h new file mode 100644 index 0000000..d6aed25 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h @@ -0,0 +1,1018 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_system.h + * @author MCD Application Team + * @brief Header file of SYSTEM LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL SYSTEM driver contains a set of generic APIs that can be + used by user: + (+) Some of the FLASH features need to be handled in the SYSTEM file. + (+) Access to DBGCMU registers + (+) Access to SYSCFG registers + + @endverbatim + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_SYSTEM_H +#define __STM32F7xx_LL_SYSTEM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) + +/** @defgroup SYSTEM_LL SYSTEM + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants + * @{ + */ + +/** @defgroup SYSTEM_LL_EC_REMAP SYSCFG REMAP +* @{ +*/ +#define LL_SYSCFG_REMAP_BOOT0 0x00000000U /*!< Boot information after Reset */ +#define LL_SYSCFG_REMAP_BOOT1 SYSCFG_MEMRMP_MEM_BOOT /*!< Boot information after Reset */ +/** + * @} + */ + + +#if defined(SYSCFG_MEMRMP_SWP_FB) +/** @defgroup SYSTEM_LL_EC_BANKMODE SYSCFG BANK MODE + * @{ + */ +#define LL_SYSCFG_BANKMODE_BANK1 0x00000000U /*!< Flash Bank 1 base address mapped at 0x0800 0000 (AXI) and 0x0020 0000 (TCM) + and Flash Bank 2 base address mapped at 0x0810 0000 (AXI) and 0x0030 0000 (TCM)*/ + +#define LL_SYSCFG_BANKMODE_BANK2 SYSCFG_MEMRMP_SWP_FB /*!< Flash Bank 2 base address mapped at 0x0800 0000 (AXI) and 0x0020 0000(TCM) + and Flash Bank 1 base address mapped at 0x0810 0000 (AXI) and 0x0030 0000(TCM) */ +/** + * @} + */ +#endif /* SYSCFG_MEMRMP_SWP_FB */ + +#if defined(SYSCFG_PMC_MII_RMII_SEL) + /** @defgroup SYSTEM_LL_EC_PMC SYSCFG PMC +* @{ +*/ +#define LL_SYSCFG_PMC_ETHMII 0x00000000U /*!< ETH Media MII interface */ +#define LL_SYSCFG_PMC_ETHRMII (uint32_t)SYSCFG_PMC_MII_RMII_SEL /*!< ETH Media RMII interface */ + +/** + * @} + */ +#endif /* SYSCFG_PMC_MII_RMII_SEL */ + +/** @defgroup SYSTEM_LL_EC_I2C_FASTMODEPLUS SYSCFG I2C FASTMODEPLUS + * @{ + */ +#if defined(SYSCFG_PMC_I2C1_FMP) +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 SYSCFG_PMC_I2C1_FMP /*!< Enable Fast Mode Plus for I2C1 */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 SYSCFG_PMC_I2C2_FMP /*!< Enable Fast Mode Plus for I2C2 */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 SYSCFG_PMC_I2C3_FMP /*!< Enable Fast Mode Plus for I2C3 */ +#endif /* SYSCFG_PMC_I2C1_FMP */ +#if defined(SYSCFG_PMC_I2C4_FMP) +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 SYSCFG_PMC_I2C4_FMP /*!< Enable Fast Mode Plus for I2C4 */ +#endif /* SYSCFG_PMC_I2C4_FMP */ +#if defined(SYSCFG_PMC_I2C_PB6_FMP) +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB6 SYSCFG_PMC_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB7 SYSCFG_PMC_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB8 SYSCFG_PMC_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB9 SYSCFG_PMC_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */ +#endif /* SYSCFG_PMC_I2C_PB6_FMP */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_EXTI_PORT SYSCFG EXTI PORT + * @{ + */ +#define LL_SYSCFG_EXTI_PORTA 0U /*!< EXTI PORT A */ +#define LL_SYSCFG_EXTI_PORTB 1U /*!< EXTI PORT B */ +#define LL_SYSCFG_EXTI_PORTC 2U /*!< EXTI PORT C */ +#define LL_SYSCFG_EXTI_PORTD 3U /*!< EXTI PORT D */ +#define LL_SYSCFG_EXTI_PORTE 4U /*!< EXTI PORT E */ +#if defined(GPIOF) +#define LL_SYSCFG_EXTI_PORTF 5U /*!< EXTI PORT F */ +#endif /* GPIOF */ +#if defined(GPIOG) +#define LL_SYSCFG_EXTI_PORTG 6U /*!< EXTI PORT G */ +#endif /* GPIOG */ +#define LL_SYSCFG_EXTI_PORTH 7U /*!< EXTI PORT H */ +#if defined(GPIOI) +#define LL_SYSCFG_EXTI_PORTI 8U /*!< EXTI PORT I */ +#endif /* GPIOI */ +#if defined(GPIOJ) +#define LL_SYSCFG_EXTI_PORTJ 9U /*!< EXTI PORT J */ +#endif /* GPIOJ */ +#if defined(GPIOK) +#define LL_SYSCFG_EXTI_PORTK 10U /*!< EXTI PORT k */ +#endif /* GPIOK */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_EXTI_LINE SYSCFG EXTI LINE + * @{ + */ +#define LL_SYSCFG_EXTI_LINE0 (0x000FU << 16U | 0U) /*!< EXTI_POSITION_0 | EXTICR[0] */ +#define LL_SYSCFG_EXTI_LINE1 (0x00F0U << 16U | 0U) /*!< EXTI_POSITION_4 | EXTICR[0] */ +#define LL_SYSCFG_EXTI_LINE2 (0x0F00U << 16U | 0U) /*!< EXTI_POSITION_8 | EXTICR[0] */ +#define LL_SYSCFG_EXTI_LINE3 (0xF000U << 16U | 0U) /*!< EXTI_POSITION_12 | EXTICR[0] */ +#define LL_SYSCFG_EXTI_LINE4 (0x000FU << 16U | 1U) /*!< EXTI_POSITION_0 | EXTICR[1] */ +#define LL_SYSCFG_EXTI_LINE5 (0x00F0U << 16U | 1U) /*!< EXTI_POSITION_4 | EXTICR[1] */ +#define LL_SYSCFG_EXTI_LINE6 (0x0F00U << 16U | 1U) /*!< EXTI_POSITION_8 | EXTICR[1] */ +#define LL_SYSCFG_EXTI_LINE7 (0xF000U << 16U | 1U) /*!< EXTI_POSITION_12 | EXTICR[1] */ +#define LL_SYSCFG_EXTI_LINE8 (0x000FU << 16U | 2U) /*!< EXTI_POSITION_0 | EXTICR[2] */ +#define LL_SYSCFG_EXTI_LINE9 (0x00F0U << 16U | 2U) /*!< EXTI_POSITION_4 | EXTICR[2] */ +#define LL_SYSCFG_EXTI_LINE10 (0x0F00U << 16U | 2U) /*!< EXTI_POSITION_8 | EXTICR[2] */ +#define LL_SYSCFG_EXTI_LINE11 (0xF000U << 16U | 2U) /*!< EXTI_POSITION_12 | EXTICR[2] */ +#define LL_SYSCFG_EXTI_LINE12 (0x000FU << 16U | 3U) /*!< EXTI_POSITION_0 | EXTICR[3] */ +#define LL_SYSCFG_EXTI_LINE13 (0x00F0U << 16U | 3U) /*!< EXTI_POSITION_4 | EXTICR[3] */ +#define LL_SYSCFG_EXTI_LINE14 (0x0F00U << 16U | 3U) /*!< EXTI_POSITION_8 | EXTICR[3] */ +#define LL_SYSCFG_EXTI_LINE15 (0xF000U << 16U | 3U) /*!< EXTI_POSITION_12 | EXTICR[3] */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_TIMBREAK SYSCFG TIMER BREAK + * @{ + */ +#if defined(SYSCFG_CBR_CLL) +#define LL_SYSCFG_TIMBREAK_LOCKUP SYSCFG_CBR_CLL /*!< Enables and locks the Lockup output (raised during core + lockup state) of Cortex-M7 with Break Input of TIMER1, TIMER8 */ +#define LL_SYSCFG_TIMBREAK_PVD SYSCFG_CBR_PVDL /*!< Enables and locks the PVD connection with TIMER1, TIMER8 Break input. + It also locks (write protect) the PVD_EN and PVDSEL[2:0] bits + of the power controller */ +#endif /* SYSCFG_CBR_CLL */ +/** + * @} + */ +/** @defgroup SYSTEM_LL_EC_CMP_PD SYSCFG CMP PD + * @{ + */ +#define LL_SYSCFG_DISABLE_CMP_PD 0x00000000U /*!< I/O compensation cell power-down mode */ +#define LL_SYSCFG_ENABLE_CMP_PD SYSCFG_CMPCR_CMP_PD /*!< I/O compensation cell enabled */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_TRACE DBGMCU TRACE Pin Assignment + * @{ + */ +#define LL_DBGMCU_TRACE_NONE 0x00000000U /*!< TRACE pins not assigned (default state) */ +#define LL_DBGMCU_TRACE_ASYNCH DBGMCU_CR_TRACE_IOEN /*!< TRACE pin assignment for Asynchronous Mode */ +#define LL_DBGMCU_TRACE_SYNCH_SIZE1 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_0) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 1 */ +#define LL_DBGMCU_TRACE_SYNCH_SIZE2 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_1) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 2 */ +#define LL_DBGMCU_TRACE_SYNCH_SIZE4 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 4 */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP_IP DBGMCU APB1 GRP1 STOP IP + * @{ + */ +#define LL_DBGMCU_APB1_GRP1_TIM2_STOP DBGMCU_APB1_FZ_DBG_TIM2_STOP /*!< TIM2 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_TIM3_STOP DBGMCU_APB1_FZ_DBG_TIM3_STOP /*!< TIM3 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_TIM4_STOP DBGMCU_APB1_FZ_DBG_TIM4_STOP /*!< TIM4 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_TIM5_STOP DBGMCU_APB1_FZ_DBG_TIM5_STOP /*!< TIM5 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_TIM6_STOP DBGMCU_APB1_FZ_DBG_TIM6_STOP /*!< TIM6 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_TIM7_STOP DBGMCU_APB1_FZ_DBG_TIM7_STOP /*!< TIM7 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_TIM12_STOP DBGMCU_APB1_FZ_DBG_TIM12_STOP /*!< TIM12 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_TIM13_STOP DBGMCU_APB1_FZ_DBG_TIM13_STOP /*!< TIM13 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_TIM14_STOP DBGMCU_APB1_FZ_DBG_TIM14_STOP /*!< TIM14 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_LPTIM1_STOP DBGMCU_APB1_FZ_DBG_LPTIM1_STOP /*!< LPTIIM1 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_RTC_STOP DBGMCU_APB1_FZ_DBG_RTC_STOP /*!< RTC counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_WWDG_STOP DBGMCU_APB1_FZ_DBG_WWDG_STOP /*!< Debug Window Watchdog stopped when Core is halted */ +#define LL_DBGMCU_APB1_GRP1_IWDG_STOP DBGMCU_APB1_FZ_DBG_IWDG_STOP /*!< Debug Independent Watchdog stopped when Core is halted */ +#define LL_DBGMCU_APB1_GRP1_I2C1_STOP DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT /*!< I2C1 SMBUS timeout mode stopped when Core is halted */ +#define LL_DBGMCU_APB1_GRP1_I2C2_STOP DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT /*!< I2C2 SMBUS timeout mode stopped when Core is halted */ +#define LL_DBGMCU_APB1_GRP1_I2C3_STOP DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT /*!< I2C3 SMBUS timeout mode stopped when Core is halted */ +#if defined(DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT) +#define LL_DBGMCU_APB1_GRP1_I2C4_STOP DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT /*!< I2C4 SMBUS timeout mode stopped when core is halted */ +#endif /* DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT */ +#define LL_DBGMCU_APB1_GRP1_CAN1_STOP DBGMCU_APB1_FZ_DBG_CAN1_STOP /*!< CAN1 debug stopped when Core is halted */ +#if defined(DBGMCU_APB1_FZ_DBG_CAN2_STOP) +#define LL_DBGMCU_APB1_GRP1_CAN2_STOP DBGMCU_APB1_FZ_DBG_CAN2_STOP /*!< CAN2 debug stopped when Core is halted */ +#endif /* DBGMCU_APB1_FZ_DBG_CAN2_STOP */ +#if defined(DBGMCU_APB1_FZ_DBG_CAN3_STOP) +#define LL_DBGMCU_APB1_GRP1_CAN3_STOP DBGMCU_APB1_FZ_DBG_CAN3_STOP /*!< CAN3 debug stopped when Core is halted */ +#endif /*DBGMCU_APB1_FZ_DBG_CAN3_STOP*/ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP_IP DBGMCU APB2 GRP1 STOP IP + * @{ + */ +#define LL_DBGMCU_APB2_GRP1_TIM1_STOP DBGMCU_APB2_FZ_DBG_TIM1_STOP /*!< TIM1 counter stopped when core is halted */ +#define LL_DBGMCU_APB2_GRP1_TIM8_STOP DBGMCU_APB2_FZ_DBG_TIM8_STOP /*!< TIM8 counter stopped when core is halted */ +#define LL_DBGMCU_APB2_GRP1_TIM9_STOP DBGMCU_APB2_FZ_DBG_TIM9_STOP /*!< TIM9 counter stopped when core is halted */ +#define LL_DBGMCU_APB2_GRP1_TIM10_STOP DBGMCU_APB2_FZ_DBG_TIM10_STOP /*!< TIM10 counter stopped when core is halted */ +#define LL_DBGMCU_APB2_GRP1_TIM11_STOP DBGMCU_APB2_FZ_DBG_TIM11_STOP /*!< TIM11 counter stopped when core is halted */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY + * @{ + */ +#define LL_FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH Zero wait state */ +#define LL_FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH One wait state */ +#define LL_FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH Two wait states */ +#define LL_FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH Three wait states */ +#define LL_FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH Four wait states */ +#define LL_FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH five wait state */ +#define LL_FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH six wait state */ +#define LL_FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH seven wait states */ +#define LL_FLASH_LATENCY_8 FLASH_ACR_LATENCY_8WS /*!< FLASH eight wait states */ +#define LL_FLASH_LATENCY_9 FLASH_ACR_LATENCY_9WS /*!< FLASH nine wait states */ +#define LL_FLASH_LATENCY_10 FLASH_ACR_LATENCY_10WS /*!< FLASH ten wait states */ +#define LL_FLASH_LATENCY_11 FLASH_ACR_LATENCY_11WS /*!< FLASH eleven wait states */ +#define LL_FLASH_LATENCY_12 FLASH_ACR_LATENCY_12WS /*!< FLASH twelve wait states */ +#define LL_FLASH_LATENCY_13 FLASH_ACR_LATENCY_13WS /*!< FLASH thirteen wait states */ +#define LL_FLASH_LATENCY_14 FLASH_ACR_LATENCY_14WS /*!< FLASH fourteen wait states */ +#define LL_FLASH_LATENCY_15 FLASH_ACR_LATENCY_15WS /*!< FLASH fifteen wait states */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions + * @{ + */ + +/** @defgroup SYSTEM_LL_EF_SYSCFG SYSCFG + * @{ + */ + +/** + * @brief Enables the FMC Memory Mapping Swapping + * @rmtoll SYSCFG_MEMRMP SWP_FMC LL_SYSCFG_EnableFMCMemorySwapping + * @note SDRAM is accessible at 0x60000000 and NOR/RAM + * is accessible at 0xC0000000 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableFMCMemorySwapping(void) +{ + SET_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FMC_0); +} + +/** + * @brief Disables the FMC Memory Mapping Swapping + * @rmtoll SYSCFG_MEMRMP SWP_FMC LL_SYSCFG_DisableFMCMemorySwapping + * @note SDRAM is accessible at 0xC0000000 (default mapping) + * and NOR/RAM is accessible at 0x60000000 (default mapping) + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableFMCMemorySwapping(void) +{ + CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FMC); +} + +/** + * @brief Enables the Compensation Cell + * @rmtoll SYSCFG_CMPCR CMP_PD LL_SYSCFG_EnableCompensationCell + * @note The I/O compensation cell can be used only when the device supply + * voltage ranges from 2.4 to 3.6 V + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableCompensationCell(void) +{ + SET_BIT(SYSCFG->CMPCR, SYSCFG_CMPCR_CMP_PD); +} + +/** + * @brief Disables the Compensation Cell + * @rmtoll SYSCFG_CMPCR CMP_PD LL_SYSCFG_DisableCompensationCell + * @note The I/O compensation cell can be used only when the device supply + * voltage ranges from 2.4 to 3.6 V + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableCompensationCell(void) +{ + CLEAR_BIT(SYSCFG->CMPCR, SYSCFG_CMPCR_CMP_PD); +} + +/** + * @brief Get Compensation Cell ready Flag + * @rmtoll SYSCFG_CMPCR READY LL_SYSCFG_IsActiveFlag_CMPCR + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_CMPCR(void) +{ + return (READ_BIT(SYSCFG->CMPCR, SYSCFG_CMPCR_READY) == (SYSCFG_CMPCR_READY)); +} + + +/** + * @brief Get the memory boot mapping as configured by user + * @rmtoll SYSCFG_MEMRMP MEM_BOOT LL_SYSCFG_GetRemapMemoryBoot + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_REMAP_BOOT0 + * @arg @ref LL_SYSCFG_REMAP_BOOT1 + * + * (*) value not defined in all devices + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetRemapMemoryBoot(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_BOOT)); +} + +#if defined(SYSCFG_PMC_MII_RMII_SEL) +/** + * @brief Select Ethernet PHY interface + * @rmtoll SYSCFG_PMC MII_RMII_SEL LL_SYSCFG_SetPHYInterface + * @param Interface This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_PMC_ETHMII + * @arg @ref LL_SYSCFG_PMC_ETHRMII + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetPHYInterface(uint32_t Interface) +{ + MODIFY_REG(SYSCFG->PMC, SYSCFG_PMC_MII_RMII_SEL, Interface); +} + +/** + * @brief Get Ethernet PHY interface + * @rmtoll SYSCFG_PMC MII_RMII_SEL LL_SYSCFG_GetPHYInterface + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_PMC_ETHMII + * @arg @ref LL_SYSCFG_PMC_ETHRMII + * @retval None + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetPHYInterface(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->PMC, SYSCFG_PMC_MII_RMII_SEL)); +} +#endif /* SYSCFG_PMC_MII_RMII_SEL */ + + +#if defined(SYSCFG_MEMRMP_SWP_FB) +/** + * @brief Select Flash bank mode (Bank flashed at 0x08000000) + * @rmtoll SYSCFG_MEMRMP FB_MODE LL_SYSCFG_SetFlashBankMode + * @param Bank This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_BANKMODE_BANK1 + * @arg @ref LL_SYSCFG_BANKMODE_BANK2 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetFlashBankMode(uint32_t Bank) +{ + MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB, Bank); +} + +/** + * @brief Get Flash bank mode (Bank flashed at 0x08000000) + * @rmtoll SYSCFG_MEMRMP FB_MODE LL_SYSCFG_GetFlashBankMode + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_BANKMODE_BANK1 + * @arg @ref LL_SYSCFG_BANKMODE_BANK2 + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetFlashBankMode(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB)); +} + +#endif /* SYSCFG_MEMRMP_SWP_FB */ + +#if defined(SYSCFG_PMC_I2C1_FMP) +/** + * @brief Enable the I2C fast mode plus driving capability. + * @rmtoll SYSCFG_PMC I2C_PBx_FMP LL_SYSCFG_EnableFastModePlus\n + * SYSCFG_PMC I2Cx_FMP LL_SYSCFG_EnableFastModePlus + * @param ConfigFastModePlus This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4(*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableFastModePlus(uint32_t ConfigFastModePlus) +{ + SET_BIT(SYSCFG->PMC, ConfigFastModePlus); +} + +/** + * @brief Disable the I2C fast mode plus driving capability. + * @rmtoll SYSCFG_PMC I2C_PBx_FMP LL_SYSCFG_DisableFastModePlus\n + * SYSCFG_PMC I2Cx_FMP LL_SYSCFG_DisableFastModePlus + * @param ConfigFastModePlus This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableFastModePlus(uint32_t ConfigFastModePlus) +{ + CLEAR_BIT(SYSCFG->PMC, ConfigFastModePlus); +} +#endif /* SYSCFG_PMC_I2C1_FMP */ + + +/** + * @brief Configure source input for the EXTI external interrupt. + * @rmtoll SYSCFG_EXTICR1 EXTIx LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTIx LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTIx LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTIx LL_SYSCFG_SetEXTISource + * @param Port This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_PORTA + * @arg @ref LL_SYSCFG_EXTI_PORTB + * @arg @ref LL_SYSCFG_EXTI_PORTC + * @arg @ref LL_SYSCFG_EXTI_PORTD + * @arg @ref LL_SYSCFG_EXTI_PORTE + * @arg @ref LL_SYSCFG_EXTI_PORTF + * @arg @ref LL_SYSCFG_EXTI_PORTG + * @arg @ref LL_SYSCFG_EXTI_PORTH + * @arg @ref LL_SYSCFG_EXTI_PORTI + * @arg @ref LL_SYSCFG_EXTI_PORTJ + * @arg @ref LL_SYSCFG_EXTI_PORTK + * + * (*) value not defined in all devices + * @param Line This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_LINE0 + * @arg @ref LL_SYSCFG_EXTI_LINE1 + * @arg @ref LL_SYSCFG_EXTI_LINE2 + * @arg @ref LL_SYSCFG_EXTI_LINE3 + * @arg @ref LL_SYSCFG_EXTI_LINE4 + * @arg @ref LL_SYSCFG_EXTI_LINE5 + * @arg @ref LL_SYSCFG_EXTI_LINE6 + * @arg @ref LL_SYSCFG_EXTI_LINE7 + * @arg @ref LL_SYSCFG_EXTI_LINE8 + * @arg @ref LL_SYSCFG_EXTI_LINE9 + * @arg @ref LL_SYSCFG_EXTI_LINE10 + * @arg @ref LL_SYSCFG_EXTI_LINE11 + * @arg @ref LL_SYSCFG_EXTI_LINE12 + * @arg @ref LL_SYSCFG_EXTI_LINE13 + * @arg @ref LL_SYSCFG_EXTI_LINE14 + * @arg @ref LL_SYSCFG_EXTI_LINE15 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetEXTISource(uint32_t Port, uint32_t Line) +{ + MODIFY_REG(SYSCFG->EXTICR[Line & 0xFFU], (Line >> 16U), Port << POSITION_VAL((Line >> 16U))); +} + +/** + * @brief Get the configured defined for specific EXTI Line + * @rmtoll SYSCFG_EXTICR1 EXTIx LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTIx LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTIx LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTIx LL_SYSCFG_GetEXTISource + * @param Line This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_LINE0 + * @arg @ref LL_SYSCFG_EXTI_LINE1 + * @arg @ref LL_SYSCFG_EXTI_LINE2 + * @arg @ref LL_SYSCFG_EXTI_LINE3 + * @arg @ref LL_SYSCFG_EXTI_LINE4 + * @arg @ref LL_SYSCFG_EXTI_LINE5 + * @arg @ref LL_SYSCFG_EXTI_LINE6 + * @arg @ref LL_SYSCFG_EXTI_LINE7 + * @arg @ref LL_SYSCFG_EXTI_LINE8 + * @arg @ref LL_SYSCFG_EXTI_LINE9 + * @arg @ref LL_SYSCFG_EXTI_LINE10 + * @arg @ref LL_SYSCFG_EXTI_LINE11 + * @arg @ref LL_SYSCFG_EXTI_LINE12 + * @arg @ref LL_SYSCFG_EXTI_LINE13 + * @arg @ref LL_SYSCFG_EXTI_LINE14 + * @arg @ref LL_SYSCFG_EXTI_LINE15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_PORTA + * @arg @ref LL_SYSCFG_EXTI_PORTB + * @arg @ref LL_SYSCFG_EXTI_PORTC + * @arg @ref LL_SYSCFG_EXTI_PORTD + * @arg @ref LL_SYSCFG_EXTI_PORTE + * @arg @ref LL_SYSCFG_EXTI_PORTF + * @arg @ref LL_SYSCFG_EXTI_PORTG + * @arg @ref LL_SYSCFG_EXTI_PORTH + * @arg @ref LL_SYSCFG_EXTI_PORTI + * @arg @ref LL_SYSCFG_EXTI_PORTJ + * @arg @ref LL_SYSCFG_EXTI_PORTK + * (*) value not defined in all devices + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetEXTISource(uint32_t Line) +{ + return (uint32_t)(READ_BIT(SYSCFG->EXTICR[Line & 0xFFU], (Line >> 16U)) >> POSITION_VAL(Line >> 16U)); +} + +#if defined(SYSCFG_CBR_CLL) +/** + * @brief Set connections to TIM1/8/15/16/17 Break inputs + * SYSCFG_CBR CLL LL_SYSCFG_SetTIMBreakInputs\n + * SYSCFG_CBR PVDL LL_SYSCFG_SetTIMBreakInputs + * @param Break This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP + * @arg @ref LL_SYSCFG_TIMBREAK_PVD + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetTIMBreakInputs(uint32_t Break) +{ + MODIFY_REG(SYSCFG->CBR, SYSCFG_CBR_CLL | SYSCFG_CBR_PVDL, Break); +} + +/** + * @brief Get connections to TIM1/8/15/16/17 Break inputs + * SYSCFG_CBR CLL LL_SYSCFG_GetTIMBreakInputs\n + * SYSCFG_CBR PVDL LL_SYSCFG_GetTIMBreakInputs + * @retval Returned value can be can be a combination of the following values: + * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP + * @arg @ref LL_SYSCFG_TIMBREAK_PVD + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetTIMBreakInputs(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->CBR, SYSCFG_CBR_CLL | SYSCFG_CBR_PVDL)); +} +#endif /* SYSCFG_CBR_CLL */ + +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU + * @{ + */ + +/** + * @brief Return the device identifier + * @note For STM32F75xxx and STM32F74xxx devices, the device ID is 0x449 + * @note For STM32F77xxx and STM32F76xxx devices, the device ID is 0x451 + * @note For STM32F72xxx and STM32F73xxx devices, the device ID is 0x452 + * @rmtoll DBGMCU_IDCODE DEV_ID LL_DBGMCU_GetDeviceID + * @retval Values between Min_Data=0x00 and Max_Data=0xFFF + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID)); +} + +/** + * @brief Return the device revision identifier + * @note This field indicates the revision of the device. + For example, it is read as RevA -> 0x1000, Cat 2 revZ -> 0x1001 + * @rmtoll DBGMCU_IDCODE REV_ID LL_DBGMCU_GetRevisionID + * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> DBGMCU_IDCODE_REV_ID_Pos); +} + +/** + * @brief Enable the Debug Module during SLEEP mode + * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_EnableDBGSleepMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGSleepMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Disable the Debug Module during SLEEP mode + * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_DisableDBGSleepMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGSleepMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Enable the Debug Module during STOP mode + * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_EnableDBGStopMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGStopMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Disable the Debug Module during STOP mode + * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_DisableDBGStopMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGStopMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Enable the Debug Module during STANDBY mode + * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_EnableDBGStandbyMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGStandbyMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Disable the Debug Module during STANDBY mode + * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_DisableDBGStandbyMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGStandbyMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Set Trace pin assignment control + * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_SetTracePinAssignment\n + * DBGMCU_CR TRACE_MODE LL_DBGMCU_SetTracePinAssignment + * @param PinAssignment This parameter can be one of the following values: + * @arg @ref LL_DBGMCU_TRACE_NONE + * @arg @ref LL_DBGMCU_TRACE_ASYNCH + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4 + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_SetTracePinAssignment(uint32_t PinAssignment) +{ + MODIFY_REG(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE, PinAssignment); +} + +/** + * @brief Get Trace pin assignment control + * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_GetTracePinAssignment\n + * DBGMCU_CR TRACE_MODE LL_DBGMCU_GetTracePinAssignment + * @retval Returned value can be one of the following values: + * @arg @ref LL_DBGMCU_TRACE_NONE + * @arg @ref LL_DBGMCU_TRACE_ASYNCH + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4 + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetTracePinAssignment(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE)); +} + +/** + * @brief Freeze APB1 peripherals (group1 peripherals) + * @rmtoll DBGMCU_APB1_FZ DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM4_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM5_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM12_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM13_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM14_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_LPTIM1_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_I2C1_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_I2C2_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_I2C3_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_I2C4_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_CAN1_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_CAN2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_APB1_FZ DBG_CAN3_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM12_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM13_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM14_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C4_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN3_STOP (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBGMCU->APB1FZ, Periphs); +} + +/** + * @brief Unfreeze APB1 peripherals (group1 peripherals) + * @rmtoll DBGMCU_APB1_FZ DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM4_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM5_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM12_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM13_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_TIM14_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_LPTIM1_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_I2C1_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_I2C2_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_I2C3_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_I2C4_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_CAN1_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_CAN2_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_APB1_FZ DBG_CAN3_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM12_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM13_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM14_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C4_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN3_STOP (*) + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBGMCU->APB1FZ, Periphs); +} + +/** + * @brief Freeze APB2 peripherals + * @rmtoll DBGMCU_APB2_FZ DBG_TIM1_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_APB2_FZ DBG_TIM8_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_APB2_FZ DBG_TIM9_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_APB2_FZ DBG_TIM10_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_APB2_FZ DBG_TIM11_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM9_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM10_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM11_STOP + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBGMCU->APB2FZ, Periphs); +} + +/** + * @brief Unfreeze APB2 peripherals + * @rmtoll DBGMCU_APB2_FZ DBG_TIM1_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + * DBGMCU_APB2_FZ DBG_TIM8_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + * DBGMCU_APB2_FZ DBG_TIM9_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + * DBGMCU_APB2_FZ DBG_TIM10_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + * DBGMCU_APB2_FZ DBG_TIM11_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM9_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM10_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM11_STOP + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBGMCU->APB2FZ, Periphs); +} +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EF_FLASH FLASH + * @{ + */ + +/** + * @brief Set FLASH Latency + * @rmtoll FLASH_ACR LATENCY LL_FLASH_SetLatency + * @param Latency This parameter can be one of the following values: + * @arg @ref LL_FLASH_LATENCY_0 + * @arg @ref LL_FLASH_LATENCY_1 + * @arg @ref LL_FLASH_LATENCY_2 + * @arg @ref LL_FLASH_LATENCY_3 + * @arg @ref LL_FLASH_LATENCY_4 + * @arg @ref LL_FLASH_LATENCY_5 + * @arg @ref LL_FLASH_LATENCY_6 + * @arg @ref LL_FLASH_LATENCY_7 + * @arg @ref LL_FLASH_LATENCY_8 + * @arg @ref LL_FLASH_LATENCY_9 + * @arg @ref LL_FLASH_LATENCY_10 + * @arg @ref LL_FLASH_LATENCY_11 + * @arg @ref LL_FLASH_LATENCY_12 + * @arg @ref LL_FLASH_LATENCY_13 + * @arg @ref LL_FLASH_LATENCY_14 + * @arg @ref LL_FLASH_LATENCY_15 + * @retval None + */ +__STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency) +{ + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency); +} + +/** + * @brief Get FLASH Latency + * @rmtoll FLASH_ACR LATENCY LL_FLASH_GetLatency + * @retval Returned value can be one of the following values: + * @arg @ref LL_FLASH_LATENCY_0 + * @arg @ref LL_FLASH_LATENCY_1 + * @arg @ref LL_FLASH_LATENCY_2 + * @arg @ref LL_FLASH_LATENCY_3 + * @arg @ref LL_FLASH_LATENCY_4 + * @arg @ref LL_FLASH_LATENCY_5 + * @arg @ref LL_FLASH_LATENCY_6 + * @arg @ref LL_FLASH_LATENCY_7 + * @arg @ref LL_FLASH_LATENCY_8 + * @arg @ref LL_FLASH_LATENCY_9 + * @arg @ref LL_FLASH_LATENCY_10 + * @arg @ref LL_FLASH_LATENCY_11 + * @arg @ref LL_FLASH_LATENCY_12 + * @arg @ref LL_FLASH_LATENCY_13 + * @arg @ref LL_FLASH_LATENCY_14 + * @arg @ref LL_FLASH_LATENCY_15 + */ +__STATIC_INLINE uint32_t LL_FLASH_GetLatency(void) +{ + return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY)); +} + +/** + * @brief Enable Prefetch + * @rmtoll FLASH_ACR PRFTEN LL_FLASH_EnablePrefetch + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnablePrefetch(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_PRFTEN); +} + +/** + * @brief Disable Prefetch + * @rmtoll FLASH_ACR PRFTEN LL_FLASH_DisablePrefetch + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisablePrefetch(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_PRFTEN); +} + +/** + * @brief Check if Prefetch buffer is enabled + * @rmtoll FLASH_ACR PRFTEN LL_FLASH_IsPrefetchEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_FLASH_IsPrefetchEnabled(void) +{ + return (READ_BIT(FLASH->ACR, FLASH_ACR_PRFTEN) == (FLASH_ACR_PRFTEN)); +} + + + +/** + * @brief Enable ART Accelerator + * @rmtoll FLASH_ACR ARTEN LL_FLASH_EnableART + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableART(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_ARTEN); +} + +/** + * @brief Disable ART Accelerator + * @rmtoll FLASH_ACR ARTEN LL_FLASH_DisableART + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableART(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_ARTEN); +} + +/** + * @brief Enable ART Reset + * @rmtoll FLASH_ACR ARTRST LL_FLASH_EnableARTReset + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableARTReset(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_ARTRST); +} + +/** + * @brief Disable ART Reset + * @rmtoll FLASH_ACR ARTRST LL_FLASH_DisableARTReset + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableARTReset(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_ARTRST); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_SYSTEM_H */ + + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h new file mode 100644 index 0000000..6994e0b --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h @@ -0,0 +1,4737 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_tim.h + * @author MCD Application Team + * @brief Header file of TIM LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_TIM_H +#define __STM32F7xx_LL_TIM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (TIM1) || defined (TIM8) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM12) || defined (TIM13) || defined (TIM14) || defined (TIM6) || defined (TIM7) + +/** @defgroup TIM_LL TIM + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Variables TIM Private Variables + * @{ + */ +static const uint8_t OFFSET_TAB_CCMRx[] = +{ + 0x00U, /* 0: TIMx_CH1 */ + 0x00U, /* 1: TIMx_CH1N */ + 0x00U, /* 2: TIMx_CH2 */ + 0x00U, /* 3: TIMx_CH2N */ + 0x04U, /* 4: TIMx_CH3 */ + 0x04U, /* 5: TIMx_CH3N */ + 0x04U, /* 6: TIMx_CH4 */ + 0x3CU, /* 7: TIMx_CH5 */ + 0x3CU /* 8: TIMx_CH6 */ +}; + +static const uint8_t SHIFT_TAB_OCxx[] = +{ + 0U, /* 0: OC1M, OC1FE, OC1PE */ + 0U, /* 1: - NA */ + 8U, /* 2: OC2M, OC2FE, OC2PE */ + 0U, /* 3: - NA */ + 0U, /* 4: OC3M, OC3FE, OC3PE */ + 0U, /* 5: - NA */ + 8U, /* 6: OC4M, OC4FE, OC4PE */ + 0U, /* 7: OC5M, OC5FE, OC5PE */ + 8U /* 8: OC6M, OC6FE, OC6PE */ +}; + +static const uint8_t SHIFT_TAB_ICxx[] = +{ + 0U, /* 0: CC1S, IC1PSC, IC1F */ + 0U, /* 1: - NA */ + 8U, /* 2: CC2S, IC2PSC, IC2F */ + 0U, /* 3: - NA */ + 0U, /* 4: CC3S, IC3PSC, IC3F */ + 0U, /* 5: - NA */ + 8U, /* 6: CC4S, IC4PSC, IC4F */ + 0U, /* 7: - NA */ + 0U /* 8: - NA */ +}; + +static const uint8_t SHIFT_TAB_CCxP[] = +{ + 0U, /* 0: CC1P */ + 2U, /* 1: CC1NP */ + 4U, /* 2: CC2P */ + 6U, /* 3: CC2NP */ + 8U, /* 4: CC3P */ + 10U, /* 5: CC3NP */ + 12U, /* 6: CC4P */ + 16U, /* 7: CC5P */ + 20U /* 8: CC6P */ +}; + +static const uint8_t SHIFT_TAB_OISx[] = +{ + 0U, /* 0: OIS1 */ + 1U, /* 1: OIS1N */ + 2U, /* 2: OIS2 */ + 3U, /* 3: OIS2N */ + 4U, /* 4: OIS3 */ + 5U, /* 5: OIS3N */ + 6U, /* 6: OIS4 */ + 8U, /* 7: OIS5 */ + 10U /* 8: OIS6 */ +}; +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Constants TIM Private Constants + * @{ + */ + +#if defined(TIM_BREAK_INPUT_SUPPORT) +/* Defines used for the bit position in the register and perform offsets */ +#define TIM_POSITION_BRK_SOURCE (POSITION_VAL(Source) & 0x1FUL) + +/* Generic bit definitions for TIMx_AF1 register */ +#define TIMx_AF1_BKINP TIM1_AF1_BKINP /*!< BRK BKIN input polarity */ +#endif /* TIM_BREAK_INPUT_SUPPORT */ + +/* Remap mask definitions */ +#define TIMx_OR_RMP_SHIFT 16U +#define TIMx_OR_RMP_MASK 0x0000FFFFU +#define TIM2_OR_RMP_MASK (TIM2_OR_ITR1_RMP << TIMx_OR_RMP_SHIFT) +#define TIM5_OR_RMP_MASK (TIM5_OR_TI4_RMP << TIMx_OR_RMP_SHIFT) +#define TIM11_OR_RMP_MASK (TIM11_OR_TI1_RMP << TIMx_OR_RMP_SHIFT) + +/* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */ +#define DT_DELAY_1 ((uint8_t)0x7F) +#define DT_DELAY_2 ((uint8_t)0x3F) +#define DT_DELAY_3 ((uint8_t)0x1F) +#define DT_DELAY_4 ((uint8_t)0x1F) + +/* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */ +#define DT_RANGE_1 ((uint8_t)0x00) +#define DT_RANGE_2 ((uint8_t)0x80) +#define DT_RANGE_3 ((uint8_t)0xC0) +#define DT_RANGE_4 ((uint8_t)0xE0) + + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Macros TIM Private Macros + * @{ + */ +/** @brief Convert channel id into channel index. + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval none + */ +#define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \ + (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH4) ? 6U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH5) ? 7U : 8U) + +/** @brief Calculate the deadtime sampling period(in ps). + * @param __TIMCLK__ timer input clock frequency (in Hz). + * @param __CKD__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @retval none + */ +#define TIM_CALC_DTS(__TIMCLK__, __CKD__) \ + (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__)) : \ + ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \ + ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U))) +/** + * @} + */ + + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_ES_INIT TIM Exported Init structure + * @{ + */ + +/** + * @brief TIM Time Base configuration structure definition. + */ +typedef struct +{ + uint16_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetPrescaler().*/ + + uint32_t CounterMode; /*!< Specifies the counter mode. + This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetCounterMode().*/ + + uint32_t Autoreload; /*!< Specifies the auto reload value to be loaded into the active + Auto-Reload Register at the next update event. + This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + Some timer instances may support 32 bits counters. In that case this parameter must + be a number between 0x0000 and 0xFFFFFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetAutoReload().*/ + + uint32_t ClockDivision; /*!< Specifies the clock division. + This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetClockDivision().*/ + + uint32_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter + reaches zero, an update event is generated and counting restarts + from the RCR value (N). + This means in PWM mode that (N+1) corresponds to: + - the number of PWM periods in edge-aligned mode + - the number of half PWM period in center-aligned mode + GP timers: this parameter must be a number between Min_Data = 0x00 and + Max_Data = 0xFF. + Advanced timers: this parameter must be a number between Min_Data = 0x0000 and + Max_Data = 0xFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetRepetitionCounter().*/ +} LL_TIM_InitTypeDef; + +/** + * @brief TIM Output Compare configuration structure definition. + */ +typedef struct +{ + uint32_t OCMode; /*!< Specifies the output mode. + This parameter can be a value of @ref TIM_LL_EC_OCMODE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetMode().*/ + + uint32_t OCState; /*!< Specifies the TIM Output Compare state. + This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + + uint32_t OCNState; /*!< Specifies the TIM complementary Output Compare state. + This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + + uint32_t CompareValue; /*!< Specifies the Compare value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + + This feature can be modified afterwards using unitary function + LL_TIM_OC_SetCompareCHx (x=1..6).*/ + + uint32_t OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetPolarity().*/ + + uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetPolarity().*/ + + + uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetIdleState().*/ + + uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetIdleState().*/ +} LL_TIM_OC_InitTypeDef; + +/** + * @brief TIM Input Capture configuration structure definition. + */ + +typedef struct +{ + + uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t ICActiveInput; /*!< Specifies the input. + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t ICFilter; /*!< Specifies the input capture filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ +} LL_TIM_IC_InitTypeDef; + + +/** + * @brief TIM Encoder interface configuration structure definition. + */ +typedef struct +{ + uint32_t EncoderMode; /*!< Specifies the encoder resolution (x2 or x4). + This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetEncoderMode().*/ + + uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC1ActiveInput; /*!< Specifies the TI1 input source + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ + + uint32_t IC2Polarity; /*!< Specifies the active edge of TI2 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC2ActiveInput; /*!< Specifies the TI2 input source + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t IC2Prescaler; /*!< Specifies the TI2 input prescaler value. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC2Filter; /*!< Specifies the TI2 input filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ + +} LL_TIM_ENCODER_InitTypeDef; + +/** + * @brief TIM Hall sensor interface configuration structure definition. + */ +typedef struct +{ + + uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + Prescaler must be set to get a maximum counter period longer than the + time interval between 2 consecutive changes on the Hall inputs. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + This parameter can be a value of + @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ + + uint32_t CommutationDelay; /*!< Specifies the compare value to be loaded into the Capture Compare Register. + A positive pulse (TRGO event) is generated with a programmable delay every time + a change occurs on the Hall inputs. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetCompareCH2().*/ +} LL_TIM_HALLSENSOR_InitTypeDef; + +/** + * @brief BDTR (Break and Dead Time) structure definition + */ +typedef struct +{ + uint32_t OSSRState; /*!< Specifies the Off-State selection used in Run mode. + This parameter can be a value of @ref TIM_LL_EC_OSSR + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetOffStates() + + @note This bit-field cannot be modified as long as LOCK level 2 has been + programmed. */ + + uint32_t OSSIState; /*!< Specifies the Off-State used in Idle state. + This parameter can be a value of @ref TIM_LL_EC_OSSI + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetOffStates() + + @note This bit-field cannot be modified as long as LOCK level 2 has been + programmed. */ + + uint32_t LockLevel; /*!< Specifies the LOCK level parameters. + This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL + + @note The LOCK bits can be written only once after the reset. Once the TIMx_BDTR + register has been written, their content is frozen until the next reset.*/ + + uint8_t DeadTime; /*!< Specifies the delay time between the switching-off and the + switching-on of the outputs. + This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetDeadTime() + + @note This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been + programmed. */ + + uint16_t BreakState; /*!< Specifies whether the TIM Break input is enabled or not. + This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. + This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARITY + + This feature can be modified afterwards using unitary function + @ref LL_TIM_ConfigBRK() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t BreakFilter; /*!< Specifies the TIM Break Filter. + This parameter can be a value of @ref TIM_LL_EC_BREAK_FILTER + + This feature can be modified afterwards using unitary function + @ref LL_TIM_ConfigBRK() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t Break2State; /*!< Specifies whether the TIM Break2 input is enabled or not. + This parameter can be a value of @ref TIM_LL_EC_BREAK2_ENABLE + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_EnableBRK2() or @ref LL_TIM_DisableBRK2() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t Break2Polarity; /*!< Specifies the TIM Break2 Input pin polarity. + This parameter can be a value of @ref TIM_LL_EC_BREAK2_POLARITY + + This feature can be modified afterwards using unitary function + @ref LL_TIM_ConfigBRK2() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t Break2Filter; /*!< Specifies the TIM Break2 Filter. + This parameter can be a value of @ref TIM_LL_EC_BREAK2_FILTER + + This feature can be modified afterwards using unitary function + @ref LL_TIM_ConfigBRK2() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not. + This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTPUT_ENABLE + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAutomaticOutput() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ +} LL_TIM_BDTR_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup TIM_LL_Exported_Constants TIM Exported Constants + * @{ + */ + +/** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_TIM_ReadReg function. + * @{ + */ +#define LL_TIM_SR_UIF TIM_SR_UIF /*!< Update interrupt flag */ +#define LL_TIM_SR_CC1IF TIM_SR_CC1IF /*!< Capture/compare 1 interrupt flag */ +#define LL_TIM_SR_CC2IF TIM_SR_CC2IF /*!< Capture/compare 2 interrupt flag */ +#define LL_TIM_SR_CC3IF TIM_SR_CC3IF /*!< Capture/compare 3 interrupt flag */ +#define LL_TIM_SR_CC4IF TIM_SR_CC4IF /*!< Capture/compare 4 interrupt flag */ +#define LL_TIM_SR_CC5IF TIM_SR_CC5IF /*!< Capture/compare 5 interrupt flag */ +#define LL_TIM_SR_CC6IF TIM_SR_CC6IF /*!< Capture/compare 6 interrupt flag */ +#define LL_TIM_SR_COMIF TIM_SR_COMIF /*!< COM interrupt flag */ +#define LL_TIM_SR_TIF TIM_SR_TIF /*!< Trigger interrupt flag */ +#define LL_TIM_SR_BIF TIM_SR_BIF /*!< Break interrupt flag */ +#define LL_TIM_SR_B2IF TIM_SR_B2IF /*!< Second break interrupt flag */ +#define LL_TIM_SR_CC1OF TIM_SR_CC1OF /*!< Capture/Compare 1 overcapture flag */ +#define LL_TIM_SR_CC2OF TIM_SR_CC2OF /*!< Capture/Compare 2 overcapture flag */ +#define LL_TIM_SR_CC3OF TIM_SR_CC3OF /*!< Capture/Compare 3 overcapture flag */ +#define LL_TIM_SR_CC4OF TIM_SR_CC4OF /*!< Capture/Compare 4 overcapture flag */ +#define LL_TIM_SR_SBIF TIM_SR_SBIF /*!< System Break interrupt flag */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_EC_BREAK_ENABLE Break Enable + * @{ + */ +#define LL_TIM_BREAK_DISABLE 0x00000000U /*!< Break function disabled */ +#define LL_TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break function enabled */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_BREAK2_ENABLE Break2 Enable + * @{ + */ +#define LL_TIM_BREAK2_DISABLE 0x00000000U /*!< Break2 function disabled */ +#define LL_TIM_BREAK2_ENABLE TIM_BDTR_BK2E /*!< Break2 function enabled */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_AUTOMATICOUTPUT_ENABLE Automatic output enable + * @{ + */ +#define LL_TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by software */ +#define LL_TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by software or automatically at the next update event */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup TIM_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_TIM_ReadReg and LL_TIM_WriteReg functions. + * @{ + */ +#define LL_TIM_DIER_UIE TIM_DIER_UIE /*!< Update interrupt enable */ +#define LL_TIM_DIER_CC1IE TIM_DIER_CC1IE /*!< Capture/compare 1 interrupt enable */ +#define LL_TIM_DIER_CC2IE TIM_DIER_CC2IE /*!< Capture/compare 2 interrupt enable */ +#define LL_TIM_DIER_CC3IE TIM_DIER_CC3IE /*!< Capture/compare 3 interrupt enable */ +#define LL_TIM_DIER_CC4IE TIM_DIER_CC4IE /*!< Capture/compare 4 interrupt enable */ +#define LL_TIM_DIER_COMIE TIM_DIER_COMIE /*!< COM interrupt enable */ +#define LL_TIM_DIER_TIE TIM_DIER_TIE /*!< Trigger interrupt enable */ +#define LL_TIM_DIER_BIE TIM_DIER_BIE /*!< Break interrupt enable */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_UPDATESOURCE Update Source + * @{ + */ +#define LL_TIM_UPDATESOURCE_REGULAR 0x00000000U /*!< Counter overflow/underflow, Setting the UG bit or Update generation through the slave mode controller generates an update request */ +#define LL_TIM_UPDATESOURCE_COUNTER TIM_CR1_URS /*!< Only counter overflow/underflow generates an update request */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode + * @{ + */ +#define LL_TIM_ONEPULSEMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at the next update event */ +#define LL_TIM_ONEPULSEMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at update event */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode + * @{ + */ +#define LL_TIM_COUNTERMODE_UP 0x00000000U /*!< Counter used as upcounter */ +#define LL_TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as downcounter */ +#define LL_TIM_COUNTERMODE_CENTER_DOWN TIM_CR1_CMS_0 /*!< The counter counts up and down alternatively. Output compare interrupt flags of output channels are set only when the counter is counting down. */ +#define LL_TIM_COUNTERMODE_CENTER_UP TIM_CR1_CMS_1 /*!< The counter counts up and down alternatively. Output compare interrupt flags of output channels are set only when the counter is counting up */ +#define LL_TIM_COUNTERMODE_CENTER_UP_DOWN TIM_CR1_CMS /*!< The counter counts up and down alternatively. Output compare interrupt flags of output channels are set only when the counter is counting up or down. */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_CLOCKDIVISION Clock Division + * @{ + */ +#define LL_TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< tDTS=tCK_INT */ +#define LL_TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< tDTS=2*tCK_INT */ +#define LL_TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< tDTS=4*tCK_INT */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_COUNTERDIRECTION Counter Direction + * @{ + */ +#define LL_TIM_COUNTERDIRECTION_UP 0x00000000U /*!< Timer counter counts up */ +#define LL_TIM_COUNTERDIRECTION_DOWN TIM_CR1_DIR /*!< Timer counter counts down */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_CCUPDATESOURCE Capture Compare Update Source + * @{ + */ +#define LL_TIM_CCUPDATESOURCE_COMG_ONLY 0x00000000U /*!< Capture/compare control bits are updated by setting the COMG bit only */ +#define LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI TIM_CR2_CCUS /*!< Capture/compare control bits are updated by setting the COMG bit or when a rising edge occurs on trigger input (TRGI) */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_CCDMAREQUEST Capture Compare DMA Request + * @{ + */ +#define LL_TIM_CCDMAREQUEST_CC 0x00000000U /*!< CCx DMA request sent when CCx event occurs */ +#define LL_TIM_CCDMAREQUEST_UPDATE TIM_CR2_CCDS /*!< CCx DMA requests sent when update event occurs */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_LOCKLEVEL Lock Level + * @{ + */ +#define LL_TIM_LOCKLEVEL_OFF 0x00000000U /*!< LOCK OFF - No bit is write protected */ +#define LL_TIM_LOCKLEVEL_1 TIM_BDTR_LOCK_0 /*!< LOCK Level 1 */ +#define LL_TIM_LOCKLEVEL_2 TIM_BDTR_LOCK_1 /*!< LOCK Level 2 */ +#define LL_TIM_LOCKLEVEL_3 TIM_BDTR_LOCK /*!< LOCK Level 3 */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_CHANNEL Channel + * @{ + */ +#define LL_TIM_CHANNEL_CH1 TIM_CCER_CC1E /*!< Timer input/output channel 1 */ +#define LL_TIM_CHANNEL_CH1N TIM_CCER_CC1NE /*!< Timer complementary output channel 1 */ +#define LL_TIM_CHANNEL_CH2 TIM_CCER_CC2E /*!< Timer input/output channel 2 */ +#define LL_TIM_CHANNEL_CH2N TIM_CCER_CC2NE /*!< Timer complementary output channel 2 */ +#define LL_TIM_CHANNEL_CH3 TIM_CCER_CC3E /*!< Timer input/output channel 3 */ +#define LL_TIM_CHANNEL_CH3N TIM_CCER_CC3NE /*!< Timer complementary output channel 3 */ +#define LL_TIM_CHANNEL_CH4 TIM_CCER_CC4E /*!< Timer input/output channel 4 */ +#define LL_TIM_CHANNEL_CH5 TIM_CCER_CC5E /*!< Timer output channel 5 */ +#define LL_TIM_CHANNEL_CH6 TIM_CCER_CC6E /*!< Timer output channel 6 */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_EC_OCSTATE Output Configuration State + * @{ + */ +#define LL_TIM_OCSTATE_DISABLE 0x00000000U /*!< OCx is not active */ +#define LL_TIM_OCSTATE_ENABLE TIM_CCER_CC1E /*!< OCx signal is output on the corresponding output pin */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** Legacy definitions for compatibility purpose +@cond 0 + */ +#define LL_TIM_OCMODE_ASSYMETRIC_PWM1 LL_TIM_OCMODE_ASYMMETRIC_PWM1 +#define LL_TIM_OCMODE_ASSYMETRIC_PWM2 LL_TIM_OCMODE_ASYMMETRIC_PWM2 +/** +@endcond + */ + +/** @defgroup TIM_LL_EC_OCMODE Output Configuration Mode + * @{ + */ +#define LL_TIM_OCMODE_FROZEN 0x00000000U /*!TIMx_CCRy else active.*/ +#define LL_TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!TIMx_CCRy else inactive*/ +#define LL_TIM_OCMODE_RETRIG_OPM1 TIM_CCMR1_OC1M_3 /*!__REG__, (__VALUE__)) + +/** + * @brief Read a value in TIM register. + * @param __INSTANCE__ TIM Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__) +/** + * @} + */ + +/** + * @brief HELPER macro retrieving the UIFCPY flag from the counter value. + * @note ex: @ref __LL_TIM_GETFLAG_UIFCPY (@ref LL_TIM_GetCounter ()); + * @note Relevant only if UIF flag remapping has been enabled (UIF status bit is copied + * to TIMx_CNT register bit 31) + * @param __CNT__ Counter value + * @retval UIF status bit + */ +#define __LL_TIM_GETFLAG_UIFCPY(__CNT__) \ + (READ_BIT((__CNT__), TIM_CNT_UIFCPY) >> TIM_CNT_UIFCPY_Pos) + +/** + * @brief HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested dead time duration. + * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __CKD__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @param __DT__ deadtime duration (in ns) + * @retval DTG[0:7] + */ +#define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__) \ + ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__))) & DT_DELAY_1) : \ + (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \ + (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\ + (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \ + (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\ + (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \ + (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\ + 0U) + +/** + * @brief HELPER macro calculating the prescaler value to achieve the required counter clock frequency. + * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __CNTCLK__ counter clock frequency (in Hz) + * @retval Prescaler value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__) \ + (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)((((__TIMCLK__) + (__CNTCLK__)/2U)/(__CNTCLK__)) - 1U) : 0U) + +/** + * @brief HELPER macro calculating the auto-reload value to achieve the required output signal frequency. + * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __FREQ__ output signal frequency (in Hz) + * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \ + ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U) + +/** + * @brief HELPER macro calculating the compare value required to achieve the required timer output compare + * active/inactive delay. + * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __DELAY__ timer output compare active/inactive delay (in us) + * @retval Compare value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__) \ + ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \ + / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U)))) + +/** + * @brief HELPER macro calculating the auto-reload value to achieve the required pulse duration + * (when the timer operates in one pulse mode). + * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __DELAY__ timer output compare active/inactive delay (in us) + * @param __PULSE__ pulse duration (in us) + * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__) \ + ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \ + + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__)))) + +/** + * @brief HELPER macro retrieving the ratio of the input capture prescaler + * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ()); + * @param __ICPSC__ This parameter can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + * @retval Input capture prescaler ratio (1, 2, 4 or 8) + */ +#define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__) \ + ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos))) + + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup TIM_LL_Exported_Functions TIM Exported Functions + * @{ + */ + +/** @defgroup TIM_LL_EF_Time_Base Time Base configuration + * @{ + */ +/** + * @brief Enable timer counter. + * @rmtoll CR1 CEN LL_TIM_EnableCounter + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_CEN); +} + +/** + * @brief Disable timer counter. + * @rmtoll CR1 CEN LL_TIM_DisableCounter + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN); +} + +/** + * @brief Indicates whether the timer counter is enabled. + * @rmtoll CR1 CEN LL_TIM_IsEnabledCounter + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable update event generation. + * @rmtoll CR1 UDIS LL_TIM_EnableUpdateEvent + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS); +} + +/** + * @brief Disable update event generation. + * @rmtoll CR1 UDIS LL_TIM_DisableUpdateEvent + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_UDIS); +} + +/** + * @brief Indicates whether update event generation is enabled. + * @rmtoll CR1 UDIS LL_TIM_IsEnabledUpdateEvent + * @param TIMx Timer instance + * @retval Inverted state of bit (0 or 1). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL); +} + +/** + * @brief Set update event source + * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events + * generate an update interrupt or DMA request if enabled: + * - Counter overflow/underflow + * - Setting the UG bit + * - Update generation through the slave mode controller + * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter + * overflow/underflow generates an update interrupt or DMA request if enabled. + * @rmtoll CR1 URS LL_TIM_SetUpdateSource + * @param TIMx Timer instance + * @param UpdateSource This parameter can be one of the following values: + * @arg @ref LL_TIM_UPDATESOURCE_REGULAR + * @arg @ref LL_TIM_UPDATESOURCE_COUNTER + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource); +} + +/** + * @brief Get actual event update source + * @rmtoll CR1 URS LL_TIM_GetUpdateSource + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_UPDATESOURCE_REGULAR + * @arg @ref LL_TIM_UPDATESOURCE_COUNTER + */ +__STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS)); +} + +/** + * @brief Set one pulse mode (one shot v.s. repetitive). + * @rmtoll CR1 OPM LL_TIM_SetOnePulseMode + * @param TIMx Timer instance + * @param OnePulseMode This parameter can be one of the following values: + * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE + * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode); +} + +/** + * @brief Get actual one pulse mode. + * @rmtoll CR1 OPM LL_TIM_GetOnePulseMode + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE + * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE + */ +__STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM)); +} + +/** + * @brief Set the timer counter counting mode. + * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to + * check whether or not the counter mode selection feature is supported + * by a timer instance. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * @rmtoll CR1 DIR LL_TIM_SetCounterMode\n + * CR1 CMS LL_TIM_SetCounterMode + * @param TIMx Timer instance + * @param CounterMode This parameter can be one of the following values: + * @arg @ref LL_TIM_COUNTERMODE_UP + * @arg @ref LL_TIM_COUNTERMODE_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP + * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode) +{ + MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode); +} + +/** + * @brief Get actual counter mode. + * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to + * check whether or not the counter mode selection feature is supported + * by a timer instance. + * @rmtoll CR1 DIR LL_TIM_GetCounterMode\n + * CR1 CMS LL_TIM_GetCounterMode + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_COUNTERMODE_UP + * @arg @ref LL_TIM_COUNTERMODE_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP + * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN + */ +__STATIC_INLINE uint32_t LL_TIM_GetCounterMode(const TIM_TypeDef *TIMx) +{ + uint32_t counter_mode; + + counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CMS)); + + if (counter_mode == 0U) + { + counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); + } + + return counter_mode; +} + +/** + * @brief Enable auto-reload (ARR) preload. + * @rmtoll CR1 ARPE LL_TIM_EnableARRPreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_ARPE); +} + +/** + * @brief Disable auto-reload (ARR) preload. + * @rmtoll CR1 ARPE LL_TIM_DisableARRPreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE); +} + +/** + * @brief Indicates whether auto-reload (ARR) preload is enabled. + * @rmtoll CR1 ARPE LL_TIM_IsEnabledARRPreload + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL); +} + +/** + * @brief Set the division ratio between the timer clock and the sampling clock used by the dead-time generators + * (when supported) and the digital filters. + * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check + * whether or not the clock division feature is supported by the timer + * instance. + * @rmtoll CR1 CKD LL_TIM_SetClockDivision + * @param TIMx Timer instance + * @param ClockDivision This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision); +} + +/** + * @brief Get the actual division ratio between the timer clock and the sampling clock used by the dead-time + * generators (when supported) and the digital filters. + * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check + * whether or not the clock division feature is supported by the timer + * instance. + * @rmtoll CR1 CKD LL_TIM_GetClockDivision + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + */ +__STATIC_INLINE uint32_t LL_TIM_GetClockDivision(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD)); +} + +/** + * @brief Set the counter value. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @rmtoll CNT CNT LL_TIM_SetCounter + * @param TIMx Timer instance + * @param Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF) + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter) +{ + WRITE_REG(TIMx->CNT, Counter); +} + +/** + * @brief Get the counter value. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @rmtoll CNT CNT LL_TIM_GetCounter + * @param TIMx Timer instance + * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF) + */ +__STATIC_INLINE uint32_t LL_TIM_GetCounter(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CNT)); +} + +/** + * @brief Get the current direction of the counter + * @rmtoll CR1 DIR LL_TIM_GetDirection + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_COUNTERDIRECTION_UP + * @arg @ref LL_TIM_COUNTERDIRECTION_DOWN + */ +__STATIC_INLINE uint32_t LL_TIM_GetDirection(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); +} + +/** + * @brief Set the prescaler value. + * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1). + * @note The prescaler can be changed on the fly as this control register is buffered. The new + * prescaler ratio is taken into account at the next update event. + * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter + * @rmtoll PSC PSC LL_TIM_SetPrescaler + * @param TIMx Timer instance + * @param Prescaler between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler) +{ + WRITE_REG(TIMx->PSC, Prescaler); +} + +/** + * @brief Get the prescaler value. + * @rmtoll PSC PSC LL_TIM_GetPrescaler + * @param TIMx Timer instance + * @retval Prescaler value between Min_Data=0 and Max_Data=65535 + */ +__STATIC_INLINE uint32_t LL_TIM_GetPrescaler(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->PSC)); +} + +/** + * @brief Set the auto-reload value. + * @note The counter is blocked while the auto-reload value is null. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter + * @rmtoll ARR ARR LL_TIM_SetAutoReload + * @param TIMx Timer instance + * @param AutoReload between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload) +{ + WRITE_REG(TIMx->ARR, AutoReload); +} + +/** + * @brief Get the auto-reload value. + * @rmtoll ARR ARR LL_TIM_GetAutoReload + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @param TIMx Timer instance + * @retval Auto-reload value + */ +__STATIC_INLINE uint32_t LL_TIM_GetAutoReload(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->ARR)); +} + +/** + * @brief Set the repetition counter value. + * @note For advanced timer instances RepetitionCounter can be up to 65535. + * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a repetition counter. + * @rmtoll RCR REP LL_TIM_SetRepetitionCounter + * @param TIMx Timer instance + * @param RepetitionCounter between Min_Data=0 and Max_Data=255 or 65535 for advanced timer. + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter) +{ + WRITE_REG(TIMx->RCR, RepetitionCounter); +} + +/** + * @brief Get the repetition counter value. + * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a repetition counter. + * @rmtoll RCR REP LL_TIM_GetRepetitionCounter + * @param TIMx Timer instance + * @retval Repetition counter value + */ +__STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->RCR)); +} + +/** + * @brief Force a continuous copy of the update interrupt flag (UIF) into the timer counter register (bit 31). + * @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read + * in an atomic way. + * @rmtoll CR1 UIFREMAP LL_TIM_EnableUIFRemap + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableUIFRemap(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_UIFREMAP); +} + +/** + * @brief Disable update interrupt flag (UIF) remapping. + * @rmtoll CR1 UIFREMAP LL_TIM_DisableUIFRemap + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableUIFRemap(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_UIFREMAP); +} + +/** + * @brief Indicate whether update interrupt flag (UIF) copy is set. + * @param Counter Counter value + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveUIFCPY(const uint32_t Counter) +{ + return (((Counter & TIM_CNT_UIFCPY) == (TIM_CNT_UIFCPY)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration + * @{ + */ +/** + * @brief Enable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. + * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written, + * they are updated only when a commutation event (COM) occurs. + * @note Only on channels that have a complementary output. + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCPC LL_TIM_CC_EnablePreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR2, TIM_CR2_CCPC); +} + +/** + * @brief Disable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCPC LL_TIM_CC_DisablePreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC); +} + +/** + * @brief Indicates whether the capture/compare control bits (CCxE, CCxNE and OCxM) preload is enabled. + * @rmtoll CR2 CCPC LL_TIM_CC_IsEnabledPreload + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledPreload(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR2, TIM_CR2_CCPC) == (TIM_CR2_CCPC)) ? 1UL : 0UL); +} + +/** + * @brief Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM). + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCUS LL_TIM_CC_SetUpdate + * @param TIMx Timer instance + * @param CCUpdateSource This parameter can be one of the following values: + * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY + * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource); +} + +/** + * @brief Set the trigger of the capture/compare DMA request. + * @rmtoll CR2 CCDS LL_TIM_CC_SetDMAReqTrigger + * @param TIMx Timer instance + * @param DMAReqTrigger This parameter can be one of the following values: + * @arg @ref LL_TIM_CCDMAREQUEST_CC + * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger); +} + +/** + * @brief Get actual trigger of the capture/compare DMA request. + * @rmtoll CR2 CCDS LL_TIM_CC_GetDMAReqTrigger + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_CCDMAREQUEST_CC + * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE + */ +__STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS)); +} + +/** + * @brief Set the lock level to freeze the + * configuration of several capture/compare parameters. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * the lock mechanism is supported by a timer instance. + * @rmtoll BDTR LOCK LL_TIM_CC_SetLockLevel + * @param TIMx Timer instance + * @param LockLevel This parameter can be one of the following values: + * @arg @ref LL_TIM_LOCKLEVEL_OFF + * @arg @ref LL_TIM_LOCKLEVEL_1 + * @arg @ref LL_TIM_LOCKLEVEL_2 + * @arg @ref LL_TIM_LOCKLEVEL_3 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel); +} + +/** + * @brief Enable capture/compare channels. + * @rmtoll CCER CC1E LL_TIM_CC_EnableChannel\n + * CCER CC1NE LL_TIM_CC_EnableChannel\n + * CCER CC2E LL_TIM_CC_EnableChannel\n + * CCER CC2NE LL_TIM_CC_EnableChannel\n + * CCER CC3E LL_TIM_CC_EnableChannel\n + * CCER CC3NE LL_TIM_CC_EnableChannel\n + * CCER CC4E LL_TIM_CC_EnableChannel\n + * CCER CC5E LL_TIM_CC_EnableChannel\n + * CCER CC6E LL_TIM_CC_EnableChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +{ + SET_BIT(TIMx->CCER, Channels); +} + +/** + * @brief Disable capture/compare channels. + * @rmtoll CCER CC1E LL_TIM_CC_DisableChannel\n + * CCER CC1NE LL_TIM_CC_DisableChannel\n + * CCER CC2E LL_TIM_CC_DisableChannel\n + * CCER CC2NE LL_TIM_CC_DisableChannel\n + * CCER CC3E LL_TIM_CC_DisableChannel\n + * CCER CC3NE LL_TIM_CC_DisableChannel\n + * CCER CC4E LL_TIM_CC_DisableChannel\n + * CCER CC5E LL_TIM_CC_DisableChannel\n + * CCER CC6E LL_TIM_CC_DisableChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +{ + CLEAR_BIT(TIMx->CCER, Channels); +} + +/** + * @brief Indicate whether channel(s) is(are) enabled. + * @rmtoll CCER CC1E LL_TIM_CC_IsEnabledChannel\n + * CCER CC1NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC2E LL_TIM_CC_IsEnabledChannel\n + * CCER CC2NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC3E LL_TIM_CC_IsEnabledChannel\n + * CCER CC3NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC4E LL_TIM_CC_IsEnabledChannel\n + * CCER CC5E LL_TIM_CC_IsEnabledChannel\n + * CCER CC6E LL_TIM_CC_IsEnabledChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(const TIM_TypeDef *TIMx, uint32_t Channels) +{ + return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Output_Channel Output channel configuration + * @{ + */ +/** + * @brief Configure an output channel. + * @rmtoll CCMR1 CC1S LL_TIM_OC_ConfigOutput\n + * CCMR1 CC2S LL_TIM_OC_ConfigOutput\n + * CCMR2 CC3S LL_TIM_OC_ConfigOutput\n + * CCMR2 CC4S LL_TIM_OC_ConfigOutput\n + * CCMR3 CC5S LL_TIM_OC_ConfigOutput\n + * CCMR3 CC6S LL_TIM_OC_ConfigOutput\n + * CCER CC1P LL_TIM_OC_ConfigOutput\n + * CCER CC2P LL_TIM_OC_ConfigOutput\n + * CCER CC3P LL_TIM_OC_ConfigOutput\n + * CCER CC4P LL_TIM_OC_ConfigOutput\n + * CCER CC5P LL_TIM_OC_ConfigOutput\n + * CCER CC6P LL_TIM_OC_ConfigOutput\n + * CR2 OIS1 LL_TIM_OC_ConfigOutput\n + * CR2 OIS2 LL_TIM_OC_ConfigOutput\n + * CR2 OIS3 LL_TIM_OC_ConfigOutput\n + * CR2 OIS4 LL_TIM_OC_ConfigOutput\n + * CR2 OIS5 LL_TIM_OC_ConfigOutput\n + * CR2 OIS6 LL_TIM_OC_ConfigOutput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW + * @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel])); + MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), + (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]); + MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), + (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Define the behavior of the output reference signal OCxREF from which + * OCx and OCxN (when relevant) are derived. + * @rmtoll CCMR1 OC1M LL_TIM_OC_SetMode\n + * CCMR1 OC2M LL_TIM_OC_SetMode\n + * CCMR2 OC3M LL_TIM_OC_SetMode\n + * CCMR2 OC4M LL_TIM_OC_SetMode\n + * CCMR3 OC5M LL_TIM_OC_SetMode\n + * CCMR3 OC6M LL_TIM_OC_SetMode + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_TIM_OCMODE_FROZEN + * @arg @ref LL_TIM_OCMODE_ACTIVE + * @arg @ref LL_TIM_OCMODE_INACTIVE + * @arg @ref LL_TIM_OCMODE_TOGGLE + * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE + * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE + * @arg @ref LL_TIM_OCMODE_PWM1 + * @arg @ref LL_TIM_OCMODE_PWM2 + * @arg @ref LL_TIM_OCMODE_RETRIG_OPM1 + * @arg @ref LL_TIM_OCMODE_RETRIG_OPM2 + * @arg @ref LL_TIM_OCMODE_COMBINED_PWM1 + * @arg @ref LL_TIM_OCMODE_COMBINED_PWM2 + * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM1 + * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM2 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]); +} + +/** + * @brief Get the output compare mode of an output channel. + * @rmtoll CCMR1 OC1M LL_TIM_OC_GetMode\n + * CCMR1 OC2M LL_TIM_OC_GetMode\n + * CCMR2 OC3M LL_TIM_OC_GetMode\n + * CCMR2 OC4M LL_TIM_OC_GetMode\n + * CCMR3 OC5M LL_TIM_OC_GetMode\n + * CCMR3 OC6M LL_TIM_OC_GetMode + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCMODE_FROZEN + * @arg @ref LL_TIM_OCMODE_ACTIVE + * @arg @ref LL_TIM_OCMODE_INACTIVE + * @arg @ref LL_TIM_OCMODE_TOGGLE + * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE + * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE + * @arg @ref LL_TIM_OCMODE_PWM1 + * @arg @ref LL_TIM_OCMODE_PWM2 + * @arg @ref LL_TIM_OCMODE_RETRIG_OPM1 + * @arg @ref LL_TIM_OCMODE_RETRIG_OPM2 + * @arg @ref LL_TIM_OCMODE_COMBINED_PWM1 + * @arg @ref LL_TIM_OCMODE_COMBINED_PWM2 + * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM1 + * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM2 + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]); +} + +/** + * @brief Set the polarity of an output channel. + * @rmtoll CCER CC1P LL_TIM_OC_SetPolarity\n + * CCER CC1NP LL_TIM_OC_SetPolarity\n + * CCER CC2P LL_TIM_OC_SetPolarity\n + * CCER CC2NP LL_TIM_OC_SetPolarity\n + * CCER CC3P LL_TIM_OC_SetPolarity\n + * CCER CC3NP LL_TIM_OC_SetPolarity\n + * CCER CC4P LL_TIM_OC_SetPolarity\n + * CCER CC5P LL_TIM_OC_SetPolarity\n + * CCER CC6P LL_TIM_OC_SetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH + * @arg @ref LL_TIM_OCPOLARITY_LOW + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), Polarity << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Get the polarity of an output channel. + * @rmtoll CCER CC1P LL_TIM_OC_GetPolarity\n + * CCER CC1NP LL_TIM_OC_GetPolarity\n + * CCER CC2P LL_TIM_OC_GetPolarity\n + * CCER CC2NP LL_TIM_OC_GetPolarity\n + * CCER CC3P LL_TIM_OC_GetPolarity\n + * CCER CC3NP LL_TIM_OC_GetPolarity\n + * CCER CC4P LL_TIM_OC_GetPolarity\n + * CCER CC5P LL_TIM_OC_GetPolarity\n + * CCER CC6P LL_TIM_OC_GetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH + * @arg @ref LL_TIM_OCPOLARITY_LOW + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Set the IDLE state of an output channel + * @note This function is significant only for the timer instances + * supporting the break feature. Macro IS_TIM_BREAK_INSTANCE(TIMx) + * can be used to check whether or not a timer instance provides + * a break input. + * @rmtoll CR2 OIS1 LL_TIM_OC_SetIdleState\n + * CR2 OIS2N LL_TIM_OC_SetIdleState\n + * CR2 OIS2 LL_TIM_OC_SetIdleState\n + * CR2 OIS2N LL_TIM_OC_SetIdleState\n + * CR2 OIS3 LL_TIM_OC_SetIdleState\n + * CR2 OIS3N LL_TIM_OC_SetIdleState\n + * CR2 OIS4 LL_TIM_OC_SetIdleState\n + * CR2 OIS5 LL_TIM_OC_SetIdleState\n + * CR2 OIS6 LL_TIM_OC_SetIdleState + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @param IdleState This parameter can be one of the following values: + * @arg @ref LL_TIM_OCIDLESTATE_LOW + * @arg @ref LL_TIM_OCIDLESTATE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), IdleState << SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Get the IDLE state of an output channel + * @rmtoll CR2 OIS1 LL_TIM_OC_GetIdleState\n + * CR2 OIS2N LL_TIM_OC_GetIdleState\n + * CR2 OIS2 LL_TIM_OC_GetIdleState\n + * CR2 OIS2N LL_TIM_OC_GetIdleState\n + * CR2 OIS3 LL_TIM_OC_GetIdleState\n + * CR2 OIS3N LL_TIM_OC_GetIdleState\n + * CR2 OIS4 LL_TIM_OC_GetIdleState\n + * CR2 OIS5 LL_TIM_OC_GetIdleState\n + * CR2 OIS6 LL_TIM_OC_GetIdleState + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCIDLESTATE_LOW + * @arg @ref LL_TIM_OCIDLESTATE_HIGH + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Enable fast mode for the output channel. + * @note Acts only if the channel is configured in PWM1 or PWM2 mode. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_EnableFast\n + * CCMR1 OC2FE LL_TIM_OC_EnableFast\n + * CCMR2 OC3FE LL_TIM_OC_EnableFast\n + * CCMR2 OC4FE LL_TIM_OC_EnableFast\n + * CCMR3 OC5FE LL_TIM_OC_EnableFast\n + * CCMR3 OC6FE LL_TIM_OC_EnableFast + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); + +} + +/** + * @brief Disable fast mode for the output channel. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_DisableFast\n + * CCMR1 OC2FE LL_TIM_OC_DisableFast\n + * CCMR2 OC3FE LL_TIM_OC_DisableFast\n + * CCMR2 OC4FE LL_TIM_OC_DisableFast\n + * CCMR3 OC5FE LL_TIM_OC_DisableFast\n + * CCMR3 OC6FE LL_TIM_OC_DisableFast + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); + +} + +/** + * @brief Indicates whether fast mode is enabled for the output channel. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_IsEnabledFast\n + * CCMR1 OC2FE LL_TIM_OC_IsEnabledFast\n + * CCMR2 OC3FE LL_TIM_OC_IsEnabledFast\n + * CCMR2 OC4FE LL_TIM_OC_IsEnabledFast\n + * CCMR3 OC5FE LL_TIM_OC_IsEnabledFast\n + * CCMR3 OC6FE LL_TIM_OC_IsEnabledFast + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Enable compare register (TIMx_CCRx) preload for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_EnablePreload\n + * CCMR1 OC2PE LL_TIM_OC_EnablePreload\n + * CCMR2 OC3PE LL_TIM_OC_EnablePreload\n + * CCMR2 OC4PE LL_TIM_OC_EnablePreload\n + * CCMR3 OC5PE LL_TIM_OC_EnablePreload\n + * CCMR3 OC6PE LL_TIM_OC_EnablePreload + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Disable compare register (TIMx_CCRx) preload for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_DisablePreload\n + * CCMR1 OC2PE LL_TIM_OC_DisablePreload\n + * CCMR2 OC3PE LL_TIM_OC_DisablePreload\n + * CCMR2 OC4PE LL_TIM_OC_DisablePreload\n + * CCMR3 OC5PE LL_TIM_OC_DisablePreload\n + * CCMR3 OC6PE LL_TIM_OC_DisablePreload + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_IsEnabledPreload\n + * CCMR1 OC2PE LL_TIM_OC_IsEnabledPreload\n + * CCMR2 OC3PE LL_TIM_OC_IsEnabledPreload\n + * CCMR2 OC4PE LL_TIM_OC_IsEnabledPreload\n + * CCMR3 OC5PE LL_TIM_OC_IsEnabledPreload\n + * CCMR3 OC6PE LL_TIM_OC_IsEnabledPreload + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Enable clearing the output channel on an external event. + * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_EnableClear\n + * CCMR1 OC2CE LL_TIM_OC_EnableClear\n + * CCMR2 OC3CE LL_TIM_OC_EnableClear\n + * CCMR2 OC4CE LL_TIM_OC_EnableClear\n + * CCMR3 OC5CE LL_TIM_OC_EnableClear\n + * CCMR3 OC6CE LL_TIM_OC_EnableClear + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Disable clearing the output channel on an external event. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_DisableClear\n + * CCMR1 OC2CE LL_TIM_OC_DisableClear\n + * CCMR2 OC3CE LL_TIM_OC_DisableClear\n + * CCMR2 OC4CE LL_TIM_OC_DisableClear\n + * CCMR3 OC5CE LL_TIM_OC_DisableClear\n + * CCMR3 OC6CE LL_TIM_OC_DisableClear + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Indicates clearing the output channel on an external event is enabled for the output channel. + * @note This function enables clearing the output channel on an external event. + * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_IsEnabledClear\n + * CCMR1 OC2CE LL_TIM_OC_IsEnabledClear\n + * CCMR2 OC3CE LL_TIM_OC_IsEnabledClear\n + * CCMR2 OC4CE LL_TIM_OC_IsEnabledClear\n + * CCMR3 OC5CE LL_TIM_OC_IsEnabledClear\n + * CCMR3 OC6CE LL_TIM_OC_IsEnabledClear + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge of + * the Ocx and OCxN signals). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * dead-time insertion feature is supported by a timer instance. + * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter + * @rmtoll BDTR DTG LL_TIM_OC_SetDeadTime + * @param TIMx Timer instance + * @param DeadTime between Min_Data=0 and Max_Data=255 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime); +} + +/** + * @brief Set compare value for output channel 1 (TIMx_CCR1). + * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * output channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_OC_SetCompareCH1 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR1, CompareValue); +} + +/** + * @brief Set compare value for output channel 2 (TIMx_CCR2). + * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * output channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_OC_SetCompareCH2 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR2, CompareValue); +} + +/** + * @brief Set compare value for output channel 3 (TIMx_CCR3). + * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * output channel is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_OC_SetCompareCH3 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR3, CompareValue); +} + +/** + * @brief Set compare value for output channel 4 (TIMx_CCR4). + * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * output channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_OC_SetCompareCH4 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR4, CompareValue); +} + +/** + * @brief Set compare value for output channel 5 (TIMx_CCR5). + * @note Macro IS_TIM_CC5_INSTANCE(TIMx) can be used to check whether or not + * output channel 5 is supported by a timer instance. + * @rmtoll CCR5 CCR5 LL_TIM_OC_SetCompareCH5 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH5(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + MODIFY_REG(TIMx->CCR5, TIM_CCR5_CCR5, CompareValue); +} + +/** + * @brief Set compare value for output channel 6 (TIMx_CCR6). + * @note Macro IS_TIM_CC6_INSTANCE(TIMx) can be used to check whether or not + * output channel 6 is supported by a timer instance. + * @rmtoll CCR6 CCR6 LL_TIM_OC_SetCompareCH6 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH6(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR6, CompareValue); +} + +/** + * @brief Get compare value (TIMx_CCR1) set for output channel 1. + * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * output channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_OC_GetCompareCH1 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR1)); +} + +/** + * @brief Get compare value (TIMx_CCR2) set for output channel 2. + * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * output channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_OC_GetCompareCH2 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR2)); +} + +/** + * @brief Get compare value (TIMx_CCR3) set for output channel 3. + * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * output channel 3 is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_OC_GetCompareCH3 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR3)); +} + +/** + * @brief Get compare value (TIMx_CCR4) set for output channel 4. + * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * output channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_OC_GetCompareCH4 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR4)); +} + +/** + * @brief Get compare value (TIMx_CCR5) set for output channel 5. + * @note Macro IS_TIM_CC5_INSTANCE(TIMx) can be used to check whether or not + * output channel 5 is supported by a timer instance. + * @rmtoll CCR5 CCR5 LL_TIM_OC_GetCompareCH5 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH5(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CCR5, TIM_CCR5_CCR5)); +} + +/** + * @brief Get compare value (TIMx_CCR6) set for output channel 6. + * @note Macro IS_TIM_CC6_INSTANCE(TIMx) can be used to check whether or not + * output channel 6 is supported by a timer instance. + * @rmtoll CCR6 CCR6 LL_TIM_OC_GetCompareCH6 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH6(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR6)); +} + +/** + * @brief Select on which reference signal the OC5REF is combined to. + * @note Macro IS_TIM_COMBINED3PHASEPWM_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports the combined 3-phase PWM mode. + * @rmtoll CCR5 GC5C3 LL_TIM_SetCH5CombinedChannels\n + * CCR5 GC5C2 LL_TIM_SetCH5CombinedChannels\n + * CCR5 GC5C1 LL_TIM_SetCH5CombinedChannels + * @param TIMx Timer instance + * @param GroupCH5 This parameter can be a combination of the following values: + * @arg @ref LL_TIM_GROUPCH5_NONE + * @arg @ref LL_TIM_GROUPCH5_OC1REFC + * @arg @ref LL_TIM_GROUPCH5_OC2REFC + * @arg @ref LL_TIM_GROUPCH5_OC3REFC + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetCH5CombinedChannels(TIM_TypeDef *TIMx, uint32_t GroupCH5) +{ + MODIFY_REG(TIMx->CCR5, (TIM_CCR5_GC5C3 | TIM_CCR5_GC5C2 | TIM_CCR5_GC5C1), GroupCH5); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Input_Channel Input channel configuration + * @{ + */ +/** + * @brief Configure input channel. + * @rmtoll CCMR1 CC1S LL_TIM_IC_Config\n + * CCMR1 IC1PSC LL_TIM_IC_Config\n + * CCMR1 IC1F LL_TIM_IC_Config\n + * CCMR1 CC2S LL_TIM_IC_Config\n + * CCMR1 IC2PSC LL_TIM_IC_Config\n + * CCMR1 IC2F LL_TIM_IC_Config\n + * CCMR2 CC3S LL_TIM_IC_Config\n + * CCMR2 IC3PSC LL_TIM_IC_Config\n + * CCMR2 IC3F LL_TIM_IC_Config\n + * CCMR2 CC4S LL_TIM_IC_Config\n + * CCMR2 IC4PSC LL_TIM_IC_Config\n + * CCMR2 IC4F LL_TIM_IC_Config\n + * CCER CC1P LL_TIM_IC_Config\n + * CCER CC1NP LL_TIM_IC_Config\n + * CCER CC2P LL_TIM_IC_Config\n + * CCER CC2NP LL_TIM_IC_Config\n + * CCER CC3P LL_TIM_IC_Config\n + * CCER CC3NP LL_TIM_IC_Config\n + * CCER CC4P LL_TIM_IC_Config\n + * CCER CC4NP LL_TIM_IC_Config + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_TIM_ACTIVEINPUT_TRC + * @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8 + * @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8 + * @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING or @ref LL_TIM_IC_POLARITY_BOTHEDGE + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), + ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S)) \ + << SHIFT_TAB_ICxx[iChannel]); + MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), + (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Set the active input. + * @rmtoll CCMR1 CC1S LL_TIM_IC_SetActiveInput\n + * CCMR1 CC2S LL_TIM_IC_SetActiveInput\n + * CCMR2 CC3S LL_TIM_IC_SetActiveInput\n + * CCMR2 CC4S LL_TIM_IC_SetActiveInput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICActiveInput This parameter can be one of the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_TRC + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the current active input. + * @rmtoll CCMR1 CC1S LL_TIM_IC_GetActiveInput\n + * CCMR1 CC2S LL_TIM_IC_GetActiveInput\n + * CCMR2 CC3S LL_TIM_IC_GetActiveInput\n + * CCMR2 CC4S LL_TIM_IC_GetActiveInput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_TRC + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the prescaler of input channel. + * @rmtoll CCMR1 IC1PSC LL_TIM_IC_SetPrescaler\n + * CCMR1 IC2PSC LL_TIM_IC_SetPrescaler\n + * CCMR2 IC3PSC LL_TIM_IC_SetPrescaler\n + * CCMR2 IC4PSC LL_TIM_IC_SetPrescaler + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICPrescaler This parameter can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the current prescaler value acting on an input channel. + * @rmtoll CCMR1 IC1PSC LL_TIM_IC_GetPrescaler\n + * CCMR1 IC2PSC LL_TIM_IC_GetPrescaler\n + * CCMR2 IC3PSC LL_TIM_IC_GetPrescaler\n + * CCMR2 IC4PSC LL_TIM_IC_GetPrescaler + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the input filter duration. + * @rmtoll CCMR1 IC1F LL_TIM_IC_SetFilter\n + * CCMR1 IC2F LL_TIM_IC_SetFilter\n + * CCMR2 IC3F LL_TIM_IC_SetFilter\n + * CCMR2 IC4F LL_TIM_IC_SetFilter + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICFilter This parameter can be one of the following values: + * @arg @ref LL_TIM_IC_FILTER_FDIV1 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the input filter duration. + * @rmtoll CCMR1 IC1F LL_TIM_IC_GetFilter\n + * CCMR1 IC2F LL_TIM_IC_GetFilter\n + * CCMR2 IC3F LL_TIM_IC_GetFilter\n + * CCMR2 IC4F LL_TIM_IC_GetFilter + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_IC_FILTER_FDIV1 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the input channel polarity. + * @rmtoll CCER CC1P LL_TIM_IC_SetPolarity\n + * CCER CC1NP LL_TIM_IC_SetPolarity\n + * CCER CC2P LL_TIM_IC_SetPolarity\n + * CCER CC2NP LL_TIM_IC_SetPolarity\n + * CCER CC3P LL_TIM_IC_SetPolarity\n + * CCER CC3NP LL_TIM_IC_SetPolarity\n + * CCER CC4P LL_TIM_IC_SetPolarity\n + * CCER CC4NP LL_TIM_IC_SetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_IC_POLARITY_RISING + * @arg @ref LL_TIM_IC_POLARITY_FALLING + * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), + ICPolarity << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Get the current input channel polarity. + * @rmtoll CCER CC1P LL_TIM_IC_GetPolarity\n + * CCER CC1NP LL_TIM_IC_GetPolarity\n + * CCER CC2P LL_TIM_IC_GetPolarity\n + * CCER CC2NP LL_TIM_IC_GetPolarity\n + * CCER CC3P LL_TIM_IC_GetPolarity\n + * CCER CC3NP LL_TIM_IC_GetPolarity\n + * CCER CC4P LL_TIM_IC_GetPolarity\n + * CCER CC4NP LL_TIM_IC_GetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_IC_POLARITY_RISING + * @arg @ref LL_TIM_IC_POLARITY_FALLING + * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >> + SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Connect the TIMx_CH1, CH2 and CH3 pins to the TI1 input (XOR combination). + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_EnableXORCombination + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR2, TIM_CR2_TI1S); +} + +/** + * @brief Disconnect the TIMx_CH1, CH2 and CH3 pins from the TI1 input. + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_DisableXORCombination + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S); +} + +/** + * @brief Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input. + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_IsEnabledXORCombination + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL); +} + +/** + * @brief Get captured value for input channel 1. + * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * input channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_IC_GetCaptureCH1 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR1)); +} + +/** + * @brief Get captured value for input channel 2. + * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * input channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_IC_GetCaptureCH2 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR2)); +} + +/** + * @brief Get captured value for input channel 3. + * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * input channel 3 is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_IC_GetCaptureCH3 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR3)); +} + +/** + * @brief Get captured value for input channel 4. + * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xFFFFFFFF. + * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a 32 bits counter. + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * input channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_IC_GetCaptureCH4 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR4)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection + * @{ + */ +/** + * @brief Enable external clock mode 2. + * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ETRF signal. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_EnableExternalClock + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->SMCR, TIM_SMCR_ECE); +} + +/** + * @brief Disable external clock mode 2. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_DisableExternalClock + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE); +} + +/** + * @brief Indicate whether external clock mode 2 is enabled. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_IsEnabledExternalClock + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL); +} + +/** + * @brief Set the clock source of the counter clock. + * @note when selected clock source is external clock mode 1, the timer input + * the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput() + * function. This timer input must be configured by calling + * the @ref LL_TIM_IC_Config() function. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode1. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR SMS LL_TIM_SetClockSource\n + * SMCR ECE LL_TIM_SetClockSource + * @param TIMx Timer instance + * @param ClockSource This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL + * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1 + * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource); +} + +/** + * @brief Set the encoder interface mode. + * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports the encoder mode. + * @rmtoll SMCR SMS LL_TIM_SetEncoderMode + * @param TIMx Timer instance + * @param EncoderMode This parameter can be one of the following values: + * @arg @ref LL_TIM_ENCODERMODE_X2_TI1 + * @arg @ref LL_TIM_ENCODERMODE_X2_TI2 + * @arg @ref LL_TIM_ENCODERMODE_X4_TI12 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration + * @{ + */ +/** + * @brief Set the trigger output (TRGO) used for timer synchronization . + * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance can operate as a master timer. + * @rmtoll CR2 MMS LL_TIM_SetTriggerOutput + * @param TIMx Timer instance + * @param TimerSynchronization This parameter can be one of the following values: + * @arg @ref LL_TIM_TRGO_RESET + * @arg @ref LL_TIM_TRGO_ENABLE + * @arg @ref LL_TIM_TRGO_UPDATE + * @arg @ref LL_TIM_TRGO_CC1IF + * @arg @ref LL_TIM_TRGO_OC1REF + * @arg @ref LL_TIM_TRGO_OC2REF + * @arg @ref LL_TIM_TRGO_OC3REF + * @arg @ref LL_TIM_TRGO_OC4REF + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization); +} + +/** + * @brief Set the trigger output 2 (TRGO2) used for ADC synchronization . + * @note Macro IS_TIM_TRGO2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance can be used for ADC synchronization. + * @rmtoll CR2 MMS2 LL_TIM_SetTriggerOutput2 + * @param TIMx Timer Instance + * @param ADCSynchronization This parameter can be one of the following values: + * @arg @ref LL_TIM_TRGO2_RESET + * @arg @ref LL_TIM_TRGO2_ENABLE + * @arg @ref LL_TIM_TRGO2_UPDATE + * @arg @ref LL_TIM_TRGO2_CC1F + * @arg @ref LL_TIM_TRGO2_OC1 + * @arg @ref LL_TIM_TRGO2_OC2 + * @arg @ref LL_TIM_TRGO2_OC3 + * @arg @ref LL_TIM_TRGO2_OC4 + * @arg @ref LL_TIM_TRGO2_OC5 + * @arg @ref LL_TIM_TRGO2_OC6 + * @arg @ref LL_TIM_TRGO2_OC4_RISINGFALLING + * @arg @ref LL_TIM_TRGO2_OC6_RISINGFALLING + * @arg @ref LL_TIM_TRGO2_OC4_RISING_OC6_RISING + * @arg @ref LL_TIM_TRGO2_OC4_RISING_OC6_FALLING + * @arg @ref LL_TIM_TRGO2_OC5_RISING_OC6_RISING + * @arg @ref LL_TIM_TRGO2_OC5_RISING_OC6_FALLING + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetTriggerOutput2(TIM_TypeDef *TIMx, uint32_t ADCSynchronization) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_MMS2, ADCSynchronization); +} + +/** + * @brief Set the synchronization mode of a slave timer. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR SMS LL_TIM_SetSlaveMode + * @param TIMx Timer instance + * @param SlaveMode This parameter can be one of the following values: + * @arg @ref LL_TIM_SLAVEMODE_DISABLED + * @arg @ref LL_TIM_SLAVEMODE_RESET + * @arg @ref LL_TIM_SLAVEMODE_GATED + * @arg @ref LL_TIM_SLAVEMODE_TRIGGER + * @arg @ref LL_TIM_SLAVEMODE_COMBINED_RESETTRIGGER + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode); +} + +/** + * @brief Set the selects the trigger input to be used to synchronize the counter. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR TS LL_TIM_SetTriggerInput + * @param TIMx Timer instance + * @param TriggerInput This parameter can be one of the following values: + * @arg @ref LL_TIM_TS_ITR0 + * @arg @ref LL_TIM_TS_ITR1 + * @arg @ref LL_TIM_TS_ITR2 + * @arg @ref LL_TIM_TS_ITR3 + * @arg @ref LL_TIM_TS_TI1F_ED + * @arg @ref LL_TIM_TS_TI1FP1 + * @arg @ref LL_TIM_TS_TI2FP2 + * @arg @ref LL_TIM_TS_ETRF + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput); +} + +/** + * @brief Enable the Master/Slave mode. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_EnableMasterSlaveMode + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->SMCR, TIM_SMCR_MSM); +} + +/** + * @brief Disable the Master/Slave mode. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_DisableMasterSlaveMode + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM); +} + +/** + * @brief Indicates whether the Master/Slave mode is enabled. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_IsEnabledMasterSlaveMode + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL); +} + +/** + * @brief Configure the external trigger (ETR) input. + * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an external trigger input. + * @rmtoll SMCR ETP LL_TIM_ConfigETR\n + * SMCR ETPS LL_TIM_ConfigETR\n + * SMCR ETF LL_TIM_ConfigETR + * @param TIMx Timer instance + * @param ETRPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED + * @arg @ref LL_TIM_ETR_POLARITY_INVERTED + * @param ETRPrescaler This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_PRESCALER_DIV1 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV2 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV4 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV8 + * @param ETRFilter This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_FILTER_FDIV1 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescaler, + uint32_t ETRFilter) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | ETRFilter); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Break_Function Break function configuration + * @{ + */ +/** + * @brief Enable the break function. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR BKE LL_TIM_EnableBRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_BKE); +} + +/** + * @brief Disable the break function. + * @rmtoll BDTR BKE LL_TIM_DisableBRK + * @param TIMx Timer instance + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE); +} + +/** + * @brief Configure the break input. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR BKP LL_TIM_ConfigBRK\n + * BDTR BKF LL_TIM_ConfigBRK + * @param TIMx Timer instance + * @param BreakPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_POLARITY_LOW + * @arg @ref LL_TIM_BREAK_POLARITY_HIGH + * @param BreakFilter This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_FILTER_FDIV1 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity, + uint32_t BreakFilter) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP | TIM_BDTR_BKF, BreakPolarity | BreakFilter); +} + +/** + * @brief Enable the break 2 function. + * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a second break input. + * @rmtoll BDTR BK2E LL_TIM_EnableBRK2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableBRK2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_BK2E); +} + +/** + * @brief Disable the break 2 function. + * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a second break input. + * @rmtoll BDTR BK2E LL_TIM_DisableBRK2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableBRK2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BK2E); +} + +/** + * @brief Configure the break 2 input. + * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a second break input. + * @rmtoll BDTR BK2P LL_TIM_ConfigBRK2\n + * BDTR BK2F LL_TIM_ConfigBRK2 + * @param TIMx Timer instance + * @param Break2Polarity This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK2_POLARITY_LOW + * @arg @ref LL_TIM_BREAK2_POLARITY_HIGH + * @param Break2Filter This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigBRK2(TIM_TypeDef *TIMx, uint32_t Break2Polarity, uint32_t Break2Filter) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_BK2P | TIM_BDTR_BK2F, Break2Polarity | Break2Filter); +} + +/** + * @brief Select the outputs off state (enabled v.s. disabled) in Idle and Run modes. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR OSSI LL_TIM_SetOffStates\n + * BDTR OSSR LL_TIM_SetOffStates + * @param TIMx Timer instance + * @param OffStateIdle This parameter can be one of the following values: + * @arg @ref LL_TIM_OSSI_DISABLE + * @arg @ref LL_TIM_OSSI_ENABLE + * @param OffStateRun This parameter can be one of the following values: + * @arg @ref LL_TIM_OSSR_DISABLE + * @arg @ref LL_TIM_OSSR_ENABLE + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStateRun) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun); +} + +/** + * @brief Enable automatic output (MOE can be set by software or automatically when a break input is active). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_EnableAutomaticOutput + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_AOE); +} + +/** + * @brief Disable automatic output (MOE can be set only by software). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_DisableAutomaticOutput + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE); +} + +/** + * @brief Indicate whether automatic output is enabled. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_IsEnabledAutomaticOutput + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL); +} + +/** + * @brief Enable the outputs (set the MOE bit in TIMx_BDTR register). + * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by + * software and is reset in case of break or break2 event + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_EnableAllOutputs + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_MOE); +} + +/** + * @brief Disable the outputs (reset the MOE bit in TIMx_BDTR register). + * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by + * software and is reset in case of break or break2 event. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_DisableAllOutputs + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE); +} + +/** + * @brief Indicates whether outputs are enabled. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_IsEnabledAllOutputs + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL); +} + +#if defined(TIM_BREAK_INPUT_SUPPORT) +/** + * @brief Enable the signals connected to the designated timer break input. + * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether + * or not a timer instance allows for break input selection. + * @rmtoll AF1 BKINE LL_TIM_EnableBreakInputSource\n + * AF1 BKDFBKE LL_TIM_EnableBreakInputSource\n + * AF2 BK2INE LL_TIM_EnableBreakInputSource\n + * AF2 BK2DFBKE LL_TIM_EnableBreakInputSource + * @param TIMx Timer instance + * @param BreakInput This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_INPUT_BKIN + * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 + * @param Source This parameter can be one of the following values: + * @arg @ref LL_TIM_BKIN_SOURCE_BKIN + * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableBreakInputSource(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_t Source) +{ + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); + SET_BIT(*pReg, Source); +} + +/** + * @brief Disable the signals connected to the designated timer break input. + * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether + * or not a timer instance allows for break input selection. + * @rmtoll AF1 BKINE LL_TIM_DisableBreakInputSource\n + * AF1 BKDFBKE LL_TIM_DisableBreakInputSource\n + * AF2 BK2INE LL_TIM_DisableBreakInputSource\n + * AF2 BK2DFBKE LL_TIM_DisableBreakInputSource + * @param TIMx Timer instance + * @param BreakInput This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_INPUT_BKIN + * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 + * @param Source This parameter can be one of the following values: + * @arg @ref LL_TIM_BKIN_SOURCE_BKIN + * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableBreakInputSource(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_t Source) +{ + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); + CLEAR_BIT(*pReg, Source); +} + +/** + * @brief Set the polarity of the break signal for the timer break input. + * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether + * or not a timer instance allows for break input selection. + * @rmtoll AF1 BKINP LL_TIM_SetBreakInputSourcePolarity\n + * AF1 BKDFBKP LL_TIM_SetBreakInputSourcePolarity\n + * AF2 BK2INP LL_TIM_SetBreakInputSourcePolarity\n + * AF2 BK2DFBKP LL_TIM_SetBreakInputSourcePolarity + * @param TIMx Timer instance + * @param BreakInput This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_INPUT_BKIN + * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 + * @param Source This parameter can be one of the following values: + * @arg @ref LL_TIM_BKIN_SOURCE_BKIN + * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_TIM_BKIN_POLARITY_LOW + * @arg @ref LL_TIM_BKIN_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetBreakInputSourcePolarity(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_t Source, + uint32_t Polarity) +{ + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); + MODIFY_REG(*pReg, (TIMx_AF1_BKINP << TIM_POSITION_BRK_SOURCE), (Polarity << TIM_POSITION_BRK_SOURCE)); +} +#endif /* TIM_BREAK_INPUT_SUPPORT */ +/** + * @} + */ + +/** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration + * @{ + */ +/** + * @brief Configures the timer DMA burst feature. + * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or + * not a timer instance supports the DMA burst mode. + * @rmtoll DCR DBL LL_TIM_ConfigDMABurst\n + * DCR DBA LL_TIM_ConfigDMABurst + * @param TIMx Timer instance + * @param DMABurstBaseAddress This parameter can be one of the following values: + * @arg @ref LL_TIM_DMABURST_BASEADDR_CR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR + * @arg @ref LL_TIM_DMABURST_BASEADDR_DIER + * @arg @ref LL_TIM_DMABURST_BASEADDR_SR + * @arg @ref LL_TIM_DMABURST_BASEADDR_EGR + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCER + * @arg @ref LL_TIM_DMABURST_BASEADDR_CNT + * @arg @ref LL_TIM_DMABURST_BASEADDR_PSC + * @arg @ref LL_TIM_DMABURST_BASEADDR_ARR + * @arg @ref LL_TIM_DMABURST_BASEADDR_RCR + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4 + * @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR + * @arg @ref LL_TIM_DMABURST_BASEADDR_OR + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR3 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR5 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR6 + * @arg @ref LL_TIM_DMABURST_BASEADDR_AF1 (*) + * @arg @ref LL_TIM_DMABURST_BASEADDR_AF2 (*) + * (*) value not defined in all devices + * @param DMABurstLength This parameter can be one of the following values: + * @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER + * @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength) +{ + MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Timer_Inputs_Remapping Timer input remapping + * @{ + */ +/** + * @brief Remap TIM inputs (input channel, internal/external triggers). + * @note Macro IS_TIM_REMAP_INSTANCE(TIMx) can be used to check whether or not + * a some timer inputs can be remapped. + * @rmtoll TIM2_OR ITR1_RMP LL_TIM_SetRemap\n + * TIM5_OR TI4_RMP LL_TIM_SetRemap\n + * TIM11_OR TI1_RMP LL_TIM_SetRemap + * @param TIMx Timer instance + * @param Remap Remap param depends on the TIMx. Description available only + * in CHM version of the User Manual (not in .pdf). + * Otherwise see Reference Manual description of OR registers. + * + * Below description summarizes "Timer Instance" and "Remap" param combinations: + * + * TIM2: one of the following values + * + * ITR1_RMP can be one of the following values + * @arg @ref LL_TIM_TIM2_ITR1_RMP_TIM8_TRGO + * @arg @ref LL_TIM_TIM2_ITR1_RMP_ETH_PTP + * @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_FS_SOF + * @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_HS_SOF + * + * TIM5: one of the following values + * + * @arg @ref LL_TIM_TIM5_TI4_RMP_GPIO + * @arg @ref LL_TIM_TIM5_TI4_RMP_LSI + * @arg @ref LL_TIM_TIM5_TI4_RMP_LSE + * @arg @ref LL_TIM_TIM5_TI4_RMP_RTC + * + * TIM11: one of the following values + * + * @arg @ref LL_TIM_TIM11_TI1_RMP_GPIO + * @arg @ref LL_TIM_TIM11_TI1_RMP_SPDIFRX + * @arg @ref LL_TIM_TIM11_TI1_RMP_HSE + * @arg @ref LL_TIM_TIM11_TI1_RMP_MCO1 + * + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetRemap(TIM_TypeDef *TIMx, uint32_t Remap) +{ + MODIFY_REG(TIMx->OR, (Remap >> TIMx_OR_RMP_SHIFT), (Remap & TIMx_OR_RMP_MASK)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management + * @{ + */ +/** + * @brief Clear the update interrupt flag (UIF). + * @rmtoll SR UIF LL_TIM_ClearFlag_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_UIF)); +} + +/** + * @brief Indicate whether update interrupt flag (UIF) is set (update interrupt is pending). + * @rmtoll SR UIF LL_TIM_IsActiveFlag_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 1 interrupt flag (CC1F). + * @rmtoll SR CC1IF LL_TIM_ClearFlag_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF)); +} + +/** + * @brief Indicate whether Capture/Compare 1 interrupt flag (CC1F) is set (Capture/Compare 1 interrupt is pending). + * @rmtoll SR CC1IF LL_TIM_IsActiveFlag_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 2 interrupt flag (CC2F). + * @rmtoll SR CC2IF LL_TIM_ClearFlag_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF)); +} + +/** + * @brief Indicate whether Capture/Compare 2 interrupt flag (CC2F) is set (Capture/Compare 2 interrupt is pending). + * @rmtoll SR CC2IF LL_TIM_IsActiveFlag_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 3 interrupt flag (CC3F). + * @rmtoll SR CC3IF LL_TIM_ClearFlag_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF)); +} + +/** + * @brief Indicate whether Capture/Compare 3 interrupt flag (CC3F) is set (Capture/Compare 3 interrupt is pending). + * @rmtoll SR CC3IF LL_TIM_IsActiveFlag_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 4 interrupt flag (CC4F). + * @rmtoll SR CC4IF LL_TIM_ClearFlag_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF)); +} + +/** + * @brief Indicate whether Capture/Compare 4 interrupt flag (CC4F) is set (Capture/Compare 4 interrupt is pending). + * @rmtoll SR CC4IF LL_TIM_IsActiveFlag_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 5 interrupt flag (CC5F). + * @rmtoll SR CC5IF LL_TIM_ClearFlag_CC5 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC5(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC5IF)); +} + +/** + * @brief Indicate whether Capture/Compare 5 interrupt flag (CC5F) is set (Capture/Compare 5 interrupt is pending). + * @rmtoll SR CC5IF LL_TIM_IsActiveFlag_CC5 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC5(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC5IF) == (TIM_SR_CC5IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 6 interrupt flag (CC6F). + * @rmtoll SR CC6IF LL_TIM_ClearFlag_CC6 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC6(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC6IF)); +} + +/** + * @brief Indicate whether Capture/Compare 6 interrupt flag (CC6F) is set (Capture/Compare 6 interrupt is pending). + * @rmtoll SR CC6IF LL_TIM_IsActiveFlag_CC6 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC6(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC6IF) == (TIM_SR_CC6IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the commutation interrupt flag (COMIF). + * @rmtoll SR COMIF LL_TIM_ClearFlag_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_COM(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_COMIF)); +} + +/** + * @brief Indicate whether commutation interrupt flag (COMIF) is set (commutation interrupt is pending). + * @rmtoll SR COMIF LL_TIM_IsActiveFlag_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the trigger interrupt flag (TIF). + * @rmtoll SR TIF LL_TIM_ClearFlag_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_TIF)); +} + +/** + * @brief Indicate whether trigger interrupt flag (TIF) is set (trigger interrupt is pending). + * @rmtoll SR TIF LL_TIM_IsActiveFlag_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the break interrupt flag (BIF). + * @rmtoll SR BIF LL_TIM_ClearFlag_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_BRK(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_BIF)); +} + +/** + * @brief Indicate whether break interrupt flag (BIF) is set (break interrupt is pending). + * @rmtoll SR BIF LL_TIM_IsActiveFlag_BRK + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the break 2 interrupt flag (B2IF). + * @rmtoll SR B2IF LL_TIM_ClearFlag_BRK2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_BRK2(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_B2IF)); +} + +/** + * @brief Indicate whether break 2 interrupt flag (B2IF) is set (break 2 interrupt is pending). + * @rmtoll SR B2IF LL_TIM_IsActiveFlag_BRK2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_B2IF) == (TIM_SR_B2IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF). + * @rmtoll SR CC1OF LL_TIM_ClearFlag_CC1OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF)); +} + +/** + * @brief Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set + * (Capture/Compare 1 interrupt is pending). + * @rmtoll SR CC1OF LL_TIM_IsActiveFlag_CC1OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF). + * @rmtoll SR CC2OF LL_TIM_ClearFlag_CC2OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF)); +} + +/** + * @brief Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set + * (Capture/Compare 2 over-capture interrupt is pending). + * @rmtoll SR CC2OF LL_TIM_IsActiveFlag_CC2OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF). + * @rmtoll SR CC3OF LL_TIM_ClearFlag_CC3OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF)); +} + +/** + * @brief Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set + * (Capture/Compare 3 over-capture interrupt is pending). + * @rmtoll SR CC3OF LL_TIM_IsActiveFlag_CC3OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF). + * @rmtoll SR CC4OF LL_TIM_ClearFlag_CC4OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF)); +} + +/** + * @brief Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set + * (Capture/Compare 4 over-capture interrupt is pending). + * @rmtoll SR CC4OF LL_TIM_IsActiveFlag_CC4OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the system break interrupt flag (SBIF). + * @rmtoll SR SBIF LL_TIM_ClearFlag_SYSBRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_SYSBRK(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_SBIF)); +} + +/** + * @brief Indicate whether system break interrupt flag (SBIF) is set (system break interrupt is pending). + * @rmtoll SR SBIF LL_TIM_IsActiveFlag_SYSBRK + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_SYSBRK(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_SBIF) == (TIM_SR_SBIF)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_IT_Management IT-Management + * @{ + */ +/** + * @brief Enable update interrupt (UIE). + * @rmtoll DIER UIE LL_TIM_EnableIT_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_UIE); +} + +/** + * @brief Disable update interrupt (UIE). + * @rmtoll DIER UIE LL_TIM_DisableIT_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_UPDATE(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_UIE); +} + +/** + * @brief Indicates whether the update interrupt (UIE) is enabled. + * @rmtoll DIER UIE LL_TIM_IsEnabledIT_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 1 interrupt (CC1IE). + * @rmtoll DIER CC1IE LL_TIM_EnableIT_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC1IE); +} + +/** + * @brief Disable capture/compare 1 interrupt (CC1IE). + * @rmtoll DIER CC1IE LL_TIM_DisableIT_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC1(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1IE); +} + +/** + * @brief Indicates whether the capture/compare 1 interrupt (CC1IE) is enabled. + * @rmtoll DIER CC1IE LL_TIM_IsEnabledIT_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 2 interrupt (CC2IE). + * @rmtoll DIER CC2IE LL_TIM_EnableIT_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC2IE); +} + +/** + * @brief Disable capture/compare 2 interrupt (CC2IE). + * @rmtoll DIER CC2IE LL_TIM_DisableIT_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2IE); +} + +/** + * @brief Indicates whether the capture/compare 2 interrupt (CC2IE) is enabled. + * @rmtoll DIER CC2IE LL_TIM_IsEnabledIT_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 3 interrupt (CC3IE). + * @rmtoll DIER CC3IE LL_TIM_EnableIT_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC3IE); +} + +/** + * @brief Disable capture/compare 3 interrupt (CC3IE). + * @rmtoll DIER CC3IE LL_TIM_DisableIT_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC3(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3IE); +} + +/** + * @brief Indicates whether the capture/compare 3 interrupt (CC3IE) is enabled. + * @rmtoll DIER CC3IE LL_TIM_IsEnabledIT_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 4 interrupt (CC4IE). + * @rmtoll DIER CC4IE LL_TIM_EnableIT_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC4IE); +} + +/** + * @brief Disable capture/compare 4 interrupt (CC4IE). + * @rmtoll DIER CC4IE LL_TIM_DisableIT_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC4(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4IE); +} + +/** + * @brief Indicates whether the capture/compare 4 interrupt (CC4IE) is enabled. + * @rmtoll DIER CC4IE LL_TIM_IsEnabledIT_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable commutation interrupt (COMIE). + * @rmtoll DIER COMIE LL_TIM_EnableIT_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_COMIE); +} + +/** + * @brief Disable commutation interrupt (COMIE). + * @rmtoll DIER COMIE LL_TIM_DisableIT_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_COM(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_COMIE); +} + +/** + * @brief Indicates whether the commutation interrupt (COMIE) is enabled. + * @rmtoll DIER COMIE LL_TIM_IsEnabledIT_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable trigger interrupt (TIE). + * @rmtoll DIER TIE LL_TIM_EnableIT_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_TIE); +} + +/** + * @brief Disable trigger interrupt (TIE). + * @rmtoll DIER TIE LL_TIM_DisableIT_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_TRIG(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_TIE); +} + +/** + * @brief Indicates whether the trigger interrupt (TIE) is enabled. + * @rmtoll DIER TIE LL_TIM_IsEnabledIT_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable break interrupt (BIE). + * @rmtoll DIER BIE LL_TIM_EnableIT_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_BRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_BIE); +} + +/** + * @brief Disable break interrupt (BIE). + * @rmtoll DIER BIE LL_TIM_DisableIT_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_BRK(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_BIE); +} + +/** + * @brief Indicates whether the break interrupt (BIE) is enabled. + * @rmtoll DIER BIE LL_TIM_IsEnabledIT_BRK + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_DMA_Management DMA Management + * @{ + */ +/** + * @brief Enable update DMA request (UDE). + * @rmtoll DIER UDE LL_TIM_EnableDMAReq_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_UDE); +} + +/** + * @brief Disable update DMA request (UDE). + * @rmtoll DIER UDE LL_TIM_DisableDMAReq_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_UPDATE(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_UDE); +} + +/** + * @brief Indicates whether the update DMA request (UDE) is enabled. + * @rmtoll DIER UDE LL_TIM_IsEnabledDMAReq_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 1 DMA request (CC1DE). + * @rmtoll DIER CC1DE LL_TIM_EnableDMAReq_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC1DE); +} + +/** + * @brief Disable capture/compare 1 DMA request (CC1DE). + * @rmtoll DIER CC1DE LL_TIM_DisableDMAReq_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC1(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1DE); +} + +/** + * @brief Indicates whether the capture/compare 1 DMA request (CC1DE) is enabled. + * @rmtoll DIER CC1DE LL_TIM_IsEnabledDMAReq_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 2 DMA request (CC2DE). + * @rmtoll DIER CC2DE LL_TIM_EnableDMAReq_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC2DE); +} + +/** + * @brief Disable capture/compare 2 DMA request (CC2DE). + * @rmtoll DIER CC2DE LL_TIM_DisableDMAReq_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2DE); +} + +/** + * @brief Indicates whether the capture/compare 2 DMA request (CC2DE) is enabled. + * @rmtoll DIER CC2DE LL_TIM_IsEnabledDMAReq_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 3 DMA request (CC3DE). + * @rmtoll DIER CC3DE LL_TIM_EnableDMAReq_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC3DE); +} + +/** + * @brief Disable capture/compare 3 DMA request (CC3DE). + * @rmtoll DIER CC3DE LL_TIM_DisableDMAReq_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC3(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3DE); +} + +/** + * @brief Indicates whether the capture/compare 3 DMA request (CC3DE) is enabled. + * @rmtoll DIER CC3DE LL_TIM_IsEnabledDMAReq_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 4 DMA request (CC4DE). + * @rmtoll DIER CC4DE LL_TIM_EnableDMAReq_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC4DE); +} + +/** + * @brief Disable capture/compare 4 DMA request (CC4DE). + * @rmtoll DIER CC4DE LL_TIM_DisableDMAReq_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC4(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4DE); +} + +/** + * @brief Indicates whether the capture/compare 4 DMA request (CC4DE) is enabled. + * @rmtoll DIER CC4DE LL_TIM_IsEnabledDMAReq_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable commutation DMA request (COMDE). + * @rmtoll DIER COMDE LL_TIM_EnableDMAReq_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_COMDE); +} + +/** + * @brief Disable commutation DMA request (COMDE). + * @rmtoll DIER COMDE LL_TIM_DisableDMAReq_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_COM(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_COMDE); +} + +/** + * @brief Indicates whether the commutation DMA request (COMDE) is enabled. + * @rmtoll DIER COMDE LL_TIM_IsEnabledDMAReq_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE)) ? 1UL : 0UL); +} + +/** + * @brief Enable trigger interrupt (TDE). + * @rmtoll DIER TDE LL_TIM_EnableDMAReq_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_TDE); +} + +/** + * @brief Disable trigger interrupt (TDE). + * @rmtoll DIER TDE LL_TIM_DisableDMAReq_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_TRIG(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_TDE); +} + +/** + * @brief Indicates whether the trigger interrupt (TDE) is enabled. + * @rmtoll DIER TDE LL_TIM_IsEnabledDMAReq_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_EVENT_Management EVENT-Management + * @{ + */ +/** + * @brief Generate an update event. + * @rmtoll EGR UG LL_TIM_GenerateEvent_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_UG); +} + +/** + * @brief Generate Capture/Compare 1 event. + * @rmtoll EGR CC1G LL_TIM_GenerateEvent_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC1G); +} + +/** + * @brief Generate Capture/Compare 2 event. + * @rmtoll EGR CC2G LL_TIM_GenerateEvent_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC2G); +} + +/** + * @brief Generate Capture/Compare 3 event. + * @rmtoll EGR CC3G LL_TIM_GenerateEvent_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC3G); +} + +/** + * @brief Generate Capture/Compare 4 event. + * @rmtoll EGR CC4G LL_TIM_GenerateEvent_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC4G); +} + +/** + * @brief Generate commutation event. + * @rmtoll EGR COMG LL_TIM_GenerateEvent_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_COMG); +} + +/** + * @brief Generate trigger event. + * @rmtoll EGR TG LL_TIM_GenerateEvent_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_TG); +} + +/** + * @brief Generate break event. + * @rmtoll EGR BG LL_TIM_GenerateEvent_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_BRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_BG); +} + +/** + * @brief Generate break 2 event. + * @rmtoll EGR B2G LL_TIM_GenerateEvent_BRK2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_BRK2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_B2G); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_EF_Init Initialisation and deinitialisation functions + * @{ + */ + +ErrorStatus LL_TIM_DeInit(const TIM_TypeDef *TIMx); +void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct); +ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, const LL_TIM_InitTypeDef *TIM_InitStruct); +void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct); +ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct); +void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct); +void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct); +ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, const LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct); +void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct); +ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, const LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct); +void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct); +ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, const LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* TIM1 || TIM8 || TIM2 || TIM3 || TIM4 || TIM5 ||TIM9 || TIM10 || TIM11 || TIM12 || TIM13 || TIM14 || TIM6 || TIM7 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_TIM_H */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h new file mode 100644 index 0000000..daa329e --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h @@ -0,0 +1,3804 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_usart.h + * @author MCD Application Team + * @brief Header file of USART LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F7xx_LL_USART_H +#define STM32F7xx_LL_USART_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined(USART1) || defined(USART2) || defined(USART3) || defined(USART6) \ + || defined(UART4) || defined(UART5) || defined(UART7) || defined(UART8) + +/** @defgroup USART_LL USART + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup USART_LL_Private_Constants USART Private Constants + * @{ + */ +/** + * @} + */ +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_Private_Macros USART Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_ES_INIT USART Exported Init structures + * @{ + */ + +/** + * @brief LL USART Init Structure definition + */ +typedef struct +{ + + uint32_t BaudRate; /*!< This field defines expected Usart communication baud rate. + + This feature can be modified afterwards using unitary + function @ref LL_USART_SetBaudRate().*/ + + uint32_t DataWidth; /*!< Specifies the number of data bits transmitted or received in a frame. + This parameter can be a value of @ref USART_LL_EC_DATAWIDTH. + + This feature can be modified afterwards using unitary + function @ref LL_USART_SetDataWidth().*/ + + uint32_t StopBits; /*!< Specifies the number of stop bits transmitted. + This parameter can be a value of @ref USART_LL_EC_STOPBITS. + + This feature can be modified afterwards using unitary + function @ref LL_USART_SetStopBitsLength().*/ + + uint32_t Parity; /*!< Specifies the parity mode. + This parameter can be a value of @ref USART_LL_EC_PARITY. + + This feature can be modified afterwards using unitary + function @ref LL_USART_SetParity().*/ + + uint32_t TransferDirection; /*!< Specifies whether the Receive and/or Transmit mode is enabled or disabled. + This parameter can be a value of @ref USART_LL_EC_DIRECTION. + + This feature can be modified afterwards using unitary + function @ref LL_USART_SetTransferDirection().*/ + + uint32_t HardwareFlowControl; /*!< Specifies whether the hardware flow control mode is enabled or disabled. + This parameter can be a value of @ref USART_LL_EC_HWCONTROL. + + This feature can be modified afterwards using unitary + function @ref LL_USART_SetHWFlowCtrl().*/ + + uint32_t OverSampling; /*!< Specifies whether USART oversampling mode is 16 or 8. + This parameter can be a value of @ref USART_LL_EC_OVERSAMPLING. + + This feature can be modified afterwards using unitary + function @ref LL_USART_SetOverSampling().*/ + +} LL_USART_InitTypeDef; + +/** + * @brief LL USART Clock Init Structure definition + */ +typedef struct +{ + uint32_t ClockOutput; /*!< Specifies whether the USART clock is enabled or disabled. + This parameter can be a value of @ref USART_LL_EC_CLOCK. + + USART HW configuration can be modified afterwards using unitary functions + @ref LL_USART_EnableSCLKOutput() or @ref LL_USART_DisableSCLKOutput(). + For more details, refer to description of this function. */ + + uint32_t ClockPolarity; /*!< Specifies the steady state of the serial clock. + This parameter can be a value of @ref USART_LL_EC_POLARITY. + + USART HW configuration can be modified afterwards using unitary + functions @ref LL_USART_SetClockPolarity(). + For more details, refer to description of this function. */ + + uint32_t ClockPhase; /*!< Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref USART_LL_EC_PHASE. + + USART HW configuration can be modified afterwards using unitary + functions @ref LL_USART_SetClockPhase(). + For more details, refer to description of this function. */ + + uint32_t LastBitClockPulse; /*!< Specifies whether the clock pulse corresponding to the last transmitted + data bit (MSB) has to be output on the SCLK pin in synchronous mode. + This parameter can be a value of @ref USART_LL_EC_LASTCLKPULSE. + + USART HW configuration can be modified afterwards using unitary + functions @ref LL_USART_SetLastClkPulseOutput(). + For more details, refer to description of this function. */ + +} LL_USART_ClockInitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup USART_LL_Exported_Constants USART Exported Constants + * @{ + */ + +/** @defgroup USART_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_USART_WriteReg function + * @{ + */ +#define LL_USART_ICR_PECF USART_ICR_PECF /*!< Parity error clear flag */ +#define LL_USART_ICR_FECF USART_ICR_FECF /*!< Framing error clear flag */ +#define LL_USART_ICR_NCF USART_ICR_NCF /*!< Noise error detected clear flag */ +#define LL_USART_ICR_ORECF USART_ICR_ORECF /*!< Overrun error clear flag */ +#define LL_USART_ICR_IDLECF USART_ICR_IDLECF /*!< Idle line detected clear flag */ +#define LL_USART_ICR_TCCF USART_ICR_TCCF /*!< Transmission complete clear flag */ +#if defined(USART_TCBGT_SUPPORT) +#define LL_USART_ICR_TCBGTCF USART_ICR_TCBGTCF /*!< Transmission completed before guard time clear flag */ +#endif /* USART_TCBGT_SUPPORT */ +#define LL_USART_ICR_LBDCF USART_ICR_LBDCF /*!< LIN break detection clear flag */ +#define LL_USART_ICR_CTSCF USART_ICR_CTSCF /*!< CTS clear flag */ +#define LL_USART_ICR_RTOCF USART_ICR_RTOCF /*!< Receiver timeout clear flag */ +#define LL_USART_ICR_EOBCF USART_ICR_EOBCF /*!< End of block clear flag */ +#define LL_USART_ICR_CMCF USART_ICR_CMCF /*!< Character match clear flag */ +#if defined(USART_CR1_UESM) +#if defined(USART_CR3_WUFIE) +#define LL_USART_ICR_WUCF USART_ICR_WUCF /*!< Wakeup from Stop mode clear flag */ +#endif /* USART_CR3_WUFIE */ +#endif /* USART_CR1_UESM */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_USART_ReadReg function + * @{ + */ +#define LL_USART_ISR_PE USART_ISR_PE /*!< Parity error flag */ +#define LL_USART_ISR_FE USART_ISR_FE /*!< Framing error flag */ +#define LL_USART_ISR_NE USART_ISR_NE /*!< Noise detected flag */ +#define LL_USART_ISR_ORE USART_ISR_ORE /*!< Overrun error flag */ +#define LL_USART_ISR_IDLE USART_ISR_IDLE /*!< Idle line detected flag */ +#define LL_USART_ISR_RXNE USART_ISR_RXNE /*!< Read data register not empty flag */ +#define LL_USART_ISR_TC USART_ISR_TC /*!< Transmission complete flag */ +#define LL_USART_ISR_TXE USART_ISR_TXE /*!< Transmit data register empty flag */ +#define LL_USART_ISR_LBDF USART_ISR_LBDF /*!< LIN break detection flag */ +#define LL_USART_ISR_CTSIF USART_ISR_CTSIF /*!< CTS interrupt flag */ +#define LL_USART_ISR_CTS USART_ISR_CTS /*!< CTS flag */ +#define LL_USART_ISR_RTOF USART_ISR_RTOF /*!< Receiver timeout flag */ +#define LL_USART_ISR_EOBF USART_ISR_EOBF /*!< End of block flag */ +#define LL_USART_ISR_ABRE USART_ISR_ABRE /*!< Auto baud rate error flag */ +#define LL_USART_ISR_ABRF USART_ISR_ABRF /*!< Auto baud rate flag */ +#define LL_USART_ISR_BUSY USART_ISR_BUSY /*!< Busy flag */ +#define LL_USART_ISR_CMF USART_ISR_CMF /*!< Character match flag */ +#define LL_USART_ISR_SBKF USART_ISR_SBKF /*!< Send break flag */ +#define LL_USART_ISR_RWU USART_ISR_RWU /*!< Receiver wakeup from Mute mode flag */ +#if defined(USART_CR1_UESM) +#if defined(USART_CR3_WUFIE) +#define LL_USART_ISR_WUF USART_ISR_WUF /*!< Wakeup from Stop mode flag */ +#endif /* USART_CR3_WUFIE */ +#endif /* USART_CR1_UESM */ +#define LL_USART_ISR_TEACK USART_ISR_TEACK /*!< Transmit enable acknowledge flag */ +#if defined(USART_ISR_REACK) +#define LL_USART_ISR_REACK USART_ISR_REACK /*!< Receive enable acknowledge flag */ +#endif /* USART_ISR_REACK */ +#if defined(USART_TCBGT_SUPPORT) +#define LL_USART_ISR_TCBGT USART_ISR_TCBGT /*!< Transmission complete before guard time completion flag */ +#endif /* USART_TCBGT_SUPPORT */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_USART_ReadReg and LL_USART_WriteReg functions + * @{ + */ +#define LL_USART_CR1_IDLEIE USART_CR1_IDLEIE /*!< IDLE interrupt enable */ +#define LL_USART_CR1_RXNEIE USART_CR1_RXNEIE /*!< Read data register not empty interrupt enable */ +#define LL_USART_CR1_TCIE USART_CR1_TCIE /*!< Transmission complete interrupt enable */ +#define LL_USART_CR1_TXEIE USART_CR1_TXEIE /*!< Transmit data register empty interrupt enable */ +#define LL_USART_CR1_PEIE USART_CR1_PEIE /*!< Parity error */ +#define LL_USART_CR1_CMIE USART_CR1_CMIE /*!< Character match interrupt enable */ +#define LL_USART_CR1_RTOIE USART_CR1_RTOIE /*!< Receiver timeout interrupt enable */ +#define LL_USART_CR1_EOBIE USART_CR1_EOBIE /*!< End of Block interrupt enable */ +#define LL_USART_CR2_LBDIE USART_CR2_LBDIE /*!< LIN break detection interrupt enable */ +#define LL_USART_CR3_EIE USART_CR3_EIE /*!< Error interrupt enable */ +#define LL_USART_CR3_CTSIE USART_CR3_CTSIE /*!< CTS interrupt enable */ +#if defined(USART_CR1_UESM) +#if defined(USART_CR3_WUFIE) +#define LL_USART_CR3_WUFIE USART_CR3_WUFIE /*!< Wakeup from Stop mode interrupt enable */ +#endif /* USART_CR3_WUFIE */ +#endif /* USART_CR1_UESM */ +#if defined(USART_TCBGT_SUPPORT) +#define LL_USART_CR3_TCBGTIE USART_CR3_TCBGTIE /*!< Transmission complete before guard time interrupt enable */ +#endif /* USART_TCBGT_SUPPORT */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_DIRECTION Communication Direction + * @{ + */ +#define LL_USART_DIRECTION_NONE 0x00000000U /*!< Transmitter and Receiver are disabled */ +#define LL_USART_DIRECTION_RX USART_CR1_RE /*!< Transmitter is disabled and Receiver is enabled */ +#define LL_USART_DIRECTION_TX USART_CR1_TE /*!< Transmitter is enabled and Receiver is disabled */ +#define LL_USART_DIRECTION_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< Transmitter and Receiver are enabled */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_PARITY Parity Control + * @{ + */ +#define LL_USART_PARITY_NONE 0x00000000U /*!< Parity control disabled */ +#define LL_USART_PARITY_EVEN USART_CR1_PCE /*!< Parity control enabled and Even Parity is selected */ +#define LL_USART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< Parity control enabled and Odd Parity is selected */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_WAKEUP Wakeup + * @{ + */ +#define LL_USART_WAKEUP_IDLELINE 0x00000000U /*!< USART wake up from Mute mode on Idle Line */ +#define LL_USART_WAKEUP_ADDRESSMARK USART_CR1_WAKE /*!< USART wake up from Mute mode on Address Mark */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_DATAWIDTH Datawidth + * @{ + */ +#define LL_USART_DATAWIDTH_7B USART_CR1_M1 /*!< 7 bits word length : Start bit, 7 data bits, n stop bits */ +#define LL_USART_DATAWIDTH_8B 0x00000000U /*!< 8 bits word length : Start bit, 8 data bits, n stop bits */ +#define LL_USART_DATAWIDTH_9B USART_CR1_M0 /*!< 9 bits word length : Start bit, 9 data bits, n stop bits */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_OVERSAMPLING Oversampling + * @{ + */ +#define LL_USART_OVERSAMPLING_16 0x00000000U /*!< Oversampling by 16 */ +#define LL_USART_OVERSAMPLING_8 USART_CR1_OVER8 /*!< Oversampling by 8 */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_EC_CLOCK Clock Signal + * @{ + */ + +#define LL_USART_CLOCK_DISABLE 0x00000000U /*!< Clock signal not provided */ +#define LL_USART_CLOCK_ENABLE USART_CR2_CLKEN /*!< Clock signal provided */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/** @defgroup USART_LL_EC_LASTCLKPULSE Last Clock Pulse + * @{ + */ +#define LL_USART_LASTCLKPULSE_NO_OUTPUT 0x00000000U /*!< The clock pulse of the last data bit is not output to the SCLK pin */ +#define LL_USART_LASTCLKPULSE_OUTPUT USART_CR2_LBCL /*!< The clock pulse of the last data bit is output to the SCLK pin */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_PHASE Clock Phase + * @{ + */ +#define LL_USART_PHASE_1EDGE 0x00000000U /*!< The first clock transition is the first data capture edge */ +#define LL_USART_PHASE_2EDGE USART_CR2_CPHA /*!< The second clock transition is the first data capture edge */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_POLARITY Clock Polarity + * @{ + */ +#define LL_USART_POLARITY_LOW 0x00000000U /*!< Steady low value on SCLK pin outside transmission window*/ +#define LL_USART_POLARITY_HIGH USART_CR2_CPOL /*!< Steady high value on SCLK pin outside transmission window */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_STOPBITS Stop Bits + * @{ + */ +#define LL_USART_STOPBITS_0_5 USART_CR2_STOP_0 /*!< 0.5 stop bit */ +#define LL_USART_STOPBITS_1 0x00000000U /*!< 1 stop bit */ +#define LL_USART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) /*!< 1.5 stop bits */ +#define LL_USART_STOPBITS_2 USART_CR2_STOP_1 /*!< 2 stop bits */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_TXRX TX RX Pins Swap + * @{ + */ +#define LL_USART_TXRX_STANDARD 0x00000000U /*!< TX/RX pins are used as defined in standard pinout */ +#define LL_USART_TXRX_SWAPPED (USART_CR2_SWAP) /*!< TX and RX pins functions are swapped. */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_RXPIN_LEVEL RX Pin Active Level Inversion + * @{ + */ +#define LL_USART_RXPIN_LEVEL_STANDARD 0x00000000U /*!< RX pin signal works using the standard logic levels */ +#define LL_USART_RXPIN_LEVEL_INVERTED (USART_CR2_RXINV) /*!< RX pin signal values are inverted. */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_TXPIN_LEVEL TX Pin Active Level Inversion + * @{ + */ +#define LL_USART_TXPIN_LEVEL_STANDARD 0x00000000U /*!< TX pin signal works using the standard logic levels */ +#define LL_USART_TXPIN_LEVEL_INVERTED (USART_CR2_TXINV) /*!< TX pin signal values are inverted. */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_BINARY_LOGIC Binary Data Inversion + * @{ + */ +#define LL_USART_BINARY_LOGIC_POSITIVE 0x00000000U /*!< Logical data from the data register are send/received in positive/direct logic. (1=H, 0=L) */ +#define LL_USART_BINARY_LOGIC_NEGATIVE USART_CR2_DATAINV /*!< Logical data from the data register are send/received in negative/inverse logic. (1=L, 0=H). The parity bit is also inverted. */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_BITORDER Bit Order + * @{ + */ +#define LL_USART_BITORDER_LSBFIRST 0x00000000U /*!< data is transmitted/received with data bit 0 first, following the start bit */ +#define LL_USART_BITORDER_MSBFIRST USART_CR2_MSBFIRST /*!< data is transmitted/received with the MSB first, following the start bit */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_AUTOBAUD_DETECT_ON Autobaud Detection + * @{ + */ +#define LL_USART_AUTOBAUD_DETECT_ON_STARTBIT 0x00000000U /*!< Measurement of the start bit is used to detect the baud rate */ +#define LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE USART_CR2_ABRMODE_0 /*!< Falling edge to falling edge measurement. Received frame must start with a single bit = 1 -> Frame = Start10xxxxxx */ +#define LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME USART_CR2_ABRMODE_1 /*!< 0x7F frame detection */ +#define LL_USART_AUTOBAUD_DETECT_ON_55_FRAME (USART_CR2_ABRMODE_1 | USART_CR2_ABRMODE_0) /*!< 0x55 frame detection */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_ADDRESS_DETECT Address Length Detection + * @{ + */ +#define LL_USART_ADDRESS_DETECT_4B 0x00000000U /*!< 4-bit address detection method selected */ +#define LL_USART_ADDRESS_DETECT_7B USART_CR2_ADDM7 /*!< 7-bit address detection (in 8-bit data mode) method selected */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_HWCONTROL Hardware Control + * @{ + */ +#define LL_USART_HWCONTROL_NONE 0x00000000U /*!< CTS and RTS hardware flow control disabled */ +#define LL_USART_HWCONTROL_RTS USART_CR3_RTSE /*!< RTS output enabled, data is only requested when there is space in the receive buffer */ +#define LL_USART_HWCONTROL_CTS USART_CR3_CTSE /*!< CTS mode enabled, data is only transmitted when the nCTS input is asserted (tied to 0) */ +#define LL_USART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /*!< CTS and RTS hardware flow control enabled */ +/** + * @} + */ + +#if defined(USART_CR1_UESM) +#if defined(USART_CR3_WUS) +/** @defgroup USART_LL_EC_WAKEUP_ON Wakeup Activation + * @{ + */ +#define LL_USART_WAKEUP_ON_ADDRESS 0x00000000U /*!< Wake up active on address match */ +#define LL_USART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1 /*!< Wake up active on Start bit detection */ +#define LL_USART_WAKEUP_ON_RXNE (USART_CR3_WUS_0 | USART_CR3_WUS_1) /*!< Wake up active on RXNE */ +/** + * @} + */ + +#endif /* USART_CR3_WUS */ +#endif /* USART_CR1_UESM */ +/** @defgroup USART_LL_EC_IRDA_POWER IrDA Power + * @{ + */ +#define LL_USART_IRDA_POWER_NORMAL 0x00000000U /*!< IrDA normal power mode */ +#define LL_USART_IRDA_POWER_LOW USART_CR3_IRLP /*!< IrDA low power mode */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_LINBREAK_DETECT LIN Break Detection Length + * @{ + */ +#define LL_USART_LINBREAK_DETECT_10B 0x00000000U /*!< 10-bit break detection method selected */ +#define LL_USART_LINBREAK_DETECT_11B USART_CR2_LBDL /*!< 11-bit break detection method selected */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_DE_POLARITY Driver Enable Polarity + * @{ + */ +#define LL_USART_DE_POLARITY_HIGH 0x00000000U /*!< DE signal is active high */ +#define LL_USART_DE_POLARITY_LOW USART_CR3_DEP /*!< DE signal is active low */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_DMA_REG_DATA DMA Register Data + * @{ + */ +#define LL_USART_DMA_REG_DATA_TRANSMIT 0x00000000U /*!< Get address of data register used for transmission */ +#define LL_USART_DMA_REG_DATA_RECEIVE 0x00000001U /*!< Get address of data register used for reception */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup USART_LL_Exported_Macros USART Exported Macros + * @{ + */ + +/** @defgroup USART_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in USART register + * @param __INSTANCE__ USART Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_USART_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in USART register + * @param __INSTANCE__ USART Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_USART_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup USART_LL_EM_Exported_Macros_Helper Exported_Macros_Helper + * @{ + */ + +/** + * @brief Compute USARTDIV value according to Peripheral Clock and + * expected Baud Rate in 8 bits sampling mode (32 bits value of USARTDIV is returned) + * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + * @param __BAUDRATE__ Baud rate value to achieve + * @retval USARTDIV value to be used for BRR register filling in OverSampling_8 case + */ +#define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) ((((__PERIPHCLK__)*2U)\ + + ((__BAUDRATE__)/2U))/(__BAUDRATE__)) + +/** + * @brief Compute USARTDIV value according to Peripheral Clock and + * expected Baud Rate in 16 bits sampling mode (32 bits value of USARTDIV is returned) + * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + * @param __BAUDRATE__ Baud rate value to achieve + * @retval USARTDIV value to be used for BRR register filling in OverSampling_16 case + */ +#define __LL_USART_DIV_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (((__PERIPHCLK__) + ((__BAUDRATE__)/2U))/(__BAUDRATE__)) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup USART_LL_Exported_Functions USART Exported Functions + * @{ + */ + +/** @defgroup USART_LL_EF_Configuration Configuration functions + * @{ + */ + +/** + * @brief USART Enable + * @rmtoll CR1 UE LL_USART_Enable + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_Enable(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_UE); +} + +/** + * @brief USART Disable (all USART prescalers and outputs are disabled) + * @note When USART is disabled, USART prescalers and outputs are stopped immediately, + * and current operations are discarded. The configuration of the USART is kept, but all the status + * flags, in the USARTx_ISR are set to their default values. + * @rmtoll CR1 UE LL_USART_Disable + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_Disable(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_UE); +} + +/** + * @brief Indicate if USART is enabled + * @rmtoll CR1 UE LL_USART_IsEnabled + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabled(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)) ? 1UL : 0UL); +} + +#if defined(USART_CR1_UESM) +/** + * @brief USART enabled in STOP Mode. + * @note When this function is enabled, USART is able to wake up the MCU from Stop mode, provided that + * USART clock selection is HSI or LSE in RCC. + * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + * Wake-up from Stop mode feature is supported by the USARTx instance. + * @rmtoll CR1 UESM LL_USART_EnableInStopMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableInStopMode(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_UESM); +} + +/** + * @brief USART disabled in STOP Mode. + * @note When this function is disabled, USART is not able to wake up the MCU from Stop mode + * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + * Wake-up from Stop mode feature is supported by the USARTx instance. + * @rmtoll CR1 UESM LL_USART_DisableInStopMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableInStopMode(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_UESM); +} + +/** + * @brief Indicate if USART is enabled in STOP Mode (able to wake up MCU from Stop mode or not) + * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + * Wake-up from Stop mode feature is supported by the USARTx instance. + * @rmtoll CR1 UESM LL_USART_IsEnabledInStopMode + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledInStopMode(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_UESM) == (USART_CR1_UESM)) ? 1UL : 0UL); +} + +#if defined(USART_CR3_UCESM) +/** + * @brief USART Clock enabled in STOP Mode + * @note When this function is called, USART Clock is enabled while in STOP mode + * @rmtoll CR3 UCESM LL_USART_EnableClockInStopMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableClockInStopMode(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_UCESM); +} + +/** + * @brief USART clock disabled in STOP Mode + * @note When this function is called, USART Clock is disabled while in STOP mode + * @rmtoll CR3 UCESM LL_USART_DisableClockInStopMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableClockInStopMode(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_UCESM); +} + +/** + * @brief Indicate if USART clock is enabled in STOP Mode + * @rmtoll CR3 UCESM LL_USART_IsClockEnabledInStopMode + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsClockEnabledInStopMode(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_UCESM) == (USART_CR3_UCESM)); +} + +#endif /* USART_CR3_UCESM */ +#endif /* USART_CR1_UESM*/ +/** + * @brief Receiver Enable (Receiver is enabled and begins searching for a start bit) + * @rmtoll CR1 RE LL_USART_EnableDirectionRx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDirectionRx(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RE); +} + +/** + * @brief Receiver Disable + * @rmtoll CR1 RE LL_USART_DisableDirectionRx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDirectionRx(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RE); +} + +/** + * @brief Transmitter Enable + * @rmtoll CR1 TE LL_USART_EnableDirectionTx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDirectionTx(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TE); +} + +/** + * @brief Transmitter Disable + * @rmtoll CR1 TE LL_USART_DisableDirectionTx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDirectionTx(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TE); +} + +/** + * @brief Configure simultaneously enabled/disabled states + * of Transmitter and Receiver + * @rmtoll CR1 RE LL_USART_SetTransferDirection\n + * CR1 TE LL_USART_SetTransferDirection + * @param USARTx USART Instance + * @param TransferDirection This parameter can be one of the following values: + * @arg @ref LL_USART_DIRECTION_NONE + * @arg @ref LL_USART_DIRECTION_RX + * @arg @ref LL_USART_DIRECTION_TX + * @arg @ref LL_USART_DIRECTION_TX_RX + * @retval None + */ +__STATIC_INLINE void LL_USART_SetTransferDirection(USART_TypeDef *USARTx, uint32_t TransferDirection) +{ + ATOMIC_MODIFY_REG(USARTx->CR1, USART_CR1_RE | USART_CR1_TE, TransferDirection); +} + +/** + * @brief Return enabled/disabled states of Transmitter and Receiver + * @rmtoll CR1 RE LL_USART_GetTransferDirection\n + * CR1 TE LL_USART_GetTransferDirection + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_DIRECTION_NONE + * @arg @ref LL_USART_DIRECTION_RX + * @arg @ref LL_USART_DIRECTION_TX + * @arg @ref LL_USART_DIRECTION_TX_RX + */ +__STATIC_INLINE uint32_t LL_USART_GetTransferDirection(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_RE | USART_CR1_TE)); +} + +/** + * @brief Configure Parity (enabled/disabled and parity mode if enabled). + * @note This function selects if hardware parity control (generation and detection) is enabled or disabled. + * When the parity control is enabled (Odd or Even), computed parity bit is inserted at the MSB position + * (9th or 8th bit depending on data width) and parity is checked on the received data. + * @rmtoll CR1 PS LL_USART_SetParity\n + * CR1 PCE LL_USART_SetParity + * @param USARTx USART Instance + * @param Parity This parameter can be one of the following values: + * @arg @ref LL_USART_PARITY_NONE + * @arg @ref LL_USART_PARITY_EVEN + * @arg @ref LL_USART_PARITY_ODD + * @retval None + */ +__STATIC_INLINE void LL_USART_SetParity(USART_TypeDef *USARTx, uint32_t Parity) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE, Parity); +} + +/** + * @brief Return Parity configuration (enabled/disabled and parity mode if enabled) + * @rmtoll CR1 PS LL_USART_GetParity\n + * CR1 PCE LL_USART_GetParity + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_PARITY_NONE + * @arg @ref LL_USART_PARITY_EVEN + * @arg @ref LL_USART_PARITY_ODD + */ +__STATIC_INLINE uint32_t LL_USART_GetParity(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE)); +} + +/** + * @brief Set Receiver Wake Up method from Mute mode. + * @rmtoll CR1 WAKE LL_USART_SetWakeUpMethod + * @param USARTx USART Instance + * @param Method This parameter can be one of the following values: + * @arg @ref LL_USART_WAKEUP_IDLELINE + * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + * @retval None + */ +__STATIC_INLINE void LL_USART_SetWakeUpMethod(USART_TypeDef *USARTx, uint32_t Method) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_WAKE, Method); +} + +/** + * @brief Return Receiver Wake Up method from Mute mode + * @rmtoll CR1 WAKE LL_USART_GetWakeUpMethod + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_WAKEUP_IDLELINE + * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + */ +__STATIC_INLINE uint32_t LL_USART_GetWakeUpMethod(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_WAKE)); +} + +/** + * @brief Set Word length (i.e. nb of data bits, excluding start and stop bits) + * @rmtoll CR1 M0 LL_USART_SetDataWidth\n + * CR1 M1 LL_USART_SetDataWidth + * @param USARTx USART Instance + * @param DataWidth This parameter can be one of the following values: + * @arg @ref LL_USART_DATAWIDTH_7B + * @arg @ref LL_USART_DATAWIDTH_8B + * @arg @ref LL_USART_DATAWIDTH_9B + * @retval None + */ +__STATIC_INLINE void LL_USART_SetDataWidth(USART_TypeDef *USARTx, uint32_t DataWidth) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_M, DataWidth); +} + +/** + * @brief Return Word length (i.e. nb of data bits, excluding start and stop bits) + * @rmtoll CR1 M0 LL_USART_GetDataWidth\n + * CR1 M1 LL_USART_GetDataWidth + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_DATAWIDTH_7B + * @arg @ref LL_USART_DATAWIDTH_8B + * @arg @ref LL_USART_DATAWIDTH_9B + */ +__STATIC_INLINE uint32_t LL_USART_GetDataWidth(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_M)); +} + +/** + * @brief Allow switch between Mute Mode and Active mode + * @rmtoll CR1 MME LL_USART_EnableMuteMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableMuteMode(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_MME); +} + +/** + * @brief Prevent Mute Mode use. Set Receiver in active mode permanently. + * @rmtoll CR1 MME LL_USART_DisableMuteMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableMuteMode(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_MME); +} + +/** + * @brief Indicate if switch between Mute Mode and Active mode is allowed + * @rmtoll CR1 MME LL_USART_IsEnabledMuteMode + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledMuteMode(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_MME) == (USART_CR1_MME)) ? 1UL : 0UL); +} + +/** + * @brief Set Oversampling to 8-bit or 16-bit mode + * @rmtoll CR1 OVER8 LL_USART_SetOverSampling + * @param USARTx USART Instance + * @param OverSampling This parameter can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetOverSampling(USART_TypeDef *USARTx, uint32_t OverSampling) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_OVER8, OverSampling); +} + +/** + * @brief Return Oversampling mode + * @rmtoll CR1 OVER8 LL_USART_GetOverSampling + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + */ +__STATIC_INLINE uint32_t LL_USART_GetOverSampling(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_OVER8)); +} + +/** + * @brief Configure if Clock pulse of the last data bit is output to the SCLK pin or not + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 LBCL LL_USART_SetLastClkPulseOutput + * @param USARTx USART Instance + * @param LastBitClockPulse This parameter can be one of the following values: + * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + * @retval None + */ +__STATIC_INLINE void LL_USART_SetLastClkPulseOutput(USART_TypeDef *USARTx, uint32_t LastBitClockPulse) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_LBCL, LastBitClockPulse); +} + +/** + * @brief Retrieve Clock pulse of the last data bit output configuration + * (Last bit Clock pulse output to the SCLK pin or not) + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 LBCL LL_USART_GetLastClkPulseOutput + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + */ +__STATIC_INLINE uint32_t LL_USART_GetLastClkPulseOutput(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBCL)); +} + +/** + * @brief Select the phase of the clock output on the SCLK pin in synchronous mode + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPHA LL_USART_SetClockPhase + * @param USARTx USART Instance + * @param ClockPhase This parameter can be one of the following values: + * @arg @ref LL_USART_PHASE_1EDGE + * @arg @ref LL_USART_PHASE_2EDGE + * @retval None + */ +__STATIC_INLINE void LL_USART_SetClockPhase(USART_TypeDef *USARTx, uint32_t ClockPhase) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_CPHA, ClockPhase); +} + +/** + * @brief Return phase of the clock output on the SCLK pin in synchronous mode + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPHA LL_USART_GetClockPhase + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_PHASE_1EDGE + * @arg @ref LL_USART_PHASE_2EDGE + */ +__STATIC_INLINE uint32_t LL_USART_GetClockPhase(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPHA)); +} + +/** + * @brief Select the polarity of the clock output on the SCLK pin in synchronous mode + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPOL LL_USART_SetClockPolarity + * @param USARTx USART Instance + * @param ClockPolarity This parameter can be one of the following values: + * @arg @ref LL_USART_POLARITY_LOW + * @arg @ref LL_USART_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_USART_SetClockPolarity(USART_TypeDef *USARTx, uint32_t ClockPolarity) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_CPOL, ClockPolarity); +} + +/** + * @brief Return polarity of the clock output on the SCLK pin in synchronous mode + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPOL LL_USART_GetClockPolarity + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_POLARITY_LOW + * @arg @ref LL_USART_POLARITY_HIGH + */ +__STATIC_INLINE uint32_t LL_USART_GetClockPolarity(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPOL)); +} + +/** + * @brief Configure Clock signal format (Phase Polarity and choice about output of last bit clock pulse) + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clock Phase configuration using @ref LL_USART_SetClockPhase() function + * - Clock Polarity configuration using @ref LL_USART_SetClockPolarity() function + * - Output of Last bit Clock pulse configuration using @ref LL_USART_SetLastClkPulseOutput() function + * @rmtoll CR2 CPHA LL_USART_ConfigClock\n + * CR2 CPOL LL_USART_ConfigClock\n + * CR2 LBCL LL_USART_ConfigClock + * @param USARTx USART Instance + * @param Phase This parameter can be one of the following values: + * @arg @ref LL_USART_PHASE_1EDGE + * @arg @ref LL_USART_PHASE_2EDGE + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_USART_POLARITY_LOW + * @arg @ref LL_USART_POLARITY_HIGH + * @param LBCPOutput This parameter can be one of the following values: + * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigClock(USART_TypeDef *USARTx, uint32_t Phase, uint32_t Polarity, uint32_t LBCPOutput) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, Phase | Polarity | LBCPOutput); +} + +/** + * @brief Enable Clock output on SCLK pin + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CLKEN LL_USART_EnableSCLKOutput + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableSCLKOutput(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_CLKEN); +} + +/** + * @brief Disable Clock output on SCLK pin + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CLKEN LL_USART_DisableSCLKOutput + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableSCLKOutput(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_CLKEN); +} + +/** + * @brief Indicate if Clock output on SCLK pin is enabled + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CLKEN LL_USART_IsEnabledSCLKOutput + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledSCLKOutput(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR2, USART_CR2_CLKEN) == (USART_CR2_CLKEN)) ? 1UL : 0UL); +} + +/** + * @brief Set the length of the stop bits + * @rmtoll CR2 STOP LL_USART_SetStopBitsLength + * @param USARTx USART Instance + * @param StopBits This parameter can be one of the following values: + * @arg @ref LL_USART_STOPBITS_0_5 + * @arg @ref LL_USART_STOPBITS_1 + * @arg @ref LL_USART_STOPBITS_1_5 + * @arg @ref LL_USART_STOPBITS_2 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetStopBitsLength(USART_TypeDef *USARTx, uint32_t StopBits) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +} + +/** + * @brief Retrieve the length of the stop bits + * @rmtoll CR2 STOP LL_USART_GetStopBitsLength + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_STOPBITS_0_5 + * @arg @ref LL_USART_STOPBITS_1 + * @arg @ref LL_USART_STOPBITS_1_5 + * @arg @ref LL_USART_STOPBITS_2 + */ +__STATIC_INLINE uint32_t LL_USART_GetStopBitsLength(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_STOP)); +} + +/** + * @brief Configure Character frame format (Datawidth, Parity control, Stop Bits) + * @note Call of this function is equivalent to following function call sequence : + * - Data Width configuration using @ref LL_USART_SetDataWidth() function + * - Parity Control and mode configuration using @ref LL_USART_SetParity() function + * - Stop bits configuration using @ref LL_USART_SetStopBitsLength() function + * @rmtoll CR1 PS LL_USART_ConfigCharacter\n + * CR1 PCE LL_USART_ConfigCharacter\n + * CR1 M0 LL_USART_ConfigCharacter\n + * CR1 M1 LL_USART_ConfigCharacter\n + * CR2 STOP LL_USART_ConfigCharacter + * @param USARTx USART Instance + * @param DataWidth This parameter can be one of the following values: + * @arg @ref LL_USART_DATAWIDTH_7B + * @arg @ref LL_USART_DATAWIDTH_8B + * @arg @ref LL_USART_DATAWIDTH_9B + * @param Parity This parameter can be one of the following values: + * @arg @ref LL_USART_PARITY_NONE + * @arg @ref LL_USART_PARITY_EVEN + * @arg @ref LL_USART_PARITY_ODD + * @param StopBits This parameter can be one of the following values: + * @arg @ref LL_USART_STOPBITS_0_5 + * @arg @ref LL_USART_STOPBITS_1 + * @arg @ref LL_USART_STOPBITS_1_5 + * @arg @ref LL_USART_STOPBITS_2 + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigCharacter(USART_TypeDef *USARTx, uint32_t DataWidth, uint32_t Parity, + uint32_t StopBits) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE | USART_CR1_M, Parity | DataWidth); + MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +} + +/** + * @brief Configure TX/RX pins swapping setting. + * @rmtoll CR2 SWAP LL_USART_SetTXRXSwap + * @param USARTx USART Instance + * @param SwapConfig This parameter can be one of the following values: + * @arg @ref LL_USART_TXRX_STANDARD + * @arg @ref LL_USART_TXRX_SWAPPED + * @retval None + */ +__STATIC_INLINE void LL_USART_SetTXRXSwap(USART_TypeDef *USARTx, uint32_t SwapConfig) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_SWAP, SwapConfig); +} + +/** + * @brief Retrieve TX/RX pins swapping configuration. + * @rmtoll CR2 SWAP LL_USART_GetTXRXSwap + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_TXRX_STANDARD + * @arg @ref LL_USART_TXRX_SWAPPED + */ +__STATIC_INLINE uint32_t LL_USART_GetTXRXSwap(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_SWAP)); +} + +/** + * @brief Configure RX pin active level logic + * @rmtoll CR2 RXINV LL_USART_SetRXPinLevel + * @param USARTx USART Instance + * @param PinInvMethod This parameter can be one of the following values: + * @arg @ref LL_USART_RXPIN_LEVEL_STANDARD + * @arg @ref LL_USART_RXPIN_LEVEL_INVERTED + * @retval None + */ +__STATIC_INLINE void LL_USART_SetRXPinLevel(USART_TypeDef *USARTx, uint32_t PinInvMethod) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_RXINV, PinInvMethod); +} + +/** + * @brief Retrieve RX pin active level logic configuration + * @rmtoll CR2 RXINV LL_USART_GetRXPinLevel + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_RXPIN_LEVEL_STANDARD + * @arg @ref LL_USART_RXPIN_LEVEL_INVERTED + */ +__STATIC_INLINE uint32_t LL_USART_GetRXPinLevel(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_RXINV)); +} + +/** + * @brief Configure TX pin active level logic + * @rmtoll CR2 TXINV LL_USART_SetTXPinLevel + * @param USARTx USART Instance + * @param PinInvMethod This parameter can be one of the following values: + * @arg @ref LL_USART_TXPIN_LEVEL_STANDARD + * @arg @ref LL_USART_TXPIN_LEVEL_INVERTED + * @retval None + */ +__STATIC_INLINE void LL_USART_SetTXPinLevel(USART_TypeDef *USARTx, uint32_t PinInvMethod) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_TXINV, PinInvMethod); +} + +/** + * @brief Retrieve TX pin active level logic configuration + * @rmtoll CR2 TXINV LL_USART_GetTXPinLevel + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_TXPIN_LEVEL_STANDARD + * @arg @ref LL_USART_TXPIN_LEVEL_INVERTED + */ +__STATIC_INLINE uint32_t LL_USART_GetTXPinLevel(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_TXINV)); +} + +/** + * @brief Configure Binary data logic. + * @note Allow to define how Logical data from the data register are send/received : + * either in positive/direct logic (1=H, 0=L) or in negative/inverse logic (1=L, 0=H) + * @rmtoll CR2 DATAINV LL_USART_SetBinaryDataLogic + * @param USARTx USART Instance + * @param DataLogic This parameter can be one of the following values: + * @arg @ref LL_USART_BINARY_LOGIC_POSITIVE + * @arg @ref LL_USART_BINARY_LOGIC_NEGATIVE + * @retval None + */ +__STATIC_INLINE void LL_USART_SetBinaryDataLogic(USART_TypeDef *USARTx, uint32_t DataLogic) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_DATAINV, DataLogic); +} + +/** + * @brief Retrieve Binary data configuration + * @rmtoll CR2 DATAINV LL_USART_GetBinaryDataLogic + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_BINARY_LOGIC_POSITIVE + * @arg @ref LL_USART_BINARY_LOGIC_NEGATIVE + */ +__STATIC_INLINE uint32_t LL_USART_GetBinaryDataLogic(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_DATAINV)); +} + +/** + * @brief Configure transfer bit order (either Less or Most Significant Bit First) + * @note MSB First means data is transmitted/received with the MSB first, following the start bit. + * LSB First means data is transmitted/received with data bit 0 first, following the start bit. + * @rmtoll CR2 MSBFIRST LL_USART_SetTransferBitOrder + * @param USARTx USART Instance + * @param BitOrder This parameter can be one of the following values: + * @arg @ref LL_USART_BITORDER_LSBFIRST + * @arg @ref LL_USART_BITORDER_MSBFIRST + * @retval None + */ +__STATIC_INLINE void LL_USART_SetTransferBitOrder(USART_TypeDef *USARTx, uint32_t BitOrder) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_MSBFIRST, BitOrder); +} + +/** + * @brief Return transfer bit order (either Less or Most Significant Bit First) + * @note MSB First means data is transmitted/received with the MSB first, following the start bit. + * LSB First means data is transmitted/received with data bit 0 first, following the start bit. + * @rmtoll CR2 MSBFIRST LL_USART_GetTransferBitOrder + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_BITORDER_LSBFIRST + * @arg @ref LL_USART_BITORDER_MSBFIRST + */ +__STATIC_INLINE uint32_t LL_USART_GetTransferBitOrder(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_MSBFIRST)); +} + +/** + * @brief Enable Auto Baud-Rate Detection + * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or not + * Auto Baud Rate detection feature is supported by the USARTx instance. + * @rmtoll CR2 ABREN LL_USART_EnableAutoBaudRate + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableAutoBaudRate(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_ABREN); +} + +/** + * @brief Disable Auto Baud-Rate Detection + * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or not + * Auto Baud Rate detection feature is supported by the USARTx instance. + * @rmtoll CR2 ABREN LL_USART_DisableAutoBaudRate + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableAutoBaudRate(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_ABREN); +} + +/** + * @brief Indicate if Auto Baud-Rate Detection mechanism is enabled + * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or not + * Auto Baud Rate detection feature is supported by the USARTx instance. + * @rmtoll CR2 ABREN LL_USART_IsEnabledAutoBaud + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledAutoBaud(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR2, USART_CR2_ABREN) == (USART_CR2_ABREN)) ? 1UL : 0UL); +} + +/** + * @brief Set Auto Baud-Rate mode bits + * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or not + * Auto Baud Rate detection feature is supported by the USARTx instance. + * @rmtoll CR2 ABRMODE LL_USART_SetAutoBaudRateMode + * @param USARTx USART Instance + * @param AutoBaudRateMode This parameter can be one of the following values: + * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_STARTBIT + * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE + * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME + * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_55_FRAME + * @retval None + */ +__STATIC_INLINE void LL_USART_SetAutoBaudRateMode(USART_TypeDef *USARTx, uint32_t AutoBaudRateMode) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_ABRMODE, AutoBaudRateMode); +} + +/** + * @brief Return Auto Baud-Rate mode + * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or not + * Auto Baud Rate detection feature is supported by the USARTx instance. + * @rmtoll CR2 ABRMODE LL_USART_GetAutoBaudRateMode + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_STARTBIT + * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE + * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME + * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_55_FRAME + */ +__STATIC_INLINE uint32_t LL_USART_GetAutoBaudRateMode(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ABRMODE)); +} + +/** + * @brief Enable Receiver Timeout + * @rmtoll CR2 RTOEN LL_USART_EnableRxTimeout + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableRxTimeout(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_RTOEN); +} + +/** + * @brief Disable Receiver Timeout + * @rmtoll CR2 RTOEN LL_USART_DisableRxTimeout + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableRxTimeout(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_RTOEN); +} + +/** + * @brief Indicate if Receiver Timeout feature is enabled + * @rmtoll CR2 RTOEN LL_USART_IsEnabledRxTimeout + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledRxTimeout(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR2, USART_CR2_RTOEN) == (USART_CR2_RTOEN)) ? 1UL : 0UL); +} + +/** + * @brief Set Address of the USART node. + * @note This is used in multiprocessor communication during Mute mode or Stop mode, + * for wake up with address mark detection. + * @note 4bits address node is used when 4-bit Address Detection is selected in ADDM7. + * (b7-b4 should be set to 0) + * 8bits address node is used when 7-bit Address Detection is selected in ADDM7. + * (This is used in multiprocessor communication during Mute mode or Stop mode, + * for wake up with 7-bit address mark detection. + * The MSB of the character sent by the transmitter should be equal to 1. + * It may also be used for character detection during normal reception, + * Mute mode inactive (for example, end of block detection in ModBus protocol). + * In this case, the whole received character (8-bit) is compared to the ADD[7:0] + * value and CMF flag is set on match) + * @rmtoll CR2 ADD LL_USART_ConfigNodeAddress\n + * CR2 ADDM7 LL_USART_ConfigNodeAddress + * @param USARTx USART Instance + * @param AddressLen This parameter can be one of the following values: + * @arg @ref LL_USART_ADDRESS_DETECT_4B + * @arg @ref LL_USART_ADDRESS_DETECT_7B + * @param NodeAddress 4 or 7 bit Address of the USART node. + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigNodeAddress(USART_TypeDef *USARTx, uint32_t AddressLen, uint32_t NodeAddress) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_ADD | USART_CR2_ADDM7, + (uint32_t)(AddressLen | (NodeAddress << USART_CR2_ADD_Pos))); +} + +/** + * @brief Return 8 bit Address of the USART node as set in ADD field of CR2. + * @note If 4-bit Address Detection is selected in ADDM7, + * only 4bits (b3-b0) of returned value are relevant (b31-b4 are not relevant) + * If 7-bit Address Detection is selected in ADDM7, + * only 8bits (b7-b0) of returned value are relevant (b31-b8 are not relevant) + * @rmtoll CR2 ADD LL_USART_GetNodeAddress + * @param USARTx USART Instance + * @retval Address of the USART node (Value between Min_Data=0 and Max_Data=255) + */ +__STATIC_INLINE uint32_t LL_USART_GetNodeAddress(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADD) >> USART_CR2_ADD_Pos); +} + +/** + * @brief Return Length of Node Address used in Address Detection mode (7-bit or 4-bit) + * @rmtoll CR2 ADDM7 LL_USART_GetNodeAddressLen + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_ADDRESS_DETECT_4B + * @arg @ref LL_USART_ADDRESS_DETECT_7B + */ +__STATIC_INLINE uint32_t LL_USART_GetNodeAddressLen(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADDM7)); +} + +/** + * @brief Enable RTS HW Flow Control + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_EnableRTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableRTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_RTSE); +} + +/** + * @brief Disable RTS HW Flow Control + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_DisableRTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableRTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_RTSE); +} + +/** + * @brief Enable CTS HW Flow Control + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSE LL_USART_EnableCTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableCTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_CTSE); +} + +/** + * @brief Disable CTS HW Flow Control + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSE LL_USART_DisableCTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableCTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_CTSE); +} + +/** + * @brief Configure HW Flow Control mode (both CTS and RTS) + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_SetHWFlowCtrl\n + * CR3 CTSE LL_USART_SetHWFlowCtrl + * @param USARTx USART Instance + * @param HardwareFlowControl This parameter can be one of the following values: + * @arg @ref LL_USART_HWCONTROL_NONE + * @arg @ref LL_USART_HWCONTROL_RTS + * @arg @ref LL_USART_HWCONTROL_CTS + * @arg @ref LL_USART_HWCONTROL_RTS_CTS + * @retval None + */ +__STATIC_INLINE void LL_USART_SetHWFlowCtrl(USART_TypeDef *USARTx, uint32_t HardwareFlowControl) +{ + MODIFY_REG(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE, HardwareFlowControl); +} + +/** + * @brief Return HW Flow Control configuration (both CTS and RTS) + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_GetHWFlowCtrl\n + * CR3 CTSE LL_USART_GetHWFlowCtrl + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_HWCONTROL_NONE + * @arg @ref LL_USART_HWCONTROL_RTS + * @arg @ref LL_USART_HWCONTROL_CTS + * @arg @ref LL_USART_HWCONTROL_RTS_CTS + */ +__STATIC_INLINE uint32_t LL_USART_GetHWFlowCtrl(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE)); +} + +/** + * @brief Enable One bit sampling method + * @rmtoll CR3 ONEBIT LL_USART_EnableOneBitSamp + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableOneBitSamp(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_ONEBIT); +} + +/** + * @brief Disable One bit sampling method + * @rmtoll CR3 ONEBIT LL_USART_DisableOneBitSamp + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableOneBitSamp(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_ONEBIT); +} + +/** + * @brief Indicate if One bit sampling method is enabled + * @rmtoll CR3 ONEBIT LL_USART_IsEnabledOneBitSamp + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledOneBitSamp(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_ONEBIT) == (USART_CR3_ONEBIT)) ? 1UL : 0UL); +} + +/** + * @brief Enable Overrun detection + * @rmtoll CR3 OVRDIS LL_USART_EnableOverrunDetect + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableOverrunDetect(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_OVRDIS); +} + +/** + * @brief Disable Overrun detection + * @rmtoll CR3 OVRDIS LL_USART_DisableOverrunDetect + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableOverrunDetect(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_OVRDIS); +} + +/** + * @brief Indicate if Overrun detection is enabled + * @rmtoll CR3 OVRDIS LL_USART_IsEnabledOverrunDetect + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledOverrunDetect(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_OVRDIS) != USART_CR3_OVRDIS) ? 1UL : 0UL); +} + +#if defined(USART_CR1_UESM) +#if defined(USART_CR3_WUS) +/** + * @brief Select event type for Wake UP Interrupt Flag (WUS[1:0] bits) + * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + * Wake-up from Stop mode feature is supported by the USARTx instance. + * @rmtoll CR3 WUS LL_USART_SetWKUPType + * @param USARTx USART Instance + * @param Type This parameter can be one of the following values: + * @arg @ref LL_USART_WAKEUP_ON_ADDRESS + * @arg @ref LL_USART_WAKEUP_ON_STARTBIT + * @arg @ref LL_USART_WAKEUP_ON_RXNE + * @retval None + */ +__STATIC_INLINE void LL_USART_SetWKUPType(USART_TypeDef *USARTx, uint32_t Type) +{ + MODIFY_REG(USARTx->CR3, USART_CR3_WUS, Type); +} + +/** + * @brief Return event type for Wake UP Interrupt Flag (WUS[1:0] bits) + * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + * Wake-up from Stop mode feature is supported by the USARTx instance. + * @rmtoll CR3 WUS LL_USART_GetWKUPType + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_WAKEUP_ON_ADDRESS + * @arg @ref LL_USART_WAKEUP_ON_STARTBIT + * @arg @ref LL_USART_WAKEUP_ON_RXNE + */ +__STATIC_INLINE uint32_t LL_USART_GetWKUPType(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_WUS)); +} + +#endif /* USART_CR3_WUS */ +#endif /* USART_CR1_UESM */ +/** + * @brief Configure USART BRR register for achieving expected Baud Rate value. + * @note Compute and set USARTDIV value in BRR Register (full BRR content) + * according to used Peripheral Clock, Oversampling mode, and expected Baud Rate values + * @note Peripheral clock and Baud rate values provided as function parameters should be valid + * (Baud rate value != 0) + * @note In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. + * @rmtoll BRR BRR LL_USART_SetBaudRate + * @param USARTx USART Instance + * @param PeriphClk Peripheral Clock + * @param OverSampling This parameter can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + * @param BaudRate Baud Rate + * @retval None + */ +__STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling, + uint32_t BaudRate) +{ + uint32_t usartdiv; + uint32_t brrtemp; + + if (OverSampling == LL_USART_OVERSAMPLING_8) + { + usartdiv = (uint16_t)(__LL_USART_DIV_SAMPLING8(PeriphClk, BaudRate)); + brrtemp = usartdiv & 0xFFF0U; + brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); + USARTx->BRR = brrtemp; + } + else + { + USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING16(PeriphClk, BaudRate)); + } +} + +/** + * @brief Return current Baud Rate value, according to USARTDIV present in BRR register + * (full BRR content), and to used Peripheral Clock and Oversampling mode values + * @note In case of non-initialized or invalid value stored in BRR register, value 0 will be returned. + * @note In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. + * @rmtoll BRR BRR LL_USART_GetBaudRate + * @param USARTx USART Instance + * @param PeriphClk Peripheral Clock + * @param OverSampling This parameter can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + * @retval Baud Rate + */ +__STATIC_INLINE uint32_t LL_USART_GetBaudRate(const USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling) +{ + uint32_t usartdiv; + uint32_t brrresult = 0x0U; + + usartdiv = USARTx->BRR; + + if (usartdiv == 0U) + { + /* Do not perform a division by 0 */ + } + else if (OverSampling == LL_USART_OVERSAMPLING_8) + { + usartdiv = (uint16_t)((usartdiv & 0xFFF0U) | ((usartdiv & 0x0007U) << 1U)) ; + if (usartdiv != 0U) + { + brrresult = (PeriphClk * 2U) / usartdiv; + } + } + else + { + if ((usartdiv & 0xFFFFU) != 0U) + { + brrresult = PeriphClk / usartdiv; + } + } + return (brrresult); +} + +/** + * @brief Set Receiver Time Out Value (expressed in nb of bits duration) + * @rmtoll RTOR RTO LL_USART_SetRxTimeout + * @param USARTx USART Instance + * @param Timeout Value between Min_Data=0x00 and Max_Data=0x00FFFFFF + * @retval None + */ +__STATIC_INLINE void LL_USART_SetRxTimeout(USART_TypeDef *USARTx, uint32_t Timeout) +{ + MODIFY_REG(USARTx->RTOR, USART_RTOR_RTO, Timeout); +} + +/** + * @brief Get Receiver Time Out Value (expressed in nb of bits duration) + * @rmtoll RTOR RTO LL_USART_GetRxTimeout + * @param USARTx USART Instance + * @retval Value between Min_Data=0x00 and Max_Data=0x00FFFFFF + */ +__STATIC_INLINE uint32_t LL_USART_GetRxTimeout(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->RTOR, USART_RTOR_RTO)); +} + +/** + * @brief Set Block Length value in reception + * @rmtoll RTOR BLEN LL_USART_SetBlockLength + * @param USARTx USART Instance + * @param BlockLength Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_USART_SetBlockLength(USART_TypeDef *USARTx, uint32_t BlockLength) +{ + MODIFY_REG(USARTx->RTOR, USART_RTOR_BLEN, BlockLength << USART_RTOR_BLEN_Pos); +} + +/** + * @brief Get Block Length value in reception + * @rmtoll RTOR BLEN LL_USART_GetBlockLength + * @param USARTx USART Instance + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint32_t LL_USART_GetBlockLength(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->RTOR, USART_RTOR_BLEN) >> USART_RTOR_BLEN_Pos); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_IRDA Configuration functions related to Irda feature + * @{ + */ + +/** + * @brief Enable IrDA mode + * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IREN LL_USART_EnableIrda + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIrda(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_IREN); +} + +/** + * @brief Disable IrDA mode + * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IREN LL_USART_DisableIrda + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIrda(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_IREN); +} + +/** + * @brief Indicate if IrDA mode is enabled + * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IREN LL_USART_IsEnabledIrda + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIrda(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_IREN) == (USART_CR3_IREN)) ? 1UL : 0UL); +} + +/** + * @brief Configure IrDA Power Mode (Normal or Low Power) + * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IRLP LL_USART_SetIrdaPowerMode + * @param USARTx USART Instance + * @param PowerMode This parameter can be one of the following values: + * @arg @ref LL_USART_IRDA_POWER_NORMAL + * @arg @ref LL_USART_IRDA_POWER_LOW + * @retval None + */ +__STATIC_INLINE void LL_USART_SetIrdaPowerMode(USART_TypeDef *USARTx, uint32_t PowerMode) +{ + MODIFY_REG(USARTx->CR3, USART_CR3_IRLP, PowerMode); +} + +/** + * @brief Retrieve IrDA Power Mode configuration (Normal or Low Power) + * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IRLP LL_USART_GetIrdaPowerMode + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_IRDA_POWER_NORMAL + * @arg @ref LL_USART_PHASE_2EDGE + */ +__STATIC_INLINE uint32_t LL_USART_GetIrdaPowerMode(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_IRLP)); +} + +/** + * @brief Set Irda prescaler value, used for dividing the USART clock source + * to achieve the Irda Low Power frequency (8 bits value) + * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_SetIrdaPrescaler + * @param USARTx USART Instance + * @param PrescalerValue Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_USART_SetIrdaPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue) +{ + MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, (uint16_t)PrescalerValue); +} + +/** + * @brief Return Irda prescaler value, used for dividing the USART clock source + * to achieve the Irda Low Power frequency (8 bits value) + * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_GetIrdaPrescaler + * @param USARTx USART Instance + * @retval Irda prescaler value (Value between Min_Data=0x00 and Max_Data=0xFF) + */ +__STATIC_INLINE uint32_t LL_USART_GetIrdaPrescaler(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_Smartcard Configuration functions related to Smartcard feature + * @{ + */ + +/** + * @brief Enable Smartcard NACK transmission + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 NACK LL_USART_EnableSmartcardNACK + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableSmartcardNACK(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_NACK); +} + +/** + * @brief Disable Smartcard NACK transmission + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 NACK LL_USART_DisableSmartcardNACK + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableSmartcardNACK(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_NACK); +} + +/** + * @brief Indicate if Smartcard NACK transmission is enabled + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 NACK LL_USART_IsEnabledSmartcardNACK + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcardNACK(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_NACK) == (USART_CR3_NACK)) ? 1UL : 0UL); +} + +/** + * @brief Enable Smartcard mode + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 SCEN LL_USART_EnableSmartcard + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableSmartcard(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_SCEN); +} + +/** + * @brief Disable Smartcard mode + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 SCEN LL_USART_DisableSmartcard + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableSmartcard(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_SCEN); +} + +/** + * @brief Indicate if Smartcard mode is enabled + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 SCEN LL_USART_IsEnabledSmartcard + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcard(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_SCEN) == (USART_CR3_SCEN)) ? 1UL : 0UL); +} + +/** + * @brief Set Smartcard Auto-Retry Count value (SCARCNT[2:0] bits) + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @note This bit-field specifies the number of retries in transmit and receive, in Smartcard mode. + * In transmission mode, it specifies the number of automatic retransmission retries, before + * generating a transmission error (FE bit set). + * In reception mode, it specifies the number or erroneous reception trials, before generating a + * reception error (RXNE and PE bits set) + * @rmtoll CR3 SCARCNT LL_USART_SetSmartcardAutoRetryCount + * @param USARTx USART Instance + * @param AutoRetryCount Value between Min_Data=0 and Max_Data=7 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetSmartcardAutoRetryCount(USART_TypeDef *USARTx, uint32_t AutoRetryCount) +{ + MODIFY_REG(USARTx->CR3, USART_CR3_SCARCNT, AutoRetryCount << USART_CR3_SCARCNT_Pos); +} + +/** + * @brief Return Smartcard Auto-Retry Count value (SCARCNT[2:0] bits) + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 SCARCNT LL_USART_GetSmartcardAutoRetryCount + * @param USARTx USART Instance + * @retval Smartcard Auto-Retry Count value (Value between Min_Data=0 and Max_Data=7) + */ +__STATIC_INLINE uint32_t LL_USART_GetSmartcardAutoRetryCount(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_SCARCNT) >> USART_CR3_SCARCNT_Pos); +} + +/** + * @brief Set Smartcard prescaler value, used for dividing the USART clock + * source to provide the SMARTCARD Clock (5 bits value) + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_SetSmartcardPrescaler + * @param USARTx USART Instance + * @param PrescalerValue Value between Min_Data=0 and Max_Data=31 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetSmartcardPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue) +{ + MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, (uint16_t)PrescalerValue); +} + +/** + * @brief Return Smartcard prescaler value, used for dividing the USART clock + * source to provide the SMARTCARD Clock (5 bits value) + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_GetSmartcardPrescaler + * @param USARTx USART Instance + * @retval Smartcard prescaler value (Value between Min_Data=0 and Max_Data=31) + */ +__STATIC_INLINE uint32_t LL_USART_GetSmartcardPrescaler(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC)); +} + +/** + * @brief Set Smartcard Guard time value, expressed in nb of baud clocks periods + * (GT[7:0] bits : Guard time value) + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR GT LL_USART_SetSmartcardGuardTime + * @param USARTx USART Instance + * @param GuardTime Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_USART_SetSmartcardGuardTime(USART_TypeDef *USARTx, uint32_t GuardTime) +{ + MODIFY_REG(USARTx->GTPR, USART_GTPR_GT, (uint16_t)(GuardTime << USART_GTPR_GT_Pos)); +} + +/** + * @brief Return Smartcard Guard time value, expressed in nb of baud clocks periods + * (GT[7:0] bits : Guard time value) + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR GT LL_USART_GetSmartcardGuardTime + * @param USARTx USART Instance + * @retval Smartcard Guard time value (Value between Min_Data=0x00 and Max_Data=0xFF) + */ +__STATIC_INLINE uint32_t LL_USART_GetSmartcardGuardTime(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_GT) >> USART_GTPR_GT_Pos); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_HalfDuplex Configuration functions related to Half Duplex feature + * @{ + */ + +/** + * @brief Enable Single Wire Half-Duplex mode + * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @rmtoll CR3 HDSEL LL_USART_EnableHalfDuplex + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableHalfDuplex(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_HDSEL); +} + +/** + * @brief Disable Single Wire Half-Duplex mode + * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @rmtoll CR3 HDSEL LL_USART_DisableHalfDuplex + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableHalfDuplex(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_HDSEL); +} + +/** + * @brief Indicate if Single Wire Half-Duplex mode is enabled + * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @rmtoll CR3 HDSEL LL_USART_IsEnabledHalfDuplex + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledHalfDuplex(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_HDSEL) == (USART_CR3_HDSEL)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_LIN Configuration functions related to LIN feature + * @{ + */ + +/** + * @brief Set LIN Break Detection Length + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDL LL_USART_SetLINBrkDetectionLen + * @param USARTx USART Instance + * @param LINBDLength This parameter can be one of the following values: + * @arg @ref LL_USART_LINBREAK_DETECT_10B + * @arg @ref LL_USART_LINBREAK_DETECT_11B + * @retval None + */ +__STATIC_INLINE void LL_USART_SetLINBrkDetectionLen(USART_TypeDef *USARTx, uint32_t LINBDLength) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_LBDL, LINBDLength); +} + +/** + * @brief Return LIN Break Detection Length + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDL LL_USART_GetLINBrkDetectionLen + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_LINBREAK_DETECT_10B + * @arg @ref LL_USART_LINBREAK_DETECT_11B + */ +__STATIC_INLINE uint32_t LL_USART_GetLINBrkDetectionLen(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBDL)); +} + +/** + * @brief Enable LIN mode + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LINEN LL_USART_EnableLIN + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableLIN(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_LINEN); +} + +/** + * @brief Disable LIN mode + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LINEN LL_USART_DisableLIN + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableLIN(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_LINEN); +} + +/** + * @brief Indicate if LIN mode is enabled + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LINEN LL_USART_IsEnabledLIN + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledLIN(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR2, USART_CR2_LINEN) == (USART_CR2_LINEN)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_DE Configuration functions related to Driver Enable feature + * @{ + */ + +/** + * @brief Set DEDT (Driver Enable De-Assertion Time), Time value expressed on 5 bits ([4:0] bits). + * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not + * Driver Enable feature is supported by the USARTx instance. + * @rmtoll CR1 DEDT LL_USART_SetDEDeassertionTime + * @param USARTx USART Instance + * @param Time Value between Min_Data=0 and Max_Data=31 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetDEDeassertionTime(USART_TypeDef *USARTx, uint32_t Time) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_DEDT, Time << USART_CR1_DEDT_Pos); +} + +/** + * @brief Return DEDT (Driver Enable De-Assertion Time) + * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not + * Driver Enable feature is supported by the USARTx instance. + * @rmtoll CR1 DEDT LL_USART_GetDEDeassertionTime + * @param USARTx USART Instance + * @retval Time value expressed on 5 bits ([4:0] bits) : Value between Min_Data=0 and Max_Data=31 + */ +__STATIC_INLINE uint32_t LL_USART_GetDEDeassertionTime(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_DEDT) >> USART_CR1_DEDT_Pos); +} + +/** + * @brief Set DEAT (Driver Enable Assertion Time), Time value expressed on 5 bits ([4:0] bits). + * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not + * Driver Enable feature is supported by the USARTx instance. + * @rmtoll CR1 DEAT LL_USART_SetDEAssertionTime + * @param USARTx USART Instance + * @param Time Value between Min_Data=0 and Max_Data=31 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetDEAssertionTime(USART_TypeDef *USARTx, uint32_t Time) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_DEAT, Time << USART_CR1_DEAT_Pos); +} + +/** + * @brief Return DEAT (Driver Enable Assertion Time) + * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not + * Driver Enable feature is supported by the USARTx instance. + * @rmtoll CR1 DEAT LL_USART_GetDEAssertionTime + * @param USARTx USART Instance + * @retval Time value expressed on 5 bits ([4:0] bits) : Value between Min_Data=0 and Max_Data=31 + */ +__STATIC_INLINE uint32_t LL_USART_GetDEAssertionTime(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_DEAT) >> USART_CR1_DEAT_Pos); +} + +/** + * @brief Enable Driver Enable (DE) Mode + * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not + * Driver Enable feature is supported by the USARTx instance. + * @rmtoll CR3 DEM LL_USART_EnableDEMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDEMode(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_DEM); +} + +/** + * @brief Disable Driver Enable (DE) Mode + * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not + * Driver Enable feature is supported by the USARTx instance. + * @rmtoll CR3 DEM LL_USART_DisableDEMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDEMode(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_DEM); +} + +/** + * @brief Indicate if Driver Enable (DE) Mode is enabled + * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not + * Driver Enable feature is supported by the USARTx instance. + * @rmtoll CR3 DEM LL_USART_IsEnabledDEMode + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledDEMode(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_DEM) == (USART_CR3_DEM)) ? 1UL : 0UL); +} + +/** + * @brief Select Driver Enable Polarity + * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not + * Driver Enable feature is supported by the USARTx instance. + * @rmtoll CR3 DEP LL_USART_SetDESignalPolarity + * @param USARTx USART Instance + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_USART_DE_POLARITY_HIGH + * @arg @ref LL_USART_DE_POLARITY_LOW + * @retval None + */ +__STATIC_INLINE void LL_USART_SetDESignalPolarity(USART_TypeDef *USARTx, uint32_t Polarity) +{ + MODIFY_REG(USARTx->CR3, USART_CR3_DEP, Polarity); +} + +/** + * @brief Return Driver Enable Polarity + * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not + * Driver Enable feature is supported by the USARTx instance. + * @rmtoll CR3 DEP LL_USART_GetDESignalPolarity + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_DE_POLARITY_HIGH + * @arg @ref LL_USART_DE_POLARITY_LOW + */ +__STATIC_INLINE uint32_t LL_USART_GetDESignalPolarity(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_DEP)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_AdvancedConfiguration Advanced Configurations services + * @{ + */ + +/** + * @brief Perform basic configuration of USART for enabling use in Asynchronous Mode (UART) + * @note In UART mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - CLKEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * @note Other remaining configurations items related to Asynchronous Mode + * (as Baud Rate, Word length, Parity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigAsyncMode\n + * CR2 CLKEN LL_USART_ConfigAsyncMode\n + * CR3 SCEN LL_USART_ConfigAsyncMode\n + * CR3 IREN LL_USART_ConfigAsyncMode\n + * CR3 HDSEL LL_USART_ConfigAsyncMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigAsyncMode(USART_TypeDef *USARTx) +{ + /* In Asynchronous mode, the following bits must be kept cleared: + - LINEN, CLKEN bits in the USART_CR2 register, + - SCEN, IREN and HDSEL bits in the USART_CR3 register. + */ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Synchronous Mode + * @note In Synchronous mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also sets the USART in Synchronous mode. + * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Set CLKEN in CR2 using @ref LL_USART_EnableSCLKOutput() function + * @note Other remaining configurations items related to Synchronous Mode + * (as Baud Rate, Word length, Parity, Clock Polarity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigSyncMode\n + * CR2 CLKEN LL_USART_ConfigSyncMode\n + * CR3 SCEN LL_USART_ConfigSyncMode\n + * CR3 IREN LL_USART_ConfigSyncMode\n + * CR3 HDSEL LL_USART_ConfigSyncMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigSyncMode(USART_TypeDef *USARTx) +{ + /* In Synchronous mode, the following bits must be kept cleared: + - LINEN bit in the USART_CR2 register, + - SCEN, IREN and HDSEL bits in the USART_CR3 register. + */ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); + /* set the UART/USART in Synchronous mode */ + SET_BIT(USARTx->CR2, USART_CR2_CLKEN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in LIN Mode + * @note In LIN mode, the following bits must be kept cleared: + * - STOP and CLKEN bits in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also set the UART/USART in LIN mode. + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear STOP in CR2 using @ref LL_USART_SetStopBitsLength() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Set LINEN in CR2 using @ref LL_USART_EnableLIN() function + * @note Other remaining configurations items related to LIN Mode + * (as Baud Rate, Word length, LIN Break Detection Length, ...) should be set using + * dedicated functions + * @rmtoll CR2 CLKEN LL_USART_ConfigLINMode\n + * CR2 STOP LL_USART_ConfigLINMode\n + * CR2 LINEN LL_USART_ConfigLINMode\n + * CR3 IREN LL_USART_ConfigLINMode\n + * CR3 SCEN LL_USART_ConfigLINMode\n + * CR3 HDSEL LL_USART_ConfigLINMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigLINMode(USART_TypeDef *USARTx) +{ + /* In LIN mode, the following bits must be kept cleared: + - STOP and CLKEN bits in the USART_CR2 register, + - IREN, SCEN and HDSEL bits in the USART_CR3 register. + */ + CLEAR_BIT(USARTx->CR2, (USART_CR2_CLKEN | USART_CR2_STOP)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_SCEN | USART_CR3_HDSEL)); + /* Set the UART/USART in LIN mode */ + SET_BIT(USARTx->CR2, USART_CR2_LINEN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Half Duplex Mode + * @note In Half Duplex mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - CLKEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * This function also sets the UART/USART in Half Duplex mode. + * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Set HDSEL in CR3 using @ref LL_USART_EnableHalfDuplex() function + * @note Other remaining configurations items related to Half Duplex Mode + * (as Baud Rate, Word length, Parity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigHalfDuplexMode\n + * CR2 CLKEN LL_USART_ConfigHalfDuplexMode\n + * CR3 HDSEL LL_USART_ConfigHalfDuplexMode\n + * CR3 SCEN LL_USART_ConfigHalfDuplexMode\n + * CR3 IREN LL_USART_ConfigHalfDuplexMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigHalfDuplexMode(USART_TypeDef *USARTx) +{ + /* In Half Duplex mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - SCEN and IREN bits in the USART_CR3 register. + */ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN)); + /* set the UART/USART in Half Duplex mode */ + SET_BIT(USARTx->CR3, USART_CR3_HDSEL); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Smartcard Mode + * @note In Smartcard mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also configures Stop bits to 1.5 bits and + * sets the USART in Smartcard mode (SCEN bit). + * Clock Output is also enabled (CLKEN). + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Configure STOP in CR2 using @ref LL_USART_SetStopBitsLength() function + * - Set CLKEN in CR2 using @ref LL_USART_EnableSCLKOutput() function + * - Set SCEN in CR3 using @ref LL_USART_EnableSmartcard() function + * @note Other remaining configurations items related to Smartcard Mode + * (as Baud Rate, Word length, Parity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigSmartcardMode\n + * CR2 STOP LL_USART_ConfigSmartcardMode\n + * CR2 CLKEN LL_USART_ConfigSmartcardMode\n + * CR3 HDSEL LL_USART_ConfigSmartcardMode\n + * CR3 SCEN LL_USART_ConfigSmartcardMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigSmartcardMode(USART_TypeDef *USARTx) +{ + /* In Smartcard mode, the following bits must be kept cleared: + - LINEN bit in the USART_CR2 register, + - IREN and HDSEL bits in the USART_CR3 register. + */ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_HDSEL)); + /* Configure Stop bits to 1.5 bits */ + /* Synchronous mode is activated by default */ + SET_BIT(USARTx->CR2, (USART_CR2_STOP_0 | USART_CR2_STOP_1 | USART_CR2_CLKEN)); + /* set the UART/USART in Smartcard mode */ + SET_BIT(USARTx->CR3, USART_CR3_SCEN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Irda Mode + * @note In IRDA mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - STOP and CLKEN bits in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also sets the UART/USART in IRDA mode (IREN bit). + * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Configure STOP in CR2 using @ref LL_USART_SetStopBitsLength() function + * - Set IREN in CR3 using @ref LL_USART_EnableIrda() function + * @note Other remaining configurations items related to Irda Mode + * (as Baud Rate, Word length, Power mode, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigIrdaMode\n + * CR2 CLKEN LL_USART_ConfigIrdaMode\n + * CR2 STOP LL_USART_ConfigIrdaMode\n + * CR3 SCEN LL_USART_ConfigIrdaMode\n + * CR3 HDSEL LL_USART_ConfigIrdaMode\n + * CR3 IREN LL_USART_ConfigIrdaMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigIrdaMode(USART_TypeDef *USARTx) +{ + /* In IRDA mode, the following bits must be kept cleared: + - LINEN, STOP and CLKEN bits in the USART_CR2 register, + - SCEN and HDSEL bits in the USART_CR3 register. + */ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); + /* set the UART/USART in IRDA mode */ + SET_BIT(USARTx->CR3, USART_CR3_IREN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Multi processor Mode + * (several USARTs connected in a network, one of the USARTs can be the master, + * its TX output connected to the RX inputs of the other slaves USARTs). + * @note In MultiProcessor mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - CLKEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * @note Other remaining configurations items related to Multi processor Mode + * (as Baud Rate, Wake Up Method, Node address, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigMultiProcessMode\n + * CR2 CLKEN LL_USART_ConfigMultiProcessMode\n + * CR3 SCEN LL_USART_ConfigMultiProcessMode\n + * CR3 HDSEL LL_USART_ConfigMultiProcessMode\n + * CR3 IREN LL_USART_ConfigMultiProcessMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigMultiProcessMode(USART_TypeDef *USARTx) +{ + /* In Multi Processor mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - IREN, SCEN and HDSEL bits in the USART_CR3 register. + */ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Check if the USART Parity Error Flag is set or not + * @rmtoll ISR PE LL_USART_IsActiveFlag_PE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_PE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_PE) == (USART_ISR_PE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Framing Error Flag is set or not + * @rmtoll ISR FE LL_USART_IsActiveFlag_FE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_FE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_FE) == (USART_ISR_FE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Noise error detected Flag is set or not + * @rmtoll ISR NE LL_USART_IsActiveFlag_NE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_NE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_NE) == (USART_ISR_NE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART OverRun Error Flag is set or not + * @rmtoll ISR ORE LL_USART_IsActiveFlag_ORE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ORE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_ORE) == (USART_ISR_ORE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART IDLE line detected Flag is set or not + * @rmtoll ISR IDLE LL_USART_IsActiveFlag_IDLE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_IDLE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_IDLE) == (USART_ISR_IDLE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Read Data Register Not Empty Flag is set or not + * @rmtoll ISR RXNE LL_USART_IsActiveFlag_RXNE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RXNE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_RXNE) == (USART_ISR_RXNE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Transmission Complete Flag is set or not + * @rmtoll ISR TC LL_USART_IsActiveFlag_TC + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TC(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_TC) == (USART_ISR_TC)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Transmit Data Register Empty Flag is set or not + * @rmtoll ISR TXE LL_USART_IsActiveFlag_TXE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TXE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_TXE) == (USART_ISR_TXE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART LIN Break Detection Flag is set or not + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll ISR LBDF LL_USART_IsActiveFlag_LBD + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_LBD(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_LBDF) == (USART_ISR_LBDF)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART CTS interrupt Flag is set or not + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll ISR CTSIF LL_USART_IsActiveFlag_nCTS + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_nCTS(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_CTSIF) == (USART_ISR_CTSIF)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART CTS Flag is set or not + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll ISR CTS LL_USART_IsActiveFlag_CTS + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_CTS(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_CTS) == (USART_ISR_CTS)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Receiver Time Out Flag is set or not + * @rmtoll ISR RTOF LL_USART_IsActiveFlag_RTO + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RTO(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_RTOF) == (USART_ISR_RTOF)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART End Of Block Flag is set or not + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll ISR EOBF LL_USART_IsActiveFlag_EOB + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_EOB(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_EOBF) == (USART_ISR_EOBF)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Auto-Baud Rate Error Flag is set or not + * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or not + * Auto Baud Rate detection feature is supported by the USARTx instance. + * @rmtoll ISR ABRE LL_USART_IsActiveFlag_ABRE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ABRE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_ABRE) == (USART_ISR_ABRE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Auto-Baud Rate Flag is set or not + * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or not + * Auto Baud Rate detection feature is supported by the USARTx instance. + * @rmtoll ISR ABRF LL_USART_IsActiveFlag_ABR + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ABR(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_ABRF) == (USART_ISR_ABRF)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Busy Flag is set or not + * @rmtoll ISR BUSY LL_USART_IsActiveFlag_BUSY + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_BUSY(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_BUSY) == (USART_ISR_BUSY)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Character Match Flag is set or not + * @rmtoll ISR CMF LL_USART_IsActiveFlag_CM + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_CM(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_CMF) == (USART_ISR_CMF)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Send Break Flag is set or not + * @rmtoll ISR SBKF LL_USART_IsActiveFlag_SBK + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_SBK(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_SBKF) == (USART_ISR_SBKF)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Receive Wake Up from mute mode Flag is set or not + * @rmtoll ISR RWU LL_USART_IsActiveFlag_RWU + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RWU(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_RWU) == (USART_ISR_RWU)) ? 1UL : 0UL); +} + +#if defined(USART_CR1_UESM) +#if defined(USART_CR3_WUFIE) +/** + * @brief Check if the USART Wake Up from stop mode Flag is set or not + * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + * Wake-up from Stop mode feature is supported by the USARTx instance. + * @rmtoll ISR WUF LL_USART_IsActiveFlag_WKUP + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_WKUP(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_WUF) == (USART_ISR_WUF)) ? 1UL : 0UL); +} + +#endif /* USART_CR3_WUFIE */ +#endif /* USART_CR1_UESM */ +/** + * @brief Check if the USART Transmit Enable Acknowledge Flag is set or not + * @rmtoll ISR TEACK LL_USART_IsActiveFlag_TEACK + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TEACK(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_TEACK) == (USART_ISR_TEACK)) ? 1UL : 0UL); +} + +#if defined(USART_ISR_REACK) +/** + * @brief Check if the USART Receive Enable Acknowledge Flag is set or not + * @rmtoll ISR REACK LL_USART_IsActiveFlag_REACK + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_REACK(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_REACK) == (USART_ISR_REACK)) ? 1UL : 0UL); +} + +#endif /* USART_ISR_REACK */ +#if defined(USART_TCBGT_SUPPORT) +/* Function available only on devices supporting Transmit Complete before Guard Time feature */ +/** + * @brief Check if the Smartcard Transmission Complete Before Guard Time Flag is set or not + * @rmtoll ISR TCBGT LL_USART_IsActiveFlag_TCBGT + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TCBGT(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->ISR, USART_ISR_TCBGT) == (USART_ISR_TCBGT)) ? 1UL : 0UL); +} + +#endif /* USART_TCBGT_SUPPORT */ +/** + * @brief Clear Parity Error Flag + * @rmtoll ICR PECF LL_USART_ClearFlag_PE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_PE(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_PECF); +} + +/** + * @brief Clear Framing Error Flag + * @rmtoll ICR FECF LL_USART_ClearFlag_FE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_FE(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_FECF); +} + +/** + * @brief Clear Noise Error detected Flag + * @rmtoll ICR NCF LL_USART_ClearFlag_NE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_NE(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_NCF); +} + +/** + * @brief Clear OverRun Error Flag + * @rmtoll ICR ORECF LL_USART_ClearFlag_ORE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_ORE(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_ORECF); +} + +/** + * @brief Clear IDLE line detected Flag + * @rmtoll ICR IDLECF LL_USART_ClearFlag_IDLE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_IDLE(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_IDLECF); +} + +/** + * @brief Clear Transmission Complete Flag + * @rmtoll ICR TCCF LL_USART_ClearFlag_TC + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_TC(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_TCCF); +} + +#if defined(USART_TCBGT_SUPPORT) +/* Function available only on devices supporting Transmit Complete before Guard Time feature */ +/** + * @brief Clear Smartcard Transmission Complete Before Guard Time Flag + * @rmtoll ICR TCBGTCF LL_USART_ClearFlag_TCBGT + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_TCBGT(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_TCBGTCF); +} +#endif /* USART_TCBGT_SUPPORT */ + +/** + * @brief Clear LIN Break Detection Flag + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll ICR LBDCF LL_USART_ClearFlag_LBD + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_LBD(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_LBDCF); +} + +/** + * @brief Clear CTS Interrupt Flag + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll ICR CTSCF LL_USART_ClearFlag_nCTS + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_nCTS(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_CTSCF); +} + +/** + * @brief Clear Receiver Time Out Flag + * @rmtoll ICR RTOCF LL_USART_ClearFlag_RTO + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_RTO(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_RTOCF); +} + +/** + * @brief Clear End Of Block Flag + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll ICR EOBCF LL_USART_ClearFlag_EOB + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_EOB(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_EOBCF); +} + +/** + * @brief Clear Character Match Flag + * @rmtoll ICR CMCF LL_USART_ClearFlag_CM + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_CM(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_CMCF); +} + +#if defined(USART_CR1_UESM) +#if defined(USART_CR3_WUFIE) +/** + * @brief Clear Wake Up from stop mode Flag + * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + * Wake-up from Stop mode feature is supported by the USARTx instance. + * @rmtoll ICR WUCF LL_USART_ClearFlag_WKUP + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_WKUP(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->ICR, USART_ICR_WUCF); +} + +#endif /* USART_CR3_WUFIE */ +#endif /* USART_CR1_UESM */ +/** + * @} + */ + +/** @defgroup USART_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable IDLE Interrupt + * @rmtoll CR1 IDLEIE LL_USART_EnableIT_IDLE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_IDLE(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_IDLEIE); +} + +/** + * @brief Enable RX Not Empty Interrupt + * @rmtoll CR1 RXNEIE LL_USART_EnableIT_RXNE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_RXNE(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RXNEIE); +} + +/** + * @brief Enable Transmission Complete Interrupt + * @rmtoll CR1 TCIE LL_USART_EnableIT_TC + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_TC(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TCIE); +} + +/** + * @brief Enable TX Empty Interrupt + * @rmtoll CR1 TXEIE LL_USART_EnableIT_TXE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_TXE(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TXEIE); +} + +/** + * @brief Enable Parity Error Interrupt + * @rmtoll CR1 PEIE LL_USART_EnableIT_PE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_PE(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_PEIE); +} + +/** + * @brief Enable Character Match Interrupt + * @rmtoll CR1 CMIE LL_USART_EnableIT_CM + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_CM(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_CMIE); +} + +/** + * @brief Enable Receiver Timeout Interrupt + * @rmtoll CR1 RTOIE LL_USART_EnableIT_RTO + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_RTO(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RTOIE); +} + +/** + * @brief Enable End Of Block Interrupt + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR1 EOBIE LL_USART_EnableIT_EOB + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_EOB(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_EOBIE); +} + +/** + * @brief Enable LIN Break Detection Interrupt + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDIE LL_USART_EnableIT_LBD + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_LBD(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_LBDIE); +} + +/** + * @brief Enable Error Interrupt + * @note When set, Error Interrupt Enable Bit is enabling interrupt generation in case of a framing + * error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USARTx_ISR register). + * 0: Interrupt is inhibited + * 1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USARTx_ISR register. + * @rmtoll CR3 EIE LL_USART_EnableIT_ERROR + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_ERROR(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_EIE); +} + +/** + * @brief Enable CTS Interrupt + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSIE LL_USART_EnableIT_CTS + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_CTS(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_CTSIE); +} + +#if defined(USART_CR1_UESM) +#if defined(USART_CR3_WUFIE) +/** + * @brief Enable Wake Up from Stop Mode Interrupt + * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + * Wake-up from Stop mode feature is supported by the USARTx instance. + * @rmtoll CR3 WUFIE LL_USART_EnableIT_WKUP + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_WKUP(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_WUFIE); +} + +#endif /* USART_CR3_WUFIE */ +#endif /* USART_CR1_UESM */ +#if defined(USART_TCBGT_SUPPORT) +/* Function available only on devices supporting Transmit Complete before Guard Time feature */ +/** + * @brief Enable Smartcard Transmission Complete Before Guard Time Interrupt + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 TCBGTIE LL_USART_EnableIT_TCBGT + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_TCBGT(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_TCBGTIE); +} +#endif /* USART_TCBGT_SUPPORT */ + +/** + * @brief Disable IDLE Interrupt + * @rmtoll CR1 IDLEIE LL_USART_DisableIT_IDLE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_IDLE(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_IDLEIE); +} + +/** + * @brief Disable RX Not Empty Interrupt + * @rmtoll CR1 RXNEIE LL_USART_DisableIT_RXNE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_RXNE(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RXNEIE); +} + +/** + * @brief Disable Transmission Complete Interrupt + * @rmtoll CR1 TCIE LL_USART_DisableIT_TC + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_TC(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TCIE); +} + +/** + * @brief Disable TX Empty Interrupt + * @rmtoll CR1 TXEIE LL_USART_DisableIT_TXE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_TXE(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TXEIE); +} + +/** + * @brief Disable Parity Error Interrupt + * @rmtoll CR1 PEIE LL_USART_DisableIT_PE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_PE(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_PEIE); +} + +/** + * @brief Disable Character Match Interrupt + * @rmtoll CR1 CMIE LL_USART_DisableIT_CM + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_CM(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_CMIE); +} + +/** + * @brief Disable Receiver Timeout Interrupt + * @rmtoll CR1 RTOIE LL_USART_DisableIT_RTO + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_RTO(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RTOIE); +} + +/** + * @brief Disable End Of Block Interrupt + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR1 EOBIE LL_USART_DisableIT_EOB + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_EOB(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_EOBIE); +} + +/** + * @brief Disable LIN Break Detection Interrupt + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDIE LL_USART_DisableIT_LBD + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_LBD(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_LBDIE); +} + +/** + * @brief Disable Error Interrupt + * @note When set, Error Interrupt Enable Bit is enabling interrupt generation in case of a framing + * error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USARTx_ISR register). + * 0: Interrupt is inhibited + * 1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USARTx_ISR register. + * @rmtoll CR3 EIE LL_USART_DisableIT_ERROR + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_ERROR(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_EIE); +} + +/** + * @brief Disable CTS Interrupt + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSIE LL_USART_DisableIT_CTS + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_CTS(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE); +} + +#if defined(USART_CR1_UESM) +#if defined(USART_CR3_WUFIE) +/** + * @brief Disable Wake Up from Stop Mode Interrupt + * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + * Wake-up from Stop mode feature is supported by the USARTx instance. + * @rmtoll CR3 WUFIE LL_USART_DisableIT_WKUP + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_WKUP(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_WUFIE); +} + +#endif /* USART_CR3_WUFIE */ +#endif /* USART_CR1_UESM */ +#if defined(USART_TCBGT_SUPPORT) +/* Function available only on devices supporting Transmit Complete before Guard Time feature */ +/** + * @brief Disable Smartcard Transmission Complete Before Guard Time Interrupt + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 TCBGTIE LL_USART_DisableIT_TCBGT + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_TCBGT(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_TCBGTIE); +} +#endif /* USART_TCBGT_SUPPORT */ + +/** + * @brief Check if the USART IDLE Interrupt source is enabled or disabled. + * @rmtoll CR1 IDLEIE LL_USART_IsEnabledIT_IDLE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_IDLE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_IDLEIE) == (USART_CR1_IDLEIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART RX Not Empty Interrupt is enabled or disabled. + * @rmtoll CR1 RXNEIE LL_USART_IsEnabledIT_RXNE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RXNE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_RXNEIE) == (USART_CR1_RXNEIE)) ? 1U : 0U); +} + +/** + * @brief Check if the USART Transmission Complete Interrupt is enabled or disabled. + * @rmtoll CR1 TCIE LL_USART_IsEnabledIT_TC + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TC(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_TCIE) == (USART_CR1_TCIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART TX Empty Interrupt is enabled or disabled. + * @rmtoll CR1 TXEIE LL_USART_IsEnabledIT_TXE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TXE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_TXEIE) == (USART_CR1_TXEIE)) ? 1U : 0U); +} + +/** + * @brief Check if the USART Parity Error Interrupt is enabled or disabled. + * @rmtoll CR1 PEIE LL_USART_IsEnabledIT_PE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_PE(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_PEIE) == (USART_CR1_PEIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Character Match Interrupt is enabled or disabled. + * @rmtoll CR1 CMIE LL_USART_IsEnabledIT_CM + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CM(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_CMIE) == (USART_CR1_CMIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Receiver Timeout Interrupt is enabled or disabled. + * @rmtoll CR1 RTOIE LL_USART_IsEnabledIT_RTO + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RTO(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_RTOIE) == (USART_CR1_RTOIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART End Of Block Interrupt is enabled or disabled. + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR1 EOBIE LL_USART_IsEnabledIT_EOB + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_EOB(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR1, USART_CR1_EOBIE) == (USART_CR1_EOBIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART LIN Break Detection Interrupt is enabled or disabled. + * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDIE LL_USART_IsEnabledIT_LBD + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_LBD(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR2, USART_CR2_LBDIE) == (USART_CR2_LBDIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART Error Interrupt is enabled or disabled. + * @rmtoll CR3 EIE LL_USART_IsEnabledIT_ERROR + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_ERROR(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_EIE) == (USART_CR3_EIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if the USART CTS Interrupt is enabled or disabled. + * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSIE LL_USART_IsEnabledIT_CTS + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CTS(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE)) ? 1UL : 0UL); +} + +#if defined(USART_CR1_UESM) +#if defined(USART_CR3_WUFIE) +/** + * @brief Check if the USART Wake Up from Stop Mode Interrupt is enabled or disabled. + * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + * Wake-up from Stop mode feature is supported by the USARTx instance. + * @rmtoll CR3 WUFIE LL_USART_IsEnabledIT_WKUP + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_WKUP(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_WUFIE) == (USART_CR3_WUFIE)) ? 1UL : 0UL); +} + +#endif /* USART_CR3_WUFIE */ +#endif /* USART_CR1_UESM */ +#if defined(USART_TCBGT_SUPPORT) +/* Function available only on devices supporting Transmit Complete before Guard Time feature */ +/** + * @brief Check if the Smartcard Transmission Complete Before Guard Time Interrupt is enabled or disabled. + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 TCBGTIE LL_USART_IsEnabledIT_TCBGT + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TCBGT(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_TCBGTIE) == (USART_CR3_TCBGTIE)) ? 1UL : 0UL); +} +#endif /* USART_TCBGT_SUPPORT */ + +/** + * @} + */ + +/** @defgroup USART_LL_EF_DMA_Management DMA_Management + * @{ + */ + +/** + * @brief Enable DMA Mode for reception + * @rmtoll CR3 DMAR LL_USART_EnableDMAReq_RX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDMAReq_RX(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAR); +} + +/** + * @brief Disable DMA Mode for reception + * @rmtoll CR3 DMAR LL_USART_DisableDMAReq_RX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDMAReq_RX(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAR); +} + +/** + * @brief Check if DMA Mode is enabled for reception + * @rmtoll CR3 DMAR LL_USART_IsEnabledDMAReq_RX + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_RX(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_DMAR) == (USART_CR3_DMAR)) ? 1UL : 0UL); +} + +/** + * @brief Enable DMA Mode for transmission + * @rmtoll CR3 DMAT LL_USART_EnableDMAReq_TX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDMAReq_TX(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAT); +} + +/** + * @brief Disable DMA Mode for transmission + * @rmtoll CR3 DMAT LL_USART_DisableDMAReq_TX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDMAReq_TX(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAT); +} + +/** + * @brief Check if DMA Mode is enabled for transmission + * @rmtoll CR3 DMAT LL_USART_IsEnabledDMAReq_TX + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_TX(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_DMAT) == (USART_CR3_DMAT)) ? 1UL : 0UL); +} + +/** + * @brief Enable DMA Disabling on Reception Error + * @rmtoll CR3 DDRE LL_USART_EnableDMADeactOnRxErr + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDMADeactOnRxErr(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_DDRE); +} + +/** + * @brief Disable DMA Disabling on Reception Error + * @rmtoll CR3 DDRE LL_USART_DisableDMADeactOnRxErr + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDMADeactOnRxErr(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_DDRE); +} + +/** + * @brief Indicate if DMA Disabling on Reception Error is disabled + * @rmtoll CR3 DDRE LL_USART_IsEnabledDMADeactOnRxErr + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledDMADeactOnRxErr(const USART_TypeDef *USARTx) +{ + return ((READ_BIT(USARTx->CR3, USART_CR3_DDRE) == (USART_CR3_DDRE)) ? 1UL : 0UL); +} + +/** + * @brief Get the data register address used for DMA transfer + * @rmtoll RDR RDR LL_USART_DMA_GetRegAddr\n + * @rmtoll TDR TDR LL_USART_DMA_GetRegAddr + * @param USARTx USART Instance + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_USART_DMA_REG_DATA_TRANSMIT + * @arg @ref LL_USART_DMA_REG_DATA_RECEIVE + * @retval Address of data register + */ +__STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(const USART_TypeDef *USARTx, uint32_t Direction) +{ + uint32_t data_reg_addr; + + if (Direction == LL_USART_DMA_REG_DATA_TRANSMIT) + { + /* return address of TDR register */ + data_reg_addr = (uint32_t) &(USARTx->TDR); + } + else + { + /* return address of RDR register */ + data_reg_addr = (uint32_t) &(USARTx->RDR); + } + + return data_reg_addr; +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Data_Management Data_Management + * @{ + */ + +/** + * @brief Read Receiver Data register (Receive Data value, 8 bits) + * @rmtoll RDR RDR LL_USART_ReceiveData8 + * @param USARTx USART Instance + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint8_t LL_USART_ReceiveData8(const USART_TypeDef *USARTx) +{ + return (uint8_t)(READ_BIT(USARTx->RDR, USART_RDR_RDR) & 0xFFU); +} + +/** + * @brief Read Receiver Data register (Receive Data value, 9 bits) + * @rmtoll RDR RDR LL_USART_ReceiveData9 + * @param USARTx USART Instance + * @retval Value between Min_Data=0x00 and Max_Data=0x1FF + */ +__STATIC_INLINE uint16_t LL_USART_ReceiveData9(const USART_TypeDef *USARTx) +{ + return (uint16_t)(READ_BIT(USARTx->RDR, USART_RDR_RDR)); +} + +/** + * @brief Write in Transmitter Data Register (Transmit Data value, 8 bits) + * @rmtoll TDR TDR LL_USART_TransmitData8 + * @param USARTx USART Instance + * @param Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_USART_TransmitData8(USART_TypeDef *USARTx, uint8_t Value) +{ + USARTx->TDR = Value; +} + +/** + * @brief Write in Transmitter Data Register (Transmit Data value, 9 bits) + * @rmtoll TDR TDR LL_USART_TransmitData9 + * @param USARTx USART Instance + * @param Value between Min_Data=0x00 and Max_Data=0x1FF + * @retval None + */ +__STATIC_INLINE void LL_USART_TransmitData9(USART_TypeDef *USARTx, uint16_t Value) +{ + USARTx->TDR = (uint16_t)(Value & 0x1FFUL); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Execution Execution + * @{ + */ + +/** + * @brief Request an Automatic Baud Rate measurement on next received data frame + * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or not + * Auto Baud Rate detection feature is supported by the USARTx instance. + * @rmtoll RQR ABRRQ LL_USART_RequestAutoBaudRate + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestAutoBaudRate(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->RQR, (uint16_t)USART_RQR_ABRRQ); +} + +/** + * @brief Request Break sending + * @rmtoll RQR SBKRQ LL_USART_RequestBreakSending + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestBreakSending(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->RQR, (uint16_t)USART_RQR_SBKRQ); +} + +/** + * @brief Put USART in mute mode and set the RWU flag + * @rmtoll RQR MMRQ LL_USART_RequestEnterMuteMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestEnterMuteMode(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->RQR, (uint16_t)USART_RQR_MMRQ); +} + +/** + * @brief Request a Receive Data flush + * @note Allows to discard the received data without reading them, and avoid an overrun + * condition. + * @rmtoll RQR RXFRQ LL_USART_RequestRxDataFlush + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestRxDataFlush(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->RQR, (uint16_t)USART_RQR_RXFRQ); +} + +/** + * @brief Request a Transmit data flush + * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll RQR TXFRQ LL_USART_RequestTxDataFlush + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestTxDataFlush(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->RQR, (uint16_t)USART_RQR_TXFRQ); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_EF_Init Initialization and de-initialization functions + * @{ + */ +ErrorStatus LL_USART_DeInit(const USART_TypeDef *USARTx); +ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, const LL_USART_InitTypeDef *USART_InitStruct); +void LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct); +ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, const LL_USART_ClockInitTypeDef *USART_ClockInitStruct); +void LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* USART1 || USART2 || USART3 || USART6 || UART4 || UART5 || UART7 || UART8 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F7xx_LL_USART_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h new file mode 100644 index 0000000..87806ae --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h @@ -0,0 +1,304 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_utils.h + * @author MCD Application Team + * @brief Header file of UTILS LL module. + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL UTILS driver contains a set of generic APIs that can be + used by user: + (+) Device electronic signature + (+) Timing functions + (+) PLL configuration functions + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_LL_UTILS_H +#define __STM32F7xx_LL_UTILS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx.h" + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +/** @defgroup UTILS_LL UTILS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Constants UTILS Private Constants + * @{ + */ + +/* Max delay can be used in LL_mDelay */ +#define LL_MAX_DELAY 0xFFFFFFFFU + +/** + * @brief Unique device ID register base address + */ +#define UID_BASE_ADDRESS UID_BASE + +/** + * @brief Flash size data register base address + */ +#define FLASHSIZE_BASE_ADDRESS FLASHSIZE_BASE + +/** + * @brief Package data register base address + */ +#define PACKAGE_BASE_ADDRESS PACKAGE_BASE + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Macros UTILS Private Macros + * @{ + */ +/** + * @} + */ +/* Exported types ------------------------------------------------------------*/ +/** @defgroup UTILS_LL_ES_INIT UTILS Exported structures + * @{ + */ +/** + * @brief UTILS PLL structure definition + */ +typedef struct +{ + uint32_t PLLM; /*!< Division factor for PLL VCO input clock. + This parameter can be a value of @ref RCC_LL_EC_PLLM_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + + uint32_t PLLN; /*!< Multiplication factor for PLL VCO output clock. + This parameter must be a number between Min_Data = 50 and Max_Data = 432 + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + + uint32_t PLLP; /*!< Division for the main system clock. + This parameter can be a value of @ref RCC_LL_EC_PLLP_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ +} LL_UTILS_PLLInitTypeDef; + +/** + * @brief UTILS System, AHB and APB buses clock configuration structure definition + */ +typedef struct +{ + uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK). + This parameter can be a value of @ref RCC_LL_EC_SYSCLK_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAHBPrescaler(). */ + + uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_LL_EC_APB1_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAPB1Prescaler(). */ + + uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_LL_EC_APB2_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAPB2Prescaler(). */ + +} LL_UTILS_ClkInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup UTILS_LL_Exported_Constants UTILS Exported Constants + * @{ + */ + +/** @defgroup UTILS_EC_HSE_BYPASS HSE Bypass activation + * @{ + */ +#define LL_UTILS_HSEBYPASS_OFF 0x00000000U /*!< HSE Bypass is not enabled */ +#define LL_UTILS_HSEBYPASS_ON 0x00000001U /*!< HSE Bypass is enabled */ +/** + * @} + */ + +/** @defgroup UTILS_EC_PACKAGETYPE PACKAGE TYPE + * @{ + */ +#define LL_UTILS_PACKAGETYPE_LQFP100 0x00000100U /*!< LQFP100 package type */ +#define LL_UTILS_PACKAGETYPE_LQFP144_WLCSP143 0x00000200U /*!< LQFP144 or WLCSP143 package type */ +#define LL_UTILS_PACKAGETYPE_WLCSP180_LQFP176_UFBGA176 0x00000300U /*!< WLCSP180, LQFP176 or UFBGA176 package type */ +#define LL_UTILS_PACKAGETYPE_LQFP176_LQFP208_TFBGA216 0x00000400U /*!< LQFP176, LQFP208 or TFBGA216 package type */ +#define LL_UTILS_PACKAGETYPE_TFBGA216_LQFP176_LQFP208 0x00000500U /*!< LQFP176, LQFP208 or TFBGA216 package type */ +#define LL_UTILS_PACKAGETYPE_LQFP176_TFBGA216_LQFP208 0x00000600U /*!< LQFP176, LQFP208 or TFBGA216 package type */ +#define LL_UTILS_PACKAGETYPE_LQFP208_LQFP176_TFBGA216 0x00000700U /*!< LQFP176, LQFP208 or TFBGA216 package type */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup UTILS_LL_Exported_Functions UTILS Exported Functions + * @{ + */ + +/** @defgroup UTILS_EF_DEVICE_ELECTRONIC_SIGNATURE DEVICE ELECTRONIC SIGNATURE + * @{ + */ + +/** + * @brief Get Word0 of the unique device identifier (UID based on 96 bits) + * @retval UID[31:0] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word0(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)UID_BASE_ADDRESS))); +} + +/** + * @brief Get Word1 of the unique device identifier (UID based on 96 bits) + * @retval UID[63:32] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word1(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 4U)))); +} + +/** + * @brief Get Word2 of the unique device identifier (UID based on 96 bits) + * @retval UID[95:64] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word2(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 8U)))); +} + +/** + * @brief Get Flash memory size + * @note This bitfield indicates the size of the device Flash memory expressed in + * Kbytes. As an example, 0x040 corresponds to 64 Kbytes. + * @retval FLASH_SIZE[15:0]: Flash memory size + */ +__STATIC_INLINE uint32_t LL_GetFlashSize(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)FLASHSIZE_BASE_ADDRESS)) & 0xFFFFU); +} + +/** + * @brief Get Package type + * @retval Returned value can be one of the following values: + * @arg @ref LL_UTILS_PACKAGETYPE_LQFP100 + * @arg @ref LL_UTILS_PACKAGETYPE_LQFP144_WLCSP143 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_WLCSP180_LQFP176_UFBGA176 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_LQFP176_LQFP208_TFBGA216 (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_GetPackageType(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)PACKAGE_BASE_ADDRESS)) & 0x0700U); +} + +/** + * @} + */ + +/** @defgroup UTILS_LL_EF_DELAY DELAY + * @{ + */ + +/** + * @brief This function configures the Cortex-M SysTick source of the time base. + * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro) + * @note When a RTOS is used, it is recommended to avoid changing the SysTick + * configuration by calling this function, for a delay use rather osDelay RTOS service. + * @param Ticks Frequency of Ticks (Hz) + * @retval None + */ +__STATIC_INLINE void LL_InitTick(uint32_t HCLKFrequency, uint32_t Ticks) +{ + /* Configure the SysTick to have interrupt in 1ms time base */ + SysTick->LOAD = (uint32_t)((HCLKFrequency / Ticks) - 1UL); /* set reload register */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable the Systick Timer */ +} + +void LL_Init1msTick(uint32_t HCLKFrequency); +void LL_mDelay(uint32_t Delay); + +/** + * @} + */ + +/** @defgroup UTILS_EF_SYSTEM SYSTEM + * @{ + */ + +void LL_SetSystemCoreClock(uint32_t HCLKFrequency); +ErrorStatus LL_SetFlashLatency(uint32_t HCLK_Frequency); +ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_LL_UTILS_H */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/LICENSE.txt b/Drivers/STM32F7xx_HAL_Driver/LICENSE.txt new file mode 100644 index 0000000..b40364c --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/LICENSE.txt @@ -0,0 +1,6 @@ +This software component is provided to you as part of a software package and +applicable license terms are in the Package_license file. If you received this +software component outside of a package or without applicable license terms, +the terms of the BSD-3-Clause license shall apply. +You may obtain a copy of the BSD-3-Clause at: +https://opensource.org/licenses/BSD-3-Clause diff --git a/Drivers/STM32F7xx_HAL_Driver/License.md b/Drivers/STM32F7xx_HAL_Driver/License.md new file mode 100644 index 0000000..008472d --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/License.md @@ -0,0 +1 @@ +License.md file kept for legacy purpose \ No newline at end of file diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c new file mode 100644 index 0000000..3ba2bc6 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c @@ -0,0 +1,620 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal.c + * @author MCD Application Team + * @brief HAL module driver. + * This is the common part of the HAL initialization + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The common HAL driver contains a set of generic and common APIs that can be + used by the PPP peripheral drivers and the user to start using the HAL. + [..] + The HAL contains two APIs' categories: + (+) Common HAL APIs + (+) Services HAL APIs + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup HAL HAL + * @brief HAL module driver. + * @{ + */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @addtogroup HAL_Private_Constants + * @{ + */ +/** + * @brief STM32F7xx HAL Driver version number V1.3.1 + */ +#define __STM32F7xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */ +#define __STM32F7xx_HAL_VERSION_SUB1 (0x03) /*!< [23:16] sub1 version */ +#define __STM32F7xx_HAL_VERSION_SUB2 (0x01) /*!< [15:8] sub2 version */ +#define __STM32F7xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32F7xx_HAL_VERSION ((__STM32F7xx_HAL_VERSION_MAIN << 24)\ + |(__STM32F7xx_HAL_VERSION_SUB1 << 16)\ + |(__STM32F7xx_HAL_VERSION_SUB2 << 8 )\ + |(__STM32F7xx_HAL_VERSION_RC)) + +#define IDCODE_DEVID_MASK ((uint32_t)0x00000FFF) +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Exported variables ---------------------------------------------------------*/ +/** @addtogroup HAL_Exported_Variables + * @{ + */ +__IO uint32_t uwTick; +uint32_t uwTickPrio = (1UL << __NVIC_PRIO_BITS); /* Invalid PRIO */ +HAL_TickFreqTypeDef uwTickFreq = HAL_TICK_FREQ_DEFAULT; /* 1KHz */ +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup HAL_Exported_Functions HAL Exported Functions + * @{ + */ + +/** @defgroup HAL_Exported_Functions_Group1 Initialization and de-initialization Functions + * @brief Initialization and de-initialization functions + * +@verbatim + =============================================================================== + ##### Initialization and Configuration functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Initializes the Flash interface the NVIC allocation and initial clock + configuration. It initializes the systick also when timeout is needed + and the backup domain when enabled. + (+) De-Initializes common part of the HAL. + (+) Configure the time base source to have 1ms time base with a dedicated + Tick interrupt priority. + (++) SysTick timer is used by default as source of time base, but user + can eventually implement his proper time base source (a general purpose + timer for example or other time source), keeping in mind that Time base + duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and + handled in milliseconds basis. + (++) Time base configuration function (HAL_InitTick ()) is called automatically + at the beginning of the program after reset by HAL_Init() or at any time + when clock is configured, by HAL_RCC_ClockConfig(). + (++) Source of time base is configured to generate interrupts at regular + time intervals. Care must be taken if HAL_Delay() is called from a + peripheral ISR process, the Tick interrupt line must have higher priority + (numerically lower) than the peripheral interrupt. Otherwise the caller + ISR process will be blocked. + (++) functions affecting time base configurations are declared as __weak + to make override possible in case of other implementations in user file. +@endverbatim + * @{ + */ + +/** + * @brief This function is used to initialize the HAL Library; it must be the first + * instruction to be executed in the main program (before to call any other + * HAL function), it performs the following: + * Configure the Flash prefetch, and instruction cache through ART accelerator. + * Configures the SysTick to generate an interrupt each 1 millisecond, + * which is clocked by the HSI (at this stage, the clock is not yet + * configured and thus the system is running from the internal HSI at 16 MHz). + * Set NVIC Group Priority to 4. + * Calls the HAL_MspInit() callback function defined in user file + * "stm32f7xx_hal_msp.c" to do the global low level hardware initialization + * + * @note SysTick is used as time base for the HAL_Delay() function, the application + * need to ensure that the SysTick time base is always set to 1 millisecond + * to have correct HAL operation. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_Init(void) +{ + /* Configure Instruction cache through ART accelerator */ +#if (ART_ACCELERATOR_ENABLE != 0) + __HAL_FLASH_ART_ENABLE(); +#endif /* ART_ACCELERATOR_ENABLE */ + + /* Configure Flash prefetch */ +#if (PREFETCH_ENABLE != 0U) + __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); +#endif /* PREFETCH_ENABLE */ + + /* Set Interrupt Group Priority */ + HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + + /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ + HAL_InitTick(TICK_INT_PRIORITY); + + /* Init the low level hardware */ + HAL_MspInit(); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief This function de-Initializes common part of the HAL and stops the systick. + * This function is optional. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DeInit(void) +{ + /* Reset of all peripherals */ + __HAL_RCC_APB1_FORCE_RESET(); + __HAL_RCC_APB1_RELEASE_RESET(); + + __HAL_RCC_APB2_FORCE_RESET(); + __HAL_RCC_APB2_RELEASE_RESET(); + + __HAL_RCC_AHB1_FORCE_RESET(); + __HAL_RCC_AHB1_RELEASE_RESET(); + + __HAL_RCC_AHB2_FORCE_RESET(); + __HAL_RCC_AHB2_RELEASE_RESET(); + + __HAL_RCC_AHB3_FORCE_RESET(); + __HAL_RCC_AHB3_RELEASE_RESET(); + + /* De-Init the low level hardware */ + HAL_MspDeInit(); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Initialize the MSP. + * @retval None + */ +__weak void HAL_MspInit(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes the MSP. + * @retval None + */ +__weak void HAL_MspDeInit(void) +{ + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief This function configures the source of the time base. + * The time source is configured to have 1ms time base with a dedicated + * Tick interrupt priority. + * @note This function is called automatically at the beginning of program after + * reset by HAL_Init() or at any time when clock is reconfigured by HAL_RCC_ClockConfig(). + * @note In the default implementation, SysTick timer is the source of time base. + * It is used to generate interrupts at regular time intervals. + * Care must be taken if HAL_Delay() is called from a peripheral ISR process, + * The SysTick interrupt must have higher priority (numerically lower) + * than the peripheral interrupt. Otherwise the caller ISR process will be blocked. + * The function is declared as __weak to be overwritten in case of other + * implementation in user file. + * @param TickPriority Tick interrupt priority. + * @retval HAL status + */ +__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + /* Configure the SysTick to have interrupt in 1ms time basis*/ + if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) + { + return HAL_ERROR; + } + + /* Configure the SysTick IRQ priority */ + if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + { + HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + uwTickPrio = TickPriority; + } + else + { + return HAL_ERROR; + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup HAL_Exported_Functions_Group2 HAL Control functions + * @brief HAL Control functions + * +@verbatim + =============================================================================== + ##### HAL Control functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Provide a tick value in millisecond + (+) Provide a blocking delay in millisecond + (+) Suspend the time base source interrupt + (+) Resume the time base source interrupt + (+) Get the HAL API driver version + (+) Get the device identifier + (+) Get the device revision identifier + (+) Enable/Disable Debug module during SLEEP mode + (+) Enable/Disable Debug module during STOP mode + (+) Enable/Disable Debug module during STANDBY mode + +@endverbatim + * @{ + */ + +/** + * @brief This function is called to increment a global variable "uwTick" + * used as application time base. + * @note In the default implementation, this variable is incremented each 1ms + * in SysTick ISR. + * @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) +{ + uwTick += uwTickFreq; +} + +/** + * @brief Provides a tick value in millisecond. + * @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) +{ + return uwTick; +} + +/** + * @brief This function returns a tick priority. + * @retval tick priority + */ +uint32_t HAL_GetTickPrio(void) +{ + return uwTickPrio; +} + +/** + * @brief Set new tick Freq. + * @retval Status + */ +HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq) +{ + HAL_StatusTypeDef status = HAL_OK; + HAL_TickFreqTypeDef prevTickFreq; + + assert_param(IS_TICKFREQ(Freq)); + + if (uwTickFreq != Freq) + { + /* Back up uwTickFreq frequency */ + prevTickFreq = uwTickFreq; + + /* Update uwTickFreq global variable used by HAL_InitTick() */ + uwTickFreq = Freq; + + /* Apply the new tick Freq */ + status = HAL_InitTick(uwTickPrio); + + if (status != HAL_OK) + { + /* Restore previous tick frequency */ + uwTickFreq = prevTickFreq; + } + } + + return status; +} + +/** + * @brief Return tick frequency. + * @retval Tick frequency. + * Value of @ref HAL_TickFreqTypeDef. + */ +HAL_TickFreqTypeDef HAL_GetTickFreq(void) +{ + return uwTickFreq; +} + +/** + * @brief This function provides minimum delay (in milliseconds) based + * on variable incremented. + * @note In the default implementation , SysTick timer is the source of time base. + * It is used to generate interrupts at regular time intervals where uwTick + * is incremented. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +__weak void HAL_Delay(uint32_t Delay) +{ + uint32_t tickstart = HAL_GetTick(); + uint32_t wait = Delay; + + /* Add a freq to guarantee minimum wait */ + if (wait < HAL_MAX_DELAY) + { + wait += (uint32_t)(uwTickFreq); + } + + while ((HAL_GetTick() - tickstart) < wait) + { + } +} + +/** + * @brief Suspend Tick increment. + * @note In the default implementation , SysTick timer is the source of time base. It is + * used to generate interrupts at regular time intervals. Once HAL_SuspendTick() + * is called, the SysTick interrupt will be disabled and so Tick increment + * is suspended. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_SuspendTick(void) +{ + /* Disable SysTick Interrupt */ + SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; +} + +/** + * @brief Resume Tick increment. + * @note In the default implementation , SysTick timer is the source of time base. It is + * used to generate interrupts at regular time intervals. Once HAL_ResumeTick() + * is called, the SysTick interrupt will be enabled and so Tick increment + * is resumed. + * @note This function is declared as __weak to be overwritten in case of other + * implementations in user file. + * @retval None + */ +__weak void HAL_ResumeTick(void) +{ + /* Enable SysTick Interrupt */ + SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk; +} + +/** + * @brief Returns the HAL revision + * @retval version : 0xXYZR (8bits for each decimal, R for RC) + */ +uint32_t HAL_GetHalVersion(void) +{ + return __STM32F7xx_HAL_VERSION; +} + +/** + * @brief Returns the device revision identifier. + * @retval Device revision identifier + */ +uint32_t HAL_GetREVID(void) +{ + return((DBGMCU->IDCODE) >> 16U); +} + +/** + * @brief Returns the device identifier. + * @retval Device identifier + */ +uint32_t HAL_GetDEVID(void) +{ + return((DBGMCU->IDCODE) & IDCODE_DEVID_MASK); +} + +/** + * @brief Returns first word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier + */ +uint32_t HAL_GetUIDw0(void) +{ + return(READ_REG(*((uint32_t *)UID_BASE))); +} + +/** + * @brief Returns second word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier + */ +uint32_t HAL_GetUIDw1(void) +{ + return(READ_REG(*((uint32_t *)(UID_BASE + 4U)))); +} + +/** + * @brief Returns third word of the unique device identifier (UID based on 96 bits) + * @retval Device identifier + */ +uint32_t HAL_GetUIDw2(void) +{ + return(READ_REG(*((uint32_t *)(UID_BASE + 8U)))); +} + +/** + * @brief Enable the Debug Module during SLEEP mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGSleepMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Disable the Debug Module during SLEEP mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGSleepMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Enable the Debug Module during STOP mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGStopMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Disable the Debug Module during STOP mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGStopMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Enable the Debug Module during STANDBY mode + * @retval None + */ +void HAL_DBGMCU_EnableDBGStandbyMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Disable the Debug Module during STANDBY mode + * @retval None + */ +void HAL_DBGMCU_DisableDBGStandbyMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Enables the I/O Compensation Cell. + * @note The I/O compensation cell can be used only when the device supply + * voltage ranges from 2.4 to 3.6 V. + * @retval None + */ +void HAL_EnableCompensationCell(void) +{ + SYSCFG->CMPCR |= SYSCFG_CMPCR_CMP_PD; +} + +/** + * @brief Power-down the I/O Compensation Cell. + * @note The I/O compensation cell can be used only when the device supply + * voltage ranges from 2.4 to 3.6 V. + * @retval None + */ +void HAL_DisableCompensationCell(void) +{ + SYSCFG->CMPCR &= (uint32_t)~((uint32_t)SYSCFG_CMPCR_CMP_PD); +} + +/** + * @brief Enables the FMC Memory Mapping Swapping. + * + * @note SDRAM is accessible at 0x60000000 + * and NOR/RAM is accessible at 0xC0000000 + * + * @retval None + */ +void HAL_EnableFMCMemorySwapping(void) +{ + SYSCFG->MEMRMP |= SYSCFG_MEMRMP_SWP_FMC_0; +} + +/** + * @brief Disables the FMC Memory Mapping Swapping + * + * @note SDRAM is accessible at 0xC0000000 (default mapping) + * and NOR/RAM is accessible at 0x60000000 (default mapping) + * + * @retval None + */ +void HAL_DisableFMCMemorySwapping(void) +{ + SYSCFG->MEMRMP &= (uint32_t)~((uint32_t)SYSCFG_MEMRMP_SWP_FMC); +} + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) +/** +* @brief Enable the Internal FLASH Bank Swapping. +* +* @note This function can be used only for STM32F77xx/STM32F76xx devices. +* +* @note Flash Bank2 mapped at 0x08000000 (AXI) (aliased at 0x00200000 (TCM)) +* and Flash Bank1 mapped at 0x08100000 (AXI) (aliased at 0x00300000 (TCM)) +* +* @retval None +*/ +void HAL_EnableMemorySwappingBank(void) +{ + SET_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB); +} + +/** +* @brief Disable the Internal FLASH Bank Swapping. +* +* @note This function can be used only for STM32F77xx/STM32F76xx devices. +* +* @note The default state : Flash Bank1 mapped at 0x08000000 (AXI) (aliased at 0x00200000 (TCM)) +* and Flash Bank2 mapped at 0x08100000 (AXI)( aliased at 0x00300000 (TCM)) +* +* @retval None +*/ +void HAL_DisableMemorySwappingBank(void) +{ + CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB); +} +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c new file mode 100644 index 0000000..15fd1c7 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c @@ -0,0 +1,2114 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_adc.c + * @author MCD Application Team + * @brief This file provides firmware functions to manage the following + * functionalities of the Analog to Digital Converter (ADC) peripheral: + * + Initialization and de-initialization functions + * + Peripheral Control functions + * + Peripheral State functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### ADC Peripheral features ##### + ============================================================================== + [..] + (#) 12-bit, 10-bit, 8-bit or 6-bit configurable resolution. + (#) Interrupt generation at the end of conversion, end of injected conversion, + and in case of analog watchdog or overrun events + (#) Single and continuous conversion modes. + (#) Scan mode for automatic conversion of channel 0 to channel x. + (#) Data alignment with in-built data coherency. + (#) Channel-wise programmable sampling time. + (#) External trigger option with configurable polarity for both regular and + injected conversion. + (#) Dual/Triple mode (on devices with 2 ADCs or more). + (#) Configurable DMA data storage in Dual/Triple ADC mode. + (#) Configurable delay between conversions in Dual/Triple interleaved mode. + (#) ADC conversion type (refer to the datasheets). + (#) ADC supply requirements: 2.4 V to 3.6 V at full speed and down to 1.8 V at + slower speed. + (#) ADC input range: VREF(minus) = VIN = VREF(plus). + (#) DMA request generation during regular channel conversion. + + + ##### How to use this driver ##### + ============================================================================== + [..] + (#)Initialize the ADC low level resources by implementing the HAL_ADC_MspInit(): + (##) Enable the ADC interface clock using __HAL_RCC_ADC_CLK_ENABLE() + (##) ADC pins configuration + (+++) Enable the clock for the ADC GPIOs using the following function: + __HAL_RCC_GPIOx_CLK_ENABLE() + (+++) Configure these ADC pins in analog mode using HAL_GPIO_Init() + (##) In case of using interrupts (e.g. HAL_ADC_Start_IT()) + (+++) Configure the ADC interrupt priority using HAL_NVIC_SetPriority() + (+++) Enable the ADC IRQ handler using HAL_NVIC_EnableIRQ() + (+++) In ADC IRQ handler, call HAL_ADC_IRQHandler() + (##) In case of using DMA to control data transfer (e.g. HAL_ADC_Start_DMA()) + (+++) Enable the DMAx interface clock using __HAL_RCC_DMAx_CLK_ENABLE() + (+++) Configure and enable two DMA streams stream for managing data + transfer from peripheral to memory (output stream) + (+++) Associate the initialized DMA handle to the CRYP DMA handle + using __HAL_LINKDMA() + (+++) Configure the priority and enable the NVIC for the transfer complete + interrupt on the two DMA Streams. The output stream should have higher + priority than the input stream. + + *** Configuration of ADC, groups regular/injected, channels parameters *** + ============================================================================== + [..] + (#) Configure the ADC parameters (resolution, data alignment, ...) + and regular group parameters (conversion trigger, sequencer, ...) + using function HAL_ADC_Init(). + + (#) Configure the channels for regular group parameters (channel number, + channel rank into sequencer, ..., into regular group) + using function HAL_ADC_ConfigChannel(). + + (#) Optionally, configure the injected group parameters (conversion trigger, + sequencer, ..., of injected group) + and the channels for injected group parameters (channel number, + channel rank into sequencer, ..., into injected group) + using function HAL_ADCEx_InjectedConfigChannel(). + + (#) Optionally, configure the analog watchdog parameters (channels + monitored, thresholds, ...) using function HAL_ADC_AnalogWDGConfig(). + + (#) Optionally, for devices with several ADC instances: configure the + multimode parameters using function HAL_ADCEx_MultiModeConfigChannel(). + + *** Execution of ADC conversions *** + ============================================================================== + [..] + (#) ADC driver can be used among three modes: polling, interruption, + transfer by DMA. + + *** Polling mode IO operation *** + ================================= + [..] + (+) Start the ADC peripheral using HAL_ADC_Start() + (+) Wait for end of conversion using HAL_ADC_PollForConversion(), at this stage + user can specify the value of timeout according to his end application + (+) To read the ADC converted values, use the HAL_ADC_GetValue() function. + (+) Stop the ADC peripheral using HAL_ADC_Stop() + + *** Interrupt mode IO operation *** + =================================== + [..] + (+) Start the ADC peripheral using HAL_ADC_Start_IT() + (+) Use HAL_ADC_IRQHandler() called under ADC_IRQHandler() Interrupt subroutine + (+) At ADC end of conversion HAL_ADC_ConvCpltCallback() function is executed and user can + add his own code by customization of function pointer HAL_ADC_ConvCpltCallback + (+) In case of ADC Error, HAL_ADC_ErrorCallback() function is executed and user can + add his own code by customization of function pointer HAL_ADC_ErrorCallback + (+) Stop the ADC peripheral using HAL_ADC_Stop_IT() + + *** DMA mode IO operation *** + ============================== + [..] + (+) Start the ADC peripheral using HAL_ADC_Start_DMA(), at this stage the user specify the length + of data to be transferred at each end of conversion + (+) At The end of data transfer by HAL_ADC_ConvCpltCallback() function is executed and user can + add his own code by customization of function pointer HAL_ADC_ConvCpltCallback + (+) In case of transfer Error, HAL_ADC_ErrorCallback() function is executed and user can + add his own code by customization of function pointer HAL_ADC_ErrorCallback + (+) Stop the ADC peripheral using HAL_ADC_Stop_DMA() + + *** ADC HAL driver macros list *** + ============================================= + [..] + Below the list of most used macros in ADC HAL driver. + + (+) __HAL_ADC_ENABLE : Enable the ADC peripheral + (+) __HAL_ADC_DISABLE : Disable the ADC peripheral + (+) __HAL_ADC_ENABLE_IT: Enable the ADC end of conversion interrupt + (+) __HAL_ADC_DISABLE_IT: Disable the ADC end of conversion interrupt + (+) __HAL_ADC_GET_IT_SOURCE: Check if the specified ADC interrupt source is enabled or disabled + (+) __HAL_ADC_CLEAR_FLAG: Clear the ADC's pending flags + (+) __HAL_ADC_GET_FLAG: Get the selected ADC's flag status + (+) ADC_GET_RESOLUTION: Return resolution bits in CR1 register + + *** Callback functions *** + ============================== + [..] + (@) Callback functions must be implemented in user program: + (+@) HAL_ADC_ErrorCallback() + (+@) HAL_ADC_LevelOutOfWindowCallback() (callback of analog watchdog) + (+@) HAL_ADC_ConvCpltCallback() + (+@) HAL_ADC_ConvHalfCpltCallback + + (@) You can refer to the ADC HAL driver header file for more useful macros + + *** Deinitialization of ADC *** + ============================================================================== + [..] + (#) Disable the ADC interface + (++) ADC clock can be hard reset and disabled at RCC top level. + (++) Hard reset of ADC peripherals + using macro __HAL_RCC_ADC_FORCE_RESET(), __HAL_RCC_ADC_RELEASE_RESET(). + (++) ADC clock disable using the equivalent macro/functions as configuration step. + (+++) Example: + Into HAL_ADC_MspDeInit() (recommended code location) or with + other device clock parameters configuration: + (+++) HAL_RCC_GetOscConfig(&RCC_OscInitStructure); + (+++) RCC_OscInitStructure.OscillatorType = RCC_OSCILLATORTYPE_HSI; + (+++) RCC_OscInitStructure.HSIState = RCC_HSI_OFF; (if not used for system clock) + (+++) HAL_RCC_OscConfig(&RCC_OscInitStructure); + + (#) ADC pins configuration + (++) Disable the clock for the ADC GPIOs using macro __HAL_RCC_GPIOx_CLK_DISABLE() + + (#) Optionally, in case of usage of ADC with interruptions: + (++) Disable the NVIC for ADC using function HAL_NVIC_DisableIRQ(ADCx_IRQn) + + (#) Optionally, in case of usage of DMA: + (++) Deinitialize the DMA using function HAL_DMA_DeInit(). + (++) Disable the NVIC for DMA using function HAL_NVIC_DisableIRQ(DMAx_Channelx_IRQn) + + *** Callback registration *** + ============================================================================== + [..] + + The compilation flag USE_HAL_ADC_REGISTER_CALLBACKS, when set to 1, + allows the user to configure dynamically the driver callbacks. + Use Functions HAL_ADC_RegisterCallback() + to register an interrupt callback. + [..] + + Function HAL_ADC_RegisterCallback() allows to register following callbacks: + (+) ConvCpltCallback : ADC conversion complete callback + (+) ConvHalfCpltCallback : ADC conversion DMA half-transfer callback + (+) LevelOutOfWindowCallback : ADC analog watchdog 1 callback + (+) ErrorCallback : ADC error callback + (+) InjectedConvCpltCallback : ADC group injected conversion complete callback + (+) InjectedQueueOverflowCallback : ADC group injected context queue overflow callback + (+) LevelOutOfWindow2Callback : ADC analog watchdog 2 callback + (+) LevelOutOfWindow3Callback : ADC analog watchdog 3 callback + (+) EndOfSamplingCallback : ADC end of sampling callback + (+) MspInitCallback : ADC Msp Init callback + (+) MspDeInitCallback : ADC Msp DeInit callback + This function takes as parameters the HAL peripheral handle, the Callback ID + and a pointer to the user callback function. + [..] + + Use function HAL_ADC_UnRegisterCallback to reset a callback to the default + weak function. + [..] + + HAL_ADC_UnRegisterCallback takes as parameters the HAL peripheral handle, + and the Callback ID. + This function allows to reset following callbacks: + (+) ConvCpltCallback : ADC conversion complete callback + (+) ConvHalfCpltCallback : ADC conversion DMA half-transfer callback + (+) LevelOutOfWindowCallback : ADC analog watchdog 1 callback + (+) ErrorCallback : ADC error callback + (+) InjectedConvCpltCallback : ADC group injected conversion complete callback + (+) InjectedQueueOverflowCallback : ADC group injected context queue overflow callback + (+) LevelOutOfWindow2Callback : ADC analog watchdog 2 callback + (+) LevelOutOfWindow3Callback : ADC analog watchdog 3 callback + (+) EndOfSamplingCallback : ADC end of sampling callback + (+) MspInitCallback : ADC Msp Init callback + (+) MspDeInitCallback : ADC Msp DeInit callback + [..] + + By default, after the HAL_ADC_Init() and when the state is HAL_ADC_STATE_RESET + all callbacks are set to the corresponding weak functions: + examples HAL_ADC_ConvCpltCallback(), HAL_ADC_ErrorCallback(). + Exception done for MspInit and MspDeInit functions that are + reset to the legacy weak functions in the HAL_ADC_Init()/ HAL_ADC_DeInit() only when + these callbacks are null (not registered beforehand). + [..] + + If MspInit or MspDeInit are not null, the HAL_ADC_Init()/ HAL_ADC_DeInit() + keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state. + [..] + + Callbacks can be registered/unregistered in HAL_ADC_STATE_READY state only. + Exception done MspInit/MspDeInit functions that can be registered/unregistered + in HAL_ADC_STATE_READY or HAL_ADC_STATE_RESET state, + thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit. + [..] + + Then, the user first registers the MspInit/MspDeInit user callbacks + using HAL_ADC_RegisterCallback() before calling HAL_ADC_DeInit() + or HAL_ADC_Init() function. + [..] + + When the compilation flag USE_HAL_ADC_REGISTER_CALLBACKS is set to 0 or + not defined, the callback registration feature is not available and all callbacks + are set to the corresponding weak functions. + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup ADC ADC + * @brief ADC driver modules + * @{ + */ + +#ifdef HAL_ADC_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @addtogroup ADC_Private_Functions + * @{ + */ +/* Private function prototypes -----------------------------------------------*/ +static void ADC_Init(ADC_HandleTypeDef* hadc); +static void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma); +static void ADC_DMAError(DMA_HandleTypeDef *hdma); +static void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup ADC_Exported_Functions ADC Exported Functions + * @{ + */ + +/** @defgroup ADC_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Initialize and configure the ADC. + (+) De-initialize the ADC. + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the ADCx peripheral according to the specified parameters + * in the ADC_InitStruct and initializes the ADC MSP. + * + * @note This function is used to configure the global features of the ADC ( + * ClockPrescaler, Resolution, Data Alignment and number of conversion), however, + * the rest of the configuration parameters are specific to the regular + * channels group (scan mode activation, continuous mode activation, + * External trigger source and edge, DMA continuous request after the + * last transfer and End of conversion selection). + * + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc) +{ + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + + /* Check ADC handle */ + if(hadc == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + assert_param(IS_ADC_CLOCKPRESCALER(hadc->Init.ClockPrescaler)); + assert_param(IS_ADC_RESOLUTION(hadc->Init.Resolution)); + assert_param(IS_ADC_SCAN_MODE(hadc->Init.ScanConvMode)); + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + assert_param(IS_ADC_EXT_TRIG(hadc->Init.ExternalTrigConv)); + assert_param(IS_ADC_DATA_ALIGN(hadc->Init.DataAlign)); + assert_param(IS_ADC_REGULAR_LENGTH(hadc->Init.NbrOfConversion)); + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests)); + assert_param(IS_ADC_EOCSelection(hadc->Init.EOCSelection)); + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DiscontinuousConvMode)); + + if(hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) + { + assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + } + + if(hadc->State == HAL_ADC_STATE_RESET) + { +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + /* Init the ADC Callback settings */ + hadc->ConvCpltCallback = HAL_ADC_ConvCpltCallback; /* Legacy weak callback */ + hadc->ConvHalfCpltCallback = HAL_ADC_ConvHalfCpltCallback; /* Legacy weak callback */ + hadc->LevelOutOfWindowCallback = HAL_ADC_LevelOutOfWindowCallback; /* Legacy weak callback */ + hadc->ErrorCallback = HAL_ADC_ErrorCallback; /* Legacy weak callback */ + hadc->InjectedConvCpltCallback = HAL_ADCEx_InjectedConvCpltCallback; /* Legacy weak callback */ + if (hadc->MspInitCallback == NULL) + { + hadc->MspInitCallback = HAL_ADC_MspInit; /* Legacy weak MspInit */ + } + + /* Init the low level hardware */ + hadc->MspInitCallback(hadc); +#else + /* Init the low level hardware */ + HAL_ADC_MspInit(hadc); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + + /* Initialize ADC error code */ + ADC_CLEAR_ERRORCODE(hadc); + + /* Allocate lock resource and initialize it */ + hadc->Lock = HAL_UNLOCKED; + } + + /* Configuration of ADC parameters if previous preliminary actions are */ + /* correctly completed. */ + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL)) + { + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + HAL_ADC_STATE_BUSY_INTERNAL); + + /* Set ADC parameters */ + ADC_Init(hadc); + + /* Set ADC error code to none */ + ADC_CLEAR_ERRORCODE(hadc); + + /* Set the ADC state */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_BUSY_INTERNAL, + HAL_ADC_STATE_READY); + } + else + { + tmp_hal_status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return tmp_hal_status; +} + +/** + * @brief Deinitializes the ADCx peripheral registers to their default reset values. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef* hadc) +{ + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + + /* Check ADC handle */ + if(hadc == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + + /* Set ADC state */ + SET_BIT(hadc->State, HAL_ADC_STATE_BUSY_INTERNAL); + + /* Stop potential conversion on going, on regular and injected groups */ + /* Disable ADC peripheral */ + __HAL_ADC_DISABLE(hadc); + + /* Configuration of ADC parameters if previous preliminary actions are */ + /* correctly completed. */ + if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + { +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + if (hadc->MspDeInitCallback == NULL) + { + hadc->MspDeInitCallback = HAL_ADC_MspDeInit; /* Legacy weak MspDeInit */ + } + + /* DeInit the low level hardware: RCC clock, NVIC */ + hadc->MspDeInitCallback(hadc); +#else + /* DeInit the low level hardware: RCC clock, NVIC */ + HAL_ADC_MspDeInit(hadc); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + + /* Set ADC error code to none */ + ADC_CLEAR_ERRORCODE(hadc); + + /* Set ADC state */ + hadc->State = HAL_ADC_STATE_RESET; + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return tmp_hal_status; +} + +/** + * @brief Initializes the ADC MSP. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval None + */ +__weak void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hadc); + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_ADC_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes the ADC MSP. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval None + */ +__weak void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hadc); + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_ADC_MspDeInit could be implemented in the user file + */ +} + +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +/** + * @brief Register a User ADC Callback + * To be used instead of the weak predefined callback + * @param hadc Pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param CallbackID ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_ADC_CONVERSION_COMPLETE_CB_ID ADC conversion complete callback ID + * @arg @ref HAL_ADC_CONVERSION_HALF_CB_ID ADC conversion DMA half-transfer callback ID + * @arg @ref HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID ADC analog watchdog 1 callback ID + * @arg @ref HAL_ADC_ERROR_CB_ID ADC error callback ID + * @arg @ref HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID ADC group injected conversion complete callback ID + * @arg @ref HAL_ADC_INJ_QUEUE_OVEFLOW_CB_ID ADC group injected context queue overflow callback ID + * @arg @ref HAL_ADC_MSPINIT_CB_ID ADC Msp Init callback ID + * @arg @ref HAL_ADC_MSPDEINIT_CB_ID ADC Msp DeInit callback ID + * @param pCallback pointer to the Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_RegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID, pADC_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + if ((hadc->State & HAL_ADC_STATE_READY) != 0UL) + { + switch (CallbackID) + { + case HAL_ADC_CONVERSION_COMPLETE_CB_ID : + hadc->ConvCpltCallback = pCallback; + break; + + case HAL_ADC_CONVERSION_HALF_CB_ID : + hadc->ConvHalfCpltCallback = pCallback; + break; + + case HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID : + hadc->LevelOutOfWindowCallback = pCallback; + break; + + case HAL_ADC_ERROR_CB_ID : + hadc->ErrorCallback = pCallback; + break; + + case HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID : + hadc->InjectedConvCpltCallback = pCallback; + break; + + case HAL_ADC_MSPINIT_CB_ID : + hadc->MspInitCallback = pCallback; + break; + + case HAL_ADC_MSPDEINIT_CB_ID : + hadc->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (HAL_ADC_STATE_RESET == hadc->State) + { + switch (CallbackID) + { + case HAL_ADC_MSPINIT_CB_ID : + hadc->MspInitCallback = pCallback; + break; + + case HAL_ADC_MSPDEINIT_CB_ID : + hadc->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief Unregister a ADC Callback + * ADC callback is redirected to the weak predefined callback + * @param hadc Pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param CallbackID ID of the callback to be unregistered + * This parameter can be one of the following values: + * @arg @ref HAL_ADC_CONVERSION_COMPLETE_CB_ID ADC conversion complete callback ID + * @arg @ref HAL_ADC_CONVERSION_HALF_CB_ID ADC conversion DMA half-transfer callback ID + * @arg @ref HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID ADC analog watchdog 1 callback ID + * @arg @ref HAL_ADC_ERROR_CB_ID ADC error callback ID + * @arg @ref HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID ADC group injected conversion complete callback ID + * @arg @ref HAL_ADC_INJ_QUEUE_OVEFLOW_CB_ID ADC group injected context queue overflow callback ID + * @arg @ref HAL_ADC_MSPINIT_CB_ID ADC Msp Init callback ID + * @arg @ref HAL_ADC_MSPDEINIT_CB_ID ADC Msp DeInit callback ID + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_UnRegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + if ((hadc->State & HAL_ADC_STATE_READY) != 0UL) + { + switch (CallbackID) + { + case HAL_ADC_CONVERSION_COMPLETE_CB_ID : + hadc->ConvCpltCallback = HAL_ADC_ConvCpltCallback; + break; + + case HAL_ADC_CONVERSION_HALF_CB_ID : + hadc->ConvHalfCpltCallback = HAL_ADC_ConvHalfCpltCallback; + break; + + case HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID : + hadc->LevelOutOfWindowCallback = HAL_ADC_LevelOutOfWindowCallback; + break; + + case HAL_ADC_ERROR_CB_ID : + hadc->ErrorCallback = HAL_ADC_ErrorCallback; + break; + + case HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID : + hadc->InjectedConvCpltCallback = HAL_ADCEx_InjectedConvCpltCallback; + break; + + case HAL_ADC_MSPINIT_CB_ID : + hadc->MspInitCallback = HAL_ADC_MspInit; /* Legacy weak MspInit */ + break; + + case HAL_ADC_MSPDEINIT_CB_ID : + hadc->MspDeInitCallback = HAL_ADC_MspDeInit; /* Legacy weak MspDeInit */ + break; + + default : + /* Update the error code */ + hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (HAL_ADC_STATE_RESET == hadc->State) + { + switch (CallbackID) + { + case HAL_ADC_MSPINIT_CB_ID : + hadc->MspInitCallback = HAL_ADC_MspInit; /* Legacy weak MspInit */ + break; + + case HAL_ADC_MSPDEINIT_CB_ID : + hadc->MspDeInitCallback = HAL_ADC_MspDeInit; /* Legacy weak MspDeInit */ + break; + + default : + /* Update the error code */ + hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + + +/** + * @} + */ + +/** @defgroup ADC_Exported_Functions_Group2 IO operation functions + * @brief IO operation functions + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Start conversion of regular channel. + (+) Stop conversion of regular channel. + (+) Start conversion of regular channel and enable interrupt. + (+) Stop conversion of regular channel and disable interrupt. + (+) Start conversion of regular channel and enable DMA transfer. + (+) Stop conversion of regular channel and disable DMA transfer. + (+) Handle ADC interrupt request. + +@endverbatim + * @{ + */ + +/** + * @brief Enables ADC and starts conversion of the regular channels. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc) +{ + __IO uint32_t counter = 0; + + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Enable the ADC peripheral */ + /* Check if ADC peripheral is disabled in order to enable it and wait during + Tstab time the ADC's stabilization */ + if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) + { + /* Enable the Peripheral */ + __HAL_ADC_ENABLE(hadc); + + /* Delay for ADC stabilization time */ + /* Compute number of CPU cycles to wait for */ + counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); + while(counter != 0) + { + counter--; + } + } + + /* Start conversion if ADC is effectively enabled */ + if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Set ADC state */ + /* - Clear state bitfield related to regular group conversion results */ + /* - Set state bitfield related to regular group operation */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, + HAL_ADC_STATE_REG_BUSY); + + /* If conversions on group regular are also triggering group injected, */ + /* update ADC state. */ + if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET) + { + ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY); + } + + /* State machine update: Check if an injected conversion is ongoing */ + if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + { + /* Reset ADC error code fields related to conversions on group regular */ + CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA)); + } + else + { + /* Reset ADC all error code fields */ + ADC_CLEAR_ERRORCODE(hadc); + } + + /* Process unlocked */ + /* Unlock before starting ADC conversions: in case of potential */ + /* interruption, to let the process to ADC IRQ Handler. */ + __HAL_UNLOCK(hadc); + + /* Clear regular group 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_OVR); + + /* Check if Multimode enabled */ + if(HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI)) + { + /* if no external trigger present enable software conversion of regular channels */ + if((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET) + { + /* Enable the selected ADC software conversion for regular group */ + hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + } + } + else + { + /* if instance of handle correspond to ADC1 and no external trigger present enable software conversion of regular channels */ + if((hadc->Instance == ADC1) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) + { + /* Enable the selected ADC software conversion for regular group */ + hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + } + + /* if dual mode is selected, ADC3 works independently. */ + /* check if the mode selected is not triple */ + if( HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI_4) ) + { + /* if instance of handle correspond to ADC3 and no external trigger present enable software conversion of regular channels */ + if((hadc->Instance == ADC3) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) + { + /* Enable the selected ADC software conversion for regular group */ + hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + } + } + } + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Disables ADC and stop conversion of regular channels. + * + * @note Caution: This function will stop also injected channels. + * + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * + * @retval HAL status. + */ +HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Stop potential conversion on going, on regular and injected groups */ + /* Disable ADC peripheral */ + __HAL_ADC_DISABLE(hadc); + + /* Check if ADC is effectively disabled */ + if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + HAL_ADC_STATE_READY); + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Poll for regular conversion complete + * @note ADC conversion flags EOS (end of sequence) and EOC (end of + * conversion) are cleared by this function. + * @note This function cannot be used in a particular setup: ADC configured + * in DMA mode and polling for end of each conversion (ADC init + * parameter "EOCSelection" set to ADC_EOC_SINGLE_CONV). + * In this case, DMA resets the flag EOC and polling cannot be + * performed on each conversion. Nevertheless, polling can still + * be performed on the complete sequence. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param Timeout Timeout value in millisecond. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout) +{ + uint32_t tickstart = 0; + + /* Verification that ADC configuration is compliant with polling for */ + /* 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 polling for end of each conversion. */ + if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_EOCS) && + HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_DMA) ) + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + return HAL_ERROR; + } + + /* Get tick */ + tickstart = HAL_GetTick(); + + /* Check End of conversion flag */ + while(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))) + { + /* Check if timeout is disabled (set to infinite wait) */ + if(Timeout != HAL_MAX_DELAY) + { + if((Timeout == 0) || ((HAL_GetTick() - tickstart ) > Timeout)) + { + /* New check to avoid false timeout detection in case of preemption */ + if(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))) + { + /* Update ADC state machine to timeout */ + SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT); + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + return HAL_TIMEOUT; + } + } + } + } + + /* Clear regular group conversion flag */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC); + + /* Update ADC state machine */ + SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); + + /* Determine whether any further conversion upcoming on group regular */ + /* by external trigger, continuous mode or scan sequence on going. */ + /* Note: On STM32F7, there is no independent flag of end of sequence. */ + /* The test of scan sequence on going is done either with scan */ + /* sequence disabled or with end of conversion flag set to */ + /* of end of sequence. */ + if(ADC_IS_SOFTWARE_START_REGULAR(hadc) && + (hadc->Init.ContinuousConvMode == DISABLE) && + (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + { + /* Set ADC state */ + CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY); + + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + { + SET_BIT(hadc->State, HAL_ADC_STATE_READY); + } + } + + /* Return ADC state */ + return HAL_OK; +} + +/** + * @brief Poll for conversion event + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param EventType the ADC event type. + * This parameter can be one of the following values: + * @arg ADC_AWD_EVENT: ADC Analog watch Dog event. + * @arg ADC_OVR_EVENT: ADC Overrun event. + * @param Timeout Timeout value in millisecond. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout) +{ + uint32_t tickstart = 0; + + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + assert_param(IS_ADC_EVENT_TYPE(EventType)); + + /* Get tick */ + tickstart = HAL_GetTick(); + + /* Check selected event flag */ + while(!(__HAL_ADC_GET_FLAG(hadc,EventType))) + { + /* Check for the Timeout */ + if(Timeout != HAL_MAX_DELAY) + { + if((Timeout == 0) || ((HAL_GetTick() - tickstart ) > Timeout)) + { + /* New check to avoid false timeout detection in case of preemption */ + if(!(__HAL_ADC_GET_FLAG(hadc,EventType))) + { + /* Update ADC state machine to timeout */ + SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT); + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + return HAL_TIMEOUT; + } + } + } + } + + /* Analog watchdog (level out of window) event */ + if(EventType == ADC_AWD_EVENT) + { + /* Set ADC state */ + SET_BIT(hadc->State, HAL_ADC_STATE_AWD1); + + /* Clear ADC analog watchdog flag */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD); + } + /* Overrun event */ + else + { + /* Set ADC state */ + SET_BIT(hadc->State, HAL_ADC_STATE_REG_OVR); + /* Set ADC error code to overrun */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_OVR); + + /* Clear ADC overrun flag */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR); + } + + /* Return ADC state */ + return HAL_OK; +} + + +/** + * @brief Enables the interrupt and starts ADC conversion of regular channels. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval HAL status. + */ +HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc) +{ + __IO uint32_t counter = 0; + + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Enable the ADC peripheral */ + /* Check if ADC peripheral is disabled in order to enable it and wait during + Tstab time the ADC's stabilization */ + if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) + { + /* Enable the Peripheral */ + __HAL_ADC_ENABLE(hadc); + + /* Delay for ADC stabilization time */ + /* Compute number of CPU cycles to wait for */ + counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); + while(counter != 0) + { + counter--; + } + } + + /* Start conversion if ADC is effectively enabled */ + if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Set ADC state */ + /* - Clear state bitfield related to regular group conversion results */ + /* - Set state bitfield related to regular group operation */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, + HAL_ADC_STATE_REG_BUSY); + + /* If conversions on group regular are also triggering group injected, */ + /* update ADC state. */ + if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET) + { + ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY); + } + + /* State machine update: Check if an injected conversion is ongoing */ + if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + { + /* Reset ADC error code fields related to conversions on group regular */ + CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA)); + } + else + { + /* Reset ADC all error code fields */ + ADC_CLEAR_ERRORCODE(hadc); + } + + /* Process unlocked */ + /* Unlock before starting ADC conversions: in case of potential */ + /* interruption, to let the process to ADC IRQ Handler. */ + __HAL_UNLOCK(hadc); + + /* Clear regular group 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_OVR); + + /* Enable end of conversion interrupt for regular group */ + __HAL_ADC_ENABLE_IT(hadc, (ADC_IT_EOC | ADC_IT_OVR)); + + /* Check if Multimode enabled */ + if(HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI)) + { + /* if no external trigger present enable software conversion of regular channels */ + if((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET) + { + /* Enable the selected ADC software conversion for regular group */ + hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + } + } + else + { + /* if instance of handle correspond to ADC1 and no external trigger present enable software conversion of regular channels */ + if((hadc->Instance == ADC1) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) + { + /* Enable the selected ADC software conversion for regular group */ + hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + } + + /* if dual mode is selected, ADC3 works independently. */ + /* check if the mode selected is not triple */ + if( HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI_4) ) + { + /* if instance of handle correspond to ADC3 and no external trigger present enable software conversion of regular channels */ + if((hadc->Instance == ADC3) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) + { + /* Enable the selected ADC software conversion for regular group */ + hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + } + } + } + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Disables the interrupt and stop ADC conversion of regular channels. + * + * @note Caution: This function will stop also injected channels. + * + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval HAL status. + */ +HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc) +{ + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Stop potential conversion on going, on regular and injected groups */ + /* Disable ADC peripheral */ + __HAL_ADC_DISABLE(hadc); + + /* Check if ADC is effectively disabled */ + if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Disable ADC end of conversion interrupt for regular group */ + __HAL_ADC_DISABLE_IT(hadc, (ADC_IT_EOC | ADC_IT_OVR)); + + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + HAL_ADC_STATE_READY); + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Handles ADC interrupt request + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval None + */ +void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc) +{ + uint32_t tmp1 = 0, tmp2 = 0; + + uint32_t tmp_sr = hadc->Instance->SR; + uint32_t tmp_cr1 = hadc->Instance->CR1; + + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + assert_param(IS_ADC_REGULAR_LENGTH(hadc->Init.NbrOfConversion)); + assert_param(IS_ADC_EOCSelection(hadc->Init.EOCSelection)); + + tmp1 = tmp_sr & ADC_FLAG_EOC; + tmp2 = tmp_cr1 & ADC_IT_EOC; + + /* Check End of conversion flag for regular channels */ + if(tmp1 && tmp2) + { + /* Update state machine on conversion status if not in error state */ + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL)) + { + /* Set ADC state */ + SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); + } + + /* Determine whether any further conversion upcoming on group regular */ + /* by external trigger, continuous mode or scan sequence on going. */ + /* Note: On STM32F7, there is no independent flag of end of sequence. */ + /* The test of scan sequence on going is done either with scan */ + /* sequence disabled or with end of conversion flag set to */ + /* of end of sequence. */ + if(ADC_IS_SOFTWARE_START_REGULAR(hadc) && + (hadc->Init.ContinuousConvMode == DISABLE) && + (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + { + /* Disable ADC end of single conversion interrupt on group regular */ + /* Note: Overrun interrupt was enabled with EOC interrupt in */ + /* HAL_ADC_Start_IT(), but is not disabled here because can be used */ + /* by overrun IRQ process below. */ + __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC); + + /* Set ADC state */ + CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY); + + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + { + SET_BIT(hadc->State, HAL_ADC_STATE_READY); + } + } + + /* Conversion complete callback */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + hadc->ConvCpltCallback(hadc); +#else + HAL_ADC_ConvCpltCallback(hadc); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + + /* Clear regular group conversion flag */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC); + } + + tmp1 = tmp_sr & ADC_FLAG_JEOC; + tmp2 = tmp_cr1 & ADC_IT_JEOC; + /* Check End of conversion flag for injected channels */ + if(tmp1 && tmp2) + { + /* Update state machine on conversion status if not in error state */ + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL)) + { + /* Set ADC state */ + SET_BIT(hadc->State, HAL_ADC_STATE_INJ_EOC); + } + + /* Determine whether any further conversion upcoming on group injected */ + /* by external trigger, scan sequence on going or by automatic injected */ + /* conversion from group regular (same conditions as group regular */ + /* interruption disabling above). */ + if(ADC_IS_SOFTWARE_START_INJECTED(hadc) && + (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS)) && + (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) && + (ADC_IS_SOFTWARE_START_REGULAR(hadc) && + (hadc->Init.ContinuousConvMode == DISABLE)))) + { + /* Disable ADC end of single conversion interrupt on group injected */ + __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC); + + /* Set ADC state */ + CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY); + + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY)) + { + SET_BIT(hadc->State, HAL_ADC_STATE_READY); + } + } + + /* Conversion complete callback */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + hadc->InjectedConvCpltCallback(hadc); +#else + HAL_ADCEx_InjectedConvCpltCallback(hadc); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + + /* Clear injected group conversion flag */ + __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_JSTRT | ADC_FLAG_JEOC)); + } + + tmp1 = tmp_sr & ADC_FLAG_AWD; + tmp2 = tmp_cr1 & ADC_IT_AWD; + /* Check Analog watchdog flag */ + if(tmp1 && tmp2) + { + if(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_AWD)) + { + /* Set ADC state */ + SET_BIT(hadc->State, HAL_ADC_STATE_AWD1); + + /* Level out of window callback */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + hadc->LevelOutOfWindowCallback(hadc); +#else + HAL_ADC_LevelOutOfWindowCallback(hadc); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + + + /* Clear the ADC analog watchdog flag */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD); + } + } + + tmp1 = tmp_sr & ADC_FLAG_OVR; + tmp2 = tmp_cr1 & ADC_IT_OVR; + /* Check Overrun flag */ + if(tmp1 && tmp2) + { + /* Note: On STM32F7, ADC overrun can be set through other parameters */ + /* refer to description of parameter "EOCSelection" for more */ + /* details. */ + + /* Set ADC error code to overrun */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_OVR); + + /* Clear ADC overrun flag */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR); + + /* Error callback */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + hadc->ErrorCallback(hadc); +#else + HAL_ADC_ErrorCallback(hadc); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + + /* Clear the Overrun flag */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR); + } +} + +/** + * @brief Enables ADC DMA request after last transfer (Single-ADC mode) and enables ADC peripheral + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param pData The destination Buffer address. + * @param Length The length of data to be transferred from ADC peripheral to memory. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length) +{ + __IO uint32_t counter = 0; + + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Enable the ADC peripheral */ + /* Check if ADC peripheral is disabled in order to enable it and wait during + Tstab time the ADC's stabilization */ + if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) + { + /* Enable the Peripheral */ + __HAL_ADC_ENABLE(hadc); + + /* Delay for ADC stabilization time */ + /* Compute number of CPU cycles to wait for */ + counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); + while(counter != 0) + { + counter--; + } + } + + /* Start conversion if ADC is effectively enabled */ + if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Set ADC state */ + /* - Clear state bitfield related to regular group conversion results */ + /* - Set state bitfield related to regular group operation */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, + HAL_ADC_STATE_REG_BUSY); + + /* If conversions on group regular are also triggering group injected, */ + /* update ADC state. */ + if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET) + { + ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY); + } + + /* State machine update: Check if an injected conversion is ongoing */ + if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + { + /* Reset ADC error code fields related to conversions on group regular */ + CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA)); + } + else + { + /* Reset ADC all error code fields */ + ADC_CLEAR_ERRORCODE(hadc); + } + + /* Process unlocked */ + /* Unlock before starting ADC conversions: in case of potential */ + /* interruption, to let the process to ADC IRQ Handler. */ + __HAL_UNLOCK(hadc); + + /* Set the DMA transfer complete callback */ + hadc->DMA_Handle->XferCpltCallback = ADC_DMAConvCplt; + + /* Set the DMA half transfer complete callback */ + hadc->DMA_Handle->XferHalfCpltCallback = ADC_DMAHalfConvCplt; + + /* Set the DMA error callback */ + hadc->DMA_Handle->XferErrorCallback = ADC_DMAError; + + + /* Manage ADC and DMA start: ADC overrun interruption, DMA start, ADC */ + /* start (in case of SW start): */ + + /* Clear regular group 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_OVR); + + /* Enable ADC overrun interrupt */ + __HAL_ADC_ENABLE_IT(hadc, ADC_IT_OVR); + + /* Enable ADC DMA mode */ + hadc->Instance->CR2 |= ADC_CR2_DMA; + + /* Start the DMA channel */ + HAL_DMA_Start_IT(hadc->DMA_Handle, (uint32_t)&hadc->Instance->DR, (uint32_t)pData, Length); + + /* Check if Multimode enabled */ + if(HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI)) + { + /* if no external trigger present enable software conversion of regular channels */ + if((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET) + { + /* Enable the selected ADC software conversion for regular group */ + hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + } + } + else + { + /* if instance of handle correspond to ADC1 and no external trigger present enable software conversion of regular channels */ + if((hadc->Instance == ADC1) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) + { + /* Enable the selected ADC software conversion for regular group */ + hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + } + /* if dual mode is selected, ADC3 works independently. */ + /* check if the mode selected is not triple */ + if( HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI_4) ) + { + /* if instance of handle correspond to ADC3 and no external trigger present enable software conversion of regular channels */ + if((hadc->Instance == ADC3) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) + { + /* Enable the selected ADC software conversion for regular group */ + hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + } + } + } + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Disables ADC DMA (Single-ADC mode) and disables ADC peripheral + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc) +{ + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Stop potential conversion on going, on regular and injected groups */ + /* Disable ADC peripheral */ + __HAL_ADC_DISABLE(hadc); + + /* Check if ADC is effectively disabled */ + if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Disable the selected ADC DMA mode */ + hadc->Instance->CR2 &= ~ADC_CR2_DMA; + + /* Disable the DMA channel (in case of DMA in circular mode or stop while */ + /* DMA transfer is on going) */ + if (hadc->DMA_Handle->State == HAL_DMA_STATE_BUSY) + { + tmp_hal_status = HAL_DMA_Abort(hadc->DMA_Handle); + + /* Check if DMA channel effectively disabled */ + if (tmp_hal_status != HAL_OK) + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA); + } + } + + /* Disable ADC overrun interrupt */ + __HAL_ADC_DISABLE_IT(hadc, ADC_IT_OVR); + + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + HAL_ADC_STATE_READY); + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return tmp_hal_status; +} + +/** + * @brief Gets the converted value from data register of regular channel. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval Converted value + */ +uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc) +{ + /* Return the selected ADC converted value */ + return hadc->Instance->DR; +} + +/** + * @brief Regular conversion complete callback in non blocking mode + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval None + */ +__weak void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hadc); + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_ADC_ConvCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Regular conversion half DMA transfer callback in non blocking mode + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval None + */ +__weak void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hadc); + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_ADC_ConvHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Analog watchdog callback in non blocking mode + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval None + */ +__weak void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hadc); + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_ADC_LevelOoutOfWindowCallback could be implemented in the user file + */ +} + +/** + * @brief Error ADC callback. + * @note In case of error due to overrun when using ADC with DMA transfer + * (HAL ADC handle parameter "ErrorCode" to state "HAL_ADC_ERROR_OVR"): + * - Reinitialize the DMA using function "HAL_ADC_Stop_DMA()". + * - If needed, restart a new ADC conversion using function + * "HAL_ADC_Start_DMA()" + * (this function is also clearing overrun flag) + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval None + */ +__weak void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hadc); + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_ADC_ErrorCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** @defgroup ADC_Exported_Functions_Group3 Peripheral Control functions + * @brief Peripheral Control functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure regular channels. + (+) Configure injected channels. + (+) Configure multimode. + (+) Configure the analog watch dog. + +@endverbatim + * @{ + */ + + /** + * @brief Configures for the selected ADC regular channel its corresponding + * rank in the sequencer and its sample time. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param sConfig ADC configuration structure. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig) +{ + __IO uint32_t counter = 0; + + /* Check the parameters */ + assert_param(IS_ADC_CHANNEL(sConfig->Channel)); + assert_param(IS_ADC_REGULAR_RANK(sConfig->Rank)); + assert_param(IS_ADC_SAMPLE_TIME(sConfig->SamplingTime)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* if ADC_Channel_10 ... ADC_Channel_18 is selected */ + if ((sConfig->Channel > ADC_CHANNEL_9) && (sConfig->Channel != ADC_INTERNAL_NONE)) + { + /* Clear the old sample time */ + hadc->Instance->SMPR1 &= ~ADC_SMPR1(ADC_SMPR1_SMP10, sConfig->Channel); + + if (sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) + { + /* Set the new sample time */ + hadc->Instance->SMPR1 |= ADC_SMPR1(sConfig->SamplingTime, ADC_CHANNEL_18); + } + else + { + /* Set the new sample time */ + hadc->Instance->SMPR1 |= ADC_SMPR1(sConfig->SamplingTime, sConfig->Channel); + } + } + else /* ADC_Channel include in ADC_Channel_[0..9] */ + { + /* Clear the old sample time */ + hadc->Instance->SMPR2 &= ~ADC_SMPR2(ADC_SMPR2_SMP0, sConfig->Channel); + + /* Set the new sample time */ + hadc->Instance->SMPR2 |= ADC_SMPR2(sConfig->SamplingTime, sConfig->Channel); + } + + /* For Rank 1 to 6 */ + if (sConfig->Rank < 7) + { + /* Clear the old SQx bits for the selected rank */ + hadc->Instance->SQR3 &= ~ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank); + + /* Set the SQx bits for the selected rank */ + hadc->Instance->SQR3 |= ADC_SQR3_RK(sConfig->Channel, sConfig->Rank); + } + /* For Rank 7 to 12 */ + else if (sConfig->Rank < 13) + { + /* Clear the old SQx bits for the selected rank */ + hadc->Instance->SQR2 &= ~ADC_SQR2_RK(ADC_SQR2_SQ7, sConfig->Rank); + + /* Set the SQx bits for the selected rank */ + hadc->Instance->SQR2 |= ADC_SQR2_RK(sConfig->Channel, sConfig->Rank); + } + /* For Rank 13 to 16 */ + else + { + /* Clear the old SQx bits for the selected rank */ + hadc->Instance->SQR1 &= ~ADC_SQR1_RK(ADC_SQR1_SQ13, sConfig->Rank); + + /* Set the SQx bits for the selected rank */ + hadc->Instance->SQR1 |= ADC_SQR1_RK(sConfig->Channel, sConfig->Rank); + } + + /* if no internal channel selected */ + if ((hadc->Instance == ADC1) && (sConfig->Channel == ADC_INTERNAL_NONE)) + { + /* Disable the VBAT & TSVREFE channel*/ + ADC->CCR &= ~(ADC_CCR_VBATE | ADC_CCR_TSVREFE); + } + + /* if ADC1 Channel_18 is selected enable VBAT Channel */ + if ((hadc->Instance == ADC1) && (sConfig->Channel == ADC_CHANNEL_VBAT)) + { + /* Disable the TEMPSENSOR channel as it is multiplixed with the VBAT channel */ + ADC->CCR &= ~ADC_CCR_TSVREFE; + + /* Enable the VBAT channel*/ + ADC->CCR |= ADC_CCR_VBATE; + } + + /* if ADC1 Channel_18 or Channel_17 is selected enable TSVREFE Channel(Temperature sensor and VREFINT) */ + if ((hadc->Instance == ADC1) && ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || (sConfig->Channel == ADC_CHANNEL_VREFINT))) + { + /* Disable the VBAT channel as it is multiplixed with TEMPSENSOR channel */ + ADC->CCR &= ~ADC_CCR_VBATE; + + /* Enable the TSVREFE channel*/ + ADC->CCR |= ADC_CCR_TSVREFE; + + if(sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) + { + /* Delay for temperature sensor stabilization time */ + /* Compute number of CPU cycles to wait for */ + counter = (ADC_TEMPSENSOR_DELAY_US * (SystemCoreClock / 1000000)); + while(counter != 0) + { + counter--; + } + } + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Configures the analog watchdog. + * @note Analog watchdog thresholds can be modified while ADC conversion + * is on going. + * In this case, some constraints must be taken into account: + * the programmed threshold values are effective from the next + * ADC EOC (end of unitary conversion). + * Considering that registers write delay may happen due to + * bus activity, this might cause an uncertainty on the + * effective timing of the new programmed threshold values. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param AnalogWDGConfig pointer to an ADC_AnalogWDGConfTypeDef structure + * that contains the configuration information of ADC analog watchdog. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig) +{ +#ifdef USE_FULL_ASSERT + uint32_t tmp = 0; +#endif /* USE_FULL_ASSERT */ + + /* Check the parameters */ + assert_param(IS_ADC_ANALOG_WATCHDOG(AnalogWDGConfig->WatchdogMode)); + assert_param(IS_ADC_CHANNEL(AnalogWDGConfig->Channel)); + assert_param(IS_FUNCTIONAL_STATE(AnalogWDGConfig->ITMode)); + +#ifdef USE_FULL_ASSERT + tmp = ADC_GET_RESOLUTION(hadc); + assert_param(IS_ADC_RANGE(tmp, AnalogWDGConfig->HighThreshold)); + assert_param(IS_ADC_RANGE(tmp, AnalogWDGConfig->LowThreshold)); +#endif /* USE_FULL_ASSERT */ + + /* Process locked */ + __HAL_LOCK(hadc); + + if(AnalogWDGConfig->ITMode == ENABLE) + { + /* Enable the ADC Analog watchdog interrupt */ + __HAL_ADC_ENABLE_IT(hadc, ADC_IT_AWD); + } + else + { + /* Disable the ADC Analog watchdog interrupt */ + __HAL_ADC_DISABLE_IT(hadc, ADC_IT_AWD); + } + + /* Clear AWDEN, JAWDEN and AWDSGL bits */ + hadc->Instance->CR1 &= ~(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN | ADC_CR1_AWDEN); + + /* Set the analog watchdog enable mode */ + hadc->Instance->CR1 |= AnalogWDGConfig->WatchdogMode; + + /* Set the high threshold */ + hadc->Instance->HTR = AnalogWDGConfig->HighThreshold; + + /* Set the low threshold */ + hadc->Instance->LTR = AnalogWDGConfig->LowThreshold; + + /* Clear the Analog watchdog channel select bits */ + hadc->Instance->CR1 &= ~ADC_CR1_AWDCH; + + /* Set the Analog watchdog channel */ + hadc->Instance->CR1 |= (uint32_t)((uint16_t)(AnalogWDGConfig->Channel)); + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup ADC_Exported_Functions_Group4 ADC Peripheral State functions + * @brief ADC Peripheral State functions + * +@verbatim + =============================================================================== + ##### Peripheral State and errors functions ##### + =============================================================================== + [..] + This subsection provides functions allowing to + (+) Check the ADC state + (+) Check the ADC Error + +@endverbatim + * @{ + */ + +/** + * @brief return the ADC state + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval HAL state + */ +uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc) +{ + /* Return ADC state */ + return hadc->State; +} + +/** + * @brief Return the ADC error code + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval ADC Error Code + */ +uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc) +{ + return hadc->ErrorCode; +} + +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup ADC_Private_Functions ADC Private Functions + * @{ + */ + +/** + * @brief Initializes the ADCx peripheral according to the specified parameters + * in the ADC_InitStruct without initializing the ADC MSP. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval None + */ +static void ADC_Init(ADC_HandleTypeDef* hadc) +{ + /* Set ADC parameters */ + /* Set the ADC clock prescaler */ + ADC->CCR &= ~(ADC_CCR_ADCPRE); + ADC->CCR |= hadc->Init.ClockPrescaler; + + /* Set ADC scan mode */ + hadc->Instance->CR1 &= ~(ADC_CR1_SCAN); + hadc->Instance->CR1 |= ADC_CR1_SCANCONV(hadc->Init.ScanConvMode); + + /* Set ADC resolution */ + hadc->Instance->CR1 &= ~(ADC_CR1_RES); + hadc->Instance->CR1 |= hadc->Init.Resolution; + + /* Set ADC data alignment */ + hadc->Instance->CR2 &= ~(ADC_CR2_ALIGN); + hadc->Instance->CR2 |= hadc->Init.DataAlign; + + /* 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) + { + /* Select external trigger to start conversion */ + hadc->Instance->CR2 &= ~(ADC_CR2_EXTSEL); + hadc->Instance->CR2 |= hadc->Init.ExternalTrigConv; + + /* Select external trigger polarity */ + hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); + hadc->Instance->CR2 |= hadc->Init.ExternalTrigConvEdge; + } + else + { + /* Reset the external trigger */ + hadc->Instance->CR2 &= ~(ADC_CR2_EXTSEL); + hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); + } + + /* Enable or disable ADC continuous conversion mode */ + hadc->Instance->CR2 &= ~(ADC_CR2_CONT); + hadc->Instance->CR2 |= ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode); + + if(hadc->Init.DiscontinuousConvMode != DISABLE) + { + assert_param(IS_ADC_REGULAR_DISC_NUMBER(hadc->Init.NbrOfDiscConversion)); + + /* Enable the selected ADC regular discontinuous mode */ + hadc->Instance->CR1 |= (uint32_t)ADC_CR1_DISCEN; + + /* Set the number of channels to be converted in discontinuous mode */ + hadc->Instance->CR1 &= ~(ADC_CR1_DISCNUM); + hadc->Instance->CR1 |= ADC_CR1_DISCONTINUOUS(hadc->Init.NbrOfDiscConversion); + } + else + { + /* Disable the selected ADC regular discontinuous mode */ + hadc->Instance->CR1 &= ~(ADC_CR1_DISCEN); + } + + /* Set ADC number of conversion */ + hadc->Instance->SQR1 &= ~(ADC_SQR1_L); + hadc->Instance->SQR1 |= ADC_SQR1(hadc->Init.NbrOfConversion); + + /* Enable or disable ADC DMA continuous request */ + hadc->Instance->CR2 &= ~(ADC_CR2_DDS); + hadc->Instance->CR2 |= ADC_CR2_DMAContReq((uint32_t)hadc->Init.DMAContinuousRequests); + + /* Enable or disable ADC end of conversion selection */ + hadc->Instance->CR2 &= ~(ADC_CR2_EOCS); + hadc->Instance->CR2 |= ADC_CR2_EOCSelection(hadc->Init.EOCSelection); +} + +/** + * @brief DMA transfer complete callback. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma) +{ + /* Retrieve ADC handle corresponding to current DMA handle */ + ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + + /* Update state machine on conversion status if not in error state */ + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL | HAL_ADC_STATE_ERROR_DMA)) + { + /* Update ADC state machine */ + SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); + + /* Determine whether any further conversion upcoming on group regular */ + /* by external trigger, continuous mode or scan sequence on going. */ + /* Note: On STM32F7, there is no independent flag of end of sequence. */ + /* The test of scan sequence on going is done either with scan */ + /* sequence disabled or with end of conversion flag set to */ + /* of end of sequence. */ + if(ADC_IS_SOFTWARE_START_REGULAR(hadc) && + (hadc->Init.ContinuousConvMode == DISABLE) && + (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + { + /* Disable ADC end of single conversion interrupt on group regular */ + /* Note: Overrun interrupt was enabled with EOC interrupt in */ + /* HAL_ADC_Start_IT(), but is not disabled here because can be used */ + /* by overrun IRQ process below. */ + __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC); + + /* Set ADC state */ + CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY); + + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + { + SET_BIT(hadc->State, HAL_ADC_STATE_READY); + } + } + + /* Conversion complete callback */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + hadc->ConvCpltCallback(hadc); +#else + HAL_ADC_ConvCpltCallback(hadc); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + } + else /* DMA and-or internal error occurred */ + { + if ((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) != 0UL) + { + /* Call HAL ADC Error Callback function */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + hadc->ErrorCallback(hadc); +#else + HAL_ADC_ErrorCallback(hadc); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + } + else + { + /* Call DMA error callback */ + hadc->DMA_Handle->XferErrorCallback(hdma); + } + } +} + +/** + * @brief DMA half transfer complete callback. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma) +{ + ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + /* Half conversion callback */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + hadc->ConvHalfCpltCallback(hadc); +#else + HAL_ADC_ConvHalfCpltCallback(hadc); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +} + +/** + * @brief DMA error callback + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void ADC_DMAError(DMA_HandleTypeDef *hdma) +{ + ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + hadc->State= HAL_ADC_STATE_ERROR_DMA; + /* Set ADC error code to DMA error */ + hadc->ErrorCode |= HAL_ADC_ERROR_DMA; + /* Error callback */ +#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + hadc->ErrorCallback(hadc); +#else + HAL_ADC_ErrorCallback(hadc); +#endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_ADC_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c new file mode 100644 index 0000000..669ac29 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c @@ -0,0 +1,1069 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_adc_ex.c + * @author MCD Application Team + * @brief This file provides firmware functions to manage the following + * functionalities of the ADC extension peripheral: + * + Extended features functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + (#)Initialize the ADC low level resources by implementing the HAL_ADC_MspInit(): + (##) Enable the ADC interface clock using __HAL_RCC_ADC_CLK_ENABLE() + (##) ADC pins configuration + (+++) Enable the clock for the ADC GPIOs using the following function: + __HAL_RCC_GPIOx_CLK_ENABLE() + (+++) Configure these ADC pins in analog mode using HAL_GPIO_Init() + (##) In case of using interrupts (e.g. HAL_ADC_Start_IT()) + (+++) Configure the ADC interrupt priority using HAL_NVIC_SetPriority() + (+++) Enable the ADC IRQ handler using HAL_NVIC_EnableIRQ() + (+++) In ADC IRQ handler, call HAL_ADC_IRQHandler() + (##) In case of using DMA to control data transfer (e.g. HAL_ADC_Start_DMA()) + (+++) Enable the DMAx interface clock using __HAL_RCC_DMAx_CLK_ENABLE() + (+++) Configure and enable two DMA streams stream for managing data + transfer from peripheral to memory (output stream) + (+++) Associate the initialized DMA handle to the ADC DMA handle + using __HAL_LINKDMA() + (+++) Configure the priority and enable the NVIC for the transfer complete + interrupt on the two DMA Streams. The output stream should have higher + priority than the input stream. + (#) Configure the ADC Prescaler, conversion resolution and data alignment + using the HAL_ADC_Init() function. + + (#) Configure the ADC Injected channels group features, use HAL_ADC_Init() + and HAL_ADC_ConfigChannel() functions. + + (#) Three operation modes are available within this driver : + + *** Polling mode IO operation *** + ================================= + [..] + (+) Start the ADC peripheral using HAL_ADCEx_InjectedStart() + (+) Wait for end of conversion using HAL_ADCEx_InjectedPollForConversion(), at this stage + user can specify the value of timeout according to his end application + (+) To read the ADC converted values, use the HAL_ADCEx_InjectedGetValue() function. + (+) Stop the ADC peripheral using HAL_ADCEx_InjectedStop() + + *** Interrupt mode IO operation *** + =================================== + [..] + (+) Start the ADC peripheral using HAL_ADCEx_InjectedStart_IT() + (+) Use HAL_ADC_IRQHandler() called under ADC_IRQHandler() Interrupt subroutine + (+) At ADC end of conversion HAL_ADCEx_InjectedConvCpltCallback() function is executed and user can + add his own code by customization of function pointer HAL_ADCEx_InjectedConvCpltCallback + (+) In case of ADC Error, HAL_ADCEx_InjectedErrorCallback() function is executed and user can + add his own code by customization of function pointer HAL_ADCEx_InjectedErrorCallback + (+) Stop the ADC peripheral using HAL_ADCEx_InjectedStop_IT() + + *** Multi mode ADCs Regular channels configuration *** + ====================================================== + [..] + (+) Select the Multi mode ADC regular channels features (dual or triple mode) + and configure the DMA mode using HAL_ADCEx_MultiModeConfigChannel() functions. + (+) Start the ADC peripheral using HAL_ADCEx_MultiModeStart_DMA(), at this stage the user specify the length + of data to be transferred at each end of conversion + (+) Read the ADCs converted values using the HAL_ADCEx_MultiModeGetValue() function. + + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup ADCEx ADCEx + * @brief ADC Extended driver modules + * @{ + */ + +#ifdef HAL_ADC_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @addtogroup ADCEx_Private_Functions + * @{ + */ +/* Private function prototypes -----------------------------------------------*/ +static void ADC_MultiModeDMAConvCplt(DMA_HandleTypeDef *hdma); +static void ADC_MultiModeDMAError(DMA_HandleTypeDef *hdma); +static void ADC_MultiModeDMAHalfConvCplt(DMA_HandleTypeDef *hdma); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup ADCEx_Exported_Functions ADC Exported Functions + * @{ + */ + +/** @defgroup ADCEx_Exported_Functions_Group1 Extended features functions + * @brief Extended features functions + * +@verbatim + =============================================================================== + ##### Extended features functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Start conversion of injected channel. + (+) Stop conversion of injected channel. + (+) Start multimode and enable DMA transfer. + (+) Stop multimode and disable DMA transfer. + (+) Get result of injected channel conversion. + (+) Get result of multimode conversion. + (+) Configure injected channels. + (+) Configure multimode. + +@endverbatim + * @{ + */ + +/** + * @brief Enables the selected ADC software start conversion of the injected channels. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef* hadc) +{ + __IO uint32_t counter = 0; + uint32_t tmp1 = 0, tmp2 = 0; + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Enable the ADC peripheral */ + + /* Check if ADC peripheral is disabled in order to enable it and wait during + Tstab time the ADC's stabilization */ + if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) + { + /* Enable the Peripheral */ + __HAL_ADC_ENABLE(hadc); + + /* Delay for ADC stabilization time */ + /* Compute number of CPU cycles to wait for */ + counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); + while(counter != 0) + { + counter--; + } + } + + /* Start conversion if ADC is effectively enabled */ + if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Set ADC state */ + /* - Clear state bitfield related to injected group conversion results */ + /* - Set state bitfield related to injected operation */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_READY | HAL_ADC_STATE_INJ_EOC, + HAL_ADC_STATE_INJ_BUSY); + + /* Check if a regular conversion is ongoing */ + /* Note: On this device, there is no ADC error code fields related to */ + /* conversions on group injected only. In case of conversion on */ + /* going on group regular, no error code is reset. */ + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY)) + { + /* Reset ADC all error code fields */ + ADC_CLEAR_ERRORCODE(hadc); + } + + /* Process unlocked */ + /* Unlock before starting ADC conversions: in case of potential */ + /* interruption, to let the process to ADC IRQ Handler. */ + __HAL_UNLOCK(hadc); + + /* Clear injected group conversion flag */ + /* (To ensure of no unknown state from potential previous ADC operations) */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC); + + /* Check if Multimode enabled */ + if(HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI)) + { + tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN); + tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + if(tmp1 && tmp2) + { + /* Enable the selected ADC software conversion for injected group */ + hadc->Instance->CR2 |= ADC_CR2_JSWSTART; + } + } + else + { + tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN); + tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + if((hadc->Instance == ADC1) && tmp1 && tmp2) + { + /* Enable the selected ADC software conversion for injected group */ + hadc->Instance->CR2 |= ADC_CR2_JSWSTART; + } + } + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Enables the interrupt and starts ADC conversion of injected channels. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * + * @retval HAL status. + */ +HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef* hadc) +{ + __IO uint32_t counter = 0; + uint32_t tmp1 = 0, tmp2 = 0; + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Enable the ADC peripheral */ + + /* Check if ADC peripheral is disabled in order to enable it and wait during + Tstab time the ADC's stabilization */ + if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) + { + /* Enable the Peripheral */ + __HAL_ADC_ENABLE(hadc); + + /* Delay for ADC stabilization time */ + /* Compute number of CPU cycles to wait for */ + counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); + while(counter != 0) + { + counter--; + } + } + + /* Start conversion if ADC is effectively enabled */ + if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Set ADC state */ + /* - Clear state bitfield related to injected group conversion results */ + /* - Set state bitfield related to injected operation */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_READY | HAL_ADC_STATE_INJ_EOC, + HAL_ADC_STATE_INJ_BUSY); + + /* Check if a regular conversion is ongoing */ + /* Note: On this device, there is no ADC error code fields related to */ + /* conversions on group injected only. In case of conversion on */ + /* going on group regular, no error code is reset. */ + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY)) + { + /* Reset ADC all error code fields */ + ADC_CLEAR_ERRORCODE(hadc); + } + + /* Process unlocked */ + /* Unlock before starting ADC conversions: in case of potential */ + /* interruption, to let the process to ADC IRQ Handler. */ + __HAL_UNLOCK(hadc); + + /* Clear injected group conversion flag */ + /* (To ensure of no unknown state from potential previous ADC operations) */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC); + + /* Enable end of conversion interrupt for injected channels */ + __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOC); + + /* Check if Multimode enabled */ + if(HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI)) + { + tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN); + tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + if(tmp1 && tmp2) + { + /* Enable the selected ADC software conversion for injected group */ + hadc->Instance->CR2 |= ADC_CR2_JSWSTART; + } + } + else + { + tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN); + tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + if((hadc->Instance == ADC1) && tmp1 && tmp2) + { + /* Enable the selected ADC software conversion for injected group */ + hadc->Instance->CR2 |= ADC_CR2_JSWSTART; + } + } + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stop conversion of injected channels. Disable ADC peripheral if + * no regular conversion is on going. + * @note If ADC must be disabled and if conversion is on going on + * regular group, function HAL_ADC_Stop must be used to stop both + * injected and regular groups, and disable the ADC. + * @note If injected group mode auto-injection is enabled, + * function HAL_ADC_Stop must be used. + * @note In case of auto-injection mode, HAL_ADC_Stop must be used. + * @param hadc ADC handle + * @retval None + */ +HAL_StatusTypeDef HAL_ADCEx_InjectedStop(ADC_HandleTypeDef* hadc) +{ + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Stop potential conversion and disable ADC peripheral */ + /* Conditioned to: */ + /* - No conversion on the other group (regular group) is intended to */ + /* continue (injected and regular groups stop conversion and ADC disable */ + /* are common) */ + /* - In case of auto-injection mode, HAL_ADC_Stop must be used. */ + if(((hadc->State & HAL_ADC_STATE_REG_BUSY) == RESET) && + HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + { + /* Stop potential conversion on going, on regular and injected groups */ + /* Disable ADC peripheral */ + __HAL_ADC_DISABLE(hadc); + + /* Check if ADC is effectively disabled */ + if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + HAL_ADC_STATE_READY); + } + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + + tmp_hal_status = HAL_ERROR; + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return tmp_hal_status; +} + +/** + * @brief Poll for injected conversion complete + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param Timeout Timeout value in millisecond. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout) +{ + uint32_t tickstart = 0; + + /* Get tick */ + tickstart = HAL_GetTick(); + + /* Check End of conversion flag */ + while(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOC))) + { + /* Check for the Timeout */ + if(Timeout != HAL_MAX_DELAY) + { + if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout)) + { + /* New check to avoid false timeout detection in case of preemption */ + if(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOC))) + { + hadc->State= HAL_ADC_STATE_TIMEOUT; + /* Process unlocked */ + __HAL_UNLOCK(hadc); + return HAL_TIMEOUT; + } + } + } + } + + /* Clear injected group conversion flag */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JSTRT | ADC_FLAG_JEOC); + + /* Update ADC state machine */ + SET_BIT(hadc->State, HAL_ADC_STATE_INJ_EOC); + + /* Determine whether any further conversion upcoming on group injected */ + /* by external trigger, continuous mode or scan sequence on going. */ + /* Note: On STM32F7, there is no independent flag of end of sequence. */ + /* The test of scan sequence on going is done either with scan */ + /* sequence disabled or with end of conversion flag set to */ + /* of end of sequence. */ + if(ADC_IS_SOFTWARE_START_INJECTED(hadc) && + (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) && + (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) && + (ADC_IS_SOFTWARE_START_REGULAR(hadc) && + (hadc->Init.ContinuousConvMode == DISABLE) ) ) ) + { + /* Set ADC state */ + CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY); + + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY)) + { + SET_BIT(hadc->State, HAL_ADC_STATE_READY); + } + } + + /* Return ADC state */ + return HAL_OK; +} + +/** + * @brief Stop conversion of injected channels, disable interruption of + * end-of-conversion. Disable ADC peripheral if no regular conversion + * is on going. + * @note If ADC must be disabled and if conversion is on going on + * regular group, function HAL_ADC_Stop must be used to stop both + * injected and regular groups, and disable the ADC. + * @note If injected group mode auto-injection is enabled, + * function HAL_ADC_Stop must be used. + * @param hadc ADC handle + * @retval None + */ +HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(ADC_HandleTypeDef* hadc) +{ + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Stop potential conversion and disable ADC peripheral */ + /* Conditioned to: */ + /* - No conversion on the other group (regular group) is intended to */ + /* continue (injected and regular groups stop conversion and ADC disable */ + /* are common) */ + /* - In case of auto-injection mode, HAL_ADC_Stop must be used. */ + if(((hadc->State & HAL_ADC_STATE_REG_BUSY) == RESET) && + HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + { + /* Stop potential conversion on going, on regular and injected groups */ + /* Disable ADC peripheral */ + __HAL_ADC_DISABLE(hadc); + + /* Check if ADC is effectively disabled */ + if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Disable ADC end of conversion interrupt for injected channels */ + __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC); + + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + HAL_ADC_STATE_READY); + } + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + + tmp_hal_status = HAL_ERROR; + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return tmp_hal_status; +} + +/** + * @brief Gets the converted value from data register of injected channel. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param InjectedRank the ADC injected rank. + * This parameter can be one of the following values: + * @arg ADC_INJECTED_RANK_1: Injected Channel1 selected + * @arg ADC_INJECTED_RANK_2: Injected Channel2 selected + * @arg ADC_INJECTED_RANK_3: Injected Channel3 selected + * @arg ADC_INJECTED_RANK_4: Injected Channel4 selected + * @retval None + */ +uint32_t HAL_ADCEx_InjectedGetValue(ADC_HandleTypeDef* hadc, uint32_t InjectedRank) +{ + __IO uint32_t tmp = 0; + + /* Check the parameters */ + assert_param(IS_ADC_INJECTED_RANK(InjectedRank)); + + /* Clear injected group conversion flag to have similar behaviour as */ + /* regular group: reading data register also clears end of conversion flag. */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC); + + /* Return the selected ADC converted value */ + switch(InjectedRank) + { + case ADC_INJECTED_RANK_4: + { + tmp = hadc->Instance->JDR4; + } + break; + case ADC_INJECTED_RANK_3: + { + tmp = hadc->Instance->JDR3; + } + break; + case ADC_INJECTED_RANK_2: + { + tmp = hadc->Instance->JDR2; + } + break; + case ADC_INJECTED_RANK_1: + { + tmp = hadc->Instance->JDR1; + } + break; + default: + break; + } + return tmp; +} + +/** + * @brief Enables ADC DMA request after last transfer (Multi-ADC mode) and enables ADC peripheral + * + * @note Caution: This function must be used only with the ADC master. + * + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param pData Pointer to buffer in which transferred from ADC peripheral to memory will be stored. + * @param Length The length of data to be transferred from ADC peripheral to memory. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length) +{ + __IO uint32_t counter = 0; + + /* Check the parameters */ + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Check if ADC peripheral is disabled in order to enable it and wait during + Tstab time the ADC's stabilization */ + if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) + { + /* Enable the Peripheral */ + __HAL_ADC_ENABLE(hadc); + + /* Delay for temperature sensor stabilization time */ + /* Compute number of CPU cycles to wait for */ + counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); + while(counter != 0) + { + counter--; + } + } + + /* Start conversion if ADC is effectively enabled */ + if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Set ADC state */ + /* - Clear state bitfield related to regular group conversion results */ + /* - Set state bitfield related to regular group operation */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, + HAL_ADC_STATE_REG_BUSY); + + /* If conversions on group regular are also triggering group injected, */ + /* update ADC state. */ + if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET) + { + ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY); + } + + /* State machine update: Check if an injected conversion is ongoing */ + if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + { + /* Reset ADC error code fields related to conversions on group regular */ + CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA)); + } + else + { + /* Reset ADC all error code fields */ + ADC_CLEAR_ERRORCODE(hadc); + } + + /* Process unlocked */ + /* Unlock before starting ADC conversions: in case of potential */ + /* interruption, to let the process to ADC IRQ Handler. */ + __HAL_UNLOCK(hadc); + + /* Set the DMA transfer complete callback */ + hadc->DMA_Handle->XferCpltCallback = ADC_MultiModeDMAConvCplt; + + /* Set the DMA half transfer complete callback */ + hadc->DMA_Handle->XferHalfCpltCallback = ADC_MultiModeDMAHalfConvCplt; + + /* Set the DMA error callback */ + hadc->DMA_Handle->XferErrorCallback = ADC_MultiModeDMAError ; + + /* Manage ADC and DMA start: ADC overrun interruption, DMA start, ADC */ + /* start (in case of SW start): */ + + /* Clear regular group conversion flag and overrun flag */ + /* (To ensure of no unknown state from potential previous ADC operations) */ + __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC); + + /* Enable ADC overrun interrupt */ + __HAL_ADC_ENABLE_IT(hadc, ADC_IT_OVR); + + if (hadc->Init.DMAContinuousRequests != DISABLE) + { + /* Enable the selected ADC DMA request after last transfer */ + ADC->CCR |= ADC_CCR_DDS; + } + else + { + /* Disable the selected ADC EOC rising on each regular channel conversion */ + ADC->CCR &= ~ADC_CCR_DDS; + } + + /* Enable the DMA Stream */ + HAL_DMA_Start_IT(hadc->DMA_Handle, (uint32_t)&ADC->CDR, (uint32_t)pData, Length); + + /* if no external trigger present enable software conversion of regular channels */ + if((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET) + { + /* Enable the selected ADC software conversion for regular group */ + hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + } + } + else + { + /* Update ADC state machine to error */ + SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + + /* Set ADC error code to ADC IP internal error */ + SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Disables ADC DMA (multi-ADC mode) and disables ADC peripheral + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef* hadc) +{ + HAL_StatusTypeDef tmp_hal_status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Stop potential conversion on going, on regular and injected groups */ + /* Disable ADC peripheral */ + __HAL_ADC_DISABLE(hadc); + + /* Check if ADC is effectively disabled */ + if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + { + /* Disable the selected ADC DMA mode for multimode */ + ADC->CCR &= ~ADC_CCR_DDS; + + /* Disable the DMA channel (in case of DMA in circular mode or stop while */ + /* DMA transfer is on going) */ + tmp_hal_status = HAL_DMA_Abort(hadc->DMA_Handle); + + /* Disable ADC overrun interrupt */ + __HAL_ADC_DISABLE_IT(hadc, ADC_IT_OVR); + + /* Set ADC state */ + ADC_STATE_CLR_SET(hadc->State, + HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + HAL_ADC_STATE_READY); + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return tmp_hal_status; +} + +/** + * @brief Returns the last ADC1, ADC2 and ADC3 regular conversions results + * data in the selected multi mode. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval The converted data value. + */ +uint32_t HAL_ADCEx_MultiModeGetValue(ADC_HandleTypeDef* hadc) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hadc); + + /* Return the multi mode conversion value */ + return ADC->CDR; +} + +/** + * @brief Injected conversion complete callback in non blocking mode + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @retval None + */ +__weak void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hadc); + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_ADC_InjectedConvCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Configures for the selected ADC injected channel its corresponding + * rank in the sequencer and its sample time. + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param sConfigInjected ADC configuration structure for injected channel. + * @retval None + */ +HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef* hadc, ADC_InjectionConfTypeDef* sConfigInjected) +{ + +#ifdef USE_FULL_ASSERT + uint32_t tmp = 0; +#endif /* USE_FULL_ASSERT */ + + /* Check the parameters */ + assert_param(IS_ADC_CHANNEL(sConfigInjected->InjectedChannel)); + assert_param(IS_ADC_INJECTED_RANK(sConfigInjected->InjectedRank)); + assert_param(IS_ADC_SAMPLE_TIME(sConfigInjected->InjectedSamplingTime)); + assert_param(IS_ADC_EXT_INJEC_TRIG(sConfigInjected->ExternalTrigInjecConv)); + assert_param(IS_ADC_INJECTED_LENGTH(sConfigInjected->InjectedNbrOfConversion)); + assert_param(IS_FUNCTIONAL_STATE(sConfigInjected->AutoInjectedConv)); + assert_param(IS_FUNCTIONAL_STATE(sConfigInjected->InjectedDiscontinuousConvMode)); + +#ifdef USE_FULL_ASSERT + tmp = ADC_GET_RESOLUTION(hadc); + assert_param(IS_ADC_RANGE(tmp, sConfigInjected->InjectedOffset)); +#endif /* USE_FULL_ASSERT */ + + if(sConfigInjected->ExternalTrigInjecConv != ADC_INJECTED_SOFTWARE_START) + { + assert_param(IS_ADC_EXT_INJEC_TRIG_EDGE(sConfigInjected->ExternalTrigInjecConvEdge)); + } + + /* Process locked */ + __HAL_LOCK(hadc); + + /* if ADC_Channel_10 ... ADC_Channel_18 is selected */ + if (sConfigInjected->InjectedChannel > ADC_CHANNEL_9) + { + /* Clear the old sample time */ + hadc->Instance->SMPR1 &= ~ADC_SMPR1(ADC_SMPR1_SMP10, sConfigInjected->InjectedChannel); + + /* Set the new sample time */ + hadc->Instance->SMPR1 |= ADC_SMPR1(sConfigInjected->InjectedSamplingTime, sConfigInjected->InjectedChannel); + } + else /* ADC_Channel include in ADC_Channel_[0..9] */ + { + /* Clear the old sample time */ + hadc->Instance->SMPR2 &= ~ADC_SMPR2(ADC_SMPR2_SMP0, sConfigInjected->InjectedChannel); + + /* Set the new sample time */ + hadc->Instance->SMPR2 |= ADC_SMPR2(sConfigInjected->InjectedSamplingTime, sConfigInjected->InjectedChannel); + } + + /*---------------------------- ADCx JSQR Configuration -----------------*/ + hadc->Instance->JSQR &= ~(ADC_JSQR_JL); + hadc->Instance->JSQR |= ADC_SQR1(sConfigInjected->InjectedNbrOfConversion); + + /* Rank configuration */ + + /* Clear the old SQx bits for the selected rank */ + hadc->Instance->JSQR &= ~ADC_JSQR(ADC_JSQR_JSQ1, sConfigInjected->InjectedRank,sConfigInjected->InjectedNbrOfConversion); + + /* Set the SQx bits for the selected rank */ + hadc->Instance->JSQR |= ADC_JSQR(sConfigInjected->InjectedChannel, sConfigInjected->InjectedRank,sConfigInjected->InjectedNbrOfConversion); + + /* 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(sConfigInjected->ExternalTrigInjecConv != ADC_INJECTED_SOFTWARE_START) + { + /* Select external trigger to start conversion */ + hadc->Instance->CR2 &= ~(ADC_CR2_JEXTSEL); + hadc->Instance->CR2 |= sConfigInjected->ExternalTrigInjecConv; + + /* Select external trigger polarity */ + hadc->Instance->CR2 &= ~(ADC_CR2_JEXTEN); + hadc->Instance->CR2 |= sConfigInjected->ExternalTrigInjecConvEdge; + } + else + { + /* Reset the external trigger */ + hadc->Instance->CR2 &= ~(ADC_CR2_JEXTSEL); + hadc->Instance->CR2 &= ~(ADC_CR2_JEXTEN); + } + + if (sConfigInjected->AutoInjectedConv != DISABLE) + { + /* Enable the selected ADC automatic injected group conversion */ + hadc->Instance->CR1 |= ADC_CR1_JAUTO; + } + else + { + /* Disable the selected ADC automatic injected group conversion */ + hadc->Instance->CR1 &= ~(ADC_CR1_JAUTO); + } + + if (sConfigInjected->InjectedDiscontinuousConvMode != DISABLE) + { + /* Enable the selected ADC injected discontinuous mode */ + hadc->Instance->CR1 |= ADC_CR1_JDISCEN; + } + else + { + /* Disable the selected ADC injected discontinuous mode */ + hadc->Instance->CR1 &= ~(ADC_CR1_JDISCEN); + } + + switch(sConfigInjected->InjectedRank) + { + case 1: + /* Set injected channel 1 offset */ + hadc->Instance->JOFR1 &= ~(ADC_JOFR1_JOFFSET1); + hadc->Instance->JOFR1 |= sConfigInjected->InjectedOffset; + break; + case 2: + /* Set injected channel 2 offset */ + hadc->Instance->JOFR2 &= ~(ADC_JOFR2_JOFFSET2); + hadc->Instance->JOFR2 |= sConfigInjected->InjectedOffset; + break; + case 3: + /* Set injected channel 3 offset */ + hadc->Instance->JOFR3 &= ~(ADC_JOFR3_JOFFSET3); + hadc->Instance->JOFR3 |= sConfigInjected->InjectedOffset; + break; + default: + /* Set injected channel 4 offset */ + hadc->Instance->JOFR4 &= ~(ADC_JOFR4_JOFFSET4); + hadc->Instance->JOFR4 |= sConfigInjected->InjectedOffset; + break; + } + + /* if ADC1 Channel_18 is selected enable VBAT Channel */ + if ((hadc->Instance == ADC1) && (sConfigInjected->InjectedChannel == ADC_CHANNEL_VBAT)) + { + /* Enable the VBAT channel*/ + ADC->CCR |= ADC_CCR_VBATE; + } + + /* if ADC1 Channel_16 or Channel_17 is selected enable TSVREFE Channel(Temperature sensor and VREFINT) */ + if ((hadc->Instance == ADC1) && ((sConfigInjected->InjectedChannel == ADC_CHANNEL_TEMPSENSOR) || (sConfigInjected->InjectedChannel == ADC_CHANNEL_VREFINT))) + { + /* Enable the TSVREFE channel*/ + ADC->CCR |= ADC_CCR_TSVREFE; + } + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Configures the ADC multi-mode + * @param hadc pointer to a ADC_HandleTypeDef structure that contains + * the configuration information for the specified ADC. + * @param multimode pointer to an ADC_MultiModeTypeDef structure that contains + * the configuration information for multimode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef* hadc, ADC_MultiModeTypeDef* multimode) +{ + /* Check the parameters */ + assert_param(IS_ADC_MODE(multimode->Mode)); + assert_param(IS_ADC_DMA_ACCESS_MODE(multimode->DMAAccessMode)); + assert_param(IS_ADC_SAMPLING_DELAY(multimode->TwoSamplingDelay)); + + /* Process locked */ + __HAL_LOCK(hadc); + + /* Set ADC mode */ + ADC->CCR &= ~(ADC_CCR_MULTI); + ADC->CCR |= multimode->Mode; + + /* Set the ADC DMA access mode */ + ADC->CCR &= ~(ADC_CCR_DMA); + ADC->CCR |= multimode->DMAAccessMode; + + /* Set delay between two sampling phases */ + ADC->CCR &= ~(ADC_CCR_DELAY); + ADC->CCR |= multimode->TwoSamplingDelay; + + /* Process unlocked */ + __HAL_UNLOCK(hadc); + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + + /** + * @brief DMA transfer complete callback. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void ADC_MultiModeDMAConvCplt(DMA_HandleTypeDef *hdma) +{ + /* Retrieve ADC handle corresponding to current DMA handle */ + ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + + /* Update state machine on conversion status if not in error state */ + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL | HAL_ADC_STATE_ERROR_DMA)) + { + /* Update ADC state machine */ + SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); + + /* Determine whether any further conversion upcoming on group regular */ + /* by external trigger, continuous mode or scan sequence on going. */ + /* Note: On STM32F7, there is no independent flag of end of sequence. */ + /* The test of scan sequence on going is done either with scan */ + /* sequence disabled or with end of conversion flag set to */ + /* of end of sequence. */ + if(ADC_IS_SOFTWARE_START_REGULAR(hadc) && + (hadc->Init.ContinuousConvMode == DISABLE) && + (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + { + /* Disable ADC end of single conversion interrupt on group regular */ + /* Note: Overrun interrupt was enabled with EOC interrupt in */ + /* HAL_ADC_Start_IT(), but is not disabled here because can be used */ + /* by overrun IRQ process below. */ + __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC); + + /* Set ADC state */ + CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY); + + if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + { + SET_BIT(hadc->State, HAL_ADC_STATE_READY); + } + } + + /* Conversion complete callback */ + HAL_ADC_ConvCpltCallback(hadc); + } + else + { + /* Call DMA error callback */ + hadc->DMA_Handle->XferErrorCallback(hdma); + } +} + +/** + * @brief DMA half transfer complete callback. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void ADC_MultiModeDMAHalfConvCplt(DMA_HandleTypeDef *hdma) +{ + ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + /* Conversion complete callback */ + HAL_ADC_ConvHalfCpltCallback(hadc); +} + +/** + * @brief DMA error callback + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA module. + * @retval None + */ +static void ADC_MultiModeDMAError(DMA_HandleTypeDef *hdma) +{ + ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + hadc->State= HAL_ADC_STATE_ERROR_DMA; + /* Set ADC error code to DMA error */ + hadc->ErrorCode |= HAL_ADC_ERROR_DMA; + HAL_ADC_ErrorCallback(hadc); +} + +/** + * @} + */ + +#endif /* HAL_ADC_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c new file mode 100644 index 0000000..d89d865 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c @@ -0,0 +1,529 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_cortex.c + * @author MCD Application Team + * @brief CORTEX HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the CORTEX: + * + Initialization and de-initialization functions + * + Peripheral Control functions + * + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + + [..] + *** How to configure Interrupts using CORTEX HAL driver *** + =========================================================== + [..] + This section provides functions allowing to configure the NVIC interrupts (IRQ). + The Cortex-M4 exceptions are managed by CMSIS functions. + + (#) Configure the NVIC Priority Grouping using HAL_NVIC_SetPriorityGrouping() + function according to the following table. + (#) Configure the priority of the selected IRQ Channels using HAL_NVIC_SetPriority(). + (#) Enable the selected IRQ Channels using HAL_NVIC_EnableIRQ(). + (#) please refer to programming manual for details in how to configure priority. + + -@- When the NVIC_PRIORITYGROUP_0 is selected, IRQ preemption is no more possible. + The pending IRQ priority will be managed only by the sub priority. + + -@- IRQ priority order (sorted by highest to lowest priority): + (+@) Lowest preemption priority + (+@) Lowest sub priority + (+@) Lowest hardware priority (IRQ number) + + [..] + *** How to configure Systick using CORTEX HAL driver *** + ======================================================== + [..] + Setup SysTick Timer for time base. + + (+) The HAL_SYSTICK_Config() function calls the SysTick_Config() function which + is a CMSIS function that: + (++) Configures the SysTick Reload register with value passed as function parameter. + (++) Configures the SysTick IRQ priority to the lowest value (0x0F). + (++) Resets the SysTick Counter register. + (++) Configures the SysTick Counter clock source to be Core Clock Source (HCLK). + (++) Enables the SysTick Interrupt. + (++) Starts the SysTick Counter. + + (+) You can change the SysTick Clock source to be HCLK_Div8 by calling the macro + __HAL_CORTEX_SYSTICKCLK_CONFIG(SYSTICK_CLKSOURCE_HCLK_DIV8) just after the + HAL_SYSTICK_Config() function call. The __HAL_CORTEX_SYSTICKCLK_CONFIG() macro is defined + inside the stm32f7xx_hal_cortex.h file. + + (+) You can change the SysTick IRQ priority by calling the + HAL_NVIC_SetPriority(SysTick_IRQn,...) function just after the HAL_SYSTICK_Config() function + call. The HAL_NVIC_SetPriority() call the NVIC_SetPriority() function which is a CMSIS function. + + (+) To adjust the SysTick time base, use the following formula: + + Reload Value = SysTick Counter Clock (Hz) x Desired Time base (s) + (++) Reload Value is the parameter to be passed for HAL_SYSTICK_Config() function + (++) Reload Value should not exceed 0xFFFFFF + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup CORTEX CORTEX + * @brief CORTEX HAL module driver + * @{ + */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup CORTEX_Exported_Functions CORTEX Exported Functions + * @{ + */ + + +/** @defgroup CORTEX_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + ============================================================================== + ##### Initialization and de-initialization functions ##### + ============================================================================== + [..] + This section provides the CORTEX HAL driver functions allowing to configure Interrupts + Systick functionalities + +@endverbatim + * @{ + */ + + +/** + * @brief Sets the priority grouping field (preemption priority and subpriority) + * using the required unlock sequence. + * @param PriorityGroup The priority grouping bits length. + * This parameter can be one of the following values: + * @arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority + * 4 bits for subpriority + * @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority + * 3 bits for subpriority + * @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority + * 2 bits for subpriority + * @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority + * 1 bits for subpriority + * @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority + * 0 bits for subpriority + * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible. + * The pending IRQ priority will be managed only by the subpriority. + * @retval None + */ +void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +{ + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + + /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + NVIC_SetPriorityGrouping(PriorityGroup); +} + +/** + * @brief Sets the priority of an interrupt. + * @param IRQn External interrupt number. + * 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 (stm32f7xxxx.h)) + * @param PreemptPriority The preemption priority for the IRQn channel. + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority + * @param SubPriority the subpriority level for the IRQ channel. + * This parameter can be a value between 0 and 15 + * A lower priority value indicates a higher priority. + * @retval None + */ +void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) +{ + uint32_t prioritygroup = 0x00; + + /* Check the parameters */ + assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + + prioritygroup = NVIC_GetPriorityGrouping(); + + NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); +} + +/** + * @brief Enables a device specific interrupt in the NVIC interrupt controller. + * @note To configure interrupts priority correctly, the NVIC_PriorityGroupConfig() + * function should be called before. + * @param IRQn External interrupt number. + * 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 (stm32f7xxxx.h)) + * @retval None + */ +void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Enable interrupt */ + NVIC_EnableIRQ(IRQn); +} + +/** + * @brief Disables a device specific interrupt in the NVIC interrupt controller. + * @param IRQn External interrupt number. + * 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 (stm32f7xxxx.h)) + * @retval None + */ +void HAL_NVIC_DisableIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Disable interrupt */ + NVIC_DisableIRQ(IRQn); +} + +/** + * @brief Initiates a system reset request to reset the MCU. + * @retval None + */ +void HAL_NVIC_SystemReset(void) +{ + /* System Reset */ + NVIC_SystemReset(); +} + +/** + * @brief Initializes the System Timer and its interrupt, and starts the System Tick Timer. + * Counter is in free running mode to generate periodic interrupts. + * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + * @retval status: - 0 Function succeeded. + * - 1 Function failed. + */ +uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) +{ + return SysTick_Config(TicksNumb); +} +/** + * @} + */ + +/** @defgroup CORTEX_Exported_Functions_Group2 Peripheral Control functions + * @brief Cortex control functions + * +@verbatim + ============================================================================== + ##### Peripheral Control functions ##### + ============================================================================== + [..] + This subsection provides a set of functions allowing to control the CORTEX + (NVIC, SYSTICK, MPU) functionalities. + + +@endverbatim + * @{ + */ + +#if (__MPU_PRESENT == 1) +/** + * @brief Disables the MPU + * @retval None + */ +void HAL_MPU_Disable(void) +{ + /* Make sure outstanding transfers are done */ + __DMB(); + + /* Disable fault exceptions */ + SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; + + /* Disable the MPU and clear the control register*/ + MPU->CTRL = 0; +} + +/** + * @brief Enables the MPU + * @param MPU_Control Specifies the control mode of the MPU during hard fault, + * NMI, FAULTMASK and privileged access to the default memory + * This parameter can be one of the following values: + * @arg MPU_HFNMI_PRIVDEF_NONE + * @arg MPU_HARDFAULT_NMI + * @arg MPU_PRIVILEGED_DEFAULT + * @arg MPU_HFNMI_PRIVDEF + * @retval None + */ +void HAL_MPU_Enable(uint32_t MPU_Control) +{ + /* Enable the MPU */ + MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; + + /* Enable fault exceptions */ + SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; + + /* Ensure MPU setting take effects */ + __DSB(); + __ISB(); +} + +/** + * @brief Enables the MPU Region. + * @retval None + */ +void HAL_MPU_EnableRegion(uint32_t RegionNumber) +{ + /* Check the parameters */ + assert_param(IS_MPU_REGION_NUMBER(RegionNumber)); + + /* Set the Region number */ + MPU->RNR = RegionNumber; + + /* Enable the Region */ + SET_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @brief Disables the MPU Region. + * @retval None + */ +void HAL_MPU_DisableRegion(uint32_t RegionNumber) +{ + /* Check the parameters */ + assert_param(IS_MPU_REGION_NUMBER(RegionNumber)); + + /* Set the Region number */ + MPU->RNR = RegionNumber; + + /* Disable the Region */ + CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @brief Initializes and configures the Region and the memory to be protected. + * @param MPU_Init Pointer to a MPU_Region_InitTypeDef structure that contains + * the initialization and configuration information. + * @retval None + */ +void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init) +{ + /* Check the parameters */ + assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number)); + assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable)); + assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec)); + assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission)); + assert_param(IS_MPU_TEX_LEVEL(MPU_Init->TypeExtField)); + assert_param(IS_MPU_ACCESS_SHAREABLE(MPU_Init->IsShareable)); + assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable)); + assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable)); + assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable)); + assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size)); + + /* Set the Region number */ + MPU->RNR = MPU_Init->Number; + + /* Disable the Region */ + CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); + + /* Apply configuration */ + MPU->RBAR = MPU_Init->BaseAddress; + MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) | + ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) | + ((uint32_t)MPU_Init->TypeExtField << MPU_RASR_TEX_Pos) | + ((uint32_t)MPU_Init->IsShareable << MPU_RASR_S_Pos) | + ((uint32_t)MPU_Init->IsCacheable << MPU_RASR_C_Pos) | + ((uint32_t)MPU_Init->IsBufferable << MPU_RASR_B_Pos) | + ((uint32_t)MPU_Init->SubRegionDisable << MPU_RASR_SRD_Pos) | + ((uint32_t)MPU_Init->Size << MPU_RASR_SIZE_Pos) | + ((uint32_t)MPU_Init->Enable << MPU_RASR_ENABLE_Pos); +} +#endif /* __MPU_PRESENT */ + +/** + * @brief Gets the priority grouping field from the NVIC Interrupt Controller. + * @retval Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field) + */ +uint32_t HAL_NVIC_GetPriorityGrouping(void) +{ + /* Get the PRIGROUP[10:8] field value */ + return NVIC_GetPriorityGrouping(); +} + +/** + * @brief Gets the priority of an interrupt. + * @param IRQn External interrupt number. + * 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 (stm32f7xxxx.h)) + * @param PriorityGroup the priority grouping bits length. + * This parameter can be one of the following values: + * @arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority + * 4 bits for subpriority + * @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority + * 3 bits for subpriority + * @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority + * 2 bits for subpriority + * @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority + * 1 bits for subpriority + * @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority + * 0 bits for subpriority + * @param pPreemptPriority Pointer on the Preemptive priority value (starting from 0). + * @param pSubPriority Pointer on the Subpriority value (starting from 0). + * @retval None + */ +void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t *pPreemptPriority, uint32_t *pSubPriority) +{ + /* Check the parameters */ + assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + /* Get priority for Cortex-M system or device specific interrupts */ + NVIC_DecodePriority(NVIC_GetPriority(IRQn), PriorityGroup, pPreemptPriority, pSubPriority); +} + +/** + * @brief Sets Pending bit of an external interrupt. + * @param IRQn External interrupt number + * 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 (stm32f7xxxx.h)) + * @retval None + */ +void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Set interrupt pending */ + NVIC_SetPendingIRQ(IRQn); +} + +/** + * @brief Gets Pending Interrupt (reads the pending register in the NVIC + * and returns the pending bit for the specified interrupt). + * @param IRQn External interrupt number. + * 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 (stm32f7xxxx.h)) + * @retval status: - 0 Interrupt status is not pending. + * - 1 Interrupt status is pending. + */ +uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Return 1 if pending else 0 */ + return NVIC_GetPendingIRQ(IRQn); +} + +/** + * @brief Clears the pending bit of an external interrupt. + * @param IRQn External interrupt number. + * 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 (stm32f7xxxx.h)) + * @retval None + */ +void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Clear pending interrupt */ + NVIC_ClearPendingIRQ(IRQn); +} + +/** + * @brief Gets active interrupt ( reads the active register in NVIC and returns the active bit). + * @param IRQn External interrupt number + * 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 (stm32f7xxxx.h)) + * @retval status: - 0 Interrupt status is not pending. + * - 1 Interrupt status is pending. + */ +uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn) +{ + /* Check the parameters */ + assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + + /* Return 1 if active else 0 */ + return NVIC_GetActive(IRQn); +} + +/** + * @brief Configures the SysTick clock source. + * @param CLKSource specifies the SysTick clock source. + * This parameter can be one of the following values: + * @arg SYSTICK_CLKSOURCE_HCLK_DIV8: AHB clock divided by 8 selected as SysTick clock source. + * @arg SYSTICK_CLKSOURCE_HCLK: AHB clock selected as SysTick clock source. + * @retval None + */ +void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource) +{ + /* Check the parameters */ + assert_param(IS_SYSTICK_CLK_SOURCE(CLKSource)); + if (CLKSource == SYSTICK_CLKSOURCE_HCLK) + { + SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK; + } + else + { + SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK; + } +} + +/** + * @brief This function handles SYSTICK interrupt request. + * @retval None + */ +void HAL_SYSTICK_IRQHandler(void) +{ + HAL_SYSTICK_Callback(); +} + +/** + * @brief SYSTICK callback. + * @retval None + */ +__weak void HAL_SYSTICK_Callback(void) +{ + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_SYSTICK_Callback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_CORTEX_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c new file mode 100644 index 0000000..65d9596 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c @@ -0,0 +1,1312 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_dma.c + * @author MCD Application Team + * @brief DMA HAL module driver. + * + * This file provides firmware functions to manage the following + * functionalities of the Direct Memory Access (DMA) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral State and errors functions + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Enable and configure the peripheral to be connected to the DMA Stream + (except for internal SRAM/FLASH memories: no initialization is + necessary) please refer to Reference manual for connection between peripherals + and DMA requests. + + (#) For a given Stream, program the required configuration through the following parameters: + Transfer Direction, Source and Destination data formats, + Circular, Normal or peripheral flow control mode, Stream Priority level, + Source and Destination Increment mode, FIFO mode and its Threshold (if needed), + Burst mode for Source and/or Destination (if needed) using HAL_DMA_Init() function. + + -@- Prior to HAL_DMA_Init() the clock must be enabled for DMA through the following macros: + __HAL_RCC_DMA1_CLK_ENABLE() or __HAL_RCC_DMA2_CLK_ENABLE(). + + *** Polling mode IO operation *** + ================================= + [..] + (+) Use HAL_DMA_Start() to start DMA transfer after the configuration of Source + address and destination address and the Length of data to be transferred. + (+) Use HAL_DMA_PollForTransfer() to poll for the end of current transfer, in this + case a fixed Timeout can be configured by User depending from his application. + (+) Use HAL_DMA_Abort() function to abort the current transfer. + + *** Interrupt mode IO operation *** + =================================== + [..] + (+) Configure the DMA interrupt priority using HAL_NVIC_SetPriority() + (+) Enable the DMA IRQ handler using HAL_NVIC_EnableIRQ() + (+) Select Callbacks functions using HAL_DMA_RegisterCallback() + (+) Use HAL_DMA_Start_IT() to start DMA transfer after the configuration of + Source address and destination address and the Length of data to be transferred. In this + case the DMA interrupt is configured + (+) Use HAL_DMA_IRQHandler() called under DMA_IRQHandler() Interrupt subroutine + (+) At the end of data transfer HAL_DMA_IRQHandler() function is executed and user can + add his own function by customization of function pointer XferCpltCallback and + XferErrorCallback (i.e a member of DMA handle structure). + [..] + (#) Use HAL_DMA_GetState() function to return the DMA state and HAL_DMA_GetError() in case of error + detection. + + (#) Use HAL_DMA_Abort_IT() function to abort the current transfer + + -@- In Memory-to-Memory transfer mode, Circular mode is not allowed. + + -@- The FIFO is used mainly to reduce bus usage and to allow data packing/unpacking: it is + possible to set different Data Sizes for the Peripheral and the Memory (ie. you can set + Half-Word data size for the peripheral to access its data register and set Word data size + for the Memory to gain in access time. Each two half words will be packed and written in + a single access to a Word in the Memory). + + -@- When FIFO is disabled, it is not allowed to configure different Data Sizes for Source + and Destination. In this case the Peripheral Data Size will be applied to both Source + and Destination. + + *** DMA HAL driver macros list *** + ============================================= + [..] + Below the list of most used macros in DMA HAL driver. + + (+) __HAL_DMA_ENABLE: Enable the specified DMA Stream. + (+) __HAL_DMA_DISABLE: Disable the specified DMA Stream. + (+) __HAL_DMA_GET_IT_SOURCE: Check whether the specified DMA Stream interrupt has occurred or not. + + [..] + (@) You can refer to the DMA HAL driver header file for more useful macros + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup DMA DMA + * @brief DMA HAL module driver + * @{ + */ + +#ifdef HAL_DMA_MODULE_ENABLED + +/* Private types -------------------------------------------------------------*/ +typedef struct +{ + __IO uint32_t ISR; /*!< DMA interrupt status register */ + __IO uint32_t Reserved0; + __IO uint32_t IFCR; /*!< DMA interrupt flag clear register */ +} DMA_Base_Registers; + +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @addtogroup DMA_Private_Constants + * @{ + */ + #define HAL_TIMEOUT_DMA_ABORT ((uint32_t)5) /* 5 ms */ +/** + * @} + */ +/* Private macros ------------------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/** @addtogroup DMA_Private_Functions + * @{ + */ +static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength); +static uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma); +static HAL_StatusTypeDef DMA_CheckFifoParam(DMA_HandleTypeDef *hdma); + +/** + * @} + */ + +/* Exported functions ---------------------------------------------------------*/ +/** @addtogroup DMA_Exported_Functions + * @{ + */ + +/** @addtogroup DMA_Exported_Functions_Group1 + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] + This section provides functions allowing to initialize the DMA Stream source + and destination addresses, incrementation and data sizes, transfer direction, + circular/normal mode selection, memory-to-memory mode selection and Stream priority value. + [..] + The HAL_DMA_Init() function follows the DMA configuration procedures as described in + reference manual. + +@endverbatim + * @{ + */ + +/** + * @brief Initialize the DMA according to the specified + * parameters in the DMA_InitTypeDef and create the associated handle. + * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) +{ + uint32_t tmp = 0U; + uint32_t tickstart = HAL_GetTick(); + DMA_Base_Registers *regs; + + /* Check the DMA peripheral state */ + if(hdma == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_DMA_STREAM_ALL_INSTANCE(hdma->Instance)); + assert_param(IS_DMA_CHANNEL(hdma->Init.Channel)); + assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); + assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); + assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); + assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); + assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); + assert_param(IS_DMA_MODE(hdma->Init.Mode)); + assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); + assert_param(IS_DMA_FIFO_MODE_STATE(hdma->Init.FIFOMode)); + /* Check the memory burst, peripheral burst and FIFO threshold parameters only + when FIFO mode is enabled */ + if(hdma->Init.FIFOMode != DMA_FIFOMODE_DISABLE) + { + assert_param(IS_DMA_FIFO_THRESHOLD(hdma->Init.FIFOThreshold)); + assert_param(IS_DMA_MEMORY_BURST(hdma->Init.MemBurst)); + assert_param(IS_DMA_PERIPHERAL_BURST(hdma->Init.PeriphBurst)); + } + + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + + /* Allocate lock resource */ + __HAL_UNLOCK(hdma); + + + /* Disable the peripheral */ + __HAL_DMA_DISABLE(hdma); + + /* Check if the DMA Stream is effectively disabled */ + while((hdma->Instance->CR & DMA_SxCR_EN) != RESET) + { + /* Check for the Timeout */ + if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT) + { + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_TIMEOUT; + + return HAL_TIMEOUT; + } + } + + /* Get the CR register value */ + tmp = hdma->Instance->CR; + + /* Clear CHSEL, MBURST, PBURST, PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR, CT and DBM bits */ + tmp &= ((uint32_t)~(DMA_SxCR_CHSEL | DMA_SxCR_MBURST | DMA_SxCR_PBURST | \ + DMA_SxCR_PL | DMA_SxCR_MSIZE | DMA_SxCR_PSIZE | \ + DMA_SxCR_MINC | DMA_SxCR_PINC | DMA_SxCR_CIRC | \ + DMA_SxCR_DIR | DMA_SxCR_CT | DMA_SxCR_DBM)); + + /* Prepare the DMA Stream configuration */ + tmp |= hdma->Init.Channel | hdma->Init.Direction | + hdma->Init.PeriphInc | hdma->Init.MemInc | + hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | + hdma->Init.Mode | hdma->Init.Priority; + + /* the Memory burst and peripheral burst are not used when the FIFO is disabled */ + if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE) + { + /* Get memory burst and peripheral burst */ + tmp |= hdma->Init.MemBurst | hdma->Init.PeriphBurst; + } + + /* Write to DMA Stream CR register */ + hdma->Instance->CR = tmp; + + /* Get the FCR register value */ + tmp = hdma->Instance->FCR; + + /* Clear Direct mode and FIFO threshold bits */ + tmp &= (uint32_t)~(DMA_SxFCR_DMDIS | DMA_SxFCR_FTH); + + /* Prepare the DMA Stream FIFO configuration */ + tmp |= hdma->Init.FIFOMode; + + /* The FIFO threshold is not used when the FIFO mode is disabled */ + if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE) + { + /* Get the FIFO threshold */ + tmp |= hdma->Init.FIFOThreshold; + + /* Check compatibility between FIFO threshold level and size of the memory burst */ + /* for INCR4, INCR8, INCR16 bursts */ + if (hdma->Init.MemBurst != DMA_MBURST_SINGLE) + { + if (DMA_CheckFifoParam(hdma) != HAL_OK) + { + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_PARAM; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_RESET; + + return HAL_ERROR; + } + } + } + + /* Write to DMA Stream FCR */ + hdma->Instance->FCR = tmp; + + /* Initialize StreamBaseAddress and StreamIndex parameters to be used to calculate + DMA steam Base Address needed by HAL_DMA_IRQHandler() and HAL_DMA_PollForTransfer() */ + regs = (DMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma); + + /* Clear all interrupt flags */ + regs->IFCR = 0x3FU << hdma->StreamIndex; + + /* Initialize the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Initialize the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the DMA peripheral + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma) +{ + DMA_Base_Registers *regs; + + /* Check the DMA peripheral state */ + if(hdma == NULL) + { + return HAL_ERROR; + } + + /* Check the DMA peripheral state */ + if(hdma->State == HAL_DMA_STATE_BUSY) + { + /* Return error status */ + return HAL_BUSY; + } + + /* Check the parameters */ + assert_param(IS_DMA_STREAM_ALL_INSTANCE(hdma->Instance)); + + /* Disable the selected DMA Streamx */ + __HAL_DMA_DISABLE(hdma); + + /* Reset DMA Streamx control register */ + hdma->Instance->CR = 0U; + + /* Reset DMA Streamx number of data to transfer register */ + hdma->Instance->NDTR = 0U; + + /* Reset DMA Streamx peripheral address register */ + hdma->Instance->PAR = 0U; + + /* Reset DMA Streamx memory 0 address register */ + hdma->Instance->M0AR = 0U; + + /* Reset DMA Streamx memory 1 address register */ + hdma->Instance->M1AR = 0U; + + /* Reset DMA Streamx FIFO control register */ + hdma->Instance->FCR = (uint32_t)0x00000021U; + + /* Get DMA steam Base Address */ + regs = (DMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma); + + /* Clear all interrupt flags at correct offset within the register */ + regs->IFCR = 0x3FU << hdma->StreamIndex; + + /* Clean all callbacks */ + hdma->XferCpltCallback = NULL; + hdma->XferHalfCpltCallback = NULL; + hdma->XferM1CpltCallback = NULL; + hdma->XferM1HalfCpltCallback = NULL; + hdma->XferErrorCallback = NULL; + hdma->XferAbortCallback = NULL; + + /* Reset the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Reset the DMA state */ + hdma->State = HAL_DMA_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(hdma); + + return HAL_OK; +} + +/** + * @} + */ + +/** @addtogroup DMA_Exported_Functions_Group2 + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure the source, destination address and data length and Start DMA transfer + (+) Configure the source, destination address and data length and + Start DMA transfer with interrupt + (+) Abort DMA transfer + (+) Poll for transfer complete + (+) Handle DMA interrupt request + +@endverbatim + * @{ + */ + +/** + * @brief Starts the DMA Transfer. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + + /* Process locked */ + __HAL_LOCK(hdma); + + if(HAL_DMA_STATE_READY == hdma->State) + { + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + + /* Initialize the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Configure the source, destination address and the data length */ + DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); + + /* Enable the Peripheral */ + __HAL_DMA_ENABLE(hdma); + } + else + { + /* Process unlocked */ + __HAL_UNLOCK(hdma); + + /* Return error status */ + status = HAL_BUSY; + } + return status; +} + +/** + * @brief Start the DMA Transfer with interrupt enabled. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* calculate DMA base and stream number */ + DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; + + /* Check the parameters */ + assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + + /* Process locked */ + __HAL_LOCK(hdma); + + if(HAL_DMA_STATE_READY == hdma->State) + { + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + + /* Initialize the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Configure the source, destination address and the data length */ + DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); + + /* Clear all interrupt flags at correct offset within the register */ + regs->IFCR = 0x3FU << hdma->StreamIndex; + + /* Enable Common interrupts*/ + hdma->Instance->CR |= DMA_IT_TC | DMA_IT_TE | DMA_IT_DME; + hdma->Instance->FCR |= DMA_IT_FE; + + if(hdma->XferHalfCpltCallback != NULL) + { + hdma->Instance->CR |= DMA_IT_HT; + } + + /* Enable the Peripheral */ + __HAL_DMA_ENABLE(hdma); + } + else + { + /* Process unlocked */ + __HAL_UNLOCK(hdma); + + /* Return error status */ + status = HAL_BUSY; + } + + return status; +} + +/** + * @brief Aborts the DMA Transfer. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * + * @note After disabling a DMA Stream, a check for wait until the DMA Stream is + * effectively disabled is added. If a Stream is disabled + * while a data transfer is ongoing, the current data will be transferred + * and the Stream will be effectively disabled only after the transfer of + * this single data is finished. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) +{ + /* calculate DMA base and stream number */ + DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; + + uint32_t tickstart = HAL_GetTick(); + + if(hdma->State != HAL_DMA_STATE_BUSY) + { + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_ERROR; + } + else + { + /* Disable all the transfer interrupts */ + hdma->Instance->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME); + hdma->Instance->FCR &= ~(DMA_IT_FE); + + if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL)) + { + hdma->Instance->CR &= ~(DMA_IT_HT); + } + + /* Disable the stream */ + __HAL_DMA_DISABLE(hdma); + + /* Check if the DMA Stream is effectively disabled */ + while((hdma->Instance->CR & DMA_SxCR_EN) != RESET) + { + /* Check for the Timeout */ + if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT) + { + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_TIMEOUT; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_TIMEOUT; + } + } + + /* Clear all interrupt flags at correct offset within the register */ + regs->IFCR = 0x3FU << hdma->StreamIndex; + + /* Change the DMA state*/ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + } + return HAL_OK; +} + +/** + * @brief Aborts the DMA Transfer in Interrupt mode. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) +{ + if(hdma->State != HAL_DMA_STATE_BUSY) + { + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + return HAL_ERROR; + } + else + { + /* Set Abort State */ + hdma->State = HAL_DMA_STATE_ABORT; + + /* Disable the stream */ + __HAL_DMA_DISABLE(hdma); + } + + return HAL_OK; +} + +/** + * @brief Polling for transfer complete. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @param CompleteLevel Specifies the DMA level complete. + * @note The polling mode is kept in this version for legacy. it is recommended to use the IT model instead. + * This model could be used for debug purpose. + * @note The HAL_DMA_PollForTransfer API cannot be used in circular and double buffering mode (automatic circular mode). + * @param Timeout Timeout duration. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t mask_cpltlevel; + uint32_t tickstart = HAL_GetTick(); + uint32_t tmpisr; + + /* calculate DMA base and stream number */ + DMA_Base_Registers *regs; + + if(HAL_DMA_STATE_BUSY != hdma->State) + { + /* No transfer ongoing */ + hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + __HAL_UNLOCK(hdma); + return HAL_ERROR; + } + + /* Polling mode not supported in circular mode and double buffering mode */ + if ((hdma->Instance->CR & DMA_SxCR_CIRC) != RESET) + { + hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; + return HAL_ERROR; + } + + /* Get the level transfer complete flag */ + if(CompleteLevel == HAL_DMA_FULL_TRANSFER) + { + /* Transfer Complete flag */ + mask_cpltlevel = DMA_FLAG_TCIF0_4 << hdma->StreamIndex; + } + else + { + /* Half Transfer Complete flag */ + mask_cpltlevel = DMA_FLAG_HTIF0_4 << hdma->StreamIndex; + } + + regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; + tmpisr = regs->ISR; + + while(((tmpisr & mask_cpltlevel) == RESET) && ((hdma->ErrorCode & HAL_DMA_ERROR_TE) == RESET)) + { + /* Check for the Timeout (Not applicable in circular mode)*/ + if(Timeout != HAL_MAX_DELAY) + { + if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout)) + { + /* Update error code */ + hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_TIMEOUT; + } + } + + /* Get the ISR register value */ + tmpisr = regs->ISR; + + if((tmpisr & (DMA_FLAG_TEIF0_4 << hdma->StreamIndex)) != RESET) + { + /* Update error code */ + hdma->ErrorCode |= HAL_DMA_ERROR_TE; + + /* Clear the transfer error flag */ + regs->IFCR = DMA_FLAG_TEIF0_4 << hdma->StreamIndex; + } + + if((tmpisr & (DMA_FLAG_FEIF0_4 << hdma->StreamIndex)) != RESET) + { + /* Update error code */ + hdma->ErrorCode |= HAL_DMA_ERROR_FE; + + /* Clear the FIFO error flag */ + regs->IFCR = DMA_FLAG_FEIF0_4 << hdma->StreamIndex; + } + + if((tmpisr & (DMA_FLAG_DMEIF0_4 << hdma->StreamIndex)) != RESET) + { + /* Update error code */ + hdma->ErrorCode |= HAL_DMA_ERROR_DME; + + /* Clear the Direct Mode error flag */ + regs->IFCR = DMA_FLAG_DMEIF0_4 << hdma->StreamIndex; + } + } + + if(hdma->ErrorCode != HAL_DMA_ERROR_NONE) + { + if((hdma->ErrorCode & HAL_DMA_ERROR_TE) != RESET) + { + HAL_DMA_Abort(hdma); + + /* Clear the half transfer and transfer complete flags */ + regs->IFCR = (DMA_FLAG_HTIF0_4 | DMA_FLAG_TCIF0_4) << hdma->StreamIndex; + + /* Change the DMA state */ + hdma->State= HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + return HAL_ERROR; + } + } + + /* Get the level transfer complete flag */ + if(CompleteLevel == HAL_DMA_FULL_TRANSFER) + { + /* Clear the half transfer and transfer complete flags */ + regs->IFCR = (DMA_FLAG_HTIF0_4 | DMA_FLAG_TCIF0_4) << hdma->StreamIndex; + + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + } + else + { + /* Clear the half transfer flag */ + regs->IFCR = (DMA_FLAG_HTIF0_4) << hdma->StreamIndex; + } + + return status; +} + +/** + * @brief Handles DMA interrupt request. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @retval None + */ +void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) +{ + uint32_t tmpisr; + __IO uint32_t count = 0; + uint32_t timeout = SystemCoreClock / 9600; + + /* calculate DMA base and stream number */ + DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; + + tmpisr = regs->ISR; + + /* Transfer Error Interrupt management ***************************************/ + if ((tmpisr & (DMA_FLAG_TEIF0_4 << hdma->StreamIndex)) != RESET) + { + if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TE) != RESET) + { + /* Disable the transfer error interrupt */ + hdma->Instance->CR &= ~(DMA_IT_TE); + + /* Clear the transfer error flag */ + regs->IFCR = DMA_FLAG_TEIF0_4 << hdma->StreamIndex; + + /* Update error code */ + hdma->ErrorCode |= HAL_DMA_ERROR_TE; + } + } + /* FIFO Error Interrupt management ******************************************/ + if ((tmpisr & (DMA_FLAG_FEIF0_4 << hdma->StreamIndex)) != RESET) + { + if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_FE) != RESET) + { + /* Clear the FIFO error flag */ + regs->IFCR = DMA_FLAG_FEIF0_4 << hdma->StreamIndex; + + /* Update error code */ + hdma->ErrorCode |= HAL_DMA_ERROR_FE; + } + } + /* Direct Mode Error Interrupt management ***********************************/ + if ((tmpisr & (DMA_FLAG_DMEIF0_4 << hdma->StreamIndex)) != RESET) + { + if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_DME) != RESET) + { + /* Clear the direct mode error flag */ + regs->IFCR = DMA_FLAG_DMEIF0_4 << hdma->StreamIndex; + + /* Update error code */ + hdma->ErrorCode |= HAL_DMA_ERROR_DME; + } + } + /* Half Transfer Complete Interrupt management ******************************/ + if ((tmpisr & (DMA_FLAG_HTIF0_4 << hdma->StreamIndex)) != RESET) + { + if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_HT) != RESET) + { + /* Clear the half transfer complete flag */ + regs->IFCR = DMA_FLAG_HTIF0_4 << hdma->StreamIndex; + + /* Multi_Buffering mode enabled */ + if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET) + { + /* Current memory buffer used is Memory 0 */ + if((hdma->Instance->CR & DMA_SxCR_CT) == RESET) + { + if(hdma->XferHalfCpltCallback != NULL) + { + /* Half transfer callback */ + hdma->XferHalfCpltCallback(hdma); + } + } + /* Current memory buffer used is Memory 1 */ + else + { + if(hdma->XferM1HalfCpltCallback != NULL) + { + /* Half transfer callback */ + hdma->XferM1HalfCpltCallback(hdma); + } + } + } + else + { + /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */ + if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET) + { + /* Disable the half transfer interrupt */ + hdma->Instance->CR &= ~(DMA_IT_HT); + } + + if(hdma->XferHalfCpltCallback != NULL) + { + /* Half transfer callback */ + hdma->XferHalfCpltCallback(hdma); + } + } + } + } + /* Transfer Complete Interrupt management ***********************************/ + if ((tmpisr & (DMA_FLAG_TCIF0_4 << hdma->StreamIndex)) != RESET) + { + if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TC) != RESET) + { + /* Clear the transfer complete flag */ + regs->IFCR = DMA_FLAG_TCIF0_4 << hdma->StreamIndex; + + if(HAL_DMA_STATE_ABORT == hdma->State) + { + /* Disable all the transfer interrupts */ + hdma->Instance->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME); + hdma->Instance->FCR &= ~(DMA_IT_FE); + + if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL)) + { + hdma->Instance->CR &= ~(DMA_IT_HT); + } + + /* Clear all interrupt flags at correct offset within the register */ + regs->IFCR = 0x3FU << hdma->StreamIndex; + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + if(hdma->XferAbortCallback != NULL) + { + hdma->XferAbortCallback(hdma); + } + return; + } + + if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET) + { + /* Current memory buffer used is Memory 0 */ + if((hdma->Instance->CR & DMA_SxCR_CT) == RESET) + { + if(hdma->XferM1CpltCallback != NULL) + { + /* Transfer complete Callback for memory1 */ + hdma->XferM1CpltCallback(hdma); + } + } + /* Current memory buffer used is Memory 1 */ + else + { + if(hdma->XferCpltCallback != NULL) + { + /* Transfer complete Callback for memory0 */ + hdma->XferCpltCallback(hdma); + } + } + } + /* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */ + else + { + if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET) + { + /* Disable the transfer complete interrupt */ + hdma->Instance->CR &= ~(DMA_IT_TC); + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + } + + if(hdma->XferCpltCallback != NULL) + { + /* Transfer complete callback */ + hdma->XferCpltCallback(hdma); + } + } + } + } + + /* manage error case */ + if(hdma->ErrorCode != HAL_DMA_ERROR_NONE) + { + if((hdma->ErrorCode & HAL_DMA_ERROR_TE) != RESET) + { + hdma->State = HAL_DMA_STATE_ABORT; + + /* Disable the stream */ + __HAL_DMA_DISABLE(hdma); + + do + { + if (++count > timeout) + { + break; + } + } + while((hdma->Instance->CR & DMA_SxCR_EN) != RESET); + + /* Change the DMA state */ + hdma->State = HAL_DMA_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hdma); + + } + + if(hdma->XferErrorCallback != NULL) + { + /* Transfer error callback */ + hdma->XferErrorCallback(hdma); + } + } +} + +/** + * @brief Register callbacks + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @param CallbackID User Callback identifier + * a DMA_HandleTypeDef structure as parameter. + * @param pCallback pointer to private callbacsk function which has pointer to + * a DMA_HandleTypeDef structure as parameter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)(DMA_HandleTypeDef *_hdma)) +{ + + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hdma); + + if(HAL_DMA_STATE_READY == hdma->State) + { + switch (CallbackID) + { + case HAL_DMA_XFER_CPLT_CB_ID: + hdma->XferCpltCallback = pCallback; + break; + + case HAL_DMA_XFER_HALFCPLT_CB_ID: + hdma->XferHalfCpltCallback = pCallback; + break; + + case HAL_DMA_XFER_M1CPLT_CB_ID: + hdma->XferM1CpltCallback = pCallback; + break; + + case HAL_DMA_XFER_M1HALFCPLT_CB_ID: + hdma->XferM1HalfCpltCallback = pCallback; + break; + + case HAL_DMA_XFER_ERROR_CB_ID: + hdma->XferErrorCallback = pCallback; + break; + + case HAL_DMA_XFER_ABORT_CB_ID: + hdma->XferAbortCallback = pCallback; + break; + + default: + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hdma); + + return status; +} + +/** + * @brief UnRegister callbacks + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @param CallbackID User Callback identifier + * a HAL_DMA_CallbackIDTypeDef ENUM as parameter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hdma); + + if(HAL_DMA_STATE_READY == hdma->State) + { + switch (CallbackID) + { + case HAL_DMA_XFER_CPLT_CB_ID: + hdma->XferCpltCallback = NULL; + break; + + case HAL_DMA_XFER_HALFCPLT_CB_ID: + hdma->XferHalfCpltCallback = NULL; + break; + + case HAL_DMA_XFER_M1CPLT_CB_ID: + hdma->XferM1CpltCallback = NULL; + break; + + case HAL_DMA_XFER_M1HALFCPLT_CB_ID: + hdma->XferM1HalfCpltCallback = NULL; + break; + + case HAL_DMA_XFER_ERROR_CB_ID: + hdma->XferErrorCallback = NULL; + break; + + case HAL_DMA_XFER_ABORT_CB_ID: + hdma->XferAbortCallback = NULL; + break; + + case HAL_DMA_XFER_ALL_CB_ID: + hdma->XferCpltCallback = NULL; + hdma->XferHalfCpltCallback = NULL; + hdma->XferM1CpltCallback = NULL; + hdma->XferM1HalfCpltCallback = NULL; + hdma->XferErrorCallback = NULL; + hdma->XferAbortCallback = NULL; + break; + + default: + status = HAL_ERROR; + break; + } + } + else + { + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hdma); + + return status; +} + +/** + * @} + */ + +/** @addtogroup DMA_Exported_Functions_Group3 + * +@verbatim + =============================================================================== + ##### State and Errors functions ##### + =============================================================================== + [..] + This subsection provides functions allowing to + (+) Check the DMA state + (+) Get error code + +@endverbatim + * @{ + */ + +/** + * @brief Returns the DMA state. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @retval HAL state + */ +HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) +{ + return hdma->State; +} + +/** + * @brief Return the DMA error code + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @retval DMA Error Code + */ +uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma) +{ + return hdma->ErrorCode; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup DMA_Private_Functions + * @{ + */ + +/** + * @brief Sets the DMA Transfer parameter. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) +{ + /* Clear DBM bit */ + hdma->Instance->CR &= (uint32_t)(~DMA_SxCR_DBM); + + /* Configure DMA Stream data length */ + hdma->Instance->NDTR = DataLength; + + /* Memory to Peripheral */ + if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) + { + /* Configure DMA Stream destination address */ + hdma->Instance->PAR = DstAddress; + + /* Configure DMA Stream source address */ + hdma->Instance->M0AR = SrcAddress; + } + /* Peripheral to Memory */ + else + { + /* Configure DMA Stream source address */ + hdma->Instance->PAR = SrcAddress; + + /* Configure DMA Stream destination address */ + hdma->Instance->M0AR = DstAddress; + } +} + +/** + * @brief Returns the DMA Stream base address depending on stream number + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @retval Stream base address + */ +static uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma) +{ + uint32_t stream_number = (((uint32_t)hdma->Instance & 0xFFU) - 16U) / 24U; + + /* lookup table for necessary bitshift of flags within status registers */ + static const uint8_t flagBitshiftOffset[8U] = {0U, 6U, 16U, 22U, 0U, 6U, 16U, 22U}; + hdma->StreamIndex = flagBitshiftOffset[stream_number]; + + if (stream_number > 3U) + { + /* return pointer to HISR and HIFCR */ + hdma->StreamBaseAddress = (((uint32_t)hdma->Instance & (uint32_t)(~0x3FFU)) + 4U); + } + else + { + /* return pointer to LISR and LIFCR */ + hdma->StreamBaseAddress = ((uint32_t)hdma->Instance & (uint32_t)(~0x3FFU)); + } + + return hdma->StreamBaseAddress; +} + +/** + * @brief Check compatibility between FIFO threshold level and size of the memory burst + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @retval HAL status + */ +static HAL_StatusTypeDef DMA_CheckFifoParam(DMA_HandleTypeDef *hdma) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmp = hdma->Init.FIFOThreshold; + + /* Memory Data size equal to Byte */ + if(hdma->Init.MemDataAlignment == DMA_MDATAALIGN_BYTE) + { + switch (tmp) + { + case DMA_FIFO_THRESHOLD_1QUARTERFULL: + case DMA_FIFO_THRESHOLD_3QUARTERSFULL: + if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) + { + status = HAL_ERROR; + } + break; + case DMA_FIFO_THRESHOLD_HALFFULL: + if (hdma->Init.MemBurst == DMA_MBURST_INC16) + { + status = HAL_ERROR; + } + break; + case DMA_FIFO_THRESHOLD_FULL: + break; + default: + break; + } + } + + /* Memory Data size equal to Half-Word */ + else if (hdma->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) + { + switch (tmp) + { + case DMA_FIFO_THRESHOLD_1QUARTERFULL: + case DMA_FIFO_THRESHOLD_3QUARTERSFULL: + status = HAL_ERROR; + break; + case DMA_FIFO_THRESHOLD_HALFFULL: + if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) + { + status = HAL_ERROR; + } + break; + case DMA_FIFO_THRESHOLD_FULL: + if (hdma->Init.MemBurst == DMA_MBURST_INC16) + { + status = HAL_ERROR; + } + break; + default: + break; + } + } + + /* Memory Data size equal to Word */ + else + { + switch (tmp) + { + case DMA_FIFO_THRESHOLD_1QUARTERFULL: + case DMA_FIFO_THRESHOLD_HALFFULL: + case DMA_FIFO_THRESHOLD_3QUARTERSFULL: + status = HAL_ERROR; + break; + case DMA_FIFO_THRESHOLD_FULL: + if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) + { + status = HAL_ERROR; + } + break; + default: + break; + } + } + + return status; +} + +/** + * @} + */ + +#endif /* HAL_DMA_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c new file mode 100644 index 0000000..8aadcc4 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c @@ -0,0 +1,308 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_dma_ex.c + * @author MCD Application Team + * @brief DMA Extension HAL module driver + * This file provides firmware functions to manage the following + * functionalities of the DMA Extension peripheral: + * + Extended features functions + * + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The DMA Extension HAL driver can be used as follows: + (+) Start a multi buffer transfer using the HAL_DMA_MultiBufferStart() function + for polling mode or HAL_DMA_MultiBufferStart_IT() for interrupt mode. + + -@- In Memory-to-Memory transfer mode, Multi (Double) Buffer mode is not allowed. + -@- When Multi (Double) Buffer mode is enabled, the transfer is circular by default. + -@- In Multi (Double) buffer mode, it is possible to update the base address for + the AHB memory port on the fly (DMA_SxM0AR or DMA_SxM1AR) when the stream is enabled. + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup DMAEx DMAEx + * @brief DMA Extended HAL module driver + * @{ + */ + +#ifdef HAL_DMA_MODULE_ENABLED + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private Constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/** @addtogroup DMAEx_Private_Functions + * @{ + */ + +static void DMA_MultiBufferSetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength); + +/** + * @} + */ + +/* Exported functions ---------------------------------------------------------*/ + +/** @addtogroup DMAEx_Exported_Functions + * @{ + */ + + +/** @addtogroup DMAEx_Exported_Functions_Group1 + * +@verbatim + =============================================================================== + ##### Extended features functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure the source, destination address and data length and + Start MultiBuffer DMA transfer + (+) Configure the source, destination address and data length and + Start MultiBuffer DMA transfer with interrupt + (+) Change on the fly the memory0 or memory1 address. + +@endverbatim + * @{ + */ + + +/** + * @brief Starts the multi_buffer DMA Transfer. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param SecondMemAddress The second memory Buffer address in case of multi buffer Transfer + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + + /* Memory-to-memory transfer not supported in double buffering mode */ + if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY) + { + hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; + status = HAL_ERROR; + } + else + { + /* Process Locked */ + __HAL_LOCK(hdma); + + if(HAL_DMA_STATE_READY == hdma->State) + { + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + + /* Enable the double buffer mode */ + hdma->Instance->CR |= (uint32_t)DMA_SxCR_DBM; + + /* Configure DMA Stream destination address */ + hdma->Instance->M1AR = SecondMemAddress; + + /* Configure the source, destination address and the data length */ + DMA_MultiBufferSetConfig(hdma, SrcAddress, DstAddress, DataLength); + + /* Enable the peripheral */ + __HAL_DMA_ENABLE(hdma); + } + else + { + /* Return error status */ + status = HAL_BUSY; + } + } + return status; +} + +/** + * @brief Starts the multi_buffer DMA Transfer with interrupt enabled. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param SecondMemAddress The second memory Buffer address in case of multi buffer Transfer + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + + /* Memory-to-memory transfer not supported in double buffering mode */ + if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY) + { + hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hdma); + + if(HAL_DMA_STATE_READY == hdma->State) + { + /* Change DMA peripheral state */ + hdma->State = HAL_DMA_STATE_BUSY; + + /* Initialize the error code */ + hdma->ErrorCode = HAL_DMA_ERROR_NONE; + + /* Enable the Double buffer mode */ + hdma->Instance->CR |= (uint32_t)DMA_SxCR_DBM; + + /* Configure DMA Stream destination address */ + hdma->Instance->M1AR = SecondMemAddress; + + /* Configure the source, destination address and the data length */ + DMA_MultiBufferSetConfig(hdma, SrcAddress, DstAddress, DataLength); + + /* Clear all flags */ + __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma)); + __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + + /* Enable Common interrupts*/ + hdma->Instance->CR |= DMA_IT_TC | DMA_IT_TE | DMA_IT_DME; + hdma->Instance->FCR |= DMA_IT_FE; + + if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL)) + { + hdma->Instance->CR |= DMA_IT_HT; + } + + /* Enable the peripheral */ + __HAL_DMA_ENABLE(hdma); + } + else + { + /* Process unlocked */ + __HAL_UNLOCK(hdma); + + /* Return error status */ + status = HAL_BUSY; + } + return status; +} + +/** + * @brief Change the memory0 or memory1 address on the fly. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @param Address The new address + * @param memory the memory to be changed, This parameter can be one of + * the following values: + * MEMORY0 / + * MEMORY1 + * @note The MEMORY0 address can be changed only when the current transfer use + * MEMORY1 and the MEMORY1 address can be changed only when the current + * transfer use MEMORY0. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory) +{ + if(memory == MEMORY0) + { + /* change the memory0 address */ + hdma->Instance->M0AR = Address; + } + else + { + /* change the memory1 address */ + hdma->Instance->M1AR = Address; + } + + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup DMAEx_Private_Functions + * @{ + */ + +/** + * @brief Set the DMA Transfer parameter. + * @param hdma pointer to a DMA_HandleTypeDef structure that contains + * the configuration information for the specified DMA Stream. + * @param SrcAddress The source memory Buffer address + * @param DstAddress The destination memory Buffer address + * @param DataLength The length of data to be transferred from source to destination + * @retval HAL status + */ +static void DMA_MultiBufferSetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) +{ + /* Configure DMA Stream data length */ + hdma->Instance->NDTR = DataLength; + + /* Peripheral to Memory */ + if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) + { + /* Configure DMA Stream destination address */ + hdma->Instance->PAR = DstAddress; + + /* Configure DMA Stream source address */ + hdma->Instance->M0AR = SrcAddress; + } + /* Memory to Peripheral */ + else + { + /* Configure DMA Stream source address */ + hdma->Instance->PAR = SrcAddress; + + /* Configure DMA Stream destination address */ + hdma->Instance->M0AR = DstAddress; + } +} + +/** + * @} + */ + +#endif /* HAL_DMA_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c new file mode 100644 index 0000000..3feffc6 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c @@ -0,0 +1,547 @@ +/** + ****************************************************************************** + * @file stm32F7xx_hal_exti.c + * @author MCD Application Team + * @brief EXTI HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Extended Interrupts and events controller (EXTI) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### EXTI Peripheral features ##### + ============================================================================== + [..] + (+) Each Exti line can be configured within this driver. + + (+) Exti line can be configured in 3 different modes + (++) Interrupt + (++) Event + (++) Both of them + + (+) Configurable Exti lines can be configured with 3 different triggers + (++) Rising + (++) Falling + (++) Both of them + + (+) When set in interrupt mode, configurable Exti lines have two different + interrupts pending registers which allow to distinguish which transition + occurs: + (++) Rising edge pending interrupt + (++) Falling + + (+) Exti lines 0 to 15 are linked to gpio pin number 0 to 15. Gpio port can + be selected through multiplexer. + + ##### How to use this driver ##### + ============================================================================== + [..] + + (#) Configure the EXTI line using HAL_EXTI_SetConfigLine(). + (++) Choose the interrupt line number by setting "Line" member from + EXTI_ConfigTypeDef structure. + (++) Configure the interrupt and/or event mode using "Mode" member from + EXTI_ConfigTypeDef structure. + (++) For configurable lines, configure rising and/or falling trigger + "Trigger" member from EXTI_ConfigTypeDef structure. + (++) For Exti lines linked to gpio, choose gpio port using "GPIOSel" + member from GPIO_InitTypeDef structure. + + (#) Get current Exti configuration of a dedicated line using + HAL_EXTI_GetConfigLine(). + (++) Provide exiting handle as parameter. + (++) Provide pointer on EXTI_ConfigTypeDef structure as second parameter. + + (#) Clear Exti configuration of a dedicated line using HAL_EXTI_ClearConfigLine(). + (++) Provide exiting handle as parameter. + + (#) Register callback to treat Exti interrupts using HAL_EXTI_RegisterCallback(). + (++) Provide exiting handle as first parameter. + (++) Provide which callback will be registered using one value from + EXTI_CallbackIDTypeDef. + (++) Provide callback function pointer. + + (#) Get interrupt pending bit using HAL_EXTI_GetPending(). + + (#) Clear interrupt pending bit using HAL_EXTI_ClearPending(). + + (#) Generate software interrupt using HAL_EXTI_GenerateSWI(). + + @endverbatim + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup EXTI + * @{ + */ +/** MISRA C:2012 deviation rule has been granted for following rule: + * Rule-18.1_b - Medium: Array `EXTICR' 1st subscript interval [0,7] may be out + * of bounds [0,3] in following API : + * HAL_EXTI_SetConfigLine + * HAL_EXTI_GetConfigLine + * HAL_EXTI_ClearConfigLine + */ + +#ifdef HAL_EXTI_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private defines -----------------------------------------------------------*/ +/** @defgroup EXTI_Private_Constants EXTI Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @addtogroup EXTI_Exported_Functions + * @{ + */ + +/** @addtogroup EXTI_Exported_Functions_Group1 + * @brief Configuration functions + * +@verbatim + =============================================================================== + ##### Configuration functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Set configuration of a dedicated Exti line. + * @param hexti Exti handle. + * @param pExtiConfig Pointer on EXTI configuration to be set. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig) +{ + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + + /* Check null pointer */ + if ((hexti == NULL) || (pExtiConfig == NULL)) + { + return HAL_ERROR; + } + + /* Check parameters */ + assert_param(IS_EXTI_LINE(pExtiConfig->Line)); + assert_param(IS_EXTI_MODE(pExtiConfig->Mode)); + + /* Assign line number to handle */ + hexti->Line = pExtiConfig->Line; + + /* Compute line mask */ + linepos = (pExtiConfig->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* Configure triggers for configurable lines */ + if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u) + { + assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger)); + + /* Configure rising trigger */ + /* Mask or set line */ + if ((pExtiConfig->Trigger & EXTI_TRIGGER_RISING) != 0x00u) + { + EXTI->RTSR |= maskline; + } + else + { + EXTI->RTSR &= ~maskline; + } + + /* Configure falling trigger */ + /* Mask or set line */ + if ((pExtiConfig->Trigger & EXTI_TRIGGER_FALLING) != 0x00u) + { + EXTI->FTSR |= maskline; + } + else + { + EXTI->FTSR &= ~maskline; + } + + + /* Configure gpio port selection in case of gpio exti line */ + if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO) + { + assert_param(IS_EXTI_GPIO_PORT(pExtiConfig->GPIOSel)); + assert_param(IS_EXTI_GPIO_PIN(linepos)); + + regval = SYSCFG->EXTICR[linepos >> 2u]; + regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + SYSCFG->EXTICR[linepos >> 2u] = regval; + } + } + + /* Configure interrupt mode : read current mode */ + /* Mask or set line */ + if ((pExtiConfig->Mode & EXTI_MODE_INTERRUPT) != 0x00u) + { + EXTI->IMR |= maskline; + } + else + { + EXTI->IMR &= ~maskline; + } + + /* Configure event mode : read current mode */ + /* Mask or set line */ + if ((pExtiConfig->Mode & EXTI_MODE_EVENT) != 0x00u) + { + EXTI->EMR |= maskline; + } + else + { + EXTI->EMR &= ~maskline; + } + + return HAL_OK; +} + +/** + * @brief Get configuration of a dedicated Exti line. + * @param hexti Exti handle. + * @param pExtiConfig Pointer on structure to store Exti configuration. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig) +{ + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + + /* Check null pointer */ + if ((hexti == NULL) || (pExtiConfig == NULL)) + { + return HAL_ERROR; + } + + /* Check the parameter */ + assert_param(IS_EXTI_LINE(hexti->Line)); + + /* Store handle line number to configuration structure */ + pExtiConfig->Line = hexti->Line; + + /* Compute line mask */ + linepos = (pExtiConfig->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* 1] Get core mode : interrupt */ + + /* Check if selected line is enable */ + if ((EXTI->IMR & maskline) != 0x00u) + { + pExtiConfig->Mode = EXTI_MODE_INTERRUPT; + } + else + { + pExtiConfig->Mode = EXTI_MODE_NONE; + } + + /* Get event mode */ + /* Check if selected line is enable */ + if ((EXTI->EMR & maskline) != 0x00u) + { + pExtiConfig->Mode |= EXTI_MODE_EVENT; + } + + /* Get default Trigger and GPIOSel configuration */ + pExtiConfig->Trigger = EXTI_TRIGGER_NONE; + pExtiConfig->GPIOSel = 0x00u; + + /* 2] Get trigger for configurable lines : rising */ + if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u) + { + /* Check if configuration of selected line is enable */ + if ((EXTI->RTSR & maskline) != 0x00u) + { + pExtiConfig->Trigger = EXTI_TRIGGER_RISING; + } + + /* Get falling configuration */ + /* Check if configuration of selected line is enable */ + if ((EXTI->FTSR & maskline) != 0x00u) + { + pExtiConfig->Trigger |= EXTI_TRIGGER_FALLING; + } + + /* Get Gpio port selection for gpio lines */ + if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO) + { + assert_param(IS_EXTI_GPIO_PIN(linepos)); + + regval = SYSCFG->EXTICR[linepos >> 2u]; + pExtiConfig->GPIOSel = (regval >> (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))) & SYSCFG_EXTICR1_EXTI0; + } + } + + return HAL_OK; +} + +/** + * @brief Clear whole configuration of a dedicated Exti line. + * @param hexti Exti handle. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti) +{ + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + + /* Check null pointer */ + if (hexti == NULL) + { + return HAL_ERROR; + } + + /* Check the parameter */ + assert_param(IS_EXTI_LINE(hexti->Line)); + + /* compute line mask */ + linepos = (hexti->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* 1] Clear interrupt mode */ + EXTI->IMR = (EXTI->IMR & ~maskline); + + /* 2] Clear event mode */ + EXTI->EMR = (EXTI->EMR & ~maskline); + + /* 3] Clear triggers in case of configurable lines */ + if ((hexti->Line & EXTI_CONFIG) != 0x00u) + { + EXTI->RTSR = (EXTI->RTSR & ~maskline); + EXTI->FTSR = (EXTI->FTSR & ~maskline); + + /* Get Gpio port selection for gpio lines */ + if ((hexti->Line & EXTI_GPIO) == EXTI_GPIO) + { + assert_param(IS_EXTI_GPIO_PIN(linepos)); + + regval = SYSCFG->EXTICR[linepos >> 2u]; + regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + SYSCFG->EXTICR[linepos >> 2u] = regval; + } + } + + return HAL_OK; +} + +/** + * @brief Register callback for a dedicated Exti line. + * @param hexti Exti handle. + * @param CallbackID User callback identifier. + * This parameter can be one of @arg @ref EXTI_CallbackIDTypeDef values. + * @param pPendingCbfn function pointer to be stored as callback. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef CallbackID, void (*pPendingCbfn)(void)) +{ + HAL_StatusTypeDef status = HAL_OK; + + switch (CallbackID) + { + case HAL_EXTI_COMMON_CB_ID: + hexti->PendingCallback = pPendingCbfn; + break; + + default: + status = HAL_ERROR; + break; + } + + return status; +} + +/** + * @brief Store line number as handle private field. + * @param hexti Exti handle. + * @param ExtiLine Exti line number. + * This parameter can be from 0 to @ref EXTI_LINE_NB. + * @retval HAL Status. + */ +HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine) +{ + /* Check the parameters */ + assert_param(IS_EXTI_LINE(ExtiLine)); + + /* Check null pointer */ + if (hexti == NULL) + { + return HAL_ERROR; + } + else + { + /* Store line number as handle private field */ + hexti->Line = ExtiLine; + + return HAL_OK; + } +} + +/** + * @} + */ + +/** @addtogroup EXTI_Exported_Functions_Group2 + * @brief EXTI IO functions. + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Handle EXTI interrupt request. + * @param hexti Exti handle. + * @retval none. + */ +void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti) +{ + uint32_t regval; + uint32_t maskline; + + /* Compute line mask */ + maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + + /* Get pending bit */ + regval = (EXTI->PR & maskline); + if (regval != 0x00u) + { + /* Clear pending bit */ + EXTI->PR = maskline; + + /* Call callback */ + if (hexti->PendingCallback != NULL) + { + hexti->PendingCallback(); + } + } +} + +/** + * @brief Get interrupt pending bit of a dedicated line. + * @param hexti Exti handle. + * @param Edge Specify which pending edge as to be checked. + * This parameter can be one of the following values: + * @arg @ref EXTI_TRIGGER_RISING_FALLING + * This parameter is kept for compatibility with other series. + * @retval 1 if interrupt is pending else 0. + */ +uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge) +{ + uint32_t regval; + uint32_t linepos; + uint32_t maskline; + + /* Check parameters */ + assert_param(IS_EXTI_LINE(hexti->Line)); + assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + assert_param(IS_EXTI_PENDING_EDGE(Edge)); + + /* Compute line mask */ + linepos = (hexti->Line & EXTI_PIN_MASK); + maskline = (1uL << linepos); + + /* return 1 if bit is set else 0 */ + regval = ((EXTI->PR & maskline) >> linepos); + return regval; +} + +/** + * @brief Clear interrupt pending bit of a dedicated line. + * @param hexti Exti handle. + * @param Edge Specify which pending edge as to be clear. + * This parameter can be one of the following values: + * @arg @ref EXTI_TRIGGER_RISING_FALLING + * This parameter is kept for compatibility with other series. + * @retval None. + */ +void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge) +{ + uint32_t maskline; + + /* Check parameters */ + assert_param(IS_EXTI_LINE(hexti->Line)); + assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + assert_param(IS_EXTI_PENDING_EDGE(Edge)); + + /* Compute line mask */ + maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + + /* Clear Pending bit */ + EXTI->PR = maskline; +} + +/** + * @brief Generate a software interrupt for a dedicated line. + * @param hexti Exti handle. + * @retval None. + */ +void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti) +{ + uint32_t maskline; + + /* Check parameters */ + assert_param(IS_EXTI_LINE(hexti->Line)); + assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + + /* Compute line mask */ + maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + + /* Generate Software interrupt */ + EXTI->SWIER = maskline; +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_EXTI_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c new file mode 100644 index 0000000..d82d629 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c @@ -0,0 +1,819 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_flash.c + * @author MCD Application Team + * @brief FLASH HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the internal FLASH memory: + * + Program operations functions + * + Memory Control functions + * + Peripheral Errors functions + * + @verbatim + ============================================================================== + ##### FLASH peripheral features ##### + ============================================================================== + + [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses + to the Flash memory. It implements the erase and program Flash memory operations + and the read and write protection mechanisms. + + [..] The Flash memory interface accelerates code execution with a system of instruction + prefetch and cache lines. + + [..] The FLASH main features are: + (+) Flash memory read operations + (+) Flash memory program/erase operations + (+) Read / write protections + (+) Prefetch on I-Code + (+) 64 cache lines of 128 bits on I-Code + (+) 8 cache lines of 128 bits on D-Code + + ##### How to use this driver ##### + ============================================================================== + [..] + This driver provides functions and macros to configure and program the FLASH + memory of all STM32F7xx devices. + + (#) FLASH Memory IO Programming functions: + (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and + HAL_FLASH_Lock() functions + (++) Program functions: byte, half word, word and double word + (++) There Two modes of programming : + (+++) Polling mode using HAL_FLASH_Program() function + (+++) Interrupt mode using HAL_FLASH_Program_IT() function + + (#) Interrupts and flags management functions : + (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler() + (++) Wait for last FLASH operation according to its status + (++) Get error flag status by calling HAL_SetErrorCode() + [..] + In addition to these functions, this driver includes a set of macros allowing + to handle the following operations: + (+) Set the latency + (+) Enable/Disable the prefetch buffer + (+) Enable/Disable the Instruction cache and the Data cache + (+) Reset the Instruction cache and the Data cache + (+) Enable/Disable the FLASH interrupts + (+) Monitor the FLASH flags status + [..] + (@) For any Flash memory program operation (erase or program), the CPU clock frequency + (HCLK) must be at least 1MHz. + (@) The contents of the Flash memory are not guaranteed if a device reset occurs during + a Flash memory operation. + (@) Any attempt to read the Flash memory while it is being written or erased, causes the + bus to stall. Read operations are processed correctly once the program operation has + completed. This means that code or data fetches cannot be performed while a write/erase + operation is ongoing. + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup FLASH FLASH + * @brief FLASH HAL module driver + * @{ + */ + +#ifdef HAL_FLASH_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @addtogroup FLASH_Private_Constants + * @{ + */ +#define SECTOR_MASK ((uint32_t)0xFFFFFF07U) +#define FLASH_TIMEOUT_VALUE ((uint32_t)50000U)/* 50 s */ +/** + * @} + */ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @addtogroup FLASH_Private_Variables + * @{ + */ +/* Variable used for Erase sectors under interruption */ +FLASH_ProcessTypeDef pFlash; +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/** @addtogroup FLASH_Private_Functions + * @{ + */ +/* Program operations */ +static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data); +static void FLASH_Program_Word(uint32_t Address, uint32_t Data); +static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data); +static void FLASH_Program_Byte(uint32_t Address, uint8_t Data); +static void FLASH_SetErrorCode(void); + +HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup FLASH_Exported_Functions FLASH Exported Functions + * @{ + */ + +/** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions + * @brief Programming operation functions + * +@verbatim + =============================================================================== + ##### Programming operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the FLASH + program operations. + +@endverbatim + * @{ + */ + +/** + * @brief Program byte, halfword, word or double word at a specified address + * @param TypeProgram Indicate the way to program at a specified address. + * This parameter can be a value of @ref FLASH_Type_Program + * @param Address specifies the address to be programmed. + * @param Data specifies the data to be programmed + * + * @retval HAL_StatusTypeDef HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) +{ + HAL_StatusTypeDef status = HAL_ERROR; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Check the parameters */ + assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + switch(TypeProgram) + { + case FLASH_TYPEPROGRAM_BYTE : + { + /*Program byte (8-bit) at a specified address.*/ + FLASH_Program_Byte(Address, (uint8_t) Data); + break; + } + + case FLASH_TYPEPROGRAM_HALFWORD : + { + /*Program halfword (16-bit) at a specified address.*/ + FLASH_Program_HalfWord(Address, (uint16_t) Data); + break; + } + + case FLASH_TYPEPROGRAM_WORD : + { + /*Program word (32-bit) at a specified address.*/ + FLASH_Program_Word(Address, (uint32_t) Data); + break; + } + + case FLASH_TYPEPROGRAM_DOUBLEWORD : + { + /*Program double word (64-bit) at a specified address.*/ + FLASH_Program_DoubleWord(Address, Data); + break; + } + default : + break; + } + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + /* If the program operation is completed, disable the PG Bit */ + FLASH->CR &= (~FLASH_CR_PG); + } + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + + return status; +} + +/** + * @brief Program byte, halfword, word or double word at a specified address with interrupt enabled. + * @param TypeProgram Indicate the way to program at a specified address. + * This parameter can be a value of @ref FLASH_Type_Program + * @param Address specifies the address to be programmed. + * @param Data specifies the data to be programmed + * + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Check the parameters */ + assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); + + /* Enable End of FLASH Operation interrupt */ + __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP); + + /* Enable Error source interrupt */ + __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR); + + /* Clear pending flags (if any) */ + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |\ + FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR); + + pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM; + pFlash.Address = Address; + + switch(TypeProgram) + { + case FLASH_TYPEPROGRAM_BYTE : + { + /*Program byte (8-bit) at a specified address.*/ + FLASH_Program_Byte(Address, (uint8_t) Data); + break; + } + + case FLASH_TYPEPROGRAM_HALFWORD : + { + /*Program halfword (16-bit) at a specified address.*/ + FLASH_Program_HalfWord(Address, (uint16_t) Data); + break; + } + + case FLASH_TYPEPROGRAM_WORD : + { + /*Program word (32-bit) at a specified address.*/ + FLASH_Program_Word(Address, (uint32_t) Data); + break; + } + + case FLASH_TYPEPROGRAM_DOUBLEWORD : + { + /*Program double word (64-bit) at a specified address.*/ + FLASH_Program_DoubleWord(Address, Data); + break; + } + default : + break; + } + return status; +} + +/** + * @brief This function handles FLASH interrupt request. + * @retval None + */ +void HAL_FLASH_IRQHandler(void) +{ + uint32_t temp = 0; + + /* If the program operation is completed, disable the PG Bit */ + FLASH->CR &= (~FLASH_CR_PG); + + /* If the erase operation is completed, disable the SER Bit */ + FLASH->CR &= (~FLASH_CR_SER); + FLASH->CR &= SECTOR_MASK; + + /* if the erase operation is completed, disable the MER Bit */ + FLASH->CR &= (~FLASH_MER_BIT); + + /* Check FLASH End of Operation flag */ + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) + { + /* Clear FLASH End of Operation pending bit */ + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); + + switch (pFlash.ProcedureOnGoing) + { + case FLASH_PROC_SECTERASE : + { + /* Nb of sector to erased can be decreased */ + pFlash.NbSectorsToErase--; + + /* Check if there are still sectors to erase */ + if(pFlash.NbSectorsToErase != 0) + { + temp = pFlash.Sector; + /* Indicate user which sector has been erased */ + HAL_FLASH_EndOfOperationCallback(temp); + + /* Increment sector number */ + temp = ++pFlash.Sector; + FLASH_Erase_Sector(temp, pFlash.VoltageForErase); + } + else + { + /* No more sectors to Erase, user callback can be called.*/ + /* Reset Sector and stop Erase sectors procedure */ + pFlash.Sector = temp = 0xFFFFFFFFU; + /* FLASH EOP interrupt user callback */ + HAL_FLASH_EndOfOperationCallback(temp); + /* Sector Erase procedure is completed */ + pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + } + break; + } + + case FLASH_PROC_MASSERASE : + { + /* MassErase ended. Return the selected bank : in this product we don't have Banks */ + /* FLASH EOP interrupt user callback */ + HAL_FLASH_EndOfOperationCallback(0); + /* MAss Erase procedure is completed */ + pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + break; + } + + case FLASH_PROC_PROGRAM : + { + /*Program ended. Return the selected address*/ + /* FLASH EOP interrupt user callback */ + HAL_FLASH_EndOfOperationCallback(pFlash.Address); + /* Programming procedure is completed */ + pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + break; + } + default : + break; + } + } + + /* Check FLASH operation error flags */ + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ALL_ERRORS) != RESET) + { + switch (pFlash.ProcedureOnGoing) + { + case FLASH_PROC_SECTERASE : + { + /* return the faulty sector */ + temp = pFlash.Sector; + pFlash.Sector = 0xFFFFFFFFU; + break; + } + case FLASH_PROC_MASSERASE : + { + /* No return in case of Mass Erase */ + temp = 0; + break; + } + case FLASH_PROC_PROGRAM : + { + /*return the faulty address*/ + temp = pFlash.Address; + break; + } + default : + break; + } + /*Save the Error code*/ + FLASH_SetErrorCode(); + + /* FLASH error interrupt user callback */ + HAL_FLASH_OperationErrorCallback(temp); + + /*Stop the procedure ongoing */ + pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + } + + if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE) + { + /* Disable End of FLASH Operation interrupt */ + __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP); + + /* Disable Error source interrupt */ + __HAL_FLASH_DISABLE_IT(FLASH_IT_ERR); + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + } + +} + +/** + * @brief FLASH end of operation interrupt callback + * @param ReturnValue The value saved in this parameter depends on the ongoing procedure + * - Sectors Erase: Sector which has been erased (if 0xFFFFFFFF, it means that + * all the selected sectors have been erased) + * - Program : Address which was selected for data program + * - Mass Erase : No return value expected + * @retval None + */ +__weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(ReturnValue); + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_FLASH_EndOfOperationCallback could be implemented in the user file + */ +} + +/** + * @brief FLASH operation error interrupt callback + * @param ReturnValue The value saved in this parameter depends on the ongoing procedure + * - Sectors Erase: Sector which has been erased (if 0xFFFFFFFF, it means that + * all the selected sectors have been erased) + * - Program : Address which was selected for data program + * - Mass Erase : No return value expected + * @retval None + */ +__weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(ReturnValue); + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_FLASH_OperationErrorCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions + * @brief management functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the FLASH + memory operations. + +@endverbatim + * @{ + */ + +/** + * @brief Unlock the FLASH control register access + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Unlock(void) +{ + HAL_StatusTypeDef status = HAL_OK; + + if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) + { + /* Authorize the FLASH Registers access */ + WRITE_REG(FLASH->KEYR, FLASH_KEY1); + WRITE_REG(FLASH->KEYR, FLASH_KEY2); + + /* Verify Flash is unlocked */ + if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) + { + status = HAL_ERROR; + } + } + + return status; +} + +/** + * @brief Locks the FLASH control register access + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_Lock(void) +{ + /* Set the LOCK Bit to lock the FLASH Registers access */ + FLASH->CR |= FLASH_CR_LOCK; + + return HAL_OK; +} + +/** + * @brief Unlock the FLASH Option Control Registers access. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) +{ + if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) + { + /* Authorizes the Option Byte register programming */ + FLASH->OPTKEYR = FLASH_OPT_KEY1; + FLASH->OPTKEYR = FLASH_OPT_KEY2; + } + else + { + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @brief Lock the FLASH Option Control Registers access. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_OB_Lock(void) +{ + /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ + FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK; + + return HAL_OK; +} + +/** + * @brief Launch the option byte loading. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASH_OB_Launch(void) +{ + /* Set the OPTSTRT bit in OPTCR register */ + FLASH->OPTCR |= FLASH_OPTCR_OPTSTRT; + + /* Wait for last operation to be completed */ + return(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE)); +} + +/** + * @} + */ + +/** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions + * @brief Peripheral Errors functions + * +@verbatim + =============================================================================== + ##### Peripheral Errors functions ##### + =============================================================================== + [..] + This subsection permits to get in run-time Errors of the FLASH peripheral. + +@endverbatim + * @{ + */ + +/** + * @brief Get the specific FLASH error flag. + * @retval FLASH_ErrorCode: The returned value can be: + * @arg FLASH_ERROR_ERS: FLASH Erasing Sequence error flag + * @arg FLASH_ERROR_PGP: FLASH Programming Parallelism error flag + * @arg FLASH_ERROR_PGA: FLASH Programming Alignment error flag + * @arg FLASH_ERROR_WRP: FLASH Write protected error flag + * @arg FLASH_ERROR_OPERATION: FLASH operation Error flag + */ +uint32_t HAL_FLASH_GetError(void) +{ + return pFlash.ErrorCode; +} + +/** + * @} + */ + +/** + * @brief Wait for a FLASH operation to complete. + * @param Timeout maximum flash operationtimeout + * @retval HAL Status + */ +HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) +{ + uint32_t tickstart = 0; + + /* Clear Error Code */ + pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + + /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. + Even if the FLASH operation fails, the BUSY flag will be reset and an error + flag will be set */ + /* Get tick */ + tickstart = HAL_GetTick(); + + while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET) + { + if(Timeout != HAL_MAX_DELAY) + { + if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout)) + { + return HAL_TIMEOUT; + } + } + } + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ALL_ERRORS) != RESET) + { + /*Save the error code*/ + FLASH_SetErrorCode(); + return HAL_ERROR; + } + + /* Check FLASH End of Operation flag */ + if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) + { + /* Clear FLASH End of Operation pending bit */ + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); + } + + /* If there is an error flag set */ + return HAL_OK; + +} + +/** + * @brief Program a double word (64-bit) at a specified address. + * @note This function must be used when the device voltage range is from + * 2.7V to 3.6V and an External Vpp is present. + * + * @note If an erase and a program operations are requested simultaneously, + * the erase operation is performed before the program one. + * + * @param Address specifies the address to be programmed. + * @param Data specifies the data to be programmed. + * @retval None + */ +static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data) +{ + /* Check the parameters */ + assert_param(IS_FLASH_ADDRESS(Address)); + + /* If the previous operation is completed, proceed to program the new data */ + FLASH->CR &= CR_PSIZE_MASK; + FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD; + FLASH->CR |= FLASH_CR_PG; + + /* Program first word */ + *(__IO uint32_t*)Address = (uint32_t)Data; + /* Barrier to ensure programming is performed in 2 steps, in right order + (independently of compiler optimization behavior) */ + __ISB(); + + /* Program second word */ + *(__IO uint32_t*)(Address+4) = (uint32_t)(Data >> 32); + + /* Data synchronous Barrier (DSB) Just after the write operation + This will force the CPU to respect the sequence of instruction (no optimization).*/ + __DSB(); +} + + +/** + * @brief Program word (32-bit) at a specified address. + * @note This function must be used when the device voltage range is from + * 2.7V to 3.3V. + * + * @note If an erase and a program operations are requested simultaneously, + * the erase operation is performed before the program one. + * + * @param Address specifies the address to be programmed. + * @param Data specifies the data to be programmed. + * @retval None + */ +static void FLASH_Program_Word(uint32_t Address, uint32_t Data) +{ + /* Check the parameters */ + assert_param(IS_FLASH_ADDRESS(Address)); + + /* If the previous operation is completed, proceed to program the new data */ + FLASH->CR &= CR_PSIZE_MASK; + FLASH->CR |= FLASH_PSIZE_WORD; + FLASH->CR |= FLASH_CR_PG; + + *(__IO uint32_t*)Address = Data; + + /* Data synchronous Barrier (DSB) Just after the write operation + This will force the CPU to respect the sequence of instruction (no optimization).*/ + __DSB(); +} + +/** + * @brief Program a half-word (16-bit) at a specified address. + * @note This function must be used when the device voltage range is from + * 2.1V to 3.6V. + * + * @note If an erase and a program operations are requested simultaneously, + * the erase operation is performed before the program one. + * + * @param Address specifies the address to be programmed. + * @param Data specifies the data to be programmed. + * @retval None + */ +static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data) +{ + /* Check the parameters */ + assert_param(IS_FLASH_ADDRESS(Address)); + + /* If the previous operation is completed, proceed to program the new data */ + FLASH->CR &= CR_PSIZE_MASK; + FLASH->CR |= FLASH_PSIZE_HALF_WORD; + FLASH->CR |= FLASH_CR_PG; + + *(__IO uint16_t*)Address = Data; + + /* Data synchronous Barrier (DSB) Just after the write operation + This will force the CPU to respect the sequence of instruction (no optimization).*/ + __DSB(); + +} + +/** + * @brief Program byte (8-bit) at a specified address. + * @note This function must be used when the device voltage range is from + * 1.7V to 3.6V. + * + * @note If an erase and a program operations are requested simultaneously, + * the erase operation is performed before the program one. + * + * @param Address specifies the address to be programmed. + * @param Data specifies the data to be programmed. + * @retval None + */ +static void FLASH_Program_Byte(uint32_t Address, uint8_t Data) +{ + /* Check the parameters */ + assert_param(IS_FLASH_ADDRESS(Address)); + + /* If the previous operation is completed, proceed to program the new data */ + FLASH->CR &= CR_PSIZE_MASK; + FLASH->CR |= FLASH_PSIZE_BYTE; + FLASH->CR |= FLASH_CR_PG; + + *(__IO uint8_t*)Address = Data; + + /* Data synchronous Barrier (DSB) Just after the write operation + This will force the CPU to respect the sequence of instruction (no optimization).*/ + __DSB(); +} + +/** + * @brief Set the specific FLASH error flag. + * @retval None + */ +static void FLASH_SetErrorCode(void) +{ + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_OPERATION; + } + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; + } + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) != RESET) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; + } + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGPERR) != RESET) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_PGP; + } + + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ERSERR) != RESET) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_ERS; + } + +#if defined (FLASH_OPTCR2_PCROP) + if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) != RESET) + { + pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; + } +#endif /* FLASH_OPTCR2_PCROP */ + + /* Clear error programming flags */ + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS); +} + +/** + * @} + */ + +#endif /* HAL_FLASH_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c new file mode 100644 index 0000000..b10c0d0 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c @@ -0,0 +1,1119 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_flash_ex.c + * @author MCD Application Team + * @brief Extended FLASH HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the FLASH extension peripheral: + * + Extended programming operations functions + * + @verbatim + ============================================================================== + ##### Flash Extension features ##### + ============================================================================== + + [..] Comparing to other previous devices, the FLASH interface for STM32F76xx/STM32F77xx + devices contains the following additional features + + (+) Capacity up to 2 Mbyte with dual bank architecture supporting read-while-write + capability (RWW) + (+) Dual bank memory organization + (+) Dual boot mode + + ##### How to use this driver ##### + ============================================================================== + [..] This driver provides functions to configure and program the FLASH memory + of all STM32F7xx devices. It includes + (#) FLASH Memory Erase functions: + (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and + HAL_FLASH_Lock() functions + (++) Erase function: Erase sector, erase all sectors + (++) There are two modes of erase : + (+++) Polling Mode using HAL_FLASHEx_Erase() + (+++) Interrupt Mode using HAL_FLASHEx_Erase_IT() + + (#) Option Bytes Programming functions: Use HAL_FLASHEx_OBProgram() to : + (++) Set/Reset the write protection + (++) Set the Read protection Level + (++) Set the BOR level + (++) Program the user Option Bytes + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup FLASHEx FLASHEx + * @brief FLASH HAL Extension module driver + * @{ + */ + +#ifdef HAL_FLASH_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @addtogroup FLASHEx_Private_Constants + * @{ + */ +#define SECTOR_MASK 0xFFFFFF07U +#define FLASH_TIMEOUT_VALUE 50000U/* 50 s */ +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @addtogroup FLASHEx_Private_Variables + * @{ + */ +extern FLASH_ProcessTypeDef pFlash; +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/** @addtogroup FLASHEx_Private_Functions + * @{ + */ +/* Option bytes control */ +static HAL_StatusTypeDef FLASH_OB_EnableWRP(uint32_t WRPSector); +static HAL_StatusTypeDef FLASH_OB_DisableWRP(uint32_t WRPSector); +static HAL_StatusTypeDef FLASH_OB_RDP_LevelConfig(uint8_t Level); +static HAL_StatusTypeDef FLASH_OB_BOR_LevelConfig(uint8_t Level); +static HAL_StatusTypeDef FLASH_OB_BootAddressConfig(uint32_t BootOption, uint32_t Address); +static uint32_t FLASH_OB_GetUser(void); +static uint32_t FLASH_OB_GetWRP(void); +static uint8_t FLASH_OB_GetRDP(void); +static uint32_t FLASH_OB_GetBOR(void); +static uint32_t FLASH_OB_GetBootAddress(uint32_t BootOption); + +#if defined (FLASH_OPTCR_nDBANK) +static void FLASH_MassErase(uint8_t VoltageRange, uint32_t Banks); +static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t Stdby, uint32_t Iwdgstop, \ + uint32_t Iwdgstdby, uint32_t NDBank, uint32_t NDBoot); +#else +static void FLASH_MassErase(uint8_t VoltageRange); +static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t Stdby, uint32_t Iwdgstop, uint32_t Iwdgstdby); +#endif /* FLASH_OPTCR_nDBANK */ + +#if defined (FLASH_OPTCR2_PCROP) +static HAL_StatusTypeDef FLASH_OB_PCROP_Config(uint32_t PCROPSector); +static HAL_StatusTypeDef FLASH_OB_PCROP_RDP_Config(uint32_t Pcrop_Rdp); +static uint32_t FLASH_OB_GetPCROP(void); +static uint32_t FLASH_OB_GetPCROPRDP(void); +#endif /* FLASH_OPTCR2_PCROP */ + +extern HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup FLASHEx_Exported_Functions FLASHEx Exported Functions + * @{ + */ + +/** @defgroup FLASHEx_Exported_Functions_Group1 Extended IO operation functions + * @brief Extended IO operation functions + * +@verbatim + =============================================================================== + ##### Extended programming operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the Extension FLASH + programming operations Operations. + +@endverbatim + * @{ + */ +/** + * @brief Perform a mass erase or erase the specified FLASH memory sectors + * @param[in] pEraseInit pointer to an FLASH_EraseInitTypeDef structure that + * contains the configuration information for the erasing. + * + * @param[out] SectorError pointer to variable that + * contains the configuration information on faulty sector in case of error + * (0xFFFFFFFF means that all the sectors have been correctly erased) + * + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError) +{ + HAL_StatusTypeDef status = HAL_ERROR; + uint32_t index = 0; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Check the parameters */ + assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /*Initialization of SectorError variable*/ + *SectorError = 0xFFFFFFFFU; + + if(pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE) + { + /*Mass erase to be done*/ +#if defined (FLASH_OPTCR_nDBANK) + FLASH_MassErase((uint8_t) pEraseInit->VoltageRange, pEraseInit->Banks); +#else + FLASH_MassErase((uint8_t) pEraseInit->VoltageRange); +#endif /* FLASH_OPTCR_nDBANK */ + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + /* if the erase operation is completed, disable the MER Bit */ + FLASH->CR &= (~FLASH_MER_BIT); + } + else + { + /* Check the parameters */ + assert_param(IS_FLASH_NBSECTORS(pEraseInit->NbSectors + pEraseInit->Sector)); + + /* Erase by sector by sector to be done*/ + for(index = pEraseInit->Sector; index < (pEraseInit->NbSectors + pEraseInit->Sector); index++) + { + FLASH_Erase_Sector(index, (uint8_t) pEraseInit->VoltageRange); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + /* If the erase operation is completed, disable the SER Bit and SNB Bits */ + CLEAR_BIT(FLASH->CR, (FLASH_CR_SER | FLASH_CR_SNB)); + + if(status != HAL_OK) + { + /* In case of error, stop erase procedure and return the faulty sector*/ + *SectorError = index; + break; + } + } + } + } + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + + return status; +} + +/** + * @brief Perform a mass erase or erase the specified FLASH memory sectors with interrupt enabled + * @param pEraseInit pointer to an FLASH_EraseInitTypeDef structure that + * contains the configuration information for the erasing. + * + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Check the parameters */ + assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); + + /* Enable End of FLASH Operation interrupt */ + __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP); + + /* Enable Error source interrupt */ + __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR); + + /* Clear pending flags (if any) */ + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |\ + FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR); + + if(pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE) + { + /*Mass erase to be done*/ + pFlash.ProcedureOnGoing = FLASH_PROC_MASSERASE; +#if defined (FLASH_OPTCR_nDBANK) + FLASH_MassErase((uint8_t) pEraseInit->VoltageRange, pEraseInit->Banks); +#else + FLASH_MassErase((uint8_t) pEraseInit->VoltageRange); +#endif /* FLASH_OPTCR_nDBANK */ + } + else + { + /* Erase by sector to be done*/ + + /* Check the parameters */ + assert_param(IS_FLASH_NBSECTORS(pEraseInit->NbSectors + pEraseInit->Sector)); + + pFlash.ProcedureOnGoing = FLASH_PROC_SECTERASE; + pFlash.NbSectorsToErase = pEraseInit->NbSectors; + pFlash.Sector = pEraseInit->Sector; + pFlash.VoltageForErase = (uint8_t)pEraseInit->VoltageRange; + + /*Erase 1st sector and wait for IT*/ + FLASH_Erase_Sector(pEraseInit->Sector, pEraseInit->VoltageRange); + } + + return status; +} + +/** + * @brief Program option bytes + * @param pOBInit pointer to an FLASH_OBInitStruct structure that + * contains the configuration information for the programming. + * + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit) +{ + HAL_StatusTypeDef status = HAL_ERROR; + + /* Process Locked */ + __HAL_LOCK(&pFlash); + + /* Check the parameters */ + assert_param(IS_OPTIONBYTE(pOBInit->OptionType)); + + /* Write protection configuration */ + if((pOBInit->OptionType & OPTIONBYTE_WRP) == OPTIONBYTE_WRP) + { + assert_param(IS_WRPSTATE(pOBInit->WRPState)); + if(pOBInit->WRPState == OB_WRPSTATE_ENABLE) + { + /*Enable of Write protection on the selected Sector*/ + status = FLASH_OB_EnableWRP(pOBInit->WRPSector); + } + else + { + /*Disable of Write protection on the selected Sector*/ + status = FLASH_OB_DisableWRP(pOBInit->WRPSector); + } + } + + /* Read protection configuration */ + if((pOBInit->OptionType & OPTIONBYTE_RDP) == OPTIONBYTE_RDP) + { + status = FLASH_OB_RDP_LevelConfig(pOBInit->RDPLevel); + } + + /* USER configuration */ + if((pOBInit->OptionType & OPTIONBYTE_USER) == OPTIONBYTE_USER) + { +#if defined (FLASH_OPTCR_nDBANK) + status = FLASH_OB_UserConfig(pOBInit->USERConfig & OB_WWDG_SW, + pOBInit->USERConfig & OB_IWDG_SW, + pOBInit->USERConfig & OB_STOP_NO_RST, + pOBInit->USERConfig & OB_STDBY_NO_RST, + pOBInit->USERConfig & OB_IWDG_STOP_ACTIVE, + pOBInit->USERConfig & OB_IWDG_STDBY_ACTIVE, + pOBInit->USERConfig & OB_NDBANK_SINGLE_BANK, + pOBInit->USERConfig & OB_DUAL_BOOT_DISABLE); +#else + status = FLASH_OB_UserConfig(pOBInit->USERConfig & OB_WWDG_SW, + pOBInit->USERConfig & OB_IWDG_SW, + pOBInit->USERConfig & OB_STOP_NO_RST, + pOBInit->USERConfig & OB_STDBY_NO_RST, + pOBInit->USERConfig & OB_IWDG_STOP_ACTIVE, + pOBInit->USERConfig & OB_IWDG_STDBY_ACTIVE); +#endif /* FLASH_OPTCR_nDBANK */ + } + + /* BOR Level configuration */ + if((pOBInit->OptionType & OPTIONBYTE_BOR) == OPTIONBYTE_BOR) + { + status = FLASH_OB_BOR_LevelConfig(pOBInit->BORLevel); + } + + /* Boot 0 Address configuration */ + if((pOBInit->OptionType & OPTIONBYTE_BOOTADDR_0) == OPTIONBYTE_BOOTADDR_0) + { + status = FLASH_OB_BootAddressConfig(OPTIONBYTE_BOOTADDR_0, pOBInit->BootAddr0); + } + + /* Boot 1 Address configuration */ + if((pOBInit->OptionType & OPTIONBYTE_BOOTADDR_1) == OPTIONBYTE_BOOTADDR_1) + { + status = FLASH_OB_BootAddressConfig(OPTIONBYTE_BOOTADDR_1, pOBInit->BootAddr1); + } + +#if defined (FLASH_OPTCR2_PCROP) + /* PCROP configuration */ + if((pOBInit->OptionType & OPTIONBYTE_PCROP) == OPTIONBYTE_PCROP) + { + status = FLASH_OB_PCROP_Config(pOBInit->PCROPSector); + } + + /* PCROP_RDP configuration */ + if((pOBInit->OptionType & OPTIONBYTE_PCROP_RDP) == OPTIONBYTE_PCROP_RDP) + { + status = FLASH_OB_PCROP_RDP_Config(pOBInit->PCROPRdp); + } +#endif /* FLASH_OPTCR2_PCROP */ + + /* Process Unlocked */ + __HAL_UNLOCK(&pFlash); + + return status; +} + +/** + * @brief Get the Option byte configuration + * @param pOBInit pointer to an FLASH_OBInitStruct structure that + * contains the configuration information for the programming. + * + * @retval None + */ +void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit) +{ + pOBInit->OptionType = OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER |\ + OPTIONBYTE_BOR | OPTIONBYTE_BOOTADDR_0 | OPTIONBYTE_BOOTADDR_1; + + /*Get WRP*/ + pOBInit->WRPSector = FLASH_OB_GetWRP(); + + /*Get RDP Level*/ + pOBInit->RDPLevel = FLASH_OB_GetRDP(); + + /*Get USER*/ + pOBInit->USERConfig = FLASH_OB_GetUser(); + + /*Get BOR Level*/ + pOBInit->BORLevel = FLASH_OB_GetBOR(); + + /*Get Boot Address when Boot pin = 0 */ + pOBInit->BootAddr0 = FLASH_OB_GetBootAddress(OPTIONBYTE_BOOTADDR_0); + + /*Get Boot Address when Boot pin = 1 */ + pOBInit->BootAddr1 = FLASH_OB_GetBootAddress(OPTIONBYTE_BOOTADDR_1); + +#if defined (FLASH_OPTCR2_PCROP) + /*Get PCROP Sectors */ + pOBInit->PCROPSector = FLASH_OB_GetPCROP(); + + /*Get PCROP_RDP Value */ + pOBInit->PCROPRdp = FLASH_OB_GetPCROPRDP(); +#endif /* FLASH_OPTCR2_PCROP */ +} +/** + * @} + */ + +#if defined (FLASH_OPTCR_nDBANK) +/** + * @brief Full erase of FLASH memory sectors + * @param VoltageRange The device voltage range which defines the erase parallelism. + * This parameter can be one of the following values: + * @arg VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, + * the operation will be done by byte (8-bit) + * @arg VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V, + * the operation will be done by half word (16-bit) + * @arg VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V, + * the operation will be done by word (32-bit) + * @arg VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External Vpp, + * the operation will be done by double word (64-bit) + * @param Banks Banks to be erased + * This parameter can be one of the following values: + * @arg FLASH_BANK_1: Bank1 to be erased + * @arg FLASH_BANK_2: Bank2 to be erased + * @arg FLASH_BANK_BOTH: Bank1 and Bank2 to be erased + * + * @retval HAL Status + */ +static void FLASH_MassErase(uint8_t VoltageRange, uint32_t Banks) +{ + /* Check the parameters */ + assert_param(IS_VOLTAGERANGE(VoltageRange)); + assert_param(IS_FLASH_BANK(Banks)); + + /* if the previous operation is completed, proceed to erase all sectors */ + FLASH->CR &= CR_PSIZE_MASK; + if(Banks == FLASH_BANK_BOTH) + { + /* bank1 & bank2 will be erased*/ + FLASH->CR |= FLASH_MER_BIT; + } + else if(Banks == FLASH_BANK_2) + { + /*Only bank2 will be erased*/ + FLASH->CR |= FLASH_CR_MER2; + } + else + { + /*Only bank1 will be erased*/ + FLASH->CR |= FLASH_CR_MER1; + } + FLASH->CR |= FLASH_CR_STRT | ((uint32_t)VoltageRange <<8); + /* Data synchronous Barrier (DSB) Just after the write operation + This will force the CPU to respect the sequence of instruction (no optimization).*/ + __DSB(); +} + +/** + * @brief Erase the specified FLASH memory sector + * @param Sector FLASH sector to erase + * The value of this parameter depend on device used within the same series + * @param VoltageRange The device voltage range which defines the erase parallelism. + * This parameter can be one of the following values: + * @arg FLASH_VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, + * the operation will be done by byte (8-bit) + * @arg FLASH_VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V, + * the operation will be done by half word (16-bit) + * @arg FLASH_VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V, + * the operation will be done by word (32-bit) + * @arg FLASH_VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External Vpp, + * the operation will be done by double word (64-bit) + * + * @retval None + */ +void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange) +{ + uint32_t tmp_psize = 0; + + /* Check the parameters */ + assert_param(IS_FLASH_SECTOR(Sector)); + assert_param(IS_VOLTAGERANGE(VoltageRange)); + + if(VoltageRange == FLASH_VOLTAGE_RANGE_1) + { + tmp_psize = FLASH_PSIZE_BYTE; + } + else if(VoltageRange == FLASH_VOLTAGE_RANGE_2) + { + tmp_psize = FLASH_PSIZE_HALF_WORD; + } + else if(VoltageRange == FLASH_VOLTAGE_RANGE_3) + { + tmp_psize = FLASH_PSIZE_WORD; + } + else + { + tmp_psize = FLASH_PSIZE_DOUBLE_WORD; + } + + /* Need to add offset of 4 when sector higher than FLASH_SECTOR_11 */ + if(Sector > FLASH_SECTOR_11) + { + Sector += 4; + } + + /* If the previous operation is completed, proceed to erase the sector */ + FLASH->CR &= CR_PSIZE_MASK; + FLASH->CR |= tmp_psize; + CLEAR_BIT(FLASH->CR, FLASH_CR_SNB); + FLASH->CR |= FLASH_CR_SER | (Sector << FLASH_CR_SNB_Pos); + FLASH->CR |= FLASH_CR_STRT; + + /* Data synchronous Barrier (DSB) Just after the write operation + This will force the CPU to respect the sequence of instruction (no optimization).*/ + __DSB(); +} + +/** + * @brief Return the FLASH Write Protection Option Bytes value. + * @retval uint32_t FLASH Write Protection Option Bytes value + */ +static uint32_t FLASH_OB_GetWRP(void) +{ + /* Return the FLASH write protection Register value */ + return ((uint32_t)(FLASH->OPTCR & 0x0FFF0000)); +} + +/** + * @brief Program the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. + * @param Wwdg Selects the IWDG mode + * This parameter can be one of the following values: + * @arg OB_WWDG_SW: Software WWDG selected + * @arg OB_WWDG_HW: Hardware WWDG selected + * @param Iwdg Selects the WWDG mode + * This parameter can be one of the following values: + * @arg OB_IWDG_SW: Software IWDG selected + * @arg OB_IWDG_HW: Hardware IWDG selected + * @param Stop Reset event when entering STOP mode. + * This parameter can be one of the following values: + * @arg OB_STOP_NO_RST: No reset generated when entering in STOP + * @arg OB_STOP_RST: Reset generated when entering in STOP + * @param Stdby Reset event when entering Standby mode. + * This parameter can be one of the following values: + * @arg OB_STDBY_NO_RST: No reset generated when entering in STANDBY + * @arg OB_STDBY_RST: Reset generated when entering in STANDBY + * @param Iwdgstop Independent watchdog counter freeze in Stop mode. + * This parameter can be one of the following values: + * @arg OB_IWDG_STOP_FREEZE: Freeze IWDG counter in STOP + * @arg OB_IWDG_STOP_ACTIVE: IWDG counter active in STOP + * @param Iwdgstdby Independent watchdog counter freeze in standby mode. + * This parameter can be one of the following values: + * @arg OB_IWDG_STDBY_FREEZE: Freeze IWDG counter in STANDBY + * @arg OB_IWDG_STDBY_ACTIVE: IWDG counter active in STANDBY + * @param NDBank Flash Single Bank mode enabled. + * This parameter can be one of the following values: + * @arg OB_NDBANK_SINGLE_BANK: enable 256 bits mode (Flash is a single bank) + * @arg OB_NDBANK_DUAL_BANK: disable 256 bits mode (Flash is a dual bank in 128 bits mode) + * @param NDBoot Flash Dual boot mode disable. + * This parameter can be one of the following values: + * @arg OB_DUAL_BOOT_DISABLE: Disable Dual Boot + * @arg OB_DUAL_BOOT_ENABLE: Enable Dual Boot + + * @retval HAL Status + */ +static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t Stdby, uint32_t Iwdgstop, \ + uint32_t Iwdgstdby, uint32_t NDBank, uint32_t NDBoot) +{ + uint32_t useroptionmask = 0x00; + uint32_t useroptionvalue = 0x00; + + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_OB_WWDG_SOURCE(Wwdg)); + assert_param(IS_OB_IWDG_SOURCE(Iwdg)); + assert_param(IS_OB_STOP_SOURCE(Stop)); + assert_param(IS_OB_STDBY_SOURCE(Stdby)); + assert_param(IS_OB_IWDG_STOP_FREEZE(Iwdgstop)); + assert_param(IS_OB_IWDG_STDBY_FREEZE(Iwdgstdby)); + assert_param(IS_OB_NDBANK(NDBank)); + assert_param(IS_OB_NDBOOT(NDBoot)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + useroptionmask = (FLASH_OPTCR_WWDG_SW | FLASH_OPTCR_IWDG_SW | FLASH_OPTCR_nRST_STOP | \ + FLASH_OPTCR_nRST_STDBY | FLASH_OPTCR_IWDG_STOP | FLASH_OPTCR_IWDG_STDBY | \ + FLASH_OPTCR_nDBOOT | FLASH_OPTCR_nDBANK); + + useroptionvalue = (Iwdg | Wwdg | Stop | Stdby | Iwdgstop | Iwdgstdby | NDBoot | NDBank); + + /* Update User Option Byte */ + MODIFY_REG(FLASH->OPTCR, useroptionmask, useroptionvalue); + } + + return status; +} + +/** + * @brief Return the FLASH User Option Byte value. + * @retval uint32_t FLASH User Option Bytes values: WWDG_SW(Bit4), IWDG_SW(Bit5), nRST_STOP(Bit6), + * nRST_STDBY(Bit7), nDBOOT(Bit28), nDBANK(Bit29), IWDG_STDBY(Bit30) and IWDG_STOP(Bit31). + */ +static uint32_t FLASH_OB_GetUser(void) +{ + /* Return the User Option Byte */ + return ((uint32_t)(FLASH->OPTCR & 0xF00000F0U)); +} +#else + +/** + * @brief Full erase of FLASH memory sectors + * @param VoltageRange The device voltage range which defines the erase parallelism. + * This parameter can be one of the following values: + * @arg VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, + * the operation will be done by byte (8-bit) + * @arg VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V, + * the operation will be done by half word (16-bit) + * @arg VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V, + * the operation will be done by word (32-bit) + * @arg VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External Vpp, + * the operation will be done by double word (64-bit) + * + * @retval HAL Status + */ +static void FLASH_MassErase(uint8_t VoltageRange) +{ + /* Check the parameters */ + assert_param(IS_VOLTAGERANGE(VoltageRange)); + + /* if the previous operation is completed, proceed to erase all sectors */ + FLASH->CR &= CR_PSIZE_MASK; + FLASH->CR |= FLASH_CR_MER; + FLASH->CR |= FLASH_CR_STRT | ((uint32_t)VoltageRange <<8); + /* Data synchronous Barrier (DSB) Just after the write operation + This will force the CPU to respect the sequence of instruction (no optimization).*/ + __DSB(); +} + +/** + * @brief Erase the specified FLASH memory sector + * @param Sector FLASH sector to erase + * The value of this parameter depend on device used within the same series + * @param VoltageRange The device voltage range which defines the erase parallelism. + * This parameter can be one of the following values: + * @arg FLASH_VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, + * the operation will be done by byte (8-bit) + * @arg FLASH_VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V, + * the operation will be done by half word (16-bit) + * @arg FLASH_VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V, + * the operation will be done by word (32-bit) + * @arg FLASH_VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External Vpp, + * the operation will be done by double word (64-bit) + * + * @retval None + */ +void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange) +{ + uint32_t tmp_psize = 0; + + /* Check the parameters */ + assert_param(IS_FLASH_SECTOR(Sector)); + assert_param(IS_VOLTAGERANGE(VoltageRange)); + + if(VoltageRange == FLASH_VOLTAGE_RANGE_1) + { + tmp_psize = FLASH_PSIZE_BYTE; + } + else if(VoltageRange == FLASH_VOLTAGE_RANGE_2) + { + tmp_psize = FLASH_PSIZE_HALF_WORD; + } + else if(VoltageRange == FLASH_VOLTAGE_RANGE_3) + { + tmp_psize = FLASH_PSIZE_WORD; + } + else + { + tmp_psize = FLASH_PSIZE_DOUBLE_WORD; + } + + /* If the previous operation is completed, proceed to erase the sector */ + FLASH->CR &= CR_PSIZE_MASK; + FLASH->CR |= tmp_psize; + FLASH->CR &= SECTOR_MASK; + FLASH->CR |= FLASH_CR_SER | (Sector << FLASH_CR_SNB_Pos); + FLASH->CR |= FLASH_CR_STRT; + + /* Data synchronous Barrier (DSB) Just after the write operation + This will force the CPU to respect the sequence of instruction (no optimization).*/ + __DSB(); +} + +/** + * @brief Return the FLASH Write Protection Option Bytes value. + * @retval uint32_t FLASH Write Protection Option Bytes value + */ +static uint32_t FLASH_OB_GetWRP(void) +{ + /* Return the FLASH write protection Register value */ + return ((uint32_t)(FLASH->OPTCR & 0x00FF0000)); +} + +/** + * @brief Program the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. + * @param Wwdg Selects the IWDG mode + * This parameter can be one of the following values: + * @arg OB_WWDG_SW: Software WWDG selected + * @arg OB_WWDG_HW: Hardware WWDG selected + * @param Iwdg Selects the WWDG mode + * This parameter can be one of the following values: + * @arg OB_IWDG_SW: Software IWDG selected + * @arg OB_IWDG_HW: Hardware IWDG selected + * @param Stop Reset event when entering STOP mode. + * This parameter can be one of the following values: + * @arg OB_STOP_NO_RST: No reset generated when entering in STOP + * @arg OB_STOP_RST: Reset generated when entering in STOP + * @param Stdby Reset event when entering Standby mode. + * This parameter can be one of the following values: + * @arg OB_STDBY_NO_RST: No reset generated when entering in STANDBY + * @arg OB_STDBY_RST: Reset generated when entering in STANDBY + * @param Iwdgstop Independent watchdog counter freeze in Stop mode. + * This parameter can be one of the following values: + * @arg OB_IWDG_STOP_FREEZE: Freeze IWDG counter in STOP + * @arg OB_IWDG_STOP_ACTIVE: IWDG counter active in STOP + * @param Iwdgstdby Independent watchdog counter freeze in standby mode. + * This parameter can be one of the following values: + * @arg OB_IWDG_STDBY_FREEZE: Freeze IWDG counter in STANDBY + * @arg OB_IWDG_STDBY_ACTIVE: IWDG counter active in STANDBY + * @retval HAL Status + */ +static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t Stdby, uint32_t Iwdgstop, uint32_t Iwdgstdby) +{ + uint32_t useroptionmask = 0x00; + uint32_t useroptionvalue = 0x00; + + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_OB_WWDG_SOURCE(Wwdg)); + assert_param(IS_OB_IWDG_SOURCE(Iwdg)); + assert_param(IS_OB_STOP_SOURCE(Stop)); + assert_param(IS_OB_STDBY_SOURCE(Stdby)); + assert_param(IS_OB_IWDG_STOP_FREEZE(Iwdgstop)); + assert_param(IS_OB_IWDG_STDBY_FREEZE(Iwdgstdby)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + useroptionmask = (FLASH_OPTCR_WWDG_SW | FLASH_OPTCR_IWDG_SW | FLASH_OPTCR_nRST_STOP | \ + FLASH_OPTCR_nRST_STDBY | FLASH_OPTCR_IWDG_STOP | FLASH_OPTCR_IWDG_STDBY); + + useroptionvalue = (Iwdg | Wwdg | Stop | Stdby | Iwdgstop | Iwdgstdby); + + /* Update User Option Byte */ + MODIFY_REG(FLASH->OPTCR, useroptionmask, useroptionvalue); + } + + return status; + +} + +/** + * @brief Return the FLASH User Option Byte value. + * @retval uint32_t FLASH User Option Bytes values: WWDG_SW(Bit4), IWDG_SW(Bit5), nRST_STOP(Bit6), + * nRST_STDBY(Bit7), IWDG_STDBY(Bit30) and IWDG_STOP(Bit31). + */ +static uint32_t FLASH_OB_GetUser(void) +{ + /* Return the User Option Byte */ + return ((uint32_t)(FLASH->OPTCR & 0xC00000F0U)); +} +#endif /* FLASH_OPTCR_nDBANK */ + +/** + * @brief Enable the write protection of the desired bank1 or bank2 sectors + * + * @note When the memory read protection level is selected (RDP level = 1), + * it is not possible to program or erase the flash sector i if CortexM7 + * debug features are connected or boot code is executed in RAM, even if nWRPi = 1 + * + * @param WRPSector specifies the sector(s) to be write protected. + * This parameter can be one of the following values: + * @arg WRPSector: A value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_7 (for STM32F74xxx/STM32F75xxx devices) + * or a value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_11 (in Single Bank mode for STM32F76xxx/STM32F77xxx devices) + * or a value between OB_WRP_DB_SECTOR_0 and OB_WRP_DB_SECTOR_23 (in Dual Bank mode for STM32F76xxx/STM32F77xxx devices) + * @arg OB_WRP_SECTOR_All + * + * @retval HAL FLASH State + */ +static HAL_StatusTypeDef FLASH_OB_EnableWRP(uint32_t WRPSector) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_OB_WRP_SECTOR(WRPSector)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /*Write protection enabled on sectors */ + FLASH->OPTCR &= (~WRPSector); + } + + return status; +} + +/** + * @brief Disable the write protection of the desired bank1 or bank 2 sectors + * + * @note When the memory read protection level is selected (RDP level = 1), + * it is not possible to program or erase the flash sector i if CortexM4 + * debug features are connected or boot code is executed in RAM, even if nWRPi = 1 + * + * @param WRPSector specifies the sector(s) to be write protected. + * This parameter can be one of the following values: + * @arg WRPSector: A value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_7 (for STM32F74xxx/STM32F75xxx devices) + * or a value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_11 (in Single Bank mode for STM32F76xxx/STM32F77xxx devices) + * or a value between OB_WRP_DB_SECTOR_0 and OB_WRP_DB_SECTOR_23 (in Dual Bank mode for STM32F76xxx/STM32F77xxx devices) + * @arg OB_WRP_Sector_All + * + * + * @retval HAL Status + */ +static HAL_StatusTypeDef FLASH_OB_DisableWRP(uint32_t WRPSector) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_OB_WRP_SECTOR(WRPSector)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + /* Write protection disabled on sectors */ + FLASH->OPTCR |= (WRPSector); + } + + return status; +} + +/** + * @brief Set the read protection level. + * @param Level specifies the read protection level. + * This parameter can be one of the following values: + * @arg OB_RDP_LEVEL_0: No protection + * @arg OB_RDP_LEVEL_1: Read protection of the memory + * @arg OB_RDP_LEVEL_2: Full chip protection + * + * @note WARNING: When enabling OB_RDP level 2 it's no more possible to go back to level 1 or 0 + * + * @retval HAL Status + */ +static HAL_StatusTypeDef FLASH_OB_RDP_LevelConfig(uint8_t Level) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_OB_RDP_LEVEL(Level)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + *(__IO uint8_t*)OPTCR_BYTE1_ADDRESS = Level; + } + + return status; +} + +/** + * @brief Set the BOR Level. + * @param Level specifies the Option Bytes BOR Reset Level. + * This parameter can be one of the following values: + * @arg OB_BOR_LEVEL3: Supply voltage ranges from 2.7 to 3.6 V + * @arg OB_BOR_LEVEL2: Supply voltage ranges from 2.4 to 2.7 V + * @arg OB_BOR_LEVEL1: Supply voltage ranges from 2.1 to 2.4 V + * @arg OB_BOR_OFF: Supply voltage ranges from 1.62 to 2.1 V + * @retval HAL Status + */ +static HAL_StatusTypeDef FLASH_OB_BOR_LevelConfig(uint8_t Level) +{ + /* Check the parameters */ + assert_param(IS_OB_BOR_LEVEL(Level)); + + /* Set the BOR Level */ + MODIFY_REG(FLASH->OPTCR, FLASH_OPTCR_BOR_LEV, Level); + + return HAL_OK; + +} + +/** + * @brief Configure Boot base address. + * + * @param BootOption specifies Boot base address depending from Boot pin = 0 or pin = 1 + * This parameter can be one of the following values: + * @arg OPTIONBYTE_BOOTADDR_0 : Boot address based when Boot pin = 0 + * @arg OPTIONBYTE_BOOTADDR_1 : Boot address based when Boot pin = 1 + * @param Address specifies Boot base address + * This parameter can be one of the following values: + * @arg OB_BOOTADDR_ITCM_RAM : Boot from ITCM RAM (0x00000000) + * @arg OB_BOOTADDR_SYSTEM : Boot from System memory bootloader (0x00100000) + * @arg OB_BOOTADDR_ITCM_FLASH : Boot from Flash on ITCM interface (0x00200000) + * @arg OB_BOOTADDR_AXIM_FLASH : Boot from Flash on AXIM interface (0x08000000) + * @arg OB_BOOTADDR_DTCM_RAM : Boot from DTCM RAM (0x20000000) + * @arg OB_BOOTADDR_SRAM1 : Boot from SRAM1 (0x20010000) + * @arg OB_BOOTADDR_SRAM2 : Boot from SRAM2 (0x2004C000) + * + * @retval HAL Status + */ +static HAL_StatusTypeDef FLASH_OB_BootAddressConfig(uint32_t BootOption, uint32_t Address) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_OB_BOOT_ADDRESS(Address)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + if(BootOption == OPTIONBYTE_BOOTADDR_0) + { + MODIFY_REG(FLASH->OPTCR1, FLASH_OPTCR1_BOOT_ADD0, Address); + } + else + { + MODIFY_REG(FLASH->OPTCR1, FLASH_OPTCR1_BOOT_ADD1, (Address << 16)); + } + } + + return status; +} + +/** + * @brief Returns the FLASH Read Protection level. + * @retval FlagStatus FLASH ReadOut Protection Status: + * This parameter can be one of the following values: + * @arg OB_RDP_LEVEL_0: No protection + * @arg OB_RDP_LEVEL_1: Read protection of the memory + * @arg OB_RDP_LEVEL_2: Full chip protection + */ +static uint8_t FLASH_OB_GetRDP(void) +{ + uint8_t readstatus = OB_RDP_LEVEL_0; + + if ((*(__IO uint8_t*)(OPTCR_BYTE1_ADDRESS)) == OB_RDP_LEVEL_0) + { + readstatus = OB_RDP_LEVEL_0; + } + else if ((*(__IO uint8_t*)(OPTCR_BYTE1_ADDRESS)) == OB_RDP_LEVEL_2) + { + readstatus = OB_RDP_LEVEL_2; + } + else + { + readstatus = OB_RDP_LEVEL_1; + } + + return readstatus; +} + +/** + * @brief Returns the FLASH BOR level. + * @retval uint32_t The FLASH BOR level: + * - OB_BOR_LEVEL3: Supply voltage ranges from 2.7 to 3.6 V + * - OB_BOR_LEVEL2: Supply voltage ranges from 2.4 to 2.7 V + * - OB_BOR_LEVEL1: Supply voltage ranges from 2.1 to 2.4 V + * - OB_BOR_OFF : Supply voltage ranges from 1.62 to 2.1 V + */ +static uint32_t FLASH_OB_GetBOR(void) +{ + /* Return the FLASH BOR level */ + return ((uint32_t)(FLASH->OPTCR & 0x0C)); +} + +/** + * @brief Configure Boot base address. + * + * @param BootOption specifies Boot base address depending from Boot pin = 0 or pin = 1 + * This parameter can be one of the following values: + * @arg OPTIONBYTE_BOOTADDR_0 : Boot address based when Boot pin = 0 + * @arg OPTIONBYTE_BOOTADDR_1 : Boot address based when Boot pin = 1 + * + * @retval uint32_t Boot Base Address: + * - OB_BOOTADDR_ITCM_RAM : Boot from ITCM RAM (0x00000000) + * - OB_BOOTADDR_SYSTEM : Boot from System memory bootloader (0x00100000) + * - OB_BOOTADDR_ITCM_FLASH : Boot from Flash on ITCM interface (0x00200000) + * - OB_BOOTADDR_AXIM_FLASH : Boot from Flash on AXIM interface (0x08000000) + * - OB_BOOTADDR_DTCM_RAM : Boot from DTCM RAM (0x20000000) + * - OB_BOOTADDR_SRAM1 : Boot from SRAM1 (0x20010000) + * - OB_BOOTADDR_SRAM2 : Boot from SRAM2 (0x2004C000) + */ +static uint32_t FLASH_OB_GetBootAddress(uint32_t BootOption) +{ + uint32_t Address = 0; + + /* Return the Boot base Address */ + if(BootOption == OPTIONBYTE_BOOTADDR_0) + { + Address = FLASH->OPTCR1 & FLASH_OPTCR1_BOOT_ADD0; + } + else + { + Address = ((FLASH->OPTCR1 & FLASH_OPTCR1_BOOT_ADD1) >> 16); + } + + return Address; +} + +#if defined (FLASH_OPTCR2_PCROP) +/** + * @brief Set the PCROP protection for sectors. + * @param PCROPSector specifies the sector(s) to be PCROP protected. + * This parameter can be one of the following values: + * @arg OB_PCROP_SECTOR_x: A value between OB_PCROP_SECTOR_0 and OB_PCROP_SECTOR_7 + * @arg OB_PCROP_SECTOR_ALL + * + * @retval HAL Status + */ +static HAL_StatusTypeDef FLASH_OB_PCROP_Config(uint32_t PCROPSector) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_OB_PCROP_SECTOR(PCROPSector)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + MODIFY_REG(FLASH->OPTCR2, FLASH_OPTCR2_PCROP, PCROPSector); + } + + return status; +} + +/** + * @brief Set the PCROP_RDP value + * @param Pcrop_Rdp specifies the PCROP_RDP bit value. + * + * @retval HAL Status + */ +static HAL_StatusTypeDef FLASH_OB_PCROP_RDP_Config(uint32_t Pcrop_Rdp) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_OB_PCROP_RDP_VALUE(Pcrop_Rdp)); + + /* Wait for last operation to be completed */ + status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + + if(status == HAL_OK) + { + MODIFY_REG(FLASH->OPTCR2, FLASH_OPTCR2_PCROP_RDP, Pcrop_Rdp); + } + + return status; +} + +/** + * @brief Return the FLASH PCROP Protection Option Bytes value. + * @retval uint32_t FLASH PCROP Protection Option Bytes value + */ +static uint32_t FLASH_OB_GetPCROP(void) +{ + /* Return the FLASH write protection Register value */ + return ((uint32_t)(FLASH->OPTCR2 & FLASH_OPTCR2_PCROP)); +} + +/** + * @brief Return the FLASH PCROP_RDP option byte value. + * @retval uint32_t FLASH PCROP_RDP option byte value + */ +static uint32_t FLASH_OB_GetPCROPRDP(void) +{ + /* Return the FLASH write protection Register value */ + return ((uint32_t)(FLASH->OPTCR2 & FLASH_OPTCR2_PCROP_RDP)); +} +#endif /* FLASH_OPTCR2_PCROP */ + +/** + * @} + */ + +#endif /* HAL_FLASH_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c new file mode 100644 index 0000000..93738b9 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c @@ -0,0 +1,528 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_gpio.c + * @author MCD Application Team + * @brief GPIO HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the General Purpose Input/Output (GPIO) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### GPIO Peripheral features ##### + ============================================================================== + [..] + Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each + port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software + in several modes: + (+) Input mode + (+) Analog mode + (+) Output mode + (+) Alternate function mode + (+) External interrupt/event lines + + [..] + During and just after reset, the alternate functions and external interrupt + lines are not active and the I/O ports are configured in input floating mode. + + [..] + All GPIO pins have weak internal pull-up and pull-down resistors, which can be + activated or not. + + [..] + In Output or Alternate mode, each IO can be configured on open-drain or push-pull + type and the IO speed can be selected depending on the VDD value. + + [..] + All ports have external interrupt/event capability. To use external interrupt + lines, the port must be configured in input mode. All available GPIO pins are + connected to the 16 external interrupt/event lines from EXTI0 to EXTI15. + + [..] + The external interrupt/event controller consists of up to 23 edge detectors + (16 lines are connected to GPIO) for generating event/interrupt requests (each + input line can be independently configured to select the type (interrupt or event) + and the corresponding trigger event (rising or falling or both). Each line can + also be masked independently. + + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE(). + + (#) Configure the GPIO pin(s) using HAL_GPIO_Init(). + (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure + (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef + structure. + (++) In case of Output or alternate function mode selection: the speed is + configured through "Speed" member from GPIO_InitTypeDef structure. + (++) In alternate mode is selection, the alternate function connected to the IO + is configured through "Alternate" member from GPIO_InitTypeDef structure. + (++) Analog mode is required when a pin is to be used as ADC channel + or DAC output. + (++) In case of external interrupt/event selection the "Mode" member from + GPIO_InitTypeDef structure select the type (interrupt or event) and + the corresponding trigger event (rising or falling or both). + + (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority + mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using + HAL_NVIC_EnableIRQ(). + + (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin(). + + (#) To set/reset the level of a pin configured in output mode use + HAL_GPIO_WritePin()/HAL_GPIO_TogglePin(). + + (#) To lock pin configuration until next reset use HAL_GPIO_LockPin(). + + + (#) During and just after reset, the alternate functions are not + active and the GPIO pins are configured in input floating mode (except JTAG + pins). + + (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose + (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has + priority over the GPIO function. + + (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as + general purpose PH0 and PH1, respectively, when the HSE oscillator is off. + The HSE has priority over the GPIO function. + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup GPIO GPIO + * @brief GPIO HAL module driver + * @{ + */ + +#ifdef HAL_GPIO_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @addtogroup GPIO_Private_Constants GPIO Private Constants + * @{ + */ + +#define GPIO_NUMBER ((uint32_t)16U) +/** + * @} + */ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIO_Exported_Functions GPIO Exported Functions + * @{ + */ + +/** @defgroup GPIO_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] + This section provides functions allowing to initialize and de-initialize the GPIOs + to be ready for use. + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the GPIOx peripheral according to the specified parameters in the GPIO_Init. + * @param GPIOx where x can be (A..K) to select the GPIO peripheral. + * @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) +{ + uint32_t position = 0x00; + uint32_t ioposition = 0x00; + uint32_t iocurrent = 0x00; + uint32_t temp = 0x00; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + + /* Configure the port pins */ + for (position = 0; position < GPIO_NUMBER; position++) + { + /* Get the IO position */ + ioposition = ((uint32_t)0x01) << position; + /* Get the current IO position */ + iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; + + if (iocurrent == ioposition) + { + /*--------------------- 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)) + { + /* Check the Speed parameter */ + assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + /* Configure the IO Speed */ + temp = GPIOx->OSPEEDR; + temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + temp |= (GPIO_Init->Speed << (position * 2)); + GPIOx->OSPEEDR = temp; + + /* Configure the IO Output Type */ + temp = GPIOx->OTYPER; + temp &= ~(GPIO_OTYPER_OT_0 << position) ; + temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + GPIOx->OTYPER = temp; + } + + if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + { + /* 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; + temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2)); + temp |= ((GPIO_Init->Pull) << (position * 2)); + GPIOx->PUPDR = temp; + } + + /* In case of Alternate function mode selection */ + if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + { + /* Check the Alternate function parameter */ + assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + + /* Configure Alternate function mapped with the current IO */ + temp = GPIOx->AFR[position >> 3]; + temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ; + temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4)); + GPIOx->AFR[position >> 3] = temp; + } + + /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + temp = GPIOx->MODER; + temp &= ~(GPIO_MODER_MODER0 << (position * 2)); + temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + GPIOx->MODER = temp; + + /*--------------------- EXTI Mode Configuration ------------------------*/ + /* Configure the External Interrupt or event for the current IO */ + if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u) + { + /* Enable SYSCFG Clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + + temp = SYSCFG->EXTICR[position >> 2]; + temp &= ~(((uint32_t)0x0F) << (4 * (position & 0x03))); + temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + SYSCFG->EXTICR[position >> 2] = temp; + + /* Clear Rising Falling edge configuration */ + temp = EXTI->RTSR; + temp &= ~((uint32_t)iocurrent); + if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u) + { + temp |= iocurrent; + } + EXTI->RTSR = temp; + + temp = EXTI->FTSR; + temp &= ~((uint32_t)iocurrent); + if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u) + { + temp |= iocurrent; + } + EXTI->FTSR = temp; + + temp = EXTI->EMR; + temp &= ~((uint32_t)iocurrent); + if ((GPIO_Init->Mode & EXTI_EVT) != 0x00u) + { + temp |= iocurrent; + } + EXTI->EMR = temp; + + /* Clear EXTI line configuration */ + temp = EXTI->IMR; + temp &= ~((uint32_t)iocurrent); + if ((GPIO_Init->Mode & EXTI_IT) != 0x00u) + { + temp |= iocurrent; + } + EXTI->IMR = temp; + } + } + } +} + +/** + * @brief De-initializes the GPIOx peripheral registers to their default reset values. + * @param GPIOx where x can be (A..K) to select the GPIO peripheral. + * @param GPIO_Pin specifies the port bit to be written. + * This parameter can be one of GPIO_PIN_x where x can be (0..15). + * @retval None + */ +void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) +{ + uint32_t position; + uint32_t ioposition = 0x00; + uint32_t iocurrent = 0x00; + uint32_t tmp = 0x00; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + + /* Configure the port pins */ + for (position = 0; position < GPIO_NUMBER; position++) + { + /* Get the IO position */ + ioposition = ((uint32_t)0x01) << position; + /* Get the current IO position */ + iocurrent = (GPIO_Pin) & ioposition; + + if (iocurrent == ioposition) + { + /*------------------------- EXTI Mode Configuration --------------------*/ + tmp = SYSCFG->EXTICR[position >> 2]; + tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03))); + if (tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)))) + { + /* Clear EXTI line configuration */ + EXTI->IMR &= ~((uint32_t)iocurrent); + EXTI->EMR &= ~((uint32_t)iocurrent); + + /* Clear Rising Falling edge configuration */ + EXTI->FTSR &= ~((uint32_t)iocurrent); + EXTI->RTSR &= ~((uint32_t)iocurrent); + + /* Configure the External Interrupt or event for the current IO */ + tmp = ((uint32_t)0x0F) << (4 * (position & 0x03)); + SYSCFG->EXTICR[position >> 2] &= ~tmp; + } + /*------------------------- GPIO Mode Configuration --------------------*/ + /* Configure IO Direction in Input Floating Mode */ + GPIOx->MODER &= ~(GPIO_MODER_MODER0 << (position * 2)); + + /* Configure the default Alternate Function in current IO */ + GPIOx->AFR[position >> 3] &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ; + + /* Deactivate the Pull-up and Pull-down resistor for the current IO */ + GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << (position * 2)); + + /* Configure the default value IO Output Type */ + GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ; + + /* Configure the default value for IO Speed */ + GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + } + } +} + +/** + * @} + */ + +/** @defgroup GPIO_Exported_Functions_Group2 IO operation functions + * @brief GPIO Read and Write + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Reads the specified input port pin. + * @param GPIOx where x can be (A..K) to select the GPIO peripheral. + * @param GPIO_Pin specifies the port bit to read. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). + * @retval The input port pin value. + */ +GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + GPIO_PinState bitstatus; + + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET) + { + bitstatus = GPIO_PIN_SET; + } + else + { + bitstatus = GPIO_PIN_RESET; + } + return bitstatus; +} + +/** + * @brief Sets or clears the selected data port bit. + * + * @note This function uses GPIOx_BSRR register to allow atomic read/modify + * accesses. In this way, there is no risk of an IRQ occurring between + * the read and the modify access. + * + * @param GPIOx where x can be (A..K) to select the GPIO peripheral. + * @param GPIO_Pin specifies the port bit to be written. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). + * @param PinState specifies the value to be written to the selected bit. + * This parameter can be one of the GPIO_PinState enum values: + * @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) +{ + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + assert_param(IS_GPIO_PIN_ACTION(PinState)); + + if (PinState != GPIO_PIN_RESET) + { + GPIOx->BSRR = GPIO_Pin; + } + else + { + GPIOx->BSRR = (uint32_t)GPIO_Pin << 16; + } +} + +/** + * @brief Toggles the specified GPIO pins. + * @param GPIOx Where x can be (A..I) to select the GPIO peripheral. + * @param GPIO_Pin Specifies the pins to be toggled. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). + * @retval None + */ +void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + uint32_t odr; + + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + /* get current Output Data Register value */ + odr = GPIOx->ODR; + + /* Set selected pins that were at low level, and reset ones that were high */ + GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin); +} + +/** + * @brief Locks GPIO Pins configuration registers. + * @note The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, + * GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH. + * @note The configuration of the locked GPIO pins can no longer be modified + * until the next reset. + * @param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32F7 family + * @param GPIO_Pin specifies the port bit to be locked. + * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). + * @retval None + */ +HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) +{ + __IO uint32_t tmp = GPIO_LCKR_LCKK; + + /* Check the parameters */ + assert_param(IS_GPIO_PIN(GPIO_Pin)); + + /* Apply lock key write sequence */ + tmp |= GPIO_Pin; + /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ + GPIOx->LCKR = tmp; + /* Reset LCKx bit(s): LCKK='0' + LCK[15-0] */ + GPIOx->LCKR = GPIO_Pin; + /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ + GPIOx->LCKR = tmp; + /* Read LCKR register. This read is mandatory to complete key lock sequence */ + tmp = GPIOx->LCKR; + + /* Read again in order to confirm lock is active */ + if ((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET) + { + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief This function handles EXTI interrupt request. + * @param GPIO_Pin Specifies the pins connected EXTI line + * @retval None + */ +void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) +{ + /* EXTI line interrupt detected */ + if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) + { + __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + HAL_GPIO_EXTI_Callback(GPIO_Pin); + } +} + +/** + * @brief EXTI line detection callbacks. + * @param GPIO_Pin Specifies the pins connected EXTI line + * @retval None + */ +__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(GPIO_Pin); + + /* NOTE: This function Should not be modified, when the callback is needed, + the HAL_GPIO_EXTI_Callback could be implemented in the user file + */ +} + +/** + * @} + */ + + +/** + * @} + */ + +#endif /* HAL_GPIO_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c new file mode 100644 index 0000000..4e4fbbf --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c @@ -0,0 +1,7569 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_i2c.c + * @author MCD Application Team + * @brief I2C HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Inter Integrated Circuit (I2C) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral State and Errors functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The I2C HAL driver can be used as follows: + + (#) Declare a I2C_HandleTypeDef handle structure, for example: + I2C_HandleTypeDef hi2c; + + (#)Initialize the I2C low level resources by implementing the HAL_I2C_MspInit() API: + (##) Enable the I2Cx interface clock + (##) I2C pins configuration + (+++) Enable the clock for the I2C GPIOs + (+++) Configure I2C pins as alternate function open-drain + (##) NVIC configuration if you need to use interrupt process + (+++) Configure the I2Cx interrupt priority + (+++) Enable the NVIC I2C IRQ Channel + (##) DMA Configuration if you need to use DMA process + (+++) Declare a DMA_HandleTypeDef handle structure for + the transmit or receive stream + (+++) Enable the DMAx interface clock using + (+++) Configure the DMA handle parameters + (+++) Configure the DMA Tx or Rx stream + (+++) Associate the initialized DMA handle to the hi2c DMA Tx or Rx handle + (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on + the DMA Tx or Rx stream + + (#) Configure the Communication Clock Timing, Own Address1, Master Addressing mode, Dual Addressing mode, + Own Address2, Own Address2 Mask, General call and Nostretch mode in the hi2c Init structure. + + (#) Initialize the I2C registers by calling the HAL_I2C_Init(), configures also the low level Hardware + (GPIO, CLOCK, NVIC...etc) by calling the customized HAL_I2C_MspInit(&hi2c) API. + + (#) To check if target device is ready for communication, use the function HAL_I2C_IsDeviceReady() + + (#) For I2C IO and IO MEM operations, three operation modes are available within this driver : + + *** Polling mode IO operation *** + ================================= + [..] + (+) Transmit in master mode an amount of data in blocking mode using HAL_I2C_Master_Transmit() + (+) Receive in master mode an amount of data in blocking mode using HAL_I2C_Master_Receive() + (+) Transmit in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Transmit() + (+) Receive in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Receive() + + *** Polling mode IO MEM operation *** + ===================================== + [..] + (+) Write an amount of data in blocking mode to a specific memory address using HAL_I2C_Mem_Write() + (+) Read an amount of data in blocking mode from a specific memory address using HAL_I2C_Mem_Read() + + + *** Interrupt mode IO operation *** + =================================== + [..] + (+) Transmit in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Transmit_IT() + (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + (+) Receive in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Receive_IT() + (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + (+) Transmit in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Transmit_IT() + (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + (+) Receive in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Receive_IT() + (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + (+) Abort a master or memory I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() + (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + This action will inform Master to generate a Stop condition to discard the communication. + + + *** Interrupt mode or DMA mode IO sequential operation *** + ========================================================== + [..] + (@) These interfaces allow to manage a sequential transfer with a repeated start condition + when a direction change during transfer + [..] + (+) A specific option field manage the different steps of a sequential transfer + (+) Option field values are defined through I2C_XFEROPTIONS and are listed below: + (++) I2C_FIRST_AND_LAST_FRAME: No sequential usage, functional is same as associated interfaces in + no sequential mode + (++) I2C_FIRST_FRAME: Sequential usage, this option allow to manage a sequence with start condition, address + and data to transfer without a final stop condition + (++) I2C_FIRST_AND_NEXT_FRAME: Sequential usage (Master only), this option allow to manage a sequence with + start condition, address and data to transfer without a final stop condition, + an then permit a call the same master sequential interface several times + (like HAL_I2C_Master_Seq_Transmit_IT() then HAL_I2C_Master_Seq_Transmit_IT() + or HAL_I2C_Master_Seq_Transmit_DMA() then HAL_I2C_Master_Seq_Transmit_DMA()) + (++) I2C_NEXT_FRAME: Sequential usage, this option allow to manage a sequence with a restart condition, address + and with new data to transfer if the direction change or manage only the new data to + transfer + if no direction change and without a final stop condition in both cases + (++) I2C_LAST_FRAME: Sequential usage, this option allow to manage a sequance with a restart condition, address + and with new data to transfer if the direction change or manage only the new data to + transfer + if no direction change and with a final stop condition in both cases + (++) I2C_LAST_FRAME_NO_STOP: Sequential usage (Master only), this option allow to manage a restart condition + after several call of the same master sequential interface several times + (link with option I2C_FIRST_AND_NEXT_FRAME). + Usage can, transfer several bytes one by one using + HAL_I2C_Master_Seq_Transmit_IT + or HAL_I2C_Master_Seq_Receive_IT + or HAL_I2C_Master_Seq_Transmit_DMA + or HAL_I2C_Master_Seq_Receive_DMA + with option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME. + Then usage of this option I2C_LAST_FRAME_NO_STOP at the last Transmit or + Receive sequence permit to call the opposite interface Receive or Transmit + without stopping the communication and so generate a restart condition. + (++) I2C_OTHER_FRAME: Sequential usage (Master only), this option allow to manage a restart condition after + each call of the same master sequential + interface. + Usage can, transfer several bytes one by one with a restart with slave address between + each bytes using + HAL_I2C_Master_Seq_Transmit_IT + or HAL_I2C_Master_Seq_Receive_IT + or HAL_I2C_Master_Seq_Transmit_DMA + or HAL_I2C_Master_Seq_Receive_DMA + with option I2C_FIRST_FRAME then I2C_OTHER_FRAME. + Then usage of this option I2C_OTHER_AND_LAST_FRAME at the last frame to help automatic + generation of STOP condition. + + (+) Different sequential I2C interfaces are listed below: + (++) Sequential transmit in master I2C mode an amount of data in non-blocking mode using + HAL_I2C_Master_Seq_Transmit_IT() or using HAL_I2C_Master_Seq_Transmit_DMA() + (+++) At transmission end of current frame transfer, HAL_I2C_MasterTxCpltCallback() is executed and + users can add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + (++) Sequential receive in master I2C mode an amount of data in non-blocking mode using + HAL_I2C_Master_Seq_Receive_IT() or using HAL_I2C_Master_Seq_Receive_DMA() + (+++) At reception end of current frame transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + (++) Abort a master or memory IT or DMA I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() + (+++) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + (++) Enable/disable the Address listen mode in slave I2C mode using HAL_I2C_EnableListen_IT() + HAL_I2C_DisableListen_IT() + (+++) When address slave I2C match, HAL_I2C_AddrCallback() is executed and users can + add their own code to check the Address Match Code and the transmission direction request by master + (Write/Read). + (+++) At Listen mode end HAL_I2C_ListenCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_ListenCpltCallback() + (++) Sequential transmit in slave I2C mode an amount of data in non-blocking mode using + HAL_I2C_Slave_Seq_Transmit_IT() or using HAL_I2C_Slave_Seq_Transmit_DMA() + (+++) At transmission end of current frame transfer, HAL_I2C_SlaveTxCpltCallback() is executed and + users can add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + (++) Sequential receive in slave I2C mode an amount of data in non-blocking mode using + HAL_I2C_Slave_Seq_Receive_IT() or using HAL_I2C_Slave_Seq_Receive_DMA() + (+++) At reception end of current frame transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + (++) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + (++) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + This action will inform Master to generate a Stop condition to discard the communication. + + *** Interrupt mode IO MEM operation *** + ======================================= + [..] + (+) Write an amount of data in non-blocking mode with Interrupt to a specific memory address using + HAL_I2C_Mem_Write_IT() + (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback() + (+) Read an amount of data in non-blocking mode with Interrupt from a specific memory address using + HAL_I2C_Mem_Read_IT() + (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + + *** DMA mode IO operation *** + ============================== + [..] + (+) Transmit in master mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Master_Transmit_DMA() + (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + (+) Receive in master mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Master_Receive_DMA() + (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + (+) Transmit in slave mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Slave_Transmit_DMA() + (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + (+) Receive in slave mode an amount of data in non-blocking mode (DMA) using + HAL_I2C_Slave_Receive_DMA() + (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + (+) Abort a master or memory I2C process communication with Interrupt using HAL_I2C_Master_Abort_IT() + (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + This action will inform Master to generate a Stop condition to discard the communication. + + *** DMA mode IO MEM operation *** + ================================= + [..] + (+) Write an amount of data in non-blocking mode with DMA to a specific memory address using + HAL_I2C_Mem_Write_DMA() + (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback() + (+) Read an amount of data in non-blocking mode with DMA from a specific memory address using + HAL_I2C_Mem_Read_DMA() + (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can + add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback() + (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + add their own code by customization of function pointer HAL_I2C_ErrorCallback() + + + *** I2C HAL driver macros list *** + ================================== + [..] + Below the list of most used macros in I2C HAL driver. + + (+) __HAL_I2C_ENABLE: Enable the I2C peripheral + (+) __HAL_I2C_DISABLE: Disable the I2C peripheral + (+) __HAL_I2C_GENERATE_NACK: Generate a Non-Acknowledge I2C peripheral in Slave mode + (+) __HAL_I2C_GET_FLAG: Check whether the specified I2C flag is set or not + (+) __HAL_I2C_CLEAR_FLAG: Clear the specified I2C pending flag + (+) __HAL_I2C_ENABLE_IT: Enable the specified I2C interrupt + (+) __HAL_I2C_DISABLE_IT: Disable the specified I2C interrupt + + *** Callback registration *** + ============================================= + [..] + The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1 + allows the user to configure dynamically the driver callbacks. + Use Functions HAL_I2C_RegisterCallback() or HAL_I2C_RegisterAddrCallback() + to register an interrupt callback. + [..] + Function HAL_I2C_RegisterCallback() allows to register following callbacks: + (+) MasterTxCpltCallback : callback for Master transmission end of transfer. + (+) MasterRxCpltCallback : callback for Master reception end of transfer. + (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer. + (+) SlaveRxCpltCallback : callback for Slave reception end of transfer. + (+) ListenCpltCallback : callback for end of listen mode. + (+) MemTxCpltCallback : callback for Memory transmission end of transfer. + (+) MemRxCpltCallback : callback for Memory reception end of transfer. + (+) ErrorCallback : callback for error detection. + (+) AbortCpltCallback : callback for abort completion process. + (+) MspInitCallback : callback for Msp Init. + (+) MspDeInitCallback : callback for Msp DeInit. + This function takes as parameters the HAL peripheral handle, the Callback ID + and a pointer to the user callback function. + [..] + For specific callback AddrCallback use dedicated register callbacks : HAL_I2C_RegisterAddrCallback(). + [..] + Use function HAL_I2C_UnRegisterCallback to reset a callback to the default + weak function. + HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle, + and the Callback ID. + This function allows to reset following callbacks: + (+) MasterTxCpltCallback : callback for Master transmission end of transfer. + (+) MasterRxCpltCallback : callback for Master reception end of transfer. + (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer. + (+) SlaveRxCpltCallback : callback for Slave reception end of transfer. + (+) ListenCpltCallback : callback for end of listen mode. + (+) MemTxCpltCallback : callback for Memory transmission end of transfer. + (+) MemRxCpltCallback : callback for Memory reception end of transfer. + (+) ErrorCallback : callback for error detection. + (+) AbortCpltCallback : callback for abort completion process. + (+) MspInitCallback : callback for Msp Init. + (+) MspDeInitCallback : callback for Msp DeInit. + [..] + For callback AddrCallback use dedicated register callbacks : HAL_I2C_UnRegisterAddrCallback(). + [..] + By default, after the HAL_I2C_Init() and when the state is HAL_I2C_STATE_RESET + all callbacks are set to the corresponding weak functions: + examples HAL_I2C_MasterTxCpltCallback(), HAL_I2C_MasterRxCpltCallback(). + Exception done for MspInit and MspDeInit functions that are + reset to the legacy weak functions in the HAL_I2C_Init()/ HAL_I2C_DeInit() only when + these callbacks are null (not registered beforehand). + If MspInit or MspDeInit are not null, the HAL_I2C_Init()/ HAL_I2C_DeInit() + keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state. + [..] + Callbacks can be registered/unregistered in HAL_I2C_STATE_READY state only. + Exception done MspInit/MspDeInit functions that can be registered/unregistered + in HAL_I2C_STATE_READY or HAL_I2C_STATE_RESET state, + thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit. + Then, the user first registers the MspInit/MspDeInit user callbacks + using HAL_I2C_RegisterCallback() before calling HAL_I2C_DeInit() + or HAL_I2C_Init() function. + [..] + When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or + not defined, the callback registration feature is not available and all callbacks + are set to the corresponding weak functions. + + [..] + (@) You can refer to the I2C HAL driver header file for more useful macros + + @endverbatim + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup I2C I2C + * @brief I2C HAL module driver + * @{ + */ + +#ifdef HAL_I2C_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ + +/** @defgroup I2C_Private_Define I2C Private Define + * @{ + */ +#define TIMING_CLEAR_MASK (0xF0FFFFFFU) /*!< I2C TIMING clear register Mask */ +#define I2C_TIMEOUT_ADDR (10000U) /*!< 10 s */ +#define I2C_TIMEOUT_BUSY (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_DIR (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_RXNE (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_STOPF (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_TC (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_TCR (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_TXIS (25U) /*!< 25 ms */ +#define I2C_TIMEOUT_FLAG (25U) /*!< 25 ms */ + +#define MAX_NBYTE_SIZE 255U +#define SLAVE_ADDR_SHIFT 7U +#define SLAVE_ADDR_MSK 0x06U + +/* Private define for @ref PreviousState usage */ +#define I2C_STATE_MSK ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | \ + (uint32_t)HAL_I2C_STATE_BUSY_RX) & \ + (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY)))) +/*!< Mask State define, keep only RX and TX bits */ +#define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE)) +/*!< Default Value */ +#define I2C_STATE_MASTER_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MASTER)) +/*!< Master Busy TX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_MASTER_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MASTER)) +/*!< Master Busy RX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_SLAVE_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_SLAVE)) +/*!< Slave Busy TX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_SLAVE_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_SLAVE)) +/*!< Slave Busy RX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_MEM_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MEM)) +/*!< Memory Busy TX, combinaison of State LSB and Mode enum */ +#define I2C_STATE_MEM_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + (uint32_t)HAL_I2C_MODE_MEM)) +/*!< Memory Busy RX, combinaison of State LSB and Mode enum */ + + +/* Private define to centralize the enable/disable of Interrupts */ +#define I2C_XFER_TX_IT (uint16_t)(0x0001U) /*!< Bit field can be combinated with + @ref I2C_XFER_LISTEN_IT */ +#define I2C_XFER_RX_IT (uint16_t)(0x0002U) /*!< Bit field can be combinated with + @ref I2C_XFER_LISTEN_IT */ +#define I2C_XFER_LISTEN_IT (uint16_t)(0x8000U) /*!< Bit field can be combinated with @ref I2C_XFER_TX_IT + and @ref I2C_XFER_RX_IT */ + +#define I2C_XFER_ERROR_IT (uint16_t)(0x0010U) /*!< Bit definition to manage addition of global Error + and NACK treatment */ +#define I2C_XFER_CPLT_IT (uint16_t)(0x0020U) /*!< Bit definition to manage only STOP evenement */ +#define I2C_XFER_RELOAD_IT (uint16_t)(0x0040U) /*!< Bit definition to manage only Reload of NBYTE */ + +/* Private define Sequential Transfer Options default/reset value */ +#define I2C_NO_OPTION_FRAME (0xFFFF0000U) +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup I2C_Private_Macro + * @{ + */ +/* Macro to get remaining data to transfer on DMA side */ +#define I2C_GET_DMA_REMAIN_DATA(__HANDLE__) __HAL_DMA_GET_COUNTER(__HANDLE__) +/** + * @} + */ + +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ + +/** @defgroup I2C_Private_Functions I2C Private Functions + * @{ + */ +/* Private functions to handle DMA transfer */ +static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma); +static void I2C_DMAError(DMA_HandleTypeDef *hdma); +static void I2C_DMAAbort(DMA_HandleTypeDef *hdma); + + +/* Private functions to handle IT transfer */ +static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c); +static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c); +static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); +static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode); + +/* Private functions to handle IT transfer */ +static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart); + +/* Private functions for I2C transfer IRQ handler */ +static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); +static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources); + +/* Private functions to handle flags during polling transfer */ +static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, + uint32_t Timeout, uint32_t Tickstart); +static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); +static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart); + +/* Private functions to centralize the enable/disable of Interrupts */ +static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest); +static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest); + +/* Private function to treat different error callback */ +static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c); + +/* Private function to flush TXDR register */ +static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c); + +/* Private function to handle start, restart or stop a transfer */ +static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, + uint32_t Request); + +/* Private function to Convert Specific options */ +static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup I2C_Exported_Functions I2C Exported Functions + * @{ + */ + +/** @defgroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] This subsection provides a set of functions allowing to initialize and + deinitialize the I2Cx peripheral: + + (+) User must Implement HAL_I2C_MspInit() function in which he configures + all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ). + + (+) Call the function HAL_I2C_Init() to configure the selected device with + the selected configuration: + (++) Clock Timing + (++) Own Address 1 + (++) Addressing mode (Master, Slave) + (++) Dual Addressing mode + (++) Own Address 2 + (++) Own Address 2 Mask + (++) General call mode + (++) Nostretch mode + + (+) Call the function HAL_I2C_DeInit() to restore the default configuration + of the selected I2Cx peripheral. + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the I2C according to the specified parameters + * in the I2C_InitTypeDef and initialize the associated handle. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) +{ + /* Check the I2C handle allocation */ + if (hi2c == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); + assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); + assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); + assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); + assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); + assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); + assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); + + if (hi2c->State == HAL_I2C_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + hi2c->Lock = HAL_UNLOCKED; + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + /* Init the I2C Callback settings */ + hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ + hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ + hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ + hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ + hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ + hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ + hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ + hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ + hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ + hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ + + if (hi2c->MspInitCallback == NULL) + { + hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ + } + + /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + hi2c->MspInitCallback(hi2c); +#else + /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + HAL_I2C_MspInit(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /*---------------------------- I2Cx TIMINGR Configuration ------------------*/ + /* Configure I2Cx: Frequency range */ + hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; + + /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ + /* Disable Own Address1 before set the Own Address1 configuration */ + hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; + + /* Configure I2Cx: Own Address1 and ack own address1 mode */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) + { + hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); + } + else /* I2C_ADDRESSINGMODE_10BIT */ + { + hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); + } + + /*---------------------------- I2Cx CR2 Configuration ----------------------*/ + /* Configure I2Cx: Addressing Master mode */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + { + SET_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); + } + else + { + /* Clear the I2C ADD10 bit */ + CLEAR_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); + } + /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ + hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); + + /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ + /* Disable Own Address2 before set the Own Address2 configuration */ + hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; + + /* Configure I2Cx: Dual mode and Own Address2 */ + hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ + (hi2c->Init.OwnAddress2Masks << 8)); + + /*---------------------------- I2Cx CR1 Configuration ----------------------*/ + /* Configure I2Cx: Generalcall and NoStretch mode */ + hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); + + /* Enable the selected I2C peripheral */ + __HAL_I2C_ENABLE(hi2c); + + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + hi2c->Mode = HAL_I2C_MODE_NONE; + + return HAL_OK; +} + +/** + * @brief DeInitialize the I2C peripheral. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) +{ + /* Check the I2C handle allocation */ + if (hi2c == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the I2C Peripheral Clock */ + __HAL_I2C_DISABLE(hi2c); + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + if (hi2c->MspDeInitCallback == NULL) + { + hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ + } + + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + hi2c->MspDeInitCallback(hi2c); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_I2C_MspDeInit(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + hi2c->State = HAL_I2C_STATE_RESET; + hi2c->PreviousState = I2C_STATE_NONE; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Release Lock */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Initialize the I2C MSP. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitialize the I2C MSP. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MspDeInit could be implemented in the user file + */ +} + +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +/** + * @brief Register a User I2C Callback + * To be used instead of the weak predefined callback + * @note The HAL_I2C_RegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_RESET + * to register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param CallbackID ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID + * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID + * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID + * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID + * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID + * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID + * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID + * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID + * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID + * @param pCallback pointer to the Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID, + pI2C_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + if (HAL_I2C_STATE_READY == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : + hi2c->MasterTxCpltCallback = pCallback; + break; + + case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : + hi2c->MasterRxCpltCallback = pCallback; + break; + + case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : + hi2c->SlaveTxCpltCallback = pCallback; + break; + + case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : + hi2c->SlaveRxCpltCallback = pCallback; + break; + + case HAL_I2C_LISTEN_COMPLETE_CB_ID : + hi2c->ListenCpltCallback = pCallback; + break; + + case HAL_I2C_MEM_TX_COMPLETE_CB_ID : + hi2c->MemTxCpltCallback = pCallback; + break; + + case HAL_I2C_MEM_RX_COMPLETE_CB_ID : + hi2c->MemRxCpltCallback = pCallback; + break; + + case HAL_I2C_ERROR_CB_ID : + hi2c->ErrorCallback = pCallback; + break; + + case HAL_I2C_ABORT_CB_ID : + hi2c->AbortCpltCallback = pCallback; + break; + + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = pCallback; + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (HAL_I2C_STATE_RESET == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = pCallback; + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief Unregister an I2C Callback + * I2C callback is redirected to the weak predefined callback + * @note The HAL_I2C_UnRegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_RESET + * to un-register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param CallbackID ID of the callback to be unregistered + * This parameter can be one of the following values: + * This parameter can be one of the following values: + * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID + * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID + * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID + * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID + * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID + * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID + * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID + * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID + * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID + * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (HAL_I2C_STATE_READY == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : + hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback */ + break; + + case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : + hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback */ + break; + + case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : + hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback */ + break; + + case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : + hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback */ + break; + + case HAL_I2C_LISTEN_COMPLETE_CB_ID : + hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback */ + break; + + case HAL_I2C_MEM_TX_COMPLETE_CB_ID : + hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback */ + break; + + case HAL_I2C_MEM_RX_COMPLETE_CB_ID : + hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback */ + break; + + case HAL_I2C_ERROR_CB_ID : + hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback */ + break; + + case HAL_I2C_ABORT_CB_ID : + hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback */ + break; + + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (HAL_I2C_STATE_RESET == hi2c->State) + { + switch (CallbackID) + { + case HAL_I2C_MSPINIT_CB_ID : + hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ + break; + + case HAL_I2C_MSPDEINIT_CB_ID : + hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ + break; + + default : + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief Register the Slave Address Match I2C Callback + * To be used instead of the weak HAL_I2C_AddrCallback() predefined callback + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pCallback pointer to the Address Match Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + if (HAL_I2C_STATE_READY == hi2c->State) + { + hi2c->AddrCallback = pCallback; + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief UnRegister the Slave Address Match I2C Callback + * Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined callback + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (HAL_I2C_STATE_READY == hi2c->State) + { + hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ + } + else + { + /* Update the error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup I2C_Exported_Functions_Group2 Input and Output operation functions + * @brief Data transfers functions + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the I2C data + transfers. + + (#) There are two modes of transfer: + (++) Blocking mode : The communication is performed in the polling mode. + The status of all data processing is returned by the same function + after finishing transfer. + (++) No-Blocking mode : The communication is performed using Interrupts + or DMA. These functions return the status of the transfer startup. + The end of the data processing will be indicated through the + dedicated I2C IRQ when using Interrupt mode or the DMA IRQ when + using DMA mode. + + (#) Blocking mode functions are : + (++) HAL_I2C_Master_Transmit() + (++) HAL_I2C_Master_Receive() + (++) HAL_I2C_Slave_Transmit() + (++) HAL_I2C_Slave_Receive() + (++) HAL_I2C_Mem_Write() + (++) HAL_I2C_Mem_Read() + (++) HAL_I2C_IsDeviceReady() + + (#) No-Blocking mode functions with Interrupt are : + (++) HAL_I2C_Master_Transmit_IT() + (++) HAL_I2C_Master_Receive_IT() + (++) HAL_I2C_Slave_Transmit_IT() + (++) HAL_I2C_Slave_Receive_IT() + (++) HAL_I2C_Mem_Write_IT() + (++) HAL_I2C_Mem_Read_IT() + (++) HAL_I2C_Master_Seq_Transmit_IT() + (++) HAL_I2C_Master_Seq_Receive_IT() + (++) HAL_I2C_Slave_Seq_Transmit_IT() + (++) HAL_I2C_Slave_Seq_Receive_IT() + (++) HAL_I2C_EnableListen_IT() + (++) HAL_I2C_DisableListen_IT() + (++) HAL_I2C_Master_Abort_IT() + + (#) No-Blocking mode functions with DMA are : + (++) HAL_I2C_Master_Transmit_DMA() + (++) HAL_I2C_Master_Receive_DMA() + (++) HAL_I2C_Slave_Transmit_DMA() + (++) HAL_I2C_Slave_Receive_DMA() + (++) HAL_I2C_Mem_Write_DMA() + (++) HAL_I2C_Mem_Read_DMA() + (++) HAL_I2C_Master_Seq_Transmit_DMA() + (++) HAL_I2C_Master_Seq_Receive_DMA() + (++) HAL_I2C_Slave_Seq_Transmit_DMA() + (++) HAL_I2C_Slave_Seq_Receive_DMA() + + (#) A set of Transfer Complete Callbacks are provided in non Blocking mode: + (++) HAL_I2C_MasterTxCpltCallback() + (++) HAL_I2C_MasterRxCpltCallback() + (++) HAL_I2C_SlaveTxCpltCallback() + (++) HAL_I2C_SlaveRxCpltCallback() + (++) HAL_I2C_MemTxCpltCallback() + (++) HAL_I2C_MemRxCpltCallback() + (++) HAL_I2C_AddrCallback() + (++) HAL_I2C_ListenCpltCallback() + (++) HAL_I2C_ErrorCallback() + (++) HAL_I2C_AbortCpltCallback() + +@endverbatim + * @{ + */ + +/** + * @brief Transmits in master mode an amount of data in blocking mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + uint32_t xfermode; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + if (hi2c->XferSize > 0U) + { + /* Preload TX register */ + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), xfermode, + I2C_GENERATE_START_WRITE); + } + else + { + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, + I2C_GENERATE_START_WRITE); + } + + while (hi2c->XferCount > 0U) + { + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + } + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receives in master mode an amount of data in blocking mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = 1U; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_GENERATE_START_READ); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + } + + while (hi2c->XferCount > 0U) + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + } + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmits in slave mode an amount of data in blocking mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout) +{ + uint32_t tickstart; + uint16_t tmpXferCount; + HAL_StatusTypeDef error; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Preload TX data if no stretch enable */ + if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) + { + /* Preload TX register */ + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + } + + /* Wait until ADDR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + return HAL_ERROR; + } + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* If 10bit addressing mode is selected */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + { + /* Wait until ADDR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + return HAL_ERROR; + } + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Wait until DIR flag is set Transmitter mode */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + return HAL_ERROR; + } + + while (hi2c->XferCount > 0U) + { + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + } + + /* Wait until AF flag is set */ + error = I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart); + + if (error != HAL_OK) + { + /* Check that I2C transfer finished */ + /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ + /* Mean XferCount == 0 */ + + tmpXferCount = hi2c->XferCount; + if ((hi2c->ErrorCode == HAL_I2C_ERROR_AF) && (tmpXferCount == 0U)) + { + /* Reset ErrorCode to NONE */ + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + } + else + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + } + else + { + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Clear AF flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Wait until STOP flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + return HAL_ERROR; + } + + /* Clear STOP flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + } + + /* Wait until BUSY flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in slave mode an amount of data in blocking mode + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t Timeout) +{ + uint32_t tickstart; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferISR = NULL; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Wait until ADDR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* Wait until DIR flag is reset Receiver mode */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + while (hi2c->XferCount > 0U) + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Store Last receive data if any */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) + { + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + } + + return HAL_ERROR; + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + } + + /* Wait until STOP flag is set */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Clear STOP flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Wait until BUSY flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) + { + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + return HAL_ERROR; + } + + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in master mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_IT; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ + if (hi2c->XferSize > 0U) + { + /* Preload TX register */ + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), xfermode, + I2C_GENERATE_START_WRITE); + } + else + { + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, + I2C_GENERATE_START_WRITE); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in master mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_IT; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = 1U; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, RXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in slave mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_IT; + + /* Preload TX data if no stretch enable */ + if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) + { + /* Preload TX register */ + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in slave mode an amount of data in non-blocking mode with Interrupt + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_IT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, RXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in master mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + HAL_StatusTypeDef dmaxferstatus; + uint32_t sizetoxfer = 0U; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_DMA; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + if (hi2c->XferSize > 0U) + { + /* Preload TX register */ + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + sizetoxfer = hi2c->XferSize; + hi2c->XferCount--; + hi2c->XferSize--; + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA stream */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, + (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), + xfermode, I2C_GENERATE_START_WRITE); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to write and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, I2C_AUTOEND_MODE, + I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in master mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size) +{ + uint32_t xfermode; + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Master_ISR_DMA; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = 1U; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = I2C_AUTOEND_MODE; + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA stream */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address */ + /* Set NBYTES to read and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to read and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, RXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Transmit in slave mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + /* Preload TX data if no stretch enable */ + if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) + { + /* Preload TX register */ + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + } + + if (hi2c->XferCount != 0U) + { + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA stream */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, + (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, STOP, NACK, ADDR interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, STOP, NACK, ADDR interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Receive in slave mode an amount of data in non-blocking mode with DMA + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef dmaxferstatus; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA stream */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, STOP, NACK, ADDR interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Write an amount of data in blocking mode to a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + } + + do + { + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + + } while (hi2c->XferCount > 0U); + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Read an amount of data in blocking mode from a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) +{ + uint32_t tickstart; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Init tickstart for timeout management*/ + tickstart = HAL_GetTick(); + + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferISR = NULL; + + /* Send Slave Address and Memory Address */ + if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK) + { + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + + /* Send Slave Address */ + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = 1U; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + I2C_GENERATE_START_READ); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + } + + do + { + /* Wait until RXNE flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = 1U; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, + I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_NO_STARTSTOP); + } + } + } while (hi2c->XferCount > 0U); + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @brief Write an amount of data in non-blocking mode with Interrupt to a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->XferSize = 0U; + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Mem_ISR_IT; + hi2c->Devaddress = DevAddress; + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Prefetch Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + /* If Memory address size is 16Bit */ + else + { + /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Prepare Memaddress buffer for LSB part */ + hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); + } + /* Send Slave Address and Memory Address */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Read an amount of data in non-blocking mode with Interrupt from a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Mem_ISR_IT; + hi2c->Devaddress = DevAddress; + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Prefetch Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + /* If Memory address size is 16Bit */ + else + { + /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Prepare Memaddress buffer for LSB part */ + hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); + } + /* Send Slave Address and Memory Address */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Write an amount of data in non-blocking mode with DMA to a specific memory address + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Mem_ISR_DMA; + hi2c->Devaddress = DevAddress; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Prefetch Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + /* If Memory address size is 16Bit */ + else + { + /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Prepare Memaddress buffer for LSB part */ + hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); + } + + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA stream */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address and Memory Address */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Reads an amount of data in non-blocking mode with DMA from a specific memory address. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param pData Pointer to data buffer + * @param Size Amount of data to be read + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, + uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +{ + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MEM; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferISR = I2C_Mem_ISR_DMA; + hi2c->Devaddress = DevAddress; + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Prefetch Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + /* If Memory address size is 16Bit */ + else + { + /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Prepare Memaddress buffer for LSB part */ + hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); + } + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA stream */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address and Memory Address */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Checks if target device is ready for communication. + * @note This function is used with Memory devices + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param Trials Number of trials + * @param Timeout Timeout duration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Trials, + uint32_t Timeout) +{ + uint32_t tickstart; + + __IO uint32_t I2C_Trials = 0UL; + + FlagStatus tmp1; + FlagStatus tmp2; + + if (hi2c->State == HAL_I2C_STATE_READY) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) + { + return HAL_BUSY; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + do + { + /* Generate Start */ + hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); + + /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + /* Wait until STOPF flag is set or a NACK flag is set*/ + tickstart = HAL_GetTick(); + + tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); + tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); + + while ((tmp1 == RESET) && (tmp2 == RESET)) + { + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + + tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); + tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); + } + + /* Check if the NACKF flag has not been set */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) + { + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Device is ready */ + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + /* Wait until STOPF flag is reset */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Clear STOP Flag, auto generated with autoend*/ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + } + + /* Increment Trials */ + I2C_Trials++; + } while (I2C_Trials < Trials); + + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with Interrupt. + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_WRITE; + uint32_t sizetoxfer = 0U; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_IT; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + if ((hi2c->XferSize > 0U) && ((XferOptions == I2C_FIRST_FRAME) || \ + (XferOptions == I2C_FIRST_AND_LAST_FRAME))) + { + /* Preload TX register */ + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + sizetoxfer = hi2c->XferSize; + hi2c->XferCount--; + hi2c->XferSize--; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + /* Send Slave Address and set NBYTES to write */ + if ((XferOptions == I2C_FIRST_FRAME) || (XferOptions == I2C_FIRST_AND_LAST_FRAME)) + { + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); + } + else + { + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with DMA. + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_WRITE; + HAL_StatusTypeDef dmaxferstatus; + uint32_t sizetoxfer = 0U; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_TX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_DMA; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + if ((hi2c->XferSize > 0U) && ((XferOptions == I2C_FIRST_FRAME) || \ + (XferOptions == I2C_FIRST_AND_LAST_FRAME))) + { + /* Preload TX register */ + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + sizetoxfer = hi2c->XferSize; + hi2c->XferCount--; + hi2c->XferSize--; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA stream */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, + (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address and set NBYTES to write */ + if ((XferOptions == I2C_FIRST_FRAME) || (XferOptions == I2C_FIRST_AND_LAST_FRAME)) + { + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); + } + else + { + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + } + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to write and generate START condition */ + if ((XferOptions == I2C_FIRST_FRAME) || (XferOptions == I2C_FIRST_AND_LAST_FRAME)) + { + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); + } + else + { + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with Interrupt + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_READ; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_IT; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + /* Send Slave Address and set NBYTES to read */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with DMA + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, + uint16_t Size, uint32_t XferOptions) +{ + uint32_t xfermode; + uint32_t xferrequest = I2C_GENERATE_START_READ; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY_RX; + hi2c->Mode = HAL_I2C_MODE_MASTER; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Master_ISR_DMA; + + /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + xfermode = hi2c->XferOptions; + } + + /* If transfer direction not change and there is no request to start another frame, + do not generate Restart Condition */ + /* Mean Previous state is same as current state */ + if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ + (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + { + xferrequest = I2C_NO_STARTSTOP; + } + else + { + /* Convert OTHER_xxx XferOptions if any */ + I2C_ConvertOtherXferOptions(hi2c); + + /* Update xfermode accordingly if no reload is necessary */ + if (hi2c->XferCount <= MAX_NBYTE_SIZE) + { + xfermode = hi2c->XferOptions; + } + } + + if (hi2c->XferSize > 0U) + { + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA stream */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pData, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Send Slave Address and set NBYTES to read */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR and NACK interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + else + { + /* Update Transfer ISR function pointer */ + hi2c->XferISR = I2C_Master_ISR_IT; + + /* Send Slave Address */ + /* Set NBYTES to read and generate START condition */ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + I2C_GENERATE_START_READ); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, TC, STOP, NACK, RXI interrupt */ + /* possible to enable all of these */ + /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | + I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with Interrupt + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + FlagStatus tmp; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave RX state to TX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + /* Abort DMA Xfer if any */ + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + } + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_IT; + + tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); + if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* REnable ADDR interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode with DMA + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + FlagStatus tmp; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave RX state to TX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + /* Abort DMA Xfer if any */ + if (hi2c->hdmarx != NULL) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + } + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Abort DMA Xfer if any */ + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + } + } + else + { + /* Nothing to do */ + } + + hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; + + /* Set the DMA error callback */ + hi2c->hdmatx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmatx->XferHalfCpltCallback = NULL; + hi2c->hdmatx->XferAbortCallback = NULL; + + /* Enable the DMA stream */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Reset XferSize */ + hi2c->XferSize = 0; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); + if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* Enable ERR, STOP, NACK, ADDR interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with Interrupt + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + FlagStatus tmp; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave TX state to RX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Abort DMA Xfer if any */ + if (hi2c->hdmatx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + } + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_IT; + + tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); + if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* REnable ADDR interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with DMA + * @note This interface allow to manage repeated start condition when a direction change during transfer + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param pData Pointer to data buffer + * @param Size Amount of data to be sent + * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, + uint32_t XferOptions) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + FlagStatus tmp; + HAL_StatusTypeDef dmaxferstatus; + + /* Check the parameters */ + assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + if ((pData == NULL) || (Size == 0U)) + { + hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; + return HAL_ERROR; + } + + /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); + + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ + /* and then toggle the HAL slave TX state to RX state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + /* Disable associated Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + /* Abort DMA Xfer if any */ + if (hi2c->hdmatx != NULL) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + } + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* Abort DMA Xfer if any */ + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + } + } + else + { + /* Nothing to do */ + } + + hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; + hi2c->Mode = HAL_I2C_MODE_SLAVE; + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + + /* Enable Address Acknowledge */ + hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + + /* Prepare transfer parameters */ + hi2c->pBuffPtr = pData; + hi2c->XferCount = Size; + hi2c->XferSize = hi2c->XferCount; + hi2c->XferOptions = XferOptions; + hi2c->XferISR = I2C_Slave_ISR_DMA; + + if (hi2c->hdmarx != NULL) + { + /* Set the I2C DMA transfer complete callback */ + hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; + + /* Set the DMA error callback */ + hi2c->hdmarx->XferErrorCallback = I2C_DMAError; + + /* Set the unused DMA callbacks to NULL */ + hi2c->hdmarx->XferHalfCpltCallback = NULL; + hi2c->hdmarx->XferAbortCallback = NULL; + + /* Enable the DMA stream */ + dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, + (uint32_t)pData, hi2c->XferSize); + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + if (dmaxferstatus == HAL_OK) + { + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Reset XferSize */ + hi2c->XferSize = 0; + } + else + { + /* Update I2C state */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Update I2C error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + + tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); + if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) + { + /* Clear ADDR flag after prepare the transfer parameters */ + /* This action will generate an acknowledge to the Master */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Enable DMA Request */ + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + /* REnable ADDR interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Enable the Address listen mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) +{ + if (hi2c->State == HAL_I2C_STATE_READY) + { + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->XferISR = I2C_Slave_ISR_IT; + + /* Enable the Address Match interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Disable the Address listen mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) +{ + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + uint32_t tmp; + + /* Disable Address listen mode only if a transfer is not ongoing */ + if (hi2c->State == HAL_I2C_STATE_LISTEN) + { + tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; + hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferISR = NULL; + + /* Disable the Address Match interrupt */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Abort a master or memory I2C IT or DMA process communication with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) +{ + HAL_I2C_ModeTypeDef tmp_mode = hi2c->Mode; + + if ((tmp_mode == HAL_I2C_MODE_MASTER) || (tmp_mode == HAL_I2C_MODE_MEM)) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + /* Disable Interrupts and Store Previous state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Set State at HAL_I2C_STATE_ABORT */ + hi2c->State = HAL_I2C_STATE_ABORT; + + /* Set NBYTES to 1 to generate a dummy read on I2C peripheral */ + /* Set AUTOEND mode, this will generate a NACK then STOP condition to abort the current transfer */ + I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Note : The I2C interrupts must be enabled after unlocking current process + to avoid the risk of I2C interrupt handle execution before current + process unlock */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + + return HAL_OK; + } + else + { + /* Wrong usage of abort function */ + /* This function should be used only in case of abort monitored by master device */ + return HAL_ERROR; + } +} + +/** + * @} + */ + +/** @defgroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks + * @{ + */ + +/** + * @brief This function handles I2C event interrupt request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ +{ + /* Get current IT Flags and IT sources value */ + uint32_t itflags = READ_REG(hi2c->Instance->ISR); + uint32_t itsources = READ_REG(hi2c->Instance->CR1); + + /* I2C events treatment -------------------------------------*/ + if (hi2c->XferISR != NULL) + { + hi2c->XferISR(hi2c, itflags, itsources); + } +} + +/** + * @brief This function handles I2C error interrupt request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) +{ + uint32_t itflags = READ_REG(hi2c->Instance->ISR); + uint32_t itsources = READ_REG(hi2c->Instance->CR1); + uint32_t tmperror; + + /* I2C Bus error interrupt occurred ------------------------------------*/ + if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; + + /* Clear BERR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); + } + + /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/ + if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; + + /* Clear OVR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); + } + + /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/ + if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ + (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; + + /* Clear ARLO flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); + } + + /* Store current volatile hi2c->ErrorCode, misra rule */ + tmperror = hi2c->ErrorCode; + + /* Call the Error Callback in case of Error detected */ + if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) != HAL_I2C_ERROR_NONE) + { + I2C_ITError(hi2c, tmperror); + } +} + +/** + * @brief Master Tx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MasterTxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Master Rx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MasterRxCpltCallback could be implemented in the user file + */ +} + +/** @brief Slave Tx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Slave Rx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_SlaveRxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Slave Address Match callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFERDIRECTION + * @param AddrMatchCode Address Match Code + * @retval None + */ +__weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + UNUSED(TransferDirection); + UNUSED(AddrMatchCode); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_AddrCallback() could be implemented in the user file + */ +} + +/** + * @brief Listen Complete callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_ListenCpltCallback() could be implemented in the user file + */ +} + +/** + * @brief Memory Tx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MemTxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Memory Rx Transfer completed callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_MemRxCpltCallback could be implemented in the user file + */ +} + +/** + * @brief I2C error callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_ErrorCallback could be implemented in the user file + */ +} + +/** + * @brief I2C abort callback. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval None + */ +__weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hi2c); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_I2C_AbortCpltCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** @defgroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions + * @brief Peripheral State, Mode and Error functions + * +@verbatim + =============================================================================== + ##### Peripheral State, Mode and Error functions ##### + =============================================================================== + [..] + This subsection permit to get in run-time the status of the peripheral + and the data flow. + +@endverbatim + * @{ + */ + +/** + * @brief Return the I2C handle state. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval HAL state + */ +HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c) +{ + /* Return I2C handle state */ + return hi2c->State; +} + +/** + * @brief Returns the I2C Master, Slave, Memory or no mode. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for I2C module + * @retval HAL mode + */ +HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c) +{ + return hi2c->Mode; +} + +/** + * @brief Return the I2C error code. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @retval I2C Error Code + */ +uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c) +{ + return hi2c->ErrorCode; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup I2C_Private_Functions + * @{ + */ + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint16_t devaddress; + uint32_t tmpITFlags = ITFlags; + + /* Process Locked */ + __HAL_LOCK(hi2c); + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set corresponding Error Code */ + /* No need to generate STOP, it is automatically done */ + /* Error callback will be send during stop flag treatment */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + { + /* Remove RXNE flag on temporary variable as read done */ + tmpITFlags &= ~I2C_FLAG_RXNE; + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) == RESET) && \ + ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))) + { + /* Write data to TXDR */ + if (hi2c->XferCount != 0U) + { + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + /* Errata workaround 170323 */ + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) + { + hi2c->XferSize = 1U; + } + else + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + { + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, + hi2c->XferOptions, I2C_NO_STARTSTOP); + } + else + { + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + } + } + } + else + { + /* Call TxCpltCallback() if no stop mode is set */ + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + else + { + /* Wrong size Status regarding TCR flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if (hi2c->XferCount == 0U) + { + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Generate a stop condition in case of no transfer option */ + if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + } + else + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + } + } + else + { + /* Wrong size Status regarding TC flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + else + { + /* Nothing to do */ + } + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Master complete process */ + I2C_ITMasterCplt(hi2c, tmpITFlags); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint32_t direction = I2C_GENERATE_START_WRITE; + uint32_t tmpITFlags = ITFlags; + + /* Process Locked */ + __HAL_LOCK(hi2c); + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set corresponding Error Code */ + /* No need to generate STOP, it is automatically done */ + /* Error callback will be send during stop flag treatment */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + { + /* Remove RXNE flag on temporary variable as read done */ + tmpITFlags &= ~I2C_FLAG_RXNE; + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + { + if (hi2c->Memaddress == 0xFFFFFFFFU) + { + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + else + { + /* Write LSB part of Memory Address */ + hi2c->Instance->TXDR = hi2c->Memaddress; + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + { + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + /* Errata workaround 170323 */ + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) + { + hi2c->XferSize = 1U; + } + else + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + } + } + else + { + /* Wrong size Status regarding TCR flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + /* Disable Interrupt related to address step */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + /* Enable ERR, TC, STOP, NACK and RXI interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); + + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + direction = I2C_GENERATE_START_READ; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + /* Errata workaround 170323 */ + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) + { + hi2c->XferSize = 1U; + } + else + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_RELOAD_MODE, direction); + } + else + { + hi2c->XferSize = hi2c->XferCount; + + /* Set NBYTES to write and generate RESTART */ + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, direction); + } + } + else + { + /* Nothing to do */ + } + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Master complete process */ + I2C_ITMasterCplt(hi2c, tmpITFlags); + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint32_t tmpoptions = hi2c->XferOptions; + uint32_t tmpITFlags = ITFlags; + + /* Process locked */ + __HAL_LOCK(hi2c); + + /* Check if STOPF is set */ + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Slave complete process */ + I2C_ITSlaveCplt(hi2c, tmpITFlags); + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Check that I2C transfer finished */ + /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ + /* Mean XferCount == 0*/ + /* So clear Flag NACKF only */ + if (hi2c->XferCount == 0U) + { + if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) + /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + Warning[Pa134]: left and right operands are identical */ + { + /* Call I2C Listen complete process */ + I2C_ITListenCplt(hi2c, tmpITFlags); + } + else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + } + } + else + { + /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + } + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + { + if (hi2c->XferCount > 0U) + { + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferSize--; + hi2c->XferCount--; + } + + if ((hi2c->XferCount == 0U) && \ + (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + { + I2C_ITAddrCplt(hi2c, tmpITFlags); + } + else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + { + /* Write data to TXDR only if XferCount not reach "0" */ + /* A TXIS flag can be set, during STOP treatment */ + /* Check if all Data have already been sent */ + /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */ + if (hi2c->XferCount > 0U) + { + /* Write data to TXDR */ + hi2c->Instance->TXDR = *hi2c->pBuffPtr; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + hi2c->XferCount--; + hi2c->XferSize--; + } + else + { + if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) + { + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + } + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with DMA. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint16_t devaddress; + uint32_t xfermode; + + /* Process Locked */ + __HAL_LOCK(hi2c); + + if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set corresponding Error Code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* No need to generate STOP, it is automatically done */ + /* But enable STOP interrupt, to treat it */ + /* Error callback will be send during stop flag treatment */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + /* Disable TC interrupt */ + __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); + + if (hi2c->XferCount != 0U) + { + /* Recover Slave address */ + devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); + + /* Prepare the new XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + /* Errata workaround 170323 */ + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) + { + hi2c->XferSize = 1U; + } + else + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + xfermode = I2C_RELOAD_MODE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + { + xfermode = hi2c->XferOptions; + } + else + { + xfermode = I2C_AUTOEND_MODE; + } + } + + /* Set the new XferSize in Nbytes register */ + I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Enable DMA Request */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + } + else + { + /* Call TxCpltCallback() if no stop mode is set */ + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + else + { + /* Wrong size Status regarding TCR flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + if (hi2c->XferCount == 0U) + { + if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) + { + /* Generate a stop condition in case of no transfer option */ + if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + } + else + { + /* Call I2C Master Sequential complete process */ + I2C_ITMasterSeqCplt(hi2c); + } + } + } + else + { + /* Wrong size Status regarding TC flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Master complete process */ + I2C_ITMasterCplt(hi2c, ITFlags); + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with DMA. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint32_t direction = I2C_GENERATE_START_WRITE; + + /* Process Locked */ + __HAL_LOCK(hi2c); + + if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set corresponding Error Code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* No need to generate STOP, it is automatically done */ + /* But enable STOP interrupt, to treat it */ + /* Error callback will be send during stop flag treatment */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + { + /* Write LSB part of Memory Address */ + hi2c->Instance->TXDR = hi2c->Memaddress; + + /* Reset Memaddress content */ + hi2c->Memaddress = 0xFFFFFFFFU; + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + /* Disable Interrupt related to address step */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + /* Enable only Error interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + if (hi2c->XferCount != 0U) + { + /* Prepare the new XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + /* Errata workaround 170323 */ + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) + { + hi2c->XferSize = 1U; + } + else + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + } + else + { + hi2c->XferSize = hi2c->XferCount; + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + } + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Enable DMA Request */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + } + else + { + /* Wrong size Status regarding TCR flag event */ + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + { + /* Disable Interrupt related to address step */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + /* Enable only Error and NACK interrupt for data transfer */ + I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); + + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + direction = I2C_GENERATE_START_READ; + } + + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + /* Errata workaround 170323 */ + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) + { + hi2c->XferSize = 1U; + } + else + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + + /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_RELOAD_MODE, direction); + } + else + { + hi2c->XferSize = hi2c->XferCount; + + /* Set NBYTES to write and generate RESTART */ + I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + I2C_AUTOEND_MODE, direction); + } + + /* Update XferCount value */ + hi2c->XferCount -= hi2c->XferSize; + + /* Enable DMA Request */ + if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; + } + else + { + hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Master complete process */ + I2C_ITMasterCplt(hi2c, ITFlags); + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param ITFlags Interrupt flags to handle. + * @param ITSources Interrupt sources enabled. + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + uint32_t ITSources) +{ + uint32_t tmpoptions = hi2c->XferOptions; + uint32_t treatdmanack = 0U; + HAL_I2C_StateTypeDef tmpstate; + + /* Process locked */ + __HAL_LOCK(hi2c); + + /* Check if STOPF is set */ + if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + { + /* Call I2C Slave complete process */ + I2C_ITSlaveCplt(hi2c, ITFlags); + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + { + /* Check that I2C transfer finished */ + /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ + /* Mean XferCount == 0 */ + /* So clear Flag NACKF only */ + if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || + (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) + { + /* Split check of hdmarx, for MISRA compliance */ + if (hi2c->hdmarx != NULL) + { + if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET) + { + if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) + { + treatdmanack = 1U; + } + } + } + + /* Split check of hdmatx, for MISRA compliance */ + if (hi2c->hdmatx != NULL) + { + if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) + { + if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) + { + treatdmanack = 1U; + } + } + } + + if (treatdmanack == 1U) + { + if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) + /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + Warning[Pa134]: left and right operands are identical */ + { + /* Call I2C Listen complete process */ + I2C_ITListenCplt(hi2c, ITFlags); + } + else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + } + } + else + { + /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + /* Store current hi2c->State, solve MISRA2012-Rule-13.5 */ + tmpstate = hi2c->State; + + if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) + { + if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) + { + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + } + else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + { + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + } + } + } + else + { + /* Only Clear NACK Flag, no DMA treatment is pending */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + } + } + else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \ + (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + { + I2C_ITAddrCplt(hi2c, ITFlags); + } + else + { + /* Nothing to do */ + } + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; +} + +/** + * @brief Master sends target device address followed by internal memory address for write request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart) +{ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRITE); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Send Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + /* If Memory address size is 16Bit */ + else + { + /* Send MSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Send LSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + + /* Wait until TCR flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @brief Master sends target device address followed by internal memory address for read request. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param DevAddress Target device address: The device 7 bits address value + * in datasheet must be shifted to the left before calling the interface + * @param MemAddress Internal memory address + * @param MemAddSize Size of internal memory address + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout, + uint32_t Tickstart) +{ + I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WRITE); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* If Memory address size is 8Bit */ + if (MemAddSize == I2C_MEMADD_SIZE_8BIT) + { + /* Send Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + /* If Memory address size is 16Bit */ + else + { + /* Send MSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); + + /* Wait until TXIS flag is set */ + if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Send LSB of Memory Address */ + hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + } + + /* Wait until TC flag is set */ + if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @brief I2C Address complete process callback. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + uint8_t transferdirection; + uint16_t slaveaddrcode; + uint16_t ownadd1code; + uint16_t ownadd2code; + + /* Prevent unused argument(s) compilation warning */ + UNUSED(ITFlags); + + /* In case of Listen state, need to inform upper layer of address match code event */ + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) + { + transferdirection = I2C_GET_DIR(hi2c); + slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); + ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); + ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); + + /* If 10bits addressing mode is selected */ + if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + { + if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK)) + { + slaveaddrcode = ownadd1code; + hi2c->AddrEventCount++; + if (hi2c->AddrEventCount == 2U) + { + /* Reset Address Event counter */ + hi2c->AddrEventCount = 0U; + + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call Slave Addr callback */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +#else + HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + else + { + slaveaddrcode = ownadd2code; + + /* Disable ADDR Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call Slave Addr callback */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +#else + HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + /* else 7 bits addressing mode is selected */ + else + { + /* Disable ADDR Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call Slave Addr callback */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +#else + HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + /* Else clear address flag only */ + else + { + /* Clear ADDR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + } +} + +/** + * @brief I2C Master sequential complete process. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) +{ + /* Reset I2C handle mode */ + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* No Generate Stop, to permit restart mode */ + /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + hi2c->XferISR = NULL; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterTxCpltCallback(hi2c); +#else + HAL_I2C_MasterTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ + else + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + hi2c->XferISR = NULL; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterRxCpltCallback(hi2c); +#else + HAL_I2C_MasterRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } +} + +/** + * @brief I2C Slave sequential complete process. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) +{ + uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); + + /* Reset I2C handle mode */ + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* If a DMA is ongoing, Update handle size context */ + if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + } + else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + } + else + { + /* Do nothing */ + } + + if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + { + /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveTxCpltCallback(hi2c); +#else + HAL_I2C_SlaveTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) + { + /* Remove HAL_I2C_STATE_SLAVE_BUSY_RX, keep only HAL_I2C_STATE_LISTEN */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + + /* Disable Interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveRxCpltCallback(hi2c); +#else + HAL_I2C_SlaveRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + /* Nothing to do */ + } +} + +/** + * @brief I2C Master complete process. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + uint32_t tmperror; + uint32_t tmpITFlags = ITFlags; + __IO uint32_t tmpreg; + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Disable Interrupts and Store Previous state */ + if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + } + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + } + else + { + /* Do nothing */ + } + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + /* Reset handle parameters */ + hi2c->XferISR = NULL; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + + if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set acknowledge error code */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + } + + /* Fetch Last receive data if any */ + if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) + { + /* Read data from RXDR */ + tmpreg = (uint8_t)hi2c->Instance->RXDR; + UNUSED(tmpreg); + } + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Store current volatile hi2c->ErrorCode, misra rule */ + tmperror = hi2c->ErrorCode; + + /* Call the corresponding callback to inform upper layer of End of Transfer */ + if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + } + /* hi2c->State == HAL_I2C_STATE_BUSY_TX */ + else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + if (hi2c->Mode == HAL_I2C_MODE_MEM) + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MemTxCpltCallback(hi2c); +#else + HAL_I2C_MemTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterTxCpltCallback(hi2c); +#else + HAL_I2C_MasterTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + if (hi2c->Mode == HAL_I2C_MODE_MEM) + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MemRxCpltCallback(hi2c); +#else + HAL_I2C_MemRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->MasterRxCpltCallback(hi2c); +#else + HAL_I2C_MasterRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + } + else + { + /* Nothing to do */ + } +} + +/** + * @brief I2C Slave complete process. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); + uint32_t tmpITFlags = ITFlags; + uint32_t tmpoptions = hi2c->XferOptions; + HAL_I2C_StateTypeDef tmpstate = hi2c->State; + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Disable Interrupts and Store Previous state */ + if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + } + else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); + hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + } + else if (tmpstate == HAL_I2C_STATE_LISTEN) + { + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT); + hi2c->PreviousState = I2C_STATE_NONE; + } + else + { + /* Do nothing */ + } + + /* Disable Address Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* If a DMA is ongoing, Update handle size context */ + if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + if (hi2c->hdmatx != NULL) + { + hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); + } + } + else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + if (hi2c->hdmarx != NULL) + { + hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); + } + } + else + { + /* Do nothing */ + } + + /* Store Last receive data if any */ + if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) + { + /* Remove RXNE flag on temporary variable as read done */ + tmpITFlags &= ~I2C_FLAG_RXNE; + + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + if ((hi2c->XferSize > 0U)) + { + hi2c->XferSize--; + hi2c->XferCount--; + } + } + + /* All data are not transferred, so set error code accordingly */ + if (hi2c->XferCount != 0U) + { + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + } + + if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ + (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_IT_NACKI) != RESET)) + { + /* Check that I2C transfer finished */ + /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ + /* Mean XferCount == 0*/ + /* So clear Flag NACKF only */ + if (hi2c->XferCount == 0U) + { + if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) + /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + Warning[Pa134]: left and right operands are identical */ + { + /* Call I2C Listen complete process */ + I2C_ITListenCplt(hi2c, tmpITFlags); + } + else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + } + } + else + { + /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + + if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + } + } + } + + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferISR = NULL; + + if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, hi2c->ErrorCode); + + /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ + if (hi2c->State == HAL_I2C_STATE_LISTEN) + { + /* Call I2C Listen complete process */ + I2C_ITListenCplt(hi2c, tmpITFlags); + } + } + else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + { + /* Call the Sequential Complete callback, to inform upper layer of the end of Transfer */ + I2C_ITSlaveSeqCplt(hi2c); + + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->ListenCpltCallback(hi2c); +#else + HAL_I2C_ListenCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + /* Call the corresponding callback to inform upper layer of End of Transfer */ + else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveRxCpltCallback(hi2c); +#else + HAL_I2C_SlaveRxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->SlaveTxCpltCallback(hi2c); +#else + HAL_I2C_SlaveTxCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } +} + +/** + * @brief I2C Listen complete process. + * @param hi2c I2C handle. + * @param ITFlags Interrupt flags to handle. + * @retval None + */ +static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +{ + /* Reset handle parameters */ + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->PreviousState = I2C_STATE_NONE; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferISR = NULL; + + /* Store Last receive data if any */ + if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET) + { + /* Read data from RXDR */ + *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + + /* Increment Buffer pointer */ + hi2c->pBuffPtr++; + + if ((hi2c->XferSize > 0U)) + { + hi2c->XferSize--; + hi2c->XferCount--; + + /* Set ErrorCode corresponding to a Non-Acknowledge */ + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + } + } + + /* Disable all Interrupts*/ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); + + /* Clear NACK Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->ListenCpltCallback(hi2c); +#else + HAL_I2C_ListenCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +} + +/** + * @brief I2C interrupts error process. + * @param hi2c I2C handle. + * @param ErrorCode Error code to handle. + * @retval None + */ +static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) +{ + HAL_I2C_StateTypeDef tmpstate = hi2c->State; + + uint32_t tmppreviousstate; + + /* Reset handle parameters */ + hi2c->Mode = HAL_I2C_MODE_NONE; + hi2c->XferOptions = I2C_NO_OPTION_FRAME; + hi2c->XferCount = 0U; + + /* Set new error code */ + hi2c->ErrorCode |= ErrorCode; + + /* Disable Interrupts */ + if ((tmpstate == HAL_I2C_STATE_LISTEN) || + (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || + (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + { + /* Disable all interrupts, except interrupts related to LISTEN state */ + I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); + + /* keep HAL_I2C_STATE_LISTEN if set */ + hi2c->State = HAL_I2C_STATE_LISTEN; + hi2c->XferISR = I2C_Slave_ISR_IT; + } + else + { + /* Disable all interrupts */ + I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); + + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* If state is an abort treatment on going, don't change state */ + /* This change will be do later */ + if (hi2c->State != HAL_I2C_STATE_ABORT) + { + /* Set HAL_I2C_STATE_READY */ + hi2c->State = HAL_I2C_STATE_READY; + + /* Check if a STOPF is detected */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) + { + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) + { + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + } + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + } + + } + hi2c->XferISR = NULL; + } + + /* Abort DMA TX transfer if any */ + tmppreviousstate = hi2c->PreviousState; + + if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ + (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) + { + if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + } + + if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Abort DMA TX */ + if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) + { + /* Call Directly XferAbortCallback function in case of error */ + hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); + } + } + else + { + I2C_TreatErrorCallback(hi2c); + } + } + /* Abort DMA RX transfer if any */ + else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ + (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) + { + if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) + { + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + } + + if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) + { + /* Set the I2C DMA Abort callback : + will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ + hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Abort DMA RX */ + if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) + { + /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */ + hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); + } + } + else + { + I2C_TreatErrorCallback(hi2c); + } + } + else + { + I2C_TreatErrorCallback(hi2c); + } +} + +/** + * @brief I2C Error callback treatment. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) +{ + if (hi2c->State == HAL_I2C_STATE_ABORT) + { + hi2c->State = HAL_I2C_STATE_READY; + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->AbortCpltCallback(hi2c); +#else + HAL_I2C_AbortCpltCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } + else + { + hi2c->PreviousState = I2C_STATE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + /* Call the corresponding callback to inform upper layer of End of Transfer */ +#if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + hi2c->ErrorCallback(hi2c); +#else + HAL_I2C_ErrorCallback(hi2c); +#endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + } +} + +/** + * @brief I2C Tx data register flush process. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) +{ + /* If a pending TXIS flag is set */ + /* Write a dummy data in TXDR to clear it */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) + { + hi2c->Instance->TXDR = 0x00U; + } + + /* Flush TX register if not empty */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) + { + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); + } +} + +/** + * @brief DMA I2C master transmit process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* If last transfer, enable STOP interrupt */ + if (hi2c->XferCount == 0U) + { + /* Enable STOP interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + } + /* else prepare a new DMA transfer and enable TCReload interrupt */ + else + { + /* Update Buffer pointer */ + hi2c->pBuffPtr += hi2c->XferSize; + + /* Set the XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + else + { + hi2c->XferSize = hi2c->XferCount; + } + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, + hi2c->XferSize) != HAL_OK) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); + } + else + { + /* Enable TC interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); + } + } +} + + +/** + * @brief DMA I2C slave transmit process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + uint32_t tmpoptions = hi2c->XferOptions; + + if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; + + /* Last Byte is Transmitted */ + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* No specific action, Master fully manage the generation of STOP condition */ + /* Mean that this generation can arrive at any time, at the end or during DMA process */ + /* So STOP condition should be manage through Interrupt treatment */ + } +} + + +/** + * @brief DMA I2C master receive process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* If last transfer, enable STOP interrupt */ + if (hi2c->XferCount == 0U) + { + /* Enable STOP interrupt */ + I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); + } + /* else prepare a new DMA transfer and enable TCReload interrupt */ + else + { + /* Update Buffer pointer */ + hi2c->pBuffPtr += hi2c->XferSize; + + /* Set the XferSize to transfer */ + if (hi2c->XferCount > MAX_NBYTE_SIZE) + { + /* Errata workaround 170323 */ + if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) + { + hi2c->XferSize = 1U; + } + else + { + hi2c->XferSize = MAX_NBYTE_SIZE; + } + } + else + { + hi2c->XferSize = hi2c->XferCount; + } + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, + hi2c->XferSize) != HAL_OK) + { + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); + } + else + { + /* Enable TC interrupts */ + I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); + } + } +} + + +/** + * @brief DMA I2C slave receive process complete callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + uint32_t tmpoptions = hi2c->XferOptions; + + if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ + (tmpoptions != I2C_NO_OPTION_FRAME)) + { + /* Disable DMA Request */ + hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; + + /* Call I2C Slave Sequential complete process */ + I2C_ITSlaveSeqCplt(hi2c); + } + else + { + /* No specific action, Master fully manage the generation of STOP condition */ + /* Mean that this generation can arrive at any time, at the end or during DMA process */ + /* So STOP condition should be manage through Interrupt treatment */ + } +} + + +/** + * @brief DMA I2C communication error callback. + * @param hdma DMA handle + * @retval None + */ +static void I2C_DMAError(DMA_HandleTypeDef *hdma) +{ + uint32_t treatdmaerror = 0U; + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + if (hi2c->hdmatx != NULL) + { + if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) + { + treatdmaerror = 1U; + } + } + + if (hi2c->hdmarx != NULL) + { + if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) + { + treatdmaerror = 1U; + } + } + + /* Check if a FIFO error is detected, if true normal use case, so no specific action to perform */ + if (!((HAL_DMA_GetError(hdma) == HAL_DMA_ERROR_FE)) && (treatdmaerror != 0U)) + { + /* Disable Acknowledge */ + hi2c->Instance->CR2 |= I2C_CR2_NACK; + + /* Call the corresponding callback to inform upper layer of End of Transfer */ + I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); + } +} + + +/** + * @brief DMA I2C communication abort callback + * (To be called at end of DMA Abort procedure). + * @param hdma DMA handle. + * @retval None + */ +static void I2C_DMAAbort(DMA_HandleTypeDef *hdma) +{ + /* Derogation MISRAC2012-Rule-11.5 */ + I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); + + /* Reset AbortCpltCallback */ + if (hi2c->hdmatx != NULL) + { + hi2c->hdmatx->XferAbortCallback = NULL; + } + if (hi2c->hdmarx != NULL) + { + hi2c->hdmarx->XferAbortCallback = NULL; + } + + I2C_TreatErrorCallback(hi2c); +} + + +/** + * @brief This function handles I2C Communication Timeout. It waits + * until a flag is no longer in the specified status. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Flag Specifies the I2C flag to check. + * @param Status The actual Flag status (SET or RESET). + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagStatus Status, + uint32_t Timeout, uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) + { + /* Check if an error is detected */ + if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + return HAL_ERROR; + } + } + } + } + return HAL_OK; +} + +/** + * @brief This function handles I2C Communication Timeout for specific usage of TXIS flag. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) + { + /* Check if an error is detected */ + if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + } + } + return HAL_OK; +} + +/** + * @brief This function handles I2C Communication Timeout for specific usage of STOP flag. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + { + /* Check if an error is detected */ + if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) + { + return HAL_ERROR; + } + + /* Check for the Timeout */ + if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) + { + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_ERROR; + } + } + } + return HAL_OK; +} + +/** + * @brief This function handles I2C Communication Timeout for specific usage of RXNE flag. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + uint32_t Tickstart) +{ + HAL_StatusTypeDef status = HAL_OK; + + while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) && (status == HAL_OK)) + { + /* Check if an error is detected */ + if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) + { + status = HAL_ERROR; + } + + /* Check if a STOPF is detected */ + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) && (status == HAL_OK)) + { + /* Check if an RXNE is pending */ + /* Store Last receive data if any */ + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) + { + /* Return HAL_OK */ + /* The Reading of data from RXDR will be done in caller function */ + status = HAL_OK; + } + + /* Check a no-acknowledge have been detected */ + if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) + { + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + hi2c->ErrorCode = HAL_I2C_ERROR_AF; + + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + status = HAL_ERROR; + } + else + { + hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + } + } + + /* Check for the Timeout */ + if ((((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) && (status == HAL_OK)) + { + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)) + { + hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + status = HAL_ERROR; + } + } + } + return status; +} + +/** + * @brief This function handles errors detection during an I2C Communication. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param Timeout Timeout duration + * @param Tickstart Tick start value + * @retval HAL status + */ +static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Tickstart) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t itflag = hi2c->Instance->ISR; + uint32_t error_code = 0; + uint32_t tickstart = Tickstart; + uint32_t tmp1; + HAL_I2C_ModeTypeDef tmp2; + + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_AF)) + { + /* Clear NACKF Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); + + /* Wait until STOP Flag is set or timeout occurred */ + /* AutoEnd should be initiate after AF */ + while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) + { + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); + tmp2 = hi2c->Mode; + + /* In case of I2C still busy, try to regenerate a STOP manually */ + if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ + (tmp1 != I2C_CR2_STOP) && \ + (tmp2 != HAL_I2C_MODE_SLAVE)) + { + /* Generate Stop */ + hi2c->Instance->CR2 |= I2C_CR2_STOP; + + /* Update Tick with new reference */ + tickstart = HAL_GetTick(); + } + + while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + { + /* Check for the Timeout */ + if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF) + { + error_code |= HAL_I2C_ERROR_TIMEOUT; + + status = HAL_ERROR; + + break; + } + } + } + } + } + + /* In case STOP Flag is detected, clear it */ + if (status == HAL_OK) + { + /* Clear STOP Flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + } + + error_code |= HAL_I2C_ERROR_AF; + + status = HAL_ERROR; + } + + /* Refresh Content of Status register */ + itflag = hi2c->Instance->ISR; + + /* Then verify if an additional errors occurs */ + /* Check if a Bus error occurred */ + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_BERR)) + { + error_code |= HAL_I2C_ERROR_BERR; + + /* Clear BERR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); + + status = HAL_ERROR; + } + + /* Check if an Over-Run/Under-Run error occurred */ + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_OVR)) + { + error_code |= HAL_I2C_ERROR_OVR; + + /* Clear OVR flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); + + status = HAL_ERROR; + } + + /* Check if an Arbitration Loss error occurred */ + if (HAL_IS_BIT_SET(itflag, I2C_FLAG_ARLO)) + { + error_code |= HAL_I2C_ERROR_ARLO; + + /* Clear ARLO flag */ + __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); + + status = HAL_ERROR; + } + + if (status != HAL_OK) + { + /* Flush TX register */ + I2C_Flush_TXDR(hi2c); + + /* Clear Configuration Register 2 */ + I2C_RESET_CR2(hi2c); + + hi2c->ErrorCode |= error_code; + hi2c->State = HAL_I2C_STATE_READY; + hi2c->Mode = HAL_I2C_MODE_NONE; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + } + + return status; +} + +/** + * @brief Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag are set). + * @param hi2c I2C handle. + * @param DevAddress Specifies the slave address to be programmed. + * @param Size Specifies the number of bytes to be programmed. + * This parameter must be a value between 0 and 255. + * @param Mode New state of the I2C START condition generation. + * This parameter can be one of the following values: + * @arg @ref I2C_RELOAD_MODE Enable Reload mode . + * @arg @ref I2C_AUTOEND_MODE Enable Automatic end mode. + * @arg @ref I2C_SOFTEND_MODE Enable Software end mode. + * @param Request New state of the I2C START condition generation. + * This parameter can be one of the following values: + * @arg @ref I2C_NO_STARTSTOP Don't Generate stop and start condition. + * @arg @ref I2C_GENERATE_STOP Generate stop condition (Size should be set to 0). + * @arg @ref I2C_GENERATE_START_READ Generate Restart for read request. + * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. + * @retval None + */ +static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t Mode, + uint32_t Request) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_TRANSFER_MODE(Mode)); + assert_param(IS_TRANSFER_REQUEST(Request)); + + /* Declaration of tmp to prevent undefined behavior of volatile usage */ + uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ + (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ + (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U)); + + /* update CR2 register */ + MODIFY_REG(hi2c->Instance->CR2, \ + ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \ + (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ + I2C_CR2_START | I2C_CR2_STOP)), tmp); +} + +/** + * @brief Manage the enabling of Interrupts. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. + * @retval None + */ +static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) +{ + uint32_t tmpisr = 0U; + + if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ + (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ + (hi2c->XferISR != I2C_Mem_ISR_DMA)) + { + if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + { + /* Enable ERR, STOP, NACK and ADDR interrupts */ + tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + + if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) + { + /* Enable ERR, TC, STOP, NACK and TXI interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; + } + + if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) + { + /* Enable ERR, TC, STOP, NACK and RXI interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; + } + + if (InterruptRequest == I2C_XFER_ERROR_IT) + { + /* Enable ERR and NACK interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; + } + + if (InterruptRequest == I2C_XFER_CPLT_IT) + { + /* Enable STOP interrupts */ + tmpisr |= I2C_IT_STOPI; + } + } + + else + { + if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + { + /* Enable ERR, STOP, NACK and ADDR interrupts */ + tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + + if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) + { + /* Enable ERR, TC, STOP, NACK and TXI interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; + } + + if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) + { + /* Enable ERR, TC, STOP, NACK and RXI interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; + } + + if (InterruptRequest == I2C_XFER_ERROR_IT) + { + /* Enable ERR and NACK interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; + } + + if (InterruptRequest == I2C_XFER_CPLT_IT) + { + /* Enable STOP interrupts */ + tmpisr |= (I2C_IT_STOPI | I2C_IT_TCI); + } + + if (InterruptRequest == I2C_XFER_RELOAD_IT) + { + /* Enable TC interrupts */ + tmpisr |= I2C_IT_TCI; + } + } + + /* Enable interrupts only at the end */ + /* to avoid the risk of I2C interrupt handle execution before */ + /* all interrupts requested done */ + __HAL_I2C_ENABLE_IT(hi2c, tmpisr); +} + +/** + * @brief Manage the disabling of Interrupts. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2C. + * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. + * @retval None + */ +static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) +{ + uint32_t tmpisr = 0U; + + if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) + { + /* Disable TC and TXI interrupts */ + tmpisr |= I2C_IT_TCI | I2C_IT_TXI; + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) + { + /* Disable NACK and STOP interrupts */ + tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + } + + if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) + { + /* Disable TC and RXI interrupts */ + tmpisr |= I2C_IT_TCI | I2C_IT_RXI; + + if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) + { + /* Disable NACK and STOP interrupts */ + tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + } + + if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + { + /* Disable ADDR, NACK and STOP interrupts */ + tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + } + + if (InterruptRequest == I2C_XFER_ERROR_IT) + { + /* Enable ERR and NACK interrupts */ + tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; + } + + if (InterruptRequest == I2C_XFER_CPLT_IT) + { + /* Enable STOP interrupts */ + tmpisr |= I2C_IT_STOPI; + } + + if (InterruptRequest == I2C_XFER_RELOAD_IT) + { + /* Enable TC interrupts */ + tmpisr |= I2C_IT_TCI; + } + + /* Disable interrupts only at the end */ + /* to avoid a breaking situation like at "t" time */ + /* all disable interrupts request are not done */ + __HAL_I2C_DISABLE_IT(hi2c, tmpisr); +} + +/** + * @brief Convert I2Cx OTHER_xxx XferOptions to functional XferOptions. + * @param hi2c I2C handle. + * @retval None + */ +static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) +{ + /* if user set XferOptions to I2C_OTHER_FRAME */ + /* it request implicitly to generate a restart condition */ + /* set XferOptions to I2C_FIRST_FRAME */ + if (hi2c->XferOptions == I2C_OTHER_FRAME) + { + hi2c->XferOptions = I2C_FIRST_FRAME; + } + /* else if user set XferOptions to I2C_OTHER_AND_LAST_FRAME */ + /* it request implicitly to generate a restart condition */ + /* then generate a stop condition at the end of transfer */ + /* set XferOptions to I2C_FIRST_AND_LAST_FRAME */ + else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) + { + hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; + } + else + { + /* Nothing to do */ + } +} + +/** + * @} + */ + +#endif /* HAL_I2C_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c new file mode 100644 index 0000000..035731f --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c @@ -0,0 +1,270 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_i2c_ex.c + * @author MCD Application Team + * @brief I2C Extended HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of I2C Extended peripheral: + * + Filter Mode Functions + * + FastModePlus Functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### I2C peripheral Extended features ##### + ============================================================================== + + [..] Comparing to other previous devices, the I2C interface for STM32F7xx + devices contains the following additional features + + (+) Possibility to disable or enable Analog Noise Filter + (+) Use of a configured Digital Noise Filter + (+) Disable or enable Fast Mode Plus + + ##### How to use this driver ##### + ============================================================================== + [..] This driver provides functions to: + (#) Configure I2C Analog noise filter using the function HAL_I2CEx_ConfigAnalogFilter() + (#) Configure I2C Digital noise filter using the function HAL_I2CEx_ConfigDigitalFilter() + (#) Configure the enable or disable of fast mode plus driving capability using the functions : + (++) HAL_I2CEx_EnableFastModePlus() + (++) HAL_I2CEx_DisableFastModePlus() + @endverbatim + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup I2CEx I2CEx + * @brief I2C Extended HAL module driver + * @{ + */ + +#ifdef HAL_I2C_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup I2CEx_Exported_Functions I2C Extended Exported Functions + * @{ + */ + +/** @defgroup I2CEx_Exported_Functions_Group1 Filter Mode Functions + * @brief Filter Mode Functions + * +@verbatim + =============================================================================== + ##### Filter Mode Functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure Noise Filters + +@endverbatim + * @{ + */ + +/** + * @brief Configure I2C Analog noise filter. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2Cx peripheral. + * @param AnalogFilter New state of the Analog filter. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) +{ + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /* Reset I2Cx ANOFF bit */ + hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); + + /* Set analog filter bit*/ + hi2c->Instance->CR1 |= AnalogFilter; + + __HAL_I2C_ENABLE(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Configure I2C Digital noise filter. + * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + * the configuration information for the specified I2Cx peripheral. + * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) +{ + uint32_t tmpreg; + + /* Check the parameters */ + assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); + + if (hi2c->State == HAL_I2C_STATE_READY) + { + /* Process Locked */ + __HAL_LOCK(hi2c); + + hi2c->State = HAL_I2C_STATE_BUSY; + + /* Disable the selected I2C peripheral */ + __HAL_I2C_DISABLE(hi2c); + + /* Get the old register value */ + tmpreg = hi2c->Instance->CR1; + + /* Reset I2Cx DNF bits [11:8] */ + tmpreg &= ~(I2C_CR1_DNF); + + /* Set I2Cx DNF coefficient */ + tmpreg |= DigitalFilter << 8U; + + /* Store the new register value */ + hi2c->Instance->CR1 = tmpreg; + + __HAL_I2C_ENABLE(hi2c); + + hi2c->State = HAL_I2C_STATE_READY; + + /* Process Unlocked */ + __HAL_UNLOCK(hi2c); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} +/** + * @} + */ +#if (defined(SYSCFG_PMC_I2C_PB6_FMP) || defined(SYSCFG_PMC_I2C_PB7_FMP)) || (defined(SYSCFG_PMC_I2C_PB8_FMP) || defined(SYSCFG_PMC_I2C_PB9_FMP)) || (defined(SYSCFG_PMC_I2C1_FMP)) || (defined(SYSCFG_PMC_I2C2_FMP)) || defined(SYSCFG_PMC_I2C3_FMP) || defined(SYSCFG_PMC_I2C4_FMP) + +/** @defgroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions + * @brief Fast Mode Plus Functions + * +@verbatim + =============================================================================== + ##### Fast Mode Plus Functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Configure Fast Mode Plus + +@endverbatim + * @{ + */ + +/** + * @brief Enable the I2C fast mode plus driving capability. + * @param ConfigFastModePlus Selects the pin. + * This parameter can be one of the @ref I2CEx_FastModePlus values + * @note For I2C1, fast mode plus driving capability can be enabled on all selected + * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently + * on each one of the following pins PB6, PB7, PB8 and PB9. + * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability + * can be enabled only by using I2C_FASTMODEPLUS_I2C1 parameter. + * @note For all I2C2 pins fast mode plus driving capability can be enabled + * only by using I2C_FASTMODEPLUS_I2C2 parameter. + * @note For all I2C3 pins fast mode plus driving capability can be enabled + * only by using I2C_FASTMODEPLUS_I2C3 parameter. + * @note For all I2C4 pins fast mode plus driving capability can be enabled + * only by using I2C_FASTMODEPLUS_I2C4 parameter. + * @retval None + */ +void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus) +{ + /* Check the parameter */ + assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus)); + + /* Enable SYSCFG clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + + /* Enable fast mode plus driving capability for selected pin */ + SET_BIT(SYSCFG->PMC, (uint32_t)ConfigFastModePlus); +} + +/** + * @brief Disable the I2C fast mode plus driving capability. + * @param ConfigFastModePlus Selects the pin. + * This parameter can be one of the @ref I2CEx_FastModePlus values + * @note For I2C1, fast mode plus driving capability can be disabled on all selected + * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently + * on each one of the following pins PB6, PB7, PB8 and PB9. + * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability + * can be disabled only by using I2C_FASTMODEPLUS_I2C1 parameter. + * @note For all I2C2 pins fast mode plus driving capability can be disabled + * only by using I2C_FASTMODEPLUS_I2C2 parameter. + * @note For all I2C3 pins fast mode plus driving capability can be disabled + * only by using I2C_FASTMODEPLUS_I2C3 parameter. + * @note For all I2C4 pins fast mode plus driving capability can be disabled + * only by using I2C_FASTMODEPLUS_I2C4 parameter. + * @retval None + */ +void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus) +{ + /* Check the parameter */ + assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus)); + + /* Enable SYSCFG clock */ + __HAL_RCC_SYSCFG_CLK_ENABLE(); + + /* Disable fast mode plus driving capability for selected pin */ + CLEAR_BIT(SYSCFG->PMC, (uint32_t)ConfigFastModePlus); +} +/** + * @} + */ +#endif /* Fast Mode Plus Availability */ +/** + * @} + */ + +#endif /* HAL_I2C_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c new file mode 100644 index 0000000..eb548e0 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c @@ -0,0 +1,600 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_pwr.c + * @author MCD Application Team + * @brief PWR HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Power Controller (PWR) peripheral: + * + Initialization and de-initialization functions + * + Peripheral Control functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup PWR PWR + * @brief PWR HAL module driver + * @{ + */ + +#ifdef HAL_PWR_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @addtogroup PWR_Private_Constants + * @{ + */ + +/** @defgroup PWR_PVD_Mode_Mask PWR PVD Mode Mask + * @{ + */ +#define PVD_MODE_IT ((uint32_t)0x00010000U) +#define PVD_MODE_EVT ((uint32_t)0x00020000U) +#define PVD_RISING_EDGE ((uint32_t)0x00000001U) +#define PVD_FALLING_EDGE ((uint32_t)0x00000002U) +/** + * @} + */ + +/** @defgroup PWR_ENABLE_WUP_Mask PWR Enable WUP Mask + * @{ + */ +#define PWR_EWUP_MASK ((uint32_t)0x00003F00) +/** + * @} + */ + +/** + * @} + */ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup PWR_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @defgroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and de-initialization functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] + After reset, the backup domain (RTC registers, RTC backup data + registers and backup SRAM) is protected against possible unwanted + write accesses. + To enable access to the RTC Domain and RTC registers, proceed as follows: + (+) Enable the Power Controller (PWR) APB1 interface clock using the + __HAL_RCC_PWR_CLK_ENABLE() macro. + (+) Enable access to RTC domain using the HAL_PWR_EnableBkUpAccess() function. + +@endverbatim + * @{ + */ + +/** + * @brief Deinitializes the HAL PWR peripheral registers to their default reset values. + * @retval None + */ +void HAL_PWR_DeInit(void) +{ + __HAL_RCC_PWR_FORCE_RESET(); + __HAL_RCC_PWR_RELEASE_RESET(); +} + +/** + * @brief Enables access to the backup domain (RTC registers, RTC + * backup data registers and backup SRAM). + * @note If the HSE divided by 2, 3, ..31 is used as the RTC clock, the + * Backup Domain Access should be kept enabled. + * @retval None + */ +void HAL_PWR_EnableBkUpAccess(void) +{ + /* Enable access to RTC and backup registers */ + SET_BIT(PWR->CR1, PWR_CR1_DBP); +} + +/** + * @brief Disables access to the backup domain (RTC registers, RTC + * backup data registers and backup SRAM). + * @note If the HSE divided by 2, 3, ..31 is used as the RTC clock, the + * Backup Domain Access should be kept enabled. + * @retval None + */ +void HAL_PWR_DisableBkUpAccess(void) +{ + /* Disable access to RTC and backup registers */ + CLEAR_BIT(PWR->CR1, PWR_CR1_DBP); +} + +/** + * @} + */ + +/** @defgroup PWR_Exported_Functions_Group2 Peripheral Control functions + * @brief Low Power modes configuration functions + * +@verbatim + + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + + *** PVD configuration *** + ========================= + [..] + (+) The PVD is used to monitor the VDD power supply by comparing it to a + threshold selected by the PVD Level (PLS[2:0] bits in the PWR_CR). + (+) A PVDO flag is available to indicate if VDD/VDDA is higher or lower + than the PVD threshold. This event is internally connected to the EXTI + line16 and can generate an interrupt if enabled. This is done through + __HAL_PWR_PVD_EXTI_ENABLE_IT() macro. + (+) The PVD is stopped in Standby mode. + + *** Wake-up pin configuration *** + ================================ + [..] + (+) Wake-up pin is used to wake up the system from Standby mode. This pin is + forced in input pull-down configuration and is active on rising edges. + (+) There are up to 6 Wake-up pin in the STM32F7 devices family + + *** Low Power modes configuration *** + ===================================== + [..] + The devices feature 3 low-power modes: + (+) Sleep mode: Cortex-M7 core stopped, peripherals kept running. + (+) Stop mode: all clocks are stopped, regulator running, regulator + in low power mode + (+) Standby mode: 1.2V domain powered off. + + *** Sleep mode *** + ================== + [..] + (+) Entry: + The Sleep mode is entered by using the HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI) + functions with + (++) PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction + (++) PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction + + -@@- The Regulator parameter is not used for the STM32F7 family + and is kept as parameter just to maintain compatibility with the + lower power families (STM32L). + (+) Exit: + Any peripheral interrupt acknowledged by the nested vectored interrupt + controller (NVIC) can wake up the device from Sleep mode. + + *** Stop mode *** + ================= + [..] + In Stop mode, all clocks in the 1.2V domain are stopped, the PLL, the HSI, + and the HSE RC oscillators are disabled. Internal SRAM and register contents + are preserved. + The voltage regulator can be configured either in normal or low-power mode. + To minimize the consumption In Stop mode, FLASH can be powered off before + entering the Stop mode using the HAL_PWREx_EnableFlashPowerDown() function. + It can be switched on again by software after exiting the Stop mode using + the HAL_PWREx_DisableFlashPowerDown() function. + + (+) Entry: + The Stop mode is entered using the HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON) + function with: + (++) Main regulator ON. + (++) Low Power regulator ON. + (+) Exit: + Any EXTI Line (Internal or External) configured in Interrupt/Event mode. + + *** Standby mode *** + ==================== + [..] + (+) + The Standby mode allows to achieve the lowest power consumption. It is based + on the Cortex-M7 deep sleep mode, with the voltage regulator disabled. + The 1.2V domain is consequently powered off. The PLL, the HSI oscillator and + the HSE oscillator are also switched off. SRAM and register contents are lost + except for the RTC registers, RTC backup registers, backup SRAM and Standby + circuitry. + + The voltage regulator is OFF. + + (++) Entry: + (+++) The Standby mode is entered using the HAL_PWR_EnterSTANDBYMode() function. + (++) Exit: + (+++) WKUP pin rising or falling edge, RTC alarm (Alarm A and Alarm B), RTC + wakeup, tamper event, time stamp event, external reset in NRST pin, IWDG reset. + + *** Auto-wakeup (AWU) from low-power mode *** + ============================================= + [..] + + (+) The MCU can be woken up from low-power mode by an RTC Alarm event, an RTC + Wakeup event, a tamper event or a time-stamp event, without depending on + an external interrupt (Auto-wakeup mode). + + (+) RTC auto-wakeup (AWU) from the Stop and Standby modes + + (++) To wake up from the Stop mode with an RTC alarm event, it is necessary to + configure the RTC to generate the RTC alarm using the HAL_RTC_SetAlarm_IT() function. + + (++) To wake up from the Stop mode with an RTC Tamper or time stamp event, it + is necessary to configure the RTC to detect the tamper or time stamp event using the + HAL_RTCEx_SetTimeStamp_IT() or HAL_RTCEx_SetTamper_IT() functions. + + (++) To wake up from the Stop mode with an RTC WakeUp event, it is necessary to + configure the RTC to generate the RTC WakeUp event using the HAL_RTCEx_SetWakeUpTimer_IT() function. + +@endverbatim + * @{ + */ + +/** + * @brief Configures the voltage threshold detected by the Power Voltage Detector(PVD). + * @param sConfigPVD pointer to an PWR_PVDTypeDef structure that contains the configuration + * information for the PVD. + * @note Refer to the electrical characteristics of your device datasheet for + * more details about the voltage threshold corresponding to each + * detection level. + * @retval None + */ +void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD) +{ + /* Check the parameters */ + assert_param(IS_PWR_PVD_LEVEL(sConfigPVD->PVDLevel)); + assert_param(IS_PWR_PVD_MODE(sConfigPVD->Mode)); + + /* Set PLS[7:5] bits according to PVDLevel value */ + MODIFY_REG(PWR->CR1, PWR_CR1_PLS, sConfigPVD->PVDLevel); + + /* Clear any previous config. Keep it clear if no event or IT mode is selected */ + __HAL_PWR_PVD_EXTI_DISABLE_EVENT(); + __HAL_PWR_PVD_EXTI_DISABLE_IT(); + __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE(); + __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); + + /* Configure interrupt mode */ + if((sConfigPVD->Mode & PVD_MODE_IT) == PVD_MODE_IT) + { + __HAL_PWR_PVD_EXTI_ENABLE_IT(); + } + + /* Configure event mode */ + if((sConfigPVD->Mode & PVD_MODE_EVT) == PVD_MODE_EVT) + { + __HAL_PWR_PVD_EXTI_ENABLE_EVENT(); + } + + /* Configure the edge */ + if((sConfigPVD->Mode & PVD_RISING_EDGE) == PVD_RISING_EDGE) + { + __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE(); + } + + if((sConfigPVD->Mode & PVD_FALLING_EDGE) == PVD_FALLING_EDGE) + { + __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE(); + } +} + +/** + * @brief Enables the Power Voltage Detector(PVD). + * @retval None + */ +void HAL_PWR_EnablePVD(void) +{ + /* Enable the power voltage detector */ + SET_BIT(PWR->CR1, PWR_CR1_PVDE); +} + +/** + * @brief Disables the Power Voltage Detector(PVD). + * @retval None + */ +void HAL_PWR_DisablePVD(void) +{ + /* Disable the power voltage detector */ + CLEAR_BIT(PWR->CR1, PWR_CR1_PVDE); +} + +/** + * @brief Enable the WakeUp PINx functionality. + * @param WakeUpPinPolarity Specifies which Wake-Up pin to enable. + * This parameter can be one of the following legacy values, which sets the default polarity: + * detection on high level (rising edge): + * @arg PWR_WAKEUP_PIN1, PWR_WAKEUP_PIN2, PWR_WAKEUP_PIN3, PWR_WAKEUP_PIN4, PWR_WAKEUP_PIN5, PWR_WAKEUP_PIN6 + * or one of the following value where the user can explicitly states the enabled pin and + * the chosen polarity + * @arg PWR_WAKEUP_PIN1_HIGH or PWR_WAKEUP_PIN1_LOW + * @arg PWR_WAKEUP_PIN2_HIGH or PWR_WAKEUP_PIN2_LOW + * @arg PWR_WAKEUP_PIN3_HIGH or PWR_WAKEUP_PIN3_LOW + * @arg PWR_WAKEUP_PIN4_HIGH or PWR_WAKEUP_PIN4_LOW + * @arg PWR_WAKEUP_PIN5_HIGH or PWR_WAKEUP_PIN5_LOW + * @arg PWR_WAKEUP_PIN6_HIGH or PWR_WAKEUP_PIN6_LOW + * @note PWR_WAKEUP_PINx and PWR_WAKEUP_PINx_HIGH are equivalent. + * @retval None + */ +void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity) +{ + assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinPolarity)); + + /* Enable wake-up pin */ + SET_BIT(PWR->CSR2, (PWR_EWUP_MASK & WakeUpPinPolarity)); + + /* Specifies the Wake-Up pin polarity for the event detection + (rising or falling edge) */ + MODIFY_REG(PWR->CR2, (PWR_EWUP_MASK & WakeUpPinPolarity), (WakeUpPinPolarity >> 0x06)); +} + +/** + * @brief Disables the WakeUp PINx functionality. + * @param WakeUpPinx Specifies the Power Wake-Up pin to disable. + * This parameter can be one of the following values: + * @arg PWR_WAKEUP_PIN1 + * @arg PWR_WAKEUP_PIN2 + * @arg PWR_WAKEUP_PIN3 + * @arg PWR_WAKEUP_PIN4 + * @arg PWR_WAKEUP_PIN5 + * @arg PWR_WAKEUP_PIN6 + * @retval None + */ +void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx) +{ + assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx)); + + CLEAR_BIT(PWR->CSR2, WakeUpPinx); +} + +/** + * @brief Enters Sleep mode. + * + * @note In Sleep mode, all I/O pins keep the same state as in Run mode. + * + * @note In Sleep mode, the systick is stopped to avoid exit from this mode with + * systick interrupt when used as time base for Timeout + * + * @param Regulator Specifies the regulator state in SLEEP mode. + * This parameter can be one of the following values: + * @arg PWR_MAINREGULATOR_ON: SLEEP mode with regulator ON + * @arg PWR_LOWPOWERREGULATOR_ON: SLEEP mode with low power regulator ON + * @note This parameter is not used for the STM32F7 family and is kept as parameter + * just to maintain compatibility with the lower power families. + * @param SLEEPEntry Specifies if SLEEP mode in entered with WFI or WFE instruction. + * This parameter can be one of the following values: + * @arg PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction + * @arg PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction + * @retval None + */ +void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry) +{ + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR(Regulator)); + assert_param(IS_PWR_SLEEP_ENTRY(SLEEPEntry)); + + /* Prevent unused argument(s) compilation warning */ + UNUSED(Regulator); + + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + + /* Ensure that all instructions done before entering SLEEP mode */ + __DSB(); + __ISB(); + + /* Select SLEEP mode entry -------------------------------------------------*/ + if(SLEEPEntry == PWR_SLEEPENTRY_WFI) + { + /* Request Wait For Interrupt */ + __WFI(); + } + else + { + /* Request Wait For Event */ + __SEV(); + __WFE(); + __WFE(); + } +} + +/** + * @brief Enters Stop mode. + * @note In Stop mode, all I/O pins keep the same state as in Run mode. + * @note When exiting Stop mode by issuing an interrupt or a wakeup event, + * the HSI RC oscillator is selected as system clock. + * @note When the voltage regulator operates in low power mode, an additional + * startup delay is incurred when waking up from Stop mode. + * By keeping the internal regulator ON during Stop mode, the consumption + * is higher although the startup time is reduced. + * @param Regulator Specifies the regulator state in Stop mode. + * This parameter can be one of the following values: + * @arg PWR_MAINREGULATOR_ON: Stop mode with regulator ON + * @arg PWR_LOWPOWERREGULATOR_ON: Stop mode with low power regulator ON + * @param STOPEntry Specifies if Stop mode in entered with WFI or WFE instruction. + * This parameter can be one of the following values: + * @arg PWR_STOPENTRY_WFI: Enter Stop mode with WFI instruction + * @arg PWR_STOPENTRY_WFE: Enter Stop mode with WFE instruction + * @retval None + */ +void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR(Regulator)); + assert_param(IS_PWR_STOP_ENTRY(STOPEntry)); + + /* Select the regulator state in Stop mode ---------------------------------*/ + tmpreg = PWR->CR1; + /* Clear PDDS and LPDS bits */ + tmpreg &= (uint32_t)~(PWR_CR1_PDDS | PWR_CR1_LPDS); + + /* Set LPDS, MRLVDS and LPLVDS bits according to Regulator value */ + tmpreg |= Regulator; + + /* Store the new value */ + PWR->CR1 = tmpreg; + + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; + + /* Ensure that all instructions done before entering STOP mode */ + __DSB(); + __ISB(); + + /* Select Stop mode entry --------------------------------------------------*/ + if(STOPEntry == PWR_STOPENTRY_WFI) + { + /* Request Wait For Interrupt */ + __WFI(); + } + else + { + /* Request Wait For Event */ + __SEV(); + __WFE(); + __WFE(); + } + /* Reset SLEEPDEEP bit of Cortex System Control Register */ + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); +} + +/** + * @brief Enters Standby mode. + * @note In Standby mode, all I/O pins are high impedance except for: + * - Reset pad (still available) + * - RTC_AF1 pin (PC13) if configured for tamper, time-stamp, RTC + * Alarm out, or RTC clock calibration out. + * - RTC_AF2 pin (PI8) if configured for tamper or time-stamp. + * - WKUP pins if enabled. + * @retval None + */ +void HAL_PWR_EnterSTANDBYMode(void) +{ + /* Select Standby mode */ + PWR->CR1 |= PWR_CR1_PDDS; + + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; + + /* This option is used to ensure that store operations are completed */ +#if defined ( __CC_ARM) + __force_stores(); +#endif + /* Request Wait For Interrupt */ + __WFI(); +} + +/** + * @brief This function handles the PWR PVD interrupt request. + * @note This API should be called under the PVD_IRQHandler(). + * @retval None + */ +void HAL_PWR_PVD_IRQHandler(void) +{ + /* Check PWR Exti flag */ + if(__HAL_PWR_PVD_EXTI_GET_FLAG() != RESET) + { + /* PWR PVD interrupt user callback */ + HAL_PWR_PVDCallback(); + + /* Clear PWR Exti pending bit */ + __HAL_PWR_PVD_EXTI_CLEAR_FLAG(); + } +} + +/** + * @brief PWR PVD interrupt callback + * @retval None + */ +__weak void HAL_PWR_PVDCallback(void) +{ + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_PWR_PVDCallback could be implemented in the user file + */ +} + +/** + * @brief Indicates Sleep-On-Exit when returning from Handler mode to Thread mode. + * @note Set SLEEPONEXIT bit of SCR register. When this bit is set, the processor + * re-enters SLEEP mode when an interruption handling is over. + * Setting this bit is useful when the processor is expected to run only on + * interruptions handling. + * @retval None + */ +void HAL_PWR_EnableSleepOnExit(void) +{ + /* Set SLEEPONEXIT bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Disables Sleep-On-Exit feature when returning from Handler mode to Thread mode. + * @note Clears SLEEPONEXIT bit of SCR register. When this bit is set, the processor + * re-enters SLEEP mode when an interruption handling is over. + * @retval None + */ +void HAL_PWR_DisableSleepOnExit(void) +{ + /* Clear SLEEPONEXIT bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Enables CORTEX M4 SEVONPEND bit. + * @note Sets SEVONPEND bit of SCR register. When this bit is set, this causes + * WFE to wake up when an interrupt moves from inactive to pended. + * @retval None + */ +void HAL_PWR_EnableSEVOnPend(void) +{ + /* Set SEVONPEND bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @brief Disables CORTEX M4 SEVONPEND bit. + * @note Clears SEVONPEND bit of SCR register. When this bit is set, this causes + * WFE to wake up when an interrupt moves from inactive to pended. + * @retval None + */ +void HAL_PWR_DisableSEVOnPend(void) +{ + /* Clear SEVONPEND bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_PWR_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c new file mode 100644 index 0000000..f426aaa --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c @@ -0,0 +1,552 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_pwr_ex.c + * @author MCD Application Team + * @brief Extended PWR HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of PWR extension peripheral: + * + Peripheral Extended features functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup PWREx PWREx + * @brief PWR HAL module driver + * @{ + */ + +#ifdef HAL_PWR_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @addtogroup PWREx_Private_Constants + * @{ + */ +#define PWR_OVERDRIVE_TIMEOUT_VALUE 1000 +#define PWR_UDERDRIVE_TIMEOUT_VALUE 1000 +#define PWR_BKPREG_TIMEOUT_VALUE 1000 +#define PWR_VOSRDY_TIMEOUT_VALUE 1000 +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/** @defgroup PWREx_Exported_Functions PWREx Exported Functions + * @{ + */ + +/** @defgroup PWREx_Exported_Functions_Group1 Peripheral Extended features functions + * @brief Peripheral Extended features functions + * +@verbatim + + =============================================================================== + ##### Peripheral extended features functions ##### + =============================================================================== + + *** Main and Backup Regulators configuration *** + ================================================ + [..] + (+) The backup domain includes 4 Kbytes of backup SRAM accessible only from + the CPU, and address in 32-bit, 16-bit or 8-bit mode. Its content is + retained even in Standby or VBAT mode when the low power backup regulator + is enabled. It can be considered as an internal EEPROM when VBAT is + always present. You can use the HAL_PWREx_EnableBkUpReg() function to + enable the low power backup regulator. + + (+) When the backup domain is supplied by VDD (analog switch connected to VDD) + the backup SRAM is powered from VDD which replaces the VBAT power supply to + save battery life. + + (+) The backup SRAM is not mass erased by a tamper event. It is read + protected to prevent confidential data, such as cryptographic private + key, from being accessed. The backup SRAM can be erased only through + the Flash interface when a protection level change from level 1 to + level 0 is requested. + -@- Refer to the description of Read protection (RDP) in the Flash + programming manual. + + (+) The main internal regulator can be configured to have a tradeoff between + performance and power consumption when the device does not operate at + the maximum frequency. This is done through __HAL_PWR_MAINREGULATORMODE_CONFIG() + macro which configure VOS bit in PWR_CR register + + Refer to the product datasheets for more details. + + *** FLASH Power Down configuration **** + ======================================= + [..] + (+) By setting the FPDS bit in the PWR_CR register by using the + HAL_PWREx_EnableFlashPowerDown() function, the Flash memory also enters power + down mode when the device enters Stop mode. When the Flash memory + is in power down mode, an additional startup delay is incurred when + waking up from Stop mode. + + *** Over-Drive and Under-Drive configuration **** + ================================================= + [..] + (+) In Run mode: the main regulator has 2 operating modes available: + (++) Normal mode: The CPU and core logic operate at maximum frequency at a given + voltage scaling (scale 1, scale 2 or scale 3) + (++) Over-drive mode: This mode allows the CPU and the core logic to operate at a + higher frequency than the normal mode for a given voltage scaling (scale 1, + scale 2 or scale 3). This mode is enabled through HAL_PWREx_EnableOverDrive() function and + disabled by HAL_PWREx_DisableOverDrive() function, to enter or exit from Over-drive mode please follow + the sequence described in Reference manual. + + (+) In Stop mode: the main regulator or low power regulator supplies a low power + voltage to the 1.2V domain, thus preserving the content of registers + and internal SRAM. 2 operating modes are available: + (++) Normal mode: the 1.2V domain is preserved in nominal leakage mode. This mode is only + available when the main regulator or the low power regulator is used in Scale 3 or + low voltage mode. + (++) Under-drive mode: the 1.2V domain is preserved in reduced leakage mode. This mode is only + available when the main regulator or the low power regulator is in low voltage mode. + +@endverbatim + * @{ + */ + +/** + * @brief Enables the Backup Regulator. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PWREx_EnableBkUpReg(void) +{ + uint32_t tickstart = 0; + + /* Enable Backup regulator */ + PWR->CSR1 |= PWR_CSR1_BRE; + + /* Workaround for the following hardware bug: */ + /* Id 19: PWR : No STANDBY wake-up when Back-up RAM enabled (ref. Errata Sheet p23) */ + PWR->CSR1 |= PWR_CSR1_EIWUP; + + /* Get tick */ + tickstart = HAL_GetTick(); + + /* Wait till Backup regulator ready flag is set */ + while(__HAL_PWR_GET_FLAG(PWR_FLAG_BRR) == RESET) + { + if((HAL_GetTick() - tickstart ) > PWR_BKPREG_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + return HAL_OK; +} + +/** + * @brief Disables the Backup Regulator. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PWREx_DisableBkUpReg(void) +{ + uint32_t tickstart = 0; + + /* Disable Backup regulator */ + PWR->CSR1 &= (uint32_t)~((uint32_t)PWR_CSR1_BRE); + + /* Workaround for the following hardware bug: */ + /* Id 19: PWR : No STANDBY wake-up when Back-up RAM enabled (ref. Errata Sheet p23) */ + PWR->CSR1 |= PWR_CSR1_EIWUP; + + /* Get tick */ + tickstart = HAL_GetTick(); + + /* Wait till Backup regulator ready flag is set */ + while(__HAL_PWR_GET_FLAG(PWR_FLAG_BRR) != RESET) + { + if((HAL_GetTick() - tickstart ) > PWR_BKPREG_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + return HAL_OK; +} + +/** + * @brief Enables the Flash Power Down in Stop mode. + * @retval None + */ +void HAL_PWREx_EnableFlashPowerDown(void) +{ + /* Enable the Flash Power Down */ + PWR->CR1 |= PWR_CR1_FPDS; +} + +/** + * @brief Disables the Flash Power Down in Stop mode. + * @retval None + */ +void HAL_PWREx_DisableFlashPowerDown(void) +{ + /* Disable the Flash Power Down */ + PWR->CR1 &= (uint32_t)~((uint32_t)PWR_CR1_FPDS); +} + +/** + * @brief Enables Main Regulator low voltage mode. + * @retval None + */ +void HAL_PWREx_EnableMainRegulatorLowVoltage(void) +{ + /* Enable Main regulator low voltage */ + PWR->CR1 |= PWR_CR1_MRUDS; +} + +/** + * @brief Disables Main Regulator low voltage mode. + * @retval None + */ +void HAL_PWREx_DisableMainRegulatorLowVoltage(void) +{ + /* Disable Main regulator low voltage */ + PWR->CR1 &= (uint32_t)~((uint32_t)PWR_CR1_MRUDS); +} + +/** + * @brief Enables Low Power Regulator low voltage mode. + * @retval None + */ +void HAL_PWREx_EnableLowRegulatorLowVoltage(void) +{ + /* Enable low power regulator */ + PWR->CR1 |= PWR_CR1_LPUDS; +} + +/** + * @brief Disables Low Power Regulator low voltage mode. + * @retval None + */ +void HAL_PWREx_DisableLowRegulatorLowVoltage(void) +{ + /* Disable low power regulator */ + PWR->CR1 &= (uint32_t)~((uint32_t)PWR_CR1_LPUDS); +} + +/** + * @brief Activates the Over-Drive mode. + * @note This mode allows the CPU and the core logic to operate at a higher frequency + * than the normal mode for a given voltage scaling (scale 1, scale 2 or scale 3). + * @note It is recommended to enter or exit Over-drive mode when the application is not running + * critical tasks and when the system clock source is either HSI or HSE. + * During the Over-drive switch activation, no peripheral clocks should be enabled. + * The peripheral clocks must be enabled once the Over-drive mode is activated. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PWREx_EnableOverDrive(void) +{ + uint32_t tickstart = 0; + + __HAL_RCC_PWR_CLK_ENABLE(); + + /* Enable the Over-drive to extend the clock frequency to 216 MHz */ + __HAL_PWR_OVERDRIVE_ENABLE(); + + /* Get tick */ + tickstart = HAL_GetTick(); + + while(!__HAL_PWR_GET_FLAG(PWR_FLAG_ODRDY)) + { + if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Enable the Over-drive switch */ + __HAL_PWR_OVERDRIVESWITCHING_ENABLE(); + + /* Get tick */ + tickstart = HAL_GetTick(); + + while(!__HAL_PWR_GET_FLAG(PWR_FLAG_ODSWRDY)) + { + if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + return HAL_OK; +} + +/** + * @brief Deactivates the Over-Drive mode. + * @note This mode allows the CPU and the core logic to operate at a higher frequency + * than the normal mode for a given voltage scaling (scale 1, scale 2 or scale 3). + * @note It is recommended to enter or exit Over-drive mode when the application is not running + * critical tasks and when the system clock source is either HSI or HSE. + * During the Over-drive switch activation, no peripheral clocks should be enabled. + * The peripheral clocks must be enabled once the Over-drive mode is activated. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PWREx_DisableOverDrive(void) +{ + uint32_t tickstart = 0; + + __HAL_RCC_PWR_CLK_ENABLE(); + + /* Disable the Over-drive switch */ + __HAL_PWR_OVERDRIVESWITCHING_DISABLE(); + + /* Get tick */ + tickstart = HAL_GetTick(); + + while(__HAL_PWR_GET_FLAG(PWR_FLAG_ODSWRDY)) + { + if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Disable the Over-drive */ + __HAL_PWR_OVERDRIVE_DISABLE(); + + /* Get tick */ + tickstart = HAL_GetTick(); + + while(__HAL_PWR_GET_FLAG(PWR_FLAG_ODRDY)) + { + if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + return HAL_OK; +} + +/** + * @brief Enters in Under-Drive STOP mode. + * + * @note This mode can be selected only when the Under-Drive is already active + * + * @note This mode is enabled only with STOP low power mode. + * In this mode, the 1.2V domain is preserved in reduced leakage mode. This + * mode is only available when the main regulator or the low power regulator + * is in low voltage mode + * + * @note If the Under-drive mode was enabled, it is automatically disabled after + * exiting Stop mode. + * When the voltage regulator operates in Under-drive mode, an additional + * startup delay is induced when waking up from Stop mode. + * + * @note In Stop mode, all I/O pins keep the same state as in Run mode. + * + * @note When exiting Stop mode by issuing an interrupt or a wakeup event, + * the HSI RC oscillator is selected as system clock. + * + * @note When the voltage regulator operates in low power mode, an additional + * startup delay is incurred when waking up from Stop mode. + * By keeping the internal regulator ON during Stop mode, the consumption + * is higher although the startup time is reduced. + * + * @param Regulator specifies the regulator state in STOP mode. + * This parameter can be one of the following values: + * @arg PWR_MAINREGULATOR_UNDERDRIVE_ON: Main Regulator in under-drive mode + * and Flash memory in power-down when the device is in Stop under-drive mode + * @arg PWR_LOWPOWERREGULATOR_UNDERDRIVE_ON: Low Power Regulator in under-drive mode + * and Flash memory in power-down when the device is in Stop under-drive mode + * @param STOPEntry specifies if STOP mode in entered with WFI or WFE instruction. + * This parameter can be one of the following values: + * @arg PWR_SLEEPENTRY_WFI: enter STOP mode with WFI instruction + * @arg PWR_SLEEPENTRY_WFE: enter STOP mode with WFE instruction + * @retval None + */ +HAL_StatusTypeDef HAL_PWREx_EnterUnderDriveSTOPMode(uint32_t Regulator, uint8_t STOPEntry) +{ + uint32_t tempreg = 0; + uint32_t tickstart = 0; + + /* Check the parameters */ + assert_param(IS_PWR_REGULATOR_UNDERDRIVE(Regulator)); + assert_param(IS_PWR_STOP_ENTRY(STOPEntry)); + + /* Enable Power ctrl clock */ + __HAL_RCC_PWR_CLK_ENABLE(); + /* Enable the Under-drive Mode ---------------------------------------------*/ + /* Clear Under-drive flag */ + __HAL_PWR_CLEAR_ODRUDR_FLAG(); + + /* Enable the Under-drive */ + __HAL_PWR_UNDERDRIVE_ENABLE(); + + /* Get tick */ + tickstart = HAL_GetTick(); + + /* Wait for UnderDrive mode is ready */ + while(__HAL_PWR_GET_FLAG(PWR_FLAG_UDRDY)) + { + if((HAL_GetTick() - tickstart ) > PWR_UDERDRIVE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Select the regulator state in STOP mode ---------------------------------*/ + tempreg = PWR->CR1; + /* Clear PDDS, LPDS, MRLUDS and LPLUDS bits */ + tempreg &= (uint32_t)~(PWR_CR1_PDDS | PWR_CR1_LPDS | PWR_CR1_LPUDS | PWR_CR1_MRUDS); + + /* Set LPDS, MRLUDS and LPLUDS bits according to PWR_Regulator value */ + tempreg |= Regulator; + + /* Store the new value */ + PWR->CR1 = tempreg; + + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; + + /* Select STOP mode entry --------------------------------------------------*/ + if(STOPEntry == PWR_SLEEPENTRY_WFI) + { + /* Request Wait For Interrupt */ + __WFI(); + } + else + { + /* Request Wait For Event */ + __WFE(); + } + /* Reset SLEEPDEEP bit of Cortex System Control Register */ + SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); + + return HAL_OK; +} + +/** + * @brief Returns Voltage Scaling Range. + * @retval VOS bit field (PWR_REGULATOR_VOLTAGE_SCALE1, PWR_REGULATOR_VOLTAGE_SCALE2 or + * PWR_REGULATOR_VOLTAGE_SCALE3)PWR_REGULATOR_VOLTAGE_SCALE1 + */ +uint32_t HAL_PWREx_GetVoltageRange(void) +{ + return (PWR->CR1 & PWR_CR1_VOS); +} + +/** + * @brief Configures the main internal regulator output voltage. + * @param VoltageScaling specifies the regulator output voltage to achieve + * a tradeoff between performance and power consumption. + * This parameter can be one of the following values: + * @arg PWR_REGULATOR_VOLTAGE_SCALE1: Regulator voltage output range 1 mode, + * typical output voltage at 1.4 V, + * system frequency up to 216 MHz. + * @arg PWR_REGULATOR_VOLTAGE_SCALE2: Regulator voltage output range 2 mode, + * typical output voltage at 1.2 V, + * system frequency up to 180 MHz. + * @arg PWR_REGULATOR_VOLTAGE_SCALE3: Regulator voltage output range 2 mode, + * typical output voltage at 1.00 V, + * system frequency up to 151 MHz. + * @note To update the system clock frequency(SYSCLK): + * - Set the HSI or HSE as system clock frequency using the HAL_RCC_ClockConfig(). + * - Call the HAL_RCC_OscConfig() to configure the PLL. + * - Call HAL_PWREx_ConfigVoltageScaling() API to adjust the voltage scale. + * - Set the new system clock frequency using the HAL_RCC_ClockConfig(). + * @note The scale can be modified only when the HSI or HSE clock source is selected + * as system clock source, otherwise the API returns HAL_ERROR. + * @note When the PLL is OFF, the voltage scale 3 is automatically selected and the VOS bits + * value in the PWR_CR1 register are not taken in account. + * @note This API forces the PLL state ON to allow the possibility to configure the voltage scale 1 or 2. + * @note The new voltage scale is active only when the PLL is ON. + * @retval HAL Status + */ +HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling) +{ + uint32_t tickstart = 0; + + assert_param(IS_PWR_REGULATOR_VOLTAGE(VoltageScaling)); + + /* Enable Power ctrl clock */ + __HAL_RCC_PWR_CLK_ENABLE(); + + /* Check if the PLL is used as system clock or not */ + if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL) + { + /* Disable the main PLL */ + __HAL_RCC_PLL_DISABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + /* Wait till PLL is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Set Range */ + __HAL_PWR_VOLTAGESCALING_CONFIG(VoltageScaling); + + /* Enable the main PLL */ + __HAL_RCC_PLL_ENABLE(); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + /* Wait till PLL is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + { + if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + while((__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY) == RESET)) + { + if((HAL_GetTick() - tickstart ) > PWR_VOSRDY_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + return HAL_ERROR; + } + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_PWR_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c new file mode 100644 index 0000000..6c030ce --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c @@ -0,0 +1,1239 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_rcc.c + * @author MCD Application Team + * @brief RCC HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Reset and Clock Control (RCC) peripheral: + * + Initialization and de-initialization functions + * + Peripheral Control functions + * + @verbatim + ============================================================================== + ##### RCC specific features ##### + ============================================================================== + [..] + After reset the device is running from Internal High Speed oscillator + (HSI 16MHz) with Flash 0 wait state, Flash prefetch buffer, D-Cache + and I-Cache are disabled, and all peripherals are off except internal + SRAM, Flash and JTAG. + (+) There is no prescaler on High speed (AHB) and Low speed (APB) buses; + all peripherals mapped on these buses are running at HSI speed. + (+) The clock for all peripherals is switched off, except the SRAM and FLASH. + (+) All GPIOs are in input floating state, except the JTAG pins which + are assigned to be used for debug purpose. + + [..] + Once the device started from reset, the user application has to: + (+) Configure the clock source to be used to drive the System clock + (if the application needs higher frequency/performance) + (+) Configure the System clock frequency and Flash settings + (+) Configure the AHB and APB buses prescalers + (+) Enable the clock for the peripheral(s) to be used + (+) Configure the clock source(s) for peripherals which clocks are not + derived from the System clock (I2S, RTC, ADC, USB OTG FS/SDIO/RNG) + + ##### RCC Limitations ##### + ============================================================================== + [..] + A delay between an RCC peripheral clock enable and the effective peripheral + enabling should be taken into account in order to manage the peripheral read/write + from/to registers. + (+) This delay depends on the peripheral mapping. + (+) If peripheral is mapped on AHB: the delay is 2 AHB clock cycle + after the clock enable bit is set on the hardware register + (+) If peripheral is mapped on APB: the delay is 2 APB clock cycle + after the clock enable bit is set on the hardware register + + [..] + Implemented Workaround: + (+) For AHB & APB peripherals, a dummy read to the peripheral register has been + inserted in each __HAL_RCC_PPP_CLK_ENABLE() macro. + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup RCC RCC + * @brief RCC HAL module driver + * @{ + */ + +#ifdef HAL_RCC_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/** @defgroup RCC_Private_Macros RCC Private Macros + * @{ + */ + +#define MCO1_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() +#define MCO1_GPIO_PORT GPIOA +#define MCO1_PIN GPIO_PIN_8 + +#define MCO2_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() +#define MCO2_GPIO_PORT GPIOC +#define MCO2_PIN GPIO_PIN_9 + +/** + * @} + */ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup RCC_Private_Variables RCC Private Variables + * @{ + */ + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions ---------------------------------------------------------*/ + +/** @defgroup RCC_Exported_Functions RCC Exported Functions + * @{ + */ + +/** @defgroup RCC_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * + @verbatim + =============================================================================== +##### Initialization and de-initialization functions ##### + =============================================================================== + [..] + This section provides functions allowing to configure the internal/external oscillators + (HSE, HSI, LSE, LSI, PLL, CSS and MCO) and the System buses clocks (SYSCLK, AHB, APB1 + and APB2). + + [..] Internal/external clock and PLL configuration + (#) HSI (high-speed internal), 16 MHz factory-trimmed RC used directly or through + the PLL as System clock source. + + (#) LSI (low-speed internal), 32 KHz low consumption RC used as IWDG and/or RTC + clock source. + + (#) HSE (high-speed external), 4 to 26 MHz crystal oscillator used directly or + through the PLL as System clock source. Can be used also as RTC clock source. + + (#) LSE (low-speed external), 32 KHz oscillator used as RTC clock source. + + (#) PLL (clocked by HSI or HSE), featuring two different output clocks: + (++) The first output is used to generate the high speed system clock (up to 216 MHz) + (++) The second output is used to generate the clock for the USB OTG FS (48 MHz), + the random analog generator (<=48 MHz) and the SDIO (<= 48 MHz). + + (#) CSS (Clock security system), once enable using the function HAL_RCC_EnableCSS() + and if a HSE clock failure occurs(HSE used directly or through PLL as System + clock source), the System clock is automatically switched to HSI and an interrupt + is generated if enabled. The interrupt is linked to the Cortex-M7 NMI + (Non-Maskable Interrupt) exception vector. + + (#) MCO1 (microcontroller clock output), used to output HSI, LSE, HSE or PLL + clock (through a configurable prescaler) on PA8 pin. + + (#) MCO2 (microcontroller clock output), used to output HSE, PLL, SYSCLK or PLLI2S + clock (through a configurable prescaler) on PC9 pin. + + [..] System, AHB and APB buses clocks configuration + (#) Several clock sources can be used to drive the System clock (SYSCLK): HSI, + HSE and PLL. + The AHB clock (HCLK) is derived from System clock through configurable + prescaler and used to clock the CPU, memory and peripherals mapped + on AHB bus (DMA, GPIO...). APB1 (PCLK1) and APB2 (PCLK2) clocks are derived + from AHB clock through configurable prescalers and used to clock + the peripherals mapped on these buses. You can use + "HAL_RCC_GetSysClockFreq()" function to retrieve the frequencies of these clocks. + + -@- All the peripheral clocks are derived from the System clock (SYSCLK) except: + (+@) I2S: the I2S clock can be derived either from a specific PLL (PLLI2S) or + from an external clock mapped on the I2S_CKIN pin. + You have to use __HAL_RCC_PLLI2S_CONFIG() macro to configure this clock. + (+@) SAI: the SAI clock can be derived either from a specific PLL (PLLI2S) or (PLLSAI) or + from an external clock mapped on the I2S_CKIN pin. + You have to use __HAL_RCC_PLLI2S_CONFIG() macro to configure this clock. + (+@) RTC: the RTC clock can be derived either from the LSI, LSE or HSE clock + divided by 2 to 31. You have to use __HAL_RCC_RTC_CONFIG() and __HAL_RCC_RTC_ENABLE() + macros to configure this clock. + (+@) USB OTG FS, SDIO and RTC: USB OTG FS require a frequency equal to 48 MHz + to work correctly, while the SDIO require a frequency equal or lower than + to 48. This clock is derived of the main PLL through PLLQ divider. + (+@) IWDG clock which is always the LSI clock. +@endverbatim + * @{ + */ + +/** + * @brief Resets the RCC clock configuration to the default reset state. + * @note The default reset state of the clock configuration is given below: + * - HSI ON and used as system clock source + * - HSE, PLL, PLLI2S and PLLSAI OFF + * - AHB, APB1 and APB2 prescaler set to 1. + * - CSS, MCO1 and MCO2 OFF + * - All interrupts disabled + * @note This function doesn't modify the configuration of the + * - Peripheral clocks + * - LSI, LSE and RTC clocks + * @retval None + */ +HAL_StatusTypeDef HAL_RCC_DeInit(void) +{ + uint32_t tickstart; + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Set HSION bit to the reset value */ + SET_BIT(RCC->CR, RCC_CR_HSION); + + /* Wait till HSI is ready */ + while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == RESET) + { + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Set HSITRIM[4:0] bits to the reset value */ + SET_BIT(RCC->CR, RCC_CR_HSITRIM_4); + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Reset CFGR register */ + CLEAR_REG(RCC->CFGR); + + /* Wait till clock switch is ready */ + while (READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != RESET) + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Clear HSEON, HSEBYP and CSSON bits */ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_CSSON); + + /* Wait till HSE is disabled */ + while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != RESET) + { + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Clear PLLON bit */ + CLEAR_BIT(RCC->CR, RCC_CR_PLLON); + + /* Wait till PLL is disabled */ + while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != RESET) + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Reset PLLI2SON bit */ + CLEAR_BIT(RCC->CR, RCC_CR_PLLI2SON); + + /* Wait till PLLI2S is disabled */ + while (READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) != RESET) + { + if ((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Get Start Tick */ + tickstart = HAL_GetTick(); + + /* Reset PLLSAI bit */ + CLEAR_BIT(RCC->CR, RCC_CR_PLLSAION); + + /* Wait till PLLSAI is disabled */ + while (READ_BIT(RCC->CR, RCC_CR_PLLSAIRDY) != RESET) + { + if ((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Once PLL, PLLI2S and PLLSAI are OFF, reset PLLCFGR register to default value */ + RCC->PLLCFGR = RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLN_6 | RCC_PLLCFGR_PLLN_7 | RCC_PLLCFGR_PLLQ_2 | 0x20000000U; + + /* Reset PLLI2SCFGR register to default value */ + RCC->PLLI2SCFGR = RCC_PLLI2SCFGR_PLLI2SN_6 | RCC_PLLI2SCFGR_PLLI2SN_7 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SR_1; + + /* Reset PLLSAICFGR register to default value */ + RCC->PLLSAICFGR = RCC_PLLSAICFGR_PLLSAIN_6 | RCC_PLLSAICFGR_PLLSAIN_7 | RCC_PLLSAICFGR_PLLSAIQ_2 | 0x20000000U; + + /* Disable all interrupts */ + CLEAR_BIT(RCC->CIR, RCC_CIR_LSIRDYIE | RCC_CIR_LSERDYIE | RCC_CIR_HSIRDYIE | RCC_CIR_HSERDYIE | RCC_CIR_PLLRDYIE | RCC_CIR_PLLI2SRDYIE | RCC_CIR_PLLSAIRDYIE); + + /* Clear all interrupt flags */ + SET_BIT(RCC->CIR, RCC_CIR_LSIRDYC | RCC_CIR_LSERDYC | RCC_CIR_HSIRDYC | RCC_CIR_HSERDYC | RCC_CIR_PLLRDYC | RCC_CIR_PLLI2SRDYC | RCC_CIR_PLLSAIRDYC | RCC_CIR_CSSC); + + /* Clear LSION bit */ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); + + /* Reset all CSR flags */ + SET_BIT(RCC->CSR, RCC_CSR_RMVF); + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HSI_VALUE; + + /* Adapt Systick interrupt period */ + if (HAL_InitTick(uwTickPrio) != HAL_OK) + { + return HAL_ERROR; + } + else + { + return HAL_OK; + } +} + +/** + * @brief Initializes the RCC Oscillators according to the specified parameters in the + * RCC_OscInitTypeDef. + * @param RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that + * contains the configuration information for the RCC Oscillators. + * @note The PLL is not disabled when used as system clock. + * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not + * supported by this function. User should request a transition to LSE Off + * first and then LSE On or LSE Bypass. + * @note Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not + * supported by this function. User should request a transition to HSE Off + * first and then HSE On or HSE Bypass. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + uint32_t tickstart; + uint32_t pll_config; + FlagStatus pwrclkchanged = RESET; + + /* Check Null pointer */ + if (RCC_OscInitStruct == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + + /*------------------------------- HSE Configuration ------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + { + /* Check the parameters */ + assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + /* When the HSE is used as system clock or clock source for PLL, It can not be disabled */ + if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) + || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE))) + { + if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) + { + return HAL_ERROR; + } + } + else + { + /* Set the new HSE configuration ---------------------------------------*/ + __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + + /* Check the HSE State */ + if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till HSE is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) + { + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till HSE is bypassed or disabled */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) + { + if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + } + /*----------------------------- HSI Configuration --------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + { + /* Check the parameters */ + assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + + /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */ + if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) + || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI))) + { + /* When HSI is used as system clock it will not disabled */ + if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON)) + { + return HAL_ERROR; + } + /* Otherwise, just the calibration is allowed */ + else + { + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + } + } + else + { + /* Check the HSI State */ + if ((RCC_OscInitStruct->HSIState) != RCC_HSI_OFF) + { + /* Enable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_ENABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till HSI is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) + { + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + } + else + { + /* Disable the Internal High Speed oscillator (HSI). */ + __HAL_RCC_HSI_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till HSI is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) + { + if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + } + /*------------------------------ LSI Configuration -------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + { + /* Check the parameters */ + assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + + /* Check the LSI State */ + if ((RCC_OscInitStruct->LSIState) != RCC_LSI_OFF) + { + /* Enable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_ENABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSI is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) + { + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Disable the Internal Low Speed oscillator (LSI). */ + __HAL_RCC_LSI_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSI is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) + { + if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + /*------------------------------ LSE Configuration -------------------------*/ + if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + { + /* Check the parameters */ + assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + + /* Update LSE configuration in Backup Domain control register */ + /* Requires to enable write access to Backup Domain of necessary */ + if (__HAL_RCC_PWR_IS_CLK_DISABLED()) + { + /* Enable Power Clock*/ + __HAL_RCC_PWR_CLK_ENABLE(); + pwrclkchanged = SET; + } + + if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) + { + /* Enable write access to Backup domain */ + PWR->CR1 |= PWR_CR1_DBP; + + /* Wait for Backup domain Write protection disable */ + tickstart = HAL_GetTick(); + + while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) + { + if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /* Set the new LSE configuration -----------------------------------------*/ + __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + /* Check the LSE State */ + if ((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF) + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSE is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSE is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) + { + if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /* Restore clock configuration if changed */ + if (pwrclkchanged == SET) + { + __HAL_RCC_PWR_CLK_DISABLE(); + } + } + /*-------------------------------- PLL Configuration -----------------------*/ + /* Check the parameters */ + assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + { + /* Check if the PLL is used as system clock or not */ + if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + { + if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + { + /* Check the parameters */ + assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + assert_param(IS_RCC_PLLM_VALUE(RCC_OscInitStruct->PLL.PLLM)); + assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN)); + assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP)); + assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); +#if defined (RCC_PLLCFGR_PLLR) + assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR)); +#endif + + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLL is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Configure the main PLL clock source, multiplication and division factors. */ +#if defined (RCC_PLLCFGR_PLLR) + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + RCC_OscInitStruct->PLL.PLLM, + RCC_OscInitStruct->PLL.PLLN, + RCC_OscInitStruct->PLL.PLLP, + RCC_OscInitStruct->PLL.PLLQ, + RCC_OscInitStruct->PLL.PLLR); +#else + __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + RCC_OscInitStruct->PLL.PLLM, + RCC_OscInitStruct->PLL.PLLN, + RCC_OscInitStruct->PLL.PLLP, + RCC_OscInitStruct->PLL.PLLQ); +#endif + + /* Enable the main PLL. */ + __HAL_RCC_PLL_ENABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLL is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + else + { + /* Disable the main PLL. */ + __HAL_RCC_PLL_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLL is ready */ + while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + { + if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + else + { + /* Do not return HAL_ERROR if request repeats the current configuration */ + pll_config = RCC->PLLCFGR; +#if defined (RCC_PLLCFGR_PLLR) + if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PLLR_Pos))) +#else + if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) || + (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos))) +#endif + { + return HAL_ERROR; + } + } + } + return HAL_OK; +} + +/** + * @brief Initializes the CPU, AHB and APB buses clocks according to the specified + * parameters in the RCC_ClkInitStruct. + * @param RCC_ClkInitStruct pointer to an RCC_OscInitTypeDef structure that + * contains the configuration information for the RCC peripheral. + * @param FLatency FLASH Latency, this parameter depend on device selected + * + * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency + * and updated by HAL_RCC_GetHCLKFreq() function called within this function + * + * @note The HSI is used (enabled by hardware) as system clock source after + * startup from Reset, wake-up from STOP and STANDBY mode, or in case + * of failure of the HSE used directly or indirectly as system clock + * (if the Clock Security System CSS is enabled). + * + * @note A switch from one clock source to another occurs only if the target + * clock source is ready (clock stable after startup delay or PLL locked). + * If a clock source which is not yet ready is selected, the switch will + * occur when the clock source will be ready. + * You can use HAL_RCC_GetClockConfig() function to know which clock is + * currently used as system clock source. + * @note Depending on the device voltage range, the software has to set correctly + * 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) +{ + uint32_t tickstart = 0; + + /* Check Null pointer */ + if (RCC_ClkInitStruct == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_RCC_CLOCKTYPE(RCC_ClkInitStruct->ClockType)); + assert_param(IS_FLASH_LATENCY(FLatency)); + + /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + must be correctly programmed according to the frequency of the CPU clock + (HCLK) and the supply voltage of the device. */ + + /* Increasing the CPU frequency */ + if (FLatency > __HAL_FLASH_GET_LATENCY()) + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if (__HAL_FLASH_GET_LATENCY() != FLatency) + { + return HAL_ERROR; + } + } + + /*-------------------------- HCLK Configuration --------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + { + /* Set the highest APBx dividers in order to ensure that we do not go through + a non-spec phase whatever we decrease or increase HCLK. */ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + { + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); + } + + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + { + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); + } + + /* Set the new HCLK clock divider */ + assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + } + + /*------------------------- SYSCLK Configuration ---------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + { + assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + + /* HSE is selected as System Clock Source */ + if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + { + /* Check the HSE ready flag */ + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) + { + return HAL_ERROR; + } + } + /* PLL is selected as System Clock Source */ + else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + { + /* Check the PLL ready flag */ + if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + { + return HAL_ERROR; + } + } + /* HSI is selected as System Clock Source */ + else + { + /* Check the HSI ready flag */ + if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) + { + return HAL_ERROR; + } + } + + __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) + { + if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + + /* Decreasing the number of wait states because of lower CPU frequency */ + if (FLatency < __HAL_FLASH_GET_LATENCY()) + { + /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + __HAL_FLASH_SET_LATENCY(FLatency); + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if (__HAL_FLASH_GET_LATENCY() != FLatency) + { + return HAL_ERROR; + } + } + + /*-------------------------- PCLK1 Configuration ---------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + } + + /*-------------------------- PCLK2 Configuration ---------------------------*/ + if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + { + assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); + } + + /* Update the SystemCoreClock global variable */ + SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]; + + /* Configure the source of time base considering new system clocks settings*/ + HAL_InitTick(uwTickPrio); + + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup RCC_Exported_Functions_Group2 Peripheral Control functions + * @brief RCC clocks control functions + * + @verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the RCC Clocks + frequencies. + +@endverbatim + * @{ + */ + +/** + * @brief Selects the clock source to output on MCO1 pin(PA8) or on MCO2 pin(PC9). + * @note PA8/PC9 should be configured in alternate function mode. + * @param RCC_MCOx specifies the output direction for the clock source. + * This parameter can be one of the following values: + * @arg RCC_MCO1: Clock source to output on MCO1 pin(PA8). + * @arg RCC_MCO2: Clock source to output on MCO2 pin(PC9). + * @param RCC_MCOSource specifies the clock source to output. + * This parameter can be one of the following values: + * @arg RCC_MCO1SOURCE_HSI: HSI clock selected as MCO1 source + * @arg RCC_MCO1SOURCE_LSE: LSE clock selected as MCO1 source + * @arg RCC_MCO1SOURCE_HSE: HSE clock selected as MCO1 source + * @arg RCC_MCO1SOURCE_PLLCLK: main PLL clock selected as MCO1 source + * @arg RCC_MCO2SOURCE_SYSCLK: System clock (SYSCLK) selected as MCO2 source + * @arg RCC_MCO2SOURCE_PLLI2SCLK: PLLI2S clock selected as MCO2 source + * @arg RCC_MCO2SOURCE_HSE: HSE clock selected as MCO2 source + * @arg RCC_MCO2SOURCE_PLLCLK: main PLL clock selected as MCO2 source + * @param RCC_MCODiv specifies the MCOx prescaler. + * This parameter can be one of the following values: + * @arg RCC_MCODIV_1: no division applied to MCOx clock + * @arg RCC_MCODIV_2: division by 2 applied to MCOx clock + * @arg RCC_MCODIV_3: division by 3 applied to MCOx clock + * @arg RCC_MCODIV_4: division by 4 applied to MCOx clock + * @arg RCC_MCODIV_5: division by 5 applied to MCOx clock + * @retval None + */ +void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv) +{ + GPIO_InitTypeDef GPIO_InitStruct; + /* Check the parameters */ + assert_param(IS_RCC_MCO(RCC_MCOx)); + assert_param(IS_RCC_MCODIV(RCC_MCODiv)); + /* RCC_MCO1 */ + if (RCC_MCOx == RCC_MCO1) + { + assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource)); + + /* MCO1 Clock Enable */ + MCO1_CLK_ENABLE(); + + /* Configure the MCO1 pin in alternate function mode */ + GPIO_InitStruct.Pin = MCO1_PIN; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Alternate = GPIO_AF0_MCO; + HAL_GPIO_Init(MCO1_GPIO_PORT, &GPIO_InitStruct); + + /* Mask MCO1 and MCO1PRE[2:0] bits then Select MCO1 clock source and prescaler */ + MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO1 | RCC_CFGR_MCO1PRE), (RCC_MCOSource | RCC_MCODiv)); + } + else + { + assert_param(IS_RCC_MCO2SOURCE(RCC_MCOSource)); + + /* MCO2 Clock Enable */ + MCO2_CLK_ENABLE(); + + /* Configure the MCO2 pin in alternate function mode */ + GPIO_InitStruct.Pin = MCO2_PIN; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Alternate = GPIO_AF0_MCO; + HAL_GPIO_Init(MCO2_GPIO_PORT, &GPIO_InitStruct); + + /* Mask MCO2 and MCO2PRE[2:0] bits then Select MCO2 clock source and prescaler */ + MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2 | RCC_CFGR_MCO2PRE), (RCC_MCOSource | (RCC_MCODiv << 3))); + } +} + +/** + * @brief Enables the Clock Security System. + * @note If a failure is detected on the HSE oscillator clock, this oscillator + * is automatically disabled and an interrupt is generated to inform the + * software about the failure (Clock Security System Interrupt, CSSI), + * allowing the MCU to perform rescue operations. The CSSI is linked to + * the Cortex-M7 NMI (Non-Maskable Interrupt) exception vector. + * @retval None + */ +void HAL_RCC_EnableCSS(void) +{ + SET_BIT(RCC->CR, RCC_CR_CSSON); +} + +/** + * @brief Disables the Clock Security System. + * @retval None + */ +void HAL_RCC_DisableCSS(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_CSSON); +} + +/** + * @brief Returns the SYSCLK frequency + * + * @note The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * @note If SYSCLK source is HSI, function returns values based on HSI_VALUE(*) + * @note If SYSCLK source is HSE, function returns values based on HSE_VALUE(**) + * @note If SYSCLK source is PLL, function returns values based on HSE_VALUE(**) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * @note (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * @note (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value + * 25 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * @note The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @note This function can be used by the user application to compute the + * baudrate for the communication peripherals or configure other parameters. + * + * @note Each time SYSCLK changes, this function must be called to update the + * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect. + * + * + * @retval SYSCLK frequency + */ +uint32_t HAL_RCC_GetSysClockFreq(void) +{ + uint32_t pllm = 0, pllvco = 0, pllp = 0; + uint32_t sysclockfreq = 0; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (RCC->CFGR & RCC_CFGR_SWS) + { + case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + { + sysclockfreq = HSI_VALUE; + break; + } + case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */ + { + sysclockfreq = HSE_VALUE; + break; + } + case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock source */ + { + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + SYSCLK = PLL_VCO / PLLP */ + pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; + if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI) + { + /* HSE used as PLL clock source */ + pllvco = (uint32_t)((((uint64_t) HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); + } + else + { + /* HSI used as PLL clock source */ + pllvco = (uint32_t)((((uint64_t) HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm); + } + pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1) * 2); + + sysclockfreq = pllvco / pllp; + break; + } + default: + { + sysclockfreq = HSI_VALUE; + break; + } + } + return sysclockfreq; +} + +/** + * @brief Returns the HCLK frequency + * @note Each time HCLK changes, this function must be called to update the + * right HCLK value. Otherwise, any configuration based on this function will be incorrect. + * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency. + * @retval HCLK frequency + */ +uint32_t HAL_RCC_GetHCLKFreq(void) +{ + return SystemCoreClock; +} + +/** + * @brief Returns the PCLK1 frequency + * @note Each time PCLK1 changes, this function must be called to update the + * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect. + * @retval PCLK1 frequency + */ +uint32_t HAL_RCC_GetPCLK1Freq(void) +{ + /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ + return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]); +} + +/** + * @brief Returns the PCLK2 frequency + * @note Each time PCLK2 changes, this function must be called to update the + * right PCLK2 value. Otherwise, any configuration based on this function will be incorrect. + * @retval PCLK2 frequency + */ +uint32_t HAL_RCC_GetPCLK2Freq(void) +{ + /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/ + return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]); +} + +/** + * @brief Configures the RCC_OscInitStruct according to the internal + * RCC configuration registers. + * @param RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that + * will be configured. + * @retval None + */ +void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +{ + /* Set all possible values for the Oscillator type parameter ---------------*/ + RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI; + + /* Get the HSE configuration -----------------------------------------------*/ + if ((RCC->CR & RCC_CR_HSEBYP) == RCC_CR_HSEBYP) + { + RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS; + } + else if ((RCC->CR & RCC_CR_HSEON) == RCC_CR_HSEON) + { + RCC_OscInitStruct->HSEState = RCC_HSE_ON; + } + else + { + RCC_OscInitStruct->HSEState = RCC_HSE_OFF; + } + + /* Get the HSI configuration -----------------------------------------------*/ + if ((RCC->CR & RCC_CR_HSION) == RCC_CR_HSION) + { + RCC_OscInitStruct->HSIState = RCC_HSI_ON; + } + else + { + RCC_OscInitStruct->HSIState = RCC_HSI_OFF; + } + + RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR & RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos); + + /* Get the LSE configuration -----------------------------------------------*/ + if ((RCC->BDCR & RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP) + { + RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS; + } + else if ((RCC->BDCR & RCC_BDCR_LSEON) == RCC_BDCR_LSEON) + { + RCC_OscInitStruct->LSEState = RCC_LSE_ON; + } + else + { + RCC_OscInitStruct->LSEState = RCC_LSE_OFF; + } + + /* Get the LSI configuration -----------------------------------------------*/ + if ((RCC->CSR & RCC_CSR_LSION) == RCC_CSR_LSION) + { + RCC_OscInitStruct->LSIState = RCC_LSI_ON; + } + else + { + RCC_OscInitStruct->LSIState = RCC_LSI_OFF; + } + + /* Get the PLL configuration -----------------------------------------------*/ + if ((RCC->CR & RCC_CR_PLLON) == RCC_CR_PLLON) + { + RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON; + } + else + { + RCC_OscInitStruct->PLL.PLLState = RCC_PLL_OFF; + } + RCC_OscInitStruct->PLL.PLLSource = (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + RCC_OscInitStruct->PLL.PLLM = (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM); + RCC_OscInitStruct->PLL.PLLN = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); + RCC_OscInitStruct->PLL.PLLP = (uint32_t)((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) + RCC_PLLCFGR_PLLP_0) << 1) >> RCC_PLLCFGR_PLLP_Pos); + RCC_OscInitStruct->PLL.PLLQ = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Pos); +#if defined (RCC_PLLCFGR_PLLR) + RCC_OscInitStruct->PLL.PLLR = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> POSITION_VAL(RCC_PLLCFGR_PLLR)); +#endif +} + +/** + * @brief Configures the RCC_ClkInitStruct according to the internal + * RCC configuration registers. + * @param RCC_ClkInitStruct pointer to an RCC_ClkInitTypeDef structure that + * will be configured. + * @param pFLatency Pointer on the Flash Latency. + * @retval None + */ +void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency) +{ + /* Set all possible values for the Clock type parameter --------------------*/ + RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; + + /* Get the SYSCLK configuration --------------------------------------------*/ + RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW); + + /* Get the HCLK configuration ----------------------------------------------*/ + RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE); + + /* Get the APB1 configuration ----------------------------------------------*/ + RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE1); + + /* Get the APB2 configuration ----------------------------------------------*/ + RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)((RCC->CFGR & RCC_CFGR_PPRE2) >> 3); + + /* Get the Flash Wait State (Latency) configuration ------------------------*/ + *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY); +} + +/** + * @brief This function handles the RCC CSS interrupt request. + * @note This API should be called under the NMI_Handler(). + * @retval None + */ +void HAL_RCC_NMI_IRQHandler(void) +{ + /* Check RCC CSSF flag */ + if (__HAL_RCC_GET_IT(RCC_IT_CSS)) + { + /* RCC Clock Security System interrupt user callback */ + HAL_RCC_CSSCallback(); + + /* Clear RCC CSS pending bit */ + __HAL_RCC_CLEAR_IT(RCC_IT_CSS); + } +} + +/** + * @brief RCC Clock Security System interrupt callback + * @retval None + */ +__weak void HAL_RCC_CSSCallback(void) +{ + /* NOTE : This function Should not be modified, when the callback is needed, + the HAL_RCC_CSSCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_RCC_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c new file mode 100644 index 0000000..60b0a07 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c @@ -0,0 +1,1773 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_rcc_ex.c + * @author MCD Application Team + * @brief Extension RCC HAL module driver. + * This file provides firmware functions to manage the following + * functionalities RCC extension peripheral: + * + Extended Peripheral Control functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup RCCEx RCCEx + * @brief RCCEx HAL module driver + * @{ + */ + +#ifdef HAL_RCC_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @defgroup RCCEx_Private_Defines RCCEx Private Defines + * @{ + */ +/** + * @} + */ +/* Private macro -------------------------------------------------------------*/ +/** @defgroup RCCEx_Private_Macros RCCEx Private Macros + * @{ + */ +/** + * @} + */ + +/** @defgroup RCCEx_Private_Macros RCCEx Private Macros + * @{ + */ + +/** + * @} + */ + + +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** @defgroup RCCEx_Exported_Functions RCCEx Exported Functions + * @{ + */ + +/** @defgroup RCCEx_Exported_Functions_Group1 Extended Peripheral Control functions + * @brief Extended Peripheral Control functions + * +@verbatim + =============================================================================== + ##### Extended Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the RCC Clocks + frequencies. + [..] + (@) Important note: Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to + select the RTC clock source; in this case the Backup domain will be reset in + order to modify the RTC Clock source, as consequence RTC registers (including + the backup registers) and RCC_BDCR register will be set to their reset values. + +@endverbatim + * @{ + */ +#if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx) || \ + defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || \ + defined (STM32F750xx) +/** + * @brief Initializes the RCC extended peripherals clocks according to the specified + * parameters in the RCC_PeriphCLKInitTypeDef. + * @param PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that + * contains the configuration information for the Extended Peripherals + * clocks(I2S, SAI, LTDC, RTC, TIM, UARTs, USARTs, LTPIM, SDMMC...). + * + * @note Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to select + * the RTC clock source; in this case the Backup domain will be reset in + * order to modify the RTC Clock source, as consequence RTC registers (including + * the backup registers) are set to their reset values. + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + uint32_t tickstart = 0; + uint32_t tmpreg0 = 0; + uint32_t tmpreg1 = 0; + uint32_t plli2sused = 0; + uint32_t pllsaiused = 0; + + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); + + /*----------------------------------- I2S configuration ----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == (RCC_PERIPHCLK_I2S)) + { + /* Check the parameters */ + assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection)); + + /* Configure I2S Clock source */ + __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection); + + /* Enable the PLLI2S when it's used as clock source for I2S */ + if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S) + { + plli2sused = 1; + } + } + + /*------------------------------------ SAI1 configuration --------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == (RCC_PERIPHCLK_SAI1)) + { + /* Check the parameters */ + assert_param(IS_RCC_SAI1CLKSOURCE(PeriphClkInit->Sai1ClockSelection)); + + /* Configure SAI1 Clock source */ + __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection); + /* Enable the PLLI2S when it's used as clock source for SAI */ + if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S) + { + plli2sused = 1; + } + /* Enable the PLLSAI when it's used as clock source for SAI */ + if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI) + { + pllsaiused = 1; + } + } + + /*------------------------------------ SAI2 configuration --------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == (RCC_PERIPHCLK_SAI2)) + { + /* Check the parameters */ + assert_param(IS_RCC_SAI2CLKSOURCE(PeriphClkInit->Sai2ClockSelection)); + + /* Configure SAI2 Clock source */ + __HAL_RCC_SAI2_CONFIG(PeriphClkInit->Sai2ClockSelection); + + /* Enable the PLLI2S when it's used as clock source for SAI */ + if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S) + { + plli2sused = 1; + } + /* Enable the PLLSAI when it's used as clock source for SAI */ + if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI) + { + pllsaiused = 1; + } + } + + /*-------------------------------------- SPDIF-RX Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) + { + plli2sused = 1; + } + + /*------------------------------------ RTC configuration --------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC)) + { + /* Check for RTC Parameters used to output RTCCLK */ + assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); + + /* Enable Power Clock*/ + __HAL_RCC_PWR_CLK_ENABLE(); + + /* Enable write access to Backup domain */ + PWR->CR1 |= PWR_CR1_DBP; + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait for Backup domain Write protection disable */ + while((PWR->CR1 & PWR_CR1_DBP) == RESET) + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Reset the Backup domain only if the RTC Clock source selection is modified */ + tmpreg0 = (RCC->BDCR & RCC_BDCR_RTCSEL); + + if((tmpreg0 != 0x00000000U) && (tmpreg0 != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))) + { + /* Store the content of BDCR register before the reset of Backup Domain */ + tmpreg0 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); + + /* RTC Clock selection can be changed only if the Backup Domain is reset */ + __HAL_RCC_BACKUPRESET_FORCE(); + __HAL_RCC_BACKUPRESET_RELEASE(); + + /* Restore the Content of BDCR register */ + RCC->BDCR = tmpreg0; + + /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ + if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON)) + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + } + + /*------------------------------------ TIM configuration --------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM)) + { + /* Check the parameters */ + assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection)); + + /* Configure Timer Prescaler */ + __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection); + } + + /*-------------------------------------- I2C1 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); + + /* Configure the I2C1 clock source */ + __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); + } + + /*-------------------------------------- I2C2 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection)); + + /* Configure the I2C2 clock source */ + __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection); + } + + /*-------------------------------------- I2C3 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection)); + + /* Configure the I2C3 clock source */ + __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection); + } + + /*-------------------------------------- I2C4 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C4CLKSOURCE(PeriphClkInit->I2c4ClockSelection)); + + /* Configure the I2C4 clock source */ + __HAL_RCC_I2C4_CONFIG(PeriphClkInit->I2c4ClockSelection); + } + + /*-------------------------------------- USART1 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) + { + /* Check the parameters */ + assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); + + /* Configure the USART1 clock source */ + __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); + } + + /*-------------------------------------- USART2 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) + { + /* Check the parameters */ + assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); + + /* Configure the USART2 clock source */ + __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); + } + + /*-------------------------------------- USART3 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) + { + /* Check the parameters */ + assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection)); + + /* Configure the USART3 clock source */ + __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection); + } + + /*-------------------------------------- UART4 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) + { + /* Check the parameters */ + assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection)); + + /* Configure the UART4 clock source */ + __HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection); + } + + /*-------------------------------------- UART5 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) + { + /* Check the parameters */ + assert_param(IS_RCC_UART5CLKSOURCE(PeriphClkInit->Uart5ClockSelection)); + + /* Configure the UART5 clock source */ + __HAL_RCC_UART5_CONFIG(PeriphClkInit->Uart5ClockSelection); + } + + /*-------------------------------------- USART6 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) + { + /* Check the parameters */ + assert_param(IS_RCC_USART6CLKSOURCE(PeriphClkInit->Usart6ClockSelection)); + + /* Configure the USART6 clock source */ + __HAL_RCC_USART6_CONFIG(PeriphClkInit->Usart6ClockSelection); + } + + /*-------------------------------------- UART7 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) + { + /* Check the parameters */ + assert_param(IS_RCC_UART7CLKSOURCE(PeriphClkInit->Uart7ClockSelection)); + + /* Configure the UART7 clock source */ + __HAL_RCC_UART7_CONFIG(PeriphClkInit->Uart7ClockSelection); + } + + /*-------------------------------------- UART8 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) + { + /* Check the parameters */ + assert_param(IS_RCC_UART8CLKSOURCE(PeriphClkInit->Uart8ClockSelection)); + + /* Configure the UART8 clock source */ + __HAL_RCC_UART8_CONFIG(PeriphClkInit->Uart8ClockSelection); + } + + /*--------------------------------------- CEC Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) + { + /* Check the parameters */ + assert_param(IS_RCC_CECCLKSOURCE(PeriphClkInit->CecClockSelection)); + + /* Configure the CEC clock source */ + __HAL_RCC_CEC_CONFIG(PeriphClkInit->CecClockSelection); + } + + /*-------------------------------------- CK48 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) + { + /* Check the parameters */ + assert_param(IS_RCC_CLK48SOURCE(PeriphClkInit->Clk48ClockSelection)); + + /* Configure the CLK48 source */ + __HAL_RCC_CLK48_CONFIG(PeriphClkInit->Clk48ClockSelection); + + /* Enable the PLLSAI when it's used as clock source for CK48 */ + if(PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP) + { + pllsaiused = 1; + } + } + + /*-------------------------------------- LTDC Configuration -----------------------------------*/ +#if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC) + { + pllsaiused = 1; + } +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + + /*-------------------------------------- LPTIM1 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) + { + /* Check the parameters */ + assert_param(IS_RCC_LPTIM1CLK(PeriphClkInit->Lptim1ClockSelection)); + + /* Configure the LTPIM1 clock source */ + __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection); + } + + /*------------------------------------- SDMMC1 Configuration ------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) + { + /* Check the parameters */ + assert_param(IS_RCC_SDMMC1CLKSOURCE(PeriphClkInit->Sdmmc1ClockSelection)); + + /* Configure the SDMMC1 clock source */ + __HAL_RCC_SDMMC1_CONFIG(PeriphClkInit->Sdmmc1ClockSelection); + } + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) + /*------------------------------------- SDMMC2 Configuration ------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2) + { + /* Check the parameters */ + assert_param(IS_RCC_SDMMC2CLKSOURCE(PeriphClkInit->Sdmmc2ClockSelection)); + + /* Configure the SDMMC2 clock source */ + __HAL_RCC_SDMMC2_CONFIG(PeriphClkInit->Sdmmc2ClockSelection); + } + + /*------------------------------------- DFSDM1 Configuration -------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1) + { + /* Check the parameters */ + assert_param(IS_RCC_DFSDM1CLKSOURCE(PeriphClkInit->Dfsdm1ClockSelection)); + + /* Configure the DFSDM1 interface clock source */ + __HAL_RCC_DFSDM1_CONFIG(PeriphClkInit->Dfsdm1ClockSelection); + } + + /*------------------------------------- DFSDM AUDIO Configuration -------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_AUDIO) + { + /* Check the parameters */ + assert_param(IS_RCC_DFSDM1AUDIOCLKSOURCE(PeriphClkInit->Dfsdm1AudioClockSelection)); + + /* Configure the DFSDM interface clock source */ + __HAL_RCC_DFSDM1AUDIO_CONFIG(PeriphClkInit->Dfsdm1AudioClockSelection); + } +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + + /*-------------------------------------- PLLI2S Configuration ---------------------------------*/ + /* PLLI2S is configured when a peripheral will use it as source clock : SAI1, SAI2, I2S or SPDIF-RX */ + if((plli2sused == 1) || ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S)) + { + /* Disable the PLLI2S */ + __HAL_RCC_PLLI2S_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLLI2S is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET) + { + if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + + /* check for common PLLI2S Parameters */ + assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN)); + + /*----------------- In Case of PLLI2S is selected as source clock for I2S -------------------*/ + if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) && (PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S))) + { + /* check for Parameters */ + assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR)); + + /* Read PLLI2SP and PLLI2SQ value from PLLI2SCFGR register (this value is not needed for I2S configuration) */ + tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos); + tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos); + /* Configure the PLLI2S division factors */ + /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */ + /* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */ + __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , tmpreg0, tmpreg1, PeriphClkInit->PLLI2S.PLLI2SR); + } + + /*----------------- In Case of PLLI2S is selected as source clock for SAI -------------------*/ + if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)) || + ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S))) + { + /* Check for PLLI2S Parameters */ + assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ)); + /* Check for PLLI2S/DIVQ parameters */ + assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->PLLI2SDivQ)); + + /* Read PLLI2SP and PLLI2SR values from PLLI2SCFGR register (this value is not needed for SAI configuration) */ + tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos); + tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos); + /* Configure the PLLI2S division factors */ + /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */ + /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */ + /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */ + __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, tmpreg0, PeriphClkInit->PLLI2S.PLLI2SQ, tmpreg1); + + /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */ + __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLI2SDivQ); + } + + /*----------------- In Case of PLLI2S is selected as source clock for SPDIF-RX -------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) + { + /* check for Parameters */ + assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->PLLI2S.PLLI2SP)); + + /* Read PLLI2SR value from PLLI2SCFGR register (this value is not needed for SPDIF-RX configuration) */ + tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos); + tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos); + /* Configure the PLLI2S division factors */ + /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */ + /* SPDIFCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */ + __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, tmpreg0, tmpreg1); + } + + /*----------------- In Case of PLLI2S is just selected -----------------*/ + if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S) + { + /* Check for Parameters */ + assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->PLLI2S.PLLI2SP)); + assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR)); + assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ)); + + /* Configure the PLLI2S division factors */ + /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLI2SM) */ + /* SPDIFRXCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */ + __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, PeriphClkInit->PLLI2S.PLLI2SQ, PeriphClkInit->PLLI2S.PLLI2SR); + } + + /* Enable the PLLI2S */ + __HAL_RCC_PLLI2S_ENABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLLI2S is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) + { + if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + } + + /*-------------------------------------- PLLSAI Configuration ---------------------------------*/ + /* PLLSAI is configured when a peripheral will use it as source clock : SAI1, SAI2, LTDC or CK48 */ + if(pllsaiused == 1) + { + /* Disable PLLSAI Clock */ + __HAL_RCC_PLLSAI_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLLSAI is disabled */ + while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET) + { + if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + + /* Check the PLLSAI division factors */ + assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->PLLSAI.PLLSAIN)); + + /*----------------- In Case of PLLSAI is selected as source clock for SAI -------------------*/ + if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)) ||\ + ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI))) + { + /* check for PLLSAIQ Parameter */ + assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->PLLSAI.PLLSAIQ)); + /* check for PLLSAI/DIVQ Parameter */ + assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->PLLSAIDivQ)); + + /* Read PLLSAIP value from PLLSAICFGR register (this value is not needed for SAI configuration) */ + tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos); + tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLSAICFGR_PLLSAIR_Pos); + /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ + /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ + /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */ + __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg0, PeriphClkInit->PLLSAI.PLLSAIQ, tmpreg1); + + /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */ + __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLSAIDivQ); + } + + /*----------------- In Case of PLLSAI is selected as source clock for CLK48 -------------------*/ + /* In Case of PLLI2S is selected as source clock for CK48 */ + if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) && (PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP)) + { + /* check for Parameters */ + assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->PLLSAI.PLLSAIP)); + /* Read PLLSAIQ and PLLSAIR value from PLLSAICFGR register (this value is not needed for CK48 configuration) */ + tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos); + tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos); + + /* Configure the PLLSAI division factors */ + /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) x (PLLI2SN/PLLM) */ + /* 48CLK = f(PLLSAI clock output) = f(VCO clock) / PLLSAIP */ + __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , PeriphClkInit->PLLSAI.PLLSAIP, tmpreg0, tmpreg1); + } + +#if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) || defined (STM32F750xx) + /*---------------------------- LTDC configuration -------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == (RCC_PERIPHCLK_LTDC)) + { + assert_param(IS_RCC_PLLSAIR_VALUE(PeriphClkInit->PLLSAI.PLLSAIR)); + assert_param(IS_RCC_PLLSAI_DIVR_VALUE(PeriphClkInit->PLLSAIDivR)); + + /* Read PLLSAIP and PLLSAIQ value from PLLSAICFGR register (these value are not needed for LTDC configuration) */ + tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos); + tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos); + + /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ + /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ + /* LTDC_CLK(first level) = PLLSAI_VCO Output/PLLSAIR */ + __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg1, tmpreg0, PeriphClkInit->PLLSAI.PLLSAIR); + + /* LTDC_CLK = LTDC_CLK(first level)/PLLSAIDIVR */ + __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(PeriphClkInit->PLLSAIDivR); + } +#endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + + /* Enable PLLSAI Clock */ + __HAL_RCC_PLLSAI_ENABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLLSAI is ready */ + while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) + { + if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + } + return HAL_OK; +} + +/** + * @brief Get the RCC_PeriphCLKInitTypeDef according to the internal + * RCC configuration registers. + * @param PeriphClkInit pointer to the configured RCC_PeriphCLKInitTypeDef structure + * @retval None + */ +void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + uint32_t tempreg = 0; + + /* Set all possible values for the extended clock type parameter------------*/ +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) + PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_I2S | RCC_PERIPHCLK_LPTIM1 |\ + RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 |\ + RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC |\ + RCC_PERIPHCLK_CEC | RCC_PERIPHCLK_I2C4 |\ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 |\ + RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_USART1 |\ + RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 |\ + RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |\ + RCC_PERIPHCLK_USART6 | RCC_PERIPHCLK_UART7 |\ + RCC_PERIPHCLK_UART8 | RCC_PERIPHCLK_SDMMC1 |\ + RCC_PERIPHCLK_CLK48 | RCC_PERIPHCLK_SDMMC2 |\ + RCC_PERIPHCLK_DFSDM1 | RCC_PERIPHCLK_DFSDM1_AUDIO; +#else + PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_I2S | RCC_PERIPHCLK_LPTIM1 |\ + RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 |\ + RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC |\ + RCC_PERIPHCLK_CEC | RCC_PERIPHCLK_I2C4 |\ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 |\ + RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_USART1 |\ + RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 |\ + RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |\ + RCC_PERIPHCLK_USART6 | RCC_PERIPHCLK_UART7 |\ + RCC_PERIPHCLK_UART8 | RCC_PERIPHCLK_SDMMC1 |\ + RCC_PERIPHCLK_CLK48; +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + + /* Get the PLLI2S Clock configuration -----------------------------------------------*/ + PeriphClkInit->PLLI2S.PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos); + PeriphClkInit->PLLI2S.PLLI2SP = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos); + PeriphClkInit->PLLI2S.PLLI2SQ = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos); + PeriphClkInit->PLLI2S.PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos); + + /* Get the PLLSAI Clock configuration -----------------------------------------------*/ + PeriphClkInit->PLLSAI.PLLSAIN = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLSAICFGR_PLLSAIN_Pos); + PeriphClkInit->PLLSAI.PLLSAIP = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos); + PeriphClkInit->PLLSAI.PLLSAIQ = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos); + PeriphClkInit->PLLSAI.PLLSAIR = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos); + + /* Get the PLLSAI/PLLI2S division factors -------------------------------------------*/ + PeriphClkInit->PLLI2SDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) >> RCC_DCKCFGR1_PLLI2SDIVQ_Pos); + PeriphClkInit->PLLSAIDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> RCC_DCKCFGR1_PLLSAIDIVQ_Pos); + PeriphClkInit->PLLSAIDivR = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVR) >> RCC_DCKCFGR1_PLLSAIDIVR_Pos); + + /* Get the SAI1 clock configuration ----------------------------------------------*/ + PeriphClkInit->Sai1ClockSelection = __HAL_RCC_GET_SAI1_SOURCE(); + + /* Get the SAI2 clock configuration ----------------------------------------------*/ + PeriphClkInit->Sai2ClockSelection = __HAL_RCC_GET_SAI2_SOURCE(); + + /* Get the I2S clock configuration ------------------------------------------*/ + PeriphClkInit->I2sClockSelection = __HAL_RCC_GET_I2SCLKSOURCE(); + + /* Get the I2C1 clock configuration ------------------------------------------*/ + PeriphClkInit->I2c1ClockSelection = __HAL_RCC_GET_I2C1_SOURCE(); + + /* Get the I2C2 clock configuration ------------------------------------------*/ + PeriphClkInit->I2c2ClockSelection = __HAL_RCC_GET_I2C2_SOURCE(); + + /* Get the I2C3 clock configuration ------------------------------------------*/ + PeriphClkInit->I2c3ClockSelection = __HAL_RCC_GET_I2C3_SOURCE(); + + /* Get the I2C4 clock configuration ------------------------------------------*/ + PeriphClkInit->I2c4ClockSelection = __HAL_RCC_GET_I2C4_SOURCE(); + + /* Get the USART1 clock configuration ------------------------------------------*/ + PeriphClkInit->Usart1ClockSelection = __HAL_RCC_GET_USART1_SOURCE(); + + /* Get the USART2 clock configuration ------------------------------------------*/ + PeriphClkInit->Usart2ClockSelection = __HAL_RCC_GET_USART2_SOURCE(); + + /* Get the USART3 clock configuration ------------------------------------------*/ + PeriphClkInit->Usart3ClockSelection = __HAL_RCC_GET_USART3_SOURCE(); + + /* Get the UART4 clock configuration ------------------------------------------*/ + PeriphClkInit->Uart4ClockSelection = __HAL_RCC_GET_UART4_SOURCE(); + + /* Get the UART5 clock configuration ------------------------------------------*/ + PeriphClkInit->Uart5ClockSelection = __HAL_RCC_GET_UART5_SOURCE(); + + /* Get the USART6 clock configuration ------------------------------------------*/ + PeriphClkInit->Usart6ClockSelection = __HAL_RCC_GET_USART6_SOURCE(); + + /* Get the UART7 clock configuration ------------------------------------------*/ + PeriphClkInit->Uart7ClockSelection = __HAL_RCC_GET_UART7_SOURCE(); + + /* Get the UART8 clock configuration ------------------------------------------*/ + PeriphClkInit->Uart8ClockSelection = __HAL_RCC_GET_UART8_SOURCE(); + + /* Get the LPTIM1 clock configuration ------------------------------------------*/ + PeriphClkInit->Lptim1ClockSelection = __HAL_RCC_GET_LPTIM1_SOURCE(); + + /* Get the CEC clock configuration -----------------------------------------------*/ + PeriphClkInit->CecClockSelection = __HAL_RCC_GET_CEC_SOURCE(); + + /* Get the CK48 clock configuration -----------------------------------------------*/ + PeriphClkInit->Clk48ClockSelection = __HAL_RCC_GET_CLK48_SOURCE(); + + /* Get the SDMMC1 clock configuration -----------------------------------------------*/ + PeriphClkInit->Sdmmc1ClockSelection = __HAL_RCC_GET_SDMMC1_SOURCE(); + +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) + /* Get the SDMMC2 clock configuration -----------------------------------------------*/ + PeriphClkInit->Sdmmc2ClockSelection = __HAL_RCC_GET_SDMMC2_SOURCE(); + + /* Get the DFSDM clock configuration -----------------------------------------------*/ + PeriphClkInit->Dfsdm1ClockSelection = __HAL_RCC_GET_DFSDM1_SOURCE(); + + /* Get the DFSDM AUDIO clock configuration -----------------------------------------------*/ + PeriphClkInit->Dfsdm1AudioClockSelection = __HAL_RCC_GET_DFSDM1AUDIO_SOURCE(); +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + + /* Get the RTC Clock configuration -----------------------------------------------*/ + tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE); + PeriphClkInit->RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL)); + + /* Get the TIM Prescaler configuration --------------------------------------------*/ + if ((RCC->DCKCFGR1 & RCC_DCKCFGR1_TIMPRE) == RESET) + { + PeriphClkInit->TIMPresSelection = RCC_TIMPRES_DESACTIVATED; + } + else + { + PeriphClkInit->TIMPresSelection = RCC_TIMPRES_ACTIVATED; + } +} +#endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || STM32F750xx */ + +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) +/** + * @brief Initializes the RCC extended peripherals clocks according to the specified + * parameters in the RCC_PeriphCLKInitTypeDef. + * @param PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that + * contains the configuration information for the Extended Peripherals + * clocks(I2S, SAI, RTC, TIM, UARTs, USARTs, LTPIM, SDMMC...). + * + * @note Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to select + * the RTC clock source; in this case the Backup domain will be reset in + * order to modify the RTC Clock source, as consequence RTC registers (including + * the backup registers) are set to their reset values. + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + uint32_t tickstart = 0; + uint32_t tmpreg0 = 0; + uint32_t plli2sused = 0; + uint32_t pllsaiused = 0; + + /* Check the parameters */ + assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); + + /*----------------------------------- I2S configuration ----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == (RCC_PERIPHCLK_I2S)) + { + /* Check the parameters */ + assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection)); + + /* Configure I2S Clock source */ + __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection); + + /* Enable the PLLI2S when it's used as clock source for I2S */ + if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S) + { + plli2sused = 1; + } + } + + /*------------------------------------ SAI1 configuration --------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == (RCC_PERIPHCLK_SAI1)) + { + /* Check the parameters */ + assert_param(IS_RCC_SAI1CLKSOURCE(PeriphClkInit->Sai1ClockSelection)); + + /* Configure SAI1 Clock source */ + __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection); + /* Enable the PLLI2S when it's used as clock source for SAI */ + if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S) + { + plli2sused = 1; + } + /* Enable the PLLSAI when it's used as clock source for SAI */ + if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI) + { + pllsaiused = 1; + } + } + + /*------------------------------------ SAI2 configuration --------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == (RCC_PERIPHCLK_SAI2)) + { + /* Check the parameters */ + assert_param(IS_RCC_SAI2CLKSOURCE(PeriphClkInit->Sai2ClockSelection)); + + /* Configure SAI2 Clock source */ + __HAL_RCC_SAI2_CONFIG(PeriphClkInit->Sai2ClockSelection); + + /* Enable the PLLI2S when it's used as clock source for SAI */ + if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S) + { + plli2sused = 1; + } + /* Enable the PLLSAI when it's used as clock source for SAI */ + if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI) + { + pllsaiused = 1; + } + } + + /*------------------------------------ RTC configuration --------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC)) + { + /* Check for RTC Parameters used to output RTCCLK */ + assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); + + /* Enable Power Clock*/ + __HAL_RCC_PWR_CLK_ENABLE(); + + /* Enable write access to Backup domain */ + PWR->CR1 |= PWR_CR1_DBP; + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait for Backup domain Write protection disable */ + while((PWR->CR1 & PWR_CR1_DBP) == RESET) + { + if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + + /* Reset the Backup domain only if the RTC Clock source selection is modified */ + tmpreg0 = (RCC->BDCR & RCC_BDCR_RTCSEL); + + if((tmpreg0 != 0x00000000U) && (tmpreg0 != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))) + { + /* Store the content of BDCR register before the reset of Backup Domain */ + tmpreg0 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); + + /* RTC Clock selection can be changed only if the Backup Domain is reset */ + __HAL_RCC_BACKUPRESET_FORCE(); + __HAL_RCC_BACKUPRESET_RELEASE(); + + /* Restore the Content of BDCR register */ + RCC->BDCR = tmpreg0; + + /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ + if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON)) + { + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till LSE is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + { + if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + { + return HAL_TIMEOUT; + } + } + } + } + __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + } + + /*------------------------------------ TIM configuration --------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM)) + { + /* Check the parameters */ + assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection)); + + /* Configure Timer Prescaler */ + __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection); + } + + /*-------------------------------------- I2C1 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); + + /* Configure the I2C1 clock source */ + __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); + } + + /*-------------------------------------- I2C2 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection)); + + /* Configure the I2C2 clock source */ + __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection); + } + + /*-------------------------------------- I2C3 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) + { + /* Check the parameters */ + assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection)); + + /* Configure the I2C3 clock source */ + __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection); + } + + /*-------------------------------------- USART1 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) + { + /* Check the parameters */ + assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); + + /* Configure the USART1 clock source */ + __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); + } + + /*-------------------------------------- USART2 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) + { + /* Check the parameters */ + assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); + + /* Configure the USART2 clock source */ + __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); + } + + /*-------------------------------------- USART3 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) + { + /* Check the parameters */ + assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection)); + + /* Configure the USART3 clock source */ + __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection); + } + + /*-------------------------------------- UART4 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) + { + /* Check the parameters */ + assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection)); + + /* Configure the UART4 clock source */ + __HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection); + } + + /*-------------------------------------- UART5 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) + { + /* Check the parameters */ + assert_param(IS_RCC_UART5CLKSOURCE(PeriphClkInit->Uart5ClockSelection)); + + /* Configure the UART5 clock source */ + __HAL_RCC_UART5_CONFIG(PeriphClkInit->Uart5ClockSelection); + } + + /*-------------------------------------- USART6 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) + { + /* Check the parameters */ + assert_param(IS_RCC_USART6CLKSOURCE(PeriphClkInit->Usart6ClockSelection)); + + /* Configure the USART6 clock source */ + __HAL_RCC_USART6_CONFIG(PeriphClkInit->Usart6ClockSelection); + } + + /*-------------------------------------- UART7 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) + { + /* Check the parameters */ + assert_param(IS_RCC_UART7CLKSOURCE(PeriphClkInit->Uart7ClockSelection)); + + /* Configure the UART7 clock source */ + __HAL_RCC_UART7_CONFIG(PeriphClkInit->Uart7ClockSelection); + } + + /*-------------------------------------- UART8 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) + { + /* Check the parameters */ + assert_param(IS_RCC_UART8CLKSOURCE(PeriphClkInit->Uart8ClockSelection)); + + /* Configure the UART8 clock source */ + __HAL_RCC_UART8_CONFIG(PeriphClkInit->Uart8ClockSelection); + } + + /*-------------------------------------- CK48 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) + { + /* Check the parameters */ + assert_param(IS_RCC_CLK48SOURCE(PeriphClkInit->Clk48ClockSelection)); + + /* Configure the CLK48 source */ + __HAL_RCC_CLK48_CONFIG(PeriphClkInit->Clk48ClockSelection); + + /* Enable the PLLSAI when it's used as clock source for CK48 */ + if(PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP) + { + pllsaiused = 1; + } + } + + /*-------------------------------------- LPTIM1 Configuration -----------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) + { + /* Check the parameters */ + assert_param(IS_RCC_LPTIM1CLK(PeriphClkInit->Lptim1ClockSelection)); + + /* Configure the LTPIM1 clock source */ + __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection); + } + + /*------------------------------------- SDMMC1 Configuration ------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) + { + /* Check the parameters */ + assert_param(IS_RCC_SDMMC1CLKSOURCE(PeriphClkInit->Sdmmc1ClockSelection)); + + /* Configure the SDMMC1 clock source */ + __HAL_RCC_SDMMC1_CONFIG(PeriphClkInit->Sdmmc1ClockSelection); + } + + /*------------------------------------- SDMMC2 Configuration ------------------------------------*/ + if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2) + { + /* Check the parameters */ + assert_param(IS_RCC_SDMMC2CLKSOURCE(PeriphClkInit->Sdmmc2ClockSelection)); + + /* Configure the SDMMC2 clock source */ + __HAL_RCC_SDMMC2_CONFIG(PeriphClkInit->Sdmmc2ClockSelection); + } + + /*-------------------------------------- PLLI2S Configuration ---------------------------------*/ + /* PLLI2S is configured when a peripheral will use it as source clock : SAI1, SAI2 or I2S */ + if((plli2sused == 1) || ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S)) + { + /* Disable the PLLI2S */ + __HAL_RCC_PLLI2S_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLLI2S is disabled */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET) + { + if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + + /* check for common PLLI2S Parameters */ + assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN)); + + /*----------------- In Case of PLLI2S is selected as source clock for I2S -------------------*/ + if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) && (PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S))) + { + /* check for Parameters */ + assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR)); + + /* Read PLLI2SQ value from PLLI2SCFGR register (this value is not needed for I2S configuration) */ + tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos); + /* Configure the PLLI2S division factors */ + /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */ + /* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */ + __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , tmpreg0, PeriphClkInit->PLLI2S.PLLI2SR); + } + + /*----------------- In Case of PLLI2S is selected as source clock for SAI -------------------*/ + if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S)) || + ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S))) + { + /* Check for PLLI2S Parameters */ + assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ)); + /* Check for PLLI2S/DIVQ parameters */ + assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->PLLI2SDivQ)); + + /* Read PLLI2SP and PLLI2SR values from PLLI2SCFGR register (this value is not needed for SAI configuration) */ + tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos); + /* Configure the PLLI2S division factors */ + /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */ + /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */ + /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */ + __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, PeriphClkInit->PLLI2S.PLLI2SQ, tmpreg0); + + /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */ + __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLI2SDivQ); + } + + /*----------------- In Case of PLLI2S is just selected -----------------*/ + if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S) + { + /* Check for Parameters */ + assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR)); + assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ)); + + /* Configure the PLLI2S division factors */ + /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLI2SM) */ + __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SQ, PeriphClkInit->PLLI2S.PLLI2SR); + } + + /* Enable the PLLI2S */ + __HAL_RCC_PLLI2S_ENABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLLI2S is ready */ + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) + { + if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + } + + /*-------------------------------------- PLLSAI Configuration ---------------------------------*/ + /* PLLSAI is configured when a peripheral will use it as source clock : SAI1, SAI2, LTDC or CK48 */ + if(pllsaiused == 1) + { + /* Disable PLLSAI Clock */ + __HAL_RCC_PLLSAI_DISABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLLSAI is disabled */ + while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET) + { + if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + + /* Check the PLLSAI division factors */ + assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->PLLSAI.PLLSAIN)); + + /*----------------- In Case of PLLSAI is selected as source clock for SAI -------------------*/ + if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI)) ||\ + ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI))) + { + /* check for PLLSAIQ Parameter */ + assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->PLLSAI.PLLSAIQ)); + /* check for PLLSAI/DIVQ Parameter */ + assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->PLLSAIDivQ)); + + /* Read PLLSAIP value from PLLSAICFGR register (this value is not needed for SAI configuration) */ + tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos); + /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ + /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ + /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */ + __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg0, PeriphClkInit->PLLSAI.PLLSAIQ); + + /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */ + __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLSAIDivQ); + } + + /*----------------- In Case of PLLSAI is selected as source clock for CLK48 -------------------*/ + /* In Case of PLLI2S is selected as source clock for CK48 */ + if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) && (PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP)) + { + /* check for Parameters */ + assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->PLLSAI.PLLSAIP)); + /* Read PLLSAIQ and PLLSAIR value from PLLSAICFGR register (this value is not needed for CK48 configuration) */ + tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos); + + /* Configure the PLLSAI division factors */ + /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) x (PLLI2SN/PLLM) */ + /* 48CLK = f(PLLSAI clock output) = f(VCO clock) / PLLSAIP */ + __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , PeriphClkInit->PLLSAI.PLLSAIP, tmpreg0); + } + + /* Enable PLLSAI Clock */ + __HAL_RCC_PLLSAI_ENABLE(); + + /* Get Start Tick*/ + tickstart = HAL_GetTick(); + + /* Wait till PLLSAI is ready */ + while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) + { + if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + } + return HAL_OK; +} + +/** + * @brief Get the RCC_PeriphCLKInitTypeDef according to the internal + * RCC configuration registers. + * @param PeriphClkInit pointer to the configured RCC_PeriphCLKInitTypeDef structure + * @retval None + */ +void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +{ + uint32_t tempreg = 0; + + /* Set all possible values for the extended clock type parameter------------*/ + PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_I2S | RCC_PERIPHCLK_LPTIM1 |\ + RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 |\ + RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC |\ + RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 |\ + RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_USART1 |\ + RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 |\ + RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |\ + RCC_PERIPHCLK_USART6 | RCC_PERIPHCLK_UART7 |\ + RCC_PERIPHCLK_UART8 | RCC_PERIPHCLK_SDMMC1 |\ + RCC_PERIPHCLK_CLK48 | RCC_PERIPHCLK_SDMMC2; + + /* Get the PLLI2S Clock configuration -----------------------------------------------*/ + PeriphClkInit->PLLI2S.PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos); + PeriphClkInit->PLLI2S.PLLI2SQ = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos); + PeriphClkInit->PLLI2S.PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos); + + /* Get the PLLSAI Clock configuration -----------------------------------------------*/ + PeriphClkInit->PLLSAI.PLLSAIN = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLSAICFGR_PLLSAIN_Pos); + PeriphClkInit->PLLSAI.PLLSAIP = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos); + PeriphClkInit->PLLSAI.PLLSAIQ = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos); + + /* Get the PLLSAI/PLLI2S division factors -------------------------------------------*/ + PeriphClkInit->PLLI2SDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) >> RCC_DCKCFGR1_PLLI2SDIVQ_Pos); + PeriphClkInit->PLLSAIDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> RCC_DCKCFGR1_PLLSAIDIVQ_Pos); + + /* Get the SAI1 clock configuration ----------------------------------------------*/ + PeriphClkInit->Sai1ClockSelection = __HAL_RCC_GET_SAI1_SOURCE(); + + /* Get the SAI2 clock configuration ----------------------------------------------*/ + PeriphClkInit->Sai2ClockSelection = __HAL_RCC_GET_SAI2_SOURCE(); + + /* Get the I2S clock configuration ------------------------------------------*/ + PeriphClkInit->I2sClockSelection = __HAL_RCC_GET_I2SCLKSOURCE(); + + /* Get the I2C1 clock configuration ------------------------------------------*/ + PeriphClkInit->I2c1ClockSelection = __HAL_RCC_GET_I2C1_SOURCE(); + + /* Get the I2C2 clock configuration ------------------------------------------*/ + PeriphClkInit->I2c2ClockSelection = __HAL_RCC_GET_I2C2_SOURCE(); + + /* Get the I2C3 clock configuration ------------------------------------------*/ + PeriphClkInit->I2c3ClockSelection = __HAL_RCC_GET_I2C3_SOURCE(); + + /* Get the USART1 clock configuration ------------------------------------------*/ + PeriphClkInit->Usart1ClockSelection = __HAL_RCC_GET_USART1_SOURCE(); + + /* Get the USART2 clock configuration ------------------------------------------*/ + PeriphClkInit->Usart2ClockSelection = __HAL_RCC_GET_USART2_SOURCE(); + + /* Get the USART3 clock configuration ------------------------------------------*/ + PeriphClkInit->Usart3ClockSelection = __HAL_RCC_GET_USART3_SOURCE(); + + /* Get the UART4 clock configuration ------------------------------------------*/ + PeriphClkInit->Uart4ClockSelection = __HAL_RCC_GET_UART4_SOURCE(); + + /* Get the UART5 clock configuration ------------------------------------------*/ + PeriphClkInit->Uart5ClockSelection = __HAL_RCC_GET_UART5_SOURCE(); + + /* Get the USART6 clock configuration ------------------------------------------*/ + PeriphClkInit->Usart6ClockSelection = __HAL_RCC_GET_USART6_SOURCE(); + + /* Get the UART7 clock configuration ------------------------------------------*/ + PeriphClkInit->Uart7ClockSelection = __HAL_RCC_GET_UART7_SOURCE(); + + /* Get the UART8 clock configuration ------------------------------------------*/ + PeriphClkInit->Uart8ClockSelection = __HAL_RCC_GET_UART8_SOURCE(); + + /* Get the LPTIM1 clock configuration ------------------------------------------*/ + PeriphClkInit->Lptim1ClockSelection = __HAL_RCC_GET_LPTIM1_SOURCE(); + + /* Get the CK48 clock configuration -----------------------------------------------*/ + PeriphClkInit->Clk48ClockSelection = __HAL_RCC_GET_CLK48_SOURCE(); + + /* Get the SDMMC1 clock configuration -----------------------------------------------*/ + PeriphClkInit->Sdmmc1ClockSelection = __HAL_RCC_GET_SDMMC1_SOURCE(); + + /* Get the SDMMC2 clock configuration -----------------------------------------------*/ + PeriphClkInit->Sdmmc2ClockSelection = __HAL_RCC_GET_SDMMC2_SOURCE(); + + /* Get the RTC Clock configuration -----------------------------------------------*/ + tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE); + PeriphClkInit->RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL)); + + /* Get the TIM Prescaler configuration --------------------------------------------*/ + if ((RCC->DCKCFGR1 & RCC_DCKCFGR1_TIMPRE) == RESET) + { + PeriphClkInit->TIMPresSelection = RCC_TIMPRES_DESACTIVATED; + } + else + { + PeriphClkInit->TIMPresSelection = RCC_TIMPRES_ACTIVATED; + } +} +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */ + +/** + * @brief Return the peripheral clock frequency for a given peripheral(SAI..) + * @note Return 0 if peripheral clock identifier not managed by this API + * @param PeriphClk Peripheral clock identifier + * This parameter can be one of the following values: + * @arg RCC_PERIPHCLK_SAI1: SAI1 peripheral clock + * @arg RCC_PERIPHCLK_SAI2: SAI2 peripheral clock + * @retval Frequency in KHz + */ +uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk) +{ + uint32_t tmpreg = 0; + /* This variable is used to store the SAI clock frequency (value in Hz) */ + uint32_t frequency = 0; + /* This variable is used to store the VCO Input (value in Hz) */ + uint32_t vcoinput = 0; + /* This variable is used to store the SAI clock source */ + uint32_t saiclocksource = 0; + + if (PeriphClk == RCC_PERIPHCLK_SAI1) + { + saiclocksource = RCC->DCKCFGR1; + saiclocksource &= RCC_DCKCFGR1_SAI1SEL; + switch (saiclocksource) + { + case 0: /* PLLSAI is the clock source for SAI1 */ + { + /* Configure the PLLSAI division factor */ + /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ + if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) + { + /* In Case the PLL Source is HSI (Internal Clock) */ + vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)); + } + else + { + /* In Case the PLL Source is HSE (External Clock) */ + vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM))); + } + /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ + /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */ + tmpreg = (RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> 24; + frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg); + + /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */ + tmpreg = (((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> 8) + 1); + frequency = frequency/(tmpreg); + break; + } + case RCC_DCKCFGR1_SAI1SEL_0: /* PLLI2S is the clock source for SAI1 */ + { + /* Configure the PLLI2S division factor */ + /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */ + if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) + { + /* In Case the PLL Source is HSI (Internal Clock) */ + vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)); + } + else + { + /* In Case the PLL Source is HSE (External Clock) */ + vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM))); + } + + /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */ + /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */ + tmpreg = (RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> 24; + frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg); + + /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */ + tmpreg = ((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) + 1); + frequency = frequency/(tmpreg); + break; + } + case RCC_DCKCFGR1_SAI1SEL_1: /* External clock is the clock source for SAI1 */ + { + frequency = EXTERNAL_CLOCK_VALUE; + break; + } +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) + case RCC_DCKCFGR1_SAI1SEL: /* HSI or HSE is the clock source for SAI*/ + { + if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) + { + /* In Case the main PLL Source is HSI */ + frequency = HSI_VALUE; + } + else + { + /* In Case the main PLL Source is HSE */ + frequency = HSE_VALUE; + } + break; + } +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + default : + { + break; + } + } + } + + if (PeriphClk == RCC_PERIPHCLK_SAI2) + { + saiclocksource = RCC->DCKCFGR1; + saiclocksource &= RCC_DCKCFGR1_SAI2SEL; + switch (saiclocksource) + { + case 0: /* PLLSAI is the clock source for SAI*/ + { + /* Configure the PLLSAI division factor */ + /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ + if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) + { + /* In Case the PLL Source is HSI (Internal Clock) */ + vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)); + } + else + { + /* In Case the PLL Source is HSE (External Clock) */ + vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM))); + } + /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ + /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */ + tmpreg = (RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> 24; + frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg); + + /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */ + tmpreg = (((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> 8) + 1); + frequency = frequency/(tmpreg); + break; + } + case RCC_DCKCFGR1_SAI2SEL_0: /* PLLI2S is the clock source for SAI2 */ + { + /* Configure the PLLI2S division factor */ + /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */ + if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) + { + /* In Case the PLL Source is HSI (Internal Clock) */ + vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)); + } + else + { + /* In Case the PLL Source is HSE (External Clock) */ + vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM))); + } + + /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */ + /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */ + tmpreg = (RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> 24; + frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg); + + /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */ + tmpreg = ((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) + 1); + frequency = frequency/(tmpreg); + break; + } + case RCC_DCKCFGR1_SAI2SEL_1: /* External clock is the clock source for SAI2 */ + { + frequency = EXTERNAL_CLOCK_VALUE; + break; + } +#if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx) + case RCC_DCKCFGR1_SAI2SEL: /* HSI or HSE is the clock source for SAI2 */ + { + if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) + { + /* In Case the main PLL Source is HSI */ + frequency = HSI_VALUE; + } + else + { + /* In Case the main PLL Source is HSE */ + frequency = HSE_VALUE; + } + break; + } +#endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + default : + { + break; + } + } + } + + return frequency; +} + +/** + * @} + */ + +/** @defgroup RCCEx_Exported_Functions_Group2 Extended Clock management functions + * @brief Extended Clock management functions + * +@verbatim + =============================================================================== + ##### Extended clock management functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the + activation or deactivation of PLLI2S, PLLSAI. +@endverbatim + * @{ + */ + +/** + * @brief Enable PLLI2S. + * @param PLLI2SInit pointer to an RCC_PLLI2SInitTypeDef structure that + * contains the configuration information for the PLLI2S + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_EnablePLLI2S(RCC_PLLI2SInitTypeDef *PLLI2SInit) +{ + uint32_t tickstart; + + /* Check for parameters */ + assert_param(IS_RCC_PLLI2SN_VALUE(PLLI2SInit->PLLI2SN)); + assert_param(IS_RCC_PLLI2SR_VALUE(PLLI2SInit->PLLI2SR)); + assert_param(IS_RCC_PLLI2SQ_VALUE(PLLI2SInit->PLLI2SQ)); +#if defined(RCC_PLLI2SCFGR_PLLI2SP) + assert_param(IS_RCC_PLLI2SP_VALUE(PLLI2SInit->PLLI2SP)); +#endif /* RCC_PLLI2SCFGR_PLLI2SP */ + + /* Disable the PLLI2S */ + __HAL_RCC_PLLI2S_DISABLE(); + + /* Wait till PLLI2S is disabled */ + tickstart = HAL_GetTick(); + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET) + { + if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + + /* Configure the PLLI2S division factors */ +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) + /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) * PLLI2SN */ + /* I2SQCLK = PLLI2S_VCO / PLLI2SQ */ + /* I2SRCLK = PLLI2S_VCO / PLLI2SR */ + __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->PLLI2SN, PLLI2SInit->PLLI2SQ, PLLI2SInit->PLLI2SR); +#else + /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) * PLLI2SN */ + /* I2SPCLK = PLLI2S_VCO / PLLI2SP */ + /* I2SQCLK = PLLI2S_VCO / PLLI2SQ */ + /* I2SRCLK = PLLI2S_VCO / PLLI2SR */ + __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->PLLI2SN, PLLI2SInit->PLLI2SP, PLLI2SInit->PLLI2SQ, PLLI2SInit->PLLI2SR); +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */ + + /* Enable the PLLI2S */ + __HAL_RCC_PLLI2S_ENABLE(); + + /* Wait till PLLI2S is ready */ + tickstart = HAL_GetTick(); + while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) + { + if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + + return HAL_OK; +} + +/** + * @brief Disable PLLI2S. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_DisablePLLI2S(void) +{ + uint32_t tickstart; + + /* Disable the PLLI2S */ + __HAL_RCC_PLLI2S_DISABLE(); + + /* Wait till PLLI2S is disabled */ + tickstart = HAL_GetTick(); + while(READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) != RESET) + { + if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + + return HAL_OK; +} + +/** + * @brief Enable PLLSAI. + * @param PLLSAIInit pointer to an RCC_PLLSAIInitTypeDef structure that + * contains the configuration information for the PLLSAI + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_EnablePLLSAI(RCC_PLLSAIInitTypeDef *PLLSAIInit) +{ + uint32_t tickstart; + + /* Check for parameters */ + assert_param(IS_RCC_PLLSAIN_VALUE(PLLSAIInit->PLLSAIN)); + assert_param(IS_RCC_PLLSAIQ_VALUE(PLLSAIInit->PLLSAIQ)); + assert_param(IS_RCC_PLLSAIP_VALUE(PLLSAIInit->PLLSAIP)); +#if defined(RCC_PLLSAICFGR_PLLSAIR) + assert_param(IS_RCC_PLLSAIR_VALUE(PLLSAIInit->PLLSAIR)); +#endif /* RCC_PLLSAICFGR_PLLSAIR */ + + /* Disable the PLLSAI */ + __HAL_RCC_PLLSAI_DISABLE(); + + /* Wait till PLLSAI is disabled */ + tickstart = HAL_GetTick(); + while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET) + { + if((HAL_GetTick() - tickstart ) > PLLSAI_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + + /* Configure the PLLSAI division factors */ +#if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx) || defined (STM32F730xx) + /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) * PLLSAIN */ + /* SAIPCLK = PLLSAI_VCO / PLLSAIP */ + /* SAIQCLK = PLLSAI_VCO / PLLSAIQ */ + __HAL_RCC_PLLSAI_CONFIG(PLLSAIInit->PLLSAIN, PLLSAIInit->PLLSAIP, PLLSAIInit->PLLSAIQ); +#else + /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) * PLLSAIN */ + /* SAIPCLK = PLLSAI_VCO / PLLSAIP */ + /* SAIQCLK = PLLSAI_VCO / PLLSAIQ */ + /* SAIRCLK = PLLSAI_VCO / PLLSAIR */ + __HAL_RCC_PLLSAI_CONFIG(PLLSAIInit->PLLSAIN, PLLSAIInit->PLLSAIP, \ + PLLSAIInit->PLLSAIQ, PLLSAIInit->PLLSAIR); +#endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */ + + /* Enable the PLLSAI */ + __HAL_RCC_PLLSAI_ENABLE(); + + /* Wait till PLLSAI is ready */ + tickstart = HAL_GetTick(); + while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) + { + if((HAL_GetTick() - tickstart ) > PLLSAI_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + + return HAL_OK; +} + +/** + * @brief Disable PLLSAI. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_RCCEx_DisablePLLSAI(void) +{ + uint32_t tickstart; + + /* Disable the PLLSAI */ + __HAL_RCC_PLLSAI_DISABLE(); + + /* Wait till PLLSAI is disabled */ + tickstart = HAL_GetTick(); + while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET) + { + if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) + { + /* return in case of Timeout detected */ + return HAL_TIMEOUT; + } + } + + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_RCC_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c new file mode 100644 index 0000000..4b9e95d --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c @@ -0,0 +1,3224 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_sd.c + * @author MCD Application Team + * @brief SD card HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Secure Digital (SD) peripheral: + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral Control functions + * + Peripheral State functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + This driver implements a high level communication layer for read and write from/to + this memory. The needed STM32 hardware resources (SDMMC and GPIO) are performed by + the user in HAL_SD_MspInit() function (MSP layer). + Basically, the MSP layer configuration should be the same as we provide in the + examples. + You can easily tailor this configuration according to hardware resources. + + [..] + This driver is a generic layered driver for SDMMC memories which uses the HAL + SDMMC driver functions to interface with SD and uSD cards devices. + It is used as follows: + + (#)Initialize the SDMMC low level resources by implementing the HAL_SD_MspInit() API: + (##) Enable the SDMMC interface clock using __HAL_RCC_SDMMC_CLK_ENABLE(); + (##) SDMMC pins configuration for SD card + (+++) Enable the clock for the SDMMC GPIOs using the functions __HAL_RCC_GPIOx_CLK_ENABLE(); + (+++) Configure these SDMMC pins as alternate function pull-up using HAL_GPIO_Init() + and according to your pin assignment; + (##) DMA configuration if you need to use DMA process (HAL_SD_ReadBlocks_DMA() + and HAL_SD_WriteBlocks_DMA() APIs). + (+++) Enable the DMAx interface clock using __HAL_RCC_DMAx_CLK_ENABLE(); + (+++) Configure the DMA using the function HAL_DMA_Init() with predeclared and filled. + (##) NVIC configuration if you need to use interrupt process when using DMA transfer. + (+++) Configure the SDMMC and DMA interrupt priorities using functions + HAL_NVIC_SetPriority(); DMA priority is superior to SDMMC's priority + (+++) Enable the NVIC DMA and SDMMC IRQs using function HAL_NVIC_EnableIRQ() + (+++) SDMMC interrupts are managed using the macros __HAL_SD_ENABLE_IT() + and __HAL_SD_DISABLE_IT() inside the communication process. + (+++) SDMMC interrupts pending bits are managed using the macros __HAL_SD_GET_IT() + and __HAL_SD_CLEAR_IT() + (##) NVIC configuration if you need to use interrupt process (HAL_SD_ReadBlocks_IT() + and HAL_SD_WriteBlocks_IT() APIs). + (+++) Configure the SDMMC interrupt priorities using function HAL_NVIC_SetPriority(); + (+++) Enable the NVIC SDMMC IRQs using function HAL_NVIC_EnableIRQ() + (+++) SDMMC interrupts are managed using the macros __HAL_SD_ENABLE_IT() + and __HAL_SD_DISABLE_IT() inside the communication process. + (+++) SDMMC interrupts pending bits are managed using the macros __HAL_SD_GET_IT() + and __HAL_SD_CLEAR_IT() + (#) At this stage, you can perform SD read/write/erase operations after SD card initialization + + + *** SD Card Initialization and configuration *** + ================================================ + [..] + To initialize the SD Card, use the HAL_SD_Init() function. It Initializes + SDMMC Peripheral(STM32 side) and the SD Card, and put it into StandBy State (Ready for data transfer). + This function provide the following operations: + + (#) Apply the SD Card initialization process at 400KHz and check the SD Card + type (Standard Capacity or High Capacity). You can change or adapt this + frequency by adjusting the "ClockDiv" field. + The SD Card frequency (SDMMC_CK) is computed as follows: + + SDMMC_CK = SDMMCCLK / (ClockDiv + 2) + + In initialization mode and according to the SD Card standard, + make sure that the SDMMC_CK frequency doesn't exceed 400KHz. + + This phase of initialization is done through SDMMC_Init() and + SDMMC_PowerState_ON() SDMMC low level APIs. + + (#) Initialize the SD card. The API used is HAL_SD_InitCard(). + This phase allows the card initialization and identification + and check the SD Card type (Standard Capacity or High Capacity) + The initialization flow is compatible with SD standard. + + This API (HAL_SD_InitCard()) could be used also to reinitialize the card in case + of plug-off plug-in. + + (#) Configure the SD Card Data transfer frequency. You can change or adapt this + frequency by adjusting the "ClockDiv" field. + In transfer mode and according to the SD Card standard, make sure that the + SDMMC_CK frequency doesn't exceed 25MHz and 50MHz in High-speed mode switch. + To be able to use a frequency higher than 24MHz, you should use the SDMMC + peripheral in bypass mode. Refer to the corresponding reference manual + for more details. + + (#) Select the corresponding SD Card according to the address read with the step 2. + + (#) Configure the SD Card in wide bus mode: 4-bits data. + + *** SD Card Read operation *** + ============================== + [..] + (+) You can read from SD card in polling mode by using function HAL_SD_ReadBlocks(). + This function support only 512-bytes block length (the block size should be + chosen as 512 bytes). + You can choose either one block read operation or multiple block read operation + by adjusting the "NumberOfBlocks" parameter. + After this, you have to ensure that the transfer is done correctly. The check is done + through HAL_SD_GetCardState() function for SD card state. + + (+) You can read from SD card in DMA mode by using function HAL_SD_ReadBlocks_DMA(). + This function support only 512-bytes block length (the block size should be + chosen as 512 bytes). + You can choose either one block read operation or multiple block read operation + by adjusting the "NumberOfBlocks" parameter. + After this, you have to ensure that the transfer is done correctly. The check is done + through HAL_SD_GetCardState() function for SD card state. + You could also check the DMA transfer process through the SD Rx interrupt event. + + (+) You can read from SD card in Interrupt mode by using function HAL_SD_ReadBlocks_IT(). + This function support only 512-bytes block length (the block size should be + chosen as 512 bytes). + You can choose either one block read operation or multiple block read operation + by adjusting the "NumberOfBlocks" parameter. + After this, you have to ensure that the transfer is done correctly. The check is done + through HAL_SD_GetCardState() function for SD card state. + You could also check the IT transfer process through the SD Rx interrupt event. + + *** SD Card Write operation *** + =============================== + [..] + (+) You can write to SD card in polling mode by using function HAL_SD_WriteBlocks(). + This function support only 512-bytes block length (the block size should be + chosen as 512 bytes). + You can choose either one block read operation or multiple block read operation + by adjusting the "NumberOfBlocks" parameter. + After this, you have to ensure that the transfer is done correctly. The check is done + through HAL_SD_GetCardState() function for SD card state. + + (+) You can write to SD card in DMA mode by using function HAL_SD_WriteBlocks_DMA(). + This function support only 512-bytes block length (the block size should be + chosen as 512 bytes). + You can choose either one block read operation or multiple block read operation + by adjusting the "NumberOfBlocks" parameter. + After this, you have to ensure that the transfer is done correctly. The check is done + through HAL_SD_GetCardState() function for SD card state. + You could also check the DMA transfer process through the SD Tx interrupt event. + + (+) You can write to SD card in Interrupt mode by using function HAL_SD_WriteBlocks_IT(). + This function support only 512-bytes block length (the block size should be + chosen as 512 bytes). + You can choose either one block read operation or multiple block read operation + by adjusting the "NumberOfBlocks" parameter. + After this, you have to ensure that the transfer is done correctly. The check is done + through HAL_SD_GetCardState() function for SD card state. + You could also check the IT transfer process through the SD Tx interrupt event. + + *** SD card status *** + ====================== + [..] + (+) The SD Status contains status bits that are related to the SD Memory + Card proprietary features. To get SD card status use the HAL_SD_GetCardStatus(). + + *** SD card information *** + =========================== + [..] + (+) To get SD card information, you can use the function HAL_SD_GetCardInfo(). + It returns useful information about the SD card such as block size, card type, + block number ... + + *** SD card CSD register *** + ============================ + (+) The HAL_SD_GetCardCSD() API allows to get the parameters of the CSD register. + Some of the CSD parameters are useful for card initialization and identification. + + *** SD card CID register *** + ============================ + (+) The HAL_SD_GetCardCID() API allows to get the parameters of the CID register. + Some of the CSD parameters are useful for card initialization and identification. + + *** SD HAL driver macros list *** + ================================== + [..] + Below the list of most used macros in SD HAL driver. + + (+) __HAL_SD_ENABLE : Enable the SD device + (+) __HAL_SD_DISABLE : Disable the SD device + (+) __HAL_SD_DMA_ENABLE: Enable the SDMMC DMA transfer + (+) __HAL_SD_DMA_DISABLE: Disable the SDMMC DMA transfer + (+) __HAL_SD_ENABLE_IT: Enable the SD device interrupt + (+) __HAL_SD_DISABLE_IT: Disable the SD device interrupt + (+) __HAL_SD_GET_FLAG:Check whether the specified SD flag is set or not + (+) __HAL_SD_CLEAR_FLAG: Clear the SD's pending flags + + (@) You can refer to the SD HAL driver header file for more useful macros + + *** Callback registration *** + ============================================= + [..] + The compilation define USE_HAL_SD_REGISTER_CALLBACKS when set to 1 + allows the user to configure dynamically the driver callbacks. + + Use Functions HAL_SD_RegisterCallback() to register a user callback, + it allows to register following callbacks: + (+) TxCpltCallback : callback when a transmission transfer is completed. + (+) RxCpltCallback : callback when a reception transfer is completed. + (+) ErrorCallback : callback when error occurs. + (+) AbortCpltCallback : callback when abort is completed. + (+) MspInitCallback : SD MspInit. + (+) MspDeInitCallback : SD MspDeInit. + This function takes as parameters the HAL peripheral handle, the Callback ID + and a pointer to the user callback function. + + Use function HAL_SD_UnRegisterCallback() to reset a callback to the default + weak (surcharged) function. It allows to reset following callbacks: + (+) TxCpltCallback : callback when a transmission transfer is completed. + (+) RxCpltCallback : callback when a reception transfer is completed. + (+) ErrorCallback : callback when error occurs. + (+) AbortCpltCallback : callback when abort is completed. + (+) MspInitCallback : SD MspInit. + (+) MspDeInitCallback : SD MspDeInit. + This function) takes as parameters the HAL peripheral handle and the Callback ID. + + By default, after the HAL_SD_Init and if the state is HAL_SD_STATE_RESET + all callbacks are reset to the corresponding legacy weak (surcharged) functions. + Exception done for MspInit and MspDeInit callbacks that are respectively + reset to the legacy weak (surcharged) functions in the HAL_SD_Init + and HAL_SD_DeInit only when these callbacks are null (not registered beforehand). + If not, MspInit or MspDeInit are not null, the HAL_SD_Init and HAL_SD_DeInit + keep and use the user MspInit/MspDeInit callbacks (registered beforehand) + + Callbacks can be registered/unregistered in READY state only. + Exception done for MspInit/MspDeInit callbacks that can be registered/unregistered + in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used + during the Init/DeInit. + In that case first register the MspInit/MspDeInit user callbacks + using HAL_SD_RegisterCallback before calling HAL_SD_DeInit + or HAL_SD_Init function. + + When The compilation define USE_HAL_SD_REGISTER_CALLBACKS is set to 0 or + not defined, the callback registering feature is not available + and weak (surcharged) callbacks are used. + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +#if defined(SDMMC1) + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @addtogroup SD + * @{ + */ + +#ifdef HAL_SD_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/** @addtogroup SD_Private_Defines + * @{ + */ + +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/** @defgroup SD_Private_Functions SD Private Functions + * @{ + */ +static uint32_t SD_InitCard(SD_HandleTypeDef *hsd); +static uint32_t SD_PowerON(SD_HandleTypeDef *hsd); +static uint32_t SD_SendSDStatus(SD_HandleTypeDef *hsd, uint32_t *pSDstatus); +static uint32_t SD_SendStatus(SD_HandleTypeDef *hsd, uint32_t *pCardStatus); +static uint32_t SD_WideBus_Enable(SD_HandleTypeDef *hsd); +static uint32_t SD_WideBus_Disable(SD_HandleTypeDef *hsd); +static uint32_t SD_FindSCR(SD_HandleTypeDef *hsd, uint32_t *pSCR); +static void SD_PowerOFF(SD_HandleTypeDef *hsd); +static void SD_Write_IT(SD_HandleTypeDef *hsd); +static void SD_Read_IT(SD_HandleTypeDef *hsd); +static void SD_DMATransmitCplt(DMA_HandleTypeDef *hdma); +static void SD_DMAReceiveCplt(DMA_HandleTypeDef *hdma); +static void SD_DMAError(DMA_HandleTypeDef *hdma); +static void SD_DMATxAbort(DMA_HandleTypeDef *hdma); +static void SD_DMARxAbort(DMA_HandleTypeDef *hdma); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup SD_Exported_Functions + * @{ + */ + +/** @addtogroup SD_Exported_Functions_Group1 + * @brief Initialization and de-initialization functions + * +@verbatim + ============================================================================== + ##### Initialization and de-initialization functions ##### + ============================================================================== + [..] + This section provides functions allowing to initialize/de-initialize the SD + card device to be ready for use. + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the SD according to the specified parameters in the + SD_HandleTypeDef and create the associated handle. + * @param hsd: Pointer to the SD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_Init(SD_HandleTypeDef *hsd) +{ + /* Check the SD handle allocation */ + if(hsd == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_SDMMC_ALL_INSTANCE(hsd->Instance)); + assert_param(IS_SDMMC_CLOCK_EDGE(hsd->Init.ClockEdge)); + assert_param(IS_SDMMC_CLOCK_BYPASS(hsd->Init.ClockBypass)); + assert_param(IS_SDMMC_CLOCK_POWER_SAVE(hsd->Init.ClockPowerSave)); + assert_param(IS_SDMMC_BUS_WIDE(hsd->Init.BusWide)); + assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(hsd->Init.HardwareFlowControl)); + assert_param(IS_SDMMC_CLKDIV(hsd->Init.ClockDiv)); + + if(hsd->State == HAL_SD_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + hsd->Lock = HAL_UNLOCKED; +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + /* Reset Callback pointers in HAL_SD_STATE_RESET only */ + hsd->TxCpltCallback = HAL_SD_TxCpltCallback; + hsd->RxCpltCallback = HAL_SD_RxCpltCallback; + hsd->ErrorCallback = HAL_SD_ErrorCallback; + hsd->AbortCpltCallback = HAL_SD_AbortCallback; + + if(hsd->MspInitCallback == NULL) + { + hsd->MspInitCallback = HAL_SD_MspInit; + } + + /* Init the low level hardware */ + hsd->MspInitCallback(hsd); +#else + /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + HAL_SD_MspInit(hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + } + + hsd->State = HAL_SD_STATE_BUSY; + + /* Initialize the Card parameters */ + if (HAL_SD_InitCard(hsd) != HAL_OK) + { + return HAL_ERROR; + } + + /* Initialize the error code */ + hsd->ErrorCode = HAL_SD_ERROR_NONE; + + /* Initialize the SD operation */ + hsd->Context = SD_CONTEXT_NONE; + + /* Initialize the SD state */ + hsd->State = HAL_SD_STATE_READY; + + return HAL_OK; +} + +/** + * @brief Initializes the SD Card. + * @param hsd: Pointer to SD handle + * @note This function initializes the SD card. It could be used when a card + re-initialization is needed. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_InitCard(SD_HandleTypeDef *hsd) +{ + uint32_t errorstate; + HAL_StatusTypeDef status; + SD_InitTypeDef Init; + + /* Default SDMMC peripheral configuration for SD card initialization */ + Init.ClockEdge = SDMMC_CLOCK_EDGE_RISING; + Init.ClockBypass = SDMMC_CLOCK_BYPASS_DISABLE; + Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE; + Init.BusWide = SDMMC_BUS_WIDE_1B; + Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE; + Init.ClockDiv = SDMMC_INIT_CLK_DIV; + + /* Initialize SDMMC peripheral interface with default configuration */ + status = SDMMC_Init(hsd->Instance, Init); + if(status != HAL_OK) + { + return HAL_ERROR; + } + + /* Disable SDMMC Clock */ + __HAL_SD_DISABLE(hsd); + + /* Set Power State to ON */ + (void)SDMMC_PowerState_ON(hsd->Instance); + + /* Enable SDMMC Clock */ + __HAL_SD_ENABLE(hsd); + + /* Required power up waiting time before starting the SD initialization sequence */ + HAL_Delay(2); + + /* Identify card operating voltage */ + errorstate = SD_PowerON(hsd); + if(errorstate != HAL_SD_ERROR_NONE) + { + hsd->State = HAL_SD_STATE_READY; + hsd->ErrorCode |= errorstate; + return HAL_ERROR; + } + + /* Card initialization */ + errorstate = SD_InitCard(hsd); + if(errorstate != HAL_SD_ERROR_NONE) + { + hsd->State = HAL_SD_STATE_READY; + hsd->ErrorCode |= errorstate; + return HAL_ERROR; + } + + /* Set Block Size for Card */ + errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE); + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + return HAL_ERROR; + } + + return HAL_OK; +} + +/** + * @brief De-Initializes the SD card. + * @param hsd: Pointer to SD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_DeInit(SD_HandleTypeDef *hsd) +{ + /* Check the SD handle allocation */ + if(hsd == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_SDMMC_ALL_INSTANCE(hsd->Instance)); + + hsd->State = HAL_SD_STATE_BUSY; + + /* Set SD power state to off */ + SD_PowerOFF(hsd); + +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + if(hsd->MspDeInitCallback == NULL) + { + hsd->MspDeInitCallback = HAL_SD_MspDeInit; + } + + /* DeInit the low level hardware */ + hsd->MspDeInitCallback(hsd); +#else + /* De-Initialize the MSP layer */ + HAL_SD_MspDeInit(hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + + hsd->ErrorCode = HAL_SD_ERROR_NONE; + hsd->State = HAL_SD_STATE_RESET; + + return HAL_OK; +} + + +/** + * @brief Initializes the SD MSP. + * @param hsd: Pointer to SD handle + * @retval None + */ +__weak void HAL_SD_MspInit(SD_HandleTypeDef *hsd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hsd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SD_MspInit could be implemented in the user file + */ +} + +/** + * @brief De-Initialize SD MSP. + * @param hsd: Pointer to SD handle + * @retval None + */ +__weak void HAL_SD_MspDeInit(SD_HandleTypeDef *hsd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hsd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SD_MspDeInit could be implemented in the user file + */ +} + +/** + * @} + */ + +/** @addtogroup SD_Exported_Functions_Group2 + * @brief Data transfer functions + * +@verbatim + ============================================================================== + ##### IO operation functions ##### + ============================================================================== + [..] + This subsection provides a set of functions allowing to manage the data + transfer from/to SD card. + +@endverbatim + * @{ + */ + +/** + * @brief Reads block(s) from a specified address in a card. The Data transfer + * is managed by polling mode. + * @note This API should be followed by a check on the card state through + * HAL_SD_GetCardState(). + * @param hsd: Pointer to SD handle + * @param pData: pointer to the buffer that will contain the received data + * @param BlockAdd: Block Address from where data is to be read + * @param NumberOfBlocks: Number of SD blocks to read + * @param Timeout: Specify timeout value + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks, uint32_t Timeout) +{ + SDMMC_DataInitTypeDef config; + uint32_t errorstate; + uint32_t tickstart = HAL_GetTick(); + uint32_t count, data, dataremaining; + uint32_t add = BlockAdd; + uint8_t *tempbuff = pData; + + if(NULL == pData) + { + hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + return HAL_ERROR; + } + + if(hsd->State == HAL_SD_STATE_READY) + { + hsd->ErrorCode = HAL_SD_ERROR_NONE; + + if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) + { + hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + return HAL_ERROR; + } + + hsd->State = HAL_SD_STATE_BUSY; + + /* Initialize data control register */ + hsd->Instance->DCTRL = 0U; + + if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + { + add *= 512U; + } + + /* Configure the SD DPSM (Data Path State Machine) */ + config.DataTimeOut = SDMMC_DATATIMEOUT; + config.DataLength = NumberOfBlocks * BLOCKSIZE; + config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + config.DPSM = SDMMC_DPSM_ENABLE; + (void)SDMMC_ConfigData(hsd->Instance, &config); + + /* Read block(s) in polling mode */ + if(NumberOfBlocks > 1U) + { + hsd->Context = SD_CONTEXT_READ_MULTIPLE_BLOCK; + + /* Read Multi Block command */ + errorstate = SDMMC_CmdReadMultiBlock(hsd->Instance, add); + } + else + { + hsd->Context = SD_CONTEXT_READ_SINGLE_BLOCK; + + /* Read Single Block command */ + errorstate = SDMMC_CmdReadSingleBlock(hsd->Instance, add); + } + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + + /* Poll on SDMMC flags */ + dataremaining = config.DataLength; + while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_DATAEND)) + { + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXFIFOHF) && (dataremaining > 0U)) + { + /* Read data from SDMMC Rx FIFO */ + for(count = 0U; count < 8U; count++) + { + data = SDMMC_ReadFIFO(hsd->Instance); + *tempbuff = (uint8_t)(data & 0xFFU); + tempbuff++; + dataremaining--; + *tempbuff = (uint8_t)((data >> 8U) & 0xFFU); + tempbuff++; + dataremaining--; + *tempbuff = (uint8_t)((data >> 16U) & 0xFFU); + tempbuff++; + dataremaining--; + *tempbuff = (uint8_t)((data >> 24U) & 0xFFU); + tempbuff++; + dataremaining--; + } + } + + if(((HAL_GetTick()-tickstart) >= Timeout) || (Timeout == 0U)) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_TIMEOUT; + hsd->State= HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_TIMEOUT; + } + } + + /* Send stop transmission command in case of multiblock read */ + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) + { + if(hsd->SdCard.CardType != CARD_SECURED) + { + /* Send stop transmission command */ + errorstate = SDMMC_CmdStopTransfer(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + } + } + + /* Get error state */ + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DTIMEOUT)) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_DATA_TIMEOUT; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL)) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_DATA_CRC_FAIL; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR)) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_RX_OVERRUN; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + else + { + /* Nothing to do */ + } + + /* Empty FIFO if there is still any data */ + while ((__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXDAVL)) && (dataremaining > 0U)) + { + data = SDMMC_ReadFIFO(hsd->Instance); + *tempbuff = (uint8_t)(data & 0xFFU); + tempbuff++; + dataremaining--; + *tempbuff = (uint8_t)((data >> 8U) & 0xFFU); + tempbuff++; + dataremaining--; + *tempbuff = (uint8_t)((data >> 16U) & 0xFFU); + tempbuff++; + dataremaining--; + *tempbuff = (uint8_t)((data >> 24U) & 0xFFU); + tempbuff++; + dataremaining--; + + if(((HAL_GetTick()-tickstart) >= Timeout) || (Timeout == 0U)) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_TIMEOUT; + hsd->State= HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + } + + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + hsd->State = HAL_SD_STATE_READY; + + return HAL_OK; + } + else + { + hsd->ErrorCode |= HAL_SD_ERROR_BUSY; + return HAL_ERROR; + } +} + +/** + * @brief Allows to write block(s) to a specified address in a card. The Data + * transfer is managed by polling mode. + * @note This API should be followed by a check on the card state through + * HAL_SD_GetCardState(). + * @param hsd: Pointer to SD handle + * @param pData: pointer to the buffer that will contain the data to transmit + * @param BlockAdd: Block Address where data will be written + * @param NumberOfBlocks: Number of SD blocks to write + * @param Timeout: Specify timeout value + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks, uint32_t Timeout) +{ + SDMMC_DataInitTypeDef config; + uint32_t errorstate; + uint32_t tickstart = HAL_GetTick(); + uint32_t count, data, dataremaining; + uint32_t add = BlockAdd; + uint8_t *tempbuff = pData; + + if(NULL == pData) + { + hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + return HAL_ERROR; + } + + if(hsd->State == HAL_SD_STATE_READY) + { + hsd->ErrorCode = HAL_SD_ERROR_NONE; + + if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) + { + hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + return HAL_ERROR; + } + + hsd->State = HAL_SD_STATE_BUSY; + + /* Initialize data control register */ + hsd->Instance->DCTRL = 0U; + + if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + { + add *= 512U; + } + + /* Configure the SD DPSM (Data Path State Machine) */ + config.DataTimeOut = SDMMC_DATATIMEOUT; + config.DataLength = NumberOfBlocks * BLOCKSIZE; + config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; + config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + config.DPSM = SDMMC_DPSM_ENABLE; + (void)SDMMC_ConfigData(hsd->Instance, &config); + + /* Write Blocks in Polling mode */ + if(NumberOfBlocks > 1U) + { + hsd->Context = SD_CONTEXT_WRITE_MULTIPLE_BLOCK; + + /* Write Multi Block command */ + errorstate = SDMMC_CmdWriteMultiBlock(hsd->Instance, add); + } + else + { + hsd->Context = SD_CONTEXT_WRITE_SINGLE_BLOCK; + + /* Write Single Block command */ + errorstate = SDMMC_CmdWriteSingleBlock(hsd->Instance, add); + } + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + + /* Write block(s) in polling mode */ + dataremaining = config.DataLength; + while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXUNDERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_DATAEND)) + { + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXFIFOHE) && (dataremaining > 0U)) + { + /* Write data to SDMMC Tx FIFO */ + for(count = 0U; count < 8U; count++) + { + data = (uint32_t)(*tempbuff); + tempbuff++; + dataremaining--; + data |= ((uint32_t)(*tempbuff) << 8U); + tempbuff++; + dataremaining--; + data |= ((uint32_t)(*tempbuff) << 16U); + tempbuff++; + dataremaining--; + data |= ((uint32_t)(*tempbuff) << 24U); + tempbuff++; + dataremaining--; + (void)SDMMC_WriteFIFO(hsd->Instance, &data); + } + } + + if(((HAL_GetTick()-tickstart) >= Timeout) || (Timeout == 0U)) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_TIMEOUT; + } + } + + /* Send stop transmission command in case of multiblock write */ + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) + { + if(hsd->SdCard.CardType != CARD_SECURED) + { + /* Send stop transmission command */ + errorstate = SDMMC_CmdStopTransfer(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + } + } + + /* Get error state */ + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DTIMEOUT)) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_DATA_TIMEOUT; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL)) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_DATA_CRC_FAIL; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXUNDERR)) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_TX_UNDERRUN; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + else + { + /* Nothing to do */ + } + + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + hsd->State = HAL_SD_STATE_READY; + + return HAL_OK; + } + else + { + hsd->ErrorCode |= HAL_SD_ERROR_BUSY; + return HAL_ERROR; + } +} + +/** + * @brief Reads block(s) from a specified address in a card. The Data transfer + * is managed in interrupt mode. + * @note This API should be followed by a check on the card state through + * HAL_SD_GetCardState(). + * @note You could also check the IT transfer process through the SD Rx + * interrupt event. + * @param hsd: Pointer to SD handle + * @param pData: Pointer to the buffer that will contain the received data + * @param BlockAdd: Block Address from where data is to be read + * @param NumberOfBlocks: Number of blocks to read. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_ReadBlocks_IT(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks) +{ + SDMMC_DataInitTypeDef config; + uint32_t errorstate; + uint32_t add = BlockAdd; + + if(NULL == pData) + { + hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + return HAL_ERROR; + } + + if(hsd->State == HAL_SD_STATE_READY) + { + hsd->ErrorCode = HAL_SD_ERROR_NONE; + + if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) + { + hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + return HAL_ERROR; + } + + hsd->State = HAL_SD_STATE_BUSY; + + /* Initialize data control register */ + hsd->Instance->DCTRL = 0U; + + hsd->pRxBuffPtr = pData; + hsd->RxXferSize = BLOCKSIZE * NumberOfBlocks; + + __HAL_SD_ENABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DATAEND | SDMMC_FLAG_RXFIFOHF)); + + if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + { + add *= 512U; + } + + /* Configure the SD DPSM (Data Path State Machine) */ + config.DataTimeOut = SDMMC_DATATIMEOUT; + config.DataLength = BLOCKSIZE * NumberOfBlocks; + config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + config.DPSM = SDMMC_DPSM_ENABLE; + (void)SDMMC_ConfigData(hsd->Instance, &config); + + /* Read Blocks in IT mode */ + if(NumberOfBlocks > 1U) + { + hsd->Context = (SD_CONTEXT_READ_MULTIPLE_BLOCK | SD_CONTEXT_IT); + + /* Read Multi Block command */ + errorstate = SDMMC_CmdReadMultiBlock(hsd->Instance, add); + } + else + { + hsd->Context = (SD_CONTEXT_READ_SINGLE_BLOCK | SD_CONTEXT_IT); + + /* Read Single Block command */ + errorstate = SDMMC_CmdReadSingleBlock(hsd->Instance, add); + } + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Writes block(s) to a specified address in a card. The Data transfer + * is managed in interrupt mode. + * @note This API should be followed by a check on the card state through + * HAL_SD_GetCardState(). + * @note You could also check the IT transfer process through the SD Tx + * interrupt event. + * @param hsd: Pointer to SD handle + * @param pData: Pointer to the buffer that will contain the data to transmit + * @param BlockAdd: Block Address where data will be written + * @param NumberOfBlocks: Number of blocks to write + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_WriteBlocks_IT(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks) +{ + SDMMC_DataInitTypeDef config; + uint32_t errorstate; + uint32_t add = BlockAdd; + + if(NULL == pData) + { + hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + return HAL_ERROR; + } + + if(hsd->State == HAL_SD_STATE_READY) + { + hsd->ErrorCode = HAL_SD_ERROR_NONE; + + if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) + { + hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + return HAL_ERROR; + } + + hsd->State = HAL_SD_STATE_BUSY; + + /* Initialize data control register */ + hsd->Instance->DCTRL = 0U; + + hsd->pTxBuffPtr = pData; + hsd->TxXferSize = BLOCKSIZE * NumberOfBlocks; + + /* Enable transfer interrupts */ + __HAL_SD_ENABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_DATAEND | SDMMC_FLAG_TXFIFOHE)); + + if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + { + add *= 512U; + } + + /* Write Blocks in Polling mode */ + if(NumberOfBlocks > 1U) + { + hsd->Context = (SD_CONTEXT_WRITE_MULTIPLE_BLOCK| SD_CONTEXT_IT); + + /* Write Multi Block command */ + errorstate = SDMMC_CmdWriteMultiBlock(hsd->Instance, add); + } + else + { + hsd->Context = (SD_CONTEXT_WRITE_SINGLE_BLOCK | SD_CONTEXT_IT); + + /* Write Single Block command */ + errorstate = SDMMC_CmdWriteSingleBlock(hsd->Instance, add); + } + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + + /* Configure the SD DPSM (Data Path State Machine) */ + config.DataTimeOut = SDMMC_DATATIMEOUT; + config.DataLength = BLOCKSIZE * NumberOfBlocks; + config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; + config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + config.DPSM = SDMMC_DPSM_ENABLE; + (void)SDMMC_ConfigData(hsd->Instance, &config); + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Reads block(s) from a specified address in a card. The Data transfer + * is managed by DMA mode. + * @note This API should be followed by a check on the card state through + * HAL_SD_GetCardState(). + * @note You could also check the DMA transfer process through the SD Rx + * interrupt event. + * @param hsd: Pointer SD handle + * @param pData: Pointer to the buffer that will contain the received data + * @param BlockAdd: Block Address from where data is to be read + * @param NumberOfBlocks: Number of blocks to read. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks) +{ + SDMMC_DataInitTypeDef config; + uint32_t errorstate; + uint32_t add = BlockAdd; + + if(NULL == pData) + { + hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + return HAL_ERROR; + } + + if(hsd->State == HAL_SD_STATE_READY) + { + hsd->ErrorCode = HAL_SD_ERROR_NONE; + + if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) + { + hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + return HAL_ERROR; + } + + hsd->State = HAL_SD_STATE_BUSY; + + /* Initialize data control register */ + hsd->Instance->DCTRL = 0U; + + __HAL_SD_ENABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DATAEND)); + + /* Set the DMA transfer complete callback */ + hsd->hdmarx->XferCpltCallback = SD_DMAReceiveCplt; + + /* Set the DMA error callback */ + hsd->hdmarx->XferErrorCallback = SD_DMAError; + + /* Set the DMA Abort callback */ + hsd->hdmarx->XferAbortCallback = NULL; + + /* Force DMA Direction */ + hsd->hdmarx->Init.Direction = DMA_PERIPH_TO_MEMORY; + MODIFY_REG(hsd->hdmarx->Instance->CR, DMA_SxCR_DIR, hsd->hdmarx->Init.Direction); + + /* Enable the DMA Channel */ + if(HAL_DMA_Start_IT(hsd->hdmarx, (uint32_t)&hsd->Instance->FIFO, (uint32_t)pData, (uint32_t)(BLOCKSIZE * NumberOfBlocks)/4U) != HAL_OK) + { + __HAL_SD_DISABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DATAEND)); + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_DMA; + hsd->State = HAL_SD_STATE_READY; + return HAL_ERROR; + } + else + { + /* Enable SD DMA transfer */ + __HAL_SD_DMA_ENABLE(hsd); + + if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + { + add *= 512U; + } + + /* Configure the SD DPSM (Data Path State Machine) */ + config.DataTimeOut = SDMMC_DATATIMEOUT; + config.DataLength = BLOCKSIZE * NumberOfBlocks; + config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + config.DPSM = SDMMC_DPSM_ENABLE; + (void)SDMMC_ConfigData(hsd->Instance, &config); + + /* Read Blocks in DMA mode */ + if(NumberOfBlocks > 1U) + { + hsd->Context = (SD_CONTEXT_READ_MULTIPLE_BLOCK | SD_CONTEXT_DMA); + + /* Read Multi Block command */ + errorstate = SDMMC_CmdReadMultiBlock(hsd->Instance, add); + } + else + { + hsd->Context = (SD_CONTEXT_READ_SINGLE_BLOCK | SD_CONTEXT_DMA); + + /* Read Single Block command */ + errorstate = SDMMC_CmdReadSingleBlock(hsd->Instance, add); + } + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + + return HAL_OK; + } + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Writes block(s) to a specified address in a card. The Data transfer + * is managed by DMA mode. + * @note This API should be followed by a check on the card state through + * HAL_SD_GetCardState(). + * @note You could also check the DMA transfer process through the SD Tx + * interrupt event. + * @param hsd: Pointer to SD handle + * @param pData: Pointer to the buffer that will contain the data to transmit + * @param BlockAdd: Block Address where data will be written + * @param NumberOfBlocks: Number of blocks to write + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint32_t NumberOfBlocks) +{ + SDMMC_DataInitTypeDef config; + uint32_t errorstate; + uint32_t add = BlockAdd; + + if(NULL == pData) + { + hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + return HAL_ERROR; + } + + if(hsd->State == HAL_SD_STATE_READY) + { + hsd->ErrorCode = HAL_SD_ERROR_NONE; + + if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) + { + hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + return HAL_ERROR; + } + + hsd->State = HAL_SD_STATE_BUSY; + + /* Initialize data control register */ + hsd->Instance->DCTRL = 0U; + + /* Enable SD Error interrupts */ + __HAL_SD_ENABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR)); + + /* Set the DMA transfer complete callback */ + hsd->hdmatx->XferCpltCallback = SD_DMATransmitCplt; + + /* Set the DMA error callback */ + hsd->hdmatx->XferErrorCallback = SD_DMAError; + + /* Set the DMA Abort callback */ + hsd->hdmatx->XferAbortCallback = NULL; + + if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + { + add *= 512U; + } + + /* Write Blocks in Polling mode */ + if(NumberOfBlocks > 1U) + { + hsd->Context = (SD_CONTEXT_WRITE_MULTIPLE_BLOCK | SD_CONTEXT_DMA); + + /* Write Multi Block command */ + errorstate = SDMMC_CmdWriteMultiBlock(hsd->Instance, add); + } + else + { + hsd->Context = (SD_CONTEXT_WRITE_SINGLE_BLOCK | SD_CONTEXT_DMA); + + /* Write Single Block command */ + errorstate = SDMMC_CmdWriteSingleBlock(hsd->Instance, add); + } + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + + /* Enable SDMMC DMA transfer */ + __HAL_SD_DMA_ENABLE(hsd); + + /* Force DMA Direction */ + hsd->hdmatx->Init.Direction = DMA_MEMORY_TO_PERIPH; + MODIFY_REG(hsd->hdmatx->Instance->CR, DMA_SxCR_DIR, hsd->hdmatx->Init.Direction); + + /* Enable the DMA Channel */ + if(HAL_DMA_Start_IT(hsd->hdmatx, (uint32_t)pData, (uint32_t)&hsd->Instance->FIFO, (uint32_t)(BLOCKSIZE * NumberOfBlocks)/4U) != HAL_OK) + { + __HAL_SD_DISABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR)); + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_DMA; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + return HAL_ERROR; + } + else + { + /* Configure the SD DPSM (Data Path State Machine) */ + config.DataTimeOut = SDMMC_DATATIMEOUT; + config.DataLength = BLOCKSIZE * NumberOfBlocks; + config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; + config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + config.DPSM = SDMMC_DPSM_ENABLE; + (void)SDMMC_ConfigData(hsd->Instance, &config); + + return HAL_OK; + } + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief Erases the specified memory area of the given SD card. + * @note This API should be followed by a check on the card state through + * HAL_SD_GetCardState(). + * @param hsd: Pointer to SD handle + * @param BlockStartAdd: Start Block address + * @param BlockEndAdd: End Block address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_Erase(SD_HandleTypeDef *hsd, uint32_t BlockStartAdd, uint32_t BlockEndAdd) +{ + uint32_t errorstate; + uint32_t start_add = BlockStartAdd; + uint32_t end_add = BlockEndAdd; + + if(hsd->State == HAL_SD_STATE_READY) + { + hsd->ErrorCode = HAL_SD_ERROR_NONE; + + if(end_add < start_add) + { + hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + return HAL_ERROR; + } + + if(end_add > (hsd->SdCard.LogBlockNbr)) + { + hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + return HAL_ERROR; + } + + hsd->State = HAL_SD_STATE_BUSY; + + /* Check if the card command class supports erase command */ + if(((hsd->SdCard.Class) & SDMMC_CCCC_ERASE) == 0U) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_REQUEST_NOT_APPLICABLE; + hsd->State = HAL_SD_STATE_READY; + return HAL_ERROR; + } + + if((SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_LOCK_UNLOCK_FAILED; + hsd->State = HAL_SD_STATE_READY; + return HAL_ERROR; + } + + /* Get start and end block for high capacity cards */ + if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + { + start_add *= 512U; + end_add *= 512U; + } + + /* According to sd-card spec 1.0 ERASE_GROUP_START (CMD32) and erase_group_end(CMD33) */ + if(hsd->SdCard.CardType != CARD_SECURED) + { + /* Send CMD32 SD_ERASE_GRP_START with argument as addr */ + errorstate = SDMMC_CmdSDEraseStartAdd(hsd->Instance, start_add); + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + return HAL_ERROR; + } + + /* Send CMD33 SD_ERASE_GRP_END with argument as addr */ + errorstate = SDMMC_CmdSDEraseEndAdd(hsd->Instance, end_add); + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + return HAL_ERROR; + } + } + + /* Send CMD38 ERASE */ + errorstate = SDMMC_CmdErase(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + return HAL_ERROR; + } + + hsd->State = HAL_SD_STATE_READY; + + return HAL_OK; + } + else + { + return HAL_BUSY; + } +} + +/** + * @brief This function handles SD card interrupt request. + * @param hsd: Pointer to SD handle + * @retval None + */ +void HAL_SD_IRQHandler(SD_HandleTypeDef *hsd) +{ + uint32_t errorstate; + uint32_t context = hsd->Context; + + /* Check for SDMMC interrupt flags */ + if((__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXFIFOHF) != RESET) && ((context & SD_CONTEXT_IT) != 0U)) + { + SD_Read_IT(hsd); + } + + else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DATAEND) != RESET) + { + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_FLAG_DATAEND); + + __HAL_SD_DISABLE_IT(hsd, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ + SDMMC_IT_TXUNDERR | SDMMC_IT_RXOVERR | SDMMC_IT_TXFIFOHE |\ + SDMMC_IT_RXFIFOHF); + + hsd->Instance->DCTRL &= ~(SDMMC_DCTRL_DTEN); + + if((context & SD_CONTEXT_IT) != 0U) + { + if(((context & SD_CONTEXT_READ_MULTIPLE_BLOCK) != 0U) || ((context & SD_CONTEXT_WRITE_MULTIPLE_BLOCK) != 0U)) + { + errorstate = SDMMC_CmdStopTransfer(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + hsd->ErrorCode |= errorstate; +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + hsd->ErrorCallback(hsd); +#else + HAL_SD_ErrorCallback(hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + } + } + + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + if(((context & SD_CONTEXT_READ_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_READ_MULTIPLE_BLOCK) != 0U)) + { +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + hsd->RxCpltCallback(hsd); +#else + HAL_SD_RxCpltCallback(hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + } + else + { +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + hsd->TxCpltCallback(hsd); +#else + HAL_SD_TxCpltCallback(hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + } + } + else if((context & SD_CONTEXT_DMA) != 0U) + { + if((context & SD_CONTEXT_WRITE_MULTIPLE_BLOCK) != 0U) + { + errorstate = SDMMC_CmdStopTransfer(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + hsd->ErrorCode |= errorstate; +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + hsd->ErrorCallback(hsd); +#else + HAL_SD_ErrorCallback(hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + } + } + if(((context & SD_CONTEXT_READ_SINGLE_BLOCK) == 0U) && ((context & SD_CONTEXT_READ_MULTIPLE_BLOCK) == 0U)) + { + /* Disable the DMA transfer for transmit request by setting the DMAEN bit + in the SD DCTRL register */ + hsd->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); + + hsd->State = HAL_SD_STATE_READY; + +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + hsd->TxCpltCallback(hsd); +#else + HAL_SD_TxCpltCallback(hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + } + } + else + { + /* Nothing to do */ + } + } + + else if((__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXFIFOHE) != RESET) && ((context & SD_CONTEXT_IT) != 0U)) + { + SD_Write_IT(hsd); + } + + else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_RXOVERR | SDMMC_FLAG_TXUNDERR) != RESET) + { + /* Set Error code */ + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL) != RESET) + { + hsd->ErrorCode |= HAL_SD_ERROR_DATA_CRC_FAIL; + } + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DTIMEOUT) != RESET) + { + hsd->ErrorCode |= HAL_SD_ERROR_DATA_TIMEOUT; + } + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR) != RESET) + { + hsd->ErrorCode |= HAL_SD_ERROR_RX_OVERRUN; + } + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXUNDERR) != RESET) + { + hsd->ErrorCode |= HAL_SD_ERROR_TX_UNDERRUN; + } + + /* Clear All flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + /* Disable all interrupts */ + __HAL_SD_DISABLE_IT(hsd, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ + SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); + + hsd->ErrorCode |= SDMMC_CmdStopTransfer(hsd->Instance); + + if((context & SD_CONTEXT_IT) != 0U) + { + /* Set the SD state to ready to be able to start again the process */ + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + hsd->ErrorCallback(hsd); +#else + HAL_SD_ErrorCallback(hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + } + else if((context & SD_CONTEXT_DMA) != 0U) + { + /* Abort the SD DMA channel */ + if(((context & SD_CONTEXT_WRITE_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_WRITE_MULTIPLE_BLOCK) != 0U)) + { + /* Set the DMA Tx abort callback */ + hsd->hdmatx->XferAbortCallback = SD_DMATxAbort; + /* Abort DMA in IT mode */ + if(HAL_DMA_Abort_IT(hsd->hdmatx) != HAL_OK) + { + SD_DMATxAbort(hsd->hdmatx); + } + } + else if(((context & SD_CONTEXT_READ_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_READ_MULTIPLE_BLOCK) != 0U)) + { + /* Set the DMA Rx abort callback */ + hsd->hdmarx->XferAbortCallback = SD_DMARxAbort; + /* Abort DMA in IT mode */ + if(HAL_DMA_Abort_IT(hsd->hdmarx) != HAL_OK) + { + SD_DMARxAbort(hsd->hdmarx); + } + } + else + { + hsd->ErrorCode = HAL_SD_ERROR_NONE; + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + hsd->AbortCpltCallback(hsd); +#else + HAL_SD_AbortCallback(hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + } + } + else + { + /* Nothing to do */ + } + } + else + { + /* Nothing to do */ + } +} + +/** + * @brief return the SD state + * @param hsd: Pointer to sd handle + * @retval HAL state + */ +HAL_SD_StateTypeDef HAL_SD_GetState(SD_HandleTypeDef *hsd) +{ + return hsd->State; +} + +/** +* @brief Return the SD error code +* @param hsd : Pointer to a SD_HandleTypeDef structure that contains + * the configuration information. +* @retval SD Error Code +*/ +uint32_t HAL_SD_GetError(SD_HandleTypeDef *hsd) +{ + return hsd->ErrorCode; +} + +/** + * @brief Tx Transfer completed callbacks + * @param hsd: Pointer to SD handle + * @retval None + */ +__weak void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hsd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SD_TxCpltCallback can be implemented in the user file + */ +} + +/** + * @brief Rx Transfer completed callbacks + * @param hsd: Pointer SD handle + * @retval None + */ +__weak void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hsd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SD_RxCpltCallback can be implemented in the user file + */ +} + +/** + * @brief SD error callbacks + * @param hsd: Pointer SD handle + * @retval None + */ +__weak void HAL_SD_ErrorCallback(SD_HandleTypeDef *hsd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hsd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SD_ErrorCallback can be implemented in the user file + */ +} + +/** + * @brief SD Abort callbacks + * @param hsd: Pointer SD handle + * @retval None + */ +__weak void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hsd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_SD_AbortCallback can be implemented in the user file + */ +} + +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +/** + * @brief Register a User SD Callback + * To be used instead of the weak (surcharged) predefined callback + * @param hsd : SD handle + * @param CallbackID : ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_SD_TX_CPLT_CB_ID SD Tx Complete Callback ID + * @arg @ref HAL_SD_RX_CPLT_CB_ID SD Rx Complete Callback ID + * @arg @ref HAL_SD_ERROR_CB_ID SD Error Callback ID + * @arg @ref HAL_SD_ABORT_CB_ID SD Abort Callback ID + * @arg @ref HAL_SD_MSP_INIT_CB_ID SD MspInit Callback ID + * @arg @ref HAL_SD_MSP_DEINIT_CB_ID SD MspDeInit Callback ID + * @param pCallback : pointer to the Callback function + * @retval status + */ +HAL_StatusTypeDef HAL_SD_RegisterCallback(SD_HandleTypeDef *hsd, HAL_SD_CallbackIDTypeDef CallbackID, pSD_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if(pCallback == NULL) + { + /* Update the error code */ + hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hsd); + + if(hsd->State == HAL_SD_STATE_READY) + { + switch (CallbackID) + { + case HAL_SD_TX_CPLT_CB_ID : + hsd->TxCpltCallback = pCallback; + break; + case HAL_SD_RX_CPLT_CB_ID : + hsd->RxCpltCallback = pCallback; + break; + case HAL_SD_ERROR_CB_ID : + hsd->ErrorCallback = pCallback; + break; + case HAL_SD_ABORT_CB_ID : + hsd->AbortCpltCallback = pCallback; + break; + case HAL_SD_MSP_INIT_CB_ID : + hsd->MspInitCallback = pCallback; + break; + case HAL_SD_MSP_DEINIT_CB_ID : + hsd->MspDeInitCallback = pCallback; + break; + default : + /* Update the error code */ + hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; + /* update return status */ + status = HAL_ERROR; + break; + } + } + else if (hsd->State == HAL_SD_STATE_RESET) + { + switch (CallbackID) + { + case HAL_SD_MSP_INIT_CB_ID : + hsd->MspInitCallback = pCallback; + break; + case HAL_SD_MSP_DEINIT_CB_ID : + hsd->MspDeInitCallback = pCallback; + break; + default : + /* Update the error code */ + hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; + /* update return status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; + /* update return status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hsd); + return status; +} + +/** + * @brief Unregister a User SD Callback + * SD Callback is redirected to the weak (surcharged) predefined callback + * @param hsd : SD handle + * @param CallbackID : ID of the callback to be unregistered + * This parameter can be one of the following values: + * @arg @ref HAL_SD_TX_CPLT_CB_ID SD Tx Complete Callback ID + * @arg @ref HAL_SD_RX_CPLT_CB_ID SD Rx Complete Callback ID + * @arg @ref HAL_SD_ERROR_CB_ID SD Error Callback ID + * @arg @ref HAL_SD_ABORT_CB_ID SD Abort Callback ID + * @arg @ref HAL_SD_MSP_INIT_CB_ID SD MspInit Callback ID + * @arg @ref HAL_SD_MSP_DEINIT_CB_ID SD MspDeInit Callback ID + * @retval status + */ +HAL_StatusTypeDef HAL_SD_UnRegisterCallback(SD_HandleTypeDef *hsd, HAL_SD_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hsd); + + if(hsd->State == HAL_SD_STATE_READY) + { + switch (CallbackID) + { + case HAL_SD_TX_CPLT_CB_ID : + hsd->TxCpltCallback = HAL_SD_TxCpltCallback; + break; + case HAL_SD_RX_CPLT_CB_ID : + hsd->RxCpltCallback = HAL_SD_RxCpltCallback; + break; + case HAL_SD_ERROR_CB_ID : + hsd->ErrorCallback = HAL_SD_ErrorCallback; + break; + case HAL_SD_ABORT_CB_ID : + hsd->AbortCpltCallback = HAL_SD_AbortCallback; + break; + case HAL_SD_MSP_INIT_CB_ID : + hsd->MspInitCallback = HAL_SD_MspInit; + break; + case HAL_SD_MSP_DEINIT_CB_ID : + hsd->MspDeInitCallback = HAL_SD_MspDeInit; + break; + default : + /* Update the error code */ + hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; + /* update return status */ + status = HAL_ERROR; + break; + } + } + else if (hsd->State == HAL_SD_STATE_RESET) + { + switch (CallbackID) + { + case HAL_SD_MSP_INIT_CB_ID : + hsd->MspInitCallback = HAL_SD_MspInit; + break; + case HAL_SD_MSP_DEINIT_CB_ID : + hsd->MspDeInitCallback = HAL_SD_MspDeInit; + break; + default : + /* Update the error code */ + hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; + /* update return status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; + /* update return status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hsd); + return status; +} +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @addtogroup SD_Exported_Functions_Group3 + * @brief management functions + * +@verbatim + ============================================================================== + ##### Peripheral Control functions ##### + ============================================================================== + [..] + This subsection provides a set of functions allowing to control the SD card + operations and get the related information + +@endverbatim + * @{ + */ + +/** + * @brief Returns information the information of the card which are stored on + * the CID register. + * @param hsd: Pointer to SD handle + * @param pCID: Pointer to a HAL_SD_CardCIDTypeDef structure that + * contains all CID register parameters + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_GetCardCID(SD_HandleTypeDef *hsd, HAL_SD_CardCIDTypeDef *pCID) +{ + pCID->ManufacturerID = (uint8_t)((hsd->CID[0] & 0xFF000000U) >> 24U); + + pCID->OEM_AppliID = (uint16_t)((hsd->CID[0] & 0x00FFFF00U) >> 8U); + + pCID->ProdName1 = (((hsd->CID[0] & 0x000000FFU) << 24U) | ((hsd->CID[1] & 0xFFFFFF00U) >> 8U)); + + pCID->ProdName2 = (uint8_t)(hsd->CID[1] & 0x000000FFU); + + pCID->ProdRev = (uint8_t)((hsd->CID[2] & 0xFF000000U) >> 24U); + + pCID->ProdSN = (((hsd->CID[2] & 0x00FFFFFFU) << 8U) | ((hsd->CID[3] & 0xFF000000U) >> 24U)); + + pCID->Reserved1 = (uint8_t)((hsd->CID[3] & 0x00F00000U) >> 20U); + + pCID->ManufactDate = (uint16_t)((hsd->CID[3] & 0x000FFF00U) >> 8U); + + pCID->CID_CRC = (uint8_t)((hsd->CID[3] & 0x000000FEU) >> 1U); + + pCID->Reserved2 = 1U; + + return HAL_OK; +} + +/** + * @brief Returns information the information of the card which are stored on + * the CSD register. + * @param hsd: Pointer to SD handle + * @param pCSD: Pointer to a HAL_SD_CardCSDTypeDef structure that + * contains all CSD register parameters + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_GetCardCSD(SD_HandleTypeDef *hsd, HAL_SD_CardCSDTypeDef *pCSD) +{ + pCSD->CSDStruct = (uint8_t)((hsd->CSD[0] & 0xC0000000U) >> 30U); + + pCSD->SysSpecVersion = (uint8_t)((hsd->CSD[0] & 0x3C000000U) >> 26U); + + pCSD->Reserved1 = (uint8_t)((hsd->CSD[0] & 0x03000000U) >> 24U); + + pCSD->TAAC = (uint8_t)((hsd->CSD[0] & 0x00FF0000U) >> 16U); + + pCSD->NSAC = (uint8_t)((hsd->CSD[0] & 0x0000FF00U) >> 8U); + + pCSD->MaxBusClkFrec = (uint8_t)(hsd->CSD[0] & 0x000000FFU); + + pCSD->CardComdClasses = (uint16_t)((hsd->CSD[1] & 0xFFF00000U) >> 20U); + + pCSD->RdBlockLen = (uint8_t)((hsd->CSD[1] & 0x000F0000U) >> 16U); + + pCSD->PartBlockRead = (uint8_t)((hsd->CSD[1] & 0x00008000U) >> 15U); + + pCSD->WrBlockMisalign = (uint8_t)((hsd->CSD[1] & 0x00004000U) >> 14U); + + pCSD->RdBlockMisalign = (uint8_t)((hsd->CSD[1] & 0x00002000U) >> 13U); + + pCSD->DSRImpl = (uint8_t)((hsd->CSD[1] & 0x00001000U) >> 12U); + + pCSD->Reserved2 = 0U; /*!< Reserved */ + + if(hsd->SdCard.CardType == CARD_SDSC) + { + pCSD->DeviceSize = (((hsd->CSD[1] & 0x000003FFU) << 2U) | ((hsd->CSD[2] & 0xC0000000U) >> 30U)); + + pCSD->MaxRdCurrentVDDMin = (uint8_t)((hsd->CSD[2] & 0x38000000U) >> 27U); + + pCSD->MaxRdCurrentVDDMax = (uint8_t)((hsd->CSD[2] & 0x07000000U) >> 24U); + + pCSD->MaxWrCurrentVDDMin = (uint8_t)((hsd->CSD[2] & 0x00E00000U) >> 21U); + + pCSD->MaxWrCurrentVDDMax = (uint8_t)((hsd->CSD[2] & 0x001C0000U) >> 18U); + + pCSD->DeviceSizeMul = (uint8_t)((hsd->CSD[2] & 0x00038000U) >> 15U); + + hsd->SdCard.BlockNbr = (pCSD->DeviceSize + 1U) ; + hsd->SdCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); + hsd->SdCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); + + hsd->SdCard.LogBlockNbr = (hsd->SdCard.BlockNbr) * ((hsd->SdCard.BlockSize) / 512U); + hsd->SdCard.LogBlockSize = 512U; + } + else if(hsd->SdCard.CardType == CARD_SDHC_SDXC) + { + /* Byte 7 */ + pCSD->DeviceSize = (((hsd->CSD[1] & 0x0000003FU) << 16U) | ((hsd->CSD[2] & 0xFFFF0000U) >> 16U)); + + hsd->SdCard.BlockNbr = ((pCSD->DeviceSize + 1U) * 1024U); + hsd->SdCard.LogBlockNbr = hsd->SdCard.BlockNbr; + hsd->SdCard.BlockSize = 512U; + hsd->SdCard.LogBlockSize = hsd->SdCard.BlockSize; + } + else + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= HAL_SD_ERROR_UNSUPPORTED_FEATURE; + hsd->State = HAL_SD_STATE_READY; + return HAL_ERROR; + } + + pCSD->EraseGrSize = (uint8_t)((hsd->CSD[2] & 0x00004000U) >> 14U); + + pCSD->EraseGrMul = (uint8_t)((hsd->CSD[2] & 0x00003F80U) >> 7U); + + pCSD->WrProtectGrSize = (uint8_t)(hsd->CSD[2] & 0x0000007FU); + + pCSD->WrProtectGrEnable = (uint8_t)((hsd->CSD[3] & 0x80000000U) >> 31U); + + pCSD->ManDeflECC = (uint8_t)((hsd->CSD[3] & 0x60000000U) >> 29U); + + pCSD->WrSpeedFact = (uint8_t)((hsd->CSD[3] & 0x1C000000U) >> 26U); + + pCSD->MaxWrBlockLen= (uint8_t)((hsd->CSD[3] & 0x03C00000U) >> 22U); + + pCSD->WriteBlockPaPartial = (uint8_t)((hsd->CSD[3] & 0x00200000U) >> 21U); + + pCSD->Reserved3 = 0; + + pCSD->ContentProtectAppli = (uint8_t)((hsd->CSD[3] & 0x00010000U) >> 16U); + + pCSD->FileFormatGroup = (uint8_t)((hsd->CSD[3] & 0x00008000U) >> 15U); + + pCSD->CopyFlag = (uint8_t)((hsd->CSD[3] & 0x00004000U) >> 14U); + + pCSD->PermWrProtect = (uint8_t)((hsd->CSD[3] & 0x00002000U) >> 13U); + + pCSD->TempWrProtect = (uint8_t)((hsd->CSD[3] & 0x00001000U) >> 12U); + + pCSD->FileFormat = (uint8_t)((hsd->CSD[3] & 0x00000C00U) >> 10U); + + pCSD->ECC= (uint8_t)((hsd->CSD[3] & 0x00000300U) >> 8U); + + pCSD->CSD_CRC = (uint8_t)((hsd->CSD[3] & 0x000000FEU) >> 1U); + + pCSD->Reserved4 = 1; + + return HAL_OK; +} + +/** + * @brief Gets the SD status info. + * @param hsd: Pointer to SD handle + * @param pStatus: Pointer to the HAL_SD_CardStatusTypeDef structure that + * will contain the SD card status information + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypeDef *pStatus) +{ + uint32_t sd_status[16]; + uint32_t errorstate; + HAL_StatusTypeDef status = HAL_OK; + + errorstate = SD_SendSDStatus(hsd, sd_status); + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + hsd->State = HAL_SD_STATE_READY; + status = HAL_ERROR; + } + else + { + pStatus->DataBusWidth = (uint8_t)((sd_status[0] & 0xC0U) >> 6U); + + pStatus->SecuredMode = (uint8_t)((sd_status[0] & 0x20U) >> 5U); + + pStatus->CardType = (uint16_t)(((sd_status[0] & 0x00FF0000U) >> 8U) | ((sd_status[0] & 0xFF000000U) >> 24U)); + + pStatus->ProtectedAreaSize = (((sd_status[1] & 0xFFU) << 24U) | ((sd_status[1] & 0xFF00U) << 8U) | + ((sd_status[1] & 0xFF0000U) >> 8U) | ((sd_status[1] & 0xFF000000U) >> 24U)); + + pStatus->SpeedClass = (uint8_t)(sd_status[2] & 0xFFU); + + pStatus->PerformanceMove = (uint8_t)((sd_status[2] & 0xFF00U) >> 8U); + + pStatus->AllocationUnitSize = (uint8_t)((sd_status[2] & 0xF00000U) >> 20U); + + pStatus->EraseSize = (uint16_t)(((sd_status[2] & 0xFF000000U) >> 16U) | (sd_status[3] & 0xFFU)); + + pStatus->EraseTimeout = (uint8_t)((sd_status[3] & 0xFC00U) >> 10U); + + pStatus->EraseOffset = (uint8_t)((sd_status[3] & 0x0300U) >> 8U); + } + + /* Set Block Size for Card */ + errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE); + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode = errorstate; + hsd->State = HAL_SD_STATE_READY; + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief Gets the SD card info. + * @param hsd: Pointer to SD handle + * @param pCardInfo: Pointer to the HAL_SD_CardInfoTypeDef structure that + * will contain the SD card status information + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_GetCardInfo(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypeDef *pCardInfo) +{ + pCardInfo->CardType = (uint32_t)(hsd->SdCard.CardType); + pCardInfo->CardVersion = (uint32_t)(hsd->SdCard.CardVersion); + pCardInfo->Class = (uint32_t)(hsd->SdCard.Class); + pCardInfo->RelCardAdd = (uint32_t)(hsd->SdCard.RelCardAdd); + pCardInfo->BlockNbr = (uint32_t)(hsd->SdCard.BlockNbr); + pCardInfo->BlockSize = (uint32_t)(hsd->SdCard.BlockSize); + pCardInfo->LogBlockNbr = (uint32_t)(hsd->SdCard.LogBlockNbr); + pCardInfo->LogBlockSize = (uint32_t)(hsd->SdCard.LogBlockSize); + + return HAL_OK; +} + +/** + * @brief Enables wide bus operation for the requested card if supported by + * card. + * @param hsd: Pointer to SD handle + * @param WideMode: Specifies the SD card wide bus mode + * This parameter can be one of the following values: + * @arg SDMMC_BUS_WIDE_8B: 8-bit data transfer + * @arg SDMMC_BUS_WIDE_4B: 4-bit data transfer + * @arg SDMMC_BUS_WIDE_1B: 1-bit data transfer + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_ConfigWideBusOperation(SD_HandleTypeDef *hsd, uint32_t WideMode) +{ + SDMMC_InitTypeDef Init; + uint32_t errorstate; + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_SDMMC_BUS_WIDE(WideMode)); + + /* Change State */ + hsd->State = HAL_SD_STATE_BUSY; + + if(hsd->SdCard.CardType != CARD_SECURED) + { + if(WideMode == SDMMC_BUS_WIDE_8B) + { + hsd->ErrorCode |= HAL_SD_ERROR_UNSUPPORTED_FEATURE; + } + else if(WideMode == SDMMC_BUS_WIDE_4B) + { + errorstate = SD_WideBus_Enable(hsd); + + hsd->ErrorCode |= errorstate; + } + else if(WideMode == SDMMC_BUS_WIDE_1B) + { + errorstate = SD_WideBus_Disable(hsd); + + hsd->ErrorCode |= errorstate; + } + else + { + /* WideMode is not a valid argument*/ + hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + } + } + else + { + /* MMC Card does not support this feature */ + hsd->ErrorCode |= HAL_SD_ERROR_UNSUPPORTED_FEATURE; + } + + if(hsd->ErrorCode != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->State = HAL_SD_STATE_READY; + status = HAL_ERROR; + } + else + { + /* Configure the SDMMC peripheral */ + Init.ClockEdge = hsd->Init.ClockEdge; + Init.ClockBypass = hsd->Init.ClockBypass; + Init.ClockPowerSave = hsd->Init.ClockPowerSave; + Init.BusWide = WideMode; + Init.HardwareFlowControl = hsd->Init.HardwareFlowControl; + Init.ClockDiv = hsd->Init.ClockDiv; + (void)SDMMC_Init(hsd->Instance, Init); + } + + /* Set Block Size for Card */ + errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE); + if(errorstate != HAL_SD_ERROR_NONE) + { + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + hsd->ErrorCode |= errorstate; + status = HAL_ERROR; + } + + /* Change State */ + hsd->State = HAL_SD_STATE_READY; + + return status; +} + +/** + * @brief Gets the current sd card data state. + * @param hsd: pointer to SD handle + * @retval Card state + */ +HAL_SD_CardStateTypeDef HAL_SD_GetCardState(SD_HandleTypeDef *hsd) +{ + uint32_t cardstate; + uint32_t errorstate; + uint32_t resp1 = 0; + + errorstate = SD_SendStatus(hsd, &resp1); + if(errorstate != HAL_SD_ERROR_NONE) + { + hsd->ErrorCode |= errorstate; + } + + cardstate = ((resp1 >> 9U) & 0x0FU); + + return (HAL_SD_CardStateTypeDef)cardstate; +} + +/** + * @brief Abort the current transfer and disable the SD. + * @param hsd: pointer to a SD_HandleTypeDef structure that contains + * the configuration information for SD module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_Abort(SD_HandleTypeDef *hsd) +{ + HAL_SD_CardStateTypeDef CardState; + uint32_t context = hsd->Context; + + /* DIsable All interrupts */ + __HAL_SD_DISABLE_IT(hsd, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ + SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); + + /* Clear All flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + CLEAR_BIT(hsd->Instance->DCTRL, SDMMC_DCTRL_DTEN); + + if ((context & SD_CONTEXT_DMA) != 0U) + { + /* Disable the SD DMA request */ + hsd->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); + + /* Abort the SD DMA Tx channel */ + if (((context & SD_CONTEXT_WRITE_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_WRITE_MULTIPLE_BLOCK) != 0U)) + { + if(HAL_DMA_Abort(hsd->hdmatx) != HAL_OK) + { + hsd->ErrorCode |= HAL_SD_ERROR_DMA; + } + } + /* Abort the SD DMA Rx channel */ + else if (((context & SD_CONTEXT_READ_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_READ_MULTIPLE_BLOCK) != 0U)) + { + if(HAL_DMA_Abort(hsd->hdmarx) != HAL_OK) + { + hsd->ErrorCode |= HAL_SD_ERROR_DMA; + } + } + else + { + /* Nothing to do */ + } + } + + hsd->State = HAL_SD_STATE_READY; + + /* Initialize the SD operation */ + hsd->Context = SD_CONTEXT_NONE; + + CardState = HAL_SD_GetCardState(hsd); + if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + { + hsd->ErrorCode = SDMMC_CmdStopTransfer(hsd->Instance); + } + if(hsd->ErrorCode != HAL_SD_ERROR_NONE) + { + return HAL_ERROR; + } + return HAL_OK; +} + +/** + * @brief Abort the current transfer and disable the SD (IT mode). + * @param hsd: pointer to a SD_HandleTypeDef structure that contains + * the configuration information for SD module. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_SD_Abort_IT(SD_HandleTypeDef *hsd) +{ + HAL_SD_CardStateTypeDef CardState; + uint32_t context = hsd->Context; + + /* Disable All interrupts */ + __HAL_SD_DISABLE_IT(hsd, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ + SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); + + CLEAR_BIT(hsd->Instance->DCTRL, SDMMC_DCTRL_DTEN); + + if ((context & SD_CONTEXT_DMA) != 0U) + { + /* Disable the SD DMA request */ + hsd->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); + + /* Abort the SD DMA Tx channel */ + if (((context & SD_CONTEXT_WRITE_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_WRITE_MULTIPLE_BLOCK) != 0U)) + { + hsd->hdmatx->XferAbortCallback = SD_DMATxAbort; + if(HAL_DMA_Abort_IT(hsd->hdmatx) != HAL_OK) + { + hsd->hdmatx = NULL; + } + } + /* Abort the SD DMA Rx channel */ + else if (((context & SD_CONTEXT_READ_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_READ_MULTIPLE_BLOCK) != 0U)) + { + hsd->hdmarx->XferAbortCallback = SD_DMARxAbort; + if(HAL_DMA_Abort_IT(hsd->hdmarx) != HAL_OK) + { + hsd->hdmarx = NULL; + } + } + else + { + /* Nothing to do */ + } + } + /* No transfer ongoing on both DMA channels*/ + else + { + /* Clear All flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + CardState = HAL_SD_GetCardState(hsd); + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + { + hsd->ErrorCode = SDMMC_CmdStopTransfer(hsd->Instance); + } + if(hsd->ErrorCode != HAL_SD_ERROR_NONE) + { + return HAL_ERROR; + } + else + { +#if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + hsd->AbortCpltCallback(hsd); +#else + HAL_SD_AbortCallback(hsd); +#endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + } + } + + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ + +/* Private function ----------------------------------------------------------*/ +/** @addtogroup SD_Private_Functions + * @{ + */ + +/** + * @brief DMA SD transmit process complete callback + * @param hdma: DMA handle + * @retval None + */ +static void SD_DMATransmitCplt(DMA_HandleTypeDef *hdma) +{ + SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + + /* Enable DATAEND Interrupt */ + __HAL_SD_ENABLE_IT(hsd, (SDMMC_IT_DATAEND)); +} + +/** + * @brief DMA SD receive process complete callback + * @param hdma: DMA handle + * @retval None + */ +static void SD_DMAReceiveCplt(DMA_HandleTypeDef *hdma) +{ + SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + uint32_t errorstate; + + /* Send stop command in multiblock write */ + if(hsd->Context == (SD_CONTEXT_READ_MULTIPLE_BLOCK | SD_CONTEXT_DMA)) + { + errorstate = SDMMC_CmdStopTransfer(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + hsd->ErrorCode |= errorstate; +#if (USE_HAL_SD_REGISTER_CALLBACKS == 1) + hsd->ErrorCallback(hsd); +#else + HAL_SD_ErrorCallback(hsd); +#endif + } + } + + /* Disable the DMA transfer for transmit request by setting the DMAEN bit + in the SD DCTRL register */ + hsd->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); + + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + +#if (USE_HAL_SD_REGISTER_CALLBACKS == 1) + hsd->RxCpltCallback(hsd); +#else + HAL_SD_RxCpltCallback(hsd); +#endif +} + +/** + * @brief DMA SD communication error callback + * @param hdma: DMA handle + * @retval None + */ +static void SD_DMAError(DMA_HandleTypeDef *hdma) +{ + SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + HAL_SD_CardStateTypeDef CardState; + uint32_t RxErrorCode, TxErrorCode; + + /* if DMA error is FIFO error ignore it */ + if(HAL_DMA_GetError(hdma) != HAL_DMA_ERROR_FE) + { + RxErrorCode = hsd->hdmarx->ErrorCode; + TxErrorCode = hsd->hdmatx->ErrorCode; + if((RxErrorCode == HAL_DMA_ERROR_TE) || (TxErrorCode == HAL_DMA_ERROR_TE)) + { + /* Clear All flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + + /* Disable All interrupts */ + __HAL_SD_DISABLE_IT(hsd, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ + SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); + + hsd->ErrorCode |= HAL_SD_ERROR_DMA; + CardState = HAL_SD_GetCardState(hsd); + if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + { + hsd->ErrorCode |= SDMMC_CmdStopTransfer(hsd->Instance); + } + + hsd->State= HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + } + +#if (USE_HAL_SD_REGISTER_CALLBACKS == 1) + hsd->ErrorCallback(hsd); +#else + HAL_SD_ErrorCallback(hsd); +#endif + } +} + +/** + * @brief DMA SD Tx Abort callback + * @param hdma: DMA handle + * @retval None + */ +static void SD_DMATxAbort(DMA_HandleTypeDef *hdma) +{ + SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + HAL_SD_CardStateTypeDef CardState; + + /* Clear All flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + CardState = HAL_SD_GetCardState(hsd); + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + { + hsd->ErrorCode |= SDMMC_CmdStopTransfer(hsd->Instance); + } + + if(hsd->ErrorCode == HAL_SD_ERROR_NONE) + { +#if (USE_HAL_SD_REGISTER_CALLBACKS == 1) + hsd->AbortCpltCallback(hsd); +#else + HAL_SD_AbortCallback(hsd); +#endif + } + else + { +#if (USE_HAL_SD_REGISTER_CALLBACKS == 1) + hsd->ErrorCallback(hsd); +#else + HAL_SD_ErrorCallback(hsd); +#endif + } +} + +/** + * @brief DMA SD Rx Abort callback + * @param hdma: DMA handle + * @retval None + */ +static void SD_DMARxAbort(DMA_HandleTypeDef *hdma) +{ + SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + HAL_SD_CardStateTypeDef CardState; + + /* Clear All flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + CardState = HAL_SD_GetCardState(hsd); + hsd->State = HAL_SD_STATE_READY; + hsd->Context = SD_CONTEXT_NONE; + if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + { + hsd->ErrorCode |= SDMMC_CmdStopTransfer(hsd->Instance); + } + + if(hsd->ErrorCode == HAL_SD_ERROR_NONE) + { +#if (USE_HAL_SD_REGISTER_CALLBACKS == 1) + hsd->AbortCpltCallback(hsd); +#else + HAL_SD_AbortCallback(hsd); +#endif + } + else + { +#if (USE_HAL_SD_REGISTER_CALLBACKS == 1) + hsd->ErrorCallback(hsd); +#else + HAL_SD_ErrorCallback(hsd); +#endif + } +} + +/** + * @brief Initializes the sd card. + * @param hsd: Pointer to SD handle + * @retval SD Card error state + */ +static uint32_t SD_InitCard(SD_HandleTypeDef *hsd) +{ + HAL_SD_CardCSDTypeDef CSD; + uint32_t errorstate; + uint16_t sd_rca = 1U; + + /* Check the power State */ + if(SDMMC_GetPowerState(hsd->Instance) == 0U) + { + /* Power off */ + return HAL_SD_ERROR_REQUEST_NOT_APPLICABLE; + } + + if(hsd->SdCard.CardType != CARD_SECURED) + { + /* Send CMD2 ALL_SEND_CID */ + errorstate = SDMMC_CmdSendCID(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + else + { + /* Get Card identification number data */ + hsd->CID[0U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1); + hsd->CID[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); + hsd->CID[2U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP3); + hsd->CID[3U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP4); + } + } + + if(hsd->SdCard.CardType != CARD_SECURED) + { + /* Send CMD3 SET_REL_ADDR with argument 0 */ + /* SD Card publishes its RCA. */ + errorstate = SDMMC_CmdSetRelAdd(hsd->Instance, &sd_rca); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + } + if(hsd->SdCard.CardType != CARD_SECURED) + { + /* Get the SD card RCA */ + hsd->SdCard.RelCardAdd = sd_rca; + + /* Send CMD9 SEND_CSD with argument as card's RCA */ + errorstate = SDMMC_CmdSendCSD(hsd->Instance, (uint32_t)(hsd->SdCard.RelCardAdd << 16U)); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + else + { + /* Get Card Specific Data */ + hsd->CSD[0U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1); + hsd->CSD[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); + hsd->CSD[2U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP3); + hsd->CSD[3U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP4); + } + } + + /* Get the Card Class */ + hsd->SdCard.Class = (SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2) >> 20U); + + /* Get CSD parameters */ + if (HAL_SD_GetCardCSD(hsd, &CSD) != HAL_OK) + { + return HAL_SD_ERROR_UNSUPPORTED_FEATURE; + } + + /* Select the Card */ + errorstate = SDMMC_CmdSelDesel(hsd->Instance, (uint32_t)(((uint32_t)hsd->SdCard.RelCardAdd) << 16U)); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + /* Configure SDMMC peripheral interface */ + (void)SDMMC_Init(hsd->Instance, hsd->Init); + + /* All cards are initialized */ + return HAL_SD_ERROR_NONE; +} + +/** + * @brief Enquires cards about their operating voltage and configures clock + * controls and stores SD information that will be needed in future + * in the SD handle. + * @param hsd: Pointer to SD handle + * @retval error state + */ +static uint32_t SD_PowerON(SD_HandleTypeDef *hsd) +{ + __IO uint32_t count = 0U; + uint32_t response = 0U, validvoltage = 0U; + uint32_t errorstate; + + /* CMD0: GO_IDLE_STATE */ + errorstate = SDMMC_CmdGoIdleState(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + /* CMD8: SEND_IF_COND: Command available only on V2.0 cards */ + errorstate = SDMMC_CmdOperCond(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + hsd->SdCard.CardVersion = CARD_V1_X; + /* CMD0: GO_IDLE_STATE */ + errorstate = SDMMC_CmdGoIdleState(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + } + else + { + hsd->SdCard.CardVersion = CARD_V2_X; + } + + if( hsd->SdCard.CardVersion == CARD_V2_X) + { + /* SEND CMD55 APP_CMD with RCA as 0 */ + errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0); + if(errorstate != HAL_SD_ERROR_NONE) + { + return HAL_SD_ERROR_UNSUPPORTED_FEATURE; + } + } + /* SD CARD */ + /* Send ACMD41 SD_APP_OP_COND with Argument 0x80100000 */ + while((count < SDMMC_MAX_VOLT_TRIAL) && (validvoltage == 0U)) + { + /* SEND CMD55 APP_CMD with RCA as 0 */ + errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + /* Send CMD41 */ + errorstate = SDMMC_CmdAppOperCommand(hsd->Instance, SDMMC_VOLTAGE_WINDOW_SD | SDMMC_HIGH_CAPACITY | SD_SWITCH_1_8V_CAPACITY); + if(errorstate != HAL_SD_ERROR_NONE) + { + return HAL_SD_ERROR_UNSUPPORTED_FEATURE; + } + + /* Get command response */ + response = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1); + + /* Get operating voltage*/ + validvoltage = (((response >> 31U) == 1U) ? 1U : 0U); + + count++; + } + + if(count >= SDMMC_MAX_VOLT_TRIAL) + { + return HAL_SD_ERROR_INVALID_VOLTRANGE; + } + + if((response & SDMMC_HIGH_CAPACITY) == SDMMC_HIGH_CAPACITY) /* (response &= SD_HIGH_CAPACITY) */ + { + hsd->SdCard.CardType = CARD_SDHC_SDXC; + } + else + { + hsd->SdCard.CardType = CARD_SDSC; + } + + + return HAL_SD_ERROR_NONE; +} + +/** + * @brief Turns the SDMMC output signals off. + * @param hsd: Pointer to SD handle + * @retval None + */ +static void SD_PowerOFF(SD_HandleTypeDef *hsd) +{ + /* Set Power State to OFF */ + (void)SDMMC_PowerState_OFF(hsd->Instance); +} + +/** + * @brief Send Status info command. + * @param hsd: pointer to SD handle + * @param pSDstatus: Pointer to the buffer that will contain the SD card status + * SD Status register) + * @retval error state + */ +static uint32_t SD_SendSDStatus(SD_HandleTypeDef *hsd, uint32_t *pSDstatus) +{ + SDMMC_DataInitTypeDef config; + uint32_t errorstate; + uint32_t tickstart = HAL_GetTick(); + uint32_t count; + uint32_t *pData = pSDstatus; + + /* Check SD response */ + if((SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) + { + return HAL_SD_ERROR_LOCK_UNLOCK_FAILED; + } + + /* Set block size for card if it is not equal to current block size for card */ + errorstate = SDMMC_CmdBlockLength(hsd->Instance, 64U); + if(errorstate != HAL_SD_ERROR_NONE) + { + hsd->ErrorCode |= HAL_SD_ERROR_NONE; + return errorstate; + } + + /* Send CMD55 */ + errorstate = SDMMC_CmdAppCommand(hsd->Instance, (uint32_t)(hsd->SdCard.RelCardAdd << 16U)); + if(errorstate != HAL_SD_ERROR_NONE) + { + hsd->ErrorCode |= HAL_SD_ERROR_NONE; + return errorstate; + } + + /* Configure the SD DPSM (Data Path State Machine) */ + config.DataTimeOut = SDMMC_DATATIMEOUT; + config.DataLength = 64U; + config.DataBlockSize = SDMMC_DATABLOCK_SIZE_64B; + config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + config.DPSM = SDMMC_DPSM_ENABLE; + (void)SDMMC_ConfigData(hsd->Instance, &config); + + /* Send ACMD13 (SD_APP_STAUS) with argument as card's RCA */ + errorstate = SDMMC_CmdStatusRegister(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + hsd->ErrorCode |= HAL_SD_ERROR_NONE; + return errorstate; + } + + /* Get status data */ + while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_DBCKEND)) + { + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXFIFOHF)) + { + for(count = 0U; count < 8U; count++) + { + *pData = SDMMC_ReadFIFO(hsd->Instance); + pData++; + } + } + + if((HAL_GetTick() - tickstart) >= SDMMC_DATATIMEOUT) + { + return HAL_SD_ERROR_TIMEOUT; + } + } + + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DTIMEOUT)) + { + return HAL_SD_ERROR_DATA_TIMEOUT; + } + else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL)) + { + return HAL_SD_ERROR_DATA_CRC_FAIL; + } + else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR)) + { + return HAL_SD_ERROR_RX_OVERRUN; + } + else + { + /* Nothing to do */ + } + + while ((__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXDAVL))) + { + *pData = SDMMC_ReadFIFO(hsd->Instance); + pData++; + + if((HAL_GetTick() - tickstart) >= SDMMC_DATATIMEOUT) + { + return HAL_SD_ERROR_TIMEOUT; + } + } + + /* Clear all the static status flags*/ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + return HAL_SD_ERROR_NONE; +} + +/** + * @brief Returns the current card's status. + * @param hsd: Pointer to SD handle + * @param pCardStatus: pointer to the buffer that will contain the SD card + * status (Card Status register) + * @retval error state + */ +static uint32_t SD_SendStatus(SD_HandleTypeDef *hsd, uint32_t *pCardStatus) +{ + uint32_t errorstate; + + if(pCardStatus == NULL) + { + return HAL_SD_ERROR_PARAM; + } + + /* Send Status command */ + errorstate = SDMMC_CmdSendStatus(hsd->Instance, (uint32_t)(hsd->SdCard.RelCardAdd << 16U)); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + /* Get SD card status */ + *pCardStatus = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1); + + return HAL_SD_ERROR_NONE; +} + +/** + * @brief Enables the SDMMC wide bus mode. + * @param hsd: pointer to SD handle + * @retval error state + */ +static uint32_t SD_WideBus_Enable(SD_HandleTypeDef *hsd) +{ + uint32_t scr[2U] = {0U, 0U}; + uint32_t errorstate; + + if((SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) + { + return HAL_SD_ERROR_LOCK_UNLOCK_FAILED; + } + + /* Get SCR Register */ + errorstate = SD_FindSCR(hsd, scr); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + /* If requested card supports wide bus operation */ + if((scr[1U] & SDMMC_WIDE_BUS_SUPPORT) != SDMMC_ALLZERO) + { + /* Send CMD55 APP_CMD with argument as card's RCA.*/ + errorstate = SDMMC_CmdAppCommand(hsd->Instance, (uint32_t)(hsd->SdCard.RelCardAdd << 16U)); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + /* Send ACMD6 APP_CMD with argument as 2 for wide bus mode */ + errorstate = SDMMC_CmdBusWidth(hsd->Instance, 2U); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + return HAL_SD_ERROR_NONE; + } + else + { + return HAL_SD_ERROR_REQUEST_NOT_APPLICABLE; + } +} + +/** + * @brief Disables the SDMMC wide bus mode. + * @param hsd: Pointer to SD handle + * @retval error state + */ +static uint32_t SD_WideBus_Disable(SD_HandleTypeDef *hsd) +{ + uint32_t scr[2U] = {0U, 0U}; + uint32_t errorstate; + + if((SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) + { + return HAL_SD_ERROR_LOCK_UNLOCK_FAILED; + } + + /* Get SCR Register */ + errorstate = SD_FindSCR(hsd, scr); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + /* If requested card supports 1 bit mode operation */ + if((scr[1U] & SDMMC_SINGLE_BUS_SUPPORT) != SDMMC_ALLZERO) + { + /* Send CMD55 APP_CMD with argument as card's RCA */ + errorstate = SDMMC_CmdAppCommand(hsd->Instance, (uint32_t)(hsd->SdCard.RelCardAdd << 16U)); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + /* Send ACMD6 APP_CMD with argument as 0 for single bus mode */ + errorstate = SDMMC_CmdBusWidth(hsd->Instance, 0U); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + return HAL_SD_ERROR_NONE; + } + else + { + return HAL_SD_ERROR_REQUEST_NOT_APPLICABLE; + } +} + + +/** + * @brief Finds the SD card SCR register value. + * @param hsd: Pointer to SD handle + * @param pSCR: pointer to the buffer that will contain the SCR value + * @retval error state + */ +static uint32_t SD_FindSCR(SD_HandleTypeDef *hsd, uint32_t *pSCR) +{ + SDMMC_DataInitTypeDef config; + uint32_t errorstate; + uint32_t tickstart = HAL_GetTick(); + uint32_t index = 0U; + uint32_t tempscr[2U] = {0U, 0U}; + uint32_t *scr = pSCR; + + /* Set Block Size To 8 Bytes */ + errorstate = SDMMC_CmdBlockLength(hsd->Instance, 8U); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + /* Send CMD55 APP_CMD with argument as card's RCA */ + errorstate = SDMMC_CmdAppCommand(hsd->Instance, (uint32_t)((hsd->SdCard.RelCardAdd) << 16U)); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + config.DataTimeOut = SDMMC_DATATIMEOUT; + config.DataLength = 8U; + config.DataBlockSize = SDMMC_DATABLOCK_SIZE_8B; + config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + config.DPSM = SDMMC_DPSM_ENABLE; + (void)SDMMC_ConfigData(hsd->Instance, &config); + + /* Send ACMD51 SD_APP_SEND_SCR with argument as 0 */ + errorstate = SDMMC_CmdSendSCR(hsd->Instance); + if(errorstate != HAL_SD_ERROR_NONE) + { + return errorstate; + } + + while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT)) + { + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXDAVL)) + { + *(tempscr + index) = SDMMC_ReadFIFO(hsd->Instance); + index++; + } + else if(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXACT)) + { + break; + } + + if((HAL_GetTick() - tickstart) >= SDMMC_DATATIMEOUT) + { + return HAL_SD_ERROR_TIMEOUT; + } + } + + if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DTIMEOUT)) + { + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_FLAG_DTIMEOUT); + + return HAL_SD_ERROR_DATA_TIMEOUT; + } + else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL)) + { + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_FLAG_DCRCFAIL); + + return HAL_SD_ERROR_DATA_CRC_FAIL; + } + else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR)) + { + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_FLAG_RXOVERR); + + return HAL_SD_ERROR_RX_OVERRUN; + } + else + { + /* No error flag set */ + /* Clear all the static flags */ + __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + + *scr = (((tempscr[1] & SDMMC_0TO7BITS) << 24) | ((tempscr[1] & SDMMC_8TO15BITS) << 8) |\ + ((tempscr[1] & SDMMC_16TO23BITS) >> 8) | ((tempscr[1] & SDMMC_24TO31BITS) >> 24)); + scr++; + *scr = (((tempscr[0] & SDMMC_0TO7BITS) << 24) | ((tempscr[0] & SDMMC_8TO15BITS) << 8) |\ + ((tempscr[0] & SDMMC_16TO23BITS) >> 8) | ((tempscr[0] & SDMMC_24TO31BITS) >> 24)); + + } + + return HAL_SD_ERROR_NONE; +} + +/** + * @brief Wrap up reading in non-blocking mode. + * @param hsd: pointer to a SD_HandleTypeDef structure that contains + * the configuration information. + * @retval None + */ +static void SD_Read_IT(SD_HandleTypeDef *hsd) +{ + uint32_t count, data, dataremaining; + uint8_t* tmp; + + tmp = hsd->pRxBuffPtr; + dataremaining = hsd->RxXferSize; + + if (dataremaining > 0U) + { + /* Read data from SDMMC Rx FIFO */ + for(count = 0U; count < 8U; count++) + { + data = SDMMC_ReadFIFO(hsd->Instance); + *tmp = (uint8_t)(data & 0xFFU); + tmp++; + dataremaining--; + *tmp = (uint8_t)((data >> 8U) & 0xFFU); + tmp++; + dataremaining--; + *tmp = (uint8_t)((data >> 16U) & 0xFFU); + tmp++; + dataremaining--; + *tmp = (uint8_t)((data >> 24U) & 0xFFU); + tmp++; + dataremaining--; + } + + hsd->pRxBuffPtr = tmp; + hsd->RxXferSize = dataremaining; + } +} + +/** + * @brief Wrap up writing in non-blocking mode. + * @param hsd: pointer to a SD_HandleTypeDef structure that contains + * the configuration information. + * @retval None + */ +static void SD_Write_IT(SD_HandleTypeDef *hsd) +{ + uint32_t count, data, dataremaining; + uint8_t* tmp; + + tmp = hsd->pTxBuffPtr; + dataremaining = hsd->TxXferSize; + + if (dataremaining > 0U) + { + /* Write data to SDMMC Tx FIFO */ + for(count = 0U; count < 8U; count++) + { + data = (uint32_t)(*tmp); + tmp++; + dataremaining--; + data |= ((uint32_t)(*tmp) << 8U); + tmp++; + dataremaining--; + data |= ((uint32_t)(*tmp) << 16U); + tmp++; + dataremaining--; + data |= ((uint32_t)(*tmp) << 24U); + tmp++; + dataremaining--; + (void)SDMMC_WriteFIFO(hsd->Instance, &data); + } + + hsd->pTxBuffPtr = tmp; + hsd->TxXferSize = dataremaining; + } +} + +/** + * @} + */ + +#endif /* HAL_SD_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* SDMMC1 */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c new file mode 100644 index 0000000..380ce78 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c @@ -0,0 +1,7897 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_tim.c + * @author MCD Application Team + * @brief TIM HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Timer (TIM) peripheral: + * + TIM Time Base Initialization + * + TIM Time Base Start + * + TIM Time Base Start Interruption + * + TIM Time Base Start DMA + * + TIM Output Compare/PWM Initialization + * + TIM Output Compare/PWM Channel Configuration + * + TIM Output Compare/PWM Start + * + TIM Output Compare/PWM Start Interruption + * + TIM Output Compare/PWM Start DMA + * + TIM Input Capture Initialization + * + TIM Input Capture Channel Configuration + * + TIM Input Capture Start + * + TIM Input Capture Start Interruption + * + TIM Input Capture Start DMA + * + TIM One Pulse Initialization + * + TIM One Pulse Channel Configuration + * + TIM One Pulse Start + * + TIM Encoder Interface Initialization + * + TIM Encoder Interface Start + * + TIM Encoder Interface Start Interruption + * + TIM Encoder Interface Start DMA + * + Commutation Event configuration with Interruption and DMA + * + TIM OCRef clear configuration + * + TIM External Clock configuration + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### TIMER Generic features ##### + ============================================================================== + [..] The Timer features include: + (#) 16-bit up, down, up/down auto-reload counter. + (#) 16-bit programmable prescaler allowing dividing (also on the fly) the + counter clock frequency either by any factor between 1 and 65536. + (#) Up to 4 independent channels for: + (++) Input Capture + (++) Output Compare + (++) PWM generation (Edge and Center-aligned Mode) + (++) One-pulse mode output + (#) Synchronization circuit to control the timer with external signals and to interconnect + several timers together. + (#) Supports incremental encoder for positioning purposes + + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Initialize the TIM low level resources by implementing the following functions + depending on the selected feature: + (++) Time Base : HAL_TIM_Base_MspInit() + (++) Input Capture : HAL_TIM_IC_MspInit() + (++) Output Compare : HAL_TIM_OC_MspInit() + (++) PWM generation : HAL_TIM_PWM_MspInit() + (++) One-pulse mode output : HAL_TIM_OnePulse_MspInit() + (++) Encoder mode output : HAL_TIM_Encoder_MspInit() + + (#) Initialize the TIM low level resources : + (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE(); + (##) TIM pins configuration + (+++) Enable the clock for the TIM GPIOs using the following function: + __HAL_RCC_GPIOx_CLK_ENABLE(); + (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init(); + + (#) The external Clock can be configured, if needed (the default clock is the + internal clock from the APBx), using the following function: + HAL_TIM_ConfigClockSource, the clock configuration should be done before + any start function. + + (#) Configure the TIM in the desired functioning mode using one of the + Initialization function of this driver: + (++) HAL_TIM_Base_Init: to use the Timer to generate a simple time base + (++) HAL_TIM_OC_Init and HAL_TIM_OC_ConfigChannel: to use the Timer to generate an + Output Compare signal. + (++) HAL_TIM_PWM_Init and HAL_TIM_PWM_ConfigChannel: to use the Timer to generate a + PWM signal. + (++) HAL_TIM_IC_Init and HAL_TIM_IC_ConfigChannel: to use the Timer to measure an + external signal. + (++) HAL_TIM_OnePulse_Init and HAL_TIM_OnePulse_ConfigChannel: to use the Timer + in One Pulse Mode. + (++) HAL_TIM_Encoder_Init: to use the Timer Encoder Interface. + + (#) Activate the TIM peripheral using one of the start functions depending from the feature used: + (++) Time Base : HAL_TIM_Base_Start(), HAL_TIM_Base_Start_DMA(), HAL_TIM_Base_Start_IT() + (++) Input Capture : HAL_TIM_IC_Start(), HAL_TIM_IC_Start_DMA(), HAL_TIM_IC_Start_IT() + (++) Output Compare : HAL_TIM_OC_Start(), HAL_TIM_OC_Start_DMA(), HAL_TIM_OC_Start_IT() + (++) PWM generation : HAL_TIM_PWM_Start(), HAL_TIM_PWM_Start_DMA(), HAL_TIM_PWM_Start_IT() + (++) One-pulse mode output : HAL_TIM_OnePulse_Start(), HAL_TIM_OnePulse_Start_IT() + (++) Encoder mode output : HAL_TIM_Encoder_Start(), HAL_TIM_Encoder_Start_DMA(), HAL_TIM_Encoder_Start_IT(). + + (#) The DMA Burst is managed with the two following functions: + HAL_TIM_DMABurst_WriteStart() + HAL_TIM_DMABurst_ReadStart() + + *** Callback registration *** + ============================================= + + [..] + The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1 + allows the user to configure dynamically the driver callbacks. + + [..] + Use Function HAL_TIM_RegisterCallback() to register a callback. + HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle, + the Callback ID and a pointer to the user callback function. + + [..] + Use function HAL_TIM_UnRegisterCallback() to reset a callback to the default + weak function. + HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle, + and the Callback ID. + + [..] + These functions allow to register/unregister following callbacks: + (+) Base_MspInitCallback : TIM Base Msp Init Callback. + (+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback. + (+) IC_MspInitCallback : TIM IC Msp Init Callback. + (+) IC_MspDeInitCallback : TIM IC Msp DeInit Callback. + (+) OC_MspInitCallback : TIM OC Msp Init Callback. + (+) OC_MspDeInitCallback : TIM OC Msp DeInit Callback. + (+) PWM_MspInitCallback : TIM PWM Msp Init Callback. + (+) PWM_MspDeInitCallback : TIM PWM Msp DeInit Callback. + (+) OnePulse_MspInitCallback : TIM One Pulse Msp Init Callback. + (+) OnePulse_MspDeInitCallback : TIM One Pulse Msp DeInit Callback. + (+) Encoder_MspInitCallback : TIM Encoder Msp Init Callback. + (+) Encoder_MspDeInitCallback : TIM Encoder Msp DeInit Callback. + (+) HallSensor_MspInitCallback : TIM Hall Sensor Msp Init Callback. + (+) HallSensor_MspDeInitCallback : TIM Hall Sensor Msp DeInit Callback. + (+) PeriodElapsedCallback : TIM Period Elapsed Callback. + (+) PeriodElapsedHalfCpltCallback : TIM Period Elapsed half complete Callback. + (+) TriggerCallback : TIM Trigger Callback. + (+) TriggerHalfCpltCallback : TIM Trigger half complete Callback. + (+) IC_CaptureCallback : TIM Input Capture Callback. + (+) IC_CaptureHalfCpltCallback : TIM Input Capture half complete Callback. + (+) OC_DelayElapsedCallback : TIM Output Compare Delay Elapsed Callback. + (+) PWM_PulseFinishedCallback : TIM PWM Pulse Finished Callback. + (+) PWM_PulseFinishedHalfCpltCallback : TIM PWM Pulse Finished half complete Callback. + (+) ErrorCallback : TIM Error Callback. + (+) CommutationCallback : TIM Commutation Callback. + (+) CommutationHalfCpltCallback : TIM Commutation half complete Callback. + (+) BreakCallback : TIM Break Callback. + (+) Break2Callback : TIM Break2 Callback. + + [..] +By default, after the Init and when the state is HAL_TIM_STATE_RESET +all interrupt callbacks are set to the corresponding weak functions: + examples HAL_TIM_TriggerCallback(), HAL_TIM_ErrorCallback(). + + [..] + Exception done for MspInit and MspDeInit functions that are reset to the legacy weak + functionalities in the Init / DeInit only when these callbacks are null + (not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit + keep and use the user MspInit / MspDeInit callbacks(registered beforehand) + + [..] + Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only. + Exception done MspInit / MspDeInit that can be registered / unregistered + in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state, + thus registered(user) MspInit / DeInit callbacks can be used during the Init / DeInit. + In that case first register the MspInit/MspDeInit user callbacks + using HAL_TIM_RegisterCallback() before calling DeInit or Init function. + + [..] + When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or + not defined, the callback registration feature is not available and all callbacks + are set to the corresponding weak functions. + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup TIM TIM + * @brief TIM HAL module driver + * @{ + */ + +#ifdef HAL_TIM_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/** @addtogroup TIM_Private_Functions + * @{ + */ +static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); +static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter); +static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter); +static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter); +static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter); +static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + uint32_t TIM_ICFilter); +static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource); +static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma); +static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim, + const TIM_SlaveConfigTypeDef *sSlaveConfig); +/** + * @} + */ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup TIM_Exported_Functions TIM Exported Functions + * @{ + */ + +/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions + * @brief Time Base functions + * +@verbatim + ============================================================================== + ##### Time Base functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM base. + (+) De-initialize the TIM base. + (+) Start the Time Base. + (+) Stop the Time Base. + (+) Start the Time Base and enable interrupt. + (+) Stop the Time Base and disable interrupt. + (+) Start the Time Base and enable DMA transfer. + (+) Stop the Time Base and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Time base Unit according to the specified + * parameters in the TIM_HandleTypeDef and initialize the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * 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) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + 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) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->Base_MspInitCallback == NULL) + { + htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; + } + /* 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); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Set the Time Base configuration */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM Base peripheral + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->Base_MspDeInitCallback == NULL) + { + htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; + } + /* DeInit the low level hardware */ + htim->Base_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIM_Base_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Base MSP. + * @param htim TIM Base handle + * @retval None + */ +__weak void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Base_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Base MSP. + * @param htim TIM Base handle + * @retval None + */ +__weak void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Base_MspDeInit could be implemented in the user file + */ +} + + +/** + * @brief Starts the TIM Base generation. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Check the TIM state */ + if (htim->State != HAL_TIM_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Base generation. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + /* Return function status */ + return HAL_OK; +} + +/** + * @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) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Check the TIM state */ + if (htim->State != HAL_TIM_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Enable the TIM Update interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @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) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + /* Disable the TIM Update interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Base generation in DMA mode. + * @param htim TIM Base handle + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, const uint32_t *pData, uint16_t Length) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_DMA_INSTANCE(htim->Instance)); + + /* Set the TIM state */ + if (htim->State == HAL_TIM_STATE_BUSY) + { + return HAL_BUSY; + } + else if (htim->State == HAL_TIM_STATE_READY) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + htim->State = HAL_TIM_STATE_BUSY; + } + } + else + { + return HAL_ERROR; + } + + /* Set the DMA Period elapsed callbacks */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; + htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)pData, (uint32_t)&htim->Instance->ARR, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Update DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_UPDATE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Base generation in DMA mode. + * @param htim TIM Base handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_DMA_INSTANCE(htim->Instance)); + + /* Disable the TIM Update DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_UPDATE); + + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions + * @brief TIM Output Compare functions + * +@verbatim + ============================================================================== + ##### TIM Output Compare functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM Output Compare. + (+) De-initialize the TIM Output Compare. + (+) Start the TIM Output Compare. + (+) Stop the TIM Output Compare. + (+) Start the TIM Output Compare and enable interrupt. + (+) Stop the TIM Output Compare and disable interrupt. + (+) Start the TIM Output Compare and enable DMA transfer. + (+) Stop the TIM Output Compare and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Output Compare according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_OC_DeInit() before HAL_TIM_OC_Init() + * @param htim TIM Output Compare handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + 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) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->OC_MspInitCallback == NULL) + { + htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->OC_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_OC_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Init the base time for the Output Compare */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM peripheral + * @param htim TIM Output Compare handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->OC_MspDeInitCallback == NULL) + { + htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; + } + /* DeInit the low level hardware */ + htim->OC_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_OC_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Output Compare MSP. + * @param htim TIM Output Compare handle + * @retval None + */ +__weak void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Output Compare MSP. + * @param htim TIM Output Compare handle + * @retval None + */ +__weak void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OC_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Output Compare signal generation. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + + /* 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) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Output Compare signal generation. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Disable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Output Compare signal generation in interrupt mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Enable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Output Compare signal generation in interrupt mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM Output Compare signal generation in DMA mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to TIM peripheral + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + /* Set the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Output Compare signal generation in DMA mode. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Output compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions + * @brief TIM PWM functions + * +@verbatim + ============================================================================== + ##### TIM PWM functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM PWM. + (+) De-initialize the TIM PWM. + (+) Start the TIM PWM. + (+) Stop the TIM PWM. + (+) Start the TIM PWM and enable interrupt. + (+) Stop the TIM PWM and disable interrupt. + (+) Start the TIM PWM and enable DMA transfer. + (+) Stop the TIM PWM and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM PWM Time Base according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * 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) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + 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) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->PWM_MspInitCallback == NULL) + { + htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; + } + /* 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); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Init the base time for the PWM */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM peripheral + * @param htim TIM PWM handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->PWM_MspDeInitCallback == NULL) + { + htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; + } + /* DeInit the low level hardware */ + htim->PWM_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_PWM_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief DeInitializes TIM PWM MSP. + * @param htim TIM PWM handle + * @retval None + */ +__weak void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the PWM signal generation. + * @param htim TIM handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @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) +{ + uint32_t tmpsmcr; + + /* 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) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the PWM signal generation. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + /* Disable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the PWM signal generation in interrupt mode. + * @param htim TIM PWM handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Enable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the PWM signal generation in interrupt mode. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM PWM signal generation in DMA mode. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to TIM peripheral + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + /* Set the TIM channel state */ + if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Output Capture/Compare 3 request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance->CCR4, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM PWM signal generation in DMA mode. + * @param htim TIM PWM handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions + * @brief TIM Input Capture functions + * +@verbatim + ============================================================================== + ##### TIM Input Capture functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM Input Capture. + (+) De-initialize the TIM Input Capture. + (+) Start the TIM Input Capture. + (+) Stop the TIM Input Capture. + (+) Start the TIM Input Capture and enable interrupt. + (+) Stop the TIM Input Capture and disable interrupt. + (+) Start the TIM Input Capture and enable DMA transfer. + (+) Stop the TIM Input Capture and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Input Capture Time base according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * 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) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + 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) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->IC_MspInitCallback == NULL) + { + htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; + } + /* 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); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Init the base time for the input capture */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM peripheral + * @param htim TIM Input Capture handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->IC_MspDeInitCallback == NULL) + { + htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; + } + /* DeInit the low level hardware */ + htim->IC_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_IC_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Input Capture MSP. + * @param htim TIM Input Capture handle + * @retval None + */ +__weak void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief DeInitializes TIM Input Capture MSP. + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Input Capture measurement. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if ((channel_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Input Capture measurement. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + /* Disable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Input Capture measurement in interrupt mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + /* Check the TIM channel state */ + if ((channel_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Enable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Input Capture measurement in interrupt mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM Input Capture measurement in DMA mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @param pData The destination Buffer address. + * @param Length The length of data to be transferred from TIM peripheral to memory. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance)); + + /* Set the TIM channel state */ + if ((channel_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + /* Enable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->CCR3, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + case TIM_CHANNEL_4: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->CCR4, (uint32_t)pData, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); + break; + } + + default: + status = HAL_ERROR; + break; + } + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Input Capture measurement in DMA mode. + * @param htim TIM Input Capture handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channel */ + TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + case TIM_CHANNEL_4: + { + /* Disable the TIM Capture/Compare 4 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions + * @brief TIM One Pulse functions + * +@verbatim + ============================================================================== + ##### TIM One Pulse functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM One Pulse. + (+) De-initialize the TIM One Pulse. + (+) Start the TIM One Pulse. + (+) Stop the TIM One Pulse. + (+) Start the TIM One Pulse and enable interrupt. + (+) Stop the TIM One Pulse and disable interrupt. + (+) Start the TIM One Pulse and enable DMA transfer. + (+) Stop the TIM One Pulse and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM One Pulse Time Base according to the specified + * parameters in the TIM_HandleTypeDef and initializes the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_OnePulse_DeInit() before HAL_TIM_OnePulse_Init() + * @note When the timer instance is initialized in One Pulse mode, timer + * channels 1 and channel 2 are reserved and cannot be used for other + * purpose. + * @param htim TIM One Pulse handle + * @param OnePulseMode Select the One pulse mode. + * This parameter can be one of the following values: + * @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) +{ + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 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) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->OnePulse_MspInitCallback == NULL) + { + htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; + } + /* 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); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Configure the Time base in the One Pulse Mode */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Reset the OPM Bit */ + htim->Instance->CR1 &= ~TIM_CR1_OPM; + + /* Configure the OPM Mode */ + htim->Instance->CR1 |= OnePulseMode; + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM One Pulse + * @param htim TIM One Pulse handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->OnePulse_MspDeInitCallback == NULL) + { + htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; + } + /* DeInit the low level hardware */ + htim->OnePulse_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIM_OnePulse_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM One Pulse MSP. + * @param htim TIM One Pulse handle + * @retval None + */ +__weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief DeInitializes TIM One Pulse MSP. + * @param htim TIM One Pulse handle + * @retval None + */ +__weak void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_OnePulse_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM One Pulse signal generation. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @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) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + 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); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM One Pulse signal generation. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Disable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */ + + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM One Pulse signal generation in interrupt mode. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + 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 */ + + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Enable the main output */ + __HAL_TIM_MOE_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM One Pulse signal generation in interrupt mode. + * @note Though OutputChannel parameter is deprecated and ignored by the function + * it has been kept to avoid HAL_TIM API compatibility break. + * @note The pulse output channel is determined when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel See note above + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(OutputChannel); + + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + + /* Disable the Capture compare and the Input Capture channels + (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) + if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and + if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output + whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + { + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions + * @brief TIM Encoder functions + * +@verbatim + ============================================================================== + ##### TIM Encoder functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the TIM Encoder. + (+) De-initialize the TIM Encoder. + (+) Start the TIM Encoder. + (+) Stop the TIM Encoder. + (+) Start the TIM Encoder and enable interrupt. + (+) Stop the TIM Encoder and disable interrupt. + (+) Start the TIM Encoder and enable DMA transfer. + (+) Stop the TIM Encoder and disable DMA transfer. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Encoder Interface and initialize the associated handle. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * Ex: call @ref HAL_TIM_Encoder_DeInit() before HAL_TIM_Encoder_Init() + * @note Encoder mode and External clock mode 2 are not compatible and must not be selected together + * Ex: A call for @ref HAL_TIM_Encoder_Init will erase the settings of @ref HAL_TIM_ConfigClockSource + * using TIM_CLOCKSOURCE_ETRMODE2 and vice versa + * @note When the timer instance is initialized in Encoder mode, timer + * channels 1 and channel 2 are reserved and cannot be used for other + * purpose. + * @param htim TIM Encoder Interface handle + * @param sConfig TIM Encoder Interface configuration structure + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, const TIM_Encoder_InitTypeDef *sConfig) +{ + uint32_t tmpsmcr; + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode)); + assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection)); + assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection)); + assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC1Polarity)); + assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC2Polarity)); + assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler)); + assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler)); + assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter)); + assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy weak callbacks */ + TIM_ResetCallback(htim); + + if (htim->Encoder_MspInitCallback == NULL) + { + htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->Encoder_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIM_Encoder_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Reset the SMS and ECE bits */ + htim->Instance->SMCR &= ~(TIM_SMCR_SMS | TIM_SMCR_ECE); + + /* Configure the Time base in the Encoder Mode */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = htim->Instance->CCMR1; + + /* Get the TIMx CCER register value */ + tmpccer = htim->Instance->CCER; + + /* Set the encoder Mode */ + tmpsmcr |= sConfig->EncoderMode; + + /* Select the Capture Compare 1 and the Capture Compare 2 as input */ + tmpccmr1 &= ~(TIM_CCMR1_CC1S | TIM_CCMR1_CC2S); + tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8U)); + + /* Set the Capture Compare 1 and the Capture Compare 2 prescalers and filters */ + tmpccmr1 &= ~(TIM_CCMR1_IC1PSC | TIM_CCMR1_IC2PSC); + tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F); + tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8U); + tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U); + + /* Set the TI1 and the TI2 Polarities */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P); + tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP); + tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4U); + + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + + /* Write to TIMx CCMR1 */ + htim->Instance->CCMR1 = tmpccmr1; + + /* Write to TIMx CCER */ + htim->Instance->CCER = tmpccer; + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + + +/** + * @brief DeInitializes the TIM Encoder interface + * @param htim TIM Encoder Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->Encoder_MspDeInitCallback == NULL) + { + htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; + } + /* DeInit the low level hardware */ + htim->Encoder_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIM_Encoder_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Encoder Interface MSP. + * @param htim TIM Encoder Interface handle + * @retval None + */ +__weak void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Encoder_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Encoder Interface MSP. + * @param htim TIM Encoder Interface handle + * @retval None + */ +__weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_Encoder_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Encoder Interface. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel(s) state */ + if (Channel == TIM_CHANNEL_1) + { + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else if (Channel == TIM_CHANNEL_2) + { + if ((channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + + /* Enable the encoder interface channels */ + switch (Channel) + { + case TIM_CHANNEL_1: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + break; + } + + case TIM_CHANNEL_2: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + break; + } + + default : + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + break; + } + } + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Encoder Interface. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1 and 2 + (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */ + switch (Channel) + { + case TIM_CHANNEL_1: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + break; + } + + case TIM_CHANNEL_2: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + break; + } + + default : + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + break; + } + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel(s) state */ + if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Encoder Interface in interrupt mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel(s) state */ + if (Channel == TIM_CHANNEL_1) + { + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else if (Channel == TIM_CHANNEL_2) + { + if ((channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + + /* Enable the encoder interface channels */ + /* Enable the capture compare Interrupts 1 and/or 2 */ + switch (Channel) + { + case TIM_CHANNEL_1: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + default : + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + } + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Encoder Interface in interrupt mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1 and 2 + (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */ + if (Channel == TIM_CHANNEL_1) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts 1 */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + } + else if (Channel == TIM_CHANNEL_2) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts 2 */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + } + else + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts 1 and 2 */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel(s) state */ + if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Encoder Interface in DMA mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @param pData1 The destination Buffer address for IC1. + * @param pData2 The destination Buffer address for IC2. + * @param Length The length of data to be transferred from TIM peripheral to memory. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, + uint32_t *pData2, uint16_t Length) +{ + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel(s) state */ + if (Channel == TIM_CHANNEL_1) + { + if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((pData1 == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + } + else if (Channel == TIM_CHANNEL_2) + { + if ((channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_2_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((pData2 == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + } + else + { + if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + && (channel_2_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((((pData1 == NULL) || (pData2 == NULL))) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError; + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + break; + } + + default: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)pData2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + /* Enable the TIM Input Capture DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + + /* Enable the Capture compare channel */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + + /* Enable the Peripheral */ + __HAL_TIM_ENABLE(htim); + + break; + } + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Encoder Interface in DMA mode. + * @param htim TIM Encoder Interface handle + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1 and 2 + (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */ + if (Channel == TIM_CHANNEL_1) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + /* Disable the capture compare DMA Request 1 */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + } + else if (Channel == TIM_CHANNEL_2) + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare DMA Request 2 */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + } + else + { + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + + /* Disable the capture compare DMA Request 1 and 2 */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + } + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel(s) state */ + if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) + { + TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ +/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management + * @brief TIM IRQ handler management + * +@verbatim + ============================================================================== + ##### IRQ handler management ##### + ============================================================================== + [..] + This section provides Timer IRQ handler function. + +@endverbatim + * @{ + */ +/** + * @brief This function handles TIM interrupts requests. + * @param htim TIM handle + * @retval None + */ +void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) +{ + uint32_t itsource = htim->Instance->DIER; + uint32_t itflag = htim->Instance->SR; + + /* Capture compare 1 event */ + if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1)) + { + if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1)) + { + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + } + /* Capture compare 2 event */ + if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2)) + { + if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2)) + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + /* Input capture event */ + if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + /* Capture compare 3 event */ + if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3)) + { + if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3)) + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + /* Capture compare 4 event */ + if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4)) + { + if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4)) + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4); + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + /* Input capture event */ + if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + /* Output compare event */ + else + { +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->OC_DelayElapsedCallback(htim); + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_OC_DelayElapsedCallback(htim); + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; + } + } + /* TIM Update event */ + if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE)) + { + if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE)) + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedCallback(htim); +#else + HAL_TIM_PeriodElapsedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Break input event */ + if (((itflag & (TIM_FLAG_BREAK)) == (TIM_FLAG_BREAK)) || \ + ((itflag & (TIM_FLAG_SYSTEM_BREAK)) == (TIM_FLAG_SYSTEM_BREAK))) + { + if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK)) + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK | TIM_FLAG_SYSTEM_BREAK); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->BreakCallback(htim); +#else + HAL_TIMEx_BreakCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Break2 input event */ + if ((itflag & (TIM_FLAG_BREAK2)) == (TIM_FLAG_BREAK2)) + { + if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK)) + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->Break2Callback(htim); +#else + HAL_TIMEx_Break2Callback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM Trigger detection event */ + if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER)) + { + if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER)) + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerCallback(htim); +#else + HAL_TIM_TriggerCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } + /* TIM commutation event */ + if ((itflag & (TIM_FLAG_COM)) == (TIM_FLAG_COM)) + { + if ((itsource & (TIM_IT_COM)) == (TIM_IT_COM)) + { + __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_COM); +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->CommutationCallback(htim); +#else + HAL_TIMEx_CommutCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + } +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions + * @brief TIM Peripheral Control functions + * +@verbatim + ============================================================================== + ##### Peripheral Control functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Configure The Input Output channels for OC, PWM, IC or One Pulse mode. + (+) Configure External Clock source. + (+) Configure Complementary channels, break features and dead time. + (+) Configure Master and the Slave synchronization. + (+) Configure the DMA Burst Mode. + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the TIM Output Compare Channels according to the specified + * parameters in the TIM_OC_InitTypeDef. + * @param htim TIM Output Compare handle + * @param sConfig TIM Output Compare configuration structure + * @param Channel TIM Channels to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CHANNELS(Channel)); + assert_param(IS_TIM_OC_MODE(sConfig->OCMode)); + assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + + /* Process Locked */ + __HAL_LOCK(htim); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 1 in Output Compare */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 2 in Output Compare */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_3: + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 3 in Output Compare */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_4: + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 4 in Output Compare */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_5: + { + /* Check the parameters */ + assert_param(IS_TIM_CC5_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 5 in Output Compare */ + TIM_OC5_SetConfig(htim->Instance, sConfig); + break; + } + + case TIM_CHANNEL_6: + { + /* Check the parameters */ + assert_param(IS_TIM_CC6_INSTANCE(htim->Instance)); + + /* Configure the TIM Channel 6 in Output Compare */ + TIM_OC6_SetConfig(htim->Instance, sConfig); + break; + } + + default: + status = HAL_ERROR; + break; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Initializes the TIM Input Capture Channels according to the specified + * parameters in the TIM_IC_InitTypeDef. + * @param htim TIM IC handle + * @param sConfig TIM Input Capture configuration structure + * @param Channel TIM Channel to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @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) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + assert_param(IS_TIM_IC_POLARITY(sConfig->ICPolarity)); + 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); + + if (Channel == TIM_CHANNEL_1) + { + /* TI1 Configuration */ + TIM_TI1_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC1PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; + + /* Set the IC1PSC value */ + htim->Instance->CCMR1 |= sConfig->ICPrescaler; + } + else if (Channel == TIM_CHANNEL_2) + { + /* TI2 Configuration */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + TIM_TI2_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC2PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC; + + /* Set the IC2PSC value */ + htim->Instance->CCMR1 |= (sConfig->ICPrescaler << 8U); + } + else if (Channel == TIM_CHANNEL_3) + { + /* TI3 Configuration */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + TIM_TI3_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC3PSC Bits */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC; + + /* Set the IC3PSC value */ + htim->Instance->CCMR2 |= sConfig->ICPrescaler; + } + else if (Channel == TIM_CHANNEL_4) + { + /* TI4 Configuration */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + TIM_TI4_SetConfig(htim->Instance, + sConfig->ICPolarity, + sConfig->ICSelection, + sConfig->ICFilter); + + /* Reset the IC4PSC Bits */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC; + + /* Set the IC4PSC value */ + htim->Instance->CCMR2 |= (sConfig->ICPrescaler << 8U); + } + else + { + status = HAL_ERROR; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Initializes the TIM PWM channels according to the specified + * parameters in the TIM_OC_InitTypeDef. + * @param htim TIM PWM handle + * @param sConfig TIM PWM configuration structure + * @param Channel TIM Channels to be configured + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, + const TIM_OC_InitTypeDef *sConfig, + uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CHANNELS(Channel)); + 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); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Configure the Channel 1 in PWM mode */ + TIM_OC1_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; + htim->Instance->CCMR1 |= sConfig->OCFastMode; + break; + } + + case TIM_CHANNEL_2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + break; + } + + case TIM_CHANNEL_3: + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; + htim->Instance->CCMR2 |= sConfig->OCFastMode; + break; + } + + case TIM_CHANNEL_4: + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + break; + } + + case TIM_CHANNEL_5: + { + /* Check the parameters */ + assert_param(IS_TIM_CC5_INSTANCE(htim->Instance)); + + /* Configure the Channel 5 in PWM mode */ + TIM_OC5_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel5*/ + htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE; + htim->Instance->CCMR3 |= sConfig->OCFastMode; + break; + } + + case TIM_CHANNEL_6: + { + /* Check the parameters */ + assert_param(IS_TIM_CC6_INSTANCE(htim->Instance)); + + /* Configure the Channel 6 in PWM mode */ + TIM_OC6_SetConfig(htim->Instance, sConfig); + + /* Set the Preload enable bit for channel6 */ + htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE; + + /* Configure the Output Fast mode */ + htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE; + htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U; + break; + } + + default: + status = HAL_ERROR; + break; + } + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Initializes the TIM One Pulse Channels according to the specified + * parameters in the TIM_OnePulse_InitTypeDef. + * @param htim TIM One Pulse handle + * @param sConfig TIM One Pulse configuration structure + * @param OutputChannel TIM output channel to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @param InputChannel TIM input Channel to configure + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @note To output a waveform with a minimum delay user can enable the fast + * mode by calling the @ref __HAL_TIM_ENABLE_OCxFAST macro. Then CCx + * output is forced in response to the edge detection on TIx input, + * without taking in account the comparison. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, + uint32_t OutputChannel, uint32_t InputChannel) +{ + HAL_StatusTypeDef status = HAL_OK; + TIM_OC_InitTypeDef temp1; + + /* Check the parameters */ + assert_param(IS_TIM_OPM_CHANNELS(OutputChannel)); + assert_param(IS_TIM_OPM_CHANNELS(InputChannel)); + + if (OutputChannel != InputChannel) + { + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Extract the Output compare configuration from sConfig structure */ + temp1.OCMode = sConfig->OCMode; + temp1.Pulse = sConfig->Pulse; + temp1.OCPolarity = sConfig->OCPolarity; + temp1.OCNPolarity = sConfig->OCNPolarity; + temp1.OCIdleState = sConfig->OCIdleState; + temp1.OCNIdleState = sConfig->OCNIdleState; + + switch (OutputChannel) + { + case TIM_CHANNEL_1: + { + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + TIM_OC1_SetConfig(htim->Instance, &temp1); + break; + } + + case TIM_CHANNEL_2: + { + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + TIM_OC2_SetConfig(htim->Instance, &temp1); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + switch (InputChannel) + { + case TIM_CHANNEL_1: + { + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + TIM_TI1_SetConfig(htim->Instance, sConfig->ICPolarity, + sConfig->ICSelection, sConfig->ICFilter); + + /* Reset the IC1PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; + + /* Select the Trigger source */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= TIM_TS_TI1FP1; + + /* Select the Slave Mode */ + htim->Instance->SMCR &= ~TIM_SMCR_SMS; + htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + break; + } + + case TIM_CHANNEL_2: + { + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + TIM_TI2_SetConfig(htim->Instance, sConfig->ICPolarity, + sConfig->ICSelection, sConfig->ICFilter); + + /* Reset the IC2PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC; + + /* Select the Trigger source */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= TIM_TS_TI2FP2; + + /* Select the Slave Mode */ + htim->Instance->SMCR &= ~TIM_SMCR_SMS; + htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + break; + } + + default: + status = HAL_ERROR; + break; + } + } + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return status; + } + else + { + return HAL_ERROR; + } +} + +/** + * @brief Configure the DMA Burst to transfer Data from the memory to the TIM peripheral + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data write + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_RCR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_BDTR + * @arg TIM_DMABASE_OR + * @arg TIM_DMABASE_CCMR3 + * @arg TIM_DMABASE_CCR5 + * @arg TIM_DMABASE_CCR6 + * @arg TIM_DMABASE_AF1 (*) + * @arg TIM_DMABASE_AF2 (*) + * (*) value not defined in all devices + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_COM: TIM Commutation DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @note This function should be used only when BurstLength is equal to DMA data transfer length. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, + uint32_t BurstLength) +{ + HAL_StatusTypeDef status; + + status = HAL_TIM_DMABurst_MultiWriteStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength, + ((BurstLength) >> 8U) + 1U); + + + + return status; +} + +/** + * @brief Configure the DMA Burst to transfer multiple Data from the memory to the TIM peripheral + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data write + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_RCR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_BDTR + * @arg TIM_DMABASE_OR + * @arg TIM_DMABASE_CCMR3 + * @arg TIM_DMABASE_CCR5 + * @arg TIM_DMABASE_CCR6 + * @arg TIM_DMABASE_AF1 (*) + * @arg TIM_DMABASE_AF2 (*) + * (*) value not defined in all devices + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_COM: TIM Commutation DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @param DataLength Data length. This parameter can be one value + * between 1 and 0xFFFF. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, const uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); + assert_param(IS_TIM_DMA_BASE(BurstBaseAddress)); + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + assert_param(IS_TIM_DMA_LENGTH(BurstLength)); + assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength)); + + if (htim->DMABurstState == HAL_DMA_BURST_STATE_BUSY) + { + return HAL_BUSY; + } + else if (htim->DMABurstState == HAL_DMA_BURST_STATE_READY) + { + if ((BurstBuffer == NULL) && (BurstLength > 0U)) + { + return HAL_ERROR; + } + else + { + htim->DMABurstState = HAL_DMA_BURST_STATE_BUSY; + } + } + else + { + /* nothing to do */ + } + + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + /* Set the DMA Period elapsed callbacks */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; + htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC4: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_COM: + { + /* Set the DMA commutation callbacks */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt; + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_TRIGGER: + { + /* Set the DMA trigger callbacks */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt; + htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer, + (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Configure the DMA Burst Mode */ + htim->Instance->DCR = (BurstBaseAddress | BurstLength); + /* Enable the TIM DMA Request */ + __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc); + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM DMA Burst mode + * @param htim TIM handle + * @param BurstRequestSrc TIM DMA Request sources to disable + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + + /* Abort the DMA transfer (at least disable the DMA stream) */ + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); + break; + } + case TIM_DMA_CC1: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + case TIM_DMA_CC2: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + case TIM_DMA_CC3: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + case TIM_DMA_CC4: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + case TIM_DMA_COM: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_COMMUTATION]); + break; + } + case TIM_DMA_TRIGGER: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]); + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the TIM Update DMA request */ + __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc); + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + } + + /* Return function status */ + return status; +} + +/** + * @brief Configure the DMA Burst to transfer Data from the TIM peripheral to the memory + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data read + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_RCR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_BDTR + * @arg TIM_DMABASE_OR + * @arg TIM_DMABASE_CCMR3 + * @arg TIM_DMABASE_CCR5 + * @arg TIM_DMABASE_CCR6 + * @arg TIM_DMABASE_AF1 (*) + * @arg TIM_DMABASE_AF2 (*) + * (*) value not defined in all devices + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_COM: TIM Commutation DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @note This function should be used only when BurstLength is equal to DMA data transfer length. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength) +{ + HAL_StatusTypeDef status; + + status = HAL_TIM_DMABurst_MultiReadStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, BurstLength, + ((BurstLength) >> 8U) + 1U); + + + return status; +} + +/** + * @brief Configure the DMA Burst to transfer Data from the TIM peripheral to the memory + * @param htim TIM handle + * @param BurstBaseAddress TIM Base address from where the DMA will start the Data read + * This parameter can be one of the following values: + * @arg TIM_DMABASE_CR1 + * @arg TIM_DMABASE_CR2 + * @arg TIM_DMABASE_SMCR + * @arg TIM_DMABASE_DIER + * @arg TIM_DMABASE_SR + * @arg TIM_DMABASE_EGR + * @arg TIM_DMABASE_CCMR1 + * @arg TIM_DMABASE_CCMR2 + * @arg TIM_DMABASE_CCER + * @arg TIM_DMABASE_CNT + * @arg TIM_DMABASE_PSC + * @arg TIM_DMABASE_ARR + * @arg TIM_DMABASE_RCR + * @arg TIM_DMABASE_CCR1 + * @arg TIM_DMABASE_CCR2 + * @arg TIM_DMABASE_CCR3 + * @arg TIM_DMABASE_CCR4 + * @arg TIM_DMABASE_BDTR + * @arg TIM_DMABASE_OR + * @arg TIM_DMABASE_CCMR3 + * @arg TIM_DMABASE_CCR5 + * @arg TIM_DMABASE_CCR6 + * @arg TIM_DMABASE_AF1 (*) + * @arg TIM_DMABASE_AF2 (*) + * (*) value not defined in all devices + * @param BurstRequestSrc TIM DMA Request sources + * This parameter can be one of the following values: + * @arg TIM_DMA_UPDATE: TIM update Interrupt source + * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source + * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source + * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source + * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source + * @arg TIM_DMA_COM: TIM Commutation DMA source + * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source + * @param BurstBuffer The Buffer address. + * @param BurstLength DMA Burst length. This parameter can be one value + * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. + * @param DataLength Data length. This parameter can be one value + * between 1 and 0xFFFF. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, + uint32_t BurstRequestSrc, uint32_t *BurstBuffer, + uint32_t BurstLength, uint32_t DataLength) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); + assert_param(IS_TIM_DMA_BASE(BurstBaseAddress)); + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + assert_param(IS_TIM_DMA_LENGTH(BurstLength)); + assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength)); + + if (htim->DMABurstState == HAL_DMA_BURST_STATE_BUSY) + { + return HAL_BUSY; + } + else if (htim->DMABurstState == HAL_DMA_BURST_STATE_READY) + { + if ((BurstBuffer == NULL) && (BurstLength > 0U)) + { + return HAL_ERROR; + } + else + { + htim->DMABurstState = HAL_DMA_BURST_STATE_BUSY; + } + } + else + { + /* nothing to do */ + } + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + /* Set the DMA Period elapsed callbacks */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; + htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC1: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC2: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC3: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_CC4: + { + /* Set the DMA capture callbacks */ + htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_COM: + { + /* Set the DMA commutation callbacks */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt; + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + case TIM_DMA_TRIGGER: + { + /* Set the DMA trigger callbacks */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt; + htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)&htim->Instance->DMAR, (uint32_t)BurstBuffer, + DataLength) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Configure the DMA Burst Mode */ + htim->Instance->DCR = (BurstBaseAddress | BurstLength); + + /* Enable the TIM DMA Request */ + __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc); + } + + /* Return function status */ + return status; +} + +/** + * @brief Stop the DMA burst reading + * @param htim TIM handle + * @param BurstRequestSrc TIM DMA Request sources to disable. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + + /* Abort the DMA transfer (at least disable the DMA stream) */ + switch (BurstRequestSrc) + { + case TIM_DMA_UPDATE: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); + break; + } + case TIM_DMA_CC1: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + case TIM_DMA_CC2: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + case TIM_DMA_CC3: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + case TIM_DMA_CC4: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + break; + } + case TIM_DMA_COM: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_COMMUTATION]); + break; + } + case TIM_DMA_TRIGGER: + { + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]); + break; + } + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the TIM Update DMA request */ + __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc); + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + } + + /* Return function status */ + return status; +} + +/** + * @brief Generate a software event + * @param htim TIM handle + * @param EventSource specifies the event source. + * This parameter can be one of the following values: + * @arg TIM_EVENTSOURCE_UPDATE: Timer update Event source + * @arg TIM_EVENTSOURCE_CC1: Timer Capture Compare 1 Event source + * @arg TIM_EVENTSOURCE_CC2: Timer Capture Compare 2 Event source + * @arg TIM_EVENTSOURCE_CC3: Timer Capture Compare 3 Event source + * @arg TIM_EVENTSOURCE_CC4: Timer Capture Compare 4 Event source + * @arg TIM_EVENTSOURCE_COM: Timer COM event source + * @arg TIM_EVENTSOURCE_TRIGGER: Timer Trigger Event source + * @arg TIM_EVENTSOURCE_BREAK: Timer Break event source + * @arg TIM_EVENTSOURCE_BREAK2: Timer Break2 event source + * @note Basic timers can only generate an update event. + * @note TIM_EVENTSOURCE_COM is relevant only with advanced timer instances. + * @note TIM_EVENTSOURCE_BREAK and TIM_EVENTSOURCE_BREAK2 are relevant + * only for timer instances supporting break input(s). + * @retval HAL status + */ + +HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_EVENT_SOURCE(EventSource)); + + /* Process Locked */ + __HAL_LOCK(htim); + + /* Change the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Set the event sources */ + htim->Instance->EGR = EventSource; + + /* Change the TIM state */ + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Configures the OCRef clear feature + * @param htim TIM handle + * @param sClearInputConfig pointer to a TIM_ClearInputConfigTypeDef structure that + * contains the OCREF clear feature and parameters for the TIM peripheral. + * @param Channel specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @arg TIM_CHANNEL_4: TIM Channel 4 + * @arg TIM_CHANNEL_5: TIM Channel 5 + * @arg TIM_CHANNEL_6: TIM Channel 6 + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, + const TIM_ClearInputConfigTypeDef *sClearInputConfig, + uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_OCXREF_CLEAR_INSTANCE(htim->Instance)); + assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource)); + + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + switch (sClearInputConfig->ClearInputSource) + { + case TIM_CLEARINPUTSOURCE_NONE: + { + /* Clear the OCREF clear selection bit and the the ETR Bits */ + CLEAR_BIT(htim->Instance->SMCR, (TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP)); + break; + } + + case TIM_CLEARINPUTSOURCE_ETR: + { + /* Check the parameters */ + assert_param(IS_TIM_CLEARINPUT_POLARITY(sClearInputConfig->ClearInputPolarity)); + assert_param(IS_TIM_CLEARINPUT_PRESCALER(sClearInputConfig->ClearInputPrescaler)); + assert_param(IS_TIM_CLEARINPUT_FILTER(sClearInputConfig->ClearInputFilter)); + + /* When OCRef clear feature is used with ETR source, ETR prescaler must be off */ + if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1) + { + htim->State = HAL_TIM_STATE_READY; + __HAL_UNLOCK(htim); + return HAL_ERROR; + } + + TIM_ETR_SetConfig(htim->Instance, + sClearInputConfig->ClearInputPrescaler, + sClearInputConfig->ClearInputPolarity, + sClearInputConfig->ClearInputFilter); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + switch (Channel) + { + case TIM_CHANNEL_1: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 1 */ + SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE); + } + else + { + /* Disable the OCREF clear feature for Channel 1 */ + CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE); + } + break; + } + case TIM_CHANNEL_2: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 2 */ + SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE); + } + else + { + /* Disable the OCREF clear feature for Channel 2 */ + CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE); + } + break; + } + case TIM_CHANNEL_3: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 3 */ + SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE); + } + else + { + /* Disable the OCREF clear feature for Channel 3 */ + CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE); + } + break; + } + case TIM_CHANNEL_4: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 4 */ + SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE); + } + else + { + /* Disable the OCREF clear feature for Channel 4 */ + CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE); + } + break; + } + case TIM_CHANNEL_5: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 5 */ + SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE); + } + else + { + /* Disable the OCREF clear feature for Channel 5 */ + CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE); + } + break; + } + case TIM_CHANNEL_6: + { + if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) + { + /* Enable the OCREF clear feature for Channel 6 */ + SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE); + } + else + { + /* Disable the OCREF clear feature for Channel 6 */ + CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE); + } + break; + } + default: + break; + } + } + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Configures the clock source to be used + * @param htim TIM handle + * @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) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Check the parameters */ + assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); + + /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ + tmpsmcr = htim->Instance->SMCR; + tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + htim->Instance->SMCR = tmpsmcr; + + switch (sClockSourceConfig->ClockSource) + { + case TIM_CLOCKSOURCE_INTERNAL: + { + assert_param(IS_TIM_INSTANCE(htim->Instance)); + break; + } + + case TIM_CLOCKSOURCE_ETRMODE1: + { + /* Check whether or not the timer instance supports external trigger input mode 1 (ETRF)*/ + assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance)); + + /* Check ETR input conditioning related parameters */ + 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, + sClockSourceConfig->ClockPrescaler, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + + /* Select the External clock mode1 and the ETRF trigger */ + tmpsmcr = htim->Instance->SMCR; + tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + break; + } + + case TIM_CLOCKSOURCE_ETRMODE2: + { + /* Check whether or not the timer instance supports external trigger input mode 2 (ETRF)*/ + assert_param(IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(htim->Instance)); + + /* Check ETR input conditioning related parameters */ + 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, + sClockSourceConfig->ClockPrescaler, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + /* Enable the External clock mode2 */ + htim->Instance->SMCR |= TIM_SMCR_ECE; + break; + } + + case TIM_CLOCKSOURCE_TI1: + { + /* Check whether or not the timer instance supports external clock mode 1 */ + assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); + + /* 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, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); + break; + } + + case TIM_CLOCKSOURCE_TI2: + { + /* Check whether or not the timer instance supports external clock mode 1 (ETRF)*/ + assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); + + /* 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, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); + break; + } + + case TIM_CLOCKSOURCE_TI1ED: + { + /* Check whether or not the timer instance supports external clock mode 1 */ + assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); + + /* 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, + sClockSourceConfig->ClockPolarity, + sClockSourceConfig->ClockFilter); + TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); + break; + } + + case TIM_CLOCKSOURCE_ITR0: + case TIM_CLOCKSOURCE_ITR1: + case TIM_CLOCKSOURCE_ITR2: + 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); + break; + } + + default: + status = HAL_ERROR; + break; + } + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return status; +} + +/** + * @brief Selects the signal connected to the TI1 input: direct from CH1_input + * or a XOR combination between CH1_input, CH2_input & CH3_input + * @param htim TIM handle. + * @param TI1_Selection Indicate whether or not channel 1 is connected to the + * output of a XOR gate. + * This parameter can be one of the following values: + * @arg TIM_TI1SELECTION_CH1: The TIMx_CH1 pin is connected to TI1 input + * @arg TIM_TI1SELECTION_XORCOMBINATION: The TIMx_CH1, CH2 and CH3 + * pins are connected to the TI1 input (XOR combination) + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection) +{ + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_XOR_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TI1SELECTION(TI1_Selection)); + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + + /* Reset the TI1 selection */ + tmpcr2 &= ~TIM_CR2_TI1S; + + /* Set the TI1 selection */ + tmpcr2 |= TI1_Selection; + + /* Write to TIMxCR2 */ + htim->Instance->CR2 = tmpcr2; + + return HAL_OK; +} + +/** + * @brief Configures the TIM in Slave mode + * @param htim TIM handle. + * @param sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that + * contains the selected trigger (internal trigger input, filtered + * 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) +{ + /* 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); + + htim->State = HAL_TIM_STATE_BUSY; + + if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK) + { + htim->State = HAL_TIM_STATE_READY; + __HAL_UNLOCK(htim); + return HAL_ERROR; + } + + /* Disable Trigger Interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_TRIGGER); + + /* Disable Trigger DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER); + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configures the TIM in Slave mode in interrupt mode + * @param htim TIM handle. + * @param sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that + * contains the selected trigger (internal trigger input, filtered + * 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_IT(TIM_HandleTypeDef *htim, + const TIM_SlaveConfigTypeDef *sSlaveConfig) +{ + /* 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); + + htim->State = HAL_TIM_STATE_BUSY; + + if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK) + { + htim->State = HAL_TIM_STATE_READY; + __HAL_UNLOCK(htim); + return HAL_ERROR; + } + + /* Enable Trigger Interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_TRIGGER); + + /* Disable Trigger DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER); + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Read the captured value from Capture Compare unit + * @param htim TIM handle. + * @param Channel TIM Channels to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @arg TIM_CHANNEL_4: TIM Channel 4 selected + * @retval Captured value + */ +uint32_t HAL_TIM_ReadCapturedValue(const TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpreg = 0U; + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + + /* Return the capture 1 value */ + tmpreg = htim->Instance->CCR1; + + break; + } + case TIM_CHANNEL_2: + { + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + + /* Return the capture 2 value */ + tmpreg = htim->Instance->CCR2; + + break; + } + + case TIM_CHANNEL_3: + { + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + + /* Return the capture 3 value */ + tmpreg = htim->Instance->CCR3; + + break; + } + + case TIM_CHANNEL_4: + { + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + + /* Return the capture 4 value */ + tmpreg = htim->Instance->CCR4; + + break; + } + + default: + break; + } + + return tmpreg; +} + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions + * @brief TIM Callbacks functions + * +@verbatim + ============================================================================== + ##### TIM Callbacks functions ##### + ============================================================================== + [..] + This section provides TIM callback functions: + (+) TIM Period elapsed callback + (+) TIM Output Compare callback + (+) TIM Input capture callback + (+) TIM Trigger callback + (+) TIM Error callback + +@endverbatim + * @{ + */ + +/** + * @brief Period elapsed callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PeriodElapsedCallback could be implemented in the user file + */ +} + +/** + * @brief Period elapsed half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PeriodElapsedHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Output Compare callback in non-blocking mode + * @param htim TIM OC handle + * @retval None + */ +__weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief Input Capture callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief Input Capture half complete callback in non-blocking mode + * @param htim TIM IC handle + * @retval None + */ +__weak void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_IC_CaptureHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief PWM Pulse finished callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief PWM Pulse finished half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_PWM_PulseFinishedHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Hall Trigger detection callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief Hall Trigger detection half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_TriggerHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Timer error callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIM_ErrorCallback could be implemented in the user file + */ +} + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +/** + * @brief Register a User TIM callback to be used instead of the weak predefined callback + * @param htim tim handle + * @param CallbackID ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID + * @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID + * @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID + * @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID + * @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID + * @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID + * @arg @ref HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID Hall Sensor MspInit Callback ID + * @arg @ref HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID Hall Sensor MspDeInit Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID + * @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID + * @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID + * @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callback ID + * @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID + * @arg @ref HAL_TIM_COMMUTATION_CB_ID Commutation Callback ID + * @arg @ref HAL_TIM_COMMUTATION_HALF_CB_ID Commutation half complete Callback ID + * @arg @ref HAL_TIM_BREAK_CB_ID Break Callback ID + * @arg @ref HAL_TIM_BREAK2_CB_ID Break2 Callback ID + * @param pCallback pointer to the callback function + * @retval status + */ +HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, + pTIM_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + return HAL_ERROR; + } + + if (htim->State == HAL_TIM_STATE_READY) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + htim->Base_MspInitCallback = pCallback; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + htim->Base_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + htim->IC_MspInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + htim->IC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + htim->OC_MspInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + htim->OC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + htim->PWM_MspInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + htim->PWM_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + htim->OnePulse_MspInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + htim->OnePulse_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + htim->Encoder_MspInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + htim->Encoder_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : + htim->HallSensor_MspInitCallback = pCallback; + break; + + case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : + htim->HallSensor_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_PERIOD_ELAPSED_CB_ID : + htim->PeriodElapsedCallback = pCallback; + break; + + case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID : + htim->PeriodElapsedHalfCpltCallback = pCallback; + break; + + case HAL_TIM_TRIGGER_CB_ID : + htim->TriggerCallback = pCallback; + break; + + case HAL_TIM_TRIGGER_HALF_CB_ID : + htim->TriggerHalfCpltCallback = pCallback; + break; + + case HAL_TIM_IC_CAPTURE_CB_ID : + htim->IC_CaptureCallback = pCallback; + break; + + case HAL_TIM_IC_CAPTURE_HALF_CB_ID : + htim->IC_CaptureHalfCpltCallback = pCallback; + break; + + case HAL_TIM_OC_DELAY_ELAPSED_CB_ID : + htim->OC_DelayElapsedCallback = pCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_CB_ID : + htim->PWM_PulseFinishedCallback = pCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID : + htim->PWM_PulseFinishedHalfCpltCallback = pCallback; + break; + + case HAL_TIM_ERROR_CB_ID : + htim->ErrorCallback = pCallback; + break; + + case HAL_TIM_COMMUTATION_CB_ID : + htim->CommutationCallback = pCallback; + break; + + case HAL_TIM_COMMUTATION_HALF_CB_ID : + htim->CommutationHalfCpltCallback = pCallback; + break; + + case HAL_TIM_BREAK_CB_ID : + htim->BreakCallback = pCallback; + break; + + case HAL_TIM_BREAK2_CB_ID : + htim->Break2Callback = pCallback; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (htim->State == HAL_TIM_STATE_RESET) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + htim->Base_MspInitCallback = pCallback; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + htim->Base_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + htim->IC_MspInitCallback = pCallback; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + htim->IC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + htim->OC_MspInitCallback = pCallback; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + htim->OC_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + htim->PWM_MspInitCallback = pCallback; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + htim->PWM_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + htim->OnePulse_MspInitCallback = pCallback; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + htim->OnePulse_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + htim->Encoder_MspInitCallback = pCallback; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + htim->Encoder_MspDeInitCallback = pCallback; + break; + + case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : + htim->HallSensor_MspInitCallback = pCallback; + break; + + case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : + htim->HallSensor_MspDeInitCallback = pCallback; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} + +/** + * @brief Unregister a TIM callback + * TIM callback is redirected to the weak predefined callback + * @param htim tim handle + * @param CallbackID ID of the callback to be unregistered + * This parameter can be one of the following values: + * @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID + * @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID + * @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID + * @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID + * @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID + * @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID + * @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID + * @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID + * @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID + * @arg @ref HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID Hall Sensor MspInit Callback ID + * @arg @ref HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID Hall Sensor MspDeInit Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID + * @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID + * @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID + * @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID + * @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID + * @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID + * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callback ID + * @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID + * @arg @ref HAL_TIM_COMMUTATION_CB_ID Commutation Callback ID + * @arg @ref HAL_TIM_COMMUTATION_HALF_CB_ID Commutation half complete Callback ID + * @arg @ref HAL_TIM_BREAK_CB_ID Break Callback ID + * @arg @ref HAL_TIM_BREAK2_CB_ID Break2 Callback ID + * @retval status + */ +HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (htim->State == HAL_TIM_STATE_READY) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + /* Legacy weak Base MspInit Callback */ + htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + /* Legacy weak Base Msp DeInit Callback */ + htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + /* Legacy weak IC Msp Init Callback */ + htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + /* Legacy weak IC Msp DeInit Callback */ + htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + /* Legacy weak OC Msp Init Callback */ + htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + /* Legacy weak OC Msp DeInit Callback */ + htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + /* Legacy weak PWM Msp Init Callback */ + htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + /* Legacy weak PWM Msp DeInit Callback */ + htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + /* Legacy weak One Pulse Msp Init Callback */ + htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + /* Legacy weak One Pulse Msp DeInit Callback */ + htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + /* Legacy weak Encoder Msp Init Callback */ + htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + /* Legacy weak Encoder Msp DeInit Callback */ + htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; + break; + + case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : + /* Legacy weak Hall Sensor Msp Init Callback */ + htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; + break; + + case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : + /* Legacy weak Hall Sensor Msp DeInit Callback */ + htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; + break; + + case HAL_TIM_PERIOD_ELAPSED_CB_ID : + /* Legacy weak Period Elapsed Callback */ + htim->PeriodElapsedCallback = HAL_TIM_PeriodElapsedCallback; + break; + + case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID : + /* Legacy weak Period Elapsed half complete Callback */ + htim->PeriodElapsedHalfCpltCallback = HAL_TIM_PeriodElapsedHalfCpltCallback; + break; + + case HAL_TIM_TRIGGER_CB_ID : + /* Legacy weak Trigger Callback */ + htim->TriggerCallback = HAL_TIM_TriggerCallback; + break; + + case HAL_TIM_TRIGGER_HALF_CB_ID : + /* Legacy weak Trigger half complete Callback */ + htim->TriggerHalfCpltCallback = HAL_TIM_TriggerHalfCpltCallback; + break; + + case HAL_TIM_IC_CAPTURE_CB_ID : + /* Legacy weak IC Capture Callback */ + htim->IC_CaptureCallback = HAL_TIM_IC_CaptureCallback; + break; + + case HAL_TIM_IC_CAPTURE_HALF_CB_ID : + /* Legacy weak IC Capture half complete Callback */ + htim->IC_CaptureHalfCpltCallback = HAL_TIM_IC_CaptureHalfCpltCallback; + break; + + case HAL_TIM_OC_DELAY_ELAPSED_CB_ID : + /* Legacy weak OC Delay Elapsed Callback */ + htim->OC_DelayElapsedCallback = HAL_TIM_OC_DelayElapsedCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_CB_ID : + /* Legacy weak PWM Pulse Finished Callback */ + htim->PWM_PulseFinishedCallback = HAL_TIM_PWM_PulseFinishedCallback; + break; + + case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID : + /* Legacy weak PWM Pulse Finished half complete Callback */ + htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; + break; + + case HAL_TIM_ERROR_CB_ID : + /* Legacy weak Error Callback */ + htim->ErrorCallback = HAL_TIM_ErrorCallback; + break; + + case HAL_TIM_COMMUTATION_CB_ID : + /* Legacy weak Commutation Callback */ + htim->CommutationCallback = HAL_TIMEx_CommutCallback; + break; + + case HAL_TIM_COMMUTATION_HALF_CB_ID : + /* Legacy weak Commutation half complete Callback */ + htim->CommutationHalfCpltCallback = HAL_TIMEx_CommutHalfCpltCallback; + break; + + case HAL_TIM_BREAK_CB_ID : + /* Legacy weak Break Callback */ + htim->BreakCallback = HAL_TIMEx_BreakCallback; + break; + + case HAL_TIM_BREAK2_CB_ID : + /* Legacy weak Break2 Callback */ + htim->Break2Callback = HAL_TIMEx_Break2Callback; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (htim->State == HAL_TIM_STATE_RESET) + { + switch (CallbackID) + { + case HAL_TIM_BASE_MSPINIT_CB_ID : + /* Legacy weak Base MspInit Callback */ + htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; + break; + + case HAL_TIM_BASE_MSPDEINIT_CB_ID : + /* Legacy weak Base Msp DeInit Callback */ + htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; + break; + + case HAL_TIM_IC_MSPINIT_CB_ID : + /* Legacy weak IC Msp Init Callback */ + htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; + break; + + case HAL_TIM_IC_MSPDEINIT_CB_ID : + /* Legacy weak IC Msp DeInit Callback */ + htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; + break; + + case HAL_TIM_OC_MSPINIT_CB_ID : + /* Legacy weak OC Msp Init Callback */ + htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; + break; + + case HAL_TIM_OC_MSPDEINIT_CB_ID : + /* Legacy weak OC Msp DeInit Callback */ + htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; + break; + + case HAL_TIM_PWM_MSPINIT_CB_ID : + /* Legacy weak PWM Msp Init Callback */ + htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; + break; + + case HAL_TIM_PWM_MSPDEINIT_CB_ID : + /* Legacy weak PWM Msp DeInit Callback */ + htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; + break; + + case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : + /* Legacy weak One Pulse Msp Init Callback */ + htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; + break; + + case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : + /* Legacy weak One Pulse Msp DeInit Callback */ + htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; + break; + + case HAL_TIM_ENCODER_MSPINIT_CB_ID : + /* Legacy weak Encoder Msp Init Callback */ + htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; + break; + + case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : + /* Legacy weak Encoder Msp DeInit Callback */ + htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; + break; + + case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : + /* Legacy weak Hall Sensor Msp Init Callback */ + htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; + break; + + case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : + /* Legacy weak Hall Sensor Msp DeInit Callback */ + htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; + break; + + default : + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Return error status */ + status = HAL_ERROR; + } + + return status; +} +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions + * @brief TIM Peripheral State functions + * +@verbatim + ============================================================================== + ##### Peripheral State functions ##### + ============================================================================== + [..] + This subsection permits to get in run-time the status of the peripheral + and the data flow. + +@endverbatim + * @{ + */ + +/** + * @brief Return the TIM Base handle state. + * @param htim TIM Base handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM OC handle state. + * @param htim TIM Output Compare handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM PWM handle state. + * @param htim TIM handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM Input Capture handle state. + * @param htim TIM IC handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM One Pulse Mode handle state. + * @param htim TIM OPM handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM Encoder Mode handle state. + * @param htim TIM Encoder Interface handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return the TIM Encoder Mode handle state. + * @param htim TIM handle + * @retval Active channel + */ +HAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(const TIM_HandleTypeDef *htim) +{ + return htim->Channel; +} + +/** + * @brief Return actual state of the TIM channel. + * @param htim TIM handle + * @param Channel TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @arg TIM_CHANNEL_4: TIM Channel 4 + * @arg TIM_CHANNEL_5: TIM Channel 5 + * @arg TIM_CHANNEL_6: TIM Channel 6 + * @retval TIM Channel state + */ +HAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(const TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_TIM_ChannelStateTypeDef channel_state; + + /* Check the parameters */ + assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + + channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + + return channel_state; +} + +/** + * @brief Return actual state of a DMA burst operation. + * @param htim TIM handle + * @retval DMA burst state + */ +HAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(const TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); + + return htim->DMABurstState; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @defgroup TIM_Private_Functions TIM Private Functions + * @{ + */ + +/** + * @brief TIM DMA error callback + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMAError(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + htim->State = HAL_TIM_STATE_READY; + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->ErrorCallback(htim); +#else + HAL_TIM_ErrorCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Delay Pulse complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + } + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Delay Pulse half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PWM_PulseFinishedHalfCpltCallback(htim); +#else + HAL_TIM_PWM_PulseFinishedHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Capture complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + } + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureCallback(htim); +#else + HAL_TIM_IC_CaptureCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Capture half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->IC_CaptureHalfCpltCallback(htim); +#else + HAL_TIM_IC_CaptureHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA Period Elapse complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (htim->hdma[TIM_DMA_ID_UPDATE]->Init.Mode == DMA_NORMAL) + { + htim->State = HAL_TIM_STATE_READY; + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedCallback(htim); +#else + HAL_TIM_PeriodElapsedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Period Elapse half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PeriodElapsedHalfCpltCallback(htim); +#else + HAL_TIM_PeriodElapsedHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Trigger callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (htim->hdma[TIM_DMA_ID_TRIGGER]->Init.Mode == DMA_NORMAL) + { + htim->State = HAL_TIM_STATE_READY; + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerCallback(htim); +#else + HAL_TIM_TriggerCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Trigger half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->TriggerHalfCpltCallback(htim); +#else + HAL_TIM_TriggerHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief Time Base configuration + * @param TIMx TIM peripheral + * @param Structure TIM Base configuration structure + * @retval None + */ +void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +{ + uint32_t tmpcr1; + tmpcr1 = TIMx->CR1; + + /* Set TIM Time Base Unit parameters ---------------------------------------*/ + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + { + /* Select the Counter Mode */ + tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); + tmpcr1 |= Structure->CounterMode; + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + { + /* Set the clock division */ + tmpcr1 &= ~TIM_CR1_CKD; + tmpcr1 |= (uint32_t)Structure->ClockDivision; + } + + /* Set the auto-reload preload */ + MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); + + TIMx->CR1 = tmpcr1; + + /* Set the Autoreload value */ + TIMx->ARR = (uint32_t)Structure->Period ; + + /* Set the Prescaler value */ + TIMx->PSC = Structure->Prescaler; + + if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) + { + /* Set the Repetition Counter value */ + TIMx->RCR = Structure->RepetitionCounter; + } + + /* Generate an update event to reload the Prescaler + and the repetition counter (only for advanced timer) value immediately */ + TIMx->EGR = TIM_EGR_UG; + + /* Check if the update flag is set after the Update Generation, if so clear the UIF flag */ + if (HAL_IS_BIT_SET(TIMx->SR, TIM_FLAG_UPDATE)) + { + /* Clear the update flag */ + CLEAR_BIT(TIMx->SR, TIM_FLAG_UPDATE); + } +} + +/** + * @brief Timer Output Compare 1 configuration + * @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) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= ~TIM_CCER_CC1E; + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~TIM_CCMR1_OC1M; + tmpccmrx &= ~TIM_CCMR1_CC1S; + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC1P; + /* Set the Output Compare Polarity */ + tmpccer |= OC_Config->OCPolarity; + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) + { + /* Check parameters */ + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC1NP; + /* Set the Output N Polarity */ + tmpccer |= OC_Config->OCNPolarity; + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC1NE; + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* 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; + tmpcr2 &= ~TIM_CR2_OIS1N; + /* Set the Output Idle state */ + tmpcr2 |= OC_Config->OCIdleState; + /* Set the Output N Idle state */ + tmpcr2 |= OC_Config->OCNIdleState; + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR1 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 2 configuration + * @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) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC2E; + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR1; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR1_OC2M; + tmpccmrx &= ~TIM_CCMR1_CC2S; + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC2P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 4U); + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) + { + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC2NP; + /* Set the Output N Polarity */ + tmpccer |= (OC_Config->OCNPolarity << 4U); + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC2NE; + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* 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; + tmpcr2 &= ~TIM_CR2_OIS2N; + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 2U); + /* Set the Output N Idle state */ + tmpcr2 |= (OC_Config->OCNIdleState << 2U); + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR1 */ + TIMx->CCMR1 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR2 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 3 configuration + * @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) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + + /* Disable the Channel 3: Reset the CC2E Bit */ + TIMx->CCER &= ~TIM_CCER_CC3E; + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC3M; + tmpccmrx &= ~TIM_CCMR2_CC3S; + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC3P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 8U); + + if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) + { + assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + + /* Reset the Output N Polarity level */ + tmpccer &= ~TIM_CCER_CC3NP; + /* Set the Output N Polarity */ + tmpccer |= (OC_Config->OCNPolarity << 8U); + /* Reset the Output N State */ + tmpccer &= ~TIM_CCER_CC3NE; + } + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* 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; + tmpcr2 &= ~TIM_CR2_OIS3N; + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 4U); + /* Set the Output N Idle state */ + tmpcr2 |= (OC_Config->OCNIdleState << 4U); + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR3 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 4 configuration + * @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) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= ~TIM_CCER_CC4E; + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + + /* Get the TIMx CCMR2 register value */ + tmpccmrx = TIMx->CCMR2; + + /* Reset the Output Compare mode and Capture/Compare selection Bits */ + tmpccmrx &= ~TIM_CCMR2_OC4M; + tmpccmrx &= ~TIM_CCMR2_CC4S; + + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC4P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 12U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* Check parameters */ + assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + + /* Reset the Output Compare IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS4; + + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 6U); + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR2 */ + TIMx->CCMR2 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR4 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 5 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, + const TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + + /* Disable the output: Reset the CCxE Bit */ + TIMx->CCER &= ~TIM_CCER_CC5E; + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR3; + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~(TIM_CCMR3_OC5M); + /* Select the Output Compare Mode */ + tmpccmrx |= OC_Config->OCMode; + + /* Reset the Output Polarity level */ + tmpccer &= ~TIM_CCER_CC5P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 16U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* Reset the Output Compare IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS5; + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 8U); + } + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR3 */ + TIMx->CCMR3 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR5 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Timer Output Compare 6 configuration + * @param TIMx to select the TIM peripheral + * @param OC_Config The output configuration structure + * @retval None + */ +static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, + const TIM_OC_InitTypeDef *OC_Config) +{ + uint32_t tmpccmrx; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Get the TIMx CCER register value */ + tmpccer = TIMx->CCER; + + /* Disable the output: Reset the CCxE Bit */ + TIMx->CCER &= ~TIM_CCER_CC6E; + + /* Get the TIMx CR2 register value */ + tmpcr2 = TIMx->CR2; + /* Get the TIMx CCMR1 register value */ + tmpccmrx = TIMx->CCMR3; + + /* Reset the Output Compare Mode Bits */ + tmpccmrx &= ~(TIM_CCMR3_OC6M); + /* Select the Output Compare Mode */ + tmpccmrx |= (OC_Config->OCMode << 8U); + + /* Reset the Output Polarity level */ + tmpccer &= (uint32_t)~TIM_CCER_CC6P; + /* Set the Output Compare Polarity */ + tmpccer |= (OC_Config->OCPolarity << 20U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + /* Reset the Output Compare IDLE State */ + tmpcr2 &= ~TIM_CR2_OIS6; + /* Set the Output Idle state */ + tmpcr2 |= (OC_Config->OCIdleState << 10U); + } + + /* Write to TIMx CR2 */ + TIMx->CR2 = tmpcr2; + + /* Write to TIMx CCMR3 */ + TIMx->CCMR3 = tmpccmrx; + + /* Set the Capture Compare Register value */ + TIMx->CCR6 = OC_Config->Pulse; + + /* Write to TIMx CCER */ + TIMx->CCER = tmpccer; +} + +/** + * @brief Slave Timer configuration function + * @param htim TIM handle + * @param sSlaveConfig Slave timer configuration + * @retval None + */ +static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim, + const TIM_SlaveConfigTypeDef *sSlaveConfig) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + + /* Reset the Trigger Selection Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + /* Set the Input Trigger source */ + tmpsmcr |= sSlaveConfig->InputTrigger; + + /* Reset the slave mode Bits */ + tmpsmcr &= ~TIM_SMCR_SMS; + /* Set the slave mode */ + tmpsmcr |= sSlaveConfig->SlaveMode; + + /* Write to TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + + /* Configure the trigger prescaler, filter, and polarity */ + switch (sSlaveConfig->InputTrigger) + { + case TIM_TS_ETRF: + { + /* Check the parameters */ + 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, + sSlaveConfig->TriggerPrescaler, + sSlaveConfig->TriggerPolarity, + sSlaveConfig->TriggerFilter); + break; + } + + case TIM_TS_TI1F_ED: + { + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); + assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + + if (sSlaveConfig->SlaveMode == TIM_SLAVEMODE_GATED) + { + return HAL_ERROR; + } + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = htim->Instance->CCER; + htim->Instance->CCER &= ~TIM_CCER_CC1E; + tmpccmr1 = htim->Instance->CCMR1; + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4U); + + /* Write to TIMx CCMR1 and CCER registers */ + htim->Instance->CCMR1 = tmpccmr1; + htim->Instance->CCER = tmpccer; + break; + } + + case TIM_TS_TI1FP1: + { + /* Check the parameters */ + 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, + sSlaveConfig->TriggerPolarity, + sSlaveConfig->TriggerFilter); + break; + } + + case TIM_TS_TI2FP2: + { + /* Check the parameters */ + 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, + sSlaveConfig->TriggerPolarity, + sSlaveConfig->TriggerFilter); + break; + } + + case TIM_TS_ITR0: + case TIM_TS_ITR1: + case TIM_TS_ITR2: + case TIM_TS_ITR3: + { + /* Check the parameter */ + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); + break; + } + + default: + status = HAL_ERROR; + break; + } + + return status; +} + +/** + * @brief Configure the TI1 as Input. + * @param TIMx to select the TIM peripheral. + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 1 is selected to be connected to IC1. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 1 is selected to be connected to IC2. + * @arg TIM_ICSELECTION_TRC: TIM Input 1 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI2FP1 + * (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) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + TIMx->CCER &= ~TIM_CCER_CC1E; + tmpccmr1 = TIMx->CCMR1; + + /* Select the Input */ + if (IS_TIM_CC2_INSTANCE(TIMx) != RESET) + { + tmpccmr1 &= ~TIM_CCMR1_CC1S; + tmpccmr1 |= TIM_ICSelection; + } + else + { + tmpccmr1 |= TIM_CCMR1_CC1S_0; + } + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + tmpccmr1 |= ((TIM_ICFilter << 4U) & TIM_CCMR1_IC1F); + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP)); + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the Polarity and Filter for TI1. + * @param TIMx to select the TIM peripheral. + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @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) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 1: Reset the CC1E Bit */ + tmpccer = TIMx->CCER; + TIMx->CCER &= ~TIM_CCER_CC1E; + tmpccmr1 = TIMx->CCMR1; + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC1F; + tmpccmr1 |= (TIM_ICFilter << 4U); + + /* Select the Polarity and set the CC1E Bit */ + tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + tmpccer |= TIM_ICPolarity; + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI2 as Input. + * @param TIMx to select the TIM peripheral + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 2 is selected to be connected to IC2. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 2 is selected to be connected to IC1. + * @arg TIM_ICSELECTION_TRC: TIM Input 2 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI1FP2 + * (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) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + tmpccer = TIMx->CCER; + TIMx->CCER &= ~TIM_CCER_CC2E; + tmpccmr1 = TIMx->CCMR1; + + /* Select the Input */ + tmpccmr1 &= ~TIM_CCMR1_CC2S; + tmpccmr1 |= (TIM_ICSelection << 8U); + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + tmpccmr1 |= ((TIM_ICFilter << 12U) & TIM_CCMR1_IC2F); + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= ((TIM_ICPolarity << 4U) & (TIM_CCER_CC2P | TIM_CCER_CC2NP)); + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the Polarity and Filter for TI2. + * @param TIMx to select the TIM peripheral. + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @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) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Disable the Channel 2: Reset the CC2E Bit */ + tmpccer = TIMx->CCER; + TIMx->CCER &= ~TIM_CCER_CC2E; + tmpccmr1 = TIMx->CCMR1; + + /* Set the filter */ + tmpccmr1 &= ~TIM_CCMR1_IC2F; + tmpccmr1 |= (TIM_ICFilter << 12U); + + /* Select the Polarity and set the CC2E Bit */ + tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= (TIM_ICPolarity << 4U); + + /* Write to TIMx CCMR1 and CCER registers */ + TIMx->CCMR1 = tmpccmr1 ; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI3 as Input. + * @param TIMx to select the TIM peripheral + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 3 is selected to be connected to IC3. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 3 is selected to be connected to IC4. + * @arg TIM_ICSELECTION_TRC: TIM Input 3 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @retval None + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI3FP4 + * (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) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + + /* Disable the Channel 3: Reset the CC3E Bit */ + tmpccer = TIMx->CCER; + TIMx->CCER &= ~TIM_CCER_CC3E; + tmpccmr2 = TIMx->CCMR2; + + /* Select the Input */ + tmpccmr2 &= ~TIM_CCMR2_CC3S; + tmpccmr2 |= TIM_ICSelection; + + /* Set the filter */ + tmpccmr2 &= ~TIM_CCMR2_IC3F; + tmpccmr2 |= ((TIM_ICFilter << 4U) & TIM_CCMR2_IC3F); + + /* Select the Polarity and set the CC3E Bit */ + tmpccer &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP); + tmpccer |= ((TIM_ICPolarity << 8U) & (TIM_CCER_CC3P | TIM_CCER_CC3NP)); + + /* Write to TIMx CCMR2 and CCER registers */ + TIMx->CCMR2 = tmpccmr2; + TIMx->CCER = tmpccer; +} + +/** + * @brief Configure the TI4 as Input. + * @param TIMx to select the TIM peripheral + * @param TIM_ICPolarity The Input Polarity. + * This parameter can be one of the following values: + * @arg TIM_ICPOLARITY_RISING + * @arg TIM_ICPOLARITY_FALLING + * @arg TIM_ICPOLARITY_BOTHEDGE + * @param TIM_ICSelection specifies the input to be used. + * This parameter can be one of the following values: + * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 4 is selected to be connected to IC4. + * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 4 is selected to be connected to IC3. + * @arg TIM_ICSELECTION_TRC: TIM Input 4 is selected to be connected to TRC. + * @param TIM_ICFilter Specifies the Input Capture Filter. + * This parameter must be a value between 0x00 and 0x0F. + * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI4FP3 + * (on channel1 path) is used as the input signal. Therefore CCMR2 must be + * 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) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + + /* Disable the Channel 4: Reset the CC4E Bit */ + tmpccer = TIMx->CCER; + TIMx->CCER &= ~TIM_CCER_CC4E; + tmpccmr2 = TIMx->CCMR2; + + /* Select the Input */ + tmpccmr2 &= ~TIM_CCMR2_CC4S; + tmpccmr2 |= (TIM_ICSelection << 8U); + + /* Set the filter */ + tmpccmr2 &= ~TIM_CCMR2_IC4F; + tmpccmr2 |= ((TIM_ICFilter << 12U) & TIM_CCMR2_IC4F); + + /* Select the Polarity and set the CC4E Bit */ + tmpccer &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP); + tmpccer |= ((TIM_ICPolarity << 12U) & (TIM_CCER_CC4P | TIM_CCER_CC4NP)); + + /* Write to TIMx CCMR2 and CCER registers */ + TIMx->CCMR2 = tmpccmr2; + TIMx->CCER = tmpccer ; +} + +/** + * @brief Selects the Input Trigger source + * @param TIMx to select the TIM peripheral + * @param InputTriggerSource The Input Trigger source. + * This parameter can be one of the following values: + * @arg TIM_TS_ITR0: Internal Trigger 0 + * @arg TIM_TS_ITR1: Internal Trigger 1 + * @arg TIM_TS_ITR2: Internal Trigger 2 + * @arg TIM_TS_ITR3: Internal Trigger 3 + * @arg TIM_TS_TI1F_ED: TI1 Edge Detector + * @arg TIM_TS_TI1FP1: Filtered Timer Input 1 + * @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) +{ + uint32_t tmpsmcr; + + /* Get the TIMx SMCR register value */ + tmpsmcr = TIMx->SMCR; + /* Reset the TS Bits */ + tmpsmcr &= ~TIM_SMCR_TS; + /* Set the Input Trigger source and the slave mode*/ + tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; +} +/** + * @brief Configures the TIMx External Trigger (ETR). + * @param TIMx to select the TIM peripheral + * @param TIM_ExtTRGPrescaler The external Trigger Prescaler. + * This parameter can be one of the following values: + * @arg TIM_ETRPRESCALER_DIV1: ETRP Prescaler OFF. + * @arg TIM_ETRPRESCALER_DIV2: ETRP frequency divided by 2. + * @arg TIM_ETRPRESCALER_DIV4: ETRP frequency divided by 4. + * @arg TIM_ETRPRESCALER_DIV8: ETRP frequency divided by 8. + * @param TIM_ExtTRGPolarity The external Trigger Polarity. + * This parameter can be one of the following values: + * @arg TIM_ETRPOLARITY_INVERTED: active low or falling edge active. + * @arg TIM_ETRPOLARITY_NONINVERTED: active high or rising edge active. + * @param ExtTRGFilter External Trigger Filter. + * 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) +{ + uint32_t tmpsmcr; + + tmpsmcr = TIMx->SMCR; + + /* Reset the ETR Bits */ + tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + + /* Set the Prescaler, the Filter value and the Polarity */ + tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + + /* Write to TIMx SMCR */ + TIMx->SMCR = tmpsmcr; +} + +/** + * @brief Enables or disables the TIM Capture Compare Channel x. + * @param TIMx to select the TIM peripheral + * @param Channel specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @arg TIM_CHANNEL_4: TIM Channel 4 + * @arg TIM_CHANNEL_5: TIM Channel 5 selected + * @arg TIM_CHANNEL_6: TIM Channel 6 selected + * @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) +{ + uint32_t tmp; + + /* 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 */ + + /* Reset the CCxE Bit */ + TIMx->CCER &= ~tmp; + + /* Set or reset the CCxE Bit */ + TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ +} + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +/** + * @brief Reset interrupt callbacks to the legacy weak callbacks. + * @param htim pointer to a TIM_HandleTypeDef structure that contains + * the configuration information for TIM module. + * @retval None + */ +void TIM_ResetCallback(TIM_HandleTypeDef *htim) +{ + /* Reset the TIM callback to the legacy weak callbacks */ + htim->PeriodElapsedCallback = HAL_TIM_PeriodElapsedCallback; + htim->PeriodElapsedHalfCpltCallback = HAL_TIM_PeriodElapsedHalfCpltCallback; + htim->TriggerCallback = HAL_TIM_TriggerCallback; + htim->TriggerHalfCpltCallback = HAL_TIM_TriggerHalfCpltCallback; + htim->IC_CaptureCallback = HAL_TIM_IC_CaptureCallback; + htim->IC_CaptureHalfCpltCallback = HAL_TIM_IC_CaptureHalfCpltCallback; + htim->OC_DelayElapsedCallback = HAL_TIM_OC_DelayElapsedCallback; + htim->PWM_PulseFinishedCallback = HAL_TIM_PWM_PulseFinishedCallback; + htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; + htim->ErrorCallback = HAL_TIM_ErrorCallback; + htim->CommutationCallback = HAL_TIMEx_CommutCallback; + htim->CommutationHalfCpltCallback = HAL_TIMEx_CommutHalfCpltCallback; + htim->BreakCallback = HAL_TIMEx_BreakCallback; + htim->Break2Callback = HAL_TIMEx_Break2Callback; +} +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + +/** + * @} + */ + +#endif /* HAL_TIM_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c new file mode 100644 index 0000000..0387644 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c @@ -0,0 +1,2588 @@ +/** + ****************************************************************************** + * @file stm32f7xx_hal_tim_ex.c + * @author MCD Application Team + * @brief TIM HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the Timer Extended peripheral: + * + Time Hall Sensor Interface Initialization + * + Time Hall Sensor Interface Start + * + Time Complementary signal break and dead time configuration + * + Time Master and Slave synchronization configuration + * + Time Output Compare/PWM Channel Configuration (for channels 5 and 6) + * + Timer remapping capabilities configuration + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### TIMER Extended features ##### + ============================================================================== + [..] + The Timer Extended features include: + (#) Complementary outputs with programmable dead-time for : + (++) Output Compare + (++) PWM generation (Edge and Center-aligned Mode) + (++) One-pulse mode output + (#) Synchronization circuit to control the timer with external signals and to + interconnect several timers together. + (#) Break input to put the timer output signals in reset state or in a known state. + (#) Supports incremental (quadrature) encoder and hall-sensor circuitry for + positioning purposes + + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Initialize the TIM low level resources by implementing the following functions + depending on the selected feature: + (++) Hall Sensor output : HAL_TIMEx_HallSensor_MspInit() + + (#) Initialize the TIM low level resources : + (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE(); + (##) TIM pins configuration + (+++) Enable the clock for the TIM GPIOs using the following function: + __HAL_RCC_GPIOx_CLK_ENABLE(); + (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init(); + + (#) The external Clock can be configured, if needed (the default clock is the + internal clock from the APBx), using the following function: + HAL_TIM_ConfigClockSource, the clock configuration should be done before + any start function. + + (#) Configure the TIM in the desired functioning mode using one of the + initialization function of this driver: + (++) HAL_TIMEx_HallSensor_Init() and HAL_TIMEx_ConfigCommutEvent(): to use the + Timer Hall Sensor Interface and the commutation event with the corresponding + Interrupt and DMA request if needed (Note that One Timer is used to interface + with the Hall sensor Interface and another Timer should be used to use + the commutation event). + + (#) Activate the TIM peripheral using one of the start functions: + (++) Complementary Output Compare : HAL_TIMEx_OCN_Start(), HAL_TIMEx_OCN_Start_DMA(), + HAL_TIMEx_OCN_Start_IT() + (++) Complementary PWM generation : HAL_TIMEx_PWMN_Start(), HAL_TIMEx_PWMN_Start_DMA(), + HAL_TIMEx_PWMN_Start_IT() + (++) Complementary One-pulse mode output : HAL_TIMEx_OnePulseN_Start(), HAL_TIMEx_OnePulseN_Start_IT() + (++) Hall Sensor output : HAL_TIMEx_HallSensor_Start(), HAL_TIMEx_HallSensor_Start_DMA(), + HAL_TIMEx_HallSensor_Start_IT(). + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup TIMEx TIMEx + * @brief TIM Extended HAL module driver + * @{ + */ + +#ifdef HAL_TIM_MODULE_ENABLED + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +static void TIM_DMADelayPulseNCplt(DMA_HandleTypeDef *hdma); +static void TIM_DMAErrorCCxN(DMA_HandleTypeDef *hdma); +static void TIM_CCxNChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelNState); + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup TIMEx_Exported_Functions TIM Extended Exported Functions + * @{ + */ + +/** @defgroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions + * @brief Timer Hall Sensor functions + * +@verbatim + ============================================================================== + ##### Timer Hall Sensor functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure TIM HAL Sensor. + (+) De-initialize TIM HAL Sensor. + (+) Start the Hall Sensor Interface. + (+) Stop the Hall Sensor Interface. + (+) Start the Hall Sensor Interface and enable interrupts. + (+) Stop the Hall Sensor Interface and disable interrupts. + (+) Start the Hall Sensor Interface and enable DMA transfers. + (+) Stop the Hall Sensor Interface and disable DMA transfers. + +@endverbatim + * @{ + */ +/** + * @brief Initializes the TIM Hall Sensor Interface and initialize the associated handle. + * @note When the timer instance is initialized in Hall Sensor Interface mode, + * timer channels 1 and channel 2 are reserved and cannot be used for + * other purpose. + * @param htim TIM Hall Sensor Interface handle + * @param sConfig TIM Hall Sensor configuration structure + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, const TIM_HallSensor_InitTypeDef *sConfig) +{ + TIM_OC_InitTypeDef OC_Config; + + /* Check the TIM handle allocation */ + if (htim == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity)); + assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler)); + assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter)); + + if (htim->State == HAL_TIM_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + htim->Lock = HAL_UNLOCKED; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + /* Reset interrupt callbacks to legacy week callbacks */ + TIM_ResetCallback(htim); + + if (htim->HallSensor_MspInitCallback == NULL) + { + htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; + } + /* Init the low level hardware : GPIO, CLOCK, NVIC */ + htim->HallSensor_MspInitCallback(htim); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + HAL_TIMEx_HallSensor_MspInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + } + + /* Set the TIM state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Configure the Time base in the Encoder Mode */ + TIM_Base_SetConfig(htim->Instance, &htim->Init); + + /* Configure the Channel 1 as Input Channel to interface with the three Outputs of the Hall sensor */ + TIM_TI1_SetConfig(htim->Instance, sConfig->IC1Polarity, TIM_ICSELECTION_TRC, sConfig->IC1Filter); + + /* Reset the IC1PSC Bits */ + htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; + /* Set the IC1PSC value */ + htim->Instance->CCMR1 |= sConfig->IC1Prescaler; + + /* Enable the Hall sensor interface (XOR function of the three inputs) */ + htim->Instance->CR2 |= TIM_CR2_TI1S; + + /* Select the TIM_TS_TI1F_ED signal as Input trigger for the TIM */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= TIM_TS_TI1F_ED; + + /* Use the TIM_TS_TI1F_ED signal to reset the TIM counter each edge detection */ + htim->Instance->SMCR &= ~TIM_SMCR_SMS; + htim->Instance->SMCR |= TIM_SLAVEMODE_RESET; + + /* Program channel 2 in PWM 2 mode with the desired Commutation_Delay*/ + OC_Config.OCFastMode = TIM_OCFAST_DISABLE; + OC_Config.OCIdleState = TIM_OCIDLESTATE_RESET; + OC_Config.OCMode = TIM_OCMODE_PWM2; + OC_Config.OCNIdleState = TIM_OCNIDLESTATE_RESET; + OC_Config.OCNPolarity = TIM_OCNPOLARITY_HIGH; + OC_Config.OCPolarity = TIM_OCPOLARITY_HIGH; + OC_Config.Pulse = sConfig->Commutation_Delay; + + TIM_OC2_SetConfig(htim->Instance, &OC_Config); + + /* Select OC2REF as trigger output on TRGO: write the MMS bits in the TIMx_CR2 + register to 101 */ + htim->Instance->CR2 &= ~TIM_CR2_MMS; + htim->Instance->CR2 |= TIM_TRGO_OC2REF; + + /* Initialize the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + + /* Initialize the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Initialize the TIM state*/ + htim->State = HAL_TIM_STATE_READY; + + return HAL_OK; +} + +/** + * @brief DeInitializes the TIM Hall Sensor interface + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(htim->Instance)); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Disable the TIM Peripheral Clock */ + __HAL_TIM_DISABLE(htim); + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + if (htim->HallSensor_MspDeInitCallback == NULL) + { + htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; + } + /* DeInit the low level hardware */ + htim->HallSensor_MspDeInitCallback(htim); +#else + /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + HAL_TIMEx_HallSensor_MspDeInit(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + /* Change the DMA burst operation state */ + htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + + /* Change the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + + /* Change TIM state */ + htim->State = HAL_TIM_STATE_RESET; + + /* Release Lock */ + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Initializes the TIM Hall Sensor MSP. + * @param htim TIM Hall Sensor Interface handle + * @retval None + */ +__weak void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIMEx_HallSensor_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes TIM Hall Sensor MSP. + * @param htim TIM Hall Sensor Interface handle + * @retval None + */ +__weak void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIMEx_HallSensor_MspDeInit could be implemented in the user file + */ +} + +/** + * @brief Starts the TIM Hall Sensor Interface. + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim) +{ + uint32_t tmpsmcr; + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Input Capture channel 1 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Hall sensor Interface. + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channels 1, 2 and 3 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Hall Sensor Interface in interrupt mode. + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim) +{ + uint32_t tmpsmcr; + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the capture compare Interrupts 1 event */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + + /* Enable the Input Capture channel 1 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Hall Sensor Interface in interrupt mode. + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channel 1 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + /* Disable the capture compare Interrupts event */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Hall Sensor Interface in DMA mode. + * @param htim TIM Hall Sensor Interface handle + * @param pData The destination Buffer address. + * @param Length The length of data to be transferred from TIM peripheral to memory. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t Length) +{ + uint32_t tmpsmcr; + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Set the TIM channel state */ + if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)) + { + return HAL_BUSY; + } + else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + /* Enable the Input Capture channel 1 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + + /* Set the DMA Input Capture 1 Callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + + /* Enable the DMA stream for Capture 1*/ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData, Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the capture compare 1 Interrupt */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Hall Sensor Interface in DMA mode. + * @param htim TIM Hall Sensor Interface handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim) +{ + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + + /* Disable the Input Capture channel 1 + (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + + + /* Disable the capture compare Interrupts 1 event */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channel state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions + * @brief Timer Complementary Output Compare functions + * +@verbatim + ============================================================================== + ##### Timer Complementary Output Compare functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Start the Complementary Output Compare/PWM. + (+) Stop the Complementary Output Compare/PWM. + (+) Start the Complementary Output Compare/PWM and enable interrupts. + (+) Stop the Complementary Output Compare/PWM and disable interrupts. + (+) Start the Complementary Output Compare/PWM and enable DMA transfers. + (+) Stop the Complementary Output Compare/PWM and disable DMA transfers. + +@endverbatim + * @{ + */ + +/** + * @brief Starts the TIM Output Compare signal generation on the complementary + * output. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM Output Compare signal generation on the complementary + * output. + * @param htim TIM handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Disable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM Output Compare signal generation in interrupt mode + * on the complementary output. + * @param htim TIM OC handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Output Compare interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Output Compare interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Output Compare interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the TIM Break interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK); + + /* Enable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Output Compare signal generation in interrupt mode + * on the complementary output. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpccer; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Output Compare interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Output Compare interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Output Compare interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the TIM Break interrupt (only if no more channel is active) */ + tmpccer = htim->Instance->CCER; + if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET) + { + __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK); + } + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM Output Compare signal generation in DMA mode + * on the complementary output. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to TIM peripheral + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Set the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Output Compare DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Output Compare DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Output Compare DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM Output Compare signal generation in DMA mode + * on the complementary output. + * @param htim TIM Output Compare handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Output Compare DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Output Compare DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Output Compare DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the Capture compare channel N */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions + * @brief Timer Complementary PWM functions + * +@verbatim + ============================================================================== + ##### Timer Complementary PWM functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Start the Complementary PWM. + (+) Stop the Complementary PWM. + (+) Start the Complementary PWM and enable interrupts. + (+) Stop the Complementary PWM and disable interrupts. + (+) Start the Complementary PWM and enable DMA transfers. + (+) Stop the Complementary PWM and disable DMA transfers. +@endverbatim + * @{ + */ + +/** + * @brief Starts the PWM signal generation on the complementary output. + * @param htim TIM handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the PWM signal generation on the complementary output. + * @param htim TIM handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Disable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the PWM signal generation in interrupt mode on the + * complementary output. + * @param htim TIM handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Check the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + { + return HAL_ERROR; + } + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Enable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the TIM Break interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK); + + /* Enable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the PWM signal generation in interrupt mode on the + * complementary output. + * @param htim TIM handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpccer; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the TIM Break interrupt (only if no more channel is active) */ + tmpccer = htim->Instance->CCER; + if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET) + { + __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK); + } + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @brief Starts the TIM PWM signal generation in DMA mode on the + * complementary output + * @param htim TIM handle + * @param Channel TIM Channel to be enabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @param pData The source Buffer address. + * @param Length The length of data to be transferred from memory to TIM peripheral + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *pData, + uint16_t Length) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + /* Set the TIM complementary channel state */ + if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + { + return HAL_BUSY; + } + else if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + { + if ((pData == NULL) || (Length == 0U)) + { + return HAL_ERROR; + } + else + { + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + } + } + else + { + return HAL_ERROR; + } + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance->CCR1, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + break; + } + + case TIM_CHANNEL_2: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance->CCR2, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + break; + } + + case TIM_CHANNEL_3: + { + /* Set the DMA compare callbacks */ + htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseNCplt; + htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAErrorCCxN ; + + /* Enable the DMA stream */ + if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance->CCR3, + Length) != HAL_OK) + { + /* Return error status */ + return HAL_ERROR; + } + /* Enable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Enable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + { + __HAL_TIM_ENABLE(htim); + } + } + else + { + __HAL_TIM_ENABLE(htim); + } + } + + /* Return function status */ + return status; +} + +/** + * @brief Stops the TIM PWM signal generation in DMA mode on the complementary + * output + * @param htim TIM handle + * @param Channel TIM Channel to be disabled + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @arg TIM_CHANNEL_3: TIM Channel 3 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + + switch (Channel) + { + case TIM_CHANNEL_1: + { + /* Disable the TIM Capture/Compare 1 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + break; + } + + case TIM_CHANNEL_2: + { + /* Disable the TIM Capture/Compare 2 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + break; + } + + case TIM_CHANNEL_3: + { + /* Disable the TIM Capture/Compare 3 DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); + (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + break; + } + + default: + status = HAL_ERROR; + break; + } + + if (status == HAL_OK) + { + /* Disable the complementary PWM output */ + TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM complementary channel state */ + TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + } + + /* Return function status */ + return status; +} + +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions + * @brief Timer Complementary One Pulse functions + * +@verbatim + ============================================================================== + ##### Timer Complementary One Pulse functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Start the Complementary One Pulse generation. + (+) Stop the Complementary One Pulse. + (+) Start the Complementary One Pulse and enable interrupts. + (+) Stop the Complementary One Pulse and disable interrupts. + +@endverbatim + * @{ + */ + +/** + * @brief Starts the TIM One Pulse signal generation on the complementary + * output. + * @note OutputChannel must match the pulse output channel chosen when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel pulse output channel to enable + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the complementary One Pulse output channel and the Input Capture channel */ + TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE); + TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM One Pulse signal generation on the complementary + * output. + * @note OutputChannel must match the pulse output channel chosen when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel pulse output channel to disable + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); + + /* Disable the complementary One Pulse output channel and the Input Capture channel */ + TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE); + TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Starts the TIM One Pulse signal generation in interrupt mode on the + * complementary channel. + * @note OutputChannel must match the pulse output channel chosen when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel pulse output channel to enable + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_1); + HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHANNEL_2); + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); + + /* Check the TIM channels state */ + if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + { + return HAL_ERROR; + } + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + + /* Enable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + + /* Enable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + + /* Enable the complementary One Pulse output channel and the Input Capture channel */ + TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE); + TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + + /* Enable the Main Output */ + __HAL_TIM_MOE_ENABLE(htim); + + /* Return function status */ + return HAL_OK; +} + +/** + * @brief Stops the TIM One Pulse signal generation in interrupt mode on the + * complementary channel. + * @note OutputChannel must match the pulse output channel chosen when calling + * @ref HAL_TIM_OnePulse_ConfigChannel(). + * @param htim TIM One Pulse handle + * @param OutputChannel pulse output channel to disable + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 selected + * @arg TIM_CHANNEL_2: TIM Channel 2 selected + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +{ + uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); + + /* Disable the TIM Capture/Compare 1 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + + /* Disable the TIM Capture/Compare 2 interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + + /* Disable the complementary One Pulse output channel and the Input Capture channel */ + TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE); + TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE); + + /* Disable the Main Output */ + __HAL_TIM_MOE_DISABLE(htim); + + /* Disable the Peripheral */ + __HAL_TIM_DISABLE(htim); + + /* Set the TIM channels state */ + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + + /* Return function status */ + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions + * @brief Peripheral Control functions + * +@verbatim + ============================================================================== + ##### Peripheral Control functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Configure the commutation event in case of use of the Hall sensor interface. + (+) Configure Output channels for OC and PWM mode. + + (+) Configure Complementary channels, break features and dead time. + (+) Configure Master synchronization. + (+) Configure timer remapping capabilities. + (+) Enable or disable channel grouping. + +@endverbatim + * @{ + */ + +/** + * @brief Configure the TIM commutation event sequence. + * @note This function is mandatory to use the commutation event in order to + * update the configuration at each commutation detection on the TRGI input of the Timer, + * the typical use of this feature is with the use of another Timer(interface Timer) + * configured in Hall sensor interface, this interface Timer will generate the + * commutation at its TRGO output (connected to Timer used in this function) each time + * the TI1 of the Interface Timer detect a commutation at its input TI1. + * @param htim TIM handle + * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor + * This parameter can be one of the following values: + * @arg TIM_TS_ITR0: Internal trigger 0 selected + * @arg TIM_TS_ITR1: Internal trigger 1 selected + * @arg TIM_TS_ITR2: Internal trigger 2 selected + * @arg TIM_TS_ITR3: Internal trigger 3 selected + * @arg TIM_TS_NONE: No trigger is needed + * @param CommutationSource the Commutation Event source + * This parameter can be one of the following values: + * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer + * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance)); + assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + + __HAL_LOCK(htim); + + if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) || + (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + { + /* Select the Input trigger */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= InputTrigger; + } + + /* Select the Capture Compare preload feature */ + htim->Instance->CR2 |= TIM_CR2_CCPC; + /* Select the Commutation event source */ + htim->Instance->CR2 &= ~TIM_CR2_CCUS; + htim->Instance->CR2 |= CommutationSource; + + /* Disable Commutation Interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_COM); + + /* Disable Commutation DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_COM); + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configure the TIM commutation event sequence with interrupt. + * @note This function is mandatory to use the commutation event in order to + * update the configuration at each commutation detection on the TRGI input of the Timer, + * the typical use of this feature is with the use of another Timer(interface Timer) + * configured in Hall sensor interface, this interface Timer will generate the + * commutation at its TRGO output (connected to Timer used in this function) each time + * the TI1 of the Interface Timer detect a commutation at its input TI1. + * @param htim TIM handle + * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor + * This parameter can be one of the following values: + * @arg TIM_TS_ITR0: Internal trigger 0 selected + * @arg TIM_TS_ITR1: Internal trigger 1 selected + * @arg TIM_TS_ITR2: Internal trigger 2 selected + * @arg TIM_TS_ITR3: Internal trigger 3 selected + * @arg TIM_TS_NONE: No trigger is needed + * @param CommutationSource the Commutation Event source + * This parameter can be one of the following values: + * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer + * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance)); + assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + + __HAL_LOCK(htim); + + if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) || + (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + { + /* Select the Input trigger */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= InputTrigger; + } + + /* Select the Capture Compare preload feature */ + htim->Instance->CR2 |= TIM_CR2_CCPC; + /* Select the Commutation event source */ + htim->Instance->CR2 &= ~TIM_CR2_CCUS; + htim->Instance->CR2 |= CommutationSource; + + /* Disable Commutation DMA request */ + __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_COM); + + /* Enable the Commutation Interrupt */ + __HAL_TIM_ENABLE_IT(htim, TIM_IT_COM); + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configure the TIM commutation event sequence with DMA. + * @note This function is mandatory to use the commutation event in order to + * update the configuration at each commutation detection on the TRGI input of the Timer, + * the typical use of this feature is with the use of another Timer(interface Timer) + * configured in Hall sensor interface, this interface Timer will generate the + * commutation at its TRGO output (connected to Timer used in this function) each time + * the TI1 of the Interface Timer detect a commutation at its input TI1. + * @note The user should configure the DMA in his own software, in This function only the COMDE bit is set + * @param htim TIM handle + * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall sensor + * This parameter can be one of the following values: + * @arg TIM_TS_ITR0: Internal trigger 0 selected + * @arg TIM_TS_ITR1: Internal trigger 1 selected + * @arg TIM_TS_ITR2: Internal trigger 2 selected + * @arg TIM_TS_ITR3: Internal trigger 3 selected + * @arg TIM_TS_NONE: No trigger is needed + * @param CommutationSource the Commutation Event source + * This parameter can be one of the following values: + * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer + * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, + uint32_t CommutationSource) +{ + /* Check the parameters */ + assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance)); + assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + + __HAL_LOCK(htim); + + if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) || + (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + { + /* Select the Input trigger */ + htim->Instance->SMCR &= ~TIM_SMCR_TS; + htim->Instance->SMCR |= InputTrigger; + } + + /* Select the Capture Compare preload feature */ + htim->Instance->CR2 |= TIM_CR2_CCPC; + /* Select the Commutation event source */ + htim->Instance->CR2 &= ~TIM_CR2_CCUS; + htim->Instance->CR2 |= CommutationSource; + + /* Enable the Commutation DMA Request */ + /* Set the DMA Commutation Callback */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt; + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + /* Set the DMA error callback */ + htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError; + + /* Disable Commutation Interrupt */ + __HAL_TIM_DISABLE_IT(htim, TIM_IT_COM); + + /* Enable the Commutation DMA Request */ + __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_COM); + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configures the TIM in master mode. + * @param htim TIM handle. + * @param sMasterConfig pointer to a TIM_MasterConfigTypeDef structure that + * contains the selected trigger output (TRGO) and the Master/Slave + * mode. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, + const TIM_MasterConfigTypeDef *sMasterConfig) +{ + uint32_t tmpcr2; + uint32_t tmpsmcr; + + /* Check the parameters */ + 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); + + /* Change the handler state */ + htim->State = HAL_TIM_STATE_BUSY; + + /* Get the TIMx CR2 register value */ + tmpcr2 = htim->Instance->CR2; + + /* Get the TIMx SMCR register value */ + tmpsmcr = htim->Instance->SMCR; + + /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */ + if (IS_TIM_TRGO2_INSTANCE(htim->Instance)) + { + /* Check the parameters */ + assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2)); + + /* Clear the MMS2 bits */ + tmpcr2 &= ~TIM_CR2_MMS2; + /* Select the TRGO2 source*/ + tmpcr2 |= sMasterConfig->MasterOutputTrigger2; + } + + /* Reset the MMS Bits */ + tmpcr2 &= ~TIM_CR2_MMS; + /* Select the TRGO source */ + tmpcr2 |= sMasterConfig->MasterOutputTrigger; + + /* Update TIMx CR2 */ + htim->Instance->CR2 = tmpcr2; + + if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + { + /* Reset the MSM Bit */ + tmpsmcr &= ~TIM_SMCR_MSM; + /* Set master mode */ + tmpsmcr |= sMasterConfig->MasterSlaveMode; + + /* Update TIMx SMCR */ + htim->Instance->SMCR = tmpsmcr; + } + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Configures the Break feature, dead time, Lock level, OSSI/OSSR State + * and the AOE(automatic output enable). + * @param htim TIM handle + * @param sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that + * contains the BDTR Register configuration information for the TIM peripheral. + * @note Interrupts can be generated when an active level is detected on the + * break input, the break 2 input or the system break input. Break + * 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) +{ + /* Keep this variable initialized to 0 as it is used to configure BDTR register */ + uint32_t tmpbdtr = 0U; + + /* Check the parameters */ + assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance)); + assert_param(IS_TIM_OSSR_STATE(sBreakDeadTimeConfig->OffStateRunMode)); + assert_param(IS_TIM_OSSI_STATE(sBreakDeadTimeConfig->OffStateIDLEMode)); + assert_param(IS_TIM_LOCK_LEVEL(sBreakDeadTimeConfig->LockLevel)); + assert_param(IS_TIM_DEADTIME(sBreakDeadTimeConfig->DeadTime)); + assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState)); + 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); + + /* 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); + MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, sBreakDeadTimeConfig->LockLevel); + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode); + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity); + MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, (sBreakDeadTimeConfig->BreakFilter << TIM_BDTR_BKF_Pos)); + + if (IS_TIM_BKIN2_INSTANCE(htim->Instance)) + { + /* Check the parameters */ + 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)); + MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, sBreakDeadTimeConfig->Break2State); + MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, sBreakDeadTimeConfig->Break2Polarity); + } + + /* Set TIMx_BDTR */ + htim->Instance->BDTR = tmpbdtr; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} +#if defined(TIM_BREAK_INPUT_SUPPORT) + +/** + * @brief Configures the break input source. + * @param htim TIM handle. + * @param BreakInput Break input to configure + * This parameter can be one of the following values: + * @arg TIM_BREAKINPUT_BRK: Timer break input + * @arg TIM_BREAKINPUT_BRK2: Timer break 2 input + * @param sBreakInputConfig Break input source configuration + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, + uint32_t BreakInput, + const TIMEx_BreakInputConfigTypeDef *sBreakInputConfig) +{ + HAL_StatusTypeDef status = HAL_OK; + uint32_t tmporx; + uint32_t bkin_enable_mask; + uint32_t bkin_polarity_mask; + uint32_t bkin_enable_bitpos; + uint32_t bkin_polarity_bitpos; + + /* Check the parameters */ + assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance)); + assert_param(IS_TIM_BREAKINPUT(BreakInput)); + assert_param(IS_TIM_BREAKINPUTSOURCE(sBreakInputConfig->Source)); + assert_param(IS_TIM_BREAKINPUTSOURCE_STATE(sBreakInputConfig->Enable)); +#if defined(DFSDM1_Channel0) + if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1) + { + assert_param(IS_TIM_BREAKINPUTSOURCE_POLARITY(sBreakInputConfig->Polarity)); + } +#else + assert_param(IS_TIM_BREAKINPUTSOURCE_POLARITY(sBreakInputConfig->Polarity)); +#endif /* DFSDM1_Channel0 */ + + /* Check input state */ + __HAL_LOCK(htim); + + switch (sBreakInputConfig->Source) + { + case TIM_BREAKINPUTSOURCE_BKIN: + { + bkin_enable_mask = TIM1_AF1_BKINE; + bkin_enable_bitpos = TIM1_AF1_BKINE_Pos; + bkin_polarity_mask = TIM1_AF1_BKINP; + bkin_polarity_bitpos = TIM1_AF1_BKINP_Pos; + break; + } +#if defined(DFSDM1_Channel0) + case TIM_BREAKINPUTSOURCE_DFSDM1: + { + bkin_enable_mask = TIM1_AF1_BKDF1BKE; + bkin_enable_bitpos = TIM1_AF1_BKDF1BKE_Pos; + bkin_polarity_mask = 0U; + bkin_polarity_bitpos = 0U; + break; + } +#endif /* DFSDM1_Channel0 */ + + default: + { + bkin_enable_mask = 0U; + bkin_polarity_mask = 0U; + bkin_enable_bitpos = 0U; + bkin_polarity_bitpos = 0U; + break; + } + } + + switch (BreakInput) + { + case TIM_BREAKINPUT_BRK: + { + /* Get the TIMx_AF1 register value */ + tmporx = htim->Instance->AF1; + + /* Enable the break input */ + tmporx &= ~bkin_enable_mask; + tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask; + + /* Set the break input polarity */ +#if defined(DFSDM1_Channel0) + if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1) +#endif /* DFSDM1_Channel0 */ + { + tmporx &= ~bkin_polarity_mask; + tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask; + } + + /* Set TIMx_AF1 */ + htim->Instance->AF1 = tmporx; + break; + } + case TIM_BREAKINPUT_BRK2: + { + /* Get the TIMx_AF2 register value */ + tmporx = htim->Instance->AF2; + + /* Enable the break input */ + tmporx &= ~bkin_enable_mask; + tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask; + + /* Set the break input polarity */ +#if defined(DFSDM1_Channel0) + if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1) +#endif /* DFSDM1_Channel0 */ + { + tmporx &= ~bkin_polarity_mask; + tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask; + } + + /* Set TIMx_AF2 */ + htim->Instance->AF2 = tmporx; + break; + } + default: + status = HAL_ERROR; + break; + } + + __HAL_UNLOCK(htim); + + return status; +} +#endif /*TIM_BREAK_INPUT_SUPPORT */ + +/** + * @brief Configures the TIMx Remapping input capabilities. + * @param htim TIM handle. + * @param Remap specifies the TIM remapping source. + * This parameter can be one of the following values: + * @arg TIM_TIM2_TIM8_TRGO: TIM2 ITR1 input is connected to TIM8 Trigger output(default) + * @arg TIM_TIM2_ETH_PTP: TIM2 ITR1 input is connected to ETH PTP trigger output. + * @arg TIM_TIM2_USBFS_SOF: TIM2 ITR1 input is connected to USB FS SOF. + * @arg TIM_TIM2_USBHS_SOF: TIM2 ITR1 input is connected to USB HS SOF. + * @arg TIM_TIM5_GPIO: TIM5 CH4 input is connected to dedicated Timer pin(default) + * @arg TIM_TIM5_LSI: TIM5 CH4 input is connected to LSI clock. + * @arg TIM_TIM5_LSE: TIM5 CH4 input is connected to LSE clock. + * @arg TIM_TIM5_RTC: TIM5 CH4 input is connected to RTC Output event. + * @arg TIM_TIM11_GPIO: TIM11 CH4 input is connected to dedicated Timer pin(default) + * @arg TIM_TIM11_SPDIF: SPDIF Frame synchronous + * @arg TIM_TIM11_HSE: TIM11 CH4 input is connected to HSE_RTC clock + * (HSE divided by a programmable prescaler) + * @arg TIM_TIM11_MCO1: TIM11 CH1 input is connected to MCO1 + * + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap) +{ + /* Check parameters */ + assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance)); + assert_param(IS_TIM_REMAP(Remap)); + + __HAL_LOCK(htim); + + /* Set the Timer remapping configuration */ + htim->Instance->OR = Remap; + + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @brief Group channel 5 and channel 1, 2 or 3 + * @param htim TIM handle. + * @param Channels specifies the reference signal(s) the OC5REF is combined with. + * This parameter can be any combination of the following values: + * TIM_GROUPCH5_NONE: No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC + * TIM_GROUPCH5_OC1REFC: OC1REFC is the logical AND of OC1REFC and OC5REF + * TIM_GROUPCH5_OC2REFC: OC2REFC is the logical AND of OC2REFC and OC5REF + * TIM_GROUPCH5_OC3REFC: OC3REFC is the logical AND of OC3REFC and OC5REF + * @retval HAL status + */ +HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels) +{ + /* Check parameters */ + assert_param(IS_TIM_COMBINED3PHASEPWM_INSTANCE(htim->Instance)); + assert_param(IS_TIM_GROUPCH5(Channels)); + + /* Process Locked */ + __HAL_LOCK(htim); + + htim->State = HAL_TIM_STATE_BUSY; + + /* Clear GC5Cx bit fields */ + htim->Instance->CCR5 &= ~(TIM_CCR5_GC5C3 | TIM_CCR5_GC5C2 | TIM_CCR5_GC5C1); + + /* Set GC5Cx bit fields */ + htim->Instance->CCR5 |= Channels; + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + + __HAL_UNLOCK(htim); + + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group6 Extended Callbacks functions + * @brief Extended Callbacks functions + * +@verbatim + ============================================================================== + ##### Extended Callbacks functions ##### + ============================================================================== + [..] + This section provides Extended TIM callback functions: + (+) Timer Commutation callback + (+) Timer Break callback + +@endverbatim + * @{ + */ + +/** + * @brief Commutation callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} +/** + * @brief Commutation half complete callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIMEx_CommutHalfCpltCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(htim); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_TIMEx_CommutHalfCpltCallback could be implemented in the user file + */ +} + +/** + * @brief Break detection callback in non-blocking mode + * @param htim TIM handle + * @retval None + */ +__weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} + +/** + * @brief Break2 detection callback in non blocking mode + * @param htim: TIM handle + * @retval None + */ +__weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim) +{ + /* Prevent unused argument(s) compilation warning */ + 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 + */ +} +/** + * @} + */ + +/** @defgroup TIMEx_Exported_Functions_Group7 Extended Peripheral State functions + * @brief Extended Peripheral State functions + * +@verbatim + ============================================================================== + ##### Extended Peripheral State functions ##### + ============================================================================== + [..] + This subsection permits to get in run-time the status of the peripheral + and the data flow. + +@endverbatim + * @{ + */ + +/** + * @brief Return the TIM Hall Sensor interface handle state. + * @param htim TIM Hall Sensor handle + * @retval HAL state + */ +HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(const TIM_HandleTypeDef *htim) +{ + return htim->State; +} + +/** + * @brief Return actual state of the TIM complementary channel. + * @param htim TIM handle + * @param ChannelN TIM Complementary channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @retval TIM Complementary channel state + */ +HAL_TIM_ChannelStateTypeDef HAL_TIMEx_GetChannelNState(const TIM_HandleTypeDef *htim, uint32_t ChannelN) +{ + HAL_TIM_ChannelStateTypeDef channel_state; + + /* Check the parameters */ + assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, ChannelN)); + + channel_state = TIM_CHANNEL_N_STATE_GET(htim, ChannelN); + + return channel_state; +} +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions + * @{ + */ + +/** + * @brief TIM DMA Commutation callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->CommutationCallback(htim); +#else + HAL_TIMEx_CommutCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + +/** + * @brief TIM DMA Commutation half complete callback. + * @param hdma pointer to DMA handle. + * @retval None + */ +void TIMEx_DMACommutationHalfCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + /* Change the htim state */ + htim->State = HAL_TIM_STATE_READY; + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->CommutationHalfCpltCallback(htim); +#else + HAL_TIMEx_CommutHalfCpltCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +} + + +/** + * @brief TIM DMA Delay Pulse complete callback (complementary channel). + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMADelayPulseNCplt(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + + if (hdma->Init.Mode == DMA_NORMAL) + { + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->PWM_PulseFinishedCallback(htim); +#else + HAL_TIM_PWM_PulseFinishedCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief TIM DMA error callback (complementary channel) + * @param hdma pointer to DMA handle. + * @retval None + */ +static void TIM_DMAErrorCCxN(DMA_HandleTypeDef *hdma) +{ + TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + + if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + } + else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) + { + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + } + else + { + /* nothing to do */ + } + +#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + htim->ErrorCallback(htim); +#else + HAL_TIM_ErrorCallback(htim); +#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + + htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +} + +/** + * @brief Enables or disables the TIM Capture Compare Channel xN. + * @param TIMx to select the TIM peripheral + * @param Channel specifies the TIM Channel + * This parameter can be one of the following values: + * @arg TIM_CHANNEL_1: TIM Channel 1 + * @arg TIM_CHANNEL_2: TIM Channel 2 + * @arg TIM_CHANNEL_3: TIM Channel 3 + * @param ChannelNState specifies the TIM Channel CCxNE bit new state. + * This parameter can be: TIM_CCxN_ENABLE or TIM_CCxN_Disable. + * @retval None + */ +static void TIM_CCxNChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelNState) +{ + uint32_t tmp; + + tmp = TIM_CCER_CC1NE << (Channel & 0xFU); /* 0xFU = 15 bits max shift */ + + /* Reset the CCxNE Bit */ + TIMx->CCER &= ~tmp; + + /* Set or reset the CCxNE Bit */ + TIMx->CCER |= (uint32_t)(ChannelNState << (Channel & 0xFU)); /* 0xFU = 15 bits max shift */ +} +/** + * @} + */ + +#endif /* HAL_TIM_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c new file mode 100644 index 0000000..2f25caa --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c @@ -0,0 +1,444 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_dma.c + * @author MCD Application Team + * @brief DMA LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_ll_dma.h" +#include "stm32f7xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (DMA1) || defined (DMA2) + +/** @defgroup DMA_LL DMA + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup DMA_LL_Private_Macros + * @{ + */ +#define IS_LL_DMA_DIRECTION(__VALUE__) (((__VALUE__) == LL_DMA_DIRECTION_PERIPH_TO_MEMORY) || \ + ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) || \ + ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_MEMORY)) + +#define IS_LL_DMA_MODE(__VALUE__) (((__VALUE__) == LL_DMA_MODE_NORMAL) || \ + ((__VALUE__) == LL_DMA_MODE_CIRCULAR) || \ + ((__VALUE__) == LL_DMA_MODE_PFCTRL)) + +#define IS_LL_DMA_PERIPHINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_PERIPH_INCREMENT) || \ + ((__VALUE__) == LL_DMA_PERIPH_NOINCREMENT)) + +#define IS_LL_DMA_MEMORYINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_MEMORY_INCREMENT) || \ + ((__VALUE__) == LL_DMA_MEMORY_NOINCREMENT)) + +#define IS_LL_DMA_PERIPHDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_PDATAALIGN_BYTE) || \ + ((__VALUE__) == LL_DMA_PDATAALIGN_HALFWORD) || \ + ((__VALUE__) == LL_DMA_PDATAALIGN_WORD)) + +#define IS_LL_DMA_MEMORYDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_MDATAALIGN_BYTE) || \ + ((__VALUE__) == LL_DMA_MDATAALIGN_HALFWORD) || \ + ((__VALUE__) == LL_DMA_MDATAALIGN_WORD)) + +#define IS_LL_DMA_NBDATA(__VALUE__) ((__VALUE__) <= 0x0000FFFFU) + +#if defined(DMA_CHANNEL_SELECTION_8_15) +#define IS_LL_DMA_CHANNEL(__VALUE__) (((__VALUE__) == LL_DMA_CHANNEL_0) || \ + ((__VALUE__) == LL_DMA_CHANNEL_1) || \ + ((__VALUE__) == LL_DMA_CHANNEL_2) || \ + ((__VALUE__) == LL_DMA_CHANNEL_3) || \ + ((__VALUE__) == LL_DMA_CHANNEL_4) || \ + ((__VALUE__) == LL_DMA_CHANNEL_5) || \ + ((__VALUE__) == LL_DMA_CHANNEL_6) || \ + ((__VALUE__) == LL_DMA_CHANNEL_7) || \ + ((__VALUE__) == LL_DMA_CHANNEL_8) || \ + ((__VALUE__) == LL_DMA_CHANNEL_9) || \ + ((__VALUE__) == LL_DMA_CHANNEL_10) || \ + ((__VALUE__) == LL_DMA_CHANNEL_11) || \ + ((__VALUE__) == LL_DMA_CHANNEL_12) || \ + ((__VALUE__) == LL_DMA_CHANNEL_13) || \ + ((__VALUE__) == LL_DMA_CHANNEL_14) || \ + ((__VALUE__) == LL_DMA_CHANNEL_15)) + +#else +#define IS_LL_DMA_CHANNEL(__VALUE__) (((__VALUE__) == LL_DMA_CHANNEL_0) || \ + ((__VALUE__) == LL_DMA_CHANNEL_1) || \ + ((__VALUE__) == LL_DMA_CHANNEL_2) || \ + ((__VALUE__) == LL_DMA_CHANNEL_3) || \ + ((__VALUE__) == LL_DMA_CHANNEL_4) || \ + ((__VALUE__) == LL_DMA_CHANNEL_5) || \ + ((__VALUE__) == LL_DMA_CHANNEL_6) || \ + ((__VALUE__) == LL_DMA_CHANNEL_7)) + +#endif /* DMA_CHANNEL_SELECTION_8_15 */ + +#define IS_LL_DMA_PRIORITY(__VALUE__) (((__VALUE__) == LL_DMA_PRIORITY_LOW) || \ + ((__VALUE__) == LL_DMA_PRIORITY_MEDIUM) || \ + ((__VALUE__) == LL_DMA_PRIORITY_HIGH) || \ + ((__VALUE__) == LL_DMA_PRIORITY_VERYHIGH)) + +#define IS_LL_DMA_ALL_STREAM_INSTANCE(INSTANCE, STREAM) ((((INSTANCE) == DMA1) && \ + (((STREAM) == LL_DMA_STREAM_0) || \ + ((STREAM) == LL_DMA_STREAM_1) || \ + ((STREAM) == LL_DMA_STREAM_2) || \ + ((STREAM) == LL_DMA_STREAM_3) || \ + ((STREAM) == LL_DMA_STREAM_4) || \ + ((STREAM) == LL_DMA_STREAM_5) || \ + ((STREAM) == LL_DMA_STREAM_6) || \ + ((STREAM) == LL_DMA_STREAM_7) || \ + ((STREAM) == LL_DMA_STREAM_ALL))) ||\ + (((INSTANCE) == DMA2) && \ + (((STREAM) == LL_DMA_STREAM_0) || \ + ((STREAM) == LL_DMA_STREAM_1) || \ + ((STREAM) == LL_DMA_STREAM_2) || \ + ((STREAM) == LL_DMA_STREAM_3) || \ + ((STREAM) == LL_DMA_STREAM_4) || \ + ((STREAM) == LL_DMA_STREAM_5) || \ + ((STREAM) == LL_DMA_STREAM_6) || \ + ((STREAM) == LL_DMA_STREAM_7) || \ + ((STREAM) == LL_DMA_STREAM_ALL)))) + +#define IS_LL_DMA_FIFO_MODE_STATE(STATE) (((STATE) == LL_DMA_FIFOMODE_DISABLE ) || \ + ((STATE) == LL_DMA_FIFOMODE_ENABLE)) + +#define IS_LL_DMA_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == LL_DMA_FIFOTHRESHOLD_1_4) || \ + ((THRESHOLD) == LL_DMA_FIFOTHRESHOLD_1_2) || \ + ((THRESHOLD) == LL_DMA_FIFOTHRESHOLD_3_4) || \ + ((THRESHOLD) == LL_DMA_FIFOTHRESHOLD_FULL)) + +#define IS_LL_DMA_MEMORY_BURST(BURST) (((BURST) == LL_DMA_MBURST_SINGLE) || \ + ((BURST) == LL_DMA_MBURST_INC4) || \ + ((BURST) == LL_DMA_MBURST_INC8) || \ + ((BURST) == LL_DMA_MBURST_INC16)) + +#define IS_LL_DMA_PERIPHERAL_BURST(BURST) (((BURST) == LL_DMA_PBURST_SINGLE) || \ + ((BURST) == LL_DMA_PBURST_INC4) || \ + ((BURST) == LL_DMA_PBURST_INC8) || \ + ((BURST) == LL_DMA_PBURST_INC16)) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup DMA_LL_Exported_Functions + * @{ + */ + +/** @addtogroup DMA_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the DMA registers to their default reset values. + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @arg @ref LL_DMA_STREAM_ALL + * @retval An ErrorStatus enumeration value: + * - SUCCESS: DMA registers are de-initialized + * - ERROR: DMA registers are not de-initialized + */ +uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Stream) +{ + DMA_Stream_TypeDef *tmp = (DMA_Stream_TypeDef *)DMA1_Stream0; + ErrorStatus status = SUCCESS; + + /* Check the DMA Instance DMAx and Stream parameters*/ + assert_param(IS_LL_DMA_ALL_STREAM_INSTANCE(DMAx, Stream)); + + if (Stream == LL_DMA_STREAM_ALL) + { + if (DMAx == DMA1) + { + /* Force reset of DMA clock */ + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_DMA1); + + /* Release reset of DMA clock */ + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_DMA1); + } + else if (DMAx == DMA2) + { + /* Force reset of DMA clock */ + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_DMA2); + + /* Release reset of DMA clock */ + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_DMA2); + } + else + { + status = ERROR; + } + } + else + { + /* Disable the selected Stream */ + LL_DMA_DisableStream(DMAx,Stream); + + /* Get the DMA Stream Instance */ + tmp = (DMA_Stream_TypeDef *)(__LL_DMA_GET_STREAM_INSTANCE(DMAx, Stream)); + + /* Reset DMAx_Streamy configuration register */ + LL_DMA_WriteReg(tmp, CR, 0U); + + /* Reset DMAx_Streamy remaining bytes register */ + LL_DMA_WriteReg(tmp, NDTR, 0U); + + /* Reset DMAx_Streamy peripheral address register */ + LL_DMA_WriteReg(tmp, PAR, 0U); + + /* Reset DMAx_Streamy memory address register */ + LL_DMA_WriteReg(tmp, M0AR, 0U); + + /* Reset DMAx_Streamy memory address register */ + LL_DMA_WriteReg(tmp, M1AR, 0U); + + /* Reset DMAx_Streamy FIFO control register */ + LL_DMA_WriteReg(tmp, FCR, 0x00000021U); + + /* Reset Channel register field for DMAx Stream*/ + LL_DMA_SetChannelSelection(DMAx, Stream, LL_DMA_CHANNEL_0); + + if(Stream == LL_DMA_STREAM_0) + { + /* Reset the Stream0 pending flags */ + DMAx->LIFCR = 0x0000003FU; + } + else if(Stream == LL_DMA_STREAM_1) + { + /* Reset the Stream1 pending flags */ + DMAx->LIFCR = 0x00000F40U; + } + else if(Stream == LL_DMA_STREAM_2) + { + /* Reset the Stream2 pending flags */ + DMAx->LIFCR = 0x003F0000U; + } + else if(Stream == LL_DMA_STREAM_3) + { + /* Reset the Stream3 pending flags */ + DMAx->LIFCR = 0x0F400000U; + } + else if(Stream == LL_DMA_STREAM_4) + { + /* Reset the Stream4 pending flags */ + DMAx->HIFCR = 0x0000003FU; + } + else if(Stream == LL_DMA_STREAM_5) + { + /* Reset the Stream5 pending flags */ + DMAx->HIFCR = 0x00000F40U; + } + else if(Stream == LL_DMA_STREAM_6) + { + /* Reset the Stream6 pending flags */ + DMAx->HIFCR = 0x003F0000U; + } + else if(Stream == LL_DMA_STREAM_7) + { + /* Reset the Stream7 pending flags */ + DMAx->HIFCR = 0x0F400000U; + } + else + { + status = ERROR; + } + } + + return status; +} + +/** + * @brief Initialize the DMA registers according to the specified parameters in DMA_InitStruct. + * @note To convert DMAx_Streamy Instance to DMAx Instance and Streamy, use helper macros : + * @arg @ref __LL_DMA_GET_INSTANCE + * @arg @ref __LL_DMA_GET_STREAM + * @param DMAx DMAx Instance + * @param Stream This parameter can be one of the following values: + * @arg @ref LL_DMA_STREAM_0 + * @arg @ref LL_DMA_STREAM_1 + * @arg @ref LL_DMA_STREAM_2 + * @arg @ref LL_DMA_STREAM_3 + * @arg @ref LL_DMA_STREAM_4 + * @arg @ref LL_DMA_STREAM_5 + * @arg @ref LL_DMA_STREAM_6 + * @arg @ref LL_DMA_STREAM_7 + * @param DMA_InitStruct pointer to a @ref LL_DMA_InitTypeDef structure. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: DMA registers are initialized + * - ERROR: Not applicable + */ +uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Stream, LL_DMA_InitTypeDef *DMA_InitStruct) +{ + /* Check the DMA Instance DMAx and Stream parameters*/ + assert_param(IS_LL_DMA_ALL_STREAM_INSTANCE(DMAx, Stream)); + + /* Check the DMA parameters from DMA_InitStruct */ + assert_param(IS_LL_DMA_DIRECTION(DMA_InitStruct->Direction)); + assert_param(IS_LL_DMA_MODE(DMA_InitStruct->Mode)); + assert_param(IS_LL_DMA_PERIPHINCMODE(DMA_InitStruct->PeriphOrM2MSrcIncMode)); + assert_param(IS_LL_DMA_MEMORYINCMODE(DMA_InitStruct->MemoryOrM2MDstIncMode)); + assert_param(IS_LL_DMA_PERIPHDATASIZE(DMA_InitStruct->PeriphOrM2MSrcDataSize)); + assert_param(IS_LL_DMA_MEMORYDATASIZE(DMA_InitStruct->MemoryOrM2MDstDataSize)); + assert_param(IS_LL_DMA_NBDATA(DMA_InitStruct->NbData)); + assert_param(IS_LL_DMA_CHANNEL(DMA_InitStruct->Channel)); + assert_param(IS_LL_DMA_PRIORITY(DMA_InitStruct->Priority)); + assert_param(IS_LL_DMA_FIFO_MODE_STATE(DMA_InitStruct->FIFOMode)); + /* Check the memory burst, peripheral burst and FIFO threshold parameters only + when FIFO mode is enabled */ + if(DMA_InitStruct->FIFOMode != LL_DMA_FIFOMODE_DISABLE) + { + assert_param(IS_LL_DMA_FIFO_THRESHOLD(DMA_InitStruct->FIFOThreshold)); + assert_param(IS_LL_DMA_MEMORY_BURST(DMA_InitStruct->MemBurst)); + assert_param(IS_LL_DMA_PERIPHERAL_BURST(DMA_InitStruct->PeriphBurst)); + } + + /*---------------------------- DMAx SxCR Configuration ------------------------ + * Configure DMAx_Streamy: data transfer direction, data transfer mode, + * peripheral and memory increment mode, + * data size alignment and priority level with parameters : + * - Direction: DMA_SxCR_DIR[1:0] bits + * - Mode: DMA_SxCR_CIRC bit + * - PeriphOrM2MSrcIncMode: DMA_SxCR_PINC bit + * - MemoryOrM2MDstIncMode: DMA_SxCR_MINC bit + * - PeriphOrM2MSrcDataSize: DMA_SxCR_PSIZE[1:0] bits + * - MemoryOrM2MDstDataSize: DMA_SxCR_MSIZE[1:0] bits + * - Priority: DMA_SxCR_PL[1:0] bits + */ + LL_DMA_ConfigTransfer(DMAx, Stream, DMA_InitStruct->Direction | \ + DMA_InitStruct->Mode | \ + DMA_InitStruct->PeriphOrM2MSrcIncMode | \ + DMA_InitStruct->MemoryOrM2MDstIncMode | \ + DMA_InitStruct->PeriphOrM2MSrcDataSize | \ + DMA_InitStruct->MemoryOrM2MDstDataSize | \ + DMA_InitStruct->Priority + ); + + if(DMA_InitStruct->FIFOMode != LL_DMA_FIFOMODE_DISABLE) + { + /*---------------------------- DMAx SxFCR Configuration ------------------------ + * Configure DMAx_Streamy: fifo mode and fifo threshold with parameters : + * - FIFOMode: DMA_SxFCR_DMDIS bit + * - FIFOThreshold: DMA_SxFCR_FTH[1:0] bits + */ + LL_DMA_ConfigFifo(DMAx, Stream, DMA_InitStruct->FIFOMode, DMA_InitStruct->FIFOThreshold); + + /*---------------------------- DMAx SxCR Configuration -------------------------- + * Configure DMAx_Streamy: memory burst transfer with parameters : + * - MemBurst: DMA_SxCR_MBURST[1:0] bits + */ + LL_DMA_SetMemoryBurstxfer(DMAx,Stream,DMA_InitStruct->MemBurst); + + /*---------------------------- DMAx SxCR Configuration -------------------------- + * Configure DMAx_Streamy: peripheral burst transfer with parameters : + * - PeriphBurst: DMA_SxCR_PBURST[1:0] bits + */ + LL_DMA_SetPeriphBurstxfer(DMAx,Stream,DMA_InitStruct->PeriphBurst); + } + + /*-------------------------- DMAx SxM0AR Configuration -------------------------- + * Configure the memory or destination base address with parameter : + * - MemoryOrM2MDstAddress: DMA_SxM0AR_M0A[31:0] bits + */ + LL_DMA_SetMemoryAddress(DMAx, Stream, DMA_InitStruct->MemoryOrM2MDstAddress); + + /*-------------------------- DMAx SxPAR Configuration --------------------------- + * Configure the peripheral or source base address with parameter : + * - PeriphOrM2MSrcAddress: DMA_SxPAR_PA[31:0] bits + */ + LL_DMA_SetPeriphAddress(DMAx, Stream, DMA_InitStruct->PeriphOrM2MSrcAddress); + + /*--------------------------- DMAx SxNDTR Configuration ------------------------- + * Configure the peripheral base address with parameter : + * - NbData: DMA_SxNDT[15:0] bits + */ + LL_DMA_SetDataLength(DMAx, Stream, DMA_InitStruct->NbData); + + /*--------------------------- DMA SxCR_CHSEL Configuration ---------------------- + * Configure the peripheral base address with parameter : + * - PeriphRequest: DMA_SxCR_CHSEL[3:0] bits + */ + LL_DMA_SetChannelSelection(DMAx, Stream, DMA_InitStruct->Channel); + + return SUCCESS; +} + +/** + * @brief Set each @ref LL_DMA_InitTypeDef field to default value. + * @param DMA_InitStruct Pointer to a @ref LL_DMA_InitTypeDef structure. + * @retval None + */ +void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct) +{ + /* Set DMA_InitStruct fields to default values */ + DMA_InitStruct->PeriphOrM2MSrcAddress = 0x00000000U; + DMA_InitStruct->MemoryOrM2MDstAddress = 0x00000000U; + DMA_InitStruct->Direction = LL_DMA_DIRECTION_PERIPH_TO_MEMORY; + DMA_InitStruct->Mode = LL_DMA_MODE_NORMAL; + DMA_InitStruct->PeriphOrM2MSrcIncMode = LL_DMA_PERIPH_NOINCREMENT; + DMA_InitStruct->MemoryOrM2MDstIncMode = LL_DMA_MEMORY_NOINCREMENT; + DMA_InitStruct->PeriphOrM2MSrcDataSize = LL_DMA_PDATAALIGN_BYTE; + DMA_InitStruct->MemoryOrM2MDstDataSize = LL_DMA_MDATAALIGN_BYTE; + DMA_InitStruct->NbData = 0x00000000U; + DMA_InitStruct->Channel = LL_DMA_CHANNEL_0; + DMA_InitStruct->Priority = LL_DMA_PRIORITY_LOW; + DMA_InitStruct->FIFOMode = LL_DMA_FIFOMODE_DISABLE; + DMA_InitStruct->FIFOThreshold = LL_DMA_FIFOTHRESHOLD_1_4; + DMA_InitStruct->MemBurst = LL_DMA_MBURST_SINGLE; + DMA_InitStruct->PeriphBurst = LL_DMA_PBURST_SINGLE; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMA1 || DMA2 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c new file mode 100644 index 0000000..f615e26 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c @@ -0,0 +1,212 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_exti.c + * @author MCD Application Team + * @brief EXTI LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_ll_exti.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (EXTI) + +/** @defgroup EXTI_LL EXTI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup EXTI_LL_Private_Macros + * @{ + */ + +#define IS_LL_EXTI_LINE_0_31(__VALUE__) (((__VALUE__) & ~LL_EXTI_LINE_ALL_0_31) == 0x00000000U) + +#define IS_LL_EXTI_MODE(__VALUE__) (((__VALUE__) == LL_EXTI_MODE_IT) \ + || ((__VALUE__) == LL_EXTI_MODE_EVENT) \ + || ((__VALUE__) == LL_EXTI_MODE_IT_EVENT)) + + +#define IS_LL_EXTI_TRIGGER(__VALUE__) (((__VALUE__) == LL_EXTI_TRIGGER_NONE) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_RISING) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_FALLING) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_RISING_FALLING)) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup EXTI_LL_Exported_Functions + * @{ + */ + +/** @addtogroup EXTI_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the EXTI registers to their default reset values. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: EXTI registers are de-initialized + * - ERROR: not applicable + */ +uint32_t LL_EXTI_DeInit(void) +{ + /* Interrupt mask register set to default reset values */ + LL_EXTI_WriteReg(IMR, 0x00000000U); + /* Event mask register set to default reset values */ + LL_EXTI_WriteReg(EMR, 0x00000000U); + /* Rising Trigger selection register set to default reset values */ + LL_EXTI_WriteReg(RTSR, 0x00000000U); + /* Falling Trigger selection register set to default reset values */ + LL_EXTI_WriteReg(FTSR, 0x00000000U); + /* Software interrupt event register set to default reset values */ + LL_EXTI_WriteReg(SWIER, 0x00000000U); + /* Pending register set to default reset values */ + LL_EXTI_WriteReg(PR, 0x01FFFFFFU); + + return SUCCESS; +} + +/** + * @brief Initialize the EXTI registers according to the specified parameters in EXTI_InitStruct. + * @param EXTI_InitStruct pointer to a @ref LL_EXTI_InitTypeDef structure. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: EXTI registers are initialized + * - ERROR: not applicable + */ +uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct) +{ + ErrorStatus status = SUCCESS; + /* Check the parameters */ + assert_param(IS_LL_EXTI_LINE_0_31(EXTI_InitStruct->Line_0_31)); + assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->LineCommand)); + assert_param(IS_LL_EXTI_MODE(EXTI_InitStruct->Mode)); + + /* ENABLE LineCommand */ + if (EXTI_InitStruct->LineCommand != DISABLE) + { + assert_param(IS_LL_EXTI_TRIGGER(EXTI_InitStruct->Trigger)); + + /* Configure EXTI Lines in range from 0 to 31 */ + if (EXTI_InitStruct->Line_0_31 != LL_EXTI_LINE_NONE) + { + switch (EXTI_InitStruct->Mode) + { + case LL_EXTI_MODE_IT: + /* First Disable Event on provided Lines */ + LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable IT on provided Lines */ + LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_MODE_EVENT: + /* First Disable IT on provided Lines */ + LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Event on provided Lines */ + LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_MODE_IT_EVENT: + /* Directly Enable IT & Event on provided Lines */ + LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + break; + default: + status = ERROR; + break; + } + if (EXTI_InitStruct->Trigger != LL_EXTI_TRIGGER_NONE) + { + switch (EXTI_InitStruct->Trigger) + { + case LL_EXTI_TRIGGER_RISING: + /* First Disable Falling Trigger on provided Lines */ + LL_EXTI_DisableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Rising Trigger on provided Lines */ + LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_TRIGGER_FALLING: + /* First Disable Rising Trigger on provided Lines */ + LL_EXTI_DisableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Falling Trigger on provided Lines */ + LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_TRIGGER_RISING_FALLING: + LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + default: + status = ERROR; + break; + } + } + } + } + /* DISABLE LineCommand */ + else + { + /* De-configure EXTI Lines in range from 0 to 31 */ + LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31); + } + return status; +} + +/** + * @brief Set each @ref LL_EXTI_InitTypeDef field to default value. + * @param EXTI_InitStruct Pointer to a @ref LL_EXTI_InitTypeDef structure. + * @retval None + */ +void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct) +{ + EXTI_InitStruct->Line_0_31 = LL_EXTI_LINE_NONE; + EXTI_InitStruct->LineCommand = DISABLE; + EXTI_InitStruct->Mode = LL_EXTI_MODE_IT; + EXTI_InitStruct->Trigger = LL_EXTI_TRIGGER_FALLING; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (EXTI) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c new file mode 100644 index 0000000..2730301 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c @@ -0,0 +1,300 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_gpio.c + * @author MCD Application Team + * @brief GPIO LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_ll_gpio.h" +#include "stm32f7xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK) + +/** @addtogroup GPIO_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup GPIO_LL_Private_Macros + * @{ + */ +#define IS_LL_GPIO_PIN(__VALUE__) (((0x00000000U) < (__VALUE__)) && ((__VALUE__) <= (LL_GPIO_PIN_ALL))) + +#define IS_LL_GPIO_MODE(__VALUE__) (((__VALUE__) == LL_GPIO_MODE_INPUT) ||\ + ((__VALUE__) == LL_GPIO_MODE_OUTPUT) ||\ + ((__VALUE__) == LL_GPIO_MODE_ALTERNATE) ||\ + ((__VALUE__) == LL_GPIO_MODE_ANALOG)) + +#define IS_LL_GPIO_OUTPUT_TYPE(__VALUE__) (((__VALUE__) == LL_GPIO_OUTPUT_PUSHPULL) ||\ + ((__VALUE__) == LL_GPIO_OUTPUT_OPENDRAIN)) + +#define IS_LL_GPIO_SPEED(__VALUE__) (((__VALUE__) == LL_GPIO_SPEED_FREQ_LOW) ||\ + ((__VALUE__) == LL_GPIO_SPEED_FREQ_MEDIUM) ||\ + ((__VALUE__) == LL_GPIO_SPEED_FREQ_HIGH) ||\ + ((__VALUE__) == LL_GPIO_SPEED_FREQ_VERY_HIGH)) + +#define IS_LL_GPIO_PULL(__VALUE__) (((__VALUE__) == LL_GPIO_PULL_NO) ||\ + ((__VALUE__) == LL_GPIO_PULL_UP) ||\ + ((__VALUE__) == LL_GPIO_PULL_DOWN)) + +#define IS_LL_GPIO_ALTERNATE(__VALUE__) (((__VALUE__) == LL_GPIO_AF_0 ) ||\ + ((__VALUE__) == LL_GPIO_AF_1 ) ||\ + ((__VALUE__) == LL_GPIO_AF_2 ) ||\ + ((__VALUE__) == LL_GPIO_AF_3 ) ||\ + ((__VALUE__) == LL_GPIO_AF_4 ) ||\ + ((__VALUE__) == LL_GPIO_AF_5 ) ||\ + ((__VALUE__) == LL_GPIO_AF_6 ) ||\ + ((__VALUE__) == LL_GPIO_AF_7 ) ||\ + ((__VALUE__) == LL_GPIO_AF_8 ) ||\ + ((__VALUE__) == LL_GPIO_AF_9 ) ||\ + ((__VALUE__) == LL_GPIO_AF_10 ) ||\ + ((__VALUE__) == LL_GPIO_AF_11 ) ||\ + ((__VALUE__) == LL_GPIO_AF_12 ) ||\ + ((__VALUE__) == LL_GPIO_AF_13 ) ||\ + ((__VALUE__) == LL_GPIO_AF_14 ) ||\ + ((__VALUE__) == LL_GPIO_AF_15 )) +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup GPIO_LL_Exported_Functions + * @{ + */ + +/** @addtogroup GPIO_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize GPIO registers (Registers restored to their default values). + * @param GPIOx GPIO Port + * @retval An ErrorStatus enumeration value: + * - SUCCESS: GPIO registers are de-initialized + * - ERROR: Wrong GPIO Port + */ +ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx) +{ + ErrorStatus status = SUCCESS; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + + /* Force and Release reset on clock of GPIOx Port */ + if (GPIOx == GPIOA) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOA); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOA); + } + else if (GPIOx == GPIOB) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOB); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOB); + } + else if (GPIOx == GPIOC) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOC); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOC); + } +#if defined(GPIOD) + else if (GPIOx == GPIOD) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOD); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOD); + } +#endif /* GPIOD */ +#if defined(GPIOE) + else if (GPIOx == GPIOE) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOE); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOE); + } +#endif /* GPIOE */ +#if defined(GPIOF) + else if (GPIOx == GPIOF) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOF); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOF); + } +#endif /* GPIOF */ +#if defined(GPIOG) + else if (GPIOx == GPIOG) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOG); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOG); + } +#endif /* GPIOG */ +#if defined(GPIOH) + else if (GPIOx == GPIOH) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOH); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOH); + } +#endif /* GPIOH */ +#if defined(GPIOI) + else if (GPIOx == GPIOI) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOI); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOI); + } +#endif /* GPIOI */ +#if defined(GPIOJ) + else if (GPIOx == GPIOJ) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOJ); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOJ); + } +#endif /* GPIOJ */ +#if defined(GPIOK) + else if (GPIOx == GPIOK) + { + LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOK); + LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOK); + } +#endif /* GPIOK */ + else + { + status = ERROR; + } + + return (status); +} + +/** + * @brief Initialize GPIO registers according to the specified parameters in GPIO_InitStruct. + * @param GPIOx GPIO Port + * @param GPIO_InitStruct pointer to a @ref LL_GPIO_InitTypeDef structure + * that contains the configuration information for the specified GPIO peripheral. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: GPIO registers are initialized according to GPIO_InitStruct content + * - ERROR: Not applicable + */ +ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct) +{ + uint32_t pinpos = 0x00000000U; + uint32_t currentpin = 0x00000000U; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_LL_GPIO_PIN(GPIO_InitStruct->Pin)); + assert_param(IS_LL_GPIO_MODE(GPIO_InitStruct->Mode)); + assert_param(IS_LL_GPIO_PULL(GPIO_InitStruct->Pull)); + + /* ------------------------- Configure the port pins ---------------- */ + /* Initialize pinpos on first pin set */ + pinpos = POSITION_VAL(GPIO_InitStruct->Pin); + + /* Configure the port pins */ + while (((GPIO_InitStruct->Pin) >> pinpos) != 0x00000000U) + { + /* Get current io position */ + currentpin = (GPIO_InitStruct->Pin) & (0x00000001U << pinpos); + + if (currentpin) + { + if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE)) + { + /* Check Speed mode parameters */ + assert_param(IS_LL_GPIO_SPEED(GPIO_InitStruct->Speed)); + + /* Speed mode configuration */ + LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed); + + /* Check Output mode parameters */ + assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType)); + + /* Output mode configuration*/ + LL_GPIO_SetPinOutputType(GPIOx, GPIO_InitStruct->Pin, GPIO_InitStruct->OutputType); + } + + /* Pull-up Pull down resistor configuration*/ + LL_GPIO_SetPinPull(GPIOx, currentpin, GPIO_InitStruct->Pull); + + if (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE) + { + /* Check Alternate parameter */ + assert_param(IS_LL_GPIO_ALTERNATE(GPIO_InitStruct->Alternate)); + + /* Speed mode configuration */ + if (POSITION_VAL(currentpin) < 0x00000008U) + { + LL_GPIO_SetAFPin_0_7(GPIOx, currentpin, GPIO_InitStruct->Alternate); + } + else + { + LL_GPIO_SetAFPin_8_15(GPIOx, currentpin, GPIO_InitStruct->Alternate); + } + } + /* Pin Mode configuration */ + LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode); + } + pinpos++; + } + return (SUCCESS); +} + +/** + * @brief Set each @ref LL_GPIO_InitTypeDef field to default value. + * @param GPIO_InitStruct pointer to a @ref LL_GPIO_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ + +void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct) +{ + /* Reset GPIO init structure parameters values */ + GPIO_InitStruct->Pin = LL_GPIO_PIN_ALL; + GPIO_InitStruct->Mode = LL_GPIO_MODE_ANALOG; + GPIO_InitStruct->Speed = LL_GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct->OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct->Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct->Alternate = LL_GPIO_AF_0; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c new file mode 100644 index 0000000..d96774d --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c @@ -0,0 +1,1585 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_rcc.c + * @author MCD Application Team + * @brief RCC LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_ll_rcc.h" +#ifdef USE_FULL_ASSERT + #include "stm32_assert.h" +#else + #define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @addtogroup RCC_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup RCC_LL_Private_Macros + * @{ + */ +#define IS_LL_RCC_USART_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_USART1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_USART2_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_USART3_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_USART6_CLKSOURCE)) + +#define IS_LL_RCC_UART_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_UART4_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_UART5_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_UART7_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_UART8_CLKSOURCE)) + +#if defined(I2C4) +#define IS_LL_RCC_I2C_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2C1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_I2C2_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_I2C3_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_I2C4_CLKSOURCE)) +#else +#define IS_LL_RCC_I2C_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2C1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_I2C2_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_I2C3_CLKSOURCE)) +#endif /* I2C4 */ + +#define IS_LL_RCC_LPTIM_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_LPTIM1_CLKSOURCE)) + +#define IS_LL_RCC_SAI_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SAI1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_SAI2_CLKSOURCE)) + +#if defined(SDMMC2) +#define IS_LL_RCC_SDMMC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SDMMC1_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_SDMMC2_CLKSOURCE)) +#else +#define IS_LL_RCC_SDMMC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SDMMC1_CLKSOURCE)) +#endif /* SDMMC2 */ + +#define IS_LL_RCC_RNG_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_RNG_CLKSOURCE)) + +#define IS_LL_RCC_USB_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_USB_CLKSOURCE)) + +#if defined(DFSDM1_Channel0) +#define IS_LL_RCC_DFSDM_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DFSDM1_CLKSOURCE)) + +#define IS_LL_RCC_DFSDM_AUDIO_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DFSDM1_AUDIO_CLKSOURCE)) +#endif /* DFSDM1_Channel0 */ + +#define IS_LL_RCC_I2S_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2S1_CLKSOURCE)) + +#if defined(CEC) +#define IS_LL_RCC_CEC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_CEC_CLKSOURCE)) +#endif /* CEC */ + +#if defined(DSI) +#define IS_LL_RCC_DSI_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DSI_CLKSOURCE)) +#endif /* DSI */ + +#if defined(LTDC) +#define IS_LL_RCC_LTDC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_LTDC_CLKSOURCE)) +#endif /* LTDC */ + +#if defined(SPDIFRX) +#define IS_LL_RCC_SPDIFRX_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SPDIFRX1_CLKSOURCE)) +#endif /* SPDIFRX */ + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup RCC_LL_Private_Functions RCC Private functions + * @{ + */ +uint32_t RCC_GetSystemClockFreq(void); +uint32_t RCC_GetHCLKClockFreq(uint32_t SYSCLK_Frequency); +uint32_t RCC_GetPCLK1ClockFreq(uint32_t HCLK_Frequency); +uint32_t RCC_GetPCLK2ClockFreq(uint32_t HCLK_Frequency); +uint32_t RCC_PLL_GetFreqDomain_SYS(void); +uint32_t RCC_PLL_GetFreqDomain_SAI(void); +uint32_t RCC_PLL_GetFreqDomain_48M(void); +#if defined(DSI) +uint32_t RCC_PLL_GetFreqDomain_DSI(void); +#endif /* DSI */ +uint32_t RCC_PLLSAI_GetFreqDomain_SAI(void); +uint32_t RCC_PLLSAI_GetFreqDomain_48M(void); +#if defined(LTDC) +uint32_t RCC_PLLSAI_GetFreqDomain_LTDC(void); +#endif /* LTDC */ +uint32_t RCC_PLLI2S_GetFreqDomain_I2S(void); +uint32_t RCC_PLLI2S_GetFreqDomain_SAI(void); +#if defined(SPDIFRX) +uint32_t RCC_PLLI2S_GetFreqDomain_SPDIFRX(void); +#endif /* SPDIFRX */ +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup RCC_LL_Exported_Functions + * @{ + */ + +/** @addtogroup RCC_LL_EF_Init + * @{ + */ + +/** + * @brief Reset the RCC clock configuration to the default reset state. + * @note The default reset state of the clock configuration is given below: + * - HSI ON and used as system clock source + * - HSE, PLL, PLLI2S, PLLSAI OFF + * - AHB, APB1 and APB2 prescaler set to 1. + * - CSS, MCO OFF + * - All interrupts disabled + * @note This function doesn't modify the configuration of the + * - Peripheral clocks + * - LSI, LSE and RTC clocks + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RCC registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_RCC_DeInit(void) +{ + __IO uint32_t vl_mask; + + /* Set HSION bit */ + LL_RCC_HSI_Enable(); + + /* Wait for HSI READY bit */ + while(LL_RCC_HSI_IsReady() != 1U) + {} + + /* Reset CFGR register */ + LL_RCC_WriteReg(CFGR, 0x00000000U); + + /* Read CR register */ + vl_mask = LL_RCC_ReadReg(CR); + + /* Reset HSEON, HSEBYP, PLLON, CSSON, PLLI2SON and PLLSAION bits */ + CLEAR_BIT(vl_mask, (RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_PLLON | RCC_CR_CSSON | RCC_CR_PLLSAION | RCC_CR_PLLI2SON)); + + /* Write new value in CR register */ + LL_RCC_WriteReg(CR, vl_mask); + + /* Set HSITRIM bits to the reset value*/ + LL_RCC_HSI_SetCalibTrimming(0x10U); + + /* Wait for PLL READY bit to be reset */ + while(LL_RCC_PLL_IsReady() != 0U) + {} + + /* Wait for PLLI2S READY bit to be reset */ + while(LL_RCC_PLLI2S_IsReady() != 0U) + {} + + /* Wait for PLLSAI READY bit to be reset */ + while(LL_RCC_PLLSAI_IsReady() != 0U) + {} + + /* Reset PLLCFGR register */ + LL_RCC_WriteReg(PLLCFGR, 0x24003010U); + + /* Reset PLLI2SCFGR register */ + LL_RCC_WriteReg(PLLI2SCFGR, 0x24003000U); + + /* Reset PLLSAICFGR register */ + LL_RCC_WriteReg(PLLSAICFGR, 0x24003000U); + + /* Disable all interrupts */ + CLEAR_BIT(RCC->CIR, RCC_CIR_LSIRDYIE | RCC_CIR_LSERDYIE | RCC_CIR_HSIRDYIE | RCC_CIR_HSERDYIE | RCC_CIR_PLLRDYIE | RCC_CIR_PLLI2SRDYIE | RCC_CIR_PLLSAIRDYIE); + + /* Clear all interrupt flags */ + SET_BIT(RCC->CIR, RCC_CIR_LSIRDYC | RCC_CIR_LSERDYC | RCC_CIR_HSIRDYC | RCC_CIR_HSERDYC | RCC_CIR_PLLRDYC | RCC_CIR_PLLI2SRDYC | RCC_CIR_PLLSAIRDYC | RCC_CIR_CSSC); + + /* Clear LSION bit */ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); + + /* Reset all CSR flags */ + SET_BIT(RCC->CSR, RCC_CSR_RMVF); + + return SUCCESS; +} + +/** + * @} + */ + +/** @addtogroup RCC_LL_EF_Get_Freq + * @brief Return the frequencies of different on chip clocks; System, AHB, APB1 and APB2 buses clocks + * and different peripheral clocks available on the device. + * @note If SYSCLK source is HSI, function returns values based on HSI_VALUE(**) + * @note If SYSCLK source is HSE, function returns values based on HSE_VALUE(***) + * @note If SYSCLK source is PLL, function returns values based on HSE_VALUE(***) + * or HSI_VALUE(**) multiplied/divided by the PLL factors. + * @note (**) HSI_VALUE is a constant defined in this file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * @note (***) HSE_VALUE is a constant defined in this file (default value + * 25 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * @note The result of this function could be incorrect when using fractional + * value for HSE crystal. + * @note This function can be used by the user application to compute the + * baud-rate for the communication peripherals or configure other parameters. + * @{ + */ + +/** + * @brief Return the frequencies of different on chip clocks; System, AHB, APB1 and APB2 buses clocks + * @note Each time SYSCLK, HCLK, PCLK1 and/or PCLK2 clock changes, this function + * must be called to update structure fields. Otherwise, any + * configuration based on this function will be incorrect. + * @param RCC_Clocks pointer to a @ref LL_RCC_ClocksTypeDef structure which will hold the clocks frequencies + * @retval None + */ +void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks) +{ + /* Get SYSCLK frequency */ + RCC_Clocks->SYSCLK_Frequency = RCC_GetSystemClockFreq(); + + /* HCLK clock frequency */ + RCC_Clocks->HCLK_Frequency = RCC_GetHCLKClockFreq(RCC_Clocks->SYSCLK_Frequency); + + /* PCLK1 clock frequency */ + RCC_Clocks->PCLK1_Frequency = RCC_GetPCLK1ClockFreq(RCC_Clocks->HCLK_Frequency); + + /* PCLK2 clock frequency */ + RCC_Clocks->PCLK2_Frequency = RCC_GetPCLK2ClockFreq(RCC_Clocks->HCLK_Frequency); +} + +/** + * @brief Return USARTx clock frequency + * @param USARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE + * @arg @ref LL_RCC_USART2_CLKSOURCE + * @arg @ref LL_RCC_USART3_CLKSOURCE + * @arg @ref LL_RCC_USART6_CLKSOURCE + * @retval USART clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI or LSE) is not ready + */ +uint32_t LL_RCC_GetUSARTClockFreq(uint32_t USARTxSource) +{ + uint32_t usart_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_USART_CLKSOURCE(USARTxSource)); + + if (USARTxSource == LL_RCC_USART1_CLKSOURCE) + { + /* USART1CLK clock frequency */ + switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + { + case LL_RCC_USART1_CLKSOURCE_SYSCLK: /* USART1 Clock is System Clock */ + usart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_USART1_CLKSOURCE_HSI: /* USART1 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + usart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_USART1_CLKSOURCE_LSE: /* USART1 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady()) + { + usart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_USART1_CLKSOURCE_PCLK2: /* USART1 Clock is PCLK2 */ + default: + usart_frequency = RCC_GetPCLK2ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + else if (USARTxSource == LL_RCC_USART2_CLKSOURCE) + { + /* USART2CLK clock frequency */ + switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + { + case LL_RCC_USART2_CLKSOURCE_SYSCLK: /* USART2 Clock is System Clock */ + usart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_USART2_CLKSOURCE_HSI: /* USART2 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + usart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_USART2_CLKSOURCE_LSE: /* USART2 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady()) + { + usart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_USART2_CLKSOURCE_PCLK1: /* USART2 Clock is PCLK1 */ + default: + usart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + else if (USARTxSource == LL_RCC_USART6_CLKSOURCE) + { + /* USART6CLK clock frequency */ + switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + { + case LL_RCC_USART6_CLKSOURCE_SYSCLK: /* USART6 Clock is System Clock */ + usart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_USART6_CLKSOURCE_HSI: /* USART6 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + usart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_USART6_CLKSOURCE_LSE: /* USART6 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady()) + { + usart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_USART6_CLKSOURCE_PCLK2: /* USART6 Clock is PCLK2 */ + default: + usart_frequency = RCC_GetPCLK2ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + else + { + if (USARTxSource == LL_RCC_USART3_CLKSOURCE) + { + /* USART3CLK clock frequency */ + switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + { + case LL_RCC_USART3_CLKSOURCE_SYSCLK: /* USART3 Clock is System Clock */ + usart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_USART3_CLKSOURCE_HSI: /* USART3 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + usart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_USART3_CLKSOURCE_LSE: /* USART3 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady()) + { + usart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_USART3_CLKSOURCE_PCLK1: /* USART3 Clock is PCLK1 */ + default: + usart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + } + return usart_frequency; +} + +/** + * @brief Return UARTx clock frequency + * @param UARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_UART4_CLKSOURCE + * @arg @ref LL_RCC_UART5_CLKSOURCE + * @arg @ref LL_RCC_UART7_CLKSOURCE + * @arg @ref LL_RCC_UART8_CLKSOURCE + * @retval UART clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI or LSE) is not ready + */ +uint32_t LL_RCC_GetUARTClockFreq(uint32_t UARTxSource) +{ + uint32_t uart_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_UART_CLKSOURCE(UARTxSource)); + + if (UARTxSource == LL_RCC_UART4_CLKSOURCE) + { + /* UART4CLK clock frequency */ + switch (LL_RCC_GetUARTClockSource(UARTxSource)) + { + case LL_RCC_UART4_CLKSOURCE_SYSCLK: /* UART4 Clock is System Clock */ + uart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_UART4_CLKSOURCE_HSI: /* UART4 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + uart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_UART4_CLKSOURCE_LSE: /* UART4 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady()) + { + uart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_UART4_CLKSOURCE_PCLK1: /* UART4 Clock is PCLK1 */ + default: + uart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + else if (UARTxSource == LL_RCC_UART5_CLKSOURCE) + { + /* UART5CLK clock frequency */ + switch (LL_RCC_GetUARTClockSource(UARTxSource)) + { + case LL_RCC_UART5_CLKSOURCE_SYSCLK: /* UART5 Clock is System Clock */ + uart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_UART5_CLKSOURCE_HSI: /* UART5 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + uart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_UART5_CLKSOURCE_LSE: /* UART5 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady()) + { + uart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_UART5_CLKSOURCE_PCLK1: /* UART5 Clock is PCLK1 */ + default: + uart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + else if (UARTxSource == LL_RCC_UART7_CLKSOURCE) + { + /* UART7CLK clock frequency */ + switch (LL_RCC_GetUARTClockSource(UARTxSource)) + { + case LL_RCC_UART7_CLKSOURCE_SYSCLK: /* UART7 Clock is System Clock */ + uart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_UART7_CLKSOURCE_HSI: /* UART7 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + uart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_UART7_CLKSOURCE_LSE: /* UART7 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady()) + { + uart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_UART7_CLKSOURCE_PCLK1: /* UART7 Clock is PCLK1 */ + default: + uart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + else + { + if (UARTxSource == LL_RCC_UART8_CLKSOURCE) + { + /* UART8CLK clock frequency */ + switch (LL_RCC_GetUARTClockSource(UARTxSource)) + { + case LL_RCC_UART8_CLKSOURCE_SYSCLK: /* UART8 Clock is System Clock */ + uart_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_UART8_CLKSOURCE_HSI: /* UART8 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + uart_frequency = HSI_VALUE; + } + break; + + case LL_RCC_UART8_CLKSOURCE_LSE: /* UART8 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady()) + { + uart_frequency = LSE_VALUE; + } + break; + + case LL_RCC_UART8_CLKSOURCE_PCLK1: /* UART8 Clock is PCLK1 */ + default: + uart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + } + return uart_frequency; +} + +/** + * @brief Return I2Cx clock frequency + * @param I2CxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE + * @arg @ref LL_RCC_I2C2_CLKSOURCE + * @arg @ref LL_RCC_I2C3_CLKSOURCE + * @arg @ref LL_RCC_I2C4_CLKSOURCE (*) + * + * (*) value not defined in all devices. + * @retval I2C clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that HSI oscillator is not ready + */ +uint32_t LL_RCC_GetI2CClockFreq(uint32_t I2CxSource) +{ + uint32_t i2c_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_I2C_CLKSOURCE(I2CxSource)); + + if (I2CxSource == LL_RCC_I2C1_CLKSOURCE) + { + /* I2C1 CLK clock frequency */ + switch (LL_RCC_GetI2CClockSource(I2CxSource)) + { + case LL_RCC_I2C1_CLKSOURCE_SYSCLK: /* I2C1 Clock is System Clock */ + i2c_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_I2C1_CLKSOURCE_HSI: /* I2C1 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + i2c_frequency = HSI_VALUE; + } + break; + + case LL_RCC_I2C1_CLKSOURCE_PCLK1: /* I2C1 Clock is PCLK1 */ + default: + i2c_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + else if (I2CxSource == LL_RCC_I2C2_CLKSOURCE) + { + /* I2C2 CLK clock frequency */ + switch (LL_RCC_GetI2CClockSource(I2CxSource)) + { + case LL_RCC_I2C2_CLKSOURCE_SYSCLK: /* I2C2 Clock is System Clock */ + i2c_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_I2C2_CLKSOURCE_HSI: /* I2C2 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + i2c_frequency = HSI_VALUE; + } + break; + + case LL_RCC_I2C2_CLKSOURCE_PCLK1: /* I2C2 Clock is PCLK1 */ + default: + i2c_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + else if (I2CxSource == LL_RCC_I2C3_CLKSOURCE) + { + /* I2C3 CLK clock frequency */ + switch (LL_RCC_GetI2CClockSource(I2CxSource)) + { + case LL_RCC_I2C3_CLKSOURCE_SYSCLK: /* I2C3 Clock is System Clock */ + i2c_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_I2C3_CLKSOURCE_HSI: /* I2C3 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + i2c_frequency = HSI_VALUE; + } + break; + + case LL_RCC_I2C3_CLKSOURCE_PCLK1: /* I2C3 Clock is PCLK1 */ + default: + i2c_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } +#if defined(I2C4) + else + { + if (I2CxSource == LL_RCC_I2C4_CLKSOURCE) + { + /* I2C4 CLK clock frequency */ + switch (LL_RCC_GetI2CClockSource(I2CxSource)) + { + case LL_RCC_I2C4_CLKSOURCE_SYSCLK: /* I2C4 Clock is System Clock */ + i2c_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_I2C4_CLKSOURCE_HSI: /* I2C4 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + i2c_frequency = HSI_VALUE; + } + break; + + case LL_RCC_I2C4_CLKSOURCE_PCLK1: /* I2C4 Clock is PCLK1 */ + default: + i2c_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + } +#else + else + { + /* Nothing to do */ + } +#endif /* I2C4 */ + + return i2c_frequency; +} + +/** + * @brief Return I2Sx clock frequency + * @param I2SxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S1_CLKSOURCE + * @retval I2S clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that PLLI2S oscillator is not ready + */ +uint32_t LL_RCC_GetI2SClockFreq(uint32_t I2SxSource) +{ + uint32_t i2s_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_I2S_CLKSOURCE(I2SxSource)); + + if (I2SxSource == LL_RCC_I2S1_CLKSOURCE) + { + /* I2S1 CLK clock frequency */ + switch (LL_RCC_GetI2SClockSource(I2SxSource)) + { + case LL_RCC_I2S1_CLKSOURCE_PLLI2S: /* I2S1 Clock is PLLI2S */ + if (LL_RCC_PLLI2S_IsReady()) + { + i2s_frequency = RCC_PLLI2S_GetFreqDomain_I2S(); + } + break; + + case LL_RCC_I2S1_CLKSOURCE_PIN: /* I2S1 Clock is External clock */ + default: + i2s_frequency = EXTERNAL_CLOCK_VALUE; + break; + } + } + + return i2s_frequency; +} + +/** + * @brief Return LPTIMx clock frequency + * @param LPTIMxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE + * @retval LPTIM clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI, LSI or LSE) is not ready + */ +uint32_t LL_RCC_GetLPTIMClockFreq(uint32_t LPTIMxSource) +{ + uint32_t lptim_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_LPTIM_CLKSOURCE(LPTIMxSource)); + + if (LPTIMxSource == LL_RCC_LPTIM1_CLKSOURCE) + { + /* LPTIM1CLK clock frequency */ + switch (LL_RCC_GetLPTIMClockSource(LPTIMxSource)) + { + case LL_RCC_LPTIM1_CLKSOURCE_LSI: /* LPTIM1 Clock is LSI Osc. */ + if (LL_RCC_LSI_IsReady()) + { + lptim_frequency = LSI_VALUE; + } + break; + + case LL_RCC_LPTIM1_CLKSOURCE_HSI: /* LPTIM1 Clock is HSI Osc. */ + if (LL_RCC_HSI_IsReady()) + { + lptim_frequency = HSI_VALUE; + } + break; + + case LL_RCC_LPTIM1_CLKSOURCE_LSE: /* LPTIM1 Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady()) + { + lptim_frequency = LSE_VALUE; + } + break; + + case LL_RCC_LPTIM1_CLKSOURCE_PCLK1: /* LPTIM1 Clock is PCLK1 */ + default: + lptim_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + } + + return lptim_frequency; +} + +/** + * @brief Return SAIx clock frequency + * @param SAIxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_SAI1_CLKSOURCE + * @arg @ref LL_RCC_SAI2_CLKSOURCE + * @retval SAI clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that PLL is not ready + */ +uint32_t LL_RCC_GetSAIClockFreq(uint32_t SAIxSource) +{ + uint32_t sai_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_SAI_CLKSOURCE(SAIxSource)); + + if (SAIxSource == LL_RCC_SAI1_CLKSOURCE) + { + /* SAI1CLK clock frequency */ + switch (LL_RCC_GetSAIClockSource(SAIxSource)) + { + case LL_RCC_SAI1_CLKSOURCE_PLLSAI: /* PLLSAI clock used as SAI1 clock source */ + if (LL_RCC_PLLSAI_IsReady()) + { + sai_frequency = RCC_PLLSAI_GetFreqDomain_SAI(); + } + break; + + case LL_RCC_SAI1_CLKSOURCE_PLLI2S: /* PLLI2S clock used as SAI1 clock source */ + if (LL_RCC_PLLI2S_IsReady()) + { + sai_frequency = RCC_PLLI2S_GetFreqDomain_SAI(); + } + break; + +#if defined(RCC_SAI1SEL_PLLSRC_SUPPORT) + case LL_RCC_SAI1_CLKSOURCE_PLLSRC: + switch (LL_RCC_PLL_GetMainSource()) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE clock used as SAI1 clock source */ + if (LL_RCC_HSE_IsReady()) + { + sai_frequency = HSE_VALUE; + } + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI clock used as SAI1 clock source */ + default: + if (LL_RCC_HSI_IsReady()) + { + sai_frequency = HSI_VALUE; + } + break; + } + break; +#endif /* RCC_SAI1SEL_PLLSRC_SUPPORT */ + case LL_RCC_SAI1_CLKSOURCE_PIN: /* External input clock used as SAI1 clock source */ + sai_frequency = EXTERNAL_SAI1_CLOCK_VALUE; + break; + + default: + break; + } + } + else + { + if (SAIxSource == LL_RCC_SAI2_CLKSOURCE) + { + /* SAI2CLK clock frequency */ + switch (LL_RCC_GetSAIClockSource(SAIxSource)) + { + case LL_RCC_SAI2_CLKSOURCE_PLLSAI: /* PLLSAI clock used as SAI2 clock source */ + if (LL_RCC_PLLSAI_IsReady()) + { + sai_frequency = RCC_PLLSAI_GetFreqDomain_SAI(); + } + break; + + case LL_RCC_SAI2_CLKSOURCE_PLLI2S: /* PLLI2S clock used as SAI2 clock source */ + if (LL_RCC_PLLI2S_IsReady()) + { + sai_frequency = RCC_PLLI2S_GetFreqDomain_SAI(); + } + break; + +#if defined(RCC_SAI2SEL_PLLSRC_SUPPORT) + case LL_RCC_SAI2_CLKSOURCE_PLLSRC: + switch (LL_RCC_PLL_GetMainSource()) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE clock used as SAI2 clock source */ + if (LL_RCC_HSE_IsReady()) + { + sai_frequency = HSE_VALUE; + } + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI clock used as SAI2 clock source */ + default: + if (LL_RCC_HSI_IsReady()) + { + sai_frequency = HSI_VALUE; + } + break; + } + break; +#endif /* RCC_SAI2SEL_PLLSRC_SUPPORT */ + case LL_RCC_SAI2_CLKSOURCE_PIN: /* External input clock used as SAI2 clock source */ + sai_frequency = EXTERNAL_SAI2_CLOCK_VALUE; + break; + + default: + break; + } + } + } + + return sai_frequency; +} + +/** + * @brief Return SDMMCx clock frequency + * @param SDMMCxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE + * @arg @ref LL_RCC_SDMMC2_CLKSOURCE (*) + * + * (*) value not defined in all devices. + * @retval SDMMC clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator PLL is not ready + */ +uint32_t LL_RCC_GetSDMMCClockFreq(uint32_t SDMMCxSource) +{ + uint32_t sdmmc_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_SDMMC_CLKSOURCE(SDMMCxSource)); + + if (SDMMCxSource == LL_RCC_SDMMC1_CLKSOURCE) + { + /* SDMMC1CLK clock frequency */ + switch (LL_RCC_GetSDMMCClockSource(SDMMCxSource)) + { + case LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK: /* PLL48 clock used as SDMMC1 clock source */ + switch (LL_RCC_GetCK48MClockSource(LL_RCC_CK48M_CLKSOURCE)) + { + case LL_RCC_CK48M_CLKSOURCE_PLL: /* PLL clock used as 48Mhz domain clock */ + if (LL_RCC_PLL_IsReady()) + { + sdmmc_frequency = RCC_PLL_GetFreqDomain_48M(); + } + break; + + case LL_RCC_CK48M_CLKSOURCE_PLLSAI: /* PLLSAI clock used as 48Mhz domain clock */ + default: + if (LL_RCC_PLLSAI_IsReady()) + { + sdmmc_frequency = RCC_PLLSAI_GetFreqDomain_48M(); + } + break; + } + break; + + case LL_RCC_SDMMC1_CLKSOURCE_SYSCLK: /* PLL clock used as SDMMC1 clock source */ + default: + sdmmc_frequency = RCC_GetSystemClockFreq(); + break; + } + } +#if defined(SDMMC2) + else + { + /* SDMMC2CLK clock frequency */ + switch (LL_RCC_GetSDMMCClockSource(SDMMCxSource)) + { + case LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK: /* PLL48 clock used as SDMMC2 clock source */ + switch (LL_RCC_GetCK48MClockSource(LL_RCC_CK48M_CLKSOURCE)) + { + case LL_RCC_CK48M_CLKSOURCE_PLL: /* PLL clock used as 48Mhz domain clock */ + if (LL_RCC_PLL_IsReady()) + { + sdmmc_frequency = RCC_PLL_GetFreqDomain_48M(); + } + break; + + case LL_RCC_CK48M_CLKSOURCE_PLLSAI: /* PLLSAI clock used as 48Mhz domain clock */ + default: + if (LL_RCC_PLLSAI_IsReady()) + { + sdmmc_frequency = RCC_PLLSAI_GetFreqDomain_48M(); + } + break; + } + break; + + case LL_RCC_SDMMC2_CLKSOURCE_SYSCLK: /* PLL clock used as SDMMC2 clock source */ + default: + sdmmc_frequency = RCC_GetSystemClockFreq(); + break; + } + } +#endif /* SDMMC2 */ + + return sdmmc_frequency; +} + +/** + * @brief Return RNGx clock frequency + * @param RNGxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE + * @retval RNG clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator is not ready + */ +uint32_t LL_RCC_GetRNGClockFreq(uint32_t RNGxSource) +{ + uint32_t rng_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_RNG_CLKSOURCE(RNGxSource)); + + /* RNGCLK clock frequency */ + switch (LL_RCC_GetRNGClockSource(RNGxSource)) + { + case LL_RCC_RNG_CLKSOURCE_PLL: /* PLL clock used as RNG clock source */ + if (LL_RCC_PLL_IsReady()) + { + rng_frequency = RCC_PLL_GetFreqDomain_48M(); + } + break; + + case LL_RCC_RNG_CLKSOURCE_PLLSAI: /* PLLSAI clock used as RNG clock source */ + default: + if (LL_RCC_PLLSAI_IsReady()) + { + rng_frequency = RCC_PLLSAI_GetFreqDomain_48M(); + } + break; + } + + return rng_frequency; +} + +#if defined(CEC) +/** + * @brief Return CEC clock frequency + * @param CECxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_CEC_CLKSOURCE + * @retval CEC clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI or LSE) is not ready + */ +uint32_t LL_RCC_GetCECClockFreq(uint32_t CECxSource) +{ + uint32_t cec_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_CEC_CLKSOURCE(CECxSource)); + + /* CECCLK clock frequency */ + switch (LL_RCC_GetCECClockSource(CECxSource)) + { + case LL_RCC_CEC_CLKSOURCE_LSE: /* CEC Clock is LSE Osc. */ + if (LL_RCC_LSE_IsReady()) + { + cec_frequency = LSE_VALUE; + } + break; + + case LL_RCC_CEC_CLKSOURCE_HSI_DIV488: /* CEC Clock is HSI Osc. */ + default: + if (LL_RCC_HSI_IsReady()) + { + cec_frequency = HSI_VALUE/488U; + } + break; + } + + return cec_frequency; +} +#endif /* CEC */ + +/** + * @brief Return USBx clock frequency + * @param USBxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE + * @retval USB clock frequency (in Hz) + */ +uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource) +{ + uint32_t usb_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_USB_CLKSOURCE(USBxSource)); + + /* USBCLK clock frequency */ + switch (LL_RCC_GetUSBClockSource(USBxSource)) + { + case LL_RCC_USB_CLKSOURCE_PLL: /* PLL clock used as USB clock source */ + if (LL_RCC_PLL_IsReady()) + { + usb_frequency = RCC_PLL_GetFreqDomain_48M(); + } + break; + + case LL_RCC_USB_CLKSOURCE_PLLSAI: /* PLLSAI clock used as USB clock source */ + default: + if (LL_RCC_PLLSAI_IsReady()) + { + usb_frequency = RCC_PLLSAI_GetFreqDomain_48M(); + } + break; + } + + return usb_frequency; +} + +#if defined(DFSDM1_Channel0) +/** + * @brief Return DFSDMx clock frequency + * @param DFSDMxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE + * @retval DFSDM clock frequency (in Hz) + */ +uint32_t LL_RCC_GetDFSDMClockFreq(uint32_t DFSDMxSource) +{ + uint32_t dfsdm_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_DFSDM_CLKSOURCE(DFSDMxSource)); + + /* DFSDM1CLK clock frequency */ + switch (LL_RCC_GetDFSDMClockSource(DFSDMxSource)) + { + case LL_RCC_DFSDM1_CLKSOURCE_SYSCLK: /* DFSDM1 Clock is SYSCLK */ + dfsdm_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_DFSDM1_CLKSOURCE_PCLK2: /* DFSDM1 Clock is PCLK2 */ + default: + dfsdm_frequency = RCC_GetPCLK2ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + break; + } + + return dfsdm_frequency; +} + +/** + * @brief Return DFSDMx Audio clock frequency + * @param DFSDMxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE + * @retval DFSDM clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator is not ready + */ +uint32_t LL_RCC_GetDFSDMAudioClockFreq(uint32_t DFSDMxSource) +{ + uint32_t dfsdm_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_DFSDM_AUDIO_CLKSOURCE(DFSDMxSource)); + + /* DFSDM1CLK clock frequency */ + switch (LL_RCC_GetDFSDMAudioClockSource(DFSDMxSource)) + { + case LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1: /* SAI1 clock used as DFSDM1 audio clock */ + dfsdm_frequency = LL_RCC_GetSAIClockFreq(LL_RCC_SAI1_CLKSOURCE); + break; + + case LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2: /* SAI2 clock used as DFSDM1 audio clock */ + default: + dfsdm_frequency = LL_RCC_GetSAIClockFreq(LL_RCC_SAI2_CLKSOURCE); + break; + } + + return dfsdm_frequency; +} +#endif /* DFSDM1_Channel0 */ + +#if defined(DSI) +/** + * @brief Return DSI clock frequency + * @param DSIxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_DSI_CLKSOURCE + * @retval DSI clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator is not ready + * - @ref LL_RCC_PERIPH_FREQUENCY_NA indicates that external clock is used + */ +uint32_t LL_RCC_GetDSIClockFreq(uint32_t DSIxSource) +{ + uint32_t dsi_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_DSI_CLKSOURCE(DSIxSource)); + + /* DSICLK clock frequency */ + switch (LL_RCC_GetDSIClockSource(DSIxSource)) + { + case LL_RCC_DSI_CLKSOURCE_PLL: /* DSI Clock is PLL Osc. */ + if (LL_RCC_PLL_IsReady()) + { + dsi_frequency = RCC_PLL_GetFreqDomain_DSI(); + } + break; + + case LL_RCC_DSI_CLKSOURCE_PHY: /* DSI Clock is DSI physical clock. */ + default: + dsi_frequency = LL_RCC_PERIPH_FREQUENCY_NA; + break; + } + + return dsi_frequency; +} +#endif /* DSI */ + +#if defined(LTDC) +/** + * @brief Return LTDC clock frequency + * @param LTDCxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_LTDC_CLKSOURCE + * @retval LTDC clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator PLLSAI is not ready + */ +uint32_t LL_RCC_GetLTDCClockFreq(uint32_t LTDCxSource) +{ + uint32_t ltdc_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_LTDC_CLKSOURCE(LTDCxSource)); + + if (LL_RCC_PLLSAI_IsReady()) + { + ltdc_frequency = RCC_PLLSAI_GetFreqDomain_LTDC(); + } + + return ltdc_frequency; +} +#endif /* LTDC */ + +#if defined(SPDIFRX) +/** + * @brief Return SPDIFRX clock frequency + * @param SPDIFRXxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_SPDIFRX1_CLKSOURCE + * @retval SPDIFRX clock frequency (in Hz) + * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator is not ready + */ +uint32_t LL_RCC_GetSPDIFRXClockFreq(uint32_t SPDIFRXxSource) +{ + uint32_t spdifrx_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_SPDIFRX_CLKSOURCE(SPDIFRXxSource)); + + if (LL_RCC_PLLI2S_IsReady()) + { + spdifrx_frequency = RCC_PLLI2S_GetFreqDomain_SPDIFRX(); + } + + return spdifrx_frequency; +} +#endif /* SPDIFRX */ + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup RCC_LL_Private_Functions + * @{ + */ + +/** + * @brief Return SYSTEM clock frequency + * @retval SYSTEM clock frequency (in Hz) + */ +uint32_t RCC_GetSystemClockFreq(void) +{ + uint32_t frequency = 0U; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (LL_RCC_GetSysClkSource()) + { + case LL_RCC_SYS_CLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + frequency = HSI_VALUE; + break; + + case LL_RCC_SYS_CLKSOURCE_STATUS_HSE: /* HSE used as system clock source */ + frequency = HSE_VALUE; + break; + + case LL_RCC_SYS_CLKSOURCE_STATUS_PLL: /* PLL used as system clock source */ + frequency = RCC_PLL_GetFreqDomain_SYS(); + break; + + default: + frequency = HSI_VALUE; + break; + } + + return frequency; +} + +/** + * @brief Return HCLK clock frequency + * @param SYSCLK_Frequency SYSCLK clock frequency + * @retval HCLK clock frequency (in Hz) + */ +uint32_t RCC_GetHCLKClockFreq(uint32_t SYSCLK_Frequency) +{ + /* HCLK clock frequency */ + return __LL_RCC_CALC_HCLK_FREQ(SYSCLK_Frequency, LL_RCC_GetAHBPrescaler()); +} + +/** + * @brief Return PCLK1 clock frequency + * @param HCLK_Frequency HCLK clock frequency + * @retval PCLK1 clock frequency (in Hz) + */ +uint32_t RCC_GetPCLK1ClockFreq(uint32_t HCLK_Frequency) +{ + /* PCLK1 clock frequency */ + return __LL_RCC_CALC_PCLK1_FREQ(HCLK_Frequency, LL_RCC_GetAPB1Prescaler()); +} + +/** + * @brief Return PCLK2 clock frequency + * @param HCLK_Frequency HCLK clock frequency + * @retval PCLK2 clock frequency (in Hz) + */ +uint32_t RCC_GetPCLK2ClockFreq(uint32_t HCLK_Frequency) +{ + /* PCLK2 clock frequency */ + return __LL_RCC_CALC_PCLK2_FREQ(HCLK_Frequency, LL_RCC_GetAPB2Prescaler()); +} + +/** + * @brief Return PLL clock frequency used for system domain + * @retval PLL clock frequency (in Hz) + */ +uint32_t RCC_PLL_GetFreqDomain_SYS(void) +{ + uint32_t pllinputfreq = 0U, pllsource = 0U; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + SYSCLK = PLL_VCO / PLLP + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + pllinputfreq = HSI_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetP()); +} + +/** + * @brief Return PLL clock frequency used for 48 MHz domain + * @retval PLL clock frequency (in Hz) + */ +uint32_t RCC_PLL_GetFreqDomain_48M(void) +{ + uint32_t pllinputfreq = 0U, pllsource = 0U; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM ) * PLLN + 48M Domain clock = PLL_VCO / PLLQ + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + pllinputfreq = HSI_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_48M_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetQ()); +} + +#if defined(DSI) +/** + * @brief Return PLL clock frequency used for DSI clock + * @retval PLL clock frequency (in Hz) + */ +uint32_t RCC_PLL_GetFreqDomain_DSI(void) +{ + uint32_t pllinputfreq = 0U, pllsource = 0U; + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + DSICLK = PLL_VCO / PLLR + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLCLK_DSI_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLL_GetN(), LL_RCC_PLL_GetR()); +} +#endif /* DSI */ + +/** + * @brief Return PLLSAI clock frequency used for SAI1 and SAI2 domains + * @retval PLLSAI clock frequency (in Hz) + */ +uint32_t RCC_PLLSAI_GetFreqDomain_SAI(void) +{ + uint32_t pllinputfreq = 0U, pllsource = 0U; + + /* PLLSAI_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLSAIN + SAI1 and SAI2 domains clock = (PLLSAI_VCO / PLLSAIQ) / PLLSAIDIVQ + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLSAI clock source */ + pllinputfreq = HSI_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLSAI clock source */ + pllinputfreq = HSE_VALUE; + break; + + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLSAI_SAI_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLLSAI_GetN(), LL_RCC_PLLSAI_GetQ(), LL_RCC_PLLSAI_GetDIVQ()); +} + +/** + * @brief Return PLLSAI clock frequency used for 48Mhz domain + * @retval PLLSAI clock frequency (in Hz) + */ +uint32_t RCC_PLLSAI_GetFreqDomain_48M(void) +{ + uint32_t pllinputfreq = 0U, pllsource = 0U; + + /* PLLSAI_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLSAIN + 48M Domain clock = PLLSAI_VCO / PLLSAIP + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLSAI clock source */ + pllinputfreq = HSI_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLSAI clock source */ + pllinputfreq = HSE_VALUE; + break; + + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLSAI_48M_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLLSAI_GetN(), LL_RCC_PLLSAI_GetP()); +} + +#if defined(LTDC) +/** + * @brief Return PLLSAI clock frequency used for LTDC domain + * @retval PLLSAI clock frequency (in Hz) + */ +uint32_t RCC_PLLSAI_GetFreqDomain_LTDC(void) +{ + uint32_t pllinputfreq = 0U, pllsource = 0U; + + /* PLLSAI_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLSAIN + LTDC Domain clock = (PLLSAI_VCO / PLLSAIR) / PLLSAIDIVR + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLSAI clock source */ + pllinputfreq = HSI_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLSAI clock source */ + pllinputfreq = HSE_VALUE; + break; + + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLSAI_LTDC_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLLSAI_GetN(), LL_RCC_PLLSAI_GetR(), LL_RCC_PLLSAI_GetDIVR()); +} +#endif /* LTDC */ + +/** + * @brief Return PLLI2S clock frequency used for SAI1 and SAI2 domains + * @retval PLLI2S clock frequency (in Hz) + */ +uint32_t RCC_PLLI2S_GetFreqDomain_SAI(void) +{ + uint32_t pllinputfreq = 0U, pllsource = 0U; + + /* PLLI2S_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLI2SN + SAI1 and SAI2 domains clock = (PLLI2S_VCO / PLLI2SQ) / PLLI2SDIVQ + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLI2S clock source */ + pllinputfreq = HSI_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLI2S clock source */ + pllinputfreq = HSE_VALUE; + break; + + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLI2S_SAI_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetQ(), LL_RCC_PLLI2S_GetDIVQ()); +} + +#if defined(SPDIFRX) +/** + * @brief Return PLLI2S clock frequency used for SPDIFRX domain + * @retval PLLI2S clock frequency (in Hz) + */ +uint32_t RCC_PLLI2S_GetFreqDomain_SPDIFRX(void) +{ + uint32_t pllinputfreq = 0U, pllsource = 0U; + + /* PLLI2S_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLI2SN + SPDIFRX Domain clock = PLLI2S_VCO / PLLI2SP + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLI2S clock source */ + pllinputfreq = HSI_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLI2S clock source */ + pllinputfreq = HSE_VALUE; + break; + + default: + pllinputfreq = HSI_VALUE; + break; + } + + return __LL_RCC_CALC_PLLI2S_SPDIFRX_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetP()); +} +#endif /* SPDIFRX */ + +/** + * @brief Return PLLI2S clock frequency used for I2S domain + * @retval PLLI2S clock frequency (in Hz) + */ +uint32_t RCC_PLLI2S_GetFreqDomain_I2S(void) +{ + uint32_t pllinputfreq = 0U, pllsource = 0U; + + /* PLLI2S_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLI2SN + I2S Domain clock = PLLI2S_VCO / PLLI2SR + */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLI2S clock source */ + pllinputfreq = HSE_VALUE; + break; + + case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLI2S clock source */ + default: + pllinputfreq = HSI_VALUE; + break; + } + return __LL_RCC_CALC_PLLI2S_I2S_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetR()); +} + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RCC) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c new file mode 100644 index 0000000..82893db --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c @@ -0,0 +1,1578 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_sdmmc.c + * @author MCD Application Team + * @brief SDMMC Low Layer HAL module driver. + * + * This file provides firmware functions to manage the following + * functionalities of the SDMMC peripheral: + * + Initialization/de-initialization functions + * + I/O operation functions + * + Peripheral Control functions + * + Peripheral State functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### SDMMC peripheral features ##### + ============================================================================== + [..] The SD/SDMMC MMC card host interface (SDMMC) provides an interface between the AHB + peripheral bus and MultiMedia cards (MMCs), SD memory cards, SDMMC cards and CE-ATA + devices. + + [..] The SDMMC features include the following: + (+) Full compliance with MultiMedia Card System Specification Version 4.2. Card support + for three different databus modes: 1-bit (default), 4-bit and 8-bit + (+) Full compatibility with previous versions of MultiMedia Cards (forward compatibility) + (+) Full compliance with SD Memory Card Specifications Version 2.0 + (+) Full compliance with SD I/O Card Specification Version 2.0: card support for two + different data bus modes: 1-bit (default) and 4-bit + (+) Full support of the CE-ATA features (full compliance with CE-ATA digital protocol + Rev1.1) + (+) Data transfer up to 48 MHz for the 8 bit mode + (+) Data and command output enable signals to control external bidirectional drivers + + ##### How to use this driver ##### + ============================================================================== + [..] + This driver is a considered as a driver of service for external devices drivers + that interfaces with the SDMMC peripheral. + According to the device used (SD card/ MMC card / SDMMC card ...), a set of APIs + is used in the device's driver to perform SDMMC operations and functionalities. + + This driver is almost transparent for the final user, it is only used to implement other + functionalities of the external device. + + [..] + (+) The SDMMC clock (SDMMCCLK = 48 MHz) is coming from a specific output (MSI, PLLUSB1CLK, + PLLUSB2CLK). Before start working with SDMMC peripheral make sure that the + PLL is well configured. + The SDMMC peripheral uses two clock signals: + (++) SDMMC adapter clock (SDMMCCLK = 48 MHz) + (++) APB2 bus clock (PCLK2) + + -@@- PCLK2 and SDMMC_CK clock frequencies must respect the following condition: + Frequency(PCLK2) >= (3 / 8 x Frequency(SDMMC_CK)) + + (+) Enable/Disable peripheral clock using RCC peripheral macros related to SDMMC + peripheral. + + (+) Enable the Power ON State using the SDMMC_PowerState_ON() + function and disable it using the function SDMMC_PowerState_OFF(). + + (+) Enable/Disable the clock using the __SDMMC_ENABLE()/__SDMMC_DISABLE() macros. + + (+) Enable/Disable the peripheral interrupts using the macros __SDMMC_ENABLE_IT() + and __SDMMC_DISABLE_IT() if you need to use interrupt mode. + + (+) When using the DMA mode + (++) Configure the DMA in the MSP layer of the external device + (++) Active the needed channel Request + (++) Enable the DMA using __SDMMC_DMA_ENABLE() macro or Disable it using the macro + __SDMMC_DMA_DISABLE(). + + (+) To control the CPSM (Command Path State Machine) and send + commands to the card use the SDMMC_SendCommand(), + SDMMC_GetCommandResponse() and SDMMC_GetResponse() functions. First, user has + to fill the command structure (pointer to SDMMC_CmdInitTypeDef) according + to the selected command to be sent. + The parameters that should be filled are: + (++) Command Argument + (++) Command Index + (++) Command Response type + (++) Command Wait + (++) CPSM Status (Enable or Disable). + + -@@- To check if the command is well received, read the SDMMC_CMDRESP + register using the SDMMC_GetCommandResponse(). + The SDMMC responses registers (SDMMC_RESP1 to SDMMC_RESP2), use the + SDMMC_GetResponse() function. + + (+) To control the DPSM (Data Path State Machine) and send/receive + data to/from the card use the SDMMC_DataConfig(), SDMMC_GetDataCounter(), + SDMMC_ReadFIFO(), SDMMC_WriteFIFO() and SDMMC_GetFIFOCount() functions. + + *** Read Operations *** + ======================= + [..] + (#) First, user has to fill the data structure (pointer to + SDMMC_DataInitTypeDef) according to the selected data type to be received. + The parameters that should be filled are: + (++) Data TimeOut + (++) Data Length + (++) Data Block size + (++) Data Transfer direction: should be from card (To SDMMC) + (++) Data Transfer mode + (++) DPSM Status (Enable or Disable) + + (#) Configure the SDMMC resources to receive the data from the card + according to selected transfer mode (Refer to Step 8, 9 and 10). + + (#) Send the selected Read command (refer to step 11). + + (#) Use the SDMMC flags/interrupts to check the transfer status. + + *** Write Operations *** + ======================== + [..] + (#) First, user has to fill the data structure (pointer to + SDMMC_DataInitTypeDef) according to the selected data type to be received. + The parameters that should be filled are: + (++) Data TimeOut + (++) Data Length + (++) Data Block size + (++) Data Transfer direction: should be to card (To CARD) + (++) Data Transfer mode + (++) DPSM Status (Enable or Disable) + + (#) Configure the SDMMC resources to send the data to the card according to + selected transfer mode. + + (#) Send the selected Write command. + + (#) Use the SDMMC flags/interrupts to check the transfer status. + + *** Command management operations *** + ===================================== + [..] + (#) The commands used for Read/Write/Erase operations are managed in + separate functions. + Each function allows to send the needed command with the related argument, + then check the response. + By the same approach, you could implement a command and check the response. + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +#if defined(SDMMC1) + +/** @addtogroup STM32F7xx_HAL_Driver + * @{ + */ + +/** @defgroup SDMMC_LL SDMMC Low Layer + * @brief Low layer module for SD + * @{ + */ + +#if defined(HAL_SD_MODULE_ENABLED) || defined(HAL_MMC_MODULE_ENABLED) + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +static uint32_t SDMMC_GetCmdError(SDMMC_TypeDef *SDMMCx); + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup SDMMC_LL_Exported_Functions SDMMC Low Layer Exported Functions + * @{ + */ + +/** @defgroup HAL_SDMMC_LL_Group1 Initialization de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization/de-initialization functions ##### + =============================================================================== + [..] This section provides functions allowing to: + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the SDMMC according to the specified + * parameters in the SDMMC_InitTypeDef and create the associated handle. + * @param SDMMCx: Pointer to SDMMC register base + * @param Init: SDMMC initialization structure + * @retval HAL status + */ +HAL_StatusTypeDef SDMMC_Init(SDMMC_TypeDef *SDMMCx, SDMMC_InitTypeDef Init) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_SDMMC_ALL_INSTANCE(SDMMCx)); + assert_param(IS_SDMMC_CLOCK_EDGE(Init.ClockEdge)); + assert_param(IS_SDMMC_CLOCK_BYPASS(Init.ClockBypass)); + assert_param(IS_SDMMC_CLOCK_POWER_SAVE(Init.ClockPowerSave)); + assert_param(IS_SDMMC_BUS_WIDE(Init.BusWide)); + assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(Init.HardwareFlowControl)); + assert_param(IS_SDMMC_CLKDIV(Init.ClockDiv)); + + /* Set SDMMC configuration parameters */ + tmpreg |= (Init.ClockEdge |\ + Init.ClockBypass |\ + Init.ClockPowerSave |\ + Init.BusWide |\ + Init.HardwareFlowControl |\ + Init.ClockDiv + ); + + /* Write to SDMMC CLKCR */ + MODIFY_REG(SDMMCx->CLKCR, CLKCR_CLEAR_MASK, tmpreg); + + return HAL_OK; +} + + +/** + * @} + */ + +/** @defgroup HAL_SDMMC_LL_Group2 IO operation functions + * @brief Data transfers functions + * +@verbatim + =============================================================================== + ##### I/O operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the SDMMC data + transfers. + +@endverbatim + * @{ + */ + +/** + * @brief Read data (word) from Rx FIFO in blocking mode (polling) + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_ReadFIFO(SDMMC_TypeDef *SDMMCx) +{ + /* Read data from Rx FIFO */ + return (SDMMCx->FIFO); +} + +/** + * @brief Write data (word) to Tx FIFO in blocking mode (polling) + * @param SDMMCx: Pointer to SDMMC register base + * @param pWriteData: pointer to data to write + * @retval HAL status + */ +HAL_StatusTypeDef SDMMC_WriteFIFO(SDMMC_TypeDef *SDMMCx, uint32_t *pWriteData) +{ + /* Write data to FIFO */ + SDMMCx->FIFO = *pWriteData; + + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup HAL_SDMMC_LL_Group3 Peripheral Control functions + * @brief management functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the SDMMC data + transfers. + +@endverbatim + * @{ + */ + +/** + * @brief Set SDMMC Power state to ON. + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +HAL_StatusTypeDef SDMMC_PowerState_ON(SDMMC_TypeDef *SDMMCx) +{ + /* Set power state to ON */ + SDMMCx->POWER = SDMMC_POWER_PWRCTRL; + + return HAL_OK; +} + +/** + * @brief Set SDMMC Power state to OFF. + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +HAL_StatusTypeDef SDMMC_PowerState_OFF(SDMMC_TypeDef *SDMMCx) +{ + /* Set power state to OFF */ + SDMMCx->POWER = (uint32_t)0x00000000; + + return HAL_OK; +} + +/** + * @brief Get SDMMC Power state. + * @param SDMMCx: Pointer to SDMMC register base + * @retval Power status of the controller. The returned value can be one of the + * following values: + * - 0x00: Power OFF + * - 0x02: Power UP + * - 0x03: Power ON + */ +uint32_t SDMMC_GetPowerState(SDMMC_TypeDef *SDMMCx) +{ + return (SDMMCx->POWER & SDMMC_POWER_PWRCTRL); +} + +/** + * @brief Configure the SDMMC command path according to the specified parameters in + * SDMMC_CmdInitTypeDef structure and send the command + * @param SDMMCx: Pointer to SDMMC register base + * @param Command: pointer to a SDMMC_CmdInitTypeDef structure that contains + * the configuration information for the SDMMC command + * @retval HAL status + */ +HAL_StatusTypeDef SDMMC_SendCommand(SDMMC_TypeDef *SDMMCx, SDMMC_CmdInitTypeDef *Command) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_SDMMC_CMD_INDEX(Command->CmdIndex)); + assert_param(IS_SDMMC_RESPONSE(Command->Response)); + assert_param(IS_SDMMC_WAIT(Command->WaitForInterrupt)); + assert_param(IS_SDMMC_CPSM(Command->CPSM)); + + /* Set the SDMMC Argument value */ + SDMMCx->ARG = Command->Argument; + + /* Set SDMMC command parameters */ + tmpreg |= (uint32_t)(Command->CmdIndex |\ + Command->Response |\ + Command->WaitForInterrupt |\ + Command->CPSM); + + /* Write to SDMMC CMD register */ + MODIFY_REG(SDMMCx->CMD, CMD_CLEAR_MASK, tmpreg); + + return HAL_OK; +} + +/** + * @brief Return the command index of last command for which response received + * @param SDMMCx: Pointer to SDMMC register base + * @retval Command index of the last command response received + */ +uint8_t SDMMC_GetCommandResponse(SDMMC_TypeDef *SDMMCx) +{ + return (uint8_t)(SDMMCx->RESPCMD); +} + + +/** + * @brief Return the response received from the card for the last command + * @param SDMMCx: Pointer to SDMMC register base + * @param Response: Specifies the SDMMC response register. + * This parameter can be one of the following values: + * @arg SDMMC_RESP1: Response Register 1 + * @arg SDMMC_RESP2: Response Register 2 + * @arg SDMMC_RESP3: Response Register 3 + * @arg SDMMC_RESP4: Response Register 4 + * @retval The Corresponding response register value + */ +uint32_t SDMMC_GetResponse(SDMMC_TypeDef *SDMMCx, uint32_t Response) +{ + uint32_t tmp; + + /* Check the parameters */ + assert_param(IS_SDMMC_RESP(Response)); + + /* Get the response */ + tmp = (uint32_t)(&(SDMMCx->RESP1)) + Response; + + return (*(__IO uint32_t *) tmp); +} + +/** + * @brief Configure the SDMMC data path according to the specified + * parameters in the SDMMC_DataInitTypeDef. + * @param SDMMCx: Pointer to SDMMC register base + * @param Data : pointer to a SDMMC_DataInitTypeDef structure + * that contains the configuration information for the SDMMC data. + * @retval HAL status + */ +HAL_StatusTypeDef SDMMC_ConfigData(SDMMC_TypeDef *SDMMCx, SDMMC_DataInitTypeDef* Data) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_SDMMC_DATA_LENGTH(Data->DataLength)); + assert_param(IS_SDMMC_BLOCK_SIZE(Data->DataBlockSize)); + assert_param(IS_SDMMC_TRANSFER_DIR(Data->TransferDir)); + assert_param(IS_SDMMC_TRANSFER_MODE(Data->TransferMode)); + assert_param(IS_SDMMC_DPSM(Data->DPSM)); + + /* Set the SDMMC Data TimeOut value */ + SDMMCx->DTIMER = Data->DataTimeOut; + + /* Set the SDMMC DataLength value */ + SDMMCx->DLEN = Data->DataLength; + + /* Set the SDMMC data configuration parameters */ + tmpreg |= (uint32_t)(Data->DataBlockSize |\ + Data->TransferDir |\ + Data->TransferMode |\ + Data->DPSM); + + /* Write to SDMMC DCTRL */ + MODIFY_REG(SDMMCx->DCTRL, DCTRL_CLEAR_MASK, tmpreg); + + return HAL_OK; + +} + +/** + * @brief Returns number of remaining data bytes to be transferred. + * @param SDMMCx: Pointer to SDMMC register base + * @retval Number of remaining data bytes to be transferred + */ +uint32_t SDMMC_GetDataCounter(SDMMC_TypeDef *SDMMCx) +{ + return (SDMMCx->DCOUNT); +} + +/** + * @brief Get the FIFO data + * @param SDMMCx: Pointer to SDMMC register base + * @retval Data received + */ +uint32_t SDMMC_GetFIFOCount(SDMMC_TypeDef *SDMMCx) +{ + return (SDMMCx->FIFO); +} + +/** + * @brief Sets one of the two options of inserting read wait interval. + * @param SDMMCx: Pointer to SDMMC register base + * @param SDMMC_ReadWaitMode: SDMMC Read Wait operation mode. + * This parameter can be: + * @arg SDMMC_READ_WAIT_MODE_CLK: Read Wait control by stopping SDMMCCLK + * @arg SDMMC_READ_WAIT_MODE_DATA2: Read Wait control using SDMMC_DATA2 + * @retval None + */ +HAL_StatusTypeDef SDMMC_SetSDMMCReadWaitMode(SDMMC_TypeDef *SDMMCx, uint32_t SDMMC_ReadWaitMode) +{ + /* Check the parameters */ + assert_param(IS_SDMMC_READWAIT_MODE(SDMMC_ReadWaitMode)); + + /* Set SDMMC read wait mode */ + MODIFY_REG(SDMMCx->DCTRL, SDMMC_DCTRL_RWMOD, SDMMC_ReadWaitMode); + + return HAL_OK; +} + +/** + * @} + */ + + +/** @defgroup HAL_SDMMC_LL_Group4 Command management functions + * @brief Data transfers functions + * +@verbatim + =============================================================================== + ##### Commands management functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the needed commands. + +@endverbatim + * @{ + */ + +/** + * @brief Send the Data Block Length command and check the response + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdBlockLength(SDMMC_TypeDef *SDMMCx, uint32_t BlockSize) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)BlockSize; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_BLOCKLEN; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SET_BLOCKLEN, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Read Single Block command and check the response + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdReadSingleBlock(SDMMC_TypeDef *SDMMCx, uint32_t ReadAdd) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)ReadAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_READ_SINGLE_BLOCK; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_READ_SINGLE_BLOCK, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Read Multi Block command and check the response + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdReadMultiBlock(SDMMC_TypeDef *SDMMCx, uint32_t ReadAdd) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)ReadAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_READ_MULT_BLOCK; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_READ_MULT_BLOCK, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Write Single Block command and check the response + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdWriteSingleBlock(SDMMC_TypeDef *SDMMCx, uint32_t WriteAdd) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)WriteAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_WRITE_SINGLE_BLOCK; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_WRITE_SINGLE_BLOCK, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Write Multi Block command and check the response + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdWriteMultiBlock(SDMMC_TypeDef *SDMMCx, uint32_t WriteAdd) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)WriteAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_WRITE_MULT_BLOCK; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_WRITE_MULT_BLOCK, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Start Address Erase command for SD and check the response + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdSDEraseStartAdd(SDMMC_TypeDef *SDMMCx, uint32_t StartAdd) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)StartAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_ERASE_GRP_START; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SD_ERASE_GRP_START, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the End Address Erase command for SD and check the response + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdSDEraseEndAdd(SDMMC_TypeDef *SDMMCx, uint32_t EndAdd) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)EndAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_ERASE_GRP_END; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SD_ERASE_GRP_END, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Start Address Erase command and check the response + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdEraseStartAdd(SDMMC_TypeDef *SDMMCx, uint32_t StartAdd) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)StartAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE_GRP_START; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_ERASE_GRP_START, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the End Address Erase command and check the response + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdEraseEndAdd(SDMMC_TypeDef *SDMMCx, uint32_t EndAdd) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)EndAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE_GRP_END; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_ERASE_GRP_END, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Erase command and check the response + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdErase(SDMMC_TypeDef *SDMMCx) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_ERASE, SDMMC_MAXERASETIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Stop Transfer command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdStopTransfer(SDMMC_TypeDef *SDMMCx) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD12 STOP_TRANSMISSION */ + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_STOP_TRANSMISSION; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_STOP_TRANSMISSION, SDMMC_STOPTRANSFERTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Select Deselect command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @param addr: Address of the card to be selected + * @retval HAL status + */ +uint32_t SDMMC_CmdSelDesel(SDMMC_TypeDef *SDMMCx, uint64_t Addr) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD7 SDMMC_SEL_DESEL_CARD */ + sdmmc_cmdinit.Argument = (uint32_t)Addr; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEL_DESEL_CARD; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SEL_DESEL_CARD, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Go Idle State command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdGoIdleState(SDMMC_TypeDef *SDMMCx) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_GO_IDLE_STATE; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_NO; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdError(SDMMCx); + + return errorstate; +} + +/** + * @brief Send the Operating Condition command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdOperCond(SDMMC_TypeDef *SDMMCx) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD8 to verify SD card interface operating condition */ + /* Argument: - [31:12]: Reserved (shall be set to '0') + - [11:8]: Supply Voltage (VHS) 0x1 (Range: 2.7-3.6 V) + - [7:0]: Check Pattern (recommended 0xAA) */ + /* CMD Response: R7 */ + sdmmc_cmdinit.Argument = SDMMC_CHECK_PATTERN; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SEND_EXT_CSD; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp7(SDMMCx); + + return errorstate; +} + +/** + * @brief Send the Application command to verify that that the next command + * is an application specific com-mand rather than a standard command + * and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @param Argument: Command Argument + * @retval HAL status + */ +uint32_t SDMMC_CmdAppCommand(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = (uint32_t)Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_APP_CMD; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + /* If there is a HAL_ERROR, it is a MMC card, else + it is a SD card: SD card 2.0 (voltage range mismatch) + or SD card 1.x */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_APP_CMD, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the command asking the accessed card to send its operating + * condition register (OCR) + * @param SDMMCx: Pointer to SDMMC register base + * @param Argument: Command Argument + * @retval HAL status + */ +uint32_t SDMMC_CmdAppOperCommand(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = SDMMC_VOLTAGE_WINDOW_SD | Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_OP_COND; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp3(SDMMCx); + + return errorstate; +} + +/** + * @brief Send the Bus Width command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @param BusWidth: BusWidth + * @retval HAL status + */ +uint32_t SDMMC_CmdBusWidth(SDMMC_TypeDef *SDMMCx, uint32_t BusWidth) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = (uint32_t)BusWidth; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_APP_SD_SET_BUSWIDTH; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_APP_SD_SET_BUSWIDTH, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Send SCR command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdSendSCR(SDMMC_TypeDef *SDMMCx) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD51 SD_APP_SEND_SCR */ + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_SEND_SCR; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SD_APP_SEND_SCR, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Send CID command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdSendCID(SDMMC_TypeDef *SDMMCx) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD2 ALL_SEND_CID */ + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ALL_SEND_CID; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_LONG; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp2(SDMMCx); + + return errorstate; +} + +/** + * @brief Send the Send CSD command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @param Argument: Command Argument + * @retval HAL status + */ +uint32_t SDMMC_CmdSendCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD9 SEND_CSD */ + sdmmc_cmdinit.Argument = Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_CSD; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_LONG; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp2(SDMMCx); + + return errorstate; +} + +/** + * @brief Send the Send CSD command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @param pRCA: Card RCA + * @retval HAL status + */ +uint32_t SDMMC_CmdSetRelAdd(SDMMC_TypeDef *SDMMCx, uint16_t *pRCA) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD3 SD_CMD_SET_REL_ADDR */ + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_REL_ADDR; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp6(SDMMCx, SDMMC_CMD_SET_REL_ADDR, pRCA); + + return errorstate; +} + +/** + * @brief Send the Set Relative Address command to MMC card (not SD card). + * @param SDMMCx Pointer to SDMMC register base + * @param RCA Card RCA + * @retval HAL status + */ +uint32_t SDMMC_CmdSetRelAddMmc(SDMMC_TypeDef *SDMMCx, uint16_t RCA) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD3 SD_CMD_SET_REL_ADDR */ + sdmmc_cmdinit.Argument = ((uint32_t)RCA << 16U); + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_REL_ADDR; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SET_REL_ADDR, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Status command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @param Argument: Command Argument + * @retval HAL status + */ +uint32_t SDMMC_CmdSendStatus(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_STATUS; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SEND_STATUS, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Status register command and check the response. + * @param SDMMCx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDMMC_CmdStatusRegister(SDMMC_TypeDef *SDMMCx) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_STATUS; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SD_APP_STATUS, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Sends host capacity support information and activates the card's + * initialization process. Send SDMMC_CMD_SEND_OP_COND command + * @param SDMMCx: Pointer to SDMMC register base + * @parame Argument: Argument used for the command + * @retval HAL status + */ +uint32_t SDMMC_CmdOpCondition(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_OP_COND; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp3(SDMMCx); + + return errorstate; +} + +/** + * @brief Checks switchable function and switch card function. SDMMC_CMD_HS_SWITCH command + * @param SDMMCx: Pointer to SDMMC register base + * @parame Argument: Argument used for the command + * @retval HAL status + */ +uint32_t SDMMC_CmdSwitch(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD6 to activate SDR50 Mode and Power Limit 1.44W */ + /* CMD Response: R1 */ + sdmmc_cmdinit.Argument = Argument; /* SDMMC_SDR25_SWITCH_PATTERN */ + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SWITCH; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_HS_SWITCH, SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Send EXT_CSD command and check the response. + * @param SDMMCx Pointer to SDMMC register base + * @param Argument Command Argument + * @retval HAL status + */ +uint32_t SDMMC_CmdSendEXTCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +{ + SDMMC_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD9 SEND_CSD */ + sdmmc_cmdinit.Argument = Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SEND_EXT_CSD; + sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_HS_SEND_EXT_CSD,SDMMC_CMDTIMEOUT); + + return errorstate; +} + +/** + * @} + */ + +/** @defgroup HAL_SDMMC_LL_Group5 Responses management functions + * @brief Responses functions + * +@verbatim + =============================================================================== + ##### Responses management functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the needed responses. + +@endverbatim + * @{ + */ +/** + * @brief Checks for error conditions for R1 response. + * @param SDMMCx Pointer to SDMMC register base + * @param SD_CMD: The sent command index + * @retval SD Card error state + */ +uint32_t SDMMC_GetCmdResp1(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint32_t Timeout) +{ + uint32_t response_r1; + uint32_t sta_reg; + + /* 8 is the number of required instructions cycles for the below loop statement. + The Timeout is expressed in ms */ + uint32_t count = Timeout * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + sta_reg = SDMMCx->STA; + }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + + if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT)) + { + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT); + + return SDMMC_ERROR_CMD_RSP_TIMEOUT; + } + else if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL)) + { + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL); + + return SDMMC_ERROR_CMD_CRC_FAIL; + } + else + { + /* Nothing to do */ + } + + /* Clear all the static flags */ + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS); + + /* Check response received is of desired command */ + if(SDMMC_GetCommandResponse(SDMMCx) != SD_CMD) + { + return SDMMC_ERROR_CMD_CRC_FAIL; + } + + /* We have received response, retrieve it for analysis */ + response_r1 = SDMMC_GetResponse(SDMMCx, SDMMC_RESP1); + + if((response_r1 & SDMMC_OCR_ERRORBITS) == SDMMC_ALLZERO) + { + return SDMMC_ERROR_NONE; + } + else if((response_r1 & SDMMC_OCR_ADDR_OUT_OF_RANGE) == SDMMC_OCR_ADDR_OUT_OF_RANGE) + { + return SDMMC_ERROR_ADDR_OUT_OF_RANGE; + } + else if((response_r1 & SDMMC_OCR_ADDR_MISALIGNED) == SDMMC_OCR_ADDR_MISALIGNED) + { + return SDMMC_ERROR_ADDR_MISALIGNED; + } + else if((response_r1 & SDMMC_OCR_BLOCK_LEN_ERR) == SDMMC_OCR_BLOCK_LEN_ERR) + { + return SDMMC_ERROR_BLOCK_LEN_ERR; + } + else if((response_r1 & SDMMC_OCR_ERASE_SEQ_ERR) == SDMMC_OCR_ERASE_SEQ_ERR) + { + return SDMMC_ERROR_ERASE_SEQ_ERR; + } + else if((response_r1 & SDMMC_OCR_BAD_ERASE_PARAM) == SDMMC_OCR_BAD_ERASE_PARAM) + { + return SDMMC_ERROR_BAD_ERASE_PARAM; + } + else if((response_r1 & SDMMC_OCR_WRITE_PROT_VIOLATION) == SDMMC_OCR_WRITE_PROT_VIOLATION) + { + return SDMMC_ERROR_WRITE_PROT_VIOLATION; + } + else if((response_r1 & SDMMC_OCR_LOCK_UNLOCK_FAILED) == SDMMC_OCR_LOCK_UNLOCK_FAILED) + { + return SDMMC_ERROR_LOCK_UNLOCK_FAILED; + } + else if((response_r1 & SDMMC_OCR_COM_CRC_FAILED) == SDMMC_OCR_COM_CRC_FAILED) + { + return SDMMC_ERROR_COM_CRC_FAILED; + } + else if((response_r1 & SDMMC_OCR_ILLEGAL_CMD) == SDMMC_OCR_ILLEGAL_CMD) + { + return SDMMC_ERROR_ILLEGAL_CMD; + } + else if((response_r1 & SDMMC_OCR_CARD_ECC_FAILED) == SDMMC_OCR_CARD_ECC_FAILED) + { + return SDMMC_ERROR_CARD_ECC_FAILED; + } + else if((response_r1 & SDMMC_OCR_CC_ERROR) == SDMMC_OCR_CC_ERROR) + { + return SDMMC_ERROR_CC_ERR; + } + else if((response_r1 & SDMMC_OCR_STREAM_READ_UNDERRUN) == SDMMC_OCR_STREAM_READ_UNDERRUN) + { + return SDMMC_ERROR_STREAM_READ_UNDERRUN; + } + else if((response_r1 & SDMMC_OCR_STREAM_WRITE_OVERRUN) == SDMMC_OCR_STREAM_WRITE_OVERRUN) + { + return SDMMC_ERROR_STREAM_WRITE_OVERRUN; + } + else if((response_r1 & SDMMC_OCR_CID_CSD_OVERWRITE) == SDMMC_OCR_CID_CSD_OVERWRITE) + { + return SDMMC_ERROR_CID_CSD_OVERWRITE; + } + else if((response_r1 & SDMMC_OCR_WP_ERASE_SKIP) == SDMMC_OCR_WP_ERASE_SKIP) + { + return SDMMC_ERROR_WP_ERASE_SKIP; + } + else if((response_r1 & SDMMC_OCR_CARD_ECC_DISABLED) == SDMMC_OCR_CARD_ECC_DISABLED) + { + return SDMMC_ERROR_CARD_ECC_DISABLED; + } + else if((response_r1 & SDMMC_OCR_ERASE_RESET) == SDMMC_OCR_ERASE_RESET) + { + return SDMMC_ERROR_ERASE_RESET; + } + else if((response_r1 & SDMMC_OCR_AKE_SEQ_ERROR) == SDMMC_OCR_AKE_SEQ_ERROR) + { + return SDMMC_ERROR_AKE_SEQ_ERR; + } + else + { + return SDMMC_ERROR_GENERAL_UNKNOWN_ERR; + } +} + +/** + * @brief Checks for error conditions for R2 (CID or CSD) response. + * @param SDMMCx Pointer to SDMMC register base + * @retval SD Card error state + */ +uint32_t SDMMC_GetCmdResp2(SDMMC_TypeDef *SDMMCx) +{ + uint32_t sta_reg; + /* 8 is the number of required instructions cycles for the below loop statement. + The SDMMC_CMDTIMEOUT is expressed in ms */ + uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + sta_reg = SDMMCx->STA; + }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + + if (__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT)) + { + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT); + + return SDMMC_ERROR_CMD_RSP_TIMEOUT; + } + else if (__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL)) + { + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL); + + return SDMMC_ERROR_CMD_CRC_FAIL; + } + else + { + /* No error flag set */ + /* Clear all the static flags */ + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS); + } + + return SDMMC_ERROR_NONE; +} + +/** + * @brief Checks for error conditions for R3 (OCR) response. + * @param SDMMCx Pointer to SDMMC register base + * @retval SD Card error state + */ +uint32_t SDMMC_GetCmdResp3(SDMMC_TypeDef *SDMMCx) +{ + uint32_t sta_reg; + /* 8 is the number of required instructions cycles for the below loop statement. + The SDMMC_CMDTIMEOUT is expressed in ms */ + uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + sta_reg = SDMMCx->STA; + }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + + if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT)) + { + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT); + + return SDMMC_ERROR_CMD_RSP_TIMEOUT; + } + else + { + /* Clear all the static flags */ + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS); + } + + return SDMMC_ERROR_NONE; +} + +/** + * @brief Checks for error conditions for R6 (RCA) response. + * @param SDMMCx Pointer to SDMMC register base + * @param SD_CMD: The sent command index + * @param pRCA: Pointer to the variable that will contain the SD card relative + * address RCA + * @retval SD Card error state + */ +uint32_t SDMMC_GetCmdResp6(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint16_t *pRCA) +{ + uint32_t response_r1; + uint32_t sta_reg; + + /* 8 is the number of required instructions cycles for the below loop statement. + The SDMMC_CMDTIMEOUT is expressed in ms */ + uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + sta_reg = SDMMCx->STA; + }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + + if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT)) + { + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT); + + return SDMMC_ERROR_CMD_RSP_TIMEOUT; + } + else if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL)) + { + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL); + + return SDMMC_ERROR_CMD_CRC_FAIL; + } + else + { + /* Nothing to do */ + } + + /* Check response received is of desired command */ + if(SDMMC_GetCommandResponse(SDMMCx) != SD_CMD) + { + return SDMMC_ERROR_CMD_CRC_FAIL; + } + + /* Clear all the static flags */ + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS); + + /* We have received response, retrieve it. */ + response_r1 = SDMMC_GetResponse(SDMMCx, SDMMC_RESP1); + + if((response_r1 & (SDMMC_R6_GENERAL_UNKNOWN_ERROR | SDMMC_R6_ILLEGAL_CMD | SDMMC_R6_COM_CRC_FAILED)) == SDMMC_ALLZERO) + { + *pRCA = (uint16_t) (response_r1 >> 16); + + return SDMMC_ERROR_NONE; + } + else if((response_r1 & SDMMC_R6_ILLEGAL_CMD) == SDMMC_R6_ILLEGAL_CMD) + { + return SDMMC_ERROR_ILLEGAL_CMD; + } + else if((response_r1 & SDMMC_R6_COM_CRC_FAILED) == SDMMC_R6_COM_CRC_FAILED) + { + return SDMMC_ERROR_COM_CRC_FAILED; + } + else + { + return SDMMC_ERROR_GENERAL_UNKNOWN_ERR; + } +} + +/** + * @brief Checks for error conditions for R7 response. + * @param SDMMCx Pointer to SDMMC register base + * @retval SD Card error state + */ +uint32_t SDMMC_GetCmdResp7(SDMMC_TypeDef *SDMMCx) +{ + uint32_t sta_reg; + /* 8 is the number of required instructions cycles for the below loop statement. + The SDMMC_CMDTIMEOUT is expressed in ms */ + uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + sta_reg = SDMMCx->STA; + }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + + if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT)) + { + /* Card is SD V2.0 compliant */ + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT); + + return SDMMC_ERROR_CMD_RSP_TIMEOUT; + } + else if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL)) + { + /* Card is SD V2.0 compliant */ + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL); + + return SDMMC_ERROR_CMD_CRC_FAIL; + } + else + { + /* Nothing to do */ + } + + if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CMDREND)) + { + /* Card is SD V2.0 compliant */ + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CMDREND); + } + + return SDMMC_ERROR_NONE; + +} + +/** + * @} + */ + +/* Private function ----------------------------------------------------------*/ +/** @addtogroup SD_Private_Functions + * @{ + */ + +/** + * @brief Checks for error conditions for CMD0. + * @param SDMMCx Pointer to SDMMC register base + * @retval SD Card error state + */ +static uint32_t SDMMC_GetCmdError(SDMMC_TypeDef *SDMMCx) +{ + /* 8 is the number of required instructions cycles for the below loop statement. + The SDMMC_CMDTIMEOUT is expressed in ms */ + uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + + }while(!__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CMDSENT)); + + /* Clear all the static flags */ + __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS); + + return SDMMC_ERROR_NONE; +} + + +/** + * @} + */ + +#endif /* HAL_SD_MODULE_ENABLED || HAL_MMC_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + +#endif /* SDMMC1 */ diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c new file mode 100644 index 0000000..718c038 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c @@ -0,0 +1,577 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_spi.c + * @author MCD Application Team + * @brief SPI LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_ll_spi.h" +#include "stm32f7xx_ll_bus.h" +#include "stm32f7xx_ll_rcc.h" + +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (SPI1) || defined (SPI2) || defined (SPI3) || defined (SPI4) || defined (SPI5) || defined(SPI6) + +/** @addtogroup SPI_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup SPI_LL_Private_Constants SPI Private Constants + * @{ + */ +/* SPI registers Masks */ +#define SPI_CR1_CLEAR_MASK (SPI_CR1_CPHA | SPI_CR1_CPOL | SPI_CR1_MSTR | \ + SPI_CR1_BR | SPI_CR1_LSBFIRST | SPI_CR1_SSI | \ + SPI_CR1_SSM | SPI_CR1_RXONLY | SPI_CR1_CRCL | \ + SPI_CR1_CRCNEXT | SPI_CR1_CRCEN | SPI_CR1_BIDIOE | \ + SPI_CR1_BIDIMODE) +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup SPI_LL_Private_Macros SPI Private Macros + * @{ + */ +#define IS_LL_SPI_TRANSFER_DIRECTION(__VALUE__) (((__VALUE__) == LL_SPI_FULL_DUPLEX) \ + || ((__VALUE__) == LL_SPI_SIMPLEX_RX) \ + || ((__VALUE__) == LL_SPI_HALF_DUPLEX_RX) \ + || ((__VALUE__) == LL_SPI_HALF_DUPLEX_TX)) + +#define IS_LL_SPI_MODE(__VALUE__) (((__VALUE__) == LL_SPI_MODE_MASTER) \ + || ((__VALUE__) == LL_SPI_MODE_SLAVE)) + +#define IS_LL_SPI_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_SPI_DATAWIDTH_4BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_5BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_6BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_7BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_8BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_9BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_10BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_11BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_12BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_13BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_14BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_15BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_16BIT)) + +#define IS_LL_SPI_POLARITY(__VALUE__) (((__VALUE__) == LL_SPI_POLARITY_LOW) \ + || ((__VALUE__) == LL_SPI_POLARITY_HIGH)) + +#define IS_LL_SPI_PHASE(__VALUE__) (((__VALUE__) == LL_SPI_PHASE_1EDGE) \ + || ((__VALUE__) == LL_SPI_PHASE_2EDGE)) + +#define IS_LL_SPI_NSS(__VALUE__) (((__VALUE__) == LL_SPI_NSS_SOFT) \ + || ((__VALUE__) == LL_SPI_NSS_HARD_INPUT) \ + || ((__VALUE__) == LL_SPI_NSS_HARD_OUTPUT)) + +#define IS_LL_SPI_BAUDRATE(__VALUE__) (((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV2) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV4) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV8) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV16) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV32) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV64) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV128) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV256)) + +#define IS_LL_SPI_BITORDER(__VALUE__) (((__VALUE__) == LL_SPI_LSB_FIRST) \ + || ((__VALUE__) == LL_SPI_MSB_FIRST)) + +#define IS_LL_SPI_CRCCALCULATION(__VALUE__) (((__VALUE__) == LL_SPI_CRCCALCULATION_ENABLE) \ + || ((__VALUE__) == LL_SPI_CRCCALCULATION_DISABLE)) + +#define IS_LL_SPI_CRC_POLYNOMIAL(__VALUE__) ((__VALUE__) >= 0x1U) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup SPI_LL_Exported_Functions + * @{ + */ + +/** @addtogroup SPI_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the SPI registers to their default reset values. + * @param SPIx SPI Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: SPI registers are de-initialized + * - ERROR: SPI registers are not de-initialized + */ +ErrorStatus LL_SPI_DeInit(SPI_TypeDef *SPIx) +{ + ErrorStatus status = ERROR; + + /* Check the parameters */ + assert_param(IS_SPI_ALL_INSTANCE(SPIx)); + +#if defined(SPI1) + if (SPIx == SPI1) + { + /* Force reset of SPI clock */ + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_SPI1); + + /* Release reset of SPI clock */ + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_SPI1); + + status = SUCCESS; + } +#endif /* SPI1 */ +#if defined(SPI2) + if (SPIx == SPI2) + { + /* Force reset of SPI clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_SPI2); + + /* Release reset of SPI clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_SPI2); + + status = SUCCESS; + } +#endif /* SPI2 */ +#if defined(SPI3) + if (SPIx == SPI3) + { + /* Force reset of SPI clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_SPI3); + + /* Release reset of SPI clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_SPI3); + + status = SUCCESS; + } +#endif /* SPI3 */ +#if defined(SPI4) + if (SPIx == SPI4) + { + /* Force reset of SPI clock */ + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_SPI4); + + /* Release reset of SPI clock */ + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_SPI4); + + status = SUCCESS; + } +#endif /* SPI4 */ +#if defined(SPI5) + if (SPIx == SPI5) + { + /* Force reset of SPI clock */ + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_SPI5); + + /* Release reset of SPI clock */ + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_SPI5); + + status = SUCCESS; + } +#endif /* SPI5 */ +#if defined(SPI6) + if (SPIx == SPI6) + { + /* Force reset of SPI clock */ + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_SPI6); + + /* Release reset of SPI clock */ + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_SPI6); + + status = SUCCESS; + } +#endif /* SPI6 */ + + return status; +} + +/** + * @brief Initialize the SPI registers according to the specified parameters in SPI_InitStruct. + * @note As some bits in SPI configuration registers can only be written when the SPI is disabled (SPI_CR1_SPE bit =0), + * SPI peripheral should be in disabled state prior calling this function. Otherwise, ERROR result will be returned. + * @param SPIx SPI Instance + * @param SPI_InitStruct pointer to a @ref LL_SPI_InitTypeDef structure + * @retval An ErrorStatus enumeration value. (Return always SUCCESS) + */ +ErrorStatus LL_SPI_Init(SPI_TypeDef *SPIx, LL_SPI_InitTypeDef *SPI_InitStruct) +{ + ErrorStatus status = ERROR; + + /* Check the SPI Instance SPIx*/ + assert_param(IS_SPI_ALL_INSTANCE(SPIx)); + + /* Check the SPI parameters from SPI_InitStruct*/ + assert_param(IS_LL_SPI_TRANSFER_DIRECTION(SPI_InitStruct->TransferDirection)); + assert_param(IS_LL_SPI_MODE(SPI_InitStruct->Mode)); + assert_param(IS_LL_SPI_DATAWIDTH(SPI_InitStruct->DataWidth)); + assert_param(IS_LL_SPI_POLARITY(SPI_InitStruct->ClockPolarity)); + assert_param(IS_LL_SPI_PHASE(SPI_InitStruct->ClockPhase)); + assert_param(IS_LL_SPI_NSS(SPI_InitStruct->NSS)); + assert_param(IS_LL_SPI_BAUDRATE(SPI_InitStruct->BaudRate)); + assert_param(IS_LL_SPI_BITORDER(SPI_InitStruct->BitOrder)); + assert_param(IS_LL_SPI_CRCCALCULATION(SPI_InitStruct->CRCCalculation)); + + if (LL_SPI_IsEnabled(SPIx) == 0x00000000U) + { + /*---------------------------- SPIx CR1 Configuration ------------------------ + * Configure SPIx CR1 with parameters: + * - TransferDirection: SPI_CR1_BIDIMODE, SPI_CR1_BIDIOE and SPI_CR1_RXONLY bits + * - Master/Slave Mode: SPI_CR1_MSTR bit + * - ClockPolarity: SPI_CR1_CPOL bit + * - ClockPhase: SPI_CR1_CPHA bit + * - NSS management: SPI_CR1_SSM bit + * - BaudRate prescaler: SPI_CR1_BR[2:0] bits + * - BitOrder: SPI_CR1_LSBFIRST bit + * - CRCCalculation: SPI_CR1_CRCEN bit + */ + MODIFY_REG(SPIx->CR1, + SPI_CR1_CLEAR_MASK, + SPI_InitStruct->TransferDirection | SPI_InitStruct->Mode | + SPI_InitStruct->ClockPolarity | SPI_InitStruct->ClockPhase | + SPI_InitStruct->NSS | SPI_InitStruct->BaudRate | + SPI_InitStruct->BitOrder | SPI_InitStruct->CRCCalculation); + + /*---------------------------- SPIx CR2 Configuration ------------------------ + * Configure SPIx CR2 with parameters: + * - DataWidth: DS[3:0] bits + * - NSS management: SSOE bit + */ + MODIFY_REG(SPIx->CR2, + SPI_CR2_DS | SPI_CR2_SSOE, + SPI_InitStruct->DataWidth | (SPI_InitStruct->NSS >> 16U)); + + /* Set Rx FIFO to Quarter (1 Byte) in case of 8 Bits mode. No DataPacking by default */ + if (SPI_InitStruct->DataWidth < LL_SPI_DATAWIDTH_9BIT) + { + LL_SPI_SetRxFIFOThreshold(SPIx, LL_SPI_RX_FIFO_TH_QUARTER); + } + + /*---------------------------- SPIx CRCPR Configuration ---------------------- + * Configure SPIx CRCPR with parameters: + * - CRCPoly: CRCPOLY[15:0] bits + */ + if (SPI_InitStruct->CRCCalculation == LL_SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_LL_SPI_CRC_POLYNOMIAL(SPI_InitStruct->CRCPoly)); + LL_SPI_SetCRCPolynomial(SPIx, SPI_InitStruct->CRCPoly); + } + status = SUCCESS; + } + + /* Activate the SPI mode (Reset I2SMOD bit in I2SCFGR register) */ + CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD); + return status; +} + +/** + * @brief Set each @ref LL_SPI_InitTypeDef field to default value. + * @param SPI_InitStruct pointer to a @ref LL_SPI_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ +void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct) +{ + /* Set SPI_InitStruct fields to default values */ + SPI_InitStruct->TransferDirection = LL_SPI_FULL_DUPLEX; + SPI_InitStruct->Mode = LL_SPI_MODE_SLAVE; + SPI_InitStruct->DataWidth = LL_SPI_DATAWIDTH_8BIT; + SPI_InitStruct->ClockPolarity = LL_SPI_POLARITY_LOW; + SPI_InitStruct->ClockPhase = LL_SPI_PHASE_1EDGE; + SPI_InitStruct->NSS = LL_SPI_NSS_HARD_INPUT; + SPI_InitStruct->BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV2; + SPI_InitStruct->BitOrder = LL_SPI_MSB_FIRST; + SPI_InitStruct->CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + SPI_InitStruct->CRCPoly = 7U; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup I2S_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup I2S_LL_Private_Constants I2S Private Constants + * @{ + */ +/* I2S registers Masks */ +#define I2S_I2SCFGR_CLEAR_MASK (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | \ + SPI_I2SCFGR_CKPOL | SPI_I2SCFGR_I2SSTD | \ + SPI_I2SCFGR_I2SCFG | SPI_I2SCFGR_I2SMOD ) + +#define I2S_I2SPR_CLEAR_MASK 0x0002U +/** + * @} + */ +/* Private macros ------------------------------------------------------------*/ +/** @defgroup I2S_LL_Private_Macros I2S Private Macros + * @{ + */ + +#define IS_LL_I2S_DATAFORMAT(__VALUE__) (((__VALUE__) == LL_I2S_DATAFORMAT_16B) \ + || ((__VALUE__) == LL_I2S_DATAFORMAT_16B_EXTENDED) \ + || ((__VALUE__) == LL_I2S_DATAFORMAT_24B) \ + || ((__VALUE__) == LL_I2S_DATAFORMAT_32B)) + +#define IS_LL_I2S_CPOL(__VALUE__) (((__VALUE__) == LL_I2S_POLARITY_LOW) \ + || ((__VALUE__) == LL_I2S_POLARITY_HIGH)) + +#define IS_LL_I2S_STANDARD(__VALUE__) (((__VALUE__) == LL_I2S_STANDARD_PHILIPS) \ + || ((__VALUE__) == LL_I2S_STANDARD_MSB) \ + || ((__VALUE__) == LL_I2S_STANDARD_LSB) \ + || ((__VALUE__) == LL_I2S_STANDARD_PCM_SHORT) \ + || ((__VALUE__) == LL_I2S_STANDARD_PCM_LONG)) + +#define IS_LL_I2S_MODE(__VALUE__) (((__VALUE__) == LL_I2S_MODE_SLAVE_TX) \ + || ((__VALUE__) == LL_I2S_MODE_SLAVE_RX) \ + || ((__VALUE__) == LL_I2S_MODE_MASTER_TX) \ + || ((__VALUE__) == LL_I2S_MODE_MASTER_RX)) + +#define IS_LL_I2S_MCLK_OUTPUT(__VALUE__) (((__VALUE__) == LL_I2S_MCLK_OUTPUT_ENABLE) \ + || ((__VALUE__) == LL_I2S_MCLK_OUTPUT_DISABLE)) + +#define IS_LL_I2S_AUDIO_FREQ(__VALUE__) ((((__VALUE__) >= LL_I2S_AUDIOFREQ_8K) \ + && ((__VALUE__) <= LL_I2S_AUDIOFREQ_192K)) \ + || ((__VALUE__) == LL_I2S_AUDIOFREQ_DEFAULT)) + +#define IS_LL_I2S_PRESCALER_LINEAR(__VALUE__) ((__VALUE__) >= 0x2U) + +#define IS_LL_I2S_PRESCALER_PARITY(__VALUE__) (((__VALUE__) == LL_I2S_PRESCALER_PARITY_EVEN) \ + || ((__VALUE__) == LL_I2S_PRESCALER_PARITY_ODD)) +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup I2S_LL_Exported_Functions + * @{ + */ + +/** @addtogroup I2S_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the SPI/I2S registers to their default reset values. + * @param SPIx SPI Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: SPI registers are de-initialized + * - ERROR: SPI registers are not de-initialized + */ +ErrorStatus LL_I2S_DeInit(SPI_TypeDef *SPIx) +{ + return LL_SPI_DeInit(SPIx); +} + +/** + * @brief Initializes the SPI/I2S registers according to the specified parameters in I2S_InitStruct. + * @note As some bits in SPI configuration registers can only be written when the SPI is disabled (SPI_CR1_SPE bit =0), + * SPI peripheral should be in disabled state prior calling this function. Otherwise, ERROR result will be returned. + * @param SPIx SPI Instance + * @param I2S_InitStruct pointer to a @ref LL_I2S_InitTypeDef structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: SPI registers are Initialized + * - ERROR: SPI registers are not Initialized + */ +ErrorStatus LL_I2S_Init(SPI_TypeDef *SPIx, LL_I2S_InitTypeDef *I2S_InitStruct) +{ + uint32_t i2sdiv = 2U; + uint32_t i2sodd = 0U; + uint32_t packetlength = 1U; + uint32_t tmp; + uint32_t sourceclock; + ErrorStatus status = ERROR; + + /* Check the I2S parameters */ + assert_param(IS_I2S_ALL_INSTANCE(SPIx)); + assert_param(IS_LL_I2S_MODE(I2S_InitStruct->Mode)); + assert_param(IS_LL_I2S_STANDARD(I2S_InitStruct->Standard)); + assert_param(IS_LL_I2S_DATAFORMAT(I2S_InitStruct->DataFormat)); + assert_param(IS_LL_I2S_MCLK_OUTPUT(I2S_InitStruct->MCLKOutput)); + assert_param(IS_LL_I2S_AUDIO_FREQ(I2S_InitStruct->AudioFreq)); + assert_param(IS_LL_I2S_CPOL(I2S_InitStruct->ClockPolarity)); + + if (LL_I2S_IsEnabled(SPIx) == 0x00000000U) + { + /*---------------------------- SPIx I2SCFGR Configuration -------------------- + * Configure SPIx I2SCFGR with parameters: + * - Mode: SPI_I2SCFGR_I2SCFG[1:0] bit + * - Standard: SPI_I2SCFGR_I2SSTD[1:0] and SPI_I2SCFGR_PCMSYNC bits + * - DataFormat: SPI_I2SCFGR_CHLEN and SPI_I2SCFGR_DATLEN bits + * - ClockPolarity: SPI_I2SCFGR_CKPOL bit + */ + + /* Write to SPIx I2SCFGR */ + MODIFY_REG(SPIx->I2SCFGR, + I2S_I2SCFGR_CLEAR_MASK, + I2S_InitStruct->Mode | I2S_InitStruct->Standard | + I2S_InitStruct->DataFormat | I2S_InitStruct->ClockPolarity | + SPI_I2SCFGR_I2SMOD); + + /*---------------------------- SPIx I2SPR Configuration ---------------------- + * Configure SPIx I2SPR with parameters: + * - MCLKOutput: SPI_I2SPR_MCKOE bit + * - AudioFreq: SPI_I2SPR_I2SDIV[7:0] and SPI_I2SPR_ODD bits + */ + + /* If the requested audio frequency is not the default, compute the prescaler (i2sodd, i2sdiv) + * else, default values are used: i2sodd = 0U, i2sdiv = 2U. + */ + if (I2S_InitStruct->AudioFreq != LL_I2S_AUDIOFREQ_DEFAULT) + { + /* Check the frame length (For the Prescaler computing) + * Default value: LL_I2S_DATAFORMAT_16B (packetlength = 1U). + */ + if (I2S_InitStruct->DataFormat != LL_I2S_DATAFORMAT_16B) + { + /* Packet length is 32 bits */ + packetlength = 2U; + } + + /* If an external I2S clock has to be used, the specific define should be set + in the project configuration or in the stm32f7xx_ll_rcc.h file */ + /* Get the I2S source clock value */ + sourceclock = LL_RCC_GetI2SClockFreq(LL_RCC_I2S1_CLKSOURCE); + + /* Compute the Real divider depending on the MCLK output state with a floating point */ + if (I2S_InitStruct->MCLKOutput == LL_I2S_MCLK_OUTPUT_ENABLE) + { + /* MCLK output is enabled */ + tmp = (((((sourceclock / 256U) * 10U) / I2S_InitStruct->AudioFreq)) + 5U); + } + else + { + /* MCLK output is disabled */ + tmp = (((((sourceclock / (32U * packetlength)) * 10U) / I2S_InitStruct->AudioFreq)) + 5U); + } + + /* Remove the floating point */ + tmp = tmp / 10U; + + /* Check the parity of the divider */ + i2sodd = (tmp & (uint16_t)0x0001U); + + /* Compute the i2sdiv prescaler */ + i2sdiv = ((tmp - i2sodd) / 2U); + + /* Get the Mask for the Odd bit (SPI_I2SPR[8]) register */ + i2sodd = (i2sodd << 8U); + } + + /* Test if the divider is 1 or 0 or greater than 0xFF */ + if ((i2sdiv < 2U) || (i2sdiv > 0xFFU)) + { + /* Set the default values */ + i2sdiv = 2U; + i2sodd = 0U; + } + + /* Write to SPIx I2SPR register the computed value */ + WRITE_REG(SPIx->I2SPR, i2sdiv | i2sodd | I2S_InitStruct->MCLKOutput); + + status = SUCCESS; + } + return status; +} + +/** + * @brief Set each @ref LL_I2S_InitTypeDef field to default value. + * @param I2S_InitStruct pointer to a @ref LL_I2S_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ +void LL_I2S_StructInit(LL_I2S_InitTypeDef *I2S_InitStruct) +{ + /*--------------- Reset I2S init structure parameters values -----------------*/ + I2S_InitStruct->Mode = LL_I2S_MODE_SLAVE_TX; + I2S_InitStruct->Standard = LL_I2S_STANDARD_PHILIPS; + I2S_InitStruct->DataFormat = LL_I2S_DATAFORMAT_16B; + I2S_InitStruct->MCLKOutput = LL_I2S_MCLK_OUTPUT_DISABLE; + I2S_InitStruct->AudioFreq = LL_I2S_AUDIOFREQ_DEFAULT; + I2S_InitStruct->ClockPolarity = LL_I2S_POLARITY_LOW; +} + +/** + * @brief Set linear and parity prescaler. + * @note To calculate value of PrescalerLinear(I2SDIV[7:0] bits) and PrescalerParity(ODD bit)\n + * Check Audio frequency table and formulas inside Reference Manual (SPI/I2S). + * @param SPIx SPI Instance + * @param PrescalerLinear value Min_Data=0x02 and Max_Data=0xFF. + * @param PrescalerParity This parameter can be one of the following values: + * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN + * @arg @ref LL_I2S_PRESCALER_PARITY_ODD + * @retval None + */ +void LL_I2S_ConfigPrescaler(SPI_TypeDef *SPIx, uint32_t PrescalerLinear, uint32_t PrescalerParity) +{ + /* Check the I2S parameters */ + assert_param(IS_I2S_ALL_INSTANCE(SPIx)); + assert_param(IS_LL_I2S_PRESCALER_LINEAR(PrescalerLinear)); + assert_param(IS_LL_I2S_PRESCALER_PARITY(PrescalerParity)); + + /* Write to SPIx I2SPR */ + MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_I2SDIV | SPI_I2SPR_ODD, PrescalerLinear | (PrescalerParity << 8U)); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (SPI1) || defined (SPI2) || defined (SPI3) || defined (SPI4) || defined (SPI5) || defined(SPI6) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c new file mode 100644 index 0000000..1e69b77 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c @@ -0,0 +1,1380 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_tim.c + * @author MCD Application Team + * @brief TIM LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_ll_tim.h" +#include "stm32f7xx_ll_bus.h" + +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined (TIM1) || defined (TIM8) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM12) || defined (TIM13) || defined (TIM14) || defined (TIM6) || defined (TIM7) + +/** @addtogroup TIM_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup TIM_LL_Private_Macros + * @{ + */ +#define IS_LL_TIM_COUNTERMODE(__VALUE__) (((__VALUE__) == LL_TIM_COUNTERMODE_UP) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_DOWN) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_UP) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_DOWN) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_UP_DOWN)) + +#define IS_LL_TIM_CLOCKDIVISION(__VALUE__) (((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV1) \ + || ((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV2) \ + || ((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV4)) + +#define IS_LL_TIM_OCMODE(__VALUE__) (((__VALUE__) == LL_TIM_OCMODE_FROZEN) \ + || ((__VALUE__) == LL_TIM_OCMODE_ACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_INACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_TOGGLE) \ + || ((__VALUE__) == LL_TIM_OCMODE_FORCED_INACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_FORCED_ACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_PWM1) \ + || ((__VALUE__) == LL_TIM_OCMODE_PWM2) \ + || ((__VALUE__) == LL_TIM_OCMODE_RETRIG_OPM1) \ + || ((__VALUE__) == LL_TIM_OCMODE_RETRIG_OPM2) \ + || ((__VALUE__) == LL_TIM_OCMODE_COMBINED_PWM1) \ + || ((__VALUE__) == LL_TIM_OCMODE_COMBINED_PWM2) \ + || ((__VALUE__) == LL_TIM_OCMODE_ASYMMETRIC_PWM1) \ + || ((__VALUE__) == LL_TIM_OCMODE_ASYMMETRIC_PWM2)) + +#define IS_LL_TIM_OCSTATE(__VALUE__) (((__VALUE__) == LL_TIM_OCSTATE_DISABLE) \ + || ((__VALUE__) == LL_TIM_OCSTATE_ENABLE)) + +#define IS_LL_TIM_OCPOLARITY(__VALUE__) (((__VALUE__) == LL_TIM_OCPOLARITY_HIGH) \ + || ((__VALUE__) == LL_TIM_OCPOLARITY_LOW)) + +#define IS_LL_TIM_OCIDLESTATE(__VALUE__) (((__VALUE__) == LL_TIM_OCIDLESTATE_LOW) \ + || ((__VALUE__) == LL_TIM_OCIDLESTATE_HIGH)) + +#define IS_LL_TIM_ACTIVEINPUT(__VALUE__) (((__VALUE__) == LL_TIM_ACTIVEINPUT_DIRECTTI) \ + || ((__VALUE__) == LL_TIM_ACTIVEINPUT_INDIRECTTI) \ + || ((__VALUE__) == LL_TIM_ACTIVEINPUT_TRC)) + +#define IS_LL_TIM_ICPSC(__VALUE__) (((__VALUE__) == LL_TIM_ICPSC_DIV1) \ + || ((__VALUE__) == LL_TIM_ICPSC_DIV2) \ + || ((__VALUE__) == LL_TIM_ICPSC_DIV4) \ + || ((__VALUE__) == LL_TIM_ICPSC_DIV8)) + +#define IS_LL_TIM_IC_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_IC_FILTER_FDIV1) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N2) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N4) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV2_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV2_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV4_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV4_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV8_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV8_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N5) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N5) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N8)) + +#define IS_LL_TIM_IC_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_IC_POLARITY_RISING) \ + || ((__VALUE__) == LL_TIM_IC_POLARITY_FALLING) \ + || ((__VALUE__) == LL_TIM_IC_POLARITY_BOTHEDGE)) + +#define IS_LL_TIM_ENCODERMODE(__VALUE__) (((__VALUE__) == LL_TIM_ENCODERMODE_X2_TI1) \ + || ((__VALUE__) == LL_TIM_ENCODERMODE_X2_TI2) \ + || ((__VALUE__) == LL_TIM_ENCODERMODE_X4_TI12)) + +#define IS_LL_TIM_IC_POLARITY_ENCODER(__VALUE__) (((__VALUE__) == LL_TIM_IC_POLARITY_RISING) \ + || ((__VALUE__) == LL_TIM_IC_POLARITY_FALLING)) + +#define IS_LL_TIM_OSSR_STATE(__VALUE__) (((__VALUE__) == LL_TIM_OSSR_DISABLE) \ + || ((__VALUE__) == LL_TIM_OSSR_ENABLE)) + +#define IS_LL_TIM_OSSI_STATE(__VALUE__) (((__VALUE__) == LL_TIM_OSSI_DISABLE) \ + || ((__VALUE__) == LL_TIM_OSSI_ENABLE)) + +#define IS_LL_TIM_LOCK_LEVEL(__VALUE__) (((__VALUE__) == LL_TIM_LOCKLEVEL_OFF) \ + || ((__VALUE__) == LL_TIM_LOCKLEVEL_1) \ + || ((__VALUE__) == LL_TIM_LOCKLEVEL_2) \ + || ((__VALUE__) == LL_TIM_LOCKLEVEL_3)) + +#define IS_LL_TIM_BREAK_STATE(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_DISABLE) \ + || ((__VALUE__) == LL_TIM_BREAK_ENABLE)) + +#define IS_LL_TIM_BREAK_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_POLARITY_LOW) \ + || ((__VALUE__) == LL_TIM_BREAK_POLARITY_HIGH)) + +#define IS_LL_TIM_BREAK_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1_N2) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1_N4) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1_N8) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV2_N6) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV2_N8) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV4_N6) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV4_N8) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV8_N6) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV8_N8) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV16_N5) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV16_N6) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV16_N8) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV32_N5) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV32_N6) \ + || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV32_N8)) + +#define IS_LL_TIM_BREAK2_STATE(__VALUE__) (((__VALUE__) == LL_TIM_BREAK2_DISABLE) \ + || ((__VALUE__) == LL_TIM_BREAK2_ENABLE)) + +#define IS_LL_TIM_BREAK2_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_BREAK2_POLARITY_LOW) \ + || ((__VALUE__) == LL_TIM_BREAK2_POLARITY_HIGH)) + +#define IS_LL_TIM_BREAK2_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1_N2) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1_N4) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1_N8) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV2_N6) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV2_N8) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV4_N6) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV4_N8) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV8_N6) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV8_N8) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV16_N5) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV16_N6) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV16_N8) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV32_N5) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV32_N6) \ + || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV32_N8)) + +#define IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(__VALUE__) (((__VALUE__) == LL_TIM_AUTOMATICOUTPUT_DISABLE) \ + || ((__VALUE__) == LL_TIM_AUTOMATICOUTPUT_ENABLE)) +/** + * @} + */ + + +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup TIM_LL_Private_Functions TIM Private Functions + * @{ + */ +static ErrorStatus OC1Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC2Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC3Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC4Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC5Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC6Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus IC1Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +static ErrorStatus IC2Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +static ErrorStatus IC3Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +static ErrorStatus IC4Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup TIM_LL_Exported_Functions + * @{ + */ + +/** @addtogroup TIM_LL_EF_Init + * @{ + */ + +/** + * @brief Set TIMx registers to their reset values. + * @param TIMx Timer instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: invalid TIMx instance + */ +ErrorStatus LL_TIM_DeInit(const TIM_TypeDef *TIMx) +{ + ErrorStatus result = SUCCESS; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(TIMx)); + + if (TIMx == TIM1) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM1); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM1); + } + else if (TIMx == TIM2) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM2); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM2); + } +#if defined(TIM3) + else if (TIMx == TIM3) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM3); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM3); + } +#endif /* TIM3 */ +#if defined(TIM4) + else if (TIMx == TIM4) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM4); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM4); + } +#endif /* TIM4 */ +#if defined(TIM5) + else if (TIMx == TIM5) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM5); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM5); + } +#endif /* TIM5 */ +#if defined(TIM6) + else if (TIMx == TIM6) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM6); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM6); + } +#endif /* TIM6 */ +#if defined (TIM7) + else if (TIMx == TIM7) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM7); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM7); + } +#endif /* TIM7 */ +#if defined(TIM8) + else if (TIMx == TIM8) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM8); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM8); + } +#endif /* TIM8 */ +#if defined(TIM9) + else if (TIMx == TIM9) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM9); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM9); + } +#endif /* TIM9 */ +#if defined(TIM10) + else if (TIMx == TIM10) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM10); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM10); + } +#endif /* TIM10 */ +#if defined(TIM11) + else if (TIMx == TIM11) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM11); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM11); + } +#endif /* TIM11 */ +#if defined(TIM12) + else if (TIMx == TIM12) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM12); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM12); + } +#endif /* TIM12 */ +#if defined(TIM13) + else if (TIMx == TIM13) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM13); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM13); + } +#endif /* TIM13 */ +#if defined(TIM14) + else if (TIMx == TIM14) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM14); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM14); + } +#endif /* TIM14 */ + else + { + result = ERROR; + } + + return result; +} + +/** + * @brief Set the fields of the time base unit configuration data structure + * to their default values. + * @param TIM_InitStruct pointer to a @ref LL_TIM_InitTypeDef structure (time base unit configuration data structure) + * @retval None + */ +void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct) +{ + /* Set the default configuration */ + TIM_InitStruct->Prescaler = (uint16_t)0x0000; + TIM_InitStruct->CounterMode = LL_TIM_COUNTERMODE_UP; + TIM_InitStruct->Autoreload = 0xFFFFFFFFU; + TIM_InitStruct->ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + TIM_InitStruct->RepetitionCounter = 0x00000000U; +} + +/** + * @brief Configure the TIMx time base unit. + * @param TIMx Timer Instance + * @param TIM_InitStruct pointer to a @ref LL_TIM_InitTypeDef structure + * (TIMx time base unit configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, const LL_TIM_InitTypeDef *TIM_InitStruct) +{ + uint32_t tmpcr1; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_COUNTERMODE(TIM_InitStruct->CounterMode)); + assert_param(IS_LL_TIM_CLOCKDIVISION(TIM_InitStruct->ClockDivision)); + + tmpcr1 = LL_TIM_ReadReg(TIMx, CR1); + + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + { + /* Select the Counter Mode */ + MODIFY_REG(tmpcr1, (TIM_CR1_DIR | TIM_CR1_CMS), TIM_InitStruct->CounterMode); + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + { + /* Set the clock division */ + MODIFY_REG(tmpcr1, TIM_CR1_CKD, TIM_InitStruct->ClockDivision); + } + + /* Write to TIMx CR1 */ + LL_TIM_WriteReg(TIMx, CR1, tmpcr1); + + /* Set the Autoreload value */ + LL_TIM_SetAutoReload(TIMx, TIM_InitStruct->Autoreload); + + /* Set the Prescaler value */ + LL_TIM_SetPrescaler(TIMx, TIM_InitStruct->Prescaler); + + if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) + { + /* Set the Repetition Counter value */ + LL_TIM_SetRepetitionCounter(TIMx, TIM_InitStruct->RepetitionCounter); + } + + /* Generate an update event to reload the Prescaler + and the repetition counter value (if applicable) immediately */ + LL_TIM_GenerateEvent_UPDATE(TIMx); + + return SUCCESS; +} + +/** + * @brief Set the fields of the TIMx output channel configuration data + * structure to their default values. + * @param TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure + * (the output channel configuration data structure) + * @retval None + */ +void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct) +{ + /* Set the default configuration */ + TIM_OC_InitStruct->OCMode = LL_TIM_OCMODE_FROZEN; + TIM_OC_InitStruct->OCState = LL_TIM_OCSTATE_DISABLE; + TIM_OC_InitStruct->OCNState = LL_TIM_OCSTATE_DISABLE; + TIM_OC_InitStruct->CompareValue = 0x00000000U; + TIM_OC_InitStruct->OCPolarity = LL_TIM_OCPOLARITY_HIGH; + TIM_OC_InitStruct->OCNPolarity = LL_TIM_OCPOLARITY_HIGH; + TIM_OC_InitStruct->OCIdleState = LL_TIM_OCIDLESTATE_LOW; + TIM_OC_InitStruct->OCNIdleState = LL_TIM_OCIDLESTATE_LOW; +} + +/** + * @brief Configure the TIMx output channel. + * @param TIMx Timer Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @arg @ref LL_TIM_CHANNEL_CH5 + * @arg @ref LL_TIM_CHANNEL_CH6 + * @param TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure (TIMx output channel configuration + * data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx output channel is initialized + * - ERROR: TIMx output channel is not initialized + */ +ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct) +{ + ErrorStatus result = ERROR; + + switch (Channel) + { + case LL_TIM_CHANNEL_CH1: + result = OC1Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH2: + result = OC2Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH3: + result = OC3Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH4: + result = OC4Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH5: + result = OC5Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH6: + result = OC6Config(TIMx, TIM_OC_InitStruct); + break; + default: + break; + } + + return result; +} + +/** + * @brief Set the fields of the TIMx input channel configuration data + * structure to their default values. + * @param TIM_ICInitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (the input channel configuration + * data structure) + * @retval None + */ +void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Set the default configuration */ + TIM_ICInitStruct->ICPolarity = LL_TIM_IC_POLARITY_RISING; + TIM_ICInitStruct->ICActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + TIM_ICInitStruct->ICPrescaler = LL_TIM_ICPSC_DIV1; + TIM_ICInitStruct->ICFilter = LL_TIM_IC_FILTER_FDIV1; +} + +/** + * @brief Configure the TIMx input channel. + * @param TIMx Timer Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param TIM_IC_InitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (TIMx input channel configuration data + * structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx output channel is initialized + * - ERROR: TIMx output channel is not initialized + */ +ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct) +{ + ErrorStatus result = ERROR; + + switch (Channel) + { + case LL_TIM_CHANNEL_CH1: + result = IC1Config(TIMx, TIM_IC_InitStruct); + break; + case LL_TIM_CHANNEL_CH2: + result = IC2Config(TIMx, TIM_IC_InitStruct); + break; + case LL_TIM_CHANNEL_CH3: + result = IC3Config(TIMx, TIM_IC_InitStruct); + break; + case LL_TIM_CHANNEL_CH4: + result = IC4Config(TIMx, TIM_IC_InitStruct); + break; + default: + break; + } + + return result; +} + +/** + * @brief Fills each TIM_EncoderInitStruct field with its default value + * @param TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (encoder interface + * configuration data structure) + * @retval None + */ +void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct) +{ + /* Set the default configuration */ + TIM_EncoderInitStruct->EncoderMode = LL_TIM_ENCODERMODE_X2_TI1; + TIM_EncoderInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING; + TIM_EncoderInitStruct->IC1ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + TIM_EncoderInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + TIM_EncoderInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + TIM_EncoderInitStruct->IC2Polarity = LL_TIM_IC_POLARITY_RISING; + TIM_EncoderInitStruct->IC2ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + TIM_EncoderInitStruct->IC2Prescaler = LL_TIM_ICPSC_DIV1; + TIM_EncoderInitStruct->IC2Filter = LL_TIM_IC_FILTER_FDIV1; +} + +/** + * @brief Configure the encoder interface of the timer instance. + * @param TIMx Timer Instance + * @param TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (TIMx encoder interface + * configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, const LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_ENCODERMODE(TIM_EncoderInitStruct->EncoderMode)); + assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC1Polarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC1ActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC1Prescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC1Filter)); + assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC2Polarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC2ActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC2Prescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC2Filter)); + + /* Disable the CC1 and CC2: Reset the CC1E and CC2E Bits */ + TIMx->CCER &= (uint32_t)~(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Configure TI1 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1ActiveInput >> 16U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Filter >> 16U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Prescaler >> 16U); + + /* Configure TI2 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC2S | TIM_CCMR1_IC2F | TIM_CCMR1_IC2PSC); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2ActiveInput >> 8U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Filter >> 8U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Prescaler >> 8U); + + /* Set TI1 and TI2 polarity and enable TI1 and TI2 */ + tmpccer &= (uint32_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP | TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC1Polarity); + tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC2Polarity << 4U); + tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Set encoder mode */ + LL_TIM_SetEncoderMode(TIMx, TIM_EncoderInitStruct->EncoderMode); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Set the fields of the TIMx Hall sensor interface configuration data + * structure to their default values. + * @param TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (HALL sensor interface + * configuration data structure) + * @retval None + */ +void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct) +{ + /* Set the default configuration */ + TIM_HallSensorInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING; + TIM_HallSensorInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + TIM_HallSensorInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + TIM_HallSensorInitStruct->CommutationDelay = 0U; +} + +/** + * @brief Configure the Hall sensor interface of the timer instance. + * @note TIMx CH1, CH2 and CH3 inputs connected through a XOR + * to the TI1 input channel + * @note TIMx slave mode controller is configured in reset mode. + Selected internal trigger is TI1F_ED. + * @note Channel 1 is configured as input, IC1 is mapped on TRC. + * @note Captured value stored in TIMx_CCR1 correspond to the time elapsed + * between 2 changes on the inputs. It gives information about motor speed. + * @note Channel 2 is configured in output PWM 2 mode. + * @note Compare value stored in TIMx_CCR2 corresponds to the commutation delay. + * @note OC2REF is selected as trigger output on TRGO. + * @note LL_TIM_IC_POLARITY_BOTHEDGE must not be used for TI1 when it is used + * when TIMx operates in Hall sensor interface mode. + * @param TIMx Timer Instance + * @param TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (TIMx HALL sensor + * interface configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, const LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct) +{ + uint32_t tmpcr2; + uint32_t tmpccmr1; + uint32_t tmpccer; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_HallSensorInitStruct->IC1Polarity)); + assert_param(IS_LL_TIM_ICPSC(TIM_HallSensorInitStruct->IC1Prescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_HallSensorInitStruct->IC1Filter)); + + /* Disable the CC1 and CC2: Reset the CC1E and CC2E Bits */ + TIMx->CCER &= (uint32_t)~(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx SMCR register value */ + tmpsmcr = LL_TIM_ReadReg(TIMx, SMCR); + + /* Connect TIMx_CH1, CH2 and CH3 pins to the TI1 input */ + tmpcr2 |= TIM_CR2_TI1S; + + /* OC2REF signal is used as trigger output (TRGO) */ + tmpcr2 |= LL_TIM_TRGO_OC2REF; + + /* Configure the slave mode controller */ + tmpsmcr &= (uint32_t)~(TIM_SMCR_TS | TIM_SMCR_SMS); + tmpsmcr |= LL_TIM_TS_TI1F_ED; + tmpsmcr |= LL_TIM_SLAVEMODE_RESET; + + /* Configure input channel 1 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC); + tmpccmr1 |= (uint32_t)(LL_TIM_ACTIVEINPUT_TRC >> 16U); + tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Filter >> 16U); + tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Prescaler >> 16U); + + /* Configure input channel 2 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_OC2M | TIM_CCMR1_OC2FE | TIM_CCMR1_OC2PE | TIM_CCMR1_OC2CE); + tmpccmr1 |= (uint32_t)(LL_TIM_OCMODE_PWM2 << 8U); + + /* Set Channel 1 polarity and enable Channel 1 and Channel2 */ + tmpccer &= (uint32_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP | TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= (uint32_t)(TIM_HallSensorInitStruct->IC1Polarity); + tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx SMCR */ + LL_TIM_WriteReg(TIMx, SMCR, tmpsmcr); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + /* Write to TIMx CCR2 */ + LL_TIM_OC_SetCompareCH2(TIMx, TIM_HallSensorInitStruct->CommutationDelay); + + return SUCCESS; +} + +/** + * @brief Set the fields of the Break and Dead Time configuration data structure + * to their default values. + * @param TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead Time configuration + * data structure) + * @retval None + */ +void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct) +{ + /* Set the default configuration */ + TIM_BDTRInitStruct->OSSRState = LL_TIM_OSSR_DISABLE; + TIM_BDTRInitStruct->OSSIState = LL_TIM_OSSI_DISABLE; + TIM_BDTRInitStruct->LockLevel = LL_TIM_LOCKLEVEL_OFF; + TIM_BDTRInitStruct->DeadTime = (uint8_t)0x00; + TIM_BDTRInitStruct->BreakState = LL_TIM_BREAK_DISABLE; + TIM_BDTRInitStruct->BreakPolarity = LL_TIM_BREAK_POLARITY_LOW; + TIM_BDTRInitStruct->BreakFilter = LL_TIM_BREAK_FILTER_FDIV1; + TIM_BDTRInitStruct->Break2State = LL_TIM_BREAK2_DISABLE; + TIM_BDTRInitStruct->Break2Polarity = LL_TIM_BREAK2_POLARITY_LOW; + TIM_BDTRInitStruct->Break2Filter = LL_TIM_BREAK2_FILTER_FDIV1; + TIM_BDTRInitStruct->AutomaticOutput = LL_TIM_AUTOMATICOUTPUT_DISABLE; +} + +/** + * @brief Configure the Break and Dead Time feature of the timer instance. + * @note As the bits BK2P, BK2E, BK2F[3:0], BKF[3:0], AOE, BKP, BKE, OSSI, OSSR + * and DTG[7:0] can be write-locked depending on the LOCK configuration, it + * can be necessary to configure all of them during the first write access to + * the TIMx_BDTR register. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a second break input. + * @param TIMx Timer Instance + * @param TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead Time configuration + * data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Break and Dead Time is initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, const LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct) +{ + uint32_t tmpbdtr = 0; + + /* Check the parameters */ + assert_param(IS_TIM_BREAK_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OSSR_STATE(TIM_BDTRInitStruct->OSSRState)); + assert_param(IS_LL_TIM_OSSI_STATE(TIM_BDTRInitStruct->OSSIState)); + assert_param(IS_LL_TIM_LOCK_LEVEL(TIM_BDTRInitStruct->LockLevel)); + assert_param(IS_LL_TIM_BREAK_STATE(TIM_BDTRInitStruct->BreakState)); + assert_param(IS_LL_TIM_BREAK_POLARITY(TIM_BDTRInitStruct->BreakPolarity)); + assert_param(IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(TIM_BDTRInitStruct->AutomaticOutput)); + assert_param(IS_LL_TIM_BREAK_FILTER(TIM_BDTRInitStruct->BreakFilter)); + + /* 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, TIM_BDTRInitStruct->DeadTime); + MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, TIM_BDTRInitStruct->LockLevel); + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, TIM_BDTRInitStruct->OSSIState); + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, TIM_BDTRInitStruct->OSSRState); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, TIM_BDTRInitStruct->BreakState); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, TIM_BDTRInitStruct->BreakPolarity); + MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, TIM_BDTRInitStruct->AutomaticOutput); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, TIM_BDTRInitStruct->BreakFilter); + + if (IS_TIM_BKIN2_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_BREAK2_STATE(TIM_BDTRInitStruct->Break2State)); + assert_param(IS_LL_TIM_BREAK2_POLARITY(TIM_BDTRInitStruct->Break2Polarity)); + assert_param(IS_LL_TIM_BREAK2_FILTER(TIM_BDTRInitStruct->Break2Filter)); + + /* Set the BREAK2 input related BDTR bit-fields */ + MODIFY_REG(tmpbdtr, TIM_BDTR_BK2F, (TIM_BDTRInitStruct->Break2Filter)); + MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, TIM_BDTRInitStruct->Break2State); + MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, TIM_BDTRInitStruct->Break2Polarity); + } + + /* Set TIMx_BDTR */ + LL_TIM_WriteReg(TIMx, BDTR, tmpbdtr); + + return SUCCESS; +} +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup TIM_LL_Private_Functions TIM Private Functions + * @brief Private functions + * @{ + */ +/** + * @brief Configure the TIMx output channel 1. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 1 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC1Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + + /* Disable the Channel 1: Reset the CC1E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC1E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr1, TIM_CCMR1_CC1S); + + /* Set the Output Compare Mode */ + MODIFY_REG(tmpccmr1, TIM_CCMR1_OC1M, TIM_OCInitStruct->OCMode); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC1P, TIM_OCInitStruct->OCPolarity); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC1E, TIM_OCInitStruct->OCState); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + + /* Set the complementary output Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC1NP, TIM_OCInitStruct->OCNPolarity << 2U); + + /* Set the complementary output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC1NE, TIM_OCInitStruct->OCNState << 2U); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS1, TIM_OCInitStruct->OCIdleState); + + /* Set the complementary output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS1N, TIM_OCInitStruct->OCNIdleState << 1U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH1(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 2. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 2 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC2Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + + /* Disable the Channel 2: Reset the CC2E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC2E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr1, TIM_CCMR1_CC2S); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr1, TIM_CCMR1_OC2M, TIM_OCInitStruct->OCMode << 8U); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC2P, TIM_OCInitStruct->OCPolarity << 4U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC2E, TIM_OCInitStruct->OCState << 4U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + + /* Set the complementary output Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC2NP, TIM_OCInitStruct->OCNPolarity << 6U); + + /* Set the complementary output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC2NE, TIM_OCInitStruct->OCNState << 6U); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS2, TIM_OCInitStruct->OCIdleState << 2U); + + /* Set the complementary output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS2N, TIM_OCInitStruct->OCNIdleState << 3U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH2(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 3. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 3 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC3Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + + /* Disable the Channel 3: Reset the CC3E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC3E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR2 register value */ + tmpccmr2 = LL_TIM_ReadReg(TIMx, CCMR2); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr2, TIM_CCMR2_CC3S); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr2, TIM_CCMR2_OC3M, TIM_OCInitStruct->OCMode); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC3P, TIM_OCInitStruct->OCPolarity << 8U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC3E, TIM_OCInitStruct->OCState << 8U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + + /* Set the complementary output Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC3NP, TIM_OCInitStruct->OCNPolarity << 10U); + + /* Set the complementary output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC3NE, TIM_OCInitStruct->OCNState << 10U); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS3, TIM_OCInitStruct->OCIdleState << 4U); + + /* Set the complementary output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS3N, TIM_OCInitStruct->OCNIdleState << 5U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR2 */ + LL_TIM_WriteReg(TIMx, CCMR2, tmpccmr2); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH3(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 4. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 4 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC4Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + + /* Disable the Channel 4: Reset the CC4E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC4E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR2 register value */ + tmpccmr2 = LL_TIM_ReadReg(TIMx, CCMR2); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr2, TIM_CCMR2_CC4S); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr2, TIM_CCMR2_OC4M, TIM_OCInitStruct->OCMode << 8U); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC4P, TIM_OCInitStruct->OCPolarity << 12U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC4E, TIM_OCInitStruct->OCState << 12U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS4, TIM_OCInitStruct->OCIdleState << 6U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR2 */ + LL_TIM_WriteReg(TIMx, CCMR2, tmpccmr2); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH4(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 5. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 5 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC5Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr3; + uint32_t tmpccer; + + /* Check the parameters */ + assert_param(IS_TIM_CC5_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + + /* Disable the Channel 5: Reset the CC5E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC5E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CCMR3 register value */ + tmpccmr3 = LL_TIM_ReadReg(TIMx, CCMR3); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr3, TIM_CCMR3_OC5M, TIM_OCInitStruct->OCMode); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC5P, TIM_OCInitStruct->OCPolarity << 16U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC5E, TIM_OCInitStruct->OCState << 16U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the Output Idle state */ + MODIFY_REG(TIMx->CR2, TIM_CR2_OIS5, TIM_OCInitStruct->OCIdleState << 8U); + + } + + /* Write to TIMx CCMR3 */ + LL_TIM_WriteReg(TIMx, CCMR3, tmpccmr3); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH5(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 6. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 6 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC6Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr3; + uint32_t tmpccer; + + /* Check the parameters */ + assert_param(IS_TIM_CC6_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + + /* Disable the Channel 5: Reset the CC6E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC6E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CCMR3 register value */ + tmpccmr3 = LL_TIM_ReadReg(TIMx, CCMR3); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr3, TIM_CCMR3_OC6M, TIM_OCInitStruct->OCMode << 8U); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC6P, TIM_OCInitStruct->OCPolarity << 20U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC6E, TIM_OCInitStruct->OCState << 20U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the Output Idle state */ + MODIFY_REG(TIMx->CR2, TIM_CR2_OIS6, TIM_OCInitStruct->OCIdleState << 10U); + } + + /* Write to TIMx CCMR3 */ + LL_TIM_WriteReg(TIMx, CCMR3, tmpccmr3); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH6(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx input channel 1. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 1 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC1Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC1E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR1, + (TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 16U); + + /* Select the Polarity and set the CC1E Bit */ + MODIFY_REG(TIMx->CCER, + (TIM_CCER_CC1P | TIM_CCER_CC1NP), + (TIM_ICInitStruct->ICPolarity | TIM_CCER_CC1E)); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx input channel 2. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 2 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC2Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC2E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR1, + (TIM_CCMR1_CC2S | TIM_CCMR1_IC2F | TIM_CCMR1_IC2PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 8U); + + /* Select the Polarity and set the CC2E Bit */ + MODIFY_REG(TIMx->CCER, + (TIM_CCER_CC2P | TIM_CCER_CC2NP), + ((TIM_ICInitStruct->ICPolarity << 4U) | TIM_CCER_CC2E)); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx input channel 3. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 3 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC3Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 3: Reset the CC3E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC3E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR2, + (TIM_CCMR2_CC3S | TIM_CCMR2_IC3F | TIM_CCMR2_IC3PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 16U); + + /* Select the Polarity and set the CC3E Bit */ + MODIFY_REG(TIMx->CCER, + (TIM_CCER_CC3P | TIM_CCER_CC3NP), + ((TIM_ICInitStruct->ICPolarity << 8U) | TIM_CCER_CC3E)); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx input channel 4. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 4 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC4Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC4E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR2, + (TIM_CCMR2_CC4S | TIM_CCMR2_IC4F | TIM_CCMR2_IC4PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 8U); + + /* Select the Polarity and set the CC4E Bit */ + MODIFY_REG(TIMx->CCER, + (TIM_CCER_CC4P | TIM_CCER_CC4NP), + ((TIM_ICInitStruct->ICPolarity << 12U) | TIM_CCER_CC4E)); + + return SUCCESS; +} + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* TIM1 || TIM8 || TIM2 || TIM3 || TIM4 || TIM5 ||TIM9 || TIM10 || TIM11 || TIM12 || TIM13 || TIM14 || TIM6 || TIM7 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c new file mode 100644 index 0000000..8e34112 --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c @@ -0,0 +1,451 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_usart.c + * @author MCD Application Team + * @brief USART LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_ll_usart.h" +#include "stm32f7xx_ll_rcc.h" +#include "stm32f7xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +#if defined(USART1) || defined(USART2) || defined(USART3) || defined(USART6) \ + || defined(UART4) || defined(UART5) || defined(UART7) || defined(UART8) + +/** @addtogroup USART_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @addtogroup USART_LL_Private_Constants + * @{ + */ + +/* Definition of default baudrate value used for USART initialisation */ +#define USART_DEFAULT_BAUDRATE (9600U) + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup USART_LL_Private_Macros + * @{ + */ + +/* __BAUDRATE__ The maximum Baud Rate is derived from the maximum clock available + * divided by the smallest oversampling used on the USART (i.e. 8) */ +#define IS_LL_USART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) <= 27000000U) + +/* __VALUE__ In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. */ +#define IS_LL_USART_BRR_MIN(__VALUE__) ((__VALUE__) >= 16U) + +#define IS_LL_USART_DIRECTION(__VALUE__) (((__VALUE__) == LL_USART_DIRECTION_NONE) \ + || ((__VALUE__) == LL_USART_DIRECTION_RX) \ + || ((__VALUE__) == LL_USART_DIRECTION_TX) \ + || ((__VALUE__) == LL_USART_DIRECTION_TX_RX)) + +#define IS_LL_USART_PARITY(__VALUE__) (((__VALUE__) == LL_USART_PARITY_NONE) \ + || ((__VALUE__) == LL_USART_PARITY_EVEN) \ + || ((__VALUE__) == LL_USART_PARITY_ODD)) + +#define IS_LL_USART_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_USART_DATAWIDTH_7B) \ + || ((__VALUE__) == LL_USART_DATAWIDTH_8B) \ + || ((__VALUE__) == LL_USART_DATAWIDTH_9B)) + +#define IS_LL_USART_OVERSAMPLING(__VALUE__) (((__VALUE__) == LL_USART_OVERSAMPLING_16) \ + || ((__VALUE__) == LL_USART_OVERSAMPLING_8)) + +#define IS_LL_USART_LASTBITCLKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_LASTCLKPULSE_NO_OUTPUT) \ + || ((__VALUE__) == LL_USART_LASTCLKPULSE_OUTPUT)) + +#define IS_LL_USART_CLOCKPHASE(__VALUE__) (((__VALUE__) == LL_USART_PHASE_1EDGE) \ + || ((__VALUE__) == LL_USART_PHASE_2EDGE)) + +#define IS_LL_USART_CLOCKPOLARITY(__VALUE__) (((__VALUE__) == LL_USART_POLARITY_LOW) \ + || ((__VALUE__) == LL_USART_POLARITY_HIGH)) + +#define IS_LL_USART_CLOCKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_CLOCK_DISABLE) \ + || ((__VALUE__) == LL_USART_CLOCK_ENABLE)) + +#define IS_LL_USART_STOPBITS(__VALUE__) (((__VALUE__) == LL_USART_STOPBITS_0_5) \ + || ((__VALUE__) == LL_USART_STOPBITS_1) \ + || ((__VALUE__) == LL_USART_STOPBITS_1_5) \ + || ((__VALUE__) == LL_USART_STOPBITS_2)) + +#define IS_LL_USART_HWCONTROL(__VALUE__) (((__VALUE__) == LL_USART_HWCONTROL_NONE) \ + || ((__VALUE__) == LL_USART_HWCONTROL_RTS) \ + || ((__VALUE__) == LL_USART_HWCONTROL_CTS) \ + || ((__VALUE__) == LL_USART_HWCONTROL_RTS_CTS)) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup USART_LL_Exported_Functions + * @{ + */ + +/** @addtogroup USART_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize USART registers (Registers restored to their default values). + * @param USARTx USART Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: USART registers are de-initialized + * - ERROR: USART registers are not de-initialized + */ +ErrorStatus LL_USART_DeInit(const USART_TypeDef *USARTx) +{ + ErrorStatus status = SUCCESS; + + /* Check the parameters */ + assert_param(IS_UART_INSTANCE(USARTx)); + + if (USARTx == USART1) + { + /* Force reset of USART clock */ + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_USART1); + + /* Release reset of USART clock */ + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_USART1); + } + else if (USARTx == USART2) + { + /* Force reset of USART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_USART2); + + /* Release reset of USART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_USART2); + } + else if (USARTx == USART3) + { + /* Force reset of USART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_USART3); + + /* Release reset of USART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_USART3); + } + else if (USARTx == UART4) + { + /* Force reset of UART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART4); + + /* Release reset of UART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART4); + } + else if (USARTx == UART5) + { + /* Force reset of UART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART5); + + /* Release reset of UART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART5); + } + else if (USARTx == USART6) + { + /* Force reset of USART clock */ + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_USART6); + + /* Release reset of USART clock */ + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_USART6); + } + else if (USARTx == UART7) + { + /* Force reset of UART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART7); + + /* Release reset of UART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART7); + } + else if (USARTx == UART8) + { + /* Force reset of UART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART8); + + /* Release reset of UART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART8); + } + else + { + status = ERROR; + } + + return (status); +} + +/** + * @brief Initialize USART registers according to the specified + * parameters in USART_InitStruct. + * @note As some bits in USART configuration registers can only be written when + * the USART is disabled (USART_CR1_UE bit =0), USART Peripheral should be in disabled state prior calling + * this function. Otherwise, ERROR result will be returned. + * @note Baud rate value stored in USART_InitStruct BaudRate field, should be valid (different from 0). + * @param USARTx USART Instance + * @param USART_InitStruct pointer to a LL_USART_InitTypeDef structure + * that contains the configuration information for the specified USART peripheral. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: USART registers are initialized according to USART_InitStruct content + * - ERROR: Problem occurred during USART Registers initialization + */ +ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, const LL_USART_InitTypeDef *USART_InitStruct) +{ + ErrorStatus status = ERROR; + uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check the parameters */ + assert_param(IS_UART_INSTANCE(USARTx)); + assert_param(IS_LL_USART_BAUDRATE(USART_InitStruct->BaudRate)); + assert_param(IS_LL_USART_DATAWIDTH(USART_InitStruct->DataWidth)); + assert_param(IS_LL_USART_STOPBITS(USART_InitStruct->StopBits)); + assert_param(IS_LL_USART_PARITY(USART_InitStruct->Parity)); + assert_param(IS_LL_USART_DIRECTION(USART_InitStruct->TransferDirection)); + assert_param(IS_LL_USART_HWCONTROL(USART_InitStruct->HardwareFlowControl)); + assert_param(IS_LL_USART_OVERSAMPLING(USART_InitStruct->OverSampling)); + + /* USART needs to be in disabled state, in order to be able to configure some bits in + CRx registers */ + if (LL_USART_IsEnabled(USARTx) == 0U) + { + /*---------------------------- USART CR1 Configuration --------------------- + * Configure USARTx CR1 (USART Word Length, Parity, Mode and Oversampling bits) with parameters: + * - DataWidth: USART_CR1_M bits according to USART_InitStruct->DataWidth value + * - Parity: USART_CR1_PCE, USART_CR1_PS bits according to USART_InitStruct->Parity value + * - TransferDirection: USART_CR1_TE, USART_CR1_RE bits according to USART_InitStruct->TransferDirection value + * - Oversampling: USART_CR1_OVER8 bit according to USART_InitStruct->OverSampling value. + */ + MODIFY_REG(USARTx->CR1, + (USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | + USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8), + (USART_InitStruct->DataWidth | USART_InitStruct->Parity | + USART_InitStruct->TransferDirection | USART_InitStruct->OverSampling)); + + /*---------------------------- USART CR2 Configuration --------------------- + * Configure USARTx CR2 (Stop bits) with parameters: + * - Stop Bits: USART_CR2_STOP bits according to USART_InitStruct->StopBits value. + * - CLKEN, CPOL, CPHA and LBCL bits are to be configured using LL_USART_ClockInit(). + */ + LL_USART_SetStopBitsLength(USARTx, USART_InitStruct->StopBits); + + /*---------------------------- USART CR3 Configuration --------------------- + * Configure USARTx CR3 (Hardware Flow Control) with parameters: + * - HardwareFlowControl: USART_CR3_RTSE, USART_CR3_CTSE bits according to + * USART_InitStruct->HardwareFlowControl value. + */ + LL_USART_SetHWFlowCtrl(USARTx, USART_InitStruct->HardwareFlowControl); + + /*---------------------------- USART BRR Configuration --------------------- + * Retrieve Clock frequency used for USART Peripheral + */ + if (USARTx == USART1) + { + periphclk = LL_RCC_GetUSARTClockFreq(LL_RCC_USART1_CLKSOURCE); + } + else if (USARTx == USART2) + { + periphclk = LL_RCC_GetUSARTClockFreq(LL_RCC_USART2_CLKSOURCE); + } + else if (USARTx == USART3) + { + periphclk = LL_RCC_GetUSARTClockFreq(LL_RCC_USART3_CLKSOURCE); + } + else if (USARTx == UART4) + { + periphclk = LL_RCC_GetUARTClockFreq(LL_RCC_UART4_CLKSOURCE); + } + else if (USARTx == UART5) + { + periphclk = LL_RCC_GetUARTClockFreq(LL_RCC_UART5_CLKSOURCE); + } + else if (USARTx == USART6) + { + periphclk = LL_RCC_GetUSARTClockFreq(LL_RCC_USART6_CLKSOURCE); + } + else if (USARTx == UART7) + { + periphclk = LL_RCC_GetUARTClockFreq(LL_RCC_UART7_CLKSOURCE); + } + else if (USARTx == UART8) + { + periphclk = LL_RCC_GetUARTClockFreq(LL_RCC_UART8_CLKSOURCE); + } + else + { + /* Nothing to do, as error code is already assigned to ERROR value */ + } + + /* Configure the USART Baud Rate : + - valid baud rate value (different from 0) is required + - Peripheral clock as returned by RCC service, should be valid (different from 0). + */ + if ((periphclk != LL_RCC_PERIPH_FREQUENCY_NO) + && (USART_InitStruct->BaudRate != 0U)) + { + status = SUCCESS; + LL_USART_SetBaudRate(USARTx, + periphclk, + USART_InitStruct->OverSampling, + USART_InitStruct->BaudRate); + + /* Check BRR is greater than or equal to 16d */ + assert_param(IS_LL_USART_BRR_MIN(USARTx->BRR)); + } + } + /* Endif (=> USART not in Disabled state => return ERROR) */ + + return (status); +} + +/** + * @brief Set each @ref LL_USART_InitTypeDef field to default value. + * @param USART_InitStruct pointer to a @ref LL_USART_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ + +void LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct) +{ + /* Set USART_InitStruct fields to default values */ + USART_InitStruct->BaudRate = USART_DEFAULT_BAUDRATE; + USART_InitStruct->DataWidth = LL_USART_DATAWIDTH_8B; + USART_InitStruct->StopBits = LL_USART_STOPBITS_1; + USART_InitStruct->Parity = LL_USART_PARITY_NONE ; + USART_InitStruct->TransferDirection = LL_USART_DIRECTION_TX_RX; + USART_InitStruct->HardwareFlowControl = LL_USART_HWCONTROL_NONE; + USART_InitStruct->OverSampling = LL_USART_OVERSAMPLING_16; +} + +/** + * @brief Initialize USART Clock related settings according to the + * specified parameters in the USART_ClockInitStruct. + * @note As some bits in USART configuration registers can only be written when + * the USART is disabled (USART_CR1_UE bit =0), USART Peripheral should be in disabled state prior calling + * this function. Otherwise, ERROR result will be returned. + * @param USARTx USART Instance + * @param USART_ClockInitStruct pointer to a @ref LL_USART_ClockInitTypeDef structure + * that contains the Clock configuration information for the specified USART peripheral. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: USART registers related to Clock settings are initialized according + * to USART_ClockInitStruct content + * - ERROR: Problem occurred during USART Registers initialization + */ +ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, const LL_USART_ClockInitTypeDef *USART_ClockInitStruct) +{ + ErrorStatus status = SUCCESS; + + /* Check USART Instance and Clock signal output parameters */ + assert_param(IS_UART_INSTANCE(USARTx)); + assert_param(IS_LL_USART_CLOCKOUTPUT(USART_ClockInitStruct->ClockOutput)); + + /* USART needs to be in disabled state, in order to be able to configure some bits in + CRx registers */ + if (LL_USART_IsEnabled(USARTx) == 0U) + { + /* If USART Clock signal is disabled */ + if (USART_ClockInitStruct->ClockOutput == LL_USART_CLOCK_DISABLE) + { + /* Deactivate Clock signal delivery : + * - Disable Clock Output: USART_CR2_CLKEN cleared + */ + LL_USART_DisableSCLKOutput(USARTx); + } + else + { + /* Ensure USART instance is USART capable */ + assert_param(IS_USART_INSTANCE(USARTx)); + + /* Check clock related parameters */ + assert_param(IS_LL_USART_CLOCKPOLARITY(USART_ClockInitStruct->ClockPolarity)); + assert_param(IS_LL_USART_CLOCKPHASE(USART_ClockInitStruct->ClockPhase)); + assert_param(IS_LL_USART_LASTBITCLKOUTPUT(USART_ClockInitStruct->LastBitClockPulse)); + + /*---------------------------- USART CR2 Configuration ----------------------- + * Configure USARTx CR2 (Clock signal related bits) with parameters: + * - Enable Clock Output: USART_CR2_CLKEN set + * - Clock Polarity: USART_CR2_CPOL bit according to USART_ClockInitStruct->ClockPolarity value + * - Clock Phase: USART_CR2_CPHA bit according to USART_ClockInitStruct->ClockPhase value + * - Last Bit Clock Pulse Output: USART_CR2_LBCL bit according to USART_ClockInitStruct->LastBitClockPulse value. + */ + MODIFY_REG(USARTx->CR2, + USART_CR2_CLKEN | USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, + USART_CR2_CLKEN | USART_ClockInitStruct->ClockPolarity | + USART_ClockInitStruct->ClockPhase | USART_ClockInitStruct->LastBitClockPulse); + } + } + /* Else (USART not in Disabled state => return ERROR */ + else + { + status = ERROR; + } + + return (status); +} + +/** + * @brief Set each field of a @ref LL_USART_ClockInitTypeDef type structure to default value. + * @param USART_ClockInitStruct pointer to a @ref LL_USART_ClockInitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ +void LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct) +{ + /* Set LL_USART_ClockInitStruct fields with default values */ + USART_ClockInitStruct->ClockOutput = LL_USART_CLOCK_DISABLE; + USART_ClockInitStruct->ClockPolarity = LL_USART_POLARITY_LOW; /* Not relevant when ClockOutput = + LL_USART_CLOCK_DISABLE */ + USART_ClockInitStruct->ClockPhase = LL_USART_PHASE_1EDGE; /* Not relevant when ClockOutput = + LL_USART_CLOCK_DISABLE */ + USART_ClockInitStruct->LastBitClockPulse = LL_USART_LASTCLKPULSE_NO_OUTPUT; /* Not relevant when ClockOutput = + LL_USART_CLOCK_DISABLE */ +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* USART1 || USART2 || USART3 || USART6 || UART4 || UART5 || UART7 || UART8 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + + diff --git a/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c new file mode 100644 index 0000000..263566e --- /dev/null +++ b/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c @@ -0,0 +1,752 @@ +/** + ****************************************************************************** + * @file stm32f7xx_ll_utils.c + * @author MCD Application Team + * @brief UTILS LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_ll_utils.h" +#include "stm32f7xx_ll_rcc.h" +#include "stm32f7xx_ll_system.h" +#include "stm32f7xx_ll_pwr.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +/** @addtogroup STM32F7xx_LL_Driver + * @{ + */ + +/** @addtogroup UTILS_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @addtogroup UTILS_LL_Private_Constants + * @{ + */ +#define UTILS_MAX_FREQUENCY_SCALE1 216000000U /*!< Maximum frequency for system clock at power scale1, in Hz */ +#define UTILS_MAX_FREQUENCY_SCALE2 180000000U /*!< Maximum frequency for system clock at power scale2, in Hz */ +#define UTILS_MAX_FREQUENCY_SCALE3 144000000U /*!< Maximum frequency for system clock at power scale3, in Hz */ + +/* Defines used for PLL range */ +#define UTILS_PLLVCO_INPUT_MIN 950000U /*!< Frequency min for PLLVCO input, in Hz */ +#define UTILS_PLLVCO_INPUT_MAX 2100000U /*!< Frequency max for PLLVCO input, in Hz */ +#define UTILS_PLLVCO_OUTPUT_MIN 100000000U /*!< Frequency min for PLLVCO output, in Hz */ +#define UTILS_PLLVCO_OUTPUT_MAX 432000000U /*!< Frequency max for PLLVCO output, in Hz */ + +/* Defines used for HSE range */ +#define UTILS_HSE_FREQUENCY_MIN 4000000U /*!< Frequency min for HSE frequency, in Hz */ +#define UTILS_HSE_FREQUENCY_MAX 26000000U /*!< Frequency max for HSE frequency, in Hz */ + +/* Defines used for FLASH latency according to HCLK Frequency */ +#define UTILS_SCALE1_LATENCY1_FREQ 30000000U /*!< HCLK frequency to set FLASH latency 1 in power scale 1 */ +#define UTILS_SCALE1_LATENCY2_FREQ 60000000U /*!< HCLK frequency to set FLASH latency 2 in power scale 1 */ +#define UTILS_SCALE1_LATENCY3_FREQ 90000000U /*!< HCLK frequency to set FLASH latency 3 in power scale 1 */ +#define UTILS_SCALE1_LATENCY4_FREQ 120000000U /*!< HCLK frequency to set FLASH latency 4 in power scale 1 */ +#define UTILS_SCALE1_LATENCY5_FREQ 150000000U /*!< HCLK frequency to set FLASH latency 5 in power scale 1 */ +#define UTILS_SCALE1_LATENCY6_FREQ 180000000U /*!< HCLK frequency to set FLASH latency 6 in power scale 1 with over-drive mode */ +#define UTILS_SCALE1_LATENCY7_FREQ 210000000U /*!< HCLK frequency to set FLASH latency 7 in power scale 1 with over-drive mode */ +#define UTILS_SCALE2_LATENCY1_FREQ 30000000U /*!< HCLK frequency to set FLASH latency 1 in power scale 2 */ +#define UTILS_SCALE2_LATENCY2_FREQ 60000000U /*!< HCLK frequency to set FLASH latency 2 in power scale 2 */ +#define UTILS_SCALE2_LATENCY3_FREQ 90000000U /*!< HCLK frequency to set FLASH latency 3 in power scale 2 */ +#define UTILS_SCALE2_LATENCY4_FREQ 120000000U /*!< HCLK frequency to set FLASH latency 4 in power scale 2 */ +#define UTILS_SCALE2_LATENCY5_FREQ 150000000U /*!< HCLK frequency to set FLASH latency 5 in power scale 2 */ +#define UTILS_SCALE3_LATENCY1_FREQ 30000000U /*!< HCLK frequency to set FLASH latency 1 in power scale 3 */ +#define UTILS_SCALE3_LATENCY2_FREQ 60000000U /*!< HCLK frequency to set FLASH latency 2 in power scale 3 */ +#define UTILS_SCALE3_LATENCY3_FREQ 90000000U /*!< HCLK frequency to set FLASH latency 3 in power scale 3 */ +#define UTILS_SCALE3_LATENCY4_FREQ 120000000U /*!< HCLK frequency to set FLASH latency 4 in power scale 3 */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup UTILS_LL_Private_Macros + * @{ + */ +#define IS_LL_UTILS_SYSCLK_DIV(__VALUE__) (((__VALUE__) == LL_RCC_SYSCLK_DIV_1) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_2) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_4) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_8) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_16) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_64) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_128) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_256) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_512)) + +#define IS_LL_UTILS_APB1_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB1_DIV_1) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_2) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_4) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_8) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_16)) + +#define IS_LL_UTILS_APB2_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB2_DIV_1) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_2) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_4) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_8) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_16)) + +#define IS_LL_UTILS_PLLM_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLLM_DIV_2) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_3) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_4) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_5) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_6) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_7) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_8) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_9) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_10) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_11) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_12) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_13) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_14) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_15) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_16) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_17) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_18) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_19) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_20) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_21) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_22) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_23) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_24) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_25) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_26) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_27) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_28) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_29) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_30) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_31) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_32) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_33) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_34) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_35) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_36) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_37) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_38) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_39) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_40) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_41) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_42) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_43) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_44) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_45) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_46) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_47) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_48) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_49) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_50) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_51) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_52) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_53) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_54) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_55) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_56) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_57) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_58) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_59) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_60) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_61) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_62) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_63)) + +#define IS_LL_UTILS_PLLN_VALUE(__VALUE__) ((50 <= (__VALUE__)) && ((__VALUE__) <= 432)) + +#define IS_LL_UTILS_PLLP_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLLP_DIV_2) \ + || ((__VALUE__) == LL_RCC_PLLP_DIV_4) \ + || ((__VALUE__) == LL_RCC_PLLP_DIV_6) \ + || ((__VALUE__) == LL_RCC_PLLP_DIV_8)) + +#define IS_LL_UTILS_PLLVCO_INPUT(__VALUE__) ((UTILS_PLLVCO_INPUT_MIN <= (__VALUE__)) && ((__VALUE__) <= UTILS_PLLVCO_INPUT_MAX)) + +#define IS_LL_UTILS_PLLVCO_OUTPUT(__VALUE__) ((UTILS_PLLVCO_OUTPUT_MIN <= (__VALUE__)) && ((__VALUE__) <= UTILS_PLLVCO_OUTPUT_MAX)) + +#define IS_LL_UTILS_PLL_FREQUENCY(__VALUE__) ((LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE1) ? ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE1) : \ + (LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE2) ? ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE2) : \ + ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE3)) + +#define IS_LL_UTILS_HSE_BYPASS(__STATE__) (((__STATE__) == LL_UTILS_HSEBYPASS_ON) \ + || ((__STATE__) == LL_UTILS_HSEBYPASS_OFF)) + +#define IS_LL_UTILS_HSE_FREQUENCY(__FREQUENCY__) (((__FREQUENCY__) >= UTILS_HSE_FREQUENCY_MIN) && ((__FREQUENCY__) <= UTILS_HSE_FREQUENCY_MAX)) +/** + * @} + */ +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Functions UTILS Private functions + * @{ + */ +static uint32_t UTILS_GetPLLOutputFrequency(uint32_t PLL_InputFrequency, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct); +static ErrorStatus UTILS_EnablePLLAndSwitchSystem(uint32_t SYSCLK_Frequency, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +static ErrorStatus UTILS_PLL_IsBusy(void); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup UTILS_LL_Exported_Functions + * @{ + */ + +/** @addtogroup UTILS_LL_EF_DELAY + * @{ + */ + +/** + * @brief This function configures the Cortex-M SysTick source to have 1ms time base. + * @note When a RTOS is used, it is recommended to avoid changing the Systick + * configuration by calling this function, for a delay use rather osDelay RTOS service. + * @param HCLKFrequency HCLK frequency in Hz + * @note HCLK frequency can be calculated thanks to RCC helper macro or function @ref LL_RCC_GetSystemClocksFreq + * @retval None + */ +void LL_Init1msTick(uint32_t HCLKFrequency) +{ + /* Use frequency provided in argument */ + LL_InitTick(HCLKFrequency, 1000U); +} + +/** + * @brief This function provides accurate delay (in milliseconds) based + * on SysTick counter flag + * @note When a RTOS is used, it is recommended to avoid using blocking delay + * and use rather osDelay service. + * @note To respect 1ms timebase, user should call @ref LL_Init1msTick function which + * will configure Systick to 1ms + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +void LL_mDelay(uint32_t Delay) +{ + __IO uint32_t tmp = SysTick->CTRL; /* Clear the COUNTFLAG first */ + /* Add this code to indicate that local variable is not used */ + ((void)tmp); + + /* Add a period to guaranty minimum wait */ + if(Delay < LL_MAX_DELAY) + { + Delay++; + } + + while (Delay) + { + if((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0U) + { + Delay--; + } + } +} + +/** + * @} + */ + +/** @addtogroup UTILS_EF_SYSTEM + * @brief System Configuration functions + * + @verbatim + =============================================================================== + ##### System Configuration functions ##### + =============================================================================== + [..] + System, AHB and APB buses clocks configuration + + (+) The maximum frequency of the SYSCLK, HCLK, PCLK1 and PCLK2 is 216000000 Hz. + @endverbatim + @internal + Depending on the device voltage range, the maximum frequency should be + adapted accordingly: + (++) +------------------------------------------------------------------------------------------------+ + (++) | Wait states | HCLK clock frequency (MHz) | + (++) | |-------------------------------------------------------------------------------| + (++) | (Latency) | voltage range | voltage range | voltage range | voltage range | + (++) | | 2.7V - 3.6V | 2.4V - 2.7V | 2.1V - 2.7V | 1.8V - 2.1V | + (++) |----------------|-------------------|-------------------|-------------------|-------------------| + (++) |0WS(1CPU cycle) | 0 < HCLK <= 30 | 0 < HCLK <= 24 | 0 < HCLK <= 22 | 0 < HCLK <= 20 | + (++) |----------------|-------------------|-------------------|-------------------|-------------------| + (++) |1WS(2CPU cycle) | 30 < HCLK <= 60 | 24 < HCLK <= 48 | 22 < HCLK <= 44 | 20 < HCLK <= 44 | + (++) |----------------|-------------------|-------------------|-------------------|-------------------| + (++) |2WS(3CPU cycle) | 60 < HCLK <= 90 | 48 < HCLK <= 72 | 44 < HCLK <= 66 | 40 < HCLK <= 60 | + (++) |----------------|-------------------|-------------------|-------------------|-------------------| + (++) |3WS(4CPU cycle) | 90 < HCLK <= 120 | 72 < HCLK <= 96 | 66 < HCLK <= 88 | 60 < HCLK <= 80 | + (++) |----------------|-------------------|-------------------|-------------------|-------------------| + (++) |4WS(5CPU cycle) | 120 < HCLK <= 150 | 96 < HCLK <= 120 | 88 < HCLK <= 110 | 80 < HCLK <= 100 | + (++) |----------------|-------------------|-------------------|-------------------|-------------------| + (++) |5WS(6CPU cycle) | 150 < HCLK <= 180 | 120 < HCLK <= 144 | 110 < HCLK <= 132 | 100 < HCLK <= 120 | + (++) |----------------|-------------------|-------------------|-------------------|-------------------| + (++) |6WS(7CPU cycle) | 180 < HCLK <= 210 | 144 < HCLK <= 168 | 132 < HCLK <= 154 | 120 < HCLK <= 140 | + (++) |----------------|-------------------|-------------------|-------------------|-------------------| + (++) |7WS(8CPU cycle) | 210 < HCLK <= 216 | 168 < HCLK <= 192 | 154 < HCLK <= 176 | 140 < HCLK <= 160 | + (++) |----------------|-------------------|-------------------|-------------------|-------------------| + (++) |8WS(9CPU cycle) | -- | 192 < HCLK <= 216 | 176 < HCLK <= 198 | 160 < HCLK <= 180 | + (++) |----------------|-------------------|-------------------|-------------------|-------------------| + (++) |9WS(10CPU cycle)| -- | -- | 198 < HCLK <= 216 | -- | + (++) +------------------------------------------------------------------------------------------------+ + + @endinternal + * @{ + */ + +/** + * @brief This function sets directly SystemCoreClock CMSIS variable. + * @note Variable can be calculated also through SystemCoreClockUpdate function. + * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro) + * @retval None + */ +void LL_SetSystemCoreClock(uint32_t HCLKFrequency) +{ + /* HCLK clock frequency */ + SystemCoreClock = HCLKFrequency; +} + +/** + * @brief Update number of Flash wait states in line with new frequency and current + voltage range. + * @note This Function support ONLY devices with supply voltage (voltage range) between 2.7V and 3.6V + * @param HCLK_Frequency HCLK frequency + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Latency has been modified + * - ERROR: Latency cannot be modified + */ +ErrorStatus LL_SetFlashLatency(uint32_t HCLK_Frequency) +{ + uint32_t timeout; + uint32_t getlatency; + uint32_t latency = LL_FLASH_LATENCY_0; /* default value 0WS */ + ErrorStatus status = SUCCESS; + + /* Frequency cannot be equal to 0 */ + if(HCLK_Frequency == 0U) + { + status = ERROR; + } + else + { + if(LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE1) + { + if(LL_PWR_IsEnabledOverDriveMode() != 0U) + { + if(HCLK_Frequency > UTILS_SCALE1_LATENCY7_FREQ) + { + /* 210 < HCLK <= 216 => 7WS (8 CPU cycles) */ + latency = LL_FLASH_LATENCY_7; + } + else /* (HCLK_Frequency > UTILS_SCALE1_LATENCY6_FREQ) */ + { + /* 180 < HCLK <= 210 => 6WS (7 CPU cycles) */ + latency = LL_FLASH_LATENCY_6; + } + } + if((HCLK_Frequency > UTILS_SCALE1_LATENCY5_FREQ) && (latency == LL_FLASH_LATENCY_0)) + { + /* 150 < HCLK <= 180 => 5WS (6 CPU cycles) */ + latency = LL_FLASH_LATENCY_5; + } + else if((HCLK_Frequency > UTILS_SCALE1_LATENCY4_FREQ) && (latency == LL_FLASH_LATENCY_0)) + { + /* 120 < HCLK <= 150 => 4WS (5 CPU cycles) */ + latency = LL_FLASH_LATENCY_4; + } + else if((HCLK_Frequency > UTILS_SCALE1_LATENCY3_FREQ) && (latency == LL_FLASH_LATENCY_0)) + { + /* 90 < HCLK <= 120 => 3WS (4 CPU cycles) */ + latency = LL_FLASH_LATENCY_3; + } + else if((HCLK_Frequency > UTILS_SCALE1_LATENCY2_FREQ) && (latency == LL_FLASH_LATENCY_0)) + { + /* 60 < HCLK <= 90 => 2WS (3 CPU cycles) */ + latency = LL_FLASH_LATENCY_2; + } + else + { + if((HCLK_Frequency > UTILS_SCALE1_LATENCY1_FREQ) && (latency == LL_FLASH_LATENCY_0)) + { + /* 30 < HCLK <= 60 => 1WS (2 CPU cycles) */ + latency = LL_FLASH_LATENCY_1; + } + /* else HCLK_Frequency < 30MHz default LL_FLASH_LATENCY_0 0WS */ + } + } + else if(LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE2) + { + if(HCLK_Frequency > UTILS_SCALE2_LATENCY5_FREQ) + { + /* 150 < HCLK <= 168 OR 150 < HCLK <= 180 (when OverDrive mode is enable) => 5WS (6 CPU cycles) */ + latency = LL_FLASH_LATENCY_5; + } + else if(HCLK_Frequency > UTILS_SCALE2_LATENCY4_FREQ) + { + /* 120 < HCLK <= 150 => 4WS (5 CPU cycles) */ + latency = LL_FLASH_LATENCY_4; + } + else if(HCLK_Frequency > UTILS_SCALE2_LATENCY3_FREQ) + { + /* 90 < HCLK <= 120 => 3WS (4 CPU cycles) */ + latency = LL_FLASH_LATENCY_3; + } + else if(HCLK_Frequency > UTILS_SCALE2_LATENCY2_FREQ) + { + /* 60 < HCLK <= 90 => 2WS (3 CPU cycles) */ + latency = LL_FLASH_LATENCY_2; + } + else + { + if(HCLK_Frequency > UTILS_SCALE2_LATENCY1_FREQ) + { + /* 30 < HCLK <= 60 => 1WS (2 CPU cycles) */ + latency = LL_FLASH_LATENCY_1; + } + /* else HCLK_Frequency < 24MHz default LL_FLASH_LATENCY_0 0WS */ + } + } + else /* Scale 3 */ + { + if(HCLK_Frequency > UTILS_SCALE3_LATENCY4_FREQ) + { + /* 120 < HCLK <= 144 => 4WS (5 CPU cycles) */ + latency = LL_FLASH_LATENCY_4; + } + else if(HCLK_Frequency > UTILS_SCALE3_LATENCY3_FREQ) + { + /* 90 < HCLK <= 120 => 3WS (4 CPU cycles) */ + latency = LL_FLASH_LATENCY_3; + } + else if(HCLK_Frequency > UTILS_SCALE3_LATENCY2_FREQ) + { + /* 60 < HCLK <= 90 => 2WS (3 CPU cycles) */ + latency = LL_FLASH_LATENCY_2; + } + else + { + if(HCLK_Frequency > UTILS_SCALE3_LATENCY1_FREQ) + { + /* 30 < HCLK <= 60 => 1WS (2 CPU cycles) */ + latency = LL_FLASH_LATENCY_1; + } + /* else HCLK_Frequency < 22MHz default LL_FLASH_LATENCY_0 0WS */ + } + } + + if (status != ERROR) + { + LL_FLASH_SetLatency(latency); + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + timeout = 2; + do + { + /* Wait for Flash latency to be updated */ + getlatency = LL_FLASH_GetLatency(); + timeout--; + } while ((getlatency != latency) && (timeout > 0)); + + if(getlatency != latency) + { + status = ERROR; + } + else + { + status = SUCCESS; + } + } + } + return status; +} + +/** + * @brief This function configures system clock at maximum frequency with HSI as clock source of the PLL + * @note The application need to ensure that PLL is disabled. + * @note Function is based on the following formula: + * - PLL output frequency = (((HSI frequency / PLLM) * PLLN) / PLLP) + * - PLLM: ensure that the VCO input frequency ranges from 0.95 to 2.1 MHz (PLLVCO_input = HSI frequency / PLLM) + * - PLLN: ensure that the VCO output frequency is between 100 and 432 MHz (PLLVCO_output = PLLVCO_input * PLLN) + * - PLLP: ensure that max frequency at 216000000 Hz is reach (PLLVCO_output / PLLP) + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Max frequency configuration done + * - ERROR: Max frequency configuration not done + */ +ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status = SUCCESS; + uint32_t pllfreq = 0U; + + /* Check if one of the PLL is enabled */ + if(UTILS_PLL_IsBusy() == SUCCESS) + { + /* Calculate the new PLL output frequency */ + pllfreq = UTILS_GetPLLOutputFrequency(HSI_VALUE, UTILS_PLLInitStruct); + + /* Enable HSI if not enabled */ + if(LL_RCC_HSI_IsReady() != 1U) + { + LL_RCC_HSI_Enable(); + while (LL_RCC_HSI_IsReady() != 1U) + { + /* Wait for HSI ready */ + } + } + + /* Configure PLL */ + LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSI, UTILS_PLLInitStruct->PLLM, UTILS_PLLInitStruct->PLLN, + UTILS_PLLInitStruct->PLLP); + + /* Enable PLL and switch system clock to PLL */ + status = UTILS_EnablePLLAndSwitchSystem(pllfreq, UTILS_ClkInitStruct); + } + else + { + /* Current PLL configuration cannot be modified */ + status = ERROR; + } + + return status; +} + +/** + * @brief This function configures system clock with HSE as clock source of the PLL + * @note The application need to ensure that PLL is disabled. + * @note Function is based on the following formula: + * - PLL output frequency = (((HSE frequency / PLLM) * PLLN) / PLLP) + * - PLLM: ensure that the VCO input frequency ranges from 0.95 to 2.10 MHz (PLLVCO_input = HSE frequency / PLLM) + * - PLLN: ensure that the VCO output frequency is between 100 and 432 MHz (PLLVCO_output = PLLVCO_input * PLLN) + * - PLLP: ensure that max frequency at 216000000 Hz is reached (PLLVCO_output / PLLP) + * @param HSEFrequency Value between Min_Data = 4000000 and Max_Data = 26000000 + * @param HSEBypass This parameter can be one of the following values: + * @arg @ref LL_UTILS_HSEBYPASS_ON + * @arg @ref LL_UTILS_HSEBYPASS_OFF + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Max frequency configuration done + * - ERROR: Max frequency configuration not done + */ +ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status = SUCCESS; + uint32_t pllfreq = 0U; + + /* Check the parameters */ + assert_param(IS_LL_UTILS_HSE_FREQUENCY(HSEFrequency)); + assert_param(IS_LL_UTILS_HSE_BYPASS(HSEBypass)); + + /* Check if one of the PLL is enabled */ + if(UTILS_PLL_IsBusy() == SUCCESS) + { + /* Calculate the new PLL output frequency */ + pllfreq = UTILS_GetPLLOutputFrequency(HSEFrequency, UTILS_PLLInitStruct); + + /* Enable HSE if not enabled */ + if(LL_RCC_HSE_IsReady() != 1U) + { + /* Check if need to enable HSE bypass feature or not */ + if(HSEBypass == LL_UTILS_HSEBYPASS_ON) + { + LL_RCC_HSE_EnableBypass(); + } + else + { + LL_RCC_HSE_DisableBypass(); + } + + /* Enable HSE */ + LL_RCC_HSE_Enable(); + while (LL_RCC_HSE_IsReady() != 1U) + { + /* Wait for HSE ready */ + } + } + + /* Configure PLL */ + LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, UTILS_PLLInitStruct->PLLM, UTILS_PLLInitStruct->PLLN, + UTILS_PLLInitStruct->PLLP); + + /* Enable PLL and switch system clock to PLL */ + status = UTILS_EnablePLLAndSwitchSystem(pllfreq, UTILS_ClkInitStruct); + } + else + { + /* Current PLL configuration cannot be modified */ + status = ERROR; + } + + return status; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup UTILS_LL_Private_Functions + * @{ + */ +/** + * @brief Function to check that PLL can be modified + * @param PLL_InputFrequency PLL input frequency (in Hz) + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @retval PLL output frequency (in Hz) + */ +static uint32_t UTILS_GetPLLOutputFrequency(uint32_t PLL_InputFrequency, LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct) +{ + uint32_t pllfreq = 0U; + + /* Check the parameters */ + assert_param(IS_LL_UTILS_PLLM_VALUE(UTILS_PLLInitStruct->PLLM)); + assert_param(IS_LL_UTILS_PLLN_VALUE(UTILS_PLLInitStruct->PLLN)); + assert_param(IS_LL_UTILS_PLLP_VALUE(UTILS_PLLInitStruct->PLLP)); + + /* Check different PLL parameters according to RM */ + /* - PLLM: ensure that the VCO input frequency ranges from 0.95 to 2.1 MHz. */ + pllfreq = PLL_InputFrequency / (UTILS_PLLInitStruct->PLLM & (RCC_PLLCFGR_PLLM >> RCC_PLLCFGR_PLLM_Pos)); + assert_param(IS_LL_UTILS_PLLVCO_INPUT(pllfreq)); + + /* - PLLN: ensure that the VCO output frequency is between 100 and 432 MHz.*/ + pllfreq = pllfreq * (UTILS_PLLInitStruct->PLLN & (RCC_PLLCFGR_PLLN >> RCC_PLLCFGR_PLLN_Pos)); + assert_param(IS_LL_UTILS_PLLVCO_OUTPUT(pllfreq)); + + /* - PLLP: ensure that max frequency at 216000000 Hz is reached */ + pllfreq = pllfreq / (((UTILS_PLLInitStruct->PLLP >> RCC_PLLCFGR_PLLP_Pos) + 1) * 2); + assert_param(IS_LL_UTILS_PLL_FREQUENCY(pllfreq)); + + return pllfreq; +} + +/** + * @brief Function to check that PLL can be modified + * @retval An ErrorStatus enumeration value: + * - SUCCESS: PLL modification can be done + * - ERROR: PLL is busy + */ +static ErrorStatus UTILS_PLL_IsBusy(void) +{ + ErrorStatus status = SUCCESS; + + /* Check if PLL is busy*/ + if(LL_RCC_PLL_IsReady() != 0U) + { + /* PLL configuration cannot be modified */ + status = ERROR; + } + + /* Check if PLLSAI is busy*/ + if(LL_RCC_PLLSAI_IsReady() != 0U) + { + /* PLLSAI1 configuration cannot be modified */ + status = ERROR; + } + /* Check if PLLI2S is busy*/ + if(LL_RCC_PLLI2S_IsReady() != 0U) + { + /* PLLI2S configuration cannot be modified */ + status = ERROR; + } + return status; +} + +/** + * @brief Function to enable PLL and switch system clock to PLL + * @param SYSCLK_Frequency SYSCLK frequency + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: No problem to switch system to PLL + * - ERROR: Problem to switch system to PLL + */ +static ErrorStatus UTILS_EnablePLLAndSwitchSystem(uint32_t SYSCLK_Frequency, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status = SUCCESS; + uint32_t hclk_frequency = 0U; + + assert_param(IS_LL_UTILS_SYSCLK_DIV(UTILS_ClkInitStruct->AHBCLKDivider)); + assert_param(IS_LL_UTILS_APB1_DIV(UTILS_ClkInitStruct->APB1CLKDivider)); + assert_param(IS_LL_UTILS_APB2_DIV(UTILS_ClkInitStruct->APB2CLKDivider)); + + /* Calculate HCLK frequency */ + hclk_frequency = __LL_RCC_CALC_HCLK_FREQ(SYSCLK_Frequency, UTILS_ClkInitStruct->AHBCLKDivider); + + /* Increasing the number of wait states because of higher CPU frequency */ + if(SystemCoreClock < hclk_frequency) + { + /* Set FLASH latency to highest latency */ + status = LL_SetFlashLatency(hclk_frequency); + } + + /* Update system clock configuration */ + if(status == SUCCESS) + { + /* Enable PLL */ + LL_RCC_PLL_Enable(); + while (LL_RCC_PLL_IsReady() != 1U) + { + /* Wait for PLL ready */ + } + + /* Sysclk activation on the main PLL */ + LL_RCC_SetAHBPrescaler(UTILS_ClkInitStruct->AHBCLKDivider); + LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); + while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + { + /* Wait for system clock switch to PLL */ + } + + /* Set APB1 & APB2 prescaler*/ + LL_RCC_SetAPB1Prescaler(UTILS_ClkInitStruct->APB1CLKDivider); + LL_RCC_SetAPB2Prescaler(UTILS_ClkInitStruct->APB2CLKDivider); + } + + /* Decreasing the number of wait states because of lower CPU frequency */ + if(SystemCoreClock > hclk_frequency) + { + /* Set FLASH latency to lowest latency */ + status = LL_SetFlashLatency(hclk_frequency); + } + + /* Update SystemCoreClock variable */ + if(status == SUCCESS) + { + LL_SetSystemCoreClock(hclk_frequency); + } + + return status; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/For_stm32.ioc b/For_stm32.ioc new file mode 100644 index 0000000..7e5e5f0 --- /dev/null +++ b/For_stm32.ioc @@ -0,0 +1,539 @@ +#MicroXplorer Configuration settings - do not modify +ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_9 +ADC1.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_8 +ADC1.Channel-2\#ChannelRegularConversion=ADC_CHANNEL_2 +ADC1.Channel-3\#ChannelRegularConversion=ADC_CHANNEL_10 +ADC1.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_11 +ADC1.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV8 +ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master,ClockPrescaler,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,NbrOfConversion,Rank-2\#ChannelRegularConversion,Channel-2\#ChannelRegularConversion,SamplingTime-2\#ChannelRegularConversion,Rank-3\#ChannelRegularConversion,Channel-3\#ChannelRegularConversion,SamplingTime-3\#ChannelRegularConversion,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion +ADC1.NbrOfConversion=5 +ADC1.NbrOfConversionFlag=1 +ADC1.Rank-0\#ChannelRegularConversion=1 +ADC1.Rank-1\#ChannelRegularConversion=2 +ADC1.Rank-2\#ChannelRegularConversion=3 +ADC1.Rank-3\#ChannelRegularConversion=4 +ADC1.Rank-4\#ChannelRegularConversion=5 +ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_480CYCLES +ADC1.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_480CYCLES +ADC1.SamplingTime-2\#ChannelRegularConversion=ADC_SAMPLETIME_480CYCLES +ADC1.SamplingTime-3\#ChannelRegularConversion=ADC_SAMPLETIME_480CYCLES +ADC1.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_480CYCLES +ADC1.master=1 +ADC3.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_15 +ADC3.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV8 +ADC3.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,ClockPrescaler,NbrOfConversion +ADC3.NbrOfConversion=1 +ADC3.NbrOfConversionFlag=1 +ADC3.Rank-0\#ChannelRegularConversion=1 +ADC3.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_480CYCLES +CAD.formats= +CAD.pinconfig= +CAD.provider= +Dma.Request0=USART1_TX +Dma.RequestsNb=1 +Dma.USART1_TX.0.Direction=DMA_MEMORY_TO_PERIPH +Dma.USART1_TX.0.FIFOMode=DMA_FIFOMODE_DISABLE +Dma.USART1_TX.0.Instance=DMA2_Stream7 +Dma.USART1_TX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE +Dma.USART1_TX.0.MemInc=DMA_MINC_ENABLE +Dma.USART1_TX.0.Mode=DMA_NORMAL +Dma.USART1_TX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE +Dma.USART1_TX.0.PeriphInc=DMA_PINC_DISABLE +Dma.USART1_TX.0.Priority=DMA_PRIORITY_VERY_HIGH +Dma.USART1_TX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode +FATFS.BSP.number=1 +FATFS.IPParameters=_MAX_SS +FATFS._MAX_SS=4096 +FATFS0.BSP.STBoard=false +FATFS0.BSP.api=Unknown +FATFS0.BSP.component= +FATFS0.BSP.condition= +FATFS0.BSP.instance=PD0 +FATFS0.BSP.ip=GPIO +FATFS0.BSP.mode=Input +FATFS0.BSP.name=Detect_SDIO +FATFS0.BSP.semaphore= +FATFS0.BSP.solution=PD0 +File.Version=6 +GPIO.groupedBy=Group By Peripherals +KeepUserPlacement=false +Mcu.CPN=STM32F767ZIT6 +Mcu.Family=STM32F7 +Mcu.IP0=ADC1 +Mcu.IP1=ADC3 +Mcu.IP10=SPI5 +Mcu.IP11=SPI6 +Mcu.IP12=SYS +Mcu.IP13=TIM2 +Mcu.IP14=TIM5 +Mcu.IP15=TIM6 +Mcu.IP16=TIM7 +Mcu.IP17=TIM10 +Mcu.IP18=USART1 +Mcu.IP2=CORTEX_M7 +Mcu.IP3=DMA +Mcu.IP4=FATFS +Mcu.IP5=NVIC +Mcu.IP6=RCC +Mcu.IP7=SDMMC1 +Mcu.IP8=SPI2 +Mcu.IP9=SPI4 +Mcu.IPNb=19 +Mcu.Name=STM32F767ZITx +Mcu.Package=LQFP144 +Mcu.Pin0=PF5 +Mcu.Pin1=PF6 +Mcu.Pin10=PC2 +Mcu.Pin11=PC3 +Mcu.Pin12=PA0/WKUP +Mcu.Pin13=PA1 +Mcu.Pin14=PA2 +Mcu.Pin15=PA3 +Mcu.Pin16=PA4 +Mcu.Pin17=PA5 +Mcu.Pin18=PA6 +Mcu.Pin19=PA7 +Mcu.Pin2=PF7 +Mcu.Pin20=PC4 +Mcu.Pin21=PC5 +Mcu.Pin22=PB0 +Mcu.Pin23=PB1 +Mcu.Pin24=PF11 +Mcu.Pin25=PF12 +Mcu.Pin26=PF13 +Mcu.Pin27=PF14 +Mcu.Pin28=PE10 +Mcu.Pin29=PE11 +Mcu.Pin3=PF8 +Mcu.Pin30=PE12 +Mcu.Pin31=PE13 +Mcu.Pin32=PE14 +Mcu.Pin33=PB10 +Mcu.Pin34=PB11 +Mcu.Pin35=PB12 +Mcu.Pin36=PB13 +Mcu.Pin37=PB14 +Mcu.Pin38=PB15 +Mcu.Pin39=PD8 +Mcu.Pin4=PF9 +Mcu.Pin40=PC8 +Mcu.Pin41=PC9 +Mcu.Pin42=PA8 +Mcu.Pin43=PA9 +Mcu.Pin44=PA10 +Mcu.Pin45=PA13 +Mcu.Pin46=PA14 +Mcu.Pin47=PC10 +Mcu.Pin48=PC11 +Mcu.Pin49=PC12 +Mcu.Pin5=PF10 +Mcu.Pin50=PD0 +Mcu.Pin51=PD1 +Mcu.Pin52=PD2 +Mcu.Pin53=PD7 +Mcu.Pin54=PB3 +Mcu.Pin55=PE1 +Mcu.Pin56=VP_FATFS_VS_SDIO +Mcu.Pin57=VP_SYS_VS_Systick +Mcu.Pin58=VP_TIM2_VS_ClockSourceINT +Mcu.Pin59=VP_TIM5_VS_ClockSourceINT +Mcu.Pin6=PH0/OSC_IN +Mcu.Pin60=VP_TIM6_VS_ClockSourceINT +Mcu.Pin61=VP_TIM7_VS_ClockSourceINT +Mcu.Pin62=VP_TIM10_VS_ClockSourceINT +Mcu.Pin7=PH1/OSC_OUT +Mcu.Pin8=PC0 +Mcu.Pin9=PC1 +Mcu.PinsNb=63 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32F767ZITx +MxCube.Version=6.10.0 +MxDb.Version=DB.6.0.100 +NVIC.ADC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.DMA2_Stream7_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:false +NVIC.TIM1_UP_TIM10_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.TIM5_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.TIM6_DAC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.TIM7_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA0/WKUP.GPIOParameters=GPIO_Label +PA0/WKUP.GPIO_Label=TECEN1 +PA0/WKUP.Locked=true +PA0/WKUP.Signal=GPIO_Output +PA1.GPIOParameters=GPIO_Label +PA1.GPIO_Label=TECEN2 +PA1.Locked=true +PA1.Signal=GPIO_Output +PA10.Locked=true +PA10.Mode=Asynchronous +PA10.Signal=USART1_RX +PA13.Mode=Trace_Asynchronous_SW +PA13.Signal=SYS_JTMS-SWDIO +PA14.Mode=Trace_Asynchronous_SW +PA14.Signal=SYS_JTCK-SWCLK +PA2.Locked=true +PA2.Signal=ADCx_IN2 +PA3.GPIOParameters=GPIO_Label +PA3.GPIO_Label=REF2_ON +PA3.Locked=true +PA3.Signal=GPIO_Output +PA4.GPIOParameters=PinState,GPIO_Label +PA4.GPIO_Label=DAC_TEC2_CS +PA4.Locked=true +PA4.PinState=GPIO_PIN_SET +PA4.Signal=GPIO_Output +PA5.Locked=true +PA5.Mode=TX_Only_Simplex_Unidirect_Master +PA5.Signal=SPI6_SCK +PA6.GPIOParameters=GPIO_Label +PA6.GPIO_Label=DAC_LD2_CS +PA6.Locked=true +PA6.Signal=GPIO_Output +PA7.Locked=true +PA7.Mode=TX_Only_Simplex_Unidirect_Master +PA7.Signal=SPI6_MOSI +PA8.GPIOParameters=GPIO_Label +PA8.GPIO_Label=USB_FLAG +PA8.Locked=true +PA8.Signal=GPIO_Input +PA9.Locked=true +PA9.Mode=Asynchronous +PA9.Signal=USART1_TX +PB0.Locked=true +PB0.Signal=ADCx_IN8 +PB1.Locked=true +PB1.Signal=ADCx_IN9 +PB10.GPIOParameters=GPIO_Label +PB10.GPIO_Label=REF0_EN +PB10.Locked=true +PB10.Signal=GPIO_Output +PB11.GPIOParameters=GPIO_Label +PB11.GPIO_Label=TEC1_PD +PB11.Locked=true +PB11.Signal=GPIO_Output +PB12.GPIOParameters=PinState,GPIO_Label +PB12.GPIO_Label=DAC_TEC1_CS +PB12.Locked=true +PB12.PinState=GPIO_PIN_SET +PB12.Signal=GPIO_Output +PB13.Locked=true +PB13.Mode=TX_Only_Simplex_Unidirect_Master +PB13.Signal=SPI2_SCK +PB14.GPIOParameters=GPIO_Label +PB14.GPIO_Label=DAC_LD1_CS +PB14.Locked=true +PB14.Signal=GPIO_Output +PB15.Locked=true +PB15.Mode=TX_Only_Simplex_Unidirect_Master +PB15.Signal=SPI2_MOSI +PB3.Mode=Trace_Asynchronous_SW +PB3.Signal=SYS_JTDO-SWO +PC0.Locked=true +PC0.Signal=ADCx_IN10 +PC1.Locked=true +PC1.Signal=ADCx_IN11 +PC10.Mode=SD_4_bits_Wide_bus +PC10.Signal=SDMMC1_D2 +PC11.Mode=SD_4_bits_Wide_bus +PC11.Signal=SDMMC1_D3 +PC12.Mode=SD_4_bits_Wide_bus +PC12.Signal=SDMMC1_CK +PC2.GPIOParameters=GPIO_Label +PC2.GPIO_Label=EN_5V2 +PC2.Locked=true +PC2.Signal=GPIO_Output +PC3.GPIOParameters=GPIO_Speed,GPIO_Label +PC3.GPIO_Label=EN_5V1 +PC3.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +PC3.Locked=true +PC3.Signal=GPIO_Output +PC4.GPIOParameters=GPIO_Label +PC4.GPIO_Label=LD2_EN +PC4.Locked=true +PC4.Signal=GPIO_Output +PC5.GPIOParameters=GPIO_Label +PC5.GPIO_Label=TEC2_PD +PC5.Locked=true +PC5.Signal=GPIO_Output +PC8.Mode=SD_4_bits_Wide_bus +PC8.Signal=SDMMC1_D0 +PC9.Mode=SD_4_bits_Wide_bus +PC9.Signal=SDMMC1_D1 +PD0.GPIOParameters=GPIO_Label +PD0.GPIO_Label=SDMMC1_EN +PD0.Locked=true +PD0.Signal=GPIO_Input +PD1.GPIOParameters=GPIO_Label +PD1.GPIO_Label=TEST_01 +PD1.Locked=true +PD1.Signal=GPIO_Output +PD2.Mode=SD_4_bits_Wide_bus +PD2.Signal=SDMMC1_CMD +PD7.Locked=true +PD7.Signal=GPIO_Output +PD8.GPIOParameters=GPIO_Label +PD8.GPIO_Label=LD1_EN +PD8.Locked=true +PD8.Signal=GPIO_Output +PE1.GPIOParameters=GPIO_Label +PE1.GPIO_Label=FPGA_CONF_DONE +PE1.Locked=true +PE1.Signal=GPIO_Input +PE10.GPIOParameters=GPIO_Label +PE10.GPIO_Label=ADC_MPD1_CS +PE10.Locked=true +PE10.Signal=GPIO_Output +PE11.GPIOParameters=GPIO_Label +PE11.GPIO_Label=ADC_ThrLD1_CS +PE11.Locked=true +PE11.Signal=GPIO_Output +PE12.Mode=RX_Only_Simplex_Unidirect_Master +PE12.Signal=SPI4_SCK +PE13.Locked=true +PE13.Mode=RX_Only_Simplex_Unidirect_Master +PE13.Signal=SPI4_MISO +PE14.GPIOParameters=GPIO_Speed,PinState,GPIO_Label +PE14.GPIO_Label=SPI4_CNV +PE14.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH +PE14.Locked=true +PE14.PinState=GPIO_PIN_SET +PE14.Signal=GPIO_Output +PF10.GPIOParameters=GPIO_Label +PF10.GPIO_Label=ADC_ThrLD2_CS +PF10.Locked=true +PF10.Signal=GPIO_Output +PF11.GPIOParameters=GPIO_Label +PF11.GPIO_Label=TEC2_FLAG1 +PF11.Locked=true +PF11.Signal=GPIO_Input +PF12.GPIOParameters=GPIO_Label +PF12.GPIO_Label=TEC2_FLAG2 +PF12.Locked=true +PF12.Signal=GPIO_Input +PF13.GPIOParameters=GPIO_Label +PF13.GPIO_Label=TEC1_FLAG1 +PF13.Locked=true +PF13.Signal=GPIO_Input +PF14.GPIOParameters=GPIO_Label +PF14.GPIO_Label=TEC1_FLAG2 +PF14.Locked=true +PF14.Signal=GPIO_Input +PF5.Locked=true +PF5.Mode=IN15 +PF5.Signal=ADC3_IN15 +PF6.GPIOParameters=GPIO_Label +PF6.GPIO_Label=ADC_MPD2_CS +PF6.Locked=true +PF6.Signal=GPIO_Output +PF7.Locked=true +PF7.Mode=RX_Only_Simplex_Unidirect_Master +PF7.Signal=SPI5_SCK +PF8.Locked=true +PF8.Mode=RX_Only_Simplex_Unidirect_Master +PF8.Signal=SPI5_MISO +PF9.GPIOParameters=GPIO_Label +PF9.GPIO_Label=SPI5_CNV +PF9.Locked=true +PF9.Signal=GPIO_Output +PH0/OSC_IN.Mode=HSE-External-Oscillator +PH0/OSC_IN.Signal=RCC_OSC_IN +PH1/OSC_OUT.Mode=HSE-External-Oscillator +PH1/OSC_OUT.Signal=RCC_OSC_OUT +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F767ZITx +ProjectManager.FirmwarePackage=STM32Cube FW_F7 V1.17.2 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x2000 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=1 +ProjectManager.MainLocation=Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain=STM32CubeIDE +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=For_stm32.ioc +ProjectManager.ProjectName=For_stm32 +ProjectManager.ProjectStructure= +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x4000 +ProjectManager.TargetToolchain=STM32CubeIDE +ProjectManager.ToolChainLocation= +ProjectManager.UAScriptAfterPath= +ProjectManager.UAScriptBeforePath= +ProjectManager.UnderRoot=true +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_DMA_Init-DMA-false-LL-true,4-MX_SPI4_Init-SPI4-false-LL-true,5-MX_FATFS_Init-FATFS-false-HAL-false,6-MX_TIM2_Init-TIM2-false-LL-true,7-MX_TIM5_Init-TIM5-false-LL-true,8-MX_ADC1_Init-ADC1-false-HAL-true,9-MX_ADC3_Init-ADC3-false-HAL-true,10-MX_SPI2_Init-SPI2-false-LL-true,11-MX_SPI5_Init-SPI5-false-LL-true,12-MX_SPI6_Init-SPI6-false-LL-true,13-MX_USART1_UART_Init-USART1-false-LL-true,14-MX_SDMMC1_SD_Init-SDMMC1-false-HAL-true,15-MX_TIM7_Init-TIM7-false-LL-true,16-MX_TIM6_Init-TIM6-false-LL-true,17-MX_TIM10_Init-TIM10-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true +RCC.AHBFreq_Value=184000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV4 +RCC.APB1Freq_Value=46000000 +RCC.APB1TimFreq_Value=92000000 +RCC.APB2CLKDivider=RCC_HCLK_DIV2 +RCC.APB2Freq_Value=92000000 +RCC.APB2TimFreq_Value=184000000 +RCC.CECFreq_Value=32786.88524590164 +RCC.CortexFreq_Value=184000000 +RCC.DFSDMAudioFreq_Value=96000000 +RCC.DFSDMFreq_Value=92000000 +RCC.EthernetFreq_Value=184000000 +RCC.FCLKCortexFreq_Value=184000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=184000000 +RCC.HSE_VALUE=25000000 +RCC.HSI_VALUE=16000000 +RCC.I2C1Freq_Value=46000000 +RCC.I2C2Freq_Value=46000000 +RCC.I2C3Freq_Value=46000000 +RCC.I2C4Freq_Value=46000000 +RCC.I2SFreq_Value=26000000 +RCC.IPParameters=AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CECFreq_Value,CortexFreq_Value,DFSDMAudioFreq_Value,DFSDMFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2C4Freq_Value,I2SFreq_Value,LCDTFTFreq_Value,LPTIM1Freq_Value,LSE_VALUE,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLI2SN,PLLI2SPCLKFreq_Value,PLLI2SQCLKFreq_Value,PLLI2SRCLKFreq_Value,PLLI2SRoutputFreq_Value,PLLM,PLLN,PLLQ,PLLQCLKFreq_Value,PLLQoutputFreq_Value,PLLRFreq_Value,PLLSAIP,PLLSAIPCLKFreq_Value,PLLSAIQCLKFreq_Value,PLLSAIRCLKFreq_Value,PLLSAIoutputFreq_Value,PLLSourceVirtual,RNGFreq_Value,SAI1Freq_Value,SAI2Freq_Value,SDMMC2Freq_Value,SDMMCClockSelection,SDMMCFreq_Value,SPDIFRXFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5Freq_Value,UART7Freq_Value,UART8Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USART6Freq_Value,USBFreq_Value,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value +RCC.LCDTFTFreq_Value=48000000 +RCC.LPTIM1Freq_Value=46000000 +RCC.LSE_VALUE=32768 +RCC.LSI_VALUE=32000 +RCC.MCO2PinFreq_Value=184000000 +RCC.PLLCLKFreq_Value=184000000 +RCC.PLLI2SN=52 +RCC.PLLI2SPCLKFreq_Value=26000000 +RCC.PLLI2SQCLKFreq_Value=26000000 +RCC.PLLI2SRCLKFreq_Value=26000000 +RCC.PLLI2SRoutputFreq_Value=26000000 +RCC.PLLM=25 +RCC.PLLN=368 +RCC.PLLQ=8 +RCC.PLLQCLKFreq_Value=46000000 +RCC.PLLQoutputFreq_Value=46000000 +RCC.PLLRFreq_Value=184000000 +RCC.PLLSAIP=RCC_PLLSAIP_DIV8 +RCC.PLLSAIPCLKFreq_Value=24000000 +RCC.PLLSAIQCLKFreq_Value=96000000 +RCC.PLLSAIRCLKFreq_Value=96000000 +RCC.PLLSAIoutputFreq_Value=24000000 +RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE +RCC.RNGFreq_Value=46000000 +RCC.SAI1Freq_Value=96000000 +RCC.SAI2Freq_Value=96000000 +RCC.SDMMC2Freq_Value=184000000 +RCC.SDMMCClockSelection=RCC_SDMMC1CLKSOURCE_CLK48 +RCC.SDMMCFreq_Value=46000000 +RCC.SPDIFRXFreq_Value=26000000 +RCC.SYSCLKFreq_VALUE=184000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.UART4Freq_Value=46000000 +RCC.UART5Freq_Value=46000000 +RCC.UART7Freq_Value=46000000 +RCC.UART8Freq_Value=46000000 +RCC.USART1Freq_Value=92000000 +RCC.USART2Freq_Value=46000000 +RCC.USART3Freq_Value=46000000 +RCC.USART6Freq_Value=92000000 +RCC.USBFreq_Value=46000000 +RCC.VCOI2SOutputFreq_Value=52000000 +RCC.VCOInputFreq_Value=1000000 +RCC.VCOOutputFreq_Value=368000000 +RCC.VCOSAIOutputFreq_Value=192000000 +SDMMC1.ClockDiv=20 +SDMMC1.IPParameters=ClockDiv +SH.ADCx_IN10.0=ADC1_IN10,IN10 +SH.ADCx_IN10.ConfNb=1 +SH.ADCx_IN11.0=ADC1_IN11,IN11 +SH.ADCx_IN11.ConfNb=1 +SH.ADCx_IN2.0=ADC1_IN2,IN2 +SH.ADCx_IN2.ConfNb=1 +SH.ADCx_IN8.0=ADC1_IN8,IN8 +SH.ADCx_IN8.ConfNb=1 +SH.ADCx_IN9.0=ADC1_IN9,IN9 +SH.ADCx_IN9.ConfNb=1 +SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_8 +SPI2.CLKPhase=SPI_PHASE_2EDGE +SPI2.CLKPolarity=SPI_POLARITY_HIGH +SPI2.CalculateBaudRate=5.75 MBits/s +SPI2.DataSize=SPI_DATASIZE_16BIT +SPI2.Direction=SPI_DIRECTION_2LINES +SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,DataSize,CLKPolarity,CLKPhase +SPI2.Mode=SPI_MODE_MASTER +SPI2.VirtualType=VM_MASTER +SPI4.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 +SPI4.CLKPhase=SPI_PHASE_1EDGE +SPI4.CLKPolarity=SPI_POLARITY_HIGH +SPI4.CalculateBaudRate=5.75 MBits/s +SPI4.DataSize=SPI_DATASIZE_16BIT +SPI4.Direction=SPI_DIRECTION_2LINES_RXONLY +SPI4.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,DataSize,CLKPolarity,CLKPhase,NSSPMode +SPI4.Mode=SPI_MODE_MASTER +SPI4.NSSPMode=SPI_NSS_PULSE_DISABLE +SPI4.VirtualType=VM_MASTER +SPI5.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 +SPI5.CLKPolarity=SPI_POLARITY_HIGH +SPI5.CalculateBaudRate=5.75 MBits/s +SPI5.DataSize=SPI_DATASIZE_16BIT +SPI5.Direction=SPI_DIRECTION_2LINES_RXONLY +SPI5.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,NSSPMode,CLKPolarity,DataSize +SPI5.Mode=SPI_MODE_MASTER +SPI5.NSSPMode=SPI_NSS_PULSE_DISABLE +SPI5.VirtualType=VM_MASTER +SPI6.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 +SPI6.CLKPhase=SPI_PHASE_2EDGE +SPI6.CLKPolarity=SPI_POLARITY_HIGH +SPI6.CalculateBaudRate=5.75 MBits/s +SPI6.DataSize=SPI_DATASIZE_16BIT +SPI6.Direction=SPI_DIRECTION_2LINES +SPI6.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,CLKPolarity,DataSize,CLKPhase +SPI6.Mode=SPI_MODE_MASTER +SPI6.VirtualType=VM_MASTER +TIM10.IPParameters=Period,Prescaler +TIM10.Period=9 +TIM10.Prescaler=183 +TIM2.ClockDivision=TIM_CLOCKDIVISION_DIV1 +TIM2.IPParameters=Period,ClockDivision,Prescaler +TIM2.Period=840000 +TIM2.Prescaler=1000 +TIM5.ClockDivision=TIM_CLOCKDIVISION_DIV1 +TIM5.IPParameters=ClockDivision,Prescaler,Period +TIM5.Period=560 +TIM5.Prescaler=10000 +TIM6.IPParameters=Prescaler,Period,TIM_MasterOutputTrigger +TIM6.Period=19 +TIM6.Prescaler=45999 +TIM6.TIM_MasterOutputTrigger=TIM_TRGO_ENABLE +TIM7.IPParameters=Prescaler,Period,TIM_MasterOutputTrigger +TIM7.Period=99 +TIM7.Prescaler=919 +TIM7.TIM_MasterOutputTrigger=TIM_TRGO_ENABLE +USART1.IPParameters=VirtualMode-Asynchronous +USART1.VirtualMode-Asynchronous=VM_ASYNC +VP_FATFS_VS_SDIO.Mode=SDIO +VP_FATFS_VS_SDIO.Signal=FATFS_VS_SDIO +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TIM10_VS_ClockSourceINT.Mode=Enable_Timer +VP_TIM10_VS_ClockSourceINT.Signal=TIM10_VS_ClockSourceINT +VP_TIM2_VS_ClockSourceINT.Mode=Internal +VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT +VP_TIM5_VS_ClockSourceINT.Mode=Internal +VP_TIM5_VS_ClockSourceINT.Signal=TIM5_VS_ClockSourceINT +VP_TIM6_VS_ClockSourceINT.Mode=Enable_Timer +VP_TIM6_VS_ClockSourceINT.Signal=TIM6_VS_ClockSourceINT +VP_TIM7_VS_ClockSourceINT.Mode=Enable_Timer +VP_TIM7_VS_ClockSourceINT.Signal=TIM7_VS_ClockSourceINT +board=custom diff --git a/Inc/File_Handling.h b/Inc/File_Handling.h new file mode 100644 index 0000000..d157dd9 --- /dev/null +++ b/Inc/File_Handling.h @@ -0,0 +1,69 @@ +/* + * File_Handling_RTOS.h + * + * Created on: 14-May-2020 + * Author: Controllerstech + */ + +#ifndef FILE_HANDLING_RTOS_H_ +#define FILE_HANDLING_RTOS_H_ + +#include "fatfs.h" +#include +#include "stdio.h" +#include "fatfs.h" + + +/* mounts the sd card*/ +int Mount_SD (const TCHAR* path); + +/* unmounts the sd card*/ +int Unmount_SD (const TCHAR* path); + +/* Start node to be scanned (***also used as work area***) */ +FRESULT Scan_SD (char* pat); + +/* Only supports removing files from home directory. Directory remover to be added soon */ +FRESULT Format_SD (void); + +/* write the data to the file + * @ name : is the path to the file*/ +FRESULT Write_File (char *name, char *data); + +/* write the data to the file + * @ name : is the path to the file tooooooooooooooooooooooooooooooooooooooooooooooooo*/ +FRESULT Write_File_byte (char *name, uint8_t *data, unsigned int bytesize); + +/* read data from the file + * @ name : is the path to the file*/ +FRESULT Read_File (char *name); + +FRESULT Seek_Read_File (char *name, uint8_t *data, unsigned int bytesize, unsigned long goto_label); + +/* creates the file, if it does not exists + * @ name : is the path to the file*/ +FRESULT Create_File (char *name); + +/* Removes the file from the sd card + * @ name : is the path to the file*/ +FRESULT Remove_File (char *name); + +/* creates a directory + * @ name: is the path to the directory + */ +FRESULT Create_Dir (char *name); + +/* checks the free space in the sd card*/ +void Check_SD_Space (void); + +/* updates the file. write pointer is set to the end of the file + * @ name : is the path to the file + */ +FRESULT Update_File (char *name, char *data); + +FRESULT Update_File_float (char *name, float *data, unsigned int bytesize); + +FRESULT Update_File_byte (char *name, uint8_t *data, unsigned int bytesize); + + +#endif /* FILE_HANDLING_RTOS_H_ */ diff --git a/Inc/bsp_driver_sd.h b/Inc/bsp_driver_sd.h new file mode 100644 index 0000000..de81b56 --- /dev/null +++ b/Inc/bsp_driver_sd.h @@ -0,0 +1,89 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file bsp_driver_sd.h (based on stm32756g_eval_sd.h) + * @brief This file contains the common defines and functions prototypes for + * the bsp_driver_sd.c driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7_SD_H +#define __STM32F7_SD_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" +#include "fatfs_platform.h" + +/* Exported types --------------------------------------------------------*/ +/** + * @brief SD Card information structure + */ +#define BSP_SD_CardInfo HAL_SD_CardInfoTypeDef + +/* Exported constants --------------------------------------------------------*/ +/** + * @brief SD status structure definition + */ +#define MSD_OK ((uint8_t)0x00) +#define MSD_ERROR ((uint8_t)0x01) +#define MSD_ERROR_SD_NOT_PRESENT ((uint8_t)0x02) + +/** + * @brief SD transfer state definition + */ +#define SD_TRANSFER_OK ((uint8_t)0x00) +#define SD_TRANSFER_BUSY ((uint8_t)0x01) + +#define SD_PRESENT ((uint8_t)0x01) +#define SD_NOT_PRESENT ((uint8_t)0x00) +#define SD_DATATIMEOUT ((uint32_t)100000000) + +#ifdef OLD_API +/* kept to avoid issue when migrating old projects. */ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ +#else +/* USER CODE BEGIN BSP_H_CODE */ + +/* Exported functions --------------------------------------------------------*/ +uint8_t BSP_SD_Init(void); +uint8_t BSP_SD_ITConfig(void); +uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout); +uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout); +uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks); +uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks); +uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr); +uint8_t BSP_SD_GetCardState(void); +void BSP_SD_GetCardInfo(BSP_SD_CardInfo *CardInfo); +uint8_t BSP_SD_IsDetected(void); + +/* These functions can be modified in case the current settings (e.g. DMA stream) + need to be changed for specific application needs */ +void BSP_SD_AbortCallback(void); +void BSP_SD_WriteCpltCallback(void); +void BSP_SD_ReadCpltCallback(void); +/* USER CODE END BSP_H_CODE */ +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7_SD_H */ diff --git a/Inc/fatfs.h b/Inc/fatfs.h new file mode 100644 index 0000000..2127b61 --- /dev/null +++ b/Inc/fatfs.h @@ -0,0 +1,47 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file fatfs.h + * @brief Header for fatfs applications + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __fatfs_H +#define __fatfs_H +#ifdef __cplusplus + extern "C" { +#endif + +#include "ff.h" +#include "ff_gen_drv.h" +#include "sd_diskio.h" /* defines SD_Driver as external */ + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +extern uint8_t retSD; /* Return value for SD */ +extern char SDPath[4]; /* SD logical drive path */ +extern FATFS SDFatFS; /* File system object for SD logical drive */ +extern FIL SDFile; /* File object for SD */ + +void MX_FATFS_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ +#ifdef __cplusplus +} +#endif +#endif /*__fatfs_H */ diff --git a/Inc/fatfs_platform.h b/Inc/fatfs_platform.h new file mode 100644 index 0000000..2c362f0 --- /dev/null +++ b/Inc/fatfs_platform.h @@ -0,0 +1,27 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : fatfs_platform.h + * @brief : fatfs_platform header file + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** +*/ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" +/* Defines ------------------------------------------------------------------*/ +#define SD_PRESENT ((uint8_t)0x01) /* also in bsp_driver_sd.h */ +#define SD_NOT_PRESENT ((uint8_t)0x00) /* also in bsp_driver_sd.h */ +#define SD_DETECT_PIN GPIO_PIN_0 +#define SD_DETECT_GPIO_PORT GPIOD +/* Prototypes ---------------------------------------------------------------*/ +uint8_t BSP_PlatformIsDetected(void); diff --git a/Inc/ffconf.h b/Inc/ffconf.h new file mode 100644 index 0000000..98a96ff --- /dev/null +++ b/Inc/ffconf.h @@ -0,0 +1,269 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * FatFs - Generic FAT file system module R0.12c (C)ChaN, 2017 + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +#ifndef _FFCONF +#define _FFCONF 68300 /* Revision ID */ + +/*-----------------------------------------------------------------------------/ +/ Additional user header to be used +/-----------------------------------------------------------------------------*/ + +#include "main.h" +#include "stm32f7xx_hal.h" +#include "bsp_driver_sd.h" + +/*-----------------------------------------------------------------------------/ +/ Function Configurations +/-----------------------------------------------------------------------------*/ + +#define _FS_READONLY 0 /* 0:Read/Write or 1:Read only */ +/* This option switches read-only configuration. (0:Read/Write or 1:Read-only) +/ Read-only configuration removes writing API functions, f_write(), f_sync(), +/ f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree() +/ and optional writing functions as well. */ + +#define _FS_MINIMIZE 0 /* 0 to 3 */ +/* This option defines minimization level to remove some basic API functions. +/ +/ 0: All basic functions are enabled. +/ 1: f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_truncate() and f_rename() +/ are removed. +/ 2: f_opendir(), f_readdir() and f_closedir() are removed in addition to 1. +/ 3: f_lseek() function is removed in addition to 2. */ + +#define _USE_STRFUNC 2 /* 0:Disable or 1-2:Enable */ +/* This option switches string functions, f_gets(), f_putc(), f_puts() and +/ f_printf(). +/ +/ 0: Disable string functions. +/ 1: Enable without LF-CRLF conversion. +/ 2: Enable with LF-CRLF conversion. */ + +#define _USE_FIND 0 +/* This option switches filtered directory read functions, f_findfirst() and +/ f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */ + +#define _USE_MKFS 1 +/* This option switches f_mkfs() function. (0:Disable or 1:Enable) */ + +#define _USE_FASTSEEK 1 +/* This option switches fast seek feature. (0:Disable or 1:Enable) */ + +#define _USE_EXPAND 0 +/* This option switches f_expand function. (0:Disable or 1:Enable) */ + +#define _USE_CHMOD 0 +/* This option switches attribute manipulation functions, f_chmod() and f_utime(). +/ (0:Disable or 1:Enable) Also _FS_READONLY needs to be 0 to enable this option. */ + +#define _USE_LABEL 0 +/* This option switches volume label functions, f_getlabel() and f_setlabel(). +/ (0:Disable or 1:Enable) */ + +#define _USE_FORWARD 0 +/* This option switches f_forward() function. (0:Disable or 1:Enable) */ + +/*-----------------------------------------------------------------------------/ +/ Locale and Namespace Configurations +/-----------------------------------------------------------------------------*/ + +#define _CODE_PAGE 850 +/* This option specifies the OEM code page to be used on the target system. +/ Incorrect setting of the code page can cause a file open failure. +/ +/ 1 - ASCII (No extended character. Non-LFN cfg. only) +/ 437 - U.S. +/ 720 - Arabic +/ 737 - Greek +/ 771 - KBL +/ 775 - Baltic +/ 850 - Latin 1 +/ 852 - Latin 2 +/ 855 - Cyrillic +/ 857 - Turkish +/ 860 - Portuguese +/ 861 - Icelandic +/ 862 - Hebrew +/ 863 - Canadian French +/ 864 - Arabic +/ 865 - Nordic +/ 866 - Russian +/ 869 - Greek 2 +/ 932 - Japanese (DBCS) +/ 936 - Simplified Chinese (DBCS) +/ 949 - Korean (DBCS) +/ 950 - Traditional Chinese (DBCS) +*/ + +#define _USE_LFN 0 /* 0 to 3 */ +#define _MAX_LFN 255 /* Maximum LFN length to handle (12 to 255) */ +/* The _USE_LFN switches the support of long file name (LFN). +/ +/ 0: Disable support of LFN. _MAX_LFN has no effect. +/ 1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe. +/ 2: Enable LFN with dynamic working buffer on the STACK. +/ 3: Enable LFN with dynamic working buffer on the HEAP. +/ +/ To enable the LFN, Unicode handling functions (option/unicode.c) must be added +/ to the project. The working buffer occupies (_MAX_LFN + 1) * 2 bytes and +/ additional 608 bytes at exFAT enabled. _MAX_LFN can be in range from 12 to 255. +/ It should be set 255 to support full featured LFN operations. +/ When use stack for the working buffer, take care on stack overflow. When use heap +/ memory for the working buffer, memory management functions, ff_memalloc() and +/ ff_memfree(), must be added to the project. */ + +#define _LFN_UNICODE 0 /* 0:ANSI/OEM or 1:Unicode */ +/* This option switches character encoding on the API. (0:ANSI/OEM or 1:UTF-16) +/ To use Unicode string for the path name, enable LFN and set _LFN_UNICODE = 1. +/ This option also affects behavior of string I/O functions. */ + +#define _STRF_ENCODE 3 +/* When _LFN_UNICODE == 1, this option selects the character encoding ON THE FILE to +/ be read/written via string I/O functions, f_gets(), f_putc(), f_puts and f_printf(). +/ +/ 0: ANSI/OEM +/ 1: UTF-16LE +/ 2: UTF-16BE +/ 3: UTF-8 +/ +/ This option has no effect when _LFN_UNICODE == 0. */ + +#define _FS_RPATH 0 /* 0 to 2 */ +/* This option configures support of relative path. +/ +/ 0: Disable relative path and remove related functions. +/ 1: Enable relative path. f_chdir() and f_chdrive() are available. +/ 2: f_getcwd() function is available in addition to 1. +*/ + +/*---------------------------------------------------------------------------/ +/ Drive/Volume Configurations +/----------------------------------------------------------------------------*/ + +#define _VOLUMES 1 +/* Number of volumes (logical drives) to be used. */ + +/* USER CODE BEGIN Volumes */ +#define _STR_VOLUME_ID 0 /* 0:Use only 0-9 for drive ID, 1:Use strings for drive ID */ +#define _VOLUME_STRS "RAM","NAND","CF","SD1","SD2","USB1","USB2","USB3" +/* _STR_VOLUME_ID switches string support of volume ID. +/ When _STR_VOLUME_ID is set to 1, also pre-defined strings can be used as drive +/ number in the path name. _VOLUME_STRS defines the drive ID strings for each +/ logical drives. Number of items must be equal to _VOLUMES. Valid characters for +/ the drive ID strings are: A-Z and 0-9. */ +/* USER CODE END Volumes */ + +#define _MULTI_PARTITION 0 /* 0:Single partition, 1:Multiple partition */ +/* This option switches support of multi-partition on a physical drive. +/ By default (0), each logical drive number is bound to the same physical drive +/ number and only an FAT volume found on the physical drive will be mounted. +/ When multi-partition is enabled (1), each logical drive number can be bound to +/ arbitrary physical drive and partition listed in the VolToPart[]. Also f_fdisk() +/ function will be available. */ +#define _MIN_SS 512 /* 512, 1024, 2048 or 4096 */ +#define _MAX_SS 4096 /* 512, 1024, 2048 or 4096 */ +/* These options configure the range of sector size to be supported. (512, 1024, +/ 2048 or 4096) Always set both 512 for most systems, all type of memory cards and +/ harddisk. But a larger value may be required for on-board flash memory and some +/ type of optical media. When _MAX_SS is larger than _MIN_SS, FatFs is configured +/ to variable sector size and GET_SECTOR_SIZE command must be implemented to the +/ disk_ioctl() function. */ + +#define _USE_TRIM 0 +/* This option switches support of ATA-TRIM. (0:Disable or 1:Enable) +/ To enable Trim function, also CTRL_TRIM command should be implemented to the +/ disk_ioctl() function. */ + +#define _FS_NOFSINFO 0 /* 0,1,2 or 3 */ +/* If you need to know correct free space on the FAT32 volume, set bit 0 of this +/ option, and f_getfree() function at first time after volume mount will force +/ a full FAT scan. Bit 1 controls the use of last allocated cluster number. +/ +/ bit0=0: Use free cluster count in the FSINFO if available. +/ bit0=1: Do not trust free cluster count in the FSINFO. +/ bit1=0: Use last allocated cluster number in the FSINFO if available. +/ bit1=1: Do not trust last allocated cluster number in the FSINFO. +*/ + +/*---------------------------------------------------------------------------/ +/ System Configurations +/----------------------------------------------------------------------------*/ + +#define _FS_TINY 0 /* 0:Normal or 1:Tiny */ +/* This option switches tiny buffer configuration. (0:Normal or 1:Tiny) +/ At the tiny configuration, size of file object (FIL) is reduced _MAX_SS bytes. +/ Instead of private sector buffer eliminated from the file object, common sector +/ buffer in the file system object (FATFS) is used for the file data transfer. */ + +#define _FS_EXFAT 0 +/* This option switches support of exFAT file system. (0:Disable or 1:Enable) +/ When enable exFAT, also LFN needs to be enabled. (_USE_LFN >= 1) +/ Note that enabling exFAT discards C89 compatibility. */ + +#define _FS_NORTC 0 +#define _NORTC_MON 6 +#define _NORTC_MDAY 4 +#define _NORTC_YEAR 2015 +/* The option _FS_NORTC switches timestamp functiton. If the system does not have +/ any RTC function or valid timestamp is not needed, set _FS_NORTC = 1 to disable +/ the timestamp function. All objects modified by FatFs will have a fixed timestamp +/ defined by _NORTC_MON, _NORTC_MDAY and _NORTC_YEAR in local time. +/ To enable timestamp function (_FS_NORTC = 0), get_fattime() function need to be +/ added to the project to get current time form real-time clock. _NORTC_MON, +/ _NORTC_MDAY and _NORTC_YEAR have no effect. +/ These options have no effect at read-only configuration (_FS_READONLY = 1). */ + +#define _FS_LOCK 2 /* 0:Disable or >=1:Enable */ +/* The option _FS_LOCK switches file lock function to control duplicated file open +/ and illegal operation to open objects. This option must be 0 when _FS_READONLY +/ is 1. +/ +/ 0: Disable file lock function. To avoid volume corruption, application program +/ should avoid illegal open, remove and rename to the open objects. +/ >0: Enable file lock function. The value defines how many files/sub-directories +/ can be opened simultaneously under file lock control. Note that the file +/ lock control is independent of re-entrancy. */ + +#define _FS_REENTRANT 0 /* 0:Disable or 1:Enable */ +#define _FS_TIMEOUT 1000 /* Timeout period in unit of time ticks */ +#define _SYNC_t NULL +/* The option _FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs +/ module itself. Note that regardless of this option, file access to different +/ volume is always re-entrant and volume control functions, f_mount(), f_mkfs() +/ and f_fdisk() function, are always not re-entrant. Only file/directory access +/ to the same volume is under control of this function. +/ +/ 0: Disable re-entrancy. _FS_TIMEOUT and _SYNC_t have no effect. +/ 1: Enable re-entrancy. Also user provided synchronization handlers, +/ ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and ff_cre_syncobj() +/ function, must be added to the project. Samples are available in +/ option/syscall.c. +/ +/ The _FS_TIMEOUT defines timeout period in unit of time tick. +/ The _SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*, +/ SemaphoreHandle_t and etc.. A header file for O/S definitions needs to be +/ included somewhere in the scope of ff.h. */ + +/* define the ff_malloc ff_free macros as standard malloc free */ +#if !defined(ff_malloc) && !defined(ff_free) +#include +#define ff_malloc malloc +#define ff_free free +#endif + +#endif /* _FFCONF */ diff --git a/Inc/main.h b/Inc/main.h new file mode 100644 index 0000000..e41d604 --- /dev/null +++ b/Inc/main.h @@ -0,0 +1,236 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f7xx_hal.h" + +#include "stm32f7xx_ll_dma.h" +#include "stm32f7xx_ll_spi.h" +#include "stm32f7xx_ll_tim.h" +#include "stm32f7xx_ll_usart.h" +#include "stm32f7xx_ll_rcc.h" +#include "stm32f7xx_ll_bus.h" +#include "stm32f7xx_ll_cortex.h" +#include "stm32f7xx_ll_system.h" +#include "stm32f7xx_ll_utils.h" +#include "stm32f7xx_ll_pwr.h" +#include "stm32f7xx_ll_gpio.h" + +#include "stm32f7xx_ll_exti.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +#define ADC_MPD2_CS_Pin GPIO_PIN_6 +#define ADC_MPD2_CS_GPIO_Port GPIOF +#define SPI5_CNV_Pin GPIO_PIN_9 +#define SPI5_CNV_GPIO_Port GPIOF +#define ADC_ThrLD2_CS_Pin GPIO_PIN_10 +#define ADC_ThrLD2_CS_GPIO_Port GPIOF +#define EN_5V2_Pin GPIO_PIN_2 +#define EN_5V2_GPIO_Port GPIOC +#define EN_5V1_Pin GPIO_PIN_3 +#define EN_5V1_GPIO_Port GPIOC +#define TECEN1_Pin GPIO_PIN_0 +#define TECEN1_GPIO_Port GPIOA +#define TECEN2_Pin GPIO_PIN_1 +#define TECEN2_GPIO_Port GPIOA +#define REF2_ON_Pin GPIO_PIN_3 +#define REF2_ON_GPIO_Port GPIOA +#define DAC_TEC2_CS_Pin GPIO_PIN_4 +#define DAC_TEC2_CS_GPIO_Port GPIOA +#define DAC_LD2_CS_Pin GPIO_PIN_6 +#define DAC_LD2_CS_GPIO_Port GPIOA +#define LD2_EN_Pin GPIO_PIN_4 +#define LD2_EN_GPIO_Port GPIOC +#define TEC2_PD_Pin GPIO_PIN_5 +#define TEC2_PD_GPIO_Port GPIOC +#define TEC2_FLAG1_Pin GPIO_PIN_11 +#define TEC2_FLAG1_GPIO_Port GPIOF +#define TEC2_FLAG2_Pin GPIO_PIN_12 +#define TEC2_FLAG2_GPIO_Port GPIOF +#define TEC1_FLAG1_Pin GPIO_PIN_13 +#define TEC1_FLAG1_GPIO_Port GPIOF +#define TEC1_FLAG2_Pin GPIO_PIN_14 +#define TEC1_FLAG2_GPIO_Port GPIOF +#define ADC_MPD1_CS_Pin GPIO_PIN_10 +#define ADC_MPD1_CS_GPIO_Port GPIOE +#define ADC_ThrLD1_CS_Pin GPIO_PIN_11 +#define ADC_ThrLD1_CS_GPIO_Port GPIOE +#define SPI4_CNV_Pin GPIO_PIN_14 +#define SPI4_CNV_GPIO_Port GPIOE +#define REF0_EN_Pin GPIO_PIN_10 +#define REF0_EN_GPIO_Port GPIOB +#define TEC1_PD_Pin GPIO_PIN_11 +#define TEC1_PD_GPIO_Port GPIOB +#define DAC_TEC1_CS_Pin GPIO_PIN_12 +#define DAC_TEC1_CS_GPIO_Port GPIOB +#define DAC_LD1_CS_Pin GPIO_PIN_14 +#define DAC_LD1_CS_GPIO_Port GPIOB +#define LD1_EN_Pin GPIO_PIN_8 +#define LD1_EN_GPIO_Port GPIOD +#define USB_FLAG_Pin GPIO_PIN_8 +#define USB_FLAG_GPIO_Port GPIOA +#define SDMMC1_EN_Pin GPIO_PIN_0 +#define SDMMC1_EN_GPIO_Port GPIOD +#define TEST_01_Pin GPIO_PIN_1 +#define TEST_01_GPIO_Port GPIOD +#define FPGA_CONF_DONE_Pin GPIO_PIN_1 +#define FPGA_CONF_DONE_GPIO_Port GPIOE + +/* USER CODE BEGIN Private defines */ + #define CL_16 15 + #define DL_16 15 + #define CL_8 30 + #define DL_8 30 + #define TSK_8 32 + #define TSK_16 16 + + +// #define SD_Length 100 + + #define HALT 0 + #define DECODE_ENABLE 1 + #define DEFAULT_ENABLE 2 + #define TRANS_S_ENABLE 3 + #define TRANS_ENABLE 4 + #define REMOVE_FILE 5 + #define STATE 6 + #define WORK_ENABLE 7 + #define DECODE_TASK 8 + #define RUN_TASK 9 + + #define SD_ERR 0x01 + #define UART_ERR 0x02 + #define UART_DECODE_ERR 0x04 + #define TEC1_ERR 0x08 + #define TEC2_ERR 0x10 + #define DEFAUL_ERR 0x20 + #define REMOVE_ERR 0x40 + + #define NO_MESS 0 + #define MESS_01 1 + #define MESS_02 2 + #define MESS_03 3 + + typedef struct{ + + uint8_t WORK_EN; + uint8_t U5V1_EN; + uint8_t U5V2_EN; + uint8_t LD1_EN; + uint8_t LD2_EN; + uint8_t REF1_EN; + uint8_t REF2_EN; + uint8_t TEC1_EN; + uint8_t TEC2_EN; + uint8_t TS1_EN; + uint8_t TS2_EN; + uint8_t SD_EN; + uint8_t PI1_RD; + uint8_t PI2_RD; + + uint16_t AVERAGES; + uint16_t MES_ID; + + }Work_SetupTypeDef; + + typedef struct{ + + uint16_t LD_TEMP; + float P_coef_temp; + float I_coef_temp; + uint16_t CURRENT; + + }LDx_SetupTypeDef; + + typedef struct{ + + uint16_t LD_CURR_TEMP; + float e_integral; + uint16_t POWER; + + }LDx_ParamTypeDef; + + typedef enum _task_type_t + { + TT_CHANGE_CURR_1 = 0x1, + TT_CHANGE_CURR_2 = 0x2, + TT_CHANGE_TEMP_1 = 0x3, + TT_CHANGE_TEMP_2 = 0x4, + } task_type_t; + + typedef struct _task_t + { + task_type_t task_type; + float min_param; + float max_param; + float delta_param; // change step between min_param and max_param + float current_param; // current_param is iterating by summary with delta_param every interrupt + uint8_t dt; // microseconds + uint16_t tau; // milliseconds or microseconds? + float sec_param; + float curr; + float temp; + float i_coef_1; + float p_coef_1; + float i_coef_2; + float p_coef_2; + } task_t; +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ diff --git a/Inc/sd_diskio.h b/Inc/sd_diskio.h new file mode 100644 index 0000000..47b48e0 --- /dev/null +++ b/Inc/sd_diskio.h @@ -0,0 +1,41 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file sd_diskio.h + * @brief Header for sd_diskio.c module + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Note: code generation based on sd_diskio_template.h */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __SD_DISKIO_H +#define __SD_DISKIO_H + +/* USER CODE BEGIN firstSection */ +/* can be used to modify / undefine following code or add new definitions */ +/* USER CODE END firstSection */ + +/* Includes ------------------------------------------------------------------*/ +#include "bsp_driver_sd.h" +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +extern const Diskio_drvTypeDef SD_Driver; + +/* USER CODE BEGIN lastSection */ +/* can be used to modify / undefine previous code or add new definitions */ +/* USER CODE END lastSection */ + +#endif /* __SD_DISKIO_H */ diff --git a/Inc/stm32_assert.h b/Inc/stm32_assert.h new file mode 100644 index 0000000..c096d4b --- /dev/null +++ b/Inc/stm32_assert.h @@ -0,0 +1,53 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32_assert.h + * @brief STM32 assert file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32_ASSERT_H +#define __STM32_ASSERT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Includes ------------------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32_ASSERT_H */ + diff --git a/Inc/stm32f7xx_hal_conf.h b/Inc/stm32f7xx_hal_conf.h new file mode 100644 index 0000000..b574ca8 --- /dev/null +++ b/Inc/stm32f7xx_hal_conf.h @@ -0,0 +1,484 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f7xx_hal_conf_template.h + * @author MCD Application Team + * @brief HAL configuration template file. + * This file should be copied to the application folder and renamed + * to stm32f7xx_hal_conf.h. + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_HAL_CONF_H +#define __STM32F7xx_HAL_CONF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** + * @brief This is the list of modules to be used in the HAL driver + */ +#define HAL_MODULE_ENABLED + + /* #define HAL_CRYP_MODULE_ENABLED */ +#define HAL_ADC_MODULE_ENABLED +/* #define HAL_CAN_MODULE_ENABLED */ +/* #define HAL_CEC_MODULE_ENABLED */ +/* #define HAL_CRC_MODULE_ENABLED */ +/* #define HAL_DAC_MODULE_ENABLED */ +/* #define HAL_DCMI_MODULE_ENABLED */ +/* #define HAL_DMA2D_MODULE_ENABLED */ +/* #define HAL_ETH_MODULE_ENABLED */ +/* #define HAL_ETH_LEGACY_MODULE_ENABLED */ +/* #define HAL_NAND_MODULE_ENABLED */ +/* #define HAL_NOR_MODULE_ENABLED */ +/* #define HAL_SRAM_MODULE_ENABLED */ +/* #define HAL_SDRAM_MODULE_ENABLED */ +/* #define HAL_HASH_MODULE_ENABLED */ +/* #define HAL_I2S_MODULE_ENABLED */ +/* #define HAL_IWDG_MODULE_ENABLED */ +/* #define HAL_LPTIM_MODULE_ENABLED */ +/* #define HAL_LTDC_MODULE_ENABLED */ +/* #define HAL_QSPI_MODULE_ENABLED */ +/* #define HAL_RNG_MODULE_ENABLED */ +/* #define HAL_RTC_MODULE_ENABLED */ +/* #define HAL_SAI_MODULE_ENABLED */ +#define HAL_SD_MODULE_ENABLED +/* #define HAL_MMC_MODULE_ENABLED */ +/* #define HAL_SPDIFRX_MODULE_ENABLED */ +/* #define HAL_SPI_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED +/* #define HAL_UART_MODULE_ENABLED */ +/* #define HAL_USART_MODULE_ENABLED */ +/* #define HAL_IRDA_MODULE_ENABLED */ +/* #define HAL_SMARTCARD_MODULE_ENABLED */ +/* #define HAL_WWDG_MODULE_ENABLED */ +/* #define HAL_PCD_MODULE_ENABLED */ +/* #define HAL_HCD_MODULE_ENABLED */ +/* #define HAL_DFSDM_MODULE_ENABLED */ +/* #define HAL_DSI_MODULE_ENABLED */ +/* #define HAL_JPEG_MODULE_ENABLED */ +/* #define HAL_MDIOS_MODULE_ENABLED */ +/* #define HAL_SMBUS_MODULE_ENABLED */ +/* #define HAL_EXTI_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_I2C_MODULE_ENABLED +#define HAL_CORTEX_MODULE_ENABLED + +/* ########################## HSE/HSI Values adaptation ##################### */ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)25000000U) /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) + #define HSE_STARTUP_TIMEOUT ((uint32_t)100U) /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) + #define LSI_VALUE ((uint32_t)32000U) /*!< LSI Typical Value in Hz*/ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature. */ +/** + * @brief External Low Speed oscillator (LSE) value. + */ +#if !defined (LSE_VALUE) + #define LSE_VALUE ((uint32_t)32768U) /*!< Value of the External Low Speed oscillator in Hz */ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) + #define LSE_STARTUP_TIMEOUT ((uint32_t)5000U) /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/** + * @brief External clock source for I2S peripheral + * This value is used by the I2S HAL module to compute the I2S clock source + * frequency, this source is inserted directly through I2S_CKIN pad. + */ +#if !defined (EXTERNAL_CLOCK_VALUE) + #define EXTERNAL_CLOCK_VALUE ((uint32_t)12288000U) /*!< Value of the Internal oscillator in Hz*/ +#endif /* EXTERNAL_CLOCK_VALUE */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ +#define VDD_VALUE 3300U /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY ((uint32_t)0U) /*!< tick interrupt priority */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 0U +#define ART_ACCELERATOR_ENABLE 0U /* To enable instruction cache and prefetch */ + +#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */ +#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */ +#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */ +#define USE_HAL_CRYP_REGISTER_CALLBACKS 0U /* CRYP register callback disabled */ +#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */ +#define USE_HAL_DCMI_REGISTER_CALLBACKS 0U /* DCMI register callback disabled */ +#define USE_HAL_DFSDM_REGISTER_CALLBACKS 0U /* DFSDM register callback disabled */ +#define USE_HAL_DMA2D_REGISTER_CALLBACKS 0U /* DMA2D register callback disabled */ +#define USE_HAL_DSI_REGISTER_CALLBACKS 0U /* DSI register callback disabled */ +#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */ +#define USE_HAL_HASH_REGISTER_CALLBACKS 0U /* HASH register callback disabled */ +#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */ +#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */ +#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */ +#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */ +#define USE_HAL_JPEG_REGISTER_CALLBACKS 0U /* JPEG register callback disabled */ +#define USE_HAL_LPTIM_REGISTER_CALLBACKS 0U /* LPTIM register callback disabled */ +#define USE_HAL_LTDC_REGISTER_CALLBACKS 0U /* LTDC register callback disabled */ +#define USE_HAL_MDIOS_REGISTER_CALLBACKS 0U /* MDIOS register callback disabled */ +#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */ +#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */ +#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */ +#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */ +#define USE_HAL_QSPI_REGISTER_CALLBACKS 0U /* QSPI register callback disabled */ +#define USE_HAL_RNG_REGISTER_CALLBACKS 0U /* RNG register callback disabled */ +#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */ +#define USE_HAL_SAI_REGISTER_CALLBACKS 0U /* SAI register callback disabled */ +#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */ +#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */ +#define USE_HAL_SDRAM_REGISTER_CALLBACKS 0U /* SDRAM register callback disabled */ +#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */ +#define USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */ +#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */ +#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */ +#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */ +#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */ +#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */ +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */ + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## Ethernet peripheral configuration ##################### */ + +/* Section 1 : Ethernet peripheral configuration */ + +/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ +#define MAC_ADDR0 2U +#define MAC_ADDR1 0U +#define MAC_ADDR2 0U +#define MAC_ADDR3 0U +#define MAC_ADDR4 0U +#define MAC_ADDR5 0U + +/* Definition of the Ethernet driver buffers size and count */ +#define ETH_RX_BUF_SIZE /* buffer size for receive */ +#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */ +#define ETH_RXBUFNB ((uint32_t)4U) /* 4 Rx buffers of size ETH_RX_BUF_SIZE */ +#define ETH_TXBUFNB ((uint32_t)4U) /* 4 Tx buffers of size ETH_TX_BUF_SIZE */ + +/* Section 2: PHY configuration section */ + +/* DP83848_PHY_ADDRESS Address*/ +#define DP83848_PHY_ADDRESS +/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ +#define PHY_RESET_DELAY ((uint32_t)0x000000FFU) +/* PHY Configuration delay */ +#define PHY_CONFIG_DELAY ((uint32_t)0x00000FFFU) + +#define PHY_READ_TO ((uint32_t)0x0000FFFFU) +#define PHY_WRITE_TO ((uint32_t)0x0000FFFFU) + +/* Section 3: Common PHY Registers */ + +#define PHY_BCR ((uint16_t)0x0000U) /*!< Transceiver Basic Control Register */ +#define PHY_BSR ((uint16_t)0x0001U) /*!< Transceiver Basic Status Register */ + +#define PHY_RESET ((uint16_t)0x8000U) /*!< PHY Reset */ +#define PHY_LOOPBACK ((uint16_t)0x4000U) /*!< Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100U) /*!< Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000U) /*!< Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100U) /*!< Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000U) /*!< Set the half-duplex mode at 10 Mb/s */ +#define PHY_AUTONEGOTIATION ((uint16_t)0x1000U) /*!< Enable auto-negotiation function */ +#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200U) /*!< Restart auto-negotiation function */ +#define PHY_POWERDOWN ((uint16_t)0x0800U) /*!< Select the power down mode */ +#define PHY_ISOLATE ((uint16_t)0x0400U) /*!< Isolate PHY from MII */ + +#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020U) /*!< Auto-Negotiation process completed */ +#define PHY_LINKED_STATUS ((uint16_t)0x0004U) /*!< Valid link established */ +#define PHY_JABBER_DETECTION ((uint16_t)0x0002U) /*!< Jabber condition detected */ + +/* Section 4: Extended PHY Registers */ +#define PHY_SR ((uint16_t)) /*!< PHY status register Offset */ + +#define PHY_SPEED_STATUS ((uint16_t)) /*!< PHY Speed mask */ +#define PHY_DUPLEX_STATUS ((uint16_t)) /*!< PHY Duplex mask */ + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver +* Activated: CRC code is present inside driver +* Deactivated: CRC code cleaned from driver +*/ + +#define USE_SPI_CRC 0U + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED + #include "stm32f7xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED + #include "stm32f7xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED + #include "stm32f7xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED + #include "stm32f7xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED + #include "stm32f7xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED + #include "stm32f7xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED + #include "stm32f7xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED + #include "stm32f7xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED + #include "stm32f7xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_CRYP_MODULE_ENABLED + #include "stm32f7xx_hal_cryp.h" +#endif /* HAL_CRYP_MODULE_ENABLED */ + +#ifdef HAL_DMA2D_MODULE_ENABLED + #include "stm32f7xx_hal_dma2d.h" +#endif /* HAL_DMA2D_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED + #include "stm32f7xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_DCMI_MODULE_ENABLED + #include "stm32f7xx_hal_dcmi.h" +#endif /* HAL_DCMI_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED + #include "stm32f7xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_ETH_LEGACY_MODULE_ENABLED + #include "stm32f7xx_hal_eth_legacy.h" +#endif /* HAL_ETH_LEGACY_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED + #include "stm32f7xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED + #include "stm32f7xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED + #include "stm32f7xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED + #include "stm32f7xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_SDRAM_MODULE_ENABLED + #include "stm32f7xx_hal_sdram.h" +#endif /* HAL_SDRAM_MODULE_ENABLED */ + +#ifdef HAL_HASH_MODULE_ENABLED + #include "stm32f7xx_hal_hash.h" +#endif /* HAL_HASH_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED + #include "stm32f7xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED + #include "stm32f7xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED + #include "stm32f7xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_LPTIM_MODULE_ENABLED + #include "stm32f7xx_hal_lptim.h" +#endif /* HAL_LPTIM_MODULE_ENABLED */ + +#ifdef HAL_LTDC_MODULE_ENABLED + #include "stm32f7xx_hal_ltdc.h" +#endif /* HAL_LTDC_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED + #include "stm32f7xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_QSPI_MODULE_ENABLED + #include "stm32f7xx_hal_qspi.h" +#endif /* HAL_QSPI_MODULE_ENABLED */ + +#ifdef HAL_RNG_MODULE_ENABLED + #include "stm32f7xx_hal_rng.h" +#endif /* HAL_RNG_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED + #include "stm32f7xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_SAI_MODULE_ENABLED + #include "stm32f7xx_hal_sai.h" +#endif /* HAL_SAI_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED + #include "stm32f7xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED + #include "stm32f7xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +#ifdef HAL_SPDIFRX_MODULE_ENABLED + #include "stm32f7xx_hal_spdifrx.h" +#endif /* HAL_SPDIFRX_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED + #include "stm32f7xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED + #include "stm32f7xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED + #include "stm32f7xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED + #include "stm32f7xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED + #include "stm32f7xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED + #include "stm32f7xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED + #include "stm32f7xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED + #include "stm32f7xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED + #include "stm32f7xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + +#ifdef HAL_DFSDM_MODULE_ENABLED + #include "stm32f7xx_hal_dfsdm.h" +#endif /* HAL_DFSDM_MODULE_ENABLED */ + +#ifdef HAL_DSI_MODULE_ENABLED + #include "stm32f7xx_hal_dsi.h" +#endif /* HAL_DSI_MODULE_ENABLED */ + +#ifdef HAL_JPEG_MODULE_ENABLED + #include "stm32f7xx_hal_jpeg.h" +#endif /* HAL_JPEG_MODULE_ENABLED */ + +#ifdef HAL_MDIOS_MODULE_ENABLED + #include "stm32f7xx_hal_mdios.h" +#endif /* HAL_MDIOS_MODULE_ENABLED */ + +#ifdef HAL_SMBUS_MODULE_ENABLED + #include "stm32f7xx_hal_smbus.h" +#endif /* HAL_SMBUS_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_HAL_CONF_H */ + diff --git a/Inc/stm32f7xx_it.h b/Inc/stm32f7xx_it.h new file mode 100644 index 0000000..f6f782e --- /dev/null +++ b/Inc/stm32f7xx_it.h @@ -0,0 +1,74 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f7xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F7xx_IT_H +#define __STM32F7xx_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); +void ADC_IRQHandler(void); +void TIM1_UP_TIM10_IRQHandler(void); +void TIM2_IRQHandler(void); +void USART1_IRQHandler(void); +void TIM5_IRQHandler(void); +void TIM6_DAC_IRQHandler(void); +void TIM7_IRQHandler(void); +void DMA2_Stream7_IRQHandler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F7xx_IT_H */ diff --git a/MDK-ARM/DebugConfig/For_stm32_STM32F767ZITx_2.0.0.dbgconf b/MDK-ARM/DebugConfig/For_stm32_STM32F767ZITx_2.0.0.dbgconf new file mode 100644 index 0000000..5cba73a --- /dev/null +++ b/MDK-ARM/DebugConfig/For_stm32_STM32F767ZITx_2.0.0.dbgconf @@ -0,0 +1,77 @@ +// File: STM32F76x_77x.dbgconf +// Version: 1.0.0 +// Note: refer to STM32F76xxx STM32F77xxx reference manual (RM0410) +// refer to STM32F76xxx STM32F77xxx datasheets + +// <<< Use Configuration Wizard in Context Menu >>> + +// Debug MCU configuration register (DBGMCU_CR) +// DBG_STANDBY Debug standby mode +// DBG_STOP Debug stop mode +// DBG_SLEEP Debug sleep mode +// +DbgMCU_CR = 0x00000007; + +// Debug MCU APB1 freeze register (DBGMCU_APB1_FZ) +// Reserved bits must be kept at reset value +// DBG_CAN2_STOP Debug CAN2 stopped when core is halted +// DBG_CAN1_STOP Debug CAN1 stopped when core is halted +// DBG_I2C4_SMBUS_TIMEOUT SMBUS timeout mode stopped when core is halted +// DBG_I2C3_SMBUS_TIMEOUT SMBUS timeout mode stopped when core is halted +// DBG_I2C2_SMBUS_TIMEOUT SMBUS timeout mode stopped when core is halted +// DBG_I2C1_SMBUS_TIMEOUT SMBUS timeout mode stopped when core is halted +// DBG_CAN3_STOP Debug CAN3 stopped when core is halted +// DBG_IWDG_STOP Debug independent watchdog stopped when core is halted +// DBG_WWDG_STOP Debug window watchdog stopped when core is halted +// DBG_RTC_STOP RTC stopped when core is halted +// DBG_LPTIM1_STOP LPTMI1 counter stopped when core is halted +// DBG_TIM14_STOP TIM14 counter stopped when core is halted +// DBG_TIM13_STOP TIM13 counter stopped when core is halted +// DBG_TIM12_STOP TIM12 counter stopped when core is halted +// DBG_TIM7_STOP TIM7 counter stopped when core is halted +// DBG_TIM6_STOP TIM6 counter stopped when core is halted +// DBG_TIM5_STOP TIM5 counter stopped when core is halted +// DBG_TIM4_STOP TIM4 counter stopped when core is halted +// DBG_TIM3_STOP TIM3 counter stopped when core is halted +// DBG_TIM2_STOP TIM2 counter stopped when core is halted +// +DbgMCU_APB1_Fz = 0x00000000; + +// Debug MCU APB2 freeze register (DBGMCU_APB2_FZ) +// Reserved bits must be kept at reset value +// DBG_TIM11_STOP TIM11 counter stopped when core is halted +// DBG_TIM10_STOP TIM10 counter stopped when core is halted +// DBG_TIM9_STOP TIM9 counter stopped when core is halted +// DBG_TIM8_STOP TIM8 counter stopped when core is halted +// DBG_TIM1_STOP TIM1 counter stopped when core is halted +// +DbgMCU_APB2_Fz = 0x00000000; + +// TPIU Pin Routing (TRACECLK fixed on Pin PE2) +// TRACECLK: Pin PE2 +// TRACED0 +// ETM Trace Data 0 +// <0x00040003=> Pin PE3 +// <0x00020001=> Pin PC1 +// <0x0006000D=> Pin PG13 +// TRACED1 +// ETM Trace Data 1 +// <0x00040004=> Pin PE4 +// <0x00020008=> Pin PC8 +// <0x0006000E=> Pin PG14 +// TRACED2 +// ETM Trace Data 2 +// <0x00040005=> Pin PE5 +// <0x00030002=> Pin PD2 +// TRACED3 +// ETM Trace Data 3 +// <0x00040006=> Pin PE6 +// <0x0002000C=> Pin PC12 +// +TraceClk_Pin = 0x00040002; +TraceD0_Pin = 0x00040003; +TraceD1_Pin = 0x00040004; +TraceD2_Pin = 0x00040005; +TraceD3_Pin = 0x00040006; + +// <<< end of configuration section >>> diff --git a/MDK-ARM/EventRecorderStub.scvd b/MDK-ARM/EventRecorderStub.scvd new file mode 100644 index 0000000..2956b29 --- /dev/null +++ b/MDK-ARM/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/MDK-ARM/For_stm32.uvguix.User b/MDK-ARM/For_stm32.uvguix.User new file mode 100644 index 0000000..1ab92db --- /dev/null +++ b/MDK-ARM/For_stm32.uvguix.User @@ -0,0 +1,3698 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + D:\users\Viktor\PhD\MIPT\Stephan\SOFT\Low_grade\For_stm32\Inc + + + + + System Viewer\USART1 + 35905 + + 103 + + + + + + 38003 + Registers + 140 90 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 166 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + 223 + 2152 + 3592 + 982 + + + + 0 + + 1382 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000900000004000000010000004F443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31325F30385C496E635C6D61696E2E6800000000066D61696E2E6800000000C5D4F200FFFFFFFF62443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31325F30385C4D444B2D41524D5C737461727475705F73746D33326637363778782E730000000015737461727475705F73746D33326637363778782E7300000000FFDC7800FFFFFFFF57443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31325F30385C5372635C73746D3332663778785F69742E63000000000E73746D3332663778785F69742E6300000000BECEA100FFFFFFFF58443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31325F30385C5372635C46696C655F48616E646C696E672E63000000000F46696C655F48616E646C696E672E6300000000F0A0A100FFFFFFFF4F443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31325F30385C5372635C6D61696E2E6300000000066D61696E2E6300000000BCA8E100FFFFFFFF7A443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31325F30385C447269766572735C53544D3332463778785F48414C5F4472697665725C496E635C73746D3332663778785F6C6C5F75736172742E68000000001473746D3332663778785F6C6C5F75736172742E68000000009CC1B600FFFFFFFF78443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31325F30385C447269766572735C53544D3332463778785F48414C5F4472697665725C496E635C73746D3332663778785F6C6C5F646D612E68000000001273746D3332663778785F6C6C5F646D612E6800000000F7B88600FFFFFFFF78443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31325F30385C447269766572735C53544D3332463778785F48414C5F4472697665725C496E635C73746D3332663778785F6C6C5F7370692E68000000001273746D3332663778785F6C6C5F7370692E6800000000D9ADC200FFFFFFFF7C443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31325F30385C447269766572735C434D5349535C4465766963655C53545C53544D3332463778785C496E636C7564655C73746D33326637363778782E68000000000D73746D33326637363778782E6800000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007408000066000000000F000069030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DF000000 + + + 16 + F40000006600000090050000F6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 3C000000530000005801000093020000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 3C000000530000005801000093020000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 3C000000530000005801000093020000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000006A03000080070000E6030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001902000090050000BD020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000039030000 + + + 16 + 3C000000530000005801000093020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 3C000000530000005801000093020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 3C000000530000005801000093020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 3C000000530000005801000093020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000052030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000069030000000000004F000000F0000000520300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF02000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000520300008007000056030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006D03000080070000FD030000000000005603000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2685 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000000460000000000000000000000000000000001000000010000000180FE880000000000004500000000000000000000000000000000010000000100000001800B810000000000001300000000000000000000000000000000010000000100000001800C810000000000001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C4441435F5472616E736D697496000000000000000800144C4C5F5350495F456E61626C652853504932293B00076D657373616765134C4C5F5350495F456E61626C652853504932290D4C4C5F5350495F456E61626C650C4441435F5472616E736D69740E4144435F526563656976655F4C4C0B4144435F49646C655F4C4C0000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 978 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000009466F725F73746D33329600000000000000010009466F725F73746D3332000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000037050000DF000000 + + + 16 + F40000006600000037050000F6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000009D020000 + + + 16 + D60700006D000000C608000038010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000009D020000 + + + 16 + D60700006D000000F2080000AD020000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F70000006600000034050000C6000000 + + + 16 + D60700006D0000009E0A0000FD000000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 1936 + 1936 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000009D020000 + + + 16 + D60700006D000000F2080000AD020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000009D020000 + + + 16 + D60700006D000000F2080000AD020000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + D60700006D0000009E0A0000FD000000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 00000000BA02000037050000E6030000 + + + 16 + D60700006D0000009E0A0000FD000000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + D60700006D0000009E0A0000FD000000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000037050000DF000000 + + + 16 + D60700006D0000009E0A0000FD000000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F70000006600000034050000C6000000 + + + 16 + D60700006D0000009E0A0000FD000000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F70000006600000034050000C6000000 + + + 16 + D60700006D0000009E0A0000FD000000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F70000006600000034050000C6000000 + + + 16 + D60700006D0000009E0A0000FD000000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F70000006600000034050000C6000000 + + + 16 + D60700006D0000009E0A0000FD000000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000009D020000 + + + 16 + D60700006D000000F2080000AD020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + D60700006D0000009E0A0000FD000000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + D60700006D000000F2080000AD020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 3E050000660000007D070000CD030000 + + + 16 + D50600002502000099090000C9020000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 3C000000530000005801000093020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000006D0300007D070000CD030000 + + + 16 + 3C000000530000005801000093020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 3C0000005300000004030000E3000000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + D60700006D000000C608000038010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 494 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 463 + 0 + 8192 + 1 + + 16 + 000000001C000000DA01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000FDFFFFFF010000001A020000 + + + 16 + 3C000000530000002C0100001E010000 + + + + 4001 + 0000000012000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000DF00000037050000E3000000010000000100001004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000001000000F40000006600000037050000F6000000F40000004F00000037050000DF0000000000000040280056060000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000B6020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F0000000CD020000000000004F000000F0000000B60200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000B602000037050000BA02000001000000010000100400000001000000AAFDFFFF3F00000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFDD030000BA020000E1030000E603000000000000020000000400000000000000A4FCFFFFBA03000000000000000000000000000001000000C600000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF0000000029020000900500002D020000000000000100000004000000010000000000000000000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000000000000000000004402000090050000D4020000000000002D02000090050000BD0200000000000040820046040000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFF370500004F0000003B050000E60300000100000002000010040000000100000039FCFFFFBA02000000000000000000000000000001000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB090000018000400000010000003B0500006600000080070000FD0300003B0500004F00000080070000E603000000000000404100560E0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F070000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF02000000D60100004589000001800020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046020000000F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFD601000001000000FFFFFFFFD6010000000000000080000000000000FFFFFFFFFFFFFFFF000000001502000090050000190200000000000001000000040000000100000000000000000000000000000000000000000000000100000000000000FFFFFFFF0100000038030000018000800000000000000000000000000000910100003102000000000000E9FFFFFF010000001A02000000000000404100460100000009554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000001000000FFFFFFFF3803000001000000FFFFFFFF38030000000000000080000000000000FFFFFFFFFFFFFFFF00000000520300008007000056030000000000000100000004000000010000000000000000000000FFFFFFFF02000000D2010000CF01000001800080000000000000000000006D03000080070000FD030000000000005603000080070000E60300000000000040820046020000000E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFD201000001000000FFFFFFFFD2010000000000000000000000000000 + + + 59392 + File + + 2566 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C46525F4E4F545F5245414459960000000000000001000C46525F4E4F545F524541445900000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65EE010000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 657 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 4 + + ../Inc/main.h + 25 + 117 + 141 + 1 + + 0 + + + startup_stm32f767xx.s + 0 + 194 + 200 + 1 + + 0 + + + ../Src/stm32f7xx_it.c + 4 + 299 + 321 + 1 + + 0 + + + ..\Src\File_Handling.c + 0 + 23 + 37 + 1 + + 0 + + + ../Src/main.c + 22 + 1592 + 1617 + 1 + + 0 + + + ../Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h + 0 + 2629 + 2635 + 1 + + 0 + + + ../Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h + 0 + 617 + 623 + 1 + + 0 + + + ../Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h + 3 + 344 + 363 + 1 + + 0 + + + ../Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h + 51 + 1473 + 1487 + 1 + + 0 + + + + +
diff --git a/MDK-ARM/For_stm32.uvguix.Viktor b/MDK-ARM/For_stm32.uvguix.Viktor new file mode 100644 index 0000000..f74460e --- /dev/null +++ b/MDK-ARM/For_stm32.uvguix.Viktor @@ -0,0 +1,3700 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + + + + + 38003 + Registers + 140 100 + + + 346 + Code Coverage + 1010 656 + + + 204 + Performance Analyzer + 1170 175 175 146 + + + + + + 35141 + Event Statistics + + 200 50 700 + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 200 133 133 + + + 1937 + Watch 2 + + 200 133 133 + + + 1935 + Call Stack + Locals + + 200 133 133 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -32000 + -32000 + + + -1 + -1 + + + -7 + -6 + 1926 + 1056 + + + + 0 + + 1508 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000A00000000000000010000004F443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF78443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C447269766572735C53544D3332463778785F48414C5F4472697665725C496E635C73746D3332663778785F6C6C5F646D612E68000000001273746D3332663778785F6C6C5F646D612E6800000000FFDC7800FFFFFFFF57443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C5372635C73746D3332663778785F69742E63000000000E73746D3332663778785F69742E6300000000BECEA100FFFFFFFF4F443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C496E635C6D61696E2E6800000000066D61696E2E6800000000F0A0A100FFFFFFFF62443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C4D444B2D41524D5C737461727475705F73746D33326637363778782E730000000015737461727475705F73746D33326637363778782E7300000000BCA8E100FFFFFFFF75443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C447269766572735C53544D3332463778785F48414C5F4472697665725C5372635C73746D3332663778785F68616C2E63000000000F73746D3332663778785F68616C2E63000000009CC1B600FFFFFFFF7A443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C447269766572735C53544D3332463778785F48414C5F4472697665725C496E635C73746D3332663778785F6C6C5F75736172742E68000000001473746D3332663778785F6C6C5F75736172742E6800000000F7B88600FFFFFFFF79443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C447269766572735C53544D3332463778785F48414C5F4472697665725C5372635C73746D3332663778785F68616C5F6164632E63000000001373746D3332663778785F68616C5F6164632E6300000000D9ADC200FFFFFFFF58443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C5372635C46696C655F48616E646C696E672E63000000000F46696C655F48616E646C696E672E6300000000A5C2D700FFFFFFFF6B443A5C75736572735C56696B746F725C5068445C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C4D6964646C6577617265735C54686972645F50617274795C46617446735C7372635C66662E63000000000466662E6300000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000072030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000E0000000 + + + 16 + F40000006600000090050000F7000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + F200000009010000E2010000D6010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + F2000000090100000E02000050030000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000BA0300009A010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000BA0300009A010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000BA0300009A010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000BA0300009A010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + F200000009010000BA0300009A010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000BA0300009A010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000BA0300009A010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000BA0300009A010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000BA0300009A010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + F2000000090100000E02000050030000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + F2000000090100000E02000050030000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000007303000080070000F0030000 + + + 16 + F200000009010000BA0300009A010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000002002000090050000C5020000 + + + 16 + F200000009010000BA0300009A010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + F200000009010000BA0300009A010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + F200000009010000BA0300009A010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + F200000009010000BA0300009A010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000BA0300009A010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + F200000009010000BA0300009A010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + F200000009010000BA0300009A010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + F200000009010000BA0300009A010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000042030000 + + + 16 + F2000000090100000E02000050030000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + F200000009010000BA0300009A010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + F2000000090100000E02000050030000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + F2000000090100000E02000050030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000760300007D070000D7030000 + + + 16 + F2000000090100000E02000050030000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C7000000 + + + 16 + F200000009010000BA0300009A010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000F00300008007000003040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000370200008D050000AC020000 + + + 16 + F200000009010000E2010000D6010000 + + + + 3312 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000E000000090050000E4000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F7000000F40000004F00000090050000E00000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000030020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000047020000A00400004F000000900500003002000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000005B030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000072030000000000004F000000F00000005B0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF000000001C020000900500002002000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003702000090050000DC020000000000002002000090050000C502000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000020020000CC020000C502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000005B030000800700005F030000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000760300008007000007040000000000005F03000080070000F00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2807 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000674656D703332960000000000000014000674656D7033320003544F3604544553540A4750494F5F50494E5F310B4750494F5F50494E5F31330B4750494F5F50494E5F31320A4750494F5F50494E5F3607666C675F746D74085472616E73666572043130303007665F77726974650577726974650753445F6D617472046578706603657870094C6F6E675F446174610A53746174655F446174611F2875696E74385F74292828282A74656D7032293E3E3129262630783031293B0E4350555F73746174655F6D61696E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 978 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000009466F725F73746D33329600000000000000010009466F725F73746D3332000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000080070000E0000000 + + + 16 + F40000006600000080070000F7000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000002E030000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000002E030000 + + + 16 + 8A000000A1000000A6010000E8020000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000005203000032010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000005203000032010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000005203000032010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000005203000032010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C7000000 + + + 16 + 8A000000A10000005203000032010000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000005203000032010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000005203000032010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000005203000032010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000005203000032010000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000002E030000 + + + 16 + 8A000000A1000000A6010000E8020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000002E030000 + + + 16 + 8A000000A1000000A6010000E8020000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 8A000000A10000005203000032010000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000004B030000C0030000F0030000 + + + 16 + 8A000000A10000005203000032010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 8A000000A10000005203000032010000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000080070000E0000000 + + + 16 + 8A000000A10000005203000032010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C7000000 + + + 16 + 8A000000A10000005203000032010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000005203000032010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C7000000 + + + 16 + 8A000000A10000005203000032010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C7000000 + + + 16 + 8A000000A10000005203000032010000 + + + + 35141 + 35141 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C7000000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C7000000 + + + 16 + 8A000000A10000005203000032010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000002E030000 + + + 16 + 8A000000A1000000A6010000E8020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 8A000000A10000005203000032010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 8A000000A1000000A6010000E8020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 8A000000A1000000A6010000E8020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000004B0200008D050000AC020000 + + + 16 + 8A000000A1000000A6010000E8020000 + + + + 470 + 470 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000007D070000C7000000 + + + 16 + 8A000000A10000005203000032010000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000017020000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 966 + 0 + 8192 + 0 + + 16 + 0000000000000000D10300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000F00300008007000003040000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 476 + 0 + 8192 + 1 + + 16 + 000000001C000000E701000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000620300007D070000D7030000 + + + 16 + 8A000000A10000007A0100006E010000 + + + + 3311 + 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000E000000080070000E4000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000F40000006600000080070000F7000000F40000004F00000080070000E00000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000030020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000047020000A00400004F000000900500003002000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000047030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F00000005E030000000000004F000000F0000000470300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF0000000047030000800700004B03000001000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000001000000C4030000620300008007000007040000C40300004B03000080070000F003000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF000000000000000001000000000000000100000001000000FFFFFFFFC00300004B030000C4030000F003000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000300200009005000034020000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000000000000000000004B02000090050000DC020000000000003402000090050000C50200000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2807 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000674656D703332960000000000000014000674656D7033320003544F3604544553540A4750494F5F50494E5F310B4750494F5F50494E5F31330B4750494F5F50494E5F31320A4750494F5F50494E5F3607666C675F746D74085472616E73666572043130303007665F77726974650577726974650753445F6D617472046578706603657870094C6F6E675F446174610A53746174655F446174611F2875696E74385F74292828282A74656D7032293E3E3129262630783031293B0E4350555F73746174655F6D61696E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 955 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + ../Src/main.c + 12 + 1186 + 1801 + 1 + + 0 + + + ../Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h + 1 + 522 + 540 + 1 + + 0 + + + ../Src/stm32f7xx_it.c + 0 + 225 + 245 + 1 + + 0 + + + ../Inc/main.h + 19 + 89 + 126 + 1 + + 0 + + + startup_stm32f767xx.s + 0 + 186 + 200 + 1 + + 0 + + + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c + 0 + 292 + 303 + 1 + + 0 + + + ../Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h + 0 + 2624 + 2635 + 1 + + 0 + + + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c + 0 + 912 + 923 + 1 + + 0 + + + ..\Src\File_Handling.c + 19 + 601 + 615 + 1 + + 0 + + + ../Middlewares/Third_Party/FatFs/src/ff.c + 0 + 3708 + 3611 + 1 + + 0 + + + + +
diff --git a/MDK-ARM/For_stm32.uvguix.é¿¬Γ«α b/MDK-ARM/For_stm32.uvguix.é¿¬Γ«α new file mode 100644 index 0000000..f593023 --- /dev/null +++ b/MDK-ARM/For_stm32.uvguix.é¿¬Γ«α @@ -0,0 +1,3583 @@ + + + + -6.1 + +
### uVision Project, (C) Keil Software
+ + + + + + 38003 + Registers + 115 115 + + + 346 + Code Coverage + 1010 160 + + + 204 + Performance Analyzer + 1170 + + + + + + 1506 + Symbols + + 80 80 80 + + + 1936 + Watch 1 + + 80 80 80 + + + 1937 + Watch 2 + + 80 80 80 + + + 1935 + Call Stack + Locals + + 80 80 80 + + + 2506 + Trace Data + + 75 135 130 95 70 230 200 150 + + + 466 + Source Browser + 500 + 300 + + + + + + + + 0 + 0 + 0 + 50 + 16 + + + + + + + 44 + 2 + 3 + + -1 + -1 + + + -1 + -1 + + + 85 + 74 + 1226 + 678 + + + + 0 + + 1035 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000007000000000000000100000045443A5C56696B746F725C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF4D443A5C56696B746F725C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C5372635C73746D3332663778785F69742E63000000000E73746D3332663778785F69742E6300000000BECEA100FFFFFFFF45443A5C56696B746F725C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C496E635C6D61696E2E6800000000066D61696E2E6800000000F0A0A100FFFFFFFF58443A5C56696B746F725C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C4D444B2D41524D5C737461727475705F73746D33326637363778782E730000000015737461727475705F73746D33326637363778782E7300000000BCA8E100FFFFFFFF72443A5C56696B746F725C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C447269766572735C434D5349535C4465766963655C53545C53544D3332463778785C496E636C7564655C73746D33326637363778782E68000000000D73746D33326637363778782E68000000009CC1B600FFFFFFFF70443A5C56696B746F725C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C447269766572735C53544D3332463778785F48414C5F4472697665725C496E635C73746D3332663778785F6C6C5F75736172742E68000000001473746D3332663778785F6C6C5F75736172742E6800000000F7B88600FFFFFFFF6E443A5C56696B746F725C4D4950545C5374657068616E5C534F46545C4C6F775F67726164655C466F725F73746D33325F323032335F31315F32365C447269766572735C53544D3332463778785F48414C5F4472697665725C496E635C73746D3332663778785F6C6C5F646D612E68000000001273746D3332663778785F6C6C5F646D612E6800000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F400000066000000800700005A030000 + + + + 0 + Build + + -1 + -1 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000090050000DF000000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000002A030000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 109 + 109 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000002A030000 + + + 16 + D8000000EF000000F40100002F030000 + + + + 1465 + 1465 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002D02000090050000BD020000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000001010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000006300000090050000DF000000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 1935 + 1935 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000300200008D050000A4020000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 195 + 195 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000002A030000 + + + 16 + D8000000EF000000F40100002F030000 + + + + 196 + 196 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED0000002A030000 + + + 16 + D8000000EF000000F40100002F030000 + + + + 197 + 197 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000005B03000080070000E6030000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 198 + 198 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 000000001902000090050000BD020000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000005E0300008D050000BE030000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 203 + 203 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000090050000DF000000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A0040000630000009005000029020000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000002D02000090050000A9020000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 38003 + 38003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000A4020000 + + + 16 + D8000000EF000000F40100002F030000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 000000005B03000090050000D7030000 + + + 16 + D8000000EF000000A00300007F010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000005E0300008D050000BE030000 + + + 16 + D8000000EF000000F40100002F030000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000005E0300008D050000BE030000 + + + 16 + D8000000EF000000F40100002F030000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 030000005E0300008D050000BE030000 + + + 16 + D8000000EF000000F40100002F030000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50016 + 50016 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D0500007C010000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 1 + + 16 + 040000001C000000DE01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 0 + 0 + 0 + 0 + 32767 + 0 + 8192 + 2 + + 16 + 00000000380000006F02000054000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000300200008D05000090020000 + + + 16 + D8000000EF000000C8010000BA010000 + + + + 3236 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100001004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000D8000000EF000000A00300007F010000F40000004F00000090050000DF0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000D8000000EF000000C8010000BA010000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F400000043030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000D8000000EF000000C8010000BA010000000000004F000000F0000000430300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000D8000000EF000000C8010000BA010000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000004303000080070000470300000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000D8000000EF000000A00300007F010000000000004703000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2277 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D5053495F4D6561737572696E67960000000000000014000B554152545F6865616465720007666C675F746D740D5053495F4D6561737572696E670875696E7431365F740C4765744E657874506F696E740453504934016A0553657454340254340544656C617908537465704D6F6465063134204445430D465047415F61727261795F7278126578706572696D656E745F726573756C7473034441430B535049345F5344495F48491148414C5F4750494F5F577269746550696E07737472322C20380B5F5F414444524553535F5F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 680 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000009466F725F73746D33329600000000000000010009466F725F73746D3332000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2373 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + 1 + Debug + + -1 + -1 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F40000004F00000080070000DF000000 + + + 16 + F40000006600000090050000F6000000 + + + + 1005 + 1005 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000025030000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 109 + 109 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000FC010000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 1465 + 1465 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1466 + 1466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1467 + 1467 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1468 + 1468 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1506 + 1506 + 0 + 0 + 0 + 0 + 32767 + 0 + 16384 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1913 + 1913 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1935 + 1935 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + C7030000590300007D070000CD030000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1936 + 1936 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1937 + 1937 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 1939 + 1939 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1940 + 1940 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1941 + 1941 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 1942 + 1942 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 195 + 195 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000FC010000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 196 + 196 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED000000FC010000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 197 + 197 + 0 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 198 + 198 + 1 + 0 + 0 + 0 + 32767 + 0 + 32768 + 0 + + 16 + 0000000042030000C0030000E6030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 199 + 199 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 203 + 203 + 1 + 0 + 0 + 0 + 32767 + 0 + 8192 + 0 + + 16 + F40000006300000080070000DF000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 204 + 204 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 221 + 221 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000000000000000000000000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 2506 + 2506 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 2507 + 2507 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000005203000031010000 + + + + 343 + 343 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 346 + 346 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 35824 + 35824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + F7000000660000008D050000C6000000 + + + 16 + 8A000000A10000005203000031010000 + + + + 35885 + 35885 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35886 + 35886 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35887 + 35887 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35888 + 35888 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35889 + 35889 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35890 + 35890 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35891 + 35891 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35892 + 35892 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35893 + 35893 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35894 + 35894 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35895 + 35895 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35896 + 35896 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35897 + 35897 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35898 + 35898 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35899 + 35899 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35900 + 35900 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35901 + 35901 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35902 + 35902 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35903 + 35903 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35904 + 35904 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 35905 + 35905 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 38003 + 38003 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 0300000066000000ED00000025030000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 38007 + 38007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 8A000000A10000005203000031010000 + + + + 436 + 436 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 437 + 437 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 440 + 440 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 463 + 463 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 466 + 466 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 03000000440200008D050000A4020000 + + + 16 + 8A000000A1000000A6010000E1020000 + + + + 50000 + 50000 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50001 + 50001 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50002 + 50002 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50003 + 50003 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50004 + 50004 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50005 + 50005 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50006 + 50006 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50007 + 50007 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50008 + 50008 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50009 + 50009 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50010 + 50010 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50011 + 50011 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50012 + 50012 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50013 + 50013 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50014 + 50014 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50015 + 50015 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50016 + 50016 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 010000005B0200008D05000076020000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 50017 + 50017 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50018 + 50018 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 50019 + 50019 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + A3040000660000008D05000010020000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 59392 + 59392 + 1 + 0 + 0 + 0 + 940 + 0 + 8192 + 0 + + 16 + 0000000000000000B70300001C000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59393 + 0 + 1 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + 00000000E603000080070000F9030000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59399 + 59399 + 0 + 0 + 0 + 0 + 463 + 0 + 8192 + 1 + + 16 + 000000001C000000DA01000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 59400 + 59400 + 1 + 0 + 0 + 0 + 612 + 0 + 8192 + 2 + + 16 + 000000001C0000006F02000038000000 + + + 16 + 0A0000000A0000006E0000006E000000 + + + + 824 + 824 + 0 + 0 + 0 + 0 + 32767 + 0 + 4096 + 0 + + 16 + C70300005903000085060000CD030000 + + + 16 + 8A000000A10000007A0100006C010000 + + + + 3235 + 000000000B000000000000000020000001000000FFFFFFFFFFFFFFFFF4000000DF00000080070000E3000000010000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000001000000F40000006600000090050000F6000000F40000004F00000080070000DF0000000000000040280056060000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F40000003E030000010000000200000004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F00000002C020000000000004F000000F00000003E0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF000000003E030000800700004203000001000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000001000000CC0200003002000090050000D4020000C40300004203000080070000E603000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF000000000000000001000000000000000100000001000000FFFFFFFFC003000042030000C4030000E603000001000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF0000000029020000900500002D020000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000000000000000000004402000090050000D4020000000000002D02000090050000BD0200000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + + + 59392 + File + + 2289 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D5053495F4D6561737572696E67960000000000000014000D5053495F4D6561737572696E670875696E7431365F740C4765744E657874506F696E740453504934016A0553657454340254340544656C617908537465704D6F6465063134204445430D465047415F61727261795F7278126578706572696D656E745F726573756C7473034441430B535049345F5344495F48491148414C5F4750494F5F577269746550696E07737472322C20380B5F5F414444524553535F5F06687561727431145F5F48414C5F554152545F454E41424C455F495404496E69740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020001001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 1423 + 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000 + + + + 59399 + Build + + 657 + 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 583 + 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000 + + + + 59400 + Debug + + 2362 + 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000004002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000004002800000000000000000000000000000000010000000100000001801B80000000000400290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000004002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000 + + + 898 + 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000 + + + + 0 + 1920 + 1080 + + + + + + 1 + 0 + + 100 + 0 + + ../Src/main.c + 23 + 1544 + 1289 + 1 + + 0 + + + ../Src/stm32f7xx_it.c + 24 + 362 + 396 + 1 + + 0 + + + ../Inc/main.h + 0 + 163 + 186 + 1 + + 0 + + + startup_stm32f767xx.s + 0 + 188 + 200 + 1 + + 0 + + + ../Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h + 0 + 995 + 1018 + 1 + + 0 + + + ../Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h + 44 + 3605 + 3631 + 1 + + 0 + + + ../Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h + 0 + 607 + 621 + 1 + + 0 + + + + +
diff --git a/MDK-ARM/For_stm32.uvoptx b/MDK-ARM/For_stm32.uvoptx new file mode 100644 index 0000000..52f7d65 --- /dev/null +++ b/MDK-ARM/For_stm32.uvoptx @@ -0,0 +1,822 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + For_stm32 + 0x4 + ARM-ADS + + 25000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 18 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 6 + + + + + + + + + + + STLink\ST-LINKIII-KEIL_SWO.dll + + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(6017=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(6016=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + (105=-1,-1,-1,-1,0) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 -FD20020000 -FC1000 -FN2 -FF0STM32F7x_2048 -FS08000000 -FL0200000 -FF1STM32F7xTCM_2048 -FS1200000 -FL1200000 -FP0($$Device:STM32F767ZITx$CMSIS\Flash\STM32F7x_2048.FLM) -FP1($$Device:STM32F767ZITx$CMSIS\Flash\STM32F7xTCM_2048.FLM)) + + + 0 + ST-LINKIII-KEIL_SWO + -U33FF6A064246313349321057 -O2254 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(5BA02477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8000 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN2 -FF0STM32F7x_2048.FLM -FS08000000 -FL0200000 -FP0($$Device:STM32F767ZITx$CMSIS\Flash\STM32F7x_2048.FLM) -FF1STM32F7xTCM_2048.FLM -FS1200000 -FL1200000 -FP1($$Device:STM32F767ZITx$CMSIS\Flash\STM32F7xTCM_2048.FLM) + + + + + 0 + 0 + 1437 + 1 +
134221116
+ 0 + 0 + 0 + 0 + 0 + 1 + ../Src/main.c + + \\For_stm32\../Src/main.c\1437 +
+ + 1 + 0 + 1446 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ../Src/main.c + + +
+
+ + + 0 + 1 + COMMAND + + + 1 + 1 + LD1_curr_setup + + + 2 + 1 + LD1_param + + + 3 + 1 + LD2_curr_setup + + + 4 + 1 + LD2_param + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + System Viewer\USART1 + 35905 + + + + 1 + 0 + 0 + 2 + 10000000 + +
+
+ + + Application/MDK-ARM + 0 + 0 + 0 + 0 + + 1 + 1 + 2 + 0 + 0 + 0 + startup_stm32f767xx.s + startup_stm32f767xx.s + 0 + 0 + + + + + Application/User + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ..\Src\File_Handling.c + File_Handling.c + 0 + 0 + + + 2 + 3 + 1 + 1 + 0 + 0 + ../Src/main.c + main.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ../Src/bsp_driver_sd.c + bsp_driver_sd.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ../Src/sd_diskio.c + sd_diskio.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + ../Src/fatfs.c + fatfs.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + ../Src/fatfs_platform.c + fatfs_platform.c + 0 + 0 + + + 2 + 8 + 1 + 0 + 0 + 0 + ../Src/stm32f7xx_it.c + stm32f7xx_it.c + 0 + 0 + + + 2 + 9 + 1 + 0 + 0 + 0 + ../Src/stm32f7xx_hal_msp.c + stm32f7xx_hal_msp.c + 0 + 0 + + + + + Drivers/STM32F7xx_HAL_Driver + 0 + 0 + 0 + 0 + + 3 + 10 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c + stm32f7xx_hal_adc.c + 0 + 0 + + + 3 + 11 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c + stm32f7xx_hal_adc_ex.c + 0 + 0 + + + 3 + 12 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c + stm32f7xx_hal_rcc.c + 0 + 0 + + + 3 + 13 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c + stm32f7xx_hal_rcc_ex.c + 0 + 0 + + + 3 + 14 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c + stm32f7xx_hal_flash.c + 0 + 0 + + + 3 + 15 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c + stm32f7xx_hal_flash_ex.c + 0 + 0 + + + 3 + 16 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c + stm32f7xx_hal_gpio.c + 0 + 0 + + + 3 + 17 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c + stm32f7xx_hal_dma.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c + stm32f7xx_hal_dma_ex.c + 0 + 0 + + + 3 + 19 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c + stm32f7xx_hal_pwr.c + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c + stm32f7xx_hal_pwr_ex.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c + stm32f7xx_hal_cortex.c + 0 + 0 + + + 3 + 22 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c + stm32f7xx_hal.c + 0 + 0 + + + 3 + 23 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c + stm32f7xx_hal_i2c.c + 0 + 0 + + + 3 + 24 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c + stm32f7xx_hal_i2c_ex.c + 0 + 0 + + + 3 + 25 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c + stm32f7xx_hal_exti.c + 0 + 0 + + + 3 + 26 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c + stm32f7xx_ll_rcc.c + 0 + 0 + + + 3 + 27 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c + stm32f7xx_ll_utils.c + 0 + 0 + + + 3 + 28 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c + stm32f7xx_ll_exti.c + 0 + 0 + + + 3 + 29 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c + stm32f7xx_ll_gpio.c + 0 + 0 + + + 3 + 30 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c + stm32f7xx_ll_dma.c + 0 + 0 + + + 3 + 31 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c + stm32f7xx_ll_sdmmc.c + 0 + 0 + + + 3 + 32 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c + stm32f7xx_hal_sd.c + 0 + 0 + + + 3 + 33 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c + stm32f7xx_ll_spi.c + 0 + 0 + + + 3 + 34 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c + stm32f7xx_hal_tim.c + 0 + 0 + + + 3 + 35 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c + stm32f7xx_hal_tim_ex.c + 0 + 0 + + + 3 + 36 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c + stm32f7xx_ll_tim.c + 0 + 0 + + + 3 + 37 + 1 + 0 + 0 + 0 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c + stm32f7xx_ll_usart.c + 0 + 0 + + + + + Drivers/CMSIS + 0 + 0 + 0 + 0 + + 4 + 38 + 1 + 0 + 0 + 0 + ../Src/system_stm32f7xx.c + system_stm32f7xx.c + 0 + 0 + + + + + Middlewares/FatFs + 0 + 0 + 0 + 0 + + 5 + 39 + 1 + 0 + 0 + 0 + ../Middlewares/Third_Party/FatFs/src/diskio.c + diskio.c + 0 + 0 + + + 5 + 40 + 1 + 0 + 0 + 0 + ../Middlewares/Third_Party/FatFs/src/ff.c + ff.c + 0 + 0 + + + 5 + 41 + 1 + 0 + 0 + 0 + ../Middlewares/Third_Party/FatFs/src/ff_gen_drv.c + ff_gen_drv.c + 0 + 0 + + + 5 + 42 + 1 + 0 + 0 + 0 + ../Middlewares/Third_Party/FatFs/src/option/syscall.c + syscall.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
diff --git a/MDK-ARM/For_stm32.uvprojx b/MDK-ARM/For_stm32.uvprojx new file mode 100644 index 0000000..cc09963 --- /dev/null +++ b/MDK-ARM/For_stm32.uvprojx @@ -0,0 +1,1159 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + For_stm32 + 0x4 + ARM-ADS + 5060960::V5.06 update 7 (build 960)::ARMCC + 1 + + + STM32F767ZITx + STMicroelectronics + Keil.STM32F7xx_DFP.2.16.0 + https://www.keil.com/pack/ + IRAM(0x20000000-0x2007FFFF) IROM(0x8000000-0x81FFFFF) CLOCK(12000000) FPU3(DFPU) CPUTYPE("Cortex-M7") ELITTLE TZ + + + + 0 + + + + + + + + + + + $$Device:STM32F767ZITx$CMSIS\SVD\STM32F767.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + For_stm32\ + For_stm32 + 1 + 0 + 1 + 1 + 1 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 1 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP -MPU + DCM.DLL + -pCM7 + SARMCM3.DLL + -MPU + TCM.DLL + -pCM7 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4101 + + 1 + BIN\UL2V8M.DLL + "" () + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M7" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 3 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 0 + 3 + 4 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x80000 + + + 1 + 0x8000000 + 0x200000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x200000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x80000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 3 + 0 + 0 + 1 + 0 + 0 + 3 + 3 + 1 + 1 + 0 + 0 + 0 + + + USE_HAL_DRIVER,STM32F767xx,USE_FULL_LL_DRIVER + + ../Inc;../Drivers/STM32F7xx_HAL_Driver/Inc;../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy;../Middlewares/Third_Party/FatFs/src;../Drivers/CMSIS/Device/ST/STM32F7xx/Include;../Drivers/CMSIS/Include + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 4 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + + + + + + + + + + + + + + + Application/MDK-ARM + + + startup_stm32f767xx.s + 2 + startup_stm32f767xx.s + + + + + Application/User + + + File_Handling.c + 1 + ..\Src\File_Handling.c + + + main.c + 1 + ../Src/main.c + + + bsp_driver_sd.c + 1 + ../Src/bsp_driver_sd.c + + + sd_diskio.c + 1 + ../Src/sd_diskio.c + + + fatfs.c + 1 + ../Src/fatfs.c + + + fatfs_platform.c + 1 + ../Src/fatfs_platform.c + + + stm32f7xx_it.c + 1 + ../Src/stm32f7xx_it.c + + + stm32f7xx_hal_msp.c + 1 + ../Src/stm32f7xx_hal_msp.c + + + + + Drivers/STM32F7xx_HAL_Driver + + + stm32f7xx_hal_adc.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f7xx_hal_adc_ex.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f7xx_hal_rcc.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c + + + stm32f7xx_hal_rcc_ex.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c + + + stm32f7xx_hal_flash.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c + + + stm32f7xx_hal_flash_ex.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c + + + stm32f7xx_hal_gpio.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c + + + stm32f7xx_hal_dma.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c + + + stm32f7xx_hal_dma_ex.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c + + + stm32f7xx_hal_pwr.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c + + + stm32f7xx_hal_pwr_ex.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c + + + stm32f7xx_hal_cortex.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c + + + stm32f7xx_hal.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c + + + stm32f7xx_hal_i2c.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c + + + stm32f7xx_hal_i2c_ex.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c + + + stm32f7xx_hal_exti.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c + + + stm32f7xx_ll_rcc.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f7xx_ll_utils.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f7xx_ll_exti.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f7xx_ll_gpio.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f7xx_ll_dma.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f7xx_ll_sdmmc.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c + + + stm32f7xx_hal_sd.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c + + + stm32f7xx_ll_spi.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f7xx_hal_tim.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c + + + stm32f7xx_hal_tim_ex.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c + + + stm32f7xx_ll_tim.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f7xx_ll_usart.c + 1 + ../Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + + + Drivers/CMSIS + + + system_stm32f7xx.c + 1 + ../Src/system_stm32f7xx.c + + + + + Middlewares/FatFs + + + diskio.c + 1 + ../Middlewares/Third_Party/FatFs/src/diskio.c + + + ff.c + 1 + ../Middlewares/Third_Party/FatFs/src/ff.c + + + ff_gen_drv.c + 1 + ../Middlewares/Third_Party/FatFs/src/ff_gen_drv.c + + + syscall.c + 1 + ../Middlewares/Third_Party/FatFs/src/option/syscall.c + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + + + + + For_stm32 + 0 + 1 + + + + +
diff --git a/MDK-ARM/For_stm32/ExtDll.iex b/MDK-ARM/For_stm32/ExtDll.iex new file mode 100644 index 0000000..6c0896e --- /dev/null +++ b/MDK-ARM/For_stm32/ExtDll.iex @@ -0,0 +1,2 @@ +[EXTDLL] +Count=0 diff --git a/MDK-ARM/For_stm32/For_stm32.lnp b/MDK-ARM/For_stm32/For_stm32.lnp new file mode 100644 index 0000000..4f55651 --- /dev/null +++ b/MDK-ARM/For_stm32/For_stm32.lnp @@ -0,0 +1,47 @@ +--cpu Cortex-M7.fp.dp +"for_stm32\startup_stm32f767xx.o" +"for_stm32\file_handling.o" +"for_stm32\main.o" +"for_stm32\bsp_driver_sd.o" +"for_stm32\sd_diskio.o" +"for_stm32\fatfs.o" +"for_stm32\fatfs_platform.o" +"for_stm32\stm32f7xx_it.o" +"for_stm32\stm32f7xx_hal_msp.o" +"for_stm32\stm32f7xx_hal_adc.o" +"for_stm32\stm32f7xx_hal_adc_ex.o" +"for_stm32\stm32f7xx_hal_rcc.o" +"for_stm32\stm32f7xx_hal_rcc_ex.o" +"for_stm32\stm32f7xx_hal_flash.o" +"for_stm32\stm32f7xx_hal_flash_ex.o" +"for_stm32\stm32f7xx_hal_gpio.o" +"for_stm32\stm32f7xx_hal_dma.o" +"for_stm32\stm32f7xx_hal_dma_ex.o" +"for_stm32\stm32f7xx_hal_pwr.o" +"for_stm32\stm32f7xx_hal_pwr_ex.o" +"for_stm32\stm32f7xx_hal_cortex.o" +"for_stm32\stm32f7xx_hal.o" +"for_stm32\stm32f7xx_hal_i2c.o" +"for_stm32\stm32f7xx_hal_i2c_ex.o" +"for_stm32\stm32f7xx_hal_exti.o" +"for_stm32\stm32f7xx_ll_rcc.o" +"for_stm32\stm32f7xx_ll_utils.o" +"for_stm32\stm32f7xx_ll_exti.o" +"for_stm32\stm32f7xx_ll_gpio.o" +"for_stm32\stm32f7xx_ll_dma.o" +"for_stm32\stm32f7xx_ll_sdmmc.o" +"for_stm32\stm32f7xx_hal_sd.o" +"for_stm32\stm32f7xx_ll_spi.o" +"for_stm32\stm32f7xx_hal_tim.o" +"for_stm32\stm32f7xx_hal_tim_ex.o" +"for_stm32\stm32f7xx_ll_tim.o" +"for_stm32\stm32f7xx_ll_usart.o" +"for_stm32\system_stm32f7xx.o" +"for_stm32\diskio.o" +"for_stm32\ff.o" +"for_stm32\ff_gen_drv.o" +"for_stm32\syscall.o" +--strict --scatter "For_stm32\For_stm32.sct" +--summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols +--info sizes --info totals --info unused --info veneers +--list "For_stm32.map" -o For_stm32\For_stm32.axf \ No newline at end of file diff --git a/MDK-ARM/For_stm32/For_stm32.sct b/MDK-ARM/For_stm32/For_stm32.sct new file mode 100644 index 0000000..bb4f637 --- /dev/null +++ b/MDK-ARM/For_stm32/For_stm32.sct @@ -0,0 +1,16 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x08000000 0x00200000 { ; load region size_region + ER_IROM1 0x08000000 0x00200000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + .ANY (+XO) + } + RW_IRAM1 0x20000000 0x00080000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/MDK-ARM/For_stm32/For_stm32_sct.Bak b/MDK-ARM/For_stm32/For_stm32_sct.Bak new file mode 100644 index 0000000..c668c36 --- /dev/null +++ b/MDK-ARM/For_stm32/For_stm32_sct.Bak @@ -0,0 +1,15 @@ +; ************************************************************* +; *** Scatter-Loading Description File generated by uVision *** +; ************************************************************* + +LR_IROM1 0x08000000 0x00200000 { ; load region size_region + ER_IROM1 0x08000000 0x00200000 { ; load address = execution address + *.o (RESET, +First) + *(InRoot$$Sections) + .ANY (+RO) + } + RW_IRAM1 0x20000000 0x00080000 { ; RW data + .ANY (+RW +ZI) + } +} + diff --git a/MDK-ARM/For_stm32/bsp_driver_sd.crf b/MDK-ARM/For_stm32/bsp_driver_sd.crf new file mode 100644 index 0000000..b97d78c Binary files /dev/null and b/MDK-ARM/For_stm32/bsp_driver_sd.crf differ diff --git a/MDK-ARM/For_stm32/diskio.crf b/MDK-ARM/For_stm32/diskio.crf new file mode 100644 index 0000000..f9ca472 Binary files /dev/null and b/MDK-ARM/For_stm32/diskio.crf differ diff --git a/MDK-ARM/For_stm32/fatfs.crf b/MDK-ARM/For_stm32/fatfs.crf new file mode 100644 index 0000000..d309c69 Binary files /dev/null and b/MDK-ARM/For_stm32/fatfs.crf differ diff --git a/MDK-ARM/For_stm32/fatfs_platform.crf b/MDK-ARM/For_stm32/fatfs_platform.crf new file mode 100644 index 0000000..3eda6a1 Binary files /dev/null and b/MDK-ARM/For_stm32/fatfs_platform.crf differ diff --git a/MDK-ARM/For_stm32/ff.crf b/MDK-ARM/For_stm32/ff.crf new file mode 100644 index 0000000..75bd932 Binary files /dev/null and b/MDK-ARM/For_stm32/ff.crf differ diff --git a/MDK-ARM/For_stm32/ff_gen_drv.crf b/MDK-ARM/For_stm32/ff_gen_drv.crf new file mode 100644 index 0000000..50808bf Binary files /dev/null and b/MDK-ARM/For_stm32/ff_gen_drv.crf differ diff --git a/MDK-ARM/For_stm32/file_handling.crf b/MDK-ARM/For_stm32/file_handling.crf new file mode 100644 index 0000000..b466ec0 Binary files /dev/null and b/MDK-ARM/For_stm32/file_handling.crf differ diff --git a/MDK-ARM/For_stm32/main.crf b/MDK-ARM/For_stm32/main.crf new file mode 100644 index 0000000..a06b131 Binary files /dev/null and b/MDK-ARM/For_stm32/main.crf differ diff --git a/MDK-ARM/For_stm32/sd_diskio.crf b/MDK-ARM/For_stm32/sd_diskio.crf new file mode 100644 index 0000000..3573dfb Binary files /dev/null and b/MDK-ARM/For_stm32/sd_diskio.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal.crf b/MDK-ARM/For_stm32/stm32f7xx_hal.crf new file mode 100644 index 0000000..e1b7ad8 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_adc.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_adc.crf new file mode 100644 index 0000000..f3c29c2 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_adc.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_adc_ex.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_adc_ex.crf new file mode 100644 index 0000000..76340b3 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_adc_ex.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_cortex.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_cortex.crf new file mode 100644 index 0000000..e7c4eb0 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_cortex.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_dma.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_dma.crf new file mode 100644 index 0000000..631dc82 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_dma.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_dma_ex.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_dma_ex.crf new file mode 100644 index 0000000..12b0192 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_dma_ex.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_exti.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_exti.crf new file mode 100644 index 0000000..9460855 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_exti.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_flash.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_flash.crf new file mode 100644 index 0000000..64197e9 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_flash.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_flash_ex.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_flash_ex.crf new file mode 100644 index 0000000..8ae7ac0 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_flash_ex.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_gpio.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_gpio.crf new file mode 100644 index 0000000..e0c8d53 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_gpio.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_i2c.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_i2c.crf new file mode 100644 index 0000000..5a8b951 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_i2c.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_i2c_ex.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_i2c_ex.crf new file mode 100644 index 0000000..a3746ce Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_i2c_ex.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_msp.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_msp.crf new file mode 100644 index 0000000..0175a9d Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_msp.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_pwr.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_pwr.crf new file mode 100644 index 0000000..c82d454 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_pwr.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_pwr_ex.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_pwr_ex.crf new file mode 100644 index 0000000..0126768 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_pwr_ex.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_rcc.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_rcc.crf new file mode 100644 index 0000000..817f4de Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_rcc.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_rcc_ex.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_rcc_ex.crf new file mode 100644 index 0000000..990bea4 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_rcc_ex.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_sd.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_sd.crf new file mode 100644 index 0000000..78c31fe Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_sd.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_spi.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_spi.crf new file mode 100644 index 0000000..bf3e443 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_spi.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_spi_ex.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_spi_ex.crf new file mode 100644 index 0000000..8d55ae9 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_spi_ex.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_tim.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_tim.crf new file mode 100644 index 0000000..f2f1cf4 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_tim.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_tim_ex.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_tim_ex.crf new file mode 100644 index 0000000..85fdbf1 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_tim_ex.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_uart.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_uart.crf new file mode 100644 index 0000000..e33d424 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_uart.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_hal_uart_ex.crf b/MDK-ARM/For_stm32/stm32f7xx_hal_uart_ex.crf new file mode 100644 index 0000000..057310f Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_hal_uart_ex.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_it.crf b/MDK-ARM/For_stm32/stm32f7xx_it.crf new file mode 100644 index 0000000..0ae975c Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_it.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_ll_adc.crf b/MDK-ARM/For_stm32/stm32f7xx_ll_adc.crf new file mode 100644 index 0000000..c1c05bd Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_ll_adc.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_ll_dma.crf b/MDK-ARM/For_stm32/stm32f7xx_ll_dma.crf new file mode 100644 index 0000000..38baa55 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_ll_dma.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_ll_exti.crf b/MDK-ARM/For_stm32/stm32f7xx_ll_exti.crf new file mode 100644 index 0000000..beb57bc Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_ll_exti.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_ll_gpio.crf b/MDK-ARM/For_stm32/stm32f7xx_ll_gpio.crf new file mode 100644 index 0000000..6f54542 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_ll_gpio.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_ll_rcc.crf b/MDK-ARM/For_stm32/stm32f7xx_ll_rcc.crf new file mode 100644 index 0000000..ef951a6 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_ll_rcc.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_ll_sdmmc.crf b/MDK-ARM/For_stm32/stm32f7xx_ll_sdmmc.crf new file mode 100644 index 0000000..4bd1a29 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_ll_sdmmc.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_ll_spi.crf b/MDK-ARM/For_stm32/stm32f7xx_ll_spi.crf new file mode 100644 index 0000000..b53672b Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_ll_spi.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_ll_tim.crf b/MDK-ARM/For_stm32/stm32f7xx_ll_tim.crf new file mode 100644 index 0000000..47ce695 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_ll_tim.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_ll_usart.crf b/MDK-ARM/For_stm32/stm32f7xx_ll_usart.crf new file mode 100644 index 0000000..08fad1b Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_ll_usart.crf differ diff --git a/MDK-ARM/For_stm32/stm32f7xx_ll_utils.crf b/MDK-ARM/For_stm32/stm32f7xx_ll_utils.crf new file mode 100644 index 0000000..325be36 Binary files /dev/null and b/MDK-ARM/For_stm32/stm32f7xx_ll_utils.crf differ diff --git a/MDK-ARM/For_stm32/syscall.crf b/MDK-ARM/For_stm32/syscall.crf new file mode 100644 index 0000000..578a6da Binary files /dev/null and b/MDK-ARM/For_stm32/syscall.crf differ diff --git a/MDK-ARM/For_stm32/system_stm32f7xx.crf b/MDK-ARM/For_stm32/system_stm32f7xx.crf new file mode 100644 index 0000000..b5633a6 Binary files /dev/null and b/MDK-ARM/For_stm32/system_stm32f7xx.crf differ diff --git a/MDK-ARM/startup_stm32f767xx.s b/MDK-ARM/startup_stm32f767xx.s new file mode 100644 index 0000000..c7dee5c --- /dev/null +++ b/MDK-ARM/startup_stm32f767xx.s @@ -0,0 +1,502 @@ +;******************************************************************************* +;* File Name : startup_stm32f767xx.s +;* Author : MCD Application Team +;* Description : STM32F767xx devices vector table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the CortexM7 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;******************************************************************************** +;* @attention +;* +;* Copyright (c) 2016 STMicroelectronics. +;* All rights reserved. +;* +;* This software is licensed under terms that can be found in the LICENSE file +;* in the root directory of this software component. +;* If no LICENSE file comes with this software, it is provided AS-IS. +; +;******************************************************************************* +;* <<< Use Configuration Wizard in Context Menu >>> +; +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x4000 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x2000 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window WatchDog + DCD PVD_IRQHandler ; PVD through EXTI Line detection + DCD TAMP_STAMP_IRQHandler ; Tamper and TimeStamps through the EXTI line + DCD RTC_WKUP_IRQHandler ; RTC Wakeup through the EXTI line + DCD FLASH_IRQHandler ; FLASH + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line0 + DCD EXTI1_IRQHandler ; EXTI Line1 + DCD EXTI2_IRQHandler ; EXTI Line2 + DCD EXTI3_IRQHandler ; EXTI Line3 + DCD EXTI4_IRQHandler ; EXTI Line4 + DCD DMA1_Stream0_IRQHandler ; DMA1 Stream 0 + DCD DMA1_Stream1_IRQHandler ; DMA1 Stream 1 + DCD DMA1_Stream2_IRQHandler ; DMA1 Stream 2 + DCD DMA1_Stream3_IRQHandler ; DMA1 Stream 3 + DCD DMA1_Stream4_IRQHandler ; DMA1 Stream 4 + DCD DMA1_Stream5_IRQHandler ; DMA1 Stream 5 + DCD DMA1_Stream6_IRQHandler ; DMA1 Stream 6 + DCD ADC_IRQHandler ; ADC1, ADC2 and ADC3s + DCD CAN1_TX_IRQHandler ; CAN1 TX + DCD CAN1_RX0_IRQHandler ; CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; External Line[9:5]s + DCD TIM1_BRK_TIM9_IRQHandler ; TIM1 Break and TIM9 + DCD TIM1_UP_TIM10_IRQHandler ; TIM1 Update and TIM10 + DCD TIM1_TRG_COM_TIM11_IRQHandler ; TIM1 Trigger and Commutation and TIM11 + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; External Line[15:10]s + DCD RTC_Alarm_IRQHandler ; RTC Alarm (A and B) through EXTI Line + DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line + DCD TIM8_BRK_TIM12_IRQHandler ; TIM8 Break and TIM12 + DCD TIM8_UP_TIM13_IRQHandler ; TIM8 Update and TIM13 + DCD TIM8_TRG_COM_TIM14_IRQHandler ; TIM8 Trigger and Commutation and TIM14 + DCD TIM8_CC_IRQHandler ; TIM8 Capture Compare + DCD DMA1_Stream7_IRQHandler ; DMA1 Stream7 + DCD FMC_IRQHandler ; FMC + DCD SDMMC1_IRQHandler ; SDMMC1 + DCD TIM5_IRQHandler ; TIM5 + DCD SPI3_IRQHandler ; SPI3 + DCD UART4_IRQHandler ; UART4 + DCD UART5_IRQHandler ; UART5 + DCD TIM6_DAC_IRQHandler ; TIM6 and DAC1&2 underrun errors + DCD TIM7_IRQHandler ; TIM7 + DCD DMA2_Stream0_IRQHandler ; DMA2 Stream 0 + DCD DMA2_Stream1_IRQHandler ; DMA2 Stream 1 + DCD DMA2_Stream2_IRQHandler ; DMA2 Stream 2 + DCD DMA2_Stream3_IRQHandler ; DMA2 Stream 3 + DCD DMA2_Stream4_IRQHandler ; DMA2 Stream 4 + DCD ETH_IRQHandler ; Ethernet + DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line + DCD CAN2_TX_IRQHandler ; CAN2 TX + DCD CAN2_RX0_IRQHandler ; CAN2 RX0 + DCD CAN2_RX1_IRQHandler ; CAN2 RX1 + DCD CAN2_SCE_IRQHandler ; CAN2 SCE + DCD OTG_FS_IRQHandler ; USB OTG FS + DCD DMA2_Stream5_IRQHandler ; DMA2 Stream 5 + DCD DMA2_Stream6_IRQHandler ; DMA2 Stream 6 + DCD DMA2_Stream7_IRQHandler ; DMA2 Stream 7 + DCD USART6_IRQHandler ; USART6 + DCD I2C3_EV_IRQHandler ; I2C3 event + DCD I2C3_ER_IRQHandler ; I2C3 error + DCD OTG_HS_EP1_OUT_IRQHandler ; USB OTG HS End Point 1 Out + DCD OTG_HS_EP1_IN_IRQHandler ; USB OTG HS End Point 1 In + DCD OTG_HS_WKUP_IRQHandler ; USB OTG HS Wakeup through EXTI + DCD OTG_HS_IRQHandler ; USB OTG HS + DCD DCMI_IRQHandler ; DCMI + DCD 0 ; Reserved + DCD RNG_IRQHandler ; Rng + DCD FPU_IRQHandler ; FPU + DCD UART7_IRQHandler ; UART7 + DCD UART8_IRQHandler ; UART8 + DCD SPI4_IRQHandler ; SPI4 + DCD SPI5_IRQHandler ; SPI5 + DCD SPI6_IRQHandler ; SPI6 + DCD SAI1_IRQHandler ; SAI1 + DCD LTDC_IRQHandler ; LTDC + DCD LTDC_ER_IRQHandler ; LTDC error + DCD DMA2D_IRQHandler ; DMA2D + DCD SAI2_IRQHandler ; SAI2 + DCD QUADSPI_IRQHandler ; QUADSPI + DCD LPTIM1_IRQHandler ; LPTIM1 + DCD CEC_IRQHandler ; HDMI_CEC + DCD I2C4_EV_IRQHandler ; I2C4 Event + DCD I2C4_ER_IRQHandler ; I2C4 Error + DCD SPDIF_RX_IRQHandler ; SPDIF_RX + DCD 0 ; Reserved + DCD DFSDM1_FLT0_IRQHandler ; DFSDM1 Filter 0 global Interrupt + DCD DFSDM1_FLT1_IRQHandler ; DFSDM1 Filter 1 global Interrupt + DCD DFSDM1_FLT2_IRQHandler ; DFSDM1 Filter 2 global Interrupt + DCD DFSDM1_FLT3_IRQHandler ; DFSDM1 Filter 3 global Interrupt + DCD SDMMC2_IRQHandler ; SDMMC2 + DCD CAN3_TX_IRQHandler ; CAN3 TX + DCD CAN3_RX0_IRQHandler ; CAN3 RX0 + DCD CAN3_RX1_IRQHandler ; CAN3 RX1 + DCD CAN3_SCE_IRQHandler ; CAN3 SCE + DCD JPEG_IRQHandler ; JPEG + DCD MDIOS_IRQHandler ; MDIOS +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT SystemInit + IMPORT __main + + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMP_STAMP_IRQHandler [WEAK] + EXPORT RTC_WKUP_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Stream0_IRQHandler [WEAK] + EXPORT DMA1_Stream1_IRQHandler [WEAK] + EXPORT DMA1_Stream2_IRQHandler [WEAK] + EXPORT DMA1_Stream3_IRQHandler [WEAK] + EXPORT DMA1_Stream4_IRQHandler [WEAK] + EXPORT DMA1_Stream5_IRQHandler [WEAK] + EXPORT DMA1_Stream6_IRQHandler [WEAK] + EXPORT ADC_IRQHandler [WEAK] + EXPORT CAN1_TX_IRQHandler [WEAK] + EXPORT CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_TIM9_IRQHandler [WEAK] + EXPORT TIM1_UP_TIM10_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_TIM11_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTC_Alarm_IRQHandler [WEAK] + EXPORT OTG_FS_WKUP_IRQHandler [WEAK] + EXPORT TIM8_BRK_TIM12_IRQHandler [WEAK] + EXPORT TIM8_UP_TIM13_IRQHandler [WEAK] + EXPORT TIM8_TRG_COM_TIM14_IRQHandler [WEAK] + EXPORT TIM8_CC_IRQHandler [WEAK] + EXPORT DMA1_Stream7_IRQHandler [WEAK] + EXPORT FMC_IRQHandler [WEAK] + EXPORT SDMMC1_IRQHandler [WEAK] + EXPORT TIM5_IRQHandler [WEAK] + EXPORT SPI3_IRQHandler [WEAK] + EXPORT UART4_IRQHandler [WEAK] + EXPORT UART5_IRQHandler [WEAK] + EXPORT TIM6_DAC_IRQHandler [WEAK] + EXPORT TIM7_IRQHandler [WEAK] + EXPORT DMA2_Stream0_IRQHandler [WEAK] + EXPORT DMA2_Stream1_IRQHandler [WEAK] + EXPORT DMA2_Stream2_IRQHandler [WEAK] + EXPORT DMA2_Stream3_IRQHandler [WEAK] + EXPORT DMA2_Stream4_IRQHandler [WEAK] + EXPORT ETH_IRQHandler [WEAK] + EXPORT ETH_WKUP_IRQHandler [WEAK] + EXPORT CAN2_TX_IRQHandler [WEAK] + EXPORT CAN2_RX0_IRQHandler [WEAK] + EXPORT CAN2_RX1_IRQHandler [WEAK] + EXPORT CAN2_SCE_IRQHandler [WEAK] + EXPORT OTG_FS_IRQHandler [WEAK] + EXPORT DMA2_Stream5_IRQHandler [WEAK] + EXPORT DMA2_Stream6_IRQHandler [WEAK] + EXPORT DMA2_Stream7_IRQHandler [WEAK] + EXPORT USART6_IRQHandler [WEAK] + EXPORT I2C3_EV_IRQHandler [WEAK] + EXPORT I2C3_ER_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_OUT_IRQHandler [WEAK] + EXPORT OTG_HS_EP1_IN_IRQHandler [WEAK] + EXPORT OTG_HS_WKUP_IRQHandler [WEAK] + EXPORT OTG_HS_IRQHandler [WEAK] + EXPORT DCMI_IRQHandler [WEAK] + EXPORT RNG_IRQHandler [WEAK] + EXPORT FPU_IRQHandler [WEAK] + EXPORT UART7_IRQHandler [WEAK] + EXPORT UART8_IRQHandler [WEAK] + EXPORT SPI4_IRQHandler [WEAK] + EXPORT SPI5_IRQHandler [WEAK] + EXPORT SPI6_IRQHandler [WEAK] + EXPORT SAI1_IRQHandler [WEAK] + EXPORT LTDC_IRQHandler [WEAK] + EXPORT LTDC_ER_IRQHandler [WEAK] + EXPORT DMA2D_IRQHandler [WEAK] + EXPORT SAI2_IRQHandler [WEAK] + EXPORT QUADSPI_IRQHandler [WEAK] + EXPORT LPTIM1_IRQHandler [WEAK] + EXPORT CEC_IRQHandler [WEAK] + EXPORT I2C4_EV_IRQHandler [WEAK] + EXPORT I2C4_ER_IRQHandler [WEAK] + EXPORT SPDIF_RX_IRQHandler [WEAK] + EXPORT DFSDM1_FLT0_IRQHandler [WEAK] + EXPORT DFSDM1_FLT1_IRQHandler [WEAK] + EXPORT DFSDM1_FLT2_IRQHandler [WEAK] + EXPORT DFSDM1_FLT3_IRQHandler [WEAK] + EXPORT SDMMC2_IRQHandler [WEAK] + EXPORT CAN3_TX_IRQHandler [WEAK] + EXPORT CAN3_RX0_IRQHandler [WEAK] + EXPORT CAN3_RX1_IRQHandler [WEAK] + EXPORT CAN3_SCE_IRQHandler [WEAK] + EXPORT JPEG_IRQHandler [WEAK] + EXPORT MDIOS_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMP_STAMP_IRQHandler +RTC_WKUP_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Stream0_IRQHandler +DMA1_Stream1_IRQHandler +DMA1_Stream2_IRQHandler +DMA1_Stream3_IRQHandler +DMA1_Stream4_IRQHandler +DMA1_Stream5_IRQHandler +DMA1_Stream6_IRQHandler +ADC_IRQHandler +CAN1_TX_IRQHandler +CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_TIM9_IRQHandler +TIM1_UP_TIM10_IRQHandler +TIM1_TRG_COM_TIM11_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTC_Alarm_IRQHandler +OTG_FS_WKUP_IRQHandler +TIM8_BRK_TIM12_IRQHandler +TIM8_UP_TIM13_IRQHandler +TIM8_TRG_COM_TIM14_IRQHandler +TIM8_CC_IRQHandler +DMA1_Stream7_IRQHandler +FMC_IRQHandler +SDMMC1_IRQHandler +TIM5_IRQHandler +SPI3_IRQHandler +UART4_IRQHandler +UART5_IRQHandler +TIM6_DAC_IRQHandler +TIM7_IRQHandler +DMA2_Stream0_IRQHandler +DMA2_Stream1_IRQHandler +DMA2_Stream2_IRQHandler +DMA2_Stream3_IRQHandler +DMA2_Stream4_IRQHandler +ETH_IRQHandler +ETH_WKUP_IRQHandler +CAN2_TX_IRQHandler +CAN2_RX0_IRQHandler +CAN2_RX1_IRQHandler +CAN2_SCE_IRQHandler +OTG_FS_IRQHandler +DMA2_Stream5_IRQHandler +DMA2_Stream6_IRQHandler +DMA2_Stream7_IRQHandler +USART6_IRQHandler +I2C3_EV_IRQHandler +I2C3_ER_IRQHandler +OTG_HS_EP1_OUT_IRQHandler +OTG_HS_EP1_IN_IRQHandler +OTG_HS_WKUP_IRQHandler +OTG_HS_IRQHandler +DCMI_IRQHandler +RNG_IRQHandler +FPU_IRQHandler +UART7_IRQHandler +UART8_IRQHandler +SPI4_IRQHandler +SPI5_IRQHandler +SPI6_IRQHandler +SAI1_IRQHandler +LTDC_IRQHandler +LTDC_ER_IRQHandler +DMA2D_IRQHandler +SAI2_IRQHandler +QUADSPI_IRQHandler +LPTIM1_IRQHandler +CEC_IRQHandler +I2C4_EV_IRQHandler +I2C4_ER_IRQHandler +SPDIF_RX_IRQHandler +DFSDM1_FLT0_IRQHandler +DFSDM1_FLT1_IRQHandler +DFSDM1_FLT2_IRQHandler +DFSDM1_FLT3_IRQHandler +SDMMC2_IRQHandler +CAN3_TX_IRQHandler +CAN3_RX0_IRQHandler +CAN3_RX1_IRQHandler +CAN3_SCE_IRQHandler +JPEG_IRQHandler +MDIOS_IRQHandler + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8e79b95 --- /dev/null +++ b/Makefile @@ -0,0 +1,225 @@ +########################################################################################################################## +# File automatically-generated by tool: [projectgenerator] version: [4.5.0-B34] date: [Wed Dec 11 12:01:07 MSK 2024] +########################################################################################################################## + +# ------------------------------------------------ +# Generic Makefile (based on gcc) +# +# ChangeLog : +# 2017-02-10 - Several enhancements + project update mode +# 2015-07-22 - first version +# ------------------------------------------------ + +###################################### +# target +###################################### +TARGET = For_stm32 + + +###################################### +# building variables +###################################### +# debug build? +DEBUG = 1 +# optimization +OPT = -Og + + +####################################### +# paths +####################################### +# Build path +BUILD_DIR = build + +###################################### +# source +###################################### +# C sources +C_SOURCES = \ +Src/main.c \ +Src/bsp_driver_sd.c \ +Src/sd_diskio.c \ +Src/fatfs.c \ +Src/fatfs_platform.c \ +Src/stm32f7xx_it.c \ +Src/stm32f7xx_hal_msp.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c \ +Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c \ +Src/system_stm32f7xx.c \ +Middlewares/Third_Party/FatFs/src/diskio.c \ +Middlewares/Third_Party/FatFs/src/ff.c \ +Middlewares/Third_Party/FatFs/src/ff_gen_drv.c \ +Middlewares/Third_Party/FatFs/src/option/syscall.c \ +Src/sysmem.c \ +Src/syscalls.c + +# ASM sources +ASM_SOURCES = \ +startup_stm32f767xx.s + +# ASM sources +ASMM_SOURCES = + + +####################################### +# binaries +####################################### +PREFIX = arm-none-eabi- +# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx) +# either it can be added to the PATH environment variable. +ifdef GCC_PATH +CC = $(GCC_PATH)/$(PREFIX)gcc +AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp +CP = $(GCC_PATH)/$(PREFIX)objcopy +SZ = $(GCC_PATH)/$(PREFIX)size +else +CC = $(PREFIX)gcc +AS = $(PREFIX)gcc -x assembler-with-cpp +CP = $(PREFIX)objcopy +SZ = $(PREFIX)size +endif +HEX = $(CP) -O ihex +BIN = $(CP) -O binary -S + +####################################### +# CFLAGS +####################################### +# cpu +CPU = -mcpu=cortex-m7 + +# fpu +FPU = -mfpu=fpv5-d16 + +# float-abi +FLOAT-ABI = -mfloat-abi=hard + +# mcu +MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI) + +# macros for gcc +# AS defines +AS_DEFS = + +# C defines +C_DEFS = \ +-DUSE_FULL_LL_DRIVER \ +-DUSE_HAL_DRIVER \ +-DSTM32F767xx + + +# AS includes +AS_INCLUDES = + +# C includes +C_INCLUDES = \ +-IInc \ +-IDrivers/STM32F7xx_HAL_Driver/Inc \ +-IDrivers/STM32F7xx_HAL_Driver/Inc/Legacy \ +-IMiddlewares/Third_Party/FatFs/src \ +-IDrivers/CMSIS/Device/ST/STM32F7xx/Include \ +-IDrivers/CMSIS/Include + + +# compile gcc flags +ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections + +CFLAGS += $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections + +ifeq ($(DEBUG), 1) +CFLAGS += -g -gdwarf-2 +endif + + +# Generate dependency information +CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" + + +####################################### +# LDFLAGS +####################################### +# link script +LDSCRIPT = STM32F767ZITx_FLASH.ld + +# libraries +LIBS = -lc -lm -lnosys +LIBDIR = +LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections + +# default action: build all +all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin + + +####################################### +# build the application +####################################### +# list of objects +OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o))) +vpath %.c $(sort $(dir $(C_SOURCES))) +# list of ASM program objects +OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o))) +vpath %.s $(sort $(dir $(ASM_SOURCES))) +OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASMM_SOURCES:.S=.o))) +vpath %.S $(sort $(dir $(ASMM_SOURCES))) + +$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) + $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@ + +$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR) + $(AS) -c $(CFLAGS) $< -o $@ +$(BUILD_DIR)/%.o: %.S Makefile | $(BUILD_DIR) + $(AS) -c $(CFLAGS) $< -o $@ + +$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile + $(info CC is $(CC)) + $(info OBJECTS is $(OBJECTS)) + $(info LDFLAGS is $(LDFLAGS)) + $(CC) $(OBJECTS) $(LDFLAGS) -o $@ + $(SZ) $@ + +$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR) + $(HEX) $< $@ + +$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR) + $(BIN) $< $@ + +$(BUILD_DIR): + mkdir $@ + +####################################### +# clean up +####################################### +clean: + -rm -fR $(BUILD_DIR) + +####################################### +# dependencies +####################################### +-include $(wildcard $(BUILD_DIR)/*.d) + +# *** EOF *** diff --git a/Middlewares/Third_Party/FatFs/src/diskio.c b/Middlewares/Third_Party/FatFs/src/diskio.c new file mode 100644 index 0000000..6c0881f --- /dev/null +++ b/Middlewares/Third_Party/FatFs/src/diskio.c @@ -0,0 +1,141 @@ +/*-----------------------------------------------------------------------*/ +/* Low level disk I/O module skeleton for FatFs (C)ChaN, 2017 */ +/* */ +/* Portions COPYRIGHT 2017 STMicroelectronics */ +/* Portions Copyright (C) 2017, ChaN, all right reserved */ +/*-----------------------------------------------------------------------*/ +/* If a working storage control module is available, it should be */ +/* attached to the FatFs via a glue function rather than modifying it. */ +/* This is an example of glue functions to attach various existing */ +/* storage control modules to the FatFs module with a defined API. */ +/*-----------------------------------------------------------------------*/ + +/* Includes ------------------------------------------------------------------*/ +#include "diskio.h" +#include "ff_gen_drv.h" + +#if defined ( __GNUC__ ) +#ifndef __weak +#define __weak __attribute__((weak)) +#endif +#endif + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +extern Disk_drvTypeDef disk; + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** + * @brief Gets Disk Status + * @param pdrv: Physical drive number (0..) + * @retval DSTATUS: Operation status + */ +DSTATUS disk_status ( + BYTE pdrv /* Physical drive number to identify the drive */ +) +{ + DSTATUS stat; + + stat = disk.drv[pdrv]->disk_status(disk.lun[pdrv]); + return stat; +} + +/** + * @brief Initializes a Drive + * @param pdrv: Physical drive number (0..) + * @retval DSTATUS: Operation status + */ +DSTATUS disk_initialize ( + BYTE pdrv /* Physical drive nmuber to identify the drive */ +) +{ + DSTATUS stat = RES_OK; + + if(disk.is_initialized[pdrv] == 0) + { + disk.is_initialized[pdrv] = 1; + stat = disk.drv[pdrv]->disk_initialize(disk.lun[pdrv]); + } + return stat; +} + +/** + * @brief Reads Sector(s) + * @param pdrv: Physical drive number (0..) + * @param *buff: Data buffer to store read data + * @param sector: Sector address (LBA) + * @param count: Number of sectors to read (1..128) + * @retval DRESULT: Operation result + */ +DRESULT disk_read ( + BYTE pdrv, /* Physical drive nmuber to identify the drive */ + BYTE *buff, /* Data buffer to store read data */ + DWORD sector, /* Sector address in LBA */ + UINT count /* Number of sectors to read */ +) +{ + DRESULT res; + + res = disk.drv[pdrv]->disk_read(disk.lun[pdrv], buff, sector, count); + return res; +} + +/** + * @brief Writes Sector(s) + * @param pdrv: Physical drive number (0..) + * @param *buff: Data to be written + * @param sector: Sector address (LBA) + * @param count: Number of sectors to write (1..128) + * @retval DRESULT: Operation result + */ +#if _USE_WRITE == 1 +DRESULT disk_write ( + BYTE pdrv, /* Physical drive nmuber to identify the drive */ + const BYTE *buff, /* Data to be written */ + DWORD sector, /* Sector address in LBA */ + UINT count /* Number of sectors to write */ +) +{ + DRESULT res; + + res = disk.drv[pdrv]->disk_write(disk.lun[pdrv], buff, sector, count); + return res; +} +#endif /* _USE_WRITE == 1 */ + +/** + * @brief I/O control operation + * @param pdrv: Physical drive number (0..) + * @param cmd: Control code + * @param *buff: Buffer to send/receive control data + * @retval DRESULT: Operation result + */ +#if _USE_IOCTL == 1 +DRESULT disk_ioctl ( + BYTE pdrv, /* Physical drive nmuber (0..) */ + BYTE cmd, /* Control code */ + void *buff /* Buffer to send/receive control data */ +) +{ + DRESULT res; + + res = disk.drv[pdrv]->disk_ioctl(disk.lun[pdrv], cmd, buff); + return res; +} +#endif /* _USE_IOCTL == 1 */ + +/** + * @brief Gets Time from RTC + * @param None + * @retval Time in DWORD + */ +__weak DWORD get_fattime (void) +{ + return 0; +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/Middlewares/Third_Party/FatFs/src/diskio.h b/Middlewares/Third_Party/FatFs/src/diskio.h new file mode 100644 index 0000000..7a417d9 --- /dev/null +++ b/Middlewares/Third_Party/FatFs/src/diskio.h @@ -0,0 +1,80 @@ +/*-----------------------------------------------------------------------/ +/ Low level disk interface modlue include file (C)ChaN, 2014 / +/-----------------------------------------------------------------------*/ + +#ifndef _DISKIO_DEFINED +#define _DISKIO_DEFINED + +#ifdef __cplusplus +extern "C" { +#endif + +#define _USE_WRITE 1 /* 1: Enable disk_write function */ +#define _USE_IOCTL 1 /* 1: Enable disk_ioctl function */ + +#include "integer.h" + + +/* Status of Disk Functions */ +typedef BYTE DSTATUS; + +/* Results of Disk Functions */ +typedef enum { + RES_OK = 0, /* 0: Successful */ + RES_ERROR, /* 1: R/W Error */ + RES_WRPRT, /* 2: Write Protected */ + RES_NOTRDY, /* 3: Not Ready */ + RES_PARERR /* 4: Invalid Parameter */ +} DRESULT; + + +/*---------------------------------------*/ +/* Prototypes for disk control functions */ + + +DSTATUS disk_initialize (BYTE pdrv); +DSTATUS disk_status (BYTE pdrv); +DRESULT disk_read (BYTE pdrv, BYTE* buff, DWORD sector, UINT count); +DRESULT disk_write (BYTE pdrv, const BYTE* buff, DWORD sector, UINT count); +DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff); +DWORD get_fattime (void); + +/* Disk Status Bits (DSTATUS) */ + +#define STA_NOINIT 0x01 /* Drive not initialized */ +#define STA_NODISK 0x02 /* No medium in the drive */ +#define STA_PROTECT 0x04 /* Write protected */ + + +/* Command code for disk_ioctrl fucntion */ + +/* Generic command (Used by FatFs) */ +#define CTRL_SYNC 0 /* Complete pending write process (needed at _FS_READONLY == 0) */ +#define GET_SECTOR_COUNT 1 /* Get media size (needed at _USE_MKFS == 1) */ +#define GET_SECTOR_SIZE 2 /* Get sector size (needed at _MAX_SS != _MIN_SS) */ +#define GET_BLOCK_SIZE 3 /* Get erase block size (needed at _USE_MKFS == 1) */ +#define CTRL_TRIM 4 /* Inform device that the data on the block of sectors is no longer used (needed at _USE_TRIM == 1) */ + +/* Generic command (Not used by FatFs) */ +#define CTRL_POWER 5 /* Get/Set power status */ +#define CTRL_LOCK 6 /* Lock/Unlock media removal */ +#define CTRL_EJECT 7 /* Eject media */ +#define CTRL_FORMAT 8 /* Create physical format on the media */ + +/* MMC/SDC specific ioctl command */ +#define MMC_GET_TYPE 10 /* Get card type */ +#define MMC_GET_CSD 11 /* Get CSD */ +#define MMC_GET_CID 12 /* Get CID */ +#define MMC_GET_OCR 13 /* Get OCR */ +#define MMC_GET_SDSTAT 14 /* Get SD status */ + +/* ATA/CF specific ioctl command */ +#define ATA_GET_REV 20 /* Get F/W revision */ +#define ATA_GET_MODEL 21 /* Get model name */ +#define ATA_GET_SN 22 /* Get serial number */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Middlewares/Third_Party/FatFs/src/ff.c b/Middlewares/Third_Party/FatFs/src/ff.c new file mode 100644 index 0000000..253de3c --- /dev/null +++ b/Middlewares/Third_Party/FatFs/src/ff.c @@ -0,0 +1,6140 @@ +/*----------------------------------------------------------------------------/ +/ FatFs - Generic FAT file system module R0.12c / +/-----------------------------------------------------------------------------/ +/ +/ Copyright (C) 2017, ChaN, all right reserved. +/ +/ FatFs module is an open source software. Redistribution and use of FatFs in +/ source and binary forms, with or without modification, are permitted provided +/ that the following condition is met: +/ +/ 1. Redistributions of source code must retain the above copyright notice, +/ this condition and the following disclaimer. +/ +/ This software is provided by the copyright holder and contributors "AS IS" +/ and any warranties related to this software are DISCLAIMED. +/ The copyright owner or contributors be NOT LIABLE for any damages caused +/ by use of this software. +/----------------------------------------------------------------------------*/ + + +#include "ff.h" /* Declarations of FatFs API */ +#include "diskio.h" /* Declarations of device I/O functions */ + + +/*-------------------------------------------------------------------------- + + Module Private Definitions + +---------------------------------------------------------------------------*/ + +#if _FATFS != 68300 /* Revision ID */ +#error Wrong include file (ff.h). +#endif + + +/* DBCS code ranges and SBCS upper conversion tables */ + +#if _CODE_PAGE == 932 /* Japanese Shift-JIS */ +#define _DF1S 0x81 /* DBC 1st byte range 1 start */ +#define _DF1E 0x9F /* DBC 1st byte range 1 end */ +#define _DF2S 0xE0 /* DBC 1st byte range 2 start */ +#define _DF2E 0xFC /* DBC 1st byte range 2 end */ +#define _DS1S 0x40 /* DBC 2nd byte range 1 start */ +#define _DS1E 0x7E /* DBC 2nd byte range 1 end */ +#define _DS2S 0x80 /* DBC 2nd byte range 2 start */ +#define _DS2E 0xFC /* DBC 2nd byte range 2 end */ + +#elif _CODE_PAGE == 936 /* Simplified Chinese GBK */ +#define _DF1S 0x81 +#define _DF1E 0xFE +#define _DS1S 0x40 +#define _DS1E 0x7E +#define _DS2S 0x80 +#define _DS2E 0xFE + +#elif _CODE_PAGE == 949 /* Korean */ +#define _DF1S 0x81 +#define _DF1E 0xFE +#define _DS1S 0x41 +#define _DS1E 0x5A +#define _DS2S 0x61 +#define _DS2E 0x7A +#define _DS3S 0x81 +#define _DS3E 0xFE + +#elif _CODE_PAGE == 950 /* Traditional Chinese Big5 */ +#define _DF1S 0x81 +#define _DF1E 0xFE +#define _DS1S 0x40 +#define _DS1E 0x7E +#define _DS2S 0xA1 +#define _DS2E 0xFE + +#elif _CODE_PAGE == 437 /* U.S. */ +#define _DF1S 0 +#define _EXCVT {0x80,0x9A,0x45,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F, \ + 0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 720 /* Arabic */ +#define _DF1S 0 +#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 737 /* Greek */ +#define _DF1S 0 +#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x92,0x92,0x93,0x94,0x95,0x96,0x97,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, \ + 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0xAA,0x92,0x93,0x94,0x95,0x96, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0x97,0xEA,0xEB,0xEC,0xE4,0xED,0xEE,0xEF,0xF5,0xF0,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 771 /* KBL */ +#define _DF1S 0 +#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDC,0xDE,0xDE, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0xF0,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF8,0xFA,0xFA,0xFC,0xFC,0xFE,0xFF} + +#elif _CODE_PAGE == 775 /* Baltic */ +#define _DF1S 0 +#define _EXCVT {0x80,0x9A,0x91,0xA0,0x8E,0x95,0x8F,0x80,0xAD,0xED,0x8A,0x8A,0xA1,0x8D,0x8E,0x8F, \ + 0x90,0x92,0x92,0xE2,0x99,0x95,0x96,0x97,0x97,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \ + 0xA0,0xA1,0xE0,0xA3,0xA3,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xB5,0xB6,0xB7,0xB8,0xBD,0xBE,0xC6,0xC7,0xA5,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE3,0xE8,0xE8,0xEA,0xEA,0xEE,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 850 /* Latin 1 */ +#define _DF1S 0 +#define _EXCVT {0x43,0x55,0x45,0x41,0x41,0x41,0x41,0x43,0x45,0x45,0x45,0x49,0x49,0x49,0x41,0x41, \ + 0x45,0x92,0x92,0x4F,0x4F,0x4F,0x55,0x55,0x59,0x4F,0x55,0x4F,0x9C,0x4F,0x9E,0x9F, \ + 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0x41,0x41,0x41,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0x41,0x41,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD1,0xD1,0x45,0x45,0x45,0x49,0x49,0x49,0x49,0xD9,0xDA,0xDB,0xDC,0xDD,0x49,0xDF, \ + 0x4F,0xE1,0x4F,0x4F,0x4F,0x4F,0xE6,0xE8,0xE8,0x55,0x55,0x55,0x59,0x59,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 852 /* Latin 2 */ +#define _DF1S 0 +#define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xDE,0x8F,0x80,0x9D,0xD3,0x8A,0x8A,0xD7,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x91,0xE2,0x99,0x95,0x95,0x97,0x97,0x99,0x9A,0x9B,0x9B,0x9D,0x9E,0xAC, \ + 0xB5,0xD6,0xE0,0xE9,0xA4,0xA4,0xA6,0xA6,0xA8,0xA8,0xAA,0x8D,0xAC,0xB8,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBD,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC6,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD1,0xD1,0xD2,0xD3,0xD2,0xD5,0xD6,0xD7,0xB7,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE3,0xD5,0xE6,0xE6,0xE8,0xE9,0xE8,0xEB,0xED,0xED,0xDD,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xEB,0xFC,0xFC,0xFE,0xFF} + +#elif _CODE_PAGE == 855 /* Cyrillic */ +#define _DF1S 0 +#define _EXCVT {0x81,0x81,0x83,0x83,0x85,0x85,0x87,0x87,0x89,0x89,0x8B,0x8B,0x8D,0x8D,0x8F,0x8F, \ + 0x91,0x91,0x93,0x93,0x95,0x95,0x97,0x97,0x99,0x99,0x9B,0x9B,0x9D,0x9D,0x9F,0x9F, \ + 0xA1,0xA1,0xA3,0xA3,0xA5,0xA5,0xA7,0xA7,0xA9,0xA9,0xAB,0xAB,0xAD,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB6,0xB6,0xB8,0xB8,0xB9,0xBA,0xBB,0xBC,0xBE,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD1,0xD1,0xD3,0xD3,0xD5,0xD5,0xD7,0xD7,0xDD,0xD9,0xDA,0xDB,0xDC,0xDD,0xE0,0xDF, \ + 0xE0,0xE2,0xE2,0xE4,0xE4,0xE6,0xE6,0xE8,0xE8,0xEA,0xEA,0xEC,0xEC,0xEE,0xEE,0xEF, \ + 0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF8,0xFA,0xFA,0xFC,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 857 /* Turkish */ +#define _DF1S 0 +#define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0x49,0x8E,0x8F, \ + 0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x98,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9E, \ + 0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA6,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0x49,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xDE,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 860 /* Portuguese */ +#define _DF1S 0 +#define _EXCVT {0x80,0x9A,0x90,0x8F,0x8E,0x91,0x86,0x80,0x89,0x89,0x92,0x8B,0x8C,0x98,0x8E,0x8F, \ + 0x90,0x91,0x92,0x8C,0x99,0xA9,0x96,0x9D,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x86,0x8B,0x9F,0x96,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 861 /* Icelandic */ +#define _DF1S 0 +#define _EXCVT {0x80,0x9A,0x90,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x8B,0x8B,0x8D,0x8E,0x8F, \ + 0x90,0x92,0x92,0x4F,0x99,0x8D,0x55,0x97,0x97,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \ + 0xA4,0xA5,0xA6,0xA7,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 862 /* Hebrew */ +#define _DF1S 0 +#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 863 /* Canadian-French */ +#define _DF1S 0 +#define _EXCVT {0x43,0x55,0x45,0x41,0x41,0x41,0x86,0x43,0x45,0x45,0x45,0x49,0x49,0x8D,0x41,0x8F, \ + 0x45,0x45,0x45,0x4F,0x45,0x49,0x55,0x55,0x98,0x4F,0x55,0x9B,0x9C,0x55,0x55,0x9F, \ + 0xA0,0xA1,0x4F,0x55,0xA4,0xA5,0xA6,0xA7,0x49,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 864 /* Arabic */ +#define _DF1S 0 +#define _EXCVT {0x80,0x9A,0x45,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F, \ + 0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 865 /* Nordic */ +#define _DF1S 0 +#define _EXCVT {0x80,0x9A,0x90,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F, \ + 0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 866 /* Russian */ +#define _DF1S 0 +#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 0xF0,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + +#elif _CODE_PAGE == 869 /* Greek 2 */ +#define _DF1S 0 +#define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x86,0x9C,0x8D,0x8F,0x90, \ + 0x91,0x90,0x92,0x95,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xA4,0xA5,0xA6,0xD9,0xDA,0xDB,0xDC,0xA7,0xA8,0xDF, \ + 0xA9,0xAA,0xAC,0xAD,0xB5,0xB6,0xB7,0xB8,0xBD,0xBE,0xC6,0xC7,0xCF,0xCF,0xD0,0xEF, \ + 0xF0,0xF1,0xD1,0xD2,0xD3,0xF5,0xD4,0xF7,0xF8,0xF9,0xD5,0x96,0x95,0x98,0xFE,0xFF} + +#elif _CODE_PAGE == 1 /* ASCII (for only non-LFN cfg) */ +#if _USE_LFN != 0 +#error Cannot enable LFN without valid code page. +#endif +#define _DF1S 0 + +#else +#error Unknown code page + +#endif + + +/* Character code support macros */ +#define IsUpper(c) (((c)>='A')&&((c)<='Z')) +#define IsLower(c) (((c)>='a')&&((c)<='z')) +#define IsDigit(c) (((c)>='0')&&((c)<='9')) + +#if _DF1S != 0 /* Code page is DBCS */ + +#ifdef _DF2S /* Two 1st byte areas */ +#define IsDBCS1(c) (((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E) || ((BYTE)(c) >= _DF2S && (BYTE)(c) <= _DF2E)) +#else /* One 1st byte area */ +#define IsDBCS1(c) ((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E) +#endif + +#ifdef _DS3S /* Three 2nd byte areas */ +#define IsDBCS2(c) (((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c) <= _DS2E) || ((BYTE)(c) >= _DS3S && (BYTE)(c) <= _DS3E)) +#else /* Two 2nd byte areas */ +#define IsDBCS2(c) (((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c) <= _DS2E)) +#endif + +#else /* Code page is SBCS */ + +#define IsDBCS1(c) 0 +#define IsDBCS2(c) 0 + +#endif /* _DF1S */ + + +/* Additional file attribute bits for internal use */ +#define AM_VOL 0x08 /* Volume label */ +#define AM_LFN 0x0F /* LFN entry */ +#define AM_MASK 0x3F /* Mask of defined bits */ + + +/* Additional file access control and file status flags for internal use */ +#define FA_SEEKEND 0x20 /* Seek to end of the file on file open */ +#define FA_MODIFIED 0x40 /* File has been modified */ +#define FA_DIRTY 0x80 /* FIL.buf[] needs to be written-back */ + + +/* Name status flags in fn[] */ +#define NSFLAG 11 /* Index of the name status byte */ +#define NS_LOSS 0x01 /* Out of 8.3 format */ +#define NS_LFN 0x02 /* Force to create LFN entry */ +#define NS_LAST 0x04 /* Last segment */ +#define NS_BODY 0x08 /* Lower case flag (body) */ +#define NS_EXT 0x10 /* Lower case flag (ext) */ +#define NS_DOT 0x20 /* Dot entry */ +#define NS_NOLFN 0x40 /* Do not find LFN */ +#define NS_NONAME 0x80 /* Not followed */ + + +/* Limits and boundaries */ +#define MAX_DIR 0x200000 /* Max size of FAT directory */ +#define MAX_DIR_EX 0x10000000 /* Max size of exFAT directory */ +#define MAX_FAT12 0xFF5 /* Max FAT12 clusters (differs from specs, but correct for real DOS/Windows behavior) */ +#define MAX_FAT16 0xFFF5 /* Max FAT16 clusters (differs from specs, but correct for real DOS/Windows behavior) */ +#define MAX_FAT32 0x0FFFFFF5 /* Max FAT32 clusters (not specified, practical limit) */ +#define MAX_EXFAT 0x7FFFFFFD /* Max exFAT clusters (differs from specs, implementation limit) */ + + +/* FatFs refers the FAT structure as simple byte array instead of structure member +/ because the C structure is not binary compatible between different platforms */ + +#define BS_JmpBoot 0 /* x86 jump instruction (3-byte) */ +#define BS_OEMName 3 /* OEM name (8-byte) */ +#define BPB_BytsPerSec 11 /* Sector size [byte] (WORD) */ +#define BPB_SecPerClus 13 /* Cluster size [sector] (BYTE) */ +#define BPB_RsvdSecCnt 14 /* Size of reserved area [sector] (WORD) */ +#define BPB_NumFATs 16 /* Number of FATs (BYTE) */ +#define BPB_RootEntCnt 17 /* Size of root directory area for FAT12/16 [entry] (WORD) */ +#define BPB_TotSec16 19 /* Volume size (16-bit) [sector] (WORD) */ +#define BPB_Media 21 /* Media descriptor byte (BYTE) */ +#define BPB_FATSz16 22 /* FAT size (16-bit) [sector] (WORD) */ +#define BPB_SecPerTrk 24 /* Track size for int13h [sector] (WORD) */ +#define BPB_NumHeads 26 /* Number of heads for int13h (WORD) */ +#define BPB_HiddSec 28 /* Volume offset from top of the drive (DWORD) */ +#define BPB_TotSec32 32 /* Volume size (32-bit) [sector] (DWORD) */ +#define BS_DrvNum 36 /* Physical drive number for int13h (BYTE) */ +#define BS_NTres 37 /* Error flag (BYTE) */ +#define BS_BootSig 38 /* Extended boot signature (BYTE) */ +#define BS_VolID 39 /* Volume serial number (DWORD) */ +#define BS_VolLab 43 /* Volume label string (8-byte) */ +#define BS_FilSysType 54 /* File system type string (8-byte) */ +#define BS_BootCode 62 /* Boot code (448-byte) */ +#define BS_55AA 510 /* Signature word (WORD) */ + +#define BPB_FATSz32 36 /* FAT32: FAT size [sector] (DWORD) */ +#define BPB_ExtFlags32 40 /* FAT32: Extended flags (WORD) */ +#define BPB_FSVer32 42 /* FAT32: File system version (WORD) */ +#define BPB_RootClus32 44 /* FAT32: Root directory cluster (DWORD) */ +#define BPB_FSInfo32 48 /* FAT32: Offset of FSINFO sector (WORD) */ +#define BPB_BkBootSec32 50 /* FAT32: Offset of backup boot sector (WORD) */ +#define BS_DrvNum32 64 /* FAT32: Physical drive number for int13h (BYTE) */ +#define BS_NTres32 65 /* FAT32: Error flag (BYTE) */ +#define BS_BootSig32 66 /* FAT32: Extended boot signature (BYTE) */ +#define BS_VolID32 67 /* FAT32: Volume serial number (DWORD) */ +#define BS_VolLab32 71 /* FAT32: Volume label string (8-byte) */ +#define BS_FilSysType32 82 /* FAT32: File system type string (8-byte) */ +#define BS_BootCode32 90 /* FAT32: Boot code (420-byte) */ + +#define BPB_ZeroedEx 11 /* exFAT: MBZ field (53-byte) */ +#define BPB_VolOfsEx 64 /* exFAT: Volume offset from top of the drive [sector] (QWORD) */ +#define BPB_TotSecEx 72 /* exFAT: Volume size [sector] (QWORD) */ +#define BPB_FatOfsEx 80 /* exFAT: FAT offset from top of the volume [sector] (DWORD) */ +#define BPB_FatSzEx 84 /* exFAT: FAT size [sector] (DWORD) */ +#define BPB_DataOfsEx 88 /* exFAT: Data offset from top of the volume [sector] (DWORD) */ +#define BPB_NumClusEx 92 /* exFAT: Number of clusters (DWORD) */ +#define BPB_RootClusEx 96 /* exFAT: Root directory start cluster (DWORD) */ +#define BPB_VolIDEx 100 /* exFAT: Volume serial number (DWORD) */ +#define BPB_FSVerEx 104 /* exFAT: File system version (WORD) */ +#define BPB_VolFlagEx 106 /* exFAT: Volume flags (BYTE) */ +#define BPB_ActFatEx 107 /* exFAT: Active FAT flags (BYTE) */ +#define BPB_BytsPerSecEx 108 /* exFAT: Log2 of sector size in unit of byte (BYTE) */ +#define BPB_SecPerClusEx 109 /* exFAT: Log2 of cluster size in unit of sector (BYTE) */ +#define BPB_NumFATsEx 110 /* exFAT: Number of FATs (BYTE) */ +#define BPB_DrvNumEx 111 /* exFAT: Physical drive number for int13h (BYTE) */ +#define BPB_PercInUseEx 112 /* exFAT: Percent in use (BYTE) */ +#define BPB_RsvdEx 113 /* exFAT: Reserved (7-byte) */ +#define BS_BootCodeEx 120 /* exFAT: Boot code (390-byte) */ + +#define DIR_Name 0 /* Short file name (11-byte) */ +#define DIR_Attr 11 /* Attribute (BYTE) */ +#define DIR_NTres 12 /* Lower case flag (BYTE) */ +#define DIR_CrtTime10 13 /* Created time sub-second (BYTE) */ +#define DIR_CrtTime 14 /* Created time (DWORD) */ +#define DIR_LstAccDate 18 /* Last accessed date (WORD) */ +#define DIR_FstClusHI 20 /* Higher 16-bit of first cluster (WORD) */ +#define DIR_ModTime 22 /* Modified time (DWORD) */ +#define DIR_FstClusLO 26 /* Lower 16-bit of first cluster (WORD) */ +#define DIR_FileSize 28 /* File size (DWORD) */ +#define LDIR_Ord 0 /* LFN: LFN order and LLE flag (BYTE) */ +#define LDIR_Attr 11 /* LFN: LFN attribute (BYTE) */ +#define LDIR_Type 12 /* LFN: Entry type (BYTE) */ +#define LDIR_Chksum 13 /* LFN: Checksum of the SFN (BYTE) */ +#define LDIR_FstClusLO 26 /* LFN: MBZ field (WORD) */ +#define XDIR_Type 0 /* exFAT: Type of exFAT directory entry (BYTE) */ +#define XDIR_NumLabel 1 /* exFAT: Number of volume label characters (BYTE) */ +#define XDIR_Label 2 /* exFAT: Volume label (11-WORD) */ +#define XDIR_CaseSum 4 /* exFAT: Sum of case conversion table (DWORD) */ +#define XDIR_NumSec 1 /* exFAT: Number of secondary entries (BYTE) */ +#define XDIR_SetSum 2 /* exFAT: Sum of the set of directory entries (WORD) */ +#define XDIR_Attr 4 /* exFAT: File attribute (WORD) */ +#define XDIR_CrtTime 8 /* exFAT: Created time (DWORD) */ +#define XDIR_ModTime 12 /* exFAT: Modified time (DWORD) */ +#define XDIR_AccTime 16 /* exFAT: Last accessed time (DWORD) */ +#define XDIR_CrtTime10 20 /* exFAT: Created time subsecond (BYTE) */ +#define XDIR_ModTime10 21 /* exFAT: Modified time subsecond (BYTE) */ +#define XDIR_CrtTZ 22 /* exFAT: Created timezone (BYTE) */ +#define XDIR_ModTZ 23 /* exFAT: Modified timezone (BYTE) */ +#define XDIR_AccTZ 24 /* exFAT: Last accessed timezone (BYTE) */ +#define XDIR_GenFlags 33 /* exFAT: General secondary flags (WORD) */ +#define XDIR_NumName 35 /* exFAT: Number of file name characters (BYTE) */ +#define XDIR_NameHash 36 /* exFAT: Hash of file name (WORD) */ +#define XDIR_ValidFileSize 40 /* exFAT: Valid file size (QWORD) */ +#define XDIR_FstClus 52 /* exFAT: First cluster of the file data (DWORD) */ +#define XDIR_FileSize 56 /* exFAT: File/Directory size (QWORD) */ + +#define SZDIRE 32 /* Size of a directory entry */ +#define DDEM 0xE5 /* Deleted directory entry mark set to DIR_Name[0] */ +#define RDDEM 0x05 /* Replacement of the character collides with DDEM */ +#define LLEF 0x40 /* Last long entry flag in LDIR_Ord */ + +#define FSI_LeadSig 0 /* FAT32 FSI: Leading signature (DWORD) */ +#define FSI_StrucSig 484 /* FAT32 FSI: Structure signature (DWORD) */ +#define FSI_Free_Count 488 /* FAT32 FSI: Number of free clusters (DWORD) */ +#define FSI_Nxt_Free 492 /* FAT32 FSI: Last allocated cluster (DWORD) */ + +#define MBR_Table 446 /* MBR: Offset of partition table in the MBR */ +#define SZ_PTE 16 /* MBR: Size of a partition table entry */ +#define PTE_Boot 0 /* MBR PTE: Boot indicator */ +#define PTE_StHead 1 /* MBR PTE: Start head */ +#define PTE_StSec 2 /* MBR PTE: Start sector */ +#define PTE_StCyl 3 /* MBR PTE: Start cylinder */ +#define PTE_System 4 /* MBR PTE: System ID */ +#define PTE_EdHead 5 /* MBR PTE: End head */ +#define PTE_EdSec 6 /* MBR PTE: End sector */ +#define PTE_EdCyl 7 /* MBR PTE: End cylinder */ +#define PTE_StLba 8 /* MBR PTE: Start in LBA */ +#define PTE_SizLba 12 /* MBR PTE: Size in LBA */ + + +/* Post process after fatal error on file operation */ +#define ABORT(fs, res) { fp->err = (BYTE)(res); LEAVE_FF(fs, res); } + + +/* Reentrancy related */ +#if _FS_REENTRANT +#if _USE_LFN == 1 +#error Static LFN work area cannot be used at thread-safe configuration +#endif +#define ENTER_FF(fs) { if (!lock_fs(fs)) return FR_TIMEOUT; } +#define LEAVE_FF(fs, res) { unlock_fs(fs, res); return res; } +#else +#define ENTER_FF(fs) +#define LEAVE_FF(fs, res) return res +#endif + + +/* Definitions of volume - partition conversion */ +#if _MULTI_PARTITION +#define LD2PD(vol) VolToPart[vol].pd /* Get physical drive number */ +#define LD2PT(vol) VolToPart[vol].pt /* Get partition index */ +#else +#define LD2PD(vol) (BYTE)(vol) /* Each logical drive is bound to the same physical drive number */ +#define LD2PT(vol) 0 /* Find first valid partition or in SFD */ +#endif + + +/* Definitions of sector size */ +#if (_MAX_SS < _MIN_SS) || (_MAX_SS != 512 && _MAX_SS != 1024 && _MAX_SS != 2048 && _MAX_SS != 4096) || (_MIN_SS != 512 && _MIN_SS != 1024 && _MIN_SS != 2048 && _MIN_SS != 4096) +#error Wrong sector size configuration +#endif +#if _MAX_SS == _MIN_SS +#define SS(fs) ((UINT)_MAX_SS) /* Fixed sector size */ +#else +#define SS(fs) ((fs)->ssize) /* Variable sector size */ +#endif + + +/* Timestamp */ +#if _FS_NORTC == 1 +#if _NORTC_YEAR < 1980 || _NORTC_YEAR > 2107 || _NORTC_MON < 1 || _NORTC_MON > 12 || _NORTC_MDAY < 1 || _NORTC_MDAY > 31 +#error Invalid _FS_NORTC settings +#endif +#define GET_FATTIME() ((DWORD)(_NORTC_YEAR - 1980) << 25 | (DWORD)_NORTC_MON << 21 | (DWORD)_NORTC_MDAY << 16) +#else +#define GET_FATTIME() get_fattime() +#endif + + +/* File lock controls */ +#if _FS_LOCK != 0 +#if _FS_READONLY +#error _FS_LOCK must be 0 at read-only configuration +#endif +typedef struct { + FATFS *fs; /* Object ID 1, volume (NULL:blank entry) */ + DWORD clu; /* Object ID 2, containing directory (0:root) */ + DWORD ofs; /* Object ID 3, offset in the directory */ + WORD ctr; /* Object open counter, 0:none, 0x01..0xFF:read mode open count, 0x100:write mode */ +} FILESEM; +#endif + + + + + +/*-------------------------------------------------------------------------- + + Module Private Work Area + +---------------------------------------------------------------------------*/ + +/* Remark: Variables defined here without initial value shall be guaranteed +/ zero/null at start-up. If not, the linker option or start-up routine is +/ not compliance with C standard. */ + +#if _VOLUMES < 1 || _VOLUMES > 10 +#error Wrong _VOLUMES setting +#endif +static FATFS *FatFs[_VOLUMES]; /* Pointer to the file system objects (logical drives) */ +static WORD Fsid; /* File system mount ID */ + +#if _FS_RPATH != 0 && _VOLUMES >= 2 +static BYTE CurrVol; /* Current drive */ +#endif + +#if _FS_LOCK != 0 +static FILESEM Files[_FS_LOCK]; /* Open object lock semaphores */ +#endif + +#if _USE_LFN == 0 /* Non-LFN configuration */ +#define DEF_NAMBUF +#define INIT_NAMBUF(fs) +#define FREE_NAMBUF() + +#else /* LFN configuration */ +#if _MAX_LFN < 12 || _MAX_LFN > 255 +#error Wrong _MAX_LFN value +#endif +#define MAXDIRB(nc) ((nc + 44U) / 15 * SZDIRE) + +#if _USE_LFN == 1 /* LFN enabled with static working buffer */ +#if _FS_EXFAT +static BYTE DirBuf[MAXDIRB(_MAX_LFN)]; /* Directory entry block scratchpad buffer */ +#endif +static WCHAR LfnBuf[_MAX_LFN + 1]; /* LFN enabled with static working buffer */ +#define DEF_NAMBUF +#define INIT_NAMBUF(fs) +#define FREE_NAMBUF() + +#elif _USE_LFN == 2 /* LFN enabled with dynamic working buffer on the stack */ +#if _FS_EXFAT +#define DEF_NAMBUF WCHAR lbuf[_MAX_LFN+1]; BYTE dbuf[MAXDIRB(_MAX_LFN)]; +#define INIT_NAMBUF(fs) { (fs)->lfnbuf = lbuf; (fs)->dirbuf = dbuf; } +#define FREE_NAMBUF() +#else +#define DEF_NAMBUF WCHAR lbuf[_MAX_LFN+1]; +#define INIT_NAMBUF(fs) { (fs)->lfnbuf = lbuf; } +#define FREE_NAMBUF() +#endif + +#elif _USE_LFN == 3 /* LFN enabled with dynamic working buffer on the heap */ +#if _FS_EXFAT +#define DEF_NAMBUF WCHAR *lfn; +#define INIT_NAMBUF(fs) { lfn = ff_memalloc((_MAX_LFN+1)*2 + MAXDIRB(_MAX_LFN)); if (!lfn) LEAVE_FF(fs, FR_NOT_ENOUGH_CORE); (fs)->lfnbuf = lfn; (fs)->dirbuf = (BYTE*)(lfn+_MAX_LFN+1); } +#define FREE_NAMBUF() ff_memfree(lfn) +#else +#define DEF_NAMBUF WCHAR *lfn; +#define INIT_NAMBUF(fs) { lfn = ff_memalloc((_MAX_LFN+1)*2); if (!lfn) LEAVE_FF(fs, FR_NOT_ENOUGH_CORE); (fs)->lfnbuf = lfn; } +#define FREE_NAMBUF() ff_memfree(lfn) +#endif + +#else +#error Wrong _USE_LFN setting + +#endif +#endif /* else _USE_LFN == 0 */ + +#ifdef _EXCVT +static const BYTE ExCvt[] = _EXCVT; /* Upper conversion table for SBCS extended characters */ +#endif + + + + + + +/*-------------------------------------------------------------------------- + + Module Private Functions + +---------------------------------------------------------------------------*/ + + +/*-----------------------------------------------------------------------*/ +/* Load/Store multi-byte word in the FAT structure */ +/*-----------------------------------------------------------------------*/ + +static +WORD ld_word (const BYTE* ptr) /* Load a 2-byte little-endian word */ +{ + WORD rv; + + rv = ptr[1]; + rv = rv << 8 | ptr[0]; + return rv; +} + +static +DWORD ld_dword (const BYTE* ptr) /* Load a 4-byte little-endian word */ +{ + DWORD rv; + + rv = ptr[3]; + rv = rv << 8 | ptr[2]; + rv = rv << 8 | ptr[1]; + rv = rv << 8 | ptr[0]; + return rv; +} + +#if _FS_EXFAT +static +QWORD ld_qword (const BYTE* ptr) /* Load an 8-byte little-endian word */ +{ + QWORD rv; + + rv = ptr[7]; + rv = rv << 8 | ptr[6]; + rv = rv << 8 | ptr[5]; + rv = rv << 8 | ptr[4]; + rv = rv << 8 | ptr[3]; + rv = rv << 8 | ptr[2]; + rv = rv << 8 | ptr[1]; + rv = rv << 8 | ptr[0]; + return rv; +} +#endif + +#if !_FS_READONLY +static +void st_word (BYTE* ptr, WORD val) /* Store a 2-byte word in little-endian */ +{ + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; +} + +static +void st_dword (BYTE* ptr, DWORD val) /* Store a 4-byte word in little-endian */ +{ + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; +} + +#if _FS_EXFAT +static +void st_qword (BYTE* ptr, QWORD val) /* Store an 8-byte word in little-endian */ +{ + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; val >>= 8; + *ptr++ = (BYTE)val; +} +#endif +#endif /* !_FS_READONLY */ + + + +/*-----------------------------------------------------------------------*/ +/* String functions */ +/*-----------------------------------------------------------------------*/ + +/* Copy memory to memory */ +static +void mem_cpy (void* dst, const void* src, UINT cnt) { + BYTE *d = (BYTE*)dst; + const BYTE *s = (const BYTE*)src; + + if (cnt) { + do { + *d++ = *s++; + } while (--cnt); + } +} + +/* Fill memory block */ +static +void mem_set (void* dst, int val, UINT cnt) { + BYTE *d = (BYTE*)dst; + + do { + *d++ = (BYTE)val; + } while (--cnt); +} + +/* Compare memory block */ +static +int mem_cmp (const void* dst, const void* src, UINT cnt) { /* ZR:same, NZ:different */ + const BYTE *d = (const BYTE *)dst, *s = (const BYTE *)src; + int r = 0; + + do { + r = *d++ - *s++; + } while (--cnt && r == 0); + + return r; +} + +/* Check if chr is contained in the string */ +static +int chk_chr (const char* str, int chr) { /* NZ:contained, ZR:not contained */ + while (*str && *str != chr) str++; + return *str; +} + + + + +#if _FS_REENTRANT +/*-----------------------------------------------------------------------*/ +/* Request/Release grant to access the volume */ +/*-----------------------------------------------------------------------*/ +static +int lock_fs ( + FATFS* fs /* File system object */ +) +{ + return (fs && ff_req_grant(fs->sobj)) ? 1 : 0; +} + + +static +void unlock_fs ( + FATFS* fs, /* File system object */ + FRESULT res /* Result code to be returned */ +) +{ + if (fs && res != FR_NOT_ENABLED && res != FR_INVALID_DRIVE && res != FR_TIMEOUT) { + ff_rel_grant(fs->sobj); + } +} + +#endif + + + +#if _FS_LOCK != 0 +/*-----------------------------------------------------------------------*/ +/* File lock control functions */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT chk_lock ( /* Check if the file can be accessed */ + DIR* dp, /* Directory object pointing the file to be checked */ + int acc /* Desired access type (0:Read, 1:Write, 2:Delete/Rename) */ +) +{ + UINT i, be; + + /* Search file semaphore table */ + for (i = be = 0; i < _FS_LOCK; i++) { + if (Files[i].fs) { /* Existing entry */ + if (Files[i].fs == dp->obj.fs && /* Check if the object matched with an open object */ + Files[i].clu == dp->obj.sclust && + Files[i].ofs == dp->dptr) break; + } else { /* Blank entry */ + be = 1; + } + } + if (i == _FS_LOCK) { /* The object is not opened */ + return (be || acc == 2) ? FR_OK : FR_TOO_MANY_OPEN_FILES; /* Is there a blank entry for new object? */ + } + + /* The object has been opened. Reject any open against writing file and all write mode open */ + return (acc || Files[i].ctr == 0x100) ? FR_LOCKED : FR_OK; +} + + +static +int enq_lock (void) /* Check if an entry is available for a new object */ +{ + UINT i; + + for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + return (i == _FS_LOCK) ? 0 : 1; +} + + +static +UINT inc_lock ( /* Increment object open counter and returns its index (0:Internal error) */ + DIR* dp, /* Directory object pointing the file to register or increment */ + int acc /* Desired access (0:Read, 1:Write, 2:Delete/Rename) */ +) +{ + UINT i; + + + for (i = 0; i < _FS_LOCK; i++) { /* Find the object */ + if (Files[i].fs == dp->obj.fs && + Files[i].clu == dp->obj.sclust && + Files[i].ofs == dp->dptr) break; + } + + if (i == _FS_LOCK) { /* Not opened. Register it as new. */ + for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + if (i == _FS_LOCK) return 0; /* No free entry to register (int err) */ + Files[i].fs = dp->obj.fs; + Files[i].clu = dp->obj.sclust; + Files[i].ofs = dp->dptr; + Files[i].ctr = 0; + } + + if (acc && Files[i].ctr) return 0; /* Access violation (int err) */ + + Files[i].ctr = acc ? 0x100 : Files[i].ctr + 1; /* Set semaphore value */ + + return i + 1; +} + + +static +FRESULT dec_lock ( /* Decrement object open counter */ + UINT i /* Semaphore index (1..) */ +) +{ + WORD n; + FRESULT res; + + + if (--i < _FS_LOCK) { /* Shift index number origin from 0 */ + n = Files[i].ctr; + if (n == 0x100) n = 0; /* If write mode open, delete the entry */ + if (n > 0) n--; /* Decrement read mode open count */ + Files[i].ctr = n; + if (n == 0) Files[i].fs = 0; /* Delete the entry if open count gets zero */ + res = FR_OK; + } else { + res = FR_INT_ERR; /* Invalid index nunber */ + } + return res; +} + + +static +void clear_lock ( /* Clear lock entries of the volume */ + FATFS *fs +) +{ + UINT i; + + for (i = 0; i < _FS_LOCK; i++) { + if (Files[i].fs == fs) Files[i].fs = 0; + } +} + +#endif /* _FS_LOCK != 0 */ + + + +/*-----------------------------------------------------------------------*/ +/* Move/Flush disk access window in the file system object */ +/*-----------------------------------------------------------------------*/ +#if !_FS_READONLY +static +FRESULT sync_window ( /* Returns FR_OK or FR_DISK_ERROR */ + FATFS* fs /* File system object */ +) +{ + DWORD wsect; + UINT nf; + FRESULT res = FR_OK; + + + if (fs->wflag) { /* Write back the sector if it is dirty */ + wsect = fs->winsect; /* Current sector number */ + if (disk_write(fs->drv, fs->win, wsect, 1) != RES_OK) { + res = FR_DISK_ERR; + } else { + fs->wflag = 0; + if (wsect - fs->fatbase < fs->fsize) { /* Is it in the FAT area? */ + for (nf = fs->n_fats; nf >= 2; nf--) { /* Reflect the change to all FAT copies */ + wsect += fs->fsize; + disk_write(fs->drv, fs->win, wsect, 1); + } + } + } + } + return res; +} +#endif + + +static +FRESULT move_window ( /* Returns FR_OK or FR_DISK_ERROR */ + FATFS* fs, /* File system object */ + DWORD sector /* Sector number to make appearance in the fs->win[] */ +) +{ + FRESULT res = FR_OK; + + + if (sector != fs->winsect) { /* Window offset changed? */ +#if !_FS_READONLY + res = sync_window(fs); /* Write-back changes */ +#endif + if (res == FR_OK) { /* Fill sector window with new data */ + if (disk_read(fs->drv, fs->win, sector, 1) != RES_OK) { + sector = 0xFFFFFFFF; /* Invalidate window if data is not reliable */ + res = FR_DISK_ERR; + } + fs->winsect = sector; + } + } + return res; +} + + + + +#if !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Synchronize file system and strage device */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT sync_fs ( /* FR_OK:succeeded, !=0:error */ + FATFS* fs /* File system object */ +) +{ + FRESULT res; + + + res = sync_window(fs); + if (res == FR_OK) { + /* Update FSInfo sector if needed */ + if (fs->fs_type == FS_FAT32 && fs->fsi_flag == 1) { + /* Create FSInfo structure */ + mem_set(fs->win, 0, SS(fs)); + st_word(fs->win + BS_55AA, 0xAA55); + st_dword(fs->win + FSI_LeadSig, 0x41615252); + st_dword(fs->win + FSI_StrucSig, 0x61417272); + st_dword(fs->win + FSI_Free_Count, fs->free_clst); + st_dword(fs->win + FSI_Nxt_Free, fs->last_clst); + /* Write it into the FSInfo sector */ + fs->winsect = fs->volbase + 1; + disk_write(fs->drv, fs->win, fs->winsect, 1); + fs->fsi_flag = 0; + } + /* Make sure that no pending write process in the physical drive */ + if (disk_ioctl(fs->drv, CTRL_SYNC, 0) != RES_OK) res = FR_DISK_ERR; + } + + return res; +} + +#endif + + + +/*-----------------------------------------------------------------------*/ +/* Get sector# from cluster# */ +/*-----------------------------------------------------------------------*/ + +static +DWORD clust2sect ( /* !=0:Sector number, 0:Failed (invalid cluster#) */ + FATFS* fs, /* File system object */ + DWORD clst /* Cluster# to be converted */ +) +{ + clst -= 2; + if (clst >= fs->n_fatent - 2) return 0; /* Invalid cluster# */ + return clst * fs->csize + fs->database; +} + + + + +/*-----------------------------------------------------------------------*/ +/* FAT access - Read value of a FAT entry */ +/*-----------------------------------------------------------------------*/ + +static +DWORD get_fat ( /* 0xFFFFFFFF:Disk error, 1:Internal error, 2..0x7FFFFFFF:Cluster status */ + _FDID* obj, /* Corresponding object */ + DWORD clst /* Cluster number to get the value */ +) +{ + UINT wc, bc; + DWORD val; + FATFS *fs = obj->fs; + + + if (clst < 2 || clst >= fs->n_fatent) { /* Check if in valid range */ + val = 1; /* Internal error */ + + } else { + val = 0xFFFFFFFF; /* Default value falls on disk error */ + + switch (fs->fs_type) { + case FS_FAT12 : + bc = (UINT)clst; bc += bc / 2; + if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + wc = fs->win[bc++ % SS(fs)]; + if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + wc |= fs->win[bc % SS(fs)] << 8; + val = (clst & 1) ? (wc >> 4) : (wc & 0xFFF); + break; + + case FS_FAT16 : + if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 2))) != FR_OK) break; + val = ld_word(fs->win + clst * 2 % SS(fs)); + break; + + case FS_FAT32 : + if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))) != FR_OK) break; + val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; + break; +#if _FS_EXFAT + case FS_EXFAT : + if (obj->objsize) { + DWORD cofs = clst - obj->sclust; /* Offset from start cluster */ + DWORD clen = (DWORD)((obj->objsize - 1) / SS(fs)) / fs->csize; /* Number of clusters - 1 */ + + if (obj->stat == 2) { /* Is there no valid chain on the FAT? */ + if (cofs <= clen) { + val = (cofs == clen) ? 0x7FFFFFFF : clst + 1; /* Generate the value */ + break; + } + } + if (obj->stat == 3 && cofs < obj->n_cont) { /* Is it in the 1st fragment? */ + val = clst + 1; /* Generate the value */ + break; + } + if (obj->stat != 2) { /* Get value from FAT if FAT chain is valid */ + if (obj->n_frag != 0) { /* Is it on the growing edge? */ + val = 0x7FFFFFFF; /* Generate EOC */ + } else { + if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))) != FR_OK) break; + val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x7FFFFFFF; + } + break; + } + } + /* go to default */ +#endif + default: + val = 1; /* Internal error */ + } + } + + return val; +} + + + + +#if !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* FAT access - Change value of a FAT entry */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT put_fat ( /* FR_OK(0):succeeded, !=0:error */ + FATFS* fs, /* Corresponding file system object */ + DWORD clst, /* FAT index number (cluster number) to be changed */ + DWORD val /* New value to be set to the entry */ +) +{ + UINT bc; + BYTE *p; + FRESULT res = FR_INT_ERR; + + if (clst >= 2 && clst < fs->n_fatent) { /* Check if in valid range */ + switch (fs->fs_type) { + case FS_FAT12 : /* Bitfield items */ + bc = (UINT)clst; bc += bc / 2; + res = move_window(fs, fs->fatbase + (bc / SS(fs))); + if (res != FR_OK) break; + p = fs->win + bc++ % SS(fs); + *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val; + fs->wflag = 1; + res = move_window(fs, fs->fatbase + (bc / SS(fs))); + if (res != FR_OK) break; + p = fs->win + bc % SS(fs); + *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F)); + fs->wflag = 1; + break; + + case FS_FAT16 : /* WORD aligned items */ + res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 2))); + if (res != FR_OK) break; + st_word(fs->win + clst * 2 % SS(fs), (WORD)val); + fs->wflag = 1; + break; + + case FS_FAT32 : /* DWORD aligned items */ +#if _FS_EXFAT + case FS_EXFAT : +#endif + res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))); + if (res != FR_OK) break; + if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + val = (val & 0x0FFFFFFF) | (ld_dword(fs->win + clst * 4 % SS(fs)) & 0xF0000000); + } + st_dword(fs->win + clst * 4 % SS(fs), val); + fs->wflag = 1; + break; + } + } + return res; +} + +#endif /* !_FS_READONLY */ + + + + +#if _FS_EXFAT && !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* exFAT: Accessing FAT and Allocation Bitmap */ +/*-----------------------------------------------------------------------*/ + +/*--------------------------------------*/ +/* Find a contiguous free cluster block */ +/*--------------------------------------*/ + +static +DWORD find_bitmap ( /* 0:Not found, 2..:Cluster block found, 0xFFFFFFFF:Disk error */ + FATFS* fs, /* File system object */ + DWORD clst, /* Cluster number to scan from */ + DWORD ncl /* Number of contiguous clusters to find (1..) */ +) +{ + BYTE bm, bv; + UINT i; + DWORD val, scl, ctr; + + + clst -= 2; /* The first bit in the bitmap corresponds to cluster #2 */ + if (clst >= fs->n_fatent - 2) clst = 0; + scl = val = clst; ctr = 0; + for (;;) { + if (move_window(fs, fs->database + val / 8 / SS(fs)) != FR_OK) return 0xFFFFFFFF; /* (assuming bitmap is located top of the cluster heap) */ + i = val / 8 % SS(fs); bm = 1 << (val % 8); + do { + do { + bv = fs->win[i] & bm; bm <<= 1; /* Get bit value */ + if (++val >= fs->n_fatent - 2) { /* Next cluster (with wrap-around) */ + val = 0; bm = 0; i = SS(fs); + } + if (!bv) { /* Is it a free cluster? */ + if (++ctr == ncl) return scl + 2; /* Check if run length is sufficient for required */ + } else { + scl = val; ctr = 0; /* Encountered a cluster in-use, restart to scan */ + } + if (val == clst) return 0; /* All cluster scanned? */ + } while (bm); + bm = 1; + } while (++i < SS(fs)); + } +} + + +/*----------------------------------------*/ +/* Set/Clear a block of allocation bitmap */ +/*----------------------------------------*/ + +static +FRESULT change_bitmap ( + FATFS* fs, /* File system object */ + DWORD clst, /* Cluster number to change from */ + DWORD ncl, /* Number of clusters to be changed */ + int bv /* bit value to be set (0 or 1) */ +) +{ + BYTE bm; + UINT i; + DWORD sect; + + clst -= 2; /* The first bit corresponds to cluster #2 */ + sect = fs->database + clst / 8 / SS(fs); /* Sector address (assuming bitmap is located top of the cluster heap) */ + i = clst / 8 % SS(fs); /* Byte offset in the sector */ + bm = 1 << (clst % 8); /* Bit mask in the byte */ + for (;;) { + if (move_window(fs, sect++) != FR_OK) return FR_DISK_ERR; + do { + do { + if (bv == (int)((fs->win[i] & bm) != 0)) return FR_INT_ERR; /* Is the bit expected value? */ + fs->win[i] ^= bm; /* Flip the bit */ + fs->wflag = 1; + if (--ncl == 0) return FR_OK; /* All bits processed? */ + } while (bm <<= 1); /* Next bit */ + bm = 1; + } while (++i < SS(fs)); /* Next byte */ + i = 0; + } +} + + +/*---------------------------------------------*/ +/* Fill the first fragment of the FAT chain */ +/*---------------------------------------------*/ + +static +FRESULT fill_first_frag ( + _FDID* obj /* Pointer to the corresponding object */ +) +{ + FRESULT res; + DWORD cl, n; + + if (obj->stat == 3) { /* Has the object been changed 'fragmented'? */ + for (cl = obj->sclust, n = obj->n_cont; n; cl++, n--) { /* Create cluster chain on the FAT */ + res = put_fat(obj->fs, cl, cl + 1); + if (res != FR_OK) return res; + } + obj->stat = 0; /* Change status 'FAT chain is valid' */ + } + return FR_OK; +} + + +/*---------------------------------------------*/ +/* Fill the last fragment of the FAT chain */ +/*---------------------------------------------*/ + +static +FRESULT fill_last_frag ( + _FDID* obj, /* Pointer to the corresponding object */ + DWORD lcl, /* Last cluster of the fragment */ + DWORD term /* Value to set the last FAT entry */ +) +{ + FRESULT res; + + while (obj->n_frag > 0) { /* Create the last chain on the FAT */ + res = put_fat(obj->fs, lcl - obj->n_frag + 1, (obj->n_frag > 1) ? lcl - obj->n_frag + 2 : term); + if (res != FR_OK) return res; + obj->n_frag--; + } + return FR_OK; +} + +#endif /* _FS_EXFAT && !_FS_READONLY */ + + + +#if !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* FAT handling - Remove a cluster chain */ +/*-----------------------------------------------------------------------*/ +static +FRESULT remove_chain ( /* FR_OK(0):succeeded, !=0:error */ + _FDID* obj, /* Corresponding object */ + DWORD clst, /* Cluster to remove a chain from */ + DWORD pclst /* Previous cluster of clst (0:an entire chain) */ +) +{ + FRESULT res = FR_OK; + DWORD nxt; + FATFS *fs = obj->fs; +#if _FS_EXFAT || _USE_TRIM + DWORD scl = clst, ecl = clst; +#endif +#if _USE_TRIM + DWORD rt[2]; +#endif + + if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Check if in valid range */ + + /* Mark the previous cluster 'EOC' on the FAT if it exists */ + if (pclst && (!_FS_EXFAT || fs->fs_type != FS_EXFAT || obj->stat != 2)) { + res = put_fat(fs, pclst, 0xFFFFFFFF); + if (res != FR_OK) return res; + } + + /* Remove the chain */ + do { + nxt = get_fat(obj, clst); /* Get cluster status */ + if (nxt == 0) break; /* Empty cluster? */ + if (nxt == 1) return FR_INT_ERR; /* Internal error? */ + if (nxt == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error? */ + if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + res = put_fat(fs, clst, 0); /* Mark the cluster 'free' on the FAT */ + if (res != FR_OK) return res; + } + if (fs->free_clst < fs->n_fatent - 2) { /* Update FSINFO */ + fs->free_clst++; + fs->fsi_flag |= 1; + } +#if _FS_EXFAT || _USE_TRIM + if (ecl + 1 == nxt) { /* Is next cluster contiguous? */ + ecl = nxt; + } else { /* End of contiguous cluster block */ +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + res = change_bitmap(fs, scl, ecl - scl + 1, 0); /* Mark the cluster block 'free' on the bitmap */ + if (res != FR_OK) return res; + } +#endif +#if _USE_TRIM + rt[0] = clust2sect(fs, scl); /* Start sector */ + rt[1] = clust2sect(fs, ecl) + fs->csize - 1; /* End sector */ + disk_ioctl(fs->drv, CTRL_TRIM, rt); /* Inform device the block can be erased */ +#endif + scl = ecl = nxt; + } +#endif + clst = nxt; /* Next cluster */ + } while (clst < fs->n_fatent); /* Repeat while not the last link */ + +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + if (pclst == 0) { /* Does the object have no chain? */ + obj->stat = 0; /* Change the object status 'initial' */ + } else { + if (obj->stat == 3 && pclst >= obj->sclust && pclst <= obj->sclust + obj->n_cont) { /* Did the chain get contiguous? */ + obj->stat = 2; /* Change the object status 'contiguous' */ + } + } + } +#endif + return FR_OK; +} + + + + +/*-----------------------------------------------------------------------*/ +/* FAT handling - Stretch a chain or Create a new chain */ +/*-----------------------------------------------------------------------*/ +static +DWORD create_chain ( /* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk error, >=2:New cluster# */ + _FDID* obj, /* Corresponding object */ + DWORD clst /* Cluster# to stretch, 0:Create a new chain */ +) +{ + DWORD cs, ncl, scl; + FRESULT res; + FATFS *fs = obj->fs; + + + if (clst == 0) { /* Create a new chain */ + scl = fs->last_clst; /* Get suggested cluster to start from */ + if (scl == 0 || scl >= fs->n_fatent) scl = 1; + } + else { /* Stretch current chain */ + cs = get_fat(obj, clst); /* Check the cluster status */ + if (cs < 2) return 1; /* Invalid FAT value */ + if (cs == 0xFFFFFFFF) return cs; /* A disk error occurred */ + if (cs < fs->n_fatent) return cs; /* It is already followed by next cluster */ + scl = clst; + } + +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + ncl = find_bitmap(fs, scl, 1); /* Find a free cluster */ + if (ncl == 0 || ncl == 0xFFFFFFFF) return ncl; /* No free cluster or hard error? */ + res = change_bitmap(fs, ncl, 1, 1); /* Mark the cluster 'in use' */ + if (res == FR_INT_ERR) return 1; + if (res == FR_DISK_ERR) return 0xFFFFFFFF; + if (clst == 0) { /* Is it a new chain? */ + obj->stat = 2; /* Set status 'contiguous' */ + } else { /* It is a stretched chain */ + if (obj->stat == 2 && ncl != scl + 1) { /* Is the chain got fragmented? */ + obj->n_cont = scl - obj->sclust; /* Set size of the contiguous part */ + obj->stat = 3; /* Change status 'just fragmented' */ + } + } + if (obj->stat != 2) { /* Is the file non-contiguous? */ + if (ncl == clst + 1) { /* Is the cluster next to previous one? */ + obj->n_frag = obj->n_frag ? obj->n_frag + 1 : 2; /* Increment size of last framgent */ + } else { /* New fragment */ + if (obj->n_frag == 0) obj->n_frag = 1; + res = fill_last_frag(obj, clst, ncl); /* Fill last fragment on the FAT and link it to new one */ + if (res == FR_OK) obj->n_frag = 1; + } + } + } else +#endif + { /* On the FAT12/16/32 volume */ + ncl = scl; /* Start cluster */ + for (;;) { + ncl++; /* Next cluster */ + if (ncl >= fs->n_fatent) { /* Check wrap-around */ + ncl = 2; + if (ncl > scl) return 0; /* No free cluster */ + } + cs = get_fat(obj, ncl); /* Get the cluster status */ + if (cs == 0) break; /* Found a free cluster */ + if (cs == 1 || cs == 0xFFFFFFFF) return cs; /* An error occurred */ + if (ncl == scl) return 0; /* No free cluster */ + } + res = put_fat(fs, ncl, 0xFFFFFFFF); /* Mark the new cluster 'EOC' */ + if (res == FR_OK && clst != 0) { + res = put_fat(fs, clst, ncl); /* Link it from the previous one if needed */ + } + } + + if (res == FR_OK) { /* Update FSINFO if function succeeded. */ + fs->last_clst = ncl; + if (fs->free_clst <= fs->n_fatent - 2) fs->free_clst--; + fs->fsi_flag |= 1; + } else { + ncl = (res == FR_DISK_ERR) ? 0xFFFFFFFF : 1; /* Failed. Generate error status */ + } + + return ncl; /* Return new cluster number or error status */ +} + +#endif /* !_FS_READONLY */ + + + + +#if _USE_FASTSEEK +/*-----------------------------------------------------------------------*/ +/* FAT handling - Convert offset into cluster with link map table */ +/*-----------------------------------------------------------------------*/ + +static +DWORD clmt_clust ( /* <2:Error, >=2:Cluster number */ + FIL* fp, /* Pointer to the file object */ + FSIZE_t ofs /* File offset to be converted to cluster# */ +) +{ + DWORD cl, ncl, *tbl; + FATFS *fs = fp->obj.fs; + + + tbl = fp->cltbl + 1; /* Top of CLMT */ + cl = (DWORD)(ofs / SS(fs) / fs->csize); /* Cluster order from top of the file */ + for (;;) { + ncl = *tbl++; /* Number of cluters in the fragment */ + if (ncl == 0) return 0; /* End of table? (error) */ + if (cl < ncl) break; /* In this fragment? */ + cl -= ncl; tbl++; /* Next fragment */ + } + return cl + *tbl; /* Return the cluster number */ +} + +#endif /* _USE_FASTSEEK */ + + + + +/*-----------------------------------------------------------------------*/ +/* Directory handling - Set directory index */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT dir_sdi ( /* FR_OK(0):succeeded, !=0:error */ + DIR* dp, /* Pointer to directory object */ + DWORD ofs /* Offset of directory table */ +) +{ + DWORD csz, clst; + FATFS *fs = dp->obj.fs; + + + if (ofs >= (DWORD)((_FS_EXFAT && fs->fs_type == FS_EXFAT) ? MAX_DIR_EX : MAX_DIR) || ofs % SZDIRE) { /* Check range of offset and alignment */ + return FR_INT_ERR; + } + dp->dptr = ofs; /* Set current offset */ + clst = dp->obj.sclust; /* Table start cluster (0:root) */ + if (clst == 0 && fs->fs_type >= FS_FAT32) { /* Replace cluster# 0 with root cluster# */ + clst = fs->dirbase; + if (_FS_EXFAT) dp->obj.stat = 0; /* exFAT: Root dir has an FAT chain */ + } + + if (clst == 0) { /* Static table (root-directory in FAT12/16) */ + if (ofs / SZDIRE >= fs->n_rootdir) return FR_INT_ERR; /* Is index out of range? */ + dp->sect = fs->dirbase; + + } else { /* Dynamic table (sub-directory or root-directory in FAT32+) */ + csz = (DWORD)fs->csize * SS(fs); /* Bytes per cluster */ + while (ofs >= csz) { /* Follow cluster chain */ + clst = get_fat(&dp->obj, clst); /* Get next cluster */ + if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Reached to end of table or internal error */ + ofs -= csz; + } + dp->sect = clust2sect(fs, clst); + } + dp->clust = clst; /* Current cluster# */ + if (!dp->sect) return FR_INT_ERR; + dp->sect += ofs / SS(fs); /* Sector# of the directory entry */ + dp->dir = fs->win + (ofs % SS(fs)); /* Pointer to the entry in the win[] */ + + return FR_OK; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Directory handling - Move directory table index next */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT dir_next ( /* FR_OK(0):succeeded, FR_NO_FILE:End of table, FR_DENIED:Could not stretch */ + DIR* dp, /* Pointer to the directory object */ + int stretch /* 0: Do not stretch table, 1: Stretch table if needed */ +) +{ + DWORD ofs, clst; + FATFS *fs = dp->obj.fs; +#if !_FS_READONLY + UINT n; +#endif + + ofs = dp->dptr + SZDIRE; /* Next entry */ + if (!dp->sect || ofs >= (DWORD)((_FS_EXFAT && fs->fs_type == FS_EXFAT) ? MAX_DIR_EX : MAX_DIR)) return FR_NO_FILE; /* Report EOT when offset has reached max value */ + + if (ofs % SS(fs) == 0) { /* Sector changed? */ + dp->sect++; /* Next sector */ + + if (!dp->clust) { /* Static table */ + if (ofs / SZDIRE >= fs->n_rootdir) { /* Report EOT if it reached end of static table */ + dp->sect = 0; return FR_NO_FILE; + } + } + else { /* Dynamic table */ + if ((ofs / SS(fs) & (fs->csize - 1)) == 0) { /* Cluster changed? */ + clst = get_fat(&dp->obj, dp->clust); /* Get next cluster */ + if (clst <= 1) return FR_INT_ERR; /* Internal error */ + if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + if (clst >= fs->n_fatent) { /* Reached end of dynamic table */ +#if !_FS_READONLY + if (!stretch) { /* If no stretch, report EOT */ + dp->sect = 0; return FR_NO_FILE; + } + clst = create_chain(&dp->obj, dp->clust); /* Allocate a cluster */ + if (clst == 0) return FR_DENIED; /* No free cluster */ + if (clst == 1) return FR_INT_ERR; /* Internal error */ + if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + /* Clean-up the stretched table */ + if (_FS_EXFAT) dp->obj.stat |= 4; /* The directory needs to be updated */ + if (sync_window(fs) != FR_OK) return FR_DISK_ERR; /* Flush disk access window */ + mem_set(fs->win, 0, SS(fs)); /* Clear window buffer */ + for (n = 0, fs->winsect = clust2sect(fs, clst); n < fs->csize; n++, fs->winsect++) { /* Fill the new cluster with 0 */ + fs->wflag = 1; + if (sync_window(fs) != FR_OK) return FR_DISK_ERR; + } + fs->winsect -= n; /* Restore window offset */ +#else + if (!stretch) dp->sect = 0; /* (this line is to suppress compiler warning) */ + dp->sect = 0; return FR_NO_FILE; /* Report EOT */ +#endif + } + dp->clust = clst; /* Initialize data for new cluster */ + dp->sect = clust2sect(fs, clst); + } + } + } + dp->dptr = ofs; /* Current entry */ + dp->dir = fs->win + ofs % SS(fs); /* Pointer to the entry in the win[] */ + + return FR_OK; +} + + + + +#if !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Directory handling - Reserve a block of directory entries */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT dir_alloc ( /* FR_OK(0):succeeded, !=0:error */ + DIR* dp, /* Pointer to the directory object */ + UINT nent /* Number of contiguous entries to allocate */ +) +{ + FRESULT res; + UINT n; + FATFS *fs = dp->obj.fs; + + + res = dir_sdi(dp, 0); + if (res == FR_OK) { + n = 0; + do { + res = move_window(fs, dp->sect); + if (res != FR_OK) break; +#if _FS_EXFAT + if ((fs->fs_type == FS_EXFAT) ? (int)((dp->dir[XDIR_Type] & 0x80) == 0) : (int)(dp->dir[DIR_Name] == DDEM || dp->dir[DIR_Name] == 0)) { +#else + if (dp->dir[DIR_Name] == DDEM || dp->dir[DIR_Name] == 0) { +#endif + if (++n == nent) break; /* A block of contiguous free entries is found */ + } else { + n = 0; /* Not a blank entry. Restart to search */ + } + res = dir_next(dp, 1); + } while (res == FR_OK); /* Next entry with table stretch enabled */ + } + + if (res == FR_NO_FILE) res = FR_DENIED; /* No directory entry to allocate */ + return res; +} + +#endif /* !_FS_READONLY */ + + + + +/*-----------------------------------------------------------------------*/ +/* FAT: Directory handling - Load/Store start cluster number */ +/*-----------------------------------------------------------------------*/ + +static +DWORD ld_clust ( /* Returns the top cluster value of the SFN entry */ + FATFS* fs, /* Pointer to the fs object */ + const BYTE* dir /* Pointer to the key entry */ +) +{ + DWORD cl; + + cl = ld_word(dir + DIR_FstClusLO); + if (fs->fs_type == FS_FAT32) { + cl |= (DWORD)ld_word(dir + DIR_FstClusHI) << 16; + } + + return cl; +} + + +#if !_FS_READONLY +static +void st_clust ( + FATFS* fs, /* Pointer to the fs object */ + BYTE* dir, /* Pointer to the key entry */ + DWORD cl /* Value to be set */ +) +{ + st_word(dir + DIR_FstClusLO, (WORD)cl); + if (fs->fs_type == FS_FAT32) { + st_word(dir + DIR_FstClusHI, (WORD)(cl >> 16)); + } +} +#endif + + + +#if _USE_LFN != 0 +/*------------------------------------------------------------------------*/ +/* FAT-LFN: LFN handling */ +/*------------------------------------------------------------------------*/ +static +const BYTE LfnOfs[] = {1,3,5,7,9,14,16,18,20,22,24,28,30}; /* Offset of LFN characters in the directory entry */ + + +/*--------------------------------------------------------*/ +/* FAT-LFN: Compare a part of file name with an LFN entry */ +/*--------------------------------------------------------*/ +static +int cmp_lfn ( /* 1:matched, 0:not matched */ + const WCHAR* lfnbuf, /* Pointer to the LFN working buffer to be compared */ + BYTE* dir /* Pointer to the directory entry containing the part of LFN */ +) +{ + UINT i, s; + WCHAR wc, uc; + + + if (ld_word(dir + LDIR_FstClusLO) != 0) return 0; /* Check LDIR_FstClusLO */ + + i = ((dir[LDIR_Ord] & 0x3F) - 1) * 13; /* Offset in the LFN buffer */ + + for (wc = 1, s = 0; s < 13; s++) { /* Process all characters in the entry */ + uc = ld_word(dir + LfnOfs[s]); /* Pick an LFN character */ + if (wc) { + if (i >= _MAX_LFN || ff_wtoupper(uc) != ff_wtoupper(lfnbuf[i++])) { /* Compare it */ + return 0; /* Not matched */ + } + wc = uc; + } else { + if (uc != 0xFFFF) return 0; /* Check filler */ + } + } + + if ((dir[LDIR_Ord] & LLEF) && wc && lfnbuf[i]) return 0; /* Last segment matched but different length */ + + return 1; /* The part of LFN matched */ +} + + +#if _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 || _USE_LABEL || _FS_EXFAT +/*-----------------------------------------------------*/ +/* FAT-LFN: Pick a part of file name from an LFN entry */ +/*-----------------------------------------------------*/ +static +int pick_lfn ( /* 1:succeeded, 0:buffer overflow or invalid LFN entry */ + WCHAR* lfnbuf, /* Pointer to the LFN working buffer */ + BYTE* dir /* Pointer to the LFN entry */ +) +{ + UINT i, s; + WCHAR wc, uc; + + + if (ld_word(dir + LDIR_FstClusLO) != 0) return 0; /* Check LDIR_FstClusLO is 0 */ + + i = ((dir[LDIR_Ord] & ~LLEF) - 1) * 13; /* Offset in the LFN buffer */ + + for (wc = 1, s = 0; s < 13; s++) { /* Process all characters in the entry */ + uc = ld_word(dir + LfnOfs[s]); /* Pick an LFN character */ + if (wc) { + if (i >= _MAX_LFN) return 0; /* Buffer overflow? */ + lfnbuf[i++] = wc = uc; /* Store it */ + } else { + if (uc != 0xFFFF) return 0; /* Check filler */ + } + } + + if (dir[LDIR_Ord] & LLEF) { /* Put terminator if it is the last LFN part */ + if (i >= _MAX_LFN) return 0; /* Buffer overflow? */ + lfnbuf[i] = 0; + } + + return 1; /* The part of LFN is valid */ +} +#endif + + +#if !_FS_READONLY +/*-----------------------------------------*/ +/* FAT-LFN: Create an entry of LFN entries */ +/*-----------------------------------------*/ +static +void put_lfn ( + const WCHAR* lfn, /* Pointer to the LFN */ + BYTE* dir, /* Pointer to the LFN entry to be created */ + BYTE ord, /* LFN order (1-20) */ + BYTE sum /* Checksum of the corresponding SFN */ +) +{ + UINT i, s; + WCHAR wc; + + + dir[LDIR_Chksum] = sum; /* Set checksum */ + dir[LDIR_Attr] = AM_LFN; /* Set attribute. LFN entry */ + dir[LDIR_Type] = 0; + st_word(dir + LDIR_FstClusLO, 0); + + i = (ord - 1) * 13; /* Get offset in the LFN working buffer */ + s = wc = 0; + do { + if (wc != 0xFFFF) wc = lfn[i++]; /* Get an effective character */ + st_word(dir + LfnOfs[s], wc); /* Put it */ + if (wc == 0) wc = 0xFFFF; /* Padding characters for left locations */ + } while (++s < 13); + if (wc == 0xFFFF || !lfn[i]) ord |= LLEF; /* Last LFN part is the start of LFN sequence */ + dir[LDIR_Ord] = ord; /* Set the LFN order */ +} + +#endif /* !_FS_READONLY */ +#endif /* _USE_LFN != 0 */ + + + +#if _USE_LFN != 0 && !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* FAT-LFN: Create a Numbered SFN */ +/*-----------------------------------------------------------------------*/ + +static +void gen_numname ( + BYTE* dst, /* Pointer to the buffer to store numbered SFN */ + const BYTE* src, /* Pointer to SFN */ + const WCHAR* lfn, /* Pointer to LFN */ + UINT seq /* Sequence number */ +) +{ + BYTE ns[8], c; + UINT i, j; + WCHAR wc; + DWORD sr; + + + mem_cpy(dst, src, 11); + + if (seq > 5) { /* In case of many collisions, generate a hash number instead of sequential number */ + sr = seq; + while (*lfn) { /* Create a CRC */ + wc = *lfn++; + for (i = 0; i < 16; i++) { + sr = (sr << 1) + (wc & 1); + wc >>= 1; + if (sr & 0x10000) sr ^= 0x11021; + } + } + seq = (UINT)sr; + } + + /* itoa (hexdecimal) */ + i = 7; + do { + c = (BYTE)((seq % 16) + '0'); + if (c > '9') c += 7; + ns[i--] = c; + seq /= 16; + } while (seq); + ns[i] = '~'; + + /* Append the number */ + for (j = 0; j < i && dst[j] != ' '; j++) { + if (IsDBCS1(dst[j])) { + if (j == i - 1) break; + j++; + } + } + do { + dst[j++] = (i < 8) ? ns[i++] : ' '; + } while (j < 8); +} +#endif /* _USE_LFN != 0 && !_FS_READONLY */ + + + +#if _USE_LFN != 0 +/*-----------------------------------------------------------------------*/ +/* FAT-LFN: Calculate checksum of an SFN entry */ +/*-----------------------------------------------------------------------*/ + +static +BYTE sum_sfn ( + const BYTE* dir /* Pointer to the SFN entry */ +) +{ + BYTE sum = 0; + UINT n = 11; + + do { + sum = (sum >> 1) + (sum << 7) + *dir++; + } while (--n); + return sum; +} + +#endif /* _USE_LFN != 0 */ + + + +#if _FS_EXFAT +/*-----------------------------------------------------------------------*/ +/* exFAT: Checksum */ +/*-----------------------------------------------------------------------*/ + +static +WORD xdir_sum ( /* Get checksum of the directoly block */ + const BYTE* dir /* Directory entry block to be calculated */ +) +{ + UINT i, szblk; + WORD sum; + + + szblk = (dir[XDIR_NumSec] + 1) * SZDIRE; + for (i = sum = 0; i < szblk; i++) { + if (i == XDIR_SetSum) { /* Skip sum field */ + i++; + } else { + sum = ((sum & 1) ? 0x8000 : 0) + (sum >> 1) + dir[i]; + } + } + return sum; +} + + + +static +WORD xname_sum ( /* Get check sum (to be used as hash) of the name */ + const WCHAR* name /* File name to be calculated */ +) +{ + WCHAR chr; + WORD sum = 0; + + + while ((chr = *name++) != 0) { + chr = ff_wtoupper(chr); /* File name needs to be ignored case */ + sum = ((sum & 1) ? 0x8000 : 0) + (sum >> 1) + (chr & 0xFF); + sum = ((sum & 1) ? 0x8000 : 0) + (sum >> 1) + (chr >> 8); + } + return sum; +} + + +#if !_FS_READONLY && _USE_MKFS +static +DWORD xsum32 ( + BYTE dat, /* Data to be sumed */ + DWORD sum /* Previous value */ +) +{ + sum = ((sum & 1) ? 0x80000000 : 0) + (sum >> 1) + dat; + return sum; +} +#endif + + +#if _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 +/*------------------------------------------------------*/ +/* exFAT: Get object information from a directory block */ +/*------------------------------------------------------*/ + +static +void get_xdir_info ( + BYTE* dirb, /* Pointer to the direcotry entry block 85+C0+C1s */ + FILINFO* fno /* Buffer to store the extracted file information */ +) +{ + UINT di, si; + WCHAR w; +#if !_LFN_UNICODE + UINT nc; +#endif + + /* Get file name */ + di = 0; +#if _LFN_UNICODE + for (si = SZDIRE * 2; di < dirb[XDIR_NumName]; si += 2, di++) { + if ((si % SZDIRE) == 0) si += 2; /* Skip entry type field */ + w = ld_word(dirb + si); /* Get a character */ + if (di >= _MAX_LFN) { di = 0; break; } /* Buffer overflow --> inaccessible object name */ + fno->fname[di] = w; /* Store it */ + } +#else + for (si = SZDIRE * 2, nc = 0; nc < dirb[XDIR_NumName]; si += 2, nc++) { + if ((si % SZDIRE) == 0) si += 2; /* Skip entry type field */ + w = ff_convert(ld_word(dirb + si), 0); /* Get a character and Unicode -> OEM */ + if (_DF1S && w >= 0x100) { /* Is it a double byte char? (always false at SBCS cfg) */ + fno->fname[di++] = (char)(w >> 8); /* Put 1st byte of the DBC */ + } + if (w == 0 || di >= _MAX_LFN) { di = 0; break; } /* Invalid char or buffer overflow --> inaccessible object name */ + fno->fname[di++] = (char)w; + } +#endif + if (di == 0) fno->fname[di++] = '?'; /* Inaccessible object name? */ + fno->fname[di] = 0; /* Terminate file name */ + + fno->altname[0] = 0; /* No SFN */ + fno->fattrib = dirb[XDIR_Attr]; /* Attribute */ + fno->fsize = (fno->fattrib & AM_DIR) ? 0 : ld_qword(dirb + XDIR_FileSize); /* Size */ + fno->ftime = ld_word(dirb + XDIR_ModTime + 0); /* Time */ + fno->fdate = ld_word(dirb + XDIR_ModTime + 2); /* Date */ +} + +#endif /* _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 */ + + +/*-----------------------------------*/ +/* exFAT: Get a directry entry block */ +/*-----------------------------------*/ + +static +FRESULT load_xdir ( /* FR_INT_ERR: invalid entry block */ + DIR* dp /* Pointer to the reading direcotry object pointing the 85 entry */ +) +{ + FRESULT res; + UINT i, sz_ent; + BYTE* dirb = dp->obj.fs->dirbuf; /* Pointer to the on-memory direcotry entry block 85+C0+C1s */ + + + /* Load 85 entry */ + res = move_window(dp->obj.fs, dp->sect); + if (res != FR_OK) return res; + if (dp->dir[XDIR_Type] != 0x85) return FR_INT_ERR; + mem_cpy(dirb + 0, dp->dir, SZDIRE); + sz_ent = (dirb[XDIR_NumSec] + 1) * SZDIRE; + if (sz_ent < 3 * SZDIRE || sz_ent > 19 * SZDIRE) return FR_INT_ERR; + + /* Load C0 entry */ + res = dir_next(dp, 0); + if (res != FR_OK) return res; + res = move_window(dp->obj.fs, dp->sect); + if (res != FR_OK) return res; + if (dp->dir[XDIR_Type] != 0xC0) return FR_INT_ERR; + mem_cpy(dirb + SZDIRE, dp->dir, SZDIRE); + if (MAXDIRB(dirb[XDIR_NumName]) > sz_ent) return FR_INT_ERR; + + /* Load C1 entries */ + i = SZDIRE * 2; /* C1 offset */ + do { + res = dir_next(dp, 0); + if (res != FR_OK) return res; + res = move_window(dp->obj.fs, dp->sect); + if (res != FR_OK) return res; + if (dp->dir[XDIR_Type] != 0xC1) return FR_INT_ERR; + if (i < MAXDIRB(_MAX_LFN)) mem_cpy(dirb + i, dp->dir, SZDIRE); + } while ((i += SZDIRE) < sz_ent); + + /* Sanity check (do it when accessible object name) */ + if (i <= MAXDIRB(_MAX_LFN)) { + if (xdir_sum(dirb) != ld_word(dirb + XDIR_SetSum)) return FR_INT_ERR; + } + return FR_OK; +} + + +#if !_FS_READONLY || _FS_RPATH != 0 +/*------------------------------------------------*/ +/* exFAT: Load the object's directory entry block */ +/*------------------------------------------------*/ +static +FRESULT load_obj_dir ( + DIR* dp, /* Blank directory object to be used to access containing direcotry */ + const _FDID* obj /* Object with its containing directory information */ +) +{ + FRESULT res; + + /* Open object containing directory */ + dp->obj.fs = obj->fs; + dp->obj.sclust = obj->c_scl; + dp->obj.stat = (BYTE)obj->c_size; + dp->obj.objsize = obj->c_size & 0xFFFFFF00; + dp->blk_ofs = obj->c_ofs; + + res = dir_sdi(dp, dp->blk_ofs); /* Goto object's entry block */ + if (res == FR_OK) { + res = load_xdir(dp); /* Load the object's entry block */ + } + return res; +} +#endif + + +#if !_FS_READONLY +/*-----------------------------------------------*/ +/* exFAT: Store the directory block to the media */ +/*-----------------------------------------------*/ +static +FRESULT store_xdir ( + DIR* dp /* Pointer to the direcotry object */ +) +{ + FRESULT res; + UINT nent; + BYTE* dirb = dp->obj.fs->dirbuf; /* Pointer to the direcotry entry block 85+C0+C1s */ + + /* Create set sum */ + st_word(dirb + XDIR_SetSum, xdir_sum(dirb)); + nent = dirb[XDIR_NumSec] + 1; + + /* Store the set of directory to the volume */ + res = dir_sdi(dp, dp->blk_ofs); + while (res == FR_OK) { + res = move_window(dp->obj.fs, dp->sect); + if (res != FR_OK) break; + mem_cpy(dp->dir, dirb, SZDIRE); + dp->obj.fs->wflag = 1; + if (--nent == 0) break; + dirb += SZDIRE; + res = dir_next(dp, 0); + } + return (res == FR_OK || res == FR_DISK_ERR) ? res : FR_INT_ERR; +} + + + +/*-------------------------------------------*/ +/* exFAT: Create a new directory enrty block */ +/*-------------------------------------------*/ + +static +void create_xdir ( + BYTE* dirb, /* Pointer to the direcotry entry block buffer */ + const WCHAR* lfn /* Pointer to the nul terminated file name */ +) +{ + UINT i; + BYTE nb, nc; + WCHAR chr; + + + /* Create 85+C0 entry */ + mem_set(dirb, 0, 2 * SZDIRE); + dirb[XDIR_Type] = 0x85; + dirb[XDIR_Type + SZDIRE] = 0xC0; + + /* Create C1 entries */ + nc = 0; nb = 1; chr = 1; i = SZDIRE * 2; + do { + dirb[i++] = 0xC1; dirb[i++] = 0; /* Entry type C1 */ + do { /* Fill name field */ + if (chr && (chr = lfn[nc]) != 0) nc++; /* Get a character if exist */ + st_word(dirb + i, chr); /* Store it */ + } while ((i += 2) % SZDIRE != 0); + nb++; + } while (lfn[nc]); /* Fill next entry if any char follows */ + + dirb[XDIR_NumName] = nc; /* Set name length */ + dirb[XDIR_NumSec] = nb; /* Set block length */ + st_word(dirb + XDIR_NameHash, xname_sum(lfn)); /* Set name hash */ +} + +#endif /* !_FS_READONLY */ +#endif /* _FS_EXFAT */ + + + +#if _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 || _USE_LABEL || _FS_EXFAT +/*-----------------------------------------------------------------------*/ +/* Read an object from the directory */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT dir_read ( + DIR* dp, /* Pointer to the directory object */ + int vol /* Filtered by 0:file/directory or 1:volume label */ +) +{ + FRESULT res = FR_NO_FILE; + FATFS *fs = dp->obj.fs; + BYTE a, c; +#if _USE_LFN != 0 + BYTE ord = 0xFF, sum = 0xFF; +#endif + + while (dp->sect) { + res = move_window(fs, dp->sect); + if (res != FR_OK) break; + c = dp->dir[DIR_Name]; /* Test for the entry type */ + if (c == 0) { + res = FR_NO_FILE; break; /* Reached to end of the directory */ + } +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + if (_USE_LABEL && vol) { + if (c == 0x83) break; /* Volume label entry? */ + } else { + if (c == 0x85) { /* Start of the file entry block? */ + dp->blk_ofs = dp->dptr; /* Get location of the block */ + res = load_xdir(dp); /* Load the entry block */ + if (res == FR_OK) { + dp->obj.attr = fs->dirbuf[XDIR_Attr] & AM_MASK; /* Get attribute */ + } + break; + } + } + } else +#endif + { /* On the FAT12/16/32 volume */ + dp->obj.attr = a = dp->dir[DIR_Attr] & AM_MASK; /* Get attribute */ +#if _USE_LFN != 0 /* LFN configuration */ + if (c == DDEM || c == '.' || (int)((a & ~AM_ARC) == AM_VOL) != vol) { /* An entry without valid data */ + ord = 0xFF; + } else { + if (a == AM_LFN) { /* An LFN entry is found */ + if (c & LLEF) { /* Is it start of an LFN sequence? */ + sum = dp->dir[LDIR_Chksum]; + c &= (BYTE)~LLEF; ord = c; + dp->blk_ofs = dp->dptr; + } + /* Check LFN validity and capture it */ + ord = (c == ord && sum == dp->dir[LDIR_Chksum] && pick_lfn(fs->lfnbuf, dp->dir)) ? ord - 1 : 0xFF; + } else { /* An SFN entry is found */ + if (ord || sum != sum_sfn(dp->dir)) { /* Is there a valid LFN? */ + dp->blk_ofs = 0xFFFFFFFF; /* It has no LFN. */ + } + break; + } + } +#else /* Non LFN configuration */ + if (c != DDEM && c != '.' && a != AM_LFN && (int)((a & ~AM_ARC) == AM_VOL) == vol) { /* Is it a valid entry? */ + break; + } +#endif + } + res = dir_next(dp, 0); /* Next entry */ + if (res != FR_OK) break; + } + + if (res != FR_OK) dp->sect = 0; /* Terminate the read operation on error or EOT */ + return res; +} + +#endif /* _FS_MINIMIZE <= 1 || _USE_LABEL || _FS_RPATH >= 2 */ + + + +/*-----------------------------------------------------------------------*/ +/* Directory handling - Find an object in the directory */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT dir_find ( /* FR_OK(0):succeeded, !=0:error */ + DIR* dp /* Pointer to the directory object with the file name */ +) +{ + FRESULT res; + FATFS *fs = dp->obj.fs; + BYTE c; +#if _USE_LFN != 0 + BYTE a, ord, sum; +#endif + + res = dir_sdi(dp, 0); /* Rewind directory object */ + if (res != FR_OK) return res; +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + BYTE nc; + UINT di, ni; + WORD hash = xname_sum(fs->lfnbuf); /* Hash value of the name to find */ + + while ((res = dir_read(dp, 0)) == FR_OK) { /* Read an item */ +#if _MAX_LFN < 255 + if (fs->dirbuf[XDIR_NumName] > _MAX_LFN) continue; /* Skip comparison if inaccessible object name */ +#endif + if (ld_word(fs->dirbuf + XDIR_NameHash) != hash) continue; /* Skip comparison if hash mismatched */ + for (nc = fs->dirbuf[XDIR_NumName], di = SZDIRE * 2, ni = 0; nc; nc--, di += 2, ni++) { /* Compare the name */ + if ((di % SZDIRE) == 0) di += 2; + if (ff_wtoupper(ld_word(fs->dirbuf + di)) != ff_wtoupper(fs->lfnbuf[ni])) break; + } + if (nc == 0 && !fs->lfnbuf[ni]) break; /* Name matched? */ + } + return res; + } +#endif + /* On the FAT12/16/32 volume */ +#if _USE_LFN != 0 + ord = sum = 0xFF; dp->blk_ofs = 0xFFFFFFFF; /* Reset LFN sequence */ +#endif + do { + res = move_window(fs, dp->sect); + if (res != FR_OK) break; + c = dp->dir[DIR_Name]; + if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of table */ +#if _USE_LFN != 0 /* LFN configuration */ + dp->obj.attr = a = dp->dir[DIR_Attr] & AM_MASK; + if (c == DDEM || ((a & AM_VOL) && a != AM_LFN)) { /* An entry without valid data */ + ord = 0xFF; dp->blk_ofs = 0xFFFFFFFF; /* Reset LFN sequence */ + } else { + if (a == AM_LFN) { /* An LFN entry is found */ + if (!(dp->fn[NSFLAG] & NS_NOLFN)) { + if (c & LLEF) { /* Is it start of LFN sequence? */ + sum = dp->dir[LDIR_Chksum]; + c &= (BYTE)~LLEF; ord = c; /* LFN start order */ + dp->blk_ofs = dp->dptr; /* Start offset of LFN */ + } + /* Check validity of the LFN entry and compare it with given name */ + ord = (c == ord && sum == dp->dir[LDIR_Chksum] && cmp_lfn(fs->lfnbuf, dp->dir)) ? ord - 1 : 0xFF; + } + } else { /* An SFN entry is found */ + if (!ord && sum == sum_sfn(dp->dir)) break; /* LFN matched? */ + if (!(dp->fn[NSFLAG] & NS_LOSS) && !mem_cmp(dp->dir, dp->fn, 11)) break; /* SFN matched? */ + ord = 0xFF; dp->blk_ofs = 0xFFFFFFFF; /* Reset LFN sequence */ + } + } +#else /* Non LFN configuration */ + dp->obj.attr = dp->dir[DIR_Attr] & AM_MASK; + if (!(dp->dir[DIR_Attr] & AM_VOL) && !mem_cmp(dp->dir, dp->fn, 11)) break; /* Is it a valid entry? */ +#endif + res = dir_next(dp, 0); /* Next entry */ + } while (res == FR_OK); + + return res; +} + + + + +#if !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Register an object to the directory */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT dir_register ( /* FR_OK:succeeded, FR_DENIED:no free entry or too many SFN collision, FR_DISK_ERR:disk error */ + DIR* dp /* Target directory with object name to be created */ +) +{ + FRESULT res; + FATFS *fs = dp->obj.fs; +#if _USE_LFN != 0 /* LFN configuration */ + UINT n, nlen, nent; + BYTE sn[12], sum; + + + if (dp->fn[NSFLAG] & (NS_DOT | NS_NONAME)) return FR_INVALID_NAME; /* Check name validity */ + for (nlen = 0; fs->lfnbuf[nlen]; nlen++) ; /* Get lfn length */ + +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + DIR dj; + + nent = (nlen + 14) / 15 + 2; /* Number of entries to allocate (85+C0+C1s) */ + res = dir_alloc(dp, nent); /* Allocate entries */ + if (res != FR_OK) return res; + dp->blk_ofs = dp->dptr - SZDIRE * (nent - 1); /* Set the allocated entry block offset */ + + if (dp->obj.sclust != 0 && (dp->obj.stat & 4)) { /* Has the sub-directory been stretched? */ + dp->obj.objsize += (DWORD)fs->csize * SS(fs); /* Increase the directory size by cluster size */ + res = fill_first_frag(&dp->obj); /* Fill first fragment on the FAT if needed */ + if (res != FR_OK) return res; + res = fill_last_frag(&dp->obj, dp->clust, 0xFFFFFFFF); /* Fill last fragment on the FAT if needed */ + if (res != FR_OK) return res; + res = load_obj_dir(&dj, &dp->obj); /* Load the object status */ + if (res != FR_OK) return res; + st_qword(fs->dirbuf + XDIR_FileSize, dp->obj.objsize); /* Update the allocation status */ + st_qword(fs->dirbuf + XDIR_ValidFileSize, dp->obj.objsize); + fs->dirbuf[XDIR_GenFlags] = dp->obj.stat | 1; + res = store_xdir(&dj); /* Store the object status */ + if (res != FR_OK) return res; + } + + create_xdir(fs->dirbuf, fs->lfnbuf); /* Create on-memory directory block to be written later */ + return FR_OK; + } +#endif + /* On the FAT12/16/32 volume */ + mem_cpy(sn, dp->fn, 12); + if (sn[NSFLAG] & NS_LOSS) { /* When LFN is out of 8.3 format, generate a numbered name */ + dp->fn[NSFLAG] = NS_NOLFN; /* Find only SFN */ + for (n = 1; n < 100; n++) { + gen_numname(dp->fn, sn, fs->lfnbuf, n); /* Generate a numbered name */ + res = dir_find(dp); /* Check if the name collides with existing SFN */ + if (res != FR_OK) break; + } + if (n == 100) return FR_DENIED; /* Abort if too many collisions */ + if (res != FR_NO_FILE) return res; /* Abort if the result is other than 'not collided' */ + dp->fn[NSFLAG] = sn[NSFLAG]; + } + + /* Create an SFN with/without LFNs. */ + nent = (sn[NSFLAG] & NS_LFN) ? (nlen + 12) / 13 + 1 : 1; /* Number of entries to allocate */ + res = dir_alloc(dp, nent); /* Allocate entries */ + if (res == FR_OK && --nent) { /* Set LFN entry if needed */ + res = dir_sdi(dp, dp->dptr - nent * SZDIRE); + if (res == FR_OK) { + sum = sum_sfn(dp->fn); /* Checksum value of the SFN tied to the LFN */ + do { /* Store LFN entries in bottom first */ + res = move_window(fs, dp->sect); + if (res != FR_OK) break; + put_lfn(fs->lfnbuf, dp->dir, (BYTE)nent, sum); + fs->wflag = 1; + res = dir_next(dp, 0); /* Next entry */ + } while (res == FR_OK && --nent); + } + } + +#else /* Non LFN configuration */ + res = dir_alloc(dp, 1); /* Allocate an entry for SFN */ + +#endif + + /* Set SFN entry */ + if (res == FR_OK) { + res = move_window(fs, dp->sect); + if (res == FR_OK) { + mem_set(dp->dir, 0, SZDIRE); /* Clean the entry */ + mem_cpy(dp->dir + DIR_Name, dp->fn, 11); /* Put SFN */ +#if _USE_LFN != 0 + dp->dir[DIR_NTres] = dp->fn[NSFLAG] & (NS_BODY | NS_EXT); /* Put NT flag */ +#endif + fs->wflag = 1; + } + } + + return res; +} + +#endif /* !_FS_READONLY */ + + + +#if !_FS_READONLY && _FS_MINIMIZE == 0 +/*-----------------------------------------------------------------------*/ +/* Remove an object from the directory */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT dir_remove ( /* FR_OK:Succeeded, FR_DISK_ERR:A disk error */ + DIR* dp /* Directory object pointing the entry to be removed */ +) +{ + FRESULT res; + FATFS *fs = dp->obj.fs; +#if _USE_LFN != 0 /* LFN configuration */ + DWORD last = dp->dptr; + + res = (dp->blk_ofs == 0xFFFFFFFF) ? FR_OK : dir_sdi(dp, dp->blk_ofs); /* Goto top of the entry block if LFN is exist */ + if (res == FR_OK) { + do { + res = move_window(fs, dp->sect); + if (res != FR_OK) break; + /* Mark an entry 'deleted' */ + if (_FS_EXFAT && fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + dp->dir[XDIR_Type] &= 0x7F; + } else { /* On the FAT12/16/32 volume */ + dp->dir[DIR_Name] = DDEM; + } + fs->wflag = 1; + if (dp->dptr >= last) break; /* If reached last entry then all entries of the object has been deleted. */ + res = dir_next(dp, 0); /* Next entry */ + } while (res == FR_OK); + if (res == FR_NO_FILE) res = FR_INT_ERR; + } +#else /* Non LFN configuration */ + + res = move_window(fs, dp->sect); + if (res == FR_OK) { + dp->dir[DIR_Name] = DDEM; + fs->wflag = 1; + } +#endif + + return res; +} + +#endif /* !_FS_READONLY && _FS_MINIMIZE == 0 */ + + + +#if _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 +/*-----------------------------------------------------------------------*/ +/* Get file information from directory entry */ +/*-----------------------------------------------------------------------*/ + +static +void get_fileinfo ( /* No return code */ + DIR* dp, /* Pointer to the directory object */ + FILINFO* fno /* Pointer to the file information to be filled */ +) +{ + UINT i, j; + TCHAR c; + DWORD tm; +#if _USE_LFN != 0 + WCHAR w, lfv; + FATFS *fs = dp->obj.fs; +#endif + + + fno->fname[0] = 0; /* Invaidate file info */ + if (!dp->sect) return; /* Exit if read pointer has reached end of directory */ + +#if _USE_LFN != 0 /* LFN configuration */ +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + get_xdir_info(fs->dirbuf, fno); + return; + } else +#endif + { /* On the FAT12/16/32 volume */ + if (dp->blk_ofs != 0xFFFFFFFF) { /* Get LFN if available */ + i = j = 0; + while ((w = fs->lfnbuf[j++]) != 0) { /* Get an LFN character */ +#if !_LFN_UNICODE + w = ff_convert(w, 0); /* Unicode -> OEM */ + if (w == 0) { i = 0; break; } /* No LFN if it could not be converted */ + if (_DF1S && w >= 0x100) { /* Put 1st byte if it is a DBC (always false at SBCS cfg) */ + fno->fname[i++] = (char)(w >> 8); + } +#endif + if (i >= _MAX_LFN) { i = 0; break; } /* No LFN if buffer overflow */ + fno->fname[i++] = (TCHAR)w; + } + fno->fname[i] = 0; /* Terminate the LFN */ + } + } + + i = j = 0; + lfv = fno->fname[i]; /* LFN is exist if non-zero */ + while (i < 11) { /* Copy name body and extension */ + c = (TCHAR)dp->dir[i++]; + if (c == ' ') continue; /* Skip padding spaces */ + if (c == RDDEM) c = (TCHAR)DDEM; /* Restore replaced DDEM character */ + if (i == 9) { /* Insert a . if extension is exist */ + if (!lfv) fno->fname[j] = '.'; + fno->altname[j++] = '.'; + } +#if _LFN_UNICODE + if (IsDBCS1(c) && i != 8 && i != 11 && IsDBCS2(dp->dir[i])) { + c = c << 8 | dp->dir[i++]; + } + c = ff_convert(c, 1); /* OEM -> Unicode */ + if (!c) c = '?'; +#endif + fno->altname[j] = c; + if (!lfv) { + if (IsUpper(c) && (dp->dir[DIR_NTres] & ((i >= 9) ? NS_EXT : NS_BODY))) { + c += 0x20; /* To lower */ + } + fno->fname[j] = c; + } + j++; + } + if (!lfv) { + fno->fname[j] = 0; + if (!dp->dir[DIR_NTres]) j = 0; /* Altname is no longer needed if neither LFN nor case info is exist. */ + } + fno->altname[j] = 0; /* Terminate the SFN */ + +#else /* Non-LFN configuration */ + i = j = 0; + while (i < 11) { /* Copy name body and extension */ + c = (TCHAR)dp->dir[i++]; + if (c == ' ') continue; /* Skip padding spaces */ + if (c == RDDEM) c = (TCHAR)DDEM; /* Restore replaced DDEM character */ + if (i == 9) fno->fname[j++] = '.'; /* Insert a . if extension is exist */ + fno->fname[j++] = c; + } + fno->fname[j] = 0; +#endif + + fno->fattrib = dp->dir[DIR_Attr]; /* Attribute */ + fno->fsize = ld_dword(dp->dir + DIR_FileSize); /* Size */ + tm = ld_dword(dp->dir + DIR_ModTime); /* Timestamp */ + fno->ftime = (WORD)tm; fno->fdate = (WORD)(tm >> 16); +} + +#endif /* _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 */ + + + +#if _USE_FIND && _FS_MINIMIZE <= 1 +/*-----------------------------------------------------------------------*/ +/* Pattern matching */ +/*-----------------------------------------------------------------------*/ + +static +WCHAR get_achar ( /* Get a character and advances ptr 1 or 2 */ + const TCHAR** ptr /* Pointer to pointer to the SBCS/DBCS/Unicode string */ +) +{ +#if !_LFN_UNICODE + WCHAR chr; + + chr = (BYTE)*(*ptr)++; /* Get a byte */ + if (IsLower(chr)) chr -= 0x20; /* To upper ASCII char */ +#ifdef _EXCVT + if (chr >= 0x80) chr = ExCvt[chr - 0x80]; /* To upper SBCS extended char */ +#else + if (IsDBCS1(chr) && IsDBCS2(**ptr)) { /* Get DBC 2nd byte if needed */ + chr = chr << 8 | (BYTE)*(*ptr)++; + } +#endif + return chr; +#else + return ff_wtoupper(*(*ptr)++); /* Get a word and to upper */ +#endif +} + + +static +int pattern_matching ( /* 0:not matched, 1:matched */ + const TCHAR* pat, /* Matching pattern */ + const TCHAR* nam, /* String to be tested */ + int skip, /* Number of pre-skip chars (number of ?s) */ + int inf /* Infinite search (* specified) */ +) +{ + const TCHAR *pp, *np; + WCHAR pc, nc; + int nm, nx; + + + while (skip--) { /* Pre-skip name chars */ + if (!get_achar(&nam)) return 0; /* Branch mismatched if less name chars */ + } + if (!*pat && inf) return 1; /* (short circuit) */ + + do { + pp = pat; np = nam; /* Top of pattern and name to match */ + for (;;) { + if (*pp == '?' || *pp == '*') { /* Wildcard? */ + nm = nx = 0; + do { /* Analyze the wildcard chars */ + if (*pp++ == '?') nm++; else nx = 1; + } while (*pp == '?' || *pp == '*'); + if (pattern_matching(pp, np, nm, nx)) return 1; /* Test new branch (recurs upto number of wildcard blocks in the pattern) */ + nc = *np; break; /* Branch mismatched */ + } + pc = get_achar(&pp); /* Get a pattern char */ + nc = get_achar(&np); /* Get a name char */ + if (pc != nc) break; /* Branch mismatched? */ + if (pc == 0) return 1; /* Branch matched? (matched at end of both strings) */ + } + get_achar(&nam); /* nam++ */ + } while (inf && nc); /* Retry until end of name if infinite search is specified */ + + return 0; +} + +#endif /* _USE_FIND && _FS_MINIMIZE <= 1 */ + + + +/*-----------------------------------------------------------------------*/ +/* Pick a top segment and create the object name in directory form */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT create_name ( /* FR_OK: successful, FR_INVALID_NAME: could not create */ + DIR* dp, /* Pointer to the directory object */ + const TCHAR** path /* Pointer to pointer to the segment in the path string */ +) +{ +#if _USE_LFN != 0 /* LFN configuration */ + BYTE b, cf; + WCHAR w, *lfn; + UINT i, ni, si, di; + const TCHAR *p; + + /* Create LFN in Unicode */ + p = *path; lfn = dp->obj.fs->lfnbuf; si = di = 0; + for (;;) { + w = p[si++]; /* Get a character */ + if (w < ' ') break; /* Break if end of the path name */ + if (w == '/' || w == '\\') { /* Break if a separator is found */ + while (p[si] == '/' || p[si] == '\\') si++; /* Skip duplicated separator if exist */ + break; + } + if (di >= _MAX_LFN) return FR_INVALID_NAME; /* Reject too long name */ +#if !_LFN_UNICODE + w &= 0xFF; + if (IsDBCS1(w)) { /* Check if it is a DBC 1st byte (always false on SBCS cfg) */ + b = (BYTE)p[si++]; /* Get 2nd byte */ + w = (w << 8) + b; /* Create a DBC */ + if (!IsDBCS2(b)) return FR_INVALID_NAME; /* Reject invalid sequence */ + } + w = ff_convert(w, 1); /* Convert ANSI/OEM to Unicode */ + if (!w) return FR_INVALID_NAME; /* Reject invalid code */ +#endif + if (w < 0x80 && chk_chr("\"*:<>\?|\x7F", w)) return FR_INVALID_NAME; /* Reject illegal characters for LFN */ + lfn[di++] = w; /* Store the Unicode character */ + } + *path = &p[si]; /* Return pointer to the next segment */ + cf = (w < ' ') ? NS_LAST : 0; /* Set last segment flag if end of the path */ +#if _FS_RPATH != 0 + if ((di == 1 && lfn[di - 1] == '.') || + (di == 2 && lfn[di - 1] == '.' && lfn[di - 2] == '.')) { /* Is this segment a dot name? */ + lfn[di] = 0; + for (i = 0; i < 11; i++) /* Create dot name for SFN entry */ + dp->fn[i] = (i < di) ? '.' : ' '; + dp->fn[i] = cf | NS_DOT; /* This is a dot entry */ + return FR_OK; + } +#endif + while (di) { /* Snip off trailing spaces and dots if exist */ + w = lfn[di - 1]; + if (w != ' ' && w != '.') break; + di--; + } + lfn[di] = 0; /* LFN is created */ + if (di == 0) return FR_INVALID_NAME; /* Reject nul name */ + + /* Create SFN in directory form */ + mem_set(dp->fn, ' ', 11); + for (si = 0; lfn[si] == ' ' || lfn[si] == '.'; si++) ; /* Strip leading spaces and dots */ + if (si) cf |= NS_LOSS | NS_LFN; + while (di && lfn[di - 1] != '.') di--; /* Find extension (di<=si: no extension) */ + + i = b = 0; ni = 8; + for (;;) { + w = lfn[si++]; /* Get an LFN character */ + if (!w) break; /* Break on end of the LFN */ + if (w == ' ' || (w == '.' && si != di)) { /* Remove spaces and dots */ + cf |= NS_LOSS | NS_LFN; continue; + } + + if (i >= ni || si == di) { /* Extension or end of SFN */ + if (ni == 11) { /* Long extension */ + cf |= NS_LOSS | NS_LFN; break; + } + if (si != di) cf |= NS_LOSS | NS_LFN; /* Out of 8.3 format */ + if (si > di) break; /* No extension */ + si = di; i = 8; ni = 11; /* Enter extension section */ + b <<= 2; continue; + } + + if (w >= 0x80) { /* Non ASCII character */ +#ifdef _EXCVT + w = ff_convert(w, 0); /* Unicode -> OEM code */ + if (w) w = ExCvt[w - 0x80]; /* Convert extended character to upper (SBCS) */ +#else + w = ff_convert(ff_wtoupper(w), 0); /* Upper converted Unicode -> OEM code */ +#endif + cf |= NS_LFN; /* Force create LFN entry */ + } + + if (_DF1S && w >= 0x100) { /* Is this DBC? (always false at SBCS cfg) */ + if (i >= ni - 1) { + cf |= NS_LOSS | NS_LFN; i = ni; continue; + } + dp->fn[i++] = (BYTE)(w >> 8); + } else { /* SBC */ + if (!w || chk_chr("+,;=[]", w)) { /* Replace illegal characters for SFN */ + w = '_'; cf |= NS_LOSS | NS_LFN;/* Lossy conversion */ + } else { + if (IsUpper(w)) { /* ASCII large capital */ + b |= 2; + } else { + if (IsLower(w)) { /* ASCII small capital */ + b |= 1; w -= 0x20; + } + } + } + } + dp->fn[i++] = (BYTE)w; + } + + if (dp->fn[0] == DDEM) dp->fn[0] = RDDEM; /* If the first character collides with DDEM, replace it with RDDEM */ + + if (ni == 8) b <<= 2; + if ((b & 0x0C) == 0x0C || (b & 0x03) == 0x03) cf |= NS_LFN; /* Create LFN entry when there are composite capitals */ + if (!(cf & NS_LFN)) { /* When LFN is in 8.3 format without extended character, NT flags are created */ + if ((b & 0x03) == 0x01) cf |= NS_EXT; /* NT flag (Extension has only small capital) */ + if ((b & 0x0C) == 0x04) cf |= NS_BODY; /* NT flag (Filename has only small capital) */ + } + + dp->fn[NSFLAG] = cf; /* SFN is created */ + + return FR_OK; + + +#else /* _USE_LFN != 0 : Non-LFN configuration */ + BYTE c, d, *sfn; + UINT ni, si, i; + const char *p; + + /* Create file name in directory form */ + p = *path; sfn = dp->fn; + mem_set(sfn, ' ', 11); + si = i = 0; ni = 8; +#if _FS_RPATH != 0 + if (p[si] == '.') { /* Is this a dot entry? */ + for (;;) { + c = (BYTE)p[si++]; + if (c != '.' || si >= 3) break; + sfn[i++] = c; + } + if (c != '/' && c != '\\' && c > ' ') return FR_INVALID_NAME; + *path = p + si; /* Return pointer to the next segment */ + sfn[NSFLAG] = (c <= ' ') ? NS_LAST | NS_DOT : NS_DOT; /* Set last segment flag if end of the path */ + return FR_OK; + } +#endif + for (;;) { + c = (BYTE)p[si++]; + if (c <= ' ') break; /* Break if end of the path name */ + if (c == '/' || c == '\\') { /* Break if a separator is found */ + while (p[si] == '/' || p[si] == '\\') si++; /* Skip duplicated separator if exist */ + break; + } + if (c == '.' || i >= ni) { /* End of body or over size? */ + if (ni == 11 || c != '.') return FR_INVALID_NAME; /* Over size or invalid dot */ + i = 8; ni = 11; /* Goto extension */ + continue; + } + if (c >= 0x80) { /* Extended character? */ +#ifdef _EXCVT + c = ExCvt[c - 0x80]; /* To upper extended characters (SBCS cfg) */ +#else +#if !_DF1S + return FR_INVALID_NAME; /* Reject extended characters (ASCII only cfg) */ +#endif +#endif + } + if (IsDBCS1(c)) { /* Check if it is a DBC 1st byte (always false at SBCS cfg.) */ + d = (BYTE)p[si++]; /* Get 2nd byte */ + if (!IsDBCS2(d) || i >= ni - 1) return FR_INVALID_NAME; /* Reject invalid DBC */ + sfn[i++] = c; + sfn[i++] = d; + } else { /* SBC */ + if (chk_chr("\"*+,:;<=>\?[]|\x7F", c)) return FR_INVALID_NAME; /* Reject illegal chrs for SFN */ + if (IsLower(c)) c -= 0x20; /* To upper */ + sfn[i++] = c; + } + } + *path = p + si; /* Return pointer to the next segment */ + if (i == 0) return FR_INVALID_NAME; /* Reject nul string */ + + if (sfn[0] == DDEM) sfn[0] = RDDEM; /* If the first character collides with DDEM, replace it with RDDEM */ + sfn[NSFLAG] = (c <= ' ') ? NS_LAST : 0; /* Set last segment flag if end of the path */ + + return FR_OK; +#endif /* _USE_LFN != 0 */ +} + + + + +/*-----------------------------------------------------------------------*/ +/* Follow a file path */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT follow_path ( /* FR_OK(0): successful, !=0: error code */ + DIR* dp, /* Directory object to return last directory and found object */ + const TCHAR* path /* Full-path string to find a file or directory */ +) +{ + FRESULT res; + BYTE ns; + _FDID *obj = &dp->obj; + FATFS *fs = obj->fs; + + +#if _FS_RPATH != 0 + if (*path != '/' && *path != '\\') { /* Without heading separator */ + obj->sclust = fs->cdir; /* Start from current directory */ + } else +#endif + { /* With heading separator */ + while (*path == '/' || *path == '\\') path++; /* Strip heading separator */ + obj->sclust = 0; /* Start from root directory */ + } +#if _FS_EXFAT + obj->n_frag = 0; /* Invalidate last fragment counter of the object */ +#if _FS_RPATH != 0 + if (fs->fs_type == FS_EXFAT && obj->sclust) { /* Retrieve the sub-directory status if needed */ + DIR dj; + + obj->c_scl = fs->cdc_scl; + obj->c_size = fs->cdc_size; + obj->c_ofs = fs->cdc_ofs; + res = load_obj_dir(&dj, obj); + if (res != FR_OK) return res; + obj->objsize = ld_dword(fs->dirbuf + XDIR_FileSize); + obj->stat = fs->dirbuf[XDIR_GenFlags] & 2; + } +#endif +#endif + + if ((UINT)*path < ' ') { /* Null path name is the origin directory itself */ + dp->fn[NSFLAG] = NS_NONAME; + res = dir_sdi(dp, 0); + + } else { /* Follow path */ + for (;;) { + res = create_name(dp, &path); /* Get a segment name of the path */ + if (res != FR_OK) break; + res = dir_find(dp); /* Find an object with the segment name */ + ns = dp->fn[NSFLAG]; + if (res != FR_OK) { /* Failed to find the object */ + if (res == FR_NO_FILE) { /* Object is not found */ + if (_FS_RPATH && (ns & NS_DOT)) { /* If dot entry is not exist, stay there */ + if (!(ns & NS_LAST)) continue; /* Continue to follow if not last segment */ + dp->fn[NSFLAG] = NS_NONAME; + res = FR_OK; + } else { /* Could not find the object */ + if (!(ns & NS_LAST)) res = FR_NO_PATH; /* Adjust error code if not last segment */ + } + } + break; + } + if (ns & NS_LAST) break; /* Last segment matched. Function completed. */ + /* Get into the sub-directory */ + if (!(obj->attr & AM_DIR)) { /* It is not a sub-directory and cannot follow */ + res = FR_NO_PATH; break; + } +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* Save containing directory information for next dir */ + obj->c_scl = obj->sclust; + obj->c_size = ((DWORD)obj->objsize & 0xFFFFFF00) | obj->stat; + obj->c_ofs = dp->blk_ofs; + obj->sclust = ld_dword(fs->dirbuf + XDIR_FstClus); /* Open next directory */ + obj->stat = fs->dirbuf[XDIR_GenFlags] & 2; + obj->objsize = ld_qword(fs->dirbuf + XDIR_FileSize); + } else +#endif + { + obj->sclust = ld_clust(fs, fs->win + dp->dptr % SS(fs)); /* Open next directory */ + } + } + } + + return res; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Get logical drive number from path name */ +/*-----------------------------------------------------------------------*/ + +static +int get_ldnumber ( /* Returns logical drive number (-1:invalid drive) */ + const TCHAR** path /* Pointer to pointer to the path name */ +) +{ + const TCHAR *tp, *tt; + UINT i; + int vol = -1; +#if _STR_VOLUME_ID /* Find string drive id */ + static const char* const volid[] = {_VOLUME_STRS}; + const char *sp; + char c; + TCHAR tc; +#endif + + + if (*path) { /* If the pointer is not a null */ + for (tt = *path; (UINT)*tt >= (_USE_LFN ? ' ' : '!') && *tt != ':'; tt++) ; /* Find ':' in the path */ + if (*tt == ':') { /* If a ':' is exist in the path name */ + tp = *path; + i = *tp++ - '0'; + if (i < 10 && tp == tt) { /* Is there a numeric drive id? */ + if (i < _VOLUMES) { /* If a drive id is found, get the value and strip it */ + vol = (int)i; + *path = ++tt; + } + } +#if _STR_VOLUME_ID + else { /* No numeric drive number, find string drive id */ + i = 0; tt++; + do { + sp = volid[i]; tp = *path; + do { /* Compare a string drive id with path name */ + c = *sp++; tc = *tp++; + if (IsLower(tc)) tc -= 0x20; + } while (c && (TCHAR)c == tc); + } while ((c || tp != tt) && ++i < _VOLUMES); /* Repeat for each id until pattern match */ + if (i < _VOLUMES) { /* If a drive id is found, get the value and strip it */ + vol = (int)i; + *path = tt; + } + } +#endif + return vol; + } +#if _FS_RPATH != 0 && _VOLUMES >= 2 + vol = CurrVol; /* Current drive */ +#else + vol = 0; /* Drive 0 */ +#endif + } + return vol; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Load a sector and check if it is an FAT boot sector */ +/*-----------------------------------------------------------------------*/ + +static +BYTE check_fs ( /* 0:FAT, 1:exFAT, 2:Valid BS but not FAT, 3:Not a BS, 4:Disk error */ + FATFS* fs, /* File system object */ + DWORD sect /* Sector# (lba) to load and check if it is an FAT-VBR or not */ +) +{ + fs->wflag = 0; fs->winsect = 0xFFFFFFFF; /* Invaidate window */ + if (move_window(fs, sect) != FR_OK) return 4; /* Load boot record */ + + if (ld_word(fs->win + BS_55AA) != 0xAA55) return 3; /* Check boot record signature (always placed here even if the sector size is >512) */ + + if (fs->win[BS_JmpBoot] == 0xE9 || (fs->win[BS_JmpBoot] == 0xEB && fs->win[BS_JmpBoot + 2] == 0x90)) { + if ((ld_dword(fs->win + BS_FilSysType) & 0xFFFFFF) == 0x544146) return 0; /* Check "FAT" string */ + if (ld_dword(fs->win + BS_FilSysType32) == 0x33544146) return 0; /* Check "FAT3" string */ + } +#if _FS_EXFAT + if (!mem_cmp(fs->win + BS_JmpBoot, "\xEB\x76\x90" "EXFAT ", 11)) return 1; +#endif + return 2; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Find logical drive and check if the volume is mounted */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT find_volume ( /* FR_OK(0): successful, !=0: any error occurred */ + const TCHAR** path, /* Pointer to pointer to the path name (drive number) */ + FATFS** rfs, /* Pointer to pointer to the found file system object */ + BYTE mode /* !=0: Check write protection for write access */ +) +{ + BYTE fmt, *pt; + int vol; + DSTATUS stat; + DWORD bsect, fasize, tsect, sysect, nclst, szbfat, br[4]; + WORD nrsv; + FATFS *fs; + UINT i; + + + /* Get logical drive number */ + *rfs = 0; + vol = get_ldnumber(path); + if (vol < 0) return FR_INVALID_DRIVE; + + /* Check if the file system object is valid or not */ + fs = FatFs[vol]; /* Get pointer to the file system object */ + if (!fs) return FR_NOT_ENABLED; /* Is the file system object available? */ + + ENTER_FF(fs); /* Lock the volume */ + *rfs = fs; /* Return pointer to the file system object */ + + mode &= (BYTE)~FA_READ; /* Desired access mode, write access or not */ + if (fs->fs_type) { /* If the volume has been mounted */ + stat = disk_status(fs->drv); + if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized */ + if (!_FS_READONLY && mode && (stat & STA_PROTECT)) { /* Check write protection if needed */ + return FR_WRITE_PROTECTED; + } + return FR_OK; /* The file system object is valid */ + } + } + + /* The file system object is not valid. */ + /* Following code attempts to mount the volume. (analyze BPB and initialize the fs object) */ + + fs->fs_type = 0; /* Clear the file system object */ + fs->drv = LD2PD(vol); /* Bind the logical drive and a physical drive */ + stat = disk_initialize(fs->drv); /* Initialize the physical drive */ + if (stat & STA_NOINIT) { /* Check if the initialization succeeded */ + return FR_NOT_READY; /* Failed to initialize due to no medium or hard error */ + } + if (!_FS_READONLY && mode && (stat & STA_PROTECT)) { /* Check disk write protection if needed */ + return FR_WRITE_PROTECTED; + } +#if _MAX_SS != _MIN_SS /* Get sector size (multiple sector size cfg only) */ + if (disk_ioctl(fs->drv, GET_SECTOR_SIZE, &SS(fs)) != RES_OK) return FR_DISK_ERR; + if (SS(fs) > _MAX_SS || SS(fs) < _MIN_SS || (SS(fs) & (SS(fs) - 1))) return FR_DISK_ERR; +#endif + + /* Find an FAT partition on the drive. Supports only generic partitioning rules, FDISK and SFD. */ + bsect = 0; + fmt = check_fs(fs, bsect); /* Load sector 0 and check if it is an FAT-VBR as SFD */ + if (fmt == 2 || (fmt < 2 && LD2PT(vol) != 0)) { /* Not an FAT-VBR or forced partition number */ + for (i = 0; i < 4; i++) { /* Get partition offset */ + pt = fs->win + (MBR_Table + i * SZ_PTE); + br[i] = pt[PTE_System] ? ld_dword(pt + PTE_StLba) : 0; + } + i = LD2PT(vol); /* Partition number: 0:auto, 1-4:forced */ + if (i) i--; + do { /* Find an FAT volume */ + bsect = br[i]; + fmt = bsect ? check_fs(fs, bsect) : 3; /* Check the partition */ + } while (LD2PT(vol) == 0 && fmt >= 2 && ++i < 4); + } + if (fmt == 4) return FR_DISK_ERR; /* An error occured in the disk I/O layer */ + if (fmt >= 2) return FR_NO_FILESYSTEM; /* No FAT volume is found */ + + /* An FAT volume is found (bsect). Following code initializes the file system object */ + +#if _FS_EXFAT + if (fmt == 1) { + QWORD maxlba; + + for (i = BPB_ZeroedEx; i < BPB_ZeroedEx + 53 && fs->win[i] == 0; i++) ; /* Check zero filler */ + if (i < BPB_ZeroedEx + 53) return FR_NO_FILESYSTEM; + + if (ld_word(fs->win + BPB_FSVerEx) != 0x100) return FR_NO_FILESYSTEM; /* Check exFAT revision (Must be 1.0) */ + + if (1 << fs->win[BPB_BytsPerSecEx] != SS(fs)) { /* (BPB_BytsPerSecEx must be equal to the physical sector size) */ + return FR_NO_FILESYSTEM; + } + + maxlba = ld_qword(fs->win + BPB_TotSecEx) + bsect; /* Last LBA + 1 of the volume */ + if (maxlba >= 0x100000000) return FR_NO_FILESYSTEM; /* (It cannot be handled in 32-bit LBA) */ + + fs->fsize = ld_dword(fs->win + BPB_FatSzEx); /* Number of sectors per FAT */ + + fs->n_fats = fs->win[BPB_NumFATsEx]; /* Number of FATs */ + if (fs->n_fats != 1) return FR_NO_FILESYSTEM; /* (Supports only 1 FAT) */ + + fs->csize = 1 << fs->win[BPB_SecPerClusEx]; /* Cluster size */ + if (fs->csize == 0) return FR_NO_FILESYSTEM; /* (Must be 1..32768) */ + + nclst = ld_dword(fs->win + BPB_NumClusEx); /* Number of clusters */ + if (nclst > MAX_EXFAT) return FR_NO_FILESYSTEM; /* (Too many clusters) */ + fs->n_fatent = nclst + 2; + + /* Boundaries and Limits */ + fs->volbase = bsect; + fs->database = bsect + ld_dword(fs->win + BPB_DataOfsEx); + fs->fatbase = bsect + ld_dword(fs->win + BPB_FatOfsEx); + if (maxlba < (QWORD)fs->database + nclst * fs->csize) return FR_NO_FILESYSTEM; /* (Volume size must not be smaller than the size requiered) */ + fs->dirbase = ld_dword(fs->win + BPB_RootClusEx); + + /* Check if bitmap location is in assumption (at the first cluster) */ + if (move_window(fs, clust2sect(fs, fs->dirbase)) != FR_OK) return FR_DISK_ERR; + for (i = 0; i < SS(fs); i += SZDIRE) { + if (fs->win[i] == 0x81 && ld_dword(fs->win + i + 20) == 2) break; /* 81 entry with cluster #2? */ + } + if (i == SS(fs)) return FR_NO_FILESYSTEM; +#if !_FS_READONLY + fs->last_clst = fs->free_clst = 0xFFFFFFFF; /* Initialize cluster allocation information */ +#endif + fmt = FS_EXFAT; /* FAT sub-type */ + } else +#endif /* _FS_EXFAT */ + { + if (ld_word(fs->win + BPB_BytsPerSec) != SS(fs)) return FR_NO_FILESYSTEM; /* (BPB_BytsPerSec must be equal to the physical sector size) */ + + fasize = ld_word(fs->win + BPB_FATSz16); /* Number of sectors per FAT */ + if (fasize == 0) fasize = ld_dword(fs->win + BPB_FATSz32); + fs->fsize = fasize; + + fs->n_fats = fs->win[BPB_NumFATs]; /* Number of FATs */ + if (fs->n_fats != 1 && fs->n_fats != 2) return FR_NO_FILESYSTEM; /* (Must be 1 or 2) */ + fasize *= fs->n_fats; /* Number of sectors for FAT area */ + + fs->csize = fs->win[BPB_SecPerClus]; /* Cluster size */ + if (fs->csize == 0 || (fs->csize & (fs->csize - 1))) return FR_NO_FILESYSTEM; /* (Must be power of 2) */ + + fs->n_rootdir = ld_word(fs->win + BPB_RootEntCnt); /* Number of root directory entries */ + if (fs->n_rootdir % (SS(fs) / SZDIRE)) return FR_NO_FILESYSTEM; /* (Must be sector aligned) */ + + tsect = ld_word(fs->win + BPB_TotSec16); /* Number of sectors on the volume */ + if (tsect == 0) tsect = ld_dword(fs->win + BPB_TotSec32); + + nrsv = ld_word(fs->win + BPB_RsvdSecCnt); /* Number of reserved sectors */ + if (nrsv == 0) return FR_NO_FILESYSTEM; /* (Must not be 0) */ + + /* Determine the FAT sub type */ + sysect = nrsv + fasize + fs->n_rootdir / (SS(fs) / SZDIRE); /* RSV + FAT + DIR */ + if (tsect < sysect) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + nclst = (tsect - sysect) / fs->csize; /* Number of clusters */ + if (nclst == 0) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + fmt = FS_FAT32; + if (nclst <= MAX_FAT16) fmt = FS_FAT16; + if (nclst <= MAX_FAT12) fmt = FS_FAT12; + + /* Boundaries and Limits */ + fs->n_fatent = nclst + 2; /* Number of FAT entries */ + fs->volbase = bsect; /* Volume start sector */ + fs->fatbase = bsect + nrsv; /* FAT start sector */ + fs->database = bsect + sysect; /* Data start sector */ + if (fmt == FS_FAT32) { + if (ld_word(fs->win + BPB_FSVer32) != 0) return FR_NO_FILESYSTEM; /* (Must be FAT32 revision 0.0) */ + if (fs->n_rootdir) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */ + fs->dirbase = ld_dword(fs->win + BPB_RootClus32); /* Root directory start cluster */ + szbfat = fs->n_fatent * 4; /* (Needed FAT size) */ + } else { + if (fs->n_rootdir == 0) return FR_NO_FILESYSTEM;/* (BPB_RootEntCnt must not be 0) */ + fs->dirbase = fs->fatbase + fasize; /* Root directory start sector */ + szbfat = (fmt == FS_FAT16) ? /* (Needed FAT size) */ + fs->n_fatent * 2 : fs->n_fatent * 3 / 2 + (fs->n_fatent & 1); + } + if (fs->fsize < (szbfat + (SS(fs) - 1)) / SS(fs)) return FR_NO_FILESYSTEM; /* (BPB_FATSz must not be less than the size needed) */ + +#if !_FS_READONLY + /* Get FSINFO if available */ + fs->last_clst = fs->free_clst = 0xFFFFFFFF; /* Initialize cluster allocation information */ + fs->fsi_flag = 0x80; +#if (_FS_NOFSINFO & 3) != 3 + if (fmt == FS_FAT32 /* Enable FSINFO only if FAT32 and BPB_FSInfo32 == 1 */ + && ld_word(fs->win + BPB_FSInfo32) == 1 + && move_window(fs, bsect + 1) == FR_OK) + { + fs->fsi_flag = 0; + if (ld_word(fs->win + BS_55AA) == 0xAA55 /* Load FSINFO data if available */ + && ld_dword(fs->win + FSI_LeadSig) == 0x41615252 + && ld_dword(fs->win + FSI_StrucSig) == 0x61417272) + { +#if (_FS_NOFSINFO & 1) == 0 + fs->free_clst = ld_dword(fs->win + FSI_Free_Count); +#endif +#if (_FS_NOFSINFO & 2) == 0 + fs->last_clst = ld_dword(fs->win + FSI_Nxt_Free); +#endif + } + } +#endif /* (_FS_NOFSINFO & 3) != 3 */ +#endif /* !_FS_READONLY */ + } + + fs->fs_type = fmt; /* FAT sub-type */ + fs->id = ++Fsid; /* File system mount ID */ +#if _USE_LFN == 1 + fs->lfnbuf = LfnBuf; /* Static LFN working buffer */ +#if _FS_EXFAT + fs->dirbuf = DirBuf; /* Static directory block scratchpad buuffer */ +#endif +#endif +#if _FS_RPATH != 0 + fs->cdir = 0; /* Initialize current directory */ +#endif +#if _FS_LOCK != 0 /* Clear file lock semaphores */ + clear_lock(fs); +#endif + return FR_OK; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Check if the file/directory object is valid or not */ +/*-----------------------------------------------------------------------*/ + +static +FRESULT validate ( /* Returns FR_OK or FR_INVALID_OBJECT */ + _FDID* obj, /* Pointer to the _OBJ, the 1st member in the FIL/DIR object, to check validity */ + FATFS** fs /* Pointer to pointer to the owner file system object to return */ +) +{ + FRESULT res = FR_INVALID_OBJECT; + + + if (obj && obj->fs && obj->fs->fs_type && obj->id == obj->fs->id) { /* Test if the object is valid */ +#if _FS_REENTRANT + if (lock_fs(obj->fs)) { /* Obtain the filesystem object */ + if (!(disk_status(obj->fs->drv) & STA_NOINIT)) { /* Test if the phsical drive is kept initialized */ + res = FR_OK; + } else { + unlock_fs(obj->fs, FR_OK); + } + } else { + res = FR_TIMEOUT; + } +#else + if (!(disk_status(obj->fs->drv) & STA_NOINIT)) { /* Test if the phsical drive is kept initialized */ + res = FR_OK; + } +#endif + } + *fs = (res == FR_OK) ? obj->fs : 0; /* Corresponding filesystem object */ + return res; +} + + + + +/*--------------------------------------------------------------------------- + + Public Functions (FatFs API) + +----------------------------------------------------------------------------*/ + + + +/*-----------------------------------------------------------------------*/ +/* Mount/Unmount a Logical Drive */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_mount ( + FATFS* fs, /* Pointer to the file system object (NULL:unmount)*/ + const TCHAR* path, /* Logical drive number to be mounted/unmounted */ + BYTE opt /* Mode option 0:Do not mount (delayed mount), 1:Mount immediately */ +) +{ + FATFS *cfs; + int vol; + FRESULT res; + const TCHAR *rp = path; + + + /* Get logical drive number */ + vol = get_ldnumber(&rp); + if (vol < 0) return FR_INVALID_DRIVE; + cfs = FatFs[vol]; /* Pointer to fs object */ + + if (cfs) { +#if _FS_LOCK != 0 + clear_lock(cfs); +#endif +#if _FS_REENTRANT /* Discard sync object of the current volume */ + if (!ff_del_syncobj(cfs->sobj)) return FR_INT_ERR; +#endif + cfs->fs_type = 0; /* Clear old fs object */ + } + + if (fs) { + fs->fs_type = 0; /* Clear new fs object */ +#if _FS_REENTRANT /* Create sync object for the new volume */ + if (!ff_cre_syncobj((BYTE)vol, &fs->sobj)) return FR_INT_ERR; +#endif + } + FatFs[vol] = fs; /* Register new fs object */ + + if (!fs || opt != 1) return FR_OK; /* Do not mount now, it will be mounted later */ + + res = find_volume(&path, &fs, 0); /* Force mounted the volume */ + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Open or Create a File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_open ( + FIL* fp, /* Pointer to the blank file object */ + const TCHAR* path, /* Pointer to the file name */ + BYTE mode /* Access mode and file open mode flags */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; +#if !_FS_READONLY + DWORD dw, cl, bcs, clst, sc; + FSIZE_t ofs; +#endif + DEF_NAMBUF + + + if (!fp) return FR_INVALID_OBJECT; + + /* Get logical drive */ + mode &= _FS_READONLY ? FA_READ : FA_READ | FA_WRITE | FA_CREATE_ALWAYS | FA_CREATE_NEW | FA_OPEN_ALWAYS | FA_OPEN_APPEND | FA_SEEKEND; + res = find_volume(&path, &fs, mode); + if (res == FR_OK) { + dj.obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the file path */ +#if !_FS_READONLY /* R/W configuration */ + if (res == FR_OK) { + if (dj.fn[NSFLAG] & NS_NONAME) { /* Origin directory itself? */ + res = FR_INVALID_NAME; + } +#if _FS_LOCK != 0 + else { + res = chk_lock(&dj, (mode & ~FA_READ) ? 1 : 0); + } +#endif + } + /* Create or Open a file */ + if (mode & (FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW)) { + if (res != FR_OK) { /* No file, create new */ + if (res == FR_NO_FILE) { /* There is no file to open, create a new entry */ +#if _FS_LOCK != 0 + res = enq_lock() ? dir_register(&dj) : FR_TOO_MANY_OPEN_FILES; +#else + res = dir_register(&dj); +#endif + } + mode |= FA_CREATE_ALWAYS; /* File is created */ + } + else { /* Any object is already existing */ + if (dj.obj.attr & (AM_RDO | AM_DIR)) { /* Cannot overwrite it (R/O or DIR) */ + res = FR_DENIED; + } else { + if (mode & FA_CREATE_NEW) res = FR_EXIST; /* Cannot create as new file */ + } + } + if (res == FR_OK && (mode & FA_CREATE_ALWAYS)) { /* Truncate it if overwrite mode */ + dw = GET_FATTIME(); +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + /* Get current allocation info */ + fp->obj.fs = fs; + fp->obj.sclust = ld_dword(fs->dirbuf + XDIR_FstClus); + fp->obj.objsize = ld_qword(fs->dirbuf + XDIR_FileSize); + fp->obj.stat = fs->dirbuf[XDIR_GenFlags] & 2; + fp->obj.n_frag = 0; + /* Initialize directory entry block */ + st_dword(fs->dirbuf + XDIR_CrtTime, dw); /* Set created time */ + fs->dirbuf[XDIR_CrtTime10] = 0; + st_dword(fs->dirbuf + XDIR_ModTime, dw); /* Set modified time */ + fs->dirbuf[XDIR_ModTime10] = 0; + fs->dirbuf[XDIR_Attr] = AM_ARC; /* Reset attribute */ + st_dword(fs->dirbuf + XDIR_FstClus, 0); /* Reset file allocation info */ + st_qword(fs->dirbuf + XDIR_FileSize, 0); + st_qword(fs->dirbuf + XDIR_ValidFileSize, 0); + fs->dirbuf[XDIR_GenFlags] = 1; + res = store_xdir(&dj); + if (res == FR_OK && fp->obj.sclust) { /* Remove the cluster chain if exist */ + res = remove_chain(&fp->obj, fp->obj.sclust, 0); + fs->last_clst = fp->obj.sclust - 1; /* Reuse the cluster hole */ + } + } else +#endif + { + /* Clean directory info */ + st_dword(dj.dir + DIR_CrtTime, dw); /* Set created time */ + st_dword(dj.dir + DIR_ModTime, dw); /* Set modified time */ + dj.dir[DIR_Attr] = AM_ARC; /* Reset attribute */ + cl = ld_clust(fs, dj.dir); /* Get cluster chain */ + st_clust(fs, dj.dir, 0); /* Reset file allocation info */ + st_dword(dj.dir + DIR_FileSize, 0); + fs->wflag = 1; + + if (cl) { /* Remove the cluster chain if exist */ + dw = fs->winsect; + res = remove_chain(&dj.obj, cl, 0); + if (res == FR_OK) { + res = move_window(fs, dw); + fs->last_clst = cl - 1; /* Reuse the cluster hole */ + } + } + } + } + } + else { /* Open an existing file */ + if (res == FR_OK) { /* Following succeeded */ + if (dj.obj.attr & AM_DIR) { /* It is a directory */ + res = FR_NO_FILE; + } else { + if ((mode & FA_WRITE) && (dj.obj.attr & AM_RDO)) { /* R/O violation */ + res = FR_DENIED; + } + } + } + } + if (res == FR_OK) { + if (mode & FA_CREATE_ALWAYS) /* Set file change flag if created or overwritten */ + mode |= FA_MODIFIED; + fp->dir_sect = fs->winsect; /* Pointer to the directory entry */ + fp->dir_ptr = dj.dir; +#if _FS_LOCK != 0 + fp->obj.lockid = inc_lock(&dj, (mode & ~FA_READ) ? 1 : 0); + if (!fp->obj.lockid) res = FR_INT_ERR; +#endif + } +#else /* R/O configuration */ + if (res == FR_OK) { + if (dj.fn[NSFLAG] & NS_NONAME) { /* Origin directory itself? */ + res = FR_INVALID_NAME; + } else { + if (dj.obj.attr & AM_DIR) { /* It is a directory */ + res = FR_NO_FILE; + } + } + } +#endif + + if (res == FR_OK) { +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + fp->obj.c_scl = dj.obj.sclust; /* Get containing directory info */ + fp->obj.c_size = ((DWORD)dj.obj.objsize & 0xFFFFFF00) | dj.obj.stat; + fp->obj.c_ofs = dj.blk_ofs; + fp->obj.sclust = ld_dword(fs->dirbuf + XDIR_FstClus); /* Get object allocation info */ + fp->obj.objsize = ld_qword(fs->dirbuf + XDIR_FileSize); + fp->obj.stat = fs->dirbuf[XDIR_GenFlags] & 2; + } else +#endif + { + fp->obj.sclust = ld_clust(fs, dj.dir); /* Get object allocation info */ + fp->obj.objsize = ld_dword(dj.dir + DIR_FileSize); + } +#if _USE_FASTSEEK + fp->cltbl = 0; /* Disable fast seek mode */ +#endif + fp->obj.fs = fs; /* Validate the file object */ + fp->obj.id = fs->id; + fp->flag = mode; /* Set file access mode */ + fp->err = 0; /* Clear error flag */ + fp->sect = 0; /* Invalidate current data sector */ + fp->fptr = 0; /* Set file pointer top of the file */ +#if !_FS_READONLY +#if !_FS_TINY + mem_set(fp->buf, 0, _MAX_SS); /* Clear sector buffer */ +#endif + if ((mode & FA_SEEKEND) && fp->obj.objsize > 0) { /* Seek to end of file if FA_OPEN_APPEND is specified */ + fp->fptr = fp->obj.objsize; /* Offset to seek */ + bcs = (DWORD)fs->csize * SS(fs); /* Cluster size in byte */ + clst = fp->obj.sclust; /* Follow the cluster chain */ + for (ofs = fp->obj.objsize; res == FR_OK && ofs > bcs; ofs -= bcs) { + clst = get_fat(&fp->obj, clst); + if (clst <= 1) res = FR_INT_ERR; + if (clst == 0xFFFFFFFF) res = FR_DISK_ERR; + } + fp->clust = clst; + if (res == FR_OK && ofs % SS(fs)) { /* Fill sector buffer if not on the sector boundary */ + if ((sc = clust2sect(fs, clst)) == 0) { + res = FR_INT_ERR; + } else { + fp->sect = sc + (DWORD)(ofs / SS(fs)); +#if !_FS_TINY + if (disk_read(fs->drv, fp->buf, fp->sect, 1) != RES_OK) res = FR_DISK_ERR; +#endif + } + } + } +#endif + } + + FREE_NAMBUF(); + } + + if (res != FR_OK) fp->obj.fs = 0; /* Invalidate file object on error */ + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Read File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_read ( + FIL* fp, /* Pointer to the file object */ + void* buff, /* Pointer to data buffer */ + UINT btr, /* Number of bytes to read */ + UINT* br /* Pointer to number of bytes read */ +) +{ + FRESULT res; + FATFS *fs; + DWORD clst, sect; + FSIZE_t remain; + UINT rcnt, cc, csect; + BYTE *rbuff = (BYTE*)buff; + + + *br = 0; /* Clear read byte counter */ + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + remain = fp->obj.objsize - fp->fptr; + if (btr > remain) btr = (UINT)remain; /* Truncate btr by remaining bytes */ + + for ( ; btr; /* Repeat until all data read */ + rbuff += rcnt, fp->fptr += rcnt, *br += rcnt, btr -= rcnt) { + if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ + if (csect == 0) { /* On the cluster boundary? */ + if (fp->fptr == 0) { /* On the top of the file? */ + clst = fp->obj.sclust; /* Follow cluster chain from the origin */ + } else { /* Middle or end of the file */ +#if _USE_FASTSEEK + if (fp->cltbl) { + clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ + } else +#endif + { + clst = get_fat(&fp->obj, fp->clust); /* Follow cluster chain on the FAT */ + } + } + if (clst < 2) ABORT(fs, FR_INT_ERR); + if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + fp->clust = clst; /* Update current cluster */ + } + sect = clust2sect(fs, fp->clust); /* Get current sector */ + if (!sect) ABORT(fs, FR_INT_ERR); + sect += csect; + cc = btr / SS(fs); /* When remaining bytes >= sector size, */ + if (cc) { /* Read maximum contiguous sectors directly */ + if (csect + cc > fs->csize) { /* Clip at cluster boundary */ + cc = fs->csize - csect; + } + if (disk_read(fs->drv, rbuff, sect, cc) != RES_OK) ABORT(fs, FR_DISK_ERR); +#if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it contains a dirty sector */ +#if _FS_TINY + if (fs->wflag && fs->winsect - sect < cc) { + mem_cpy(rbuff + ((fs->winsect - sect) * SS(fs)), fs->win, SS(fs)); + } +#else + if ((fp->flag & FA_DIRTY) && fp->sect - sect < cc) { + mem_cpy(rbuff + ((fp->sect - sect) * SS(fs)), fp->buf, SS(fs)); + } +#endif +#endif + rcnt = SS(fs) * cc; /* Number of bytes transferred */ + continue; + } +#if !_FS_TINY + if (fp->sect != sect) { /* Load data sector if not in cache */ +#if !_FS_READONLY + if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ + if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + if (disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Fill sector cache */ + } +#endif + fp->sect = sect; + } + rcnt = SS(fs) - (UINT)fp->fptr % SS(fs); /* Number of bytes left in the sector */ + if (rcnt > btr) rcnt = btr; /* Clip it by btr if needed */ +#if _FS_TINY + if (move_window(fs, fp->sect) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Move sector window */ + mem_cpy(rbuff, fs->win + fp->fptr % SS(fs), rcnt); /* Extract partial sector */ +#else + mem_cpy(rbuff, fp->buf + fp->fptr % SS(fs), rcnt); /* Extract partial sector */ +#endif + } + + LEAVE_FF(fs, FR_OK); +} + + + + +#if !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Write File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_write ( + FIL* fp, /* Pointer to the file object */ + const void* buff, /* Pointer to the data to be written */ + UINT btw, /* Number of bytes to write */ + UINT* bw /* Pointer to number of bytes written */ +) +{ + FRESULT res; + FATFS *fs; + DWORD clst, sect; + UINT wcnt, cc, csect; + const BYTE *wbuff = (const BYTE*)buff; + + + *bw = 0; /* Clear write byte counter */ + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + + /* Check fptr wrap-around (file size cannot reach 4GiB on FATxx) */ + if ((!_FS_EXFAT || fs->fs_type != FS_EXFAT) && (DWORD)(fp->fptr + btw) < (DWORD)fp->fptr) { + btw = (UINT)(0xFFFFFFFF - (DWORD)fp->fptr); + } + + for ( ; btw; /* Repeat until all data written */ + wbuff += wcnt, fp->fptr += wcnt, fp->obj.objsize = (fp->fptr > fp->obj.objsize) ? fp->fptr : fp->obj.objsize, *bw += wcnt, btw -= wcnt) { + if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + csect = (UINT)(fp->fptr / SS(fs)) & (fs->csize - 1); /* Sector offset in the cluster */ + if (csect == 0) { /* On the cluster boundary? */ + if (fp->fptr == 0) { /* On the top of the file? */ + clst = fp->obj.sclust; /* Follow from the origin */ + if (clst == 0) { /* If no cluster is allocated, */ + clst = create_chain(&fp->obj, 0); /* create a new cluster chain */ + } + } else { /* On the middle or end of the file */ +#if _USE_FASTSEEK + if (fp->cltbl) { + clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ + } else +#endif + { + clst = create_chain(&fp->obj, fp->clust); /* Follow or stretch cluster chain on the FAT */ + } + } + if (clst == 0) break; /* Could not allocate a new cluster (disk full) */ + if (clst == 1) ABORT(fs, FR_INT_ERR); + if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + fp->clust = clst; /* Update current cluster */ + if (fp->obj.sclust == 0) fp->obj.sclust = clst; /* Set start cluster if the first write */ + } +#if _FS_TINY + if (fs->winsect == fp->sect && sync_window(fs) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Write-back sector cache */ +#else + if (fp->flag & FA_DIRTY) { /* Write-back sector cache */ + if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + sect = clust2sect(fs, fp->clust); /* Get current sector */ + if (!sect) ABORT(fs, FR_INT_ERR); + sect += csect; + cc = btw / SS(fs); /* When remaining bytes >= sector size, */ + if (cc) { /* Write maximum contiguous sectors directly */ + if (csect + cc > fs->csize) { /* Clip at cluster boundary */ + cc = fs->csize - csect; + } + if (disk_write(fs->drv, wbuff, sect, cc) != RES_OK) ABORT(fs, FR_DISK_ERR); +#if _FS_MINIMIZE <= 2 +#if _FS_TINY + if (fs->winsect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct write */ + mem_cpy(fs->win, wbuff + ((fs->winsect - sect) * SS(fs)), SS(fs)); + fs->wflag = 0; + } +#else + if (fp->sect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct write */ + mem_cpy(fp->buf, wbuff + ((fp->sect - sect) * SS(fs)), SS(fs)); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif +#endif + wcnt = SS(fs) * cc; /* Number of bytes transferred */ + continue; + } +#if _FS_TINY + if (fp->fptr >= fp->obj.objsize) { /* Avoid silly cache filling on the growing edge */ + if (sync_window(fs) != FR_OK) ABORT(fs, FR_DISK_ERR); + fs->winsect = sect; + } +#else + if (fp->sect != sect && /* Fill sector cache with file data */ + fp->fptr < fp->obj.objsize && + disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) { + ABORT(fs, FR_DISK_ERR); + } +#endif + fp->sect = sect; + } + wcnt = SS(fs) - (UINT)fp->fptr % SS(fs); /* Number of bytes left in the sector */ + if (wcnt > btw) wcnt = btw; /* Clip it by btw if needed */ +#if _FS_TINY + if (move_window(fs, fp->sect) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Move sector window */ + mem_cpy(fs->win + fp->fptr % SS(fs), wbuff, wcnt); /* Fit data to the sector */ + fs->wflag = 1; +#else + mem_cpy(fp->buf + fp->fptr % SS(fs), wbuff, wcnt); /* Fit data to the sector */ + fp->flag |= FA_DIRTY; +#endif + } + + fp->flag |= FA_MODIFIED; /* Set file change flag */ + + LEAVE_FF(fs, FR_OK); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Synchronize the File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_sync ( + FIL* fp /* Pointer to the file object */ +) +{ + FRESULT res; + FATFS *fs; + DWORD tm; + BYTE *dir; +#if _FS_EXFAT + DIR dj; + DEF_NAMBUF +#endif + + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res == FR_OK) { + if (fp->flag & FA_MODIFIED) { /* Is there any change to the file? */ +#if !_FS_TINY + if (fp->flag & FA_DIRTY) { /* Write-back cached data if needed */ + if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) LEAVE_FF(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + /* Update the directory entry */ + tm = GET_FATTIME(); /* Modified time */ +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + res = fill_first_frag(&fp->obj); /* Fill first fragment on the FAT if needed */ + if (res == FR_OK) { + res = fill_last_frag(&fp->obj, fp->clust, 0xFFFFFFFF); /* Fill last fragment on the FAT if needed */ + } + if (res == FR_OK) { + INIT_NAMBUF(fs); + res = load_obj_dir(&dj, &fp->obj); /* Load directory entry block */ + if (res == FR_OK) { + fs->dirbuf[XDIR_Attr] |= AM_ARC; /* Set archive bit */ + fs->dirbuf[XDIR_GenFlags] = fp->obj.stat | 1; /* Update file allocation info */ + st_dword(fs->dirbuf + XDIR_FstClus, fp->obj.sclust); + st_qword(fs->dirbuf + XDIR_FileSize, fp->obj.objsize); + st_qword(fs->dirbuf + XDIR_ValidFileSize, fp->obj.objsize); + st_dword(fs->dirbuf + XDIR_ModTime, tm); /* Update modified time */ + fs->dirbuf[XDIR_ModTime10] = 0; + st_dword(fs->dirbuf + XDIR_AccTime, 0); + res = store_xdir(&dj); /* Restore it to the directory */ + if (res == FR_OK) { + res = sync_fs(fs); + fp->flag &= (BYTE)~FA_MODIFIED; + } + } + FREE_NAMBUF(); + } + } else +#endif + { + res = move_window(fs, fp->dir_sect); + if (res == FR_OK) { + dir = fp->dir_ptr; + dir[DIR_Attr] |= AM_ARC; /* Set archive bit */ + st_clust(fp->obj.fs, dir, fp->obj.sclust); /* Update file allocation info */ + st_dword(dir + DIR_FileSize, (DWORD)fp->obj.objsize); /* Update file size */ + st_dword(dir + DIR_ModTime, tm); /* Update modified time */ + st_word(dir + DIR_LstAccDate, 0); + fs->wflag = 1; + res = sync_fs(fs); /* Restore it to the directory */ + fp->flag &= (BYTE)~FA_MODIFIED; + } + } + } + } + + LEAVE_FF(fs, res); +} + +#endif /* !_FS_READONLY */ + + + + +/*-----------------------------------------------------------------------*/ +/* Close File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_close ( + FIL* fp /* Pointer to the file object to be closed */ +) +{ + FRESULT res; + FATFS *fs; + +#if !_FS_READONLY + res = f_sync(fp); /* Flush cached data */ + if (res == FR_OK) +#endif + { + res = validate(&fp->obj, &fs); /* Lock volume */ + if (res == FR_OK) { +#if _FS_LOCK != 0 + res = dec_lock(fp->obj.lockid); /* Decrement file open counter */ + if (res == FR_OK) +#endif + { + fp->obj.fs = 0; /* Invalidate file object */ + } +#if _FS_REENTRANT + unlock_fs(fs, FR_OK); /* Unlock volume */ +#endif + } + } + return res; +} + + + + +#if _FS_RPATH >= 1 +/*-----------------------------------------------------------------------*/ +/* Change Current Directory or Current Drive, Get Current Directory */ +/*-----------------------------------------------------------------------*/ + +#if _VOLUMES >= 2 +FRESULT f_chdrive ( + const TCHAR* path /* Drive number */ +) +{ + int vol; + + + /* Get logical drive number */ + vol = get_ldnumber(&path); + if (vol < 0) return FR_INVALID_DRIVE; + + CurrVol = (BYTE)vol; /* Set it as current volume */ + + return FR_OK; +} +#endif + + +FRESULT f_chdir ( + const TCHAR* path /* Pointer to the directory path */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + DEF_NAMBUF + + /* Get logical drive */ + res = find_volume(&path, &fs, 0); + if (res == FR_OK) { + dj.obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the path */ + if (res == FR_OK) { /* Follow completed */ + if (dj.fn[NSFLAG] & NS_NONAME) { + fs->cdir = dj.obj.sclust; /* It is the start directory itself */ +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + fs->cdc_scl = dj.obj.c_scl; + fs->cdc_size = dj.obj.c_size; + fs->cdc_ofs = dj.obj.c_ofs; + } +#endif + } else { + if (dj.obj.attr & AM_DIR) { /* It is a sub-directory */ +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + fs->cdir = ld_dword(fs->dirbuf + XDIR_FstClus); /* Sub-directory cluster */ + fs->cdc_scl = dj.obj.sclust; /* Save containing directory information */ + fs->cdc_size = ((DWORD)dj.obj.objsize & 0xFFFFFF00) | dj.obj.stat; + fs->cdc_ofs = dj.blk_ofs; + } else +#endif + { + fs->cdir = ld_clust(fs, dj.dir); /* Sub-directory cluster */ + } + } else { + res = FR_NO_PATH; /* Reached but a file */ + } + } + } + FREE_NAMBUF(); + if (res == FR_NO_FILE) res = FR_NO_PATH; + } + + LEAVE_FF(fs, res); +} + + +#if _FS_RPATH >= 2 +FRESULT f_getcwd ( + TCHAR* buff, /* Pointer to the directory path */ + UINT len /* Size of path */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + UINT i, n; + DWORD ccl; + TCHAR *tp; + FILINFO fno; + DEF_NAMBUF + + + *buff = 0; + /* Get logical drive */ + res = find_volume((const TCHAR**)&buff, &fs, 0); /* Get current volume */ + if (res == FR_OK) { + dj.obj.fs = fs; + INIT_NAMBUF(fs); + i = len; /* Bottom of buffer (directory stack base) */ + if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { /* (Cannot do getcwd on exFAT and returns root path) */ + dj.obj.sclust = fs->cdir; /* Start to follow upper directory from current directory */ + while ((ccl = dj.obj.sclust) != 0) { /* Repeat while current directory is a sub-directory */ + res = dir_sdi(&dj, 1 * SZDIRE); /* Get parent directory */ + if (res != FR_OK) break; + res = move_window(fs, dj.sect); + if (res != FR_OK) break; + dj.obj.sclust = ld_clust(fs, dj.dir); /* Goto parent directory */ + res = dir_sdi(&dj, 0); + if (res != FR_OK) break; + do { /* Find the entry links to the child directory */ + res = dir_read(&dj, 0); + if (res != FR_OK) break; + if (ccl == ld_clust(fs, dj.dir)) break; /* Found the entry */ + res = dir_next(&dj, 0); + } while (res == FR_OK); + if (res == FR_NO_FILE) res = FR_INT_ERR;/* It cannot be 'not found'. */ + if (res != FR_OK) break; + get_fileinfo(&dj, &fno); /* Get the directory name and push it to the buffer */ + for (n = 0; fno.fname[n]; n++) ; + if (i < n + 3) { + res = FR_NOT_ENOUGH_CORE; break; + } + while (n) buff[--i] = fno.fname[--n]; + buff[--i] = '/'; + } + } + tp = buff; + if (res == FR_OK) { +#if _VOLUMES >= 2 + *tp++ = '0' + CurrVol; /* Put drive number */ + *tp++ = ':'; +#endif + if (i == len) { /* Root-directory */ + *tp++ = '/'; + } else { /* Sub-directroy */ + do /* Add stacked path str */ + *tp++ = buff[i++]; + while (i < len); + } + } + *tp = 0; + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + +#endif /* _FS_RPATH >= 2 */ +#endif /* _FS_RPATH >= 1 */ + + + +#if _FS_MINIMIZE <= 2 +/*-----------------------------------------------------------------------*/ +/* Seek File R/W Pointer */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_lseek ( + FIL* fp, /* Pointer to the file object */ + FSIZE_t ofs /* File pointer from top of file */ +) +{ + FRESULT res; + FATFS *fs; + DWORD clst, bcs, nsect; + FSIZE_t ifptr; +#if _USE_FASTSEEK + DWORD cl, pcl, ncl, tcl, dsc, tlen, ulen, *tbl; +#endif + + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res == FR_OK) res = (FRESULT)fp->err; +#if _FS_EXFAT && !_FS_READONLY + if (res == FR_OK && fs->fs_type == FS_EXFAT) { + res = fill_last_frag(&fp->obj, fp->clust, 0xFFFFFFFF); /* Fill last fragment on the FAT if needed */ + } +#endif + if (res != FR_OK) LEAVE_FF(fs, res); + +#if _USE_FASTSEEK + if (fp->cltbl) { /* Fast seek */ + if (ofs == CREATE_LINKMAP) { /* Create CLMT */ + tbl = fp->cltbl; + tlen = *tbl++; ulen = 2; /* Given table size and required table size */ + cl = fp->obj.sclust; /* Origin of the chain */ + if (cl) { + do { + /* Get a fragment */ + tcl = cl; ncl = 0; ulen += 2; /* Top, length and used items */ + do { + pcl = cl; ncl++; + cl = get_fat(&fp->obj, cl); + if (cl <= 1) ABORT(fs, FR_INT_ERR); + if (cl == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + } while (cl == pcl + 1); + if (ulen <= tlen) { /* Store the length and top of the fragment */ + *tbl++ = ncl; *tbl++ = tcl; + } + } while (cl < fs->n_fatent); /* Repeat until end of chain */ + } + *fp->cltbl = ulen; /* Number of items used */ + if (ulen <= tlen) { + *tbl = 0; /* Terminate table */ + } else { + res = FR_NOT_ENOUGH_CORE; /* Given table size is smaller than required */ + } + } else { /* Fast seek */ + if (ofs > fp->obj.objsize) ofs = fp->obj.objsize; /* Clip offset at the file size */ + fp->fptr = ofs; /* Set file pointer */ + if (ofs) { + fp->clust = clmt_clust(fp, ofs - 1); + dsc = clust2sect(fs, fp->clust); + if (!dsc) ABORT(fs, FR_INT_ERR); + dsc += (DWORD)((ofs - 1) / SS(fs)) & (fs->csize - 1); + if (fp->fptr % SS(fs) && dsc != fp->sect) { /* Refill sector cache if needed */ +#if !_FS_TINY +#if !_FS_READONLY + if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ + if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + if (disk_read(fs->drv, fp->buf, dsc, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Load current sector */ +#endif + fp->sect = dsc; + } + } + } + } else +#endif + + /* Normal Seek */ + { +#if _FS_EXFAT + if (fs->fs_type != FS_EXFAT && ofs >= 0x100000000) ofs = 0xFFFFFFFF; /* Clip at 4GiB-1 if at FATxx */ +#endif + if (ofs > fp->obj.objsize && (_FS_READONLY || !(fp->flag & FA_WRITE))) { /* In read-only mode, clip offset with the file size */ + ofs = fp->obj.objsize; + } + ifptr = fp->fptr; + fp->fptr = nsect = 0; + if (ofs) { + bcs = (DWORD)fs->csize * SS(fs); /* Cluster size (byte) */ + if (ifptr > 0 && + (ofs - 1) / bcs >= (ifptr - 1) / bcs) { /* When seek to same or following cluster, */ + fp->fptr = (ifptr - 1) & ~(FSIZE_t)(bcs - 1); /* start from the current cluster */ + ofs -= fp->fptr; + clst = fp->clust; + } else { /* When seek to back cluster, */ + clst = fp->obj.sclust; /* start from the first cluster */ +#if !_FS_READONLY + if (clst == 0) { /* If no cluster chain, create a new chain */ + clst = create_chain(&fp->obj, 0); + if (clst == 1) ABORT(fs, FR_INT_ERR); + if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + fp->obj.sclust = clst; + } +#endif + fp->clust = clst; + } + if (clst != 0) { + while (ofs > bcs) { /* Cluster following loop */ + ofs -= bcs; fp->fptr += bcs; +#if !_FS_READONLY + if (fp->flag & FA_WRITE) { /* Check if in write mode or not */ + if (_FS_EXFAT && fp->fptr > fp->obj.objsize) { /* No FAT chain object needs correct objsize to generate FAT value */ + fp->obj.objsize = fp->fptr; + fp->flag |= FA_MODIFIED; + } + clst = create_chain(&fp->obj, clst); /* Follow chain with forceed stretch */ + if (clst == 0) { /* Clip file size in case of disk full */ + ofs = 0; break; + } + } else +#endif + { + clst = get_fat(&fp->obj, clst); /* Follow cluster chain if not in write mode */ + } + if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR); + fp->clust = clst; + } + fp->fptr += ofs; + if (ofs % SS(fs)) { + nsect = clust2sect(fs, clst); /* Current sector */ + if (!nsect) ABORT(fs, FR_INT_ERR); + nsect += (DWORD)(ofs / SS(fs)); + } + } + } + if (!_FS_READONLY && fp->fptr > fp->obj.objsize) { /* Set file change flag if the file size is extended */ + fp->obj.objsize = fp->fptr; + fp->flag |= FA_MODIFIED; + } + if (fp->fptr % SS(fs) && nsect != fp->sect) { /* Fill sector cache if needed */ +#if !_FS_TINY +#if !_FS_READONLY + if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ + if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + if (disk_read(fs->drv, fp->buf, nsect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Fill sector cache */ +#endif + fp->sect = nsect; + } + } + + LEAVE_FF(fs, res); +} + + + +#if _FS_MINIMIZE <= 1 +/*-----------------------------------------------------------------------*/ +/* Create a Directory Object */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_opendir ( + DIR* dp, /* Pointer to directory object to create */ + const TCHAR* path /* Pointer to the directory path */ +) +{ + FRESULT res; + FATFS *fs; + _FDID *obj; + DEF_NAMBUF + + + if (!dp) return FR_INVALID_OBJECT; + + /* Get logical drive */ + obj = &dp->obj; + res = find_volume(&path, &fs, 0); + if (res == FR_OK) { + obj->fs = fs; + INIT_NAMBUF(fs); + res = follow_path(dp, path); /* Follow the path to the directory */ + if (res == FR_OK) { /* Follow completed */ + if (!(dp->fn[NSFLAG] & NS_NONAME)) { /* It is not the origin directory itself */ + if (obj->attr & AM_DIR) { /* This object is a sub-directory */ +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + obj->c_scl = obj->sclust; /* Get containing directory inforamation */ + obj->c_size = ((DWORD)obj->objsize & 0xFFFFFF00) | obj->stat; + obj->c_ofs = dp->blk_ofs; + obj->sclust = ld_dword(fs->dirbuf + XDIR_FstClus); /* Get object allocation info */ + obj->objsize = ld_qword(fs->dirbuf + XDIR_FileSize); + obj->stat = fs->dirbuf[XDIR_GenFlags] & 2; + } else +#endif + { + obj->sclust = ld_clust(fs, dp->dir); /* Get object allocation info */ + } + } else { /* This object is a file */ + res = FR_NO_PATH; + } + } + if (res == FR_OK) { + obj->id = fs->id; + res = dir_sdi(dp, 0); /* Rewind directory */ +#if _FS_LOCK != 0 + if (res == FR_OK) { + if (obj->sclust) { + obj->lockid = inc_lock(dp, 0); /* Lock the sub directory */ + if (!obj->lockid) res = FR_TOO_MANY_OPEN_FILES; + } else { + obj->lockid = 0; /* Root directory need not to be locked */ + } + } +#endif + } + } + FREE_NAMBUF(); + if (res == FR_NO_FILE) res = FR_NO_PATH; + } + if (res != FR_OK) obj->fs = 0; /* Invalidate the directory object if function faild */ + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Close Directory */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_closedir ( + DIR *dp /* Pointer to the directory object to be closed */ +) +{ + FRESULT res; + FATFS *fs; + + + res = validate(&dp->obj, &fs); /* Check validity of the file object */ + if (res == FR_OK) { +#if _FS_LOCK != 0 + if (dp->obj.lockid) { /* Decrement sub-directory open counter */ + res = dec_lock(dp->obj.lockid); + } + if (res == FR_OK) +#endif + { + dp->obj.fs = 0; /* Invalidate directory object */ + } +#if _FS_REENTRANT + unlock_fs(fs, FR_OK); /* Unlock volume */ +#endif + } + return res; +} + + + + +/*-----------------------------------------------------------------------*/ +/* Read Directory Entries in Sequence */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_readdir ( + DIR* dp, /* Pointer to the open directory object */ + FILINFO* fno /* Pointer to file information to return */ +) +{ + FRESULT res; + FATFS *fs; + DEF_NAMBUF + + + res = validate(&dp->obj, &fs); /* Check validity of the directory object */ + if (res == FR_OK) { + if (!fno) { + res = dir_sdi(dp, 0); /* Rewind the directory object */ + } else { + INIT_NAMBUF(fs); + res = dir_read(dp, 0); /* Read an item */ + if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory */ + if (res == FR_OK) { /* A valid entry is found */ + get_fileinfo(dp, fno); /* Get the object information */ + res = dir_next(dp, 0); /* Increment index for next */ + if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory now */ + } + FREE_NAMBUF(); + } + } + LEAVE_FF(fs, res); +} + + + +#if _USE_FIND +/*-----------------------------------------------------------------------*/ +/* Find Next File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_findnext ( + DIR* dp, /* Pointer to the open directory object */ + FILINFO* fno /* Pointer to the file information structure */ +) +{ + FRESULT res; + + + for (;;) { + res = f_readdir(dp, fno); /* Get a directory item */ + if (res != FR_OK || !fno || !fno->fname[0]) break; /* Terminate if any error or end of directory */ + if (pattern_matching(dp->pat, fno->fname, 0, 0)) break; /* Test for the file name */ +#if _USE_LFN != 0 && _USE_FIND == 2 + if (pattern_matching(dp->pat, fno->altname, 0, 0)) break; /* Test for alternative name if exist */ +#endif + } + return res; +} + + + +/*-----------------------------------------------------------------------*/ +/* Find First File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_findfirst ( + DIR* dp, /* Pointer to the blank directory object */ + FILINFO* fno, /* Pointer to the file information structure */ + const TCHAR* path, /* Pointer to the directory to open */ + const TCHAR* pattern /* Pointer to the matching pattern */ +) +{ + FRESULT res; + + + dp->pat = pattern; /* Save pointer to pattern string */ + res = f_opendir(dp, path); /* Open the target directory */ + if (res == FR_OK) { + res = f_findnext(dp, fno); /* Find the first item */ + } + return res; +} + +#endif /* _USE_FIND */ + + + +#if _FS_MINIMIZE == 0 +/*-----------------------------------------------------------------------*/ +/* Get File Status */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_stat ( + const TCHAR* path, /* Pointer to the file path */ + FILINFO* fno /* Pointer to file information to return */ +) +{ + FRESULT res; + DIR dj; + DEF_NAMBUF + + + /* Get logical drive */ + res = find_volume(&path, &dj.obj.fs, 0); + if (res == FR_OK) { + INIT_NAMBUF(dj.obj.fs); + res = follow_path(&dj, path); /* Follow the file path */ + if (res == FR_OK) { /* Follow completed */ + if (dj.fn[NSFLAG] & NS_NONAME) { /* It is origin directory */ + res = FR_INVALID_NAME; + } else { /* Found an object */ + if (fno) get_fileinfo(&dj, fno); + } + } + FREE_NAMBUF(); + } + + LEAVE_FF(dj.obj.fs, res); +} + + + +#if !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Get Number of Free Clusters */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_getfree ( + const TCHAR* path, /* Path name of the logical drive number */ + DWORD* nclst, /* Pointer to a variable to return number of free clusters */ + FATFS** fatfs /* Pointer to return pointer to corresponding file system object */ +) +{ + FRESULT res; + FATFS *fs; + DWORD nfree, clst, sect, stat; + UINT i; + BYTE *p; + _FDID obj; + + + /* Get logical drive */ + res = find_volume(&path, &fs, 0); + if (res == FR_OK) { + *fatfs = fs; /* Return ptr to the fs object */ + /* If free_clst is valid, return it without full cluster scan */ + if (fs->free_clst <= fs->n_fatent - 2) { + *nclst = fs->free_clst; + } else { + /* Get number of free clusters */ + nfree = 0; + if (fs->fs_type == FS_FAT12) { /* FAT12: Sector unalighed FAT entries */ + clst = 2; obj.fs = fs; + do { + stat = get_fat(&obj, clst); + if (stat == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } + if (stat == 1) { res = FR_INT_ERR; break; } + if (stat == 0) nfree++; + } while (++clst < fs->n_fatent); + } else { +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* exFAT: Scan bitmap table */ + BYTE bm; + UINT b; + + clst = fs->n_fatent - 2; + sect = fs->database; + i = 0; + do { + if (i == 0 && (res = move_window(fs, sect++)) != FR_OK) break; + for (b = 8, bm = fs->win[i]; b && clst; b--, clst--) { + if (!(bm & 1)) nfree++; + bm >>= 1; + } + i = (i + 1) % SS(fs); + } while (clst); + } else +#endif + { /* FAT16/32: Sector alighed FAT entries */ + clst = fs->n_fatent; sect = fs->fatbase; + i = 0; p = 0; + do { + if (i == 0) { + res = move_window(fs, sect++); + if (res != FR_OK) break; + p = fs->win; + i = SS(fs); + } + if (fs->fs_type == FS_FAT16) { + if (ld_word(p) == 0) nfree++; + p += 2; i -= 2; + } else { + if ((ld_dword(p) & 0x0FFFFFFF) == 0) nfree++; + p += 4; i -= 4; + } + } while (--clst); + } + } + *nclst = nfree; /* Return the free clusters */ + fs->free_clst = nfree; /* Now free_clst is valid */ + fs->fsi_flag |= 1; /* FSInfo is to be updated */ + } + } + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Truncate File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_truncate ( + FIL* fp /* Pointer to the file object */ +) +{ + FRESULT res; + FATFS *fs; + DWORD ncl; + + + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); + if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + + if (fp->fptr < fp->obj.objsize) { /* Process when fptr is not on the eof */ + if (fp->fptr == 0) { /* When set file size to zero, remove entire cluster chain */ + res = remove_chain(&fp->obj, fp->obj.sclust, 0); + fp->obj.sclust = 0; + } else { /* When truncate a part of the file, remove remaining clusters */ + ncl = get_fat(&fp->obj, fp->clust); + res = FR_OK; + if (ncl == 0xFFFFFFFF) res = FR_DISK_ERR; + if (ncl == 1) res = FR_INT_ERR; + if (res == FR_OK && ncl < fs->n_fatent) { + res = remove_chain(&fp->obj, ncl, fp->clust); + } + } + fp->obj.objsize = fp->fptr; /* Set file size to current R/W point */ + fp->flag |= FA_MODIFIED; +#if !_FS_TINY + if (res == FR_OK && (fp->flag & FA_DIRTY)) { + if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) { + res = FR_DISK_ERR; + } else { + fp->flag &= (BYTE)~FA_DIRTY; + } + } +#endif + if (res != FR_OK) ABORT(fs, res); + } + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Delete a File/Directory */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_unlink ( + const TCHAR* path /* Pointer to the file or directory path */ +) +{ + FRESULT res; + DIR dj, sdj; + DWORD dclst = 0; + FATFS *fs; +#if _FS_EXFAT + _FDID obj; +#endif + DEF_NAMBUF + + + /* Get logical drive */ + res = find_volume(&path, &fs, FA_WRITE); + dj.obj.fs = fs; + if (res == FR_OK) { + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the file path */ + if (_FS_RPATH && res == FR_OK && (dj.fn[NSFLAG] & NS_DOT)) { + res = FR_INVALID_NAME; /* Cannot remove dot entry */ + } +#if _FS_LOCK != 0 + if (res == FR_OK) res = chk_lock(&dj, 2); /* Check if it is an open object */ +#endif + if (res == FR_OK) { /* The object is accessible */ + if (dj.fn[NSFLAG] & NS_NONAME) { + res = FR_INVALID_NAME; /* Cannot remove the origin directory */ + } else { + if (dj.obj.attr & AM_RDO) { + res = FR_DENIED; /* Cannot remove R/O object */ + } + } + if (res == FR_OK) { +#if _FS_EXFAT + obj.fs = fs; + if (fs->fs_type == FS_EXFAT) { + obj.sclust = dclst = ld_dword(fs->dirbuf + XDIR_FstClus); + obj.objsize = ld_qword(fs->dirbuf + XDIR_FileSize); + obj.stat = fs->dirbuf[XDIR_GenFlags] & 2; + } else +#endif + { + dclst = ld_clust(fs, dj.dir); + } + if (dj.obj.attr & AM_DIR) { /* Is it a sub-directory? */ +#if _FS_RPATH != 0 + if (dclst == fs->cdir) { /* Is it the current directory? */ + res = FR_DENIED; + } else +#endif + { + sdj.obj.fs = fs; /* Open the sub-directory */ + sdj.obj.sclust = dclst; +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + sdj.obj.objsize = obj.objsize; + sdj.obj.stat = obj.stat; + } +#endif + res = dir_sdi(&sdj, 0); + if (res == FR_OK) { + res = dir_read(&sdj, 0); /* Read an item */ + if (res == FR_OK) res = FR_DENIED; /* Not empty? */ + if (res == FR_NO_FILE) res = FR_OK; /* Empty? */ + } + } + } + } + if (res == FR_OK) { + res = dir_remove(&dj); /* Remove the directory entry */ + if (res == FR_OK && dclst) { /* Remove the cluster chain if exist */ +#if _FS_EXFAT + res = remove_chain(&obj, dclst, 0); +#else + res = remove_chain(&dj.obj, dclst, 0); +#endif + } + if (res == FR_OK) res = sync_fs(fs); + } + } + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Create a Directory */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_mkdir ( + const TCHAR* path /* Pointer to the directory path */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + BYTE *dir; + UINT n; + DWORD dsc, dcl, pcl, tm; + DEF_NAMBUF + + + /* Get logical drive */ + res = find_volume(&path, &fs, FA_WRITE); + dj.obj.fs = fs; + if (res == FR_OK) { + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the file path */ + if (res == FR_OK) res = FR_EXIST; /* Any object with same name is already existing */ + if (_FS_RPATH && res == FR_NO_FILE && (dj.fn[NSFLAG] & NS_DOT)) { + res = FR_INVALID_NAME; + } + if (res == FR_NO_FILE) { /* Can create a new directory */ + dcl = create_chain(&dj.obj, 0); /* Allocate a cluster for the new directory table */ + dj.obj.objsize = (DWORD)fs->csize * SS(fs); + res = FR_OK; + if (dcl == 0) res = FR_DENIED; /* No space to allocate a new cluster */ + if (dcl == 1) res = FR_INT_ERR; + if (dcl == 0xFFFFFFFF) res = FR_DISK_ERR; + if (res == FR_OK) res = sync_window(fs); /* Flush FAT */ + tm = GET_FATTIME(); + if (res == FR_OK) { /* Initialize the new directory table */ + dsc = clust2sect(fs, dcl); + dir = fs->win; + mem_set(dir, 0, SS(fs)); + if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + mem_set(dir + DIR_Name, ' ', 11); /* Create "." entry */ + dir[DIR_Name] = '.'; + dir[DIR_Attr] = AM_DIR; + st_dword(dir + DIR_ModTime, tm); + st_clust(fs, dir, dcl); + mem_cpy(dir + SZDIRE, dir, SZDIRE); /* Create ".." entry */ + dir[SZDIRE + 1] = '.'; pcl = dj.obj.sclust; + if (fs->fs_type == FS_FAT32 && pcl == fs->dirbase) pcl = 0; + st_clust(fs, dir + SZDIRE, pcl); + } + for (n = fs->csize; n; n--) { /* Write dot entries and clear following sectors */ + fs->winsect = dsc++; + fs->wflag = 1; + res = sync_window(fs); + if (res != FR_OK) break; + mem_set(dir, 0, SS(fs)); + } + } + if (res == FR_OK) { + res = dir_register(&dj); /* Register the object to the directoy */ + } + if (res == FR_OK) { +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* Initialize directory entry block */ + st_dword(fs->dirbuf + XDIR_ModTime, tm); /* Created time */ + st_dword(fs->dirbuf + XDIR_FstClus, dcl); /* Table start cluster */ + st_dword(fs->dirbuf + XDIR_FileSize, (DWORD)dj.obj.objsize); /* File size needs to be valid */ + st_dword(fs->dirbuf + XDIR_ValidFileSize, (DWORD)dj.obj.objsize); + fs->dirbuf[XDIR_GenFlags] = 3; /* Initialize the object flag (contiguous) */ + fs->dirbuf[XDIR_Attr] = AM_DIR; /* Attribute */ + res = store_xdir(&dj); + } else +#endif + { + dir = dj.dir; + st_dword(dir + DIR_ModTime, tm); /* Created time */ + st_clust(fs, dir, dcl); /* Table start cluster */ + dir[DIR_Attr] = AM_DIR; /* Attribute */ + fs->wflag = 1; + } + if (res == FR_OK) { + res = sync_fs(fs); + } + } else { + remove_chain(&dj.obj, dcl, 0); /* Could not register, remove cluster chain */ + } + } + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Rename a File/Directory */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_rename ( + const TCHAR* path_old, /* Pointer to the object name to be renamed */ + const TCHAR* path_new /* Pointer to the new name */ +) +{ + FRESULT res; + DIR djo, djn; + FATFS *fs; + BYTE buf[_FS_EXFAT ? SZDIRE * 2 : 24], *dir; + DWORD dw; + DEF_NAMBUF + + + get_ldnumber(&path_new); /* Snip drive number of new name off */ + res = find_volume(&path_old, &fs, FA_WRITE); /* Get logical drive of the old object */ + if (res == FR_OK) { + djo.obj.fs = fs; + INIT_NAMBUF(fs); + res = follow_path(&djo, path_old); /* Check old object */ + if (res == FR_OK && (djo.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check validity of name */ +#if _FS_LOCK != 0 + if (res == FR_OK) { + res = chk_lock(&djo, 2); + } +#endif + if (res == FR_OK) { /* Object to be renamed is found */ +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* At exFAT */ + BYTE nf, nn; + WORD nh; + + mem_cpy(buf, fs->dirbuf, SZDIRE * 2); /* Save 85+C0 entry of old object */ + mem_cpy(&djn, &djo, sizeof djo); + res = follow_path(&djn, path_new); /* Make sure if new object name is not in use */ + if (res == FR_OK) { /* Is new name already in use by any other object? */ + res = (djn.obj.sclust == djo.obj.sclust && djn.dptr == djo.dptr) ? FR_NO_FILE : FR_EXIST; + } + if (res == FR_NO_FILE) { /* It is a valid path and no name collision */ + res = dir_register(&djn); /* Register the new entry */ + if (res == FR_OK) { + nf = fs->dirbuf[XDIR_NumSec]; nn = fs->dirbuf[XDIR_NumName]; + nh = ld_word(fs->dirbuf + XDIR_NameHash); + mem_cpy(fs->dirbuf, buf, SZDIRE * 2); + fs->dirbuf[XDIR_NumSec] = nf; fs->dirbuf[XDIR_NumName] = nn; + st_word(fs->dirbuf + XDIR_NameHash, nh); +/* Start of critical section where an interruption can cause a cross-link */ + res = store_xdir(&djn); + } + } + } else +#endif + { /* At FAT12/FAT16/FAT32 */ + mem_cpy(buf, djo.dir + DIR_Attr, 21); /* Save information about the object except name */ + mem_cpy(&djn, &djo, sizeof (DIR)); /* Duplicate the directory object */ + res = follow_path(&djn, path_new); /* Make sure if new object name is not in use */ + if (res == FR_OK) { /* Is new name already in use by any other object? */ + res = (djn.obj.sclust == djo.obj.sclust && djn.dptr == djo.dptr) ? FR_NO_FILE : FR_EXIST; + } + if (res == FR_NO_FILE) { /* It is a valid path and no name collision */ + res = dir_register(&djn); /* Register the new entry */ + if (res == FR_OK) { + dir = djn.dir; /* Copy information about object except name */ + mem_cpy(dir + 13, buf + 2, 19); + dir[DIR_Attr] = buf[0] | AM_ARC; + fs->wflag = 1; + if ((dir[DIR_Attr] & AM_DIR) && djo.obj.sclust != djn.obj.sclust) { /* Update .. entry in the sub-directory if needed */ + dw = clust2sect(fs, ld_clust(fs, dir)); + if (!dw) { + res = FR_INT_ERR; + } else { +/* Start of critical section where an interruption can cause a cross-link */ + res = move_window(fs, dw); + dir = fs->win + SZDIRE * 1; /* Ptr to .. entry */ + if (res == FR_OK && dir[1] == '.') { + st_clust(fs, dir, djn.obj.sclust); + fs->wflag = 1; + } + } + } + } + } + } + if (res == FR_OK) { + res = dir_remove(&djo); /* Remove old entry */ + if (res == FR_OK) { + res = sync_fs(fs); + } + } +/* End of the critical section */ + } + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + +#endif /* !_FS_READONLY */ +#endif /* _FS_MINIMIZE == 0 */ +#endif /* _FS_MINIMIZE <= 1 */ +#endif /* _FS_MINIMIZE <= 2 */ + + + +#if _USE_CHMOD && !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Change Attribute */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_chmod ( + const TCHAR* path, /* Pointer to the file path */ + BYTE attr, /* Attribute bits */ + BYTE mask /* Attribute mask to change */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + DEF_NAMBUF + + + res = find_volume(&path, &fs, FA_WRITE); /* Get logical drive */ + dj.obj.fs = fs; + if (res == FR_OK) { + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the file path */ + if (res == FR_OK && (dj.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check object validity */ + if (res == FR_OK) { + mask &= AM_RDO|AM_HID|AM_SYS|AM_ARC; /* Valid attribute mask */ +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + fs->dirbuf[XDIR_Attr] = (attr & mask) | (fs->dirbuf[XDIR_Attr] & (BYTE)~mask); /* Apply attribute change */ + res = store_xdir(&dj); + } else +#endif + { + dj.dir[DIR_Attr] = (attr & mask) | (dj.dir[DIR_Attr] & (BYTE)~mask); /* Apply attribute change */ + fs->wflag = 1; + } + if (res == FR_OK) { + res = sync_fs(fs); + } + } + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Change Timestamp */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_utime ( + const TCHAR* path, /* Pointer to the file/directory name */ + const FILINFO* fno /* Pointer to the time stamp to be set */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + DEF_NAMBUF + + + res = find_volume(&path, &fs, FA_WRITE); /* Get logical drive */ + dj.obj.fs = fs; + if (res == FR_OK) { + INIT_NAMBUF(fs); + res = follow_path(&dj, path); /* Follow the file path */ + if (res == FR_OK && (dj.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check object validity */ + if (res == FR_OK) { +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + st_dword(fs->dirbuf + XDIR_ModTime, (DWORD)fno->fdate << 16 | fno->ftime); + res = store_xdir(&dj); + } else +#endif + { + st_dword(dj.dir + DIR_ModTime, (DWORD)fno->fdate << 16 | fno->ftime); + fs->wflag = 1; + } + if (res == FR_OK) { + res = sync_fs(fs); + } + } + FREE_NAMBUF(); + } + + LEAVE_FF(fs, res); +} + +#endif /* _USE_CHMOD && !_FS_READONLY */ + + + +#if _USE_LABEL +/*-----------------------------------------------------------------------*/ +/* Get Volume Label */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_getlabel ( + const TCHAR* path, /* Path name of the logical drive number */ + TCHAR* label, /* Pointer to a buffer to return the volume label */ + DWORD* vsn /* Pointer to a variable to return the volume serial number */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + UINT si, di; +#if _LFN_UNICODE || _FS_EXFAT + WCHAR w; +#endif + + /* Get logical drive */ + res = find_volume(&path, &fs, 0); + + /* Get volume label */ + if (res == FR_OK && label) { + dj.obj.fs = fs; dj.obj.sclust = 0; /* Open root directory */ + res = dir_sdi(&dj, 0); + if (res == FR_OK) { + res = dir_read(&dj, 1); /* Find a volume label entry */ + if (res == FR_OK) { +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + for (si = di = 0; si < dj.dir[XDIR_NumLabel]; si++) { /* Extract volume label from 83 entry */ + w = ld_word(dj.dir + XDIR_Label + si * 2); +#if _LFN_UNICODE + label[di++] = w; +#else + w = ff_convert(w, 0); /* Unicode -> OEM */ + if (w == 0) w = '?'; /* Replace wrong character */ + if (_DF1S && w >= 0x100) label[di++] = (char)(w >> 8); + label[di++] = (char)w; +#endif + } + label[di] = 0; + } else +#endif + { + si = di = 0; /* Extract volume label from AM_VOL entry with code comversion */ + do { +#if _LFN_UNICODE + w = (si < 11) ? dj.dir[si++] : ' '; + if (IsDBCS1(w) && si < 11 && IsDBCS2(dj.dir[si])) { + w = w << 8 | dj.dir[si++]; + } + label[di++] = ff_convert(w, 1); /* OEM -> Unicode */ +#else + label[di++] = dj.dir[si++]; +#endif + } while (di < 11); + do { /* Truncate trailing spaces */ + label[di] = 0; + if (di == 0) break; + } while (label[--di] == ' '); + } + } + } + if (res == FR_NO_FILE) { /* No label entry and return nul string */ + label[0] = 0; + res = FR_OK; + } + } + + /* Get volume serial number */ + if (res == FR_OK && vsn) { + res = move_window(fs, fs->volbase); + if (res == FR_OK) { + switch (fs->fs_type) { + case FS_EXFAT: + di = BPB_VolIDEx; break; + + case FS_FAT32: + di = BS_VolID32; break; + + default: + di = BS_VolID; + } + *vsn = ld_dword(fs->win + di); + } + } + + LEAVE_FF(fs, res); +} + + + +#if !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Set Volume Label */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_setlabel ( + const TCHAR* label /* Pointer to the volume label to set */ +) +{ + FRESULT res; + DIR dj; + FATFS *fs; + BYTE dirvn[22]; + UINT i, j, slen; + WCHAR w; + static const char badchr[] = "\"*+,.:;<=>\?[]|\x7F"; + + + /* Get logical drive */ + res = find_volume(&label, &fs, FA_WRITE); + if (res != FR_OK) LEAVE_FF(fs, res); + dj.obj.fs = fs; + + /* Get length of given volume label */ + for (slen = 0; (UINT)label[slen] >= ' '; slen++) ; /* Get name length */ + +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + for (i = j = 0; i < slen; ) { /* Create volume label in directory form */ + w = label[i++]; +#if !_LFN_UNICODE + if (IsDBCS1(w)) { + w = (i < slen && IsDBCS2(label[i])) ? w << 8 | (BYTE)label[i++] : 0; + } + w = ff_convert(w, 1); +#endif + if (w == 0 || chk_chr(badchr, w) || j == 22) { /* Check validity check validity of the volume label */ + LEAVE_FF(fs, FR_INVALID_NAME); + } + st_word(dirvn + j, w); j += 2; + } + slen = j; + } else +#endif + { /* On the FAT12/16/32 volume */ + for ( ; slen && label[slen - 1] == ' '; slen--) ; /* Remove trailing spaces */ + if (slen) { /* Is there a volume label to be set? */ + dirvn[0] = 0; i = j = 0; /* Create volume label in directory form */ + do { +#if _LFN_UNICODE + w = ff_convert(ff_wtoupper(label[i++]), 0); +#else + w = (BYTE)label[i++]; + if (IsDBCS1(w)) { + w = (j < 10 && i < slen && IsDBCS2(label[i])) ? w << 8 | (BYTE)label[i++] : 0; + } +#if _USE_LFN != 0 + w = ff_convert(ff_wtoupper(ff_convert(w, 1)), 0); +#else + if (IsLower(w)) w -= 0x20; /* To upper ASCII characters */ +#ifdef _EXCVT + if (w >= 0x80) w = ExCvt[w - 0x80]; /* To upper extended characters (SBCS cfg) */ +#else + if (!_DF1S && w >= 0x80) w = 0; /* Reject extended characters (ASCII cfg) */ +#endif +#endif +#endif + if (w == 0 || chk_chr(badchr, w) || j >= (UINT)((w >= 0x100) ? 10 : 11)) { /* Reject invalid characters for volume label */ + LEAVE_FF(fs, FR_INVALID_NAME); + } + if (w >= 0x100) dirvn[j++] = (BYTE)(w >> 8); + dirvn[j++] = (BYTE)w; + } while (i < slen); + while (j < 11) dirvn[j++] = ' '; /* Fill remaining name field */ + if (dirvn[0] == DDEM) LEAVE_FF(fs, FR_INVALID_NAME); /* Reject illegal name (heading DDEM) */ + } + } + + /* Set volume label */ + dj.obj.sclust = 0; /* Open root directory */ + res = dir_sdi(&dj, 0); + if (res == FR_OK) { + res = dir_read(&dj, 1); /* Get volume label entry */ + if (res == FR_OK) { + if (_FS_EXFAT && fs->fs_type == FS_EXFAT) { + dj.dir[XDIR_NumLabel] = (BYTE)(slen / 2); /* Change the volume label */ + mem_cpy(dj.dir + XDIR_Label, dirvn, slen); + } else { + if (slen) { + mem_cpy(dj.dir, dirvn, 11); /* Change the volume label */ + } else { + dj.dir[DIR_Name] = DDEM; /* Remove the volume label */ + } + } + fs->wflag = 1; + res = sync_fs(fs); + } else { /* No volume label entry is found or error */ + if (res == FR_NO_FILE) { + res = FR_OK; + if (slen) { /* Create a volume label entry */ + res = dir_alloc(&dj, 1); /* Allocate an entry */ + if (res == FR_OK) { + mem_set(dj.dir, 0, SZDIRE); /* Clear the entry */ + if (_FS_EXFAT && fs->fs_type == FS_EXFAT) { + dj.dir[XDIR_Type] = 0x83; /* Create 83 entry */ + dj.dir[XDIR_NumLabel] = (BYTE)(slen / 2); + mem_cpy(dj.dir + XDIR_Label, dirvn, slen); + } else { + dj.dir[DIR_Attr] = AM_VOL; /* Create volume label entry */ + mem_cpy(dj.dir, dirvn, 11); + } + fs->wflag = 1; + res = sync_fs(fs); + } + } + } + } + } + + LEAVE_FF(fs, res); +} + +#endif /* !_FS_READONLY */ +#endif /* _USE_LABEL */ + + + +#if _USE_EXPAND && !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Allocate a Contiguous Blocks to the File */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_expand ( + FIL* fp, /* Pointer to the file object */ + FSIZE_t fsz, /* File size to be expanded to */ + BYTE opt /* Operation mode 0:Find and prepare or 1:Find and allocate */ +) +{ + FRESULT res; + FATFS *fs; + DWORD n, clst, stcl, scl, ncl, tcl, lclst; + + + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); + if (fsz == 0 || fp->obj.objsize != 0 || !(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); +#if _FS_EXFAT + if (fs->fs_type != FS_EXFAT && fsz >= 0x100000000) LEAVE_FF(fs, FR_DENIED); /* Check if in size limit */ +#endif + n = (DWORD)fs->csize * SS(fs); /* Cluster size */ + tcl = (DWORD)(fsz / n) + ((fsz & (n - 1)) ? 1 : 0); /* Number of clusters required */ + stcl = fs->last_clst; lclst = 0; + if (stcl < 2 || stcl >= fs->n_fatent) stcl = 2; + +#if _FS_EXFAT + if (fs->fs_type == FS_EXFAT) { + scl = find_bitmap(fs, stcl, tcl); /* Find a contiguous cluster block */ + if (scl == 0) res = FR_DENIED; /* No contiguous cluster block was found */ + if (scl == 0xFFFFFFFF) res = FR_DISK_ERR; + if (res == FR_OK) { /* A contiguous free area is found */ + if (opt) { /* Allocate it now */ + res = change_bitmap(fs, scl, tcl, 1); /* Mark the cluster block 'in use' */ + lclst = scl + tcl - 1; + } else { /* Set it as suggested point for next allocation */ + lclst = scl - 1; + } + } + } else +#endif + { + scl = clst = stcl; ncl = 0; + for (;;) { /* Find a contiguous cluster block */ + n = get_fat(&fp->obj, clst); + if (++clst >= fs->n_fatent) clst = 2; + if (n == 1) { res = FR_INT_ERR; break; } + if (n == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } + if (n == 0) { /* Is it a free cluster? */ + if (++ncl == tcl) break; /* Break if a contiguous cluster block is found */ + } else { + scl = clst; ncl = 0; /* Not a free cluster */ + } + if (clst == stcl) { res = FR_DENIED; break; } /* No contiguous cluster? */ + } + if (res == FR_OK) { /* A contiguous free area is found */ + if (opt) { /* Allocate it now */ + for (clst = scl, n = tcl; n; clst++, n--) { /* Create a cluster chain on the FAT */ + res = put_fat(fs, clst, (n == 1) ? 0xFFFFFFFF : clst + 1); + if (res != FR_OK) break; + lclst = clst; + } + } else { /* Set it as suggested point for next allocation */ + lclst = scl - 1; + } + } + } + + if (res == FR_OK) { + fs->last_clst = lclst; /* Set suggested start cluster to start next */ + if (opt) { /* Is it allocated now? */ + fp->obj.sclust = scl; /* Update object allocation information */ + fp->obj.objsize = fsz; + if (_FS_EXFAT) fp->obj.stat = 2; /* Set status 'contiguous chain' */ + fp->flag |= FA_MODIFIED; + if (fs->free_clst <= fs->n_fatent - 2) { /* Update FSINFO */ + fs->free_clst -= tcl; + fs->fsi_flag |= 1; + } + } + } + + LEAVE_FF(fs, res); +} + +#endif /* _USE_EXPAND && !_FS_READONLY */ + + + +#if _USE_FORWARD +/*-----------------------------------------------------------------------*/ +/* Forward data to the stream directly */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_forward ( + FIL* fp, /* Pointer to the file object */ + UINT (*func)(const BYTE*,UINT), /* Pointer to the streaming function */ + UINT btf, /* Number of bytes to forward */ + UINT* bf /* Pointer to number of bytes forwarded */ +) +{ + FRESULT res; + FATFS *fs; + DWORD clst, sect; + FSIZE_t remain; + UINT rcnt, csect; + BYTE *dbuf; + + + *bf = 0; /* Clear transfer byte counter */ + res = validate(&fp->obj, &fs); /* Check validity of the file object */ + if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); + if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + + remain = fp->obj.objsize - fp->fptr; + if (btf > remain) btf = (UINT)remain; /* Truncate btf by remaining bytes */ + + for ( ; btf && (*func)(0, 0); /* Repeat until all data transferred or stream goes busy */ + fp->fptr += rcnt, *bf += rcnt, btf -= rcnt) { + csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ + if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + if (csect == 0) { /* On the cluster boundary? */ + clst = (fp->fptr == 0) ? /* On the top of the file? */ + fp->obj.sclust : get_fat(&fp->obj, fp->clust); + if (clst <= 1) ABORT(fs, FR_INT_ERR); + if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + fp->clust = clst; /* Update current cluster */ + } + } + sect = clust2sect(fs, fp->clust); /* Get current data sector */ + if (!sect) ABORT(fs, FR_INT_ERR); + sect += csect; +#if _FS_TINY + if (move_window(fs, sect) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Move sector window to the file data */ + dbuf = fs->win; +#else + if (fp->sect != sect) { /* Fill sector cache with file data */ +#if !_FS_READONLY + if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ + if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + fp->flag &= (BYTE)~FA_DIRTY; + } +#endif + if (disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + } + dbuf = fp->buf; +#endif + fp->sect = sect; + rcnt = SS(fs) - (UINT)fp->fptr % SS(fs); /* Number of bytes left in the sector */ + if (rcnt > btf) rcnt = btf; /* Clip it by btr if needed */ + rcnt = (*func)(dbuf + ((UINT)fp->fptr % SS(fs)), rcnt); /* Forward the file data */ + if (!rcnt) ABORT(fs, FR_INT_ERR); + } + + LEAVE_FF(fs, FR_OK); +} +#endif /* _USE_FORWARD */ + + + +#if _USE_MKFS && !_FS_READONLY +/*-----------------------------------------------------------------------*/ +/* Create an FAT/exFAT volume */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_mkfs ( + const TCHAR* path, /* Logical drive number */ + BYTE opt, /* Format option */ + DWORD au, /* Size of allocation unit (cluster) [byte] */ + void* work, /* Pointer to working buffer */ + UINT len /* Size of working buffer */ +) +{ + const UINT n_fats = 1; /* Number of FATs for FAT12/16/32 volume (1 or 2) */ + const UINT n_rootdir = 512; /* Number of root directory entries for FAT12/16 volume */ + static const WORD cst[] = {1, 4, 16, 64, 256, 512, 0}; /* Cluster size boundary for FAT12/16 volume (4Ks unit) */ + static const WORD cst32[] = {1, 2, 4, 8, 16, 32, 0}; /* Cluster size boundary for FAT32 volume (128Ks unit) */ + BYTE fmt, sys, *buf, *pte, pdrv, part; + WORD ss; + DWORD szb_buf, sz_buf, sz_blk, n_clst, pau, sect, nsect, n; + DWORD b_vol, b_fat, b_data; /* Base LBA for volume, fat, data */ + DWORD sz_vol, sz_rsv, sz_fat, sz_dir; /* Size for volume, fat, dir, data */ + UINT i; + int vol; + DSTATUS stat; +#if _USE_TRIM || _FS_EXFAT + DWORD tbl[3]; +#endif + + + /* Check mounted drive and clear work area */ + vol = get_ldnumber(&path); /* Get target logical drive */ + if (vol < 0) return FR_INVALID_DRIVE; + if (FatFs[vol]) FatFs[vol]->fs_type = 0; /* Clear the volume */ + pdrv = LD2PD(vol); /* Physical drive */ + part = LD2PT(vol); /* Partition (0:create as new, 1-4:get from partition table) */ + + /* Check physical drive status */ + stat = disk_initialize(pdrv); + if (stat & STA_NOINIT) return FR_NOT_READY; + if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; + if (disk_ioctl(pdrv, GET_BLOCK_SIZE, &sz_blk) != RES_OK || !sz_blk || sz_blk > 32768 || (sz_blk & (sz_blk - 1))) sz_blk = 1; /* Erase block to align data area */ +#if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + if (disk_ioctl(pdrv, GET_SECTOR_SIZE, &ss) != RES_OK) return FR_DISK_ERR; + if (ss > _MAX_SS || ss < _MIN_SS || (ss & (ss - 1))) return FR_DISK_ERR; +#else + ss = _MAX_SS; +#endif + if ((au != 0 && au < ss) || au > 0x1000000 || (au & (au - 1))) return FR_INVALID_PARAMETER; /* Check if au is valid */ + au /= ss; /* Cluster size in unit of sector */ + + /* Get working buffer */ + buf = (BYTE*)work; /* Working buffer */ + sz_buf = len / ss; /* Size of working buffer (sector) */ + szb_buf = sz_buf * ss; /* Size of working buffer (byte) */ + if (!szb_buf) return FR_MKFS_ABORTED; + + /* Determine where the volume to be located (b_vol, sz_vol) */ + if (_MULTI_PARTITION && part != 0) { + /* Get partition information from partition table in the MBR */ + if (disk_read(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Load MBR */ + if (ld_word(buf + BS_55AA) != 0xAA55) return FR_MKFS_ABORTED; /* Check if MBR is valid */ + pte = buf + (MBR_Table + (part - 1) * SZ_PTE); + if (!pte[PTE_System]) return FR_MKFS_ABORTED; /* No partition? */ + b_vol = ld_dword(pte + PTE_StLba); /* Get volume start sector */ + sz_vol = ld_dword(pte + PTE_SizLba); /* Get volume size */ + } else { + /* Create a single-partition in this function */ + if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_vol) != RES_OK) return FR_DISK_ERR; + b_vol = (opt & FM_SFD) ? 0 : 63; /* Volume start sector */ + if (sz_vol < b_vol) return FR_MKFS_ABORTED; + sz_vol -= b_vol; /* Volume size */ + } + if (sz_vol < 128) return FR_MKFS_ABORTED; /* Check if volume size is >=128s */ + + /* Pre-determine the FAT type */ + do { + if (_FS_EXFAT && (opt & FM_EXFAT)) { /* exFAT possible? */ + if ((opt & FM_ANY) == FM_EXFAT || sz_vol >= 0x4000000 || au > 128) { /* exFAT only, vol >= 64Ms or au > 128s ? */ + fmt = FS_EXFAT; break; + } + } + if (au > 128) return FR_INVALID_PARAMETER; /* Too large au for FAT/FAT32 */ + if (opt & FM_FAT32) { /* FAT32 possible? */ + if ((opt & FM_ANY) == FM_FAT32 || !(opt & FM_FAT)) { /* FAT32 only or no-FAT? */ + fmt = FS_FAT32; break; + } + } + if (!(opt & FM_FAT)) return FR_INVALID_PARAMETER; /* no-FAT? */ + fmt = FS_FAT16; + } while (0); + +#if _FS_EXFAT + if (fmt == FS_EXFAT) { /* Create an exFAT volume */ + DWORD szb_bit, szb_case, sum, nb, cl; + WCHAR ch, si; + UINT j, st; + BYTE b; + + if (sz_vol < 0x1000) return FR_MKFS_ABORTED; /* Too small volume? */ +#if _USE_TRIM + tbl[0] = b_vol; tbl[1] = b_vol + sz_vol - 1; /* Inform the device the volume area may be erased */ + disk_ioctl(pdrv, CTRL_TRIM, tbl); +#endif + /* Determine FAT location, data location and number of clusters */ + if (!au) { /* au auto-selection */ + au = 8; + if (sz_vol >= 0x80000) au = 64; /* >= 512Ks */ + if (sz_vol >= 0x4000000) au = 256; /* >= 64Ms */ + } + b_fat = b_vol + 32; /* FAT start at offset 32 */ + sz_fat = ((sz_vol / au + 2) * 4 + ss - 1) / ss; /* Number of FAT sectors */ + b_data = (b_fat + sz_fat + sz_blk - 1) & ~(sz_blk - 1); /* Align data area to the erase block boundary */ + if (b_data >= sz_vol / 2) return FR_MKFS_ABORTED; /* Too small volume? */ + n_clst = (sz_vol - (b_data - b_vol)) / au; /* Number of clusters */ + if (n_clst <16) return FR_MKFS_ABORTED; /* Too few clusters? */ + if (n_clst > MAX_EXFAT) return FR_MKFS_ABORTED; /* Too many clusters? */ + + szb_bit = (n_clst + 7) / 8; /* Size of allocation bitmap */ + tbl[0] = (szb_bit + au * ss - 1) / (au * ss); /* Number of allocation bitmap clusters */ + + /* Create a compressed up-case table */ + sect = b_data + au * tbl[0]; /* Table start sector */ + sum = 0; /* Table checksum to be stored in the 82 entry */ + st = si = i = j = szb_case = 0; + do { + switch (st) { + case 0: + ch = ff_wtoupper(si); /* Get an up-case char */ + if (ch != si) { + si++; break; /* Store the up-case char if exist */ + } + for (j = 1; (WCHAR)(si + j) && (WCHAR)(si + j) == ff_wtoupper((WCHAR)(si + j)); j++) ; /* Get run length of no-case block */ + if (j >= 128) { + ch = 0xFFFF; st = 2; break; /* Compress the no-case block if run is >= 128 */ + } + st = 1; /* Do not compress short run */ + /* go to next case */ + case 1: + ch = si++; /* Fill the short run */ + if (--j == 0) st = 0; + break; + + default: + ch = (WCHAR)j; si += j; /* Number of chars to skip */ + st = 0; + } + sum = xsum32(buf[i + 0] = (BYTE)ch, sum); /* Put it into the write buffer */ + sum = xsum32(buf[i + 1] = (BYTE)(ch >> 8), sum); + i += 2; szb_case += 2; + if (!si || i == szb_buf) { /* Write buffered data when buffer full or end of process */ + n = (i + ss - 1) / ss; + if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; + sect += n; i = 0; + } + } while (si); + tbl[1] = (szb_case + au * ss - 1) / (au * ss); /* Number of up-case table clusters */ + tbl[2] = 1; /* Number of root dir clusters */ + + /* Initialize the allocation bitmap */ + sect = b_data; nsect = (szb_bit + ss - 1) / ss; /* Start of bitmap and number of sectors */ + nb = tbl[0] + tbl[1] + tbl[2]; /* Number of clusters in-use by system */ + do { + mem_set(buf, 0, szb_buf); + for (i = 0; nb >= 8 && i < szb_buf; buf[i++] = 0xFF, nb -= 8) ; + for (b = 1; nb && i < szb_buf; buf[i] |= b, b <<= 1, nb--) ; + n = (nsect > sz_buf) ? sz_buf : nsect; /* Write the buffered data */ + if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; + sect += n; nsect -= n; + } while (nsect); + + /* Initialize the FAT */ + sect = b_fat; nsect = sz_fat; /* Start of FAT and number of FAT sectors */ + j = nb = cl = 0; + do { + mem_set(buf, 0, szb_buf); i = 0; /* Clear work area and reset write index */ + if (cl == 0) { /* Set entry 0 and 1 */ + st_dword(buf + i, 0xFFFFFFF8); i += 4; cl++; + st_dword(buf + i, 0xFFFFFFFF); i += 4; cl++; + } + do { /* Create chains of bitmap, up-case and root dir */ + while (nb && i < szb_buf) { /* Create a chain */ + st_dword(buf + i, (nb > 1) ? cl + 1 : 0xFFFFFFFF); + i += 4; cl++; nb--; + } + if (!nb && j < 3) nb = tbl[j++]; /* Next chain */ + } while (nb && i < szb_buf); + n = (nsect > sz_buf) ? sz_buf : nsect; /* Write the buffered data */ + if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; + sect += n; nsect -= n; + } while (nsect); + + /* Initialize the root directory */ + mem_set(buf, 0, szb_buf); + buf[SZDIRE * 0 + 0] = 0x83; /* 83 entry (volume label) */ + buf[SZDIRE * 1 + 0] = 0x81; /* 81 entry (allocation bitmap) */ + st_dword(buf + SZDIRE * 1 + 20, 2); + st_dword(buf + SZDIRE * 1 + 24, szb_bit); + buf[SZDIRE * 2 + 0] = 0x82; /* 82 entry (up-case table) */ + st_dword(buf + SZDIRE * 2 + 4, sum); + st_dword(buf + SZDIRE * 2 + 20, 2 + tbl[0]); + st_dword(buf + SZDIRE * 2 + 24, szb_case); + sect = b_data + au * (tbl[0] + tbl[1]); nsect = au; /* Start of the root directory and number of sectors */ + do { /* Fill root directory sectors */ + n = (nsect > sz_buf) ? sz_buf : nsect; + if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; + mem_set(buf, 0, ss); + sect += n; nsect -= n; + } while (nsect); + + /* Create two set of the exFAT VBR blocks */ + sect = b_vol; + for (n = 0; n < 2; n++) { + /* Main record (+0) */ + mem_set(buf, 0, ss); + mem_cpy(buf + BS_JmpBoot, "\xEB\x76\x90" "EXFAT ", 11); /* Boot jump code (x86), OEM name */ + st_dword(buf + BPB_VolOfsEx, b_vol); /* Volume offset in the physical drive [sector] */ + st_dword(buf + BPB_TotSecEx, sz_vol); /* Volume size [sector] */ + st_dword(buf + BPB_FatOfsEx, b_fat - b_vol); /* FAT offset [sector] */ + st_dword(buf + BPB_FatSzEx, sz_fat); /* FAT size [sector] */ + st_dword(buf + BPB_DataOfsEx, b_data - b_vol); /* Data offset [sector] */ + st_dword(buf + BPB_NumClusEx, n_clst); /* Number of clusters */ + st_dword(buf + BPB_RootClusEx, 2 + tbl[0] + tbl[1]); /* Root dir cluster # */ + st_dword(buf + BPB_VolIDEx, GET_FATTIME()); /* VSN */ + st_word(buf + BPB_FSVerEx, 0x100); /* File system version (1.00) */ + for (buf[BPB_BytsPerSecEx] = 0, i = ss; i >>= 1; buf[BPB_BytsPerSecEx]++) ; /* Log2 of sector size [byte] */ + for (buf[BPB_SecPerClusEx] = 0, i = au; i >>= 1; buf[BPB_SecPerClusEx]++) ; /* Log2 of cluster size [sector] */ + buf[BPB_NumFATsEx] = 1; /* Number of FATs */ + buf[BPB_DrvNumEx] = 0x80; /* Drive number (for int13) */ + st_word(buf + BS_BootCodeEx, 0xFEEB); /* Boot code (x86) */ + st_word(buf + BS_55AA, 0xAA55); /* Signature (placed here regardless of sector size) */ + for (i = sum = 0; i < ss; i++) { /* VBR checksum */ + if (i != BPB_VolFlagEx && i != BPB_VolFlagEx + 1 && i != BPB_PercInUseEx) sum = xsum32(buf[i], sum); + } + if (disk_write(pdrv, buf, sect++, 1) != RES_OK) return FR_DISK_ERR; + /* Extended bootstrap record (+1..+8) */ + mem_set(buf, 0, ss); + st_word(buf + ss - 2, 0xAA55); /* Signature (placed at end of sector) */ + for (j = 1; j < 9; j++) { + for (i = 0; i < ss; sum = xsum32(buf[i++], sum)) ; /* VBR checksum */ + if (disk_write(pdrv, buf, sect++, 1) != RES_OK) return FR_DISK_ERR; + } + /* OEM/Reserved record (+9..+10) */ + mem_set(buf, 0, ss); + for ( ; j < 11; j++) { + for (i = 0; i < ss; sum = xsum32(buf[i++], sum)) ; /* VBR checksum */ + if (disk_write(pdrv, buf, sect++, 1) != RES_OK) return FR_DISK_ERR; + } + /* Sum record (+11) */ + for (i = 0; i < ss; i += 4) st_dword(buf + i, sum); /* Fill with checksum value */ + if (disk_write(pdrv, buf, sect++, 1) != RES_OK) return FR_DISK_ERR; + } + + } else +#endif /* _FS_EXFAT */ + { /* Create an FAT12/16/32 volume */ + do { + pau = au; + /* Pre-determine number of clusters and FAT sub-type */ + if (fmt == FS_FAT32) { /* FAT32 volume */ + if (!pau) { /* au auto-selection */ + n = sz_vol / 0x20000; /* Volume size in unit of 128KS */ + for (i = 0, pau = 1; cst32[i] && cst32[i] <= n; i++, pau <<= 1) ; /* Get from table */ + } + n_clst = sz_vol / pau; /* Number of clusters */ + sz_fat = (n_clst * 4 + 8 + ss - 1) / ss; /* FAT size [sector] */ + sz_rsv = 32; /* Number of reserved sectors */ + sz_dir = 0; /* No static directory */ + if (n_clst <= MAX_FAT16 || n_clst > MAX_FAT32) return FR_MKFS_ABORTED; + } else { /* FAT12/16 volume */ + if (!pau) { /* au auto-selection */ + n = sz_vol / 0x1000; /* Volume size in unit of 4KS */ + for (i = 0, pau = 1; cst[i] && cst[i] <= n; i++, pau <<= 1) ; /* Get from table */ + } + n_clst = sz_vol / pau; + if (n_clst > MAX_FAT12) { + n = n_clst * 2 + 4; /* FAT size [byte] */ + } else { + fmt = FS_FAT12; + n = (n_clst * 3 + 1) / 2 + 3; /* FAT size [byte] */ + } + sz_fat = (n + ss - 1) / ss; /* FAT size [sector] */ + sz_rsv = 1; /* Number of reserved sectors */ + sz_dir = (DWORD)n_rootdir * SZDIRE / ss; /* Rootdir size [sector] */ + } + b_fat = b_vol + sz_rsv; /* FAT base */ + b_data = b_fat + sz_fat * n_fats + sz_dir; /* Data base */ + + /* Align data base to erase block boundary (for flash memory media) */ + n = ((b_data + sz_blk - 1) & ~(sz_blk - 1)) - b_data; /* Next nearest erase block from current data base */ + if (fmt == FS_FAT32) { /* FAT32: Move FAT base */ + sz_rsv += n; b_fat += n; + } else { /* FAT12/16: Expand FAT size */ + sz_fat += n / n_fats; + } + + /* Determine number of clusters and final check of validity of the FAT sub-type */ + if (sz_vol < b_data + pau * 16 - b_vol) return FR_MKFS_ABORTED; /* Too small volume */ + n_clst = (sz_vol - sz_rsv - sz_fat * n_fats - sz_dir) / pau; + if (fmt == FS_FAT32) { + if (n_clst <= MAX_FAT16) { /* Too few clusters for FAT32 */ + if (!au && (au = pau / 2) != 0) continue; /* Adjust cluster size and retry */ + return FR_MKFS_ABORTED; + } + } + if (fmt == FS_FAT16) { + if (n_clst > MAX_FAT16) { /* Too many clusters for FAT16 */ + if (!au && (pau * 2) <= 64) { + au = pau * 2; continue; /* Adjust cluster size and retry */ + } + if ((opt & FM_FAT32)) { + fmt = FS_FAT32; continue; /* Switch type to FAT32 and retry */ + } + if (!au && (au = pau * 2) <= 128) continue; /* Adjust cluster size and retry */ + return FR_MKFS_ABORTED; + } + if (n_clst <= MAX_FAT12) { /* Too few clusters for FAT16 */ + if (!au && (au = pau * 2) <= 128) continue; /* Adjust cluster size and retry */ + return FR_MKFS_ABORTED; + } + } + if (fmt == FS_FAT12 && n_clst > MAX_FAT12) return FR_MKFS_ABORTED; /* Too many clusters for FAT12 */ + + /* Ok, it is the valid cluster configuration */ + break; + } while (1); + +#if _USE_TRIM + tbl[0] = b_vol; tbl[1] = b_vol + sz_vol - 1; /* Inform the device the volume area can be erased */ + disk_ioctl(pdrv, CTRL_TRIM, tbl); +#endif + /* Create FAT VBR */ + mem_set(buf, 0, ss); + mem_cpy(buf + BS_JmpBoot, "\xEB\xFE\x90" "MSDOS5.0", 11);/* Boot jump code (x86), OEM name */ + st_word(buf + BPB_BytsPerSec, ss); /* Sector size [byte] */ + buf[BPB_SecPerClus] = (BYTE)pau; /* Cluster size [sector] */ + st_word(buf + BPB_RsvdSecCnt, (WORD)sz_rsv); /* Size of reserved area */ + buf[BPB_NumFATs] = (BYTE)n_fats; /* Number of FATs */ + st_word(buf + BPB_RootEntCnt, (WORD)((fmt == FS_FAT32) ? 0 : n_rootdir)); /* Number of root directory entries */ + if (sz_vol < 0x10000) { + st_word(buf + BPB_TotSec16, (WORD)sz_vol); /* Volume size in 16-bit LBA */ + } else { + st_dword(buf + BPB_TotSec32, sz_vol); /* Volume size in 32-bit LBA */ + } + buf[BPB_Media] = 0xF8; /* Media descriptor byte */ + st_word(buf + BPB_SecPerTrk, 63); /* Number of sectors per track (for int13) */ + st_word(buf + BPB_NumHeads, 255); /* Number of heads (for int13) */ + st_dword(buf + BPB_HiddSec, b_vol); /* Volume offset in the physical drive [sector] */ + if (fmt == FS_FAT32) { + st_dword(buf + BS_VolID32, GET_FATTIME()); /* VSN */ + st_dword(buf + BPB_FATSz32, sz_fat); /* FAT size [sector] */ + st_dword(buf + BPB_RootClus32, 2); /* Root directory cluster # (2) */ + st_word(buf + BPB_FSInfo32, 1); /* Offset of FSINFO sector (VBR + 1) */ + st_word(buf + BPB_BkBootSec32, 6); /* Offset of backup VBR (VBR + 6) */ + buf[BS_DrvNum32] = 0x80; /* Drive number (for int13) */ + buf[BS_BootSig32] = 0x29; /* Extended boot signature */ + mem_cpy(buf + BS_VolLab32, "NO NAME " "FAT32 ", 19); /* Volume label, FAT signature */ + } else { + st_dword(buf + BS_VolID, GET_FATTIME()); /* VSN */ + st_word(buf + BPB_FATSz16, (WORD)sz_fat); /* FAT size [sector] */ + buf[BS_DrvNum] = 0x80; /* Drive number (for int13) */ + buf[BS_BootSig] = 0x29; /* Extended boot signature */ + mem_cpy(buf + BS_VolLab, "NO NAME " "FAT ", 19); /* Volume label, FAT signature */ + } + st_word(buf + BS_55AA, 0xAA55); /* Signature (offset is fixed here regardless of sector size) */ + if (disk_write(pdrv, buf, b_vol, 1) != RES_OK) return FR_DISK_ERR; /* Write it to the VBR sector */ + + /* Create FSINFO record if needed */ + if (fmt == FS_FAT32) { + disk_write(pdrv, buf, b_vol + 6, 1); /* Write backup VBR (VBR + 6) */ + mem_set(buf, 0, ss); + st_dword(buf + FSI_LeadSig, 0x41615252); + st_dword(buf + FSI_StrucSig, 0x61417272); + st_dword(buf + FSI_Free_Count, n_clst - 1); /* Number of free clusters */ + st_dword(buf + FSI_Nxt_Free, 2); /* Last allocated cluster# */ + st_word(buf + BS_55AA, 0xAA55); + disk_write(pdrv, buf, b_vol + 7, 1); /* Write backup FSINFO (VBR + 7) */ + disk_write(pdrv, buf, b_vol + 1, 1); /* Write original FSINFO (VBR + 1) */ + } + + /* Initialize FAT area */ + mem_set(buf, 0, (UINT)szb_buf); + sect = b_fat; /* FAT start sector */ + for (i = 0; i < n_fats; i++) { /* Initialize FATs each */ + if (fmt == FS_FAT32) { + st_dword(buf + 0, 0xFFFFFFF8); /* Entry 0 */ + st_dword(buf + 4, 0xFFFFFFFF); /* Entry 1 */ + st_dword(buf + 8, 0x0FFFFFFF); /* Entry 2 (root directory) */ + } else { + st_dword(buf + 0, (fmt == FS_FAT12) ? 0xFFFFF8 : 0xFFFFFFF8); /* Entry 0 and 1 */ + } + nsect = sz_fat; /* Number of FAT sectors */ + do { /* Fill FAT sectors */ + n = (nsect > sz_buf) ? sz_buf : nsect; + if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) return FR_DISK_ERR; + mem_set(buf, 0, ss); + sect += n; nsect -= n; + } while (nsect); + } + + /* Initialize root directory (fill with zero) */ + nsect = (fmt == FS_FAT32) ? pau : sz_dir; /* Number of root directory sectors */ + do { + n = (nsect > sz_buf) ? sz_buf : nsect; + if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) return FR_DISK_ERR; + sect += n; nsect -= n; + } while (nsect); + } + + /* Determine system ID in the partition table */ + if (_FS_EXFAT && fmt == FS_EXFAT) { + sys = 0x07; /* HPFS/NTFS/exFAT */ + } else { + if (fmt == FS_FAT32) { + sys = 0x0C; /* FAT32X */ + } else { + if (sz_vol >= 0x10000) { + sys = 0x06; /* FAT12/16 (>=64KS) */ + } else { + sys = (fmt == FS_FAT16) ? 0x04 : 0x01; /* FAT16 (<64KS) : FAT12 (<64KS) */ + } + } + } + + /* Update partition information */ + if (_MULTI_PARTITION && part != 0) { /* Created in the existing partition */ + /* Update system ID in the partition table */ + if (disk_read(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Read the MBR */ + buf[MBR_Table + (part - 1) * SZ_PTE + PTE_System] = sys; /* Set system ID */ + if (disk_write(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Write it back to the MBR */ + } else { /* Created as a new single partition */ + if (!(opt & FM_SFD)) { /* Create partition table if in FDISK format */ + mem_set(buf, 0, ss); + st_word(buf + BS_55AA, 0xAA55); /* MBR signature */ + pte = buf + MBR_Table; /* Create partition table for single partition in the drive */ + pte[PTE_Boot] = 0; /* Boot indicator */ + pte[PTE_StHead] = 1; /* Start head */ + pte[PTE_StSec] = 1; /* Start sector */ + pte[PTE_StCyl] = 0; /* Start cylinder */ + pte[PTE_System] = sys; /* System type */ + n = (b_vol + sz_vol) / (63 * 255); /* (End CHS may be invalid) */ + pte[PTE_EdHead] = 254; /* End head */ + pte[PTE_EdSec] = (BYTE)(n >> 2 | 63); /* End sector */ + pte[PTE_EdCyl] = (BYTE)n; /* End cylinder */ + st_dword(pte + PTE_StLba, b_vol); /* Start offset in LBA */ + st_dword(pte + PTE_SizLba, sz_vol); /* Size in sectors */ + if (disk_write(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Write it to the MBR */ + } + } + + if (disk_ioctl(pdrv, CTRL_SYNC, 0) != RES_OK) return FR_DISK_ERR; + + return FR_OK; +} + + + +#if _MULTI_PARTITION +/*-----------------------------------------------------------------------*/ +/* Create partition table on the physical drive */ +/*-----------------------------------------------------------------------*/ + +FRESULT f_fdisk ( + BYTE pdrv, /* Physical drive number */ + const DWORD* szt, /* Pointer to the size table for each partitions */ + void* work /* Pointer to the working buffer */ +) +{ + UINT i, n, sz_cyl, tot_cyl, b_cyl, e_cyl, p_cyl; + BYTE s_hd, e_hd, *p, *buf = (BYTE*)work; + DSTATUS stat; + DWORD sz_disk, sz_part, s_part; + + + stat = disk_initialize(pdrv); + if (stat & STA_NOINIT) return FR_NOT_READY; + if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; + if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_disk)) return FR_DISK_ERR; + + /* Determine the CHS without any consideration of the drive geometry */ + for (n = 16; n < 256 && sz_disk / n / 63 > 1024; n *= 2) ; + if (n == 256) n--; + e_hd = n - 1; + sz_cyl = 63 * n; + tot_cyl = sz_disk / sz_cyl; + + /* Create partition table */ + mem_set(buf, 0, _MAX_SS); + p = buf + MBR_Table; b_cyl = 0; + for (i = 0; i < 4; i++, p += SZ_PTE) { + p_cyl = (szt[i] <= 100U) ? (DWORD)tot_cyl * szt[i] / 100 : szt[i] / sz_cyl; /* Number of cylinders */ + if (!p_cyl) continue; + s_part = (DWORD)sz_cyl * b_cyl; + sz_part = (DWORD)sz_cyl * p_cyl; + if (i == 0) { /* Exclude first track of cylinder 0 */ + s_hd = 1; + s_part += 63; sz_part -= 63; + } else { + s_hd = 0; + } + e_cyl = b_cyl + p_cyl - 1; /* End cylinder */ + if (e_cyl >= tot_cyl) return FR_INVALID_PARAMETER; + + /* Set partition table */ + p[1] = s_hd; /* Start head */ + p[2] = (BYTE)((b_cyl >> 2) + 1); /* Start sector */ + p[3] = (BYTE)b_cyl; /* Start cylinder */ + p[4] = 0x07; /* System type (temporary setting) */ + p[5] = e_hd; /* End head */ + p[6] = (BYTE)((e_cyl >> 2) + 63); /* End sector */ + p[7] = (BYTE)e_cyl; /* End cylinder */ + st_dword(p + 8, s_part); /* Start sector in LBA */ + st_dword(p + 12, sz_part); /* Number of sectors */ + + /* Next partition */ + b_cyl += p_cyl; + } + st_word(p, 0xAA55); + + /* Write it to the MBR */ + return (disk_write(pdrv, buf, 0, 1) != RES_OK || disk_ioctl(pdrv, CTRL_SYNC, 0) != RES_OK) ? FR_DISK_ERR : FR_OK; +} + +#endif /* _MULTI_PARTITION */ +#endif /* _USE_MKFS && !_FS_READONLY */ + + + + +#if _USE_STRFUNC +/*-----------------------------------------------------------------------*/ +/* Get a string from the file */ +/*-----------------------------------------------------------------------*/ + +TCHAR* f_gets ( + TCHAR* buff, /* Pointer to the string buffer to read */ + int len, /* Size of string buffer (characters) */ + FIL* fp /* Pointer to the file object */ +) +{ + int n = 0; + TCHAR c, *p = buff; + BYTE s[2]; + UINT rc; + + + while (n < len - 1) { /* Read characters until buffer gets filled */ +#if _LFN_UNICODE +#if _STRF_ENCODE == 3 /* Read a character in UTF-8 */ + f_read(fp, s, 1, &rc); + if (rc != 1) break; + c = s[0]; + if (c >= 0x80) { + if (c < 0xC0) continue; /* Skip stray trailer */ + if (c < 0xE0) { /* Two-byte sequence (0x80-0x7FF) */ + f_read(fp, s, 1, &rc); + if (rc != 1) break; + c = (c & 0x1F) << 6 | (s[0] & 0x3F); + if (c < 0x80) c = '?'; /* Reject invalid code range */ + } else { + if (c < 0xF0) { /* Three-byte sequence (0x800-0xFFFF) */ + f_read(fp, s, 2, &rc); + if (rc != 2) break; + c = c << 12 | (s[0] & 0x3F) << 6 | (s[1] & 0x3F); + if (c < 0x800) c = '?'; /* Reject invalid code range */ + } else { /* Reject four-byte sequence */ + c = '?'; + } + } + } +#elif _STRF_ENCODE == 2 /* Read a character in UTF-16BE */ + f_read(fp, s, 2, &rc); + if (rc != 2) break; + c = s[1] + (s[0] << 8); +#elif _STRF_ENCODE == 1 /* Read a character in UTF-16LE */ + f_read(fp, s, 2, &rc); + if (rc != 2) break; + c = s[0] + (s[1] << 8); +#else /* Read a character in ANSI/OEM */ + f_read(fp, s, 1, &rc); + if (rc != 1) break; + c = s[0]; + if (IsDBCS1(c)) { + f_read(fp, s, 1, &rc); + if (rc != 1) break; + c = (c << 8) + s[0]; + } + c = ff_convert(c, 1); /* OEM -> Unicode */ + if (!c) c = '?'; +#endif +#else /* Read a character without conversion */ + f_read(fp, s, 1, &rc); + if (rc != 1) break; + c = s[0]; +#endif + if (_USE_STRFUNC == 2 && c == '\r') continue; /* Strip '\r' */ + *p++ = c; + n++; + if (c == '\n') break; /* Break on EOL */ + } + *p = 0; + return n ? buff : 0; /* When no data read (eof or error), return with error. */ +} + + + + +#if !_FS_READONLY +#include +/*-----------------------------------------------------------------------*/ +/* Put a character to the file */ +/*-----------------------------------------------------------------------*/ + +typedef struct { + FIL *fp; /* Ptr to the writing file */ + int idx, nchr; /* Write index of buf[] (-1:error), number of chars written */ + BYTE buf[64]; /* Write buffer */ +} putbuff; + + +static +void putc_bfd ( /* Buffered write with code conversion */ + putbuff* pb, + TCHAR c +) +{ + UINT bw; + int i; + + + if (_USE_STRFUNC == 2 && c == '\n') { /* LF -> CRLF conversion */ + putc_bfd(pb, '\r'); + } + + i = pb->idx; /* Write index of pb->buf[] */ + if (i < 0) return; + +#if _LFN_UNICODE +#if _STRF_ENCODE == 3 /* Write a character in UTF-8 */ + if (c < 0x80) { /* 7-bit */ + pb->buf[i++] = (BYTE)c; + } else { + if (c < 0x800) { /* 11-bit */ + pb->buf[i++] = (BYTE)(0xC0 | c >> 6); + } else { /* 16-bit */ + pb->buf[i++] = (BYTE)(0xE0 | c >> 12); + pb->buf[i++] = (BYTE)(0x80 | (c >> 6 & 0x3F)); + } + pb->buf[i++] = (BYTE)(0x80 | (c & 0x3F)); + } +#elif _STRF_ENCODE == 2 /* Write a character in UTF-16BE */ + pb->buf[i++] = (BYTE)(c >> 8); + pb->buf[i++] = (BYTE)c; +#elif _STRF_ENCODE == 1 /* Write a character in UTF-16LE */ + pb->buf[i++] = (BYTE)c; + pb->buf[i++] = (BYTE)(c >> 8); +#else /* Write a character in ANSI/OEM */ + c = ff_convert(c, 0); /* Unicode -> OEM */ + if (!c) c = '?'; + if (c >= 0x100) + pb->buf[i++] = (BYTE)(c >> 8); + pb->buf[i++] = (BYTE)c; +#endif +#else /* Write a character without conversion */ + pb->buf[i++] = (BYTE)c; +#endif + + if (i >= (int)(sizeof pb->buf) - 3) { /* Write buffered characters to the file */ + f_write(pb->fp, pb->buf, (UINT)i, &bw); + i = (bw == (UINT)i) ? 0 : -1; + } + pb->idx = i; + pb->nchr++; +} + + +static +int putc_flush ( /* Flush left characters in the buffer */ + putbuff* pb +) +{ + UINT nw; + + if ( pb->idx >= 0 /* Flush buffered characters to the file */ + && f_write(pb->fp, pb->buf, (UINT)pb->idx, &nw) == FR_OK + && (UINT)pb->idx == nw) return pb->nchr; + return EOF; +} + + +static +void putc_init ( /* Initialize write buffer */ + putbuff* pb, + FIL* fp +) +{ + pb->fp = fp; + pb->nchr = pb->idx = 0; +} + + + +int f_putc ( + TCHAR c, /* A character to be output */ + FIL* fp /* Pointer to the file object */ +) +{ + putbuff pb; + + + putc_init(&pb, fp); + putc_bfd(&pb, c); /* Put the character */ + return putc_flush(&pb); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Put a string to the file */ +/*-----------------------------------------------------------------------*/ + +int f_puts ( + const TCHAR* str, /* Pointer to the string to be output */ + FIL* fp /* Pointer to the file object */ +) +{ + putbuff pb; + + + putc_init(&pb, fp); + while (*str) putc_bfd(&pb, *str++); /* Put the string */ + return putc_flush(&pb); +} + + + + +/*-----------------------------------------------------------------------*/ +/* Put a formatted string to the file */ +/*-----------------------------------------------------------------------*/ + +int f_printf ( + FIL* fp, /* Pointer to the file object */ + const TCHAR* fmt, /* Pointer to the format string */ + ... /* Optional arguments... */ +) +{ + va_list arp; + putbuff pb; + BYTE f, r; + UINT i, j, w; + DWORD v; + TCHAR c, d, str[32], *p; + + + putc_init(&pb, fp); + + va_start(arp, fmt); + + for (;;) { + c = *fmt++; + if (c == 0) break; /* End of string */ + if (c != '%') { /* Non escape character */ + putc_bfd(&pb, c); + continue; + } + w = f = 0; + c = *fmt++; + if (c == '0') { /* Flag: '0' padding */ + f = 1; c = *fmt++; + } else { + if (c == '-') { /* Flag: left justified */ + f = 2; c = *fmt++; + } + } + while (IsDigit(c)) { /* Precision */ + w = w * 10 + c - '0'; + c = *fmt++; + } + if (c == 'l' || c == 'L') { /* Prefix: Size is long int */ + f |= 4; c = *fmt++; + } + if (!c) break; + d = c; + if (IsLower(d)) d -= 0x20; + switch (d) { /* Type is... */ + case 'S' : /* String */ + p = va_arg(arp, TCHAR*); + for (j = 0; p[j]; j++) ; + if (!(f & 2)) { + while (j++ < w) putc_bfd(&pb, ' '); + } + while (*p) putc_bfd(&pb, *p++); + while (j++ < w) putc_bfd(&pb, ' '); + continue; + + case 'C' : /* Character */ + putc_bfd(&pb, (TCHAR)va_arg(arp, int)); continue; + + case 'B' : /* Binary */ + r = 2; break; + + case 'O' : /* Octal */ + r = 8; break; + + case 'D' : /* Signed decimal */ + case 'U' : /* Unsigned decimal */ + r = 10; break; + + case 'X' : /* Hexdecimal */ + r = 16; break; + + default: /* Unknown type (pass-through) */ + putc_bfd(&pb, c); continue; + } + + /* Get an argument and put it in numeral */ + v = (f & 4) ? (DWORD)va_arg(arp, long) : ((d == 'D') ? (DWORD)(long)va_arg(arp, int) : (DWORD)va_arg(arp, unsigned int)); + if (d == 'D' && (v & 0x80000000)) { + v = 0 - v; + f |= 8; + } + i = 0; + do { + d = (TCHAR)(v % r); v /= r; + if (d > 9) d += (c == 'x') ? 0x27 : 0x07; + str[i++] = d + '0'; + } while (v && i < sizeof str / sizeof str[0]); + if (f & 8) str[i++] = '-'; + j = i; d = (f & 1) ? '0' : ' '; + while (!(f & 2) && j++ < w) putc_bfd(&pb, d); + do { + putc_bfd(&pb, str[--i]); + } while (i); + while (j++ < w) putc_bfd(&pb, d); + } + + va_end(arp); + + return putc_flush(&pb); +} + +#endif /* !_FS_READONLY */ +#endif /* _USE_STRFUNC */ diff --git a/Middlewares/Third_Party/FatFs/src/ff.h b/Middlewares/Third_Party/FatFs/src/ff.h new file mode 100644 index 0000000..a233e16 --- /dev/null +++ b/Middlewares/Third_Party/FatFs/src/ff.h @@ -0,0 +1,361 @@ +/*----------------------------------------------------------------------------/ +/ FatFs - Generic FAT file system module R0.12c / +/-----------------------------------------------------------------------------/ +/ +/ Copyright (C) 2017, ChaN, all right reserved. +/ +/ FatFs module is an open source software. Redistribution and use of FatFs in +/ source and binary forms, with or without modification, are permitted provided +/ that the following condition is met: + +/ 1. Redistributions of source code must retain the above copyright notice, +/ this condition and the following disclaimer. +/ +/ This software is provided by the copyright holder and contributors "AS IS" +/ and any warranties related to this software are DISCLAIMED. +/ The copyright owner or contributors be NOT LIABLE for any damages caused +/ by use of this software. +/----------------------------------------------------------------------------*/ + + +#ifndef _FATFS +#define _FATFS 68300 /* Revision ID */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "integer.h" /* Basic integer types */ +#include "ffconf.h" /* FatFs configuration options */ + +#if _FATFS != _FFCONF +#error Wrong configuration file (ffconf.h). +#endif + + + +/* Definitions of volume management */ + +#if _MULTI_PARTITION /* Multiple partition configuration */ +typedef struct { + BYTE pd; /* Physical drive number */ + BYTE pt; /* Partition: 0:Auto detect, 1-4:Forced partition) */ +} PARTITION; +extern PARTITION VolToPart[]; /* Volume - Partition resolution table */ +#endif + + + +/* Type of path name strings on FatFs API */ + +#if _LFN_UNICODE /* Unicode (UTF-16) string */ +#if _USE_LFN == 0 +#error _LFN_UNICODE must be 0 at non-LFN cfg. +#endif +#ifndef _INC_TCHAR +typedef WCHAR TCHAR; +#define _T(x) L ## x +#define _TEXT(x) L ## x +#endif +#else /* ANSI/OEM string */ +#ifndef _INC_TCHAR +typedef char TCHAR; +#define _T(x) x +#define _TEXT(x) x +#endif +#endif + + + +/* Type of file size variables */ + +#if _FS_EXFAT +#if _USE_LFN == 0 +#error LFN must be enabled when enable exFAT +#endif +typedef QWORD FSIZE_t; +#else +typedef DWORD FSIZE_t; +#endif + + + +/* File system object structure (FATFS) */ + +typedef struct { + BYTE fs_type; /* File system type (0:N/A) */ + BYTE drv; /* Physical drive number */ + BYTE n_fats; /* Number of FATs (1 or 2) */ + BYTE wflag; /* win[] flag (b0:dirty) */ + BYTE fsi_flag; /* FSINFO flags (b7:disabled, b0:dirty) */ + WORD id; /* File system mount ID */ + WORD n_rootdir; /* Number of root directory entries (FAT12/16) */ + WORD csize; /* Cluster size [sectors] */ +#if _MAX_SS != _MIN_SS + WORD ssize; /* Sector size (512, 1024, 2048 or 4096) */ +#endif +#if _USE_LFN != 0 + WCHAR* lfnbuf; /* LFN working buffer */ +#endif +#if _FS_EXFAT + BYTE* dirbuf; /* Directory entry block scratchpad buffer */ +#endif +#if _FS_REENTRANT + _SYNC_t sobj; /* Identifier of sync object */ +#endif +#if !_FS_READONLY + DWORD last_clst; /* Last allocated cluster */ + DWORD free_clst; /* Number of free clusters */ +#endif +#if _FS_RPATH != 0 + DWORD cdir; /* Current directory start cluster (0:root) */ +#if _FS_EXFAT + DWORD cdc_scl; /* Containing directory start cluster (invalid when cdir is 0) */ + DWORD cdc_size; /* b31-b8:Size of containing directory, b7-b0: Chain status */ + DWORD cdc_ofs; /* Offset in the containing directory (invalid when cdir is 0) */ +#endif +#endif + DWORD n_fatent; /* Number of FAT entries (number of clusters + 2) */ + DWORD fsize; /* Size of an FAT [sectors] */ + DWORD volbase; /* Volume base sector */ + DWORD fatbase; /* FAT base sector */ + DWORD dirbase; /* Root directory base sector/cluster */ + DWORD database; /* Data base sector */ + DWORD winsect; /* Current sector appearing in the win[] */ + BYTE win[_MAX_SS]; /* Disk access window for Directory, FAT (and file data at tiny cfg) */ +} FATFS; + + + +/* Object ID and allocation information (_FDID) */ + +typedef struct { + FATFS* fs; /* Pointer to the owner file system object */ + WORD id; /* Owner file system mount ID */ + BYTE attr; /* Object attribute */ + BYTE stat; /* Object chain status (b1-0: =0:not contiguous, =2:contiguous (no data on FAT), =3:flagmented in this session, b2:sub-directory stretched) */ + DWORD sclust; /* Object start cluster (0:no cluster or root directory) */ + FSIZE_t objsize; /* Object size (valid when sclust != 0) */ +#if _FS_EXFAT + DWORD n_cont; /* Size of first fragment, clusters - 1 (valid when stat == 3) */ + DWORD n_frag; /* Size of last fragment needs to be written (valid when not zero) */ + DWORD c_scl; /* Containing directory start cluster (valid when sclust != 0) */ + DWORD c_size; /* b31-b8:Size of containing directory, b7-b0: Chain status (valid when c_scl != 0) */ + DWORD c_ofs; /* Offset in the containing directory (valid when sclust != 0 and non-directory object) */ +#endif +#if _FS_LOCK != 0 + UINT lockid; /* File lock ID origin from 1 (index of file semaphore table Files[]) */ +#endif +} _FDID; + + + +/* File object structure (FIL) */ + +typedef struct { + _FDID obj; /* Object identifier (must be the 1st member to detect invalid object pointer) */ + BYTE flag; /* File status flags */ + BYTE err; /* Abort flag (error code) */ + FSIZE_t fptr; /* File read/write pointer (Zeroed on file open) */ + DWORD clust; /* Current cluster of fpter (invalid when fptr is 0) */ + DWORD sect; /* Sector number appearing in buf[] (0:invalid) */ +#if !_FS_READONLY + DWORD dir_sect; /* Sector number containing the directory entry */ + BYTE* dir_ptr; /* Pointer to the directory entry in the win[] */ +#endif +#if _USE_FASTSEEK + DWORD* cltbl; /* Pointer to the cluster link map table (nulled on open, set by application) */ +#endif +#if !_FS_TINY + BYTE buf[_MAX_SS]; /* File private data read/write window */ +#endif +} FIL; + + + +/* Directory object structure (DIR) */ + +typedef struct { + _FDID obj; /* Object identifier */ + DWORD dptr; /* Current read/write offset */ + DWORD clust; /* Current cluster */ + DWORD sect; /* Current sector (0:Read operation has terminated) */ + BYTE* dir; /* Pointer to the directory item in the win[] */ + BYTE fn[12]; /* SFN (in/out) {body[8],ext[3],status[1]} */ +#if _USE_LFN != 0 + DWORD blk_ofs; /* Offset of current entry block being processed (0xFFFFFFFF:Invalid) */ +#endif +#if _USE_FIND + const TCHAR* pat; /* Pointer to the name matching pattern */ +#endif +} DIR; + + + +/* File information structure (FILINFO) */ + +typedef struct { + FSIZE_t fsize; /* File size */ + WORD fdate; /* Modified date */ + WORD ftime; /* Modified time */ + BYTE fattrib; /* File attribute */ +#if _USE_LFN != 0 + TCHAR altname[13]; /* Alternative file name */ + TCHAR fname[_MAX_LFN + 1]; /* Primary file name */ +#else + TCHAR fname[13]; /* File name */ +#endif +} FILINFO; + + + +/* File function return code (FRESULT) */ + +typedef enum { + FR_OK = 0, /* (0) Succeeded */ + FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */ + FR_INT_ERR, /* (2) Assertion failed */ + FR_NOT_READY, /* (3) The physical drive cannot work */ + FR_NO_FILE, /* (4) Could not find the file */ + FR_NO_PATH, /* (5) Could not find the path */ + FR_INVALID_NAME, /* (6) The path name format is invalid */ + FR_DENIED, /* (7) Access denied due to prohibited access or directory full */ + FR_EXIST, /* (8) Access denied due to prohibited access */ + FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */ + FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */ + FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */ + FR_NOT_ENABLED, /* (12) The volume has no work area */ + FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */ + FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any problem */ + FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */ + FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy */ + FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */ + FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_LOCK */ + FR_INVALID_PARAMETER /* (19) Given parameter is invalid */ +} FRESULT; + + + +/*--------------------------------------------------------------*/ +/* FatFs module application interface */ + +FRESULT f_open (FIL* fp, const TCHAR* path, BYTE mode); /* Open or create a file */ +FRESULT f_close (FIL* fp); /* Close an open file object */ +FRESULT f_read (FIL* fp, void* buff, UINT btr, UINT* br); /* Read data from the file */ +FRESULT f_write (FIL* fp, const void* buff, UINT btw, UINT* bw); /* Write data to the file */ +FRESULT f_lseek (FIL* fp, FSIZE_t ofs); /* Move file pointer of the file object */ +FRESULT f_truncate (FIL* fp); /* Truncate the file */ +FRESULT f_sync (FIL* fp); /* Flush cached data of the writing file */ +FRESULT f_opendir (DIR* dp, const TCHAR* path); /* Open a directory */ +FRESULT f_closedir (DIR* dp); /* Close an open directory */ +FRESULT f_readdir (DIR* dp, FILINFO* fno); /* Read a directory item */ +FRESULT f_findfirst (DIR* dp, FILINFO* fno, const TCHAR* path, const TCHAR* pattern); /* Find first file */ +FRESULT f_findnext (DIR* dp, FILINFO* fno); /* Find next file */ +FRESULT f_mkdir (const TCHAR* path); /* Create a sub directory */ +FRESULT f_unlink (const TCHAR* path); /* Delete an existing file or directory */ +FRESULT f_rename (const TCHAR* path_old, const TCHAR* path_new); /* Rename/Move a file or directory */ +FRESULT f_stat (const TCHAR* path, FILINFO* fno); /* Get file status */ +FRESULT f_chmod (const TCHAR* path, BYTE attr, BYTE mask); /* Change attribute of a file/dir */ +FRESULT f_utime (const TCHAR* path, const FILINFO* fno); /* Change timestamp of a file/dir */ +FRESULT f_chdir (const TCHAR* path); /* Change current directory */ +FRESULT f_chdrive (const TCHAR* path); /* Change current drive */ +FRESULT f_getcwd (TCHAR* buff, UINT len); /* Get current directory */ +FRESULT f_getfree (const TCHAR* path, DWORD* nclst, FATFS** fatfs); /* Get number of free clusters on the drive */ +FRESULT f_getlabel (const TCHAR* path, TCHAR* label, DWORD* vsn); /* Get volume label */ +FRESULT f_setlabel (const TCHAR* label); /* Set volume label */ +FRESULT f_forward (FIL* fp, UINT(*func)(const BYTE*,UINT), UINT btf, UINT* bf); /* Forward data to the stream */ +FRESULT f_expand (FIL* fp, FSIZE_t szf, BYTE opt); /* Allocate a contiguous block to the file */ +FRESULT f_mount (FATFS* fs, const TCHAR* path, BYTE opt); /* Mount/Unmount a logical drive */ +FRESULT f_mkfs (const TCHAR* path, BYTE opt, DWORD au, void* work, UINT len); /* Create a FAT volume */ +FRESULT f_fdisk (BYTE pdrv, const DWORD* szt, void* work); /* Divide a physical drive into some partitions */ +int f_putc (TCHAR c, FIL* fp); /* Put a character to the file */ +int f_puts (const TCHAR* str, FIL* cp); /* Put a string to the file */ +int f_printf (FIL* fp, const TCHAR* str, ...); /* Put a formatted string to the file */ +TCHAR* f_gets (TCHAR* buff, int len, FIL* fp); /* Get a string from the file */ + +#define f_eof(fp) ((int)((fp)->fptr == (fp)->obj.objsize)) +#define f_error(fp) ((fp)->err) +#define f_tell(fp) ((fp)->fptr) +#define f_size(fp) ((fp)->obj.objsize) +#define f_rewind(fp) f_lseek((fp), 0) +#define f_rewinddir(dp) f_readdir((dp), 0) +#define f_rmdir(path) f_unlink(path) + +#ifndef EOF +#define EOF (-1) +#endif + + + + +/*--------------------------------------------------------------*/ +/* Additional user defined functions */ + +/* RTC function */ +#if !_FS_READONLY && !_FS_NORTC +DWORD get_fattime (void); +#endif + +/* Unicode support functions */ +#if _USE_LFN != 0 /* Unicode - OEM code conversion */ +WCHAR ff_convert (WCHAR chr, UINT dir); /* OEM-Unicode bidirectional conversion */ +WCHAR ff_wtoupper (WCHAR chr); /* Unicode upper-case conversion */ +#if _USE_LFN == 3 /* Memory functions */ +void* ff_memalloc (UINT msize); /* Allocate memory block */ +void ff_memfree (void* mblock); /* Free memory block */ +#endif +#endif + +/* Sync functions */ +#if _FS_REENTRANT +int ff_cre_syncobj (BYTE vol, _SYNC_t* sobj); /* Create a sync object */ +int ff_req_grant (_SYNC_t sobj); /* Lock sync object */ +void ff_rel_grant (_SYNC_t sobj); /* Unlock sync object */ +int ff_del_syncobj (_SYNC_t sobj); /* Delete a sync object */ +#endif + + + + +/*--------------------------------------------------------------*/ +/* Flags and offset address */ + + +/* File access mode and open method flags (3rd argument of f_open) */ +#define FA_READ 0x01 +#define FA_WRITE 0x02 +#define FA_OPEN_EXISTING 0x00 +#define FA_CREATE_NEW 0x04 +#define FA_CREATE_ALWAYS 0x08 +#define FA_OPEN_ALWAYS 0x10 +#define FA_OPEN_APPEND 0x30 + +/* Fast seek controls (2nd argument of f_lseek) */ +#define CREATE_LINKMAP ((FSIZE_t)0 - 1) + +/* Format options (2nd argument of f_mkfs) */ +#define FM_FAT 0x01 +#define FM_FAT32 0x02 +#define FM_EXFAT 0x04 +#define FM_ANY 0x07 +#define FM_SFD 0x08 + +/* Filesystem type (FATFS.fs_type) */ +#define FS_FAT12 1 +#define FS_FAT16 2 +#define FS_FAT32 3 +#define FS_EXFAT 4 + +/* File attribute bits for directory entry (FILINFO.fattrib) */ +#define AM_RDO 0x01 /* Read only */ +#define AM_HID 0x02 /* Hidden */ +#define AM_SYS 0x04 /* System */ +#define AM_DIR 0x10 /* Directory */ +#define AM_ARC 0x20 /* Archive */ + + +#ifdef __cplusplus +} +#endif + +#endif /* _FATFS */ diff --git a/Middlewares/Third_Party/FatFs/src/ff_gen_drv.c b/Middlewares/Third_Party/FatFs/src/ff_gen_drv.c new file mode 100644 index 0000000..1036ef4 --- /dev/null +++ b/Middlewares/Third_Party/FatFs/src/ff_gen_drv.c @@ -0,0 +1,122 @@ +/** + ****************************************************************************** + * @file ff_gen_drv.c + * @author MCD Application Team + * @brief FatFs generic low level driver. + ***************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** +**/ +/* Includes ------------------------------------------------------------------*/ +#include "ff_gen_drv.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +Disk_drvTypeDef disk = {{0},{0},{0},0}; + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** + * @brief Links a compatible diskio driver/lun id and increments the number of active + * linked drivers. + * @note The number of linked drivers (volumes) is up to 10 due to FatFs limits. + * @param drv: pointer to the disk IO Driver structure + * @param path: pointer to the logical drive path + * @param lun : only used for USB Key Disk to add multi-lun management + else the parameter must be equal to 0 + * @retval Returns 0 in case of success, otherwise 1. + */ +uint8_t FATFS_LinkDriverEx(const Diskio_drvTypeDef *drv, char *path, uint8_t lun) +{ + uint8_t ret = 1; + uint8_t DiskNum = 0; + + if(disk.nbr < _VOLUMES) + { + disk.is_initialized[disk.nbr] = 0; + disk.drv[disk.nbr] = drv; + disk.lun[disk.nbr] = lun; + DiskNum = disk.nbr++; + path[0] = DiskNum + '0'; + path[1] = ':'; + path[2] = '/'; + path[3] = 0; + ret = 0; + } + + return ret; +} + +/** + * @brief Links a compatible diskio driver and increments the number of active + * linked drivers. + * @note The number of linked drivers (volumes) is up to 10 due to FatFs limits + * @param drv: pointer to the disk IO Driver structure + * @param path: pointer to the logical drive path + * @retval Returns 0 in case of success, otherwise 1. + */ +uint8_t FATFS_LinkDriver(const Diskio_drvTypeDef *drv, char *path) +{ + return FATFS_LinkDriverEx(drv, path, 0); +} + +/** + * @brief Unlinks a diskio driver and decrements the number of active linked + * drivers. + * @param path: pointer to the logical drive path + * @param lun : not used + * @retval Returns 0 in case of success, otherwise 1. + */ +uint8_t FATFS_UnLinkDriverEx(char *path, uint8_t lun) +{ + uint8_t DiskNum = 0; + uint8_t ret = 1; + + if(disk.nbr >= 1) + { + DiskNum = path[0] - '0'; + if(disk.drv[DiskNum] != 0) + { + disk.drv[DiskNum] = 0; + disk.lun[DiskNum] = 0; + disk.nbr--; + ret = 0; + } + } + + return ret; +} + +/** + * @brief Unlinks a diskio driver and decrements the number of active linked + * drivers. + * @param path: pointer to the logical drive path + * @retval Returns 0 in case of success, otherwise 1. + */ +uint8_t FATFS_UnLinkDriver(char *path) +{ + return FATFS_UnLinkDriverEx(path, 0); +} + +/** + * @brief Gets number of linked drivers to the FatFs module. + * @param None + * @retval Number of attached drivers. + */ +uint8_t FATFS_GetAttachedDriversNbr(void) +{ + return disk.nbr; +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/Middlewares/Third_Party/FatFs/src/ff_gen_drv.h b/Middlewares/Third_Party/FatFs/src/ff_gen_drv.h new file mode 100644 index 0000000..65d879c --- /dev/null +++ b/Middlewares/Third_Party/FatFs/src/ff_gen_drv.h @@ -0,0 +1,80 @@ +/** + ****************************************************************************** + * @file ff_gen_drv.h + * @author MCD Application Team + * @brief Header for ff_gen_drv.c module. + ***************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** +**/ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __FF_GEN_DRV_H +#define __FF_GEN_DRV_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "diskio.h" +#include "ff.h" +#include "stdint.h" + + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief Disk IO Driver structure definition + */ +typedef struct +{ + DSTATUS (*disk_initialize) (BYTE); /*!< Initialize Disk Drive */ + DSTATUS (*disk_status) (BYTE); /*!< Get Disk Status */ + DRESULT (*disk_read) (BYTE, BYTE*, DWORD, UINT); /*!< Read Sector(s) */ +#if _USE_WRITE == 1 + DRESULT (*disk_write) (BYTE, const BYTE*, DWORD, UINT); /*!< Write Sector(s) when _USE_WRITE = 0 */ +#endif /* _USE_WRITE == 1 */ +#if _USE_IOCTL == 1 + DRESULT (*disk_ioctl) (BYTE, BYTE, void*); /*!< I/O control operation when _USE_IOCTL = 1 */ +#endif /* _USE_IOCTL == 1 */ + +}Diskio_drvTypeDef; + +/** + * @brief Global Disk IO Drivers structure definition + */ +typedef struct +{ + uint8_t is_initialized[_VOLUMES]; + const Diskio_drvTypeDef *drv[_VOLUMES]; + uint8_t lun[_VOLUMES]; + volatile uint8_t nbr; + +}Disk_drvTypeDef; + +/* Exported constants --------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +uint8_t FATFS_LinkDriver(const Diskio_drvTypeDef *drv, char *path); +uint8_t FATFS_UnLinkDriver(char *path); +uint8_t FATFS_LinkDriverEx(const Diskio_drvTypeDef *drv, char *path, BYTE lun); +uint8_t FATFS_UnLinkDriverEx(char *path, BYTE lun); +uint8_t FATFS_GetAttachedDriversNbr(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __FF_GEN_DRV_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/Middlewares/Third_Party/FatFs/src/integer.h b/Middlewares/Third_Party/FatFs/src/integer.h new file mode 100644 index 0000000..d8e911c --- /dev/null +++ b/Middlewares/Third_Party/FatFs/src/integer.h @@ -0,0 +1,38 @@ +/*-------------------------------------------*/ +/* Integer type definitions for FatFs module */ +/*-------------------------------------------*/ + +#ifndef _FF_INTEGER +#define _FF_INTEGER + +#ifdef _WIN32 /* FatFs development platform */ + +#include +#include +typedef unsigned __int64 QWORD; + + +#else /* Embedded platform */ + +/* These types MUST be 16-bit or 32-bit */ +typedef int INT; +typedef unsigned int UINT; + +/* This type MUST be 8-bit */ +typedef unsigned char BYTE; + +/* These types MUST be 16-bit */ +typedef short SHORT; +typedef unsigned short WORD; +typedef unsigned short WCHAR; + +/* These types MUST be 32-bit */ +typedef long LONG; +typedef unsigned long DWORD; + +/* This type MUST be 64-bit (Remove this for ANSI C (C89) compatibility) */ +typedef unsigned long long QWORD; + +#endif + +#endif diff --git a/Middlewares/Third_Party/FatFs/src/option/syscall.c b/Middlewares/Third_Party/FatFs/src/option/syscall.c new file mode 100644 index 0000000..327d941 --- /dev/null +++ b/Middlewares/Third_Party/FatFs/src/option/syscall.c @@ -0,0 +1,177 @@ +/*------------------------------------------------------------------------*/ +/* Sample code of OS dependent controls for FatFs */ +/* (C)ChaN, 2014 */ +/* Portions COPYRIGHT 2017 STMicroelectronics */ +/* Portions Copyright (C) 2014, ChaN, all right reserved */ +/*------------------------------------------------------------------------*/ + +/** + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. All rights reserved. + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** +**/ + + + +#include "../ff.h" + + +#if _FS_REENTRANT +/*------------------------------------------------------------------------*/ +/* Create a Synchronization Object */ +/*------------------------------------------------------------------------*/ +/* This function is called in f_mount() function to create a new +/ synchronization object, such as semaphore and mutex. When a 0 is returned, +/ the f_mount() function fails with FR_INT_ERR. +*/ + +int ff_cre_syncobj ( /* 1:Function succeeded, 0:Could not create the sync object */ + BYTE vol, /* Corresponding volume (logical drive number) */ + _SYNC_t *sobj /* Pointer to return the created sync object */ +) +{ + + int ret; +#if _USE_MUTEX + +#if (osCMSIS < 0x20000U) + osMutexDef(MTX); + *sobj = osMutexCreate(osMutex(MTX)); +#else + *sobj = osMutexNew(NULL); +#endif + +#else + +#if (osCMSIS < 0x20000U) + osSemaphoreDef(SEM); + *sobj = osSemaphoreCreate(osSemaphore(SEM), 1); +#else + *sobj = osSemaphoreNew(1, 1, NULL); +#endif + +#endif + ret = (*sobj != NULL); + + return ret; +} + + + +/*------------------------------------------------------------------------*/ +/* Delete a Synchronization Object */ +/*------------------------------------------------------------------------*/ +/* This function is called in f_mount() function to delete a synchronization +/ object that created with ff_cre_syncobj() function. When a 0 is returned, +/ the f_mount() function fails with FR_INT_ERR. +*/ + +int ff_del_syncobj ( /* 1:Function succeeded, 0:Could not delete due to any error */ + _SYNC_t sobj /* Sync object tied to the logical drive to be deleted */ +) +{ +#if _USE_MUTEX + osMutexDelete (sobj); +#else + osSemaphoreDelete (sobj); +#endif + return 1; +} + + + +/*------------------------------------------------------------------------*/ +/* Request Grant to Access the Volume */ +/*------------------------------------------------------------------------*/ +/* This function is called on entering file functions to lock the volume. +/ When a 0 is returned, the file function fails with FR_TIMEOUT. +*/ + +int ff_req_grant ( /* 1:Got a grant to access the volume, 0:Could not get a grant */ + _SYNC_t sobj /* Sync object to wait */ +) +{ + int ret = 0; +#if (osCMSIS < 0x20000U) + +#if _USE_MUTEX + if(osMutexWait(sobj, _FS_TIMEOUT) == osOK) +#else + if(osSemaphoreWait(sobj, _FS_TIMEOUT) == osOK) +#endif + +#else + +#if _USE_MUTEX + if(osMutexAcquire(sobj, _FS_TIMEOUT) == osOK) +#else + if(osSemaphoreAcquire(sobj, _FS_TIMEOUT) == osOK) +#endif + +#endif + { + ret = 1; + } + + return ret; +} + + + +/*------------------------------------------------------------------------*/ +/* Release Grant to Access the Volume */ +/*------------------------------------------------------------------------*/ +/* This function is called on leaving file functions to unlock the volume. +*/ + +void ff_rel_grant ( + _SYNC_t sobj /* Sync object to be signaled */ +) +{ +#if _USE_MUTEX + osMutexRelease(sobj); +#else + osSemaphoreRelease(sobj); +#endif +} + +#endif + + + + +#if _USE_LFN == 3 /* LFN with a working buffer on the heap */ +/*------------------------------------------------------------------------*/ +/* Allocate a memory block */ +/*------------------------------------------------------------------------*/ +/* If a NULL is returned, the file function fails with FR_NOT_ENOUGH_CORE. +*/ + +void* ff_memalloc ( /* Returns pointer to the allocated memory block */ + UINT msize /* Number of bytes to allocate */ +) +{ + return ff_malloc(msize); /* Allocate a new memory block with POSIX API */ +} + + +/*------------------------------------------------------------------------*/ +/* Free a memory block */ +/*------------------------------------------------------------------------*/ + +void ff_memfree ( + void* mblock /* Pointer to the memory block to free */ +) +{ + ff_free(mblock); /* Discard the memory block with POSIX API */ +} + +#endif diff --git a/STM32F767ZITx_FLASH.ld b/STM32F767ZITx_FLASH.ld new file mode 100644 index 0000000..27cee92 --- /dev/null +++ b/STM32F767ZITx_FLASH.ld @@ -0,0 +1,188 @@ +/* +****************************************************************************** +** + +** File : LinkerScript.ld +** +** Author : STM32CubeMX +** +** Abstract : Linker script for STM32F767ZITx series +** 2048Kbytes FLASH and 512Kbytes RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** Distribution: The file is distributed “as is,” without any warranty +** of any kind. +** +***************************************************************************** +** @attention +** +**

© COPYRIGHT(c) 2019 STMicroelectronics

+** +** Redistribution and use in source and binary forms, with or without modification, +** are permitted provided that the following conditions are met: +** 1. Redistributions of source code must retain the above copyright notice, +** this list of conditions and the following disclaimer. +** 2. Redistributions in binary form must reproduce the above copyright notice, +** this list of conditions and the following disclaimer in the documentation +** and/or other materials provided with the distribution. +** 3. Neither the name of STMicroelectronics nor the names of its contributors +** may be used to endorse or promote products derived from this software +** without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x2000; /* required amount of heap */ +_Min_Stack_Size = 0x4000; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 512K +FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH + .ARM : { + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + } >FLASH + + .preinit_array : + { + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + } >FLASH + .init_array : + { + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + } >FLASH + .fini_array : + { + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + +} + + diff --git a/Src/File_Handling.c b/Src/File_Handling.c new file mode 100644 index 0000000..1cc0f2a --- /dev/null +++ b/Src/File_Handling.c @@ -0,0 +1,709 @@ +/* + * File_Handling_RTOS.c + * + * Created on: 14-May-2020 + * Author: Controllerstech + */ + +#include +#include "stm32f7xx_hal.h" + +#define UART USART1 + + + +/* =============================>>>>>>>> NO CHANGES AFTER THIS LINE =====================================>>>>>>> */ + +FATFS fs; // file system +FIL fil; // File +FILINFO fno; +extern FRESULT fresult; // result +extern unsigned long sizeoffile; +UINT br, bw; // File read/write count + +/**** capacity related *****/ +FATFS *pfs; +DWORD fre_clust; +uint32_t total, free_space; + + +void Send_Uart (char *string) +{ + //HAL_UART_Transmit(UART, (uint8_t *)string, strlen (string), HAL_MAX_DELAY); +} + + + +int Mount_SD (const TCHAR* path) +{ + fresult = f_mount(&fs, path, 1); + if (fresult != FR_OK) return 1; + else return 0; +} + +int Unmount_SD (const TCHAR* path) +{ + fresult = f_mount(NULL, path, 1); + if (fresult == FR_OK) return 0;//Send_Uart ("SD CARD UNMOUNTED successfully...\n\n\n"); + return 1;//else Send_Uart("ERROR!!! in UNMOUNTING SD CARD\n\n\n"); +} + +/* Start node to be scanned (***also used as work area***) */ +FRESULT Scan_SD (char* pat) +{ + DIR dir; + UINT i; + char *path = malloc(20*sizeof (char)); + sprintf (path, "%s",pat); + + fresult = f_opendir(&dir, path); /* Open the directory */ + if (fresult == FR_OK) + { + for (;;) + { + fresult = f_readdir(&dir, &fno); /* Read a directory item */ + if (fresult != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ + if (fno.fattrib & AM_DIR) /* It is a directory */ + { + if (!(strcmp ("SYSTEM~1", fno.fname))) continue; + char *buf = malloc(30*sizeof(char)); + sprintf (buf, "Dir: %s\r\n", fno.fname); + Send_Uart(buf); + free(buf); + i = strlen(path); + sprintf(&path[i], "/%s", fno.fname); + fresult = Scan_SD(path); /* Enter the directory */ + if (fresult != FR_OK) break; + path[i] = 0; + } + else + { /* It is a file. */ + char *buf = malloc(30*sizeof(char)); + sprintf(buf,"File: %s/%s\n", path, fno.fname); + Send_Uart(buf); + free(buf); + } + } + f_closedir(&dir); + } + free(path); + return fresult; +} + +/* Only supports removing files from home directory */ +FRESULT Format_SD (void) +{ + DIR dir; + char *path = malloc(20*sizeof (char)); + sprintf (path, "%s","/"); + + fresult = f_opendir(&dir, path); /* Open the directory */ + if (fresult == FR_OK) + { + for (;;) + { + fresult = f_readdir(&dir, &fno); /* Read a directory item */ + if (fresult != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ + if (fno.fattrib & AM_DIR) /* It is a directory */ + { + if (!(strcmp ("SYSTEM~1", fno.fname))) continue; + fresult = f_unlink(fno.fname); + if (fresult == FR_DENIED) continue; + } + else + { /* It is a file. */ + fresult = f_unlink(fno.fname); + } + } + f_closedir(&dir); + } + free(path); + return fresult; +} + + + + +FRESULT Write_File (char *name, char *data) +{ + + /**** check whether the file exists or not ****/ + fresult = f_stat (name, &fno); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); + //Send_Uart (buf); + free(buf); + return fresult; + } + + else + { + /* Create a file with read write access and open it */ + fresult = f_open(&fil, name, FA_OPEN_EXISTING | FA_WRITE); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + return fresult; + } + + else + { + fresult = f_write(&fil, data, strlen(data), &bw); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d while writing to the FILE *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + + /* Close file */ + fresult = f_close(&fil); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in closing file *%s* after writing it\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + else + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "File *%s* is WRITTEN and CLOSED successfully\n", name); + //Send_Uart(buf); + free(buf); + } + } + return fresult; + } +} + +FRESULT Write_File_byte (char *name, uint8_t *data, unsigned int bytesize) +{ + + /**** check whether the file exists or not ****/ + fresult = f_stat (name, &fno); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); + //Send_Uart (buf); + free(buf); + return fresult; + } + + else + { + /* Create a file with read write access and open it */ + fresult = f_open(&fil, name, FA_OPEN_EXISTING | FA_WRITE); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + return fresult; + } + + else + { + fresult = f_write(&fil, data, bytesize, &bw); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d while writing to the FILE *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + + /* Close file */ + fresult = f_close(&fil); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in closing file *%s* after writing it\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + else + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "File *%s* is WRITTEN and CLOSED successfully\n", name); + //Send_Uart(buf); + free(buf); + } + } + return fresult; + } +} + +FRESULT Read_File (char *name) +{ + /**** check whether the file exists or not ****/ + fresult = f_stat (name, &fno); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "ERRROR!!! *%s* does not exists\n\n", name); + Send_Uart (buf); + free(buf); + return fresult; + } + + else + { + /* Open file to read */ + fresult = f_open(&fil, name, FA_READ); + + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); + Send_Uart(buf); + free(buf); + return fresult; + } + + /* Read data from the file + * see the function details for the arguments */ + + char *buffer = malloc(sizeof(f_size(&fil))); + fresult = f_read (&fil, buffer, f_size(&fil), &br); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + free(buffer); + sprintf (buf, "ERROR!!! No. %d in reading file *%s*\n\n", fresult, name); + Send_Uart(buffer); + free(buf); + } + + else + { + Send_Uart(buffer); + free(buffer); + + /* Close file */ + fresult = f_close(&fil); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); + Send_Uart(buf); + free(buf); + } + else + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "File *%s* CLOSED successfully\n", name); + Send_Uart(buf); + free(buf); + } + } + return fresult; + } +} + +FRESULT Seek_Read_File (char *name, uint8_t *data, unsigned int bytesize, unsigned long goto_label) +{ + /**** check whether the file exists or not ****/ + fresult = f_stat (name, &fno); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "ERRROR!!! *%s* does not exists\n\n", name); + //Send_Uart (buf); + free(buf); + return fresult; + } + + else + { + /* Open file to read */ + fresult = f_open(&fil, name, FA_READ); + + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + return fresult; + } + + /* Read data from the file + * see the function details for the arguments */ + + //char *buffer = malloc(sizeof(f_size(&fil))); + fresult = f_lseek (&fil, goto_label); /* Move file pointer of the file object */ + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //free(buffer); + sprintf (buf, "ERROR!!! Can't seek the file: *%s*\n\n", name); + //Send_Uart(buffer); + free(buf); + return fresult; + } + fresult = f_read (&fil, data, bytesize, &br); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //free(buffer); + sprintf (buf, "ERROR!!! No. %d in reading file *%s*\n\n", fresult, name); + //Send_Uart(buffer); + free(buf); + + } + + else + { + //Send_Uart(buffer); + //free(buffer); + if (goto_label==0)//Set size of file in first 4 bytes + { + sizeoffile = f_size(&fil); + data[0] = (uint8_t) (sizeoffile&0xff); + data[1] = (uint8_t) ((sizeoffile>>8)&0xff); + data[2] = (uint8_t) ((sizeoffile>>16)&0xff); + data[3] = (uint8_t) ((sizeoffile>>24)&0xff); + } + + /* Close file */ + fresult = f_close(&fil); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + else + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "File *%s* CLOSED successfully\n", name); + //Send_Uart(buf); + free(buf); + } + } + return fresult; + } +} + +FRESULT Create_File (char *name) +{ + fresult = f_stat (name, &fno); + if (fresult == FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! *%s* already exists!!!!\n use Update_File \n\n",name); + //Send_Uart(buf); + free(buf); + return fresult; + } + else + { + fresult = f_open(&fil, name, FA_CREATE_ALWAYS|FA_READ|FA_WRITE); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in creating file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + return fresult; + } + else + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "*%s* created successfully\n Now use Write_File to write data\n",name); + //Send_Uart(buf); + free(buf); + } + + fresult = f_close(&fil); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR No. %d in closing file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + else + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "File *%s* CLOSED successfully\n", name); + //Send_Uart(buf); + free(buf); + } + } + return fresult; +} + +FRESULT Update_File (char *name, char *data) +{ + /**** check whether the file exists or not ****/ + fresult = f_stat (name, &fno); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); + //Send_Uart (buf); + free(buf); + return fresult; + } + + else + { + /* Create a file with read write access and open it */ + fresult = f_open(&fil, name, FA_OPEN_APPEND | FA_WRITE); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + return fresult; + } + + /* Writing text */ + fresult = f_write(&fil, data, strlen (data), &bw); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in writing file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + + else + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "*%s* UPDATED successfully\n", name); + //Send_Uart(buf); + free(buf); + } + + /* Close file */ + fresult = f_close(&fil); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + else + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "File *%s* CLOSED successfully\n", name); + //Send_Uart(buf); + free(buf); + } + } + return fresult; +} + +FRESULT Remove_File (char *name) +{ + /**** check whether the file exists or not ****/ + fresult = f_stat (name, &fno); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); + Send_Uart (buf); + free(buf); + return fresult; + } + + else + { + fresult = f_unlink (name); + if (fresult == FR_OK) + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "*%s* has been removed successfully\n", name); + Send_Uart (buf); + free(buf); + } + + else + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "ERROR No. %d in removing *%s*\n\n",fresult, name); + Send_Uart (buf); + free(buf); + } + } + return fresult; +} + +FRESULT Create_Dir (char *name) +{ + fresult = f_mkdir(name); + if (fresult == FR_OK) + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "*%s* has been created successfully\n", name); + Send_Uart (buf); + free(buf); + } + else + { + char *buf = malloc(100*sizeof(char)); + sprintf (buf, "ERROR No. %d in creating directory *%s*\n\n", fresult,name); + Send_Uart(buf); + free(buf); + } + return fresult; +} + +void Check_SD_Space (void) +{ + /* Check free space */ + f_getfree("", &fre_clust, &pfs); + + total = (uint32_t)((pfs->n_fatent - 2) * pfs->csize * 0.5); + char *buf = malloc(30*sizeof(char)); + sprintf (buf, "SD CARD Total Size: \t%lu\n",total); + Send_Uart(buf); + free(buf); + free_space = (uint32_t)(fre_clust * pfs->csize * 0.5); + buf = malloc(30*sizeof(char)); + sprintf (buf, "SD CARD Free Space: \t%lu\n",free_space); + Send_Uart(buf); + free(buf); +} + +FRESULT Update_File_float (char *name, float *data, unsigned int bytesize) +{ + /**** check whether the file exists or not ****/ + fresult = f_stat (name, &fno); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); + //Send_Uart (buf); + free(buf); + return fresult; + } + + else + { + /* Create a file with read write access and open it */ + fresult = f_open(&fil, name, FA_OPEN_APPEND | FA_WRITE); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + return fresult; + } + + /* Writing text */ + fresult = f_write(&fil, data, bytesize, &bw); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in writing file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + + else + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "*%s* UPDATED successfully\n", name); + //Send_Uart(buf); + free(buf); + } + + /* Close file */ + fresult = f_close(&fil); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + else + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "File *%s* CLOSED successfully\n", name); + //Send_Uart(buf); + free(buf); + } + } + return fresult; +} + +FRESULT Update_File_byte (char *name, uint8_t *data, unsigned int bytesize) +{ + /**** check whether the file exists or not ****/ + fresult = f_stat (name, &fno); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); + //Send_Uart (buf); + free(buf); + return fresult; + } + + else + { + /* Create a file with read write access and open it */ + fresult = f_open(&fil, name, FA_OPEN_APPEND | FA_WRITE); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + return fresult; + } + + /* Writing text */ + fresult = f_write(&fil, data, bytesize, &bw); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in writing file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + + else + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "*%s* UPDATED successfully\n", name); + //Send_Uart(buf); + free(buf); + } + + /* Close file */ + fresult = f_close(&fil); + if (fresult != FR_OK) + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); + //Send_Uart(buf); + free(buf); + } + else + { + char *buf = malloc(100*sizeof(char)); + //sprintf (buf, "File *%s* CLOSED successfully\n", name); + //Send_Uart(buf); + free(buf); + } + } + return fresult; +} diff --git a/Src/bsp_driver_sd.c b/Src/bsp_driver_sd.c new file mode 100644 index 0000000..f3d988b --- /dev/null +++ b/Src/bsp_driver_sd.c @@ -0,0 +1,314 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file bsp_driver_sd.c for F7 (based on stm32756g_eval_sd.c) + * @brief This file includes a generic uSD card driver. + * To be completed by the user according to the board used for the project. + * @note Some functions generated as weak: they can be overridden by + * - code in user files + * - or BSP code from the FW pack files + * if such files are added to the generated project (by the user). + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +#ifdef OLD_API +/* kept to avoid issue when migrating old projects. */ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ +#else +/* USER CODE BEGIN FirstSection */ +/* can be used to modify / undefine following code or add new definitions */ +/* USER CODE END FirstSection */ +/* Includes ------------------------------------------------------------------*/ +#include "bsp_driver_sd.h" + +/* Extern variables ---------------------------------------------------------*/ + +extern SD_HandleTypeDef hsd1; + +/* USER CODE BEGIN BeforeInitSection */ +/* can be used to modify / undefine following code or add code */ +/* USER CODE END BeforeInitSection */ +/** + * @brief Initializes the SD card device. + * @retval SD status + */ +__weak uint8_t BSP_SD_Init(void) +{ + uint8_t sd_state = MSD_OK; + /* Check if the SD card is plugged in the slot */ + if (BSP_SD_IsDetected() != SD_PRESENT) + { + return MSD_ERROR_SD_NOT_PRESENT; + } + /* HAL SD initialization */ + sd_state = HAL_SD_Init(&hsd1); + /* Configure SD Bus width (4 bits mode selected) */ + if (sd_state == MSD_OK) + { + /* Enable wide operation */ + if (HAL_SD_ConfigWideBusOperation(&hsd1, SDMMC_BUS_WIDE_4B) != HAL_OK) + { + sd_state = MSD_ERROR; + } + } + + return sd_state; +} +/* USER CODE BEGIN AfterInitSection */ +/* can be used to modify previous code / undefine following code / add code */ +/* USER CODE END AfterInitSection */ + +/* USER CODE BEGIN InterruptMode */ +/** + * @brief Configures Interrupt mode for SD detection pin. + * @retval Returns 0 + */ +__weak uint8_t BSP_SD_ITConfig(void) +{ + /* Code to be updated by the user or replaced by one from the FW pack (in a stmxxxx_sd.c file) */ + + return (uint8_t)0; +} + +/* USER CODE END InterruptMode */ + +/* USER CODE BEGIN BeforeReadBlocksSection */ +/* can be used to modify previous code / undefine following code / add code */ +/* USER CODE END BeforeReadBlocksSection */ +/** + * @brief Reads block(s) from a specified address in an SD card, in polling mode. + * @param pData: Pointer to the buffer that will contain the data to transmit + * @param ReadAddr: Address from where data is to be read + * @param NumOfBlocks: Number of SD blocks to read + * @param Timeout: Timeout for read operation + * @retval SD status + */ +__weak uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout) +{ + uint8_t sd_state = MSD_OK; + + if (HAL_SD_ReadBlocks(&hsd1, (uint8_t *)pData, ReadAddr, NumOfBlocks, Timeout) != HAL_OK) + { + sd_state = MSD_ERROR; + } + + return sd_state; +} + +/* USER CODE BEGIN BeforeWriteBlocksSection */ +/* can be used to modify previous code / undefine following code / add code */ +/* USER CODE END BeforeWriteBlocksSection */ +/** + * @brief Writes block(s) to a specified address in an SD card, in polling mode. + * @param pData: Pointer to the buffer that will contain the data to transmit + * @param WriteAddr: Address from where data is to be written + * @param NumOfBlocks: Number of SD blocks to write + * @param Timeout: Timeout for write operation + * @retval SD status + */ +__weak uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout) +{ + uint8_t sd_state = MSD_OK; + + if (HAL_SD_WriteBlocks(&hsd1, (uint8_t *)pData, WriteAddr, NumOfBlocks, Timeout) != HAL_OK) + { + sd_state = MSD_ERROR; + } + + return sd_state; +} + +/* USER CODE BEGIN BeforeReadDMABlocksSection */ +/* can be used to modify previous code / undefine following code / add code */ +/* USER CODE END BeforeReadDMABlocksSection */ +/** + * @brief Reads block(s) from a specified address in an SD card, in DMA mode. + * @param pData: Pointer to the buffer that will contain the data to transmit + * @param ReadAddr: Address from where data is to be read + * @param NumOfBlocks: Number of SD blocks to read + * @retval SD status + */ +__weak uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks) +{ + uint8_t sd_state = MSD_OK; + + /* Read block(s) in DMA transfer mode */ + if (HAL_SD_ReadBlocks_DMA(&hsd1, (uint8_t *)pData, ReadAddr, NumOfBlocks) != HAL_OK) + { + sd_state = MSD_ERROR; + } + + return sd_state; +} + +/* USER CODE BEGIN BeforeWriteDMABlocksSection */ +/* can be used to modify previous code / undefine following code / add code */ +/* USER CODE END BeforeWriteDMABlocksSection */ +/** + * @brief Writes block(s) to a specified address in an SD card, in DMA mode. + * @param pData: Pointer to the buffer that will contain the data to transmit + * @param WriteAddr: Address from where data is to be written + * @param NumOfBlocks: Number of SD blocks to write + * @retval SD status + */ +__weak uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks) +{ + uint8_t sd_state = MSD_OK; + + /* Write block(s) in DMA transfer mode */ + if (HAL_SD_WriteBlocks_DMA(&hsd1, (uint8_t *)pData, WriteAddr, NumOfBlocks) != HAL_OK) + { + sd_state = MSD_ERROR; + } + + return sd_state; +} + +/* USER CODE BEGIN BeforeEraseSection */ +/* can be used to modify previous code / undefine following code / add code */ +/* USER CODE END BeforeEraseSection */ +/** + * @brief Erases the specified memory area of the given SD card. + * @param StartAddr: Start byte address + * @param EndAddr: End byte address + * @retval SD status + */ +__weak uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr) +{ + uint8_t sd_state = MSD_OK; + + if (HAL_SD_Erase(&hsd1, StartAddr, EndAddr) != HAL_OK) + { + sd_state = MSD_ERROR; + } + + return sd_state; +} + +/* USER CODE BEGIN BeforeGetCardStateSection */ +/* can be used to modify previous code / undefine following code / add code */ +/* USER CODE END BeforeGetCardStateSection */ + +/** + * @brief Gets the current SD card data status. + * @param None + * @retval Data transfer state. + * This value can be one of the following values: + * @arg SD_TRANSFER_OK: No data transfer is acting + * @arg SD_TRANSFER_BUSY: Data transfer is acting + */ +__weak uint8_t BSP_SD_GetCardState(void) +{ + return ((HAL_SD_GetCardState(&hsd1) == HAL_SD_CARD_TRANSFER ) ? SD_TRANSFER_OK : SD_TRANSFER_BUSY); +} + +/** + * @brief Get SD information about specific SD card. + * @param CardInfo: Pointer to HAL_SD_CardInfoTypedef structure + * @retval None + */ +__weak void BSP_SD_GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo) +{ + /* Get SD card Information */ + HAL_SD_GetCardInfo(&hsd1, CardInfo); +} + +/* USER CODE BEGIN BeforeCallBacksSection */ +/* can be used to modify previous code / undefine following code / add code */ +/* USER CODE END BeforeCallBacksSection */ +/** + * @brief SD Abort callbacks + * @param hsd: SD handle + * @retval None + */ +void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd) +{ + BSP_SD_AbortCallback(); +} + +/** + * @brief Tx Transfer completed callback + * @param hsd: SD handle + * @retval None + */ +void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd) +{ + BSP_SD_WriteCpltCallback(); +} + +/** + * @brief Rx Transfer completed callback + * @param hsd: SD handle + * @retval None + */ +void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd) +{ + BSP_SD_ReadCpltCallback(); +} + +/* USER CODE BEGIN CallBacksSection_C */ +/** + * @brief BSP SD Abort callback + * @retval None + * @note empty (up to the user to fill it in or to remove it if useless) + */ +__weak void BSP_SD_AbortCallback(void) +{ + +} + +/** + * @brief BSP Tx Transfer completed callback + * @retval None + * @note empty (up to the user to fill it in or to remove it if useless) + */ +__weak void BSP_SD_WriteCpltCallback(void) +{ + +} + +/** + * @brief BSP Rx Transfer completed callback + * @retval None + * @note empty (up to the user to fill it in or to remove it if useless) + */ +__weak void BSP_SD_ReadCpltCallback(void) +{ + +} +/* USER CODE END CallBacksSection_C */ +#endif + +/** + * @brief Detects if SD card is correctly plugged in the memory slot or not. + * @param None + * @retval Returns if SD is detected or not + */ +__weak uint8_t BSP_SD_IsDetected(void) +{ + __IO uint8_t status = SD_PRESENT; + + if (BSP_PlatformIsDetected() == 0x0) + { + status = SD_NOT_PRESENT; + } + + return status; +} + +/* USER CODE BEGIN AdditionalCode */ +/* user code can be inserted here */ +/* USER CODE END AdditionalCode */ diff --git a/Src/fatfs.c b/Src/fatfs.c new file mode 100644 index 0000000..42e8d67 --- /dev/null +++ b/Src/fatfs.c @@ -0,0 +1,54 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file fatfs.c + * @brief Code for fatfs applications + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +#include "fatfs.h" + +uint8_t retSD; /* Return value for SD */ +char SDPath[4]; /* SD logical drive path */ +FATFS SDFatFS; /* File system object for SD logical drive */ +FIL SDFile; /* File object for SD */ + +/* USER CODE BEGIN Variables */ + +/* USER CODE END Variables */ + +void MX_FATFS_Init(void) +{ + /*## FatFS: Link the SD driver ###########################*/ + retSD = FATFS_LinkDriver(&SD_Driver, SDPath); + + /* USER CODE BEGIN Init */ + /* additional user code for init */ + /* USER CODE END Init */ +} + +/** + * @brief Gets Time from RTC + * @param None + * @retval Time in DWORD + */ +DWORD get_fattime(void) +{ + /* USER CODE BEGIN get_fattime */ + return 0; + /* USER CODE END get_fattime */ +} + +/* USER CODE BEGIN Application */ + +/* USER CODE END Application */ diff --git a/Src/fatfs_platform.c b/Src/fatfs_platform.c new file mode 100644 index 0000000..d2e02a6 --- /dev/null +++ b/Src/fatfs_platform.c @@ -0,0 +1,32 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : fatfs_platform.c + * @brief : fatfs_platform source file + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** +*/ +/* USER CODE END Header */ +#include "fatfs_platform.h" + +uint8_t BSP_PlatformIsDetected(void) { + uint8_t status = SD_PRESENT; + /* Check SD card detect pin */ + if(HAL_GPIO_ReadPin(SD_DETECT_GPIO_PORT, SD_DETECT_PIN) != GPIO_PIN_RESET) + { + status = SD_NOT_PRESENT; + } + /* USER CODE BEGIN 1 */ + /* user code can be inserted here */ + /* USER CODE END 1 */ + return status; +} diff --git a/Src/main.c b/Src/main.c new file mode 100644 index 0000000..efbdfe5 --- /dev/null +++ b/Src/main.c @@ -0,0 +1,2244 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "fatfs.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +// #include "math.h" + #include "File_Handling.h" + #include +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +ADC_HandleTypeDef hadc1; +ADC_HandleTypeDef hadc3; + +SD_HandleTypeDef hsd1; + +TIM_HandleTypeDef htim10; + +/* USER CODE BEGIN PV */ +uint32_t TO6, TO6_before, TO6_stop, TO6_uart, SD_SEEK, SD_SLIDE, temp32, TO7, TO7_before, TO7_PID, TO10, TO10_counter, TIM10_period;//timer 6 ticks & SD FILE COUNTER +uint8_t uart_buf, CPU_state, CPU_state_old, UART_transmission_request, State_Data[2], UART_DATA[DL_8], flg_tmt, u_tx_flg, u_rx_flg, TIM10_coflag; +uint16_t UART_rec_incr, UART_header, CS_result, temp16, Long_Data[DL_16], COMMAND[CL_16];//, SD_matr[SD_Length][DL_16]; +FRESULT fresult; // result +int test; +unsigned long fgoto, sizeoffile;//file pointer of the file object & size of file FPGA_RECEIVE_DATA_SIZE_32*FPGA_RECEIVE_WORD_SIZE_8+4+2 + +LDx_SetupTypeDef LD1_curr_setup, LD2_curr_setup, LD1_def_setup, LD2_def_setup; +Work_SetupTypeDef Curr_setup, Def_setup; +LDx_ParamTypeDef LD1_param, LD2_param; + +task_t task; + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +static void MX_GPIO_Init(void); +static void MX_DMA_Init(void); +static void MX_SPI4_Init(void); +static void MX_TIM2_Init(void); +static void MX_TIM5_Init(void); +static void MX_ADC1_Init(void); +static void MX_ADC3_Init(void); +static void MX_SPI2_Init(void); +static void MX_SPI5_Init(void); +static void MX_SPI6_Init(void); +static void MX_USART1_UART_Init(void); +static void MX_SDMMC1_SD_Init(void); +static void MX_TIM7_Init(void); +static void MX_TIM6_Init(void); +static void MX_TIM10_Init(void); +/* USER CODE BEGIN PFP */ +static void Init_params(void); +static void Decode_uart(uint16_t *Command, LDx_SetupTypeDef *LD1_curr_setup, LDx_SetupTypeDef *LD2_curr_setup, Work_SetupTypeDef *Curr_setup); +static void Decode_task(uint16_t *Command, LDx_SetupTypeDef *LD1_curr_setup, LDx_SetupTypeDef *LD2_curr_setup, Work_SetupTypeDef *Curr_setup); +static void Set_LTEC(uint8_t num, uint16_t DATA); +static uint16_t MPhD_T(uint8_t num); +static uint16_t Get_ADC(uint8_t num); +static uint16_t PID_Controller_Temp(LDx_SetupTypeDef * LDx_curr_setup, LDx_ParamTypeDef * LDx_results, uint8_t num); +uint8_t CheckChecksum(uint16_t *pbuff); +uint16_t CalculateChecksum(uint16_t *pbuff, uint16_t len); +//int SD_Init(void); +int SD_SAVE(uint16_t *pbuff); +//uint32_t Get_Length(void); +int SD_READ(uint16_t *pbuff); +int SD_REMOVE(void); +void USART_TX (uint8_t* dt, uint16_t sz); +void USART_TX_DMA (uint16_t sz); +static void Stop_TIM10(); +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + /* USER CODE BEGIN 1 */ + HAL_StatusTypeDef st; + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* USER CODE BEGIN Init */ + /*I hope you don't forget that first - MX_DMA_Init(); and than - MX_USART1_UART_Init();*/ + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_DMA_Init(); + MX_SPI4_Init(); + MX_FATFS_Init(); + MX_TIM2_Init(); + MX_TIM5_Init(); + MX_ADC1_Init(); + MX_ADC3_Init(); + MX_SPI2_Init(); + MX_SPI5_Init(); + MX_SPI6_Init(); + MX_USART1_UART_Init(); + MX_SDMMC1_SD_Init(); + MX_TIM7_Init(); + MX_TIM6_Init(); + MX_TIM10_Init(); + /* USER CODE BEGIN 2 */ + Init_params(); + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + if ((HAL_GPIO_ReadPin(USB_FLAG_GPIO_Port, USB_FLAG_Pin)==GPIO_PIN_SET)&&(u_rx_flg == 0)) + { + //NVIC_DisableIRQ(USART1_IRQn); + LL_USART_EnableIT_PE(USART1); + LL_USART_EnableIT_RXNE(USART1); + LL_USART_EnableIT_ERROR(USART1); + NVIC_SetPriority(USART1_IRQn, 0); + NVIC_EnableIRQ(USART1_IRQn);//In other case you have FE error flag... + u_rx_flg = 1; + } +// else +// { +// //NVIC_DisableIRQ(USART1_IRQn); +// u_rx_flg = 0; +// } + switch (CPU_state) + { + case HALT://0 - Default state + CPU_state_old = HALT;//Save main current cycle + task.current_param = task.min_param; + Stop_TIM10(); + break; + case DECODE_ENABLE://1 - Decode rec. message + CS_result = CalculateChecksum(COMMAND, CL_16-2); + if (CheckChecksum(COMMAND)) + { + LL_SPI_Enable(SPI2);//Enable SPI for Laser1 DAC & TEC1 + LL_SPI_Enable(SPI6);//Enable SPI for Laser2 DAC & TEC2 + Decode_uart(COMMAND, &LD1_curr_setup, &LD2_curr_setup, &Curr_setup); + TO6_before = TO6; + //LD1_param.LD_TEMP_Before = LD1_param.LD_TEMP; + //LD2_param.LD_TEMP_Before = LD2_param.LD_TEMP; + CPU_state = WORK_ENABLE; + CPU_state_old = WORK_ENABLE;//Save main current cycle + } + else + { + State_Data[0] |= UART_DECODE_ERR; + CPU_state = DEFAULT_ENABLE; + CPU_state_old = HALT;//Save main current cycle + } + UART_transmission_request = MESS_01; + break; + case DEFAULT_ENABLE://2 - Go to HALT + //Set current setup to default + task.current_param = task.min_param; + Stop_TIM10(); + Init_params(); + LL_SPI_Disable(SPI2);//Disable SPI for Laser1 DAC & TEC1 + LL_SPI_Disable(SPI6);//Disable SPI for Laser2 DAC & TEC2 + CPU_state = HALT; + CPU_state_old = HALT;//Save main current cycle + UART_transmission_request = MESS_01; + break; + case TRANS_S_ENABLE://3 - Transmith saved packet Before this operation must to be defaulting! + temp16 = SD_READ(&Long_Data[0]); + State_Data[0]|=temp16&0xff; + if (temp16==0) + { + UART_transmission_request = MESS_03; + } + else + { + UART_transmission_request = MESS_01; + } + CPU_state_old = HALT; + CPU_state = CPU_state_old;//Return to main current cycle + break; + case TRANS_ENABLE://4 - Transmith current packet + UART_transmission_request = MESS_02; + CPU_state = CPU_state_old;//Return to main current cycle + break; + case REMOVE_FILE://5 - Remove file from SD + State_Data[0]|=SD_REMOVE()&0xff; + UART_transmission_request = MESS_01; + CPU_state = CPU_state_old; + break; + case STATE://6 - Transmith state message + UART_transmission_request = MESS_01; + CPU_state = CPU_state_old;//Return to main current cycle + break; + case WORK_ENABLE://7 - Main work cycle + task.current_param = task.min_param; + Stop_TIM10(); + if (TO7>TO7_before)//Main work cycle go with the timer 7 (1000 us or 1 kHz) + { + TO7_before = TO7; + LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + + //Correct temperature in all pulses + (void) MPhD_T(3); + LD1_param.LD_CURR_TEMP = MPhD_T(3); + (void) MPhD_T(4); + LD2_param.LD_CURR_TEMP = MPhD_T(4); + temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + Set_LTEC(3, temp16);//Drive Laser TEC 1 + temp16=PID_Controller_Temp(&LD2_curr_setup, &LD2_param, 2); + Set_LTEC(4, temp16);//Drive Laser TEC 2 + + Long_Data[1] = LD1_param.POWER;//Translate Data from monitor photodiode of LD1 to Long_Data + Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + + Set_LTEC(1,LD1_curr_setup.CURRENT);//Drive Laser diode 1 + Set_LTEC(2,LD2_curr_setup.CURRENT);//Drive Laser diode 2 + + //Prepare DATA of internals ADCs + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(0); + temp16 = Get_ADC(1); + Long_Data[7] = temp16; + + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); + Long_Data[8] = temp16; + + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); + Long_Data[9] = temp16; + + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); + Long_Data[10] = temp16; + + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); + Long_Data[11] = temp16; + temp16 = Get_ADC(2); + + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(3); + temp16 = Get_ADC(4); + Long_Data[12] = temp16; + temp16 = Get_ADC(5); + + //Put the timer tick to Long_Data: + TO6_stop = TO6; + Long_Data[3] = (TO6_stop)&0xffff; + Long_Data[4] = (TO6_stop>>16)&0xffff; + + //Put the average temperature of LD1 to Long_Data: + Long_Data[5] = LD1_param.LD_CURR_TEMP; + + //Put the average temperature of LD2 to Long_Data: + Long_Data[6] = LD2_param.LD_CURR_TEMP; + + if (Curr_setup.SD_EN==1) + { + CS_result = CalculateChecksum(&Long_Data[1], DL_16-2); + Long_Data[DL_16-1] = CS_result; + temp16 = SD_SAVE(&Long_Data[0]); + State_Data[0]|=temp16&0xff; + } + CPU_state_old = WORK_ENABLE;//Save main current cycle + } + break; + case DECODE_TASK: + if (CheckChecksum(COMMAND)) + { + Decode_task(COMMAND, &LD1_curr_setup, &LD2_curr_setup, &Curr_setup); + TO6_before = TO6; + CPU_state = RUN_TASK; + CPU_state_old = RUN_TASK;//Save main current cycle + } + else + { + State_Data[0] |= UART_DECODE_ERR; + CPU_state = DEFAULT_ENABLE; + CPU_state_old = HALT;//Save main current cycle + } + UART_transmission_request = MESS_01; + break; + case RUN_TASK: + switch (task.task_type) + { + case TT_CHANGE_CURR_1: + Set_LTEC(TT_CHANGE_CURR_2, task.curr); + (void) MPhD_T(TT_CHANGE_TEMP_1); + LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1); + (void) MPhD_T(TT_CHANGE_TEMP_2); + LD2_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_2); + temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + Set_LTEC(TT_CHANGE_TEMP_1, temp16);//Drive Laser TEC 1 + temp16=PID_Controller_Temp(&LD2_curr_setup, &LD2_param, 2); + Set_LTEC(TT_CHANGE_TEMP_2, temp16);//Drive Laser TEC 2 + + // Toggle pin for oscilloscope + HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_RESET); + + st = HAL_TIM_Base_Start_IT(&htim10); + if (st != HAL_OK) + while(1); + while (task.current_param < task.max_param) + { + if (TIM10_coflag) + { + Set_LTEC(TT_CHANGE_CURR_1, task.current_param); + task.current_param += task.delta_param; + TO10 = 0; + TIM10_coflag = 0; + } + } + Stop_TIM10(); + task.current_param = task.min_param; + Set_LTEC(TT_CHANGE_CURR_1, task.current_param); + if (task.tau > 3) + { + TIM10_period = htim10.Init.Period; + htim10.Init.Period = 9999; + TO10_counter = (task.tau - 1) * 100; + } + HAL_TIM_Base_Start_IT(&htim10); + break; + case TT_CHANGE_CURR_2: + Set_LTEC(TT_CHANGE_CURR_1, task.curr); + (void) MPhD_T(TT_CHANGE_TEMP_1); + LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1); + (void) MPhD_T(TT_CHANGE_TEMP_2); + LD2_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_2); + temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + Set_LTEC(TT_CHANGE_TEMP_1, temp16);//Drive Laser TEC 1 + temp16=PID_Controller_Temp(&LD2_curr_setup, &LD2_param, 2); + Set_LTEC(TT_CHANGE_TEMP_2, temp16);//Drive Laser TEC 2 + + // Toggle pin for oscilloscope + HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_RESET); + + st = HAL_TIM_Base_Start_IT(&htim10); + if (st != HAL_OK) + while(1); + while (task.current_param < task.max_param) + { + if (TIM10_coflag) + { + Set_LTEC(TT_CHANGE_CURR_2, task.current_param); + task.current_param += task.delta_param; + TO10 = 0; + TIM10_coflag = 0; + } + } + Stop_TIM10(); + task.current_param = task.min_param; + Set_LTEC(TT_CHANGE_CURR_2, task.current_param); + if (task.tau > 3) + { + TIM10_period = htim10.Init.Period; + htim10.Init.Period = 9999; + TO10_counter = (task.tau - 1) * 100; + } + HAL_TIM_Base_Start_IT(&htim10); + break; + case TT_CHANGE_TEMP_1: + // isn't implemented + break; + case TT_CHANGE_TEMP_2: + // isn't implemented + break; + } + + if (TO7>TO7_before) + { + TO7_before = TO7; + + LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + + Long_Data[1] = LD1_param.POWER;//Translate Data from monitor photodiode of LD1 to Long_Data + Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + + //Prepare DATA of internals ADCs + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(0); + temp16 = Get_ADC(1); + Long_Data[7] = temp16; + + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); + Long_Data[8] = temp16; + + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); + Long_Data[9] = temp16; + + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); + Long_Data[10] = temp16; + + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(1); + Long_Data[11] = temp16; + temp16 = Get_ADC(2); + + //Put the temperature of LD2 to Long_Data: + temp16 = Get_ADC(3); + temp16 = Get_ADC(4); + Long_Data[12] = temp16; + temp16 = Get_ADC(5); + + //Put the timer tick to Long_Data: + TO6_stop = TO6; + Long_Data[3] = (TO6_stop)&0xffff; + Long_Data[4] = (TO6_stop>>16)&0xffff; + + //Put the average temperature of LD1 to Long_Data: + Long_Data[5] = LD1_param.LD_CURR_TEMP; + + //Put the average temperature of LD2 to Long_Data: + Long_Data[6] = LD2_param.LD_CURR_TEMP; + } + while (!TIM10_coflag); + + Stop_TIM10(); + + if (task.tau > 3) + { + htim10.Init.Period = TIM10_period; + TO10_counter = task.dt / 10 - 1; + } + + CPU_state_old = RUN_TASK; + break; + } + + switch (UART_transmission_request) + { + case MESS_01://Default state + USART_TX(State_Data,2); + //HAL_UART_Transmit(&huart1, State_Data, 2, 10); + State_Data[0]=0; + State_Data[1]=0;//All OK! + UART_transmission_request = NO_MESS; + break; + case MESS_02://Transmith packet + + //Find CS and put to Long_Data: + CS_result = CalculateChecksum(&Long_Data[1], DL_16-2); + Long_Data[DL_16-1] = CS_result; + + for (uint16_t i = 0; i < DL_16; i++) + { + UART_DATA[i*2] = (Long_Data[i])&0xff; + UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + } + //HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0); + //HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn); + //HAL_UART_Transmit_DMA(&huart1, UART_DATA, DL_8); + //huart1.gState = HAL_UART_STATE_READY; + //hdma_usart1_tx.State=HAL_DMA_STATE_BUSY; + USART_TX_DMA (DL_8);//Send data by USART using DMA + UART_transmission_request = NO_MESS; + break; + case MESS_03://Transmith saved packet + for (uint16_t i = 0; i < DL_16; i++) + { + UART_DATA[i*2] = (Long_Data[i])&0xff; + UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + } + //HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn); + //HAL_UART_Transmit_DMA(&huart1, UART_DATA, DL_8); + //huart1.gState = HAL_UART_STATE_READY; + //hdma_usart1_tx.State=HAL_DMA_STATE_BUSY; + USART_TX_DMA (DL_8);//Send data by USART using DMA + UART_transmission_request = NO_MESS; + break; + } + if ((flg_tmt==1)&&((TO6-TO6_uart)>100))//Uart timeout handle. if timeout beetween zero byte of command and right now longer than 1 sec.: + { + UART_rec_incr = 0;//Reset uart command counter + State_Data[0] |= UART_ERR;//timeout error! + UART_transmission_request = MESS_01;//Send status + flg_tmt = 0;//Reset timeout flag + } + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + + /** Configure the main internal regulator output voltage + */ + __HAL_RCC_PWR_CLK_ENABLE(); + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 25; + RCC_OscInitStruct.PLL.PLLN = 368; + RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + RCC_OscInitStruct.PLL.PLLQ = 8; + RCC_OscInitStruct.PLL.PLLR = 2; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /** Activate the Over-Drive mode + */ + if (HAL_PWREx_EnableOverDrive() != HAL_OK) + { + Error_Handler(); + } + + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_6) != HAL_OK) + { + Error_Handler(); + } +} + +/** + * @brief ADC1 Initialization Function + * @param None + * @retval None + */ +static void MX_ADC1_Init(void) +{ + + /* USER CODE BEGIN ADC1_Init 0 */ + + /* USER CODE END ADC1_Init 0 */ + + ADC_ChannelConfTypeDef sConfig = {0}; + + /* USER CODE BEGIN ADC1_Init 1 */ + + /* USER CODE END ADC1_Init 1 */ + + /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) + */ + hadc1.Instance = ADC1; + hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV8; + hadc1.Init.Resolution = ADC_RESOLUTION_12B; + hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; + hadc1.Init.ContinuousConvMode = DISABLE; + hadc1.Init.DiscontinuousConvMode = DISABLE; + hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; + hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; + hadc1.Init.NbrOfConversion = 5; + hadc1.Init.DMAContinuousRequests = DISABLE; + hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + if (HAL_ADC_Init(&hadc1) != HAL_OK) + { + Error_Handler(); + } + + /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. + */ + sConfig.Channel = ADC_CHANNEL_9; + sConfig.Rank = ADC_REGULAR_RANK_1; + sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + { + Error_Handler(); + } + + /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. + */ + sConfig.Channel = ADC_CHANNEL_8; + sConfig.Rank = ADC_REGULAR_RANK_2; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + { + Error_Handler(); + } + + /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. + */ + sConfig.Channel = ADC_CHANNEL_2; + sConfig.Rank = ADC_REGULAR_RANK_3; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + { + Error_Handler(); + } + + /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. + */ + sConfig.Channel = ADC_CHANNEL_10; + sConfig.Rank = ADC_REGULAR_RANK_4; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + { + Error_Handler(); + } + + /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. + */ + sConfig.Channel = ADC_CHANNEL_11; + sConfig.Rank = ADC_REGULAR_RANK_5; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN ADC1_Init 2 */ + + /* USER CODE END ADC1_Init 2 */ + +} + +/** + * @brief ADC3 Initialization Function + * @param None + * @retval None + */ +static void MX_ADC3_Init(void) +{ + + /* USER CODE BEGIN ADC3_Init 0 */ + + /* USER CODE END ADC3_Init 0 */ + + ADC_ChannelConfTypeDef sConfig = {0}; + + /* USER CODE BEGIN ADC3_Init 1 */ + + /* USER CODE END ADC3_Init 1 */ + + /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) + */ + hadc3.Instance = ADC3; + hadc3.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV8; + hadc3.Init.Resolution = ADC_RESOLUTION_12B; + hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE; + hadc3.Init.ContinuousConvMode = DISABLE; + hadc3.Init.DiscontinuousConvMode = DISABLE; + hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START; + hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT; + hadc3.Init.NbrOfConversion = 1; + hadc3.Init.DMAContinuousRequests = DISABLE; + hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + if (HAL_ADC_Init(&hadc3) != HAL_OK) + { + Error_Handler(); + } + + /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. + */ + sConfig.Channel = ADC_CHANNEL_15; + sConfig.Rank = ADC_REGULAR_RANK_1; + sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES; + if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN ADC3_Init 2 */ + + /* USER CODE END ADC3_Init 2 */ + +} + +/** + * @brief SDMMC1 Initialization Function + * @param None + * @retval None + */ +static void MX_SDMMC1_SD_Init(void) +{ + + /* USER CODE BEGIN SDMMC1_Init 0 */ + + /* USER CODE END SDMMC1_Init 0 */ + + /* USER CODE BEGIN SDMMC1_Init 1 */ + + /* USER CODE END SDMMC1_Init 1 */ + hsd1.Instance = SDMMC1; + hsd1.Init.ClockEdge = SDMMC_CLOCK_EDGE_RISING; + hsd1.Init.ClockBypass = SDMMC_CLOCK_BYPASS_DISABLE; + hsd1.Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE; + hsd1.Init.BusWide = SDMMC_BUS_WIDE_4B; + hsd1.Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE; + hsd1.Init.ClockDiv = 20; + /* USER CODE BEGIN SDMMC1_Init 2 */ + + /* USER CODE END SDMMC1_Init 2 */ + +} + +/** + * @brief SPI2 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI2_Init(void) +{ + + /* USER CODE BEGIN SPI2_Init 0 */ + + /* USER CODE END SPI2_Init 0 */ + + LL_SPI_InitTypeDef SPI_InitStruct = {0}; + + LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* Peripheral clock enable */ + LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_SPI2); + + LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOB); + /**SPI2 GPIO Configuration + PB13 ------> SPI2_SCK + PB15 ------> SPI2_MOSI + */ + GPIO_InitStruct.Pin = LL_GPIO_PIN_13; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + LL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = LL_GPIO_PIN_15; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + LL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN SPI2_Init 1 */ + + /* USER CODE END SPI2_Init 1 */ + /* SPI2 parameter configuration*/ + SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX; + SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE; + SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV8; + SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + SPI_InitStruct.CRCPoly = 7; + LL_SPI_Init(SPI2, &SPI_InitStruct); + LL_SPI_SetStandard(SPI2, LL_SPI_PROTOCOL_MOTOROLA); + LL_SPI_DisableNSSPulseMgt(SPI2); + /* USER CODE BEGIN SPI2_Init 2 */ + + /* USER CODE END SPI2_Init 2 */ + +} + +/** + * @brief SPI4 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI4_Init(void) +{ + + /* USER CODE BEGIN SPI4_Init 0 */ + + /* USER CODE END SPI4_Init 0 */ + + LL_SPI_InitTypeDef SPI_InitStruct = {0}; + + LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* Peripheral clock enable */ + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI4); + + LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOE); + /**SPI4 GPIO Configuration + PE12 ------> SPI4_SCK + PE13 ------> SPI4_MISO + */ + GPIO_InitStruct.Pin = LL_GPIO_PIN_12; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + LL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = LL_GPIO_PIN_13; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + LL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /* USER CODE BEGIN SPI4_Init 1 */ + + /* USER CODE END SPI4_Init 1 */ + /* SPI4 parameter configuration*/ + SPI_InitStruct.TransferDirection = LL_SPI_SIMPLEX_RX; + SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE; + SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + SPI_InitStruct.CRCPoly = 7; + LL_SPI_Init(SPI4, &SPI_InitStruct); + LL_SPI_SetStandard(SPI4, LL_SPI_PROTOCOL_MOTOROLA); + LL_SPI_DisableNSSPulseMgt(SPI4); + /* USER CODE BEGIN SPI4_Init 2 */ + + /* USER CODE END SPI4_Init 2 */ + +} + +/** + * @brief SPI5 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI5_Init(void) +{ + + /* USER CODE BEGIN SPI5_Init 0 */ + + /* USER CODE END SPI5_Init 0 */ + + LL_SPI_InitTypeDef SPI_InitStruct = {0}; + + LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* Peripheral clock enable */ + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI5); + + LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOF); + /**SPI5 GPIO Configuration + PF7 ------> SPI5_SCK + PF8 ------> SPI5_MISO + */ + GPIO_InitStruct.Pin = LL_GPIO_PIN_7; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + LL_GPIO_Init(GPIOF, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = LL_GPIO_PIN_8; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + LL_GPIO_Init(GPIOF, &GPIO_InitStruct); + + /* USER CODE BEGIN SPI5_Init 1 */ + + /* USER CODE END SPI5_Init 1 */ + /* SPI5 parameter configuration*/ + SPI_InitStruct.TransferDirection = LL_SPI_SIMPLEX_RX; + SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE; + SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + SPI_InitStruct.CRCPoly = 7; + LL_SPI_Init(SPI5, &SPI_InitStruct); + LL_SPI_SetStandard(SPI5, LL_SPI_PROTOCOL_MOTOROLA); + LL_SPI_DisableNSSPulseMgt(SPI5); + /* USER CODE BEGIN SPI5_Init 2 */ + + /* USER CODE END SPI5_Init 2 */ + +} + +/** + * @brief SPI6 Initialization Function + * @param None + * @retval None + */ +static void MX_SPI6_Init(void) +{ + + /* USER CODE BEGIN SPI6_Init 0 */ + + /* USER CODE END SPI6_Init 0 */ + + LL_SPI_InitTypeDef SPI_InitStruct = {0}; + + LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* Peripheral clock enable */ + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI6); + + LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA); + /**SPI6 GPIO Configuration + PA5 ------> SPI6_SCK + PA7 ------> SPI6_MOSI + */ + GPIO_InitStruct.Pin = LL_GPIO_PIN_5; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_8; + LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = LL_GPIO_PIN_7; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_8; + LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USER CODE BEGIN SPI6_Init 1 */ + + /* USER CODE END SPI6_Init 1 */ + /* SPI6 parameter configuration*/ + SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX; + SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE; + SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + SPI_InitStruct.CRCPoly = 7; + LL_SPI_Init(SPI6, &SPI_InitStruct); + LL_SPI_SetStandard(SPI6, LL_SPI_PROTOCOL_MOTOROLA); + LL_SPI_DisableNSSPulseMgt(SPI6); + /* USER CODE BEGIN SPI6_Init 2 */ + + /* USER CODE END SPI6_Init 2 */ + +} + +/** + * @brief TIM2 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM2_Init(void) +{ + + /* USER CODE BEGIN TIM2_Init 0 */ + + /* USER CODE END TIM2_Init 0 */ + + LL_TIM_InitTypeDef TIM_InitStruct = {0}; + + /* Peripheral clock enable */ + LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM2); + + /* TIM2 interrupt Init */ + NVIC_SetPriority(TIM2_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + NVIC_EnableIRQ(TIM2_IRQn); + + /* USER CODE BEGIN TIM2_Init 1 */ + + /* USER CODE END TIM2_Init 1 */ + TIM_InitStruct.Prescaler = 1000; + TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + TIM_InitStruct.Autoreload = 840000; + TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + LL_TIM_Init(TIM2, &TIM_InitStruct); + LL_TIM_DisableARRPreload(TIM2); + LL_TIM_SetClockSource(TIM2, LL_TIM_CLOCKSOURCE_INTERNAL); + LL_TIM_SetTriggerOutput(TIM2, LL_TIM_TRGO_RESET); + LL_TIM_DisableMasterSlaveMode(TIM2); + /* USER CODE BEGIN TIM2_Init 2 */ + + /* USER CODE END TIM2_Init 2 */ + +} + +/** + * @brief TIM5 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM5_Init(void) +{ + + /* USER CODE BEGIN TIM5_Init 0 */ + + /* USER CODE END TIM5_Init 0 */ + + LL_TIM_InitTypeDef TIM_InitStruct = {0}; + + /* Peripheral clock enable */ + LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM5); + + /* TIM5 interrupt Init */ + NVIC_SetPriority(TIM5_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + NVIC_EnableIRQ(TIM5_IRQn); + + /* USER CODE BEGIN TIM5_Init 1 */ + + /* USER CODE END TIM5_Init 1 */ + TIM_InitStruct.Prescaler = 10000; + TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + TIM_InitStruct.Autoreload = 560; + TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + LL_TIM_Init(TIM5, &TIM_InitStruct); + LL_TIM_DisableARRPreload(TIM5); + LL_TIM_SetClockSource(TIM5, LL_TIM_CLOCKSOURCE_INTERNAL); + LL_TIM_SetTriggerOutput(TIM5, LL_TIM_TRGO_RESET); + LL_TIM_DisableMasterSlaveMode(TIM5); + /* USER CODE BEGIN TIM5_Init 2 */ + + /* USER CODE END TIM5_Init 2 */ + +} + +/** + * @brief TIM6 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM6_Init(void) +{ + + /* USER CODE BEGIN TIM6_Init 0 */ + + /* USER CODE END TIM6_Init 0 */ + + LL_TIM_InitTypeDef TIM_InitStruct = {0}; + + /* Peripheral clock enable */ + LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM6); + + /* TIM6 interrupt Init */ + NVIC_SetPriority(TIM6_DAC_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + NVIC_EnableIRQ(TIM6_DAC_IRQn); + + /* USER CODE BEGIN TIM6_Init 1 */ + + /* USER CODE END TIM6_Init 1 */ + TIM_InitStruct.Prescaler = 45999; + TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + TIM_InitStruct.Autoreload = 19; + LL_TIM_Init(TIM6, &TIM_InitStruct); + LL_TIM_DisableARRPreload(TIM6); + LL_TIM_SetTriggerOutput(TIM6, LL_TIM_TRGO_ENABLE); + LL_TIM_DisableMasterSlaveMode(TIM6); + /* USER CODE BEGIN TIM6_Init 2 */ + + /* USER CODE END TIM6_Init 2 */ + +} + +/** + * @brief TIM7 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM7_Init(void) +{ + + /* USER CODE BEGIN TIM7_Init 0 */ + + /* USER CODE END TIM7_Init 0 */ + + LL_TIM_InitTypeDef TIM_InitStruct = {0}; + + /* Peripheral clock enable */ + LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM7); + + /* TIM7 interrupt Init */ + NVIC_SetPriority(TIM7_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + NVIC_EnableIRQ(TIM7_IRQn); + + /* USER CODE BEGIN TIM7_Init 1 */ + + /* USER CODE END TIM7_Init 1 */ + TIM_InitStruct.Prescaler = 919; + TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + TIM_InitStruct.Autoreload = 99; + LL_TIM_Init(TIM7, &TIM_InitStruct); + LL_TIM_DisableARRPreload(TIM7); + LL_TIM_SetTriggerOutput(TIM7, LL_TIM_TRGO_ENABLE); + LL_TIM_DisableMasterSlaveMode(TIM7); + /* USER CODE BEGIN TIM7_Init 2 */ + + /* USER CODE END TIM7_Init 2 */ + +} + +/** + * @brief TIM10 Initialization Function + * @param None + * @retval None + */ +static void MX_TIM10_Init(void) +{ + + /* USER CODE BEGIN TIM10_Init 0 */ + + /* USER CODE END TIM10_Init 0 */ + + /* USER CODE BEGIN TIM10_Init 1 */ + + /* USER CODE END TIM10_Init 1 */ + htim10.Instance = TIM10; + htim10.Init.Prescaler = 183; + htim10.Init.CounterMode = TIM_COUNTERMODE_UP; + htim10.Init.Period = 9; + htim10.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim10.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim10) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN TIM10_Init 2 */ + + /* USER CODE END TIM10_Init 2 */ + +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + LL_USART_InitTypeDef USART_InitStruct = {0}; + + LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + + /** Initializes the peripherals clock + */ + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1; + PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /* Peripheral clock enable */ + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_USART1); + + LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA); + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + GPIO_InitStruct.Pin = LL_GPIO_PIN_9; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_7; + LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = LL_GPIO_PIN_10; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct.Alternate = LL_GPIO_AF_7; + LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USART1 DMA Init */ + + /* USART1_TX Init */ + LL_DMA_SetChannelSelection(DMA2, LL_DMA_STREAM_7, LL_DMA_CHANNEL_4); + + LL_DMA_SetDataTransferDirection(DMA2, LL_DMA_STREAM_7, LL_DMA_DIRECTION_MEMORY_TO_PERIPH); + + LL_DMA_SetStreamPriorityLevel(DMA2, LL_DMA_STREAM_7, LL_DMA_PRIORITY_VERYHIGH); + + LL_DMA_SetMode(DMA2, LL_DMA_STREAM_7, LL_DMA_MODE_NORMAL); + + LL_DMA_SetPeriphIncMode(DMA2, LL_DMA_STREAM_7, LL_DMA_PERIPH_NOINCREMENT); + + LL_DMA_SetMemoryIncMode(DMA2, LL_DMA_STREAM_7, LL_DMA_MEMORY_INCREMENT); + + LL_DMA_SetPeriphSize(DMA2, LL_DMA_STREAM_7, LL_DMA_PDATAALIGN_BYTE); + + LL_DMA_SetMemorySize(DMA2, LL_DMA_STREAM_7, LL_DMA_MDATAALIGN_BYTE); + + LL_DMA_DisableFifoMode(DMA2, LL_DMA_STREAM_7); + + /* USART1 interrupt Init */ + NVIC_SetPriority(USART1_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + NVIC_EnableIRQ(USART1_IRQn); + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + USART_InitStruct.BaudRate = 115200; + USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B; + USART_InitStruct.StopBits = LL_USART_STOPBITS_1; + USART_InitStruct.Parity = LL_USART_PARITY_NONE; + USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX; + USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE; + USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16; + LL_USART_Init(USART1, &USART_InitStruct); + LL_USART_ConfigAsyncMode(USART1); + LL_USART_Enable(USART1); + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/** + * Enable DMA controller clock + */ +static void MX_DMA_Init(void) +{ + + /* Init with LL driver */ + /* DMA controller clock enable */ + LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA2); + + /* DMA interrupt init */ + /* DMA2_Stream7_IRQn interrupt configuration */ + NVIC_SetPriority(DMA2_Stream7_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + NVIC_EnableIRQ(DMA2_Stream7_IRQn); + +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void MX_GPIO_Init(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; +/* USER CODE BEGIN MX_GPIO_Init_1 */ +/* USER CODE END MX_GPIO_Init_1 */ + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOF_CLK_ENABLE(); + __HAL_RCC_GPIOH_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOE_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOF, ADC_MPD2_CS_Pin|SPI5_CNV_Pin|ADC_ThrLD2_CS_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOC, EN_5V2_Pin|EN_5V1_Pin|LD2_EN_Pin|TEC2_PD_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOA, TECEN1_Pin|TECEN2_Pin|REF2_ON_Pin|DAC_LD2_CS_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(DAC_TEC2_CS_GPIO_Port, DAC_TEC2_CS_Pin, GPIO_PIN_SET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOE, ADC_MPD1_CS_Pin|ADC_ThrLD1_CS_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOB, REF0_EN_Pin|TEC1_PD_Pin|DAC_LD1_CS_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(DAC_TEC1_CS_GPIO_Port, DAC_TEC1_CS_Pin, GPIO_PIN_SET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOD, LD1_EN_Pin|TEST_01_Pin|GPIO_PIN_7, GPIO_PIN_RESET); + + /*Configure GPIO pins : ADC_MPD2_CS_Pin SPI5_CNV_Pin ADC_ThrLD2_CS_Pin */ + GPIO_InitStruct.Pin = ADC_MPD2_CS_Pin|SPI5_CNV_Pin|ADC_ThrLD2_CS_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + + /*Configure GPIO pins : EN_5V2_Pin LD2_EN_Pin TEC2_PD_Pin */ + GPIO_InitStruct.Pin = EN_5V2_Pin|LD2_EN_Pin|TEC2_PD_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /*Configure GPIO pin : EN_5V1_Pin */ + GPIO_InitStruct.Pin = EN_5V1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + HAL_GPIO_Init(EN_5V1_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : TECEN1_Pin TECEN2_Pin REF2_ON_Pin DAC_TEC2_CS_Pin + DAC_LD2_CS_Pin */ + GPIO_InitStruct.Pin = TECEN1_Pin|TECEN2_Pin|REF2_ON_Pin|DAC_TEC2_CS_Pin + |DAC_LD2_CS_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /*Configure GPIO pins : TEC2_FLAG1_Pin TEC2_FLAG2_Pin TEC1_FLAG1_Pin TEC1_FLAG2_Pin */ + GPIO_InitStruct.Pin = TEC2_FLAG1_Pin|TEC2_FLAG2_Pin|TEC1_FLAG1_Pin|TEC1_FLAG2_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + + /*Configure GPIO pins : ADC_MPD1_CS_Pin ADC_ThrLD1_CS_Pin */ + GPIO_InitStruct.Pin = ADC_MPD1_CS_Pin|ADC_ThrLD1_CS_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + + /*Configure GPIO pin : SPI4_CNV_Pin */ + GPIO_InitStruct.Pin = SPI4_CNV_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + HAL_GPIO_Init(SPI4_CNV_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pins : REF0_EN_Pin TEC1_PD_Pin DAC_TEC1_CS_Pin DAC_LD1_CS_Pin */ + GPIO_InitStruct.Pin = REF0_EN_Pin|TEC1_PD_Pin|DAC_TEC1_CS_Pin|DAC_LD1_CS_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /*Configure GPIO pins : LD1_EN_Pin TEST_01_Pin PD7 */ + GPIO_InitStruct.Pin = LD1_EN_Pin|TEST_01_Pin|GPIO_PIN_7; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /*Configure GPIO pin : USB_FLAG_Pin */ + GPIO_InitStruct.Pin = USB_FLAG_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(USB_FLAG_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : SDMMC1_EN_Pin */ + GPIO_InitStruct.Pin = SDMMC1_EN_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(SDMMC1_EN_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin : FPGA_CONF_DONE_Pin */ + GPIO_InitStruct.Pin = FPGA_CONF_DONE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(FPGA_CONF_DONE_GPIO_Port, &GPIO_InitStruct); + +/* USER CODE BEGIN MX_GPIO_Init_2 */ +/* USER CODE END MX_GPIO_Init_2 */ +} + +/* USER CODE BEGIN 4 */ + +//void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { + +// UART_transmission_request = NO_MESS; + +//} + +static void Init_params(void) +{ + TO6 = 0; + TO7 = 0; + TO7_before = 0; + TO6_before = 0; + TO6_uart = 0; + flg_tmt = 0; + UART_rec_incr = 0; + fgoto = 0; + sizeoffile = 0; + u_tx_flg = 0; + u_rx_flg = 0; + //State_Data[0]=0; + //State_Data[1]=0;//All OK! + for (uint16_t i=0; iWORK_EN = ((uint8_t)((*temp2)>>0))&0x01; + Curr_setup->U5V1_EN = ((uint8_t)((*temp2)>>1))&0x01; + Curr_setup->U5V2_EN = ((uint8_t)((*temp2)>>2))&0x01; + Curr_setup->LD1_EN = ((uint8_t)((*temp2)>>3))&0x01; + Curr_setup->LD2_EN = ((uint8_t)((*temp2)>>4))&0x01; + Curr_setup->REF1_EN = ((uint8_t)((*temp2)>>5))&0x01; + Curr_setup->REF2_EN = ((uint8_t)((*temp2)>>6))&0x01; + Curr_setup->TEC1_EN = ((uint8_t)((*temp2)>>7))&0x01; + Curr_setup->TEC2_EN = ((uint8_t)((*temp2)>>8))&0x01; + Curr_setup->TS1_EN = ((uint8_t)((*temp2)>>9))&0x01; + Curr_setup->TS2_EN = ((uint8_t)((*temp2)>>10))&0x01; + Curr_setup->SD_EN = ((uint8_t)((*temp2)>>11))&0x01; + Curr_setup->PI1_RD = ((uint8_t)((*temp2)>>12))&0x01; + Curr_setup->PI2_RD = ((uint8_t)((*temp2)>>13))&0x01; + + temp2++; + LD1_curr_setup->LD_TEMP = (uint16_t)(*temp2); + temp2++; + LD2_curr_setup->LD_TEMP = (uint16_t)(*temp2); + temp2++; + temp2++; + temp2++; + Curr_setup->AVERAGES = (uint16_t)(*temp2); + temp2++; + LD1_curr_setup->P_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint16_t)(*temp2))*((float)(10))); + temp2++; + LD1_curr_setup->I_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint16_t)(*temp2))*((float)(10))); + temp2++; + LD2_curr_setup->P_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint16_t)(*temp2))*((float)(10))); + temp2++; + LD2_curr_setup->I_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint16_t)(*temp2))*((float)(10))); + temp2++; + Long_Data[13] = (uint16_t)(*temp2);//Message ID + temp2++; + LD1_curr_setup->CURRENT = (uint16_t)(*temp2); + temp2++; + LD2_curr_setup->CURRENT = (uint16_t)(*temp2); + temp2++; + + if (Curr_setup->U5V1_EN) + { + HAL_GPIO_WritePin(EN_5V1_GPIO_Port, EN_5V1_Pin, GPIO_PIN_SET); + } + else + { + HAL_GPIO_WritePin(EN_5V1_GPIO_Port, EN_5V1_Pin, GPIO_PIN_RESET); + } + + if (Curr_setup->U5V2_EN) + { + HAL_GPIO_WritePin(EN_5V2_GPIO_Port, EN_5V2_Pin, GPIO_PIN_SET); + } + else + { + HAL_GPIO_WritePin(EN_5V2_GPIO_Port, EN_5V2_Pin, GPIO_PIN_RESET); + } + + if (Curr_setup->LD1_EN) + { + HAL_GPIO_WritePin(LD1_EN_GPIO_Port, LD1_EN_Pin, GPIO_PIN_SET); + //LL_SPI_Enable(SPI2);//Enable SPI for Laser1 DAC + } + else + { + HAL_GPIO_WritePin(LD1_EN_GPIO_Port, LD1_EN_Pin, GPIO_PIN_RESET); + //LL_SPI_Disable(SPI2);//Disable SPI for Laser1 DAC + } + + if (Curr_setup->LD2_EN) + { + HAL_GPIO_WritePin(LD2_EN_GPIO_Port, LD2_EN_Pin, GPIO_PIN_SET); + //LL_SPI_Enable(SPI6);//Enable SPI for Laser2 DAC + } + else + { + HAL_GPIO_WritePin(LD2_EN_GPIO_Port, LD2_EN_Pin, GPIO_PIN_RESET); + //LL_SPI_Disable(SPI6);//Disable SPI for Laser2 DAC + } + + if (Curr_setup->REF1_EN) + { + HAL_GPIO_WritePin(REF0_EN_GPIO_Port, REF0_EN_Pin, GPIO_PIN_SET); + } + else + { + HAL_GPIO_WritePin(REF0_EN_GPIO_Port, REF0_EN_Pin, GPIO_PIN_RESET); + } + + if (Curr_setup->REF2_EN) + { + HAL_GPIO_WritePin(REF2_ON_GPIO_Port, REF2_ON_Pin, GPIO_PIN_SET); + } + else + { + HAL_GPIO_WritePin(REF2_ON_GPIO_Port, REF2_ON_Pin, GPIO_PIN_RESET); + } + + if ((Curr_setup->TS1_EN)&&(Curr_setup->TEC1_EN)) + { + Set_LTEC(3,32767); + Set_LTEC(3,32767); + HAL_GPIO_WritePin(TEC1_PD_GPIO_Port, TEC1_PD_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(TECEN1_GPIO_Port, TECEN1_Pin, GPIO_PIN_SET); + } + else + { + HAL_GPIO_WritePin(TECEN1_GPIO_Port, TECEN1_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(TEC1_PD_GPIO_Port, TEC1_PD_Pin, GPIO_PIN_RESET); + } + + if ((Curr_setup->TS2_EN)&&(Curr_setup->TEC2_EN)) + { + Set_LTEC(4,32767); + Set_LTEC(4,32767); + HAL_GPIO_WritePin(TEC2_PD_GPIO_Port, TEC2_PD_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(TECEN2_GPIO_Port, TECEN2_Pin, GPIO_PIN_SET); + } + else + { + HAL_GPIO_WritePin(TECEN2_GPIO_Port, TECEN2_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(TEC2_PD_GPIO_Port, TEC2_PD_Pin, GPIO_PIN_RESET); + } + + if (Curr_setup->PI1_RD==0) + { + LD1_curr_setup->P_coef_temp = 10; + LD1_curr_setup->I_coef_temp = 0.01; + } + + if (Curr_setup->PI2_RD==0) + { + LD2_curr_setup->P_coef_temp = 10; + LD2_curr_setup->I_coef_temp = 0.01; + } +} + +static void Decode_task(uint16_t *Command, LDx_SetupTypeDef *LD1_curr_setup, LDx_SetupTypeDef *LD2_curr_setup, Work_SetupTypeDef *Curr_setup) +{ + uint16_t *temp2; + + temp2 = (uint16_t *)Command; + Curr_setup->WORK_EN = ((uint8_t)((*temp2)>>0))&0x01; + Curr_setup->U5V1_EN = ((uint8_t)((*temp2)>>1))&0x01; + Curr_setup->U5V2_EN = ((uint8_t)((*temp2)>>2))&0x01; + Curr_setup->LD1_EN = ((uint8_t)((*temp2)>>3))&0x01; + Curr_setup->LD2_EN = ((uint8_t)((*temp2)>>4))&0x01; + Curr_setup->REF1_EN = ((uint8_t)((*temp2)>>5))&0x01; + Curr_setup->REF2_EN = ((uint8_t)((*temp2)>>6))&0x01; + Curr_setup->TEC1_EN = ((uint8_t)((*temp2)>>7))&0x01; + Curr_setup->TEC2_EN = ((uint8_t)((*temp2)>>8))&0x01; + Curr_setup->TS1_EN = ((uint8_t)((*temp2)>>9))&0x01; + Curr_setup->TS2_EN = ((uint8_t)((*temp2)>>10))&0x01; + Curr_setup->SD_EN = ((uint8_t)((*temp2)>>11))&0x01; + Curr_setup->PI1_RD = ((uint8_t)((*temp2)>>12))&0x01; + Curr_setup->PI2_RD = ((uint8_t)((*temp2)>>13))&0x01; + + temp2++; + task.task_type = (uint8_t)(*temp2); temp2++; + task.min_param = (float)(*temp2); temp2++; + task.max_param = (float)(*temp2); temp2++; + task.delta_param = (float)(*temp2); temp2++; + task.dt = (float)(*temp2) / 100.0; temp2++; + task.sec_param = (float)(*temp2); temp2++; + task.curr = (float)(*temp2); temp2++; + task.temp = (float)(*temp2); temp2++; + task.tau = (float)(*temp2); temp2++; + task.p_coef_1 = (float)(*temp2) * 256.0; temp2++; + task.i_coef_1 = (float)(*temp2) * 256.0; temp2++; + task.p_coef_2 = (float)(*temp2) * 256.0; temp2++; + task.i_coef_2 = (float)(*temp2) * 256.0; temp2++; + + TO10_counter = task.dt / 10 - 1; +} + +void Set_LTEC(uint8_t num, uint16_t DATA) +{ + uint32_t tmp32; + switch (num) + { + case 1: + HAL_GPIO_WritePin(DAC_LD1_CS_GPIO_Port, DAC_LD1_CS_Pin, GPIO_PIN_RESET);//Start operation with LDAC1 + //tmp32=0; + //while(tmp32<500){tmp32++;} + tmp32 = 0; + while((!LL_SPI_IsActiveFlag_TXE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle will be end. + LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + tmp32 = 0; + while((!LL_SPI_IsActiveFlag_RXNE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle will be end. + (void) SPI2->DR; + break; + case 2: + HAL_GPIO_WritePin(DAC_LD2_CS_GPIO_Port, DAC_LD2_CS_Pin, GPIO_PIN_RESET);//Start operation with LDAC1 + //tmp32=0; + //while(tmp32<500){tmp32++;} + tmp32 = 0; + while((!LL_SPI_IsActiveFlag_TXE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle will be end. + LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + tmp32 = 0; + while((!LL_SPI_IsActiveFlag_RXNE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle will be end. + (void) SPI6->DR; + break; + case 3: + HAL_GPIO_WritePin(DAC_TEC1_CS_GPIO_Port, DAC_TEC1_CS_Pin, GPIO_PIN_RESET);//Start operation with LDAC1 + //tmp32=0; + //while(tmp32<500){tmp32++;} + tmp32 = 0; + while((!LL_SPI_IsActiveFlag_TXE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle will be end. + LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + tmp32 = 0; + while((!LL_SPI_IsActiveFlag_RXNE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle will be end. + (void) SPI2->DR; + break; + case 4: + HAL_GPIO_WritePin(DAC_TEC2_CS_GPIO_Port, DAC_TEC2_CS_Pin, GPIO_PIN_RESET);//Start operation with LDAC1 + //tmp32=0; + //while(tmp32<500){tmp32++;} + tmp32 = 0; + while((!LL_SPI_IsActiveFlag_TXE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle will be end. + LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + tmp32 = 0; + while((!LL_SPI_IsActiveFlag_RXNE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle will be end. + (void) SPI6->DR; + break; + } + HAL_GPIO_WritePin(DAC_LD1_CS_GPIO_Port, DAC_LD1_CS_Pin, GPIO_PIN_SET);//End operation with LDAC1 + HAL_GPIO_WritePin(DAC_LD2_CS_GPIO_Port, DAC_LD2_CS_Pin, GPIO_PIN_SET);//End operation with LDAC2 + HAL_GPIO_WritePin(DAC_TEC1_CS_GPIO_Port, DAC_TEC1_CS_Pin, GPIO_PIN_SET);//End operation with TEC1 + HAL_GPIO_WritePin(DAC_TEC2_CS_GPIO_Port, DAC_TEC2_CS_Pin, GPIO_PIN_SET);//End operation with TEC2 +} +static uint16_t MPhD_T(uint8_t num) +{ + uint16_t P; + uint32_t tmp32; + HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_RESET);//Prepare conversion + HAL_GPIO_WritePin(SPI5_CNV_GPIO_Port, SPI5_CNV_Pin, GPIO_PIN_RESET);//Prepare conversion + tmp32=0; + while(tmp32<500){tmp32++;} + HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET);//Stop acqusition & start conversion + HAL_GPIO_WritePin(SPI5_CNV_GPIO_Port, SPI5_CNV_Pin, GPIO_PIN_SET);//Stop acqusition & start conversion + tmp32=0; + while(tmp32<500){tmp32++;} + if (num==1)//MPD1 + { + HAL_GPIO_WritePin(ADC_ThrLD1_CS_GPIO_Port, ADC_ThrLD1_CS_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(ADC_MPD1_CS_GPIO_Port, ADC_MPD1_CS_Pin, GPIO_PIN_RESET); + tmp32=0; + while(tmp32<500){tmp32++;} + //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We can do that only by transmitting data... + LL_SPI_Enable(SPI4);//Enable SPI for MPhD1 ADC + tmp32 = 0; + while(((!LL_SPI_IsActiveFlag_RXNE(SPI4))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle will be end. + LL_SPI_Disable(SPI4);//Enable SPI for MPhD1 ADC + while(tmp32<500){tmp32++;} + //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + HAL_GPIO_WritePin(ADC_MPD1_CS_GPIO_Port, ADC_MPD1_CS_Pin, GPIO_PIN_SET); + P = LL_SPI_ReceiveData16(SPI4); + } + else if (num==2)//MPD2 + { + HAL_GPIO_WritePin(ADC_ThrLD2_CS_GPIO_Port, ADC_ThrLD2_CS_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(ADC_MPD2_CS_GPIO_Port, ADC_MPD2_CS_Pin, GPIO_PIN_RESET); + tmp32=0; + while(tmp32<500){tmp32++;} + //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We can do that only by transmitting data... + LL_SPI_Enable(SPI5);//Enable SPI for MPhD2 ADC + tmp32 = 0; + while(((!LL_SPI_IsActiveFlag_RXNE(SPI5))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle will be end. + LL_SPI_Disable(SPI5);//Enable SPI for MPhD2 ADC + while(tmp32<500){tmp32++;} + //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + HAL_GPIO_WritePin(ADC_MPD2_CS_GPIO_Port, ADC_MPD2_CS_Pin, GPIO_PIN_SET); + P = LL_SPI_ReceiveData16(SPI5); + } + else if (num==3)//ThrLD1 + { + HAL_GPIO_WritePin(ADC_MPD1_CS_GPIO_Port, ADC_MPD1_CS_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(ADC_ThrLD1_CS_GPIO_Port, ADC_ThrLD1_CS_Pin, GPIO_PIN_RESET); + tmp32=0; + while(tmp32<500){tmp32++;} + //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We can do that only by transmitting data... + LL_SPI_Enable(SPI4);//Enable SPI for ThrLD1 ADC + tmp32 = 0; + while(((!LL_SPI_IsActiveFlag_RXNE(SPI4))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle will be end. + LL_SPI_Disable(SPI4);//Enable SPI for ThrLD1 ADC + while(tmp32<500){tmp32++;} + //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + HAL_GPIO_WritePin(ADC_ThrLD1_CS_GPIO_Port, ADC_ThrLD1_CS_Pin, GPIO_PIN_SET); + P = LL_SPI_ReceiveData16(SPI4); + } + else if (num==4)//ThrLD2 + { + HAL_GPIO_WritePin(ADC_MPD2_CS_GPIO_Port, ADC_MPD2_CS_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(ADC_ThrLD2_CS_GPIO_Port, ADC_ThrLD2_CS_Pin, GPIO_PIN_RESET); + tmp32=0; + while(tmp32<500){tmp32++;} + //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We can do that only by transmitting data... + LL_SPI_Enable(SPI5);//Enable SPI for ThrLD2 ADC + tmp32 = 0; + while(((!LL_SPI_IsActiveFlag_RXNE(SPI5))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle will be end. + LL_SPI_Disable(SPI5);//Enable SPI for ThrLD2 ADC + while(tmp32<500){tmp32++;} + //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + HAL_GPIO_WritePin(ADC_ThrLD2_CS_GPIO_Port, ADC_ThrLD2_CS_Pin, GPIO_PIN_SET); + P = LL_SPI_ReceiveData16(SPI5); + } + /*float I_LD, Ith, I0m, T0m, Inorm, Tnorm1, Tnorm2, P, T_C, A, Pnorm; + + Inorm = (float) (65535) / (float) (100); + Tnorm1 = (float) (65535) / (float) (50); + Tnorm2 = 4; + Pnorm = (float)(65535) / (float)(20); + I0m = 8.1568;//@4 C - lowest temperature of system + T0m = 48.6282; + T_C = (float) (T_LD) / Tnorm1 + Tnorm2; + + Ith = I0m * expf(T_C/T0m); + I_LD = (float) (C_LD) / Inorm; + + if (I_LD > Ith) + { + A = (float) (2.24276128270098e-07) * T_C * T_C * T_C - (float) (4.73392579025590e-05) * T_C * T_C + (float) (0.00157250618257057) * T_C + (float) (0.228565407377466); + P = A * (I_LD - Ith) * Pnorm; + } + else + { + P = 0; + } */ + return P; +} +/*static uint16_t Temp_LD(uint16_t T_LD_before, uint16_t T_LD, uint32_t Timer_before, uint32_t Timer) +{ + uint16_t Result; +// uint8_t randf; + + randf = 0; + for (uint8_t i = 0; i < 32; i++) + { + randf = ((Timer>>i)&0x0001)^randf; + } + + Result = ((float)(T_LD - T_LD_before))*((float)(1-expf(((float)(Timer_before)-(float)(Timer))/((float)(100))))) + T_LD_before + (float)(randf); + + return (uint16_t)(Result); +}*/ +static uint16_t Get_ADC(uint8_t num) +{ + uint16_t OUT; + switch (num) + { + case 0: + HAL_ADC_Start(&hadc1); // Power on + break; + case 1: + HAL_ADC_PollForConversion(&hadc1, 100); // Waiting for conversion + OUT = HAL_ADC_GetValue(&hadc1); // Get value adc + break; + case 2: + HAL_ADC_Stop(&hadc1); // Power off + break; + case 3: + HAL_ADC_Start(&hadc3); // Power on + break; + case 4: + HAL_ADC_PollForConversion(&hadc3, 100); // Waiting for conversion + OUT = HAL_ADC_GetValue(&hadc3); // Get value adc + break; + case 5: + HAL_ADC_Stop(&hadc3); // Power off + break; + } + return OUT; +} +uint16_t PID_Controller_Temp(LDx_SetupTypeDef * LDx_curr_setup, LDx_ParamTypeDef * LDx_results, uint8_t num) +{ + int e_pid; + float P_coef_current;//, I_coef_current; + float e_integral; + int x_output; + + e_pid = (int) LDx_results->LD_CURR_TEMP - (int) LDx_curr_setup->LD_TEMP; + + e_integral = LDx_results->e_integral; + + if((e_pid < 3000) && (e_pid > - 3000)){ + e_integral += LDx_curr_setup->I_coef_temp * (float)(e_pid) * (float)(TO7 - TO7_PID) / (float) 100;//100 - timer is too fast + } + P_coef_current = LDx_curr_setup->P_coef_temp; + + if (e_integral > 32000){ + e_integral = 32000; + } + else if (e_integral < - 32000){ + e_integral = -32000; + } + LDx_results->e_integral = e_integral; + + x_output = 32768 + P_coef_current * e_pid + (int)e_integral;//32768 - P_coef_current * e_pid - (int)e_integral;// + + if(x_output < 1000){ + x_output = 8800; + } + else if(x_output > 56800){ + x_output = 56800; + } + + if (num==2) + TO7_PID = TO7;//Save current time only on 2nd laser + + return (uint16_t)x_output; +} +uint8_t CheckChecksum(uint16_t *pbuff) +{ + uint16_t cl_ind; + + switch (UART_header) + { + case 0x7777: + cl_ind = TSK_16 - 2; + break; + case 0x1111: + cl_ind = CL_16 - 2; + break; + default: + return 0; + break; + } + + CS_result = CalculateChecksum(pbuff, cl_ind); + + return ((CS_result == COMMAND[cl_ind]) ? 1 : 0); +} +uint16_t CalculateChecksum(uint16_t *pbuff, uint16_t len) +{ + short i; + uint16_t cs = *pbuff; + + for(i = 1; i < len; i++) + { + cs ^= *(pbuff+i); + } + return cs; +} + +/*int SD_Init(void) +{ + int test=0; + if (HAL_GPIO_ReadPin(SDMMC1_EN_GPIO_Port, SDMMC1_EN_Pin)==GPIO_PIN_RESET) + { + test = Mount_SD("/"); + if (test == 0) //0 - suc + { + //Format_SD(); + test = Create_File("FILE1.TXT"); // 0 -suc + //Create_File("FILE2.TXT"); + Write_File ("FILE1.TXT", "____OSGG main borad information. Program made by Kazakov Viktor. Part ?01 (for DFB-1550-14BF lasers). Parameters of plate: Ilaser: 0...66.7 mA; Vlaser: 0...2 V; Itec: -1.27...1.27 A; Vtec: -2.56...2.56 V; IMphD: 0...519 uA; Tint: -1.2...+45.8 C; Text: -25.8...+43.4 C. Place for your advertising:.................................................................................................................................."); + test = Unmount_SD("/"); // 0 - succ + return test; + } + else + { + return 1; + } + } + else + { + return 1; + } +}*/ + +int SD_SAVE(uint16_t *pbuff) +{ + int test=0; + if (HAL_GPIO_ReadPin(SDMMC1_EN_GPIO_Port, SDMMC1_EN_Pin)==GPIO_PIN_RESET) + { + test = Mount_SD("/"); + if (test == 0) //0 - suc + { + //Format_SD(); + test = Update_File_byte("FILE1.TXT", (uint8_t *)pbuff, DL_8); + test = Unmount_SD("/"); // 0 - succ + return test; + } + else + { + return 1; + } + } + else + { + return 1; + } +} + + + +//uint32_t Get_Length(void) +//{ +// return SD_matr[0][0] + ((uint32_t) (SD_matr[0][1])<<16); +//} + +int SD_READ(uint16_t *pbuff) +{ + int test=0; + if (HAL_GPIO_ReadPin(SDMMC1_EN_GPIO_Port, SDMMC1_EN_Pin)==GPIO_PIN_RESET) + { + test = Mount_SD("/"); + if (test == 0) //0 - suc + { + //Format_SD(); + test = Seek_Read_File ("FILE1.TXT", (uint8_t *)pbuff, DL_8, fgoto);//Read next 246 bytes + fgoto+=DL_8; + test = Unmount_SD("/"); // 0 - succ + return test; + } + else + { + return 1; + } + } + else + { + return 1; + } + +/* for (uint16_t j = 0; j < DL_16; j++) + { + *(pbuff+j) = SD_matr[SD_SLIDE][j]; + } + if (SD_SLIDEInstance==ADC1) + { + /* USER CODE BEGIN ADC1_MspInit 0 */ + + /* USER CODE END ADC1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_ADC1_CLK_ENABLE(); + + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**ADC1 GPIO Configuration + PC0 ------> ADC1_IN10 + PC1 ------> ADC1_IN11 + PA2 ------> ADC1_IN2 + PB0 ------> ADC1_IN8 + PB1 ------> ADC1_IN9 + */ + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_2; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* ADC1 interrupt Init */ + HAL_NVIC_SetPriority(ADC_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(ADC_IRQn); + /* USER CODE BEGIN ADC1_MspInit 1 */ + + /* USER CODE END ADC1_MspInit 1 */ + } + else if(hadc->Instance==ADC3) + { + /* USER CODE BEGIN ADC3_MspInit 0 */ + + /* USER CODE END ADC3_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_ADC3_CLK_ENABLE(); + + __HAL_RCC_GPIOF_CLK_ENABLE(); + /**ADC3 GPIO Configuration + PF5 ------> ADC3_IN15 + */ + GPIO_InitStruct.Pin = GPIO_PIN_5; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + + /* ADC3 interrupt Init */ + HAL_NVIC_SetPriority(ADC_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(ADC_IRQn); + /* USER CODE BEGIN ADC3_MspInit 1 */ + + /* USER CODE END ADC3_MspInit 1 */ + } + +} + +/** +* @brief ADC MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hadc: ADC handle pointer +* @retval None +*/ +void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) +{ + if(hadc->Instance==ADC1) + { + /* USER CODE BEGIN ADC1_MspDeInit 0 */ + + /* USER CODE END ADC1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_ADC1_CLK_DISABLE(); + + /**ADC1 GPIO Configuration + PC0 ------> ADC1_IN10 + PC1 ------> ADC1_IN11 + PA2 ------> ADC1_IN2 + PB0 ------> ADC1_IN8 + PB1 ------> ADC1_IN9 + */ + HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_1); + + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2); + + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0|GPIO_PIN_1); + + /* ADC1 interrupt DeInit */ + /* USER CODE BEGIN ADC1:ADC_IRQn disable */ + /** + * Uncomment the line below to disable the "ADC_IRQn" interrupt + * Be aware, disabling shared interrupt may affect other IPs + */ + /* HAL_NVIC_DisableIRQ(ADC_IRQn); */ + /* USER CODE END ADC1:ADC_IRQn disable */ + + /* USER CODE BEGIN ADC1_MspDeInit 1 */ + + /* USER CODE END ADC1_MspDeInit 1 */ + } + else if(hadc->Instance==ADC3) + { + /* USER CODE BEGIN ADC3_MspDeInit 0 */ + + /* USER CODE END ADC3_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_ADC3_CLK_DISABLE(); + + /**ADC3 GPIO Configuration + PF5 ------> ADC3_IN15 + */ + HAL_GPIO_DeInit(GPIOF, GPIO_PIN_5); + + /* ADC3 interrupt DeInit */ + /* USER CODE BEGIN ADC3:ADC_IRQn disable */ + /** + * Uncomment the line below to disable the "ADC_IRQn" interrupt + * Be aware, disabling shared interrupt may affect other IPs + */ + /* HAL_NVIC_DisableIRQ(ADC_IRQn); */ + /* USER CODE END ADC3:ADC_IRQn disable */ + + /* USER CODE BEGIN ADC3_MspDeInit 1 */ + + /* USER CODE END ADC3_MspDeInit 1 */ + } + +} + +/** +* @brief SD MSP Initialization +* This function configures the hardware resources used in this example +* @param hsd: SD handle pointer +* @retval None +*/ +void HAL_SD_MspInit(SD_HandleTypeDef* hsd) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + if(hsd->Instance==SDMMC1) + { + /* USER CODE BEGIN SDMMC1_MspInit 0 */ + + /* USER CODE END SDMMC1_MspInit 0 */ + + /** Initializes the peripherals clock + */ + PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SDMMC1|RCC_PERIPHCLK_CLK48; + PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48SOURCE_PLL; + PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_CLK48; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + { + Error_Handler(); + } + + /* Peripheral clock enable */ + __HAL_RCC_SDMMC1_CLK_ENABLE(); + + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + /**SDMMC1 GPIO Configuration + PC8 ------> SDMMC1_D0 + PC9 ------> SDMMC1_D1 + PC10 ------> SDMMC1_D2 + PC11 ------> SDMMC1_D3 + PC12 ------> SDMMC1_CK + PD2 ------> SDMMC1_CMD + */ + GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11 + |GPIO_PIN_12; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_2; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1; + HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + + /* USER CODE BEGIN SDMMC1_MspInit 1 */ + + /* USER CODE END SDMMC1_MspInit 1 */ + } + +} + +/** +* @brief SD MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param hsd: SD handle pointer +* @retval None +*/ +void HAL_SD_MspDeInit(SD_HandleTypeDef* hsd) +{ + if(hsd->Instance==SDMMC1) + { + /* USER CODE BEGIN SDMMC1_MspDeInit 0 */ + + /* USER CODE END SDMMC1_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_SDMMC1_CLK_DISABLE(); + + /**SDMMC1 GPIO Configuration + PC8 ------> SDMMC1_D0 + PC9 ------> SDMMC1_D1 + PC10 ------> SDMMC1_D2 + PC11 ------> SDMMC1_D3 + PC12 ------> SDMMC1_CK + PD2 ------> SDMMC1_CMD + */ + HAL_GPIO_DeInit(GPIOC, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11 + |GPIO_PIN_12); + + HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2); + + /* USER CODE BEGIN SDMMC1_MspDeInit 1 */ + + /* USER CODE END SDMMC1_MspDeInit 1 */ + } + +} + +/** +* @brief TIM_Base MSP Initialization +* This function configures the hardware resources used in this example +* @param htim_base: TIM_Base handle pointer +* @retval None +*/ +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) +{ + if(htim_base->Instance==TIM10) + { + /* USER CODE BEGIN TIM10_MspInit 0 */ + + /* USER CODE END TIM10_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_TIM10_CLK_ENABLE(); + /* TIM10 interrupt Init */ + HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn); + /* USER CODE BEGIN TIM10_MspInit 1 */ + + /* USER CODE END TIM10_MspInit 1 */ + } + +} + +/** +* @brief TIM_Base MSP De-Initialization +* This function freeze the hardware resources used in this example +* @param htim_base: TIM_Base handle pointer +* @retval None +*/ +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) +{ + if(htim_base->Instance==TIM10) + { + /* USER CODE BEGIN TIM10_MspDeInit 0 */ + + /* USER CODE END TIM10_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_TIM10_CLK_DISABLE(); + + /* TIM10 interrupt DeInit */ + HAL_NVIC_DisableIRQ(TIM1_UP_TIM10_IRQn); + /* USER CODE BEGIN TIM10_MspDeInit 1 */ + + /* USER CODE END TIM10_MspDeInit 1 */ + } + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/Src/stm32f7xx_it.c b/Src/stm32f7xx_it.c new file mode 100644 index 0000000..e5ec1a3 --- /dev/null +++ b/Src/stm32f7xx_it.c @@ -0,0 +1,496 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f7xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + * Copyright (c) 2023 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32f7xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + extern uint32_t TO6, TO7, TO6_uart, TO10, TO10_counter; + extern uint16_t UART_rec_incr, UART_header, COMMAND[CL_16]; + extern uint8_t uart_buf, flg_tmt, CPU_state, State_Data[2], UART_transmission_request, u_tx_flg, TIM10_coflag; + extern task_t task; +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ +void UART_RxCpltCallback(void); +void DMA2_Stream7_TransferComplete(void); +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ +extern ADC_HandleTypeDef hadc1; +extern ADC_HandleTypeDef hadc3; +extern TIM_HandleTypeDef htim10; +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M7 Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + { + } + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + /* USER CODE END W1_MemoryManagement_IRQn 0 */ + } +} + +/** + * @brief This function handles Pre-fetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_BusFault_IRQn 0 */ + /* USER CODE END W1_BusFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ + /* USER CODE END W1_UsageFault_IRQn 0 */ + } +} + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + /* USER CODE BEGIN SVCall_IRQn 0 */ + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + /* USER CODE BEGIN DebugMonitor_IRQn 0 */ + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + /* USER CODE BEGIN PendSV_IRQn 0 */ + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + +/******************************************************************************/ +/* STM32F7xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file (startup_stm32f7xx.s). */ +/******************************************************************************/ + +/** + * @brief This function handles ADC1, ADC2 and ADC3 global interrupts. + */ +void ADC_IRQHandler(void) +{ + /* USER CODE BEGIN ADC_IRQn 0 */ + + /* USER CODE END ADC_IRQn 0 */ + HAL_ADC_IRQHandler(&hadc1); + HAL_ADC_IRQHandler(&hadc3); + /* USER CODE BEGIN ADC_IRQn 1 */ + + /* USER CODE END ADC_IRQn 1 */ +} + +/** + * @brief This function handles TIM1 update interrupt and TIM10 global interrupt. + */ +void TIM1_UP_TIM10_IRQHandler(void) +{ + /* USER CODE BEGIN TIM1_UP_TIM10_IRQn 0 */ + TO10++; + if (TO10 == TO10_counter) + TIM10_coflag = 1; + /* USER CODE END TIM1_UP_TIM10_IRQn 0 */ + HAL_TIM_IRQHandler(&htim10); + /* USER CODE BEGIN TIM1_UP_TIM10_IRQn 1 */ + + /* USER CODE END TIM1_UP_TIM10_IRQn 1 */ +} + +/** + * @brief This function handles TIM2 global interrupt. + */ +void TIM2_IRQHandler(void) +{ + /* USER CODE BEGIN TIM2_IRQn 0 */ + + /* USER CODE END TIM2_IRQn 0 */ + /* USER CODE BEGIN TIM2_IRQn 1 */ + + /* USER CODE END TIM2_IRQn 1 */ +} + +/** + * @brief This function handles USART1 global interrupt. + */ +void USART1_IRQHandler(void) +{ + /* USER CODE BEGIN USART1_IRQn 0 */ + volatile uint8_t temp; + if(LL_USART_IsActiveFlag_RXNE(USART1) && LL_USART_IsEnabledIT_RXNE(USART1)) + { + UART_RxCpltCallback(); + } + else + { + if(LL_USART_IsActiveFlag_ORE(USART1)) + { + //temp = USART1->RDR; + temp+= LL_USART_ReceiveData8(USART1); + } + else if(LL_USART_IsActiveFlag_FE(USART1)) + { + //(void) USART1->RDR; + temp+= LL_USART_ReceiveData8(USART1); + } + else if(LL_USART_IsActiveFlag_NE(USART1)) + { + //(void) USART1->RDR; + temp+= LL_USART_ReceiveData8(USART1); + } + else if(LL_USART_IsActiveFlag_PE(USART1)) + { + //(void) USART1->RDR; + temp+= LL_USART_ReceiveData8(USART1); + } + else + { + if(LL_USART_IsActiveFlag_TC(USART6) && LL_USART_IsEnabledIT_TC(USART6)) + { + LL_USART_ClearFlag_TC(USART1); + //test_counter += 1; + //if(UART_transmission_busy == 1){ + LL_USART_DisableIT_TC(USART1); + //UART_transmission_busy = 0; + } + } + } + + /* USER CODE END USART1_IRQn 0 */ + /* USER CODE BEGIN USART1_IRQn 1 */ + + /* USER CODE END USART1_IRQn 1 */ +} + +/** + * @brief This function handles TIM5 global interrupt. + */ +void TIM5_IRQHandler(void) +{ + /* USER CODE BEGIN TIM5_IRQn 0 */ + + /* USER CODE END TIM5_IRQn 0 */ + /* USER CODE BEGIN TIM5_IRQn 1 */ + + /* USER CODE END TIM5_IRQn 1 */ +} + +/** + * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts. + */ +void TIM6_DAC_IRQHandler(void) +{ + /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ + + /* USER CODE END TIM6_DAC_IRQn 0 */ + + /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ + if(LL_TIM_IsActiveFlag_UPDATE(TIM6)) + { + LL_TIM_ClearFlag_UPDATE(TIM6); + TO6++;//increment tick + //10 ms or 100 Hz + HAL_GPIO_TogglePin(TEST_01_GPIO_Port, TEST_01_Pin); + //HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12); + } + /* USER CODE END TIM6_DAC_IRQn 1 */ +} + +/** + * @brief This function handles TIM7 global interrupt. + */ +void TIM7_IRQHandler(void) +{ + /* USER CODE BEGIN TIM7_IRQn 0 */ + + /* USER CODE END TIM7_IRQn 0 */ + /* USER CODE BEGIN TIM7_IRQn 1 */ + if(LL_TIM_IsActiveFlag_UPDATE(TIM7)) + { + LL_TIM_ClearFlag_UPDATE(TIM7); + TO7++; + //1 ms or 1000 Hz + //HAL_GPIO_TogglePin(TEST_01_GPIO_Port, TEST_01_Pin); + } + /* USER CODE END TIM7_IRQn 1 */ +} + +/** + * @brief This function handles DMA2 stream7 global interrupt. + */ +void DMA2_Stream7_IRQHandler(void) +{ + /* USER CODE BEGIN DMA2_Stream7_IRQn 0 */ + if(LL_DMA_IsActiveFlag_TC7(DMA2) == 1) + { + DMA2_Stream7_TransferComplete(); + u_tx_flg = 0;//indicate that transfer compete + } + else if(LL_DMA_IsActiveFlag_TE7(DMA2) == 1) + { + LL_DMA_ClearFlag_TE7(DMA2); + } + /* USER CODE END DMA2_Stream7_IRQn 0 */ + + /* USER CODE BEGIN DMA2_Stream7_IRQn 1 */ + + /* USER CODE END DMA2_Stream7_IRQn 1 */ +} + +/* USER CODE BEGIN 1 */ +void UART_RxCpltCallback(void) +{ + uart_buf = LL_USART_ReceiveData8(USART1); + switch (UART_rec_incr) + { + case 0: + TO6_uart = TO6;//Save the time of start rec. command + flg_tmt = 1;//Set the timeout flag + UART_header = uart_buf; + UART_rec_incr++; + break; + case 1: + UART_header += ((uint16_t)uart_buf<<8); + switch (UART_header) + { + case 0x1111: //received long packet + UART_rec_incr = 2;//timeout flag is still setting! + break; + case 0x2222: //Back to default + UART_rec_incr = 0; + flg_tmt = 0;//Reset the timeout flag + CPU_state = DEFAULT_ENABLE; + break; + case 0x3333: //Transmith saved DATA + UART_rec_incr = 0; + flg_tmt = 0;//Reset the timeout flag + CPU_state = TRANS_S_ENABLE; + break; + case 0x4444: //Received packet + UART_rec_incr = 0; + flg_tmt = 0;//Reset the timeout flag + CPU_state = TRANS_ENABLE; + break; + case 0x5555: //Erase saved DATA + UART_rec_incr = 0; + flg_tmt = 0;//Reset the timeout flag + CPU_state = REMOVE_FILE; + break; + case 0x6666: //Request state + UART_rec_incr = 0; + flg_tmt = 0;//Reset the timeout flag + CPU_state = STATE; + break; + case 0x7777: + UART_rec_incr = 2;//timeout flag is still setting! + break; + default: //error decoding header + UART_rec_incr = 0; + flg_tmt = 0;//Reset the timeout flag + //UART_transmission_request = MESS_01; + //CPU_state = HALT; + State_Data[0] |= UART_ERR; + CPU_state = DEFAULT_ENABLE;//Parking system and send error state! + break; + } + break; + + case (CL_8 - 1): + if (UART_header == 0x1111) + { + if ((UART_rec_incr & 0x0001) > 0) + COMMAND[(UART_rec_incr >> 1) - 1] += ((uint16_t)(uart_buf)) << 8; + else + COMMAND[(UART_rec_incr >> 1) - 1] = (uint16_t)(uart_buf); + CPU_state = DECODE_ENABLE; + UART_rec_incr = 0; + flg_tmt = 0;//Reset the timeout flag + } + else + { + if ((UART_rec_incr&0x0001)>0) + COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + else + COMMAND[(UART_rec_incr>>1)-1] = (uint16_t)(uart_buf); + UART_rec_incr++; + UART_transmission_request = NO_MESS; + } + break; + case (TSK_8 - 1): + if (UART_header == 0x7777) + { + if ((UART_rec_incr&0x0001)>0) + COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + else + COMMAND[(UART_rec_incr>>1)-1] = (uint16_t)(uart_buf); + CPU_state = DECODE_TASK; + UART_rec_incr = 0; + flg_tmt = 0;//Reset the timeout flag + } + else + { + if ((UART_rec_incr&0x0001)>0) + COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + else + COMMAND[(UART_rec_incr>>1)-1] = (uint16_t)(uart_buf); + UART_rec_incr++; + UART_transmission_request = NO_MESS; + } + break; + default: + if ((UART_rec_incr&0x0001)>0) + COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + else + COMMAND[(UART_rec_incr>>1)-1] = (uint16_t)(uart_buf); + UART_rec_incr++; + UART_transmission_request = NO_MESS; + break; + } +// HAL_UART_Receive_IT(&huart1, &uart_buf, 1); +} + +//----------------------------------------------- +void DMA2_Stream7_TransferComplete(void) +{ + LL_DMA_ClearFlag_TC7(DMA2); +} +//----------------------------------------------- +/* USER CODE END 1 */ diff --git a/Src/syscalls.c b/Src/syscalls.c new file mode 100644 index 0000000..e33a849 --- /dev/null +++ b/Src/syscalls.c @@ -0,0 +1,176 @@ +/** + ****************************************************************************** + * @file syscalls.c + * @author Auto-generated by STM32CubeMX + * @brief Minimal System calls file + * + * For more information about which c-functions + * need which of these lowlevel functions + * please consult the Newlib libc-manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2020-2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Variables */ +extern int __io_putchar(int ch) __attribute__((weak)); +extern int __io_getchar(void) __attribute__((weak)); + + +char *__env[1] = { 0 }; +char **environ = __env; + + +/* Functions */ +void initialise_monitor_handles() +{ +} + +int _getpid(void) +{ + return 1; +} + +int _kill(int pid, int sig) +{ + (void)pid; + (void)sig; + errno = EINVAL; + return -1; +} + +void _exit (int status) +{ + _kill(status, -1); + while (1) {} /* Make sure we hang here */ +} + +__attribute__((weak)) int _read(int file, char *ptr, int len) +{ + (void)file; + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + *ptr++ = __io_getchar(); + } + + return len; +} + +__attribute__((weak)) int _write(int file, char *ptr, int len) +{ + (void)file; + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + __io_putchar(*ptr++); + } + return len; +} + +int _close(int file) +{ + (void)file; + return -1; +} + + +int _fstat(int file, struct stat *st) +{ + (void)file; + st->st_mode = S_IFCHR; + return 0; +} + +int _isatty(int file) +{ + (void)file; + return 1; +} + +int _lseek(int file, int ptr, int dir) +{ + (void)file; + (void)ptr; + (void)dir; + return 0; +} + +int _open(char *path, int flags, ...) +{ + (void)path; + (void)flags; + /* Pretend like we always fail */ + return -1; +} + +int _wait(int *status) +{ + (void)status; + errno = ECHILD; + return -1; +} + +int _unlink(char *name) +{ + (void)name; + errno = ENOENT; + return -1; +} + +int _times(struct tms *buf) +{ + (void)buf; + return -1; +} + +int _stat(char *file, struct stat *st) +{ + (void)file; + st->st_mode = S_IFCHR; + return 0; +} + +int _link(char *old, char *new) +{ + (void)old; + (void)new; + errno = EMLINK; + return -1; +} + +int _fork(void) +{ + errno = EAGAIN; + return -1; +} + +int _execve(char *name, char **argv, char **env) +{ + (void)name; + (void)argv; + (void)env; + errno = ENOMEM; + return -1; +} diff --git a/Src/sysmem.c b/Src/sysmem.c new file mode 100644 index 0000000..246470e --- /dev/null +++ b/Src/sysmem.c @@ -0,0 +1,79 @@ +/** + ****************************************************************************** + * @file sysmem.c + * @author Generated by STM32CubeMX + * @brief System Memory calls file + * + * For more information about which C functions + * need which of these lowlevel functions + * please consult the newlib libc manual + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include + +/** + * Pointer to the current high watermark of the heap usage + */ +static uint8_t *__sbrk_heap_end = NULL; + +/** + * @brief _sbrk() allocates memory to the newlib heap and is used by malloc + * and others from the C library + * + * @verbatim + * ############################################################################ + * # .data # .bss # newlib heap # MSP stack # + * # # # # Reserved by _Min_Stack_Size # + * ############################################################################ + * ^-- RAM start ^-- _end _estack, RAM end --^ + * @endverbatim + * + * This implementation starts allocating at the '_end' linker symbol + * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack + * The implementation considers '_estack' linker symbol to be RAM end + * NOTE: If the MSP stack, at any point during execution, grows larger than the + * reserved size, please increase the '_Min_Stack_Size'. + * + * @param incr Memory size + * @return Pointer to allocated memory + */ +void *_sbrk(ptrdiff_t incr) +{ + 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; + const uint8_t *max_heap = (uint8_t *)stack_limit; + uint8_t *prev_heap_end; + + /* Initialize heap end at first call */ + if (NULL == __sbrk_heap_end) + { + __sbrk_heap_end = &_end; + } + + /* Protect heap from growing into the reserved MSP stack */ + if (__sbrk_heap_end + incr > max_heap) + { + errno = ENOMEM; + return (void *)-1; + } + + prev_heap_end = __sbrk_heap_end; + __sbrk_heap_end += incr; + + return (void *)prev_heap_end; +} diff --git a/Src/system_stm32f7xx.c b/Src/system_stm32f7xx.c new file mode 100644 index 0000000..c004f47 --- /dev/null +++ b/Src/system_stm32f7xx.c @@ -0,0 +1,259 @@ +/** + ****************************************************************************** + * @file system_stm32f7xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File. + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f7xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f7xx_system + * @{ + */ + +/** @addtogroup STM32F7xx_System_Private_Includes + * @{ + */ + +#include "stm32f7xx.h" + +#if !defined (HSE_VALUE) + #define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_Defines + * @{ + */ + +/************************* Miscellaneous Configuration ************************/ + +/* Note: Following vector table addresses must be defined in line with linker + configuration. */ +/*!< Uncomment the following line if you need to relocate the vector table + anywhere in Flash or Sram, else the vector table is kept at the automatic + remap of boot address selected */ +/* #define USER_VECT_TAB_ADDRESS */ + +#if defined(USER_VECT_TAB_ADDRESS) +/*!< Uncomment the following line if you need to relocate your vector Table + in Sram else user remap will be done in Flash. */ +/* #define VECT_TAB_SRAM */ +#if defined(VECT_TAB_SRAM) +#define VECT_TAB_BASE_ADDRESS RAMDTCM_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x200. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +#else +#define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x200. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +#endif /* VECT_TAB_SRAM */ +#endif /* USER_VECT_TAB_ADDRESS */ +/******************************************************************************/ + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_Variables + * @{ + */ + + /* This variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ + uint32_t SystemCoreClock = 16000000; + const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F7xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemFrequency variable. + * @param None + * @retval None + */ +void SystemInit(void) +{ + /* FPU settings ------------------------------------------------------------*/ +#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ +#endif + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value + * 25 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) +{ + uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2; + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00: /* HSI used as system clock source */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08: /* PLL used as system clock source */ + + /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N + SYSCLK = PLL_VCO / PLL_P + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; + pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; + + if (pllsource != 0) + { + /* HSE used as PLL clock source */ + pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); + } + else + { + /* HSI used as PLL clock source */ + pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); + } + + pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; + SystemCoreClock = pllvco/pllp; + break; + default: + SystemCoreClock = HSI_VALUE; + break; + } + /* Compute HCLK frequency --------------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + /* HCLK frequency */ + SystemCoreClock >>= tmp; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/build/For_stm32.map b/build/For_stm32.map new file mode 100644 index 0000000..2a07e4f --- /dev/null +++ b/build/For_stm32.map @@ -0,0 +1,4199 @@ +Archive member included to satisfy reference by file (symbol) + +/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o (atexit) +/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + build/sysmem.o (__errno) +/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o (exit) +/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o (__libc_fini_array) +/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) (_global_impure_ptr) +/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o (__libc_init_array) +/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o (memset) +/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) (__register_exitproc) +/usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) (__call_exitprocs) +/usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + build/stm32f7xx_hal_rcc.o (__aeabi_uldivmod) +/usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) (__udivmoddi4) +/usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) (__aeabi_ldiv0) + +Discarded input sections + + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o + .data 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + .rodata 0x0000000000000000 0x24 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + .text 0x0000000000000000 0x70 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .ARM.extab 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .ARM.exidx 0x0000000000000000 0x10 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .debug_line 0x0000000000000000 0x87 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .debug_info 0x0000000000000000 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .debug_abbrev 0x0000000000000000 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .debug_aranges + 0x0000000000000000 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .debug_str 0x0000000000000000 0x98 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .ARM.attributes + 0x0000000000000000 0x1c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o + .text 0x0000000000000000 0x0 build/main.o + .data 0x0000000000000000 0x0 build/main.o + .bss 0x0000000000000000 0x0 build/main.o + .bss.fresult 0x0000000000000000 0x1 build/main.o + .bss.temp32 0x0000000000000000 0x4 build/main.o + .text 0x0000000000000000 0x0 build/bsp_driver_sd.o + .data 0x0000000000000000 0x0 build/bsp_driver_sd.o + .bss 0x0000000000000000 0x0 build/bsp_driver_sd.o + .text.BSP_SD_ITConfig + 0x0000000000000000 0x4 build/bsp_driver_sd.o + .text.BSP_SD_ReadBlocks_DMA + 0x0000000000000000 0x18 build/bsp_driver_sd.o + .text.BSP_SD_WriteBlocks_DMA + 0x0000000000000000 0x18 build/bsp_driver_sd.o + .text.BSP_SD_Erase + 0x0000000000000000 0x18 build/bsp_driver_sd.o + .text.BSP_SD_AbortCallback + 0x0000000000000000 0x2 build/bsp_driver_sd.o + .text.HAL_SD_AbortCallback + 0x0000000000000000 0x8 build/bsp_driver_sd.o + .text.BSP_SD_WriteCpltCallback + 0x0000000000000000 0x2 build/bsp_driver_sd.o + .text.HAL_SD_TxCpltCallback + 0x0000000000000000 0x8 build/bsp_driver_sd.o + .text.BSP_SD_ReadCpltCallback + 0x0000000000000000 0x2 build/bsp_driver_sd.o + .text.HAL_SD_RxCpltCallback + 0x0000000000000000 0x8 build/bsp_driver_sd.o + .text 0x0000000000000000 0x0 build/sd_diskio.o + .data 0x0000000000000000 0x0 build/sd_diskio.o + .bss 0x0000000000000000 0x0 build/sd_diskio.o + .text 0x0000000000000000 0x0 build/fatfs.o + .data 0x0000000000000000 0x0 build/fatfs.o + .bss 0x0000000000000000 0x0 build/fatfs.o + .text.get_fattime + 0x0000000000000000 0x4 build/fatfs.o + .bss.SDFatFS 0x0000000000000000 0x1034 build/fatfs.o + .bss.SDFile 0x0000000000000000 0x1030 build/fatfs.o + .text 0x0000000000000000 0x0 build/fatfs_platform.o + .data 0x0000000000000000 0x0 build/fatfs_platform.o + .bss 0x0000000000000000 0x0 build/fatfs_platform.o + .text 0x0000000000000000 0x0 build/stm32f7xx_it.o + .data 0x0000000000000000 0x0 build/stm32f7xx_it.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_it.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_msp.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_msp.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_msp.o + .text.HAL_ADC_MspDeInit + 0x0000000000000000 0x68 build/stm32f7xx_hal_msp.o + .text.HAL_SD_MspDeInit + 0x0000000000000000 0x3c build/stm32f7xx_hal_msp.o + .text.HAL_TIM_Base_MspDeInit + 0x0000000000000000 0x28 build/stm32f7xx_hal_msp.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_adc.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_adc.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_adc.o + .text.HAL_ADC_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_adc.o + .text.HAL_ADC_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_adc.o + .text.HAL_ADC_DeInit + 0x0000000000000000 0x3a build/stm32f7xx_hal_adc.o + .text.HAL_ADC_PollForEvent + 0x0000000000000000 0x7e build/stm32f7xx_hal_adc.o + .text.HAL_ADC_Start_IT + 0x0000000000000000 0x144 build/stm32f7xx_hal_adc.o + .text.HAL_ADC_Stop_IT + 0x0000000000000000 0x4c build/stm32f7xx_hal_adc.o + .text.HAL_ADC_Start_DMA + 0x0000000000000000 0x180 build/stm32f7xx_hal_adc.o + .text.HAL_ADC_Stop_DMA + 0x0000000000000000 0x78 build/stm32f7xx_hal_adc.o + .text.HAL_ADC_ConvHalfCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_adc.o + .text.ADC_DMAHalfConvCplt + 0x0000000000000000 0xa build/stm32f7xx_hal_adc.o + .text.ADC_DMAError + 0x0000000000000000 0x16 build/stm32f7xx_hal_adc.o + .text.ADC_DMAConvCplt + 0x0000000000000000 0x72 build/stm32f7xx_hal_adc.o + .text.HAL_ADC_AnalogWDGConfig + 0x0000000000000000 0x78 build/stm32f7xx_hal_adc.o + .text.HAL_ADC_GetState + 0x0000000000000000 0x4 build/stm32f7xx_hal_adc.o + .text.HAL_ADC_GetError + 0x0000000000000000 0x4 build/stm32f7xx_hal_adc.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_adc_ex.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_adc_ex.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_adc_ex.o + .text.ADC_MultiModeDMAError + 0x0000000000000000 0x16 build/stm32f7xx_hal_adc_ex.o + .text.ADC_MultiModeDMAHalfConvCplt + 0x0000000000000000 0xa build/stm32f7xx_hal_adc_ex.o + .text.ADC_MultiModeDMAConvCplt + 0x0000000000000000 0x62 build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStart + 0x0000000000000000 0xfc build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStart_IT + 0x0000000000000000 0x104 build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStop + 0x0000000000000000 0x64 build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedPollForConversion + 0x0000000000000000 0xb2 build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedStop_IT + 0x0000000000000000 0x6c build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedGetValue + 0x0000000000000000 0x40 build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeStart_DMA + 0x0000000000000000 0x130 build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeStop_DMA + 0x0000000000000000 0x64 build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeGetValue + 0x0000000000000000 0xc build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_InjectedConfigChannel + 0x0000000000000000 0x20c build/stm32f7xx_hal_adc_ex.o + .text.HAL_ADCEx_MultiModeConfigChannel + 0x0000000000000000 0x58 build/stm32f7xx_hal_adc_ex.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_rcc.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_rcc.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_DeInit + 0x0000000000000000 0x158 build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_MCOConfig + 0x0000000000000000 0x98 build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_EnableCSS + 0x0000000000000000 0x10 build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_DisableCSS + 0x0000000000000000 0x10 build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_GetHCLKFreq + 0x0000000000000000 0xc build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_GetPCLK1Freq + 0x0000000000000000 0x20 build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_GetPCLK2Freq + 0x0000000000000000 0x20 build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_GetOscConfig + 0x0000000000000000 0xe0 build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_GetClockConfig + 0x0000000000000000 0x3c build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_CSSCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_rcc.o + .text.HAL_RCC_NMI_IRQHandler + 0x0000000000000000 0x20 build/stm32f7xx_hal_rcc.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_rcc_ex.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_rcc_ex.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKConfig + 0x0000000000000000 0x188 build/stm32f7xx_hal_rcc_ex.o + .text.HAL_RCCEx_GetPeriphCLKFreq + 0x0000000000000000 0x1e4 build/stm32f7xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnablePLLI2S + 0x0000000000000000 0x78 build/stm32f7xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisablePLLI2S + 0x0000000000000000 0x34 build/stm32f7xx_hal_rcc_ex.o + .text.HAL_RCCEx_EnablePLLSAI + 0x0000000000000000 0x78 build/stm32f7xx_hal_rcc_ex.o + .text.HAL_RCCEx_DisablePLLSAI + 0x0000000000000000 0x34 build/stm32f7xx_hal_rcc_ex.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_flash.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_flash.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_flash.o + .text.FLASH_Program_DoubleWord + 0x0000000000000000 0x34 build/stm32f7xx_hal_flash.o + .text.FLASH_Program_Word + 0x0000000000000000 0x28 build/stm32f7xx_hal_flash.o + .text.FLASH_Program_HalfWord + 0x0000000000000000 0x28 build/stm32f7xx_hal_flash.o + .text.FLASH_Program_Byte + 0x0000000000000000 0x24 build/stm32f7xx_hal_flash.o + .text.FLASH_SetErrorCode + 0x0000000000000000 0x74 build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_Program_IT + 0x0000000000000000 0x74 build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_EndOfOperationCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_OperationErrorCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_IRQHandler + 0x0000000000000000 0x10c build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_Unlock + 0x0000000000000000 0x30 build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_Lock + 0x0000000000000000 0x14 build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_OB_Unlock + 0x0000000000000000 0x28 build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_OB_Lock + 0x0000000000000000 0x14 build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_GetError + 0x0000000000000000 0xc build/stm32f7xx_hal_flash.o + .text.FLASH_WaitForLastOperation + 0x0000000000000000 0x64 build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_Program + 0x0000000000000000 0x7c build/stm32f7xx_hal_flash.o + .text.HAL_FLASH_OB_Launch + 0x0000000000000000 0x1c build/stm32f7xx_hal_flash.o + .bss.pFlash 0x0000000000000000 0x1c build/stm32f7xx_hal_flash.o + .debug_info 0x0000000000000000 0x7c7 build/stm32f7xx_hal_flash.o + .debug_abbrev 0x0000000000000000 0x2c4 build/stm32f7xx_hal_flash.o + .debug_loc 0x0000000000000000 0x50e build/stm32f7xx_hal_flash.o + .debug_aranges + 0x0000000000000000 0xa0 build/stm32f7xx_hal_flash.o + .debug_ranges 0x0000000000000000 0x90 build/stm32f7xx_hal_flash.o + .debug_line 0x0000000000000000 0x736 build/stm32f7xx_hal_flash.o + .debug_str 0x0000000000000000 0x528 build/stm32f7xx_hal_flash.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_hal_flash.o + .debug_frame 0x0000000000000000 0x168 build/stm32f7xx_hal_flash.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_hal_flash.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_flash_ex.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_flash_ex.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_flash_ex.o + .text.FLASH_MassErase + 0x0000000000000000 0x4c build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_GetWRP + 0x0000000000000000 0x14 build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_GetUser + 0x0000000000000000 0x14 build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_BOR_LevelConfig + 0x0000000000000000 0x14 build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_GetRDP + 0x0000000000000000 0x1c build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_GetBOR + 0x0000000000000000 0x10 build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_GetBootAddress + 0x0000000000000000 0x18 build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_EnableWRP + 0x0000000000000000 0x20 build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_DisableWRP + 0x0000000000000000 0x1c build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_RDP_LevelConfig + 0x0000000000000000 0x18 build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_UserConfig + 0x0000000000000000 0x44 build/stm32f7xx_hal_flash_ex.o + .text.FLASH_OB_BootAddressConfig + 0x0000000000000000 0x38 build/stm32f7xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBProgram + 0x0000000000000000 0xc4 build/stm32f7xx_hal_flash_ex.o + .text.HAL_FLASHEx_OBGetConfig + 0x0000000000000000 0x32 build/stm32f7xx_hal_flash_ex.o + .text.FLASH_Erase_Sector + 0x0000000000000000 0x60 build/stm32f7xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase + 0x0000000000000000 0x98 build/stm32f7xx_hal_flash_ex.o + .text.HAL_FLASHEx_Erase_IT + 0x0000000000000000 0x68 build/stm32f7xx_hal_flash_ex.o + .debug_info 0x0000000000000000 0x9eb build/stm32f7xx_hal_flash_ex.o + .debug_abbrev 0x0000000000000000 0x285 build/stm32f7xx_hal_flash_ex.o + .debug_loc 0x0000000000000000 0x8fc build/stm32f7xx_hal_flash_ex.o + .debug_aranges + 0x0000000000000000 0xa0 build/stm32f7xx_hal_flash_ex.o + .debug_ranges 0x0000000000000000 0x90 build/stm32f7xx_hal_flash_ex.o + .debug_line 0x0000000000000000 0x748 build/stm32f7xx_hal_flash_ex.o + .debug_str 0x0000000000000000 0x607 build/stm32f7xx_hal_flash_ex.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_hal_flash_ex.o + .debug_frame 0x0000000000000000 0x190 build/stm32f7xx_hal_flash_ex.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_hal_flash_ex.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_gpio.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_gpio.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_gpio.o + .text.HAL_GPIO_DeInit + 0x0000000000000000 0x14c build/stm32f7xx_hal_gpio.o + .text.HAL_GPIO_LockPin + 0x0000000000000000 0x2e build/stm32f7xx_hal_gpio.o + .text.HAL_GPIO_EXTI_Callback + 0x0000000000000000 0x2 build/stm32f7xx_hal_gpio.o + .text.HAL_GPIO_EXTI_IRQHandler + 0x0000000000000000 0x1c build/stm32f7xx_hal_gpio.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_dma.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_dma.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_dma.o + .text.DMA_SetConfig + 0x0000000000000000 0x2c build/stm32f7xx_hal_dma.o + .text.DMA_CalcBaseAndBitshift + 0x0000000000000000 0x40 build/stm32f7xx_hal_dma.o + .text.DMA_CheckFifoParam + 0x0000000000000000 0x8e build/stm32f7xx_hal_dma.o + .text.HAL_DMA_Init + 0x0000000000000000 0xd0 build/stm32f7xx_hal_dma.o + .text.HAL_DMA_DeInit + 0x0000000000000000 0x64 build/stm32f7xx_hal_dma.o + .text.HAL_DMA_Start + 0x0000000000000000 0x48 build/stm32f7xx_hal_dma.o + .text.HAL_DMA_Start_IT + 0x0000000000000000 0x74 build/stm32f7xx_hal_dma.o + .text.HAL_DMA_Abort + 0x0000000000000000 0x94 build/stm32f7xx_hal_dma.o + .text.HAL_DMA_Abort_IT + 0x0000000000000000 0x26 build/stm32f7xx_hal_dma.o + .text.HAL_DMA_PollForTransfer + 0x0000000000000000 0x128 build/stm32f7xx_hal_dma.o + .text.HAL_DMA_IRQHandler + 0x0000000000000000 0x1dc build/stm32f7xx_hal_dma.o + .text.HAL_DMA_RegisterCallback + 0x0000000000000000 0x5a build/stm32f7xx_hal_dma.o + .text.HAL_DMA_UnRegisterCallback + 0x0000000000000000 0x6e build/stm32f7xx_hal_dma.o + .text.HAL_DMA_GetState + 0x0000000000000000 0x6 build/stm32f7xx_hal_dma.o + .text.HAL_DMA_GetError + 0x0000000000000000 0x4 build/stm32f7xx_hal_dma.o + .rodata.flagBitshiftOffset.0 + 0x0000000000000000 0x8 build/stm32f7xx_hal_dma.o + .debug_info 0x0000000000000000 0xbb9 build/stm32f7xx_hal_dma.o + .debug_abbrev 0x0000000000000000 0x2ff build/stm32f7xx_hal_dma.o + .debug_loc 0x0000000000000000 0xd6d build/stm32f7xx_hal_dma.o + .debug_aranges + 0x0000000000000000 0x90 build/stm32f7xx_hal_dma.o + .debug_ranges 0x0000000000000000 0x80 build/stm32f7xx_hal_dma.o + .debug_line 0x0000000000000000 0xda9 build/stm32f7xx_hal_dma.o + .debug_str 0x0000000000000000 0x781 build/stm32f7xx_hal_dma.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_hal_dma.o + .debug_frame 0x0000000000000000 0x188 build/stm32f7xx_hal_dma.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_hal_dma.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_dma_ex.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_dma_ex.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_dma_ex.o + .text.DMA_MultiBufferSetConfig + 0x0000000000000000 0x24 build/stm32f7xx_hal_dma_ex.o + .text.HAL_DMAEx_MultiBufferStart + 0x0000000000000000 0x5e build/stm32f7xx_hal_dma_ex.o + .text.HAL_DMAEx_MultiBufferStart_IT + 0x0000000000000000 0xeec build/stm32f7xx_hal_dma_ex.o + .text.HAL_DMAEx_ChangeMemory + 0x0000000000000000 0x10 build/stm32f7xx_hal_dma_ex.o + .debug_info 0x0000000000000000 0x5ff build/stm32f7xx_hal_dma_ex.o + .debug_abbrev 0x0000000000000000 0x1d6 build/stm32f7xx_hal_dma_ex.o + .debug_loc 0x0000000000000000 0x46f build/stm32f7xx_hal_dma_ex.o + .debug_aranges + 0x0000000000000000 0x38 build/stm32f7xx_hal_dma_ex.o + .debug_ranges 0x0000000000000000 0x28 build/stm32f7xx_hal_dma_ex.o + .debug_line 0x0000000000000000 0x91f build/stm32f7xx_hal_dma_ex.o + .debug_str 0x0000000000000000 0x55e build/stm32f7xx_hal_dma_ex.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_hal_dma_ex.o + .debug_frame 0x0000000000000000 0x74 build/stm32f7xx_hal_dma_ex.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_hal_dma_ex.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_pwr.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_pwr.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_DeInit + 0x0000000000000000 0x18 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_EnableBkUpAccess + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_DisableBkUpAccess + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_ConfigPVD + 0x0000000000000000 0x84 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_EnablePVD + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_DisablePVD + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_EnableWakeUpPin + 0x0000000000000000 0x20 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_DisableWakeUpPin + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_EnterSLEEPMode + 0x0000000000000000 0x28 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_EnterSTOPMode + 0x0000000000000000 0x40 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_EnterSTANDBYMode + 0x0000000000000000 0x20 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_PVDCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_PVD_IRQHandler + 0x0000000000000000 0x20 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_EnableSleepOnExit + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_DisableSleepOnExit + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_EnableSEVOnPend + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr.o + .text.HAL_PWR_DisableSEVOnPend + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr.o + .debug_info 0x0000000000000000 0xa94 build/stm32f7xx_hal_pwr.o + .debug_abbrev 0x0000000000000000 0x1cf build/stm32f7xx_hal_pwr.o + .debug_loc 0x0000000000000000 0x79 build/stm32f7xx_hal_pwr.o + .debug_aranges + 0x0000000000000000 0xa0 build/stm32f7xx_hal_pwr.o + .debug_ranges 0x0000000000000000 0x90 build/stm32f7xx_hal_pwr.o + .debug_line 0x0000000000000000 0x3d1 build/stm32f7xx_hal_pwr.o + .debug_str 0x0000000000000000 0x648 build/stm32f7xx_hal_pwr.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_hal_pwr.o + .debug_frame 0x0000000000000000 0x128 build/stm32f7xx_hal_pwr.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_hal_pwr.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_pwr_ex.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_pwr_ex.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableBkUpReg + 0x0000000000000000 0x3c build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableBkUpReg + 0x0000000000000000 0x3c build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableFlashPowerDown + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableFlashPowerDown + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableMainRegulatorLowVoltage + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableMainRegulatorLowVoltage + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_EnableLowRegulatorLowVoltage + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableLowRegulatorLowVoltage + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_DisableOverDrive + 0x0000000000000000 0x7c build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_EnterUnderDriveSTOPMode + 0x0000000000000000 0x98 build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_GetVoltageRange + 0x0000000000000000 0x10 build/stm32f7xx_hal_pwr_ex.o + .text.HAL_PWREx_ControlVoltageScaling + 0x0000000000000000 0xc0 build/stm32f7xx_hal_pwr_ex.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_cortex.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_cortex.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_cortex.o + .text.HAL_NVIC_DisableIRQ + 0x0000000000000000 0x24 build/stm32f7xx_hal_cortex.o + .text.HAL_NVIC_SystemReset + 0x0000000000000000 0x24 build/stm32f7xx_hal_cortex.o + .text.HAL_MPU_Disable + 0x0000000000000000 0x1c build/stm32f7xx_hal_cortex.o + .text.HAL_MPU_Enable + 0x0000000000000000 0x20 build/stm32f7xx_hal_cortex.o + .text.HAL_MPU_EnableRegion + 0x0000000000000000 0x18 build/stm32f7xx_hal_cortex.o + .text.HAL_MPU_DisableRegion + 0x0000000000000000 0x18 build/stm32f7xx_hal_cortex.o + .text.HAL_MPU_ConfigRegion + 0x0000000000000000 0x58 build/stm32f7xx_hal_cortex.o + .text.HAL_NVIC_GetPriorityGrouping + 0x0000000000000000 0x10 build/stm32f7xx_hal_cortex.o + .text.HAL_NVIC_GetPriority + 0x0000000000000000 0x5c build/stm32f7xx_hal_cortex.o + .text.HAL_NVIC_SetPendingIRQ + 0x0000000000000000 0x1c build/stm32f7xx_hal_cortex.o + .text.HAL_NVIC_GetPendingIRQ + 0x0000000000000000 0x24 build/stm32f7xx_hal_cortex.o + .text.HAL_NVIC_ClearPendingIRQ + 0x0000000000000000 0x1c build/stm32f7xx_hal_cortex.o + .text.HAL_NVIC_GetActive + 0x0000000000000000 0x24 build/stm32f7xx_hal_cortex.o + .text.HAL_SYSTICK_CLKSourceConfig + 0x0000000000000000 0x20 build/stm32f7xx_hal_cortex.o + .text.HAL_SYSTICK_Callback + 0x0000000000000000 0x2 build/stm32f7xx_hal_cortex.o + .text.HAL_SYSTICK_IRQHandler + 0x0000000000000000 0x8 build/stm32f7xx_hal_cortex.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal.o + .text.HAL_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal.o + .text.HAL_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal.o + .text.HAL_DeInit + 0x0000000000000000 0x2c build/stm32f7xx_hal.o + .text.HAL_GetTickPrio + 0x0000000000000000 0xc build/stm32f7xx_hal.o + .text.HAL_SetTickFreq + 0x0000000000000000 0x2c build/stm32f7xx_hal.o + .text.HAL_GetTickFreq + 0x0000000000000000 0xc build/stm32f7xx_hal.o + .text.HAL_SuspendTick + 0x0000000000000000 0xe build/stm32f7xx_hal.o + .text.HAL_ResumeTick + 0x0000000000000000 0xe build/stm32f7xx_hal.o + .text.HAL_GetHalVersion + 0x0000000000000000 0x8 build/stm32f7xx_hal.o + .text.HAL_GetREVID + 0x0000000000000000 0xc build/stm32f7xx_hal.o + .text.HAL_GetDEVID + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_GetUIDw0 + 0x0000000000000000 0xc build/stm32f7xx_hal.o + .text.HAL_GetUIDw1 + 0x0000000000000000 0xc build/stm32f7xx_hal.o + .text.HAL_GetUIDw2 + 0x0000000000000000 0xc build/stm32f7xx_hal.o + .text.HAL_DBGMCU_EnableDBGSleepMode + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_DBGMCU_DisableDBGSleepMode + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_DBGMCU_EnableDBGStopMode + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_DBGMCU_DisableDBGStopMode + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_DBGMCU_EnableDBGStandbyMode + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_DBGMCU_DisableDBGStandbyMode + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_EnableCompensationCell + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_DisableCompensationCell + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_EnableFMCMemorySwapping + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_DisableFMCMemorySwapping + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_EnableMemorySwappingBank + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text.HAL_DisableMemorySwappingBank + 0x0000000000000000 0x10 build/stm32f7xx_hal.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_i2c.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_i2c.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_i2c.o + .text.I2C_Flush_TXDR + 0x0000000000000000 0x22 build/stm32f7xx_hal_i2c.o + .text.I2C_TransferConfig + 0x0000000000000000 0x3c build/stm32f7xx_hal_i2c.o + .text.I2C_Enable_IRQ + 0x0000000000000000 0x9c build/stm32f7xx_hal_i2c.o + .text.I2C_Disable_IRQ + 0x0000000000000000 0x70 build/stm32f7xx_hal_i2c.o + .text.I2C_ConvertOtherXferOptions + 0x0000000000000000 0x1e build/stm32f7xx_hal_i2c.o + .text.I2C_IsErrorOccurred + 0x0000000000000000 0x118 build/stm32f7xx_hal_i2c.o + .text.I2C_WaitOnTXISFlagUntilTimeout + 0x0000000000000000 0x60 build/stm32f7xx_hal_i2c.o + .text.I2C_WaitOnFlagUntilTimeout + 0x0000000000000000 0x7c build/stm32f7xx_hal_i2c.o + .text.I2C_RequestMemoryWrite + 0x0000000000000000 0x7c build/stm32f7xx_hal_i2c.o + .text.I2C_RequestMemoryRead + 0x0000000000000000 0x78 build/stm32f7xx_hal_i2c.o + .text.I2C_WaitOnSTOPFlagUntilTimeout + 0x0000000000000000 0x5e build/stm32f7xx_hal_i2c.o + .text.I2C_WaitOnRXNEFlagUntilTimeout + 0x0000000000000000 0xaa build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Init + 0x0000000000000000 0xc8 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_DeInit + 0x0000000000000000 0x32 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Transmit + 0x0000000000000000 0x1a4 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Receive + 0x0000000000000000 0x17c build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Slave_Transmit + 0x0000000000000000 0x1f4 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Slave_Receive + 0x0000000000000000 0x184 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Transmit_IT + 0x0000000000000000 0xc8 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Receive_IT + 0x0000000000000000 0x98 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Slave_Transmit_IT + 0x0000000000000000 0x8c build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Slave_Receive_IT + 0x0000000000000000 0x64 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Transmit_DMA + 0x0000000000000000 0x174 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Receive_DMA + 0x0000000000000000 0x150 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Slave_Transmit_DMA + 0x0000000000000000 0x140 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Slave_Receive_DMA + 0x0000000000000000 0xf4 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Mem_Write + 0x0000000000000000 0x1aa build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Mem_Read + 0x0000000000000000 0x1b0 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Mem_Write_IT + 0x0000000000000000 0xb8 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Mem_Read_IT + 0x0000000000000000 0xb4 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Mem_Write_DMA + 0x0000000000000000 0x134 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Mem_Read_DMA + 0x0000000000000000 0x134 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_IsDeviceReady + 0x0000000000000000 0x13c build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Transmit_IT + 0x0000000000000000 0x10c build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Transmit_DMA + 0x0000000000000000 0x1e4 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Receive_IT + 0x0000000000000000 0xb4 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Seq_Receive_DMA + 0x0000000000000000 0x174 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Transmit_IT + 0x0000000000000000 0xe4 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Transmit_DMA + 0x0000000000000000 0x1ac build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Receive_IT + 0x0000000000000000 0xe4 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Slave_Seq_Receive_DMA + 0x0000000000000000 0x1ac build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_EnableListen_IT + 0x0000000000000000 0x2c build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_DisableListen_IT + 0x0000000000000000 0x3a build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_Master_Abort_IT + 0x0000000000000000 0x88 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_EV_IRQHandler + 0x0000000000000000 0x10 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_MasterTxCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_MasterRxCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.I2C_ITMasterSeqCplt + 0x0000000000000000 0x54 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_SlaveTxCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_SlaveRxCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.I2C_ITSlaveSeqCplt + 0x0000000000000000 0x82 build/stm32f7xx_hal_i2c.o + .text.I2C_DMASlaveTransmitCplt + 0x0000000000000000 0x22 build/stm32f7xx_hal_i2c.o + .text.I2C_DMASlaveReceiveCplt + 0x0000000000000000 0x26 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_AddrCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.I2C_ITAddrCplt + 0x0000000000000000 0xa0 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_ListenCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.I2C_ITListenCplt + 0x0000000000000000 0x68 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_MemTxCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_MemRxCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_ErrorCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_AbortCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_i2c.o + .text.I2C_TreatErrorCallback + 0x0000000000000000 0x2e build/stm32f7xx_hal_i2c.o + .text.I2C_ITError + 0x0000000000000000 0x130 build/stm32f7xx_hal_i2c.o + .text.I2C_ITSlaveCplt + 0x0000000000000000 0x1f4 build/stm32f7xx_hal_i2c.o + .text.I2C_Slave_ISR_IT + 0x0000000000000000 0x14a build/stm32f7xx_hal_i2c.o + .text.I2C_ITMasterCplt + 0x0000000000000000 0x12e build/stm32f7xx_hal_i2c.o + .text.I2C_Master_ISR_IT + 0x0000000000000000 0x1ac build/stm32f7xx_hal_i2c.o + .text.I2C_Mem_ISR_DMA + 0x0000000000000000 0x1d0 build/stm32f7xx_hal_i2c.o + .text.I2C_Slave_ISR_DMA + 0x0000000000000000 0x120 build/stm32f7xx_hal_i2c.o + .text.I2C_Master_ISR_DMA + 0x0000000000000000 0x154 build/stm32f7xx_hal_i2c.o + .text.I2C_DMAError + 0x0000000000000000 0x44 build/stm32f7xx_hal_i2c.o + .text.I2C_DMAMasterTransmitCplt + 0x0000000000000000 0x5a build/stm32f7xx_hal_i2c.o + .text.I2C_DMAMasterReceiveCplt + 0x0000000000000000 0x6a build/stm32f7xx_hal_i2c.o + .text.I2C_Mem_ISR_IT + 0x0000000000000000 0x1c0 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_ER_IRQHandler + 0x0000000000000000 0x6a build/stm32f7xx_hal_i2c.o + .text.I2C_DMAAbort + 0x0000000000000000 0x1a build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_GetState + 0x0000000000000000 0x6 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_GetMode + 0x0000000000000000 0x6 build/stm32f7xx_hal_i2c.o + .text.HAL_I2C_GetError + 0x0000000000000000 0x4 build/stm32f7xx_hal_i2c.o + .debug_info 0x0000000000000000 0x468f build/stm32f7xx_hal_i2c.o + .debug_abbrev 0x0000000000000000 0x2c4 build/stm32f7xx_hal_i2c.o + .debug_loc 0x0000000000000000 0x5e72 build/stm32f7xx_hal_i2c.o + .debug_aranges + 0x0000000000000000 0x2a0 build/stm32f7xx_hal_i2c.o + .debug_ranges 0x0000000000000000 0x290 build/stm32f7xx_hal_i2c.o + .debug_line 0x0000000000000000 0x5143 build/stm32f7xx_hal_i2c.o + .debug_str 0x0000000000000000 0x106d build/stm32f7xx_hal_i2c.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_hal_i2c.o + .debug_frame 0x0000000000000000 0x984 build/stm32f7xx_hal_i2c.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_hal_i2c.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_i2c_ex.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_i2c_ex.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_i2c_ex.o + .text.HAL_I2CEx_ConfigAnalogFilter + 0x0000000000000000 0x5c build/stm32f7xx_hal_i2c_ex.o + .text.HAL_I2CEx_ConfigDigitalFilter + 0x0000000000000000 0x58 build/stm32f7xx_hal_i2c_ex.o + .text.HAL_I2CEx_EnableFastModePlus + 0x0000000000000000 0x2c build/stm32f7xx_hal_i2c_ex.o + .text.HAL_I2CEx_DisableFastModePlus + 0x0000000000000000 0x2c build/stm32f7xx_hal_i2c_ex.o + .debug_info 0x0000000000000000 0xab8 build/stm32f7xx_hal_i2c_ex.o + .debug_abbrev 0x0000000000000000 0x1b5 build/stm32f7xx_hal_i2c_ex.o + .debug_loc 0x0000000000000000 0x19c build/stm32f7xx_hal_i2c_ex.o + .debug_aranges + 0x0000000000000000 0x38 build/stm32f7xx_hal_i2c_ex.o + .debug_ranges 0x0000000000000000 0x28 build/stm32f7xx_hal_i2c_ex.o + .debug_line 0x0000000000000000 0x2f8 build/stm32f7xx_hal_i2c_ex.o + .debug_str 0x0000000000000000 0x8ed build/stm32f7xx_hal_i2c_ex.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_hal_i2c_ex.o + .debug_frame 0x0000000000000000 0x60 build/stm32f7xx_hal_i2c_ex.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_hal_i2c_ex.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_exti.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_exti.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_exti.o + .text.HAL_EXTI_SetConfigLine + 0x0000000000000000 0xd4 build/stm32f7xx_hal_exti.o + .text.HAL_EXTI_GetConfigLine + 0x0000000000000000 0xa8 build/stm32f7xx_hal_exti.o + .text.HAL_EXTI_ClearConfigLine + 0x0000000000000000 0x88 build/stm32f7xx_hal_exti.o + .text.HAL_EXTI_RegisterCallback + 0x0000000000000000 0xe build/stm32f7xx_hal_exti.o + .text.HAL_EXTI_GetHandle + 0x0000000000000000 0xc build/stm32f7xx_hal_exti.o + .text.HAL_EXTI_IRQHandler + 0x0000000000000000 0x24 build/stm32f7xx_hal_exti.o + .text.HAL_EXTI_GetPending + 0x0000000000000000 0x1c build/stm32f7xx_hal_exti.o + .text.HAL_EXTI_ClearPending + 0x0000000000000000 0x14 build/stm32f7xx_hal_exti.o + .text.HAL_EXTI_GenerateSWI + 0x0000000000000000 0x14 build/stm32f7xx_hal_exti.o + .debug_info 0x0000000000000000 0x613 build/stm32f7xx_hal_exti.o + .debug_abbrev 0x0000000000000000 0x1ef build/stm32f7xx_hal_exti.o + .debug_loc 0x0000000000000000 0x5c8 build/stm32f7xx_hal_exti.o + .debug_aranges + 0x0000000000000000 0x60 build/stm32f7xx_hal_exti.o + .debug_ranges 0x0000000000000000 0x50 build/stm32f7xx_hal_exti.o + .debug_line 0x0000000000000000 0x543 build/stm32f7xx_hal_exti.o + .debug_str 0x0000000000000000 0x3f6 build/stm32f7xx_hal_exti.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_hal_exti.o + .debug_frame 0x0000000000000000 0xe8 build/stm32f7xx_hal_exti.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_hal_exti.o + .text 0x0000000000000000 0x0 build/stm32f7xx_ll_rcc.o + .data 0x0000000000000000 0x0 build/stm32f7xx_ll_rcc.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_DeInit + 0x0000000000000000 0x98 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetCECClockFreq + 0x0000000000000000 0x30 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetSystemClocksFreq + 0x0000000000000000 0x20 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetI2CClockFreq + 0x0000000000000000 0x120 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetLPTIMClockFreq + 0x0000000000000000 0x6c build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetDFSDMClockFreq + 0x0000000000000000 0x28 build/stm32f7xx_ll_rcc.o + .text.RCC_PLL_GetFreqDomain_48M + 0x0000000000000000 0x40 build/stm32f7xx_ll_rcc.o + .text.RCC_PLLSAI_GetFreqDomain_SAI + 0x0000000000000000 0x50 build/stm32f7xx_ll_rcc.o + .text.RCC_PLLSAI_GetFreqDomain_48M + 0x0000000000000000 0x48 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetSDMMCClockFreq + 0x0000000000000000 0x94 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetRNGClockFreq + 0x0000000000000000 0x34 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetUSBClockFreq + 0x0000000000000000 0x34 build/stm32f7xx_ll_rcc.o + .text.RCC_PLLSAI_GetFreqDomain_LTDC + 0x0000000000000000 0x58 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetLTDCClockFreq + 0x0000000000000000 0x18 build/stm32f7xx_ll_rcc.o + .text.RCC_PLLI2S_GetFreqDomain_SAI + 0x0000000000000000 0x50 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetSAIClockFreq + 0x0000000000000000 0x11c build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetDFSDMAudioClockFreq + 0x0000000000000000 0x24 build/stm32f7xx_ll_rcc.o + .text.RCC_PLLI2S_GetFreqDomain_SPDIFRX + 0x0000000000000000 0x48 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetSPDIFRXClockFreq + 0x0000000000000000 0x18 build/stm32f7xx_ll_rcc.o + .text.RCC_PLLI2S_GetFreqDomain_I2S + 0x0000000000000000 0x44 build/stm32f7xx_ll_rcc.o + .text.LL_RCC_GetI2SClockFreq + 0x0000000000000000 0x34 build/stm32f7xx_ll_rcc.o + .rodata.aRCC_PLLSAIDIVRPrescTable + 0x0000000000000000 0x4 build/stm32f7xx_ll_rcc.o + .text 0x0000000000000000 0x0 build/stm32f7xx_ll_utils.o + .data 0x0000000000000000 0x0 build/stm32f7xx_ll_utils.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_ll_utils.o + .text.UTILS_GetPLLOutputFrequency + 0x0000000000000000 0x20 build/stm32f7xx_ll_utils.o + .text.UTILS_PLL_IsBusy + 0x0000000000000000 0x30 build/stm32f7xx_ll_utils.o + .text.LL_Init1msTick + 0x0000000000000000 0x20 build/stm32f7xx_ll_utils.o + .text.LL_mDelay + 0x0000000000000000 0x2a build/stm32f7xx_ll_utils.o + .text.LL_SetSystemCoreClock + 0x0000000000000000 0xc build/stm32f7xx_ll_utils.o + .text.LL_SetFlashLatency + 0x0000000000000000 0x164 build/stm32f7xx_ll_utils.o + .text.UTILS_EnablePLLAndSwitchSystem + 0x0000000000000000 0xac build/stm32f7xx_ll_utils.o + .text.LL_PLL_ConfigSystemClock_HSI + 0x0000000000000000 0x64 build/stm32f7xx_ll_utils.o + .text.LL_PLL_ConfigSystemClock_HSE + 0x0000000000000000 0x84 build/stm32f7xx_ll_utils.o + .debug_info 0x0000000000000000 0xdcd build/stm32f7xx_ll_utils.o + .debug_abbrev 0x0000000000000000 0x2f3 build/stm32f7xx_ll_utils.o + .debug_loc 0x0000000000000000 0x8f7 build/stm32f7xx_ll_utils.o + .debug_aranges + 0x0000000000000000 0x60 build/stm32f7xx_ll_utils.o + .debug_ranges 0x0000000000000000 0x50 build/stm32f7xx_ll_utils.o + .debug_line 0x0000000000000000 0x7ea build/stm32f7xx_ll_utils.o + .debug_str 0x0000000000000000 0x786 build/stm32f7xx_ll_utils.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_ll_utils.o + .debug_frame 0x0000000000000000 0xec build/stm32f7xx_ll_utils.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_ll_utils.o + .text 0x0000000000000000 0x0 build/stm32f7xx_ll_exti.o + .data 0x0000000000000000 0x0 build/stm32f7xx_ll_exti.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_ll_exti.o + .text.LL_EXTI_DeInit + 0x0000000000000000 0x1c build/stm32f7xx_ll_exti.o + .text.LL_EXTI_Init + 0x0000000000000000 0xd8 build/stm32f7xx_ll_exti.o + .text.LL_EXTI_StructInit + 0x0000000000000000 0xe build/stm32f7xx_ll_exti.o + .debug_info 0x0000000000000000 0x536 build/stm32f7xx_ll_exti.o + .debug_abbrev 0x0000000000000000 0x1d9 build/stm32f7xx_ll_exti.o + .debug_loc 0x0000000000000000 0x2eb build/stm32f7xx_ll_exti.o + .debug_aranges + 0x0000000000000000 0x30 build/stm32f7xx_ll_exti.o + .debug_ranges 0x0000000000000000 0x50 build/stm32f7xx_ll_exti.o + .debug_line 0x0000000000000000 0x326 build/stm32f7xx_ll_exti.o + .debug_str 0x0000000000000000 0x399 build/stm32f7xx_ll_exti.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_ll_exti.o + .debug_frame 0x0000000000000000 0x50 build/stm32f7xx_ll_exti.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_ll_exti.o + .text 0x0000000000000000 0x0 build/stm32f7xx_ll_gpio.o + .data 0x0000000000000000 0x0 build/stm32f7xx_ll_gpio.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_ll_gpio.o + .text.LL_GPIO_DeInit + 0x0000000000000000 0x17c build/stm32f7xx_ll_gpio.o + .text.LL_GPIO_StructInit + 0x0000000000000000 0x16 build/stm32f7xx_ll_gpio.o + .text 0x0000000000000000 0x0 build/stm32f7xx_ll_dma.o + .data 0x0000000000000000 0x0 build/stm32f7xx_ll_dma.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_ll_dma.o + .text.LL_DMA_DeInit + 0x0000000000000000 0x204 build/stm32f7xx_ll_dma.o + .text.LL_DMA_Init + 0x0000000000000000 0x98 build/stm32f7xx_ll_dma.o + .text.LL_DMA_StructInit + 0x0000000000000000 0x22 build/stm32f7xx_ll_dma.o + .rodata.STREAM_OFFSET_TAB + 0x0000000000000000 0x8 build/stm32f7xx_ll_dma.o + .debug_info 0x0000000000000000 0xb33 build/stm32f7xx_ll_dma.o + .debug_abbrev 0x0000000000000000 0x26c build/stm32f7xx_ll_dma.o + .debug_loc 0x0000000000000000 0x629 build/stm32f7xx_ll_dma.o + .debug_aranges + 0x0000000000000000 0x30 build/stm32f7xx_ll_dma.o + .debug_ranges 0x0000000000000000 0x50 build/stm32f7xx_ll_dma.o + .debug_line 0x0000000000000000 0x51f build/stm32f7xx_ll_dma.o + .debug_str 0x0000000000000000 0x5fd build/stm32f7xx_ll_dma.o + .comment 0x0000000000000000 0x34 build/stm32f7xx_ll_dma.o + .debug_frame 0x0000000000000000 0x64 build/stm32f7xx_ll_dma.o + .ARM.attributes + 0x0000000000000000 0x32 build/stm32f7xx_ll_dma.o + .text 0x0000000000000000 0x0 build/stm32f7xx_ll_sdmmc.o + .data 0x0000000000000000 0x0 build/stm32f7xx_ll_sdmmc.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_PowerState_OFF + 0x0000000000000000 0x8 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_GetDataCounter + 0x0000000000000000 0x4 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_GetFIFOCount + 0x0000000000000000 0x6 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_SetSDMMCReadWaitMode + 0x0000000000000000 0xe build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_CmdSDEraseStartAdd + 0x0000000000000000 0x30 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_CmdSDEraseEndAdd + 0x0000000000000000 0x30 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_CmdEraseStartAdd + 0x0000000000000000 0x30 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_CmdEraseEndAdd + 0x0000000000000000 0x30 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_CmdErase + 0x0000000000000000 0x30 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_CmdSetRelAddMmc + 0x0000000000000000 0x32 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_CmdStatusRegister + 0x0000000000000000 0x30 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_CmdSwitch + 0x0000000000000000 0x30 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_CmdSendEXTCSD + 0x0000000000000000 0x30 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_CmdOpCondition + 0x0000000000000000 0x2a build/stm32f7xx_ll_sdmmc.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_sd.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_sd.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_sd.o + .text.SD_DMATransmitCplt + 0x0000000000000000 0xe build/stm32f7xx_hal_sd.o + .text.SD_PowerOFF + 0x0000000000000000 0xa build/stm32f7xx_hal_sd.o + .text.SD_Read_IT + 0x0000000000000000 0x38 build/stm32f7xx_hal_sd.o + .text.SD_Write_IT + 0x0000000000000000 0x48 build/stm32f7xx_hal_sd.o + .text.SD_SendSDStatus + 0x0000000000000000 0x106 build/stm32f7xx_hal_sd.o + .text.HAL_SD_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_sd.o + .text.HAL_SD_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_sd.o + .text.HAL_SD_DeInit + 0x0000000000000000 0x24 build/stm32f7xx_hal_sd.o + .text.HAL_SD_ReadBlocks_IT + 0x0000000000000000 0xcc build/stm32f7xx_hal_sd.o + .text.HAL_SD_WriteBlocks_IT + 0x0000000000000000 0xc4 build/stm32f7xx_hal_sd.o + .text.HAL_SD_ReadBlocks_DMA + 0x0000000000000000 0x134 build/stm32f7xx_hal_sd.o + .text.HAL_SD_WriteBlocks_DMA + 0x0000000000000000 0x130 build/stm32f7xx_hal_sd.o + .text.HAL_SD_Erase + 0x0000000000000000 0xf8 build/stm32f7xx_hal_sd.o + .text.HAL_SD_GetState + 0x0000000000000000 0x6 build/stm32f7xx_hal_sd.o + .text.HAL_SD_GetError + 0x0000000000000000 0x4 build/stm32f7xx_hal_sd.o + .text.HAL_SD_TxCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_sd.o + .text.HAL_SD_RxCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_sd.o + .text.HAL_SD_ErrorCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_sd.o + .text.SD_DMAReceiveCplt + 0x0000000000000000 0x48 build/stm32f7xx_hal_sd.o + .text.HAL_SD_AbortCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_sd.o + .text.HAL_SD_GetCardCID + 0x0000000000000000 0x58 build/stm32f7xx_hal_sd.o + .text.HAL_SD_GetCardStatus + 0x0000000000000000 0xac build/stm32f7xx_hal_sd.o + .text.SD_DMAError + 0x0000000000000000 0x68 build/stm32f7xx_hal_sd.o + .text.SD_DMATxAbort + 0x0000000000000000 0x44 build/stm32f7xx_hal_sd.o + .text.SD_DMARxAbort + 0x0000000000000000 0x44 build/stm32f7xx_hal_sd.o + .text.HAL_SD_IRQHandler + 0x0000000000000000 0x1c8 build/stm32f7xx_hal_sd.o + .text.HAL_SD_Abort + 0x0000000000000000 0x92 build/stm32f7xx_hal_sd.o + .text.HAL_SD_Abort_IT + 0x0000000000000000 0xa8 build/stm32f7xx_hal_sd.o + .text 0x0000000000000000 0x0 build/stm32f7xx_ll_spi.o + .data 0x0000000000000000 0x0 build/stm32f7xx_ll_spi.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_ll_spi.o + .text.LL_SPI_DeInit + 0x0000000000000000 0xd4 build/stm32f7xx_ll_spi.o + .text.LL_SPI_StructInit + 0x0000000000000000 0x1e build/stm32f7xx_ll_spi.o + .text.LL_I2S_DeInit + 0x0000000000000000 0x8 build/stm32f7xx_ll_spi.o + .text.LL_I2S_Init + 0x0000000000000000 0xac build/stm32f7xx_ll_spi.o + .text.LL_I2S_StructInit + 0x0000000000000000 0x12 build/stm32f7xx_ll_spi.o + .text.LL_I2S_ConfigPrescaler + 0x0000000000000000 0x1c build/stm32f7xx_ll_spi.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_tim.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_tim.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_tim.o + .text.TIM_OC1_SetConfig + 0x0000000000000000 0x68 build/stm32f7xx_hal_tim.o + .text.TIM_OC3_SetConfig + 0x0000000000000000 0x70 build/stm32f7xx_hal_tim.o + .text.TIM_OC4_SetConfig + 0x0000000000000000 0x54 build/stm32f7xx_hal_tim.o + .text.TIM_OC5_SetConfig + 0x0000000000000000 0x54 build/stm32f7xx_hal_tim.o + .text.TIM_OC6_SetConfig + 0x0000000000000000 0x54 build/stm32f7xx_hal_tim.o + .text.TIM_TI1_ConfigInputStage + 0x0000000000000000 0x26 build/stm32f7xx_hal_tim.o + .text.TIM_TI2_SetConfig + 0x0000000000000000 0x36 build/stm32f7xx_hal_tim.o + .text.TIM_TI2_ConfigInputStage + 0x0000000000000000 0x28 build/stm32f7xx_hal_tim.o + .text.TIM_TI3_SetConfig + 0x0000000000000000 0x36 build/stm32f7xx_hal_tim.o + .text.TIM_TI4_SetConfig + 0x0000000000000000 0x36 build/stm32f7xx_hal_tim.o + .text.TIM_ITRx_SetConfig + 0x0000000000000000 0x10 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Base_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Base_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Base_DeInit + 0x0000000000000000 0x66 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Base_Start + 0x0000000000000000 0x88 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Base_Stop + 0x0000000000000000 0x28 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Base_Start_DMA + 0x0000000000000000 0xdc build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Base_Stop_DMA + 0x0000000000000000 0x3c build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_DeInit + 0x0000000000000000 0x66 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_DeInit + 0x0000000000000000 0x66 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_DeInit + 0x0000000000000000 0x66 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OnePulse_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OnePulse_DeInit + 0x0000000000000000 0x4e build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_DeInit + 0x0000000000000000 0x4e build/stm32f7xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiWriteStart + 0x0000000000000000 0x1ac build/stm32f7xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStart + 0x0000000000000000 0x16 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_DMABurst_WriteStop + 0x0000000000000000 0x84 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_DMABurst_MultiReadStart + 0x0000000000000000 0x1b0 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStart + 0x0000000000000000 0x16 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_DMABurst_ReadStop + 0x0000000000000000 0x84 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_GenerateEvent + 0x0000000000000000 0x2a build/stm32f7xx_hal_tim.o + .text.HAL_TIM_ConfigTI1Input + 0x0000000000000000 0x10 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_ReadCapturedValue + 0x0000000000000000 0x32 build/stm32f7xx_hal_tim.o + .text.TIM_DMAPeriodElapsedCplt + 0x0000000000000000 0x16 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PeriodElapsedHalfCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.TIM_DMAPeriodElapsedHalfCplt + 0x0000000000000000 0xa build/stm32f7xx_hal_tim.o + .text.TIM_DMACaptureCplt + 0x0000000000000000 0x80 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_CaptureHalfCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.TIM_DMACaptureHalfCplt + 0x0000000000000000 0x3e build/stm32f7xx_hal_tim.o + .text.TIM_DMADelayPulseCplt + 0x0000000000000000 0x70 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.TIM_DMADelayPulseHalfCplt + 0x0000000000000000 0x3e build/stm32f7xx_hal_tim.o + .text.TIM_DMATriggerCplt + 0x0000000000000000 0x16 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_TriggerHalfCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.TIM_DMATriggerHalfCplt + 0x0000000000000000 0xa build/stm32f7xx_hal_tim.o + .text.HAL_TIM_ErrorCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim.o + .text.TIM_DMAError + 0x0000000000000000 0x5c build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Base_GetState + 0x0000000000000000 0x6 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_GetState + 0x0000000000000000 0x6 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_GetState + 0x0000000000000000 0x6 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_GetState + 0x0000000000000000 0x6 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OnePulse_GetState + 0x0000000000000000 0x6 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_GetState + 0x0000000000000000 0x6 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_GetActiveChannel + 0x0000000000000000 0x4 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_GetChannelState + 0x0000000000000000 0x42 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_DMABurstState + 0x0000000000000000 0x6 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_Init + 0x0000000000000000 0x60 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_Init + 0x0000000000000000 0x60 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_Init + 0x0000000000000000 0x60 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OnePulse_Init + 0x0000000000000000 0x5c build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_Init + 0x0000000000000000 0xb4 build/stm32f7xx_hal_tim.o + .text.TIM_OC2_SetConfig + 0x0000000000000000 0x70 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_ConfigChannel + 0x0000000000000000 0x7a build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_ConfigChannel + 0x0000000000000000 0x13a build/stm32f7xx_hal_tim.o + .text.TIM_TI1_SetConfig + 0x0000000000000000 0x94 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_ConfigChannel + 0x0000000000000000 0xc4 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OnePulse_ConfigChannel + 0x0000000000000000 0x100 build/stm32f7xx_hal_tim.o + .text.TIM_ETR_SetConfig + 0x0000000000000000 0x1a build/stm32f7xx_hal_tim.o + .text.HAL_TIM_ConfigOCrefClear + 0x0000000000000000 0x144 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_ConfigClockSource + 0x0000000000000000 0x100 build/stm32f7xx_hal_tim.o + .text.TIM_SlaveTimer_SetConfig + 0x0000000000000000 0xbc build/stm32f7xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro + 0x0000000000000000 0x52 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_SlaveConfigSynchro_IT + 0x0000000000000000 0x52 build/stm32f7xx_hal_tim.o + .text.TIM_CCxChannelCmd + 0x0000000000000000 0x1e build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_Start + 0x0000000000000000 0x150 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_Stop + 0x0000000000000000 0xa4 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_Start_IT + 0x0000000000000000 0x198 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_Stop_IT + 0x0000000000000000 0xf8 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_Start_DMA + 0x0000000000000000 0x2e4 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OC_Stop_DMA + 0x0000000000000000 0x110 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_Start + 0x0000000000000000 0x150 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_Stop + 0x0000000000000000 0xa4 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_Start_IT + 0x0000000000000000 0x198 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_IT + 0x0000000000000000 0xf8 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_Start_DMA + 0x0000000000000000 0x2e4 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_PWM_Stop_DMA + 0x0000000000000000 0x110 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_Start + 0x0000000000000000 0x168 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_Stop + 0x0000000000000000 0x98 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_Start_IT + 0x0000000000000000 0x1b0 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_Stop_IT + 0x0000000000000000 0xe8 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_Start_DMA + 0x0000000000000000 0x284 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_IC_Stop_DMA + 0x0000000000000000 0x100 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start + 0x0000000000000000 0x84 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop + 0x0000000000000000 0x80 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OnePulse_Start_IT + 0x0000000000000000 0x98 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_OnePulse_Stop_IT + 0x0000000000000000 0x94 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_Start + 0x0000000000000000 0xc8 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop + 0x0000000000000000 0xde build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_IT + 0x0000000000000000 0xf4 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_IT + 0x0000000000000000 0x108 build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_Start_DMA + 0x0000000000000000 0x24c build/stm32f7xx_hal_tim.o + .text.HAL_TIM_Encoder_Stop_DMA + 0x0000000000000000 0x122 build/stm32f7xx_hal_tim.o + .text 0x0000000000000000 0x0 build/stm32f7xx_hal_tim_ex.o + .data 0x0000000000000000 0x0 build/stm32f7xx_hal_tim_ex.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_hal_tim_ex.o + .text.TIM_CCxNChannelCmd + 0x0000000000000000 0x1e build/stm32f7xx_hal_tim_ex.o + .text.TIM_DMAErrorCCxN + 0x0000000000000000 0x44 build/stm32f7xx_hal_tim_ex.o + .text.TIM_DMADelayPulseNCplt + 0x0000000000000000 0x58 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_MspInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Init + 0x0000000000000000 0xd8 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_MspDeInit + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_DeInit + 0x0000000000000000 0x4e build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Start + 0x0000000000000000 0xc8 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Stop + 0x0000000000000000 0x42 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Start_IT + 0x0000000000000000 0xd4 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Stop_IT + 0x0000000000000000 0x4c build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Start_DMA + 0x0000000000000000 0xfc build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_Stop_DMA + 0x0000000000000000 0x4a build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Start + 0x0000000000000000 0x100 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Stop + 0x0000000000000000 0x76 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Start_IT + 0x0000000000000000 0x138 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Stop_IT + 0x0000000000000000 0xc2 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Start_DMA + 0x0000000000000000 0x220 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_OCN_Stop_DMA + 0x0000000000000000 0xc0 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Start + 0x0000000000000000 0x100 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Stop + 0x0000000000000000 0x76 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Start_IT + 0x0000000000000000 0x138 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Stop_IT + 0x0000000000000000 0xc2 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Start_DMA + 0x0000000000000000 0x220 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_PWMN_Stop_DMA + 0x0000000000000000 0xc0 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Start + 0x0000000000000000 0x7a build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Stop + 0x0000000000000000 0x72 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Start_IT + 0x0000000000000000 0x90 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_OnePulseN_Stop_IT + 0x0000000000000000 0x86 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigCommutEvent + 0x0000000000000000 0x7a build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigCommutEvent_IT + 0x0000000000000000 0x7a build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigCommutEvent_DMA + 0x0000000000000000 0x98 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_MasterConfigSynchronization + 0x0000000000000000 0xa0 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigBreakDeadTime + 0x0000000000000000 0x90 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_ConfigBreakInput + 0x0000000000000000 0xac build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_RemapConfig + 0x0000000000000000 0x24 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_GroupChannel5 + 0x0000000000000000 0x3e build/stm32f7xx_hal_tim_ex.o + .text.TIMEx_DMACommutationCplt + 0x0000000000000000 0x10 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_CommutHalfCpltCallback + 0x0000000000000000 0x2 build/stm32f7xx_hal_tim_ex.o + .text.TIMEx_DMACommutationHalfCplt + 0x0000000000000000 0x10 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_HallSensor_GetState + 0x0000000000000000 0x6 build/stm32f7xx_hal_tim_ex.o + .text.HAL_TIMEx_GetChannelNState + 0x0000000000000000 0x2a build/stm32f7xx_hal_tim_ex.o + .text 0x0000000000000000 0x0 build/stm32f7xx_ll_tim.o + .data 0x0000000000000000 0x0 build/stm32f7xx_ll_tim.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_ll_tim.o + .text.OC1Config + 0x0000000000000000 0x78 build/stm32f7xx_ll_tim.o + .text.OC2Config + 0x0000000000000000 0x80 build/stm32f7xx_ll_tim.o + .text.OC3Config + 0x0000000000000000 0x7c build/stm32f7xx_ll_tim.o + .text.OC4Config + 0x0000000000000000 0x60 build/stm32f7xx_ll_tim.o + .text.OC5Config + 0x0000000000000000 0x60 build/stm32f7xx_ll_tim.o + .text.OC6Config + 0x0000000000000000 0x60 build/stm32f7xx_ll_tim.o + .text.IC1Config + 0x0000000000000000 0x38 build/stm32f7xx_ll_tim.o + .text.IC2Config + 0x0000000000000000 0x3a build/stm32f7xx_ll_tim.o + .text.IC3Config + 0x0000000000000000 0x3a build/stm32f7xx_ll_tim.o + .text.IC4Config + 0x0000000000000000 0x3a build/stm32f7xx_ll_tim.o + .text.LL_TIM_DeInit + 0x0000000000000000 0x1e8 build/stm32f7xx_ll_tim.o + .text.LL_TIM_StructInit + 0x0000000000000000 0x12 build/stm32f7xx_ll_tim.o + .text.LL_TIM_OC_StructInit + 0x0000000000000000 0x14 build/stm32f7xx_ll_tim.o + .text.LL_TIM_OC_Init + 0x0000000000000000 0x54 build/stm32f7xx_ll_tim.o + .text.LL_TIM_IC_StructInit + 0x0000000000000000 0x10 build/stm32f7xx_ll_tim.o + .text.LL_TIM_IC_Init + 0x0000000000000000 0x3c build/stm32f7xx_ll_tim.o + .text.LL_TIM_ENCODER_StructInit + 0x0000000000000000 0x1c build/stm32f7xx_ll_tim.o + .text.LL_TIM_ENCODER_Init + 0x0000000000000000 0x60 build/stm32f7xx_ll_tim.o + .text.LL_TIM_HALLSENSOR_StructInit + 0x0000000000000000 0xc build/stm32f7xx_ll_tim.o + .text.LL_TIM_HALLSENSOR_Init + 0x0000000000000000 0x68 build/stm32f7xx_ll_tim.o + .text.LL_TIM_BDTR_StructInit + 0x0000000000000000 0x1a build/stm32f7xx_ll_tim.o + .text.LL_TIM_BDTR_Init + 0x0000000000000000 0x70 build/stm32f7xx_ll_tim.o + .text 0x0000000000000000 0x0 build/stm32f7xx_ll_usart.o + .data 0x0000000000000000 0x0 build/stm32f7xx_ll_usart.o + .bss 0x0000000000000000 0x0 build/stm32f7xx_ll_usart.o + .text.LL_USART_DeInit + 0x0000000000000000 0x114 build/stm32f7xx_ll_usart.o + .text.LL_USART_StructInit + 0x0000000000000000 0x18 build/stm32f7xx_ll_usart.o + .text.LL_USART_ClockInit + 0x0000000000000000 0x3e build/stm32f7xx_ll_usart.o + .text.LL_USART_ClockStructInit + 0x0000000000000000 0xc build/stm32f7xx_ll_usart.o + .text 0x0000000000000000 0x0 build/system_stm32f7xx.o + .data 0x0000000000000000 0x0 build/system_stm32f7xx.o + .bss 0x0000000000000000 0x0 build/system_stm32f7xx.o + .text.SystemCoreClockUpdate + 0x0000000000000000 0xa0 build/system_stm32f7xx.o + .text 0x0000000000000000 0x0 build/diskio.o + .data 0x0000000000000000 0x0 build/diskio.o + .bss 0x0000000000000000 0x0 build/diskio.o + .text.disk_status + 0x0000000000000000 0x18 build/diskio.o + .text.disk_initialize + 0x0000000000000000 0x28 build/diskio.o + .text.disk_read + 0x0000000000000000 0x18 build/diskio.o + .text.disk_write + 0x0000000000000000 0x18 build/diskio.o + .text.disk_ioctl + 0x0000000000000000 0x18 build/diskio.o + .text.get_fattime + 0x0000000000000000 0x4 build/diskio.o + .debug_info 0x0000000000000000 0x5c0 build/diskio.o + .debug_abbrev 0x0000000000000000 0x1ca build/diskio.o + .debug_loc 0x0000000000000000 0x323 build/diskio.o + .debug_aranges + 0x0000000000000000 0x48 build/diskio.o + .debug_ranges 0x0000000000000000 0x38 build/diskio.o + .debug_line 0x0000000000000000 0x217 build/diskio.o + .debug_str 0x0000000000000000 0x33d build/diskio.o + .comment 0x0000000000000000 0x34 build/diskio.o + .debug_frame 0x0000000000000000 0xa0 build/diskio.o + .ARM.attributes + 0x0000000000000000 0x32 build/diskio.o + .text 0x0000000000000000 0x0 build/ff.o + .data 0x0000000000000000 0x0 build/ff.o + .bss 0x0000000000000000 0x0 build/ff.o + .text.ld_word 0x0000000000000000 0xa build/ff.o + .text.ld_dword + 0x0000000000000000 0x16 build/ff.o + .text.st_word 0x0000000000000000 0x8 build/ff.o + .text.st_dword + 0x0000000000000000 0x14 build/ff.o + .text.mem_cpy 0x0000000000000000 0x14 build/ff.o + .text.mem_set 0x0000000000000000 0xa build/ff.o + .text.mem_cmp 0x0000000000000000 0x1a build/ff.o + .text.chk_chr 0x0000000000000000 0x10 build/ff.o + .text.chk_lock + 0x0000000000000000 0x7c build/ff.o + .text.enq_lock + 0x0000000000000000 0x20 build/ff.o + .text.inc_lock + 0x0000000000000000 0xa4 build/ff.o + .text.dec_lock + 0x0000000000000000 0x40 build/ff.o + .text.clear_lock + 0x0000000000000000 0x3c build/ff.o + .text.clust2sect + 0x0000000000000000 0x18 build/ff.o + .text.clmt_clust + 0x0000000000000000 0x26 build/ff.o + .text.ld_clust + 0x0000000000000000 0x26 build/ff.o + .text.st_clust + 0x0000000000000000 0x26 build/ff.o + .text.get_fileinfo + 0x0000000000000000 0x6a build/ff.o + .rodata.create_name.str1.4 + 0x0000000000000000 0xf build/ff.o + .text.create_name + 0x0000000000000000 0xd0 build/ff.o + .text.get_ldnumber + 0x0000000000000000 0x48 build/ff.o + .text.putc_init + 0x0000000000000000 0xa build/ff.o + .text.validate + 0x0000000000000000 0x46 build/ff.o + .text.sync_window + 0x0000000000000000 0x54 build/ff.o + .text.move_window + 0x0000000000000000 0x36 build/ff.o + .text.check_fs + 0x0000000000000000 0x78 build/ff.o + .text.find_volume + 0x0000000000000000 0x34c build/ff.o + .text.put_fat 0x0000000000000000 0x13e build/ff.o + .text.get_fat 0x0000000000000000 0xfc build/ff.o + .text.dir_sdi 0x0000000000000000 0xc0 build/ff.o + .text.create_chain + 0x0000000000000000 0xd6 build/ff.o + .text.remove_chain + 0x0000000000000000 0x7e build/ff.o + .text.dir_remove + 0x0000000000000000 0x1c build/ff.o + .text.dir_next + 0x0000000000000000 0x118 build/ff.o + .text.dir_find + 0x0000000000000000 0x5a build/ff.o + .text.follow_path + 0x0000000000000000 0x92 build/ff.o + .text.dir_alloc + 0x0000000000000000 0x4e build/ff.o + .text.dir_register + 0x0000000000000000 0x3e build/ff.o + .text.dir_read + 0x0000000000000000 0x5e build/ff.o + .text.sync_fs 0x0000000000000000 0x88 build/ff.o + .text.f_mount 0x0000000000000000 0x60 build/ff.o + .text.f_open 0x0000000000000000 0x23c build/ff.o + .text.f_read 0x0000000000000000 0x1d8 build/ff.o + .text.f_write 0x0000000000000000 0x210 build/ff.o + .text.putc_bfd + 0x0000000000000000 0x4e build/ff.o + .text.putc_flush + 0x0000000000000000 0x3a build/ff.o + .text.f_sync 0x0000000000000000 0x98 build/ff.o + .text.f_close 0x0000000000000000 0x2a build/ff.o + .text.f_lseek 0x0000000000000000 0x2a6 build/ff.o + .text.f_opendir + 0x0000000000000000 0x8a build/ff.o + .text.f_closedir + 0x0000000000000000 0x24 build/ff.o + .text.f_readdir + 0x0000000000000000 0x4e build/ff.o + .text.f_stat 0x0000000000000000 0x44 build/ff.o + .text.f_getfree + 0x0000000000000000 0xde build/ff.o + .text.f_truncate + 0x0000000000000000 0xac build/ff.o + .text.f_unlink + 0x0000000000000000 0xc2 build/ff.o + .text.f_mkdir 0x0000000000000000 0x168 build/ff.o + .text.f_rename + 0x0000000000000000 0x128 build/ff.o + .rodata.f_mkfs.str1.4 + 0x0000000000000000 0x34 build/ff.o + .text.f_mkfs 0x0000000000000000 0x68c build/ff.o + .text.f_gets 0x0000000000000000 0x56 build/ff.o + .text.f_putc 0x0000000000000000 0x1e build/ff.o + .text.f_puts 0x0000000000000000 0x26 build/ff.o + .text.f_printf + 0x0000000000000000 0x23c build/ff.o + .bss.FatFs 0x0000000000000000 0x4 build/ff.o + .bss.Files 0x0000000000000000 0x20 build/ff.o + .bss.Fsid 0x0000000000000000 0x2 build/ff.o + .rodata.ExCvt 0x0000000000000000 0x80 build/ff.o + .rodata.cst.0 0x0000000000000000 0xe build/ff.o + .rodata.cst32.1 + 0x0000000000000000 0xe build/ff.o + .debug_info 0x0000000000000000 0x476d build/ff.o + .debug_abbrev 0x0000000000000000 0x2d0 build/ff.o + .debug_loc 0x0000000000000000 0x5b7b build/ff.o + .debug_aranges + 0x0000000000000000 0x208 build/ff.o + .debug_ranges 0x0000000000000000 0x1f8 build/ff.o + .debug_line 0x0000000000000000 0x41cb build/ff.o + .debug_str 0x0000000000000000 0x8cb build/ff.o + .comment 0x0000000000000000 0x34 build/ff.o + .debug_frame 0x0000000000000000 0x7c0 build/ff.o + .ARM.attributes + 0x0000000000000000 0x32 build/ff.o + .text 0x0000000000000000 0x0 build/ff_gen_drv.o + .data 0x0000000000000000 0x0 build/ff_gen_drv.o + .bss 0x0000000000000000 0x0 build/ff_gen_drv.o + .text.FATFS_UnLinkDriverEx + 0x0000000000000000 0x3c build/ff_gen_drv.o + .text.FATFS_UnLinkDriver + 0x0000000000000000 0xa build/ff_gen_drv.o + .text.FATFS_GetAttachedDriversNbr + 0x0000000000000000 0xc build/ff_gen_drv.o + .text 0x0000000000000000 0x0 build/syscall.o + .data 0x0000000000000000 0x0 build/syscall.o + .bss 0x0000000000000000 0x0 build/syscall.o + .debug_info 0x0000000000000000 0x15d build/syscall.o + .debug_abbrev 0x0000000000000000 0x5f build/syscall.o + .debug_aranges + 0x0000000000000000 0x18 build/syscall.o + .debug_line 0x0000000000000000 0xb6 build/syscall.o + .debug_str 0x0000000000000000 0x25a build/syscall.o + .comment 0x0000000000000000 0x34 build/syscall.o + .ARM.attributes + 0x0000000000000000 0x37 build/syscall.o + .text 0x0000000000000000 0x0 build/sysmem.o + .data 0x0000000000000000 0x0 build/sysmem.o + .bss 0x0000000000000000 0x0 build/sysmem.o + .text._sbrk 0x0000000000000000 0x48 build/sysmem.o + .bss.__sbrk_heap_end + 0x0000000000000000 0x4 build/sysmem.o + .debug_info 0x0000000000000000 0x16d build/sysmem.o + .debug_abbrev 0x0000000000000000 0xea build/sysmem.o + .debug_loc 0x0000000000000000 0x84 build/sysmem.o + .debug_aranges + 0x0000000000000000 0x20 build/sysmem.o + .debug_ranges 0x0000000000000000 0x10 build/sysmem.o + .debug_line 0x0000000000000000 0xf4 build/sysmem.o + .debug_str 0x0000000000000000 0x22b build/sysmem.o + .comment 0x0000000000000000 0x34 build/sysmem.o + .debug_frame 0x0000000000000000 0x28 build/sysmem.o + .ARM.attributes + 0x0000000000000000 0x32 build/sysmem.o + .text 0x0000000000000000 0x0 build/syscalls.o + .data 0x0000000000000000 0x0 build/syscalls.o + .bss 0x0000000000000000 0x0 build/syscalls.o + .text.initialise_monitor_handles + 0x0000000000000000 0x2 build/syscalls.o + .text._getpid 0x0000000000000000 0x4 build/syscalls.o + .text._kill 0x0000000000000000 0x10 build/syscalls.o + .text._exit 0x0000000000000000 0xc build/syscalls.o + .text._read 0x0000000000000000 0x20 build/syscalls.o + .text._write 0x0000000000000000 0x1c build/syscalls.o + .text._close 0x0000000000000000 0x6 build/syscalls.o + .text._fstat 0x0000000000000000 0xa build/syscalls.o + .text._isatty 0x0000000000000000 0x4 build/syscalls.o + .text._lseek 0x0000000000000000 0x4 build/syscalls.o + .text._open 0x0000000000000000 0xa build/syscalls.o + .text._wait 0x0000000000000000 0x10 build/syscalls.o + .text._unlink 0x0000000000000000 0x10 build/syscalls.o + .text._times 0x0000000000000000 0x6 build/syscalls.o + .text._stat 0x0000000000000000 0xa build/syscalls.o + .text._link 0x0000000000000000 0x10 build/syscalls.o + .text._fork 0x0000000000000000 0x10 build/syscalls.o + .text._execve 0x0000000000000000 0x10 build/syscalls.o + .bss.__env 0x0000000000000000 0x4 build/syscalls.o + .data.environ 0x0000000000000000 0x4 build/syscalls.o + .debug_info 0x0000000000000000 0x835 build/syscalls.o + .debug_abbrev 0x0000000000000000 0x1c4 build/syscalls.o + .debug_loc 0x0000000000000000 0x511 build/syscalls.o + .debug_aranges + 0x0000000000000000 0xa8 build/syscalls.o + .debug_ranges 0x0000000000000000 0x98 build/syscalls.o + .debug_line 0x0000000000000000 0x393 build/syscalls.o + .debug_str 0x0000000000000000 0x414 build/syscalls.o + .comment 0x0000000000000000 0x34 build/syscalls.o + .debug_frame 0x0000000000000000 0x190 build/syscalls.o + .ARM.attributes + 0x0000000000000000 0x32 build/syscalls.o + .text 0x0000000000000000 0x14 build/startup_stm32f767xx.o + .data 0x0000000000000000 0x0 build/startup_stm32f767xx.o + .bss 0x0000000000000000 0x0 build/startup_stm32f767xx.o + .text 0x0000000000000000 0xc /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .debug_info 0x0000000000000000 0x100 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .debug_abbrev 0x0000000000000000 0xb7 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .debug_loc 0x0000000000000000 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .debug_aranges + 0x0000000000000000 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .debug_line 0x0000000000000000 0xc0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .debug_str 0x0000000000000000 0x1ec /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .comment 0x0000000000000000 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .debug_frame 0x0000000000000000 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .ARM.attributes + 0x0000000000000000 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + .text 0x0000000000000000 0xc /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .debug_info 0x0000000000000000 0x7ae /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .debug_abbrev 0x0000000000000000 0x157 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .debug_aranges + 0x0000000000000000 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .debug_line 0x0000000000000000 0x109 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .debug_str 0x0000000000000000 0x50a /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .comment 0x0000000000000000 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .debug_frame 0x0000000000000000 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .ARM.attributes + 0x0000000000000000 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + .text 0x0000000000000000 0x28 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .debug_info 0x0000000000000000 0x81a /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .debug_abbrev 0x0000000000000000 0x1ba /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .debug_loc 0x0000000000000000 0x22 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .debug_aranges + 0x0000000000000000 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .debug_line 0x0000000000000000 0x16d /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .debug_str 0x0000000000000000 0x52b /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .comment 0x0000000000000000 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .debug_frame 0x0000000000000000 0x28 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .ARM.attributes + 0x0000000000000000 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + .text 0x0000000000000000 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .debug_info 0x0000000000000000 0x102 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .debug_abbrev 0x0000000000000000 0xcf /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .debug_loc 0x0000000000000000 0x68 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .debug_aranges + 0x0000000000000000 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .debug_line 0x0000000000000000 0xed /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .debug_str 0x0000000000000000 0x1e4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .comment 0x0000000000000000 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .debug_frame 0x0000000000000000 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .ARM.attributes + 0x0000000000000000 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .data 0x0000000000000000 0x64 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .rodata 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .debug_info 0x0000000000000000 0x863 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .debug_abbrev 0x0000000000000000 0x151 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .debug_aranges + 0x0000000000000000 0x18 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .debug_line 0x0000000000000000 0xe4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .debug_str 0x0000000000000000 0x561 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .comment 0x0000000000000000 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .ARM.attributes + 0x0000000000000000 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + .text 0x0000000000000000 0xac /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .data 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .bss 0x0000000000000000 0x8c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .debug_info 0x0000000000000000 0x269 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .debug_abbrev 0x0000000000000000 0x1bd /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .debug_loc 0x0000000000000000 0x1f5 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .debug_aranges + 0x0000000000000000 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .debug_line 0x0000000000000000 0x1ec /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .debug_str 0x0000000000000000 0x29a /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .comment 0x0000000000000000 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .debug_frame 0x0000000000000000 0x38 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .ARM.attributes + 0x0000000000000000 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + .text 0x0000000000000000 0xc8 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .bss 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .debug_info 0x0000000000000000 0x249 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .debug_abbrev 0x0000000000000000 0x179 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .debug_loc 0x0000000000000000 0x19b /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .debug_aranges + 0x0000000000000000 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .debug_ranges 0x0000000000000000 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .debug_line 0x0000000000000000 0x1eb /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .debug_str 0x0000000000000000 0x25e /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .comment 0x0000000000000000 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .debug_frame 0x0000000000000000 0x4c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .ARM.attributes + 0x0000000000000000 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + .ARM.extab 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtend.o + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtend.o + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtend.o + .rodata 0x0000000000000000 0x24 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtend.o + .eh_frame 0x0000000000000000 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtend.o + .text 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o + .data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o + .bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x0000000020000000 0x0000000000080000 xrw +FLASH 0x0000000008000000 0x0000000000200000 xr +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +LOAD build/main.o +LOAD build/bsp_driver_sd.o +LOAD build/sd_diskio.o +LOAD build/fatfs.o +LOAD build/fatfs_platform.o +LOAD build/stm32f7xx_it.o +LOAD build/stm32f7xx_hal_msp.o +LOAD build/stm32f7xx_hal_adc.o +LOAD build/stm32f7xx_hal_adc_ex.o +LOAD build/stm32f7xx_hal_rcc.o +LOAD build/stm32f7xx_hal_rcc_ex.o +LOAD build/stm32f7xx_hal_flash.o +LOAD build/stm32f7xx_hal_flash_ex.o +LOAD build/stm32f7xx_hal_gpio.o +LOAD build/stm32f7xx_hal_dma.o +LOAD build/stm32f7xx_hal_dma_ex.o +LOAD build/stm32f7xx_hal_pwr.o +LOAD build/stm32f7xx_hal_pwr_ex.o +LOAD build/stm32f7xx_hal_cortex.o +LOAD build/stm32f7xx_hal.o +LOAD build/stm32f7xx_hal_i2c.o +LOAD build/stm32f7xx_hal_i2c_ex.o +LOAD build/stm32f7xx_hal_exti.o +LOAD build/stm32f7xx_ll_rcc.o +LOAD build/stm32f7xx_ll_utils.o +LOAD build/stm32f7xx_ll_exti.o +LOAD build/stm32f7xx_ll_gpio.o +LOAD build/stm32f7xx_ll_dma.o +LOAD build/stm32f7xx_ll_sdmmc.o +LOAD build/stm32f7xx_hal_sd.o +LOAD build/stm32f7xx_ll_spi.o +LOAD build/stm32f7xx_hal_tim.o +LOAD build/stm32f7xx_hal_tim_ex.o +LOAD build/stm32f7xx_ll_tim.o +LOAD build/stm32f7xx_ll_usart.o +LOAD build/system_stm32f7xx.o +LOAD build/diskio.o +LOAD build/ff.o +LOAD build/ff_gen_drv.o +LOAD build/syscall.o +LOAD build/sysmem.o +LOAD build/syscalls.o +LOAD build/startup_stm32f767xx.o +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libm.a +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libnosys.a +START GROUP +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a +END GROUP +START GROUP +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a +END GROUP +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtend.o +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o + 0x0000000020080000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x0000000000002000 _Min_Heap_Size = 0x2000 + 0x0000000000004000 _Min_Stack_Size = 0x4000 + +.isr_vector 0x0000000008000000 0x1f8 + 0x0000000008000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x0000000008000000 0x1f8 build/startup_stm32f767xx.o + 0x0000000008000000 g_pfnVectors + 0x00000000080001f8 . = ALIGN (0x4) + +.text 0x00000000080001f8 0x65b4 + 0x00000000080001f8 . = ALIGN (0x4) + *(.text) + .text 0x00000000080001f8 0x88 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + .text 0x0000000008000280 0x48 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + 0x0000000008000280 __libc_init_array + .text 0x00000000080002c8 0xa4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + 0x00000000080002c8 memset + .text 0x000000000800036c 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + 0x000000000800036c __aeabi_uldivmod + .text 0x000000000800039c 0x2d0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + 0x000000000800039c __udivmoddi4 + .text 0x000000000800066c 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + 0x000000000800066c __aeabi_ldiv0 + 0x000000000800066c __aeabi_idiv0 + *(.text*) + .text.NVIC_EncodePriority + 0x0000000008000670 0x36 build/main.o + *fill* 0x00000000080006a6 0x2 + .text.MX_SDMMC1_SD_Init + 0x00000000080006a8 0x24 build/main.o + .text.MX_DMA_Init + 0x00000000080006cc 0x48 build/main.o + *fill* 0x0000000008000714 0x4 + .text.Decode_task + 0x0000000008000718 0x168 build/main.o + .text.PID_Controller_Temp + 0x0000000008000880 0xe4 build/main.o + .text.Set_LTEC + 0x0000000008000964 0x158 build/main.o + .text.MPhD_T 0x0000000008000abc 0x224 build/main.o + .text.MX_GPIO_Init + 0x0000000008000ce0 0x210 build/main.o + .text.MX_SPI4_Init + 0x0000000008000ef0 0xd4 build/main.o + .text.MX_SPI2_Init + 0x0000000008000fc4 0xd0 build/main.o + .text.MX_SPI5_Init + 0x0000000008001094 0xd0 build/main.o + .text.MX_SPI6_Init + 0x0000000008001164 0xd0 build/main.o + .text.MX_TIM2_Init + 0x0000000008001234 0x9c build/main.o + .text.MX_TIM5_Init + 0x00000000080012d0 0x98 build/main.o + .text.MX_TIM7_Init + 0x0000000008001368 0x8c build/main.o + .text.MX_TIM6_Init + 0x00000000080013f4 0x8c build/main.o + .text.Decode_uart + 0x0000000008001480 0x2f8 build/main.o + .text.Init_params + 0x0000000008001778 0x304 build/main.o + .text.Get_ADC 0x0000000008001a7c 0x70 build/main.o + .text.Stop_TIM10 + 0x0000000008001aec 0x20 build/main.o + .text.CalculateChecksum + 0x0000000008001b0c 0x18 build/main.o + 0x0000000008001b0c CalculateChecksum + .text.CheckChecksum + 0x0000000008001b24 0x48 build/main.o + 0x0000000008001b24 CheckChecksum + .text.SD_SAVE 0x0000000008001b6c 0x3c build/main.o + 0x0000000008001b6c SD_SAVE + .text.SD_READ 0x0000000008001ba8 0x4c build/main.o + 0x0000000008001ba8 SD_READ + .text.SD_REMOVE + 0x0000000008001bf4 0x40 build/main.o + 0x0000000008001bf4 SD_REMOVE + .text.USART_TX + 0x0000000008001c34 0x2c build/main.o + 0x0000000008001c34 USART_TX + .text.USART_TX_DMA + 0x0000000008001c60 0x44 build/main.o + 0x0000000008001c60 USART_TX_DMA + .text.Error_Handler + 0x0000000008001ca4 0x4 build/main.o + 0x0000000008001ca4 Error_Handler + .text.MX_ADC1_Init + 0x0000000008001ca8 0xc8 build/main.o + .text.MX_ADC3_Init + 0x0000000008001d70 0x6c build/main.o + .text.MX_USART1_UART_Init + 0x0000000008001ddc 0x190 build/main.o + .text.MX_TIM10_Init + 0x0000000008001f6c 0x2c build/main.o + .text.SystemClock_Config + 0x0000000008001f98 0xb4 build/main.o + 0x0000000008001f98 SystemClock_Config + .text.main 0x000000000800204c 0x89c build/main.o + 0x000000000800204c main + .text.BSP_SD_ReadBlocks + 0x00000000080028e8 0x20 build/bsp_driver_sd.o + 0x00000000080028e8 BSP_SD_ReadBlocks + .text.BSP_SD_WriteBlocks + 0x0000000008002908 0x20 build/bsp_driver_sd.o + 0x0000000008002908 BSP_SD_WriteBlocks + .text.BSP_SD_GetCardState + 0x0000000008002928 0x14 build/bsp_driver_sd.o + 0x0000000008002928 BSP_SD_GetCardState + .text.BSP_SD_GetCardInfo + 0x000000000800293c 0x10 build/bsp_driver_sd.o + 0x000000000800293c BSP_SD_GetCardInfo + .text.BSP_SD_IsDetected + 0x000000000800294c 0x20 build/bsp_driver_sd.o + 0x000000000800294c BSP_SD_IsDetected + .text.BSP_SD_Init + 0x000000000800296c 0x34 build/bsp_driver_sd.o + 0x000000000800296c BSP_SD_Init + .text.SD_CheckStatus + 0x00000000080029a0 0x24 build/sd_diskio.o + .text.SD_initialize + 0x00000000080029c4 0x28 build/sd_diskio.o + 0x00000000080029c4 SD_initialize + .text.SD_status + 0x00000000080029ec 0x8 build/sd_diskio.o + 0x00000000080029ec SD_status + .text.SD_read 0x00000000080029f4 0x24 build/sd_diskio.o + 0x00000000080029f4 SD_read + .text.SD_write + 0x0000000008002a18 0x24 build/sd_diskio.o + 0x0000000008002a18 SD_write + .text.SD_ioctl + 0x0000000008002a3c 0x58 build/sd_diskio.o + 0x0000000008002a3c SD_ioctl + .text.MX_FATFS_Init + 0x0000000008002a94 0x1c build/fatfs.o + 0x0000000008002a94 MX_FATFS_Init + .text.BSP_PlatformIsDetected + 0x0000000008002ab0 0x18 build/fatfs_platform.o + 0x0000000008002ab0 BSP_PlatformIsDetected + .text.NMI_Handler + 0x0000000008002ac8 0x2 build/stm32f7xx_it.o + 0x0000000008002ac8 NMI_Handler + .text.HardFault_Handler + 0x0000000008002aca 0x2 build/stm32f7xx_it.o + 0x0000000008002aca HardFault_Handler + .text.MemManage_Handler + 0x0000000008002acc 0x2 build/stm32f7xx_it.o + 0x0000000008002acc MemManage_Handler + .text.BusFault_Handler + 0x0000000008002ace 0x2 build/stm32f7xx_it.o + 0x0000000008002ace BusFault_Handler + .text.UsageFault_Handler + 0x0000000008002ad0 0x2 build/stm32f7xx_it.o + 0x0000000008002ad0 UsageFault_Handler + .text.SVC_Handler + 0x0000000008002ad2 0x2 build/stm32f7xx_it.o + 0x0000000008002ad2 SVC_Handler + .text.DebugMon_Handler + 0x0000000008002ad4 0x2 build/stm32f7xx_it.o + 0x0000000008002ad4 DebugMon_Handler + .text.PendSV_Handler + 0x0000000008002ad6 0x2 build/stm32f7xx_it.o + 0x0000000008002ad6 PendSV_Handler + .text.SysTick_Handler + 0x0000000008002ad8 0x8 build/stm32f7xx_it.o + 0x0000000008002ad8 SysTick_Handler + .text.ADC_IRQHandler + 0x0000000008002ae0 0x18 build/stm32f7xx_it.o + 0x0000000008002ae0 ADC_IRQHandler + .text.TIM1_UP_TIM10_IRQHandler + 0x0000000008002af8 0x34 build/stm32f7xx_it.o + 0x0000000008002af8 TIM1_UP_TIM10_IRQHandler + .text.TIM2_IRQHandler + 0x0000000008002b2c 0x2 build/stm32f7xx_it.o + 0x0000000008002b2c TIM2_IRQHandler + .text.TIM5_IRQHandler + 0x0000000008002b2e 0x2 build/stm32f7xx_it.o + 0x0000000008002b2e TIM5_IRQHandler + .text.TIM6_DAC_IRQHandler + 0x0000000008002b30 0x34 build/stm32f7xx_it.o + 0x0000000008002b30 TIM6_DAC_IRQHandler + .text.TIM7_IRQHandler + 0x0000000008002b64 0x24 build/stm32f7xx_it.o + 0x0000000008002b64 TIM7_IRQHandler + .text.UART_RxCpltCallback + 0x0000000008002b88 0x28c build/stm32f7xx_it.o + 0x0000000008002b88 UART_RxCpltCallback + .text.USART1_IRQHandler + 0x0000000008002e14 0xd0 build/stm32f7xx_it.o + 0x0000000008002e14 USART1_IRQHandler + .text.DMA2_Stream7_TransferComplete + 0x0000000008002ee4 0x10 build/stm32f7xx_it.o + 0x0000000008002ee4 DMA2_Stream7_TransferComplete + .text.DMA2_Stream7_IRQHandler + 0x0000000008002ef4 0x34 build/stm32f7xx_it.o + 0x0000000008002ef4 DMA2_Stream7_IRQHandler + .text.HAL_MspInit + 0x0000000008002f28 0x30 build/stm32f7xx_hal_msp.o + 0x0000000008002f28 HAL_MspInit + .text.HAL_ADC_MspInit + 0x0000000008002f58 0x110 build/stm32f7xx_hal_msp.o + 0x0000000008002f58 HAL_ADC_MspInit + .text.HAL_SD_MspInit + 0x0000000008003068 0xb8 build/stm32f7xx_hal_msp.o + 0x0000000008003068 HAL_SD_MspInit + .text.HAL_TIM_Base_MspInit + 0x0000000008003120 0x40 build/stm32f7xx_hal_msp.o + 0x0000000008003120 HAL_TIM_Base_MspInit + .text.ADC_Init + 0x0000000008003160 0x134 build/stm32f7xx_hal_adc.o + .text.HAL_ADC_Init + 0x0000000008003294 0x58 build/stm32f7xx_hal_adc.o + 0x0000000008003294 HAL_ADC_Init + .text.HAL_ADC_Start + 0x00000000080032ec 0x134 build/stm32f7xx_hal_adc.o + 0x00000000080032ec HAL_ADC_Start + .text.HAL_ADC_Stop + 0x0000000008003420 0x40 build/stm32f7xx_hal_adc.o + 0x0000000008003420 HAL_ADC_Stop + .text.HAL_ADC_PollForConversion + 0x0000000008003460 0xc2 build/stm32f7xx_hal_adc.o + 0x0000000008003460 HAL_ADC_PollForConversion + .text.HAL_ADC_GetValue + 0x0000000008003522 0x6 build/stm32f7xx_hal_adc.o + 0x0000000008003522 HAL_ADC_GetValue + .text.HAL_ADC_ConvCpltCallback + 0x0000000008003528 0x2 build/stm32f7xx_hal_adc.o + 0x0000000008003528 HAL_ADC_ConvCpltCallback + .text.HAL_ADC_LevelOutOfWindowCallback + 0x000000000800352a 0x2 build/stm32f7xx_hal_adc.o + 0x000000000800352a HAL_ADC_LevelOutOfWindowCallback + .text.HAL_ADC_ErrorCallback + 0x000000000800352c 0x2 build/stm32f7xx_hal_adc.o + 0x000000000800352c HAL_ADC_ErrorCallback + .text.HAL_ADC_IRQHandler + 0x000000000800352e 0x136 build/stm32f7xx_hal_adc.o + 0x000000000800352e HAL_ADC_IRQHandler + .text.HAL_ADC_ConfigChannel + 0x0000000008003664 0x1e4 build/stm32f7xx_hal_adc.o + 0x0000000008003664 HAL_ADC_ConfigChannel + .text.HAL_ADCEx_InjectedConvCpltCallback + 0x0000000008003848 0x2 build/stm32f7xx_hal_adc_ex.o + 0x0000000008003848 HAL_ADCEx_InjectedConvCpltCallback + *fill* 0x000000000800384a 0x2 + .text.HAL_RCC_OscConfig + 0x000000000800384c 0x444 build/stm32f7xx_hal_rcc.o + 0x000000000800384c HAL_RCC_OscConfig + .text.HAL_RCC_GetSysClockFreq + 0x0000000008003c90 0xa4 build/stm32f7xx_hal_rcc.o + 0x0000000008003c90 HAL_RCC_GetSysClockFreq + .text.HAL_RCC_ClockConfig + 0x0000000008003d34 0x16c build/stm32f7xx_hal_rcc.o + 0x0000000008003d34 HAL_RCC_ClockConfig + .text.HAL_RCCEx_PeriphCLKConfig + 0x0000000008003ea0 0x600 build/stm32f7xx_hal_rcc_ex.o + 0x0000000008003ea0 HAL_RCCEx_PeriphCLKConfig + .text.HAL_GPIO_Init + 0x00000000080044a0 0x1f8 build/stm32f7xx_hal_gpio.o + 0x00000000080044a0 HAL_GPIO_Init + .text.HAL_GPIO_ReadPin + 0x0000000008004698 0xe build/stm32f7xx_hal_gpio.o + 0x0000000008004698 HAL_GPIO_ReadPin + .text.HAL_GPIO_WritePin + 0x00000000080046a6 0xc build/stm32f7xx_hal_gpio.o + 0x00000000080046a6 HAL_GPIO_WritePin + .text.HAL_GPIO_TogglePin + 0x00000000080046b2 0x12 build/stm32f7xx_hal_gpio.o + 0x00000000080046b2 HAL_GPIO_TogglePin + .text.HAL_PWREx_EnableOverDrive + 0x00000000080046c4 0x7c build/stm32f7xx_hal_pwr_ex.o + 0x00000000080046c4 HAL_PWREx_EnableOverDrive + .text.HAL_NVIC_SetPriorityGrouping + 0x0000000008004740 0x24 build/stm32f7xx_hal_cortex.o + 0x0000000008004740 HAL_NVIC_SetPriorityGrouping + .text.HAL_NVIC_SetPriority + 0x0000000008004764 0x6c build/stm32f7xx_hal_cortex.o + 0x0000000008004764 HAL_NVIC_SetPriority + .text.HAL_NVIC_EnableIRQ + 0x00000000080047d0 0x1c build/stm32f7xx_hal_cortex.o + 0x00000000080047d0 HAL_NVIC_EnableIRQ + .text.HAL_SYSTICK_Config + 0x00000000080047ec 0x28 build/stm32f7xx_hal_cortex.o + 0x00000000080047ec HAL_SYSTICK_Config + .text.HAL_InitTick + 0x0000000008004814 0x4c build/stm32f7xx_hal.o + 0x0000000008004814 HAL_InitTick + .text.HAL_Init + 0x0000000008004860 0x16 build/stm32f7xx_hal.o + 0x0000000008004860 HAL_Init + *fill* 0x0000000008004876 0x2 + .text.HAL_IncTick + 0x0000000008004878 0x18 build/stm32f7xx_hal.o + 0x0000000008004878 HAL_IncTick + .text.HAL_GetTick + 0x0000000008004890 0xc build/stm32f7xx_hal.o + 0x0000000008004890 HAL_GetTick + .text.HAL_Delay + 0x000000000800489c 0x28 build/stm32f7xx_hal.o + 0x000000000800489c HAL_Delay + .text.RCC_GetHCLKClockFreq + 0x00000000080048c4 0x18 build/stm32f7xx_ll_rcc.o + 0x00000000080048c4 RCC_GetHCLKClockFreq + .text.RCC_GetPCLK1ClockFreq + 0x00000000080048dc 0x18 build/stm32f7xx_ll_rcc.o + 0x00000000080048dc RCC_GetPCLK1ClockFreq + .text.RCC_GetPCLK2ClockFreq + 0x00000000080048f4 0x18 build/stm32f7xx_ll_rcc.o + 0x00000000080048f4 RCC_GetPCLK2ClockFreq + .text.RCC_PLL_GetFreqDomain_SYS + 0x000000000800490c 0x44 build/stm32f7xx_ll_rcc.o + 0x000000000800490c RCC_PLL_GetFreqDomain_SYS + .text.RCC_GetSystemClockFreq + 0x0000000008004950 0x2c build/stm32f7xx_ll_rcc.o + 0x0000000008004950 RCC_GetSystemClockFreq + .text.LL_RCC_GetUSARTClockFreq + 0x000000000800497c 0x178 build/stm32f7xx_ll_rcc.o + 0x000000000800497c LL_RCC_GetUSARTClockFreq + .text.LL_RCC_GetUARTClockFreq + 0x0000000008004af4 0x180 build/stm32f7xx_ll_rcc.o + 0x0000000008004af4 LL_RCC_GetUARTClockFreq + .text.LL_GPIO_Init + 0x0000000008004c74 0x152 build/stm32f7xx_ll_gpio.o + 0x0000000008004c74 LL_GPIO_Init + *fill* 0x0000000008004dc6 0x2 + .text.SDMMC_GetCmdError + 0x0000000008004dc8 0x38 build/stm32f7xx_ll_sdmmc.o + .text.SDMMC_Init + 0x0000000008004e00 0x34 build/stm32f7xx_ll_sdmmc.o + 0x0000000008004e00 SDMMC_Init + .text.SDMMC_ReadFIFO + 0x0000000008004e34 0x6 build/stm32f7xx_ll_sdmmc.o + 0x0000000008004e34 SDMMC_ReadFIFO + .text.SDMMC_WriteFIFO + 0x0000000008004e3a 0xa build/stm32f7xx_ll_sdmmc.o + 0x0000000008004e3a SDMMC_WriteFIFO + .text.SDMMC_PowerState_ON + 0x0000000008004e44 0x8 build/stm32f7xx_ll_sdmmc.o + 0x0000000008004e44 SDMMC_PowerState_ON + .text.SDMMC_GetPowerState + 0x0000000008004e4c 0x8 build/stm32f7xx_ll_sdmmc.o + 0x0000000008004e4c SDMMC_GetPowerState + .text.SDMMC_SendCommand + 0x0000000008004e54 0x24 build/stm32f7xx_ll_sdmmc.o + 0x0000000008004e54 SDMMC_SendCommand + .text.SDMMC_GetCommandResponse + 0x0000000008004e78 0x6 build/stm32f7xx_ll_sdmmc.o + 0x0000000008004e78 SDMMC_GetCommandResponse + .text.SDMMC_GetResponse + 0x0000000008004e7e 0x6 build/stm32f7xx_ll_sdmmc.o + 0x0000000008004e7e SDMMC_GetResponse + .text.SDMMC_ConfigData + 0x0000000008004e84 0x24 build/stm32f7xx_ll_sdmmc.o + 0x0000000008004e84 SDMMC_ConfigData + .text.SDMMC_CmdGoIdleState + 0x0000000008004ea8 0x26 build/stm32f7xx_ll_sdmmc.o + 0x0000000008004ea8 SDMMC_CmdGoIdleState + *fill* 0x0000000008004ece 0x2 + .text.SDMMC_GetCmdResp1 + 0x0000000008004ed0 0x154 build/stm32f7xx_ll_sdmmc.o + 0x0000000008004ed0 SDMMC_GetCmdResp1 + .text.SDMMC_CmdBlockLength + 0x0000000008005024 0x30 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005024 SDMMC_CmdBlockLength + .text.SDMMC_CmdReadSingleBlock + 0x0000000008005054 0x30 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005054 SDMMC_CmdReadSingleBlock + .text.SDMMC_CmdReadMultiBlock + 0x0000000008005084 0x30 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005084 SDMMC_CmdReadMultiBlock + .text.SDMMC_CmdWriteSingleBlock + 0x00000000080050b4 0x30 build/stm32f7xx_ll_sdmmc.o + 0x00000000080050b4 SDMMC_CmdWriteSingleBlock + .text.SDMMC_CmdWriteMultiBlock + 0x00000000080050e4 0x30 build/stm32f7xx_ll_sdmmc.o + 0x00000000080050e4 SDMMC_CmdWriteMultiBlock + .text.SDMMC_CmdStopTransfer + 0x0000000008005114 0x34 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005114 SDMMC_CmdStopTransfer + .text.SDMMC_CmdSelDesel + 0x0000000008005148 0x30 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005148 SDMMC_CmdSelDesel + .text.SDMMC_CmdAppCommand + 0x0000000008005178 0x30 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005178 SDMMC_CmdAppCommand + .text.SDMMC_CmdBusWidth + 0x00000000080051a8 0x30 build/stm32f7xx_ll_sdmmc.o + 0x00000000080051a8 SDMMC_CmdBusWidth + .text.SDMMC_CmdSendSCR + 0x00000000080051d8 0x30 build/stm32f7xx_ll_sdmmc.o + 0x00000000080051d8 SDMMC_CmdSendSCR + .text.SDMMC_CmdSendStatus + 0x0000000008005208 0x30 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005208 SDMMC_CmdSendStatus + .text.SDMMC_GetCmdResp2 + 0x0000000008005238 0x5c build/stm32f7xx_ll_sdmmc.o + 0x0000000008005238 SDMMC_GetCmdResp2 + .text.SDMMC_CmdSendCID + 0x0000000008005294 0x2a build/stm32f7xx_ll_sdmmc.o + 0x0000000008005294 SDMMC_CmdSendCID + .text.SDMMC_CmdSendCSD + 0x00000000080052be 0x2a build/stm32f7xx_ll_sdmmc.o + 0x00000000080052be SDMMC_CmdSendCSD + .text.SDMMC_GetCmdResp3 + 0x00000000080052e8 0x4c build/stm32f7xx_ll_sdmmc.o + 0x00000000080052e8 SDMMC_GetCmdResp3 + .text.SDMMC_CmdAppOperCommand + 0x0000000008005334 0x34 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005334 SDMMC_CmdAppOperCommand + .text.SDMMC_GetCmdResp6 + 0x0000000008005368 0xa0 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005368 SDMMC_GetCmdResp6 + .text.SDMMC_CmdSetRelAdd + 0x0000000008005408 0x30 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005408 SDMMC_CmdSetRelAdd + .text.SDMMC_GetCmdResp7 + 0x0000000008005438 0x64 build/stm32f7xx_ll_sdmmc.o + 0x0000000008005438 SDMMC_GetCmdResp7 + .text.SDMMC_CmdOperCond + 0x000000000800549c 0x2e build/stm32f7xx_ll_sdmmc.o + 0x000000000800549c SDMMC_CmdOperCond + *fill* 0x00000000080054ca 0x2 + .text.SD_PowerON + 0x00000000080054cc 0xc0 build/stm32f7xx_hal_sd.o + .text.SD_FindSCR + 0x000000000800558c 0x100 build/stm32f7xx_hal_sd.o + .text.SD_WideBus_Enable + 0x000000000800568c 0x4e build/stm32f7xx_hal_sd.o + .text.SD_WideBus_Disable + 0x00000000080056da 0x4e build/stm32f7xx_hal_sd.o + .text.SD_SendStatus + 0x0000000008005728 0x2c build/stm32f7xx_hal_sd.o + .text.HAL_SD_ReadBlocks + 0x0000000008005754 0x248 build/stm32f7xx_hal_sd.o + 0x0000000008005754 HAL_SD_ReadBlocks + .text.HAL_SD_WriteBlocks + 0x000000000800599c 0x200 build/stm32f7xx_hal_sd.o + 0x000000000800599c HAL_SD_WriteBlocks + .text.HAL_SD_GetCardCSD + 0x0000000008005b9c 0x1b8 build/stm32f7xx_hal_sd.o + 0x0000000008005b9c HAL_SD_GetCardCSD + .text.SD_InitCard + 0x0000000008005d54 0x100 build/stm32f7xx_hal_sd.o + .text.HAL_SD_InitCard + 0x0000000008005e54 0xa8 build/stm32f7xx_hal_sd.o + 0x0000000008005e54 HAL_SD_InitCard + .text.HAL_SD_Init + 0x0000000008005efc 0x36 build/stm32f7xx_hal_sd.o + 0x0000000008005efc HAL_SD_Init + .text.HAL_SD_GetCardInfo + 0x0000000008005f32 0x24 build/stm32f7xx_hal_sd.o + 0x0000000008005f32 HAL_SD_GetCardInfo + *fill* 0x0000000008005f56 0x2 + .text.HAL_SD_ConfigWideBusOperation + 0x0000000008005f58 0xc0 build/stm32f7xx_hal_sd.o + 0x0000000008005f58 HAL_SD_ConfigWideBusOperation + .text.HAL_SD_GetCardState + 0x0000000008006018 0x22 build/stm32f7xx_hal_sd.o + 0x0000000008006018 HAL_SD_GetCardState + *fill* 0x000000000800603a 0x2 + .text.LL_SPI_Init + 0x000000000800603c 0x8c build/stm32f7xx_ll_spi.o + 0x000000000800603c LL_SPI_Init + .text.HAL_TIM_Base_Start_IT + 0x00000000080060c8 0x90 build/stm32f7xx_hal_tim.o + 0x00000000080060c8 HAL_TIM_Base_Start_IT + .text.HAL_TIM_Base_Stop_IT + 0x0000000008006158 0x32 build/stm32f7xx_hal_tim.o + 0x0000000008006158 HAL_TIM_Base_Stop_IT + .text.HAL_TIM_PeriodElapsedCallback + 0x000000000800618a 0x2 build/stm32f7xx_hal_tim.o + 0x000000000800618a HAL_TIM_PeriodElapsedCallback + .text.HAL_TIM_OC_DelayElapsedCallback + 0x000000000800618c 0x2 build/stm32f7xx_hal_tim.o + 0x000000000800618c HAL_TIM_OC_DelayElapsedCallback + .text.HAL_TIM_IC_CaptureCallback + 0x000000000800618e 0x2 build/stm32f7xx_hal_tim.o + 0x000000000800618e HAL_TIM_IC_CaptureCallback + .text.HAL_TIM_PWM_PulseFinishedCallback + 0x0000000008006190 0x2 build/stm32f7xx_hal_tim.o + 0x0000000008006190 HAL_TIM_PWM_PulseFinishedCallback + .text.HAL_TIM_TriggerCallback + 0x0000000008006192 0x2 build/stm32f7xx_hal_tim.o + 0x0000000008006192 HAL_TIM_TriggerCallback + .text.HAL_TIM_IRQHandler + 0x0000000008006194 0x17a build/stm32f7xx_hal_tim.o + 0x0000000008006194 HAL_TIM_IRQHandler + *fill* 0x000000000800630e 0x2 + .text.TIM_Base_SetConfig + 0x0000000008006310 0x120 build/stm32f7xx_hal_tim.o + 0x0000000008006310 TIM_Base_SetConfig + .text.HAL_TIM_Base_Init + 0x0000000008006430 0x60 build/stm32f7xx_hal_tim.o + 0x0000000008006430 HAL_TIM_Base_Init + .text.HAL_TIMEx_CommutCallback + 0x0000000008006490 0x2 build/stm32f7xx_hal_tim_ex.o + 0x0000000008006490 HAL_TIMEx_CommutCallback + .text.HAL_TIMEx_BreakCallback + 0x0000000008006492 0x2 build/stm32f7xx_hal_tim_ex.o + 0x0000000008006492 HAL_TIMEx_BreakCallback + .text.HAL_TIMEx_Break2Callback + 0x0000000008006494 0x2 build/stm32f7xx_hal_tim_ex.o + 0x0000000008006494 HAL_TIMEx_Break2Callback + *fill* 0x0000000008006496 0x2 + .text.LL_TIM_Init + 0x0000000008006498 0x110 build/stm32f7xx_ll_tim.o + 0x0000000008006498 LL_TIM_Init + .text.LL_USART_Init + 0x00000000080065a8 0x124 build/stm32f7xx_ll_usart.o + 0x00000000080065a8 LL_USART_Init + .text.SystemInit + 0x00000000080066cc 0x14 build/system_stm32f7xx.o + 0x00000000080066cc SystemInit + .text.FATFS_LinkDriverEx + 0x00000000080066e0 0x54 build/ff_gen_drv.o + 0x00000000080066e0 FATFS_LinkDriverEx + .text.FATFS_LinkDriver + 0x0000000008006734 0xa build/ff_gen_drv.o + 0x0000000008006734 FATFS_LinkDriver + *fill* 0x000000000800673e 0x2 + .text.Reset_Handler + 0x0000000008006740 0x50 build/startup_stm32f767xx.o + 0x0000000008006740 Reset_Handler + .text.Default_Handler + 0x0000000008006790 0x2 build/startup_stm32f767xx.o + 0x0000000008006790 RTC_Alarm_IRQHandler + 0x0000000008006790 EXTI2_IRQHandler + 0x0000000008006790 TIM8_CC_IRQHandler + 0x0000000008006790 UART8_IRQHandler + 0x0000000008006790 SPI4_IRQHandler + 0x0000000008006790 TIM1_CC_IRQHandler + 0x0000000008006790 DMA2_Stream5_IRQHandler + 0x0000000008006790 JPEG_IRQHandler + 0x0000000008006790 DMA1_Stream5_IRQHandler + 0x0000000008006790 CAN3_RX1_IRQHandler + 0x0000000008006790 PVD_IRQHandler + 0x0000000008006790 TAMP_STAMP_IRQHandler + 0x0000000008006790 CAN2_RX1_IRQHandler + 0x0000000008006790 EXTI3_IRQHandler + 0x0000000008006790 TIM8_TRG_COM_TIM14_IRQHandler + 0x0000000008006790 DFSDM1_FLT1_IRQHandler + 0x0000000008006790 TIM8_UP_TIM13_IRQHandler + 0x0000000008006790 I2C3_ER_IRQHandler + 0x0000000008006790 DFSDM1_FLT2_IRQHandler + 0x0000000008006790 EXTI0_IRQHandler + 0x0000000008006790 I2C2_EV_IRQHandler + 0x0000000008006790 DMA1_Stream2_IRQHandler + 0x0000000008006790 CAN1_RX0_IRQHandler + 0x0000000008006790 FPU_IRQHandler + 0x0000000008006790 OTG_HS_WKUP_IRQHandler + 0x0000000008006790 CAN3_SCE_IRQHandler + 0x0000000008006790 LTDC_ER_IRQHandler + 0x0000000008006790 CAN2_SCE_IRQHandler + 0x0000000008006790 DMA2_Stream2_IRQHandler + 0x0000000008006790 SPI1_IRQHandler + 0x0000000008006790 TIM1_BRK_TIM9_IRQHandler + 0x0000000008006790 DCMI_IRQHandler + 0x0000000008006790 CAN2_RX0_IRQHandler + 0x0000000008006790 DMA2_Stream3_IRQHandler + 0x0000000008006790 SAI2_IRQHandler + 0x0000000008006790 DFSDM1_FLT3_IRQHandler + 0x0000000008006790 USART6_IRQHandler + 0x0000000008006790 CAN3_RX0_IRQHandler + 0x0000000008006790 USART3_IRQHandler + 0x0000000008006790 CAN1_RX1_IRQHandler + 0x0000000008006790 UART5_IRQHandler + 0x0000000008006790 DMA2_Stream0_IRQHandler + 0x0000000008006790 TIM4_IRQHandler + 0x0000000008006790 QUADSPI_IRQHandler + 0x0000000008006790 I2C1_EV_IRQHandler + 0x0000000008006790 DMA1_Stream6_IRQHandler + 0x0000000008006790 DMA1_Stream1_IRQHandler + 0x0000000008006790 UART4_IRQHandler + 0x0000000008006790 TIM3_IRQHandler + 0x0000000008006790 RCC_IRQHandler + 0x0000000008006790 TIM8_BRK_TIM12_IRQHandler + 0x0000000008006790 Default_Handler + 0x0000000008006790 CEC_IRQHandler + 0x0000000008006790 EXTI15_10_IRQHandler + 0x0000000008006790 DMA1_Stream7_IRQHandler + 0x0000000008006790 SPI5_IRQHandler + 0x0000000008006790 SDMMC1_IRQHandler + 0x0000000008006790 CAN2_TX_IRQHandler + 0x0000000008006790 I2C3_EV_IRQHandler + 0x0000000008006790 EXTI9_5_IRQHandler + 0x0000000008006790 RTC_WKUP_IRQHandler + 0x0000000008006790 LTDC_IRQHandler + 0x0000000008006790 ETH_WKUP_IRQHandler + 0x0000000008006790 SPDIF_RX_IRQHandler + 0x0000000008006790 SPI2_IRQHandler + 0x0000000008006790 OTG_HS_EP1_IN_IRQHandler + 0x0000000008006790 DMA1_Stream0_IRQHandler + 0x0000000008006790 CAN1_TX_IRQHandler + 0x0000000008006790 EXTI4_IRQHandler + 0x0000000008006790 RNG_IRQHandler + 0x0000000008006790 ETH_IRQHandler + 0x0000000008006790 OTG_HS_EP1_OUT_IRQHandler + 0x0000000008006790 WWDG_IRQHandler + 0x0000000008006790 SPI6_IRQHandler + 0x0000000008006790 MDIOS_IRQHandler + 0x0000000008006790 I2C4_EV_IRQHandler + 0x0000000008006790 CAN3_TX_IRQHandler + 0x0000000008006790 OTG_FS_WKUP_IRQHandler + 0x0000000008006790 TIM1_TRG_COM_TIM11_IRQHandler + 0x0000000008006790 OTG_HS_IRQHandler + 0x0000000008006790 DMA2D_IRQHandler + 0x0000000008006790 EXTI1_IRQHandler + 0x0000000008006790 SDMMC2_IRQHandler + 0x0000000008006790 UART7_IRQHandler + 0x0000000008006790 USART2_IRQHandler + 0x0000000008006790 DFSDM1_FLT0_IRQHandler + 0x0000000008006790 I2C2_ER_IRQHandler + 0x0000000008006790 DMA2_Stream1_IRQHandler + 0x0000000008006790 CAN1_SCE_IRQHandler + 0x0000000008006790 FLASH_IRQHandler + 0x0000000008006790 DMA2_Stream4_IRQHandler + 0x0000000008006790 OTG_FS_IRQHandler + 0x0000000008006790 SPI3_IRQHandler + 0x0000000008006790 DMA1_Stream4_IRQHandler + 0x0000000008006790 I2C1_ER_IRQHandler + 0x0000000008006790 FMC_IRQHandler + 0x0000000008006790 LPTIM1_IRQHandler + 0x0000000008006790 I2C4_ER_IRQHandler + 0x0000000008006790 DMA2_Stream6_IRQHandler + 0x0000000008006790 SAI1_IRQHandler + 0x0000000008006790 DMA1_Stream3_IRQHandler + *(.glue_7) + .glue_7 0x0000000008006792 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x0000000008006792 0x0 linker stubs + *(.eh_frame) + *fill* 0x0000000008006792 0x2 + .eh_frame 0x0000000008006794 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + *(.init) + .init 0x0000000008006794 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o + 0x0000000008006794 _init + .init 0x0000000008006798 0x8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o + *(.fini) + .fini 0x00000000080067a0 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o + 0x00000000080067a0 _fini + .fini 0x00000000080067a4 0x8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o + 0x00000000080067ac . = ALIGN (0x4) + 0x00000000080067ac _etext = . + +.vfp11_veneer 0x00000000080067ac 0x0 + .vfp11_veneer 0x00000000080067ac 0x0 linker stubs + +.v4_bx 0x00000000080067ac 0x0 + .v4_bx 0x00000000080067ac 0x0 linker stubs + +.iplt 0x00000000080067ac 0x0 + .iplt 0x00000000080067ac 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + +.rodata 0x00000000080067ac 0x48 + 0x00000000080067ac . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.Decode_uart.str1.4 + 0x00000000080067ac 0x10 build/main.o + .rodata.SD_SAVE.str1.4 + 0x00000000080067bc 0xa build/main.o + *fill* 0x00000000080067c6 0x2 + .rodata.SD_Driver + 0x00000000080067c8 0x14 build/sd_diskio.o + 0x00000000080067c8 SD_Driver + .rodata.AHBPrescTable + 0x00000000080067dc 0x10 build/system_stm32f7xx.o + 0x00000000080067dc AHBPrescTable + .rodata.APBPrescTable + 0x00000000080067ec 0x8 build/system_stm32f7xx.o + 0x00000000080067ec APBPrescTable + 0x00000000080067f4 . = ALIGN (0x4) + +.ARM.extab + *(.ARM.extab* .gnu.linkonce.armextab.*) + +.ARM 0x00000000080067f4 0x8 + 0x00000000080067f4 __exidx_start = . + *(.ARM.exidx*) + .ARM.exidx 0x00000000080067f4 0x8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + 0x00000000080067fc __exidx_end = . + +.rel.dyn 0x00000000080067fc 0x0 + .rel.iplt 0x00000000080067fc 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + +.preinit_array 0x00000000080067fc 0x0 + 0x00000000080067fc PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x00000000080067fc PROVIDE (__preinit_array_end = .) + +.init_array 0x00000000080067fc 0x4 + 0x00000000080067fc PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x00000000080067fc 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + 0x0000000008006800 PROVIDE (__init_array_end = .) + +.fini_array 0x0000000008006800 0x4 + 0x0000000008006800 PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x0000000008006800 0x4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + 0x0000000008006804 PROVIDE (__fini_array_end = .) + 0x0000000008006804 _sidata = LOADADDR (.data) + +.data 0x0000000020000000 0xc load address 0x0000000008006804 + 0x0000000020000000 . = ALIGN (0x4) + 0x0000000020000000 _sdata = . + *(.data) + *(.data*) + .data.Stat 0x0000000020000000 0x1 build/sd_diskio.o + .data.uwTickFreq + 0x0000000020000001 0x1 build/stm32f7xx_hal.o + 0x0000000020000001 uwTickFreq + *fill* 0x0000000020000002 0x2 + .data.uwTickPrio + 0x0000000020000004 0x4 build/stm32f7xx_hal.o + 0x0000000020000004 uwTickPrio + .data.SystemCoreClock + 0x0000000020000008 0x4 build/system_stm32f7xx.o + 0x0000000020000008 SystemCoreClock + 0x000000002000000c . = ALIGN (0x4) + 0x000000002000000c _edata = . + +.tm_clone_table + 0x000000002000000c 0x0 load address 0x0000000008006810 + .tm_clone_table + 0x000000002000000c 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + .tm_clone_table + 0x000000002000000c 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtend.o + +.igot.plt 0x000000002000000c 0x0 load address 0x0000000008006810 + .igot.plt 0x000000002000000c 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + 0x000000002000000c . = ALIGN (0x4) + +.bss 0x000000002000000c 0x2fc load address 0x0000000008006810 + 0x000000002000000c _sbss = . + 0x000000002000000c __bss_start__ = _sbss + *(.bss) + .bss 0x000000002000000c 0x1c /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + *(.bss*) + .bss.COMMAND 0x0000000020000028 0x1e build/main.o + 0x0000000020000028 COMMAND + .bss.CPU_state + 0x0000000020000046 0x1 build/main.o + 0x0000000020000046 CPU_state + .bss.CPU_state_old + 0x0000000020000047 0x1 build/main.o + 0x0000000020000047 CPU_state_old + .bss.CS_result + 0x0000000020000048 0x2 build/main.o + 0x0000000020000048 CS_result + *fill* 0x000000002000004a 0x2 + .bss.Curr_setup + 0x000000002000004c 0x12 build/main.o + 0x000000002000004c Curr_setup + *fill* 0x000000002000005e 0x2 + .bss.Def_setup + 0x0000000020000060 0x12 build/main.o + 0x0000000020000060 Def_setup + *fill* 0x0000000020000072 0x2 + .bss.LD1_curr_setup + 0x0000000020000074 0x10 build/main.o + 0x0000000020000074 LD1_curr_setup + .bss.LD1_def_setup + 0x0000000020000084 0x10 build/main.o + 0x0000000020000084 LD1_def_setup + .bss.LD1_param + 0x0000000020000094 0xc build/main.o + 0x0000000020000094 LD1_param + .bss.LD2_curr_setup + 0x00000000200000a0 0x10 build/main.o + 0x00000000200000a0 LD2_curr_setup + .bss.LD2_def_setup + 0x00000000200000b0 0x10 build/main.o + 0x00000000200000b0 LD2_def_setup + .bss.LD2_param + 0x00000000200000c0 0xc build/main.o + 0x00000000200000c0 LD2_param + .bss.Long_Data + 0x00000000200000cc 0x1e build/main.o + 0x00000000200000cc Long_Data + *fill* 0x00000000200000ea 0x2 + .bss.SD_SEEK 0x00000000200000ec 0x4 build/main.o + 0x00000000200000ec SD_SEEK + .bss.SD_SLIDE 0x00000000200000f0 0x4 build/main.o + 0x00000000200000f0 SD_SLIDE + .bss.State_Data + 0x00000000200000f4 0x2 build/main.o + 0x00000000200000f4 State_Data + .bss.TIM10_coflag + 0x00000000200000f6 0x1 build/main.o + 0x00000000200000f6 TIM10_coflag + *fill* 0x00000000200000f7 0x1 + .bss.TIM10_period + 0x00000000200000f8 0x4 build/main.o + 0x00000000200000f8 TIM10_period + .bss.TO10 0x00000000200000fc 0x4 build/main.o + 0x00000000200000fc TO10 + .bss.TO10_counter + 0x0000000020000100 0x4 build/main.o + 0x0000000020000100 TO10_counter + .bss.TO6 0x0000000020000104 0x4 build/main.o + 0x0000000020000104 TO6 + .bss.TO6_before + 0x0000000020000108 0x4 build/main.o + 0x0000000020000108 TO6_before + .bss.TO6_stop 0x000000002000010c 0x4 build/main.o + 0x000000002000010c TO6_stop + .bss.TO6_uart 0x0000000020000110 0x4 build/main.o + 0x0000000020000110 TO6_uart + .bss.TO7 0x0000000020000114 0x4 build/main.o + 0x0000000020000114 TO7 + .bss.TO7_PID 0x0000000020000118 0x4 build/main.o + 0x0000000020000118 TO7_PID + .bss.TO7_before + 0x000000002000011c 0x4 build/main.o + 0x000000002000011c TO7_before + .bss.UART_DATA + 0x0000000020000120 0x1e build/main.o + 0x0000000020000120 UART_DATA + .bss.UART_header + 0x000000002000013e 0x2 build/main.o + 0x000000002000013e UART_header + .bss.UART_rec_incr + 0x0000000020000140 0x2 build/main.o + 0x0000000020000140 UART_rec_incr + .bss.UART_transmission_request + 0x0000000020000142 0x1 build/main.o + 0x0000000020000142 UART_transmission_request + *fill* 0x0000000020000143 0x1 + .bss.fgoto 0x0000000020000144 0x4 build/main.o + 0x0000000020000144 fgoto + .bss.flg_tmt 0x0000000020000148 0x1 build/main.o + 0x0000000020000148 flg_tmt + *fill* 0x0000000020000149 0x3 + .bss.hadc1 0x000000002000014c 0x48 build/main.o + 0x000000002000014c hadc1 + .bss.hadc3 0x0000000020000194 0x48 build/main.o + 0x0000000020000194 hadc3 + .bss.hsd1 0x00000000200001dc 0x84 build/main.o + 0x00000000200001dc hsd1 + .bss.htim10 0x0000000020000260 0x4c build/main.o + 0x0000000020000260 htim10 + .bss.sizeoffile + 0x00000000200002ac 0x4 build/main.o + 0x00000000200002ac sizeoffile + .bss.task 0x00000000200002b0 0x34 build/main.o + 0x00000000200002b0 task + .bss.temp16 0x00000000200002e4 0x2 build/main.o + 0x00000000200002e4 temp16 + *fill* 0x00000000200002e6 0x2 + .bss.test 0x00000000200002e8 0x4 build/main.o + 0x00000000200002e8 test + .bss.u_rx_flg 0x00000000200002ec 0x1 build/main.o + 0x00000000200002ec u_rx_flg + .bss.u_tx_flg 0x00000000200002ed 0x1 build/main.o + 0x00000000200002ed u_tx_flg + .bss.uart_buf 0x00000000200002ee 0x1 build/main.o + 0x00000000200002ee uart_buf + *fill* 0x00000000200002ef 0x1 + .bss.SDPath 0x00000000200002f0 0x4 build/fatfs.o + 0x00000000200002f0 SDPath + .bss.retSD 0x00000000200002f4 0x1 build/fatfs.o + 0x00000000200002f4 retSD + *fill* 0x00000000200002f5 0x3 + .bss.uwTick 0x00000000200002f8 0x4 build/stm32f7xx_hal.o + 0x00000000200002f8 uwTick + .bss.disk 0x00000000200002fc 0xc build/ff_gen_drv.o + 0x00000000200002fc disk + *(COMMON) + 0x0000000020000308 . = ALIGN (0x4) + 0x0000000020000308 _ebss = . + 0x0000000020000308 __bss_end__ = _ebss + +._user_heap_stack + 0x0000000020000308 0x6000 load address 0x0000000008006810 + 0x0000000020000308 . = ALIGN (0x8) + [!provide] PROVIDE (end = .) + 0x0000000020000308 PROVIDE (_end = .) + 0x0000000020002308 . = (. + _Min_Heap_Size) + *fill* 0x0000000020000308 0x2000 + 0x0000000020006308 . = (. + _Min_Stack_Size) + *fill* 0x0000000020002308 0x4000 + 0x0000000020006308 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) +OUTPUT(build/For_stm32.elf elf32-littlearm) +LOAD linker stubs +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc.a +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libm.a +LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a + +.ARM.attributes + 0x0000000000000000 0x2e + .ARM.attributes + 0x0000000000000000 0x1e /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o + .ARM.attributes + 0x000000000000001e 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + .ARM.attributes + 0x0000000000000050 0x32 build/main.o + .ARM.attributes + 0x0000000000000082 0x32 build/bsp_driver_sd.o + .ARM.attributes + 0x00000000000000b4 0x32 build/sd_diskio.o + .ARM.attributes + 0x00000000000000e6 0x32 build/fatfs.o + .ARM.attributes + 0x0000000000000118 0x32 build/fatfs_platform.o + .ARM.attributes + 0x000000000000014a 0x32 build/stm32f7xx_it.o + .ARM.attributes + 0x000000000000017c 0x32 build/stm32f7xx_hal_msp.o + .ARM.attributes + 0x00000000000001ae 0x32 build/stm32f7xx_hal_adc.o + .ARM.attributes + 0x00000000000001e0 0x32 build/stm32f7xx_hal_adc_ex.o + .ARM.attributes + 0x0000000000000212 0x32 build/stm32f7xx_hal_rcc.o + .ARM.attributes + 0x0000000000000244 0x32 build/stm32f7xx_hal_rcc_ex.o + .ARM.attributes + 0x0000000000000276 0x32 build/stm32f7xx_hal_gpio.o + .ARM.attributes + 0x00000000000002a8 0x32 build/stm32f7xx_hal_pwr_ex.o + .ARM.attributes + 0x00000000000002da 0x32 build/stm32f7xx_hal_cortex.o + .ARM.attributes + 0x000000000000030c 0x32 build/stm32f7xx_hal.o + .ARM.attributes + 0x000000000000033e 0x32 build/stm32f7xx_ll_rcc.o + .ARM.attributes + 0x0000000000000370 0x32 build/stm32f7xx_ll_gpio.o + .ARM.attributes + 0x00000000000003a2 0x32 build/stm32f7xx_ll_sdmmc.o + .ARM.attributes + 0x00000000000003d4 0x32 build/stm32f7xx_hal_sd.o + .ARM.attributes + 0x0000000000000406 0x32 build/stm32f7xx_ll_spi.o + .ARM.attributes + 0x0000000000000438 0x32 build/stm32f7xx_hal_tim.o + .ARM.attributes + 0x000000000000046a 0x32 build/stm32f7xx_hal_tim_ex.o + .ARM.attributes + 0x000000000000049c 0x32 build/stm32f7xx_ll_tim.o + .ARM.attributes + 0x00000000000004ce 0x32 build/stm32f7xx_ll_usart.o + .ARM.attributes + 0x0000000000000500 0x32 build/system_stm32f7xx.o + .ARM.attributes + 0x0000000000000532 0x32 build/ff_gen_drv.o + .ARM.attributes + 0x0000000000000564 0x21 build/startup_stm32f767xx.o + .ARM.attributes + 0x0000000000000585 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + .ARM.attributes + 0x00000000000005b7 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + .ARM.attributes + 0x00000000000005e9 0x1e /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + .ARM.attributes + 0x0000000000000607 0x32 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + .ARM.attributes + 0x0000000000000639 0x1e /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + .ARM.attributes + 0x0000000000000657 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtend.o + .ARM.attributes + 0x0000000000000687 0x1e /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o + +.comment 0x0000000000000000 0x33 + .comment 0x0000000000000000 0x33 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + 0x34 (size before relaxing) + .comment 0x0000000000000033 0x34 build/main.o + .comment 0x0000000000000033 0x34 build/bsp_driver_sd.o + .comment 0x0000000000000033 0x34 build/sd_diskio.o + .comment 0x0000000000000033 0x34 build/fatfs.o + .comment 0x0000000000000033 0x34 build/fatfs_platform.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_it.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_msp.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_adc.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_adc_ex.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_rcc.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_rcc_ex.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_gpio.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_pwr_ex.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_cortex.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_ll_rcc.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_ll_gpio.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_ll_sdmmc.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_sd.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_ll_spi.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_tim.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_hal_tim_ex.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_ll_tim.o + .comment 0x0000000000000033 0x34 build/stm32f7xx_ll_usart.o + .comment 0x0000000000000033 0x34 build/system_stm32f7xx.o + .comment 0x0000000000000033 0x34 build/ff_gen_drv.o + .comment 0x0000000000000033 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + .comment 0x0000000000000033 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + .comment 0x0000000000000033 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + .comment 0x0000000000000033 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtend.o + +.debug_info 0x0000000000000000 0x23f69 + .debug_info 0x0000000000000000 0x71b7 build/main.o + .debug_info 0x00000000000071b7 0xd01 build/bsp_driver_sd.o + .debug_info 0x0000000000007eb8 0x6d3 build/sd_diskio.o + .debug_info 0x000000000000858b 0x642 build/fatfs.o + .debug_info 0x0000000000008bcd 0x1d2 build/fatfs_platform.o + .debug_info 0x0000000000008d9f 0x172c build/stm32f7xx_it.o + .debug_info 0x000000000000a4cb 0x1d02 build/stm32f7xx_hal_msp.o + .debug_info 0x000000000000c1cd 0xf7a build/stm32f7xx_hal_adc.o + .debug_info 0x000000000000d147 0xcf6 build/stm32f7xx_hal_adc_ex.o + .debug_info 0x000000000000de3d 0xce7 build/stm32f7xx_hal_rcc.o + .debug_info 0x000000000000eb24 0x96e build/stm32f7xx_hal_rcc_ex.o + .debug_info 0x000000000000f492 0x867 build/stm32f7xx_hal_gpio.o + .debug_info 0x000000000000fcf9 0xb03 build/stm32f7xx_hal_pwr_ex.o + .debug_info 0x00000000000107fc 0x1449 build/stm32f7xx_hal_cortex.o + .debug_info 0x0000000000011c45 0xbe0 build/stm32f7xx_hal.o + .debug_info 0x0000000000012825 0x1d6b build/stm32f7xx_ll_rcc.o + .debug_info 0x0000000000014590 0xdc7 build/stm32f7xx_ll_gpio.o + .debug_info 0x0000000000015357 0x1adc build/stm32f7xx_ll_sdmmc.o + .debug_info 0x0000000000016e33 0x282c build/stm32f7xx_hal_sd.o + .debug_info 0x000000000001965f 0xb08 build/stm32f7xx_ll_spi.o + .debug_info 0x000000000001a167 0x426e build/stm32f7xx_hal_tim.o + .debug_info 0x000000000001e3d5 0x1edb build/stm32f7xx_hal_tim_ex.o + .debug_info 0x00000000000202b0 0x19d2 build/stm32f7xx_ll_tim.o + .debug_info 0x0000000000021c82 0xc14 build/stm32f7xx_ll_usart.o + .debug_info 0x0000000000022896 0x7ea build/system_stm32f7xx.o + .debug_info 0x0000000000023080 0x513 build/ff_gen_drv.o + .debug_info 0x0000000000023593 0x22 build/startup_stm32f767xx.o + .debug_info 0x00000000000235b5 0x11a /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + .debug_info 0x00000000000236cf 0x137 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + .debug_info 0x0000000000023806 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_info 0x000000000002382c 0x717 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + .debug_info 0x0000000000023f43 0x26 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + +.debug_abbrev 0x0000000000000000 0x425e + .debug_abbrev 0x0000000000000000 0x4f2 build/main.o + .debug_abbrev 0x00000000000004f2 0x281 build/bsp_driver_sd.o + .debug_abbrev 0x0000000000000773 0x1b6 build/sd_diskio.o + .debug_abbrev 0x0000000000000929 0x180 build/fatfs.o + .debug_abbrev 0x0000000000000aa9 0x10d build/fatfs_platform.o + .debug_abbrev 0x0000000000000bb6 0x30b build/stm32f7xx_it.o + .debug_abbrev 0x0000000000000ec1 0x26d build/stm32f7xx_hal_msp.o + .debug_abbrev 0x000000000000112e 0x281 build/stm32f7xx_hal_adc.o + .debug_abbrev 0x00000000000013af 0x2a4 build/stm32f7xx_hal_adc_ex.o + .debug_abbrev 0x0000000000001653 0x2d2 build/stm32f7xx_hal_rcc.o + .debug_abbrev 0x0000000000001925 0x1f4 build/stm32f7xx_hal_rcc_ex.o + .debug_abbrev 0x0000000000001b19 0x22b build/stm32f7xx_hal_gpio.o + .debug_abbrev 0x0000000000001d44 0x1b8 build/stm32f7xx_hal_pwr_ex.o + .debug_abbrev 0x0000000000001efc 0x379 build/stm32f7xx_hal_cortex.o + .debug_abbrev 0x0000000000002275 0x209 build/stm32f7xx_hal.o + .debug_abbrev 0x000000000000247e 0x294 build/stm32f7xx_ll_rcc.o + .debug_abbrev 0x0000000000002712 0x270 build/stm32f7xx_ll_gpio.o + .debug_abbrev 0x0000000000002982 0x236 build/stm32f7xx_ll_sdmmc.o + .debug_abbrev 0x0000000000002bb8 0x2d1 build/stm32f7xx_hal_sd.o + .debug_abbrev 0x0000000000002e89 0x2e2 build/stm32f7xx_ll_spi.o + .debug_abbrev 0x000000000000316b 0x289 build/stm32f7xx_hal_tim.o + .debug_abbrev 0x00000000000033f4 0x29f build/stm32f7xx_hal_tim_ex.o + .debug_abbrev 0x0000000000003693 0x2b8 build/stm32f7xx_ll_tim.o + .debug_abbrev 0x000000000000394b 0x2f2 build/stm32f7xx_ll_usart.o + .debug_abbrev 0x0000000000003c3d 0x12a build/system_stm32f7xx.o + .debug_abbrev 0x0000000000003d67 0x1da build/ff_gen_drv.o + .debug_abbrev 0x0000000000003f41 0x12 build/startup_stm32f767xx.o + .debug_abbrev 0x0000000000003f53 0xcc /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + .debug_abbrev 0x000000000000401f 0xb4 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + .debug_abbrev 0x00000000000040d3 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_abbrev 0x00000000000040e7 0x163 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + .debug_abbrev 0x000000000000424a 0x14 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + +.debug_loc 0x0000000000000000 0x197b2 + .debug_loc 0x0000000000000000 0x23c7 build/main.o + .debug_loc 0x00000000000023c7 0x66b build/bsp_driver_sd.o + .debug_loc 0x0000000000002a32 0x4d1 build/sd_diskio.o + .debug_loc 0x0000000000002f03 0x20 build/fatfs.o + .debug_loc 0x0000000000002f23 0x51 build/fatfs_platform.o + .debug_loc 0x0000000000002f74 0x3e0 build/stm32f7xx_it.o + .debug_loc 0x0000000000003354 0x313 build/stm32f7xx_hal_msp.o + .debug_loc 0x0000000000003667 0xccd build/stm32f7xx_hal_adc.o + .debug_loc 0x0000000000004334 0xafa build/stm32f7xx_hal_adc_ex.o + .debug_loc 0x0000000000004e2e 0x80d build/stm32f7xx_hal_rcc.o + .debug_loc 0x000000000000563b 0x954 build/stm32f7xx_hal_rcc_ex.o + .debug_loc 0x0000000000005f8f 0x5e8 build/stm32f7xx_hal_gpio.o + .debug_loc 0x0000000000006577 0x3dd build/stm32f7xx_hal_pwr_ex.o + .debug_loc 0x0000000000006954 0x794 build/stm32f7xx_hal_cortex.o + .debug_loc 0x00000000000070e8 0x1e1 build/stm32f7xx_hal.o + .debug_loc 0x00000000000072c9 0x13c2 build/stm32f7xx_ll_rcc.o + .debug_loc 0x000000000000868b 0x82a build/stm32f7xx_ll_gpio.o + .debug_loc 0x0000000000008eb5 0x17a9 build/stm32f7xx_ll_sdmmc.o + .debug_loc 0x000000000000a65e 0x27c7 build/stm32f7xx_hal_sd.o + .debug_loc 0x000000000000ce25 0x6d3 build/stm32f7xx_ll_spi.o + .debug_loc 0x000000000000d4f8 0x60b3 build/stm32f7xx_hal_tim.o + .debug_loc 0x00000000000135ab 0x27e6 build/stm32f7xx_hal_tim_ex.o + .debug_loc 0x0000000000015d91 0x1a72 build/stm32f7xx_ll_tim.o + .debug_loc 0x0000000000017803 0x851 build/stm32f7xx_ll_usart.o + .debug_loc 0x0000000000018054 0x158 build/system_stm32f7xx.o + .debug_loc 0x00000000000181ac 0x311 build/ff_gen_drv.o + .debug_loc 0x00000000000184bd 0xba /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + .debug_loc 0x0000000000018577 0x22c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + .debug_loc 0x00000000000187a3 0x100f /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + +.debug_aranges 0x0000000000000000 0x1448 + .debug_aranges + 0x0000000000000000 0x128 build/main.o + .debug_aranges + 0x0000000000000128 0x98 build/bsp_driver_sd.o + .debug_aranges + 0x00000000000001c0 0x48 build/sd_diskio.o + .debug_aranges + 0x0000000000000208 0x28 build/fatfs.o + .debug_aranges + 0x0000000000000230 0x20 build/fatfs_platform.o + .debug_aranges + 0x0000000000000250 0xb0 build/stm32f7xx_it.o + .debug_aranges + 0x0000000000000300 0x50 build/stm32f7xx_hal_msp.o + .debug_aranges + 0x0000000000000350 0xe8 build/stm32f7xx_hal_adc.o + .debug_aranges + 0x0000000000000438 0x90 build/stm32f7xx_hal_adc_ex.o + .debug_aranges + 0x00000000000004c8 0x88 build/stm32f7xx_hal_rcc.o + .debug_aranges + 0x0000000000000550 0x50 build/stm32f7xx_hal_rcc_ex.o + .debug_aranges + 0x00000000000005a0 0x58 build/stm32f7xx_hal_gpio.o + .debug_aranges + 0x00000000000005f8 0x80 build/stm32f7xx_hal_pwr_ex.o + .debug_aranges + 0x0000000000000678 0xb8 build/stm32f7xx_hal_cortex.o + .debug_aranges + 0x0000000000000730 0x110 build/stm32f7xx_hal.o + .debug_aranges + 0x0000000000000840 0xf8 build/stm32f7xx_ll_rcc.o + .debug_aranges + 0x0000000000000938 0x30 build/stm32f7xx_ll_gpio.o + .debug_aranges + 0x0000000000000968 0x188 build/stm32f7xx_ll_sdmmc.o + .debug_aranges + 0x0000000000000af0 0x168 build/stm32f7xx_hal_sd.o + .debug_aranges + 0x0000000000000c58 0x50 build/stm32f7xx_ll_spi.o + .debug_aranges + 0x0000000000000ca8 0x3e0 build/stm32f7xx_hal_tim.o + .debug_aranges + 0x0000000000001088 0x180 build/stm32f7xx_hal_tim_ex.o + .debug_aranges + 0x0000000000001208 0xd0 build/stm32f7xx_ll_tim.o + .debug_aranges + 0x00000000000012d8 0x40 build/stm32f7xx_ll_usart.o + .debug_aranges + 0x0000000000001318 0x28 build/system_stm32f7xx.o + .debug_aranges + 0x0000000000001340 0x40 build/ff_gen_drv.o + .debug_aranges + 0x0000000000001380 0x28 build/startup_stm32f767xx.o + .debug_aranges + 0x00000000000013a8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + .debug_aranges + 0x00000000000013c8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + .debug_aranges + 0x00000000000013e8 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_aranges + 0x0000000000001408 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + .debug_aranges + 0x0000000000001428 0x20 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + +.debug_ranges 0x0000000000000000 0x16c0 + .debug_ranges 0x0000000000000000 0x130 build/main.o + .debug_ranges 0x0000000000000130 0x88 build/bsp_driver_sd.o + .debug_ranges 0x00000000000001b8 0x38 build/sd_diskio.o + .debug_ranges 0x00000000000001f0 0x18 build/fatfs.o + .debug_ranges 0x0000000000000208 0x10 build/fatfs_platform.o + .debug_ranges 0x0000000000000218 0xa0 build/stm32f7xx_it.o + .debug_ranges 0x00000000000002b8 0x40 build/stm32f7xx_hal_msp.o + .debug_ranges 0x00000000000002f8 0xd8 build/stm32f7xx_hal_adc.o + .debug_ranges 0x00000000000003d0 0x80 build/stm32f7xx_hal_adc_ex.o + .debug_ranges 0x0000000000000450 0x78 build/stm32f7xx_hal_rcc.o + .debug_ranges 0x00000000000004c8 0x40 build/stm32f7xx_hal_rcc_ex.o + .debug_ranges 0x0000000000000508 0x48 build/stm32f7xx_hal_gpio.o + .debug_ranges 0x0000000000000550 0x70 build/stm32f7xx_hal_pwr_ex.o + .debug_ranges 0x00000000000005c0 0x108 build/stm32f7xx_hal_cortex.o + .debug_ranges 0x00000000000006c8 0x100 build/stm32f7xx_hal.o + .debug_ranges 0x00000000000007c8 0xe8 build/stm32f7xx_ll_rcc.o + .debug_ranges 0x00000000000008b0 0x128 build/stm32f7xx_ll_gpio.o + .debug_ranges 0x00000000000009d8 0x178 build/stm32f7xx_ll_sdmmc.o + .debug_ranges 0x0000000000000b50 0x158 build/stm32f7xx_hal_sd.o + .debug_ranges 0x0000000000000ca8 0x58 build/stm32f7xx_ll_spi.o + .debug_ranges 0x0000000000000d00 0x3d0 build/stm32f7xx_hal_tim.o + .debug_ranges 0x00000000000010d0 0x170 build/stm32f7xx_hal_tim_ex.o + .debug_ranges 0x0000000000001240 0x210 build/stm32f7xx_ll_tim.o + .debug_ranges 0x0000000000001450 0x120 build/stm32f7xx_ll_usart.o + .debug_ranges 0x0000000000001570 0x18 build/system_stm32f7xx.o + .debug_ranges 0x0000000000001588 0x30 build/ff_gen_drv.o + .debug_ranges 0x00000000000015b8 0x20 build/startup_stm32f767xx.o + .debug_ranges 0x00000000000015d8 0xe8 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + +.debug_line 0x0000000000000000 0x178f2 + .debug_line 0x0000000000000000 0x316d build/main.o + .debug_line 0x000000000000316d 0x37d build/bsp_driver_sd.o + .debug_line 0x00000000000034ea 0x2e2 build/sd_diskio.o + .debug_line 0x00000000000037cc 0x16c build/fatfs.o + .debug_line 0x0000000000003938 0x10d build/fatfs_platform.o + .debug_line 0x0000000000003a45 0x88e build/stm32f7xx_it.o + .debug_line 0x00000000000042d3 0x493 build/stm32f7xx_hal_msp.o + .debug_line 0x0000000000004766 0xfe2 build/stm32f7xx_hal_adc.o + .debug_line 0x0000000000005748 0xba0 build/stm32f7xx_hal_adc_ex.o + .debug_line 0x00000000000062e8 0xc61 build/stm32f7xx_hal_rcc.o + .debug_line 0x0000000000006f49 0xb92 build/stm32f7xx_hal_rcc_ex.o + .debug_line 0x0000000000007adb 0x67f build/stm32f7xx_hal_gpio.o + .debug_line 0x000000000000815a 0x4d4 build/stm32f7xx_hal_pwr_ex.o + .debug_line 0x000000000000862e 0x709 build/stm32f7xx_hal_cortex.o + .debug_line 0x0000000000008d37 0x536 build/stm32f7xx_hal.o + .debug_line 0x000000000000926d 0x1531 build/stm32f7xx_ll_rcc.o + .debug_line 0x000000000000a79e 0x71d build/stm32f7xx_ll_gpio.o + .debug_line 0x000000000000aebb 0x105d build/stm32f7xx_ll_sdmmc.o + .debug_line 0x000000000000bf18 0x2675 build/stm32f7xx_hal_sd.o + .debug_line 0x000000000000e58d 0x56e build/stm32f7xx_ll_spi.o + .debug_line 0x000000000000eafb 0x4e4a build/stm32f7xx_hal_tim.o + .debug_line 0x0000000000013945 0x1dbf build/stm32f7xx_hal_tim_ex.o + .debug_line 0x0000000000015704 0xddb build/stm32f7xx_ll_tim.o + .debug_line 0x00000000000164df 0x61f build/stm32f7xx_ll_usart.o + .debug_line 0x0000000000016afe 0x1c0 build/system_stm32f7xx.o + .debug_line 0x0000000000016cbe 0x259 build/ff_gen_drv.o + .debug_line 0x0000000000016f17 0x76 build/startup_stm32f767xx.o + .debug_line 0x0000000000016f8d 0x138 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + .debug_line 0x00000000000170c5 0x1bf /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + .debug_line 0x0000000000017284 0x60 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_line 0x00000000000172e4 0x5ae /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + .debug_line 0x0000000000017892 0x60 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + +.debug_str 0x0000000000000000 0x7b65 + .debug_str 0x0000000000000000 0x264d build/main.o + 0x288a (size before relaxing) + .debug_str 0x000000000000264d 0x256 build/bsp_driver_sd.o + 0x8e3 (size before relaxing) + .debug_str 0x00000000000028a3 0x10c build/sd_diskio.o + 0x410 (size before relaxing) + .debug_str 0x00000000000029af 0x115 build/fatfs.o + 0x408 (size before relaxing) + .debug_str 0x0000000000002ac4 0x15 build/fatfs_platform.o + 0x247 (size before relaxing) + .debug_str 0x0000000000002ad9 0x311 build/stm32f7xx_it.o + 0xdb3 (size before relaxing) + .debug_str 0x0000000000002dea 0xed build/stm32f7xx_hal_msp.o + 0x173f (size before relaxing) + .debug_str 0x0000000000002ed7 0x279 build/stm32f7xx_hal_adc.o + 0x954 (size before relaxing) + .debug_str 0x0000000000003150 0x2dc build/stm32f7xx_hal_adc_ex.o + 0x9a8 (size before relaxing) + .debug_str 0x000000000000342c 0x20e build/stm32f7xx_hal_rcc.o + 0x72c (size before relaxing) + .debug_str 0x000000000000363a 0x142 build/stm32f7xx_hal_rcc_ex.o + 0x744 (size before relaxing) + .debug_str 0x000000000000377c 0xfc build/stm32f7xx_hal_gpio.o + 0x4fd (size before relaxing) + .debug_str 0x0000000000003878 0x1d3 build/stm32f7xx_hal_pwr_ex.o + 0x657 (size before relaxing) + .debug_str 0x0000000000003a4b 0x3c9 build/stm32f7xx_hal_cortex.o + 0xe7e (size before relaxing) + .debug_str 0x0000000000003e14 0x313 build/stm32f7xx_hal.o + 0xd46 (size before relaxing) + .debug_str 0x0000000000004127 0x8ce build/stm32f7xx_ll_rcc.o + 0xbe6 (size before relaxing) + .debug_str 0x00000000000049f5 0x121 build/stm32f7xx_ll_gpio.o + 0x4b1 (size before relaxing) + .debug_str 0x0000000000004b16 0x4bf build/stm32f7xx_ll_sdmmc.o + 0x804 (size before relaxing) + .debug_str 0x0000000000004fd5 0x613 build/stm32f7xx_hal_sd.o + 0x10d6 (size before relaxing) + .debug_str 0x00000000000055e8 0x1d8 build/stm32f7xx_ll_spi.o + 0x5d7 (size before relaxing) + .debug_str 0x00000000000057c0 0xe6b build/stm32f7xx_hal_tim.o + 0x1752 (size before relaxing) + .debug_str 0x000000000000662b 0x67d build/stm32f7xx_hal_tim_ex.o + 0x103d (size before relaxing) + .debug_str 0x0000000000006ca8 0x40e build/stm32f7xx_ll_tim.o + 0x9e3 (size before relaxing) + .debug_str 0x00000000000070b6 0x164 build/stm32f7xx_ll_usart.o + 0x5d6 (size before relaxing) + .debug_str 0x000000000000721a 0x38 build/system_stm32f7xx.o + 0x461 (size before relaxing) + .debug_str 0x0000000000007252 0xb7 build/ff_gen_drv.o + 0x38e (size before relaxing) + .debug_str 0x0000000000007309 0x22 build/startup_stm32f767xx.o + 0x88 (size before relaxing) + .debug_str 0x000000000000732b 0x173 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + 0x20e (size before relaxing) + .debug_str 0x000000000000749e 0xaa /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + 0x1c3 (size before relaxing) + .debug_str 0x0000000000007548 0xa6 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_str 0x00000000000075ee 0x547 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + 0x64a (size before relaxing) + .debug_str 0x0000000000007b35 0x30 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + 0xaa (size before relaxing) + +.debug_frame 0x0000000000000000 0x3594 + .debug_frame 0x0000000000000000 0x3f4 build/main.o + .debug_frame 0x00000000000003f4 0x180 build/bsp_driver_sd.o + .debug_frame 0x0000000000000574 0xac build/sd_diskio.o + .debug_frame 0x0000000000000620 0x38 build/fatfs.o + .debug_frame 0x0000000000000658 0x28 build/fatfs_platform.o + .debug_frame 0x0000000000000680 0x184 build/stm32f7xx_it.o + .debug_frame 0x0000000000000804 0xd8 build/stm32f7xx_hal_msp.o + .debug_frame 0x00000000000008dc 0x268 build/stm32f7xx_hal_adc.o + .debug_frame 0x0000000000000b44 0x18c build/stm32f7xx_hal_adc_ex.o + .debug_frame 0x0000000000000cd0 0x178 build/stm32f7xx_hal_rcc.o + .debug_frame 0x0000000000000e48 0xc0 build/stm32f7xx_hal_rcc_ex.o + .debug_frame 0x0000000000000f08 0xd8 build/stm32f7xx_hal_gpio.o + .debug_frame 0x0000000000000fe0 0x134 build/stm32f7xx_hal_pwr_ex.o + .debug_frame 0x0000000000001114 0x168 build/stm32f7xx_hal_cortex.o + .debug_frame 0x000000000000127c 0x22c build/stm32f7xx_hal.o + .debug_frame 0x00000000000014a8 0x250 build/stm32f7xx_ll_rcc.o + .debug_frame 0x00000000000016f8 0x68 build/stm32f7xx_ll_gpio.o + .debug_frame 0x0000000000001760 0x4c8 build/stm32f7xx_ll_sdmmc.o + .debug_frame 0x0000000000001c28 0x4b8 build/stm32f7xx_hal_sd.o + .debug_frame 0x00000000000020e0 0xb4 build/stm32f7xx_ll_spi.o + .debug_frame 0x0000000000002194 0xb6c build/stm32f7xx_hal_tim.o + .debug_frame 0x0000000000002d00 0x46c build/stm32f7xx_hal_tim_ex.o + .debug_frame 0x000000000000316c 0x24c build/stm32f7xx_ll_tim.o + .debug_frame 0x00000000000033b8 0x78 build/stm32f7xx_ll_usart.o + .debug_frame 0x0000000000003430 0x30 build/system_stm32f7xx.o + .debug_frame 0x0000000000003460 0x7c build/ff_gen_drv.o + .debug_frame 0x00000000000034dc 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + .debug_frame 0x0000000000003508 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + .debug_frame 0x0000000000003534 0x2c /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x0000000000003560 0x34 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + +Cross Reference Table + +Symbol File +ADC_IRQHandler build/stm32f7xx_it.o +AHBPrescTable build/system_stm32f7xx.o + build/stm32f7xx_ll_utils.o + build/stm32f7xx_ll_rcc.o + build/stm32f7xx_hal_rcc.o +APBPrescTable build/system_stm32f7xx.o + build/stm32f7xx_ll_rcc.o + build/stm32f7xx_hal_rcc.o +BSP_PlatformIsDetected build/fatfs_platform.o + build/bsp_driver_sd.o +BSP_SD_AbortCallback build/bsp_driver_sd.o +BSP_SD_Erase build/bsp_driver_sd.o +BSP_SD_GetCardInfo build/bsp_driver_sd.o + build/sd_diskio.o +BSP_SD_GetCardState build/bsp_driver_sd.o + build/sd_diskio.o +BSP_SD_ITConfig build/bsp_driver_sd.o +BSP_SD_Init build/bsp_driver_sd.o + build/sd_diskio.o +BSP_SD_IsDetected build/bsp_driver_sd.o +BSP_SD_ReadBlocks build/bsp_driver_sd.o + build/sd_diskio.o +BSP_SD_ReadBlocks_DMA build/bsp_driver_sd.o +BSP_SD_ReadCpltCallback build/bsp_driver_sd.o +BSP_SD_WriteBlocks build/bsp_driver_sd.o + build/sd_diskio.o +BSP_SD_WriteBlocks_DMA build/bsp_driver_sd.o +BSP_SD_WriteCpltCallback build/bsp_driver_sd.o +BusFault_Handler build/stm32f7xx_it.o +CAN1_RX0_IRQHandler build/startup_stm32f767xx.o +CAN1_RX1_IRQHandler build/startup_stm32f767xx.o +CAN1_SCE_IRQHandler build/startup_stm32f767xx.o +CAN1_TX_IRQHandler build/startup_stm32f767xx.o +CAN2_RX0_IRQHandler build/startup_stm32f767xx.o +CAN2_RX1_IRQHandler build/startup_stm32f767xx.o +CAN2_SCE_IRQHandler build/startup_stm32f767xx.o +CAN2_TX_IRQHandler build/startup_stm32f767xx.o +CAN3_RX0_IRQHandler build/startup_stm32f767xx.o +CAN3_RX1_IRQHandler build/startup_stm32f767xx.o +CAN3_SCE_IRQHandler build/startup_stm32f767xx.o +CAN3_TX_IRQHandler build/startup_stm32f767xx.o +CEC_IRQHandler build/startup_stm32f767xx.o +COMMAND build/main.o + build/stm32f7xx_it.o +CPU_state build/main.o + build/stm32f7xx_it.o +CPU_state_old build/main.o +CS_result build/main.o +CalculateChecksum build/main.o +CheckChecksum build/main.o +Create_File build/main.o +Curr_setup build/main.o +DCMI_IRQHandler build/startup_stm32f767xx.o +DFSDM1_FLT0_IRQHandler build/startup_stm32f767xx.o +DFSDM1_FLT1_IRQHandler build/startup_stm32f767xx.o +DFSDM1_FLT2_IRQHandler build/startup_stm32f767xx.o +DFSDM1_FLT3_IRQHandler build/startup_stm32f767xx.o +DMA1_Stream0_IRQHandler build/startup_stm32f767xx.o +DMA1_Stream1_IRQHandler build/startup_stm32f767xx.o +DMA1_Stream2_IRQHandler build/startup_stm32f767xx.o +DMA1_Stream3_IRQHandler build/startup_stm32f767xx.o +DMA1_Stream4_IRQHandler build/startup_stm32f767xx.o +DMA1_Stream5_IRQHandler build/startup_stm32f767xx.o +DMA1_Stream6_IRQHandler build/startup_stm32f767xx.o +DMA1_Stream7_IRQHandler build/startup_stm32f767xx.o +DMA2D_IRQHandler build/startup_stm32f767xx.o +DMA2_Stream0_IRQHandler build/startup_stm32f767xx.o +DMA2_Stream1_IRQHandler build/startup_stm32f767xx.o +DMA2_Stream2_IRQHandler build/startup_stm32f767xx.o +DMA2_Stream3_IRQHandler build/startup_stm32f767xx.o +DMA2_Stream4_IRQHandler build/startup_stm32f767xx.o +DMA2_Stream5_IRQHandler build/startup_stm32f767xx.o +DMA2_Stream6_IRQHandler build/startup_stm32f767xx.o +DMA2_Stream7_IRQHandler build/stm32f7xx_it.o +DMA2_Stream7_TransferComplete build/stm32f7xx_it.o +DebugMon_Handler build/stm32f7xx_it.o +Def_setup build/main.o +Default_Handler build/startup_stm32f767xx.o +ETH_IRQHandler build/startup_stm32f767xx.o +ETH_WKUP_IRQHandler build/startup_stm32f767xx.o +EXTI0_IRQHandler build/startup_stm32f767xx.o +EXTI15_10_IRQHandler build/startup_stm32f767xx.o +EXTI1_IRQHandler build/startup_stm32f767xx.o +EXTI2_IRQHandler build/startup_stm32f767xx.o +EXTI3_IRQHandler build/startup_stm32f767xx.o +EXTI4_IRQHandler build/startup_stm32f767xx.o +EXTI9_5_IRQHandler build/startup_stm32f767xx.o +Error_Handler build/main.o + build/stm32f7xx_hal_msp.o +FATFS_GetAttachedDriversNbr build/ff_gen_drv.o +FATFS_LinkDriver build/ff_gen_drv.o + build/fatfs.o +FATFS_LinkDriverEx build/ff_gen_drv.o +FATFS_UnLinkDriver build/ff_gen_drv.o +FATFS_UnLinkDriverEx build/ff_gen_drv.o +FLASH_Erase_Sector build/stm32f7xx_hal_flash_ex.o + build/stm32f7xx_hal_flash.o +FLASH_IRQHandler build/startup_stm32f767xx.o +FLASH_WaitForLastOperation build/stm32f7xx_hal_flash.o + build/stm32f7xx_hal_flash_ex.o +FMC_IRQHandler build/startup_stm32f767xx.o +FPU_IRQHandler build/startup_stm32f767xx.o +HAL_ADCEx_InjectedConfigChannel build/stm32f7xx_hal_adc_ex.o +HAL_ADCEx_InjectedConvCpltCallback build/stm32f7xx_hal_adc_ex.o + build/stm32f7xx_hal_adc.o +HAL_ADCEx_InjectedGetValue build/stm32f7xx_hal_adc_ex.o +HAL_ADCEx_InjectedPollForConversion build/stm32f7xx_hal_adc_ex.o +HAL_ADCEx_InjectedStart build/stm32f7xx_hal_adc_ex.o +HAL_ADCEx_InjectedStart_IT build/stm32f7xx_hal_adc_ex.o +HAL_ADCEx_InjectedStop build/stm32f7xx_hal_adc_ex.o +HAL_ADCEx_InjectedStop_IT build/stm32f7xx_hal_adc_ex.o +HAL_ADCEx_MultiModeConfigChannel build/stm32f7xx_hal_adc_ex.o +HAL_ADCEx_MultiModeGetValue build/stm32f7xx_hal_adc_ex.o +HAL_ADCEx_MultiModeStart_DMA build/stm32f7xx_hal_adc_ex.o +HAL_ADCEx_MultiModeStop_DMA build/stm32f7xx_hal_adc_ex.o +HAL_ADC_AnalogWDGConfig build/stm32f7xx_hal_adc.o +HAL_ADC_ConfigChannel build/stm32f7xx_hal_adc.o + build/main.o +HAL_ADC_ConvCpltCallback build/stm32f7xx_hal_adc.o + build/stm32f7xx_hal_adc_ex.o +HAL_ADC_ConvHalfCpltCallback build/stm32f7xx_hal_adc.o + build/stm32f7xx_hal_adc_ex.o +HAL_ADC_DeInit build/stm32f7xx_hal_adc.o +HAL_ADC_ErrorCallback build/stm32f7xx_hal_adc.o + build/stm32f7xx_hal_adc_ex.o +HAL_ADC_GetError build/stm32f7xx_hal_adc.o +HAL_ADC_GetState build/stm32f7xx_hal_adc.o +HAL_ADC_GetValue build/stm32f7xx_hal_adc.o + build/main.o +HAL_ADC_IRQHandler build/stm32f7xx_hal_adc.o + build/stm32f7xx_it.o +HAL_ADC_Init build/stm32f7xx_hal_adc.o + build/main.o +HAL_ADC_LevelOutOfWindowCallback build/stm32f7xx_hal_adc.o +HAL_ADC_MspDeInit build/stm32f7xx_hal_msp.o +HAL_ADC_MspInit build/stm32f7xx_hal_msp.o +HAL_ADC_PollForConversion build/stm32f7xx_hal_adc.o + build/main.o +HAL_ADC_PollForEvent build/stm32f7xx_hal_adc.o +HAL_ADC_Start build/stm32f7xx_hal_adc.o + build/main.o +HAL_ADC_Start_DMA build/stm32f7xx_hal_adc.o +HAL_ADC_Start_IT build/stm32f7xx_hal_adc.o +HAL_ADC_Stop build/stm32f7xx_hal_adc.o + build/main.o +HAL_ADC_Stop_DMA build/stm32f7xx_hal_adc.o +HAL_ADC_Stop_IT build/stm32f7xx_hal_adc.o +HAL_DBGMCU_DisableDBGSleepMode build/stm32f7xx_hal.o +HAL_DBGMCU_DisableDBGStandbyMode build/stm32f7xx_hal.o +HAL_DBGMCU_DisableDBGStopMode build/stm32f7xx_hal.o +HAL_DBGMCU_EnableDBGSleepMode build/stm32f7xx_hal.o +HAL_DBGMCU_EnableDBGStandbyMode build/stm32f7xx_hal.o +HAL_DBGMCU_EnableDBGStopMode build/stm32f7xx_hal.o +HAL_DMAEx_ChangeMemory build/stm32f7xx_hal_dma_ex.o +HAL_DMAEx_MultiBufferStart build/stm32f7xx_hal_dma_ex.o +HAL_DMAEx_MultiBufferStart_IT build/stm32f7xx_hal_dma_ex.o +HAL_DMA_Abort build/stm32f7xx_hal_dma.o + build/stm32f7xx_hal_sd.o + build/stm32f7xx_hal_adc_ex.o + build/stm32f7xx_hal_adc.o +HAL_DMA_Abort_IT build/stm32f7xx_hal_dma.o + build/stm32f7xx_hal_tim_ex.o + build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_sd.o + build/stm32f7xx_hal_i2c.o +HAL_DMA_DeInit build/stm32f7xx_hal_dma.o +HAL_DMA_GetError build/stm32f7xx_hal_dma.o + build/stm32f7xx_hal_sd.o + build/stm32f7xx_hal_i2c.o +HAL_DMA_GetState build/stm32f7xx_hal_dma.o + build/stm32f7xx_hal_i2c.o +HAL_DMA_IRQHandler build/stm32f7xx_hal_dma.o +HAL_DMA_Init build/stm32f7xx_hal_dma.o +HAL_DMA_PollForTransfer build/stm32f7xx_hal_dma.o +HAL_DMA_RegisterCallback build/stm32f7xx_hal_dma.o +HAL_DMA_Start build/stm32f7xx_hal_dma.o +HAL_DMA_Start_IT build/stm32f7xx_hal_dma.o + build/stm32f7xx_hal_tim_ex.o + build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_sd.o + build/stm32f7xx_hal_i2c.o + build/stm32f7xx_hal_adc_ex.o + build/stm32f7xx_hal_adc.o +HAL_DMA_UnRegisterCallback build/stm32f7xx_hal_dma.o +HAL_DeInit build/stm32f7xx_hal.o +HAL_Delay build/stm32f7xx_hal.o + build/stm32f7xx_hal_sd.o +HAL_DisableCompensationCell build/stm32f7xx_hal.o +HAL_DisableFMCMemorySwapping build/stm32f7xx_hal.o +HAL_DisableMemorySwappingBank build/stm32f7xx_hal.o +HAL_EXTI_ClearConfigLine build/stm32f7xx_hal_exti.o +HAL_EXTI_ClearPending build/stm32f7xx_hal_exti.o +HAL_EXTI_GenerateSWI build/stm32f7xx_hal_exti.o +HAL_EXTI_GetConfigLine build/stm32f7xx_hal_exti.o +HAL_EXTI_GetHandle build/stm32f7xx_hal_exti.o +HAL_EXTI_GetPending build/stm32f7xx_hal_exti.o +HAL_EXTI_IRQHandler build/stm32f7xx_hal_exti.o +HAL_EXTI_RegisterCallback build/stm32f7xx_hal_exti.o +HAL_EXTI_SetConfigLine build/stm32f7xx_hal_exti.o +HAL_EnableCompensationCell build/stm32f7xx_hal.o +HAL_EnableFMCMemorySwapping build/stm32f7xx_hal.o +HAL_EnableMemorySwappingBank build/stm32f7xx_hal.o +HAL_FLASHEx_Erase build/stm32f7xx_hal_flash_ex.o +HAL_FLASHEx_Erase_IT build/stm32f7xx_hal_flash_ex.o +HAL_FLASHEx_OBGetConfig build/stm32f7xx_hal_flash_ex.o +HAL_FLASHEx_OBProgram build/stm32f7xx_hal_flash_ex.o +HAL_FLASH_EndOfOperationCallback build/stm32f7xx_hal_flash.o +HAL_FLASH_GetError build/stm32f7xx_hal_flash.o +HAL_FLASH_IRQHandler build/stm32f7xx_hal_flash.o +HAL_FLASH_Lock build/stm32f7xx_hal_flash.o +HAL_FLASH_OB_Launch build/stm32f7xx_hal_flash.o +HAL_FLASH_OB_Lock build/stm32f7xx_hal_flash.o +HAL_FLASH_OB_Unlock build/stm32f7xx_hal_flash.o +HAL_FLASH_OperationErrorCallback build/stm32f7xx_hal_flash.o +HAL_FLASH_Program build/stm32f7xx_hal_flash.o +HAL_FLASH_Program_IT build/stm32f7xx_hal_flash.o +HAL_FLASH_Unlock build/stm32f7xx_hal_flash.o +HAL_GPIO_DeInit build/stm32f7xx_hal_gpio.o + build/stm32f7xx_hal_msp.o +HAL_GPIO_EXTI_Callback build/stm32f7xx_hal_gpio.o +HAL_GPIO_EXTI_IRQHandler build/stm32f7xx_hal_gpio.o +HAL_GPIO_Init build/stm32f7xx_hal_gpio.o + build/stm32f7xx_hal_rcc.o + build/stm32f7xx_hal_msp.o + build/main.o +HAL_GPIO_LockPin build/stm32f7xx_hal_gpio.o +HAL_GPIO_ReadPin build/stm32f7xx_hal_gpio.o + build/fatfs_platform.o + build/main.o +HAL_GPIO_TogglePin build/stm32f7xx_hal_gpio.o + build/stm32f7xx_it.o +HAL_GPIO_WritePin build/stm32f7xx_hal_gpio.o + build/main.o +HAL_GetDEVID build/stm32f7xx_hal.o +HAL_GetHalVersion build/stm32f7xx_hal.o +HAL_GetREVID build/stm32f7xx_hal.o +HAL_GetTick build/stm32f7xx_hal.o + build/stm32f7xx_hal_sd.o + build/stm32f7xx_hal_i2c.o + build/stm32f7xx_hal_pwr_ex.o + build/stm32f7xx_hal_dma.o + build/stm32f7xx_hal_flash.o + build/stm32f7xx_hal_rcc_ex.o + build/stm32f7xx_hal_rcc.o + build/stm32f7xx_hal_adc_ex.o + build/stm32f7xx_hal_adc.o +HAL_GetTickFreq build/stm32f7xx_hal.o +HAL_GetTickPrio build/stm32f7xx_hal.o +HAL_GetUIDw0 build/stm32f7xx_hal.o +HAL_GetUIDw1 build/stm32f7xx_hal.o +HAL_GetUIDw2 build/stm32f7xx_hal.o +HAL_I2CEx_ConfigAnalogFilter build/stm32f7xx_hal_i2c_ex.o +HAL_I2CEx_ConfigDigitalFilter build/stm32f7xx_hal_i2c_ex.o +HAL_I2CEx_DisableFastModePlus build/stm32f7xx_hal_i2c_ex.o +HAL_I2CEx_EnableFastModePlus build/stm32f7xx_hal_i2c_ex.o +HAL_I2C_AbortCpltCallback build/stm32f7xx_hal_i2c.o +HAL_I2C_AddrCallback build/stm32f7xx_hal_i2c.o +HAL_I2C_DeInit build/stm32f7xx_hal_i2c.o +HAL_I2C_DisableListen_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_ER_IRQHandler build/stm32f7xx_hal_i2c.o +HAL_I2C_EV_IRQHandler build/stm32f7xx_hal_i2c.o +HAL_I2C_EnableListen_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_ErrorCallback build/stm32f7xx_hal_i2c.o +HAL_I2C_GetError build/stm32f7xx_hal_i2c.o +HAL_I2C_GetMode build/stm32f7xx_hal_i2c.o +HAL_I2C_GetState build/stm32f7xx_hal_i2c.o +HAL_I2C_Init build/stm32f7xx_hal_i2c.o +HAL_I2C_IsDeviceReady build/stm32f7xx_hal_i2c.o +HAL_I2C_ListenCpltCallback build/stm32f7xx_hal_i2c.o +HAL_I2C_MasterRxCpltCallback build/stm32f7xx_hal_i2c.o +HAL_I2C_MasterTxCpltCallback build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Abort_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Receive build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Receive_DMA build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Receive_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Seq_Receive_DMA build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Seq_Receive_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Seq_Transmit_DMA build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Seq_Transmit_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Transmit build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Transmit_DMA build/stm32f7xx_hal_i2c.o +HAL_I2C_Master_Transmit_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_MemRxCpltCallback build/stm32f7xx_hal_i2c.o +HAL_I2C_MemTxCpltCallback build/stm32f7xx_hal_i2c.o +HAL_I2C_Mem_Read build/stm32f7xx_hal_i2c.o +HAL_I2C_Mem_Read_DMA build/stm32f7xx_hal_i2c.o +HAL_I2C_Mem_Read_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_Mem_Write build/stm32f7xx_hal_i2c.o +HAL_I2C_Mem_Write_DMA build/stm32f7xx_hal_i2c.o +HAL_I2C_Mem_Write_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_MspDeInit build/stm32f7xx_hal_i2c.o +HAL_I2C_MspInit build/stm32f7xx_hal_i2c.o +HAL_I2C_SlaveRxCpltCallback build/stm32f7xx_hal_i2c.o +HAL_I2C_SlaveTxCpltCallback build/stm32f7xx_hal_i2c.o +HAL_I2C_Slave_Receive build/stm32f7xx_hal_i2c.o +HAL_I2C_Slave_Receive_DMA build/stm32f7xx_hal_i2c.o +HAL_I2C_Slave_Receive_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_Slave_Seq_Receive_DMA build/stm32f7xx_hal_i2c.o +HAL_I2C_Slave_Seq_Receive_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_Slave_Seq_Transmit_DMA build/stm32f7xx_hal_i2c.o +HAL_I2C_Slave_Seq_Transmit_IT build/stm32f7xx_hal_i2c.o +HAL_I2C_Slave_Transmit build/stm32f7xx_hal_i2c.o +HAL_I2C_Slave_Transmit_DMA build/stm32f7xx_hal_i2c.o +HAL_I2C_Slave_Transmit_IT build/stm32f7xx_hal_i2c.o +HAL_IncTick build/stm32f7xx_hal.o + build/stm32f7xx_it.o +HAL_Init build/stm32f7xx_hal.o + build/main.o +HAL_InitTick build/stm32f7xx_hal.o + build/stm32f7xx_hal_rcc.o +HAL_MPU_ConfigRegion build/stm32f7xx_hal_cortex.o +HAL_MPU_Disable build/stm32f7xx_hal_cortex.o +HAL_MPU_DisableRegion build/stm32f7xx_hal_cortex.o +HAL_MPU_Enable build/stm32f7xx_hal_cortex.o +HAL_MPU_EnableRegion build/stm32f7xx_hal_cortex.o +HAL_MspDeInit build/stm32f7xx_hal.o +HAL_MspInit build/stm32f7xx_hal_msp.o +HAL_NVIC_ClearPendingIRQ build/stm32f7xx_hal_cortex.o +HAL_NVIC_DisableIRQ build/stm32f7xx_hal_cortex.o + build/stm32f7xx_hal_msp.o +HAL_NVIC_EnableIRQ build/stm32f7xx_hal_cortex.o + build/stm32f7xx_hal_msp.o +HAL_NVIC_GetActive build/stm32f7xx_hal_cortex.o +HAL_NVIC_GetPendingIRQ build/stm32f7xx_hal_cortex.o +HAL_NVIC_GetPriority build/stm32f7xx_hal_cortex.o +HAL_NVIC_GetPriorityGrouping build/stm32f7xx_hal_cortex.o +HAL_NVIC_SetPendingIRQ build/stm32f7xx_hal_cortex.o +HAL_NVIC_SetPriority build/stm32f7xx_hal_cortex.o + build/stm32f7xx_hal.o + build/stm32f7xx_hal_msp.o +HAL_NVIC_SetPriorityGrouping build/stm32f7xx_hal_cortex.o + build/stm32f7xx_hal.o +HAL_NVIC_SystemReset build/stm32f7xx_hal_cortex.o +HAL_PWREx_ControlVoltageScaling build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_DisableBkUpReg build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_DisableFlashPowerDown build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_DisableLowRegulatorLowVoltage build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_DisableMainRegulatorLowVoltage build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_DisableOverDrive build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_EnableBkUpReg build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_EnableFlashPowerDown build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_EnableLowRegulatorLowVoltage build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_EnableMainRegulatorLowVoltage build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_EnableOverDrive build/stm32f7xx_hal_pwr_ex.o + build/main.o +HAL_PWREx_EnterUnderDriveSTOPMode build/stm32f7xx_hal_pwr_ex.o +HAL_PWREx_GetVoltageRange build/stm32f7xx_hal_pwr_ex.o +HAL_PWR_ConfigPVD build/stm32f7xx_hal_pwr.o +HAL_PWR_DeInit build/stm32f7xx_hal_pwr.o +HAL_PWR_DisableBkUpAccess build/stm32f7xx_hal_pwr.o +HAL_PWR_DisablePVD build/stm32f7xx_hal_pwr.o +HAL_PWR_DisableSEVOnPend build/stm32f7xx_hal_pwr.o +HAL_PWR_DisableSleepOnExit build/stm32f7xx_hal_pwr.o +HAL_PWR_DisableWakeUpPin build/stm32f7xx_hal_pwr.o +HAL_PWR_EnableBkUpAccess build/stm32f7xx_hal_pwr.o +HAL_PWR_EnablePVD build/stm32f7xx_hal_pwr.o +HAL_PWR_EnableSEVOnPend build/stm32f7xx_hal_pwr.o +HAL_PWR_EnableSleepOnExit build/stm32f7xx_hal_pwr.o +HAL_PWR_EnableWakeUpPin build/stm32f7xx_hal_pwr.o +HAL_PWR_EnterSLEEPMode build/stm32f7xx_hal_pwr.o +HAL_PWR_EnterSTANDBYMode build/stm32f7xx_hal_pwr.o +HAL_PWR_EnterSTOPMode build/stm32f7xx_hal_pwr.o +HAL_PWR_PVDCallback build/stm32f7xx_hal_pwr.o +HAL_PWR_PVD_IRQHandler build/stm32f7xx_hal_pwr.o +HAL_RCCEx_DisablePLLI2S build/stm32f7xx_hal_rcc_ex.o +HAL_RCCEx_DisablePLLSAI build/stm32f7xx_hal_rcc_ex.o +HAL_RCCEx_EnablePLLI2S build/stm32f7xx_hal_rcc_ex.o +HAL_RCCEx_EnablePLLSAI build/stm32f7xx_hal_rcc_ex.o +HAL_RCCEx_GetPeriphCLKConfig build/stm32f7xx_hal_rcc_ex.o +HAL_RCCEx_GetPeriphCLKFreq build/stm32f7xx_hal_rcc_ex.o +HAL_RCCEx_PeriphCLKConfig build/stm32f7xx_hal_rcc_ex.o + build/stm32f7xx_hal_msp.o + build/main.o +HAL_RCC_CSSCallback build/stm32f7xx_hal_rcc.o +HAL_RCC_ClockConfig build/stm32f7xx_hal_rcc.o + build/main.o +HAL_RCC_DeInit build/stm32f7xx_hal_rcc.o +HAL_RCC_DisableCSS build/stm32f7xx_hal_rcc.o +HAL_RCC_EnableCSS build/stm32f7xx_hal_rcc.o +HAL_RCC_GetClockConfig build/stm32f7xx_hal_rcc.o +HAL_RCC_GetHCLKFreq build/stm32f7xx_hal_rcc.o +HAL_RCC_GetOscConfig build/stm32f7xx_hal_rcc.o +HAL_RCC_GetPCLK1Freq build/stm32f7xx_hal_rcc.o +HAL_RCC_GetPCLK2Freq build/stm32f7xx_hal_rcc.o +HAL_RCC_GetSysClockFreq build/stm32f7xx_hal_rcc.o +HAL_RCC_MCOConfig build/stm32f7xx_hal_rcc.o +HAL_RCC_NMI_IRQHandler build/stm32f7xx_hal_rcc.o +HAL_RCC_OscConfig build/stm32f7xx_hal_rcc.o + build/main.o +HAL_ResumeTick build/stm32f7xx_hal.o +HAL_SD_Abort build/stm32f7xx_hal_sd.o +HAL_SD_AbortCallback build/bsp_driver_sd.o +HAL_SD_Abort_IT build/stm32f7xx_hal_sd.o +HAL_SD_ConfigWideBusOperation build/stm32f7xx_hal_sd.o + build/bsp_driver_sd.o +HAL_SD_DeInit build/stm32f7xx_hal_sd.o +HAL_SD_Erase build/stm32f7xx_hal_sd.o + build/bsp_driver_sd.o +HAL_SD_ErrorCallback build/stm32f7xx_hal_sd.o +HAL_SD_GetCardCID build/stm32f7xx_hal_sd.o +HAL_SD_GetCardCSD build/stm32f7xx_hal_sd.o +HAL_SD_GetCardInfo build/stm32f7xx_hal_sd.o + build/bsp_driver_sd.o +HAL_SD_GetCardState build/stm32f7xx_hal_sd.o + build/bsp_driver_sd.o +HAL_SD_GetCardStatus build/stm32f7xx_hal_sd.o +HAL_SD_GetError build/stm32f7xx_hal_sd.o +HAL_SD_GetState build/stm32f7xx_hal_sd.o +HAL_SD_IRQHandler build/stm32f7xx_hal_sd.o +HAL_SD_Init build/stm32f7xx_hal_sd.o + build/bsp_driver_sd.o +HAL_SD_InitCard build/stm32f7xx_hal_sd.o +HAL_SD_MspDeInit build/stm32f7xx_hal_msp.o +HAL_SD_MspInit build/stm32f7xx_hal_msp.o +HAL_SD_ReadBlocks build/stm32f7xx_hal_sd.o + build/bsp_driver_sd.o +HAL_SD_ReadBlocks_DMA build/stm32f7xx_hal_sd.o + build/bsp_driver_sd.o +HAL_SD_ReadBlocks_IT build/stm32f7xx_hal_sd.o +HAL_SD_RxCpltCallback build/bsp_driver_sd.o +HAL_SD_TxCpltCallback build/bsp_driver_sd.o +HAL_SD_WriteBlocks build/stm32f7xx_hal_sd.o + build/bsp_driver_sd.o +HAL_SD_WriteBlocks_DMA build/stm32f7xx_hal_sd.o + build/bsp_driver_sd.o +HAL_SD_WriteBlocks_IT build/stm32f7xx_hal_sd.o +HAL_SYSTICK_CLKSourceConfig build/stm32f7xx_hal_cortex.o +HAL_SYSTICK_Callback build/stm32f7xx_hal_cortex.o +HAL_SYSTICK_Config build/stm32f7xx_hal_cortex.o + build/stm32f7xx_hal.o +HAL_SYSTICK_IRQHandler build/stm32f7xx_hal_cortex.o +HAL_SetTickFreq build/stm32f7xx_hal.o +HAL_SuspendTick build/stm32f7xx_hal.o +HAL_TIMEx_Break2Callback build/stm32f7xx_hal_tim_ex.o + build/stm32f7xx_hal_tim.o +HAL_TIMEx_BreakCallback build/stm32f7xx_hal_tim_ex.o + build/stm32f7xx_hal_tim.o +HAL_TIMEx_CommutCallback build/stm32f7xx_hal_tim_ex.o + build/stm32f7xx_hal_tim.o +HAL_TIMEx_CommutHalfCpltCallback build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_ConfigBreakDeadTime build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_ConfigBreakInput build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_ConfigCommutEvent build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_ConfigCommutEvent_DMA build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_ConfigCommutEvent_IT build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_GetChannelNState build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_GroupChannel5 build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_DeInit build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_GetState build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_Init build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_MspDeInit build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_MspInit build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_Start build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_Start_DMA build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_Start_IT build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_Stop build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_Stop_DMA build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_HallSensor_Stop_IT build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_MasterConfigSynchronization build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_OCN_Start build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_OCN_Start_DMA build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_OCN_Start_IT build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_OCN_Stop build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_OCN_Stop_DMA build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_OCN_Stop_IT build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_OnePulseN_Start build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_OnePulseN_Start_IT build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_OnePulseN_Stop build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_OnePulseN_Stop_IT build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_PWMN_Start build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_PWMN_Start_DMA build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_PWMN_Start_IT build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_PWMN_Stop build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_PWMN_Stop_DMA build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_PWMN_Stop_IT build/stm32f7xx_hal_tim_ex.o +HAL_TIMEx_RemapConfig build/stm32f7xx_hal_tim_ex.o +HAL_TIM_Base_DeInit build/stm32f7xx_hal_tim.o +HAL_TIM_Base_GetState build/stm32f7xx_hal_tim.o +HAL_TIM_Base_Init build/stm32f7xx_hal_tim.o + build/main.o +HAL_TIM_Base_MspDeInit build/stm32f7xx_hal_msp.o +HAL_TIM_Base_MspInit build/stm32f7xx_hal_msp.o +HAL_TIM_Base_Start build/stm32f7xx_hal_tim.o +HAL_TIM_Base_Start_DMA build/stm32f7xx_hal_tim.o +HAL_TIM_Base_Start_IT build/stm32f7xx_hal_tim.o + build/main.o +HAL_TIM_Base_Stop build/stm32f7xx_hal_tim.o +HAL_TIM_Base_Stop_DMA build/stm32f7xx_hal_tim.o +HAL_TIM_Base_Stop_IT build/stm32f7xx_hal_tim.o + build/main.o +HAL_TIM_ConfigClockSource build/stm32f7xx_hal_tim.o +HAL_TIM_ConfigOCrefClear build/stm32f7xx_hal_tim.o +HAL_TIM_ConfigTI1Input build/stm32f7xx_hal_tim.o +HAL_TIM_DMABurstState build/stm32f7xx_hal_tim.o +HAL_TIM_DMABurst_MultiReadStart build/stm32f7xx_hal_tim.o +HAL_TIM_DMABurst_MultiWriteStart build/stm32f7xx_hal_tim.o +HAL_TIM_DMABurst_ReadStart build/stm32f7xx_hal_tim.o +HAL_TIM_DMABurst_ReadStop build/stm32f7xx_hal_tim.o +HAL_TIM_DMABurst_WriteStart build/stm32f7xx_hal_tim.o +HAL_TIM_DMABurst_WriteStop build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_DeInit build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_GetState build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_Init build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_MspDeInit build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_MspInit build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_Start build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_Start_DMA build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_Start_IT build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_Stop build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_Stop_DMA build/stm32f7xx_hal_tim.o +HAL_TIM_Encoder_Stop_IT build/stm32f7xx_hal_tim.o +HAL_TIM_ErrorCallback build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_tim_ex.o +HAL_TIM_GenerateEvent build/stm32f7xx_hal_tim.o +HAL_TIM_GetActiveChannel build/stm32f7xx_hal_tim.o +HAL_TIM_GetChannelState build/stm32f7xx_hal_tim.o +HAL_TIM_IC_CaptureCallback build/stm32f7xx_hal_tim.o +HAL_TIM_IC_CaptureHalfCpltCallback build/stm32f7xx_hal_tim.o +HAL_TIM_IC_ConfigChannel build/stm32f7xx_hal_tim.o +HAL_TIM_IC_DeInit build/stm32f7xx_hal_tim.o +HAL_TIM_IC_GetState build/stm32f7xx_hal_tim.o +HAL_TIM_IC_Init build/stm32f7xx_hal_tim.o +HAL_TIM_IC_MspDeInit build/stm32f7xx_hal_tim.o +HAL_TIM_IC_MspInit build/stm32f7xx_hal_tim.o +HAL_TIM_IC_Start build/stm32f7xx_hal_tim.o +HAL_TIM_IC_Start_DMA build/stm32f7xx_hal_tim.o +HAL_TIM_IC_Start_IT build/stm32f7xx_hal_tim.o +HAL_TIM_IC_Stop build/stm32f7xx_hal_tim.o +HAL_TIM_IC_Stop_DMA build/stm32f7xx_hal_tim.o +HAL_TIM_IC_Stop_IT build/stm32f7xx_hal_tim.o +HAL_TIM_IRQHandler build/stm32f7xx_hal_tim.o + build/stm32f7xx_it.o +HAL_TIM_OC_ConfigChannel build/stm32f7xx_hal_tim.o +HAL_TIM_OC_DeInit build/stm32f7xx_hal_tim.o +HAL_TIM_OC_DelayElapsedCallback build/stm32f7xx_hal_tim.o +HAL_TIM_OC_GetState build/stm32f7xx_hal_tim.o +HAL_TIM_OC_Init build/stm32f7xx_hal_tim.o +HAL_TIM_OC_MspDeInit build/stm32f7xx_hal_tim.o +HAL_TIM_OC_MspInit build/stm32f7xx_hal_tim.o +HAL_TIM_OC_Start build/stm32f7xx_hal_tim.o +HAL_TIM_OC_Start_DMA build/stm32f7xx_hal_tim.o +HAL_TIM_OC_Start_IT build/stm32f7xx_hal_tim.o +HAL_TIM_OC_Stop build/stm32f7xx_hal_tim.o +HAL_TIM_OC_Stop_DMA build/stm32f7xx_hal_tim.o +HAL_TIM_OC_Stop_IT build/stm32f7xx_hal_tim.o +HAL_TIM_OnePulse_ConfigChannel build/stm32f7xx_hal_tim.o +HAL_TIM_OnePulse_DeInit build/stm32f7xx_hal_tim.o +HAL_TIM_OnePulse_GetState build/stm32f7xx_hal_tim.o +HAL_TIM_OnePulse_Init build/stm32f7xx_hal_tim.o +HAL_TIM_OnePulse_MspDeInit build/stm32f7xx_hal_tim.o +HAL_TIM_OnePulse_MspInit build/stm32f7xx_hal_tim.o +HAL_TIM_OnePulse_Start build/stm32f7xx_hal_tim.o +HAL_TIM_OnePulse_Start_IT build/stm32f7xx_hal_tim.o +HAL_TIM_OnePulse_Stop build/stm32f7xx_hal_tim.o +HAL_TIM_OnePulse_Stop_IT build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_ConfigChannel build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_DeInit build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_GetState build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_Init build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_MspDeInit build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_MspInit build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_PulseFinishedCallback build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_tim_ex.o +HAL_TIM_PWM_PulseFinishedHalfCpltCallback build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_Start build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_Start_DMA build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_Start_IT build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_Stop build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_Stop_DMA build/stm32f7xx_hal_tim.o +HAL_TIM_PWM_Stop_IT build/stm32f7xx_hal_tim.o +HAL_TIM_PeriodElapsedCallback build/stm32f7xx_hal_tim.o +HAL_TIM_PeriodElapsedHalfCpltCallback build/stm32f7xx_hal_tim.o +HAL_TIM_ReadCapturedValue build/stm32f7xx_hal_tim.o +HAL_TIM_SlaveConfigSynchro build/stm32f7xx_hal_tim.o +HAL_TIM_SlaveConfigSynchro_IT build/stm32f7xx_hal_tim.o +HAL_TIM_TriggerCallback build/stm32f7xx_hal_tim.o +HAL_TIM_TriggerHalfCpltCallback build/stm32f7xx_hal_tim.o +HardFault_Handler build/stm32f7xx_it.o +I2C1_ER_IRQHandler build/startup_stm32f767xx.o +I2C1_EV_IRQHandler build/startup_stm32f767xx.o +I2C2_ER_IRQHandler build/startup_stm32f767xx.o +I2C2_EV_IRQHandler build/startup_stm32f767xx.o +I2C3_ER_IRQHandler build/startup_stm32f767xx.o +I2C3_EV_IRQHandler build/startup_stm32f767xx.o +I2C4_ER_IRQHandler build/startup_stm32f767xx.o +I2C4_EV_IRQHandler build/startup_stm32f767xx.o +JPEG_IRQHandler build/startup_stm32f767xx.o +LD1_curr_setup build/main.o +LD1_def_setup build/main.o +LD1_param build/main.o +LD2_curr_setup build/main.o +LD2_def_setup build/main.o +LD2_param build/main.o +LL_DMA_DeInit build/stm32f7xx_ll_dma.o +LL_DMA_Init build/stm32f7xx_ll_dma.o +LL_DMA_StructInit build/stm32f7xx_ll_dma.o +LL_EXTI_DeInit build/stm32f7xx_ll_exti.o +LL_EXTI_Init build/stm32f7xx_ll_exti.o +LL_EXTI_StructInit build/stm32f7xx_ll_exti.o +LL_GPIO_DeInit build/stm32f7xx_ll_gpio.o +LL_GPIO_Init build/stm32f7xx_ll_gpio.o + build/main.o +LL_GPIO_StructInit build/stm32f7xx_ll_gpio.o +LL_I2S_ConfigPrescaler build/stm32f7xx_ll_spi.o +LL_I2S_DeInit build/stm32f7xx_ll_spi.o +LL_I2S_Init build/stm32f7xx_ll_spi.o +LL_I2S_StructInit build/stm32f7xx_ll_spi.o +LL_Init1msTick build/stm32f7xx_ll_utils.o +LL_PLL_ConfigSystemClock_HSE build/stm32f7xx_ll_utils.o +LL_PLL_ConfigSystemClock_HSI build/stm32f7xx_ll_utils.o +LL_RCC_DeInit build/stm32f7xx_ll_rcc.o +LL_RCC_GetCECClockFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetDFSDMAudioClockFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetDFSDMClockFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetI2CClockFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetI2SClockFreq build/stm32f7xx_ll_rcc.o + build/stm32f7xx_ll_spi.o +LL_RCC_GetLPTIMClockFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetLTDCClockFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetRNGClockFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetSAIClockFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetSDMMCClockFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetSPDIFRXClockFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetSystemClocksFreq build/stm32f7xx_ll_rcc.o +LL_RCC_GetUARTClockFreq build/stm32f7xx_ll_rcc.o + build/stm32f7xx_ll_usart.o +LL_RCC_GetUSARTClockFreq build/stm32f7xx_ll_rcc.o + build/stm32f7xx_ll_usart.o +LL_RCC_GetUSBClockFreq build/stm32f7xx_ll_rcc.o +LL_SPI_DeInit build/stm32f7xx_ll_spi.o +LL_SPI_Init build/stm32f7xx_ll_spi.o + build/main.o +LL_SPI_StructInit build/stm32f7xx_ll_spi.o +LL_SetFlashLatency build/stm32f7xx_ll_utils.o +LL_SetSystemCoreClock build/stm32f7xx_ll_utils.o +LL_TIM_BDTR_Init build/stm32f7xx_ll_tim.o +LL_TIM_BDTR_StructInit build/stm32f7xx_ll_tim.o +LL_TIM_DeInit build/stm32f7xx_ll_tim.o +LL_TIM_ENCODER_Init build/stm32f7xx_ll_tim.o +LL_TIM_ENCODER_StructInit build/stm32f7xx_ll_tim.o +LL_TIM_HALLSENSOR_Init build/stm32f7xx_ll_tim.o +LL_TIM_HALLSENSOR_StructInit build/stm32f7xx_ll_tim.o +LL_TIM_IC_Init build/stm32f7xx_ll_tim.o +LL_TIM_IC_StructInit build/stm32f7xx_ll_tim.o +LL_TIM_Init build/stm32f7xx_ll_tim.o + build/main.o +LL_TIM_OC_Init build/stm32f7xx_ll_tim.o +LL_TIM_OC_StructInit build/stm32f7xx_ll_tim.o +LL_TIM_StructInit build/stm32f7xx_ll_tim.o +LL_USART_ClockInit build/stm32f7xx_ll_usart.o +LL_USART_ClockStructInit build/stm32f7xx_ll_usart.o +LL_USART_DeInit build/stm32f7xx_ll_usart.o +LL_USART_Init build/stm32f7xx_ll_usart.o + build/main.o +LL_USART_StructInit build/stm32f7xx_ll_usart.o +LL_mDelay build/stm32f7xx_ll_utils.o +LPTIM1_IRQHandler build/startup_stm32f767xx.o +LTDC_ER_IRQHandler build/startup_stm32f767xx.o +LTDC_IRQHandler build/startup_stm32f767xx.o +Long_Data build/main.o +MDIOS_IRQHandler build/startup_stm32f767xx.o +MX_FATFS_Init build/fatfs.o + build/main.o +MemManage_Handler build/stm32f7xx_it.o +Mount_SD build/main.o +NMI_Handler build/stm32f7xx_it.o +OTG_FS_IRQHandler build/startup_stm32f767xx.o +OTG_FS_WKUP_IRQHandler build/startup_stm32f767xx.o +OTG_HS_EP1_IN_IRQHandler build/startup_stm32f767xx.o +OTG_HS_EP1_OUT_IRQHandler build/startup_stm32f767xx.o +OTG_HS_IRQHandler build/startup_stm32f767xx.o +OTG_HS_WKUP_IRQHandler build/startup_stm32f767xx.o +PVD_IRQHandler build/startup_stm32f767xx.o +PendSV_Handler build/stm32f7xx_it.o +QUADSPI_IRQHandler build/startup_stm32f767xx.o +RCC_GetHCLKClockFreq build/stm32f7xx_ll_rcc.o +RCC_GetPCLK1ClockFreq build/stm32f7xx_ll_rcc.o +RCC_GetPCLK2ClockFreq build/stm32f7xx_ll_rcc.o +RCC_GetSystemClockFreq build/stm32f7xx_ll_rcc.o +RCC_IRQHandler build/startup_stm32f767xx.o +RCC_PLLI2S_GetFreqDomain_I2S build/stm32f7xx_ll_rcc.o +RCC_PLLI2S_GetFreqDomain_SAI build/stm32f7xx_ll_rcc.o +RCC_PLLI2S_GetFreqDomain_SPDIFRX build/stm32f7xx_ll_rcc.o +RCC_PLLSAI_GetFreqDomain_48M build/stm32f7xx_ll_rcc.o +RCC_PLLSAI_GetFreqDomain_LTDC build/stm32f7xx_ll_rcc.o +RCC_PLLSAI_GetFreqDomain_SAI build/stm32f7xx_ll_rcc.o +RCC_PLL_GetFreqDomain_48M build/stm32f7xx_ll_rcc.o +RCC_PLL_GetFreqDomain_SYS build/stm32f7xx_ll_rcc.o +RNG_IRQHandler build/startup_stm32f767xx.o +RTC_Alarm_IRQHandler build/startup_stm32f767xx.o +RTC_WKUP_IRQHandler build/startup_stm32f767xx.o +Remove_File build/main.o +Reset_Handler build/startup_stm32f767xx.o +SAI1_IRQHandler build/startup_stm32f767xx.o +SAI2_IRQHandler build/startup_stm32f767xx.o +SDFatFS build/fatfs.o +SDFile build/fatfs.o +SDMMC1_IRQHandler build/startup_stm32f767xx.o +SDMMC2_IRQHandler build/startup_stm32f767xx.o +SDMMC_CmdAppCommand build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdAppOperCommand build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdBlockLength build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdBusWidth build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdErase build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdEraseEndAdd build/stm32f7xx_ll_sdmmc.o +SDMMC_CmdEraseStartAdd build/stm32f7xx_ll_sdmmc.o +SDMMC_CmdGoIdleState build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdOpCondition build/stm32f7xx_ll_sdmmc.o +SDMMC_CmdOperCond build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdReadMultiBlock build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdReadSingleBlock build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdSDEraseEndAdd build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdSDEraseStartAdd build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdSelDesel build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdSendCID build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdSendCSD build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdSendEXTCSD build/stm32f7xx_ll_sdmmc.o +SDMMC_CmdSendSCR build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdSendStatus build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdSetRelAdd build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdSetRelAddMmc build/stm32f7xx_ll_sdmmc.o +SDMMC_CmdStatusRegister build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdStopTransfer build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdSwitch build/stm32f7xx_ll_sdmmc.o +SDMMC_CmdWriteMultiBlock build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_CmdWriteSingleBlock build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_ConfigData build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_GetCmdResp1 build/stm32f7xx_ll_sdmmc.o +SDMMC_GetCmdResp2 build/stm32f7xx_ll_sdmmc.o +SDMMC_GetCmdResp3 build/stm32f7xx_ll_sdmmc.o +SDMMC_GetCmdResp6 build/stm32f7xx_ll_sdmmc.o +SDMMC_GetCmdResp7 build/stm32f7xx_ll_sdmmc.o +SDMMC_GetCommandResponse build/stm32f7xx_ll_sdmmc.o +SDMMC_GetDataCounter build/stm32f7xx_ll_sdmmc.o +SDMMC_GetFIFOCount build/stm32f7xx_ll_sdmmc.o +SDMMC_GetPowerState build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_GetResponse build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_Init build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_PowerState_OFF build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_PowerState_ON build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_ReadFIFO build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDMMC_SendCommand build/stm32f7xx_ll_sdmmc.o +SDMMC_SetSDMMCReadWaitMode build/stm32f7xx_ll_sdmmc.o +SDMMC_WriteFIFO build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_hal_sd.o +SDPath build/fatfs.o +SD_Driver build/sd_diskio.o + build/fatfs.o +SD_READ build/main.o +SD_REMOVE build/main.o +SD_SAVE build/main.o +SD_SEEK build/main.o +SD_SLIDE build/main.o +SD_initialize build/sd_diskio.o +SD_ioctl build/sd_diskio.o +SD_read build/sd_diskio.o +SD_status build/sd_diskio.o +SD_write build/sd_diskio.o +SPDIF_RX_IRQHandler build/startup_stm32f767xx.o +SPI1_IRQHandler build/startup_stm32f767xx.o +SPI2_IRQHandler build/startup_stm32f767xx.o +SPI3_IRQHandler build/startup_stm32f767xx.o +SPI4_IRQHandler build/startup_stm32f767xx.o +SPI5_IRQHandler build/startup_stm32f767xx.o +SPI6_IRQHandler build/startup_stm32f767xx.o +SVC_Handler build/stm32f7xx_it.o +Seek_Read_File build/main.o +State_Data build/main.o + build/stm32f7xx_it.o +SysTick_Handler build/stm32f7xx_it.o +SystemClock_Config build/main.o +SystemCoreClock build/system_stm32f7xx.o + build/stm32f7xx_ll_sdmmc.o + build/stm32f7xx_ll_utils.o + build/stm32f7xx_hal.o + build/stm32f7xx_hal_dma.o + build/stm32f7xx_hal_rcc.o + build/stm32f7xx_hal_adc_ex.o + build/stm32f7xx_hal_adc.o +SystemCoreClockUpdate build/system_stm32f7xx.o +SystemInit build/system_stm32f7xx.o + build/startup_stm32f767xx.o +TAMP_STAMP_IRQHandler build/startup_stm32f767xx.o +TIM10_coflag build/main.o + build/stm32f7xx_it.o +TIM10_period build/main.o +TIM1_BRK_TIM9_IRQHandler build/startup_stm32f767xx.o +TIM1_CC_IRQHandler build/startup_stm32f767xx.o +TIM1_TRG_COM_TIM11_IRQHandler build/startup_stm32f767xx.o +TIM1_UP_TIM10_IRQHandler build/stm32f7xx_it.o +TIM2_IRQHandler build/stm32f7xx_it.o +TIM3_IRQHandler build/startup_stm32f767xx.o +TIM4_IRQHandler build/startup_stm32f767xx.o +TIM5_IRQHandler build/stm32f7xx_it.o +TIM6_DAC_IRQHandler build/stm32f7xx_it.o +TIM7_IRQHandler build/stm32f7xx_it.o +TIM8_BRK_TIM12_IRQHandler build/startup_stm32f767xx.o +TIM8_CC_IRQHandler build/startup_stm32f767xx.o +TIM8_TRG_COM_TIM14_IRQHandler build/startup_stm32f767xx.o +TIM8_UP_TIM13_IRQHandler build/startup_stm32f767xx.o +TIMEx_DMACommutationCplt build/stm32f7xx_hal_tim_ex.o + build/stm32f7xx_hal_tim.o +TIMEx_DMACommutationHalfCplt build/stm32f7xx_hal_tim_ex.o + build/stm32f7xx_hal_tim.o +TIM_Base_SetConfig build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_tim_ex.o +TIM_CCxChannelCmd build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_tim_ex.o +TIM_DMACaptureCplt build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_tim_ex.o +TIM_DMACaptureHalfCplt build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_tim_ex.o +TIM_DMADelayPulseHalfCplt build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_tim_ex.o +TIM_DMAError build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_tim_ex.o +TIM_ETR_SetConfig build/stm32f7xx_hal_tim.o +TIM_OC2_SetConfig build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_tim_ex.o +TIM_TI1_SetConfig build/stm32f7xx_hal_tim.o + build/stm32f7xx_hal_tim_ex.o +TO10 build/main.o + build/stm32f7xx_it.o +TO10_counter build/main.o + build/stm32f7xx_it.o +TO6 build/main.o + build/stm32f7xx_it.o +TO6_before build/main.o +TO6_stop build/main.o +TO6_uart build/main.o + build/stm32f7xx_it.o +TO7 build/main.o + build/stm32f7xx_it.o +TO7_PID build/main.o +TO7_before build/main.o +UART4_IRQHandler build/startup_stm32f767xx.o +UART5_IRQHandler build/startup_stm32f767xx.o +UART7_IRQHandler build/startup_stm32f767xx.o +UART8_IRQHandler build/startup_stm32f767xx.o +UART_DATA build/main.o +UART_RxCpltCallback build/stm32f7xx_it.o +UART_header build/main.o + build/stm32f7xx_it.o +UART_rec_incr build/main.o + build/stm32f7xx_it.o +UART_transmission_request build/main.o + build/stm32f7xx_it.o +USART1_IRQHandler build/stm32f7xx_it.o +USART2_IRQHandler build/startup_stm32f767xx.o +USART3_IRQHandler build/startup_stm32f767xx.o +USART6_IRQHandler build/startup_stm32f767xx.o +USART_TX build/main.o +USART_TX_DMA build/main.o +Unmount_SD build/main.o +Update_File_byte build/main.o +UsageFault_Handler build/stm32f7xx_it.o +WWDG_IRQHandler build/startup_stm32f767xx.o +Write_File_byte build/main.o +_ITM_deregisterTMCloneTable /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o +_ITM_registerTMCloneTable /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o +_Min_Stack_Size build/sysmem.o +__TMC_END__ /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtend.o + /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o +__aeabi_idiv0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) +__aeabi_ldiv0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_dvmd_tls.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) +__aeabi_uldivmod /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) + build/stm32f7xx_hal_rcc.o +__atexit_dummy /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) +__bss_end__ /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +__bss_start__ /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +__call_exitprocs /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) +__deregister_frame_info /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o +__dso_handle /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o +__env build/syscalls.o +__errno /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) + build/syscalls.o + build/sysmem.o +__fini_array_end /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) +__fini_array_start /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) +__init_array_end /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) +__init_array_start /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) +__io_getchar build/syscalls.o +__io_putchar build/syscalls.o +__libc_fini_array /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +__libc_init_array /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) + build/startup_stm32f767xx.o + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +__on_exit_args /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) +__preinit_array_end /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) +__preinit_array_start /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) +__register_exitproc /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) +__register_frame_info /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o +__sf_fake_stderr /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) +__sf_fake_stdin /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) +__sf_fake_stdout /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) +__stack /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +__udivmoddi4 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_udivmoddi4.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/libgcc.a(_aeabi_uldivmod.o) +_close build/syscalls.o +_ebss build/startup_stm32f767xx.o +_edata build/startup_stm32f767xx.o +_end build/sysmem.o +_estack build/startup_stm32f767xx.o + build/sysmem.o +_execve build/syscalls.o +_exit build/syscalls.o + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) +_fini /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-fini.o) +_fork build/syscalls.o +_fstat build/syscalls.o +_getpid build/syscalls.o +_global_atexit /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__call_atexit.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) +_global_impure_ptr /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) +_impure_ptr /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-impure.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-errno.o) +_init /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-init.o) +_isatty build/syscalls.o +_kill build/syscalls.o +_link build/syscalls.o +_lseek build/syscalls.o +_mainCRTStartup /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +_open build/syscalls.o +_read build/syscalls.o +_sbrk build/sysmem.o +_sbss build/startup_stm32f767xx.o +_sdata build/startup_stm32f767xx.o +_sidata build/startup_stm32f767xx.o +_stack_init /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +_start /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +_stat build/syscalls.o +_times build/syscalls.o +_unlink build/syscalls.o +_wait build/syscalls.o +_write build/syscalls.o +atexit /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-atexit.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +disk build/ff_gen_drv.o + build/diskio.o +disk_initialize build/diskio.o + build/ff.o +disk_ioctl build/diskio.o + build/ff.o +disk_read build/diskio.o + build/ff.o +disk_status build/diskio.o + build/ff.o +disk_write build/diskio.o + build/ff.o +environ build/syscalls.o +exit /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-exit.o) + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +f_close build/ff.o +f_closedir build/ff.o +f_getfree build/ff.o +f_gets build/ff.o +f_lseek build/ff.o +f_mkdir build/ff.o +f_mkfs build/ff.o +f_mount build/ff.o +f_open build/ff.o +f_opendir build/ff.o +f_printf build/ff.o +f_putc build/ff.o +f_puts build/ff.o +f_read build/ff.o +f_readdir build/ff.o +f_rename build/ff.o +f_stat build/ff.o +f_sync build/ff.o +f_truncate build/ff.o +f_unlink build/ff.o +f_write build/ff.o +fgoto build/main.o +flg_tmt build/main.o + build/stm32f7xx_it.o +fresult build/main.o +g_pfnVectors build/startup_stm32f767xx.o +get_fattime build/fatfs.o + build/ff.o +hadc1 build/main.o + build/stm32f7xx_it.o +hadc3 build/main.o + build/stm32f7xx_it.o +hardware_init_hook /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +hsd1 build/main.o + build/bsp_driver_sd.o +htim10 build/main.o + build/stm32f7xx_it.o +initialise_monitor_handles build/syscalls.o +main build/main.o + build/startup_stm32f767xx.o + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +malloc /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-__atexit.o) +memset /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a(lib_a-memset.o) + build/stm32f7xx_hal_msp.o + build/main.o + /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +pFlash build/stm32f7xx_hal_flash.o + build/stm32f7xx_hal_flash_ex.o +retSD build/fatfs.o +sizeoffile build/main.o +software_init_hook /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o +task build/main.o +temp16 build/main.o +temp32 build/main.o +test build/main.o +u_rx_flg build/main.o +u_tx_flg build/main.o + build/stm32f7xx_it.o +uart_buf build/main.o + build/stm32f7xx_it.o +uwTick build/stm32f7xx_hal.o +uwTickFreq build/stm32f7xx_hal.o +uwTickPrio build/stm32f7xx_hal.o + build/stm32f7xx_hal_rcc.o diff --git a/build/bsp_driver_sd.d b/build/bsp_driver_sd.d new file mode 100644 index 0000000..dc0eede --- /dev/null +++ b/build/bsp_driver_sd.d @@ -0,0 +1,66 @@ +build/bsp_driver_sd.o: Src/bsp_driver_sd.c Inc/bsp_driver_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Inc/fatfs_platform.h +Inc/bsp_driver_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Inc/fatfs_platform.h: diff --git a/build/bsp_driver_sd.lst b/build/bsp_driver_sd.lst new file mode 100644 index 0000000..6c28aed --- /dev/null +++ b/build/bsp_driver_sd.lst @@ -0,0 +1,1087 @@ +ARM GAS /tmp/cckWiXI8.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "bsp_driver_sd.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.BSP_SD_ITConfig,"ax",%progbits + 17 .align 1 + 18 .weak BSP_SD_ITConfig + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 BSP_SD_ITConfig: + 26 .LFB142: + 27 .file 1 "Src/bsp_driver_sd.c" + 1:Src/bsp_driver_sd.c **** /* USER CODE BEGIN Header */ + 2:Src/bsp_driver_sd.c **** /** + 3:Src/bsp_driver_sd.c **** ****************************************************************************** + 4:Src/bsp_driver_sd.c **** * @file bsp_driver_sd.c for F7 (based on stm32756g_eval_sd.c) + 5:Src/bsp_driver_sd.c **** * @brief This file includes a generic uSD card driver. + 6:Src/bsp_driver_sd.c **** * To be completed by the user according to the board used for the project. + 7:Src/bsp_driver_sd.c **** * @note Some functions generated as weak: they can be overridden by + 8:Src/bsp_driver_sd.c **** * - code in user files + 9:Src/bsp_driver_sd.c **** * - or BSP code from the FW pack files + 10:Src/bsp_driver_sd.c **** * if such files are added to the generated project (by the user). + 11:Src/bsp_driver_sd.c **** ****************************************************************************** + 12:Src/bsp_driver_sd.c **** * @attention + 13:Src/bsp_driver_sd.c **** * + 14:Src/bsp_driver_sd.c **** * Copyright (c) 2023 STMicroelectronics. + 15:Src/bsp_driver_sd.c **** * All rights reserved. + 16:Src/bsp_driver_sd.c **** * + 17:Src/bsp_driver_sd.c **** * This software is licensed under terms that can be found in the LICENSE file + 18:Src/bsp_driver_sd.c **** * in the root directory of this software component. + 19:Src/bsp_driver_sd.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 20:Src/bsp_driver_sd.c **** * + 21:Src/bsp_driver_sd.c **** ****************************************************************************** + 22:Src/bsp_driver_sd.c **** */ + 23:Src/bsp_driver_sd.c **** /* USER CODE END Header */ + 24:Src/bsp_driver_sd.c **** + 25:Src/bsp_driver_sd.c **** #ifdef OLD_API + 26:Src/bsp_driver_sd.c **** /* kept to avoid issue when migrating old projects. */ + 27:Src/bsp_driver_sd.c **** /* USER CODE BEGIN 0 */ + 28:Src/bsp_driver_sd.c **** + 29:Src/bsp_driver_sd.c **** /* USER CODE END 0 */ + 30:Src/bsp_driver_sd.c **** #else + 31:Src/bsp_driver_sd.c **** /* USER CODE BEGIN FirstSection */ + ARM GAS /tmp/cckWiXI8.s page 2 + + + 32:Src/bsp_driver_sd.c **** /* can be used to modify / undefine following code or add new definitions */ + 33:Src/bsp_driver_sd.c **** /* USER CODE END FirstSection */ + 34:Src/bsp_driver_sd.c **** /* Includes ------------------------------------------------------------------*/ + 35:Src/bsp_driver_sd.c **** #include "bsp_driver_sd.h" + 36:Src/bsp_driver_sd.c **** + 37:Src/bsp_driver_sd.c **** /* Extern variables ---------------------------------------------------------*/ + 38:Src/bsp_driver_sd.c **** + 39:Src/bsp_driver_sd.c **** extern SD_HandleTypeDef hsd1; + 40:Src/bsp_driver_sd.c **** + 41:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeInitSection */ + 42:Src/bsp_driver_sd.c **** /* can be used to modify / undefine following code or add code */ + 43:Src/bsp_driver_sd.c **** /* USER CODE END BeforeInitSection */ + 44:Src/bsp_driver_sd.c **** /** + 45:Src/bsp_driver_sd.c **** * @brief Initializes the SD card device. + 46:Src/bsp_driver_sd.c **** * @retval SD status + 47:Src/bsp_driver_sd.c **** */ + 48:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_Init(void) + 49:Src/bsp_driver_sd.c **** { + 50:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; + 51:Src/bsp_driver_sd.c **** /* Check if the SD card is plugged in the slot */ + 52:Src/bsp_driver_sd.c **** if (BSP_SD_IsDetected() != SD_PRESENT) + 53:Src/bsp_driver_sd.c **** { + 54:Src/bsp_driver_sd.c **** return MSD_ERROR_SD_NOT_PRESENT; + 55:Src/bsp_driver_sd.c **** } + 56:Src/bsp_driver_sd.c **** /* HAL SD initialization */ + 57:Src/bsp_driver_sd.c **** sd_state = HAL_SD_Init(&hsd1); + 58:Src/bsp_driver_sd.c **** /* Configure SD Bus width (4 bits mode selected) */ + 59:Src/bsp_driver_sd.c **** if (sd_state == MSD_OK) + 60:Src/bsp_driver_sd.c **** { + 61:Src/bsp_driver_sd.c **** /* Enable wide operation */ + 62:Src/bsp_driver_sd.c **** if (HAL_SD_ConfigWideBusOperation(&hsd1, SDMMC_BUS_WIDE_4B) != HAL_OK) + 63:Src/bsp_driver_sd.c **** { + 64:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; + 65:Src/bsp_driver_sd.c **** } + 66:Src/bsp_driver_sd.c **** } + 67:Src/bsp_driver_sd.c **** + 68:Src/bsp_driver_sd.c **** return sd_state; + 69:Src/bsp_driver_sd.c **** } + 70:Src/bsp_driver_sd.c **** /* USER CODE BEGIN AfterInitSection */ + 71:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ + 72:Src/bsp_driver_sd.c **** /* USER CODE END AfterInitSection */ + 73:Src/bsp_driver_sd.c **** + 74:Src/bsp_driver_sd.c **** /* USER CODE BEGIN InterruptMode */ + 75:Src/bsp_driver_sd.c **** /** + 76:Src/bsp_driver_sd.c **** * @brief Configures Interrupt mode for SD detection pin. + 77:Src/bsp_driver_sd.c **** * @retval Returns 0 + 78:Src/bsp_driver_sd.c **** */ + 79:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_ITConfig(void) + 80:Src/bsp_driver_sd.c **** { + 28 .loc 1 80 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 81:Src/bsp_driver_sd.c **** /* Code to be updated by the user or replaced by one from the FW pack (in a stmxxxx_sd.c file) */ + 82:Src/bsp_driver_sd.c **** + 83:Src/bsp_driver_sd.c **** return (uint8_t)0; + ARM GAS /tmp/cckWiXI8.s page 3 + + + 33 .loc 1 83 3 view .LVU1 + 84:Src/bsp_driver_sd.c **** } + 34 .loc 1 84 1 is_stmt 0 view .LVU2 + 35 0000 0020 movs r0, #0 + 36 0002 7047 bx lr + 37 .cfi_endproc + 38 .LFE142: + 40 .section .text.BSP_SD_ReadBlocks,"ax",%progbits + 41 .align 1 + 42 .weak BSP_SD_ReadBlocks + 43 .syntax unified + 44 .thumb + 45 .thumb_func + 46 .fpu fpv5-d16 + 48 BSP_SD_ReadBlocks: + 49 .LVL0: + 50 .LFB143: + 85:Src/bsp_driver_sd.c **** + 86:Src/bsp_driver_sd.c **** /* USER CODE END InterruptMode */ + 87:Src/bsp_driver_sd.c **** + 88:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeReadBlocksSection */ + 89:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ + 90:Src/bsp_driver_sd.c **** /* USER CODE END BeforeReadBlocksSection */ + 91:Src/bsp_driver_sd.c **** /** + 92:Src/bsp_driver_sd.c **** * @brief Reads block(s) from a specified address in an SD card, in polling mode. + 93:Src/bsp_driver_sd.c **** * @param pData: Pointer to the buffer that will contain the data to transmit + 94:Src/bsp_driver_sd.c **** * @param ReadAddr: Address from where data is to be read + 95:Src/bsp_driver_sd.c **** * @param NumOfBlocks: Number of SD blocks to read + 96:Src/bsp_driver_sd.c **** * @param Timeout: Timeout for read operation + 97:Src/bsp_driver_sd.c **** * @retval SD status + 98:Src/bsp_driver_sd.c **** */ + 99:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_ReadBlocks(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t + 100:Src/bsp_driver_sd.c **** { + 51 .loc 1 100 1 is_stmt 1 view -0 + 52 .cfi_startproc + 53 @ args = 0, pretend = 0, frame = 0 + 54 @ frame_needed = 0, uses_anonymous_args = 0 + 55 .loc 1 100 1 is_stmt 0 view .LVU4 + 56 0000 00B5 push {lr} + 57 .LCFI0: + 58 .cfi_def_cfa_offset 4 + 59 .cfi_offset 14, -4 + 60 0002 83B0 sub sp, sp, #12 + 61 .LCFI1: + 62 .cfi_def_cfa_offset 16 + 101:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; + 63 .loc 1 101 3 is_stmt 1 view .LVU5 + 64 .LVL1: + 102:Src/bsp_driver_sd.c **** + 103:Src/bsp_driver_sd.c **** if (HAL_SD_ReadBlocks(&hsd1, (uint8_t *)pData, ReadAddr, NumOfBlocks, Timeout) != HAL_OK) + 65 .loc 1 103 3 view .LVU6 + 66 .loc 1 103 7 is_stmt 0 view .LVU7 + 67 0004 0093 str r3, [sp] + 68 0006 1346 mov r3, r2 + 69 .LVL2: + 70 .loc 1 103 7 view .LVU8 + 71 0008 0A46 mov r2, r1 + ARM GAS /tmp/cckWiXI8.s page 4 + + + 72 .LVL3: + 73 .loc 1 103 7 view .LVU9 + 74 000a 0146 mov r1, r0 + 75 .LVL4: + 76 .loc 1 103 7 view .LVU10 + 77 000c 0348 ldr r0, .L6 + 78 .LVL5: + 79 .loc 1 103 7 view .LVU11 + 80 000e FFF7FEFF bl HAL_SD_ReadBlocks + 81 .LVL6: + 82 .loc 1 103 6 view .LVU12 + 83 0012 00B1 cbz r0, .L3 + 104:Src/bsp_driver_sd.c **** { + 105:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; + 84 .loc 1 105 14 view .LVU13 + 85 0014 0120 movs r0, #1 + 86 .L3: + 87 .LVL7: + 106:Src/bsp_driver_sd.c **** } + 107:Src/bsp_driver_sd.c **** + 108:Src/bsp_driver_sd.c **** return sd_state; + 88 .loc 1 108 3 is_stmt 1 view .LVU14 + 109:Src/bsp_driver_sd.c **** } + 89 .loc 1 109 1 is_stmt 0 view .LVU15 + 90 0016 03B0 add sp, sp, #12 + 91 .LCFI2: + 92 .cfi_def_cfa_offset 4 + 93 @ sp needed + 94 0018 5DF804FB ldr pc, [sp], #4 + 95 .L7: + 96 .align 2 + 97 .L6: + 98 001c 00000000 .word hsd1 + 99 .cfi_endproc + 100 .LFE143: + 102 .section .text.BSP_SD_WriteBlocks,"ax",%progbits + 103 .align 1 + 104 .weak BSP_SD_WriteBlocks + 105 .syntax unified + 106 .thumb + 107 .thumb_func + 108 .fpu fpv5-d16 + 110 BSP_SD_WriteBlocks: + 111 .LVL8: + 112 .LFB144: + 110:Src/bsp_driver_sd.c **** + 111:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeWriteBlocksSection */ + 112:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ + 113:Src/bsp_driver_sd.c **** /* USER CODE END BeforeWriteBlocksSection */ + 114:Src/bsp_driver_sd.c **** /** + 115:Src/bsp_driver_sd.c **** * @brief Writes block(s) to a specified address in an SD card, in polling mode. + 116:Src/bsp_driver_sd.c **** * @param pData: Pointer to the buffer that will contain the data to transmit + 117:Src/bsp_driver_sd.c **** * @param WriteAddr: Address from where data is to be written + 118:Src/bsp_driver_sd.c **** * @param NumOfBlocks: Number of SD blocks to write + 119:Src/bsp_driver_sd.c **** * @param Timeout: Timeout for write operation + 120:Src/bsp_driver_sd.c **** * @retval SD status + 121:Src/bsp_driver_sd.c **** */ + ARM GAS /tmp/cckWiXI8.s page 5 + + + 122:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_WriteBlocks(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32 + 123:Src/bsp_driver_sd.c **** { + 113 .loc 1 123 1 is_stmt 1 view -0 + 114 .cfi_startproc + 115 @ args = 0, pretend = 0, frame = 0 + 116 @ frame_needed = 0, uses_anonymous_args = 0 + 117 .loc 1 123 1 is_stmt 0 view .LVU17 + 118 0000 00B5 push {lr} + 119 .LCFI3: + 120 .cfi_def_cfa_offset 4 + 121 .cfi_offset 14, -4 + 122 0002 83B0 sub sp, sp, #12 + 123 .LCFI4: + 124 .cfi_def_cfa_offset 16 + 124:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; + 125 .loc 1 124 3 is_stmt 1 view .LVU18 + 126 .LVL9: + 125:Src/bsp_driver_sd.c **** + 126:Src/bsp_driver_sd.c **** if (HAL_SD_WriteBlocks(&hsd1, (uint8_t *)pData, WriteAddr, NumOfBlocks, Timeout) != HAL_OK) + 127 .loc 1 126 3 view .LVU19 + 128 .loc 1 126 7 is_stmt 0 view .LVU20 + 129 0004 0093 str r3, [sp] + 130 0006 1346 mov r3, r2 + 131 .LVL10: + 132 .loc 1 126 7 view .LVU21 + 133 0008 0A46 mov r2, r1 + 134 .LVL11: + 135 .loc 1 126 7 view .LVU22 + 136 000a 0146 mov r1, r0 + 137 .LVL12: + 138 .loc 1 126 7 view .LVU23 + 139 000c 0348 ldr r0, .L12 + 140 .LVL13: + 141 .loc 1 126 7 view .LVU24 + 142 000e FFF7FEFF bl HAL_SD_WriteBlocks + 143 .LVL14: + 144 .loc 1 126 6 view .LVU25 + 145 0012 00B1 cbz r0, .L9 + 127:Src/bsp_driver_sd.c **** { + 128:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; + 146 .loc 1 128 14 view .LVU26 + 147 0014 0120 movs r0, #1 + 148 .L9: + 149 .LVL15: + 129:Src/bsp_driver_sd.c **** } + 130:Src/bsp_driver_sd.c **** + 131:Src/bsp_driver_sd.c **** return sd_state; + 150 .loc 1 131 3 is_stmt 1 view .LVU27 + 132:Src/bsp_driver_sd.c **** } + 151 .loc 1 132 1 is_stmt 0 view .LVU28 + 152 0016 03B0 add sp, sp, #12 + 153 .LCFI5: + 154 .cfi_def_cfa_offset 4 + 155 @ sp needed + 156 0018 5DF804FB ldr pc, [sp], #4 + 157 .L13: + 158 .align 2 + ARM GAS /tmp/cckWiXI8.s page 6 + + + 159 .L12: + 160 001c 00000000 .word hsd1 + 161 .cfi_endproc + 162 .LFE144: + 164 .section .text.BSP_SD_ReadBlocks_DMA,"ax",%progbits + 165 .align 1 + 166 .weak BSP_SD_ReadBlocks_DMA + 167 .syntax unified + 168 .thumb + 169 .thumb_func + 170 .fpu fpv5-d16 + 172 BSP_SD_ReadBlocks_DMA: + 173 .LVL16: + 174 .LFB145: + 133:Src/bsp_driver_sd.c **** + 134:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeReadDMABlocksSection */ + 135:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ + 136:Src/bsp_driver_sd.c **** /* USER CODE END BeforeReadDMABlocksSection */ + 137:Src/bsp_driver_sd.c **** /** + 138:Src/bsp_driver_sd.c **** * @brief Reads block(s) from a specified address in an SD card, in DMA mode. + 139:Src/bsp_driver_sd.c **** * @param pData: Pointer to the buffer that will contain the data to transmit + 140:Src/bsp_driver_sd.c **** * @param ReadAddr: Address from where data is to be read + 141:Src/bsp_driver_sd.c **** * @param NumOfBlocks: Number of SD blocks to read + 142:Src/bsp_driver_sd.c **** * @retval SD status + 143:Src/bsp_driver_sd.c **** */ + 144:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks) + 145:Src/bsp_driver_sd.c **** { + 175 .loc 1 145 1 is_stmt 1 view -0 + 176 .cfi_startproc + 177 @ args = 0, pretend = 0, frame = 0 + 178 @ frame_needed = 0, uses_anonymous_args = 0 + 179 .loc 1 145 1 is_stmt 0 view .LVU30 + 180 0000 08B5 push {r3, lr} + 181 .LCFI6: + 182 .cfi_def_cfa_offset 8 + 183 .cfi_offset 3, -8 + 184 .cfi_offset 14, -4 + 185 0002 1346 mov r3, r2 + 146:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; + 186 .loc 1 146 3 is_stmt 1 view .LVU31 + 187 .LVL17: + 147:Src/bsp_driver_sd.c **** + 148:Src/bsp_driver_sd.c **** /* Read block(s) in DMA transfer mode */ + 149:Src/bsp_driver_sd.c **** if (HAL_SD_ReadBlocks_DMA(&hsd1, (uint8_t *)pData, ReadAddr, NumOfBlocks) != HAL_OK) + 188 .loc 1 149 3 view .LVU32 + 189 .loc 1 149 7 is_stmt 0 view .LVU33 + 190 0004 0A46 mov r2, r1 + 191 .LVL18: + 192 .loc 1 149 7 view .LVU34 + 193 0006 0146 mov r1, r0 + 194 .LVL19: + 195 .loc 1 149 7 view .LVU35 + 196 0008 0248 ldr r0, .L18 + 197 .LVL20: + 198 .loc 1 149 7 view .LVU36 + 199 000a FFF7FEFF bl HAL_SD_ReadBlocks_DMA + 200 .LVL21: + ARM GAS /tmp/cckWiXI8.s page 7 + + + 201 .loc 1 149 6 view .LVU37 + 202 000e 00B1 cbz r0, .L15 + 150:Src/bsp_driver_sd.c **** { + 151:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; + 203 .loc 1 151 14 view .LVU38 + 204 0010 0120 movs r0, #1 + 205 .L15: + 206 .LVL22: + 152:Src/bsp_driver_sd.c **** } + 153:Src/bsp_driver_sd.c **** + 154:Src/bsp_driver_sd.c **** return sd_state; + 207 .loc 1 154 3 is_stmt 1 view .LVU39 + 155:Src/bsp_driver_sd.c **** } + 208 .loc 1 155 1 is_stmt 0 view .LVU40 + 209 0012 08BD pop {r3, pc} + 210 .L19: + 211 .align 2 + 212 .L18: + 213 0014 00000000 .word hsd1 + 214 .cfi_endproc + 215 .LFE145: + 217 .section .text.BSP_SD_WriteBlocks_DMA,"ax",%progbits + 218 .align 1 + 219 .weak BSP_SD_WriteBlocks_DMA + 220 .syntax unified + 221 .thumb + 222 .thumb_func + 223 .fpu fpv5-d16 + 225 BSP_SD_WriteBlocks_DMA: + 226 .LVL23: + 227 .LFB146: + 156:Src/bsp_driver_sd.c **** + 157:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeWriteDMABlocksSection */ + 158:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ + 159:Src/bsp_driver_sd.c **** /* USER CODE END BeforeWriteDMABlocksSection */ + 160:Src/bsp_driver_sd.c **** /** + 161:Src/bsp_driver_sd.c **** * @brief Writes block(s) to a specified address in an SD card, in DMA mode. + 162:Src/bsp_driver_sd.c **** * @param pData: Pointer to the buffer that will contain the data to transmit + 163:Src/bsp_driver_sd.c **** * @param WriteAddr: Address from where data is to be written + 164:Src/bsp_driver_sd.c **** * @param NumOfBlocks: Number of SD blocks to write + 165:Src/bsp_driver_sd.c **** * @retval SD status + 166:Src/bsp_driver_sd.c **** */ + 167:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData, uint32_t WriteAddr, uint32_t NumOfBlocks) + 168:Src/bsp_driver_sd.c **** { + 228 .loc 1 168 1 is_stmt 1 view -0 + 229 .cfi_startproc + 230 @ args = 0, pretend = 0, frame = 0 + 231 @ frame_needed = 0, uses_anonymous_args = 0 + 232 .loc 1 168 1 is_stmt 0 view .LVU42 + 233 0000 08B5 push {r3, lr} + 234 .LCFI7: + 235 .cfi_def_cfa_offset 8 + 236 .cfi_offset 3, -8 + 237 .cfi_offset 14, -4 + 238 0002 1346 mov r3, r2 + 169:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; + 239 .loc 1 169 3 is_stmt 1 view .LVU43 + ARM GAS /tmp/cckWiXI8.s page 8 + + + 240 .LVL24: + 170:Src/bsp_driver_sd.c **** + 171:Src/bsp_driver_sd.c **** /* Write block(s) in DMA transfer mode */ + 172:Src/bsp_driver_sd.c **** if (HAL_SD_WriteBlocks_DMA(&hsd1, (uint8_t *)pData, WriteAddr, NumOfBlocks) != HAL_OK) + 241 .loc 1 172 3 view .LVU44 + 242 .loc 1 172 7 is_stmt 0 view .LVU45 + 243 0004 0A46 mov r2, r1 + 244 .LVL25: + 245 .loc 1 172 7 view .LVU46 + 246 0006 0146 mov r1, r0 + 247 .LVL26: + 248 .loc 1 172 7 view .LVU47 + 249 0008 0248 ldr r0, .L24 + 250 .LVL27: + 251 .loc 1 172 7 view .LVU48 + 252 000a FFF7FEFF bl HAL_SD_WriteBlocks_DMA + 253 .LVL28: + 254 .loc 1 172 6 view .LVU49 + 255 000e 00B1 cbz r0, .L21 + 173:Src/bsp_driver_sd.c **** { + 174:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; + 256 .loc 1 174 14 view .LVU50 + 257 0010 0120 movs r0, #1 + 258 .L21: + 259 .LVL29: + 175:Src/bsp_driver_sd.c **** } + 176:Src/bsp_driver_sd.c **** + 177:Src/bsp_driver_sd.c **** return sd_state; + 260 .loc 1 177 3 is_stmt 1 view .LVU51 + 178:Src/bsp_driver_sd.c **** } + 261 .loc 1 178 1 is_stmt 0 view .LVU52 + 262 0012 08BD pop {r3, pc} + 263 .L25: + 264 .align 2 + 265 .L24: + 266 0014 00000000 .word hsd1 + 267 .cfi_endproc + 268 .LFE146: + 270 .section .text.BSP_SD_Erase,"ax",%progbits + 271 .align 1 + 272 .weak BSP_SD_Erase + 273 .syntax unified + 274 .thumb + 275 .thumb_func + 276 .fpu fpv5-d16 + 278 BSP_SD_Erase: + 279 .LVL30: + 280 .LFB147: + 179:Src/bsp_driver_sd.c **** + 180:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeEraseSection */ + 181:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ + 182:Src/bsp_driver_sd.c **** /* USER CODE END BeforeEraseSection */ + 183:Src/bsp_driver_sd.c **** /** + 184:Src/bsp_driver_sd.c **** * @brief Erases the specified memory area of the given SD card. + 185:Src/bsp_driver_sd.c **** * @param StartAddr: Start byte address + 186:Src/bsp_driver_sd.c **** * @param EndAddr: End byte address + 187:Src/bsp_driver_sd.c **** * @retval SD status + ARM GAS /tmp/cckWiXI8.s page 9 + + + 188:Src/bsp_driver_sd.c **** */ + 189:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr) + 190:Src/bsp_driver_sd.c **** { + 281 .loc 1 190 1 is_stmt 1 view -0 + 282 .cfi_startproc + 283 @ args = 0, pretend = 0, frame = 0 + 284 @ frame_needed = 0, uses_anonymous_args = 0 + 285 .loc 1 190 1 is_stmt 0 view .LVU54 + 286 0000 08B5 push {r3, lr} + 287 .LCFI8: + 288 .cfi_def_cfa_offset 8 + 289 .cfi_offset 3, -8 + 290 .cfi_offset 14, -4 + 291 0002 0A46 mov r2, r1 + 191:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; + 292 .loc 1 191 3 is_stmt 1 view .LVU55 + 293 .LVL31: + 192:Src/bsp_driver_sd.c **** + 193:Src/bsp_driver_sd.c **** if (HAL_SD_Erase(&hsd1, StartAddr, EndAddr) != HAL_OK) + 294 .loc 1 193 3 view .LVU56 + 295 .loc 1 193 7 is_stmt 0 view .LVU57 + 296 0004 0146 mov r1, r0 + 297 .LVL32: + 298 .loc 1 193 7 view .LVU58 + 299 0006 0348 ldr r0, .L30 + 300 .LVL33: + 301 .loc 1 193 7 view .LVU59 + 302 0008 FFF7FEFF bl HAL_SD_Erase + 303 .LVL34: + 304 .loc 1 193 6 view .LVU60 + 305 000c 00B1 cbz r0, .L27 + 194:Src/bsp_driver_sd.c **** { + 195:Src/bsp_driver_sd.c **** sd_state = MSD_ERROR; + 306 .loc 1 195 14 view .LVU61 + 307 000e 0120 movs r0, #1 + 308 .L27: + 309 .LVL35: + 196:Src/bsp_driver_sd.c **** } + 197:Src/bsp_driver_sd.c **** + 198:Src/bsp_driver_sd.c **** return sd_state; + 310 .loc 1 198 3 is_stmt 1 view .LVU62 + 199:Src/bsp_driver_sd.c **** } + 311 .loc 1 199 1 is_stmt 0 view .LVU63 + 312 0010 08BD pop {r3, pc} + 313 .L31: + 314 0012 00BF .align 2 + 315 .L30: + 316 0014 00000000 .word hsd1 + 317 .cfi_endproc + 318 .LFE147: + 320 .section .text.BSP_SD_GetCardState,"ax",%progbits + 321 .align 1 + 322 .weak BSP_SD_GetCardState + 323 .syntax unified + 324 .thumb + 325 .thumb_func + 326 .fpu fpv5-d16 + ARM GAS /tmp/cckWiXI8.s page 10 + + + 328 BSP_SD_GetCardState: + 329 .LFB148: + 200:Src/bsp_driver_sd.c **** + 201:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeGetCardStateSection */ + 202:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ + 203:Src/bsp_driver_sd.c **** /* USER CODE END BeforeGetCardStateSection */ + 204:Src/bsp_driver_sd.c **** + 205:Src/bsp_driver_sd.c **** /** + 206:Src/bsp_driver_sd.c **** * @brief Gets the current SD card data status. + 207:Src/bsp_driver_sd.c **** * @param None + 208:Src/bsp_driver_sd.c **** * @retval Data transfer state. + 209:Src/bsp_driver_sd.c **** * This value can be one of the following values: + 210:Src/bsp_driver_sd.c **** * @arg SD_TRANSFER_OK: No data transfer is acting + 211:Src/bsp_driver_sd.c **** * @arg SD_TRANSFER_BUSY: Data transfer is acting + 212:Src/bsp_driver_sd.c **** */ + 213:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_GetCardState(void) + 214:Src/bsp_driver_sd.c **** { + 330 .loc 1 214 1 is_stmt 1 view -0 + 331 .cfi_startproc + 332 @ args = 0, pretend = 0, frame = 0 + 333 @ frame_needed = 0, uses_anonymous_args = 0 + 334 0000 08B5 push {r3, lr} + 335 .LCFI9: + 336 .cfi_def_cfa_offset 8 + 337 .cfi_offset 3, -8 + 338 .cfi_offset 14, -4 + 215:Src/bsp_driver_sd.c **** return ((HAL_SD_GetCardState(&hsd1) == HAL_SD_CARD_TRANSFER ) ? SD_TRANSFER_OK : SD_TRANSFER_BUSY + 339 .loc 1 215 3 view .LVU65 + 340 .loc 1 215 12 is_stmt 0 view .LVU66 + 341 0002 0348 ldr r0, .L34 + 342 0004 FFF7FEFF bl HAL_SD_GetCardState + 343 .LVL36: + 216:Src/bsp_driver_sd.c **** } + 344 .loc 1 216 1 view .LVU67 + 345 0008 0438 subs r0, r0, #4 + 346 000a 18BF it ne + 347 000c 0120 movne r0, #1 + 348 000e 08BD pop {r3, pc} + 349 .L35: + 350 .align 2 + 351 .L34: + 352 0010 00000000 .word hsd1 + 353 .cfi_endproc + 354 .LFE148: + 356 .section .text.BSP_SD_GetCardInfo,"ax",%progbits + 357 .align 1 + 358 .weak BSP_SD_GetCardInfo + 359 .syntax unified + 360 .thumb + 361 .thumb_func + 362 .fpu fpv5-d16 + 364 BSP_SD_GetCardInfo: + 365 .LVL37: + 366 .LFB149: + 217:Src/bsp_driver_sd.c **** + 218:Src/bsp_driver_sd.c **** /** + 219:Src/bsp_driver_sd.c **** * @brief Get SD information about specific SD card. + ARM GAS /tmp/cckWiXI8.s page 11 + + + 220:Src/bsp_driver_sd.c **** * @param CardInfo: Pointer to HAL_SD_CardInfoTypedef structure + 221:Src/bsp_driver_sd.c **** * @retval None + 222:Src/bsp_driver_sd.c **** */ + 223:Src/bsp_driver_sd.c **** __weak void BSP_SD_GetCardInfo(HAL_SD_CardInfoTypeDef *CardInfo) + 224:Src/bsp_driver_sd.c **** { + 367 .loc 1 224 1 is_stmt 1 view -0 + 368 .cfi_startproc + 369 @ args = 0, pretend = 0, frame = 0 + 370 @ frame_needed = 0, uses_anonymous_args = 0 + 371 .loc 1 224 1 is_stmt 0 view .LVU69 + 372 0000 08B5 push {r3, lr} + 373 .LCFI10: + 374 .cfi_def_cfa_offset 8 + 375 .cfi_offset 3, -8 + 376 .cfi_offset 14, -4 + 377 0002 0146 mov r1, r0 + 225:Src/bsp_driver_sd.c **** /* Get SD card Information */ + 226:Src/bsp_driver_sd.c **** HAL_SD_GetCardInfo(&hsd1, CardInfo); + 378 .loc 1 226 3 is_stmt 1 view .LVU70 + 379 0004 0148 ldr r0, .L38 + 380 .LVL38: + 381 .loc 1 226 3 is_stmt 0 view .LVU71 + 382 0006 FFF7FEFF bl HAL_SD_GetCardInfo + 383 .LVL39: + 227:Src/bsp_driver_sd.c **** } + 384 .loc 1 227 1 view .LVU72 + 385 000a 08BD pop {r3, pc} + 386 .L39: + 387 .align 2 + 388 .L38: + 389 000c 00000000 .word hsd1 + 390 .cfi_endproc + 391 .LFE149: + 393 .section .text.BSP_SD_AbortCallback,"ax",%progbits + 394 .align 1 + 395 .weak BSP_SD_AbortCallback + 396 .syntax unified + 397 .thumb + 398 .thumb_func + 399 .fpu fpv5-d16 + 401 BSP_SD_AbortCallback: + 402 .LFB153: + 228:Src/bsp_driver_sd.c **** + 229:Src/bsp_driver_sd.c **** /* USER CODE BEGIN BeforeCallBacksSection */ + 230:Src/bsp_driver_sd.c **** /* can be used to modify previous code / undefine following code / add code */ + 231:Src/bsp_driver_sd.c **** /* USER CODE END BeforeCallBacksSection */ + 232:Src/bsp_driver_sd.c **** /** + 233:Src/bsp_driver_sd.c **** * @brief SD Abort callbacks + 234:Src/bsp_driver_sd.c **** * @param hsd: SD handle + 235:Src/bsp_driver_sd.c **** * @retval None + 236:Src/bsp_driver_sd.c **** */ + 237:Src/bsp_driver_sd.c **** void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd) + 238:Src/bsp_driver_sd.c **** { + 239:Src/bsp_driver_sd.c **** BSP_SD_AbortCallback(); + 240:Src/bsp_driver_sd.c **** } + 241:Src/bsp_driver_sd.c **** + 242:Src/bsp_driver_sd.c **** /** + ARM GAS /tmp/cckWiXI8.s page 12 + + + 243:Src/bsp_driver_sd.c **** * @brief Tx Transfer completed callback + 244:Src/bsp_driver_sd.c **** * @param hsd: SD handle + 245:Src/bsp_driver_sd.c **** * @retval None + 246:Src/bsp_driver_sd.c **** */ + 247:Src/bsp_driver_sd.c **** void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd) + 248:Src/bsp_driver_sd.c **** { + 249:Src/bsp_driver_sd.c **** BSP_SD_WriteCpltCallback(); + 250:Src/bsp_driver_sd.c **** } + 251:Src/bsp_driver_sd.c **** + 252:Src/bsp_driver_sd.c **** /** + 253:Src/bsp_driver_sd.c **** * @brief Rx Transfer completed callback + 254:Src/bsp_driver_sd.c **** * @param hsd: SD handle + 255:Src/bsp_driver_sd.c **** * @retval None + 256:Src/bsp_driver_sd.c **** */ + 257:Src/bsp_driver_sd.c **** void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd) + 258:Src/bsp_driver_sd.c **** { + 259:Src/bsp_driver_sd.c **** BSP_SD_ReadCpltCallback(); + 260:Src/bsp_driver_sd.c **** } + 261:Src/bsp_driver_sd.c **** + 262:Src/bsp_driver_sd.c **** /* USER CODE BEGIN CallBacksSection_C */ + 263:Src/bsp_driver_sd.c **** /** + 264:Src/bsp_driver_sd.c **** * @brief BSP SD Abort callback + 265:Src/bsp_driver_sd.c **** * @retval None + 266:Src/bsp_driver_sd.c **** * @note empty (up to the user to fill it in or to remove it if useless) + 267:Src/bsp_driver_sd.c **** */ + 268:Src/bsp_driver_sd.c **** __weak void BSP_SD_AbortCallback(void) + 269:Src/bsp_driver_sd.c **** { + 403 .loc 1 269 1 is_stmt 1 view -0 + 404 .cfi_startproc + 405 @ args = 0, pretend = 0, frame = 0 + 406 @ frame_needed = 0, uses_anonymous_args = 0 + 407 @ link register save eliminated. + 270:Src/bsp_driver_sd.c **** + 271:Src/bsp_driver_sd.c **** } + 408 .loc 1 271 1 view .LVU74 + 409 0000 7047 bx lr + 410 .cfi_endproc + 411 .LFE153: + 413 .section .text.HAL_SD_AbortCallback,"ax",%progbits + 414 .align 1 + 415 .global HAL_SD_AbortCallback + 416 .syntax unified + 417 .thumb + 418 .thumb_func + 419 .fpu fpv5-d16 + 421 HAL_SD_AbortCallback: + 422 .LVL40: + 423 .LFB150: + 238:Src/bsp_driver_sd.c **** BSP_SD_AbortCallback(); + 424 .loc 1 238 1 view -0 + 425 .cfi_startproc + 426 @ args = 0, pretend = 0, frame = 0 + 427 @ frame_needed = 0, uses_anonymous_args = 0 + 238:Src/bsp_driver_sd.c **** BSP_SD_AbortCallback(); + 428 .loc 1 238 1 is_stmt 0 view .LVU76 + 429 0000 08B5 push {r3, lr} + 430 .LCFI11: + ARM GAS /tmp/cckWiXI8.s page 13 + + + 431 .cfi_def_cfa_offset 8 + 432 .cfi_offset 3, -8 + 433 .cfi_offset 14, -4 + 239:Src/bsp_driver_sd.c **** } + 434 .loc 1 239 3 is_stmt 1 view .LVU77 + 435 0002 FFF7FEFF bl BSP_SD_AbortCallback + 436 .LVL41: + 240:Src/bsp_driver_sd.c **** + 437 .loc 1 240 1 is_stmt 0 view .LVU78 + 438 0006 08BD pop {r3, pc} + 439 .cfi_endproc + 440 .LFE150: + 442 .section .text.BSP_SD_WriteCpltCallback,"ax",%progbits + 443 .align 1 + 444 .weak BSP_SD_WriteCpltCallback + 445 .syntax unified + 446 .thumb + 447 .thumb_func + 448 .fpu fpv5-d16 + 450 BSP_SD_WriteCpltCallback: + 451 .LFB154: + 272:Src/bsp_driver_sd.c **** + 273:Src/bsp_driver_sd.c **** /** + 274:Src/bsp_driver_sd.c **** * @brief BSP Tx Transfer completed callback + 275:Src/bsp_driver_sd.c **** * @retval None + 276:Src/bsp_driver_sd.c **** * @note empty (up to the user to fill it in or to remove it if useless) + 277:Src/bsp_driver_sd.c **** */ + 278:Src/bsp_driver_sd.c **** __weak void BSP_SD_WriteCpltCallback(void) + 279:Src/bsp_driver_sd.c **** { + 452 .loc 1 279 1 is_stmt 1 view -0 + 453 .cfi_startproc + 454 @ args = 0, pretend = 0, frame = 0 + 455 @ frame_needed = 0, uses_anonymous_args = 0 + 456 @ link register save eliminated. + 280:Src/bsp_driver_sd.c **** + 281:Src/bsp_driver_sd.c **** } + 457 .loc 1 281 1 view .LVU80 + 458 0000 7047 bx lr + 459 .cfi_endproc + 460 .LFE154: + 462 .section .text.HAL_SD_TxCpltCallback,"ax",%progbits + 463 .align 1 + 464 .global HAL_SD_TxCpltCallback + 465 .syntax unified + 466 .thumb + 467 .thumb_func + 468 .fpu fpv5-d16 + 470 HAL_SD_TxCpltCallback: + 471 .LVL42: + 472 .LFB151: + 248:Src/bsp_driver_sd.c **** BSP_SD_WriteCpltCallback(); + 473 .loc 1 248 1 view -0 + 474 .cfi_startproc + 475 @ args = 0, pretend = 0, frame = 0 + 476 @ frame_needed = 0, uses_anonymous_args = 0 + 248:Src/bsp_driver_sd.c **** BSP_SD_WriteCpltCallback(); + 477 .loc 1 248 1 is_stmt 0 view .LVU82 + ARM GAS /tmp/cckWiXI8.s page 14 + + + 478 0000 08B5 push {r3, lr} + 479 .LCFI12: + 480 .cfi_def_cfa_offset 8 + 481 .cfi_offset 3, -8 + 482 .cfi_offset 14, -4 + 249:Src/bsp_driver_sd.c **** } + 483 .loc 1 249 3 is_stmt 1 view .LVU83 + 484 0002 FFF7FEFF bl BSP_SD_WriteCpltCallback + 485 .LVL43: + 250:Src/bsp_driver_sd.c **** + 486 .loc 1 250 1 is_stmt 0 view .LVU84 + 487 0006 08BD pop {r3, pc} + 488 .cfi_endproc + 489 .LFE151: + 491 .section .text.BSP_SD_ReadCpltCallback,"ax",%progbits + 492 .align 1 + 493 .weak BSP_SD_ReadCpltCallback + 494 .syntax unified + 495 .thumb + 496 .thumb_func + 497 .fpu fpv5-d16 + 499 BSP_SD_ReadCpltCallback: + 500 .LFB155: + 282:Src/bsp_driver_sd.c **** + 283:Src/bsp_driver_sd.c **** /** + 284:Src/bsp_driver_sd.c **** * @brief BSP Rx Transfer completed callback + 285:Src/bsp_driver_sd.c **** * @retval None + 286:Src/bsp_driver_sd.c **** * @note empty (up to the user to fill it in or to remove it if useless) + 287:Src/bsp_driver_sd.c **** */ + 288:Src/bsp_driver_sd.c **** __weak void BSP_SD_ReadCpltCallback(void) + 289:Src/bsp_driver_sd.c **** { + 501 .loc 1 289 1 is_stmt 1 view -0 + 502 .cfi_startproc + 503 @ args = 0, pretend = 0, frame = 0 + 504 @ frame_needed = 0, uses_anonymous_args = 0 + 505 @ link register save eliminated. + 290:Src/bsp_driver_sd.c **** + 291:Src/bsp_driver_sd.c **** } + 506 .loc 1 291 1 view .LVU86 + 507 0000 7047 bx lr + 508 .cfi_endproc + 509 .LFE155: + 511 .section .text.HAL_SD_RxCpltCallback,"ax",%progbits + 512 .align 1 + 513 .global HAL_SD_RxCpltCallback + 514 .syntax unified + 515 .thumb + 516 .thumb_func + 517 .fpu fpv5-d16 + 519 HAL_SD_RxCpltCallback: + 520 .LVL44: + 521 .LFB152: + 258:Src/bsp_driver_sd.c **** BSP_SD_ReadCpltCallback(); + 522 .loc 1 258 1 view -0 + 523 .cfi_startproc + 524 @ args = 0, pretend = 0, frame = 0 + 525 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/cckWiXI8.s page 15 + + + 258:Src/bsp_driver_sd.c **** BSP_SD_ReadCpltCallback(); + 526 .loc 1 258 1 is_stmt 0 view .LVU88 + 527 0000 08B5 push {r3, lr} + 528 .LCFI13: + 529 .cfi_def_cfa_offset 8 + 530 .cfi_offset 3, -8 + 531 .cfi_offset 14, -4 + 259:Src/bsp_driver_sd.c **** } + 532 .loc 1 259 3 is_stmt 1 view .LVU89 + 533 0002 FFF7FEFF bl BSP_SD_ReadCpltCallback + 534 .LVL45: + 260:Src/bsp_driver_sd.c **** + 535 .loc 1 260 1 is_stmt 0 view .LVU90 + 536 0006 08BD pop {r3, pc} + 537 .cfi_endproc + 538 .LFE152: + 540 .section .text.BSP_SD_IsDetected,"ax",%progbits + 541 .align 1 + 542 .weak BSP_SD_IsDetected + 543 .syntax unified + 544 .thumb + 545 .thumb_func + 546 .fpu fpv5-d16 + 548 BSP_SD_IsDetected: + 549 .LFB156: + 292:Src/bsp_driver_sd.c **** /* USER CODE END CallBacksSection_C */ + 293:Src/bsp_driver_sd.c **** #endif + 294:Src/bsp_driver_sd.c **** + 295:Src/bsp_driver_sd.c **** /** + 296:Src/bsp_driver_sd.c **** * @brief Detects if SD card is correctly plugged in the memory slot or not. + 297:Src/bsp_driver_sd.c **** * @param None + 298:Src/bsp_driver_sd.c **** * @retval Returns if SD is detected or not + 299:Src/bsp_driver_sd.c **** */ + 300:Src/bsp_driver_sd.c **** __weak uint8_t BSP_SD_IsDetected(void) + 301:Src/bsp_driver_sd.c **** { + 550 .loc 1 301 1 is_stmt 1 view -0 + 551 .cfi_startproc + 552 @ args = 0, pretend = 0, frame = 8 + 553 @ frame_needed = 0, uses_anonymous_args = 0 + 554 0000 00B5 push {lr} + 555 .LCFI14: + 556 .cfi_def_cfa_offset 4 + 557 .cfi_offset 14, -4 + 558 0002 83B0 sub sp, sp, #12 + 559 .LCFI15: + 560 .cfi_def_cfa_offset 16 + 302:Src/bsp_driver_sd.c **** __IO uint8_t status = SD_PRESENT; + 561 .loc 1 302 3 view .LVU92 + 562 .loc 1 302 16 is_stmt 0 view .LVU93 + 563 0004 0123 movs r3, #1 + 564 0006 8DF80730 strb r3, [sp, #7] + 303:Src/bsp_driver_sd.c **** + 304:Src/bsp_driver_sd.c **** if (BSP_PlatformIsDetected() == 0x0) + 565 .loc 1 304 3 is_stmt 1 view .LVU94 + 566 .loc 1 304 7 is_stmt 0 view .LVU95 + 567 000a FFF7FEFF bl BSP_PlatformIsDetected + 568 .LVL46: + ARM GAS /tmp/cckWiXI8.s page 16 + + + 569 .loc 1 304 6 view .LVU96 + 570 000e 10B9 cbnz r0, .L50 + 305:Src/bsp_driver_sd.c **** { + 306:Src/bsp_driver_sd.c **** status = SD_NOT_PRESENT; + 571 .loc 1 306 5 is_stmt 1 view .LVU97 + 572 .loc 1 306 12 is_stmt 0 view .LVU98 + 573 0010 0023 movs r3, #0 + 574 0012 8DF80730 strb r3, [sp, #7] + 575 .L50: + 307:Src/bsp_driver_sd.c **** } + 308:Src/bsp_driver_sd.c **** + 309:Src/bsp_driver_sd.c **** return status; + 576 .loc 1 309 3 is_stmt 1 view .LVU99 + 577 .loc 1 309 10 is_stmt 0 view .LVU100 + 578 0016 9DF80700 ldrb r0, [sp, #7] @ zero_extendqisi2 + 310:Src/bsp_driver_sd.c **** } + 579 .loc 1 310 1 view .LVU101 + 580 001a 03B0 add sp, sp, #12 + 581 .LCFI16: + 582 .cfi_def_cfa_offset 4 + 583 @ sp needed + 584 001c 5DF804FB ldr pc, [sp], #4 + 585 .cfi_endproc + 586 .LFE156: + 588 .section .text.BSP_SD_Init,"ax",%progbits + 589 .align 1 + 590 .weak BSP_SD_Init + 591 .syntax unified + 592 .thumb + 593 .thumb_func + 594 .fpu fpv5-d16 + 596 BSP_SD_Init: + 597 .LFB141: + 49:Src/bsp_driver_sd.c **** uint8_t sd_state = MSD_OK; + 598 .loc 1 49 1 is_stmt 1 view -0 + 599 .cfi_startproc + 600 @ args = 0, pretend = 0, frame = 0 + 601 @ frame_needed = 0, uses_anonymous_args = 0 + 602 0000 38B5 push {r3, r4, r5, lr} + 603 .LCFI17: + 604 .cfi_def_cfa_offset 16 + 605 .cfi_offset 3, -16 + 606 .cfi_offset 4, -12 + 607 .cfi_offset 5, -8 + 608 .cfi_offset 14, -4 + 50:Src/bsp_driver_sd.c **** /* Check if the SD card is plugged in the slot */ + 609 .loc 1 50 3 view .LVU103 + 610 .LVL47: + 52:Src/bsp_driver_sd.c **** { + 611 .loc 1 52 3 view .LVU104 + 52:Src/bsp_driver_sd.c **** { + 612 .loc 1 52 7 is_stmt 0 view .LVU105 + 613 0002 FFF7FEFF bl BSP_SD_IsDetected + 614 .LVL48: + 52:Src/bsp_driver_sd.c **** { + 615 .loc 1 52 6 view .LVU106 + 616 0006 0128 cmp r0, #1 + ARM GAS /tmp/cckWiXI8.s page 17 + + + 617 0008 02D0 beq .L57 + 54:Src/bsp_driver_sd.c **** } + 618 .loc 1 54 12 view .LVU107 + 619 000a 0225 movs r5, #2 + 620 .LVL49: + 621 .L53: + 69:Src/bsp_driver_sd.c **** /* USER CODE BEGIN AfterInitSection */ + 622 .loc 1 69 1 view .LVU108 + 623 000c 2846 mov r0, r5 + 624 000e 38BD pop {r3, r4, r5, pc} + 625 .LVL50: + 626 .L57: + 69:Src/bsp_driver_sd.c **** /* USER CODE BEGIN AfterInitSection */ + 627 .loc 1 69 1 view .LVU109 + 628 0010 0446 mov r4, r0 + 57:Src/bsp_driver_sd.c **** /* Configure SD Bus width (4 bits mode selected) */ + 629 .loc 1 57 3 is_stmt 1 view .LVU110 + 57:Src/bsp_driver_sd.c **** /* Configure SD Bus width (4 bits mode selected) */ + 630 .loc 1 57 14 is_stmt 0 view .LVU111 + 631 0012 0748 ldr r0, .L58 + 632 0014 FFF7FEFF bl HAL_SD_Init + 633 .LVL51: + 59:Src/bsp_driver_sd.c **** { + 634 .loc 1 59 3 is_stmt 1 view .LVU112 + 59:Src/bsp_driver_sd.c **** { + 635 .loc 1 59 6 is_stmt 0 view .LVU113 + 636 0018 0546 mov r5, r0 + 637 001a 0028 cmp r0, #0 + 638 001c F6D1 bne .L53 + 62:Src/bsp_driver_sd.c **** { + 639 .loc 1 62 5 is_stmt 1 view .LVU114 + 62:Src/bsp_driver_sd.c **** { + 640 .loc 1 62 9 is_stmt 0 view .LVU115 + 641 001e 4FF40061 mov r1, #2048 + 642 0022 0348 ldr r0, .L58 + 643 .LVL52: + 62:Src/bsp_driver_sd.c **** { + 644 .loc 1 62 9 view .LVU116 + 645 0024 FFF7FEFF bl HAL_SD_ConfigWideBusOperation + 646 .LVL53: + 62:Src/bsp_driver_sd.c **** { + 647 .loc 1 62 8 view .LVU117 + 648 0028 0028 cmp r0, #0 + 649 002a EFD0 beq .L53 + 64:Src/bsp_driver_sd.c **** } + 650 .loc 1 64 16 view .LVU118 + 651 002c 2546 mov r5, r4 + 652 002e EDE7 b .L53 + 653 .L59: + 654 .align 2 + 655 .L58: + 656 0030 00000000 .word hsd1 + 657 .cfi_endproc + 658 .LFE141: + 660 .text + 661 .Letext0: + 662 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + ARM GAS /tmp/cckWiXI8.s page 18 + + + 663 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 664 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 665 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 666 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h" + 667 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h" + 668 .file 8 "Inc/fatfs_platform.h" + ARM GAS /tmp/cckWiXI8.s page 19 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 bsp_driver_sd.c + /tmp/cckWiXI8.s:17 .text.BSP_SD_ITConfig:0000000000000000 $t + /tmp/cckWiXI8.s:25 .text.BSP_SD_ITConfig:0000000000000000 BSP_SD_ITConfig + /tmp/cckWiXI8.s:41 .text.BSP_SD_ReadBlocks:0000000000000000 $t + /tmp/cckWiXI8.s:48 .text.BSP_SD_ReadBlocks:0000000000000000 BSP_SD_ReadBlocks + /tmp/cckWiXI8.s:98 .text.BSP_SD_ReadBlocks:000000000000001c $d + /tmp/cckWiXI8.s:103 .text.BSP_SD_WriteBlocks:0000000000000000 $t + /tmp/cckWiXI8.s:110 .text.BSP_SD_WriteBlocks:0000000000000000 BSP_SD_WriteBlocks + /tmp/cckWiXI8.s:160 .text.BSP_SD_WriteBlocks:000000000000001c $d + /tmp/cckWiXI8.s:165 .text.BSP_SD_ReadBlocks_DMA:0000000000000000 $t + /tmp/cckWiXI8.s:172 .text.BSP_SD_ReadBlocks_DMA:0000000000000000 BSP_SD_ReadBlocks_DMA + /tmp/cckWiXI8.s:213 .text.BSP_SD_ReadBlocks_DMA:0000000000000014 $d + /tmp/cckWiXI8.s:218 .text.BSP_SD_WriteBlocks_DMA:0000000000000000 $t + /tmp/cckWiXI8.s:225 .text.BSP_SD_WriteBlocks_DMA:0000000000000000 BSP_SD_WriteBlocks_DMA + /tmp/cckWiXI8.s:266 .text.BSP_SD_WriteBlocks_DMA:0000000000000014 $d + /tmp/cckWiXI8.s:271 .text.BSP_SD_Erase:0000000000000000 $t + /tmp/cckWiXI8.s:278 .text.BSP_SD_Erase:0000000000000000 BSP_SD_Erase + /tmp/cckWiXI8.s:316 .text.BSP_SD_Erase:0000000000000014 $d + /tmp/cckWiXI8.s:321 .text.BSP_SD_GetCardState:0000000000000000 $t + /tmp/cckWiXI8.s:328 .text.BSP_SD_GetCardState:0000000000000000 BSP_SD_GetCardState + /tmp/cckWiXI8.s:352 .text.BSP_SD_GetCardState:0000000000000010 $d + /tmp/cckWiXI8.s:357 .text.BSP_SD_GetCardInfo:0000000000000000 $t + /tmp/cckWiXI8.s:364 .text.BSP_SD_GetCardInfo:0000000000000000 BSP_SD_GetCardInfo + /tmp/cckWiXI8.s:389 .text.BSP_SD_GetCardInfo:000000000000000c $d + /tmp/cckWiXI8.s:394 .text.BSP_SD_AbortCallback:0000000000000000 $t + /tmp/cckWiXI8.s:401 .text.BSP_SD_AbortCallback:0000000000000000 BSP_SD_AbortCallback + /tmp/cckWiXI8.s:414 .text.HAL_SD_AbortCallback:0000000000000000 $t + /tmp/cckWiXI8.s:421 .text.HAL_SD_AbortCallback:0000000000000000 HAL_SD_AbortCallback + /tmp/cckWiXI8.s:443 .text.BSP_SD_WriteCpltCallback:0000000000000000 $t + /tmp/cckWiXI8.s:450 .text.BSP_SD_WriteCpltCallback:0000000000000000 BSP_SD_WriteCpltCallback + /tmp/cckWiXI8.s:463 .text.HAL_SD_TxCpltCallback:0000000000000000 $t + /tmp/cckWiXI8.s:470 .text.HAL_SD_TxCpltCallback:0000000000000000 HAL_SD_TxCpltCallback + /tmp/cckWiXI8.s:492 .text.BSP_SD_ReadCpltCallback:0000000000000000 $t + /tmp/cckWiXI8.s:499 .text.BSP_SD_ReadCpltCallback:0000000000000000 BSP_SD_ReadCpltCallback + /tmp/cckWiXI8.s:512 .text.HAL_SD_RxCpltCallback:0000000000000000 $t + /tmp/cckWiXI8.s:519 .text.HAL_SD_RxCpltCallback:0000000000000000 HAL_SD_RxCpltCallback + /tmp/cckWiXI8.s:541 .text.BSP_SD_IsDetected:0000000000000000 $t + /tmp/cckWiXI8.s:548 .text.BSP_SD_IsDetected:0000000000000000 BSP_SD_IsDetected + /tmp/cckWiXI8.s:589 .text.BSP_SD_Init:0000000000000000 $t + /tmp/cckWiXI8.s:596 .text.BSP_SD_Init:0000000000000000 BSP_SD_Init + /tmp/cckWiXI8.s:656 .text.BSP_SD_Init:0000000000000030 $d + +UNDEFINED SYMBOLS +HAL_SD_ReadBlocks +hsd1 +HAL_SD_WriteBlocks +HAL_SD_ReadBlocks_DMA +HAL_SD_WriteBlocks_DMA +HAL_SD_Erase +HAL_SD_GetCardState +HAL_SD_GetCardInfo +BSP_PlatformIsDetected +HAL_SD_Init +HAL_SD_ConfigWideBusOperation diff --git a/build/bsp_driver_sd.o b/build/bsp_driver_sd.o new file mode 100644 index 0000000..a99105c Binary files /dev/null and b/build/bsp_driver_sd.o differ diff --git a/build/diskio.d b/build/diskio.d new file mode 100644 index 0000000..d60839f --- /dev/null +++ b/build/diskio.d @@ -0,0 +1,100 @@ +build/diskio.o: Middlewares/Third_Party/FatFs/src/diskio.c \ + Middlewares/Third_Party/FatFs/src/diskio.h \ + Middlewares/Third_Party/FatFs/src/integer.h \ + Middlewares/Third_Party/FatFs/src/ff_gen_drv.h \ + Middlewares/Third_Party/FatFs/src/ff.h Inc/ffconf.h Inc/main.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h Inc/bsp_driver_sd.h \ + Inc/fatfs_platform.h +Middlewares/Third_Party/FatFs/src/diskio.h: +Middlewares/Third_Party/FatFs/src/integer.h: +Middlewares/Third_Party/FatFs/src/ff_gen_drv.h: +Middlewares/Third_Party/FatFs/src/ff.h: +Inc/ffconf.h: +Inc/main.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: +Inc/bsp_driver_sd.h: +Inc/fatfs_platform.h: diff --git a/build/diskio.lst b/build/diskio.lst new file mode 100644 index 0000000..a5f04e5 --- /dev/null +++ b/build/diskio.lst @@ -0,0 +1,478 @@ +ARM GAS /tmp/ccQS9hBN.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "diskio.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.disk_status,"ax",%progbits + 17 .align 1 + 18 .global disk_status + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 disk_status: + 26 .LVL0: + 27 .LFB1183: + 28 .file 1 "Middlewares/Third_Party/FatFs/src/diskio.c" + 1:Middlewares/Third_Party/FatFs/src/diskio.c **** /*-----------------------------------------------------------------------*/ + 2:Middlewares/Third_Party/FatFs/src/diskio.c **** /* Low level disk I/O module skeleton for FatFs (C)ChaN, 2017 */ + 3:Middlewares/Third_Party/FatFs/src/diskio.c **** /* */ + 4:Middlewares/Third_Party/FatFs/src/diskio.c **** /* Portions COPYRIGHT 2017 STMicroelectronics */ + 5:Middlewares/Third_Party/FatFs/src/diskio.c **** /* Portions Copyright (C) 2017, ChaN, all right reserved */ + 6:Middlewares/Third_Party/FatFs/src/diskio.c **** /*-----------------------------------------------------------------------*/ + 7:Middlewares/Third_Party/FatFs/src/diskio.c **** /* If a working storage control module is available, it should be */ + 8:Middlewares/Third_Party/FatFs/src/diskio.c **** /* attached to the FatFs via a glue function rather than modifying it. */ + 9:Middlewares/Third_Party/FatFs/src/diskio.c **** /* This is an example of glue functions to attach various existing */ + 10:Middlewares/Third_Party/FatFs/src/diskio.c **** /* storage control modules to the FatFs module with a defined API. */ + 11:Middlewares/Third_Party/FatFs/src/diskio.c **** /*-----------------------------------------------------------------------*/ + 12:Middlewares/Third_Party/FatFs/src/diskio.c **** + 13:Middlewares/Third_Party/FatFs/src/diskio.c **** /* Includes ------------------------------------------------------------------*/ + 14:Middlewares/Third_Party/FatFs/src/diskio.c **** #include "diskio.h" + 15:Middlewares/Third_Party/FatFs/src/diskio.c **** #include "ff_gen_drv.h" + 16:Middlewares/Third_Party/FatFs/src/diskio.c **** + 17:Middlewares/Third_Party/FatFs/src/diskio.c **** #if defined ( __GNUC__ ) + 18:Middlewares/Third_Party/FatFs/src/diskio.c **** #ifndef __weak + 19:Middlewares/Third_Party/FatFs/src/diskio.c **** #define __weak __attribute__((weak)) + 20:Middlewares/Third_Party/FatFs/src/diskio.c **** #endif + 21:Middlewares/Third_Party/FatFs/src/diskio.c **** #endif + 22:Middlewares/Third_Party/FatFs/src/diskio.c **** + 23:Middlewares/Third_Party/FatFs/src/diskio.c **** /* Private typedef -----------------------------------------------------------*/ + 24:Middlewares/Third_Party/FatFs/src/diskio.c **** /* Private define ------------------------------------------------------------*/ + 25:Middlewares/Third_Party/FatFs/src/diskio.c **** /* Private variables ---------------------------------------------------------*/ + 26:Middlewares/Third_Party/FatFs/src/diskio.c **** extern Disk_drvTypeDef disk; + 27:Middlewares/Third_Party/FatFs/src/diskio.c **** + 28:Middlewares/Third_Party/FatFs/src/diskio.c **** /* Private function prototypes -----------------------------------------------*/ + 29:Middlewares/Third_Party/FatFs/src/diskio.c **** /* Private functions ---------------------------------------------------------*/ + 30:Middlewares/Third_Party/FatFs/src/diskio.c **** + ARM GAS /tmp/ccQS9hBN.s page 2 + + + 31:Middlewares/Third_Party/FatFs/src/diskio.c **** /** + 32:Middlewares/Third_Party/FatFs/src/diskio.c **** * @brief Gets Disk Status + 33:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param pdrv: Physical drive number (0..) + 34:Middlewares/Third_Party/FatFs/src/diskio.c **** * @retval DSTATUS: Operation status + 35:Middlewares/Third_Party/FatFs/src/diskio.c **** */ + 36:Middlewares/Third_Party/FatFs/src/diskio.c **** DSTATUS disk_status ( + 37:Middlewares/Third_Party/FatFs/src/diskio.c **** BYTE pdrv /* Physical drive number to identify the drive */ + 38:Middlewares/Third_Party/FatFs/src/diskio.c **** ) + 39:Middlewares/Third_Party/FatFs/src/diskio.c **** { + 29 .loc 1 39 1 view -0 + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 33 .loc 1 39 1 is_stmt 0 view .LVU1 + 34 0000 08B5 push {r3, lr} + 35 .LCFI0: + 36 .cfi_def_cfa_offset 8 + 37 .cfi_offset 3, -8 + 38 .cfi_offset 14, -4 + 40:Middlewares/Third_Party/FatFs/src/diskio.c **** DSTATUS stat; + 39 .loc 1 40 3 is_stmt 1 view .LVU2 + 41:Middlewares/Third_Party/FatFs/src/diskio.c **** + 42:Middlewares/Third_Party/FatFs/src/diskio.c **** stat = disk.drv[pdrv]->disk_status(disk.lun[pdrv]); + 40 .loc 1 42 3 view .LVU3 + 41 .loc 1 42 18 is_stmt 0 view .LVU4 + 42 0002 044B ldr r3, .L3 + 43 0004 03EB8002 add r2, r3, r0, lsl #2 + 44 0008 5268 ldr r2, [r2, #4] + 45 .loc 1 42 24 view .LVU5 + 46 000a 5268 ldr r2, [r2, #4] + 47 .loc 1 42 10 view .LVU6 + 48 000c 0344 add r3, r3, r0 + 49 000e 187A ldrb r0, [r3, #8] @ zero_extendqisi2 + 50 .LVL1: + 51 .loc 1 42 10 view .LVU7 + 52 0010 9047 blx r2 + 53 .LVL2: + 43:Middlewares/Third_Party/FatFs/src/diskio.c **** return stat; + 54 .loc 1 43 3 is_stmt 1 view .LVU8 + 44:Middlewares/Third_Party/FatFs/src/diskio.c **** } + 55 .loc 1 44 1 is_stmt 0 view .LVU9 + 56 0012 08BD pop {r3, pc} + 57 .L4: + 58 .align 2 + 59 .L3: + 60 0014 00000000 .word disk + 61 .cfi_endproc + 62 .LFE1183: + 64 .section .text.disk_initialize,"ax",%progbits + 65 .align 1 + 66 .global disk_initialize + 67 .syntax unified + 68 .thumb + 69 .thumb_func + 70 .fpu fpv5-d16 + 72 disk_initialize: + 73 .LVL3: + ARM GAS /tmp/ccQS9hBN.s page 3 + + + 74 .LFB1184: + 45:Middlewares/Third_Party/FatFs/src/diskio.c **** + 46:Middlewares/Third_Party/FatFs/src/diskio.c **** /** + 47:Middlewares/Third_Party/FatFs/src/diskio.c **** * @brief Initializes a Drive + 48:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param pdrv: Physical drive number (0..) + 49:Middlewares/Third_Party/FatFs/src/diskio.c **** * @retval DSTATUS: Operation status + 50:Middlewares/Third_Party/FatFs/src/diskio.c **** */ + 51:Middlewares/Third_Party/FatFs/src/diskio.c **** DSTATUS disk_initialize ( + 52:Middlewares/Third_Party/FatFs/src/diskio.c **** BYTE pdrv /* Physical drive nmuber to identify the drive */ + 53:Middlewares/Third_Party/FatFs/src/diskio.c **** ) + 54:Middlewares/Third_Party/FatFs/src/diskio.c **** { + 75 .loc 1 54 1 is_stmt 1 view -0 + 76 .cfi_startproc + 77 @ args = 0, pretend = 0, frame = 0 + 78 @ frame_needed = 0, uses_anonymous_args = 0 + 79 .loc 1 54 1 is_stmt 0 view .LVU11 + 80 0000 08B5 push {r3, lr} + 81 .LCFI1: + 82 .cfi_def_cfa_offset 8 + 83 .cfi_offset 3, -8 + 84 .cfi_offset 14, -4 + 55:Middlewares/Third_Party/FatFs/src/diskio.c **** DSTATUS stat = RES_OK; + 85 .loc 1 55 3 is_stmt 1 view .LVU12 + 86 .LVL4: + 56:Middlewares/Third_Party/FatFs/src/diskio.c **** + 57:Middlewares/Third_Party/FatFs/src/diskio.c **** if(disk.is_initialized[pdrv] == 0) + 87 .loc 1 57 3 view .LVU13 + 88 .loc 1 57 25 is_stmt 0 view .LVU14 + 89 0002 084B ldr r3, .L9 + 90 0004 1B5C ldrb r3, [r3, r0] @ zero_extendqisi2 + 91 .loc 1 57 5 view .LVU15 + 92 0006 53B9 cbnz r3, .L7 + 58:Middlewares/Third_Party/FatFs/src/diskio.c **** { + 59:Middlewares/Third_Party/FatFs/src/diskio.c **** disk.is_initialized[pdrv] = 1; + 93 .loc 1 59 5 is_stmt 1 view .LVU16 + 94 .loc 1 59 31 is_stmt 0 view .LVU17 + 95 0008 064B ldr r3, .L9 + 96 000a 0122 movs r2, #1 + 97 000c 1A54 strb r2, [r3, r0] + 60:Middlewares/Third_Party/FatFs/src/diskio.c **** stat = disk.drv[pdrv]->disk_initialize(disk.lun[pdrv]); + 98 .loc 1 60 5 is_stmt 1 view .LVU18 + 99 .loc 1 60 20 is_stmt 0 view .LVU19 + 100 000e 03EB8002 add r2, r3, r0, lsl #2 + 101 0012 5268 ldr r2, [r2, #4] + 102 .loc 1 60 26 view .LVU20 + 103 0014 1268 ldr r2, [r2] + 104 .loc 1 60 12 view .LVU21 + 105 0016 1844 add r0, r0, r3 + 106 .LVL5: + 107 .loc 1 60 12 view .LVU22 + 108 0018 007A ldrb r0, [r0, #8] @ zero_extendqisi2 + 109 001a 9047 blx r2 + 110 .LVL6: + 111 .L6: + 61:Middlewares/Third_Party/FatFs/src/diskio.c **** } + 62:Middlewares/Third_Party/FatFs/src/diskio.c **** return stat; + 112 .loc 1 62 3 is_stmt 1 view .LVU23 + ARM GAS /tmp/ccQS9hBN.s page 4 + + + 63:Middlewares/Third_Party/FatFs/src/diskio.c **** } + 113 .loc 1 63 1 is_stmt 0 view .LVU24 + 114 001c 08BD pop {r3, pc} + 115 .LVL7: + 116 .L7: + 55:Middlewares/Third_Party/FatFs/src/diskio.c **** + 117 .loc 1 55 11 view .LVU25 + 118 001e 0020 movs r0, #0 + 119 .LVL8: + 55:Middlewares/Third_Party/FatFs/src/diskio.c **** + 120 .loc 1 55 11 view .LVU26 + 121 0020 FCE7 b .L6 + 122 .L10: + 123 0022 00BF .align 2 + 124 .L9: + 125 0024 00000000 .word disk + 126 .cfi_endproc + 127 .LFE1184: + 129 .section .text.disk_read,"ax",%progbits + 130 .align 1 + 131 .global disk_read + 132 .syntax unified + 133 .thumb + 134 .thumb_func + 135 .fpu fpv5-d16 + 137 disk_read: + 138 .LVL9: + 139 .LFB1185: + 64:Middlewares/Third_Party/FatFs/src/diskio.c **** + 65:Middlewares/Third_Party/FatFs/src/diskio.c **** /** + 66:Middlewares/Third_Party/FatFs/src/diskio.c **** * @brief Reads Sector(s) + 67:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param pdrv: Physical drive number (0..) + 68:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param *buff: Data buffer to store read data + 69:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param sector: Sector address (LBA) + 70:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param count: Number of sectors to read (1..128) + 71:Middlewares/Third_Party/FatFs/src/diskio.c **** * @retval DRESULT: Operation result + 72:Middlewares/Third_Party/FatFs/src/diskio.c **** */ + 73:Middlewares/Third_Party/FatFs/src/diskio.c **** DRESULT disk_read ( + 74:Middlewares/Third_Party/FatFs/src/diskio.c **** BYTE pdrv, /* Physical drive nmuber to identify the drive */ + 75:Middlewares/Third_Party/FatFs/src/diskio.c **** BYTE *buff, /* Data buffer to store read data */ + 76:Middlewares/Third_Party/FatFs/src/diskio.c **** DWORD sector, /* Sector address in LBA */ + 77:Middlewares/Third_Party/FatFs/src/diskio.c **** UINT count /* Number of sectors to read */ + 78:Middlewares/Third_Party/FatFs/src/diskio.c **** ) + 79:Middlewares/Third_Party/FatFs/src/diskio.c **** { + 140 .loc 1 79 1 is_stmt 1 view -0 + 141 .cfi_startproc + 142 @ args = 0, pretend = 0, frame = 0 + 143 @ frame_needed = 0, uses_anonymous_args = 0 + 144 .loc 1 79 1 is_stmt 0 view .LVU28 + 145 0000 38B5 push {r3, r4, r5, lr} + 146 .LCFI2: + 147 .cfi_def_cfa_offset 16 + 148 .cfi_offset 3, -16 + 149 .cfi_offset 4, -12 + 150 .cfi_offset 5, -8 + 151 .cfi_offset 14, -4 + 80:Middlewares/Third_Party/FatFs/src/diskio.c **** DRESULT res; + ARM GAS /tmp/ccQS9hBN.s page 5 + + + 152 .loc 1 80 3 is_stmt 1 view .LVU29 + 81:Middlewares/Third_Party/FatFs/src/diskio.c **** + 82:Middlewares/Third_Party/FatFs/src/diskio.c **** res = disk.drv[pdrv]->disk_read(disk.lun[pdrv], buff, sector, count); + 153 .loc 1 82 3 view .LVU30 + 154 .loc 1 82 17 is_stmt 0 view .LVU31 + 155 0002 044C ldr r4, .L13 + 156 0004 04EB8005 add r5, r4, r0, lsl #2 + 157 0008 6D68 ldr r5, [r5, #4] + 158 .loc 1 82 23 view .LVU32 + 159 000a AD68 ldr r5, [r5, #8] + 160 .loc 1 82 9 view .LVU33 + 161 000c 0444 add r4, r4, r0 + 162 000e 207A ldrb r0, [r4, #8] @ zero_extendqisi2 + 163 .LVL10: + 164 .loc 1 82 9 view .LVU34 + 165 0010 A847 blx r5 + 166 .LVL11: + 83:Middlewares/Third_Party/FatFs/src/diskio.c **** return res; + 167 .loc 1 83 3 is_stmt 1 view .LVU35 + 84:Middlewares/Third_Party/FatFs/src/diskio.c **** } + 168 .loc 1 84 1 is_stmt 0 view .LVU36 + 169 0012 38BD pop {r3, r4, r5, pc} + 170 .L14: + 171 .align 2 + 172 .L13: + 173 0014 00000000 .word disk + 174 .cfi_endproc + 175 .LFE1185: + 177 .section .text.disk_write,"ax",%progbits + 178 .align 1 + 179 .global disk_write + 180 .syntax unified + 181 .thumb + 182 .thumb_func + 183 .fpu fpv5-d16 + 185 disk_write: + 186 .LVL12: + 187 .LFB1186: + 85:Middlewares/Third_Party/FatFs/src/diskio.c **** + 86:Middlewares/Third_Party/FatFs/src/diskio.c **** /** + 87:Middlewares/Third_Party/FatFs/src/diskio.c **** * @brief Writes Sector(s) + 88:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param pdrv: Physical drive number (0..) + 89:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param *buff: Data to be written + 90:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param sector: Sector address (LBA) + 91:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param count: Number of sectors to write (1..128) + 92:Middlewares/Third_Party/FatFs/src/diskio.c **** * @retval DRESULT: Operation result + 93:Middlewares/Third_Party/FatFs/src/diskio.c **** */ + 94:Middlewares/Third_Party/FatFs/src/diskio.c **** #if _USE_WRITE == 1 + 95:Middlewares/Third_Party/FatFs/src/diskio.c **** DRESULT disk_write ( + 96:Middlewares/Third_Party/FatFs/src/diskio.c **** BYTE pdrv, /* Physical drive nmuber to identify the drive */ + 97:Middlewares/Third_Party/FatFs/src/diskio.c **** const BYTE *buff, /* Data to be written */ + 98:Middlewares/Third_Party/FatFs/src/diskio.c **** DWORD sector, /* Sector address in LBA */ + 99:Middlewares/Third_Party/FatFs/src/diskio.c **** UINT count /* Number of sectors to write */ + 100:Middlewares/Third_Party/FatFs/src/diskio.c **** ) + 101:Middlewares/Third_Party/FatFs/src/diskio.c **** { + 188 .loc 1 101 1 is_stmt 1 view -0 + 189 .cfi_startproc + ARM GAS /tmp/ccQS9hBN.s page 6 + + + 190 @ args = 0, pretend = 0, frame = 0 + 191 @ frame_needed = 0, uses_anonymous_args = 0 + 192 .loc 1 101 1 is_stmt 0 view .LVU38 + 193 0000 38B5 push {r3, r4, r5, lr} + 194 .LCFI3: + 195 .cfi_def_cfa_offset 16 + 196 .cfi_offset 3, -16 + 197 .cfi_offset 4, -12 + 198 .cfi_offset 5, -8 + 199 .cfi_offset 14, -4 + 102:Middlewares/Third_Party/FatFs/src/diskio.c **** DRESULT res; + 200 .loc 1 102 3 is_stmt 1 view .LVU39 + 103:Middlewares/Third_Party/FatFs/src/diskio.c **** + 104:Middlewares/Third_Party/FatFs/src/diskio.c **** res = disk.drv[pdrv]->disk_write(disk.lun[pdrv], buff, sector, count); + 201 .loc 1 104 3 view .LVU40 + 202 .loc 1 104 17 is_stmt 0 view .LVU41 + 203 0002 044C ldr r4, .L17 + 204 0004 04EB8005 add r5, r4, r0, lsl #2 + 205 0008 6D68 ldr r5, [r5, #4] + 206 .loc 1 104 23 view .LVU42 + 207 000a ED68 ldr r5, [r5, #12] + 208 .loc 1 104 9 view .LVU43 + 209 000c 0444 add r4, r4, r0 + 210 000e 207A ldrb r0, [r4, #8] @ zero_extendqisi2 + 211 .LVL13: + 212 .loc 1 104 9 view .LVU44 + 213 0010 A847 blx r5 + 214 .LVL14: + 105:Middlewares/Third_Party/FatFs/src/diskio.c **** return res; + 215 .loc 1 105 3 is_stmt 1 view .LVU45 + 106:Middlewares/Third_Party/FatFs/src/diskio.c **** } + 216 .loc 1 106 1 is_stmt 0 view .LVU46 + 217 0012 38BD pop {r3, r4, r5, pc} + 218 .L18: + 219 .align 2 + 220 .L17: + 221 0014 00000000 .word disk + 222 .cfi_endproc + 223 .LFE1186: + 225 .section .text.disk_ioctl,"ax",%progbits + 226 .align 1 + 227 .global disk_ioctl + 228 .syntax unified + 229 .thumb + 230 .thumb_func + 231 .fpu fpv5-d16 + 233 disk_ioctl: + 234 .LVL15: + 235 .LFB1187: + 107:Middlewares/Third_Party/FatFs/src/diskio.c **** #endif /* _USE_WRITE == 1 */ + 108:Middlewares/Third_Party/FatFs/src/diskio.c **** + 109:Middlewares/Third_Party/FatFs/src/diskio.c **** /** + 110:Middlewares/Third_Party/FatFs/src/diskio.c **** * @brief I/O control operation + 111:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param pdrv: Physical drive number (0..) + 112:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param cmd: Control code + 113:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param *buff: Buffer to send/receive control data + 114:Middlewares/Third_Party/FatFs/src/diskio.c **** * @retval DRESULT: Operation result + ARM GAS /tmp/ccQS9hBN.s page 7 + + + 115:Middlewares/Third_Party/FatFs/src/diskio.c **** */ + 116:Middlewares/Third_Party/FatFs/src/diskio.c **** #if _USE_IOCTL == 1 + 117:Middlewares/Third_Party/FatFs/src/diskio.c **** DRESULT disk_ioctl ( + 118:Middlewares/Third_Party/FatFs/src/diskio.c **** BYTE pdrv, /* Physical drive nmuber (0..) */ + 119:Middlewares/Third_Party/FatFs/src/diskio.c **** BYTE cmd, /* Control code */ + 120:Middlewares/Third_Party/FatFs/src/diskio.c **** void *buff /* Buffer to send/receive control data */ + 121:Middlewares/Third_Party/FatFs/src/diskio.c **** ) + 122:Middlewares/Third_Party/FatFs/src/diskio.c **** { + 236 .loc 1 122 1 is_stmt 1 view -0 + 237 .cfi_startproc + 238 @ args = 0, pretend = 0, frame = 0 + 239 @ frame_needed = 0, uses_anonymous_args = 0 + 240 .loc 1 122 1 is_stmt 0 view .LVU48 + 241 0000 10B5 push {r4, lr} + 242 .LCFI4: + 243 .cfi_def_cfa_offset 8 + 244 .cfi_offset 4, -8 + 245 .cfi_offset 14, -4 + 123:Middlewares/Third_Party/FatFs/src/diskio.c **** DRESULT res; + 246 .loc 1 123 3 is_stmt 1 view .LVU49 + 124:Middlewares/Third_Party/FatFs/src/diskio.c **** + 125:Middlewares/Third_Party/FatFs/src/diskio.c **** res = disk.drv[pdrv]->disk_ioctl(disk.lun[pdrv], cmd, buff); + 247 .loc 1 125 3 view .LVU50 + 248 .loc 1 125 17 is_stmt 0 view .LVU51 + 249 0002 044B ldr r3, .L21 + 250 0004 03EB8004 add r4, r3, r0, lsl #2 + 251 0008 6468 ldr r4, [r4, #4] + 252 .loc 1 125 23 view .LVU52 + 253 000a 2469 ldr r4, [r4, #16] + 254 .loc 1 125 9 view .LVU53 + 255 000c 0344 add r3, r3, r0 + 256 000e 187A ldrb r0, [r3, #8] @ zero_extendqisi2 + 257 .LVL16: + 258 .loc 1 125 9 view .LVU54 + 259 0010 A047 blx r4 + 260 .LVL17: + 126:Middlewares/Third_Party/FatFs/src/diskio.c **** return res; + 261 .loc 1 126 3 is_stmt 1 view .LVU55 + 127:Middlewares/Third_Party/FatFs/src/diskio.c **** } + 262 .loc 1 127 1 is_stmt 0 view .LVU56 + 263 0012 10BD pop {r4, pc} + 264 .L22: + 265 .align 2 + 266 .L21: + 267 0014 00000000 .word disk + 268 .cfi_endproc + 269 .LFE1187: + 271 .section .text.get_fattime,"ax",%progbits + 272 .align 1 + 273 .weak get_fattime + 274 .syntax unified + 275 .thumb + 276 .thumb_func + 277 .fpu fpv5-d16 + 279 get_fattime: + 280 .LFB1188: + 128:Middlewares/Third_Party/FatFs/src/diskio.c **** #endif /* _USE_IOCTL == 1 */ + ARM GAS /tmp/ccQS9hBN.s page 8 + + + 129:Middlewares/Third_Party/FatFs/src/diskio.c **** + 130:Middlewares/Third_Party/FatFs/src/diskio.c **** /** + 131:Middlewares/Third_Party/FatFs/src/diskio.c **** * @brief Gets Time from RTC + 132:Middlewares/Third_Party/FatFs/src/diskio.c **** * @param None + 133:Middlewares/Third_Party/FatFs/src/diskio.c **** * @retval Time in DWORD + 134:Middlewares/Third_Party/FatFs/src/diskio.c **** */ + 135:Middlewares/Third_Party/FatFs/src/diskio.c **** __weak DWORD get_fattime (void) + 136:Middlewares/Third_Party/FatFs/src/diskio.c **** { + 281 .loc 1 136 1 is_stmt 1 view -0 + 282 .cfi_startproc + 283 @ args = 0, pretend = 0, frame = 0 + 284 @ frame_needed = 0, uses_anonymous_args = 0 + 285 @ link register save eliminated. + 137:Middlewares/Third_Party/FatFs/src/diskio.c **** return 0; + 286 .loc 1 137 3 view .LVU58 + 138:Middlewares/Third_Party/FatFs/src/diskio.c **** } + 287 .loc 1 138 1 is_stmt 0 view .LVU59 + 288 0000 0020 movs r0, #0 + 289 0002 7047 bx lr + 290 .cfi_endproc + 291 .LFE1188: + 293 .text + 294 .Letext0: + 295 .file 2 "Middlewares/Third_Party/FatFs/src/integer.h" + 296 .file 3 "Middlewares/Third_Party/FatFs/src/diskio.h" + 297 .file 4 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 298 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" + 299 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" + 300 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 301 .file 8 "Middlewares/Third_Party/FatFs/src/ff_gen_drv.h" + ARM GAS /tmp/ccQS9hBN.s page 9 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 diskio.c + /tmp/ccQS9hBN.s:17 .text.disk_status:0000000000000000 $t + /tmp/ccQS9hBN.s:25 .text.disk_status:0000000000000000 disk_status + /tmp/ccQS9hBN.s:60 .text.disk_status:0000000000000014 $d + /tmp/ccQS9hBN.s:65 .text.disk_initialize:0000000000000000 $t + /tmp/ccQS9hBN.s:72 .text.disk_initialize:0000000000000000 disk_initialize + /tmp/ccQS9hBN.s:125 .text.disk_initialize:0000000000000024 $d + /tmp/ccQS9hBN.s:130 .text.disk_read:0000000000000000 $t + /tmp/ccQS9hBN.s:137 .text.disk_read:0000000000000000 disk_read + /tmp/ccQS9hBN.s:173 .text.disk_read:0000000000000014 $d + /tmp/ccQS9hBN.s:178 .text.disk_write:0000000000000000 $t + /tmp/ccQS9hBN.s:185 .text.disk_write:0000000000000000 disk_write + /tmp/ccQS9hBN.s:221 .text.disk_write:0000000000000014 $d + /tmp/ccQS9hBN.s:226 .text.disk_ioctl:0000000000000000 $t + /tmp/ccQS9hBN.s:233 .text.disk_ioctl:0000000000000000 disk_ioctl + /tmp/ccQS9hBN.s:267 .text.disk_ioctl:0000000000000014 $d + /tmp/ccQS9hBN.s:272 .text.get_fattime:0000000000000000 $t + /tmp/ccQS9hBN.s:279 .text.get_fattime:0000000000000000 get_fattime + +UNDEFINED SYMBOLS +disk diff --git a/build/diskio.o b/build/diskio.o new file mode 100644 index 0000000..84cf07d Binary files /dev/null and b/build/diskio.o differ diff --git a/build/fatfs.d b/build/fatfs.d new file mode 100644 index 0000000..d83b373 --- /dev/null +++ b/build/fatfs.d @@ -0,0 +1,103 @@ +build/fatfs.o: Src/fatfs.c Inc/fatfs.h \ + Middlewares/Third_Party/FatFs/src/ff.h \ + Middlewares/Third_Party/FatFs/src/integer.h Inc/ffconf.h Inc/main.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h Inc/bsp_driver_sd.h \ + Inc/fatfs_platform.h Middlewares/Third_Party/FatFs/src/ff_gen_drv.h \ + Middlewares/Third_Party/FatFs/src/diskio.h \ + Middlewares/Third_Party/FatFs/src/ff.h Inc/sd_diskio.h +Inc/fatfs.h: +Middlewares/Third_Party/FatFs/src/ff.h: +Middlewares/Third_Party/FatFs/src/integer.h: +Inc/ffconf.h: +Inc/main.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: +Inc/bsp_driver_sd.h: +Inc/fatfs_platform.h: +Middlewares/Third_Party/FatFs/src/ff_gen_drv.h: +Middlewares/Third_Party/FatFs/src/diskio.h: +Middlewares/Third_Party/FatFs/src/ff.h: +Inc/sd_diskio.h: diff --git a/build/fatfs.lst b/build/fatfs.lst new file mode 100644 index 0000000..211ef55 --- /dev/null +++ b/build/fatfs.lst @@ -0,0 +1,196 @@ +ARM GAS /tmp/ccj14z6F.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "fatfs.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.MX_FATFS_Init,"ax",%progbits + 17 .align 1 + 18 .global MX_FATFS_Init + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 MX_FATFS_Init: + 26 .LFB1183: + 27 .file 1 "Src/fatfs.c" + 1:Src/fatfs.c **** /* USER CODE BEGIN Header */ + 2:Src/fatfs.c **** /** + 3:Src/fatfs.c **** ****************************************************************************** + 4:Src/fatfs.c **** * @file fatfs.c + 5:Src/fatfs.c **** * @brief Code for fatfs applications + 6:Src/fatfs.c **** ****************************************************************************** + 7:Src/fatfs.c **** * @attention + 8:Src/fatfs.c **** * + 9:Src/fatfs.c **** * Copyright (c) 2023 STMicroelectronics. + 10:Src/fatfs.c **** * All rights reserved. + 11:Src/fatfs.c **** * + 12:Src/fatfs.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Src/fatfs.c **** * in the root directory of this software component. + 14:Src/fatfs.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Src/fatfs.c **** * + 16:Src/fatfs.c **** ****************************************************************************** + 17:Src/fatfs.c **** */ + 18:Src/fatfs.c **** /* USER CODE END Header */ + 19:Src/fatfs.c **** #include "fatfs.h" + 20:Src/fatfs.c **** + 21:Src/fatfs.c **** uint8_t retSD; /* Return value for SD */ + 22:Src/fatfs.c **** char SDPath[4]; /* SD logical drive path */ + 23:Src/fatfs.c **** FATFS SDFatFS; /* File system object for SD logical drive */ + 24:Src/fatfs.c **** FIL SDFile; /* File object for SD */ + 25:Src/fatfs.c **** + 26:Src/fatfs.c **** /* USER CODE BEGIN Variables */ + 27:Src/fatfs.c **** + 28:Src/fatfs.c **** /* USER CODE END Variables */ + 29:Src/fatfs.c **** + 30:Src/fatfs.c **** void MX_FATFS_Init(void) + 31:Src/fatfs.c **** { + ARM GAS /tmp/ccj14z6F.s page 2 + + + 28 .loc 1 31 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 0000 08B5 push {r3, lr} + 33 .LCFI0: + 34 .cfi_def_cfa_offset 8 + 35 .cfi_offset 3, -8 + 36 .cfi_offset 14, -4 + 32:Src/fatfs.c **** /*## FatFS: Link the SD driver ###########################*/ + 33:Src/fatfs.c **** retSD = FATFS_LinkDriver(&SD_Driver, SDPath); + 37 .loc 1 33 3 view .LVU1 + 38 .loc 1 33 11 is_stmt 0 view .LVU2 + 39 0002 0349 ldr r1, .L3 + 40 0004 0348 ldr r0, .L3+4 + 41 0006 FFF7FEFF bl FATFS_LinkDriver + 42 .LVL0: + 43 .loc 1 33 9 view .LVU3 + 44 000a 034B ldr r3, .L3+8 + 45 000c 1870 strb r0, [r3] + 34:Src/fatfs.c **** + 35:Src/fatfs.c **** /* USER CODE BEGIN Init */ + 36:Src/fatfs.c **** /* additional user code for init */ + 37:Src/fatfs.c **** /* USER CODE END Init */ + 38:Src/fatfs.c **** } + 46 .loc 1 38 1 view .LVU4 + 47 000e 08BD pop {r3, pc} + 48 .L4: + 49 .align 2 + 50 .L3: + 51 0010 00000000 .word .LANCHOR0 + 52 0014 00000000 .word SD_Driver + 53 0018 00000000 .word .LANCHOR1 + 54 .cfi_endproc + 55 .LFE1183: + 57 .section .text.get_fattime,"ax",%progbits + 58 .align 1 + 59 .global get_fattime + 60 .syntax unified + 61 .thumb + 62 .thumb_func + 63 .fpu fpv5-d16 + 65 get_fattime: + 66 .LFB1184: + 39:Src/fatfs.c **** + 40:Src/fatfs.c **** /** + 41:Src/fatfs.c **** * @brief Gets Time from RTC + 42:Src/fatfs.c **** * @param None + 43:Src/fatfs.c **** * @retval Time in DWORD + 44:Src/fatfs.c **** */ + 45:Src/fatfs.c **** DWORD get_fattime(void) + 46:Src/fatfs.c **** { + 67 .loc 1 46 1 is_stmt 1 view -0 + 68 .cfi_startproc + 69 @ args = 0, pretend = 0, frame = 0 + 70 @ frame_needed = 0, uses_anonymous_args = 0 + 71 @ link register save eliminated. + ARM GAS /tmp/ccj14z6F.s page 3 + + + 47:Src/fatfs.c **** /* USER CODE BEGIN get_fattime */ + 48:Src/fatfs.c **** return 0; + 72 .loc 1 48 3 view .LVU6 + 49:Src/fatfs.c **** /* USER CODE END get_fattime */ + 50:Src/fatfs.c **** } + 73 .loc 1 50 1 is_stmt 0 view .LVU7 + 74 0000 0020 movs r0, #0 + 75 0002 7047 bx lr + 76 .cfi_endproc + 77 .LFE1184: + 79 .global SDFile + 80 .global SDFatFS + 81 .global SDPath + 82 .global retSD + 83 .section .bss.SDFatFS,"aw",%nobits + 84 .align 2 + 87 SDFatFS: + 88 0000 00000000 .space 4148 + 88 00000000 + 88 00000000 + 88 00000000 + 88 00000000 + 89 .section .bss.SDFile,"aw",%nobits + 90 .align 2 + 93 SDFile: + 94 0000 00000000 .space 4144 + 94 00000000 + 94 00000000 + 94 00000000 + 94 00000000 + 95 .section .bss.SDPath,"aw",%nobits + 96 .align 2 + 97 .set .LANCHOR0,. + 0 + 100 SDPath: + 101 0000 00000000 .space 4 + 102 .section .bss.retSD,"aw",%nobits + 103 .set .LANCHOR1,. + 0 + 106 retSD: + 107 0000 00 .space 1 + 108 .text + 109 .Letext0: + 110 .file 2 "Middlewares/Third_Party/FatFs/src/integer.h" + 111 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 112 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" + 113 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" + 114 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 115 .file 7 "Middlewares/Third_Party/FatFs/src/ff.h" + 116 .file 8 "Middlewares/Third_Party/FatFs/src/diskio.h" + 117 .file 9 "Middlewares/Third_Party/FatFs/src/ff_gen_drv.h" + 118 .file 10 "Inc/sd_diskio.h" + 119 .file 11 "Inc/fatfs.h" + ARM GAS /tmp/ccj14z6F.s page 4 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 fatfs.c + /tmp/ccj14z6F.s:17 .text.MX_FATFS_Init:0000000000000000 $t + /tmp/ccj14z6F.s:25 .text.MX_FATFS_Init:0000000000000000 MX_FATFS_Init + /tmp/ccj14z6F.s:51 .text.MX_FATFS_Init:0000000000000010 $d + /tmp/ccj14z6F.s:58 .text.get_fattime:0000000000000000 $t + /tmp/ccj14z6F.s:65 .text.get_fattime:0000000000000000 get_fattime + /tmp/ccj14z6F.s:93 .bss.SDFile:0000000000000000 SDFile + /tmp/ccj14z6F.s:87 .bss.SDFatFS:0000000000000000 SDFatFS + /tmp/ccj14z6F.s:100 .bss.SDPath:0000000000000000 SDPath + /tmp/ccj14z6F.s:106 .bss.retSD:0000000000000000 retSD + /tmp/ccj14z6F.s:84 .bss.SDFatFS:0000000000000000 $d + /tmp/ccj14z6F.s:90 .bss.SDFile:0000000000000000 $d + /tmp/ccj14z6F.s:96 .bss.SDPath:0000000000000000 $d + /tmp/ccj14z6F.s:107 .bss.retSD:0000000000000000 $d + +UNDEFINED SYMBOLS +FATFS_LinkDriver +SD_Driver diff --git a/build/fatfs.o b/build/fatfs.o new file mode 100644 index 0000000..17838c3 Binary files /dev/null and b/build/fatfs.o differ diff --git a/build/fatfs_platform.d b/build/fatfs_platform.d new file mode 100644 index 0000000..ad61434 --- /dev/null +++ b/build/fatfs_platform.d @@ -0,0 +1,64 @@ +build/fatfs_platform.o: Src/fatfs_platform.c Inc/fatfs_platform.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Inc/fatfs_platform.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/fatfs_platform.lst b/build/fatfs_platform.lst new file mode 100644 index 0000000..67de266 --- /dev/null +++ b/build/fatfs_platform.lst @@ -0,0 +1,119 @@ +ARM GAS /tmp/ccwVewTq.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "fatfs_platform.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.BSP_PlatformIsDetected,"ax",%progbits + 17 .align 1 + 18 .global BSP_PlatformIsDetected + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 BSP_PlatformIsDetected: + 26 .LFB141: + 27 .file 1 "Src/fatfs_platform.c" + 1:Src/fatfs_platform.c **** /* USER CODE BEGIN Header */ + 2:Src/fatfs_platform.c **** /** + 3:Src/fatfs_platform.c **** ****************************************************************************** + 4:Src/fatfs_platform.c **** * @file : fatfs_platform.c + 5:Src/fatfs_platform.c **** * @brief : fatfs_platform source file + 6:Src/fatfs_platform.c **** ****************************************************************************** + 7:Src/fatfs_platform.c **** * @attention + 8:Src/fatfs_platform.c **** * + 9:Src/fatfs_platform.c **** * Copyright (c) 2023 STMicroelectronics. + 10:Src/fatfs_platform.c **** * All rights reserved. + 11:Src/fatfs_platform.c **** * + 12:Src/fatfs_platform.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Src/fatfs_platform.c **** * in the root directory of this software component. + 14:Src/fatfs_platform.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Src/fatfs_platform.c **** * + 16:Src/fatfs_platform.c **** ****************************************************************************** + 17:Src/fatfs_platform.c **** */ + 18:Src/fatfs_platform.c **** /* USER CODE END Header */ + 19:Src/fatfs_platform.c **** #include "fatfs_platform.h" + 20:Src/fatfs_platform.c **** + 21:Src/fatfs_platform.c **** uint8_t BSP_PlatformIsDetected(void) { + 28 .loc 1 21 38 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 0000 08B5 push {r3, lr} + 33 .LCFI0: + 34 .cfi_def_cfa_offset 8 + 35 .cfi_offset 3, -8 + 36 .cfi_offset 14, -4 + 22:Src/fatfs_platform.c **** uint8_t status = SD_PRESENT; + ARM GAS /tmp/ccwVewTq.s page 2 + + + 37 .loc 1 22 5 view .LVU1 + 38 .LVL0: + 23:Src/fatfs_platform.c **** /* Check SD card detect pin */ + 24:Src/fatfs_platform.c **** if(HAL_GPIO_ReadPin(SD_DETECT_GPIO_PORT, SD_DETECT_PIN) != GPIO_PIN_RESET) + 39 .loc 1 24 5 view .LVU2 + 40 .loc 1 24 8 is_stmt 0 view .LVU3 + 41 0002 0121 movs r1, #1 + 42 0004 0348 ldr r0, .L5 + 43 0006 FFF7FEFF bl HAL_GPIO_ReadPin + 44 .LVL1: + 45 .loc 1 24 7 view .LVU4 + 46 000a 08B9 cbnz r0, .L3 + 22:Src/fatfs_platform.c **** uint8_t status = SD_PRESENT; + 47 .loc 1 22 13 view .LVU5 + 48 000c 0120 movs r0, #1 + 49 .L2: + 50 .LVL2: + 25:Src/fatfs_platform.c **** { + 26:Src/fatfs_platform.c **** status = SD_NOT_PRESENT; + 27:Src/fatfs_platform.c **** } + 28:Src/fatfs_platform.c **** /* USER CODE BEGIN 1 */ + 29:Src/fatfs_platform.c **** /* user code can be inserted here */ + 30:Src/fatfs_platform.c **** /* USER CODE END 1 */ + 31:Src/fatfs_platform.c **** return status; + 51 .loc 1 31 5 is_stmt 1 view .LVU6 + 32:Src/fatfs_platform.c **** } + 52 .loc 1 32 1 is_stmt 0 view .LVU7 + 53 000e 08BD pop {r3, pc} + 54 .LVL3: + 55 .L3: + 26:Src/fatfs_platform.c **** } + 56 .loc 1 26 16 view .LVU8 + 57 0010 0020 movs r0, #0 + 58 0012 FCE7 b .L2 + 59 .L6: + 60 .align 2 + 61 .L5: + 62 0014 000C0240 .word 1073875968 + 63 .cfi_endproc + 64 .LFE141: + 66 .text + 67 .Letext0: + 68 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 69 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 70 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h" + ARM GAS /tmp/ccwVewTq.s page 3 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 fatfs_platform.c + /tmp/ccwVewTq.s:17 .text.BSP_PlatformIsDetected:0000000000000000 $t + /tmp/ccwVewTq.s:25 .text.BSP_PlatformIsDetected:0000000000000000 BSP_PlatformIsDetected + /tmp/ccwVewTq.s:62 .text.BSP_PlatformIsDetected:0000000000000014 $d + +UNDEFINED SYMBOLS +HAL_GPIO_ReadPin diff --git a/build/fatfs_platform.o b/build/fatfs_platform.o new file mode 100644 index 0000000..0a4702d Binary files /dev/null and b/build/fatfs_platform.o differ diff --git a/build/ff.d b/build/ff.d new file mode 100644 index 0000000..ebbb95d --- /dev/null +++ b/build/ff.d @@ -0,0 +1,97 @@ +build/ff.o: Middlewares/Third_Party/FatFs/src/ff.c \ + Middlewares/Third_Party/FatFs/src/ff.h \ + Middlewares/Third_Party/FatFs/src/integer.h Inc/ffconf.h Inc/main.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h Inc/bsp_driver_sd.h \ + Inc/fatfs_platform.h Middlewares/Third_Party/FatFs/src/diskio.h +Middlewares/Third_Party/FatFs/src/ff.h: +Middlewares/Third_Party/FatFs/src/integer.h: +Inc/ffconf.h: +Inc/main.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: +Inc/bsp_driver_sd.h: +Inc/fatfs_platform.h: +Middlewares/Third_Party/FatFs/src/diskio.h: diff --git a/build/ff.lst b/build/ff.lst new file mode 100644 index 0000000..5c81ddb --- /dev/null +++ b/build/ff.lst @@ -0,0 +1,22715 @@ +ARM GAS /tmp/cc5lWXRL.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "ff.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.ld_word,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 ld_word: + 25 .LVL0: + 26 .LFB1183: + 27 .file 1 "Middlewares/Third_Party/FatFs/src/ff.c" + 1:Middlewares/Third_Party/FatFs/src/ff.c **** /*----------------------------------------------------------------------------/ + 2:Middlewares/Third_Party/FatFs/src/ff.c **** / FatFs - Generic FAT file system module R0.12c / + 3:Middlewares/Third_Party/FatFs/src/ff.c **** /-----------------------------------------------------------------------------/ + 4:Middlewares/Third_Party/FatFs/src/ff.c **** / + 5:Middlewares/Third_Party/FatFs/src/ff.c **** / Copyright (C) 2017, ChaN, all right reserved. + 6:Middlewares/Third_Party/FatFs/src/ff.c **** / + 7:Middlewares/Third_Party/FatFs/src/ff.c **** / FatFs module is an open source software. Redistribution and use of FatFs in + 8:Middlewares/Third_Party/FatFs/src/ff.c **** / source and binary forms, with or without modification, are permitted provided + 9:Middlewares/Third_Party/FatFs/src/ff.c **** / that the following condition is met: + 10:Middlewares/Third_Party/FatFs/src/ff.c **** / + 11:Middlewares/Third_Party/FatFs/src/ff.c **** / 1. Redistributions of source code must retain the above copyright notice, + 12:Middlewares/Third_Party/FatFs/src/ff.c **** / this condition and the following disclaimer. + 13:Middlewares/Third_Party/FatFs/src/ff.c **** / + 14:Middlewares/Third_Party/FatFs/src/ff.c **** / This software is provided by the copyright holder and contributors "AS IS" + 15:Middlewares/Third_Party/FatFs/src/ff.c **** / and any warranties related to this software are DISCLAIMED. + 16:Middlewares/Third_Party/FatFs/src/ff.c **** / The copyright owner or contributors be NOT LIABLE for any damages caused + 17:Middlewares/Third_Party/FatFs/src/ff.c **** / by use of this software. + 18:Middlewares/Third_Party/FatFs/src/ff.c **** /----------------------------------------------------------------------------*/ + 19:Middlewares/Third_Party/FatFs/src/ff.c **** + 20:Middlewares/Third_Party/FatFs/src/ff.c **** + 21:Middlewares/Third_Party/FatFs/src/ff.c **** #include "ff.h" /* Declarations of FatFs API */ + 22:Middlewares/Third_Party/FatFs/src/ff.c **** #include "diskio.h" /* Declarations of device I/O functions */ + 23:Middlewares/Third_Party/FatFs/src/ff.c **** + 24:Middlewares/Third_Party/FatFs/src/ff.c **** + 25:Middlewares/Third_Party/FatFs/src/ff.c **** /*-------------------------------------------------------------------------- + 26:Middlewares/Third_Party/FatFs/src/ff.c **** + 27:Middlewares/Third_Party/FatFs/src/ff.c **** Module Private Definitions + 28:Middlewares/Third_Party/FatFs/src/ff.c **** + 29:Middlewares/Third_Party/FatFs/src/ff.c **** ---------------------------------------------------------------------------*/ + 30:Middlewares/Third_Party/FatFs/src/ff.c **** + 31:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FATFS != 68300 /* Revision ID */ + ARM GAS /tmp/cc5lWXRL.s page 2 + + + 32:Middlewares/Third_Party/FatFs/src/ff.c **** #error Wrong include file (ff.h). + 33:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 34:Middlewares/Third_Party/FatFs/src/ff.c **** + 35:Middlewares/Third_Party/FatFs/src/ff.c **** + 36:Middlewares/Third_Party/FatFs/src/ff.c **** /* DBCS code ranges and SBCS upper conversion tables */ + 37:Middlewares/Third_Party/FatFs/src/ff.c **** + 38:Middlewares/Third_Party/FatFs/src/ff.c **** #if _CODE_PAGE == 932 /* Japanese Shift-JIS */ + 39:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0x81 /* DBC 1st byte range 1 start */ + 40:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1E 0x9F /* DBC 1st byte range 1 end */ + 41:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF2S 0xE0 /* DBC 1st byte range 2 start */ + 42:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF2E 0xFC /* DBC 1st byte range 2 end */ + 43:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS1S 0x40 /* DBC 2nd byte range 1 start */ + 44:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS1E 0x7E /* DBC 2nd byte range 1 end */ + 45:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS2S 0x80 /* DBC 2nd byte range 2 start */ + 46:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS2E 0xFC /* DBC 2nd byte range 2 end */ + 47:Middlewares/Third_Party/FatFs/src/ff.c **** + 48:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 936 /* Simplified Chinese GBK */ + 49:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0x81 + 50:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1E 0xFE + 51:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS1S 0x40 + 52:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS1E 0x7E + 53:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS2S 0x80 + 54:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS2E 0xFE + 55:Middlewares/Third_Party/FatFs/src/ff.c **** + 56:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 949 /* Korean */ + 57:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0x81 + 58:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1E 0xFE + 59:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS1S 0x41 + 60:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS1E 0x5A + 61:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS2S 0x61 + 62:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS2E 0x7A + 63:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS3S 0x81 + 64:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS3E 0xFE + 65:Middlewares/Third_Party/FatFs/src/ff.c **** + 66:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 950 /* Traditional Chinese Big5 */ + 67:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0x81 + 68:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1E 0xFE + 69:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS1S 0x40 + 70:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS1E 0x7E + 71:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS2S 0xA1 + 72:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DS2E 0xFE + 73:Middlewares/Third_Party/FatFs/src/ff.c **** + 74:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 437 /* U.S. */ + 75:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 76:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x45,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F, \ + 77:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 78:Middlewares/Third_Party/FatFs/src/ff.c **** 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 79:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 80:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 81:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 82:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 83:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 84:Middlewares/Third_Party/FatFs/src/ff.c **** + 85:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 720 /* Arabic */ + 86:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 87:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 88:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + ARM GAS /tmp/cc5lWXRL.s page 3 + + + 89:Middlewares/Third_Party/FatFs/src/ff.c **** 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 90:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 91:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 92:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 93:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 94:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 95:Middlewares/Third_Party/FatFs/src/ff.c **** + 96:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 737 /* Greek */ + 97:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 98:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 99:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x92,0x92,0x93,0x94,0x95,0x96,0x97,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, \ + 100:Middlewares/Third_Party/FatFs/src/ff.c **** 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0xAA,0x92,0x93,0x94,0x95,0x96, \ + 101:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 102:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 103:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 104:Middlewares/Third_Party/FatFs/src/ff.c **** 0x97,0xEA,0xEB,0xEC,0xE4,0xED,0xEE,0xEF,0xF5,0xF0,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 105:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 106:Middlewares/Third_Party/FatFs/src/ff.c **** + 107:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 771 /* KBL */ + 108:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 109:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 110:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 111:Middlewares/Third_Party/FatFs/src/ff.c **** 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 112:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 113:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 114:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDC,0xDE,0xDE, \ + 115:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 116:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF8,0xFA,0xFA,0xFC,0xFC,0xFE,0xFF} + 117:Middlewares/Third_Party/FatFs/src/ff.c **** + 118:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 775 /* Baltic */ + 119:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 120:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x91,0xA0,0x8E,0x95,0x8F,0x80,0xAD,0xED,0x8A,0x8A,0xA1,0x8D,0x8E,0x8F, \ + 121:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x92,0x92,0xE2,0x99,0x95,0x96,0x97,0x97,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \ + 122:Middlewares/Third_Party/FatFs/src/ff.c **** 0xA0,0xA1,0xE0,0xA3,0xA3,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 123:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 124:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 125:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB5,0xB6,0xB7,0xB8,0xBD,0xBE,0xC6,0xC7,0xA5,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 126:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE3,0xE8,0xE8,0xEA,0xEA,0xEE,0xED,0xEE,0xEF, \ + 127:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 128:Middlewares/Third_Party/FatFs/src/ff.c **** + 129:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 850 /* Latin 1 */ + 130:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 131:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x43,0x55,0x45,0x41,0x41,0x41,0x41,0x43,0x45,0x45,0x45,0x49,0x49,0x49,0x41,0x41, \ + 132:Middlewares/Third_Party/FatFs/src/ff.c **** 0x45,0x92,0x92,0x4F,0x4F,0x4F,0x55,0x55,0x59,0x4F,0x55,0x4F,0x9C,0x4F,0x9E,0x9F, \ + 133:Middlewares/Third_Party/FatFs/src/ff.c **** 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 134:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0x41,0x41,0x41,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 135:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0x41,0x41,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 136:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD1,0xD1,0x45,0x45,0x45,0x49,0x49,0x49,0x49,0xD9,0xDA,0xDB,0xDC,0xDD,0x49,0xDF, \ + 137:Middlewares/Third_Party/FatFs/src/ff.c **** 0x4F,0xE1,0x4F,0x4F,0x4F,0x4F,0xE6,0xE8,0xE8,0x55,0x55,0x55,0x59,0x59,0xEE,0xEF, \ + 138:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 139:Middlewares/Third_Party/FatFs/src/ff.c **** + 140:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 852 /* Latin 2 */ + 141:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 142:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xDE,0x8F,0x80,0x9D,0xD3,0x8A,0x8A,0xD7,0x8D,0x8E,0x8F, \ + 143:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x91,0x91,0xE2,0x99,0x95,0x95,0x97,0x97,0x99,0x9A,0x9B,0x9B,0x9D,0x9E,0xAC, \ + 144:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB5,0xD6,0xE0,0xE9,0xA4,0xA4,0xA6,0xA6,0xA8,0xA8,0xAA,0x8D,0xAC,0xB8,0xAE,0xAF, \ + 145:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBD,0xBF, \ + ARM GAS /tmp/cc5lWXRL.s page 4 + + + 146:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC6,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 147:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD1,0xD1,0xD2,0xD3,0xD2,0xD5,0xD6,0xD7,0xB7,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 148:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE3,0xD5,0xE6,0xE6,0xE8,0xE9,0xE8,0xEB,0xED,0xED,0xDD,0xEF, \ + 149:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xEB,0xFC,0xFC,0xFE,0xFF} + 150:Middlewares/Third_Party/FatFs/src/ff.c **** + 151:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 855 /* Cyrillic */ + 152:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 153:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x81,0x81,0x83,0x83,0x85,0x85,0x87,0x87,0x89,0x89,0x8B,0x8B,0x8D,0x8D,0x8F,0x8F, \ + 154:Middlewares/Third_Party/FatFs/src/ff.c **** 0x91,0x91,0x93,0x93,0x95,0x95,0x97,0x97,0x99,0x99,0x9B,0x9B,0x9D,0x9D,0x9F,0x9F, \ + 155:Middlewares/Third_Party/FatFs/src/ff.c **** 0xA1,0xA1,0xA3,0xA3,0xA5,0xA5,0xA7,0xA7,0xA9,0xA9,0xAB,0xAB,0xAD,0xAD,0xAE,0xAF, \ + 156:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB6,0xB6,0xB8,0xB8,0xB9,0xBA,0xBB,0xBC,0xBE,0xBE,0xBF, \ + 157:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 158:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD1,0xD1,0xD3,0xD3,0xD5,0xD5,0xD7,0xD7,0xDD,0xD9,0xDA,0xDB,0xDC,0xDD,0xE0,0xDF, \ + 159:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE2,0xE2,0xE4,0xE4,0xE6,0xE6,0xE8,0xE8,0xEA,0xEA,0xEC,0xEC,0xEE,0xEE,0xEF, \ + 160:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF8,0xFA,0xFA,0xFC,0xFC,0xFD,0xFE,0xFF} + 161:Middlewares/Third_Party/FatFs/src/ff.c **** + 162:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 857 /* Turkish */ + 163:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 164:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x90,0xB6,0x8E,0xB7,0x8F,0x80,0xD2,0xD3,0xD4,0xD8,0xD7,0x49,0x8E,0x8F, \ + 165:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x92,0x92,0xE2,0x99,0xE3,0xEA,0xEB,0x98,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9E, \ + 166:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB5,0xD6,0xE0,0xE9,0xA5,0xA5,0xA6,0xA6,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 167:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 168:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC7,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 169:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0x49,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 170:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE5,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xDE,0xED,0xEE,0xEF, \ + 171:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 172:Middlewares/Third_Party/FatFs/src/ff.c **** + 173:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 860 /* Portuguese */ + 174:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 175:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x90,0x8F,0x8E,0x91,0x86,0x80,0x89,0x89,0x92,0x8B,0x8C,0x98,0x8E,0x8F, \ + 176:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x91,0x92,0x8C,0x99,0xA9,0x96,0x9D,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 177:Middlewares/Third_Party/FatFs/src/ff.c **** 0x86,0x8B,0x9F,0x96,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 178:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 179:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 180:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 181:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 182:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 183:Middlewares/Third_Party/FatFs/src/ff.c **** + 184:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 861 /* Icelandic */ + 185:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 186:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x90,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x8B,0x8B,0x8D,0x8E,0x8F, \ + 187:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x92,0x92,0x4F,0x99,0x8D,0x55,0x97,0x97,0x99,0x9A,0x9D,0x9C,0x9D,0x9E,0x9F, \ + 188:Middlewares/Third_Party/FatFs/src/ff.c **** 0xA4,0xA5,0xA6,0xA7,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 189:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 190:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 191:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 192:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 193:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 194:Middlewares/Third_Party/FatFs/src/ff.c **** + 195:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 862 /* Hebrew */ + 196:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 197:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 198:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 199:Middlewares/Third_Party/FatFs/src/ff.c **** 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 200:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 201:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 202:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + ARM GAS /tmp/cc5lWXRL.s page 5 + + + 203:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 204:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 205:Middlewares/Third_Party/FatFs/src/ff.c **** + 206:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 863 /* Canadian-French */ + 207:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 208:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x43,0x55,0x45,0x41,0x41,0x41,0x86,0x43,0x45,0x45,0x45,0x49,0x49,0x8D,0x41,0x8F, \ + 209:Middlewares/Third_Party/FatFs/src/ff.c **** 0x45,0x45,0x45,0x4F,0x45,0x49,0x55,0x55,0x98,0x4F,0x55,0x9B,0x9C,0x55,0x55,0x9F, \ + 210:Middlewares/Third_Party/FatFs/src/ff.c **** 0xA0,0xA1,0x4F,0x55,0xA4,0xA5,0xA6,0xA7,0x49,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 211:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 212:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 213:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 214:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 215:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 216:Middlewares/Third_Party/FatFs/src/ff.c **** + 217:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 864 /* Arabic */ + 218:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 219:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x45,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F, \ + 220:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 221:Middlewares/Third_Party/FatFs/src/ff.c **** 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 222:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 223:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 224:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 225:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 226:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 227:Middlewares/Third_Party/FatFs/src/ff.c **** + 228:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 865 /* Nordic */ + 229:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 230:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x9A,0x90,0x41,0x8E,0x41,0x8F,0x80,0x45,0x45,0x45,0x49,0x49,0x49,0x8E,0x8F, \ + 231:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x92,0x92,0x4F,0x99,0x4F,0x55,0x55,0x59,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 232:Middlewares/Third_Party/FatFs/src/ff.c **** 0x41,0x49,0x4F,0x55,0xA5,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 233:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 234:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 235:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 236:Middlewares/Third_Party/FatFs/src/ff.c **** 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, \ + 237:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 238:Middlewares/Third_Party/FatFs/src/ff.c **** + 239:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 866 /* Russian */ + 240:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 241:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 242:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 243:Middlewares/Third_Party/FatFs/src/ff.c **** 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 244:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 245:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 246:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, \ + 247:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, \ + 248:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF0,0xF2,0xF2,0xF4,0xF4,0xF6,0xF6,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF} + 249:Middlewares/Third_Party/FatFs/src/ff.c **** + 250:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 869 /* Greek 2 */ + 251:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 252:Middlewares/Third_Party/FatFs/src/ff.c **** #define _EXCVT {0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, \ + 253:Middlewares/Third_Party/FatFs/src/ff.c **** 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x86,0x9C,0x8D,0x8F,0x90, \ + 254:Middlewares/Third_Party/FatFs/src/ff.c **** 0x91,0x90,0x92,0x95,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, \ + 255:Middlewares/Third_Party/FatFs/src/ff.c **** 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, \ + 256:Middlewares/Third_Party/FatFs/src/ff.c **** 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, \ + 257:Middlewares/Third_Party/FatFs/src/ff.c **** 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xA4,0xA5,0xA6,0xD9,0xDA,0xDB,0xDC,0xA7,0xA8,0xDF, \ + 258:Middlewares/Third_Party/FatFs/src/ff.c **** 0xA9,0xAA,0xAC,0xAD,0xB5,0xB6,0xB7,0xB8,0xBD,0xBE,0xC6,0xC7,0xCF,0xCF,0xD0,0xEF, \ + 259:Middlewares/Third_Party/FatFs/src/ff.c **** 0xF0,0xF1,0xD1,0xD2,0xD3,0xF5,0xD4,0xF7,0xF8,0xF9,0xD5,0x96,0x95,0x98,0xFE,0xFF} + ARM GAS /tmp/cc5lWXRL.s page 6 + + + 260:Middlewares/Third_Party/FatFs/src/ff.c **** + 261:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _CODE_PAGE == 1 /* ASCII (for only non-LFN cfg) */ + 262:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 + 263:Middlewares/Third_Party/FatFs/src/ff.c **** #error Cannot enable LFN without valid code page. + 264:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 265:Middlewares/Third_Party/FatFs/src/ff.c **** #define _DF1S 0 + 266:Middlewares/Third_Party/FatFs/src/ff.c **** + 267:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 268:Middlewares/Third_Party/FatFs/src/ff.c **** #error Unknown code page + 269:Middlewares/Third_Party/FatFs/src/ff.c **** + 270:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 271:Middlewares/Third_Party/FatFs/src/ff.c **** + 272:Middlewares/Third_Party/FatFs/src/ff.c **** + 273:Middlewares/Third_Party/FatFs/src/ff.c **** /* Character code support macros */ + 274:Middlewares/Third_Party/FatFs/src/ff.c **** #define IsUpper(c) (((c)>='A')&&((c)<='Z')) + 275:Middlewares/Third_Party/FatFs/src/ff.c **** #define IsLower(c) (((c)>='a')&&((c)<='z')) + 276:Middlewares/Third_Party/FatFs/src/ff.c **** #define IsDigit(c) (((c)>='0')&&((c)<='9')) + 277:Middlewares/Third_Party/FatFs/src/ff.c **** + 278:Middlewares/Third_Party/FatFs/src/ff.c **** #if _DF1S != 0 /* Code page is DBCS */ + 279:Middlewares/Third_Party/FatFs/src/ff.c **** + 280:Middlewares/Third_Party/FatFs/src/ff.c **** #ifdef _DF2S /* Two 1st byte areas */ + 281:Middlewares/Third_Party/FatFs/src/ff.c **** #define IsDBCS1(c) (((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E) || ((BYTE)(c) >= _DF2S && (BYTE)(c) + 282:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* One 1st byte area */ + 283:Middlewares/Third_Party/FatFs/src/ff.c **** #define IsDBCS1(c) ((BYTE)(c) >= _DF1S && (BYTE)(c) <= _DF1E) + 284:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 285:Middlewares/Third_Party/FatFs/src/ff.c **** + 286:Middlewares/Third_Party/FatFs/src/ff.c **** #ifdef _DS3S /* Three 2nd byte areas */ + 287:Middlewares/Third_Party/FatFs/src/ff.c **** #define IsDBCS2(c) (((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c) + 288:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Two 2nd byte areas */ + 289:Middlewares/Third_Party/FatFs/src/ff.c **** #define IsDBCS2(c) (((BYTE)(c) >= _DS1S && (BYTE)(c) <= _DS1E) || ((BYTE)(c) >= _DS2S && (BYTE)(c) + 290:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 291:Middlewares/Third_Party/FatFs/src/ff.c **** + 292:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Code page is SBCS */ + 293:Middlewares/Third_Party/FatFs/src/ff.c **** + 294:Middlewares/Third_Party/FatFs/src/ff.c **** #define IsDBCS1(c) 0 + 295:Middlewares/Third_Party/FatFs/src/ff.c **** #define IsDBCS2(c) 0 + 296:Middlewares/Third_Party/FatFs/src/ff.c **** + 297:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _DF1S */ + 298:Middlewares/Third_Party/FatFs/src/ff.c **** + 299:Middlewares/Third_Party/FatFs/src/ff.c **** + 300:Middlewares/Third_Party/FatFs/src/ff.c **** /* Additional file attribute bits for internal use */ + 301:Middlewares/Third_Party/FatFs/src/ff.c **** #define AM_VOL 0x08 /* Volume label */ + 302:Middlewares/Third_Party/FatFs/src/ff.c **** #define AM_LFN 0x0F /* LFN entry */ + 303:Middlewares/Third_Party/FatFs/src/ff.c **** #define AM_MASK 0x3F /* Mask of defined bits */ + 304:Middlewares/Third_Party/FatFs/src/ff.c **** + 305:Middlewares/Third_Party/FatFs/src/ff.c **** + 306:Middlewares/Third_Party/FatFs/src/ff.c **** /* Additional file access control and file status flags for internal use */ + 307:Middlewares/Third_Party/FatFs/src/ff.c **** #define FA_SEEKEND 0x20 /* Seek to end of the file on file open */ + 308:Middlewares/Third_Party/FatFs/src/ff.c **** #define FA_MODIFIED 0x40 /* File has been modified */ + 309:Middlewares/Third_Party/FatFs/src/ff.c **** #define FA_DIRTY 0x80 /* FIL.buf[] needs to be written-back */ + 310:Middlewares/Third_Party/FatFs/src/ff.c **** + 311:Middlewares/Third_Party/FatFs/src/ff.c **** + 312:Middlewares/Third_Party/FatFs/src/ff.c **** /* Name status flags in fn[] */ + 313:Middlewares/Third_Party/FatFs/src/ff.c **** #define NSFLAG 11 /* Index of the name status byte */ + 314:Middlewares/Third_Party/FatFs/src/ff.c **** #define NS_LOSS 0x01 /* Out of 8.3 format */ + 315:Middlewares/Third_Party/FatFs/src/ff.c **** #define NS_LFN 0x02 /* Force to create LFN entry */ + 316:Middlewares/Third_Party/FatFs/src/ff.c **** #define NS_LAST 0x04 /* Last segment */ + ARM GAS /tmp/cc5lWXRL.s page 7 + + + 317:Middlewares/Third_Party/FatFs/src/ff.c **** #define NS_BODY 0x08 /* Lower case flag (body) */ + 318:Middlewares/Third_Party/FatFs/src/ff.c **** #define NS_EXT 0x10 /* Lower case flag (ext) */ + 319:Middlewares/Third_Party/FatFs/src/ff.c **** #define NS_DOT 0x20 /* Dot entry */ + 320:Middlewares/Third_Party/FatFs/src/ff.c **** #define NS_NOLFN 0x40 /* Do not find LFN */ + 321:Middlewares/Third_Party/FatFs/src/ff.c **** #define NS_NONAME 0x80 /* Not followed */ + 322:Middlewares/Third_Party/FatFs/src/ff.c **** + 323:Middlewares/Third_Party/FatFs/src/ff.c **** + 324:Middlewares/Third_Party/FatFs/src/ff.c **** /* Limits and boundaries */ + 325:Middlewares/Third_Party/FatFs/src/ff.c **** #define MAX_DIR 0x200000 /* Max size of FAT directory */ + 326:Middlewares/Third_Party/FatFs/src/ff.c **** #define MAX_DIR_EX 0x10000000 /* Max size of exFAT directory */ + 327:Middlewares/Third_Party/FatFs/src/ff.c **** #define MAX_FAT12 0xFF5 /* Max FAT12 clusters (differs from specs, but correct for real DOS/Windo + 328:Middlewares/Third_Party/FatFs/src/ff.c **** #define MAX_FAT16 0xFFF5 /* Max FAT16 clusters (differs from specs, but correct for real DOS/Wind + 329:Middlewares/Third_Party/FatFs/src/ff.c **** #define MAX_FAT32 0x0FFFFFF5 /* Max FAT32 clusters (not specified, practical limit) */ + 330:Middlewares/Third_Party/FatFs/src/ff.c **** #define MAX_EXFAT 0x7FFFFFFD /* Max exFAT clusters (differs from specs, implementation limit) */ + 331:Middlewares/Third_Party/FatFs/src/ff.c **** + 332:Middlewares/Third_Party/FatFs/src/ff.c **** + 333:Middlewares/Third_Party/FatFs/src/ff.c **** /* FatFs refers the FAT structure as simple byte array instead of structure member + 334:Middlewares/Third_Party/FatFs/src/ff.c **** / because the C structure is not binary compatible between different platforms */ + 335:Middlewares/Third_Party/FatFs/src/ff.c **** + 336:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_JmpBoot 0 /* x86 jump instruction (3-byte) */ + 337:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_OEMName 3 /* OEM name (8-byte) */ + 338:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_BytsPerSec 11 /* Sector size [byte] (WORD) */ + 339:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_SecPerClus 13 /* Cluster size [sector] (BYTE) */ + 340:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_RsvdSecCnt 14 /* Size of reserved area [sector] (WORD) */ + 341:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_NumFATs 16 /* Number of FATs (BYTE) */ + 342:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_RootEntCnt 17 /* Size of root directory area for FAT12/16 [entry] (WORD) */ + 343:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_TotSec16 19 /* Volume size (16-bit) [sector] (WORD) */ + 344:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_Media 21 /* Media descriptor byte (BYTE) */ + 345:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_FATSz16 22 /* FAT size (16-bit) [sector] (WORD) */ + 346:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_SecPerTrk 24 /* Track size for int13h [sector] (WORD) */ + 347:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_NumHeads 26 /* Number of heads for int13h (WORD) */ + 348:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_HiddSec 28 /* Volume offset from top of the drive (DWORD) */ + 349:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_TotSec32 32 /* Volume size (32-bit) [sector] (DWORD) */ + 350:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_DrvNum 36 /* Physical drive number for int13h (BYTE) */ + 351:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_NTres 37 /* Error flag (BYTE) */ + 352:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_BootSig 38 /* Extended boot signature (BYTE) */ + 353:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_VolID 39 /* Volume serial number (DWORD) */ + 354:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_VolLab 43 /* Volume label string (8-byte) */ + 355:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_FilSysType 54 /* File system type string (8-byte) */ + 356:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_BootCode 62 /* Boot code (448-byte) */ + 357:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_55AA 510 /* Signature word (WORD) */ + 358:Middlewares/Third_Party/FatFs/src/ff.c **** + 359:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_FATSz32 36 /* FAT32: FAT size [sector] (DWORD) */ + 360:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_ExtFlags32 40 /* FAT32: Extended flags (WORD) */ + 361:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_FSVer32 42 /* FAT32: File system version (WORD) */ + 362:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_RootClus32 44 /* FAT32: Root directory cluster (DWORD) */ + 363:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_FSInfo32 48 /* FAT32: Offset of FSINFO sector (WORD) */ + 364:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_BkBootSec32 50 /* FAT32: Offset of backup boot sector (WORD) */ + 365:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_DrvNum32 64 /* FAT32: Physical drive number for int13h (BYTE) */ + 366:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_NTres32 65 /* FAT32: Error flag (BYTE) */ + 367:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_BootSig32 66 /* FAT32: Extended boot signature (BYTE) */ + 368:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_VolID32 67 /* FAT32: Volume serial number (DWORD) */ + 369:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_VolLab32 71 /* FAT32: Volume label string (8-byte) */ + 370:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_FilSysType32 82 /* FAT32: File system type string (8-byte) */ + 371:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_BootCode32 90 /* FAT32: Boot code (420-byte) */ + 372:Middlewares/Third_Party/FatFs/src/ff.c **** + 373:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_ZeroedEx 11 /* exFAT: MBZ field (53-byte) */ + ARM GAS /tmp/cc5lWXRL.s page 8 + + + 374:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_VolOfsEx 64 /* exFAT: Volume offset from top of the drive [sector] (QWORD) */ + 375:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_TotSecEx 72 /* exFAT: Volume size [sector] (QWORD) */ + 376:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_FatOfsEx 80 /* exFAT: FAT offset from top of the volume [sector] (DWORD) */ + 377:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_FatSzEx 84 /* exFAT: FAT size [sector] (DWORD) */ + 378:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_DataOfsEx 88 /* exFAT: Data offset from top of the volume [sector] (DWORD) */ + 379:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_NumClusEx 92 /* exFAT: Number of clusters (DWORD) */ + 380:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_RootClusEx 96 /* exFAT: Root directory start cluster (DWORD) */ + 381:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_VolIDEx 100 /* exFAT: Volume serial number (DWORD) */ + 382:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_FSVerEx 104 /* exFAT: File system version (WORD) */ + 383:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_VolFlagEx 106 /* exFAT: Volume flags (BYTE) */ + 384:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_ActFatEx 107 /* exFAT: Active FAT flags (BYTE) */ + 385:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_BytsPerSecEx 108 /* exFAT: Log2 of sector size in unit of byte (BYTE) */ + 386:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_SecPerClusEx 109 /* exFAT: Log2 of cluster size in unit of sector (BYTE) */ + 387:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_NumFATsEx 110 /* exFAT: Number of FATs (BYTE) */ + 388:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_DrvNumEx 111 /* exFAT: Physical drive number for int13h (BYTE) */ + 389:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_PercInUseEx 112 /* exFAT: Percent in use (BYTE) */ + 390:Middlewares/Third_Party/FatFs/src/ff.c **** #define BPB_RsvdEx 113 /* exFAT: Reserved (7-byte) */ + 391:Middlewares/Third_Party/FatFs/src/ff.c **** #define BS_BootCodeEx 120 /* exFAT: Boot code (390-byte) */ + 392:Middlewares/Third_Party/FatFs/src/ff.c **** + 393:Middlewares/Third_Party/FatFs/src/ff.c **** #define DIR_Name 0 /* Short file name (11-byte) */ + 394:Middlewares/Third_Party/FatFs/src/ff.c **** #define DIR_Attr 11 /* Attribute (BYTE) */ + 395:Middlewares/Third_Party/FatFs/src/ff.c **** #define DIR_NTres 12 /* Lower case flag (BYTE) */ + 396:Middlewares/Third_Party/FatFs/src/ff.c **** #define DIR_CrtTime10 13 /* Created time sub-second (BYTE) */ + 397:Middlewares/Third_Party/FatFs/src/ff.c **** #define DIR_CrtTime 14 /* Created time (DWORD) */ + 398:Middlewares/Third_Party/FatFs/src/ff.c **** #define DIR_LstAccDate 18 /* Last accessed date (WORD) */ + 399:Middlewares/Third_Party/FatFs/src/ff.c **** #define DIR_FstClusHI 20 /* Higher 16-bit of first cluster (WORD) */ + 400:Middlewares/Third_Party/FatFs/src/ff.c **** #define DIR_ModTime 22 /* Modified time (DWORD) */ + 401:Middlewares/Third_Party/FatFs/src/ff.c **** #define DIR_FstClusLO 26 /* Lower 16-bit of first cluster (WORD) */ + 402:Middlewares/Third_Party/FatFs/src/ff.c **** #define DIR_FileSize 28 /* File size (DWORD) */ + 403:Middlewares/Third_Party/FatFs/src/ff.c **** #define LDIR_Ord 0 /* LFN: LFN order and LLE flag (BYTE) */ + 404:Middlewares/Third_Party/FatFs/src/ff.c **** #define LDIR_Attr 11 /* LFN: LFN attribute (BYTE) */ + 405:Middlewares/Third_Party/FatFs/src/ff.c **** #define LDIR_Type 12 /* LFN: Entry type (BYTE) */ + 406:Middlewares/Third_Party/FatFs/src/ff.c **** #define LDIR_Chksum 13 /* LFN: Checksum of the SFN (BYTE) */ + 407:Middlewares/Third_Party/FatFs/src/ff.c **** #define LDIR_FstClusLO 26 /* LFN: MBZ field (WORD) */ + 408:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_Type 0 /* exFAT: Type of exFAT directory entry (BYTE) */ + 409:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_NumLabel 1 /* exFAT: Number of volume label characters (BYTE) */ + 410:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_Label 2 /* exFAT: Volume label (11-WORD) */ + 411:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_CaseSum 4 /* exFAT: Sum of case conversion table (DWORD) */ + 412:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_NumSec 1 /* exFAT: Number of secondary entries (BYTE) */ + 413:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_SetSum 2 /* exFAT: Sum of the set of directory entries (WORD) */ + 414:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_Attr 4 /* exFAT: File attribute (WORD) */ + 415:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_CrtTime 8 /* exFAT: Created time (DWORD) */ + 416:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_ModTime 12 /* exFAT: Modified time (DWORD) */ + 417:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_AccTime 16 /* exFAT: Last accessed time (DWORD) */ + 418:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_CrtTime10 20 /* exFAT: Created time subsecond (BYTE) */ + 419:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_ModTime10 21 /* exFAT: Modified time subsecond (BYTE) */ + 420:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_CrtTZ 22 /* exFAT: Created timezone (BYTE) */ + 421:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_ModTZ 23 /* exFAT: Modified timezone (BYTE) */ + 422:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_AccTZ 24 /* exFAT: Last accessed timezone (BYTE) */ + 423:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_GenFlags 33 /* exFAT: General secondary flags (WORD) */ + 424:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_NumName 35 /* exFAT: Number of file name characters (BYTE) */ + 425:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_NameHash 36 /* exFAT: Hash of file name (WORD) */ + 426:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_ValidFileSize 40 /* exFAT: Valid file size (QWORD) */ + 427:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_FstClus 52 /* exFAT: First cluster of the file data (DWORD) */ + 428:Middlewares/Third_Party/FatFs/src/ff.c **** #define XDIR_FileSize 56 /* exFAT: File/Directory size (QWORD) */ + 429:Middlewares/Third_Party/FatFs/src/ff.c **** + 430:Middlewares/Third_Party/FatFs/src/ff.c **** #define SZDIRE 32 /* Size of a directory entry */ + ARM GAS /tmp/cc5lWXRL.s page 9 + + + 431:Middlewares/Third_Party/FatFs/src/ff.c **** #define DDEM 0xE5 /* Deleted directory entry mark set to DIR_Name[0] */ + 432:Middlewares/Third_Party/FatFs/src/ff.c **** #define RDDEM 0x05 /* Replacement of the character collides with DDEM */ + 433:Middlewares/Third_Party/FatFs/src/ff.c **** #define LLEF 0x40 /* Last long entry flag in LDIR_Ord */ + 434:Middlewares/Third_Party/FatFs/src/ff.c **** + 435:Middlewares/Third_Party/FatFs/src/ff.c **** #define FSI_LeadSig 0 /* FAT32 FSI: Leading signature (DWORD) */ + 436:Middlewares/Third_Party/FatFs/src/ff.c **** #define FSI_StrucSig 484 /* FAT32 FSI: Structure signature (DWORD) */ + 437:Middlewares/Third_Party/FatFs/src/ff.c **** #define FSI_Free_Count 488 /* FAT32 FSI: Number of free clusters (DWORD) */ + 438:Middlewares/Third_Party/FatFs/src/ff.c **** #define FSI_Nxt_Free 492 /* FAT32 FSI: Last allocated cluster (DWORD) */ + 439:Middlewares/Third_Party/FatFs/src/ff.c **** + 440:Middlewares/Third_Party/FatFs/src/ff.c **** #define MBR_Table 446 /* MBR: Offset of partition table in the MBR */ + 441:Middlewares/Third_Party/FatFs/src/ff.c **** #define SZ_PTE 16 /* MBR: Size of a partition table entry */ + 442:Middlewares/Third_Party/FatFs/src/ff.c **** #define PTE_Boot 0 /* MBR PTE: Boot indicator */ + 443:Middlewares/Third_Party/FatFs/src/ff.c **** #define PTE_StHead 1 /* MBR PTE: Start head */ + 444:Middlewares/Third_Party/FatFs/src/ff.c **** #define PTE_StSec 2 /* MBR PTE: Start sector */ + 445:Middlewares/Third_Party/FatFs/src/ff.c **** #define PTE_StCyl 3 /* MBR PTE: Start cylinder */ + 446:Middlewares/Third_Party/FatFs/src/ff.c **** #define PTE_System 4 /* MBR PTE: System ID */ + 447:Middlewares/Third_Party/FatFs/src/ff.c **** #define PTE_EdHead 5 /* MBR PTE: End head */ + 448:Middlewares/Third_Party/FatFs/src/ff.c **** #define PTE_EdSec 6 /* MBR PTE: End sector */ + 449:Middlewares/Third_Party/FatFs/src/ff.c **** #define PTE_EdCyl 7 /* MBR PTE: End cylinder */ + 450:Middlewares/Third_Party/FatFs/src/ff.c **** #define PTE_StLba 8 /* MBR PTE: Start in LBA */ + 451:Middlewares/Third_Party/FatFs/src/ff.c **** #define PTE_SizLba 12 /* MBR PTE: Size in LBA */ + 452:Middlewares/Third_Party/FatFs/src/ff.c **** + 453:Middlewares/Third_Party/FatFs/src/ff.c **** + 454:Middlewares/Third_Party/FatFs/src/ff.c **** /* Post process after fatal error on file operation */ + 455:Middlewares/Third_Party/FatFs/src/ff.c **** #define ABORT(fs, res) { fp->err = (BYTE)(res); LEAVE_FF(fs, res); } + 456:Middlewares/Third_Party/FatFs/src/ff.c **** + 457:Middlewares/Third_Party/FatFs/src/ff.c **** + 458:Middlewares/Third_Party/FatFs/src/ff.c **** /* Reentrancy related */ + 459:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + 460:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN == 1 + 461:Middlewares/Third_Party/FatFs/src/ff.c **** #error Static LFN work area cannot be used at thread-safe configuration + 462:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 463:Middlewares/Third_Party/FatFs/src/ff.c **** #define ENTER_FF(fs) { if (!lock_fs(fs)) return FR_TIMEOUT; } + 464:Middlewares/Third_Party/FatFs/src/ff.c **** #define LEAVE_FF(fs, res) { unlock_fs(fs, res); return res; } + 465:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 466:Middlewares/Third_Party/FatFs/src/ff.c **** #define ENTER_FF(fs) + 467:Middlewares/Third_Party/FatFs/src/ff.c **** #define LEAVE_FF(fs, res) return res + 468:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 469:Middlewares/Third_Party/FatFs/src/ff.c **** + 470:Middlewares/Third_Party/FatFs/src/ff.c **** + 471:Middlewares/Third_Party/FatFs/src/ff.c **** /* Definitions of volume - partition conversion */ + 472:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MULTI_PARTITION + 473:Middlewares/Third_Party/FatFs/src/ff.c **** #define LD2PD(vol) VolToPart[vol].pd /* Get physical drive number */ + 474:Middlewares/Third_Party/FatFs/src/ff.c **** #define LD2PT(vol) VolToPart[vol].pt /* Get partition index */ + 475:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 476:Middlewares/Third_Party/FatFs/src/ff.c **** #define LD2PD(vol) (BYTE)(vol) /* Each logical drive is bound to the same physical drive number */ + 477:Middlewares/Third_Party/FatFs/src/ff.c **** #define LD2PT(vol) 0 /* Find first valid partition or in SFD */ + 478:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 479:Middlewares/Third_Party/FatFs/src/ff.c **** + 480:Middlewares/Third_Party/FatFs/src/ff.c **** + 481:Middlewares/Third_Party/FatFs/src/ff.c **** /* Definitions of sector size */ + 482:Middlewares/Third_Party/FatFs/src/ff.c **** #if (_MAX_SS < _MIN_SS) || (_MAX_SS != 512 && _MAX_SS != 1024 && _MAX_SS != 2048 && _MAX_SS != 4096 + 483:Middlewares/Third_Party/FatFs/src/ff.c **** #error Wrong sector size configuration + 484:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 485:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS == _MIN_SS + 486:Middlewares/Third_Party/FatFs/src/ff.c **** #define SS(fs) ((UINT)_MAX_SS) /* Fixed sector size */ + 487:Middlewares/Third_Party/FatFs/src/ff.c **** #else + ARM GAS /tmp/cc5lWXRL.s page 10 + + + 488:Middlewares/Third_Party/FatFs/src/ff.c **** #define SS(fs) ((fs)->ssize) /* Variable sector size */ + 489:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 490:Middlewares/Third_Party/FatFs/src/ff.c **** + 491:Middlewares/Third_Party/FatFs/src/ff.c **** + 492:Middlewares/Third_Party/FatFs/src/ff.c **** /* Timestamp */ + 493:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_NORTC == 1 + 494:Middlewares/Third_Party/FatFs/src/ff.c **** #if _NORTC_YEAR < 1980 || _NORTC_YEAR > 2107 || _NORTC_MON < 1 || _NORTC_MON > 12 || _NORTC_MDAY < + 495:Middlewares/Third_Party/FatFs/src/ff.c **** #error Invalid _FS_NORTC settings + 496:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 497:Middlewares/Third_Party/FatFs/src/ff.c **** #define GET_FATTIME() ((DWORD)(_NORTC_YEAR - 1980) << 25 | (DWORD)_NORTC_MON << 21 | (DWORD)_NORTC_ + 498:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 499:Middlewares/Third_Party/FatFs/src/ff.c **** #define GET_FATTIME() get_fattime() + 500:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 501:Middlewares/Third_Party/FatFs/src/ff.c **** + 502:Middlewares/Third_Party/FatFs/src/ff.c **** + 503:Middlewares/Third_Party/FatFs/src/ff.c **** /* File lock controls */ + 504:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 505:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_READONLY + 506:Middlewares/Third_Party/FatFs/src/ff.c **** #error _FS_LOCK must be 0 at read-only configuration + 507:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 508:Middlewares/Third_Party/FatFs/src/ff.c **** typedef struct { + 509:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; /* Object ID 1, volume (NULL:blank entry) */ + 510:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clu; /* Object ID 2, containing directory (0:root) */ + 511:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ofs; /* Object ID 3, offset in the directory */ + 512:Middlewares/Third_Party/FatFs/src/ff.c **** WORD ctr; /* Object open counter, 0:none, 0x01..0xFF:read mode open count, 0x100:write mode */ + 513:Middlewares/Third_Party/FatFs/src/ff.c **** } FILESEM; + 514:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 515:Middlewares/Third_Party/FatFs/src/ff.c **** + 516:Middlewares/Third_Party/FatFs/src/ff.c **** + 517:Middlewares/Third_Party/FatFs/src/ff.c **** + 518:Middlewares/Third_Party/FatFs/src/ff.c **** + 519:Middlewares/Third_Party/FatFs/src/ff.c **** + 520:Middlewares/Third_Party/FatFs/src/ff.c **** /*-------------------------------------------------------------------------- + 521:Middlewares/Third_Party/FatFs/src/ff.c **** + 522:Middlewares/Third_Party/FatFs/src/ff.c **** Module Private Work Area + 523:Middlewares/Third_Party/FatFs/src/ff.c **** + 524:Middlewares/Third_Party/FatFs/src/ff.c **** ---------------------------------------------------------------------------*/ + 525:Middlewares/Third_Party/FatFs/src/ff.c **** + 526:Middlewares/Third_Party/FatFs/src/ff.c **** /* Remark: Variables defined here without initial value shall be guaranteed + 527:Middlewares/Third_Party/FatFs/src/ff.c **** / zero/null at start-up. If not, the linker option or start-up routine is + 528:Middlewares/Third_Party/FatFs/src/ff.c **** / not compliance with C standard. */ + 529:Middlewares/Third_Party/FatFs/src/ff.c **** + 530:Middlewares/Third_Party/FatFs/src/ff.c **** #if _VOLUMES < 1 || _VOLUMES > 10 + 531:Middlewares/Third_Party/FatFs/src/ff.c **** #error Wrong _VOLUMES setting + 532:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 533:Middlewares/Third_Party/FatFs/src/ff.c **** static FATFS *FatFs[_VOLUMES]; /* Pointer to the file system objects (logical drives) */ + 534:Middlewares/Third_Party/FatFs/src/ff.c **** static WORD Fsid; /* File system mount ID */ + 535:Middlewares/Third_Party/FatFs/src/ff.c **** + 536:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH != 0 && _VOLUMES >= 2 + 537:Middlewares/Third_Party/FatFs/src/ff.c **** static BYTE CurrVol; /* Current drive */ + 538:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 539:Middlewares/Third_Party/FatFs/src/ff.c **** + 540:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 541:Middlewares/Third_Party/FatFs/src/ff.c **** static FILESEM Files[_FS_LOCK]; /* Open object lock semaphores */ + 542:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 543:Middlewares/Third_Party/FatFs/src/ff.c **** + 544:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN == 0 /* Non-LFN configuration */ + ARM GAS /tmp/cc5lWXRL.s page 11 + + + 545:Middlewares/Third_Party/FatFs/src/ff.c **** #define DEF_NAMBUF + 546:Middlewares/Third_Party/FatFs/src/ff.c **** #define INIT_NAMBUF(fs) + 547:Middlewares/Third_Party/FatFs/src/ff.c **** #define FREE_NAMBUF() + 548:Middlewares/Third_Party/FatFs/src/ff.c **** + 549:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* LFN configuration */ + 550:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_LFN < 12 || _MAX_LFN > 255 + 551:Middlewares/Third_Party/FatFs/src/ff.c **** #error Wrong _MAX_LFN value + 552:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 553:Middlewares/Third_Party/FatFs/src/ff.c **** #define MAXDIRB(nc) ((nc + 44U) / 15 * SZDIRE) + 554:Middlewares/Third_Party/FatFs/src/ff.c **** + 555:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN == 1 /* LFN enabled with static working buffer */ + 556:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 557:Middlewares/Third_Party/FatFs/src/ff.c **** static BYTE DirBuf[MAXDIRB(_MAX_LFN)]; /* Directory entry block scratchpad buffer */ + 558:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 559:Middlewares/Third_Party/FatFs/src/ff.c **** static WCHAR LfnBuf[_MAX_LFN + 1]; /* LFN enabled with static working buffer */ + 560:Middlewares/Third_Party/FatFs/src/ff.c **** #define DEF_NAMBUF + 561:Middlewares/Third_Party/FatFs/src/ff.c **** #define INIT_NAMBUF(fs) + 562:Middlewares/Third_Party/FatFs/src/ff.c **** #define FREE_NAMBUF() + 563:Middlewares/Third_Party/FatFs/src/ff.c **** + 564:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _USE_LFN == 2 /* LFN enabled with dynamic working buffer on the stack */ + 565:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 566:Middlewares/Third_Party/FatFs/src/ff.c **** #define DEF_NAMBUF WCHAR lbuf[_MAX_LFN+1]; BYTE dbuf[MAXDIRB(_MAX_LFN)]; + 567:Middlewares/Third_Party/FatFs/src/ff.c **** #define INIT_NAMBUF(fs) { (fs)->lfnbuf = lbuf; (fs)->dirbuf = dbuf; } + 568:Middlewares/Third_Party/FatFs/src/ff.c **** #define FREE_NAMBUF() + 569:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 570:Middlewares/Third_Party/FatFs/src/ff.c **** #define DEF_NAMBUF WCHAR lbuf[_MAX_LFN+1]; + 571:Middlewares/Third_Party/FatFs/src/ff.c **** #define INIT_NAMBUF(fs) { (fs)->lfnbuf = lbuf; } + 572:Middlewares/Third_Party/FatFs/src/ff.c **** #define FREE_NAMBUF() + 573:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 574:Middlewares/Third_Party/FatFs/src/ff.c **** + 575:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _USE_LFN == 3 /* LFN enabled with dynamic working buffer on the heap */ + 576:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 577:Middlewares/Third_Party/FatFs/src/ff.c **** #define DEF_NAMBUF WCHAR *lfn; + 578:Middlewares/Third_Party/FatFs/src/ff.c **** #define INIT_NAMBUF(fs) { lfn = ff_memalloc((_MAX_LFN+1)*2 + MAXDIRB(_MAX_LFN)); if (!lfn) LEAVE_FF + 579:Middlewares/Third_Party/FatFs/src/ff.c **** #define FREE_NAMBUF() ff_memfree(lfn) + 580:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 581:Middlewares/Third_Party/FatFs/src/ff.c **** #define DEF_NAMBUF WCHAR *lfn; + 582:Middlewares/Third_Party/FatFs/src/ff.c **** #define INIT_NAMBUF(fs) { lfn = ff_memalloc((_MAX_LFN+1)*2); if (!lfn) LEAVE_FF(fs, FR_NOT_ENOUGH_C + 583:Middlewares/Third_Party/FatFs/src/ff.c **** #define FREE_NAMBUF() ff_memfree(lfn) + 584:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 585:Middlewares/Third_Party/FatFs/src/ff.c **** + 586:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 587:Middlewares/Third_Party/FatFs/src/ff.c **** #error Wrong _USE_LFN setting + 588:Middlewares/Third_Party/FatFs/src/ff.c **** + 589:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 590:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* else _USE_LFN == 0 */ + 591:Middlewares/Third_Party/FatFs/src/ff.c **** + 592:Middlewares/Third_Party/FatFs/src/ff.c **** #ifdef _EXCVT + 593:Middlewares/Third_Party/FatFs/src/ff.c **** static const BYTE ExCvt[] = _EXCVT; /* Upper conversion table for SBCS extended characters */ + 594:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 595:Middlewares/Third_Party/FatFs/src/ff.c **** + 596:Middlewares/Third_Party/FatFs/src/ff.c **** + 597:Middlewares/Third_Party/FatFs/src/ff.c **** + 598:Middlewares/Third_Party/FatFs/src/ff.c **** + 599:Middlewares/Third_Party/FatFs/src/ff.c **** + 600:Middlewares/Third_Party/FatFs/src/ff.c **** + 601:Middlewares/Third_Party/FatFs/src/ff.c **** /*-------------------------------------------------------------------------- + ARM GAS /tmp/cc5lWXRL.s page 12 + + + 602:Middlewares/Third_Party/FatFs/src/ff.c **** + 603:Middlewares/Third_Party/FatFs/src/ff.c **** Module Private Functions + 604:Middlewares/Third_Party/FatFs/src/ff.c **** + 605:Middlewares/Third_Party/FatFs/src/ff.c **** ---------------------------------------------------------------------------*/ + 606:Middlewares/Third_Party/FatFs/src/ff.c **** + 607:Middlewares/Third_Party/FatFs/src/ff.c **** + 608:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 609:Middlewares/Third_Party/FatFs/src/ff.c **** /* Load/Store multi-byte word in the FAT structure */ + 610:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 611:Middlewares/Third_Party/FatFs/src/ff.c **** + 612:Middlewares/Third_Party/FatFs/src/ff.c **** static + 613:Middlewares/Third_Party/FatFs/src/ff.c **** WORD ld_word (const BYTE* ptr) /* Load a 2-byte little-endian word */ + 614:Middlewares/Third_Party/FatFs/src/ff.c **** { + 28 .loc 1 614 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 615:Middlewares/Third_Party/FatFs/src/ff.c **** WORD rv; + 33 .loc 1 615 2 view .LVU1 + 616:Middlewares/Third_Party/FatFs/src/ff.c **** + 617:Middlewares/Third_Party/FatFs/src/ff.c **** rv = ptr[1]; + 34 .loc 1 617 2 view .LVU2 + 35 .loc 1 617 10 is_stmt 0 view .LVU3 + 36 0000 4278 ldrb r2, [r0, #1] @ zero_extendqisi2 + 37 .LVL1: + 618:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[0]; + 38 .loc 1 618 2 is_stmt 1 view .LVU4 + 39 .loc 1 618 20 is_stmt 0 view .LVU5 + 40 0002 0078 ldrb r0, [r0] @ zero_extendqisi2 + 41 .LVL2: + 619:Middlewares/Third_Party/FatFs/src/ff.c **** return rv; + 42 .loc 1 619 2 is_stmt 1 view .LVU6 + 620:Middlewares/Third_Party/FatFs/src/ff.c **** } + 43 .loc 1 620 1 is_stmt 0 view .LVU7 + 44 0004 40EA0220 orr r0, r0, r2, lsl #8 + 45 .LVL3: + 46 .loc 1 620 1 view .LVU8 + 47 0008 7047 bx lr + 48 .cfi_endproc + 49 .LFE1183: + 51 .section .text.ld_dword,"ax",%progbits + 52 .align 1 + 53 .syntax unified + 54 .thumb + 55 .thumb_func + 56 .fpu fpv5-d16 + 58 ld_dword: + 59 .LVL4: + 60 .LFB1184: + 621:Middlewares/Third_Party/FatFs/src/ff.c **** + 622:Middlewares/Third_Party/FatFs/src/ff.c **** static + 623:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ld_dword (const BYTE* ptr) /* Load a 4-byte little-endian word */ + 624:Middlewares/Third_Party/FatFs/src/ff.c **** { + 61 .loc 1 624 1 is_stmt 1 view -0 + 62 .cfi_startproc + 63 @ args = 0, pretend = 0, frame = 0 + ARM GAS /tmp/cc5lWXRL.s page 13 + + + 64 @ frame_needed = 0, uses_anonymous_args = 0 + 65 @ link register save eliminated. + 625:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD rv; + 66 .loc 1 625 2 view .LVU10 + 626:Middlewares/Third_Party/FatFs/src/ff.c **** + 627:Middlewares/Third_Party/FatFs/src/ff.c **** rv = ptr[3]; + 67 .loc 1 627 2 view .LVU11 + 68 .loc 1 627 10 is_stmt 0 view .LVU12 + 69 0000 C278 ldrb r2, [r0, #3] @ zero_extendqisi2 + 70 .LVL5: + 628:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[2]; + 71 .loc 1 628 2 is_stmt 1 view .LVU13 + 72 .loc 1 628 20 is_stmt 0 view .LVU14 + 73 0002 8378 ldrb r3, [r0, #2] @ zero_extendqisi2 + 74 .loc 1 628 5 view .LVU15 + 75 0004 43EA0222 orr r2, r3, r2, lsl #8 + 76 .LVL6: + 629:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[1]; + 77 .loc 1 629 2 is_stmt 1 view .LVU16 + 78 .loc 1 629 20 is_stmt 0 view .LVU17 + 79 0008 4378 ldrb r3, [r0, #1] @ zero_extendqisi2 + 80 .loc 1 629 5 view .LVU18 + 81 000a 43EA0223 orr r3, r3, r2, lsl #8 + 82 .LVL7: + 630:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[0]; + 83 .loc 1 630 2 is_stmt 1 view .LVU19 + 84 .loc 1 630 20 is_stmt 0 view .LVU20 + 85 000e 0078 ldrb r0, [r0] @ zero_extendqisi2 + 86 .LVL8: + 631:Middlewares/Third_Party/FatFs/src/ff.c **** return rv; + 87 .loc 1 631 2 is_stmt 1 view .LVU21 + 632:Middlewares/Third_Party/FatFs/src/ff.c **** } + 88 .loc 1 632 1 is_stmt 0 view .LVU22 + 89 0010 40EA0320 orr r0, r0, r3, lsl #8 + 90 .LVL9: + 91 .loc 1 632 1 view .LVU23 + 92 0014 7047 bx lr + 93 .cfi_endproc + 94 .LFE1184: + 96 .section .text.st_word,"ax",%progbits + 97 .align 1 + 98 .syntax unified + 99 .thumb + 100 .thumb_func + 101 .fpu fpv5-d16 + 103 st_word: + 104 .LVL10: + 105 .LFB1185: + 633:Middlewares/Third_Party/FatFs/src/ff.c **** + 634:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 635:Middlewares/Third_Party/FatFs/src/ff.c **** static + 636:Middlewares/Third_Party/FatFs/src/ff.c **** QWORD ld_qword (const BYTE* ptr) /* Load an 8-byte little-endian word */ + 637:Middlewares/Third_Party/FatFs/src/ff.c **** { + 638:Middlewares/Third_Party/FatFs/src/ff.c **** QWORD rv; + 639:Middlewares/Third_Party/FatFs/src/ff.c **** + 640:Middlewares/Third_Party/FatFs/src/ff.c **** rv = ptr[7]; + 641:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[6]; + ARM GAS /tmp/cc5lWXRL.s page 14 + + + 642:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[5]; + 643:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[4]; + 644:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[3]; + 645:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[2]; + 646:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[1]; + 647:Middlewares/Third_Party/FatFs/src/ff.c **** rv = rv << 8 | ptr[0]; + 648:Middlewares/Third_Party/FatFs/src/ff.c **** return rv; + 649:Middlewares/Third_Party/FatFs/src/ff.c **** } + 650:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 651:Middlewares/Third_Party/FatFs/src/ff.c **** + 652:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 653:Middlewares/Third_Party/FatFs/src/ff.c **** static + 654:Middlewares/Third_Party/FatFs/src/ff.c **** void st_word (BYTE* ptr, WORD val) /* Store a 2-byte word in little-endian */ + 655:Middlewares/Third_Party/FatFs/src/ff.c **** { + 106 .loc 1 655 1 is_stmt 1 view -0 + 107 .cfi_startproc + 108 @ args = 0, pretend = 0, frame = 0 + 109 @ frame_needed = 0, uses_anonymous_args = 0 + 110 @ link register save eliminated. + 656:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 111 .loc 1 656 2 view .LVU25 + 112 .loc 1 656 9 is_stmt 0 view .LVU26 + 113 0000 0170 strb r1, [r0] + 114 .loc 1 656 22 is_stmt 1 view .LVU27 + 115 .LVL11: + 657:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; + 116 .loc 1 657 2 view .LVU28 + 117 .loc 1 657 11 is_stmt 0 view .LVU29 + 118 0002 090A lsrs r1, r1, #8 + 119 .LVL12: + 120 .loc 1 657 9 view .LVU30 + 121 0004 4170 strb r1, [r0, #1] + 658:Middlewares/Third_Party/FatFs/src/ff.c **** } + 122 .loc 1 658 1 view .LVU31 + 123 0006 7047 bx lr + 124 .cfi_endproc + 125 .LFE1185: + 127 .section .text.st_dword,"ax",%progbits + 128 .align 1 + 129 .syntax unified + 130 .thumb + 131 .thumb_func + 132 .fpu fpv5-d16 + 134 st_dword: + 135 .LVL13: + 136 .LFB1186: + 659:Middlewares/Third_Party/FatFs/src/ff.c **** + 660:Middlewares/Third_Party/FatFs/src/ff.c **** static + 661:Middlewares/Third_Party/FatFs/src/ff.c **** void st_dword (BYTE* ptr, DWORD val) /* Store a 4-byte word in little-endian */ + 662:Middlewares/Third_Party/FatFs/src/ff.c **** { + 137 .loc 1 662 1 is_stmt 1 view -0 + 138 .cfi_startproc + 139 @ args = 0, pretend = 0, frame = 0 + 140 @ frame_needed = 0, uses_anonymous_args = 0 + 141 @ link register save eliminated. + 663:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 142 .loc 1 663 2 view .LVU33 + ARM GAS /tmp/cc5lWXRL.s page 15 + + + 143 .loc 1 663 9 is_stmt 0 view .LVU34 + 144 0000 0170 strb r1, [r0] + 145 .loc 1 663 22 is_stmt 1 view .LVU35 + 146 .LVL14: + 664:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 147 .loc 1 664 2 view .LVU36 + 148 .loc 1 664 11 is_stmt 0 view .LVU37 + 149 0002 C1F30723 ubfx r3, r1, #8, #8 + 150 .loc 1 664 9 view .LVU38 + 151 0006 4370 strb r3, [r0, #1] + 152 .loc 1 664 22 is_stmt 1 view .LVU39 + 153 .LVL15: + 665:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 154 .loc 1 665 2 view .LVU40 + 155 .loc 1 665 11 is_stmt 0 view .LVU41 + 156 0008 C1F30743 ubfx r3, r1, #16, #8 + 157 .loc 1 665 9 view .LVU42 + 158 000c 8370 strb r3, [r0, #2] + 159 .loc 1 665 22 is_stmt 1 view .LVU43 + 160 .LVL16: + 666:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; + 161 .loc 1 666 2 view .LVU44 + 162 .loc 1 666 11 is_stmt 0 view .LVU45 + 163 000e 090E lsrs r1, r1, #24 + 164 .LVL17: + 165 .loc 1 666 9 view .LVU46 + 166 0010 C170 strb r1, [r0, #3] + 667:Middlewares/Third_Party/FatFs/src/ff.c **** } + 167 .loc 1 667 1 view .LVU47 + 168 0012 7047 bx lr + 169 .cfi_endproc + 170 .LFE1186: + 172 .section .text.mem_cpy,"ax",%progbits + 173 .align 1 + 174 .syntax unified + 175 .thumb + 176 .thumb_func + 177 .fpu fpv5-d16 + 179 mem_cpy: + 180 .LVL18: + 181 .LFB1187: + 668:Middlewares/Third_Party/FatFs/src/ff.c **** + 669:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 670:Middlewares/Third_Party/FatFs/src/ff.c **** static + 671:Middlewares/Third_Party/FatFs/src/ff.c **** void st_qword (BYTE* ptr, QWORD val) /* Store an 8-byte word in little-endian */ + 672:Middlewares/Third_Party/FatFs/src/ff.c **** { + 673:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 674:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 675:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 676:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 677:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 678:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 679:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; val >>= 8; + 680:Middlewares/Third_Party/FatFs/src/ff.c **** *ptr++ = (BYTE)val; + 681:Middlewares/Third_Party/FatFs/src/ff.c **** } + 682:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 683:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ + ARM GAS /tmp/cc5lWXRL.s page 16 + + + 684:Middlewares/Third_Party/FatFs/src/ff.c **** + 685:Middlewares/Third_Party/FatFs/src/ff.c **** + 686:Middlewares/Third_Party/FatFs/src/ff.c **** + 687:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 688:Middlewares/Third_Party/FatFs/src/ff.c **** /* String functions */ + 689:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 690:Middlewares/Third_Party/FatFs/src/ff.c **** + 691:Middlewares/Third_Party/FatFs/src/ff.c **** /* Copy memory to memory */ + 692:Middlewares/Third_Party/FatFs/src/ff.c **** static + 693:Middlewares/Third_Party/FatFs/src/ff.c **** void mem_cpy (void* dst, const void* src, UINT cnt) { + 182 .loc 1 693 53 is_stmt 1 view -0 + 183 .cfi_startproc + 184 @ args = 0, pretend = 0, frame = 0 + 185 @ frame_needed = 0, uses_anonymous_args = 0 + 186 @ link register save eliminated. + 694:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *d = (BYTE*)dst; + 187 .loc 1 694 2 view .LVU49 + 695:Middlewares/Third_Party/FatFs/src/ff.c **** const BYTE *s = (const BYTE*)src; + 188 .loc 1 695 2 view .LVU50 + 696:Middlewares/Third_Party/FatFs/src/ff.c **** + 697:Middlewares/Third_Party/FatFs/src/ff.c **** if (cnt) { + 189 .loc 1 697 2 view .LVU51 + 190 .loc 1 697 5 is_stmt 0 view .LVU52 + 191 0000 9446 mov ip, r2 + 192 0002 32B1 cbz r2, .L5 + 193 .LVL19: + 194 .L7: + 698:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 195 .loc 1 698 3 is_stmt 1 discriminator 1 view .LVU53 + 699:Middlewares/Third_Party/FatFs/src/ff.c **** *d++ = *s++; + 196 .loc 1 699 4 discriminator 1 view .LVU54 + 197 .loc 1 699 11 is_stmt 0 discriminator 1 view .LVU55 + 198 0004 0A78 ldrb r2, [r1] @ zero_extendqisi2 + 199 0006 0131 adds r1, r1, #1 + 200 .LVL20: + 201 .loc 1 699 9 discriminator 1 view .LVU56 + 202 0008 0270 strb r2, [r0] + 203 000a 0130 adds r0, r0, #1 + 204 .LVL21: + 700:Middlewares/Third_Party/FatFs/src/ff.c **** } while (--cnt); + 205 .loc 1 700 11 is_stmt 1 discriminator 1 view .LVU57 + 206 .loc 1 700 3 is_stmt 0 discriminator 1 view .LVU58 + 207 000c BCF1010C subs ip, ip, #1 + 208 .LVL22: + 209 .loc 1 700 3 discriminator 1 view .LVU59 + 210 0010 F8D1 bne .L7 + 211 .LVL23: + 212 .L5: + 701:Middlewares/Third_Party/FatFs/src/ff.c **** } + 702:Middlewares/Third_Party/FatFs/src/ff.c **** } + 213 .loc 1 702 1 view .LVU60 + 214 0012 7047 bx lr + 215 .cfi_endproc + 216 .LFE1187: + 218 .section .text.mem_set,"ax",%progbits + 219 .align 1 + 220 .syntax unified + ARM GAS /tmp/cc5lWXRL.s page 17 + + + 221 .thumb + 222 .thumb_func + 223 .fpu fpv5-d16 + 225 mem_set: + 226 .LFB1188: + 703:Middlewares/Third_Party/FatFs/src/ff.c **** + 704:Middlewares/Third_Party/FatFs/src/ff.c **** /* Fill memory block */ + 705:Middlewares/Third_Party/FatFs/src/ff.c **** static + 706:Middlewares/Third_Party/FatFs/src/ff.c **** void mem_set (void* dst, int val, UINT cnt) { + 227 .loc 1 706 45 is_stmt 1 view -0 + 228 .cfi_startproc + 229 @ args = 0, pretend = 0, frame = 0 + 230 @ frame_needed = 0, uses_anonymous_args = 0 + 231 @ link register save eliminated. + 232 .LVL24: + 233 .L9: + 707:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *d = (BYTE*)dst; + 708:Middlewares/Third_Party/FatFs/src/ff.c **** + 709:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 234 .loc 1 709 2 discriminator 1 view .LVU62 + 710:Middlewares/Third_Party/FatFs/src/ff.c **** *d++ = (BYTE)val; + 235 .loc 1 710 3 discriminator 1 view .LVU63 + 236 .loc 1 710 8 is_stmt 0 discriminator 1 view .LVU64 + 237 0000 0170 strb r1, [r0] + 238 0002 0130 adds r0, r0, #1 + 711:Middlewares/Third_Party/FatFs/src/ff.c **** } while (--cnt); + 239 .loc 1 711 10 is_stmt 1 discriminator 1 view .LVU65 + 240 .LVL25: + 241 .loc 1 711 2 is_stmt 0 discriminator 1 view .LVU66 + 242 0004 013A subs r2, r2, #1 + 243 .LVL26: + 244 .loc 1 711 2 discriminator 1 view .LVU67 + 245 0006 FBD1 bne .L9 + 712:Middlewares/Third_Party/FatFs/src/ff.c **** } + 246 .loc 1 712 1 view .LVU68 + 247 0008 7047 bx lr + 248 .cfi_endproc + 249 .LFE1188: + 251 .section .text.mem_cmp,"ax",%progbits + 252 .align 1 + 253 .syntax unified + 254 .thumb + 255 .thumb_func + 256 .fpu fpv5-d16 + 258 mem_cmp: + 259 .LVL27: + 260 .LFB1189: + 713:Middlewares/Third_Party/FatFs/src/ff.c **** + 714:Middlewares/Third_Party/FatFs/src/ff.c **** /* Compare memory block */ + 715:Middlewares/Third_Party/FatFs/src/ff.c **** static + 716:Middlewares/Third_Party/FatFs/src/ff.c **** int mem_cmp (const void* dst, const void* src, UINT cnt) { /* ZR:same, NZ:different */ + 261 .loc 1 716 58 is_stmt 1 view -0 + 262 .cfi_startproc + 263 @ args = 0, pretend = 0, frame = 0 + 264 @ frame_needed = 0, uses_anonymous_args = 0 + 265 @ link register save eliminated. + 266 .loc 1 716 58 is_stmt 0 view .LVU70 + ARM GAS /tmp/cc5lWXRL.s page 18 + + + 267 0000 8446 mov ip, r0 + 717:Middlewares/Third_Party/FatFs/src/ff.c **** const BYTE *d = (const BYTE *)dst, *s = (const BYTE *)src; + 268 .loc 1 717 2 is_stmt 1 view .LVU71 + 269 .LVL28: + 718:Middlewares/Third_Party/FatFs/src/ff.c **** int r = 0; + 270 .loc 1 718 2 view .LVU72 + 271 .L12: + 719:Middlewares/Third_Party/FatFs/src/ff.c **** + 720:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 272 .loc 1 720 2 discriminator 2 view .LVU73 + 721:Middlewares/Third_Party/FatFs/src/ff.c **** r = *d++ - *s++; + 273 .loc 1 721 3 discriminator 2 view .LVU74 + 274 .loc 1 721 7 is_stmt 0 discriminator 2 view .LVU75 + 275 0002 9CF80000 ldrb r0, [ip] @ zero_extendqisi2 + 276 0006 0CF1010C add ip, ip, #1 + 277 .LVL29: + 278 .loc 1 721 14 discriminator 2 view .LVU76 + 279 000a 0B78 ldrb r3, [r1] @ zero_extendqisi2 + 280 000c 0131 adds r1, r1, #1 + 281 .LVL30: + 282 .loc 1 721 5 discriminator 2 view .LVU77 + 283 000e C01A subs r0, r0, r3 + 284 .LVL31: + 722:Middlewares/Third_Party/FatFs/src/ff.c **** } while (--cnt && r == 0); + 285 .loc 1 722 10 is_stmt 1 discriminator 2 view .LVU78 + 286 .loc 1 722 2 is_stmt 0 discriminator 2 view .LVU79 + 287 0010 013A subs r2, r2, #1 + 288 .LVL32: + 289 .loc 1 722 2 discriminator 2 view .LVU80 + 290 0012 01D0 beq .L10 + 291 .loc 1 722 17 discriminator 1 view .LVU81 + 292 0014 0028 cmp r0, #0 + 293 0016 F4D0 beq .L12 + 294 .L10: + 723:Middlewares/Third_Party/FatFs/src/ff.c **** + 724:Middlewares/Third_Party/FatFs/src/ff.c **** return r; + 725:Middlewares/Third_Party/FatFs/src/ff.c **** } + 295 .loc 1 725 1 view .LVU82 + 296 0018 7047 bx lr + 297 .cfi_endproc + 298 .LFE1189: + 300 .section .text.chk_chr,"ax",%progbits + 301 .align 1 + 302 .syntax unified + 303 .thumb + 304 .thumb_func + 305 .fpu fpv5-d16 + 307 chk_chr: + 308 .LVL33: + 309 .LFB1190: + 726:Middlewares/Third_Party/FatFs/src/ff.c **** + 727:Middlewares/Third_Party/FatFs/src/ff.c **** /* Check if chr is contained in the string */ + 728:Middlewares/Third_Party/FatFs/src/ff.c **** static + 729:Middlewares/Third_Party/FatFs/src/ff.c **** int chk_chr (const char* str, int chr) { /* NZ:contained, ZR:not contained */ + 310 .loc 1 729 40 is_stmt 1 view -0 + 311 .cfi_startproc + 312 @ args = 0, pretend = 0, frame = 0 + ARM GAS /tmp/cc5lWXRL.s page 19 + + + 313 @ frame_needed = 0, uses_anonymous_args = 0 + 314 @ link register save eliminated. + 315 .loc 1 729 40 is_stmt 0 view .LVU84 + 316 0000 0346 mov r3, r0 + 730:Middlewares/Third_Party/FatFs/src/ff.c **** while (*str && *str != chr) str++; + 317 .loc 1 730 2 is_stmt 1 view .LVU85 + 318 .loc 1 730 8 is_stmt 0 view .LVU86 + 319 0002 00E0 b .L14 + 320 .LVL34: + 321 .L16: + 322 .loc 1 730 30 is_stmt 1 discriminator 3 view .LVU87 + 323 .loc 1 730 33 is_stmt 0 discriminator 3 view .LVU88 + 324 0004 0133 adds r3, r3, #1 + 325 .LVL35: + 326 .L14: + 327 .loc 1 730 8 is_stmt 1 discriminator 1 view .LVU89 + 328 .loc 1 730 9 is_stmt 0 discriminator 1 view .LVU90 + 329 0006 1878 ldrb r0, [r3] @ zero_extendqisi2 + 330 .loc 1 730 8 discriminator 1 view .LVU91 + 331 0008 08B1 cbz r0, .L15 + 332 .loc 1 730 14 discriminator 2 view .LVU92 + 333 000a 8842 cmp r0, r1 + 334 000c FAD1 bne .L16 + 335 .L15: + 731:Middlewares/Third_Party/FatFs/src/ff.c **** return *str; + 336 .loc 1 731 2 is_stmt 1 view .LVU93 + 732:Middlewares/Third_Party/FatFs/src/ff.c **** } + 337 .loc 1 732 1 is_stmt 0 view .LVU94 + 338 000e 7047 bx lr + 339 .cfi_endproc + 340 .LFE1190: + 342 .section .text.chk_lock,"ax",%progbits + 343 .align 1 + 344 .syntax unified + 345 .thumb + 346 .thumb_func + 347 .fpu fpv5-d16 + 349 chk_lock: + 350 .LVL36: + 351 .LFB1191: + 733:Middlewares/Third_Party/FatFs/src/ff.c **** + 734:Middlewares/Third_Party/FatFs/src/ff.c **** + 735:Middlewares/Third_Party/FatFs/src/ff.c **** + 736:Middlewares/Third_Party/FatFs/src/ff.c **** + 737:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + 738:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 739:Middlewares/Third_Party/FatFs/src/ff.c **** /* Request/Release grant to access the volume */ + 740:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 741:Middlewares/Third_Party/FatFs/src/ff.c **** static + 742:Middlewares/Third_Party/FatFs/src/ff.c **** int lock_fs ( + 743:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs /* File system object */ + 744:Middlewares/Third_Party/FatFs/src/ff.c **** ) + 745:Middlewares/Third_Party/FatFs/src/ff.c **** { + 746:Middlewares/Third_Party/FatFs/src/ff.c **** return (fs && ff_req_grant(fs->sobj)) ? 1 : 0; + 747:Middlewares/Third_Party/FatFs/src/ff.c **** } + 748:Middlewares/Third_Party/FatFs/src/ff.c **** + 749:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 20 + + + 750:Middlewares/Third_Party/FatFs/src/ff.c **** static + 751:Middlewares/Third_Party/FatFs/src/ff.c **** void unlock_fs ( + 752:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs, /* File system object */ + 753:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res /* Result code to be returned */ + 754:Middlewares/Third_Party/FatFs/src/ff.c **** ) + 755:Middlewares/Third_Party/FatFs/src/ff.c **** { + 756:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs && res != FR_NOT_ENABLED && res != FR_INVALID_DRIVE && res != FR_TIMEOUT) { + 757:Middlewares/Third_Party/FatFs/src/ff.c **** ff_rel_grant(fs->sobj); + 758:Middlewares/Third_Party/FatFs/src/ff.c **** } + 759:Middlewares/Third_Party/FatFs/src/ff.c **** } + 760:Middlewares/Third_Party/FatFs/src/ff.c **** + 761:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 762:Middlewares/Third_Party/FatFs/src/ff.c **** + 763:Middlewares/Third_Party/FatFs/src/ff.c **** + 764:Middlewares/Third_Party/FatFs/src/ff.c **** + 765:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 766:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 767:Middlewares/Third_Party/FatFs/src/ff.c **** /* File lock control functions */ + 768:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 769:Middlewares/Third_Party/FatFs/src/ff.c **** + 770:Middlewares/Third_Party/FatFs/src/ff.c **** static + 771:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT chk_lock ( /* Check if the file can be accessed */ + 772:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Directory object pointing the file to be checked */ + 773:Middlewares/Third_Party/FatFs/src/ff.c **** int acc /* Desired access type (0:Read, 1:Write, 2:Delete/Rename) */ + 774:Middlewares/Third_Party/FatFs/src/ff.c **** ) + 775:Middlewares/Third_Party/FatFs/src/ff.c **** { + 352 .loc 1 775 1 is_stmt 1 view -0 + 353 .cfi_startproc + 354 @ args = 0, pretend = 0, frame = 0 + 355 @ frame_needed = 0, uses_anonymous_args = 0 + 356 @ link register save eliminated. + 357 .loc 1 775 1 is_stmt 0 view .LVU96 + 358 0000 10B4 push {r4} + 359 .LCFI0: + 360 .cfi_def_cfa_offset 4 + 361 .cfi_offset 4, -4 + 776:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, be; + 362 .loc 1 776 2 is_stmt 1 view .LVU97 + 777:Middlewares/Third_Party/FatFs/src/ff.c **** + 778:Middlewares/Third_Party/FatFs/src/ff.c **** /* Search file semaphore table */ + 779:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = be = 0; i < _FS_LOCK; i++) { + 363 .loc 1 779 2 view .LVU98 + 364 .LVL37: + 365 .loc 1 779 14 is_stmt 0 view .LVU99 + 366 0002 4FF0000C mov ip, #0 + 367 .loc 1 779 9 view .LVU100 + 368 0006 6346 mov r3, ip + 369 .loc 1 779 2 view .LVU101 + 370 0008 02E0 b .L18 + 371 .LVL38: + 372 .L25: + 780:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs) { /* Existing entry */ + 781:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == dp->obj.fs && /* Check if the object matched with an open object */ + 782:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].clu == dp->obj.sclust && + 783:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ofs == dp->dptr) break; + 784:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Blank entry */ + 785:Middlewares/Third_Party/FatFs/src/ff.c **** be = 1; + ARM GAS /tmp/cc5lWXRL.s page 21 + + + 373 .loc 1 785 7 view .LVU102 + 374 000a 4FF0010C mov ip, #1 + 375 .LVL39: + 376 .L19: + 779:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs) { /* Existing entry */ + 377 .loc 1 779 33 is_stmt 1 discriminator 2 view .LVU103 + 779:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs) { /* Existing entry */ + 378 .loc 1 779 34 is_stmt 0 discriminator 2 view .LVU104 + 379 000e 0133 adds r3, r3, #1 + 380 .LVL40: + 381 .L18: + 779:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs) { /* Existing entry */ + 382 .loc 1 779 19 is_stmt 1 discriminator 1 view .LVU105 + 779:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs) { /* Existing entry */ + 383 .loc 1 779 2 is_stmt 0 discriminator 1 view .LVU106 + 384 0010 012B cmp r3, #1 + 385 0012 15D8 bhi .L20 + 780:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs) { /* Existing entry */ + 386 .loc 1 780 3 is_stmt 1 view .LVU107 + 780:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs) { /* Existing entry */ + 387 .loc 1 780 15 is_stmt 0 view .LVU108 + 388 0014 1A01 lsls r2, r3, #4 + 389 0016 184C ldr r4, .L32 + 390 0018 A258 ldr r2, [r4, r2] + 780:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs) { /* Existing entry */ + 391 .loc 1 780 6 view .LVU109 + 392 001a 002A cmp r2, #0 + 393 001c F5D0 beq .L25 + 781:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].clu == dp->obj.sclust && + 394 .loc 1 781 4 is_stmt 1 view .LVU110 + 781:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].clu == dp->obj.sclust && + 395 .loc 1 781 30 is_stmt 0 view .LVU111 + 396 001e 0468 ldr r4, [r0] + 781:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].clu == dp->obj.sclust && + 397 .loc 1 781 7 view .LVU112 + 398 0020 A242 cmp r2, r4 + 399 0022 F4D1 bne .L19 + 782:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ofs == dp->dptr) break; + 400 .loc 1 782 13 discriminator 1 view .LVU113 + 401 0024 144A ldr r2, .L32 + 402 0026 02EB0312 add r2, r2, r3, lsl #4 + 403 002a 5468 ldr r4, [r2, #4] + 782:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ofs == dp->dptr) break; + 404 .loc 1 782 28 discriminator 1 view .LVU114 + 405 002c 8268 ldr r2, [r0, #8] + 781:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].clu == dp->obj.sclust && + 406 .loc 1 781 34 discriminator 1 view .LVU115 + 407 002e 9442 cmp r4, r2 + 408 0030 EDD1 bne .L19 + 783:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Blank entry */ + 409 .loc 1 783 13 view .LVU116 + 410 0032 114A ldr r2, .L32 + 411 0034 02EB0312 add r2, r2, r3, lsl #4 + 412 0038 9468 ldr r4, [r2, #8] + 783:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Blank entry */ + 413 .loc 1 783 23 view .LVU117 + 414 003a 4269 ldr r2, [r0, #20] + ARM GAS /tmp/cc5lWXRL.s page 22 + + + 782:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ofs == dp->dptr) break; + 415 .loc 1 782 36 view .LVU118 + 416 003c 9442 cmp r4, r2 + 417 003e E6D1 bne .L19 + 418 .L20: + 786:Middlewares/Third_Party/FatFs/src/ff.c **** } + 787:Middlewares/Third_Party/FatFs/src/ff.c **** } + 788:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == _FS_LOCK) { /* The object is not opened */ + 419 .loc 1 788 2 is_stmt 1 view .LVU119 + 420 .loc 1 788 5 is_stmt 0 view .LVU120 + 421 0040 022B cmp r3, #2 + 422 0042 0BD0 beq .L30 + 789:Middlewares/Third_Party/FatFs/src/ff.c **** return (be || acc == 2) ? FR_OK : FR_TOO_MANY_OPEN_FILES; /* Is there a blank entry for new objec + 790:Middlewares/Third_Party/FatFs/src/ff.c **** } + 791:Middlewares/Third_Party/FatFs/src/ff.c **** + 792:Middlewares/Third_Party/FatFs/src/ff.c **** /* The object has been opened. Reject any open against writing file and all write mode open */ + 793:Middlewares/Third_Party/FatFs/src/ff.c **** return (acc || Files[i].ctr == 0x100) ? FR_LOCKED : FR_OK; + 423 .loc 1 793 2 is_stmt 1 view .LVU121 + 424 .loc 1 793 52 is_stmt 0 view .LVU122 + 425 0044 B1B9 cbnz r1, .L27 + 426 .loc 1 793 25 discriminator 2 view .LVU123 + 427 0046 0C4A ldr r2, .L32 + 428 0048 02EB0313 add r3, r2, r3, lsl #4 + 429 .LVL41: + 430 .loc 1 793 25 discriminator 2 view .LVU124 + 431 004c 9B89 ldrh r3, [r3, #12] + 432 .loc 1 793 14 discriminator 2 view .LVU125 + 433 004e B3F5807F cmp r3, #256 + 434 0052 0DD0 beq .L31 + 435 .loc 1 793 52 view .LVU126 + 436 0054 0020 movs r0, #0 + 437 .LVL42: + 438 .L24: + 794:Middlewares/Third_Party/FatFs/src/ff.c **** } + 439 .loc 1 794 1 view .LVU127 + 440 0056 5DF8044B ldr r4, [sp], #4 + 441 .LCFI1: + 442 .cfi_remember_state + 443 .cfi_restore 4 + 444 .cfi_def_cfa_offset 0 + 445 005a 7047 bx lr + 446 .LVL43: + 447 .L30: + 448 .LCFI2: + 449 .cfi_restore_state + 789:Middlewares/Third_Party/FatFs/src/ff.c **** return (be || acc == 2) ? FR_OK : FR_TOO_MANY_OPEN_FILES; /* Is there a blank entry for new objec + 450 .loc 1 789 3 is_stmt 1 view .LVU128 + 789:Middlewares/Third_Party/FatFs/src/ff.c **** return (be || acc == 2) ? FR_OK : FR_TOO_MANY_OPEN_FILES; /* Is there a blank entry for new objec + 451 .loc 1 789 14 is_stmt 0 view .LVU129 + 452 005c 0229 cmp r1, #2 + 453 005e 14BF ite ne + 454 0060 6346 movne r3, ip + 455 0062 4CF00103 orreq r3, ip, #1 + 456 .LVL44: + 789:Middlewares/Third_Party/FatFs/src/ff.c **** return (be || acc == 2) ? FR_OK : FR_TOO_MANY_OPEN_FILES; /* Is there a blank entry for new objec + 457 .loc 1 789 35 view .LVU130 + 458 0066 0BB1 cbz r3, .L26 + ARM GAS /tmp/cc5lWXRL.s page 23 + + + 459 0068 0020 movs r0, #0 + 460 .LVL45: + 789:Middlewares/Third_Party/FatFs/src/ff.c **** return (be || acc == 2) ? FR_OK : FR_TOO_MANY_OPEN_FILES; /* Is there a blank entry for new objec + 461 .loc 1 789 35 view .LVU131 + 462 006a F4E7 b .L24 + 463 .LVL46: + 464 .L26: + 789:Middlewares/Third_Party/FatFs/src/ff.c **** return (be || acc == 2) ? FR_OK : FR_TOO_MANY_OPEN_FILES; /* Is there a blank entry for new objec + 465 .loc 1 789 35 view .LVU132 + 466 006c 1220 movs r0, #18 + 467 .LVL47: + 789:Middlewares/Third_Party/FatFs/src/ff.c **** return (be || acc == 2) ? FR_OK : FR_TOO_MANY_OPEN_FILES; /* Is there a blank entry for new objec + 468 .loc 1 789 35 view .LVU133 + 469 006e F2E7 b .L24 + 470 .LVL48: + 471 .L31: + 793:Middlewares/Third_Party/FatFs/src/ff.c **** } + 472 .loc 1 793 52 view .LVU134 + 473 0070 1020 movs r0, #16 + 474 .LVL49: + 793:Middlewares/Third_Party/FatFs/src/ff.c **** } + 475 .loc 1 793 52 view .LVU135 + 476 0072 F0E7 b .L24 + 477 .LVL50: + 478 .L27: + 793:Middlewares/Third_Party/FatFs/src/ff.c **** } + 479 .loc 1 793 52 view .LVU136 + 480 0074 1020 movs r0, #16 + 481 .LVL51: + 793:Middlewares/Third_Party/FatFs/src/ff.c **** } + 482 .loc 1 793 52 view .LVU137 + 483 0076 EEE7 b .L24 + 484 .L33: + 485 .align 2 + 486 .L32: + 487 0078 00000000 .word .LANCHOR0 + 488 .cfi_endproc + 489 .LFE1191: + 491 .section .text.enq_lock,"ax",%progbits + 492 .align 1 + 493 .syntax unified + 494 .thumb + 495 .thumb_func + 496 .fpu fpv5-d16 + 498 enq_lock: + 499 .LFB1192: + 795:Middlewares/Third_Party/FatFs/src/ff.c **** + 796:Middlewares/Third_Party/FatFs/src/ff.c **** + 797:Middlewares/Third_Party/FatFs/src/ff.c **** static + 798:Middlewares/Third_Party/FatFs/src/ff.c **** int enq_lock (void) /* Check if an entry is available for a new object */ + 799:Middlewares/Third_Party/FatFs/src/ff.c **** { + 500 .loc 1 799 1 is_stmt 1 view -0 + 501 .cfi_startproc + 502 @ args = 0, pretend = 0, frame = 0 + 503 @ frame_needed = 0, uses_anonymous_args = 0 + 504 @ link register save eliminated. + 800:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; + ARM GAS /tmp/cc5lWXRL.s page 24 + + + 505 .loc 1 800 2 view .LVU139 + 801:Middlewares/Third_Party/FatFs/src/ff.c **** + 802:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 506 .loc 1 802 2 view .LVU140 + 507 .LVL52: + 508 .loc 1 802 9 is_stmt 0 view .LVU141 + 509 0000 0020 movs r0, #0 + 510 .loc 1 802 2 view .LVU142 + 511 0002 00E0 b .L35 + 512 .LVL53: + 513 .L37: + 514 .loc 1 802 48 is_stmt 1 discriminator 4 view .LVU143 + 515 .loc 1 802 43 discriminator 4 view .LVU144 + 516 .loc 1 802 44 is_stmt 0 discriminator 4 view .LVU145 + 517 0004 0130 adds r0, r0, #1 + 518 .LVL54: + 519 .L35: + 520 .loc 1 802 14 is_stmt 1 discriminator 1 view .LVU146 + 521 .loc 1 802 2 is_stmt 0 discriminator 1 view .LVU147 + 522 0006 0128 cmp r0, #1 + 523 0008 04D8 bhi .L36 + 524 .loc 1 802 38 discriminator 3 view .LVU148 + 525 000a 0301 lsls r3, r0, #4 + 526 000c 034A ldr r2, .L38 + 527 000e D358 ldr r3, [r2, r3] + 528 .loc 1 802 27 discriminator 3 view .LVU149 + 529 0010 002B cmp r3, #0 + 530 0012 F7D1 bne .L37 + 531 .L36: + 803:Middlewares/Third_Party/FatFs/src/ff.c **** return (i == _FS_LOCK) ? 0 : 1; + 532 .loc 1 803 2 is_stmt 1 view .LVU150 + 804:Middlewares/Third_Party/FatFs/src/ff.c **** } + 533 .loc 1 804 1 is_stmt 0 view .LVU151 + 534 0014 0238 subs r0, r0, #2 + 535 .LVL55: + 536 .loc 1 804 1 view .LVU152 + 537 0016 18BF it ne + 538 0018 0120 movne r0, #1 + 539 .LVL56: + 540 .loc 1 804 1 view .LVU153 + 541 001a 7047 bx lr + 542 .L39: + 543 .align 2 + 544 .L38: + 545 001c 00000000 .word .LANCHOR0 + 546 .cfi_endproc + 547 .LFE1192: + 549 .section .text.inc_lock,"ax",%progbits + 550 .align 1 + 551 .syntax unified + 552 .thumb + 553 .thumb_func + 554 .fpu fpv5-d16 + 556 inc_lock: + 557 .LVL57: + 558 .LFB1193: + 805:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 25 + + + 806:Middlewares/Third_Party/FatFs/src/ff.c **** + 807:Middlewares/Third_Party/FatFs/src/ff.c **** static + 808:Middlewares/Third_Party/FatFs/src/ff.c **** UINT inc_lock ( /* Increment object open counter and returns its index (0:Internal error) */ + 809:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Directory object pointing the file to register or increment */ + 810:Middlewares/Third_Party/FatFs/src/ff.c **** int acc /* Desired access (0:Read, 1:Write, 2:Delete/Rename) */ + 811:Middlewares/Third_Party/FatFs/src/ff.c **** ) + 812:Middlewares/Third_Party/FatFs/src/ff.c **** { + 559 .loc 1 812 1 is_stmt 1 view -0 + 560 .cfi_startproc + 561 @ args = 0, pretend = 0, frame = 0 + 562 @ frame_needed = 0, uses_anonymous_args = 0 + 563 @ link register save eliminated. + 564 .loc 1 812 1 is_stmt 0 view .LVU155 + 565 0000 70B4 push {r4, r5, r6} + 566 .LCFI3: + 567 .cfi_def_cfa_offset 12 + 568 .cfi_offset 4, -12 + 569 .cfi_offset 5, -8 + 570 .cfi_offset 6, -4 + 813:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; + 571 .loc 1 813 2 is_stmt 1 view .LVU156 + 814:Middlewares/Third_Party/FatFs/src/ff.c **** + 815:Middlewares/Third_Party/FatFs/src/ff.c **** + 816:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK; i++) { /* Find the object */ + 572 .loc 1 816 2 view .LVU157 + 573 .LVL58: + 574 .loc 1 816 9 is_stmt 0 view .LVU158 + 575 0002 0023 movs r3, #0 + 576 .loc 1 816 2 view .LVU159 + 577 0004 00E0 b .L41 + 578 .LVL59: + 579 .L42: + 580 .loc 1 816 28 is_stmt 1 discriminator 2 view .LVU160 + 581 .loc 1 816 29 is_stmt 0 discriminator 2 view .LVU161 + 582 0006 0133 adds r3, r3, #1 + 583 .LVL60: + 584 .L41: + 585 .loc 1 816 14 is_stmt 1 discriminator 1 view .LVU162 + 586 .loc 1 816 2 is_stmt 0 discriminator 1 view .LVU163 + 587 0008 012B cmp r3, #1 + 588 000a 13D8 bhi .L43 + 817:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == dp->obj.fs && + 589 .loc 1 817 3 is_stmt 1 view .LVU164 + 590 .loc 1 817 15 is_stmt 0 view .LVU165 + 591 000c 1A01 lsls r2, r3, #4 + 592 000e 244C ldr r4, .L58 + 593 0010 A458 ldr r4, [r4, r2] + 594 .loc 1 817 29 view .LVU166 + 595 0012 0268 ldr r2, [r0] + 596 .loc 1 817 6 view .LVU167 + 597 0014 9442 cmp r4, r2 + 598 0016 F6D1 bne .L42 + 818:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].clu == dp->obj.sclust && + 599 .loc 1 818 12 discriminator 1 view .LVU168 + 600 0018 214A ldr r2, .L58 + 601 001a 02EB0312 add r2, r2, r3, lsl #4 + 602 001e 5468 ldr r4, [r2, #4] + ARM GAS /tmp/cc5lWXRL.s page 26 + + + 603 .loc 1 818 27 discriminator 1 view .LVU169 + 604 0020 8268 ldr r2, [r0, #8] + 817:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == dp->obj.fs && + 605 .loc 1 817 33 discriminator 1 view .LVU170 + 606 0022 9442 cmp r4, r2 + 607 0024 EFD1 bne .L42 + 819:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ofs == dp->dptr) break; + 608 .loc 1 819 12 view .LVU171 + 609 0026 1E4A ldr r2, .L58 + 610 0028 02EB0312 add r2, r2, r3, lsl #4 + 611 002c 9468 ldr r4, [r2, #8] + 612 .loc 1 819 22 view .LVU172 + 613 002e 4269 ldr r2, [r0, #20] + 818:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].clu == dp->obj.sclust && + 614 .loc 1 818 35 view .LVU173 + 615 0030 9442 cmp r4, r2 + 616 0032 E8D1 bne .L42 + 617 .L43: + 820:Middlewares/Third_Party/FatFs/src/ff.c **** } + 821:Middlewares/Third_Party/FatFs/src/ff.c **** + 822:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == _FS_LOCK) { /* Not opened. Register it as new. */ + 618 .loc 1 822 2 is_stmt 1 view .LVU174 + 619 .loc 1 822 5 is_stmt 0 view .LVU175 + 620 0034 022B cmp r3, #2 + 621 0036 0DD0 beq .L57 + 622 .LVL61: + 623 .L46: + 823:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 824:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == _FS_LOCK) return 0; /* No free entry to register (int err) */ + 825:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].fs = dp->obj.fs; + 826:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].clu = dp->obj.sclust; + 827:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ofs = dp->dptr; + 828:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ctr = 0; + 829:Middlewares/Third_Party/FatFs/src/ff.c **** } + 830:Middlewares/Third_Party/FatFs/src/ff.c **** + 831:Middlewares/Third_Party/FatFs/src/ff.c **** if (acc && Files[i].ctr) return 0; /* Access violation (int err) */ + 624 .loc 1 831 2 is_stmt 1 view .LVU176 + 625 .loc 1 831 5 is_stmt 0 view .LVU177 + 626 0038 21B1 cbz r1, .L50 + 627 .loc 1 831 21 discriminator 1 view .LVU178 + 628 003a 194A ldr r2, .L58 + 629 003c 02EB0312 add r2, r2, r3, lsl #4 + 630 0040 9289 ldrh r2, [r2, #12] + 631 .loc 1 831 10 discriminator 1 view .LVU179 + 632 0042 52BB cbnz r2, .L54 + 633 .L50: + 832:Middlewares/Third_Party/FatFs/src/ff.c **** + 833:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ctr = acc ? 0x100 : Files[i].ctr + 1; /* Set semaphore value */ + 634 .loc 1 833 2 is_stmt 1 view .LVU180 + 635 .loc 1 833 15 is_stmt 0 view .LVU181 + 636 0044 F1B9 cbnz r1, .L55 + 637 .loc 1 833 39 discriminator 1 view .LVU182 + 638 0046 164A ldr r2, .L58 + 639 0048 02EB0312 add r2, r2, r3, lsl #4 + 640 004c 9189 ldrh r1, [r2, #12] + 641 .LVL62: + 642 .loc 1 833 15 discriminator 1 view .LVU183 + ARM GAS /tmp/cc5lWXRL.s page 27 + + + 643 004e 0131 adds r1, r1, #1 + 644 0050 89B2 uxth r1, r1 + 645 0052 19E0 b .L51 + 646 .LVL63: + 647 .L57: + 823:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 648 .loc 1 823 10 view .LVU184 + 649 0054 0023 movs r3, #0 + 650 .LVL64: + 651 .L45: + 823:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 652 .loc 1 823 15 is_stmt 1 discriminator 1 view .LVU185 + 823:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 653 .loc 1 823 3 is_stmt 0 discriminator 1 view .LVU186 + 654 0056 012B cmp r3, #1 + 655 0058 05D8 bhi .L47 + 823:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 656 .loc 1 823 39 discriminator 3 view .LVU187 + 657 005a 1A01 lsls r2, r3, #4 + 658 005c 104C ldr r4, .L58 + 659 005e A258 ldr r2, [r4, r2] + 823:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 660 .loc 1 823 28 discriminator 3 view .LVU188 + 661 0060 0AB1 cbz r2, .L47 + 823:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 662 .loc 1 823 49 is_stmt 1 discriminator 4 view .LVU189 + 823:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 663 .loc 1 823 44 discriminator 4 view .LVU190 + 823:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 664 .loc 1 823 45 is_stmt 0 discriminator 4 view .LVU191 + 665 0062 0133 adds r3, r3, #1 + 666 .LVL65: + 823:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK && Files[i].fs; i++) ; + 667 .loc 1 823 45 discriminator 4 view .LVU192 + 668 0064 F7E7 b .L45 + 669 .L47: + 824:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].fs = dp->obj.fs; + 670 .loc 1 824 3 is_stmt 1 view .LVU193 + 824:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].fs = dp->obj.fs; + 671 .loc 1 824 6 is_stmt 0 view .LVU194 + 672 0066 022B cmp r3, #2 + 673 0068 15D0 beq .L53 + 825:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].clu = dp->obj.sclust; + 674 .loc 1 825 3 is_stmt 1 view .LVU195 + 825:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].clu = dp->obj.sclust; + 675 .loc 1 825 15 is_stmt 0 view .LVU196 + 676 006a 0D4D ldr r5, .L58 + 677 006c 1C01 lsls r4, r3, #4 + 678 006e 05EB0312 add r2, r5, r3, lsl #4 + 679 0072 0668 ldr r6, [r0] + 680 0074 2E51 str r6, [r5, r4] + 826:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ofs = dp->dptr; + 681 .loc 1 826 3 is_stmt 1 view .LVU197 + 826:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ofs = dp->dptr; + 682 .loc 1 826 25 is_stmt 0 view .LVU198 + 683 0076 8468 ldr r4, [r0, #8] + 826:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ofs = dp->dptr; + ARM GAS /tmp/cc5lWXRL.s page 28 + + + 684 .loc 1 826 16 view .LVU199 + 685 0078 5460 str r4, [r2, #4] + 827:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ctr = 0; + 686 .loc 1 827 3 is_stmt 1 view .LVU200 + 827:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ctr = 0; + 687 .loc 1 827 20 is_stmt 0 view .LVU201 + 688 007a 4069 ldr r0, [r0, #20] + 689 .LVL66: + 827:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ctr = 0; + 690 .loc 1 827 16 view .LVU202 + 691 007c 9060 str r0, [r2, #8] + 828:Middlewares/Third_Party/FatFs/src/ff.c **** } + 692 .loc 1 828 3 is_stmt 1 view .LVU203 + 828:Middlewares/Third_Party/FatFs/src/ff.c **** } + 693 .loc 1 828 16 is_stmt 0 view .LVU204 + 694 007e 0020 movs r0, #0 + 695 0080 9081 strh r0, [r2, #12] @ movhi + 696 0082 D9E7 b .L46 + 697 .L55: + 698 .loc 1 833 15 view .LVU205 + 699 0084 4FF48071 mov r1, #256 + 700 .LVL67: + 701 .L51: + 702 .loc 1 833 15 discriminator 4 view .LVU206 + 703 0088 054A ldr r2, .L58 + 704 008a 02EB0312 add r2, r2, r3, lsl #4 + 705 008e 9181 strh r1, [r2, #12] @ movhi + 834:Middlewares/Third_Party/FatFs/src/ff.c **** + 835:Middlewares/Third_Party/FatFs/src/ff.c **** return i + 1; + 706 .loc 1 835 2 is_stmt 1 discriminator 4 view .LVU207 + 707 .loc 1 835 11 is_stmt 0 discriminator 4 view .LVU208 + 708 0090 581C adds r0, r3, #1 + 709 .L40: + 836:Middlewares/Third_Party/FatFs/src/ff.c **** } + 710 .loc 1 836 1 view .LVU209 + 711 0092 70BC pop {r4, r5, r6} + 712 .LCFI4: + 713 .cfi_remember_state + 714 .cfi_restore 6 + 715 .cfi_restore 5 + 716 .cfi_restore 4 + 717 .cfi_def_cfa_offset 0 + 718 0094 7047 bx lr + 719 .LVL68: + 720 .L53: + 721 .LCFI5: + 722 .cfi_restore_state + 824:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].fs = dp->obj.fs; + 723 .loc 1 824 29 view .LVU210 + 724 0096 0020 movs r0, #0 + 725 .LVL69: + 824:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].fs = dp->obj.fs; + 726 .loc 1 824 29 view .LVU211 + 727 0098 FBE7 b .L40 + 728 .L54: + 831:Middlewares/Third_Party/FatFs/src/ff.c **** + 729 .loc 1 831 34 view .LVU212 + ARM GAS /tmp/cc5lWXRL.s page 29 + + + 730 009a 0020 movs r0, #0 + 731 009c F9E7 b .L40 + 732 .L59: + 733 009e 00BF .align 2 + 734 .L58: + 735 00a0 00000000 .word .LANCHOR0 + 736 .cfi_endproc + 737 .LFE1193: + 739 .section .text.dec_lock,"ax",%progbits + 740 .align 1 + 741 .syntax unified + 742 .thumb + 743 .thumb_func + 744 .fpu fpv5-d16 + 746 dec_lock: + 747 .LVL70: + 748 .LFB1194: + 837:Middlewares/Third_Party/FatFs/src/ff.c **** + 838:Middlewares/Third_Party/FatFs/src/ff.c **** + 839:Middlewares/Third_Party/FatFs/src/ff.c **** static + 840:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT dec_lock ( /* Decrement object open counter */ + 841:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i /* Semaphore index (1..) */ + 842:Middlewares/Third_Party/FatFs/src/ff.c **** ) + 843:Middlewares/Third_Party/FatFs/src/ff.c **** { + 749 .loc 1 843 1 is_stmt 1 view -0 + 750 .cfi_startproc + 751 @ args = 0, pretend = 0, frame = 0 + 752 @ frame_needed = 0, uses_anonymous_args = 0 + 753 @ link register save eliminated. + 844:Middlewares/Third_Party/FatFs/src/ff.c **** WORD n; + 754 .loc 1 844 2 view .LVU214 + 845:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 755 .loc 1 845 2 view .LVU215 + 846:Middlewares/Third_Party/FatFs/src/ff.c **** + 847:Middlewares/Third_Party/FatFs/src/ff.c **** + 848:Middlewares/Third_Party/FatFs/src/ff.c **** if (--i < _FS_LOCK) { /* Shift index number origin from 0 */ + 756 .loc 1 848 2 view .LVU216 + 757 .loc 1 848 5 is_stmt 0 view .LVU217 + 758 0000 0138 subs r0, r0, #1 + 759 .LVL71: + 760 .loc 1 848 5 view .LVU218 + 761 0002 0128 cmp r0, #1 + 762 0004 15D8 bhi .L63 + 849:Middlewares/Third_Party/FatFs/src/ff.c **** n = Files[i].ctr; + 763 .loc 1 849 3 is_stmt 1 view .LVU219 + 764 .loc 1 849 5 is_stmt 0 view .LVU220 + 765 0006 0D4B ldr r3, .L66 + 766 0008 03EB0013 add r3, r3, r0, lsl #4 + 767 000c 9B89 ldrh r3, [r3, #12] + 768 .LVL72: + 850:Middlewares/Third_Party/FatFs/src/ff.c **** if (n == 0x100) n = 0; /* If write mode open, delete the entry */ + 769 .loc 1 850 3 is_stmt 1 view .LVU221 + 770 .loc 1 850 6 is_stmt 0 view .LVU222 + 771 000e B3F5807F cmp r3, #256 + 772 0012 03D0 beq .L64 + 851:Middlewares/Third_Party/FatFs/src/ff.c **** if (n > 0) n--; /* Decrement read mode open count */ + 773 .loc 1 851 3 is_stmt 1 view .LVU223 + ARM GAS /tmp/cc5lWXRL.s page 30 + + + 774 .loc 1 851 6 is_stmt 0 view .LVU224 + 775 0014 1BB1 cbz r3, .L62 + 776 .loc 1 851 14 is_stmt 1 discriminator 1 view .LVU225 + 777 .loc 1 851 15 is_stmt 0 discriminator 1 view .LVU226 + 778 0016 013B subs r3, r3, #1 + 779 .LVL73: + 780 .loc 1 851 15 discriminator 1 view .LVU227 + 781 0018 9BB2 uxth r3, r3 + 782 .LVL74: + 783 .loc 1 851 15 discriminator 1 view .LVU228 + 784 001a 00E0 b .L62 + 785 .L64: + 850:Middlewares/Third_Party/FatFs/src/ff.c **** if (n == 0x100) n = 0; /* If write mode open, delete the entry */ + 786 .loc 1 850 21 view .LVU229 + 787 001c 0023 movs r3, #0 + 788 .LVL75: + 789 .L62: + 852:Middlewares/Third_Party/FatFs/src/ff.c **** Files[i].ctr = n; + 790 .loc 1 852 3 is_stmt 1 view .LVU230 + 791 .loc 1 852 16 is_stmt 0 view .LVU231 + 792 001e 074A ldr r2, .L66 + 793 0020 02EB0012 add r2, r2, r0, lsl #4 + 794 0024 9381 strh r3, [r2, #12] @ movhi + 853:Middlewares/Third_Party/FatFs/src/ff.c **** if (n == 0) Files[i].fs = 0; /* Delete the entry if open count gets zero */ + 795 .loc 1 853 3 is_stmt 1 view .LVU232 + 796 .loc 1 853 6 is_stmt 0 view .LVU233 + 797 0026 33B9 cbnz r3, .L65 + 798 .loc 1 853 15 is_stmt 1 discriminator 1 view .LVU234 + 799 .loc 1 853 27 is_stmt 0 discriminator 1 view .LVU235 + 800 0028 0301 lsls r3, r0, #4 + 801 .LVL76: + 802 .loc 1 853 27 discriminator 1 view .LVU236 + 803 002a 0020 movs r0, #0 + 804 .LVL77: + 805 .loc 1 853 27 discriminator 1 view .LVU237 + 806 002c 034A ldr r2, .L66 + 807 .LVL78: + 808 .loc 1 853 27 discriminator 1 view .LVU238 + 809 002e D050 str r0, [r2, r3] + 810 0030 7047 bx lr + 811 .LVL79: + 812 .L63: + 854:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 855:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 856:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INT_ERR; /* Invalid index nunber */ + 813 .loc 1 856 7 view .LVU239 + 814 0032 0220 movs r0, #2 + 815 .LVL80: + 816 .loc 1 856 7 view .LVU240 + 817 0034 7047 bx lr + 818 .LVL81: + 819 .L65: + 854:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 820 .loc 1 854 7 view .LVU241 + 821 0036 0020 movs r0, #0 + 822 .LVL82: + 857:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 31 + + + 858:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 823 .loc 1 858 2 is_stmt 1 view .LVU242 + 859:Middlewares/Third_Party/FatFs/src/ff.c **** } + 824 .loc 1 859 1 is_stmt 0 view .LVU243 + 825 0038 7047 bx lr + 826 .L67: + 827 003a 00BF .align 2 + 828 .L66: + 829 003c 00000000 .word .LANCHOR0 + 830 .cfi_endproc + 831 .LFE1194: + 833 .section .text.clear_lock,"ax",%progbits + 834 .align 1 + 835 .syntax unified + 836 .thumb + 837 .thumb_func + 838 .fpu fpv5-d16 + 840 clear_lock: + 841 .LVL83: + 842 .LFB1195: + 860:Middlewares/Third_Party/FatFs/src/ff.c **** + 861:Middlewares/Third_Party/FatFs/src/ff.c **** + 862:Middlewares/Third_Party/FatFs/src/ff.c **** static + 863:Middlewares/Third_Party/FatFs/src/ff.c **** void clear_lock ( /* Clear lock entries of the volume */ + 864:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs + 865:Middlewares/Third_Party/FatFs/src/ff.c **** ) + 866:Middlewares/Third_Party/FatFs/src/ff.c **** { + 843 .loc 1 866 1 is_stmt 1 view -0 + 844 .cfi_startproc + 845 @ args = 0, pretend = 0, frame = 0 + 846 @ frame_needed = 0, uses_anonymous_args = 0 + 847 @ link register save eliminated. + 867:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; + 848 .loc 1 867 2 view .LVU245 + 868:Middlewares/Third_Party/FatFs/src/ff.c **** + 869:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < _FS_LOCK; i++) { + 849 .loc 1 869 2 view .LVU246 + 850 .loc 1 869 9 is_stmt 0 view .LVU247 + 851 0000 0023 movs r3, #0 + 852 .loc 1 869 2 view .LVU248 + 853 0002 03E0 b .L73 + 854 .LVL84: + 855 .L80: + 856 .LCFI6: + 857 .cfi_def_cfa_offset 4 + 858 .cfi_offset 4, -4 + 870:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 871:Middlewares/Third_Party/FatFs/src/ff.c **** } + 872:Middlewares/Third_Party/FatFs/src/ff.c **** } + 859 .loc 1 872 1 view .LVU249 + 860 0004 5DF8044B ldr r4, [sp], #4 + 861 .LCFI7: + 862 .cfi_restore 4 + 863 .cfi_def_cfa_offset 0 + 864 0008 7047 bx lr + 865 .L79: + 869:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + ARM GAS /tmp/cc5lWXRL.s page 32 + + + 866 .loc 1 869 28 is_stmt 1 view .LVU250 + 869:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 867 .loc 1 869 29 is_stmt 0 view .LVU251 + 868 000a 0133 adds r3, r3, #1 + 869 .LVL85: + 870 .L73: + 869:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 871 .loc 1 869 14 is_stmt 1 view .LVU252 + 869:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 872 .loc 1 869 2 is_stmt 0 view .LVU253 + 873 000c 012B cmp r3, #1 + 874 000e 11D8 bhi .L78 + 870:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 875 .loc 1 870 3 is_stmt 1 view .LVU254 + 870:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 876 .loc 1 870 15 is_stmt 0 view .LVU255 + 877 0010 1A01 lsls r2, r3, #4 + 878 0012 0949 ldr r1, .L81 + 879 0014 8A58 ldr r2, [r1, r2] + 870:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 880 .loc 1 870 6 view .LVU256 + 881 0016 8242 cmp r2, r0 + 882 0018 F7D1 bne .L79 + 866:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; + 883 .loc 1 866 1 view .LVU257 + 884 001a 10B4 push {r4} + 885 .LCFI8: + 886 .cfi_def_cfa_offset 4 + 887 .cfi_offset 4, -4 + 888 .L74: + 870:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 889 .loc 1 870 26 is_stmt 1 discriminator 1 view .LVU258 + 870:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 890 .loc 1 870 38 is_stmt 0 discriminator 1 view .LVU259 + 891 001c 1A01 lsls r2, r3, #4 + 892 001e 0024 movs r4, #0 + 893 0020 8C50 str r4, [r1, r2] + 894 .L70: + 869:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 895 .loc 1 869 28 is_stmt 1 discriminator 2 view .LVU260 + 869:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 896 .loc 1 869 29 is_stmt 0 discriminator 2 view .LVU261 + 897 0022 0133 adds r3, r3, #1 + 898 .LVL86: + 869:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 899 .loc 1 869 14 is_stmt 1 discriminator 2 view .LVU262 + 869:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 900 .loc 1 869 2 is_stmt 0 discriminator 2 view .LVU263 + 901 0024 012B cmp r3, #1 + 902 0026 EDD8 bhi .L80 + 870:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 903 .loc 1 870 3 is_stmt 1 view .LVU264 + 870:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 904 .loc 1 870 15 is_stmt 0 view .LVU265 + 905 0028 1A01 lsls r2, r3, #4 + 906 002a 0349 ldr r1, .L81 + 907 002c 8A58 ldr r2, [r1, r2] + ARM GAS /tmp/cc5lWXRL.s page 33 + + + 870:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 908 .loc 1 870 6 view .LVU266 + 909 002e 8242 cmp r2, r0 + 910 0030 F7D1 bne .L70 + 911 0032 F3E7 b .L74 + 912 .L78: + 913 .LCFI9: + 914 .cfi_def_cfa_offset 0 + 915 .cfi_restore 4 + 870:Middlewares/Third_Party/FatFs/src/ff.c **** if (Files[i].fs == fs) Files[i].fs = 0; + 916 .loc 1 870 6 view .LVU267 + 917 0034 7047 bx lr + 918 .L82: + 919 0036 00BF .align 2 + 920 .L81: + 921 0038 00000000 .word .LANCHOR0 + 922 .cfi_endproc + 923 .LFE1195: + 925 .section .text.clust2sect,"ax",%progbits + 926 .align 1 + 927 .syntax unified + 928 .thumb + 929 .thumb_func + 930 .fpu fpv5-d16 + 932 clust2sect: + 933 .LVL87: + 934 .LFB1199: + 873:Middlewares/Third_Party/FatFs/src/ff.c **** + 874:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_LOCK != 0 */ + 875:Middlewares/Third_Party/FatFs/src/ff.c **** + 876:Middlewares/Third_Party/FatFs/src/ff.c **** + 877:Middlewares/Third_Party/FatFs/src/ff.c **** + 878:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 879:Middlewares/Third_Party/FatFs/src/ff.c **** /* Move/Flush disk access window in the file system object */ + 880:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 881:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 882:Middlewares/Third_Party/FatFs/src/ff.c **** static + 883:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT sync_window ( /* Returns FR_OK or FR_DISK_ERROR */ + 884:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs /* File system object */ + 885:Middlewares/Third_Party/FatFs/src/ff.c **** ) + 886:Middlewares/Third_Party/FatFs/src/ff.c **** { + 887:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD wsect; + 888:Middlewares/Third_Party/FatFs/src/ff.c **** UINT nf; + 889:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_OK; + 890:Middlewares/Third_Party/FatFs/src/ff.c **** + 891:Middlewares/Third_Party/FatFs/src/ff.c **** + 892:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->wflag) { /* Write back the sector if it is dirty */ + 893:Middlewares/Third_Party/FatFs/src/ff.c **** wsect = fs->winsect; /* Current sector number */ + 894:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fs->win, wsect, 1) != RES_OK) { + 895:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 896:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 897:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 0; + 898:Middlewares/Third_Party/FatFs/src/ff.c **** if (wsect - fs->fatbase < fs->fsize) { /* Is it in the FAT area? */ + 899:Middlewares/Third_Party/FatFs/src/ff.c **** for (nf = fs->n_fats; nf >= 2; nf--) { /* Reflect the change to all FAT copies */ + 900:Middlewares/Third_Party/FatFs/src/ff.c **** wsect += fs->fsize; + 901:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(fs->drv, fs->win, wsect, 1); + 902:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 34 + + + 903:Middlewares/Third_Party/FatFs/src/ff.c **** } + 904:Middlewares/Third_Party/FatFs/src/ff.c **** } + 905:Middlewares/Third_Party/FatFs/src/ff.c **** } + 906:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 907:Middlewares/Third_Party/FatFs/src/ff.c **** } + 908:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 909:Middlewares/Third_Party/FatFs/src/ff.c **** + 910:Middlewares/Third_Party/FatFs/src/ff.c **** + 911:Middlewares/Third_Party/FatFs/src/ff.c **** static + 912:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT move_window ( /* Returns FR_OK or FR_DISK_ERROR */ + 913:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs, /* File system object */ + 914:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD sector /* Sector number to make appearance in the fs->win[] */ + 915:Middlewares/Third_Party/FatFs/src/ff.c **** ) + 916:Middlewares/Third_Party/FatFs/src/ff.c **** { + 917:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_OK; + 918:Middlewares/Third_Party/FatFs/src/ff.c **** + 919:Middlewares/Third_Party/FatFs/src/ff.c **** + 920:Middlewares/Third_Party/FatFs/src/ff.c **** if (sector != fs->winsect) { /* Window offset changed? */ + 921:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 922:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_window(fs); /* Write-back changes */ + 923:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 924:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Fill sector window with new data */ + 925:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(fs->drv, fs->win, sector, 1) != RES_OK) { + 926:Middlewares/Third_Party/FatFs/src/ff.c **** sector = 0xFFFFFFFF; /* Invalidate window if data is not reliable */ + 927:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 928:Middlewares/Third_Party/FatFs/src/ff.c **** } + 929:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect = sector; + 930:Middlewares/Third_Party/FatFs/src/ff.c **** } + 931:Middlewares/Third_Party/FatFs/src/ff.c **** } + 932:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 933:Middlewares/Third_Party/FatFs/src/ff.c **** } + 934:Middlewares/Third_Party/FatFs/src/ff.c **** + 935:Middlewares/Third_Party/FatFs/src/ff.c **** + 936:Middlewares/Third_Party/FatFs/src/ff.c **** + 937:Middlewares/Third_Party/FatFs/src/ff.c **** + 938:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 939:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 940:Middlewares/Third_Party/FatFs/src/ff.c **** /* Synchronize file system and strage device */ + 941:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 942:Middlewares/Third_Party/FatFs/src/ff.c **** + 943:Middlewares/Third_Party/FatFs/src/ff.c **** static + 944:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT sync_fs ( /* FR_OK:succeeded, !=0:error */ + 945:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs /* File system object */ + 946:Middlewares/Third_Party/FatFs/src/ff.c **** ) + 947:Middlewares/Third_Party/FatFs/src/ff.c **** { + 948:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 949:Middlewares/Third_Party/FatFs/src/ff.c **** + 950:Middlewares/Third_Party/FatFs/src/ff.c **** + 951:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_window(fs); + 952:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 953:Middlewares/Third_Party/FatFs/src/ff.c **** /* Update FSInfo sector if needed */ + 954:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT32 && fs->fsi_flag == 1) { + 955:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create FSInfo structure */ + 956:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(fs->win, 0, SS(fs)); + 957:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(fs->win + BS_55AA, 0xAA55); + 958:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->win + FSI_LeadSig, 0x41615252); + 959:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->win + FSI_StrucSig, 0x61417272); + ARM GAS /tmp/cc5lWXRL.s page 35 + + + 960:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->win + FSI_Free_Count, fs->free_clst); + 961:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->win + FSI_Nxt_Free, fs->last_clst); + 962:Middlewares/Third_Party/FatFs/src/ff.c **** /* Write it into the FSInfo sector */ + 963:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect = fs->volbase + 1; + 964:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(fs->drv, fs->win, fs->winsect, 1); + 965:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag = 0; + 966:Middlewares/Third_Party/FatFs/src/ff.c **** } + 967:Middlewares/Third_Party/FatFs/src/ff.c **** /* Make sure that no pending write process in the physical drive */ + 968:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_ioctl(fs->drv, CTRL_SYNC, 0) != RES_OK) res = FR_DISK_ERR; + 969:Middlewares/Third_Party/FatFs/src/ff.c **** } + 970:Middlewares/Third_Party/FatFs/src/ff.c **** + 971:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 972:Middlewares/Third_Party/FatFs/src/ff.c **** } + 973:Middlewares/Third_Party/FatFs/src/ff.c **** + 974:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 975:Middlewares/Third_Party/FatFs/src/ff.c **** + 976:Middlewares/Third_Party/FatFs/src/ff.c **** + 977:Middlewares/Third_Party/FatFs/src/ff.c **** + 978:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 979:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get sector# from cluster# */ + 980:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 981:Middlewares/Third_Party/FatFs/src/ff.c **** + 982:Middlewares/Third_Party/FatFs/src/ff.c **** static + 983:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clust2sect ( /* !=0:Sector number, 0:Failed (invalid cluster#) */ + 984:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs, /* File system object */ + 985:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst /* Cluster# to be converted */ + 986:Middlewares/Third_Party/FatFs/src/ff.c **** ) + 987:Middlewares/Third_Party/FatFs/src/ff.c **** { + 935 .loc 1 987 1 is_stmt 1 view -0 + 936 .cfi_startproc + 937 @ args = 0, pretend = 0, frame = 0 + 938 @ frame_needed = 0, uses_anonymous_args = 0 + 939 @ link register save eliminated. + 988:Middlewares/Third_Party/FatFs/src/ff.c **** clst -= 2; + 940 .loc 1 988 2 view .LVU269 + 941 .loc 1 988 7 is_stmt 0 view .LVU270 + 942 0000 0239 subs r1, r1, #2 + 943 .LVL88: + 989:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst >= fs->n_fatent - 2) return 0; /* Invalid cluster# */ + 944 .loc 1 989 2 is_stmt 1 view .LVU271 + 945 .loc 1 989 16 is_stmt 0 view .LVU272 + 946 0002 8369 ldr r3, [r0, #24] + 947 .loc 1 989 27 view .LVU273 + 948 0004 023B subs r3, r3, #2 + 949 .loc 1 989 5 view .LVU274 + 950 0006 8B42 cmp r3, r1 + 951 0008 04D9 bls .L85 + 990:Middlewares/Third_Party/FatFs/src/ff.c **** return clst * fs->csize + fs->database; + 952 .loc 1 990 2 is_stmt 1 view .LVU275 + 953 .loc 1 990 18 is_stmt 0 view .LVU276 + 954 000a 4389 ldrh r3, [r0, #10] + 955 .loc 1 990 30 view .LVU277 + 956 000c C06A ldr r0, [r0, #44] + 957 .LVL89: + 958 .loc 1 990 26 view .LVU278 + 959 000e 01FB0300 mla r0, r1, r3, r0 + 960 0012 7047 bx lr + ARM GAS /tmp/cc5lWXRL.s page 36 + + + 961 .LVL90: + 962 .L85: + 989:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst >= fs->n_fatent - 2) return 0; /* Invalid cluster# */ + 963 .loc 1 989 39 view .LVU279 + 964 0014 0020 movs r0, #0 + 965 .LVL91: + 991:Middlewares/Third_Party/FatFs/src/ff.c **** } + 966 .loc 1 991 1 view .LVU280 + 967 0016 7047 bx lr + 968 .cfi_endproc + 969 .LFE1199: + 971 .section .text.clmt_clust,"ax",%progbits + 972 .align 1 + 973 .syntax unified + 974 .thumb + 975 .thumb_func + 976 .fpu fpv5-d16 + 978 clmt_clust: + 979 .LVL92: + 980 .LFB1204: + 992:Middlewares/Third_Party/FatFs/src/ff.c **** + 993:Middlewares/Third_Party/FatFs/src/ff.c **** + 994:Middlewares/Third_Party/FatFs/src/ff.c **** + 995:Middlewares/Third_Party/FatFs/src/ff.c **** + 996:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 997:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT access - Read value of a FAT entry */ + 998:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + 999:Middlewares/Third_Party/FatFs/src/ff.c **** +1000:Middlewares/Third_Party/FatFs/src/ff.c **** static +1001:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD get_fat ( /* 0xFFFFFFFF:Disk error, 1:Internal error, 2..0x7FFFFFFF:Cluster status */ +1002:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID* obj, /* Corresponding object */ +1003:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst /* Cluster number to get the value */ +1004:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1005:Middlewares/Third_Party/FatFs/src/ff.c **** { +1006:Middlewares/Third_Party/FatFs/src/ff.c **** UINT wc, bc; +1007:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD val; +1008:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = obj->fs; +1009:Middlewares/Third_Party/FatFs/src/ff.c **** +1010:Middlewares/Third_Party/FatFs/src/ff.c **** +1011:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst < 2 || clst >= fs->n_fatent) { /* Check if in valid range */ +1012:Middlewares/Third_Party/FatFs/src/ff.c **** val = 1; /* Internal error */ +1013:Middlewares/Third_Party/FatFs/src/ff.c **** +1014:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +1015:Middlewares/Third_Party/FatFs/src/ff.c **** val = 0xFFFFFFFF; /* Default value falls on disk error */ +1016:Middlewares/Third_Party/FatFs/src/ff.c **** +1017:Middlewares/Third_Party/FatFs/src/ff.c **** switch (fs->fs_type) { +1018:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT12 : +1019:Middlewares/Third_Party/FatFs/src/ff.c **** bc = (UINT)clst; bc += bc / 2; +1020:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; +1021:Middlewares/Third_Party/FatFs/src/ff.c **** wc = fs->win[bc++ % SS(fs)]; +1022:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; +1023:Middlewares/Third_Party/FatFs/src/ff.c **** wc |= fs->win[bc % SS(fs)] << 8; +1024:Middlewares/Third_Party/FatFs/src/ff.c **** val = (clst & 1) ? (wc >> 4) : (wc & 0xFFF); +1025:Middlewares/Third_Party/FatFs/src/ff.c **** break; +1026:Middlewares/Third_Party/FatFs/src/ff.c **** +1027:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT16 : +1028:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 2))) != FR_OK) break; + ARM GAS /tmp/cc5lWXRL.s page 37 + + +1029:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_word(fs->win + clst * 2 % SS(fs)); +1030:Middlewares/Third_Party/FatFs/src/ff.c **** break; +1031:Middlewares/Third_Party/FatFs/src/ff.c **** +1032:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT32 : +1033:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))) != FR_OK) break; +1034:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; +1035:Middlewares/Third_Party/FatFs/src/ff.c **** break; +1036:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +1037:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_EXFAT : +1038:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->objsize) { +1039:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD cofs = clst - obj->sclust; /* Offset from start cluster */ +1040:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clen = (DWORD)((obj->objsize - 1) / SS(fs)) / fs->csize; /* Number of clusters - 1 */ +1041:Middlewares/Third_Party/FatFs/src/ff.c **** +1042:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->stat == 2) { /* Is there no valid chain on the FAT? */ +1043:Middlewares/Third_Party/FatFs/src/ff.c **** if (cofs <= clen) { +1044:Middlewares/Third_Party/FatFs/src/ff.c **** val = (cofs == clen) ? 0x7FFFFFFF : clst + 1; /* Generate the value */ +1045:Middlewares/Third_Party/FatFs/src/ff.c **** break; +1046:Middlewares/Third_Party/FatFs/src/ff.c **** } +1047:Middlewares/Third_Party/FatFs/src/ff.c **** } +1048:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->stat == 3 && cofs < obj->n_cont) { /* Is it in the 1st fragment? */ +1049:Middlewares/Third_Party/FatFs/src/ff.c **** val = clst + 1; /* Generate the value */ +1050:Middlewares/Third_Party/FatFs/src/ff.c **** break; +1051:Middlewares/Third_Party/FatFs/src/ff.c **** } +1052:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->stat != 2) { /* Get value from FAT if FAT chain is valid */ +1053:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->n_frag != 0) { /* Is it on the growing edge? */ +1054:Middlewares/Third_Party/FatFs/src/ff.c **** val = 0x7FFFFFFF; /* Generate EOC */ +1055:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +1056:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))) != FR_OK) break; +1057:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x7FFFFFFF; +1058:Middlewares/Third_Party/FatFs/src/ff.c **** } +1059:Middlewares/Third_Party/FatFs/src/ff.c **** break; +1060:Middlewares/Third_Party/FatFs/src/ff.c **** } +1061:Middlewares/Third_Party/FatFs/src/ff.c **** } +1062:Middlewares/Third_Party/FatFs/src/ff.c **** /* go to default */ +1063:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1064:Middlewares/Third_Party/FatFs/src/ff.c **** default: +1065:Middlewares/Third_Party/FatFs/src/ff.c **** val = 1; /* Internal error */ +1066:Middlewares/Third_Party/FatFs/src/ff.c **** } +1067:Middlewares/Third_Party/FatFs/src/ff.c **** } +1068:Middlewares/Third_Party/FatFs/src/ff.c **** +1069:Middlewares/Third_Party/FatFs/src/ff.c **** return val; +1070:Middlewares/Third_Party/FatFs/src/ff.c **** } +1071:Middlewares/Third_Party/FatFs/src/ff.c **** +1072:Middlewares/Third_Party/FatFs/src/ff.c **** +1073:Middlewares/Third_Party/FatFs/src/ff.c **** +1074:Middlewares/Third_Party/FatFs/src/ff.c **** +1075:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +1076:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1077:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT access - Change value of a FAT entry */ +1078:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1079:Middlewares/Third_Party/FatFs/src/ff.c **** +1080:Middlewares/Third_Party/FatFs/src/ff.c **** static +1081:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT put_fat ( /* FR_OK(0):succeeded, !=0:error */ +1082:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs, /* Corresponding file system object */ +1083:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, /* FAT index number (cluster number) to be changed */ +1084:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD val /* New value to be set to the entry */ +1085:Middlewares/Third_Party/FatFs/src/ff.c **** ) + ARM GAS /tmp/cc5lWXRL.s page 38 + + +1086:Middlewares/Third_Party/FatFs/src/ff.c **** { +1087:Middlewares/Third_Party/FatFs/src/ff.c **** UINT bc; +1088:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *p; +1089:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_INT_ERR; +1090:Middlewares/Third_Party/FatFs/src/ff.c **** +1091:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst >= 2 && clst < fs->n_fatent) { /* Check if in valid range */ +1092:Middlewares/Third_Party/FatFs/src/ff.c **** switch (fs->fs_type) { +1093:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT12 : /* Bitfield items */ +1094:Middlewares/Third_Party/FatFs/src/ff.c **** bc = (UINT)clst; bc += bc / 2; +1095:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs))); +1096:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +1097:Middlewares/Third_Party/FatFs/src/ff.c **** p = fs->win + bc++ % SS(fs); +1098:Middlewares/Third_Party/FatFs/src/ff.c **** *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val; +1099:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +1100:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs))); +1101:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +1102:Middlewares/Third_Party/FatFs/src/ff.c **** p = fs->win + bc % SS(fs); +1103:Middlewares/Third_Party/FatFs/src/ff.c **** *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F)); +1104:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +1105:Middlewares/Third_Party/FatFs/src/ff.c **** break; +1106:Middlewares/Third_Party/FatFs/src/ff.c **** +1107:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT16 : /* WORD aligned items */ +1108:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 2))); +1109:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +1110:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(fs->win + clst * 2 % SS(fs), (WORD)val); +1111:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +1112:Middlewares/Third_Party/FatFs/src/ff.c **** break; +1113:Middlewares/Third_Party/FatFs/src/ff.c **** +1114:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT32 : /* DWORD aligned items */ +1115:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +1116:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_EXFAT : +1117:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1118:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))); +1119:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +1120:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { +1121:Middlewares/Third_Party/FatFs/src/ff.c **** val = (val & 0x0FFFFFFF) | (ld_dword(fs->win + clst * 4 % SS(fs)) & 0xF0000000); +1122:Middlewares/Third_Party/FatFs/src/ff.c **** } +1123:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->win + clst * 4 % SS(fs), val); +1124:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +1125:Middlewares/Third_Party/FatFs/src/ff.c **** break; +1126:Middlewares/Third_Party/FatFs/src/ff.c **** } +1127:Middlewares/Third_Party/FatFs/src/ff.c **** } +1128:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +1129:Middlewares/Third_Party/FatFs/src/ff.c **** } +1130:Middlewares/Third_Party/FatFs/src/ff.c **** +1131:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ +1132:Middlewares/Third_Party/FatFs/src/ff.c **** +1133:Middlewares/Third_Party/FatFs/src/ff.c **** +1134:Middlewares/Third_Party/FatFs/src/ff.c **** +1135:Middlewares/Third_Party/FatFs/src/ff.c **** +1136:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT && !_FS_READONLY +1137:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1138:Middlewares/Third_Party/FatFs/src/ff.c **** /* exFAT: Accessing FAT and Allocation Bitmap */ +1139:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1140:Middlewares/Third_Party/FatFs/src/ff.c **** +1141:Middlewares/Third_Party/FatFs/src/ff.c **** /*--------------------------------------*/ +1142:Middlewares/Third_Party/FatFs/src/ff.c **** /* Find a contiguous free cluster block */ + ARM GAS /tmp/cc5lWXRL.s page 39 + + +1143:Middlewares/Third_Party/FatFs/src/ff.c **** /*--------------------------------------*/ +1144:Middlewares/Third_Party/FatFs/src/ff.c **** +1145:Middlewares/Third_Party/FatFs/src/ff.c **** static +1146:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD find_bitmap ( /* 0:Not found, 2..:Cluster block found, 0xFFFFFFFF:Disk error */ +1147:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs, /* File system object */ +1148:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, /* Cluster number to scan from */ +1149:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ncl /* Number of contiguous clusters to find (1..) */ +1150:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1151:Middlewares/Third_Party/FatFs/src/ff.c **** { +1152:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE bm, bv; +1153:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; +1154:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD val, scl, ctr; +1155:Middlewares/Third_Party/FatFs/src/ff.c **** +1156:Middlewares/Third_Party/FatFs/src/ff.c **** +1157:Middlewares/Third_Party/FatFs/src/ff.c **** clst -= 2; /* The first bit in the bitmap corresponds to cluster #2 */ +1158:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst >= fs->n_fatent - 2) clst = 0; +1159:Middlewares/Third_Party/FatFs/src/ff.c **** scl = val = clst; ctr = 0; +1160:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { +1161:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->database + val / 8 / SS(fs)) != FR_OK) return 0xFFFFFFFF; /* (assuming bi +1162:Middlewares/Third_Party/FatFs/src/ff.c **** i = val / 8 % SS(fs); bm = 1 << (val % 8); +1163:Middlewares/Third_Party/FatFs/src/ff.c **** do { +1164:Middlewares/Third_Party/FatFs/src/ff.c **** do { +1165:Middlewares/Third_Party/FatFs/src/ff.c **** bv = fs->win[i] & bm; bm <<= 1; /* Get bit value */ +1166:Middlewares/Third_Party/FatFs/src/ff.c **** if (++val >= fs->n_fatent - 2) { /* Next cluster (with wrap-around) */ +1167:Middlewares/Third_Party/FatFs/src/ff.c **** val = 0; bm = 0; i = SS(fs); +1168:Middlewares/Third_Party/FatFs/src/ff.c **** } +1169:Middlewares/Third_Party/FatFs/src/ff.c **** if (!bv) { /* Is it a free cluster? */ +1170:Middlewares/Third_Party/FatFs/src/ff.c **** if (++ctr == ncl) return scl + 2; /* Check if run length is sufficient for required */ +1171:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +1172:Middlewares/Third_Party/FatFs/src/ff.c **** scl = val; ctr = 0; /* Encountered a cluster in-use, restart to scan */ +1173:Middlewares/Third_Party/FatFs/src/ff.c **** } +1174:Middlewares/Third_Party/FatFs/src/ff.c **** if (val == clst) return 0; /* All cluster scanned? */ +1175:Middlewares/Third_Party/FatFs/src/ff.c **** } while (bm); +1176:Middlewares/Third_Party/FatFs/src/ff.c **** bm = 1; +1177:Middlewares/Third_Party/FatFs/src/ff.c **** } while (++i < SS(fs)); +1178:Middlewares/Third_Party/FatFs/src/ff.c **** } +1179:Middlewares/Third_Party/FatFs/src/ff.c **** } +1180:Middlewares/Third_Party/FatFs/src/ff.c **** +1181:Middlewares/Third_Party/FatFs/src/ff.c **** +1182:Middlewares/Third_Party/FatFs/src/ff.c **** /*----------------------------------------*/ +1183:Middlewares/Third_Party/FatFs/src/ff.c **** /* Set/Clear a block of allocation bitmap */ +1184:Middlewares/Third_Party/FatFs/src/ff.c **** /*----------------------------------------*/ +1185:Middlewares/Third_Party/FatFs/src/ff.c **** +1186:Middlewares/Third_Party/FatFs/src/ff.c **** static +1187:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT change_bitmap ( +1188:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs, /* File system object */ +1189:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, /* Cluster number to change from */ +1190:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ncl, /* Number of clusters to be changed */ +1191:Middlewares/Third_Party/FatFs/src/ff.c **** int bv /* bit value to be set (0 or 1) */ +1192:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1193:Middlewares/Third_Party/FatFs/src/ff.c **** { +1194:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE bm; +1195:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; +1196:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD sect; +1197:Middlewares/Third_Party/FatFs/src/ff.c **** +1198:Middlewares/Third_Party/FatFs/src/ff.c **** clst -= 2; /* The first bit corresponds to cluster #2 */ +1199:Middlewares/Third_Party/FatFs/src/ff.c **** sect = fs->database + clst / 8 / SS(fs); /* Sector address (assuming bitmap is located top of the + ARM GAS /tmp/cc5lWXRL.s page 40 + + +1200:Middlewares/Third_Party/FatFs/src/ff.c **** i = clst / 8 % SS(fs); /* Byte offset in the sector */ +1201:Middlewares/Third_Party/FatFs/src/ff.c **** bm = 1 << (clst % 8); /* Bit mask in the byte */ +1202:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { +1203:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, sect++) != FR_OK) return FR_DISK_ERR; +1204:Middlewares/Third_Party/FatFs/src/ff.c **** do { +1205:Middlewares/Third_Party/FatFs/src/ff.c **** do { +1206:Middlewares/Third_Party/FatFs/src/ff.c **** if (bv == (int)((fs->win[i] & bm) != 0)) return FR_INT_ERR; /* Is the bit expected value? */ +1207:Middlewares/Third_Party/FatFs/src/ff.c **** fs->win[i] ^= bm; /* Flip the bit */ +1208:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +1209:Middlewares/Third_Party/FatFs/src/ff.c **** if (--ncl == 0) return FR_OK; /* All bits processed? */ +1210:Middlewares/Third_Party/FatFs/src/ff.c **** } while (bm <<= 1); /* Next bit */ +1211:Middlewares/Third_Party/FatFs/src/ff.c **** bm = 1; +1212:Middlewares/Third_Party/FatFs/src/ff.c **** } while (++i < SS(fs)); /* Next byte */ +1213:Middlewares/Third_Party/FatFs/src/ff.c **** i = 0; +1214:Middlewares/Third_Party/FatFs/src/ff.c **** } +1215:Middlewares/Third_Party/FatFs/src/ff.c **** } +1216:Middlewares/Third_Party/FatFs/src/ff.c **** +1217:Middlewares/Third_Party/FatFs/src/ff.c **** +1218:Middlewares/Third_Party/FatFs/src/ff.c **** /*---------------------------------------------*/ +1219:Middlewares/Third_Party/FatFs/src/ff.c **** /* Fill the first fragment of the FAT chain */ +1220:Middlewares/Third_Party/FatFs/src/ff.c **** /*---------------------------------------------*/ +1221:Middlewares/Third_Party/FatFs/src/ff.c **** +1222:Middlewares/Third_Party/FatFs/src/ff.c **** static +1223:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT fill_first_frag ( +1224:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID* obj /* Pointer to the corresponding object */ +1225:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1226:Middlewares/Third_Party/FatFs/src/ff.c **** { +1227:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +1228:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD cl, n; +1229:Middlewares/Third_Party/FatFs/src/ff.c **** +1230:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->stat == 3) { /* Has the object been changed 'fragmented'? */ +1231:Middlewares/Third_Party/FatFs/src/ff.c **** for (cl = obj->sclust, n = obj->n_cont; n; cl++, n--) { /* Create cluster chain on the FAT */ +1232:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(obj->fs, cl, cl + 1); +1233:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +1234:Middlewares/Third_Party/FatFs/src/ff.c **** } +1235:Middlewares/Third_Party/FatFs/src/ff.c **** obj->stat = 0; /* Change status 'FAT chain is valid' */ +1236:Middlewares/Third_Party/FatFs/src/ff.c **** } +1237:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +1238:Middlewares/Third_Party/FatFs/src/ff.c **** } +1239:Middlewares/Third_Party/FatFs/src/ff.c **** +1240:Middlewares/Third_Party/FatFs/src/ff.c **** +1241:Middlewares/Third_Party/FatFs/src/ff.c **** /*---------------------------------------------*/ +1242:Middlewares/Third_Party/FatFs/src/ff.c **** /* Fill the last fragment of the FAT chain */ +1243:Middlewares/Third_Party/FatFs/src/ff.c **** /*---------------------------------------------*/ +1244:Middlewares/Third_Party/FatFs/src/ff.c **** +1245:Middlewares/Third_Party/FatFs/src/ff.c **** static +1246:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT fill_last_frag ( +1247:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID* obj, /* Pointer to the corresponding object */ +1248:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD lcl, /* Last cluster of the fragment */ +1249:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD term /* Value to set the last FAT entry */ +1250:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1251:Middlewares/Third_Party/FatFs/src/ff.c **** { +1252:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +1253:Middlewares/Third_Party/FatFs/src/ff.c **** +1254:Middlewares/Third_Party/FatFs/src/ff.c **** while (obj->n_frag > 0) { /* Create the last chain on the FAT */ +1255:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(obj->fs, lcl - obj->n_frag + 1, (obj->n_frag > 1) ? lcl - obj->n_frag + 2 : term); +1256:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; + ARM GAS /tmp/cc5lWXRL.s page 41 + + +1257:Middlewares/Third_Party/FatFs/src/ff.c **** obj->n_frag--; +1258:Middlewares/Third_Party/FatFs/src/ff.c **** } +1259:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +1260:Middlewares/Third_Party/FatFs/src/ff.c **** } +1261:Middlewares/Third_Party/FatFs/src/ff.c **** +1262:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_EXFAT && !_FS_READONLY */ +1263:Middlewares/Third_Party/FatFs/src/ff.c **** +1264:Middlewares/Third_Party/FatFs/src/ff.c **** +1265:Middlewares/Third_Party/FatFs/src/ff.c **** +1266:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +1267:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1268:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT handling - Remove a cluster chain */ +1269:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1270:Middlewares/Third_Party/FatFs/src/ff.c **** static +1271:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT remove_chain ( /* FR_OK(0):succeeded, !=0:error */ +1272:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID* obj, /* Corresponding object */ +1273:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, /* Cluster to remove a chain from */ +1274:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD pclst /* Previous cluster of clst (0:an entire chain) */ +1275:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1276:Middlewares/Third_Party/FatFs/src/ff.c **** { +1277:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_OK; +1278:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD nxt; +1279:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = obj->fs; +1280:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT || _USE_TRIM +1281:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD scl = clst, ecl = clst; +1282:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1283:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_TRIM +1284:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD rt[2]; +1285:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1286:Middlewares/Third_Party/FatFs/src/ff.c **** +1287:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Check if in valid range */ +1288:Middlewares/Third_Party/FatFs/src/ff.c **** +1289:Middlewares/Third_Party/FatFs/src/ff.c **** /* Mark the previous cluster 'EOC' on the FAT if it exists */ +1290:Middlewares/Third_Party/FatFs/src/ff.c **** if (pclst && (!_FS_EXFAT || fs->fs_type != FS_EXFAT || obj->stat != 2)) { +1291:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, pclst, 0xFFFFFFFF); +1292:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +1293:Middlewares/Third_Party/FatFs/src/ff.c **** } +1294:Middlewares/Third_Party/FatFs/src/ff.c **** +1295:Middlewares/Third_Party/FatFs/src/ff.c **** /* Remove the chain */ +1296:Middlewares/Third_Party/FatFs/src/ff.c **** do { +1297:Middlewares/Third_Party/FatFs/src/ff.c **** nxt = get_fat(obj, clst); /* Get cluster status */ +1298:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 0) break; /* Empty cluster? */ +1299:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 1) return FR_INT_ERR; /* Internal error? */ +1300:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error? */ +1301:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { +1302:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, clst, 0); /* Mark the cluster 'free' on the FAT */ +1303:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +1304:Middlewares/Third_Party/FatFs/src/ff.c **** } +1305:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->free_clst < fs->n_fatent - 2) { /* Update FSINFO */ +1306:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst++; +1307:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; +1308:Middlewares/Third_Party/FatFs/src/ff.c **** } +1309:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT || _USE_TRIM +1310:Middlewares/Third_Party/FatFs/src/ff.c **** if (ecl + 1 == nxt) { /* Is next cluster contiguous? */ +1311:Middlewares/Third_Party/FatFs/src/ff.c **** ecl = nxt; +1312:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* End of contiguous cluster block */ +1313:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + ARM GAS /tmp/cc5lWXRL.s page 42 + + +1314:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +1315:Middlewares/Third_Party/FatFs/src/ff.c **** res = change_bitmap(fs, scl, ecl - scl + 1, 0); /* Mark the cluster block 'free' on the bitmap +1316:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +1317:Middlewares/Third_Party/FatFs/src/ff.c **** } +1318:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1319:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_TRIM +1320:Middlewares/Third_Party/FatFs/src/ff.c **** rt[0] = clust2sect(fs, scl); /* Start sector */ +1321:Middlewares/Third_Party/FatFs/src/ff.c **** rt[1] = clust2sect(fs, ecl) + fs->csize - 1; /* End sector */ +1322:Middlewares/Third_Party/FatFs/src/ff.c **** disk_ioctl(fs->drv, CTRL_TRIM, rt); /* Inform device the block can be erased */ +1323:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1324:Middlewares/Third_Party/FatFs/src/ff.c **** scl = ecl = nxt; +1325:Middlewares/Third_Party/FatFs/src/ff.c **** } +1326:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1327:Middlewares/Third_Party/FatFs/src/ff.c **** clst = nxt; /* Next cluster */ +1328:Middlewares/Third_Party/FatFs/src/ff.c **** } while (clst < fs->n_fatent); /* Repeat while not the last link */ +1329:Middlewares/Third_Party/FatFs/src/ff.c **** +1330:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +1331:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +1332:Middlewares/Third_Party/FatFs/src/ff.c **** if (pclst == 0) { /* Does the object have no chain? */ +1333:Middlewares/Third_Party/FatFs/src/ff.c **** obj->stat = 0; /* Change the object status 'initial' */ +1334:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +1335:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->stat == 3 && pclst >= obj->sclust && pclst <= obj->sclust + obj->n_cont) { /* Did the c +1336:Middlewares/Third_Party/FatFs/src/ff.c **** obj->stat = 2; /* Change the object status 'contiguous' */ +1337:Middlewares/Third_Party/FatFs/src/ff.c **** } +1338:Middlewares/Third_Party/FatFs/src/ff.c **** } +1339:Middlewares/Third_Party/FatFs/src/ff.c **** } +1340:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1341:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +1342:Middlewares/Third_Party/FatFs/src/ff.c **** } +1343:Middlewares/Third_Party/FatFs/src/ff.c **** +1344:Middlewares/Third_Party/FatFs/src/ff.c **** +1345:Middlewares/Third_Party/FatFs/src/ff.c **** +1346:Middlewares/Third_Party/FatFs/src/ff.c **** +1347:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1348:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT handling - Stretch a chain or Create a new chain */ +1349:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1350:Middlewares/Third_Party/FatFs/src/ff.c **** static +1351:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD create_chain ( /* 0:No free cluster, 1:Internal error, 0xFFFFFFFF:Disk error, >=2:New cluster +1352:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID* obj, /* Corresponding object */ +1353:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst /* Cluster# to stretch, 0:Create a new chain */ +1354:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1355:Middlewares/Third_Party/FatFs/src/ff.c **** { +1356:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD cs, ncl, scl; +1357:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +1358:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = obj->fs; +1359:Middlewares/Third_Party/FatFs/src/ff.c **** +1360:Middlewares/Third_Party/FatFs/src/ff.c **** +1361:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) { /* Create a new chain */ +1362:Middlewares/Third_Party/FatFs/src/ff.c **** scl = fs->last_clst; /* Get suggested cluster to start from */ +1363:Middlewares/Third_Party/FatFs/src/ff.c **** if (scl == 0 || scl >= fs->n_fatent) scl = 1; +1364:Middlewares/Third_Party/FatFs/src/ff.c **** } +1365:Middlewares/Third_Party/FatFs/src/ff.c **** else { /* Stretch current chain */ +1366:Middlewares/Third_Party/FatFs/src/ff.c **** cs = get_fat(obj, clst); /* Check the cluster status */ +1367:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs < 2) return 1; /* Invalid FAT value */ +1368:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs == 0xFFFFFFFF) return cs; /* A disk error occurred */ +1369:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs < fs->n_fatent) return cs; /* It is already followed by next cluster */ +1370:Middlewares/Third_Party/FatFs/src/ff.c **** scl = clst; + ARM GAS /tmp/cc5lWXRL.s page 43 + + +1371:Middlewares/Third_Party/FatFs/src/ff.c **** } +1372:Middlewares/Third_Party/FatFs/src/ff.c **** +1373:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +1374:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ +1375:Middlewares/Third_Party/FatFs/src/ff.c **** ncl = find_bitmap(fs, scl, 1); /* Find a free cluster */ +1376:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == 0 || ncl == 0xFFFFFFFF) return ncl; /* No free cluster or hard error? */ +1377:Middlewares/Third_Party/FatFs/src/ff.c **** res = change_bitmap(fs, ncl, 1, 1); /* Mark the cluster 'in use' */ +1378:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_INT_ERR) return 1; +1379:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_DISK_ERR) return 0xFFFFFFFF; +1380:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) { /* Is it a new chain? */ +1381:Middlewares/Third_Party/FatFs/src/ff.c **** obj->stat = 2; /* Set status 'contiguous' */ +1382:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* It is a stretched chain */ +1383:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->stat == 2 && ncl != scl + 1) { /* Is the chain got fragmented? */ +1384:Middlewares/Third_Party/FatFs/src/ff.c **** obj->n_cont = scl - obj->sclust; /* Set size of the contiguous part */ +1385:Middlewares/Third_Party/FatFs/src/ff.c **** obj->stat = 3; /* Change status 'just fragmented' */ +1386:Middlewares/Third_Party/FatFs/src/ff.c **** } +1387:Middlewares/Third_Party/FatFs/src/ff.c **** } +1388:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->stat != 2) { /* Is the file non-contiguous? */ +1389:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == clst + 1) { /* Is the cluster next to previous one? */ +1390:Middlewares/Third_Party/FatFs/src/ff.c **** obj->n_frag = obj->n_frag ? obj->n_frag + 1 : 2; /* Increment size of last framgent */ +1391:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* New fragment */ +1392:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->n_frag == 0) obj->n_frag = 1; +1393:Middlewares/Third_Party/FatFs/src/ff.c **** res = fill_last_frag(obj, clst, ncl); /* Fill last fragment on the FAT and link it to new one * +1394:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) obj->n_frag = 1; +1395:Middlewares/Third_Party/FatFs/src/ff.c **** } +1396:Middlewares/Third_Party/FatFs/src/ff.c **** } +1397:Middlewares/Third_Party/FatFs/src/ff.c **** } else +1398:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1399:Middlewares/Third_Party/FatFs/src/ff.c **** { /* On the FAT12/16/32 volume */ +1400:Middlewares/Third_Party/FatFs/src/ff.c **** ncl = scl; /* Start cluster */ +1401:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { +1402:Middlewares/Third_Party/FatFs/src/ff.c **** ncl++; /* Next cluster */ +1403:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl >= fs->n_fatent) { /* Check wrap-around */ +1404:Middlewares/Third_Party/FatFs/src/ff.c **** ncl = 2; +1405:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl > scl) return 0; /* No free cluster */ +1406:Middlewares/Third_Party/FatFs/src/ff.c **** } +1407:Middlewares/Third_Party/FatFs/src/ff.c **** cs = get_fat(obj, ncl); /* Get the cluster status */ +1408:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs == 0) break; /* Found a free cluster */ +1409:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs == 1 || cs == 0xFFFFFFFF) return cs; /* An error occurred */ +1410:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == scl) return 0; /* No free cluster */ +1411:Middlewares/Third_Party/FatFs/src/ff.c **** } +1412:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, ncl, 0xFFFFFFFF); /* Mark the new cluster 'EOC' */ +1413:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && clst != 0) { +1414:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, clst, ncl); /* Link it from the previous one if needed */ +1415:Middlewares/Third_Party/FatFs/src/ff.c **** } +1416:Middlewares/Third_Party/FatFs/src/ff.c **** } +1417:Middlewares/Third_Party/FatFs/src/ff.c **** +1418:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Update FSINFO if function succeeded. */ +1419:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = ncl; +1420:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->free_clst <= fs->n_fatent - 2) fs->free_clst--; +1421:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; +1422:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +1423:Middlewares/Third_Party/FatFs/src/ff.c **** ncl = (res == FR_DISK_ERR) ? 0xFFFFFFFF : 1; /* Failed. Generate error status */ +1424:Middlewares/Third_Party/FatFs/src/ff.c **** } +1425:Middlewares/Third_Party/FatFs/src/ff.c **** +1426:Middlewares/Third_Party/FatFs/src/ff.c **** return ncl; /* Return new cluster number or error status */ +1427:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 44 + + +1428:Middlewares/Third_Party/FatFs/src/ff.c **** +1429:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ +1430:Middlewares/Third_Party/FatFs/src/ff.c **** +1431:Middlewares/Third_Party/FatFs/src/ff.c **** +1432:Middlewares/Third_Party/FatFs/src/ff.c **** +1433:Middlewares/Third_Party/FatFs/src/ff.c **** +1434:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_FASTSEEK +1435:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1436:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT handling - Convert offset into cluster with link map table */ +1437:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1438:Middlewares/Third_Party/FatFs/src/ff.c **** +1439:Middlewares/Third_Party/FatFs/src/ff.c **** static +1440:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clmt_clust ( /* <2:Error, >=2:Cluster number */ +1441:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp, /* Pointer to the file object */ +1442:Middlewares/Third_Party/FatFs/src/ff.c **** FSIZE_t ofs /* File offset to be converted to cluster# */ +1443:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1444:Middlewares/Third_Party/FatFs/src/ff.c **** { + 981 .loc 1 1444 1 is_stmt 1 view -0 + 982 .cfi_startproc + 983 @ args = 0, pretend = 0, frame = 0 + 984 @ frame_needed = 0, uses_anonymous_args = 0 + 985 @ link register save eliminated. +1445:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD cl, ncl, *tbl; + 986 .loc 1 1445 2 view .LVU282 +1446:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = fp->obj.fs; + 987 .loc 1 1446 2 view .LVU283 + 988 .loc 1 1446 9 is_stmt 0 view .LVU284 + 989 0000 0268 ldr r2, [r0] + 990 .LVL93: +1447:Middlewares/Third_Party/FatFs/src/ff.c **** +1448:Middlewares/Third_Party/FatFs/src/ff.c **** +1449:Middlewares/Third_Party/FatFs/src/ff.c **** tbl = fp->cltbl + 1; /* Top of CLMT */ + 991 .loc 1 1449 2 is_stmt 1 view .LVU285 + 992 .loc 1 1449 10 is_stmt 0 view .LVU286 + 993 0002 C36A ldr r3, [r0, #44] + 994 .loc 1 1449 6 view .LVU287 + 995 0004 0433 adds r3, r3, #4 + 996 .LVL94: +1450:Middlewares/Third_Party/FatFs/src/ff.c **** cl = (DWORD)(ofs / SS(fs) / fs->csize); /* Cluster order from top of the file */ + 997 .loc 1 1450 2 is_stmt 1 view .LVU288 + 998 .loc 1 1450 21 is_stmt 0 view .LVU289 + 999 0006 9089 ldrh r0, [r2, #12] + 1000 .LVL95: + 1001 .loc 1 1450 19 view .LVU290 + 1002 0008 B1FBF0F1 udiv r1, r1, r0 + 1003 .LVL96: + 1004 .loc 1 1450 32 view .LVU291 + 1005 000c 5289 ldrh r2, [r2, #10] + 1006 .LVL97: + 1007 .loc 1 1450 5 view .LVU292 + 1008 000e B1FBF2F1 udiv r1, r1, r2 + 1009 .LVL98: + 1010 .loc 1 1450 5 view .LVU293 + 1011 0012 01E0 b .L89 + 1012 .LVL99: + 1013 .L90: +1451:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { + ARM GAS /tmp/cc5lWXRL.s page 45 + + +1452:Middlewares/Third_Party/FatFs/src/ff.c **** ncl = *tbl++; /* Number of cluters in the fragment */ +1453:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == 0) return 0; /* End of table? (error) */ +1454:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl < ncl) break; /* In this fragment? */ +1455:Middlewares/Third_Party/FatFs/src/ff.c **** cl -= ncl; tbl++; /* Next fragment */ + 1014 .loc 1 1455 3 is_stmt 1 view .LVU294 + 1015 .loc 1 1455 6 is_stmt 0 view .LVU295 + 1016 0014 091A subs r1, r1, r0 + 1017 .LVL100: + 1018 .loc 1 1455 14 is_stmt 1 view .LVU296 + 1019 .loc 1 1455 17 is_stmt 0 view .LVU297 + 1020 0016 0833 adds r3, r3, #8 + 1021 .LVL101: +1451:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { + 1022 .loc 1 1451 8 is_stmt 1 view .LVU298 + 1023 .L89: +1451:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { + 1024 .loc 1 1451 2 view .LVU299 +1452:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == 0) return 0; /* End of table? (error) */ + 1025 .loc 1 1452 3 view .LVU300 +1452:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == 0) return 0; /* End of table? (error) */ + 1026 .loc 1 1452 7 is_stmt 0 view .LVU301 + 1027 0018 1868 ldr r0, [r3] + 1028 .LVL102: +1453:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl < ncl) break; /* In this fragment? */ + 1029 .loc 1 1453 3 is_stmt 1 view .LVU302 +1453:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl < ncl) break; /* In this fragment? */ + 1030 .loc 1 1453 6 is_stmt 0 view .LVU303 + 1031 001a 18B1 cbz r0, .L86 +1454:Middlewares/Third_Party/FatFs/src/ff.c **** cl -= ncl; tbl++; /* Next fragment */ + 1032 .loc 1 1454 3 is_stmt 1 view .LVU304 +1454:Middlewares/Third_Party/FatFs/src/ff.c **** cl -= ncl; tbl++; /* Next fragment */ + 1033 .loc 1 1454 6 is_stmt 0 view .LVU305 + 1034 001c 8142 cmp r1, r0 + 1035 001e F9D2 bcs .L90 +1456:Middlewares/Third_Party/FatFs/src/ff.c **** } +1457:Middlewares/Third_Party/FatFs/src/ff.c **** return cl + *tbl; /* Return the cluster number */ + 1036 .loc 1 1457 2 is_stmt 1 view .LVU306 + 1037 .loc 1 1457 14 is_stmt 0 view .LVU307 + 1038 0020 5868 ldr r0, [r3, #4] + 1039 .LVL103: + 1040 .loc 1 1457 12 view .LVU308 + 1041 0022 0844 add r0, r0, r1 + 1042 .L86: +1458:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1043 .loc 1 1458 1 view .LVU309 + 1044 0024 7047 bx lr + 1045 .cfi_endproc + 1046 .LFE1204: + 1048 .section .text.ld_clust,"ax",%progbits + 1049 .align 1 + 1050 .syntax unified + 1051 .thumb + 1052 .thumb_func + 1053 .fpu fpv5-d16 + 1055 ld_clust: + 1056 .LVL104: + 1057 .LFB1208: + ARM GAS /tmp/cc5lWXRL.s page 46 + + +1459:Middlewares/Third_Party/FatFs/src/ff.c **** +1460:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_FASTSEEK */ +1461:Middlewares/Third_Party/FatFs/src/ff.c **** +1462:Middlewares/Third_Party/FatFs/src/ff.c **** +1463:Middlewares/Third_Party/FatFs/src/ff.c **** +1464:Middlewares/Third_Party/FatFs/src/ff.c **** +1465:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1466:Middlewares/Third_Party/FatFs/src/ff.c **** /* Directory handling - Set directory index */ +1467:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1468:Middlewares/Third_Party/FatFs/src/ff.c **** +1469:Middlewares/Third_Party/FatFs/src/ff.c **** static +1470:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT dir_sdi ( /* FR_OK(0):succeeded, !=0:error */ +1471:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Pointer to directory object */ +1472:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ofs /* Offset of directory table */ +1473:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1474:Middlewares/Third_Party/FatFs/src/ff.c **** { +1475:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD csz, clst; +1476:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; +1477:Middlewares/Third_Party/FatFs/src/ff.c **** +1478:Middlewares/Third_Party/FatFs/src/ff.c **** +1479:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs >= (DWORD)((_FS_EXFAT && fs->fs_type == FS_EXFAT) ? MAX_DIR_EX : MAX_DIR) || ofs % SZDIRE) +1480:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_INT_ERR; +1481:Middlewares/Third_Party/FatFs/src/ff.c **** } +1482:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dptr = ofs; /* Set current offset */ +1483:Middlewares/Third_Party/FatFs/src/ff.c **** clst = dp->obj.sclust; /* Table start cluster (0:root) */ +1484:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0 && fs->fs_type >= FS_FAT32) { /* Replace cluster# 0 with root cluster# */ +1485:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fs->dirbase; +1486:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT) dp->obj.stat = 0; /* exFAT: Root dir has an FAT chain */ +1487:Middlewares/Third_Party/FatFs/src/ff.c **** } +1488:Middlewares/Third_Party/FatFs/src/ff.c **** +1489:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) { /* Static table (root-directory in FAT12/16) */ +1490:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs / SZDIRE >= fs->n_rootdir) return FR_INT_ERR; /* Is index out of range? */ +1491:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = fs->dirbase; +1492:Middlewares/Third_Party/FatFs/src/ff.c **** +1493:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Dynamic table (sub-directory or root-directory in FAT32+) */ +1494:Middlewares/Third_Party/FatFs/src/ff.c **** csz = (DWORD)fs->csize * SS(fs); /* Bytes per cluster */ +1495:Middlewares/Third_Party/FatFs/src/ff.c **** while (ofs >= csz) { /* Follow cluster chain */ +1496:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&dp->obj, clst); /* Get next cluster */ +1497:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ +1498:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Reached to end of table or internal +1499:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= csz; +1500:Middlewares/Third_Party/FatFs/src/ff.c **** } +1501:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = clust2sect(fs, clst); +1502:Middlewares/Third_Party/FatFs/src/ff.c **** } +1503:Middlewares/Third_Party/FatFs/src/ff.c **** dp->clust = clst; /* Current cluster# */ +1504:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dp->sect) return FR_INT_ERR; +1505:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect += ofs / SS(fs); /* Sector# of the directory entry */ +1506:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir = fs->win + (ofs % SS(fs)); /* Pointer to the entry in the win[] */ +1507:Middlewares/Third_Party/FatFs/src/ff.c **** +1508:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +1509:Middlewares/Third_Party/FatFs/src/ff.c **** } +1510:Middlewares/Third_Party/FatFs/src/ff.c **** +1511:Middlewares/Third_Party/FatFs/src/ff.c **** +1512:Middlewares/Third_Party/FatFs/src/ff.c **** +1513:Middlewares/Third_Party/FatFs/src/ff.c **** +1514:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1515:Middlewares/Third_Party/FatFs/src/ff.c **** /* Directory handling - Move directory table index next */ + ARM GAS /tmp/cc5lWXRL.s page 47 + + +1516:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1517:Middlewares/Third_Party/FatFs/src/ff.c **** +1518:Middlewares/Third_Party/FatFs/src/ff.c **** static +1519:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT dir_next ( /* FR_OK(0):succeeded, FR_NO_FILE:End of table, FR_DENIED:Could not stretch */ +1520:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Pointer to the directory object */ +1521:Middlewares/Third_Party/FatFs/src/ff.c **** int stretch /* 0: Do not stretch table, 1: Stretch table if needed */ +1522:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1523:Middlewares/Third_Party/FatFs/src/ff.c **** { +1524:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ofs, clst; +1525:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; +1526:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +1527:Middlewares/Third_Party/FatFs/src/ff.c **** UINT n; +1528:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1529:Middlewares/Third_Party/FatFs/src/ff.c **** +1530:Middlewares/Third_Party/FatFs/src/ff.c **** ofs = dp->dptr + SZDIRE; /* Next entry */ +1531:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dp->sect || ofs >= (DWORD)((_FS_EXFAT && fs->fs_type == FS_EXFAT) ? MAX_DIR_EX : MAX_DIR)) re +1532:Middlewares/Third_Party/FatFs/src/ff.c **** +1533:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs % SS(fs) == 0) { /* Sector changed? */ +1534:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect++; /* Next sector */ +1535:Middlewares/Third_Party/FatFs/src/ff.c **** +1536:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dp->clust) { /* Static table */ +1537:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs / SZDIRE >= fs->n_rootdir) { /* Report EOT if it reached end of static table */ +1538:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = 0; return FR_NO_FILE; +1539:Middlewares/Third_Party/FatFs/src/ff.c **** } +1540:Middlewares/Third_Party/FatFs/src/ff.c **** } +1541:Middlewares/Third_Party/FatFs/src/ff.c **** else { /* Dynamic table */ +1542:Middlewares/Third_Party/FatFs/src/ff.c **** if ((ofs / SS(fs) & (fs->csize - 1)) == 0) { /* Cluster changed? */ +1543:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&dp->obj, dp->clust); /* Get next cluster */ +1544:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1) return FR_INT_ERR; /* Internal error */ +1545:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ +1546:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst >= fs->n_fatent) { /* Reached end of dynamic table */ +1547:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +1548:Middlewares/Third_Party/FatFs/src/ff.c **** if (!stretch) { /* If no stretch, report EOT */ +1549:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = 0; return FR_NO_FILE; +1550:Middlewares/Third_Party/FatFs/src/ff.c **** } +1551:Middlewares/Third_Party/FatFs/src/ff.c **** clst = create_chain(&dp->obj, dp->clust); /* Allocate a cluster */ +1552:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) return FR_DENIED; /* No free cluster */ +1553:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) return FR_INT_ERR; /* Internal error */ +1554:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ +1555:Middlewares/Third_Party/FatFs/src/ff.c **** /* Clean-up the stretched table */ +1556:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT) dp->obj.stat |= 4; /* The directory needs to be updated */ +1557:Middlewares/Third_Party/FatFs/src/ff.c **** if (sync_window(fs) != FR_OK) return FR_DISK_ERR; /* Flush disk access window */ +1558:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(fs->win, 0, SS(fs)); /* Clear window buffer */ +1559:Middlewares/Third_Party/FatFs/src/ff.c **** for (n = 0, fs->winsect = clust2sect(fs, clst); n < fs->csize; n++, fs->winsect++) { /* Fill t +1560:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +1561:Middlewares/Third_Party/FatFs/src/ff.c **** if (sync_window(fs) != FR_OK) return FR_DISK_ERR; +1562:Middlewares/Third_Party/FatFs/src/ff.c **** } +1563:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect -= n; /* Restore window offset */ +1564:Middlewares/Third_Party/FatFs/src/ff.c **** #else +1565:Middlewares/Third_Party/FatFs/src/ff.c **** if (!stretch) dp->sect = 0; /* (this line is to suppress compiler warning) */ +1566:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = 0; return FR_NO_FILE; /* Report EOT */ +1567:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1568:Middlewares/Third_Party/FatFs/src/ff.c **** } +1569:Middlewares/Third_Party/FatFs/src/ff.c **** dp->clust = clst; /* Initialize data for new cluster */ +1570:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = clust2sect(fs, clst); +1571:Middlewares/Third_Party/FatFs/src/ff.c **** } +1572:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 48 + + +1573:Middlewares/Third_Party/FatFs/src/ff.c **** } +1574:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dptr = ofs; /* Current entry */ +1575:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir = fs->win + ofs % SS(fs); /* Pointer to the entry in the win[] */ +1576:Middlewares/Third_Party/FatFs/src/ff.c **** +1577:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +1578:Middlewares/Third_Party/FatFs/src/ff.c **** } +1579:Middlewares/Third_Party/FatFs/src/ff.c **** +1580:Middlewares/Third_Party/FatFs/src/ff.c **** +1581:Middlewares/Third_Party/FatFs/src/ff.c **** +1582:Middlewares/Third_Party/FatFs/src/ff.c **** +1583:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +1584:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1585:Middlewares/Third_Party/FatFs/src/ff.c **** /* Directory handling - Reserve a block of directory entries */ +1586:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1587:Middlewares/Third_Party/FatFs/src/ff.c **** +1588:Middlewares/Third_Party/FatFs/src/ff.c **** static +1589:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT dir_alloc ( /* FR_OK(0):succeeded, !=0:error */ +1590:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Pointer to the directory object */ +1591:Middlewares/Third_Party/FatFs/src/ff.c **** UINT nent /* Number of contiguous entries to allocate */ +1592:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1593:Middlewares/Third_Party/FatFs/src/ff.c **** { +1594:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +1595:Middlewares/Third_Party/FatFs/src/ff.c **** UINT n; +1596:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; +1597:Middlewares/Third_Party/FatFs/src/ff.c **** +1598:Middlewares/Third_Party/FatFs/src/ff.c **** +1599:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); +1600:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +1601:Middlewares/Third_Party/FatFs/src/ff.c **** n = 0; +1602:Middlewares/Third_Party/FatFs/src/ff.c **** do { +1603:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); +1604:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +1605:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +1606:Middlewares/Third_Party/FatFs/src/ff.c **** if ((fs->fs_type == FS_EXFAT) ? (int)((dp->dir[XDIR_Type] & 0x80) == 0) : (int)(dp->dir[DIR_Name +1607:Middlewares/Third_Party/FatFs/src/ff.c **** #else +1608:Middlewares/Third_Party/FatFs/src/ff.c **** if (dp->dir[DIR_Name] == DDEM || dp->dir[DIR_Name] == 0) { +1609:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1610:Middlewares/Third_Party/FatFs/src/ff.c **** if (++n == nent) break; /* A block of contiguous free entries is found */ +1611:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +1612:Middlewares/Third_Party/FatFs/src/ff.c **** n = 0; /* Not a blank entry. Restart to search */ +1613:Middlewares/Third_Party/FatFs/src/ff.c **** } +1614:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(dp, 1); +1615:Middlewares/Third_Party/FatFs/src/ff.c **** } while (res == FR_OK); /* Next entry with table stretch enabled */ +1616:Middlewares/Third_Party/FatFs/src/ff.c **** } +1617:Middlewares/Third_Party/FatFs/src/ff.c **** +1618:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_DENIED; /* No directory entry to allocate */ +1619:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +1620:Middlewares/Third_Party/FatFs/src/ff.c **** } +1621:Middlewares/Third_Party/FatFs/src/ff.c **** +1622:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ +1623:Middlewares/Third_Party/FatFs/src/ff.c **** +1624:Middlewares/Third_Party/FatFs/src/ff.c **** +1625:Middlewares/Third_Party/FatFs/src/ff.c **** +1626:Middlewares/Third_Party/FatFs/src/ff.c **** +1627:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1628:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT: Directory handling - Load/Store start cluster number */ +1629:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + ARM GAS /tmp/cc5lWXRL.s page 49 + + +1630:Middlewares/Third_Party/FatFs/src/ff.c **** +1631:Middlewares/Third_Party/FatFs/src/ff.c **** static +1632:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ld_clust ( /* Returns the top cluster value of the SFN entry */ +1633:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs, /* Pointer to the fs object */ +1634:Middlewares/Third_Party/FatFs/src/ff.c **** const BYTE* dir /* Pointer to the key entry */ +1635:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1636:Middlewares/Third_Party/FatFs/src/ff.c **** { + 1058 .loc 1 1636 1 is_stmt 1 view -0 + 1059 .cfi_startproc + 1060 @ args = 0, pretend = 0, frame = 0 + 1061 @ frame_needed = 0, uses_anonymous_args = 0 + 1062 .loc 1 1636 1 is_stmt 0 view .LVU311 + 1063 0000 70B5 push {r4, r5, r6, lr} + 1064 .LCFI10: + 1065 .cfi_def_cfa_offset 16 + 1066 .cfi_offset 4, -16 + 1067 .cfi_offset 5, -12 + 1068 .cfi_offset 6, -8 + 1069 .cfi_offset 14, -4 + 1070 0002 0646 mov r6, r0 + 1071 0004 0D46 mov r5, r1 +1637:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD cl; + 1072 .loc 1 1637 2 is_stmt 1 view .LVU312 +1638:Middlewares/Third_Party/FatFs/src/ff.c **** +1639:Middlewares/Third_Party/FatFs/src/ff.c **** cl = ld_word(dir + DIR_FstClusLO); + 1073 .loc 1 1639 2 view .LVU313 + 1074 .loc 1 1639 7 is_stmt 0 view .LVU314 + 1075 0006 01F11A00 add r0, r1, #26 + 1076 .LVL105: + 1077 .loc 1 1639 7 view .LVU315 + 1078 000a FFF7FEFF bl ld_word + 1079 .LVL106: +1640:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT32) { + 1080 .loc 1 1640 2 is_stmt 1 view .LVU316 + 1081 .loc 1 1640 8 is_stmt 0 view .LVU317 + 1082 000e 3378 ldrb r3, [r6] @ zero_extendqisi2 + 1083 .loc 1 1640 5 view .LVU318 + 1084 0010 032B cmp r3, #3 + 1085 0012 00D0 beq .L94 + 1086 .LVL107: + 1087 .L91: +1641:Middlewares/Third_Party/FatFs/src/ff.c **** cl |= (DWORD)ld_word(dir + DIR_FstClusHI) << 16; +1642:Middlewares/Third_Party/FatFs/src/ff.c **** } +1643:Middlewares/Third_Party/FatFs/src/ff.c **** +1644:Middlewares/Third_Party/FatFs/src/ff.c **** return cl; +1645:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1088 .loc 1 1645 1 view .LVU319 + 1089 0014 70BD pop {r4, r5, r6, pc} + 1090 .LVL108: + 1091 .L94: + 1092 .loc 1 1645 1 view .LVU320 + 1093 0016 0446 mov r4, r0 +1641:Middlewares/Third_Party/FatFs/src/ff.c **** cl |= (DWORD)ld_word(dir + DIR_FstClusHI) << 16; + 1094 .loc 1 1641 3 is_stmt 1 view .LVU321 +1641:Middlewares/Third_Party/FatFs/src/ff.c **** cl |= (DWORD)ld_word(dir + DIR_FstClusHI) << 16; + 1095 .loc 1 1641 16 is_stmt 0 view .LVU322 + 1096 0018 05F11400 add r0, r5, #20 + ARM GAS /tmp/cc5lWXRL.s page 50 + + + 1097 .LVL109: +1641:Middlewares/Third_Party/FatFs/src/ff.c **** cl |= (DWORD)ld_word(dir + DIR_FstClusHI) << 16; + 1098 .loc 1 1641 16 view .LVU323 + 1099 001c FFF7FEFF bl ld_word + 1100 .LVL110: +1641:Middlewares/Third_Party/FatFs/src/ff.c **** cl |= (DWORD)ld_word(dir + DIR_FstClusHI) << 16; + 1101 .loc 1 1641 6 view .LVU324 + 1102 0020 44EA0040 orr r0, r4, r0, lsl #16 + 1103 .LVL111: +1644:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1104 .loc 1 1644 2 is_stmt 1 view .LVU325 +1644:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1105 .loc 1 1644 9 is_stmt 0 view .LVU326 + 1106 0024 F6E7 b .L91 + 1107 .cfi_endproc + 1108 .LFE1208: + 1110 .section .text.st_clust,"ax",%progbits + 1111 .align 1 + 1112 .syntax unified + 1113 .thumb + 1114 .thumb_func + 1115 .fpu fpv5-d16 + 1117 st_clust: + 1118 .LVL112: + 1119 .LFB1209: +1646:Middlewares/Third_Party/FatFs/src/ff.c **** +1647:Middlewares/Third_Party/FatFs/src/ff.c **** +1648:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +1649:Middlewares/Third_Party/FatFs/src/ff.c **** static +1650:Middlewares/Third_Party/FatFs/src/ff.c **** void st_clust ( +1651:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs, /* Pointer to the fs object */ +1652:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE* dir, /* Pointer to the key entry */ +1653:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD cl /* Value to be set */ +1654:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1655:Middlewares/Third_Party/FatFs/src/ff.c **** { + 1120 .loc 1 1655 1 is_stmt 1 view -0 + 1121 .cfi_startproc + 1122 @ args = 0, pretend = 0, frame = 0 + 1123 @ frame_needed = 0, uses_anonymous_args = 0 + 1124 .loc 1 1655 1 is_stmt 0 view .LVU328 + 1125 0000 70B5 push {r4, r5, r6, lr} + 1126 .LCFI11: + 1127 .cfi_def_cfa_offset 16 + 1128 .cfi_offset 4, -16 + 1129 .cfi_offset 5, -12 + 1130 .cfi_offset 6, -8 + 1131 .cfi_offset 14, -4 + 1132 0002 0646 mov r6, r0 + 1133 0004 0C46 mov r4, r1 + 1134 0006 1546 mov r5, r2 +1656:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dir + DIR_FstClusLO, (WORD)cl); + 1135 .loc 1 1656 2 is_stmt 1 view .LVU329 + 1136 0008 91B2 uxth r1, r2 + 1137 .LVL113: + 1138 .loc 1 1656 2 is_stmt 0 view .LVU330 + 1139 000a 04F11A00 add r0, r4, #26 + 1140 .LVL114: + ARM GAS /tmp/cc5lWXRL.s page 51 + + + 1141 .loc 1 1656 2 view .LVU331 + 1142 000e FFF7FEFF bl st_word + 1143 .LVL115: +1657:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT32) { + 1144 .loc 1 1657 2 is_stmt 1 view .LVU332 + 1145 .loc 1 1657 8 is_stmt 0 view .LVU333 + 1146 0012 3378 ldrb r3, [r6] @ zero_extendqisi2 + 1147 .loc 1 1657 5 view .LVU334 + 1148 0014 032B cmp r3, #3 + 1149 0016 00D0 beq .L98 + 1150 .L95: +1658:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dir + DIR_FstClusHI, (WORD)(cl >> 16)); +1659:Middlewares/Third_Party/FatFs/src/ff.c **** } +1660:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1151 .loc 1 1660 1 view .LVU335 + 1152 0018 70BD pop {r4, r5, r6, pc} + 1153 .LVL116: + 1154 .L98: +1658:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dir + DIR_FstClusHI, (WORD)(cl >> 16)); + 1155 .loc 1 1658 3 is_stmt 1 view .LVU336 + 1156 001a 290C lsrs r1, r5, #16 + 1157 001c 04F11400 add r0, r4, #20 + 1158 0020 FFF7FEFF bl st_word + 1159 .LVL117: + 1160 .loc 1 1660 1 is_stmt 0 view .LVU337 + 1161 0024 F8E7 b .L95 + 1162 .cfi_endproc + 1163 .LFE1209: + 1165 .section .text.get_fileinfo,"ax",%progbits + 1166 .align 1 + 1167 .syntax unified + 1168 .thumb + 1169 .thumb_func + 1170 .fpu fpv5-d16 + 1172 get_fileinfo: + 1173 .LVL118: + 1174 .LFB1214: +1661:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1662:Middlewares/Third_Party/FatFs/src/ff.c **** +1663:Middlewares/Third_Party/FatFs/src/ff.c **** +1664:Middlewares/Third_Party/FatFs/src/ff.c **** +1665:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 +1666:Middlewares/Third_Party/FatFs/src/ff.c **** /*------------------------------------------------------------------------*/ +1667:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT-LFN: LFN handling */ +1668:Middlewares/Third_Party/FatFs/src/ff.c **** /*------------------------------------------------------------------------*/ +1669:Middlewares/Third_Party/FatFs/src/ff.c **** static +1670:Middlewares/Third_Party/FatFs/src/ff.c **** const BYTE LfnOfs[] = {1,3,5,7,9,14,16,18,20,22,24,28,30}; /* Offset of LFN characters in the direc +1671:Middlewares/Third_Party/FatFs/src/ff.c **** +1672:Middlewares/Third_Party/FatFs/src/ff.c **** +1673:Middlewares/Third_Party/FatFs/src/ff.c **** /*--------------------------------------------------------*/ +1674:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT-LFN: Compare a part of file name with an LFN entry */ +1675:Middlewares/Third_Party/FatFs/src/ff.c **** /*--------------------------------------------------------*/ +1676:Middlewares/Third_Party/FatFs/src/ff.c **** static +1677:Middlewares/Third_Party/FatFs/src/ff.c **** int cmp_lfn ( /* 1:matched, 0:not matched */ +1678:Middlewares/Third_Party/FatFs/src/ff.c **** const WCHAR* lfnbuf, /* Pointer to the LFN working buffer to be compared */ +1679:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE* dir /* Pointer to the directory entry containing the part of LFN */ +1680:Middlewares/Third_Party/FatFs/src/ff.c **** ) + ARM GAS /tmp/cc5lWXRL.s page 52 + + +1681:Middlewares/Third_Party/FatFs/src/ff.c **** { +1682:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, s; +1683:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR wc, uc; +1684:Middlewares/Third_Party/FatFs/src/ff.c **** +1685:Middlewares/Third_Party/FatFs/src/ff.c **** +1686:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(dir + LDIR_FstClusLO) != 0) return 0; /* Check LDIR_FstClusLO */ +1687:Middlewares/Third_Party/FatFs/src/ff.c **** +1688:Middlewares/Third_Party/FatFs/src/ff.c **** i = ((dir[LDIR_Ord] & 0x3F) - 1) * 13; /* Offset in the LFN buffer */ +1689:Middlewares/Third_Party/FatFs/src/ff.c **** +1690:Middlewares/Third_Party/FatFs/src/ff.c **** for (wc = 1, s = 0; s < 13; s++) { /* Process all characters in the entry */ +1691:Middlewares/Third_Party/FatFs/src/ff.c **** uc = ld_word(dir + LfnOfs[s]); /* Pick an LFN character */ +1692:Middlewares/Third_Party/FatFs/src/ff.c **** if (wc) { +1693:Middlewares/Third_Party/FatFs/src/ff.c **** if (i >= _MAX_LFN || ff_wtoupper(uc) != ff_wtoupper(lfnbuf[i++])) { /* Compare it */ +1694:Middlewares/Third_Party/FatFs/src/ff.c **** return 0; /* Not matched */ +1695:Middlewares/Third_Party/FatFs/src/ff.c **** } +1696:Middlewares/Third_Party/FatFs/src/ff.c **** wc = uc; +1697:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +1698:Middlewares/Third_Party/FatFs/src/ff.c **** if (uc != 0xFFFF) return 0; /* Check filler */ +1699:Middlewares/Third_Party/FatFs/src/ff.c **** } +1700:Middlewares/Third_Party/FatFs/src/ff.c **** } +1701:Middlewares/Third_Party/FatFs/src/ff.c **** +1702:Middlewares/Third_Party/FatFs/src/ff.c **** if ((dir[LDIR_Ord] & LLEF) && wc && lfnbuf[i]) return 0; /* Last segment matched but different len +1703:Middlewares/Third_Party/FatFs/src/ff.c **** +1704:Middlewares/Third_Party/FatFs/src/ff.c **** return 1; /* The part of LFN matched */ +1705:Middlewares/Third_Party/FatFs/src/ff.c **** } +1706:Middlewares/Third_Party/FatFs/src/ff.c **** +1707:Middlewares/Third_Party/FatFs/src/ff.c **** +1708:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 || _USE_LABEL || _FS_EXFAT +1709:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------*/ +1710:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT-LFN: Pick a part of file name from an LFN entry */ +1711:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------*/ +1712:Middlewares/Third_Party/FatFs/src/ff.c **** static +1713:Middlewares/Third_Party/FatFs/src/ff.c **** int pick_lfn ( /* 1:succeeded, 0:buffer overflow or invalid LFN entry */ +1714:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR* lfnbuf, /* Pointer to the LFN working buffer */ +1715:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE* dir /* Pointer to the LFN entry */ +1716:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1717:Middlewares/Third_Party/FatFs/src/ff.c **** { +1718:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, s; +1719:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR wc, uc; +1720:Middlewares/Third_Party/FatFs/src/ff.c **** +1721:Middlewares/Third_Party/FatFs/src/ff.c **** +1722:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(dir + LDIR_FstClusLO) != 0) return 0; /* Check LDIR_FstClusLO is 0 */ +1723:Middlewares/Third_Party/FatFs/src/ff.c **** +1724:Middlewares/Third_Party/FatFs/src/ff.c **** i = ((dir[LDIR_Ord] & ~LLEF) - 1) * 13; /* Offset in the LFN buffer */ +1725:Middlewares/Third_Party/FatFs/src/ff.c **** +1726:Middlewares/Third_Party/FatFs/src/ff.c **** for (wc = 1, s = 0; s < 13; s++) { /* Process all characters in the entry */ +1727:Middlewares/Third_Party/FatFs/src/ff.c **** uc = ld_word(dir + LfnOfs[s]); /* Pick an LFN character */ +1728:Middlewares/Third_Party/FatFs/src/ff.c **** if (wc) { +1729:Middlewares/Third_Party/FatFs/src/ff.c **** if (i >= _MAX_LFN) return 0; /* Buffer overflow? */ +1730:Middlewares/Third_Party/FatFs/src/ff.c **** lfnbuf[i++] = wc = uc; /* Store it */ +1731:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +1732:Middlewares/Third_Party/FatFs/src/ff.c **** if (uc != 0xFFFF) return 0; /* Check filler */ +1733:Middlewares/Third_Party/FatFs/src/ff.c **** } +1734:Middlewares/Third_Party/FatFs/src/ff.c **** } +1735:Middlewares/Third_Party/FatFs/src/ff.c **** +1736:Middlewares/Third_Party/FatFs/src/ff.c **** if (dir[LDIR_Ord] & LLEF) { /* Put terminator if it is the last LFN part */ +1737:Middlewares/Third_Party/FatFs/src/ff.c **** if (i >= _MAX_LFN) return 0; /* Buffer overflow? */ + ARM GAS /tmp/cc5lWXRL.s page 53 + + +1738:Middlewares/Third_Party/FatFs/src/ff.c **** lfnbuf[i] = 0; +1739:Middlewares/Third_Party/FatFs/src/ff.c **** } +1740:Middlewares/Third_Party/FatFs/src/ff.c **** +1741:Middlewares/Third_Party/FatFs/src/ff.c **** return 1; /* The part of LFN is valid */ +1742:Middlewares/Third_Party/FatFs/src/ff.c **** } +1743:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1744:Middlewares/Third_Party/FatFs/src/ff.c **** +1745:Middlewares/Third_Party/FatFs/src/ff.c **** +1746:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +1747:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------*/ +1748:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT-LFN: Create an entry of LFN entries */ +1749:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------*/ +1750:Middlewares/Third_Party/FatFs/src/ff.c **** static +1751:Middlewares/Third_Party/FatFs/src/ff.c **** void put_lfn ( +1752:Middlewares/Third_Party/FatFs/src/ff.c **** const WCHAR* lfn, /* Pointer to the LFN */ +1753:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE* dir, /* Pointer to the LFN entry to be created */ +1754:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE ord, /* LFN order (1-20) */ +1755:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE sum /* Checksum of the corresponding SFN */ +1756:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1757:Middlewares/Third_Party/FatFs/src/ff.c **** { +1758:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, s; +1759:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR wc; +1760:Middlewares/Third_Party/FatFs/src/ff.c **** +1761:Middlewares/Third_Party/FatFs/src/ff.c **** +1762:Middlewares/Third_Party/FatFs/src/ff.c **** dir[LDIR_Chksum] = sum; /* Set checksum */ +1763:Middlewares/Third_Party/FatFs/src/ff.c **** dir[LDIR_Attr] = AM_LFN; /* Set attribute. LFN entry */ +1764:Middlewares/Third_Party/FatFs/src/ff.c **** dir[LDIR_Type] = 0; +1765:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dir + LDIR_FstClusLO, 0); +1766:Middlewares/Third_Party/FatFs/src/ff.c **** +1767:Middlewares/Third_Party/FatFs/src/ff.c **** i = (ord - 1) * 13; /* Get offset in the LFN working buffer */ +1768:Middlewares/Third_Party/FatFs/src/ff.c **** s = wc = 0; +1769:Middlewares/Third_Party/FatFs/src/ff.c **** do { +1770:Middlewares/Third_Party/FatFs/src/ff.c **** if (wc != 0xFFFF) wc = lfn[i++]; /* Get an effective character */ +1771:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dir + LfnOfs[s], wc); /* Put it */ +1772:Middlewares/Third_Party/FatFs/src/ff.c **** if (wc == 0) wc = 0xFFFF; /* Padding characters for left locations */ +1773:Middlewares/Third_Party/FatFs/src/ff.c **** } while (++s < 13); +1774:Middlewares/Third_Party/FatFs/src/ff.c **** if (wc == 0xFFFF || !lfn[i]) ord |= LLEF; /* Last LFN part is the start of LFN sequence */ +1775:Middlewares/Third_Party/FatFs/src/ff.c **** dir[LDIR_Ord] = ord; /* Set the LFN order */ +1776:Middlewares/Third_Party/FatFs/src/ff.c **** } +1777:Middlewares/Third_Party/FatFs/src/ff.c **** +1778:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ +1779:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_LFN != 0 */ +1780:Middlewares/Third_Party/FatFs/src/ff.c **** +1781:Middlewares/Third_Party/FatFs/src/ff.c **** +1782:Middlewares/Third_Party/FatFs/src/ff.c **** +1783:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 && !_FS_READONLY +1784:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1785:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT-LFN: Create a Numbered SFN */ +1786:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1787:Middlewares/Third_Party/FatFs/src/ff.c **** +1788:Middlewares/Third_Party/FatFs/src/ff.c **** static +1789:Middlewares/Third_Party/FatFs/src/ff.c **** void gen_numname ( +1790:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE* dst, /* Pointer to the buffer to store numbered SFN */ +1791:Middlewares/Third_Party/FatFs/src/ff.c **** const BYTE* src, /* Pointer to SFN */ +1792:Middlewares/Third_Party/FatFs/src/ff.c **** const WCHAR* lfn, /* Pointer to LFN */ +1793:Middlewares/Third_Party/FatFs/src/ff.c **** UINT seq /* Sequence number */ +1794:Middlewares/Third_Party/FatFs/src/ff.c **** ) + ARM GAS /tmp/cc5lWXRL.s page 54 + + +1795:Middlewares/Third_Party/FatFs/src/ff.c **** { +1796:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE ns[8], c; +1797:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, j; +1798:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR wc; +1799:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD sr; +1800:Middlewares/Third_Party/FatFs/src/ff.c **** +1801:Middlewares/Third_Party/FatFs/src/ff.c **** +1802:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dst, src, 11); +1803:Middlewares/Third_Party/FatFs/src/ff.c **** +1804:Middlewares/Third_Party/FatFs/src/ff.c **** if (seq > 5) { /* In case of many collisions, generate a hash number instead of sequential number +1805:Middlewares/Third_Party/FatFs/src/ff.c **** sr = seq; +1806:Middlewares/Third_Party/FatFs/src/ff.c **** while (*lfn) { /* Create a CRC */ +1807:Middlewares/Third_Party/FatFs/src/ff.c **** wc = *lfn++; +1808:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < 16; i++) { +1809:Middlewares/Third_Party/FatFs/src/ff.c **** sr = (sr << 1) + (wc & 1); +1810:Middlewares/Third_Party/FatFs/src/ff.c **** wc >>= 1; +1811:Middlewares/Third_Party/FatFs/src/ff.c **** if (sr & 0x10000) sr ^= 0x11021; +1812:Middlewares/Third_Party/FatFs/src/ff.c **** } +1813:Middlewares/Third_Party/FatFs/src/ff.c **** } +1814:Middlewares/Third_Party/FatFs/src/ff.c **** seq = (UINT)sr; +1815:Middlewares/Third_Party/FatFs/src/ff.c **** } +1816:Middlewares/Third_Party/FatFs/src/ff.c **** +1817:Middlewares/Third_Party/FatFs/src/ff.c **** /* itoa (hexdecimal) */ +1818:Middlewares/Third_Party/FatFs/src/ff.c **** i = 7; +1819:Middlewares/Third_Party/FatFs/src/ff.c **** do { +1820:Middlewares/Third_Party/FatFs/src/ff.c **** c = (BYTE)((seq % 16) + '0'); +1821:Middlewares/Third_Party/FatFs/src/ff.c **** if (c > '9') c += 7; +1822:Middlewares/Third_Party/FatFs/src/ff.c **** ns[i--] = c; +1823:Middlewares/Third_Party/FatFs/src/ff.c **** seq /= 16; +1824:Middlewares/Third_Party/FatFs/src/ff.c **** } while (seq); +1825:Middlewares/Third_Party/FatFs/src/ff.c **** ns[i] = '~'; +1826:Middlewares/Third_Party/FatFs/src/ff.c **** +1827:Middlewares/Third_Party/FatFs/src/ff.c **** /* Append the number */ +1828:Middlewares/Third_Party/FatFs/src/ff.c **** for (j = 0; j < i && dst[j] != ' '; j++) { +1829:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsDBCS1(dst[j])) { +1830:Middlewares/Third_Party/FatFs/src/ff.c **** if (j == i - 1) break; +1831:Middlewares/Third_Party/FatFs/src/ff.c **** j++; +1832:Middlewares/Third_Party/FatFs/src/ff.c **** } +1833:Middlewares/Third_Party/FatFs/src/ff.c **** } +1834:Middlewares/Third_Party/FatFs/src/ff.c **** do { +1835:Middlewares/Third_Party/FatFs/src/ff.c **** dst[j++] = (i < 8) ? ns[i++] : ' '; +1836:Middlewares/Third_Party/FatFs/src/ff.c **** } while (j < 8); +1837:Middlewares/Third_Party/FatFs/src/ff.c **** } +1838:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_LFN != 0 && !_FS_READONLY */ +1839:Middlewares/Third_Party/FatFs/src/ff.c **** +1840:Middlewares/Third_Party/FatFs/src/ff.c **** +1841:Middlewares/Third_Party/FatFs/src/ff.c **** +1842:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 +1843:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1844:Middlewares/Third_Party/FatFs/src/ff.c **** /* FAT-LFN: Calculate checksum of an SFN entry */ +1845:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1846:Middlewares/Third_Party/FatFs/src/ff.c **** +1847:Middlewares/Third_Party/FatFs/src/ff.c **** static +1848:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE sum_sfn ( +1849:Middlewares/Third_Party/FatFs/src/ff.c **** const BYTE* dir /* Pointer to the SFN entry */ +1850:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1851:Middlewares/Third_Party/FatFs/src/ff.c **** { + ARM GAS /tmp/cc5lWXRL.s page 55 + + +1852:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE sum = 0; +1853:Middlewares/Third_Party/FatFs/src/ff.c **** UINT n = 11; +1854:Middlewares/Third_Party/FatFs/src/ff.c **** +1855:Middlewares/Third_Party/FatFs/src/ff.c **** do { +1856:Middlewares/Third_Party/FatFs/src/ff.c **** sum = (sum >> 1) + (sum << 7) + *dir++; +1857:Middlewares/Third_Party/FatFs/src/ff.c **** } while (--n); +1858:Middlewares/Third_Party/FatFs/src/ff.c **** return sum; +1859:Middlewares/Third_Party/FatFs/src/ff.c **** } +1860:Middlewares/Third_Party/FatFs/src/ff.c **** +1861:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_LFN != 0 */ +1862:Middlewares/Third_Party/FatFs/src/ff.c **** +1863:Middlewares/Third_Party/FatFs/src/ff.c **** +1864:Middlewares/Third_Party/FatFs/src/ff.c **** +1865:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +1866:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1867:Middlewares/Third_Party/FatFs/src/ff.c **** /* exFAT: Checksum */ +1868:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +1869:Middlewares/Third_Party/FatFs/src/ff.c **** +1870:Middlewares/Third_Party/FatFs/src/ff.c **** static +1871:Middlewares/Third_Party/FatFs/src/ff.c **** WORD xdir_sum ( /* Get checksum of the directoly block */ +1872:Middlewares/Third_Party/FatFs/src/ff.c **** const BYTE* dir /* Directory entry block to be calculated */ +1873:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1874:Middlewares/Third_Party/FatFs/src/ff.c **** { +1875:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, szblk; +1876:Middlewares/Third_Party/FatFs/src/ff.c **** WORD sum; +1877:Middlewares/Third_Party/FatFs/src/ff.c **** +1878:Middlewares/Third_Party/FatFs/src/ff.c **** +1879:Middlewares/Third_Party/FatFs/src/ff.c **** szblk = (dir[XDIR_NumSec] + 1) * SZDIRE; +1880:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = sum = 0; i < szblk; i++) { +1881:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == XDIR_SetSum) { /* Skip sum field */ +1882:Middlewares/Third_Party/FatFs/src/ff.c **** i++; +1883:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +1884:Middlewares/Third_Party/FatFs/src/ff.c **** sum = ((sum & 1) ? 0x8000 : 0) + (sum >> 1) + dir[i]; +1885:Middlewares/Third_Party/FatFs/src/ff.c **** } +1886:Middlewares/Third_Party/FatFs/src/ff.c **** } +1887:Middlewares/Third_Party/FatFs/src/ff.c **** return sum; +1888:Middlewares/Third_Party/FatFs/src/ff.c **** } +1889:Middlewares/Third_Party/FatFs/src/ff.c **** +1890:Middlewares/Third_Party/FatFs/src/ff.c **** +1891:Middlewares/Third_Party/FatFs/src/ff.c **** +1892:Middlewares/Third_Party/FatFs/src/ff.c **** static +1893:Middlewares/Third_Party/FatFs/src/ff.c **** WORD xname_sum ( /* Get check sum (to be used as hash) of the name */ +1894:Middlewares/Third_Party/FatFs/src/ff.c **** const WCHAR* name /* File name to be calculated */ +1895:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1896:Middlewares/Third_Party/FatFs/src/ff.c **** { +1897:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR chr; +1898:Middlewares/Third_Party/FatFs/src/ff.c **** WORD sum = 0; +1899:Middlewares/Third_Party/FatFs/src/ff.c **** +1900:Middlewares/Third_Party/FatFs/src/ff.c **** +1901:Middlewares/Third_Party/FatFs/src/ff.c **** while ((chr = *name++) != 0) { +1902:Middlewares/Third_Party/FatFs/src/ff.c **** chr = ff_wtoupper(chr); /* File name needs to be ignored case */ +1903:Middlewares/Third_Party/FatFs/src/ff.c **** sum = ((sum & 1) ? 0x8000 : 0) + (sum >> 1) + (chr & 0xFF); +1904:Middlewares/Third_Party/FatFs/src/ff.c **** sum = ((sum & 1) ? 0x8000 : 0) + (sum >> 1) + (chr >> 8); +1905:Middlewares/Third_Party/FatFs/src/ff.c **** } +1906:Middlewares/Third_Party/FatFs/src/ff.c **** return sum; +1907:Middlewares/Third_Party/FatFs/src/ff.c **** } +1908:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 56 + + +1909:Middlewares/Third_Party/FatFs/src/ff.c **** +1910:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY && _USE_MKFS +1911:Middlewares/Third_Party/FatFs/src/ff.c **** static +1912:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD xsum32 ( +1913:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE dat, /* Data to be sumed */ +1914:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD sum /* Previous value */ +1915:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1916:Middlewares/Third_Party/FatFs/src/ff.c **** { +1917:Middlewares/Third_Party/FatFs/src/ff.c **** sum = ((sum & 1) ? 0x80000000 : 0) + (sum >> 1) + dat; +1918:Middlewares/Third_Party/FatFs/src/ff.c **** return sum; +1919:Middlewares/Third_Party/FatFs/src/ff.c **** } +1920:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1921:Middlewares/Third_Party/FatFs/src/ff.c **** +1922:Middlewares/Third_Party/FatFs/src/ff.c **** +1923:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 +1924:Middlewares/Third_Party/FatFs/src/ff.c **** /*------------------------------------------------------*/ +1925:Middlewares/Third_Party/FatFs/src/ff.c **** /* exFAT: Get object information from a directory block */ +1926:Middlewares/Third_Party/FatFs/src/ff.c **** /*------------------------------------------------------*/ +1927:Middlewares/Third_Party/FatFs/src/ff.c **** +1928:Middlewares/Third_Party/FatFs/src/ff.c **** static +1929:Middlewares/Third_Party/FatFs/src/ff.c **** void get_xdir_info ( +1930:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE* dirb, /* Pointer to the direcotry entry block 85+C0+C1s */ +1931:Middlewares/Third_Party/FatFs/src/ff.c **** FILINFO* fno /* Buffer to store the extracted file information */ +1932:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1933:Middlewares/Third_Party/FatFs/src/ff.c **** { +1934:Middlewares/Third_Party/FatFs/src/ff.c **** UINT di, si; +1935:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR w; +1936:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_LFN_UNICODE +1937:Middlewares/Third_Party/FatFs/src/ff.c **** UINT nc; +1938:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1939:Middlewares/Third_Party/FatFs/src/ff.c **** +1940:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get file name */ +1941:Middlewares/Third_Party/FatFs/src/ff.c **** di = 0; +1942:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE +1943:Middlewares/Third_Party/FatFs/src/ff.c **** for (si = SZDIRE * 2; di < dirb[XDIR_NumName]; si += 2, di++) { +1944:Middlewares/Third_Party/FatFs/src/ff.c **** if ((si % SZDIRE) == 0) si += 2; /* Skip entry type field */ +1945:Middlewares/Third_Party/FatFs/src/ff.c **** w = ld_word(dirb + si); /* Get a character */ +1946:Middlewares/Third_Party/FatFs/src/ff.c **** if (di >= _MAX_LFN) { di = 0; break; } /* Buffer overflow --> inaccessible object name */ +1947:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[di] = w; /* Store it */ +1948:Middlewares/Third_Party/FatFs/src/ff.c **** } +1949:Middlewares/Third_Party/FatFs/src/ff.c **** #else +1950:Middlewares/Third_Party/FatFs/src/ff.c **** for (si = SZDIRE * 2, nc = 0; nc < dirb[XDIR_NumName]; si += 2, nc++) { +1951:Middlewares/Third_Party/FatFs/src/ff.c **** if ((si % SZDIRE) == 0) si += 2; /* Skip entry type field */ +1952:Middlewares/Third_Party/FatFs/src/ff.c **** w = ff_convert(ld_word(dirb + si), 0); /* Get a character and Unicode -> OEM */ +1953:Middlewares/Third_Party/FatFs/src/ff.c **** if (_DF1S && w >= 0x100) { /* Is it a double byte char? (always false at SBCS cfg) */ +1954:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[di++] = (char)(w >> 8); /* Put 1st byte of the DBC */ +1955:Middlewares/Third_Party/FatFs/src/ff.c **** } +1956:Middlewares/Third_Party/FatFs/src/ff.c **** if (w == 0 || di >= _MAX_LFN) { di = 0; break; } /* Invalid char or buffer overflow --> inaccessi +1957:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[di++] = (char)w; +1958:Middlewares/Third_Party/FatFs/src/ff.c **** } +1959:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +1960:Middlewares/Third_Party/FatFs/src/ff.c **** if (di == 0) fno->fname[di++] = '?'; /* Inaccessible object name? */ +1961:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[di] = 0; /* Terminate file name */ +1962:Middlewares/Third_Party/FatFs/src/ff.c **** +1963:Middlewares/Third_Party/FatFs/src/ff.c **** fno->altname[0] = 0; /* No SFN */ +1964:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fattrib = dirb[XDIR_Attr]; /* Attribute */ +1965:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fsize = (fno->fattrib & AM_DIR) ? 0 : ld_qword(dirb + XDIR_FileSize); /* Size */ + ARM GAS /tmp/cc5lWXRL.s page 57 + + +1966:Middlewares/Third_Party/FatFs/src/ff.c **** fno->ftime = ld_word(dirb + XDIR_ModTime + 0); /* Time */ +1967:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fdate = ld_word(dirb + XDIR_ModTime + 2); /* Date */ +1968:Middlewares/Third_Party/FatFs/src/ff.c **** } +1969:Middlewares/Third_Party/FatFs/src/ff.c **** +1970:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 */ +1971:Middlewares/Third_Party/FatFs/src/ff.c **** +1972:Middlewares/Third_Party/FatFs/src/ff.c **** +1973:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------*/ +1974:Middlewares/Third_Party/FatFs/src/ff.c **** /* exFAT: Get a directry entry block */ +1975:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------*/ +1976:Middlewares/Third_Party/FatFs/src/ff.c **** +1977:Middlewares/Third_Party/FatFs/src/ff.c **** static +1978:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT load_xdir ( /* FR_INT_ERR: invalid entry block */ +1979:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp /* Pointer to the reading direcotry object pointing the 85 entry */ +1980:Middlewares/Third_Party/FatFs/src/ff.c **** ) +1981:Middlewares/Third_Party/FatFs/src/ff.c **** { +1982:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +1983:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, sz_ent; +1984:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE* dirb = dp->obj.fs->dirbuf; /* Pointer to the on-memory direcotry entry block 85+C0+C1s */ +1985:Middlewares/Third_Party/FatFs/src/ff.c **** +1986:Middlewares/Third_Party/FatFs/src/ff.c **** +1987:Middlewares/Third_Party/FatFs/src/ff.c **** /* Load 85 entry */ +1988:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(dp->obj.fs, dp->sect); +1989:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +1990:Middlewares/Third_Party/FatFs/src/ff.c **** if (dp->dir[XDIR_Type] != 0x85) return FR_INT_ERR; +1991:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dirb + 0, dp->dir, SZDIRE); +1992:Middlewares/Third_Party/FatFs/src/ff.c **** sz_ent = (dirb[XDIR_NumSec] + 1) * SZDIRE; +1993:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_ent < 3 * SZDIRE || sz_ent > 19 * SZDIRE) return FR_INT_ERR; +1994:Middlewares/Third_Party/FatFs/src/ff.c **** +1995:Middlewares/Third_Party/FatFs/src/ff.c **** /* Load C0 entry */ +1996:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(dp, 0); +1997:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +1998:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(dp->obj.fs, dp->sect); +1999:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +2000:Middlewares/Third_Party/FatFs/src/ff.c **** if (dp->dir[XDIR_Type] != 0xC0) return FR_INT_ERR; +2001:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dirb + SZDIRE, dp->dir, SZDIRE); +2002:Middlewares/Third_Party/FatFs/src/ff.c **** if (MAXDIRB(dirb[XDIR_NumName]) > sz_ent) return FR_INT_ERR; +2003:Middlewares/Third_Party/FatFs/src/ff.c **** +2004:Middlewares/Third_Party/FatFs/src/ff.c **** /* Load C1 entries */ +2005:Middlewares/Third_Party/FatFs/src/ff.c **** i = SZDIRE * 2; /* C1 offset */ +2006:Middlewares/Third_Party/FatFs/src/ff.c **** do { +2007:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(dp, 0); +2008:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +2009:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(dp->obj.fs, dp->sect); +2010:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +2011:Middlewares/Third_Party/FatFs/src/ff.c **** if (dp->dir[XDIR_Type] != 0xC1) return FR_INT_ERR; +2012:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < MAXDIRB(_MAX_LFN)) mem_cpy(dirb + i, dp->dir, SZDIRE); +2013:Middlewares/Third_Party/FatFs/src/ff.c **** } while ((i += SZDIRE) < sz_ent); +2014:Middlewares/Third_Party/FatFs/src/ff.c **** +2015:Middlewares/Third_Party/FatFs/src/ff.c **** /* Sanity check (do it when accessible object name) */ +2016:Middlewares/Third_Party/FatFs/src/ff.c **** if (i <= MAXDIRB(_MAX_LFN)) { +2017:Middlewares/Third_Party/FatFs/src/ff.c **** if (xdir_sum(dirb) != ld_word(dirb + XDIR_SetSum)) return FR_INT_ERR; +2018:Middlewares/Third_Party/FatFs/src/ff.c **** } +2019:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +2020:Middlewares/Third_Party/FatFs/src/ff.c **** } +2021:Middlewares/Third_Party/FatFs/src/ff.c **** +2022:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 58 + + +2023:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY || _FS_RPATH != 0 +2024:Middlewares/Third_Party/FatFs/src/ff.c **** /*------------------------------------------------*/ +2025:Middlewares/Third_Party/FatFs/src/ff.c **** /* exFAT: Load the object's directory entry block */ +2026:Middlewares/Third_Party/FatFs/src/ff.c **** /*------------------------------------------------*/ +2027:Middlewares/Third_Party/FatFs/src/ff.c **** static +2028:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT load_obj_dir ( +2029:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Blank directory object to be used to access containing direcotry */ +2030:Middlewares/Third_Party/FatFs/src/ff.c **** const _FDID* obj /* Object with its containing directory information */ +2031:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2032:Middlewares/Third_Party/FatFs/src/ff.c **** { +2033:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +2034:Middlewares/Third_Party/FatFs/src/ff.c **** +2035:Middlewares/Third_Party/FatFs/src/ff.c **** /* Open object containing directory */ +2036:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.fs = obj->fs; +2037:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.sclust = obj->c_scl; +2038:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.stat = (BYTE)obj->c_size; +2039:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.objsize = obj->c_size & 0xFFFFFF00; +2040:Middlewares/Third_Party/FatFs/src/ff.c **** dp->blk_ofs = obj->c_ofs; +2041:Middlewares/Third_Party/FatFs/src/ff.c **** +2042:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, dp->blk_ofs); /* Goto object's entry block */ +2043:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +2044:Middlewares/Third_Party/FatFs/src/ff.c **** res = load_xdir(dp); /* Load the object's entry block */ +2045:Middlewares/Third_Party/FatFs/src/ff.c **** } +2046:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +2047:Middlewares/Third_Party/FatFs/src/ff.c **** } +2048:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2049:Middlewares/Third_Party/FatFs/src/ff.c **** +2050:Middlewares/Third_Party/FatFs/src/ff.c **** +2051:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +2052:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------*/ +2053:Middlewares/Third_Party/FatFs/src/ff.c **** /* exFAT: Store the directory block to the media */ +2054:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------*/ +2055:Middlewares/Third_Party/FatFs/src/ff.c **** static +2056:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT store_xdir ( +2057:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp /* Pointer to the direcotry object */ +2058:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2059:Middlewares/Third_Party/FatFs/src/ff.c **** { +2060:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +2061:Middlewares/Third_Party/FatFs/src/ff.c **** UINT nent; +2062:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE* dirb = dp->obj.fs->dirbuf; /* Pointer to the direcotry entry block 85+C0+C1s */ +2063:Middlewares/Third_Party/FatFs/src/ff.c **** +2064:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create set sum */ +2065:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dirb + XDIR_SetSum, xdir_sum(dirb)); +2066:Middlewares/Third_Party/FatFs/src/ff.c **** nent = dirb[XDIR_NumSec] + 1; +2067:Middlewares/Third_Party/FatFs/src/ff.c **** +2068:Middlewares/Third_Party/FatFs/src/ff.c **** /* Store the set of directory to the volume */ +2069:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, dp->blk_ofs); +2070:Middlewares/Third_Party/FatFs/src/ff.c **** while (res == FR_OK) { +2071:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(dp->obj.fs, dp->sect); +2072:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +2073:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dp->dir, dirb, SZDIRE); +2074:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.fs->wflag = 1; +2075:Middlewares/Third_Party/FatFs/src/ff.c **** if (--nent == 0) break; +2076:Middlewares/Third_Party/FatFs/src/ff.c **** dirb += SZDIRE; +2077:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(dp, 0); +2078:Middlewares/Third_Party/FatFs/src/ff.c **** } +2079:Middlewares/Third_Party/FatFs/src/ff.c **** return (res == FR_OK || res == FR_DISK_ERR) ? res : FR_INT_ERR; + ARM GAS /tmp/cc5lWXRL.s page 59 + + +2080:Middlewares/Third_Party/FatFs/src/ff.c **** } +2081:Middlewares/Third_Party/FatFs/src/ff.c **** +2082:Middlewares/Third_Party/FatFs/src/ff.c **** +2083:Middlewares/Third_Party/FatFs/src/ff.c **** +2084:Middlewares/Third_Party/FatFs/src/ff.c **** /*-------------------------------------------*/ +2085:Middlewares/Third_Party/FatFs/src/ff.c **** /* exFAT: Create a new directory enrty block */ +2086:Middlewares/Third_Party/FatFs/src/ff.c **** /*-------------------------------------------*/ +2087:Middlewares/Third_Party/FatFs/src/ff.c **** +2088:Middlewares/Third_Party/FatFs/src/ff.c **** static +2089:Middlewares/Third_Party/FatFs/src/ff.c **** void create_xdir ( +2090:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE* dirb, /* Pointer to the direcotry entry block buffer */ +2091:Middlewares/Third_Party/FatFs/src/ff.c **** const WCHAR* lfn /* Pointer to the nul terminated file name */ +2092:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2093:Middlewares/Third_Party/FatFs/src/ff.c **** { +2094:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; +2095:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE nb, nc; +2096:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR chr; +2097:Middlewares/Third_Party/FatFs/src/ff.c **** +2098:Middlewares/Third_Party/FatFs/src/ff.c **** +2099:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create 85+C0 entry */ +2100:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dirb, 0, 2 * SZDIRE); +2101:Middlewares/Third_Party/FatFs/src/ff.c **** dirb[XDIR_Type] = 0x85; +2102:Middlewares/Third_Party/FatFs/src/ff.c **** dirb[XDIR_Type + SZDIRE] = 0xC0; +2103:Middlewares/Third_Party/FatFs/src/ff.c **** +2104:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create C1 entries */ +2105:Middlewares/Third_Party/FatFs/src/ff.c **** nc = 0; nb = 1; chr = 1; i = SZDIRE * 2; +2106:Middlewares/Third_Party/FatFs/src/ff.c **** do { +2107:Middlewares/Third_Party/FatFs/src/ff.c **** dirb[i++] = 0xC1; dirb[i++] = 0; /* Entry type C1 */ +2108:Middlewares/Third_Party/FatFs/src/ff.c **** do { /* Fill name field */ +2109:Middlewares/Third_Party/FatFs/src/ff.c **** if (chr && (chr = lfn[nc]) != 0) nc++; /* Get a character if exist */ +2110:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dirb + i, chr); /* Store it */ +2111:Middlewares/Third_Party/FatFs/src/ff.c **** } while ((i += 2) % SZDIRE != 0); +2112:Middlewares/Third_Party/FatFs/src/ff.c **** nb++; +2113:Middlewares/Third_Party/FatFs/src/ff.c **** } while (lfn[nc]); /* Fill next entry if any char follows */ +2114:Middlewares/Third_Party/FatFs/src/ff.c **** +2115:Middlewares/Third_Party/FatFs/src/ff.c **** dirb[XDIR_NumName] = nc; /* Set name length */ +2116:Middlewares/Third_Party/FatFs/src/ff.c **** dirb[XDIR_NumSec] = nb; /* Set block length */ +2117:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dirb + XDIR_NameHash, xname_sum(lfn)); /* Set name hash */ +2118:Middlewares/Third_Party/FatFs/src/ff.c **** } +2119:Middlewares/Third_Party/FatFs/src/ff.c **** +2120:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ +2121:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_EXFAT */ +2122:Middlewares/Third_Party/FatFs/src/ff.c **** +2123:Middlewares/Third_Party/FatFs/src/ff.c **** +2124:Middlewares/Third_Party/FatFs/src/ff.c **** +2125:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 || _USE_LABEL || _FS_EXFAT +2126:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2127:Middlewares/Third_Party/FatFs/src/ff.c **** /* Read an object from the directory */ +2128:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2129:Middlewares/Third_Party/FatFs/src/ff.c **** +2130:Middlewares/Third_Party/FatFs/src/ff.c **** static +2131:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT dir_read ( +2132:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Pointer to the directory object */ +2133:Middlewares/Third_Party/FatFs/src/ff.c **** int vol /* Filtered by 0:file/directory or 1:volume label */ +2134:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2135:Middlewares/Third_Party/FatFs/src/ff.c **** { +2136:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_NO_FILE; + ARM GAS /tmp/cc5lWXRL.s page 60 + + +2137:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; +2138:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE a, c; +2139:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 +2140:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE ord = 0xFF, sum = 0xFF; +2141:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2142:Middlewares/Third_Party/FatFs/src/ff.c **** +2143:Middlewares/Third_Party/FatFs/src/ff.c **** while (dp->sect) { +2144:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); +2145:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +2146:Middlewares/Third_Party/FatFs/src/ff.c **** c = dp->dir[DIR_Name]; /* Test for the entry type */ +2147:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0) { +2148:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_FILE; break; /* Reached to end of the directory */ +2149:Middlewares/Third_Party/FatFs/src/ff.c **** } +2150:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +2151:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ +2152:Middlewares/Third_Party/FatFs/src/ff.c **** if (_USE_LABEL && vol) { +2153:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0x83) break; /* Volume label entry? */ +2154:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +2155:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0x85) { /* Start of the file entry block? */ +2156:Middlewares/Third_Party/FatFs/src/ff.c **** dp->blk_ofs = dp->dptr; /* Get location of the block */ +2157:Middlewares/Third_Party/FatFs/src/ff.c **** res = load_xdir(dp); /* Load the entry block */ +2158:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +2159:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.attr = fs->dirbuf[XDIR_Attr] & AM_MASK; /* Get attribute */ +2160:Middlewares/Third_Party/FatFs/src/ff.c **** } +2161:Middlewares/Third_Party/FatFs/src/ff.c **** break; +2162:Middlewares/Third_Party/FatFs/src/ff.c **** } +2163:Middlewares/Third_Party/FatFs/src/ff.c **** } +2164:Middlewares/Third_Party/FatFs/src/ff.c **** } else +2165:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2166:Middlewares/Third_Party/FatFs/src/ff.c **** { /* On the FAT12/16/32 volume */ +2167:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.attr = a = dp->dir[DIR_Attr] & AM_MASK; /* Get attribute */ +2168:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ +2169:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == DDEM || c == '.' || (int)((a & ~AM_ARC) == AM_VOL) != vol) { /* An entry without valid +2170:Middlewares/Third_Party/FatFs/src/ff.c **** ord = 0xFF; +2171:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +2172:Middlewares/Third_Party/FatFs/src/ff.c **** if (a == AM_LFN) { /* An LFN entry is found */ +2173:Middlewares/Third_Party/FatFs/src/ff.c **** if (c & LLEF) { /* Is it start of an LFN sequence? */ +2174:Middlewares/Third_Party/FatFs/src/ff.c **** sum = dp->dir[LDIR_Chksum]; +2175:Middlewares/Third_Party/FatFs/src/ff.c **** c &= (BYTE)~LLEF; ord = c; +2176:Middlewares/Third_Party/FatFs/src/ff.c **** dp->blk_ofs = dp->dptr; +2177:Middlewares/Third_Party/FatFs/src/ff.c **** } +2178:Middlewares/Third_Party/FatFs/src/ff.c **** /* Check LFN validity and capture it */ +2179:Middlewares/Third_Party/FatFs/src/ff.c **** ord = (c == ord && sum == dp->dir[LDIR_Chksum] && pick_lfn(fs->lfnbuf, dp->dir)) ? ord - 1 : 0 +2180:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* An SFN entry is found */ +2181:Middlewares/Third_Party/FatFs/src/ff.c **** if (ord || sum != sum_sfn(dp->dir)) { /* Is there a valid LFN? */ +2182:Middlewares/Third_Party/FatFs/src/ff.c **** dp->blk_ofs = 0xFFFFFFFF; /* It has no LFN. */ +2183:Middlewares/Third_Party/FatFs/src/ff.c **** } +2184:Middlewares/Third_Party/FatFs/src/ff.c **** break; +2185:Middlewares/Third_Party/FatFs/src/ff.c **** } +2186:Middlewares/Third_Party/FatFs/src/ff.c **** } +2187:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Non LFN configuration */ +2188:Middlewares/Third_Party/FatFs/src/ff.c **** if (c != DDEM && c != '.' && a != AM_LFN && (int)((a & ~AM_ARC) == AM_VOL) == vol) { /* Is it a +2189:Middlewares/Third_Party/FatFs/src/ff.c **** break; +2190:Middlewares/Third_Party/FatFs/src/ff.c **** } +2191:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2192:Middlewares/Third_Party/FatFs/src/ff.c **** } +2193:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(dp, 0); /* Next entry */ + ARM GAS /tmp/cc5lWXRL.s page 61 + + +2194:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +2195:Middlewares/Third_Party/FatFs/src/ff.c **** } +2196:Middlewares/Third_Party/FatFs/src/ff.c **** +2197:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) dp->sect = 0; /* Terminate the read operation on error or EOT */ +2198:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +2199:Middlewares/Third_Party/FatFs/src/ff.c **** } +2200:Middlewares/Third_Party/FatFs/src/ff.c **** +2201:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_MINIMIZE <= 1 || _USE_LABEL || _FS_RPATH >= 2 */ +2202:Middlewares/Third_Party/FatFs/src/ff.c **** +2203:Middlewares/Third_Party/FatFs/src/ff.c **** +2204:Middlewares/Third_Party/FatFs/src/ff.c **** +2205:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2206:Middlewares/Third_Party/FatFs/src/ff.c **** /* Directory handling - Find an object in the directory */ +2207:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2208:Middlewares/Third_Party/FatFs/src/ff.c **** +2209:Middlewares/Third_Party/FatFs/src/ff.c **** static +2210:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT dir_find ( /* FR_OK(0):succeeded, !=0:error */ +2211:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp /* Pointer to the directory object with the file name */ +2212:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2213:Middlewares/Third_Party/FatFs/src/ff.c **** { +2214:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +2215:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; +2216:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE c; +2217:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 +2218:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE a, ord, sum; +2219:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2220:Middlewares/Third_Party/FatFs/src/ff.c **** +2221:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); /* Rewind directory object */ +2222:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +2223:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +2224:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ +2225:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE nc; +2226:Middlewares/Third_Party/FatFs/src/ff.c **** UINT di, ni; +2227:Middlewares/Third_Party/FatFs/src/ff.c **** WORD hash = xname_sum(fs->lfnbuf); /* Hash value of the name to find */ +2228:Middlewares/Third_Party/FatFs/src/ff.c **** +2229:Middlewares/Third_Party/FatFs/src/ff.c **** while ((res = dir_read(dp, 0)) == FR_OK) { /* Read an item */ +2230:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_LFN < 255 +2231:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->dirbuf[XDIR_NumName] > _MAX_LFN) continue; /* Skip comparison if inaccessible object n +2232:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2233:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(fs->dirbuf + XDIR_NameHash) != hash) continue; /* Skip comparison if hash mismatched +2234:Middlewares/Third_Party/FatFs/src/ff.c **** for (nc = fs->dirbuf[XDIR_NumName], di = SZDIRE * 2, ni = 0; nc; nc--, di += 2, ni++) { /* Compa +2235:Middlewares/Third_Party/FatFs/src/ff.c **** if ((di % SZDIRE) == 0) di += 2; +2236:Middlewares/Third_Party/FatFs/src/ff.c **** if (ff_wtoupper(ld_word(fs->dirbuf + di)) != ff_wtoupper(fs->lfnbuf[ni])) break; +2237:Middlewares/Third_Party/FatFs/src/ff.c **** } +2238:Middlewares/Third_Party/FatFs/src/ff.c **** if (nc == 0 && !fs->lfnbuf[ni]) break; /* Name matched? */ +2239:Middlewares/Third_Party/FatFs/src/ff.c **** } +2240:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +2241:Middlewares/Third_Party/FatFs/src/ff.c **** } +2242:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2243:Middlewares/Third_Party/FatFs/src/ff.c **** /* On the FAT12/16/32 volume */ +2244:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 +2245:Middlewares/Third_Party/FatFs/src/ff.c **** ord = sum = 0xFF; dp->blk_ofs = 0xFFFFFFFF; /* Reset LFN sequence */ +2246:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2247:Middlewares/Third_Party/FatFs/src/ff.c **** do { +2248:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); +2249:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +2250:Middlewares/Third_Party/FatFs/src/ff.c **** c = dp->dir[DIR_Name]; + ARM GAS /tmp/cc5lWXRL.s page 62 + + +2251:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of table */ +2252:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ +2253:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.attr = a = dp->dir[DIR_Attr] & AM_MASK; +2254:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == DDEM || ((a & AM_VOL) && a != AM_LFN)) { /* An entry without valid data */ +2255:Middlewares/Third_Party/FatFs/src/ff.c **** ord = 0xFF; dp->blk_ofs = 0xFFFFFFFF; /* Reset LFN sequence */ +2256:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +2257:Middlewares/Third_Party/FatFs/src/ff.c **** if (a == AM_LFN) { /* An LFN entry is found */ +2258:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(dp->fn[NSFLAG] & NS_NOLFN)) { +2259:Middlewares/Third_Party/FatFs/src/ff.c **** if (c & LLEF) { /* Is it start of LFN sequence? */ +2260:Middlewares/Third_Party/FatFs/src/ff.c **** sum = dp->dir[LDIR_Chksum]; +2261:Middlewares/Third_Party/FatFs/src/ff.c **** c &= (BYTE)~LLEF; ord = c; /* LFN start order */ +2262:Middlewares/Third_Party/FatFs/src/ff.c **** dp->blk_ofs = dp->dptr; /* Start offset of LFN */ +2263:Middlewares/Third_Party/FatFs/src/ff.c **** } +2264:Middlewares/Third_Party/FatFs/src/ff.c **** /* Check validity of the LFN entry and compare it with given name */ +2265:Middlewares/Third_Party/FatFs/src/ff.c **** ord = (c == ord && sum == dp->dir[LDIR_Chksum] && cmp_lfn(fs->lfnbuf, dp->dir)) ? ord - 1 : 0x +2266:Middlewares/Third_Party/FatFs/src/ff.c **** } +2267:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* An SFN entry is found */ +2268:Middlewares/Third_Party/FatFs/src/ff.c **** if (!ord && sum == sum_sfn(dp->dir)) break; /* LFN matched? */ +2269:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(dp->fn[NSFLAG] & NS_LOSS) && !mem_cmp(dp->dir, dp->fn, 11)) break; /* SFN matched? */ +2270:Middlewares/Third_Party/FatFs/src/ff.c **** ord = 0xFF; dp->blk_ofs = 0xFFFFFFFF; /* Reset LFN sequence */ +2271:Middlewares/Third_Party/FatFs/src/ff.c **** } +2272:Middlewares/Third_Party/FatFs/src/ff.c **** } +2273:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Non LFN configuration */ +2274:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.attr = dp->dir[DIR_Attr] & AM_MASK; +2275:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(dp->dir[DIR_Attr] & AM_VOL) && !mem_cmp(dp->dir, dp->fn, 11)) break; /* Is it a valid entry +2276:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2277:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(dp, 0); /* Next entry */ +2278:Middlewares/Third_Party/FatFs/src/ff.c **** } while (res == FR_OK); +2279:Middlewares/Third_Party/FatFs/src/ff.c **** +2280:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +2281:Middlewares/Third_Party/FatFs/src/ff.c **** } +2282:Middlewares/Third_Party/FatFs/src/ff.c **** +2283:Middlewares/Third_Party/FatFs/src/ff.c **** +2284:Middlewares/Third_Party/FatFs/src/ff.c **** +2285:Middlewares/Third_Party/FatFs/src/ff.c **** +2286:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +2287:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2288:Middlewares/Third_Party/FatFs/src/ff.c **** /* Register an object to the directory */ +2289:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2290:Middlewares/Third_Party/FatFs/src/ff.c **** +2291:Middlewares/Third_Party/FatFs/src/ff.c **** static +2292:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT dir_register ( /* FR_OK:succeeded, FR_DENIED:no free entry or too many SFN collision, FR_DI +2293:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp /* Target directory with object name to be created */ +2294:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2295:Middlewares/Third_Party/FatFs/src/ff.c **** { +2296:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +2297:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; +2298:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ +2299:Middlewares/Third_Party/FatFs/src/ff.c **** UINT n, nlen, nent; +2300:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE sn[12], sum; +2301:Middlewares/Third_Party/FatFs/src/ff.c **** +2302:Middlewares/Third_Party/FatFs/src/ff.c **** +2303:Middlewares/Third_Party/FatFs/src/ff.c **** if (dp->fn[NSFLAG] & (NS_DOT | NS_NONAME)) return FR_INVALID_NAME; /* Check name validity */ +2304:Middlewares/Third_Party/FatFs/src/ff.c **** for (nlen = 0; fs->lfnbuf[nlen]; nlen++) ; /* Get lfn length */ +2305:Middlewares/Third_Party/FatFs/src/ff.c **** +2306:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +2307:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ + ARM GAS /tmp/cc5lWXRL.s page 63 + + +2308:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +2309:Middlewares/Third_Party/FatFs/src/ff.c **** +2310:Middlewares/Third_Party/FatFs/src/ff.c **** nent = (nlen + 14) / 15 + 2; /* Number of entries to allocate (85+C0+C1s) */ +2311:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_alloc(dp, nent); /* Allocate entries */ +2312:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +2313:Middlewares/Third_Party/FatFs/src/ff.c **** dp->blk_ofs = dp->dptr - SZDIRE * (nent - 1); /* Set the allocated entry block offset */ +2314:Middlewares/Third_Party/FatFs/src/ff.c **** +2315:Middlewares/Third_Party/FatFs/src/ff.c **** if (dp->obj.sclust != 0 && (dp->obj.stat & 4)) { /* Has the sub-directory been stretched? */ +2316:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.objsize += (DWORD)fs->csize * SS(fs); /* Increase the directory size by cluster size */ +2317:Middlewares/Third_Party/FatFs/src/ff.c **** res = fill_first_frag(&dp->obj); /* Fill first fragment on the FAT if needed */ +2318:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +2319:Middlewares/Third_Party/FatFs/src/ff.c **** res = fill_last_frag(&dp->obj, dp->clust, 0xFFFFFFFF); /* Fill last fragment on the FAT if neede +2320:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +2321:Middlewares/Third_Party/FatFs/src/ff.c **** res = load_obj_dir(&dj, &dp->obj); /* Load the object status */ +2322:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +2323:Middlewares/Third_Party/FatFs/src/ff.c **** st_qword(fs->dirbuf + XDIR_FileSize, dp->obj.objsize); /* Update the allocation status */ +2324:Middlewares/Third_Party/FatFs/src/ff.c **** st_qword(fs->dirbuf + XDIR_ValidFileSize, dp->obj.objsize); +2325:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_GenFlags] = dp->obj.stat | 1; +2326:Middlewares/Third_Party/FatFs/src/ff.c **** res = store_xdir(&dj); /* Store the object status */ +2327:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +2328:Middlewares/Third_Party/FatFs/src/ff.c **** } +2329:Middlewares/Third_Party/FatFs/src/ff.c **** +2330:Middlewares/Third_Party/FatFs/src/ff.c **** create_xdir(fs->dirbuf, fs->lfnbuf); /* Create on-memory directory block to be written later */ +2331:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +2332:Middlewares/Third_Party/FatFs/src/ff.c **** } +2333:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2334:Middlewares/Third_Party/FatFs/src/ff.c **** /* On the FAT12/16/32 volume */ +2335:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(sn, dp->fn, 12); +2336:Middlewares/Third_Party/FatFs/src/ff.c **** if (sn[NSFLAG] & NS_LOSS) { /* When LFN is out of 8.3 format, generate a numbered name */ +2337:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[NSFLAG] = NS_NOLFN; /* Find only SFN */ +2338:Middlewares/Third_Party/FatFs/src/ff.c **** for (n = 1; n < 100; n++) { +2339:Middlewares/Third_Party/FatFs/src/ff.c **** gen_numname(dp->fn, sn, fs->lfnbuf, n); /* Generate a numbered name */ +2340:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_find(dp); /* Check if the name collides with existing SFN */ +2341:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +2342:Middlewares/Third_Party/FatFs/src/ff.c **** } +2343:Middlewares/Third_Party/FatFs/src/ff.c **** if (n == 100) return FR_DENIED; /* Abort if too many collisions */ +2344:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_NO_FILE) return res; /* Abort if the result is other than 'not collided' */ +2345:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[NSFLAG] = sn[NSFLAG]; +2346:Middlewares/Third_Party/FatFs/src/ff.c **** } +2347:Middlewares/Third_Party/FatFs/src/ff.c **** +2348:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create an SFN with/without LFNs. */ +2349:Middlewares/Third_Party/FatFs/src/ff.c **** nent = (sn[NSFLAG] & NS_LFN) ? (nlen + 12) / 13 + 1 : 1; /* Number of entries to allocate */ +2350:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_alloc(dp, nent); /* Allocate entries */ +2351:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && --nent) { /* Set LFN entry if needed */ +2352:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, dp->dptr - nent * SZDIRE); +2353:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +2354:Middlewares/Third_Party/FatFs/src/ff.c **** sum = sum_sfn(dp->fn); /* Checksum value of the SFN tied to the LFN */ +2355:Middlewares/Third_Party/FatFs/src/ff.c **** do { /* Store LFN entries in bottom first */ +2356:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); +2357:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +2358:Middlewares/Third_Party/FatFs/src/ff.c **** put_lfn(fs->lfnbuf, dp->dir, (BYTE)nent, sum); +2359:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +2360:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(dp, 0); /* Next entry */ +2361:Middlewares/Third_Party/FatFs/src/ff.c **** } while (res == FR_OK && --nent); +2362:Middlewares/Third_Party/FatFs/src/ff.c **** } +2363:Middlewares/Third_Party/FatFs/src/ff.c **** } +2364:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 64 + + +2365:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Non LFN configuration */ +2366:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_alloc(dp, 1); /* Allocate an entry for SFN */ +2367:Middlewares/Third_Party/FatFs/src/ff.c **** +2368:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2369:Middlewares/Third_Party/FatFs/src/ff.c **** +2370:Middlewares/Third_Party/FatFs/src/ff.c **** /* Set SFN entry */ +2371:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +2372:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); +2373:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +2374:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dp->dir, 0, SZDIRE); /* Clean the entry */ +2375:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dp->dir + DIR_Name, dp->fn, 11); /* Put SFN */ +2376:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 +2377:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir[DIR_NTres] = dp->fn[NSFLAG] & (NS_BODY | NS_EXT); /* Put NT flag */ +2378:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2379:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +2380:Middlewares/Third_Party/FatFs/src/ff.c **** } +2381:Middlewares/Third_Party/FatFs/src/ff.c **** } +2382:Middlewares/Third_Party/FatFs/src/ff.c **** +2383:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +2384:Middlewares/Third_Party/FatFs/src/ff.c **** } +2385:Middlewares/Third_Party/FatFs/src/ff.c **** +2386:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ +2387:Middlewares/Third_Party/FatFs/src/ff.c **** +2388:Middlewares/Third_Party/FatFs/src/ff.c **** +2389:Middlewares/Third_Party/FatFs/src/ff.c **** +2390:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE == 0 +2391:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2392:Middlewares/Third_Party/FatFs/src/ff.c **** /* Remove an object from the directory */ +2393:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2394:Middlewares/Third_Party/FatFs/src/ff.c **** +2395:Middlewares/Third_Party/FatFs/src/ff.c **** static +2396:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT dir_remove ( /* FR_OK:Succeeded, FR_DISK_ERR:A disk error */ +2397:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp /* Directory object pointing the entry to be removed */ +2398:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2399:Middlewares/Third_Party/FatFs/src/ff.c **** { +2400:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +2401:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; +2402:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ +2403:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD last = dp->dptr; +2404:Middlewares/Third_Party/FatFs/src/ff.c **** +2405:Middlewares/Third_Party/FatFs/src/ff.c **** res = (dp->blk_ofs == 0xFFFFFFFF) ? FR_OK : dir_sdi(dp, dp->blk_ofs); /* Goto top of the entry blo +2406:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +2407:Middlewares/Third_Party/FatFs/src/ff.c **** do { +2408:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); +2409:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +2410:Middlewares/Third_Party/FatFs/src/ff.c **** /* Mark an entry 'deleted' */ +2411:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT && fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ +2412:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir[XDIR_Type] &= 0x7F; +2413:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* On the FAT12/16/32 volume */ +2414:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir[DIR_Name] = DDEM; +2415:Middlewares/Third_Party/FatFs/src/ff.c **** } +2416:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +2417:Middlewares/Third_Party/FatFs/src/ff.c **** if (dp->dptr >= last) break; /* If reached last entry then all entries of the object has been de +2418:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(dp, 0); /* Next entry */ +2419:Middlewares/Third_Party/FatFs/src/ff.c **** } while (res == FR_OK); +2420:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_INT_ERR; +2421:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 65 + + +2422:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Non LFN configuration */ +2423:Middlewares/Third_Party/FatFs/src/ff.c **** +2424:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); +2425:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +2426:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir[DIR_Name] = DDEM; +2427:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +2428:Middlewares/Third_Party/FatFs/src/ff.c **** } +2429:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2430:Middlewares/Third_Party/FatFs/src/ff.c **** +2431:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +2432:Middlewares/Third_Party/FatFs/src/ff.c **** } +2433:Middlewares/Third_Party/FatFs/src/ff.c **** +2434:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY && _FS_MINIMIZE == 0 */ +2435:Middlewares/Third_Party/FatFs/src/ff.c **** +2436:Middlewares/Third_Party/FatFs/src/ff.c **** +2437:Middlewares/Third_Party/FatFs/src/ff.c **** +2438:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 +2439:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2440:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get file information from directory entry */ +2441:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2442:Middlewares/Third_Party/FatFs/src/ff.c **** +2443:Middlewares/Third_Party/FatFs/src/ff.c **** static +2444:Middlewares/Third_Party/FatFs/src/ff.c **** void get_fileinfo ( /* No return code */ +2445:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Pointer to the directory object */ +2446:Middlewares/Third_Party/FatFs/src/ff.c **** FILINFO* fno /* Pointer to the file information to be filled */ +2447:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2448:Middlewares/Third_Party/FatFs/src/ff.c **** { + 1175 .loc 1 2448 1 is_stmt 1 view -0 + 1176 .cfi_startproc + 1177 @ args = 0, pretend = 0, frame = 0 + 1178 @ frame_needed = 0, uses_anonymous_args = 0 + 1179 .loc 1 2448 1 is_stmt 0 view .LVU339 + 1180 0000 38B5 push {r3, r4, r5, lr} + 1181 .LCFI12: + 1182 .cfi_def_cfa_offset 16 + 1183 .cfi_offset 3, -16 + 1184 .cfi_offset 4, -12 + 1185 .cfi_offset 5, -8 + 1186 .cfi_offset 14, -4 +2449:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, j; + 1187 .loc 1 2449 2 is_stmt 1 view .LVU340 +2450:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR c; + 1188 .loc 1 2450 2 view .LVU341 +2451:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD tm; + 1189 .loc 1 2451 2 view .LVU342 +2452:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 +2453:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR w, lfv; +2454:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; +2455:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2456:Middlewares/Third_Party/FatFs/src/ff.c **** +2457:Middlewares/Third_Party/FatFs/src/ff.c **** +2458:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[0] = 0; /* Invaidate file info */ + 1190 .loc 1 2458 2 view .LVU343 + 1191 .loc 1 2458 16 is_stmt 0 view .LVU344 + 1192 0002 0023 movs r3, #0 + 1193 0004 4B72 strb r3, [r1, #9] +2459:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dp->sect) return; /* Exit if read pointer has reached end of directory */ + ARM GAS /tmp/cc5lWXRL.s page 66 + + + 1194 .loc 1 2459 2 is_stmt 1 view .LVU345 + 1195 .loc 1 2459 9 is_stmt 0 view .LVU346 + 1196 0006 C369 ldr r3, [r0, #28] + 1197 .loc 1 2459 5 view .LVU347 + 1198 0008 73B3 cbz r3, .L99 + 1199 000a 0546 mov r5, r0 + 1200 000c 0C46 mov r4, r1 +2460:Middlewares/Third_Party/FatFs/src/ff.c **** +2461:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ +2462:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +2463:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ +2464:Middlewares/Third_Party/FatFs/src/ff.c **** get_xdir_info(fs->dirbuf, fno); +2465:Middlewares/Third_Party/FatFs/src/ff.c **** return; +2466:Middlewares/Third_Party/FatFs/src/ff.c **** } else +2467:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2468:Middlewares/Third_Party/FatFs/src/ff.c **** { /* On the FAT12/16/32 volume */ +2469:Middlewares/Third_Party/FatFs/src/ff.c **** if (dp->blk_ofs != 0xFFFFFFFF) { /* Get LFN if available */ +2470:Middlewares/Third_Party/FatFs/src/ff.c **** i = j = 0; +2471:Middlewares/Third_Party/FatFs/src/ff.c **** while ((w = fs->lfnbuf[j++]) != 0) { /* Get an LFN character */ +2472:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_LFN_UNICODE +2473:Middlewares/Third_Party/FatFs/src/ff.c **** w = ff_convert(w, 0); /* Unicode -> OEM */ +2474:Middlewares/Third_Party/FatFs/src/ff.c **** if (w == 0) { i = 0; break; } /* No LFN if it could not be converted */ +2475:Middlewares/Third_Party/FatFs/src/ff.c **** if (_DF1S && w >= 0x100) { /* Put 1st byte if it is a DBC (always false at SBCS cfg) */ +2476:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[i++] = (char)(w >> 8); +2477:Middlewares/Third_Party/FatFs/src/ff.c **** } +2478:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2479:Middlewares/Third_Party/FatFs/src/ff.c **** if (i >= _MAX_LFN) { i = 0; break; } /* No LFN if buffer overflow */ +2480:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[i++] = (TCHAR)w; +2481:Middlewares/Third_Party/FatFs/src/ff.c **** } +2482:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[i] = 0; /* Terminate the LFN */ +2483:Middlewares/Third_Party/FatFs/src/ff.c **** } +2484:Middlewares/Third_Party/FatFs/src/ff.c **** } +2485:Middlewares/Third_Party/FatFs/src/ff.c **** +2486:Middlewares/Third_Party/FatFs/src/ff.c **** i = j = 0; +2487:Middlewares/Third_Party/FatFs/src/ff.c **** lfv = fno->fname[i]; /* LFN is exist if non-zero */ +2488:Middlewares/Third_Party/FatFs/src/ff.c **** while (i < 11) { /* Copy name body and extension */ +2489:Middlewares/Third_Party/FatFs/src/ff.c **** c = (TCHAR)dp->dir[i++]; +2490:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == ' ') continue; /* Skip padding spaces */ +2491:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == RDDEM) c = (TCHAR)DDEM; /* Restore replaced DDEM character */ +2492:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 9) { /* Insert a . if extension is exist */ +2493:Middlewares/Third_Party/FatFs/src/ff.c **** if (!lfv) fno->fname[j] = '.'; +2494:Middlewares/Third_Party/FatFs/src/ff.c **** fno->altname[j++] = '.'; +2495:Middlewares/Third_Party/FatFs/src/ff.c **** } +2496:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE +2497:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsDBCS1(c) && i != 8 && i != 11 && IsDBCS2(dp->dir[i])) { +2498:Middlewares/Third_Party/FatFs/src/ff.c **** c = c << 8 | dp->dir[i++]; +2499:Middlewares/Third_Party/FatFs/src/ff.c **** } +2500:Middlewares/Third_Party/FatFs/src/ff.c **** c = ff_convert(c, 1); /* OEM -> Unicode */ +2501:Middlewares/Third_Party/FatFs/src/ff.c **** if (!c) c = '?'; +2502:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2503:Middlewares/Third_Party/FatFs/src/ff.c **** fno->altname[j] = c; +2504:Middlewares/Third_Party/FatFs/src/ff.c **** if (!lfv) { +2505:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsUpper(c) && (dp->dir[DIR_NTres] & ((i >= 9) ? NS_EXT : NS_BODY))) { +2506:Middlewares/Third_Party/FatFs/src/ff.c **** c += 0x20; /* To lower */ +2507:Middlewares/Third_Party/FatFs/src/ff.c **** } +2508:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[j] = c; +2509:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 67 + + +2510:Middlewares/Third_Party/FatFs/src/ff.c **** j++; +2511:Middlewares/Third_Party/FatFs/src/ff.c **** } +2512:Middlewares/Third_Party/FatFs/src/ff.c **** if (!lfv) { +2513:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[j] = 0; +2514:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dp->dir[DIR_NTres]) j = 0; /* Altname is no longer needed if neither LFN nor case info is ex +2515:Middlewares/Third_Party/FatFs/src/ff.c **** } +2516:Middlewares/Third_Party/FatFs/src/ff.c **** fno->altname[j] = 0; /* Terminate the SFN */ +2517:Middlewares/Third_Party/FatFs/src/ff.c **** +2518:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Non-LFN configuration */ +2519:Middlewares/Third_Party/FatFs/src/ff.c **** i = j = 0; + 1201 .loc 1 2519 8 view .LVU348 + 1202 000e 0022 movs r2, #0 + 1203 .loc 1 2519 4 view .LVU349 + 1204 0010 1346 mov r3, r2 + 1205 0012 06E0 b .L101 + 1206 .LVL119: + 1207 .L103: +2520:Middlewares/Third_Party/FatFs/src/ff.c **** while (i < 11) { /* Copy name body and extension */ +2521:Middlewares/Third_Party/FatFs/src/ff.c **** c = (TCHAR)dp->dir[i++]; +2522:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == ' ') continue; /* Skip padding spaces */ +2523:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == RDDEM) c = (TCHAR)DDEM; /* Restore replaced DDEM character */ +2524:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 9) fno->fname[j++] = '.'; /* Insert a . if extension is exist */ + 1208 .loc 1 2524 3 is_stmt 1 view .LVU350 + 1209 .loc 1 2524 6 is_stmt 0 view .LVU351 + 1210 0014 BCF1090F cmp ip, #9 + 1211 0018 0FD0 beq .L108 + 1212 .L104: +2525:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[j++] = c; + 1213 .loc 1 2525 3 is_stmt 1 view .LVU352 + 1214 .LVL120: + 1215 .loc 1 2525 19 is_stmt 0 view .LVU353 + 1216 001a A118 adds r1, r4, r2 + 1217 001c 4B72 strb r3, [r1, #9] + 1218 .loc 1 2525 15 view .LVU354 + 1219 001e 0132 adds r2, r2, #1 + 1220 .LVL121: + 1221 .L102: + 1222 .loc 1 2525 15 view .LVU355 + 1223 0020 6346 mov r3, ip + 1224 .LVL122: + 1225 .L101: +2520:Middlewares/Third_Party/FatFs/src/ff.c **** while (i < 11) { /* Copy name body and extension */ + 1226 .loc 1 2520 8 is_stmt 1 view .LVU356 + 1227 0022 0A2B cmp r3, #10 + 1228 0024 0ED8 bhi .L109 +2521:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == ' ') continue; /* Skip padding spaces */ + 1229 .loc 1 2521 3 view .LVU357 +2521:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == ' ') continue; /* Skip padding spaces */ + 1230 .loc 1 2521 23 is_stmt 0 view .LVU358 + 1231 0026 03F1010C add ip, r3, #1 + 1232 .LVL123: +2521:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == ' ') continue; /* Skip padding spaces */ + 1233 .loc 1 2521 5 view .LVU359 + 1234 002a 296A ldr r1, [r5, #32] + 1235 002c CB5C ldrb r3, [r1, r3] @ zero_extendqisi2 + 1236 .LVL124: +2522:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == RDDEM) c = (TCHAR)DDEM; /* Restore replaced DDEM character */ + ARM GAS /tmp/cc5lWXRL.s page 68 + + + 1237 .loc 1 2522 3 is_stmt 1 view .LVU360 +2522:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == RDDEM) c = (TCHAR)DDEM; /* Restore replaced DDEM character */ + 1238 .loc 1 2522 6 is_stmt 0 view .LVU361 + 1239 002e 202B cmp r3, #32 + 1240 0030 F6D0 beq .L102 +2523:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 9) fno->fname[j++] = '.'; /* Insert a . if extension is exist */ + 1241 .loc 1 2523 3 is_stmt 1 view .LVU362 +2523:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 9) fno->fname[j++] = '.'; /* Insert a . if extension is exist */ + 1242 .loc 1 2523 6 is_stmt 0 view .LVU363 + 1243 0032 052B cmp r3, #5 + 1244 0034 EED1 bne .L103 +2523:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 9) fno->fname[j++] = '.'; /* Insert a . if extension is exist */ + 1245 .loc 1 2523 21 view .LVU364 + 1246 0036 E523 movs r3, #229 + 1247 .LVL125: +2523:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 9) fno->fname[j++] = '.'; /* Insert a . if extension is exist */ + 1248 .loc 1 2523 21 view .LVU365 + 1249 0038 ECE7 b .L103 + 1250 .LVL126: + 1251 .L108: +2524:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[j++] = c; + 1252 .loc 1 2524 15 is_stmt 1 discriminator 1 view .LVU366 +2524:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[j++] = c; + 1253 .loc 1 2524 31 is_stmt 0 discriminator 1 view .LVU367 + 1254 003a A118 adds r1, r4, r2 + 1255 003c 2E20 movs r0, #46 + 1256 003e 4872 strb r0, [r1, #9] +2524:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[j++] = c; + 1257 .loc 1 2524 27 discriminator 1 view .LVU368 + 1258 0040 0132 adds r2, r2, #1 + 1259 .LVL127: +2524:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[j++] = c; + 1260 .loc 1 2524 27 discriminator 1 view .LVU369 + 1261 0042 EAE7 b .L104 + 1262 .LVL128: + 1263 .L109: +2526:Middlewares/Third_Party/FatFs/src/ff.c **** } +2527:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fname[j] = 0; + 1264 .loc 1 2527 2 is_stmt 1 view .LVU370 + 1265 .loc 1 2527 16 is_stmt 0 view .LVU371 + 1266 0044 2244 add r2, r2, r4 + 1267 .LVL129: + 1268 .loc 1 2527 16 view .LVU372 + 1269 0046 0023 movs r3, #0 + 1270 .LVL130: + 1271 .loc 1 2527 16 view .LVU373 + 1272 0048 5372 strb r3, [r2, #9] +2528:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2529:Middlewares/Third_Party/FatFs/src/ff.c **** +2530:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fattrib = dp->dir[DIR_Attr]; /* Attribute */ + 1273 .loc 1 2530 2 is_stmt 1 view .LVU374 + 1274 .loc 1 2530 19 is_stmt 0 view .LVU375 + 1275 004a 2B6A ldr r3, [r5, #32] + 1276 .loc 1 2530 15 view .LVU376 + 1277 004c DB7A ldrb r3, [r3, #11] @ zero_extendqisi2 + 1278 004e 2372 strb r3, [r4, #8] +2531:Middlewares/Third_Party/FatFs/src/ff.c **** fno->fsize = ld_dword(dp->dir + DIR_FileSize); /* Size */ + ARM GAS /tmp/cc5lWXRL.s page 69 + + + 1279 .loc 1 2531 2 is_stmt 1 view .LVU377 + 1280 .loc 1 2531 26 is_stmt 0 view .LVU378 + 1281 0050 286A ldr r0, [r5, #32] + 1282 .loc 1 2531 15 view .LVU379 + 1283 0052 1C30 adds r0, r0, #28 + 1284 0054 FFF7FEFF bl ld_dword + 1285 .LVL131: + 1286 .loc 1 2531 13 view .LVU380 + 1287 0058 2060 str r0, [r4] +2532:Middlewares/Third_Party/FatFs/src/ff.c **** tm = ld_dword(dp->dir + DIR_ModTime); /* Timestamp */ + 1288 .loc 1 2532 2 is_stmt 1 view .LVU381 + 1289 .loc 1 2532 18 is_stmt 0 view .LVU382 + 1290 005a 286A ldr r0, [r5, #32] + 1291 .loc 1 2532 7 view .LVU383 + 1292 005c 1630 adds r0, r0, #22 + 1293 005e FFF7FEFF bl ld_dword + 1294 .LVL132: +2533:Middlewares/Third_Party/FatFs/src/ff.c **** fno->ftime = (WORD)tm; fno->fdate = (WORD)(tm >> 16); + 1295 .loc 1 2533 2 is_stmt 1 view .LVU384 + 1296 .loc 1 2533 13 is_stmt 0 view .LVU385 + 1297 0062 E080 strh r0, [r4, #6] @ movhi + 1298 .loc 1 2533 25 is_stmt 1 view .LVU386 + 1299 .loc 1 2533 38 is_stmt 0 view .LVU387 + 1300 0064 000C lsrs r0, r0, #16 + 1301 .LVL133: + 1302 .loc 1 2533 36 view .LVU388 + 1303 0066 A080 strh r0, [r4, #4] @ movhi + 1304 .LVL134: + 1305 .L99: +2534:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1306 .loc 1 2534 1 view .LVU389 + 1307 0068 38BD pop {r3, r4, r5, pc} + 1308 .cfi_endproc + 1309 .LFE1214: + 1311 .section .rodata.create_name.str1.4,"aMS",%progbits,1 + 1312 .align 2 + 1313 .LC0: + 1314 0000 222A2B2C .ascii "\"*+,:;<=>?[]|\177\000" + 1314 3A3B3C3D + 1314 3E3F5B5D + 1314 7C7F00 + 1315 .section .text.create_name,"ax",%progbits + 1316 .align 1 + 1317 .syntax unified + 1318 .thumb + 1319 .thumb_func + 1320 .fpu fpv5-d16 + 1322 create_name: + 1323 .LVL135: + 1324 .LFB1215: +2535:Middlewares/Third_Party/FatFs/src/ff.c **** +2536:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_MINIMIZE <= 1 || _FS_RPATH >= 2 */ +2537:Middlewares/Third_Party/FatFs/src/ff.c **** +2538:Middlewares/Third_Party/FatFs/src/ff.c **** +2539:Middlewares/Third_Party/FatFs/src/ff.c **** +2540:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_FIND && _FS_MINIMIZE <= 1 +2541:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + ARM GAS /tmp/cc5lWXRL.s page 70 + + +2542:Middlewares/Third_Party/FatFs/src/ff.c **** /* Pattern matching */ +2543:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2544:Middlewares/Third_Party/FatFs/src/ff.c **** +2545:Middlewares/Third_Party/FatFs/src/ff.c **** static +2546:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR get_achar ( /* Get a character and advances ptr 1 or 2 */ +2547:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR** ptr /* Pointer to pointer to the SBCS/DBCS/Unicode string */ +2548:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2549:Middlewares/Third_Party/FatFs/src/ff.c **** { +2550:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_LFN_UNICODE +2551:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR chr; +2552:Middlewares/Third_Party/FatFs/src/ff.c **** +2553:Middlewares/Third_Party/FatFs/src/ff.c **** chr = (BYTE)*(*ptr)++; /* Get a byte */ +2554:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsLower(chr)) chr -= 0x20; /* To upper ASCII char */ +2555:Middlewares/Third_Party/FatFs/src/ff.c **** #ifdef _EXCVT +2556:Middlewares/Third_Party/FatFs/src/ff.c **** if (chr >= 0x80) chr = ExCvt[chr - 0x80]; /* To upper SBCS extended char */ +2557:Middlewares/Third_Party/FatFs/src/ff.c **** #else +2558:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsDBCS1(chr) && IsDBCS2(**ptr)) { /* Get DBC 2nd byte if needed */ +2559:Middlewares/Third_Party/FatFs/src/ff.c **** chr = chr << 8 | (BYTE)*(*ptr)++; +2560:Middlewares/Third_Party/FatFs/src/ff.c **** } +2561:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2562:Middlewares/Third_Party/FatFs/src/ff.c **** return chr; +2563:Middlewares/Third_Party/FatFs/src/ff.c **** #else +2564:Middlewares/Third_Party/FatFs/src/ff.c **** return ff_wtoupper(*(*ptr)++); /* Get a word and to upper */ +2565:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2566:Middlewares/Third_Party/FatFs/src/ff.c **** } +2567:Middlewares/Third_Party/FatFs/src/ff.c **** +2568:Middlewares/Third_Party/FatFs/src/ff.c **** +2569:Middlewares/Third_Party/FatFs/src/ff.c **** static +2570:Middlewares/Third_Party/FatFs/src/ff.c **** int pattern_matching ( /* 0:not matched, 1:matched */ +2571:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* pat, /* Matching pattern */ +2572:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* nam, /* String to be tested */ +2573:Middlewares/Third_Party/FatFs/src/ff.c **** int skip, /* Number of pre-skip chars (number of ?s) */ +2574:Middlewares/Third_Party/FatFs/src/ff.c **** int inf /* Infinite search (* specified) */ +2575:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2576:Middlewares/Third_Party/FatFs/src/ff.c **** { +2577:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR *pp, *np; +2578:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR pc, nc; +2579:Middlewares/Third_Party/FatFs/src/ff.c **** int nm, nx; +2580:Middlewares/Third_Party/FatFs/src/ff.c **** +2581:Middlewares/Third_Party/FatFs/src/ff.c **** +2582:Middlewares/Third_Party/FatFs/src/ff.c **** while (skip--) { /* Pre-skip name chars */ +2583:Middlewares/Third_Party/FatFs/src/ff.c **** if (!get_achar(&nam)) return 0; /* Branch mismatched if less name chars */ +2584:Middlewares/Third_Party/FatFs/src/ff.c **** } +2585:Middlewares/Third_Party/FatFs/src/ff.c **** if (!*pat && inf) return 1; /* (short circuit) */ +2586:Middlewares/Third_Party/FatFs/src/ff.c **** +2587:Middlewares/Third_Party/FatFs/src/ff.c **** do { +2588:Middlewares/Third_Party/FatFs/src/ff.c **** pp = pat; np = nam; /* Top of pattern and name to match */ +2589:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { +2590:Middlewares/Third_Party/FatFs/src/ff.c **** if (*pp == '?' || *pp == '*') { /* Wildcard? */ +2591:Middlewares/Third_Party/FatFs/src/ff.c **** nm = nx = 0; +2592:Middlewares/Third_Party/FatFs/src/ff.c **** do { /* Analyze the wildcard chars */ +2593:Middlewares/Third_Party/FatFs/src/ff.c **** if (*pp++ == '?') nm++; else nx = 1; +2594:Middlewares/Third_Party/FatFs/src/ff.c **** } while (*pp == '?' || *pp == '*'); +2595:Middlewares/Third_Party/FatFs/src/ff.c **** if (pattern_matching(pp, np, nm, nx)) return 1; /* Test new branch (recurs upto number of wildc +2596:Middlewares/Third_Party/FatFs/src/ff.c **** nc = *np; break; /* Branch mismatched */ +2597:Middlewares/Third_Party/FatFs/src/ff.c **** } +2598:Middlewares/Third_Party/FatFs/src/ff.c **** pc = get_achar(&pp); /* Get a pattern char */ + ARM GAS /tmp/cc5lWXRL.s page 71 + + +2599:Middlewares/Third_Party/FatFs/src/ff.c **** nc = get_achar(&np); /* Get a name char */ +2600:Middlewares/Third_Party/FatFs/src/ff.c **** if (pc != nc) break; /* Branch mismatched? */ +2601:Middlewares/Third_Party/FatFs/src/ff.c **** if (pc == 0) return 1; /* Branch matched? (matched at end of both strings) */ +2602:Middlewares/Third_Party/FatFs/src/ff.c **** } +2603:Middlewares/Third_Party/FatFs/src/ff.c **** get_achar(&nam); /* nam++ */ +2604:Middlewares/Third_Party/FatFs/src/ff.c **** } while (inf && nc); /* Retry until end of name if infinite search is specified */ +2605:Middlewares/Third_Party/FatFs/src/ff.c **** +2606:Middlewares/Third_Party/FatFs/src/ff.c **** return 0; +2607:Middlewares/Third_Party/FatFs/src/ff.c **** } +2608:Middlewares/Third_Party/FatFs/src/ff.c **** +2609:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_FIND && _FS_MINIMIZE <= 1 */ +2610:Middlewares/Third_Party/FatFs/src/ff.c **** +2611:Middlewares/Third_Party/FatFs/src/ff.c **** +2612:Middlewares/Third_Party/FatFs/src/ff.c **** +2613:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2614:Middlewares/Third_Party/FatFs/src/ff.c **** /* Pick a top segment and create the object name in directory form */ +2615:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2616:Middlewares/Third_Party/FatFs/src/ff.c **** +2617:Middlewares/Third_Party/FatFs/src/ff.c **** static +2618:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT create_name ( /* FR_OK: successful, FR_INVALID_NAME: could not create */ +2619:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Pointer to the directory object */ +2620:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR** path /* Pointer to pointer to the segment in the path string */ +2621:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2622:Middlewares/Third_Party/FatFs/src/ff.c **** { + 1325 .loc 1 2622 1 is_stmt 1 view -0 + 1326 .cfi_startproc + 1327 @ args = 0, pretend = 0, frame = 0 + 1328 @ frame_needed = 0, uses_anonymous_args = 0 + 1329 .loc 1 2622 1 is_stmt 0 view .LVU391 + 1330 0000 2DE9F84F push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr} + 1331 .LCFI13: + 1332 .cfi_def_cfa_offset 40 + 1333 .cfi_offset 3, -40 + 1334 .cfi_offset 4, -36 + 1335 .cfi_offset 5, -32 + 1336 .cfi_offset 6, -28 + 1337 .cfi_offset 7, -24 + 1338 .cfi_offset 8, -20 + 1339 .cfi_offset 9, -16 + 1340 .cfi_offset 10, -12 + 1341 .cfi_offset 11, -8 + 1342 .cfi_offset 14, -4 + 1343 0004 8146 mov r9, r0 + 1344 0006 8A46 mov r10, r1 +2623:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ +2624:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE b, cf; +2625:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR w, *lfn; +2626:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, ni, si, di; +2627:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR *p; +2628:Middlewares/Third_Party/FatFs/src/ff.c **** +2629:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create LFN in Unicode */ +2630:Middlewares/Third_Party/FatFs/src/ff.c **** p = *path; lfn = dp->obj.fs->lfnbuf; si = di = 0; +2631:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { +2632:Middlewares/Third_Party/FatFs/src/ff.c **** w = p[si++]; /* Get a character */ +2633:Middlewares/Third_Party/FatFs/src/ff.c **** if (w < ' ') break; /* Break if end of the path name */ +2634:Middlewares/Third_Party/FatFs/src/ff.c **** if (w == '/' || w == '\\') { /* Break if a separator is found */ +2635:Middlewares/Third_Party/FatFs/src/ff.c **** while (p[si] == '/' || p[si] == '\\') si++; /* Skip duplicated separator if exist */ + ARM GAS /tmp/cc5lWXRL.s page 72 + + +2636:Middlewares/Third_Party/FatFs/src/ff.c **** break; +2637:Middlewares/Third_Party/FatFs/src/ff.c **** } +2638:Middlewares/Third_Party/FatFs/src/ff.c **** if (di >= _MAX_LFN) return FR_INVALID_NAME; /* Reject too long name */ +2639:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_LFN_UNICODE +2640:Middlewares/Third_Party/FatFs/src/ff.c **** w &= 0xFF; +2641:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsDBCS1(w)) { /* Check if it is a DBC 1st byte (always false on SBCS cfg) */ +2642:Middlewares/Third_Party/FatFs/src/ff.c **** b = (BYTE)p[si++]; /* Get 2nd byte */ +2643:Middlewares/Third_Party/FatFs/src/ff.c **** w = (w << 8) + b; /* Create a DBC */ +2644:Middlewares/Third_Party/FatFs/src/ff.c **** if (!IsDBCS2(b)) return FR_INVALID_NAME; /* Reject invalid sequence */ +2645:Middlewares/Third_Party/FatFs/src/ff.c **** } +2646:Middlewares/Third_Party/FatFs/src/ff.c **** w = ff_convert(w, 1); /* Convert ANSI/OEM to Unicode */ +2647:Middlewares/Third_Party/FatFs/src/ff.c **** if (!w) return FR_INVALID_NAME; /* Reject invalid code */ +2648:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2649:Middlewares/Third_Party/FatFs/src/ff.c **** if (w < 0x80 && chk_chr("\"*:<>\?|\x7F", w)) return FR_INVALID_NAME; /* Reject illegal characters +2650:Middlewares/Third_Party/FatFs/src/ff.c **** lfn[di++] = w; /* Store the Unicode character */ +2651:Middlewares/Third_Party/FatFs/src/ff.c **** } +2652:Middlewares/Third_Party/FatFs/src/ff.c **** *path = &p[si]; /* Return pointer to the next segment */ +2653:Middlewares/Third_Party/FatFs/src/ff.c **** cf = (w < ' ') ? NS_LAST : 0; /* Set last segment flag if end of the path */ +2654:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH != 0 +2655:Middlewares/Third_Party/FatFs/src/ff.c **** if ((di == 1 && lfn[di - 1] == '.') || +2656:Middlewares/Third_Party/FatFs/src/ff.c **** (di == 2 && lfn[di - 1] == '.' && lfn[di - 2] == '.')) { /* Is this segment a dot name? */ +2657:Middlewares/Third_Party/FatFs/src/ff.c **** lfn[di] = 0; +2658:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < 11; i++) /* Create dot name for SFN entry */ +2659:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[i] = (i < di) ? '.' : ' '; +2660:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[i] = cf | NS_DOT; /* This is a dot entry */ +2661:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +2662:Middlewares/Third_Party/FatFs/src/ff.c **** } +2663:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2664:Middlewares/Third_Party/FatFs/src/ff.c **** while (di) { /* Snip off trailing spaces and dots if exist */ +2665:Middlewares/Third_Party/FatFs/src/ff.c **** w = lfn[di - 1]; +2666:Middlewares/Third_Party/FatFs/src/ff.c **** if (w != ' ' && w != '.') break; +2667:Middlewares/Third_Party/FatFs/src/ff.c **** di--; +2668:Middlewares/Third_Party/FatFs/src/ff.c **** } +2669:Middlewares/Third_Party/FatFs/src/ff.c **** lfn[di] = 0; /* LFN is created */ +2670:Middlewares/Third_Party/FatFs/src/ff.c **** if (di == 0) return FR_INVALID_NAME; /* Reject nul name */ +2671:Middlewares/Third_Party/FatFs/src/ff.c **** +2672:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create SFN in directory form */ +2673:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dp->fn, ' ', 11); +2674:Middlewares/Third_Party/FatFs/src/ff.c **** for (si = 0; lfn[si] == ' ' || lfn[si] == '.'; si++) ; /* Strip leading spaces and dots */ +2675:Middlewares/Third_Party/FatFs/src/ff.c **** if (si) cf |= NS_LOSS | NS_LFN; +2676:Middlewares/Third_Party/FatFs/src/ff.c **** while (di && lfn[di - 1] != '.') di--; /* Find extension (di<=si: no extension) */ +2677:Middlewares/Third_Party/FatFs/src/ff.c **** +2678:Middlewares/Third_Party/FatFs/src/ff.c **** i = b = 0; ni = 8; +2679:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { +2680:Middlewares/Third_Party/FatFs/src/ff.c **** w = lfn[si++]; /* Get an LFN character */ +2681:Middlewares/Third_Party/FatFs/src/ff.c **** if (!w) break; /* Break on end of the LFN */ +2682:Middlewares/Third_Party/FatFs/src/ff.c **** if (w == ' ' || (w == '.' && si != di)) { /* Remove spaces and dots */ +2683:Middlewares/Third_Party/FatFs/src/ff.c **** cf |= NS_LOSS | NS_LFN; continue; +2684:Middlewares/Third_Party/FatFs/src/ff.c **** } +2685:Middlewares/Third_Party/FatFs/src/ff.c **** +2686:Middlewares/Third_Party/FatFs/src/ff.c **** if (i >= ni || si == di) { /* Extension or end of SFN */ +2687:Middlewares/Third_Party/FatFs/src/ff.c **** if (ni == 11) { /* Long extension */ +2688:Middlewares/Third_Party/FatFs/src/ff.c **** cf |= NS_LOSS | NS_LFN; break; +2689:Middlewares/Third_Party/FatFs/src/ff.c **** } +2690:Middlewares/Third_Party/FatFs/src/ff.c **** if (si != di) cf |= NS_LOSS | NS_LFN; /* Out of 8.3 format */ +2691:Middlewares/Third_Party/FatFs/src/ff.c **** if (si > di) break; /* No extension */ +2692:Middlewares/Third_Party/FatFs/src/ff.c **** si = di; i = 8; ni = 11; /* Enter extension section */ + ARM GAS /tmp/cc5lWXRL.s page 73 + + +2693:Middlewares/Third_Party/FatFs/src/ff.c **** b <<= 2; continue; +2694:Middlewares/Third_Party/FatFs/src/ff.c **** } +2695:Middlewares/Third_Party/FatFs/src/ff.c **** +2696:Middlewares/Third_Party/FatFs/src/ff.c **** if (w >= 0x80) { /* Non ASCII character */ +2697:Middlewares/Third_Party/FatFs/src/ff.c **** #ifdef _EXCVT +2698:Middlewares/Third_Party/FatFs/src/ff.c **** w = ff_convert(w, 0); /* Unicode -> OEM code */ +2699:Middlewares/Third_Party/FatFs/src/ff.c **** if (w) w = ExCvt[w - 0x80]; /* Convert extended character to upper (SBCS) */ +2700:Middlewares/Third_Party/FatFs/src/ff.c **** #else +2701:Middlewares/Third_Party/FatFs/src/ff.c **** w = ff_convert(ff_wtoupper(w), 0); /* Upper converted Unicode -> OEM code */ +2702:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2703:Middlewares/Third_Party/FatFs/src/ff.c **** cf |= NS_LFN; /* Force create LFN entry */ +2704:Middlewares/Third_Party/FatFs/src/ff.c **** } +2705:Middlewares/Third_Party/FatFs/src/ff.c **** +2706:Middlewares/Third_Party/FatFs/src/ff.c **** if (_DF1S && w >= 0x100) { /* Is this DBC? (always false at SBCS cfg) */ +2707:Middlewares/Third_Party/FatFs/src/ff.c **** if (i >= ni - 1) { +2708:Middlewares/Third_Party/FatFs/src/ff.c **** cf |= NS_LOSS | NS_LFN; i = ni; continue; +2709:Middlewares/Third_Party/FatFs/src/ff.c **** } +2710:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[i++] = (BYTE)(w >> 8); +2711:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* SBC */ +2712:Middlewares/Third_Party/FatFs/src/ff.c **** if (!w || chk_chr("+,;=[]", w)) { /* Replace illegal characters for SFN */ +2713:Middlewares/Third_Party/FatFs/src/ff.c **** w = '_'; cf |= NS_LOSS | NS_LFN;/* Lossy conversion */ +2714:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +2715:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsUpper(w)) { /* ASCII large capital */ +2716:Middlewares/Third_Party/FatFs/src/ff.c **** b |= 2; +2717:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +2718:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsLower(w)) { /* ASCII small capital */ +2719:Middlewares/Third_Party/FatFs/src/ff.c **** b |= 1; w -= 0x20; +2720:Middlewares/Third_Party/FatFs/src/ff.c **** } +2721:Middlewares/Third_Party/FatFs/src/ff.c **** } +2722:Middlewares/Third_Party/FatFs/src/ff.c **** } +2723:Middlewares/Third_Party/FatFs/src/ff.c **** } +2724:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[i++] = (BYTE)w; +2725:Middlewares/Third_Party/FatFs/src/ff.c **** } +2726:Middlewares/Third_Party/FatFs/src/ff.c **** +2727:Middlewares/Third_Party/FatFs/src/ff.c **** if (dp->fn[0] == DDEM) dp->fn[0] = RDDEM; /* If the first character collides with DDEM, replace it +2728:Middlewares/Third_Party/FatFs/src/ff.c **** +2729:Middlewares/Third_Party/FatFs/src/ff.c **** if (ni == 8) b <<= 2; +2730:Middlewares/Third_Party/FatFs/src/ff.c **** if ((b & 0x0C) == 0x0C || (b & 0x03) == 0x03) cf |= NS_LFN; /* Create LFN entry when there are com +2731:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(cf & NS_LFN)) { /* When LFN is in 8.3 format without extended character, NT flags are c +2732:Middlewares/Third_Party/FatFs/src/ff.c **** if ((b & 0x03) == 0x01) cf |= NS_EXT; /* NT flag (Extension has only small capital) */ +2733:Middlewares/Third_Party/FatFs/src/ff.c **** if ((b & 0x0C) == 0x04) cf |= NS_BODY; /* NT flag (Filename has only small capital) */ +2734:Middlewares/Third_Party/FatFs/src/ff.c **** } +2735:Middlewares/Third_Party/FatFs/src/ff.c **** +2736:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[NSFLAG] = cf; /* SFN is created */ +2737:Middlewares/Third_Party/FatFs/src/ff.c **** +2738:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +2739:Middlewares/Third_Party/FatFs/src/ff.c **** +2740:Middlewares/Third_Party/FatFs/src/ff.c **** +2741:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* _USE_LFN != 0 : Non-LFN configuration */ +2742:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE c, d, *sfn; + 1345 .loc 1 2742 2 is_stmt 1 view .LVU392 +2743:Middlewares/Third_Party/FatFs/src/ff.c **** UINT ni, si, i; + 1346 .loc 1 2743 2 view .LVU393 +2744:Middlewares/Third_Party/FatFs/src/ff.c **** const char *p; + 1347 .loc 1 2744 2 view .LVU394 +2745:Middlewares/Third_Party/FatFs/src/ff.c **** +2746:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create file name in directory form */ + ARM GAS /tmp/cc5lWXRL.s page 74 + + +2747:Middlewares/Third_Party/FatFs/src/ff.c **** p = *path; sfn = dp->fn; + 1348 .loc 1 2747 2 view .LVU395 + 1349 .loc 1 2747 4 is_stmt 0 view .LVU396 + 1350 0008 D1F80080 ldr r8, [r1] + 1351 .LVL136: + 1352 .loc 1 2747 13 is_stmt 1 view .LVU397 + 1353 .loc 1 2747 17 is_stmt 0 view .LVU398 + 1354 000c 00F1240B add fp, r0, #36 + 1355 .LVL137: +2748:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(sfn, ' ', 11); + 1356 .loc 1 2748 2 is_stmt 1 view .LVU399 + 1357 0010 0B22 movs r2, #11 + 1358 0012 2021 movs r1, #32 + 1359 .LVL138: + 1360 .loc 1 2748 2 is_stmt 0 view .LVU400 + 1361 0014 5846 mov r0, fp + 1362 .LVL139: + 1363 .loc 1 2748 2 view .LVU401 + 1364 0016 FFF7FEFF bl mem_set + 1365 .LVL140: +2749:Middlewares/Third_Party/FatFs/src/ff.c **** si = i = 0; ni = 8; + 1366 .loc 1 2749 2 is_stmt 1 view .LVU402 + 1367 .loc 1 2749 14 view .LVU403 + 1368 .loc 1 2749 9 is_stmt 0 view .LVU404 + 1369 001a 0025 movs r5, #0 + 1370 .loc 1 2749 5 view .LVU405 + 1371 001c 2B46 mov r3, r5 + 1372 .loc 1 2749 17 view .LVU406 + 1373 001e 0827 movs r7, #8 + 1374 0020 29E0 b .L111 + 1375 .LVL141: + 1376 .L115: +2750:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH != 0 +2751:Middlewares/Third_Party/FatFs/src/ff.c **** if (p[si] == '.') { /* Is this a dot entry? */ +2752:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { +2753:Middlewares/Third_Party/FatFs/src/ff.c **** c = (BYTE)p[si++]; +2754:Middlewares/Third_Party/FatFs/src/ff.c **** if (c != '.' || si >= 3) break; +2755:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[i++] = c; +2756:Middlewares/Third_Party/FatFs/src/ff.c **** } +2757:Middlewares/Third_Party/FatFs/src/ff.c **** if (c != '/' && c != '\\' && c > ' ') return FR_INVALID_NAME; +2758:Middlewares/Third_Party/FatFs/src/ff.c **** *path = p + si; /* Return pointer to the next segment */ +2759:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[NSFLAG] = (c <= ' ') ? NS_LAST | NS_DOT : NS_DOT; /* Set last segment flag if end of the path +2760:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +2761:Middlewares/Third_Party/FatFs/src/ff.c **** } +2762:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2763:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { +2764:Middlewares/Third_Party/FatFs/src/ff.c **** c = (BYTE)p[si++]; +2765:Middlewares/Third_Party/FatFs/src/ff.c **** if (c <= ' ') break; /* Break if end of the path name */ +2766:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == '/' || c == '\\') { /* Break if a separator is found */ +2767:Middlewares/Third_Party/FatFs/src/ff.c **** while (p[si] == '/' || p[si] == '\\') si++; /* Skip duplicated separator if exist */ + 1377 .loc 1 2767 42 is_stmt 1 discriminator 2 view .LVU407 + 1378 .loc 1 2767 44 is_stmt 0 discriminator 2 view .LVU408 + 1379 0022 0136 adds r6, r6, #1 + 1380 .LVL142: + 1381 .L113: + 1382 .loc 1 2767 10 is_stmt 1 discriminator 1 view .LVU409 + 1383 .loc 1 2767 12 is_stmt 0 discriminator 1 view .LVU410 + ARM GAS /tmp/cc5lWXRL.s page 75 + + + 1384 0024 18F80630 ldrb r3, [r8, r6] @ zero_extendqisi2 + 1385 .loc 1 2767 10 discriminator 1 view .LVU411 + 1386 0028 5C2B cmp r3, #92 + 1387 002a 18BF it ne + 1388 002c 2F2B cmpne r3, #47 + 1389 002e F8D0 beq .L115 + 1390 .L112: +2768:Middlewares/Third_Party/FatFs/src/ff.c **** break; +2769:Middlewares/Third_Party/FatFs/src/ff.c **** } +2770:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == '.' || i >= ni) { /* End of body or over size? */ +2771:Middlewares/Third_Party/FatFs/src/ff.c **** if (ni == 11 || c != '.') return FR_INVALID_NAME; /* Over size or invalid dot */ +2772:Middlewares/Third_Party/FatFs/src/ff.c **** i = 8; ni = 11; /* Goto extension */ +2773:Middlewares/Third_Party/FatFs/src/ff.c **** continue; +2774:Middlewares/Third_Party/FatFs/src/ff.c **** } +2775:Middlewares/Third_Party/FatFs/src/ff.c **** if (c >= 0x80) { /* Extended character? */ +2776:Middlewares/Third_Party/FatFs/src/ff.c **** #ifdef _EXCVT +2777:Middlewares/Third_Party/FatFs/src/ff.c **** c = ExCvt[c - 0x80]; /* To upper extended characters (SBCS cfg) */ +2778:Middlewares/Third_Party/FatFs/src/ff.c **** #else +2779:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_DF1S +2780:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_INVALID_NAME; /* Reject extended characters (ASCII only cfg) */ +2781:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2782:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2783:Middlewares/Third_Party/FatFs/src/ff.c **** } +2784:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsDBCS1(c)) { /* Check if it is a DBC 1st byte (always false at SBCS cfg.) */ +2785:Middlewares/Third_Party/FatFs/src/ff.c **** d = (BYTE)p[si++]; /* Get 2nd byte */ +2786:Middlewares/Third_Party/FatFs/src/ff.c **** if (!IsDBCS2(d) || i >= ni - 1) return FR_INVALID_NAME; /* Reject invalid DBC */ +2787:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[i++] = c; +2788:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[i++] = d; +2789:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* SBC */ +2790:Middlewares/Third_Party/FatFs/src/ff.c **** if (chk_chr("\"*+,:;<=>\?[]|\x7F", c)) return FR_INVALID_NAME; /* Reject illegal chrs for SFN */ +2791:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsLower(c)) c -= 0x20; /* To upper */ +2792:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[i++] = c; +2793:Middlewares/Third_Party/FatFs/src/ff.c **** } +2794:Middlewares/Third_Party/FatFs/src/ff.c **** } +2795:Middlewares/Third_Party/FatFs/src/ff.c **** *path = p + si; /* Return pointer to the next segment */ + 1391 .loc 1 2795 2 is_stmt 1 view .LVU412 + 1392 .loc 1 2795 12 is_stmt 0 view .LVU413 + 1393 0030 4644 add r6, r6, r8 + 1394 .LVL143: + 1395 .loc 1 2795 8 view .LVU414 + 1396 0032 CAF80060 str r6, [r10] +2796:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 0) return FR_INVALID_NAME; /* Reject nul string */ + 1397 .loc 1 2796 2 is_stmt 1 view .LVU415 + 1398 .loc 1 2796 5 is_stmt 0 view .LVU416 + 1399 0036 002D cmp r5, #0 + 1400 0038 44D0 beq .L125 +2797:Middlewares/Third_Party/FatFs/src/ff.c **** +2798:Middlewares/Third_Party/FatFs/src/ff.c **** if (sfn[0] == DDEM) sfn[0] = RDDEM; /* If the first character collides with DDEM, replace it with + 1401 .loc 1 2798 2 is_stmt 1 view .LVU417 + 1402 .loc 1 2798 9 is_stmt 0 view .LVU418 + 1403 003a 99F82430 ldrb r3, [r9, #36] @ zero_extendqisi2 + 1404 .loc 1 2798 5 view .LVU419 + 1405 003e E52B cmp r3, #229 + 1406 0040 35D0 beq .L129 + 1407 .L121: +2799:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[NSFLAG] = (c <= ' ') ? NS_LAST : 0; /* Set last segment flag if end of the path */ + 1408 .loc 1 2799 2 is_stmt 1 view .LVU420 + ARM GAS /tmp/cc5lWXRL.s page 76 + + + 1409 .loc 1 2799 14 is_stmt 0 view .LVU421 + 1410 0042 202C cmp r4, #32 + 1411 0044 37D8 bhi .L126 + 1412 0046 0423 movs r3, #4 + 1413 .L122: + 1414 .loc 1 2799 14 discriminator 4 view .LVU422 + 1415 0048 89F82F30 strb r3, [r9, #47] +2800:Middlewares/Third_Party/FatFs/src/ff.c **** +2801:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; + 1416 .loc 1 2801 2 is_stmt 1 discriminator 4 view .LVU423 + 1417 .loc 1 2801 9 is_stmt 0 discriminator 4 view .LVU424 + 1418 004c 0020 movs r0, #0 + 1419 004e 35E0 b .L117 + 1420 .LVL144: + 1421 .L116: +2775:Middlewares/Third_Party/FatFs/src/ff.c **** #ifdef _EXCVT + 1422 .loc 1 2775 3 is_stmt 1 view .LVU425 +2775:Middlewares/Third_Party/FatFs/src/ff.c **** #ifdef _EXCVT + 1423 .loc 1 2775 6 is_stmt 0 view .LVU426 + 1424 0050 14F0800F tst r4, #128 + 1425 0054 27D1 bne .L130 + 1426 .L119: +2784:Middlewares/Third_Party/FatFs/src/ff.c **** d = (BYTE)p[si++]; /* Get 2nd byte */ + 1427 .loc 1 2784 3 is_stmt 1 view .LVU427 +2790:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsLower(c)) c -= 0x20; /* To upper */ + 1428 .loc 1 2790 4 view .LVU428 +2790:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsLower(c)) c -= 0x20; /* To upper */ + 1429 .loc 1 2790 8 is_stmt 0 view .LVU429 + 1430 0056 2146 mov r1, r4 + 1431 0058 1B48 ldr r0, .L131 + 1432 005a FFF7FEFF bl chk_chr + 1433 .LVL145: +2790:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsLower(c)) c -= 0x20; /* To upper */ + 1434 .loc 1 2790 7 view .LVU430 + 1435 005e 78BB cbnz r0, .L124 +2791:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[i++] = c; + 1436 .loc 1 2791 4 is_stmt 1 view .LVU431 +2791:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[i++] = c; + 1437 .loc 1 2791 8 is_stmt 0 view .LVU432 + 1438 0060 A4F16103 sub r3, r4, #97 + 1439 0064 DBB2 uxtb r3, r3 +2791:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[i++] = c; + 1440 .loc 1 2791 7 view .LVU433 + 1441 0066 192B cmp r3, #25 + 1442 0068 01D8 bhi .L120 +2791:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[i++] = c; + 1443 .loc 1 2791 20 is_stmt 1 discriminator 1 view .LVU434 +2791:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[i++] = c; + 1444 .loc 1 2791 22 is_stmt 0 discriminator 1 view .LVU435 + 1445 006a 203C subs r4, r4, #32 + 1446 .LVL146: +2791:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[i++] = c; + 1447 .loc 1 2791 22 discriminator 1 view .LVU436 + 1448 006c E4B2 uxtb r4, r4 + 1449 .LVL147: + 1450 .L120: +2792:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 77 + + + 1451 .loc 1 2792 4 is_stmt 1 view .LVU437 +2792:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1452 .loc 1 2792 13 is_stmt 0 view .LVU438 + 1453 006e 0BF80540 strb r4, [fp, r5] +2792:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1454 .loc 1 2792 9 view .LVU439 + 1455 0072 0135 adds r5, r5, #1 + 1456 .LVL148: + 1457 .L118: +2772:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 1458 .loc 1 2772 14 view .LVU440 + 1459 0074 3346 mov r3, r6 + 1460 .LVL149: + 1461 .L111: +2763:Middlewares/Third_Party/FatFs/src/ff.c **** c = (BYTE)p[si++]; + 1462 .loc 1 2763 2 is_stmt 1 view .LVU441 +2764:Middlewares/Third_Party/FatFs/src/ff.c **** if (c <= ' ') break; /* Break if end of the path name */ + 1463 .loc 1 2764 3 view .LVU442 +2764:Middlewares/Third_Party/FatFs/src/ff.c **** if (c <= ' ') break; /* Break if end of the path name */ + 1464 .loc 1 2764 17 is_stmt 0 view .LVU443 + 1465 0076 5E1C adds r6, r3, #1 + 1466 .LVL150: +2764:Middlewares/Third_Party/FatFs/src/ff.c **** if (c <= ' ') break; /* Break if end of the path name */ + 1467 .loc 1 2764 5 view .LVU444 + 1468 0078 18F80340 ldrb r4, [r8, r3] @ zero_extendqisi2 + 1469 .LVL151: +2765:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == '/' || c == '\\') { /* Break if a separator is found */ + 1470 .loc 1 2765 3 is_stmt 1 view .LVU445 +2765:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == '/' || c == '\\') { /* Break if a separator is found */ + 1471 .loc 1 2765 6 is_stmt 0 view .LVU446 + 1472 007c 202C cmp r4, #32 + 1473 007e D7D9 bls .L112 +2766:Middlewares/Third_Party/FatFs/src/ff.c **** while (p[si] == '/' || p[si] == '\\') si++; /* Skip duplicated separator if exist */ + 1474 .loc 1 2766 3 is_stmt 1 view .LVU447 +2766:Middlewares/Third_Party/FatFs/src/ff.c **** while (p[si] == '/' || p[si] == '\\') si++; /* Skip duplicated separator if exist */ + 1475 .loc 1 2766 6 is_stmt 0 view .LVU448 + 1476 0080 5C2C cmp r4, #92 + 1477 0082 18BF it ne + 1478 0084 2F2C cmpne r4, #47 + 1479 0086 CDD0 beq .L113 +2770:Middlewares/Third_Party/FatFs/src/ff.c **** if (ni == 11 || c != '.') return FR_INVALID_NAME; /* Over size or invalid dot */ + 1480 .loc 1 2770 3 is_stmt 1 view .LVU449 +2770:Middlewares/Third_Party/FatFs/src/ff.c **** if (ni == 11 || c != '.') return FR_INVALID_NAME; /* Over size or invalid dot */ + 1481 .loc 1 2770 6 is_stmt 0 view .LVU450 + 1482 0088 2E2C cmp r4, #46 + 1483 008a 18BF it ne + 1484 008c AF42 cmpne r7, r5 + 1485 008e DFD8 bhi .L116 +2771:Middlewares/Third_Party/FatFs/src/ff.c **** i = 8; ni = 11; /* Goto extension */ + 1486 .loc 1 2771 4 is_stmt 1 view .LVU451 +2771:Middlewares/Third_Party/FatFs/src/ff.c **** i = 8; ni = 11; /* Goto extension */ + 1487 .loc 1 2771 22 is_stmt 0 view .LVU452 + 1488 0090 2E3C subs r4, r4, #46 + 1489 .LVL152: +2771:Middlewares/Third_Party/FatFs/src/ff.c **** i = 8; ni = 11; /* Goto extension */ + 1490 .loc 1 2771 22 view .LVU453 + 1491 0092 18BF it ne + ARM GAS /tmp/cc5lWXRL.s page 78 + + + 1492 0094 0124 movne r4, #1 + 1493 .LVL153: +2771:Middlewares/Third_Party/FatFs/src/ff.c **** i = 8; ni = 11; /* Goto extension */ + 1494 .loc 1 2771 17 view .LVU454 + 1495 0096 0B2F cmp r7, #11 + 1496 0098 08BF it eq + 1497 009a 44F00104 orreq r4, r4, #1 +2771:Middlewares/Third_Party/FatFs/src/ff.c **** i = 8; ni = 11; /* Goto extension */ + 1498 .loc 1 2771 7 view .LVU455 + 1499 009e 64B9 cbnz r4, .L123 +2772:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 1500 .loc 1 2772 6 view .LVU456 + 1501 00a0 0825 movs r5, #8 + 1502 .LVL154: +2772:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 1503 .loc 1 2772 14 view .LVU457 + 1504 00a2 0B27 movs r7, #11 + 1505 .LVL155: +2772:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 1506 .loc 1 2772 14 view .LVU458 + 1507 00a4 E6E7 b .L118 + 1508 .LVL156: + 1509 .L130: +2777:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 1510 .loc 1 2777 4 is_stmt 1 view .LVU459 +2777:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 1511 .loc 1 2777 16 is_stmt 0 view .LVU460 + 1512 00a6 803C subs r4, r4, #128 + 1513 .LVL157: +2777:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 1514 .loc 1 2777 6 view .LVU461 + 1515 00a8 084B ldr r3, .L131+4 + 1516 00aa 1C5D ldrb r4, [r3, r4] @ zero_extendqisi2 + 1517 .LVL158: +2777:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 1518 .loc 1 2777 6 view .LVU462 + 1519 00ac D3E7 b .L119 + 1520 .LVL159: + 1521 .L129: +2798:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[NSFLAG] = (c <= ' ') ? NS_LAST : 0; /* Set last segment flag if end of the path */ + 1522 .loc 1 2798 22 is_stmt 1 discriminator 1 view .LVU463 +2798:Middlewares/Third_Party/FatFs/src/ff.c **** sfn[NSFLAG] = (c <= ' ') ? NS_LAST : 0; /* Set last segment flag if end of the path */ + 1523 .loc 1 2798 29 is_stmt 0 discriminator 1 view .LVU464 + 1524 00ae 0523 movs r3, #5 + 1525 00b0 89F82430 strb r3, [r9, #36] + 1526 00b4 C5E7 b .L121 + 1527 .L126: +2799:Middlewares/Third_Party/FatFs/src/ff.c **** + 1528 .loc 1 2799 14 view .LVU465 + 1529 00b6 0023 movs r3, #0 + 1530 00b8 C6E7 b .L122 + 1531 .LVL160: + 1532 .L123: +2771:Middlewares/Third_Party/FatFs/src/ff.c **** i = 8; ni = 11; /* Goto extension */ + 1533 .loc 1 2771 37 view .LVU466 + 1534 00ba 0620 movs r0, #6 + 1535 .LVL161: + ARM GAS /tmp/cc5lWXRL.s page 79 + + + 1536 .L117: +2802:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_LFN != 0 */ +2803:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1537 .loc 1 2803 1 view .LVU467 + 1538 00bc BDE8F88F pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc} + 1539 .LVL162: + 1540 .L124: +2790:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsLower(c)) c -= 0x20; /* To upper */ + 1541 .loc 1 2790 50 view .LVU468 + 1542 00c0 0620 movs r0, #6 + 1543 00c2 FBE7 b .L117 + 1544 .LVL163: + 1545 .L125: +2796:Middlewares/Third_Party/FatFs/src/ff.c **** + 1546 .loc 1 2796 21 view .LVU469 + 1547 00c4 0620 movs r0, #6 + 1548 00c6 F9E7 b .L117 + 1549 .L132: + 1550 .align 2 + 1551 .L131: + 1552 00c8 00000000 .word .LC0 + 1553 00cc 00000000 .word .LANCHOR1 + 1554 .cfi_endproc + 1555 .LFE1215: + 1557 .section .text.get_ldnumber,"ax",%progbits + 1558 .align 1 + 1559 .syntax unified + 1560 .thumb + 1561 .thumb_func + 1562 .fpu fpv5-d16 + 1564 get_ldnumber: + 1565 .LVL164: + 1566 .LFB1217: +2804:Middlewares/Third_Party/FatFs/src/ff.c **** +2805:Middlewares/Third_Party/FatFs/src/ff.c **** +2806:Middlewares/Third_Party/FatFs/src/ff.c **** +2807:Middlewares/Third_Party/FatFs/src/ff.c **** +2808:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2809:Middlewares/Third_Party/FatFs/src/ff.c **** /* Follow a file path */ +2810:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2811:Middlewares/Third_Party/FatFs/src/ff.c **** +2812:Middlewares/Third_Party/FatFs/src/ff.c **** static +2813:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT follow_path ( /* FR_OK(0): successful, !=0: error code */ +2814:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Directory object to return last directory and found object */ +2815:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path /* Full-path string to find a file or directory */ +2816:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2817:Middlewares/Third_Party/FatFs/src/ff.c **** { +2818:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +2819:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE ns; +2820:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID *obj = &dp->obj; +2821:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = obj->fs; +2822:Middlewares/Third_Party/FatFs/src/ff.c **** +2823:Middlewares/Third_Party/FatFs/src/ff.c **** +2824:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH != 0 +2825:Middlewares/Third_Party/FatFs/src/ff.c **** if (*path != '/' && *path != '\\') { /* Without heading separator */ +2826:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = fs->cdir; /* Start from current directory */ +2827:Middlewares/Third_Party/FatFs/src/ff.c **** } else + ARM GAS /tmp/cc5lWXRL.s page 80 + + +2828:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2829:Middlewares/Third_Party/FatFs/src/ff.c **** { /* With heading separator */ +2830:Middlewares/Third_Party/FatFs/src/ff.c **** while (*path == '/' || *path == '\\') path++; /* Strip heading separator */ +2831:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = 0; /* Start from root directory */ +2832:Middlewares/Third_Party/FatFs/src/ff.c **** } +2833:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +2834:Middlewares/Third_Party/FatFs/src/ff.c **** obj->n_frag = 0; /* Invalidate last fragment counter of the object */ +2835:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH != 0 +2836:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT && obj->sclust) { /* Retrieve the sub-directory status if needed */ +2837:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +2838:Middlewares/Third_Party/FatFs/src/ff.c **** +2839:Middlewares/Third_Party/FatFs/src/ff.c **** obj->c_scl = fs->cdc_scl; +2840:Middlewares/Third_Party/FatFs/src/ff.c **** obj->c_size = fs->cdc_size; +2841:Middlewares/Third_Party/FatFs/src/ff.c **** obj->c_ofs = fs->cdc_ofs; +2842:Middlewares/Third_Party/FatFs/src/ff.c **** res = load_obj_dir(&dj, obj); +2843:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; +2844:Middlewares/Third_Party/FatFs/src/ff.c **** obj->objsize = ld_dword(fs->dirbuf + XDIR_FileSize); +2845:Middlewares/Third_Party/FatFs/src/ff.c **** obj->stat = fs->dirbuf[XDIR_GenFlags] & 2; +2846:Middlewares/Third_Party/FatFs/src/ff.c **** } +2847:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2848:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2849:Middlewares/Third_Party/FatFs/src/ff.c **** +2850:Middlewares/Third_Party/FatFs/src/ff.c **** if ((UINT)*path < ' ') { /* Null path name is the origin directory itself */ +2851:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[NSFLAG] = NS_NONAME; +2852:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); +2853:Middlewares/Third_Party/FatFs/src/ff.c **** +2854:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Follow path */ +2855:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { +2856:Middlewares/Third_Party/FatFs/src/ff.c **** res = create_name(dp, &path); /* Get a segment name of the path */ +2857:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +2858:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_find(dp); /* Find an object with the segment name */ +2859:Middlewares/Third_Party/FatFs/src/ff.c **** ns = dp->fn[NSFLAG]; +2860:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) { /* Failed to find the object */ +2861:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { /* Object is not found */ +2862:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && (ns & NS_DOT)) { /* If dot entry is not exist, stay there */ +2863:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(ns & NS_LAST)) continue; /* Continue to follow if not last segment */ +2864:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[NSFLAG] = NS_NONAME; +2865:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; +2866:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Could not find the object */ +2867:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(ns & NS_LAST)) res = FR_NO_PATH; /* Adjust error code if not last segment */ +2868:Middlewares/Third_Party/FatFs/src/ff.c **** } +2869:Middlewares/Third_Party/FatFs/src/ff.c **** } +2870:Middlewares/Third_Party/FatFs/src/ff.c **** break; +2871:Middlewares/Third_Party/FatFs/src/ff.c **** } +2872:Middlewares/Third_Party/FatFs/src/ff.c **** if (ns & NS_LAST) break; /* Last segment matched. Function completed. */ +2873:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get into the sub-directory */ +2874:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(obj->attr & AM_DIR)) { /* It is not a sub-directory and cannot follow */ +2875:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_PATH; break; +2876:Middlewares/Third_Party/FatFs/src/ff.c **** } +2877:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +2878:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { /* Save containing directory information for next dir */ +2879:Middlewares/Third_Party/FatFs/src/ff.c **** obj->c_scl = obj->sclust; +2880:Middlewares/Third_Party/FatFs/src/ff.c **** obj->c_size = ((DWORD)obj->objsize & 0xFFFFFF00) | obj->stat; +2881:Middlewares/Third_Party/FatFs/src/ff.c **** obj->c_ofs = dp->blk_ofs; +2882:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = ld_dword(fs->dirbuf + XDIR_FstClus); /* Open next directory */ +2883:Middlewares/Third_Party/FatFs/src/ff.c **** obj->stat = fs->dirbuf[XDIR_GenFlags] & 2; +2884:Middlewares/Third_Party/FatFs/src/ff.c **** obj->objsize = ld_qword(fs->dirbuf + XDIR_FileSize); + ARM GAS /tmp/cc5lWXRL.s page 81 + + +2885:Middlewares/Third_Party/FatFs/src/ff.c **** } else +2886:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2887:Middlewares/Third_Party/FatFs/src/ff.c **** { +2888:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = ld_clust(fs, fs->win + dp->dptr % SS(fs)); /* Open next directory */ +2889:Middlewares/Third_Party/FatFs/src/ff.c **** } +2890:Middlewares/Third_Party/FatFs/src/ff.c **** } +2891:Middlewares/Third_Party/FatFs/src/ff.c **** } +2892:Middlewares/Third_Party/FatFs/src/ff.c **** +2893:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +2894:Middlewares/Third_Party/FatFs/src/ff.c **** } +2895:Middlewares/Third_Party/FatFs/src/ff.c **** +2896:Middlewares/Third_Party/FatFs/src/ff.c **** +2897:Middlewares/Third_Party/FatFs/src/ff.c **** +2898:Middlewares/Third_Party/FatFs/src/ff.c **** +2899:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2900:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive number from path name */ +2901:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2902:Middlewares/Third_Party/FatFs/src/ff.c **** +2903:Middlewares/Third_Party/FatFs/src/ff.c **** static +2904:Middlewares/Third_Party/FatFs/src/ff.c **** int get_ldnumber ( /* Returns logical drive number (-1:invalid drive) */ +2905:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR** path /* Pointer to pointer to the path name */ +2906:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2907:Middlewares/Third_Party/FatFs/src/ff.c **** { + 1567 .loc 1 2907 1 is_stmt 1 view -0 + 1568 .cfi_startproc + 1569 @ args = 0, pretend = 0, frame = 0 + 1570 @ frame_needed = 0, uses_anonymous_args = 0 + 1571 @ link register save eliminated. + 1572 .loc 1 2907 1 is_stmt 0 view .LVU471 + 1573 0000 0146 mov r1, r0 +2908:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR *tp, *tt; + 1574 .loc 1 2908 2 is_stmt 1 view .LVU472 +2909:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; + 1575 .loc 1 2909 2 view .LVU473 +2910:Middlewares/Third_Party/FatFs/src/ff.c **** int vol = -1; + 1576 .loc 1 2910 2 view .LVU474 + 1577 .LVL165: +2911:Middlewares/Third_Party/FatFs/src/ff.c **** #if _STR_VOLUME_ID /* Find string drive id */ +2912:Middlewares/Third_Party/FatFs/src/ff.c **** static const char* const volid[] = {_VOLUME_STRS}; +2913:Middlewares/Third_Party/FatFs/src/ff.c **** const char *sp; +2914:Middlewares/Third_Party/FatFs/src/ff.c **** char c; +2915:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR tc; +2916:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2917:Middlewares/Third_Party/FatFs/src/ff.c **** +2918:Middlewares/Third_Party/FatFs/src/ff.c **** +2919:Middlewares/Third_Party/FatFs/src/ff.c **** if (*path) { /* If the pointer is not a null */ + 1578 .loc 1 2919 2 view .LVU475 + 1579 .loc 1 2919 6 is_stmt 0 view .LVU476 + 1580 0002 0068 ldr r0, [r0] + 1581 .LVL166: + 1582 .loc 1 2919 5 view .LVU477 + 1583 0004 08B1 cbz r0, .L142 +2920:Middlewares/Third_Party/FatFs/src/ff.c **** for (tt = *path; (UINT)*tt >= (_USE_LFN ? ' ' : '!') && *tt != ':'; tt++) ; /* Find ':' in the pa + 1584 .loc 1 2920 11 view .LVU478 + 1585 0006 0246 mov r2, r0 + 1586 0008 03E0 b .L134 + 1587 .L142: + ARM GAS /tmp/cc5lWXRL.s page 82 + + +2910:Middlewares/Third_Party/FatFs/src/ff.c **** int vol = -1; + 1588 .loc 1 2910 6 view .LVU479 + 1589 000a 4FF0FF30 mov r0, #-1 + 1590 000e 7047 bx lr + 1591 .LVL167: + 1592 .L136: + 1593 .loc 1 2920 77 is_stmt 1 discriminator 3 view .LVU480 + 1594 .loc 1 2920 71 discriminator 3 view .LVU481 + 1595 .loc 1 2920 73 is_stmt 0 discriminator 3 view .LVU482 + 1596 0010 0132 adds r2, r2, #1 + 1597 .LVL168: + 1598 .L134: + 1599 .loc 1 2920 20 is_stmt 1 discriminator 1 view .LVU483 + 1600 .loc 1 2920 26 is_stmt 0 discriminator 1 view .LVU484 + 1601 0012 1378 ldrb r3, [r2] @ zero_extendqisi2 + 1602 .loc 1 2920 3 discriminator 1 view .LVU485 + 1603 0014 3A2B cmp r3, #58 + 1604 0016 18BF it ne + 1605 0018 202B cmpne r3, #32 + 1606 001a F9D8 bhi .L136 +2921:Middlewares/Third_Party/FatFs/src/ff.c **** if (*tt == ':') { /* If a ':' is exist in the path name */ + 1607 .loc 1 2921 3 is_stmt 1 view .LVU486 + 1608 .loc 1 2921 6 is_stmt 0 view .LVU487 + 1609 001c 3A2B cmp r3, #58 + 1610 001e 01D0 beq .L143 +2922:Middlewares/Third_Party/FatFs/src/ff.c **** tp = *path; +2923:Middlewares/Third_Party/FatFs/src/ff.c **** i = *tp++ - '0'; +2924:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < 10 && tp == tt) { /* Is there a numeric drive id? */ +2925:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < _VOLUMES) { /* If a drive id is found, get the value and strip it */ +2926:Middlewares/Third_Party/FatFs/src/ff.c **** vol = (int)i; +2927:Middlewares/Third_Party/FatFs/src/ff.c **** *path = ++tt; +2928:Middlewares/Third_Party/FatFs/src/ff.c **** } +2929:Middlewares/Third_Party/FatFs/src/ff.c **** } +2930:Middlewares/Third_Party/FatFs/src/ff.c **** #if _STR_VOLUME_ID +2931:Middlewares/Third_Party/FatFs/src/ff.c **** else { /* No numeric drive number, find string drive id */ +2932:Middlewares/Third_Party/FatFs/src/ff.c **** i = 0; tt++; +2933:Middlewares/Third_Party/FatFs/src/ff.c **** do { +2934:Middlewares/Third_Party/FatFs/src/ff.c **** sp = volid[i]; tp = *path; +2935:Middlewares/Third_Party/FatFs/src/ff.c **** do { /* Compare a string drive id with path name */ +2936:Middlewares/Third_Party/FatFs/src/ff.c **** c = *sp++; tc = *tp++; +2937:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsLower(tc)) tc -= 0x20; +2938:Middlewares/Third_Party/FatFs/src/ff.c **** } while (c && (TCHAR)c == tc); +2939:Middlewares/Third_Party/FatFs/src/ff.c **** } while ((c || tp != tt) && ++i < _VOLUMES); /* Repeat for each id until pattern match */ +2940:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < _VOLUMES) { /* If a drive id is found, get the value and strip it */ +2941:Middlewares/Third_Party/FatFs/src/ff.c **** vol = (int)i; +2942:Middlewares/Third_Party/FatFs/src/ff.c **** *path = tt; +2943:Middlewares/Third_Party/FatFs/src/ff.c **** } +2944:Middlewares/Third_Party/FatFs/src/ff.c **** } +2945:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2946:Middlewares/Third_Party/FatFs/src/ff.c **** return vol; +2947:Middlewares/Third_Party/FatFs/src/ff.c **** } +2948:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH != 0 && _VOLUMES >= 2 +2949:Middlewares/Third_Party/FatFs/src/ff.c **** vol = CurrVol; /* Current drive */ +2950:Middlewares/Third_Party/FatFs/src/ff.c **** #else +2951:Middlewares/Third_Party/FatFs/src/ff.c **** vol = 0; /* Drive 0 */ + 1611 .loc 1 2951 7 view .LVU488 + 1612 0020 0020 movs r0, #0 + ARM GAS /tmp/cc5lWXRL.s page 83 + + + 1613 .LVL169: +2952:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2953:Middlewares/Third_Party/FatFs/src/ff.c **** } +2954:Middlewares/Third_Party/FatFs/src/ff.c **** return vol; +2955:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1614 .loc 1 2955 1 view .LVU489 + 1615 0022 7047 bx lr + 1616 .LVL170: + 1617 .L143: +2922:Middlewares/Third_Party/FatFs/src/ff.c **** tp = *path; + 1618 .loc 1 2922 4 is_stmt 1 view .LVU490 +2923:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < 10 && tp == tt) { /* Is there a numeric drive id? */ + 1619 .loc 1 2923 4 view .LVU491 +2923:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < 10 && tp == tt) { /* Is there a numeric drive id? */ + 1620 .loc 1 2923 11 is_stmt 0 view .LVU492 + 1621 0024 0346 mov r3, r0 + 1622 .LVL171: +2923:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < 10 && tp == tt) { /* Is there a numeric drive id? */ + 1623 .loc 1 2923 8 view .LVU493 + 1624 0026 13F8010B ldrb r0, [r3], #1 @ zero_extendqisi2 + 1625 .LVL172: +2923:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < 10 && tp == tt) { /* Is there a numeric drive id? */ + 1626 .loc 1 2923 14 view .LVU494 + 1627 002a 3038 subs r0, r0, #48 + 1628 .LVL173: +2924:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < _VOLUMES) { /* If a drive id is found, get the value and strip it */ + 1629 .loc 1 2924 4 is_stmt 1 view .LVU495 +2924:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < _VOLUMES) { /* If a drive id is found, get the value and strip it */ + 1630 .loc 1 2924 7 is_stmt 0 view .LVU496 + 1631 002c 0928 cmp r0, #9 + 1632 002e 98BF it ls + 1633 0030 9A42 cmpls r2, r3 + 1634 0032 03D1 bne .L140 +2925:Middlewares/Third_Party/FatFs/src/ff.c **** vol = (int)i; + 1635 .loc 1 2925 5 is_stmt 1 view .LVU497 +2925:Middlewares/Third_Party/FatFs/src/ff.c **** vol = (int)i; + 1636 .loc 1 2925 8 is_stmt 0 view .LVU498 + 1637 0034 28B9 cbnz r0, .L141 +2926:Middlewares/Third_Party/FatFs/src/ff.c **** *path = ++tt; + 1638 .loc 1 2926 6 is_stmt 1 view .LVU499 + 1639 .LVL174: +2927:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1640 .loc 1 2927 6 view .LVU500 +2927:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1641 .loc 1 2927 12 is_stmt 0 view .LVU501 + 1642 0036 0132 adds r2, r2, #1 + 1643 .LVL175: +2927:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1644 .loc 1 2927 12 view .LVU502 + 1645 0038 0A60 str r2, [r1] + 1646 003a 7047 bx lr + 1647 .LVL176: + 1648 .L140: +2910:Middlewares/Third_Party/FatFs/src/ff.c **** #if _STR_VOLUME_ID /* Find string drive id */ + 1649 .loc 1 2910 6 view .LVU503 + 1650 003c 4FF0FF30 mov r0, #-1 + 1651 .LVL177: + ARM GAS /tmp/cc5lWXRL.s page 84 + + +2910:Middlewares/Third_Party/FatFs/src/ff.c **** #if _STR_VOLUME_ID /* Find string drive id */ + 1652 .loc 1 2910 6 view .LVU504 + 1653 0040 7047 bx lr + 1654 .LVL178: + 1655 .L141: +2910:Middlewares/Third_Party/FatFs/src/ff.c **** #if _STR_VOLUME_ID /* Find string drive id */ + 1656 .loc 1 2910 6 view .LVU505 + 1657 0042 4FF0FF30 mov r0, #-1 + 1658 .LVL179: +2946:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1659 .loc 1 2946 4 is_stmt 1 view .LVU506 +2946:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1660 .loc 1 2946 11 is_stmt 0 view .LVU507 + 1661 0046 7047 bx lr + 1662 .cfi_endproc + 1663 .LFE1217: + 1665 .section .text.putc_init,"ax",%progbits + 1666 .align 1 + 1667 .syntax unified + 1668 .thumb + 1669 .thumb_func + 1670 .fpu fpv5-d16 + 1672 putc_init: + 1673 .LVL180: + 1674 .LFB1241: +2956:Middlewares/Third_Party/FatFs/src/ff.c **** +2957:Middlewares/Third_Party/FatFs/src/ff.c **** +2958:Middlewares/Third_Party/FatFs/src/ff.c **** +2959:Middlewares/Third_Party/FatFs/src/ff.c **** +2960:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2961:Middlewares/Third_Party/FatFs/src/ff.c **** /* Load a sector and check if it is an FAT boot sector */ +2962:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2963:Middlewares/Third_Party/FatFs/src/ff.c **** +2964:Middlewares/Third_Party/FatFs/src/ff.c **** static +2965:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE check_fs ( /* 0:FAT, 1:exFAT, 2:Valid BS but not FAT, 3:Not a BS, 4:Disk error */ +2966:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs, /* File system object */ +2967:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD sect /* Sector# (lba) to load and check if it is an FAT-VBR or not */ +2968:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2969:Middlewares/Third_Party/FatFs/src/ff.c **** { +2970:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 0; fs->winsect = 0xFFFFFFFF; /* Invaidate window */ +2971:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, sect) != FR_OK) return 4; /* Load boot record */ +2972:Middlewares/Third_Party/FatFs/src/ff.c **** +2973:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(fs->win + BS_55AA) != 0xAA55) return 3; /* Check boot record signature (always placed +2974:Middlewares/Third_Party/FatFs/src/ff.c **** +2975:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->win[BS_JmpBoot] == 0xE9 || (fs->win[BS_JmpBoot] == 0xEB && fs->win[BS_JmpBoot + 2] == 0x90 +2976:Middlewares/Third_Party/FatFs/src/ff.c **** if ((ld_dword(fs->win + BS_FilSysType) & 0xFFFFFF) == 0x544146) return 0; /* Check "FAT" string * +2977:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_dword(fs->win + BS_FilSysType32) == 0x33544146) return 0; /* Check "FAT3" string */ +2978:Middlewares/Third_Party/FatFs/src/ff.c **** } +2979:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +2980:Middlewares/Third_Party/FatFs/src/ff.c **** if (!mem_cmp(fs->win + BS_JmpBoot, "\xEB\x76\x90" "EXFAT ", 11)) return 1; +2981:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +2982:Middlewares/Third_Party/FatFs/src/ff.c **** return 2; +2983:Middlewares/Third_Party/FatFs/src/ff.c **** } +2984:Middlewares/Third_Party/FatFs/src/ff.c **** +2985:Middlewares/Third_Party/FatFs/src/ff.c **** +2986:Middlewares/Third_Party/FatFs/src/ff.c **** +2987:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 85 + + +2988:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2989:Middlewares/Third_Party/FatFs/src/ff.c **** /* Find logical drive and check if the volume is mounted */ +2990:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +2991:Middlewares/Third_Party/FatFs/src/ff.c **** +2992:Middlewares/Third_Party/FatFs/src/ff.c **** static +2993:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT find_volume ( /* FR_OK(0): successful, !=0: any error occurred */ +2994:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR** path, /* Pointer to pointer to the path name (drive number) */ +2995:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS** rfs, /* Pointer to pointer to the found file system object */ +2996:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE mode /* !=0: Check write protection for write access */ +2997:Middlewares/Third_Party/FatFs/src/ff.c **** ) +2998:Middlewares/Third_Party/FatFs/src/ff.c **** { +2999:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE fmt, *pt; +3000:Middlewares/Third_Party/FatFs/src/ff.c **** int vol; +3001:Middlewares/Third_Party/FatFs/src/ff.c **** DSTATUS stat; +3002:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD bsect, fasize, tsect, sysect, nclst, szbfat, br[4]; +3003:Middlewares/Third_Party/FatFs/src/ff.c **** WORD nrsv; +3004:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +3005:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; +3006:Middlewares/Third_Party/FatFs/src/ff.c **** +3007:Middlewares/Third_Party/FatFs/src/ff.c **** +3008:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive number */ +3009:Middlewares/Third_Party/FatFs/src/ff.c **** *rfs = 0; +3010:Middlewares/Third_Party/FatFs/src/ff.c **** vol = get_ldnumber(path); +3011:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; +3012:Middlewares/Third_Party/FatFs/src/ff.c **** +3013:Middlewares/Third_Party/FatFs/src/ff.c **** /* Check if the file system object is valid or not */ +3014:Middlewares/Third_Party/FatFs/src/ff.c **** fs = FatFs[vol]; /* Get pointer to the file system object */ +3015:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fs) return FR_NOT_ENABLED; /* Is the file system object available? */ +3016:Middlewares/Third_Party/FatFs/src/ff.c **** +3017:Middlewares/Third_Party/FatFs/src/ff.c **** ENTER_FF(fs); /* Lock the volume */ +3018:Middlewares/Third_Party/FatFs/src/ff.c **** *rfs = fs; /* Return pointer to the file system object */ +3019:Middlewares/Third_Party/FatFs/src/ff.c **** +3020:Middlewares/Third_Party/FatFs/src/ff.c **** mode &= (BYTE)~FA_READ; /* Desired access mode, write access or not */ +3021:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type) { /* If the volume has been mounted */ +3022:Middlewares/Third_Party/FatFs/src/ff.c **** stat = disk_status(fs->drv); +3023:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized */ +3024:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_READONLY && mode && (stat & STA_PROTECT)) { /* Check write protection if needed */ +3025:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_WRITE_PROTECTED; +3026:Middlewares/Third_Party/FatFs/src/ff.c **** } +3027:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; /* The file system object is valid */ +3028:Middlewares/Third_Party/FatFs/src/ff.c **** } +3029:Middlewares/Third_Party/FatFs/src/ff.c **** } +3030:Middlewares/Third_Party/FatFs/src/ff.c **** +3031:Middlewares/Third_Party/FatFs/src/ff.c **** /* The file system object is not valid. */ +3032:Middlewares/Third_Party/FatFs/src/ff.c **** /* Following code attempts to mount the volume. (analyze BPB and initialize the fs object) */ +3033:Middlewares/Third_Party/FatFs/src/ff.c **** +3034:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fs_type = 0; /* Clear the file system object */ +3035:Middlewares/Third_Party/FatFs/src/ff.c **** fs->drv = LD2PD(vol); /* Bind the logical drive and a physical drive */ +3036:Middlewares/Third_Party/FatFs/src/ff.c **** stat = disk_initialize(fs->drv); /* Initialize the physical drive */ +3037:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_NOINIT) { /* Check if the initialization succeeded */ +3038:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_NOT_READY; /* Failed to initialize due to no medium or hard error */ +3039:Middlewares/Third_Party/FatFs/src/ff.c **** } +3040:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_READONLY && mode && (stat & STA_PROTECT)) { /* Check disk write protection if needed */ +3041:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_WRITE_PROTECTED; +3042:Middlewares/Third_Party/FatFs/src/ff.c **** } +3043:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size (multiple sector size cfg only) */ +3044:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_ioctl(fs->drv, GET_SECTOR_SIZE, &SS(fs)) != RES_OK) return FR_DISK_ERR; + ARM GAS /tmp/cc5lWXRL.s page 86 + + +3045:Middlewares/Third_Party/FatFs/src/ff.c **** if (SS(fs) > _MAX_SS || SS(fs) < _MIN_SS || (SS(fs) & (SS(fs) - 1))) return FR_DISK_ERR; +3046:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3047:Middlewares/Third_Party/FatFs/src/ff.c **** +3048:Middlewares/Third_Party/FatFs/src/ff.c **** /* Find an FAT partition on the drive. Supports only generic partitioning rules, FDISK and SFD. */ +3049:Middlewares/Third_Party/FatFs/src/ff.c **** bsect = 0; +3050:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = check_fs(fs, bsect); /* Load sector 0 and check if it is an FAT-VBR as SFD */ +3051:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == 2 || (fmt < 2 && LD2PT(vol) != 0)) { /* Not an FAT-VBR or forced partition number */ +3052:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < 4; i++) { /* Get partition offset */ +3053:Middlewares/Third_Party/FatFs/src/ff.c **** pt = fs->win + (MBR_Table + i * SZ_PTE); +3054:Middlewares/Third_Party/FatFs/src/ff.c **** br[i] = pt[PTE_System] ? ld_dword(pt + PTE_StLba) : 0; +3055:Middlewares/Third_Party/FatFs/src/ff.c **** } +3056:Middlewares/Third_Party/FatFs/src/ff.c **** i = LD2PT(vol); /* Partition number: 0:auto, 1-4:forced */ +3057:Middlewares/Third_Party/FatFs/src/ff.c **** if (i) i--; +3058:Middlewares/Third_Party/FatFs/src/ff.c **** do { /* Find an FAT volume */ +3059:Middlewares/Third_Party/FatFs/src/ff.c **** bsect = br[i]; +3060:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = bsect ? check_fs(fs, bsect) : 3; /* Check the partition */ +3061:Middlewares/Third_Party/FatFs/src/ff.c **** } while (LD2PT(vol) == 0 && fmt >= 2 && ++i < 4); +3062:Middlewares/Third_Party/FatFs/src/ff.c **** } +3063:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == 4) return FR_DISK_ERR; /* An error occured in the disk I/O layer */ +3064:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt >= 2) return FR_NO_FILESYSTEM; /* No FAT volume is found */ +3065:Middlewares/Third_Party/FatFs/src/ff.c **** +3066:Middlewares/Third_Party/FatFs/src/ff.c **** /* An FAT volume is found (bsect). Following code initializes the file system object */ +3067:Middlewares/Third_Party/FatFs/src/ff.c **** +3068:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +3069:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == 1) { +3070:Middlewares/Third_Party/FatFs/src/ff.c **** QWORD maxlba; +3071:Middlewares/Third_Party/FatFs/src/ff.c **** +3072:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = BPB_ZeroedEx; i < BPB_ZeroedEx + 53 && fs->win[i] == 0; i++) ; /* Check zero filler */ +3073:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < BPB_ZeroedEx + 53) return FR_NO_FILESYSTEM; +3074:Middlewares/Third_Party/FatFs/src/ff.c **** +3075:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(fs->win + BPB_FSVerEx) != 0x100) return FR_NO_FILESYSTEM; /* Check exFAT revision (Mu +3076:Middlewares/Third_Party/FatFs/src/ff.c **** +3077:Middlewares/Third_Party/FatFs/src/ff.c **** if (1 << fs->win[BPB_BytsPerSecEx] != SS(fs)) { /* (BPB_BytsPerSecEx must be equal to the physica +3078:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_NO_FILESYSTEM; +3079:Middlewares/Third_Party/FatFs/src/ff.c **** } +3080:Middlewares/Third_Party/FatFs/src/ff.c **** +3081:Middlewares/Third_Party/FatFs/src/ff.c **** maxlba = ld_qword(fs->win + BPB_TotSecEx) + bsect; /* Last LBA + 1 of the volume */ +3082:Middlewares/Third_Party/FatFs/src/ff.c **** if (maxlba >= 0x100000000) return FR_NO_FILESYSTEM; /* (It cannot be handled in 32-bit LBA) */ +3083:Middlewares/Third_Party/FatFs/src/ff.c **** +3084:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsize = ld_dword(fs->win + BPB_FatSzEx); /* Number of sectors per FAT */ +3085:Middlewares/Third_Party/FatFs/src/ff.c **** +3086:Middlewares/Third_Party/FatFs/src/ff.c **** fs->n_fats = fs->win[BPB_NumFATsEx]; /* Number of FATs */ +3087:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_fats != 1) return FR_NO_FILESYSTEM; /* (Supports only 1 FAT) */ +3088:Middlewares/Third_Party/FatFs/src/ff.c **** +3089:Middlewares/Third_Party/FatFs/src/ff.c **** fs->csize = 1 << fs->win[BPB_SecPerClusEx]; /* Cluster size */ +3090:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->csize == 0) return FR_NO_FILESYSTEM; /* (Must be 1..32768) */ +3091:Middlewares/Third_Party/FatFs/src/ff.c **** +3092:Middlewares/Third_Party/FatFs/src/ff.c **** nclst = ld_dword(fs->win + BPB_NumClusEx); /* Number of clusters */ +3093:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst > MAX_EXFAT) return FR_NO_FILESYSTEM; /* (Too many clusters) */ +3094:Middlewares/Third_Party/FatFs/src/ff.c **** fs->n_fatent = nclst + 2; +3095:Middlewares/Third_Party/FatFs/src/ff.c **** +3096:Middlewares/Third_Party/FatFs/src/ff.c **** /* Boundaries and Limits */ +3097:Middlewares/Third_Party/FatFs/src/ff.c **** fs->volbase = bsect; +3098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->database = bsect + ld_dword(fs->win + BPB_DataOfsEx); +3099:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fatbase = bsect + ld_dword(fs->win + BPB_FatOfsEx); +3100:Middlewares/Third_Party/FatFs/src/ff.c **** if (maxlba < (QWORD)fs->database + nclst * fs->csize) return FR_NO_FILESYSTEM; /* (Volume size mu +3101:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbase = ld_dword(fs->win + BPB_RootClusEx); + ARM GAS /tmp/cc5lWXRL.s page 87 + + +3102:Middlewares/Third_Party/FatFs/src/ff.c **** +3103:Middlewares/Third_Party/FatFs/src/ff.c **** /* Check if bitmap location is in assumption (at the first cluster) */ +3104:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, clust2sect(fs, fs->dirbase)) != FR_OK) return FR_DISK_ERR; +3105:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < SS(fs); i += SZDIRE) { +3106:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->win[i] == 0x81 && ld_dword(fs->win + i + 20) == 2) break; /* 81 entry with cluster #2? * +3107:Middlewares/Third_Party/FatFs/src/ff.c **** } +3108:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == SS(fs)) return FR_NO_FILESYSTEM; +3109:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +3110:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = fs->free_clst = 0xFFFFFFFF; /* Initialize cluster allocation information */ +3111:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3112:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_EXFAT; /* FAT sub-type */ +3113:Middlewares/Third_Party/FatFs/src/ff.c **** } else +3114:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_EXFAT */ +3115:Middlewares/Third_Party/FatFs/src/ff.c **** { +3116:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(fs->win + BPB_BytsPerSec) != SS(fs)) return FR_NO_FILESYSTEM; /* (BPB_BytsPerSec must +3117:Middlewares/Third_Party/FatFs/src/ff.c **** +3118:Middlewares/Third_Party/FatFs/src/ff.c **** fasize = ld_word(fs->win + BPB_FATSz16); /* Number of sectors per FAT */ +3119:Middlewares/Third_Party/FatFs/src/ff.c **** if (fasize == 0) fasize = ld_dword(fs->win + BPB_FATSz32); +3120:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsize = fasize; +3121:Middlewares/Third_Party/FatFs/src/ff.c **** +3122:Middlewares/Third_Party/FatFs/src/ff.c **** fs->n_fats = fs->win[BPB_NumFATs]; /* Number of FATs */ +3123:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_fats != 1 && fs->n_fats != 2) return FR_NO_FILESYSTEM; /* (Must be 1 or 2) */ +3124:Middlewares/Third_Party/FatFs/src/ff.c **** fasize *= fs->n_fats; /* Number of sectors for FAT area */ +3125:Middlewares/Third_Party/FatFs/src/ff.c **** +3126:Middlewares/Third_Party/FatFs/src/ff.c **** fs->csize = fs->win[BPB_SecPerClus]; /* Cluster size */ +3127:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->csize == 0 || (fs->csize & (fs->csize - 1))) return FR_NO_FILESYSTEM; /* (Must be power o +3128:Middlewares/Third_Party/FatFs/src/ff.c **** +3129:Middlewares/Third_Party/FatFs/src/ff.c **** fs->n_rootdir = ld_word(fs->win + BPB_RootEntCnt); /* Number of root directory entries */ +3130:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir % (SS(fs) / SZDIRE)) return FR_NO_FILESYSTEM; /* (Must be sector aligned) */ +3131:Middlewares/Third_Party/FatFs/src/ff.c **** +3132:Middlewares/Third_Party/FatFs/src/ff.c **** tsect = ld_word(fs->win + BPB_TotSec16); /* Number of sectors on the volume */ +3133:Middlewares/Third_Party/FatFs/src/ff.c **** if (tsect == 0) tsect = ld_dword(fs->win + BPB_TotSec32); +3134:Middlewares/Third_Party/FatFs/src/ff.c **** +3135:Middlewares/Third_Party/FatFs/src/ff.c **** nrsv = ld_word(fs->win + BPB_RsvdSecCnt); /* Number of reserved sectors */ +3136:Middlewares/Third_Party/FatFs/src/ff.c **** if (nrsv == 0) return FR_NO_FILESYSTEM; /* (Must not be 0) */ +3137:Middlewares/Third_Party/FatFs/src/ff.c **** +3138:Middlewares/Third_Party/FatFs/src/ff.c **** /* Determine the FAT sub type */ +3139:Middlewares/Third_Party/FatFs/src/ff.c **** sysect = nrsv + fasize + fs->n_rootdir / (SS(fs) / SZDIRE); /* RSV + FAT + DIR */ +3140:Middlewares/Third_Party/FatFs/src/ff.c **** if (tsect < sysect) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ +3141:Middlewares/Third_Party/FatFs/src/ff.c **** nclst = (tsect - sysect) / fs->csize; /* Number of clusters */ +3142:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst == 0) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ +3143:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; +3144:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst <= MAX_FAT16) fmt = FS_FAT16; +3145:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst <= MAX_FAT12) fmt = FS_FAT12; +3146:Middlewares/Third_Party/FatFs/src/ff.c **** +3147:Middlewares/Third_Party/FatFs/src/ff.c **** /* Boundaries and Limits */ +3148:Middlewares/Third_Party/FatFs/src/ff.c **** fs->n_fatent = nclst + 2; /* Number of FAT entries */ +3149:Middlewares/Third_Party/FatFs/src/ff.c **** fs->volbase = bsect; /* Volume start sector */ +3150:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fatbase = bsect + nrsv; /* FAT start sector */ +3151:Middlewares/Third_Party/FatFs/src/ff.c **** fs->database = bsect + sysect; /* Data start sector */ +3152:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { +3153:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(fs->win + BPB_FSVer32) != 0) return FR_NO_FILESYSTEM; /* (Must be FAT32 revision 0.0 +3154:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */ +3155:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbase = ld_dword(fs->win + BPB_RootClus32); /* Root directory start cluster */ +3156:Middlewares/Third_Party/FatFs/src/ff.c **** szbfat = fs->n_fatent * 4; /* (Needed FAT size) */ +3157:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +3158:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir == 0) return FR_NO_FILESYSTEM;/* (BPB_RootEntCnt must not be 0) */ + ARM GAS /tmp/cc5lWXRL.s page 88 + + +3159:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbase = fs->fatbase + fasize; /* Root directory start sector */ +3160:Middlewares/Third_Party/FatFs/src/ff.c **** szbfat = (fmt == FS_FAT16) ? /* (Needed FAT size) */ +3161:Middlewares/Third_Party/FatFs/src/ff.c **** fs->n_fatent * 2 : fs->n_fatent * 3 / 2 + (fs->n_fatent & 1); +3162:Middlewares/Third_Party/FatFs/src/ff.c **** } +3163:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fsize < (szbfat + (SS(fs) - 1)) / SS(fs)) return FR_NO_FILESYSTEM; /* (BPB_FATSz must not +3164:Middlewares/Third_Party/FatFs/src/ff.c **** +3165:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +3166:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get FSINFO if available */ +3167:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = fs->free_clst = 0xFFFFFFFF; /* Initialize cluster allocation information */ +3168:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag = 0x80; +3169:Middlewares/Third_Party/FatFs/src/ff.c **** #if (_FS_NOFSINFO & 3) != 3 +3170:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32 /* Enable FSINFO only if FAT32 and BPB_FSInfo32 == 1 */ +3171:Middlewares/Third_Party/FatFs/src/ff.c **** && ld_word(fs->win + BPB_FSInfo32) == 1 +3172:Middlewares/Third_Party/FatFs/src/ff.c **** && move_window(fs, bsect + 1) == FR_OK) +3173:Middlewares/Third_Party/FatFs/src/ff.c **** { +3174:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag = 0; +3175:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(fs->win + BS_55AA) == 0xAA55 /* Load FSINFO data if available */ +3176:Middlewares/Third_Party/FatFs/src/ff.c **** && ld_dword(fs->win + FSI_LeadSig) == 0x41615252 +3177:Middlewares/Third_Party/FatFs/src/ff.c **** && ld_dword(fs->win + FSI_StrucSig) == 0x61417272) +3178:Middlewares/Third_Party/FatFs/src/ff.c **** { +3179:Middlewares/Third_Party/FatFs/src/ff.c **** #if (_FS_NOFSINFO & 1) == 0 +3180:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst = ld_dword(fs->win + FSI_Free_Count); +3181:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3182:Middlewares/Third_Party/FatFs/src/ff.c **** #if (_FS_NOFSINFO & 2) == 0 +3183:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = ld_dword(fs->win + FSI_Nxt_Free); +3184:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3185:Middlewares/Third_Party/FatFs/src/ff.c **** } +3186:Middlewares/Third_Party/FatFs/src/ff.c **** } +3187:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* (_FS_NOFSINFO & 3) != 3 */ +3188:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ +3189:Middlewares/Third_Party/FatFs/src/ff.c **** } +3190:Middlewares/Third_Party/FatFs/src/ff.c **** +3191:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fs_type = fmt; /* FAT sub-type */ +3192:Middlewares/Third_Party/FatFs/src/ff.c **** fs->id = ++Fsid; /* File system mount ID */ +3193:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN == 1 +3194:Middlewares/Third_Party/FatFs/src/ff.c **** fs->lfnbuf = LfnBuf; /* Static LFN working buffer */ +3195:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +3196:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf = DirBuf; /* Static directory block scratchpad buuffer */ +3197:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3198:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3199:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH != 0 +3200:Middlewares/Third_Party/FatFs/src/ff.c **** fs->cdir = 0; /* Initialize current directory */ +3201:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3202:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 /* Clear file lock semaphores */ +3203:Middlewares/Third_Party/FatFs/src/ff.c **** clear_lock(fs); +3204:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3205:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +3206:Middlewares/Third_Party/FatFs/src/ff.c **** } +3207:Middlewares/Third_Party/FatFs/src/ff.c **** +3208:Middlewares/Third_Party/FatFs/src/ff.c **** +3209:Middlewares/Third_Party/FatFs/src/ff.c **** +3210:Middlewares/Third_Party/FatFs/src/ff.c **** +3211:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3212:Middlewares/Third_Party/FatFs/src/ff.c **** /* Check if the file/directory object is valid or not */ +3213:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3214:Middlewares/Third_Party/FatFs/src/ff.c **** +3215:Middlewares/Third_Party/FatFs/src/ff.c **** static + ARM GAS /tmp/cc5lWXRL.s page 89 + + +3216:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT validate ( /* Returns FR_OK or FR_INVALID_OBJECT */ +3217:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID* obj, /* Pointer to the _OBJ, the 1st member in the FIL/DIR object, to check validity */ +3218:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS** fs /* Pointer to pointer to the owner file system object to return */ +3219:Middlewares/Third_Party/FatFs/src/ff.c **** ) +3220:Middlewares/Third_Party/FatFs/src/ff.c **** { +3221:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_INVALID_OBJECT; +3222:Middlewares/Third_Party/FatFs/src/ff.c **** +3223:Middlewares/Third_Party/FatFs/src/ff.c **** +3224:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj && obj->fs && obj->fs->fs_type && obj->id == obj->fs->id) { /* Test if the object is valid +3225:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT +3226:Middlewares/Third_Party/FatFs/src/ff.c **** if (lock_fs(obj->fs)) { /* Obtain the filesystem object */ +3227:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(disk_status(obj->fs->drv) & STA_NOINIT)) { /* Test if the phsical drive is kept initialize +3228:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; +3229:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +3230:Middlewares/Third_Party/FatFs/src/ff.c **** unlock_fs(obj->fs, FR_OK); +3231:Middlewares/Third_Party/FatFs/src/ff.c **** } +3232:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +3233:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_TIMEOUT; +3234:Middlewares/Third_Party/FatFs/src/ff.c **** } +3235:Middlewares/Third_Party/FatFs/src/ff.c **** #else +3236:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(disk_status(obj->fs->drv) & STA_NOINIT)) { /* Test if the phsical drive is kept initialized +3237:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; +3238:Middlewares/Third_Party/FatFs/src/ff.c **** } +3239:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3240:Middlewares/Third_Party/FatFs/src/ff.c **** } +3241:Middlewares/Third_Party/FatFs/src/ff.c **** *fs = (res == FR_OK) ? obj->fs : 0; /* Corresponding filesystem object */ +3242:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +3243:Middlewares/Third_Party/FatFs/src/ff.c **** } +3244:Middlewares/Third_Party/FatFs/src/ff.c **** +3245:Middlewares/Third_Party/FatFs/src/ff.c **** +3246:Middlewares/Third_Party/FatFs/src/ff.c **** +3247:Middlewares/Third_Party/FatFs/src/ff.c **** +3248:Middlewares/Third_Party/FatFs/src/ff.c **** /*--------------------------------------------------------------------------- +3249:Middlewares/Third_Party/FatFs/src/ff.c **** +3250:Middlewares/Third_Party/FatFs/src/ff.c **** Public Functions (FatFs API) +3251:Middlewares/Third_Party/FatFs/src/ff.c **** +3252:Middlewares/Third_Party/FatFs/src/ff.c **** ----------------------------------------------------------------------------*/ +3253:Middlewares/Third_Party/FatFs/src/ff.c **** +3254:Middlewares/Third_Party/FatFs/src/ff.c **** +3255:Middlewares/Third_Party/FatFs/src/ff.c **** +3256:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3257:Middlewares/Third_Party/FatFs/src/ff.c **** /* Mount/Unmount a Logical Drive */ +3258:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3259:Middlewares/Third_Party/FatFs/src/ff.c **** +3260:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_mount ( +3261:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS* fs, /* Pointer to the file system object (NULL:unmount)*/ +3262:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path, /* Logical drive number to be mounted/unmounted */ +3263:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE opt /* Mode option 0:Do not mount (delayed mount), 1:Mount immediately */ +3264:Middlewares/Third_Party/FatFs/src/ff.c **** ) +3265:Middlewares/Third_Party/FatFs/src/ff.c **** { +3266:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *cfs; +3267:Middlewares/Third_Party/FatFs/src/ff.c **** int vol; +3268:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +3269:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR *rp = path; +3270:Middlewares/Third_Party/FatFs/src/ff.c **** +3271:Middlewares/Third_Party/FatFs/src/ff.c **** +3272:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive number */ + ARM GAS /tmp/cc5lWXRL.s page 90 + + +3273:Middlewares/Third_Party/FatFs/src/ff.c **** vol = get_ldnumber(&rp); +3274:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; +3275:Middlewares/Third_Party/FatFs/src/ff.c **** cfs = FatFs[vol]; /* Pointer to fs object */ +3276:Middlewares/Third_Party/FatFs/src/ff.c **** +3277:Middlewares/Third_Party/FatFs/src/ff.c **** if (cfs) { +3278:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 +3279:Middlewares/Third_Party/FatFs/src/ff.c **** clear_lock(cfs); +3280:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3281:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT /* Discard sync object of the current volume */ +3282:Middlewares/Third_Party/FatFs/src/ff.c **** if (!ff_del_syncobj(cfs->sobj)) return FR_INT_ERR; +3283:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3284:Middlewares/Third_Party/FatFs/src/ff.c **** cfs->fs_type = 0; /* Clear old fs object */ +3285:Middlewares/Third_Party/FatFs/src/ff.c **** } +3286:Middlewares/Third_Party/FatFs/src/ff.c **** +3287:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs) { +3288:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fs_type = 0; /* Clear new fs object */ +3289:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT /* Create sync object for the new volume */ +3290:Middlewares/Third_Party/FatFs/src/ff.c **** if (!ff_cre_syncobj((BYTE)vol, &fs->sobj)) return FR_INT_ERR; +3291:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3292:Middlewares/Third_Party/FatFs/src/ff.c **** } +3293:Middlewares/Third_Party/FatFs/src/ff.c **** FatFs[vol] = fs; /* Register new fs object */ +3294:Middlewares/Third_Party/FatFs/src/ff.c **** +3295:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fs || opt != 1) return FR_OK; /* Do not mount now, it will be mounted later */ +3296:Middlewares/Third_Party/FatFs/src/ff.c **** +3297:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, 0); /* Force mounted the volume */ +3298:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +3299:Middlewares/Third_Party/FatFs/src/ff.c **** } +3300:Middlewares/Third_Party/FatFs/src/ff.c **** +3301:Middlewares/Third_Party/FatFs/src/ff.c **** +3302:Middlewares/Third_Party/FatFs/src/ff.c **** +3303:Middlewares/Third_Party/FatFs/src/ff.c **** +3304:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3305:Middlewares/Third_Party/FatFs/src/ff.c **** /* Open or Create a File */ +3306:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3307:Middlewares/Third_Party/FatFs/src/ff.c **** +3308:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_open ( +3309:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp, /* Pointer to the blank file object */ +3310:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path, /* Pointer to the file name */ +3311:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE mode /* Access mode and file open mode flags */ +3312:Middlewares/Third_Party/FatFs/src/ff.c **** ) +3313:Middlewares/Third_Party/FatFs/src/ff.c **** { +3314:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +3315:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +3316:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +3317:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +3318:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD dw, cl, bcs, clst, sc; +3319:Middlewares/Third_Party/FatFs/src/ff.c **** FSIZE_t ofs; +3320:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3321:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +3322:Middlewares/Third_Party/FatFs/src/ff.c **** +3323:Middlewares/Third_Party/FatFs/src/ff.c **** +3324:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fp) return FR_INVALID_OBJECT; +3325:Middlewares/Third_Party/FatFs/src/ff.c **** +3326:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive */ +3327:Middlewares/Third_Party/FatFs/src/ff.c **** mode &= _FS_READONLY ? FA_READ : FA_READ | FA_WRITE | FA_CREATE_ALWAYS | FA_CREATE_NEW | FA_OPEN_A +3328:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, mode); +3329:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + ARM GAS /tmp/cc5lWXRL.s page 91 + + +3330:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; +3331:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +3332:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */ +3333:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY /* R/W configuration */ +3334:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3335:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { /* Origin directory itself? */ +3336:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; +3337:Middlewares/Third_Party/FatFs/src/ff.c **** } +3338:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 +3339:Middlewares/Third_Party/FatFs/src/ff.c **** else { +3340:Middlewares/Third_Party/FatFs/src/ff.c **** res = chk_lock(&dj, (mode & ~FA_READ) ? 1 : 0); +3341:Middlewares/Third_Party/FatFs/src/ff.c **** } +3342:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3343:Middlewares/Third_Party/FatFs/src/ff.c **** } +3344:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create or Open a file */ +3345:Middlewares/Third_Party/FatFs/src/ff.c **** if (mode & (FA_CREATE_ALWAYS | FA_OPEN_ALWAYS | FA_CREATE_NEW)) { +3346:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) { /* No file, create new */ +3347:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { /* There is no file to open, create a new entry */ +3348:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 +3349:Middlewares/Third_Party/FatFs/src/ff.c **** res = enq_lock() ? dir_register(&dj) : FR_TOO_MANY_OPEN_FILES; +3350:Middlewares/Third_Party/FatFs/src/ff.c **** #else +3351:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_register(&dj); +3352:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3353:Middlewares/Third_Party/FatFs/src/ff.c **** } +3354:Middlewares/Third_Party/FatFs/src/ff.c **** mode |= FA_CREATE_ALWAYS; /* File is created */ +3355:Middlewares/Third_Party/FatFs/src/ff.c **** } +3356:Middlewares/Third_Party/FatFs/src/ff.c **** else { /* Any object is already existing */ +3357:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.obj.attr & (AM_RDO | AM_DIR)) { /* Cannot overwrite it (R/O or DIR) */ +3358:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; +3359:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +3360:Middlewares/Third_Party/FatFs/src/ff.c **** if (mode & FA_CREATE_NEW) res = FR_EXIST; /* Cannot create as new file */ +3361:Middlewares/Third_Party/FatFs/src/ff.c **** } +3362:Middlewares/Third_Party/FatFs/src/ff.c **** } +3363:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && (mode & FA_CREATE_ALWAYS)) { /* Truncate it if overwrite mode */ +3364:Middlewares/Third_Party/FatFs/src/ff.c **** dw = GET_FATTIME(); +3365:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +3366:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +3367:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get current allocation info */ +3368:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.fs = fs; +3369:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = ld_dword(fs->dirbuf + XDIR_FstClus); +3370:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = ld_qword(fs->dirbuf + XDIR_FileSize); +3371:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.stat = fs->dirbuf[XDIR_GenFlags] & 2; +3372:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.n_frag = 0; +3373:Middlewares/Third_Party/FatFs/src/ff.c **** /* Initialize directory entry block */ +3374:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_CrtTime, dw); /* Set created time */ +3375:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_CrtTime10] = 0; +3376:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_ModTime, dw); /* Set modified time */ +3377:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_ModTime10] = 0; +3378:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_Attr] = AM_ARC; /* Reset attribute */ +3379:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_FstClus, 0); /* Reset file allocation info */ +3380:Middlewares/Third_Party/FatFs/src/ff.c **** st_qword(fs->dirbuf + XDIR_FileSize, 0); +3381:Middlewares/Third_Party/FatFs/src/ff.c **** st_qword(fs->dirbuf + XDIR_ValidFileSize, 0); +3382:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_GenFlags] = 1; +3383:Middlewares/Third_Party/FatFs/src/ff.c **** res = store_xdir(&dj); +3384:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && fp->obj.sclust) { /* Remove the cluster chain if exist */ +3385:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&fp->obj, fp->obj.sclust, 0); +3386:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = fp->obj.sclust - 1; /* Reuse the cluster hole */ + ARM GAS /tmp/cc5lWXRL.s page 92 + + +3387:Middlewares/Third_Party/FatFs/src/ff.c **** } +3388:Middlewares/Third_Party/FatFs/src/ff.c **** } else +3389:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3390:Middlewares/Third_Party/FatFs/src/ff.c **** { +3391:Middlewares/Third_Party/FatFs/src/ff.c **** /* Clean directory info */ +3392:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dj.dir + DIR_CrtTime, dw); /* Set created time */ +3393:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dj.dir + DIR_ModTime, dw); /* Set modified time */ +3394:Middlewares/Third_Party/FatFs/src/ff.c **** dj.dir[DIR_Attr] = AM_ARC; /* Reset attribute */ +3395:Middlewares/Third_Party/FatFs/src/ff.c **** cl = ld_clust(fs, dj.dir); /* Get cluster chain */ +3396:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dj.dir, 0); /* Reset file allocation info */ +3397:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dj.dir + DIR_FileSize, 0); +3398:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +3399:Middlewares/Third_Party/FatFs/src/ff.c **** +3400:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl) { /* Remove the cluster chain if exist */ +3401:Middlewares/Third_Party/FatFs/src/ff.c **** dw = fs->winsect; +3402:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&dj.obj, cl, 0); +3403:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3404:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dw); +3405:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = cl - 1; /* Reuse the cluster hole */ +3406:Middlewares/Third_Party/FatFs/src/ff.c **** } +3407:Middlewares/Third_Party/FatFs/src/ff.c **** } +3408:Middlewares/Third_Party/FatFs/src/ff.c **** } +3409:Middlewares/Third_Party/FatFs/src/ff.c **** } +3410:Middlewares/Third_Party/FatFs/src/ff.c **** } +3411:Middlewares/Third_Party/FatFs/src/ff.c **** else { /* Open an existing file */ +3412:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Following succeeded */ +3413:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.obj.attr & AM_DIR) { /* It is a directory */ +3414:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_FILE; +3415:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +3416:Middlewares/Third_Party/FatFs/src/ff.c **** if ((mode & FA_WRITE) && (dj.obj.attr & AM_RDO)) { /* R/O violation */ +3417:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; +3418:Middlewares/Third_Party/FatFs/src/ff.c **** } +3419:Middlewares/Third_Party/FatFs/src/ff.c **** } +3420:Middlewares/Third_Party/FatFs/src/ff.c **** } +3421:Middlewares/Third_Party/FatFs/src/ff.c **** } +3422:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3423:Middlewares/Third_Party/FatFs/src/ff.c **** if (mode & FA_CREATE_ALWAYS) /* Set file change flag if created or overwritten */ +3424:Middlewares/Third_Party/FatFs/src/ff.c **** mode |= FA_MODIFIED; +3425:Middlewares/Third_Party/FatFs/src/ff.c **** fp->dir_sect = fs->winsect; /* Pointer to the directory entry */ +3426:Middlewares/Third_Party/FatFs/src/ff.c **** fp->dir_ptr = dj.dir; +3427:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 +3428:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.lockid = inc_lock(&dj, (mode & ~FA_READ) ? 1 : 0); +3429:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fp->obj.lockid) res = FR_INT_ERR; +3430:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3431:Middlewares/Third_Party/FatFs/src/ff.c **** } +3432:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* R/O configuration */ +3433:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3434:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { /* Origin directory itself? */ +3435:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; +3436:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +3437:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.obj.attr & AM_DIR) { /* It is a directory */ +3438:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_FILE; +3439:Middlewares/Third_Party/FatFs/src/ff.c **** } +3440:Middlewares/Third_Party/FatFs/src/ff.c **** } +3441:Middlewares/Third_Party/FatFs/src/ff.c **** } +3442:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3443:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 93 + + +3444:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3445:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +3446:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +3447:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.c_scl = dj.obj.sclust; /* Get containing directory info */ +3448:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.c_size = ((DWORD)dj.obj.objsize & 0xFFFFFF00) | dj.obj.stat; +3449:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.c_ofs = dj.blk_ofs; +3450:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = ld_dword(fs->dirbuf + XDIR_FstClus); /* Get object allocation info */ +3451:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = ld_qword(fs->dirbuf + XDIR_FileSize); +3452:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.stat = fs->dirbuf[XDIR_GenFlags] & 2; +3453:Middlewares/Third_Party/FatFs/src/ff.c **** } else +3454:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3455:Middlewares/Third_Party/FatFs/src/ff.c **** { +3456:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = ld_clust(fs, dj.dir); /* Get object allocation info */ +3457:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = ld_dword(dj.dir + DIR_FileSize); +3458:Middlewares/Third_Party/FatFs/src/ff.c **** } +3459:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_FASTSEEK +3460:Middlewares/Third_Party/FatFs/src/ff.c **** fp->cltbl = 0; /* Disable fast seek mode */ +3461:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3462:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.fs = fs; /* Validate the file object */ +3463:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.id = fs->id; +3464:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag = mode; /* Set file access mode */ +3465:Middlewares/Third_Party/FatFs/src/ff.c **** fp->err = 0; /* Clear error flag */ +3466:Middlewares/Third_Party/FatFs/src/ff.c **** fp->sect = 0; /* Invalidate current data sector */ +3467:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = 0; /* Set file pointer top of the file */ +3468:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +3469:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY +3470:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(fp->buf, 0, _MAX_SS); /* Clear sector buffer */ +3471:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3472:Middlewares/Third_Party/FatFs/src/ff.c **** if ((mode & FA_SEEKEND) && fp->obj.objsize > 0) { /* Seek to end of file if FA_OPEN_APPEND is sp +3473:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = fp->obj.objsize; /* Offset to seek */ +3474:Middlewares/Third_Party/FatFs/src/ff.c **** bcs = (DWORD)fs->csize * SS(fs); /* Cluster size in byte */ +3475:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow the cluster chain */ +3476:Middlewares/Third_Party/FatFs/src/ff.c **** for (ofs = fp->obj.objsize; res == FR_OK && ofs > bcs; ofs -= bcs) { +3477:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&fp->obj, clst); +3478:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1) res = FR_INT_ERR; +3479:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) res = FR_DISK_ERR; +3480:Middlewares/Third_Party/FatFs/src/ff.c **** } +3481:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; +3482:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && ofs % SS(fs)) { /* Fill sector buffer if not on the sector boundary */ +3483:Middlewares/Third_Party/FatFs/src/ff.c **** if ((sc = clust2sect(fs, clst)) == 0) { +3484:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INT_ERR; +3485:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +3486:Middlewares/Third_Party/FatFs/src/ff.c **** fp->sect = sc + (DWORD)(ofs / SS(fs)); +3487:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY +3488:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(fs->drv, fp->buf, fp->sect, 1) != RES_OK) res = FR_DISK_ERR; +3489:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3490:Middlewares/Third_Party/FatFs/src/ff.c **** } +3491:Middlewares/Third_Party/FatFs/src/ff.c **** } +3492:Middlewares/Third_Party/FatFs/src/ff.c **** } +3493:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3494:Middlewares/Third_Party/FatFs/src/ff.c **** } +3495:Middlewares/Third_Party/FatFs/src/ff.c **** +3496:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +3497:Middlewares/Third_Party/FatFs/src/ff.c **** } +3498:Middlewares/Third_Party/FatFs/src/ff.c **** +3499:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) fp->obj.fs = 0; /* Invalidate file object on error */ +3500:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 94 + + +3501:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +3502:Middlewares/Third_Party/FatFs/src/ff.c **** } +3503:Middlewares/Third_Party/FatFs/src/ff.c **** +3504:Middlewares/Third_Party/FatFs/src/ff.c **** +3505:Middlewares/Third_Party/FatFs/src/ff.c **** +3506:Middlewares/Third_Party/FatFs/src/ff.c **** +3507:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3508:Middlewares/Third_Party/FatFs/src/ff.c **** /* Read File */ +3509:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3510:Middlewares/Third_Party/FatFs/src/ff.c **** +3511:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_read ( +3512:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp, /* Pointer to the file object */ +3513:Middlewares/Third_Party/FatFs/src/ff.c **** void* buff, /* Pointer to data buffer */ +3514:Middlewares/Third_Party/FatFs/src/ff.c **** UINT btr, /* Number of bytes to read */ +3515:Middlewares/Third_Party/FatFs/src/ff.c **** UINT* br /* Pointer to number of bytes read */ +3516:Middlewares/Third_Party/FatFs/src/ff.c **** ) +3517:Middlewares/Third_Party/FatFs/src/ff.c **** { +3518:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +3519:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +3520:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, sect; +3521:Middlewares/Third_Party/FatFs/src/ff.c **** FSIZE_t remain; +3522:Middlewares/Third_Party/FatFs/src/ff.c **** UINT rcnt, cc, csect; +3523:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *rbuff = (BYTE*)buff; +3524:Middlewares/Third_Party/FatFs/src/ff.c **** +3525:Middlewares/Third_Party/FatFs/src/ff.c **** +3526:Middlewares/Third_Party/FatFs/src/ff.c **** *br = 0; /* Clear read byte counter */ +3527:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ +3528:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ +3529:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ +3530:Middlewares/Third_Party/FatFs/src/ff.c **** remain = fp->obj.objsize - fp->fptr; +3531:Middlewares/Third_Party/FatFs/src/ff.c **** if (btr > remain) btr = (UINT)remain; /* Truncate btr by remaining bytes */ +3532:Middlewares/Third_Party/FatFs/src/ff.c **** +3533:Middlewares/Third_Party/FatFs/src/ff.c **** for ( ; btr; /* Repeat until all data read */ +3534:Middlewares/Third_Party/FatFs/src/ff.c **** rbuff += rcnt, fp->fptr += rcnt, *br += rcnt, btr -= rcnt) { +3535:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ +3536:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ +3537:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ +3538:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */ +3539:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow cluster chain from the origin */ +3540:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Middle or end of the file */ +3541:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_FASTSEEK +3542:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->cltbl) { +3543:Middlewares/Third_Party/FatFs/src/ff.c **** clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ +3544:Middlewares/Third_Party/FatFs/src/ff.c **** } else +3545:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3546:Middlewares/Third_Party/FatFs/src/ff.c **** { +3547:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&fp->obj, fp->clust); /* Follow cluster chain on the FAT */ +3548:Middlewares/Third_Party/FatFs/src/ff.c **** } +3549:Middlewares/Third_Party/FatFs/src/ff.c **** } +3550:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst < 2) ABORT(fs, FR_INT_ERR); +3551:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); +3552:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ +3553:Middlewares/Third_Party/FatFs/src/ff.c **** } +3554:Middlewares/Third_Party/FatFs/src/ff.c **** sect = clust2sect(fs, fp->clust); /* Get current sector */ +3555:Middlewares/Third_Party/FatFs/src/ff.c **** if (!sect) ABORT(fs, FR_INT_ERR); +3556:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; +3557:Middlewares/Third_Party/FatFs/src/ff.c **** cc = btr / SS(fs); /* When remaining bytes >= sector size, */ + ARM GAS /tmp/cc5lWXRL.s page 95 + + +3558:Middlewares/Third_Party/FatFs/src/ff.c **** if (cc) { /* Read maximum contiguous sectors directly */ +3559:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect + cc > fs->csize) { /* Clip at cluster boundary */ +3560:Middlewares/Third_Party/FatFs/src/ff.c **** cc = fs->csize - csect; +3561:Middlewares/Third_Party/FatFs/src/ff.c **** } +3562:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(fs->drv, rbuff, sect, cc) != RES_OK) ABORT(fs, FR_DISK_ERR); +3563:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it +3564:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY +3565:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->wflag && fs->winsect - sect < cc) { +3566:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(rbuff + ((fs->winsect - sect) * SS(fs)), fs->win, SS(fs)); +3567:Middlewares/Third_Party/FatFs/src/ff.c **** } +3568:Middlewares/Third_Party/FatFs/src/ff.c **** #else +3569:Middlewares/Third_Party/FatFs/src/ff.c **** if ((fp->flag & FA_DIRTY) && fp->sect - sect < cc) { +3570:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(rbuff + ((fp->sect - sect) * SS(fs)), fp->buf, SS(fs)); +3571:Middlewares/Third_Party/FatFs/src/ff.c **** } +3572:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3573:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3574:Middlewares/Third_Party/FatFs/src/ff.c **** rcnt = SS(fs) * cc; /* Number of bytes transferred */ +3575:Middlewares/Third_Party/FatFs/src/ff.c **** continue; +3576:Middlewares/Third_Party/FatFs/src/ff.c **** } +3577:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY +3578:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->sect != sect) { /* Load data sector if not in cache */ +3579:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +3580:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ +3581:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); +3582:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; +3583:Middlewares/Third_Party/FatFs/src/ff.c **** } +3584:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3585:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Fill sector cach +3586:Middlewares/Third_Party/FatFs/src/ff.c **** } +3587:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3588:Middlewares/Third_Party/FatFs/src/ff.c **** fp->sect = sect; +3589:Middlewares/Third_Party/FatFs/src/ff.c **** } +3590:Middlewares/Third_Party/FatFs/src/ff.c **** rcnt = SS(fs) - (UINT)fp->fptr % SS(fs); /* Number of bytes left in the sector */ +3591:Middlewares/Third_Party/FatFs/src/ff.c **** if (rcnt > btr) rcnt = btr; /* Clip it by btr if needed */ +3592:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY +3593:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fp->sect) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Move sector window */ +3594:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(rbuff, fs->win + fp->fptr % SS(fs), rcnt); /* Extract partial sector */ +3595:Middlewares/Third_Party/FatFs/src/ff.c **** #else +3596:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(rbuff, fp->buf + fp->fptr % SS(fs), rcnt); /* Extract partial sector */ +3597:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3598:Middlewares/Third_Party/FatFs/src/ff.c **** } +3599:Middlewares/Third_Party/FatFs/src/ff.c **** +3600:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, FR_OK); +3601:Middlewares/Third_Party/FatFs/src/ff.c **** } +3602:Middlewares/Third_Party/FatFs/src/ff.c **** +3603:Middlewares/Third_Party/FatFs/src/ff.c **** +3604:Middlewares/Third_Party/FatFs/src/ff.c **** +3605:Middlewares/Third_Party/FatFs/src/ff.c **** +3606:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +3607:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3608:Middlewares/Third_Party/FatFs/src/ff.c **** /* Write File */ +3609:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3610:Middlewares/Third_Party/FatFs/src/ff.c **** +3611:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_write ( +3612:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp, /* Pointer to the file object */ +3613:Middlewares/Third_Party/FatFs/src/ff.c **** const void* buff, /* Pointer to the data to be written */ +3614:Middlewares/Third_Party/FatFs/src/ff.c **** UINT btw, /* Number of bytes to write */ + ARM GAS /tmp/cc5lWXRL.s page 96 + + +3615:Middlewares/Third_Party/FatFs/src/ff.c **** UINT* bw /* Pointer to number of bytes written */ +3616:Middlewares/Third_Party/FatFs/src/ff.c **** ) +3617:Middlewares/Third_Party/FatFs/src/ff.c **** { +3618:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +3619:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +3620:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, sect; +3621:Middlewares/Third_Party/FatFs/src/ff.c **** UINT wcnt, cc, csect; +3622:Middlewares/Third_Party/FatFs/src/ff.c **** const BYTE *wbuff = (const BYTE*)buff; +3623:Middlewares/Third_Party/FatFs/src/ff.c **** +3624:Middlewares/Third_Party/FatFs/src/ff.c **** +3625:Middlewares/Third_Party/FatFs/src/ff.c **** *bw = 0; /* Clear write byte counter */ +3626:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ +3627:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ +3628:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ +3629:Middlewares/Third_Party/FatFs/src/ff.c **** +3630:Middlewares/Third_Party/FatFs/src/ff.c **** /* Check fptr wrap-around (file size cannot reach 4GiB on FATxx) */ +3631:Middlewares/Third_Party/FatFs/src/ff.c **** if ((!_FS_EXFAT || fs->fs_type != FS_EXFAT) && (DWORD)(fp->fptr + btw) < (DWORD)fp->fptr) { +3632:Middlewares/Third_Party/FatFs/src/ff.c **** btw = (UINT)(0xFFFFFFFF - (DWORD)fp->fptr); +3633:Middlewares/Third_Party/FatFs/src/ff.c **** } +3634:Middlewares/Third_Party/FatFs/src/ff.c **** +3635:Middlewares/Third_Party/FatFs/src/ff.c **** for ( ; btw; /* Repeat until all data written */ +3636:Middlewares/Third_Party/FatFs/src/ff.c **** wbuff += wcnt, fp->fptr += wcnt, fp->obj.objsize = (fp->fptr > fp->obj.objsize) ? fp->fptr : fp-> +3637:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ +3638:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs)) & (fs->csize - 1); /* Sector offset in the cluster */ +3639:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ +3640:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */ +3641:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow from the origin */ +3642:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) { /* If no cluster is allocated, */ +3643:Middlewares/Third_Party/FatFs/src/ff.c **** clst = create_chain(&fp->obj, 0); /* create a new cluster chain */ +3644:Middlewares/Third_Party/FatFs/src/ff.c **** } +3645:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* On the middle or end of the file */ +3646:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_FASTSEEK +3647:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->cltbl) { +3648:Middlewares/Third_Party/FatFs/src/ff.c **** clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ +3649:Middlewares/Third_Party/FatFs/src/ff.c **** } else +3650:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3651:Middlewares/Third_Party/FatFs/src/ff.c **** { +3652:Middlewares/Third_Party/FatFs/src/ff.c **** clst = create_chain(&fp->obj, fp->clust); /* Follow or stretch cluster chain on the FAT */ +3653:Middlewares/Third_Party/FatFs/src/ff.c **** } +3654:Middlewares/Third_Party/FatFs/src/ff.c **** } +3655:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) break; /* Could not allocate a new cluster (disk full) */ +3656:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) ABORT(fs, FR_INT_ERR); +3657:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); +3658:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ +3659:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->obj.sclust == 0) fp->obj.sclust = clst; /* Set start cluster if the first write */ +3660:Middlewares/Third_Party/FatFs/src/ff.c **** } +3661:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY +3662:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->winsect == fp->sect && sync_window(fs) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Write-back s +3663:Middlewares/Third_Party/FatFs/src/ff.c **** #else +3664:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->flag & FA_DIRTY) { /* Write-back sector cache */ +3665:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); +3666:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; +3667:Middlewares/Third_Party/FatFs/src/ff.c **** } +3668:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3669:Middlewares/Third_Party/FatFs/src/ff.c **** sect = clust2sect(fs, fp->clust); /* Get current sector */ +3670:Middlewares/Third_Party/FatFs/src/ff.c **** if (!sect) ABORT(fs, FR_INT_ERR); +3671:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + ARM GAS /tmp/cc5lWXRL.s page 97 + + +3672:Middlewares/Third_Party/FatFs/src/ff.c **** cc = btw / SS(fs); /* When remaining bytes >= sector size, */ +3673:Middlewares/Third_Party/FatFs/src/ff.c **** if (cc) { /* Write maximum contiguous sectors directly */ +3674:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect + cc > fs->csize) { /* Clip at cluster boundary */ +3675:Middlewares/Third_Party/FatFs/src/ff.c **** cc = fs->csize - csect; +3676:Middlewares/Third_Party/FatFs/src/ff.c **** } +3677:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, wbuff, sect, cc) != RES_OK) ABORT(fs, FR_DISK_ERR); +3678:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 2 +3679:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY +3680:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->winsect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct writ +3681:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(fs->win, wbuff + ((fs->winsect - sect) * SS(fs)), SS(fs)); +3682:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 0; +3683:Middlewares/Third_Party/FatFs/src/ff.c **** } +3684:Middlewares/Third_Party/FatFs/src/ff.c **** #else +3685:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->sect - sect < cc) { /* Refill sector cache if it gets invalidated by the direct write * +3686:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(fp->buf, wbuff + ((fp->sect - sect) * SS(fs)), SS(fs)); +3687:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; +3688:Middlewares/Third_Party/FatFs/src/ff.c **** } +3689:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3690:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3691:Middlewares/Third_Party/FatFs/src/ff.c **** wcnt = SS(fs) * cc; /* Number of bytes transferred */ +3692:Middlewares/Third_Party/FatFs/src/ff.c **** continue; +3693:Middlewares/Third_Party/FatFs/src/ff.c **** } +3694:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY +3695:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr >= fp->obj.objsize) { /* Avoid silly cache filling on the growing edge */ +3696:Middlewares/Third_Party/FatFs/src/ff.c **** if (sync_window(fs) != FR_OK) ABORT(fs, FR_DISK_ERR); +3697:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect = sect; +3698:Middlewares/Third_Party/FatFs/src/ff.c **** } +3699:Middlewares/Third_Party/FatFs/src/ff.c **** #else +3700:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->sect != sect && /* Fill sector cache with file data */ +3701:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr < fp->obj.objsize && +3702:Middlewares/Third_Party/FatFs/src/ff.c **** disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) { +3703:Middlewares/Third_Party/FatFs/src/ff.c **** ABORT(fs, FR_DISK_ERR); +3704:Middlewares/Third_Party/FatFs/src/ff.c **** } +3705:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3706:Middlewares/Third_Party/FatFs/src/ff.c **** fp->sect = sect; +3707:Middlewares/Third_Party/FatFs/src/ff.c **** } +3708:Middlewares/Third_Party/FatFs/src/ff.c **** wcnt = SS(fs) - (UINT)fp->fptr % SS(fs); /* Number of bytes left in the sector */ +3709:Middlewares/Third_Party/FatFs/src/ff.c **** if (wcnt > btw) wcnt = btw; /* Clip it by btw if needed */ +3710:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY +3711:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fp->sect) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Move sector window */ +3712:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(fs->win + fp->fptr % SS(fs), wbuff, wcnt); /* Fit data to the sector */ +3713:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +3714:Middlewares/Third_Party/FatFs/src/ff.c **** #else +3715:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(fp->buf + fp->fptr % SS(fs), wbuff, wcnt); /* Fit data to the sector */ +3716:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_DIRTY; +3717:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3718:Middlewares/Third_Party/FatFs/src/ff.c **** } +3719:Middlewares/Third_Party/FatFs/src/ff.c **** +3720:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_MODIFIED; /* Set file change flag */ +3721:Middlewares/Third_Party/FatFs/src/ff.c **** +3722:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, FR_OK); +3723:Middlewares/Third_Party/FatFs/src/ff.c **** } +3724:Middlewares/Third_Party/FatFs/src/ff.c **** +3725:Middlewares/Third_Party/FatFs/src/ff.c **** +3726:Middlewares/Third_Party/FatFs/src/ff.c **** +3727:Middlewares/Third_Party/FatFs/src/ff.c **** +3728:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + ARM GAS /tmp/cc5lWXRL.s page 98 + + +3729:Middlewares/Third_Party/FatFs/src/ff.c **** /* Synchronize the File */ +3730:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3731:Middlewares/Third_Party/FatFs/src/ff.c **** +3732:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_sync ( +3733:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp /* Pointer to the file object */ +3734:Middlewares/Third_Party/FatFs/src/ff.c **** ) +3735:Middlewares/Third_Party/FatFs/src/ff.c **** { +3736:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +3737:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +3738:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD tm; +3739:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *dir; +3740:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +3741:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +3742:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +3743:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3744:Middlewares/Third_Party/FatFs/src/ff.c **** +3745:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ +3746:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3747:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->flag & FA_MODIFIED) { /* Is there any change to the file? */ +3748:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY +3749:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->flag & FA_DIRTY) { /* Write-back cached data if needed */ +3750:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) LEAVE_FF(fs, FR_DISK_ERR); +3751:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; +3752:Middlewares/Third_Party/FatFs/src/ff.c **** } +3753:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3754:Middlewares/Third_Party/FatFs/src/ff.c **** /* Update the directory entry */ +3755:Middlewares/Third_Party/FatFs/src/ff.c **** tm = GET_FATTIME(); /* Modified time */ +3756:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +3757:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +3758:Middlewares/Third_Party/FatFs/src/ff.c **** res = fill_first_frag(&fp->obj); /* Fill first fragment on the FAT if needed */ +3759:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3760:Middlewares/Third_Party/FatFs/src/ff.c **** res = fill_last_frag(&fp->obj, fp->clust, 0xFFFFFFFF); /* Fill last fragment on the FAT if nee +3761:Middlewares/Third_Party/FatFs/src/ff.c **** } +3762:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3763:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +3764:Middlewares/Third_Party/FatFs/src/ff.c **** res = load_obj_dir(&dj, &fp->obj); /* Load directory entry block */ +3765:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3766:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_Attr] |= AM_ARC; /* Set archive bit */ +3767:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_GenFlags] = fp->obj.stat | 1; /* Update file allocation info */ +3768:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_FstClus, fp->obj.sclust); +3769:Middlewares/Third_Party/FatFs/src/ff.c **** st_qword(fs->dirbuf + XDIR_FileSize, fp->obj.objsize); +3770:Middlewares/Third_Party/FatFs/src/ff.c **** st_qword(fs->dirbuf + XDIR_ValidFileSize, fp->obj.objsize); +3771:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_ModTime, tm); /* Update modified time */ +3772:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_ModTime10] = 0; +3773:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_AccTime, 0); +3774:Middlewares/Third_Party/FatFs/src/ff.c **** res = store_xdir(&dj); /* Restore it to the directory */ +3775:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3776:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); +3777:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_MODIFIED; +3778:Middlewares/Third_Party/FatFs/src/ff.c **** } +3779:Middlewares/Third_Party/FatFs/src/ff.c **** } +3780:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +3781:Middlewares/Third_Party/FatFs/src/ff.c **** } +3782:Middlewares/Third_Party/FatFs/src/ff.c **** } else +3783:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3784:Middlewares/Third_Party/FatFs/src/ff.c **** { +3785:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fp->dir_sect); + ARM GAS /tmp/cc5lWXRL.s page 99 + + +3786:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3787:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fp->dir_ptr; +3788:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] |= AM_ARC; /* Set archive bit */ +3789:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fp->obj.fs, dir, fp->obj.sclust); /* Update file allocation info */ +3790:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_FileSize, (DWORD)fp->obj.objsize); /* Update file size */ +3791:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_ModTime, tm); /* Update modified time */ +3792:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dir + DIR_LstAccDate, 0); +3793:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +3794:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); /* Restore it to the directory */ +3795:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_MODIFIED; +3796:Middlewares/Third_Party/FatFs/src/ff.c **** } +3797:Middlewares/Third_Party/FatFs/src/ff.c **** } +3798:Middlewares/Third_Party/FatFs/src/ff.c **** } +3799:Middlewares/Third_Party/FatFs/src/ff.c **** } +3800:Middlewares/Third_Party/FatFs/src/ff.c **** +3801:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +3802:Middlewares/Third_Party/FatFs/src/ff.c **** } +3803:Middlewares/Third_Party/FatFs/src/ff.c **** +3804:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ +3805:Middlewares/Third_Party/FatFs/src/ff.c **** +3806:Middlewares/Third_Party/FatFs/src/ff.c **** +3807:Middlewares/Third_Party/FatFs/src/ff.c **** +3808:Middlewares/Third_Party/FatFs/src/ff.c **** +3809:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3810:Middlewares/Third_Party/FatFs/src/ff.c **** /* Close File */ +3811:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3812:Middlewares/Third_Party/FatFs/src/ff.c **** +3813:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_close ( +3814:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp /* Pointer to the file object to be closed */ +3815:Middlewares/Third_Party/FatFs/src/ff.c **** ) +3816:Middlewares/Third_Party/FatFs/src/ff.c **** { +3817:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +3818:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +3819:Middlewares/Third_Party/FatFs/src/ff.c **** +3820:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +3821:Middlewares/Third_Party/FatFs/src/ff.c **** res = f_sync(fp); /* Flush cached data */ +3822:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) +3823:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3824:Middlewares/Third_Party/FatFs/src/ff.c **** { +3825:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Lock volume */ +3826:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3827:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 +3828:Middlewares/Third_Party/FatFs/src/ff.c **** res = dec_lock(fp->obj.lockid); /* Decrement file open counter */ +3829:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) +3830:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3831:Middlewares/Third_Party/FatFs/src/ff.c **** { +3832:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.fs = 0; /* Invalidate file object */ +3833:Middlewares/Third_Party/FatFs/src/ff.c **** } +3834:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT +3835:Middlewares/Third_Party/FatFs/src/ff.c **** unlock_fs(fs, FR_OK); /* Unlock volume */ +3836:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3837:Middlewares/Third_Party/FatFs/src/ff.c **** } +3838:Middlewares/Third_Party/FatFs/src/ff.c **** } +3839:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +3840:Middlewares/Third_Party/FatFs/src/ff.c **** } +3841:Middlewares/Third_Party/FatFs/src/ff.c **** +3842:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 100 + + +3843:Middlewares/Third_Party/FatFs/src/ff.c **** +3844:Middlewares/Third_Party/FatFs/src/ff.c **** +3845:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH >= 1 +3846:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3847:Middlewares/Third_Party/FatFs/src/ff.c **** /* Change Current Directory or Current Drive, Get Current Directory */ +3848:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3849:Middlewares/Third_Party/FatFs/src/ff.c **** +3850:Middlewares/Third_Party/FatFs/src/ff.c **** #if _VOLUMES >= 2 +3851:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_chdrive ( +3852:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path /* Drive number */ +3853:Middlewares/Third_Party/FatFs/src/ff.c **** ) +3854:Middlewares/Third_Party/FatFs/src/ff.c **** { +3855:Middlewares/Third_Party/FatFs/src/ff.c **** int vol; +3856:Middlewares/Third_Party/FatFs/src/ff.c **** +3857:Middlewares/Third_Party/FatFs/src/ff.c **** +3858:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive number */ +3859:Middlewares/Third_Party/FatFs/src/ff.c **** vol = get_ldnumber(&path); +3860:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; +3861:Middlewares/Third_Party/FatFs/src/ff.c **** +3862:Middlewares/Third_Party/FatFs/src/ff.c **** CurrVol = (BYTE)vol; /* Set it as current volume */ +3863:Middlewares/Third_Party/FatFs/src/ff.c **** +3864:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +3865:Middlewares/Third_Party/FatFs/src/ff.c **** } +3866:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3867:Middlewares/Third_Party/FatFs/src/ff.c **** +3868:Middlewares/Third_Party/FatFs/src/ff.c **** +3869:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_chdir ( +3870:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path /* Pointer to the directory path */ +3871:Middlewares/Third_Party/FatFs/src/ff.c **** ) +3872:Middlewares/Third_Party/FatFs/src/ff.c **** { +3873:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +3874:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +3875:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +3876:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +3877:Middlewares/Third_Party/FatFs/src/ff.c **** +3878:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive */ +3879:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, 0); +3880:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3881:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; +3882:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +3883:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the path */ +3884:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Follow completed */ +3885:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { +3886:Middlewares/Third_Party/FatFs/src/ff.c **** fs->cdir = dj.obj.sclust; /* It is the start directory itself */ +3887:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +3888:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +3889:Middlewares/Third_Party/FatFs/src/ff.c **** fs->cdc_scl = dj.obj.c_scl; +3890:Middlewares/Third_Party/FatFs/src/ff.c **** fs->cdc_size = dj.obj.c_size; +3891:Middlewares/Third_Party/FatFs/src/ff.c **** fs->cdc_ofs = dj.obj.c_ofs; +3892:Middlewares/Third_Party/FatFs/src/ff.c **** } +3893:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3894:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +3895:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.obj.attr & AM_DIR) { /* It is a sub-directory */ +3896:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +3897:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +3898:Middlewares/Third_Party/FatFs/src/ff.c **** fs->cdir = ld_dword(fs->dirbuf + XDIR_FstClus); /* Sub-directory cluster */ +3899:Middlewares/Third_Party/FatFs/src/ff.c **** fs->cdc_scl = dj.obj.sclust; /* Save containing directory information */ + ARM GAS /tmp/cc5lWXRL.s page 101 + + +3900:Middlewares/Third_Party/FatFs/src/ff.c **** fs->cdc_size = ((DWORD)dj.obj.objsize & 0xFFFFFF00) | dj.obj.stat; +3901:Middlewares/Third_Party/FatFs/src/ff.c **** fs->cdc_ofs = dj.blk_ofs; +3902:Middlewares/Third_Party/FatFs/src/ff.c **** } else +3903:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3904:Middlewares/Third_Party/FatFs/src/ff.c **** { +3905:Middlewares/Third_Party/FatFs/src/ff.c **** fs->cdir = ld_clust(fs, dj.dir); /* Sub-directory cluster */ +3906:Middlewares/Third_Party/FatFs/src/ff.c **** } +3907:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +3908:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_PATH; /* Reached but a file */ +3909:Middlewares/Third_Party/FatFs/src/ff.c **** } +3910:Middlewares/Third_Party/FatFs/src/ff.c **** } +3911:Middlewares/Third_Party/FatFs/src/ff.c **** } +3912:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +3913:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_NO_PATH; +3914:Middlewares/Third_Party/FatFs/src/ff.c **** } +3915:Middlewares/Third_Party/FatFs/src/ff.c **** +3916:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +3917:Middlewares/Third_Party/FatFs/src/ff.c **** } +3918:Middlewares/Third_Party/FatFs/src/ff.c **** +3919:Middlewares/Third_Party/FatFs/src/ff.c **** +3920:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH >= 2 +3921:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_getcwd ( +3922:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR* buff, /* Pointer to the directory path */ +3923:Middlewares/Third_Party/FatFs/src/ff.c **** UINT len /* Size of path */ +3924:Middlewares/Third_Party/FatFs/src/ff.c **** ) +3925:Middlewares/Third_Party/FatFs/src/ff.c **** { +3926:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +3927:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +3928:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +3929:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, n; +3930:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ccl; +3931:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR *tp; +3932:Middlewares/Third_Party/FatFs/src/ff.c **** FILINFO fno; +3933:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +3934:Middlewares/Third_Party/FatFs/src/ff.c **** +3935:Middlewares/Third_Party/FatFs/src/ff.c **** +3936:Middlewares/Third_Party/FatFs/src/ff.c **** *buff = 0; +3937:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive */ +3938:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume((const TCHAR**)&buff, &fs, 0); /* Get current volume */ +3939:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3940:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; +3941:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +3942:Middlewares/Third_Party/FatFs/src/ff.c **** i = len; /* Bottom of buffer (directory stack base) */ +3943:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { /* (Cannot do getcwd on exFAT and returns root path) +3944:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.sclust = fs->cdir; /* Start to follow upper directory from current directory */ +3945:Middlewares/Third_Party/FatFs/src/ff.c **** while ((ccl = dj.obj.sclust) != 0) { /* Repeat while current directory is a sub-directory */ +3946:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(&dj, 1 * SZDIRE); /* Get parent directory */ +3947:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +3948:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dj.sect); +3949:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +3950:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.sclust = ld_clust(fs, dj.dir); /* Goto parent directory */ +3951:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(&dj, 0); +3952:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +3953:Middlewares/Third_Party/FatFs/src/ff.c **** do { /* Find the entry links to the child directory */ +3954:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_read(&dj, 0); +3955:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +3956:Middlewares/Third_Party/FatFs/src/ff.c **** if (ccl == ld_clust(fs, dj.dir)) break; /* Found the entry */ + ARM GAS /tmp/cc5lWXRL.s page 102 + + +3957:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(&dj, 0); +3958:Middlewares/Third_Party/FatFs/src/ff.c **** } while (res == FR_OK); +3959:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_INT_ERR;/* It cannot be 'not found'. */ +3960:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +3961:Middlewares/Third_Party/FatFs/src/ff.c **** get_fileinfo(&dj, &fno); /* Get the directory name and push it to the buffer */ +3962:Middlewares/Third_Party/FatFs/src/ff.c **** for (n = 0; fno.fname[n]; n++) ; +3963:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < n + 3) { +3964:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NOT_ENOUGH_CORE; break; +3965:Middlewares/Third_Party/FatFs/src/ff.c **** } +3966:Middlewares/Third_Party/FatFs/src/ff.c **** while (n) buff[--i] = fno.fname[--n]; +3967:Middlewares/Third_Party/FatFs/src/ff.c **** buff[--i] = '/'; +3968:Middlewares/Third_Party/FatFs/src/ff.c **** } +3969:Middlewares/Third_Party/FatFs/src/ff.c **** } +3970:Middlewares/Third_Party/FatFs/src/ff.c **** tp = buff; +3971:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +3972:Middlewares/Third_Party/FatFs/src/ff.c **** #if _VOLUMES >= 2 +3973:Middlewares/Third_Party/FatFs/src/ff.c **** *tp++ = '0' + CurrVol; /* Put drive number */ +3974:Middlewares/Third_Party/FatFs/src/ff.c **** *tp++ = ':'; +3975:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +3976:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == len) { /* Root-directory */ +3977:Middlewares/Third_Party/FatFs/src/ff.c **** *tp++ = '/'; +3978:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Sub-directroy */ +3979:Middlewares/Third_Party/FatFs/src/ff.c **** do /* Add stacked path str */ +3980:Middlewares/Third_Party/FatFs/src/ff.c **** *tp++ = buff[i++]; +3981:Middlewares/Third_Party/FatFs/src/ff.c **** while (i < len); +3982:Middlewares/Third_Party/FatFs/src/ff.c **** } +3983:Middlewares/Third_Party/FatFs/src/ff.c **** } +3984:Middlewares/Third_Party/FatFs/src/ff.c **** *tp = 0; +3985:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +3986:Middlewares/Third_Party/FatFs/src/ff.c **** } +3987:Middlewares/Third_Party/FatFs/src/ff.c **** +3988:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +3989:Middlewares/Third_Party/FatFs/src/ff.c **** } +3990:Middlewares/Third_Party/FatFs/src/ff.c **** +3991:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_RPATH >= 2 */ +3992:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_RPATH >= 1 */ +3993:Middlewares/Third_Party/FatFs/src/ff.c **** +3994:Middlewares/Third_Party/FatFs/src/ff.c **** +3995:Middlewares/Third_Party/FatFs/src/ff.c **** +3996:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 2 +3997:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +3998:Middlewares/Third_Party/FatFs/src/ff.c **** /* Seek File R/W Pointer */ +3999:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4000:Middlewares/Third_Party/FatFs/src/ff.c **** +4001:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_lseek ( +4002:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp, /* Pointer to the file object */ +4003:Middlewares/Third_Party/FatFs/src/ff.c **** FSIZE_t ofs /* File pointer from top of file */ +4004:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4005:Middlewares/Third_Party/FatFs/src/ff.c **** { +4006:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4007:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4008:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, bcs, nsect; +4009:Middlewares/Third_Party/FatFs/src/ff.c **** FSIZE_t ifptr; +4010:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_FASTSEEK +4011:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD cl, pcl, ncl, tcl, dsc, tlen, ulen, *tbl; +4012:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4013:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 103 + + +4014:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ +4015:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = (FRESULT)fp->err; +4016:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT && !_FS_READONLY +4017:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && fs->fs_type == FS_EXFAT) { +4018:Middlewares/Third_Party/FatFs/src/ff.c **** res = fill_last_frag(&fp->obj, fp->clust, 0xFFFFFFFF); /* Fill last fragment on the FAT if needed +4019:Middlewares/Third_Party/FatFs/src/ff.c **** } +4020:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4021:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) LEAVE_FF(fs, res); +4022:Middlewares/Third_Party/FatFs/src/ff.c **** +4023:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_FASTSEEK +4024:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->cltbl) { /* Fast seek */ +4025:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs == CREATE_LINKMAP) { /* Create CLMT */ +4026:Middlewares/Third_Party/FatFs/src/ff.c **** tbl = fp->cltbl; +4027:Middlewares/Third_Party/FatFs/src/ff.c **** tlen = *tbl++; ulen = 2; /* Given table size and required table size */ +4028:Middlewares/Third_Party/FatFs/src/ff.c **** cl = fp->obj.sclust; /* Origin of the chain */ +4029:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl) { +4030:Middlewares/Third_Party/FatFs/src/ff.c **** do { +4031:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get a fragment */ +4032:Middlewares/Third_Party/FatFs/src/ff.c **** tcl = cl; ncl = 0; ulen += 2; /* Top, length and used items */ +4033:Middlewares/Third_Party/FatFs/src/ff.c **** do { +4034:Middlewares/Third_Party/FatFs/src/ff.c **** pcl = cl; ncl++; +4035:Middlewares/Third_Party/FatFs/src/ff.c **** cl = get_fat(&fp->obj, cl); +4036:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl <= 1) ABORT(fs, FR_INT_ERR); +4037:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); +4038:Middlewares/Third_Party/FatFs/src/ff.c **** } while (cl == pcl + 1); +4039:Middlewares/Third_Party/FatFs/src/ff.c **** if (ulen <= tlen) { /* Store the length and top of the fragment */ +4040:Middlewares/Third_Party/FatFs/src/ff.c **** *tbl++ = ncl; *tbl++ = tcl; +4041:Middlewares/Third_Party/FatFs/src/ff.c **** } +4042:Middlewares/Third_Party/FatFs/src/ff.c **** } while (cl < fs->n_fatent); /* Repeat until end of chain */ +4043:Middlewares/Third_Party/FatFs/src/ff.c **** } +4044:Middlewares/Third_Party/FatFs/src/ff.c **** *fp->cltbl = ulen; /* Number of items used */ +4045:Middlewares/Third_Party/FatFs/src/ff.c **** if (ulen <= tlen) { +4046:Middlewares/Third_Party/FatFs/src/ff.c **** *tbl = 0; /* Terminate table */ +4047:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +4048:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NOT_ENOUGH_CORE; /* Given table size is smaller than required */ +4049:Middlewares/Third_Party/FatFs/src/ff.c **** } +4050:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Fast seek */ +4051:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs > fp->obj.objsize) ofs = fp->obj.objsize; /* Clip offset at the file size */ +4052:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = ofs; /* Set file pointer */ +4053:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs) { +4054:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clmt_clust(fp, ofs - 1); +4055:Middlewares/Third_Party/FatFs/src/ff.c **** dsc = clust2sect(fs, fp->clust); +4056:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dsc) ABORT(fs, FR_INT_ERR); +4057:Middlewares/Third_Party/FatFs/src/ff.c **** dsc += (DWORD)((ofs - 1) / SS(fs)) & (fs->csize - 1); +4058:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) && dsc != fp->sect) { /* Refill sector cache if needed */ +4059:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY +4060:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +4061:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ +4062:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); +4063:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; +4064:Middlewares/Third_Party/FatFs/src/ff.c **** } +4065:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4066:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(fs->drv, fp->buf, dsc, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Load current sec +4067:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4068:Middlewares/Third_Party/FatFs/src/ff.c **** fp->sect = dsc; +4069:Middlewares/Third_Party/FatFs/src/ff.c **** } +4070:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 104 + + +4071:Middlewares/Third_Party/FatFs/src/ff.c **** } +4072:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4073:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4074:Middlewares/Third_Party/FatFs/src/ff.c **** +4075:Middlewares/Third_Party/FatFs/src/ff.c **** /* Normal Seek */ +4076:Middlewares/Third_Party/FatFs/src/ff.c **** { +4077:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4078:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type != FS_EXFAT && ofs >= 0x100000000) ofs = 0xFFFFFFFF; /* Clip at 4GiB-1 if at FATx +4079:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4080:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs > fp->obj.objsize && (_FS_READONLY || !(fp->flag & FA_WRITE))) { /* In read-only mode, cl +4081:Middlewares/Third_Party/FatFs/src/ff.c **** ofs = fp->obj.objsize; +4082:Middlewares/Third_Party/FatFs/src/ff.c **** } +4083:Middlewares/Third_Party/FatFs/src/ff.c **** ifptr = fp->fptr; +4084:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = nsect = 0; +4085:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs) { +4086:Middlewares/Third_Party/FatFs/src/ff.c **** bcs = (DWORD)fs->csize * SS(fs); /* Cluster size (byte) */ +4087:Middlewares/Third_Party/FatFs/src/ff.c **** if (ifptr > 0 && +4088:Middlewares/Third_Party/FatFs/src/ff.c **** (ofs - 1) / bcs >= (ifptr - 1) / bcs) { /* When seek to same or following cluster, */ +4089:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = (ifptr - 1) & ~(FSIZE_t)(bcs - 1); /* start from the current cluster */ +4090:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= fp->fptr; +4091:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->clust; +4092:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* When seek to back cluster, */ +4093:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* start from the first cluster */ +4094:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +4095:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) { /* If no cluster chain, create a new chain */ +4096:Middlewares/Third_Party/FatFs/src/ff.c **** clst = create_chain(&fp->obj, 0); +4097:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) ABORT(fs, FR_INT_ERR); +4098:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); +4099:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = clst; +4100:Middlewares/Third_Party/FatFs/src/ff.c **** } +4101:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4102:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; +4103:Middlewares/Third_Party/FatFs/src/ff.c **** } +4104:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst != 0) { +4105:Middlewares/Third_Party/FatFs/src/ff.c **** while (ofs > bcs) { /* Cluster following loop */ +4106:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= bcs; fp->fptr += bcs; +4107:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +4108:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->flag & FA_WRITE) { /* Check if in write mode or not */ +4109:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT && fp->fptr > fp->obj.objsize) { /* No FAT chain object needs correct objsize t +4110:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = fp->fptr; +4111:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_MODIFIED; +4112:Middlewares/Third_Party/FatFs/src/ff.c **** } +4113:Middlewares/Third_Party/FatFs/src/ff.c **** clst = create_chain(&fp->obj, clst); /* Follow chain with forceed stretch */ +4114:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) { /* Clip file size in case of disk full */ +4115:Middlewares/Third_Party/FatFs/src/ff.c **** ofs = 0; break; +4116:Middlewares/Third_Party/FatFs/src/ff.c **** } +4117:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4118:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4119:Middlewares/Third_Party/FatFs/src/ff.c **** { +4120:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&fp->obj, clst); /* Follow cluster chain if not in write mode */ +4121:Middlewares/Third_Party/FatFs/src/ff.c **** } +4122:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); +4123:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR); +4124:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; +4125:Middlewares/Third_Party/FatFs/src/ff.c **** } +4126:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr += ofs; +4127:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs % SS(fs)) { + ARM GAS /tmp/cc5lWXRL.s page 105 + + +4128:Middlewares/Third_Party/FatFs/src/ff.c **** nsect = clust2sect(fs, clst); /* Current sector */ +4129:Middlewares/Third_Party/FatFs/src/ff.c **** if (!nsect) ABORT(fs, FR_INT_ERR); +4130:Middlewares/Third_Party/FatFs/src/ff.c **** nsect += (DWORD)(ofs / SS(fs)); +4131:Middlewares/Third_Party/FatFs/src/ff.c **** } +4132:Middlewares/Third_Party/FatFs/src/ff.c **** } +4133:Middlewares/Third_Party/FatFs/src/ff.c **** } +4134:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_READONLY && fp->fptr > fp->obj.objsize) { /* Set file change flag if the file size is e +4135:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = fp->fptr; +4136:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_MODIFIED; +4137:Middlewares/Third_Party/FatFs/src/ff.c **** } +4138:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) && nsect != fp->sect) { /* Fill sector cache if needed */ +4139:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY +4140:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +4141:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ +4142:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); +4143:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; +4144:Middlewares/Third_Party/FatFs/src/ff.c **** } +4145:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4146:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(fs->drv, fp->buf, nsect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); /* Fill sector cach +4147:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4148:Middlewares/Third_Party/FatFs/src/ff.c **** fp->sect = nsect; +4149:Middlewares/Third_Party/FatFs/src/ff.c **** } +4150:Middlewares/Third_Party/FatFs/src/ff.c **** } +4151:Middlewares/Third_Party/FatFs/src/ff.c **** +4152:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +4153:Middlewares/Third_Party/FatFs/src/ff.c **** } +4154:Middlewares/Third_Party/FatFs/src/ff.c **** +4155:Middlewares/Third_Party/FatFs/src/ff.c **** +4156:Middlewares/Third_Party/FatFs/src/ff.c **** +4157:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 1 +4158:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4159:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create a Directory Object */ +4160:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4161:Middlewares/Third_Party/FatFs/src/ff.c **** +4162:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_opendir ( +4163:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Pointer to directory object to create */ +4164:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path /* Pointer to the directory path */ +4165:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4166:Middlewares/Third_Party/FatFs/src/ff.c **** { +4167:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4168:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4169:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID *obj; +4170:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +4171:Middlewares/Third_Party/FatFs/src/ff.c **** +4172:Middlewares/Third_Party/FatFs/src/ff.c **** +4173:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dp) return FR_INVALID_OBJECT; +4174:Middlewares/Third_Party/FatFs/src/ff.c **** +4175:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive */ +4176:Middlewares/Third_Party/FatFs/src/ff.c **** obj = &dp->obj; +4177:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, 0); +4178:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4179:Middlewares/Third_Party/FatFs/src/ff.c **** obj->fs = fs; +4180:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +4181:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(dp, path); /* Follow the path to the directory */ +4182:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Follow completed */ +4183:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(dp->fn[NSFLAG] & NS_NONAME)) { /* It is not the origin directory itself */ +4184:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->attr & AM_DIR) { /* This object is a sub-directory */ + ARM GAS /tmp/cc5lWXRL.s page 106 + + +4185:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4186:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +4187:Middlewares/Third_Party/FatFs/src/ff.c **** obj->c_scl = obj->sclust; /* Get containing directory inforamation */ +4188:Middlewares/Third_Party/FatFs/src/ff.c **** obj->c_size = ((DWORD)obj->objsize & 0xFFFFFF00) | obj->stat; +4189:Middlewares/Third_Party/FatFs/src/ff.c **** obj->c_ofs = dp->blk_ofs; +4190:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = ld_dword(fs->dirbuf + XDIR_FstClus); /* Get object allocation info */ +4191:Middlewares/Third_Party/FatFs/src/ff.c **** obj->objsize = ld_qword(fs->dirbuf + XDIR_FileSize); +4192:Middlewares/Third_Party/FatFs/src/ff.c **** obj->stat = fs->dirbuf[XDIR_GenFlags] & 2; +4193:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4194:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4195:Middlewares/Third_Party/FatFs/src/ff.c **** { +4196:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = ld_clust(fs, dp->dir); /* Get object allocation info */ +4197:Middlewares/Third_Party/FatFs/src/ff.c **** } +4198:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* This object is a file */ +4199:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_PATH; +4200:Middlewares/Third_Party/FatFs/src/ff.c **** } +4201:Middlewares/Third_Party/FatFs/src/ff.c **** } +4202:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4203:Middlewares/Third_Party/FatFs/src/ff.c **** obj->id = fs->id; +4204:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); /* Rewind directory */ +4205:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 +4206:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4207:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->sclust) { +4208:Middlewares/Third_Party/FatFs/src/ff.c **** obj->lockid = inc_lock(dp, 0); /* Lock the sub directory */ +4209:Middlewares/Third_Party/FatFs/src/ff.c **** if (!obj->lockid) res = FR_TOO_MANY_OPEN_FILES; +4210:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +4211:Middlewares/Third_Party/FatFs/src/ff.c **** obj->lockid = 0; /* Root directory need not to be locked */ +4212:Middlewares/Third_Party/FatFs/src/ff.c **** } +4213:Middlewares/Third_Party/FatFs/src/ff.c **** } +4214:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4215:Middlewares/Third_Party/FatFs/src/ff.c **** } +4216:Middlewares/Third_Party/FatFs/src/ff.c **** } +4217:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +4218:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_NO_PATH; +4219:Middlewares/Third_Party/FatFs/src/ff.c **** } +4220:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) obj->fs = 0; /* Invalidate the directory object if function faild */ +4221:Middlewares/Third_Party/FatFs/src/ff.c **** +4222:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +4223:Middlewares/Third_Party/FatFs/src/ff.c **** } +4224:Middlewares/Third_Party/FatFs/src/ff.c **** +4225:Middlewares/Third_Party/FatFs/src/ff.c **** +4226:Middlewares/Third_Party/FatFs/src/ff.c **** +4227:Middlewares/Third_Party/FatFs/src/ff.c **** +4228:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4229:Middlewares/Third_Party/FatFs/src/ff.c **** /* Close Directory */ +4230:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4231:Middlewares/Third_Party/FatFs/src/ff.c **** +4232:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_closedir ( +4233:Middlewares/Third_Party/FatFs/src/ff.c **** DIR *dp /* Pointer to the directory object to be closed */ +4234:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4235:Middlewares/Third_Party/FatFs/src/ff.c **** { +4236:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4237:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4238:Middlewares/Third_Party/FatFs/src/ff.c **** +4239:Middlewares/Third_Party/FatFs/src/ff.c **** +4240:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&dp->obj, &fs); /* Check validity of the file object */ +4241:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + ARM GAS /tmp/cc5lWXRL.s page 107 + + +4242:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 +4243:Middlewares/Third_Party/FatFs/src/ff.c **** if (dp->obj.lockid) { /* Decrement sub-directory open counter */ +4244:Middlewares/Third_Party/FatFs/src/ff.c **** res = dec_lock(dp->obj.lockid); +4245:Middlewares/Third_Party/FatFs/src/ff.c **** } +4246:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) +4247:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4248:Middlewares/Third_Party/FatFs/src/ff.c **** { +4249:Middlewares/Third_Party/FatFs/src/ff.c **** dp->obj.fs = 0; /* Invalidate directory object */ +4250:Middlewares/Third_Party/FatFs/src/ff.c **** } +4251:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT +4252:Middlewares/Third_Party/FatFs/src/ff.c **** unlock_fs(fs, FR_OK); /* Unlock volume */ +4253:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4254:Middlewares/Third_Party/FatFs/src/ff.c **** } +4255:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +4256:Middlewares/Third_Party/FatFs/src/ff.c **** } +4257:Middlewares/Third_Party/FatFs/src/ff.c **** +4258:Middlewares/Third_Party/FatFs/src/ff.c **** +4259:Middlewares/Third_Party/FatFs/src/ff.c **** +4260:Middlewares/Third_Party/FatFs/src/ff.c **** +4261:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4262:Middlewares/Third_Party/FatFs/src/ff.c **** /* Read Directory Entries in Sequence */ +4263:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4264:Middlewares/Third_Party/FatFs/src/ff.c **** +4265:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_readdir ( +4266:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Pointer to the open directory object */ +4267:Middlewares/Third_Party/FatFs/src/ff.c **** FILINFO* fno /* Pointer to file information to return */ +4268:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4269:Middlewares/Third_Party/FatFs/src/ff.c **** { +4270:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4271:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4272:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +4273:Middlewares/Third_Party/FatFs/src/ff.c **** +4274:Middlewares/Third_Party/FatFs/src/ff.c **** +4275:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&dp->obj, &fs); /* Check validity of the directory object */ +4276:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4277:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fno) { +4278:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); /* Rewind the directory object */ +4279:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +4280:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +4281:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_read(dp, 0); /* Read an item */ +4282:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory */ +4283:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* A valid entry is found */ +4284:Middlewares/Third_Party/FatFs/src/ff.c **** get_fileinfo(dp, fno); /* Get the object information */ +4285:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(dp, 0); /* Increment index for next */ +4286:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory now */ +4287:Middlewares/Third_Party/FatFs/src/ff.c **** } +4288:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +4289:Middlewares/Third_Party/FatFs/src/ff.c **** } +4290:Middlewares/Third_Party/FatFs/src/ff.c **** } +4291:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +4292:Middlewares/Third_Party/FatFs/src/ff.c **** } +4293:Middlewares/Third_Party/FatFs/src/ff.c **** +4294:Middlewares/Third_Party/FatFs/src/ff.c **** +4295:Middlewares/Third_Party/FatFs/src/ff.c **** +4296:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_FIND +4297:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4298:Middlewares/Third_Party/FatFs/src/ff.c **** /* Find Next File */ + ARM GAS /tmp/cc5lWXRL.s page 108 + + +4299:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4300:Middlewares/Third_Party/FatFs/src/ff.c **** +4301:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_findnext ( +4302:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Pointer to the open directory object */ +4303:Middlewares/Third_Party/FatFs/src/ff.c **** FILINFO* fno /* Pointer to the file information structure */ +4304:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4305:Middlewares/Third_Party/FatFs/src/ff.c **** { +4306:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4307:Middlewares/Third_Party/FatFs/src/ff.c **** +4308:Middlewares/Third_Party/FatFs/src/ff.c **** +4309:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { +4310:Middlewares/Third_Party/FatFs/src/ff.c **** res = f_readdir(dp, fno); /* Get a directory item */ +4311:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || !fno || !fno->fname[0]) break; /* Terminate if any error or end of directory +4312:Middlewares/Third_Party/FatFs/src/ff.c **** if (pattern_matching(dp->pat, fno->fname, 0, 0)) break; /* Test for the file name */ +4313:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 && _USE_FIND == 2 +4314:Middlewares/Third_Party/FatFs/src/ff.c **** if (pattern_matching(dp->pat, fno->altname, 0, 0)) break; /* Test for alternative name if exist * +4315:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4316:Middlewares/Third_Party/FatFs/src/ff.c **** } +4317:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +4318:Middlewares/Third_Party/FatFs/src/ff.c **** } +4319:Middlewares/Third_Party/FatFs/src/ff.c **** +4320:Middlewares/Third_Party/FatFs/src/ff.c **** +4321:Middlewares/Third_Party/FatFs/src/ff.c **** +4322:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4323:Middlewares/Third_Party/FatFs/src/ff.c **** /* Find First File */ +4324:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4325:Middlewares/Third_Party/FatFs/src/ff.c **** +4326:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_findfirst ( +4327:Middlewares/Third_Party/FatFs/src/ff.c **** DIR* dp, /* Pointer to the blank directory object */ +4328:Middlewares/Third_Party/FatFs/src/ff.c **** FILINFO* fno, /* Pointer to the file information structure */ +4329:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path, /* Pointer to the directory to open */ +4330:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* pattern /* Pointer to the matching pattern */ +4331:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4332:Middlewares/Third_Party/FatFs/src/ff.c **** { +4333:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4334:Middlewares/Third_Party/FatFs/src/ff.c **** +4335:Middlewares/Third_Party/FatFs/src/ff.c **** +4336:Middlewares/Third_Party/FatFs/src/ff.c **** dp->pat = pattern; /* Save pointer to pattern string */ +4337:Middlewares/Third_Party/FatFs/src/ff.c **** res = f_opendir(dp, path); /* Open the target directory */ +4338:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4339:Middlewares/Third_Party/FatFs/src/ff.c **** res = f_findnext(dp, fno); /* Find the first item */ +4340:Middlewares/Third_Party/FatFs/src/ff.c **** } +4341:Middlewares/Third_Party/FatFs/src/ff.c **** return res; +4342:Middlewares/Third_Party/FatFs/src/ff.c **** } +4343:Middlewares/Third_Party/FatFs/src/ff.c **** +4344:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_FIND */ +4345:Middlewares/Third_Party/FatFs/src/ff.c **** +4346:Middlewares/Third_Party/FatFs/src/ff.c **** +4347:Middlewares/Third_Party/FatFs/src/ff.c **** +4348:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE == 0 +4349:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4350:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get File Status */ +4351:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4352:Middlewares/Third_Party/FatFs/src/ff.c **** +4353:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_stat ( +4354:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path, /* Pointer to the file path */ +4355:Middlewares/Third_Party/FatFs/src/ff.c **** FILINFO* fno /* Pointer to file information to return */ + ARM GAS /tmp/cc5lWXRL.s page 109 + + +4356:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4357:Middlewares/Third_Party/FatFs/src/ff.c **** { +4358:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4359:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +4360:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +4361:Middlewares/Third_Party/FatFs/src/ff.c **** +4362:Middlewares/Third_Party/FatFs/src/ff.c **** +4363:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive */ +4364:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &dj.obj.fs, 0); +4365:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4366:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(dj.obj.fs); +4367:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */ +4368:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Follow completed */ +4369:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { /* It is origin directory */ +4370:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; +4371:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Found an object */ +4372:Middlewares/Third_Party/FatFs/src/ff.c **** if (fno) get_fileinfo(&dj, fno); +4373:Middlewares/Third_Party/FatFs/src/ff.c **** } +4374:Middlewares/Third_Party/FatFs/src/ff.c **** } +4375:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +4376:Middlewares/Third_Party/FatFs/src/ff.c **** } +4377:Middlewares/Third_Party/FatFs/src/ff.c **** +4378:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(dj.obj.fs, res); +4379:Middlewares/Third_Party/FatFs/src/ff.c **** } +4380:Middlewares/Third_Party/FatFs/src/ff.c **** +4381:Middlewares/Third_Party/FatFs/src/ff.c **** +4382:Middlewares/Third_Party/FatFs/src/ff.c **** +4383:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +4384:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4385:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get Number of Free Clusters */ +4386:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4387:Middlewares/Third_Party/FatFs/src/ff.c **** +4388:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_getfree ( +4389:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path, /* Path name of the logical drive number */ +4390:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD* nclst, /* Pointer to a variable to return number of free clusters */ +4391:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS** fatfs /* Pointer to return pointer to corresponding file system object */ +4392:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4393:Middlewares/Third_Party/FatFs/src/ff.c **** { +4394:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4395:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4396:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD nfree, clst, sect, stat; +4397:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; +4398:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *p; +4399:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID obj; +4400:Middlewares/Third_Party/FatFs/src/ff.c **** +4401:Middlewares/Third_Party/FatFs/src/ff.c **** +4402:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive */ +4403:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, 0); +4404:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4405:Middlewares/Third_Party/FatFs/src/ff.c **** *fatfs = fs; /* Return ptr to the fs object */ +4406:Middlewares/Third_Party/FatFs/src/ff.c **** /* If free_clst is valid, return it without full cluster scan */ +4407:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->free_clst <= fs->n_fatent - 2) { +4408:Middlewares/Third_Party/FatFs/src/ff.c **** *nclst = fs->free_clst; +4409:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +4410:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get number of free clusters */ +4411:Middlewares/Third_Party/FatFs/src/ff.c **** nfree = 0; +4412:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT12) { /* FAT12: Sector unalighed FAT entries */ + ARM GAS /tmp/cc5lWXRL.s page 110 + + +4413:Middlewares/Third_Party/FatFs/src/ff.c **** clst = 2; obj.fs = fs; +4414:Middlewares/Third_Party/FatFs/src/ff.c **** do { +4415:Middlewares/Third_Party/FatFs/src/ff.c **** stat = get_fat(&obj, clst); +4416:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } +4417:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 1) { res = FR_INT_ERR; break; } +4418:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 0) nfree++; +4419:Middlewares/Third_Party/FatFs/src/ff.c **** } while (++clst < fs->n_fatent); +4420:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +4421:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4422:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { /* exFAT: Scan bitmap table */ +4423:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE bm; +4424:Middlewares/Third_Party/FatFs/src/ff.c **** UINT b; +4425:Middlewares/Third_Party/FatFs/src/ff.c **** +4426:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fs->n_fatent - 2; +4427:Middlewares/Third_Party/FatFs/src/ff.c **** sect = fs->database; +4428:Middlewares/Third_Party/FatFs/src/ff.c **** i = 0; +4429:Middlewares/Third_Party/FatFs/src/ff.c **** do { +4430:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 0 && (res = move_window(fs, sect++)) != FR_OK) break; +4431:Middlewares/Third_Party/FatFs/src/ff.c **** for (b = 8, bm = fs->win[i]; b && clst; b--, clst--) { +4432:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(bm & 1)) nfree++; +4433:Middlewares/Third_Party/FatFs/src/ff.c **** bm >>= 1; +4434:Middlewares/Third_Party/FatFs/src/ff.c **** } +4435:Middlewares/Third_Party/FatFs/src/ff.c **** i = (i + 1) % SS(fs); +4436:Middlewares/Third_Party/FatFs/src/ff.c **** } while (clst); +4437:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4438:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4439:Middlewares/Third_Party/FatFs/src/ff.c **** { /* FAT16/32: Sector alighed FAT entries */ +4440:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fs->n_fatent; sect = fs->fatbase; +4441:Middlewares/Third_Party/FatFs/src/ff.c **** i = 0; p = 0; +4442:Middlewares/Third_Party/FatFs/src/ff.c **** do { +4443:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 0) { +4444:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, sect++); +4445:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +4446:Middlewares/Third_Party/FatFs/src/ff.c **** p = fs->win; +4447:Middlewares/Third_Party/FatFs/src/ff.c **** i = SS(fs); +4448:Middlewares/Third_Party/FatFs/src/ff.c **** } +4449:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT16) { +4450:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(p) == 0) nfree++; +4451:Middlewares/Third_Party/FatFs/src/ff.c **** p += 2; i -= 2; +4452:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +4453:Middlewares/Third_Party/FatFs/src/ff.c **** if ((ld_dword(p) & 0x0FFFFFFF) == 0) nfree++; +4454:Middlewares/Third_Party/FatFs/src/ff.c **** p += 4; i -= 4; +4455:Middlewares/Third_Party/FatFs/src/ff.c **** } +4456:Middlewares/Third_Party/FatFs/src/ff.c **** } while (--clst); +4457:Middlewares/Third_Party/FatFs/src/ff.c **** } +4458:Middlewares/Third_Party/FatFs/src/ff.c **** } +4459:Middlewares/Third_Party/FatFs/src/ff.c **** *nclst = nfree; /* Return the free clusters */ +4460:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst = nfree; /* Now free_clst is valid */ +4461:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; /* FSInfo is to be updated */ +4462:Middlewares/Third_Party/FatFs/src/ff.c **** } +4463:Middlewares/Third_Party/FatFs/src/ff.c **** } +4464:Middlewares/Third_Party/FatFs/src/ff.c **** +4465:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +4466:Middlewares/Third_Party/FatFs/src/ff.c **** } +4467:Middlewares/Third_Party/FatFs/src/ff.c **** +4468:Middlewares/Third_Party/FatFs/src/ff.c **** +4469:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 111 + + +4470:Middlewares/Third_Party/FatFs/src/ff.c **** +4471:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4472:Middlewares/Third_Party/FatFs/src/ff.c **** /* Truncate File */ +4473:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4474:Middlewares/Third_Party/FatFs/src/ff.c **** +4475:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_truncate ( +4476:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp /* Pointer to the file object */ +4477:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4478:Middlewares/Third_Party/FatFs/src/ff.c **** { +4479:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4480:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4481:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ncl; +4482:Middlewares/Third_Party/FatFs/src/ff.c **** +4483:Middlewares/Third_Party/FatFs/src/ff.c **** +4484:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ +4485:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); +4486:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ +4487:Middlewares/Third_Party/FatFs/src/ff.c **** +4488:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr < fp->obj.objsize) { /* Process when fptr is not on the eof */ +4489:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* When set file size to zero, remove entire cluster chain */ +4490:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&fp->obj, fp->obj.sclust, 0); +4491:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = 0; +4492:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* When truncate a part of the file, remove remaining clusters */ +4493:Middlewares/Third_Party/FatFs/src/ff.c **** ncl = get_fat(&fp->obj, fp->clust); +4494:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; +4495:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == 0xFFFFFFFF) res = FR_DISK_ERR; +4496:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == 1) res = FR_INT_ERR; +4497:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && ncl < fs->n_fatent) { +4498:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&fp->obj, ncl, fp->clust); +4499:Middlewares/Third_Party/FatFs/src/ff.c **** } +4500:Middlewares/Third_Party/FatFs/src/ff.c **** } +4501:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = fp->fptr; /* Set file size to current R/W point */ +4502:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_MODIFIED; +4503:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY +4504:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && (fp->flag & FA_DIRTY)) { +4505:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) { +4506:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; +4507:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +4508:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; +4509:Middlewares/Third_Party/FatFs/src/ff.c **** } +4510:Middlewares/Third_Party/FatFs/src/ff.c **** } +4511:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4512:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) ABORT(fs, res); +4513:Middlewares/Third_Party/FatFs/src/ff.c **** } +4514:Middlewares/Third_Party/FatFs/src/ff.c **** +4515:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +4516:Middlewares/Third_Party/FatFs/src/ff.c **** } +4517:Middlewares/Third_Party/FatFs/src/ff.c **** +4518:Middlewares/Third_Party/FatFs/src/ff.c **** +4519:Middlewares/Third_Party/FatFs/src/ff.c **** +4520:Middlewares/Third_Party/FatFs/src/ff.c **** +4521:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4522:Middlewares/Third_Party/FatFs/src/ff.c **** /* Delete a File/Directory */ +4523:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4524:Middlewares/Third_Party/FatFs/src/ff.c **** +4525:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_unlink ( +4526:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path /* Pointer to the file or directory path */ + ARM GAS /tmp/cc5lWXRL.s page 112 + + +4527:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4528:Middlewares/Third_Party/FatFs/src/ff.c **** { +4529:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4530:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj, sdj; +4531:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD dclst = 0; +4532:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4533:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4534:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID obj; +4535:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4536:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +4537:Middlewares/Third_Party/FatFs/src/ff.c **** +4538:Middlewares/Third_Party/FatFs/src/ff.c **** +4539:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive */ +4540:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, FA_WRITE); +4541:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; +4542:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4543:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +4544:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */ +4545:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && res == FR_OK && (dj.fn[NSFLAG] & NS_DOT)) { +4546:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; /* Cannot remove dot entry */ +4547:Middlewares/Third_Party/FatFs/src/ff.c **** } +4548:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 +4549:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = chk_lock(&dj, 2); /* Check if it is an open object */ +4550:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4551:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* The object is accessible */ +4552:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { +4553:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; /* Cannot remove the origin directory */ +4554:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +4555:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.obj.attr & AM_RDO) { +4556:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; /* Cannot remove R/O object */ +4557:Middlewares/Third_Party/FatFs/src/ff.c **** } +4558:Middlewares/Third_Party/FatFs/src/ff.c **** } +4559:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4560:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4561:Middlewares/Third_Party/FatFs/src/ff.c **** obj.fs = fs; +4562:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +4563:Middlewares/Third_Party/FatFs/src/ff.c **** obj.sclust = dclst = ld_dword(fs->dirbuf + XDIR_FstClus); +4564:Middlewares/Third_Party/FatFs/src/ff.c **** obj.objsize = ld_qword(fs->dirbuf + XDIR_FileSize); +4565:Middlewares/Third_Party/FatFs/src/ff.c **** obj.stat = fs->dirbuf[XDIR_GenFlags] & 2; +4566:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4567:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4568:Middlewares/Third_Party/FatFs/src/ff.c **** { +4569:Middlewares/Third_Party/FatFs/src/ff.c **** dclst = ld_clust(fs, dj.dir); +4570:Middlewares/Third_Party/FatFs/src/ff.c **** } +4571:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.obj.attr & AM_DIR) { /* Is it a sub-directory? */ +4572:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH != 0 +4573:Middlewares/Third_Party/FatFs/src/ff.c **** if (dclst == fs->cdir) { /* Is it the current directory? */ +4574:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; +4575:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4576:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4577:Middlewares/Third_Party/FatFs/src/ff.c **** { +4578:Middlewares/Third_Party/FatFs/src/ff.c **** sdj.obj.fs = fs; /* Open the sub-directory */ +4579:Middlewares/Third_Party/FatFs/src/ff.c **** sdj.obj.sclust = dclst; +4580:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4581:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +4582:Middlewares/Third_Party/FatFs/src/ff.c **** sdj.obj.objsize = obj.objsize; +4583:Middlewares/Third_Party/FatFs/src/ff.c **** sdj.obj.stat = obj.stat; + ARM GAS /tmp/cc5lWXRL.s page 113 + + +4584:Middlewares/Third_Party/FatFs/src/ff.c **** } +4585:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4586:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(&sdj, 0); +4587:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4588:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_read(&sdj, 0); /* Read an item */ +4589:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = FR_DENIED; /* Not empty? */ +4590:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Empty? */ +4591:Middlewares/Third_Party/FatFs/src/ff.c **** } +4592:Middlewares/Third_Party/FatFs/src/ff.c **** } +4593:Middlewares/Third_Party/FatFs/src/ff.c **** } +4594:Middlewares/Third_Party/FatFs/src/ff.c **** } +4595:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4596:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_remove(&dj); /* Remove the directory entry */ +4597:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && dclst) { /* Remove the cluster chain if exist */ +4598:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4599:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&obj, dclst, 0); +4600:Middlewares/Third_Party/FatFs/src/ff.c **** #else +4601:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&dj.obj, dclst, 0); +4602:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4603:Middlewares/Third_Party/FatFs/src/ff.c **** } +4604:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = sync_fs(fs); +4605:Middlewares/Third_Party/FatFs/src/ff.c **** } +4606:Middlewares/Third_Party/FatFs/src/ff.c **** } +4607:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +4608:Middlewares/Third_Party/FatFs/src/ff.c **** } +4609:Middlewares/Third_Party/FatFs/src/ff.c **** +4610:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +4611:Middlewares/Third_Party/FatFs/src/ff.c **** } +4612:Middlewares/Third_Party/FatFs/src/ff.c **** +4613:Middlewares/Third_Party/FatFs/src/ff.c **** +4614:Middlewares/Third_Party/FatFs/src/ff.c **** +4615:Middlewares/Third_Party/FatFs/src/ff.c **** +4616:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4617:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create a Directory */ +4618:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4619:Middlewares/Third_Party/FatFs/src/ff.c **** +4620:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_mkdir ( +4621:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path /* Pointer to the directory path */ +4622:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4623:Middlewares/Third_Party/FatFs/src/ff.c **** { +4624:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4625:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +4626:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4627:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *dir; +4628:Middlewares/Third_Party/FatFs/src/ff.c **** UINT n; +4629:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD dsc, dcl, pcl, tm; +4630:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +4631:Middlewares/Third_Party/FatFs/src/ff.c **** +4632:Middlewares/Third_Party/FatFs/src/ff.c **** +4633:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive */ +4634:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, FA_WRITE); +4635:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; +4636:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4637:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +4638:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */ +4639:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = FR_EXIST; /* Any object with same name is already existing */ +4640:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && res == FR_NO_FILE && (dj.fn[NSFLAG] & NS_DOT)) { + ARM GAS /tmp/cc5lWXRL.s page 114 + + +4641:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; +4642:Middlewares/Third_Party/FatFs/src/ff.c **** } +4643:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { /* Can create a new directory */ +4644:Middlewares/Third_Party/FatFs/src/ff.c **** dcl = create_chain(&dj.obj, 0); /* Allocate a cluster for the new directory table */ +4645:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.objsize = (DWORD)fs->csize * SS(fs); +4646:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; +4647:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 0) res = FR_DENIED; /* No space to allocate a new cluster */ +4648:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 1) res = FR_INT_ERR; +4649:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 0xFFFFFFFF) res = FR_DISK_ERR; +4650:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = sync_window(fs); /* Flush FAT */ +4651:Middlewares/Third_Party/FatFs/src/ff.c **** tm = GET_FATTIME(); +4652:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Initialize the new directory table */ +4653:Middlewares/Third_Party/FatFs/src/ff.c **** dsc = clust2sect(fs, dcl); +4654:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fs->win; +4655:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dir, 0, SS(fs)); +4656:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { +4657:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dir + DIR_Name, ' ', 11); /* Create "." entry */ +4658:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Name] = '.'; +4659:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] = AM_DIR; +4660:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_ModTime, tm); +4661:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir, dcl); +4662:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dir + SZDIRE, dir, SZDIRE); /* Create ".." entry */ +4663:Middlewares/Third_Party/FatFs/src/ff.c **** dir[SZDIRE + 1] = '.'; pcl = dj.obj.sclust; +4664:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT32 && pcl == fs->dirbase) pcl = 0; +4665:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir + SZDIRE, pcl); +4666:Middlewares/Third_Party/FatFs/src/ff.c **** } +4667:Middlewares/Third_Party/FatFs/src/ff.c **** for (n = fs->csize; n; n--) { /* Write dot entries and clear following sectors */ +4668:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect = dsc++; +4669:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +4670:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_window(fs); +4671:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +4672:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dir, 0, SS(fs)); +4673:Middlewares/Third_Party/FatFs/src/ff.c **** } +4674:Middlewares/Third_Party/FatFs/src/ff.c **** } +4675:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4676:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_register(&dj); /* Register the object to the directoy */ +4677:Middlewares/Third_Party/FatFs/src/ff.c **** } +4678:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4679:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4680:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { /* Initialize directory entry block */ +4681:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_ModTime, tm); /* Created time */ +4682:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_FstClus, dcl); /* Table start cluster */ +4683:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_FileSize, (DWORD)dj.obj.objsize); /* File size needs to be valid */ +4684:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_ValidFileSize, (DWORD)dj.obj.objsize); +4685:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_GenFlags] = 3; /* Initialize the object flag (contiguous) */ +4686:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_Attr] = AM_DIR; /* Attribute */ +4687:Middlewares/Third_Party/FatFs/src/ff.c **** res = store_xdir(&dj); +4688:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4689:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4690:Middlewares/Third_Party/FatFs/src/ff.c **** { +4691:Middlewares/Third_Party/FatFs/src/ff.c **** dir = dj.dir; +4692:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_ModTime, tm); /* Created time */ +4693:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir, dcl); /* Table start cluster */ +4694:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] = AM_DIR; /* Attribute */ +4695:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +4696:Middlewares/Third_Party/FatFs/src/ff.c **** } +4697:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + ARM GAS /tmp/cc5lWXRL.s page 115 + + +4698:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); +4699:Middlewares/Third_Party/FatFs/src/ff.c **** } +4700:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +4701:Middlewares/Third_Party/FatFs/src/ff.c **** remove_chain(&dj.obj, dcl, 0); /* Could not register, remove cluster chain */ +4702:Middlewares/Third_Party/FatFs/src/ff.c **** } +4703:Middlewares/Third_Party/FatFs/src/ff.c **** } +4704:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +4705:Middlewares/Third_Party/FatFs/src/ff.c **** } +4706:Middlewares/Third_Party/FatFs/src/ff.c **** +4707:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +4708:Middlewares/Third_Party/FatFs/src/ff.c **** } +4709:Middlewares/Third_Party/FatFs/src/ff.c **** +4710:Middlewares/Third_Party/FatFs/src/ff.c **** +4711:Middlewares/Third_Party/FatFs/src/ff.c **** +4712:Middlewares/Third_Party/FatFs/src/ff.c **** +4713:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4714:Middlewares/Third_Party/FatFs/src/ff.c **** /* Rename a File/Directory */ +4715:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4716:Middlewares/Third_Party/FatFs/src/ff.c **** +4717:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_rename ( +4718:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path_old, /* Pointer to the object name to be renamed */ +4719:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path_new /* Pointer to the new name */ +4720:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4721:Middlewares/Third_Party/FatFs/src/ff.c **** { +4722:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4723:Middlewares/Third_Party/FatFs/src/ff.c **** DIR djo, djn; +4724:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4725:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE buf[_FS_EXFAT ? SZDIRE * 2 : 24], *dir; +4726:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD dw; +4727:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +4728:Middlewares/Third_Party/FatFs/src/ff.c **** +4729:Middlewares/Third_Party/FatFs/src/ff.c **** +4730:Middlewares/Third_Party/FatFs/src/ff.c **** get_ldnumber(&path_new); /* Snip drive number of new name off */ +4731:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path_old, &fs, FA_WRITE); /* Get logical drive of the old object */ +4732:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4733:Middlewares/Third_Party/FatFs/src/ff.c **** djo.obj.fs = fs; +4734:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +4735:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&djo, path_old); /* Check old object */ +4736:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && (djo.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check vali +4737:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 +4738:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4739:Middlewares/Third_Party/FatFs/src/ff.c **** res = chk_lock(&djo, 2); +4740:Middlewares/Third_Party/FatFs/src/ff.c **** } +4741:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4742:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Object to be renamed is found */ +4743:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4744:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { /* At exFAT */ +4745:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE nf, nn; +4746:Middlewares/Third_Party/FatFs/src/ff.c **** WORD nh; +4747:Middlewares/Third_Party/FatFs/src/ff.c **** +4748:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf, fs->dirbuf, SZDIRE * 2); /* Save 85+C0 entry of old object */ +4749:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(&djn, &djo, sizeof djo); +4750:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&djn, path_new); /* Make sure if new object name is not in use */ +4751:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Is new name already in use by any other object? */ +4752:Middlewares/Third_Party/FatFs/src/ff.c **** res = (djn.obj.sclust == djo.obj.sclust && djn.dptr == djo.dptr) ? FR_NO_FILE : FR_EXIST; +4753:Middlewares/Third_Party/FatFs/src/ff.c **** } +4754:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { /* It is a valid path and no name collision */ + ARM GAS /tmp/cc5lWXRL.s page 116 + + +4755:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_register(&djn); /* Register the new entry */ +4756:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4757:Middlewares/Third_Party/FatFs/src/ff.c **** nf = fs->dirbuf[XDIR_NumSec]; nn = fs->dirbuf[XDIR_NumName]; +4758:Middlewares/Third_Party/FatFs/src/ff.c **** nh = ld_word(fs->dirbuf + XDIR_NameHash); +4759:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(fs->dirbuf, buf, SZDIRE * 2); +4760:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_NumSec] = nf; fs->dirbuf[XDIR_NumName] = nn; +4761:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(fs->dirbuf + XDIR_NameHash, nh); +4762:Middlewares/Third_Party/FatFs/src/ff.c **** /* Start of critical section where an interruption can cause a cross-link */ +4763:Middlewares/Third_Party/FatFs/src/ff.c **** res = store_xdir(&djn); +4764:Middlewares/Third_Party/FatFs/src/ff.c **** } +4765:Middlewares/Third_Party/FatFs/src/ff.c **** } +4766:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4767:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4768:Middlewares/Third_Party/FatFs/src/ff.c **** { /* At FAT12/FAT16/FAT32 */ +4769:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf, djo.dir + DIR_Attr, 21); /* Save information about the object except name */ +4770:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(&djn, &djo, sizeof (DIR)); /* Duplicate the directory object */ +4771:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&djn, path_new); /* Make sure if new object name is not in use */ +4772:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Is new name already in use by any other object? */ +4773:Middlewares/Third_Party/FatFs/src/ff.c **** res = (djn.obj.sclust == djo.obj.sclust && djn.dptr == djo.dptr) ? FR_NO_FILE : FR_EXIST; +4774:Middlewares/Third_Party/FatFs/src/ff.c **** } +4775:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { /* It is a valid path and no name collision */ +4776:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_register(&djn); /* Register the new entry */ +4777:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4778:Middlewares/Third_Party/FatFs/src/ff.c **** dir = djn.dir; /* Copy information about object except name */ +4779:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dir + 13, buf + 2, 19); +4780:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] = buf[0] | AM_ARC; +4781:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +4782:Middlewares/Third_Party/FatFs/src/ff.c **** if ((dir[DIR_Attr] & AM_DIR) && djo.obj.sclust != djn.obj.sclust) { /* Update .. entry in the +4783:Middlewares/Third_Party/FatFs/src/ff.c **** dw = clust2sect(fs, ld_clust(fs, dir)); +4784:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dw) { +4785:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INT_ERR; +4786:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +4787:Middlewares/Third_Party/FatFs/src/ff.c **** /* Start of critical section where an interruption can cause a cross-link */ +4788:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dw); +4789:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fs->win + SZDIRE * 1; /* Ptr to .. entry */ +4790:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && dir[1] == '.') { +4791:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir, djn.obj.sclust); +4792:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +4793:Middlewares/Third_Party/FatFs/src/ff.c **** } +4794:Middlewares/Third_Party/FatFs/src/ff.c **** } +4795:Middlewares/Third_Party/FatFs/src/ff.c **** } +4796:Middlewares/Third_Party/FatFs/src/ff.c **** } +4797:Middlewares/Third_Party/FatFs/src/ff.c **** } +4798:Middlewares/Third_Party/FatFs/src/ff.c **** } +4799:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4800:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_remove(&djo); /* Remove old entry */ +4801:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4802:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); +4803:Middlewares/Third_Party/FatFs/src/ff.c **** } +4804:Middlewares/Third_Party/FatFs/src/ff.c **** } +4805:Middlewares/Third_Party/FatFs/src/ff.c **** /* End of the critical section */ +4806:Middlewares/Third_Party/FatFs/src/ff.c **** } +4807:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +4808:Middlewares/Third_Party/FatFs/src/ff.c **** } +4809:Middlewares/Third_Party/FatFs/src/ff.c **** +4810:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +4811:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 117 + + +4812:Middlewares/Third_Party/FatFs/src/ff.c **** +4813:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ +4814:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_MINIMIZE == 0 */ +4815:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_MINIMIZE <= 1 */ +4816:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_MINIMIZE <= 2 */ +4817:Middlewares/Third_Party/FatFs/src/ff.c **** +4818:Middlewares/Third_Party/FatFs/src/ff.c **** +4819:Middlewares/Third_Party/FatFs/src/ff.c **** +4820:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_CHMOD && !_FS_READONLY +4821:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4822:Middlewares/Third_Party/FatFs/src/ff.c **** /* Change Attribute */ +4823:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4824:Middlewares/Third_Party/FatFs/src/ff.c **** +4825:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_chmod ( +4826:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path, /* Pointer to the file path */ +4827:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE attr, /* Attribute bits */ +4828:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE mask /* Attribute mask to change */ +4829:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4830:Middlewares/Third_Party/FatFs/src/ff.c **** { +4831:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4832:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +4833:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4834:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +4835:Middlewares/Third_Party/FatFs/src/ff.c **** +4836:Middlewares/Third_Party/FatFs/src/ff.c **** +4837:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, FA_WRITE); /* Get logical drive */ +4838:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; +4839:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4840:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +4841:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */ +4842:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && (dj.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check objec +4843:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4844:Middlewares/Third_Party/FatFs/src/ff.c **** mask &= AM_RDO|AM_HID|AM_SYS|AM_ARC; /* Valid attribute mask */ +4845:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4846:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +4847:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbuf[XDIR_Attr] = (attr & mask) | (fs->dirbuf[XDIR_Attr] & (BYTE)~mask); /* Apply attribu +4848:Middlewares/Third_Party/FatFs/src/ff.c **** res = store_xdir(&dj); +4849:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4850:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4851:Middlewares/Third_Party/FatFs/src/ff.c **** { +4852:Middlewares/Third_Party/FatFs/src/ff.c **** dj.dir[DIR_Attr] = (attr & mask) | (dj.dir[DIR_Attr] & (BYTE)~mask); /* Apply attribute change +4853:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +4854:Middlewares/Third_Party/FatFs/src/ff.c **** } +4855:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4856:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); +4857:Middlewares/Third_Party/FatFs/src/ff.c **** } +4858:Middlewares/Third_Party/FatFs/src/ff.c **** } +4859:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +4860:Middlewares/Third_Party/FatFs/src/ff.c **** } +4861:Middlewares/Third_Party/FatFs/src/ff.c **** +4862:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +4863:Middlewares/Third_Party/FatFs/src/ff.c **** } +4864:Middlewares/Third_Party/FatFs/src/ff.c **** +4865:Middlewares/Third_Party/FatFs/src/ff.c **** +4866:Middlewares/Third_Party/FatFs/src/ff.c **** +4867:Middlewares/Third_Party/FatFs/src/ff.c **** +4868:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ + ARM GAS /tmp/cc5lWXRL.s page 118 + + +4869:Middlewares/Third_Party/FatFs/src/ff.c **** /* Change Timestamp */ +4870:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4871:Middlewares/Third_Party/FatFs/src/ff.c **** +4872:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_utime ( +4873:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path, /* Pointer to the file/directory name */ +4874:Middlewares/Third_Party/FatFs/src/ff.c **** const FILINFO* fno /* Pointer to the time stamp to be set */ +4875:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4876:Middlewares/Third_Party/FatFs/src/ff.c **** { +4877:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +4878:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +4879:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4880:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF +4881:Middlewares/Third_Party/FatFs/src/ff.c **** +4882:Middlewares/Third_Party/FatFs/src/ff.c **** +4883:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, FA_WRITE); /* Get logical drive */ +4884:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; +4885:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4886:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); +4887:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */ +4888:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && (dj.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check objec +4889:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4890:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4891:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +4892:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->dirbuf + XDIR_ModTime, (DWORD)fno->fdate << 16 | fno->ftime); +4893:Middlewares/Third_Party/FatFs/src/ff.c **** res = store_xdir(&dj); +4894:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4895:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4896:Middlewares/Third_Party/FatFs/src/ff.c **** { +4897:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dj.dir + DIR_ModTime, (DWORD)fno->fdate << 16 | fno->ftime); +4898:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +4899:Middlewares/Third_Party/FatFs/src/ff.c **** } +4900:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4901:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); +4902:Middlewares/Third_Party/FatFs/src/ff.c **** } +4903:Middlewares/Third_Party/FatFs/src/ff.c **** } +4904:Middlewares/Third_Party/FatFs/src/ff.c **** FREE_NAMBUF(); +4905:Middlewares/Third_Party/FatFs/src/ff.c **** } +4906:Middlewares/Third_Party/FatFs/src/ff.c **** +4907:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +4908:Middlewares/Third_Party/FatFs/src/ff.c **** } +4909:Middlewares/Third_Party/FatFs/src/ff.c **** +4910:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_CHMOD && !_FS_READONLY */ +4911:Middlewares/Third_Party/FatFs/src/ff.c **** +4912:Middlewares/Third_Party/FatFs/src/ff.c **** +4913:Middlewares/Third_Party/FatFs/src/ff.c **** +4914:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LABEL +4915:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4916:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get Volume Label */ +4917:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +4918:Middlewares/Third_Party/FatFs/src/ff.c **** +4919:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_getlabel ( +4920:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path, /* Path name of the logical drive number */ +4921:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR* label, /* Pointer to a buffer to return the volume label */ +4922:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD* vsn /* Pointer to a variable to return the volume serial number */ +4923:Middlewares/Third_Party/FatFs/src/ff.c **** ) +4924:Middlewares/Third_Party/FatFs/src/ff.c **** { +4925:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + ARM GAS /tmp/cc5lWXRL.s page 119 + + +4926:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +4927:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +4928:Middlewares/Third_Party/FatFs/src/ff.c **** UINT si, di; +4929:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE || _FS_EXFAT +4930:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR w; +4931:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4932:Middlewares/Third_Party/FatFs/src/ff.c **** +4933:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive */ +4934:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, 0); +4935:Middlewares/Third_Party/FatFs/src/ff.c **** +4936:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get volume label */ +4937:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && label) { +4938:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; dj.obj.sclust = 0; /* Open root directory */ +4939:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(&dj, 0); +4940:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4941:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_read(&dj, 1); /* Find a volume label entry */ +4942:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4943:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +4944:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +4945:Middlewares/Third_Party/FatFs/src/ff.c **** for (si = di = 0; si < dj.dir[XDIR_NumLabel]; si++) { /* Extract volume label from 83 entry */ +4946:Middlewares/Third_Party/FatFs/src/ff.c **** w = ld_word(dj.dir + XDIR_Label + si * 2); +4947:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE +4948:Middlewares/Third_Party/FatFs/src/ff.c **** label[di++] = w; +4949:Middlewares/Third_Party/FatFs/src/ff.c **** #else +4950:Middlewares/Third_Party/FatFs/src/ff.c **** w = ff_convert(w, 0); /* Unicode -> OEM */ +4951:Middlewares/Third_Party/FatFs/src/ff.c **** if (w == 0) w = '?'; /* Replace wrong character */ +4952:Middlewares/Third_Party/FatFs/src/ff.c **** if (_DF1S && w >= 0x100) label[di++] = (char)(w >> 8); +4953:Middlewares/Third_Party/FatFs/src/ff.c **** label[di++] = (char)w; +4954:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4955:Middlewares/Third_Party/FatFs/src/ff.c **** } +4956:Middlewares/Third_Party/FatFs/src/ff.c **** label[di] = 0; +4957:Middlewares/Third_Party/FatFs/src/ff.c **** } else +4958:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4959:Middlewares/Third_Party/FatFs/src/ff.c **** { +4960:Middlewares/Third_Party/FatFs/src/ff.c **** si = di = 0; /* Extract volume label from AM_VOL entry with code comversion */ +4961:Middlewares/Third_Party/FatFs/src/ff.c **** do { +4962:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE +4963:Middlewares/Third_Party/FatFs/src/ff.c **** w = (si < 11) ? dj.dir[si++] : ' '; +4964:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsDBCS1(w) && si < 11 && IsDBCS2(dj.dir[si])) { +4965:Middlewares/Third_Party/FatFs/src/ff.c **** w = w << 8 | dj.dir[si++]; +4966:Middlewares/Third_Party/FatFs/src/ff.c **** } +4967:Middlewares/Third_Party/FatFs/src/ff.c **** label[di++] = ff_convert(w, 1); /* OEM -> Unicode */ +4968:Middlewares/Third_Party/FatFs/src/ff.c **** #else +4969:Middlewares/Third_Party/FatFs/src/ff.c **** label[di++] = dj.dir[si++]; +4970:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +4971:Middlewares/Third_Party/FatFs/src/ff.c **** } while (di < 11); +4972:Middlewares/Third_Party/FatFs/src/ff.c **** do { /* Truncate trailing spaces */ +4973:Middlewares/Third_Party/FatFs/src/ff.c **** label[di] = 0; +4974:Middlewares/Third_Party/FatFs/src/ff.c **** if (di == 0) break; +4975:Middlewares/Third_Party/FatFs/src/ff.c **** } while (label[--di] == ' '); +4976:Middlewares/Third_Party/FatFs/src/ff.c **** } +4977:Middlewares/Third_Party/FatFs/src/ff.c **** } +4978:Middlewares/Third_Party/FatFs/src/ff.c **** } +4979:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { /* No label entry and return nul string */ +4980:Middlewares/Third_Party/FatFs/src/ff.c **** label[0] = 0; +4981:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; +4982:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 120 + + +4983:Middlewares/Third_Party/FatFs/src/ff.c **** } +4984:Middlewares/Third_Party/FatFs/src/ff.c **** +4985:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get volume serial number */ +4986:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && vsn) { +4987:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fs->volbase); +4988:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +4989:Middlewares/Third_Party/FatFs/src/ff.c **** switch (fs->fs_type) { +4990:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_EXFAT: +4991:Middlewares/Third_Party/FatFs/src/ff.c **** di = BPB_VolIDEx; break; +4992:Middlewares/Third_Party/FatFs/src/ff.c **** +4993:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT32: +4994:Middlewares/Third_Party/FatFs/src/ff.c **** di = BS_VolID32; break; +4995:Middlewares/Third_Party/FatFs/src/ff.c **** +4996:Middlewares/Third_Party/FatFs/src/ff.c **** default: +4997:Middlewares/Third_Party/FatFs/src/ff.c **** di = BS_VolID; +4998:Middlewares/Third_Party/FatFs/src/ff.c **** } +4999:Middlewares/Third_Party/FatFs/src/ff.c **** *vsn = ld_dword(fs->win + di); +5000:Middlewares/Third_Party/FatFs/src/ff.c **** } +5001:Middlewares/Third_Party/FatFs/src/ff.c **** } +5002:Middlewares/Third_Party/FatFs/src/ff.c **** +5003:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +5004:Middlewares/Third_Party/FatFs/src/ff.c **** } +5005:Middlewares/Third_Party/FatFs/src/ff.c **** +5006:Middlewares/Third_Party/FatFs/src/ff.c **** +5007:Middlewares/Third_Party/FatFs/src/ff.c **** +5008:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +5009:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5010:Middlewares/Third_Party/FatFs/src/ff.c **** /* Set Volume Label */ +5011:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5012:Middlewares/Third_Party/FatFs/src/ff.c **** +5013:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_setlabel ( +5014:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* label /* Pointer to the volume label to set */ +5015:Middlewares/Third_Party/FatFs/src/ff.c **** ) +5016:Middlewares/Third_Party/FatFs/src/ff.c **** { +5017:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +5018:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; +5019:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +5020:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE dirvn[22]; +5021:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, j, slen; +5022:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR w; +5023:Middlewares/Third_Party/FatFs/src/ff.c **** static const char badchr[] = "\"*+,.:;<=>\?[]|\x7F"; +5024:Middlewares/Third_Party/FatFs/src/ff.c **** +5025:Middlewares/Third_Party/FatFs/src/ff.c **** +5026:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get logical drive */ +5027:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&label, &fs, FA_WRITE); +5028:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) LEAVE_FF(fs, res); +5029:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; +5030:Middlewares/Third_Party/FatFs/src/ff.c **** +5031:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get length of given volume label */ +5032:Middlewares/Third_Party/FatFs/src/ff.c **** for (slen = 0; (UINT)label[slen] >= ' '; slen++) ; /* Get name length */ +5033:Middlewares/Third_Party/FatFs/src/ff.c **** +5034:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +5035:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { /* On the exFAT volume */ +5036:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = j = 0; i < slen; ) { /* Create volume label in directory form */ +5037:Middlewares/Third_Party/FatFs/src/ff.c **** w = label[i++]; +5038:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_LFN_UNICODE +5039:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsDBCS1(w)) { + ARM GAS /tmp/cc5lWXRL.s page 121 + + +5040:Middlewares/Third_Party/FatFs/src/ff.c **** w = (i < slen && IsDBCS2(label[i])) ? w << 8 | (BYTE)label[i++] : 0; +5041:Middlewares/Third_Party/FatFs/src/ff.c **** } +5042:Middlewares/Third_Party/FatFs/src/ff.c **** w = ff_convert(w, 1); +5043:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5044:Middlewares/Third_Party/FatFs/src/ff.c **** if (w == 0 || chk_chr(badchr, w) || j == 22) { /* Check validity check validity of the volume la +5045:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, FR_INVALID_NAME); +5046:Middlewares/Third_Party/FatFs/src/ff.c **** } +5047:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dirvn + j, w); j += 2; +5048:Middlewares/Third_Party/FatFs/src/ff.c **** } +5049:Middlewares/Third_Party/FatFs/src/ff.c **** slen = j; +5050:Middlewares/Third_Party/FatFs/src/ff.c **** } else +5051:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5052:Middlewares/Third_Party/FatFs/src/ff.c **** { /* On the FAT12/16/32 volume */ +5053:Middlewares/Third_Party/FatFs/src/ff.c **** for ( ; slen && label[slen - 1] == ' '; slen--) ; /* Remove trailing spaces */ +5054:Middlewares/Third_Party/FatFs/src/ff.c **** if (slen) { /* Is there a volume label to be set? */ +5055:Middlewares/Third_Party/FatFs/src/ff.c **** dirvn[0] = 0; i = j = 0; /* Create volume label in directory form */ +5056:Middlewares/Third_Party/FatFs/src/ff.c **** do { +5057:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE +5058:Middlewares/Third_Party/FatFs/src/ff.c **** w = ff_convert(ff_wtoupper(label[i++]), 0); +5059:Middlewares/Third_Party/FatFs/src/ff.c **** #else +5060:Middlewares/Third_Party/FatFs/src/ff.c **** w = (BYTE)label[i++]; +5061:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsDBCS1(w)) { +5062:Middlewares/Third_Party/FatFs/src/ff.c **** w = (j < 10 && i < slen && IsDBCS2(label[i])) ? w << 8 | (BYTE)label[i++] : 0; +5063:Middlewares/Third_Party/FatFs/src/ff.c **** } +5064:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 +5065:Middlewares/Third_Party/FatFs/src/ff.c **** w = ff_convert(ff_wtoupper(ff_convert(w, 1)), 0); +5066:Middlewares/Third_Party/FatFs/src/ff.c **** #else +5067:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsLower(w)) w -= 0x20; /* To upper ASCII characters */ +5068:Middlewares/Third_Party/FatFs/src/ff.c **** #ifdef _EXCVT +5069:Middlewares/Third_Party/FatFs/src/ff.c **** if (w >= 0x80) w = ExCvt[w - 0x80]; /* To upper extended characters (SBCS cfg) */ +5070:Middlewares/Third_Party/FatFs/src/ff.c **** #else +5071:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_DF1S && w >= 0x80) w = 0; /* Reject extended characters (ASCII cfg) */ +5072:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5073:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5074:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5075:Middlewares/Third_Party/FatFs/src/ff.c **** if (w == 0 || chk_chr(badchr, w) || j >= (UINT)((w >= 0x100) ? 10 : 11)) { /* Reject invalid ch +5076:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, FR_INVALID_NAME); +5077:Middlewares/Third_Party/FatFs/src/ff.c **** } +5078:Middlewares/Third_Party/FatFs/src/ff.c **** if (w >= 0x100) dirvn[j++] = (BYTE)(w >> 8); +5079:Middlewares/Third_Party/FatFs/src/ff.c **** dirvn[j++] = (BYTE)w; +5080:Middlewares/Third_Party/FatFs/src/ff.c **** } while (i < slen); +5081:Middlewares/Third_Party/FatFs/src/ff.c **** while (j < 11) dirvn[j++] = ' '; /* Fill remaining name field */ +5082:Middlewares/Third_Party/FatFs/src/ff.c **** if (dirvn[0] == DDEM) LEAVE_FF(fs, FR_INVALID_NAME); /* Reject illegal name (heading DDEM) */ +5083:Middlewares/Third_Party/FatFs/src/ff.c **** } +5084:Middlewares/Third_Party/FatFs/src/ff.c **** } +5085:Middlewares/Third_Party/FatFs/src/ff.c **** +5086:Middlewares/Third_Party/FatFs/src/ff.c **** /* Set volume label */ +5087:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.sclust = 0; /* Open root directory */ +5088:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(&dj, 0); +5089:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +5090:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_read(&dj, 1); /* Get volume label entry */ +5091:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +5092:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT && fs->fs_type == FS_EXFAT) { +5093:Middlewares/Third_Party/FatFs/src/ff.c **** dj.dir[XDIR_NumLabel] = (BYTE)(slen / 2); /* Change the volume label */ +5094:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dj.dir + XDIR_Label, dirvn, slen); +5095:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5096:Middlewares/Third_Party/FatFs/src/ff.c **** if (slen) { + ARM GAS /tmp/cc5lWXRL.s page 122 + + +5097:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dj.dir, dirvn, 11); /* Change the volume label */ +5098:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5099:Middlewares/Third_Party/FatFs/src/ff.c **** dj.dir[DIR_Name] = DDEM; /* Remove the volume label */ +5100:Middlewares/Third_Party/FatFs/src/ff.c **** } +5101:Middlewares/Third_Party/FatFs/src/ff.c **** } +5102:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +5103:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); +5104:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* No volume label entry is found or error */ +5105:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { +5106:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; +5107:Middlewares/Third_Party/FatFs/src/ff.c **** if (slen) { /* Create a volume label entry */ +5108:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_alloc(&dj, 1); /* Allocate an entry */ +5109:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +5110:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dj.dir, 0, SZDIRE); /* Clear the entry */ +5111:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT && fs->fs_type == FS_EXFAT) { +5112:Middlewares/Third_Party/FatFs/src/ff.c **** dj.dir[XDIR_Type] = 0x83; /* Create 83 entry */ +5113:Middlewares/Third_Party/FatFs/src/ff.c **** dj.dir[XDIR_NumLabel] = (BYTE)(slen / 2); +5114:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dj.dir + XDIR_Label, dirvn, slen); +5115:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5116:Middlewares/Third_Party/FatFs/src/ff.c **** dj.dir[DIR_Attr] = AM_VOL; /* Create volume label entry */ +5117:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dj.dir, dirvn, 11); +5118:Middlewares/Third_Party/FatFs/src/ff.c **** } +5119:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; +5120:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); +5121:Middlewares/Third_Party/FatFs/src/ff.c **** } +5122:Middlewares/Third_Party/FatFs/src/ff.c **** } +5123:Middlewares/Third_Party/FatFs/src/ff.c **** } +5124:Middlewares/Third_Party/FatFs/src/ff.c **** } +5125:Middlewares/Third_Party/FatFs/src/ff.c **** } +5126:Middlewares/Third_Party/FatFs/src/ff.c **** +5127:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +5128:Middlewares/Third_Party/FatFs/src/ff.c **** } +5129:Middlewares/Third_Party/FatFs/src/ff.c **** +5130:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* !_FS_READONLY */ +5131:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_LABEL */ +5132:Middlewares/Third_Party/FatFs/src/ff.c **** +5133:Middlewares/Third_Party/FatFs/src/ff.c **** +5134:Middlewares/Third_Party/FatFs/src/ff.c **** +5135:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_EXPAND && !_FS_READONLY +5136:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5137:Middlewares/Third_Party/FatFs/src/ff.c **** /* Allocate a Contiguous Blocks to the File */ +5138:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5139:Middlewares/Third_Party/FatFs/src/ff.c **** +5140:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_expand ( +5141:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp, /* Pointer to the file object */ +5142:Middlewares/Third_Party/FatFs/src/ff.c **** FSIZE_t fsz, /* File size to be expanded to */ +5143:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE opt /* Operation mode 0:Find and prepare or 1:Find and allocate */ +5144:Middlewares/Third_Party/FatFs/src/ff.c **** ) +5145:Middlewares/Third_Party/FatFs/src/ff.c **** { +5146:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +5147:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +5148:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD n, clst, stcl, scl, ncl, tcl, lclst; +5149:Middlewares/Third_Party/FatFs/src/ff.c **** +5150:Middlewares/Third_Party/FatFs/src/ff.c **** +5151:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ +5152:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); +5153:Middlewares/Third_Party/FatFs/src/ff.c **** if (fsz == 0 || fp->obj.objsize != 0 || !(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); + ARM GAS /tmp/cc5lWXRL.s page 123 + + +5154:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +5155:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type != FS_EXFAT && fsz >= 0x100000000) LEAVE_FF(fs, FR_DENIED); /* Check if in size li +5156:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5157:Middlewares/Third_Party/FatFs/src/ff.c **** n = (DWORD)fs->csize * SS(fs); /* Cluster size */ +5158:Middlewares/Third_Party/FatFs/src/ff.c **** tcl = (DWORD)(fsz / n) + ((fsz & (n - 1)) ? 1 : 0); /* Number of clusters required */ +5159:Middlewares/Third_Party/FatFs/src/ff.c **** stcl = fs->last_clst; lclst = 0; +5160:Middlewares/Third_Party/FatFs/src/ff.c **** if (stcl < 2 || stcl >= fs->n_fatent) stcl = 2; +5161:Middlewares/Third_Party/FatFs/src/ff.c **** +5162:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +5163:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_EXFAT) { +5164:Middlewares/Third_Party/FatFs/src/ff.c **** scl = find_bitmap(fs, stcl, tcl); /* Find a contiguous cluster block */ +5165:Middlewares/Third_Party/FatFs/src/ff.c **** if (scl == 0) res = FR_DENIED; /* No contiguous cluster block was found */ +5166:Middlewares/Third_Party/FatFs/src/ff.c **** if (scl == 0xFFFFFFFF) res = FR_DISK_ERR; +5167:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* A contiguous free area is found */ +5168:Middlewares/Third_Party/FatFs/src/ff.c **** if (opt) { /* Allocate it now */ +5169:Middlewares/Third_Party/FatFs/src/ff.c **** res = change_bitmap(fs, scl, tcl, 1); /* Mark the cluster block 'in use' */ +5170:Middlewares/Third_Party/FatFs/src/ff.c **** lclst = scl + tcl - 1; +5171:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Set it as suggested point for next allocation */ +5172:Middlewares/Third_Party/FatFs/src/ff.c **** lclst = scl - 1; +5173:Middlewares/Third_Party/FatFs/src/ff.c **** } +5174:Middlewares/Third_Party/FatFs/src/ff.c **** } +5175:Middlewares/Third_Party/FatFs/src/ff.c **** } else +5176:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5177:Middlewares/Third_Party/FatFs/src/ff.c **** { +5178:Middlewares/Third_Party/FatFs/src/ff.c **** scl = clst = stcl; ncl = 0; +5179:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { /* Find a contiguous cluster block */ +5180:Middlewares/Third_Party/FatFs/src/ff.c **** n = get_fat(&fp->obj, clst); +5181:Middlewares/Third_Party/FatFs/src/ff.c **** if (++clst >= fs->n_fatent) clst = 2; +5182:Middlewares/Third_Party/FatFs/src/ff.c **** if (n == 1) { res = FR_INT_ERR; break; } +5183:Middlewares/Third_Party/FatFs/src/ff.c **** if (n == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } +5184:Middlewares/Third_Party/FatFs/src/ff.c **** if (n == 0) { /* Is it a free cluster? */ +5185:Middlewares/Third_Party/FatFs/src/ff.c **** if (++ncl == tcl) break; /* Break if a contiguous cluster block is found */ +5186:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5187:Middlewares/Third_Party/FatFs/src/ff.c **** scl = clst; ncl = 0; /* Not a free cluster */ +5188:Middlewares/Third_Party/FatFs/src/ff.c **** } +5189:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == stcl) { res = FR_DENIED; break; } /* No contiguous cluster? */ +5190:Middlewares/Third_Party/FatFs/src/ff.c **** } +5191:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* A contiguous free area is found */ +5192:Middlewares/Third_Party/FatFs/src/ff.c **** if (opt) { /* Allocate it now */ +5193:Middlewares/Third_Party/FatFs/src/ff.c **** for (clst = scl, n = tcl; n; clst++, n--) { /* Create a cluster chain on the FAT */ +5194:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, clst, (n == 1) ? 0xFFFFFFFF : clst + 1); +5195:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; +5196:Middlewares/Third_Party/FatFs/src/ff.c **** lclst = clst; +5197:Middlewares/Third_Party/FatFs/src/ff.c **** } +5198:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Set it as suggested point for next allocation */ +5199:Middlewares/Third_Party/FatFs/src/ff.c **** lclst = scl - 1; +5200:Middlewares/Third_Party/FatFs/src/ff.c **** } +5201:Middlewares/Third_Party/FatFs/src/ff.c **** } +5202:Middlewares/Third_Party/FatFs/src/ff.c **** } +5203:Middlewares/Third_Party/FatFs/src/ff.c **** +5204:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { +5205:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = lclst; /* Set suggested start cluster to start next */ +5206:Middlewares/Third_Party/FatFs/src/ff.c **** if (opt) { /* Is it allocated now? */ +5207:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = scl; /* Update object allocation information */ +5208:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = fsz; +5209:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT) fp->obj.stat = 2; /* Set status 'contiguous chain' */ +5210:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_MODIFIED; + ARM GAS /tmp/cc5lWXRL.s page 124 + + +5211:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->free_clst <= fs->n_fatent - 2) { /* Update FSINFO */ +5212:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst -= tcl; +5213:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; +5214:Middlewares/Third_Party/FatFs/src/ff.c **** } +5215:Middlewares/Third_Party/FatFs/src/ff.c **** } +5216:Middlewares/Third_Party/FatFs/src/ff.c **** } +5217:Middlewares/Third_Party/FatFs/src/ff.c **** +5218:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); +5219:Middlewares/Third_Party/FatFs/src/ff.c **** } +5220:Middlewares/Third_Party/FatFs/src/ff.c **** +5221:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_EXPAND && !_FS_READONLY */ +5222:Middlewares/Third_Party/FatFs/src/ff.c **** +5223:Middlewares/Third_Party/FatFs/src/ff.c **** +5224:Middlewares/Third_Party/FatFs/src/ff.c **** +5225:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_FORWARD +5226:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5227:Middlewares/Third_Party/FatFs/src/ff.c **** /* Forward data to the stream directly */ +5228:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5229:Middlewares/Third_Party/FatFs/src/ff.c **** +5230:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_forward ( +5231:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp, /* Pointer to the file object */ +5232:Middlewares/Third_Party/FatFs/src/ff.c **** UINT (*func)(const BYTE*,UINT), /* Pointer to the streaming function */ +5233:Middlewares/Third_Party/FatFs/src/ff.c **** UINT btf, /* Number of bytes to forward */ +5234:Middlewares/Third_Party/FatFs/src/ff.c **** UINT* bf /* Pointer to number of bytes forwarded */ +5235:Middlewares/Third_Party/FatFs/src/ff.c **** ) +5236:Middlewares/Third_Party/FatFs/src/ff.c **** { +5237:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; +5238:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; +5239:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, sect; +5240:Middlewares/Third_Party/FatFs/src/ff.c **** FSIZE_t remain; +5241:Middlewares/Third_Party/FatFs/src/ff.c **** UINT rcnt, csect; +5242:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *dbuf; +5243:Middlewares/Third_Party/FatFs/src/ff.c **** +5244:Middlewares/Third_Party/FatFs/src/ff.c **** +5245:Middlewares/Third_Party/FatFs/src/ff.c **** *bf = 0; /* Clear transfer byte counter */ +5246:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ +5247:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); +5248:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ +5249:Middlewares/Third_Party/FatFs/src/ff.c **** +5250:Middlewares/Third_Party/FatFs/src/ff.c **** remain = fp->obj.objsize - fp->fptr; +5251:Middlewares/Third_Party/FatFs/src/ff.c **** if (btf > remain) btf = (UINT)remain; /* Truncate btf by remaining bytes */ +5252:Middlewares/Third_Party/FatFs/src/ff.c **** +5253:Middlewares/Third_Party/FatFs/src/ff.c **** for ( ; btf && (*func)(0, 0); /* Repeat until all data transferred or stream goes busy */ +5254:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr += rcnt, *bf += rcnt, btf -= rcnt) { +5255:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ +5256:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ +5257:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ +5258:Middlewares/Third_Party/FatFs/src/ff.c **** clst = (fp->fptr == 0) ? /* On the top of the file? */ +5259:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust : get_fat(&fp->obj, fp->clust); +5260:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1) ABORT(fs, FR_INT_ERR); +5261:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); +5262:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ +5263:Middlewares/Third_Party/FatFs/src/ff.c **** } +5264:Middlewares/Third_Party/FatFs/src/ff.c **** } +5265:Middlewares/Third_Party/FatFs/src/ff.c **** sect = clust2sect(fs, fp->clust); /* Get current data sector */ +5266:Middlewares/Third_Party/FatFs/src/ff.c **** if (!sect) ABORT(fs, FR_INT_ERR); +5267:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + ARM GAS /tmp/cc5lWXRL.s page 125 + + +5268:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY +5269:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, sect) != FR_OK) ABORT(fs, FR_DISK_ERR); /* Move sector window to the file dat +5270:Middlewares/Third_Party/FatFs/src/ff.c **** dbuf = fs->win; +5271:Middlewares/Third_Party/FatFs/src/ff.c **** #else +5272:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->sect != sect) { /* Fill sector cache with file data */ +5273:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +5274:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->flag & FA_DIRTY) { /* Write-back dirty sector cache */ +5275:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); +5276:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; +5277:Middlewares/Third_Party/FatFs/src/ff.c **** } +5278:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5279:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); +5280:Middlewares/Third_Party/FatFs/src/ff.c **** } +5281:Middlewares/Third_Party/FatFs/src/ff.c **** dbuf = fp->buf; +5282:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5283:Middlewares/Third_Party/FatFs/src/ff.c **** fp->sect = sect; +5284:Middlewares/Third_Party/FatFs/src/ff.c **** rcnt = SS(fs) - (UINT)fp->fptr % SS(fs); /* Number of bytes left in the sector */ +5285:Middlewares/Third_Party/FatFs/src/ff.c **** if (rcnt > btf) rcnt = btf; /* Clip it by btr if needed */ +5286:Middlewares/Third_Party/FatFs/src/ff.c **** rcnt = (*func)(dbuf + ((UINT)fp->fptr % SS(fs)), rcnt); /* Forward the file data */ +5287:Middlewares/Third_Party/FatFs/src/ff.c **** if (!rcnt) ABORT(fs, FR_INT_ERR); +5288:Middlewares/Third_Party/FatFs/src/ff.c **** } +5289:Middlewares/Third_Party/FatFs/src/ff.c **** +5290:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, FR_OK); +5291:Middlewares/Third_Party/FatFs/src/ff.c **** } +5292:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_FORWARD */ +5293:Middlewares/Third_Party/FatFs/src/ff.c **** +5294:Middlewares/Third_Party/FatFs/src/ff.c **** +5295:Middlewares/Third_Party/FatFs/src/ff.c **** +5296:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_MKFS && !_FS_READONLY +5297:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5298:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create an FAT/exFAT volume */ +5299:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5300:Middlewares/Third_Party/FatFs/src/ff.c **** +5301:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_mkfs ( +5302:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* path, /* Logical drive number */ +5303:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE opt, /* Format option */ +5304:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD au, /* Size of allocation unit (cluster) [byte] */ +5305:Middlewares/Third_Party/FatFs/src/ff.c **** void* work, /* Pointer to working buffer */ +5306:Middlewares/Third_Party/FatFs/src/ff.c **** UINT len /* Size of working buffer */ +5307:Middlewares/Third_Party/FatFs/src/ff.c **** ) +5308:Middlewares/Third_Party/FatFs/src/ff.c **** { +5309:Middlewares/Third_Party/FatFs/src/ff.c **** const UINT n_fats = 1; /* Number of FATs for FAT12/16/32 volume (1 or 2) */ +5310:Middlewares/Third_Party/FatFs/src/ff.c **** const UINT n_rootdir = 512; /* Number of root directory entries for FAT12/16 volume */ +5311:Middlewares/Third_Party/FatFs/src/ff.c **** static const WORD cst[] = {1, 4, 16, 64, 256, 512, 0}; /* Cluster size boundary for FAT12/16 volum +5312:Middlewares/Third_Party/FatFs/src/ff.c **** static const WORD cst32[] = {1, 2, 4, 8, 16, 32, 0}; /* Cluster size boundary for FAT32 volume (12 +5313:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE fmt, sys, *buf, *pte, pdrv, part; +5314:Middlewares/Third_Party/FatFs/src/ff.c **** WORD ss; +5315:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD szb_buf, sz_buf, sz_blk, n_clst, pau, sect, nsect, n; +5316:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD b_vol, b_fat, b_data; /* Base LBA for volume, fat, data */ +5317:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD sz_vol, sz_rsv, sz_fat, sz_dir; /* Size for volume, fat, dir, data */ +5318:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; +5319:Middlewares/Third_Party/FatFs/src/ff.c **** int vol; +5320:Middlewares/Third_Party/FatFs/src/ff.c **** DSTATUS stat; +5321:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_TRIM || _FS_EXFAT +5322:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD tbl[3]; +5323:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5324:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 126 + + +5325:Middlewares/Third_Party/FatFs/src/ff.c **** +5326:Middlewares/Third_Party/FatFs/src/ff.c **** /* Check mounted drive and clear work area */ +5327:Middlewares/Third_Party/FatFs/src/ff.c **** vol = get_ldnumber(&path); /* Get target logical drive */ +5328:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; +5329:Middlewares/Third_Party/FatFs/src/ff.c **** if (FatFs[vol]) FatFs[vol]->fs_type = 0; /* Clear the volume */ +5330:Middlewares/Third_Party/FatFs/src/ff.c **** pdrv = LD2PD(vol); /* Physical drive */ +5331:Middlewares/Third_Party/FatFs/src/ff.c **** part = LD2PT(vol); /* Partition (0:create as new, 1-4:get from partition table) */ +5332:Middlewares/Third_Party/FatFs/src/ff.c **** +5333:Middlewares/Third_Party/FatFs/src/ff.c **** /* Check physical drive status */ +5334:Middlewares/Third_Party/FatFs/src/ff.c **** stat = disk_initialize(pdrv); +5335:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_NOINIT) return FR_NOT_READY; +5336:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; +5337:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_ioctl(pdrv, GET_BLOCK_SIZE, &sz_blk) != RES_OK || !sz_blk || sz_blk > 32768 || (sz_blk & +5338:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ +5339:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_ioctl(pdrv, GET_SECTOR_SIZE, &ss) != RES_OK) return FR_DISK_ERR; +5340:Middlewares/Third_Party/FatFs/src/ff.c **** if (ss > _MAX_SS || ss < _MIN_SS || (ss & (ss - 1))) return FR_DISK_ERR; +5341:Middlewares/Third_Party/FatFs/src/ff.c **** #else +5342:Middlewares/Third_Party/FatFs/src/ff.c **** ss = _MAX_SS; +5343:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5344:Middlewares/Third_Party/FatFs/src/ff.c **** if ((au != 0 && au < ss) || au > 0x1000000 || (au & (au - 1))) return FR_INVALID_PARAMETER; /* Che +5345:Middlewares/Third_Party/FatFs/src/ff.c **** au /= ss; /* Cluster size in unit of sector */ +5346:Middlewares/Third_Party/FatFs/src/ff.c **** +5347:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get working buffer */ +5348:Middlewares/Third_Party/FatFs/src/ff.c **** buf = (BYTE*)work; /* Working buffer */ +5349:Middlewares/Third_Party/FatFs/src/ff.c **** sz_buf = len / ss; /* Size of working buffer (sector) */ +5350:Middlewares/Third_Party/FatFs/src/ff.c **** szb_buf = sz_buf * ss; /* Size of working buffer (byte) */ +5351:Middlewares/Third_Party/FatFs/src/ff.c **** if (!szb_buf) return FR_MKFS_ABORTED; +5352:Middlewares/Third_Party/FatFs/src/ff.c **** +5353:Middlewares/Third_Party/FatFs/src/ff.c **** /* Determine where the volume to be located (b_vol, sz_vol) */ +5354:Middlewares/Third_Party/FatFs/src/ff.c **** if (_MULTI_PARTITION && part != 0) { +5355:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get partition information from partition table in the MBR */ +5356:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Load MBR */ +5357:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(buf + BS_55AA) != 0xAA55) return FR_MKFS_ABORTED; /* Check if MBR is valid */ +5358:Middlewares/Third_Party/FatFs/src/ff.c **** pte = buf + (MBR_Table + (part - 1) * SZ_PTE); +5359:Middlewares/Third_Party/FatFs/src/ff.c **** if (!pte[PTE_System]) return FR_MKFS_ABORTED; /* No partition? */ +5360:Middlewares/Third_Party/FatFs/src/ff.c **** b_vol = ld_dword(pte + PTE_StLba); /* Get volume start sector */ +5361:Middlewares/Third_Party/FatFs/src/ff.c **** sz_vol = ld_dword(pte + PTE_SizLba); /* Get volume size */ +5362:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5363:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create a single-partition in this function */ +5364:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_vol) != RES_OK) return FR_DISK_ERR; +5365:Middlewares/Third_Party/FatFs/src/ff.c **** b_vol = (opt & FM_SFD) ? 0 : 63; /* Volume start sector */ +5366:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < b_vol) return FR_MKFS_ABORTED; +5367:Middlewares/Third_Party/FatFs/src/ff.c **** sz_vol -= b_vol; /* Volume size */ +5368:Middlewares/Third_Party/FatFs/src/ff.c **** } +5369:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < 128) return FR_MKFS_ABORTED; /* Check if volume size is >=128s */ +5370:Middlewares/Third_Party/FatFs/src/ff.c **** +5371:Middlewares/Third_Party/FatFs/src/ff.c **** /* Pre-determine the FAT type */ +5372:Middlewares/Third_Party/FatFs/src/ff.c **** do { +5373:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT && (opt & FM_EXFAT)) { /* exFAT possible? */ +5374:Middlewares/Third_Party/FatFs/src/ff.c **** if ((opt & FM_ANY) == FM_EXFAT || sz_vol >= 0x4000000 || au > 128) { /* exFAT only, vol >= 64Ms +5375:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_EXFAT; break; +5376:Middlewares/Third_Party/FatFs/src/ff.c **** } +5377:Middlewares/Third_Party/FatFs/src/ff.c **** } +5378:Middlewares/Third_Party/FatFs/src/ff.c **** if (au > 128) return FR_INVALID_PARAMETER; /* Too large au for FAT/FAT32 */ +5379:Middlewares/Third_Party/FatFs/src/ff.c **** if (opt & FM_FAT32) { /* FAT32 possible? */ +5380:Middlewares/Third_Party/FatFs/src/ff.c **** if ((opt & FM_ANY) == FM_FAT32 || !(opt & FM_FAT)) { /* FAT32 only or no-FAT? */ +5381:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; break; + ARM GAS /tmp/cc5lWXRL.s page 127 + + +5382:Middlewares/Third_Party/FatFs/src/ff.c **** } +5383:Middlewares/Third_Party/FatFs/src/ff.c **** } +5384:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(opt & FM_FAT)) return FR_INVALID_PARAMETER; /* no-FAT? */ +5385:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT16; +5386:Middlewares/Third_Party/FatFs/src/ff.c **** } while (0); +5387:Middlewares/Third_Party/FatFs/src/ff.c **** +5388:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT +5389:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_EXFAT) { /* Create an exFAT volume */ +5390:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD szb_bit, szb_case, sum, nb, cl; +5391:Middlewares/Third_Party/FatFs/src/ff.c **** WCHAR ch, si; +5392:Middlewares/Third_Party/FatFs/src/ff.c **** UINT j, st; +5393:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE b; +5394:Middlewares/Third_Party/FatFs/src/ff.c **** +5395:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < 0x1000) return FR_MKFS_ABORTED; /* Too small volume? */ +5396:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_TRIM +5397:Middlewares/Third_Party/FatFs/src/ff.c **** tbl[0] = b_vol; tbl[1] = b_vol + sz_vol - 1; /* Inform the device the volume area may be erased * +5398:Middlewares/Third_Party/FatFs/src/ff.c **** disk_ioctl(pdrv, CTRL_TRIM, tbl); +5399:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5400:Middlewares/Third_Party/FatFs/src/ff.c **** /* Determine FAT location, data location and number of clusters */ +5401:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au) { /* au auto-selection */ +5402:Middlewares/Third_Party/FatFs/src/ff.c **** au = 8; +5403:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol >= 0x80000) au = 64; /* >= 512Ks */ +5404:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol >= 0x4000000) au = 256; /* >= 64Ms */ +5405:Middlewares/Third_Party/FatFs/src/ff.c **** } +5406:Middlewares/Third_Party/FatFs/src/ff.c **** b_fat = b_vol + 32; /* FAT start at offset 32 */ +5407:Middlewares/Third_Party/FatFs/src/ff.c **** sz_fat = ((sz_vol / au + 2) * 4 + ss - 1) / ss; /* Number of FAT sectors */ +5408:Middlewares/Third_Party/FatFs/src/ff.c **** b_data = (b_fat + sz_fat + sz_blk - 1) & ~(sz_blk - 1); /* Align data area to the erase block bou +5409:Middlewares/Third_Party/FatFs/src/ff.c **** if (b_data >= sz_vol / 2) return FR_MKFS_ABORTED; /* Too small volume? */ +5410:Middlewares/Third_Party/FatFs/src/ff.c **** n_clst = (sz_vol - (b_data - b_vol)) / au; /* Number of clusters */ +5411:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst <16) return FR_MKFS_ABORTED; /* Too few clusters? */ +5412:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst > MAX_EXFAT) return FR_MKFS_ABORTED; /* Too many clusters? */ +5413:Middlewares/Third_Party/FatFs/src/ff.c **** +5414:Middlewares/Third_Party/FatFs/src/ff.c **** szb_bit = (n_clst + 7) / 8; /* Size of allocation bitmap */ +5415:Middlewares/Third_Party/FatFs/src/ff.c **** tbl[0] = (szb_bit + au * ss - 1) / (au * ss); /* Number of allocation bitmap clusters */ +5416:Middlewares/Third_Party/FatFs/src/ff.c **** +5417:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create a compressed up-case table */ +5418:Middlewares/Third_Party/FatFs/src/ff.c **** sect = b_data + au * tbl[0]; /* Table start sector */ +5419:Middlewares/Third_Party/FatFs/src/ff.c **** sum = 0; /* Table checksum to be stored in the 82 entry */ +5420:Middlewares/Third_Party/FatFs/src/ff.c **** st = si = i = j = szb_case = 0; +5421:Middlewares/Third_Party/FatFs/src/ff.c **** do { +5422:Middlewares/Third_Party/FatFs/src/ff.c **** switch (st) { +5423:Middlewares/Third_Party/FatFs/src/ff.c **** case 0: +5424:Middlewares/Third_Party/FatFs/src/ff.c **** ch = ff_wtoupper(si); /* Get an up-case char */ +5425:Middlewares/Third_Party/FatFs/src/ff.c **** if (ch != si) { +5426:Middlewares/Third_Party/FatFs/src/ff.c **** si++; break; /* Store the up-case char if exist */ +5427:Middlewares/Third_Party/FatFs/src/ff.c **** } +5428:Middlewares/Third_Party/FatFs/src/ff.c **** for (j = 1; (WCHAR)(si + j) && (WCHAR)(si + j) == ff_wtoupper((WCHAR)(si + j)); j++) ; /* Get r +5429:Middlewares/Third_Party/FatFs/src/ff.c **** if (j >= 128) { +5430:Middlewares/Third_Party/FatFs/src/ff.c **** ch = 0xFFFF; st = 2; break; /* Compress the no-case block if run is >= 128 */ +5431:Middlewares/Third_Party/FatFs/src/ff.c **** } +5432:Middlewares/Third_Party/FatFs/src/ff.c **** st = 1; /* Do not compress short run */ +5433:Middlewares/Third_Party/FatFs/src/ff.c **** /* go to next case */ +5434:Middlewares/Third_Party/FatFs/src/ff.c **** case 1: +5435:Middlewares/Third_Party/FatFs/src/ff.c **** ch = si++; /* Fill the short run */ +5436:Middlewares/Third_Party/FatFs/src/ff.c **** if (--j == 0) st = 0; +5437:Middlewares/Third_Party/FatFs/src/ff.c **** break; +5438:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 128 + + +5439:Middlewares/Third_Party/FatFs/src/ff.c **** default: +5440:Middlewares/Third_Party/FatFs/src/ff.c **** ch = (WCHAR)j; si += j; /* Number of chars to skip */ +5441:Middlewares/Third_Party/FatFs/src/ff.c **** st = 0; +5442:Middlewares/Third_Party/FatFs/src/ff.c **** } +5443:Middlewares/Third_Party/FatFs/src/ff.c **** sum = xsum32(buf[i + 0] = (BYTE)ch, sum); /* Put it into the write buffer */ +5444:Middlewares/Third_Party/FatFs/src/ff.c **** sum = xsum32(buf[i + 1] = (BYTE)(ch >> 8), sum); +5445:Middlewares/Third_Party/FatFs/src/ff.c **** i += 2; szb_case += 2; +5446:Middlewares/Third_Party/FatFs/src/ff.c **** if (!si || i == szb_buf) { /* Write buffered data when buffer full or end of process */ +5447:Middlewares/Third_Party/FatFs/src/ff.c **** n = (i + ss - 1) / ss; +5448:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; +5449:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; i = 0; +5450:Middlewares/Third_Party/FatFs/src/ff.c **** } +5451:Middlewares/Third_Party/FatFs/src/ff.c **** } while (si); +5452:Middlewares/Third_Party/FatFs/src/ff.c **** tbl[1] = (szb_case + au * ss - 1) / (au * ss); /* Number of up-case table clusters */ +5453:Middlewares/Third_Party/FatFs/src/ff.c **** tbl[2] = 1; /* Number of root dir clusters */ +5454:Middlewares/Third_Party/FatFs/src/ff.c **** +5455:Middlewares/Third_Party/FatFs/src/ff.c **** /* Initialize the allocation bitmap */ +5456:Middlewares/Third_Party/FatFs/src/ff.c **** sect = b_data; nsect = (szb_bit + ss - 1) / ss; /* Start of bitmap and number of sectors */ +5457:Middlewares/Third_Party/FatFs/src/ff.c **** nb = tbl[0] + tbl[1] + tbl[2]; /* Number of clusters in-use by system */ +5458:Middlewares/Third_Party/FatFs/src/ff.c **** do { +5459:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, szb_buf); +5460:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; nb >= 8 && i < szb_buf; buf[i++] = 0xFF, nb -= 8) ; +5461:Middlewares/Third_Party/FatFs/src/ff.c **** for (b = 1; nb && i < szb_buf; buf[i] |= b, b <<= 1, nb--) ; +5462:Middlewares/Third_Party/FatFs/src/ff.c **** n = (nsect > sz_buf) ? sz_buf : nsect; /* Write the buffered data */ +5463:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; +5464:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; nsect -= n; +5465:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); +5466:Middlewares/Third_Party/FatFs/src/ff.c **** +5467:Middlewares/Third_Party/FatFs/src/ff.c **** /* Initialize the FAT */ +5468:Middlewares/Third_Party/FatFs/src/ff.c **** sect = b_fat; nsect = sz_fat; /* Start of FAT and number of FAT sectors */ +5469:Middlewares/Third_Party/FatFs/src/ff.c **** j = nb = cl = 0; +5470:Middlewares/Third_Party/FatFs/src/ff.c **** do { +5471:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, szb_buf); i = 0; /* Clear work area and reset write index */ +5472:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl == 0) { /* Set entry 0 and 1 */ +5473:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + i, 0xFFFFFFF8); i += 4; cl++; +5474:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + i, 0xFFFFFFFF); i += 4; cl++; +5475:Middlewares/Third_Party/FatFs/src/ff.c **** } +5476:Middlewares/Third_Party/FatFs/src/ff.c **** do { /* Create chains of bitmap, up-case and root dir */ +5477:Middlewares/Third_Party/FatFs/src/ff.c **** while (nb && i < szb_buf) { /* Create a chain */ +5478:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + i, (nb > 1) ? cl + 1 : 0xFFFFFFFF); +5479:Middlewares/Third_Party/FatFs/src/ff.c **** i += 4; cl++; nb--; +5480:Middlewares/Third_Party/FatFs/src/ff.c **** } +5481:Middlewares/Third_Party/FatFs/src/ff.c **** if (!nb && j < 3) nb = tbl[j++]; /* Next chain */ +5482:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nb && i < szb_buf); +5483:Middlewares/Third_Party/FatFs/src/ff.c **** n = (nsect > sz_buf) ? sz_buf : nsect; /* Write the buffered data */ +5484:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; +5485:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; nsect -= n; +5486:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); +5487:Middlewares/Third_Party/FatFs/src/ff.c **** +5488:Middlewares/Third_Party/FatFs/src/ff.c **** /* Initialize the root directory */ +5489:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, szb_buf); +5490:Middlewares/Third_Party/FatFs/src/ff.c **** buf[SZDIRE * 0 + 0] = 0x83; /* 83 entry (volume label) */ +5491:Middlewares/Third_Party/FatFs/src/ff.c **** buf[SZDIRE * 1 + 0] = 0x81; /* 81 entry (allocation bitmap) */ +5492:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + SZDIRE * 1 + 20, 2); +5493:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + SZDIRE * 1 + 24, szb_bit); +5494:Middlewares/Third_Party/FatFs/src/ff.c **** buf[SZDIRE * 2 + 0] = 0x82; /* 82 entry (up-case table) */ +5495:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + SZDIRE * 2 + 4, sum); + ARM GAS /tmp/cc5lWXRL.s page 129 + + +5496:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + SZDIRE * 2 + 20, 2 + tbl[0]); +5497:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + SZDIRE * 2 + 24, szb_case); +5498:Middlewares/Third_Party/FatFs/src/ff.c **** sect = b_data + au * (tbl[0] + tbl[1]); nsect = au; /* Start of the root directory and number of +5499:Middlewares/Third_Party/FatFs/src/ff.c **** do { /* Fill root directory sectors */ +5500:Middlewares/Third_Party/FatFs/src/ff.c **** n = (nsect > sz_buf) ? sz_buf : nsect; +5501:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect, n) != RES_OK) return FR_DISK_ERR; +5502:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); +5503:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; nsect -= n; +5504:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); +5505:Middlewares/Third_Party/FatFs/src/ff.c **** +5506:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create two set of the exFAT VBR blocks */ +5507:Middlewares/Third_Party/FatFs/src/ff.c **** sect = b_vol; +5508:Middlewares/Third_Party/FatFs/src/ff.c **** for (n = 0; n < 2; n++) { +5509:Middlewares/Third_Party/FatFs/src/ff.c **** /* Main record (+0) */ +5510:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); +5511:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf + BS_JmpBoot, "\xEB\x76\x90" "EXFAT ", 11); /* Boot jump code (x86), OEM name */ +5512:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_VolOfsEx, b_vol); /* Volume offset in the physical drive [sector] */ +5513:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_TotSecEx, sz_vol); /* Volume size [sector] */ +5514:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_FatOfsEx, b_fat - b_vol); /* FAT offset [sector] */ +5515:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_FatSzEx, sz_fat); /* FAT size [sector] */ +5516:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_DataOfsEx, b_data - b_vol); /* Data offset [sector] */ +5517:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_NumClusEx, n_clst); /* Number of clusters */ +5518:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_RootClusEx, 2 + tbl[0] + tbl[1]); /* Root dir cluster # */ +5519:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_VolIDEx, GET_FATTIME()); /* VSN */ +5520:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_FSVerEx, 0x100); /* File system version (1.00) */ +5521:Middlewares/Third_Party/FatFs/src/ff.c **** for (buf[BPB_BytsPerSecEx] = 0, i = ss; i >>= 1; buf[BPB_BytsPerSecEx]++) ; /* Log2 of sector si +5522:Middlewares/Third_Party/FatFs/src/ff.c **** for (buf[BPB_SecPerClusEx] = 0, i = au; i >>= 1; buf[BPB_SecPerClusEx]++) ; /* Log2 of cluster s +5523:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BPB_NumFATsEx] = 1; /* Number of FATs */ +5524:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BPB_DrvNumEx] = 0x80; /* Drive number (for int13) */ +5525:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BS_BootCodeEx, 0xFEEB); /* Boot code (x86) */ +5526:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BS_55AA, 0xAA55); /* Signature (placed here regardless of sector size) */ +5527:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = sum = 0; i < ss; i++) { /* VBR checksum */ +5528:Middlewares/Third_Party/FatFs/src/ff.c **** if (i != BPB_VolFlagEx && i != BPB_VolFlagEx + 1 && i != BPB_PercInUseEx) sum = xsum32(buf[i], +5529:Middlewares/Third_Party/FatFs/src/ff.c **** } +5530:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect++, 1) != RES_OK) return FR_DISK_ERR; +5531:Middlewares/Third_Party/FatFs/src/ff.c **** /* Extended bootstrap record (+1..+8) */ +5532:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); +5533:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + ss - 2, 0xAA55); /* Signature (placed at end of sector) */ +5534:Middlewares/Third_Party/FatFs/src/ff.c **** for (j = 1; j < 9; j++) { +5535:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < ss; sum = xsum32(buf[i++], sum)) ; /* VBR checksum */ +5536:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect++, 1) != RES_OK) return FR_DISK_ERR; +5537:Middlewares/Third_Party/FatFs/src/ff.c **** } +5538:Middlewares/Third_Party/FatFs/src/ff.c **** /* OEM/Reserved record (+9..+10) */ +5539:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); +5540:Middlewares/Third_Party/FatFs/src/ff.c **** for ( ; j < 11; j++) { +5541:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < ss; sum = xsum32(buf[i++], sum)) ; /* VBR checksum */ +5542:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect++, 1) != RES_OK) return FR_DISK_ERR; +5543:Middlewares/Third_Party/FatFs/src/ff.c **** } +5544:Middlewares/Third_Party/FatFs/src/ff.c **** /* Sum record (+11) */ +5545:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < ss; i += 4) st_dword(buf + i, sum); /* Fill with checksum value */ +5546:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect++, 1) != RES_OK) return FR_DISK_ERR; +5547:Middlewares/Third_Party/FatFs/src/ff.c **** } +5548:Middlewares/Third_Party/FatFs/src/ff.c **** +5549:Middlewares/Third_Party/FatFs/src/ff.c **** } else +5550:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _FS_EXFAT */ +5551:Middlewares/Third_Party/FatFs/src/ff.c **** { /* Create an FAT12/16/32 volume */ +5552:Middlewares/Third_Party/FatFs/src/ff.c **** do { + ARM GAS /tmp/cc5lWXRL.s page 130 + + +5553:Middlewares/Third_Party/FatFs/src/ff.c **** pau = au; +5554:Middlewares/Third_Party/FatFs/src/ff.c **** /* Pre-determine number of clusters and FAT sub-type */ +5555:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { /* FAT32 volume */ +5556:Middlewares/Third_Party/FatFs/src/ff.c **** if (!pau) { /* au auto-selection */ +5557:Middlewares/Third_Party/FatFs/src/ff.c **** n = sz_vol / 0x20000; /* Volume size in unit of 128KS */ +5558:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0, pau = 1; cst32[i] && cst32[i] <= n; i++, pau <<= 1) ; /* Get from table */ +5559:Middlewares/Third_Party/FatFs/src/ff.c **** } +5560:Middlewares/Third_Party/FatFs/src/ff.c **** n_clst = sz_vol / pau; /* Number of clusters */ +5561:Middlewares/Third_Party/FatFs/src/ff.c **** sz_fat = (n_clst * 4 + 8 + ss - 1) / ss; /* FAT size [sector] */ +5562:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 32; /* Number of reserved sectors */ +5563:Middlewares/Third_Party/FatFs/src/ff.c **** sz_dir = 0; /* No static directory */ +5564:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst <= MAX_FAT16 || n_clst > MAX_FAT32) return FR_MKFS_ABORTED; +5565:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16 volume */ +5566:Middlewares/Third_Party/FatFs/src/ff.c **** if (!pau) { /* au auto-selection */ +5567:Middlewares/Third_Party/FatFs/src/ff.c **** n = sz_vol / 0x1000; /* Volume size in unit of 4KS */ +5568:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0, pau = 1; cst[i] && cst[i] <= n; i++, pau <<= 1) ; /* Get from table */ +5569:Middlewares/Third_Party/FatFs/src/ff.c **** } +5570:Middlewares/Third_Party/FatFs/src/ff.c **** n_clst = sz_vol / pau; +5571:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst > MAX_FAT12) { +5572:Middlewares/Third_Party/FatFs/src/ff.c **** n = n_clst * 2 + 4; /* FAT size [byte] */ +5573:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5574:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT12; +5575:Middlewares/Third_Party/FatFs/src/ff.c **** n = (n_clst * 3 + 1) / 2 + 3; /* FAT size [byte] */ +5576:Middlewares/Third_Party/FatFs/src/ff.c **** } +5577:Middlewares/Third_Party/FatFs/src/ff.c **** sz_fat = (n + ss - 1) / ss; /* FAT size [sector] */ +5578:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 1; /* Number of reserved sectors */ +5579:Middlewares/Third_Party/FatFs/src/ff.c **** sz_dir = (DWORD)n_rootdir * SZDIRE / ss; /* Rootdir size [sector] */ +5580:Middlewares/Third_Party/FatFs/src/ff.c **** } +5581:Middlewares/Third_Party/FatFs/src/ff.c **** b_fat = b_vol + sz_rsv; /* FAT base */ +5582:Middlewares/Third_Party/FatFs/src/ff.c **** b_data = b_fat + sz_fat * n_fats + sz_dir; /* Data base */ +5583:Middlewares/Third_Party/FatFs/src/ff.c **** +5584:Middlewares/Third_Party/FatFs/src/ff.c **** /* Align data base to erase block boundary (for flash memory media) */ +5585:Middlewares/Third_Party/FatFs/src/ff.c **** n = ((b_data + sz_blk - 1) & ~(sz_blk - 1)) - b_data; /* Next nearest erase block from current d +5586:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { /* FAT32: Move FAT base */ +5587:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv += n; b_fat += n; +5588:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16: Expand FAT size */ +5589:Middlewares/Third_Party/FatFs/src/ff.c **** sz_fat += n / n_fats; +5590:Middlewares/Third_Party/FatFs/src/ff.c **** } +5591:Middlewares/Third_Party/FatFs/src/ff.c **** +5592:Middlewares/Third_Party/FatFs/src/ff.c **** /* Determine number of clusters and final check of validity of the FAT sub-type */ +5593:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < b_data + pau * 16 - b_vol) return FR_MKFS_ABORTED; /* Too small volume */ +5594:Middlewares/Third_Party/FatFs/src/ff.c **** n_clst = (sz_vol - sz_rsv - sz_fat * n_fats - sz_dir) / pau; +5595:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { +5596:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst <= MAX_FAT16) { /* Too few clusters for FAT32 */ +5597:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au && (au = pau / 2) != 0) continue; /* Adjust cluster size and retry */ +5598:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; +5599:Middlewares/Third_Party/FatFs/src/ff.c **** } +5600:Middlewares/Third_Party/FatFs/src/ff.c **** } +5601:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT16) { +5602:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst > MAX_FAT16) { /* Too many clusters for FAT16 */ +5603:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au && (pau * 2) <= 64) { +5604:Middlewares/Third_Party/FatFs/src/ff.c **** au = pau * 2; continue; /* Adjust cluster size and retry */ +5605:Middlewares/Third_Party/FatFs/src/ff.c **** } +5606:Middlewares/Third_Party/FatFs/src/ff.c **** if ((opt & FM_FAT32)) { +5607:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; continue; /* Switch type to FAT32 and retry */ +5608:Middlewares/Third_Party/FatFs/src/ff.c **** } +5609:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au && (au = pau * 2) <= 128) continue; /* Adjust cluster size and retry */ + ARM GAS /tmp/cc5lWXRL.s page 131 + + +5610:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; +5611:Middlewares/Third_Party/FatFs/src/ff.c **** } +5612:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst <= MAX_FAT12) { /* Too few clusters for FAT16 */ +5613:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au && (au = pau * 2) <= 128) continue; /* Adjust cluster size and retry */ +5614:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; +5615:Middlewares/Third_Party/FatFs/src/ff.c **** } +5616:Middlewares/Third_Party/FatFs/src/ff.c **** } +5617:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT12 && n_clst > MAX_FAT12) return FR_MKFS_ABORTED; /* Too many clusters for FAT1 +5618:Middlewares/Third_Party/FatFs/src/ff.c **** +5619:Middlewares/Third_Party/FatFs/src/ff.c **** /* Ok, it is the valid cluster configuration */ +5620:Middlewares/Third_Party/FatFs/src/ff.c **** break; +5621:Middlewares/Third_Party/FatFs/src/ff.c **** } while (1); +5622:Middlewares/Third_Party/FatFs/src/ff.c **** +5623:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_TRIM +5624:Middlewares/Third_Party/FatFs/src/ff.c **** tbl[0] = b_vol; tbl[1] = b_vol + sz_vol - 1; /* Inform the device the volume area can be erased * +5625:Middlewares/Third_Party/FatFs/src/ff.c **** disk_ioctl(pdrv, CTRL_TRIM, tbl); +5626:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5627:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create FAT VBR */ +5628:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); +5629:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf + BS_JmpBoot, "\xEB\xFE\x90" "MSDOS5.0", 11);/* Boot jump code (x86), OEM name */ +5630:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_BytsPerSec, ss); /* Sector size [byte] */ +5631:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BPB_SecPerClus] = (BYTE)pau; /* Cluster size [sector] */ +5632:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_RsvdSecCnt, (WORD)sz_rsv); /* Size of reserved area */ +5633:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BPB_NumFATs] = (BYTE)n_fats; /* Number of FATs */ +5634:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_RootEntCnt, (WORD)((fmt == FS_FAT32) ? 0 : n_rootdir)); /* Number of root direc +5635:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < 0x10000) { +5636:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_TotSec16, (WORD)sz_vol); /* Volume size in 16-bit LBA */ +5637:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5638:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_TotSec32, sz_vol); /* Volume size in 32-bit LBA */ +5639:Middlewares/Third_Party/FatFs/src/ff.c **** } +5640:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BPB_Media] = 0xF8; /* Media descriptor byte */ +5641:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_SecPerTrk, 63); /* Number of sectors per track (for int13) */ +5642:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_NumHeads, 255); /* Number of heads (for int13) */ +5643:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_HiddSec, b_vol); /* Volume offset in the physical drive [sector] */ +5644:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { +5645:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BS_VolID32, GET_FATTIME()); /* VSN */ +5646:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_FATSz32, sz_fat); /* FAT size [sector] */ +5647:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_RootClus32, 2); /* Root directory cluster # (2) */ +5648:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_FSInfo32, 1); /* Offset of FSINFO sector (VBR + 1) */ +5649:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_BkBootSec32, 6); /* Offset of backup VBR (VBR + 6) */ +5650:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BS_DrvNum32] = 0x80; /* Drive number (for int13) */ +5651:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BS_BootSig32] = 0x29; /* Extended boot signature */ +5652:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf + BS_VolLab32, "NO NAME " "FAT32 ", 19); /* Volume label, FAT signature */ +5653:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5654:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BS_VolID, GET_FATTIME()); /* VSN */ +5655:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_FATSz16, (WORD)sz_fat); /* FAT size [sector] */ +5656:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BS_DrvNum] = 0x80; /* Drive number (for int13) */ +5657:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BS_BootSig] = 0x29; /* Extended boot signature */ +5658:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf + BS_VolLab, "NO NAME " "FAT ", 19); /* Volume label, FAT signature */ +5659:Middlewares/Third_Party/FatFs/src/ff.c **** } +5660:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BS_55AA, 0xAA55); /* Signature (offset is fixed here regardless of sector size) +5661:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, b_vol, 1) != RES_OK) return FR_DISK_ERR; /* Write it to the VBR sector +5662:Middlewares/Third_Party/FatFs/src/ff.c **** +5663:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create FSINFO record if needed */ +5664:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { +5665:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(pdrv, buf, b_vol + 6, 1); /* Write backup VBR (VBR + 6) */ +5666:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); + ARM GAS /tmp/cc5lWXRL.s page 132 + + +5667:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + FSI_LeadSig, 0x41615252); +5668:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + FSI_StrucSig, 0x61417272); +5669:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + FSI_Free_Count, n_clst - 1); /* Number of free clusters */ +5670:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + FSI_Nxt_Free, 2); /* Last allocated cluster# */ +5671:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BS_55AA, 0xAA55); +5672:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(pdrv, buf, b_vol + 7, 1); /* Write backup FSINFO (VBR + 7) */ +5673:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(pdrv, buf, b_vol + 1, 1); /* Write original FSINFO (VBR + 1) */ +5674:Middlewares/Third_Party/FatFs/src/ff.c **** } +5675:Middlewares/Third_Party/FatFs/src/ff.c **** +5676:Middlewares/Third_Party/FatFs/src/ff.c **** /* Initialize FAT area */ +5677:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, (UINT)szb_buf); +5678:Middlewares/Third_Party/FatFs/src/ff.c **** sect = b_fat; /* FAT start sector */ +5679:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < n_fats; i++) { /* Initialize FATs each */ +5680:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { +5681:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + 0, 0xFFFFFFF8); /* Entry 0 */ +5682:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + 4, 0xFFFFFFFF); /* Entry 1 */ +5683:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + 8, 0x0FFFFFFF); /* Entry 2 (root directory) */ +5684:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5685:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + 0, (fmt == FS_FAT12) ? 0xFFFFF8 : 0xFFFFFFF8); /* Entry 0 and 1 */ +5686:Middlewares/Third_Party/FatFs/src/ff.c **** } +5687:Middlewares/Third_Party/FatFs/src/ff.c **** nsect = sz_fat; /* Number of FAT sectors */ +5688:Middlewares/Third_Party/FatFs/src/ff.c **** do { /* Fill FAT sectors */ +5689:Middlewares/Third_Party/FatFs/src/ff.c **** n = (nsect > sz_buf) ? sz_buf : nsect; +5690:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) return FR_DISK_ERR; +5691:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); +5692:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; nsect -= n; +5693:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); +5694:Middlewares/Third_Party/FatFs/src/ff.c **** } +5695:Middlewares/Third_Party/FatFs/src/ff.c **** +5696:Middlewares/Third_Party/FatFs/src/ff.c **** /* Initialize root directory (fill with zero) */ +5697:Middlewares/Third_Party/FatFs/src/ff.c **** nsect = (fmt == FS_FAT32) ? pau : sz_dir; /* Number of root directory sectors */ +5698:Middlewares/Third_Party/FatFs/src/ff.c **** do { +5699:Middlewares/Third_Party/FatFs/src/ff.c **** n = (nsect > sz_buf) ? sz_buf : nsect; +5700:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) return FR_DISK_ERR; +5701:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; nsect -= n; +5702:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); +5703:Middlewares/Third_Party/FatFs/src/ff.c **** } +5704:Middlewares/Third_Party/FatFs/src/ff.c **** +5705:Middlewares/Third_Party/FatFs/src/ff.c **** /* Determine system ID in the partition table */ +5706:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT && fmt == FS_EXFAT) { +5707:Middlewares/Third_Party/FatFs/src/ff.c **** sys = 0x07; /* HPFS/NTFS/exFAT */ +5708:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5709:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { +5710:Middlewares/Third_Party/FatFs/src/ff.c **** sys = 0x0C; /* FAT32X */ +5711:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5712:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol >= 0x10000) { +5713:Middlewares/Third_Party/FatFs/src/ff.c **** sys = 0x06; /* FAT12/16 (>=64KS) */ +5714:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5715:Middlewares/Third_Party/FatFs/src/ff.c **** sys = (fmt == FS_FAT16) ? 0x04 : 0x01; /* FAT16 (<64KS) : FAT12 (<64KS) */ +5716:Middlewares/Third_Party/FatFs/src/ff.c **** } +5717:Middlewares/Third_Party/FatFs/src/ff.c **** } +5718:Middlewares/Third_Party/FatFs/src/ff.c **** } +5719:Middlewares/Third_Party/FatFs/src/ff.c **** +5720:Middlewares/Third_Party/FatFs/src/ff.c **** /* Update partition information */ +5721:Middlewares/Third_Party/FatFs/src/ff.c **** if (_MULTI_PARTITION && part != 0) { /* Created in the existing partition */ +5722:Middlewares/Third_Party/FatFs/src/ff.c **** /* Update system ID in the partition table */ +5723:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Read the MBR */ + ARM GAS /tmp/cc5lWXRL.s page 133 + + +5724:Middlewares/Third_Party/FatFs/src/ff.c **** buf[MBR_Table + (part - 1) * SZ_PTE + PTE_System] = sys; /* Set system ID */ +5725:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Write it back to the MBR */ +5726:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Created as a new single partition */ +5727:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(opt & FM_SFD)) { /* Create partition table if in FDISK format */ +5728:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); +5729:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BS_55AA, 0xAA55); /* MBR signature */ +5730:Middlewares/Third_Party/FatFs/src/ff.c **** pte = buf + MBR_Table; /* Create partition table for single partition in the drive */ +5731:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_Boot] = 0; /* Boot indicator */ +5732:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StHead] = 1; /* Start head */ +5733:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StSec] = 1; /* Start sector */ +5734:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StCyl] = 0; /* Start cylinder */ +5735:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_System] = sys; /* System type */ +5736:Middlewares/Third_Party/FatFs/src/ff.c **** n = (b_vol + sz_vol) / (63 * 255); /* (End CHS may be invalid) */ +5737:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdHead] = 254; /* End head */ +5738:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdSec] = (BYTE)(n >> 2 | 63); /* End sector */ +5739:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdCyl] = (BYTE)n; /* End cylinder */ +5740:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(pte + PTE_StLba, b_vol); /* Start offset in LBA */ +5741:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(pte + PTE_SizLba, sz_vol); /* Size in sectors */ +5742:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Write it to the MBR */ +5743:Middlewares/Third_Party/FatFs/src/ff.c **** } +5744:Middlewares/Third_Party/FatFs/src/ff.c **** } +5745:Middlewares/Third_Party/FatFs/src/ff.c **** +5746:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_ioctl(pdrv, CTRL_SYNC, 0) != RES_OK) return FR_DISK_ERR; +5747:Middlewares/Third_Party/FatFs/src/ff.c **** +5748:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_OK; +5749:Middlewares/Third_Party/FatFs/src/ff.c **** } +5750:Middlewares/Third_Party/FatFs/src/ff.c **** +5751:Middlewares/Third_Party/FatFs/src/ff.c **** +5752:Middlewares/Third_Party/FatFs/src/ff.c **** +5753:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MULTI_PARTITION +5754:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5755:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create partition table on the physical drive */ +5756:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5757:Middlewares/Third_Party/FatFs/src/ff.c **** +5758:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT f_fdisk ( +5759:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE pdrv, /* Physical drive number */ +5760:Middlewares/Third_Party/FatFs/src/ff.c **** const DWORD* szt, /* Pointer to the size table for each partitions */ +5761:Middlewares/Third_Party/FatFs/src/ff.c **** void* work /* Pointer to the working buffer */ +5762:Middlewares/Third_Party/FatFs/src/ff.c **** ) +5763:Middlewares/Third_Party/FatFs/src/ff.c **** { +5764:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, n, sz_cyl, tot_cyl, b_cyl, e_cyl, p_cyl; +5765:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE s_hd, e_hd, *p, *buf = (BYTE*)work; +5766:Middlewares/Third_Party/FatFs/src/ff.c **** DSTATUS stat; +5767:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD sz_disk, sz_part, s_part; +5768:Middlewares/Third_Party/FatFs/src/ff.c **** +5769:Middlewares/Third_Party/FatFs/src/ff.c **** +5770:Middlewares/Third_Party/FatFs/src/ff.c **** stat = disk_initialize(pdrv); +5771:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_NOINIT) return FR_NOT_READY; +5772:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; +5773:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_ioctl(pdrv, GET_SECTOR_COUNT, &sz_disk)) return FR_DISK_ERR; +5774:Middlewares/Third_Party/FatFs/src/ff.c **** +5775:Middlewares/Third_Party/FatFs/src/ff.c **** /* Determine the CHS without any consideration of the drive geometry */ +5776:Middlewares/Third_Party/FatFs/src/ff.c **** for (n = 16; n < 256 && sz_disk / n / 63 > 1024; n *= 2) ; +5777:Middlewares/Third_Party/FatFs/src/ff.c **** if (n == 256) n--; +5778:Middlewares/Third_Party/FatFs/src/ff.c **** e_hd = n - 1; +5779:Middlewares/Third_Party/FatFs/src/ff.c **** sz_cyl = 63 * n; +5780:Middlewares/Third_Party/FatFs/src/ff.c **** tot_cyl = sz_disk / sz_cyl; + ARM GAS /tmp/cc5lWXRL.s page 134 + + +5781:Middlewares/Third_Party/FatFs/src/ff.c **** +5782:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create partition table */ +5783:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, _MAX_SS); +5784:Middlewares/Third_Party/FatFs/src/ff.c **** p = buf + MBR_Table; b_cyl = 0; +5785:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < 4; i++, p += SZ_PTE) { +5786:Middlewares/Third_Party/FatFs/src/ff.c **** p_cyl = (szt[i] <= 100U) ? (DWORD)tot_cyl * szt[i] / 100 : szt[i] / sz_cyl; /* Number of cylinder +5787:Middlewares/Third_Party/FatFs/src/ff.c **** if (!p_cyl) continue; +5788:Middlewares/Third_Party/FatFs/src/ff.c **** s_part = (DWORD)sz_cyl * b_cyl; +5789:Middlewares/Third_Party/FatFs/src/ff.c **** sz_part = (DWORD)sz_cyl * p_cyl; +5790:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 0) { /* Exclude first track of cylinder 0 */ +5791:Middlewares/Third_Party/FatFs/src/ff.c **** s_hd = 1; +5792:Middlewares/Third_Party/FatFs/src/ff.c **** s_part += 63; sz_part -= 63; +5793:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5794:Middlewares/Third_Party/FatFs/src/ff.c **** s_hd = 0; +5795:Middlewares/Third_Party/FatFs/src/ff.c **** } +5796:Middlewares/Third_Party/FatFs/src/ff.c **** e_cyl = b_cyl + p_cyl - 1; /* End cylinder */ +5797:Middlewares/Third_Party/FatFs/src/ff.c **** if (e_cyl >= tot_cyl) return FR_INVALID_PARAMETER; +5798:Middlewares/Third_Party/FatFs/src/ff.c **** +5799:Middlewares/Third_Party/FatFs/src/ff.c **** /* Set partition table */ +5800:Middlewares/Third_Party/FatFs/src/ff.c **** p[1] = s_hd; /* Start head */ +5801:Middlewares/Third_Party/FatFs/src/ff.c **** p[2] = (BYTE)((b_cyl >> 2) + 1); /* Start sector */ +5802:Middlewares/Third_Party/FatFs/src/ff.c **** p[3] = (BYTE)b_cyl; /* Start cylinder */ +5803:Middlewares/Third_Party/FatFs/src/ff.c **** p[4] = 0x07; /* System type (temporary setting) */ +5804:Middlewares/Third_Party/FatFs/src/ff.c **** p[5] = e_hd; /* End head */ +5805:Middlewares/Third_Party/FatFs/src/ff.c **** p[6] = (BYTE)((e_cyl >> 2) + 63); /* End sector */ +5806:Middlewares/Third_Party/FatFs/src/ff.c **** p[7] = (BYTE)e_cyl; /* End cylinder */ +5807:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(p + 8, s_part); /* Start sector in LBA */ +5808:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(p + 12, sz_part); /* Number of sectors */ +5809:Middlewares/Third_Party/FatFs/src/ff.c **** +5810:Middlewares/Third_Party/FatFs/src/ff.c **** /* Next partition */ +5811:Middlewares/Third_Party/FatFs/src/ff.c **** b_cyl += p_cyl; +5812:Middlewares/Third_Party/FatFs/src/ff.c **** } +5813:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(p, 0xAA55); +5814:Middlewares/Third_Party/FatFs/src/ff.c **** +5815:Middlewares/Third_Party/FatFs/src/ff.c **** /* Write it to the MBR */ +5816:Middlewares/Third_Party/FatFs/src/ff.c **** return (disk_write(pdrv, buf, 0, 1) != RES_OK || disk_ioctl(pdrv, CTRL_SYNC, 0) != RES_OK) ? FR_DI +5817:Middlewares/Third_Party/FatFs/src/ff.c **** } +5818:Middlewares/Third_Party/FatFs/src/ff.c **** +5819:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _MULTI_PARTITION */ +5820:Middlewares/Third_Party/FatFs/src/ff.c **** #endif /* _USE_MKFS && !_FS_READONLY */ +5821:Middlewares/Third_Party/FatFs/src/ff.c **** +5822:Middlewares/Third_Party/FatFs/src/ff.c **** +5823:Middlewares/Third_Party/FatFs/src/ff.c **** +5824:Middlewares/Third_Party/FatFs/src/ff.c **** +5825:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_STRFUNC +5826:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5827:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get a string from the file */ +5828:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5829:Middlewares/Third_Party/FatFs/src/ff.c **** +5830:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR* f_gets ( +5831:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR* buff, /* Pointer to the string buffer to read */ +5832:Middlewares/Third_Party/FatFs/src/ff.c **** int len, /* Size of string buffer (characters) */ +5833:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp /* Pointer to the file object */ +5834:Middlewares/Third_Party/FatFs/src/ff.c **** ) +5835:Middlewares/Third_Party/FatFs/src/ff.c **** { +5836:Middlewares/Third_Party/FatFs/src/ff.c **** int n = 0; +5837:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR c, *p = buff; + ARM GAS /tmp/cc5lWXRL.s page 135 + + +5838:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE s[2]; +5839:Middlewares/Third_Party/FatFs/src/ff.c **** UINT rc; +5840:Middlewares/Third_Party/FatFs/src/ff.c **** +5841:Middlewares/Third_Party/FatFs/src/ff.c **** +5842:Middlewares/Third_Party/FatFs/src/ff.c **** while (n < len - 1) { /* Read characters until buffer gets filled */ +5843:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE +5844:Middlewares/Third_Party/FatFs/src/ff.c **** #if _STRF_ENCODE == 3 /* Read a character in UTF-8 */ +5845:Middlewares/Third_Party/FatFs/src/ff.c **** f_read(fp, s, 1, &rc); +5846:Middlewares/Third_Party/FatFs/src/ff.c **** if (rc != 1) break; +5847:Middlewares/Third_Party/FatFs/src/ff.c **** c = s[0]; +5848:Middlewares/Third_Party/FatFs/src/ff.c **** if (c >= 0x80) { +5849:Middlewares/Third_Party/FatFs/src/ff.c **** if (c < 0xC0) continue; /* Skip stray trailer */ +5850:Middlewares/Third_Party/FatFs/src/ff.c **** if (c < 0xE0) { /* Two-byte sequence (0x80-0x7FF) */ +5851:Middlewares/Third_Party/FatFs/src/ff.c **** f_read(fp, s, 1, &rc); +5852:Middlewares/Third_Party/FatFs/src/ff.c **** if (rc != 1) break; +5853:Middlewares/Third_Party/FatFs/src/ff.c **** c = (c & 0x1F) << 6 | (s[0] & 0x3F); +5854:Middlewares/Third_Party/FatFs/src/ff.c **** if (c < 0x80) c = '?'; /* Reject invalid code range */ +5855:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5856:Middlewares/Third_Party/FatFs/src/ff.c **** if (c < 0xF0) { /* Three-byte sequence (0x800-0xFFFF) */ +5857:Middlewares/Third_Party/FatFs/src/ff.c **** f_read(fp, s, 2, &rc); +5858:Middlewares/Third_Party/FatFs/src/ff.c **** if (rc != 2) break; +5859:Middlewares/Third_Party/FatFs/src/ff.c **** c = c << 12 | (s[0] & 0x3F) << 6 | (s[1] & 0x3F); +5860:Middlewares/Third_Party/FatFs/src/ff.c **** if (c < 0x800) c = '?'; /* Reject invalid code range */ +5861:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Reject four-byte sequence */ +5862:Middlewares/Third_Party/FatFs/src/ff.c **** c = '?'; +5863:Middlewares/Third_Party/FatFs/src/ff.c **** } +5864:Middlewares/Third_Party/FatFs/src/ff.c **** } +5865:Middlewares/Third_Party/FatFs/src/ff.c **** } +5866:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _STRF_ENCODE == 2 /* Read a character in UTF-16BE */ +5867:Middlewares/Third_Party/FatFs/src/ff.c **** f_read(fp, s, 2, &rc); +5868:Middlewares/Third_Party/FatFs/src/ff.c **** if (rc != 2) break; +5869:Middlewares/Third_Party/FatFs/src/ff.c **** c = s[1] + (s[0] << 8); +5870:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _STRF_ENCODE == 1 /* Read a character in UTF-16LE */ +5871:Middlewares/Third_Party/FatFs/src/ff.c **** f_read(fp, s, 2, &rc); +5872:Middlewares/Third_Party/FatFs/src/ff.c **** if (rc != 2) break; +5873:Middlewares/Third_Party/FatFs/src/ff.c **** c = s[0] + (s[1] << 8); +5874:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Read a character in ANSI/OEM */ +5875:Middlewares/Third_Party/FatFs/src/ff.c **** f_read(fp, s, 1, &rc); +5876:Middlewares/Third_Party/FatFs/src/ff.c **** if (rc != 1) break; +5877:Middlewares/Third_Party/FatFs/src/ff.c **** c = s[0]; +5878:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsDBCS1(c)) { +5879:Middlewares/Third_Party/FatFs/src/ff.c **** f_read(fp, s, 1, &rc); +5880:Middlewares/Third_Party/FatFs/src/ff.c **** if (rc != 1) break; +5881:Middlewares/Third_Party/FatFs/src/ff.c **** c = (c << 8) + s[0]; +5882:Middlewares/Third_Party/FatFs/src/ff.c **** } +5883:Middlewares/Third_Party/FatFs/src/ff.c **** c = ff_convert(c, 1); /* OEM -> Unicode */ +5884:Middlewares/Third_Party/FatFs/src/ff.c **** if (!c) c = '?'; +5885:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5886:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Read a character without conversion */ +5887:Middlewares/Third_Party/FatFs/src/ff.c **** f_read(fp, s, 1, &rc); +5888:Middlewares/Third_Party/FatFs/src/ff.c **** if (rc != 1) break; +5889:Middlewares/Third_Party/FatFs/src/ff.c **** c = s[0]; +5890:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5891:Middlewares/Third_Party/FatFs/src/ff.c **** if (_USE_STRFUNC == 2 && c == '\r') continue; /* Strip '\r' */ +5892:Middlewares/Third_Party/FatFs/src/ff.c **** *p++ = c; +5893:Middlewares/Third_Party/FatFs/src/ff.c **** n++; +5894:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == '\n') break; /* Break on EOL */ + ARM GAS /tmp/cc5lWXRL.s page 136 + + +5895:Middlewares/Third_Party/FatFs/src/ff.c **** } +5896:Middlewares/Third_Party/FatFs/src/ff.c **** *p = 0; +5897:Middlewares/Third_Party/FatFs/src/ff.c **** return n ? buff : 0; /* When no data read (eof or error), return with error. */ +5898:Middlewares/Third_Party/FatFs/src/ff.c **** } +5899:Middlewares/Third_Party/FatFs/src/ff.c **** +5900:Middlewares/Third_Party/FatFs/src/ff.c **** +5901:Middlewares/Third_Party/FatFs/src/ff.c **** +5902:Middlewares/Third_Party/FatFs/src/ff.c **** +5903:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY +5904:Middlewares/Third_Party/FatFs/src/ff.c **** #include +5905:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5906:Middlewares/Third_Party/FatFs/src/ff.c **** /* Put a character to the file */ +5907:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +5908:Middlewares/Third_Party/FatFs/src/ff.c **** +5909:Middlewares/Third_Party/FatFs/src/ff.c **** typedef struct { +5910:Middlewares/Third_Party/FatFs/src/ff.c **** FIL *fp; /* Ptr to the writing file */ +5911:Middlewares/Third_Party/FatFs/src/ff.c **** int idx, nchr; /* Write index of buf[] (-1:error), number of chars written */ +5912:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE buf[64]; /* Write buffer */ +5913:Middlewares/Third_Party/FatFs/src/ff.c **** } putbuff; +5914:Middlewares/Third_Party/FatFs/src/ff.c **** +5915:Middlewares/Third_Party/FatFs/src/ff.c **** +5916:Middlewares/Third_Party/FatFs/src/ff.c **** static +5917:Middlewares/Third_Party/FatFs/src/ff.c **** void putc_bfd ( /* Buffered write with code conversion */ +5918:Middlewares/Third_Party/FatFs/src/ff.c **** putbuff* pb, +5919:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR c +5920:Middlewares/Third_Party/FatFs/src/ff.c **** ) +5921:Middlewares/Third_Party/FatFs/src/ff.c **** { +5922:Middlewares/Third_Party/FatFs/src/ff.c **** UINT bw; +5923:Middlewares/Third_Party/FatFs/src/ff.c **** int i; +5924:Middlewares/Third_Party/FatFs/src/ff.c **** +5925:Middlewares/Third_Party/FatFs/src/ff.c **** +5926:Middlewares/Third_Party/FatFs/src/ff.c **** if (_USE_STRFUNC == 2 && c == '\n') { /* LF -> CRLF conversion */ +5927:Middlewares/Third_Party/FatFs/src/ff.c **** putc_bfd(pb, '\r'); +5928:Middlewares/Third_Party/FatFs/src/ff.c **** } +5929:Middlewares/Third_Party/FatFs/src/ff.c **** +5930:Middlewares/Third_Party/FatFs/src/ff.c **** i = pb->idx; /* Write index of pb->buf[] */ +5931:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < 0) return; +5932:Middlewares/Third_Party/FatFs/src/ff.c **** +5933:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE +5934:Middlewares/Third_Party/FatFs/src/ff.c **** #if _STRF_ENCODE == 3 /* Write a character in UTF-8 */ +5935:Middlewares/Third_Party/FatFs/src/ff.c **** if (c < 0x80) { /* 7-bit */ +5936:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)c; +5937:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +5938:Middlewares/Third_Party/FatFs/src/ff.c **** if (c < 0x800) { /* 11-bit */ +5939:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)(0xC0 | c >> 6); +5940:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* 16-bit */ +5941:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)(0xE0 | c >> 12); +5942:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)(0x80 | (c >> 6 & 0x3F)); +5943:Middlewares/Third_Party/FatFs/src/ff.c **** } +5944:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)(0x80 | (c & 0x3F)); +5945:Middlewares/Third_Party/FatFs/src/ff.c **** } +5946:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _STRF_ENCODE == 2 /* Write a character in UTF-16BE */ +5947:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)(c >> 8); +5948:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)c; +5949:Middlewares/Third_Party/FatFs/src/ff.c **** #elif _STRF_ENCODE == 1 /* Write a character in UTF-16LE */ +5950:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)c; +5951:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)(c >> 8); + ARM GAS /tmp/cc5lWXRL.s page 137 + + +5952:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Write a character in ANSI/OEM */ +5953:Middlewares/Third_Party/FatFs/src/ff.c **** c = ff_convert(c, 0); /* Unicode -> OEM */ +5954:Middlewares/Third_Party/FatFs/src/ff.c **** if (!c) c = '?'; +5955:Middlewares/Third_Party/FatFs/src/ff.c **** if (c >= 0x100) +5956:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)(c >> 8); +5957:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)c; +5958:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5959:Middlewares/Third_Party/FatFs/src/ff.c **** #else /* Write a character without conversion */ +5960:Middlewares/Third_Party/FatFs/src/ff.c **** pb->buf[i++] = (BYTE)c; +5961:Middlewares/Third_Party/FatFs/src/ff.c **** #endif +5962:Middlewares/Third_Party/FatFs/src/ff.c **** +5963:Middlewares/Third_Party/FatFs/src/ff.c **** if (i >= (int)(sizeof pb->buf) - 3) { /* Write buffered characters to the file */ +5964:Middlewares/Third_Party/FatFs/src/ff.c **** f_write(pb->fp, pb->buf, (UINT)i, &bw); +5965:Middlewares/Third_Party/FatFs/src/ff.c **** i = (bw == (UINT)i) ? 0 : -1; +5966:Middlewares/Third_Party/FatFs/src/ff.c **** } +5967:Middlewares/Third_Party/FatFs/src/ff.c **** pb->idx = i; +5968:Middlewares/Third_Party/FatFs/src/ff.c **** pb->nchr++; +5969:Middlewares/Third_Party/FatFs/src/ff.c **** } +5970:Middlewares/Third_Party/FatFs/src/ff.c **** +5971:Middlewares/Third_Party/FatFs/src/ff.c **** +5972:Middlewares/Third_Party/FatFs/src/ff.c **** static +5973:Middlewares/Third_Party/FatFs/src/ff.c **** int putc_flush ( /* Flush left characters in the buffer */ +5974:Middlewares/Third_Party/FatFs/src/ff.c **** putbuff* pb +5975:Middlewares/Third_Party/FatFs/src/ff.c **** ) +5976:Middlewares/Third_Party/FatFs/src/ff.c **** { +5977:Middlewares/Third_Party/FatFs/src/ff.c **** UINT nw; +5978:Middlewares/Third_Party/FatFs/src/ff.c **** +5979:Middlewares/Third_Party/FatFs/src/ff.c **** if ( pb->idx >= 0 /* Flush buffered characters to the file */ +5980:Middlewares/Third_Party/FatFs/src/ff.c **** && f_write(pb->fp, pb->buf, (UINT)pb->idx, &nw) == FR_OK +5981:Middlewares/Third_Party/FatFs/src/ff.c **** && (UINT)pb->idx == nw) return pb->nchr; +5982:Middlewares/Third_Party/FatFs/src/ff.c **** return EOF; +5983:Middlewares/Third_Party/FatFs/src/ff.c **** } +5984:Middlewares/Third_Party/FatFs/src/ff.c **** +5985:Middlewares/Third_Party/FatFs/src/ff.c **** +5986:Middlewares/Third_Party/FatFs/src/ff.c **** static +5987:Middlewares/Third_Party/FatFs/src/ff.c **** void putc_init ( /* Initialize write buffer */ +5988:Middlewares/Third_Party/FatFs/src/ff.c **** putbuff* pb, +5989:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp +5990:Middlewares/Third_Party/FatFs/src/ff.c **** ) +5991:Middlewares/Third_Party/FatFs/src/ff.c **** { + 1675 .loc 1 5991 1 is_stmt 1 view -0 + 1676 .cfi_startproc + 1677 @ args = 0, pretend = 0, frame = 0 + 1678 @ frame_needed = 0, uses_anonymous_args = 0 + 1679 @ link register save eliminated. +5992:Middlewares/Third_Party/FatFs/src/ff.c **** pb->fp = fp; + 1680 .loc 1 5992 2 view .LVU509 + 1681 .loc 1 5992 9 is_stmt 0 view .LVU510 + 1682 0000 0160 str r1, [r0] +5993:Middlewares/Third_Party/FatFs/src/ff.c **** pb->nchr = pb->idx = 0; + 1683 .loc 1 5993 2 is_stmt 1 view .LVU511 + 1684 .loc 1 5993 21 is_stmt 0 view .LVU512 + 1685 0002 0023 movs r3, #0 + 1686 0004 4360 str r3, [r0, #4] + 1687 .loc 1 5993 11 view .LVU513 + 1688 0006 8360 str r3, [r0, #8] +5994:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 138 + + + 1689 .loc 1 5994 1 view .LVU514 + 1690 0008 7047 bx lr + 1691 .cfi_endproc + 1692 .LFE1241: + 1694 .section .text.validate,"ax",%progbits + 1695 .align 1 + 1696 .syntax unified + 1697 .thumb + 1698 .thumb_func + 1699 .fpu fpv5-d16 + 1701 validate: + 1702 .LVL181: + 1703 .LFB1220: +3220:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_INVALID_OBJECT; + 1704 .loc 1 3220 1 is_stmt 1 view -0 + 1705 .cfi_startproc + 1706 @ args = 0, pretend = 0, frame = 0 + 1707 @ frame_needed = 0, uses_anonymous_args = 0 +3220:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_INVALID_OBJECT; + 1708 .loc 1 3220 1 is_stmt 0 view .LVU516 + 1709 0000 38B5 push {r3, r4, r5, lr} + 1710 .LCFI14: + 1711 .cfi_def_cfa_offset 16 + 1712 .cfi_offset 3, -16 + 1713 .cfi_offset 4, -12 + 1714 .cfi_offset 5, -8 + 1715 .cfi_offset 14, -4 + 1716 0002 0D46 mov r5, r1 +3221:Middlewares/Third_Party/FatFs/src/ff.c **** + 1717 .loc 1 3221 2 is_stmt 1 view .LVU517 + 1718 .LVL182: +3224:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + 1719 .loc 1 3224 2 view .LVU518 +3224:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + 1720 .loc 1 3224 5 is_stmt 0 view .LVU519 + 1721 0004 0446 mov r4, r0 + 1722 0006 98B1 cbz r0, .L147 +3224:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + 1723 .loc 1 3224 16 discriminator 1 view .LVU520 + 1724 0008 0368 ldr r3, [r0] +3224:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + 1725 .loc 1 3224 10 discriminator 1 view .LVU521 + 1726 000a 9BB1 cbz r3, .L148 +3224:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + 1727 .loc 1 3224 31 discriminator 2 view .LVU522 + 1728 000c 1A78 ldrb r2, [r3] @ zero_extendqisi2 +3224:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + 1729 .loc 1 3224 21 discriminator 2 view .LVU523 + 1730 000e A2B1 cbz r2, .L149 +3224:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + 1731 .loc 1 3224 47 discriminator 3 view .LVU524 + 1732 0010 8188 ldrh r1, [r0, #4] + 1733 .LVL183: +3224:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + 1734 .loc 1 3224 62 discriminator 3 view .LVU525 + 1735 0012 DA88 ldrh r2, [r3, #6] +3224:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT + ARM GAS /tmp/cc5lWXRL.s page 139 + + + 1736 .loc 1 3224 41 discriminator 3 view .LVU526 + 1737 0014 9142 cmp r1, r2 + 1738 0016 03D0 beq .L153 +3221:Middlewares/Third_Party/FatFs/src/ff.c **** + 1739 .loc 1 3221 10 view .LVU527 + 1740 0018 0920 movs r0, #9 + 1741 .LVL184: +3241:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 1742 .loc 1 3241 33 view .LVU528 + 1743 001a 0024 movs r4, #0 + 1744 .LVL185: + 1745 .L146: +3241:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 1746 .loc 1 3241 6 discriminator 4 view .LVU529 + 1747 001c 2C60 str r4, [r5] +3242:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1748 .loc 1 3242 2 is_stmt 1 discriminator 4 view .LVU530 +3243:Middlewares/Third_Party/FatFs/src/ff.c **** + 1749 .loc 1 3243 1 is_stmt 0 discriminator 4 view .LVU531 + 1750 001e 38BD pop {r3, r4, r5, pc} + 1751 .LVL186: + 1752 .L153: +3236:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 1753 .loc 1 3236 3 is_stmt 1 view .LVU532 +3236:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 1754 .loc 1 3236 9 is_stmt 0 view .LVU533 + 1755 0020 5878 ldrb r0, [r3, #1] @ zero_extendqisi2 + 1756 .LVL187: +3236:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 1757 .loc 1 3236 9 view .LVU534 + 1758 0022 FFF7FEFF bl disk_status + 1759 .LVL188: +3236:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 1760 .loc 1 3236 6 view .LVU535 + 1761 0026 10F00100 ands r0, r0, #1 + 1762 002a 09D1 bne .L151 +3237:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1763 .loc 1 3237 4 is_stmt 1 view .LVU536 + 1764 .LVL189: +3241:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 1765 .loc 1 3241 2 view .LVU537 +3241:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 1766 .loc 1 3241 33 is_stmt 0 view .LVU538 + 1767 002c 2468 ldr r4, [r4] + 1768 .LVL190: +3241:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 1769 .loc 1 3241 33 view .LVU539 + 1770 002e F5E7 b .L146 + 1771 .LVL191: + 1772 .L147: +3221:Middlewares/Third_Party/FatFs/src/ff.c **** + 1773 .loc 1 3221 10 view .LVU540 + 1774 0030 0920 movs r0, #9 + 1775 .LVL192: +3221:Middlewares/Third_Party/FatFs/src/ff.c **** + 1776 .loc 1 3221 10 view .LVU541 + 1777 0032 F3E7 b .L146 + ARM GAS /tmp/cc5lWXRL.s page 140 + + + 1778 .LVL193: + 1779 .L148: +3241:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 1780 .loc 1 3241 33 view .LVU542 + 1781 0034 1C46 mov r4, r3 +3221:Middlewares/Third_Party/FatFs/src/ff.c **** + 1782 .loc 1 3221 10 view .LVU543 + 1783 0036 0920 movs r0, #9 + 1784 .LVL194: +3221:Middlewares/Third_Party/FatFs/src/ff.c **** + 1785 .loc 1 3221 10 view .LVU544 + 1786 0038 F0E7 b .L146 + 1787 .LVL195: + 1788 .L149: +3221:Middlewares/Third_Party/FatFs/src/ff.c **** + 1789 .loc 1 3221 10 view .LVU545 + 1790 003a 0920 movs r0, #9 + 1791 .LVL196: +3241:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 1792 .loc 1 3241 33 view .LVU546 + 1793 003c 0024 movs r4, #0 + 1794 .LVL197: +3241:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 1795 .loc 1 3241 33 view .LVU547 + 1796 003e EDE7 b .L146 + 1797 .LVL198: + 1798 .L151: +3221:Middlewares/Third_Party/FatFs/src/ff.c **** + 1799 .loc 1 3221 10 view .LVU548 + 1800 0040 0920 movs r0, #9 +3241:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 1801 .loc 1 3241 33 view .LVU549 + 1802 0042 0024 movs r4, #0 + 1803 .LVL199: +3241:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 1804 .loc 1 3241 33 view .LVU550 + 1805 0044 EAE7 b .L146 + 1806 .cfi_endproc + 1807 .LFE1220: + 1809 .section .text.sync_window,"ax",%progbits + 1810 .align 1 + 1811 .syntax unified + 1812 .thumb + 1813 .thumb_func + 1814 .fpu fpv5-d16 + 1816 sync_window: + 1817 .LVL200: + 1818 .LFB1196: + 886:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD wsect; + 1819 .loc 1 886 1 is_stmt 1 view -0 + 1820 .cfi_startproc + 1821 @ args = 0, pretend = 0, frame = 0 + 1822 @ frame_needed = 0, uses_anonymous_args = 0 + 886:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD wsect; + 1823 .loc 1 886 1 is_stmt 0 view .LVU552 + 1824 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 1825 .LCFI15: + ARM GAS /tmp/cc5lWXRL.s page 141 + + + 1826 .cfi_def_cfa_offset 24 + 1827 .cfi_offset 4, -24 + 1828 .cfi_offset 5, -20 + 1829 .cfi_offset 6, -16 + 1830 .cfi_offset 7, -12 + 1831 .cfi_offset 8, -8 + 1832 .cfi_offset 14, -4 + 887:Middlewares/Third_Party/FatFs/src/ff.c **** UINT nf; + 1833 .loc 1 887 2 is_stmt 1 view .LVU553 + 888:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_OK; + 1834 .loc 1 888 2 view .LVU554 + 889:Middlewares/Third_Party/FatFs/src/ff.c **** + 1835 .loc 1 889 2 view .LVU555 + 1836 .LVL201: + 892:Middlewares/Third_Party/FatFs/src/ff.c **** wsect = fs->winsect; /* Current sector number */ + 1837 .loc 1 892 2 view .LVU556 + 892:Middlewares/Third_Party/FatFs/src/ff.c **** wsect = fs->winsect; /* Current sector number */ + 1838 .loc 1 892 8 is_stmt 0 view .LVU557 + 1839 0004 C578 ldrb r5, [r0, #3] @ zero_extendqisi2 + 892:Middlewares/Third_Party/FatFs/src/ff.c **** wsect = fs->winsect; /* Current sector number */ + 1840 .loc 1 892 5 view .LVU558 + 1841 0006 15B9 cbnz r5, .L160 + 1842 .LVL202: + 1843 .L155: + 906:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1844 .loc 1 906 2 is_stmt 1 view .LVU559 + 907:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 1845 .loc 1 907 1 is_stmt 0 view .LVU560 + 1846 0008 2846 mov r0, r5 + 1847 000a BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 1848 .LVL203: + 1849 .L160: + 907:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 1850 .loc 1 907 1 view .LVU561 + 1851 000e 0446 mov r4, r0 + 893:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fs->win, wsect, 1) != RES_OK) { + 1852 .loc 1 893 3 is_stmt 1 view .LVU562 + 893:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fs->win, wsect, 1) != RES_OK) { + 1853 .loc 1 893 9 is_stmt 0 view .LVU563 + 1854 0010 076B ldr r7, [r0, #48] + 1855 .LVL204: + 894:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 1856 .loc 1 894 3 is_stmt 1 view .LVU564 + 894:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 1857 .loc 1 894 29 is_stmt 0 view .LVU565 + 1858 0012 00F13408 add r8, r0, #52 + 894:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 1859 .loc 1 894 7 view .LVU566 + 1860 0016 0123 movs r3, #1 + 1861 0018 3A46 mov r2, r7 + 1862 001a 4146 mov r1, r8 + 1863 001c 4078 ldrb r0, [r0, #1] @ zero_extendqisi2 + 1864 .LVL205: + 894:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 1865 .loc 1 894 7 view .LVU567 + 1866 001e FFF7FEFF bl disk_write + 1867 .LVL206: + ARM GAS /tmp/cc5lWXRL.s page 142 + + + 894:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 1868 .loc 1 894 6 view .LVU568 + 1869 0022 0546 mov r5, r0 + 1870 0024 A0B9 cbnz r0, .L158 + 897:Middlewares/Third_Party/FatFs/src/ff.c **** if (wsect - fs->fatbase < fs->fsize) { /* Is it in the FAT area? */ + 1871 .loc 1 897 4 is_stmt 1 view .LVU569 + 897:Middlewares/Third_Party/FatFs/src/ff.c **** if (wsect - fs->fatbase < fs->fsize) { /* Is it in the FAT area? */ + 1872 .loc 1 897 14 is_stmt 0 view .LVU570 + 1873 0026 0023 movs r3, #0 + 1874 0028 E370 strb r3, [r4, #3] + 898:Middlewares/Third_Party/FatFs/src/ff.c **** for (nf = fs->n_fats; nf >= 2; nf--) { /* Reflect the change to all FAT copies */ + 1875 .loc 1 898 4 is_stmt 1 view .LVU571 + 898:Middlewares/Third_Party/FatFs/src/ff.c **** for (nf = fs->n_fats; nf >= 2; nf--) { /* Reflect the change to all FAT copies */ + 1876 .loc 1 898 18 is_stmt 0 view .LVU572 + 1877 002a 636A ldr r3, [r4, #36] + 898:Middlewares/Third_Party/FatFs/src/ff.c **** for (nf = fs->n_fats; nf >= 2; nf--) { /* Reflect the change to all FAT copies */ + 1878 .loc 1 898 14 view .LVU573 + 1879 002c FB1A subs r3, r7, r3 + 898:Middlewares/Third_Party/FatFs/src/ff.c **** for (nf = fs->n_fats; nf >= 2; nf--) { /* Reflect the change to all FAT copies */ + 1880 .loc 1 898 32 view .LVU574 + 1881 002e E269 ldr r2, [r4, #28] + 898:Middlewares/Third_Party/FatFs/src/ff.c **** for (nf = fs->n_fats; nf >= 2; nf--) { /* Reflect the change to all FAT copies */ + 1882 .loc 1 898 7 view .LVU575 + 1883 0030 9342 cmp r3, r2 + 1884 0032 E9D2 bcs .L155 + 899:Middlewares/Third_Party/FatFs/src/ff.c **** wsect += fs->fsize; + 1885 .loc 1 899 5 is_stmt 1 view .LVU576 + 899:Middlewares/Third_Party/FatFs/src/ff.c **** wsect += fs->fsize; + 1886 .loc 1 899 17 is_stmt 0 view .LVU577 + 1887 0034 A678 ldrb r6, [r4, #2] @ zero_extendqisi2 + 1888 .LVL207: + 899:Middlewares/Third_Party/FatFs/src/ff.c **** wsect += fs->fsize; + 1889 .loc 1 899 5 view .LVU578 + 1890 0036 08E0 b .L156 + 1891 .L157: + 900:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(fs->drv, fs->win, wsect, 1); + 1892 .loc 1 900 6 is_stmt 1 discriminator 3 view .LVU579 + 900:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(fs->drv, fs->win, wsect, 1); + 1893 .loc 1 900 17 is_stmt 0 discriminator 3 view .LVU580 + 1894 0038 E369 ldr r3, [r4, #28] + 900:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(fs->drv, fs->win, wsect, 1); + 1895 .loc 1 900 12 discriminator 3 view .LVU581 + 1896 003a 1F44 add r7, r7, r3 + 1897 .LVL208: + 901:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1898 .loc 1 901 6 is_stmt 1 discriminator 3 view .LVU582 + 1899 003c 0123 movs r3, #1 + 1900 003e 3A46 mov r2, r7 + 1901 0040 4146 mov r1, r8 + 1902 0042 6078 ldrb r0, [r4, #1] @ zero_extendqisi2 + 1903 0044 FFF7FEFF bl disk_write + 1904 .LVL209: + 899:Middlewares/Third_Party/FatFs/src/ff.c **** wsect += fs->fsize; + 1905 .loc 1 899 36 discriminator 3 view .LVU583 + 899:Middlewares/Third_Party/FatFs/src/ff.c **** wsect += fs->fsize; + 1906 .loc 1 899 38 is_stmt 0 discriminator 3 view .LVU584 + 1907 0048 013E subs r6, r6, #1 + ARM GAS /tmp/cc5lWXRL.s page 143 + + + 1908 .LVL210: + 1909 .L156: + 899:Middlewares/Third_Party/FatFs/src/ff.c **** wsect += fs->fsize; + 1910 .loc 1 899 27 is_stmt 1 discriminator 1 view .LVU585 + 899:Middlewares/Third_Party/FatFs/src/ff.c **** wsect += fs->fsize; + 1911 .loc 1 899 5 is_stmt 0 discriminator 1 view .LVU586 + 1912 004a 012E cmp r6, #1 + 1913 004c F4D8 bhi .L157 + 899:Middlewares/Third_Party/FatFs/src/ff.c **** wsect += fs->fsize; + 1914 .loc 1 899 5 discriminator 1 view .LVU587 + 1915 004e DBE7 b .L155 + 1916 .LVL211: + 1917 .L158: + 895:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 1918 .loc 1 895 8 view .LVU588 + 1919 0050 0125 movs r5, #1 + 1920 0052 D9E7 b .L155 + 1921 .cfi_endproc + 1922 .LFE1196: + 1924 .section .text.move_window,"ax",%progbits + 1925 .align 1 + 1926 .syntax unified + 1927 .thumb + 1928 .thumb_func + 1929 .fpu fpv5-d16 + 1931 move_window: + 1932 .LVL212: + 1933 .LFB1197: + 916:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_OK; + 1934 .loc 1 916 1 is_stmt 1 view -0 + 1935 .cfi_startproc + 1936 @ args = 0, pretend = 0, frame = 0 + 1937 @ frame_needed = 0, uses_anonymous_args = 0 + 916:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_OK; + 1938 .loc 1 916 1 is_stmt 0 view .LVU590 + 1939 0000 70B5 push {r4, r5, r6, lr} + 1940 .LCFI16: + 1941 .cfi_def_cfa_offset 16 + 1942 .cfi_offset 4, -16 + 1943 .cfi_offset 5, -12 + 1944 .cfi_offset 6, -8 + 1945 .cfi_offset 14, -4 + 917:Middlewares/Third_Party/FatFs/src/ff.c **** + 1946 .loc 1 917 2 is_stmt 1 view .LVU591 + 1947 .LVL213: + 920:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 1948 .loc 1 920 2 view .LVU592 + 920:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 1949 .loc 1 920 18 is_stmt 0 view .LVU593 + 1950 0002 036B ldr r3, [r0, #48] + 920:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 1951 .loc 1 920 5 view .LVU594 + 1952 0004 8B42 cmp r3, r1 + 1953 0006 02D1 bne .L167 + 917:Middlewares/Third_Party/FatFs/src/ff.c **** + 1954 .loc 1 917 10 view .LVU595 + 1955 0008 0026 movs r6, #0 + ARM GAS /tmp/cc5lWXRL.s page 144 + + + 1956 .LVL214: + 1957 .L162: + 932:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1958 .loc 1 932 2 is_stmt 1 view .LVU596 + 933:Middlewares/Third_Party/FatFs/src/ff.c **** + 1959 .loc 1 933 1 is_stmt 0 view .LVU597 + 1960 000a 3046 mov r0, r6 + 1961 000c 70BD pop {r4, r5, r6, pc} + 1962 .LVL215: + 1963 .L167: + 933:Middlewares/Third_Party/FatFs/src/ff.c **** + 1964 .loc 1 933 1 view .LVU598 + 1965 000e 0446 mov r4, r0 + 1966 0010 0D46 mov r5, r1 + 922:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 1967 .loc 1 922 3 is_stmt 1 view .LVU599 + 922:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 1968 .loc 1 922 9 is_stmt 0 view .LVU600 + 1969 0012 FFF7FEFF bl sync_window + 1970 .LVL216: + 924:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(fs->drv, fs->win, sector, 1) != RES_OK) { + 1971 .loc 1 924 3 is_stmt 1 view .LVU601 + 924:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_read(fs->drv, fs->win, sector, 1) != RES_OK) { + 1972 .loc 1 924 6 is_stmt 0 view .LVU602 + 1973 0016 0646 mov r6, r0 + 1974 0018 0028 cmp r0, #0 + 1975 001a F6D1 bne .L162 + 925:Middlewares/Third_Party/FatFs/src/ff.c **** sector = 0xFFFFFFFF; /* Invalidate window if data is not reliable */ + 1976 .loc 1 925 4 is_stmt 1 view .LVU603 + 925:Middlewares/Third_Party/FatFs/src/ff.c **** sector = 0xFFFFFFFF; /* Invalidate window if data is not reliable */ + 1977 .loc 1 925 8 is_stmt 0 view .LVU604 + 1978 001c 0123 movs r3, #1 + 1979 001e 2A46 mov r2, r5 + 1980 0020 04F13401 add r1, r4, #52 + 1981 0024 6078 ldrb r0, [r4, #1] @ zero_extendqisi2 + 1982 .LVL217: + 925:Middlewares/Third_Party/FatFs/src/ff.c **** sector = 0xFFFFFFFF; /* Invalidate window if data is not reliable */ + 1983 .loc 1 925 8 view .LVU605 + 1984 0026 FFF7FEFF bl disk_read + 1985 .LVL218: + 925:Middlewares/Third_Party/FatFs/src/ff.c **** sector = 0xFFFFFFFF; /* Invalidate window if data is not reliable */ + 1986 .loc 1 925 7 view .LVU606 + 1987 002a 10B1 cbz r0, .L163 + 927:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1988 .loc 1 927 9 view .LVU607 + 1989 002c 0126 movs r6, #1 + 926:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 1990 .loc 1 926 12 view .LVU608 + 1991 002e 4FF0FF35 mov r5, #-1 + 1992 .LVL219: + 1993 .L163: + 929:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1994 .loc 1 929 4 is_stmt 1 view .LVU609 + 929:Middlewares/Third_Party/FatFs/src/ff.c **** } + 1995 .loc 1 929 16 is_stmt 0 view .LVU610 + 1996 0032 2563 str r5, [r4, #48] + 1997 0034 E9E7 b .L162 + ARM GAS /tmp/cc5lWXRL.s page 145 + + + 1998 .cfi_endproc + 1999 .LFE1197: + 2001 .section .text.check_fs,"ax",%progbits + 2002 .align 1 + 2003 .syntax unified + 2004 .thumb + 2005 .thumb_func + 2006 .fpu fpv5-d16 + 2008 check_fs: + 2009 .LVL220: + 2010 .LFB1218: +2969:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 0; fs->winsect = 0xFFFFFFFF; /* Invaidate window */ + 2011 .loc 1 2969 1 is_stmt 1 view -0 + 2012 .cfi_startproc + 2013 @ args = 0, pretend = 0, frame = 0 + 2014 @ frame_needed = 0, uses_anonymous_args = 0 +2969:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 0; fs->winsect = 0xFFFFFFFF; /* Invaidate window */ + 2015 .loc 1 2969 1 is_stmt 0 view .LVU612 + 2016 0000 38B5 push {r3, r4, r5, lr} + 2017 .LCFI17: + 2018 .cfi_def_cfa_offset 16 + 2019 .cfi_offset 3, -16 + 2020 .cfi_offset 4, -12 + 2021 .cfi_offset 5, -8 + 2022 .cfi_offset 14, -4 + 2023 0002 0446 mov r4, r0 +2970:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, sect) != FR_OK) return 4; /* Load boot record */ + 2024 .loc 1 2970 2 is_stmt 1 view .LVU613 +2970:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, sect) != FR_OK) return 4; /* Load boot record */ + 2025 .loc 1 2970 12 is_stmt 0 view .LVU614 + 2026 0004 0023 movs r3, #0 + 2027 0006 C370 strb r3, [r0, #3] +2970:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, sect) != FR_OK) return 4; /* Load boot record */ + 2028 .loc 1 2970 17 is_stmt 1 view .LVU615 +2970:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, sect) != FR_OK) return 4; /* Load boot record */ + 2029 .loc 1 2970 29 is_stmt 0 view .LVU616 + 2030 0008 4FF0FF33 mov r3, #-1 + 2031 000c 0363 str r3, [r0, #48] +2971:Middlewares/Third_Party/FatFs/src/ff.c **** + 2032 .loc 1 2971 2 is_stmt 1 view .LVU617 +2971:Middlewares/Third_Party/FatFs/src/ff.c **** + 2033 .loc 1 2971 6 is_stmt 0 view .LVU618 + 2034 000e FFF7FEFF bl move_window + 2035 .LVL221: +2971:Middlewares/Third_Party/FatFs/src/ff.c **** + 2036 .loc 1 2971 5 view .LVU619 + 2037 0012 30BB cbnz r0, .L171 + 2038 0014 0546 mov r5, r0 +2973:Middlewares/Third_Party/FatFs/src/ff.c **** + 2039 .loc 1 2973 2 is_stmt 1 view .LVU620 +2973:Middlewares/Third_Party/FatFs/src/ff.c **** + 2040 .loc 1 2973 6 is_stmt 0 view .LVU621 + 2041 0016 04F23220 addw r0, r4, #562 + 2042 001a FFF7FEFF bl ld_word + 2043 .LVL222: +2973:Middlewares/Third_Party/FatFs/src/ff.c **** + 2044 .loc 1 2973 5 view .LVU622 + ARM GAS /tmp/cc5lWXRL.s page 146 + + + 2045 001e 4AF65523 movw r3, #43605 + 2046 0022 9842 cmp r0, r3 + 2047 0024 1FD1 bne .L172 +2975:Middlewares/Third_Party/FatFs/src/ff.c **** if ((ld_dword(fs->win + BS_FilSysType) & 0xFFFFFF) == 0x544146) return 0; /* Check "FAT" string * + 2048 .loc 1 2975 2 is_stmt 1 view .LVU623 +2975:Middlewares/Third_Party/FatFs/src/ff.c **** if ((ld_dword(fs->win + BS_FilSysType) & 0xFFFFFF) == 0x544146) return 0; /* Check "FAT" string * + 2049 .loc 1 2975 13 is_stmt 0 view .LVU624 + 2050 0026 94F83430 ldrb r3, [r4, #52] @ zero_extendqisi2 +2975:Middlewares/Third_Party/FatFs/src/ff.c **** if ((ld_dword(fs->win + BS_FilSysType) & 0xFFFFFF) == 0x544146) return 0; /* Check "FAT" string * + 2051 .loc 1 2975 5 view .LVU625 + 2052 002a E92B cmp r3, #233 + 2053 002c 07D0 beq .L170 +2975:Middlewares/Third_Party/FatFs/src/ff.c **** if ((ld_dword(fs->win + BS_FilSysType) & 0xFFFFFF) == 0x544146) return 0; /* Check "FAT" string * + 2054 .loc 1 2975 66 discriminator 1 view .LVU626 + 2055 002e 636B ldr r3, [r4, #52] + 2056 0030 03F0FF13 and r3, r3, #16711935 +2975:Middlewares/Third_Party/FatFs/src/ff.c **** if ((ld_dword(fs->win + BS_FilSysType) & 0xFFFFFF) == 0x544146) return 0; /* Check "FAT" string * + 2057 .loc 1 2975 34 discriminator 1 view .LVU627 + 2058 0034 0D4A ldr r2, .L175 + 2059 0036 9342 cmp r3, r2 + 2060 0038 01D0 beq .L170 +2982:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2061 .loc 1 2982 9 view .LVU628 + 2062 003a 0225 movs r5, #2 + 2063 003c 14E0 b .L169 + 2064 .L170: +2976:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_dword(fs->win + BS_FilSysType32) == 0x33544146) return 0; /* Check "FAT3" string */ + 2065 .loc 1 2976 3 is_stmt 1 view .LVU629 +2976:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_dword(fs->win + BS_FilSysType32) == 0x33544146) return 0; /* Check "FAT3" string */ + 2066 .loc 1 2976 8 is_stmt 0 view .LVU630 + 2067 003e 04F16A00 add r0, r4, #106 + 2068 0042 FFF7FEFF bl ld_dword + 2069 .LVL223: +2976:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_dword(fs->win + BS_FilSysType32) == 0x33544146) return 0; /* Check "FAT3" string */ + 2070 .loc 1 2976 42 view .LVU631 + 2071 0046 20F07F40 bic r0, r0, #-16777216 +2976:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_dword(fs->win + BS_FilSysType32) == 0x33544146) return 0; /* Check "FAT3" string */ + 2072 .loc 1 2976 6 view .LVU632 + 2073 004a 094B ldr r3, .L175+4 + 2074 004c 9842 cmp r0, r3 + 2075 004e 0BD0 beq .L169 +2977:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2076 .loc 1 2977 3 is_stmt 1 view .LVU633 +2977:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2077 .loc 1 2977 7 is_stmt 0 view .LVU634 + 2078 0050 04F18600 add r0, r4, #134 + 2079 0054 FFF7FEFF bl ld_dword + 2080 .LVL224: +2977:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2081 .loc 1 2977 6 view .LVU635 + 2082 0058 064B ldr r3, .L175+8 + 2083 005a 9842 cmp r0, r3 + 2084 005c 04D0 beq .L169 +2982:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2085 .loc 1 2982 9 view .LVU636 + 2086 005e 0225 movs r5, #2 + 2087 0060 02E0 b .L169 + ARM GAS /tmp/cc5lWXRL.s page 147 + + + 2088 .L171: +2971:Middlewares/Third_Party/FatFs/src/ff.c **** + 2089 .loc 1 2971 45 view .LVU637 + 2090 0062 0425 movs r5, #4 + 2091 0064 00E0 b .L169 + 2092 .L172: +2973:Middlewares/Third_Party/FatFs/src/ff.c **** + 2093 .loc 1 2973 51 view .LVU638 + 2094 0066 0325 movs r5, #3 + 2095 .L169: +2983:Middlewares/Third_Party/FatFs/src/ff.c **** + 2096 .loc 1 2983 1 view .LVU639 + 2097 0068 2846 mov r0, r5 + 2098 006a 38BD pop {r3, r4, r5, pc} + 2099 .LVL225: + 2100 .L176: +2983:Middlewares/Third_Party/FatFs/src/ff.c **** + 2101 .loc 1 2983 1 view .LVU640 + 2102 .align 2 + 2103 .L175: + 2104 006c EB009000 .word 9437419 + 2105 0070 46415400 .word 5521734 + 2106 0074 46415433 .word 861159750 + 2107 .cfi_endproc + 2108 .LFE1218: + 2110 .section .text.find_volume,"ax",%progbits + 2111 .align 1 + 2112 .syntax unified + 2113 .thumb + 2114 .thumb_func + 2115 .fpu fpv5-d16 + 2117 find_volume: + 2118 .LVL226: + 2119 .LFB1219: +2998:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE fmt, *pt; + 2120 .loc 1 2998 1 is_stmt 1 view -0 + 2121 .cfi_startproc + 2122 @ args = 0, pretend = 0, frame = 24 + 2123 @ frame_needed = 0, uses_anonymous_args = 0 +2998:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE fmt, *pt; + 2124 .loc 1 2998 1 is_stmt 0 view .LVU642 + 2125 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 2126 .LCFI18: + 2127 .cfi_def_cfa_offset 36 + 2128 .cfi_offset 4, -36 + 2129 .cfi_offset 5, -32 + 2130 .cfi_offset 6, -28 + 2131 .cfi_offset 7, -24 + 2132 .cfi_offset 8, -20 + 2133 .cfi_offset 9, -16 + 2134 .cfi_offset 10, -12 + 2135 .cfi_offset 11, -8 + 2136 .cfi_offset 14, -4 + 2137 0004 87B0 sub sp, sp, #28 + 2138 .LCFI19: + 2139 .cfi_def_cfa_offset 64 + 2140 0006 0D46 mov r5, r1 + ARM GAS /tmp/cc5lWXRL.s page 148 + + + 2141 0008 1646 mov r6, r2 +2999:Middlewares/Third_Party/FatFs/src/ff.c **** int vol; + 2142 .loc 1 2999 2 is_stmt 1 view .LVU643 +3000:Middlewares/Third_Party/FatFs/src/ff.c **** DSTATUS stat; + 2143 .loc 1 3000 2 view .LVU644 +3001:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD bsect, fasize, tsect, sysect, nclst, szbfat, br[4]; + 2144 .loc 1 3001 2 view .LVU645 +3002:Middlewares/Third_Party/FatFs/src/ff.c **** WORD nrsv; + 2145 .loc 1 3002 2 view .LVU646 +3003:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 2146 .loc 1 3003 2 view .LVU647 +3004:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; + 2147 .loc 1 3004 2 view .LVU648 +3005:Middlewares/Third_Party/FatFs/src/ff.c **** + 2148 .loc 1 3005 2 view .LVU649 +3009:Middlewares/Third_Party/FatFs/src/ff.c **** vol = get_ldnumber(path); + 2149 .loc 1 3009 2 view .LVU650 +3009:Middlewares/Third_Party/FatFs/src/ff.c **** vol = get_ldnumber(path); + 2150 .loc 1 3009 7 is_stmt 0 view .LVU651 + 2151 000a 0023 movs r3, #0 + 2152 000c 0B60 str r3, [r1] +3010:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; + 2153 .loc 1 3010 2 is_stmt 1 view .LVU652 +3010:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; + 2154 .loc 1 3010 8 is_stmt 0 view .LVU653 + 2155 000e FFF7FEFF bl get_ldnumber + 2156 .LVL227: +3011:Middlewares/Third_Party/FatFs/src/ff.c **** + 2157 .loc 1 3011 2 is_stmt 1 view .LVU654 +3011:Middlewares/Third_Party/FatFs/src/ff.c **** + 2158 .loc 1 3011 5 is_stmt 0 view .LVU655 + 2159 0012 071E subs r7, r0, #0 + 2160 0014 C0F26681 blt .L195 +3014:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fs) return FR_NOT_ENABLED; /* Is the file system object available? */ + 2161 .loc 1 3014 2 is_stmt 1 view .LVU656 +3014:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fs) return FR_NOT_ENABLED; /* Is the file system object available? */ + 2162 .loc 1 3014 5 is_stmt 0 view .LVU657 + 2163 0018 BF4B ldr r3, .L229 + 2164 001a 53F82740 ldr r4, [r3, r7, lsl #2] + 2165 .LVL228: +3015:Middlewares/Third_Party/FatFs/src/ff.c **** + 2166 .loc 1 3015 2 is_stmt 1 view .LVU658 +3015:Middlewares/Third_Party/FatFs/src/ff.c **** + 2167 .loc 1 3015 5 is_stmt 0 view .LVU659 + 2168 001e 002C cmp r4, #0 + 2169 0020 00F06581 beq .L196 +3017:Middlewares/Third_Party/FatFs/src/ff.c **** *rfs = fs; /* Return pointer to the file system object */ + 2170 .loc 1 3017 14 is_stmt 1 view .LVU660 +3018:Middlewares/Third_Party/FatFs/src/ff.c **** + 2171 .loc 1 3018 2 view .LVU661 +3018:Middlewares/Third_Party/FatFs/src/ff.c **** + 2172 .loc 1 3018 7 is_stmt 0 view .LVU662 + 2173 0024 2C60 str r4, [r5] +3020:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type) { /* If the volume has been mounted */ + 2174 .loc 1 3020 2 is_stmt 1 view .LVU663 +3020:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type) { /* If the volume has been mounted */ + 2175 .loc 1 3020 7 is_stmt 0 view .LVU664 + ARM GAS /tmp/cc5lWXRL.s page 149 + + + 2176 0026 06F0FE06 and r6, r6, #254 + 2177 .LVL229: +3021:Middlewares/Third_Party/FatFs/src/ff.c **** stat = disk_status(fs->drv); + 2178 .loc 1 3021 2 is_stmt 1 view .LVU665 +3021:Middlewares/Third_Party/FatFs/src/ff.c **** stat = disk_status(fs->drv); + 2179 .loc 1 3021 8 is_stmt 0 view .LVU666 + 2180 002a 2378 ldrb r3, [r4] @ zero_extendqisi2 +3021:Middlewares/Third_Party/FatFs/src/ff.c **** stat = disk_status(fs->drv); + 2181 .loc 1 3021 5 view .LVU667 + 2182 002c 73B1 cbz r3, .L179 +3022:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized */ + 2183 .loc 1 3022 3 is_stmt 1 view .LVU668 +3022:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized */ + 2184 .loc 1 3022 10 is_stmt 0 view .LVU669 + 2185 002e 6078 ldrb r0, [r4, #1] @ zero_extendqisi2 + 2186 .LVL230: +3022:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(stat & STA_NOINIT)) { /* and the physical drive is kept initialized */ + 2187 .loc 1 3022 10 view .LVU670 + 2188 0030 FFF7FEFF bl disk_status + 2189 .LVL231: +3023:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_READONLY && mode && (stat & STA_PROTECT)) { /* Check write protection if needed */ + 2190 .loc 1 3023 3 is_stmt 1 view .LVU671 +3023:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_READONLY && mode && (stat & STA_PROTECT)) { /* Check write protection if needed */ + 2191 .loc 1 3023 6 is_stmt 0 view .LVU672 + 2192 0034 10F00105 ands r5, r0, #1 + 2193 .LVL232: +3023:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_READONLY && mode && (stat & STA_PROTECT)) { /* Check write protection if needed */ + 2194 .loc 1 3023 6 view .LVU673 + 2195 0038 08D1 bne .L179 +3024:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_WRITE_PROTECTED; + 2196 .loc 1 3024 4 is_stmt 1 view .LVU674 +3024:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_WRITE_PROTECTED; + 2197 .loc 1 3024 7 is_stmt 0 view .LVU675 + 2198 003a 002E cmp r6, #0 + 2199 003c 00F05381 beq .L178 +3024:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_WRITE_PROTECTED; + 2200 .loc 1 3024 30 discriminator 1 view .LVU676 + 2201 0040 10F0040F tst r0, #4 + 2202 0044 00F04F81 beq .L178 +3025:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2203 .loc 1 3025 12 view .LVU677 + 2204 0048 0A25 movs r5, #10 + 2205 004a 4CE1 b .L178 + 2206 .LVL233: + 2207 .L179: +3034:Middlewares/Third_Party/FatFs/src/ff.c **** fs->drv = LD2PD(vol); /* Bind the logical drive and a physical drive */ + 2208 .loc 1 3034 2 is_stmt 1 view .LVU678 +3034:Middlewares/Third_Party/FatFs/src/ff.c **** fs->drv = LD2PD(vol); /* Bind the logical drive and a physical drive */ + 2209 .loc 1 3034 14 is_stmt 0 view .LVU679 + 2210 004c 0023 movs r3, #0 + 2211 004e 2370 strb r3, [r4] +3035:Middlewares/Third_Party/FatFs/src/ff.c **** stat = disk_initialize(fs->drv); /* Initialize the physical drive */ + 2212 .loc 1 3035 2 is_stmt 1 view .LVU680 +3035:Middlewares/Third_Party/FatFs/src/ff.c **** stat = disk_initialize(fs->drv); /* Initialize the physical drive */ + 2213 .loc 1 3035 12 is_stmt 0 view .LVU681 + 2214 0050 F8B2 uxtb r0, r7 +3035:Middlewares/Third_Party/FatFs/src/ff.c **** stat = disk_initialize(fs->drv); /* Initialize the physical drive */ + ARM GAS /tmp/cc5lWXRL.s page 150 + + + 2215 .loc 1 3035 10 view .LVU682 + 2216 0052 6070 strb r0, [r4, #1] +3036:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_NOINIT) { /* Check if the initialization succeeded */ + 2217 .loc 1 3036 2 is_stmt 1 view .LVU683 +3036:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_NOINIT) { /* Check if the initialization succeeded */ + 2218 .loc 1 3036 9 is_stmt 0 view .LVU684 + 2219 0054 FFF7FEFF bl disk_initialize + 2220 .LVL234: +3037:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_NOT_READY; /* Failed to initialize due to no medium or hard error */ + 2221 .loc 1 3037 2 is_stmt 1 view .LVU685 +3037:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_NOT_READY; /* Failed to initialize due to no medium or hard error */ + 2222 .loc 1 3037 5 is_stmt 0 view .LVU686 + 2223 0058 10F0010F tst r0, #1 + 2224 005c 40F04981 bne .L198 +3040:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_WRITE_PROTECTED; + 2225 .loc 1 3040 2 is_stmt 1 view .LVU687 +3040:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_WRITE_PROTECTED; + 2226 .loc 1 3040 5 is_stmt 0 view .LVU688 + 2227 0060 1EB1 cbz r6, .L180 +3040:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_WRITE_PROTECTED; + 2228 .loc 1 3040 28 discriminator 1 view .LVU689 + 2229 0062 10F0040F tst r0, #4 + 2230 0066 40F04681 bne .L199 + 2231 .L180: +3044:Middlewares/Third_Party/FatFs/src/ff.c **** if (SS(fs) > _MAX_SS || SS(fs) < _MIN_SS || (SS(fs) & (SS(fs) - 1))) return FR_DISK_ERR; + 2232 .loc 1 3044 2 is_stmt 1 view .LVU690 +3044:Middlewares/Third_Party/FatFs/src/ff.c **** if (SS(fs) > _MAX_SS || SS(fs) < _MIN_SS || (SS(fs) & (SS(fs) - 1))) return FR_DISK_ERR; + 2233 .loc 1 3044 6 is_stmt 0 view .LVU691 + 2234 006a 04F10C02 add r2, r4, #12 + 2235 006e 0221 movs r1, #2 + 2236 0070 6078 ldrb r0, [r4, #1] @ zero_extendqisi2 + 2237 .LVL235: +3044:Middlewares/Third_Party/FatFs/src/ff.c **** if (SS(fs) > _MAX_SS || SS(fs) < _MIN_SS || (SS(fs) & (SS(fs) - 1))) return FR_DISK_ERR; + 2238 .loc 1 3044 6 view .LVU692 + 2239 0072 FFF7FEFF bl disk_ioctl + 2240 .LVL236: +3044:Middlewares/Third_Party/FatFs/src/ff.c **** if (SS(fs) > _MAX_SS || SS(fs) < _MIN_SS || (SS(fs) & (SS(fs) - 1))) return FR_DISK_ERR; + 2241 .loc 1 3044 5 view .LVU693 + 2242 0076 0546 mov r5, r0 + 2243 0078 0028 cmp r0, #0 + 2244 007a 40F03E81 bne .L200 +3045:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2245 .loc 1 3045 2 is_stmt 1 view .LVU694 +3045:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2246 .loc 1 3045 6 is_stmt 0 view .LVU695 + 2247 007e A289 ldrh r2, [r4, #12] +3045:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2248 .loc 1 3045 23 view .LVU696 + 2249 0080 A2F50073 sub r3, r2, #512 + 2250 0084 9BB2 uxth r3, r3 +3045:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2251 .loc 1 3045 5 view .LVU697 + 2252 0086 B3F5606F cmp r3, #3584 + 2253 008a 00F23881 bhi .L201 +3045:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2254 .loc 1 3045 64 discriminator 2 view .LVU698 + 2255 008e 531E subs r3, r2, #1 + ARM GAS /tmp/cc5lWXRL.s page 151 + + +3045:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2256 .loc 1 3045 43 discriminator 2 view .LVU699 + 2257 0090 1A42 tst r2, r3 + 2258 0092 01D0 beq .L223 +3045:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2259 .loc 1 3045 78 view .LVU700 + 2260 0094 0125 movs r5, #1 + 2261 0096 26E1 b .L178 + 2262 .L223: +3049:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = check_fs(fs, bsect); /* Load sector 0 and check if it is an FAT-VBR as SFD */ + 2263 .loc 1 3049 2 is_stmt 1 view .LVU701 + 2264 .LVL237: +3050:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == 2 || (fmt < 2 && LD2PT(vol) != 0)) { /* Not an FAT-VBR or forced partition number */ + 2265 .loc 1 3050 2 view .LVU702 +3050:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == 2 || (fmt < 2 && LD2PT(vol) != 0)) { /* Not an FAT-VBR or forced partition number */ + 2266 .loc 1 3050 8 is_stmt 0 view .LVU703 + 2267 0098 0021 movs r1, #0 + 2268 009a 2046 mov r0, r4 + 2269 009c FFF7FEFF bl check_fs + 2270 .LVL238: +3051:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < 4; i++) { /* Get partition offset */ + 2271 .loc 1 3051 2 is_stmt 1 view .LVU704 +3051:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < 4; i++) { /* Get partition offset */ + 2272 .loc 1 3051 5 is_stmt 0 view .LVU705 + 2273 00a0 0228 cmp r0, #2 + 2274 00a2 00F0C180 beq .L203 +3049:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = check_fs(fs, bsect); /* Load sector 0 and check if it is an FAT-VBR as SFD */ + 2275 .loc 1 3049 8 view .LVU706 + 2276 00a6 0026 movs r6, #0 + 2277 .LVL239: + 2278 .L182: +3063:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt >= 2) return FR_NO_FILESYSTEM; /* No FAT volume is found */ + 2279 .loc 1 3063 2 is_stmt 1 view .LVU707 +3063:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt >= 2) return FR_NO_FILESYSTEM; /* No FAT volume is found */ + 2280 .loc 1 3063 5 is_stmt 0 view .LVU708 + 2281 00a8 0428 cmp r0, #4 + 2282 00aa 00F02A81 beq .L206 +3064:Middlewares/Third_Party/FatFs/src/ff.c **** + 2283 .loc 1 3064 2 is_stmt 1 view .LVU709 +3064:Middlewares/Third_Party/FatFs/src/ff.c **** + 2284 .loc 1 3064 5 is_stmt 0 view .LVU710 + 2285 00ae 0128 cmp r0, #1 + 2286 00b0 00F22981 bhi .L207 +3116:Middlewares/Third_Party/FatFs/src/ff.c **** + 2287 .loc 1 3116 3 is_stmt 1 view .LVU711 +3116:Middlewares/Third_Party/FatFs/src/ff.c **** + 2288 .loc 1 3116 7 is_stmt 0 view .LVU712 + 2289 00b4 04F13F00 add r0, r4, #63 + 2290 .LVL240: +3116:Middlewares/Third_Party/FatFs/src/ff.c **** + 2291 .loc 1 3116 7 view .LVU713 + 2292 00b8 FFF7FEFF bl ld_word + 2293 .LVL241: +3116:Middlewares/Third_Party/FatFs/src/ff.c **** + 2294 .loc 1 3116 44 view .LVU714 + 2295 00bc B4F80C80 ldrh r8, [r4, #12] +3116:Middlewares/Third_Party/FatFs/src/ff.c **** + ARM GAS /tmp/cc5lWXRL.s page 152 + + + 2296 .loc 1 3116 6 view .LVU715 + 2297 00c0 4045 cmp r0, r8 + 2298 00c2 40F02281 bne .L208 +3118:Middlewares/Third_Party/FatFs/src/ff.c **** if (fasize == 0) fasize = ld_dword(fs->win + BPB_FATSz32); + 2299 .loc 1 3118 3 is_stmt 1 view .LVU716 +3118:Middlewares/Third_Party/FatFs/src/ff.c **** if (fasize == 0) fasize = ld_dword(fs->win + BPB_FATSz32); + 2300 .loc 1 3118 12 is_stmt 0 view .LVU717 + 2301 00c6 04F14A00 add r0, r4, #74 + 2302 00ca FFF7FEFF bl ld_word + 2303 .LVL242: +3118:Middlewares/Third_Party/FatFs/src/ff.c **** if (fasize == 0) fasize = ld_dword(fs->win + BPB_FATSz32); + 2304 .loc 1 3118 10 view .LVU718 + 2305 00ce 0746 mov r7, r0 + 2306 .LVL243: +3119:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsize = fasize; + 2307 .loc 1 3119 3 is_stmt 1 view .LVU719 +3119:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsize = fasize; + 2308 .loc 1 3119 6 is_stmt 0 view .LVU720 + 2309 00d0 20B9 cbnz r0, .L187 +3119:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsize = fasize; + 2310 .loc 1 3119 20 is_stmt 1 discriminator 1 view .LVU721 +3119:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsize = fasize; + 2311 .loc 1 3119 29 is_stmt 0 discriminator 1 view .LVU722 + 2312 00d2 04F15800 add r0, r4, #88 + 2313 .LVL244: +3119:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsize = fasize; + 2314 .loc 1 3119 29 discriminator 1 view .LVU723 + 2315 00d6 FFF7FEFF bl ld_dword + 2316 .LVL245: + 2317 00da 0746 mov r7, r0 + 2318 .LVL246: + 2319 .L187: +3120:Middlewares/Third_Party/FatFs/src/ff.c **** + 2320 .loc 1 3120 3 is_stmt 1 view .LVU724 +3120:Middlewares/Third_Party/FatFs/src/ff.c **** + 2321 .loc 1 3120 13 is_stmt 0 view .LVU725 + 2322 00dc E761 str r7, [r4, #28] +3122:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_fats != 1 && fs->n_fats != 2) return FR_NO_FILESYSTEM; /* (Must be 1 or 2) */ + 2323 .loc 1 3122 3 is_stmt 1 view .LVU726 +3122:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_fats != 1 && fs->n_fats != 2) return FR_NO_FILESYSTEM; /* (Must be 1 or 2) */ + 2324 .loc 1 3122 23 is_stmt 0 view .LVU727 + 2325 00de 94F84420 ldrb r2, [r4, #68] @ zero_extendqisi2 +3122:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_fats != 1 && fs->n_fats != 2) return FR_NO_FILESYSTEM; /* (Must be 1 or 2) */ + 2326 .loc 1 3122 14 view .LVU728 + 2327 00e2 A270 strb r2, [r4, #2] +3123:Middlewares/Third_Party/FatFs/src/ff.c **** fasize *= fs->n_fats; /* Number of sectors for FAT area */ + 2328 .loc 1 3123 3 is_stmt 1 view .LVU729 +3123:Middlewares/Third_Party/FatFs/src/ff.c **** fasize *= fs->n_fats; /* Number of sectors for FAT area */ + 2329 .loc 1 3123 23 is_stmt 0 view .LVU730 + 2330 00e4 531E subs r3, r2, #1 + 2331 00e6 DBB2 uxtb r3, r3 +3123:Middlewares/Third_Party/FatFs/src/ff.c **** fasize *= fs->n_fats; /* Number of sectors for FAT area */ + 2332 .loc 1 3123 6 view .LVU731 + 2333 00e8 012B cmp r3, #1 + 2334 00ea 00F21081 bhi .L209 +3124:Middlewares/Third_Party/FatFs/src/ff.c **** + 2335 .loc 1 3124 3 is_stmt 1 view .LVU732 + ARM GAS /tmp/cc5lWXRL.s page 153 + + +3124:Middlewares/Third_Party/FatFs/src/ff.c **** + 2336 .loc 1 3124 10 is_stmt 0 view .LVU733 + 2337 00ee 07FB02F3 mul r3, r7, r2 + 2338 00f2 0093 str r3, [sp] + 2339 .LVL247: +3126:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->csize == 0 || (fs->csize & (fs->csize - 1))) return FR_NO_FILESYSTEM; /* (Must be power o + 2340 .loc 1 3126 3 is_stmt 1 view .LVU734 +3126:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->csize == 0 || (fs->csize & (fs->csize - 1))) return FR_NO_FILESYSTEM; /* (Must be power o + 2341 .loc 1 3126 22 is_stmt 0 view .LVU735 + 2342 00f4 94F84190 ldrb r9, [r4, #65] @ zero_extendqisi2 +3126:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->csize == 0 || (fs->csize & (fs->csize - 1))) return FR_NO_FILESYSTEM; /* (Must be power o + 2343 .loc 1 3126 13 view .LVU736 + 2344 00f8 A4F80A90 strh r9, [r4, #10] @ movhi +3127:Middlewares/Third_Party/FatFs/src/ff.c **** + 2345 .loc 1 3127 3 is_stmt 1 view .LVU737 +3127:Middlewares/Third_Party/FatFs/src/ff.c **** + 2346 .loc 1 3127 6 is_stmt 0 view .LVU738 + 2347 00fc B9F1000F cmp r9, #0 + 2348 0100 00F00781 beq .L210 +3127:Middlewares/Third_Party/FatFs/src/ff.c **** + 2349 .loc 1 3127 49 discriminator 2 view .LVU739 + 2350 0104 09F1FF33 add r3, r9, #-1 + 2351 .LVL248: +3127:Middlewares/Third_Party/FatFs/src/ff.c **** + 2352 .loc 1 3127 22 discriminator 2 view .LVU740 + 2353 0108 19EA030F tst r9, r3 + 2354 010c 40F00C81 bne .L211 +3129:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir % (SS(fs) / SZDIRE)) return FR_NO_FILESYSTEM; /* (Must be sector aligned) */ + 2355 .loc 1 3129 3 is_stmt 1 view .LVU741 +3129:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir % (SS(fs) / SZDIRE)) return FR_NO_FILESYSTEM; /* (Must be sector aligned) */ + 2356 .loc 1 3129 19 is_stmt 0 view .LVU742 + 2357 0110 04F14500 add r0, r4, #69 + 2358 0114 FFF7FEFF bl ld_word + 2359 .LVL249: + 2360 0118 8246 mov r10, r0 +3129:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir % (SS(fs) / SZDIRE)) return FR_NO_FILESYSTEM; /* (Must be sector aligned) */ + 2361 .loc 1 3129 17 view .LVU743 + 2362 011a 2081 strh r0, [r4, #8] @ movhi +3130:Middlewares/Third_Party/FatFs/src/ff.c **** + 2363 .loc 1 3130 3 is_stmt 1 view .LVU744 +3130:Middlewares/Third_Party/FatFs/src/ff.c **** + 2364 .loc 1 3130 7 is_stmt 0 view .LVU745 + 2365 011c 4FEA581B lsr fp, r8, #5 + 2366 0120 B0FBFBF3 udiv r3, r0, fp + 2367 0124 0BFB1303 mls r3, fp, r3, r0 + 2368 0128 9BB2 uxth r3, r3 +3130:Middlewares/Third_Party/FatFs/src/ff.c **** + 2369 .loc 1 3130 6 view .LVU746 + 2370 012a 002B cmp r3, #0 + 2371 012c 40F0FE80 bne .L212 +3132:Middlewares/Third_Party/FatFs/src/ff.c **** if (tsect == 0) tsect = ld_dword(fs->win + BPB_TotSec32); + 2372 .loc 1 3132 3 is_stmt 1 view .LVU747 +3132:Middlewares/Third_Party/FatFs/src/ff.c **** if (tsect == 0) tsect = ld_dword(fs->win + BPB_TotSec32); + 2373 .loc 1 3132 11 is_stmt 0 view .LVU748 + 2374 0130 04F14700 add r0, r4, #71 + 2375 0134 FFF7FEFF bl ld_word + 2376 .LVL250: + ARM GAS /tmp/cc5lWXRL.s page 154 + + +3132:Middlewares/Third_Party/FatFs/src/ff.c **** if (tsect == 0) tsect = ld_dword(fs->win + BPB_TotSec32); + 2377 .loc 1 3132 9 view .LVU749 + 2378 0138 0190 str r0, [sp, #4] + 2379 .LVL251: +3133:Middlewares/Third_Party/FatFs/src/ff.c **** + 2380 .loc 1 3133 3 is_stmt 1 view .LVU750 +3133:Middlewares/Third_Party/FatFs/src/ff.c **** + 2381 .loc 1 3133 6 is_stmt 0 view .LVU751 + 2382 013a 20B9 cbnz r0, .L188 +3133:Middlewares/Third_Party/FatFs/src/ff.c **** + 2383 .loc 1 3133 19 is_stmt 1 discriminator 1 view .LVU752 +3133:Middlewares/Third_Party/FatFs/src/ff.c **** + 2384 .loc 1 3133 27 is_stmt 0 discriminator 1 view .LVU753 + 2385 013c 04F15400 add r0, r4, #84 + 2386 .LVL252: +3133:Middlewares/Third_Party/FatFs/src/ff.c **** + 2387 .loc 1 3133 27 discriminator 1 view .LVU754 + 2388 0140 FFF7FEFF bl ld_dword + 2389 .LVL253: + 2390 0144 0190 str r0, [sp, #4] + 2391 .LVL254: + 2392 .L188: +3135:Middlewares/Third_Party/FatFs/src/ff.c **** if (nrsv == 0) return FR_NO_FILESYSTEM; /* (Must not be 0) */ + 2393 .loc 1 3135 3 is_stmt 1 view .LVU755 +3135:Middlewares/Third_Party/FatFs/src/ff.c **** if (nrsv == 0) return FR_NO_FILESYSTEM; /* (Must not be 0) */ + 2394 .loc 1 3135 10 is_stmt 0 view .LVU756 + 2395 0146 04F14200 add r0, r4, #66 + 2396 014a FFF7FEFF bl ld_word + 2397 .LVL255: +3136:Middlewares/Third_Party/FatFs/src/ff.c **** + 2398 .loc 1 3136 3 is_stmt 1 view .LVU757 +3136:Middlewares/Third_Party/FatFs/src/ff.c **** + 2399 .loc 1 3136 6 is_stmt 0 view .LVU758 + 2400 014e 0146 mov r1, r0 + 2401 0150 0028 cmp r0, #0 + 2402 0152 00F0ED80 beq .L213 +3139:Middlewares/Third_Party/FatFs/src/ff.c **** if (tsect < sysect) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + 2403 .loc 1 3139 3 is_stmt 1 view .LVU759 +3139:Middlewares/Third_Party/FatFs/src/ff.c **** if (tsect < sysect) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + 2404 .loc 1 3139 17 is_stmt 0 view .LVU760 + 2405 0156 009B ldr r3, [sp] + 2406 0158 C318 adds r3, r0, r3 +3139:Middlewares/Third_Party/FatFs/src/ff.c **** if (tsect < sysect) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + 2407 .loc 1 3139 42 view .LVU761 + 2408 015a BAFBFBFB udiv fp, r10, fp +3139:Middlewares/Third_Party/FatFs/src/ff.c **** if (tsect < sysect) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + 2409 .loc 1 3139 10 view .LVU762 + 2410 015e 5B44 add r3, r3, fp + 2411 .LVL256: +3140:Middlewares/Third_Party/FatFs/src/ff.c **** nclst = (tsect - sysect) / fs->csize; /* Number of clusters */ + 2412 .loc 1 3140 3 is_stmt 1 view .LVU763 +3140:Middlewares/Third_Party/FatFs/src/ff.c **** nclst = (tsect - sysect) / fs->csize; /* Number of clusters */ + 2413 .loc 1 3140 6 is_stmt 0 view .LVU764 + 2414 0160 019A ldr r2, [sp, #4] + 2415 0162 9A42 cmp r2, r3 + 2416 0164 C0F0E680 bcc .L214 +3141:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst == 0) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + ARM GAS /tmp/cc5lWXRL.s page 155 + + + 2417 .loc 1 3141 3 is_stmt 1 view .LVU765 +3141:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst == 0) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + 2418 .loc 1 3141 18 is_stmt 0 view .LVU766 + 2419 0168 D21A subs r2, r2, r3 +3141:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst == 0) return FR_NO_FILESYSTEM; /* (Invalid volume size) */ + 2420 .loc 1 3141 9 view .LVU767 + 2421 016a B2FBF9F0 udiv r0, r2, r9 + 2422 .LVL257: +3142:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; + 2423 .loc 1 3142 3 is_stmt 1 view .LVU768 +3142:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; + 2424 .loc 1 3142 6 is_stmt 0 view .LVU769 + 2425 016e 4A45 cmp r2, r9 + 2426 0170 C0F0E280 bcc .L215 +3143:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst <= MAX_FAT16) fmt = FS_FAT16; + 2427 .loc 1 3143 3 is_stmt 1 view .LVU770 + 2428 .LVL258: +3144:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst <= MAX_FAT12) fmt = FS_FAT12; + 2429 .loc 1 3144 3 view .LVU771 +3144:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst <= MAX_FAT12) fmt = FS_FAT12; + 2430 .loc 1 3144 6 is_stmt 0 view .LVU772 + 2431 0174 4FF6F572 movw r2, #65525 + 2432 0178 9042 cmp r0, r2 + 2433 017a 6DD9 bls .L216 +3143:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst <= MAX_FAT16) fmt = FS_FAT16; + 2434 .loc 1 3143 7 view .LVU773 + 2435 017c 4FF0030B mov fp, #3 + 2436 .L189: + 2437 .LVL259: +3145:Middlewares/Third_Party/FatFs/src/ff.c **** + 2438 .loc 1 3145 3 is_stmt 1 view .LVU774 +3145:Middlewares/Third_Party/FatFs/src/ff.c **** + 2439 .loc 1 3145 6 is_stmt 0 view .LVU775 + 2440 0180 40F6F572 movw r2, #4085 + 2441 0184 9042 cmp r0, r2 + 2442 0186 01D8 bhi .L190 +3145:Middlewares/Third_Party/FatFs/src/ff.c **** + 2443 .loc 1 3145 31 view .LVU776 + 2444 0188 4FF0010B mov fp, #1 + 2445 .LVL260: + 2446 .L190: +3148:Middlewares/Third_Party/FatFs/src/ff.c **** fs->volbase = bsect; /* Volume start sector */ + 2447 .loc 1 3148 3 is_stmt 1 view .LVU777 +3148:Middlewares/Third_Party/FatFs/src/ff.c **** fs->volbase = bsect; /* Volume start sector */ + 2448 .loc 1 3148 24 is_stmt 0 view .LVU778 + 2449 018c 00F10209 add r9, r0, #2 +3148:Middlewares/Third_Party/FatFs/src/ff.c **** fs->volbase = bsect; /* Volume start sector */ + 2450 .loc 1 3148 16 view .LVU779 + 2451 0190 C4F81890 str r9, [r4, #24] +3149:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fatbase = bsect + nrsv; /* FAT start sector */ + 2452 .loc 1 3149 3 is_stmt 1 view .LVU780 +3149:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fatbase = bsect + nrsv; /* FAT start sector */ + 2453 .loc 1 3149 15 is_stmt 0 view .LVU781 + 2454 0194 2662 str r6, [r4, #32] +3150:Middlewares/Third_Party/FatFs/src/ff.c **** fs->database = bsect + sysect; /* Data start sector */ + 2455 .loc 1 3150 3 is_stmt 1 view .LVU782 +3150:Middlewares/Third_Party/FatFs/src/ff.c **** fs->database = bsect + sysect; /* Data start sector */ + ARM GAS /tmp/cc5lWXRL.s page 156 + + + 2456 .loc 1 3150 23 is_stmt 0 view .LVU783 + 2457 0196 8A19 adds r2, r1, r6 +3150:Middlewares/Third_Party/FatFs/src/ff.c **** fs->database = bsect + sysect; /* Data start sector */ + 2458 .loc 1 3150 15 view .LVU784 + 2459 0198 6262 str r2, [r4, #36] +3151:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 2460 .loc 1 3151 3 is_stmt 1 view .LVU785 +3151:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 2461 .loc 1 3151 24 is_stmt 0 view .LVU786 + 2462 019a 3344 add r3, r3, r6 + 2463 .LVL261: +3151:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 2464 .loc 1 3151 16 view .LVU787 + 2465 019c E362 str r3, [r4, #44] +3152:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(fs->win + BPB_FSVer32) != 0) return FR_NO_FILESYSTEM; /* (Must be FAT32 revision 0.0 + 2466 .loc 1 3152 3 is_stmt 1 view .LVU788 +3152:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(fs->win + BPB_FSVer32) != 0) return FR_NO_FILESYSTEM; /* (Must be FAT32 revision 0.0 + 2467 .loc 1 3152 6 is_stmt 0 view .LVU789 + 2468 019e BBF1030F cmp fp, #3 + 2469 01a2 5CD0 beq .L224 +3158:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbase = fs->fatbase + fasize; /* Root directory start sector */ + 2470 .loc 1 3158 4 is_stmt 1 view .LVU790 +3158:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbase = fs->fatbase + fasize; /* Root directory start sector */ + 2471 .loc 1 3158 7 is_stmt 0 view .LVU791 + 2472 01a4 BAF1000F cmp r10, #0 + 2473 01a8 00F0CC80 beq .L220 +3159:Middlewares/Third_Party/FatFs/src/ff.c **** szbfat = (fmt == FS_FAT16) ? /* (Needed FAT size) */ + 2474 .loc 1 3159 4 is_stmt 1 view .LVU792 +3159:Middlewares/Third_Party/FatFs/src/ff.c **** szbfat = (fmt == FS_FAT16) ? /* (Needed FAT size) */ + 2475 .loc 1 3159 30 is_stmt 0 view .LVU793 + 2476 01ac 009B ldr r3, [sp] + 2477 01ae 1A44 add r2, r2, r3 +3159:Middlewares/Third_Party/FatFs/src/ff.c **** szbfat = (fmt == FS_FAT16) ? /* (Needed FAT size) */ + 2478 .loc 1 3159 16 view .LVU794 + 2479 01b0 A262 str r2, [r4, #40] +3160:Middlewares/Third_Party/FatFs/src/ff.c **** fs->n_fatent * 2 : fs->n_fatent * 3 / 2 + (fs->n_fatent & 1); + 2480 .loc 1 3160 4 is_stmt 1 view .LVU795 +3161:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2481 .loc 1 3161 22 is_stmt 0 view .LVU796 + 2482 01b2 BBF1020F cmp fp, #2 + 2483 01b6 63D0 beq .L225 +3161:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2484 .loc 1 3161 37 discriminator 2 view .LVU797 + 2485 01b8 09EB4902 add r2, r9, r9, lsl #1 +3161:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2486 .loc 1 3161 61 discriminator 2 view .LVU798 + 2487 01bc 09F00103 and r3, r9, #1 +3161:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2488 .loc 1 3161 22 discriminator 2 view .LVU799 + 2489 01c0 03EB5203 add r3, r3, r2, lsr #1 + 2490 .LVL262: + 2491 .L192: +3163:Middlewares/Third_Party/FatFs/src/ff.c **** + 2492 .loc 1 3163 3 is_stmt 1 view .LVU800 +3163:Middlewares/Third_Party/FatFs/src/ff.c **** + 2493 .loc 1 3163 27 is_stmt 0 view .LVU801 + 2494 01c4 4344 add r3, r3, r8 + ARM GAS /tmp/cc5lWXRL.s page 157 + + + 2495 .LVL263: +3163:Middlewares/Third_Party/FatFs/src/ff.c **** + 2496 .loc 1 3163 27 view .LVU802 + 2497 01c6 013B subs r3, r3, #1 +3163:Middlewares/Third_Party/FatFs/src/ff.c **** + 2498 .loc 1 3163 43 view .LVU803 + 2499 01c8 B3FBF8F8 udiv r8, r3, r8 +3163:Middlewares/Third_Party/FatFs/src/ff.c **** + 2500 .loc 1 3163 6 view .LVU804 + 2501 01cc B845 cmp r8, r7 + 2502 01ce 00F2BB80 bhi .L221 +3167:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag = 0x80; + 2503 .loc 1 3167 3 is_stmt 1 view .LVU805 +3167:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag = 0x80; + 2504 .loc 1 3167 33 is_stmt 0 view .LVU806 + 2505 01d2 4FF0FF33 mov r3, #-1 + 2506 01d6 6361 str r3, [r4, #20] +3167:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag = 0x80; + 2507 .loc 1 3167 17 view .LVU807 + 2508 01d8 2361 str r3, [r4, #16] +3168:Middlewares/Third_Party/FatFs/src/ff.c **** #if (_FS_NOFSINFO & 3) != 3 + 2509 .loc 1 3168 3 is_stmt 1 view .LVU808 +3168:Middlewares/Third_Party/FatFs/src/ff.c **** #if (_FS_NOFSINFO & 3) != 3 + 2510 .loc 1 3168 16 is_stmt 0 view .LVU809 + 2511 01da 8023 movs r3, #128 + 2512 01dc 2371 strb r3, [r4, #4] +3170:Middlewares/Third_Party/FatFs/src/ff.c **** && ld_word(fs->win + BPB_FSInfo32) == 1 + 2513 .loc 1 3170 3 is_stmt 1 view .LVU810 +3170:Middlewares/Third_Party/FatFs/src/ff.c **** && ld_word(fs->win + BPB_FSInfo32) == 1 + 2514 .loc 1 3170 6 is_stmt 0 view .LVU811 + 2515 01de BBF1030F cmp fp, #3 + 2516 01e2 50D0 beq .L226 + 2517 .L194: +3191:Middlewares/Third_Party/FatFs/src/ff.c **** fs->id = ++Fsid; /* File system mount ID */ + 2518 .loc 1 3191 2 is_stmt 1 view .LVU812 +3191:Middlewares/Third_Party/FatFs/src/ff.c **** fs->id = ++Fsid; /* File system mount ID */ + 2519 .loc 1 3191 14 is_stmt 0 view .LVU813 + 2520 01e4 84F800B0 strb fp, [r4] +3192:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN == 1 + 2521 .loc 1 3192 2 is_stmt 1 view .LVU814 +3192:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN == 1 + 2522 .loc 1 3192 11 is_stmt 0 view .LVU815 + 2523 01e8 4C4A ldr r2, .L229+4 + 2524 01ea 1388 ldrh r3, [r2] + 2525 01ec 0133 adds r3, r3, #1 + 2526 01ee 9BB2 uxth r3, r3 +3192:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN == 1 + 2527 .loc 1 3192 9 view .LVU816 + 2528 01f0 1380 strh r3, [r2] @ movhi + 2529 01f2 E380 strh r3, [r4, #6] @ movhi +3203:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2530 .loc 1 3203 2 is_stmt 1 view .LVU817 + 2531 01f4 2046 mov r0, r4 + 2532 01f6 FFF7FEFF bl clear_lock + 2533 .LVL264: +3205:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2534 .loc 1 3205 2 view .LVU818 + ARM GAS /tmp/cc5lWXRL.s page 158 + + +3205:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2535 .loc 1 3205 9 is_stmt 0 view .LVU819 + 2536 01fa 74E0 b .L178 + 2537 .LVL265: + 2538 .L204: +3054:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2539 .loc 1 3054 54 view .LVU820 + 2540 01fc 0020 movs r0, #0 + 2541 .LVL266: + 2542 .L183: +3054:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2543 .loc 1 3054 10 discriminator 4 view .LVU821 + 2544 01fe 06AB add r3, sp, #24 + 2545 0200 03EB8603 add r3, r3, r6, lsl #2 + 2546 0204 43F8100C str r0, [r3, #-16] +3052:Middlewares/Third_Party/FatFs/src/ff.c **** pt = fs->win + (MBR_Table + i * SZ_PTE); + 2547 .loc 1 3052 22 is_stmt 1 discriminator 4 view .LVU822 +3052:Middlewares/Third_Party/FatFs/src/ff.c **** pt = fs->win + (MBR_Table + i * SZ_PTE); + 2548 .loc 1 3052 23 is_stmt 0 discriminator 4 view .LVU823 + 2549 0208 0136 adds r6, r6, #1 + 2550 .LVL267: + 2551 .L181: +3052:Middlewares/Third_Party/FatFs/src/ff.c **** pt = fs->win + (MBR_Table + i * SZ_PTE); + 2552 .loc 1 3052 15 is_stmt 1 discriminator 2 view .LVU824 +3052:Middlewares/Third_Party/FatFs/src/ff.c **** pt = fs->win + (MBR_Table + i * SZ_PTE); + 2553 .loc 1 3052 3 is_stmt 0 discriminator 2 view .LVU825 + 2554 020a 032E cmp r6, #3 + 2555 020c 0ED8 bhi .L227 +3053:Middlewares/Third_Party/FatFs/src/ff.c **** br[i] = pt[PTE_System] ? ld_dword(pt + PTE_StLba) : 0; + 2556 .loc 1 3053 4 is_stmt 1 view .LVU826 +3053:Middlewares/Third_Party/FatFs/src/ff.c **** br[i] = pt[PTE_System] ? ld_dword(pt + PTE_StLba) : 0; + 2557 .loc 1 3053 9 is_stmt 0 view .LVU827 + 2558 020e 04F13400 add r0, r4, #52 +3053:Middlewares/Third_Party/FatFs/src/ff.c **** br[i] = pt[PTE_System] ? ld_dword(pt + PTE_StLba) : 0; + 2559 .loc 1 3053 34 view .LVU828 + 2560 0212 3301 lsls r3, r6, #4 +3053:Middlewares/Third_Party/FatFs/src/ff.c **** br[i] = pt[PTE_System] ? ld_dword(pt + PTE_StLba) : 0; + 2561 .loc 1 3053 30 view .LVU829 + 2562 0214 03F5DF73 add r3, r3, #446 +3053:Middlewares/Third_Party/FatFs/src/ff.c **** br[i] = pt[PTE_System] ? ld_dword(pt + PTE_StLba) : 0; + 2563 .loc 1 3053 7 view .LVU830 + 2564 0218 1844 add r0, r0, r3 + 2565 .LVL268: +3054:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2566 .loc 1 3054 4 is_stmt 1 view .LVU831 +3054:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2567 .loc 1 3054 14 is_stmt 0 view .LVU832 + 2568 021a 0379 ldrb r3, [r0, #4] @ zero_extendqisi2 +3054:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2569 .loc 1 3054 54 view .LVU833 + 2570 021c 002B cmp r3, #0 + 2571 021e EDD0 beq .L204 +3054:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2572 .loc 1 3054 29 discriminator 1 view .LVU834 + 2573 0220 0830 adds r0, r0, #8 + 2574 .LVL269: +3054:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 159 + + + 2575 .loc 1 3054 29 discriminator 1 view .LVU835 + 2576 0222 FFF7FEFF bl ld_dword + 2577 .LVL270: +3054:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2578 .loc 1 3054 29 discriminator 1 view .LVU836 + 2579 0226 EAE7 b .L183 + 2580 .LVL271: + 2581 .L203: +3052:Middlewares/Third_Party/FatFs/src/ff.c **** pt = fs->win + (MBR_Table + i * SZ_PTE); + 2582 .loc 1 3052 10 view .LVU837 + 2583 0228 0026 movs r6, #0 + 2584 .LVL272: +3052:Middlewares/Third_Party/FatFs/src/ff.c **** pt = fs->win + (MBR_Table + i * SZ_PTE); + 2585 .loc 1 3052 10 view .LVU838 + 2586 022a EEE7 b .L181 + 2587 .LVL273: + 2588 .L227: +3052:Middlewares/Third_Party/FatFs/src/ff.c **** pt = fs->win + (MBR_Table + i * SZ_PTE); + 2589 .loc 1 3052 10 view .LVU839 + 2590 022c 0027 movs r7, #0 + 2591 .LVL274: +3052:Middlewares/Third_Party/FatFs/src/ff.c **** pt = fs->win + (MBR_Table + i * SZ_PTE); + 2592 .loc 1 3052 10 view .LVU840 + 2593 022e 0AE0 b .L186 + 2594 .LVL275: + 2595 .L228: +3060:Middlewares/Third_Party/FatFs/src/ff.c **** } while (LD2PT(vol) == 0 && fmt >= 2 && ++i < 4); + 2596 .loc 1 3060 18 discriminator 1 view .LVU841 + 2597 0230 3146 mov r1, r6 + 2598 0232 2046 mov r0, r4 + 2599 0234 FFF7FEFF bl check_fs + 2600 .LVL276: +3061:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2601 .loc 1 3061 11 is_stmt 1 discriminator 1 view .LVU842 +3061:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2602 .loc 1 3061 3 is_stmt 0 discriminator 1 view .LVU843 + 2603 0238 0128 cmp r0, #1 + 2604 023a 7FF635AF bls .L182 + 2605 .LVL277: + 2606 .L185: +3061:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2607 .loc 1 3061 40 discriminator 1 view .LVU844 + 2608 023e 0137 adds r7, r7, #1 + 2609 .LVL278: +3061:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2610 .loc 1 3061 40 discriminator 1 view .LVU845 + 2611 0240 032F cmp r7, #3 + 2612 0242 3FF631AF bhi .L182 + 2613 .LVL279: + 2614 .L186: +3058:Middlewares/Third_Party/FatFs/src/ff.c **** bsect = br[i]; + 2615 .loc 1 3058 3 is_stmt 1 view .LVU846 +3059:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = bsect ? check_fs(fs, bsect) : 3; /* Check the partition */ + 2616 .loc 1 3059 4 view .LVU847 +3059:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = bsect ? check_fs(fs, bsect) : 3; /* Check the partition */ + 2617 .loc 1 3059 10 is_stmt 0 view .LVU848 + 2618 0246 06AB add r3, sp, #24 + ARM GAS /tmp/cc5lWXRL.s page 160 + + + 2619 0248 03EB8703 add r3, r3, r7, lsl #2 + 2620 024c 53F8106C ldr r6, [r3, #-16] + 2621 .LVL280: +3060:Middlewares/Third_Party/FatFs/src/ff.c **** } while (LD2PT(vol) == 0 && fmt >= 2 && ++i < 4); + 2622 .loc 1 3060 4 is_stmt 1 view .LVU849 +3060:Middlewares/Third_Party/FatFs/src/ff.c **** } while (LD2PT(vol) == 0 && fmt >= 2 && ++i < 4); + 2623 .loc 1 3060 8 is_stmt 0 view .LVU850 + 2624 0250 002E cmp r6, #0 + 2625 0252 EDD1 bne .L228 + 2626 0254 0320 movs r0, #3 + 2627 0256 F2E7 b .L185 + 2628 .LVL281: + 2629 .L216: +3144:Middlewares/Third_Party/FatFs/src/ff.c **** if (nclst <= MAX_FAT12) fmt = FS_FAT12; + 2630 .loc 1 3144 31 view .LVU851 + 2631 0258 4FF0020B mov fp, #2 + 2632 025c 90E7 b .L189 + 2633 .LVL282: + 2634 .L224: +3153:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */ + 2635 .loc 1 3153 4 is_stmt 1 view .LVU852 +3153:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */ + 2636 .loc 1 3153 8 is_stmt 0 view .LVU853 + 2637 025e 04F15E00 add r0, r4, #94 + 2638 .LVL283: +3153:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */ + 2639 .loc 1 3153 8 view .LVU854 + 2640 0262 FFF7FEFF bl ld_word + 2641 .LVL284: +3153:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */ + 2642 .loc 1 3153 7 view .LVU855 + 2643 0266 0028 cmp r0, #0 + 2644 0268 68D1 bne .L218 +3154:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbase = ld_dword(fs->win + BPB_RootClus32); /* Root directory start cluster */ + 2645 .loc 1 3154 4 is_stmt 1 view .LVU856 +3154:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbase = ld_dword(fs->win + BPB_RootClus32); /* Root directory start cluster */ + 2646 .loc 1 3154 7 is_stmt 0 view .LVU857 + 2647 026a BAF1000F cmp r10, #0 + 2648 026e 67D1 bne .L219 +3155:Middlewares/Third_Party/FatFs/src/ff.c **** szbfat = fs->n_fatent * 4; /* (Needed FAT size) */ + 2649 .loc 1 3155 4 is_stmt 1 view .LVU858 +3155:Middlewares/Third_Party/FatFs/src/ff.c **** szbfat = fs->n_fatent * 4; /* (Needed FAT size) */ + 2650 .loc 1 3155 18 is_stmt 0 view .LVU859 + 2651 0270 04F16000 add r0, r4, #96 + 2652 0274 FFF7FEFF bl ld_dword + 2653 .LVL285: +3155:Middlewares/Third_Party/FatFs/src/ff.c **** szbfat = fs->n_fatent * 4; /* (Needed FAT size) */ + 2654 .loc 1 3155 16 view .LVU860 + 2655 0278 A062 str r0, [r4, #40] +3156:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 2656 .loc 1 3156 4 is_stmt 1 view .LVU861 +3156:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 2657 .loc 1 3156 11 is_stmt 0 view .LVU862 + 2658 027a 4FEA8903 lsl r3, r9, #2 + 2659 .LVL286: +3156:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 2660 .loc 1 3156 11 view .LVU863 + ARM GAS /tmp/cc5lWXRL.s page 161 + + + 2661 027e A1E7 b .L192 + 2662 .LVL287: + 2663 .L225: +3161:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2664 .loc 1 3161 22 discriminator 1 view .LVU864 + 2665 0280 4FEA4903 lsl r3, r9, #1 + 2666 0284 9EE7 b .L192 + 2667 .LVL288: + 2668 .L226: +3171:Middlewares/Third_Party/FatFs/src/ff.c **** && move_window(fs, bsect + 1) == FR_OK) + 2669 .loc 1 3171 7 view .LVU865 + 2670 0286 04F16400 add r0, r4, #100 + 2671 028a FFF7FEFF bl ld_word + 2672 .LVL289: +3171:Middlewares/Third_Party/FatFs/src/ff.c **** && move_window(fs, bsect + 1) == FR_OK) + 2673 .loc 1 3171 4 view .LVU866 + 2674 028e 0128 cmp r0, #1 + 2675 0290 A8D1 bne .L194 +3172:Middlewares/Third_Party/FatFs/src/ff.c **** { + 2676 .loc 1 3172 7 view .LVU867 + 2677 0292 711C adds r1, r6, #1 + 2678 0294 2046 mov r0, r4 + 2679 0296 FFF7FEFF bl move_window + 2680 .LVL290: +3172:Middlewares/Third_Party/FatFs/src/ff.c **** { + 2681 .loc 1 3172 4 view .LVU868 + 2682 029a 0028 cmp r0, #0 + 2683 029c A2D1 bne .L194 +3174:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(fs->win + BS_55AA) == 0xAA55 /* Load FSINFO data if available */ + 2684 .loc 1 3174 4 is_stmt 1 view .LVU869 +3174:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(fs->win + BS_55AA) == 0xAA55 /* Load FSINFO data if available */ + 2685 .loc 1 3174 17 is_stmt 0 view .LVU870 + 2686 029e 0023 movs r3, #0 + 2687 02a0 2371 strb r3, [r4, #4] +3175:Middlewares/Third_Party/FatFs/src/ff.c **** && ld_dword(fs->win + FSI_LeadSig) == 0x41615252 + 2688 .loc 1 3175 4 is_stmt 1 view .LVU871 +3175:Middlewares/Third_Party/FatFs/src/ff.c **** && ld_dword(fs->win + FSI_LeadSig) == 0x41615252 + 2689 .loc 1 3175 8 is_stmt 0 view .LVU872 + 2690 02a2 04F23220 addw r0, r4, #562 + 2691 02a6 FFF7FEFF bl ld_word + 2692 .LVL291: +3175:Middlewares/Third_Party/FatFs/src/ff.c **** && ld_dword(fs->win + FSI_LeadSig) == 0x41615252 + 2693 .loc 1 3175 7 view .LVU873 + 2694 02aa 4AF65523 movw r3, #43605 + 2695 02ae 9842 cmp r0, r3 + 2696 02b0 98D1 bne .L194 +3176:Middlewares/Third_Party/FatFs/src/ff.c **** && ld_dword(fs->win + FSI_StrucSig) == 0x61417272) + 2697 .loc 1 3176 8 view .LVU874 + 2698 02b2 04F13400 add r0, r4, #52 + 2699 02b6 FFF7FEFF bl ld_dword + 2700 .LVL292: +3176:Middlewares/Third_Party/FatFs/src/ff.c **** && ld_dword(fs->win + FSI_StrucSig) == 0x61417272) + 2701 .loc 1 3176 5 view .LVU875 + 2702 02ba 194B ldr r3, .L229+8 + 2703 02bc 9842 cmp r0, r3 + 2704 02be 91D1 bne .L194 +3177:Middlewares/Third_Party/FatFs/src/ff.c **** { + ARM GAS /tmp/cc5lWXRL.s page 162 + + + 2705 .loc 1 3177 8 view .LVU876 + 2706 02c0 04F50670 add r0, r4, #536 + 2707 02c4 FFF7FEFF bl ld_dword + 2708 .LVL293: +3177:Middlewares/Third_Party/FatFs/src/ff.c **** { + 2709 .loc 1 3177 5 view .LVU877 + 2710 02c8 164B ldr r3, .L229+12 + 2711 02ca 9842 cmp r0, r3 + 2712 02cc 8AD1 bne .L194 +3180:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2713 .loc 1 3180 5 is_stmt 1 view .LVU878 +3180:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2714 .loc 1 3180 21 is_stmt 0 view .LVU879 + 2715 02ce 04F50770 add r0, r4, #540 + 2716 02d2 FFF7FEFF bl ld_dword + 2717 .LVL294: +3180:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2718 .loc 1 3180 19 view .LVU880 + 2719 02d6 6061 str r0, [r4, #20] +3183:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2720 .loc 1 3183 5 is_stmt 1 view .LVU881 +3183:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2721 .loc 1 3183 21 is_stmt 0 view .LVU882 + 2722 02d8 04F50870 add r0, r4, #544 + 2723 02dc FFF7FEFF bl ld_dword + 2724 .LVL295: +3183:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2725 .loc 1 3183 19 view .LVU883 + 2726 02e0 2061 str r0, [r4, #16] + 2727 02e2 7FE7 b .L194 + 2728 .LVL296: + 2729 .L195: +3011:Middlewares/Third_Party/FatFs/src/ff.c **** + 2730 .loc 1 3011 22 view .LVU884 + 2731 02e4 0B25 movs r5, #11 + 2732 .LVL297: + 2733 .L178: +3206:Middlewares/Third_Party/FatFs/src/ff.c **** + 2734 .loc 1 3206 1 view .LVU885 + 2735 02e6 2846 mov r0, r5 + 2736 02e8 07B0 add sp, sp, #28 + 2737 .LCFI20: + 2738 .cfi_remember_state + 2739 .cfi_def_cfa_offset 36 + 2740 @ sp needed + 2741 02ea BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 2742 .LVL298: + 2743 .L196: + 2744 .LCFI21: + 2745 .cfi_restore_state +3015:Middlewares/Third_Party/FatFs/src/ff.c **** + 2746 .loc 1 3015 18 view .LVU886 + 2747 02ee 0C25 movs r5, #12 + 2748 .LVL299: +3015:Middlewares/Third_Party/FatFs/src/ff.c **** + 2749 .loc 1 3015 18 view .LVU887 + 2750 02f0 F9E7 b .L178 + ARM GAS /tmp/cc5lWXRL.s page 163 + + + 2751 .LVL300: + 2752 .L198: +3038:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2753 .loc 1 3038 10 view .LVU888 + 2754 02f2 0325 movs r5, #3 + 2755 02f4 F7E7 b .L178 + 2756 .L199: +3041:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2757 .loc 1 3041 10 view .LVU889 + 2758 02f6 0A25 movs r5, #10 + 2759 02f8 F5E7 b .L178 + 2760 .LVL301: + 2761 .L200: +3044:Middlewares/Third_Party/FatFs/src/ff.c **** if (SS(fs) > _MAX_SS || SS(fs) < _MIN_SS || (SS(fs) & (SS(fs) - 1))) return FR_DISK_ERR; + 2762 .loc 1 3044 70 view .LVU890 + 2763 02fa 0125 movs r5, #1 + 2764 02fc F3E7 b .L178 + 2765 .L201: +3045:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 2766 .loc 1 3045 78 view .LVU891 + 2767 02fe 0125 movs r5, #1 + 2768 0300 F1E7 b .L178 + 2769 .LVL302: + 2770 .L206: +3063:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt >= 2) return FR_NO_FILESYSTEM; /* No FAT volume is found */ + 2771 .loc 1 3063 23 view .LVU892 + 2772 0302 0125 movs r5, #1 + 2773 0304 EFE7 b .L178 + 2774 .L207: +3064:Middlewares/Third_Party/FatFs/src/ff.c **** + 2775 .loc 1 3064 23 view .LVU893 + 2776 0306 0D25 movs r5, #13 + 2777 0308 EDE7 b .L178 + 2778 .LVL303: + 2779 .L208: +3116:Middlewares/Third_Party/FatFs/src/ff.c **** + 2780 .loc 1 3116 59 view .LVU894 + 2781 030a 0D25 movs r5, #13 + 2782 030c EBE7 b .L178 + 2783 .LVL304: + 2784 .L209: +3123:Middlewares/Third_Party/FatFs/src/ff.c **** fasize *= fs->n_fats; /* Number of sectors for FAT area */ + 2785 .loc 1 3123 50 view .LVU895 + 2786 030e 0D25 movs r5, #13 + 2787 0310 E9E7 b .L178 + 2788 .LVL305: + 2789 .L210: +3127:Middlewares/Third_Party/FatFs/src/ff.c **** + 2790 .loc 1 3127 63 view .LVU896 + 2791 0312 0D25 movs r5, #13 + 2792 0314 E7E7 b .L178 + 2793 .L230: + 2794 0316 00BF .align 2 + 2795 .L229: + 2796 0318 00000000 .word .LANCHOR2 + 2797 031c 00000000 .word .LANCHOR3 + 2798 0320 52526141 .word 1096897106 + ARM GAS /tmp/cc5lWXRL.s page 164 + + + 2799 0324 72724161 .word 1631679090 + 2800 .LVL306: + 2801 .L211: +3127:Middlewares/Third_Party/FatFs/src/ff.c **** + 2802 .loc 1 3127 63 view .LVU897 + 2803 0328 0D25 movs r5, #13 + 2804 032a DCE7 b .L178 + 2805 .L212: +3130:Middlewares/Third_Party/FatFs/src/ff.c **** + 2806 .loc 1 3130 49 view .LVU898 + 2807 032c 0D25 movs r5, #13 + 2808 032e DAE7 b .L178 + 2809 .LVL307: + 2810 .L213: +3136:Middlewares/Third_Party/FatFs/src/ff.c **** + 2811 .loc 1 3136 25 view .LVU899 + 2812 0330 0D25 movs r5, #13 + 2813 0332 D8E7 b .L178 + 2814 .LVL308: + 2815 .L214: +3140:Middlewares/Third_Party/FatFs/src/ff.c **** nclst = (tsect - sysect) / fs->csize; /* Number of clusters */ + 2816 .loc 1 3140 30 view .LVU900 + 2817 0334 0D25 movs r5, #13 + 2818 0336 D6E7 b .L178 + 2819 .LVL309: + 2820 .L215: +3142:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; + 2821 .loc 1 3142 26 view .LVU901 + 2822 0338 0D25 movs r5, #13 + 2823 033a D4E7 b .L178 + 2824 .LVL310: + 2825 .L218: +3153:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->n_rootdir) return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */ + 2826 .loc 1 3153 52 view .LVU902 + 2827 033c 0D25 movs r5, #13 + 2828 033e D2E7 b .L178 + 2829 .L219: +3154:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbase = ld_dword(fs->win + BPB_RootClus32); /* Root directory start cluster */ + 2830 .loc 1 3154 30 view .LVU903 + 2831 0340 0D25 movs r5, #13 + 2832 0342 D0E7 b .L178 + 2833 .LVL311: + 2834 .L220: +3158:Middlewares/Third_Party/FatFs/src/ff.c **** fs->dirbase = fs->fatbase + fasize; /* Root directory start sector */ + 2835 .loc 1 3158 35 view .LVU904 + 2836 0344 0D25 movs r5, #13 + 2837 0346 CEE7 b .L178 + 2838 .LVL312: + 2839 .L221: +3163:Middlewares/Third_Party/FatFs/src/ff.c **** + 2840 .loc 1 3163 60 view .LVU905 + 2841 0348 0D25 movs r5, #13 + 2842 034a CCE7 b .L178 + 2843 .cfi_endproc + 2844 .LFE1219: + 2846 .section .text.put_fat,"ax",%progbits + 2847 .align 1 + ARM GAS /tmp/cc5lWXRL.s page 165 + + + 2848 .syntax unified + 2849 .thumb + 2850 .thumb_func + 2851 .fpu fpv5-d16 + 2853 put_fat: + 2854 .LVL313: + 2855 .LFB1201: +1086:Middlewares/Third_Party/FatFs/src/ff.c **** UINT bc; + 2856 .loc 1 1086 1 is_stmt 1 view -0 + 2857 .cfi_startproc + 2858 @ args = 0, pretend = 0, frame = 0 + 2859 @ frame_needed = 0, uses_anonymous_args = 0 +1086:Middlewares/Third_Party/FatFs/src/ff.c **** UINT bc; + 2860 .loc 1 1086 1 is_stmt 0 view .LVU907 + 2861 0000 2DE9F047 push {r4, r5, r6, r7, r8, r9, r10, lr} + 2862 .LCFI22: + 2863 .cfi_def_cfa_offset 32 + 2864 .cfi_offset 4, -32 + 2865 .cfi_offset 5, -28 + 2866 .cfi_offset 6, -24 + 2867 .cfi_offset 7, -20 + 2868 .cfi_offset 8, -16 + 2869 .cfi_offset 9, -12 + 2870 .cfi_offset 10, -8 + 2871 .cfi_offset 14, -4 +1087:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *p; + 2872 .loc 1 1087 2 is_stmt 1 view .LVU908 +1088:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_INT_ERR; + 2873 .loc 1 1088 2 view .LVU909 +1089:Middlewares/Third_Party/FatFs/src/ff.c **** + 2874 .loc 1 1089 2 view .LVU910 + 2875 .LVL314: +1091:Middlewares/Third_Party/FatFs/src/ff.c **** switch (fs->fs_type) { + 2876 .loc 1 1091 2 view .LVU911 +1091:Middlewares/Third_Party/FatFs/src/ff.c **** switch (fs->fs_type) { + 2877 .loc 1 1091 5 is_stmt 0 view .LVU912 + 2878 0004 0129 cmp r1, #1 + 2879 0006 40F29680 bls .L239 + 2880 000a 0446 mov r4, r0 + 2881 000c 0D46 mov r5, r1 + 2882 000e 1746 mov r7, r2 +1091:Middlewares/Third_Party/FatFs/src/ff.c **** switch (fs->fs_type) { + 2883 .loc 1 1091 28 discriminator 1 view .LVU913 + 2884 0010 8369 ldr r3, [r0, #24] +1091:Middlewares/Third_Party/FatFs/src/ff.c **** switch (fs->fs_type) { + 2885 .loc 1 1091 16 discriminator 1 view .LVU914 + 2886 0012 8B42 cmp r3, r1 + 2887 0014 40F29180 bls .L240 +1092:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT12 : /* Bitfield items */ + 2888 .loc 1 1092 3 is_stmt 1 view .LVU915 +1092:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT12 : /* Bitfield items */ + 2889 .loc 1 1092 13 is_stmt 0 view .LVU916 + 2890 0018 0378 ldrb r3, [r0] @ zero_extendqisi2 +1092:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT12 : /* Bitfield items */ + 2891 .loc 1 1092 3 view .LVU917 + 2892 001a 022B cmp r3, #2 + 2893 001c 4FD0 beq .L233 + ARM GAS /tmp/cc5lWXRL.s page 166 + + + 2894 001e 032B cmp r3, #3 + 2895 0020 67D0 beq .L234 + 2896 0022 012B cmp r3, #1 + 2897 0024 03D0 beq .L243 + 2898 0026 0226 movs r6, #2 + 2899 .LVL315: + 2900 .L232: +1128:Middlewares/Third_Party/FatFs/src/ff.c **** } + 2901 .loc 1 1128 2 is_stmt 1 view .LVU918 +1129:Middlewares/Third_Party/FatFs/src/ff.c **** + 2902 .loc 1 1129 1 is_stmt 0 view .LVU919 + 2903 0028 3046 mov r0, r6 + 2904 002a BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc} + 2905 .LVL316: + 2906 .L243: +1094:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs))); + 2907 .loc 1 1094 4 is_stmt 1 view .LVU920 +1094:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs))); + 2908 .loc 1 1094 21 view .LVU921 +1094:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs))); + 2909 .loc 1 1094 24 is_stmt 0 view .LVU922 + 2910 002e 01EB5108 add r8, r1, r1, lsr #1 + 2911 .LVL317: +1095:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2912 .loc 1 1095 4 is_stmt 1 view .LVU923 +1095:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2913 .loc 1 1095 28 is_stmt 0 view .LVU924 + 2914 0032 416A ldr r1, [r0, #36] + 2915 .LVL318: +1095:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2916 .loc 1 1095 46 view .LVU925 + 2917 0034 8389 ldrh r3, [r0, #12] +1095:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2918 .loc 1 1095 44 view .LVU926 + 2919 0036 B8FBF3F3 udiv r3, r8, r3 +1095:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2920 .loc 1 1095 10 view .LVU927 + 2921 003a 1944 add r1, r1, r3 + 2922 003c FFF7FEFF bl move_window + 2923 .LVL319: +1096:Middlewares/Third_Party/FatFs/src/ff.c **** p = fs->win + bc++ % SS(fs); + 2924 .loc 1 1096 4 is_stmt 1 view .LVU928 +1096:Middlewares/Third_Party/FatFs/src/ff.c **** p = fs->win + bc++ % SS(fs); + 2925 .loc 1 1096 7 is_stmt 0 view .LVU929 + 2926 0040 0646 mov r6, r0 + 2927 0042 0028 cmp r0, #0 + 2928 0044 F0D1 bne .L232 +1097:Middlewares/Third_Party/FatFs/src/ff.c **** *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val; + 2929 .loc 1 1097 4 is_stmt 1 view .LVU930 +1097:Middlewares/Third_Party/FatFs/src/ff.c **** *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val; + 2930 .loc 1 1097 8 is_stmt 0 view .LVU931 + 2931 0046 04F1340A add r10, r4, #52 +1097:Middlewares/Third_Party/FatFs/src/ff.c **** *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val; + 2932 .loc 1 1097 20 view .LVU932 + 2933 004a 08F10109 add r9, r8, #1 + 2934 .LVL320: +1097:Middlewares/Third_Party/FatFs/src/ff.c **** *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val; + ARM GAS /tmp/cc5lWXRL.s page 167 + + + 2935 .loc 1 1097 25 view .LVU933 + 2936 004e A389 ldrh r3, [r4, #12] +1097:Middlewares/Third_Party/FatFs/src/ff.c **** *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val; + 2937 .loc 1 1097 23 view .LVU934 + 2938 0050 B8FBF3F2 udiv r2, r8, r3 + 2939 0054 03FB1288 mls r8, r3, r2, r8 + 2940 .LVL321: +1098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2941 .loc 1 1098 4 is_stmt 1 view .LVU935 +1098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2942 .loc 1 1098 7 is_stmt 0 view .LVU936 + 2943 0058 15F00105 ands r5, r5, #1 + 2944 .LVL322: +1098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2945 .loc 1 1098 7 view .LVU937 + 2946 005c 24D0 beq .L235 +1098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2947 .loc 1 1098 24 discriminator 1 view .LVU938 + 2948 005e 1AF90830 ldrsb r3, [r10, r8] +1098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2949 .loc 1 1098 27 discriminator 1 view .LVU939 + 2950 0062 03F00F03 and r3, r3, #15 +1098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2951 .loc 1 1098 48 discriminator 1 view .LVU940 + 2952 0066 3A01 lsls r2, r7, #4 + 2953 0068 02F47F62 and r2, r2, #4080 +1098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2954 .loc 1 1098 35 discriminator 1 view .LVU941 + 2955 006c 1343 orrs r3, r3, r2 +1098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2956 .loc 1 1098 7 discriminator 1 view .LVU942 + 2957 006e DBB2 uxtb r3, r3 + 2958 .L236: +1098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2959 .loc 1 1098 7 discriminator 4 view .LVU943 + 2960 0070 0AF80830 strb r3, [r10, r8] +1099:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs))); + 2961 .loc 1 1099 4 is_stmt 1 discriminator 4 view .LVU944 +1099:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, fs->fatbase + (bc / SS(fs))); + 2962 .loc 1 1099 14 is_stmt 0 discriminator 4 view .LVU945 + 2963 0074 0123 movs r3, #1 + 2964 0076 E370 strb r3, [r4, #3] +1100:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2965 .loc 1 1100 4 is_stmt 1 discriminator 4 view .LVU946 +1100:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2966 .loc 1 1100 28 is_stmt 0 discriminator 4 view .LVU947 + 2967 0078 616A ldr r1, [r4, #36] +1100:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2968 .loc 1 1100 46 discriminator 4 view .LVU948 + 2969 007a A389 ldrh r3, [r4, #12] +1100:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2970 .loc 1 1100 44 discriminator 4 view .LVU949 + 2971 007c B9FBF3F3 udiv r3, r9, r3 +1100:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2972 .loc 1 1100 10 discriminator 4 view .LVU950 + 2973 0080 1944 add r1, r1, r3 + 2974 0082 2046 mov r0, r4 + ARM GAS /tmp/cc5lWXRL.s page 168 + + + 2975 .LVL323: +1100:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 2976 .loc 1 1100 10 discriminator 4 view .LVU951 + 2977 0084 FFF7FEFF bl move_window + 2978 .LVL324: +1101:Middlewares/Third_Party/FatFs/src/ff.c **** p = fs->win + bc % SS(fs); + 2979 .loc 1 1101 4 is_stmt 1 discriminator 4 view .LVU952 +1101:Middlewares/Third_Party/FatFs/src/ff.c **** p = fs->win + bc % SS(fs); + 2980 .loc 1 1101 7 is_stmt 0 discriminator 4 view .LVU953 + 2981 0088 0646 mov r6, r0 + 2982 008a 0028 cmp r0, #0 + 2983 008c CCD1 bne .L232 +1102:Middlewares/Third_Party/FatFs/src/ff.c **** *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F)); + 2984 .loc 1 1102 4 is_stmt 1 view .LVU954 +1102:Middlewares/Third_Party/FatFs/src/ff.c **** *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F)); + 2985 .loc 1 1102 23 is_stmt 0 view .LVU955 + 2986 008e A389 ldrh r3, [r4, #12] +1102:Middlewares/Third_Party/FatFs/src/ff.c **** *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F)); + 2987 .loc 1 1102 21 view .LVU956 + 2988 0090 B9FBF3F2 udiv r2, r9, r3 + 2989 0094 03FB1299 mls r9, r3, r2, r9 + 2990 .LVL325: +1103:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2991 .loc 1 1103 4 is_stmt 1 view .LVU957 +1103:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2992 .loc 1 1103 7 is_stmt 0 view .LVU958 + 2993 0098 45B1 cbz r5, .L237 +1103:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2994 .loc 1 1103 7 discriminator 1 view .LVU959 + 2995 009a C7F30712 ubfx r2, r7, #4, #8 + 2996 .LVL326: + 2997 .L238: +1103:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 2998 .loc 1 1103 7 discriminator 4 view .LVU960 + 2999 009e 0AF80920 strb r2, [r10, r9] +1104:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3000 .loc 1 1104 4 is_stmt 1 discriminator 4 view .LVU961 +1104:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3001 .loc 1 1104 14 is_stmt 0 discriminator 4 view .LVU962 + 3002 00a2 0123 movs r3, #1 + 3003 00a4 E370 strb r3, [r4, #3] +1105:Middlewares/Third_Party/FatFs/src/ff.c **** + 3004 .loc 1 1105 4 is_stmt 1 discriminator 4 view .LVU963 + 3005 00a6 BFE7 b .L232 + 3006 .LVL327: + 3007 .L235: +1098:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3008 .loc 1 1098 7 is_stmt 0 discriminator 2 view .LVU964 + 3009 00a8 FBB2 uxtb r3, r7 + 3010 00aa E1E7 b .L236 + 3011 .LVL328: + 3012 .L237: +1103:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3013 .loc 1 1103 43 discriminator 2 view .LVU965 + 3014 00ac 1AF90920 ldrsb r2, [r10, r9] +1103:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3015 .loc 1 1103 46 discriminator 2 view .LVU966 + ARM GAS /tmp/cc5lWXRL.s page 169 + + + 3016 00b0 22F00F02 bic r2, r2, #15 +1103:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3017 .loc 1 1103 74 discriminator 2 view .LVU967 + 3018 00b4 C7F30327 ubfx r7, r7, #8, #4 + 3019 .LVL329: +1103:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3020 .loc 1 1103 54 discriminator 2 view .LVU968 + 3021 00b8 3A43 orrs r2, r2, r7 +1103:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3022 .loc 1 1103 7 discriminator 2 view .LVU969 + 3023 00ba D2B2 uxtb r2, r2 + 3024 00bc EFE7 b .L238 + 3025 .LVL330: + 3026 .L233: +1108:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3027 .loc 1 1108 4 is_stmt 1 view .LVU970 +1108:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3028 .loc 1 1108 28 is_stmt 0 view .LVU971 + 3029 00be 416A ldr r1, [r0, #36] + 3030 .LVL331: +1108:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3031 .loc 1 1108 49 view .LVU972 + 3032 00c0 8389 ldrh r3, [r0, #12] +1108:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3033 .loc 1 1108 56 view .LVU973 + 3034 00c2 5B08 lsrs r3, r3, #1 +1108:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3035 .loc 1 1108 46 view .LVU974 + 3036 00c4 B5FBF3F3 udiv r3, r5, r3 +1108:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3037 .loc 1 1108 10 view .LVU975 + 3038 00c8 1944 add r1, r1, r3 + 3039 00ca FFF7FEFF bl move_window + 3040 .LVL332: +1109:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(fs->win + clst * 2 % SS(fs), (WORD)val); + 3041 .loc 1 1109 4 is_stmt 1 view .LVU976 +1109:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(fs->win + clst * 2 % SS(fs), (WORD)val); + 3042 .loc 1 1109 7 is_stmt 0 view .LVU977 + 3043 00ce 0646 mov r6, r0 + 3044 00d0 0028 cmp r0, #0 + 3045 00d2 A9D1 bne .L232 +1110:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3046 .loc 1 1110 4 is_stmt 1 view .LVU978 +1110:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3047 .loc 1 1110 12 is_stmt 0 view .LVU979 + 3048 00d4 04F13400 add r0, r4, #52 + 3049 .LVL333: +1110:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3050 .loc 1 1110 27 view .LVU980 + 3051 00d8 6D00 lsls r5, r5, #1 + 3052 .LVL334: +1110:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3053 .loc 1 1110 33 view .LVU981 + 3054 00da A389 ldrh r3, [r4, #12] +1110:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3055 .loc 1 1110 31 view .LVU982 + 3056 00dc B5FBF3F2 udiv r2, r5, r3 + ARM GAS /tmp/cc5lWXRL.s page 170 + + + 3057 00e0 03FB1255 mls r5, r3, r2, r5 +1110:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3058 .loc 1 1110 4 view .LVU983 + 3059 00e4 B9B2 uxth r1, r7 + 3060 00e6 2844 add r0, r0, r5 + 3061 00e8 FFF7FEFF bl st_word + 3062 .LVL335: +1111:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3063 .loc 1 1111 4 is_stmt 1 view .LVU984 +1111:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3064 .loc 1 1111 14 is_stmt 0 view .LVU985 + 3065 00ec 0123 movs r3, #1 + 3066 00ee E370 strb r3, [r4, #3] +1112:Middlewares/Third_Party/FatFs/src/ff.c **** + 3067 .loc 1 1112 4 is_stmt 1 view .LVU986 + 3068 00f0 9AE7 b .L232 + 3069 .LVL336: + 3070 .L234: +1118:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3071 .loc 1 1118 4 view .LVU987 +1118:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3072 .loc 1 1118 28 is_stmt 0 view .LVU988 + 3073 00f2 416A ldr r1, [r0, #36] + 3074 .LVL337: +1118:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3075 .loc 1 1118 49 view .LVU989 + 3076 00f4 8389 ldrh r3, [r0, #12] +1118:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3077 .loc 1 1118 56 view .LVU990 + 3078 00f6 9B08 lsrs r3, r3, #2 +1118:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3079 .loc 1 1118 46 view .LVU991 + 3080 00f8 B5FBF3F3 udiv r3, r5, r3 +1118:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 3081 .loc 1 1118 10 view .LVU992 + 3082 00fc 1944 add r1, r1, r3 + 3083 00fe FFF7FEFF bl move_window + 3084 .LVL338: +1119:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + 3085 .loc 1 1119 4 is_stmt 1 view .LVU993 +1119:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + 3086 .loc 1 1119 7 is_stmt 0 view .LVU994 + 3087 0102 0646 mov r6, r0 + 3088 0104 0028 cmp r0, #0 + 3089 0106 8FD1 bne .L232 +1120:Middlewares/Third_Party/FatFs/src/ff.c **** val = (val & 0x0FFFFFFF) | (ld_dword(fs->win + clst * 4 % SS(fs)) & 0xF0000000); + 3090 .loc 1 1120 4 is_stmt 1 view .LVU995 +1121:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3091 .loc 1 1121 5 view .LVU996 +1121:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3092 .loc 1 1121 16 is_stmt 0 view .LVU997 + 3093 0108 27F07047 bic r7, r7, #-268435456 + 3094 .LVL339: +1121:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3095 .loc 1 1121 42 view .LVU998 + 3096 010c 04F13403 add r3, r4, #52 +1121:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 171 + + + 3097 .loc 1 1121 57 view .LVU999 + 3098 0110 AD00 lsls r5, r5, #2 + 3099 .LVL340: +1121:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3100 .loc 1 1121 63 view .LVU1000 + 3101 0112 A289 ldrh r2, [r4, #12] +1121:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3102 .loc 1 1121 61 view .LVU1001 + 3103 0114 B5FBF2F1 udiv r1, r5, r2 + 3104 0118 02FB1155 mls r5, r2, r1, r5 +1121:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3105 .loc 1 1121 33 view .LVU1002 + 3106 011c 1D44 add r5, r5, r3 + 3107 011e 2846 mov r0, r5 + 3108 .LVL341: +1121:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3109 .loc 1 1121 33 view .LVU1003 + 3110 0120 FFF7FEFF bl ld_dword + 3111 .LVL342: +1121:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3112 .loc 1 1121 71 view .LVU1004 + 3113 0124 00F07041 and r1, r0, #-268435456 + 3114 .LVL343: +1123:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3115 .loc 1 1123 4 is_stmt 1 view .LVU1005 + 3116 0128 3943 orrs r1, r1, r7 + 3117 .LVL344: +1123:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 3118 .loc 1 1123 4 is_stmt 0 view .LVU1006 + 3119 012a 2846 mov r0, r5 + 3120 012c FFF7FEFF bl st_dword + 3121 .LVL345: +1124:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3122 .loc 1 1124 4 is_stmt 1 view .LVU1007 +1124:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3123 .loc 1 1124 14 is_stmt 0 view .LVU1008 + 3124 0130 0123 movs r3, #1 + 3125 0132 E370 strb r3, [r4, #3] +1125:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3126 .loc 1 1125 4 is_stmt 1 view .LVU1009 + 3127 0134 78E7 b .L232 + 3128 .LVL346: + 3129 .L239: +1089:Middlewares/Third_Party/FatFs/src/ff.c **** + 3130 .loc 1 1089 10 is_stmt 0 view .LVU1010 + 3131 0136 0226 movs r6, #2 + 3132 0138 76E7 b .L232 + 3133 .L240: +1089:Middlewares/Third_Party/FatFs/src/ff.c **** + 3134 .loc 1 1089 10 view .LVU1011 + 3135 013a 0226 movs r6, #2 + 3136 013c 74E7 b .L232 + 3137 .cfi_endproc + 3138 .LFE1201: + 3140 .section .text.get_fat,"ax",%progbits + 3141 .align 1 + 3142 .syntax unified + ARM GAS /tmp/cc5lWXRL.s page 172 + + + 3143 .thumb + 3144 .thumb_func + 3145 .fpu fpv5-d16 + 3147 get_fat: + 3148 .LVL347: + 3149 .LFB1200: +1005:Middlewares/Third_Party/FatFs/src/ff.c **** UINT wc, bc; + 3150 .loc 1 1005 1 is_stmt 1 view -0 + 3151 .cfi_startproc + 3152 @ args = 0, pretend = 0, frame = 0 + 3153 @ frame_needed = 0, uses_anonymous_args = 0 +1005:Middlewares/Third_Party/FatFs/src/ff.c **** UINT wc, bc; + 3154 .loc 1 1005 1 is_stmt 0 view .LVU1013 + 3155 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 3156 .LCFI23: + 3157 .cfi_def_cfa_offset 24 + 3158 .cfi_offset 3, -24 + 3159 .cfi_offset 4, -20 + 3160 .cfi_offset 5, -16 + 3161 .cfi_offset 6, -12 + 3162 .cfi_offset 7, -8 + 3163 .cfi_offset 14, -4 +1006:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD val; + 3164 .loc 1 1006 2 is_stmt 1 view .LVU1014 +1007:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = obj->fs; + 3165 .loc 1 1007 2 view .LVU1015 +1008:Middlewares/Third_Party/FatFs/src/ff.c **** + 3166 .loc 1 1008 2 view .LVU1016 +1008:Middlewares/Third_Party/FatFs/src/ff.c **** + 3167 .loc 1 1008 9 is_stmt 0 view .LVU1017 + 3168 0002 0568 ldr r5, [r0] + 3169 .LVL348: +1011:Middlewares/Third_Party/FatFs/src/ff.c **** val = 1; /* Internal error */ + 3170 .loc 1 1011 2 is_stmt 1 view .LVU1018 +1011:Middlewares/Third_Party/FatFs/src/ff.c **** val = 1; /* Internal error */ + 3171 .loc 1 1011 5 is_stmt 0 view .LVU1019 + 3172 0004 0129 cmp r1, #1 + 3173 0006 6CD9 bls .L249 + 3174 0008 0C46 mov r4, r1 +1011:Middlewares/Third_Party/FatFs/src/ff.c **** val = 1; /* Internal error */ + 3175 .loc 1 1011 28 discriminator 1 view .LVU1020 + 3176 000a AB69 ldr r3, [r5, #24] +1011:Middlewares/Third_Party/FatFs/src/ff.c **** val = 1; /* Internal error */ + 3177 .loc 1 1011 15 discriminator 1 view .LVU1021 + 3178 000c 8B42 cmp r3, r1 + 3179 000e 6AD9 bls .L250 +1015:Middlewares/Third_Party/FatFs/src/ff.c **** + 3180 .loc 1 1015 3 is_stmt 1 view .LVU1022 + 3181 .LVL349: +1017:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT12 : + 3182 .loc 1 1017 3 view .LVU1023 +1017:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT12 : + 3183 .loc 1 1017 13 is_stmt 0 view .LVU1024 + 3184 0010 2B78 ldrb r3, [r5] @ zero_extendqisi2 +1017:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT12 : + 3185 .loc 1 1017 3 view .LVU1025 + 3186 0012 022B cmp r3, #2 + ARM GAS /tmp/cc5lWXRL.s page 173 + + + 3187 0014 37D0 beq .L246 + 3188 0016 032B cmp r3, #3 + 3189 0018 4BD0 beq .L247 + 3190 001a 012B cmp r3, #1 + 3191 001c 01D0 beq .L257 + 3192 001e 0120 movs r0, #1 + 3193 .LVL350: +1017:Middlewares/Third_Party/FatFs/src/ff.c **** case FS_FAT12 : + 3194 .loc 1 1017 3 view .LVU1026 + 3195 0020 60E0 b .L244 + 3196 .LVL351: + 3197 .L257: +1019:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + 3198 .loc 1 1019 4 is_stmt 1 view .LVU1027 +1019:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + 3199 .loc 1 1019 21 view .LVU1028 +1019:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + 3200 .loc 1 1019 24 is_stmt 0 view .LVU1029 + 3201 0022 01EB5106 add r6, r1, r1, lsr #1 + 3202 .LVL352: +1020:Middlewares/Third_Party/FatFs/src/ff.c **** wc = fs->win[bc++ % SS(fs)]; + 3203 .loc 1 1020 4 is_stmt 1 view .LVU1030 +1020:Middlewares/Third_Party/FatFs/src/ff.c **** wc = fs->win[bc++ % SS(fs)]; + 3204 .loc 1 1020 26 is_stmt 0 view .LVU1031 + 3205 0026 696A ldr r1, [r5, #36] + 3206 .LVL353: +1020:Middlewares/Third_Party/FatFs/src/ff.c **** wc = fs->win[bc++ % SS(fs)]; + 3207 .loc 1 1020 44 view .LVU1032 + 3208 0028 AB89 ldrh r3, [r5, #12] +1020:Middlewares/Third_Party/FatFs/src/ff.c **** wc = fs->win[bc++ % SS(fs)]; + 3209 .loc 1 1020 42 view .LVU1033 + 3210 002a B6FBF3F3 udiv r3, r6, r3 +1020:Middlewares/Third_Party/FatFs/src/ff.c **** wc = fs->win[bc++ % SS(fs)]; + 3211 .loc 1 1020 8 view .LVU1034 + 3212 002e 1944 add r1, r1, r3 + 3213 0030 2846 mov r0, r5 + 3214 .LVL354: +1020:Middlewares/Third_Party/FatFs/src/ff.c **** wc = fs->win[bc++ % SS(fs)]; + 3215 .loc 1 1020 8 view .LVU1035 + 3216 0032 FFF7FEFF bl move_window + 3217 .LVL355: +1020:Middlewares/Third_Party/FatFs/src/ff.c **** wc = fs->win[bc++ % SS(fs)]; + 3218 .loc 1 1020 7 view .LVU1036 + 3219 0036 10B1 cbz r0, .L258 +1015:Middlewares/Third_Party/FatFs/src/ff.c **** + 3220 .loc 1 1015 7 view .LVU1037 + 3221 0038 4FF0FF30 mov r0, #-1 + 3222 003c 52E0 b .L244 + 3223 .L258: +1021:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + 3224 .loc 1 1021 4 is_stmt 1 view .LVU1038 +1021:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + 3225 .loc 1 1021 19 is_stmt 0 view .LVU1039 + 3226 003e 771C adds r7, r6, #1 + 3227 .LVL356: +1021:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + 3228 .loc 1 1021 24 view .LVU1040 + ARM GAS /tmp/cc5lWXRL.s page 174 + + + 3229 0040 AB89 ldrh r3, [r5, #12] +1021:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + 3230 .loc 1 1021 22 view .LVU1041 + 3231 0042 B6FBF3F2 udiv r2, r6, r3 + 3232 0046 03FB1266 mls r6, r3, r2, r6 +1021:Middlewares/Third_Party/FatFs/src/ff.c **** if (move_window(fs, fs->fatbase + (bc / SS(fs))) != FR_OK) break; + 3233 .loc 1 1021 16 view .LVU1042 + 3234 004a 2E44 add r6, r6, r5 + 3235 004c 96F83460 ldrb r6, [r6, #52] @ zero_extendqisi2 + 3236 .LVL357: +1022:Middlewares/Third_Party/FatFs/src/ff.c **** wc |= fs->win[bc % SS(fs)] << 8; + 3237 .loc 1 1022 4 is_stmt 1 view .LVU1043 +1022:Middlewares/Third_Party/FatFs/src/ff.c **** wc |= fs->win[bc % SS(fs)] << 8; + 3238 .loc 1 1022 26 is_stmt 0 view .LVU1044 + 3239 0050 696A ldr r1, [r5, #36] +1022:Middlewares/Third_Party/FatFs/src/ff.c **** wc |= fs->win[bc % SS(fs)] << 8; + 3240 .loc 1 1022 42 view .LVU1045 + 3241 0052 B7FBF3F3 udiv r3, r7, r3 +1022:Middlewares/Third_Party/FatFs/src/ff.c **** wc |= fs->win[bc % SS(fs)] << 8; + 3242 .loc 1 1022 8 view .LVU1046 + 3243 0056 1944 add r1, r1, r3 + 3244 0058 2846 mov r0, r5 + 3245 005a FFF7FEFF bl move_window + 3246 .LVL358: +1022:Middlewares/Third_Party/FatFs/src/ff.c **** wc |= fs->win[bc % SS(fs)] << 8; + 3247 .loc 1 1022 7 view .LVU1047 + 3248 005e 0028 cmp r0, #0 + 3249 0060 43D1 bne .L253 +1023:Middlewares/Third_Party/FatFs/src/ff.c **** val = (clst & 1) ? (wc >> 4) : (wc & 0xFFF); + 3250 .loc 1 1023 4 is_stmt 1 view .LVU1048 +1023:Middlewares/Third_Party/FatFs/src/ff.c **** val = (clst & 1) ? (wc >> 4) : (wc & 0xFFF); + 3251 .loc 1 1023 23 is_stmt 0 view .LVU1049 + 3252 0062 AB89 ldrh r3, [r5, #12] +1023:Middlewares/Third_Party/FatFs/src/ff.c **** val = (clst & 1) ? (wc >> 4) : (wc & 0xFFF); + 3253 .loc 1 1023 21 view .LVU1050 + 3254 0064 B7FBF3F2 udiv r2, r7, r3 + 3255 0068 03FB1277 mls r7, r3, r2, r7 + 3256 .LVL359: +1023:Middlewares/Third_Party/FatFs/src/ff.c **** val = (clst & 1) ? (wc >> 4) : (wc & 0xFFF); + 3257 .loc 1 1023 17 view .LVU1051 + 3258 006c 3D44 add r5, r5, r7 + 3259 .LVL360: +1023:Middlewares/Third_Party/FatFs/src/ff.c **** val = (clst & 1) ? (wc >> 4) : (wc & 0xFFF); + 3260 .loc 1 1023 17 view .LVU1052 + 3261 006e 95F83400 ldrb r0, [r5, #52] @ zero_extendqisi2 +1023:Middlewares/Third_Party/FatFs/src/ff.c **** val = (clst & 1) ? (wc >> 4) : (wc & 0xFFF); + 3262 .loc 1 1023 7 view .LVU1053 + 3263 0072 46EA0020 orr r0, r6, r0, lsl #8 + 3264 .LVL361: +1024:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3265 .loc 1 1024 4 is_stmt 1 view .LVU1054 +1024:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3266 .loc 1 1024 33 is_stmt 0 view .LVU1055 + 3267 0076 14F0010F tst r4, #1 + 3268 007a 01D0 beq .L248 +1024:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3269 .loc 1 1024 33 discriminator 1 view .LVU1056 + ARM GAS /tmp/cc5lWXRL.s page 175 + + + 3270 007c 0009 lsrs r0, r0, #4 + 3271 .LVL362: +1024:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3272 .loc 1 1024 33 discriminator 1 view .LVU1057 + 3273 007e 31E0 b .L244 + 3274 .LVL363: + 3275 .L248: +1024:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3276 .loc 1 1024 33 discriminator 2 view .LVU1058 + 3277 0080 C0F30B00 ubfx r0, r0, #0, #12 + 3278 .LVL364: +1024:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3279 .loc 1 1024 33 discriminator 2 view .LVU1059 + 3280 0084 2EE0 b .L244 + 3281 .LVL365: + 3282 .L246: +1028:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_word(fs->win + clst * 2 % SS(fs)); + 3283 .loc 1 1028 4 is_stmt 1 view .LVU1060 +1028:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_word(fs->win + clst * 2 % SS(fs)); + 3284 .loc 1 1028 26 is_stmt 0 view .LVU1061 + 3285 0086 696A ldr r1, [r5, #36] + 3286 .LVL366: +1028:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_word(fs->win + clst * 2 % SS(fs)); + 3287 .loc 1 1028 47 view .LVU1062 + 3288 0088 AB89 ldrh r3, [r5, #12] +1028:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_word(fs->win + clst * 2 % SS(fs)); + 3289 .loc 1 1028 54 view .LVU1063 + 3290 008a 5B08 lsrs r3, r3, #1 +1028:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_word(fs->win + clst * 2 % SS(fs)); + 3291 .loc 1 1028 44 view .LVU1064 + 3292 008c B4FBF3F3 udiv r3, r4, r3 +1028:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_word(fs->win + clst * 2 % SS(fs)); + 3293 .loc 1 1028 8 view .LVU1065 + 3294 0090 1944 add r1, r1, r3 + 3295 0092 2846 mov r0, r5 + 3296 .LVL367: +1028:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_word(fs->win + clst * 2 % SS(fs)); + 3297 .loc 1 1028 8 view .LVU1066 + 3298 0094 FFF7FEFF bl move_window + 3299 .LVL368: +1028:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_word(fs->win + clst * 2 % SS(fs)); + 3300 .loc 1 1028 7 view .LVU1067 + 3301 0098 50BB cbnz r0, .L254 +1029:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3302 .loc 1 1029 4 is_stmt 1 view .LVU1068 +1029:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3303 .loc 1 1029 18 is_stmt 0 view .LVU1069 + 3304 009a 05F13400 add r0, r5, #52 +1029:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3305 .loc 1 1029 33 view .LVU1070 + 3306 009e 6400 lsls r4, r4, #1 + 3307 .LVL369: +1029:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3308 .loc 1 1029 39 view .LVU1071 + 3309 00a0 AB89 ldrh r3, [r5, #12] +1029:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3310 .loc 1 1029 37 view .LVU1072 + ARM GAS /tmp/cc5lWXRL.s page 176 + + + 3311 00a2 B4FBF3F2 udiv r2, r4, r3 + 3312 00a6 03FB1244 mls r4, r3, r2, r4 +1029:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3313 .loc 1 1029 10 view .LVU1073 + 3314 00aa 2044 add r0, r0, r4 + 3315 00ac FFF7FEFF bl ld_word + 3316 .LVL370: +1030:Middlewares/Third_Party/FatFs/src/ff.c **** + 3317 .loc 1 1030 4 is_stmt 1 view .LVU1074 + 3318 00b0 18E0 b .L244 + 3319 .LVL371: + 3320 .L247: +1033:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; + 3321 .loc 1 1033 4 view .LVU1075 +1033:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; + 3322 .loc 1 1033 26 is_stmt 0 view .LVU1076 + 3323 00b2 696A ldr r1, [r5, #36] + 3324 .LVL372: +1033:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; + 3325 .loc 1 1033 47 view .LVU1077 + 3326 00b4 AB89 ldrh r3, [r5, #12] +1033:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; + 3327 .loc 1 1033 54 view .LVU1078 + 3328 00b6 9B08 lsrs r3, r3, #2 +1033:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; + 3329 .loc 1 1033 44 view .LVU1079 + 3330 00b8 B4FBF3F3 udiv r3, r4, r3 +1033:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; + 3331 .loc 1 1033 8 view .LVU1080 + 3332 00bc 1944 add r1, r1, r3 + 3333 00be 2846 mov r0, r5 + 3334 .LVL373: +1033:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; + 3335 .loc 1 1033 8 view .LVU1081 + 3336 00c0 FFF7FEFF bl move_window + 3337 .LVL374: +1033:Middlewares/Third_Party/FatFs/src/ff.c **** val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; + 3338 .loc 1 1033 7 view .LVU1082 + 3339 00c4 B8B9 cbnz r0, .L255 +1034:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3340 .loc 1 1034 4 is_stmt 1 view .LVU1083 +1034:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3341 .loc 1 1034 19 is_stmt 0 view .LVU1084 + 3342 00c6 05F13400 add r0, r5, #52 +1034:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3343 .loc 1 1034 34 view .LVU1085 + 3344 00ca A400 lsls r4, r4, #2 + 3345 .LVL375: +1034:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3346 .loc 1 1034 40 view .LVU1086 + 3347 00cc AB89 ldrh r3, [r5, #12] +1034:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3348 .loc 1 1034 38 view .LVU1087 + 3349 00ce B4FBF3F2 udiv r2, r4, r3 + 3350 00d2 03FB1244 mls r4, r3, r2, r4 +1034:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3351 .loc 1 1034 10 view .LVU1088 + ARM GAS /tmp/cc5lWXRL.s page 177 + + + 3352 00d6 2044 add r0, r0, r4 + 3353 00d8 FFF7FEFF bl ld_dword + 3354 .LVL376: +1034:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 3355 .loc 1 1034 8 view .LVU1089 + 3356 00dc 20F07040 bic r0, r0, #-268435456 + 3357 .LVL377: +1035:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 3358 .loc 1 1035 4 is_stmt 1 view .LVU1090 + 3359 00e0 00E0 b .L244 + 3360 .LVL378: + 3361 .L249: +1012:Middlewares/Third_Party/FatFs/src/ff.c **** + 3362 .loc 1 1012 7 is_stmt 0 view .LVU1091 + 3363 00e2 0120 movs r0, #1 + 3364 .LVL379: + 3365 .L244: +1070:Middlewares/Third_Party/FatFs/src/ff.c **** + 3366 .loc 1 1070 1 view .LVU1092 + 3367 00e4 F8BD pop {r3, r4, r5, r6, r7, pc} + 3368 .LVL380: + 3369 .L250: +1012:Middlewares/Third_Party/FatFs/src/ff.c **** + 3370 .loc 1 1012 7 view .LVU1093 + 3371 00e6 0120 movs r0, #1 + 3372 .LVL381: +1012:Middlewares/Third_Party/FatFs/src/ff.c **** + 3373 .loc 1 1012 7 view .LVU1094 + 3374 00e8 FCE7 b .L244 + 3375 .LVL382: + 3376 .L253: +1015:Middlewares/Third_Party/FatFs/src/ff.c **** + 3377 .loc 1 1015 7 view .LVU1095 + 3378 00ea 4FF0FF30 mov r0, #-1 + 3379 00ee F9E7 b .L244 + 3380 .LVL383: + 3381 .L254: +1015:Middlewares/Third_Party/FatFs/src/ff.c **** + 3382 .loc 1 1015 7 view .LVU1096 + 3383 00f0 4FF0FF30 mov r0, #-1 + 3384 00f4 F6E7 b .L244 + 3385 .L255: +1015:Middlewares/Third_Party/FatFs/src/ff.c **** + 3386 .loc 1 1015 7 view .LVU1097 + 3387 00f6 4FF0FF30 mov r0, #-1 +1069:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3388 .loc 1 1069 2 is_stmt 1 view .LVU1098 +1069:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3389 .loc 1 1069 9 is_stmt 0 view .LVU1099 + 3390 00fa F3E7 b .L244 + 3391 .cfi_endproc + 3392 .LFE1200: + 3394 .section .text.dir_sdi,"ax",%progbits + 3395 .align 1 + 3396 .syntax unified + 3397 .thumb + 3398 .thumb_func + ARM GAS /tmp/cc5lWXRL.s page 178 + + + 3399 .fpu fpv5-d16 + 3401 dir_sdi: + 3402 .LVL384: + 3403 .LFB1205: +1474:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD csz, clst; + 3404 .loc 1 1474 1 is_stmt 1 view -0 + 3405 .cfi_startproc + 3406 @ args = 0, pretend = 0, frame = 0 + 3407 @ frame_needed = 0, uses_anonymous_args = 0 +1474:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD csz, clst; + 3408 .loc 1 1474 1 is_stmt 0 view .LVU1101 + 3409 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 3410 .LCFI24: + 3411 .cfi_def_cfa_offset 24 + 3412 .cfi_offset 4, -24 + 3413 .cfi_offset 5, -20 + 3414 .cfi_offset 6, -16 + 3415 .cfi_offset 7, -12 + 3416 .cfi_offset 8, -8 + 3417 .cfi_offset 14, -4 +1475:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; + 3418 .loc 1 1475 2 is_stmt 1 view .LVU1102 +1476:Middlewares/Third_Party/FatFs/src/ff.c **** + 3419 .loc 1 1476 2 view .LVU1103 +1476:Middlewares/Third_Party/FatFs/src/ff.c **** + 3420 .loc 1 1476 9 is_stmt 0 view .LVU1104 + 3421 0004 D0F80080 ldr r8, [r0] + 3422 .LVL385: +1479:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_INT_ERR; + 3423 .loc 1 1479 2 is_stmt 1 view .LVU1105 +1479:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_INT_ERR; + 3424 .loc 1 1479 5 is_stmt 0 view .LVU1106 + 3425 0008 B1F5001F cmp r1, #2097152 + 3426 000c 4AD2 bcs .L266 + 3427 000e 0746 mov r7, r0 + 3428 0010 0E46 mov r6, r1 +1479:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_INT_ERR; + 3429 .loc 1 1479 84 discriminator 1 view .LVU1107 + 3430 0012 11F01F0F tst r1, #31 + 3431 0016 47D1 bne .L267 +1482:Middlewares/Third_Party/FatFs/src/ff.c **** clst = dp->obj.sclust; /* Table start cluster (0:root) */ + 3432 .loc 1 1482 2 is_stmt 1 view .LVU1108 +1482:Middlewares/Third_Party/FatFs/src/ff.c **** clst = dp->obj.sclust; /* Table start cluster (0:root) */ + 3433 .loc 1 1482 11 is_stmt 0 view .LVU1109 + 3434 0018 4161 str r1, [r0, #20] +1483:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0 && fs->fs_type >= FS_FAT32) { /* Replace cluster# 0 with root cluster# */ + 3435 .loc 1 1483 2 is_stmt 1 view .LVU1110 +1483:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0 && fs->fs_type >= FS_FAT32) { /* Replace cluster# 0 with root cluster# */ + 3436 .loc 1 1483 7 is_stmt 0 view .LVU1111 + 3437 001a 8468 ldr r4, [r0, #8] + 3438 .LVL386: +1484:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fs->dirbase; + 3439 .loc 1 1484 2 is_stmt 1 view .LVU1112 +1484:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fs->dirbase; + 3440 .loc 1 1484 5 is_stmt 0 view .LVU1113 + 3441 001c 2CB9 cbnz r4, .L261 +1484:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fs->dirbase; + ARM GAS /tmp/cc5lWXRL.s page 179 + + + 3442 .loc 1 1484 21 discriminator 1 view .LVU1114 + 3443 001e 98F80030 ldrb r3, [r8] @ zero_extendqisi2 +1484:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fs->dirbase; + 3444 .loc 1 1484 16 discriminator 1 view .LVU1115 + 3445 0022 022B cmp r3, #2 + 3446 0024 01D9 bls .L261 +1485:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT) dp->obj.stat = 0; /* exFAT: Root dir has an FAT chain */ + 3447 .loc 1 1485 3 is_stmt 1 view .LVU1116 +1485:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT) dp->obj.stat = 0; /* exFAT: Root dir has an FAT chain */ + 3448 .loc 1 1485 8 is_stmt 0 view .LVU1117 + 3449 0026 D8F82840 ldr r4, [r8, #40] + 3450 .LVL387: +1486:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3451 .loc 1 1486 3 is_stmt 1 view .LVU1118 + 3452 .L261: +1489:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs / SZDIRE >= fs->n_rootdir) return FR_INT_ERR; /* Is index out of range? */ + 3453 .loc 1 1489 2 view .LVU1119 +1489:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs / SZDIRE >= fs->n_rootdir) return FR_INT_ERR; /* Is index out of range? */ + 3454 .loc 1 1489 5 is_stmt 0 view .LVU1120 + 3455 002a ECB9 cbnz r4, .L262 +1490:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = fs->dirbase; + 3456 .loc 1 1490 3 is_stmt 1 view .LVU1121 +1490:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = fs->dirbase; + 3457 .loc 1 1490 25 is_stmt 0 view .LVU1122 + 3458 002c B8F80830 ldrh r3, [r8, #8] +1490:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = fs->dirbase; + 3459 .loc 1 1490 6 view .LVU1123 + 3460 0030 B3EB561F cmp r3, r6, lsr #5 + 3461 0034 3AD9 bls .L268 +1491:Middlewares/Third_Party/FatFs/src/ff.c **** + 3462 .loc 1 1491 3 is_stmt 1 view .LVU1124 +1491:Middlewares/Third_Party/FatFs/src/ff.c **** + 3463 .loc 1 1491 16 is_stmt 0 view .LVU1125 + 3464 0036 D8F82830 ldr r3, [r8, #40] +1491:Middlewares/Third_Party/FatFs/src/ff.c **** + 3465 .loc 1 1491 12 view .LVU1126 + 3466 003a FB61 str r3, [r7, #28] + 3467 .LVL388: + 3468 .L263: +1503:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dp->sect) return FR_INT_ERR; + 3469 .loc 1 1503 2 is_stmt 1 view .LVU1127 +1503:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dp->sect) return FR_INT_ERR; + 3470 .loc 1 1503 12 is_stmt 0 view .LVU1128 + 3471 003c BC61 str r4, [r7, #24] +1504:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect += ofs / SS(fs); /* Sector# of the directory entry */ + 3472 .loc 1 1504 2 is_stmt 1 view .LVU1129 +1504:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect += ofs / SS(fs); /* Sector# of the directory entry */ + 3473 .loc 1 1504 9 is_stmt 0 view .LVU1130 + 3474 003e FB69 ldr r3, [r7, #28] +1504:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect += ofs / SS(fs); /* Sector# of the directory entry */ + 3475 .loc 1 1504 5 view .LVU1131 + 3476 0040 E3B3 cbz r3, .L272 +1505:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir = fs->win + (ofs % SS(fs)); /* Pointer to the entry in the win[] */ + 3477 .loc 1 1505 2 is_stmt 1 view .LVU1132 +1505:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir = fs->win + (ofs % SS(fs)); /* Pointer to the entry in the win[] */ + 3478 .loc 1 1505 20 is_stmt 0 view .LVU1133 + 3479 0042 B8F80C20 ldrh r2, [r8, #12] + ARM GAS /tmp/cc5lWXRL.s page 180 + + +1505:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir = fs->win + (ofs % SS(fs)); /* Pointer to the entry in the win[] */ + 3480 .loc 1 1505 18 view .LVU1134 + 3481 0046 B6FBF2F2 udiv r2, r6, r2 +1505:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir = fs->win + (ofs % SS(fs)); /* Pointer to the entry in the win[] */ + 3482 .loc 1 1505 11 view .LVU1135 + 3483 004a 1344 add r3, r3, r2 + 3484 004c FB61 str r3, [r7, #28] +1506:Middlewares/Third_Party/FatFs/src/ff.c **** + 3485 .loc 1 1506 2 is_stmt 1 view .LVU1136 +1506:Middlewares/Third_Party/FatFs/src/ff.c **** + 3486 .loc 1 1506 12 is_stmt 0 view .LVU1137 + 3487 004e 08F13403 add r3, r8, #52 +1506:Middlewares/Third_Party/FatFs/src/ff.c **** + 3488 .loc 1 1506 29 view .LVU1138 + 3489 0052 B8F80C10 ldrh r1, [r8, #12] +1506:Middlewares/Third_Party/FatFs/src/ff.c **** + 3490 .loc 1 1506 27 view .LVU1139 + 3491 0056 B6FBF1F2 udiv r2, r6, r1 + 3492 005a 01FB1261 mls r1, r1, r2, r6 +1506:Middlewares/Third_Party/FatFs/src/ff.c **** + 3493 .loc 1 1506 20 view .LVU1140 + 3494 005e 1944 add r1, r1, r3 +1506:Middlewares/Third_Party/FatFs/src/ff.c **** + 3495 .loc 1 1506 10 view .LVU1141 + 3496 0060 3962 str r1, [r7, #32] +1508:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3497 .loc 1 1508 2 is_stmt 1 view .LVU1142 +1508:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3498 .loc 1 1508 9 is_stmt 0 view .LVU1143 + 3499 0062 0020 movs r0, #0 + 3500 .LVL389: + 3501 .L260: +1509:Middlewares/Third_Party/FatFs/src/ff.c **** + 3502 .loc 1 1509 1 view .LVU1144 + 3503 0064 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 3504 .LVL390: + 3505 .L262: +1494:Middlewares/Third_Party/FatFs/src/ff.c **** while (ofs >= csz) { /* Follow cluster chain */ + 3506 .loc 1 1494 3 is_stmt 1 view .LVU1145 +1494:Middlewares/Third_Party/FatFs/src/ff.c **** while (ofs >= csz) { /* Follow cluster chain */ + 3507 .loc 1 1494 18 is_stmt 0 view .LVU1146 + 3508 0068 B8F80A50 ldrh r5, [r8, #10] +1494:Middlewares/Third_Party/FatFs/src/ff.c **** while (ofs >= csz) { /* Follow cluster chain */ + 3509 .loc 1 1494 28 view .LVU1147 + 3510 006c B8F80C30 ldrh r3, [r8, #12] +1494:Middlewares/Third_Party/FatFs/src/ff.c **** while (ofs >= csz) { /* Follow cluster chain */ + 3511 .loc 1 1494 7 view .LVU1148 + 3512 0070 03FB05F5 mul r5, r3, r5 + 3513 .LVL391: +1495:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&dp->obj, clst); /* Get next cluster */ + 3514 .loc 1 1495 3 is_stmt 1 view .LVU1149 + 3515 .L264: +1495:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&dp->obj, clst); /* Get next cluster */ + 3516 .loc 1 1495 9 view .LVU1150 + 3517 0074 AE42 cmp r6, r5 + 3518 0076 0FD3 bcc .L274 +1496:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + ARM GAS /tmp/cc5lWXRL.s page 181 + + + 3519 .loc 1 1496 4 view .LVU1151 +1496:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + 3520 .loc 1 1496 11 is_stmt 0 view .LVU1152 + 3521 0078 2146 mov r1, r4 + 3522 007a 3846 mov r0, r7 + 3523 007c FFF7FEFF bl get_fat + 3524 .LVL392: + 3525 0080 0446 mov r4, r0 + 3526 .LVL393: +1497:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Reached to end of table or internal + 3527 .loc 1 1497 4 is_stmt 1 view .LVU1153 +1497:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Reached to end of table or internal + 3528 .loc 1 1497 7 is_stmt 0 view .LVU1154 + 3529 0082 B0F1FF3F cmp r0, #-1 + 3530 0086 13D0 beq .L269 +1498:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= csz; + 3531 .loc 1 1498 4 is_stmt 1 view .LVU1155 +1498:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= csz; + 3532 .loc 1 1498 7 is_stmt 0 view .LVU1156 + 3533 0088 0128 cmp r0, #1 + 3534 008a 13D9 bls .L270 +1498:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= csz; + 3535 .loc 1 1498 30 discriminator 2 view .LVU1157 + 3536 008c D8F81830 ldr r3, [r8, #24] +1498:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= csz; + 3537 .loc 1 1498 17 discriminator 2 view .LVU1158 + 3538 0090 8342 cmp r3, r0 + 3539 0092 11D9 bls .L271 +1499:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3540 .loc 1 1499 4 is_stmt 1 view .LVU1159 +1499:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3541 .loc 1 1499 8 is_stmt 0 view .LVU1160 + 3542 0094 761B subs r6, r6, r5 + 3543 .LVL394: +1499:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3544 .loc 1 1499 8 view .LVU1161 + 3545 0096 EDE7 b .L264 + 3546 .LVL395: + 3547 .L274: +1501:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3548 .loc 1 1501 3 is_stmt 1 view .LVU1162 +1501:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3549 .loc 1 1501 14 is_stmt 0 view .LVU1163 + 3550 0098 2146 mov r1, r4 + 3551 009a 4046 mov r0, r8 + 3552 009c FFF7FEFF bl clust2sect + 3553 .LVL396: +1501:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3554 .loc 1 1501 12 view .LVU1164 + 3555 00a0 F861 str r0, [r7, #28] + 3556 00a2 CBE7 b .L263 + 3557 .LVL397: + 3558 .L266: +1480:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3559 .loc 1 1480 10 view .LVU1165 + 3560 00a4 0220 movs r0, #2 + 3561 .LVL398: + ARM GAS /tmp/cc5lWXRL.s page 182 + + +1480:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3562 .loc 1 1480 10 view .LVU1166 + 3563 00a6 DDE7 b .L260 + 3564 .LVL399: + 3565 .L267: +1480:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3566 .loc 1 1480 10 view .LVU1167 + 3567 00a8 0220 movs r0, #2 + 3568 .LVL400: +1480:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3569 .loc 1 1480 10 view .LVU1168 + 3570 00aa DBE7 b .L260 + 3571 .LVL401: + 3572 .L268: +1490:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = fs->dirbase; + 3573 .loc 1 1490 45 view .LVU1169 + 3574 00ac 0220 movs r0, #2 + 3575 .LVL402: +1490:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = fs->dirbase; + 3576 .loc 1 1490 45 view .LVU1170 + 3577 00ae D9E7 b .L260 + 3578 .LVL403: + 3579 .L269: +1497:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Reached to end of table or internal + 3580 .loc 1 1497 35 view .LVU1171 + 3581 00b0 0120 movs r0, #1 + 3582 .LVL404: +1497:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Reached to end of table or internal + 3583 .loc 1 1497 35 view .LVU1172 + 3584 00b2 D7E7 b .L260 + 3585 .LVL405: + 3586 .L270: +1498:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= csz; + 3587 .loc 1 1498 49 view .LVU1173 + 3588 00b4 0220 movs r0, #2 + 3589 .LVL406: +1498:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= csz; + 3590 .loc 1 1498 49 view .LVU1174 + 3591 00b6 D5E7 b .L260 + 3592 .LVL407: + 3593 .L271: +1498:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= csz; + 3594 .loc 1 1498 49 view .LVU1175 + 3595 00b8 0220 movs r0, #2 + 3596 .LVL408: +1498:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= csz; + 3597 .loc 1 1498 49 view .LVU1176 + 3598 00ba D3E7 b .L260 + 3599 .LVL409: + 3600 .L272: +1504:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect += ofs / SS(fs); /* Sector# of the directory entry */ + 3601 .loc 1 1504 24 view .LVU1177 + 3602 00bc 0220 movs r0, #2 + 3603 00be D1E7 b .L260 + 3604 .cfi_endproc + 3605 .LFE1205: + 3607 .section .text.create_chain,"ax",%progbits + ARM GAS /tmp/cc5lWXRL.s page 183 + + + 3608 .align 1 + 3609 .syntax unified + 3610 .thumb + 3611 .thumb_func + 3612 .fpu fpv5-d16 + 3614 create_chain: + 3615 .LVL410: + 3616 .LFB1203: +1355:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD cs, ncl, scl; + 3617 .loc 1 1355 1 is_stmt 1 view -0 + 3618 .cfi_startproc + 3619 @ args = 0, pretend = 0, frame = 0 + 3620 @ frame_needed = 0, uses_anonymous_args = 0 +1355:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD cs, ncl, scl; + 3621 .loc 1 1355 1 is_stmt 0 view .LVU1179 + 3622 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 3623 .LCFI25: + 3624 .cfi_def_cfa_offset 24 + 3625 .cfi_offset 4, -24 + 3626 .cfi_offset 5, -20 + 3627 .cfi_offset 6, -16 + 3628 .cfi_offset 7, -12 + 3629 .cfi_offset 8, -8 + 3630 .cfi_offset 14, -4 + 3631 0004 0546 mov r5, r0 +1356:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 3632 .loc 1 1356 2 is_stmt 1 view .LVU1180 +1357:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = obj->fs; + 3633 .loc 1 1357 2 view .LVU1181 +1358:Middlewares/Third_Party/FatFs/src/ff.c **** + 3634 .loc 1 1358 2 view .LVU1182 +1358:Middlewares/Third_Party/FatFs/src/ff.c **** + 3635 .loc 1 1358 9 is_stmt 0 view .LVU1183 + 3636 0006 0668 ldr r6, [r0] + 3637 .LVL411: +1361:Middlewares/Third_Party/FatFs/src/ff.c **** scl = fs->last_clst; /* Get suggested cluster to start from */ + 3638 .loc 1 1361 2 is_stmt 1 view .LVU1184 +1361:Middlewares/Third_Party/FatFs/src/ff.c **** scl = fs->last_clst; /* Get suggested cluster to start from */ + 3639 .loc 1 1361 5 is_stmt 0 view .LVU1185 + 3640 0008 0F46 mov r7, r1 + 3641 000a 51B9 cbnz r1, .L276 +1362:Middlewares/Third_Party/FatFs/src/ff.c **** if (scl == 0 || scl >= fs->n_fatent) scl = 1; + 3642 .loc 1 1362 3 is_stmt 1 view .LVU1186 +1362:Middlewares/Third_Party/FatFs/src/ff.c **** if (scl == 0 || scl >= fs->n_fatent) scl = 1; + 3643 .loc 1 1362 7 is_stmt 0 view .LVU1187 + 3644 000c D6F81080 ldr r8, [r6, #16] + 3645 .LVL412: +1363:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3646 .loc 1 1363 3 is_stmt 1 view .LVU1188 +1363:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3647 .loc 1 1363 6 is_stmt 0 view .LVU1189 + 3648 0010 B8F1000F cmp r8, #0 + 3649 0014 12D0 beq .L285 +1363:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3650 .loc 1 1363 28 discriminator 2 view .LVU1190 + 3651 0016 B369 ldr r3, [r6, #24] +1363:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 184 + + + 3652 .loc 1 1363 16 discriminator 2 view .LVU1191 + 3653 0018 4345 cmp r3, r8 + 3654 001a 11D8 bhi .L277 +1363:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3655 .loc 1 1363 44 view .LVU1192 + 3656 001c 4FF00108 mov r8, #1 + 3657 .LVL413: +1363:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3658 .loc 1 1363 44 view .LVU1193 + 3659 0020 0EE0 b .L277 + 3660 .LVL414: + 3661 .L276: +1366:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs < 2) return 1; /* Invalid FAT value */ + 3662 .loc 1 1366 3 is_stmt 1 view .LVU1194 +1366:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs < 2) return 1; /* Invalid FAT value */ + 3663 .loc 1 1366 8 is_stmt 0 view .LVU1195 + 3664 0022 FFF7FEFF bl get_fat + 3665 .LVL415: +1366:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs < 2) return 1; /* Invalid FAT value */ + 3666 .loc 1 1366 8 view .LVU1196 + 3667 0026 0346 mov r3, r0 + 3668 .LVL416: +1367:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs == 0xFFFFFFFF) return cs; /* A disk error occurred */ + 3669 .loc 1 1367 3 is_stmt 1 view .LVU1197 +1367:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs == 0xFFFFFFFF) return cs; /* A disk error occurred */ + 3670 .loc 1 1367 6 is_stmt 0 view .LVU1198 + 3671 0028 0128 cmp r0, #1 + 3672 002a 4CD9 bls .L287 +1368:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs < fs->n_fatent) return cs; /* It is already followed by next cluster */ + 3673 .loc 1 1368 3 is_stmt 1 view .LVU1199 +1368:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs < fs->n_fatent) return cs; /* It is already followed by next cluster */ + 3674 .loc 1 1368 6 is_stmt 0 view .LVU1200 + 3675 002c B0F1FF3F cmp r0, #-1 + 3676 0030 4ED0 beq .L275 +1369:Middlewares/Third_Party/FatFs/src/ff.c **** scl = clst; + 3677 .loc 1 1369 3 is_stmt 1 view .LVU1201 +1369:Middlewares/Third_Party/FatFs/src/ff.c **** scl = clst; + 3678 .loc 1 1369 14 is_stmt 0 view .LVU1202 + 3679 0032 B269 ldr r2, [r6, #24] +1369:Middlewares/Third_Party/FatFs/src/ff.c **** scl = clst; + 3680 .loc 1 1369 6 view .LVU1203 + 3681 0034 8242 cmp r2, r0 + 3682 0036 4BD8 bhi .L275 +1370:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3683 .loc 1 1370 7 view .LVU1204 + 3684 0038 B846 mov r8, r7 + 3685 003a 01E0 b .L277 + 3686 .LVL417: + 3687 .L285: +1363:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3688 .loc 1 1363 44 view .LVU1205 + 3689 003c 4FF00108 mov r8, #1 + 3690 .LVL418: + 3691 .L277: +1400:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { + 3692 .loc 1 1400 3 is_stmt 1 view .LVU1206 +1400:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { + ARM GAS /tmp/cc5lWXRL.s page 185 + + + 3693 .loc 1 1400 7 is_stmt 0 view .LVU1207 + 3694 0040 4446 mov r4, r8 + 3695 0042 0CE0 b .L281 + 3696 .LVL419: + 3697 .L279: +1407:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs == 0) break; /* Found a free cluster */ + 3698 .loc 1 1407 4 is_stmt 1 view .LVU1208 +1407:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs == 0) break; /* Found a free cluster */ + 3699 .loc 1 1407 9 is_stmt 0 view .LVU1209 + 3700 0044 2146 mov r1, r4 + 3701 0046 2846 mov r0, r5 + 3702 0048 FFF7FEFF bl get_fat + 3703 .LVL420: +1408:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs == 1 || cs == 0xFFFFFFFF) return cs; /* An error occurred */ + 3704 .loc 1 1408 4 is_stmt 1 view .LVU1210 +1408:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs == 1 || cs == 0xFFFFFFFF) return cs; /* An error occurred */ + 3705 .loc 1 1408 7 is_stmt 0 view .LVU1211 + 3706 004c 0346 mov r3, r0 + 3707 004e 78B1 cbz r0, .L280 +1409:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == scl) return 0; /* No free cluster */ + 3708 .loc 1 1409 4 is_stmt 1 view .LVU1212 +1409:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == scl) return 0; /* No free cluster */ + 3709 .loc 1 1409 7 is_stmt 0 view .LVU1213 + 3710 0050 B0F1FF3F cmp r0, #-1 + 3711 0054 18BF it ne + 3712 0056 0128 cmpne r0, #1 + 3713 0058 3AD0 beq .L275 +1410:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3714 .loc 1 1410 4 is_stmt 1 view .LVU1214 +1410:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3715 .loc 1 1410 7 is_stmt 0 view .LVU1215 + 3716 005a 4445 cmp r4, r8 + 3717 005c 37D0 beq .L292 + 3718 .LVL421: + 3719 .L281: +1401:Middlewares/Third_Party/FatFs/src/ff.c **** ncl++; /* Next cluster */ + 3720 .loc 1 1401 3 is_stmt 1 view .LVU1216 +1402:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl >= fs->n_fatent) { /* Check wrap-around */ + 3721 .loc 1 1402 4 view .LVU1217 +1402:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl >= fs->n_fatent) { /* Check wrap-around */ + 3722 .loc 1 1402 7 is_stmt 0 view .LVU1218 + 3723 005e 0134 adds r4, r4, #1 + 3724 .LVL422: +1403:Middlewares/Third_Party/FatFs/src/ff.c **** ncl = 2; + 3725 .loc 1 1403 4 is_stmt 1 view .LVU1219 +1403:Middlewares/Third_Party/FatFs/src/ff.c **** ncl = 2; + 3726 .loc 1 1403 17 is_stmt 0 view .LVU1220 + 3727 0060 B369 ldr r3, [r6, #24] +1403:Middlewares/Third_Party/FatFs/src/ff.c **** ncl = 2; + 3728 .loc 1 1403 7 view .LVU1221 + 3729 0062 A342 cmp r3, r4 + 3730 0064 EED8 bhi .L279 +1404:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl > scl) return 0; /* No free cluster */ + 3731 .loc 1 1404 5 is_stmt 1 view .LVU1222 + 3732 .LVL423: +1405:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3733 .loc 1 1405 5 view .LVU1223 + ARM GAS /tmp/cc5lWXRL.s page 186 + + +1405:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3734 .loc 1 1405 8 is_stmt 0 view .LVU1224 + 3735 0066 B8F1010F cmp r8, #1 + 3736 006a 2ED9 bls .L288 +1404:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl > scl) return 0; /* No free cluster */ + 3737 .loc 1 1404 9 view .LVU1225 + 3738 006c 0224 movs r4, #2 + 3739 006e E9E7 b .L279 + 3740 .LVL424: + 3741 .L280: +1412:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && clst != 0) { + 3742 .loc 1 1412 3 is_stmt 1 view .LVU1226 +1412:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && clst != 0) { + 3743 .loc 1 1412 9 is_stmt 0 view .LVU1227 + 3744 0070 4FF0FF32 mov r2, #-1 + 3745 0074 2146 mov r1, r4 + 3746 0076 3046 mov r0, r6 + 3747 .LVL425: +1412:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && clst != 0) { + 3748 .loc 1 1412 9 view .LVU1228 + 3749 0078 FFF7FEFF bl put_fat + 3750 .LVL426: +1413:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, clst, ncl); /* Link it from the previous one if needed */ + 3751 .loc 1 1413 3 is_stmt 1 view .LVU1229 +1413:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, clst, ncl); /* Link it from the previous one if needed */ + 3752 .loc 1 1413 11 is_stmt 0 view .LVU1230 + 3753 007c 0346 mov r3, r0 +1413:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, clst, ncl); /* Link it from the previous one if needed */ + 3754 .loc 1 1413 20 view .LVU1231 + 3755 007e B0FA80F0 clz r0, r0 + 3756 .LVL427: +1413:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, clst, ncl); /* Link it from the previous one if needed */ + 3757 .loc 1 1413 20 view .LVU1232 + 3758 0082 4009 lsrs r0, r0, #5 + 3759 0084 002F cmp r7, #0 + 3760 0086 08BF it eq + 3761 0088 0020 moveq r0, #0 +1413:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, clst, ncl); /* Link it from the previous one if needed */ + 3762 .loc 1 1413 6 view .LVU1233 + 3763 008a 70B9 cbnz r0, .L293 + 3764 .L282: + 3765 .LVL428: +1418:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = ncl; + 3766 .loc 1 1418 2 is_stmt 1 view .LVU1234 +1418:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = ncl; + 3767 .loc 1 1418 5 is_stmt 0 view .LVU1235 + 3768 008c A3B9 cbnz r3, .L283 +1419:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->free_clst <= fs->n_fatent - 2) fs->free_clst--; + 3769 .loc 1 1419 3 is_stmt 1 view .LVU1236 +1419:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->free_clst <= fs->n_fatent - 2) fs->free_clst--; + 3770 .loc 1 1419 17 is_stmt 0 view .LVU1237 + 3771 008e 3461 str r4, [r6, #16] +1420:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; + 3772 .loc 1 1420 3 is_stmt 1 view .LVU1238 +1420:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; + 3773 .loc 1 1420 9 is_stmt 0 view .LVU1239 + 3774 0090 7269 ldr r2, [r6, #20] + ARM GAS /tmp/cc5lWXRL.s page 187 + + +1420:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; + 3775 .loc 1 1420 26 view .LVU1240 + 3776 0092 B369 ldr r3, [r6, #24] + 3777 .LVL429: +1420:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; + 3778 .loc 1 1420 37 view .LVU1241 + 3779 0094 023B subs r3, r3, #2 +1420:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; + 3780 .loc 1 1420 6 view .LVU1242 + 3781 0096 9A42 cmp r2, r3 + 3782 0098 01D8 bhi .L284 +1420:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; + 3783 .loc 1 1420 42 is_stmt 1 discriminator 1 view .LVU1243 +1420:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; + 3784 .loc 1 1420 55 is_stmt 0 discriminator 1 view .LVU1244 + 3785 009a 013A subs r2, r2, #1 + 3786 009c 7261 str r2, [r6, #20] + 3787 .L284: +1421:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 3788 .loc 1 1421 3 is_stmt 1 view .LVU1245 +1421:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 3789 .loc 1 1421 16 is_stmt 0 view .LVU1246 + 3790 009e 3379 ldrb r3, [r6, #4] @ zero_extendqisi2 + 3791 00a0 43F00103 orr r3, r3, #1 + 3792 00a4 3371 strb r3, [r6, #4] + 3793 00a6 2346 mov r3, r4 + 3794 00a8 12E0 b .L275 + 3795 .L293: +1414:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3796 .loc 1 1414 4 is_stmt 1 view .LVU1247 +1414:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3797 .loc 1 1414 10 is_stmt 0 view .LVU1248 + 3798 00aa 2246 mov r2, r4 + 3799 00ac 3946 mov r1, r7 + 3800 00ae 3046 mov r0, r6 + 3801 00b0 FFF7FEFF bl put_fat + 3802 .LVL430: + 3803 00b4 0346 mov r3, r0 + 3804 .LVL431: +1414:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3805 .loc 1 1414 10 view .LVU1249 + 3806 00b6 E9E7 b .L282 + 3807 .L283: +1423:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3808 .loc 1 1423 3 is_stmt 1 view .LVU1250 +1423:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3809 .loc 1 1423 43 is_stmt 0 view .LVU1251 + 3810 00b8 012B cmp r3, #1 + 3811 00ba 01D0 beq .L294 + 3812 00bc 0123 movs r3, #1 + 3813 .LVL432: +1423:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3814 .loc 1 1423 43 view .LVU1252 + 3815 00be 07E0 b .L275 + 3816 .LVL433: + 3817 .L294: +1423:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 188 + + + 3818 .loc 1 1423 43 view .LVU1253 + 3819 00c0 4FF0FF33 mov r3, #-1 + 3820 .LVL434: +1423:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3821 .loc 1 1423 43 view .LVU1254 + 3822 00c4 04E0 b .L275 + 3823 .LVL435: + 3824 .L287: +1367:Middlewares/Third_Party/FatFs/src/ff.c **** if (cs == 0xFFFFFFFF) return cs; /* A disk error occurred */ + 3825 .loc 1 1367 22 view .LVU1255 + 3826 00c6 0123 movs r3, #1 + 3827 00c8 02E0 b .L275 + 3828 .LVL436: + 3829 .L288: +1405:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3830 .loc 1 1405 27 view .LVU1256 + 3831 00ca 0023 movs r3, #0 + 3832 00cc 00E0 b .L275 + 3833 .LVL437: + 3834 .L292: +1410:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3835 .loc 1 1410 27 view .LVU1257 + 3836 00ce 0023 movs r3, #0 + 3837 .LVL438: + 3838 .L275: +1427:Middlewares/Third_Party/FatFs/src/ff.c **** + 3839 .loc 1 1427 1 view .LVU1258 + 3840 00d0 1846 mov r0, r3 + 3841 00d2 BDE8F081 pop {r4, r5, r6, r7, r8, pc} +1427:Middlewares/Third_Party/FatFs/src/ff.c **** + 3842 .loc 1 1427 1 view .LVU1259 + 3843 .cfi_endproc + 3844 .LFE1203: + 3846 .section .text.remove_chain,"ax",%progbits + 3847 .align 1 + 3848 .syntax unified + 3849 .thumb + 3850 .thumb_func + 3851 .fpu fpv5-d16 + 3853 remove_chain: + 3854 .LVL439: + 3855 .LFB1202: +1276:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_OK; + 3856 .loc 1 1276 1 is_stmt 1 view -0 + 3857 .cfi_startproc + 3858 @ args = 0, pretend = 0, frame = 0 + 3859 @ frame_needed = 0, uses_anonymous_args = 0 +1276:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_OK; + 3860 .loc 1 1276 1 is_stmt 0 view .LVU1261 + 3861 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 3862 .LCFI26: + 3863 .cfi_def_cfa_offset 24 + 3864 .cfi_offset 3, -24 + 3865 .cfi_offset 4, -20 + 3866 .cfi_offset 5, -16 + 3867 .cfi_offset 6, -12 + 3868 .cfi_offset 7, -8 + ARM GAS /tmp/cc5lWXRL.s page 189 + + + 3869 .cfi_offset 14, -4 + 3870 0002 0C46 mov r4, r1 +1277:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD nxt; + 3871 .loc 1 1277 2 is_stmt 1 view .LVU1262 + 3872 .LVL440: +1278:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = obj->fs; + 3873 .loc 1 1278 2 view .LVU1263 +1279:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT || _USE_TRIM + 3874 .loc 1 1279 2 view .LVU1264 +1279:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT || _USE_TRIM + 3875 .loc 1 1279 9 is_stmt 0 view .LVU1265 + 3876 0004 0568 ldr r5, [r0] + 3877 .LVL441: +1287:Middlewares/Third_Party/FatFs/src/ff.c **** + 3878 .loc 1 1287 2 is_stmt 1 view .LVU1266 +1287:Middlewares/Third_Party/FatFs/src/ff.c **** + 3879 .loc 1 1287 5 is_stmt 0 view .LVU1267 + 3880 0006 0129 cmp r1, #1 + 3881 0008 2ED9 bls .L300 + 3882 000a 0646 mov r6, r0 + 3883 000c 1146 mov r1, r2 + 3884 .LVL442: +1287:Middlewares/Third_Party/FatFs/src/ff.c **** + 3885 .loc 1 1287 28 discriminator 2 view .LVU1268 + 3886 000e AB69 ldr r3, [r5, #24] +1287:Middlewares/Third_Party/FatFs/src/ff.c **** + 3887 .loc 1 1287 15 discriminator 2 view .LVU1269 + 3888 0010 A342 cmp r3, r4 + 3889 0012 2BD9 bls .L301 +1290:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, pclst, 0xFFFFFFFF); + 3890 .loc 1 1290 2 is_stmt 1 view .LVU1270 +1290:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, pclst, 0xFFFFFFFF); + 3891 .loc 1 1290 5 is_stmt 0 view .LVU1271 + 3892 0014 4AB1 cbz r2, .L299 +1291:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; + 3893 .loc 1 1291 3 is_stmt 1 view .LVU1272 +1291:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; + 3894 .loc 1 1291 9 is_stmt 0 view .LVU1273 + 3895 0016 4FF0FF32 mov r2, #-1 + 3896 .LVL443: +1291:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; + 3897 .loc 1 1291 9 view .LVU1274 + 3898 001a 2846 mov r0, r5 + 3899 .LVL444: +1291:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; + 3900 .loc 1 1291 9 view .LVU1275 + 3901 001c FFF7FEFF bl put_fat + 3902 .LVL445: +1292:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3903 .loc 1 1292 3 is_stmt 1 view .LVU1276 +1292:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3904 .loc 1 1292 6 is_stmt 0 view .LVU1277 + 3905 0020 0746 mov r7, r0 + 3906 0022 10B1 cbz r0, .L299 + 3907 0024 23E0 b .L296 + 3908 .LVL446: + 3909 .L298: + ARM GAS /tmp/cc5lWXRL.s page 190 + + +1327:Middlewares/Third_Party/FatFs/src/ff.c **** } while (clst < fs->n_fatent); /* Repeat while not the last link */ + 3910 .loc 1 1327 3 is_stmt 1 view .LVU1278 +1328:Middlewares/Third_Party/FatFs/src/ff.c **** + 3911 .loc 1 1328 10 view .LVU1279 +1328:Middlewares/Third_Party/FatFs/src/ff.c **** + 3912 .loc 1 1328 2 is_stmt 0 view .LVU1280 + 3913 0026 A242 cmp r2, r4 + 3914 0028 21D9 bls .L296 + 3915 .LVL447: + 3916 .L299: +1296:Middlewares/Third_Party/FatFs/src/ff.c **** nxt = get_fat(obj, clst); /* Get cluster status */ + 3917 .loc 1 1296 2 is_stmt 1 view .LVU1281 +1297:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 0) break; /* Empty cluster? */ + 3918 .loc 1 1297 3 view .LVU1282 + 3919 002a 2746 mov r7, r4 +1297:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 0) break; /* Empty cluster? */ + 3920 .loc 1 1297 9 is_stmt 0 view .LVU1283 + 3921 002c 2146 mov r1, r4 + 3922 002e 3046 mov r0, r6 + 3923 0030 FFF7FEFF bl get_fat + 3924 .LVL448: +1298:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 1) return FR_INT_ERR; /* Internal error? */ + 3925 .loc 1 1298 3 is_stmt 1 view .LVU1284 +1298:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 1) return FR_INT_ERR; /* Internal error? */ + 3926 .loc 1 1298 6 is_stmt 0 view .LVU1285 + 3927 0034 0446 mov r4, r0 + 3928 .LVL449: +1298:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 1) return FR_INT_ERR; /* Internal error? */ + 3929 .loc 1 1298 6 view .LVU1286 + 3930 0036 E0B1 cbz r0, .L302 +1299:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error? */ + 3931 .loc 1 1299 3 is_stmt 1 view .LVU1287 +1299:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error? */ + 3932 .loc 1 1299 6 is_stmt 0 view .LVU1288 + 3933 0038 0128 cmp r0, #1 + 3934 003a 1CD0 beq .L303 +1300:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + 3935 .loc 1 1300 3 is_stmt 1 view .LVU1289 +1300:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + 3936 .loc 1 1300 6 is_stmt 0 view .LVU1290 + 3937 003c B0F1FF3F cmp r0, #-1 + 3938 0040 1BD0 beq .L304 +1301:Middlewares/Third_Party/FatFs/src/ff.c **** res = put_fat(fs, clst, 0); /* Mark the cluster 'free' on the FAT */ + 3939 .loc 1 1301 3 is_stmt 1 view .LVU1291 +1302:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; + 3940 .loc 1 1302 4 view .LVU1292 +1302:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; + 3941 .loc 1 1302 10 is_stmt 0 view .LVU1293 + 3942 0042 0022 movs r2, #0 + 3943 0044 3946 mov r1, r7 + 3944 0046 2846 mov r0, r5 + 3945 .LVL450: +1302:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; + 3946 .loc 1 1302 10 view .LVU1294 + 3947 0048 FFF7FEFF bl put_fat + 3948 .LVL451: +1303:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 191 + + + 3949 .loc 1 1303 4 is_stmt 1 view .LVU1295 +1303:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3950 .loc 1 1303 7 is_stmt 0 view .LVU1296 + 3951 004c 0746 mov r7, r0 + 3952 .LVL452: +1303:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3953 .loc 1 1303 7 view .LVU1297 + 3954 004e 70B9 cbnz r0, .L296 +1305:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst++; + 3955 .loc 1 1305 3 is_stmt 1 view .LVU1298 +1305:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst++; + 3956 .loc 1 1305 9 is_stmt 0 view .LVU1299 + 3957 0050 6B69 ldr r3, [r5, #20] +1305:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst++; + 3958 .loc 1 1305 25 view .LVU1300 + 3959 0052 AA69 ldr r2, [r5, #24] +1305:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst++; + 3960 .loc 1 1305 36 view .LVU1301 + 3961 0054 911E subs r1, r2, #2 +1305:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst++; + 3962 .loc 1 1305 6 view .LVU1302 + 3963 0056 8B42 cmp r3, r1 + 3964 0058 E5D2 bcs .L298 +1306:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; + 3965 .loc 1 1306 4 is_stmt 1 view .LVU1303 +1306:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; + 3966 .loc 1 1306 17 is_stmt 0 view .LVU1304 + 3967 005a 0133 adds r3, r3, #1 + 3968 005c 6B61 str r3, [r5, #20] +1307:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3969 .loc 1 1307 4 is_stmt 1 view .LVU1305 +1307:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3970 .loc 1 1307 17 is_stmt 0 view .LVU1306 + 3971 005e 2B79 ldrb r3, [r5, #4] @ zero_extendqisi2 + 3972 0060 43F00103 orr r3, r3, #1 + 3973 0064 2B71 strb r3, [r5, #4] + 3974 0066 DEE7 b .L298 + 3975 .LVL453: + 3976 .L300: +1287:Middlewares/Third_Party/FatFs/src/ff.c **** + 3977 .loc 1 1287 47 view .LVU1307 + 3978 0068 0227 movs r7, #2 + 3979 006a 00E0 b .L296 + 3980 .LVL454: + 3981 .L301: +1287:Middlewares/Third_Party/FatFs/src/ff.c **** + 3982 .loc 1 1287 47 view .LVU1308 + 3983 006c 0227 movs r7, #2 + 3984 .LVL455: + 3985 .L296: +1342:Middlewares/Third_Party/FatFs/src/ff.c **** + 3986 .loc 1 1342 1 view .LVU1309 + 3987 006e 3846 mov r0, r7 + 3988 0070 F8BD pop {r3, r4, r5, r6, r7, pc} + 3989 .LVL456: + 3990 .L302: +1341:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 192 + + + 3991 .loc 1 1341 9 view .LVU1310 + 3992 0072 0027 movs r7, #0 + 3993 .LVL457: +1341:Middlewares/Third_Party/FatFs/src/ff.c **** } + 3994 .loc 1 1341 9 view .LVU1311 + 3995 0074 FBE7 b .L296 + 3996 .LVL458: + 3997 .L303: +1299:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error? */ + 3998 .loc 1 1299 24 view .LVU1312 + 3999 0076 0227 movs r7, #2 + 4000 .LVL459: +1299:Middlewares/Third_Party/FatFs/src/ff.c **** if (nxt == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error? */ + 4001 .loc 1 1299 24 view .LVU1313 + 4002 0078 F9E7 b .L296 + 4003 .LVL460: + 4004 .L304: +1300:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + 4005 .loc 1 1300 33 view .LVU1314 + 4006 007a 0127 movs r7, #1 + 4007 .LVL461: +1300:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + 4008 .loc 1 1300 33 view .LVU1315 + 4009 007c F7E7 b .L296 + 4010 .cfi_endproc + 4011 .LFE1202: + 4013 .section .text.dir_remove,"ax",%progbits + 4014 .align 1 + 4015 .syntax unified + 4016 .thumb + 4017 .thumb_func + 4018 .fpu fpv5-d16 + 4020 dir_remove: + 4021 .LVL462: + 4022 .LFB1213: +2399:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 4023 .loc 1 2399 1 is_stmt 1 view -0 + 4024 .cfi_startproc + 4025 @ args = 0, pretend = 0, frame = 0 + 4026 @ frame_needed = 0, uses_anonymous_args = 0 +2399:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 4027 .loc 1 2399 1 is_stmt 0 view .LVU1317 + 4028 0000 38B5 push {r3, r4, r5, lr} + 4029 .LCFI27: + 4030 .cfi_def_cfa_offset 16 + 4031 .cfi_offset 3, -16 + 4032 .cfi_offset 4, -12 + 4033 .cfi_offset 5, -8 + 4034 .cfi_offset 14, -4 + 4035 0002 0446 mov r4, r0 +2400:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; + 4036 .loc 1 2400 2 is_stmt 1 view .LVU1318 +2401:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4037 .loc 1 2401 2 view .LVU1319 +2401:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4038 .loc 1 2401 9 is_stmt 0 view .LVU1320 + 4039 0004 0568 ldr r5, [r0] + ARM GAS /tmp/cc5lWXRL.s page 193 + + + 4040 .LVL463: +2424:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 4041 .loc 1 2424 2 is_stmt 1 view .LVU1321 +2424:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 4042 .loc 1 2424 8 is_stmt 0 view .LVU1322 + 4043 0006 C169 ldr r1, [r0, #28] + 4044 0008 2846 mov r0, r5 + 4045 .LVL464: +2424:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 4046 .loc 1 2424 8 view .LVU1323 + 4047 000a FFF7FEFF bl move_window + 4048 .LVL465: +2425:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir[DIR_Name] = DDEM; + 4049 .loc 1 2425 2 is_stmt 1 view .LVU1324 +2425:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir[DIR_Name] = DDEM; + 4050 .loc 1 2425 5 is_stmt 0 view .LVU1325 + 4051 000e 20B9 cbnz r0, .L307 +2426:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4052 .loc 1 2426 3 is_stmt 1 view .LVU1326 +2426:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4053 .loc 1 2426 5 is_stmt 0 view .LVU1327 + 4054 0010 236A ldr r3, [r4, #32] +2426:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4055 .loc 1 2426 21 view .LVU1328 + 4056 0012 E522 movs r2, #229 + 4057 0014 1A70 strb r2, [r3] +2427:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4058 .loc 1 2427 3 is_stmt 1 view .LVU1329 +2427:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4059 .loc 1 2427 13 is_stmt 0 view .LVU1330 + 4060 0016 0123 movs r3, #1 + 4061 0018 EB70 strb r3, [r5, #3] + 4062 .L307: +2431:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4063 .loc 1 2431 2 is_stmt 1 view .LVU1331 +2432:Middlewares/Third_Party/FatFs/src/ff.c **** + 4064 .loc 1 2432 1 is_stmt 0 view .LVU1332 + 4065 001a 38BD pop {r3, r4, r5, pc} +2432:Middlewares/Third_Party/FatFs/src/ff.c **** + 4066 .loc 1 2432 1 view .LVU1333 + 4067 .cfi_endproc + 4068 .LFE1213: + 4070 .section .text.dir_next,"ax",%progbits + 4071 .align 1 + 4072 .syntax unified + 4073 .thumb + 4074 .thumb_func + 4075 .fpu fpv5-d16 + 4077 dir_next: + 4078 .LVL466: + 4079 .LFB1206: +1523:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ofs, clst; + 4080 .loc 1 1523 1 is_stmt 1 view -0 + 4081 .cfi_startproc + 4082 @ args = 0, pretend = 0, frame = 0 + 4083 @ frame_needed = 0, uses_anonymous_args = 0 +1523:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ofs, clst; + ARM GAS /tmp/cc5lWXRL.s page 194 + + + 4084 .loc 1 1523 1 is_stmt 0 view .LVU1335 + 4085 0000 2DE9F843 push {r3, r4, r5, r6, r7, r8, r9, lr} + 4086 .LCFI28: + 4087 .cfi_def_cfa_offset 32 + 4088 .cfi_offset 3, -32 + 4089 .cfi_offset 4, -28 + 4090 .cfi_offset 5, -24 + 4091 .cfi_offset 6, -20 + 4092 .cfi_offset 7, -16 + 4093 .cfi_offset 8, -12 + 4094 .cfi_offset 9, -8 + 4095 .cfi_offset 14, -4 +1524:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; + 4096 .loc 1 1524 2 is_stmt 1 view .LVU1336 +1525:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 4097 .loc 1 1525 2 view .LVU1337 +1525:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 4098 .loc 1 1525 9 is_stmt 0 view .LVU1338 + 4099 0004 0668 ldr r6, [r0] + 4100 .LVL467: +1527:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 4101 .loc 1 1527 2 is_stmt 1 view .LVU1339 +1530:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dp->sect || ofs >= (DWORD)((_FS_EXFAT && fs->fs_type == FS_EXFAT) ? MAX_DIR_EX : MAX_DIR)) re + 4102 .loc 1 1530 2 view .LVU1340 +1530:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dp->sect || ofs >= (DWORD)((_FS_EXFAT && fs->fs_type == FS_EXFAT) ? MAX_DIR_EX : MAX_DIR)) re + 4103 .loc 1 1530 10 is_stmt 0 view .LVU1341 + 4104 0006 4469 ldr r4, [r0, #20] + 4105 .LVL468: +1531:Middlewares/Third_Party/FatFs/src/ff.c **** + 4106 .loc 1 1531 2 is_stmt 1 view .LVU1342 +1531:Middlewares/Third_Party/FatFs/src/ff.c **** + 4107 .loc 1 1531 9 is_stmt 0 view .LVU1343 + 4108 0008 C369 ldr r3, [r0, #28] +1531:Middlewares/Third_Party/FatFs/src/ff.c **** + 4109 .loc 1 1531 5 view .LVU1344 + 4110 000a 002B cmp r3, #0 + 4111 000c 74D0 beq .L317 + 4112 000e 0546 mov r5, r0 + 4113 0010 0F46 mov r7, r1 + 4114 0012 2034 adds r4, r4, #32 + 4115 .LVL469: +1531:Middlewares/Third_Party/FatFs/src/ff.c **** + 4116 .loc 1 1531 16 discriminator 2 view .LVU1345 + 4117 0014 B4F5001F cmp r4, #2097152 + 4118 0018 70D2 bcs .L318 +1533:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect++; /* Next sector */ + 4119 .loc 1 1533 2 is_stmt 1 view .LVU1346 +1533:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect++; /* Next sector */ + 4120 .loc 1 1533 12 is_stmt 0 view .LVU1347 + 4121 001a B189 ldrh r1, [r6, #12] + 4122 .LVL470: +1533:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect++; /* Next sector */ + 4123 .loc 1 1533 10 view .LVU1348 + 4124 001c B4FBF1F2 udiv r2, r4, r1 + 4125 0020 01FB1242 mls r2, r1, r2, r4 +1533:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect++; /* Next sector */ + 4126 .loc 1 1533 5 view .LVU1349 + ARM GAS /tmp/cc5lWXRL.s page 195 + + + 4127 0024 3AB9 cbnz r2, .L311 +1534:Middlewares/Third_Party/FatFs/src/ff.c **** + 4128 .loc 1 1534 3 is_stmt 1 view .LVU1350 +1534:Middlewares/Third_Party/FatFs/src/ff.c **** + 4129 .loc 1 1534 11 is_stmt 0 view .LVU1351 + 4130 0026 0133 adds r3, r3, #1 + 4131 0028 C361 str r3, [r0, #28] +1536:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs / SZDIRE >= fs->n_rootdir) { /* Report EOT if it reached end of static table */ + 4132 .loc 1 1536 3 is_stmt 1 view .LVU1352 +1536:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs / SZDIRE >= fs->n_rootdir) { /* Report EOT if it reached end of static table */ + 4133 .loc 1 1536 10 is_stmt 0 view .LVU1353 + 4134 002a 8169 ldr r1, [r0, #24] +1536:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs / SZDIRE >= fs->n_rootdir) { /* Report EOT if it reached end of static table */ + 4135 .loc 1 1536 6 view .LVU1354 + 4136 002c A1B9 cbnz r1, .L312 +1537:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = 0; return FR_NO_FILE; + 4137 .loc 1 1537 4 is_stmt 1 view .LVU1355 +1537:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = 0; return FR_NO_FILE; + 4138 .loc 1 1537 26 is_stmt 0 view .LVU1356 + 4139 002e 3389 ldrh r3, [r6, #8] +1537:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = 0; return FR_NO_FILE; + 4140 .loc 1 1537 7 view .LVU1357 + 4141 0030 B3EB541F cmp r3, r4, lsr #5 + 4142 0034 0CD9 bls .L327 + 4143 .LVL471: + 4144 .L311: +1574:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir = fs->win + ofs % SS(fs); /* Pointer to the entry in the win[] */ + 4145 .loc 1 1574 2 is_stmt 1 view .LVU1358 +1574:Middlewares/Third_Party/FatFs/src/ff.c **** dp->dir = fs->win + ofs % SS(fs); /* Pointer to the entry in the win[] */ + 4146 .loc 1 1574 11 is_stmt 0 view .LVU1359 + 4147 0036 6C61 str r4, [r5, #20] +1575:Middlewares/Third_Party/FatFs/src/ff.c **** + 4148 .loc 1 1575 2 is_stmt 1 view .LVU1360 +1575:Middlewares/Third_Party/FatFs/src/ff.c **** + 4149 .loc 1 1575 12 is_stmt 0 view .LVU1361 + 4150 0038 06F13403 add r3, r6, #52 +1575:Middlewares/Third_Party/FatFs/src/ff.c **** + 4151 .loc 1 1575 28 view .LVU1362 + 4152 003c B289 ldrh r2, [r6, #12] +1575:Middlewares/Third_Party/FatFs/src/ff.c **** + 4153 .loc 1 1575 26 view .LVU1363 + 4154 003e B4FBF2F1 udiv r1, r4, r2 + 4155 0042 02FB1144 mls r4, r2, r1, r4 + 4156 .LVL472: +1575:Middlewares/Third_Party/FatFs/src/ff.c **** + 4157 .loc 1 1575 20 view .LVU1364 + 4158 0046 1C44 add r4, r4, r3 +1575:Middlewares/Third_Party/FatFs/src/ff.c **** + 4159 .loc 1 1575 10 view .LVU1365 + 4160 0048 2C62 str r4, [r5, #32] +1577:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4161 .loc 1 1577 2 is_stmt 1 view .LVU1366 +1577:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4162 .loc 1 1577 9 is_stmt 0 view .LVU1367 + 4163 004a 0020 movs r0, #0 + 4164 .LVL473: + 4165 .L310: + ARM GAS /tmp/cc5lWXRL.s page 196 + + +1578:Middlewares/Third_Party/FatFs/src/ff.c **** + 4166 .loc 1 1578 1 view .LVU1368 + 4167 004c BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc} + 4168 .LVL474: + 4169 .L327: +1538:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4170 .loc 1 1538 5 is_stmt 1 view .LVU1369 +1538:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4171 .loc 1 1538 14 is_stmt 0 view .LVU1370 + 4172 0050 0023 movs r3, #0 + 4173 0052 C361 str r3, [r0, #28] +1538:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4174 .loc 1 1538 19 is_stmt 1 view .LVU1371 +1538:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4175 .loc 1 1538 26 is_stmt 0 view .LVU1372 + 4176 0054 0420 movs r0, #4 + 4177 .LVL475: +1538:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4178 .loc 1 1538 26 view .LVU1373 + 4179 0056 F9E7 b .L310 + 4180 .LVL476: + 4181 .L312: +1542:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&dp->obj, dp->clust); /* Get next cluster */ + 4182 .loc 1 1542 4 is_stmt 1 view .LVU1374 +1542:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&dp->obj, dp->clust); /* Get next cluster */ + 4183 .loc 1 1542 15 is_stmt 0 view .LVU1375 + 4184 0058 B289 ldrh r2, [r6, #12] +1542:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&dp->obj, dp->clust); /* Get next cluster */ + 4185 .loc 1 1542 13 view .LVU1376 + 4186 005a B4FBF2F2 udiv r2, r4, r2 +1542:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&dp->obj, dp->clust); /* Get next cluster */ + 4187 .loc 1 1542 27 view .LVU1377 + 4188 005e 7389 ldrh r3, [r6, #10] +1542:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&dp->obj, dp->clust); /* Get next cluster */ + 4189 .loc 1 1542 35 view .LVU1378 + 4190 0060 013B subs r3, r3, #1 +1542:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&dp->obj, dp->clust); /* Get next cluster */ + 4191 .loc 1 1542 7 view .LVU1379 + 4192 0062 12EA0308 ands r8, r2, r3 + 4193 0066 E6D1 bne .L311 +1543:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1) return FR_INT_ERR; /* Internal error */ + 4194 .loc 1 1543 5 is_stmt 1 view .LVU1380 +1543:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1) return FR_INT_ERR; /* Internal error */ + 4195 .loc 1 1543 12 is_stmt 0 view .LVU1381 + 4196 0068 FFF7FEFF bl get_fat + 4197 .LVL477: +1543:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1) return FR_INT_ERR; /* Internal error */ + 4198 .loc 1 1543 12 view .LVU1382 + 4199 006c 8146 mov r9, r0 + 4200 .LVL478: +1544:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + 4201 .loc 1 1544 5 is_stmt 1 view .LVU1383 +1544:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + 4202 .loc 1 1544 8 is_stmt 0 view .LVU1384 + 4203 006e 0128 cmp r0, #1 + 4204 0070 46D9 bls .L319 +1545:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst >= fs->n_fatent) { /* Reached end of dynamic table */ + ARM GAS /tmp/cc5lWXRL.s page 197 + + + 4205 .loc 1 1545 5 is_stmt 1 view .LVU1385 +1545:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst >= fs->n_fatent) { /* Reached end of dynamic table */ + 4206 .loc 1 1545 8 is_stmt 0 view .LVU1386 + 4207 0072 B0F1FF3F cmp r0, #-1 + 4208 0076 45D0 beq .L320 +1546:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 4209 .loc 1 1546 5 is_stmt 1 view .LVU1387 +1546:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 4210 .loc 1 1546 19 is_stmt 0 view .LVU1388 + 4211 0078 B369 ldr r3, [r6, #24] +1546:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 4212 .loc 1 1546 8 view .LVU1389 + 4213 007a 8342 cmp r3, r0 + 4214 007c 34D8 bhi .L313 +1548:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = 0; return FR_NO_FILE; + 4215 .loc 1 1548 6 is_stmt 1 view .LVU1390 +1548:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = 0; return FR_NO_FILE; + 4216 .loc 1 1548 9 is_stmt 0 view .LVU1391 + 4217 007e 8FB1 cbz r7, .L328 +1551:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) return FR_DENIED; /* No free cluster */ + 4218 .loc 1 1551 6 is_stmt 1 view .LVU1392 +1551:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) return FR_DENIED; /* No free cluster */ + 4219 .loc 1 1551 13 is_stmt 0 view .LVU1393 + 4220 0080 A969 ldr r1, [r5, #24] + 4221 0082 2846 mov r0, r5 + 4222 .LVL479: +1551:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) return FR_DENIED; /* No free cluster */ + 4223 .loc 1 1551 13 view .LVU1394 + 4224 0084 FFF7FEFF bl create_chain + 4225 .LVL480: +1552:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) return FR_INT_ERR; /* Internal error */ + 4226 .loc 1 1552 6 is_stmt 1 view .LVU1395 +1552:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) return FR_INT_ERR; /* Internal error */ + 4227 .loc 1 1552 9 is_stmt 0 view .LVU1396 + 4228 0088 8146 mov r9, r0 + 4229 008a 0028 cmp r0, #0 + 4230 008c 3CD0 beq .L321 +1553:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + 4231 .loc 1 1553 6 is_stmt 1 view .LVU1397 +1553:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + 4232 .loc 1 1553 9 is_stmt 0 view .LVU1398 + 4233 008e 0128 cmp r0, #1 + 4234 0090 3CD0 beq .L322 +1554:Middlewares/Third_Party/FatFs/src/ff.c **** /* Clean-up the stretched table */ + 4235 .loc 1 1554 6 is_stmt 1 view .LVU1399 +1554:Middlewares/Third_Party/FatFs/src/ff.c **** /* Clean-up the stretched table */ + 4236 .loc 1 1554 9 is_stmt 0 view .LVU1400 + 4237 0092 B0F1FF3F cmp r0, #-1 + 4238 0096 3BD0 beq .L323 +1556:Middlewares/Third_Party/FatFs/src/ff.c **** if (sync_window(fs) != FR_OK) return FR_DISK_ERR; /* Flush disk access window */ + 4239 .loc 1 1556 6 is_stmt 1 view .LVU1401 +1557:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(fs->win, 0, SS(fs)); /* Clear window buffer */ + 4240 .loc 1 1557 6 view .LVU1402 +1557:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(fs->win, 0, SS(fs)); /* Clear window buffer */ + 4241 .loc 1 1557 10 is_stmt 0 view .LVU1403 + 4242 0098 3046 mov r0, r6 + 4243 .LVL481: + ARM GAS /tmp/cc5lWXRL.s page 198 + + +1557:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(fs->win, 0, SS(fs)); /* Clear window buffer */ + 4244 .loc 1 1557 10 view .LVU1404 + 4245 009a FFF7FEFF bl sync_window + 4246 .LVL482: +1557:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(fs->win, 0, SS(fs)); /* Clear window buffer */ + 4247 .loc 1 1557 9 view .LVU1405 + 4248 009e 28B1 cbz r0, .L329 +1557:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(fs->win, 0, SS(fs)); /* Clear window buffer */ + 4249 .loc 1 1557 43 view .LVU1406 + 4250 00a0 0120 movs r0, #1 + 4251 00a2 D3E7 b .L310 + 4252 .LVL483: + 4253 .L328: +1549:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4254 .loc 1 1549 7 is_stmt 1 view .LVU1407 +1549:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4255 .loc 1 1549 16 is_stmt 0 view .LVU1408 + 4256 00a4 0023 movs r3, #0 + 4257 00a6 EB61 str r3, [r5, #28] +1549:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4258 .loc 1 1549 21 is_stmt 1 view .LVU1409 +1549:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4259 .loc 1 1549 28 is_stmt 0 view .LVU1410 + 4260 00a8 0420 movs r0, #4 + 4261 .LVL484: +1549:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4262 .loc 1 1549 28 view .LVU1411 + 4263 00aa CFE7 b .L310 + 4264 .L329: +1558:Middlewares/Third_Party/FatFs/src/ff.c **** for (n = 0, fs->winsect = clust2sect(fs, clst); n < fs->csize; n++, fs->winsect++) { /* Fill t + 4265 .loc 1 1558 6 is_stmt 1 view .LVU1412 + 4266 00ac B289 ldrh r2, [r6, #12] + 4267 00ae 0021 movs r1, #0 + 4268 00b0 06F13400 add r0, r6, #52 + 4269 00b4 FFF7FEFF bl mem_set + 4270 .LVL485: +1559:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4271 .loc 1 1559 6 view .LVU1413 +1559:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4272 .loc 1 1559 32 is_stmt 0 view .LVU1414 + 4273 00b8 4946 mov r1, r9 + 4274 00ba 3046 mov r0, r6 + 4275 00bc FFF7FEFF bl clust2sect + 4276 .LVL486: +1559:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4277 .loc 1 1559 30 view .LVU1415 + 4278 00c0 3063 str r0, [r6, #48] + 4279 .LVL487: + 4280 .L315: +1559:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4281 .loc 1 1559 54 is_stmt 1 discriminator 1 view .LVU1416 +1559:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4282 .loc 1 1559 60 is_stmt 0 discriminator 1 view .LVU1417 + 4283 00c2 7389 ldrh r3, [r6, #10] +1559:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4284 .loc 1 1559 6 discriminator 1 view .LVU1418 + 4285 00c4 9845 cmp r8, r3 + ARM GAS /tmp/cc5lWXRL.s page 199 + + + 4286 00c6 0BD2 bcs .L330 +1560:Middlewares/Third_Party/FatFs/src/ff.c **** if (sync_window(fs) != FR_OK) return FR_DISK_ERR; + 4287 .loc 1 1560 7 is_stmt 1 view .LVU1419 +1560:Middlewares/Third_Party/FatFs/src/ff.c **** if (sync_window(fs) != FR_OK) return FR_DISK_ERR; + 4288 .loc 1 1560 17 is_stmt 0 view .LVU1420 + 4289 00c8 0123 movs r3, #1 + 4290 00ca F370 strb r3, [r6, #3] +1561:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4291 .loc 1 1561 7 is_stmt 1 view .LVU1421 +1561:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4292 .loc 1 1561 11 is_stmt 0 view .LVU1422 + 4293 00cc 3046 mov r0, r6 + 4294 00ce FFF7FEFF bl sync_window + 4295 .LVL488: +1561:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4296 .loc 1 1561 10 view .LVU1423 + 4297 00d2 F8B9 cbnz r0, .L325 +1559:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4298 .loc 1 1559 69 is_stmt 1 discriminator 2 view .LVU1424 +1559:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4299 .loc 1 1559 70 is_stmt 0 discriminator 2 view .LVU1425 + 4300 00d4 08F10108 add r8, r8, #1 + 4301 .LVL489: +1559:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4302 .loc 1 1559 76 discriminator 2 view .LVU1426 + 4303 00d8 336B ldr r3, [r6, #48] +1559:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 4304 .loc 1 1559 85 discriminator 2 view .LVU1427 + 4305 00da 0133 adds r3, r3, #1 + 4306 00dc 3363 str r3, [r6, #48] + 4307 00de F0E7 b .L315 + 4308 .L330: +1563:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 4309 .loc 1 1563 6 is_stmt 1 view .LVU1428 +1563:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 4310 .loc 1 1563 18 is_stmt 0 view .LVU1429 + 4311 00e0 336B ldr r3, [r6, #48] + 4312 00e2 A3EB0803 sub r3, r3, r8 + 4313 00e6 3363 str r3, [r6, #48] + 4314 .LVL490: + 4315 .L313: +1569:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = clust2sect(fs, clst); + 4316 .loc 1 1569 5 is_stmt 1 view .LVU1430 +1569:Middlewares/Third_Party/FatFs/src/ff.c **** dp->sect = clust2sect(fs, clst); + 4317 .loc 1 1569 15 is_stmt 0 view .LVU1431 + 4318 00e8 C5F81890 str r9, [r5, #24] +1570:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4319 .loc 1 1570 5 is_stmt 1 view .LVU1432 +1570:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4320 .loc 1 1570 16 is_stmt 0 view .LVU1433 + 4321 00ec 4946 mov r1, r9 + 4322 00ee 3046 mov r0, r6 + 4323 00f0 FFF7FEFF bl clust2sect + 4324 .LVL491: +1570:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4325 .loc 1 1570 14 view .LVU1434 + 4326 00f4 E861 str r0, [r5, #28] + ARM GAS /tmp/cc5lWXRL.s page 200 + + + 4327 00f6 9EE7 b .L311 + 4328 .LVL492: + 4329 .L317: +1531:Middlewares/Third_Party/FatFs/src/ff.c **** + 4330 .loc 1 1531 105 view .LVU1435 + 4331 00f8 0420 movs r0, #4 + 4332 .LVL493: +1531:Middlewares/Third_Party/FatFs/src/ff.c **** + 4333 .loc 1 1531 105 view .LVU1436 + 4334 00fa A7E7 b .L310 + 4335 .LVL494: + 4336 .L318: +1531:Middlewares/Third_Party/FatFs/src/ff.c **** + 4337 .loc 1 1531 105 view .LVU1437 + 4338 00fc 0420 movs r0, #4 + 4339 .LVL495: +1531:Middlewares/Third_Party/FatFs/src/ff.c **** + 4340 .loc 1 1531 105 view .LVU1438 + 4341 00fe A5E7 b .L310 + 4342 .LVL496: + 4343 .L319: +1544:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + 4344 .loc 1 1544 27 view .LVU1439 + 4345 0100 0220 movs r0, #2 + 4346 .LVL497: +1544:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + 4347 .loc 1 1544 27 view .LVU1440 + 4348 0102 A3E7 b .L310 + 4349 .LVL498: + 4350 .L320: +1545:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst >= fs->n_fatent) { /* Reached end of dynamic table */ + 4351 .loc 1 1545 36 view .LVU1441 + 4352 0104 0120 movs r0, #1 + 4353 .LVL499: +1545:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst >= fs->n_fatent) { /* Reached end of dynamic table */ + 4354 .loc 1 1545 36 view .LVU1442 + 4355 0106 A1E7 b .L310 + 4356 .LVL500: + 4357 .L321: +1552:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) return FR_INT_ERR; /* Internal error */ + 4358 .loc 1 1552 28 view .LVU1443 + 4359 0108 0720 movs r0, #7 + 4360 .LVL501: +1552:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) return FR_INT_ERR; /* Internal error */ + 4361 .loc 1 1552 28 view .LVU1444 + 4362 010a 9FE7 b .L310 + 4363 .LVL502: + 4364 .L322: +1553:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + 4365 .loc 1 1553 28 view .LVU1445 + 4366 010c 0220 movs r0, #2 + 4367 .LVL503: +1553:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */ + 4368 .loc 1 1553 28 view .LVU1446 + 4369 010e 9DE7 b .L310 + 4370 .LVL504: + 4371 .L323: + ARM GAS /tmp/cc5lWXRL.s page 201 + + +1554:Middlewares/Third_Party/FatFs/src/ff.c **** /* Clean-up the stretched table */ + 4372 .loc 1 1554 37 view .LVU1447 + 4373 0110 0120 movs r0, #1 + 4374 .LVL505: +1554:Middlewares/Third_Party/FatFs/src/ff.c **** /* Clean-up the stretched table */ + 4375 .loc 1 1554 37 view .LVU1448 + 4376 0112 9BE7 b .L310 + 4377 .LVL506: + 4378 .L325: +1561:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4379 .loc 1 1561 44 view .LVU1449 + 4380 0114 0120 movs r0, #1 + 4381 0116 99E7 b .L310 + 4382 .cfi_endproc + 4383 .LFE1206: + 4385 .section .text.dir_find,"ax",%progbits + 4386 .align 1 + 4387 .syntax unified + 4388 .thumb + 4389 .thumb_func + 4390 .fpu fpv5-d16 + 4392 dir_find: + 4393 .LVL507: + 4394 .LFB1211: +2213:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 4395 .loc 1 2213 1 is_stmt 1 view -0 + 4396 .cfi_startproc + 4397 @ args = 0, pretend = 0, frame = 0 + 4398 @ frame_needed = 0, uses_anonymous_args = 0 +2213:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 4399 .loc 1 2213 1 is_stmt 0 view .LVU1451 + 4400 0000 70B5 push {r4, r5, r6, lr} + 4401 .LCFI29: + 4402 .cfi_def_cfa_offset 16 + 4403 .cfi_offset 4, -16 + 4404 .cfi_offset 5, -12 + 4405 .cfi_offset 6, -8 + 4406 .cfi_offset 14, -4 + 4407 0002 0446 mov r4, r0 +2214:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; + 4408 .loc 1 2214 2 is_stmt 1 view .LVU1452 +2215:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE c; + 4409 .loc 1 2215 2 view .LVU1453 +2215:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE c; + 4410 .loc 1 2215 9 is_stmt 0 view .LVU1454 + 4411 0004 0668 ldr r6, [r0] + 4412 .LVL508: +2216:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 + 4413 .loc 1 2216 2 is_stmt 1 view .LVU1455 +2221:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; + 4414 .loc 1 2221 2 view .LVU1456 +2221:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) return res; + 4415 .loc 1 2221 8 is_stmt 0 view .LVU1457 + 4416 0006 0021 movs r1, #0 + 4417 0008 FFF7FEFF bl dir_sdi + 4418 .LVL509: +2222:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + ARM GAS /tmp/cc5lWXRL.s page 202 + + + 4419 .loc 1 2222 2 is_stmt 1 view .LVU1458 +2222:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 4420 .loc 1 2222 5 is_stmt 0 view .LVU1459 + 4421 000c 0546 mov r5, r0 + 4422 000e 40B1 cbz r0, .L334 + 4423 .LVL510: + 4424 .L332: +2281:Middlewares/Third_Party/FatFs/src/ff.c **** + 4425 .loc 1 2281 1 view .LVU1460 + 4426 0010 2846 mov r0, r5 + 4427 0012 70BD pop {r4, r5, r6, pc} + 4428 .LVL511: + 4429 .L333: +2277:Middlewares/Third_Party/FatFs/src/ff.c **** } while (res == FR_OK); + 4430 .loc 1 2277 3 is_stmt 1 view .LVU1461 +2277:Middlewares/Third_Party/FatFs/src/ff.c **** } while (res == FR_OK); + 4431 .loc 1 2277 9 is_stmt 0 view .LVU1462 + 4432 0014 0021 movs r1, #0 + 4433 0016 2046 mov r0, r4 + 4434 0018 FFF7FEFF bl dir_next + 4435 .LVL512: +2278:Middlewares/Third_Party/FatFs/src/ff.c **** + 4436 .loc 1 2278 10 is_stmt 1 view .LVU1463 +2278:Middlewares/Third_Party/FatFs/src/ff.c **** + 4437 .loc 1 2278 2 is_stmt 0 view .LVU1464 + 4438 001c 0546 mov r5, r0 + 4439 001e 0028 cmp r0, #0 + 4440 0020 F6D1 bne .L332 + 4441 .L334: +2247:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); + 4442 .loc 1 2247 2 is_stmt 1 view .LVU1465 +2248:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4443 .loc 1 2248 3 view .LVU1466 +2248:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4444 .loc 1 2248 9 is_stmt 0 view .LVU1467 + 4445 0022 E169 ldr r1, [r4, #28] + 4446 0024 3046 mov r0, r6 + 4447 .LVL513: +2248:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4448 .loc 1 2248 9 view .LVU1468 + 4449 0026 FFF7FEFF bl move_window + 4450 .LVL514: +2249:Middlewares/Third_Party/FatFs/src/ff.c **** c = dp->dir[DIR_Name]; + 4451 .loc 1 2249 3 is_stmt 1 view .LVU1469 +2249:Middlewares/Third_Party/FatFs/src/ff.c **** c = dp->dir[DIR_Name]; + 4452 .loc 1 2249 6 is_stmt 0 view .LVU1470 + 4453 002a 0546 mov r5, r0 + 4454 002c 0028 cmp r0, #0 + 4455 002e EFD1 bne .L332 +2250:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of table */ + 4456 .loc 1 2250 3 is_stmt 1 view .LVU1471 +2250:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of table */ + 4457 .loc 1 2250 9 is_stmt 0 view .LVU1472 + 4458 0030 206A ldr r0, [r4, #32] + 4459 .LVL515: +2250:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0) { res = FR_NO_FILE; break; } /* Reached to end of table */ + 4460 .loc 1 2250 5 view .LVU1473 + ARM GAS /tmp/cc5lWXRL.s page 203 + + + 4461 0032 0378 ldrb r3, [r0] @ zero_extendqisi2 + 4462 .LVL516: +2251:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4463 .loc 1 2251 3 is_stmt 1 view .LVU1474 +2251:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4464 .loc 1 2251 6 is_stmt 0 view .LVU1475 + 4465 0034 7BB1 cbz r3, .L335 +2274:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(dp->dir[DIR_Attr] & AM_VOL) && !mem_cmp(dp->dir, dp->fn, 11)) break; /* Is it a valid entry + 4466 .loc 1 2274 3 is_stmt 1 view .LVU1476 +2274:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(dp->dir[DIR_Attr] & AM_VOL) && !mem_cmp(dp->dir, dp->fn, 11)) break; /* Is it a valid entry + 4467 .loc 1 2274 25 is_stmt 0 view .LVU1477 + 4468 0036 C37A ldrb r3, [r0, #11] @ zero_extendqisi2 + 4469 .LVL517: +2274:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(dp->dir[DIR_Attr] & AM_VOL) && !mem_cmp(dp->dir, dp->fn, 11)) break; /* Is it a valid entry + 4470 .loc 1 2274 36 view .LVU1478 + 4471 0038 03F03F03 and r3, r3, #63 +2274:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(dp->dir[DIR_Attr] & AM_VOL) && !mem_cmp(dp->dir, dp->fn, 11)) break; /* Is it a valid entry + 4472 .loc 1 2274 16 view .LVU1479 + 4473 003c A371 strb r3, [r4, #6] + 4474 .LVL518: +2275:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 4475 .loc 1 2275 3 is_stmt 1 view .LVU1480 +2275:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 4476 .loc 1 2275 16 is_stmt 0 view .LVU1481 + 4477 003e C37A ldrb r3, [r0, #11] @ zero_extendqisi2 +2275:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 4478 .loc 1 2275 6 view .LVU1482 + 4479 0040 13F0080F tst r3, #8 + 4480 0044 E6D1 bne .L333 +2275:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 4481 .loc 1 2275 41 discriminator 1 view .LVU1483 + 4482 0046 0B22 movs r2, #11 + 4483 0048 04F12401 add r1, r4, #36 + 4484 004c FFF7FEFF bl mem_cmp + 4485 .LVL519: +2275:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 4486 .loc 1 2275 37 discriminator 1 view .LVU1484 + 4487 0050 0028 cmp r0, #0 + 4488 0052 DFD1 bne .L333 + 4489 0054 DCE7 b .L332 + 4490 .LVL520: + 4491 .L335: +2251:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4492 .loc 1 2251 21 view .LVU1485 + 4493 0056 0425 movs r5, #4 + 4494 0058 DAE7 b .L332 + 4495 .cfi_endproc + 4496 .LFE1211: + 4498 .section .text.follow_path,"ax",%progbits + 4499 .align 1 + 4500 .syntax unified + 4501 .thumb + 4502 .thumb_func + 4503 .fpu fpv5-d16 + 4505 follow_path: + 4506 .LVL521: + 4507 .LFB1216: + ARM GAS /tmp/cc5lWXRL.s page 204 + + +2817:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 4508 .loc 1 2817 1 is_stmt 1 view -0 + 4509 .cfi_startproc + 4510 @ args = 0, pretend = 0, frame = 8 + 4511 @ frame_needed = 0, uses_anonymous_args = 0 +2817:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 4512 .loc 1 2817 1 is_stmt 0 view .LVU1487 + 4513 0000 30B5 push {r4, r5, lr} + 4514 .LCFI30: + 4515 .cfi_def_cfa_offset 12 + 4516 .cfi_offset 4, -12 + 4517 .cfi_offset 5, -8 + 4518 .cfi_offset 14, -4 + 4519 0002 83B0 sub sp, sp, #12 + 4520 .LCFI31: + 4521 .cfi_def_cfa_offset 24 + 4522 0004 0446 mov r4, r0 + 4523 0006 0191 str r1, [sp, #4] +2818:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE ns; + 4524 .loc 1 2818 2 is_stmt 1 view .LVU1488 +2819:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID *obj = &dp->obj; + 4525 .loc 1 2819 2 view .LVU1489 +2820:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = obj->fs; + 4526 .loc 1 2820 2 view .LVU1490 + 4527 .LVL522: +2821:Middlewares/Third_Party/FatFs/src/ff.c **** + 4528 .loc 1 2821 2 view .LVU1491 +2821:Middlewares/Third_Party/FatFs/src/ff.c **** + 4529 .loc 1 2821 9 is_stmt 0 view .LVU1492 + 4530 0008 0568 ldr r5, [r0] + 4531 .LVL523: +2830:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = 0; /* Start from root directory */ + 4532 .loc 1 2830 3 is_stmt 1 view .LVU1493 +2830:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = 0; /* Start from root directory */ + 4533 .loc 1 2830 9 is_stmt 0 view .LVU1494 + 4534 000a 01E0 b .L338 + 4535 .L339: +2830:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = 0; /* Start from root directory */ + 4536 .loc 1 2830 41 is_stmt 1 discriminator 2 view .LVU1495 +2830:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = 0; /* Start from root directory */ + 4537 .loc 1 2830 45 is_stmt 0 discriminator 2 view .LVU1496 + 4538 000c 0133 adds r3, r3, #1 + 4539 000e 0193 str r3, [sp, #4] + 4540 .L338: +2830:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = 0; /* Start from root directory */ + 4541 .loc 1 2830 9 is_stmt 1 discriminator 1 view .LVU1497 +2830:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = 0; /* Start from root directory */ + 4542 .loc 1 2830 10 is_stmt 0 discriminator 1 view .LVU1498 + 4543 0010 019B ldr r3, [sp, #4] + 4544 0012 1A78 ldrb r2, [r3] @ zero_extendqisi2 +2830:Middlewares/Third_Party/FatFs/src/ff.c **** obj->sclust = 0; /* Start from root directory */ + 4545 .loc 1 2830 9 discriminator 1 view .LVU1499 + 4546 0014 5C2A cmp r2, #92 + 4547 0016 18BF it ne + 4548 0018 2F2A cmpne r2, #47 + 4549 001a F7D0 beq .L339 +2831:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 205 + + + 4550 .loc 1 2831 3 is_stmt 1 view .LVU1500 +2831:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4551 .loc 1 2831 15 is_stmt 0 view .LVU1501 + 4552 001c 0022 movs r2, #0 + 4553 001e A260 str r2, [r4, #8] +2850:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[NSFLAG] = NS_NONAME; + 4554 .loc 1 2850 2 is_stmt 1 view .LVU1502 +2850:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[NSFLAG] = NS_NONAME; + 4555 .loc 1 2850 12 is_stmt 0 view .LVU1503 + 4556 0020 1B78 ldrb r3, [r3] @ zero_extendqisi2 +2850:Middlewares/Third_Party/FatFs/src/ff.c **** dp->fn[NSFLAG] = NS_NONAME; + 4557 .loc 1 2850 5 view .LVU1504 + 4558 0022 1F2B cmp r3, #31 + 4559 0024 21D9 bls .L346 + 4560 .LVL524: + 4561 .L340: +2855:Middlewares/Third_Party/FatFs/src/ff.c **** res = create_name(dp, &path); /* Get a segment name of the path */ + 4562 .loc 1 2855 3 is_stmt 1 view .LVU1505 +2856:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4563 .loc 1 2856 4 view .LVU1506 +2856:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4564 .loc 1 2856 10 is_stmt 0 view .LVU1507 + 4565 0026 01A9 add r1, sp, #4 + 4566 0028 2046 mov r0, r4 + 4567 002a FFF7FEFF bl create_name + 4568 .LVL525: +2857:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_find(dp); /* Find an object with the segment name */ + 4569 .loc 1 2857 4 is_stmt 1 view .LVU1508 +2857:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_find(dp); /* Find an object with the segment name */ + 4570 .loc 1 2857 7 is_stmt 0 view .LVU1509 + 4571 002e 0346 mov r3, r0 + 4572 0030 18BB cbnz r0, .L341 +2858:Middlewares/Third_Party/FatFs/src/ff.c **** ns = dp->fn[NSFLAG]; + 4573 .loc 1 2858 4 is_stmt 1 view .LVU1510 +2858:Middlewares/Third_Party/FatFs/src/ff.c **** ns = dp->fn[NSFLAG]; + 4574 .loc 1 2858 10 is_stmt 0 view .LVU1511 + 4575 0032 2046 mov r0, r4 + 4576 .LVL526: +2858:Middlewares/Third_Party/FatFs/src/ff.c **** ns = dp->fn[NSFLAG]; + 4577 .loc 1 2858 10 view .LVU1512 + 4578 0034 FFF7FEFF bl dir_find + 4579 .LVL527: +2859:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) { /* Failed to find the object */ + 4580 .loc 1 2859 4 is_stmt 1 view .LVU1513 +2859:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) { /* Failed to find the object */ + 4581 .loc 1 2859 7 is_stmt 0 view .LVU1514 + 4582 0038 94F82F20 ldrb r2, [r4, #47] @ zero_extendqisi2 + 4583 .LVL528: +2860:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { /* Object is not found */ + 4584 .loc 1 2860 4 is_stmt 1 view .LVU1515 +2860:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { /* Object is not found */ + 4585 .loc 1 2860 7 is_stmt 0 view .LVU1516 + 4586 003c 0346 mov r3, r0 + 4587 003e F8B9 cbnz r0, .L347 +2872:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get into the sub-directory */ + 4588 .loc 1 2872 4 is_stmt 1 view .LVU1517 +2872:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get into the sub-directory */ + ARM GAS /tmp/cc5lWXRL.s page 206 + + + 4589 .loc 1 2872 7 is_stmt 0 view .LVU1518 + 4590 0040 12F0040F tst r2, #4 + 4591 0044 19D1 bne .L341 +2874:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_PATH; break; + 4592 .loc 1 2874 4 is_stmt 1 view .LVU1519 +2874:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_PATH; break; + 4593 .loc 1 2874 13 is_stmt 0 view .LVU1520 + 4594 0046 A379 ldrb r3, [r4, #6] @ zero_extendqisi2 +2874:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_PATH; break; + 4595 .loc 1 2874 7 view .LVU1521 + 4596 0048 13F0100F tst r3, #16 + 4597 004c 1FD0 beq .L344 +2888:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4598 .loc 1 2888 5 is_stmt 1 view .LVU1522 +2888:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4599 .loc 1 2888 32 is_stmt 0 view .LVU1523 + 4600 004e 05F13403 add r3, r5, #52 +2888:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4601 .loc 1 2888 44 view .LVU1524 + 4602 0052 6169 ldr r1, [r4, #20] +2888:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4603 .loc 1 2888 53 view .LVU1525 + 4604 0054 AA89 ldrh r2, [r5, #12] + 4605 .LVL529: +2888:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4606 .loc 1 2888 51 view .LVU1526 + 4607 0056 B1FBF2F0 udiv r0, r1, r2 + 4608 .LVL530: +2888:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4609 .loc 1 2888 51 view .LVU1527 + 4610 005a 02FB1011 mls r1, r2, r0, r1 +2888:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4611 .loc 1 2888 19 view .LVU1528 + 4612 005e 1944 add r1, r1, r3 + 4613 0060 2846 mov r0, r5 + 4614 0062 FFF7FEFF bl ld_clust + 4615 .LVL531: +2888:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4616 .loc 1 2888 17 view .LVU1529 + 4617 0066 A060 str r0, [r4, #8] +2855:Middlewares/Third_Party/FatFs/src/ff.c **** res = create_name(dp, &path); /* Get a segment name of the path */ + 4618 .loc 1 2855 9 is_stmt 1 view .LVU1530 +2856:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4619 .loc 1 2856 8 is_stmt 0 view .LVU1531 + 4620 0068 DDE7 b .L340 + 4621 .LVL532: + 4622 .L346: +2851:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); + 4623 .loc 1 2851 3 is_stmt 1 view .LVU1532 +2851:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); + 4624 .loc 1 2851 18 is_stmt 0 view .LVU1533 + 4625 006a 8023 movs r3, #128 + 4626 006c 84F82F30 strb r3, [r4, #47] +2852:Middlewares/Third_Party/FatFs/src/ff.c **** + 4627 .loc 1 2852 3 is_stmt 1 view .LVU1534 +2852:Middlewares/Third_Party/FatFs/src/ff.c **** + 4628 .loc 1 2852 9 is_stmt 0 view .LVU1535 + ARM GAS /tmp/cc5lWXRL.s page 207 + + + 4629 0070 1146 mov r1, r2 + 4630 .LVL533: +2852:Middlewares/Third_Party/FatFs/src/ff.c **** + 4631 .loc 1 2852 9 view .LVU1536 + 4632 0072 2046 mov r0, r4 + 4633 .LVL534: +2852:Middlewares/Third_Party/FatFs/src/ff.c **** + 4634 .loc 1 2852 9 view .LVU1537 + 4635 0074 FFF7FEFF bl dir_sdi + 4636 .LVL535: + 4637 0078 0346 mov r3, r0 + 4638 .LVL536: + 4639 .L341: +2893:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4640 .loc 1 2893 2 is_stmt 1 view .LVU1538 +2894:Middlewares/Third_Party/FatFs/src/ff.c **** + 4641 .loc 1 2894 1 is_stmt 0 view .LVU1539 + 4642 007a 1846 mov r0, r3 + 4643 007c 03B0 add sp, sp, #12 + 4644 .LCFI32: + 4645 .cfi_remember_state + 4646 .cfi_def_cfa_offset 12 + 4647 @ sp needed + 4648 007e 30BD pop {r4, r5, pc} + 4649 .LVL537: + 4650 .L347: + 4651 .LCFI33: + 4652 .cfi_restore_state +2861:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && (ns & NS_DOT)) { /* If dot entry is not exist, stay there */ + 4653 .loc 1 2861 5 is_stmt 1 view .LVU1540 +2861:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && (ns & NS_DOT)) { /* If dot entry is not exist, stay there */ + 4654 .loc 1 2861 8 is_stmt 0 view .LVU1541 + 4655 0080 0428 cmp r0, #4 + 4656 0082 FAD1 bne .L341 +2862:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(ns & NS_LAST)) continue; /* Continue to follow if not last segment */ + 4657 .loc 1 2862 6 is_stmt 1 view .LVU1542 +2867:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4658 .loc 1 2867 7 view .LVU1543 +2867:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4659 .loc 1 2867 10 is_stmt 0 view .LVU1544 + 4660 0084 12F0040F tst r2, #4 + 4661 0088 F7D1 bne .L341 +2867:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4662 .loc 1 2867 32 view .LVU1545 + 4663 008a 0523 movs r3, #5 + 4664 008c F5E7 b .L341 + 4665 .L344: +2875:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4666 .loc 1 2875 9 view .LVU1546 + 4667 008e 0523 movs r3, #5 + 4668 0090 F3E7 b .L341 + 4669 .cfi_endproc + 4670 .LFE1216: + 4672 .section .text.dir_alloc,"ax",%progbits + 4673 .align 1 + 4674 .syntax unified + 4675 .thumb + ARM GAS /tmp/cc5lWXRL.s page 208 + + + 4676 .thumb_func + 4677 .fpu fpv5-d16 + 4679 dir_alloc: + 4680 .LVL538: + 4681 .LFB1207: +1593:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 4682 .loc 1 1593 1 is_stmt 1 view -0 + 4683 .cfi_startproc + 4684 @ args = 0, pretend = 0, frame = 0 + 4685 @ frame_needed = 0, uses_anonymous_args = 0 +1593:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 4686 .loc 1 1593 1 is_stmt 0 view .LVU1548 + 4687 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 4688 .LCFI34: + 4689 .cfi_def_cfa_offset 24 + 4690 .cfi_offset 3, -24 + 4691 .cfi_offset 4, -20 + 4692 .cfi_offset 5, -16 + 4693 .cfi_offset 6, -12 + 4694 .cfi_offset 7, -8 + 4695 .cfi_offset 14, -4 + 4696 0002 0446 mov r4, r0 + 4697 0004 0E46 mov r6, r1 +1594:Middlewares/Third_Party/FatFs/src/ff.c **** UINT n; + 4698 .loc 1 1594 2 is_stmt 1 view .LVU1549 +1595:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; + 4699 .loc 1 1595 2 view .LVU1550 +1596:Middlewares/Third_Party/FatFs/src/ff.c **** + 4700 .loc 1 1596 2 view .LVU1551 +1596:Middlewares/Third_Party/FatFs/src/ff.c **** + 4701 .loc 1 1596 9 is_stmt 0 view .LVU1552 + 4702 0006 0768 ldr r7, [r0] + 4703 .LVL539: +1599:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 4704 .loc 1 1599 2 is_stmt 1 view .LVU1553 +1599:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 4705 .loc 1 1599 8 is_stmt 0 view .LVU1554 + 4706 0008 0021 movs r1, #0 + 4707 .LVL540: +1599:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 4708 .loc 1 1599 8 view .LVU1555 + 4709 000a FFF7FEFF bl dir_sdi + 4710 .LVL541: +1600:Middlewares/Third_Party/FatFs/src/ff.c **** n = 0; + 4711 .loc 1 1600 2 is_stmt 1 view .LVU1556 +1600:Middlewares/Third_Party/FatFs/src/ff.c **** n = 0; + 4712 .loc 1 1600 5 is_stmt 0 view .LVU1557 + 4713 000e 0246 mov r2, r0 + 4714 0010 B8B9 cbnz r0, .L349 +1601:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 4715 .loc 1 1601 5 view .LVU1558 + 4716 0012 0025 movs r5, #0 + 4717 0014 06E0 b .L351 + 4718 .LVL542: + 4719 .L353: +1612:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4720 .loc 1 1612 7 view .LVU1559 + ARM GAS /tmp/cc5lWXRL.s page 209 + + + 4721 0016 0025 movs r5, #0 + 4722 .LVL543: + 4723 .L350: +1614:Middlewares/Third_Party/FatFs/src/ff.c **** } while (res == FR_OK); /* Next entry with table stretch enabled */ + 4724 .loc 1 1614 4 is_stmt 1 view .LVU1560 +1614:Middlewares/Third_Party/FatFs/src/ff.c **** } while (res == FR_OK); /* Next entry with table stretch enabled */ + 4725 .loc 1 1614 10 is_stmt 0 view .LVU1561 + 4726 0018 0121 movs r1, #1 + 4727 001a 2046 mov r0, r4 + 4728 .LVL544: +1614:Middlewares/Third_Party/FatFs/src/ff.c **** } while (res == FR_OK); /* Next entry with table stretch enabled */ + 4729 .loc 1 1614 10 view .LVU1562 + 4730 001c FFF7FEFF bl dir_next + 4731 .LVL545: +1615:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4732 .loc 1 1615 11 is_stmt 1 view .LVU1563 +1615:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4733 .loc 1 1615 3 is_stmt 0 view .LVU1564 + 4734 0020 0246 mov r2, r0 + 4735 0022 70B9 cbnz r0, .L349 + 4736 .LVL546: + 4737 .L351: +1602:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); + 4738 .loc 1 1602 3 is_stmt 1 view .LVU1565 +1603:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4739 .loc 1 1603 4 view .LVU1566 +1603:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4740 .loc 1 1603 10 is_stmt 0 view .LVU1567 + 4741 0024 E169 ldr r1, [r4, #28] + 4742 0026 3846 mov r0, r7 + 4743 .LVL547: +1603:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4744 .loc 1 1603 10 view .LVU1568 + 4745 0028 FFF7FEFF bl move_window + 4746 .LVL548: +1604:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 4747 .loc 1 1604 4 is_stmt 1 view .LVU1569 +1604:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 4748 .loc 1 1604 7 is_stmt 0 view .LVU1570 + 4749 002c 0246 mov r2, r0 + 4750 002e 40B9 cbnz r0, .L349 +1608:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 4751 .loc 1 1608 4 is_stmt 1 view .LVU1571 +1608:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 4752 .loc 1 1608 10 is_stmt 0 view .LVU1572 + 4753 0030 236A ldr r3, [r4, #32] +1608:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 4754 .loc 1 1608 15 view .LVU1573 + 4755 0032 1B78 ldrb r3, [r3] @ zero_extendqisi2 +1608:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 4756 .loc 1 1608 7 view .LVU1574 + 4757 0034 002B cmp r3, #0 + 4758 0036 18BF it ne + 4759 0038 E52B cmpne r3, #229 + 4760 003a ECD1 bne .L353 +1610:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 4761 .loc 1 1610 5 is_stmt 1 view .LVU1575 + ARM GAS /tmp/cc5lWXRL.s page 210 + + +1610:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 4762 .loc 1 1610 8 is_stmt 0 view .LVU1576 + 4763 003c 0135 adds r5, r5, #1 + 4764 .LVL549: +1610:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 4765 .loc 1 1610 8 view .LVU1577 + 4766 003e B542 cmp r5, r6 + 4767 0040 EAD1 bne .L350 + 4768 .LVL550: + 4769 .L349: +1618:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 4770 .loc 1 1618 2 is_stmt 1 view .LVU1578 +1618:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 4771 .loc 1 1618 5 is_stmt 0 view .LVU1579 + 4772 0042 042A cmp r2, #4 + 4773 0044 01D0 beq .L356 + 4774 .LVL551: + 4775 .L352: +1619:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4776 .loc 1 1619 2 is_stmt 1 view .LVU1580 +1620:Middlewares/Third_Party/FatFs/src/ff.c **** + 4777 .loc 1 1620 1 is_stmt 0 view .LVU1581 + 4778 0046 1046 mov r0, r2 + 4779 0048 F8BD pop {r3, r4, r5, r6, r7, pc} + 4780 .LVL552: + 4781 .L356: +1618:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 4782 .loc 1 1618 29 view .LVU1582 + 4783 004a 0722 movs r2, #7 + 4784 .LVL553: +1618:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 4785 .loc 1 1618 29 view .LVU1583 + 4786 004c FBE7 b .L352 + 4787 .cfi_endproc + 4788 .LFE1207: + 4790 .section .text.dir_register,"ax",%progbits + 4791 .align 1 + 4792 .syntax unified + 4793 .thumb + 4794 .thumb_func + 4795 .fpu fpv5-d16 + 4797 dir_register: + 4798 .LVL554: + 4799 .LFB1212: +2295:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 4800 .loc 1 2295 1 is_stmt 1 view -0 + 4801 .cfi_startproc + 4802 @ args = 0, pretend = 0, frame = 0 + 4803 @ frame_needed = 0, uses_anonymous_args = 0 +2295:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 4804 .loc 1 2295 1 is_stmt 0 view .LVU1585 + 4805 0000 70B5 push {r4, r5, r6, lr} + 4806 .LCFI35: + 4807 .cfi_def_cfa_offset 16 + 4808 .cfi_offset 4, -16 + 4809 .cfi_offset 5, -12 + 4810 .cfi_offset 6, -8 + ARM GAS /tmp/cc5lWXRL.s page 211 + + + 4811 .cfi_offset 14, -4 + 4812 0002 0446 mov r4, r0 +2296:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; + 4813 .loc 1 2296 2 is_stmt 1 view .LVU1586 +2297:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4814 .loc 1 2297 2 view .LVU1587 +2297:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4815 .loc 1 2297 9 is_stmt 0 view .LVU1588 + 4816 0004 0668 ldr r6, [r0] + 4817 .LVL555: +2366:Middlewares/Third_Party/FatFs/src/ff.c **** + 4818 .loc 1 2366 2 is_stmt 1 view .LVU1589 +2366:Middlewares/Third_Party/FatFs/src/ff.c **** + 4819 .loc 1 2366 8 is_stmt 0 view .LVU1590 + 4820 0006 0121 movs r1, #1 + 4821 0008 FFF7FEFF bl dir_alloc + 4822 .LVL556: +2371:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); + 4823 .loc 1 2371 2 is_stmt 1 view .LVU1591 +2371:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); + 4824 .loc 1 2371 5 is_stmt 0 view .LVU1592 + 4825 000c 0546 mov r5, r0 + 4826 000e 08B1 cbz r0, .L360 + 4827 .LVL557: + 4828 .L358: +2383:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4829 .loc 1 2383 2 is_stmt 1 view .LVU1593 +2384:Middlewares/Third_Party/FatFs/src/ff.c **** + 4830 .loc 1 2384 1 is_stmt 0 view .LVU1594 + 4831 0010 2846 mov r0, r5 + 4832 0012 70BD pop {r4, r5, r6, pc} + 4833 .LVL558: + 4834 .L360: +2372:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 4835 .loc 1 2372 3 is_stmt 1 view .LVU1595 +2372:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 4836 .loc 1 2372 9 is_stmt 0 view .LVU1596 + 4837 0014 E169 ldr r1, [r4, #28] + 4838 0016 3046 mov r0, r6 + 4839 .LVL559: +2372:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 4840 .loc 1 2372 9 view .LVU1597 + 4841 0018 FFF7FEFF bl move_window + 4842 .LVL560: +2373:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dp->dir, 0, SZDIRE); /* Clean the entry */ + 4843 .loc 1 2373 3 is_stmt 1 view .LVU1598 +2373:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dp->dir, 0, SZDIRE); /* Clean the entry */ + 4844 .loc 1 2373 6 is_stmt 0 view .LVU1599 + 4845 001c 0546 mov r5, r0 + 4846 001e 0028 cmp r0, #0 + 4847 0020 F6D1 bne .L358 +2374:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dp->dir + DIR_Name, dp->fn, 11); /* Put SFN */ + 4848 .loc 1 2374 4 is_stmt 1 view .LVU1600 + 4849 0022 2022 movs r2, #32 + 4850 0024 0021 movs r1, #0 + 4851 0026 206A ldr r0, [r4, #32] + 4852 .LVL561: + ARM GAS /tmp/cc5lWXRL.s page 212 + + +2374:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dp->dir + DIR_Name, dp->fn, 11); /* Put SFN */ + 4853 .loc 1 2374 4 is_stmt 0 view .LVU1601 + 4854 0028 FFF7FEFF bl mem_set + 4855 .LVL562: +2375:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 + 4856 .loc 1 2375 4 is_stmt 1 view .LVU1602 + 4857 002c 0B22 movs r2, #11 + 4858 002e 04F12401 add r1, r4, #36 + 4859 0032 206A ldr r0, [r4, #32] + 4860 0034 FFF7FEFF bl mem_cpy + 4861 .LVL563: +2379:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4862 .loc 1 2379 4 view .LVU1603 +2379:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4863 .loc 1 2379 14 is_stmt 0 view .LVU1604 + 4864 0038 0123 movs r3, #1 + 4865 003a F370 strb r3, [r6, #3] + 4866 003c E8E7 b .L358 + 4867 .cfi_endproc + 4868 .LFE1212: + 4870 .section .text.dir_read,"ax",%progbits + 4871 .align 1 + 4872 .syntax unified + 4873 .thumb + 4874 .thumb_func + 4875 .fpu fpv5-d16 + 4877 dir_read: + 4878 .LVL564: + 4879 .LFB1210: +2135:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_NO_FILE; + 4880 .loc 1 2135 1 is_stmt 1 view -0 + 4881 .cfi_startproc + 4882 @ args = 0, pretend = 0, frame = 0 + 4883 @ frame_needed = 0, uses_anonymous_args = 0 +2135:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res = FR_NO_FILE; + 4884 .loc 1 2135 1 is_stmt 0 view .LVU1606 + 4885 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 4886 .LCFI36: + 4887 .cfi_def_cfa_offset 24 + 4888 .cfi_offset 3, -24 + 4889 .cfi_offset 4, -20 + 4890 .cfi_offset 5, -16 + 4891 .cfi_offset 6, -12 + 4892 .cfi_offset 7, -8 + 4893 .cfi_offset 14, -4 + 4894 0002 0446 mov r4, r0 + 4895 0004 0E46 mov r6, r1 +2136:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; + 4896 .loc 1 2136 2 is_stmt 1 view .LVU1607 + 4897 .LVL565: +2137:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE a, c; + 4898 .loc 1 2137 2 view .LVU1608 +2137:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE a, c; + 4899 .loc 1 2137 9 is_stmt 0 view .LVU1609 + 4900 0006 0568 ldr r5, [r0] + 4901 .LVL566: +2138:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 + ARM GAS /tmp/cc5lWXRL.s page 213 + + + 4902 .loc 1 2138 2 is_stmt 1 view .LVU1610 +2143:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); + 4903 .loc 1 2143 2 view .LVU1611 +2136:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs = dp->obj.fs; + 4904 .loc 1 2136 10 is_stmt 0 view .LVU1612 + 4905 0008 0427 movs r7, #4 +2143:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); + 4906 .loc 1 2143 8 view .LVU1613 + 4907 000a 05E0 b .L362 + 4908 .LVL567: + 4909 .L364: +2193:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4910 .loc 1 2193 3 is_stmt 1 view .LVU1614 +2193:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4911 .loc 1 2193 9 is_stmt 0 view .LVU1615 + 4912 000c 0021 movs r1, #0 + 4913 000e 2046 mov r0, r4 + 4914 .LVL568: +2193:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4915 .loc 1 2193 9 view .LVU1616 + 4916 0010 FFF7FEFF bl dir_next + 4917 .LVL569: +2194:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4918 .loc 1 2194 3 is_stmt 1 view .LVU1617 +2194:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4919 .loc 1 2194 6 is_stmt 0 view .LVU1618 + 4920 0014 0746 mov r7, r0 + 4921 0016 E8B9 cbnz r0, .L363 + 4922 .LVL570: + 4923 .L362: +2143:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); + 4924 .loc 1 2143 8 is_stmt 1 view .LVU1619 +2143:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); + 4925 .loc 1 2143 11 is_stmt 0 view .LVU1620 + 4926 0018 E169 ldr r1, [r4, #28] +2143:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dp->sect); + 4927 .loc 1 2143 8 view .LVU1621 + 4928 001a D9B1 cbz r1, .L363 +2144:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4929 .loc 1 2144 3 is_stmt 1 view .LVU1622 +2144:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 4930 .loc 1 2144 9 is_stmt 0 view .LVU1623 + 4931 001c 2846 mov r0, r5 + 4932 001e FFF7FEFF bl move_window + 4933 .LVL571: +2145:Middlewares/Third_Party/FatFs/src/ff.c **** c = dp->dir[DIR_Name]; /* Test for the entry type */ + 4934 .loc 1 2145 3 is_stmt 1 view .LVU1624 +2145:Middlewares/Third_Party/FatFs/src/ff.c **** c = dp->dir[DIR_Name]; /* Test for the entry type */ + 4935 .loc 1 2145 6 is_stmt 0 view .LVU1625 + 4936 0022 0746 mov r7, r0 + 4937 0024 B0B9 cbnz r0, .L363 +2146:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0) { + 4938 .loc 1 2146 3 is_stmt 1 view .LVU1626 +2146:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0) { + 4939 .loc 1 2146 9 is_stmt 0 view .LVU1627 + 4940 0026 236A ldr r3, [r4, #32] +2146:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0) { + ARM GAS /tmp/cc5lWXRL.s page 214 + + + 4941 .loc 1 2146 5 view .LVU1628 + 4942 0028 1A78 ldrb r2, [r3] @ zero_extendqisi2 + 4943 .LVL572: +2147:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_FILE; break; /* Reached to end of the directory */ + 4944 .loc 1 2147 3 is_stmt 1 view .LVU1629 +2147:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_FILE; break; /* Reached to end of the directory */ + 4945 .loc 1 2147 6 is_stmt 0 view .LVU1630 + 4946 002a 92B1 cbz r2, .L367 +2167:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4947 .loc 1 2167 4 is_stmt 1 view .LVU1631 +2167:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4948 .loc 1 2167 30 is_stmt 0 view .LVU1632 + 4949 002c DB7A ldrb r3, [r3, #11] @ zero_extendqisi2 +2167:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4950 .loc 1 2167 21 view .LVU1633 + 4951 002e 03F03F03 and r3, r3, #63 + 4952 .LVL573: +2167:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_LFN != 0 /* LFN configuration */ + 4953 .loc 1 2167 17 view .LVU1634 + 4954 0032 A371 strb r3, [r4, #6] +2188:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 4955 .loc 1 2188 4 is_stmt 1 view .LVU1635 +2188:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 4956 .loc 1 2188 7 is_stmt 0 view .LVU1636 + 4957 0034 E52A cmp r2, #229 + 4958 0036 18BF it ne + 4959 0038 2E2A cmpne r2, #46 + 4960 003a E7D0 beq .L364 +2188:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 4961 .loc 1 2188 30 discriminator 1 view .LVU1637 + 4962 003c 0F2B cmp r3, #15 + 4963 003e E5D0 beq .L364 +2188:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 4964 .loc 1 2188 57 discriminator 2 view .LVU1638 + 4965 0040 23F02003 bic r3, r3, #32 + 4966 .LVL574: +2188:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 4967 .loc 1 2188 48 discriminator 2 view .LVU1639 + 4968 0044 082B cmp r3, #8 + 4969 0046 14BF ite ne + 4970 0048 0023 movne r3, #0 + 4971 004a 0123 moveq r3, #1 +2188:Middlewares/Third_Party/FatFs/src/ff.c **** break; + 4972 .loc 1 2188 45 discriminator 2 view .LVU1640 + 4973 004c B342 cmp r3, r6 + 4974 004e DDD1 bne .L364 + 4975 0050 00E0 b .L363 + 4976 .LVL575: + 4977 .L367: +2148:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4978 .loc 1 2148 8 view .LVU1641 + 4979 0052 0427 movs r7, #4 + 4980 .LVL576: + 4981 .L363: +2197:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 4982 .loc 1 2197 2 is_stmt 1 view .LVU1642 +2197:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + ARM GAS /tmp/cc5lWXRL.s page 215 + + + 4983 .loc 1 2197 5 is_stmt 0 view .LVU1643 + 4984 0054 0FB1 cbz r7, .L366 +2197:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 4985 .loc 1 2197 20 is_stmt 1 discriminator 1 view .LVU1644 +2197:Middlewares/Third_Party/FatFs/src/ff.c **** return res; + 4986 .loc 1 2197 29 is_stmt 0 discriminator 1 view .LVU1645 + 4987 0056 0023 movs r3, #0 + 4988 0058 E361 str r3, [r4, #28] + 4989 .L366: +2198:Middlewares/Third_Party/FatFs/src/ff.c **** } + 4990 .loc 1 2198 2 is_stmt 1 view .LVU1646 +2199:Middlewares/Third_Party/FatFs/src/ff.c **** + 4991 .loc 1 2199 1 is_stmt 0 view .LVU1647 + 4992 005a 3846 mov r0, r7 + 4993 005c F8BD pop {r3, r4, r5, r6, r7, pc} +2199:Middlewares/Third_Party/FatFs/src/ff.c **** + 4994 .loc 1 2199 1 view .LVU1648 + 4995 .cfi_endproc + 4996 .LFE1210: + 4998 .section .text.sync_fs,"ax",%progbits + 4999 .align 1 + 5000 .syntax unified + 5001 .thumb + 5002 .thumb_func + 5003 .fpu fpv5-d16 + 5005 sync_fs: + 5006 .LVL577: + 5007 .LFB1198: + 947:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 5008 .loc 1 947 1 is_stmt 1 view -0 + 5009 .cfi_startproc + 5010 @ args = 0, pretend = 0, frame = 0 + 5011 @ frame_needed = 0, uses_anonymous_args = 0 + 947:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 5012 .loc 1 947 1 is_stmt 0 view .LVU1650 + 5013 0000 70B5 push {r4, r5, r6, lr} + 5014 .LCFI37: + 5015 .cfi_def_cfa_offset 16 + 5016 .cfi_offset 4, -16 + 5017 .cfi_offset 5, -12 + 5018 .cfi_offset 6, -8 + 5019 .cfi_offset 14, -4 + 5020 0002 0446 mov r4, r0 + 948:Middlewares/Third_Party/FatFs/src/ff.c **** + 5021 .loc 1 948 2 is_stmt 1 view .LVU1651 + 951:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 5022 .loc 1 951 2 view .LVU1652 + 951:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 5023 .loc 1 951 8 is_stmt 0 view .LVU1653 + 5024 0004 FFF7FEFF bl sync_window + 5025 .LVL578: + 952:Middlewares/Third_Party/FatFs/src/ff.c **** /* Update FSInfo sector if needed */ + 5026 .loc 1 952 2 is_stmt 1 view .LVU1654 + 952:Middlewares/Third_Party/FatFs/src/ff.c **** /* Update FSInfo sector if needed */ + 5027 .loc 1 952 5 is_stmt 0 view .LVU1655 + 5028 0008 0546 mov r5, r0 + 5029 000a 48B9 cbnz r0, .L370 + ARM GAS /tmp/cc5lWXRL.s page 216 + + + 954:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create FSInfo structure */ + 5030 .loc 1 954 3 is_stmt 1 view .LVU1656 + 954:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create FSInfo structure */ + 5031 .loc 1 954 9 is_stmt 0 view .LVU1657 + 5032 000c 2378 ldrb r3, [r4] @ zero_extendqisi2 + 954:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create FSInfo structure */ + 5033 .loc 1 954 6 view .LVU1658 + 5034 000e 032B cmp r3, #3 + 5035 0010 08D0 beq .L374 + 5036 .LVL579: + 5037 .L371: + 968:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5038 .loc 1 968 3 is_stmt 1 view .LVU1659 + 968:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5039 .loc 1 968 7 is_stmt 0 view .LVU1660 + 5040 0012 0022 movs r2, #0 + 5041 0014 1146 mov r1, r2 + 5042 0016 6078 ldrb r0, [r4, #1] @ zero_extendqisi2 + 5043 0018 FFF7FEFF bl disk_ioctl + 5044 .LVL580: + 968:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5045 .loc 1 968 6 view .LVU1661 + 5046 001c 00B1 cbz r0, .L370 + 968:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5047 .loc 1 968 56 view .LVU1662 + 5048 001e 0125 movs r5, #1 + 5049 .L370: + 5050 .LVL581: + 971:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5051 .loc 1 971 2 is_stmt 1 view .LVU1663 + 972:Middlewares/Third_Party/FatFs/src/ff.c **** + 5052 .loc 1 972 1 is_stmt 0 view .LVU1664 + 5053 0020 2846 mov r0, r5 + 5054 0022 70BD pop {r4, r5, r6, pc} + 5055 .LVL582: + 5056 .L374: + 954:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create FSInfo structure */ + 5057 .loc 1 954 36 discriminator 1 view .LVU1665 + 5058 0024 2379 ldrb r3, [r4, #4] @ zero_extendqisi2 + 954:Middlewares/Third_Party/FatFs/src/ff.c **** /* Create FSInfo structure */ + 5059 .loc 1 954 31 discriminator 1 view .LVU1666 + 5060 0026 012B cmp r3, #1 + 5061 0028 F3D1 bne .L371 + 956:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(fs->win + BS_55AA, 0xAA55); + 5062 .loc 1 956 4 is_stmt 1 view .LVU1667 + 956:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(fs->win + BS_55AA, 0xAA55); + 5063 .loc 1 956 14 is_stmt 0 view .LVU1668 + 5064 002a 04F13406 add r6, r4, #52 + 956:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(fs->win + BS_55AA, 0xAA55); + 5065 .loc 1 956 4 view .LVU1669 + 5066 002e A289 ldrh r2, [r4, #12] + 5067 0030 0021 movs r1, #0 + 5068 0032 3046 mov r0, r6 + 5069 .LVL583: + 956:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(fs->win + BS_55AA, 0xAA55); + 5070 .loc 1 956 4 view .LVU1670 + 5071 0034 FFF7FEFF bl mem_set + ARM GAS /tmp/cc5lWXRL.s page 217 + + + 5072 .LVL584: + 957:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->win + FSI_LeadSig, 0x41615252); + 5073 .loc 1 957 4 is_stmt 1 view .LVU1671 + 5074 0038 4AF65521 movw r1, #43605 + 5075 003c 04F23220 addw r0, r4, #562 + 5076 0040 FFF7FEFF bl st_word + 5077 .LVL585: + 958:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->win + FSI_StrucSig, 0x61417272); + 5078 .loc 1 958 4 view .LVU1672 + 5079 0044 0E49 ldr r1, .L375 + 5080 0046 3046 mov r0, r6 + 5081 0048 FFF7FEFF bl st_dword + 5082 .LVL586: + 959:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->win + FSI_Free_Count, fs->free_clst); + 5083 .loc 1 959 4 view .LVU1673 + 5084 004c 0D49 ldr r1, .L375+4 + 5085 004e 04F50670 add r0, r4, #536 + 5086 0052 FFF7FEFF bl st_dword + 5087 .LVL587: + 960:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(fs->win + FSI_Nxt_Free, fs->last_clst); + 5088 .loc 1 960 4 view .LVU1674 + 5089 0056 6169 ldr r1, [r4, #20] + 5090 0058 04F50770 add r0, r4, #540 + 5091 005c FFF7FEFF bl st_dword + 5092 .LVL588: + 961:Middlewares/Third_Party/FatFs/src/ff.c **** /* Write it into the FSInfo sector */ + 5093 .loc 1 961 4 view .LVU1675 + 5094 0060 2169 ldr r1, [r4, #16] + 5095 0062 04F50870 add r0, r4, #544 + 5096 0066 FFF7FEFF bl st_dword + 5097 .LVL589: + 963:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(fs->drv, fs->win, fs->winsect, 1); + 5098 .loc 1 963 4 view .LVU1676 + 963:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(fs->drv, fs->win, fs->winsect, 1); + 5099 .loc 1 963 20 is_stmt 0 view .LVU1677 + 5100 006a 226A ldr r2, [r4, #32] + 963:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(fs->drv, fs->win, fs->winsect, 1); + 5101 .loc 1 963 30 view .LVU1678 + 5102 006c 0132 adds r2, r2, #1 + 963:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(fs->drv, fs->win, fs->winsect, 1); + 5103 .loc 1 963 16 view .LVU1679 + 5104 006e 2263 str r2, [r4, #48] + 964:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag = 0; + 5105 .loc 1 964 4 is_stmt 1 view .LVU1680 + 5106 0070 0123 movs r3, #1 + 5107 0072 3146 mov r1, r6 + 5108 0074 6078 ldrb r0, [r4, #1] @ zero_extendqisi2 + 5109 0076 FFF7FEFF bl disk_write + 5110 .LVL590: + 965:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5111 .loc 1 965 4 view .LVU1681 + 965:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5112 .loc 1 965 17 is_stmt 0 view .LVU1682 + 5113 007a 0023 movs r3, #0 + 5114 007c 2371 strb r3, [r4, #4] + 5115 007e C8E7 b .L371 + 5116 .L376: + ARM GAS /tmp/cc5lWXRL.s page 218 + + + 5117 .align 2 + 5118 .L375: + 5119 0080 52526141 .word 1096897106 + 5120 0084 72724161 .word 1631679090 + 5121 .cfi_endproc + 5122 .LFE1198: + 5124 .section .text.f_mount,"ax",%progbits + 5125 .align 1 + 5126 .global f_mount + 5127 .syntax unified + 5128 .thumb + 5129 .thumb_func + 5130 .fpu fpv5-d16 + 5132 f_mount: + 5133 .LVL591: + 5134 .LFB1221: +3265:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *cfs; + 5135 .loc 1 3265 1 is_stmt 1 view -0 + 5136 .cfi_startproc + 5137 @ args = 0, pretend = 0, frame = 16 + 5138 @ frame_needed = 0, uses_anonymous_args = 0 +3265:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *cfs; + 5139 .loc 1 3265 1 is_stmt 0 view .LVU1684 + 5140 0000 70B5 push {r4, r5, r6, lr} + 5141 .LCFI38: + 5142 .cfi_def_cfa_offset 16 + 5143 .cfi_offset 4, -16 + 5144 .cfi_offset 5, -12 + 5145 .cfi_offset 6, -8 + 5146 .cfi_offset 14, -4 + 5147 0002 84B0 sub sp, sp, #16 + 5148 .LCFI39: + 5149 .cfi_def_cfa_offset 32 + 5150 0004 0190 str r0, [sp, #4] + 5151 0006 0091 str r1, [sp] + 5152 0008 1646 mov r6, r2 +3266:Middlewares/Third_Party/FatFs/src/ff.c **** int vol; + 5153 .loc 1 3266 2 is_stmt 1 view .LVU1685 +3267:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 5154 .loc 1 3267 2 view .LVU1686 +3268:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR *rp = path; + 5155 .loc 1 3268 2 view .LVU1687 +3269:Middlewares/Third_Party/FatFs/src/ff.c **** + 5156 .loc 1 3269 2 view .LVU1688 +3269:Middlewares/Third_Party/FatFs/src/ff.c **** + 5157 .loc 1 3269 15 is_stmt 0 view .LVU1689 + 5158 000a 0391 str r1, [sp, #12] +3273:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; + 5159 .loc 1 3273 2 is_stmt 1 view .LVU1690 +3273:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; + 5160 .loc 1 3273 8 is_stmt 0 view .LVU1691 + 5161 000c 03A8 add r0, sp, #12 + 5162 .LVL592: +3273:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; + 5163 .loc 1 3273 8 view .LVU1692 + 5164 000e FFF7FEFF bl get_ldnumber + 5165 .LVL593: + ARM GAS /tmp/cc5lWXRL.s page 219 + + +3274:Middlewares/Third_Party/FatFs/src/ff.c **** cfs = FatFs[vol]; /* Pointer to fs object */ + 5166 .loc 1 3274 2 is_stmt 1 view .LVU1693 +3274:Middlewares/Third_Party/FatFs/src/ff.c **** cfs = FatFs[vol]; /* Pointer to fs object */ + 5167 .loc 1 3274 5 is_stmt 0 view .LVU1694 + 5168 0012 041E subs r4, r0, #0 + 5169 0014 20DB blt .L381 +3275:Middlewares/Third_Party/FatFs/src/ff.c **** + 5170 .loc 1 3275 2 is_stmt 1 view .LVU1695 +3275:Middlewares/Third_Party/FatFs/src/ff.c **** + 5171 .loc 1 3275 6 is_stmt 0 view .LVU1696 + 5172 0016 114B ldr r3, .L385 + 5173 0018 53F82450 ldr r5, [r3, r4, lsl #2] + 5174 .LVL594: +3277:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 5175 .loc 1 3277 2 is_stmt 1 view .LVU1697 +3277:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 5176 .loc 1 3277 5 is_stmt 0 view .LVU1698 + 5177 001c 25B1 cbz r5, .L379 +3279:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5178 .loc 1 3279 3 is_stmt 1 view .LVU1699 + 5179 001e 2846 mov r0, r5 + 5180 .LVL595: +3279:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5181 .loc 1 3279 3 is_stmt 0 view .LVU1700 + 5182 0020 FFF7FEFF bl clear_lock + 5183 .LVL596: +3284:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5184 .loc 1 3284 3 is_stmt 1 view .LVU1701 +3284:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5185 .loc 1 3284 16 is_stmt 0 view .LVU1702 + 5186 0024 0023 movs r3, #0 + 5187 0026 2B70 strb r3, [r5] + 5188 .L379: +3287:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fs_type = 0; /* Clear new fs object */ + 5189 .loc 1 3287 2 is_stmt 1 view .LVU1703 +3287:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fs_type = 0; /* Clear new fs object */ + 5190 .loc 1 3287 6 is_stmt 0 view .LVU1704 + 5191 0028 019B ldr r3, [sp, #4] +3287:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fs_type = 0; /* Clear new fs object */ + 5192 .loc 1 3287 5 view .LVU1705 + 5193 002a 0BB1 cbz r3, .L380 +3288:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT /* Create sync object for the new volume */ + 5194 .loc 1 3288 3 is_stmt 1 view .LVU1706 +3288:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_REENTRANT /* Create sync object for the new volume */ + 5195 .loc 1 3288 15 is_stmt 0 view .LVU1707 + 5196 002c 0022 movs r2, #0 + 5197 002e 1A70 strb r2, [r3] + 5198 .L380: +3293:Middlewares/Third_Party/FatFs/src/ff.c **** + 5199 .loc 1 3293 2 is_stmt 1 view .LVU1708 +3293:Middlewares/Third_Party/FatFs/src/ff.c **** + 5200 .loc 1 3293 13 is_stmt 0 view .LVU1709 + 5201 0030 019B ldr r3, [sp, #4] + 5202 0032 0A4A ldr r2, .L385 + 5203 0034 42F82430 str r3, [r2, r4, lsl #2] +3295:Middlewares/Third_Party/FatFs/src/ff.c **** + 5204 .loc 1 3295 2 is_stmt 1 view .LVU1710 + ARM GAS /tmp/cc5lWXRL.s page 220 + + +3295:Middlewares/Third_Party/FatFs/src/ff.c **** + 5205 .loc 1 3295 17 is_stmt 0 view .LVU1711 + 5206 0038 721E subs r2, r6, #1 + 5207 003a 18BF it ne + 5208 003c 0122 movne r2, #1 +3295:Middlewares/Third_Party/FatFs/src/ff.c **** + 5209 .loc 1 3295 10 view .LVU1712 + 5210 003e 002B cmp r3, #0 + 5211 0040 08BF it eq + 5212 0042 42F00102 orreq r2, r2, #1 +3295:Middlewares/Third_Party/FatFs/src/ff.c **** + 5213 .loc 1 3295 5 view .LVU1713 + 5214 0046 12B1 cbz r2, .L384 +3295:Middlewares/Third_Party/FatFs/src/ff.c **** + 5215 .loc 1 3295 30 view .LVU1714 + 5216 0048 0020 movs r0, #0 + 5217 .LVL597: + 5218 .L378: +3299:Middlewares/Third_Party/FatFs/src/ff.c **** + 5219 .loc 1 3299 1 view .LVU1715 + 5220 004a 04B0 add sp, sp, #16 + 5221 .LCFI40: + 5222 .cfi_remember_state + 5223 .cfi_def_cfa_offset 16 + 5224 @ sp needed + 5225 004c 70BD pop {r4, r5, r6, pc} + 5226 .LVL598: + 5227 .L384: + 5228 .LCFI41: + 5229 .cfi_restore_state +3297:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); + 5230 .loc 1 3297 2 is_stmt 1 view .LVU1716 +3297:Middlewares/Third_Party/FatFs/src/ff.c **** LEAVE_FF(fs, res); + 5231 .loc 1 3297 8 is_stmt 0 view .LVU1717 + 5232 004e 01A9 add r1, sp, #4 + 5233 0050 6846 mov r0, sp + 5234 0052 FFF7FEFF bl find_volume + 5235 .LVL599: +3298:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5236 .loc 1 3298 2 is_stmt 1 view .LVU1718 + 5237 0056 F8E7 b .L378 + 5238 .LVL600: + 5239 .L381: +3274:Middlewares/Third_Party/FatFs/src/ff.c **** cfs = FatFs[vol]; /* Pointer to fs object */ + 5240 .loc 1 3274 22 is_stmt 0 view .LVU1719 + 5241 0058 0B20 movs r0, #11 + 5242 .LVL601: +3274:Middlewares/Third_Party/FatFs/src/ff.c **** cfs = FatFs[vol]; /* Pointer to fs object */ + 5243 .loc 1 3274 22 view .LVU1720 + 5244 005a F6E7 b .L378 + 5245 .L386: + 5246 .align 2 + 5247 .L385: + 5248 005c 00000000 .word .LANCHOR2 + 5249 .cfi_endproc + 5250 .LFE1221: + 5252 .section .text.f_open,"ax",%progbits + ARM GAS /tmp/cc5lWXRL.s page 221 + + + 5253 .align 1 + 5254 .global f_open + 5255 .syntax unified + 5256 .thumb + 5257 .thumb_func + 5258 .fpu fpv5-d16 + 5260 f_open: + 5261 .LVL602: + 5262 .LFB1222: +3313:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 5263 .loc 1 3313 1 is_stmt 1 view -0 + 5264 .cfi_startproc + 5265 @ args = 0, pretend = 0, frame = 64 + 5266 @ frame_needed = 0, uses_anonymous_args = 0 +3313:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 5267 .loc 1 3313 1 is_stmt 0 view .LVU1722 + 5268 0000 2DE9F043 push {r4, r5, r6, r7, r8, r9, lr} + 5269 .LCFI42: + 5270 .cfi_def_cfa_offset 28 + 5271 .cfi_offset 4, -28 + 5272 .cfi_offset 5, -24 + 5273 .cfi_offset 6, -20 + 5274 .cfi_offset 7, -16 + 5275 .cfi_offset 8, -12 + 5276 .cfi_offset 9, -8 + 5277 .cfi_offset 14, -4 + 5278 0004 91B0 sub sp, sp, #68 + 5279 .LCFI43: + 5280 .cfi_def_cfa_offset 96 + 5281 0006 0191 str r1, [sp, #4] +3314:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; + 5282 .loc 1 3314 2 is_stmt 1 view .LVU1723 +3315:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 5283 .loc 1 3315 2 view .LVU1724 +3316:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 5284 .loc 1 3316 2 view .LVU1725 +3318:Middlewares/Third_Party/FatFs/src/ff.c **** FSIZE_t ofs; + 5285 .loc 1 3318 2 view .LVU1726 +3319:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5286 .loc 1 3319 2 view .LVU1727 +3324:Middlewares/Third_Party/FatFs/src/ff.c **** + 5287 .loc 1 3324 2 view .LVU1728 +3324:Middlewares/Third_Party/FatFs/src/ff.c **** + 5288 .loc 1 3324 5 is_stmt 0 view .LVU1729 + 5289 0008 0028 cmp r0, #0 + 5290 000a 00F01581 beq .L403 + 5291 000e 1546 mov r5, r2 + 5292 0010 0646 mov r6, r0 +3327:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, mode); + 5293 .loc 1 3327 2 is_stmt 1 view .LVU1730 +3327:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, mode); + 5294 .loc 1 3327 7 is_stmt 0 view .LVU1731 + 5295 0012 02F03F07 and r7, r2, #63 + 5296 .LVL603: +3328:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 5297 .loc 1 3328 2 is_stmt 1 view .LVU1732 +3328:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + ARM GAS /tmp/cc5lWXRL.s page 222 + + + 5298 .loc 1 3328 8 is_stmt 0 view .LVU1733 + 5299 0016 3A46 mov r2, r7 + 5300 0018 03A9 add r1, sp, #12 + 5301 .LVL604: +3328:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 5302 .loc 1 3328 8 view .LVU1734 + 5303 001a 01A8 add r0, sp, #4 + 5304 .LVL605: +3328:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 5305 .loc 1 3328 8 view .LVU1735 + 5306 001c FFF7FEFF bl find_volume + 5307 .LVL606: +3329:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; + 5308 .loc 1 3329 2 is_stmt 1 view .LVU1736 +3329:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; + 5309 .loc 1 3329 5 is_stmt 0 view .LVU1737 + 5310 0020 0446 mov r4, r0 + 5311 0022 30B1 cbz r0, .L416 + 5312 .LVL607: + 5313 .L389: +3496:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5314 .loc 1 3496 16 is_stmt 1 view .LVU1738 +3499:Middlewares/Third_Party/FatFs/src/ff.c **** + 5315 .loc 1 3499 2 view .LVU1739 +3499:Middlewares/Third_Party/FatFs/src/ff.c **** + 5316 .loc 1 3499 5 is_stmt 0 view .LVU1740 + 5317 0024 0CB1 cbz r4, .L388 + 5318 .LVL608: + 5319 .L402: +3499:Middlewares/Third_Party/FatFs/src/ff.c **** + 5320 .loc 1 3499 20 is_stmt 1 discriminator 1 view .LVU1741 +3499:Middlewares/Third_Party/FatFs/src/ff.c **** + 5321 .loc 1 3499 31 is_stmt 0 discriminator 1 view .LVU1742 + 5322 0026 0023 movs r3, #0 + 5323 0028 3360 str r3, [r6] + 5324 .LVL609: + 5325 .L388: +3502:Middlewares/Third_Party/FatFs/src/ff.c **** + 5326 .loc 1 3502 1 view .LVU1743 + 5327 002a 2046 mov r0, r4 + 5328 002c 11B0 add sp, sp, #68 + 5329 .LCFI44: + 5330 .cfi_remember_state + 5331 .cfi_def_cfa_offset 28 + 5332 @ sp needed + 5333 002e BDE8F083 pop {r4, r5, r6, r7, r8, r9, pc} + 5334 .LVL610: + 5335 .L416: + 5336 .LCFI45: + 5337 .cfi_restore_state +3330:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); + 5338 .loc 1 3330 3 is_stmt 1 view .LVU1744 +3330:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); + 5339 .loc 1 3330 13 is_stmt 0 view .LVU1745 + 5340 0032 039B ldr r3, [sp, #12] + 5341 0034 0493 str r3, [sp, #16] +3331:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */ + ARM GAS /tmp/cc5lWXRL.s page 223 + + + 5342 .loc 1 3331 18 is_stmt 1 view .LVU1746 +3332:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY /* R/W configuration */ + 5343 .loc 1 3332 3 view .LVU1747 +3332:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY /* R/W configuration */ + 5344 .loc 1 3332 9 is_stmt 0 view .LVU1748 + 5345 0036 0199 ldr r1, [sp, #4] + 5346 0038 04A8 add r0, sp, #16 + 5347 .LVL611: +3332:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY /* R/W configuration */ + 5348 .loc 1 3332 9 view .LVU1749 + 5349 003a FFF7FEFF bl follow_path + 5350 .LVL612: +3334:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { /* Origin directory itself? */ + 5351 .loc 1 3334 3 is_stmt 1 view .LVU1750 +3334:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { /* Origin directory itself? */ + 5352 .loc 1 3334 6 is_stmt 0 view .LVU1751 + 5353 003e 0446 mov r4, r0 + 5354 0040 60B9 cbnz r0, .L390 +3335:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; + 5355 .loc 1 3335 4 is_stmt 1 view .LVU1752 +3335:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; + 5356 .loc 1 3335 8 is_stmt 0 view .LVU1753 + 5357 0042 9DF93F30 ldrsb r3, [sp, #63] +3335:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; + 5358 .loc 1 3335 7 view .LVU1754 + 5359 0046 002B cmp r3, #0 + 5360 0048 50DB blt .L404 +3340:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5361 .loc 1 3340 5 is_stmt 1 view .LVU1755 +3340:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5362 .loc 1 3340 11 is_stmt 0 view .LVU1756 + 5363 004a 37F00103 bics r3, r7, #1 + 5364 004e 14BF ite ne + 5365 0050 0121 movne r1, #1 + 5366 0052 0021 moveq r1, #0 + 5367 0054 04A8 add r0, sp, #16 + 5368 .LVL613: +3340:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5369 .loc 1 3340 11 view .LVU1757 + 5370 0056 FFF7FEFF bl chk_lock + 5371 .LVL614: + 5372 005a 0446 mov r4, r0 + 5373 .LVL615: + 5374 .L390: +3345:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) { /* No file, create new */ + 5375 .loc 1 3345 3 is_stmt 1 view .LVU1758 +3345:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) { /* No file, create new */ + 5376 .loc 1 3345 6 is_stmt 0 view .LVU1759 + 5377 005c 15F01C0F tst r5, #28 + 5378 0060 5AD0 beq .L391 +3346:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { /* There is no file to open, create a new entry */ + 5379 .loc 1 3346 4 is_stmt 1 view .LVU1760 +3346:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) { /* There is no file to open, create a new entry */ + 5380 .loc 1 3346 7 is_stmt 0 view .LVU1761 + 5381 0062 002C cmp r4, #0 + 5382 0064 4ED0 beq .L392 +3347:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + ARM GAS /tmp/cc5lWXRL.s page 224 + + + 5383 .loc 1 3347 5 is_stmt 1 view .LVU1762 +3347:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 5384 .loc 1 3347 8 is_stmt 0 view .LVU1763 + 5385 0066 042C cmp r4, #4 + 5386 0068 42D0 beq .L417 + 5387 .LVL616: + 5388 .L393: +3354:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5389 .loc 1 3354 5 is_stmt 1 view .LVU1764 +3354:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5390 .loc 1 3354 10 is_stmt 0 view .LVU1765 + 5391 006a 47F00807 orr r7, r7, #8 + 5392 .LVL617: + 5393 .L394: +3363:Middlewares/Third_Party/FatFs/src/ff.c **** dw = GET_FATTIME(); + 5394 .loc 1 3363 4 is_stmt 1 view .LVU1766 +3363:Middlewares/Third_Party/FatFs/src/ff.c **** dw = GET_FATTIME(); + 5395 .loc 1 3363 7 is_stmt 0 view .LVU1767 + 5396 006e 002C cmp r4, #0 + 5397 0070 61D1 bne .L395 +3363:Middlewares/Third_Party/FatFs/src/ff.c **** dw = GET_FATTIME(); + 5398 .loc 1 3363 21 discriminator 1 view .LVU1768 + 5399 0072 17F0080F tst r7, #8 + 5400 0076 5ED0 beq .L395 +3364:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 5401 .loc 1 3364 5 is_stmt 1 view .LVU1769 +3364:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 5402 .loc 1 3364 10 is_stmt 0 view .LVU1770 + 5403 0078 FFF7FEFF bl get_fattime + 5404 .LVL618: + 5405 007c 0546 mov r5, r0 + 5406 .LVL619: +3392:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dj.dir + DIR_ModTime, dw); /* Set modified time */ + 5407 .loc 1 3392 6 is_stmt 1 view .LVU1771 + 5408 007e 0146 mov r1, r0 + 5409 0080 0C98 ldr r0, [sp, #48] + 5410 .LVL620: +3392:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dj.dir + DIR_ModTime, dw); /* Set modified time */ + 5411 .loc 1 3392 6 is_stmt 0 view .LVU1772 + 5412 0082 0E30 adds r0, r0, #14 + 5413 0084 FFF7FEFF bl st_dword + 5414 .LVL621: +3393:Middlewares/Third_Party/FatFs/src/ff.c **** dj.dir[DIR_Attr] = AM_ARC; /* Reset attribute */ + 5415 .loc 1 3393 6 is_stmt 1 view .LVU1773 + 5416 0088 2946 mov r1, r5 + 5417 008a 0C98 ldr r0, [sp, #48] + 5418 008c 1630 adds r0, r0, #22 + 5419 008e FFF7FEFF bl st_dword + 5420 .LVL622: +3394:Middlewares/Third_Party/FatFs/src/ff.c **** cl = ld_clust(fs, dj.dir); /* Get cluster chain */ + 5421 .loc 1 3394 6 view .LVU1774 +3394:Middlewares/Third_Party/FatFs/src/ff.c **** cl = ld_clust(fs, dj.dir); /* Get cluster chain */ + 5422 .loc 1 3394 23 is_stmt 0 view .LVU1775 + 5423 0092 0C9B ldr r3, [sp, #48] + 5424 0094 2022 movs r2, #32 + 5425 0096 DA72 strb r2, [r3, #11] +3395:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dj.dir, 0); /* Reset file allocation info */ + ARM GAS /tmp/cc5lWXRL.s page 225 + + + 5426 .loc 1 3395 6 is_stmt 1 view .LVU1776 +3395:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dj.dir, 0); /* Reset file allocation info */ + 5427 .loc 1 3395 11 is_stmt 0 view .LVU1777 + 5428 0098 DDF80C80 ldr r8, [sp, #12] +3395:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dj.dir, 0); /* Reset file allocation info */ + 5429 .loc 1 3395 26 view .LVU1778 + 5430 009c DDF83090 ldr r9, [sp, #48] +3395:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dj.dir, 0); /* Reset file allocation info */ + 5431 .loc 1 3395 11 view .LVU1779 + 5432 00a0 4946 mov r1, r9 + 5433 00a2 4046 mov r0, r8 + 5434 00a4 FFF7FEFF bl ld_clust + 5435 .LVL623: + 5436 00a8 0546 mov r5, r0 + 5437 .LVL624: +3396:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dj.dir + DIR_FileSize, 0); + 5438 .loc 1 3396 6 is_stmt 1 view .LVU1780 + 5439 00aa 0022 movs r2, #0 + 5440 00ac 4946 mov r1, r9 + 5441 00ae 4046 mov r0, r8 + 5442 .LVL625: +3396:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dj.dir + DIR_FileSize, 0); + 5443 .loc 1 3396 6 is_stmt 0 view .LVU1781 + 5444 00b0 FFF7FEFF bl st_clust + 5445 .LVL626: +3397:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 5446 .loc 1 3397 6 is_stmt 1 view .LVU1782 + 5447 00b4 0021 movs r1, #0 + 5448 00b6 0C98 ldr r0, [sp, #48] + 5449 00b8 1C30 adds r0, r0, #28 + 5450 00ba FFF7FEFF bl st_dword + 5451 .LVL627: +3398:Middlewares/Third_Party/FatFs/src/ff.c **** + 5452 .loc 1 3398 6 view .LVU1783 +3398:Middlewares/Third_Party/FatFs/src/ff.c **** + 5453 .loc 1 3398 16 is_stmt 0 view .LVU1784 + 5454 00be 039B ldr r3, [sp, #12] + 5455 00c0 0122 movs r2, #1 + 5456 00c2 DA70 strb r2, [r3, #3] +3400:Middlewares/Third_Party/FatFs/src/ff.c **** dw = fs->winsect; + 5457 .loc 1 3400 6 is_stmt 1 view .LVU1785 +3400:Middlewares/Third_Party/FatFs/src/ff.c **** dw = fs->winsect; + 5458 .loc 1 3400 9 is_stmt 0 view .LVU1786 + 5459 00c4 BDB3 cbz r5, .L395 +3401:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&dj.obj, cl, 0); + 5460 .loc 1 3401 7 is_stmt 1 view .LVU1787 +3401:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&dj.obj, cl, 0); + 5461 .loc 1 3401 14 is_stmt 0 view .LVU1788 + 5462 00c6 039B ldr r3, [sp, #12] +3401:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&dj.obj, cl, 0); + 5463 .loc 1 3401 10 view .LVU1789 + 5464 00c8 D3F83080 ldr r8, [r3, #48] + 5465 .LVL628: +3402:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 5466 .loc 1 3402 7 is_stmt 1 view .LVU1790 +3402:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 5467 .loc 1 3402 13 is_stmt 0 view .LVU1791 + ARM GAS /tmp/cc5lWXRL.s page 226 + + + 5468 00cc 0022 movs r2, #0 + 5469 00ce 2946 mov r1, r5 + 5470 00d0 04A8 add r0, sp, #16 + 5471 00d2 FFF7FEFF bl remove_chain + 5472 .LVL629: +3403:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dw); + 5473 .loc 1 3403 7 is_stmt 1 view .LVU1792 +3403:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, dw); + 5474 .loc 1 3403 10 is_stmt 0 view .LVU1793 + 5475 00d6 0446 mov r4, r0 + 5476 00d8 68BB cbnz r0, .L395 +3404:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = cl - 1; /* Reuse the cluster hole */ + 5477 .loc 1 3404 8 is_stmt 1 view .LVU1794 +3404:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = cl - 1; /* Reuse the cluster hole */ + 5478 .loc 1 3404 14 is_stmt 0 view .LVU1795 + 5479 00da 4146 mov r1, r8 + 5480 00dc 0398 ldr r0, [sp, #12] + 5481 .LVL630: +3404:Middlewares/Third_Party/FatFs/src/ff.c **** fs->last_clst = cl - 1; /* Reuse the cluster hole */ + 5482 .loc 1 3404 14 view .LVU1796 + 5483 00de FFF7FEFF bl move_window + 5484 .LVL631: + 5485 00e2 0446 mov r4, r0 + 5486 .LVL632: +3405:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5487 .loc 1 3405 8 is_stmt 1 view .LVU1797 +3405:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5488 .loc 1 3405 27 is_stmt 0 view .LVU1798 + 5489 00e4 013D subs r5, r5, #1 + 5490 .LVL633: +3405:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5491 .loc 1 3405 22 view .LVU1799 + 5492 00e6 039B ldr r3, [sp, #12] + 5493 00e8 1D61 str r5, [r3, #16] + 5494 00ea 24E0 b .L395 + 5495 .LVL634: + 5496 .L404: +3336:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5497 .loc 1 3336 9 view .LVU1800 + 5498 00ec 0624 movs r4, #6 + 5499 00ee B5E7 b .L390 + 5500 .LVL635: + 5501 .L417: +3349:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 5502 .loc 1 3349 6 is_stmt 1 view .LVU1801 +3349:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 5503 .loc 1 3349 12 is_stmt 0 view .LVU1802 + 5504 00f0 FFF7FEFF bl enq_lock + 5505 .LVL636: +3349:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 5506 .loc 1 3349 43 view .LVU1803 + 5507 00f4 08B9 cbnz r0, .L418 + 5508 00f6 1224 movs r4, #18 + 5509 .LVL637: +3349:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 5510 .loc 1 3349 43 view .LVU1804 + 5511 00f8 B7E7 b .L393 + ARM GAS /tmp/cc5lWXRL.s page 227 + + + 5512 .LVL638: + 5513 .L418: +3349:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 5514 .loc 1 3349 25 discriminator 1 view .LVU1805 + 5515 00fa 04A8 add r0, sp, #16 + 5516 00fc FFF7FEFF bl dir_register + 5517 .LVL639: + 5518 0100 0446 mov r4, r0 + 5519 .LVL640: +3349:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 5520 .loc 1 3349 25 discriminator 1 view .LVU1806 + 5521 0102 B2E7 b .L393 + 5522 .LVL641: + 5523 .L392: +3357:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; + 5524 .loc 1 3357 5 is_stmt 1 view .LVU1807 +3357:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; + 5525 .loc 1 3357 15 is_stmt 0 view .LVU1808 + 5526 0104 9DF81630 ldrb r3, [sp, #22] @ zero_extendqisi2 +3357:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; + 5527 .loc 1 3357 8 view .LVU1809 + 5528 0108 13F0110F tst r3, #17 + 5529 010c 12D1 bne .L406 +3360:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5530 .loc 1 3360 6 is_stmt 1 view .LVU1810 +3360:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5531 .loc 1 3360 9 is_stmt 0 view .LVU1811 + 5532 010e 15F0040F tst r5, #4 + 5533 0112 ACD0 beq .L394 +3360:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5534 .loc 1 3360 36 view .LVU1812 + 5535 0114 0824 movs r4, #8 + 5536 .LVL642: +3360:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5537 .loc 1 3360 36 view .LVU1813 + 5538 0116 0EE0 b .L395 + 5539 .LVL643: + 5540 .L391: +3412:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.obj.attr & AM_DIR) { /* It is a directory */ + 5541 .loc 1 3412 4 is_stmt 1 view .LVU1814 +3412:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.obj.attr & AM_DIR) { /* It is a directory */ + 5542 .loc 1 3412 7 is_stmt 0 view .LVU1815 + 5543 0118 6CB9 cbnz r4, .L395 +3413:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_FILE; + 5544 .loc 1 3413 5 is_stmt 1 view .LVU1816 +3413:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_FILE; + 5545 .loc 1 3413 15 is_stmt 0 view .LVU1817 + 5546 011a 9DF81630 ldrb r3, [sp, #22] @ zero_extendqisi2 +3413:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_NO_FILE; + 5547 .loc 1 3413 8 view .LVU1818 + 5548 011e 13F0100F tst r3, #16 + 5549 0122 4ED1 bne .L408 +3416:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; + 5550 .loc 1 3416 6 is_stmt 1 view .LVU1819 +3416:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; + 5551 .loc 1 3416 9 is_stmt 0 view .LVU1820 + 5552 0124 15F0020F tst r5, #2 + ARM GAS /tmp/cc5lWXRL.s page 228 + + + 5553 0128 05D0 beq .L395 +3416:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; + 5554 .loc 1 3416 28 discriminator 1 view .LVU1821 + 5555 012a 13F0010F tst r3, #1 + 5556 012e 02D0 beq .L395 +3417:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5557 .loc 1 3417 11 view .LVU1822 + 5558 0130 0724 movs r4, #7 + 5559 .LVL644: +3417:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5560 .loc 1 3417 11 view .LVU1823 + 5561 0132 16E0 b .L396 + 5562 .LVL645: + 5563 .L406: +3358:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 5564 .loc 1 3358 10 view .LVU1824 + 5565 0134 0724 movs r4, #7 + 5566 .LVL646: + 5567 .L395: +3422:Middlewares/Third_Party/FatFs/src/ff.c **** if (mode & FA_CREATE_ALWAYS) /* Set file change flag if created or overwritten */ + 5568 .loc 1 3422 3 is_stmt 1 view .LVU1825 +3422:Middlewares/Third_Party/FatFs/src/ff.c **** if (mode & FA_CREATE_ALWAYS) /* Set file change flag if created or overwritten */ + 5569 .loc 1 3422 6 is_stmt 0 view .LVU1826 + 5570 0136 A4B9 cbnz r4, .L396 +3423:Middlewares/Third_Party/FatFs/src/ff.c **** mode |= FA_MODIFIED; + 5571 .loc 1 3423 4 is_stmt 1 view .LVU1827 +3423:Middlewares/Third_Party/FatFs/src/ff.c **** mode |= FA_MODIFIED; + 5572 .loc 1 3423 7 is_stmt 0 view .LVU1828 + 5573 0138 17F0080F tst r7, #8 + 5574 013c 01D0 beq .L397 +3424:Middlewares/Third_Party/FatFs/src/ff.c **** fp->dir_sect = fs->winsect; /* Pointer to the directory entry */ + 5575 .loc 1 3424 5 is_stmt 1 view .LVU1829 +3424:Middlewares/Third_Party/FatFs/src/ff.c **** fp->dir_sect = fs->winsect; /* Pointer to the directory entry */ + 5576 .loc 1 3424 10 is_stmt 0 view .LVU1830 + 5577 013e 47F04007 orr r7, r7, #64 + 5578 .LVL647: + 5579 .L397: +3425:Middlewares/Third_Party/FatFs/src/ff.c **** fp->dir_ptr = dj.dir; + 5580 .loc 1 3425 4 is_stmt 1 view .LVU1831 +3425:Middlewares/Third_Party/FatFs/src/ff.c **** fp->dir_ptr = dj.dir; + 5581 .loc 1 3425 21 is_stmt 0 view .LVU1832 + 5582 0142 039B ldr r3, [sp, #12] + 5583 0144 1B6B ldr r3, [r3, #48] +3425:Middlewares/Third_Party/FatFs/src/ff.c **** fp->dir_ptr = dj.dir; + 5584 .loc 1 3425 17 view .LVU1833 + 5585 0146 7362 str r3, [r6, #36] +3426:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 5586 .loc 1 3426 4 is_stmt 1 view .LVU1834 +3426:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 5587 .loc 1 3426 20 is_stmt 0 view .LVU1835 + 5588 0148 0C9B ldr r3, [sp, #48] +3426:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 5589 .loc 1 3426 16 view .LVU1836 + 5590 014a B362 str r3, [r6, #40] +3428:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fp->obj.lockid) res = FR_INT_ERR; + 5591 .loc 1 3428 4 is_stmt 1 view .LVU1837 +3428:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fp->obj.lockid) res = FR_INT_ERR; + ARM GAS /tmp/cc5lWXRL.s page 229 + + + 5592 .loc 1 3428 21 is_stmt 0 view .LVU1838 + 5593 014c 37F00103 bics r3, r7, #1 + 5594 0150 14BF ite ne + 5595 0152 0121 movne r1, #1 + 5596 0154 0021 moveq r1, #0 + 5597 0156 04A8 add r0, sp, #16 + 5598 0158 FFF7FEFF bl inc_lock + 5599 .LVL648: +3428:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fp->obj.lockid) res = FR_INT_ERR; + 5600 .loc 1 3428 19 view .LVU1839 + 5601 015c 3061 str r0, [r6, #16] +3429:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5602 .loc 1 3429 4 is_stmt 1 view .LVU1840 +3429:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5603 .loc 1 3429 7 is_stmt 0 view .LVU1841 + 5604 015e 0028 cmp r0, #0 + 5605 0160 68D0 beq .L410 + 5606 .LVL649: + 5607 .L396: +3444:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 5608 .loc 1 3444 3 is_stmt 1 view .LVU1842 +3444:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 5609 .loc 1 3444 6 is_stmt 0 view .LVU1843 + 5610 0162 002C cmp r4, #0 + 5611 0164 7FF45EAF bne .L389 +3456:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = ld_dword(dj.dir + DIR_FileSize); + 5612 .loc 1 3456 5 is_stmt 1 view .LVU1844 +3456:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = ld_dword(dj.dir + DIR_FileSize); + 5613 .loc 1 3456 22 is_stmt 0 view .LVU1845 + 5614 0168 039D ldr r5, [sp, #12] +3456:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = ld_dword(dj.dir + DIR_FileSize); + 5615 .loc 1 3456 37 view .LVU1846 + 5616 016a DDF83080 ldr r8, [sp, #48] +3456:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = ld_dword(dj.dir + DIR_FileSize); + 5617 .loc 1 3456 22 view .LVU1847 + 5618 016e 4146 mov r1, r8 + 5619 0170 2846 mov r0, r5 + 5620 0172 FFF7FEFF bl ld_clust + 5621 .LVL650: +3456:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = ld_dword(dj.dir + DIR_FileSize); + 5622 .loc 1 3456 20 view .LVU1848 + 5623 0176 B060 str r0, [r6, #8] +3457:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5624 .loc 1 3457 5 is_stmt 1 view .LVU1849 +3457:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5625 .loc 1 3457 23 is_stmt 0 view .LVU1850 + 5626 0178 08F11C00 add r0, r8, #28 + 5627 017c FFF7FEFF bl ld_dword + 5628 .LVL651: +3457:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5629 .loc 1 3457 21 view .LVU1851 + 5630 0180 F060 str r0, [r6, #12] +3460:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5631 .loc 1 3460 4 is_stmt 1 view .LVU1852 +3460:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5632 .loc 1 3460 14 is_stmt 0 view .LVU1853 + 5633 0182 0021 movs r1, #0 + ARM GAS /tmp/cc5lWXRL.s page 230 + + + 5634 0184 F162 str r1, [r6, #44] +3462:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.id = fs->id; + 5635 .loc 1 3462 4 is_stmt 1 view .LVU1854 +3462:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.id = fs->id; + 5636 .loc 1 3462 15 is_stmt 0 view .LVU1855 + 5637 0186 3560 str r5, [r6] +3463:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag = mode; /* Set file access mode */ + 5638 .loc 1 3463 4 is_stmt 1 view .LVU1856 +3463:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag = mode; /* Set file access mode */ + 5639 .loc 1 3463 19 is_stmt 0 view .LVU1857 + 5640 0188 EB88 ldrh r3, [r5, #6] +3463:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag = mode; /* Set file access mode */ + 5641 .loc 1 3463 15 view .LVU1858 + 5642 018a B380 strh r3, [r6, #4] @ movhi +3464:Middlewares/Third_Party/FatFs/src/ff.c **** fp->err = 0; /* Clear error flag */ + 5643 .loc 1 3464 4 is_stmt 1 view .LVU1859 +3464:Middlewares/Third_Party/FatFs/src/ff.c **** fp->err = 0; /* Clear error flag */ + 5644 .loc 1 3464 13 is_stmt 0 view .LVU1860 + 5645 018c 3775 strb r7, [r6, #20] +3465:Middlewares/Third_Party/FatFs/src/ff.c **** fp->sect = 0; /* Invalidate current data sector */ + 5646 .loc 1 3465 4 is_stmt 1 view .LVU1861 +3465:Middlewares/Third_Party/FatFs/src/ff.c **** fp->sect = 0; /* Invalidate current data sector */ + 5647 .loc 1 3465 12 is_stmt 0 view .LVU1862 + 5648 018e 7175 strb r1, [r6, #21] +3466:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = 0; /* Set file pointer top of the file */ + 5649 .loc 1 3466 4 is_stmt 1 view .LVU1863 +3466:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = 0; /* Set file pointer top of the file */ + 5650 .loc 1 3466 13 is_stmt 0 view .LVU1864 + 5651 0190 3162 str r1, [r6, #32] +3467:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 5652 .loc 1 3467 4 is_stmt 1 view .LVU1865 +3467:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 5653 .loc 1 3467 13 is_stmt 0 view .LVU1866 + 5654 0192 B161 str r1, [r6, #24] +3470:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5655 .loc 1 3470 4 is_stmt 1 view .LVU1867 +3470:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5656 .loc 1 3470 14 is_stmt 0 view .LVU1868 + 5657 0194 06F13008 add r8, r6, #48 +3470:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5658 .loc 1 3470 4 view .LVU1869 + 5659 0198 4FF48052 mov r2, #4096 + 5660 019c 4046 mov r0, r8 + 5661 019e FFF7FEFF bl mem_set + 5662 .LVL652: +3472:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = fp->obj.objsize; /* Offset to seek */ + 5663 .loc 1 3472 4 is_stmt 1 view .LVU1870 +3472:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = fp->obj.objsize; /* Offset to seek */ + 5664 .loc 1 3472 7 is_stmt 0 view .LVU1871 + 5665 01a2 17F0200F tst r7, #32 + 5666 01a6 3FF43DAF beq .L389 +3472:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = fp->obj.objsize; /* Offset to seek */ + 5667 .loc 1 3472 38 discriminator 1 view .LVU1872 + 5668 01aa F568 ldr r5, [r6, #12] +3472:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = fp->obj.objsize; /* Offset to seek */ + 5669 .loc 1 3472 28 discriminator 1 view .LVU1873 + 5670 01ac 002D cmp r5, #0 + ARM GAS /tmp/cc5lWXRL.s page 231 + + + 5671 01ae 3FF439AF beq .L389 +3473:Middlewares/Third_Party/FatFs/src/ff.c **** bcs = (DWORD)fs->csize * SS(fs); /* Cluster size in byte */ + 5672 .loc 1 3473 5 is_stmt 1 view .LVU1874 +3473:Middlewares/Third_Party/FatFs/src/ff.c **** bcs = (DWORD)fs->csize * SS(fs); /* Cluster size in byte */ + 5673 .loc 1 3473 14 is_stmt 0 view .LVU1875 + 5674 01b2 B561 str r5, [r6, #24] +3474:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow the cluster chain */ + 5675 .loc 1 3474 5 is_stmt 1 view .LVU1876 +3474:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow the cluster chain */ + 5676 .loc 1 3474 20 is_stmt 0 view .LVU1877 + 5677 01b4 039B ldr r3, [sp, #12] + 5678 01b6 5F89 ldrh r7, [r3, #10] + 5679 .LVL653: +3474:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow the cluster chain */ + 5680 .loc 1 3474 30 view .LVU1878 + 5681 01b8 9B89 ldrh r3, [r3, #12] +3474:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow the cluster chain */ + 5682 .loc 1 3474 9 view .LVU1879 + 5683 01ba 03FB07F7 mul r7, r3, r7 + 5684 .LVL654: +3475:Middlewares/Third_Party/FatFs/src/ff.c **** for (ofs = fp->obj.objsize; res == FR_OK && ofs > bcs; ofs -= bcs) { + 5685 .loc 1 3475 5 is_stmt 1 view .LVU1880 +3475:Middlewares/Third_Party/FatFs/src/ff.c **** for (ofs = fp->obj.objsize; res == FR_OK && ofs > bcs; ofs -= bcs) { + 5686 .loc 1 3475 10 is_stmt 0 view .LVU1881 + 5687 01be B168 ldr r1, [r6, #8] + 5688 .LVL655: +3476:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&fp->obj, clst); + 5689 .loc 1 3476 5 is_stmt 1 view .LVU1882 +3476:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&fp->obj, clst); + 5690 .loc 1 3476 5 is_stmt 0 view .LVU1883 + 5691 01c0 05E0 b .L398 + 5692 .LVL656: + 5693 .L408: +3414:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 5694 .loc 1 3414 10 view .LVU1884 + 5695 01c2 0424 movs r4, #4 + 5696 .LVL657: +3414:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 5697 .loc 1 3414 10 view .LVU1885 + 5698 01c4 CDE7 b .L396 + 5699 .LVL658: + 5700 .L399: +3479:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5701 .loc 1 3479 6 is_stmt 1 view .LVU1886 +3479:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5702 .loc 1 3479 9 is_stmt 0 view .LVU1887 + 5703 01c6 B1F1FF3F cmp r1, #-1 + 5704 01ca 0FD0 beq .L419 + 5705 .LVL659: + 5706 .L400: +3476:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&fp->obj, clst); + 5707 .loc 1 3476 60 is_stmt 1 discriminator 2 view .LVU1888 +3476:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&fp->obj, clst); + 5708 .loc 1 3476 64 is_stmt 0 discriminator 2 view .LVU1889 + 5709 01cc ED1B subs r5, r5, r7 + 5710 .LVL660: + 5711 .L398: + ARM GAS /tmp/cc5lWXRL.s page 232 + + +3476:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&fp->obj, clst); + 5712 .loc 1 3476 33 is_stmt 1 discriminator 1 view .LVU1890 +3476:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&fp->obj, clst); + 5713 .loc 1 3476 46 is_stmt 0 discriminator 1 view .LVU1891 + 5714 01ce B4FA84F3 clz r3, r4 + 5715 01d2 5B09 lsrs r3, r3, #5 + 5716 01d4 BD42 cmp r5, r7 + 5717 01d6 98BF it ls + 5718 01d8 0023 movls r3, #0 +3476:Middlewares/Third_Party/FatFs/src/ff.c **** clst = get_fat(&fp->obj, clst); + 5719 .loc 1 3476 5 discriminator 1 view .LVU1892 + 5720 01da 4BB1 cbz r3, .L420 +3477:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1) res = FR_INT_ERR; + 5721 .loc 1 3477 6 is_stmt 1 view .LVU1893 +3477:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1) res = FR_INT_ERR; + 5722 .loc 1 3477 13 is_stmt 0 view .LVU1894 + 5723 01dc 3046 mov r0, r6 + 5724 01de FFF7FEFF bl get_fat + 5725 .LVL661: +3477:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1) res = FR_INT_ERR; + 5726 .loc 1 3477 13 view .LVU1895 + 5727 01e2 0146 mov r1, r0 + 5728 .LVL662: +3478:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) res = FR_DISK_ERR; + 5729 .loc 1 3478 6 is_stmt 1 view .LVU1896 +3478:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) res = FR_DISK_ERR; + 5730 .loc 1 3478 9 is_stmt 0 view .LVU1897 + 5731 01e4 0128 cmp r0, #1 + 5732 01e6 EED8 bhi .L399 +3478:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) res = FR_DISK_ERR; + 5733 .loc 1 3478 25 view .LVU1898 + 5734 01e8 0224 movs r4, #2 + 5735 .LVL663: +3478:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) res = FR_DISK_ERR; + 5736 .loc 1 3478 25 view .LVU1899 + 5737 01ea ECE7 b .L399 + 5738 .LVL664: + 5739 .L419: +3479:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5740 .loc 1 3479 34 view .LVU1900 + 5741 01ec 0124 movs r4, #1 + 5742 .LVL665: +3479:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5743 .loc 1 3479 34 view .LVU1901 + 5744 01ee EDE7 b .L400 + 5745 .LVL666: + 5746 .L420: +3481:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && ofs % SS(fs)) { /* Fill sector buffer if not on the sector boundary */ + 5747 .loc 1 3481 5 is_stmt 1 view .LVU1902 +3481:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && ofs % SS(fs)) { /* Fill sector buffer if not on the sector boundary */ + 5748 .loc 1 3481 15 is_stmt 0 view .LVU1903 + 5749 01f0 F161 str r1, [r6, #28] +3482:Middlewares/Third_Party/FatFs/src/ff.c **** if ((sc = clust2sect(fs, clst)) == 0) { + 5750 .loc 1 3482 5 is_stmt 1 view .LVU1904 +3482:Middlewares/Third_Party/FatFs/src/ff.c **** if ((sc = clust2sect(fs, clst)) == 0) { + 5751 .loc 1 3482 8 is_stmt 0 view .LVU1905 + 5752 01f2 002C cmp r4, #0 + ARM GAS /tmp/cc5lWXRL.s page 233 + + + 5753 01f4 7FF416AF bne .L389 +3482:Middlewares/Third_Party/FatFs/src/ff.c **** if ((sc = clust2sect(fs, clst)) == 0) { + 5754 .loc 1 3482 31 discriminator 1 view .LVU1906 + 5755 01f8 039F ldr r7, [sp, #12] + 5756 .LVL667: +3482:Middlewares/Third_Party/FatFs/src/ff.c **** if ((sc = clust2sect(fs, clst)) == 0) { + 5757 .loc 1 3482 31 discriminator 1 view .LVU1907 + 5758 01fa B7F80C90 ldrh r9, [r7, #12] +3482:Middlewares/Third_Party/FatFs/src/ff.c **** if ((sc = clust2sect(fs, clst)) == 0) { + 5759 .loc 1 3482 29 discriminator 1 view .LVU1908 + 5760 01fe B5FBF9F3 udiv r3, r5, r9 + 5761 0202 09FB1353 mls r3, r9, r3, r5 +3482:Middlewares/Third_Party/FatFs/src/ff.c **** if ((sc = clust2sect(fs, clst)) == 0) { + 5762 .loc 1 3482 22 discriminator 1 view .LVU1909 + 5763 0206 002B cmp r3, #0 + 5764 0208 3FF40CAF beq .L389 +3483:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INT_ERR; + 5765 .loc 1 3483 6 is_stmt 1 view .LVU1910 +3483:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INT_ERR; + 5766 .loc 1 3483 16 is_stmt 0 view .LVU1911 + 5767 020c 3846 mov r0, r7 + 5768 020e FFF7FEFF bl clust2sect + 5769 .LVL668: +3483:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INT_ERR; + 5770 .loc 1 3483 9 view .LVU1912 + 5771 0212 08B9 cbnz r0, .L421 +3484:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 5772 .loc 1 3484 11 view .LVU1913 + 5773 0214 0224 movs r4, #2 + 5774 .LVL669: +3484:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 5775 .loc 1 3484 11 view .LVU1914 + 5776 0216 06E7 b .L402 + 5777 .LVL670: + 5778 .L421: +3486:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 5779 .loc 1 3486 7 is_stmt 1 view .LVU1915 +3486:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 5780 .loc 1 3486 23 is_stmt 0 view .LVU1916 + 5781 0218 B5FBF9F2 udiv r2, r5, r9 +3486:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 5782 .loc 1 3486 21 view .LVU1917 + 5783 021c 0244 add r2, r2, r0 +3486:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 5784 .loc 1 3486 16 view .LVU1918 + 5785 021e 3262 str r2, [r6, #32] +3488:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5786 .loc 1 3488 7 is_stmt 1 view .LVU1919 +3488:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5787 .loc 1 3488 11 is_stmt 0 view .LVU1920 + 5788 0220 0123 movs r3, #1 + 5789 0222 4146 mov r1, r8 + 5790 0224 7878 ldrb r0, [r7, #1] @ zero_extendqisi2 + 5791 .LVL671: +3488:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5792 .loc 1 3488 11 view .LVU1921 + 5793 0226 FFF7FEFF bl disk_read + ARM GAS /tmp/cc5lWXRL.s page 234 + + + 5794 .LVL672: +3488:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5795 .loc 1 3488 10 view .LVU1922 + 5796 022a 0028 cmp r0, #0 + 5797 022c 3FF4FAAE beq .L389 +3488:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5798 .loc 1 3488 67 view .LVU1923 + 5799 0230 0124 movs r4, #1 + 5800 .LVL673: +3488:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5801 .loc 1 3488 67 view .LVU1924 + 5802 0232 F8E6 b .L402 + 5803 .LVL674: + 5804 .L410: +3429:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5805 .loc 1 3429 29 view .LVU1925 + 5806 0234 0224 movs r4, #2 + 5807 .LVL675: +3429:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 5808 .loc 1 3429 29 view .LVU1926 + 5809 0236 F5E6 b .L389 + 5810 .LVL676: + 5811 .L403: +3324:Middlewares/Third_Party/FatFs/src/ff.c **** + 5812 .loc 1 3324 18 view .LVU1927 + 5813 0238 0924 movs r4, #9 + 5814 023a F6E6 b .L388 + 5815 .cfi_endproc + 5816 .LFE1222: + 5818 .section .text.f_read,"ax",%progbits + 5819 .align 1 + 5820 .global f_read + 5821 .syntax unified + 5822 .thumb + 5823 .thumb_func + 5824 .fpu fpv5-d16 + 5826 f_read: + 5827 .LVL677: + 5828 .LFB1223: +3517:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 5829 .loc 1 3517 1 is_stmt 1 view -0 + 5830 .cfi_startproc + 5831 @ args = 0, pretend = 0, frame = 16 + 5832 @ frame_needed = 0, uses_anonymous_args = 0 +3517:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 5833 .loc 1 3517 1 is_stmt 0 view .LVU1929 + 5834 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 5835 .LCFI46: + 5836 .cfi_def_cfa_offset 36 + 5837 .cfi_offset 4, -36 + 5838 .cfi_offset 5, -32 + 5839 .cfi_offset 6, -28 + 5840 .cfi_offset 7, -24 + 5841 .cfi_offset 8, -20 + 5842 .cfi_offset 9, -16 + 5843 .cfi_offset 10, -12 + 5844 .cfi_offset 11, -8 + ARM GAS /tmp/cc5lWXRL.s page 235 + + + 5845 .cfi_offset 14, -4 + 5846 0004 85B0 sub sp, sp, #20 + 5847 .LCFI47: + 5848 .cfi_def_cfa_offset 56 + 5849 0006 0446 mov r4, r0 + 5850 0008 0F46 mov r7, r1 + 5851 000a 1546 mov r5, r2 + 5852 000c 9846 mov r8, r3 +3518:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 5853 .loc 1 3518 2 is_stmt 1 view .LVU1930 +3519:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, sect; + 5854 .loc 1 3519 2 view .LVU1931 +3520:Middlewares/Third_Party/FatFs/src/ff.c **** FSIZE_t remain; + 5855 .loc 1 3520 2 view .LVU1932 +3521:Middlewares/Third_Party/FatFs/src/ff.c **** UINT rcnt, cc, csect; + 5856 .loc 1 3521 2 view .LVU1933 +3522:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *rbuff = (BYTE*)buff; + 5857 .loc 1 3522 2 view .LVU1934 +3523:Middlewares/Third_Party/FatFs/src/ff.c **** + 5858 .loc 1 3523 2 view .LVU1935 + 5859 .LVL678: +3526:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ + 5860 .loc 1 3526 2 view .LVU1936 +3526:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ + 5861 .loc 1 3526 6 is_stmt 0 view .LVU1937 + 5862 000e 0023 movs r3, #0 + 5863 .LVL679: +3526:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ + 5864 .loc 1 3526 6 view .LVU1938 + 5865 0010 C8F80030 str r3, [r8] +3527:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + 5866 .loc 1 3527 2 is_stmt 1 view .LVU1939 +3527:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + 5867 .loc 1 3527 8 is_stmt 0 view .LVU1940 + 5868 0014 03A9 add r1, sp, #12 + 5869 .LVL680: +3527:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + 5870 .loc 1 3527 8 view .LVU1941 + 5871 0016 FFF7FEFF bl validate + 5872 .LVL681: +3528:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 5873 .loc 1 3528 2 is_stmt 1 view .LVU1942 +3528:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 5874 .loc 1 3528 5 is_stmt 0 view .LVU1943 + 5875 001a 0190 str r0, [sp, #4] + 5876 001c 0028 cmp r0, #0 + 5877 001e 40F0B980 bne .L425 +3528:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 5878 .loc 1 3528 27 discriminator 2 view .LVU1944 + 5879 0022 637D ldrb r3, [r4, #21] @ zero_extendqisi2 + 5880 0024 0193 str r3, [sp, #4] + 5881 .LVL682: +3528:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_READ)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 5882 .loc 1 3528 19 discriminator 2 view .LVU1945 + 5883 0026 002B cmp r3, #0 + 5884 0028 40F0B480 bne .L425 +3529:Middlewares/Third_Party/FatFs/src/ff.c **** remain = fp->obj.objsize - fp->fptr; + ARM GAS /tmp/cc5lWXRL.s page 236 + + + 5885 .loc 1 3529 2 is_stmt 1 view .LVU1946 +3529:Middlewares/Third_Party/FatFs/src/ff.c **** remain = fp->obj.objsize - fp->fptr; + 5886 .loc 1 3529 10 is_stmt 0 view .LVU1947 + 5887 002c 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 5888 .LVL683: +3529:Middlewares/Third_Party/FatFs/src/ff.c **** remain = fp->obj.objsize - fp->fptr; + 5889 .loc 1 3529 5 view .LVU1948 + 5890 002e 13F0010F tst r3, #1 + 5891 0032 00F0CE80 beq .L447 +3530:Middlewares/Third_Party/FatFs/src/ff.c **** if (btr > remain) btr = (UINT)remain; /* Truncate btr by remaining bytes */ + 5892 .loc 1 3530 2 is_stmt 1 view .LVU1949 +3530:Middlewares/Third_Party/FatFs/src/ff.c **** if (btr > remain) btr = (UINT)remain; /* Truncate btr by remaining bytes */ + 5893 .loc 1 3530 18 is_stmt 0 view .LVU1950 + 5894 0036 E668 ldr r6, [r4, #12] +3530:Middlewares/Third_Party/FatFs/src/ff.c **** if (btr > remain) btr = (UINT)remain; /* Truncate btr by remaining bytes */ + 5895 .loc 1 3530 31 view .LVU1951 + 5896 0038 A369 ldr r3, [r4, #24] +3530:Middlewares/Third_Party/FatFs/src/ff.c **** if (btr > remain) btr = (UINT)remain; /* Truncate btr by remaining bytes */ + 5897 .loc 1 3530 9 view .LVU1952 + 5898 003a F61A subs r6, r6, r3 + 5899 .LVL684: +3531:Middlewares/Third_Party/FatFs/src/ff.c **** + 5900 .loc 1 3531 2 is_stmt 1 view .LVU1953 +3531:Middlewares/Third_Party/FatFs/src/ff.c **** + 5901 .loc 1 3531 5 is_stmt 0 view .LVU1954 + 5902 003c AE42 cmp r6, r5 + 5903 003e 67D3 bcc .L445 + 5904 0040 2E46 mov r6, r5 + 5905 .LVL685: +3531:Middlewares/Third_Party/FatFs/src/ff.c **** + 5906 .loc 1 3531 5 view .LVU1955 + 5907 0042 65E0 b .L445 + 5908 .LVL686: + 5909 .L430: +3542:Middlewares/Third_Party/FatFs/src/ff.c **** clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ + 5910 .loc 1 3542 6 is_stmt 1 view .LVU1956 +3542:Middlewares/Third_Party/FatFs/src/ff.c **** clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ + 5911 .loc 1 3542 12 is_stmt 0 view .LVU1957 + 5912 0044 E36A ldr r3, [r4, #44] +3542:Middlewares/Third_Party/FatFs/src/ff.c **** clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ + 5913 .loc 1 3542 9 view .LVU1958 + 5914 0046 1BB1 cbz r3, .L432 +3543:Middlewares/Third_Party/FatFs/src/ff.c **** } else + 5915 .loc 1 3543 7 is_stmt 1 view .LVU1959 +3543:Middlewares/Third_Party/FatFs/src/ff.c **** } else + 5916 .loc 1 3543 14 is_stmt 0 view .LVU1960 + 5917 0048 2046 mov r0, r4 + 5918 004a FFF7FEFF bl clmt_clust + 5919 .LVL687: +3543:Middlewares/Third_Party/FatFs/src/ff.c **** } else + 5920 .loc 1 3543 14 view .LVU1961 + 5921 004e 73E0 b .L431 + 5922 .LVL688: + 5923 .L432: +3547:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5924 .loc 1 3547 7 is_stmt 1 view .LVU1962 +3547:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 237 + + + 5925 .loc 1 3547 14 is_stmt 0 view .LVU1963 + 5926 0050 E169 ldr r1, [r4, #28] + 5927 0052 2046 mov r0, r4 + 5928 0054 FFF7FEFF bl get_fat + 5929 .LVL689: +3547:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5930 .loc 1 3547 14 view .LVU1964 + 5931 0058 6EE0 b .L431 + 5932 .L454: +3550:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 5933 .loc 1 3550 19 is_stmt 1 discriminator 1 view .LVU1965 + 5934 005a 4FF0020A mov r10, #2 + 5935 005e 84F815A0 strb r10, [r4, #21] +3550:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 5936 .loc 1 3550 19 discriminator 1 view .LVU1966 + 5937 0062 CDF804A0 str r10, [sp, #4] + 5938 .LVL690: +3550:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 5939 .loc 1 3550 19 is_stmt 0 discriminator 1 view .LVU1967 + 5940 0066 95E0 b .L425 + 5941 .LVL691: + 5942 .L455: +3551:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 5943 .loc 1 3551 29 is_stmt 1 discriminator 1 view .LVU1968 + 5944 0068 4FF0010A mov r10, #1 + 5945 006c 84F815A0 strb r10, [r4, #21] +3551:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 5946 .loc 1 3551 29 discriminator 1 view .LVU1969 + 5947 0070 CDF804A0 str r10, [sp, #4] + 5948 .LVL692: +3551:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 5949 .loc 1 3551 29 is_stmt 0 discriminator 1 view .LVU1970 + 5950 0074 8EE0 b .L425 + 5951 .LVL693: + 5952 .L456: +3555:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 5953 .loc 1 3555 15 is_stmt 1 discriminator 1 view .LVU1971 + 5954 0076 4FF0020A mov r10, #2 + 5955 007a 84F815A0 strb r10, [r4, #21] +3555:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 5956 .loc 1 3555 15 discriminator 1 view .LVU1972 + 5957 007e CDF804A0 str r10, [sp, #4] + 5958 .LVL694: +3555:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 5959 .loc 1 3555 15 is_stmt 0 discriminator 1 view .LVU1973 + 5960 0082 87E0 b .L425 + 5961 .LVL695: + 5962 .L438: +3562:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it + 5963 .loc 1 3562 78 is_stmt 1 discriminator 2 view .LVU1974 +3569:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(rbuff + ((fp->sect - sect) * SS(fs)), fp->buf, SS(fs)); + 5964 .loc 1 3569 5 discriminator 2 view .LVU1975 +3569:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(rbuff + ((fp->sect - sect) * SS(fs)), fp->buf, SS(fs)); + 5965 .loc 1 3569 9 is_stmt 0 discriminator 2 view .LVU1976 + 5966 0084 94F91430 ldrsb r3, [r4, #20] +3569:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(rbuff + ((fp->sect - sect) * SS(fs)), fp->buf, SS(fs)); + 5967 .loc 1 3569 8 discriminator 2 view .LVU1977 + ARM GAS /tmp/cc5lWXRL.s page 238 + + + 5968 0088 002B cmp r3, #0 + 5969 008a 04DB blt .L451 + 5970 .L439: +3574:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 5971 .loc 1 3574 5 is_stmt 1 view .LVU1978 +3574:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 5972 .loc 1 3574 12 is_stmt 0 view .LVU1979 + 5973 008c 039B ldr r3, [sp, #12] + 5974 008e 9D89 ldrh r5, [r3, #12] + 5975 .LVL696: +3574:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 5976 .loc 1 3574 10 view .LVU1980 + 5977 0090 0AFB05F5 mul r5, r10, r5 + 5978 .LVL697: +3575:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5979 .loc 1 3575 5 is_stmt 1 view .LVU1981 + 5980 0094 32E0 b .L440 + 5981 .LVL698: + 5982 .L451: +3569:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(rbuff + ((fp->sect - sect) * SS(fs)), fp->buf, SS(fs)); + 5983 .loc 1 3569 36 is_stmt 0 discriminator 1 view .LVU1982 + 5984 0096 206A ldr r0, [r4, #32] +3569:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(rbuff + ((fp->sect - sect) * SS(fs)), fp->buf, SS(fs)); + 5985 .loc 1 3569 43 discriminator 1 view .LVU1983 + 5986 0098 A0EB0900 sub r0, r0, r9 +3569:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(rbuff + ((fp->sect - sect) * SS(fs)), fp->buf, SS(fs)); + 5987 .loc 1 3569 31 discriminator 1 view .LVU1984 + 5988 009c 5045 cmp r0, r10 + 5989 009e F5D2 bcs .L439 +3570:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5990 .loc 1 3570 6 is_stmt 1 view .LVU1985 +3570:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5991 .loc 1 3570 43 is_stmt 0 view .LVU1986 + 5992 00a0 039B ldr r3, [sp, #12] + 5993 00a2 9A89 ldrh r2, [r3, #12] +3570:Middlewares/Third_Party/FatFs/src/ff.c **** } + 5994 .loc 1 3570 6 view .LVU1987 + 5995 00a4 04F13001 add r1, r4, #48 + 5996 00a8 02FB0070 mla r0, r2, r0, r7 + 5997 00ac FFF7FEFF bl mem_cpy + 5998 .LVL699: + 5999 00b0 ECE7 b .L439 + 6000 .L436: +3578:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 6001 .loc 1 3578 4 is_stmt 1 view .LVU1988 +3578:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 6002 .loc 1 3578 10 is_stmt 0 view .LVU1989 + 6003 00b2 226A ldr r2, [r4, #32] +3578:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 6004 .loc 1 3578 7 view .LVU1990 + 6005 00b4 4A45 cmp r2, r9 + 6006 00b6 0DD0 beq .L441 +3580:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 6007 .loc 1 3580 5 is_stmt 1 view .LVU1991 +3580:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 6008 .loc 1 3580 9 is_stmt 0 view .LVU1992 + 6009 00b8 94F91430 ldrsb r3, [r4, #20] + ARM GAS /tmp/cc5lWXRL.s page 239 + + +3580:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 6010 .loc 1 3580 8 view .LVU1993 + 6011 00bc 002B cmp r3, #0 + 6012 00be 6DDB blt .L452 + 6013 .L442: +3585:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6014 .loc 1 3585 5 is_stmt 1 view .LVU1994 +3585:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6015 .loc 1 3585 9 is_stmt 0 view .LVU1995 + 6016 00c0 0123 movs r3, #1 + 6017 00c2 4A46 mov r2, r9 + 6018 00c4 04F13001 add r1, r4, #48 + 6019 00c8 0398 ldr r0, [sp, #12] + 6020 00ca 4078 ldrb r0, [r0, #1] @ zero_extendqisi2 + 6021 00cc FFF7FEFF bl disk_read + 6022 .LVL700: +3585:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6023 .loc 1 3585 8 view .LVU1996 + 6024 00d0 0028 cmp r0, #0 + 6025 00d2 77D1 bne .L453 + 6026 .L441: +3585:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6027 .loc 1 3585 79 is_stmt 1 discriminator 2 view .LVU1997 +3588:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6028 .loc 1 3588 4 discriminator 2 view .LVU1998 +3588:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6029 .loc 1 3588 13 is_stmt 0 discriminator 2 view .LVU1999 + 6030 00d4 C4F82090 str r9, [r4, #32] + 6031 .LVL701: + 6032 .L428: +3590:Middlewares/Third_Party/FatFs/src/ff.c **** if (rcnt > btr) rcnt = btr; /* Clip it by btr if needed */ + 6033 .loc 1 3590 3 is_stmt 1 view .LVU2000 +3590:Middlewares/Third_Party/FatFs/src/ff.c **** if (rcnt > btr) rcnt = btr; /* Clip it by btr if needed */ + 6034 .loc 1 3590 10 is_stmt 0 view .LVU2001 + 6035 00d8 039B ldr r3, [sp, #12] + 6036 00da 9D89 ldrh r5, [r3, #12] +3590:Middlewares/Third_Party/FatFs/src/ff.c **** if (rcnt > btr) rcnt = btr; /* Clip it by btr if needed */ + 6037 .loc 1 3590 27 view .LVU2002 + 6038 00dc A369 ldr r3, [r4, #24] +3590:Middlewares/Third_Party/FatFs/src/ff.c **** if (rcnt > btr) rcnt = btr; /* Clip it by btr if needed */ + 6039 .loc 1 3590 34 view .LVU2003 + 6040 00de B3FBF5F1 udiv r1, r3, r5 + 6041 00e2 05FB1133 mls r3, r5, r1, r3 +3590:Middlewares/Third_Party/FatFs/src/ff.c **** if (rcnt > btr) rcnt = btr; /* Clip it by btr if needed */ + 6042 .loc 1 3590 8 view .LVU2004 + 6043 00e6 ED1A subs r5, r5, r3 + 6044 .LVL702: +3591:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY + 6045 .loc 1 3591 3 is_stmt 1 view .LVU2005 +3591:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY + 6046 .loc 1 3591 6 is_stmt 0 view .LVU2006 + 6047 00e8 AE42 cmp r6, r5 + 6048 00ea 00D2 bcs .L444 +3591:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY + 6049 .loc 1 3591 24 view .LVU2007 + 6050 00ec 3546 mov r5, r6 + 6051 .LVL703: + ARM GAS /tmp/cc5lWXRL.s page 240 + + + 6052 .L444: +3596:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 6053 .loc 1 3596 3 is_stmt 1 view .LVU2008 +3596:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 6054 .loc 1 3596 18 is_stmt 0 view .LVU2009 + 6055 00ee 04F13001 add r1, r4, #48 +3596:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 6056 .loc 1 3596 3 view .LVU2010 + 6057 00f2 2A46 mov r2, r5 + 6058 00f4 1944 add r1, r1, r3 + 6059 00f6 3846 mov r0, r7 + 6060 00f8 FFF7FEFF bl mem_cpy + 6061 .LVL704: + 6062 .L440: +3534:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6063 .loc 1 3534 3 is_stmt 1 view .LVU2011 +3534:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6064 .loc 1 3534 9 is_stmt 0 view .LVU2012 + 6065 00fc 2F44 add r7, r7, r5 + 6066 .LVL705: +3534:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6067 .loc 1 3534 27 view .LVU2013 + 6068 00fe A369 ldr r3, [r4, #24] + 6069 0100 2B44 add r3, r3, r5 + 6070 0102 A361 str r3, [r4, #24] +3534:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6071 .loc 1 3534 40 view .LVU2014 + 6072 0104 D8F80030 ldr r3, [r8] + 6073 0108 2B44 add r3, r3, r5 + 6074 010a C8F80030 str r3, [r8] +3534:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6075 .loc 1 3534 53 view .LVU2015 + 6076 010e 761B subs r6, r6, r5 + 6077 .LVL706: + 6078 .L445: +3533:Middlewares/Third_Party/FatFs/src/ff.c **** rbuff += rcnt, fp->fptr += rcnt, *br += rcnt, btr -= rcnt) { + 6079 .loc 1 3533 11 is_stmt 1 view .LVU2016 +3533:Middlewares/Third_Party/FatFs/src/ff.c **** rbuff += rcnt, fp->fptr += rcnt, *br += rcnt, btr -= rcnt) { + 6080 .loc 1 3533 2 is_stmt 0 view .LVU2017 + 6081 0110 002E cmp r6, #0 + 6082 0112 3FD0 beq .L425 +3535:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ + 6083 .loc 1 3535 3 is_stmt 1 view .LVU2018 +3535:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ + 6084 .loc 1 3535 9 is_stmt 0 view .LVU2019 + 6085 0114 A169 ldr r1, [r4, #24] +3535:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ + 6086 .loc 1 3535 18 view .LVU2020 + 6087 0116 039A ldr r2, [sp, #12] + 6088 0118 9589 ldrh r5, [r2, #12] +3535:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ + 6089 .loc 1 3535 16 view .LVU2021 + 6090 011a B1FBF5F3 udiv r3, r1, r5 + 6091 011e 05FB1313 mls r3, r5, r3, r1 +3535:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs) & (fs->csize - 1)); /* Sector offset in the cluster */ + 6092 .loc 1 3535 6 view .LVU2022 + 6093 0122 002B cmp r3, #0 + ARM GAS /tmp/cc5lWXRL.s page 241 + + + 6094 0124 D8D1 bne .L428 +3536:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ + 6095 .loc 1 3536 4 is_stmt 1 view .LVU2023 +3536:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ + 6096 .loc 1 3536 28 is_stmt 0 view .LVU2024 + 6097 0126 B1FBF5F5 udiv r5, r1, r5 +3536:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ + 6098 .loc 1 3536 42 view .LVU2025 + 6099 012a 5389 ldrh r3, [r2, #10] +3536:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ + 6100 .loc 1 3536 50 view .LVU2026 + 6101 012c 013B subs r3, r3, #1 + 6102 .LVL707: +3537:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */ + 6103 .loc 1 3537 4 is_stmt 1 view .LVU2027 +3537:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */ + 6104 .loc 1 3537 7 is_stmt 0 view .LVU2028 + 6105 012e 1D40 ands r5, r5, r3 + 6106 .LVL708: +3537:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */ + 6107 .loc 1 3537 7 view .LVU2029 + 6108 0130 08D1 bne .L429 +3538:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow cluster chain from the origin */ + 6109 .loc 1 3538 5 is_stmt 1 view .LVU2030 +3538:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow cluster chain from the origin */ + 6110 .loc 1 3538 8 is_stmt 0 view .LVU2031 + 6111 0132 0029 cmp r1, #0 + 6112 0134 86D1 bne .L430 +3539:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Middle or end of the file */ + 6113 .loc 1 3539 6 is_stmt 1 view .LVU2032 +3539:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Middle or end of the file */ + 6114 .loc 1 3539 11 is_stmt 0 view .LVU2033 + 6115 0136 A068 ldr r0, [r4, #8] + 6116 .LVL709: + 6117 .L431: +3550:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 6118 .loc 1 3550 5 is_stmt 1 view .LVU2034 +3550:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 6119 .loc 1 3550 8 is_stmt 0 view .LVU2035 + 6120 0138 0128 cmp r0, #1 + 6121 013a 8ED9 bls .L454 +3550:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 6122 .loc 1 3550 40 is_stmt 1 discriminator 2 view .LVU2036 +3551:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 6123 .loc 1 3551 5 discriminator 2 view .LVU2037 +3551:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 6124 .loc 1 3551 8 is_stmt 0 discriminator 2 view .LVU2038 + 6125 013c B0F1FF3F cmp r0, #-1 + 6126 0140 92D0 beq .L455 +3551:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 6127 .loc 1 3551 51 is_stmt 1 discriminator 2 view .LVU2039 +3552:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6128 .loc 1 3552 5 discriminator 2 view .LVU2040 +3552:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6129 .loc 1 3552 15 is_stmt 0 discriminator 2 view .LVU2041 + 6130 0142 E061 str r0, [r4, #28] + 6131 .LVL710: + ARM GAS /tmp/cc5lWXRL.s page 242 + + + 6132 .L429: +3554:Middlewares/Third_Party/FatFs/src/ff.c **** if (!sect) ABORT(fs, FR_INT_ERR); + 6133 .loc 1 3554 4 is_stmt 1 view .LVU2042 +3554:Middlewares/Third_Party/FatFs/src/ff.c **** if (!sect) ABORT(fs, FR_INT_ERR); + 6134 .loc 1 3554 11 is_stmt 0 view .LVU2043 + 6135 0144 DDF80CB0 ldr fp, [sp, #12] + 6136 0148 E169 ldr r1, [r4, #28] + 6137 014a 5846 mov r0, fp + 6138 014c FFF7FEFF bl clust2sect + 6139 .LVL711: +3555:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 6140 .loc 1 3555 4 is_stmt 1 view .LVU2044 +3555:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 6141 .loc 1 3555 7 is_stmt 0 view .LVU2045 + 6142 0150 8146 mov r9, r0 + 6143 0152 0028 cmp r0, #0 + 6144 0154 8FD0 beq .L456 +3555:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 6145 .loc 1 3555 36 is_stmt 1 discriminator 2 view .LVU2046 +3556:Middlewares/Third_Party/FatFs/src/ff.c **** cc = btr / SS(fs); /* When remaining bytes >= sector size, */ + 6146 .loc 1 3556 4 discriminator 2 view .LVU2047 +3556:Middlewares/Third_Party/FatFs/src/ff.c **** cc = btr / SS(fs); /* When remaining bytes >= sector size, */ + 6147 .loc 1 3556 9 is_stmt 0 discriminator 2 view .LVU2048 + 6148 0156 A944 add r9, r9, r5 + 6149 .LVL712: +3557:Middlewares/Third_Party/FatFs/src/ff.c **** if (cc) { /* Read maximum contiguous sectors directly */ + 6150 .loc 1 3557 4 is_stmt 1 discriminator 2 view .LVU2049 +3557:Middlewares/Third_Party/FatFs/src/ff.c **** if (cc) { /* Read maximum contiguous sectors directly */ + 6151 .loc 1 3557 15 is_stmt 0 discriminator 2 view .LVU2050 + 6152 0158 BBF80C30 ldrh r3, [fp, #12] +3557:Middlewares/Third_Party/FatFs/src/ff.c **** if (cc) { /* Read maximum contiguous sectors directly */ + 6153 .loc 1 3557 7 discriminator 2 view .LVU2051 + 6154 015c B6FBF3FA udiv r10, r6, r3 + 6155 .LVL713: +3558:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect + cc > fs->csize) { /* Clip at cluster boundary */ + 6156 .loc 1 3558 4 is_stmt 1 discriminator 2 view .LVU2052 +3558:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect + cc > fs->csize) { /* Clip at cluster boundary */ + 6157 .loc 1 3558 7 is_stmt 0 discriminator 2 view .LVU2053 + 6158 0160 B342 cmp r3, r6 + 6159 0162 A6D8 bhi .L436 +3559:Middlewares/Third_Party/FatFs/src/ff.c **** cc = fs->csize - csect; + 6160 .loc 1 3559 5 is_stmt 1 view .LVU2054 +3559:Middlewares/Third_Party/FatFs/src/ff.c **** cc = fs->csize - csect; + 6161 .loc 1 3559 15 is_stmt 0 view .LVU2055 + 6162 0164 05EB0A03 add r3, r5, r10 +3559:Middlewares/Third_Party/FatFs/src/ff.c **** cc = fs->csize - csect; + 6163 .loc 1 3559 24 view .LVU2056 + 6164 0168 BBF80A20 ldrh r2, [fp, #10] +3559:Middlewares/Third_Party/FatFs/src/ff.c **** cc = fs->csize - csect; + 6165 .loc 1 3559 8 view .LVU2057 + 6166 016c 9342 cmp r3, r2 + 6167 016e 01D9 bls .L437 +3560:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6168 .loc 1 3560 6 is_stmt 1 view .LVU2058 +3560:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6169 .loc 1 3560 9 is_stmt 0 view .LVU2059 + 6170 0170 A2EB050A sub r10, r2, r5 + ARM GAS /tmp/cc5lWXRL.s page 243 + + + 6171 .LVL714: + 6172 .L437: +3562:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it + 6173 .loc 1 3562 5 is_stmt 1 view .LVU2060 +3562:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it + 6174 .loc 1 3562 9 is_stmt 0 view .LVU2061 + 6175 0174 5346 mov r3, r10 + 6176 0176 4A46 mov r2, r9 + 6177 0178 3946 mov r1, r7 + 6178 017a 9BF80100 ldrb r0, [fp, #1] @ zero_extendqisi2 + 6179 017e FFF7FEFF bl disk_read + 6180 .LVL715: +3562:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it + 6181 .loc 1 3562 8 view .LVU2062 + 6182 0182 0028 cmp r0, #0 + 6183 0184 3FF47EAF beq .L438 +3562:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it + 6184 .loc 1 3562 56 is_stmt 1 discriminator 1 view .LVU2063 + 6185 0188 4FF0010A mov r10, #1 + 6186 .LVL716: +3562:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it + 6187 .loc 1 3562 56 is_stmt 0 discriminator 1 view .LVU2064 + 6188 018c 84F815A0 strb r10, [r4, #21] +3562:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY && _FS_MINIMIZE <= 2 /* Replace one of the read sectors with cached data if it + 6189 .loc 1 3562 56 is_stmt 1 discriminator 1 view .LVU2065 + 6190 0190 CDF804A0 str r10, [sp, #4] + 6191 .LVL717: + 6192 .L425: +3601:Middlewares/Third_Party/FatFs/src/ff.c **** + 6193 .loc 1 3601 1 is_stmt 0 view .LVU2066 + 6194 0194 0198 ldr r0, [sp, #4] + 6195 0196 05B0 add sp, sp, #20 + 6196 .LCFI48: + 6197 .cfi_remember_state + 6198 .cfi_def_cfa_offset 36 + 6199 @ sp needed + 6200 0198 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 6201 .LVL718: + 6202 .L452: + 6203 .LCFI49: + 6204 .cfi_restore_state +3581:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6205 .loc 1 3581 6 is_stmt 1 view .LVU2067 +3581:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6206 .loc 1 3581 10 is_stmt 0 view .LVU2068 + 6207 019c 0123 movs r3, #1 + 6208 019e 04F13001 add r1, r4, #48 + 6209 01a2 9BF80100 ldrb r0, [fp, #1] @ zero_extendqisi2 + 6210 01a6 FFF7FEFF bl disk_write + 6211 .LVL719: +3581:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6212 .loc 1 3581 9 view .LVU2069 + 6213 01aa 20B9 cbnz r0, .L457 +3581:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6214 .loc 1 3581 85 is_stmt 1 discriminator 2 view .LVU2070 +3582:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6215 .loc 1 3582 6 discriminator 2 view .LVU2071 + ARM GAS /tmp/cc5lWXRL.s page 244 + + +3582:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6216 .loc 1 3582 15 is_stmt 0 discriminator 2 view .LVU2072 + 6217 01ac 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 6218 01ae 03F07F03 and r3, r3, #127 + 6219 01b2 2375 strb r3, [r4, #20] + 6220 01b4 84E7 b .L442 + 6221 .L457: +3581:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6222 .loc 1 3581 63 is_stmt 1 discriminator 1 view .LVU2073 + 6223 01b6 4FF0010A mov r10, #1 + 6224 .LVL720: +3581:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6225 .loc 1 3581 63 is_stmt 0 discriminator 1 view .LVU2074 + 6226 01ba 84F815A0 strb r10, [r4, #21] +3581:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6227 .loc 1 3581 63 is_stmt 1 discriminator 1 view .LVU2075 + 6228 01be CDF804A0 str r10, [sp, #4] + 6229 .LVL721: +3581:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6230 .loc 1 3581 63 is_stmt 0 discriminator 1 view .LVU2076 + 6231 01c2 E7E7 b .L425 + 6232 .LVL722: + 6233 .L453: +3585:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6234 .loc 1 3585 57 is_stmt 1 discriminator 1 view .LVU2077 + 6235 01c4 4FF0010A mov r10, #1 + 6236 .LVL723: +3585:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6237 .loc 1 3585 57 is_stmt 0 discriminator 1 view .LVU2078 + 6238 01c8 84F815A0 strb r10, [r4, #21] +3585:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6239 .loc 1 3585 57 is_stmt 1 discriminator 1 view .LVU2079 + 6240 01cc CDF804A0 str r10, [sp, #4] + 6241 .LVL724: +3585:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6242 .loc 1 3585 57 is_stmt 0 discriminator 1 view .LVU2080 + 6243 01d0 E0E7 b .L425 + 6244 .LVL725: + 6245 .L447: +3529:Middlewares/Third_Party/FatFs/src/ff.c **** remain = fp->obj.objsize - fp->fptr; + 6246 .loc 1 3529 29 view .LVU2081 + 6247 01d2 0723 movs r3, #7 + 6248 01d4 0193 str r3, [sp, #4] + 6249 .LVL726: +3529:Middlewares/Third_Party/FatFs/src/ff.c **** remain = fp->obj.objsize - fp->fptr; + 6250 .loc 1 3529 29 view .LVU2082 + 6251 01d6 DDE7 b .L425 + 6252 .cfi_endproc + 6253 .LFE1223: + 6255 .section .text.f_write,"ax",%progbits + 6256 .align 1 + 6257 .global f_write + 6258 .syntax unified + 6259 .thumb + 6260 .thumb_func + 6261 .fpu fpv5-d16 + 6263 f_write: + ARM GAS /tmp/cc5lWXRL.s page 245 + + + 6264 .LVL727: + 6265 .LFB1224: +3617:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 6266 .loc 1 3617 1 is_stmt 1 view -0 + 6267 .cfi_startproc + 6268 @ args = 0, pretend = 0, frame = 16 + 6269 @ frame_needed = 0, uses_anonymous_args = 0 +3617:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 6270 .loc 1 3617 1 is_stmt 0 view .LVU2084 + 6271 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 6272 .LCFI50: + 6273 .cfi_def_cfa_offset 36 + 6274 .cfi_offset 4, -36 + 6275 .cfi_offset 5, -32 + 6276 .cfi_offset 6, -28 + 6277 .cfi_offset 7, -24 + 6278 .cfi_offset 8, -20 + 6279 .cfi_offset 9, -16 + 6280 .cfi_offset 10, -12 + 6281 .cfi_offset 11, -8 + 6282 .cfi_offset 14, -4 + 6283 0004 85B0 sub sp, sp, #20 + 6284 .LCFI51: + 6285 .cfi_def_cfa_offset 56 + 6286 0006 0446 mov r4, r0 + 6287 0008 0F46 mov r7, r1 + 6288 000a 1546 mov r5, r2 + 6289 000c 9846 mov r8, r3 +3618:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 6290 .loc 1 3618 2 is_stmt 1 view .LVU2085 +3619:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, sect; + 6291 .loc 1 3619 2 view .LVU2086 +3620:Middlewares/Third_Party/FatFs/src/ff.c **** UINT wcnt, cc, csect; + 6292 .loc 1 3620 2 view .LVU2087 +3621:Middlewares/Third_Party/FatFs/src/ff.c **** const BYTE *wbuff = (const BYTE*)buff; + 6293 .loc 1 3621 2 view .LVU2088 +3622:Middlewares/Third_Party/FatFs/src/ff.c **** + 6294 .loc 1 3622 2 view .LVU2089 + 6295 .LVL728: +3625:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ + 6296 .loc 1 3625 2 view .LVU2090 +3625:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ + 6297 .loc 1 3625 6 is_stmt 0 view .LVU2091 + 6298 000e 0023 movs r3, #0 + 6299 .LVL729: +3625:Middlewares/Third_Party/FatFs/src/ff.c **** res = validate(&fp->obj, &fs); /* Check validity of the file object */ + 6300 .loc 1 3625 6 view .LVU2092 + 6301 0010 C8F80030 str r3, [r8] +3626:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + 6302 .loc 1 3626 2 is_stmt 1 view .LVU2093 +3626:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + 6303 .loc 1 3626 8 is_stmt 0 view .LVU2094 + 6304 0014 03A9 add r1, sp, #12 + 6305 .LVL730: +3626:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); /* Check validity */ + 6306 .loc 1 3626 8 view .LVU2095 + 6307 0016 FFF7FEFF bl validate + ARM GAS /tmp/cc5lWXRL.s page 246 + + + 6308 .LVL731: +3627:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 6309 .loc 1 3627 2 is_stmt 1 view .LVU2096 +3627:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 6310 .loc 1 3627 5 is_stmt 0 view .LVU2097 + 6311 001a 0190 str r0, [sp, #4] + 6312 001c 0028 cmp r0, #0 + 6313 001e 4AD1 bne .L461 +3627:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 6314 .loc 1 3627 27 discriminator 2 view .LVU2098 + 6315 0020 637D ldrb r3, [r4, #21] @ zero_extendqisi2 + 6316 0022 0193 str r3, [sp, #4] + 6317 .LVL732: +3627:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 6318 .loc 1 3627 19 discriminator 2 view .LVU2099 + 6319 0024 002B cmp r3, #0 + 6320 0026 46D1 bne .L461 +3628:Middlewares/Third_Party/FatFs/src/ff.c **** + 6321 .loc 1 3628 2 is_stmt 1 view .LVU2100 +3628:Middlewares/Third_Party/FatFs/src/ff.c **** + 6322 .loc 1 3628 10 is_stmt 0 view .LVU2101 + 6323 0028 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 6324 .LVL733: +3628:Middlewares/Third_Party/FatFs/src/ff.c **** + 6325 .loc 1 3628 5 view .LVU2102 + 6326 002a 13F0020F tst r3, #2 + 6327 002e 00F0EC80 beq .L483 +3631:Middlewares/Third_Party/FatFs/src/ff.c **** btw = (UINT)(0xFFFFFFFF - (DWORD)fp->fptr); + 6328 .loc 1 3631 2 is_stmt 1 view .LVU2103 +3631:Middlewares/Third_Party/FatFs/src/ff.c **** btw = (UINT)(0xFFFFFFFF - (DWORD)fp->fptr); + 6329 .loc 1 3631 59 is_stmt 0 view .LVU2104 + 6330 0032 A369 ldr r3, [r4, #24] +3631:Middlewares/Third_Party/FatFs/src/ff.c **** btw = (UINT)(0xFFFFFFFF - (DWORD)fp->fptr); + 6331 .loc 1 3631 5 view .LVU2105 + 6332 0034 EB42 cmn r3, r5 + 6333 0036 C0F0B680 bcc .L481 +3632:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6334 .loc 1 3632 3 is_stmt 1 view .LVU2106 +3632:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6335 .loc 1 3632 7 is_stmt 0 view .LVU2107 + 6336 003a DD43 mvns r5, r3 + 6337 .LVL734: +3632:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6338 .loc 1 3632 7 view .LVU2108 + 6339 003c B3E0 b .L481 + 6340 .LVL735: + 6341 .L465: +3647:Middlewares/Third_Party/FatFs/src/ff.c **** clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ + 6342 .loc 1 3647 6 is_stmt 1 view .LVU2109 +3647:Middlewares/Third_Party/FatFs/src/ff.c **** clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ + 6343 .loc 1 3647 12 is_stmt 0 view .LVU2110 + 6344 003e E36A ldr r3, [r4, #44] +3647:Middlewares/Third_Party/FatFs/src/ff.c **** clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */ + 6345 .loc 1 3647 9 view .LVU2111 + 6346 0040 002B cmp r3, #0 + 6347 0042 3CD0 beq .L467 +3648:Middlewares/Third_Party/FatFs/src/ff.c **** } else + ARM GAS /tmp/cc5lWXRL.s page 247 + + + 6348 .loc 1 3648 7 is_stmt 1 view .LVU2112 +3648:Middlewares/Third_Party/FatFs/src/ff.c **** } else + 6349 .loc 1 3648 14 is_stmt 0 view .LVU2113 + 6350 0044 2046 mov r0, r4 + 6351 0046 FFF7FEFF bl clmt_clust + 6352 .LVL736: + 6353 .L466: +3655:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) ABORT(fs, FR_INT_ERR); + 6354 .loc 1 3655 5 is_stmt 1 view .LVU2114 +3655:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) ABORT(fs, FR_INT_ERR); + 6355 .loc 1 3655 8 is_stmt 0 view .LVU2115 + 6356 004a 0028 cmp r0, #0 + 6357 004c 00F0D880 beq .L468 +3656:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 6358 .loc 1 3656 5 is_stmt 1 view .LVU2116 +3656:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 6359 .loc 1 3656 8 is_stmt 0 view .LVU2117 + 6360 0050 0128 cmp r0, #1 + 6361 0052 39D0 beq .L486 +3656:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 6362 .loc 1 3656 41 is_stmt 1 discriminator 2 view .LVU2118 +3657:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 6363 .loc 1 3657 5 discriminator 2 view .LVU2119 +3657:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 6364 .loc 1 3657 8 is_stmt 0 discriminator 2 view .LVU2120 + 6365 0054 B0F1FF3F cmp r0, #-1 + 6366 0058 3DD0 beq .L487 +3657:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 6367 .loc 1 3657 51 is_stmt 1 discriminator 2 view .LVU2121 +3658:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->obj.sclust == 0) fp->obj.sclust = clst; /* Set start cluster if the first write */ + 6368 .loc 1 3658 5 discriminator 2 view .LVU2122 +3658:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->obj.sclust == 0) fp->obj.sclust = clst; /* Set start cluster if the first write */ + 6369 .loc 1 3658 15 is_stmt 0 discriminator 2 view .LVU2123 + 6370 005a E061 str r0, [r4, #28] +3659:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6371 .loc 1 3659 5 is_stmt 1 discriminator 2 view .LVU2124 +3659:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6372 .loc 1 3659 16 is_stmt 0 discriminator 2 view .LVU2125 + 6373 005c A368 ldr r3, [r4, #8] +3659:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6374 .loc 1 3659 8 discriminator 2 view .LVU2126 + 6375 005e 03B9 cbnz r3, .L464 +3659:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6376 .loc 1 3659 30 is_stmt 1 discriminator 1 view .LVU2127 +3659:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6377 .loc 1 3659 45 is_stmt 0 discriminator 1 view .LVU2128 + 6378 0060 A060 str r0, [r4, #8] + 6379 .LVL737: + 6380 .L464: +3664:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 6381 .loc 1 3664 4 is_stmt 1 view .LVU2129 +3664:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 6382 .loc 1 3664 8 is_stmt 0 view .LVU2130 + 6383 0062 94F91430 ldrsb r3, [r4, #20] +3664:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 6384 .loc 1 3664 7 view .LVU2131 + 6385 0066 002B cmp r3, #0 + ARM GAS /tmp/cc5lWXRL.s page 248 + + + 6386 0068 3CDB blt .L488 + 6387 .L471: +3669:Middlewares/Third_Party/FatFs/src/ff.c **** if (!sect) ABORT(fs, FR_INT_ERR); + 6388 .loc 1 3669 4 is_stmt 1 view .LVU2132 +3669:Middlewares/Third_Party/FatFs/src/ff.c **** if (!sect) ABORT(fs, FR_INT_ERR); + 6389 .loc 1 3669 11 is_stmt 0 view .LVU2133 + 6390 006a DDF80CB0 ldr fp, [sp, #12] + 6391 006e E169 ldr r1, [r4, #28] + 6392 0070 5846 mov r0, fp + 6393 0072 FFF7FEFF bl clust2sect + 6394 .LVL738: +3670:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 6395 .loc 1 3670 4 is_stmt 1 view .LVU2134 +3670:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 6396 .loc 1 3670 7 is_stmt 0 view .LVU2135 + 6397 0076 8146 mov r9, r0 + 6398 0078 0028 cmp r0, #0 + 6399 007a 48D0 beq .L489 +3670:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 6400 .loc 1 3670 36 is_stmt 1 discriminator 2 view .LVU2136 +3671:Middlewares/Third_Party/FatFs/src/ff.c **** cc = btw / SS(fs); /* When remaining bytes >= sector size, */ + 6401 .loc 1 3671 4 discriminator 2 view .LVU2137 +3671:Middlewares/Third_Party/FatFs/src/ff.c **** cc = btw / SS(fs); /* When remaining bytes >= sector size, */ + 6402 .loc 1 3671 9 is_stmt 0 discriminator 2 view .LVU2138 + 6403 007c B144 add r9, r9, r6 + 6404 .LVL739: +3672:Middlewares/Third_Party/FatFs/src/ff.c **** if (cc) { /* Write maximum contiguous sectors directly */ + 6405 .loc 1 3672 4 is_stmt 1 discriminator 2 view .LVU2139 +3672:Middlewares/Third_Party/FatFs/src/ff.c **** if (cc) { /* Write maximum contiguous sectors directly */ + 6406 .loc 1 3672 15 is_stmt 0 discriminator 2 view .LVU2140 + 6407 007e BBF80C30 ldrh r3, [fp, #12] +3672:Middlewares/Third_Party/FatFs/src/ff.c **** if (cc) { /* Write maximum contiguous sectors directly */ + 6408 .loc 1 3672 7 discriminator 2 view .LVU2141 + 6409 0082 B5FBF3FA udiv r10, r5, r3 + 6410 .LVL740: +3673:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect + cc > fs->csize) { /* Clip at cluster boundary */ + 6411 .loc 1 3673 4 is_stmt 1 discriminator 2 view .LVU2142 +3673:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect + cc > fs->csize) { /* Clip at cluster boundary */ + 6412 .loc 1 3673 7 is_stmt 0 discriminator 2 view .LVU2143 + 6413 0086 AB42 cmp r3, r5 + 6414 0088 5FD8 bhi .L474 +3674:Middlewares/Third_Party/FatFs/src/ff.c **** cc = fs->csize - csect; + 6415 .loc 1 3674 5 is_stmt 1 view .LVU2144 +3674:Middlewares/Third_Party/FatFs/src/ff.c **** cc = fs->csize - csect; + 6416 .loc 1 3674 15 is_stmt 0 view .LVU2145 + 6417 008a 06EB0A03 add r3, r6, r10 +3674:Middlewares/Third_Party/FatFs/src/ff.c **** cc = fs->csize - csect; + 6418 .loc 1 3674 24 view .LVU2146 + 6419 008e BBF80A20 ldrh r2, [fp, #10] +3674:Middlewares/Third_Party/FatFs/src/ff.c **** cc = fs->csize - csect; + 6420 .loc 1 3674 8 view .LVU2147 + 6421 0092 9342 cmp r3, r2 + 6422 0094 01D9 bls .L475 +3675:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6423 .loc 1 3675 6 is_stmt 1 view .LVU2148 +3675:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6424 .loc 1 3675 9 is_stmt 0 view .LVU2149 + ARM GAS /tmp/cc5lWXRL.s page 249 + + + 6425 0096 A2EB060A sub r10, r2, r6 + 6426 .LVL741: + 6427 .L475: +3677:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 2 + 6428 .loc 1 3677 5 is_stmt 1 view .LVU2150 +3677:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 2 + 6429 .loc 1 3677 9 is_stmt 0 view .LVU2151 + 6430 009a 5346 mov r3, r10 + 6431 009c 4A46 mov r2, r9 + 6432 009e 3946 mov r1, r7 + 6433 00a0 9BF80100 ldrb r0, [fp, #1] @ zero_extendqisi2 + 6434 00a4 FFF7FEFF bl disk_write + 6435 .LVL742: +3677:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 2 + 6436 .loc 1 3677 8 view .LVU2152 + 6437 00a8 C0B3 cbz r0, .L476 +3677:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 2 + 6438 .loc 1 3677 57 is_stmt 1 discriminator 1 view .LVU2153 + 6439 00aa 4FF0010A mov r10, #1 + 6440 .LVL743: +3677:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 2 + 6441 .loc 1 3677 57 is_stmt 0 discriminator 1 view .LVU2154 + 6442 00ae 84F815A0 strb r10, [r4, #21] +3677:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 2 + 6443 .loc 1 3677 57 is_stmt 1 discriminator 1 view .LVU2155 + 6444 00b2 CDF804A0 str r10, [sp, #4] + 6445 .LVL744: + 6446 .L461: +3723:Middlewares/Third_Party/FatFs/src/ff.c **** + 6447 .loc 1 3723 1 is_stmt 0 view .LVU2156 + 6448 00b6 0198 ldr r0, [sp, #4] + 6449 00b8 05B0 add sp, sp, #20 + 6450 .LCFI52: + 6451 .cfi_remember_state + 6452 .cfi_def_cfa_offset 36 + 6453 @ sp needed + 6454 00ba BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 6455 .LVL745: + 6456 .L467: + 6457 .LCFI53: + 6458 .cfi_restore_state +3652:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6459 .loc 1 3652 7 is_stmt 1 view .LVU2157 +3652:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6460 .loc 1 3652 14 is_stmt 0 view .LVU2158 + 6461 00be E169 ldr r1, [r4, #28] + 6462 00c0 2046 mov r0, r4 + 6463 00c2 FFF7FEFF bl create_chain + 6464 .LVL746: +3652:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6465 .loc 1 3652 14 view .LVU2159 + 6466 00c6 C0E7 b .L466 + 6467 .L486: +3656:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 6468 .loc 1 3656 20 is_stmt 1 discriminator 1 view .LVU2160 + 6469 00c8 4FF0020A mov r10, #2 + 6470 00cc 84F815A0 strb r10, [r4, #21] + ARM GAS /tmp/cc5lWXRL.s page 250 + + +3656:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 6471 .loc 1 3656 20 discriminator 1 view .LVU2161 + 6472 00d0 CDF804A0 str r10, [sp, #4] + 6473 .LVL747: +3656:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 6474 .loc 1 3656 20 is_stmt 0 discriminator 1 view .LVU2162 + 6475 00d4 EFE7 b .L461 + 6476 .LVL748: + 6477 .L487: +3657:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 6478 .loc 1 3657 29 is_stmt 1 discriminator 1 view .LVU2163 + 6479 00d6 4FF0010A mov r10, #1 + 6480 00da 84F815A0 strb r10, [r4, #21] +3657:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 6481 .loc 1 3657 29 discriminator 1 view .LVU2164 + 6482 00de CDF804A0 str r10, [sp, #4] + 6483 .LVL749: +3657:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; /* Update current cluster */ + 6484 .loc 1 3657 29 is_stmt 0 discriminator 1 view .LVU2165 + 6485 00e2 E8E7 b .L461 + 6486 .LVL750: + 6487 .L488: +3665:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6488 .loc 1 3665 5 is_stmt 1 view .LVU2166 +3665:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6489 .loc 1 3665 9 is_stmt 0 view .LVU2167 + 6490 00e4 0123 movs r3, #1 + 6491 00e6 226A ldr r2, [r4, #32] + 6492 00e8 04F13001 add r1, r4, #48 + 6493 00ec 0398 ldr r0, [sp, #12] + 6494 00ee 4078 ldrb r0, [r0, #1] @ zero_extendqisi2 + 6495 00f0 FFF7FEFF bl disk_write + 6496 .LVL751: +3665:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6497 .loc 1 3665 8 view .LVU2168 + 6498 00f4 20B9 cbnz r0, .L490 +3665:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6499 .loc 1 3665 84 is_stmt 1 discriminator 2 view .LVU2169 +3666:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6500 .loc 1 3666 5 discriminator 2 view .LVU2170 +3666:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6501 .loc 1 3666 14 is_stmt 0 discriminator 2 view .LVU2171 + 6502 00f6 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 6503 00f8 03F07F03 and r3, r3, #127 + 6504 00fc 2375 strb r3, [r4, #20] + 6505 00fe B4E7 b .L471 + 6506 .L490: +3665:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6507 .loc 1 3665 62 is_stmt 1 discriminator 1 view .LVU2172 + 6508 0100 4FF0010A mov r10, #1 + 6509 0104 84F815A0 strb r10, [r4, #21] +3665:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6510 .loc 1 3665 62 discriminator 1 view .LVU2173 + 6511 0108 CDF804A0 str r10, [sp, #4] + 6512 .LVL752: +3665:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6513 .loc 1 3665 62 is_stmt 0 discriminator 1 view .LVU2174 + ARM GAS /tmp/cc5lWXRL.s page 251 + + + 6514 010c D3E7 b .L461 + 6515 .LVL753: + 6516 .L489: +3670:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 6517 .loc 1 3670 15 is_stmt 1 discriminator 1 view .LVU2175 + 6518 010e 4FF0020A mov r10, #2 + 6519 0112 84F815A0 strb r10, [r4, #21] +3670:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 6520 .loc 1 3670 15 discriminator 1 view .LVU2176 + 6521 0116 CDF804A0 str r10, [sp, #4] + 6522 .LVL754: +3670:Middlewares/Third_Party/FatFs/src/ff.c **** sect += csect; + 6523 .loc 1 3670 15 is_stmt 0 discriminator 1 view .LVU2177 + 6524 011a CCE7 b .L461 + 6525 .LVL755: + 6526 .L476: +3677:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_MINIMIZE <= 2 + 6527 .loc 1 3677 79 is_stmt 1 discriminator 2 view .LVU2178 +3685:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(fp->buf, wbuff + ((fp->sect - sect) * SS(fs)), SS(fs)); + 6528 .loc 1 3685 5 discriminator 2 view .LVU2179 +3685:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(fp->buf, wbuff + ((fp->sect - sect) * SS(fs)), SS(fs)); + 6529 .loc 1 3685 11 is_stmt 0 discriminator 2 view .LVU2180 + 6530 011c 216A ldr r1, [r4, #32] +3685:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(fp->buf, wbuff + ((fp->sect - sect) * SS(fs)), SS(fs)); + 6531 .loc 1 3685 18 discriminator 2 view .LVU2181 + 6532 011e A1EB0901 sub r1, r1, r9 +3685:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(fp->buf, wbuff + ((fp->sect - sect) * SS(fs)), SS(fs)); + 6533 .loc 1 3685 8 discriminator 2 view .LVU2182 + 6534 0122 5145 cmp r1, r10 + 6535 0124 04D3 bcc .L491 + 6536 .L477: +3691:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 6537 .loc 1 3691 5 is_stmt 1 view .LVU2183 +3691:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 6538 .loc 1 3691 12 is_stmt 0 view .LVU2184 + 6539 0126 039B ldr r3, [sp, #12] + 6540 0128 9E89 ldrh r6, [r3, #12] + 6541 .LVL756: +3691:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 6542 .loc 1 3691 10 view .LVU2185 + 6543 012a 0AFB06F6 mul r6, r10, r6 + 6544 .LVL757: +3692:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6545 .loc 1 3692 5 is_stmt 1 view .LVU2186 + 6546 012e 2BE0 b .L478 + 6547 .LVL758: + 6548 .L491: +3686:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6549 .loc 1 3686 6 view .LVU2187 +3686:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6550 .loc 1 3686 52 is_stmt 0 view .LVU2188 + 6551 0130 039B ldr r3, [sp, #12] + 6552 0132 9A89 ldrh r2, [r3, #12] +3686:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 6553 .loc 1 3686 6 view .LVU2189 + 6554 0134 02FB0171 mla r1, r2, r1, r7 + 6555 0138 04F13000 add r0, r4, #48 + ARM GAS /tmp/cc5lWXRL.s page 252 + + + 6556 013c FFF7FEFF bl mem_cpy + 6557 .LVL759: +3687:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6558 .loc 1 3687 6 is_stmt 1 view .LVU2190 +3687:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6559 .loc 1 3687 15 is_stmt 0 view .LVU2191 + 6560 0140 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 6561 0142 03F07F03 and r3, r3, #127 + 6562 0146 2375 strb r3, [r4, #20] + 6563 0148 EDE7 b .L477 + 6564 .L474: +3700:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr < fp->obj.objsize && + 6565 .loc 1 3700 4 is_stmt 1 view .LVU2192 +3700:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr < fp->obj.objsize && + 6566 .loc 1 3700 10 is_stmt 0 view .LVU2193 + 6567 014a 236A ldr r3, [r4, #32] +3700:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr < fp->obj.objsize && + 6568 .loc 1 3700 7 view .LVU2194 + 6569 014c 4B45 cmp r3, r9 + 6570 014e 03D0 beq .L479 +3701:Middlewares/Third_Party/FatFs/src/ff.c **** disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) { + 6571 .loc 1 3701 7 discriminator 1 view .LVU2195 + 6572 0150 A269 ldr r2, [r4, #24] +3701:Middlewares/Third_Party/FatFs/src/ff.c **** disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) { + 6573 .loc 1 3701 23 discriminator 1 view .LVU2196 + 6574 0152 E368 ldr r3, [r4, #12] +3700:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr < fp->obj.objsize && + 6575 .loc 1 3700 25 discriminator 1 view .LVU2197 + 6576 0154 9A42 cmp r2, r3 + 6577 0156 42D3 bcc .L492 + 6578 .L479: +3703:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6579 .loc 1 3703 28 is_stmt 1 view .LVU2198 +3706:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6580 .loc 1 3706 4 view .LVU2199 +3706:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6581 .loc 1 3706 13 is_stmt 0 view .LVU2200 + 6582 0158 C4F82090 str r9, [r4, #32] + 6583 .LVL760: + 6584 .L463: +3708:Middlewares/Third_Party/FatFs/src/ff.c **** if (wcnt > btw) wcnt = btw; /* Clip it by btw if needed */ + 6585 .loc 1 3708 3 is_stmt 1 view .LVU2201 +3708:Middlewares/Third_Party/FatFs/src/ff.c **** if (wcnt > btw) wcnt = btw; /* Clip it by btw if needed */ + 6586 .loc 1 3708 10 is_stmt 0 view .LVU2202 + 6587 015c 039B ldr r3, [sp, #12] + 6588 015e 9E89 ldrh r6, [r3, #12] +3708:Middlewares/Third_Party/FatFs/src/ff.c **** if (wcnt > btw) wcnt = btw; /* Clip it by btw if needed */ + 6589 .loc 1 3708 27 view .LVU2203 + 6590 0160 A369 ldr r3, [r4, #24] +3708:Middlewares/Third_Party/FatFs/src/ff.c **** if (wcnt > btw) wcnt = btw; /* Clip it by btw if needed */ + 6591 .loc 1 3708 34 view .LVU2204 + 6592 0162 B3FBF6F0 udiv r0, r3, r6 + 6593 0166 06FB1033 mls r3, r6, r0, r3 +3708:Middlewares/Third_Party/FatFs/src/ff.c **** if (wcnt > btw) wcnt = btw; /* Clip it by btw if needed */ + 6594 .loc 1 3708 8 view .LVU2205 + 6595 016a F61A subs r6, r6, r3 + 6596 .LVL761: + ARM GAS /tmp/cc5lWXRL.s page 253 + + +3709:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY + 6597 .loc 1 3709 3 is_stmt 1 view .LVU2206 +3709:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY + 6598 .loc 1 3709 6 is_stmt 0 view .LVU2207 + 6599 016c B542 cmp r5, r6 + 6600 016e 00D2 bcs .L480 +3709:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_TINY + 6601 .loc 1 3709 24 view .LVU2208 + 6602 0170 2E46 mov r6, r5 + 6603 .LVL762: + 6604 .L480: +3715:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_DIRTY; + 6605 .loc 1 3715 3 is_stmt 1 view .LVU2209 +3715:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_DIRTY; + 6606 .loc 1 3715 11 is_stmt 0 view .LVU2210 + 6607 0172 04F13000 add r0, r4, #48 +3715:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_DIRTY; + 6608 .loc 1 3715 3 view .LVU2211 + 6609 0176 3246 mov r2, r6 + 6610 0178 3946 mov r1, r7 + 6611 017a 1844 add r0, r0, r3 + 6612 017c FFF7FEFF bl mem_cpy + 6613 .LVL763: +3716:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 6614 .loc 1 3716 3 is_stmt 1 view .LVU2212 +3716:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 6615 .loc 1 3716 12 is_stmt 0 view .LVU2213 + 6616 0180 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 6617 0182 63F07F03 orn r3, r3, #127 + 6618 0186 2375 strb r3, [r4, #20] + 6619 .L478: +3636:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6620 .loc 1 3636 3 is_stmt 1 view .LVU2214 +3636:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6621 .loc 1 3636 9 is_stmt 0 view .LVU2215 + 6622 0188 3744 add r7, r7, r6 + 6623 .LVL764: +3636:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6624 .loc 1 3636 27 view .LVU2216 + 6625 018a A369 ldr r3, [r4, #24] + 6626 018c 3344 add r3, r3, r6 + 6627 018e A361 str r3, [r4, #24] +3636:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6628 .loc 1 3636 73 view .LVU2217 + 6629 0190 E268 ldr r2, [r4, #12] +3636:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6630 .loc 1 3636 94 view .LVU2218 + 6631 0192 9342 cmp r3, r2 + 6632 0194 38BF it cc + 6633 0196 1346 movcc r3, r2 +3636:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6634 .loc 1 3636 52 view .LVU2219 + 6635 0198 E360 str r3, [r4, #12] +3636:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6636 .loc 1 3636 117 view .LVU2220 + 6637 019a D8F80030 ldr r3, [r8] + 6638 019e 3344 add r3, r3, r6 + ARM GAS /tmp/cc5lWXRL.s page 254 + + + 6639 01a0 C8F80030 str r3, [r8] +3636:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) == 0) { /* On the sector boundary? */ + 6640 .loc 1 3636 130 view .LVU2221 + 6641 01a4 AD1B subs r5, r5, r6 + 6642 .LVL765: + 6643 .L481: +3635:Middlewares/Third_Party/FatFs/src/ff.c **** wbuff += wcnt, fp->fptr += wcnt, fp->obj.objsize = (fp->fptr > fp->obj.objsize) ? fp->fptr : fp-> + 6644 .loc 1 3635 11 is_stmt 1 view .LVU2222 +3635:Middlewares/Third_Party/FatFs/src/ff.c **** wbuff += wcnt, fp->fptr += wcnt, fp->obj.objsize = (fp->fptr > fp->obj.objsize) ? fp->fptr : fp-> + 6645 .loc 1 3635 2 is_stmt 0 view .LVU2223 + 6646 01a6 5DB3 cbz r5, .L468 +3637:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs)) & (fs->csize - 1); /* Sector offset in the cluster */ + 6647 .loc 1 3637 3 is_stmt 1 view .LVU2224 +3637:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs)) & (fs->csize - 1); /* Sector offset in the cluster */ + 6648 .loc 1 3637 9 is_stmt 0 view .LVU2225 + 6649 01a8 A169 ldr r1, [r4, #24] +3637:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs)) & (fs->csize - 1); /* Sector offset in the cluster */ + 6650 .loc 1 3637 18 view .LVU2226 + 6651 01aa 039A ldr r2, [sp, #12] + 6652 01ac 9689 ldrh r6, [r2, #12] +3637:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs)) & (fs->csize - 1); /* Sector offset in the cluster */ + 6653 .loc 1 3637 16 view .LVU2227 + 6654 01ae B1FBF6F3 udiv r3, r1, r6 + 6655 01b2 06FB1313 mls r3, r6, r3, r1 +3637:Middlewares/Third_Party/FatFs/src/ff.c **** csect = (UINT)(fp->fptr / SS(fs)) & (fs->csize - 1); /* Sector offset in the cluster */ + 6656 .loc 1 3637 6 view .LVU2228 + 6657 01b6 002B cmp r3, #0 + 6658 01b8 D0D1 bne .L463 +3638:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ + 6659 .loc 1 3638 4 is_stmt 1 view .LVU2229 +3638:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ + 6660 .loc 1 3638 28 is_stmt 0 view .LVU2230 + 6661 01ba B1FBF6F6 udiv r6, r1, r6 +3638:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ + 6662 .loc 1 3638 43 view .LVU2231 + 6663 01be 5389 ldrh r3, [r2, #10] +3638:Middlewares/Third_Party/FatFs/src/ff.c **** if (csect == 0) { /* On the cluster boundary? */ + 6664 .loc 1 3638 51 view .LVU2232 + 6665 01c0 013B subs r3, r3, #1 + 6666 .LVL766: +3639:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */ + 6667 .loc 1 3639 4 is_stmt 1 view .LVU2233 +3639:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */ + 6668 .loc 1 3639 7 is_stmt 0 view .LVU2234 + 6669 01c2 1E40 ands r6, r6, r3 + 6670 .LVL767: +3639:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* On the top of the file? */ + 6671 .loc 1 3639 7 view .LVU2235 + 6672 01c4 7FF44DAF bne .L464 +3640:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow from the origin */ + 6673 .loc 1 3640 5 is_stmt 1 view .LVU2236 +3640:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->obj.sclust; /* Follow from the origin */ + 6674 .loc 1 3640 8 is_stmt 0 view .LVU2237 + 6675 01c8 0029 cmp r1, #0 + 6676 01ca 7FF438AF bne .L465 +3641:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) { /* If no cluster is allocated, */ + 6677 .loc 1 3641 6 is_stmt 1 view .LVU2238 + ARM GAS /tmp/cc5lWXRL.s page 255 + + +3641:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) { /* If no cluster is allocated, */ + 6678 .loc 1 3641 11 is_stmt 0 view .LVU2239 + 6679 01ce A068 ldr r0, [r4, #8] + 6680 .LVL768: +3642:Middlewares/Third_Party/FatFs/src/ff.c **** clst = create_chain(&fp->obj, 0); /* create a new cluster chain */ + 6681 .loc 1 3642 6 is_stmt 1 view .LVU2240 +3642:Middlewares/Third_Party/FatFs/src/ff.c **** clst = create_chain(&fp->obj, 0); /* create a new cluster chain */ + 6682 .loc 1 3642 9 is_stmt 0 view .LVU2241 + 6683 01d0 0028 cmp r0, #0 + 6684 01d2 7FF43AAF bne .L466 +3643:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6685 .loc 1 3643 7 is_stmt 1 view .LVU2242 +3643:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6686 .loc 1 3643 14 is_stmt 0 view .LVU2243 + 6687 01d6 2046 mov r0, r4 + 6688 .LVL769: +3643:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6689 .loc 1 3643 14 view .LVU2244 + 6690 01d8 FFF7FEFF bl create_chain + 6691 .LVL770: +3643:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6692 .loc 1 3643 14 view .LVU2245 + 6693 01dc 35E7 b .L466 + 6694 .LVL771: + 6695 .L492: +3702:Middlewares/Third_Party/FatFs/src/ff.c **** ABORT(fs, FR_DISK_ERR); + 6696 .loc 1 3702 5 view .LVU2246 + 6697 01de 0123 movs r3, #1 + 6698 01e0 4A46 mov r2, r9 + 6699 01e2 04F13001 add r1, r4, #48 + 6700 01e6 9BF80100 ldrb r0, [fp, #1] @ zero_extendqisi2 + 6701 01ea FFF7FEFF bl disk_read + 6702 .LVL772: +3701:Middlewares/Third_Party/FatFs/src/ff.c **** disk_read(fs->drv, fp->buf, sect, 1) != RES_OK) { + 6703 .loc 1 3701 32 view .LVU2247 + 6704 01ee 0028 cmp r0, #0 + 6705 01f0 B2D0 beq .L479 +3703:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6706 .loc 1 3703 6 is_stmt 1 view .LVU2248 + 6707 01f2 4FF0010A mov r10, #1 + 6708 .LVL773: +3703:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6709 .loc 1 3703 6 is_stmt 0 view .LVU2249 + 6710 01f6 84F815A0 strb r10, [r4, #21] +3703:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6711 .loc 1 3703 6 is_stmt 1 view .LVU2250 + 6712 01fa CDF804A0 str r10, [sp, #4] + 6713 .LVL774: +3703:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6714 .loc 1 3703 6 is_stmt 0 view .LVU2251 + 6715 01fe 5AE7 b .L461 + 6716 .LVL775: + 6717 .L468: +3720:Middlewares/Third_Party/FatFs/src/ff.c **** + 6718 .loc 1 3720 2 is_stmt 1 view .LVU2252 +3720:Middlewares/Third_Party/FatFs/src/ff.c **** + 6719 .loc 1 3720 11 is_stmt 0 view .LVU2253 + ARM GAS /tmp/cc5lWXRL.s page 256 + + + 6720 0200 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 6721 0202 43F04003 orr r3, r3, #64 + 6722 0206 2375 strb r3, [r4, #20] +3722:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6723 .loc 1 3722 2 is_stmt 1 view .LVU2254 + 6724 0208 55E7 b .L461 + 6725 .LVL776: + 6726 .L483: +3628:Middlewares/Third_Party/FatFs/src/ff.c **** + 6727 .loc 1 3628 30 is_stmt 0 view .LVU2255 + 6728 020a 0723 movs r3, #7 + 6729 020c 0193 str r3, [sp, #4] + 6730 .LVL777: +3628:Middlewares/Third_Party/FatFs/src/ff.c **** + 6731 .loc 1 3628 30 view .LVU2256 + 6732 020e 52E7 b .L461 + 6733 .cfi_endproc + 6734 .LFE1224: + 6736 .section .text.putc_bfd,"ax",%progbits + 6737 .align 1 + 6738 .syntax unified + 6739 .thumb + 6740 .thumb_func + 6741 .fpu fpv5-d16 + 6743 putc_bfd: + 6744 .LVL778: + 6745 .LFB1239: +5921:Middlewares/Third_Party/FatFs/src/ff.c **** UINT bw; + 6746 .loc 1 5921 1 is_stmt 1 view -0 + 6747 .cfi_startproc + 6748 @ args = 0, pretend = 0, frame = 8 + 6749 @ frame_needed = 0, uses_anonymous_args = 0 +5921:Middlewares/Third_Party/FatFs/src/ff.c **** UINT bw; + 6750 .loc 1 5921 1 is_stmt 0 view .LVU2258 + 6751 0000 70B5 push {r4, r5, r6, lr} + 6752 .LCFI54: + 6753 .cfi_def_cfa_offset 16 + 6754 .cfi_offset 4, -16 + 6755 .cfi_offset 5, -12 + 6756 .cfi_offset 6, -8 + 6757 .cfi_offset 14, -4 + 6758 0002 82B0 sub sp, sp, #8 + 6759 .LCFI55: + 6760 .cfi_def_cfa_offset 24 + 6761 0004 0446 mov r4, r0 + 6762 0006 0D46 mov r5, r1 +5922:Middlewares/Third_Party/FatFs/src/ff.c **** int i; + 6763 .loc 1 5922 2 is_stmt 1 view .LVU2259 +5923:Middlewares/Third_Party/FatFs/src/ff.c **** + 6764 .loc 1 5923 2 view .LVU2260 +5926:Middlewares/Third_Party/FatFs/src/ff.c **** putc_bfd(pb, '\r'); + 6765 .loc 1 5926 2 view .LVU2261 +5926:Middlewares/Third_Party/FatFs/src/ff.c **** putc_bfd(pb, '\r'); + 6766 .loc 1 5926 5 is_stmt 0 view .LVU2262 + 6767 0008 0A29 cmp r1, #10 + 6768 000a 0DD0 beq .L500 + 6769 .LVL779: + ARM GAS /tmp/cc5lWXRL.s page 257 + + + 6770 .L494: +5930:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < 0) return; + 6771 .loc 1 5930 2 is_stmt 1 view .LVU2263 +5930:Middlewares/Third_Party/FatFs/src/ff.c **** if (i < 0) return; + 6772 .loc 1 5930 4 is_stmt 0 view .LVU2264 + 6773 000c 6368 ldr r3, [r4, #4] + 6774 .LVL780: +5931:Middlewares/Third_Party/FatFs/src/ff.c **** + 6775 .loc 1 5931 2 is_stmt 1 view .LVU2265 +5931:Middlewares/Third_Party/FatFs/src/ff.c **** + 6776 .loc 1 5931 5 is_stmt 0 view .LVU2266 + 6777 000e 002B cmp r3, #0 + 6778 0010 08DB blt .L493 +5960:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 6779 .loc 1 5960 2 is_stmt 1 view .LVU2267 +5960:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 6780 .loc 1 5960 11 is_stmt 0 view .LVU2268 + 6781 0012 5E1C adds r6, r3, #1 + 6782 .LVL781: +5960:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 6783 .loc 1 5960 15 view .LVU2269 + 6784 0014 2344 add r3, r3, r4 + 6785 0016 1D73 strb r5, [r3, #12] +5963:Middlewares/Third_Party/FatFs/src/ff.c **** f_write(pb->fp, pb->buf, (UINT)i, &bw); + 6786 .loc 1 5963 2 is_stmt 1 view .LVU2270 +5963:Middlewares/Third_Party/FatFs/src/ff.c **** f_write(pb->fp, pb->buf, (UINT)i, &bw); + 6787 .loc 1 5963 5 is_stmt 0 view .LVU2271 + 6788 0018 3C2E cmp r6, #60 + 6789 001a 09DC bgt .L501 + 6790 .LVL782: + 6791 .L497: +5967:Middlewares/Third_Party/FatFs/src/ff.c **** pb->nchr++; + 6792 .loc 1 5967 2 is_stmt 1 view .LVU2272 +5967:Middlewares/Third_Party/FatFs/src/ff.c **** pb->nchr++; + 6793 .loc 1 5967 10 is_stmt 0 view .LVU2273 + 6794 001c 6660 str r6, [r4, #4] +5968:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6795 .loc 1 5968 2 is_stmt 1 view .LVU2274 +5968:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6796 .loc 1 5968 4 is_stmt 0 view .LVU2275 + 6797 001e A368 ldr r3, [r4, #8] +5968:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6798 .loc 1 5968 10 view .LVU2276 + 6799 0020 0133 adds r3, r3, #1 + 6800 0022 A360 str r3, [r4, #8] + 6801 .LVL783: + 6802 .L493: +5969:Middlewares/Third_Party/FatFs/src/ff.c **** + 6803 .loc 1 5969 1 view .LVU2277 + 6804 0024 02B0 add sp, sp, #8 + 6805 .LCFI56: + 6806 .cfi_remember_state + 6807 .cfi_def_cfa_offset 16 + 6808 @ sp needed + 6809 0026 70BD pop {r4, r5, r6, pc} + 6810 .LVL784: + 6811 .L500: + ARM GAS /tmp/cc5lWXRL.s page 258 + + + 6812 .LCFI57: + 6813 .cfi_restore_state +5927:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6814 .loc 1 5927 3 is_stmt 1 view .LVU2278 + 6815 0028 0D21 movs r1, #13 + 6816 .LVL785: +5927:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6817 .loc 1 5927 3 is_stmt 0 view .LVU2279 + 6818 002a FFF7E9FF bl putc_bfd + 6819 .LVL786: +5927:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6820 .loc 1 5927 3 view .LVU2280 + 6821 002e EDE7 b .L494 + 6822 .LVL787: + 6823 .L501: +5964:Middlewares/Third_Party/FatFs/src/ff.c **** i = (bw == (UINT)i) ? 0 : -1; + 6824 .loc 1 5964 3 is_stmt 1 view .LVU2281 +5964:Middlewares/Third_Party/FatFs/src/ff.c **** i = (bw == (UINT)i) ? 0 : -1; + 6825 .loc 1 5964 21 is_stmt 0 view .LVU2282 + 6826 0030 2146 mov r1, r4 +5964:Middlewares/Third_Party/FatFs/src/ff.c **** i = (bw == (UINT)i) ? 0 : -1; + 6827 .loc 1 5964 3 view .LVU2283 + 6828 0032 51F80C0B ldr r0, [r1], #12 + 6829 0036 01AB add r3, sp, #4 + 6830 0038 3246 mov r2, r6 + 6831 003a FFF7FEFF bl f_write + 6832 .LVL788: +5965:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6833 .loc 1 5965 3 is_stmt 1 view .LVU2284 +5965:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6834 .loc 1 5965 11 is_stmt 0 view .LVU2285 + 6835 003e 019B ldr r3, [sp, #4] +5965:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6836 .loc 1 5965 27 view .LVU2286 + 6837 0040 9E42 cmp r6, r3 + 6838 0042 02D0 beq .L502 + 6839 0044 4FF0FF36 mov r6, #-1 + 6840 .LVL789: +5965:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6841 .loc 1 5965 27 view .LVU2287 + 6842 0048 E8E7 b .L497 + 6843 .LVL790: + 6844 .L502: +5965:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6845 .loc 1 5965 27 view .LVU2288 + 6846 004a 0026 movs r6, #0 + 6847 .LVL791: +5965:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6848 .loc 1 5965 27 view .LVU2289 + 6849 004c E6E7 b .L497 + 6850 .cfi_endproc + 6851 .LFE1239: + 6853 .section .text.putc_flush,"ax",%progbits + 6854 .align 1 + 6855 .syntax unified + 6856 .thumb + 6857 .thumb_func + ARM GAS /tmp/cc5lWXRL.s page 259 + + + 6858 .fpu fpv5-d16 + 6860 putc_flush: + 6861 .LVL792: + 6862 .LFB1240: +5976:Middlewares/Third_Party/FatFs/src/ff.c **** UINT nw; + 6863 .loc 1 5976 1 is_stmt 1 view -0 + 6864 .cfi_startproc + 6865 @ args = 0, pretend = 0, frame = 8 + 6866 @ frame_needed = 0, uses_anonymous_args = 0 +5977:Middlewares/Third_Party/FatFs/src/ff.c **** + 6867 .loc 1 5977 2 view .LVU2291 +5979:Middlewares/Third_Party/FatFs/src/ff.c **** && f_write(pb->fp, pb->buf, (UINT)pb->idx, &nw) == FR_OK + 6868 .loc 1 5979 2 view .LVU2292 +5979:Middlewares/Third_Party/FatFs/src/ff.c **** && f_write(pb->fp, pb->buf, (UINT)pb->idx, &nw) == FR_OK + 6869 .loc 1 5979 11 is_stmt 0 view .LVU2293 + 6870 0000 4268 ldr r2, [r0, #4] +5979:Middlewares/Third_Party/FatFs/src/ff.c **** && f_write(pb->fp, pb->buf, (UINT)pb->idx, &nw) == FR_OK + 6871 .loc 1 5979 5 view .LVU2294 + 6872 0002 002A cmp r2, #0 + 6873 0004 10DB blt .L505 +5976:Middlewares/Third_Party/FatFs/src/ff.c **** UINT nw; + 6874 .loc 1 5976 1 view .LVU2295 + 6875 0006 10B5 push {r4, lr} + 6876 .LCFI58: + 6877 .cfi_def_cfa_offset 8 + 6878 .cfi_offset 4, -8 + 6879 .cfi_offset 14, -4 + 6880 0008 82B0 sub sp, sp, #8 + 6881 .LCFI59: + 6882 .cfi_def_cfa_offset 16 + 6883 000a 0446 mov r4, r0 +5980:Middlewares/Third_Party/FatFs/src/ff.c **** && (UINT)pb->idx == nw) return pb->nchr; + 6884 .loc 1 5980 24 view .LVU2296 + 6885 000c 0146 mov r1, r0 +5980:Middlewares/Third_Party/FatFs/src/ff.c **** && (UINT)pb->idx == nw) return pb->nchr; + 6886 .loc 1 5980 6 view .LVU2297 + 6887 000e 51F80C0B ldr r0, [r1], #12 + 6888 .LVL793: +5980:Middlewares/Third_Party/FatFs/src/ff.c **** && (UINT)pb->idx == nw) return pb->nchr; + 6889 .loc 1 5980 6 view .LVU2298 + 6890 0012 01AB add r3, sp, #4 + 6891 0014 FFF7FEFF bl f_write + 6892 .LVL794: +5980:Middlewares/Third_Party/FatFs/src/ff.c **** && (UINT)pb->idx == nw) return pb->nchr; + 6893 .loc 1 5980 3 view .LVU2299 + 6894 0018 48B9 cbnz r0, .L506 +5981:Middlewares/Third_Party/FatFs/src/ff.c **** return EOF; + 6895 .loc 1 5981 14 view .LVU2300 + 6896 001a 6268 ldr r2, [r4, #4] +5981:Middlewares/Third_Party/FatFs/src/ff.c **** return EOF; + 6897 .loc 1 5981 20 view .LVU2301 + 6898 001c 019B ldr r3, [sp, #4] +5981:Middlewares/Third_Party/FatFs/src/ff.c **** return EOF; + 6899 .loc 1 5981 3 view .LVU2302 + 6900 001e 9A42 cmp r2, r3 + 6901 0020 08D1 bne .L507 +5981:Middlewares/Third_Party/FatFs/src/ff.c **** return EOF; + ARM GAS /tmp/cc5lWXRL.s page 260 + + + 6902 .loc 1 5981 27 is_stmt 1 discriminator 1 view .LVU2303 +5981:Middlewares/Third_Party/FatFs/src/ff.c **** return EOF; + 6903 .loc 1 5981 36 is_stmt 0 discriminator 1 view .LVU2304 + 6904 0022 A068 ldr r0, [r4, #8] + 6905 .L503: +5983:Middlewares/Third_Party/FatFs/src/ff.c **** + 6906 .loc 1 5983 1 view .LVU2305 + 6907 0024 02B0 add sp, sp, #8 + 6908 .LCFI60: + 6909 .cfi_def_cfa_offset 8 + 6910 @ sp needed + 6911 0026 10BD pop {r4, pc} + 6912 .LVL795: + 6913 .L505: + 6914 .LCFI61: + 6915 .cfi_def_cfa_offset 0 + 6916 .cfi_restore 4 + 6917 .cfi_restore 14 +5982:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6918 .loc 1 5982 9 view .LVU2306 + 6919 0028 4FF0FF30 mov r0, #-1 + 6920 .LVL796: +5983:Middlewares/Third_Party/FatFs/src/ff.c **** + 6921 .loc 1 5983 1 view .LVU2307 + 6922 002c 7047 bx lr + 6923 .LVL797: + 6924 .L506: + 6925 .LCFI62: + 6926 .cfi_def_cfa_offset 16 + 6927 .cfi_offset 4, -8 + 6928 .cfi_offset 14, -4 +5982:Middlewares/Third_Party/FatFs/src/ff.c **** } + 6929 .loc 1 5982 9 view .LVU2308 + 6930 002e 4FF0FF30 mov r0, #-1 + 6931 0032 F7E7 b .L503 + 6932 .L507: + 6933 0034 4FF0FF30 mov r0, #-1 + 6934 0038 F4E7 b .L503 + 6935 .cfi_endproc + 6936 .LFE1240: + 6938 .section .text.f_sync,"ax",%progbits + 6939 .align 1 + 6940 .global f_sync + 6941 .syntax unified + 6942 .thumb + 6943 .thumb_func + 6944 .fpu fpv5-d16 + 6946 f_sync: + 6947 .LVL798: + 6948 .LFB1225: +3735:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 6949 .loc 1 3735 1 is_stmt 1 view -0 + 6950 .cfi_startproc + 6951 @ args = 0, pretend = 0, frame = 8 + 6952 @ frame_needed = 0, uses_anonymous_args = 0 +3735:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 6953 .loc 1 3735 1 is_stmt 0 view .LVU2310 + ARM GAS /tmp/cc5lWXRL.s page 261 + + + 6954 0000 70B5 push {r4, r5, r6, lr} + 6955 .LCFI63: + 6956 .cfi_def_cfa_offset 16 + 6957 .cfi_offset 4, -16 + 6958 .cfi_offset 5, -12 + 6959 .cfi_offset 6, -8 + 6960 .cfi_offset 14, -4 + 6961 0002 82B0 sub sp, sp, #8 + 6962 .LCFI64: + 6963 .cfi_def_cfa_offset 24 + 6964 0004 0446 mov r4, r0 +3736:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 6965 .loc 1 3736 2 is_stmt 1 view .LVU2311 +3737:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD tm; + 6966 .loc 1 3737 2 view .LVU2312 +3738:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *dir; + 6967 .loc 1 3738 2 view .LVU2313 +3739:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 6968 .loc 1 3739 2 view .LVU2314 +3745:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 6969 .loc 1 3745 2 view .LVU2315 +3745:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 6970 .loc 1 3745 8 is_stmt 0 view .LVU2316 + 6971 0006 01A9 add r1, sp, #4 + 6972 0008 FFF7FEFF bl validate + 6973 .LVL799: +3746:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->flag & FA_MODIFIED) { /* Is there any change to the file? */ + 6974 .loc 1 3746 2 is_stmt 1 view .LVU2317 +3746:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->flag & FA_MODIFIED) { /* Is there any change to the file? */ + 6975 .loc 1 3746 5 is_stmt 0 view .LVU2318 + 6976 000c 70B9 cbnz r0, .L513 +3747:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 6977 .loc 1 3747 3 is_stmt 1 view .LVU2319 +3747:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 6978 .loc 1 3747 9 is_stmt 0 view .LVU2320 + 6979 000e 237D ldrb r3, [r4, #20] @ zero_extendqisi2 +3747:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 6980 .loc 1 3747 6 view .LVU2321 + 6981 0010 13F0400F tst r3, #64 + 6982 0014 0AD0 beq .L513 +3749:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) LEAVE_FF(fs, FR_DISK_ERR); + 6983 .loc 1 3749 4 is_stmt 1 view .LVU2322 +3749:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) LEAVE_FF(fs, FR_DISK_ERR); + 6984 .loc 1 3749 7 is_stmt 0 view .LVU2323 + 6985 0016 13F0800F tst r3, #128 + 6986 001a 09D1 bne .L517 + 6987 .L514: +3755:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 6988 .loc 1 3755 4 is_stmt 1 view .LVU2324 +3755:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 6989 .loc 1 3755 9 is_stmt 0 view .LVU2325 + 6990 001c FFF7FEFF bl get_fattime + 6991 .LVL800: + 6992 0020 0546 mov r5, r0 + 6993 .LVL801: +3785:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 6994 .loc 1 3785 5 is_stmt 1 view .LVU2326 + ARM GAS /tmp/cc5lWXRL.s page 262 + + +3785:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 6995 .loc 1 3785 11 is_stmt 0 view .LVU2327 + 6996 0022 616A ldr r1, [r4, #36] + 6997 0024 0198 ldr r0, [sp, #4] + 6998 .LVL802: +3785:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 6999 .loc 1 3785 11 view .LVU2328 + 7000 0026 FFF7FEFF bl move_window + 7001 .LVL803: +3786:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fp->dir_ptr; + 7002 .loc 1 3786 5 is_stmt 1 view .LVU2329 +3786:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fp->dir_ptr; + 7003 .loc 1 3786 8 is_stmt 0 view .LVU2330 + 7004 002a 78B1 cbz r0, .L518 + 7005 .LVL804: + 7006 .L513: +3802:Middlewares/Third_Party/FatFs/src/ff.c **** + 7007 .loc 1 3802 1 view .LVU2331 + 7008 002c 02B0 add sp, sp, #8 + 7009 .LCFI65: + 7010 .cfi_remember_state + 7011 .cfi_def_cfa_offset 16 + 7012 @ sp needed + 7013 002e 70BD pop {r4, r5, r6, pc} + 7014 .LVL805: + 7015 .L517: + 7016 .LCFI66: + 7017 .cfi_restore_state +3750:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7018 .loc 1 3750 5 is_stmt 1 view .LVU2332 +3750:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7019 .loc 1 3750 9 is_stmt 0 view .LVU2333 + 7020 0030 0123 movs r3, #1 + 7021 0032 226A ldr r2, [r4, #32] + 7022 0034 04F13001 add r1, r4, #48 + 7023 0038 0198 ldr r0, [sp, #4] + 7024 003a 4078 ldrb r0, [r0, #1] @ zero_extendqisi2 + 7025 003c FFF7FEFF bl disk_write + 7026 .LVL806: +3750:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7027 .loc 1 3750 8 view .LVU2334 + 7028 0040 40BB cbnz r0, .L515 +3751:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7029 .loc 1 3751 5 is_stmt 1 view .LVU2335 +3751:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7030 .loc 1 3751 14 is_stmt 0 view .LVU2336 + 7031 0042 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 7032 0044 03F07F03 and r3, r3, #127 + 7033 0048 2375 strb r3, [r4, #20] + 7034 004a E7E7 b .L514 + 7035 .LVL807: + 7036 .L518: +3787:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] |= AM_ARC; /* Set archive bit */ + 7037 .loc 1 3787 6 is_stmt 1 view .LVU2337 +3787:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] |= AM_ARC; /* Set archive bit */ + 7038 .loc 1 3787 10 is_stmt 0 view .LVU2338 + 7039 004c A66A ldr r6, [r4, #40] + ARM GAS /tmp/cc5lWXRL.s page 263 + + + 7040 .LVL808: +3788:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fp->obj.fs, dir, fp->obj.sclust); /* Update file allocation info */ + 7041 .loc 1 3788 6 is_stmt 1 view .LVU2339 +3788:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fp->obj.fs, dir, fp->obj.sclust); /* Update file allocation info */ + 7042 .loc 1 3788 20 is_stmt 0 view .LVU2340 + 7043 004e F37A ldrb r3, [r6, #11] @ zero_extendqisi2 + 7044 0050 43F02003 orr r3, r3, #32 + 7045 0054 F372 strb r3, [r6, #11] +3789:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_FileSize, (DWORD)fp->obj.objsize); /* Update file size */ + 7046 .loc 1 3789 6 is_stmt 1 view .LVU2341 + 7047 0056 A268 ldr r2, [r4, #8] + 7048 0058 3146 mov r1, r6 + 7049 005a 2068 ldr r0, [r4] + 7050 .LVL809: +3789:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_FileSize, (DWORD)fp->obj.objsize); /* Update file size */ + 7051 .loc 1 3789 6 is_stmt 0 view .LVU2342 + 7052 005c FFF7FEFF bl st_clust + 7053 .LVL810: +3790:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_ModTime, tm); /* Update modified time */ + 7054 .loc 1 3790 6 is_stmt 1 view .LVU2343 + 7055 0060 E168 ldr r1, [r4, #12] + 7056 0062 06F11C00 add r0, r6, #28 + 7057 0066 FFF7FEFF bl st_dword + 7058 .LVL811: +3791:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(dir + DIR_LstAccDate, 0); + 7059 .loc 1 3791 6 view .LVU2344 + 7060 006a 2946 mov r1, r5 + 7061 006c 06F11600 add r0, r6, #22 + 7062 0070 FFF7FEFF bl st_dword + 7063 .LVL812: +3792:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 7064 .loc 1 3792 6 view .LVU2345 + 7065 0074 0021 movs r1, #0 + 7066 0076 06F11200 add r0, r6, #18 + 7067 007a FFF7FEFF bl st_word + 7068 .LVL813: +3793:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); /* Restore it to the directory */ + 7069 .loc 1 3793 6 view .LVU2346 +3793:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); /* Restore it to the directory */ + 7070 .loc 1 3793 16 is_stmt 0 view .LVU2347 + 7071 007e 019B ldr r3, [sp, #4] + 7072 0080 0122 movs r2, #1 + 7073 0082 DA70 strb r2, [r3, #3] +3794:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_MODIFIED; + 7074 .loc 1 3794 6 is_stmt 1 view .LVU2348 +3794:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_MODIFIED; + 7075 .loc 1 3794 12 is_stmt 0 view .LVU2349 + 7076 0084 0198 ldr r0, [sp, #4] + 7077 0086 FFF7FEFF bl sync_fs + 7078 .LVL814: +3795:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7079 .loc 1 3795 6 is_stmt 1 view .LVU2350 +3795:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7080 .loc 1 3795 15 is_stmt 0 view .LVU2351 + 7081 008a 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 7082 008c 23F04003 bic r3, r3, #64 + 7083 0090 2375 strb r3, [r4, #20] + ARM GAS /tmp/cc5lWXRL.s page 264 + + + 7084 0092 CBE7 b .L513 + 7085 .LVL815: + 7086 .L515: +3750:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7087 .loc 1 3750 62 view .LVU2352 + 7088 0094 0120 movs r0, #1 + 7089 0096 C9E7 b .L513 + 7090 .cfi_endproc + 7091 .LFE1225: + 7093 .section .text.f_close,"ax",%progbits + 7094 .align 1 + 7095 .global f_close + 7096 .syntax unified + 7097 .thumb + 7098 .thumb_func + 7099 .fpu fpv5-d16 + 7101 f_close: + 7102 .LVL816: + 7103 .LFB1226: +3816:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 7104 .loc 1 3816 1 is_stmt 1 view -0 + 7105 .cfi_startproc + 7106 @ args = 0, pretend = 0, frame = 8 + 7107 @ frame_needed = 0, uses_anonymous_args = 0 +3816:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 7108 .loc 1 3816 1 is_stmt 0 view .LVU2354 + 7109 0000 10B5 push {r4, lr} + 7110 .LCFI67: + 7111 .cfi_def_cfa_offset 8 + 7112 .cfi_offset 4, -8 + 7113 .cfi_offset 14, -4 + 7114 0002 82B0 sub sp, sp, #8 + 7115 .LCFI68: + 7116 .cfi_def_cfa_offset 16 + 7117 0004 0446 mov r4, r0 +3817:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 7118 .loc 1 3817 2 is_stmt 1 view .LVU2355 +3818:Middlewares/Third_Party/FatFs/src/ff.c **** + 7119 .loc 1 3818 2 view .LVU2356 +3821:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) + 7120 .loc 1 3821 2 view .LVU2357 +3821:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) + 7121 .loc 1 3821 8 is_stmt 0 view .LVU2358 + 7122 0006 FFF7FEFF bl f_sync + 7123 .LVL817: +3822:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7124 .loc 1 3822 2 is_stmt 1 view .LVU2359 +3822:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7125 .loc 1 3822 5 is_stmt 0 view .LVU2360 + 7126 000a 08B1 cbz r0, .L522 + 7127 .L520: + 7128 .LVL818: +3839:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7129 .loc 1 3839 2 is_stmt 1 view .LVU2361 +3840:Middlewares/Third_Party/FatFs/src/ff.c **** + 7130 .loc 1 3840 1 is_stmt 0 view .LVU2362 + 7131 000c 02B0 add sp, sp, #8 + ARM GAS /tmp/cc5lWXRL.s page 265 + + + 7132 .LCFI69: + 7133 .cfi_remember_state + 7134 .cfi_def_cfa_offset 8 + 7135 @ sp needed + 7136 000e 10BD pop {r4, pc} + 7137 .LVL819: + 7138 .L522: + 7139 .LCFI70: + 7140 .cfi_restore_state +3825:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 7141 .loc 1 3825 3 is_stmt 1 view .LVU2363 +3825:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 7142 .loc 1 3825 9 is_stmt 0 view .LVU2364 + 7143 0010 01A9 add r1, sp, #4 + 7144 0012 2046 mov r0, r4 + 7145 0014 FFF7FEFF bl validate + 7146 .LVL820: +3826:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 7147 .loc 1 3826 3 is_stmt 1 view .LVU2365 +3826:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 7148 .loc 1 3826 6 is_stmt 0 view .LVU2366 + 7149 0018 0028 cmp r0, #0 + 7150 001a F7D1 bne .L520 +3828:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) + 7151 .loc 1 3828 4 is_stmt 1 view .LVU2367 +3828:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) + 7152 .loc 1 3828 10 is_stmt 0 view .LVU2368 + 7153 001c 2069 ldr r0, [r4, #16] + 7154 .LVL821: +3828:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) + 7155 .loc 1 3828 10 view .LVU2369 + 7156 001e FFF7FEFF bl dec_lock + 7157 .LVL822: +3829:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7158 .loc 1 3829 4 is_stmt 1 view .LVU2370 +3829:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7159 .loc 1 3829 7 is_stmt 0 view .LVU2371 + 7160 0022 0028 cmp r0, #0 + 7161 0024 F2D1 bne .L520 +3832:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7162 .loc 1 3832 5 is_stmt 1 view .LVU2372 +3832:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7163 .loc 1 3832 16 is_stmt 0 view .LVU2373 + 7164 0026 2060 str r0, [r4] + 7165 0028 F0E7 b .L520 + 7166 .cfi_endproc + 7167 .LFE1226: + 7169 .section .text.f_lseek,"ax",%progbits + 7170 .align 1 + 7171 .global f_lseek + 7172 .syntax unified + 7173 .thumb + 7174 .thumb_func + 7175 .fpu fpv5-d16 + 7177 f_lseek: + 7178 .LVL823: + 7179 .LFB1227: + ARM GAS /tmp/cc5lWXRL.s page 266 + + +4005:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 7180 .loc 1 4005 1 is_stmt 1 view -0 + 7181 .cfi_startproc + 7182 @ args = 0, pretend = 0, frame = 8 + 7183 @ frame_needed = 0, uses_anonymous_args = 0 +4005:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 7184 .loc 1 4005 1 is_stmt 0 view .LVU2375 + 7185 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 7186 .LCFI71: + 7187 .cfi_def_cfa_offset 36 + 7188 .cfi_offset 4, -36 + 7189 .cfi_offset 5, -32 + 7190 .cfi_offset 6, -28 + 7191 .cfi_offset 7, -24 + 7192 .cfi_offset 8, -20 + 7193 .cfi_offset 9, -16 + 7194 .cfi_offset 10, -12 + 7195 .cfi_offset 11, -8 + 7196 .cfi_offset 14, -4 + 7197 0004 83B0 sub sp, sp, #12 + 7198 .LCFI72: + 7199 .cfi_def_cfa_offset 48 + 7200 0006 0446 mov r4, r0 + 7201 0008 0E46 mov r6, r1 +4006:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 7202 .loc 1 4006 2 is_stmt 1 view .LVU2376 +4007:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD clst, bcs, nsect; + 7203 .loc 1 4007 2 view .LVU2377 +4008:Middlewares/Third_Party/FatFs/src/ff.c **** FSIZE_t ifptr; + 7204 .loc 1 4008 2 view .LVU2378 +4009:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_FASTSEEK + 7205 .loc 1 4009 2 view .LVU2379 +4011:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7206 .loc 1 4011 2 view .LVU2380 +4014:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = (FRESULT)fp->err; + 7207 .loc 1 4014 2 view .LVU2381 +4014:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = (FRESULT)fp->err; + 7208 .loc 1 4014 8 is_stmt 0 view .LVU2382 + 7209 000a 01A9 add r1, sp, #4 + 7210 .LVL824: +4014:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = (FRESULT)fp->err; + 7211 .loc 1 4014 8 view .LVU2383 + 7212 000c FFF7FEFF bl validate + 7213 .LVL825: +4015:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT && !_FS_READONLY + 7214 .loc 1 4015 2 is_stmt 1 view .LVU2384 +4015:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT && !_FS_READONLY + 7215 .loc 1 4015 5 is_stmt 0 view .LVU2385 + 7216 0010 0546 mov r5, r0 + 7217 0012 00B9 cbnz r0, .L524 +4015:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT && !_FS_READONLY + 7218 .loc 1 4015 20 is_stmt 1 discriminator 1 view .LVU2386 +4015:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT && !_FS_READONLY + 7219 .loc 1 4015 24 is_stmt 0 discriminator 1 view .LVU2387 + 7220 0014 657D ldrb r5, [r4, #21] @ zero_extendqisi2 + 7221 .LVL826: + 7222 .L524: + ARM GAS /tmp/cc5lWXRL.s page 267 + + +4021:Middlewares/Third_Party/FatFs/src/ff.c **** + 7223 .loc 1 4021 2 is_stmt 1 view .LVU2388 +4021:Middlewares/Third_Party/FatFs/src/ff.c **** + 7224 .loc 1 4021 5 is_stmt 0 view .LVU2389 + 7225 0016 6DB9 cbnz r5, .L525 +4024:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs == CREATE_LINKMAP) { /* Create CLMT */ + 7226 .loc 1 4024 2 is_stmt 1 view .LVU2390 +4024:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs == CREATE_LINKMAP) { /* Create CLMT */ + 7227 .loc 1 4024 8 is_stmt 0 view .LVU2391 + 7228 0018 E36A ldr r3, [r4, #44] +4024:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs == CREATE_LINKMAP) { /* Create CLMT */ + 7229 .loc 1 4024 5 view .LVU2392 + 7230 001a 002B cmp r3, #0 + 7231 001c 00F08E80 beq .L526 +4025:Middlewares/Third_Party/FatFs/src/ff.c **** tbl = fp->cltbl; + 7232 .loc 1 4025 3 is_stmt 1 view .LVU2393 +4025:Middlewares/Third_Party/FatFs/src/ff.c **** tbl = fp->cltbl; + 7233 .loc 1 4025 6 is_stmt 0 view .LVU2394 + 7234 0020 B6F1FF3F cmp r6, #-1 + 7235 0024 0AD0 beq .L566 +4051:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = ofs; /* Set file pointer */ + 7236 .loc 1 4051 4 is_stmt 1 view .LVU2395 +4051:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = ofs; /* Set file pointer */ + 7237 .loc 1 4051 21 is_stmt 0 view .LVU2396 + 7238 0026 E768 ldr r7, [r4, #12] +4051:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = ofs; /* Set file pointer */ + 7239 .loc 1 4051 7 view .LVU2397 + 7240 0028 B742 cmp r7, r6 + 7241 002a 00D3 bcc .L534 + 7242 002c 3746 mov r7, r6 + 7243 .L534: + 7244 .LVL827: +4052:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs) { + 7245 .loc 1 4052 4 is_stmt 1 view .LVU2398 +4052:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs) { + 7246 .loc 1 4052 13 is_stmt 0 view .LVU2399 + 7247 002e A761 str r7, [r4, #24] +4053:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clmt_clust(fp, ofs - 1); + 7248 .loc 1 4053 4 is_stmt 1 view .LVU2400 +4053:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clmt_clust(fp, ofs - 1); + 7249 .loc 1 4053 7 is_stmt 0 view .LVU2401 + 7250 0030 002F cmp r7, #0 + 7251 0032 3FD1 bne .L567 + 7252 .LVL828: + 7253 .L525: +4153:Middlewares/Third_Party/FatFs/src/ff.c **** + 7254 .loc 1 4153 1 view .LVU2402 + 7255 0034 2846 mov r0, r5 + 7256 0036 03B0 add sp, sp, #12 + 7257 .LCFI73: + 7258 .cfi_remember_state + 7259 .cfi_def_cfa_offset 36 + 7260 @ sp needed + 7261 0038 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 7262 .LVL829: + 7263 .L566: + 7264 .LCFI74: + ARM GAS /tmp/cc5lWXRL.s page 268 + + + 7265 .cfi_restore_state +4026:Middlewares/Third_Party/FatFs/src/ff.c **** tlen = *tbl++; ulen = 2; /* Given table size and required table size */ + 7266 .loc 1 4026 4 is_stmt 1 view .LVU2403 +4027:Middlewares/Third_Party/FatFs/src/ff.c **** cl = fp->obj.sclust; /* Origin of the chain */ + 7267 .loc 1 4027 4 view .LVU2404 +4027:Middlewares/Third_Party/FatFs/src/ff.c **** cl = fp->obj.sclust; /* Origin of the chain */ + 7268 .loc 1 4027 15 is_stmt 0 view .LVU2405 + 7269 003c 9846 mov r8, r3 + 7270 .LVL830: +4027:Middlewares/Third_Party/FatFs/src/ff.c **** cl = fp->obj.sclust; /* Origin of the chain */ + 7271 .loc 1 4027 9 view .LVU2406 + 7272 003e 58F804BB ldr fp, [r8], #4 + 7273 .LVL831: +4027:Middlewares/Third_Party/FatFs/src/ff.c **** cl = fp->obj.sclust; /* Origin of the chain */ + 7274 .loc 1 4027 19 is_stmt 1 view .LVU2407 +4028:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl) { + 7275 .loc 1 4028 4 view .LVU2408 +4028:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl) { + 7276 .loc 1 4028 7 is_stmt 0 view .LVU2409 + 7277 0042 D4F808A0 ldr r10, [r4, #8] + 7278 .LVL832: +4029:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 7279 .loc 1 4029 4 is_stmt 1 view .LVU2410 +4029:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 7280 .loc 1 4029 7 is_stmt 0 view .LVU2411 + 7281 0046 BAF1000F cmp r10, #0 + 7282 004a 27D0 beq .L559 +4027:Middlewares/Third_Party/FatFs/src/ff.c **** cl = fp->obj.sclust; /* Origin of the chain */ + 7283 .loc 1 4027 24 view .LVU2412 + 7284 004c 4FF00209 mov r9, #2 + 7285 .LVL833: + 7286 .L533: +4030:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get a fragment */ + 7287 .loc 1 4030 5 is_stmt 1 view .LVU2413 +4032:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 7288 .loc 1 4032 6 view .LVU2414 +4032:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 7289 .loc 1 4032 16 view .LVU2415 +4032:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 7290 .loc 1 4032 25 view .LVU2416 +4032:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 7291 .loc 1 4032 30 is_stmt 0 view .LVU2417 + 7292 0050 09F10209 add r9, r9, #2 + 7293 .LVL834: +4032:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 7294 .loc 1 4032 30 view .LVU2418 + 7295 0054 5146 mov r1, r10 +4032:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 7296 .loc 1 4032 20 view .LVU2419 + 7297 0056 0027 movs r7, #0 + 7298 .LVL835: + 7299 .L531: +4033:Middlewares/Third_Party/FatFs/src/ff.c **** pcl = cl; ncl++; + 7300 .loc 1 4033 6 is_stmt 1 view .LVU2420 +4034:Middlewares/Third_Party/FatFs/src/ff.c **** cl = get_fat(&fp->obj, cl); + 7301 .loc 1 4034 7 view .LVU2421 +4034:Middlewares/Third_Party/FatFs/src/ff.c **** cl = get_fat(&fp->obj, cl); + ARM GAS /tmp/cc5lWXRL.s page 269 + + + 7302 .loc 1 4034 17 view .LVU2422 +4034:Middlewares/Third_Party/FatFs/src/ff.c **** cl = get_fat(&fp->obj, cl); + 7303 .loc 1 4034 20 is_stmt 0 view .LVU2423 + 7304 0058 0137 adds r7, r7, #1 + 7305 .LVL836: +4035:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl <= 1) ABORT(fs, FR_INT_ERR); + 7306 .loc 1 4035 7 is_stmt 1 view .LVU2424 + 7307 005a 0E46 mov r6, r1 +4035:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl <= 1) ABORT(fs, FR_INT_ERR); + 7308 .loc 1 4035 12 is_stmt 0 view .LVU2425 + 7309 005c 2046 mov r0, r4 + 7310 005e FFF7FEFF bl get_fat + 7311 .LVL837: +4035:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl <= 1) ABORT(fs, FR_INT_ERR); + 7312 .loc 1 4035 12 view .LVU2426 + 7313 0062 0146 mov r1, r0 + 7314 .LVL838: +4036:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7315 .loc 1 4036 7 is_stmt 1 view .LVU2427 +4036:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7316 .loc 1 4036 10 is_stmt 0 view .LVU2428 + 7317 0064 0128 cmp r0, #1 + 7318 0066 13D9 bls .L568 +4036:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7319 .loc 1 4036 41 is_stmt 1 discriminator 2 view .LVU2429 +4037:Middlewares/Third_Party/FatFs/src/ff.c **** } while (cl == pcl + 1); + 7320 .loc 1 4037 7 discriminator 2 view .LVU2430 +4037:Middlewares/Third_Party/FatFs/src/ff.c **** } while (cl == pcl + 1); + 7321 .loc 1 4037 10 is_stmt 0 discriminator 2 view .LVU2431 + 7322 0068 B0F1FF3F cmp r0, #-1 + 7323 006c 13D0 beq .L569 +4037:Middlewares/Third_Party/FatFs/src/ff.c **** } while (cl == pcl + 1); + 7324 .loc 1 4037 51 is_stmt 1 discriminator 2 view .LVU2432 +4038:Middlewares/Third_Party/FatFs/src/ff.c **** if (ulen <= tlen) { /* Store the length and top of the fragment */ + 7325 .loc 1 4038 14 discriminator 2 view .LVU2433 +4038:Middlewares/Third_Party/FatFs/src/ff.c **** if (ulen <= tlen) { /* Store the length and top of the fragment */ + 7326 .loc 1 4038 25 is_stmt 0 discriminator 2 view .LVU2434 + 7327 006e 0136 adds r6, r6, #1 + 7328 .LVL839: +4038:Middlewares/Third_Party/FatFs/src/ff.c **** if (ulen <= tlen) { /* Store the length and top of the fragment */ + 7329 .loc 1 4038 6 discriminator 2 view .LVU2435 + 7330 0070 8642 cmp r6, r0 + 7331 0072 F1D0 beq .L531 +4039:Middlewares/Third_Party/FatFs/src/ff.c **** *tbl++ = ncl; *tbl++ = tcl; + 7332 .loc 1 4039 6 is_stmt 1 view .LVU2436 +4039:Middlewares/Third_Party/FatFs/src/ff.c **** *tbl++ = ncl; *tbl++ = tcl; + 7333 .loc 1 4039 9 is_stmt 0 view .LVU2437 + 7334 0074 CB45 cmp fp, r9 + 7335 0076 05D3 bcc .L532 +4040:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7336 .loc 1 4040 7 is_stmt 1 view .LVU2438 + 7337 .LVL840: +4040:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7338 .loc 1 4040 14 is_stmt 0 view .LVU2439 + 7339 0078 4346 mov r3, r8 + 7340 007a 43F8087B str r7, [r3], #8 +4040:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 270 + + + 7341 .loc 1 4040 21 is_stmt 1 view .LVU2440 + 7342 .LVL841: +4040:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7343 .loc 1 4040 28 is_stmt 0 view .LVU2441 + 7344 007e C8F804A0 str r10, [r8, #4] +4040:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7345 .loc 1 4040 25 view .LVU2442 + 7346 0082 9846 mov r8, r3 + 7347 .LVL842: + 7348 .L532: +4042:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7349 .loc 1 4042 13 is_stmt 1 view .LVU2443 +4042:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7350 .loc 1 4042 21 is_stmt 0 view .LVU2444 + 7351 0084 019B ldr r3, [sp, #4] + 7352 0086 9B69 ldr r3, [r3, #24] +4042:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7353 .loc 1 4042 5 view .LVU2445 + 7354 0088 8B42 cmp r3, r1 + 7355 008a 09D9 bls .L528 +4035:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl <= 1) ABORT(fs, FR_INT_ERR); + 7356 .loc 1 4035 12 view .LVU2446 + 7357 008c 8A46 mov r10, r1 + 7358 .LVL843: +4035:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl <= 1) ABORT(fs, FR_INT_ERR); + 7359 .loc 1 4035 12 view .LVU2447 + 7360 008e DFE7 b .L533 + 7361 .LVL844: + 7362 .L568: +4036:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7363 .loc 1 4036 20 is_stmt 1 discriminator 1 view .LVU2448 + 7364 0090 0225 movs r5, #2 + 7365 .LVL845: +4036:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7366 .loc 1 4036 20 is_stmt 0 discriminator 1 view .LVU2449 + 7367 0092 6575 strb r5, [r4, #21] +4036:Middlewares/Third_Party/FatFs/src/ff.c **** if (cl == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7368 .loc 1 4036 20 is_stmt 1 discriminator 1 view .LVU2450 + 7369 0094 CEE7 b .L525 + 7370 .LVL846: + 7371 .L569: +4037:Middlewares/Third_Party/FatFs/src/ff.c **** } while (cl == pcl + 1); + 7372 .loc 1 4037 29 discriminator 1 view .LVU2451 + 7373 0096 0125 movs r5, #1 + 7374 .LVL847: +4037:Middlewares/Third_Party/FatFs/src/ff.c **** } while (cl == pcl + 1); + 7375 .loc 1 4037 29 is_stmt 0 discriminator 1 view .LVU2452 + 7376 0098 6575 strb r5, [r4, #21] +4037:Middlewares/Third_Party/FatFs/src/ff.c **** } while (cl == pcl + 1); + 7377 .loc 1 4037 29 is_stmt 1 discriminator 1 view .LVU2453 + 7378 009a CBE7 b .L525 + 7379 .LVL848: + 7380 .L559: +4027:Middlewares/Third_Party/FatFs/src/ff.c **** cl = fp->obj.sclust; /* Origin of the chain */ + 7381 .loc 1 4027 24 is_stmt 0 view .LVU2454 + 7382 009c 4FF00209 mov r9, #2 + 7383 .LVL849: + ARM GAS /tmp/cc5lWXRL.s page 271 + + + 7384 .L528: +4044:Middlewares/Third_Party/FatFs/src/ff.c **** if (ulen <= tlen) { + 7385 .loc 1 4044 4 is_stmt 1 view .LVU2455 +4044:Middlewares/Third_Party/FatFs/src/ff.c **** if (ulen <= tlen) { + 7386 .loc 1 4044 7 is_stmt 0 view .LVU2456 + 7387 00a0 E36A ldr r3, [r4, #44] +4044:Middlewares/Third_Party/FatFs/src/ff.c **** if (ulen <= tlen) { + 7388 .loc 1 4044 15 view .LVU2457 + 7389 00a2 C3F80090 str r9, [r3] +4045:Middlewares/Third_Party/FatFs/src/ff.c **** *tbl = 0; /* Terminate table */ + 7390 .loc 1 4045 4 is_stmt 1 view .LVU2458 +4045:Middlewares/Third_Party/FatFs/src/ff.c **** *tbl = 0; /* Terminate table */ + 7391 .loc 1 4045 7 is_stmt 0 view .LVU2459 + 7392 00a6 D945 cmp r9, fp + 7393 00a8 00F2FB80 bhi .L561 +4046:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 7394 .loc 1 4046 5 is_stmt 1 view .LVU2460 +4046:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 7395 .loc 1 4046 10 is_stmt 0 view .LVU2461 + 7396 00ac 0023 movs r3, #0 + 7397 00ae C8F80030 str r3, [r8] + 7398 00b2 BFE7 b .L525 + 7399 .LVL850: + 7400 .L567: +4054:Middlewares/Third_Party/FatFs/src/ff.c **** dsc = clust2sect(fs, fp->clust); + 7401 .loc 1 4054 5 is_stmt 1 view .LVU2462 +4054:Middlewares/Third_Party/FatFs/src/ff.c **** dsc = clust2sect(fs, fp->clust); + 7402 .loc 1 4054 17 is_stmt 0 view .LVU2463 + 7403 00b4 7E1E subs r6, r7, #1 + 7404 00b6 3146 mov r1, r6 + 7405 00b8 2046 mov r0, r4 + 7406 00ba FFF7FEFF bl clmt_clust + 7407 .LVL851: + 7408 00be 0146 mov r1, r0 +4054:Middlewares/Third_Party/FatFs/src/ff.c **** dsc = clust2sect(fs, fp->clust); + 7409 .loc 1 4054 15 view .LVU2464 + 7410 00c0 E061 str r0, [r4, #28] +4055:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dsc) ABORT(fs, FR_INT_ERR); + 7411 .loc 1 4055 5 is_stmt 1 view .LVU2465 +4055:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dsc) ABORT(fs, FR_INT_ERR); + 7412 .loc 1 4055 11 is_stmt 0 view .LVU2466 + 7413 00c2 DDF80480 ldr r8, [sp, #4] + 7414 00c6 4046 mov r0, r8 + 7415 00c8 FFF7FEFF bl clust2sect + 7416 .LVL852: +4056:Middlewares/Third_Party/FatFs/src/ff.c **** dsc += (DWORD)((ofs - 1) / SS(fs)) & (fs->csize - 1); + 7417 .loc 1 4056 5 is_stmt 1 view .LVU2467 +4056:Middlewares/Third_Party/FatFs/src/ff.c **** dsc += (DWORD)((ofs - 1) / SS(fs)) & (fs->csize - 1); + 7418 .loc 1 4056 8 is_stmt 0 view .LVU2468 + 7419 00cc 00B3 cbz r0, .L570 +4056:Middlewares/Third_Party/FatFs/src/ff.c **** dsc += (DWORD)((ofs - 1) / SS(fs)) & (fs->csize - 1); + 7420 .loc 1 4056 36 is_stmt 1 discriminator 2 view .LVU2469 +4057:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) && dsc != fp->sect) { /* Refill sector cache if needed */ + 7421 .loc 1 4057 5 discriminator 2 view .LVU2470 +4057:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) && dsc != fp->sect) { /* Refill sector cache if needed */ + 7422 .loc 1 4057 32 is_stmt 0 discriminator 2 view .LVU2471 + 7423 00ce B8F80C30 ldrh r3, [r8, #12] + ARM GAS /tmp/cc5lWXRL.s page 272 + + +4057:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) && dsc != fp->sect) { /* Refill sector cache if needed */ + 7424 .loc 1 4057 12 discriminator 2 view .LVU2472 + 7425 00d2 B6FBF3F6 udiv r6, r6, r3 +4057:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) && dsc != fp->sect) { /* Refill sector cache if needed */ + 7426 .loc 1 4057 45 discriminator 2 view .LVU2473 + 7427 00d6 B8F80A20 ldrh r2, [r8, #10] +4057:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) && dsc != fp->sect) { /* Refill sector cache if needed */ + 7428 .loc 1 4057 53 discriminator 2 view .LVU2474 + 7429 00da 013A subs r2, r2, #1 +4057:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) && dsc != fp->sect) { /* Refill sector cache if needed */ + 7430 .loc 1 4057 40 discriminator 2 view .LVU2475 + 7431 00dc 1640 ands r6, r6, r2 +4057:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr % SS(fs) && dsc != fp->sect) { /* Refill sector cache if needed */ + 7432 .loc 1 4057 9 discriminator 2 view .LVU2476 + 7433 00de 0644 add r6, r6, r0 + 7434 .LVL853: +4058:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 7435 .loc 1 4058 5 is_stmt 1 discriminator 2 view .LVU2477 +4058:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 7436 .loc 1 4058 18 is_stmt 0 discriminator 2 view .LVU2478 + 7437 00e0 B7FBF3F2 udiv r2, r7, r3 + 7438 00e4 03FB1277 mls r7, r3, r2, r7 + 7439 .LVL854: +4058:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 7440 .loc 1 4058 8 discriminator 2 view .LVU2479 + 7441 00e8 002F cmp r7, #0 + 7442 00ea A3D0 beq .L525 +4058:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 7443 .loc 1 4058 39 discriminator 1 view .LVU2480 + 7444 00ec 226A ldr r2, [r4, #32] +4058:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 7445 .loc 1 4058 27 discriminator 1 view .LVU2481 + 7446 00ee B242 cmp r2, r6 + 7447 00f0 A0D0 beq .L525 +4061:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 7448 .loc 1 4061 6 is_stmt 1 view .LVU2482 +4061:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 7449 .loc 1 4061 10 is_stmt 0 view .LVU2483 + 7450 00f2 94F91430 ldrsb r3, [r4, #20] +4061:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 7451 .loc 1 4061 9 view .LVU2484 + 7452 00f6 002B cmp r3, #0 + 7453 00f8 0DDB blt .L571 + 7454 .L536: +4066:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7455 .loc 1 4066 6 is_stmt 1 view .LVU2485 +4066:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7456 .loc 1 4066 10 is_stmt 0 view .LVU2486 + 7457 00fa 0123 movs r3, #1 + 7458 00fc 3246 mov r2, r6 + 7459 00fe 04F13001 add r1, r4, #48 + 7460 0102 0198 ldr r0, [sp, #4] + 7461 0104 4078 ldrb r0, [r0, #1] @ zero_extendqisi2 + 7462 0106 FFF7FEFF bl disk_read + 7463 .LVL855: +4066:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7464 .loc 1 4066 9 view .LVU2487 + ARM GAS /tmp/cc5lWXRL.s page 273 + + + 7465 010a A0B9 cbnz r0, .L572 +4066:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7466 .loc 1 4066 79 is_stmt 1 discriminator 2 view .LVU2488 +4068:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7467 .loc 1 4068 6 discriminator 2 view .LVU2489 +4068:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7468 .loc 1 4068 15 is_stmt 0 discriminator 2 view .LVU2490 + 7469 010c 2662 str r6, [r4, #32] + 7470 010e 91E7 b .L525 + 7471 .LVL856: + 7472 .L570: +4056:Middlewares/Third_Party/FatFs/src/ff.c **** dsc += (DWORD)((ofs - 1) / SS(fs)) & (fs->csize - 1); + 7473 .loc 1 4056 15 is_stmt 1 discriminator 1 view .LVU2491 + 7474 0110 0225 movs r5, #2 + 7475 .LVL857: +4056:Middlewares/Third_Party/FatFs/src/ff.c **** dsc += (DWORD)((ofs - 1) / SS(fs)) & (fs->csize - 1); + 7476 .loc 1 4056 15 is_stmt 0 discriminator 1 view .LVU2492 + 7477 0112 6575 strb r5, [r4, #21] +4056:Middlewares/Third_Party/FatFs/src/ff.c **** dsc += (DWORD)((ofs - 1) / SS(fs)) & (fs->csize - 1); + 7478 .loc 1 4056 15 is_stmt 1 discriminator 1 view .LVU2493 + 7479 0114 8EE7 b .L525 + 7480 .LVL858: + 7481 .L571: +4062:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7482 .loc 1 4062 7 view .LVU2494 +4062:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7483 .loc 1 4062 11 is_stmt 0 view .LVU2495 + 7484 0116 0123 movs r3, #1 + 7485 0118 04F13001 add r1, r4, #48 + 7486 011c 98F80100 ldrb r0, [r8, #1] @ zero_extendqisi2 + 7487 0120 FFF7FEFF bl disk_write + 7488 .LVL859: +4062:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7489 .loc 1 4062 10 view .LVU2496 + 7490 0124 20B9 cbnz r0, .L573 +4062:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7491 .loc 1 4062 86 is_stmt 1 discriminator 2 view .LVU2497 +4063:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7492 .loc 1 4063 7 discriminator 2 view .LVU2498 +4063:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7493 .loc 1 4063 16 is_stmt 0 discriminator 2 view .LVU2499 + 7494 0126 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 7495 0128 03F07F03 and r3, r3, #127 + 7496 012c 2375 strb r3, [r4, #20] + 7497 012e E4E7 b .L536 + 7498 .L573: +4062:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7499 .loc 1 4062 64 is_stmt 1 discriminator 1 view .LVU2500 + 7500 0130 0125 movs r5, #1 + 7501 .LVL860: +4062:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7502 .loc 1 4062 64 is_stmt 0 discriminator 1 view .LVU2501 + 7503 0132 6575 strb r5, [r4, #21] +4062:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7504 .loc 1 4062 64 is_stmt 1 discriminator 1 view .LVU2502 + 7505 0134 7EE7 b .L525 + 7506 .LVL861: + ARM GAS /tmp/cc5lWXRL.s page 274 + + + 7507 .L572: +4066:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7508 .loc 1 4066 57 discriminator 1 view .LVU2503 + 7509 0136 0125 movs r5, #1 + 7510 .LVL862: +4066:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7511 .loc 1 4066 57 is_stmt 0 discriminator 1 view .LVU2504 + 7512 0138 6575 strb r5, [r4, #21] +4066:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7513 .loc 1 4066 57 is_stmt 1 discriminator 1 view .LVU2505 + 7514 013a 7BE7 b .L525 + 7515 .LVL863: + 7516 .L526: +4080:Middlewares/Third_Party/FatFs/src/ff.c **** ofs = fp->obj.objsize; + 7517 .loc 1 4080 3 view .LVU2506 +4080:Middlewares/Third_Party/FatFs/src/ff.c **** ofs = fp->obj.objsize; + 7518 .loc 1 4080 20 is_stmt 0 view .LVU2507 + 7519 013c E368 ldr r3, [r4, #12] +4080:Middlewares/Third_Party/FatFs/src/ff.c **** ofs = fp->obj.objsize; + 7520 .loc 1 4080 6 view .LVU2508 + 7521 013e B342 cmp r3, r6 + 7522 0140 04D2 bcs .L539 +4080:Middlewares/Third_Party/FatFs/src/ff.c **** ofs = fp->obj.objsize; + 7523 .loc 1 4080 53 discriminator 1 view .LVU2509 + 7524 0142 227D ldrb r2, [r4, #20] @ zero_extendqisi2 +4080:Middlewares/Third_Party/FatFs/src/ff.c **** ofs = fp->obj.objsize; + 7525 .loc 1 4080 29 discriminator 1 view .LVU2510 + 7526 0144 12F0020F tst r2, #2 + 7527 0148 00D1 bne .L539 +4081:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7528 .loc 1 4081 8 view .LVU2511 + 7529 014a 1E46 mov r6, r3 + 7530 .LVL864: + 7531 .L539: +4083:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = nsect = 0; + 7532 .loc 1 4083 3 is_stmt 1 view .LVU2512 +4083:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = nsect = 0; + 7533 .loc 1 4083 9 is_stmt 0 view .LVU2513 + 7534 014c A369 ldr r3, [r4, #24] + 7535 .LVL865: +4084:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs) { + 7536 .loc 1 4084 3 is_stmt 1 view .LVU2514 +4084:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs) { + 7537 .loc 1 4084 12 is_stmt 0 view .LVU2515 + 7538 014e 0022 movs r2, #0 + 7539 0150 A261 str r2, [r4, #24] +4085:Middlewares/Third_Party/FatFs/src/ff.c **** bcs = (DWORD)fs->csize * SS(fs); /* Cluster size (byte) */ + 7540 .loc 1 4085 3 is_stmt 1 view .LVU2516 +4085:Middlewares/Third_Party/FatFs/src/ff.c **** bcs = (DWORD)fs->csize * SS(fs); /* Cluster size (byte) */ + 7541 .loc 1 4085 6 is_stmt 0 view .LVU2517 + 7542 0152 E6B1 cbz r6, .L540 +4086:Middlewares/Third_Party/FatFs/src/ff.c **** if (ifptr > 0 && + 7543 .loc 1 4086 4 is_stmt 1 view .LVU2518 +4086:Middlewares/Third_Party/FatFs/src/ff.c **** if (ifptr > 0 && + 7544 .loc 1 4086 19 is_stmt 0 view .LVU2519 + 7545 0154 019A ldr r2, [sp, #4] + 7546 0156 B2F80A80 ldrh r8, [r2, #10] + ARM GAS /tmp/cc5lWXRL.s page 275 + + +4086:Middlewares/Third_Party/FatFs/src/ff.c **** if (ifptr > 0 && + 7547 .loc 1 4086 29 view .LVU2520 + 7548 015a 9289 ldrh r2, [r2, #12] +4086:Middlewares/Third_Party/FatFs/src/ff.c **** if (ifptr > 0 && + 7549 .loc 1 4086 8 view .LVU2521 + 7550 015c 02FB08F8 mul r8, r2, r8 + 7551 .LVL866: +4087:Middlewares/Third_Party/FatFs/src/ff.c **** (ofs - 1) / bcs >= (ifptr - 1) / bcs) { /* When seek to same or following cluster, */ + 7552 .loc 1 4087 4 is_stmt 1 view .LVU2522 +4087:Middlewares/Third_Party/FatFs/src/ff.c **** (ofs - 1) / bcs >= (ifptr - 1) / bcs) { /* When seek to same or following cluster, */ + 7553 .loc 1 4087 7 is_stmt 0 view .LVU2523 + 7554 0160 73B1 cbz r3, .L541 +4088:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = (ifptr - 1) & ~(FSIZE_t)(bcs - 1); /* start from the current cluster */ + 7555 .loc 1 4088 10 discriminator 1 view .LVU2524 + 7556 0162 721E subs r2, r6, #1 +4088:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = (ifptr - 1) & ~(FSIZE_t)(bcs - 1); /* start from the current cluster */ + 7557 .loc 1 4088 15 discriminator 1 view .LVU2525 + 7558 0164 B2FBF8F2 udiv r2, r2, r8 +4088:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = (ifptr - 1) & ~(FSIZE_t)(bcs - 1); /* start from the current cluster */ + 7559 .loc 1 4088 31 discriminator 1 view .LVU2526 + 7560 0168 013B subs r3, r3, #1 + 7561 .LVL867: +4088:Middlewares/Third_Party/FatFs/src/ff.c **** fp->fptr = (ifptr - 1) & ~(FSIZE_t)(bcs - 1); /* start from the current cluster */ + 7562 .loc 1 4088 36 discriminator 1 view .LVU2527 + 7563 016a B3FBF8F1 udiv r1, r3, r8 +4087:Middlewares/Third_Party/FatFs/src/ff.c **** (ofs - 1) / bcs >= (ifptr - 1) / bcs) { /* When seek to same or following cluster, */ + 7564 .loc 1 4087 18 discriminator 1 view .LVU2528 + 7565 016e 8A42 cmp r2, r1 + 7566 0170 06D3 bcc .L541 +4089:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= fp->fptr; + 7567 .loc 1 4089 5 is_stmt 1 view .LVU2529 +4089:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= fp->fptr; + 7568 .loc 1 4089 30 is_stmt 0 view .LVU2530 + 7569 0172 C8F10007 rsb r7, r8, #0 +4089:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= fp->fptr; + 7570 .loc 1 4089 28 view .LVU2531 + 7571 0176 1F40 ands r7, r7, r3 +4089:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= fp->fptr; + 7572 .loc 1 4089 14 view .LVU2532 + 7573 0178 A761 str r7, [r4, #24] +4090:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->clust; + 7574 .loc 1 4090 5 is_stmt 1 view .LVU2533 +4090:Middlewares/Third_Party/FatFs/src/ff.c **** clst = fp->clust; + 7575 .loc 1 4090 9 is_stmt 0 view .LVU2534 + 7576 017a F71B subs r7, r6, r7 + 7577 .LVL868: +4091:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* When seek to back cluster, */ + 7578 .loc 1 4091 5 is_stmt 1 view .LVU2535 +4091:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* When seek to back cluster, */ + 7579 .loc 1 4091 10 is_stmt 0 view .LVU2536 + 7580 017c E669 ldr r6, [r4, #28] + 7581 .LVL869: +4091:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* When seek to back cluster, */ + 7582 .loc 1 4091 10 view .LVU2537 + 7583 017e 04E0 b .L542 + 7584 .LVL870: + 7585 .L541: + ARM GAS /tmp/cc5lWXRL.s page 276 + + +4093:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 7586 .loc 1 4093 5 is_stmt 1 view .LVU2538 +4093:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 7587 .loc 1 4093 10 is_stmt 0 view .LVU2539 + 7588 0180 A068 ldr r0, [r4, #8] + 7589 .LVL871: +4095:Middlewares/Third_Party/FatFs/src/ff.c **** clst = create_chain(&fp->obj, 0); + 7590 .loc 1 4095 5 is_stmt 1 view .LVU2540 +4095:Middlewares/Third_Party/FatFs/src/ff.c **** clst = create_chain(&fp->obj, 0); + 7591 .loc 1 4095 8 is_stmt 0 view .LVU2541 + 7592 0182 50B3 cbz r0, .L574 + 7593 .L543: +4102:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7594 .loc 1 4102 5 is_stmt 1 view .LVU2542 +4102:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7595 .loc 1 4102 15 is_stmt 0 view .LVU2543 + 7596 0184 E061 str r0, [r4, #28] + 7597 0186 3746 mov r7, r6 + 7598 0188 0646 mov r6, r0 + 7599 .LVL872: + 7600 .L542: +4104:Middlewares/Third_Party/FatFs/src/ff.c **** while (ofs > bcs) { /* Cluster following loop */ + 7601 .loc 1 4104 4 is_stmt 1 view .LVU2544 +4104:Middlewares/Third_Party/FatFs/src/ff.c **** while (ofs > bcs) { /* Cluster following loop */ + 7602 .loc 1 4104 7 is_stmt 0 view .LVU2545 + 7603 018a 002E cmp r6, #0 + 7604 018c 45D1 bne .L546 + 7605 .LVL873: + 7606 .L540: +4134:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = fp->fptr; + 7607 .loc 1 4134 3 is_stmt 1 view .LVU2546 +4134:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = fp->fptr; + 7608 .loc 1 4134 26 is_stmt 0 view .LVU2547 + 7609 018e A369 ldr r3, [r4, #24] +4134:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = fp->fptr; + 7610 .loc 1 4134 42 view .LVU2548 + 7611 0190 E268 ldr r2, [r4, #12] +4134:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = fp->fptr; + 7612 .loc 1 4134 6 view .LVU2549 + 7613 0192 9342 cmp r3, r2 + 7614 0194 04D9 bls .L555 +4135:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_MODIFIED; + 7615 .loc 1 4135 4 is_stmt 1 view .LVU2550 +4135:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_MODIFIED; + 7616 .loc 1 4135 20 is_stmt 0 view .LVU2551 + 7617 0196 E360 str r3, [r4, #12] +4136:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7618 .loc 1 4136 4 is_stmt 1 view .LVU2552 +4136:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7619 .loc 1 4136 13 is_stmt 0 view .LVU2553 + 7620 0198 227D ldrb r2, [r4, #20] @ zero_extendqisi2 + 7621 019a 42F04002 orr r2, r2, #64 + 7622 019e 2275 strb r2, [r4, #20] + 7623 .L555: +4138:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 7624 .loc 1 4138 3 is_stmt 1 view .LVU2554 +4138:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + ARM GAS /tmp/cc5lWXRL.s page 277 + + + 7625 .loc 1 4138 18 is_stmt 0 view .LVU2555 + 7626 01a0 0198 ldr r0, [sp, #4] + 7627 01a2 8289 ldrh r2, [r0, #12] +4138:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 7628 .loc 1 4138 16 view .LVU2556 + 7629 01a4 B3FBF2F1 udiv r1, r3, r2 + 7630 01a8 02FB1133 mls r3, r2, r1, r3 +4138:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 7631 .loc 1 4138 6 view .LVU2557 + 7632 01ac 002B cmp r3, #0 + 7633 01ae 3FF441AF beq .L525 +4138:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 7634 .loc 1 4138 39 discriminator 1 view .LVU2558 + 7635 01b2 226A ldr r2, [r4, #32] +4138:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 7636 .loc 1 4138 25 discriminator 1 view .LVU2559 + 7637 01b4 B242 cmp r2, r6 + 7638 01b6 3FF43DAF beq .L525 +4141:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 7639 .loc 1 4141 4 is_stmt 1 view .LVU2560 +4141:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 7640 .loc 1 4141 8 is_stmt 0 view .LVU2561 + 7641 01ba 94F91430 ldrsb r3, [r4, #20] +4141:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) ABORT(fs, FR_DISK_ERR); + 7642 .loc 1 4141 7 view .LVU2562 + 7643 01be 002B cmp r3, #0 + 7644 01c0 5DDB blt .L575 + 7645 .L556: +4146:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7646 .loc 1 4146 4 is_stmt 1 view .LVU2563 +4146:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7647 .loc 1 4146 8 is_stmt 0 view .LVU2564 + 7648 01c2 0123 movs r3, #1 + 7649 01c4 3246 mov r2, r6 + 7650 01c6 04F13001 add r1, r4, #48 + 7651 01ca 0198 ldr r0, [sp, #4] + 7652 01cc 4078 ldrb r0, [r0, #1] @ zero_extendqisi2 + 7653 01ce FFF7FEFF bl disk_read + 7654 .LVL874: +4146:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7655 .loc 1 4146 7 view .LVU2565 + 7656 01d2 0028 cmp r0, #0 + 7657 01d4 62D1 bne .L576 +4146:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7658 .loc 1 4146 79 is_stmt 1 discriminator 2 view .LVU2566 +4148:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7659 .loc 1 4148 4 discriminator 2 view .LVU2567 +4148:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7660 .loc 1 4148 13 is_stmt 0 discriminator 2 view .LVU2568 + 7661 01d6 2662 str r6, [r4, #32] + 7662 01d8 2CE7 b .L525 + 7663 .LVL875: + 7664 .L574: +4096:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) ABORT(fs, FR_INT_ERR); + 7665 .loc 1 4096 6 is_stmt 1 view .LVU2569 +4096:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) ABORT(fs, FR_INT_ERR); + 7666 .loc 1 4096 13 is_stmt 0 view .LVU2570 + ARM GAS /tmp/cc5lWXRL.s page 278 + + + 7667 01da 0021 movs r1, #0 + 7668 01dc 2046 mov r0, r4 + 7669 .LVL876: +4096:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 1) ABORT(fs, FR_INT_ERR); + 7670 .loc 1 4096 13 view .LVU2571 + 7671 01de FFF7FEFF bl create_chain + 7672 .LVL877: +4097:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7673 .loc 1 4097 6 is_stmt 1 view .LVU2572 +4097:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7674 .loc 1 4097 9 is_stmt 0 view .LVU2573 + 7675 01e2 0128 cmp r0, #1 + 7676 01e4 04D0 beq .L577 +4097:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7677 .loc 1 4097 42 is_stmt 1 discriminator 2 view .LVU2574 +4098:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = clst; + 7678 .loc 1 4098 6 discriminator 2 view .LVU2575 +4098:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = clst; + 7679 .loc 1 4098 9 is_stmt 0 discriminator 2 view .LVU2576 + 7680 01e6 B0F1FF3F cmp r0, #-1 + 7681 01ea 04D0 beq .L578 +4098:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = clst; + 7682 .loc 1 4098 52 is_stmt 1 discriminator 2 view .LVU2577 +4099:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7683 .loc 1 4099 6 discriminator 2 view .LVU2578 +4099:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7684 .loc 1 4099 21 is_stmt 0 discriminator 2 view .LVU2579 + 7685 01ec A060 str r0, [r4, #8] + 7686 01ee C9E7 b .L543 + 7687 .L577: +4097:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7688 .loc 1 4097 21 is_stmt 1 discriminator 1 view .LVU2580 + 7689 01f0 0225 movs r5, #2 + 7690 .LVL878: +4097:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7691 .loc 1 4097 21 is_stmt 0 discriminator 1 view .LVU2581 + 7692 01f2 6575 strb r5, [r4, #21] +4097:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR); + 7693 .loc 1 4097 21 is_stmt 1 discriminator 1 view .LVU2582 + 7694 01f4 1EE7 b .L525 + 7695 .LVL879: + 7696 .L578: +4098:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = clst; + 7697 .loc 1 4098 30 discriminator 1 view .LVU2583 + 7698 01f6 0125 movs r5, #1 + 7699 .LVL880: +4098:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = clst; + 7700 .loc 1 4098 30 is_stmt 0 discriminator 1 view .LVU2584 + 7701 01f8 6575 strb r5, [r4, #21] +4098:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = clst; + 7702 .loc 1 4098 30 is_stmt 1 discriminator 1 view .LVU2585 + 7703 01fa 1BE7 b .L525 + 7704 .LVL881: + 7705 .L547: +4120:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7706 .loc 1 4120 7 view .LVU2586 +4120:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 279 + + + 7707 .loc 1 4120 14 is_stmt 0 view .LVU2587 + 7708 01fc 3146 mov r1, r6 + 7709 01fe 2046 mov r0, r4 + 7710 0200 FFF7FEFF bl get_fat + 7711 .LVL882: + 7712 0204 0646 mov r6, r0 + 7713 .LVL883: + 7714 .L549: +4122:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR); + 7715 .loc 1 4122 6 is_stmt 1 view .LVU2588 +4122:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR); + 7716 .loc 1 4122 9 is_stmt 0 view .LVU2589 + 7717 0206 B6F1FF3F cmp r6, #-1 + 7718 020a 2DD0 beq .L579 +4122:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR); + 7719 .loc 1 4122 52 is_stmt 1 discriminator 2 view .LVU2590 +4123:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; + 7720 .loc 1 4123 6 discriminator 2 view .LVU2591 +4123:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; + 7721 .loc 1 4123 9 is_stmt 0 discriminator 2 view .LVU2592 + 7722 020c 012E cmp r6, #1 + 7723 020e 2ED9 bls .L551 +4123:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; + 7724 .loc 1 4123 33 discriminator 2 view .LVU2593 + 7725 0210 019B ldr r3, [sp, #4] + 7726 0212 9B69 ldr r3, [r3, #24] +4123:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; + 7727 .loc 1 4123 20 discriminator 2 view .LVU2594 + 7728 0214 B342 cmp r3, r6 + 7729 0216 2AD9 bls .L551 +4123:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; + 7730 .loc 1 4123 66 is_stmt 1 discriminator 4 view .LVU2595 +4124:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7731 .loc 1 4124 6 discriminator 4 view .LVU2596 +4124:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7732 .loc 1 4124 16 is_stmt 0 discriminator 4 view .LVU2597 + 7733 0218 E661 str r6, [r4, #28] + 7734 .LVL884: + 7735 .L546: +4105:Middlewares/Third_Party/FatFs/src/ff.c **** ofs -= bcs; fp->fptr += bcs; + 7736 .loc 1 4105 11 is_stmt 1 view .LVU2598 + 7737 021a 4745 cmp r7, r8 + 7738 021c 10D9 bls .L548 +4106:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 7739 .loc 1 4106 6 view .LVU2599 +4106:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 7740 .loc 1 4106 10 is_stmt 0 view .LVU2600 + 7741 021e A7EB0807 sub r7, r7, r8 + 7742 .LVL885: +4106:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 7743 .loc 1 4106 18 is_stmt 1 view .LVU2601 +4106:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_READONLY + 7744 .loc 1 4106 27 is_stmt 0 view .LVU2602 + 7745 0222 A369 ldr r3, [r4, #24] + 7746 0224 4344 add r3, r3, r8 + 7747 0226 A361 str r3, [r4, #24] +4108:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT && fp->fptr > fp->obj.objsize) { /* No FAT chain object needs correct objsize t + ARM GAS /tmp/cc5lWXRL.s page 280 + + + 7748 .loc 1 4108 6 is_stmt 1 view .LVU2603 +4108:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT && fp->fptr > fp->obj.objsize) { /* No FAT chain object needs correct objsize t + 7749 .loc 1 4108 12 is_stmt 0 view .LVU2604 + 7750 0228 237D ldrb r3, [r4, #20] @ zero_extendqisi2 +4108:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT && fp->fptr > fp->obj.objsize) { /* No FAT chain object needs correct objsize t + 7751 .loc 1 4108 9 view .LVU2605 + 7752 022a 13F0020F tst r3, #2 + 7753 022e E5D0 beq .L547 +4109:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.objsize = fp->fptr; + 7754 .loc 1 4109 7 is_stmt 1 view .LVU2606 +4113:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) { /* Clip file size in case of disk full */ + 7755 .loc 1 4113 7 view .LVU2607 +4113:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst == 0) { /* Clip file size in case of disk full */ + 7756 .loc 1 4113 14 is_stmt 0 view .LVU2608 + 7757 0230 3146 mov r1, r6 + 7758 0232 2046 mov r0, r4 + 7759 0234 FFF7FEFF bl create_chain + 7760 .LVL886: +4114:Middlewares/Third_Party/FatFs/src/ff.c **** ofs = 0; break; + 7761 .loc 1 4114 7 is_stmt 1 view .LVU2609 +4114:Middlewares/Third_Party/FatFs/src/ff.c **** ofs = 0; break; + 7762 .loc 1 4114 10 is_stmt 0 view .LVU2610 + 7763 0238 0646 mov r6, r0 + 7764 023a 0028 cmp r0, #0 + 7765 023c E3D1 bne .L549 +4115:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7766 .loc 1 4115 12 view .LVU2611 + 7767 023e 0746 mov r7, r0 + 7768 .LVL887: + 7769 .L548: +4126:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs % SS(fs)) { + 7770 .loc 1 4126 5 is_stmt 1 view .LVU2612 +4126:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs % SS(fs)) { + 7771 .loc 1 4126 14 is_stmt 0 view .LVU2613 + 7772 0240 A369 ldr r3, [r4, #24] + 7773 0242 3B44 add r3, r3, r7 + 7774 0244 A361 str r3, [r4, #24] +4127:Middlewares/Third_Party/FatFs/src/ff.c **** nsect = clust2sect(fs, clst); /* Current sector */ + 7775 .loc 1 4127 5 is_stmt 1 view .LVU2614 +4127:Middlewares/Third_Party/FatFs/src/ff.c **** nsect = clust2sect(fs, clst); /* Current sector */ + 7776 .loc 1 4127 15 is_stmt 0 view .LVU2615 + 7777 0246 0198 ldr r0, [sp, #4] + 7778 0248 B0F80C80 ldrh r8, [r0, #12] + 7779 .LVL888: +4127:Middlewares/Third_Party/FatFs/src/ff.c **** nsect = clust2sect(fs, clst); /* Current sector */ + 7780 .loc 1 4127 13 view .LVU2616 + 7781 024c B7FBF8F3 udiv r3, r7, r8 + 7782 0250 08FB1373 mls r3, r8, r3, r7 +4127:Middlewares/Third_Party/FatFs/src/ff.c **** nsect = clust2sect(fs, clst); /* Current sector */ + 7783 .loc 1 4127 8 view .LVU2617 + 7784 0254 8BB1 cbz r3, .L564 +4128:Middlewares/Third_Party/FatFs/src/ff.c **** if (!nsect) ABORT(fs, FR_INT_ERR); + 7785 .loc 1 4128 6 is_stmt 1 view .LVU2618 +4128:Middlewares/Third_Party/FatFs/src/ff.c **** if (!nsect) ABORT(fs, FR_INT_ERR); + 7786 .loc 1 4128 14 is_stmt 0 view .LVU2619 + 7787 0256 3146 mov r1, r6 + 7788 0258 FFF7FEFF bl clust2sect + ARM GAS /tmp/cc5lWXRL.s page 281 + + + 7789 .LVL889: +4129:Middlewares/Third_Party/FatFs/src/ff.c **** nsect += (DWORD)(ofs / SS(fs)); + 7790 .loc 1 4129 6 is_stmt 1 view .LVU2620 +4129:Middlewares/Third_Party/FatFs/src/ff.c **** nsect += (DWORD)(ofs / SS(fs)); + 7791 .loc 1 4129 9 is_stmt 0 view .LVU2621 + 7792 025c 0646 mov r6, r0 + 7793 .LVL890: +4129:Middlewares/Third_Party/FatFs/src/ff.c **** nsect += (DWORD)(ofs / SS(fs)); + 7794 .loc 1 4129 9 view .LVU2622 + 7795 025e 48B1 cbz r0, .L580 +4129:Middlewares/Third_Party/FatFs/src/ff.c **** nsect += (DWORD)(ofs / SS(fs)); + 7796 .loc 1 4129 39 is_stmt 1 discriminator 2 view .LVU2623 +4130:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7797 .loc 1 4130 6 discriminator 2 view .LVU2624 +4130:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7798 .loc 1 4130 15 is_stmt 0 discriminator 2 view .LVU2625 + 7799 0260 B7FBF8F7 udiv r7, r7, r8 + 7800 .LVL891: +4130:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7801 .loc 1 4130 12 discriminator 2 view .LVU2626 + 7802 0264 3E44 add r6, r6, r7 + 7803 .LVL892: +4130:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7804 .loc 1 4130 12 discriminator 2 view .LVU2627 + 7805 0266 92E7 b .L540 + 7806 .LVL893: + 7807 .L579: +4122:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR); + 7808 .loc 1 4122 30 is_stmt 1 discriminator 1 view .LVU2628 + 7809 0268 0125 movs r5, #1 + 7810 .LVL894: +4122:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR); + 7811 .loc 1 4122 30 is_stmt 0 discriminator 1 view .LVU2629 + 7812 026a 6575 strb r5, [r4, #21] +4122:Middlewares/Third_Party/FatFs/src/ff.c **** if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR); + 7813 .loc 1 4122 30 is_stmt 1 discriminator 1 view .LVU2630 + 7814 026c E2E6 b .L525 + 7815 .LVL895: + 7816 .L551: +4123:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; + 7817 .loc 1 4123 45 discriminator 3 view .LVU2631 + 7818 026e 0225 movs r5, #2 + 7819 .LVL896: +4123:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; + 7820 .loc 1 4123 45 is_stmt 0 discriminator 3 view .LVU2632 + 7821 0270 6575 strb r5, [r4, #21] +4123:Middlewares/Third_Party/FatFs/src/ff.c **** fp->clust = clst; + 7822 .loc 1 4123 45 is_stmt 1 discriminator 3 view .LVU2633 + 7823 0272 DFE6 b .L525 + 7824 .LVL897: + 7825 .L580: +4129:Middlewares/Third_Party/FatFs/src/ff.c **** nsect += (DWORD)(ofs / SS(fs)); + 7826 .loc 1 4129 18 discriminator 1 view .LVU2634 + 7827 0274 0225 movs r5, #2 + 7828 .LVL898: +4129:Middlewares/Third_Party/FatFs/src/ff.c **** nsect += (DWORD)(ofs / SS(fs)); + 7829 .loc 1 4129 18 is_stmt 0 discriminator 1 view .LVU2635 + ARM GAS /tmp/cc5lWXRL.s page 282 + + + 7830 0276 6575 strb r5, [r4, #21] +4129:Middlewares/Third_Party/FatFs/src/ff.c **** nsect += (DWORD)(ofs / SS(fs)); + 7831 .loc 1 4129 18 is_stmt 1 discriminator 1 view .LVU2636 + 7832 0278 DCE6 b .L525 + 7833 .LVL899: + 7834 .L564: +4084:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs) { + 7835 .loc 1 4084 20 is_stmt 0 view .LVU2637 + 7836 027a 1E46 mov r6, r3 + 7837 .LVL900: +4084:Middlewares/Third_Party/FatFs/src/ff.c **** if (ofs) { + 7838 .loc 1 4084 20 view .LVU2638 + 7839 027c 87E7 b .L540 + 7840 .LVL901: + 7841 .L575: +4142:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7842 .loc 1 4142 5 is_stmt 1 view .LVU2639 +4142:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7843 .loc 1 4142 9 is_stmt 0 view .LVU2640 + 7844 027e 0123 movs r3, #1 + 7845 0280 04F13001 add r1, r4, #48 + 7846 0284 4078 ldrb r0, [r0, #1] @ zero_extendqisi2 + 7847 0286 FFF7FEFF bl disk_write + 7848 .LVL902: +4142:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7849 .loc 1 4142 8 view .LVU2641 + 7850 028a 20B9 cbnz r0, .L581 +4142:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7851 .loc 1 4142 84 is_stmt 1 discriminator 2 view .LVU2642 +4143:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7852 .loc 1 4143 5 discriminator 2 view .LVU2643 +4143:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7853 .loc 1 4143 14 is_stmt 0 discriminator 2 view .LVU2644 + 7854 028c 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 7855 028e 03F07F03 and r3, r3, #127 + 7856 0292 2375 strb r3, [r4, #20] + 7857 0294 95E7 b .L556 + 7858 .L581: +4142:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7859 .loc 1 4142 62 is_stmt 1 discriminator 1 view .LVU2645 + 7860 0296 0125 movs r5, #1 + 7861 .LVL903: +4142:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7862 .loc 1 4142 62 is_stmt 0 discriminator 1 view .LVU2646 + 7863 0298 6575 strb r5, [r4, #21] +4142:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag &= (BYTE)~FA_DIRTY; + 7864 .loc 1 4142 62 is_stmt 1 discriminator 1 view .LVU2647 + 7865 029a CBE6 b .L525 + 7866 .LVL904: + 7867 .L576: +4146:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7868 .loc 1 4146 57 discriminator 1 view .LVU2648 + 7869 029c 0125 movs r5, #1 + 7870 .LVL905: +4146:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7871 .loc 1 4146 57 is_stmt 0 discriminator 1 view .LVU2649 + 7872 029e 6575 strb r5, [r4, #21] + ARM GAS /tmp/cc5lWXRL.s page 283 + + +4146:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 7873 .loc 1 4146 57 is_stmt 1 discriminator 1 view .LVU2650 + 7874 02a0 C8E6 b .L525 + 7875 .LVL906: + 7876 .L561: +4048:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7877 .loc 1 4048 9 is_stmt 0 view .LVU2651 + 7878 02a2 1125 movs r5, #17 + 7879 .LVL907: +4048:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7880 .loc 1 4048 9 view .LVU2652 + 7881 02a4 C6E6 b .L525 + 7882 .cfi_endproc + 7883 .LFE1227: + 7885 .section .text.f_opendir,"ax",%progbits + 7886 .align 1 + 7887 .global f_opendir + 7888 .syntax unified + 7889 .thumb + 7890 .thumb_func + 7891 .fpu fpv5-d16 + 7893 f_opendir: + 7894 .LVL908: + 7895 .LFB1228: +4166:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 7896 .loc 1 4166 1 is_stmt 1 view -0 + 7897 .cfi_startproc + 7898 @ args = 0, pretend = 0, frame = 16 + 7899 @ frame_needed = 0, uses_anonymous_args = 0 +4166:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 7900 .loc 1 4166 1 is_stmt 0 view .LVU2654 + 7901 0000 30B5 push {r4, r5, lr} + 7902 .LCFI75: + 7903 .cfi_def_cfa_offset 12 + 7904 .cfi_offset 4, -12 + 7905 .cfi_offset 5, -8 + 7906 .cfi_offset 14, -4 + 7907 0002 85B0 sub sp, sp, #20 + 7908 .LCFI76: + 7909 .cfi_def_cfa_offset 32 + 7910 0004 0191 str r1, [sp, #4] +4167:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 7911 .loc 1 4167 2 is_stmt 1 view .LVU2655 +4168:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID *obj; + 7912 .loc 1 4168 2 view .LVU2656 +4169:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF + 7913 .loc 1 4169 2 view .LVU2657 +4173:Middlewares/Third_Party/FatFs/src/ff.c **** + 7914 .loc 1 4173 2 view .LVU2658 +4173:Middlewares/Third_Party/FatFs/src/ff.c **** + 7915 .loc 1 4173 5 is_stmt 0 view .LVU2659 + 7916 0006 0028 cmp r0, #0 + 7917 0008 3DD0 beq .L589 + 7918 000a 0546 mov r5, r0 +4176:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path, &fs, 0); + 7919 .loc 1 4176 2 is_stmt 1 view .LVU2660 + 7920 .LVL909: + ARM GAS /tmp/cc5lWXRL.s page 284 + + +4177:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 7921 .loc 1 4177 2 view .LVU2661 +4177:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 7922 .loc 1 4177 8 is_stmt 0 view .LVU2662 + 7923 000c 0022 movs r2, #0 + 7924 000e 03A9 add r1, sp, #12 + 7925 .LVL910: +4177:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 7926 .loc 1 4177 8 view .LVU2663 + 7927 0010 01A8 add r0, sp, #4 + 7928 .LVL911: +4177:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 7929 .loc 1 4177 8 view .LVU2664 + 7930 0012 FFF7FEFF bl find_volume + 7931 .LVL912: +4178:Middlewares/Third_Party/FatFs/src/ff.c **** obj->fs = fs; + 7932 .loc 1 4178 2 is_stmt 1 view .LVU2665 +4178:Middlewares/Third_Party/FatFs/src/ff.c **** obj->fs = fs; + 7933 .loc 1 4178 5 is_stmt 0 view .LVU2666 + 7934 0016 0446 mov r4, r0 + 7935 0018 28B1 cbz r0, .L594 + 7936 .L584: +4220:Middlewares/Third_Party/FatFs/src/ff.c **** + 7937 .loc 1 4220 2 is_stmt 1 view .LVU2667 +4220:Middlewares/Third_Party/FatFs/src/ff.c **** + 7938 .loc 1 4220 5 is_stmt 0 view .LVU2668 + 7939 001a 0CB1 cbz r4, .L583 + 7940 .L588: +4220:Middlewares/Third_Party/FatFs/src/ff.c **** + 7941 .loc 1 4220 20 is_stmt 1 discriminator 1 view .LVU2669 +4220:Middlewares/Third_Party/FatFs/src/ff.c **** + 7942 .loc 1 4220 28 is_stmt 0 discriminator 1 view .LVU2670 + 7943 001c 0023 movs r3, #0 + 7944 001e 2B60 str r3, [r5] + 7945 .LVL913: + 7946 .L583: +4223:Middlewares/Third_Party/FatFs/src/ff.c **** + 7947 .loc 1 4223 1 view .LVU2671 + 7948 0020 2046 mov r0, r4 + 7949 0022 05B0 add sp, sp, #20 + 7950 .LCFI77: + 7951 .cfi_remember_state + 7952 .cfi_def_cfa_offset 12 + 7953 @ sp needed + 7954 0024 30BD pop {r4, r5, pc} + 7955 .LVL914: + 7956 .L594: + 7957 .LCFI78: + 7958 .cfi_restore_state +4179:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); + 7959 .loc 1 4179 3 is_stmt 1 view .LVU2672 +4179:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); + 7960 .loc 1 4179 11 is_stmt 0 view .LVU2673 + 7961 0026 039B ldr r3, [sp, #12] + 7962 0028 2B60 str r3, [r5] +4180:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(dp, path); /* Follow the path to the directory */ + 7963 .loc 1 4180 18 is_stmt 1 view .LVU2674 + ARM GAS /tmp/cc5lWXRL.s page 285 + + +4181:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Follow completed */ + 7964 .loc 1 4181 3 view .LVU2675 +4181:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Follow completed */ + 7965 .loc 1 4181 9 is_stmt 0 view .LVU2676 + 7966 002a 0199 ldr r1, [sp, #4] + 7967 002c 2846 mov r0, r5 + 7968 002e FFF7FEFF bl follow_path + 7969 .LVL915: +4182:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(dp->fn[NSFLAG] & NS_NONAME)) { /* It is not the origin directory itself */ + 7970 .loc 1 4182 3 is_stmt 1 view .LVU2677 +4182:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(dp->fn[NSFLAG] & NS_NONAME)) { /* It is not the origin directory itself */ + 7971 .loc 1 4182 6 is_stmt 0 view .LVU2678 + 7972 0032 0446 mov r4, r0 + 7973 0034 18BB cbnz r0, .L585 +4183:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->attr & AM_DIR) { /* This object is a sub-directory */ + 7974 .loc 1 4183 4 is_stmt 1 view .LVU2679 +4183:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->attr & AM_DIR) { /* This object is a sub-directory */ + 7975 .loc 1 4183 8 is_stmt 0 view .LVU2680 + 7976 0036 95F92F30 ldrsb r3, [r5, #47] +4183:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->attr & AM_DIR) { /* This object is a sub-directory */ + 7977 .loc 1 4183 7 view .LVU2681 + 7978 003a 002B cmp r3, #0 + 7979 003c 08DB blt .L586 +4184:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 7980 .loc 1 4184 5 is_stmt 1 view .LVU2682 +4184:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 7981 .loc 1 4184 12 is_stmt 0 view .LVU2683 + 7982 003e AB79 ldrb r3, [r5, #6] @ zero_extendqisi2 +4184:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 7983 .loc 1 4184 8 view .LVU2684 + 7984 0040 13F0100F tst r3, #16 + 7985 0044 1AD0 beq .L590 +4196:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7986 .loc 1 4196 7 is_stmt 1 view .LVU2685 +4196:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7987 .loc 1 4196 21 is_stmt 0 view .LVU2686 + 7988 0046 296A ldr r1, [r5, #32] + 7989 0048 0398 ldr r0, [sp, #12] + 7990 004a FFF7FEFF bl ld_clust + 7991 .LVL916: +4196:Middlewares/Third_Party/FatFs/src/ff.c **** } + 7992 .loc 1 4196 19 view .LVU2687 + 7993 004e A860 str r0, [r5, #8] + 7994 .L586: +4202:Middlewares/Third_Party/FatFs/src/ff.c **** obj->id = fs->id; + 7995 .loc 1 4202 4 is_stmt 1 view .LVU2688 +4203:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); /* Rewind directory */ + 7996 .loc 1 4203 5 view .LVU2689 +4203:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); /* Rewind directory */ + 7997 .loc 1 4203 17 is_stmt 0 view .LVU2690 + 7998 0050 039B ldr r3, [sp, #12] + 7999 0052 DB88 ldrh r3, [r3, #6] +4203:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); /* Rewind directory */ + 8000 .loc 1 4203 13 view .LVU2691 + 8001 0054 AB80 strh r3, [r5, #4] @ movhi +4204:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 8002 .loc 1 4204 5 is_stmt 1 view .LVU2692 + ARM GAS /tmp/cc5lWXRL.s page 286 + + +4204:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 8003 .loc 1 4204 11 is_stmt 0 view .LVU2693 + 8004 0056 0021 movs r1, #0 + 8005 0058 2846 mov r0, r5 + 8006 005a FFF7FEFF bl dir_sdi + 8007 .LVL917: +4206:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->sclust) { + 8008 .loc 1 4206 5 is_stmt 1 view .LVU2694 +4206:Middlewares/Third_Party/FatFs/src/ff.c **** if (obj->sclust) { + 8009 .loc 1 4206 8 is_stmt 0 view .LVU2695 + 8010 005e 0446 mov r4, r0 + 8011 0060 68B9 cbnz r0, .L585 +4207:Middlewares/Third_Party/FatFs/src/ff.c **** obj->lockid = inc_lock(dp, 0); /* Lock the sub directory */ + 8012 .loc 1 4207 6 is_stmt 1 view .LVU2696 +4207:Middlewares/Third_Party/FatFs/src/ff.c **** obj->lockid = inc_lock(dp, 0); /* Lock the sub directory */ + 8013 .loc 1 4207 13 is_stmt 0 view .LVU2697 + 8014 0062 AB68 ldr r3, [r5, #8] +4207:Middlewares/Third_Party/FatFs/src/ff.c **** obj->lockid = inc_lock(dp, 0); /* Lock the sub directory */ + 8015 .loc 1 4207 9 view .LVU2698 + 8016 0064 13B9 cbnz r3, .L595 +4211:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8017 .loc 1 4211 7 is_stmt 1 view .LVU2699 +4211:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8018 .loc 1 4211 19 is_stmt 0 view .LVU2700 + 8019 0066 0023 movs r3, #0 + 8020 0068 2B61 str r3, [r5, #16] + 8021 006a 08E0 b .L585 + 8022 .L595: +4208:Middlewares/Third_Party/FatFs/src/ff.c **** if (!obj->lockid) res = FR_TOO_MANY_OPEN_FILES; + 8023 .loc 1 4208 7 is_stmt 1 view .LVU2701 +4208:Middlewares/Third_Party/FatFs/src/ff.c **** if (!obj->lockid) res = FR_TOO_MANY_OPEN_FILES; + 8024 .loc 1 4208 21 is_stmt 0 view .LVU2702 + 8025 006c 0021 movs r1, #0 + 8026 006e 2846 mov r0, r5 + 8027 0070 FFF7FEFF bl inc_lock + 8028 .LVL918: +4208:Middlewares/Third_Party/FatFs/src/ff.c **** if (!obj->lockid) res = FR_TOO_MANY_OPEN_FILES; + 8029 .loc 1 4208 19 view .LVU2703 + 8030 0074 2861 str r0, [r5, #16] +4209:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8031 .loc 1 4209 7 is_stmt 1 view .LVU2704 +4209:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8032 .loc 1 4209 10 is_stmt 0 view .LVU2705 + 8033 0076 10B9 cbnz r0, .L585 + 8034 .LVL919: +4209:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8035 .loc 1 4209 29 view .LVU2706 + 8036 0078 1224 movs r4, #18 + 8037 007a CEE7 b .L584 + 8038 .LVL920: + 8039 .L590: +4199:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8040 .loc 1 4199 10 view .LVU2707 + 8041 007c 0524 movs r4, #5 + 8042 .LVL921: + 8043 .L585: +4217:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_NO_PATH; + ARM GAS /tmp/cc5lWXRL.s page 287 + + + 8044 .loc 1 4217 16 is_stmt 1 view .LVU2708 +4218:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8045 .loc 1 4218 3 view .LVU2709 +4218:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8046 .loc 1 4218 6 is_stmt 0 view .LVU2710 + 8047 007e 042C cmp r4, #4 + 8048 0080 CBD1 bne .L584 + 8049 .LVL922: +4218:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8050 .loc 1 4218 30 view .LVU2711 + 8051 0082 0524 movs r4, #5 + 8052 0084 CAE7 b .L588 + 8053 .LVL923: + 8054 .L589: +4173:Middlewares/Third_Party/FatFs/src/ff.c **** + 8055 .loc 1 4173 18 view .LVU2712 + 8056 0086 0924 movs r4, #9 + 8057 0088 CAE7 b .L583 + 8058 .cfi_endproc + 8059 .LFE1228: + 8061 .section .text.f_closedir,"ax",%progbits + 8062 .align 1 + 8063 .global f_closedir + 8064 .syntax unified + 8065 .thumb + 8066 .thumb_func + 8067 .fpu fpv5-d16 + 8069 f_closedir: + 8070 .LVL924: + 8071 .LFB1229: +4235:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8072 .loc 1 4235 1 is_stmt 1 view -0 + 8073 .cfi_startproc + 8074 @ args = 0, pretend = 0, frame = 8 + 8075 @ frame_needed = 0, uses_anonymous_args = 0 +4235:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8076 .loc 1 4235 1 is_stmt 0 view .LVU2714 + 8077 0000 10B5 push {r4, lr} + 8078 .LCFI79: + 8079 .cfi_def_cfa_offset 8 + 8080 .cfi_offset 4, -8 + 8081 .cfi_offset 14, -4 + 8082 0002 82B0 sub sp, sp, #8 + 8083 .LCFI80: + 8084 .cfi_def_cfa_offset 16 + 8085 0004 0446 mov r4, r0 +4236:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 8086 .loc 1 4236 2 is_stmt 1 view .LVU2715 +4237:Middlewares/Third_Party/FatFs/src/ff.c **** + 8087 .loc 1 4237 2 view .LVU2716 +4240:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8088 .loc 1 4240 2 view .LVU2717 +4240:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8089 .loc 1 4240 8 is_stmt 0 view .LVU2718 + 8090 0006 01A9 add r1, sp, #4 + 8091 0008 FFF7FEFF bl validate + 8092 .LVL925: + ARM GAS /tmp/cc5lWXRL.s page 288 + + +4241:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 8093 .loc 1 4241 2 is_stmt 1 view .LVU2719 +4241:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 8094 .loc 1 4241 5 is_stmt 0 view .LVU2720 + 8095 000c 20B9 cbnz r0, .L597 +4243:Middlewares/Third_Party/FatFs/src/ff.c **** res = dec_lock(dp->obj.lockid); + 8096 .loc 1 4243 3 is_stmt 1 view .LVU2721 +4243:Middlewares/Third_Party/FatFs/src/ff.c **** res = dec_lock(dp->obj.lockid); + 8097 .loc 1 4243 14 is_stmt 0 view .LVU2722 + 8098 000e 2369 ldr r3, [r4, #16] +4243:Middlewares/Third_Party/FatFs/src/ff.c **** res = dec_lock(dp->obj.lockid); + 8099 .loc 1 4243 6 view .LVU2723 + 8100 0010 23B9 cbnz r3, .L600 + 8101 .L598: + 8102 .LVL926: +4246:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 8103 .loc 1 4246 3 is_stmt 1 view .LVU2724 +4246:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 8104 .loc 1 4246 6 is_stmt 0 view .LVU2725 + 8105 0012 08B9 cbnz r0, .L597 +4249:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8106 .loc 1 4249 4 is_stmt 1 view .LVU2726 +4249:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8107 .loc 1 4249 15 is_stmt 0 view .LVU2727 + 8108 0014 0023 movs r3, #0 + 8109 0016 2360 str r3, [r4] + 8110 .LVL927: + 8111 .L597: +4255:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8112 .loc 1 4255 2 is_stmt 1 view .LVU2728 +4256:Middlewares/Third_Party/FatFs/src/ff.c **** + 8113 .loc 1 4256 1 is_stmt 0 view .LVU2729 + 8114 0018 02B0 add sp, sp, #8 + 8115 .LCFI81: + 8116 .cfi_remember_state + 8117 .cfi_def_cfa_offset 8 + 8118 @ sp needed + 8119 001a 10BD pop {r4, pc} + 8120 .LVL928: + 8121 .L600: + 8122 .LCFI82: + 8123 .cfi_restore_state +4244:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8124 .loc 1 4244 4 is_stmt 1 view .LVU2730 +4244:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8125 .loc 1 4244 10 is_stmt 0 view .LVU2731 + 8126 001c 1846 mov r0, r3 + 8127 001e FFF7FEFF bl dec_lock + 8128 .LVL929: +4244:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8129 .loc 1 4244 10 view .LVU2732 + 8130 0022 F6E7 b .L598 + 8131 .cfi_endproc + 8132 .LFE1229: + 8134 .section .text.f_readdir,"ax",%progbits + 8135 .align 1 + 8136 .global f_readdir + ARM GAS /tmp/cc5lWXRL.s page 289 + + + 8137 .syntax unified + 8138 .thumb + 8139 .thumb_func + 8140 .fpu fpv5-d16 + 8142 f_readdir: + 8143 .LVL930: + 8144 .LFB1230: +4269:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8145 .loc 1 4269 1 is_stmt 1 view -0 + 8146 .cfi_startproc + 8147 @ args = 0, pretend = 0, frame = 8 + 8148 @ frame_needed = 0, uses_anonymous_args = 0 +4269:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8149 .loc 1 4269 1 is_stmt 0 view .LVU2734 + 8150 0000 70B5 push {r4, r5, r6, lr} + 8151 .LCFI83: + 8152 .cfi_def_cfa_offset 16 + 8153 .cfi_offset 4, -16 + 8154 .cfi_offset 5, -12 + 8155 .cfi_offset 6, -8 + 8156 .cfi_offset 14, -4 + 8157 0002 82B0 sub sp, sp, #8 + 8158 .LCFI84: + 8159 .cfi_def_cfa_offset 24 + 8160 0004 0446 mov r4, r0 + 8161 0006 0D46 mov r5, r1 +4270:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 8162 .loc 1 4270 2 is_stmt 1 view .LVU2735 +4271:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF + 8163 .loc 1 4271 2 view .LVU2736 +4275:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8164 .loc 1 4275 2 view .LVU2737 +4275:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8165 .loc 1 4275 8 is_stmt 0 view .LVU2738 + 8166 0008 01A9 add r1, sp, #4 + 8167 .LVL931: +4275:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8168 .loc 1 4275 8 view .LVU2739 + 8169 000a FFF7FEFF bl validate + 8170 .LVL932: +4276:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fno) { + 8171 .loc 1 4276 2 is_stmt 1 view .LVU2740 +4276:Middlewares/Third_Party/FatFs/src/ff.c **** if (!fno) { + 8172 .loc 1 4276 5 is_stmt 0 view .LVU2741 + 8173 000e 0646 mov r6, r0 + 8174 0010 C0B9 cbnz r0, .L602 +4277:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); /* Rewind the directory object */ + 8175 .loc 1 4277 3 is_stmt 1 view .LVU2742 +4277:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_sdi(dp, 0); /* Rewind the directory object */ + 8176 .loc 1 4277 6 is_stmt 0 view .LVU2743 + 8177 0012 95B1 cbz r5, .L607 +4280:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_read(dp, 0); /* Read an item */ + 8178 .loc 1 4280 19 is_stmt 1 view .LVU2744 +4281:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory */ + 8179 .loc 1 4281 4 view .LVU2745 +4281:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory */ + 8180 .loc 1 4281 10 is_stmt 0 view .LVU2746 + ARM GAS /tmp/cc5lWXRL.s page 290 + + + 8181 0014 0021 movs r1, #0 + 8182 0016 2046 mov r0, r4 + 8183 .LVL933: +4281:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory */ + 8184 .loc 1 4281 10 view .LVU2747 + 8185 0018 FFF7FEFF bl dir_read + 8186 .LVL934: +4282:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* A valid entry is found */ + 8187 .loc 1 4282 4 is_stmt 1 view .LVU2748 +4282:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* A valid entry is found */ + 8188 .loc 1 4282 7 is_stmt 0 view .LVU2749 + 8189 001c 0428 cmp r0, #4 + 8190 001e 00D0 beq .L604 +4283:Middlewares/Third_Party/FatFs/src/ff.c **** get_fileinfo(dp, fno); /* Get the object information */ + 8191 .loc 1 4283 4 is_stmt 1 view .LVU2750 +4283:Middlewares/Third_Party/FatFs/src/ff.c **** get_fileinfo(dp, fno); /* Get the object information */ + 8192 .loc 1 4283 7 is_stmt 0 view .LVU2751 + 8193 0020 98B9 cbnz r0, .L605 + 8194 .L604: + 8195 .LVL935: +4284:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_next(dp, 0); /* Increment index for next */ + 8196 .loc 1 4284 5 is_stmt 1 view .LVU2752 + 8197 0022 2946 mov r1, r5 + 8198 0024 2046 mov r0, r4 + 8199 0026 FFF7FEFF bl get_fileinfo + 8200 .LVL936: +4285:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory now */ + 8201 .loc 1 4285 5 view .LVU2753 +4285:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory now */ + 8202 .loc 1 4285 11 is_stmt 0 view .LVU2754 + 8203 002a 0021 movs r1, #0 + 8204 002c 2046 mov r0, r4 + 8205 002e FFF7FEFF bl dir_next + 8206 .LVL937: +4286:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8207 .loc 1 4286 5 is_stmt 1 view .LVU2755 +4286:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8208 .loc 1 4286 8 is_stmt 0 view .LVU2756 + 8209 0032 0428 cmp r0, #4 + 8210 0034 06D0 beq .L602 +4285:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory now */ + 8211 .loc 1 4285 11 view .LVU2757 + 8212 0036 0646 mov r6, r0 + 8213 0038 04E0 b .L602 + 8214 .L607: +4278:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8215 .loc 1 4278 4 is_stmt 1 view .LVU2758 +4278:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8216 .loc 1 4278 10 is_stmt 0 view .LVU2759 + 8217 003a 0021 movs r1, #0 + 8218 003c 2046 mov r0, r4 + 8219 .LVL938: +4278:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8220 .loc 1 4278 10 view .LVU2760 + 8221 003e FFF7FEFF bl dir_sdi + 8222 .LVL939: + 8223 0042 0646 mov r6, r0 + ARM GAS /tmp/cc5lWXRL.s page 291 + + + 8224 .LVL940: + 8225 .L602: +4288:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8226 .loc 1 4288 17 is_stmt 1 view .LVU2761 +4291:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8227 .loc 1 4291 2 view .LVU2762 +4292:Middlewares/Third_Party/FatFs/src/ff.c **** + 8228 .loc 1 4292 1 is_stmt 0 view .LVU2763 + 8229 0044 3046 mov r0, r6 + 8230 0046 02B0 add sp, sp, #8 + 8231 .LCFI85: + 8232 .cfi_remember_state + 8233 .cfi_def_cfa_offset 16 + 8234 @ sp needed + 8235 0048 70BD pop {r4, r5, r6, pc} + 8236 .LVL941: + 8237 .L605: + 8238 .LCFI86: + 8239 .cfi_restore_state +4281:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Ignore end of directory */ + 8240 .loc 1 4281 10 view .LVU2764 + 8241 004a 0646 mov r6, r0 + 8242 004c FAE7 b .L602 + 8243 .cfi_endproc + 8244 .LFE1230: + 8246 .section .text.f_stat,"ax",%progbits + 8247 .align 1 + 8248 .global f_stat + 8249 .syntax unified + 8250 .thumb + 8251 .thumb_func + 8252 .fpu fpv5-d16 + 8254 f_stat: + 8255 .LVL942: + 8256 .LFB1231: +4357:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8257 .loc 1 4357 1 is_stmt 1 view -0 + 8258 .cfi_startproc + 8259 @ args = 0, pretend = 0, frame = 56 + 8260 @ frame_needed = 0, uses_anonymous_args = 0 +4357:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8261 .loc 1 4357 1 is_stmt 0 view .LVU2766 + 8262 0000 30B5 push {r4, r5, lr} + 8263 .LCFI87: + 8264 .cfi_def_cfa_offset 12 + 8265 .cfi_offset 4, -12 + 8266 .cfi_offset 5, -8 + 8267 .cfi_offset 14, -4 + 8268 0002 8FB0 sub sp, sp, #60 + 8269 .LCFI88: + 8270 .cfi_def_cfa_offset 72 + 8271 0004 0190 str r0, [sp, #4] + 8272 0006 0C46 mov r4, r1 +4358:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; + 8273 .loc 1 4358 2 is_stmt 1 view .LVU2767 +4359:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF + 8274 .loc 1 4359 2 view .LVU2768 + ARM GAS /tmp/cc5lWXRL.s page 292 + + +4364:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8275 .loc 1 4364 2 view .LVU2769 +4364:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8276 .loc 1 4364 8 is_stmt 0 view .LVU2770 + 8277 0008 0022 movs r2, #0 + 8278 000a 02A9 add r1, sp, #8 + 8279 .LVL943: +4364:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8280 .loc 1 4364 8 view .LVU2771 + 8281 000c 01A8 add r0, sp, #4 + 8282 .LVL944: +4364:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8283 .loc 1 4364 8 view .LVU2772 + 8284 000e FFF7FEFF bl find_volume + 8285 .LVL945: +4365:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(dj.obj.fs); + 8286 .loc 1 4365 2 is_stmt 1 view .LVU2773 +4365:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(dj.obj.fs); + 8287 .loc 1 4365 5 is_stmt 0 view .LVU2774 + 8288 0012 0546 mov r5, r0 + 8289 0014 10B1 cbz r0, .L612 + 8290 .LVL946: + 8291 .L609: +4375:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8292 .loc 1 4375 16 is_stmt 1 view .LVU2775 +4378:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8293 .loc 1 4378 2 view .LVU2776 +4379:Middlewares/Third_Party/FatFs/src/ff.c **** + 8294 .loc 1 4379 1 is_stmt 0 view .LVU2777 + 8295 0016 2846 mov r0, r5 + 8296 0018 0FB0 add sp, sp, #60 + 8297 .LCFI89: + 8298 .cfi_remember_state + 8299 .cfi_def_cfa_offset 12 + 8300 @ sp needed + 8301 001a 30BD pop {r4, r5, pc} + 8302 .LVL947: + 8303 .L612: + 8304 .LCFI90: + 8305 .cfi_restore_state +4366:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */ + 8306 .loc 1 4366 25 is_stmt 1 view .LVU2778 +4367:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Follow completed */ + 8307 .loc 1 4367 3 view .LVU2779 +4367:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Follow completed */ + 8308 .loc 1 4367 9 is_stmt 0 view .LVU2780 + 8309 001c 0199 ldr r1, [sp, #4] + 8310 001e 02A8 add r0, sp, #8 + 8311 .LVL948: +4367:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Follow completed */ + 8312 .loc 1 4367 9 view .LVU2781 + 8313 0020 FFF7FEFF bl follow_path + 8314 .LVL949: +4368:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { /* It is origin directory */ + 8315 .loc 1 4368 3 is_stmt 1 view .LVU2782 +4368:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { /* It is origin directory */ + 8316 .loc 1 4368 6 is_stmt 0 view .LVU2783 + ARM GAS /tmp/cc5lWXRL.s page 293 + + + 8317 0024 0546 mov r5, r0 + 8318 0026 0028 cmp r0, #0 + 8319 0028 F5D1 bne .L609 +4369:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; + 8320 .loc 1 4369 4 is_stmt 1 view .LVU2784 +4369:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; + 8321 .loc 1 4369 8 is_stmt 0 view .LVU2785 + 8322 002a 9DF93730 ldrsb r3, [sp, #55] +4369:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; + 8323 .loc 1 4369 7 view .LVU2786 + 8324 002e 002B cmp r3, #0 + 8325 0030 06DB blt .L610 +4372:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8326 .loc 1 4372 5 is_stmt 1 view .LVU2787 +4372:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8327 .loc 1 4372 8 is_stmt 0 view .LVU2788 + 8328 0032 002C cmp r4, #0 + 8329 0034 EFD0 beq .L609 +4372:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8330 .loc 1 4372 14 is_stmt 1 discriminator 1 view .LVU2789 + 8331 0036 2146 mov r1, r4 + 8332 0038 02A8 add r0, sp, #8 + 8333 .LVL950: +4372:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8334 .loc 1 4372 14 is_stmt 0 discriminator 1 view .LVU2790 + 8335 003a FFF7FEFF bl get_fileinfo + 8336 .LVL951: + 8337 003e EAE7 b .L609 + 8338 .LVL952: + 8339 .L610: +4370:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* Found an object */ + 8340 .loc 1 4370 9 view .LVU2791 + 8341 0040 0625 movs r5, #6 + 8342 0042 E8E7 b .L609 + 8343 .cfi_endproc + 8344 .LFE1231: + 8346 .section .text.f_getfree,"ax",%progbits + 8347 .align 1 + 8348 .global f_getfree + 8349 .syntax unified + 8350 .thumb + 8351 .thumb_func + 8352 .fpu fpv5-d16 + 8354 f_getfree: + 8355 .LVL953: + 8356 .LFB1232: +4393:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8357 .loc 1 4393 1 is_stmt 1 view -0 + 8358 .cfi_startproc + 8359 @ args = 0, pretend = 0, frame = 32 + 8360 @ frame_needed = 0, uses_anonymous_args = 0 +4393:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8361 .loc 1 4393 1 is_stmt 0 view .LVU2793 + 8362 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 8363 .LCFI91: + 8364 .cfi_def_cfa_offset 36 + 8365 .cfi_offset 4, -36 + ARM GAS /tmp/cc5lWXRL.s page 294 + + + 8366 .cfi_offset 5, -32 + 8367 .cfi_offset 6, -28 + 8368 .cfi_offset 7, -24 + 8369 .cfi_offset 8, -20 + 8370 .cfi_offset 9, -16 + 8371 .cfi_offset 10, -12 + 8372 .cfi_offset 11, -8 + 8373 .cfi_offset 14, -4 + 8374 0004 89B0 sub sp, sp, #36 + 8375 .LCFI92: + 8376 .cfi_def_cfa_offset 72 + 8377 0006 0190 str r0, [sp, #4] + 8378 0008 8846 mov r8, r1 + 8379 000a 1446 mov r4, r2 +4394:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 8380 .loc 1 4394 2 is_stmt 1 view .LVU2794 +4395:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD nfree, clst, sect, stat; + 8381 .loc 1 4395 2 view .LVU2795 +4396:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; + 8382 .loc 1 4396 2 view .LVU2796 +4397:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *p; + 8383 .loc 1 4397 2 view .LVU2797 +4398:Middlewares/Third_Party/FatFs/src/ff.c **** _FDID obj; + 8384 .loc 1 4398 2 view .LVU2798 +4399:Middlewares/Third_Party/FatFs/src/ff.c **** + 8385 .loc 1 4399 2 view .LVU2799 +4403:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8386 .loc 1 4403 2 view .LVU2800 +4403:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8387 .loc 1 4403 8 is_stmt 0 view .LVU2801 + 8388 000c 0022 movs r2, #0 + 8389 .LVL954: +4403:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8390 .loc 1 4403 8 view .LVU2802 + 8391 000e 07A9 add r1, sp, #28 + 8392 .LVL955: +4403:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8393 .loc 1 4403 8 view .LVU2803 + 8394 0010 01A8 add r0, sp, #4 + 8395 .LVL956: +4403:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8396 .loc 1 4403 8 view .LVU2804 + 8397 0012 FFF7FEFF bl find_volume + 8398 .LVL957: +4404:Middlewares/Third_Party/FatFs/src/ff.c **** *fatfs = fs; /* Return ptr to the fs object */ + 8399 .loc 1 4404 2 is_stmt 1 view .LVU2805 +4404:Middlewares/Third_Party/FatFs/src/ff.c **** *fatfs = fs; /* Return ptr to the fs object */ + 8400 .loc 1 4404 5 is_stmt 0 view .LVU2806 + 8401 0016 8146 mov r9, r0 + 8402 0018 0028 cmp r0, #0 + 8403 001a 59D1 bne .L614 +4405:Middlewares/Third_Party/FatFs/src/ff.c **** /* If free_clst is valid, return it without full cluster scan */ + 8404 .loc 1 4405 3 is_stmt 1 view .LVU2807 +4405:Middlewares/Third_Party/FatFs/src/ff.c **** /* If free_clst is valid, return it without full cluster scan */ + 8405 .loc 1 4405 10 is_stmt 0 view .LVU2808 + 8406 001c 079B ldr r3, [sp, #28] + 8407 001e 2360 str r3, [r4] + ARM GAS /tmp/cc5lWXRL.s page 295 + + +4407:Middlewares/Third_Party/FatFs/src/ff.c **** *nclst = fs->free_clst; + 8408 .loc 1 4407 3 is_stmt 1 view .LVU2809 +4407:Middlewares/Third_Party/FatFs/src/ff.c **** *nclst = fs->free_clst; + 8409 .loc 1 4407 9 is_stmt 0 view .LVU2810 + 8410 0020 5A69 ldr r2, [r3, #20] +4407:Middlewares/Third_Party/FatFs/src/ff.c **** *nclst = fs->free_clst; + 8411 .loc 1 4407 26 view .LVU2811 + 8412 0022 9D69 ldr r5, [r3, #24] +4407:Middlewares/Third_Party/FatFs/src/ff.c **** *nclst = fs->free_clst; + 8413 .loc 1 4407 37 view .LVU2812 + 8414 0024 A91E subs r1, r5, #2 +4407:Middlewares/Third_Party/FatFs/src/ff.c **** *nclst = fs->free_clst; + 8415 .loc 1 4407 6 view .LVU2813 + 8416 0026 8A42 cmp r2, r1 + 8417 0028 02D8 bhi .L615 +4408:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8418 .loc 1 4408 4 is_stmt 1 view .LVU2814 +4408:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8419 .loc 1 4408 11 is_stmt 0 view .LVU2815 + 8420 002a C8F80020 str r2, [r8] + 8421 002e 4FE0 b .L614 + 8422 .L615: +4411:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT12) { /* FAT12: Sector unalighed FAT entries */ + 8423 .loc 1 4411 4 is_stmt 1 view .LVU2816 + 8424 .LVL958: +4412:Middlewares/Third_Party/FatFs/src/ff.c **** clst = 2; obj.fs = fs; + 8425 .loc 1 4412 4 view .LVU2817 +4412:Middlewares/Third_Party/FatFs/src/ff.c **** clst = 2; obj.fs = fs; + 8426 .loc 1 4412 10 is_stmt 0 view .LVU2818 + 8427 0030 1E78 ldrb r6, [r3] @ zero_extendqisi2 +4412:Middlewares/Third_Party/FatFs/src/ff.c **** clst = 2; obj.fs = fs; + 8428 .loc 1 4412 7 view .LVU2819 + 8429 0032 012E cmp r6, #1 + 8430 0034 05D0 beq .L629 +4440:Middlewares/Third_Party/FatFs/src/ff.c **** i = 0; p = 0; + 8431 .loc 1 4440 6 is_stmt 1 view .LVU2820 + 8432 .LVL959: +4440:Middlewares/Third_Party/FatFs/src/ff.c **** i = 0; p = 0; + 8433 .loc 1 4440 27 view .LVU2821 +4440:Middlewares/Third_Party/FatFs/src/ff.c **** i = 0; p = 0; + 8434 .loc 1 4440 32 is_stmt 0 view .LVU2822 + 8435 0036 D3F824A0 ldr r10, [r3, #36] + 8436 .LVL960: +4441:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 8437 .loc 1 4441 6 is_stmt 1 view .LVU2823 +4441:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 8438 .loc 1 4441 13 view .LVU2824 +4441:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 8439 .loc 1 4441 15 is_stmt 0 view .LVU2825 + 8440 003a 0024 movs r4, #0 + 8441 .LVL961: +4441:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 8442 .loc 1 4441 8 view .LVU2826 + 8443 003c 2646 mov r6, r4 +4411:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT12) { /* FAT12: Sector unalighed FAT entries */ + 8444 .loc 1 4411 10 view .LVU2827 + 8445 003e 2746 mov r7, r4 + ARM GAS /tmp/cc5lWXRL.s page 296 + + + 8446 0040 2FE0 b .L625 + 8447 .LVL962: + 8448 .L629: +4413:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 8449 .loc 1 4413 5 is_stmt 1 view .LVU2828 +4413:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 8450 .loc 1 4413 15 view .LVU2829 +4413:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 8451 .loc 1 4413 22 is_stmt 0 view .LVU2830 + 8452 0042 0293 str r3, [sp, #8] +4413:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 8453 .loc 1 4413 10 view .LVU2831 + 8454 0044 0224 movs r4, #2 + 8455 .LVL963: +4411:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT12) { /* FAT12: Sector unalighed FAT entries */ + 8456 .loc 1 4411 10 view .LVU2832 + 8457 0046 0027 movs r7, #0 + 8458 0048 04E0 b .L619 + 8459 .LVL964: + 8460 .L618: +4419:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8461 .loc 1 4419 13 is_stmt 1 view .LVU2833 +4419:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8462 .loc 1 4419 5 is_stmt 0 view .LVU2834 + 8463 004a 0134 adds r4, r4, #1 + 8464 .LVL965: +4419:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8465 .loc 1 4419 25 view .LVU2835 + 8466 004c 079B ldr r3, [sp, #28] + 8467 004e 9B69 ldr r3, [r3, #24] +4419:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8468 .loc 1 4419 5 view .LVU2836 + 8469 0050 A342 cmp r3, r4 + 8470 0052 35D9 bls .L617 + 8471 .LVL966: + 8472 .L619: +4414:Middlewares/Third_Party/FatFs/src/ff.c **** stat = get_fat(&obj, clst); + 8473 .loc 1 4414 5 is_stmt 1 view .LVU2837 +4415:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } + 8474 .loc 1 4415 6 view .LVU2838 +4415:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 0xFFFFFFFF) { res = FR_DISK_ERR; break; } + 8475 .loc 1 4415 13 is_stmt 0 view .LVU2839 + 8476 0054 2146 mov r1, r4 + 8477 0056 02A8 add r0, sp, #8 + 8478 0058 FFF7FEFF bl get_fat + 8479 .LVL967: +4416:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 1) { res = FR_INT_ERR; break; } + 8480 .loc 1 4416 6 is_stmt 1 view .LVU2840 +4416:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 1) { res = FR_INT_ERR; break; } + 8481 .loc 1 4416 9 is_stmt 0 view .LVU2841 + 8482 005c B0F1FF3F cmp r0, #-1 + 8483 0060 2DD0 beq .L626 +4417:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 0) nfree++; + 8484 .loc 1 4417 6 is_stmt 1 view .LVU2842 +4417:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 0) nfree++; + 8485 .loc 1 4417 9 is_stmt 0 view .LVU2843 + 8486 0062 0128 cmp r0, #1 + ARM GAS /tmp/cc5lWXRL.s page 297 + + + 8487 0064 38D0 beq .L627 +4418:Middlewares/Third_Party/FatFs/src/ff.c **** } while (++clst < fs->n_fatent); + 8488 .loc 1 4418 6 is_stmt 1 view .LVU2844 +4418:Middlewares/Third_Party/FatFs/src/ff.c **** } while (++clst < fs->n_fatent); + 8489 .loc 1 4418 9 is_stmt 0 view .LVU2845 + 8490 0066 0028 cmp r0, #0 + 8491 0068 EFD1 bne .L618 +4418:Middlewares/Third_Party/FatFs/src/ff.c **** } while (++clst < fs->n_fatent); + 8492 .loc 1 4418 21 is_stmt 1 discriminator 1 view .LVU2846 +4418:Middlewares/Third_Party/FatFs/src/ff.c **** } while (++clst < fs->n_fatent); + 8493 .loc 1 4418 26 is_stmt 0 discriminator 1 view .LVU2847 + 8494 006a 0137 adds r7, r7, #1 + 8495 .LVL968: +4418:Middlewares/Third_Party/FatFs/src/ff.c **** } while (++clst < fs->n_fatent); + 8496 .loc 1 4418 26 discriminator 1 view .LVU2848 + 8497 006c EDE7 b .L618 + 8498 .LVL969: + 8499 .L630: +4444:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 8500 .loc 1 4444 8 is_stmt 1 view .LVU2849 +4444:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 8501 .loc 1 4444 14 is_stmt 0 view .LVU2850 + 8502 006e 0AF1010B add fp, r10, #1 + 8503 .LVL970: +4444:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 8504 .loc 1 4444 14 view .LVU2851 + 8505 0072 5146 mov r1, r10 + 8506 0074 0798 ldr r0, [sp, #28] + 8507 0076 FFF7FEFF bl move_window + 8508 .LVL971: +4445:Middlewares/Third_Party/FatFs/src/ff.c **** p = fs->win; + 8509 .loc 1 4445 8 is_stmt 1 view .LVU2852 +4445:Middlewares/Third_Party/FatFs/src/ff.c **** p = fs->win; + 8510 .loc 1 4445 11 is_stmt 0 view .LVU2853 + 8511 007a 8146 mov r9, r0 + 8512 007c 00BB cbnz r0, .L617 +4446:Middlewares/Third_Party/FatFs/src/ff.c **** i = SS(fs); + 8513 .loc 1 4446 8 is_stmt 1 view .LVU2854 +4446:Middlewares/Third_Party/FatFs/src/ff.c **** i = SS(fs); + 8514 .loc 1 4446 14 is_stmt 0 view .LVU2855 + 8515 007e 079B ldr r3, [sp, #28] +4446:Middlewares/Third_Party/FatFs/src/ff.c **** i = SS(fs); + 8516 .loc 1 4446 10 view .LVU2856 + 8517 0080 03F13404 add r4, r3, #52 + 8518 .LVL972: +4447:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8519 .loc 1 4447 8 is_stmt 1 view .LVU2857 +4447:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8520 .loc 1 4447 12 is_stmt 0 view .LVU2858 + 8521 0084 9E89 ldrh r6, [r3, #12] + 8522 .LVL973: +4444:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 8523 .loc 1 4444 14 view .LVU2859 + 8524 0086 DA46 mov r10, fp + 8525 0088 0DE0 b .L620 + 8526 .LVL974: + 8527 .L631: + ARM GAS /tmp/cc5lWXRL.s page 298 + + +4450:Middlewares/Third_Party/FatFs/src/ff.c **** p += 2; i -= 2; + 8528 .loc 1 4450 8 is_stmt 1 view .LVU2860 +4450:Middlewares/Third_Party/FatFs/src/ff.c **** p += 2; i -= 2; + 8529 .loc 1 4450 12 is_stmt 0 view .LVU2861 + 8530 008a 2046 mov r0, r4 + 8531 008c FFF7FEFF bl ld_word + 8532 .LVL975: +4450:Middlewares/Third_Party/FatFs/src/ff.c **** p += 2; i -= 2; + 8533 .loc 1 4450 11 view .LVU2862 + 8534 0090 00B9 cbnz r0, .L622 +4450:Middlewares/Third_Party/FatFs/src/ff.c **** p += 2; i -= 2; + 8535 .loc 1 4450 29 is_stmt 1 discriminator 1 view .LVU2863 +4450:Middlewares/Third_Party/FatFs/src/ff.c **** p += 2; i -= 2; + 8536 .loc 1 4450 34 is_stmt 0 discriminator 1 view .LVU2864 + 8537 0092 0137 adds r7, r7, #1 + 8538 .LVL976: + 8539 .L622: +4451:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8540 .loc 1 4451 8 is_stmt 1 view .LVU2865 +4451:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8541 .loc 1 4451 10 is_stmt 0 view .LVU2866 + 8542 0094 0234 adds r4, r4, #2 + 8543 .LVL977: +4451:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8544 .loc 1 4451 16 is_stmt 1 view .LVU2867 +4451:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8545 .loc 1 4451 18 is_stmt 0 view .LVU2868 + 8546 0096 023E subs r6, r6, #2 + 8547 .LVL978: +4451:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8548 .loc 1 4451 18 view .LVU2869 + 8549 0098 01E0 b .L623 + 8550 .L624: +4454:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8551 .loc 1 4454 8 is_stmt 1 view .LVU2870 +4454:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8552 .loc 1 4454 10 is_stmt 0 view .LVU2871 + 8553 009a 0434 adds r4, r4, #4 + 8554 .LVL979: +4454:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8555 .loc 1 4454 16 is_stmt 1 view .LVU2872 +4454:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8556 .loc 1 4454 18 is_stmt 0 view .LVU2873 + 8557 009c 043E subs r6, r6, #4 + 8558 .LVL980: + 8559 .L623: +4456:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8560 .loc 1 4456 14 is_stmt 1 view .LVU2874 +4456:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8561 .loc 1 4456 6 is_stmt 0 view .LVU2875 + 8562 009e 013D subs r5, r5, #1 + 8563 .LVL981: +4456:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8564 .loc 1 4456 6 view .LVU2876 + 8565 00a0 0ED0 beq .L617 + 8566 .LVL982: + 8567 .L625: + ARM GAS /tmp/cc5lWXRL.s page 299 + + +4442:Middlewares/Third_Party/FatFs/src/ff.c **** if (i == 0) { + 8568 .loc 1 4442 6 is_stmt 1 view .LVU2877 +4443:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, sect++); + 8569 .loc 1 4443 7 view .LVU2878 +4443:Middlewares/Third_Party/FatFs/src/ff.c **** res = move_window(fs, sect++); + 8570 .loc 1 4443 10 is_stmt 0 view .LVU2879 + 8571 00a2 002E cmp r6, #0 + 8572 00a4 E3D0 beq .L630 + 8573 .LVL983: + 8574 .L620: +4449:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(p) == 0) nfree++; + 8575 .loc 1 4449 7 is_stmt 1 view .LVU2880 +4449:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(p) == 0) nfree++; + 8576 .loc 1 4449 13 is_stmt 0 view .LVU2881 + 8577 00a6 079B ldr r3, [sp, #28] + 8578 00a8 1B78 ldrb r3, [r3] @ zero_extendqisi2 +4449:Middlewares/Third_Party/FatFs/src/ff.c **** if (ld_word(p) == 0) nfree++; + 8579 .loc 1 4449 10 view .LVU2882 + 8580 00aa 022B cmp r3, #2 + 8581 00ac EDD0 beq .L631 +4453:Middlewares/Third_Party/FatFs/src/ff.c **** p += 4; i -= 4; + 8582 .loc 1 4453 8 is_stmt 1 view .LVU2883 +4453:Middlewares/Third_Party/FatFs/src/ff.c **** p += 4; i -= 4; + 8583 .loc 1 4453 13 is_stmt 0 view .LVU2884 + 8584 00ae 2046 mov r0, r4 + 8585 00b0 FFF7FEFF bl ld_dword + 8586 .LVL984: +4453:Middlewares/Third_Party/FatFs/src/ff.c **** p += 4; i -= 4; + 8587 .loc 1 4453 11 view .LVU2885 + 8588 00b4 30F07043 bics r3, r0, #-268435456 + 8589 00b8 EFD1 bne .L624 +4453:Middlewares/Third_Party/FatFs/src/ff.c **** p += 4; i -= 4; + 8590 .loc 1 4453 45 is_stmt 1 discriminator 1 view .LVU2886 +4453:Middlewares/Third_Party/FatFs/src/ff.c **** p += 4; i -= 4; + 8591 .loc 1 4453 50 is_stmt 0 discriminator 1 view .LVU2887 + 8592 00ba 0137 adds r7, r7, #1 + 8593 .LVL985: +4453:Middlewares/Third_Party/FatFs/src/ff.c **** p += 4; i -= 4; + 8594 .loc 1 4453 50 discriminator 1 view .LVU2888 + 8595 00bc EDE7 b .L624 + 8596 .LVL986: + 8597 .L626: +4416:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 1) { res = FR_INT_ERR; break; } + 8598 .loc 1 4416 36 view .LVU2889 + 8599 00be B146 mov r9, r6 + 8600 .LVL987: + 8601 .L617: +4459:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst = nfree; /* Now free_clst is valid */ + 8602 .loc 1 4459 4 is_stmt 1 view .LVU2890 +4459:Middlewares/Third_Party/FatFs/src/ff.c **** fs->free_clst = nfree; /* Now free_clst is valid */ + 8603 .loc 1 4459 11 is_stmt 0 view .LVU2891 + 8604 00c0 C8F80070 str r7, [r8] +4460:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; /* FSInfo is to be updated */ + 8605 .loc 1 4460 4 is_stmt 1 view .LVU2892 +4460:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; /* FSInfo is to be updated */ + 8606 .loc 1 4460 6 is_stmt 0 view .LVU2893 + 8607 00c4 079B ldr r3, [sp, #28] + ARM GAS /tmp/cc5lWXRL.s page 300 + + +4460:Middlewares/Third_Party/FatFs/src/ff.c **** fs->fsi_flag |= 1; /* FSInfo is to be updated */ + 8608 .loc 1 4460 18 view .LVU2894 + 8609 00c6 5F61 str r7, [r3, #20] +4461:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8610 .loc 1 4461 4 is_stmt 1 view .LVU2895 +4461:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8611 .loc 1 4461 17 is_stmt 0 view .LVU2896 + 8612 00c8 1A79 ldrb r2, [r3, #4] @ zero_extendqisi2 + 8613 00ca 42F00102 orr r2, r2, #1 + 8614 00ce 1A71 strb r2, [r3, #4] + 8615 .LVL988: + 8616 .L614: +4465:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8617 .loc 1 4465 2 is_stmt 1 view .LVU2897 +4466:Middlewares/Third_Party/FatFs/src/ff.c **** + 8618 .loc 1 4466 1 is_stmt 0 view .LVU2898 + 8619 00d0 4846 mov r0, r9 + 8620 00d2 09B0 add sp, sp, #36 + 8621 .LCFI93: + 8622 .cfi_remember_state + 8623 .cfi_def_cfa_offset 36 + 8624 @ sp needed + 8625 00d4 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 8626 .LVL989: + 8627 .L627: + 8628 .LCFI94: + 8629 .cfi_restore_state +4417:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat == 0) nfree++; + 8630 .loc 1 4417 27 view .LVU2899 + 8631 00d8 4FF00209 mov r9, #2 + 8632 00dc F0E7 b .L617 + 8633 .cfi_endproc + 8634 .LFE1232: + 8636 .section .text.f_truncate,"ax",%progbits + 8637 .align 1 + 8638 .global f_truncate + 8639 .syntax unified + 8640 .thumb + 8641 .thumb_func + 8642 .fpu fpv5-d16 + 8644 f_truncate: + 8645 .LVL990: + 8646 .LFB1233: +4478:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8647 .loc 1 4478 1 is_stmt 1 view -0 + 8648 .cfi_startproc + 8649 @ args = 0, pretend = 0, frame = 8 + 8650 @ frame_needed = 0, uses_anonymous_args = 0 +4478:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8651 .loc 1 4478 1 is_stmt 0 view .LVU2901 + 8652 0000 30B5 push {r4, r5, lr} + 8653 .LCFI95: + 8654 .cfi_def_cfa_offset 12 + 8655 .cfi_offset 4, -12 + 8656 .cfi_offset 5, -8 + 8657 .cfi_offset 14, -4 + 8658 0002 83B0 sub sp, sp, #12 + ARM GAS /tmp/cc5lWXRL.s page 301 + + + 8659 .LCFI96: + 8660 .cfi_def_cfa_offset 24 + 8661 0004 0446 mov r4, r0 +4479:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 8662 .loc 1 4479 2 is_stmt 1 view .LVU2902 +4480:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD ncl; + 8663 .loc 1 4480 2 view .LVU2903 +4481:Middlewares/Third_Party/FatFs/src/ff.c **** + 8664 .loc 1 4481 2 view .LVU2904 +4484:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); + 8665 .loc 1 4484 2 view .LVU2905 +4484:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK || (res = (FRESULT)fp->err) != FR_OK) LEAVE_FF(fs, res); + 8666 .loc 1 4484 8 is_stmt 0 view .LVU2906 + 8667 0006 01A9 add r1, sp, #4 + 8668 0008 FFF7FEFF bl validate + 8669 .LVL991: +4485:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 8670 .loc 1 4485 2 is_stmt 1 view .LVU2907 +4485:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 8671 .loc 1 4485 5 is_stmt 0 view .LVU2908 + 8672 000c 0546 mov r5, r0 + 8673 000e E8B9 cbnz r0, .L635 +4485:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 8674 .loc 1 4485 27 discriminator 2 view .LVU2909 + 8675 0010 657D ldrb r5, [r4, #21] @ zero_extendqisi2 + 8676 .LVL992: +4485:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(fp->flag & FA_WRITE)) LEAVE_FF(fs, FR_DENIED); /* Check access mode */ + 8677 .loc 1 4485 19 discriminator 2 view .LVU2910 + 8678 0012 DDB9 cbnz r5, .L635 +4486:Middlewares/Third_Party/FatFs/src/ff.c **** + 8679 .loc 1 4486 2 is_stmt 1 view .LVU2911 +4486:Middlewares/Third_Party/FatFs/src/ff.c **** + 8680 .loc 1 4486 10 is_stmt 0 view .LVU2912 + 8681 0014 237D ldrb r3, [r4, #20] @ zero_extendqisi2 +4486:Middlewares/Third_Party/FatFs/src/ff.c **** + 8682 .loc 1 4486 5 view .LVU2913 + 8683 0016 13F0020F tst r3, #2 + 8684 001a 45D0 beq .L641 +4488:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* When set file size to zero, remove entire cluster chain */ + 8685 .loc 1 4488 2 is_stmt 1 view .LVU2914 +4488:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* When set file size to zero, remove entire cluster chain */ + 8686 .loc 1 4488 8 is_stmt 0 view .LVU2915 + 8687 001c A369 ldr r3, [r4, #24] +4488:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* When set file size to zero, remove entire cluster chain */ + 8688 .loc 1 4488 24 view .LVU2916 + 8689 001e E268 ldr r2, [r4, #12] +4488:Middlewares/Third_Party/FatFs/src/ff.c **** if (fp->fptr == 0) { /* When set file size to zero, remove entire cluster chain */ + 8690 .loc 1 4488 5 view .LVU2917 + 8691 0020 9342 cmp r3, r2 + 8692 0022 13D2 bcs .L635 +4489:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&fp->obj, fp->obj.sclust, 0); + 8693 .loc 1 4489 3 is_stmt 1 view .LVU2918 +4489:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&fp->obj, fp->obj.sclust, 0); + 8694 .loc 1 4489 6 is_stmt 0 view .LVU2919 + 8695 0024 ABB9 cbnz r3, .L636 +4490:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = 0; + 8696 .loc 1 4490 4 is_stmt 1 view .LVU2920 + ARM GAS /tmp/cc5lWXRL.s page 302 + + +4490:Middlewares/Third_Party/FatFs/src/ff.c **** fp->obj.sclust = 0; + 8697 .loc 1 4490 10 is_stmt 0 view .LVU2921 + 8698 0026 0022 movs r2, #0 + 8699 0028 A168 ldr r1, [r4, #8] + 8700 002a 2046 mov r0, r4 + 8701 002c FFF7FEFF bl remove_chain + 8702 .LVL993: + 8703 0030 0546 mov r5, r0 + 8704 .LVL994: +4491:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* When truncate a part of the file, remove remaining clusters */ + 8705 .loc 1 4491 4 is_stmt 1 view .LVU2922 +4491:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* When truncate a part of the file, remove remaining clusters */ + 8706 .loc 1 4491 19 is_stmt 0 view .LVU2923 + 8707 0032 0023 movs r3, #0 + 8708 0034 A360 str r3, [r4, #8] + 8709 .LVL995: + 8710 .L637: +4501:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_MODIFIED; + 8711 .loc 1 4501 3 is_stmt 1 view .LVU2924 +4501:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_MODIFIED; + 8712 .loc 1 4501 23 is_stmt 0 view .LVU2925 + 8713 0036 A369 ldr r3, [r4, #24] +4501:Middlewares/Third_Party/FatFs/src/ff.c **** fp->flag |= FA_MODIFIED; + 8714 .loc 1 4501 19 view .LVU2926 + 8715 0038 E360 str r3, [r4, #12] +4502:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 8716 .loc 1 4502 3 is_stmt 1 view .LVU2927 +4502:Middlewares/Third_Party/FatFs/src/ff.c **** #if !_FS_TINY + 8717 .loc 1 4502 12 is_stmt 0 view .LVU2928 + 8718 003a 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 8719 003c 43F04003 orr r3, r3, #64 + 8720 0040 2375 strb r3, [r4, #20] +4504:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) { + 8721 .loc 1 4504 3 is_stmt 1 view .LVU2929 +4504:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) { + 8722 .loc 1 4504 6 is_stmt 0 view .LVU2930 + 8723 0042 15B9 cbnz r5, .L639 +4504:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(fs->drv, fp->buf, fp->sect, 1) != RES_OK) { + 8724 .loc 1 4504 20 discriminator 1 view .LVU2931 + 8725 0044 13F0800F tst r3, #128 + 8726 0048 1DD1 bne .L646 + 8727 .L639: +4512:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8728 .loc 1 4512 3 is_stmt 1 view .LVU2932 +4512:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8729 .loc 1 4512 6 is_stmt 0 view .LVU2933 + 8730 004a 5DBB cbnz r5, .L640 + 8731 .LVL996: + 8732 .L635: +4516:Middlewares/Third_Party/FatFs/src/ff.c **** + 8733 .loc 1 4516 1 view .LVU2934 + 8734 004c 2846 mov r0, r5 + 8735 004e 03B0 add sp, sp, #12 + 8736 .LCFI97: + 8737 .cfi_remember_state + 8738 .cfi_def_cfa_offset 12 + 8739 @ sp needed + ARM GAS /tmp/cc5lWXRL.s page 303 + + + 8740 0050 30BD pop {r4, r5, pc} + 8741 .LVL997: + 8742 .L636: + 8743 .LCFI98: + 8744 .cfi_restore_state +4493:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 8745 .loc 1 4493 4 is_stmt 1 view .LVU2935 +4493:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 8746 .loc 1 4493 10 is_stmt 0 view .LVU2936 + 8747 0052 E169 ldr r1, [r4, #28] + 8748 0054 2046 mov r0, r4 + 8749 0056 FFF7FEFF bl get_fat + 8750 .LVL998: +4494:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == 0xFFFFFFFF) res = FR_DISK_ERR; + 8751 .loc 1 4494 4 is_stmt 1 view .LVU2937 +4495:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == 1) res = FR_INT_ERR; + 8752 .loc 1 4495 4 view .LVU2938 +4495:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == 1) res = FR_INT_ERR; + 8753 .loc 1 4495 7 is_stmt 0 view .LVU2939 + 8754 005a B0F1FF3F cmp r0, #-1 + 8755 005e 0ED0 beq .L647 + 8756 .L638: + 8757 .LVL999: +4496:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && ncl < fs->n_fatent) { + 8758 .loc 1 4496 4 is_stmt 1 view .LVU2940 +4496:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && ncl < fs->n_fatent) { + 8759 .loc 1 4496 7 is_stmt 0 view .LVU2941 + 8760 0060 0128 cmp r0, #1 + 8761 0062 0ED0 beq .L643 +4497:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&fp->obj, ncl, fp->clust); + 8762 .loc 1 4497 4 is_stmt 1 view .LVU2942 +4497:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&fp->obj, ncl, fp->clust); + 8763 .loc 1 4497 7 is_stmt 0 view .LVU2943 + 8764 0064 002D cmp r5, #0 + 8765 0066 E6D1 bne .L637 +4497:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&fp->obj, ncl, fp->clust); + 8766 .loc 1 4497 32 discriminator 1 view .LVU2944 + 8767 0068 019B ldr r3, [sp, #4] + 8768 006a 9B69 ldr r3, [r3, #24] +4497:Middlewares/Third_Party/FatFs/src/ff.c **** res = remove_chain(&fp->obj, ncl, fp->clust); + 8769 .loc 1 4497 21 discriminator 1 view .LVU2945 + 8770 006c 8342 cmp r3, r0 + 8771 006e E2D9 bls .L637 +4498:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8772 .loc 1 4498 5 is_stmt 1 view .LVU2946 +4498:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8773 .loc 1 4498 11 is_stmt 0 view .LVU2947 + 8774 0070 E269 ldr r2, [r4, #28] + 8775 0072 0146 mov r1, r0 + 8776 0074 2046 mov r0, r4 + 8777 .LVL1000: +4498:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8778 .loc 1 4498 11 view .LVU2948 + 8779 0076 FFF7FEFF bl remove_chain + 8780 .LVL1001: +4498:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8781 .loc 1 4498 11 view .LVU2949 + ARM GAS /tmp/cc5lWXRL.s page 304 + + + 8782 007a 0546 mov r5, r0 + 8783 .LVL1002: +4498:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8784 .loc 1 4498 11 view .LVU2950 + 8785 007c DBE7 b .L637 + 8786 .LVL1003: + 8787 .L647: +4495:Middlewares/Third_Party/FatFs/src/ff.c **** if (ncl == 1) res = FR_INT_ERR; + 8788 .loc 1 4495 31 view .LVU2951 + 8789 007e 0125 movs r5, #1 + 8790 0080 EEE7 b .L638 + 8791 .LVL1004: + 8792 .L643: +4496:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && ncl < fs->n_fatent) { + 8793 .loc 1 4496 22 view .LVU2952 + 8794 0082 0225 movs r5, #2 + 8795 .LVL1005: +4496:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && ncl < fs->n_fatent) { + 8796 .loc 1 4496 22 view .LVU2953 + 8797 0084 D7E7 b .L637 + 8798 .LVL1006: + 8799 .L646: +4505:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 8800 .loc 1 4505 4 is_stmt 1 view .LVU2954 +4505:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 8801 .loc 1 4505 8 is_stmt 0 view .LVU2955 + 8802 0086 0123 movs r3, #1 + 8803 0088 226A ldr r2, [r4, #32] + 8804 008a 04F13001 add r1, r4, #48 + 8805 008e 0198 ldr r0, [sp, #4] + 8806 0090 4078 ldrb r0, [r0, #1] @ zero_extendqisi2 + 8807 0092 FFF7FEFF bl disk_write + 8808 .LVL1007: +4505:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DISK_ERR; + 8809 .loc 1 4505 7 view .LVU2956 + 8810 0096 20B9 cbnz r0, .L644 +4508:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8811 .loc 1 4508 5 is_stmt 1 view .LVU2957 +4508:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8812 .loc 1 4508 14 is_stmt 0 view .LVU2958 + 8813 0098 237D ldrb r3, [r4, #20] @ zero_extendqisi2 + 8814 009a 03F07F03 and r3, r3, #127 + 8815 009e 2375 strb r3, [r4, #20] + 8816 00a0 D3E7 b .L639 + 8817 .L644: +4506:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8818 .loc 1 4506 9 view .LVU2959 + 8819 00a2 0125 movs r5, #1 + 8820 .LVL1008: + 8821 .L640: +4512:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8822 .loc 1 4512 21 is_stmt 1 discriminator 1 view .LVU2960 + 8823 00a4 6575 strb r5, [r4, #21] +4512:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8824 .loc 1 4512 21 discriminator 1 view .LVU2961 + 8825 00a6 D1E7 b .L635 + 8826 .LVL1009: + ARM GAS /tmp/cc5lWXRL.s page 305 + + + 8827 .L641: +4486:Middlewares/Third_Party/FatFs/src/ff.c **** + 8828 .loc 1 4486 30 is_stmt 0 view .LVU2962 + 8829 00a8 0725 movs r5, #7 + 8830 .LVL1010: +4486:Middlewares/Third_Party/FatFs/src/ff.c **** + 8831 .loc 1 4486 30 view .LVU2963 + 8832 00aa CFE7 b .L635 + 8833 .cfi_endproc + 8834 .LFE1233: + 8836 .section .text.f_unlink,"ax",%progbits + 8837 .align 1 + 8838 .global f_unlink + 8839 .syntax unified + 8840 .thumb + 8841 .thumb_func + 8842 .fpu fpv5-d16 + 8844 f_unlink: + 8845 .LVL1011: + 8846 .LFB1234: +4528:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8847 .loc 1 4528 1 is_stmt 1 view -0 + 8848 .cfi_startproc + 8849 @ args = 0, pretend = 0, frame = 112 + 8850 @ frame_needed = 0, uses_anonymous_args = 0 +4528:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 8851 .loc 1 4528 1 is_stmt 0 view .LVU2965 + 8852 0000 F0B5 push {r4, r5, r6, r7, lr} + 8853 .LCFI99: + 8854 .cfi_def_cfa_offset 20 + 8855 .cfi_offset 4, -20 + 8856 .cfi_offset 5, -16 + 8857 .cfi_offset 6, -12 + 8858 .cfi_offset 7, -8 + 8859 .cfi_offset 14, -4 + 8860 0002 9DB0 sub sp, sp, #116 + 8861 .LCFI100: + 8862 .cfi_def_cfa_offset 136 + 8863 0004 0190 str r0, [sp, #4] +4529:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj, sdj; + 8864 .loc 1 4529 2 is_stmt 1 view .LVU2966 +4530:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD dclst = 0; + 8865 .loc 1 4530 2 view .LVU2967 +4531:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 8866 .loc 1 4531 2 view .LVU2968 + 8867 .LVL1012: +4532:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 8868 .loc 1 4532 2 view .LVU2969 +4540:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; + 8869 .loc 1 4540 2 view .LVU2970 +4540:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; + 8870 .loc 1 4540 8 is_stmt 0 view .LVU2971 + 8871 0006 0222 movs r2, #2 + 8872 0008 03A9 add r1, sp, #12 + 8873 000a 01A8 add r0, sp, #4 + 8874 .LVL1013: +4540:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; + ARM GAS /tmp/cc5lWXRL.s page 306 + + + 8875 .loc 1 4540 8 view .LVU2972 + 8876 000c FFF7FEFF bl find_volume + 8877 .LVL1014: +4541:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8878 .loc 1 4541 2 is_stmt 1 view .LVU2973 +4541:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8879 .loc 1 4541 12 is_stmt 0 view .LVU2974 + 8880 0010 039B ldr r3, [sp, #12] + 8881 0012 1093 str r3, [sp, #64] +4542:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); + 8882 .loc 1 4542 2 is_stmt 1 view .LVU2975 +4542:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); + 8883 .loc 1 4542 5 is_stmt 0 view .LVU2976 + 8884 0014 0446 mov r4, r0 + 8885 0016 10B1 cbz r0, .L658 + 8886 .LVL1015: + 8887 .L649: +4607:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8888 .loc 1 4607 16 is_stmt 1 view .LVU2977 +4610:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8889 .loc 1 4610 2 view .LVU2978 +4611:Middlewares/Third_Party/FatFs/src/ff.c **** + 8890 .loc 1 4611 1 is_stmt 0 view .LVU2979 + 8891 0018 2046 mov r0, r4 + 8892 001a 1DB0 add sp, sp, #116 + 8893 .LCFI101: + 8894 .cfi_remember_state + 8895 .cfi_def_cfa_offset 20 + 8896 @ sp needed + 8897 001c F0BD pop {r4, r5, r6, r7, pc} + 8898 .LVL1016: + 8899 .L658: + 8900 .LCFI102: + 8901 .cfi_restore_state +4543:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */ + 8902 .loc 1 4543 18 is_stmt 1 view .LVU2980 +4544:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && res == FR_OK && (dj.fn[NSFLAG] & NS_DOT)) { + 8903 .loc 1 4544 3 view .LVU2981 +4544:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && res == FR_OK && (dj.fn[NSFLAG] & NS_DOT)) { + 8904 .loc 1 4544 9 is_stmt 0 view .LVU2982 + 8905 001e 0199 ldr r1, [sp, #4] + 8906 0020 10A8 add r0, sp, #64 + 8907 .LVL1017: +4544:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && res == FR_OK && (dj.fn[NSFLAG] & NS_DOT)) { + 8908 .loc 1 4544 9 view .LVU2983 + 8909 0022 FFF7FEFF bl follow_path + 8910 .LVL1018: +4545:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; /* Cannot remove dot entry */ + 8911 .loc 1 4545 3 is_stmt 1 view .LVU2984 +4549:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 8912 .loc 1 4549 3 view .LVU2985 +4549:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 8913 .loc 1 4549 6 is_stmt 0 view .LVU2986 + 8914 0026 0446 mov r4, r0 + 8915 0028 20B9 cbnz r0, .L650 +4549:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 8916 .loc 1 4549 21 is_stmt 1 discriminator 1 view .LVU2987 + ARM GAS /tmp/cc5lWXRL.s page 307 + + +4549:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 8917 .loc 1 4549 27 is_stmt 0 discriminator 1 view .LVU2988 + 8918 002a 0221 movs r1, #2 + 8919 002c 10A8 add r0, sp, #64 + 8920 .LVL1019: +4549:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 8921 .loc 1 4549 27 discriminator 1 view .LVU2989 + 8922 002e FFF7FEFF bl chk_lock + 8923 .LVL1020: + 8924 0032 0446 mov r4, r0 + 8925 .LVL1021: + 8926 .L650: +4551:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { + 8927 .loc 1 4551 3 is_stmt 1 view .LVU2990 +4551:Middlewares/Third_Party/FatFs/src/ff.c **** if (dj.fn[NSFLAG] & NS_NONAME) { + 8928 .loc 1 4551 6 is_stmt 0 view .LVU2991 + 8929 0034 002C cmp r4, #0 + 8930 0036 EFD1 bne .L649 +4552:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; /* Cannot remove the origin directory */ + 8931 .loc 1 4552 4 is_stmt 1 view .LVU2992 +4552:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; /* Cannot remove the origin directory */ + 8932 .loc 1 4552 8 is_stmt 0 view .LVU2993 + 8933 0038 9DF96F30 ldrsb r3, [sp, #111] +4552:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; /* Cannot remove the origin directory */ + 8934 .loc 1 4552 7 view .LVU2994 + 8935 003c 002B cmp r3, #0 + 8936 003e 1EDB blt .L654 +4555:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; /* Cannot remove R/O object */ + 8937 .loc 1 4555 5 is_stmt 1 view .LVU2995 +4555:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; /* Cannot remove R/O object */ + 8938 .loc 1 4555 15 is_stmt 0 view .LVU2996 + 8939 0040 9DF84660 ldrb r6, [sp, #70] @ zero_extendqisi2 +4555:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_DENIED; /* Cannot remove R/O object */ + 8940 .loc 1 4555 8 view .LVU2997 + 8941 0044 16F0010F tst r6, #1 + 8942 0048 2FD1 bne .L655 +4559:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 8943 .loc 1 4559 4 is_stmt 1 view .LVU2998 +4569:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8944 .loc 1 4569 6 view .LVU2999 +4569:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8945 .loc 1 4569 14 is_stmt 0 view .LVU3000 + 8946 004a 039F ldr r7, [sp, #12] + 8947 004c 1899 ldr r1, [sp, #96] + 8948 004e 3846 mov r0, r7 + 8949 0050 FFF7FEFF bl ld_clust + 8950 .LVL1022: + 8951 0054 0546 mov r5, r0 + 8952 .LVL1023: +4571:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH != 0 + 8953 .loc 1 4571 5 is_stmt 1 view .LVU3001 +4571:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_RPATH != 0 + 8954 .loc 1 4571 8 is_stmt 0 view .LVU3002 + 8955 0056 16F0100F tst r6, #16 + 8956 005a 12D0 beq .L651 +4578:Middlewares/Third_Party/FatFs/src/ff.c **** sdj.obj.sclust = dclst; + 8957 .loc 1 4578 7 is_stmt 1 view .LVU3003 + ARM GAS /tmp/cc5lWXRL.s page 308 + + +4578:Middlewares/Third_Party/FatFs/src/ff.c **** sdj.obj.sclust = dclst; + 8958 .loc 1 4578 18 is_stmt 0 view .LVU3004 + 8959 005c 0497 str r7, [sp, #16] +4579:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 8960 .loc 1 4579 7 is_stmt 1 view .LVU3005 +4579:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 8961 .loc 1 4579 22 is_stmt 0 view .LVU3006 + 8962 005e 0690 str r0, [sp, #24] +4586:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8963 .loc 1 4586 7 is_stmt 1 view .LVU3007 +4586:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8964 .loc 1 4586 13 is_stmt 0 view .LVU3008 + 8965 0060 0021 movs r1, #0 + 8966 0062 04A8 add r0, sp, #16 + 8967 .LVL1024: +4586:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 8968 .loc 1 4586 13 view .LVU3009 + 8969 0064 FFF7FEFF bl dir_sdi + 8970 .LVL1025: +4587:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_read(&sdj, 0); /* Read an item */ + 8971 .loc 1 4587 7 is_stmt 1 view .LVU3010 +4587:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_read(&sdj, 0); /* Read an item */ + 8972 .loc 1 4587 10 is_stmt 0 view .LVU3011 + 8973 0068 0446 mov r4, r0 + 8974 006a 50B9 cbnz r0, .L651 +4588:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = FR_DENIED; /* Not empty? */ + 8975 .loc 1 4588 8 is_stmt 1 view .LVU3012 +4588:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = FR_DENIED; /* Not empty? */ + 8976 .loc 1 4588 14 is_stmt 0 view .LVU3013 + 8977 006c 0021 movs r1, #0 + 8978 006e 04A8 add r0, sp, #16 + 8979 .LVL1026: +4588:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = FR_DENIED; /* Not empty? */ + 8980 .loc 1 4588 14 view .LVU3014 + 8981 0070 FFF7FEFF bl dir_read + 8982 .LVL1027: +4589:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Empty? */ + 8983 .loc 1 4589 8 is_stmt 1 view .LVU3015 +4589:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Empty? */ + 8984 .loc 1 4589 11 is_stmt 0 view .LVU3016 + 8985 0074 0446 mov r4, r0 + 8986 0076 D8B1 cbz r0, .L656 +4590:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8987 .loc 1 4590 8 is_stmt 1 view .LVU3017 +4590:Middlewares/Third_Party/FatFs/src/ff.c **** } + 8988 .loc 1 4590 11 is_stmt 0 view .LVU3018 + 8989 0078 0428 cmp r0, #4 + 8990 007a 02D1 bne .L651 + 8991 007c 03E0 b .L652 + 8992 .LVL1028: + 8993 .L654: +4531:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 8994 .loc 1 4531 8 view .LVU3019 + 8995 007e 0025 movs r5, #0 +4553:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 8996 .loc 1 4553 9 view .LVU3020 + 8997 0080 0624 movs r4, #6 + ARM GAS /tmp/cc5lWXRL.s page 309 + + + 8998 .LVL1029: + 8999 .L651: +4595:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_remove(&dj); /* Remove the directory entry */ + 9000 .loc 1 4595 4 is_stmt 1 view .LVU3021 +4595:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_remove(&dj); /* Remove the directory entry */ + 9001 .loc 1 4595 7 is_stmt 0 view .LVU3022 + 9002 0082 002C cmp r4, #0 + 9003 0084 C8D1 bne .L649 + 9004 .LVL1030: + 9005 .L652: +4596:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && dclst) { /* Remove the cluster chain if exist */ + 9006 .loc 1 4596 5 is_stmt 1 view .LVU3023 +4596:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && dclst) { /* Remove the cluster chain if exist */ + 9007 .loc 1 4596 11 is_stmt 0 view .LVU3024 + 9008 0086 10A8 add r0, sp, #64 + 9009 0088 FFF7FEFF bl dir_remove + 9010 .LVL1031: +4597:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 9011 .loc 1 4597 5 is_stmt 1 view .LVU3025 +4597:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 9012 .loc 1 4597 13 is_stmt 0 view .LVU3026 + 9013 008c 0446 mov r4, r0 +4597:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 9014 .loc 1 4597 22 view .LVU3027 + 9015 008e B0FA80F0 clz r0, r0 + 9016 .LVL1032: +4597:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 9017 .loc 1 4597 22 view .LVU3028 + 9018 0092 4009 lsrs r0, r0, #5 + 9019 0094 002D cmp r5, #0 + 9020 0096 08BF it eq + 9021 0098 0020 moveq r0, #0 +4597:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 9022 .loc 1 4597 8 view .LVU3029 + 9023 009a 58B9 cbnz r0, .L659 + 9024 .L653: + 9025 .LVL1033: +4604:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9026 .loc 1 4604 5 is_stmt 1 view .LVU3030 +4604:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9027 .loc 1 4604 8 is_stmt 0 view .LVU3031 + 9028 009c 002C cmp r4, #0 + 9029 009e BBD1 bne .L649 +4604:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9030 .loc 1 4604 23 is_stmt 1 discriminator 1 view .LVU3032 +4604:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9031 .loc 1 4604 29 is_stmt 0 discriminator 1 view .LVU3033 + 9032 00a0 0398 ldr r0, [sp, #12] + 9033 00a2 FFF7FEFF bl sync_fs + 9034 .LVL1034: + 9035 00a6 0446 mov r4, r0 + 9036 .LVL1035: +4604:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9037 .loc 1 4604 29 discriminator 1 view .LVU3034 + 9038 00a8 B6E7 b .L649 + 9039 .LVL1036: + 9040 .L655: + ARM GAS /tmp/cc5lWXRL.s page 310 + + +4531:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 9041 .loc 1 4531 8 view .LVU3035 + 9042 00aa 0025 movs r5, #0 +4556:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9043 .loc 1 4556 10 view .LVU3036 + 9044 00ac 0724 movs r4, #7 + 9045 .LVL1037: +4556:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9046 .loc 1 4556 10 view .LVU3037 + 9047 00ae E8E7 b .L651 + 9048 .LVL1038: + 9049 .L656: +4589:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_NO_FILE) res = FR_OK; /* Empty? */ + 9050 .loc 1 4589 30 view .LVU3038 + 9051 00b0 0724 movs r4, #7 + 9052 00b2 E6E7 b .L651 + 9053 .LVL1039: + 9054 .L659: +4601:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 9055 .loc 1 4601 6 is_stmt 1 view .LVU3039 +4601:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 9056 .loc 1 4601 12 is_stmt 0 view .LVU3040 + 9057 00b4 0022 movs r2, #0 + 9058 00b6 2946 mov r1, r5 + 9059 00b8 10A8 add r0, sp, #64 + 9060 00ba FFF7FEFF bl remove_chain + 9061 .LVL1040: + 9062 00be 0446 mov r4, r0 + 9063 .LVL1041: +4601:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 9064 .loc 1 4601 12 view .LVU3041 + 9065 00c0 ECE7 b .L653 + 9066 .cfi_endproc + 9067 .LFE1234: + 9069 .section .text.f_mkdir,"ax",%progbits + 9070 .align 1 + 9071 .global f_mkdir + 9072 .syntax unified + 9073 .thumb + 9074 .thumb_func + 9075 .fpu fpv5-d16 + 9077 f_mkdir: + 9078 .LVL1042: + 9079 .LFB1235: +4623:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 9080 .loc 1 4623 1 is_stmt 1 view -0 + 9081 .cfi_startproc + 9082 @ args = 0, pretend = 0, frame = 64 + 9083 @ frame_needed = 0, uses_anonymous_args = 0 +4623:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 9084 .loc 1 4623 1 is_stmt 0 view .LVU3043 + 9085 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 9086 .LCFI103: + 9087 .cfi_def_cfa_offset 36 + 9088 .cfi_offset 4, -36 + 9089 .cfi_offset 5, -32 + 9090 .cfi_offset 6, -28 + ARM GAS /tmp/cc5lWXRL.s page 311 + + + 9091 .cfi_offset 7, -24 + 9092 .cfi_offset 8, -20 + 9093 .cfi_offset 9, -16 + 9094 .cfi_offset 10, -12 + 9095 .cfi_offset 11, -8 + 9096 .cfi_offset 14, -4 + 9097 0004 91B0 sub sp, sp, #68 + 9098 .LCFI104: + 9099 .cfi_def_cfa_offset 104 + 9100 0006 0190 str r0, [sp, #4] +4624:Middlewares/Third_Party/FatFs/src/ff.c **** DIR dj; + 9101 .loc 1 4624 2 is_stmt 1 view .LVU3044 +4625:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 9102 .loc 1 4625 2 view .LVU3045 +4626:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE *dir; + 9103 .loc 1 4626 2 view .LVU3046 +4627:Middlewares/Third_Party/FatFs/src/ff.c **** UINT n; + 9104 .loc 1 4627 2 view .LVU3047 +4628:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD dsc, dcl, pcl, tm; + 9105 .loc 1 4628 2 view .LVU3048 +4629:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF + 9106 .loc 1 4629 2 view .LVU3049 +4634:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; + 9107 .loc 1 4634 2 view .LVU3050 +4634:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; + 9108 .loc 1 4634 8 is_stmt 0 view .LVU3051 + 9109 0008 0222 movs r2, #2 + 9110 000a 03A9 add r1, sp, #12 + 9111 000c 01A8 add r0, sp, #4 + 9112 .LVL1043: +4634:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.fs = fs; + 9113 .loc 1 4634 8 view .LVU3052 + 9114 000e FFF7FEFF bl find_volume + 9115 .LVL1044: +4635:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 9116 .loc 1 4635 2 is_stmt 1 view .LVU3053 +4635:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 9117 .loc 1 4635 12 is_stmt 0 view .LVU3054 + 9118 0012 039B ldr r3, [sp, #12] + 9119 0014 0493 str r3, [sp, #16] +4636:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); + 9120 .loc 1 4636 2 is_stmt 1 view .LVU3055 +4636:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); + 9121 .loc 1 4636 5 is_stmt 0 view .LVU3056 + 9122 0016 0446 mov r4, r0 + 9123 0018 18B1 cbz r0, .L678 + 9124 .LVL1045: + 9125 .L661: +4704:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9126 .loc 1 4704 16 is_stmt 1 view .LVU3057 +4707:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9127 .loc 1 4707 2 view .LVU3058 +4708:Middlewares/Third_Party/FatFs/src/ff.c **** + 9128 .loc 1 4708 1 is_stmt 0 view .LVU3059 + 9129 001a 2046 mov r0, r4 + 9130 001c 11B0 add sp, sp, #68 + 9131 .LCFI105: + ARM GAS /tmp/cc5lWXRL.s page 312 + + + 9132 .cfi_remember_state + 9133 .cfi_def_cfa_offset 36 + 9134 @ sp needed + 9135 001e BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 9136 .LVL1046: + 9137 .L678: + 9138 .LCFI106: + 9139 .cfi_restore_state +4637:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&dj, path); /* Follow the file path */ + 9140 .loc 1 4637 18 is_stmt 1 view .LVU3060 +4638:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = FR_EXIST; /* Any object with same name is already existing */ + 9141 .loc 1 4638 3 view .LVU3061 +4638:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = FR_EXIST; /* Any object with same name is already existing */ + 9142 .loc 1 4638 9 is_stmt 0 view .LVU3062 + 9143 0022 0199 ldr r1, [sp, #4] + 9144 0024 04A8 add r0, sp, #16 + 9145 .LVL1047: +4638:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = FR_EXIST; /* Any object with same name is already existing */ + 9146 .loc 1 4638 9 view .LVU3063 + 9147 0026 FFF7FEFF bl follow_path + 9148 .LVL1048: +4639:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && res == FR_NO_FILE && (dj.fn[NSFLAG] & NS_DOT)) { + 9149 .loc 1 4639 3 is_stmt 1 view .LVU3064 +4639:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && res == FR_NO_FILE && (dj.fn[NSFLAG] & NS_DOT)) { + 9150 .loc 1 4639 6 is_stmt 0 view .LVU3065 + 9151 002a 0028 cmp r0, #0 + 9152 002c 00F09A80 beq .L671 +4640:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INVALID_NAME; + 9153 .loc 1 4640 3 is_stmt 1 view .LVU3066 +4643:Middlewares/Third_Party/FatFs/src/ff.c **** dcl = create_chain(&dj.obj, 0); /* Allocate a cluster for the new directory table */ + 9154 .loc 1 4643 3 view .LVU3067 +4643:Middlewares/Third_Party/FatFs/src/ff.c **** dcl = create_chain(&dj.obj, 0); /* Allocate a cluster for the new directory table */ + 9155 .loc 1 4643 6 is_stmt 0 view .LVU3068 + 9156 0030 0428 cmp r0, #4 + 9157 0032 01D0 beq .L679 +4638:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = FR_EXIST; /* Any object with same name is already existing */ + 9158 .loc 1 4638 9 view .LVU3069 + 9159 0034 0446 mov r4, r0 + 9160 0036 F0E7 b .L661 + 9161 .L679: +4644:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.objsize = (DWORD)fs->csize * SS(fs); + 9162 .loc 1 4644 4 is_stmt 1 view .LVU3070 +4644:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.objsize = (DWORD)fs->csize * SS(fs); + 9163 .loc 1 4644 10 is_stmt 0 view .LVU3071 + 9164 0038 0021 movs r1, #0 + 9165 003a 04A8 add r0, sp, #16 + 9166 .LVL1049: +4644:Middlewares/Third_Party/FatFs/src/ff.c **** dj.obj.objsize = (DWORD)fs->csize * SS(fs); + 9167 .loc 1 4644 10 view .LVU3072 + 9168 003c FFF7FEFF bl create_chain + 9169 .LVL1050: +4645:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 9170 .loc 1 4645 4 is_stmt 1 view .LVU3073 +4645:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 9171 .loc 1 4645 30 is_stmt 0 view .LVU3074 + 9172 0040 039A ldr r2, [sp, #12] + 9173 0042 5389 ldrh r3, [r2, #10] + ARM GAS /tmp/cc5lWXRL.s page 313 + + +4645:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 9174 .loc 1 4645 40 view .LVU3075 + 9175 0044 9189 ldrh r1, [r2, #12] +4645:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 9176 .loc 1 4645 38 view .LVU3076 + 9177 0046 01FB03F3 mul r3, r1, r3 +4645:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_OK; + 9178 .loc 1 4645 19 view .LVU3077 + 9179 004a 0793 str r3, [sp, #28] +4646:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 0) res = FR_DENIED; /* No space to allocate a new cluster */ + 9180 .loc 1 4646 4 is_stmt 1 view .LVU3078 + 9181 .LVL1051: +4647:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 1) res = FR_INT_ERR; + 9182 .loc 1 4647 4 view .LVU3079 +4647:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 1) res = FR_INT_ERR; + 9183 .loc 1 4647 7 is_stmt 0 view .LVU3080 + 9184 004c 8046 mov r8, r0 + 9185 004e 00B9 cbnz r0, .L662 +4647:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 1) res = FR_INT_ERR; + 9186 .loc 1 4647 22 view .LVU3081 + 9187 0050 0724 movs r4, #7 + 9188 .L662: + 9189 .LVL1052: +4648:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 0xFFFFFFFF) res = FR_DISK_ERR; + 9190 .loc 1 4648 4 is_stmt 1 view .LVU3082 +4648:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 0xFFFFFFFF) res = FR_DISK_ERR; + 9191 .loc 1 4648 7 is_stmt 0 view .LVU3083 + 9192 0052 B8F1010F cmp r8, #1 + 9193 0056 20D0 beq .L680 + 9194 .LVL1053: + 9195 .L663: +4649:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = sync_window(fs); /* Flush FAT */ + 9196 .loc 1 4649 4 is_stmt 1 view .LVU3084 +4649:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = sync_window(fs); /* Flush FAT */ + 9197 .loc 1 4649 7 is_stmt 0 view .LVU3085 + 9198 0058 B8F1FF3F cmp r8, #-1 + 9199 005c 24D0 beq .L675 +4650:Middlewares/Third_Party/FatFs/src/ff.c **** tm = GET_FATTIME(); + 9200 .loc 1 4650 4 is_stmt 1 view .LVU3086 +4650:Middlewares/Third_Party/FatFs/src/ff.c **** tm = GET_FATTIME(); + 9201 .loc 1 4650 7 is_stmt 0 view .LVU3087 + 9202 005e F4B1 cbz r4, .L681 + 9203 .LVL1054: + 9204 .L664: +4651:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Initialize the new directory table */ + 9205 .loc 1 4651 4 is_stmt 1 view .LVU3088 +4651:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Initialize the new directory table */ + 9206 .loc 1 4651 9 is_stmt 0 view .LVU3089 + 9207 0060 FFF7FEFF bl get_fattime + 9208 .LVL1055: + 9209 0064 8246 mov r10, r0 + 9210 .LVL1056: +4652:Middlewares/Third_Party/FatFs/src/ff.c **** dsc = clust2sect(fs, dcl); + 9211 .loc 1 4652 4 is_stmt 1 view .LVU3090 +4652:Middlewares/Third_Party/FatFs/src/ff.c **** dsc = clust2sect(fs, dcl); + 9212 .loc 1 4652 7 is_stmt 0 view .LVU3091 + 9213 0066 0CB3 cbz r4, .L682 + ARM GAS /tmp/cc5lWXRL.s page 314 + + + 9214 .LVL1057: + 9215 .L665: +4675:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_register(&dj); /* Register the object to the directoy */ + 9216 .loc 1 4675 4 is_stmt 1 view .LVU3092 +4675:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_register(&dj); /* Register the object to the directoy */ + 9217 .loc 1 4675 7 is_stmt 0 view .LVU3093 + 9218 0068 002C cmp r4, #0 + 9219 006a 70D0 beq .L683 + 9220 .L669: +4678:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 9221 .loc 1 4678 4 is_stmt 1 view .LVU3094 +4678:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 9222 .loc 1 4678 7 is_stmt 0 view .LVU3095 + 9223 006c 002C cmp r4, #0 + 9224 006e 73D1 bne .L670 +4691:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_ModTime, tm); /* Created time */ + 9225 .loc 1 4691 6 is_stmt 1 view .LVU3096 +4691:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_ModTime, tm); /* Created time */ + 9226 .loc 1 4691 10 is_stmt 0 view .LVU3097 + 9227 0070 0C9C ldr r4, [sp, #48] + 9228 .LVL1058: +4692:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir, dcl); /* Table start cluster */ + 9229 .loc 1 4692 6 is_stmt 1 view .LVU3098 + 9230 0072 5146 mov r1, r10 + 9231 0074 04F11600 add r0, r4, #22 + 9232 0078 FFF7FEFF bl st_dword + 9233 .LVL1059: +4693:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] = AM_DIR; /* Attribute */ + 9234 .loc 1 4693 6 view .LVU3099 + 9235 007c 4246 mov r2, r8 + 9236 007e 2146 mov r1, r4 + 9237 0080 0398 ldr r0, [sp, #12] + 9238 0082 FFF7FEFF bl st_clust + 9239 .LVL1060: +4694:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9240 .loc 1 4694 6 view .LVU3100 +4694:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9241 .loc 1 4694 20 is_stmt 0 view .LVU3101 + 9242 0086 1023 movs r3, #16 + 9243 0088 E372 strb r3, [r4, #11] +4695:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9244 .loc 1 4695 6 is_stmt 1 view .LVU3102 +4695:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9245 .loc 1 4695 16 is_stmt 0 view .LVU3103 + 9246 008a 039B ldr r3, [sp, #12] + 9247 008c 0122 movs r2, #1 + 9248 008e DA70 strb r2, [r3, #3] +4697:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); + 9249 .loc 1 4697 5 is_stmt 1 view .LVU3104 +4698:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9250 .loc 1 4698 6 view .LVU3105 +4698:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9251 .loc 1 4698 12 is_stmt 0 view .LVU3106 + 9252 0090 0398 ldr r0, [sp, #12] + 9253 0092 FFF7FEFF bl sync_fs + 9254 .LVL1061: + 9255 0096 0446 mov r4, r0 + ARM GAS /tmp/cc5lWXRL.s page 315 + + + 9256 .LVL1062: +4698:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9257 .loc 1 4698 12 view .LVU3107 + 9258 0098 BFE7 b .L661 + 9259 .LVL1063: + 9260 .L680: +4648:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 0xFFFFFFFF) res = FR_DISK_ERR; + 9261 .loc 1 4648 22 view .LVU3108 + 9262 009a 0224 movs r4, #2 + 9263 .LVL1064: +4648:Middlewares/Third_Party/FatFs/src/ff.c **** if (dcl == 0xFFFFFFFF) res = FR_DISK_ERR; + 9264 .loc 1 4648 22 view .LVU3109 + 9265 009c DCE7 b .L663 + 9266 .LVL1065: + 9267 .L681: +4650:Middlewares/Third_Party/FatFs/src/ff.c **** tm = GET_FATTIME(); + 9268 .loc 1 4650 22 is_stmt 1 discriminator 1 view .LVU3110 +4650:Middlewares/Third_Party/FatFs/src/ff.c **** tm = GET_FATTIME(); + 9269 .loc 1 4650 28 is_stmt 0 discriminator 1 view .LVU3111 + 9270 009e 1046 mov r0, r2 + 9271 .LVL1066: +4650:Middlewares/Third_Party/FatFs/src/ff.c **** tm = GET_FATTIME(); + 9272 .loc 1 4650 28 discriminator 1 view .LVU3112 + 9273 00a0 FFF7FEFF bl sync_window + 9274 .LVL1067: + 9275 00a4 0446 mov r4, r0 + 9276 .LVL1068: +4650:Middlewares/Third_Party/FatFs/src/ff.c **** tm = GET_FATTIME(); + 9277 .loc 1 4650 28 discriminator 1 view .LVU3113 + 9278 00a6 DBE7 b .L664 + 9279 .LVL1069: + 9280 .L675: +4649:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = sync_window(fs); /* Flush FAT */ + 9281 .loc 1 4649 31 view .LVU3114 + 9282 00a8 0124 movs r4, #1 + 9283 .LVL1070: +4649:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) res = sync_window(fs); /* Flush FAT */ + 9284 .loc 1 4649 31 view .LVU3115 + 9285 00aa D9E7 b .L664 + 9286 .LVL1071: + 9287 .L682: +4653:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fs->win; + 9288 .loc 1 4653 5 is_stmt 1 view .LVU3116 +4653:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fs->win; + 9289 .loc 1 4653 11 is_stmt 0 view .LVU3117 + 9290 00ac 039E ldr r6, [sp, #12] + 9291 00ae 4146 mov r1, r8 + 9292 00b0 3046 mov r0, r6 + 9293 .LVL1072: +4653:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fs->win; + 9294 .loc 1 4653 11 view .LVU3118 + 9295 00b2 FFF7FEFF bl clust2sect + 9296 .LVL1073: + 9297 00b6 0546 mov r5, r0 + 9298 .LVL1074: +4654:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dir, 0, SS(fs)); + 9299 .loc 1 4654 5 is_stmt 1 view .LVU3119 + ARM GAS /tmp/cc5lWXRL.s page 316 + + +4654:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dir, 0, SS(fs)); + 9300 .loc 1 4654 9 is_stmt 0 view .LVU3120 + 9301 00b8 06F13409 add r9, r6, #52 + 9302 .LVL1075: +4655:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + 9303 .loc 1 4655 5 is_stmt 1 view .LVU3121 + 9304 00bc B289 ldrh r2, [r6, #12] + 9305 00be 0021 movs r1, #0 + 9306 00c0 4846 mov r0, r9 + 9307 .LVL1076: +4655:Middlewares/Third_Party/FatFs/src/ff.c **** if (!_FS_EXFAT || fs->fs_type != FS_EXFAT) { + 9308 .loc 1 4655 5 is_stmt 0 view .LVU3122 + 9309 00c2 FFF7FEFF bl mem_set + 9310 .LVL1077: +4656:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dir + DIR_Name, ' ', 11); /* Create "." entry */ + 9311 .loc 1 4656 5 is_stmt 1 view .LVU3123 +4657:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Name] = '.'; + 9312 .loc 1 4657 6 view .LVU3124 + 9313 00c6 0B22 movs r2, #11 + 9314 00c8 2021 movs r1, #32 + 9315 00ca 4846 mov r0, r9 + 9316 00cc FFF7FEFF bl mem_set + 9317 .LVL1078: +4658:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] = AM_DIR; + 9318 .loc 1 4658 6 view .LVU3125 +4658:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] = AM_DIR; + 9319 .loc 1 4658 20 is_stmt 0 view .LVU3126 + 9320 00d0 4FF02E0B mov fp, #46 + 9321 00d4 86F834B0 strb fp, [r6, #52] +4659:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_ModTime, tm); + 9322 .loc 1 4659 6 is_stmt 1 view .LVU3127 +4659:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(dir + DIR_ModTime, tm); + 9323 .loc 1 4659 20 is_stmt 0 view .LVU3128 + 9324 00d8 1023 movs r3, #16 + 9325 00da 86F83F30 strb r3, [r6, #63] +4660:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir, dcl); + 9326 .loc 1 4660 6 is_stmt 1 view .LVU3129 + 9327 00de 5146 mov r1, r10 + 9328 00e0 06F14A00 add r0, r6, #74 + 9329 00e4 FFF7FEFF bl st_dword + 9330 .LVL1079: +4661:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dir + SZDIRE, dir, SZDIRE); /* Create ".." entry */ + 9331 .loc 1 4661 6 view .LVU3130 + 9332 00e8 4246 mov r2, r8 + 9333 00ea 4946 mov r1, r9 + 9334 00ec 0398 ldr r0, [sp, #12] + 9335 00ee FFF7FEFF bl st_clust + 9336 .LVL1080: +4662:Middlewares/Third_Party/FatFs/src/ff.c **** dir[SZDIRE + 1] = '.'; pcl = dj.obj.sclust; + 9337 .loc 1 4662 6 view .LVU3131 +4662:Middlewares/Third_Party/FatFs/src/ff.c **** dir[SZDIRE + 1] = '.'; pcl = dj.obj.sclust; + 9338 .loc 1 4662 18 is_stmt 0 view .LVU3132 + 9339 00f2 06F15407 add r7, r6, #84 +4662:Middlewares/Third_Party/FatFs/src/ff.c **** dir[SZDIRE + 1] = '.'; pcl = dj.obj.sclust; + 9340 .loc 1 4662 6 view .LVU3133 + 9341 00f6 2022 movs r2, #32 + 9342 00f8 4946 mov r1, r9 + ARM GAS /tmp/cc5lWXRL.s page 317 + + + 9343 00fa 3846 mov r0, r7 + 9344 00fc FFF7FEFF bl mem_cpy + 9345 .LVL1081: +4663:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT32 && pcl == fs->dirbase) pcl = 0; + 9346 .loc 1 4663 6 is_stmt 1 view .LVU3134 +4663:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT32 && pcl == fs->dirbase) pcl = 0; + 9347 .loc 1 4663 22 is_stmt 0 view .LVU3135 + 9348 0100 86F855B0 strb fp, [r6, #85] +4663:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT32 && pcl == fs->dirbase) pcl = 0; + 9349 .loc 1 4663 29 is_stmt 1 view .LVU3136 +4663:Middlewares/Third_Party/FatFs/src/ff.c **** if (fs->fs_type == FS_FAT32 && pcl == fs->dirbase) pcl = 0; + 9350 .loc 1 4663 33 is_stmt 0 view .LVU3137 + 9351 0104 069A ldr r2, [sp, #24] + 9352 .LVL1082: +4664:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir + SZDIRE, pcl); + 9353 .loc 1 4664 6 is_stmt 1 view .LVU3138 +4664:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir + SZDIRE, pcl); + 9354 .loc 1 4664 12 is_stmt 0 view .LVU3139 + 9355 0106 0398 ldr r0, [sp, #12] + 9356 0108 0378 ldrb r3, [r0] @ zero_extendqisi2 +4664:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir + SZDIRE, pcl); + 9357 .loc 1 4664 9 view .LVU3140 + 9358 010a 032B cmp r3, #3 + 9359 010c 1AD0 beq .L684 + 9360 .LVL1083: + 9361 .L666: +4665:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9362 .loc 1 4665 6 is_stmt 1 view .LVU3141 + 9363 010e 3946 mov r1, r7 + 9364 0110 FFF7FEFF bl st_clust + 9365 .LVL1084: +4667:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect = dsc++; + 9366 .loc 1 4667 5 view .LVU3142 +4667:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect = dsc++; + 9367 .loc 1 4667 16 is_stmt 0 view .LVU3143 + 9368 0114 039B ldr r3, [sp, #12] + 9369 0116 5E89 ldrh r6, [r3, #10] + 9370 .LVL1085: + 9371 .L667: +4667:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect = dsc++; + 9372 .loc 1 4667 25 is_stmt 1 discriminator 1 view .LVU3144 +4667:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect = dsc++; + 9373 .loc 1 4667 5 is_stmt 0 discriminator 1 view .LVU3145 + 9374 0118 002E cmp r6, #0 + 9375 011a A5D0 beq .L665 +4668:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9376 .loc 1 4668 6 is_stmt 1 view .LVU3146 +4668:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9377 .loc 1 4668 23 is_stmt 0 view .LVU3147 + 9378 011c 6F1C adds r7, r5, #1 + 9379 .LVL1086: +4668:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9380 .loc 1 4668 8 view .LVU3148 + 9381 011e 039B ldr r3, [sp, #12] +4668:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9382 .loc 1 4668 18 view .LVU3149 + 9383 0120 1D63 str r5, [r3, #48] + ARM GAS /tmp/cc5lWXRL.s page 318 + + +4669:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_window(fs); + 9384 .loc 1 4669 6 is_stmt 1 view .LVU3150 +4669:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_window(fs); + 9385 .loc 1 4669 16 is_stmt 0 view .LVU3151 + 9386 0122 0122 movs r2, #1 + 9387 0124 DA70 strb r2, [r3, #3] +4670:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 9388 .loc 1 4670 6 is_stmt 1 view .LVU3152 +4670:Middlewares/Third_Party/FatFs/src/ff.c **** if (res != FR_OK) break; + 9389 .loc 1 4670 12 is_stmt 0 view .LVU3153 + 9390 0126 0398 ldr r0, [sp, #12] + 9391 0128 FFF7FEFF bl sync_window + 9392 .LVL1087: +4671:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dir, 0, SS(fs)); + 9393 .loc 1 4671 6 is_stmt 1 view .LVU3154 +4671:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(dir, 0, SS(fs)); + 9394 .loc 1 4671 9 is_stmt 0 view .LVU3155 + 9395 012c 0446 mov r4, r0 + 9396 012e 0028 cmp r0, #0 + 9397 0130 9AD1 bne .L665 +4672:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9398 .loc 1 4672 6 is_stmt 1 discriminator 2 view .LVU3156 + 9399 0132 039B ldr r3, [sp, #12] + 9400 0134 9A89 ldrh r2, [r3, #12] + 9401 0136 0021 movs r1, #0 + 9402 0138 4846 mov r0, r9 + 9403 .LVL1088: +4672:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9404 .loc 1 4672 6 is_stmt 0 discriminator 2 view .LVU3157 + 9405 013a FFF7FEFF bl mem_set + 9406 .LVL1089: +4667:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect = dsc++; + 9407 .loc 1 4667 28 is_stmt 1 discriminator 2 view .LVU3158 +4667:Middlewares/Third_Party/FatFs/src/ff.c **** fs->winsect = dsc++; + 9408 .loc 1 4667 29 is_stmt 0 discriminator 2 view .LVU3159 + 9409 013e 013E subs r6, r6, #1 + 9410 .LVL1090: +4668:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9411 .loc 1 4668 23 discriminator 2 view .LVU3160 + 9412 0140 3D46 mov r5, r7 + 9413 0142 E9E7 b .L667 + 9414 .LVL1091: + 9415 .L684: +4664:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir + SZDIRE, pcl); + 9416 .loc 1 4664 46 discriminator 1 view .LVU3161 + 9417 0144 836A ldr r3, [r0, #40] +4664:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir + SZDIRE, pcl); + 9418 .loc 1 4664 34 discriminator 1 view .LVU3162 + 9419 0146 9342 cmp r3, r2 + 9420 0148 E1D1 bne .L666 +4664:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir + SZDIRE, pcl); + 9421 .loc 1 4664 61 view .LVU3163 + 9422 014a 0022 movs r2, #0 + 9423 .LVL1092: +4664:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir + SZDIRE, pcl); + 9424 .loc 1 4664 61 view .LVU3164 + 9425 014c DFE7 b .L666 + ARM GAS /tmp/cc5lWXRL.s page 319 + + + 9426 .LVL1093: + 9427 .L683: +4676:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9428 .loc 1 4676 5 is_stmt 1 view .LVU3165 +4676:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9429 .loc 1 4676 11 is_stmt 0 view .LVU3166 + 9430 014e 04A8 add r0, sp, #16 + 9431 0150 FFF7FEFF bl dir_register + 9432 .LVL1094: + 9433 0154 0446 mov r4, r0 + 9434 .LVL1095: +4676:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9435 .loc 1 4676 11 view .LVU3167 + 9436 0156 89E7 b .L669 + 9437 .L670: +4701:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9438 .loc 1 4701 5 is_stmt 1 view .LVU3168 + 9439 0158 0022 movs r2, #0 + 9440 015a 4146 mov r1, r8 + 9441 015c 04A8 add r0, sp, #16 + 9442 015e FFF7FEFF bl remove_chain + 9443 .LVL1096: + 9444 0162 5AE7 b .L661 + 9445 .LVL1097: + 9446 .L671: +4639:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_RPATH && res == FR_NO_FILE && (dj.fn[NSFLAG] & NS_DOT)) { + 9447 .loc 1 4639 25 is_stmt 0 view .LVU3169 + 9448 0164 0824 movs r4, #8 + 9449 0166 58E7 b .L661 + 9450 .cfi_endproc + 9451 .LFE1235: + 9453 .section .text.f_rename,"ax",%progbits + 9454 .align 1 + 9455 .global f_rename + 9456 .syntax unified + 9457 .thumb + 9458 .thumb_func + 9459 .fpu fpv5-d16 + 9461 f_rename: + 9462 .LVL1098: + 9463 .LFB1236: +4721:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 9464 .loc 1 4721 1 is_stmt 1 view -0 + 9465 .cfi_startproc + 9466 @ args = 0, pretend = 0, frame = 136 + 9467 @ frame_needed = 0, uses_anonymous_args = 0 +4721:Middlewares/Third_Party/FatFs/src/ff.c **** FRESULT res; + 9468 .loc 1 4721 1 is_stmt 0 view .LVU3171 + 9469 0000 30B5 push {r4, r5, lr} + 9470 .LCFI107: + 9471 .cfi_def_cfa_offset 12 + 9472 .cfi_offset 4, -12 + 9473 .cfi_offset 5, -8 + 9474 .cfi_offset 14, -4 + 9475 0002 A3B0 sub sp, sp, #140 + 9476 .LCFI108: + 9477 .cfi_def_cfa_offset 152 + ARM GAS /tmp/cc5lWXRL.s page 320 + + + 9478 0004 0190 str r0, [sp, #4] + 9479 0006 0091 str r1, [sp] +4722:Middlewares/Third_Party/FatFs/src/ff.c **** DIR djo, djn; + 9480 .loc 1 4722 2 is_stmt 1 view .LVU3172 +4723:Middlewares/Third_Party/FatFs/src/ff.c **** FATFS *fs; + 9481 .loc 1 4723 2 view .LVU3173 +4724:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE buf[_FS_EXFAT ? SZDIRE * 2 : 24], *dir; + 9482 .loc 1 4724 2 view .LVU3174 +4725:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD dw; + 9483 .loc 1 4725 2 view .LVU3175 +4726:Middlewares/Third_Party/FatFs/src/ff.c **** DEF_NAMBUF + 9484 .loc 1 4726 2 view .LVU3176 +4730:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path_old, &fs, FA_WRITE); /* Get logical drive of the old object */ + 9485 .loc 1 4730 2 view .LVU3177 + 9486 0008 6846 mov r0, sp + 9487 .LVL1099: +4730:Middlewares/Third_Party/FatFs/src/ff.c **** res = find_volume(&path_old, &fs, FA_WRITE); /* Get logical drive of the old object */ + 9488 .loc 1 4730 2 is_stmt 0 view .LVU3178 + 9489 000a FFF7FEFF bl get_ldnumber + 9490 .LVL1100: +4731:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 9491 .loc 1 4731 2 is_stmt 1 view .LVU3179 +4731:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 9492 .loc 1 4731 8 is_stmt 0 view .LVU3180 + 9493 000e 0222 movs r2, #2 + 9494 0010 09A9 add r1, sp, #36 + 9495 0012 01A8 add r0, sp, #4 + 9496 0014 FFF7FEFF bl find_volume + 9497 .LVL1101: +4732:Middlewares/Third_Party/FatFs/src/ff.c **** djo.obj.fs = fs; + 9498 .loc 1 4732 2 is_stmt 1 view .LVU3181 +4732:Middlewares/Third_Party/FatFs/src/ff.c **** djo.obj.fs = fs; + 9499 .loc 1 4732 5 is_stmt 0 view .LVU3182 + 9500 0018 0446 mov r4, r0 + 9501 001a 10B1 cbz r0, .L696 + 9502 .LVL1102: + 9503 .L686: +4807:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9504 .loc 1 4807 16 is_stmt 1 view .LVU3183 +4810:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9505 .loc 1 4810 2 view .LVU3184 +4811:Middlewares/Third_Party/FatFs/src/ff.c **** + 9506 .loc 1 4811 1 is_stmt 0 view .LVU3185 + 9507 001c 2046 mov r0, r4 + 9508 001e 23B0 add sp, sp, #140 + 9509 .LCFI109: + 9510 .cfi_remember_state + 9511 .cfi_def_cfa_offset 12 + 9512 @ sp needed + 9513 0020 30BD pop {r4, r5, pc} + 9514 .LVL1103: + 9515 .L696: + 9516 .LCFI110: + 9517 .cfi_restore_state +4733:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); + 9518 .loc 1 4733 3 is_stmt 1 view .LVU3186 +4733:Middlewares/Third_Party/FatFs/src/ff.c **** INIT_NAMBUF(fs); + ARM GAS /tmp/cc5lWXRL.s page 321 + + + 9519 .loc 1 4733 14 is_stmt 0 view .LVU3187 + 9520 0022 099B ldr r3, [sp, #36] + 9521 0024 1693 str r3, [sp, #88] +4734:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&djo, path_old); /* Check old object */ + 9522 .loc 1 4734 18 is_stmt 1 view .LVU3188 +4735:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && (djo.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check vali + 9523 .loc 1 4735 3 view .LVU3189 +4735:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && (djo.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check vali + 9524 .loc 1 4735 9 is_stmt 0 view .LVU3190 + 9525 0026 0199 ldr r1, [sp, #4] + 9526 0028 16A8 add r0, sp, #88 + 9527 .LVL1104: +4735:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && (djo.fn[NSFLAG] & (NS_DOT | NS_NONAME))) res = FR_INVALID_NAME; /* Check vali + 9528 .loc 1 4735 9 view .LVU3191 + 9529 002a FFF7FEFF bl follow_path + 9530 .LVL1105: +4736:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 9531 .loc 1 4736 3 is_stmt 1 view .LVU3192 +4736:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 9532 .loc 1 4736 6 is_stmt 0 view .LVU3193 + 9533 002e 0446 mov r4, r0 + 9534 0030 20B9 cbnz r0, .L687 +4736:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 9535 .loc 1 4736 30 discriminator 1 view .LVU3194 + 9536 0032 9DF88730 ldrb r3, [sp, #135] @ zero_extendqisi2 +4736:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 9537 .loc 1 4736 20 discriminator 1 view .LVU3195 + 9538 0036 13F0A00F tst r3, #160 + 9539 003a 1ED1 bne .L692 + 9540 .L687: + 9541 .LVL1106: +4738:Middlewares/Third_Party/FatFs/src/ff.c **** res = chk_lock(&djo, 2); + 9542 .loc 1 4738 3 is_stmt 1 view .LVU3196 +4738:Middlewares/Third_Party/FatFs/src/ff.c **** res = chk_lock(&djo, 2); + 9543 .loc 1 4738 6 is_stmt 0 view .LVU3197 + 9544 003c 24B9 cbnz r4, .L688 +4739:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9545 .loc 1 4739 4 is_stmt 1 view .LVU3198 +4739:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9546 .loc 1 4739 10 is_stmt 0 view .LVU3199 + 9547 003e 0221 movs r1, #2 + 9548 0040 16A8 add r0, sp, #88 + 9549 0042 FFF7FEFF bl chk_lock + 9550 .LVL1107: + 9551 0046 0446 mov r4, r0 + 9552 .LVL1108: + 9553 .L688: +4742:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 9554 .loc 1 4742 3 is_stmt 1 view .LVU3200 +4742:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_EXFAT + 9555 .loc 1 4742 6 is_stmt 0 view .LVU3201 + 9556 0048 002C cmp r4, #0 + 9557 004a E7D1 bne .L686 +4769:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(&djn, &djo, sizeof (DIR)); /* Duplicate the directory object */ + 9558 .loc 1 4769 5 is_stmt 1 view .LVU3202 + 9559 004c 1522 movs r2, #21 + 9560 004e 1E99 ldr r1, [sp, #120] + ARM GAS /tmp/cc5lWXRL.s page 322 + + + 9561 0050 0B31 adds r1, r1, #11 + 9562 0052 03A8 add r0, sp, #12 + 9563 0054 FFF7FEFF bl mem_cpy + 9564 .LVL1109: +4770:Middlewares/Third_Party/FatFs/src/ff.c **** res = follow_path(&djn, path_new); /* Make sure if new object name is not in use */ + 9565 .loc 1 4770 5 view .LVU3203 + 9566 0058 3022 movs r2, #48 + 9567 005a 16A9 add r1, sp, #88 + 9568 005c 0AA8 add r0, sp, #40 + 9569 005e FFF7FEFF bl mem_cpy + 9570 .LVL1110: +4771:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Is new name already in use by any other object? */ + 9571 .loc 1 4771 5 view .LVU3204 +4771:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { /* Is new name already in use by any other object? */ + 9572 .loc 1 4771 11 is_stmt 0 view .LVU3205 + 9573 0062 0099 ldr r1, [sp] + 9574 0064 0AA8 add r0, sp, #40 + 9575 0066 FFF7FEFF bl follow_path + 9576 .LVL1111: +4772:Middlewares/Third_Party/FatFs/src/ff.c **** res = (djn.obj.sclust == djo.obj.sclust && djn.dptr == djo.dptr) ? FR_NO_FILE : FR_EXIST; + 9577 .loc 1 4772 5 is_stmt 1 view .LVU3206 +4772:Middlewares/Third_Party/FatFs/src/ff.c **** res = (djn.obj.sclust == djo.obj.sclust && djn.dptr == djo.dptr) ? FR_NO_FILE : FR_EXIST; + 9578 .loc 1 4772 8 is_stmt 0 view .LVU3207 + 9579 006a 0446 mov r4, r0 + 9580 006c 68B9 cbnz r0, .L689 +4773:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9581 .loc 1 4773 6 is_stmt 1 view .LVU3208 +4773:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9582 .loc 1 4773 84 is_stmt 0 view .LVU3209 + 9583 006e 0C9A ldr r2, [sp, #48] + 9584 0070 189B ldr r3, [sp, #96] + 9585 0072 9A42 cmp r2, r3 + 9586 0074 03D0 beq .L697 + 9587 0076 0824 movs r4, #8 + 9588 0078 09E0 b .L690 + 9589 .L692: +4736:Middlewares/Third_Party/FatFs/src/ff.c **** #if _FS_LOCK != 0 + 9590 .loc 1 4736 68 view .LVU3210 + 9591 007a 0624 movs r4, #6 + 9592 007c E4E7 b .L688 + 9593 .L697: +4773:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9594 .loc 1 4773 46 discriminator 1 view .LVU3211 + 9595 007e 0F9A ldr r2, [sp, #60] + 9596 0080 1B9B ldr r3, [sp, #108] + 9597 0082 9A42 cmp r2, r3 + 9598 0084 10D0 beq .L691 +4773:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9599 .loc 1 4773 84 view .LVU3212 + 9600 0086 0824 movs r4, #8 + 9601 0088 01E0 b .L690 + 9602 .L689: +4775:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_register(&djn); /* Register the new entry */ + 9603 .loc 1 4775 5 is_stmt 1 view .LVU3213 +4775:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_register(&djn); /* Register the new entry */ + 9604 .loc 1 4775 8 is_stmt 0 view .LVU3214 + 9605 008a 0428 cmp r0, #4 + ARM GAS /tmp/cc5lWXRL.s page 323 + + + 9606 008c 0CD0 beq .L691 + 9607 .LVL1112: + 9608 .L690: +4799:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_remove(&djo); /* Remove old entry */ + 9609 .loc 1 4799 4 is_stmt 1 view .LVU3215 +4799:Middlewares/Third_Party/FatFs/src/ff.c **** res = dir_remove(&djo); /* Remove old entry */ + 9610 .loc 1 4799 7 is_stmt 0 view .LVU3216 + 9611 008e 002C cmp r4, #0 + 9612 0090 C4D1 bne .L686 +4800:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 9613 .loc 1 4800 5 is_stmt 1 view .LVU3217 +4800:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 9614 .loc 1 4800 11 is_stmt 0 view .LVU3218 + 9615 0092 16A8 add r0, sp, #88 + 9616 0094 FFF7FEFF bl dir_remove + 9617 .LVL1113: +4801:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); + 9618 .loc 1 4801 5 is_stmt 1 view .LVU3219 +4801:Middlewares/Third_Party/FatFs/src/ff.c **** res = sync_fs(fs); + 9619 .loc 1 4801 8 is_stmt 0 view .LVU3220 + 9620 0098 0446 mov r4, r0 + 9621 009a 0028 cmp r0, #0 + 9622 009c BED1 bne .L686 +4802:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9623 .loc 1 4802 6 is_stmt 1 view .LVU3221 +4802:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9624 .loc 1 4802 12 is_stmt 0 view .LVU3222 + 9625 009e 0998 ldr r0, [sp, #36] + 9626 .LVL1114: +4802:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9627 .loc 1 4802 12 view .LVU3223 + 9628 00a0 FFF7FEFF bl sync_fs + 9629 .LVL1115: + 9630 00a4 0446 mov r4, r0 + 9631 .LVL1116: +4802:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9632 .loc 1 4802 12 view .LVU3224 + 9633 00a6 B9E7 b .L686 + 9634 .LVL1117: + 9635 .L691: +4776:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 9636 .loc 1 4776 6 is_stmt 1 view .LVU3225 +4776:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK) { + 9637 .loc 1 4776 12 is_stmt 0 view .LVU3226 + 9638 00a8 0AA8 add r0, sp, #40 + 9639 00aa FFF7FEFF bl dir_register + 9640 .LVL1118: +4777:Middlewares/Third_Party/FatFs/src/ff.c **** dir = djn.dir; /* Copy information about object except name */ + 9641 .loc 1 4777 6 is_stmt 1 view .LVU3227 +4777:Middlewares/Third_Party/FatFs/src/ff.c **** dir = djn.dir; /* Copy information about object except name */ + 9642 .loc 1 4777 9 is_stmt 0 view .LVU3228 + 9643 00ae 0446 mov r4, r0 + 9644 00b0 0028 cmp r0, #0 + 9645 00b2 ECD1 bne .L690 +4778:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dir + 13, buf + 2, 19); + 9646 .loc 1 4778 7 is_stmt 1 view .LVU3229 +4778:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(dir + 13, buf + 2, 19); + ARM GAS /tmp/cc5lWXRL.s page 324 + + + 9647 .loc 1 4778 11 is_stmt 0 view .LVU3230 + 9648 00b4 129D ldr r5, [sp, #72] + 9649 .LVL1119: +4779:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] = buf[0] | AM_ARC; + 9650 .loc 1 4779 7 is_stmt 1 view .LVU3231 + 9651 00b6 1322 movs r2, #19 + 9652 00b8 0DF10E01 add r1, sp, #14 + 9653 00bc 05F10D00 add r0, r5, #13 + 9654 .LVL1120: +4779:Middlewares/Third_Party/FatFs/src/ff.c **** dir[DIR_Attr] = buf[0] | AM_ARC; + 9655 .loc 1 4779 7 is_stmt 0 view .LVU3232 + 9656 00c0 FFF7FEFF bl mem_cpy + 9657 .LVL1121: +4780:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9658 .loc 1 4780 7 is_stmt 1 view .LVU3233 +4780:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9659 .loc 1 4780 26 is_stmt 0 view .LVU3234 + 9660 00c4 9DF80C30 ldrb r3, [sp, #12] @ zero_extendqisi2 +4780:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9661 .loc 1 4780 21 view .LVU3235 + 9662 00c8 43F02003 orr r3, r3, #32 + 9663 00cc EB72 strb r3, [r5, #11] +4781:Middlewares/Third_Party/FatFs/src/ff.c **** if ((dir[DIR_Attr] & AM_DIR) && djo.obj.sclust != djn.obj.sclust) { /* Update .. entry in the + 9664 .loc 1 4781 7 is_stmt 1 view .LVU3236 +4781:Middlewares/Third_Party/FatFs/src/ff.c **** if ((dir[DIR_Attr] & AM_DIR) && djo.obj.sclust != djn.obj.sclust) { /* Update .. entry in the + 9665 .loc 1 4781 17 is_stmt 0 view .LVU3237 + 9666 00ce 099B ldr r3, [sp, #36] + 9667 00d0 0122 movs r2, #1 + 9668 00d2 DA70 strb r2, [r3, #3] +4782:Middlewares/Third_Party/FatFs/src/ff.c **** dw = clust2sect(fs, ld_clust(fs, dir)); + 9669 .loc 1 4782 7 is_stmt 1 view .LVU3238 +4782:Middlewares/Third_Party/FatFs/src/ff.c **** dw = clust2sect(fs, ld_clust(fs, dir)); + 9670 .loc 1 4782 15 is_stmt 0 view .LVU3239 + 9671 00d4 EB7A ldrb r3, [r5, #11] @ zero_extendqisi2 +4782:Middlewares/Third_Party/FatFs/src/ff.c **** dw = clust2sect(fs, ld_clust(fs, dir)); + 9672 .loc 1 4782 10 view .LVU3240 + 9673 00d6 13F0100F tst r3, #16 + 9674 00da D8D0 beq .L690 +4782:Middlewares/Third_Party/FatFs/src/ff.c **** dw = clust2sect(fs, ld_clust(fs, dir)); + 9675 .loc 1 4782 36 discriminator 1 view .LVU3241 + 9676 00dc 189A ldr r2, [sp, #96] + 9677 00de 0C9B ldr r3, [sp, #48] + 9678 00e0 9A42 cmp r2, r3 + 9679 00e2 D4D0 beq .L690 +4783:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dw) { + 9680 .loc 1 4783 8 is_stmt 1 view .LVU3242 +4783:Middlewares/Third_Party/FatFs/src/ff.c **** if (!dw) { + 9681 .loc 1 4783 13 is_stmt 0 view .LVU3243 + 9682 00e4 099C ldr r4, [sp, #36] + 9683 00e6 2946 mov r1, r5 + 9684 00e8 2046 mov r0, r4 + 9685 00ea FFF7FEFF bl ld_clust + 9686 .LVL1122: + 9687 00ee 0146 mov r1, r0 + 9688 00f0 2046 mov r0, r4 + 9689 00f2 FFF7FEFF bl clust2sect + 9690 .LVL1123: + ARM GAS /tmp/cc5lWXRL.s page 325 + + +4784:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INT_ERR; + 9691 .loc 1 4784 8 is_stmt 1 view .LVU3244 +4784:Middlewares/Third_Party/FatFs/src/ff.c **** res = FR_INT_ERR; + 9692 .loc 1 4784 11 is_stmt 0 view .LVU3245 + 9693 00f6 0146 mov r1, r0 + 9694 00f8 08B9 cbnz r0, .L698 +4785:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 9695 .loc 1 4785 13 view .LVU3246 + 9696 00fa 0224 movs r4, #2 + 9697 00fc 8EE7 b .L686 + 9698 .L698: +4788:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fs->win + SZDIRE * 1; /* Ptr to .. entry */ + 9699 .loc 1 4788 9 is_stmt 1 view .LVU3247 +4788:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fs->win + SZDIRE * 1; /* Ptr to .. entry */ + 9700 .loc 1 4788 15 is_stmt 0 view .LVU3248 + 9701 00fe 2046 mov r0, r4 + 9702 .LVL1124: +4788:Middlewares/Third_Party/FatFs/src/ff.c **** dir = fs->win + SZDIRE * 1; /* Ptr to .. entry */ + 9703 .loc 1 4788 15 view .LVU3249 + 9704 0100 FFF7FEFF bl move_window + 9705 .LVL1125: +4789:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && dir[1] == '.') { + 9706 .loc 1 4789 9 is_stmt 1 view .LVU3250 +4789:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && dir[1] == '.') { + 9707 .loc 1 4789 17 is_stmt 0 view .LVU3251 + 9708 0104 099B ldr r3, [sp, #36] +4789:Middlewares/Third_Party/FatFs/src/ff.c **** if (res == FR_OK && dir[1] == '.') { + 9709 .loc 1 4789 13 view .LVU3252 + 9710 0106 03F15401 add r1, r3, #84 + 9711 .LVL1126: +4790:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir, djn.obj.sclust); + 9712 .loc 1 4790 9 is_stmt 1 view .LVU3253 +4790:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir, djn.obj.sclust); + 9713 .loc 1 4790 12 is_stmt 0 view .LVU3254 + 9714 010a 0446 mov r4, r0 + 9715 010c 0028 cmp r0, #0 + 9716 010e BED1 bne .L690 +4790:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir, djn.obj.sclust); + 9717 .loc 1 4790 32 discriminator 1 view .LVU3255 + 9718 0110 93F85520 ldrb r2, [r3, #85] @ zero_extendqisi2 +4790:Middlewares/Third_Party/FatFs/src/ff.c **** st_clust(fs, dir, djn.obj.sclust); + 9719 .loc 1 4790 26 discriminator 1 view .LVU3256 + 9720 0114 2E2A cmp r2, #46 + 9721 0116 BAD1 bne .L690 +4791:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9722 .loc 1 4791 10 is_stmt 1 view .LVU3257 + 9723 0118 0C9A ldr r2, [sp, #48] + 9724 011a 1846 mov r0, r3 + 9725 .LVL1127: +4791:Middlewares/Third_Party/FatFs/src/ff.c **** fs->wflag = 1; + 9726 .loc 1 4791 10 is_stmt 0 view .LVU3258 + 9727 011c FFF7FEFF bl st_clust + 9728 .LVL1128: +4792:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9729 .loc 1 4792 10 is_stmt 1 view .LVU3259 +4792:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9730 .loc 1 4792 20 is_stmt 0 view .LVU3260 + ARM GAS /tmp/cc5lWXRL.s page 326 + + + 9731 0120 099B ldr r3, [sp, #36] + 9732 0122 0122 movs r2, #1 + 9733 0124 DA70 strb r2, [r3, #3] + 9734 0126 B2E7 b .L690 + 9735 .cfi_endproc + 9736 .LFE1236: + 9738 .section .rodata.f_mkfs.str1.4,"aMS",%progbits,1 + 9739 .align 2 + 9740 .LC1: + 9741 0000 EBFE904D .ascii "\353\376\220MSDOS5.0\000" + 9741 53444F53 + 9741 352E3000 + 9742 .align 2 + 9743 .LC2: + 9744 000c 4E4F204E .ascii "NO NAME FAT32 \000" + 9744 414D4520 + 9744 20202046 + 9744 41543332 + 9744 20202000 + 9745 .align 2 + 9746 .LC3: + 9747 0020 4E4F204E .ascii "NO NAME FAT \000" + 9747 414D4520 + 9747 20202046 + 9747 41542020 + 9747 20202000 + 9748 .section .text.f_mkfs,"ax",%progbits + 9749 .align 1 + 9750 .global f_mkfs + 9751 .syntax unified + 9752 .thumb + 9753 .thumb_func + 9754 .fpu fpv5-d16 + 9756 f_mkfs: + 9757 .LVL1129: + 9758 .LFB1237: +5308:Middlewares/Third_Party/FatFs/src/ff.c **** const UINT n_fats = 1; /* Number of FATs for FAT12/16/32 volume (1 or 2) */ + 9759 .loc 1 5308 1 is_stmt 1 view -0 + 9760 .cfi_startproc + 9761 @ args = 4, pretend = 0, frame = 48 + 9762 @ frame_needed = 0, uses_anonymous_args = 0 +5308:Middlewares/Third_Party/FatFs/src/ff.c **** const UINT n_fats = 1; /* Number of FATs for FAT12/16/32 volume (1 or 2) */ + 9763 .loc 1 5308 1 is_stmt 0 view .LVU3262 + 9764 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 9765 .LCFI111: + 9766 .cfi_def_cfa_offset 36 + 9767 .cfi_offset 4, -36 + 9768 .cfi_offset 5, -32 + 9769 .cfi_offset 6, -28 + 9770 .cfi_offset 7, -24 + 9771 .cfi_offset 8, -20 + 9772 .cfi_offset 9, -16 + 9773 .cfi_offset 10, -12 + 9774 .cfi_offset 11, -8 + 9775 .cfi_offset 14, -4 + 9776 0004 8DB0 sub sp, sp, #52 + 9777 .LCFI112: + ARM GAS /tmp/cc5lWXRL.s page 327 + + + 9778 .cfi_def_cfa_offset 88 + 9779 0006 0790 str r0, [sp, #28] + 9780 0008 8846 mov r8, r1 + 9781 000a 1546 mov r5, r2 + 9782 000c 1E46 mov r6, r3 +5309:Middlewares/Third_Party/FatFs/src/ff.c **** const UINT n_rootdir = 512; /* Number of root directory entries for FAT12/16 volume */ + 9783 .loc 1 5309 2 is_stmt 1 view .LVU3263 + 9784 .LVL1130: +5310:Middlewares/Third_Party/FatFs/src/ff.c **** static const WORD cst[] = {1, 4, 16, 64, 256, 512, 0}; /* Cluster size boundary for FAT12/16 volum + 9785 .loc 1 5310 2 view .LVU3264 +5311:Middlewares/Third_Party/FatFs/src/ff.c **** static const WORD cst32[] = {1, 2, 4, 8, 16, 32, 0}; /* Cluster size boundary for FAT32 volume (12 + 9786 .loc 1 5311 2 view .LVU3265 +5312:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE fmt, sys, *buf, *pte, pdrv, part; + 9787 .loc 1 5312 2 view .LVU3266 +5313:Middlewares/Third_Party/FatFs/src/ff.c **** WORD ss; + 9788 .loc 1 5313 2 view .LVU3267 +5314:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD szb_buf, sz_buf, sz_blk, n_clst, pau, sect, nsect, n; + 9789 .loc 1 5314 2 view .LVU3268 +5315:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD b_vol, b_fat, b_data; /* Base LBA for volume, fat, data */ + 9790 .loc 1 5315 2 view .LVU3269 +5316:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD sz_vol, sz_rsv, sz_fat, sz_dir; /* Size for volume, fat, dir, data */ + 9791 .loc 1 5316 2 view .LVU3270 +5317:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i; + 9792 .loc 1 5317 2 view .LVU3271 +5318:Middlewares/Third_Party/FatFs/src/ff.c **** int vol; + 9793 .loc 1 5318 2 view .LVU3272 +5319:Middlewares/Third_Party/FatFs/src/ff.c **** DSTATUS stat; + 9794 .loc 1 5319 2 view .LVU3273 +5320:Middlewares/Third_Party/FatFs/src/ff.c **** #if _USE_TRIM || _FS_EXFAT + 9795 .loc 1 5320 2 view .LVU3274 +5327:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; + 9796 .loc 1 5327 2 view .LVU3275 +5327:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; + 9797 .loc 1 5327 8 is_stmt 0 view .LVU3276 + 9798 000e 07A8 add r0, sp, #28 + 9799 .LVL1131: +5327:Middlewares/Third_Party/FatFs/src/ff.c **** if (vol < 0) return FR_INVALID_DRIVE; + 9800 .loc 1 5327 8 view .LVU3277 + 9801 0010 FFF7FEFF bl get_ldnumber + 9802 .LVL1132: +5328:Middlewares/Third_Party/FatFs/src/ff.c **** if (FatFs[vol]) FatFs[vol]->fs_type = 0; /* Clear the volume */ + 9803 .loc 1 5328 2 is_stmt 1 view .LVU3278 +5328:Middlewares/Third_Party/FatFs/src/ff.c **** if (FatFs[vol]) FatFs[vol]->fs_type = 0; /* Clear the volume */ + 9804 .loc 1 5328 5 is_stmt 0 view .LVU3279 + 9805 0014 0028 cmp r0, #0 +5328:Middlewares/Third_Party/FatFs/src/ff.c **** if (FatFs[vol]) FatFs[vol]->fs_type = 0; /* Clear the volume */ + 9806 .loc 1 5328 5 view .LVU3280 + 9807 0016 C0F2F982 blt .L743 +5329:Middlewares/Third_Party/FatFs/src/ff.c **** pdrv = LD2PD(vol); /* Physical drive */ + 9808 .loc 1 5329 2 is_stmt 1 view .LVU3281 +5329:Middlewares/Third_Party/FatFs/src/ff.c **** pdrv = LD2PD(vol); /* Physical drive */ + 9809 .loc 1 5329 11 is_stmt 0 view .LVU3282 + 9810 001a A74B ldr r3, .L796 + 9811 001c 53F82030 ldr r3, [r3, r0, lsl #2] +5329:Middlewares/Third_Party/FatFs/src/ff.c **** pdrv = LD2PD(vol); /* Physical drive */ + 9812 .loc 1 5329 5 view .LVU3283 + 9813 0020 0BB1 cbz r3, .L701 + ARM GAS /tmp/cc5lWXRL.s page 328 + + +5329:Middlewares/Third_Party/FatFs/src/ff.c **** pdrv = LD2PD(vol); /* Physical drive */ + 9814 .loc 1 5329 18 is_stmt 1 discriminator 1 view .LVU3284 +5329:Middlewares/Third_Party/FatFs/src/ff.c **** pdrv = LD2PD(vol); /* Physical drive */ + 9815 .loc 1 5329 38 is_stmt 0 discriminator 1 view .LVU3285 + 9816 0022 0022 movs r2, #0 + 9817 0024 1A70 strb r2, [r3] + 9818 .L701: +5330:Middlewares/Third_Party/FatFs/src/ff.c **** part = LD2PT(vol); /* Partition (0:create as new, 1-4:get from partition table) */ + 9819 .loc 1 5330 2 is_stmt 1 view .LVU3286 +5330:Middlewares/Third_Party/FatFs/src/ff.c **** part = LD2PT(vol); /* Partition (0:create as new, 1-4:get from partition table) */ + 9820 .loc 1 5330 7 is_stmt 0 view .LVU3287 + 9821 0026 C4B2 uxtb r4, r0 + 9822 .LVL1133: +5331:Middlewares/Third_Party/FatFs/src/ff.c **** + 9823 .loc 1 5331 2 is_stmt 1 view .LVU3288 +5334:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_NOINIT) return FR_NOT_READY; + 9824 .loc 1 5334 2 view .LVU3289 +5334:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_NOINIT) return FR_NOT_READY; + 9825 .loc 1 5334 9 is_stmt 0 view .LVU3290 + 9826 0028 2046 mov r0, r4 + 9827 .LVL1134: +5334:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_NOINIT) return FR_NOT_READY; + 9828 .loc 1 5334 9 view .LVU3291 + 9829 002a FFF7FEFF bl disk_initialize + 9830 .LVL1135: +5335:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; + 9831 .loc 1 5335 2 is_stmt 1 view .LVU3292 +5335:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; + 9832 .loc 1 5335 5 is_stmt 0 view .LVU3293 + 9833 002e 10F0010F tst r0, #1 + 9834 0032 40F0ED82 bne .L744 +5336:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_ioctl(pdrv, GET_BLOCK_SIZE, &sz_blk) != RES_OK || !sz_blk || sz_blk > 32768 || (sz_blk & + 9835 .loc 1 5336 2 is_stmt 1 view .LVU3294 +5336:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_ioctl(pdrv, GET_BLOCK_SIZE, &sz_blk) != RES_OK || !sz_blk || sz_blk > 32768 || (sz_blk & + 9836 .loc 1 5336 5 is_stmt 0 view .LVU3295 + 9837 0036 10F0040F tst r0, #4 + 9838 003a 40F0EB82 bne .L745 +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9839 .loc 1 5337 2 is_stmt 1 view .LVU3296 +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9840 .loc 1 5337 6 is_stmt 0 view .LVU3297 + 9841 003e 0AAA add r2, sp, #40 + 9842 0040 0321 movs r1, #3 + 9843 0042 2046 mov r0, r4 + 9844 .LVL1136: +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9845 .loc 1 5337 6 view .LVU3298 + 9846 0044 FFF7FEFF bl disk_ioctl + 9847 .LVL1137: +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9848 .loc 1 5337 5 view .LVU3299 + 9849 0048 38B9 cbnz r0, .L702 +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9850 .loc 1 5337 61 discriminator 2 view .LVU3300 + 9851 004a 0A9B ldr r3, [sp, #40] +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9852 .loc 1 5337 58 discriminator 2 view .LVU3301 + ARM GAS /tmp/cc5lWXRL.s page 329 + + + 9853 004c 2BB1 cbz r3, .L702 +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9854 .loc 1 5337 69 discriminator 4 view .LVU3302 + 9855 004e B3F5004F cmp r3, #32768 + 9856 0052 02D8 bhi .L702 +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9857 .loc 1 5337 108 discriminator 6 view .LVU3303 + 9858 0054 5A1E subs r2, r3, #1 +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9859 .loc 1 5337 87 discriminator 6 view .LVU3304 + 9860 0056 1342 tst r3, r2 + 9861 0058 01D0 beq .L703 + 9862 .L702: +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9863 .loc 1 5337 115 is_stmt 1 discriminator 7 view .LVU3305 +5337:Middlewares/Third_Party/FatFs/src/ff.c **** #if _MAX_SS != _MIN_SS /* Get sector size of the medium if variable sector size cfg. */ + 9864 .loc 1 5337 122 is_stmt 0 discriminator 7 view .LVU3306 + 9865 005a 0123 movs r3, #1 + 9866 005c 0A93 str r3, [sp, #40] + 9867 .L703: +5339:Middlewares/Third_Party/FatFs/src/ff.c **** if (ss > _MAX_SS || ss < _MIN_SS || (ss & (ss - 1))) return FR_DISK_ERR; + 9868 .loc 1 5339 2 is_stmt 1 view .LVU3307 +5339:Middlewares/Third_Party/FatFs/src/ff.c **** if (ss > _MAX_SS || ss < _MIN_SS || (ss & (ss - 1))) return FR_DISK_ERR; + 9869 .loc 1 5339 6 is_stmt 0 view .LVU3308 + 9870 005e 0DF12E02 add r2, sp, #46 + 9871 0062 0221 movs r1, #2 + 9872 0064 2046 mov r0, r4 + 9873 0066 FFF7FEFF bl disk_ioctl + 9874 .LVL1138: +5339:Middlewares/Third_Party/FatFs/src/ff.c **** if (ss > _MAX_SS || ss < _MIN_SS || (ss & (ss - 1))) return FR_DISK_ERR; + 9875 .loc 1 5339 5 view .LVU3309 + 9876 006a 0028 cmp r0, #0 + 9877 006c 40F0D682 bne .L746 +5340:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 9878 .loc 1 5340 2 is_stmt 1 view .LVU3310 +5340:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 9879 .loc 1 5340 19 is_stmt 0 view .LVU3311 + 9880 0070 BDF82E70 ldrh r7, [sp, #46] + 9881 0074 A7F50073 sub r3, r7, #512 + 9882 0078 9BB2 uxth r3, r3 +5340:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 9883 .loc 1 5340 5 view .LVU3312 + 9884 007a B3F5606F cmp r3, #3584 + 9885 007e 00F2CF82 bhi .L747 +5340:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 9886 .loc 1 5340 48 discriminator 2 view .LVU3313 + 9887 0082 7B1E subs r3, r7, #1 +5340:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 9888 .loc 1 5340 35 discriminator 2 view .LVU3314 + 9889 0084 1F42 tst r7, r3 + 9890 0086 40F0CD82 bne .L748 +5344:Middlewares/Third_Party/FatFs/src/ff.c **** au /= ss; /* Cluster size in unit of sector */ + 9891 .loc 1 5344 2 is_stmt 1 view .LVU3315 +5344:Middlewares/Third_Party/FatFs/src/ff.c **** au /= ss; /* Cluster size in unit of sector */ + 9892 .loc 1 5344 5 is_stmt 0 view .LVU3316 + 9893 008a 15B1 cbz r5, .L704 +5344:Middlewares/Third_Party/FatFs/src/ff.c **** au /= ss; /* Cluster size in unit of sector */ + ARM GAS /tmp/cc5lWXRL.s page 330 + + + 9894 .loc 1 5344 15 discriminator 1 view .LVU3317 + 9895 008c AF42 cmp r7, r5 + 9896 008e 00F2CB82 bhi .L749 + 9897 .L704: +5344:Middlewares/Third_Party/FatFs/src/ff.c **** au /= ss; /* Cluster size in unit of sector */ + 9898 .loc 1 5344 27 discriminator 4 view .LVU3318 + 9899 0092 B5F1807F cmp r5, #16777216 + 9900 0096 00F2C982 bhi .L750 +5344:Middlewares/Third_Party/FatFs/src/ff.c **** au /= ss; /* Cluster size in unit of sector */ + 9901 .loc 1 5344 58 discriminator 6 view .LVU3319 + 9902 009a 6B1E subs r3, r5, #1 +5344:Middlewares/Third_Party/FatFs/src/ff.c **** au /= ss; /* Cluster size in unit of sector */ + 9903 .loc 1 5344 45 discriminator 6 view .LVU3320 + 9904 009c 2B40 ands r3, r3, r5 + 9905 009e 0193 str r3, [sp, #4] + 9906 00a0 40F0C682 bne .L751 +5345:Middlewares/Third_Party/FatFs/src/ff.c **** + 9907 .loc 1 5345 2 is_stmt 1 view .LVU3321 +5345:Middlewares/Third_Party/FatFs/src/ff.c **** + 9908 .loc 1 5345 5 is_stmt 0 view .LVU3322 + 9909 00a4 B5FBF7F5 udiv r5, r5, r7 + 9910 .LVL1139: +5348:Middlewares/Third_Party/FatFs/src/ff.c **** sz_buf = len / ss; /* Size of working buffer (sector) */ + 9911 .loc 1 5348 2 is_stmt 1 view .LVU3323 +5349:Middlewares/Third_Party/FatFs/src/ff.c **** szb_buf = sz_buf * ss; /* Size of working buffer (byte) */ + 9912 .loc 1 5349 2 view .LVU3324 +5349:Middlewares/Third_Party/FatFs/src/ff.c **** szb_buf = sz_buf * ss; /* Size of working buffer (byte) */ + 9913 .loc 1 5349 9 is_stmt 0 view .LVU3325 + 9914 00a8 169B ldr r3, [sp, #88] + 9915 00aa B3FBF7F9 udiv r9, r3, r7 + 9916 .LVL1140: +5350:Middlewares/Third_Party/FatFs/src/ff.c **** if (!szb_buf) return FR_MKFS_ABORTED; + 9917 .loc 1 5350 2 is_stmt 1 view .LVU3326 +5350:Middlewares/Third_Party/FatFs/src/ff.c **** if (!szb_buf) return FR_MKFS_ABORTED; + 9918 .loc 1 5350 10 is_stmt 0 view .LVU3327 + 9919 00ae 09FB07F7 mul r7, r9, r7 + 9920 .LVL1141: +5351:Middlewares/Third_Party/FatFs/src/ff.c **** + 9921 .loc 1 5351 2 is_stmt 1 view .LVU3328 +5351:Middlewares/Third_Party/FatFs/src/ff.c **** + 9922 .loc 1 5351 5 is_stmt 0 view .LVU3329 + 9923 00b2 002F cmp r7, #0 + 9924 00b4 00F0BE82 beq .L752 +5354:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get partition information from partition table in the MBR */ + 9925 .loc 1 5354 2 is_stmt 1 view .LVU3330 +5364:Middlewares/Third_Party/FatFs/src/ff.c **** b_vol = (opt & FM_SFD) ? 0 : 63; /* Volume start sector */ + 9926 .loc 1 5364 3 view .LVU3331 +5364:Middlewares/Third_Party/FatFs/src/ff.c **** b_vol = (opt & FM_SFD) ? 0 : 63; /* Volume start sector */ + 9927 .loc 1 5364 7 is_stmt 0 view .LVU3332 + 9928 00b8 09AA add r2, sp, #36 + 9929 00ba 0121 movs r1, #1 + 9930 00bc 2046 mov r0, r4 + 9931 00be FFF7FEFF bl disk_ioctl + 9932 .LVL1142: +5364:Middlewares/Third_Party/FatFs/src/ff.c **** b_vol = (opt & FM_SFD) ? 0 : 63; /* Volume start sector */ + 9933 .loc 1 5364 6 view .LVU3333 + 9934 00c2 0028 cmp r0, #0 + ARM GAS /tmp/cc5lWXRL.s page 331 + + + 9935 00c4 40F0B882 bne .L753 +5365:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < b_vol) return FR_MKFS_ABORTED; + 9936 .loc 1 5365 3 is_stmt 1 view .LVU3334 +5365:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < b_vol) return FR_MKFS_ABORTED; + 9937 .loc 1 5365 30 is_stmt 0 view .LVU3335 + 9938 00c8 18F00802 ands r2, r8, #8 + 9939 00cc 0292 str r2, [sp, #8] + 9940 00ce 7AD0 beq .L754 + 9941 00d0 019B ldr r3, [sp, #4] + 9942 00d2 0093 str r3, [sp] + 9943 .L705: + 9944 .LVL1143: +5366:Middlewares/Third_Party/FatFs/src/ff.c **** sz_vol -= b_vol; /* Volume size */ + 9945 .loc 1 5366 3 is_stmt 1 discriminator 4 view .LVU3336 +5366:Middlewares/Third_Party/FatFs/src/ff.c **** sz_vol -= b_vol; /* Volume size */ + 9946 .loc 1 5366 14 is_stmt 0 discriminator 4 view .LVU3337 + 9947 00d4 099A ldr r2, [sp, #36] +5366:Middlewares/Third_Party/FatFs/src/ff.c **** sz_vol -= b_vol; /* Volume size */ + 9948 .loc 1 5366 6 discriminator 4 view .LVU3338 + 9949 00d6 009B ldr r3, [sp] + 9950 00d8 9A42 cmp r2, r3 + 9951 00da C0F0AF82 bcc .L755 +5367:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9952 .loc 1 5367 3 is_stmt 1 view .LVU3339 +5367:Middlewares/Third_Party/FatFs/src/ff.c **** } + 9953 .loc 1 5367 10 is_stmt 0 view .LVU3340 + 9954 00de D21A subs r2, r2, r3 + 9955 00e0 0992 str r2, [sp, #36] +5369:Middlewares/Third_Party/FatFs/src/ff.c **** + 9956 .loc 1 5369 2 is_stmt 1 view .LVU3341 +5369:Middlewares/Third_Party/FatFs/src/ff.c **** + 9957 .loc 1 5369 5 is_stmt 0 view .LVU3342 + 9958 00e2 7F2A cmp r2, #127 + 9959 00e4 40F2AC82 bls .L756 +5372:Middlewares/Third_Party/FatFs/src/ff.c **** if (_FS_EXFAT && (opt & FM_EXFAT)) { /* exFAT possible? */ + 9960 .loc 1 5372 2 is_stmt 1 view .LVU3343 +5373:Middlewares/Third_Party/FatFs/src/ff.c **** if ((opt & FM_ANY) == FM_EXFAT || sz_vol >= 0x4000000 || au > 128) { /* exFAT only, vol >= 64Ms + 9961 .loc 1 5373 3 view .LVU3344 +5378:Middlewares/Third_Party/FatFs/src/ff.c **** if (opt & FM_FAT32) { /* FAT32 possible? */ + 9962 .loc 1 5378 3 view .LVU3345 +5378:Middlewares/Third_Party/FatFs/src/ff.c **** if (opt & FM_FAT32) { /* FAT32 possible? */ + 9963 .loc 1 5378 6 is_stmt 0 view .LVU3346 + 9964 00e8 802D cmp r5, #128 + 9965 00ea 00F2AB82 bhi .L757 +5379:Middlewares/Third_Party/FatFs/src/ff.c **** if ((opt & FM_ANY) == FM_FAT32 || !(opt & FM_FAT)) { /* FAT32 only or no-FAT? */ + 9966 .loc 1 5379 3 is_stmt 1 view .LVU3347 +5379:Middlewares/Third_Party/FatFs/src/ff.c **** if ((opt & FM_ANY) == FM_FAT32 || !(opt & FM_FAT)) { /* FAT32 only or no-FAT? */ + 9967 .loc 1 5379 6 is_stmt 0 view .LVU3348 + 9968 00ee 18F00201 ands r1, r8, #2 + 9969 00f2 06D0 beq .L706 +5380:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; break; + 9970 .loc 1 5380 4 is_stmt 1 view .LVU3349 +5380:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; break; + 9971 .loc 1 5380 7 is_stmt 0 view .LVU3350 + 9972 00f4 08F00703 and r3, r8, #7 + 9973 00f8 022B cmp r3, #2 + 9974 00fa 67D0 beq .L758 + ARM GAS /tmp/cc5lWXRL.s page 332 + + +5380:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; break; + 9975 .loc 1 5380 35 discriminator 1 view .LVU3351 + 9976 00fc 18F0010F tst r8, #1 + 9977 0100 6AD0 beq .L759 + 9978 .L706: +5384:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT16; + 9979 .loc 1 5384 3 is_stmt 1 view .LVU3352 +5384:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT16; + 9980 .loc 1 5384 6 is_stmt 0 view .LVU3353 + 9981 0102 18F0010F tst r8, #1 + 9982 0106 00F09F82 beq .L760 +5385:Middlewares/Third_Party/FatFs/src/ff.c **** } while (0); + 9983 .loc 1 5385 7 view .LVU3354 + 9984 010a 4FF0020B mov fp, #2 + 9985 010e 0394 str r4, [sp, #12] + 9986 0110 CDF81090 str r9, [sp, #16] + 9987 .LVL1144: + 9988 .L708: +5386:Middlewares/Third_Party/FatFs/src/ff.c **** + 9989 .loc 1 5386 10 is_stmt 1 view .LVU3355 +5552:Middlewares/Third_Party/FatFs/src/ff.c **** pau = au; + 9990 .loc 1 5552 3 view .LVU3356 +5553:Middlewares/Third_Party/FatFs/src/ff.c **** /* Pre-determine number of clusters and FAT sub-type */ + 9991 .loc 1 5553 4 view .LVU3357 +5555:Middlewares/Third_Party/FatFs/src/ff.c **** if (!pau) { /* au auto-selection */ + 9992 .loc 1 5555 4 view .LVU3358 +5555:Middlewares/Third_Party/FatFs/src/ff.c **** if (!pau) { /* au auto-selection */ + 9993 .loc 1 5555 7 is_stmt 0 view .LVU3359 + 9994 0114 BBF1030F cmp fp, #3 + 9995 0118 68D0 beq .L726 +5566:Middlewares/Third_Party/FatFs/src/ff.c **** n = sz_vol / 0x1000; /* Volume size in unit of 4KS */ + 9996 .loc 1 5566 5 is_stmt 1 view .LVU3360 +5566:Middlewares/Third_Party/FatFs/src/ff.c **** n = sz_vol / 0x1000; /* Volume size in unit of 4KS */ + 9997 .loc 1 5566 8 is_stmt 0 view .LVU3361 + 9998 011a 002D cmp r5, #0 + 9999 011c 00F08F80 beq .L785 + 10000 0120 AA46 mov r10, r5 + 10001 .LVL1145: + 10002 .L714: +5570:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst > MAX_FAT12) { + 10003 .loc 1 5570 5 is_stmt 1 view .LVU3362 +5570:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst > MAX_FAT12) { + 10004 .loc 1 5570 12 is_stmt 0 view .LVU3363 + 10005 0122 B2FBFAF3 udiv r3, r2, r10 + 10006 .LVL1146: +5571:Middlewares/Third_Party/FatFs/src/ff.c **** n = n_clst * 2 + 4; /* FAT size [byte] */ + 10007 .loc 1 5571 5 is_stmt 1 view .LVU3364 +5571:Middlewares/Third_Party/FatFs/src/ff.c **** n = n_clst * 2 + 4; /* FAT size [byte] */ + 10008 .loc 1 5571 8 is_stmt 0 view .LVU3365 + 10009 0126 40F6F570 movw r0, #4085 + 10010 012a 8342 cmp r3, r0 + 10011 012c 40F29880 bls .L717 +5572:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 10012 .loc 1 5572 6 is_stmt 1 view .LVU3366 +5572:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 10013 .loc 1 5572 21 is_stmt 0 view .LVU3367 + 10014 0130 03F10208 add r8, r3, #2 + ARM GAS /tmp/cc5lWXRL.s page 333 + + +5572:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 10015 .loc 1 5572 8 view .LVU3368 + 10016 0134 4FEA4808 lsl r8, r8, #1 + 10017 .LVL1147: + 10018 .L718: +5577:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 1; /* Number of reserved sectors */ + 10019 .loc 1 5577 5 is_stmt 1 view .LVU3369 +5577:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 1; /* Number of reserved sectors */ + 10020 .loc 1 5577 17 is_stmt 0 view .LVU3370 + 10021 0138 BDF82E30 ldrh r3, [sp, #46] + 10022 013c 9844 add r8, r8, r3 + 10023 .LVL1148: +5577:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 1; /* Number of reserved sectors */ + 10024 .loc 1 5577 22 view .LVU3371 + 10025 013e 08F1FF38 add r8, r8, #-1 +5577:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 1; /* Number of reserved sectors */ + 10026 .loc 1 5577 12 view .LVU3372 + 10027 0142 B8FBF3F8 udiv r8, r8, r3 + 10028 .LVL1149: +5578:Middlewares/Third_Party/FatFs/src/ff.c **** sz_dir = (DWORD)n_rootdir * SZDIRE / ss; /* Rootdir size [sector] */ + 10029 .loc 1 5578 5 is_stmt 1 view .LVU3373 +5579:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10030 .loc 1 5579 5 view .LVU3374 +5579:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10031 .loc 1 5579 12 is_stmt 0 view .LVU3375 + 10032 0146 4FF4804C mov ip, #16384 + 10033 014a BCFBF3FC udiv ip, ip, r3 + 10034 .LVL1150: +5578:Middlewares/Third_Party/FatFs/src/ff.c **** sz_dir = (DWORD)n_rootdir * SZDIRE / ss; /* Rootdir size [sector] */ + 10035 .loc 1 5578 12 view .LVU3376 + 10036 014e 4FF0010E mov lr, #1 + 10037 .LVL1151: + 10038 .L713: +5581:Middlewares/Third_Party/FatFs/src/ff.c **** b_data = b_fat + sz_fat * n_fats + sz_dir; /* Data base */ + 10039 .loc 1 5581 4 is_stmt 1 view .LVU3377 +5581:Middlewares/Third_Party/FatFs/src/ff.c **** b_data = b_fat + sz_fat * n_fats + sz_dir; /* Data base */ + 10040 .loc 1 5581 10 is_stmt 0 view .LVU3378 + 10041 0152 009B ldr r3, [sp] + 10042 0154 0EEB0309 add r9, lr, r3 + 10043 .LVL1152: +5582:Middlewares/Third_Party/FatFs/src/ff.c **** + 10044 .loc 1 5582 4 is_stmt 1 view .LVU3379 +5582:Middlewares/Third_Party/FatFs/src/ff.c **** + 10045 .loc 1 5582 19 is_stmt 0 view .LVU3380 + 10046 0158 08EB0903 add r3, r8, r9 +5582:Middlewares/Third_Party/FatFs/src/ff.c **** + 10047 .loc 1 5582 11 view .LVU3381 + 10048 015c 6344 add r3, r3, ip + 10049 .LVL1153: +5585:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { /* FAT32: Move FAT base */ + 10050 .loc 1 5585 4 is_stmt 1 view .LVU3382 +5585:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { /* FAT32: Move FAT base */ + 10051 .loc 1 5585 17 is_stmt 0 view .LVU3383 + 10052 015e 0A9C ldr r4, [sp, #40] + 10053 0160 E018 adds r0, r4, r3 +5585:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { /* FAT32: Move FAT base */ + 10054 .loc 1 5585 26 view .LVU3384 + ARM GAS /tmp/cc5lWXRL.s page 334 + + + 10055 0162 0138 subs r0, r0, #1 +5585:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { /* FAT32: Move FAT base */ + 10056 .loc 1 5585 33 view .LVU3385 + 10057 0164 6442 rsbs r4, r4, #0 +5585:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { /* FAT32: Move FAT base */ + 10058 .loc 1 5585 31 view .LVU3386 + 10059 0166 0440 ands r4, r4, r0 +5585:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { /* FAT32: Move FAT base */ + 10060 .loc 1 5585 6 view .LVU3387 + 10061 0168 E41A subs r4, r4, r3 + 10062 .LVL1154: +5586:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv += n; b_fat += n; + 10063 .loc 1 5586 4 is_stmt 1 view .LVU3388 +5586:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv += n; b_fat += n; + 10064 .loc 1 5586 7 is_stmt 0 view .LVU3389 + 10065 016a BBF1030F cmp fp, #3 + 10066 016e 00F08280 beq .L786 +5589:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10067 .loc 1 5589 5 is_stmt 1 view .LVU3390 +5589:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10068 .loc 1 5589 12 is_stmt 0 view .LVU3391 + 10069 0172 A044 add r8, r8, r4 + 10070 .LVL1155: + 10071 .L720: +5593:Middlewares/Third_Party/FatFs/src/ff.c **** n_clst = (sz_vol - sz_rsv - sz_fat * n_fats - sz_dir) / pau; + 10072 .loc 1 5593 4 is_stmt 1 view .LVU3392 +5593:Middlewares/Third_Party/FatFs/src/ff.c **** n_clst = (sz_vol - sz_rsv - sz_fat * n_fats - sz_dir) / pau; + 10073 .loc 1 5593 24 is_stmt 0 view .LVU3393 + 10074 0174 03EB0A13 add r3, r3, r10, lsl #4 + 10075 .LVL1156: +5593:Middlewares/Third_Party/FatFs/src/ff.c **** n_clst = (sz_vol - sz_rsv - sz_fat * n_fats - sz_dir) / pau; + 10076 .loc 1 5593 35 view .LVU3394 + 10077 0178 0098 ldr r0, [sp] + 10078 017a 1B1A subs r3, r3, r0 +5593:Middlewares/Third_Party/FatFs/src/ff.c **** n_clst = (sz_vol - sz_rsv - sz_fat * n_fats - sz_dir) / pau; + 10079 .loc 1 5593 7 view .LVU3395 + 10080 017c 9A42 cmp r2, r3 + 10081 017e C0F07382 bcc .L764 +5594:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10082 .loc 1 5594 4 is_stmt 1 view .LVU3396 +5594:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10083 .loc 1 5594 21 is_stmt 0 view .LVU3397 + 10084 0182 A2EB0E03 sub r3, r2, lr +5594:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10085 .loc 1 5594 30 view .LVU3398 + 10086 0186 A3EB0803 sub r3, r3, r8 +5594:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10087 .loc 1 5594 48 view .LVU3399 + 10088 018a A3EB0C03 sub r3, r3, ip +5594:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10089 .loc 1 5594 11 view .LVU3400 + 10090 018e B3FBFAF3 udiv r3, r3, r10 + 10091 .LVL1157: +5595:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst <= MAX_FAT16) { /* Too few clusters for FAT32 */ + 10092 .loc 1 5595 4 is_stmt 1 view .LVU3401 +5595:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst <= MAX_FAT16) { /* Too few clusters for FAT32 */ + 10093 .loc 1 5595 7 is_stmt 0 view .LVU3402 + ARM GAS /tmp/cc5lWXRL.s page 335 + + + 10094 0192 BBF1030F cmp fp, #3 + 10095 0196 71D0 beq .L787 + 10096 .L721: +5601:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst > MAX_FAT16) { /* Too many clusters for FAT16 */ + 10097 .loc 1 5601 4 is_stmt 1 view .LVU3403 +5601:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst > MAX_FAT16) { /* Too many clusters for FAT16 */ + 10098 .loc 1 5601 7 is_stmt 0 view .LVU3404 + 10099 0198 BBF1020F cmp fp, #2 + 10100 019c 40F09680 bne .L723 +5602:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au && (pau * 2) <= 64) { + 10101 .loc 1 5602 5 is_stmt 1 view .LVU3405 +5602:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au && (pau * 2) <= 64) { + 10102 .loc 1 5602 8 is_stmt 0 view .LVU3406 + 10103 01a0 4FF6F570 movw r0, #65525 + 10104 01a4 8342 cmp r3, r0 + 10105 01a6 78D9 bls .L724 +5603:Middlewares/Third_Party/FatFs/src/ff.c **** au = pau * 2; continue; /* Adjust cluster size and retry */ + 10106 .loc 1 5603 6 is_stmt 1 view .LVU3407 +5603:Middlewares/Third_Party/FatFs/src/ff.c **** au = pau * 2; continue; /* Adjust cluster size and retry */ + 10107 .loc 1 5603 9 is_stmt 0 view .LVU3408 + 10108 01a8 1DB9 cbnz r5, .L725 +5603:Middlewares/Third_Party/FatFs/src/ff.c **** au = pau * 2; continue; /* Adjust cluster size and retry */ + 10109 .loc 1 5603 22 discriminator 1 view .LVU3409 + 10110 01aa 4FEA4A03 lsl r3, r10, #1 + 10111 .LVL1158: +5603:Middlewares/Third_Party/FatFs/src/ff.c **** au = pau * 2; continue; /* Adjust cluster size and retry */ + 10112 .loc 1 5603 14 discriminator 1 view .LVU3410 + 10113 01ae 402B cmp r3, #64 + 10114 01b0 18D9 bls .L766 + 10115 .L725: +5606:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; continue; /* Switch type to FAT32 and retry */ + 10116 .loc 1 5606 6 is_stmt 1 view .LVU3411 +5606:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT32; continue; /* Switch type to FAT32 and retry */ + 10117 .loc 1 5606 9 is_stmt 0 view .LVU3412 + 10118 01b2 C9B9 cbnz r1, .L767 +5609:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10119 .loc 1 5609 6 is_stmt 1 view .LVU3413 +5609:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10120 .loc 1 5609 9 is_stmt 0 view .LVU3414 + 10121 01b4 002D cmp r5, #0 + 10122 01b6 40F05B82 bne .L768 +5609:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10123 .loc 1 5609 21 discriminator 1 view .LVU3415 + 10124 01ba 4FEA4A05 lsl r5, r10, #1 + 10125 .LVL1159: +5609:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10126 .loc 1 5609 14 discriminator 1 view .LVU3416 + 10127 01be 802D cmp r5, #128 + 10128 01c0 A8D9 bls .L708 +5610:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10129 .loc 1 5610 13 view .LVU3417 + 10130 01c2 0E20 movs r0, #14 + 10131 01c4 27E2 b .L700 + 10132 .LVL1160: + 10133 .L754: +5365:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < b_vol) return FR_MKFS_ABORTED; + 10134 .loc 1 5365 30 view .LVU3418 + ARM GAS /tmp/cc5lWXRL.s page 336 + + + 10135 01c6 3F23 movs r3, #63 + 10136 01c8 0093 str r3, [sp] + 10137 01ca 83E7 b .L705 + 10138 .LVL1161: + 10139 .L758: +5381:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10140 .loc 1 5381 9 view .LVU3419 + 10141 01cc 4FF0030B mov fp, #3 + 10142 01d0 0394 str r4, [sp, #12] + 10143 01d2 CDF81090 str r9, [sp, #16] + 10144 01d6 9DE7 b .L708 + 10145 .L759: +5381:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10146 .loc 1 5381 9 view .LVU3420 + 10147 01d8 4FF0030B mov fp, #3 + 10148 01dc 0394 str r4, [sp, #12] + 10149 01de CDF81090 str r9, [sp, #16] + 10150 01e2 97E7 b .L708 + 10151 .LVL1162: + 10152 .L766: +5604:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10153 .loc 1 5604 10 view .LVU3421 + 10154 01e4 1D46 mov r5, r3 + 10155 01e6 95E7 b .L708 + 10156 .L767: +5607:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10157 .loc 1 5607 11 view .LVU3422 + 10158 01e8 4FF0030B mov fp, #3 + 10159 .LVL1163: + 10160 .L726: +5556:Middlewares/Third_Party/FatFs/src/ff.c **** n = sz_vol / 0x20000; /* Volume size in unit of 128KS */ + 10161 .loc 1 5556 5 is_stmt 1 view .LVU3423 +5556:Middlewares/Third_Party/FatFs/src/ff.c **** n = sz_vol / 0x20000; /* Volume size in unit of 128KS */ + 10162 .loc 1 5556 8 is_stmt 0 view .LVU3424 + 10163 01ec BDB1 cbz r5, .L788 + 10164 01ee AA46 mov r10, r5 + 10165 .L710: + 10166 .LVL1164: +5560:Middlewares/Third_Party/FatFs/src/ff.c **** sz_fat = (n_clst * 4 + 8 + ss - 1) / ss; /* FAT size [sector] */ + 10167 .loc 1 5560 5 is_stmt 1 view .LVU3425 +5560:Middlewares/Third_Party/FatFs/src/ff.c **** sz_fat = (n_clst * 4 + 8 + ss - 1) / ss; /* FAT size [sector] */ + 10168 .loc 1 5560 12 is_stmt 0 view .LVU3426 + 10169 01f0 B2FBFAF3 udiv r3, r2, r10 + 10170 .LVL1165: +5561:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 32; /* Number of reserved sectors */ + 10171 .loc 1 5561 5 is_stmt 1 view .LVU3427 +5561:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 32; /* Number of reserved sectors */ + 10172 .loc 1 5561 26 is_stmt 0 view .LVU3428 + 10173 01f4 03F10208 add r8, r3, #2 +5561:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 32; /* Number of reserved sectors */ + 10174 .loc 1 5561 30 view .LVU3429 + 10175 01f8 BDF82E00 ldrh r0, [sp, #46] + 10176 01fc 00EB8808 add r8, r0, r8, lsl #2 +5561:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 32; /* Number of reserved sectors */ + 10177 .loc 1 5561 35 view .LVU3430 + 10178 0200 08F1FF38 add r8, r8, #-1 +5561:Middlewares/Third_Party/FatFs/src/ff.c **** sz_rsv = 32; /* Number of reserved sectors */ + ARM GAS /tmp/cc5lWXRL.s page 337 + + + 10179 .loc 1 5561 12 view .LVU3431 + 10180 0204 B8FBF0F8 udiv r8, r8, r0 + 10181 .LVL1166: +5562:Middlewares/Third_Party/FatFs/src/ff.c **** sz_dir = 0; /* No static directory */ + 10182 .loc 1 5562 5 is_stmt 1 view .LVU3432 +5563:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst <= MAX_FAT16 || n_clst > MAX_FAT32) return FR_MKFS_ABORTED; + 10183 .loc 1 5563 5 view .LVU3433 +5564:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16 volume */ + 10184 .loc 1 5564 5 view .LVU3434 +5564:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16 volume */ + 10185 .loc 1 5564 29 is_stmt 0 view .LVU3435 + 10186 0208 2C48 ldr r0, .L796+4 + 10187 020a 1844 add r0, r0, r3 +5564:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16 volume */ + 10188 .loc 1 5564 8 view .LVU3436 + 10189 020c 2C4B ldr r3, .L796+8 + 10190 .LVL1167: +5564:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16 volume */ + 10191 .loc 1 5564 8 view .LVU3437 + 10192 020e 9842 cmp r0, r3 + 10193 0210 00F22882 bhi .L762 +5563:Middlewares/Third_Party/FatFs/src/ff.c **** if (n_clst <= MAX_FAT16 || n_clst > MAX_FAT32) return FR_MKFS_ABORTED; + 10194 .loc 1 5563 12 view .LVU3438 + 10195 0214 DDF804C0 ldr ip, [sp, #4] +5562:Middlewares/Third_Party/FatFs/src/ff.c **** sz_dir = 0; /* No static directory */ + 10196 .loc 1 5562 12 view .LVU3439 + 10197 0218 4FF0200E mov lr, #32 + 10198 021c 99E7 b .L713 + 10199 .LVL1168: + 10200 .L788: +5557:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0, pau = 1; cst32[i] && cst32[i] <= n; i++, pau <<= 1) ; /* Get from table */ + 10201 .loc 1 5557 6 is_stmt 1 view .LVU3440 +5557:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0, pau = 1; cst32[i] && cst32[i] <= n; i++, pau <<= 1) ; /* Get from table */ + 10202 .loc 1 5557 8 is_stmt 0 view .LVU3441 + 10203 021e 540C lsrs r4, r2, #17 + 10204 .LVL1169: +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10205 .loc 1 5558 6 is_stmt 1 view .LVU3442 +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10206 .loc 1 5558 13 is_stmt 0 view .LVU3443 + 10207 0220 2846 mov r0, r5 +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10208 .loc 1 5558 22 view .LVU3444 + 10209 0222 4FF0010A mov r10, #1 +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10210 .loc 1 5558 6 view .LVU3445 + 10211 0226 02E0 b .L711 + 10212 .LVL1170: + 10213 .L712: +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10214 .loc 1 5558 70 is_stmt 1 discriminator 4 view .LVU3446 +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10215 .loc 1 5558 54 discriminator 4 view .LVU3447 +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10216 .loc 1 5558 55 is_stmt 0 discriminator 4 view .LVU3448 + 10217 0228 0130 adds r0, r0, #1 + 10218 .LVL1171: + ARM GAS /tmp/cc5lWXRL.s page 338 + + +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10219 .loc 1 5558 63 discriminator 4 view .LVU3449 + 10220 022a 4FEA4A0A lsl r10, r10, #1 + 10221 .LVL1172: + 10222 .L711: +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10223 .loc 1 5558 27 is_stmt 1 discriminator 1 view .LVU3450 +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10224 .loc 1 5558 32 is_stmt 0 discriminator 1 view .LVU3451 + 10225 022e 254B ldr r3, .L796+12 + 10226 0230 33F81030 ldrh r3, [r3, r0, lsl #1] +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10227 .loc 1 5558 6 discriminator 1 view .LVU3452 + 10228 0234 002B cmp r3, #0 + 10229 0236 DBD0 beq .L710 +5558:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10230 .loc 1 5558 36 discriminator 3 view .LVU3453 + 10231 0238 A342 cmp r3, r4 + 10232 023a F5D9 bls .L712 + 10233 023c D8E7 b .L710 + 10234 .LVL1173: + 10235 .L785: +5567:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0, pau = 1; cst[i] && cst[i] <= n; i++, pau <<= 1) ; /* Get from table */ + 10236 .loc 1 5567 6 is_stmt 1 view .LVU3454 +5567:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0, pau = 1; cst[i] && cst[i] <= n; i++, pau <<= 1) ; /* Get from table */ + 10237 .loc 1 5567 8 is_stmt 0 view .LVU3455 + 10238 023e 140B lsrs r4, r2, #12 + 10239 .LVL1174: +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10240 .loc 1 5568 6 is_stmt 1 view .LVU3456 +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10241 .loc 1 5568 13 is_stmt 0 view .LVU3457 + 10242 0240 2846 mov r0, r5 +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10243 .loc 1 5568 22 view .LVU3458 + 10244 0242 4FF0010A mov r10, #1 +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10245 .loc 1 5568 6 view .LVU3459 + 10246 0246 02E0 b .L715 + 10247 .LVL1175: + 10248 .L716: +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10249 .loc 1 5568 66 is_stmt 1 discriminator 4 view .LVU3460 +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10250 .loc 1 5568 50 discriminator 4 view .LVU3461 +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10251 .loc 1 5568 51 is_stmt 0 discriminator 4 view .LVU3462 + 10252 0248 0130 adds r0, r0, #1 + 10253 .LVL1176: +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10254 .loc 1 5568 59 discriminator 4 view .LVU3463 + 10255 024a 4FEA4A0A lsl r10, r10, #1 + 10256 .LVL1177: + 10257 .L715: +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10258 .loc 1 5568 27 is_stmt 1 discriminator 1 view .LVU3464 +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 339 + + + 10259 .loc 1 5568 30 is_stmt 0 discriminator 1 view .LVU3465 + 10260 024e 1E4B ldr r3, .L796+16 + 10261 0250 33F81030 ldrh r3, [r3, r0, lsl #1] +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10262 .loc 1 5568 6 discriminator 1 view .LVU3466 + 10263 0254 002B cmp r3, #0 + 10264 0256 3FF464AF beq .L714 +5568:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10265 .loc 1 5568 34 discriminator 3 view .LVU3467 + 10266 025a A342 cmp r3, r4 + 10267 025c F4D9 bls .L716 + 10268 025e 60E7 b .L714 + 10269 .LVL1178: + 10270 .L717: +5574:Middlewares/Third_Party/FatFs/src/ff.c **** n = (n_clst * 3 + 1) / 2 + 3; /* FAT size [byte] */ + 10271 .loc 1 5574 6 is_stmt 1 view .LVU3468 +5575:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10272 .loc 1 5575 6 view .LVU3469 +5575:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10273 .loc 1 5575 18 is_stmt 0 view .LVU3470 + 10274 0260 03EB4303 add r3, r3, r3, lsl #1 + 10275 .LVL1179: +5575:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10276 .loc 1 5575 22 view .LVU3471 + 10277 0264 03F10108 add r8, r3, #1 +5575:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10278 .loc 1 5575 27 view .LVU3472 + 10279 0268 4FEA5808 lsr r8, r8, #1 +5575:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10280 .loc 1 5575 8 view .LVU3473 + 10281 026c 08F10308 add r8, r8, #3 + 10282 .LVL1180: +5574:Middlewares/Third_Party/FatFs/src/ff.c **** n = (n_clst * 3 + 1) / 2 + 3; /* FAT size [byte] */ + 10283 .loc 1 5574 10 view .LVU3474 + 10284 0270 4FF0010B mov fp, #1 + 10285 0274 60E7 b .L718 + 10286 .LVL1181: + 10287 .L786: +5587:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16: Expand FAT size */ + 10288 .loc 1 5587 5 is_stmt 1 view .LVU3475 +5587:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16: Expand FAT size */ + 10289 .loc 1 5587 12 is_stmt 0 view .LVU3476 + 10290 0276 A644 add lr, lr, r4 + 10291 .LVL1182: +5587:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16: Expand FAT size */ + 10292 .loc 1 5587 18 is_stmt 1 view .LVU3477 +5587:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16: Expand FAT size */ + 10293 .loc 1 5587 24 is_stmt 0 view .LVU3478 + 10294 0278 A144 add r9, r9, r4 + 10295 .LVL1183: +5587:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16: Expand FAT size */ + 10296 .loc 1 5587 24 view .LVU3479 + 10297 027a 7BE7 b .L720 + 10298 .LVL1184: + 10299 .L787: +5596:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au && (au = pau / 2) != 0) continue; /* Adjust cluster size and retry */ + 10300 .loc 1 5596 5 is_stmt 1 view .LVU3480 + ARM GAS /tmp/cc5lWXRL.s page 340 + + +5596:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au && (au = pau / 2) != 0) continue; /* Adjust cluster size and retry */ + 10301 .loc 1 5596 8 is_stmt 0 view .LVU3481 + 10302 027c 4FF6F570 movw r0, #65525 + 10303 0280 8342 cmp r3, r0 + 10304 0282 89D8 bhi .L721 +5597:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10305 .loc 1 5597 6 is_stmt 1 view .LVU3482 +5597:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10306 .loc 1 5597 9 is_stmt 0 view .LVU3483 + 10307 0284 002D cmp r5, #0 + 10308 0286 40F0F181 bne .L765 +5597:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10309 .loc 1 5597 21 discriminator 1 view .LVU3484 + 10310 028a 4FEA5A05 lsr r5, r10, #1 + 10311 .LVL1185: +5597:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10312 .loc 1 5597 14 discriminator 1 view .LVU3485 + 10313 028e BAF1010F cmp r10, #1 + 10314 0292 3FF63FAF bhi .L708 +5598:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10315 .loc 1 5598 13 view .LVU3486 + 10316 0296 0E20 movs r0, #14 + 10317 0298 BDE1 b .L700 + 10318 .LVL1186: + 10319 .L724: +5612:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au && (au = pau * 2) <= 128) continue; /* Adjust cluster size and retry */ + 10320 .loc 1 5612 5 is_stmt 1 view .LVU3487 +5612:Middlewares/Third_Party/FatFs/src/ff.c **** if (!au && (au = pau * 2) <= 128) continue; /* Adjust cluster size and retry */ + 10321 .loc 1 5612 9 is_stmt 0 view .LVU3488 + 10322 029a 40F6F570 movw r0, #4085 + 10323 029e 8342 cmp r3, r0 + 10324 02a0 14D8 bhi .L723 +5613:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10325 .loc 1 5613 6 is_stmt 1 view .LVU3489 +5613:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10326 .loc 1 5613 9 is_stmt 0 view .LVU3490 + 10327 02a2 002D cmp r5, #0 + 10328 02a4 40F0E681 bne .L769 +5613:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10329 .loc 1 5613 21 discriminator 1 view .LVU3491 + 10330 02a8 4FEA4A05 lsl r5, r10, #1 + 10331 .LVL1187: +5613:Middlewares/Third_Party/FatFs/src/ff.c **** return FR_MKFS_ABORTED; + 10332 .loc 1 5613 14 discriminator 1 view .LVU3492 + 10333 02ac 802D cmp r5, #128 + 10334 02ae 7FF631AF bls .L708 +5614:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10335 .loc 1 5614 13 view .LVU3493 + 10336 02b2 0E20 movs r0, #14 + 10337 02b4 AFE1 b .L700 + 10338 .L797: + 10339 02b6 00BF .align 2 + 10340 .L796: + 10341 02b8 00000000 .word .LANCHOR2 + 10342 02bc 0A00FFFF .word -65526 + 10343 02c0 FFFFFE0F .word 268369919 + 10344 02c4 00000000 .word .LANCHOR4 + ARM GAS /tmp/cc5lWXRL.s page 341 + + + 10345 02c8 00000000 .word .LANCHOR5 + 10346 .LVL1188: + 10347 .L723: +5617:Middlewares/Third_Party/FatFs/src/ff.c **** + 10348 .loc 1 5617 24 view .LVU3494 + 10349 02cc CDF818C0 str ip, [sp, #24] + 10350 02d0 7546 mov r5, lr + 10351 02d2 CDF81490 str r9, [sp, #20] + 10352 02d6 039C ldr r4, [sp, #12] + 10353 .LVL1189: +5617:Middlewares/Third_Party/FatFs/src/ff.c **** + 10354 .loc 1 5617 24 view .LVU3495 + 10355 02d8 DDF81090 ldr r9, [sp, #16] + 10356 .LVL1190: +5617:Middlewares/Third_Party/FatFs/src/ff.c **** + 10357 .loc 1 5617 24 view .LVU3496 + 10358 02dc 0493 str r3, [sp, #16] + 10359 .LVL1191: +5617:Middlewares/Third_Party/FatFs/src/ff.c **** + 10360 .loc 1 5617 4 is_stmt 1 view .LVU3497 +5617:Middlewares/Third_Party/FatFs/src/ff.c **** + 10361 .loc 1 5617 24 is_stmt 0 view .LVU3498 + 10362 02de 40F6F572 movw r2, #4085 + 10363 02e2 1946 mov r1, r3 + 10364 02e4 BBF1010F cmp fp, #1 + 10365 02e8 14BF ite ne + 10366 02ea 0023 movne r3, #0 + 10367 .LVL1192: +5617:Middlewares/Third_Party/FatFs/src/ff.c **** + 10368 .loc 1 5617 24 view .LVU3499 + 10369 02ec 0123 moveq r3, #1 + 10370 02ee 9142 cmp r1, r2 + 10371 02f0 98BF it ls + 10372 02f2 0023 movls r3, #0 +5617:Middlewares/Third_Party/FatFs/src/ff.c **** + 10373 .loc 1 5617 7 view .LVU3500 + 10374 02f4 002B cmp r3, #0 + 10375 02f6 40F0BF81 bne .L770 + 10376 .LVL1193: +5620:Middlewares/Third_Party/FatFs/src/ff.c **** } while (1); + 10377 .loc 1 5620 4 is_stmt 1 view .LVU3501 +5628:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf + BS_JmpBoot, "\xEB\xFE\x90" "MSDOS5.0", 11);/* Boot jump code (x86), OEM name */ + 10378 .loc 1 5628 3 view .LVU3502 + 10379 02fa BDF82E20 ldrh r2, [sp, #46] + 10380 02fe 0021 movs r1, #0 + 10381 .LVL1194: +5628:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf + BS_JmpBoot, "\xEB\xFE\x90" "MSDOS5.0", 11);/* Boot jump code (x86), OEM name */ + 10382 .loc 1 5628 3 is_stmt 0 view .LVU3503 + 10383 0300 3046 mov r0, r6 + 10384 0302 FFF7FEFF bl mem_set + 10385 .LVL1195: +5629:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_BytsPerSec, ss); /* Sector size [byte] */ + 10386 .loc 1 5629 3 is_stmt 1 view .LVU3504 + 10387 0306 0B22 movs r2, #11 + 10388 0308 D049 ldr r1, .L798 + 10389 030a 3046 mov r0, r6 + 10390 030c FFF7FEFF bl mem_cpy + ARM GAS /tmp/cc5lWXRL.s page 342 + + + 10391 .LVL1196: +5630:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BPB_SecPerClus] = (BYTE)pau; /* Cluster size [sector] */ + 10392 .loc 1 5630 3 view .LVU3505 + 10393 0310 BDF82E10 ldrh r1, [sp, #46] + 10394 0314 06F10B00 add r0, r6, #11 + 10395 0318 FFF7FEFF bl st_word + 10396 .LVL1197: +5631:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_RsvdSecCnt, (WORD)sz_rsv); /* Size of reserved area */ + 10397 .loc 1 5631 3 view .LVU3506 +5631:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_RsvdSecCnt, (WORD)sz_rsv); /* Size of reserved area */ + 10398 .loc 1 5631 23 is_stmt 0 view .LVU3507 + 10399 031c 86F80DA0 strb r10, [r6, #13] +5632:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BPB_NumFATs] = (BYTE)n_fats; /* Number of FATs */ + 10400 .loc 1 5632 3 is_stmt 1 view .LVU3508 + 10401 0320 A9B2 uxth r1, r5 + 10402 0322 06F10E00 add r0, r6, #14 + 10403 0326 FFF7FEFF bl st_word + 10404 .LVL1198: +5633:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_RootEntCnt, (WORD)((fmt == FS_FAT32) ? 0 : n_rootdir)); /* Number of root direc + 10405 .loc 1 5633 3 view .LVU3509 +5633:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_RootEntCnt, (WORD)((fmt == FS_FAT32) ? 0 : n_rootdir)); /* Number of root direc + 10406 .loc 1 5633 20 is_stmt 0 view .LVU3510 + 10407 032a 0123 movs r3, #1 + 10408 032c 3374 strb r3, [r6, #16] +5634:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < 0x10000) { + 10409 .loc 1 5634 3 is_stmt 1 view .LVU3511 + 10410 032e 06F11100 add r0, r6, #17 + 10411 0332 BBF1030F cmp fp, #3 + 10412 0336 7DD0 beq .L789 + 10413 0338 4FF40071 mov r1, #512 + 10414 .L727: +5634:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < 0x10000) { + 10415 .loc 1 5634 3 is_stmt 0 discriminator 4 view .LVU3512 + 10416 033c FFF7FEFF bl st_word + 10417 .LVL1199: +5635:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_TotSec16, (WORD)sz_vol); /* Volume size in 16-bit LBA */ + 10418 .loc 1 5635 3 is_stmt 1 discriminator 4 view .LVU3513 +5635:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_TotSec16, (WORD)sz_vol); /* Volume size in 16-bit LBA */ + 10419 .loc 1 5635 14 is_stmt 0 discriminator 4 view .LVU3514 + 10420 0340 0999 ldr r1, [sp, #36] +5635:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_TotSec16, (WORD)sz_vol); /* Volume size in 16-bit LBA */ + 10421 .loc 1 5635 6 discriminator 4 view .LVU3515 + 10422 0342 B1F5803F cmp r1, #65536 + 10423 0346 77D2 bcs .L728 +5636:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 10424 .loc 1 5636 4 is_stmt 1 view .LVU3516 + 10425 0348 89B2 uxth r1, r1 + 10426 034a 06F11300 add r0, r6, #19 + 10427 034e FFF7FEFF bl st_word + 10428 .LVL1200: + 10429 .L729: +5640:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_SecPerTrk, 63); /* Number of sectors per track (for int13) */ + 10430 .loc 1 5640 3 view .LVU3517 +5640:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_SecPerTrk, 63); /* Number of sectors per track (for int13) */ + 10431 .loc 1 5640 18 is_stmt 0 view .LVU3518 + 10432 0352 F823 movs r3, #248 + 10433 0354 7375 strb r3, [r6, #21] + ARM GAS /tmp/cc5lWXRL.s page 343 + + +5641:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_NumHeads, 255); /* Number of heads (for int13) */ + 10434 .loc 1 5641 3 is_stmt 1 view .LVU3519 + 10435 0356 3F21 movs r1, #63 + 10436 0358 06F11800 add r0, r6, #24 + 10437 035c FFF7FEFF bl st_word + 10438 .LVL1201: +5642:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_HiddSec, b_vol); /* Volume offset in the physical drive [sector] */ + 10439 .loc 1 5642 3 view .LVU3520 + 10440 0360 FF21 movs r1, #255 + 10441 0362 06F11A00 add r0, r6, #26 + 10442 0366 FFF7FEFF bl st_word + 10443 .LVL1202: +5643:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10444 .loc 1 5643 3 view .LVU3521 + 10445 036a 0099 ldr r1, [sp] + 10446 036c 06F11C00 add r0, r6, #28 + 10447 0370 FFF7FEFF bl st_dword + 10448 .LVL1203: +5644:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BS_VolID32, GET_FATTIME()); /* VSN */ + 10449 .loc 1 5644 3 view .LVU3522 +5644:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BS_VolID32, GET_FATTIME()); /* VSN */ + 10450 .loc 1 5644 6 is_stmt 0 view .LVU3523 + 10451 0374 BBF1030F cmp fp, #3 + 10452 0378 63D0 beq .L790 +5654:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_FATSz16, (WORD)sz_fat); /* FAT size [sector] */ + 10453 .loc 1 5654 4 is_stmt 1 view .LVU3524 + 10454 037a FFF7FEFF bl get_fattime + 10455 .LVL1204: + 10456 037e 0146 mov r1, r0 + 10457 0380 06F12700 add r0, r6, #39 + 10458 0384 FFF7FEFF bl st_dword + 10459 .LVL1205: +5655:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BS_DrvNum] = 0x80; /* Drive number (for int13) */ + 10460 .loc 1 5655 4 view .LVU3525 + 10461 0388 1FFA88F1 uxth r1, r8 + 10462 038c 06F11600 add r0, r6, #22 + 10463 0390 FFF7FEFF bl st_word + 10464 .LVL1206: +5656:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BS_BootSig] = 0x29; /* Extended boot signature */ + 10465 .loc 1 5656 4 view .LVU3526 +5656:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BS_BootSig] = 0x29; /* Extended boot signature */ + 10466 .loc 1 5656 19 is_stmt 0 view .LVU3527 + 10467 0394 8023 movs r3, #128 + 10468 0396 86F82430 strb r3, [r6, #36] +5657:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf + BS_VolLab, "NO NAME " "FAT ", 19); /* Volume label, FAT signature */ + 10469 .loc 1 5657 4 is_stmt 1 view .LVU3528 +5657:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf + BS_VolLab, "NO NAME " "FAT ", 19); /* Volume label, FAT signature */ + 10470 .loc 1 5657 20 is_stmt 0 view .LVU3529 + 10471 039a 2923 movs r3, #41 + 10472 039c 86F82630 strb r3, [r6, #38] +5658:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10473 .loc 1 5658 4 is_stmt 1 view .LVU3530 + 10474 03a0 1322 movs r2, #19 + 10475 03a2 AB49 ldr r1, .L798+4 + 10476 03a4 06F12B00 add r0, r6, #43 + 10477 03a8 FFF7FEFF bl mem_cpy + 10478 .LVL1207: + ARM GAS /tmp/cc5lWXRL.s page 344 + + + 10479 .L731: +5660:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, b_vol, 1) != RES_OK) return FR_DISK_ERR; /* Write it to the VBR sector + 10480 .loc 1 5660 3 view .LVU3531 + 10481 03ac 06F5FF73 add r3, r6, #510 + 10482 03b0 0393 str r3, [sp, #12] + 10483 .LVL1208: +5660:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, b_vol, 1) != RES_OK) return FR_DISK_ERR; /* Write it to the VBR sector + 10484 .loc 1 5660 3 is_stmt 0 view .LVU3532 + 10485 03b2 4AF65521 movw r1, #43605 + 10486 03b6 1846 mov r0, r3 + 10487 03b8 FFF7FEFF bl st_word + 10488 .LVL1209: +5661:Middlewares/Third_Party/FatFs/src/ff.c **** + 10489 .loc 1 5661 3 is_stmt 1 view .LVU3533 +5661:Middlewares/Third_Party/FatFs/src/ff.c **** + 10490 .loc 1 5661 7 is_stmt 0 view .LVU3534 + 10491 03bc 0123 movs r3, #1 + 10492 03be 009A ldr r2, [sp] + 10493 03c0 3146 mov r1, r6 + 10494 03c2 2046 mov r0, r4 + 10495 03c4 FFF7FEFF bl disk_write + 10496 .LVL1210: +5661:Middlewares/Third_Party/FatFs/src/ff.c **** + 10497 .loc 1 5661 6 view .LVU3535 + 10498 03c8 0028 cmp r0, #0 + 10499 03ca 40F05781 bne .L772 +5664:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(pdrv, buf, b_vol + 6, 1); /* Write backup VBR (VBR + 6) */ + 10500 .loc 1 5664 3 is_stmt 1 view .LVU3536 +5664:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(pdrv, buf, b_vol + 6, 1); /* Write backup VBR (VBR + 6) */ + 10501 .loc 1 5664 6 is_stmt 0 view .LVU3537 + 10502 03ce BBF1030F cmp fp, #3 + 10503 03d2 5ED0 beq .L791 + 10504 .LVL1211: + 10505 .L732: +5677:Middlewares/Third_Party/FatFs/src/ff.c **** sect = b_fat; /* FAT start sector */ + 10506 .loc 1 5677 3 is_stmt 1 view .LVU3538 + 10507 03d4 3A46 mov r2, r7 + 10508 03d6 0021 movs r1, #0 + 10509 03d8 3046 mov r0, r6 + 10510 03da FFF7FEFF bl mem_set + 10511 .LVL1212: +5678:Middlewares/Third_Party/FatFs/src/ff.c **** for (i = 0; i < n_fats; i++) { /* Initialize FATs each */ + 10512 .loc 1 5678 3 view .LVU3539 +5679:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10513 .loc 1 5679 3 view .LVU3540 + 10514 .L733: +5679:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10515 .loc 1 5679 15 discriminator 1 view .LVU3541 +5679:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10516 .loc 1 5679 3 is_stmt 0 discriminator 1 view .LVU3542 + 10517 03de 019B ldr r3, [sp, #4] + 10518 03e0 002B cmp r3, #0 + 10519 03e2 00F08980 beq .L738 +5697:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 10520 .loc 1 5697 3 is_stmt 1 view .LVU3543 +5697:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 10521 .loc 1 5697 35 is_stmt 0 view .LVU3544 + ARM GAS /tmp/cc5lWXRL.s page 345 + + + 10522 03e6 BBF1030F cmp fp, #3 + 10523 03ea 00F0C080 beq .L792 + 10524 03ee 069F ldr r7, [sp, #24] + 10525 03f0 DDF81480 ldr r8, [sp, #20] + 10526 .LVL1213: + 10527 .L740: +5698:Middlewares/Third_Party/FatFs/src/ff.c **** n = (nsect > sz_buf) ? sz_buf : nsect; + 10528 .loc 1 5698 3 is_stmt 1 view .LVU3545 +5699:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) return FR_DISK_ERR; + 10529 .loc 1 5699 4 view .LVU3546 +5699:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) return FR_DISK_ERR; + 10530 .loc 1 5699 6 is_stmt 0 view .LVU3547 + 10531 03f4 3D46 mov r5, r7 + 10532 03f6 4F45 cmp r7, r9 + 10533 03f8 28BF it cs + 10534 03fa 4D46 movcs r5, r9 + 10535 .LVL1214: +5700:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; nsect -= n; + 10536 .loc 1 5700 4 is_stmt 1 view .LVU3548 +5700:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; nsect -= n; + 10537 .loc 1 5700 8 is_stmt 0 view .LVU3549 + 10538 03fc 2B46 mov r3, r5 + 10539 03fe 4246 mov r2, r8 + 10540 0400 3146 mov r1, r6 + 10541 0402 2046 mov r0, r4 + 10542 0404 FFF7FEFF bl disk_write + 10543 .LVL1215: +5700:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; nsect -= n; + 10544 .loc 1 5700 7 view .LVU3550 + 10545 0408 0028 cmp r0, #0 + 10546 040a 40F03B81 bne .L775 +5701:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); + 10547 .loc 1 5701 4 is_stmt 1 view .LVU3551 +5701:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); + 10548 .loc 1 5701 9 is_stmt 0 view .LVU3552 + 10549 040e A844 add r8, r8, r5 + 10550 .LVL1216: +5701:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); + 10551 .loc 1 5701 15 is_stmt 1 view .LVU3553 +5702:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10552 .loc 1 5702 11 view .LVU3554 +5702:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10553 .loc 1 5702 3 is_stmt 0 view .LVU3555 + 10554 0410 7F1B subs r7, r7, r5 + 10555 .LVL1217: +5702:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10556 .loc 1 5702 3 view .LVU3556 + 10557 0412 EFD1 bne .L740 +5706:Middlewares/Third_Party/FatFs/src/ff.c **** sys = 0x07; /* HPFS/NTFS/exFAT */ + 10558 .loc 1 5706 2 is_stmt 1 view .LVU3557 +5709:Middlewares/Third_Party/FatFs/src/ff.c **** sys = 0x0C; /* FAT32X */ + 10559 .loc 1 5709 3 view .LVU3558 +5709:Middlewares/Third_Party/FatFs/src/ff.c **** sys = 0x0C; /* FAT32X */ + 10560 .loc 1 5709 6 is_stmt 0 view .LVU3559 + 10561 0414 BBF1030F cmp fp, #3 + 10562 0418 00F0B080 beq .L776 +5712:Middlewares/Third_Party/FatFs/src/ff.c **** sys = 0x06; /* FAT12/16 (>=64KS) */ + ARM GAS /tmp/cc5lWXRL.s page 346 + + + 10563 .loc 1 5712 4 is_stmt 1 view .LVU3560 +5712:Middlewares/Third_Party/FatFs/src/ff.c **** sys = 0x06; /* FAT12/16 (>=64KS) */ + 10564 .loc 1 5712 15 is_stmt 0 view .LVU3561 + 10565 041c 099B ldr r3, [sp, #36] +5712:Middlewares/Third_Party/FatFs/src/ff.c **** sys = 0x06; /* FAT12/16 (>=64KS) */ + 10566 .loc 1 5712 7 view .LVU3562 + 10567 041e B3F5803F cmp r3, #65536 + 10568 0422 80F0F080 bcs .L777 +5715:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10569 .loc 1 5715 5 is_stmt 1 view .LVU3563 +5715:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10570 .loc 1 5715 9 is_stmt 0 view .LVU3564 + 10571 0426 BBF1020F cmp fp, #2 + 10572 042a 00F0A480 beq .L793 + 10573 042e 4FF00108 mov r8, #1 + 10574 .LVL1218: +5715:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10575 .loc 1 5715 9 view .LVU3565 + 10576 0432 A5E0 b .L741 + 10577 .LVL1219: + 10578 .L789: +5634:Middlewares/Third_Party/FatFs/src/ff.c **** if (sz_vol < 0x10000) { + 10579 .loc 1 5634 3 view .LVU3566 + 10580 0434 0021 movs r1, #0 + 10581 0436 81E7 b .L727 + 10582 .L728: +5638:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10583 .loc 1 5638 4 is_stmt 1 view .LVU3567 + 10584 0438 06F12000 add r0, r6, #32 + 10585 043c FFF7FEFF bl st_dword + 10586 .LVL1220: + 10587 0440 87E7 b .L729 + 10588 .L790: +5645:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_FATSz32, sz_fat); /* FAT size [sector] */ + 10589 .loc 1 5645 4 view .LVU3568 + 10590 0442 FFF7FEFF bl get_fattime + 10591 .LVL1221: + 10592 0446 0146 mov r1, r0 + 10593 0448 06F14300 add r0, r6, #67 + 10594 044c FFF7FEFF bl st_dword + 10595 .LVL1222: +5646:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + BPB_RootClus32, 2); /* Root directory cluster # (2) */ + 10596 .loc 1 5646 4 view .LVU3569 + 10597 0450 4146 mov r1, r8 + 10598 0452 06F12400 add r0, r6, #36 + 10599 0456 FFF7FEFF bl st_dword + 10600 .LVL1223: +5647:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_FSInfo32, 1); /* Offset of FSINFO sector (VBR + 1) */ + 10601 .loc 1 5647 4 view .LVU3570 + 10602 045a 0221 movs r1, #2 + 10603 045c 06F12C00 add r0, r6, #44 + 10604 0460 FFF7FEFF bl st_dword + 10605 .LVL1224: +5648:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BPB_BkBootSec32, 6); /* Offset of backup VBR (VBR + 6) */ + 10606 .loc 1 5648 4 view .LVU3571 + 10607 0464 0121 movs r1, #1 + 10608 0466 06F13000 add r0, r6, #48 + ARM GAS /tmp/cc5lWXRL.s page 347 + + + 10609 046a FFF7FEFF bl st_word + 10610 .LVL1225: +5649:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BS_DrvNum32] = 0x80; /* Drive number (for int13) */ + 10611 .loc 1 5649 4 view .LVU3572 + 10612 046e 0621 movs r1, #6 + 10613 0470 06F13200 add r0, r6, #50 + 10614 0474 FFF7FEFF bl st_word + 10615 .LVL1226: +5650:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BS_BootSig32] = 0x29; /* Extended boot signature */ + 10616 .loc 1 5650 4 view .LVU3573 +5650:Middlewares/Third_Party/FatFs/src/ff.c **** buf[BS_BootSig32] = 0x29; /* Extended boot signature */ + 10617 .loc 1 5650 21 is_stmt 0 view .LVU3574 + 10618 0478 8023 movs r3, #128 + 10619 047a 86F84030 strb r3, [r6, #64] +5651:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf + BS_VolLab32, "NO NAME " "FAT32 ", 19); /* Volume label, FAT signature */ + 10620 .loc 1 5651 4 is_stmt 1 view .LVU3575 +5651:Middlewares/Third_Party/FatFs/src/ff.c **** mem_cpy(buf + BS_VolLab32, "NO NAME " "FAT32 ", 19); /* Volume label, FAT signature */ + 10621 .loc 1 5651 22 is_stmt 0 view .LVU3576 + 10622 047e 2923 movs r3, #41 + 10623 0480 86F84230 strb r3, [r6, #66] +5652:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 10624 .loc 1 5652 4 is_stmt 1 view .LVU3577 + 10625 0484 1322 movs r2, #19 + 10626 0486 7349 ldr r1, .L798+8 + 10627 0488 06F14700 add r0, r6, #71 + 10628 048c FFF7FEFF bl mem_cpy + 10629 .LVL1227: + 10630 0490 8CE7 b .L731 + 10631 .LVL1228: + 10632 .L791: +5665:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); + 10633 .loc 1 5665 4 view .LVU3578 + 10634 0492 0123 movs r3, #1 + 10635 0494 009D ldr r5, [sp] + 10636 .LVL1229: +5665:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); + 10637 .loc 1 5665 4 is_stmt 0 view .LVU3579 + 10638 0496 AA1D adds r2, r5, #6 + 10639 0498 3146 mov r1, r6 + 10640 049a 2046 mov r0, r4 + 10641 049c FFF7FEFF bl disk_write + 10642 .LVL1230: +5666:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + FSI_LeadSig, 0x41615252); + 10643 .loc 1 5666 4 is_stmt 1 view .LVU3580 + 10644 04a0 BDF82E20 ldrh r2, [sp, #46] + 10645 04a4 0021 movs r1, #0 + 10646 04a6 3046 mov r0, r6 + 10647 04a8 FFF7FEFF bl mem_set + 10648 .LVL1231: +5667:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + FSI_StrucSig, 0x61417272); + 10649 .loc 1 5667 4 view .LVU3581 + 10650 04ac 6A49 ldr r1, .L798+12 + 10651 04ae 3046 mov r0, r6 + 10652 04b0 FFF7FEFF bl st_dword + 10653 .LVL1232: +5668:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + FSI_Free_Count, n_clst - 1); /* Number of free clusters */ + 10654 .loc 1 5668 4 view .LVU3582 + ARM GAS /tmp/cc5lWXRL.s page 348 + + + 10655 04b4 6949 ldr r1, .L798+16 + 10656 04b6 06F5F270 add r0, r6, #484 + 10657 04ba FFF7FEFF bl st_dword + 10658 .LVL1233: +5669:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + FSI_Nxt_Free, 2); /* Last allocated cluster# */ + 10659 .loc 1 5669 4 view .LVU3583 + 10660 04be 049B ldr r3, [sp, #16] + 10661 04c0 591E subs r1, r3, #1 + 10662 04c2 06F5F470 add r0, r6, #488 + 10663 04c6 FFF7FEFF bl st_dword + 10664 .LVL1234: +5670:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BS_55AA, 0xAA55); + 10665 .loc 1 5670 4 view .LVU3584 + 10666 04ca 0221 movs r1, #2 + 10667 04cc 06F5F670 add r0, r6, #492 + 10668 04d0 FFF7FEFF bl st_dword + 10669 .LVL1235: +5671:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(pdrv, buf, b_vol + 7, 1); /* Write backup FSINFO (VBR + 7) */ + 10670 .loc 1 5671 4 view .LVU3585 + 10671 04d4 4AF65521 movw r1, #43605 + 10672 04d8 0398 ldr r0, [sp, #12] + 10673 04da FFF7FEFF bl st_word + 10674 .LVL1236: +5672:Middlewares/Third_Party/FatFs/src/ff.c **** disk_write(pdrv, buf, b_vol + 1, 1); /* Write original FSINFO (VBR + 1) */ + 10675 .loc 1 5672 4 view .LVU3586 + 10676 04de 0123 movs r3, #1 + 10677 04e0 EA1D adds r2, r5, #7 + 10678 04e2 3146 mov r1, r6 + 10679 04e4 2046 mov r0, r4 + 10680 04e6 FFF7FEFF bl disk_write + 10681 .LVL1237: +5673:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10682 .loc 1 5673 4 view .LVU3587 + 10683 04ea 0123 movs r3, #1 + 10684 04ec EA18 adds r2, r5, r3 + 10685 04ee 3146 mov r1, r6 + 10686 04f0 2046 mov r0, r4 + 10687 04f2 FFF7FEFF bl disk_write + 10688 .LVL1238: + 10689 04f6 6DE7 b .L732 + 10690 .LVL1239: + 10691 .L738: +5680:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + 0, 0xFFFFFFF8); /* Entry 0 */ + 10692 .loc 1 5680 4 view .LVU3588 +5680:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + 0, 0xFFFFFFF8); /* Entry 0 */ + 10693 .loc 1 5680 7 is_stmt 0 view .LVU3589 + 10694 04f8 BBF1030F cmp fp, #3 + 10695 04fc 24D0 beq .L794 +5685:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10696 .loc 1 5685 5 is_stmt 1 view .LVU3590 + 10697 04fe BBF1010F cmp fp, #1 + 10698 0502 32D0 beq .L795 + 10699 0504 6FF00701 mvn r1, #7 + 10700 .L736: +5685:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10701 .loc 1 5685 5 is_stmt 0 discriminator 4 view .LVU3591 + 10702 0508 3046 mov r0, r6 + ARM GAS /tmp/cc5lWXRL.s page 349 + + + 10703 050a FFF7FEFF bl st_dword + 10704 .LVL1240: + 10705 .L735: +5685:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10706 .loc 1 5685 5 view .LVU3592 + 10707 050e 4546 mov r5, r8 + 10708 .L737: + 10709 .LVL1241: +5688:Middlewares/Third_Party/FatFs/src/ff.c **** n = (nsect > sz_buf) ? sz_buf : nsect; + 10710 .loc 1 5688 4 is_stmt 1 view .LVU3593 +5689:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) return FR_DISK_ERR; + 10711 .loc 1 5689 5 view .LVU3594 +5689:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, sect, (UINT)n) != RES_OK) return FR_DISK_ERR; + 10712 .loc 1 5689 7 is_stmt 0 view .LVU3595 + 10713 0510 2F46 mov r7, r5 + 10714 0512 4D45 cmp r5, r9 + 10715 0514 28BF it cs + 10716 0516 4F46 movcs r7, r9 + 10717 .LVL1242: +5690:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); + 10718 .loc 1 5690 5 is_stmt 1 view .LVU3596 +5690:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); + 10719 .loc 1 5690 9 is_stmt 0 view .LVU3597 + 10720 0518 3B46 mov r3, r7 + 10721 051a 059A ldr r2, [sp, #20] + 10722 051c 3146 mov r1, r6 + 10723 051e 2046 mov r0, r4 + 10724 0520 FFF7FEFF bl disk_write + 10725 .LVL1243: +5690:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); + 10726 .loc 1 5690 8 view .LVU3598 + 10727 0524 0028 cmp r0, #0 + 10728 0526 40F0AB80 bne .L774 +5691:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; nsect -= n; + 10729 .loc 1 5691 5 is_stmt 1 view .LVU3599 + 10730 052a BDF82E20 ldrh r2, [sp, #46] + 10731 052e 0021 movs r1, #0 + 10732 0530 3046 mov r0, r6 + 10733 0532 FFF7FEFF bl mem_set + 10734 .LVL1244: +5692:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); + 10735 .loc 1 5692 5 view .LVU3600 +5692:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); + 10736 .loc 1 5692 10 is_stmt 0 view .LVU3601 + 10737 0536 059B ldr r3, [sp, #20] + 10738 0538 3B44 add r3, r3, r7 + 10739 053a 0593 str r3, [sp, #20] + 10740 .LVL1245: +5692:Middlewares/Third_Party/FatFs/src/ff.c **** } while (nsect); + 10741 .loc 1 5692 16 is_stmt 1 view .LVU3602 +5693:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10742 .loc 1 5693 12 view .LVU3603 +5693:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10743 .loc 1 5693 4 is_stmt 0 view .LVU3604 + 10744 053c ED1B subs r5, r5, r7 + 10745 .LVL1246: +5693:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 350 + + + 10746 .loc 1 5693 4 view .LVU3605 + 10747 053e E7D1 bne .L737 +5679:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10748 .loc 1 5679 27 is_stmt 1 discriminator 2 view .LVU3606 +5679:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10749 .loc 1 5679 28 is_stmt 0 discriminator 2 view .LVU3607 + 10750 0540 019B ldr r3, [sp, #4] + 10751 .LVL1247: +5679:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10752 .loc 1 5679 28 discriminator 2 view .LVU3608 + 10753 0542 0133 adds r3, r3, #1 + 10754 0544 0193 str r3, [sp, #4] + 10755 .LVL1248: +5679:Middlewares/Third_Party/FatFs/src/ff.c **** if (fmt == FS_FAT32) { + 10756 .loc 1 5679 28 discriminator 2 view .LVU3609 + 10757 0546 4AE7 b .L733 + 10758 .LVL1249: + 10759 .L794: +5681:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + 4, 0xFFFFFFFF); /* Entry 1 */ + 10760 .loc 1 5681 5 is_stmt 1 view .LVU3610 + 10761 0548 6FF00701 mvn r1, #7 + 10762 054c 3046 mov r0, r6 + 10763 054e FFF7FEFF bl st_dword + 10764 .LVL1250: +5682:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(buf + 8, 0x0FFFFFFF); /* Entry 2 (root directory) */ + 10765 .loc 1 5682 5 view .LVU3611 + 10766 0552 4FF0FF31 mov r1, #-1 + 10767 0556 301D adds r0, r6, #4 + 10768 0558 FFF7FEFF bl st_dword + 10769 .LVL1251: +5683:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 10770 .loc 1 5683 5 view .LVU3612 + 10771 055c 6FF07041 mvn r1, #-268435456 + 10772 0560 06F10800 add r0, r6, #8 + 10773 0564 FFF7FEFF bl st_dword + 10774 .LVL1252: + 10775 0568 D1E7 b .L735 + 10776 .LVL1253: + 10777 .L795: +5685:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10778 .loc 1 5685 5 is_stmt 0 view .LVU3613 + 10779 056a 3D49 ldr r1, .L798+20 + 10780 056c CCE7 b .L736 + 10781 .L792: +5697:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 10782 .loc 1 5697 35 view .LVU3614 + 10783 056e 5746 mov r7, r10 + 10784 0570 DDF81480 ldr r8, [sp, #20] + 10785 .LVL1254: +5697:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 10786 .loc 1 5697 35 view .LVU3615 + 10787 0574 3EE7 b .L740 + 10788 .LVL1255: + 10789 .L793: +5715:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10790 .loc 1 5715 9 view .LVU3616 + 10791 0576 4FF00408 mov r8, #4 + ARM GAS /tmp/cc5lWXRL.s page 351 + + + 10792 .LVL1256: +5715:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10793 .loc 1 5715 9 view .LVU3617 + 10794 057a 01E0 b .L741 + 10795 .LVL1257: + 10796 .L776: +5710:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 10797 .loc 1 5710 8 view .LVU3618 + 10798 057c 4FF00C08 mov r8, #12 + 10799 .LVL1258: + 10800 .L741: +5721:Middlewares/Third_Party/FatFs/src/ff.c **** /* Update system ID in the partition table */ + 10801 .loc 1 5721 2 is_stmt 1 view .LVU3619 +5727:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); + 10802 .loc 1 5727 3 view .LVU3620 +5727:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); + 10803 .loc 1 5727 6 is_stmt 0 view .LVU3621 + 10804 0580 029B ldr r3, [sp, #8] + 10805 0582 C3BB cbnz r3, .L742 +5728:Middlewares/Third_Party/FatFs/src/ff.c **** st_word(buf + BS_55AA, 0xAA55); /* MBR signature */ + 10806 .loc 1 5728 4 is_stmt 1 view .LVU3622 + 10807 0584 BDF82E20 ldrh r2, [sp, #46] + 10808 0588 0021 movs r1, #0 + 10809 058a 3046 mov r0, r6 + 10810 058c FFF7FEFF bl mem_set + 10811 .LVL1259: +5729:Middlewares/Third_Party/FatFs/src/ff.c **** pte = buf + MBR_Table; /* Create partition table for single partition in the drive */ + 10812 .loc 1 5729 4 view .LVU3623 + 10813 0590 4AF65521 movw r1, #43605 + 10814 0594 0398 ldr r0, [sp, #12] + 10815 0596 FFF7FEFF bl st_word + 10816 .LVL1260: +5730:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_Boot] = 0; /* Boot indicator */ + 10817 .loc 1 5730 4 view .LVU3624 +5731:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StHead] = 1; /* Start head */ + 10818 .loc 1 5731 4 view .LVU3625 +5731:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StHead] = 1; /* Start head */ + 10819 .loc 1 5731 18 is_stmt 0 view .LVU3626 + 10820 059a 0025 movs r5, #0 + 10821 .LVL1261: +5731:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StHead] = 1; /* Start head */ + 10822 .loc 1 5731 18 view .LVU3627 + 10823 059c 86F8BE51 strb r5, [r6, #446] +5732:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StSec] = 1; /* Start sector */ + 10824 .loc 1 5732 4 is_stmt 1 view .LVU3628 +5732:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StSec] = 1; /* Start sector */ + 10825 .loc 1 5732 20 is_stmt 0 view .LVU3629 + 10826 05a0 0127 movs r7, #1 + 10827 .LVL1262: +5732:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StSec] = 1; /* Start sector */ + 10828 .loc 1 5732 20 view .LVU3630 + 10829 05a2 86F8BF71 strb r7, [r6, #447] +5733:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StCyl] = 0; /* Start cylinder */ + 10830 .loc 1 5733 4 is_stmt 1 view .LVU3631 +5733:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_StCyl] = 0; /* Start cylinder */ + 10831 .loc 1 5733 19 is_stmt 0 view .LVU3632 + 10832 05a6 86F8C071 strb r7, [r6, #448] + ARM GAS /tmp/cc5lWXRL.s page 352 + + +5734:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_System] = sys; /* System type */ + 10833 .loc 1 5734 4 is_stmt 1 view .LVU3633 +5734:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_System] = sys; /* System type */ + 10834 .loc 1 5734 19 is_stmt 0 view .LVU3634 + 10835 05aa 86F8C151 strb r5, [r6, #449] +5735:Middlewares/Third_Party/FatFs/src/ff.c **** n = (b_vol + sz_vol) / (63 * 255); /* (End CHS may be invalid) */ + 10836 .loc 1 5735 4 is_stmt 1 view .LVU3635 +5735:Middlewares/Third_Party/FatFs/src/ff.c **** n = (b_vol + sz_vol) / (63 * 255); /* (End CHS may be invalid) */ + 10837 .loc 1 5735 20 is_stmt 0 view .LVU3636 + 10838 05ae 86F8C281 strb r8, [r6, #450] +5736:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdHead] = 254; /* End head */ + 10839 .loc 1 5736 4 is_stmt 1 view .LVU3637 +5736:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdHead] = 254; /* End head */ + 10840 .loc 1 5736 15 is_stmt 0 view .LVU3638 + 10841 05b2 099B ldr r3, [sp, #36] + 10842 05b4 0099 ldr r1, [sp] + 10843 05b6 0B44 add r3, r3, r1 +5736:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdHead] = 254; /* End head */ + 10844 .loc 1 5736 6 view .LVU3639 + 10845 05b8 43F6C162 movw r2, #16065 + 10846 05bc B3FBF2F3 udiv r3, r3, r2 + 10847 .LVL1263: +5737:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdSec] = (BYTE)(n >> 2 | 63); /* End sector */ + 10848 .loc 1 5737 4 is_stmt 1 view .LVU3640 +5737:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdSec] = (BYTE)(n >> 2 | 63); /* End sector */ + 10849 .loc 1 5737 20 is_stmt 0 view .LVU3641 + 10850 05c0 FE22 movs r2, #254 + 10851 05c2 86F8C321 strb r2, [r6, #451] +5738:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdCyl] = (BYTE)n; /* End cylinder */ + 10852 .loc 1 5738 4 is_stmt 1 view .LVU3642 +5738:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdCyl] = (BYTE)n; /* End cylinder */ + 10853 .loc 1 5738 30 is_stmt 0 view .LVU3643 + 10854 05c6 9A08 lsrs r2, r3, #2 +5738:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdCyl] = (BYTE)n; /* End cylinder */ + 10855 .loc 1 5738 21 view .LVU3644 + 10856 05c8 42F03F02 orr r2, r2, #63 +5738:Middlewares/Third_Party/FatFs/src/ff.c **** pte[PTE_EdCyl] = (BYTE)n; /* End cylinder */ + 10857 .loc 1 5738 19 view .LVU3645 + 10858 05cc 86F8C421 strb r2, [r6, #452] +5739:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(pte + PTE_StLba, b_vol); /* Start offset in LBA */ + 10859 .loc 1 5739 4 is_stmt 1 view .LVU3646 +5739:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(pte + PTE_StLba, b_vol); /* Start offset in LBA */ + 10860 .loc 1 5739 19 is_stmt 0 view .LVU3647 + 10861 05d0 86F8C531 strb r3, [r6, #453] +5740:Middlewares/Third_Party/FatFs/src/ff.c **** st_dword(pte + PTE_SizLba, sz_vol); /* Size in sectors */ + 10862 .loc 1 5740 4 is_stmt 1 view .LVU3648 + 10863 05d4 06F5E370 add r0, r6, #454 + 10864 05d8 FFF7FEFF bl st_dword + 10865 .LVL1264: +5741:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_write(pdrv, buf, 0, 1) != RES_OK) return FR_DISK_ERR; /* Write it to the MBR */ + 10866 .loc 1 5741 4 view .LVU3649 + 10867 05dc 0999 ldr r1, [sp, #36] + 10868 05de 06F5E570 add r0, r6, #458 + 10869 05e2 FFF7FEFF bl st_dword + 10870 .LVL1265: +5742:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10871 .loc 1 5742 4 view .LVU3650 + ARM GAS /tmp/cc5lWXRL.s page 353 + + +5742:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10872 .loc 1 5742 8 is_stmt 0 view .LVU3651 + 10873 05e6 3B46 mov r3, r7 + 10874 05e8 2A46 mov r2, r5 + 10875 05ea 3146 mov r1, r6 + 10876 05ec 2046 mov r0, r4 + 10877 05ee FFF7FEFF bl disk_write + 10878 .LVL1266: +5742:Middlewares/Third_Party/FatFs/src/ff.c **** } + 10879 .loc 1 5742 7 view .LVU3652 + 10880 05f2 0028 cmp r0, #0 + 10881 05f4 48D1 bne .L779 + 10882 .LVL1267: + 10883 .L742: +5746:Middlewares/Third_Party/FatFs/src/ff.c **** + 10884 .loc 1 5746 2 is_stmt 1 view .LVU3653 +5746:Middlewares/Third_Party/FatFs/src/ff.c **** + 10885 .loc 1 5746 6 is_stmt 0 view .LVU3654 + 10886 05f6 0022 movs r2, #0 + 10887 05f8 1146 mov r1, r2 + 10888 05fa 2046 mov r0, r4 + 10889 05fc FFF7FEFF bl disk_ioctl + 10890 .LVL1268: +5746:Middlewares/Third_Party/FatFs/src/ff.c **** + 10891 .loc 1 5746 5 view .LVU3655 + 10892 0600 48B1 cbz r0, .L700 +5746:Middlewares/Third_Party/FatFs/src/ff.c **** + 10893 .loc 1 5746 55 view .LVU3656 + 10894 0602 0120 movs r0, #1 + 10895 0604 07E0 b .L700 + 10896 .LVL1269: + 10897 .L777: +5713:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 10898 .loc 1 5713 9 view .LVU3657 + 10899 0606 4FF00608 mov r8, #6 + 10900 .LVL1270: +5713:Middlewares/Third_Party/FatFs/src/ff.c **** } else { + 10901 .loc 1 5713 9 view .LVU3658 + 10902 060a B9E7 b .L741 + 10903 .LVL1271: + 10904 .L743: +5328:Middlewares/Third_Party/FatFs/src/ff.c **** if (FatFs[vol]) FatFs[vol]->fs_type = 0; /* Clear the volume */ + 10905 .loc 1 5328 22 view .LVU3659 + 10906 060c 0B20 movs r0, #11 + 10907 .LVL1272: +5328:Middlewares/Third_Party/FatFs/src/ff.c **** if (FatFs[vol]) FatFs[vol]->fs_type = 0; /* Clear the volume */ + 10908 .loc 1 5328 22 view .LVU3660 + 10909 060e 02E0 b .L700 + 10910 .LVL1273: + 10911 .L744: +5335:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; + 10912 .loc 1 5335 32 view .LVU3661 + 10913 0610 0320 movs r0, #3 + 10914 .LVL1274: +5335:Middlewares/Third_Party/FatFs/src/ff.c **** if (stat & STA_PROTECT) return FR_WRITE_PROTECTED; + 10915 .loc 1 5335 32 view .LVU3662 + 10916 0612 00E0 b .L700 + ARM GAS /tmp/cc5lWXRL.s page 354 + + + 10917 .LVL1275: + 10918 .L745: +5336:Middlewares/Third_Party/FatFs/src/ff.c **** if (disk_ioctl(pdrv, GET_BLOCK_SIZE, &sz_blk) != RES_OK || !sz_blk || sz_blk > 32768 || (sz_blk & + 10919 .loc 1 5336 33 view .LVU3663 + 10920 0614 0A20 movs r0, #10 + 10921 .LVL1276: + 10922 .L700: +5749:Middlewares/Third_Party/FatFs/src/ff.c **** + 10923 .loc 1 5749 1 view .LVU3664 + 10924 0616 0DB0 add sp, sp, #52 + 10925 .LCFI113: + 10926 .cfi_remember_state + 10927 .cfi_def_cfa_offset 36 + 10928 @ sp needed + 10929 0618 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 10930 .LVL1277: + 10931 .L746: + 10932 .LCFI114: + 10933 .cfi_restore_state +5339:Middlewares/Third_Party/FatFs/src/ff.c **** if (ss > _MAX_SS || ss < _MIN_SS || (ss & (ss - 1))) return FR_DISK_ERR; + 10934 .loc 1 5339 63 view .LVU3665 + 10935 061c 0120 movs r0, #1 + 10936 061e FAE7 b .L700 + 10937 .L747: +5340:Middlewares/Third_Party/FatFs/src/ff.c **** #else + 10938 .loc 1 5340 62 view .LVU3666 + 10939 0620 0120 movs r0, #1 + 10940 0622 F8E7 b .L700 + 10941 .L748: + 10942 0624 0120 movs r0, #1 + 10943 0626 F6E7 b .L700 + 10944 .L749: +5344:Middlewares/Third_Party/FatFs/src/ff.c **** au /= ss; /* Cluster size in unit of sector */ + 10945 .loc 1 5344 72 view .LVU3667 + 10946 0628 1320 movs r0, #19 + 10947 062a F4E7 b .L700 + 10948 .L750: +5344:Middlewares/Third_Party/FatFs/src/ff.c **** au /= ss; /* Cluster size in unit of sector */ + 10949 .loc 1 5344 72 view .LVU3668 + 10950 062c 1320 movs r0, #19 + 10951 062e F2E7 b .L700 + 10952 .L751: + 10953 0630 1320 movs r0, #19 + 10954 0632 F0E7 b .L700 + 10955 .LVL1278: + 10956 .L752: +5351:Middlewares/Third_Party/FatFs/src/ff.c **** + 10957 .loc 1 5351 23 view .LVU3669 + 10958 0634 0E20 movs r0, #14 + 10959 0636 EEE7 b .L700 + 10960 .L753: +5364:Middlewares/Third_Party/FatFs/src/ff.c **** b_vol = (opt & FM_SFD) ? 0 : 63; /* Volume start sector */ + 10961 .loc 1 5364 69 view .LVU3670 + 10962 0638 0120 movs r0, #1 + 10963 063a ECE7 b .L700 + 10964 .LVL1279: + 10965 .L755: + ARM GAS /tmp/cc5lWXRL.s page 355 + + +5366:Middlewares/Third_Party/FatFs/src/ff.c **** sz_vol -= b_vol; /* Volume size */ + 10966 .loc 1 5366 30 view .LVU3671 + 10967 063c 0E20 movs r0, #14 + 10968 063e EAE7 b .L700 + 10969 .L756: +5369:Middlewares/Third_Party/FatFs/src/ff.c **** + 10970 .loc 1 5369 27 view .LVU3672 + 10971 0640 0E20 movs r0, #14 + 10972 0642 E8E7 b .L700 + 10973 .L757: +5378:Middlewares/Third_Party/FatFs/src/ff.c **** if (opt & FM_FAT32) { /* FAT32 possible? */ + 10974 .loc 1 5378 24 view .LVU3673 + 10975 0644 1320 movs r0, #19 + 10976 0646 E6E7 b .L700 + 10977 .LVL1280: + 10978 .L760: +5384:Middlewares/Third_Party/FatFs/src/ff.c **** fmt = FS_FAT16; + 10979 .loc 1 5384 31 view .LVU3674 + 10980 0648 1320 movs r0, #19 + 10981 064a E4E7 b .L700 + 10982 .L799: + 10983 .align 2 + 10984 .L798: + 10985 064c 00000000 .word .LC1 + 10986 0650 20000000 .word .LC3 + 10987 0654 0C000000 .word .LC2 + 10988 0658 52526141 .word 1096897106 + 10989 065c 72724161 .word 1631679090 + 10990 0660 F8FFFF00 .word 16777208 + 10991 .LVL1281: + 10992 .L762: +5564:Middlewares/Third_Party/FatFs/src/ff.c **** } else { /* FAT12/16 volume */ + 10993 .loc 1 5564 59 view .LVU3675 + 10994 0664 0E20 movs r0, #14 + 10995 0666 D6E7 b .L700 + 10996 .LVL1282: + 10997 .L764: +5593:Middlewares/Third_Party/FatFs/src/ff.c **** n_clst = (sz_vol - sz_rsv - sz_fat * n_fats - sz_dir) / pau; + 10998 .loc 1 5593 51 view .LVU3676 + 10999 0668 0E20 movs r0, #14 + 11000 066a D4E7 b .L700 + 11001 .LVL1283: + 11002 .L765: +5598:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11003 .loc 1 5598 13 view .LVU3677 + 11004 066c 0E20 movs r0, #14 + 11005 066e D2E7 b .L700 + 11006 .LVL1284: + 11007 .L768: +5610:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11008 .loc 1 5610 13 view .LVU3678 + 11009 0670 0E20 movs r0, #14 + 11010 0672 D0E7 b .L700 + 11011 .LVL1285: + 11012 .L769: +5614:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11013 .loc 1 5614 13 view .LVU3679 + ARM GAS /tmp/cc5lWXRL.s page 356 + + + 11014 0674 0E20 movs r0, #14 + 11015 0676 CEE7 b .L700 + 11016 .LVL1286: + 11017 .L770: +5617:Middlewares/Third_Party/FatFs/src/ff.c **** + 11018 .loc 1 5617 54 view .LVU3680 + 11019 0678 0E20 movs r0, #14 + 11020 067a CCE7 b .L700 + 11021 .LVL1287: + 11022 .L772: +5661:Middlewares/Third_Party/FatFs/src/ff.c **** + 11023 .loc 1 5661 57 view .LVU3681 + 11024 067c 0120 movs r0, #1 + 11025 067e CAE7 b .L700 + 11026 .LVL1288: + 11027 .L774: +5690:Middlewares/Third_Party/FatFs/src/ff.c **** mem_set(buf, 0, ss); + 11028 .loc 1 5690 64 view .LVU3682 + 11029 0680 0120 movs r0, #1 + 11030 0682 C8E7 b .L700 + 11031 .LVL1289: + 11032 .L775: +5700:Middlewares/Third_Party/FatFs/src/ff.c **** sect += n; nsect -= n; + 11033 .loc 1 5700 63 view .LVU3683 + 11034 0684 0120 movs r0, #1 + 11035 0686 C6E7 b .L700 + 11036 .LVL1290: + 11037 .L779: +5742:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11038 .loc 1 5742 54 view .LVU3684 + 11039 0688 0120 movs r0, #1 + 11040 068a C4E7 b .L700 + 11041 .cfi_endproc + 11042 .LFE1237: + 11044 .section .text.f_gets,"ax",%progbits + 11045 .align 1 + 11046 .global f_gets + 11047 .syntax unified + 11048 .thumb + 11049 .thumb_func + 11050 .fpu fpv5-d16 + 11052 f_gets: + 11053 .LVL1291: + 11054 .LFB1238: +5835:Middlewares/Third_Party/FatFs/src/ff.c **** int n = 0; + 11055 .loc 1 5835 1 is_stmt 1 view -0 + 11056 .cfi_startproc + 11057 @ args = 0, pretend = 0, frame = 8 + 11058 @ frame_needed = 0, uses_anonymous_args = 0 +5835:Middlewares/Third_Party/FatFs/src/ff.c **** int n = 0; + 11059 .loc 1 5835 1 is_stmt 0 view .LVU3686 + 11060 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 11061 .LCFI115: + 11062 .cfi_def_cfa_offset 24 + 11063 .cfi_offset 4, -24 + 11064 .cfi_offset 5, -20 + 11065 .cfi_offset 6, -16 + ARM GAS /tmp/cc5lWXRL.s page 357 + + + 11066 .cfi_offset 7, -12 + 11067 .cfi_offset 8, -8 + 11068 .cfi_offset 14, -4 + 11069 0004 82B0 sub sp, sp, #8 + 11070 .LCFI116: + 11071 .cfi_def_cfa_offset 32 + 11072 0006 8046 mov r8, r0 + 11073 0008 0E46 mov r6, r1 + 11074 000a 1746 mov r7, r2 +5836:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR c, *p = buff; + 11075 .loc 1 5836 2 is_stmt 1 view .LVU3687 + 11076 .LVL1292: +5837:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE s[2]; + 11077 .loc 1 5837 2 view .LVU3688 +5838:Middlewares/Third_Party/FatFs/src/ff.c **** UINT rc; + 11078 .loc 1 5838 2 view .LVU3689 +5839:Middlewares/Third_Party/FatFs/src/ff.c **** + 11079 .loc 1 5839 2 view .LVU3690 +5842:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE + 11080 .loc 1 5842 2 view .LVU3691 +5837:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE s[2]; + 11081 .loc 1 5837 12 is_stmt 0 view .LVU3692 + 11082 000c 0446 mov r4, r0 +5836:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR c, *p = buff; + 11083 .loc 1 5836 6 view .LVU3693 + 11084 000e 0025 movs r5, #0 +5842:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE + 11085 .loc 1 5842 8 view .LVU3694 + 11086 0010 01E0 b .L801 + 11087 .LVL1293: + 11088 .L806: +5842:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE + 11089 .loc 1 5842 8 view .LVU3695 + 11090 0012 A446 mov ip, r4 + 11091 .LVL1294: + 11092 .L803: +5842:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE + 11093 .loc 1 5842 8 view .LVU3696 + 11094 0014 6446 mov r4, ip + 11095 .LVL1295: + 11096 .L801: +5842:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE + 11097 .loc 1 5842 8 is_stmt 1 view .LVU3697 +5842:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE + 11098 .loc 1 5842 17 is_stmt 0 view .LVU3698 + 11099 0016 731E subs r3, r6, #1 +5842:Middlewares/Third_Party/FatFs/src/ff.c **** #if _LFN_UNICODE + 11100 .loc 1 5842 8 view .LVU3699 + 11101 0018 AB42 cmp r3, r5 + 11102 001a 13DD ble .L802 +5887:Middlewares/Third_Party/FatFs/src/ff.c **** if (rc != 1) break; + 11103 .loc 1 5887 3 is_stmt 1 view .LVU3700 + 11104 001c 6B46 mov r3, sp + 11105 001e 0122 movs r2, #1 + 11106 0020 01A9 add r1, sp, #4 + 11107 0022 3846 mov r0, r7 + 11108 0024 FFF7FEFF bl f_read + ARM GAS /tmp/cc5lWXRL.s page 358 + + + 11109 .LVL1296: +5888:Middlewares/Third_Party/FatFs/src/ff.c **** c = s[0]; + 11110 .loc 1 5888 3 view .LVU3701 +5888:Middlewares/Third_Party/FatFs/src/ff.c **** c = s[0]; + 11111 .loc 1 5888 10 is_stmt 0 view .LVU3702 + 11112 0028 009B ldr r3, [sp] +5888:Middlewares/Third_Party/FatFs/src/ff.c **** c = s[0]; + 11113 .loc 1 5888 6 view .LVU3703 + 11114 002a 012B cmp r3, #1 + 11115 002c 0AD1 bne .L802 +5889:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 11116 .loc 1 5889 3 is_stmt 1 view .LVU3704 +5889:Middlewares/Third_Party/FatFs/src/ff.c **** #endif + 11117 .loc 1 5889 5 is_stmt 0 view .LVU3705 + 11118 002e 9DF80430 ldrb r3, [sp, #4] @ zero_extendqisi2 + 11119 .LVL1297: +5891:Middlewares/Third_Party/FatFs/src/ff.c **** *p++ = c; + 11120 .loc 1 5891 3 is_stmt 1 view .LVU3706 +5891:Middlewares/Third_Party/FatFs/src/ff.c **** *p++ = c; + 11121 .loc 1 5891 6 is_stmt 0 view .LVU3707 + 11122 0032 0D2B cmp r3, #13 + 11123 0034 EDD0 beq .L806 +5892:Middlewares/Third_Party/FatFs/src/ff.c **** n++; + 11124 .loc 1 5892 3 is_stmt 1 view .LVU3708 +5892:Middlewares/Third_Party/FatFs/src/ff.c **** n++; + 11125 .loc 1 5892 5 is_stmt 0 view .LVU3709 + 11126 0036 A446 mov ip, r4 + 11127 .LVL1298: +5892:Middlewares/Third_Party/FatFs/src/ff.c **** n++; + 11128 .loc 1 5892 8 view .LVU3710 + 11129 0038 0CF8013B strb r3, [ip], #1 + 11130 .LVL1299: +5893:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == '\n') break; /* Break on EOL */ + 11131 .loc 1 5893 3 is_stmt 1 view .LVU3711 +5893:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == '\n') break; /* Break on EOL */ + 11132 .loc 1 5893 4 is_stmt 0 view .LVU3712 + 11133 003c 0135 adds r5, r5, #1 + 11134 .LVL1300: +5894:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11135 .loc 1 5894 3 is_stmt 1 view .LVU3713 +5894:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11136 .loc 1 5894 6 is_stmt 0 view .LVU3714 + 11137 003e 0A2B cmp r3, #10 + 11138 0040 E8D1 bne .L803 +5892:Middlewares/Third_Party/FatFs/src/ff.c **** n++; + 11139 .loc 1 5892 5 view .LVU3715 + 11140 0042 6446 mov r4, ip + 11141 .LVL1301: + 11142 .L802: +5896:Middlewares/Third_Party/FatFs/src/ff.c **** return n ? buff : 0; /* When no data read (eof or error), return with error. */ + 11143 .loc 1 5896 2 is_stmt 1 view .LVU3716 +5896:Middlewares/Third_Party/FatFs/src/ff.c **** return n ? buff : 0; /* When no data read (eof or error), return with error. */ + 11144 .loc 1 5896 5 is_stmt 0 view .LVU3717 + 11145 0044 0023 movs r3, #0 + 11146 0046 2370 strb r3, [r4] +5897:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11147 .loc 1 5897 2 is_stmt 1 view .LVU3718 + ARM GAS /tmp/cc5lWXRL.s page 359 + + +5897:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11148 .loc 1 5897 18 is_stmt 0 view .LVU3719 + 11149 0048 1DB1 cbz r5, .L808 +5897:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11150 .loc 1 5897 18 view .LVU3720 + 11151 004a 4046 mov r0, r8 + 11152 .L800: +5898:Middlewares/Third_Party/FatFs/src/ff.c **** + 11153 .loc 1 5898 1 view .LVU3721 + 11154 004c 02B0 add sp, sp, #8 + 11155 .LCFI117: + 11156 .cfi_remember_state + 11157 .cfi_def_cfa_offset 24 + 11158 @ sp needed + 11159 004e BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 11160 .LVL1302: + 11161 .L808: + 11162 .LCFI118: + 11163 .cfi_restore_state +5897:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11164 .loc 1 5897 18 view .LVU3722 + 11165 0052 0020 movs r0, #0 + 11166 0054 FAE7 b .L800 + 11167 .cfi_endproc + 11168 .LFE1238: + 11170 .section .text.f_putc,"ax",%progbits + 11171 .align 1 + 11172 .global f_putc + 11173 .syntax unified + 11174 .thumb + 11175 .thumb_func + 11176 .fpu fpv5-d16 + 11178 f_putc: + 11179 .LVL1303: + 11180 .LFB1242: +5995:Middlewares/Third_Party/FatFs/src/ff.c **** +5996:Middlewares/Third_Party/FatFs/src/ff.c **** +5997:Middlewares/Third_Party/FatFs/src/ff.c **** +5998:Middlewares/Third_Party/FatFs/src/ff.c **** int f_putc ( +5999:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR c, /* A character to be output */ +6000:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp /* Pointer to the file object */ +6001:Middlewares/Third_Party/FatFs/src/ff.c **** ) +6002:Middlewares/Third_Party/FatFs/src/ff.c **** { + 11181 .loc 1 6002 1 is_stmt 1 view -0 + 11182 .cfi_startproc + 11183 @ args = 0, pretend = 0, frame = 80 + 11184 @ frame_needed = 0, uses_anonymous_args = 0 + 11185 .loc 1 6002 1 is_stmt 0 view .LVU3724 + 11186 0000 10B5 push {r4, lr} + 11187 .LCFI119: + 11188 .cfi_def_cfa_offset 8 + 11189 .cfi_offset 4, -8 + 11190 .cfi_offset 14, -4 + 11191 0002 94B0 sub sp, sp, #80 + 11192 .LCFI120: + 11193 .cfi_def_cfa_offset 88 + 11194 0004 0446 mov r4, r0 + ARM GAS /tmp/cc5lWXRL.s page 360 + + +6003:Middlewares/Third_Party/FatFs/src/ff.c **** putbuff pb; + 11195 .loc 1 6003 2 is_stmt 1 view .LVU3725 +6004:Middlewares/Third_Party/FatFs/src/ff.c **** +6005:Middlewares/Third_Party/FatFs/src/ff.c **** +6006:Middlewares/Third_Party/FatFs/src/ff.c **** putc_init(&pb, fp); + 11196 .loc 1 6006 2 view .LVU3726 + 11197 0006 01A8 add r0, sp, #4 + 11198 .LVL1304: + 11199 .loc 1 6006 2 is_stmt 0 view .LVU3727 + 11200 0008 FFF7FEFF bl putc_init + 11201 .LVL1305: +6007:Middlewares/Third_Party/FatFs/src/ff.c **** putc_bfd(&pb, c); /* Put the character */ + 11202 .loc 1 6007 2 is_stmt 1 view .LVU3728 + 11203 000c 2146 mov r1, r4 + 11204 000e 01A8 add r0, sp, #4 + 11205 0010 FFF7FEFF bl putc_bfd + 11206 .LVL1306: +6008:Middlewares/Third_Party/FatFs/src/ff.c **** return putc_flush(&pb); + 11207 .loc 1 6008 2 view .LVU3729 + 11208 .loc 1 6008 9 is_stmt 0 view .LVU3730 + 11209 0014 01A8 add r0, sp, #4 + 11210 0016 FFF7FEFF bl putc_flush + 11211 .LVL1307: +6009:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11212 .loc 1 6009 1 view .LVU3731 + 11213 001a 14B0 add sp, sp, #80 + 11214 .LCFI121: + 11215 .cfi_def_cfa_offset 8 + 11216 @ sp needed + 11217 001c 10BD pop {r4, pc} + 11218 .cfi_endproc + 11219 .LFE1242: + 11221 .section .text.f_puts,"ax",%progbits + 11222 .align 1 + 11223 .global f_puts + 11224 .syntax unified + 11225 .thumb + 11226 .thumb_func + 11227 .fpu fpv5-d16 + 11229 f_puts: + 11230 .LVL1308: + 11231 .LFB1243: +6010:Middlewares/Third_Party/FatFs/src/ff.c **** +6011:Middlewares/Third_Party/FatFs/src/ff.c **** +6012:Middlewares/Third_Party/FatFs/src/ff.c **** +6013:Middlewares/Third_Party/FatFs/src/ff.c **** +6014:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +6015:Middlewares/Third_Party/FatFs/src/ff.c **** /* Put a string to the file */ +6016:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +6017:Middlewares/Third_Party/FatFs/src/ff.c **** +6018:Middlewares/Third_Party/FatFs/src/ff.c **** int f_puts ( +6019:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* str, /* Pointer to the string to be output */ +6020:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp /* Pointer to the file object */ +6021:Middlewares/Third_Party/FatFs/src/ff.c **** ) +6022:Middlewares/Third_Party/FatFs/src/ff.c **** { + 11232 .loc 1 6022 1 is_stmt 1 view -0 + 11233 .cfi_startproc + ARM GAS /tmp/cc5lWXRL.s page 361 + + + 11234 @ args = 0, pretend = 0, frame = 80 + 11235 @ frame_needed = 0, uses_anonymous_args = 0 + 11236 .loc 1 6022 1 is_stmt 0 view .LVU3733 + 11237 0000 10B5 push {r4, lr} + 11238 .LCFI122: + 11239 .cfi_def_cfa_offset 8 + 11240 .cfi_offset 4, -8 + 11241 .cfi_offset 14, -4 + 11242 0002 94B0 sub sp, sp, #80 + 11243 .LCFI123: + 11244 .cfi_def_cfa_offset 88 + 11245 0004 0446 mov r4, r0 +6023:Middlewares/Third_Party/FatFs/src/ff.c **** putbuff pb; + 11246 .loc 1 6023 2 is_stmt 1 view .LVU3734 +6024:Middlewares/Third_Party/FatFs/src/ff.c **** +6025:Middlewares/Third_Party/FatFs/src/ff.c **** +6026:Middlewares/Third_Party/FatFs/src/ff.c **** putc_init(&pb, fp); + 11247 .loc 1 6026 2 view .LVU3735 + 11248 0006 01A8 add r0, sp, #4 + 11249 .LVL1309: + 11250 .loc 1 6026 2 is_stmt 0 view .LVU3736 + 11251 0008 FFF7FEFF bl putc_init + 11252 .LVL1310: +6027:Middlewares/Third_Party/FatFs/src/ff.c **** while (*str) putc_bfd(&pb, *str++); /* Put the string */ + 11253 .loc 1 6027 2 is_stmt 1 view .LVU3737 + 11254 .loc 1 6027 8 is_stmt 0 view .LVU3738 + 11255 000c 03E0 b .L813 + 11256 .L814: + 11257 .loc 1 6027 15 is_stmt 1 discriminator 2 view .LVU3739 + 11258 .loc 1 6027 33 is_stmt 0 discriminator 2 view .LVU3740 + 11259 000e 0134 adds r4, r4, #1 + 11260 .LVL1311: + 11261 .loc 1 6027 15 discriminator 2 view .LVU3741 + 11262 0010 01A8 add r0, sp, #4 + 11263 0012 FFF7FEFF bl putc_bfd + 11264 .LVL1312: + 11265 .L813: + 11266 .loc 1 6027 8 is_stmt 1 discriminator 1 view .LVU3742 + 11267 .loc 1 6027 9 is_stmt 0 discriminator 1 view .LVU3743 + 11268 0016 2178 ldrb r1, [r4] @ zero_extendqisi2 + 11269 .loc 1 6027 8 discriminator 1 view .LVU3744 + 11270 0018 0029 cmp r1, #0 + 11271 001a F8D1 bne .L814 +6028:Middlewares/Third_Party/FatFs/src/ff.c **** return putc_flush(&pb); + 11272 .loc 1 6028 2 is_stmt 1 view .LVU3745 + 11273 .loc 1 6028 9 is_stmt 0 view .LVU3746 + 11274 001c 01A8 add r0, sp, #4 + 11275 001e FFF7FEFF bl putc_flush + 11276 .LVL1313: +6029:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11277 .loc 1 6029 1 view .LVU3747 + 11278 0022 14B0 add sp, sp, #80 + 11279 .LCFI124: + 11280 .cfi_def_cfa_offset 8 + 11281 @ sp needed + 11282 0024 10BD pop {r4, pc} + 11283 .loc 1 6029 1 view .LVU3748 + ARM GAS /tmp/cc5lWXRL.s page 362 + + + 11284 .cfi_endproc + 11285 .LFE1243: + 11287 .section .text.f_printf,"ax",%progbits + 11288 .align 1 + 11289 .global f_printf + 11290 .syntax unified + 11291 .thumb + 11292 .thumb_func + 11293 .fpu fpv5-d16 + 11295 f_printf: + 11296 .LVL1314: + 11297 .LFB1244: +6030:Middlewares/Third_Party/FatFs/src/ff.c **** +6031:Middlewares/Third_Party/FatFs/src/ff.c **** +6032:Middlewares/Third_Party/FatFs/src/ff.c **** +6033:Middlewares/Third_Party/FatFs/src/ff.c **** +6034:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +6035:Middlewares/Third_Party/FatFs/src/ff.c **** /* Put a formatted string to the file */ +6036:Middlewares/Third_Party/FatFs/src/ff.c **** /*-----------------------------------------------------------------------*/ +6037:Middlewares/Third_Party/FatFs/src/ff.c **** +6038:Middlewares/Third_Party/FatFs/src/ff.c **** int f_printf ( +6039:Middlewares/Third_Party/FatFs/src/ff.c **** FIL* fp, /* Pointer to the file object */ +6040:Middlewares/Third_Party/FatFs/src/ff.c **** const TCHAR* fmt, /* Pointer to the format string */ +6041:Middlewares/Third_Party/FatFs/src/ff.c **** ... /* Optional arguments... */ +6042:Middlewares/Third_Party/FatFs/src/ff.c **** ) +6043:Middlewares/Third_Party/FatFs/src/ff.c **** { + 11298 .loc 1 6043 1 is_stmt 1 view -0 + 11299 .cfi_startproc + 11300 @ args = 4, pretend = 12, frame = 112 + 11301 @ frame_needed = 0, uses_anonymous_args = 1 + 11302 .loc 1 6043 1 is_stmt 0 view .LVU3750 + 11303 0000 0EB4 push {r1, r2, r3} + 11304 .LCFI125: + 11305 .cfi_def_cfa_offset 12 + 11306 .cfi_offset 1, -12 + 11307 .cfi_offset 2, -8 + 11308 .cfi_offset 3, -4 + 11309 0002 2DE9F047 push {r4, r5, r6, r7, r8, r9, r10, lr} + 11310 .LCFI126: + 11311 .cfi_def_cfa_offset 44 + 11312 .cfi_offset 4, -44 + 11313 .cfi_offset 5, -40 + 11314 .cfi_offset 6, -36 + 11315 .cfi_offset 7, -32 + 11316 .cfi_offset 8, -28 + 11317 .cfi_offset 9, -24 + 11318 .cfi_offset 10, -20 + 11319 .cfi_offset 14, -16 + 11320 0006 9DB0 sub sp, sp, #116 + 11321 .LCFI127: + 11322 .cfi_def_cfa_offset 160 + 11323 0008 0146 mov r1, r0 + 11324 000a 25AC add r4, sp, #148 + 11325 000c 54F8045B ldr r5, [r4], #4 +6044:Middlewares/Third_Party/FatFs/src/ff.c **** va_list arp; + 11326 .loc 1 6044 2 is_stmt 1 view .LVU3751 +6045:Middlewares/Third_Party/FatFs/src/ff.c **** putbuff pb; + ARM GAS /tmp/cc5lWXRL.s page 363 + + + 11327 .loc 1 6045 2 view .LVU3752 +6046:Middlewares/Third_Party/FatFs/src/ff.c **** BYTE f, r; + 11328 .loc 1 6046 2 view .LVU3753 +6047:Middlewares/Third_Party/FatFs/src/ff.c **** UINT i, j, w; + 11329 .loc 1 6047 2 view .LVU3754 +6048:Middlewares/Third_Party/FatFs/src/ff.c **** DWORD v; + 11330 .loc 1 6048 2 view .LVU3755 +6049:Middlewares/Third_Party/FatFs/src/ff.c **** TCHAR c, d, str[32], *p; + 11331 .loc 1 6049 2 view .LVU3756 +6050:Middlewares/Third_Party/FatFs/src/ff.c **** +6051:Middlewares/Third_Party/FatFs/src/ff.c **** +6052:Middlewares/Third_Party/FatFs/src/ff.c **** putc_init(&pb, fp); + 11332 .loc 1 6052 2 view .LVU3757 + 11333 0010 08A8 add r0, sp, #32 + 11334 0012 FFF7FEFF bl putc_init + 11335 .LVL1315: +6053:Middlewares/Third_Party/FatFs/src/ff.c **** +6054:Middlewares/Third_Party/FatFs/src/ff.c **** va_start(arp, fmt); + 11336 .loc 1 6054 2 view .LVU3758 + 11337 0016 1B94 str r4, [sp, #108] + 11338 .LVL1316: + 11339 .L817: +6055:Middlewares/Third_Party/FatFs/src/ff.c **** +6056:Middlewares/Third_Party/FatFs/src/ff.c **** for (;;) { + 11340 .loc 1 6056 2 view .LVU3759 +6057:Middlewares/Third_Party/FatFs/src/ff.c **** c = *fmt++; + 11341 .loc 1 6057 3 view .LVU3760 + 11342 .loc 1 6057 11 is_stmt 0 view .LVU3761 + 11343 0018 2C46 mov r4, r5 + 11344 .LVL1317: + 11345 .loc 1 6057 5 view .LVU3762 + 11346 001a 14F8011B ldrb r1, [r4], #1 @ zero_extendqisi2 + 11347 .LVL1318: +6058:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0) break; /* End of string */ + 11348 .loc 1 6058 3 is_stmt 1 view .LVU3763 + 11349 .loc 1 6058 6 is_stmt 0 view .LVU3764 + 11350 001e 0029 cmp r1, #0 + 11351 0020 00F00481 beq .L818 +6059:Middlewares/Third_Party/FatFs/src/ff.c **** if (c != '%') { /* Non escape character */ + 11352 .loc 1 6059 3 is_stmt 1 view .LVU3765 + 11353 .loc 1 6059 6 is_stmt 0 view .LVU3766 + 11354 0024 2529 cmp r1, #37 + 11355 0026 04D0 beq .L819 +6060:Middlewares/Third_Party/FatFs/src/ff.c **** putc_bfd(&pb, c); + 11356 .loc 1 6060 4 is_stmt 1 view .LVU3767 + 11357 0028 08A8 add r0, sp, #32 + 11358 002a FFF7FEFF bl putc_bfd + 11359 .LVL1319: +6061:Middlewares/Third_Party/FatFs/src/ff.c **** continue; + 11360 .loc 1 6061 4 view .LVU3768 +6057:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 0) break; /* End of string */ + 11361 .loc 1 6057 11 is_stmt 0 view .LVU3769 + 11362 002e 2546 mov r5, r4 + 11363 .loc 1 6061 4 view .LVU3770 + 11364 0030 F2E7 b .L817 + 11365 .LVL1320: + 11366 .L819: + ARM GAS /tmp/cc5lWXRL.s page 364 + + +6062:Middlewares/Third_Party/FatFs/src/ff.c **** } +6063:Middlewares/Third_Party/FatFs/src/ff.c **** w = f = 0; + 11367 .loc 1 6063 3 is_stmt 1 view .LVU3771 +6064:Middlewares/Third_Party/FatFs/src/ff.c **** c = *fmt++; + 11368 .loc 1 6064 3 view .LVU3772 + 11369 .loc 1 6064 11 is_stmt 0 view .LVU3773 + 11370 0032 0235 adds r5, r5, #2 + 11371 .LVL1321: + 11372 .loc 1 6064 5 view .LVU3774 + 11373 0034 2178 ldrb r1, [r4] @ zero_extendqisi2 + 11374 .LVL1322: +6065:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == '0') { /* Flag: '0' padding */ + 11375 .loc 1 6065 3 is_stmt 1 view .LVU3775 + 11376 .loc 1 6065 6 is_stmt 0 view .LVU3776 + 11377 0036 3029 cmp r1, #48 + 11378 0038 04D0 beq .L866 +6066:Middlewares/Third_Party/FatFs/src/ff.c **** f = 1; c = *fmt++; +6067:Middlewares/Third_Party/FatFs/src/ff.c **** } else { +6068:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == '-') { /* Flag: left justified */ + 11379 .loc 1 6068 4 is_stmt 1 view .LVU3777 + 11380 .loc 1 6068 7 is_stmt 0 view .LVU3778 + 11381 003a 2D29 cmp r1, #45 + 11382 003c 06D0 beq .L867 +6063:Middlewares/Third_Party/FatFs/src/ff.c **** c = *fmt++; + 11383 .loc 1 6063 9 view .LVU3779 + 11384 003e 0026 movs r6, #0 + 11385 .LVL1323: + 11386 .L822: +6063:Middlewares/Third_Party/FatFs/src/ff.c **** c = *fmt++; + 11387 .loc 1 6063 9 view .LVU3780 + 11388 0040 0024 movs r4, #0 + 11389 0042 0EE0 b .L823 + 11390 .LVL1324: + 11391 .L866: +6066:Middlewares/Third_Party/FatFs/src/ff.c **** f = 1; c = *fmt++; + 11392 .loc 1 6066 4 is_stmt 1 view .LVU3781 +6066:Middlewares/Third_Party/FatFs/src/ff.c **** f = 1; c = *fmt++; + 11393 .loc 1 6066 11 view .LVU3782 +6066:Middlewares/Third_Party/FatFs/src/ff.c **** f = 1; c = *fmt++; + 11394 .loc 1 6066 19 is_stmt 0 view .LVU3783 + 11395 0044 A51C adds r5, r4, #2 + 11396 .LVL1325: +6066:Middlewares/Third_Party/FatFs/src/ff.c **** f = 1; c = *fmt++; + 11397 .loc 1 6066 13 view .LVU3784 + 11398 0046 6178 ldrb r1, [r4, #1] @ zero_extendqisi2 + 11399 .LVL1326: +6066:Middlewares/Third_Party/FatFs/src/ff.c **** f = 1; c = *fmt++; + 11400 .loc 1 6066 6 view .LVU3785 + 11401 0048 0126 movs r6, #1 + 11402 004a F9E7 b .L822 + 11403 .LVL1327: + 11404 .L867: +6069:Middlewares/Third_Party/FatFs/src/ff.c **** f = 2; c = *fmt++; + 11405 .loc 1 6069 5 is_stmt 1 view .LVU3786 + 11406 .loc 1 6069 12 view .LVU3787 + 11407 .loc 1 6069 20 is_stmt 0 view .LVU3788 + 11408 004c A51C adds r5, r4, #2 + ARM GAS /tmp/cc5lWXRL.s page 365 + + + 11409 .LVL1328: + 11410 .loc 1 6069 14 view .LVU3789 + 11411 004e 6178 ldrb r1, [r4, #1] @ zero_extendqisi2 + 11412 .LVL1329: + 11413 .loc 1 6069 7 view .LVU3790 + 11414 0050 0226 movs r6, #2 + 11415 0052 F5E7 b .L822 + 11416 .LVL1330: + 11417 .L824: +6070:Middlewares/Third_Party/FatFs/src/ff.c **** } +6071:Middlewares/Third_Party/FatFs/src/ff.c **** } +6072:Middlewares/Third_Party/FatFs/src/ff.c **** while (IsDigit(c)) { /* Precision */ +6073:Middlewares/Third_Party/FatFs/src/ff.c **** w = w * 10 + c - '0'; + 11418 .loc 1 6073 4 is_stmt 1 view .LVU3791 + 11419 .loc 1 6073 10 is_stmt 0 view .LVU3792 + 11420 0054 04EB8404 add r4, r4, r4, lsl #2 + 11421 .LVL1331: + 11422 .loc 1 6073 15 view .LVU3793 + 11423 0058 01EB4404 add r4, r1, r4, lsl #1 + 11424 .loc 1 6073 6 view .LVU3794 + 11425 005c 303C subs r4, r4, #48 + 11426 .LVL1332: +6074:Middlewares/Third_Party/FatFs/src/ff.c **** c = *fmt++; + 11427 .loc 1 6074 4 is_stmt 1 view .LVU3795 + 11428 .loc 1 6074 6 is_stmt 0 view .LVU3796 + 11429 005e 15F8011B ldrb r1, [r5], #1 @ zero_extendqisi2 + 11430 .LVL1333: + 11431 .L823: +6072:Middlewares/Third_Party/FatFs/src/ff.c **** w = w * 10 + c - '0'; + 11432 .loc 1 6072 9 is_stmt 1 view .LVU3797 +6072:Middlewares/Third_Party/FatFs/src/ff.c **** w = w * 10 + c - '0'; + 11433 .loc 1 6072 10 is_stmt 0 view .LVU3798 + 11434 0062 A1F13003 sub r3, r1, #48 + 11435 0066 DBB2 uxtb r3, r3 +6072:Middlewares/Third_Party/FatFs/src/ff.c **** w = w * 10 + c - '0'; + 11436 .loc 1 6072 9 view .LVU3799 + 11437 0068 092B cmp r3, #9 + 11438 006a F3D9 bls .L824 +6075:Middlewares/Third_Party/FatFs/src/ff.c **** } +6076:Middlewares/Third_Party/FatFs/src/ff.c **** if (c == 'l' || c == 'L') { /* Prefix: Size is long int */ + 11439 .loc 1 6076 3 is_stmt 1 view .LVU3800 + 11440 .loc 1 6076 6 is_stmt 0 view .LVU3801 + 11441 006c 4C29 cmp r1, #76 + 11442 006e 18BF it ne + 11443 0070 6C29 cmpne r1, #108 + 11444 0072 03D1 bne .L825 +6077:Middlewares/Third_Party/FatFs/src/ff.c **** f |= 4; c = *fmt++; + 11445 .loc 1 6077 4 is_stmt 1 view .LVU3802 + 11446 .loc 1 6077 6 is_stmt 0 view .LVU3803 + 11447 0074 46F00406 orr r6, r6, #4 + 11448 .LVL1334: + 11449 .loc 1 6077 12 is_stmt 1 view .LVU3804 + 11450 .loc 1 6077 14 is_stmt 0 view .LVU3805 + 11451 0078 15F8011B ldrb r1, [r5], #1 @ zero_extendqisi2 + 11452 .LVL1335: + 11453 .L825: +6078:Middlewares/Third_Party/FatFs/src/ff.c **** } + ARM GAS /tmp/cc5lWXRL.s page 366 + + +6079:Middlewares/Third_Party/FatFs/src/ff.c **** if (!c) break; + 11454 .loc 1 6079 3 is_stmt 1 view .LVU3806 + 11455 .loc 1 6079 6 is_stmt 0 view .LVU3807 + 11456 007c 0029 cmp r1, #0 + 11457 007e 00F0D580 beq .L818 +6080:Middlewares/Third_Party/FatFs/src/ff.c **** d = c; + 11458 .loc 1 6080 3 is_stmt 1 view .LVU3808 + 11459 .LVL1336: +6081:Middlewares/Third_Party/FatFs/src/ff.c **** if (IsLower(d)) d -= 0x20; + 11460 .loc 1 6081 3 view .LVU3809 + 11461 .loc 1 6081 7 is_stmt 0 view .LVU3810 + 11462 0082 A1F16103 sub r3, r1, #97 + 11463 0086 DBB2 uxtb r3, r3 + 11464 .loc 1 6081 6 view .LVU3811 + 11465 0088 192B cmp r3, #25 + 11466 008a 14D8 bhi .L860 + 11467 .loc 1 6081 19 is_stmt 1 discriminator 1 view .LVU3812 + 11468 .loc 1 6081 21 is_stmt 0 discriminator 1 view .LVU3813 + 11469 008c A1F12003 sub r3, r1, #32 + 11470 0090 DBB2 uxtb r3, r3 + 11471 .LVL1337: + 11472 .L826: +6082:Middlewares/Third_Party/FatFs/src/ff.c **** switch (d) { /* Type is... */ + 11473 .loc 1 6082 3 is_stmt 1 view .LVU3814 + 11474 0092 A3F14202 sub r2, r3, #66 + 11475 0096 162A cmp r2, #22 + 11476 0098 5DD8 bhi .L827 + 11477 009a DFE802F0 tbb [pc, r2] + 11478 .L829: + 11479 009e 60 .byte (.L834-.L829)/2 + 11480 009f 3D .byte (.L833-.L829)/2 + 11481 00a0 45 .byte (.L830-.L829)/2 + 11482 00a1 5C .byte (.L827-.L829)/2 + 11483 00a2 5C .byte (.L827-.L829)/2 + 11484 00a3 5C .byte (.L827-.L829)/2 + 11485 00a4 5C .byte (.L827-.L829)/2 + 11486 00a5 5C .byte (.L827-.L829)/2 + 11487 00a6 5C .byte (.L827-.L829)/2 + 11488 00a7 5C .byte (.L827-.L829)/2 + 11489 00a8 5C .byte (.L827-.L829)/2 + 11490 00a9 5C .byte (.L827-.L829)/2 + 11491 00aa 5C .byte (.L827-.L829)/2 + 11492 00ab 62 .byte (.L861-.L829)/2 + 11493 00ac 5C .byte (.L827-.L829)/2 + 11494 00ad 5C .byte (.L827-.L829)/2 + 11495 00ae 5C .byte (.L827-.L829)/2 + 11496 00af 0E .byte (.L831-.L829)/2 + 11497 00b0 5C .byte (.L827-.L829)/2 + 11498 00b1 45 .byte (.L830-.L829)/2 + 11499 00b2 5C .byte (.L827-.L829)/2 + 11500 00b3 5C .byte (.L827-.L829)/2 + 11501 00b4 5A .byte (.L828-.L829)/2 + 11502 .LVL1338: + 11503 00b5 00 .p2align 1 + 11504 .L860: +6080:Middlewares/Third_Party/FatFs/src/ff.c **** d = c; + 11505 .loc 1 6080 5 is_stmt 0 view .LVU3815 + ARM GAS /tmp/cc5lWXRL.s page 367 + + + 11506 00b6 0B46 mov r3, r1 + 11507 00b8 EBE7 b .L826 + 11508 .LVL1339: + 11509 .L831: +6083:Middlewares/Third_Party/FatFs/src/ff.c **** case 'S' : /* String */ +6084:Middlewares/Third_Party/FatFs/src/ff.c **** p = va_arg(arp, TCHAR*); + 11510 .loc 1 6084 4 is_stmt 1 view .LVU3816 + 11511 .loc 1 6084 6 is_stmt 0 view .LVU3817 + 11512 00ba 1B9B ldr r3, [sp, #108] + 11513 .LVL1340: + 11514 .loc 1 6084 6 view .LVU3818 + 11515 00bc 1A1D adds r2, r3, #4 + 11516 00be 1B92 str r2, [sp, #108] + 11517 00c0 D3F80080 ldr r8, [r3] +6085:Middlewares/Third_Party/FatFs/src/ff.c **** for (j = 0; p[j]; j++) ; + 11518 .loc 1 6085 4 is_stmt 1 view .LVU3819 + 11519 .LVL1341: + 11520 .loc 1 6085 11 is_stmt 0 view .LVU3820 + 11521 00c4 0027 movs r7, #0 + 11522 .loc 1 6085 4 view .LVU3821 + 11523 00c6 00E0 b .L835 + 11524 .LVL1342: + 11525 .L836: + 11526 .loc 1 6085 27 is_stmt 1 discriminator 3 view .LVU3822 + 11527 .loc 1 6085 22 discriminator 3 view .LVU3823 + 11528 .loc 1 6085 23 is_stmt 0 discriminator 3 view .LVU3824 + 11529 00c8 0137 adds r7, r7, #1 + 11530 .LVL1343: + 11531 .L835: + 11532 .loc 1 6085 16 is_stmt 1 discriminator 1 view .LVU3825 + 11533 .loc 1 6085 17 is_stmt 0 discriminator 1 view .LVU3826 + 11534 00ca 18F80730 ldrb r3, [r8, r7] @ zero_extendqisi2 + 11535 .loc 1 6085 4 discriminator 1 view .LVU3827 + 11536 00ce 002B cmp r3, #0 + 11537 00d0 FAD1 bne .L836 +6086:Middlewares/Third_Party/FatFs/src/ff.c **** if (!(f & 2)) { + 11538 .loc 1 6086 4 is_stmt 1 view .LVU3828 + 11539 .loc 1 6086 7 is_stmt 0 view .LVU3829 + 11540 00d2 16F0020F tst r6, #2 + 11541 00d6 10D1 bne .L840 + 11542 00d8 05E0 b .L837 + 11543 .LVL1344: + 11544 .L839: +6087:Middlewares/Third_Party/FatFs/src/ff.c **** while (j++ < w) putc_bfd(&pb, ' '); + 11545 .loc 1 6087 21 is_stmt 1 discriminator 2 view .LVU3830 + 11546 00da 2021 movs r1, #32 + 11547 00dc 0DEB0100 add r0, sp, r1 + 11548 00e0 FFF7FEFF bl putc_bfd + 11549 .LVL1345: + 11550 .loc 1 6087 13 is_stmt 0 discriminator 2 view .LVU3831 + 11551 00e4 3746 mov r7, r6 + 11552 .LVL1346: + 11553 .L837: + 11554 .loc 1 6087 11 is_stmt 1 discriminator 1 view .LVU3832 + 11555 .loc 1 6087 13 is_stmt 0 discriminator 1 view .LVU3833 + 11556 00e6 7E1C adds r6, r7, #1 + 11557 .LVL1347: + ARM GAS /tmp/cc5lWXRL.s page 368 + + + 11558 .loc 1 6087 11 discriminator 1 view .LVU3834 + 11559 00e8 A742 cmp r7, r4 + 11560 00ea F6D3 bcc .L839 + 11561 .loc 1 6087 13 view .LVU3835 + 11562 00ec 3746 mov r7, r6 + 11563 00ee 04E0 b .L840 + 11564 .LVL1348: + 11565 .L841: +6088:Middlewares/Third_Party/FatFs/src/ff.c **** } +6089:Middlewares/Third_Party/FatFs/src/ff.c **** while (*p) putc_bfd(&pb, *p++); + 11566 .loc 1 6089 15 is_stmt 1 discriminator 2 view .LVU3836 + 11567 .loc 1 6089 31 is_stmt 0 discriminator 2 view .LVU3837 + 11568 00f0 08F10108 add r8, r8, #1 + 11569 .LVL1349: + 11570 .loc 1 6089 15 discriminator 2 view .LVU3838 + 11571 00f4 08A8 add r0, sp, #32 + 11572 00f6 FFF7FEFF bl putc_bfd + 11573 .LVL1350: + 11574 .L840: + 11575 .loc 1 6089 10 is_stmt 1 discriminator 1 view .LVU3839 + 11576 .loc 1 6089 11 is_stmt 0 discriminator 1 view .LVU3840 + 11577 00fa 98F80010 ldrb r1, [r8] @ zero_extendqisi2 + 11578 .loc 1 6089 10 discriminator 1 view .LVU3841 + 11579 00fe 0029 cmp r1, #0 + 11580 0100 F6D1 bne .L841 + 11581 .loc 1 6089 10 discriminator 1 view .LVU3842 + 11582 0102 05E0 b .L842 + 11583 .LVL1351: + 11584 .L843: +6090:Middlewares/Third_Party/FatFs/src/ff.c **** while (j++ < w) putc_bfd(&pb, ' '); + 11585 .loc 1 6090 20 is_stmt 1 discriminator 2 view .LVU3843 + 11586 0104 2021 movs r1, #32 + 11587 0106 0DEB0100 add r0, sp, r1 + 11588 010a FFF7FEFF bl putc_bfd + 11589 .LVL1352: + 11590 .loc 1 6090 12 is_stmt 0 discriminator 2 view .LVU3844 + 11591 010e 3746 mov r7, r6 + 11592 .LVL1353: + 11593 .L842: + 11594 .loc 1 6090 10 is_stmt 1 discriminator 1 view .LVU3845 + 11595 .loc 1 6090 12 is_stmt 0 discriminator 1 view .LVU3846 + 11596 0110 7E1C adds r6, r7, #1 + 11597 .LVL1354: + 11598 .loc 1 6090 10 discriminator 1 view .LVU3847 + 11599 0112 A742 cmp r7, r4 + 11600 0114 F6D3 bcc .L843 + 11601 0116 7FE7 b .L817 + 11602 .LVL1355: + 11603 .L833: +6091:Middlewares/Third_Party/FatFs/src/ff.c **** continue; +6092:Middlewares/Third_Party/FatFs/src/ff.c **** +6093:Middlewares/Third_Party/FatFs/src/ff.c **** case 'C' : /* Character */ +6094:Middlewares/Third_Party/FatFs/src/ff.c **** putc_bfd(&pb, (TCHAR)va_arg(arp, int)); continue; + 11604 .loc 1 6094 4 is_stmt 1 view .LVU3848 + 11605 .loc 1 6094 25 is_stmt 0 view .LVU3849 + 11606 0118 1B9B ldr r3, [sp, #108] + 11607 .LVL1356: + ARM GAS /tmp/cc5lWXRL.s page 369 + + + 11608 .loc 1 6094 25 view .LVU3850 + 11609 011a 1A1D adds r2, r3, #4 + 11610 011c 1B92 str r2, [sp, #108] + 11611 .loc 1 6094 4 view .LVU3851 + 11612 011e 1978 ldrb r1, [r3] @ zero_extendqisi2 + 11613 .LVL1357: + 11614 .loc 1 6094 4 view .LVU3852 + 11615 0120 08A8 add r0, sp, #32 + 11616 0122 FFF7FEFF bl putc_bfd + 11617 .LVL1358: + 11618 .loc 1 6094 44 is_stmt 1 view .LVU3853 + 11619 .loc 1 6094 4 is_stmt 0 view .LVU3854 + 11620 0126 77E7 b .L817 + 11621 .LVL1359: + 11622 .L830: +6095:Middlewares/Third_Party/FatFs/src/ff.c **** +6096:Middlewares/Third_Party/FatFs/src/ff.c **** case 'B' : /* Binary */ +6097:Middlewares/Third_Party/FatFs/src/ff.c **** r = 2; break; +6098:Middlewares/Third_Party/FatFs/src/ff.c **** +6099:Middlewares/Third_Party/FatFs/src/ff.c **** case 'O' : /* Octal */ +6100:Middlewares/Third_Party/FatFs/src/ff.c **** r = 8; break; +6101:Middlewares/Third_Party/FatFs/src/ff.c **** +6102:Middlewares/Third_Party/FatFs/src/ff.c **** case 'D' : /* Signed decimal */ +6103:Middlewares/Third_Party/FatFs/src/ff.c **** case 'U' : /* Unsigned decimal */ +6104:Middlewares/Third_Party/FatFs/src/ff.c **** r = 10; break; + 11623 .loc 1 6104 4 is_stmt 1 view .LVU3855 + 11624 .loc 1 6104 12 view .LVU3856 + 11625 .loc 1 6104 6 is_stmt 0 view .LVU3857 + 11626 0128 0A20 movs r0, #10 + 11627 .LVL1360: + 11628 .L832: +6105:Middlewares/Third_Party/FatFs/src/ff.c **** +6106:Middlewares/Third_Party/FatFs/src/ff.c **** case 'X' : /* Hexdecimal */ +6107:Middlewares/Third_Party/FatFs/src/ff.c **** r = 16; break; +6108:Middlewares/Third_Party/FatFs/src/ff.c **** +6109:Middlewares/Third_Party/FatFs/src/ff.c **** default: /* Unknown type (pass-through) */ +6110:Middlewares/Third_Party/FatFs/src/ff.c **** putc_bfd(&pb, c); continue; +6111:Middlewares/Third_Party/FatFs/src/ff.c **** } +6112:Middlewares/Third_Party/FatFs/src/ff.c **** +6113:Middlewares/Third_Party/FatFs/src/ff.c **** /* Get an argument and put it in numeral */ +6114:Middlewares/Third_Party/FatFs/src/ff.c **** v = (f & 4) ? (DWORD)va_arg(arp, long) : ((d == 'D') ? (DWORD)(long)va_arg(arp, int) : (DWORD)va_ + 11629 .loc 1 6114 3 is_stmt 1 view .LVU3858 + 11630 .loc 1 6114 42 is_stmt 0 view .LVU3859 + 11631 012a 16F0040F tst r6, #4 + 11632 012e 1AD0 beq .L844 + 11633 .loc 1 6114 24 view .LVU3860 + 11634 0130 1B9A ldr r2, [sp, #108] + 11635 0132 171D adds r7, r2, #4 + 11636 0134 1B97 str r7, [sp, #108] + 11637 0136 1268 ldr r2, [r2] + 11638 .L845: + 11639 .LVL1361: +6115:Middlewares/Third_Party/FatFs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) { + 11640 .loc 1 6115 3 is_stmt 1 discriminator 8 view .LVU3861 + 11641 .loc 1 6115 16 is_stmt 0 discriminator 8 view .LVU3862 + 11642 0138 D70F lsrs r7, r2, #31 + 11643 013a 442B cmp r3, #68 + ARM GAS /tmp/cc5lWXRL.s page 370 + + + 11644 013c 14BF ite ne + 11645 013e 0027 movne r7, #0 + 11646 0140 07F00107 andeq r7, r7, #1 + 11647 .loc 1 6115 6 discriminator 8 view .LVU3863 + 11648 0144 17B1 cbz r7, .L847 +6116:Middlewares/Third_Party/FatFs/src/ff.c **** v = 0 - v; + 11649 .loc 1 6116 4 is_stmt 1 view .LVU3864 + 11650 .loc 1 6116 6 is_stmt 0 view .LVU3865 + 11651 0146 5242 rsbs r2, r2, #0 + 11652 .LVL1362: +6117:Middlewares/Third_Party/FatFs/src/ff.c **** f |= 8; + 11653 .loc 1 6117 4 is_stmt 1 view .LVU3866 + 11654 .loc 1 6117 6 is_stmt 0 view .LVU3867 + 11655 0148 46F00806 orr r6, r6, #8 + 11656 .LVL1363: + 11657 .L847: +6118:Middlewares/Third_Party/FatFs/src/ff.c **** } +6119:Middlewares/Third_Party/FatFs/src/ff.c **** i = 0; + 11658 .loc 1 6119 3 is_stmt 1 view .LVU3868 + 11659 .loc 1 6119 5 is_stmt 0 view .LVU3869 + 11660 014c 4FF0000C mov ip, #0 + 11661 0150 25E0 b .L850 + 11662 .LVL1364: + 11663 .L828: +6107:Middlewares/Third_Party/FatFs/src/ff.c **** + 11664 .loc 1 6107 4 is_stmt 1 view .LVU3870 +6107:Middlewares/Third_Party/FatFs/src/ff.c **** + 11665 .loc 1 6107 12 view .LVU3871 +6107:Middlewares/Third_Party/FatFs/src/ff.c **** + 11666 .loc 1 6107 6 is_stmt 0 view .LVU3872 + 11667 0152 1020 movs r0, #16 +6107:Middlewares/Third_Party/FatFs/src/ff.c **** + 11668 .loc 1 6107 4 view .LVU3873 + 11669 0154 E9E7 b .L832 + 11670 .LVL1365: + 11671 .L827: +6110:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11672 .loc 1 6110 4 is_stmt 1 view .LVU3874 + 11673 0156 08A8 add r0, sp, #32 + 11674 0158 FFF7FEFF bl putc_bfd + 11675 .LVL1366: +6110:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11676 .loc 1 6110 22 view .LVU3875 +6110:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11677 .loc 1 6110 4 is_stmt 0 view .LVU3876 + 11678 015c 5CE7 b .L817 + 11679 .LVL1367: + 11680 .L834: +6082:Middlewares/Third_Party/FatFs/src/ff.c **** case 'S' : /* String */ + 11681 .loc 1 6082 3 view .LVU3877 + 11682 015e 0220 movs r0, #2 + 11683 0160 E3E7 b .L832 + 11684 .L861: +6100:Middlewares/Third_Party/FatFs/src/ff.c **** + 11685 .loc 1 6100 6 view .LVU3878 + 11686 0162 0820 movs r0, #8 + 11687 0164 E1E7 b .L832 + ARM GAS /tmp/cc5lWXRL.s page 371 + + + 11688 .LVL1368: + 11689 .L844: +6114:Middlewares/Third_Party/FatFs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) { + 11690 .loc 1 6114 88 discriminator 2 view .LVU3879 + 11691 0166 442B cmp r3, #68 + 11692 0168 04D0 beq .L868 +6114:Middlewares/Third_Party/FatFs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) { + 11693 .loc 1 6114 88 view .LVU3880 + 11694 016a 1B9A ldr r2, [sp, #108] + 11695 016c 171D adds r7, r2, #4 + 11696 016e 1B97 str r7, [sp, #108] + 11697 0170 1268 ldr r2, [r2] + 11698 0172 E1E7 b .L845 + 11699 .L868: +6114:Middlewares/Third_Party/FatFs/src/ff.c **** if (d == 'D' && (v & 0x80000000)) { + 11700 .loc 1 6114 71 view .LVU3881 + 11701 0174 1B9A ldr r2, [sp, #108] + 11702 0176 171D adds r7, r2, #4 + 11703 0178 1B97 str r7, [sp, #108] + 11704 017a 1268 ldr r2, [r2] + 11705 017c DCE7 b .L845 + 11706 .LVL1369: + 11707 .L870: +6120:Middlewares/Third_Party/FatFs/src/ff.c **** do { +6121:Middlewares/Third_Party/FatFs/src/ff.c **** d = (TCHAR)(v % r); v /= r; +6122:Middlewares/Third_Party/FatFs/src/ff.c **** if (d > 9) d += (c == 'x') ? 0x27 : 0x07; + 11708 .loc 1 6122 17 view .LVU3882 + 11709 017e 2727 movs r7, #39 + 11710 .L849: + 11711 .loc 1 6122 17 discriminator 5 view .LVU3883 + 11712 0180 3B44 add r3, r3, r7 + 11713 .LVL1370: + 11714 .loc 1 6122 17 discriminator 5 view .LVU3884 + 11715 0182 DBB2 uxtb r3, r3 + 11716 .LVL1371: + 11717 .L848: +6123:Middlewares/Third_Party/FatFs/src/ff.c **** str[i++] = d + '0'; + 11718 .loc 1 6123 4 is_stmt 1 view .LVU3885 + 11719 .loc 1 6123 9 is_stmt 0 view .LVU3886 + 11720 0184 0CF10107 add r7, ip, #1 + 11721 .LVL1372: + 11722 .loc 1 6123 17 view .LVU3887 + 11723 0188 3033 adds r3, r3, #48 + 11724 .LVL1373: + 11725 .loc 1 6123 13 view .LVU3888 + 11726 018a 0CF17009 add r9, ip, #112 + 11727 018e E944 add r9, sp, r9 + 11728 0190 09F8703C strb r3, [r9, #-112] +6124:Middlewares/Third_Party/FatFs/src/ff.c **** } while (v && i < sizeof str / sizeof str[0]); + 11729 .loc 1 6124 11 is_stmt 1 view .LVU3889 + 11730 .loc 1 6124 3 is_stmt 0 view .LVU3890 + 11731 0194 C645 cmp lr, r8 + 11732 0196 98BF it ls + 11733 0198 1F2F cmpls r7, #31 + 11734 019a 0ED8 bhi .L869 +6123:Middlewares/Third_Party/FatFs/src/ff.c **** str[i++] = d + '0'; + 11735 .loc 1 6123 9 view .LVU3891 + ARM GAS /tmp/cc5lWXRL.s page 372 + + + 11736 019c BC46 mov ip, r7 + 11737 .LVL1374: + 11738 .L850: +6120:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 11739 .loc 1 6120 3 is_stmt 1 view .LVU3892 +6121:Middlewares/Third_Party/FatFs/src/ff.c **** if (d > 9) d += (c == 'x') ? 0x27 : 0x07; + 11740 .loc 1 6121 4 view .LVU3893 +6121:Middlewares/Third_Party/FatFs/src/ff.c **** if (d > 9) d += (c == 'x') ? 0x27 : 0x07; + 11741 .loc 1 6121 18 is_stmt 0 view .LVU3894 + 11742 019e 8646 mov lr, r0 + 11743 01a0 B2FBF0F7 udiv r7, r2, r0 + 11744 01a4 00FB1723 mls r3, r0, r7, r2 +6121:Middlewares/Third_Party/FatFs/src/ff.c **** if (d > 9) d += (c == 'x') ? 0x27 : 0x07; + 11745 .loc 1 6121 6 view .LVU3895 + 11746 01a8 DBB2 uxtb r3, r3 + 11747 .LVL1375: +6121:Middlewares/Third_Party/FatFs/src/ff.c **** if (d > 9) d += (c == 'x') ? 0x27 : 0x07; + 11748 .loc 1 6121 24 is_stmt 1 view .LVU3896 + 11749 01aa 9046 mov r8, r2 +6121:Middlewares/Third_Party/FatFs/src/ff.c **** if (d > 9) d += (c == 'x') ? 0x27 : 0x07; + 11750 .loc 1 6121 26 is_stmt 0 view .LVU3897 + 11751 01ac 3A46 mov r2, r7 + 11752 .LVL1376: +6122:Middlewares/Third_Party/FatFs/src/ff.c **** str[i++] = d + '0'; + 11753 .loc 1 6122 4 is_stmt 1 view .LVU3898 +6122:Middlewares/Third_Party/FatFs/src/ff.c **** str[i++] = d + '0'; + 11754 .loc 1 6122 7 is_stmt 0 view .LVU3899 + 11755 01ae 092B cmp r3, #9 + 11756 01b0 E8D9 bls .L848 +6122:Middlewares/Third_Party/FatFs/src/ff.c **** str[i++] = d + '0'; + 11757 .loc 1 6122 15 is_stmt 1 discriminator 1 view .LVU3900 +6122:Middlewares/Third_Party/FatFs/src/ff.c **** str[i++] = d + '0'; + 11758 .loc 1 6122 17 is_stmt 0 discriminator 1 view .LVU3901 + 11759 01b2 7829 cmp r1, #120 + 11760 01b4 E3D0 beq .L870 +6122:Middlewares/Third_Party/FatFs/src/ff.c **** str[i++] = d + '0'; + 11761 .loc 1 6122 17 view .LVU3902 + 11762 01b6 0727 movs r7, #7 + 11763 01b8 E2E7 b .L849 + 11764 .LVL1377: + 11765 .L869: +6125:Middlewares/Third_Party/FatFs/src/ff.c **** if (f & 8) str[i++] = '-'; + 11766 .loc 1 6125 3 is_stmt 1 view .LVU3903 + 11767 .loc 1 6125 6 is_stmt 0 view .LVU3904 + 11768 01ba 16F0080F tst r6, #8 + 11769 01be 08D0 beq .L851 + 11770 .loc 1 6125 14 is_stmt 1 discriminator 1 view .LVU3905 + 11771 .LVL1378: + 11772 .loc 1 6125 23 is_stmt 0 discriminator 1 view .LVU3906 + 11773 01c0 07F17003 add r3, r7, #112 + 11774 01c4 0DEB0307 add r7, sp, r3 + 11775 01c8 2D23 movs r3, #45 + 11776 01ca 07F8703C strb r3, [r7, #-112] + 11777 .loc 1 6125 19 discriminator 1 view .LVU3907 + 11778 01ce 0CF10207 add r7, ip, #2 + 11779 .LVL1379: + 11780 .L851: + ARM GAS /tmp/cc5lWXRL.s page 373 + + +6126:Middlewares/Third_Party/FatFs/src/ff.c **** j = i; d = (f & 1) ? '0' : ' '; + 11781 .loc 1 6126 3 is_stmt 1 view .LVU3908 + 11782 .loc 1 6126 10 view .LVU3909 + 11783 .loc 1 6126 12 is_stmt 0 view .LVU3910 + 11784 01d2 16F0010F tst r6, #1 + 11785 01d6 03D0 beq .L864 + 11786 .loc 1 6126 12 view .LVU3911 + 11787 01d8 4FF0300A mov r10, #48 + 11788 .L852: + 11789 .LVL1380: +6127:Middlewares/Third_Party/FatFs/src/ff.c **** while (!(f & 2) && j++ < w) putc_bfd(&pb, d); + 11790 .loc 1 6127 3 is_stmt 1 discriminator 4 view .LVU3912 +6126:Middlewares/Third_Party/FatFs/src/ff.c **** j = i; d = (f & 1) ? '0' : ' '; + 11791 .loc 1 6126 5 is_stmt 0 discriminator 4 view .LVU3913 + 11792 01dc B846 mov r8, r7 + 11793 .loc 1 6127 9 discriminator 4 view .LVU3914 + 11794 01de 07E0 b .L853 + 11795 .LVL1381: + 11796 .L864: +6126:Middlewares/Third_Party/FatFs/src/ff.c **** j = i; d = (f & 1) ? '0' : ' '; + 11797 .loc 1 6126 12 view .LVU3915 + 11798 01e0 4FF0200A mov r10, #32 + 11799 01e4 FAE7 b .L852 + 11800 .LVL1382: + 11801 .L855: + 11802 .loc 1 6127 31 is_stmt 1 discriminator 3 view .LVU3916 + 11803 01e6 5146 mov r1, r10 + 11804 01e8 08A8 add r0, sp, #32 + 11805 01ea FFF7FEFF bl putc_bfd + 11806 .LVL1383: + 11807 .loc 1 6127 23 is_stmt 0 discriminator 3 view .LVU3917 + 11808 01ee C846 mov r8, r9 + 11809 .LVL1384: + 11810 .L853: + 11811 .loc 1 6127 9 is_stmt 1 discriminator 1 view .LVU3918 + 11812 01f0 16F0020F tst r6, #2 + 11813 01f4 04D1 bne .L856 + 11814 .loc 1 6127 23 is_stmt 0 discriminator 2 view .LVU3919 + 11815 01f6 08F10109 add r9, r8, #1 + 11816 .LVL1385: + 11817 .loc 1 6127 19 discriminator 2 view .LVU3920 + 11818 01fa A045 cmp r8, r4 + 11819 01fc F3D3 bcc .L855 + 11820 .loc 1 6127 23 view .LVU3921 + 11821 01fe C846 mov r8, r9 + 11822 .LVL1386: + 11823 .L856: +6128:Middlewares/Third_Party/FatFs/src/ff.c **** do { + 11824 .loc 1 6128 3 is_stmt 1 discriminator 1 view .LVU3922 +6129:Middlewares/Third_Party/FatFs/src/ff.c **** putc_bfd(&pb, str[--i]); + 11825 .loc 1 6129 4 discriminator 1 view .LVU3923 + 11826 0200 013F subs r7, r7, #1 + 11827 .LVL1387: + 11828 .loc 1 6129 4 is_stmt 0 discriminator 1 view .LVU3924 + 11829 0202 07F17003 add r3, r7, #112 + 11830 0206 6B44 add r3, sp, r3 + 11831 0208 13F8701C ldrb r1, [r3, #-112] @ zero_extendqisi2 + ARM GAS /tmp/cc5lWXRL.s page 374 + + + 11832 020c 08A8 add r0, sp, #32 + 11833 020e FFF7FEFF bl putc_bfd + 11834 .LVL1388: +6130:Middlewares/Third_Party/FatFs/src/ff.c **** } while (i); + 11835 .loc 1 6130 11 is_stmt 1 discriminator 1 view .LVU3925 + 11836 .loc 1 6130 3 is_stmt 0 discriminator 1 view .LVU3926 + 11837 0212 002F cmp r7, #0 + 11838 0214 F4D1 bne .L856 + 11839 .LVL1389: + 11840 .L857: +6131:Middlewares/Third_Party/FatFs/src/ff.c **** while (j++ < w) putc_bfd(&pb, d); + 11841 .loc 1 6131 9 is_stmt 1 discriminator 1 view .LVU3927 + 11842 .loc 1 6131 11 is_stmt 0 discriminator 1 view .LVU3928 + 11843 0216 08F10106 add r6, r8, #1 + 11844 .LVL1390: + 11845 .loc 1 6131 9 discriminator 1 view .LVU3929 + 11846 021a A045 cmp r8, r4 + 11847 021c BFF4FCAE bcs .L817 + 11848 .loc 1 6131 19 is_stmt 1 discriminator 2 view .LVU3930 + 11849 0220 5146 mov r1, r10 + 11850 0222 08A8 add r0, sp, #32 + 11851 0224 FFF7FEFF bl putc_bfd + 11852 .LVL1391: + 11853 .loc 1 6131 11 is_stmt 0 discriminator 2 view .LVU3931 + 11854 0228 B046 mov r8, r6 + 11855 022a F4E7 b .L857 + 11856 .LVL1392: + 11857 .L818: +6132:Middlewares/Third_Party/FatFs/src/ff.c **** } +6133:Middlewares/Third_Party/FatFs/src/ff.c **** +6134:Middlewares/Third_Party/FatFs/src/ff.c **** va_end(arp); + 11858 .loc 1 6134 2 is_stmt 1 view .LVU3932 +6135:Middlewares/Third_Party/FatFs/src/ff.c **** +6136:Middlewares/Third_Party/FatFs/src/ff.c **** return putc_flush(&pb); + 11859 .loc 1 6136 2 view .LVU3933 + 11860 .loc 1 6136 9 is_stmt 0 view .LVU3934 + 11861 022c 08A8 add r0, sp, #32 + 11862 022e FFF7FEFF bl putc_flush + 11863 .LVL1393: +6137:Middlewares/Third_Party/FatFs/src/ff.c **** } + 11864 .loc 1 6137 1 view .LVU3935 + 11865 0232 1DB0 add sp, sp, #116 + 11866 .LCFI128: + 11867 .cfi_def_cfa_offset 44 + 11868 @ sp needed + 11869 0234 BDE8F047 pop {r4, r5, r6, r7, r8, r9, r10, lr} + 11870 .LCFI129: + 11871 .cfi_restore 14 + 11872 .cfi_restore 10 + 11873 .cfi_restore 9 + 11874 .cfi_restore 8 + 11875 .cfi_restore 7 + 11876 .cfi_restore 6 + 11877 .cfi_restore 5 + 11878 .cfi_restore 4 + 11879 .cfi_def_cfa_offset 12 + 11880 0238 03B0 add sp, sp, #12 + ARM GAS /tmp/cc5lWXRL.s page 375 + + + 11881 .LCFI130: + 11882 .cfi_restore 3 + 11883 .cfi_restore 2 + 11884 .cfi_restore 1 + 11885 .cfi_def_cfa_offset 0 + 11886 023a 7047 bx lr + 11887 .cfi_endproc + 11888 .LFE1244: + 11890 .section .bss.FatFs,"aw",%nobits + 11891 .align 2 + 11892 .set .LANCHOR2,. + 0 + 11895 FatFs: + 11896 0000 00000000 .space 4 + 11897 .section .bss.Files,"aw",%nobits + 11898 .align 2 + 11899 .set .LANCHOR0,. + 0 + 11902 Files: + 11903 0000 00000000 .space 32 + 11903 00000000 + 11903 00000000 + 11903 00000000 + 11903 00000000 + 11904 .section .bss.Fsid,"aw",%nobits + 11905 .align 1 + 11906 .set .LANCHOR3,. + 0 + 11909 Fsid: + 11910 0000 0000 .space 2 + 11911 .section .rodata.ExCvt,"a" + 11912 .align 2 + 11913 .set .LANCHOR1,. + 0 + 11916 ExCvt: + 11917 0000 43554541 .ascii "CUEAAAACEEEIIIAAE\222\222OOOUUYOUO\234O\236\237AIOU" + 11917 41414143 + 11917 45454549 + 11917 49494141 + 11917 4592924F + 11918 0024 A5A5A6A7 .ascii "\245\245\246\247\250\251\252\253\254\255\256\257\260" + 11918 A8A9AAAB + 11918 ACADAEAF + 11918 B0 + 11919 0031 B1B2B3B4 .ascii "\261\262\263\264AAA\270\271\272\273\274\275\276\277" + 11919 414141B8 + 11919 B9BABBBC + 11919 BDBEBF + 11920 0040 C0C1C2C3 .ascii "\300\301\302\303\304\305AA\310\311\312\313\314\315\316" + 11920 C4C54141 + 11920 C8C9CACB + 11920 CCCDCE + 11921 004f CFD1D145 .ascii "\317\321\321EEEIIII\331\332\333\334\335I\337O\341OO" + 11921 45454949 + 11921 4949D9DA + 11921 DBDCDD49 + 11921 DF4FE14F + 11922 0064 4F4FE6E8 .ascii "OO\346\350\350UUUYY\356\357\360\361\362\363\364\365" + 11922 E8555555 + 11922 5959EEEF + 11922 F0F1F2F3 + ARM GAS /tmp/cc5lWXRL.s page 376 + + + 11922 F4F5 + 11923 0076 F6F7F8F9 .ascii "\366\367\370\371\372\373\374\375\376\377" + 11923 FAFBFCFD + 11923 FEFF + 11924 .section .rodata.cst.0,"a" + 11925 .align 2 + 11926 .set .LANCHOR5,. + 0 + 11929 cst.0: + 11930 0000 0100 .short 1 + 11931 0002 0400 .short 4 + 11932 0004 1000 .short 16 + 11933 0006 4000 .short 64 + 11934 0008 0001 .short 256 + 11935 000a 0002 .short 512 + 11936 000c 0000 .short 0 + 11937 .section .rodata.cst32.1,"a" + 11938 .align 2 + 11939 .set .LANCHOR4,. + 0 + 11942 cst32.1: + 11943 0000 0100 .short 1 + 11944 0002 0200 .short 2 + 11945 0004 0400 .short 4 + 11946 0006 0800 .short 8 + 11947 0008 1000 .short 16 + 11948 000a 2000 .short 32 + 11949 000c 0000 .short 0 + 11950 .text + 11951 .Letext0: + 11952 .file 2 "Middlewares/Third_Party/FatFs/src/integer.h" + 11953 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 11954 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" + 11955 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" + 11956 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 11957 .file 7 "Middlewares/Third_Party/FatFs/src/ff.h" + 11958 .file 8 "Middlewares/Third_Party/FatFs/src/diskio.h" + 11959 .file 9 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdarg.h" + 11960 .file 10 "" + ARM GAS /tmp/cc5lWXRL.s page 377 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 ff.c + /tmp/cc5lWXRL.s:17 .text.ld_word:0000000000000000 $t + /tmp/cc5lWXRL.s:24 .text.ld_word:0000000000000000 ld_word + /tmp/cc5lWXRL.s:52 .text.ld_dword:0000000000000000 $t + /tmp/cc5lWXRL.s:58 .text.ld_dword:0000000000000000 ld_dword + /tmp/cc5lWXRL.s:97 .text.st_word:0000000000000000 $t + /tmp/cc5lWXRL.s:103 .text.st_word:0000000000000000 st_word + /tmp/cc5lWXRL.s:128 .text.st_dword:0000000000000000 $t + /tmp/cc5lWXRL.s:134 .text.st_dword:0000000000000000 st_dword + /tmp/cc5lWXRL.s:173 .text.mem_cpy:0000000000000000 $t + /tmp/cc5lWXRL.s:179 .text.mem_cpy:0000000000000000 mem_cpy + /tmp/cc5lWXRL.s:219 .text.mem_set:0000000000000000 $t + /tmp/cc5lWXRL.s:225 .text.mem_set:0000000000000000 mem_set + /tmp/cc5lWXRL.s:252 .text.mem_cmp:0000000000000000 $t + /tmp/cc5lWXRL.s:258 .text.mem_cmp:0000000000000000 mem_cmp + /tmp/cc5lWXRL.s:301 .text.chk_chr:0000000000000000 $t + /tmp/cc5lWXRL.s:307 .text.chk_chr:0000000000000000 chk_chr + /tmp/cc5lWXRL.s:343 .text.chk_lock:0000000000000000 $t + /tmp/cc5lWXRL.s:349 .text.chk_lock:0000000000000000 chk_lock + /tmp/cc5lWXRL.s:487 .text.chk_lock:0000000000000078 $d + /tmp/cc5lWXRL.s:492 .text.enq_lock:0000000000000000 $t + /tmp/cc5lWXRL.s:498 .text.enq_lock:0000000000000000 enq_lock + /tmp/cc5lWXRL.s:545 .text.enq_lock:000000000000001c $d + /tmp/cc5lWXRL.s:550 .text.inc_lock:0000000000000000 $t + /tmp/cc5lWXRL.s:556 .text.inc_lock:0000000000000000 inc_lock + /tmp/cc5lWXRL.s:735 .text.inc_lock:00000000000000a0 $d + /tmp/cc5lWXRL.s:740 .text.dec_lock:0000000000000000 $t + /tmp/cc5lWXRL.s:746 .text.dec_lock:0000000000000000 dec_lock + /tmp/cc5lWXRL.s:829 .text.dec_lock:000000000000003c $d + /tmp/cc5lWXRL.s:834 .text.clear_lock:0000000000000000 $t + /tmp/cc5lWXRL.s:840 .text.clear_lock:0000000000000000 clear_lock + /tmp/cc5lWXRL.s:921 .text.clear_lock:0000000000000038 $d + /tmp/cc5lWXRL.s:926 .text.clust2sect:0000000000000000 $t + /tmp/cc5lWXRL.s:932 .text.clust2sect:0000000000000000 clust2sect + /tmp/cc5lWXRL.s:972 .text.clmt_clust:0000000000000000 $t + /tmp/cc5lWXRL.s:978 .text.clmt_clust:0000000000000000 clmt_clust + /tmp/cc5lWXRL.s:1049 .text.ld_clust:0000000000000000 $t + /tmp/cc5lWXRL.s:1055 .text.ld_clust:0000000000000000 ld_clust + /tmp/cc5lWXRL.s:1111 .text.st_clust:0000000000000000 $t + /tmp/cc5lWXRL.s:1117 .text.st_clust:0000000000000000 st_clust + /tmp/cc5lWXRL.s:1166 .text.get_fileinfo:0000000000000000 $t + /tmp/cc5lWXRL.s:1172 .text.get_fileinfo:0000000000000000 get_fileinfo + /tmp/cc5lWXRL.s:1312 .rodata.create_name.str1.4:0000000000000000 $d + /tmp/cc5lWXRL.s:1316 .text.create_name:0000000000000000 $t + /tmp/cc5lWXRL.s:1322 .text.create_name:0000000000000000 create_name + /tmp/cc5lWXRL.s:1552 .text.create_name:00000000000000c8 $d + /tmp/cc5lWXRL.s:1558 .text.get_ldnumber:0000000000000000 $t + /tmp/cc5lWXRL.s:1564 .text.get_ldnumber:0000000000000000 get_ldnumber + /tmp/cc5lWXRL.s:1666 .text.putc_init:0000000000000000 $t + /tmp/cc5lWXRL.s:1672 .text.putc_init:0000000000000000 putc_init + /tmp/cc5lWXRL.s:1695 .text.validate:0000000000000000 $t + /tmp/cc5lWXRL.s:1701 .text.validate:0000000000000000 validate + /tmp/cc5lWXRL.s:1810 .text.sync_window:0000000000000000 $t + /tmp/cc5lWXRL.s:1816 .text.sync_window:0000000000000000 sync_window + /tmp/cc5lWXRL.s:1925 .text.move_window:0000000000000000 $t + /tmp/cc5lWXRL.s:1931 .text.move_window:0000000000000000 move_window + ARM GAS /tmp/cc5lWXRL.s page 378 + + + /tmp/cc5lWXRL.s:2002 .text.check_fs:0000000000000000 $t + /tmp/cc5lWXRL.s:2008 .text.check_fs:0000000000000000 check_fs + /tmp/cc5lWXRL.s:2104 .text.check_fs:000000000000006c $d + /tmp/cc5lWXRL.s:2111 .text.find_volume:0000000000000000 $t + /tmp/cc5lWXRL.s:2117 .text.find_volume:0000000000000000 find_volume + /tmp/cc5lWXRL.s:2796 .text.find_volume:0000000000000318 $d + /tmp/cc5lWXRL.s:2803 .text.find_volume:0000000000000328 $t + /tmp/cc5lWXRL.s:2847 .text.put_fat:0000000000000000 $t + /tmp/cc5lWXRL.s:2853 .text.put_fat:0000000000000000 put_fat + /tmp/cc5lWXRL.s:3141 .text.get_fat:0000000000000000 $t + /tmp/cc5lWXRL.s:3147 .text.get_fat:0000000000000000 get_fat + /tmp/cc5lWXRL.s:3395 .text.dir_sdi:0000000000000000 $t + /tmp/cc5lWXRL.s:3401 .text.dir_sdi:0000000000000000 dir_sdi + /tmp/cc5lWXRL.s:3608 .text.create_chain:0000000000000000 $t + /tmp/cc5lWXRL.s:3614 .text.create_chain:0000000000000000 create_chain + /tmp/cc5lWXRL.s:3847 .text.remove_chain:0000000000000000 $t + /tmp/cc5lWXRL.s:3853 .text.remove_chain:0000000000000000 remove_chain + /tmp/cc5lWXRL.s:4014 .text.dir_remove:0000000000000000 $t + /tmp/cc5lWXRL.s:4020 .text.dir_remove:0000000000000000 dir_remove + /tmp/cc5lWXRL.s:4071 .text.dir_next:0000000000000000 $t + /tmp/cc5lWXRL.s:4077 .text.dir_next:0000000000000000 dir_next + /tmp/cc5lWXRL.s:4386 .text.dir_find:0000000000000000 $t + /tmp/cc5lWXRL.s:4392 .text.dir_find:0000000000000000 dir_find + /tmp/cc5lWXRL.s:4499 .text.follow_path:0000000000000000 $t + /tmp/cc5lWXRL.s:4505 .text.follow_path:0000000000000000 follow_path + /tmp/cc5lWXRL.s:4673 .text.dir_alloc:0000000000000000 $t + /tmp/cc5lWXRL.s:4679 .text.dir_alloc:0000000000000000 dir_alloc + /tmp/cc5lWXRL.s:4791 .text.dir_register:0000000000000000 $t + /tmp/cc5lWXRL.s:4797 .text.dir_register:0000000000000000 dir_register + /tmp/cc5lWXRL.s:4871 .text.dir_read:0000000000000000 $t + /tmp/cc5lWXRL.s:4877 .text.dir_read:0000000000000000 dir_read + /tmp/cc5lWXRL.s:4999 .text.sync_fs:0000000000000000 $t + /tmp/cc5lWXRL.s:5005 .text.sync_fs:0000000000000000 sync_fs + /tmp/cc5lWXRL.s:5119 .text.sync_fs:0000000000000080 $d + /tmp/cc5lWXRL.s:5125 .text.f_mount:0000000000000000 $t + /tmp/cc5lWXRL.s:5132 .text.f_mount:0000000000000000 f_mount + /tmp/cc5lWXRL.s:5248 .text.f_mount:000000000000005c $d + /tmp/cc5lWXRL.s:5253 .text.f_open:0000000000000000 $t + /tmp/cc5lWXRL.s:5260 .text.f_open:0000000000000000 f_open + /tmp/cc5lWXRL.s:5819 .text.f_read:0000000000000000 $t + /tmp/cc5lWXRL.s:5826 .text.f_read:0000000000000000 f_read + /tmp/cc5lWXRL.s:6256 .text.f_write:0000000000000000 $t + /tmp/cc5lWXRL.s:6263 .text.f_write:0000000000000000 f_write + /tmp/cc5lWXRL.s:6737 .text.putc_bfd:0000000000000000 $t + /tmp/cc5lWXRL.s:6743 .text.putc_bfd:0000000000000000 putc_bfd + /tmp/cc5lWXRL.s:6854 .text.putc_flush:0000000000000000 $t + /tmp/cc5lWXRL.s:6860 .text.putc_flush:0000000000000000 putc_flush + /tmp/cc5lWXRL.s:6939 .text.f_sync:0000000000000000 $t + /tmp/cc5lWXRL.s:6946 .text.f_sync:0000000000000000 f_sync + /tmp/cc5lWXRL.s:7094 .text.f_close:0000000000000000 $t + /tmp/cc5lWXRL.s:7101 .text.f_close:0000000000000000 f_close + /tmp/cc5lWXRL.s:7170 .text.f_lseek:0000000000000000 $t + /tmp/cc5lWXRL.s:7177 .text.f_lseek:0000000000000000 f_lseek + /tmp/cc5lWXRL.s:7886 .text.f_opendir:0000000000000000 $t + /tmp/cc5lWXRL.s:7893 .text.f_opendir:0000000000000000 f_opendir + /tmp/cc5lWXRL.s:8062 .text.f_closedir:0000000000000000 $t + /tmp/cc5lWXRL.s:8069 .text.f_closedir:0000000000000000 f_closedir + ARM GAS /tmp/cc5lWXRL.s page 379 + + + /tmp/cc5lWXRL.s:8135 .text.f_readdir:0000000000000000 $t + /tmp/cc5lWXRL.s:8142 .text.f_readdir:0000000000000000 f_readdir + /tmp/cc5lWXRL.s:8247 .text.f_stat:0000000000000000 $t + /tmp/cc5lWXRL.s:8254 .text.f_stat:0000000000000000 f_stat + /tmp/cc5lWXRL.s:8347 .text.f_getfree:0000000000000000 $t + /tmp/cc5lWXRL.s:8354 .text.f_getfree:0000000000000000 f_getfree + /tmp/cc5lWXRL.s:8637 .text.f_truncate:0000000000000000 $t + /tmp/cc5lWXRL.s:8644 .text.f_truncate:0000000000000000 f_truncate + /tmp/cc5lWXRL.s:8837 .text.f_unlink:0000000000000000 $t + /tmp/cc5lWXRL.s:8844 .text.f_unlink:0000000000000000 f_unlink + /tmp/cc5lWXRL.s:9070 .text.f_mkdir:0000000000000000 $t + /tmp/cc5lWXRL.s:9077 .text.f_mkdir:0000000000000000 f_mkdir + /tmp/cc5lWXRL.s:9454 .text.f_rename:0000000000000000 $t + /tmp/cc5lWXRL.s:9461 .text.f_rename:0000000000000000 f_rename + /tmp/cc5lWXRL.s:9739 .rodata.f_mkfs.str1.4:0000000000000000 $d + /tmp/cc5lWXRL.s:9749 .text.f_mkfs:0000000000000000 $t + /tmp/cc5lWXRL.s:9756 .text.f_mkfs:0000000000000000 f_mkfs + /tmp/cc5lWXRL.s:10341 .text.f_mkfs:00000000000002b8 $d + /tmp/cc5lWXRL.s:10349 .text.f_mkfs:00000000000002cc $t + /tmp/cc5lWXRL.s:10985 .text.f_mkfs:000000000000064c $d + /tmp/cc5lWXRL.s:10994 .text.f_mkfs:0000000000000664 $t + /tmp/cc5lWXRL.s:11045 .text.f_gets:0000000000000000 $t + /tmp/cc5lWXRL.s:11052 .text.f_gets:0000000000000000 f_gets + /tmp/cc5lWXRL.s:11171 .text.f_putc:0000000000000000 $t + /tmp/cc5lWXRL.s:11178 .text.f_putc:0000000000000000 f_putc + /tmp/cc5lWXRL.s:11222 .text.f_puts:0000000000000000 $t + /tmp/cc5lWXRL.s:11229 .text.f_puts:0000000000000000 f_puts + /tmp/cc5lWXRL.s:11288 .text.f_printf:0000000000000000 $t + /tmp/cc5lWXRL.s:11295 .text.f_printf:0000000000000000 f_printf + /tmp/cc5lWXRL.s:11479 .text.f_printf:000000000000009e $d + /tmp/cc5lWXRL.s:11891 .bss.FatFs:0000000000000000 $d + /tmp/cc5lWXRL.s:11895 .bss.FatFs:0000000000000000 FatFs + /tmp/cc5lWXRL.s:11898 .bss.Files:0000000000000000 $d + /tmp/cc5lWXRL.s:11902 .bss.Files:0000000000000000 Files + /tmp/cc5lWXRL.s:11905 .bss.Fsid:0000000000000000 $d + /tmp/cc5lWXRL.s:11909 .bss.Fsid:0000000000000000 Fsid + /tmp/cc5lWXRL.s:11912 .rodata.ExCvt:0000000000000000 $d + /tmp/cc5lWXRL.s:11916 .rodata.ExCvt:0000000000000000 ExCvt + /tmp/cc5lWXRL.s:11925 .rodata.cst.0:0000000000000000 $d + /tmp/cc5lWXRL.s:11929 .rodata.cst.0:0000000000000000 cst.0 + /tmp/cc5lWXRL.s:11938 .rodata.cst32.1:0000000000000000 $d + /tmp/cc5lWXRL.s:11942 .rodata.cst32.1:0000000000000000 cst32.1 + /tmp/cc5lWXRL.s:11503 .text.f_printf:00000000000000b5 $d + /tmp/cc5lWXRL.s:11503 .text.f_printf:00000000000000b6 $t + +UNDEFINED SYMBOLS +disk_status +disk_write +disk_read +disk_initialize +disk_ioctl +get_fattime diff --git a/build/ff.o b/build/ff.o new file mode 100644 index 0000000..a412f01 Binary files /dev/null and b/build/ff.o differ diff --git a/build/ff_gen_drv.d b/build/ff_gen_drv.d new file mode 100644 index 0000000..27db340 --- /dev/null +++ b/build/ff_gen_drv.d @@ -0,0 +1,100 @@ +build/ff_gen_drv.o: Middlewares/Third_Party/FatFs/src/ff_gen_drv.c \ + Middlewares/Third_Party/FatFs/src/ff_gen_drv.h \ + Middlewares/Third_Party/FatFs/src/diskio.h \ + Middlewares/Third_Party/FatFs/src/integer.h \ + Middlewares/Third_Party/FatFs/src/ff.h Inc/ffconf.h Inc/main.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h Inc/bsp_driver_sd.h \ + Inc/fatfs_platform.h +Middlewares/Third_Party/FatFs/src/ff_gen_drv.h: +Middlewares/Third_Party/FatFs/src/diskio.h: +Middlewares/Third_Party/FatFs/src/integer.h: +Middlewares/Third_Party/FatFs/src/ff.h: +Inc/ffconf.h: +Inc/main.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: +Inc/bsp_driver_sd.h: +Inc/fatfs_platform.h: diff --git a/build/ff_gen_drv.lst b/build/ff_gen_drv.lst new file mode 100644 index 0000000..ea66daf --- /dev/null +++ b/build/ff_gen_drv.lst @@ -0,0 +1,476 @@ +ARM GAS /tmp/cczj2lnx.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "ff_gen_drv.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.FATFS_LinkDriverEx,"ax",%progbits + 17 .align 1 + 18 .global FATFS_LinkDriverEx + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 FATFS_LinkDriverEx: + 26 .LVL0: + 27 .LFB1183: + 28 .file 1 "Middlewares/Third_Party/FatFs/src/ff_gen_drv.c" + 1:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /** + 2:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** ****************************************************************************** + 3:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @file ff_gen_drv.c + 4:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @author MCD Application Team + 5:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @brief FatFs generic low level driver. + 6:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** ***************************************************************************** + 7:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @attention + 8:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * + 9:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * Copyright (c) 2017 STMicroelectronics. All rights reserved. + 10:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * + 11:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * This software component is licensed by ST under BSD 3-Clause license, + 12:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * the "License"; You may not use this file except in compliance with the + 13:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * License. You may obtain a copy of the License at: + 14:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * opensource.org/licenses/BSD-3-Clause + 15:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * + 16:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** ****************************************************************************** + 17:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** **/ + 18:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /* Includes ------------------------------------------------------------------*/ + 19:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** #include "ff_gen_drv.h" + 20:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 21:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /* Private typedef -----------------------------------------------------------*/ + 22:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /* Private define ------------------------------------------------------------*/ + 23:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /* Private variables ---------------------------------------------------------*/ + 24:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** Disk_drvTypeDef disk = {{0},{0},{0},0}; + 25:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 26:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /* Private function prototypes -----------------------------------------------*/ + 27:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /* Private functions ---------------------------------------------------------*/ + 28:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 29:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /** + 30:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @brief Links a compatible diskio driver/lun id and increments the number of active + ARM GAS /tmp/cczj2lnx.s page 2 + + + 31:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * linked drivers. + 32:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @note The number of linked drivers (volumes) is up to 10 due to FatFs limits. + 33:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @param drv: pointer to the disk IO Driver structure + 34:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @param path: pointer to the logical drive path + 35:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @param lun : only used for USB Key Disk to add multi-lun management + 36:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** else the parameter must be equal to 0 + 37:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @retval Returns 0 in case of success, otherwise 1. + 38:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** */ + 39:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t FATFS_LinkDriverEx(const Diskio_drvTypeDef *drv, char *path, uint8_t lun) + 40:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** { + 29 .loc 1 40 1 view -0 + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 41:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t ret = 1; + 33 .loc 1 41 3 view .LVU1 + 42:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t DiskNum = 0; + 34 .loc 1 42 3 view .LVU2 + 43:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 44:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** if(disk.nbr < _VOLUMES) + 35 .loc 1 44 3 view .LVU3 + 36 .loc 1 44 10 is_stmt 0 view .LVU4 + 37 0000 134B ldr r3, .L8 + 38 0002 5B7A ldrb r3, [r3, #9] @ zero_extendqisi2 + 39 .loc 1 44 5 view .LVU5 + 40 0004 13BB cbnz r3, .L3 + 40:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t ret = 1; + 41 .loc 1 40 1 view .LVU6 + 42 0006 10B5 push {r4, lr} + 43 .LCFI0: + 44 .cfi_def_cfa_offset 8 + 45 .cfi_offset 4, -8 + 46 .cfi_offset 14, -4 + 47 0008 0446 mov r4, r0 + 48 000a 03F0FF00 and r0, r3, #255 + 49 .LVL1: + 45:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** { + 46:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** disk.is_initialized[disk.nbr] = 0; + 50 .loc 1 46 5 is_stmt 1 view .LVU7 + 51 .loc 1 46 29 is_stmt 0 view .LVU8 + 52 000e 104B ldr r3, .L8 + 53 0010 93F809C0 ldrb ip, [r3, #9] @ zero_extendqisi2 + 54 0014 5FFA8CFC uxtb ip, ip + 55 .loc 1 46 35 view .LVU9 + 56 0018 4FF0000E mov lr, #0 + 57 001c 03F80CE0 strb lr, [r3, ip] + 47:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** disk.drv[disk.nbr] = drv; + 58 .loc 1 47 5 is_stmt 1 view .LVU10 + 59 .loc 1 47 18 is_stmt 0 view .LVU11 + 60 0020 93F809C0 ldrb ip, [r3, #9] @ zero_extendqisi2 + 61 .loc 1 47 24 view .LVU12 + 62 0024 03EB8C0C add ip, r3, ip, lsl #2 + 63 0028 CCF80440 str r4, [ip, #4] + 48:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** disk.lun[disk.nbr] = lun; + 64 .loc 1 48 5 is_stmt 1 view .LVU13 + 65 .loc 1 48 18 is_stmt 0 view .LVU14 + 66 002c 5C7A ldrb r4, [r3, #9] @ zero_extendqisi2 + ARM GAS /tmp/cczj2lnx.s page 3 + + + 67 .LVL2: + 68 .loc 1 48 24 view .LVU15 + 69 002e 1C44 add r4, r4, r3 + 70 0030 2272 strb r2, [r4, #8] + 49:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** DiskNum = disk.nbr++; + 71 .loc 1 49 5 is_stmt 1 view .LVU16 + 72 .loc 1 49 19 is_stmt 0 view .LVU17 + 73 0032 5A7A ldrb r2, [r3, #9] @ zero_extendqisi2 + 74 .LVL3: + 75 .loc 1 49 23 view .LVU18 + 76 0034 541C adds r4, r2, #1 + 77 .LVL4: + 78 .loc 1 49 23 view .LVU19 + 79 0036 E4B2 uxtb r4, r4 + 80 0038 5C72 strb r4, [r3, #9] + 81 .LVL5: + 50:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** path[0] = DiskNum + '0'; + 82 .loc 1 50 5 is_stmt 1 view .LVU20 + 83 .loc 1 50 23 is_stmt 0 view .LVU21 + 84 003a 3032 adds r2, r2, #48 + 85 .LVL6: + 86 .loc 1 50 13 view .LVU22 + 87 003c 0A70 strb r2, [r1] + 88 .LVL7: + 51:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** path[1] = ':'; + 89 .loc 1 51 5 is_stmt 1 view .LVU23 + 90 .loc 1 51 13 is_stmt 0 view .LVU24 + 91 003e 3A23 movs r3, #58 + 92 0040 4B70 strb r3, [r1, #1] + 52:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** path[2] = '/'; + 93 .loc 1 52 5 is_stmt 1 view .LVU25 + 94 .loc 1 52 13 is_stmt 0 view .LVU26 + 95 0042 2F23 movs r3, #47 + 96 0044 8B70 strb r3, [r1, #2] + 53:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** path[3] = 0; + 97 .loc 1 53 5 is_stmt 1 view .LVU27 + 98 .loc 1 53 13 is_stmt 0 view .LVU28 + 99 0046 81F803E0 strb lr, [r1, #3] + 54:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** ret = 0; + 100 .loc 1 54 5 is_stmt 1 view .LVU29 + 101 .LVL8: + 55:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** } + 56:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 57:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** return ret; + 102 .loc 1 57 3 view .LVU30 + 58:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** } + 103 .loc 1 58 1 is_stmt 0 view .LVU31 + 104 004a 10BD pop {r4, pc} + 105 .LVL9: + 106 .L3: + 107 .LCFI1: + 108 .cfi_def_cfa_offset 0 + 109 .cfi_restore 4 + 110 .cfi_restore 14 + 41:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t DiskNum = 0; + 111 .loc 1 41 11 view .LVU32 + 112 004c 0120 movs r0, #1 + ARM GAS /tmp/cczj2lnx.s page 4 + + + 113 .LVL10: + 57:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** } + 114 .loc 1 57 3 is_stmt 1 view .LVU33 + 115 .loc 1 58 1 is_stmt 0 view .LVU34 + 116 004e 7047 bx lr + 117 .L9: + 118 .align 2 + 119 .L8: + 120 0050 00000000 .word .LANCHOR0 + 121 .cfi_endproc + 122 .LFE1183: + 124 .section .text.FATFS_LinkDriver,"ax",%progbits + 125 .align 1 + 126 .global FATFS_LinkDriver + 127 .syntax unified + 128 .thumb + 129 .thumb_func + 130 .fpu fpv5-d16 + 132 FATFS_LinkDriver: + 133 .LVL11: + 134 .LFB1184: + 59:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 60:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /** + 61:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @brief Links a compatible diskio driver and increments the number of active + 62:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * linked drivers. + 63:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @note The number of linked drivers (volumes) is up to 10 due to FatFs limits + 64:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @param drv: pointer to the disk IO Driver structure + 65:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @param path: pointer to the logical drive path + 66:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @retval Returns 0 in case of success, otherwise 1. + 67:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** */ + 68:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t FATFS_LinkDriver(const Diskio_drvTypeDef *drv, char *path) + 69:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** { + 135 .loc 1 69 1 is_stmt 1 view -0 + 136 .cfi_startproc + 137 @ args = 0, pretend = 0, frame = 0 + 138 @ frame_needed = 0, uses_anonymous_args = 0 + 139 .loc 1 69 1 is_stmt 0 view .LVU36 + 140 0000 08B5 push {r3, lr} + 141 .LCFI2: + 142 .cfi_def_cfa_offset 8 + 143 .cfi_offset 3, -8 + 144 .cfi_offset 14, -4 + 70:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** return FATFS_LinkDriverEx(drv, path, 0); + 145 .loc 1 70 3 is_stmt 1 view .LVU37 + 146 .loc 1 70 10 is_stmt 0 view .LVU38 + 147 0002 0022 movs r2, #0 + 148 0004 FFF7FEFF bl FATFS_LinkDriverEx + 149 .LVL12: + 71:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** } + 150 .loc 1 71 1 view .LVU39 + 151 0008 08BD pop {r3, pc} + 152 .cfi_endproc + 153 .LFE1184: + 155 .section .text.FATFS_UnLinkDriverEx,"ax",%progbits + 156 .align 1 + 157 .global FATFS_UnLinkDriverEx + 158 .syntax unified + ARM GAS /tmp/cczj2lnx.s page 5 + + + 159 .thumb + 160 .thumb_func + 161 .fpu fpv5-d16 + 163 FATFS_UnLinkDriverEx: + 164 .LVL13: + 165 .LFB1185: + 72:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 73:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /** + 74:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @brief Unlinks a diskio driver and decrements the number of active linked + 75:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * drivers. + 76:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @param path: pointer to the logical drive path + 77:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @param lun : not used + 78:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @retval Returns 0 in case of success, otherwise 1. + 79:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** */ + 80:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t FATFS_UnLinkDriverEx(char *path, uint8_t lun) + 81:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** { + 166 .loc 1 81 1 is_stmt 1 view -0 + 167 .cfi_startproc + 168 @ args = 0, pretend = 0, frame = 0 + 169 @ frame_needed = 0, uses_anonymous_args = 0 + 170 @ link register save eliminated. + 82:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t DiskNum = 0; + 171 .loc 1 82 3 view .LVU41 + 83:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t ret = 1; + 172 .loc 1 83 3 view .LVU42 + 84:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 85:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** if(disk.nbr >= 1) + 173 .loc 1 85 3 view .LVU43 + 174 .loc 1 85 10 is_stmt 0 view .LVU44 + 175 0000 0D4B ldr r3, .L16 + 176 0002 5B7A ldrb r3, [r3, #9] @ zero_extendqisi2 + 177 .loc 1 85 5 view .LVU45 + 178 0004 9BB1 cbz r3, .L14 + 86:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** { + 87:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** DiskNum = path[0] - '0'; + 179 .loc 1 87 5 is_stmt 1 view .LVU46 + 180 .loc 1 87 19 is_stmt 0 view .LVU47 + 181 0006 0378 ldrb r3, [r0] @ zero_extendqisi2 + 182 .loc 1 87 13 view .LVU48 + 183 0008 303B subs r3, r3, #48 + 184 000a DBB2 uxtb r3, r3 + 185 .LVL14: + 88:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** if(disk.drv[DiskNum] != 0) + 186 .loc 1 88 5 is_stmt 1 view .LVU49 + 187 .loc 1 88 16 is_stmt 0 view .LVU50 + 188 000c 0A4A ldr r2, .L16 + 189 000e 02EB8302 add r2, r2, r3, lsl #2 + 190 0012 5268 ldr r2, [r2, #4] + 191 .loc 1 88 7 view .LVU51 + 192 0014 6AB1 cbz r2, .L15 + 89:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** { + 90:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** disk.drv[DiskNum] = 0; + 193 .loc 1 90 7 is_stmt 1 view .LVU52 + 194 .loc 1 90 25 is_stmt 0 view .LVU53 + 195 0016 084A ldr r2, .L16 + 196 0018 02EB8301 add r1, r2, r3, lsl #2 + 197 .LVL15: + ARM GAS /tmp/cczj2lnx.s page 6 + + + 198 .loc 1 90 25 view .LVU54 + 199 001c 0020 movs r0, #0 + 200 .LVL16: + 201 .loc 1 90 25 view .LVU55 + 202 001e 4860 str r0, [r1, #4] + 91:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** disk.lun[DiskNum] = 0; + 203 .loc 1 91 7 is_stmt 1 view .LVU56 + 204 .loc 1 91 25 is_stmt 0 view .LVU57 + 205 0020 1344 add r3, r3, r2 + 206 0022 1872 strb r0, [r3, #8] + 92:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** disk.nbr--; + 207 .loc 1 92 7 is_stmt 1 view .LVU58 + 208 .loc 1 92 11 is_stmt 0 view .LVU59 + 209 0024 537A ldrb r3, [r2, #9] @ zero_extendqisi2 + 210 .loc 1 92 15 view .LVU60 + 211 0026 013B subs r3, r3, #1 + 212 0028 DBB2 uxtb r3, r3 + 213 002a 5372 strb r3, [r2, #9] + 93:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** ret = 0; + 214 .loc 1 93 7 is_stmt 1 view .LVU61 + 215 .LVL17: + 216 .loc 1 93 7 is_stmt 0 view .LVU62 + 217 002c 7047 bx lr + 218 .LVL18: + 219 .L14: + 83:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 220 .loc 1 83 11 view .LVU63 + 221 002e 0120 movs r0, #1 + 222 .LVL19: + 83:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 223 .loc 1 83 11 view .LVU64 + 224 0030 7047 bx lr + 225 .LVL20: + 226 .L15: + 83:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 227 .loc 1 83 11 view .LVU65 + 228 0032 0120 movs r0, #1 + 229 .LVL21: + 94:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** } + 95:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** } + 96:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 97:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** return ret; + 230 .loc 1 97 3 is_stmt 1 view .LVU66 + 98:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** } + 231 .loc 1 98 1 is_stmt 0 view .LVU67 + 232 0034 7047 bx lr + 233 .L17: + 234 0036 00BF .align 2 + 235 .L16: + 236 0038 00000000 .word .LANCHOR0 + 237 .cfi_endproc + 238 .LFE1185: + 240 .section .text.FATFS_UnLinkDriver,"ax",%progbits + 241 .align 1 + 242 .global FATFS_UnLinkDriver + 243 .syntax unified + 244 .thumb + ARM GAS /tmp/cczj2lnx.s page 7 + + + 245 .thumb_func + 246 .fpu fpv5-d16 + 248 FATFS_UnLinkDriver: + 249 .LVL22: + 250 .LFB1186: + 99:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 100:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /** + 101:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @brief Unlinks a diskio driver and decrements the number of active linked + 102:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * drivers. + 103:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @param path: pointer to the logical drive path + 104:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @retval Returns 0 in case of success, otherwise 1. + 105:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** */ + 106:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t FATFS_UnLinkDriver(char *path) + 107:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** { + 251 .loc 1 107 1 is_stmt 1 view -0 + 252 .cfi_startproc + 253 @ args = 0, pretend = 0, frame = 0 + 254 @ frame_needed = 0, uses_anonymous_args = 0 + 255 .loc 1 107 1 is_stmt 0 view .LVU69 + 256 0000 08B5 push {r3, lr} + 257 .LCFI3: + 258 .cfi_def_cfa_offset 8 + 259 .cfi_offset 3, -8 + 260 .cfi_offset 14, -4 + 108:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** return FATFS_UnLinkDriverEx(path, 0); + 261 .loc 1 108 3 is_stmt 1 view .LVU70 + 262 .loc 1 108 10 is_stmt 0 view .LVU71 + 263 0002 0021 movs r1, #0 + 264 0004 FFF7FEFF bl FATFS_UnLinkDriverEx + 265 .LVL23: + 109:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** } + 266 .loc 1 109 1 view .LVU72 + 267 0008 08BD pop {r3, pc} + 268 .cfi_endproc + 269 .LFE1186: + 271 .section .text.FATFS_GetAttachedDriversNbr,"ax",%progbits + 272 .align 1 + 273 .global FATFS_GetAttachedDriversNbr + 274 .syntax unified + 275 .thumb + 276 .thumb_func + 277 .fpu fpv5-d16 + 279 FATFS_GetAttachedDriversNbr: + 280 .LFB1187: + 110:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** + 111:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** /** + 112:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @brief Gets number of linked drivers to the FatFs module. + 113:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @param None + 114:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** * @retval Number of attached drivers. + 115:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** */ + 116:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** uint8_t FATFS_GetAttachedDriversNbr(void) + 117:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** { + 281 .loc 1 117 1 is_stmt 1 view -0 + 282 .cfi_startproc + 283 @ args = 0, pretend = 0, frame = 0 + 284 @ frame_needed = 0, uses_anonymous_args = 0 + 285 @ link register save eliminated. + ARM GAS /tmp/cczj2lnx.s page 8 + + + 118:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** return disk.nbr; + 286 .loc 1 118 3 view .LVU74 + 287 .loc 1 118 14 is_stmt 0 view .LVU75 + 288 0000 014B ldr r3, .L21 + 289 0002 587A ldrb r0, [r3, #9] @ zero_extendqisi2 + 119:Middlewares/Third_Party/FatFs/src/ff_gen_drv.c **** } + 290 .loc 1 119 1 view .LVU76 + 291 0004 7047 bx lr + 292 .L22: + 293 0006 00BF .align 2 + 294 .L21: + 295 0008 00000000 .word .LANCHOR0 + 296 .cfi_endproc + 297 .LFE1187: + 299 .global disk + 300 .section .bss.disk,"aw",%nobits + 301 .align 2 + 302 .set .LANCHOR0,. + 0 + 305 disk: + 306 0000 00000000 .space 12 + 306 00000000 + 306 00000000 + 307 .text + 308 .Letext0: + 309 .file 2 "Middlewares/Third_Party/FatFs/src/integer.h" + 310 .file 3 "Middlewares/Third_Party/FatFs/src/diskio.h" + 311 .file 4 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 312 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" + 313 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" + 314 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 315 .file 8 "Middlewares/Third_Party/FatFs/src/ff_gen_drv.h" + ARM GAS /tmp/cczj2lnx.s page 9 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 ff_gen_drv.c + /tmp/cczj2lnx.s:17 .text.FATFS_LinkDriverEx:0000000000000000 $t + /tmp/cczj2lnx.s:25 .text.FATFS_LinkDriverEx:0000000000000000 FATFS_LinkDriverEx + /tmp/cczj2lnx.s:120 .text.FATFS_LinkDriverEx:0000000000000050 $d + /tmp/cczj2lnx.s:125 .text.FATFS_LinkDriver:0000000000000000 $t + /tmp/cczj2lnx.s:132 .text.FATFS_LinkDriver:0000000000000000 FATFS_LinkDriver + /tmp/cczj2lnx.s:156 .text.FATFS_UnLinkDriverEx:0000000000000000 $t + /tmp/cczj2lnx.s:163 .text.FATFS_UnLinkDriverEx:0000000000000000 FATFS_UnLinkDriverEx + /tmp/cczj2lnx.s:236 .text.FATFS_UnLinkDriverEx:0000000000000038 $d + /tmp/cczj2lnx.s:241 .text.FATFS_UnLinkDriver:0000000000000000 $t + /tmp/cczj2lnx.s:248 .text.FATFS_UnLinkDriver:0000000000000000 FATFS_UnLinkDriver + /tmp/cczj2lnx.s:272 .text.FATFS_GetAttachedDriversNbr:0000000000000000 $t + /tmp/cczj2lnx.s:279 .text.FATFS_GetAttachedDriversNbr:0000000000000000 FATFS_GetAttachedDriversNbr + /tmp/cczj2lnx.s:295 .text.FATFS_GetAttachedDriversNbr:0000000000000008 $d + /tmp/cczj2lnx.s:305 .bss.disk:0000000000000000 disk + /tmp/cczj2lnx.s:301 .bss.disk:0000000000000000 $d + +NO UNDEFINED SYMBOLS diff --git a/build/ff_gen_drv.o b/build/ff_gen_drv.o new file mode 100644 index 0000000..9624276 Binary files /dev/null and b/build/ff_gen_drv.o differ diff --git a/build/main.d b/build/main.d new file mode 100644 index 0000000..95e55c9 --- /dev/null +++ b/build/main.d @@ -0,0 +1,108 @@ +build/main.o: Src/main.c Inc/main.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h Inc/fatfs.h \ + Middlewares/Third_Party/FatFs/src/ff.h \ + Middlewares/Third_Party/FatFs/src/integer.h Inc/ffconf.h Inc/main.h \ + Inc/bsp_driver_sd.h Inc/fatfs_platform.h \ + Middlewares/Third_Party/FatFs/src/ff_gen_drv.h \ + Middlewares/Third_Party/FatFs/src/diskio.h \ + Middlewares/Third_Party/FatFs/src/ff.h Inc/sd_diskio.h \ + Inc/File_Handling.h Inc/fatfs.h +Inc/main.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: +Inc/fatfs.h: +Middlewares/Third_Party/FatFs/src/ff.h: +Middlewares/Third_Party/FatFs/src/integer.h: +Inc/ffconf.h: +Inc/main.h: +Inc/bsp_driver_sd.h: +Inc/fatfs_platform.h: +Middlewares/Third_Party/FatFs/src/ff_gen_drv.h: +Middlewares/Third_Party/FatFs/src/diskio.h: +Middlewares/Third_Party/FatFs/src/ff.h: +Inc/sd_diskio.h: +Inc/File_Handling.h: +Inc/fatfs.h: diff --git a/build/main.lst b/build/main.lst new file mode 100644 index 0000000..3d3986c --- /dev/null +++ b/build/main.lst @@ -0,0 +1,32056 @@ +ARM GAS /tmp/ccdsDELB.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "main.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.NVIC_EncodePriority,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 NVIC_EncodePriority: + 25 .LVL0: + 26 .LFB113: + 27 .file 1 "Drivers/CMSIS/Include/core_cm7.h" + 1:Drivers/CMSIS/Include/core_cm7.h **** /**************************************************************************//** + 2:Drivers/CMSIS/Include/core_cm7.h **** * @file core_cm7.h + 3:Drivers/CMSIS/Include/core_cm7.h **** * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + 4:Drivers/CMSIS/Include/core_cm7.h **** * @version V5.0.8 + 5:Drivers/CMSIS/Include/core_cm7.h **** * @date 04. June 2018 + 6:Drivers/CMSIS/Include/core_cm7.h **** ******************************************************************************/ + 7:Drivers/CMSIS/Include/core_cm7.h **** /* + 8:Drivers/CMSIS/Include/core_cm7.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + 9:Drivers/CMSIS/Include/core_cm7.h **** * + 10:Drivers/CMSIS/Include/core_cm7.h **** * SPDX-License-Identifier: Apache-2.0 + 11:Drivers/CMSIS/Include/core_cm7.h **** * + 12:Drivers/CMSIS/Include/core_cm7.h **** * Licensed under the Apache License, Version 2.0 (the License); you may + 13:Drivers/CMSIS/Include/core_cm7.h **** * not use this file except in compliance with the License. + 14:Drivers/CMSIS/Include/core_cm7.h **** * You may obtain a copy of the License at + 15:Drivers/CMSIS/Include/core_cm7.h **** * + 16:Drivers/CMSIS/Include/core_cm7.h **** * www.apache.org/licenses/LICENSE-2.0 + 17:Drivers/CMSIS/Include/core_cm7.h **** * + 18:Drivers/CMSIS/Include/core_cm7.h **** * Unless required by applicable law or agreed to in writing, software + 19:Drivers/CMSIS/Include/core_cm7.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT + 20:Drivers/CMSIS/Include/core_cm7.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 21:Drivers/CMSIS/Include/core_cm7.h **** * See the License for the specific language governing permissions and + 22:Drivers/CMSIS/Include/core_cm7.h **** * limitations under the License. + 23:Drivers/CMSIS/Include/core_cm7.h **** */ + 24:Drivers/CMSIS/Include/core_cm7.h **** + 25:Drivers/CMSIS/Include/core_cm7.h **** #if defined ( __ICCARM__ ) + 26:Drivers/CMSIS/Include/core_cm7.h **** #pragma system_include /* treat file as system include file for MISRA check */ + 27:Drivers/CMSIS/Include/core_cm7.h **** #elif defined (__clang__) + 28:Drivers/CMSIS/Include/core_cm7.h **** #pragma clang system_header /* treat file as system include file */ + 29:Drivers/CMSIS/Include/core_cm7.h **** #endif + 30:Drivers/CMSIS/Include/core_cm7.h **** + 31:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __CORE_CM7_H_GENERIC + ARM GAS /tmp/ccdsDELB.s page 2 + + + 32:Drivers/CMSIS/Include/core_cm7.h **** #define __CORE_CM7_H_GENERIC + 33:Drivers/CMSIS/Include/core_cm7.h **** + 34:Drivers/CMSIS/Include/core_cm7.h **** #include + 35:Drivers/CMSIS/Include/core_cm7.h **** + 36:Drivers/CMSIS/Include/core_cm7.h **** #ifdef __cplusplus + 37:Drivers/CMSIS/Include/core_cm7.h **** extern "C" { + 38:Drivers/CMSIS/Include/core_cm7.h **** #endif + 39:Drivers/CMSIS/Include/core_cm7.h **** + 40:Drivers/CMSIS/Include/core_cm7.h **** /** + 41:Drivers/CMSIS/Include/core_cm7.h **** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + 42:Drivers/CMSIS/Include/core_cm7.h **** CMSIS violates the following MISRA-C:2004 rules: + 43:Drivers/CMSIS/Include/core_cm7.h **** + 44:Drivers/CMSIS/Include/core_cm7.h **** \li Required Rule 8.5, object/function definition in header file.
+ 45:Drivers/CMSIS/Include/core_cm7.h **** Function definitions in header files are used to allow 'inlining'. + 46:Drivers/CMSIS/Include/core_cm7.h **** + 47:Drivers/CMSIS/Include/core_cm7.h **** \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ 48:Drivers/CMSIS/Include/core_cm7.h **** Unions are used for effective representation of core registers. + 49:Drivers/CMSIS/Include/core_cm7.h **** + 50:Drivers/CMSIS/Include/core_cm7.h **** \li Advisory Rule 19.7, Function-like macro defined.
+ 51:Drivers/CMSIS/Include/core_cm7.h **** Function-like macros are used to allow more efficient code. + 52:Drivers/CMSIS/Include/core_cm7.h **** */ + 53:Drivers/CMSIS/Include/core_cm7.h **** + 54:Drivers/CMSIS/Include/core_cm7.h **** + 55:Drivers/CMSIS/Include/core_cm7.h **** /******************************************************************************* + 56:Drivers/CMSIS/Include/core_cm7.h **** * CMSIS definitions + 57:Drivers/CMSIS/Include/core_cm7.h **** ******************************************************************************/ + 58:Drivers/CMSIS/Include/core_cm7.h **** /** + 59:Drivers/CMSIS/Include/core_cm7.h **** \ingroup Cortex_M7 + 60:Drivers/CMSIS/Include/core_cm7.h **** @{ + 61:Drivers/CMSIS/Include/core_cm7.h **** */ + 62:Drivers/CMSIS/Include/core_cm7.h **** + 63:Drivers/CMSIS/Include/core_cm7.h **** #include "cmsis_version.h" + 64:Drivers/CMSIS/Include/core_cm7.h **** + 65:Drivers/CMSIS/Include/core_cm7.h **** /* CMSIS CM7 definitions */ + 66:Drivers/CMSIS/Include/core_cm7.h **** #define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:1 + 67:Drivers/CMSIS/Include/core_cm7.h **** #define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0 + 68:Drivers/CMSIS/Include/core_cm7.h **** #define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + 69:Drivers/CMSIS/Include/core_cm7.h **** __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS + 70:Drivers/CMSIS/Include/core_cm7.h **** + 71:Drivers/CMSIS/Include/core_cm7.h **** #define __CORTEX_M (7U) /*!< Cortex-M Core */ + 72:Drivers/CMSIS/Include/core_cm7.h **** + 73:Drivers/CMSIS/Include/core_cm7.h **** /** __FPU_USED indicates whether an FPU is used or not. + 74:Drivers/CMSIS/Include/core_cm7.h **** For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and fun + 75:Drivers/CMSIS/Include/core_cm7.h **** */ + 76:Drivers/CMSIS/Include/core_cm7.h **** #if defined ( __CC_ARM ) + 77:Drivers/CMSIS/Include/core_cm7.h **** #if defined __TARGET_FPU_VFP + 78:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 79:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 80:Drivers/CMSIS/Include/core_cm7.h **** #else + 81:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 82:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 83:Drivers/CMSIS/Include/core_cm7.h **** #endif + 84:Drivers/CMSIS/Include/core_cm7.h **** #else + 85:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 86:Drivers/CMSIS/Include/core_cm7.h **** #endif + 87:Drivers/CMSIS/Include/core_cm7.h **** + 88:Drivers/CMSIS/Include/core_cm7.h **** #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + ARM GAS /tmp/ccdsDELB.s page 3 + + + 89:Drivers/CMSIS/Include/core_cm7.h **** #if defined __ARM_PCS_VFP + 90:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 91:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 92:Drivers/CMSIS/Include/core_cm7.h **** #else + 93:Drivers/CMSIS/Include/core_cm7.h **** #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESEN + 94:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 95:Drivers/CMSIS/Include/core_cm7.h **** #endif + 96:Drivers/CMSIS/Include/core_cm7.h **** #else + 97:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 98:Drivers/CMSIS/Include/core_cm7.h **** #endif + 99:Drivers/CMSIS/Include/core_cm7.h **** + 100:Drivers/CMSIS/Include/core_cm7.h **** #elif defined ( __GNUC__ ) + 101:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__VFP_FP__) && !defined(__SOFTFP__) + 102:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 103:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 104:Drivers/CMSIS/Include/core_cm7.h **** #else + 105:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 106:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 107:Drivers/CMSIS/Include/core_cm7.h **** #endif + 108:Drivers/CMSIS/Include/core_cm7.h **** #else + 109:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 110:Drivers/CMSIS/Include/core_cm7.h **** #endif + 111:Drivers/CMSIS/Include/core_cm7.h **** + 112:Drivers/CMSIS/Include/core_cm7.h **** #elif defined ( __ICCARM__ ) + 113:Drivers/CMSIS/Include/core_cm7.h **** #if defined __ARMVFP__ + 114:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 115:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 116:Drivers/CMSIS/Include/core_cm7.h **** #else + 117:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 118:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 119:Drivers/CMSIS/Include/core_cm7.h **** #endif + 120:Drivers/CMSIS/Include/core_cm7.h **** #else + 121:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 122:Drivers/CMSIS/Include/core_cm7.h **** #endif + 123:Drivers/CMSIS/Include/core_cm7.h **** + 124:Drivers/CMSIS/Include/core_cm7.h **** #elif defined ( __TI_ARM__ ) + 125:Drivers/CMSIS/Include/core_cm7.h **** #if defined __TI_VFP_SUPPORT__ + 126:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 127:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 128:Drivers/CMSIS/Include/core_cm7.h **** #else + 129:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 130:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 131:Drivers/CMSIS/Include/core_cm7.h **** #endif + 132:Drivers/CMSIS/Include/core_cm7.h **** #else + 133:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 134:Drivers/CMSIS/Include/core_cm7.h **** #endif + 135:Drivers/CMSIS/Include/core_cm7.h **** + 136:Drivers/CMSIS/Include/core_cm7.h **** #elif defined ( __TASKING__ ) + 137:Drivers/CMSIS/Include/core_cm7.h **** #if defined __FPU_VFP__ + 138:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 139:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 140:Drivers/CMSIS/Include/core_cm7.h **** #else + 141:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 142:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 143:Drivers/CMSIS/Include/core_cm7.h **** #endif + 144:Drivers/CMSIS/Include/core_cm7.h **** #else + 145:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + ARM GAS /tmp/ccdsDELB.s page 4 + + + 146:Drivers/CMSIS/Include/core_cm7.h **** #endif + 147:Drivers/CMSIS/Include/core_cm7.h **** + 148:Drivers/CMSIS/Include/core_cm7.h **** #elif defined ( __CSMC__ ) + 149:Drivers/CMSIS/Include/core_cm7.h **** #if ( __CSMC__ & 0x400U) + 150:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 151:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 152:Drivers/CMSIS/Include/core_cm7.h **** #else + 153:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 154:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 155:Drivers/CMSIS/Include/core_cm7.h **** #endif + 156:Drivers/CMSIS/Include/core_cm7.h **** #else + 157:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 158:Drivers/CMSIS/Include/core_cm7.h **** #endif + 159:Drivers/CMSIS/Include/core_cm7.h **** + 160:Drivers/CMSIS/Include/core_cm7.h **** #endif + 161:Drivers/CMSIS/Include/core_cm7.h **** + 162:Drivers/CMSIS/Include/core_cm7.h **** #include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + 163:Drivers/CMSIS/Include/core_cm7.h **** + 164:Drivers/CMSIS/Include/core_cm7.h **** + 165:Drivers/CMSIS/Include/core_cm7.h **** #ifdef __cplusplus + 166:Drivers/CMSIS/Include/core_cm7.h **** } + 167:Drivers/CMSIS/Include/core_cm7.h **** #endif + 168:Drivers/CMSIS/Include/core_cm7.h **** + 169:Drivers/CMSIS/Include/core_cm7.h **** #endif /* __CORE_CM7_H_GENERIC */ + 170:Drivers/CMSIS/Include/core_cm7.h **** + 171:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __CMSIS_GENERIC + 172:Drivers/CMSIS/Include/core_cm7.h **** + 173:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __CORE_CM7_H_DEPENDANT + 174:Drivers/CMSIS/Include/core_cm7.h **** #define __CORE_CM7_H_DEPENDANT + 175:Drivers/CMSIS/Include/core_cm7.h **** + 176:Drivers/CMSIS/Include/core_cm7.h **** #ifdef __cplusplus + 177:Drivers/CMSIS/Include/core_cm7.h **** extern "C" { + 178:Drivers/CMSIS/Include/core_cm7.h **** #endif + 179:Drivers/CMSIS/Include/core_cm7.h **** + 180:Drivers/CMSIS/Include/core_cm7.h **** /* check device defines and use defaults */ + 181:Drivers/CMSIS/Include/core_cm7.h **** #if defined __CHECK_DEVICE_DEFINES + 182:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __CM7_REV + 183:Drivers/CMSIS/Include/core_cm7.h **** #define __CM7_REV 0x0000U + 184:Drivers/CMSIS/Include/core_cm7.h **** #warning "__CM7_REV not defined in device header file; using default!" + 185:Drivers/CMSIS/Include/core_cm7.h **** #endif + 186:Drivers/CMSIS/Include/core_cm7.h **** + 187:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __FPU_PRESENT + 188:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_PRESENT 0U + 189:Drivers/CMSIS/Include/core_cm7.h **** #warning "__FPU_PRESENT not defined in device header file; using default!" + 190:Drivers/CMSIS/Include/core_cm7.h **** #endif + 191:Drivers/CMSIS/Include/core_cm7.h **** + 192:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __MPU_PRESENT + 193:Drivers/CMSIS/Include/core_cm7.h **** #define __MPU_PRESENT 0U + 194:Drivers/CMSIS/Include/core_cm7.h **** #warning "__MPU_PRESENT not defined in device header file; using default!" + 195:Drivers/CMSIS/Include/core_cm7.h **** #endif + 196:Drivers/CMSIS/Include/core_cm7.h **** + 197:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __ICACHE_PRESENT + 198:Drivers/CMSIS/Include/core_cm7.h **** #define __ICACHE_PRESENT 0U + 199:Drivers/CMSIS/Include/core_cm7.h **** #warning "__ICACHE_PRESENT not defined in device header file; using default!" + 200:Drivers/CMSIS/Include/core_cm7.h **** #endif + 201:Drivers/CMSIS/Include/core_cm7.h **** + 202:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __DCACHE_PRESENT + ARM GAS /tmp/ccdsDELB.s page 5 + + + 203:Drivers/CMSIS/Include/core_cm7.h **** #define __DCACHE_PRESENT 0U + 204:Drivers/CMSIS/Include/core_cm7.h **** #warning "__DCACHE_PRESENT not defined in device header file; using default!" + 205:Drivers/CMSIS/Include/core_cm7.h **** #endif + 206:Drivers/CMSIS/Include/core_cm7.h **** + 207:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __DTCM_PRESENT + 208:Drivers/CMSIS/Include/core_cm7.h **** #define __DTCM_PRESENT 0U + 209:Drivers/CMSIS/Include/core_cm7.h **** #warning "__DTCM_PRESENT not defined in device header file; using default!" + 210:Drivers/CMSIS/Include/core_cm7.h **** #endif + 211:Drivers/CMSIS/Include/core_cm7.h **** + 212:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __NVIC_PRIO_BITS + 213:Drivers/CMSIS/Include/core_cm7.h **** #define __NVIC_PRIO_BITS 3U + 214:Drivers/CMSIS/Include/core_cm7.h **** #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + 215:Drivers/CMSIS/Include/core_cm7.h **** #endif + 216:Drivers/CMSIS/Include/core_cm7.h **** + 217:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __Vendor_SysTickConfig + 218:Drivers/CMSIS/Include/core_cm7.h **** #define __Vendor_SysTickConfig 0U + 219:Drivers/CMSIS/Include/core_cm7.h **** #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + 220:Drivers/CMSIS/Include/core_cm7.h **** #endif + 221:Drivers/CMSIS/Include/core_cm7.h **** #endif + 222:Drivers/CMSIS/Include/core_cm7.h **** + 223:Drivers/CMSIS/Include/core_cm7.h **** /* IO definitions (access restrictions to peripheral registers) */ + 224:Drivers/CMSIS/Include/core_cm7.h **** /** + 225:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_glob_defs CMSIS Global Defines + 226:Drivers/CMSIS/Include/core_cm7.h **** + 227:Drivers/CMSIS/Include/core_cm7.h **** IO Type Qualifiers are used + 228:Drivers/CMSIS/Include/core_cm7.h **** \li to specify the access to peripheral variables. + 229:Drivers/CMSIS/Include/core_cm7.h **** \li for automatic generation of peripheral register debug information. + 230:Drivers/CMSIS/Include/core_cm7.h **** */ + 231:Drivers/CMSIS/Include/core_cm7.h **** #ifdef __cplusplus + 232:Drivers/CMSIS/Include/core_cm7.h **** #define __I volatile /*!< Defines 'read only' permissions */ + 233:Drivers/CMSIS/Include/core_cm7.h **** #else + 234:Drivers/CMSIS/Include/core_cm7.h **** #define __I volatile const /*!< Defines 'read only' permissions */ + 235:Drivers/CMSIS/Include/core_cm7.h **** #endif + 236:Drivers/CMSIS/Include/core_cm7.h **** #define __O volatile /*!< Defines 'write only' permissions */ + 237:Drivers/CMSIS/Include/core_cm7.h **** #define __IO volatile /*!< Defines 'read / write' permissions */ + 238:Drivers/CMSIS/Include/core_cm7.h **** + 239:Drivers/CMSIS/Include/core_cm7.h **** /* following defines should be used for structure members */ + 240:Drivers/CMSIS/Include/core_cm7.h **** #define __IM volatile const /*! Defines 'read only' structure member permissions */ + 241:Drivers/CMSIS/Include/core_cm7.h **** #define __OM volatile /*! Defines 'write only' structure member permissions */ + 242:Drivers/CMSIS/Include/core_cm7.h **** #define __IOM volatile /*! Defines 'read / write' structure member permissions */ + 243:Drivers/CMSIS/Include/core_cm7.h **** + 244:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group Cortex_M7 */ + 245:Drivers/CMSIS/Include/core_cm7.h **** + 246:Drivers/CMSIS/Include/core_cm7.h **** + 247:Drivers/CMSIS/Include/core_cm7.h **** + 248:Drivers/CMSIS/Include/core_cm7.h **** /******************************************************************************* + 249:Drivers/CMSIS/Include/core_cm7.h **** * Register Abstraction + 250:Drivers/CMSIS/Include/core_cm7.h **** Core Register contain: + 251:Drivers/CMSIS/Include/core_cm7.h **** - Core Register + 252:Drivers/CMSIS/Include/core_cm7.h **** - Core NVIC Register + 253:Drivers/CMSIS/Include/core_cm7.h **** - Core SCB Register + 254:Drivers/CMSIS/Include/core_cm7.h **** - Core SysTick Register + 255:Drivers/CMSIS/Include/core_cm7.h **** - Core Debug Register + 256:Drivers/CMSIS/Include/core_cm7.h **** - Core MPU Register + 257:Drivers/CMSIS/Include/core_cm7.h **** - Core FPU Register + 258:Drivers/CMSIS/Include/core_cm7.h **** ******************************************************************************/ + 259:Drivers/CMSIS/Include/core_cm7.h **** /** + ARM GAS /tmp/ccdsDELB.s page 6 + + + 260:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_core_register Defines and Type Definitions + 261:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions and defines for Cortex-M processor based devices. + 262:Drivers/CMSIS/Include/core_cm7.h **** */ + 263:Drivers/CMSIS/Include/core_cm7.h **** + 264:Drivers/CMSIS/Include/core_cm7.h **** /** + 265:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register + 266:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_CORE Status and Control Registers + 267:Drivers/CMSIS/Include/core_cm7.h **** \brief Core Register type definitions. + 268:Drivers/CMSIS/Include/core_cm7.h **** @{ + 269:Drivers/CMSIS/Include/core_cm7.h **** */ + 270:Drivers/CMSIS/Include/core_cm7.h **** + 271:Drivers/CMSIS/Include/core_cm7.h **** /** + 272:Drivers/CMSIS/Include/core_cm7.h **** \brief Union type to access the Application Program Status Register (APSR). + 273:Drivers/CMSIS/Include/core_cm7.h **** */ + 274:Drivers/CMSIS/Include/core_cm7.h **** typedef union + 275:Drivers/CMSIS/Include/core_cm7.h **** { + 276:Drivers/CMSIS/Include/core_cm7.h **** struct + 277:Drivers/CMSIS/Include/core_cm7.h **** { + 278:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + 279:Drivers/CMSIS/Include/core_cm7.h **** uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + 280:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + 281:Drivers/CMSIS/Include/core_cm7.h **** uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 282:Drivers/CMSIS/Include/core_cm7.h **** uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + 283:Drivers/CMSIS/Include/core_cm7.h **** uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + 284:Drivers/CMSIS/Include/core_cm7.h **** uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + 285:Drivers/CMSIS/Include/core_cm7.h **** uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + 286:Drivers/CMSIS/Include/core_cm7.h **** } b; /*!< Structure used for bit access */ + 287:Drivers/CMSIS/Include/core_cm7.h **** uint32_t w; /*!< Type used for word access */ + 288:Drivers/CMSIS/Include/core_cm7.h **** } APSR_Type; + 289:Drivers/CMSIS/Include/core_cm7.h **** + 290:Drivers/CMSIS/Include/core_cm7.h **** /* APSR Register Definitions */ + 291:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_N_Pos 31U /*!< APSR + 292:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR + 293:Drivers/CMSIS/Include/core_cm7.h **** + 294:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_Z_Pos 30U /*!< APSR + 295:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR + 296:Drivers/CMSIS/Include/core_cm7.h **** + 297:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_C_Pos 29U /*!< APSR + 298:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR + 299:Drivers/CMSIS/Include/core_cm7.h **** + 300:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_V_Pos 28U /*!< APSR + 301:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR + 302:Drivers/CMSIS/Include/core_cm7.h **** + 303:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_Q_Pos 27U /*!< APSR + 304:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR + 305:Drivers/CMSIS/Include/core_cm7.h **** + 306:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_GE_Pos 16U /*!< APSR + 307:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR + 308:Drivers/CMSIS/Include/core_cm7.h **** + 309:Drivers/CMSIS/Include/core_cm7.h **** + 310:Drivers/CMSIS/Include/core_cm7.h **** /** + 311:Drivers/CMSIS/Include/core_cm7.h **** \brief Union type to access the Interrupt Program Status Register (IPSR). + 312:Drivers/CMSIS/Include/core_cm7.h **** */ + 313:Drivers/CMSIS/Include/core_cm7.h **** typedef union + 314:Drivers/CMSIS/Include/core_cm7.h **** { + 315:Drivers/CMSIS/Include/core_cm7.h **** struct + 316:Drivers/CMSIS/Include/core_cm7.h **** { + ARM GAS /tmp/ccdsDELB.s page 7 + + + 317:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + 318:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + 319:Drivers/CMSIS/Include/core_cm7.h **** } b; /*!< Structure used for bit access */ + 320:Drivers/CMSIS/Include/core_cm7.h **** uint32_t w; /*!< Type used for word access */ + 321:Drivers/CMSIS/Include/core_cm7.h **** } IPSR_Type; + 322:Drivers/CMSIS/Include/core_cm7.h **** + 323:Drivers/CMSIS/Include/core_cm7.h **** /* IPSR Register Definitions */ + 324:Drivers/CMSIS/Include/core_cm7.h **** #define IPSR_ISR_Pos 0U /*!< IPSR + 325:Drivers/CMSIS/Include/core_cm7.h **** #define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR + 326:Drivers/CMSIS/Include/core_cm7.h **** + 327:Drivers/CMSIS/Include/core_cm7.h **** + 328:Drivers/CMSIS/Include/core_cm7.h **** /** + 329:Drivers/CMSIS/Include/core_cm7.h **** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + 330:Drivers/CMSIS/Include/core_cm7.h **** */ + 331:Drivers/CMSIS/Include/core_cm7.h **** typedef union + 332:Drivers/CMSIS/Include/core_cm7.h **** { + 333:Drivers/CMSIS/Include/core_cm7.h **** struct + 334:Drivers/CMSIS/Include/core_cm7.h **** { + 335:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + 336:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + 337:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + 338:Drivers/CMSIS/Include/core_cm7.h **** uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + 339:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + 340:Drivers/CMSIS/Include/core_cm7.h **** uint32_t T:1; /*!< bit: 24 Thumb bit */ + 341:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + 342:Drivers/CMSIS/Include/core_cm7.h **** uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 343:Drivers/CMSIS/Include/core_cm7.h **** uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + 344:Drivers/CMSIS/Include/core_cm7.h **** uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + 345:Drivers/CMSIS/Include/core_cm7.h **** uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + 346:Drivers/CMSIS/Include/core_cm7.h **** uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + 347:Drivers/CMSIS/Include/core_cm7.h **** } b; /*!< Structure used for bit access */ + 348:Drivers/CMSIS/Include/core_cm7.h **** uint32_t w; /*!< Type used for word access */ + 349:Drivers/CMSIS/Include/core_cm7.h **** } xPSR_Type; + 350:Drivers/CMSIS/Include/core_cm7.h **** + 351:Drivers/CMSIS/Include/core_cm7.h **** /* xPSR Register Definitions */ + 352:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_N_Pos 31U /*!< xPSR + 353:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR + 354:Drivers/CMSIS/Include/core_cm7.h **** + 355:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_Z_Pos 30U /*!< xPSR + 356:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR + 357:Drivers/CMSIS/Include/core_cm7.h **** + 358:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_C_Pos 29U /*!< xPSR + 359:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR + 360:Drivers/CMSIS/Include/core_cm7.h **** + 361:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_V_Pos 28U /*!< xPSR + 362:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR + 363:Drivers/CMSIS/Include/core_cm7.h **** + 364:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_Q_Pos 27U /*!< xPSR + 365:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR + 366:Drivers/CMSIS/Include/core_cm7.h **** + 367:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ICI_IT_2_Pos 25U /*!< xPSR + 368:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR + 369:Drivers/CMSIS/Include/core_cm7.h **** + 370:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_T_Pos 24U /*!< xPSR + 371:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR + 372:Drivers/CMSIS/Include/core_cm7.h **** + 373:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_GE_Pos 16U /*!< xPSR + ARM GAS /tmp/ccdsDELB.s page 8 + + + 374:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR + 375:Drivers/CMSIS/Include/core_cm7.h **** + 376:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ICI_IT_1_Pos 10U /*!< xPSR + 377:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR + 378:Drivers/CMSIS/Include/core_cm7.h **** + 379:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ISR_Pos 0U /*!< xPSR + 380:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR + 381:Drivers/CMSIS/Include/core_cm7.h **** + 382:Drivers/CMSIS/Include/core_cm7.h **** + 383:Drivers/CMSIS/Include/core_cm7.h **** /** + 384:Drivers/CMSIS/Include/core_cm7.h **** \brief Union type to access the Control Registers (CONTROL). + 385:Drivers/CMSIS/Include/core_cm7.h **** */ + 386:Drivers/CMSIS/Include/core_cm7.h **** typedef union + 387:Drivers/CMSIS/Include/core_cm7.h **** { + 388:Drivers/CMSIS/Include/core_cm7.h **** struct + 389:Drivers/CMSIS/Include/core_cm7.h **** { + 390:Drivers/CMSIS/Include/core_cm7.h **** uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + 391:Drivers/CMSIS/Include/core_cm7.h **** uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + 392:Drivers/CMSIS/Include/core_cm7.h **** uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + 393:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + 394:Drivers/CMSIS/Include/core_cm7.h **** } b; /*!< Structure used for bit access */ + 395:Drivers/CMSIS/Include/core_cm7.h **** uint32_t w; /*!< Type used for word access */ + 396:Drivers/CMSIS/Include/core_cm7.h **** } CONTROL_Type; + 397:Drivers/CMSIS/Include/core_cm7.h **** + 398:Drivers/CMSIS/Include/core_cm7.h **** /* CONTROL Register Definitions */ + 399:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_FPCA_Pos 2U /*!< CONT + 400:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONT + 401:Drivers/CMSIS/Include/core_cm7.h **** + 402:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_SPSEL_Pos 1U /*!< CONT + 403:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONT + 404:Drivers/CMSIS/Include/core_cm7.h **** + 405:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_nPRIV_Pos 0U /*!< CONT + 406:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONT + 407:Drivers/CMSIS/Include/core_cm7.h **** + 408:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_CORE */ + 409:Drivers/CMSIS/Include/core_cm7.h **** + 410:Drivers/CMSIS/Include/core_cm7.h **** + 411:Drivers/CMSIS/Include/core_cm7.h **** /** + 412:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register + 413:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + 414:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the NVIC Registers + 415:Drivers/CMSIS/Include/core_cm7.h **** @{ + 416:Drivers/CMSIS/Include/core_cm7.h **** */ + 417:Drivers/CMSIS/Include/core_cm7.h **** + 418:Drivers/CMSIS/Include/core_cm7.h **** /** + 419:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + 420:Drivers/CMSIS/Include/core_cm7.h **** */ + 421:Drivers/CMSIS/Include/core_cm7.h **** typedef struct + 422:Drivers/CMSIS/Include/core_cm7.h **** { + 423:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + 424:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[24U]; + 425:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register + 426:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RSERVED1[24U]; + 427:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register * + 428:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED2[24U]; + 429:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register + 430:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED3[24U]; + ARM GAS /tmp/ccdsDELB.s page 9 + + + 431:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + 432:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED4[56U]; + 433:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bi + 434:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED5[644U]; + 435:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Regis + 436:Drivers/CMSIS/Include/core_cm7.h **** } NVIC_Type; + 437:Drivers/CMSIS/Include/core_cm7.h **** + 438:Drivers/CMSIS/Include/core_cm7.h **** /* Software Triggered Interrupt Register Definitions */ + 439:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_STIR_INTID_Pos 0U /*!< STIR: I + 440:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: I + 441:Drivers/CMSIS/Include/core_cm7.h **** + 442:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_NVIC */ + 443:Drivers/CMSIS/Include/core_cm7.h **** + 444:Drivers/CMSIS/Include/core_cm7.h **** + 445:Drivers/CMSIS/Include/core_cm7.h **** /** + 446:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register + 447:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_SCB System Control Block (SCB) + 448:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the System Control Block Registers + 449:Drivers/CMSIS/Include/core_cm7.h **** @{ + 450:Drivers/CMSIS/Include/core_cm7.h **** */ + 451:Drivers/CMSIS/Include/core_cm7.h **** + 452:Drivers/CMSIS/Include/core_cm7.h **** /** + 453:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the System Control Block (SCB). + 454:Drivers/CMSIS/Include/core_cm7.h **** */ + 455:Drivers/CMSIS/Include/core_cm7.h **** typedef struct + 456:Drivers/CMSIS/Include/core_cm7.h **** { + 457:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + 458:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Regi + 459:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + 460:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset + 461:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + 462:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register * + 463:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registe + 464:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State + 465:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Regist + 466:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + 467:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + 468:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register + 469:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + 470:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register + 471:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + 472:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + 473:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + 474:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + 475:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Regis + 476:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[1U]; + 477:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + 478:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + 479:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + 480:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + 481:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Regis + 482:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED3[93U]; + 483:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Reg + 484:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED4[15U]; + 485:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 + 486:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 + 487:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 + ARM GAS /tmp/ccdsDELB.s page 10 + + + 488:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED5[1U]; + 489:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + 490:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED6[1U]; + 491:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU + 492:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC + 493:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + 494:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + 495:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + 496:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + 497:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by + 498:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by + 499:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED7[6U]; + 500:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memo + 501:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Cont + 502:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + 503:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + 504:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + 505:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED8[1U]; + 506:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Regis + 507:Drivers/CMSIS/Include/core_cm7.h **** } SCB_Type; + 508:Drivers/CMSIS/Include/core_cm7.h **** + 509:Drivers/CMSIS/Include/core_cm7.h **** /* SCB CPUID Register Definitions */ + 510:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB + 511:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB + 512:Drivers/CMSIS/Include/core_cm7.h **** + 513:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_VARIANT_Pos 20U /*!< SCB + 514:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB + 515:Drivers/CMSIS/Include/core_cm7.h **** + 516:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB + 517:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB + 518:Drivers/CMSIS/Include/core_cm7.h **** + 519:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_PARTNO_Pos 4U /*!< SCB + 520:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB + 521:Drivers/CMSIS/Include/core_cm7.h **** + 522:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_REVISION_Pos 0U /*!< SCB + 523:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB + 524:Drivers/CMSIS/Include/core_cm7.h **** + 525:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Interrupt Control State Register Definitions */ + 526:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB + 527:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB + 528:Drivers/CMSIS/Include/core_cm7.h **** + 529:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB + 530:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB + 531:Drivers/CMSIS/Include/core_cm7.h **** + 532:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB + 533:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB + 534:Drivers/CMSIS/Include/core_cm7.h **** + 535:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB + 536:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB + 537:Drivers/CMSIS/Include/core_cm7.h **** + 538:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB + 539:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB + 540:Drivers/CMSIS/Include/core_cm7.h **** + 541:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB + 542:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB + 543:Drivers/CMSIS/Include/core_cm7.h **** + 544:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB + ARM GAS /tmp/ccdsDELB.s page 11 + + + 545:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB + 546:Drivers/CMSIS/Include/core_cm7.h **** + 547:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB + 548:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB + 549:Drivers/CMSIS/Include/core_cm7.h **** + 550:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB + 551:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB + 552:Drivers/CMSIS/Include/core_cm7.h **** + 553:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB + 554:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB + 555:Drivers/CMSIS/Include/core_cm7.h **** + 556:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Vector Table Offset Register Definitions */ + 557:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB + 558:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB + 559:Drivers/CMSIS/Include/core_cm7.h **** + 560:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Application Interrupt and Reset Control Register Definitions */ + 561:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB + 562:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB + 563:Drivers/CMSIS/Include/core_cm7.h **** + 564:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB + 565:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB + 566:Drivers/CMSIS/Include/core_cm7.h **** + 567:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB + 568:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB + 569:Drivers/CMSIS/Include/core_cm7.h **** + 570:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB + 571:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB + 572:Drivers/CMSIS/Include/core_cm7.h **** + 573:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB + 574:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB + 575:Drivers/CMSIS/Include/core_cm7.h **** + 576:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB + 577:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB + 578:Drivers/CMSIS/Include/core_cm7.h **** + 579:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB + 580:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB + 581:Drivers/CMSIS/Include/core_cm7.h **** + 582:Drivers/CMSIS/Include/core_cm7.h **** /* SCB System Control Register Definitions */ + 583:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB + 584:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB + 585:Drivers/CMSIS/Include/core_cm7.h **** + 586:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB + 587:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB + 588:Drivers/CMSIS/Include/core_cm7.h **** + 589:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB + 590:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB + 591:Drivers/CMSIS/Include/core_cm7.h **** + 592:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Configuration Control Register Definitions */ + 593:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_BP_Pos 18U /*!< SCB + 594:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB + 595:Drivers/CMSIS/Include/core_cm7.h **** + 596:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_IC_Pos 17U /*!< SCB + 597:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB + 598:Drivers/CMSIS/Include/core_cm7.h **** + 599:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_DC_Pos 16U /*!< SCB + 600:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB + 601:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccdsDELB.s page 12 + + + 602:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_STKALIGN_Pos 9U /*!< SCB + 603:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB + 604:Drivers/CMSIS/Include/core_cm7.h **** + 605:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB + 606:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB + 607:Drivers/CMSIS/Include/core_cm7.h **** + 608:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB + 609:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB + 610:Drivers/CMSIS/Include/core_cm7.h **** + 611:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB + 612:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB + 613:Drivers/CMSIS/Include/core_cm7.h **** + 614:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB + 615:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB + 616:Drivers/CMSIS/Include/core_cm7.h **** + 617:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB + 618:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB + 619:Drivers/CMSIS/Include/core_cm7.h **** + 620:Drivers/CMSIS/Include/core_cm7.h **** /* SCB System Handler Control and State Register Definitions */ + 621:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB + 622:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB + 623:Drivers/CMSIS/Include/core_cm7.h **** + 624:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB + 625:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB + 626:Drivers/CMSIS/Include/core_cm7.h **** + 627:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB + 628:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB + 629:Drivers/CMSIS/Include/core_cm7.h **** + 630:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB + 631:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB + 632:Drivers/CMSIS/Include/core_cm7.h **** + 633:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB + 634:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB + 635:Drivers/CMSIS/Include/core_cm7.h **** + 636:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB + 637:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB + 638:Drivers/CMSIS/Include/core_cm7.h **** + 639:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB + 640:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB + 641:Drivers/CMSIS/Include/core_cm7.h **** + 642:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB + 643:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB + 644:Drivers/CMSIS/Include/core_cm7.h **** + 645:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB + 646:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB + 647:Drivers/CMSIS/Include/core_cm7.h **** + 648:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB + 649:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB + 650:Drivers/CMSIS/Include/core_cm7.h **** + 651:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB + 652:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB + 653:Drivers/CMSIS/Include/core_cm7.h **** + 654:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB + 655:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB + 656:Drivers/CMSIS/Include/core_cm7.h **** + 657:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB + 658:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB + ARM GAS /tmp/ccdsDELB.s page 13 + + + 659:Drivers/CMSIS/Include/core_cm7.h **** + 660:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB + 661:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB + 662:Drivers/CMSIS/Include/core_cm7.h **** + 663:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Configurable Fault Status Register Definitions */ + 664:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB + 665:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB + 666:Drivers/CMSIS/Include/core_cm7.h **** + 667:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB + 668:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB + 669:Drivers/CMSIS/Include/core_cm7.h **** + 670:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB + 671:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB + 672:Drivers/CMSIS/Include/core_cm7.h **** + 673:Drivers/CMSIS/Include/core_cm7.h **** /* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ + 674:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB + 675:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB + 676:Drivers/CMSIS/Include/core_cm7.h **** + 677:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB + 678:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB + 679:Drivers/CMSIS/Include/core_cm7.h **** + 680:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB + 681:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB + 682:Drivers/CMSIS/Include/core_cm7.h **** + 683:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB + 684:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB + 685:Drivers/CMSIS/Include/core_cm7.h **** + 686:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB + 687:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB + 688:Drivers/CMSIS/Include/core_cm7.h **** + 689:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB + 690:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB + 691:Drivers/CMSIS/Include/core_cm7.h **** + 692:Drivers/CMSIS/Include/core_cm7.h **** /* BusFault Status Register (part of SCB Configurable Fault Status Register) */ + 693:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB + 694:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB + 695:Drivers/CMSIS/Include/core_cm7.h **** + 696:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB + 697:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB + 698:Drivers/CMSIS/Include/core_cm7.h **** + 699:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB + 700:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB + 701:Drivers/CMSIS/Include/core_cm7.h **** + 702:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB + 703:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB + 704:Drivers/CMSIS/Include/core_cm7.h **** + 705:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB + 706:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB + 707:Drivers/CMSIS/Include/core_cm7.h **** + 708:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB + 709:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB + 710:Drivers/CMSIS/Include/core_cm7.h **** + 711:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB + 712:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB + 713:Drivers/CMSIS/Include/core_cm7.h **** + 714:Drivers/CMSIS/Include/core_cm7.h **** /* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ + 715:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB + ARM GAS /tmp/ccdsDELB.s page 14 + + + 716:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB + 717:Drivers/CMSIS/Include/core_cm7.h **** + 718:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB + 719:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB + 720:Drivers/CMSIS/Include/core_cm7.h **** + 721:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB + 722:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB + 723:Drivers/CMSIS/Include/core_cm7.h **** + 724:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB + 725:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB + 726:Drivers/CMSIS/Include/core_cm7.h **** + 727:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB + 728:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB + 729:Drivers/CMSIS/Include/core_cm7.h **** + 730:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB + 731:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB + 732:Drivers/CMSIS/Include/core_cm7.h **** + 733:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Hard Fault Status Register Definitions */ + 734:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB + 735:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB + 736:Drivers/CMSIS/Include/core_cm7.h **** + 737:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_FORCED_Pos 30U /*!< SCB + 738:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB + 739:Drivers/CMSIS/Include/core_cm7.h **** + 740:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB + 741:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB + 742:Drivers/CMSIS/Include/core_cm7.h **** + 743:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Debug Fault Status Register Definitions */ + 744:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB + 745:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB + 746:Drivers/CMSIS/Include/core_cm7.h **** + 747:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_VCATCH_Pos 3U /*!< SCB + 748:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB + 749:Drivers/CMSIS/Include/core_cm7.h **** + 750:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB + 751:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB + 752:Drivers/CMSIS/Include/core_cm7.h **** + 753:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_BKPT_Pos 1U /*!< SCB + 754:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB + 755:Drivers/CMSIS/Include/core_cm7.h **** + 756:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_HALTED_Pos 0U /*!< SCB + 757:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB + 758:Drivers/CMSIS/Include/core_cm7.h **** + 759:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Cache Level ID Register Definitions */ + 760:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CLIDR_LOUU_Pos 27U /*!< SCB + 761:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB + 762:Drivers/CMSIS/Include/core_cm7.h **** + 763:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CLIDR_LOC_Pos 24U /*!< SCB + 764:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB + 765:Drivers/CMSIS/Include/core_cm7.h **** + 766:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Cache Type Register Definitions */ + 767:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_FORMAT_Pos 29U /*!< SCB + 768:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB + 769:Drivers/CMSIS/Include/core_cm7.h **** + 770:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_CWG_Pos 24U /*!< SCB + 771:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB + 772:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccdsDELB.s page 15 + + + 773:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_ERG_Pos 20U /*!< SCB + 774:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB + 775:Drivers/CMSIS/Include/core_cm7.h **** + 776:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_DMINLINE_Pos 16U /*!< SCB + 777:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB + 778:Drivers/CMSIS/Include/core_cm7.h **** + 779:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_IMINLINE_Pos 0U /*!< SCB + 780:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB + 781:Drivers/CMSIS/Include/core_cm7.h **** + 782:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Cache Size ID Register Definitions */ + 783:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WT_Pos 31U /*!< SCB + 784:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB + 785:Drivers/CMSIS/Include/core_cm7.h **** + 786:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WB_Pos 30U /*!< SCB + 787:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB + 788:Drivers/CMSIS/Include/core_cm7.h **** + 789:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_RA_Pos 29U /*!< SCB + 790:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB + 791:Drivers/CMSIS/Include/core_cm7.h **** + 792:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WA_Pos 28U /*!< SCB + 793:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB + 794:Drivers/CMSIS/Include/core_cm7.h **** + 795:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB + 796:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB + 797:Drivers/CMSIS/Include/core_cm7.h **** + 798:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB + 799:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB + 800:Drivers/CMSIS/Include/core_cm7.h **** + 801:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB + 802:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB + 803:Drivers/CMSIS/Include/core_cm7.h **** + 804:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Cache Size Selection Register Definitions */ + 805:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB + 806:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB + 807:Drivers/CMSIS/Include/core_cm7.h **** + 808:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CSSELR_IND_Pos 0U /*!< SCB + 809:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB + 810:Drivers/CMSIS/Include/core_cm7.h **** + 811:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Software Triggered Interrupt Register Definitions */ + 812:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_STIR_INTID_Pos 0U /*!< SCB + 813:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB + 814:Drivers/CMSIS/Include/core_cm7.h **** + 815:Drivers/CMSIS/Include/core_cm7.h **** /* SCB D-Cache Invalidate by Set-way Register Definitions */ + 816:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCISW_WAY_Pos 30U /*!< SCB + 817:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB + 818:Drivers/CMSIS/Include/core_cm7.h **** + 819:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCISW_SET_Pos 5U /*!< SCB + 820:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB + 821:Drivers/CMSIS/Include/core_cm7.h **** + 822:Drivers/CMSIS/Include/core_cm7.h **** /* SCB D-Cache Clean by Set-way Register Definitions */ + 823:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCSW_WAY_Pos 30U /*!< SCB + 824:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB + 825:Drivers/CMSIS/Include/core_cm7.h **** + 826:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCSW_SET_Pos 5U /*!< SCB + 827:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB + 828:Drivers/CMSIS/Include/core_cm7.h **** + 829:Drivers/CMSIS/Include/core_cm7.h **** /* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ + ARM GAS /tmp/ccdsDELB.s page 16 + + + 830:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCISW_WAY_Pos 30U /*!< SCB + 831:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB + 832:Drivers/CMSIS/Include/core_cm7.h **** + 833:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCISW_SET_Pos 5U /*!< SCB + 834:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB + 835:Drivers/CMSIS/Include/core_cm7.h **** + 836:Drivers/CMSIS/Include/core_cm7.h **** /* Instruction Tightly-Coupled Memory Control Register Definitions */ + 837:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_SZ_Pos 3U /*!< SCB + 838:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB + 839:Drivers/CMSIS/Include/core_cm7.h **** + 840:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB + 841:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB + 842:Drivers/CMSIS/Include/core_cm7.h **** + 843:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_RMW_Pos 1U /*!< SCB + 844:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB + 845:Drivers/CMSIS/Include/core_cm7.h **** + 846:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_EN_Pos 0U /*!< SCB + 847:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB + 848:Drivers/CMSIS/Include/core_cm7.h **** + 849:Drivers/CMSIS/Include/core_cm7.h **** /* Data Tightly-Coupled Memory Control Register Definitions */ + 850:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_SZ_Pos 3U /*!< SCB + 851:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB + 852:Drivers/CMSIS/Include/core_cm7.h **** + 853:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB + 854:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB + 855:Drivers/CMSIS/Include/core_cm7.h **** + 856:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_RMW_Pos 1U /*!< SCB + 857:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB + 858:Drivers/CMSIS/Include/core_cm7.h **** + 859:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_EN_Pos 0U /*!< SCB + 860:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB + 861:Drivers/CMSIS/Include/core_cm7.h **** + 862:Drivers/CMSIS/Include/core_cm7.h **** /* AHBP Control Register Definitions */ + 863:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBPCR_SZ_Pos 1U /*!< SCB + 864:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB + 865:Drivers/CMSIS/Include/core_cm7.h **** + 866:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBPCR_EN_Pos 0U /*!< SCB + 867:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB + 868:Drivers/CMSIS/Include/core_cm7.h **** + 869:Drivers/CMSIS/Include/core_cm7.h **** /* L1 Cache Control Register Definitions */ + 870:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_FORCEWT_Pos 2U /*!< SCB + 871:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB + 872:Drivers/CMSIS/Include/core_cm7.h **** + 873:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_ECCEN_Pos 1U /*!< SCB + 874:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB + 875:Drivers/CMSIS/Include/core_cm7.h **** + 876:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_SIWT_Pos 0U /*!< SCB + 877:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB + 878:Drivers/CMSIS/Include/core_cm7.h **** + 879:Drivers/CMSIS/Include/core_cm7.h **** /* AHBS Control Register Definitions */ + 880:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB + 881:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB + 882:Drivers/CMSIS/Include/core_cm7.h **** + 883:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB + 884:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB + 885:Drivers/CMSIS/Include/core_cm7.h **** + 886:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_CTL_Pos 0U /*!< SCB + ARM GAS /tmp/ccdsDELB.s page 17 + + + 887:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB + 888:Drivers/CMSIS/Include/core_cm7.h **** + 889:Drivers/CMSIS/Include/core_cm7.h **** /* Auxiliary Bus Fault Status Register Definitions */ + 890:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB + 891:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB + 892:Drivers/CMSIS/Include/core_cm7.h **** + 893:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_EPPB_Pos 4U /*!< SCB + 894:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB + 895:Drivers/CMSIS/Include/core_cm7.h **** + 896:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AXIM_Pos 3U /*!< SCB + 897:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB + 898:Drivers/CMSIS/Include/core_cm7.h **** + 899:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AHBP_Pos 2U /*!< SCB + 900:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB + 901:Drivers/CMSIS/Include/core_cm7.h **** + 902:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_DTCM_Pos 1U /*!< SCB + 903:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB + 904:Drivers/CMSIS/Include/core_cm7.h **** + 905:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_ITCM_Pos 0U /*!< SCB + 906:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB + 907:Drivers/CMSIS/Include/core_cm7.h **** + 908:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_SCB */ + 909:Drivers/CMSIS/Include/core_cm7.h **** + 910:Drivers/CMSIS/Include/core_cm7.h **** + 911:Drivers/CMSIS/Include/core_cm7.h **** /** + 912:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register + 913:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + 914:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the System Control and ID Register not in the SCB + 915:Drivers/CMSIS/Include/core_cm7.h **** @{ + 916:Drivers/CMSIS/Include/core_cm7.h **** */ + 917:Drivers/CMSIS/Include/core_cm7.h **** + 918:Drivers/CMSIS/Include/core_cm7.h **** /** + 919:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the System Control and ID Register not in the SCB. + 920:Drivers/CMSIS/Include/core_cm7.h **** */ + 921:Drivers/CMSIS/Include/core_cm7.h **** typedef struct + 922:Drivers/CMSIS/Include/core_cm7.h **** { + 923:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[1U]; + 924:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Regist + 925:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + 926:Drivers/CMSIS/Include/core_cm7.h **** } SCnSCB_Type; + 927:Drivers/CMSIS/Include/core_cm7.h **** + 928:Drivers/CMSIS/Include/core_cm7.h **** /* Interrupt Controller Type Register Definitions */ + 929:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: I + 930:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: I + 931:Drivers/CMSIS/Include/core_cm7.h **** + 932:Drivers/CMSIS/Include/core_cm7.h **** /* Auxiliary Control Register Definitions */ + 933:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: + 934:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: + 935:Drivers/CMSIS/Include/core_cm7.h **** + 936:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: + 937:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: + 938:Drivers/CMSIS/Include/core_cm7.h **** + 939:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: + 940:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: + 941:Drivers/CMSIS/Include/core_cm7.h **** + 942:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: + 943:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: + ARM GAS /tmp/ccdsDELB.s page 18 + + + 944:Drivers/CMSIS/Include/core_cm7.h **** + 945:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: + 946:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: + 947:Drivers/CMSIS/Include/core_cm7.h **** + 948:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_SCnotSCB */ + 949:Drivers/CMSIS/Include/core_cm7.h **** + 950:Drivers/CMSIS/Include/core_cm7.h **** + 951:Drivers/CMSIS/Include/core_cm7.h **** /** + 952:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register + 953:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_SysTick System Tick Timer (SysTick) + 954:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the System Timer Registers. + 955:Drivers/CMSIS/Include/core_cm7.h **** @{ + 956:Drivers/CMSIS/Include/core_cm7.h **** */ + 957:Drivers/CMSIS/Include/core_cm7.h **** + 958:Drivers/CMSIS/Include/core_cm7.h **** /** + 959:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the System Timer (SysTick). + 960:Drivers/CMSIS/Include/core_cm7.h **** */ + 961:Drivers/CMSIS/Include/core_cm7.h **** typedef struct + 962:Drivers/CMSIS/Include/core_cm7.h **** { + 963:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Regis + 964:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + 965:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register * + 966:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ + 967:Drivers/CMSIS/Include/core_cm7.h **** } SysTick_Type; + 968:Drivers/CMSIS/Include/core_cm7.h **** + 969:Drivers/CMSIS/Include/core_cm7.h **** /* SysTick Control / Status Register Definitions */ + 970:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysT + 971:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysT + 972:Drivers/CMSIS/Include/core_cm7.h **** + 973:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysT + 974:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysT + 975:Drivers/CMSIS/Include/core_cm7.h **** + 976:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_TICKINT_Pos 1U /*!< SysT + 977:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysT + 978:Drivers/CMSIS/Include/core_cm7.h **** + 979:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_ENABLE_Pos 0U /*!< SysT + 980:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysT + 981:Drivers/CMSIS/Include/core_cm7.h **** + 982:Drivers/CMSIS/Include/core_cm7.h **** /* SysTick Reload Register Definitions */ + 983:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_LOAD_RELOAD_Pos 0U /*!< SysT + 984:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysT + 985:Drivers/CMSIS/Include/core_cm7.h **** + 986:Drivers/CMSIS/Include/core_cm7.h **** /* SysTick Current Register Definitions */ + 987:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_VAL_CURRENT_Pos 0U /*!< SysT + 988:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysT + 989:Drivers/CMSIS/Include/core_cm7.h **** + 990:Drivers/CMSIS/Include/core_cm7.h **** /* SysTick Calibration Register Definitions */ + 991:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_NOREF_Pos 31U /*!< SysT + 992:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysT + 993:Drivers/CMSIS/Include/core_cm7.h **** + 994:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_SKEW_Pos 30U /*!< SysT + 995:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysT + 996:Drivers/CMSIS/Include/core_cm7.h **** + 997:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_TENMS_Pos 0U /*!< SysT + 998:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysT + 999:Drivers/CMSIS/Include/core_cm7.h **** +1000:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_SysTick */ + ARM GAS /tmp/ccdsDELB.s page 19 + + +1001:Drivers/CMSIS/Include/core_cm7.h **** +1002:Drivers/CMSIS/Include/core_cm7.h **** +1003:Drivers/CMSIS/Include/core_cm7.h **** /** +1004:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1005:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) +1006:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Instrumentation Trace Macrocell (ITM) +1007:Drivers/CMSIS/Include/core_cm7.h **** @{ +1008:Drivers/CMSIS/Include/core_cm7.h **** */ +1009:Drivers/CMSIS/Include/core_cm7.h **** +1010:Drivers/CMSIS/Include/core_cm7.h **** /** +1011:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). +1012:Drivers/CMSIS/Include/core_cm7.h **** */ +1013:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1014:Drivers/CMSIS/Include/core_cm7.h **** { +1015:Drivers/CMSIS/Include/core_cm7.h **** __OM union +1016:Drivers/CMSIS/Include/core_cm7.h **** { +1017:Drivers/CMSIS/Include/core_cm7.h **** __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ +1018:Drivers/CMSIS/Include/core_cm7.h **** __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ +1019:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ +1020:Drivers/CMSIS/Include/core_cm7.h **** } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ +1021:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[864U]; +1022:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ +1023:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED1[15U]; +1024:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ +1025:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED2[15U]; +1026:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ +1027:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED3[29U]; +1028:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register * +1029:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ +1030:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Reg +1031:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED4[43U]; +1032:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ +1033:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ +1034:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED5[6U]; +1035:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Re +1036:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Re +1037:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Re +1038:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Re +1039:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Re +1040:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Re +1041:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Re +1042:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Re +1043:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Re +1044:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Re +1045:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Re +1046:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Re +1047:Drivers/CMSIS/Include/core_cm7.h **** } ITM_Type; +1048:Drivers/CMSIS/Include/core_cm7.h **** +1049:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Trace Privilege Register Definitions */ +1050:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM +1051:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM +1052:Drivers/CMSIS/Include/core_cm7.h **** +1053:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Trace Control Register Definitions */ +1054:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_BUSY_Pos 23U /*!< ITM +1055:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM +1056:Drivers/CMSIS/Include/core_cm7.h **** +1057:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TraceBusID_Pos 16U /*!< ITM + ARM GAS /tmp/ccdsDELB.s page 20 + + +1058:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM +1059:Drivers/CMSIS/Include/core_cm7.h **** +1060:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM +1061:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM +1062:Drivers/CMSIS/Include/core_cm7.h **** +1063:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TSPrescale_Pos 8U /*!< ITM +1064:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM +1065:Drivers/CMSIS/Include/core_cm7.h **** +1066:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_SWOENA_Pos 4U /*!< ITM +1067:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM +1068:Drivers/CMSIS/Include/core_cm7.h **** +1069:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_DWTENA_Pos 3U /*!< ITM +1070:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM +1071:Drivers/CMSIS/Include/core_cm7.h **** +1072:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_SYNCENA_Pos 2U /*!< ITM +1073:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM +1074:Drivers/CMSIS/Include/core_cm7.h **** +1075:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TSENA_Pos 1U /*!< ITM +1076:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM +1077:Drivers/CMSIS/Include/core_cm7.h **** +1078:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_ITMENA_Pos 0U /*!< ITM +1079:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM +1080:Drivers/CMSIS/Include/core_cm7.h **** +1081:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Integration Write Register Definitions */ +1082:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM +1083:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM +1084:Drivers/CMSIS/Include/core_cm7.h **** +1085:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Integration Read Register Definitions */ +1086:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IRR_ATREADYM_Pos 0U /*!< ITM +1087:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM +1088:Drivers/CMSIS/Include/core_cm7.h **** +1089:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Integration Mode Control Register Definitions */ +1090:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM +1091:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM +1092:Drivers/CMSIS/Include/core_cm7.h **** +1093:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Lock Status Register Definitions */ +1094:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_ByteAcc_Pos 2U /*!< ITM +1095:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM +1096:Drivers/CMSIS/Include/core_cm7.h **** +1097:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_Access_Pos 1U /*!< ITM +1098:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM +1099:Drivers/CMSIS/Include/core_cm7.h **** +1100:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_Present_Pos 0U /*!< ITM +1101:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM +1102:Drivers/CMSIS/Include/core_cm7.h **** +1103:Drivers/CMSIS/Include/core_cm7.h **** /*@}*/ /* end of group CMSIS_ITM */ +1104:Drivers/CMSIS/Include/core_cm7.h **** +1105:Drivers/CMSIS/Include/core_cm7.h **** +1106:Drivers/CMSIS/Include/core_cm7.h **** /** +1107:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1108:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) +1109:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Data Watchpoint and Trace (DWT) +1110:Drivers/CMSIS/Include/core_cm7.h **** @{ +1111:Drivers/CMSIS/Include/core_cm7.h **** */ +1112:Drivers/CMSIS/Include/core_cm7.h **** +1113:Drivers/CMSIS/Include/core_cm7.h **** /** +1114:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Data Watchpoint and Trace Register (DWT). + ARM GAS /tmp/ccdsDELB.s page 21 + + +1115:Drivers/CMSIS/Include/core_cm7.h **** */ +1116:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1117:Drivers/CMSIS/Include/core_cm7.h **** { +1118:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ +1119:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ +1120:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ +1121:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Registe +1122:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ +1123:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ +1124:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Registe +1125:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register +1126:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ +1127:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ +1128:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ +1129:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[1U]; +1130:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ +1131:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ +1132:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ +1133:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED1[1U]; +1134:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ +1135:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ +1136:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ +1137:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED2[1U]; +1138:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ +1139:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ +1140:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +1141:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED3[981U]; +1142:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ +1143:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +1144:Drivers/CMSIS/Include/core_cm7.h **** } DWT_Type; +1145:Drivers/CMSIS/Include/core_cm7.h **** +1146:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Control Register Definitions */ +1147:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTR +1148:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTR +1149:Drivers/CMSIS/Include/core_cm7.h **** +1150:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTR +1151:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTR +1152:Drivers/CMSIS/Include/core_cm7.h **** +1153:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTR +1154:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTR +1155:Drivers/CMSIS/Include/core_cm7.h **** +1156:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTR +1157:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTR +1158:Drivers/CMSIS/Include/core_cm7.h **** +1159:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTR +1160:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTR +1161:Drivers/CMSIS/Include/core_cm7.h **** +1162:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTR +1163:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTR +1164:Drivers/CMSIS/Include/core_cm7.h **** +1165:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTR +1166:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTR +1167:Drivers/CMSIS/Include/core_cm7.h **** +1168:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTR +1169:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTR +1170:Drivers/CMSIS/Include/core_cm7.h **** +1171:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTR + ARM GAS /tmp/ccdsDELB.s page 22 + + +1172:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTR +1173:Drivers/CMSIS/Include/core_cm7.h **** +1174:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTR +1175:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTR +1176:Drivers/CMSIS/Include/core_cm7.h **** +1177:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTR +1178:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTR +1179:Drivers/CMSIS/Include/core_cm7.h **** +1180:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTR +1181:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTR +1182:Drivers/CMSIS/Include/core_cm7.h **** +1183:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTR +1184:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTR +1185:Drivers/CMSIS/Include/core_cm7.h **** +1186:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTR +1187:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTR +1188:Drivers/CMSIS/Include/core_cm7.h **** +1189:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTR +1190:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTR +1191:Drivers/CMSIS/Include/core_cm7.h **** +1192:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTR +1193:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTR +1194:Drivers/CMSIS/Include/core_cm7.h **** +1195:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTR +1196:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTR +1197:Drivers/CMSIS/Include/core_cm7.h **** +1198:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTR +1199:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTR +1200:Drivers/CMSIS/Include/core_cm7.h **** +1201:Drivers/CMSIS/Include/core_cm7.h **** /* DWT CPI Count Register Definitions */ +1202:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPI +1203:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPI +1204:Drivers/CMSIS/Include/core_cm7.h **** +1205:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Exception Overhead Count Register Definitions */ +1206:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXC +1207:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXC +1208:Drivers/CMSIS/Include/core_cm7.h **** +1209:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Sleep Count Register Definitions */ +1210:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLE +1211:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLE +1212:Drivers/CMSIS/Include/core_cm7.h **** +1213:Drivers/CMSIS/Include/core_cm7.h **** /* DWT LSU Count Register Definitions */ +1214:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSU +1215:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSU +1216:Drivers/CMSIS/Include/core_cm7.h **** +1217:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Folded-instruction Count Register Definitions */ +1218:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOL +1219:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOL +1220:Drivers/CMSIS/Include/core_cm7.h **** +1221:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Comparator Mask Register Definitions */ +1222:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_MASK_MASK_Pos 0U /*!< DWT MAS +1223:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MAS +1224:Drivers/CMSIS/Include/core_cm7.h **** +1225:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Comparator Function Register Definitions */ +1226:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUN +1227:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUN +1228:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccdsDELB.s page 23 + + +1229:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUN +1230:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUN +1231:Drivers/CMSIS/Include/core_cm7.h **** +1232:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUN +1233:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUN +1234:Drivers/CMSIS/Include/core_cm7.h **** +1235:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUN +1236:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUN +1237:Drivers/CMSIS/Include/core_cm7.h **** +1238:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUN +1239:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUN +1240:Drivers/CMSIS/Include/core_cm7.h **** +1241:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUN +1242:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUN +1243:Drivers/CMSIS/Include/core_cm7.h **** +1244:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUN +1245:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUN +1246:Drivers/CMSIS/Include/core_cm7.h **** +1247:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUN +1248:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUN +1249:Drivers/CMSIS/Include/core_cm7.h **** +1250:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUN +1251:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUN +1252:Drivers/CMSIS/Include/core_cm7.h **** +1253:Drivers/CMSIS/Include/core_cm7.h **** /*@}*/ /* end of group CMSIS_DWT */ +1254:Drivers/CMSIS/Include/core_cm7.h **** +1255:Drivers/CMSIS/Include/core_cm7.h **** +1256:Drivers/CMSIS/Include/core_cm7.h **** /** +1257:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1258:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_TPI Trace Port Interface (TPI) +1259:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Trace Port Interface (TPI) +1260:Drivers/CMSIS/Include/core_cm7.h **** @{ +1261:Drivers/CMSIS/Include/core_cm7.h **** */ +1262:Drivers/CMSIS/Include/core_cm7.h **** +1263:Drivers/CMSIS/Include/core_cm7.h **** /** +1264:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Trace Port Interface Register (TPI). +1265:Drivers/CMSIS/Include/core_cm7.h **** */ +1266:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1267:Drivers/CMSIS/Include/core_cm7.h **** { +1268:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Reg +1269:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Regis +1270:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[2U]; +1271:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Reg +1272:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED1[55U]; +1273:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register * +1274:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED2[131U]; +1275:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Regis +1276:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Regi +1277:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counte +1278:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED3[759U]; +1279:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ +1280:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ +1281:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ +1282:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED4[1U]; +1283:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ +1284:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ +1285:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ + ARM GAS /tmp/ccdsDELB.s page 24 + + +1286:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED5[39U]; +1287:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ +1288:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ +1289:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED7[8U]; +1290:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ +1291:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +1292:Drivers/CMSIS/Include/core_cm7.h **** } TPI_Type; +1293:Drivers/CMSIS/Include/core_cm7.h **** +1294:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Asynchronous Clock Prescaler Register Definitions */ +1295:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACP +1296:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACP +1297:Drivers/CMSIS/Include/core_cm7.h **** +1298:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Selected Pin Protocol Register Definitions */ +1299:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPP +1300:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPP +1301:Drivers/CMSIS/Include/core_cm7.h **** +1302:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Formatter and Flush Status Register Definitions */ +1303:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFS +1304:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFS +1305:Drivers/CMSIS/Include/core_cm7.h **** +1306:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFS +1307:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFS +1308:Drivers/CMSIS/Include/core_cm7.h **** +1309:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFS +1310:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFS +1311:Drivers/CMSIS/Include/core_cm7.h **** +1312:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFS +1313:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFS +1314:Drivers/CMSIS/Include/core_cm7.h **** +1315:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Formatter and Flush Control Register Definitions */ +1316:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFC +1317:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFC +1318:Drivers/CMSIS/Include/core_cm7.h **** +1319:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFC +1320:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFC +1321:Drivers/CMSIS/Include/core_cm7.h **** +1322:Drivers/CMSIS/Include/core_cm7.h **** /* TPI TRIGGER Register Definitions */ +1323:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRI +1324:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRI +1325:Drivers/CMSIS/Include/core_cm7.h **** +1326:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Integration ETM Data Register Definitions (FIFO0) */ +1327:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIF +1328:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIF +1329:Drivers/CMSIS/Include/core_cm7.h **** +1330:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIF +1331:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIF +1332:Drivers/CMSIS/Include/core_cm7.h **** +1333:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIF +1334:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIF +1335:Drivers/CMSIS/Include/core_cm7.h **** +1336:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIF +1337:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIF +1338:Drivers/CMSIS/Include/core_cm7.h **** +1339:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIF +1340:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIF +1341:Drivers/CMSIS/Include/core_cm7.h **** +1342:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIF + ARM GAS /tmp/ccdsDELB.s page 25 + + +1343:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIF +1344:Drivers/CMSIS/Include/core_cm7.h **** +1345:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIF +1346:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIF +1347:Drivers/CMSIS/Include/core_cm7.h **** +1348:Drivers/CMSIS/Include/core_cm7.h **** /* TPI ITATBCTR2 Register Definitions */ +1349:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITA +1350:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITA +1351:Drivers/CMSIS/Include/core_cm7.h **** +1352:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITA +1353:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITA +1354:Drivers/CMSIS/Include/core_cm7.h **** +1355:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Integration ITM Data Register Definitions (FIFO1) */ +1356:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIF +1357:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIF +1358:Drivers/CMSIS/Include/core_cm7.h **** +1359:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIF +1360:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIF +1361:Drivers/CMSIS/Include/core_cm7.h **** +1362:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIF +1363:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIF +1364:Drivers/CMSIS/Include/core_cm7.h **** +1365:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIF +1366:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIF +1367:Drivers/CMSIS/Include/core_cm7.h **** +1368:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIF +1369:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIF +1370:Drivers/CMSIS/Include/core_cm7.h **** +1371:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIF +1372:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIF +1373:Drivers/CMSIS/Include/core_cm7.h **** +1374:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIF +1375:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIF +1376:Drivers/CMSIS/Include/core_cm7.h **** +1377:Drivers/CMSIS/Include/core_cm7.h **** /* TPI ITATBCTR0 Register Definitions */ +1378:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITA +1379:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITA +1380:Drivers/CMSIS/Include/core_cm7.h **** +1381:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITA +1382:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITA +1383:Drivers/CMSIS/Include/core_cm7.h **** +1384:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Integration Mode Control Register Definitions */ +1385:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITC +1386:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITC +1387:Drivers/CMSIS/Include/core_cm7.h **** +1388:Drivers/CMSIS/Include/core_cm7.h **** /* TPI DEVID Register Definitions */ +1389:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEV +1390:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEV +1391:Drivers/CMSIS/Include/core_cm7.h **** +1392:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEV +1393:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEV +1394:Drivers/CMSIS/Include/core_cm7.h **** +1395:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEV +1396:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEV +1397:Drivers/CMSIS/Include/core_cm7.h **** +1398:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEV +1399:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEV + ARM GAS /tmp/ccdsDELB.s page 26 + + +1400:Drivers/CMSIS/Include/core_cm7.h **** +1401:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEV +1402:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEV +1403:Drivers/CMSIS/Include/core_cm7.h **** +1404:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEV +1405:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEV +1406:Drivers/CMSIS/Include/core_cm7.h **** +1407:Drivers/CMSIS/Include/core_cm7.h **** /* TPI DEVTYPE Register Definitions */ +1408:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEV +1409:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEV +1410:Drivers/CMSIS/Include/core_cm7.h **** +1411:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEV +1412:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEV +1413:Drivers/CMSIS/Include/core_cm7.h **** +1414:Drivers/CMSIS/Include/core_cm7.h **** /*@}*/ /* end of group CMSIS_TPI */ +1415:Drivers/CMSIS/Include/core_cm7.h **** +1416:Drivers/CMSIS/Include/core_cm7.h **** +1417:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +1418:Drivers/CMSIS/Include/core_cm7.h **** /** +1419:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1420:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_MPU Memory Protection Unit (MPU) +1421:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Memory Protection Unit (MPU) +1422:Drivers/CMSIS/Include/core_cm7.h **** @{ +1423:Drivers/CMSIS/Include/core_cm7.h **** */ +1424:Drivers/CMSIS/Include/core_cm7.h **** +1425:Drivers/CMSIS/Include/core_cm7.h **** /** +1426:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Memory Protection Unit (MPU). +1427:Drivers/CMSIS/Include/core_cm7.h **** */ +1428:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1429:Drivers/CMSIS/Include/core_cm7.h **** { +1430:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ +1431:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ +1432:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ +1433:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register +1434:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Re +1435:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address +1436:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and +1437:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address +1438:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and +1439:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address +1440:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and +1441:Drivers/CMSIS/Include/core_cm7.h **** } MPU_Type; +1442:Drivers/CMSIS/Include/core_cm7.h **** +1443:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_RALIASES 4U +1444:Drivers/CMSIS/Include/core_cm7.h **** +1445:Drivers/CMSIS/Include/core_cm7.h **** /* MPU Type Register Definitions */ +1446:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_IREGION_Pos 16U /*!< MPU +1447:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU +1448:Drivers/CMSIS/Include/core_cm7.h **** +1449:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_DREGION_Pos 8U /*!< MPU +1450:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU +1451:Drivers/CMSIS/Include/core_cm7.h **** +1452:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU +1453:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU +1454:Drivers/CMSIS/Include/core_cm7.h **** +1455:Drivers/CMSIS/Include/core_cm7.h **** /* MPU Control Register Definitions */ +1456:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU + ARM GAS /tmp/ccdsDELB.s page 27 + + +1457:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU +1458:Drivers/CMSIS/Include/core_cm7.h **** +1459:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU +1460:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU +1461:Drivers/CMSIS/Include/core_cm7.h **** +1462:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_ENABLE_Pos 0U /*!< MPU +1463:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU +1464:Drivers/CMSIS/Include/core_cm7.h **** +1465:Drivers/CMSIS/Include/core_cm7.h **** /* MPU Region Number Register Definitions */ +1466:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RNR_REGION_Pos 0U /*!< MPU +1467:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU +1468:Drivers/CMSIS/Include/core_cm7.h **** +1469:Drivers/CMSIS/Include/core_cm7.h **** /* MPU Region Base Address Register Definitions */ +1470:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_ADDR_Pos 5U /*!< MPU +1471:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU +1472:Drivers/CMSIS/Include/core_cm7.h **** +1473:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_VALID_Pos 4U /*!< MPU +1474:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU +1475:Drivers/CMSIS/Include/core_cm7.h **** +1476:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_REGION_Pos 0U /*!< MPU +1477:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU +1478:Drivers/CMSIS/Include/core_cm7.h **** +1479:Drivers/CMSIS/Include/core_cm7.h **** /* MPU Region Attribute and Size Register Definitions */ +1480:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_ATTRS_Pos 16U /*!< MPU +1481:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU +1482:Drivers/CMSIS/Include/core_cm7.h **** +1483:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_XN_Pos 28U /*!< MPU +1484:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU +1485:Drivers/CMSIS/Include/core_cm7.h **** +1486:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_AP_Pos 24U /*!< MPU +1487:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU +1488:Drivers/CMSIS/Include/core_cm7.h **** +1489:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_TEX_Pos 19U /*!< MPU +1490:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU +1491:Drivers/CMSIS/Include/core_cm7.h **** +1492:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_S_Pos 18U /*!< MPU +1493:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU +1494:Drivers/CMSIS/Include/core_cm7.h **** +1495:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_C_Pos 17U /*!< MPU +1496:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU +1497:Drivers/CMSIS/Include/core_cm7.h **** +1498:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_B_Pos 16U /*!< MPU +1499:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU +1500:Drivers/CMSIS/Include/core_cm7.h **** +1501:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_SRD_Pos 8U /*!< MPU +1502:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU +1503:Drivers/CMSIS/Include/core_cm7.h **** +1504:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_SIZE_Pos 1U /*!< MPU +1505:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU +1506:Drivers/CMSIS/Include/core_cm7.h **** +1507:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_ENABLE_Pos 0U /*!< MPU +1508:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU +1509:Drivers/CMSIS/Include/core_cm7.h **** +1510:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_MPU */ +1511:Drivers/CMSIS/Include/core_cm7.h **** #endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ +1512:Drivers/CMSIS/Include/core_cm7.h **** +1513:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccdsDELB.s page 28 + + +1514:Drivers/CMSIS/Include/core_cm7.h **** /** +1515:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1516:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_FPU Floating Point Unit (FPU) +1517:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Floating Point Unit (FPU) +1518:Drivers/CMSIS/Include/core_cm7.h **** @{ +1519:Drivers/CMSIS/Include/core_cm7.h **** */ +1520:Drivers/CMSIS/Include/core_cm7.h **** +1521:Drivers/CMSIS/Include/core_cm7.h **** /** +1522:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Floating Point Unit (FPU). +1523:Drivers/CMSIS/Include/core_cm7.h **** */ +1524:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1525:Drivers/CMSIS/Include/core_cm7.h **** { +1526:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[1U]; +1527:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control R +1528:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address R +1529:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Co +1530:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 +1531:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 +1532:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 +1533:Drivers/CMSIS/Include/core_cm7.h **** } FPU_Type; +1534:Drivers/CMSIS/Include/core_cm7.h **** +1535:Drivers/CMSIS/Include/core_cm7.h **** /* Floating-Point Context Control Register Definitions */ +1536:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCC +1537:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCC +1538:Drivers/CMSIS/Include/core_cm7.h **** +1539:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCC +1540:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCC +1541:Drivers/CMSIS/Include/core_cm7.h **** +1542:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCC +1543:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCC +1544:Drivers/CMSIS/Include/core_cm7.h **** +1545:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCC +1546:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCC +1547:Drivers/CMSIS/Include/core_cm7.h **** +1548:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCC +1549:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCC +1550:Drivers/CMSIS/Include/core_cm7.h **** +1551:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCC +1552:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCC +1553:Drivers/CMSIS/Include/core_cm7.h **** +1554:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_THREAD_Pos 3U /*!< FPCC +1555:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCC +1556:Drivers/CMSIS/Include/core_cm7.h **** +1557:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_USER_Pos 1U /*!< FPCC +1558:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCC +1559:Drivers/CMSIS/Include/core_cm7.h **** +1560:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCC +1561:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCC +1562:Drivers/CMSIS/Include/core_cm7.h **** +1563:Drivers/CMSIS/Include/core_cm7.h **** /* Floating-Point Context Address Register Definitions */ +1564:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCA +1565:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCA +1566:Drivers/CMSIS/Include/core_cm7.h **** +1567:Drivers/CMSIS/Include/core_cm7.h **** /* Floating-Point Default Status Control Register Definitions */ +1568:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_AHP_Pos 26U /*!< FPDS +1569:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDS +1570:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccdsDELB.s page 29 + + +1571:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_DN_Pos 25U /*!< FPDS +1572:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDS +1573:Drivers/CMSIS/Include/core_cm7.h **** +1574:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_FZ_Pos 24U /*!< FPDS +1575:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDS +1576:Drivers/CMSIS/Include/core_cm7.h **** +1577:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_RMode_Pos 22U /*!< FPDS +1578:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDS +1579:Drivers/CMSIS/Include/core_cm7.h **** +1580:Drivers/CMSIS/Include/core_cm7.h **** /* Media and FP Feature Register 0 Definitions */ +1581:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR +1582:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR +1583:Drivers/CMSIS/Include/core_cm7.h **** +1584:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR +1585:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR +1586:Drivers/CMSIS/Include/core_cm7.h **** +1587:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR +1588:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR +1589:Drivers/CMSIS/Include/core_cm7.h **** +1590:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Divide_Pos 16U /*!< MVFR +1591:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR +1592:Drivers/CMSIS/Include/core_cm7.h **** +1593:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR +1594:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR +1595:Drivers/CMSIS/Include/core_cm7.h **** +1596:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR +1597:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR +1598:Drivers/CMSIS/Include/core_cm7.h **** +1599:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR +1600:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR +1601:Drivers/CMSIS/Include/core_cm7.h **** +1602:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR +1603:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR +1604:Drivers/CMSIS/Include/core_cm7.h **** +1605:Drivers/CMSIS/Include/core_cm7.h **** /* Media and FP Feature Register 1 Definitions */ +1606:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR +1607:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR +1608:Drivers/CMSIS/Include/core_cm7.h **** +1609:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR +1610:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR +1611:Drivers/CMSIS/Include/core_cm7.h **** +1612:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR +1613:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR +1614:Drivers/CMSIS/Include/core_cm7.h **** +1615:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR +1616:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR +1617:Drivers/CMSIS/Include/core_cm7.h **** +1618:Drivers/CMSIS/Include/core_cm7.h **** /* Media and FP Feature Register 2 Definitions */ +1619:Drivers/CMSIS/Include/core_cm7.h **** +1620:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_FPU */ +1621:Drivers/CMSIS/Include/core_cm7.h **** +1622:Drivers/CMSIS/Include/core_cm7.h **** +1623:Drivers/CMSIS/Include/core_cm7.h **** /** +1624:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1625:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) +1626:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Core Debug Registers +1627:Drivers/CMSIS/Include/core_cm7.h **** @{ + ARM GAS /tmp/ccdsDELB.s page 30 + + +1628:Drivers/CMSIS/Include/core_cm7.h **** */ +1629:Drivers/CMSIS/Include/core_cm7.h **** +1630:Drivers/CMSIS/Include/core_cm7.h **** /** +1631:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Core Debug Register (CoreDebug). +1632:Drivers/CMSIS/Include/core_cm7.h **** */ +1633:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1634:Drivers/CMSIS/Include/core_cm7.h **** { +1635:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status +1636:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Reg +1637:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Registe +1638:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Cont +1639:Drivers/CMSIS/Include/core_cm7.h **** } CoreDebug_Type; +1640:Drivers/CMSIS/Include/core_cm7.h **** +1641:Drivers/CMSIS/Include/core_cm7.h **** /* Debug Halting Control and Status Register Definitions */ +1642:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< Core +1643:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< Core +1644:Drivers/CMSIS/Include/core_cm7.h **** +1645:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< Core +1646:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< Core +1647:Drivers/CMSIS/Include/core_cm7.h **** +1648:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< Core +1649:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< Core +1650:Drivers/CMSIS/Include/core_cm7.h **** +1651:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< Core +1652:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< Core +1653:Drivers/CMSIS/Include/core_cm7.h **** +1654:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< Core +1655:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< Core +1656:Drivers/CMSIS/Include/core_cm7.h **** +1657:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< Core +1658:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< Core +1659:Drivers/CMSIS/Include/core_cm7.h **** +1660:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< Core +1661:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< Core +1662:Drivers/CMSIS/Include/core_cm7.h **** +1663:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< Core +1664:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< Core +1665:Drivers/CMSIS/Include/core_cm7.h **** +1666:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< Core +1667:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< Core +1668:Drivers/CMSIS/Include/core_cm7.h **** +1669:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< Core +1670:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< Core +1671:Drivers/CMSIS/Include/core_cm7.h **** +1672:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< Core +1673:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< Core +1674:Drivers/CMSIS/Include/core_cm7.h **** +1675:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< Core +1676:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< Core +1677:Drivers/CMSIS/Include/core_cm7.h **** +1678:Drivers/CMSIS/Include/core_cm7.h **** /* Debug Core Register Selector Register Definitions */ +1679:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< Core +1680:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< Core +1681:Drivers/CMSIS/Include/core_cm7.h **** +1682:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< Core +1683:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< Core +1684:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccdsDELB.s page 31 + + +1685:Drivers/CMSIS/Include/core_cm7.h **** /* Debug Exception and Monitor Control Register Definitions */ +1686:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< Core +1687:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< Core +1688:Drivers/CMSIS/Include/core_cm7.h **** +1689:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< Core +1690:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< Core +1691:Drivers/CMSIS/Include/core_cm7.h **** +1692:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< Core +1693:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< Core +1694:Drivers/CMSIS/Include/core_cm7.h **** +1695:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< Core +1696:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< Core +1697:Drivers/CMSIS/Include/core_cm7.h **** +1698:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< Core +1699:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< Core +1700:Drivers/CMSIS/Include/core_cm7.h **** +1701:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< Core +1702:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< Core +1703:Drivers/CMSIS/Include/core_cm7.h **** +1704:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< Core +1705:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< Core +1706:Drivers/CMSIS/Include/core_cm7.h **** +1707:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< Core +1708:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< Core +1709:Drivers/CMSIS/Include/core_cm7.h **** +1710:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< Core +1711:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< Core +1712:Drivers/CMSIS/Include/core_cm7.h **** +1713:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< Core +1714:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< Core +1715:Drivers/CMSIS/Include/core_cm7.h **** +1716:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< Core +1717:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< Core +1718:Drivers/CMSIS/Include/core_cm7.h **** +1719:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< Core +1720:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< Core +1721:Drivers/CMSIS/Include/core_cm7.h **** +1722:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< Core +1723:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< Core +1724:Drivers/CMSIS/Include/core_cm7.h **** +1725:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_CoreDebug */ +1726:Drivers/CMSIS/Include/core_cm7.h **** +1727:Drivers/CMSIS/Include/core_cm7.h **** +1728:Drivers/CMSIS/Include/core_cm7.h **** /** +1729:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1730:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_core_bitfield Core register bit field macros +1731:Drivers/CMSIS/Include/core_cm7.h **** \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). +1732:Drivers/CMSIS/Include/core_cm7.h **** @{ +1733:Drivers/CMSIS/Include/core_cm7.h **** */ +1734:Drivers/CMSIS/Include/core_cm7.h **** +1735:Drivers/CMSIS/Include/core_cm7.h **** /** +1736:Drivers/CMSIS/Include/core_cm7.h **** \brief Mask and shift a bit field value for use in a register bit range. +1737:Drivers/CMSIS/Include/core_cm7.h **** \param[in] field Name of the register bit field. +1738:Drivers/CMSIS/Include/core_cm7.h **** \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. +1739:Drivers/CMSIS/Include/core_cm7.h **** \return Masked and shifted value. +1740:Drivers/CMSIS/Include/core_cm7.h **** */ +1741:Drivers/CMSIS/Include/core_cm7.h **** #define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) + ARM GAS /tmp/ccdsDELB.s page 32 + + +1742:Drivers/CMSIS/Include/core_cm7.h **** +1743:Drivers/CMSIS/Include/core_cm7.h **** /** +1744:Drivers/CMSIS/Include/core_cm7.h **** \brief Mask and shift a register value to extract a bit filed value. +1745:Drivers/CMSIS/Include/core_cm7.h **** \param[in] field Name of the register bit field. +1746:Drivers/CMSIS/Include/core_cm7.h **** \param[in] value Value of register. This parameter is interpreted as an uint32_t type. +1747:Drivers/CMSIS/Include/core_cm7.h **** \return Masked and shifted bit field value. +1748:Drivers/CMSIS/Include/core_cm7.h **** */ +1749:Drivers/CMSIS/Include/core_cm7.h **** #define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) +1750:Drivers/CMSIS/Include/core_cm7.h **** +1751:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_core_bitfield */ +1752:Drivers/CMSIS/Include/core_cm7.h **** +1753:Drivers/CMSIS/Include/core_cm7.h **** +1754:Drivers/CMSIS/Include/core_cm7.h **** /** +1755:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1756:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_core_base Core Definitions +1757:Drivers/CMSIS/Include/core_cm7.h **** \brief Definitions for base addresses, unions, and structures. +1758:Drivers/CMSIS/Include/core_cm7.h **** @{ +1759:Drivers/CMSIS/Include/core_cm7.h **** */ +1760:Drivers/CMSIS/Include/core_cm7.h **** +1761:Drivers/CMSIS/Include/core_cm7.h **** /* Memory mapping of Core Hardware */ +1762:Drivers/CMSIS/Include/core_cm7.h **** #define SCS_BASE (0xE000E000UL) /*!< System Control Space Bas +1763:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +1764:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +1765:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +1766:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address +1767:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +1768:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +1769:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Bas +1770:Drivers/CMSIS/Include/core_cm7.h **** +1771:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register +1772:Drivers/CMSIS/Include/core_cm7.h **** #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct +1773:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration st +1774:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struc +1775:Drivers/CMSIS/Include/core_cm7.h **** #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct +1776:Drivers/CMSIS/Include/core_cm7.h **** #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct +1777:Drivers/CMSIS/Include/core_cm7.h **** #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct +1778:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration +1779:Drivers/CMSIS/Include/core_cm7.h **** +1780:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +1781:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit * +1782:Drivers/CMSIS/Include/core_cm7.h **** #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit * +1783:Drivers/CMSIS/Include/core_cm7.h **** #endif +1784:Drivers/CMSIS/Include/core_cm7.h **** +1785:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +1786:Drivers/CMSIS/Include/core_cm7.h **** #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ +1787:Drivers/CMSIS/Include/core_cm7.h **** +1788:Drivers/CMSIS/Include/core_cm7.h **** /*@} */ +1789:Drivers/CMSIS/Include/core_cm7.h **** +1790:Drivers/CMSIS/Include/core_cm7.h **** +1791:Drivers/CMSIS/Include/core_cm7.h **** +1792:Drivers/CMSIS/Include/core_cm7.h **** /******************************************************************************* +1793:Drivers/CMSIS/Include/core_cm7.h **** * Hardware Abstraction Layer +1794:Drivers/CMSIS/Include/core_cm7.h **** Core Function Interface contains: +1795:Drivers/CMSIS/Include/core_cm7.h **** - Core NVIC Functions +1796:Drivers/CMSIS/Include/core_cm7.h **** - Core SysTick Functions +1797:Drivers/CMSIS/Include/core_cm7.h **** - Core Debug Functions +1798:Drivers/CMSIS/Include/core_cm7.h **** - Core Register Access Functions + ARM GAS /tmp/ccdsDELB.s page 33 + + +1799:Drivers/CMSIS/Include/core_cm7.h **** ******************************************************************************/ +1800:Drivers/CMSIS/Include/core_cm7.h **** /** +1801:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +1802:Drivers/CMSIS/Include/core_cm7.h **** */ +1803:Drivers/CMSIS/Include/core_cm7.h **** +1804:Drivers/CMSIS/Include/core_cm7.h **** +1805:Drivers/CMSIS/Include/core_cm7.h **** +1806:Drivers/CMSIS/Include/core_cm7.h **** /* ########################## NVIC functions #################################### */ +1807:Drivers/CMSIS/Include/core_cm7.h **** /** +1808:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_Core_FunctionInterface +1809:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_Core_NVICFunctions NVIC Functions +1810:Drivers/CMSIS/Include/core_cm7.h **** \brief Functions that manage interrupts and exceptions via the NVIC. +1811:Drivers/CMSIS/Include/core_cm7.h **** @{ +1812:Drivers/CMSIS/Include/core_cm7.h **** */ +1813:Drivers/CMSIS/Include/core_cm7.h **** +1814:Drivers/CMSIS/Include/core_cm7.h **** #ifdef CMSIS_NVIC_VIRTUAL +1815:Drivers/CMSIS/Include/core_cm7.h **** #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE +1816:Drivers/CMSIS/Include/core_cm7.h **** #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" +1817:Drivers/CMSIS/Include/core_cm7.h **** #endif +1818:Drivers/CMSIS/Include/core_cm7.h **** #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +1819:Drivers/CMSIS/Include/core_cm7.h **** #else +1820:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping +1821:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping +1822:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_EnableIRQ __NVIC_EnableIRQ +1823:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ +1824:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_DisableIRQ __NVIC_DisableIRQ +1825:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ +1826:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ +1827:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +1828:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetActive __NVIC_GetActive +1829:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_SetPriority __NVIC_SetPriority +1830:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetPriority __NVIC_GetPriority +1831:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_SystemReset __NVIC_SystemReset +1832:Drivers/CMSIS/Include/core_cm7.h **** #endif /* CMSIS_NVIC_VIRTUAL */ +1833:Drivers/CMSIS/Include/core_cm7.h **** +1834:Drivers/CMSIS/Include/core_cm7.h **** #ifdef CMSIS_VECTAB_VIRTUAL +1835:Drivers/CMSIS/Include/core_cm7.h **** #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE +1836:Drivers/CMSIS/Include/core_cm7.h **** #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" +1837:Drivers/CMSIS/Include/core_cm7.h **** #endif +1838:Drivers/CMSIS/Include/core_cm7.h **** #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +1839:Drivers/CMSIS/Include/core_cm7.h **** #else +1840:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_SetVector __NVIC_SetVector +1841:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetVector __NVIC_GetVector +1842:Drivers/CMSIS/Include/core_cm7.h **** #endif /* (CMSIS_VECTAB_VIRTUAL) */ +1843:Drivers/CMSIS/Include/core_cm7.h **** +1844:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_USER_IRQ_OFFSET 16 +1845:Drivers/CMSIS/Include/core_cm7.h **** +1846:Drivers/CMSIS/Include/core_cm7.h **** +1847:Drivers/CMSIS/Include/core_cm7.h **** /* The following EXC_RETURN values are saved the LR on exception entry */ +1848:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after ret +1849:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after retu +1850:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after retu +1851:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after ret +1852:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after retu +1853:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after retu +1854:Drivers/CMSIS/Include/core_cm7.h **** +1855:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccdsDELB.s page 34 + + +1856:Drivers/CMSIS/Include/core_cm7.h **** /** +1857:Drivers/CMSIS/Include/core_cm7.h **** \brief Set Priority Grouping +1858:Drivers/CMSIS/Include/core_cm7.h **** \details Sets the priority grouping field using the required unlock sequence. +1859:Drivers/CMSIS/Include/core_cm7.h **** The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. +1860:Drivers/CMSIS/Include/core_cm7.h **** Only values from 0..7 are used. +1861:Drivers/CMSIS/Include/core_cm7.h **** In case of a conflict between priority grouping and available +1862:Drivers/CMSIS/Include/core_cm7.h **** priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. +1863:Drivers/CMSIS/Include/core_cm7.h **** \param [in] PriorityGroup Priority grouping field. +1864:Drivers/CMSIS/Include/core_cm7.h **** */ +1865:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) +1866:Drivers/CMSIS/Include/core_cm7.h **** { +1867:Drivers/CMSIS/Include/core_cm7.h **** uint32_t reg_value; +1868:Drivers/CMSIS/Include/core_cm7.h **** uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 a +1869:Drivers/CMSIS/Include/core_cm7.h **** +1870:Drivers/CMSIS/Include/core_cm7.h **** reg_value = SCB->AIRCR; /* read old register +1871:Drivers/CMSIS/Include/core_cm7.h **** reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to chan +1872:Drivers/CMSIS/Include/core_cm7.h **** reg_value = (reg_value | +1873:Drivers/CMSIS/Include/core_cm7.h **** ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | +1874:Drivers/CMSIS/Include/core_cm7.h **** (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key a +1875:Drivers/CMSIS/Include/core_cm7.h **** SCB->AIRCR = reg_value; +1876:Drivers/CMSIS/Include/core_cm7.h **** } +1877:Drivers/CMSIS/Include/core_cm7.h **** +1878:Drivers/CMSIS/Include/core_cm7.h **** +1879:Drivers/CMSIS/Include/core_cm7.h **** /** +1880:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Priority Grouping +1881:Drivers/CMSIS/Include/core_cm7.h **** \details Reads the priority grouping field from the NVIC Interrupt Controller. +1882:Drivers/CMSIS/Include/core_cm7.h **** \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). +1883:Drivers/CMSIS/Include/core_cm7.h **** */ +1884:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) +1885:Drivers/CMSIS/Include/core_cm7.h **** { +1886:Drivers/CMSIS/Include/core_cm7.h **** return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +1887:Drivers/CMSIS/Include/core_cm7.h **** } +1888:Drivers/CMSIS/Include/core_cm7.h **** +1889:Drivers/CMSIS/Include/core_cm7.h **** +1890:Drivers/CMSIS/Include/core_cm7.h **** /** +1891:Drivers/CMSIS/Include/core_cm7.h **** \brief Enable Interrupt +1892:Drivers/CMSIS/Include/core_cm7.h **** \details Enables a device specific interrupt in the NVIC interrupt controller. +1893:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1894:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1895:Drivers/CMSIS/Include/core_cm7.h **** */ +1896:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +1897:Drivers/CMSIS/Include/core_cm7.h **** { +1898:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1899:Drivers/CMSIS/Include/core_cm7.h **** { +1900:Drivers/CMSIS/Include/core_cm7.h **** NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +1901:Drivers/CMSIS/Include/core_cm7.h **** } +1902:Drivers/CMSIS/Include/core_cm7.h **** } +1903:Drivers/CMSIS/Include/core_cm7.h **** +1904:Drivers/CMSIS/Include/core_cm7.h **** +1905:Drivers/CMSIS/Include/core_cm7.h **** /** +1906:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Interrupt Enable status +1907:Drivers/CMSIS/Include/core_cm7.h **** \details Returns a device specific interrupt enable status from the NVIC interrupt controller. +1908:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1909:Drivers/CMSIS/Include/core_cm7.h **** \return 0 Interrupt is not enabled. +1910:Drivers/CMSIS/Include/core_cm7.h **** \return 1 Interrupt is enabled. +1911:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1912:Drivers/CMSIS/Include/core_cm7.h **** */ + ARM GAS /tmp/ccdsDELB.s page 35 + + +1913:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +1914:Drivers/CMSIS/Include/core_cm7.h **** { +1915:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1916:Drivers/CMSIS/Include/core_cm7.h **** { +1917:Drivers/CMSIS/Include/core_cm7.h **** return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL) +1918:Drivers/CMSIS/Include/core_cm7.h **** } +1919:Drivers/CMSIS/Include/core_cm7.h **** else +1920:Drivers/CMSIS/Include/core_cm7.h **** { +1921:Drivers/CMSIS/Include/core_cm7.h **** return(0U); +1922:Drivers/CMSIS/Include/core_cm7.h **** } +1923:Drivers/CMSIS/Include/core_cm7.h **** } +1924:Drivers/CMSIS/Include/core_cm7.h **** +1925:Drivers/CMSIS/Include/core_cm7.h **** +1926:Drivers/CMSIS/Include/core_cm7.h **** /** +1927:Drivers/CMSIS/Include/core_cm7.h **** \brief Disable Interrupt +1928:Drivers/CMSIS/Include/core_cm7.h **** \details Disables a device specific interrupt in the NVIC interrupt controller. +1929:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1930:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1931:Drivers/CMSIS/Include/core_cm7.h **** */ +1932:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +1933:Drivers/CMSIS/Include/core_cm7.h **** { +1934:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1935:Drivers/CMSIS/Include/core_cm7.h **** { +1936:Drivers/CMSIS/Include/core_cm7.h **** NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +1937:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +1938:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +1939:Drivers/CMSIS/Include/core_cm7.h **** } +1940:Drivers/CMSIS/Include/core_cm7.h **** } +1941:Drivers/CMSIS/Include/core_cm7.h **** +1942:Drivers/CMSIS/Include/core_cm7.h **** +1943:Drivers/CMSIS/Include/core_cm7.h **** /** +1944:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Pending Interrupt +1945:Drivers/CMSIS/Include/core_cm7.h **** \details Reads the NVIC pending register and returns the pending bit for the specified device spe +1946:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1947:Drivers/CMSIS/Include/core_cm7.h **** \return 0 Interrupt status is not pending. +1948:Drivers/CMSIS/Include/core_cm7.h **** \return 1 Interrupt status is pending. +1949:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1950:Drivers/CMSIS/Include/core_cm7.h **** */ +1951:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +1952:Drivers/CMSIS/Include/core_cm7.h **** { +1953:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1954:Drivers/CMSIS/Include/core_cm7.h **** { +1955:Drivers/CMSIS/Include/core_cm7.h **** return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL) +1956:Drivers/CMSIS/Include/core_cm7.h **** } +1957:Drivers/CMSIS/Include/core_cm7.h **** else +1958:Drivers/CMSIS/Include/core_cm7.h **** { +1959:Drivers/CMSIS/Include/core_cm7.h **** return(0U); +1960:Drivers/CMSIS/Include/core_cm7.h **** } +1961:Drivers/CMSIS/Include/core_cm7.h **** } +1962:Drivers/CMSIS/Include/core_cm7.h **** +1963:Drivers/CMSIS/Include/core_cm7.h **** +1964:Drivers/CMSIS/Include/core_cm7.h **** /** +1965:Drivers/CMSIS/Include/core_cm7.h **** \brief Set Pending Interrupt +1966:Drivers/CMSIS/Include/core_cm7.h **** \details Sets the pending bit of a device specific interrupt in the NVIC pending register. +1967:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1968:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1969:Drivers/CMSIS/Include/core_cm7.h **** */ + ARM GAS /tmp/ccdsDELB.s page 36 + + +1970:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +1971:Drivers/CMSIS/Include/core_cm7.h **** { +1972:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1973:Drivers/CMSIS/Include/core_cm7.h **** { +1974:Drivers/CMSIS/Include/core_cm7.h **** NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +1975:Drivers/CMSIS/Include/core_cm7.h **** } +1976:Drivers/CMSIS/Include/core_cm7.h **** } +1977:Drivers/CMSIS/Include/core_cm7.h **** +1978:Drivers/CMSIS/Include/core_cm7.h **** +1979:Drivers/CMSIS/Include/core_cm7.h **** /** +1980:Drivers/CMSIS/Include/core_cm7.h **** \brief Clear Pending Interrupt +1981:Drivers/CMSIS/Include/core_cm7.h **** \details Clears the pending bit of a device specific interrupt in the NVIC pending register. +1982:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1983:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1984:Drivers/CMSIS/Include/core_cm7.h **** */ +1985:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +1986:Drivers/CMSIS/Include/core_cm7.h **** { +1987:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1988:Drivers/CMSIS/Include/core_cm7.h **** { +1989:Drivers/CMSIS/Include/core_cm7.h **** NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +1990:Drivers/CMSIS/Include/core_cm7.h **** } +1991:Drivers/CMSIS/Include/core_cm7.h **** } +1992:Drivers/CMSIS/Include/core_cm7.h **** +1993:Drivers/CMSIS/Include/core_cm7.h **** +1994:Drivers/CMSIS/Include/core_cm7.h **** /** +1995:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Active Interrupt +1996:Drivers/CMSIS/Include/core_cm7.h **** \details Reads the active register in the NVIC and returns the active bit for the device specific +1997:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1998:Drivers/CMSIS/Include/core_cm7.h **** \return 0 Interrupt status is not active. +1999:Drivers/CMSIS/Include/core_cm7.h **** \return 1 Interrupt status is active. +2000:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +2001:Drivers/CMSIS/Include/core_cm7.h **** */ +2002:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +2003:Drivers/CMSIS/Include/core_cm7.h **** { +2004:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +2005:Drivers/CMSIS/Include/core_cm7.h **** { +2006:Drivers/CMSIS/Include/core_cm7.h **** return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL) +2007:Drivers/CMSIS/Include/core_cm7.h **** } +2008:Drivers/CMSIS/Include/core_cm7.h **** else +2009:Drivers/CMSIS/Include/core_cm7.h **** { +2010:Drivers/CMSIS/Include/core_cm7.h **** return(0U); +2011:Drivers/CMSIS/Include/core_cm7.h **** } +2012:Drivers/CMSIS/Include/core_cm7.h **** } +2013:Drivers/CMSIS/Include/core_cm7.h **** +2014:Drivers/CMSIS/Include/core_cm7.h **** +2015:Drivers/CMSIS/Include/core_cm7.h **** /** +2016:Drivers/CMSIS/Include/core_cm7.h **** \brief Set Interrupt Priority +2017:Drivers/CMSIS/Include/core_cm7.h **** \details Sets the priority of a device specific interrupt or a processor exception. +2018:Drivers/CMSIS/Include/core_cm7.h **** The interrupt number can be positive to specify a device specific interrupt, +2019:Drivers/CMSIS/Include/core_cm7.h **** or negative to specify a processor exception. +2020:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Interrupt number. +2021:Drivers/CMSIS/Include/core_cm7.h **** \param [in] priority Priority to set. +2022:Drivers/CMSIS/Include/core_cm7.h **** \note The priority cannot be set for every processor exception. +2023:Drivers/CMSIS/Include/core_cm7.h **** */ +2024:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +2025:Drivers/CMSIS/Include/core_cm7.h **** { +2026:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) + ARM GAS /tmp/ccdsDELB.s page 37 + + +2027:Drivers/CMSIS/Include/core_cm7.h **** { +2028:Drivers/CMSIS/Include/core_cm7.h **** NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & ( +2029:Drivers/CMSIS/Include/core_cm7.h **** } +2030:Drivers/CMSIS/Include/core_cm7.h **** else +2031:Drivers/CMSIS/Include/core_cm7.h **** { +2032:Drivers/CMSIS/Include/core_cm7.h **** SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & ( +2033:Drivers/CMSIS/Include/core_cm7.h **** } +2034:Drivers/CMSIS/Include/core_cm7.h **** } +2035:Drivers/CMSIS/Include/core_cm7.h **** +2036:Drivers/CMSIS/Include/core_cm7.h **** +2037:Drivers/CMSIS/Include/core_cm7.h **** /** +2038:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Interrupt Priority +2039:Drivers/CMSIS/Include/core_cm7.h **** \details Reads the priority of a device specific interrupt or a processor exception. +2040:Drivers/CMSIS/Include/core_cm7.h **** The interrupt number can be positive to specify a device specific interrupt, +2041:Drivers/CMSIS/Include/core_cm7.h **** or negative to specify a processor exception. +2042:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Interrupt number. +2043:Drivers/CMSIS/Include/core_cm7.h **** \return Interrupt Priority. +2044:Drivers/CMSIS/Include/core_cm7.h **** Value is aligned automatically to the implemented priority bits of the microc +2045:Drivers/CMSIS/Include/core_cm7.h **** */ +2046:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +2047:Drivers/CMSIS/Include/core_cm7.h **** { +2048:Drivers/CMSIS/Include/core_cm7.h **** +2049:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +2050:Drivers/CMSIS/Include/core_cm7.h **** { +2051:Drivers/CMSIS/Include/core_cm7.h **** return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); +2052:Drivers/CMSIS/Include/core_cm7.h **** } +2053:Drivers/CMSIS/Include/core_cm7.h **** else +2054:Drivers/CMSIS/Include/core_cm7.h **** { +2055:Drivers/CMSIS/Include/core_cm7.h **** return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); +2056:Drivers/CMSIS/Include/core_cm7.h **** } +2057:Drivers/CMSIS/Include/core_cm7.h **** } +2058:Drivers/CMSIS/Include/core_cm7.h **** +2059:Drivers/CMSIS/Include/core_cm7.h **** +2060:Drivers/CMSIS/Include/core_cm7.h **** /** +2061:Drivers/CMSIS/Include/core_cm7.h **** \brief Encode Priority +2062:Drivers/CMSIS/Include/core_cm7.h **** \details Encodes the priority for an interrupt with the given priority group, +2063:Drivers/CMSIS/Include/core_cm7.h **** preemptive priority value, and subpriority value. +2064:Drivers/CMSIS/Include/core_cm7.h **** In case of a conflict between priority grouping and available +2065:Drivers/CMSIS/Include/core_cm7.h **** priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. +2066:Drivers/CMSIS/Include/core_cm7.h **** \param [in] PriorityGroup Used priority group. +2067:Drivers/CMSIS/Include/core_cm7.h **** \param [in] PreemptPriority Preemptive priority value (starting from 0). +2068:Drivers/CMSIS/Include/core_cm7.h **** \param [in] SubPriority Subpriority value (starting from 0). +2069:Drivers/CMSIS/Include/core_cm7.h **** \return Encoded priority. Value can be used in the function \ref NVIC_SetP +2070:Drivers/CMSIS/Include/core_cm7.h **** */ +2071:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uin +2072:Drivers/CMSIS/Include/core_cm7.h **** { + 28 .loc 1 2072 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. +2073:Drivers/CMSIS/Include/core_cm7.h **** uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used + 33 .loc 1 2073 3 view .LVU1 + 34 .loc 1 2073 12 is_stmt 0 view .LVU2 + 35 0000 00F00700 and r0, r0, #7 + 36 .LVL1: +2074:Drivers/CMSIS/Include/core_cm7.h **** uint32_t PreemptPriorityBits; + ARM GAS /tmp/ccdsDELB.s page 38 + + + 37 .loc 1 2074 3 is_stmt 1 view .LVU3 +2075:Drivers/CMSIS/Include/core_cm7.h **** uint32_t SubPriorityBits; + 38 .loc 1 2075 3 view .LVU4 +2076:Drivers/CMSIS/Include/core_cm7.h **** +2077:Drivers/CMSIS/Include/core_cm7.h **** PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NV + 39 .loc 1 2077 3 view .LVU5 + 40 .loc 1 2077 31 is_stmt 0 view .LVU6 + 41 0004 C0F1070C rsb ip, r0, #7 + 42 .loc 1 2077 23 view .LVU7 + 43 0008 BCF1040F cmp ip, #4 + 44 000c 28BF it cs + 45 000e 4FF0040C movcs ip, #4 + 46 .LVL2: +2078:Drivers/CMSIS/Include/core_cm7.h **** SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint + 47 .loc 1 2078 3 is_stmt 1 view .LVU8 + 48 .loc 1 2078 44 is_stmt 0 view .LVU9 + 49 0012 031D adds r3, r0, #4 + 50 .loc 1 2078 109 view .LVU10 + 51 0014 062B cmp r3, #6 + 52 0016 0CD9 bls .L3 + 53 .loc 1 2078 109 discriminator 1 view .LVU11 + 54 0018 C31E subs r3, r0, #3 + 55 .L2: + 56 .LVL3: +2079:Drivers/CMSIS/Include/core_cm7.h **** +2080:Drivers/CMSIS/Include/core_cm7.h **** return ( + 57 .loc 1 2080 3 is_stmt 1 discriminator 4 view .LVU12 +2081:Drivers/CMSIS/Include/core_cm7.h **** ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits + 58 .loc 1 2081 30 is_stmt 0 discriminator 4 view .LVU13 + 59 001a 4FF0FF30 mov r0, #-1 + 60 .LVL4: + 61 .loc 1 2081 30 discriminator 4 view .LVU14 + 62 001e 00FA0CFC lsl ip, r0, ip + 63 .LVL5: + 64 .loc 1 2081 30 discriminator 4 view .LVU15 + 65 0022 21EA0C01 bic r1, r1, ip + 66 .LVL6: + 67 .loc 1 2081 82 discriminator 4 view .LVU16 + 68 0026 9940 lsls r1, r1, r3 +2082:Drivers/CMSIS/Include/core_cm7.h **** ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 69 .loc 1 2082 30 discriminator 4 view .LVU17 + 70 0028 9840 lsls r0, r0, r3 + 71 002a 22EA0000 bic r0, r2, r0 +2083:Drivers/CMSIS/Include/core_cm7.h **** ); +2084:Drivers/CMSIS/Include/core_cm7.h **** } + 72 .loc 1 2084 1 discriminator 4 view .LVU18 + 73 002e 0843 orrs r0, r0, r1 + 74 0030 7047 bx lr + 75 .LVL7: + 76 .L3: +2078:Drivers/CMSIS/Include/core_cm7.h **** + 77 .loc 1 2078 109 view .LVU19 + 78 0032 0023 movs r3, #0 + 79 0034 F1E7 b .L2 + 80 .cfi_endproc + 81 .LFE113: + 83 .section .text.MX_SDMMC1_SD_Init,"ax",%progbits + ARM GAS /tmp/ccdsDELB.s page 39 + + + 84 .align 1 + 85 .syntax unified + 86 .thumb + 87 .thumb_func + 88 .fpu fpv5-d16 + 90 MX_SDMMC1_SD_Init: + 91 .LFB1190: + 92 .file 2 "Src/main.c" + 1:Src/main.c **** /* USER CODE BEGIN Header */ + 2:Src/main.c **** /** + 3:Src/main.c **** ****************************************************************************** + 4:Src/main.c **** * @file : main.c + 5:Src/main.c **** * @brief : Main program body + 6:Src/main.c **** ****************************************************************************** + 7:Src/main.c **** * @attention + 8:Src/main.c **** * + 9:Src/main.c **** * Copyright (c) 2023 STMicroelectronics. + 10:Src/main.c **** * All rights reserved. + 11:Src/main.c **** * + 12:Src/main.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Src/main.c **** * in the root directory of this software component. + 14:Src/main.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Src/main.c **** * + 16:Src/main.c **** ****************************************************************************** + 17:Src/main.c **** */ + 18:Src/main.c **** /* USER CODE END Header */ + 19:Src/main.c **** /* Includes ------------------------------------------------------------------*/ + 20:Src/main.c **** #include "main.h" + 21:Src/main.c **** #include "fatfs.h" + 22:Src/main.c **** + 23:Src/main.c **** /* Private includes ----------------------------------------------------------*/ + 24:Src/main.c **** /* USER CODE BEGIN Includes */ + 25:Src/main.c **** // #include "math.h" + 26:Src/main.c **** #include "File_Handling.h" + 27:Src/main.c **** #include + 28:Src/main.c **** /* USER CODE END Includes */ + 29:Src/main.c **** + 30:Src/main.c **** /* Private typedef -----------------------------------------------------------*/ + 31:Src/main.c **** /* USER CODE BEGIN PTD */ + 32:Src/main.c **** + 33:Src/main.c **** /* USER CODE END PTD */ + 34:Src/main.c **** + 35:Src/main.c **** /* Private define ------------------------------------------------------------*/ + 36:Src/main.c **** /* USER CODE BEGIN PD */ + 37:Src/main.c **** /* USER CODE END PD */ + 38:Src/main.c **** + 39:Src/main.c **** /* Private macro -------------------------------------------------------------*/ + 40:Src/main.c **** /* USER CODE BEGIN PM */ + 41:Src/main.c **** + 42:Src/main.c **** /* USER CODE END PM */ + 43:Src/main.c **** + 44:Src/main.c **** /* Private variables ---------------------------------------------------------*/ + 45:Src/main.c **** ADC_HandleTypeDef hadc1; + 46:Src/main.c **** ADC_HandleTypeDef hadc3; + 47:Src/main.c **** + 48:Src/main.c **** SD_HandleTypeDef hsd1; + 49:Src/main.c **** + ARM GAS /tmp/ccdsDELB.s page 40 + + + 50:Src/main.c **** TIM_HandleTypeDef htim10; + 51:Src/main.c **** + 52:Src/main.c **** /* USER CODE BEGIN PV */ + 53:Src/main.c **** uint32_t TO6, TO6_before, TO6_stop, TO6_uart, SD_SEEK, SD_SLIDE, temp32, TO7, TO7_before, TO7_PID, + 54:Src/main.c **** uint8_t uart_buf, CPU_state, CPU_state_old, UART_transmission_request, State_Data[2], UART_DATA[DL_ + 55:Src/main.c **** uint16_t UART_rec_incr, UART_header, CS_result, temp16, Long_Data[DL_16], COMMAND[CL_16];//, SD_mat + 56:Src/main.c **** FRESULT fresult; // result + 57:Src/main.c **** int test; + 58:Src/main.c **** unsigned long fgoto, sizeoffile;//file pointer of the file object & size of file FPGA_RECEIVE_DATA_ + 59:Src/main.c **** + 60:Src/main.c **** LDx_SetupTypeDef LD1_curr_setup, LD2_curr_setup, LD1_def_setup, LD2_def_setup; + 61:Src/main.c **** Work_SetupTypeDef Curr_setup, Def_setup; + 62:Src/main.c **** LDx_ParamTypeDef LD1_param, LD2_param; + 63:Src/main.c **** + 64:Src/main.c **** task_t task; + 65:Src/main.c **** + 66:Src/main.c **** /* USER CODE END PV */ + 67:Src/main.c **** + 68:Src/main.c **** /* Private function prototypes -----------------------------------------------*/ + 69:Src/main.c **** void SystemClock_Config(void); + 70:Src/main.c **** static void MX_GPIO_Init(void); + 71:Src/main.c **** static void MX_DMA_Init(void); + 72:Src/main.c **** static void MX_SPI4_Init(void); + 73:Src/main.c **** static void MX_TIM2_Init(void); + 74:Src/main.c **** static void MX_TIM5_Init(void); + 75:Src/main.c **** static void MX_ADC1_Init(void); + 76:Src/main.c **** static void MX_ADC3_Init(void); + 77:Src/main.c **** static void MX_SPI2_Init(void); + 78:Src/main.c **** static void MX_SPI5_Init(void); + 79:Src/main.c **** static void MX_SPI6_Init(void); + 80:Src/main.c **** static void MX_USART1_UART_Init(void); + 81:Src/main.c **** static void MX_SDMMC1_SD_Init(void); + 82:Src/main.c **** static void MX_TIM7_Init(void); + 83:Src/main.c **** static void MX_TIM6_Init(void); + 84:Src/main.c **** static void MX_TIM10_Init(void); + 85:Src/main.c **** /* USER CODE BEGIN PFP */ + 86:Src/main.c **** static void Init_params(void); + 87:Src/main.c **** static void Decode_uart(uint16_t *Command, LDx_SetupTypeDef *LD1_curr_setup, LDx_SetupTypeDef *LD2_ + 88:Src/main.c **** static void Decode_task(uint16_t *Command, LDx_SetupTypeDef *LD1_curr_setup, LDx_SetupTypeDef *LD2_ + 89:Src/main.c **** static void Set_LTEC(uint8_t num, uint16_t DATA); + 90:Src/main.c **** static uint16_t MPhD_T(uint8_t num); + 91:Src/main.c **** static uint16_t Get_ADC(uint8_t num); + 92:Src/main.c **** static uint16_t PID_Controller_Temp(LDx_SetupTypeDef * LDx_curr_setup, LDx_ParamTypeDef * LDx_resul + 93:Src/main.c **** uint8_t CheckChecksum(uint16_t *pbuff); + 94:Src/main.c **** uint16_t CalculateChecksum(uint16_t *pbuff, uint16_t len); + 95:Src/main.c **** //int SD_Init(void); + 96:Src/main.c **** int SD_SAVE(uint16_t *pbuff); + 97:Src/main.c **** //uint32_t Get_Length(void); + 98:Src/main.c **** int SD_READ(uint16_t *pbuff); + 99:Src/main.c **** int SD_REMOVE(void); + 100:Src/main.c **** void USART_TX (uint8_t* dt, uint16_t sz); + 101:Src/main.c **** void USART_TX_DMA (uint16_t sz); + 102:Src/main.c **** static void Stop_TIM10(); + 103:Src/main.c **** /* USER CODE END PFP */ + 104:Src/main.c **** + 105:Src/main.c **** /* Private user code ---------------------------------------------------------*/ + 106:Src/main.c **** /* USER CODE BEGIN 0 */ + ARM GAS /tmp/ccdsDELB.s page 41 + + + 107:Src/main.c **** + 108:Src/main.c **** /* USER CODE END 0 */ + 109:Src/main.c **** + 110:Src/main.c **** /** + 111:Src/main.c **** * @brief The application entry point. + 112:Src/main.c **** * @retval int + 113:Src/main.c **** */ + 114:Src/main.c **** int main(void) + 115:Src/main.c **** { + 116:Src/main.c **** /* USER CODE BEGIN 1 */ + 117:Src/main.c **** HAL_StatusTypeDef st; + 118:Src/main.c **** /* USER CODE END 1 */ + 119:Src/main.c **** + 120:Src/main.c **** /* MCU Configuration--------------------------------------------------------*/ + 121:Src/main.c **** + 122:Src/main.c **** /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + 123:Src/main.c **** HAL_Init(); + 124:Src/main.c **** + 125:Src/main.c **** /* USER CODE BEGIN Init */ + 126:Src/main.c **** /*I hope you don't forget that first - MX_DMA_Init(); and than - MX_USART1_UART_Init();*/ + 127:Src/main.c **** /* USER CODE END Init */ + 128:Src/main.c **** + 129:Src/main.c **** /* Configure the system clock */ + 130:Src/main.c **** SystemClock_Config(); + 131:Src/main.c **** + 132:Src/main.c **** /* USER CODE BEGIN SysInit */ + 133:Src/main.c **** + 134:Src/main.c **** /* USER CODE END SysInit */ + 135:Src/main.c **** + 136:Src/main.c **** /* Initialize all configured peripherals */ + 137:Src/main.c **** MX_GPIO_Init(); + 138:Src/main.c **** MX_DMA_Init(); + 139:Src/main.c **** MX_SPI4_Init(); + 140:Src/main.c **** MX_FATFS_Init(); + 141:Src/main.c **** MX_TIM2_Init(); + 142:Src/main.c **** MX_TIM5_Init(); + 143:Src/main.c **** MX_ADC1_Init(); + 144:Src/main.c **** MX_ADC3_Init(); + 145:Src/main.c **** MX_SPI2_Init(); + 146:Src/main.c **** MX_SPI5_Init(); + 147:Src/main.c **** MX_SPI6_Init(); + 148:Src/main.c **** MX_USART1_UART_Init(); + 149:Src/main.c **** MX_SDMMC1_SD_Init(); + 150:Src/main.c **** MX_TIM7_Init(); + 151:Src/main.c **** MX_TIM6_Init(); + 152:Src/main.c **** MX_TIM10_Init(); + 153:Src/main.c **** /* USER CODE BEGIN 2 */ + 154:Src/main.c **** Init_params(); + 155:Src/main.c **** /* USER CODE END 2 */ + 156:Src/main.c **** + 157:Src/main.c **** /* Infinite loop */ + 158:Src/main.c **** /* USER CODE BEGIN WHILE */ + 159:Src/main.c **** while (1) + 160:Src/main.c **** { + 161:Src/main.c **** if ((HAL_GPIO_ReadPin(USB_FLAG_GPIO_Port, USB_FLAG_Pin)==GPIO_PIN_SET)&&(u_rx_flg == 0)) + 162:Src/main.c **** { + 163:Src/main.c **** //NVIC_DisableIRQ(USART1_IRQn); + ARM GAS /tmp/ccdsDELB.s page 42 + + + 164:Src/main.c **** LL_USART_EnableIT_PE(USART1); + 165:Src/main.c **** LL_USART_EnableIT_RXNE(USART1); + 166:Src/main.c **** LL_USART_EnableIT_ERROR(USART1); + 167:Src/main.c **** NVIC_SetPriority(USART1_IRQn, 0); + 168:Src/main.c **** NVIC_EnableIRQ(USART1_IRQn);//In other case you have FE error flag... + 169:Src/main.c **** u_rx_flg = 1; + 170:Src/main.c **** } + 171:Src/main.c **** // else + 172:Src/main.c **** // { + 173:Src/main.c **** // //NVIC_DisableIRQ(USART1_IRQn); + 174:Src/main.c **** // u_rx_flg = 0; + 175:Src/main.c **** // } + 176:Src/main.c **** switch (CPU_state) + 177:Src/main.c **** { + 178:Src/main.c **** case HALT://0 - Default state + 179:Src/main.c **** CPU_state_old = HALT;//Save main current cycle + 180:Src/main.c **** task.current_param = task.min_param; + 181:Src/main.c **** Stop_TIM10(); + 182:Src/main.c **** break; + 183:Src/main.c **** case DECODE_ENABLE://1 - Decode rec. message + 184:Src/main.c **** CS_result = CalculateChecksum(COMMAND, CL_16-2); + 185:Src/main.c **** if (CheckChecksum(COMMAND)) + 186:Src/main.c **** { + 187:Src/main.c **** LL_SPI_Enable(SPI2);//Enable SPI for Laser1 DAC & TEC1 + 188:Src/main.c **** LL_SPI_Enable(SPI6);//Enable SPI for Laser2 DAC & TEC2 + 189:Src/main.c **** Decode_uart(COMMAND, &LD1_curr_setup, &LD2_curr_setup, &Curr_setup); + 190:Src/main.c **** TO6_before = TO6; + 191:Src/main.c **** //LD1_param.LD_TEMP_Before = LD1_param.LD_TEMP; + 192:Src/main.c **** //LD2_param.LD_TEMP_Before = LD2_param.LD_TEMP; + 193:Src/main.c **** CPU_state = WORK_ENABLE; + 194:Src/main.c **** CPU_state_old = WORK_ENABLE;//Save main current cycle + 195:Src/main.c **** } + 196:Src/main.c **** else + 197:Src/main.c **** { + 198:Src/main.c **** State_Data[0] |= UART_DECODE_ERR; + 199:Src/main.c **** CPU_state = DEFAULT_ENABLE; + 200:Src/main.c **** CPU_state_old = HALT;//Save main current cycle + 201:Src/main.c **** } + 202:Src/main.c **** UART_transmission_request = MESS_01; + 203:Src/main.c **** break; + 204:Src/main.c **** case DEFAULT_ENABLE://2 - Go to HALT + 205:Src/main.c **** //Set current setup to default + 206:Src/main.c **** task.current_param = task.min_param; + 207:Src/main.c **** Stop_TIM10(); + 208:Src/main.c **** Init_params(); + 209:Src/main.c **** LL_SPI_Disable(SPI2);//Disable SPI for Laser1 DAC & TEC1 + 210:Src/main.c **** LL_SPI_Disable(SPI6);//Disable SPI for Laser2 DAC & TEC2 + 211:Src/main.c **** CPU_state = HALT; + 212:Src/main.c **** CPU_state_old = HALT;//Save main current cycle + 213:Src/main.c **** UART_transmission_request = MESS_01; + 214:Src/main.c **** break; + 215:Src/main.c **** case TRANS_S_ENABLE://3 - Transmith saved packet Before this operation must to be defaulting! + 216:Src/main.c **** temp16 = SD_READ(&Long_Data[0]); + 217:Src/main.c **** State_Data[0]|=temp16&0xff; + 218:Src/main.c **** if (temp16==0) + 219:Src/main.c **** { + 220:Src/main.c **** UART_transmission_request = MESS_03; + ARM GAS /tmp/ccdsDELB.s page 43 + + + 221:Src/main.c **** } + 222:Src/main.c **** else + 223:Src/main.c **** { + 224:Src/main.c **** UART_transmission_request = MESS_01; + 225:Src/main.c **** } + 226:Src/main.c **** CPU_state_old = HALT; + 227:Src/main.c **** CPU_state = CPU_state_old;//Return to main current cycle + 228:Src/main.c **** break; + 229:Src/main.c **** case TRANS_ENABLE://4 - Transmith current packet + 230:Src/main.c **** UART_transmission_request = MESS_02; + 231:Src/main.c **** CPU_state = CPU_state_old;//Return to main current cycle + 232:Src/main.c **** break; + 233:Src/main.c **** case REMOVE_FILE://5 - Remove file from SD + 234:Src/main.c **** State_Data[0]|=SD_REMOVE()&0xff; + 235:Src/main.c **** UART_transmission_request = MESS_01; + 236:Src/main.c **** CPU_state = CPU_state_old; + 237:Src/main.c **** break; + 238:Src/main.c **** case STATE://6 - Transmith state message + 239:Src/main.c **** UART_transmission_request = MESS_01; + 240:Src/main.c **** CPU_state = CPU_state_old;//Return to main current cycle + 241:Src/main.c **** break; + 242:Src/main.c **** case WORK_ENABLE://7 - Main work cycle + 243:Src/main.c **** task.current_param = task.min_param; + 244:Src/main.c **** Stop_TIM10(); + 245:Src/main.c **** if (TO7>TO7_before)//Main work cycle go with the timer 7 (1000 us or 1 kHz) + 246:Src/main.c **** { + 247:Src/main.c **** TO7_before = TO7; + 248:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 249:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 250:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 251:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 252:Src/main.c **** + 253:Src/main.c **** //Correct temperature in all pulses + 254:Src/main.c **** (void) MPhD_T(3); + 255:Src/main.c **** LD1_param.LD_CURR_TEMP = MPhD_T(3); + 256:Src/main.c **** (void) MPhD_T(4); + 257:Src/main.c **** LD2_param.LD_CURR_TEMP = MPhD_T(4); + 258:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 259:Src/main.c **** Set_LTEC(3, temp16);//Drive Laser TEC 1 + 260:Src/main.c **** temp16=PID_Controller_Temp(&LD2_curr_setup, &LD2_param, 2); + 261:Src/main.c **** Set_LTEC(4, temp16);//Drive Laser TEC 2 + 262:Src/main.c **** + 263:Src/main.c **** Long_Data[1] = LD1_param.POWER;//Translate Data from monitor photodiode of LD1 to Long_Data + 264:Src/main.c **** Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + 265:Src/main.c **** + 266:Src/main.c **** Set_LTEC(1,LD1_curr_setup.CURRENT);//Drive Laser diode 1 + 267:Src/main.c **** Set_LTEC(2,LD2_curr_setup.CURRENT);//Drive Laser diode 2 + 268:Src/main.c **** + 269:Src/main.c **** //Prepare DATA of internals ADCs + 270:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 271:Src/main.c **** temp16 = Get_ADC(0); + 272:Src/main.c **** temp16 = Get_ADC(1); + 273:Src/main.c **** Long_Data[7] = temp16; + 274:Src/main.c **** + 275:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 276:Src/main.c **** temp16 = Get_ADC(1); + 277:Src/main.c **** Long_Data[8] = temp16; + ARM GAS /tmp/ccdsDELB.s page 44 + + + 278:Src/main.c **** + 279:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 280:Src/main.c **** temp16 = Get_ADC(1); + 281:Src/main.c **** Long_Data[9] = temp16; + 282:Src/main.c **** + 283:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 284:Src/main.c **** temp16 = Get_ADC(1); + 285:Src/main.c **** Long_Data[10] = temp16; + 286:Src/main.c **** + 287:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 288:Src/main.c **** temp16 = Get_ADC(1); + 289:Src/main.c **** Long_Data[11] = temp16; + 290:Src/main.c **** temp16 = Get_ADC(2); + 291:Src/main.c **** + 292:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 293:Src/main.c **** temp16 = Get_ADC(3); + 294:Src/main.c **** temp16 = Get_ADC(4); + 295:Src/main.c **** Long_Data[12] = temp16; + 296:Src/main.c **** temp16 = Get_ADC(5); + 297:Src/main.c **** + 298:Src/main.c **** //Put the timer tick to Long_Data: + 299:Src/main.c **** TO6_stop = TO6; + 300:Src/main.c **** Long_Data[3] = (TO6_stop)&0xffff; + 301:Src/main.c **** Long_Data[4] = (TO6_stop>>16)&0xffff; + 302:Src/main.c **** + 303:Src/main.c **** //Put the average temperature of LD1 to Long_Data: + 304:Src/main.c **** Long_Data[5] = LD1_param.LD_CURR_TEMP; + 305:Src/main.c **** + 306:Src/main.c **** //Put the average temperature of LD2 to Long_Data: + 307:Src/main.c **** Long_Data[6] = LD2_param.LD_CURR_TEMP; + 308:Src/main.c **** + 309:Src/main.c **** if (Curr_setup.SD_EN==1) + 310:Src/main.c **** { + 311:Src/main.c **** CS_result = CalculateChecksum(&Long_Data[1], DL_16-2); + 312:Src/main.c **** Long_Data[DL_16-1] = CS_result; + 313:Src/main.c **** temp16 = SD_SAVE(&Long_Data[0]); + 314:Src/main.c **** State_Data[0]|=temp16&0xff; + 315:Src/main.c **** } + 316:Src/main.c **** CPU_state_old = WORK_ENABLE;//Save main current cycle + 317:Src/main.c **** } + 318:Src/main.c **** break; + 319:Src/main.c **** case DECODE_TASK: + 320:Src/main.c **** if (CheckChecksum(COMMAND)) + 321:Src/main.c **** { + 322:Src/main.c **** Decode_task(COMMAND, &LD1_curr_setup, &LD2_curr_setup, &Curr_setup); + 323:Src/main.c **** TO6_before = TO6; + 324:Src/main.c **** CPU_state = RUN_TASK; + 325:Src/main.c **** CPU_state_old = RUN_TASK;//Save main current cycle + 326:Src/main.c **** } + 327:Src/main.c **** else + 328:Src/main.c **** { + 329:Src/main.c **** State_Data[0] |= UART_DECODE_ERR; + 330:Src/main.c **** CPU_state = DEFAULT_ENABLE; + 331:Src/main.c **** CPU_state_old = HALT;//Save main current cycle + 332:Src/main.c **** } + 333:Src/main.c **** UART_transmission_request = MESS_01; + 334:Src/main.c **** break; + ARM GAS /tmp/ccdsDELB.s page 45 + + + 335:Src/main.c **** case RUN_TASK: + 336:Src/main.c **** switch (task.task_type) + 337:Src/main.c **** { + 338:Src/main.c **** case TT_CHANGE_CURR_1: + 339:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_2, task.curr); + 340:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_1); + 341:Src/main.c **** LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1); + 342:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_2); + 343:Src/main.c **** LD2_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_2); + 344:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 345:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_1, temp16);//Drive Laser TEC 1 + 346:Src/main.c **** temp16=PID_Controller_Temp(&LD2_curr_setup, &LD2_param, 2); + 347:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_2, temp16);//Drive Laser TEC 2 + 348:Src/main.c **** + 349:Src/main.c **** // Toggle pin for oscilloscope + 350:Src/main.c **** HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_SET); + 351:Src/main.c **** HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_RESET); + 352:Src/main.c **** + 353:Src/main.c **** st = HAL_TIM_Base_Start_IT(&htim10); + 354:Src/main.c **** if (st != HAL_OK) + 355:Src/main.c **** while(1); + 356:Src/main.c **** while (task.current_param < task.max_param) + 357:Src/main.c **** { + 358:Src/main.c **** if (TIM10_coflag) + 359:Src/main.c **** { + 360:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_1, task.current_param); + 361:Src/main.c **** task.current_param += task.delta_param; + 362:Src/main.c **** TO10 = 0; + 363:Src/main.c **** TIM10_coflag = 0; + 364:Src/main.c **** } + 365:Src/main.c **** } + 366:Src/main.c **** Stop_TIM10(); + 367:Src/main.c **** task.current_param = task.min_param; + 368:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_1, task.current_param); + 369:Src/main.c **** if (task.tau > 3) + 370:Src/main.c **** { + 371:Src/main.c **** TIM10_period = htim10.Init.Period; + 372:Src/main.c **** htim10.Init.Period = 9999; + 373:Src/main.c **** TO10_counter = (task.tau - 1) * 100; + 374:Src/main.c **** } + 375:Src/main.c **** HAL_TIM_Base_Start_IT(&htim10); + 376:Src/main.c **** break; + 377:Src/main.c **** case TT_CHANGE_CURR_2: + 378:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_1, task.curr); + 379:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_1); + 380:Src/main.c **** LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1); + 381:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_2); + 382:Src/main.c **** LD2_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_2); + 383:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 384:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_1, temp16);//Drive Laser TEC 1 + 385:Src/main.c **** temp16=PID_Controller_Temp(&LD2_curr_setup, &LD2_param, 2); + 386:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_2, temp16);//Drive Laser TEC 2 + 387:Src/main.c **** + 388:Src/main.c **** // Toggle pin for oscilloscope + 389:Src/main.c **** HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_SET); + 390:Src/main.c **** HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_RESET); + 391:Src/main.c **** + ARM GAS /tmp/ccdsDELB.s page 46 + + + 392:Src/main.c **** st = HAL_TIM_Base_Start_IT(&htim10); + 393:Src/main.c **** if (st != HAL_OK) + 394:Src/main.c **** while(1); + 395:Src/main.c **** while (task.current_param < task.max_param) + 396:Src/main.c **** { + 397:Src/main.c **** if (TIM10_coflag) + 398:Src/main.c **** { + 399:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_2, task.current_param); + 400:Src/main.c **** task.current_param += task.delta_param; + 401:Src/main.c **** TO10 = 0; + 402:Src/main.c **** TIM10_coflag = 0; + 403:Src/main.c **** } + 404:Src/main.c **** } + 405:Src/main.c **** Stop_TIM10(); + 406:Src/main.c **** task.current_param = task.min_param; + 407:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_2, task.current_param); + 408:Src/main.c **** if (task.tau > 3) + 409:Src/main.c **** { + 410:Src/main.c **** TIM10_period = htim10.Init.Period; + 411:Src/main.c **** htim10.Init.Period = 9999; + 412:Src/main.c **** TO10_counter = (task.tau - 1) * 100; + 413:Src/main.c **** } + 414:Src/main.c **** HAL_TIM_Base_Start_IT(&htim10); + 415:Src/main.c **** break; + 416:Src/main.c **** case TT_CHANGE_TEMP_1: + 417:Src/main.c **** // isn't implemented + 418:Src/main.c **** break; + 419:Src/main.c **** case TT_CHANGE_TEMP_2: + 420:Src/main.c **** // isn't implemented + 421:Src/main.c **** break; + 422:Src/main.c **** } + 423:Src/main.c **** + 424:Src/main.c **** if (TO7>TO7_before) + 425:Src/main.c **** { + 426:Src/main.c **** TO7_before = TO7; + 427:Src/main.c **** + 428:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 429:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 430:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 431:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 432:Src/main.c **** + 433:Src/main.c **** Long_Data[1] = LD1_param.POWER;//Translate Data from monitor photodiode of LD1 to Long_Data + 434:Src/main.c **** Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + 435:Src/main.c **** + 436:Src/main.c **** //Prepare DATA of internals ADCs + 437:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 438:Src/main.c **** temp16 = Get_ADC(0); + 439:Src/main.c **** temp16 = Get_ADC(1); + 440:Src/main.c **** Long_Data[7] = temp16; + 441:Src/main.c **** + 442:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 443:Src/main.c **** temp16 = Get_ADC(1); + 444:Src/main.c **** Long_Data[8] = temp16; + 445:Src/main.c **** + 446:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 447:Src/main.c **** temp16 = Get_ADC(1); + 448:Src/main.c **** Long_Data[9] = temp16; + ARM GAS /tmp/ccdsDELB.s page 47 + + + 449:Src/main.c **** + 450:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 451:Src/main.c **** temp16 = Get_ADC(1); + 452:Src/main.c **** Long_Data[10] = temp16; + 453:Src/main.c **** + 454:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 455:Src/main.c **** temp16 = Get_ADC(1); + 456:Src/main.c **** Long_Data[11] = temp16; + 457:Src/main.c **** temp16 = Get_ADC(2); + 458:Src/main.c **** + 459:Src/main.c **** //Put the temperature of LD2 to Long_Data: + 460:Src/main.c **** temp16 = Get_ADC(3); + 461:Src/main.c **** temp16 = Get_ADC(4); + 462:Src/main.c **** Long_Data[12] = temp16; + 463:Src/main.c **** temp16 = Get_ADC(5); + 464:Src/main.c **** + 465:Src/main.c **** //Put the timer tick to Long_Data: + 466:Src/main.c **** TO6_stop = TO6; + 467:Src/main.c **** Long_Data[3] = (TO6_stop)&0xffff; + 468:Src/main.c **** Long_Data[4] = (TO6_stop>>16)&0xffff; + 469:Src/main.c **** + 470:Src/main.c **** //Put the average temperature of LD1 to Long_Data: + 471:Src/main.c **** Long_Data[5] = LD1_param.LD_CURR_TEMP; + 472:Src/main.c **** + 473:Src/main.c **** //Put the average temperature of LD2 to Long_Data: + 474:Src/main.c **** Long_Data[6] = LD2_param.LD_CURR_TEMP; + 475:Src/main.c **** } + 476:Src/main.c **** while (!TIM10_coflag); + 477:Src/main.c **** + 478:Src/main.c **** Stop_TIM10(); + 479:Src/main.c **** + 480:Src/main.c **** if (task.tau > 3) + 481:Src/main.c **** { + 482:Src/main.c **** htim10.Init.Period = TIM10_period; + 483:Src/main.c **** TO10_counter = task.dt / 10 - 1; + 484:Src/main.c **** } + 485:Src/main.c **** + 486:Src/main.c **** CPU_state_old = RUN_TASK; + 487:Src/main.c **** break; + 488:Src/main.c **** } + 489:Src/main.c **** + 490:Src/main.c **** switch (UART_transmission_request) + 491:Src/main.c **** { + 492:Src/main.c **** case MESS_01://Default state + 493:Src/main.c **** USART_TX(State_Data,2); + 494:Src/main.c **** //HAL_UART_Transmit(&huart1, State_Data, 2, 10); + 495:Src/main.c **** State_Data[0]=0; + 496:Src/main.c **** State_Data[1]=0;//All OK! + 497:Src/main.c **** UART_transmission_request = NO_MESS; + 498:Src/main.c **** break; + 499:Src/main.c **** case MESS_02://Transmith packet + 500:Src/main.c **** + 501:Src/main.c **** //Find CS and put to Long_Data: + 502:Src/main.c **** CS_result = CalculateChecksum(&Long_Data[1], DL_16-2); + 503:Src/main.c **** Long_Data[DL_16-1] = CS_result; + 504:Src/main.c **** + 505:Src/main.c **** for (uint16_t i = 0; i < DL_16; i++) + ARM GAS /tmp/ccdsDELB.s page 48 + + + 506:Src/main.c **** { + 507:Src/main.c **** UART_DATA[i*2] = (Long_Data[i])&0xff; + 508:Src/main.c **** UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + 509:Src/main.c **** } + 510:Src/main.c **** //HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0); + 511:Src/main.c **** //HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn); + 512:Src/main.c **** //HAL_UART_Transmit_DMA(&huart1, UART_DATA, DL_8); + 513:Src/main.c **** //huart1.gState = HAL_UART_STATE_READY; + 514:Src/main.c **** //hdma_usart1_tx.State=HAL_DMA_STATE_BUSY; + 515:Src/main.c **** USART_TX_DMA (DL_8);//Send data by USART using DMA + 516:Src/main.c **** UART_transmission_request = NO_MESS; + 517:Src/main.c **** break; + 518:Src/main.c **** case MESS_03://Transmith saved packet + 519:Src/main.c **** for (uint16_t i = 0; i < DL_16; i++) + 520:Src/main.c **** { + 521:Src/main.c **** UART_DATA[i*2] = (Long_Data[i])&0xff; + 522:Src/main.c **** UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + 523:Src/main.c **** } + 524:Src/main.c **** //HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn); + 525:Src/main.c **** //HAL_UART_Transmit_DMA(&huart1, UART_DATA, DL_8); + 526:Src/main.c **** //huart1.gState = HAL_UART_STATE_READY; + 527:Src/main.c **** //hdma_usart1_tx.State=HAL_DMA_STATE_BUSY; + 528:Src/main.c **** USART_TX_DMA (DL_8);//Send data by USART using DMA + 529:Src/main.c **** UART_transmission_request = NO_MESS; + 530:Src/main.c **** break; + 531:Src/main.c **** } + 532:Src/main.c **** if ((flg_tmt==1)&&((TO6-TO6_uart)>100))//Uart timeout handle. if timeout beetween zero byte of + 533:Src/main.c **** { + 534:Src/main.c **** UART_rec_incr = 0;//Reset uart command counter + 535:Src/main.c **** State_Data[0] |= UART_ERR;//timeout error! + 536:Src/main.c **** UART_transmission_request = MESS_01;//Send status + 537:Src/main.c **** flg_tmt = 0;//Reset timeout flag + 538:Src/main.c **** } + 539:Src/main.c **** /* USER CODE END WHILE */ + 540:Src/main.c **** + 541:Src/main.c **** /* USER CODE BEGIN 3 */ + 542:Src/main.c **** } + 543:Src/main.c **** /* USER CODE END 3 */ + 544:Src/main.c **** } + 545:Src/main.c **** + 546:Src/main.c **** /** + 547:Src/main.c **** * @brief System Clock Configuration + 548:Src/main.c **** * @retval None + 549:Src/main.c **** */ + 550:Src/main.c **** void SystemClock_Config(void) + 551:Src/main.c **** { + 552:Src/main.c **** RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 553:Src/main.c **** RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 554:Src/main.c **** + 555:Src/main.c **** /** Configure the main internal regulator output voltage + 556:Src/main.c **** */ + 557:Src/main.c **** __HAL_RCC_PWR_CLK_ENABLE(); + 558:Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 559:Src/main.c **** + 560:Src/main.c **** /** Initializes the RCC Oscillators according to the specified parameters + 561:Src/main.c **** * in the RCC_OscInitTypeDef structure. + 562:Src/main.c **** */ + ARM GAS /tmp/ccdsDELB.s page 49 + + + 563:Src/main.c **** RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + 564:Src/main.c **** RCC_OscInitStruct.HSEState = RCC_HSE_ON; + 565:Src/main.c **** RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + 566:Src/main.c **** RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + 567:Src/main.c **** RCC_OscInitStruct.PLL.PLLM = 25; + 568:Src/main.c **** RCC_OscInitStruct.PLL.PLLN = 368; + 569:Src/main.c **** RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + 570:Src/main.c **** RCC_OscInitStruct.PLL.PLLQ = 8; + 571:Src/main.c **** RCC_OscInitStruct.PLL.PLLR = 2; + 572:Src/main.c **** if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 573:Src/main.c **** { + 574:Src/main.c **** Error_Handler(); + 575:Src/main.c **** } + 576:Src/main.c **** + 577:Src/main.c **** /** Activate the Over-Drive mode + 578:Src/main.c **** */ + 579:Src/main.c **** if (HAL_PWREx_EnableOverDrive() != HAL_OK) + 580:Src/main.c **** { + 581:Src/main.c **** Error_Handler(); + 582:Src/main.c **** } + 583:Src/main.c **** + 584:Src/main.c **** /** Initializes the CPU, AHB and APB buses clocks + 585:Src/main.c **** */ + 586:Src/main.c **** RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + 587:Src/main.c **** |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + 588:Src/main.c **** RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + 589:Src/main.c **** RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 590:Src/main.c **** RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + 591:Src/main.c **** RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + 592:Src/main.c **** + 593:Src/main.c **** if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_6) != HAL_OK) + 594:Src/main.c **** { + 595:Src/main.c **** Error_Handler(); + 596:Src/main.c **** } + 597:Src/main.c **** } + 598:Src/main.c **** + 599:Src/main.c **** /** + 600:Src/main.c **** * @brief ADC1 Initialization Function + 601:Src/main.c **** * @param None + 602:Src/main.c **** * @retval None + 603:Src/main.c **** */ + 604:Src/main.c **** static void MX_ADC1_Init(void) + 605:Src/main.c **** { + 606:Src/main.c **** + 607:Src/main.c **** /* USER CODE BEGIN ADC1_Init 0 */ + 608:Src/main.c **** + 609:Src/main.c **** /* USER CODE END ADC1_Init 0 */ + 610:Src/main.c **** + 611:Src/main.c **** ADC_ChannelConfTypeDef sConfig = {0}; + 612:Src/main.c **** + 613:Src/main.c **** /* USER CODE BEGIN ADC1_Init 1 */ + 614:Src/main.c **** + 615:Src/main.c **** /* USER CODE END ADC1_Init 1 */ + 616:Src/main.c **** + 617:Src/main.c **** /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of con + 618:Src/main.c **** */ + 619:Src/main.c **** hadc1.Instance = ADC1; + ARM GAS /tmp/ccdsDELB.s page 50 + + + 620:Src/main.c **** hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV8; + 621:Src/main.c **** hadc1.Init.Resolution = ADC_RESOLUTION_12B; + 622:Src/main.c **** hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; + 623:Src/main.c **** hadc1.Init.ContinuousConvMode = DISABLE; + 624:Src/main.c **** hadc1.Init.DiscontinuousConvMode = DISABLE; + 625:Src/main.c **** hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + 626:Src/main.c **** hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; + 627:Src/main.c **** hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; + 628:Src/main.c **** hadc1.Init.NbrOfConversion = 5; + 629:Src/main.c **** hadc1.Init.DMAContinuousRequests = DISABLE; + 630:Src/main.c **** hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + 631:Src/main.c **** if (HAL_ADC_Init(&hadc1) != HAL_OK) + 632:Src/main.c **** { + 633:Src/main.c **** Error_Handler(); + 634:Src/main.c **** } + 635:Src/main.c **** + 636:Src/main.c **** /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and it + 637:Src/main.c **** */ + 638:Src/main.c **** sConfig.Channel = ADC_CHANNEL_9; + 639:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_1; + 640:Src/main.c **** sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES; + 641:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 642:Src/main.c **** { + 643:Src/main.c **** Error_Handler(); + 644:Src/main.c **** } + 645:Src/main.c **** + 646:Src/main.c **** /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and it + 647:Src/main.c **** */ + 648:Src/main.c **** sConfig.Channel = ADC_CHANNEL_8; + 649:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_2; + 650:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 651:Src/main.c **** { + 652:Src/main.c **** Error_Handler(); + 653:Src/main.c **** } + 654:Src/main.c **** + 655:Src/main.c **** /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and it + 656:Src/main.c **** */ + 657:Src/main.c **** sConfig.Channel = ADC_CHANNEL_2; + 658:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_3; + 659:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 660:Src/main.c **** { + 661:Src/main.c **** Error_Handler(); + 662:Src/main.c **** } + 663:Src/main.c **** + 664:Src/main.c **** /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and it + 665:Src/main.c **** */ + 666:Src/main.c **** sConfig.Channel = ADC_CHANNEL_10; + 667:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_4; + 668:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 669:Src/main.c **** { + 670:Src/main.c **** Error_Handler(); + 671:Src/main.c **** } + 672:Src/main.c **** + 673:Src/main.c **** /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and it + 674:Src/main.c **** */ + 675:Src/main.c **** sConfig.Channel = ADC_CHANNEL_11; + 676:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_5; + ARM GAS /tmp/ccdsDELB.s page 51 + + + 677:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 678:Src/main.c **** { + 679:Src/main.c **** Error_Handler(); + 680:Src/main.c **** } + 681:Src/main.c **** /* USER CODE BEGIN ADC1_Init 2 */ + 682:Src/main.c **** + 683:Src/main.c **** /* USER CODE END ADC1_Init 2 */ + 684:Src/main.c **** + 685:Src/main.c **** } + 686:Src/main.c **** + 687:Src/main.c **** /** + 688:Src/main.c **** * @brief ADC3 Initialization Function + 689:Src/main.c **** * @param None + 690:Src/main.c **** * @retval None + 691:Src/main.c **** */ + 692:Src/main.c **** static void MX_ADC3_Init(void) + 693:Src/main.c **** { + 694:Src/main.c **** + 695:Src/main.c **** /* USER CODE BEGIN ADC3_Init 0 */ + 696:Src/main.c **** + 697:Src/main.c **** /* USER CODE END ADC3_Init 0 */ + 698:Src/main.c **** + 699:Src/main.c **** ADC_ChannelConfTypeDef sConfig = {0}; + 700:Src/main.c **** + 701:Src/main.c **** /* USER CODE BEGIN ADC3_Init 1 */ + 702:Src/main.c **** + 703:Src/main.c **** /* USER CODE END ADC3_Init 1 */ + 704:Src/main.c **** + 705:Src/main.c **** /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of con + 706:Src/main.c **** */ + 707:Src/main.c **** hadc3.Instance = ADC3; + 708:Src/main.c **** hadc3.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV8; + 709:Src/main.c **** hadc3.Init.Resolution = ADC_RESOLUTION_12B; + 710:Src/main.c **** hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE; + 711:Src/main.c **** hadc3.Init.ContinuousConvMode = DISABLE; + 712:Src/main.c **** hadc3.Init.DiscontinuousConvMode = DISABLE; + 713:Src/main.c **** hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + 714:Src/main.c **** hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START; + 715:Src/main.c **** hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT; + 716:Src/main.c **** hadc3.Init.NbrOfConversion = 1; + 717:Src/main.c **** hadc3.Init.DMAContinuousRequests = DISABLE; + 718:Src/main.c **** hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + 719:Src/main.c **** if (HAL_ADC_Init(&hadc3) != HAL_OK) + 720:Src/main.c **** { + 721:Src/main.c **** Error_Handler(); + 722:Src/main.c **** } + 723:Src/main.c **** + 724:Src/main.c **** /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and it + 725:Src/main.c **** */ + 726:Src/main.c **** sConfig.Channel = ADC_CHANNEL_15; + 727:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_1; + 728:Src/main.c **** sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES; + 729:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK) + 730:Src/main.c **** { + 731:Src/main.c **** Error_Handler(); + 732:Src/main.c **** } + 733:Src/main.c **** /* USER CODE BEGIN ADC3_Init 2 */ + ARM GAS /tmp/ccdsDELB.s page 52 + + + 734:Src/main.c **** + 735:Src/main.c **** /* USER CODE END ADC3_Init 2 */ + 736:Src/main.c **** + 737:Src/main.c **** } + 738:Src/main.c **** + 739:Src/main.c **** /** + 740:Src/main.c **** * @brief SDMMC1 Initialization Function + 741:Src/main.c **** * @param None + 742:Src/main.c **** * @retval None + 743:Src/main.c **** */ + 744:Src/main.c **** static void MX_SDMMC1_SD_Init(void) + 745:Src/main.c **** { + 93 .loc 2 745 1 is_stmt 1 view -0 + 94 .cfi_startproc + 95 @ args = 0, pretend = 0, frame = 0 + 96 @ frame_needed = 0, uses_anonymous_args = 0 + 97 @ link register save eliminated. + 746:Src/main.c **** + 747:Src/main.c **** /* USER CODE BEGIN SDMMC1_Init 0 */ + 748:Src/main.c **** + 749:Src/main.c **** /* USER CODE END SDMMC1_Init 0 */ + 750:Src/main.c **** + 751:Src/main.c **** /* USER CODE BEGIN SDMMC1_Init 1 */ + 752:Src/main.c **** + 753:Src/main.c **** /* USER CODE END SDMMC1_Init 1 */ + 754:Src/main.c **** hsd1.Instance = SDMMC1; + 98 .loc 2 754 3 view .LVU21 + 99 .loc 2 754 17 is_stmt 0 view .LVU22 + 100 0000 064B ldr r3, .L5 + 101 0002 074A ldr r2, .L5+4 + 102 0004 1A60 str r2, [r3] + 755:Src/main.c **** hsd1.Init.ClockEdge = SDMMC_CLOCK_EDGE_RISING; + 103 .loc 2 755 3 is_stmt 1 view .LVU23 + 104 .loc 2 755 23 is_stmt 0 view .LVU24 + 105 0006 0022 movs r2, #0 + 106 0008 5A60 str r2, [r3, #4] + 756:Src/main.c **** hsd1.Init.ClockBypass = SDMMC_CLOCK_BYPASS_DISABLE; + 107 .loc 2 756 3 is_stmt 1 view .LVU25 + 108 .loc 2 756 25 is_stmt 0 view .LVU26 + 109 000a 9A60 str r2, [r3, #8] + 757:Src/main.c **** hsd1.Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE; + 110 .loc 2 757 3 is_stmt 1 view .LVU27 + 111 .loc 2 757 28 is_stmt 0 view .LVU28 + 112 000c DA60 str r2, [r3, #12] + 758:Src/main.c **** hsd1.Init.BusWide = SDMMC_BUS_WIDE_4B; + 113 .loc 2 758 3 is_stmt 1 view .LVU29 + 114 .loc 2 758 21 is_stmt 0 view .LVU30 + 115 000e 4FF40061 mov r1, #2048 + 116 0012 1961 str r1, [r3, #16] + 759:Src/main.c **** hsd1.Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE; + 117 .loc 2 759 3 is_stmt 1 view .LVU31 + 118 .loc 2 759 33 is_stmt 0 view .LVU32 + 119 0014 5A61 str r2, [r3, #20] + 760:Src/main.c **** hsd1.Init.ClockDiv = 20; + 120 .loc 2 760 3 is_stmt 1 view .LVU33 + 121 .loc 2 760 22 is_stmt 0 view .LVU34 + 122 0016 1422 movs r2, #20 + ARM GAS /tmp/ccdsDELB.s page 53 + + + 123 0018 9A61 str r2, [r3, #24] + 761:Src/main.c **** /* USER CODE BEGIN SDMMC1_Init 2 */ + 762:Src/main.c **** + 763:Src/main.c **** /* USER CODE END SDMMC1_Init 2 */ + 764:Src/main.c **** + 765:Src/main.c **** } + 124 .loc 2 765 1 view .LVU35 + 125 001a 7047 bx lr + 126 .L6: + 127 .align 2 + 128 .L5: + 129 001c 00000000 .word .LANCHOR0 + 130 0020 002C0140 .word 1073818624 + 131 .cfi_endproc + 132 .LFE1190: + 134 .section .text.MX_DMA_Init,"ax",%progbits + 135 .align 1 + 136 .syntax unified + 137 .thumb + 138 .thumb_func + 139 .fpu fpv5-d16 + 141 MX_DMA_Init: + 142 .LFB1201: + 766:Src/main.c **** + 767:Src/main.c **** /** + 768:Src/main.c **** * @brief SPI2 Initialization Function + 769:Src/main.c **** * @param None + 770:Src/main.c **** * @retval None + 771:Src/main.c **** */ + 772:Src/main.c **** static void MX_SPI2_Init(void) + 773:Src/main.c **** { + 774:Src/main.c **** + 775:Src/main.c **** /* USER CODE BEGIN SPI2_Init 0 */ + 776:Src/main.c **** + 777:Src/main.c **** /* USER CODE END SPI2_Init 0 */ + 778:Src/main.c **** + 779:Src/main.c **** LL_SPI_InitTypeDef SPI_InitStruct = {0}; + 780:Src/main.c **** + 781:Src/main.c **** LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + 782:Src/main.c **** + 783:Src/main.c **** /* Peripheral clock enable */ + 784:Src/main.c **** LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_SPI2); + 785:Src/main.c **** + 786:Src/main.c **** LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOB); + 787:Src/main.c **** /**SPI2 GPIO Configuration + 788:Src/main.c **** PB13 ------> SPI2_SCK + 789:Src/main.c **** PB15 ------> SPI2_MOSI + 790:Src/main.c **** */ + 791:Src/main.c **** GPIO_InitStruct.Pin = LL_GPIO_PIN_13; + 792:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 793:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 794:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 795:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 796:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 797:Src/main.c **** LL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 798:Src/main.c **** + 799:Src/main.c **** GPIO_InitStruct.Pin = LL_GPIO_PIN_15; + ARM GAS /tmp/ccdsDELB.s page 54 + + + 800:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 801:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 802:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 803:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 804:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 805:Src/main.c **** LL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 806:Src/main.c **** + 807:Src/main.c **** /* USER CODE BEGIN SPI2_Init 1 */ + 808:Src/main.c **** + 809:Src/main.c **** /* USER CODE END SPI2_Init 1 */ + 810:Src/main.c **** /* SPI2 parameter configuration*/ + 811:Src/main.c **** SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX; + 812:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 813:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 814:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 815:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE; + 816:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 817:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV8; + 818:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 819:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 820:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 821:Src/main.c **** LL_SPI_Init(SPI2, &SPI_InitStruct); + 822:Src/main.c **** LL_SPI_SetStandard(SPI2, LL_SPI_PROTOCOL_MOTOROLA); + 823:Src/main.c **** LL_SPI_DisableNSSPulseMgt(SPI2); + 824:Src/main.c **** /* USER CODE BEGIN SPI2_Init 2 */ + 825:Src/main.c **** + 826:Src/main.c **** /* USER CODE END SPI2_Init 2 */ + 827:Src/main.c **** + 828:Src/main.c **** } + 829:Src/main.c **** + 830:Src/main.c **** /** + 831:Src/main.c **** * @brief SPI4 Initialization Function + 832:Src/main.c **** * @param None + 833:Src/main.c **** * @retval None + 834:Src/main.c **** */ + 835:Src/main.c **** static void MX_SPI4_Init(void) + 836:Src/main.c **** { + 837:Src/main.c **** + 838:Src/main.c **** /* USER CODE BEGIN SPI4_Init 0 */ + 839:Src/main.c **** + 840:Src/main.c **** /* USER CODE END SPI4_Init 0 */ + 841:Src/main.c **** + 842:Src/main.c **** LL_SPI_InitTypeDef SPI_InitStruct = {0}; + 843:Src/main.c **** + 844:Src/main.c **** LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + 845:Src/main.c **** + 846:Src/main.c **** /* Peripheral clock enable */ + 847:Src/main.c **** LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI4); + 848:Src/main.c **** + 849:Src/main.c **** LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOE); + 850:Src/main.c **** /**SPI4 GPIO Configuration + 851:Src/main.c **** PE12 ------> SPI4_SCK + 852:Src/main.c **** PE13 ------> SPI4_MISO + 853:Src/main.c **** */ + 854:Src/main.c **** GPIO_InitStruct.Pin = LL_GPIO_PIN_12; + 855:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 856:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + ARM GAS /tmp/ccdsDELB.s page 55 + + + 857:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 858:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 859:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 860:Src/main.c **** LL_GPIO_Init(GPIOE, &GPIO_InitStruct); + 861:Src/main.c **** + 862:Src/main.c **** GPIO_InitStruct.Pin = LL_GPIO_PIN_13; + 863:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 864:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 865:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 866:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 867:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 868:Src/main.c **** LL_GPIO_Init(GPIOE, &GPIO_InitStruct); + 869:Src/main.c **** + 870:Src/main.c **** /* USER CODE BEGIN SPI4_Init 1 */ + 871:Src/main.c **** + 872:Src/main.c **** /* USER CODE END SPI4_Init 1 */ + 873:Src/main.c **** /* SPI4 parameter configuration*/ + 874:Src/main.c **** SPI_InitStruct.TransferDirection = LL_SPI_SIMPLEX_RX; + 875:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 876:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 877:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 878:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE; + 879:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 880:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + 881:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 882:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 883:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 884:Src/main.c **** LL_SPI_Init(SPI4, &SPI_InitStruct); + 885:Src/main.c **** LL_SPI_SetStandard(SPI4, LL_SPI_PROTOCOL_MOTOROLA); + 886:Src/main.c **** LL_SPI_DisableNSSPulseMgt(SPI4); + 887:Src/main.c **** /* USER CODE BEGIN SPI4_Init 2 */ + 888:Src/main.c **** + 889:Src/main.c **** /* USER CODE END SPI4_Init 2 */ + 890:Src/main.c **** + 891:Src/main.c **** } + 892:Src/main.c **** + 893:Src/main.c **** /** + 894:Src/main.c **** * @brief SPI5 Initialization Function + 895:Src/main.c **** * @param None + 896:Src/main.c **** * @retval None + 897:Src/main.c **** */ + 898:Src/main.c **** static void MX_SPI5_Init(void) + 899:Src/main.c **** { + 900:Src/main.c **** + 901:Src/main.c **** /* USER CODE BEGIN SPI5_Init 0 */ + 902:Src/main.c **** + 903:Src/main.c **** /* USER CODE END SPI5_Init 0 */ + 904:Src/main.c **** + 905:Src/main.c **** LL_SPI_InitTypeDef SPI_InitStruct = {0}; + 906:Src/main.c **** + 907:Src/main.c **** LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + 908:Src/main.c **** + 909:Src/main.c **** /* Peripheral clock enable */ + 910:Src/main.c **** LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI5); + 911:Src/main.c **** + 912:Src/main.c **** LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOF); + 913:Src/main.c **** /**SPI5 GPIO Configuration + ARM GAS /tmp/ccdsDELB.s page 56 + + + 914:Src/main.c **** PF7 ------> SPI5_SCK + 915:Src/main.c **** PF8 ------> SPI5_MISO + 916:Src/main.c **** */ + 917:Src/main.c **** GPIO_InitStruct.Pin = LL_GPIO_PIN_7; + 918:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 919:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 920:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 921:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 922:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 923:Src/main.c **** LL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 924:Src/main.c **** + 925:Src/main.c **** GPIO_InitStruct.Pin = LL_GPIO_PIN_8; + 926:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 927:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 928:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 929:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 930:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 931:Src/main.c **** LL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 932:Src/main.c **** + 933:Src/main.c **** /* USER CODE BEGIN SPI5_Init 1 */ + 934:Src/main.c **** + 935:Src/main.c **** /* USER CODE END SPI5_Init 1 */ + 936:Src/main.c **** /* SPI5 parameter configuration*/ + 937:Src/main.c **** SPI_InitStruct.TransferDirection = LL_SPI_SIMPLEX_RX; + 938:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 939:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 940:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 941:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE; + 942:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 943:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + 944:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 945:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 946:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 947:Src/main.c **** LL_SPI_Init(SPI5, &SPI_InitStruct); + 948:Src/main.c **** LL_SPI_SetStandard(SPI5, LL_SPI_PROTOCOL_MOTOROLA); + 949:Src/main.c **** LL_SPI_DisableNSSPulseMgt(SPI5); + 950:Src/main.c **** /* USER CODE BEGIN SPI5_Init 2 */ + 951:Src/main.c **** + 952:Src/main.c **** /* USER CODE END SPI5_Init 2 */ + 953:Src/main.c **** + 954:Src/main.c **** } + 955:Src/main.c **** + 956:Src/main.c **** /** + 957:Src/main.c **** * @brief SPI6 Initialization Function + 958:Src/main.c **** * @param None + 959:Src/main.c **** * @retval None + 960:Src/main.c **** */ + 961:Src/main.c **** static void MX_SPI6_Init(void) + 962:Src/main.c **** { + 963:Src/main.c **** + 964:Src/main.c **** /* USER CODE BEGIN SPI6_Init 0 */ + 965:Src/main.c **** + 966:Src/main.c **** /* USER CODE END SPI6_Init 0 */ + 967:Src/main.c **** + 968:Src/main.c **** LL_SPI_InitTypeDef SPI_InitStruct = {0}; + 969:Src/main.c **** + 970:Src/main.c **** LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + ARM GAS /tmp/ccdsDELB.s page 57 + + + 971:Src/main.c **** + 972:Src/main.c **** /* Peripheral clock enable */ + 973:Src/main.c **** LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI6); + 974:Src/main.c **** + 975:Src/main.c **** LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA); + 976:Src/main.c **** /**SPI6 GPIO Configuration + 977:Src/main.c **** PA5 ------> SPI6_SCK + 978:Src/main.c **** PA7 ------> SPI6_MOSI + 979:Src/main.c **** */ + 980:Src/main.c **** GPIO_InitStruct.Pin = LL_GPIO_PIN_5; + 981:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 982:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 983:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 984:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 985:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_8; + 986:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 987:Src/main.c **** + 988:Src/main.c **** GPIO_InitStruct.Pin = LL_GPIO_PIN_7; + 989:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 990:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 991:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 992:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 993:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_8; + 994:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 995:Src/main.c **** + 996:Src/main.c **** /* USER CODE BEGIN SPI6_Init 1 */ + 997:Src/main.c **** + 998:Src/main.c **** /* USER CODE END SPI6_Init 1 */ + 999:Src/main.c **** /* SPI6 parameter configuration*/ +1000:Src/main.c **** SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX; +1001:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; +1002:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; +1003:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; +1004:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE; +1005:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; +1006:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; +1007:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; +1008:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; +1009:Src/main.c **** SPI_InitStruct.CRCPoly = 7; +1010:Src/main.c **** LL_SPI_Init(SPI6, &SPI_InitStruct); +1011:Src/main.c **** LL_SPI_SetStandard(SPI6, LL_SPI_PROTOCOL_MOTOROLA); +1012:Src/main.c **** LL_SPI_DisableNSSPulseMgt(SPI6); +1013:Src/main.c **** /* USER CODE BEGIN SPI6_Init 2 */ +1014:Src/main.c **** +1015:Src/main.c **** /* USER CODE END SPI6_Init 2 */ +1016:Src/main.c **** +1017:Src/main.c **** } +1018:Src/main.c **** +1019:Src/main.c **** /** +1020:Src/main.c **** * @brief TIM2 Initialization Function +1021:Src/main.c **** * @param None +1022:Src/main.c **** * @retval None +1023:Src/main.c **** */ +1024:Src/main.c **** static void MX_TIM2_Init(void) +1025:Src/main.c **** { +1026:Src/main.c **** +1027:Src/main.c **** /* USER CODE BEGIN TIM2_Init 0 */ + ARM GAS /tmp/ccdsDELB.s page 58 + + +1028:Src/main.c **** +1029:Src/main.c **** /* USER CODE END TIM2_Init 0 */ +1030:Src/main.c **** +1031:Src/main.c **** LL_TIM_InitTypeDef TIM_InitStruct = {0}; +1032:Src/main.c **** +1033:Src/main.c **** /* Peripheral clock enable */ +1034:Src/main.c **** LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM2); +1035:Src/main.c **** +1036:Src/main.c **** /* TIM2 interrupt Init */ +1037:Src/main.c **** NVIC_SetPriority(TIM2_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); +1038:Src/main.c **** NVIC_EnableIRQ(TIM2_IRQn); +1039:Src/main.c **** +1040:Src/main.c **** /* USER CODE BEGIN TIM2_Init 1 */ +1041:Src/main.c **** +1042:Src/main.c **** /* USER CODE END TIM2_Init 1 */ +1043:Src/main.c **** TIM_InitStruct.Prescaler = 1000; +1044:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; +1045:Src/main.c **** TIM_InitStruct.Autoreload = 840000; +1046:Src/main.c **** TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; +1047:Src/main.c **** LL_TIM_Init(TIM2, &TIM_InitStruct); +1048:Src/main.c **** LL_TIM_DisableARRPreload(TIM2); +1049:Src/main.c **** LL_TIM_SetClockSource(TIM2, LL_TIM_CLOCKSOURCE_INTERNAL); +1050:Src/main.c **** LL_TIM_SetTriggerOutput(TIM2, LL_TIM_TRGO_RESET); +1051:Src/main.c **** LL_TIM_DisableMasterSlaveMode(TIM2); +1052:Src/main.c **** /* USER CODE BEGIN TIM2_Init 2 */ +1053:Src/main.c **** +1054:Src/main.c **** /* USER CODE END TIM2_Init 2 */ +1055:Src/main.c **** +1056:Src/main.c **** } +1057:Src/main.c **** +1058:Src/main.c **** /** +1059:Src/main.c **** * @brief TIM5 Initialization Function +1060:Src/main.c **** * @param None +1061:Src/main.c **** * @retval None +1062:Src/main.c **** */ +1063:Src/main.c **** static void MX_TIM5_Init(void) +1064:Src/main.c **** { +1065:Src/main.c **** +1066:Src/main.c **** /* USER CODE BEGIN TIM5_Init 0 */ +1067:Src/main.c **** +1068:Src/main.c **** /* USER CODE END TIM5_Init 0 */ +1069:Src/main.c **** +1070:Src/main.c **** LL_TIM_InitTypeDef TIM_InitStruct = {0}; +1071:Src/main.c **** +1072:Src/main.c **** /* Peripheral clock enable */ +1073:Src/main.c **** LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM5); +1074:Src/main.c **** +1075:Src/main.c **** /* TIM5 interrupt Init */ +1076:Src/main.c **** NVIC_SetPriority(TIM5_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); +1077:Src/main.c **** NVIC_EnableIRQ(TIM5_IRQn); +1078:Src/main.c **** +1079:Src/main.c **** /* USER CODE BEGIN TIM5_Init 1 */ +1080:Src/main.c **** +1081:Src/main.c **** /* USER CODE END TIM5_Init 1 */ +1082:Src/main.c **** TIM_InitStruct.Prescaler = 10000; +1083:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; +1084:Src/main.c **** TIM_InitStruct.Autoreload = 560; + ARM GAS /tmp/ccdsDELB.s page 59 + + +1085:Src/main.c **** TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; +1086:Src/main.c **** LL_TIM_Init(TIM5, &TIM_InitStruct); +1087:Src/main.c **** LL_TIM_DisableARRPreload(TIM5); +1088:Src/main.c **** LL_TIM_SetClockSource(TIM5, LL_TIM_CLOCKSOURCE_INTERNAL); +1089:Src/main.c **** LL_TIM_SetTriggerOutput(TIM5, LL_TIM_TRGO_RESET); +1090:Src/main.c **** LL_TIM_DisableMasterSlaveMode(TIM5); +1091:Src/main.c **** /* USER CODE BEGIN TIM5_Init 2 */ +1092:Src/main.c **** +1093:Src/main.c **** /* USER CODE END TIM5_Init 2 */ +1094:Src/main.c **** +1095:Src/main.c **** } +1096:Src/main.c **** +1097:Src/main.c **** /** +1098:Src/main.c **** * @brief TIM6 Initialization Function +1099:Src/main.c **** * @param None +1100:Src/main.c **** * @retval None +1101:Src/main.c **** */ +1102:Src/main.c **** static void MX_TIM6_Init(void) +1103:Src/main.c **** { +1104:Src/main.c **** +1105:Src/main.c **** /* USER CODE BEGIN TIM6_Init 0 */ +1106:Src/main.c **** +1107:Src/main.c **** /* USER CODE END TIM6_Init 0 */ +1108:Src/main.c **** +1109:Src/main.c **** LL_TIM_InitTypeDef TIM_InitStruct = {0}; +1110:Src/main.c **** +1111:Src/main.c **** /* Peripheral clock enable */ +1112:Src/main.c **** LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM6); +1113:Src/main.c **** +1114:Src/main.c **** /* TIM6 interrupt Init */ +1115:Src/main.c **** NVIC_SetPriority(TIM6_DAC_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); +1116:Src/main.c **** NVIC_EnableIRQ(TIM6_DAC_IRQn); +1117:Src/main.c **** +1118:Src/main.c **** /* USER CODE BEGIN TIM6_Init 1 */ +1119:Src/main.c **** +1120:Src/main.c **** /* USER CODE END TIM6_Init 1 */ +1121:Src/main.c **** TIM_InitStruct.Prescaler = 45999; +1122:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; +1123:Src/main.c **** TIM_InitStruct.Autoreload = 19; +1124:Src/main.c **** LL_TIM_Init(TIM6, &TIM_InitStruct); +1125:Src/main.c **** LL_TIM_DisableARRPreload(TIM6); +1126:Src/main.c **** LL_TIM_SetTriggerOutput(TIM6, LL_TIM_TRGO_ENABLE); +1127:Src/main.c **** LL_TIM_DisableMasterSlaveMode(TIM6); +1128:Src/main.c **** /* USER CODE BEGIN TIM6_Init 2 */ +1129:Src/main.c **** +1130:Src/main.c **** /* USER CODE END TIM6_Init 2 */ +1131:Src/main.c **** +1132:Src/main.c **** } +1133:Src/main.c **** +1134:Src/main.c **** /** +1135:Src/main.c **** * @brief TIM7 Initialization Function +1136:Src/main.c **** * @param None +1137:Src/main.c **** * @retval None +1138:Src/main.c **** */ +1139:Src/main.c **** static void MX_TIM7_Init(void) +1140:Src/main.c **** { +1141:Src/main.c **** + ARM GAS /tmp/ccdsDELB.s page 60 + + +1142:Src/main.c **** /* USER CODE BEGIN TIM7_Init 0 */ +1143:Src/main.c **** +1144:Src/main.c **** /* USER CODE END TIM7_Init 0 */ +1145:Src/main.c **** +1146:Src/main.c **** LL_TIM_InitTypeDef TIM_InitStruct = {0}; +1147:Src/main.c **** +1148:Src/main.c **** /* Peripheral clock enable */ +1149:Src/main.c **** LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM7); +1150:Src/main.c **** +1151:Src/main.c **** /* TIM7 interrupt Init */ +1152:Src/main.c **** NVIC_SetPriority(TIM7_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); +1153:Src/main.c **** NVIC_EnableIRQ(TIM7_IRQn); +1154:Src/main.c **** +1155:Src/main.c **** /* USER CODE BEGIN TIM7_Init 1 */ +1156:Src/main.c **** +1157:Src/main.c **** /* USER CODE END TIM7_Init 1 */ +1158:Src/main.c **** TIM_InitStruct.Prescaler = 919; +1159:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; +1160:Src/main.c **** TIM_InitStruct.Autoreload = 99; +1161:Src/main.c **** LL_TIM_Init(TIM7, &TIM_InitStruct); +1162:Src/main.c **** LL_TIM_DisableARRPreload(TIM7); +1163:Src/main.c **** LL_TIM_SetTriggerOutput(TIM7, LL_TIM_TRGO_ENABLE); +1164:Src/main.c **** LL_TIM_DisableMasterSlaveMode(TIM7); +1165:Src/main.c **** /* USER CODE BEGIN TIM7_Init 2 */ +1166:Src/main.c **** +1167:Src/main.c **** /* USER CODE END TIM7_Init 2 */ +1168:Src/main.c **** +1169:Src/main.c **** } +1170:Src/main.c **** +1171:Src/main.c **** /** +1172:Src/main.c **** * @brief TIM10 Initialization Function +1173:Src/main.c **** * @param None +1174:Src/main.c **** * @retval None +1175:Src/main.c **** */ +1176:Src/main.c **** static void MX_TIM10_Init(void) +1177:Src/main.c **** { +1178:Src/main.c **** +1179:Src/main.c **** /* USER CODE BEGIN TIM10_Init 0 */ +1180:Src/main.c **** +1181:Src/main.c **** /* USER CODE END TIM10_Init 0 */ +1182:Src/main.c **** +1183:Src/main.c **** /* USER CODE BEGIN TIM10_Init 1 */ +1184:Src/main.c **** +1185:Src/main.c **** /* USER CODE END TIM10_Init 1 */ +1186:Src/main.c **** htim10.Instance = TIM10; +1187:Src/main.c **** htim10.Init.Prescaler = 183; +1188:Src/main.c **** htim10.Init.CounterMode = TIM_COUNTERMODE_UP; +1189:Src/main.c **** htim10.Init.Period = 9; +1190:Src/main.c **** htim10.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; +1191:Src/main.c **** htim10.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; +1192:Src/main.c **** if (HAL_TIM_Base_Init(&htim10) != HAL_OK) +1193:Src/main.c **** { +1194:Src/main.c **** Error_Handler(); +1195:Src/main.c **** } +1196:Src/main.c **** /* USER CODE BEGIN TIM10_Init 2 */ +1197:Src/main.c **** +1198:Src/main.c **** /* USER CODE END TIM10_Init 2 */ + ARM GAS /tmp/ccdsDELB.s page 61 + + +1199:Src/main.c **** +1200:Src/main.c **** } +1201:Src/main.c **** +1202:Src/main.c **** /** +1203:Src/main.c **** * @brief USART1 Initialization Function +1204:Src/main.c **** * @param None +1205:Src/main.c **** * @retval None +1206:Src/main.c **** */ +1207:Src/main.c **** static void MX_USART1_UART_Init(void) +1208:Src/main.c **** { +1209:Src/main.c **** +1210:Src/main.c **** /* USER CODE BEGIN USART1_Init 0 */ +1211:Src/main.c **** +1212:Src/main.c **** /* USER CODE END USART1_Init 0 */ +1213:Src/main.c **** +1214:Src/main.c **** LL_USART_InitTypeDef USART_InitStruct = {0}; +1215:Src/main.c **** +1216:Src/main.c **** LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; +1217:Src/main.c **** RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; +1218:Src/main.c **** +1219:Src/main.c **** /** Initializes the peripherals clock +1220:Src/main.c **** */ +1221:Src/main.c **** PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1; +1222:Src/main.c **** PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; +1223:Src/main.c **** if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) +1224:Src/main.c **** { +1225:Src/main.c **** Error_Handler(); +1226:Src/main.c **** } +1227:Src/main.c **** +1228:Src/main.c **** /* Peripheral clock enable */ +1229:Src/main.c **** LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_USART1); +1230:Src/main.c **** +1231:Src/main.c **** LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA); +1232:Src/main.c **** /**USART1 GPIO Configuration +1233:Src/main.c **** PA9 ------> USART1_TX +1234:Src/main.c **** PA10 ------> USART1_RX +1235:Src/main.c **** */ +1236:Src/main.c **** GPIO_InitStruct.Pin = LL_GPIO_PIN_9; +1237:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; +1238:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; +1239:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; +1240:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; +1241:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_7; +1242:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); +1243:Src/main.c **** +1244:Src/main.c **** GPIO_InitStruct.Pin = LL_GPIO_PIN_10; +1245:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; +1246:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; +1247:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; +1248:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; +1249:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_7; +1250:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); +1251:Src/main.c **** +1252:Src/main.c **** /* USART1 DMA Init */ +1253:Src/main.c **** +1254:Src/main.c **** /* USART1_TX Init */ +1255:Src/main.c **** LL_DMA_SetChannelSelection(DMA2, LL_DMA_STREAM_7, LL_DMA_CHANNEL_4); + ARM GAS /tmp/ccdsDELB.s page 62 + + +1256:Src/main.c **** +1257:Src/main.c **** LL_DMA_SetDataTransferDirection(DMA2, LL_DMA_STREAM_7, LL_DMA_DIRECTION_MEMORY_TO_PERIPH); +1258:Src/main.c **** +1259:Src/main.c **** LL_DMA_SetStreamPriorityLevel(DMA2, LL_DMA_STREAM_7, LL_DMA_PRIORITY_VERYHIGH); +1260:Src/main.c **** +1261:Src/main.c **** LL_DMA_SetMode(DMA2, LL_DMA_STREAM_7, LL_DMA_MODE_NORMAL); +1262:Src/main.c **** +1263:Src/main.c **** LL_DMA_SetPeriphIncMode(DMA2, LL_DMA_STREAM_7, LL_DMA_PERIPH_NOINCREMENT); +1264:Src/main.c **** +1265:Src/main.c **** LL_DMA_SetMemoryIncMode(DMA2, LL_DMA_STREAM_7, LL_DMA_MEMORY_INCREMENT); +1266:Src/main.c **** +1267:Src/main.c **** LL_DMA_SetPeriphSize(DMA2, LL_DMA_STREAM_7, LL_DMA_PDATAALIGN_BYTE); +1268:Src/main.c **** +1269:Src/main.c **** LL_DMA_SetMemorySize(DMA2, LL_DMA_STREAM_7, LL_DMA_MDATAALIGN_BYTE); +1270:Src/main.c **** +1271:Src/main.c **** LL_DMA_DisableFifoMode(DMA2, LL_DMA_STREAM_7); +1272:Src/main.c **** +1273:Src/main.c **** /* USART1 interrupt Init */ +1274:Src/main.c **** NVIC_SetPriority(USART1_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); +1275:Src/main.c **** NVIC_EnableIRQ(USART1_IRQn); +1276:Src/main.c **** +1277:Src/main.c **** /* USER CODE BEGIN USART1_Init 1 */ +1278:Src/main.c **** +1279:Src/main.c **** /* USER CODE END USART1_Init 1 */ +1280:Src/main.c **** USART_InitStruct.BaudRate = 115200; +1281:Src/main.c **** USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B; +1282:Src/main.c **** USART_InitStruct.StopBits = LL_USART_STOPBITS_1; +1283:Src/main.c **** USART_InitStruct.Parity = LL_USART_PARITY_NONE; +1284:Src/main.c **** USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX; +1285:Src/main.c **** USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE; +1286:Src/main.c **** USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16; +1287:Src/main.c **** LL_USART_Init(USART1, &USART_InitStruct); +1288:Src/main.c **** LL_USART_ConfigAsyncMode(USART1); +1289:Src/main.c **** LL_USART_Enable(USART1); +1290:Src/main.c **** /* USER CODE BEGIN USART1_Init 2 */ +1291:Src/main.c **** +1292:Src/main.c **** /* USER CODE END USART1_Init 2 */ +1293:Src/main.c **** +1294:Src/main.c **** } +1295:Src/main.c **** +1296:Src/main.c **** /** +1297:Src/main.c **** * Enable DMA controller clock +1298:Src/main.c **** */ +1299:Src/main.c **** static void MX_DMA_Init(void) +1300:Src/main.c **** { + 143 .loc 2 1300 1 is_stmt 1 view -0 + 144 .cfi_startproc + 145 @ args = 0, pretend = 0, frame = 8 + 146 @ frame_needed = 0, uses_anonymous_args = 0 + 147 0000 00B5 push {lr} + 148 .LCFI0: + 149 .cfi_def_cfa_offset 4 + 150 .cfi_offset 14, -4 + 151 0002 83B0 sub sp, sp, #12 + 152 .LCFI1: + 153 .cfi_def_cfa_offset 16 +1301:Src/main.c **** + ARM GAS /tmp/ccdsDELB.s page 63 + + +1302:Src/main.c **** /* Init with LL driver */ +1303:Src/main.c **** /* DMA controller clock enable */ +1304:Src/main.c **** LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA2); + 154 .loc 2 1304 3 view .LVU37 + 155 .LVL8: + 156 .LBB293: + 157 .LBI293: + 158 .file 3 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @file stm32f7xx_ll_bus.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Header file of BUS LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @verbatim + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ##### RCC Limitations ##### + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ============================================================================== + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** A delay between an RCC peripheral clock enable and the effective peripheral + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** enabling should be taken into account in order to manage the peripheral read/write + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** from/to registers. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (+) This delay depends on the peripheral mapping. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (++) AHB & APB peripherals, 1 dummy read is necessary + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** Workarounds: + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @endverbatim + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @attention + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * Copyright (c) 2017 STMicroelectronics. + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * All rights reserved. + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * This software is licensed under terms that can be found in the LICENSE file in + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * the root directory of this software component. + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifndef __STM32F7xx_LL_BUS_H + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define __STM32F7xx_LL_BUS_H + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifdef __cplusplus + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** extern "C" { + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Includes ------------------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #include "stm32f7xx.h" + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @addtogroup STM32F7xx_LL_Driver + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + ARM GAS /tmp/ccdsDELB.s page 64 + + + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC) + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL BUS + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private types -------------------------------------------------------------*/ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private variables ---------------------------------------------------------*/ + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private constants ---------------------------------------------------------*/ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private macros ------------------------------------------------------------*/ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported types ------------------------------------------------------------*/ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported constants --------------------------------------------------------*/ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOA RCC_AHB1ENR_GPIOAEN + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOB RCC_AHB1ENR_GPIOBEN + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOC RCC_AHB1ENR_GPIOCEN + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOD RCC_AHB1ENR_GPIODEN + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOE RCC_AHB1ENR_GPIOEEN + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOF RCC_AHB1ENR_GPIOFEN + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOG RCC_AHB1ENR_GPIOGEN + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOH RCC_AHB1ENR_GPIOHEN + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOI RCC_AHB1ENR_GPIOIEN + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOJ) + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOJ RCC_AHB1ENR_GPIOJEN + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOJ */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOK) + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOK RCC_AHB1ENR_GPIOKEN + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOK */ + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_CRC RCC_AHB1ENR_CRCEN + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_BKPSRAM RCC_AHB1ENR_BKPSRAMEN + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DTCMRAM RCC_AHB1ENR_DTCMRAMEN + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHB1ENR_DMA1EN + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHB1ENR_DMA2EN + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DMA2D) + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2D RCC_AHB1ENR_DMA2DEN + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DMA2D */ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(ETH) + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMAC RCC_AHB1ENR_ETHMACEN + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACTX RCC_AHB1ENR_ETHMACTXEN + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACRX RCC_AHB1ENR_ETHMACRXEN + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACPTP RCC_AHB1ENR_ETHMACPTPEN + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* ETH */ + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHS RCC_AHB1ENR_OTGHSEN + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHSULPI RCC_AHB1ENR_OTGHSULPIEN + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_AXI RCC_AHB1LPENR_AXILPEN + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_FLITF RCC_AHB1LPENR_FLITFLPEN + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHB1LPENR_SRAM1LPEN + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM2 RCC_AHB1LPENR_SRAM2LPEN + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + ARM GAS /tmp/ccdsDELB.s page 65 + + + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DCMI) + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_DCMI RCC_AHB2ENR_DCMIEN + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DCMI */ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(JPEG) + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_JPEG RCC_AHB2ENR_JPEGEN + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* JPEG */ + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CRYP) + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_CRYP RCC_AHB2ENR_CRYPEN + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CRYP */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(AES) + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_AES RCC_AHB2ENR_AESEN + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* AES */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(HASH) + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_HASH RCC_AHB2ENR_HASHEN + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* HASH */ + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_RNG RCC_AHB2ENR_RNGEN + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_OTGFS RCC_AHB2ENR_OTGFSEN + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB3_GRP1_PERIPH AHB3 GRP1 PERIPH + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_ALL 0xFFFFFFFFU + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_FMC RCC_AHB3ENR_FMCEN + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_QSPI RCC_AHB3ENR_QSPIEN + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM12 RCC_APB1ENR_TIM12EN + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM13 RCC_APB1ENR_TIM13EN + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM14 RCC_APB1ENR_TIM14EN + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APB1ENR_LPTIM1EN + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPDIFRX) + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPDIFRX RCC_APB1ENR_SPDIFRXEN + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPDIFRX */ + ARM GAS /tmp/ccdsDELB.s page 66 + + + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C3 RCC_APB1ENR_I2C3EN + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(I2C4) + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C4 RCC_APB1ENR_I2C4EN + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* I2C4 */ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR_CAN1EN + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN2) + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR_CAN2EN + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN2 */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN3) + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN3 RCC_APB1ENR_CAN3EN + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN3 */ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CEC) + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CEC RCC_APB1ENR_CECEN + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CEC */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART7 RCC_APB1ENR_UART7EN + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART8 RCC_APB1ENR_UART8EN + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC_APB1ENR_RTCEN) + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APB1ENR_RTCEN + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* RCC_APB1ENR_RTCEN */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART6 RCC_APB2ENR_USART6EN + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC2 RCC_APB2ENR_ADC2EN + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC3 RCC_APB2ENR_ADC3EN + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC1 RCC_APB2ENR_SDMMC1EN + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SDMMC2) + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC2 RCC_APB2ENR_SDMMC2EN + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SDMMC2 */ + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI4 RCC_APB2ENR_SPI4EN + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI5 RCC_APB2ENR_SPI5EN + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPI6) + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI6 RCC_APB2ENR_SPI6EN + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPI6 */ + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI1 RCC_APB2ENR_SAI1EN + ARM GAS /tmp/ccdsDELB.s page 67 + + + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI2 RCC_APB2ENR_SAI2EN + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(LTDC) + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_LTDC RCC_APB2ENR_LTDCEN + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* LTDC */ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DSI) + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DSI RCC_APB2ENR_DSIEN + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DSI */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DFSDM1_Channel0) + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DFSDM1 RCC_APB2ENR_DFSDM1EN + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DFSDM1_Channel0 */ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(MDIOS) + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_MDIO RCC_APB2ENR_MDIOEN + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* MDIOS */ + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(USB_HS_PHYC) + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_OTGPHYC RCC_APB2ENR_OTGPHYCEN + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* USB_HS_PHYC */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC RCC_APB2RSTR_ADCRST + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported macro ------------------------------------------------------------*/ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported functions --------------------------------------------------------*/ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB1 AHB1 + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB1 peripherals clock. + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_EnableClock\n + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_EnableClock\n + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_EnableClock\n + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_EnableClock\n + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_EnableClock\n + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_EnableClock\n + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_EnableClock\n + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_EnableClock\n + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_EnableClock\n + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_EnableClock\n + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_EnableClock\n + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_EnableClock\n + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_EnableClock\n + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_EnableClock\n + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_EnableClock\n + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_EnableClock\n + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_EnableClock\n + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_EnableClock\n + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_EnableClock\n + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_EnableClock\n + ARM GAS /tmp/ccdsDELB.s page 68 + + + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_EnableClock\n + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_EnableClock\n + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIEN LL_AHB1_GRP1_EnableClock + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) + 159 .loc 3 309 22 view .LVU38 + 160 .LBB294: + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 161 .loc 3 311 3 view .LVU39 + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 162 .loc 3 312 3 view .LVU40 + 163 0004 0D4B ldr r3, .L9 + 164 0006 1A6B ldr r2, [r3, #48] + 165 0008 42F48002 orr r2, r2, #4194304 + 166 000c 1A63 str r2, [r3, #48] + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + 167 .loc 3 314 3 view .LVU41 + 168 .loc 3 314 12 is_stmt 0 view .LVU42 + 169 000e 1B6B ldr r3, [r3, #48] + 170 0010 03F48003 and r3, r3, #4194304 + 171 .loc 3 314 10 view .LVU43 + 172 0014 0193 str r3, [sp, #4] + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 173 .loc 3 315 3 is_stmt 1 view .LVU44 + 174 0016 019B ldr r3, [sp, #4] + 175 .LVL9: + 176 .loc 3 315 3 is_stmt 0 view .LVU45 + 177 .LBE294: + ARM GAS /tmp/ccdsDELB.s page 69 + + + 178 .LBE293: +1305:Src/main.c **** +1306:Src/main.c **** /* DMA interrupt init */ +1307:Src/main.c **** /* DMA2_Stream7_IRQn interrupt configuration */ +1308:Src/main.c **** NVIC_SetPriority(DMA2_Stream7_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + 179 .loc 2 1308 3 is_stmt 1 view .LVU46 + 180 .LBB295: + 181 .LBI295: +1884:Drivers/CMSIS/Include/core_cm7.h **** { + 182 .loc 1 1884 26 view .LVU47 + 183 .LBB296: +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 184 .loc 1 1886 3 view .LVU48 +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 185 .loc 1 1886 26 is_stmt 0 view .LVU49 + 186 0018 094B ldr r3, .L9+4 + 187 001a D868 ldr r0, [r3, #12] + 188 .LBE296: + 189 .LBE295: + 190 .loc 2 1308 3 view .LVU50 + 191 001c 0022 movs r2, #0 + 192 001e 1146 mov r1, r2 + 193 0020 C0F30220 ubfx r0, r0, #8, #3 + 194 0024 FFF7FEFF bl NVIC_EncodePriority + 195 .LVL10: + 196 .LBB297: + 197 .LBI297: +2024:Drivers/CMSIS/Include/core_cm7.h **** { + 198 .loc 1 2024 22 is_stmt 1 view .LVU51 + 199 .LBB298: +2026:Drivers/CMSIS/Include/core_cm7.h **** { + 200 .loc 1 2026 3 view .LVU52 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 201 .loc 1 2028 5 view .LVU53 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 202 .loc 1 2028 49 is_stmt 0 view .LVU54 + 203 0028 0001 lsls r0, r0, #4 + 204 .LVL11: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 205 .loc 1 2028 49 view .LVU55 + 206 002a C0B2 uxtb r0, r0 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 207 .loc 1 2028 47 view .LVU56 + 208 002c 054B ldr r3, .L9+8 + 209 002e 83F84603 strb r0, [r3, #838] + 210 .LVL12: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 211 .loc 1 2028 47 view .LVU57 + 212 .LBE298: + 213 .LBE297: +1309:Src/main.c **** NVIC_EnableIRQ(DMA2_Stream7_IRQn); + 214 .loc 2 1309 3 is_stmt 1 view .LVU58 + 215 .LBB299: + 216 .LBI299: +1896:Drivers/CMSIS/Include/core_cm7.h **** { + 217 .loc 1 1896 22 view .LVU59 + 218 .LBB300: + ARM GAS /tmp/ccdsDELB.s page 70 + + +1898:Drivers/CMSIS/Include/core_cm7.h **** { + 219 .loc 1 1898 3 view .LVU60 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 220 .loc 1 1900 5 view .LVU61 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 221 .loc 1 1900 43 is_stmt 0 view .LVU62 + 222 0032 4022 movs r2, #64 + 223 0034 9A60 str r2, [r3, #8] + 224 .LVL13: +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 225 .loc 1 1900 43 view .LVU63 + 226 .LBE300: + 227 .LBE299: +1310:Src/main.c **** +1311:Src/main.c **** } + 228 .loc 2 1311 1 view .LVU64 + 229 0036 03B0 add sp, sp, #12 + 230 .LCFI2: + 231 .cfi_def_cfa_offset 4 + 232 @ sp needed + 233 0038 5DF804FB ldr pc, [sp], #4 + 234 .L10: + 235 .align 2 + 236 .L9: + 237 003c 00380240 .word 1073887232 + 238 0040 00ED00E0 .word -536810240 + 239 0044 00E100E0 .word -536813312 + 240 .cfi_endproc + 241 .LFE1201: + 243 .section .text.Decode_task,"ax",%progbits + 244 .align 1 + 245 .syntax unified + 246 .thumb + 247 .thumb_func + 248 .fpu fpv5-d16 + 250 Decode_task: + 251 .LVL14: + 252 .LFB1205: +1312:Src/main.c **** +1313:Src/main.c **** /** +1314:Src/main.c **** * @brief GPIO Initialization Function +1315:Src/main.c **** * @param None +1316:Src/main.c **** * @retval None +1317:Src/main.c **** */ +1318:Src/main.c **** static void MX_GPIO_Init(void) +1319:Src/main.c **** { +1320:Src/main.c **** GPIO_InitTypeDef GPIO_InitStruct = {0}; +1321:Src/main.c **** /* USER CODE BEGIN MX_GPIO_Init_1 */ +1322:Src/main.c **** /* USER CODE END MX_GPIO_Init_1 */ +1323:Src/main.c **** +1324:Src/main.c **** /* GPIO Ports Clock Enable */ +1325:Src/main.c **** __HAL_RCC_GPIOF_CLK_ENABLE(); +1326:Src/main.c **** __HAL_RCC_GPIOH_CLK_ENABLE(); +1327:Src/main.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); +1328:Src/main.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); +1329:Src/main.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); +1330:Src/main.c **** __HAL_RCC_GPIOE_CLK_ENABLE(); + ARM GAS /tmp/ccdsDELB.s page 71 + + +1331:Src/main.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); +1332:Src/main.c **** +1333:Src/main.c **** /*Configure GPIO pin Output Level */ +1334:Src/main.c **** HAL_GPIO_WritePin(GPIOF, ADC_MPD2_CS_Pin|SPI5_CNV_Pin|ADC_ThrLD2_CS_Pin, GPIO_PIN_RESET); +1335:Src/main.c **** +1336:Src/main.c **** /*Configure GPIO pin Output Level */ +1337:Src/main.c **** HAL_GPIO_WritePin(GPIOC, EN_5V2_Pin|EN_5V1_Pin|LD2_EN_Pin|TEC2_PD_Pin, GPIO_PIN_RESET); +1338:Src/main.c **** +1339:Src/main.c **** /*Configure GPIO pin Output Level */ +1340:Src/main.c **** HAL_GPIO_WritePin(GPIOA, TECEN1_Pin|TECEN2_Pin|REF2_ON_Pin|DAC_LD2_CS_Pin, GPIO_PIN_RESET); +1341:Src/main.c **** +1342:Src/main.c **** /*Configure GPIO pin Output Level */ +1343:Src/main.c **** HAL_GPIO_WritePin(DAC_TEC2_CS_GPIO_Port, DAC_TEC2_CS_Pin, GPIO_PIN_SET); +1344:Src/main.c **** +1345:Src/main.c **** /*Configure GPIO pin Output Level */ +1346:Src/main.c **** HAL_GPIO_WritePin(GPIOE, ADC_MPD1_CS_Pin|ADC_ThrLD1_CS_Pin, GPIO_PIN_RESET); +1347:Src/main.c **** +1348:Src/main.c **** /*Configure GPIO pin Output Level */ +1349:Src/main.c **** HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET); +1350:Src/main.c **** +1351:Src/main.c **** /*Configure GPIO pin Output Level */ +1352:Src/main.c **** HAL_GPIO_WritePin(GPIOB, REF0_EN_Pin|TEC1_PD_Pin|DAC_LD1_CS_Pin, GPIO_PIN_RESET); +1353:Src/main.c **** +1354:Src/main.c **** /*Configure GPIO pin Output Level */ +1355:Src/main.c **** HAL_GPIO_WritePin(DAC_TEC1_CS_GPIO_Port, DAC_TEC1_CS_Pin, GPIO_PIN_SET); +1356:Src/main.c **** +1357:Src/main.c **** /*Configure GPIO pin Output Level */ +1358:Src/main.c **** HAL_GPIO_WritePin(GPIOD, LD1_EN_Pin|TEST_01_Pin|GPIO_PIN_7, GPIO_PIN_RESET); +1359:Src/main.c **** +1360:Src/main.c **** /*Configure GPIO pins : ADC_MPD2_CS_Pin SPI5_CNV_Pin ADC_ThrLD2_CS_Pin */ +1361:Src/main.c **** GPIO_InitStruct.Pin = ADC_MPD2_CS_Pin|SPI5_CNV_Pin|ADC_ThrLD2_CS_Pin; +1362:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; +1363:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1364:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; +1365:Src/main.c **** HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); +1366:Src/main.c **** +1367:Src/main.c **** /*Configure GPIO pins : EN_5V2_Pin LD2_EN_Pin TEC2_PD_Pin */ +1368:Src/main.c **** GPIO_InitStruct.Pin = EN_5V2_Pin|LD2_EN_Pin|TEC2_PD_Pin; +1369:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; +1370:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1371:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; +1372:Src/main.c **** HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); +1373:Src/main.c **** +1374:Src/main.c **** /*Configure GPIO pin : EN_5V1_Pin */ +1375:Src/main.c **** GPIO_InitStruct.Pin = EN_5V1_Pin; +1376:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; +1377:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1378:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; +1379:Src/main.c **** HAL_GPIO_Init(EN_5V1_GPIO_Port, &GPIO_InitStruct); +1380:Src/main.c **** +1381:Src/main.c **** /*Configure GPIO pins : TECEN1_Pin TECEN2_Pin REF2_ON_Pin DAC_TEC2_CS_Pin +1382:Src/main.c **** DAC_LD2_CS_Pin */ +1383:Src/main.c **** GPIO_InitStruct.Pin = TECEN1_Pin|TECEN2_Pin|REF2_ON_Pin|DAC_TEC2_CS_Pin +1384:Src/main.c **** |DAC_LD2_CS_Pin; +1385:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; +1386:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1387:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + ARM GAS /tmp/ccdsDELB.s page 72 + + +1388:Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); +1389:Src/main.c **** +1390:Src/main.c **** /*Configure GPIO pins : TEC2_FLAG1_Pin TEC2_FLAG2_Pin TEC1_FLAG1_Pin TEC1_FLAG2_Pin */ +1391:Src/main.c **** GPIO_InitStruct.Pin = TEC2_FLAG1_Pin|TEC2_FLAG2_Pin|TEC1_FLAG1_Pin|TEC1_FLAG2_Pin; +1392:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; +1393:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1394:Src/main.c **** HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); +1395:Src/main.c **** +1396:Src/main.c **** /*Configure GPIO pins : ADC_MPD1_CS_Pin ADC_ThrLD1_CS_Pin */ +1397:Src/main.c **** GPIO_InitStruct.Pin = ADC_MPD1_CS_Pin|ADC_ThrLD1_CS_Pin; +1398:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; +1399:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1400:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; +1401:Src/main.c **** HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); +1402:Src/main.c **** +1403:Src/main.c **** /*Configure GPIO pin : SPI4_CNV_Pin */ +1404:Src/main.c **** GPIO_InitStruct.Pin = SPI4_CNV_Pin; +1405:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; +1406:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1407:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; +1408:Src/main.c **** HAL_GPIO_Init(SPI4_CNV_GPIO_Port, &GPIO_InitStruct); +1409:Src/main.c **** +1410:Src/main.c **** /*Configure GPIO pins : REF0_EN_Pin TEC1_PD_Pin DAC_TEC1_CS_Pin DAC_LD1_CS_Pin */ +1411:Src/main.c **** GPIO_InitStruct.Pin = REF0_EN_Pin|TEC1_PD_Pin|DAC_TEC1_CS_Pin|DAC_LD1_CS_Pin; +1412:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; +1413:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1414:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; +1415:Src/main.c **** HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); +1416:Src/main.c **** +1417:Src/main.c **** /*Configure GPIO pins : LD1_EN_Pin TEST_01_Pin PD7 */ +1418:Src/main.c **** GPIO_InitStruct.Pin = LD1_EN_Pin|TEST_01_Pin|GPIO_PIN_7; +1419:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; +1420:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1421:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; +1422:Src/main.c **** HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); +1423:Src/main.c **** +1424:Src/main.c **** /*Configure GPIO pin : USB_FLAG_Pin */ +1425:Src/main.c **** GPIO_InitStruct.Pin = USB_FLAG_Pin; +1426:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; +1427:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1428:Src/main.c **** HAL_GPIO_Init(USB_FLAG_GPIO_Port, &GPIO_InitStruct); +1429:Src/main.c **** +1430:Src/main.c **** /*Configure GPIO pin : SDMMC1_EN_Pin */ +1431:Src/main.c **** GPIO_InitStruct.Pin = SDMMC1_EN_Pin; +1432:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; +1433:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1434:Src/main.c **** HAL_GPIO_Init(SDMMC1_EN_GPIO_Port, &GPIO_InitStruct); +1435:Src/main.c **** +1436:Src/main.c **** /*Configure GPIO pin : FPGA_CONF_DONE_Pin */ +1437:Src/main.c **** GPIO_InitStruct.Pin = FPGA_CONF_DONE_Pin; +1438:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; +1439:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; +1440:Src/main.c **** HAL_GPIO_Init(FPGA_CONF_DONE_GPIO_Port, &GPIO_InitStruct); +1441:Src/main.c **** +1442:Src/main.c **** /* USER CODE BEGIN MX_GPIO_Init_2 */ +1443:Src/main.c **** /* USER CODE END MX_GPIO_Init_2 */ +1444:Src/main.c **** } + ARM GAS /tmp/ccdsDELB.s page 73 + + +1445:Src/main.c **** +1446:Src/main.c **** /* USER CODE BEGIN 4 */ +1447:Src/main.c **** +1448:Src/main.c **** //void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { +1449:Src/main.c **** +1450:Src/main.c **** // UART_transmission_request = NO_MESS; +1451:Src/main.c **** +1452:Src/main.c **** //} +1453:Src/main.c **** +1454:Src/main.c **** static void Init_params(void) +1455:Src/main.c **** { +1456:Src/main.c **** TO6 = 0; +1457:Src/main.c **** TO7 = 0; +1458:Src/main.c **** TO7_before = 0; +1459:Src/main.c **** TO6_before = 0; +1460:Src/main.c **** TO6_uart = 0; +1461:Src/main.c **** flg_tmt = 0; +1462:Src/main.c **** UART_rec_incr = 0; +1463:Src/main.c **** fgoto = 0; +1464:Src/main.c **** sizeoffile = 0; +1465:Src/main.c **** u_tx_flg = 0; +1466:Src/main.c **** u_rx_flg = 0; +1467:Src/main.c **** //State_Data[0]=0; +1468:Src/main.c **** //State_Data[1]=0;//All OK! +1469:Src/main.c **** for (uint16_t i=0; iWORK_EN = ((uint8_t)((*temp2)>>0))&0x01; +1621:Src/main.c **** Curr_setup->U5V1_EN = ((uint8_t)((*temp2)>>1))&0x01; +1622:Src/main.c **** Curr_setup->U5V2_EN = ((uint8_t)((*temp2)>>2))&0x01; +1623:Src/main.c **** Curr_setup->LD1_EN = ((uint8_t)((*temp2)>>3))&0x01; +1624:Src/main.c **** Curr_setup->LD2_EN = ((uint8_t)((*temp2)>>4))&0x01; +1625:Src/main.c **** Curr_setup->REF1_EN = ((uint8_t)((*temp2)>>5))&0x01; +1626:Src/main.c **** Curr_setup->REF2_EN = ((uint8_t)((*temp2)>>6))&0x01; +1627:Src/main.c **** Curr_setup->TEC1_EN = ((uint8_t)((*temp2)>>7))&0x01; +1628:Src/main.c **** Curr_setup->TEC2_EN = ((uint8_t)((*temp2)>>8))&0x01; +1629:Src/main.c **** Curr_setup->TS1_EN = ((uint8_t)((*temp2)>>9))&0x01; +1630:Src/main.c **** Curr_setup->TS2_EN = ((uint8_t)((*temp2)>>10))&0x01; +1631:Src/main.c **** Curr_setup->SD_EN = ((uint8_t)((*temp2)>>11))&0x01; +1632:Src/main.c **** Curr_setup->PI1_RD = ((uint8_t)((*temp2)>>12))&0x01; +1633:Src/main.c **** Curr_setup->PI2_RD = ((uint8_t)((*temp2)>>13))&0x01; +1634:Src/main.c **** +1635:Src/main.c **** temp2++; +1636:Src/main.c **** LD1_curr_setup->LD_TEMP = (uint16_t)(*temp2); +1637:Src/main.c **** temp2++; +1638:Src/main.c **** LD2_curr_setup->LD_TEMP = (uint16_t)(*temp2); +1639:Src/main.c **** temp2++; +1640:Src/main.c **** temp2++; +1641:Src/main.c **** temp2++; +1642:Src/main.c **** Curr_setup->AVERAGES = (uint16_t)(*temp2); +1643:Src/main.c **** temp2++; +1644:Src/main.c **** LD1_curr_setup->P_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint +1645:Src/main.c **** temp2++; +1646:Src/main.c **** LD1_curr_setup->I_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint +1647:Src/main.c **** temp2++; +1648:Src/main.c **** LD2_curr_setup->P_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint +1649:Src/main.c **** temp2++; +1650:Src/main.c **** LD2_curr_setup->I_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint +1651:Src/main.c **** temp2++; +1652:Src/main.c **** Long_Data[13] = (uint16_t)(*temp2);//Message ID +1653:Src/main.c **** temp2++; +1654:Src/main.c **** LD1_curr_setup->CURRENT = (uint16_t)(*temp2); +1655:Src/main.c **** temp2++; +1656:Src/main.c **** LD2_curr_setup->CURRENT = (uint16_t)(*temp2); +1657:Src/main.c **** temp2++; +1658:Src/main.c **** +1659:Src/main.c **** if (Curr_setup->U5V1_EN) +1660:Src/main.c **** { +1661:Src/main.c **** HAL_GPIO_WritePin(EN_5V1_GPIO_Port, EN_5V1_Pin, GPIO_PIN_SET); +1662:Src/main.c **** } +1663:Src/main.c **** else +1664:Src/main.c **** { +1665:Src/main.c **** HAL_GPIO_WritePin(EN_5V1_GPIO_Port, EN_5V1_Pin, GPIO_PIN_RESET); +1666:Src/main.c **** } +1667:Src/main.c **** +1668:Src/main.c **** if (Curr_setup->U5V2_EN) +1669:Src/main.c **** { +1670:Src/main.c **** HAL_GPIO_WritePin(EN_5V2_GPIO_Port, EN_5V2_Pin, GPIO_PIN_SET); +1671:Src/main.c **** } +1672:Src/main.c **** else + ARM GAS /tmp/ccdsDELB.s page 77 + + +1673:Src/main.c **** { +1674:Src/main.c **** HAL_GPIO_WritePin(EN_5V2_GPIO_Port, EN_5V2_Pin, GPIO_PIN_RESET); +1675:Src/main.c **** } +1676:Src/main.c **** +1677:Src/main.c **** if (Curr_setup->LD1_EN) +1678:Src/main.c **** { +1679:Src/main.c **** HAL_GPIO_WritePin(LD1_EN_GPIO_Port, LD1_EN_Pin, GPIO_PIN_SET); +1680:Src/main.c **** //LL_SPI_Enable(SPI2);//Enable SPI for Laser1 DAC +1681:Src/main.c **** } +1682:Src/main.c **** else +1683:Src/main.c **** { +1684:Src/main.c **** HAL_GPIO_WritePin(LD1_EN_GPIO_Port, LD1_EN_Pin, GPIO_PIN_RESET); +1685:Src/main.c **** //LL_SPI_Disable(SPI2);//Disable SPI for Laser1 DAC +1686:Src/main.c **** } +1687:Src/main.c **** +1688:Src/main.c **** if (Curr_setup->LD2_EN) +1689:Src/main.c **** { +1690:Src/main.c **** HAL_GPIO_WritePin(LD2_EN_GPIO_Port, LD2_EN_Pin, GPIO_PIN_SET); +1691:Src/main.c **** //LL_SPI_Enable(SPI6);//Enable SPI for Laser2 DAC +1692:Src/main.c **** } +1693:Src/main.c **** else +1694:Src/main.c **** { +1695:Src/main.c **** HAL_GPIO_WritePin(LD2_EN_GPIO_Port, LD2_EN_Pin, GPIO_PIN_RESET); +1696:Src/main.c **** //LL_SPI_Disable(SPI6);//Disable SPI for Laser2 DAC +1697:Src/main.c **** } +1698:Src/main.c **** +1699:Src/main.c **** if (Curr_setup->REF1_EN) +1700:Src/main.c **** { +1701:Src/main.c **** HAL_GPIO_WritePin(REF0_EN_GPIO_Port, REF0_EN_Pin, GPIO_PIN_SET); +1702:Src/main.c **** } +1703:Src/main.c **** else +1704:Src/main.c **** { +1705:Src/main.c **** HAL_GPIO_WritePin(REF0_EN_GPIO_Port, REF0_EN_Pin, GPIO_PIN_RESET); +1706:Src/main.c **** } +1707:Src/main.c **** +1708:Src/main.c **** if (Curr_setup->REF2_EN) +1709:Src/main.c **** { +1710:Src/main.c **** HAL_GPIO_WritePin(REF2_ON_GPIO_Port, REF2_ON_Pin, GPIO_PIN_SET); +1711:Src/main.c **** } +1712:Src/main.c **** else +1713:Src/main.c **** { +1714:Src/main.c **** HAL_GPIO_WritePin(REF2_ON_GPIO_Port, REF2_ON_Pin, GPIO_PIN_RESET); +1715:Src/main.c **** } +1716:Src/main.c **** +1717:Src/main.c **** if ((Curr_setup->TS1_EN)&&(Curr_setup->TEC1_EN)) +1718:Src/main.c **** { +1719:Src/main.c **** Set_LTEC(3,32767); +1720:Src/main.c **** Set_LTEC(3,32767); +1721:Src/main.c **** HAL_GPIO_WritePin(TEC1_PD_GPIO_Port, TEC1_PD_Pin, GPIO_PIN_SET); +1722:Src/main.c **** HAL_GPIO_WritePin(TECEN1_GPIO_Port, TECEN1_Pin, GPIO_PIN_SET); +1723:Src/main.c **** } +1724:Src/main.c **** else +1725:Src/main.c **** { +1726:Src/main.c **** HAL_GPIO_WritePin(TECEN1_GPIO_Port, TECEN1_Pin, GPIO_PIN_RESET); +1727:Src/main.c **** HAL_GPIO_WritePin(TEC1_PD_GPIO_Port, TEC1_PD_Pin, GPIO_PIN_RESET); +1728:Src/main.c **** } +1729:Src/main.c **** + ARM GAS /tmp/ccdsDELB.s page 78 + + +1730:Src/main.c **** if ((Curr_setup->TS2_EN)&&(Curr_setup->TEC2_EN)) +1731:Src/main.c **** { +1732:Src/main.c **** Set_LTEC(4,32767); +1733:Src/main.c **** Set_LTEC(4,32767); +1734:Src/main.c **** HAL_GPIO_WritePin(TEC2_PD_GPIO_Port, TEC2_PD_Pin, GPIO_PIN_SET); +1735:Src/main.c **** HAL_GPIO_WritePin(TECEN2_GPIO_Port, TECEN2_Pin, GPIO_PIN_SET); +1736:Src/main.c **** } +1737:Src/main.c **** else +1738:Src/main.c **** { +1739:Src/main.c **** HAL_GPIO_WritePin(TECEN2_GPIO_Port, TECEN2_Pin, GPIO_PIN_RESET); +1740:Src/main.c **** HAL_GPIO_WritePin(TEC2_PD_GPIO_Port, TEC2_PD_Pin, GPIO_PIN_RESET); +1741:Src/main.c **** } +1742:Src/main.c **** +1743:Src/main.c **** if (Curr_setup->PI1_RD==0) +1744:Src/main.c **** { +1745:Src/main.c **** LD1_curr_setup->P_coef_temp = 10; +1746:Src/main.c **** LD1_curr_setup->I_coef_temp = 0.01; +1747:Src/main.c **** } +1748:Src/main.c **** +1749:Src/main.c **** if (Curr_setup->PI2_RD==0) +1750:Src/main.c **** { +1751:Src/main.c **** LD2_curr_setup->P_coef_temp = 10; +1752:Src/main.c **** LD2_curr_setup->I_coef_temp = 0.01; +1753:Src/main.c **** } +1754:Src/main.c **** } +1755:Src/main.c **** +1756:Src/main.c **** static void Decode_task(uint16_t *Command, LDx_SetupTypeDef *LD1_curr_setup, LDx_SetupTypeDef *LD2_ +1757:Src/main.c **** { + 253 .loc 2 1757 1 is_stmt 1 view -0 + 254 .cfi_startproc + 255 @ args = 0, pretend = 0, frame = 8 + 256 @ frame_needed = 0, uses_anonymous_args = 0 + 257 @ link register save eliminated. + 258 .loc 2 1757 1 is_stmt 0 view .LVU66 + 259 0000 82B0 sub sp, sp, #8 + 260 .LCFI3: + 261 .cfi_def_cfa_offset 8 +1758:Src/main.c **** uint16_t *temp2; + 262 .loc 2 1758 2 is_stmt 1 view .LVU67 +1759:Src/main.c **** +1760:Src/main.c **** temp2 = (uint16_t *)Command; + 263 .loc 2 1760 2 view .LVU68 + 264 .LVL15: +1761:Src/main.c **** Curr_setup->WORK_EN = ((uint8_t)((*temp2)>>0))&0x01; + 265 .loc 2 1761 2 view .LVU69 + 266 .loc 2 1761 36 is_stmt 0 view .LVU70 + 267 0002 0288 ldrh r2, [r0] + 268 .LVL16: + 269 .loc 2 1761 48 view .LVU71 + 270 0004 02F00102 and r2, r2, #1 + 271 .loc 2 1761 22 view .LVU72 + 272 0008 1A70 strb r2, [r3] +1762:Src/main.c **** Curr_setup->U5V1_EN = ((uint8_t)((*temp2)>>1))&0x01; + 273 .loc 2 1762 2 is_stmt 1 view .LVU73 + 274 .loc 2 1762 36 is_stmt 0 view .LVU74 + 275 000a 0288 ldrh r2, [r0] + 276 .loc 2 1762 48 view .LVU75 + ARM GAS /tmp/ccdsDELB.s page 79 + + + 277 000c C2F34002 ubfx r2, r2, #1, #1 + 278 .loc 2 1762 22 view .LVU76 + 279 0010 5A70 strb r2, [r3, #1] +1763:Src/main.c **** Curr_setup->U5V2_EN = ((uint8_t)((*temp2)>>2))&0x01; + 280 .loc 2 1763 2 is_stmt 1 view .LVU77 + 281 .loc 2 1763 36 is_stmt 0 view .LVU78 + 282 0012 0288 ldrh r2, [r0] + 283 .loc 2 1763 48 view .LVU79 + 284 0014 C2F38002 ubfx r2, r2, #2, #1 + 285 .loc 2 1763 22 view .LVU80 + 286 0018 9A70 strb r2, [r3, #2] +1764:Src/main.c **** Curr_setup->LD1_EN = ((uint8_t)((*temp2)>>3))&0x01; + 287 .loc 2 1764 2 is_stmt 1 view .LVU81 + 288 .loc 2 1764 35 is_stmt 0 view .LVU82 + 289 001a 0288 ldrh r2, [r0] + 290 .loc 2 1764 47 view .LVU83 + 291 001c C2F3C002 ubfx r2, r2, #3, #1 + 292 .loc 2 1764 21 view .LVU84 + 293 0020 DA70 strb r2, [r3, #3] +1765:Src/main.c **** Curr_setup->LD2_EN = ((uint8_t)((*temp2)>>4))&0x01; + 294 .loc 2 1765 2 is_stmt 1 view .LVU85 + 295 .loc 2 1765 35 is_stmt 0 view .LVU86 + 296 0022 0288 ldrh r2, [r0] + 297 .loc 2 1765 47 view .LVU87 + 298 0024 C2F30012 ubfx r2, r2, #4, #1 + 299 .loc 2 1765 21 view .LVU88 + 300 0028 1A71 strb r2, [r3, #4] +1766:Src/main.c **** Curr_setup->REF1_EN = ((uint8_t)((*temp2)>>5))&0x01; + 301 .loc 2 1766 2 is_stmt 1 view .LVU89 + 302 .loc 2 1766 36 is_stmt 0 view .LVU90 + 303 002a 0288 ldrh r2, [r0] + 304 .loc 2 1766 48 view .LVU91 + 305 002c C2F34012 ubfx r2, r2, #5, #1 + 306 .loc 2 1766 22 view .LVU92 + 307 0030 5A71 strb r2, [r3, #5] +1767:Src/main.c **** Curr_setup->REF2_EN = ((uint8_t)((*temp2)>>6))&0x01; + 308 .loc 2 1767 2 is_stmt 1 view .LVU93 + 309 .loc 2 1767 36 is_stmt 0 view .LVU94 + 310 0032 0288 ldrh r2, [r0] + 311 .loc 2 1767 48 view .LVU95 + 312 0034 C2F38012 ubfx r2, r2, #6, #1 + 313 .loc 2 1767 22 view .LVU96 + 314 0038 9A71 strb r2, [r3, #6] +1768:Src/main.c **** Curr_setup->TEC1_EN = ((uint8_t)((*temp2)>>7))&0x01; + 315 .loc 2 1768 2 is_stmt 1 view .LVU97 + 316 .loc 2 1768 36 is_stmt 0 view .LVU98 + 317 003a 0288 ldrh r2, [r0] + 318 .loc 2 1768 48 view .LVU99 + 319 003c C2F3C012 ubfx r2, r2, #7, #1 + 320 .loc 2 1768 22 view .LVU100 + 321 0040 DA71 strb r2, [r3, #7] +1769:Src/main.c **** Curr_setup->TEC2_EN = ((uint8_t)((*temp2)>>8))&0x01; + 322 .loc 2 1769 2 is_stmt 1 view .LVU101 + 323 .loc 2 1769 36 is_stmt 0 view .LVU102 + 324 0042 0288 ldrh r2, [r0] + 325 .loc 2 1769 48 view .LVU103 + 326 0044 C2F30022 ubfx r2, r2, #8, #1 + ARM GAS /tmp/ccdsDELB.s page 80 + + + 327 .loc 2 1769 22 view .LVU104 + 328 0048 1A72 strb r2, [r3, #8] +1770:Src/main.c **** Curr_setup->TS1_EN = ((uint8_t)((*temp2)>>9))&0x01; + 329 .loc 2 1770 2 is_stmt 1 view .LVU105 + 330 .loc 2 1770 35 is_stmt 0 view .LVU106 + 331 004a 0288 ldrh r2, [r0] + 332 .loc 2 1770 47 view .LVU107 + 333 004c C2F34022 ubfx r2, r2, #9, #1 + 334 .loc 2 1770 21 view .LVU108 + 335 0050 5A72 strb r2, [r3, #9] +1771:Src/main.c **** Curr_setup->TS2_EN = ((uint8_t)((*temp2)>>10))&0x01; + 336 .loc 2 1771 2 is_stmt 1 view .LVU109 + 337 .loc 2 1771 35 is_stmt 0 view .LVU110 + 338 0052 0288 ldrh r2, [r0] + 339 .loc 2 1771 48 view .LVU111 + 340 0054 C2F38022 ubfx r2, r2, #10, #1 + 341 .loc 2 1771 21 view .LVU112 + 342 0058 9A72 strb r2, [r3, #10] +1772:Src/main.c **** Curr_setup->SD_EN = ((uint8_t)((*temp2)>>11))&0x01; + 343 .loc 2 1772 2 is_stmt 1 view .LVU113 + 344 .loc 2 1772 34 is_stmt 0 view .LVU114 + 345 005a 0288 ldrh r2, [r0] + 346 .loc 2 1772 47 view .LVU115 + 347 005c C2F3C022 ubfx r2, r2, #11, #1 + 348 .loc 2 1772 20 view .LVU116 + 349 0060 DA72 strb r2, [r3, #11] +1773:Src/main.c **** Curr_setup->PI1_RD = ((uint8_t)((*temp2)>>12))&0x01; + 350 .loc 2 1773 2 is_stmt 1 view .LVU117 + 351 .loc 2 1773 35 is_stmt 0 view .LVU118 + 352 0062 0288 ldrh r2, [r0] + 353 .loc 2 1773 48 view .LVU119 + 354 0064 C2F30032 ubfx r2, r2, #12, #1 + 355 .loc 2 1773 21 view .LVU120 + 356 0068 1A73 strb r2, [r3, #12] +1774:Src/main.c **** Curr_setup->PI2_RD = ((uint8_t)((*temp2)>>13))&0x01; + 357 .loc 2 1774 2 is_stmt 1 view .LVU121 + 358 .loc 2 1774 35 is_stmt 0 view .LVU122 + 359 006a 0288 ldrh r2, [r0] + 360 .loc 2 1774 48 view .LVU123 + 361 006c C2F34032 ubfx r2, r2, #13, #1 + 362 .loc 2 1774 21 view .LVU124 + 363 0070 5A73 strb r2, [r3, #13] +1775:Src/main.c **** +1776:Src/main.c **** temp2++; + 364 .loc 2 1776 2 is_stmt 1 view .LVU125 + 365 .LVL17: +1777:Src/main.c **** task.task_type = (uint8_t)(*temp2); temp2++; + 366 .loc 2 1777 2 view .LVU126 + 367 .loc 2 1777 21 is_stmt 0 view .LVU127 + 368 0072 8278 ldrb r2, [r0, #2] @ zero_extendqisi2 + 369 .loc 2 1777 19 view .LVU128 + 370 0074 384B ldr r3, .L13+8 + 371 .LVL18: + 372 .loc 2 1777 19 view .LVU129 + 373 0076 1A70 strb r2, [r3] + 374 .loc 2 1777 40 is_stmt 1 view .LVU130 + 375 .LVL19: + ARM GAS /tmp/ccdsDELB.s page 81 + + +1778:Src/main.c **** task.min_param = (float)(*temp2); temp2++; + 376 .loc 2 1778 2 view .LVU131 + 377 .loc 2 1778 29 is_stmt 0 view .LVU132 + 378 0078 8288 ldrh r2, [r0, #4] + 379 007a 07EE902A vmov s15, r2 @ int + 380 .loc 2 1778 21 view .LVU133 + 381 007e F8EE677A vcvt.f32.u32 s15, s15 + 382 .loc 2 1778 19 view .LVU134 + 383 0082 C3ED017A vstr.32 s15, [r3, #4] + 384 .loc 2 1778 38 is_stmt 1 view .LVU135 + 385 .LVL20: +1779:Src/main.c **** task.max_param = (float)(*temp2); temp2++; + 386 .loc 2 1779 2 view .LVU136 + 387 .loc 2 1779 29 is_stmt 0 view .LVU137 + 388 0086 C288 ldrh r2, [r0, #6] + 389 0088 07EE902A vmov s15, r2 @ int + 390 .loc 2 1779 21 view .LVU138 + 391 008c F8EE677A vcvt.f32.u32 s15, s15 + 392 .loc 2 1779 19 view .LVU139 + 393 0090 C3ED027A vstr.32 s15, [r3, #8] + 394 .loc 2 1779 38 is_stmt 1 view .LVU140 + 395 .LVL21: +1780:Src/main.c **** task.delta_param = (float)(*temp2); temp2++; + 396 .loc 2 1780 2 view .LVU141 + 397 .loc 2 1780 29 is_stmt 0 view .LVU142 + 398 0094 0289 ldrh r2, [r0, #8] + 399 0096 07EE902A vmov s15, r2 @ int + 400 .loc 2 1780 21 view .LVU143 + 401 009a F8EE677A vcvt.f32.u32 s15, s15 + 402 .loc 2 1780 19 view .LVU144 + 403 009e C3ED037A vstr.32 s15, [r3, #12] + 404 .loc 2 1780 38 is_stmt 1 view .LVU145 + 405 .LVL22: +1781:Src/main.c **** task.dt = (float)(*temp2) / 100.0; temp2++; + 406 .loc 2 1781 2 view .LVU146 + 407 .loc 2 1781 29 is_stmt 0 view .LVU147 + 408 00a2 4289 ldrh r2, [r0, #10] + 409 00a4 07EE102A vmov s14, r2 @ int + 410 .loc 2 1781 21 view .LVU148 + 411 00a8 B8EE477B vcvt.f64.u32 d7, s14 + 412 .loc 2 1781 37 view .LVU149 + 413 00ac 9FED285B vldr.64 d5, .L13 + 414 00b0 87EE056B vdiv.f64 d6, d7, d5 + 415 .loc 2 1781 19 view .LVU150 + 416 00b4 FCEEC67B vcvt.u32.f64 s15, d6 + 417 00b8 CDED017A vstr.32 s15, [sp, #4] @ int + 418 00bc 9DF80420 ldrb r2, [sp, #4] @ zero_extendqisi2 + 419 00c0 1A75 strb r2, [r3, #20] + 420 .loc 2 1781 46 is_stmt 1 view .LVU151 + 421 .LVL23: +1782:Src/main.c **** task.sec_param = (float)(*temp2); temp2++; + 422 .loc 2 1782 2 view .LVU152 + 423 .loc 2 1782 29 is_stmt 0 view .LVU153 + 424 00c2 8189 ldrh r1, [r0, #12] + 425 .LVL24: + 426 .loc 2 1782 29 view .LVU154 + 427 00c4 07EE901A vmov s15, r1 @ int + ARM GAS /tmp/ccdsDELB.s page 82 + + + 428 .loc 2 1782 21 view .LVU155 + 429 00c8 F8EE677A vcvt.f32.u32 s15, s15 + 430 .loc 2 1782 19 view .LVU156 + 431 00cc C3ED067A vstr.32 s15, [r3, #24] + 432 .loc 2 1782 38 is_stmt 1 view .LVU157 + 433 .LVL25: +1783:Src/main.c **** task.curr = (float)(*temp2); temp2++; + 434 .loc 2 1783 2 view .LVU158 + 435 .loc 2 1783 29 is_stmt 0 view .LVU159 + 436 00d0 C189 ldrh r1, [r0, #14] + 437 00d2 07EE901A vmov s15, r1 @ int + 438 .loc 2 1783 21 view .LVU160 + 439 00d6 F8EE677A vcvt.f32.u32 s15, s15 + 440 .loc 2 1783 19 view .LVU161 + 441 00da C3ED077A vstr.32 s15, [r3, #28] + 442 .loc 2 1783 38 is_stmt 1 view .LVU162 + 443 .LVL26: +1784:Src/main.c **** task.temp = (float)(*temp2); temp2++; + 444 .loc 2 1784 2 view .LVU163 + 445 .loc 2 1784 29 is_stmt 0 view .LVU164 + 446 00de 018A ldrh r1, [r0, #16] + 447 00e0 07EE901A vmov s15, r1 @ int + 448 .loc 2 1784 21 view .LVU165 + 449 00e4 F8EE677A vcvt.f32.u32 s15, s15 + 450 .loc 2 1784 19 view .LVU166 + 451 00e8 C3ED087A vstr.32 s15, [r3, #32] + 452 .loc 2 1784 38 is_stmt 1 view .LVU167 + 453 .LVL27: +1785:Src/main.c **** task.tau = (float)(*temp2); temp2++; + 454 .loc 2 1785 2 view .LVU168 + 455 .loc 2 1785 29 is_stmt 0 view .LVU169 + 456 00ec 418A ldrh r1, [r0, #18] + 457 .loc 2 1785 19 view .LVU170 + 458 00ee D982 strh r1, [r3, #22] @ movhi + 459 .loc 2 1785 38 is_stmt 1 view .LVU171 + 460 .LVL28: +1786:Src/main.c **** task.p_coef_1 = (float)(*temp2) * 256.0; temp2++; + 461 .loc 2 1786 2 view .LVU172 + 462 .loc 2 1786 29 is_stmt 0 view .LVU173 + 463 00f0 818A ldrh r1, [r0, #20] + 464 00f2 07EE101A vmov s14, r1 @ int + 465 .loc 2 1786 21 view .LVU174 + 466 00f6 B8EE477A vcvt.f32.u32 s14, s14 + 467 .loc 2 1786 37 view .LVU175 + 468 00fa DFED186A vldr.32 s13, .L13+12 + 469 00fe 27EE267A vmul.f32 s14, s14, s13 + 470 .loc 2 1786 19 view .LVU176 + 471 0102 83ED0A7A vstr.32 s14, [r3, #40] + 472 .loc 2 1786 46 is_stmt 1 view .LVU177 + 473 .LVL29: +1787:Src/main.c **** task.i_coef_1 = (float)(*temp2) * 256.0; temp2++; + 474 .loc 2 1787 2 view .LVU178 + 475 .loc 2 1787 29 is_stmt 0 view .LVU179 + 476 0106 C18A ldrh r1, [r0, #22] + 477 0108 07EE101A vmov s14, r1 @ int + 478 .loc 2 1787 21 view .LVU180 + 479 010c B8EE477A vcvt.f32.u32 s14, s14 + ARM GAS /tmp/ccdsDELB.s page 83 + + + 480 .loc 2 1787 37 view .LVU181 + 481 0110 27EE267A vmul.f32 s14, s14, s13 + 482 .loc 2 1787 19 view .LVU182 + 483 0114 83ED097A vstr.32 s14, [r3, #36] + 484 .loc 2 1787 46 is_stmt 1 view .LVU183 + 485 .LVL30: +1788:Src/main.c **** task.p_coef_2 = (float)(*temp2) * 256.0; temp2++; + 486 .loc 2 1788 2 view .LVU184 + 487 .loc 2 1788 29 is_stmt 0 view .LVU185 + 488 0118 018B ldrh r1, [r0, #24] + 489 011a 07EE101A vmov s14, r1 @ int + 490 .loc 2 1788 21 view .LVU186 + 491 011e B8EE477A vcvt.f32.u32 s14, s14 + 492 .loc 2 1788 37 view .LVU187 + 493 0122 27EE267A vmul.f32 s14, s14, s13 + 494 .loc 2 1788 19 view .LVU188 + 495 0126 83ED0C7A vstr.32 s14, [r3, #48] + 496 .loc 2 1788 46 is_stmt 1 view .LVU189 + 497 .LVL31: +1789:Src/main.c **** task.i_coef_2 = (float)(*temp2) * 256.0; temp2++; + 498 .loc 2 1789 2 view .LVU190 + 499 .loc 2 1789 29 is_stmt 0 view .LVU191 + 500 012a 418B ldrh r1, [r0, #26] + 501 012c 07EE901A vmov s15, r1 @ int + 502 .loc 2 1789 21 view .LVU192 + 503 0130 F8EE677A vcvt.f32.u32 s15, s15 + 504 .loc 2 1789 37 view .LVU193 + 505 0134 67EEA67A vmul.f32 s15, s15, s13 + 506 .loc 2 1789 19 view .LVU194 + 507 0138 C3ED0B7A vstr.32 s15, [r3, #44] + 508 .loc 2 1789 46 is_stmt 1 view .LVU195 + 509 .LVL32: +1790:Src/main.c **** +1791:Src/main.c **** TO10_counter = task.dt / 10 - 1; + 510 .loc 2 1791 2 view .LVU196 + 511 .loc 2 1791 25 is_stmt 0 view .LVU197 + 512 013c 084B ldr r3, .L13+16 + 513 013e A3FB0232 umull r3, r2, r3, r2 + 514 0142 D208 lsrs r2, r2, #3 + 515 .loc 2 1791 30 view .LVU198 + 516 0144 013A subs r2, r2, #1 + 517 .loc 2 1791 15 view .LVU199 + 518 0146 074B ldr r3, .L13+20 + 519 0148 1A60 str r2, [r3] +1792:Src/main.c **** } + 520 .loc 2 1792 1 view .LVU200 + 521 014a 02B0 add sp, sp, #8 + 522 .LCFI4: + 523 .cfi_def_cfa_offset 0 + 524 @ sp needed + 525 014c 7047 bx lr + 526 .L14: + 527 014e 00BF .align 3 + 528 .L13: + 529 0150 00000000 .word 0 + 530 0154 00005940 .word 1079574528 + 531 0158 00000000 .word .LANCHOR1 + ARM GAS /tmp/ccdsDELB.s page 84 + + + 532 015c 00008043 .word 1132462080 + 533 0160 CDCCCCCC .word -858993459 + 534 0164 00000000 .word .LANCHOR2 + 535 .cfi_endproc + 536 .LFE1205: + 538 .section .text.PID_Controller_Temp,"ax",%progbits + 539 .align 1 + 540 .syntax unified + 541 .thumb + 542 .thumb_func + 543 .fpu fpv5-d16 + 545 PID_Controller_Temp: + 546 .LVL33: + 547 .LFB1209: +1793:Src/main.c **** +1794:Src/main.c **** void Set_LTEC(uint8_t num, uint16_t DATA) +1795:Src/main.c **** { +1796:Src/main.c **** uint32_t tmp32; +1797:Src/main.c **** switch (num) +1798:Src/main.c **** { +1799:Src/main.c **** case 1: +1800:Src/main.c **** HAL_GPIO_WritePin(DAC_LD1_CS_GPIO_Port, DAC_LD1_CS_Pin, GPIO_PIN_RESET);//Start operation with L +1801:Src/main.c **** //tmp32=0; +1802:Src/main.c **** //while(tmp32<500){tmp32++;} +1803:Src/main.c **** tmp32 = 0; +1804:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi +1805:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC +1806:Src/main.c **** tmp32 = 0; +1807:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w +1808:Src/main.c **** (void) SPI2->DR; +1809:Src/main.c **** break; +1810:Src/main.c **** case 2: +1811:Src/main.c **** HAL_GPIO_WritePin(DAC_LD2_CS_GPIO_Port, DAC_LD2_CS_Pin, GPIO_PIN_RESET);//Start operation with L +1812:Src/main.c **** //tmp32=0; +1813:Src/main.c **** //while(tmp32<500){tmp32++;} +1814:Src/main.c **** tmp32 = 0; +1815:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi +1816:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC +1817:Src/main.c **** tmp32 = 0; +1818:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w +1819:Src/main.c **** (void) SPI6->DR; +1820:Src/main.c **** break; +1821:Src/main.c **** case 3: +1822:Src/main.c **** HAL_GPIO_WritePin(DAC_TEC1_CS_GPIO_Port, DAC_TEC1_CS_Pin, GPIO_PIN_RESET);//Start operation with +1823:Src/main.c **** //tmp32=0; +1824:Src/main.c **** //while(tmp32<500){tmp32++;} +1825:Src/main.c **** tmp32 = 0; +1826:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi +1827:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC +1828:Src/main.c **** tmp32 = 0; +1829:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w +1830:Src/main.c **** (void) SPI2->DR; +1831:Src/main.c **** break; +1832:Src/main.c **** case 4: +1833:Src/main.c **** HAL_GPIO_WritePin(DAC_TEC2_CS_GPIO_Port, DAC_TEC2_CS_Pin, GPIO_PIN_RESET);//Start operation with +1834:Src/main.c **** //tmp32=0; +1835:Src/main.c **** //while(tmp32<500){tmp32++;} + ARM GAS /tmp/ccdsDELB.s page 85 + + +1836:Src/main.c **** tmp32 = 0; +1837:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi +1838:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC +1839:Src/main.c **** tmp32 = 0; +1840:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w +1841:Src/main.c **** (void) SPI6->DR; +1842:Src/main.c **** break; +1843:Src/main.c **** } +1844:Src/main.c **** HAL_GPIO_WritePin(DAC_LD1_CS_GPIO_Port, DAC_LD1_CS_Pin, GPIO_PIN_SET);//End operation with LDAC1 +1845:Src/main.c **** HAL_GPIO_WritePin(DAC_LD2_CS_GPIO_Port, DAC_LD2_CS_Pin, GPIO_PIN_SET);//End operation with LDAC2 +1846:Src/main.c **** HAL_GPIO_WritePin(DAC_TEC1_CS_GPIO_Port, DAC_TEC1_CS_Pin, GPIO_PIN_SET);//End operation with TEC1 +1847:Src/main.c **** HAL_GPIO_WritePin(DAC_TEC2_CS_GPIO_Port, DAC_TEC2_CS_Pin, GPIO_PIN_SET);//End operation with TEC2 +1848:Src/main.c **** } +1849:Src/main.c **** static uint16_t MPhD_T(uint8_t num) +1850:Src/main.c **** { +1851:Src/main.c **** uint16_t P; +1852:Src/main.c **** uint32_t tmp32; +1853:Src/main.c **** HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_RESET);//Prepare conversion +1854:Src/main.c **** HAL_GPIO_WritePin(SPI5_CNV_GPIO_Port, SPI5_CNV_Pin, GPIO_PIN_RESET);//Prepare conversion +1855:Src/main.c **** tmp32=0; +1856:Src/main.c **** while(tmp32<500){tmp32++;} +1857:Src/main.c **** HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET);//Stop acqusition & start conver +1858:Src/main.c **** HAL_GPIO_WritePin(SPI5_CNV_GPIO_Port, SPI5_CNV_Pin, GPIO_PIN_SET);//Stop acqusition & start conver +1859:Src/main.c **** tmp32=0; +1860:Src/main.c **** while(tmp32<500){tmp32++;} +1861:Src/main.c **** if (num==1)//MPD1 +1862:Src/main.c **** { +1863:Src/main.c **** HAL_GPIO_WritePin(ADC_ThrLD1_CS_GPIO_Port, ADC_ThrLD1_CS_Pin, GPIO_PIN_SET); +1864:Src/main.c **** HAL_GPIO_WritePin(ADC_MPD1_CS_GPIO_Port, ADC_MPD1_CS_Pin, GPIO_PIN_RESET); +1865:Src/main.c **** tmp32=0; +1866:Src/main.c **** while(tmp32<500){tmp32++;} +1867:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c +1868:Src/main.c **** LL_SPI_Enable(SPI4);//Enable SPI for MPhD1 ADC +1869:Src/main.c **** tmp32 = 0; +1870:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI4))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w +1871:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for MPhD1 ADC +1872:Src/main.c **** while(tmp32<500){tmp32++;} +1873:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); +1874:Src/main.c **** HAL_GPIO_WritePin(ADC_MPD1_CS_GPIO_Port, ADC_MPD1_CS_Pin, GPIO_PIN_SET); +1875:Src/main.c **** P = LL_SPI_ReceiveData16(SPI4); +1876:Src/main.c **** } +1877:Src/main.c **** else if (num==2)//MPD2 +1878:Src/main.c **** { +1879:Src/main.c **** HAL_GPIO_WritePin(ADC_ThrLD2_CS_GPIO_Port, ADC_ThrLD2_CS_Pin, GPIO_PIN_SET); +1880:Src/main.c **** HAL_GPIO_WritePin(ADC_MPD2_CS_GPIO_Port, ADC_MPD2_CS_Pin, GPIO_PIN_RESET); +1881:Src/main.c **** tmp32=0; +1882:Src/main.c **** while(tmp32<500){tmp32++;} +1883:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c +1884:Src/main.c **** LL_SPI_Enable(SPI5);//Enable SPI for MPhD2 ADC +1885:Src/main.c **** tmp32 = 0; +1886:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI5))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w +1887:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for MPhD2 ADC +1888:Src/main.c **** while(tmp32<500){tmp32++;} +1889:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); +1890:Src/main.c **** HAL_GPIO_WritePin(ADC_MPD2_CS_GPIO_Port, ADC_MPD2_CS_Pin, GPIO_PIN_SET); +1891:Src/main.c **** P = LL_SPI_ReceiveData16(SPI5); +1892:Src/main.c **** } + ARM GAS /tmp/ccdsDELB.s page 86 + + +1893:Src/main.c **** else if (num==3)//ThrLD1 +1894:Src/main.c **** { +1895:Src/main.c **** HAL_GPIO_WritePin(ADC_MPD1_CS_GPIO_Port, ADC_MPD1_CS_Pin, GPIO_PIN_SET); +1896:Src/main.c **** HAL_GPIO_WritePin(ADC_ThrLD1_CS_GPIO_Port, ADC_ThrLD1_CS_Pin, GPIO_PIN_RESET); +1897:Src/main.c **** tmp32=0; +1898:Src/main.c **** while(tmp32<500){tmp32++;} +1899:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c +1900:Src/main.c **** LL_SPI_Enable(SPI4);//Enable SPI for ThrLD1 ADC +1901:Src/main.c **** tmp32 = 0; +1902:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI4))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w +1903:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for ThrLD1 ADC +1904:Src/main.c **** while(tmp32<500){tmp32++;} +1905:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); +1906:Src/main.c **** HAL_GPIO_WritePin(ADC_ThrLD1_CS_GPIO_Port, ADC_ThrLD1_CS_Pin, GPIO_PIN_SET); +1907:Src/main.c **** P = LL_SPI_ReceiveData16(SPI4); +1908:Src/main.c **** } +1909:Src/main.c **** else if (num==4)//ThrLD2 +1910:Src/main.c **** { +1911:Src/main.c **** HAL_GPIO_WritePin(ADC_MPD2_CS_GPIO_Port, ADC_MPD2_CS_Pin, GPIO_PIN_SET); +1912:Src/main.c **** HAL_GPIO_WritePin(ADC_ThrLD2_CS_GPIO_Port, ADC_ThrLD2_CS_Pin, GPIO_PIN_RESET); +1913:Src/main.c **** tmp32=0; +1914:Src/main.c **** while(tmp32<500){tmp32++;} +1915:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c +1916:Src/main.c **** LL_SPI_Enable(SPI5);//Enable SPI for ThrLD2 ADC +1917:Src/main.c **** tmp32 = 0; +1918:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI5))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w +1919:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for ThrLD2 ADC +1920:Src/main.c **** while(tmp32<500){tmp32++;} +1921:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); +1922:Src/main.c **** HAL_GPIO_WritePin(ADC_ThrLD2_CS_GPIO_Port, ADC_ThrLD2_CS_Pin, GPIO_PIN_SET); +1923:Src/main.c **** P = LL_SPI_ReceiveData16(SPI5); +1924:Src/main.c **** } +1925:Src/main.c **** /*float I_LD, Ith, I0m, T0m, Inorm, Tnorm1, Tnorm2, P, T_C, A, Pnorm; +1926:Src/main.c **** +1927:Src/main.c **** Inorm = (float) (65535) / (float) (100); +1928:Src/main.c **** Tnorm1 = (float) (65535) / (float) (50); +1929:Src/main.c **** Tnorm2 = 4; +1930:Src/main.c **** Pnorm = (float)(65535) / (float)(20); +1931:Src/main.c **** I0m = 8.1568;//@4 C - lowest temperature of system +1932:Src/main.c **** T0m = 48.6282; +1933:Src/main.c **** T_C = (float) (T_LD) / Tnorm1 + Tnorm2; +1934:Src/main.c **** +1935:Src/main.c **** Ith = I0m * expf(T_C/T0m); +1936:Src/main.c **** I_LD = (float) (C_LD) / Inorm; +1937:Src/main.c **** +1938:Src/main.c **** if (I_LD > Ith) +1939:Src/main.c **** { +1940:Src/main.c **** A = (float) (2.24276128270098e-07) * T_C * T_C * T_C - (float) (4.73392579025590e-05) * T_C * T_ +1941:Src/main.c **** P = A * (I_LD - Ith) * Pnorm; +1942:Src/main.c **** } +1943:Src/main.c **** else +1944:Src/main.c **** { +1945:Src/main.c **** P = 0; +1946:Src/main.c **** } */ +1947:Src/main.c **** return P; +1948:Src/main.c **** } +1949:Src/main.c **** /*static uint16_t Temp_LD(uint16_t T_LD_before, uint16_t T_LD, uint32_t Timer_before, uint32_t Time + ARM GAS /tmp/ccdsDELB.s page 87 + + +1950:Src/main.c **** { +1951:Src/main.c **** uint16_t Result; +1952:Src/main.c **** // uint8_t randf; +1953:Src/main.c **** +1954:Src/main.c **** randf = 0; +1955:Src/main.c **** for (uint8_t i = 0; i < 32; i++) +1956:Src/main.c **** { +1957:Src/main.c **** randf = ((Timer>>i)&0x0001)^randf; +1958:Src/main.c **** } +1959:Src/main.c **** +1960:Src/main.c **** Result = ((float)(T_LD - T_LD_before))*((float)(1-expf(((float)(Timer_before)-(float)(Timer))/((fl +1961:Src/main.c **** +1962:Src/main.c **** return (uint16_t)(Result); +1963:Src/main.c **** }*/ +1964:Src/main.c **** static uint16_t Get_ADC(uint8_t num) +1965:Src/main.c **** { +1966:Src/main.c **** uint16_t OUT; +1967:Src/main.c **** switch (num) +1968:Src/main.c **** { +1969:Src/main.c **** case 0: +1970:Src/main.c **** HAL_ADC_Start(&hadc1); // Power on +1971:Src/main.c **** break; +1972:Src/main.c **** case 1: +1973:Src/main.c **** HAL_ADC_PollForConversion(&hadc1, 100); // Waiting for conversion +1974:Src/main.c **** OUT = HAL_ADC_GetValue(&hadc1); // Get value adc +1975:Src/main.c **** break; +1976:Src/main.c **** case 2: +1977:Src/main.c **** HAL_ADC_Stop(&hadc1); // Power off +1978:Src/main.c **** break; +1979:Src/main.c **** case 3: +1980:Src/main.c **** HAL_ADC_Start(&hadc3); // Power on +1981:Src/main.c **** break; +1982:Src/main.c **** case 4: +1983:Src/main.c **** HAL_ADC_PollForConversion(&hadc3, 100); // Waiting for conversion +1984:Src/main.c **** OUT = HAL_ADC_GetValue(&hadc3); // Get value adc +1985:Src/main.c **** break; +1986:Src/main.c **** case 5: +1987:Src/main.c **** HAL_ADC_Stop(&hadc3); // Power off +1988:Src/main.c **** break; +1989:Src/main.c **** } +1990:Src/main.c **** return OUT; +1991:Src/main.c **** } +1992:Src/main.c **** uint16_t PID_Controller_Temp(LDx_SetupTypeDef * LDx_curr_setup, LDx_ParamTypeDef * LDx_results, uin +1993:Src/main.c **** { + 548 .loc 2 1993 1 is_stmt 1 view -0 + 549 .cfi_startproc + 550 @ args = 0, pretend = 0, frame = 0 + 551 @ frame_needed = 0, uses_anonymous_args = 0 + 552 @ link register save eliminated. + 553 .loc 2 1993 1 is_stmt 0 view .LVU202 + 554 0000 30B4 push {r4, r5} + 555 .LCFI5: + 556 .cfi_def_cfa_offset 8 + 557 .cfi_offset 4, -8 + 558 .cfi_offset 5, -4 +1994:Src/main.c **** int e_pid; + 559 .loc 2 1994 2 is_stmt 1 view .LVU203 + ARM GAS /tmp/ccdsDELB.s page 88 + + +1995:Src/main.c **** float P_coef_current;//, I_coef_current; + 560 .loc 2 1995 2 view .LVU204 +1996:Src/main.c **** float e_integral; + 561 .loc 2 1996 2 view .LVU205 +1997:Src/main.c **** int x_output; + 562 .loc 2 1997 2 view .LVU206 +1998:Src/main.c **** +1999:Src/main.c **** e_pid = (int) LDx_results->LD_CURR_TEMP - (int) LDx_curr_setup->LD_TEMP; + 563 .loc 2 1999 2 view .LVU207 + 564 .loc 2 1999 28 is_stmt 0 view .LVU208 + 565 0002 0B88 ldrh r3, [r1] + 566 .loc 2 1999 65 view .LVU209 + 567 0004 0488 ldrh r4, [r0] + 568 .loc 2 1999 8 view .LVU210 + 569 0006 1B1B subs r3, r3, r4 + 570 .LVL34: +2000:Src/main.c **** +2001:Src/main.c **** e_integral = LDx_results->e_integral; + 571 .loc 2 2001 2 is_stmt 1 view .LVU211 + 572 .loc 2 2001 13 is_stmt 0 view .LVU212 + 573 0008 D1ED017A vldr.32 s15, [r1, #4] + 574 .LVL35: +2002:Src/main.c **** +2003:Src/main.c **** if((e_pid < 3000) && (e_pid > - 3000)){ + 575 .loc 2 2003 2 is_stmt 1 view .LVU213 + 576 .loc 2 2003 20 is_stmt 0 view .LVU214 + 577 000c 03F6B73C addw ip, r3, #2999 + 578 .loc 2 2003 4 view .LVU215 + 579 0010 41F26E74 movw r4, #5998 + 580 0014 A445 cmp ip, r4 + 581 0016 18D8 bhi .L16 +2004:Src/main.c **** e_integral += LDx_curr_setup->I_coef_temp * (float)(e_pid) * (float)(TO7 - TO7_PID) / (float) 100 + 582 .loc 2 2004 3 is_stmt 1 view .LVU216 + 583 .loc 2 2004 31 is_stmt 0 view .LVU217 + 584 0018 90ED027A vldr.32 s14, [r0, #8] + 585 .loc 2 2004 47 view .LVU218 + 586 001c 06EE903A vmov s13, r3 @ int + 587 0020 F8EEE66A vcvt.f32.s32 s13, s13 + 588 .loc 2 2004 45 view .LVU219 + 589 0024 67EE266A vmul.f32 s13, s14, s13 + 590 .loc 2 2004 76 view .LVU220 + 591 0028 284C ldr r4, .L26 + 592 002a 2468 ldr r4, [r4] + 593 002c 284D ldr r5, .L26+4 + 594 002e 2D68 ldr r5, [r5] + 595 0030 641B subs r4, r4, r5 + 596 0032 07EE104A vmov s14, r4 @ int + 597 .loc 2 2004 64 view .LVU221 + 598 0036 B8EE477A vcvt.f32.u32 s14, s14 + 599 .loc 2 2004 62 view .LVU222 + 600 003a 26EE877A vmul.f32 s14, s13, s14 + 601 .loc 2 2004 87 view .LVU223 + 602 003e 9FED256A vldr.32 s12, .L26+8 + 603 0042 C7EE066A vdiv.f32 s13, s14, s12 + 604 .loc 2 2004 14 view .LVU224 + 605 0046 77EEA67A vadd.f32 s15, s15, s13 + 606 .LVL36: + ARM GAS /tmp/ccdsDELB.s page 89 + + + 607 .L16: +2005:Src/main.c **** } +2006:Src/main.c **** P_coef_current = LDx_curr_setup->P_coef_temp; + 608 .loc 2 2006 2 is_stmt 1 view .LVU225 + 609 .loc 2 2006 17 is_stmt 0 view .LVU226 + 610 004a D0ED016A vldr.32 s13, [r0, #4] + 611 .LVL37: +2007:Src/main.c **** +2008:Src/main.c **** if (e_integral > 32000){ + 612 .loc 2 2008 2 is_stmt 1 view .LVU227 + 613 .loc 2 2008 5 is_stmt 0 view .LVU228 + 614 004e 9FED227A vldr.32 s14, .L26+12 + 615 0052 F4EEC77A vcmpe.f32 s15, s14 + 616 0056 F1EE10FA vmrs APSR_nzcv, FPSCR + 617 005a 09DC bgt .L20 +2009:Src/main.c **** e_integral = 32000; +2010:Src/main.c **** } +2011:Src/main.c **** else if (e_integral < - 32000){ + 618 .loc 2 2011 7 is_stmt 1 view .LVU229 + 619 .loc 2 2011 10 is_stmt 0 view .LVU230 + 620 005c 9FED1F7A vldr.32 s14, .L26+16 + 621 0060 F4EEC77A vcmpe.f32 s15, s14 + 622 0064 F1EE10FA vmrs APSR_nzcv, FPSCR + 623 0068 04D5 bpl .L17 +2012:Src/main.c **** e_integral = -32000; + 624 .loc 2 2012 15 view .LVU231 + 625 006a DFED1C7A vldr.32 s15, .L26+16 + 626 .LVL38: + 627 .loc 2 2012 15 view .LVU232 + 628 006e 01E0 b .L17 + 629 .LVL39: + 630 .L20: +2009:Src/main.c **** e_integral = 32000; + 631 .loc 2 2009 15 view .LVU233 + 632 0070 DFED197A vldr.32 s15, .L26+12 + 633 .LVL40: + 634 .L17: +2013:Src/main.c **** } +2014:Src/main.c **** LDx_results->e_integral = e_integral; + 635 .loc 2 2014 2 is_stmt 1 view .LVU234 + 636 .loc 2 2014 26 is_stmt 0 view .LVU235 + 637 0074 C1ED017A vstr.32 s15, [r1, #4] +2015:Src/main.c **** +2016:Src/main.c **** x_output = 32768 + P_coef_current * e_pid + (int)e_integral;//32768 - P_coef_current * e_pid - (in + 638 .loc 2 2016 2 is_stmt 1 view .LVU236 + 639 .loc 2 2016 36 is_stmt 0 view .LVU237 + 640 0078 07EE103A vmov s14, r3 @ int + 641 007c B8EEC77A vcvt.f32.s32 s14, s14 + 642 0080 27EE267A vmul.f32 s14, s14, s13 + 643 .loc 2 2016 19 view .LVU238 + 644 0084 DFED166A vldr.32 s13, .L26+20 + 645 .LVL41: + 646 .loc 2 2016 19 view .LVU239 + 647 0088 37EE267A vadd.f32 s14, s14, s13 + 648 .loc 2 2016 46 view .LVU240 + 649 008c FDEEE77A vcvt.s32.f32 s15, s15 + 650 .LVL42: + ARM GAS /tmp/ccdsDELB.s page 90 + + + 651 .loc 2 2016 44 view .LVU241 + 652 0090 F8EEE77A vcvt.f32.s32 s15, s15 + 653 0094 77EE877A vadd.f32 s15, s15, s14 + 654 .loc 2 2016 11 view .LVU242 + 655 0098 FDEEE77A vcvt.s32.f32 s15, s15 + 656 009c 17EE900A vmov r0, s15 @ int + 657 .LVL43: +2017:Src/main.c **** +2018:Src/main.c **** if(x_output < 1000){ + 658 .loc 2 2018 2 is_stmt 1 view .LVU243 + 659 .loc 2 2018 4 is_stmt 0 view .LVU244 + 660 00a0 B0F57A7F cmp r0, #1000 + 661 00a4 06DB blt .L22 +2019:Src/main.c **** x_output = 8800; +2020:Src/main.c **** } +2021:Src/main.c **** else if(x_output > 56800){ + 662 .loc 2 2021 7 is_stmt 1 view .LVU245 + 663 .loc 2 2021 9 is_stmt 0 view .LVU246 + 664 00a6 4DF6E053 movw r3, #56800 + 665 .LVL44: + 666 .loc 2 2021 9 view .LVU247 + 667 00aa 9842 cmp r0, r3 + 668 00ac 04DD ble .L18 +2022:Src/main.c **** x_output = 56800; + 669 .loc 2 2022 12 view .LVU248 + 670 00ae 4DF6E050 movw r0, #56800 + 671 .LVL45: + 672 .loc 2 2022 12 view .LVU249 + 673 00b2 01E0 b .L18 + 674 .LVL46: + 675 .L22: +2019:Src/main.c **** x_output = 8800; + 676 .loc 2 2019 12 view .LVU250 + 677 00b4 42F26020 movw r0, #8800 + 678 .LVL47: + 679 .L18: +2023:Src/main.c **** } +2024:Src/main.c **** +2025:Src/main.c **** if (num==2) + 680 .loc 2 2025 2 is_stmt 1 view .LVU251 + 681 .loc 2 2025 5 is_stmt 0 view .LVU252 + 682 00b8 022A cmp r2, #2 + 683 00ba 02D0 beq .L25 + 684 .LVL48: + 685 .L19: +2026:Src/main.c **** TO7_PID = TO7;//Save current time only on 2nd laser +2027:Src/main.c **** +2028:Src/main.c **** return (uint16_t)x_output; + 686 .loc 2 2028 2 is_stmt 1 view .LVU253 +2029:Src/main.c **** } + 687 .loc 2 2029 1 is_stmt 0 view .LVU254 + 688 00bc 80B2 uxth r0, r0 + 689 .LVL49: + 690 .loc 2 2029 1 view .LVU255 + 691 00be 30BC pop {r4, r5} + 692 .LCFI6: + 693 .cfi_remember_state + ARM GAS /tmp/ccdsDELB.s page 91 + + + 694 .cfi_restore 5 + 695 .cfi_restore 4 + 696 .cfi_def_cfa_offset 0 + 697 00c0 7047 bx lr + 698 .LVL50: + 699 .L25: + 700 .LCFI7: + 701 .cfi_restore_state +2026:Src/main.c **** TO7_PID = TO7;//Save current time only on 2nd laser + 702 .loc 2 2026 3 is_stmt 1 view .LVU256 +2026:Src/main.c **** TO7_PID = TO7;//Save current time only on 2nd laser + 703 .loc 2 2026 11 is_stmt 0 view .LVU257 + 704 00c2 024B ldr r3, .L26 + 705 00c4 1A68 ldr r2, [r3] + 706 .LVL51: +2026:Src/main.c **** TO7_PID = TO7;//Save current time only on 2nd laser + 707 .loc 2 2026 11 view .LVU258 + 708 00c6 024B ldr r3, .L26+4 + 709 00c8 1A60 str r2, [r3] + 710 00ca F7E7 b .L19 + 711 .L27: + 712 .align 2 + 713 .L26: + 714 00cc 00000000 .word .LANCHOR3 + 715 00d0 00000000 .word .LANCHOR4 + 716 00d4 0000C842 .word 1120403456 + 717 00d8 0000FA46 .word 1190789120 + 718 00dc 0000FAC6 .word -956694528 + 719 00e0 00000047 .word 1191182336 + 720 .cfi_endproc + 721 .LFE1209: + 723 .section .text.Set_LTEC,"ax",%progbits + 724 .align 1 + 725 .syntax unified + 726 .thumb + 727 .thumb_func + 728 .fpu fpv5-d16 + 730 Set_LTEC: + 731 .LVL52: + 732 .LFB1206: +1795:Src/main.c **** uint32_t tmp32; + 733 .loc 2 1795 1 is_stmt 1 view -0 + 734 .cfi_startproc + 735 @ args = 0, pretend = 0, frame = 0 + 736 @ frame_needed = 0, uses_anonymous_args = 0 +1795:Src/main.c **** uint32_t tmp32; + 737 .loc 2 1795 1 is_stmt 0 view .LVU260 + 738 0000 38B5 push {r3, r4, r5, lr} + 739 .LCFI8: + 740 .cfi_def_cfa_offset 16 + 741 .cfi_offset 3, -16 + 742 .cfi_offset 4, -12 + 743 .cfi_offset 5, -8 + 744 .cfi_offset 14, -4 + 745 0002 0C46 mov r4, r1 +1796:Src/main.c **** switch (num) + 746 .loc 2 1796 2 is_stmt 1 view .LVU261 + ARM GAS /tmp/ccdsDELB.s page 92 + + +1797:Src/main.c **** { + 747 .loc 2 1797 2 view .LVU262 + 748 0004 0138 subs r0, r0, #1 + 749 .LVL53: +1797:Src/main.c **** { + 750 .loc 2 1797 2 is_stmt 0 view .LVU263 + 751 0006 0328 cmp r0, #3 + 752 0008 23D8 bhi .L29 + 753 000a DFE800F0 tbb [pc, r0] + 754 .L31: + 755 000e 02 .byte (.L34-.L31)/2 + 756 000f 3B .byte (.L33-.L31)/2 + 757 0010 5B .byte (.L32-.L31)/2 + 758 0011 7C .byte (.L30-.L31)/2 + 759 .p2align 1 + 760 .L34: +1800:Src/main.c **** //tmp32=0; + 761 .loc 2 1800 4 is_stmt 1 view .LVU264 + 762 0012 0022 movs r2, #0 + 763 0014 4FF48041 mov r1, #16384 + 764 .LVL54: +1800:Src/main.c **** //tmp32=0; + 765 .loc 2 1800 4 is_stmt 0 view .LVU265 + 766 0018 4B48 ldr r0, .L60 + 767 001a FFF7FEFF bl HAL_GPIO_WritePin + 768 .LVL55: +1803:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi + 769 .loc 2 1803 4 is_stmt 1 view .LVU266 +1804:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 770 .loc 2 1804 4 view .LVU267 +1803:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi + 771 .loc 2 1803 10 is_stmt 0 view .LVU268 + 772 001e 0022 movs r2, #0 + 773 .LVL56: + 774 .L35: +1804:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 775 .loc 2 1804 9 is_stmt 1 discriminator 1 view .LVU269 + 776 .LBB301: + 777 .LBI301: + 778 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @file stm32f7xx_ll_spi.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Header file of SPI LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + ARM GAS /tmp/ccdsDELB.s page 93 + + + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #ifndef STM32F7xx_LL_SPI_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define STM32F7xx_LL_SPI_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined (SPI1) || defined (SPI2) || defined (SPI3) || defined (SPI4) || defined (SPI5) || defin + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL SPI + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Private macros ------------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported types ------------------------------------------------------------*/ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined(USE_FULL_LL_DRIVER) + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_ES_INIT SPI Exported Init structure + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief SPI Init structures definition + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** typedef struct + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t TransferDirection; /*!< Specifies the SPI unidirectional or bidirectional data mod + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_TRANSFER_M + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t Mode; /*!< Specifies the SPI mode (Master/Slave). + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_MODE. + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t DataWidth; /*!< Specifies the SPI data width. + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_DATAWIDTH. + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t ClockPolarity; /*!< Specifies the serial clock steady state. + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_POLARITY. + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + ARM GAS /tmp/ccdsDELB.s page 94 + + + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t ClockPhase; /*!< Specifies the clock active edge for the bit capture. + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_PHASE. + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t NSS; /*!< Specifies whether the NSS signal is managed by hardware (N + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_NSS_MODE. + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t BaudRate; /*!< Specifies the BaudRate prescaler value which will be used + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_BAUDRATEPR + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** @note The communication clock is derived from the master c + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t BitOrder; /*!< Specifies whether data transfers start from MSB or LSB bit + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_BIT_ORDER. + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not. + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_CRC_CALCUL + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t CRCPoly; /*!< Specifies the polynomial used for the CRC calculation. + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter must be a number between Min_Data = 0x00 an + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } LL_SPI_InitTypeDef; + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif /* USE_FULL_LL_DRIVER */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported constants --------------------------------------------------------*/ + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_Exported_Constants SPI Exported Constants + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_GET_FLAG Get Flags Defines + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Flags defines which can be used with LL_SPI_ReadReg function + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_RXNE SPI_SR_RXNE /*!< Rx buffer not empty flag + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_TXE SPI_SR_TXE /*!< Tx buffer empty flag + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_BSY SPI_SR_BSY /*!< Busy flag + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_CRCERR SPI_SR_CRCERR /*!< CRC error flag + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_MODF SPI_SR_MODF /*!< Mode fault flag + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_OVR SPI_SR_OVR /*!< Overrun flag + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_FRE SPI_SR_FRE /*!< TI mode frame format erro + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + ARM GAS /tmp/ccdsDELB.s page 95 + + + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_IT IT Defines + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CR2_RXNEIE SPI_CR2_RXNEIE /*!< Rx buffer not empty inter + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CR2_TXEIE SPI_CR2_TXEIE /*!< Tx buffer empty interrupt + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CR2_ERRIE SPI_CR2_ERRIE /*!< Error interrupt enable + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_MODE Operation Mode + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI) /*!< Master configuratio + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_MODE_SLAVE 0x00000000U /*!< Slave configuration + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_PROTOCOL Serial Protocol + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_PROTOCOL_MOTOROLA 0x00000000U /*!< Motorola mode. Used as de + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_PROTOCOL_TI (SPI_CR2_FRF) /*!< TI mode + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_PHASE Clock Phase + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_PHASE_1EDGE 0x00000000U /*!< First clock transition is + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_PHASE_2EDGE (SPI_CR1_CPHA) /*!< Second clock transition i + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_POLARITY Clock Polarity + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_POLARITY_LOW 0x00000000U /*!< Clock to 0 when idle */ + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_POLARITY_HIGH (SPI_CR1_CPOL) /*!< Clock to 1 when idle */ + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_BAUDRATEPRESCALER Baud Rate Prescaler + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV2 0x00000000U /*!< Baud + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV4 (SPI_CR1_BR_0) /*!< Baud + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV8 (SPI_CR1_BR_1) /*!< Baud + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV16 (SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< Baud + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV32 (SPI_CR1_BR_2) /*!< Baud + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV64 (SPI_CR1_BR_2 | SPI_CR1_BR_0) /*!< Baud + ARM GAS /tmp/ccdsDELB.s page 96 + + + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV128 (SPI_CR1_BR_2 | SPI_CR1_BR_1) /*!< Baud + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV256 (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< Baud + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_BIT_ORDER Transmission Bit Order + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_LSB_FIRST (SPI_CR1_LSBFIRST) /*!< Data is transmitted/recei + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_MSB_FIRST 0x00000000U /*!< Data is transmitted/recei + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_TRANSFER_MODE Transfer Mode + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_FULL_DUPLEX 0x00000000U /*!< Full-Duplex mo + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SIMPLEX_RX (SPI_CR1_RXONLY) /*!< Simplex Rx mod + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_HALF_DUPLEX_RX (SPI_CR1_BIDIMODE) /*!< Half-Duplex Rx + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_HALF_DUPLEX_TX (SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE) /*!< Half-Duplex Tx + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_NSS_MODE Slave Select Pin Mode + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_NSS_SOFT (SPI_CR1_SSM) /*!< NSS managed inter + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_NSS_HARD_INPUT 0x00000000U /*!< NSS pin used in I + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_NSS_HARD_OUTPUT (((uint32_t)SPI_CR2_SSOE << 16U)) /*!< NSS pin used in O + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_DATAWIDTH Datawidth + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_4BIT (SPI_CR2_DS_0 | SPI_CR2_DS_1) + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_5BIT (SPI_CR2_DS_2) + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_6BIT (SPI_CR2_DS_2 | SPI_CR2_DS_0) + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_7BIT (SPI_CR2_DS_2 | SPI_CR2_DS_1) + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_8BIT (SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0) + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_9BIT (SPI_CR2_DS_3) + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_10BIT (SPI_CR2_DS_3 | SPI_CR2_DS_0) + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_11BIT (SPI_CR2_DS_3 | SPI_CR2_DS_1) + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_12BIT (SPI_CR2_DS_3 | SPI_CR2_DS_1 | SPI_CR2_DS_0) + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_13BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2) + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_14BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_0) + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_15BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1) + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_16BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined(USE_FULL_LL_DRIVER) + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + ARM GAS /tmp/ccdsDELB.s page 97 + + + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_CRC_CALCULATION CRC Calculation + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CRCCALCULATION_DISABLE 0x00000000U /*!< CRC calculation disabled + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CRCCALCULATION_ENABLE (SPI_CR1_CRCEN) /*!< CRC calculation enabled + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif /* USE_FULL_LL_DRIVER */ + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_CRC_LENGTH CRC Length + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CRC_8BIT 0x00000000U /*!< 8-bit CRC length */ + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CRC_16BIT (SPI_CR1_CRCL) /*!< 16-bit CRC length */ + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_RX_FIFO_TH RX FIFO Threshold + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_TH_HALF 0x00000000U /*!< RXNE event is generated i + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_TH_QUARTER (SPI_CR2_FRXTH) /*!< RXNE event is generated i + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_RX_FIFO RX FIFO Level + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_EMPTY 0x00000000U /*!< FIFO reception em + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_QUARTER_FULL (SPI_SR_FRLVL_0) /*!< FIFO reception 1/ + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_HALF_FULL (SPI_SR_FRLVL_1) /*!< FIFO reception 1/ + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_FULL (SPI_SR_FRLVL_1 | SPI_SR_FRLVL_0) /*!< FIFO reception fu + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_TX_FIFO TX FIFO Level + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_TX_FIFO_EMPTY 0x00000000U /*!< FIFO transmission + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_TX_FIFO_QUARTER_FULL (SPI_SR_FTLVL_0) /*!< FIFO transmission + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_TX_FIFO_HALF_FULL (SPI_SR_FTLVL_1) /*!< FIFO transmission + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_TX_FIFO_FULL (SPI_SR_FTLVL_1 | SPI_SR_FTLVL_0) /*!< FIFO transmission + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_DMA_PARITY DMA Parity + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DMA_PARITY_EVEN 0x00000000U /*!< Select DMA parity Even */ + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DMA_PARITY_ODD 0x00000001U /*!< Select DMA parity Odd */ + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + ARM GAS /tmp/ccdsDELB.s page 98 + + + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported macro ------------------------------------------------------------*/ + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_Exported_Macros SPI Exported Macros + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EM_WRITE_READ Common Write and read registers Macros + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Write a value in SPI register + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __INSTANCE__ SPI Instance + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __REG__ Register to be written + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __VALUE__ Value to be written in the register + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Read a value in SPI register + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __INSTANCE__ SPI Instance + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __REG__ Register to be read + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Register value + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported functions --------------------------------------------------------*/ + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_Exported_Functions SPI Exported Functions + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_Configuration Configuration + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable SPI peripheral + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 SPE LL_SPI_Enable + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_Enable(SPI_TypeDef *SPIx) + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + ARM GAS /tmp/ccdsDELB.s page 99 + + + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR1, SPI_CR1_SPE); + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable SPI peripheral + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note When disabling the SPI, follow the procedure described in the Reference Manual. + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 SPE LL_SPI_Disable + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_Disable(SPI_TypeDef *SPIx) + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE); + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if SPI peripheral is enabled + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 SPE LL_SPI_IsEnabled + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabled(SPI_TypeDef *SPIx) + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR1, SPI_CR1_SPE) == (SPI_CR1_SPE)) ? 1UL : 0UL); + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set SPI operation mode to Master or Slave + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 MSTR LL_SPI_SetMode\n + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 SSI LL_SPI_SetMode + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param Mode This parameter can be one of the following values: + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MODE_MASTER + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MODE_SLAVE + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetMode(SPI_TypeDef *SPIx, uint32_t Mode) + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI, Mode); + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get SPI operation mode (Master or Slave) + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 MSTR LL_SPI_GetMode\n + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 SSI LL_SPI_GetMode + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MODE_MASTER + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MODE_SLAVE + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetMode(SPI_TypeDef *SPIx) + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI)); + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + ARM GAS /tmp/ccdsDELB.s page 100 + + + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set serial protocol used + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 FRF LL_SPI_SetStandard + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param Standard This parameter can be one of the following values: + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PROTOCOL_MOTOROLA + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PROTOCOL_TI + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard) + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_FRF, Standard); + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get serial protocol used + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 FRF LL_SPI_GetStandard + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PROTOCOL_MOTOROLA + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PROTOCOL_TI + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetStandard(SPI_TypeDef *SPIx) + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_FRF)); + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set clock phase + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * This bit is not used in SPI TI mode. + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CPHA LL_SPI_SetClockPhase + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param ClockPhase This parameter can be one of the following values: + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PHASE_1EDGE + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PHASE_2EDGE + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetClockPhase(SPI_TypeDef *SPIx, uint32_t ClockPhase) + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_CPHA, ClockPhase); + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get clock phase + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CPHA LL_SPI_GetClockPhase + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PHASE_1EDGE + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PHASE_2EDGE + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetClockPhase(SPI_TypeDef *SPIx) + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPHA)); + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + ARM GAS /tmp/ccdsDELB.s page 101 + + + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set clock polarity + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * This bit is not used in SPI TI mode. + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CPOL LL_SPI_SetClockPolarity + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param ClockPolarity This parameter can be one of the following values: + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_POLARITY_LOW + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_POLARITY_HIGH + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity) + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_CPOL, ClockPolarity); + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get clock polarity + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CPOL LL_SPI_GetClockPolarity + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_POLARITY_LOW + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_POLARITY_HIGH + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetClockPolarity(SPI_TypeDef *SPIx) + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPOL)); + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set baud rate prescaler + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note These bits should not be changed when communication is ongoing. SPI BaudRate = fPCLK/Pr + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 BR LL_SPI_SetBaudRatePrescaler + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param BaudRate This parameter can be one of the following values: + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2 + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4 + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8 + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16 + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32 + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64 + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256 + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetBaudRatePrescaler(SPI_TypeDef *SPIx, uint32_t BaudRate) + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_BR, BaudRate); + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get baud rate prescaler + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 BR LL_SPI_GetBaudRatePrescaler + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2 + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4 + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8 + ARM GAS /tmp/ccdsDELB.s page 102 + + + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16 + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32 + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64 + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128 + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256 + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetBaudRatePrescaler(SPI_TypeDef *SPIx) + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_BR)); + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set transfer bit order + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. This bit is not used in S + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 LSBFIRST LL_SPI_SetTransferBitOrder + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param BitOrder This parameter can be one of the following values: + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_LSB_FIRST + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MSB_FIRST + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetTransferBitOrder(SPI_TypeDef *SPIx, uint32_t BitOrder) + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_LSBFIRST, BitOrder); + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get transfer bit order + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 LSBFIRST LL_SPI_GetTransferBitOrder + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_LSB_FIRST + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MSB_FIRST + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetTransferBitOrder(SPI_TypeDef *SPIx) + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_LSBFIRST)); + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set transfer direction mode + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note For Half-Duplex mode, Rx Direction is set by default. + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * In master mode, the MOSI pin is used and in slave mode, the MISO pin is used for Half-D + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 RXONLY LL_SPI_SetTransferDirection\n + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 BIDIMODE LL_SPI_SetTransferDirection\n + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 BIDIOE LL_SPI_SetTransferDirection + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param TransferDirection This parameter can be one of the following values: + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_FULL_DUPLEX + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_SIMPLEX_RX + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_HALF_DUPLEX_RX + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_HALF_DUPLEX_TX + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetTransferDirection(SPI_TypeDef *SPIx, uint32_t TransferDirection) + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE, TransferDirection); + ARM GAS /tmp/ccdsDELB.s page 103 + + + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get transfer direction mode + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 RXONLY LL_SPI_GetTransferDirection\n + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 BIDIMODE LL_SPI_GetTransferDirection\n + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 BIDIOE LL_SPI_GetTransferDirection + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_FULL_DUPLEX + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_SIMPLEX_RX + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_HALF_DUPLEX_RX + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_HALF_DUPLEX_TX + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetTransferDirection(SPI_TypeDef *SPIx) + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE)); + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set frame data width + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 DS LL_SPI_SetDataWidth + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param DataWidth This parameter can be one of the following values: + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_4BIT + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_5BIT + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_6BIT + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_7BIT + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_8BIT + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_9BIT + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_10BIT + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_11BIT + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_12BIT + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_13BIT + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_14BIT + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_15BIT + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_16BIT + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetDataWidth(SPI_TypeDef *SPIx, uint32_t DataWidth) + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_DS, DataWidth); + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get frame data width + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 DS LL_SPI_GetDataWidth + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_4BIT + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_5BIT + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_6BIT + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_7BIT + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_8BIT + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_9BIT + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_10BIT + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_11BIT + ARM GAS /tmp/ccdsDELB.s page 104 + + + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_12BIT + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_13BIT + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_14BIT + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_15BIT + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_16BIT + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetDataWidth(SPI_TypeDef *SPIx) + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_DS)); + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set threshold of RXFIFO that triggers an RXNE event + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 FRXTH LL_SPI_SetRxFIFOThreshold + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param Threshold This parameter can be one of the following values: + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_TH_HALF + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_TH_QUARTER + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetRxFIFOThreshold(SPI_TypeDef *SPIx, uint32_t Threshold) + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_FRXTH, Threshold); + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get threshold of RXFIFO that triggers an RXNE event + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 FRXTH LL_SPI_GetRxFIFOThreshold + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_TH_HALF + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_TH_QUARTER + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetRxFIFOThreshold(SPI_TypeDef *SPIx) + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_FRXTH)); + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_CRC_Management CRC Management + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable CRC + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCEN LL_SPI_EnableCRC + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableCRC(SPI_TypeDef *SPIx) + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR1, SPI_CR1_CRCEN); + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + ARM GAS /tmp/ccdsDELB.s page 105 + + + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable CRC + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCEN LL_SPI_DisableCRC + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableCRC(SPI_TypeDef *SPIx) + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR1, SPI_CR1_CRCEN); + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if CRC is enabled + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCEN LL_SPI_IsEnabledCRC + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledCRC(SPI_TypeDef *SPIx) + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR1, SPI_CR1_CRCEN) == (SPI_CR1_CRCEN)) ? 1UL : 0UL); + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set CRC Length + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCL LL_SPI_SetCRCWidth + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param CRCLength This parameter can be one of the following values: + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_CRC_8BIT + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_CRC_16BIT + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetCRCWidth(SPI_TypeDef *SPIx, uint32_t CRCLength) + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_CRCL, CRCLength); + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get CRC Length + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCL LL_SPI_GetCRCWidth + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_CRC_8BIT + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_CRC_16BIT + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetCRCWidth(SPI_TypeDef *SPIx) + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CRCL)); + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set CRCNext to transfer CRC on the line + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit has to be written as soon as the last data is written in the SPIx_DR register. + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCNEXT LL_SPI_SetCRCNext + ARM GAS /tmp/ccdsDELB.s page 106 + + + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetCRCNext(SPI_TypeDef *SPIx) + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR1, SPI_CR1_CRCNEXT); + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set polynomial for CRC calculation + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CRCPR CRCPOLY LL_SPI_SetCRCPolynomial + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param CRCPoly This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFF + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetCRCPolynomial(SPI_TypeDef *SPIx, uint32_t CRCPoly) + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** WRITE_REG(SPIx->CRCPR, (uint16_t)CRCPoly); + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get polynomial for CRC calculation + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CRCPR CRCPOLY LL_SPI_GetCRCPolynomial + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetCRCPolynomial(SPI_TypeDef *SPIx) + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_REG(SPIx->CRCPR)); + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get Rx CRC + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll RXCRCR RXCRC LL_SPI_GetRxCRC + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetRxCRC(SPI_TypeDef *SPIx) + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_REG(SPIx->RXCRCR)); + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get Tx CRC + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll TXCRCR TXCRC LL_SPI_GetTxCRC + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetTxCRC(SPI_TypeDef *SPIx) + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_REG(SPIx->TXCRCR)); + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + ARM GAS /tmp/ccdsDELB.s page 107 + + + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_NSS_Management Slave Select Pin Management + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set NSS mode + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note LL_SPI_NSS_SOFT Mode is not used in SPI TI mode. + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 SSM LL_SPI_SetNSSMode\n + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 SSOE LL_SPI_SetNSSMode + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param NSS This parameter can be one of the following values: + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_SOFT + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_HARD_INPUT + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_HARD_OUTPUT + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetNSSMode(SPI_TypeDef *SPIx, uint32_t NSS) + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_SSM, NSS); + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_SSOE, ((uint32_t)(NSS >> 16U))); + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get NSS mode + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 SSM LL_SPI_GetNSSMode\n + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 SSOE LL_SPI_GetNSSMode + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_SOFT + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_HARD_INPUT + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_HARD_OUTPUT + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetNSSMode(SPI_TypeDef *SPIx) + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t Ssm = (READ_BIT(SPIx->CR1, SPI_CR1_SSM)); + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t Ssoe = (READ_BIT(SPIx->CR2, SPI_CR2_SSOE) << 16U); + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (Ssm | Ssoe); + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable NSS pulse management + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. This bit is not used in S + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 NSSP LL_SPI_EnableNSSPulseMgt + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableNSSPulseMgt(SPI_TypeDef *SPIx) + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_NSSP); + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable NSS pulse management + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. This bit is not used in S + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 NSSP LL_SPI_DisableNSSPulseMgt + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 108 + + + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableNSSPulseMgt(SPI_TypeDef *SPIx) + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_NSSP); + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if NSS pulse is enabled + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. This bit is not used in S + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 NSSP LL_SPI_IsEnabledNSSPulse + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledNSSPulse(SPI_TypeDef *SPIx) + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_NSSP) == (SPI_CR2_NSSP)) ? 1UL : 0UL); + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_FLAG_Management FLAG Management + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if Rx buffer is not empty + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR RXNE LL_SPI_IsActiveFlag_RXNE + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_RXNE(SPI_TypeDef *SPIx) + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_RXNE) == (SPI_SR_RXNE)) ? 1UL : 0UL); + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if Tx buffer is empty + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR TXE LL_SPI_IsActiveFlag_TXE + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_TXE(SPI_TypeDef *SPIx) + 779 .loc 4 916 26 discriminator 1 view .LVU270 + 780 .LBB302: + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_TXE) == (SPI_SR_TXE)) ? 1UL : 0UL); + 781 .loc 4 918 3 discriminator 1 view .LVU271 + 782 .loc 4 918 12 is_stmt 0 discriminator 1 view .LVU272 + 783 0020 4A4B ldr r3, .L60+4 + 784 0022 9B68 ldr r3, [r3, #8] + 785 .loc 4 918 66 discriminator 1 view .LVU273 + 786 0024 13F0020F tst r3, #2 + 787 0028 04D1 bne .L36 + 788 .LVL57: + 789 .loc 4 918 66 discriminator 1 view .LVU274 + ARM GAS /tmp/ccdsDELB.s page 109 + + + 790 .LBE302: + 791 .LBE301: +1804:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 792 .loc 2 1804 42 view .LVU275 + 793 002a B2F5FA7F cmp r2, #500 + 794 002e 01D8 bhi .L36 +1804:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 795 .loc 2 1804 59 is_stmt 1 discriminator 3 view .LVU276 +1804:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 796 .loc 2 1804 64 is_stmt 0 discriminator 3 view .LVU277 + 797 0030 0132 adds r2, r2, #1 + 798 .LVL58: +1804:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 799 .loc 2 1804 64 discriminator 3 view .LVU278 + 800 0032 F5E7 b .L35 + 801 .L36: +1805:Src/main.c **** tmp32 = 0; + 802 .loc 2 1805 4 is_stmt 1 view .LVU279 + 803 .LVL59: + 804 .LBB303: + 805 .LBI303: + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get CRC error flag + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR CRCERR LL_SPI_IsActiveFlag_CRCERR + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_CRCERR(SPI_TypeDef *SPIx) + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_CRCERR) == (SPI_SR_CRCERR)) ? 1UL : 0UL); + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get mode fault error flag + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR MODF LL_SPI_IsActiveFlag_MODF + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_MODF(SPI_TypeDef *SPIx) + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_MODF) == (SPI_SR_MODF)) ? 1UL : 0UL); + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get overrun error flag + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR OVR LL_SPI_IsActiveFlag_OVR + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_OVR(SPI_TypeDef *SPIx) + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_OVR) == (SPI_SR_OVR)) ? 1UL : 0UL); + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + ARM GAS /tmp/ccdsDELB.s page 110 + + + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get busy flag + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note The BSY flag is cleared under any one of the following conditions: + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * -When the SPI is correctly disabled + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * -When a fault is detected in Master mode (MODF bit set to 1) + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * -In Master mode, when it finishes a data transmission and no new data is ready to be + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * sent + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * -In Slave mode, when the BSY flag is set to '0' for at least one SPI clock cycle between + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * each data transfer. + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR BSY LL_SPI_IsActiveFlag_BSY + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_BSY(SPI_TypeDef *SPIx) + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_BSY) == (SPI_SR_BSY)) ? 1UL : 0UL); + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get frame format error flag + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR FRE LL_SPI_IsActiveFlag_FRE + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_FRE(SPI_TypeDef *SPIx) + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_FRE) == (SPI_SR_FRE)) ? 1UL : 0UL); + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get FIFO reception Level + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR FRLVL LL_SPI_GetRxFIFOLevel + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_EMPTY + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_QUARTER_FULL + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_HALF_FULL + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_FULL + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetRxFIFOLevel(SPI_TypeDef *SPIx) + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->SR, SPI_SR_FRLVL)); + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get FIFO Transmission Level +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR FTLVL LL_SPI_GetTxFIFOLevel +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_TX_FIFO_EMPTY +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_TX_FIFO_QUARTER_FULL +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_TX_FIFO_HALF_FULL +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_TX_FIFO_FULL +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetTxFIFOLevel(SPI_TypeDef *SPIx) +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->SR, SPI_SR_FTLVL)); +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + ARM GAS /tmp/ccdsDELB.s page 111 + + +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Clear CRC error flag +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR CRCERR LL_SPI_ClearFlag_CRCERR +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_ClearFlag_CRCERR(SPI_TypeDef *SPIx) +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->SR, SPI_SR_CRCERR); +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Clear mode fault error flag +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note Clearing this flag is done by a read access to the SPIx_SR +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * register followed by a write access to the SPIx_CR1 register +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR MODF LL_SPI_ClearFlag_MODF +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_ClearFlag_MODF(SPI_TypeDef *SPIx) +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __IO uint32_t tmpreg_sr; +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** tmpreg_sr = SPIx->SR; +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** (void) tmpreg_sr; +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE); +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Clear overrun error flag +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note Clearing this flag is done by a read access to the SPIx_DR +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * register followed by a read access to the SPIx_SR register +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR OVR LL_SPI_ClearFlag_OVR +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_ClearFlag_OVR(SPI_TypeDef *SPIx) +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __IO uint32_t tmpreg; +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** tmpreg = SPIx->DR; +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** (void) tmpreg; +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** tmpreg = SPIx->SR; +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** (void) tmpreg; +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Clear frame format error flag +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note Clearing this flag is done by reading SPIx_SR register +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR FRE LL_SPI_ClearFlag_FRE +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_ClearFlag_FRE(SPI_TypeDef *SPIx) +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __IO uint32_t tmpreg; +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** tmpreg = SPIx->SR; +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** (void) tmpreg; + ARM GAS /tmp/ccdsDELB.s page 112 + + +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_IT_Management Interrupt Management +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable error interrupt +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit controls the generation of an interrupt when an error condition occurs (CRCERR +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 ERRIE LL_SPI_EnableIT_ERR +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableIT_ERR(SPI_TypeDef *SPIx) +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_ERRIE); +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable Rx buffer not empty interrupt +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXNEIE LL_SPI_EnableIT_RXNE +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableIT_RXNE(SPI_TypeDef *SPIx) +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_RXNEIE); +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable Tx buffer empty interrupt +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXEIE LL_SPI_EnableIT_TXE +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableIT_TXE(SPI_TypeDef *SPIx) +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_TXEIE); +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable error interrupt +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit controls the generation of an interrupt when an error condition occurs (CRCERR +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 ERRIE LL_SPI_DisableIT_ERR +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableIT_ERR(SPI_TypeDef *SPIx) +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_ERRIE); +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + ARM GAS /tmp/ccdsDELB.s page 113 + + +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable Rx buffer not empty interrupt +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXNEIE LL_SPI_DisableIT_RXNE +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableIT_RXNE(SPI_TypeDef *SPIx) +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_RXNEIE); +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable Tx buffer empty interrupt +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXEIE LL_SPI_DisableIT_TXE +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableIT_TXE(SPI_TypeDef *SPIx) +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_TXEIE); +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if error interrupt is enabled +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 ERRIE LL_SPI_IsEnabledIT_ERR +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_ERR(SPI_TypeDef *SPIx) +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_ERRIE) == (SPI_CR2_ERRIE)) ? 1UL : 0UL); +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if Rx buffer not empty interrupt is enabled +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXNEIE LL_SPI_IsEnabledIT_RXNE +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_RXNE(SPI_TypeDef *SPIx) +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_RXNEIE) == (SPI_CR2_RXNEIE)) ? 1UL : 0UL); +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if Tx buffer empty interrupt +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXEIE LL_SPI_IsEnabledIT_TXE +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_TXE(SPI_TypeDef *SPIx) +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_TXEIE) == (SPI_CR2_TXEIE)) ? 1UL : 0UL); +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + ARM GAS /tmp/ccdsDELB.s page 114 + + +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_DMA_Management DMA Management +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable DMA Rx +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXDMAEN LL_SPI_EnableDMAReq_RX +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableDMAReq_RX(SPI_TypeDef *SPIx) +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_RXDMAEN); +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable DMA Rx +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXDMAEN LL_SPI_DisableDMAReq_RX +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableDMAReq_RX(SPI_TypeDef *SPIx) +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_RXDMAEN); +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if DMA Rx is enabled +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXDMAEN LL_SPI_IsEnabledDMAReq_RX +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_RX(SPI_TypeDef *SPIx) +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_RXDMAEN) == (SPI_CR2_RXDMAEN)) ? 1UL : 0UL); +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable DMA Tx +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXDMAEN LL_SPI_EnableDMAReq_TX +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableDMAReq_TX(SPI_TypeDef *SPIx) +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_TXDMAEN); +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable DMA Tx +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXDMAEN LL_SPI_DisableDMAReq_TX +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableDMAReq_TX(SPI_TypeDef *SPIx) +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + ARM GAS /tmp/ccdsDELB.s page 115 + + +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_TXDMAEN); +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if DMA Tx is enabled +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXDMAEN LL_SPI_IsEnabledDMAReq_TX +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_TX(SPI_TypeDef *SPIx) +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_TXDMAEN) == (SPI_CR2_TXDMAEN)) ? 1UL : 0UL); +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set parity of Last DMA reception +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 LDMARX LL_SPI_SetDMAParity_RX +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param Parity This parameter can be one of the following values: +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_ODD +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_EVEN +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetDMAParity_RX(SPI_TypeDef *SPIx, uint32_t Parity) +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_LDMARX, (Parity << SPI_CR2_LDMARX_Pos)); +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get parity configuration for Last DMA reception +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 LDMARX LL_SPI_GetDMAParity_RX +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_ODD +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_EVEN +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetDMAParity_RX(SPI_TypeDef *SPIx) +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_LDMARX) >> SPI_CR2_LDMARX_Pos); +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set parity of Last DMA transmission +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 LDMATX LL_SPI_SetDMAParity_TX +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param Parity This parameter can be one of the following values: +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_ODD +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_EVEN +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetDMAParity_TX(SPI_TypeDef *SPIx, uint32_t Parity) +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_LDMATX, (Parity << SPI_CR2_LDMATX_Pos)); +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get parity configuration for Last DMA transmission + ARM GAS /tmp/ccdsDELB.s page 116 + + +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 LDMATX LL_SPI_GetDMAParity_TX +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_ODD +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_EVEN +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetDMAParity_TX(SPI_TypeDef *SPIx) +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_LDMATX) >> SPI_CR2_LDMATX_Pos); +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get the data register address used for DMA transfer +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll DR DR LL_SPI_DMA_GetRegAddr +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Address of data register +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_DMA_GetRegAddr(SPI_TypeDef *SPIx) +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t) &(SPIx->DR); +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_DATA_Management DATA Management +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Read 8-Bits in the data register +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll DR DR LL_SPI_ReceiveData8 +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFF +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint8_t LL_SPI_ReceiveData8(SPI_TypeDef *SPIx) +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (*((__IO uint8_t *)&SPIx->DR)); +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Read 16-Bits in the data register +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll DR DR LL_SPI_ReceiveData16 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFFFF +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint16_t LL_SPI_ReceiveData16(SPI_TypeDef *SPIx) +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint16_t)(READ_REG(SPIx->DR)); +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Write 8-Bits in the data register +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll DR DR LL_SPI_TransmitData8 +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param TxData Value between Min_Data=0x00 and Max_Data=0xFF + ARM GAS /tmp/ccdsDELB.s page 117 + + +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_TransmitData8(SPI_TypeDef *SPIx, uint8_t TxData) +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined (__GNUC__) +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __IO uint8_t *spidr = ((__IO uint8_t *)&SPIx->DR); +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** *spidr = TxData; +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #else +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** *((__IO uint8_t *)&SPIx->DR) = TxData; +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif /* __GNUC__ */ +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Write 16-Bits in the data register +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll DR DR LL_SPI_TransmitData16 +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param TxData Value between Min_Data=0x00 and Max_Data=0xFFFF +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData) + 806 .loc 4 1373 22 view .LVU280 + 807 .LBB304: +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined (__GNUC__) +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __IO uint16_t *spidr = ((__IO uint16_t *)&SPIx->DR); + 808 .loc 4 1376 3 view .LVU281 +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** *spidr = TxData; + 809 .loc 4 1377 3 view .LVU282 + 810 .loc 4 1377 10 is_stmt 0 view .LVU283 + 811 0034 454B ldr r3, .L60+4 + 812 0036 9C81 strh r4, [r3, #12] @ movhi + 813 .LVL60: + 814 .loc 4 1377 10 view .LVU284 + 815 .LBE304: + 816 .LBE303: +1806:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w + 817 .loc 2 1806 4 is_stmt 1 view .LVU285 +1807:Src/main.c **** (void) SPI2->DR; + 818 .loc 2 1807 4 view .LVU286 +1806:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w + 819 .loc 2 1806 10 is_stmt 0 view .LVU287 + 820 0038 0022 movs r2, #0 + 821 .LVL61: + 822 .L38: +1807:Src/main.c **** (void) SPI2->DR; + 823 .loc 2 1807 9 is_stmt 1 discriminator 1 view .LVU288 + 824 .LBB305: + 825 .LBI305: + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 826 .loc 4 905 26 discriminator 1 view .LVU289 + 827 .LBB306: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 828 .loc 4 907 3 discriminator 1 view .LVU290 + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 829 .loc 4 907 12 is_stmt 0 discriminator 1 view .LVU291 + 830 003a 444B ldr r3, .L60+4 + 831 003c 9B68 ldr r3, [r3, #8] + ARM GAS /tmp/ccdsDELB.s page 118 + + + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 832 .loc 4 907 68 discriminator 1 view .LVU292 + 833 003e 13F0010F tst r3, #1 + 834 0042 04D1 bne .L39 + 835 .LVL62: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 836 .loc 4 907 68 discriminator 1 view .LVU293 + 837 .LBE306: + 838 .LBE305: +1807:Src/main.c **** (void) SPI2->DR; + 839 .loc 2 1807 43 view .LVU294 + 840 0044 B2F5FA7F cmp r2, #500 + 841 0048 01D8 bhi .L39 +1807:Src/main.c **** (void) SPI2->DR; + 842 .loc 2 1807 60 is_stmt 1 discriminator 3 view .LVU295 +1807:Src/main.c **** (void) SPI2->DR; + 843 .loc 2 1807 65 is_stmt 0 discriminator 3 view .LVU296 + 844 004a 0132 adds r2, r2, #1 + 845 .LVL63: +1807:Src/main.c **** (void) SPI2->DR; + 846 .loc 2 1807 65 discriminator 3 view .LVU297 + 847 004c F5E7 b .L38 + 848 .L39: +1808:Src/main.c **** break; + 849 .loc 2 1808 4 is_stmt 1 view .LVU298 + 850 004e 3F4B ldr r3, .L60+4 + 851 0050 DB68 ldr r3, [r3, #12] +1809:Src/main.c **** case 2: + 852 .loc 2 1809 3 view .LVU299 + 853 .LVL64: + 854 .L29: +1844:Src/main.c **** HAL_GPIO_WritePin(DAC_LD2_CS_GPIO_Port, DAC_LD2_CS_Pin, GPIO_PIN_SET);//End operation with LDAC2 + 855 .loc 2 1844 2 view .LVU300 + 856 0052 3D4D ldr r5, .L60 + 857 0054 0122 movs r2, #1 + 858 0056 4FF48041 mov r1, #16384 + 859 005a 2846 mov r0, r5 + 860 005c FFF7FEFF bl HAL_GPIO_WritePin + 861 .LVL65: +1845:Src/main.c **** HAL_GPIO_WritePin(DAC_TEC1_CS_GPIO_Port, DAC_TEC1_CS_Pin, GPIO_PIN_SET);//End operation with TEC1 + 862 .loc 2 1845 2 view .LVU301 + 863 0060 3B4C ldr r4, .L60+8 + 864 0062 0122 movs r2, #1 + 865 0064 4021 movs r1, #64 + 866 0066 2046 mov r0, r4 + 867 0068 FFF7FEFF bl HAL_GPIO_WritePin + 868 .LVL66: +1846:Src/main.c **** HAL_GPIO_WritePin(DAC_TEC2_CS_GPIO_Port, DAC_TEC2_CS_Pin, GPIO_PIN_SET);//End operation with TEC2 + 869 .loc 2 1846 2 view .LVU302 + 870 006c 0122 movs r2, #1 + 871 006e 4FF48051 mov r1, #4096 + 872 0072 2846 mov r0, r5 + 873 0074 FFF7FEFF bl HAL_GPIO_WritePin + 874 .LVL67: +1847:Src/main.c **** } + 875 .loc 2 1847 2 view .LVU303 + 876 0078 0122 movs r2, #1 + ARM GAS /tmp/ccdsDELB.s page 119 + + + 877 007a 1021 movs r1, #16 + 878 007c 2046 mov r0, r4 + 879 007e FFF7FEFF bl HAL_GPIO_WritePin + 880 .LVL68: +1848:Src/main.c **** static uint16_t MPhD_T(uint8_t num) + 881 .loc 2 1848 1 is_stmt 0 view .LVU304 + 882 0082 38BD pop {r3, r4, r5, pc} + 883 .LVL69: + 884 .L33: +1811:Src/main.c **** //tmp32=0; + 885 .loc 2 1811 4 is_stmt 1 view .LVU305 + 886 0084 0022 movs r2, #0 + 887 0086 4021 movs r1, #64 + 888 .LVL70: +1811:Src/main.c **** //tmp32=0; + 889 .loc 2 1811 4 is_stmt 0 view .LVU306 + 890 0088 3148 ldr r0, .L60+8 + 891 008a FFF7FEFF bl HAL_GPIO_WritePin + 892 .LVL71: +1814:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi + 893 .loc 2 1814 4 is_stmt 1 view .LVU307 +1815:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 894 .loc 2 1815 4 view .LVU308 +1814:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi + 895 .loc 2 1814 10 is_stmt 0 view .LVU309 + 896 008e 0022 movs r2, #0 + 897 .LVL72: + 898 .L41: +1815:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 899 .loc 2 1815 9 is_stmt 1 discriminator 1 view .LVU310 + 900 .LBB307: + 901 .LBI307: + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 902 .loc 4 916 26 discriminator 1 view .LVU311 + 903 .LBB308: + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 904 .loc 4 918 3 discriminator 1 view .LVU312 + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 905 .loc 4 918 12 is_stmt 0 discriminator 1 view .LVU313 + 906 0090 304B ldr r3, .L60+12 + 907 0092 9B68 ldr r3, [r3, #8] + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 908 .loc 4 918 66 discriminator 1 view .LVU314 + 909 0094 13F0020F tst r3, #2 + 910 0098 04D1 bne .L42 + 911 .LVL73: + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 912 .loc 4 918 66 discriminator 1 view .LVU315 + 913 .LBE308: + 914 .LBE307: +1815:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 915 .loc 2 1815 42 view .LVU316 + 916 009a B2F5FA7F cmp r2, #500 + 917 009e 01D8 bhi .L42 +1815:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 918 .loc 2 1815 59 is_stmt 1 discriminator 3 view .LVU317 +1815:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + ARM GAS /tmp/ccdsDELB.s page 120 + + + 919 .loc 2 1815 64 is_stmt 0 discriminator 3 view .LVU318 + 920 00a0 0132 adds r2, r2, #1 + 921 .LVL74: +1815:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 922 .loc 2 1815 64 discriminator 3 view .LVU319 + 923 00a2 F5E7 b .L41 + 924 .L42: +1816:Src/main.c **** tmp32 = 0; + 925 .loc 2 1816 4 is_stmt 1 view .LVU320 + 926 .LVL75: + 927 .LBB309: + 928 .LBI309: +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 929 .loc 4 1373 22 view .LVU321 + 930 .LBB310: +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** *spidr = TxData; + 931 .loc 4 1376 3 view .LVU322 + 932 .loc 4 1377 3 view .LVU323 + 933 .loc 4 1377 10 is_stmt 0 view .LVU324 + 934 00a4 2B4B ldr r3, .L60+12 + 935 00a6 9C81 strh r4, [r3, #12] @ movhi + 936 .LVL76: + 937 .loc 4 1377 10 view .LVU325 + 938 .LBE310: + 939 .LBE309: +1817:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w + 940 .loc 2 1817 4 is_stmt 1 view .LVU326 +1818:Src/main.c **** (void) SPI6->DR; + 941 .loc 2 1818 4 view .LVU327 +1817:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w + 942 .loc 2 1817 10 is_stmt 0 view .LVU328 + 943 00a8 0022 movs r2, #0 + 944 .LVL77: + 945 .L44: +1818:Src/main.c **** (void) SPI6->DR; + 946 .loc 2 1818 9 is_stmt 1 discriminator 1 view .LVU329 + 947 .LBB311: + 948 .LBI311: + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 949 .loc 4 905 26 discriminator 1 view .LVU330 + 950 .LBB312: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 951 .loc 4 907 3 discriminator 1 view .LVU331 + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 952 .loc 4 907 12 is_stmt 0 discriminator 1 view .LVU332 + 953 00aa 2A4B ldr r3, .L60+12 + 954 00ac 9B68 ldr r3, [r3, #8] + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 955 .loc 4 907 68 discriminator 1 view .LVU333 + 956 00ae 13F0010F tst r3, #1 + 957 00b2 04D1 bne .L45 + 958 .LVL78: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 959 .loc 4 907 68 discriminator 1 view .LVU334 + 960 .LBE312: + 961 .LBE311: +1818:Src/main.c **** (void) SPI6->DR; + ARM GAS /tmp/ccdsDELB.s page 121 + + + 962 .loc 2 1818 43 view .LVU335 + 963 00b4 B2F5FA7F cmp r2, #500 + 964 00b8 01D8 bhi .L45 +1818:Src/main.c **** (void) SPI6->DR; + 965 .loc 2 1818 60 is_stmt 1 discriminator 3 view .LVU336 +1818:Src/main.c **** (void) SPI6->DR; + 966 .loc 2 1818 65 is_stmt 0 discriminator 3 view .LVU337 + 967 00ba 0132 adds r2, r2, #1 + 968 .LVL79: +1818:Src/main.c **** (void) SPI6->DR; + 969 .loc 2 1818 65 discriminator 3 view .LVU338 + 970 00bc F5E7 b .L44 + 971 .L45: +1819:Src/main.c **** break; + 972 .loc 2 1819 4 is_stmt 1 view .LVU339 + 973 00be 254B ldr r3, .L60+12 + 974 00c0 DB68 ldr r3, [r3, #12] +1820:Src/main.c **** case 3: + 975 .loc 2 1820 3 view .LVU340 + 976 00c2 C6E7 b .L29 + 977 .LVL80: + 978 .L32: +1822:Src/main.c **** //tmp32=0; + 979 .loc 2 1822 4 view .LVU341 + 980 00c4 0022 movs r2, #0 + 981 00c6 4FF48051 mov r1, #4096 + 982 .LVL81: +1822:Src/main.c **** //tmp32=0; + 983 .loc 2 1822 4 is_stmt 0 view .LVU342 + 984 00ca 1F48 ldr r0, .L60 + 985 00cc FFF7FEFF bl HAL_GPIO_WritePin + 986 .LVL82: +1825:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi + 987 .loc 2 1825 4 is_stmt 1 view .LVU343 +1826:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 988 .loc 2 1826 4 view .LVU344 +1825:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi + 989 .loc 2 1825 10 is_stmt 0 view .LVU345 + 990 00d0 0022 movs r2, #0 + 991 .LVL83: + 992 .L47: +1826:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 993 .loc 2 1826 9 is_stmt 1 discriminator 1 view .LVU346 + 994 .LBB313: + 995 .LBI313: + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 996 .loc 4 916 26 discriminator 1 view .LVU347 + 997 .LBB314: + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 998 .loc 4 918 3 discriminator 1 view .LVU348 + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 999 .loc 4 918 12 is_stmt 0 discriminator 1 view .LVU349 + 1000 00d2 1E4B ldr r3, .L60+4 + 1001 00d4 9B68 ldr r3, [r3, #8] + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1002 .loc 4 918 66 discriminator 1 view .LVU350 + 1003 00d6 13F0020F tst r3, #2 + ARM GAS /tmp/ccdsDELB.s page 122 + + + 1004 00da 04D1 bne .L48 + 1005 .LVL84: + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1006 .loc 4 918 66 discriminator 1 view .LVU351 + 1007 .LBE314: + 1008 .LBE313: +1826:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 1009 .loc 2 1826 42 view .LVU352 + 1010 00dc B2F5FA7F cmp r2, #500 + 1011 00e0 01D8 bhi .L48 +1826:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 1012 .loc 2 1826 59 is_stmt 1 discriminator 3 view .LVU353 +1826:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 1013 .loc 2 1826 64 is_stmt 0 discriminator 3 view .LVU354 + 1014 00e2 0132 adds r2, r2, #1 + 1015 .LVL85: +1826:Src/main.c **** LL_SPI_TransmitData16(SPI2, DATA);//Transmit word to Laser1 DAC + 1016 .loc 2 1826 64 discriminator 3 view .LVU355 + 1017 00e4 F5E7 b .L47 + 1018 .L48: +1827:Src/main.c **** tmp32 = 0; + 1019 .loc 2 1827 4 is_stmt 1 view .LVU356 + 1020 .LVL86: + 1021 .LBB315: + 1022 .LBI315: +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1023 .loc 4 1373 22 view .LVU357 + 1024 .LBB316: +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** *spidr = TxData; + 1025 .loc 4 1376 3 view .LVU358 + 1026 .loc 4 1377 3 view .LVU359 + 1027 .loc 4 1377 10 is_stmt 0 view .LVU360 + 1028 00e6 194B ldr r3, .L60+4 + 1029 00e8 9C81 strh r4, [r3, #12] @ movhi + 1030 .LVL87: + 1031 .loc 4 1377 10 view .LVU361 + 1032 .LBE316: + 1033 .LBE315: +1828:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w + 1034 .loc 2 1828 4 is_stmt 1 view .LVU362 +1829:Src/main.c **** (void) SPI2->DR; + 1035 .loc 2 1829 4 view .LVU363 +1828:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI2))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w + 1036 .loc 2 1828 10 is_stmt 0 view .LVU364 + 1037 00ea 0022 movs r2, #0 + 1038 .LVL88: + 1039 .L50: +1829:Src/main.c **** (void) SPI2->DR; + 1040 .loc 2 1829 9 is_stmt 1 discriminator 1 view .LVU365 + 1041 .LBB317: + 1042 .LBI317: + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1043 .loc 4 905 26 discriminator 1 view .LVU366 + 1044 .LBB318: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1045 .loc 4 907 3 discriminator 1 view .LVU367 + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + ARM GAS /tmp/ccdsDELB.s page 123 + + + 1046 .loc 4 907 12 is_stmt 0 discriminator 1 view .LVU368 + 1047 00ec 174B ldr r3, .L60+4 + 1048 00ee 9B68 ldr r3, [r3, #8] + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1049 .loc 4 907 68 discriminator 1 view .LVU369 + 1050 00f0 13F0010F tst r3, #1 + 1051 00f4 04D1 bne .L51 + 1052 .LVL89: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1053 .loc 4 907 68 discriminator 1 view .LVU370 + 1054 .LBE318: + 1055 .LBE317: +1829:Src/main.c **** (void) SPI2->DR; + 1056 .loc 2 1829 43 view .LVU371 + 1057 00f6 B2F5FA7F cmp r2, #500 + 1058 00fa 01D8 bhi .L51 +1829:Src/main.c **** (void) SPI2->DR; + 1059 .loc 2 1829 60 is_stmt 1 discriminator 3 view .LVU372 +1829:Src/main.c **** (void) SPI2->DR; + 1060 .loc 2 1829 65 is_stmt 0 discriminator 3 view .LVU373 + 1061 00fc 0132 adds r2, r2, #1 + 1062 .LVL90: +1829:Src/main.c **** (void) SPI2->DR; + 1063 .loc 2 1829 65 discriminator 3 view .LVU374 + 1064 00fe F5E7 b .L50 + 1065 .L51: +1830:Src/main.c **** break; + 1066 .loc 2 1830 4 is_stmt 1 view .LVU375 + 1067 0100 124B ldr r3, .L60+4 + 1068 0102 DB68 ldr r3, [r3, #12] +1831:Src/main.c **** case 4: + 1069 .loc 2 1831 3 view .LVU376 + 1070 0104 A5E7 b .L29 + 1071 .LVL91: + 1072 .L30: +1833:Src/main.c **** //tmp32=0; + 1073 .loc 2 1833 4 view .LVU377 + 1074 0106 0022 movs r2, #0 + 1075 0108 1021 movs r1, #16 + 1076 .LVL92: +1833:Src/main.c **** //tmp32=0; + 1077 .loc 2 1833 4 is_stmt 0 view .LVU378 + 1078 010a 1148 ldr r0, .L60+8 + 1079 010c FFF7FEFF bl HAL_GPIO_WritePin + 1080 .LVL93: +1836:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi + 1081 .loc 2 1836 4 is_stmt 1 view .LVU379 +1837:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 1082 .loc 2 1837 4 view .LVU380 +1836:Src/main.c **** while((!LL_SPI_IsActiveFlag_TXE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle wi + 1083 .loc 2 1836 10 is_stmt 0 view .LVU381 + 1084 0110 0022 movs r2, #0 + 1085 .LVL94: + 1086 .L53: +1837:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 1087 .loc 2 1837 9 is_stmt 1 discriminator 1 view .LVU382 + 1088 .LBB319: + ARM GAS /tmp/ccdsDELB.s page 124 + + + 1089 .LBI319: + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1090 .loc 4 916 26 discriminator 1 view .LVU383 + 1091 .LBB320: + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1092 .loc 4 918 3 discriminator 1 view .LVU384 + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1093 .loc 4 918 12 is_stmt 0 discriminator 1 view .LVU385 + 1094 0112 104B ldr r3, .L60+12 + 1095 0114 9B68 ldr r3, [r3, #8] + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1096 .loc 4 918 66 discriminator 1 view .LVU386 + 1097 0116 13F0020F tst r3, #2 + 1098 011a 04D1 bne .L54 + 1099 .LVL95: + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1100 .loc 4 918 66 discriminator 1 view .LVU387 + 1101 .LBE320: + 1102 .LBE319: +1837:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 1103 .loc 2 1837 42 view .LVU388 + 1104 011c B2F5FA7F cmp r2, #500 + 1105 0120 01D8 bhi .L54 +1837:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 1106 .loc 2 1837 59 is_stmt 1 discriminator 3 view .LVU389 +1837:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 1107 .loc 2 1837 64 is_stmt 0 discriminator 3 view .LVU390 + 1108 0122 0132 adds r2, r2, #1 + 1109 .LVL96: +1837:Src/main.c **** LL_SPI_TransmitData16(SPI6, DATA);//Transmit word to Laser1 DAC + 1110 .loc 2 1837 64 discriminator 3 view .LVU391 + 1111 0124 F5E7 b .L53 + 1112 .L54: +1838:Src/main.c **** tmp32 = 0; + 1113 .loc 2 1838 4 is_stmt 1 view .LVU392 + 1114 .LVL97: + 1115 .LBB321: + 1116 .LBI321: +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1117 .loc 4 1373 22 view .LVU393 + 1118 .LBB322: +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** *spidr = TxData; + 1119 .loc 4 1376 3 view .LVU394 + 1120 .loc 4 1377 3 view .LVU395 + 1121 .loc 4 1377 10 is_stmt 0 view .LVU396 + 1122 0126 0B4B ldr r3, .L60+12 + 1123 0128 9C81 strh r4, [r3, #12] @ movhi + 1124 .LVL98: + 1125 .loc 4 1377 10 view .LVU397 + 1126 .LBE322: + 1127 .LBE321: +1839:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w + 1128 .loc 2 1839 4 is_stmt 1 view .LVU398 +1840:Src/main.c **** (void) SPI6->DR; + 1129 .loc 2 1840 4 view .LVU399 +1839:Src/main.c **** while((!LL_SPI_IsActiveFlag_RXNE(SPI6))&&(tmp32<=500)) {tmp32++;}//When trans. last data cycle w + 1130 .loc 2 1839 10 is_stmt 0 view .LVU400 + ARM GAS /tmp/ccdsDELB.s page 125 + + + 1131 012a 0022 movs r2, #0 + 1132 .LVL99: + 1133 .L56: +1840:Src/main.c **** (void) SPI6->DR; + 1134 .loc 2 1840 9 is_stmt 1 discriminator 1 view .LVU401 + 1135 .LBB323: + 1136 .LBI323: + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1137 .loc 4 905 26 discriminator 1 view .LVU402 + 1138 .LBB324: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1139 .loc 4 907 3 discriminator 1 view .LVU403 + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1140 .loc 4 907 12 is_stmt 0 discriminator 1 view .LVU404 + 1141 012c 094B ldr r3, .L60+12 + 1142 012e 9B68 ldr r3, [r3, #8] + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1143 .loc 4 907 68 discriminator 1 view .LVU405 + 1144 0130 13F0010F tst r3, #1 + 1145 0134 04D1 bne .L57 + 1146 .LVL100: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1147 .loc 4 907 68 discriminator 1 view .LVU406 + 1148 .LBE324: + 1149 .LBE323: +1840:Src/main.c **** (void) SPI6->DR; + 1150 .loc 2 1840 43 view .LVU407 + 1151 0136 B2F5FA7F cmp r2, #500 + 1152 013a 01D8 bhi .L57 +1840:Src/main.c **** (void) SPI6->DR; + 1153 .loc 2 1840 60 is_stmt 1 discriminator 3 view .LVU408 +1840:Src/main.c **** (void) SPI6->DR; + 1154 .loc 2 1840 65 is_stmt 0 discriminator 3 view .LVU409 + 1155 013c 0132 adds r2, r2, #1 + 1156 .LVL101: +1840:Src/main.c **** (void) SPI6->DR; + 1157 .loc 2 1840 65 discriminator 3 view .LVU410 + 1158 013e F5E7 b .L56 + 1159 .L57: +1841:Src/main.c **** break; + 1160 .loc 2 1841 4 is_stmt 1 view .LVU411 + 1161 0140 044B ldr r3, .L60+12 + 1162 0142 DB68 ldr r3, [r3, #12] +1842:Src/main.c **** } + 1163 .loc 2 1842 3 view .LVU412 + 1164 0144 85E7 b .L29 + 1165 .L61: + 1166 0146 00BF .align 2 + 1167 .L60: + 1168 0148 00040240 .word 1073873920 + 1169 014c 00380040 .word 1073756160 + 1170 0150 00000240 .word 1073872896 + 1171 0154 00540140 .word 1073828864 + 1172 .cfi_endproc + 1173 .LFE1206: + 1175 .section .text.MPhD_T,"ax",%progbits + 1176 .align 1 + ARM GAS /tmp/ccdsDELB.s page 126 + + + 1177 .syntax unified + 1178 .thumb + 1179 .thumb_func + 1180 .fpu fpv5-d16 + 1182 MPhD_T: + 1183 .LVL102: + 1184 .LFB1207: +1850:Src/main.c **** uint16_t P; + 1185 .loc 2 1850 1 view -0 + 1186 .cfi_startproc + 1187 @ args = 0, pretend = 0, frame = 0 + 1188 @ frame_needed = 0, uses_anonymous_args = 0 +1850:Src/main.c **** uint16_t P; + 1189 .loc 2 1850 1 is_stmt 0 view .LVU414 + 1190 0000 38B5 push {r3, r4, r5, lr} + 1191 .LCFI9: + 1192 .cfi_def_cfa_offset 16 + 1193 .cfi_offset 3, -16 + 1194 .cfi_offset 4, -12 + 1195 .cfi_offset 5, -8 + 1196 .cfi_offset 14, -4 + 1197 0002 0446 mov r4, r0 +1851:Src/main.c **** uint32_t tmp32; + 1198 .loc 2 1851 2 is_stmt 1 view .LVU415 +1852:Src/main.c **** HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_RESET);//Prepare conversion + 1199 .loc 2 1852 2 view .LVU416 +1853:Src/main.c **** HAL_GPIO_WritePin(SPI5_CNV_GPIO_Port, SPI5_CNV_Pin, GPIO_PIN_RESET);//Prepare conversion + 1200 .loc 2 1853 2 view .LVU417 + 1201 0004 0022 movs r2, #0 + 1202 0006 4FF48041 mov r1, #16384 + 1203 000a 8248 ldr r0, .L106 + 1204 .LVL103: +1853:Src/main.c **** HAL_GPIO_WritePin(SPI5_CNV_GPIO_Port, SPI5_CNV_Pin, GPIO_PIN_RESET);//Prepare conversion + 1205 .loc 2 1853 2 is_stmt 0 view .LVU418 + 1206 000c FFF7FEFF bl HAL_GPIO_WritePin + 1207 .LVL104: +1854:Src/main.c **** tmp32=0; + 1208 .loc 2 1854 2 is_stmt 1 view .LVU419 + 1209 0010 0022 movs r2, #0 + 1210 0012 4FF40071 mov r1, #512 + 1211 0016 8048 ldr r0, .L106+4 + 1212 0018 FFF7FEFF bl HAL_GPIO_WritePin + 1213 .LVL105: +1855:Src/main.c **** while(tmp32<500){tmp32++;} + 1214 .loc 2 1855 2 view .LVU420 +1856:Src/main.c **** HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET);//Stop acqusition & start conver + 1215 .loc 2 1856 2 view .LVU421 +1855:Src/main.c **** while(tmp32<500){tmp32++;} + 1216 .loc 2 1855 7 is_stmt 0 view .LVU422 + 1217 001c 0023 movs r3, #0 +1856:Src/main.c **** HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET);//Stop acqusition & start conver + 1218 .loc 2 1856 7 view .LVU423 + 1219 001e 00E0 b .L63 + 1220 .LVL106: + 1221 .L64: +1856:Src/main.c **** HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET);//Stop acqusition & start conver + 1222 .loc 2 1856 19 is_stmt 1 discriminator 2 view .LVU424 + ARM GAS /tmp/ccdsDELB.s page 127 + + +1856:Src/main.c **** HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET);//Stop acqusition & start conver + 1223 .loc 2 1856 24 is_stmt 0 discriminator 2 view .LVU425 + 1224 0020 0133 adds r3, r3, #1 + 1225 .LVL107: + 1226 .L63: +1856:Src/main.c **** HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET);//Stop acqusition & start conver + 1227 .loc 2 1856 7 is_stmt 1 discriminator 1 view .LVU426 + 1228 0022 B3F5FA7F cmp r3, #500 + 1229 0026 FBD3 bcc .L64 +1857:Src/main.c **** HAL_GPIO_WritePin(SPI5_CNV_GPIO_Port, SPI5_CNV_Pin, GPIO_PIN_SET);//Stop acqusition & start conver + 1230 .loc 2 1857 2 view .LVU427 + 1231 0028 0122 movs r2, #1 + 1232 002a 4FF48041 mov r1, #16384 + 1233 002e 7948 ldr r0, .L106 + 1234 0030 FFF7FEFF bl HAL_GPIO_WritePin + 1235 .LVL108: +1858:Src/main.c **** tmp32=0; + 1236 .loc 2 1858 2 view .LVU428 + 1237 0034 0122 movs r2, #1 + 1238 0036 4FF40071 mov r1, #512 + 1239 003a 7748 ldr r0, .L106+4 + 1240 003c FFF7FEFF bl HAL_GPIO_WritePin + 1241 .LVL109: +1859:Src/main.c **** while(tmp32<500){tmp32++;} + 1242 .loc 2 1859 2 view .LVU429 +1860:Src/main.c **** if (num==1)//MPD1 + 1243 .loc 2 1860 2 view .LVU430 +1859:Src/main.c **** while(tmp32<500){tmp32++;} + 1244 .loc 2 1859 7 is_stmt 0 view .LVU431 + 1245 0040 0023 movs r3, #0 +1860:Src/main.c **** if (num==1)//MPD1 + 1246 .loc 2 1860 7 view .LVU432 + 1247 0042 00E0 b .L65 + 1248 .LVL110: + 1249 .L66: +1860:Src/main.c **** if (num==1)//MPD1 + 1250 .loc 2 1860 19 is_stmt 1 discriminator 2 view .LVU433 +1860:Src/main.c **** if (num==1)//MPD1 + 1251 .loc 2 1860 24 is_stmt 0 discriminator 2 view .LVU434 + 1252 0044 0133 adds r3, r3, #1 + 1253 .LVL111: + 1254 .L65: +1860:Src/main.c **** if (num==1)//MPD1 + 1255 .loc 2 1860 7 is_stmt 1 discriminator 1 view .LVU435 + 1256 0046 B3F5FA7F cmp r3, #500 + 1257 004a FBD3 bcc .L66 +1861:Src/main.c **** { + 1258 .loc 2 1861 2 view .LVU436 +1861:Src/main.c **** { + 1259 .loc 2 1861 5 is_stmt 0 view .LVU437 + 1260 004c 012C cmp r4, #1 + 1261 004e 08D0 beq .L100 +1877:Src/main.c **** { + 1262 .loc 2 1877 7 is_stmt 1 view .LVU438 +1877:Src/main.c **** { + 1263 .loc 2 1877 10 is_stmt 0 view .LVU439 + 1264 0050 022C cmp r4, #2 + ARM GAS /tmp/ccdsDELB.s page 128 + + + 1265 0052 3DD0 beq .L101 +1893:Src/main.c **** { + 1266 .loc 2 1893 7 is_stmt 1 view .LVU440 +1893:Src/main.c **** { + 1267 .loc 2 1893 10 is_stmt 0 view .LVU441 + 1268 0054 032C cmp r4, #3 + 1269 0056 70D0 beq .L102 +1909:Src/main.c **** { + 1270 .loc 2 1909 7 is_stmt 1 view .LVU442 +1909:Src/main.c **** { + 1271 .loc 2 1909 10 is_stmt 0 view .LVU443 + 1272 0058 042C cmp r4, #4 + 1273 005a 00F0A580 beq .L103 + 1274 .LVL112: + 1275 .L75: +1947:Src/main.c **** } + 1276 .loc 2 1947 2 is_stmt 1 view .LVU444 +1948:Src/main.c **** /*static uint16_t Temp_LD(uint16_t T_LD_before, uint16_t T_LD, uint32_t Timer_before, uint32_t Time + 1277 .loc 2 1948 1 is_stmt 0 view .LVU445 + 1278 005e 2846 mov r0, r5 + 1279 0060 38BD pop {r3, r4, r5, pc} + 1280 .LVL113: + 1281 .L100: +1863:Src/main.c **** HAL_GPIO_WritePin(ADC_MPD1_CS_GPIO_Port, ADC_MPD1_CS_Pin, GPIO_PIN_RESET); + 1282 .loc 2 1863 3 is_stmt 1 view .LVU446 + 1283 0062 6C4C ldr r4, .L106 + 1284 0064 0122 movs r2, #1 + 1285 0066 4FF40061 mov r1, #2048 + 1286 006a 2046 mov r0, r4 + 1287 006c FFF7FEFF bl HAL_GPIO_WritePin + 1288 .LVL114: +1864:Src/main.c **** tmp32=0; + 1289 .loc 2 1864 3 view .LVU447 + 1290 0070 0022 movs r2, #0 + 1291 0072 4FF48061 mov r1, #1024 + 1292 0076 2046 mov r0, r4 + 1293 0078 FFF7FEFF bl HAL_GPIO_WritePin + 1294 .LVL115: +1865:Src/main.c **** while(tmp32<500){tmp32++;} + 1295 .loc 2 1865 3 view .LVU448 +1866:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1296 .loc 2 1866 3 view .LVU449 +1865:Src/main.c **** while(tmp32<500){tmp32++;} + 1297 .loc 2 1865 8 is_stmt 0 view .LVU450 + 1298 007c 0023 movs r3, #0 +1866:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1299 .loc 2 1866 8 view .LVU451 + 1300 007e 00E0 b .L68 + 1301 .LVL116: + 1302 .L69: +1866:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1303 .loc 2 1866 20 is_stmt 1 discriminator 2 view .LVU452 +1866:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1304 .loc 2 1866 25 is_stmt 0 discriminator 2 view .LVU453 + 1305 0080 0133 adds r3, r3, #1 + 1306 .LVL117: + 1307 .L68: + ARM GAS /tmp/ccdsDELB.s page 129 + + +1866:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1308 .loc 2 1866 8 is_stmt 1 discriminator 1 view .LVU454 + 1309 0082 B3F5FA7F cmp r3, #500 + 1310 0086 FBD3 bcc .L69 +1868:Src/main.c **** tmp32 = 0; + 1311 .loc 2 1868 3 view .LVU455 + 1312 .LVL118: + 1313 .LBB325: + 1314 .LBI325: + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1315 .loc 4 358 22 view .LVU456 + 1316 .LBB326: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1317 .loc 4 360 3 view .LVU457 + 1318 0088 644A ldr r2, .L106+8 + 1319 008a 1368 ldr r3, [r2] + 1320 .LVL119: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1321 .loc 4 360 3 is_stmt 0 view .LVU458 + 1322 008c 43F04003 orr r3, r3, #64 + 1323 0090 1360 str r3, [r2] + 1324 .LVL120: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1325 .loc 4 360 3 view .LVU459 + 1326 .LBE326: + 1327 .LBE325: +1869:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI4))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w + 1328 .loc 2 1869 3 is_stmt 1 view .LVU460 +1870:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for MPhD1 ADC + 1329 .loc 2 1870 3 view .LVU461 +1869:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI4))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w + 1330 .loc 2 1869 9 is_stmt 0 view .LVU462 + 1331 0092 0023 movs r3, #0 + 1332 .LVL121: + 1333 .L70: +1870:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for MPhD1 ADC + 1334 .loc 2 1870 8 is_stmt 1 discriminator 1 view .LVU463 + 1335 .LBB327: + 1336 .LBI327: + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1337 .loc 4 905 26 discriminator 1 view .LVU464 + 1338 .LBB328: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1339 .loc 4 907 3 discriminator 1 view .LVU465 + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1340 .loc 4 907 12 is_stmt 0 discriminator 1 view .LVU466 + 1341 0094 614A ldr r2, .L106+8 + 1342 0096 9268 ldr r2, [r2, #8] + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1343 .loc 4 907 68 discriminator 1 view .LVU467 + 1344 0098 12F0010F tst r2, #1 + 1345 009c 04D1 bne .L71 + 1346 .LVL122: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1347 .loc 4 907 68 discriminator 1 view .LVU468 + 1348 .LBE328: + 1349 .LBE327: + ARM GAS /tmp/ccdsDELB.s page 130 + + +1870:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for MPhD1 ADC + 1350 .loc 2 1870 43 view .LVU469 + 1351 009e B3F57A7F cmp r3, #1000 + 1352 00a2 01D8 bhi .L71 +1870:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for MPhD1 ADC + 1353 .loc 2 1870 62 is_stmt 1 discriminator 3 view .LVU470 +1870:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for MPhD1 ADC + 1354 .loc 2 1870 67 is_stmt 0 discriminator 3 view .LVU471 + 1355 00a4 0133 adds r3, r3, #1 + 1356 .LVL123: +1870:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for MPhD1 ADC + 1357 .loc 2 1870 67 discriminator 3 view .LVU472 + 1358 00a6 F5E7 b .L70 + 1359 .L71: +1871:Src/main.c **** while(tmp32<500){tmp32++;} + 1360 .loc 2 1871 3 is_stmt 1 view .LVU473 + 1361 .LVL124: + 1362 .LBB329: + 1363 .LBI329: + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1364 .loc 4 370 22 view .LVU474 + 1365 .LBB330: + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1366 .loc 4 372 3 view .LVU475 + 1367 00a8 5C49 ldr r1, .L106+8 + 1368 00aa 0A68 ldr r2, [r1] + 1369 00ac 22F04002 bic r2, r2, #64 + 1370 00b0 0A60 str r2, [r1] + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 1371 .loc 4 373 1 is_stmt 0 view .LVU476 + 1372 00b2 00E0 b .L73 + 1373 .LVL125: + 1374 .L74: + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 1375 .loc 4 373 1 view .LVU477 + 1376 .LBE330: + 1377 .LBE329: +1872:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1378 .loc 2 1872 20 is_stmt 1 discriminator 2 view .LVU478 +1872:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1379 .loc 2 1872 25 is_stmt 0 discriminator 2 view .LVU479 + 1380 00b4 0133 adds r3, r3, #1 + 1381 .LVL126: + 1382 .L73: +1872:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1383 .loc 2 1872 8 is_stmt 1 discriminator 1 view .LVU480 + 1384 00b6 B3F5FA7F cmp r3, #500 + 1385 00ba FBD3 bcc .L74 +1874:Src/main.c **** P = LL_SPI_ReceiveData16(SPI4); + 1386 .loc 2 1874 3 view .LVU481 + 1387 00bc 0122 movs r2, #1 + 1388 00be 4FF48061 mov r1, #1024 + 1389 00c2 5448 ldr r0, .L106 + 1390 00c4 FFF7FEFF bl HAL_GPIO_WritePin + 1391 .LVL127: +1875:Src/main.c **** } + 1392 .loc 2 1875 3 view .LVU482 + ARM GAS /tmp/ccdsDELB.s page 131 + + + 1393 .LBB331: + 1394 .LBI331: +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1395 .loc 4 1344 26 view .LVU483 + 1396 .LBB332: +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1397 .loc 4 1346 3 view .LVU484 +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1398 .loc 4 1346 21 is_stmt 0 view .LVU485 + 1399 00c8 544B ldr r3, .L106+8 + 1400 00ca DD68 ldr r5, [r3, #12] +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1401 .loc 4 1346 10 view .LVU486 + 1402 00cc ADB2 uxth r5, r5 + 1403 .LVL128: +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1404 .loc 4 1346 10 view .LVU487 + 1405 .LBE332: + 1406 .LBE331: + 1407 00ce C6E7 b .L75 + 1408 .LVL129: + 1409 .L101: +1879:Src/main.c **** HAL_GPIO_WritePin(ADC_MPD2_CS_GPIO_Port, ADC_MPD2_CS_Pin, GPIO_PIN_RESET); + 1410 .loc 2 1879 3 is_stmt 1 view .LVU488 + 1411 00d0 514C ldr r4, .L106+4 + 1412 00d2 0122 movs r2, #1 + 1413 00d4 4FF48061 mov r1, #1024 + 1414 00d8 2046 mov r0, r4 + 1415 00da FFF7FEFF bl HAL_GPIO_WritePin + 1416 .LVL130: +1880:Src/main.c **** tmp32=0; + 1417 .loc 2 1880 3 view .LVU489 + 1418 00de 0022 movs r2, #0 + 1419 00e0 4021 movs r1, #64 + 1420 00e2 2046 mov r0, r4 + 1421 00e4 FFF7FEFF bl HAL_GPIO_WritePin + 1422 .LVL131: +1881:Src/main.c **** while(tmp32<500){tmp32++;} + 1423 .loc 2 1881 3 view .LVU490 +1882:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1424 .loc 2 1882 3 view .LVU491 +1881:Src/main.c **** while(tmp32<500){tmp32++;} + 1425 .loc 2 1881 8 is_stmt 0 view .LVU492 + 1426 00e8 0023 movs r3, #0 +1882:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1427 .loc 2 1882 8 view .LVU493 + 1428 00ea 00E0 b .L77 + 1429 .LVL132: + 1430 .L78: +1882:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1431 .loc 2 1882 20 is_stmt 1 discriminator 2 view .LVU494 +1882:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1432 .loc 2 1882 25 is_stmt 0 discriminator 2 view .LVU495 + 1433 00ec 0133 adds r3, r3, #1 + 1434 .LVL133: + 1435 .L77: +1882:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + ARM GAS /tmp/ccdsDELB.s page 132 + + + 1436 .loc 2 1882 8 is_stmt 1 discriminator 1 view .LVU496 + 1437 00ee B3F5FA7F cmp r3, #500 + 1438 00f2 FBD3 bcc .L78 +1884:Src/main.c **** tmp32 = 0; + 1439 .loc 2 1884 3 view .LVU497 + 1440 .LVL134: + 1441 .LBB333: + 1442 .LBI333: + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1443 .loc 4 358 22 view .LVU498 + 1444 .LBB334: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1445 .loc 4 360 3 view .LVU499 + 1446 00f4 4A4A ldr r2, .L106+12 + 1447 00f6 1368 ldr r3, [r2] + 1448 .LVL135: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1449 .loc 4 360 3 is_stmt 0 view .LVU500 + 1450 00f8 43F04003 orr r3, r3, #64 + 1451 00fc 1360 str r3, [r2] + 1452 .LVL136: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1453 .loc 4 360 3 view .LVU501 + 1454 .LBE334: + 1455 .LBE333: +1885:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI5))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w + 1456 .loc 2 1885 3 is_stmt 1 view .LVU502 +1886:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for MPhD2 ADC + 1457 .loc 2 1886 3 view .LVU503 +1885:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI5))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w + 1458 .loc 2 1885 9 is_stmt 0 view .LVU504 + 1459 00fe 0023 movs r3, #0 + 1460 .LVL137: + 1461 .L79: +1886:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for MPhD2 ADC + 1462 .loc 2 1886 8 is_stmt 1 discriminator 1 view .LVU505 + 1463 .LBB335: + 1464 .LBI335: + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1465 .loc 4 905 26 discriminator 1 view .LVU506 + 1466 .LBB336: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1467 .loc 4 907 3 discriminator 1 view .LVU507 + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1468 .loc 4 907 12 is_stmt 0 discriminator 1 view .LVU508 + 1469 0100 474A ldr r2, .L106+12 + 1470 0102 9268 ldr r2, [r2, #8] + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1471 .loc 4 907 68 discriminator 1 view .LVU509 + 1472 0104 12F0010F tst r2, #1 + 1473 0108 04D1 bne .L80 + 1474 .LVL138: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1475 .loc 4 907 68 discriminator 1 view .LVU510 + 1476 .LBE336: + 1477 .LBE335: +1886:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for MPhD2 ADC + ARM GAS /tmp/ccdsDELB.s page 133 + + + 1478 .loc 2 1886 43 view .LVU511 + 1479 010a B3F57A7F cmp r3, #1000 + 1480 010e 01D8 bhi .L80 +1886:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for MPhD2 ADC + 1481 .loc 2 1886 62 is_stmt 1 discriminator 3 view .LVU512 +1886:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for MPhD2 ADC + 1482 .loc 2 1886 67 is_stmt 0 discriminator 3 view .LVU513 + 1483 0110 0133 adds r3, r3, #1 + 1484 .LVL139: +1886:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for MPhD2 ADC + 1485 .loc 2 1886 67 discriminator 3 view .LVU514 + 1486 0112 F5E7 b .L79 + 1487 .L80: +1887:Src/main.c **** while(tmp32<500){tmp32++;} + 1488 .loc 2 1887 3 is_stmt 1 view .LVU515 + 1489 .LVL140: + 1490 .LBB337: + 1491 .LBI337: + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1492 .loc 4 370 22 view .LVU516 + 1493 .LBB338: + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1494 .loc 4 372 3 view .LVU517 + 1495 0114 4249 ldr r1, .L106+12 + 1496 0116 0A68 ldr r2, [r1] + 1497 0118 22F04002 bic r2, r2, #64 + 1498 011c 0A60 str r2, [r1] + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 1499 .loc 4 373 1 is_stmt 0 view .LVU518 + 1500 011e 00E0 b .L82 + 1501 .LVL141: + 1502 .L83: + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 1503 .loc 4 373 1 view .LVU519 + 1504 .LBE338: + 1505 .LBE337: +1888:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1506 .loc 2 1888 20 is_stmt 1 discriminator 2 view .LVU520 +1888:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1507 .loc 2 1888 25 is_stmt 0 discriminator 2 view .LVU521 + 1508 0120 0133 adds r3, r3, #1 + 1509 .LVL142: + 1510 .L82: +1888:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1511 .loc 2 1888 8 is_stmt 1 discriminator 1 view .LVU522 + 1512 0122 B3F5FA7F cmp r3, #500 + 1513 0126 FBD3 bcc .L83 +1890:Src/main.c **** P = LL_SPI_ReceiveData16(SPI5); + 1514 .loc 2 1890 3 view .LVU523 + 1515 0128 0122 movs r2, #1 + 1516 012a 4021 movs r1, #64 + 1517 012c 3A48 ldr r0, .L106+4 + 1518 012e FFF7FEFF bl HAL_GPIO_WritePin + 1519 .LVL143: +1891:Src/main.c **** } + 1520 .loc 2 1891 3 view .LVU524 + 1521 .LBB339: + ARM GAS /tmp/ccdsDELB.s page 134 + + + 1522 .LBI339: +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1523 .loc 4 1344 26 view .LVU525 + 1524 .LBB340: +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1525 .loc 4 1346 3 view .LVU526 +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1526 .loc 4 1346 21 is_stmt 0 view .LVU527 + 1527 0132 3B4B ldr r3, .L106+12 + 1528 0134 DD68 ldr r5, [r3, #12] +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1529 .loc 4 1346 10 view .LVU528 + 1530 0136 ADB2 uxth r5, r5 + 1531 .LVL144: +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1532 .loc 4 1346 10 view .LVU529 + 1533 .LBE340: + 1534 .LBE339: + 1535 0138 91E7 b .L75 + 1536 .LVL145: + 1537 .L102: +1895:Src/main.c **** HAL_GPIO_WritePin(ADC_ThrLD1_CS_GPIO_Port, ADC_ThrLD1_CS_Pin, GPIO_PIN_RESET); + 1538 .loc 2 1895 3 is_stmt 1 view .LVU530 + 1539 013a 364C ldr r4, .L106 + 1540 013c 0122 movs r2, #1 + 1541 013e 4FF48061 mov r1, #1024 + 1542 0142 2046 mov r0, r4 + 1543 0144 FFF7FEFF bl HAL_GPIO_WritePin + 1544 .LVL146: +1896:Src/main.c **** tmp32=0; + 1545 .loc 2 1896 3 view .LVU531 + 1546 0148 0022 movs r2, #0 + 1547 014a 4FF40061 mov r1, #2048 + 1548 014e 2046 mov r0, r4 + 1549 0150 FFF7FEFF bl HAL_GPIO_WritePin + 1550 .LVL147: +1897:Src/main.c **** while(tmp32<500){tmp32++;} + 1551 .loc 2 1897 3 view .LVU532 +1898:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1552 .loc 2 1898 3 view .LVU533 +1897:Src/main.c **** while(tmp32<500){tmp32++;} + 1553 .loc 2 1897 8 is_stmt 0 view .LVU534 + 1554 0154 0023 movs r3, #0 +1898:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1555 .loc 2 1898 8 view .LVU535 + 1556 0156 00E0 b .L85 + 1557 .LVL148: + 1558 .L86: +1898:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1559 .loc 2 1898 20 is_stmt 1 discriminator 2 view .LVU536 +1898:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1560 .loc 2 1898 25 is_stmt 0 discriminator 2 view .LVU537 + 1561 0158 0133 adds r3, r3, #1 + 1562 .LVL149: + 1563 .L85: +1898:Src/main.c **** //LL_SPI_TransmitData16(SPI4, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1564 .loc 2 1898 8 is_stmt 1 discriminator 1 view .LVU538 + ARM GAS /tmp/ccdsDELB.s page 135 + + + 1565 015a B3F5FA7F cmp r3, #500 + 1566 015e FBD3 bcc .L86 +1900:Src/main.c **** tmp32 = 0; + 1567 .loc 2 1900 3 view .LVU539 + 1568 .LVL150: + 1569 .LBB341: + 1570 .LBI341: + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1571 .loc 4 358 22 view .LVU540 + 1572 .LBB342: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1573 .loc 4 360 3 view .LVU541 + 1574 0160 2E4A ldr r2, .L106+8 + 1575 0162 1368 ldr r3, [r2] + 1576 .LVL151: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1577 .loc 4 360 3 is_stmt 0 view .LVU542 + 1578 0164 43F04003 orr r3, r3, #64 + 1579 0168 1360 str r3, [r2] + 1580 .LVL152: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1581 .loc 4 360 3 view .LVU543 + 1582 .LBE342: + 1583 .LBE341: +1901:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI4))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w + 1584 .loc 2 1901 3 is_stmt 1 view .LVU544 +1902:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for ThrLD1 ADC + 1585 .loc 2 1902 3 view .LVU545 +1901:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI4))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w + 1586 .loc 2 1901 9 is_stmt 0 view .LVU546 + 1587 016a 0023 movs r3, #0 + 1588 .LVL153: + 1589 .L87: +1902:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for ThrLD1 ADC + 1590 .loc 2 1902 8 is_stmt 1 discriminator 1 view .LVU547 + 1591 .LBB343: + 1592 .LBI343: + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1593 .loc 4 905 26 discriminator 1 view .LVU548 + 1594 .LBB344: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1595 .loc 4 907 3 discriminator 1 view .LVU549 + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1596 .loc 4 907 12 is_stmt 0 discriminator 1 view .LVU550 + 1597 016c 2B4A ldr r2, .L106+8 + 1598 016e 9268 ldr r2, [r2, #8] + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1599 .loc 4 907 68 discriminator 1 view .LVU551 + 1600 0170 12F0010F tst r2, #1 + 1601 0174 04D1 bne .L88 + 1602 .LVL154: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1603 .loc 4 907 68 discriminator 1 view .LVU552 + 1604 .LBE344: + 1605 .LBE343: +1902:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for ThrLD1 ADC + 1606 .loc 2 1902 43 view .LVU553 + ARM GAS /tmp/ccdsDELB.s page 136 + + + 1607 0176 B3F57A7F cmp r3, #1000 + 1608 017a 01D8 bhi .L88 +1902:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for ThrLD1 ADC + 1609 .loc 2 1902 62 is_stmt 1 discriminator 3 view .LVU554 +1902:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for ThrLD1 ADC + 1610 .loc 2 1902 67 is_stmt 0 discriminator 3 view .LVU555 + 1611 017c 0133 adds r3, r3, #1 + 1612 .LVL155: +1902:Src/main.c **** LL_SPI_Disable(SPI4);//Enable SPI for ThrLD1 ADC + 1613 .loc 2 1902 67 discriminator 3 view .LVU556 + 1614 017e F5E7 b .L87 + 1615 .L88: +1903:Src/main.c **** while(tmp32<500){tmp32++;} + 1616 .loc 2 1903 3 is_stmt 1 view .LVU557 + 1617 .LVL156: + 1618 .LBB345: + 1619 .LBI345: + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1620 .loc 4 370 22 view .LVU558 + 1621 .LBB346: + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1622 .loc 4 372 3 view .LVU559 + 1623 0180 2649 ldr r1, .L106+8 + 1624 0182 0A68 ldr r2, [r1] + 1625 0184 22F04002 bic r2, r2, #64 + 1626 0188 0A60 str r2, [r1] + 1627 .LVL157: + 1628 .L90: + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1629 .loc 4 372 3 is_stmt 0 view .LVU560 + 1630 .LBE346: + 1631 .LBE345: +1904:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1632 .loc 2 1904 8 is_stmt 1 discriminator 1 view .LVU561 + 1633 018a B3F5FA7F cmp r3, #500 + 1634 018e 01D2 bcs .L104 +1904:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1635 .loc 2 1904 20 discriminator 2 view .LVU562 +1904:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1636 .loc 2 1904 25 is_stmt 0 discriminator 2 view .LVU563 + 1637 0190 0133 adds r3, r3, #1 + 1638 .LVL158: +1904:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1639 .loc 2 1904 25 discriminator 2 view .LVU564 + 1640 0192 FAE7 b .L90 + 1641 .L104: +1906:Src/main.c **** P = LL_SPI_ReceiveData16(SPI4); + 1642 .loc 2 1906 3 is_stmt 1 view .LVU565 + 1643 0194 0122 movs r2, #1 + 1644 0196 4FF40061 mov r1, #2048 + 1645 019a 1E48 ldr r0, .L106 + 1646 019c FFF7FEFF bl HAL_GPIO_WritePin + 1647 .LVL159: +1907:Src/main.c **** } + 1648 .loc 2 1907 3 view .LVU566 + 1649 .LBB347: + 1650 .LBI347: + ARM GAS /tmp/ccdsDELB.s page 137 + + +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1651 .loc 4 1344 26 view .LVU567 + 1652 .LBB348: +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1653 .loc 4 1346 3 view .LVU568 +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1654 .loc 4 1346 21 is_stmt 0 view .LVU569 + 1655 01a0 1E4B ldr r3, .L106+8 + 1656 01a2 DD68 ldr r5, [r3, #12] +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1657 .loc 4 1346 10 view .LVU570 + 1658 01a4 ADB2 uxth r5, r5 + 1659 .LVL160: +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1660 .loc 4 1346 10 view .LVU571 + 1661 .LBE348: + 1662 .LBE347: + 1663 01a6 5AE7 b .L75 + 1664 .LVL161: + 1665 .L103: +1911:Src/main.c **** HAL_GPIO_WritePin(ADC_ThrLD2_CS_GPIO_Port, ADC_ThrLD2_CS_Pin, GPIO_PIN_RESET); + 1666 .loc 2 1911 3 is_stmt 1 view .LVU572 + 1667 01a8 1B4C ldr r4, .L106+4 + 1668 01aa 0122 movs r2, #1 + 1669 01ac 4021 movs r1, #64 + 1670 01ae 2046 mov r0, r4 + 1671 01b0 FFF7FEFF bl HAL_GPIO_WritePin + 1672 .LVL162: +1912:Src/main.c **** tmp32=0; + 1673 .loc 2 1912 3 view .LVU573 + 1674 01b4 0022 movs r2, #0 + 1675 01b6 4FF48061 mov r1, #1024 + 1676 01ba 2046 mov r0, r4 + 1677 01bc FFF7FEFF bl HAL_GPIO_WritePin + 1678 .LVL163: +1913:Src/main.c **** while(tmp32<500){tmp32++;} + 1679 .loc 2 1913 3 view .LVU574 +1914:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1680 .loc 2 1914 3 view .LVU575 +1913:Src/main.c **** while(tmp32<500){tmp32++;} + 1681 .loc 2 1913 8 is_stmt 0 view .LVU576 + 1682 01c0 0023 movs r3, #0 + 1683 .LVL164: + 1684 .L92: +1914:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1685 .loc 2 1914 8 is_stmt 1 discriminator 1 view .LVU577 + 1686 01c2 B3F5FA7F cmp r3, #500 + 1687 01c6 01D2 bcs .L105 +1914:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1688 .loc 2 1914 20 discriminator 2 view .LVU578 +1914:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1689 .loc 2 1914 25 is_stmt 0 discriminator 2 view .LVU579 + 1690 01c8 0133 adds r3, r3, #1 + 1691 .LVL165: +1914:Src/main.c **** //LL_SPI_TransmitData16(SPI5, 0xFFFF);//We must to clock the CLK output for collect RX data. We c + 1692 .loc 2 1914 25 discriminator 2 view .LVU580 + 1693 01ca FAE7 b .L92 + ARM GAS /tmp/ccdsDELB.s page 138 + + + 1694 .L105: +1916:Src/main.c **** tmp32 = 0; + 1695 .loc 2 1916 3 is_stmt 1 view .LVU581 + 1696 .LVL166: + 1697 .LBB349: + 1698 .LBI349: + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1699 .loc 4 358 22 view .LVU582 + 1700 .LBB350: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1701 .loc 4 360 3 view .LVU583 + 1702 01cc 144A ldr r2, .L106+12 + 1703 01ce 1368 ldr r3, [r2] + 1704 .LVL167: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1705 .loc 4 360 3 is_stmt 0 view .LVU584 + 1706 01d0 43F04003 orr r3, r3, #64 + 1707 01d4 1360 str r3, [r2] + 1708 .LVL168: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1709 .loc 4 360 3 view .LVU585 + 1710 .LBE350: + 1711 .LBE349: +1917:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI5))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w + 1712 .loc 2 1917 3 is_stmt 1 view .LVU586 +1918:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for ThrLD2 ADC + 1713 .loc 2 1918 3 view .LVU587 +1917:Src/main.c **** while(((!LL_SPI_IsActiveFlag_RXNE(SPI5))&&(tmp32<=1000))) {tmp32++;}//When rec. last data cycle w + 1714 .loc 2 1917 9 is_stmt 0 view .LVU588 + 1715 01d6 0023 movs r3, #0 + 1716 .LVL169: + 1717 .L94: +1918:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for ThrLD2 ADC + 1718 .loc 2 1918 8 is_stmt 1 discriminator 1 view .LVU589 + 1719 .LBB351: + 1720 .LBI351: + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1721 .loc 4 905 26 discriminator 1 view .LVU590 + 1722 .LBB352: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1723 .loc 4 907 3 discriminator 1 view .LVU591 + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1724 .loc 4 907 12 is_stmt 0 discriminator 1 view .LVU592 + 1725 01d8 114A ldr r2, .L106+12 + 1726 01da 9268 ldr r2, [r2, #8] + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1727 .loc 4 907 68 discriminator 1 view .LVU593 + 1728 01dc 12F0010F tst r2, #1 + 1729 01e0 04D1 bne .L95 + 1730 .LVL170: + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1731 .loc 4 907 68 discriminator 1 view .LVU594 + 1732 .LBE352: + 1733 .LBE351: +1918:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for ThrLD2 ADC + 1734 .loc 2 1918 43 view .LVU595 + 1735 01e2 B3F57A7F cmp r3, #1000 + ARM GAS /tmp/ccdsDELB.s page 139 + + + 1736 01e6 01D8 bhi .L95 +1918:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for ThrLD2 ADC + 1737 .loc 2 1918 62 is_stmt 1 discriminator 3 view .LVU596 +1918:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for ThrLD2 ADC + 1738 .loc 2 1918 67 is_stmt 0 discriminator 3 view .LVU597 + 1739 01e8 0133 adds r3, r3, #1 + 1740 .LVL171: +1918:Src/main.c **** LL_SPI_Disable(SPI5);//Enable SPI for ThrLD2 ADC + 1741 .loc 2 1918 67 discriminator 3 view .LVU598 + 1742 01ea F5E7 b .L94 + 1743 .L95: +1919:Src/main.c **** while(tmp32<500){tmp32++;} + 1744 .loc 2 1919 3 is_stmt 1 view .LVU599 + 1745 .LVL172: + 1746 .LBB353: + 1747 .LBI353: + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 1748 .loc 4 370 22 view .LVU600 + 1749 .LBB354: + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1750 .loc 4 372 3 view .LVU601 + 1751 01ec 0C49 ldr r1, .L106+12 + 1752 01ee 0A68 ldr r2, [r1] + 1753 01f0 22F04002 bic r2, r2, #64 + 1754 01f4 0A60 str r2, [r1] + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 1755 .loc 4 373 1 is_stmt 0 view .LVU602 + 1756 01f6 00E0 b .L97 + 1757 .LVL173: + 1758 .L98: + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 1759 .loc 4 373 1 view .LVU603 + 1760 .LBE354: + 1761 .LBE353: +1920:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1762 .loc 2 1920 20 is_stmt 1 discriminator 2 view .LVU604 +1920:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1763 .loc 2 1920 25 is_stmt 0 discriminator 2 view .LVU605 + 1764 01f8 0133 adds r3, r3, #1 + 1765 .LVL174: + 1766 .L97: +1920:Src/main.c **** //HAL_SPI_Receive(&hspi4, &P[0], 1, 100); + 1767 .loc 2 1920 8 is_stmt 1 discriminator 1 view .LVU606 + 1768 01fa B3F5FA7F cmp r3, #500 + 1769 01fe FBD3 bcc .L98 +1922:Src/main.c **** P = LL_SPI_ReceiveData16(SPI5); + 1770 .loc 2 1922 3 view .LVU607 + 1771 0200 0122 movs r2, #1 + 1772 0202 4FF48061 mov r1, #1024 + 1773 0206 0448 ldr r0, .L106+4 + 1774 0208 FFF7FEFF bl HAL_GPIO_WritePin + 1775 .LVL175: +1923:Src/main.c **** } + 1776 .loc 2 1923 3 view .LVU608 + 1777 .LBB355: + 1778 .LBI355: +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + ARM GAS /tmp/ccdsDELB.s page 140 + + + 1779 .loc 4 1344 26 view .LVU609 + 1780 .LBB356: +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1781 .loc 4 1346 3 view .LVU610 +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1782 .loc 4 1346 21 is_stmt 0 view .LVU611 + 1783 020c 044B ldr r3, .L106+12 + 1784 020e DD68 ldr r5, [r3, #12] +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1785 .loc 4 1346 10 view .LVU612 + 1786 0210 ADB2 uxth r5, r5 + 1787 .LVL176: +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 1788 .loc 4 1346 10 view .LVU613 + 1789 0212 24E7 b .L75 + 1790 .L107: + 1791 .align 2 + 1792 .L106: + 1793 0214 00100240 .word 1073876992 + 1794 0218 00140240 .word 1073878016 + 1795 021c 00340140 .word 1073820672 + 1796 0220 00500140 .word 1073827840 + 1797 .LBE356: + 1798 .LBE355: + 1799 .cfi_endproc + 1800 .LFE1207: + 1802 .section .text.MX_GPIO_Init,"ax",%progbits + 1803 .align 1 + 1804 .syntax unified + 1805 .thumb + 1806 .thumb_func + 1807 .fpu fpv5-d16 + 1809 MX_GPIO_Init: + 1810 .LFB1202: +1319:Src/main.c **** GPIO_InitTypeDef GPIO_InitStruct = {0}; + 1811 .loc 2 1319 1 is_stmt 1 view -0 + 1812 .cfi_startproc + 1813 @ args = 0, pretend = 0, frame = 48 + 1814 @ frame_needed = 0, uses_anonymous_args = 0 + 1815 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 1816 .LCFI10: + 1817 .cfi_def_cfa_offset 36 + 1818 .cfi_offset 4, -36 + 1819 .cfi_offset 5, -32 + 1820 .cfi_offset 6, -28 + 1821 .cfi_offset 7, -24 + 1822 .cfi_offset 8, -20 + 1823 .cfi_offset 9, -16 + 1824 .cfi_offset 10, -12 + 1825 .cfi_offset 11, -8 + 1826 .cfi_offset 14, -4 + 1827 0004 8DB0 sub sp, sp, #52 + 1828 .LCFI11: + 1829 .cfi_def_cfa_offset 88 +1320:Src/main.c **** /* USER CODE BEGIN MX_GPIO_Init_1 */ + 1830 .loc 2 1320 3 view .LVU615 +1320:Src/main.c **** /* USER CODE BEGIN MX_GPIO_Init_1 */ + ARM GAS /tmp/ccdsDELB.s page 141 + + + 1831 .loc 2 1320 20 is_stmt 0 view .LVU616 + 1832 0006 0024 movs r4, #0 + 1833 0008 0794 str r4, [sp, #28] + 1834 000a 0894 str r4, [sp, #32] + 1835 000c 0994 str r4, [sp, #36] + 1836 000e 0A94 str r4, [sp, #40] + 1837 0010 0B94 str r4, [sp, #44] +1325:Src/main.c **** __HAL_RCC_GPIOH_CLK_ENABLE(); + 1838 .loc 2 1325 3 is_stmt 1 view .LVU617 + 1839 .LBB357: +1325:Src/main.c **** __HAL_RCC_GPIOH_CLK_ENABLE(); + 1840 .loc 2 1325 3 view .LVU618 +1325:Src/main.c **** __HAL_RCC_GPIOH_CLK_ENABLE(); + 1841 .loc 2 1325 3 view .LVU619 + 1842 0012 784B ldr r3, .L110 + 1843 0014 1A6B ldr r2, [r3, #48] + 1844 0016 42F02002 orr r2, r2, #32 + 1845 001a 1A63 str r2, [r3, #48] +1325:Src/main.c **** __HAL_RCC_GPIOH_CLK_ENABLE(); + 1846 .loc 2 1325 3 view .LVU620 + 1847 001c 1A6B ldr r2, [r3, #48] + 1848 001e 02F02002 and r2, r2, #32 + 1849 0022 0092 str r2, [sp] +1325:Src/main.c **** __HAL_RCC_GPIOH_CLK_ENABLE(); + 1850 .loc 2 1325 3 view .LVU621 + 1851 0024 009A ldr r2, [sp] + 1852 .LBE357: +1325:Src/main.c **** __HAL_RCC_GPIOH_CLK_ENABLE(); + 1853 .loc 2 1325 3 view .LVU622 +1326:Src/main.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); + 1854 .loc 2 1326 3 view .LVU623 + 1855 .LBB358: +1326:Src/main.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); + 1856 .loc 2 1326 3 view .LVU624 +1326:Src/main.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); + 1857 .loc 2 1326 3 view .LVU625 + 1858 0026 1A6B ldr r2, [r3, #48] + 1859 0028 42F08002 orr r2, r2, #128 + 1860 002c 1A63 str r2, [r3, #48] +1326:Src/main.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); + 1861 .loc 2 1326 3 view .LVU626 + 1862 002e 1A6B ldr r2, [r3, #48] + 1863 0030 02F08002 and r2, r2, #128 + 1864 0034 0192 str r2, [sp, #4] +1326:Src/main.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); + 1865 .loc 2 1326 3 view .LVU627 + 1866 0036 019A ldr r2, [sp, #4] + 1867 .LBE358: +1326:Src/main.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); + 1868 .loc 2 1326 3 view .LVU628 +1327:Src/main.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 1869 .loc 2 1327 3 view .LVU629 + 1870 .LBB359: +1327:Src/main.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 1871 .loc 2 1327 3 view .LVU630 +1327:Src/main.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 1872 .loc 2 1327 3 view .LVU631 + ARM GAS /tmp/ccdsDELB.s page 142 + + + 1873 0038 1A6B ldr r2, [r3, #48] + 1874 003a 42F00402 orr r2, r2, #4 + 1875 003e 1A63 str r2, [r3, #48] +1327:Src/main.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 1876 .loc 2 1327 3 view .LVU632 + 1877 0040 1A6B ldr r2, [r3, #48] + 1878 0042 02F00402 and r2, r2, #4 + 1879 0046 0292 str r2, [sp, #8] +1327:Src/main.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 1880 .loc 2 1327 3 view .LVU633 + 1881 0048 029A ldr r2, [sp, #8] + 1882 .LBE359: +1327:Src/main.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 1883 .loc 2 1327 3 view .LVU634 +1328:Src/main.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 1884 .loc 2 1328 3 view .LVU635 + 1885 .LBB360: +1328:Src/main.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 1886 .loc 2 1328 3 view .LVU636 +1328:Src/main.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 1887 .loc 2 1328 3 view .LVU637 + 1888 004a 1A6B ldr r2, [r3, #48] + 1889 004c 42F00102 orr r2, r2, #1 + 1890 0050 1A63 str r2, [r3, #48] +1328:Src/main.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 1891 .loc 2 1328 3 view .LVU638 + 1892 0052 1A6B ldr r2, [r3, #48] + 1893 0054 02F00102 and r2, r2, #1 + 1894 0058 0392 str r2, [sp, #12] +1328:Src/main.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 1895 .loc 2 1328 3 view .LVU639 + 1896 005a 039A ldr r2, [sp, #12] + 1897 .LBE360: +1328:Src/main.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 1898 .loc 2 1328 3 view .LVU640 +1329:Src/main.c **** __HAL_RCC_GPIOE_CLK_ENABLE(); + 1899 .loc 2 1329 3 view .LVU641 + 1900 .LBB361: +1329:Src/main.c **** __HAL_RCC_GPIOE_CLK_ENABLE(); + 1901 .loc 2 1329 3 view .LVU642 +1329:Src/main.c **** __HAL_RCC_GPIOE_CLK_ENABLE(); + 1902 .loc 2 1329 3 view .LVU643 + 1903 005c 1A6B ldr r2, [r3, #48] + 1904 005e 42F00202 orr r2, r2, #2 + 1905 0062 1A63 str r2, [r3, #48] +1329:Src/main.c **** __HAL_RCC_GPIOE_CLK_ENABLE(); + 1906 .loc 2 1329 3 view .LVU644 + 1907 0064 1A6B ldr r2, [r3, #48] + 1908 0066 02F00202 and r2, r2, #2 + 1909 006a 0492 str r2, [sp, #16] +1329:Src/main.c **** __HAL_RCC_GPIOE_CLK_ENABLE(); + 1910 .loc 2 1329 3 view .LVU645 + 1911 006c 049A ldr r2, [sp, #16] + 1912 .LBE361: +1329:Src/main.c **** __HAL_RCC_GPIOE_CLK_ENABLE(); + 1913 .loc 2 1329 3 view .LVU646 +1330:Src/main.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + ARM GAS /tmp/ccdsDELB.s page 143 + + + 1914 .loc 2 1330 3 view .LVU647 + 1915 .LBB362: +1330:Src/main.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 1916 .loc 2 1330 3 view .LVU648 +1330:Src/main.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 1917 .loc 2 1330 3 view .LVU649 + 1918 006e 1A6B ldr r2, [r3, #48] + 1919 0070 42F01002 orr r2, r2, #16 + 1920 0074 1A63 str r2, [r3, #48] +1330:Src/main.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 1921 .loc 2 1330 3 view .LVU650 + 1922 0076 1A6B ldr r2, [r3, #48] + 1923 0078 02F01002 and r2, r2, #16 + 1924 007c 0592 str r2, [sp, #20] +1330:Src/main.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 1925 .loc 2 1330 3 view .LVU651 + 1926 007e 059A ldr r2, [sp, #20] + 1927 .LBE362: +1330:Src/main.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 1928 .loc 2 1330 3 view .LVU652 +1331:Src/main.c **** + 1929 .loc 2 1331 3 view .LVU653 + 1930 .LBB363: +1331:Src/main.c **** + 1931 .loc 2 1331 3 view .LVU654 +1331:Src/main.c **** + 1932 .loc 2 1331 3 view .LVU655 + 1933 0080 1A6B ldr r2, [r3, #48] + 1934 0082 42F00802 orr r2, r2, #8 + 1935 0086 1A63 str r2, [r3, #48] +1331:Src/main.c **** + 1936 .loc 2 1331 3 view .LVU656 + 1937 0088 1B6B ldr r3, [r3, #48] + 1938 008a 03F00803 and r3, r3, #8 + 1939 008e 0693 str r3, [sp, #24] +1331:Src/main.c **** + 1940 .loc 2 1331 3 view .LVU657 + 1941 0090 069B ldr r3, [sp, #24] + 1942 .LBE363: +1331:Src/main.c **** + 1943 .loc 2 1331 3 view .LVU658 +1334:Src/main.c **** + 1944 .loc 2 1334 3 view .LVU659 + 1945 0092 DFF86CA1 ldr r10, .L110+12 + 1946 0096 2246 mov r2, r4 + 1947 0098 4FF4C861 mov r1, #1600 + 1948 009c 5046 mov r0, r10 + 1949 009e FFF7FEFF bl HAL_GPIO_WritePin + 1950 .LVL177: +1337:Src/main.c **** + 1951 .loc 2 1337 3 view .LVU660 + 1952 00a2 DFF860B1 ldr fp, .L110+16 + 1953 00a6 2246 mov r2, r4 + 1954 00a8 3C21 movs r1, #60 + 1955 00aa 5846 mov r0, fp + 1956 00ac FFF7FEFF bl HAL_GPIO_WritePin + 1957 .LVL178: + ARM GAS /tmp/ccdsDELB.s page 144 + + +1340:Src/main.c **** + 1958 .loc 2 1340 3 view .LVU661 + 1959 00b0 514F ldr r7, .L110+4 + 1960 00b2 2246 mov r2, r4 + 1961 00b4 4B21 movs r1, #75 + 1962 00b6 3846 mov r0, r7 + 1963 00b8 FFF7FEFF bl HAL_GPIO_WritePin + 1964 .LVL179: +1343:Src/main.c **** + 1965 .loc 2 1343 3 view .LVU662 + 1966 00bc 0122 movs r2, #1 + 1967 00be 1021 movs r1, #16 + 1968 00c0 3846 mov r0, r7 + 1969 00c2 FFF7FEFF bl HAL_GPIO_WritePin + 1970 .LVL180: +1346:Src/main.c **** + 1971 .loc 2 1346 3 view .LVU663 + 1972 00c6 4D4E ldr r6, .L110+8 + 1973 00c8 2246 mov r2, r4 + 1974 00ca 4FF44061 mov r1, #3072 + 1975 00ce 3046 mov r0, r6 + 1976 00d0 FFF7FEFF bl HAL_GPIO_WritePin + 1977 .LVL181: +1349:Src/main.c **** + 1978 .loc 2 1349 3 view .LVU664 + 1979 00d4 0122 movs r2, #1 + 1980 00d6 4FF48041 mov r1, #16384 + 1981 00da 3046 mov r0, r6 + 1982 00dc FFF7FEFF bl HAL_GPIO_WritePin + 1983 .LVL182: +1352:Src/main.c **** + 1984 .loc 2 1352 3 view .LVU665 + 1985 00e0 DFF82491 ldr r9, .L110+20 + 1986 00e4 2246 mov r2, r4 + 1987 00e6 4FF49841 mov r1, #19456 + 1988 00ea 4846 mov r0, r9 + 1989 00ec FFF7FEFF bl HAL_GPIO_WritePin + 1990 .LVL183: +1355:Src/main.c **** + 1991 .loc 2 1355 3 view .LVU666 + 1992 00f0 0122 movs r2, #1 + 1993 00f2 4FF48051 mov r1, #4096 + 1994 00f6 4846 mov r0, r9 + 1995 00f8 FFF7FEFF bl HAL_GPIO_WritePin + 1996 .LVL184: +1358:Src/main.c **** + 1997 .loc 2 1358 3 view .LVU667 + 1998 00fc DFF80C81 ldr r8, .L110+24 + 1999 0100 2246 mov r2, r4 + 2000 0102 4FF4C171 mov r1, #386 + 2001 0106 4046 mov r0, r8 + 2002 0108 FFF7FEFF bl HAL_GPIO_WritePin + 2003 .LVL185: +1361:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2004 .loc 2 1361 3 view .LVU668 +1361:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2005 .loc 2 1361 23 is_stmt 0 view .LVU669 + ARM GAS /tmp/ccdsDELB.s page 145 + + + 2006 010c 4FF4C863 mov r3, #1600 + 2007 0110 0793 str r3, [sp, #28] +1362:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2008 .loc 2 1362 3 is_stmt 1 view .LVU670 +1362:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2009 .loc 2 1362 24 is_stmt 0 view .LVU671 + 2010 0112 0125 movs r5, #1 + 2011 0114 0895 str r5, [sp, #32] +1363:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2012 .loc 2 1363 3 is_stmt 1 view .LVU672 +1363:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2013 .loc 2 1363 24 is_stmt 0 view .LVU673 + 2014 0116 0994 str r4, [sp, #36] +1364:Src/main.c **** HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 2015 .loc 2 1364 3 is_stmt 1 view .LVU674 +1364:Src/main.c **** HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 2016 .loc 2 1364 25 is_stmt 0 view .LVU675 + 2017 0118 0A94 str r4, [sp, #40] +1365:Src/main.c **** + 2018 .loc 2 1365 3 is_stmt 1 view .LVU676 + 2019 011a 07A9 add r1, sp, #28 + 2020 011c 5046 mov r0, r10 + 2021 011e FFF7FEFF bl HAL_GPIO_Init + 2022 .LVL186: +1368:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2023 .loc 2 1368 3 view .LVU677 +1368:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2024 .loc 2 1368 23 is_stmt 0 view .LVU678 + 2025 0122 3423 movs r3, #52 + 2026 0124 0793 str r3, [sp, #28] +1369:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2027 .loc 2 1369 3 is_stmt 1 view .LVU679 +1369:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2028 .loc 2 1369 24 is_stmt 0 view .LVU680 + 2029 0126 0895 str r5, [sp, #32] +1370:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2030 .loc 2 1370 3 is_stmt 1 view .LVU681 +1370:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2031 .loc 2 1370 24 is_stmt 0 view .LVU682 + 2032 0128 0994 str r4, [sp, #36] +1371:Src/main.c **** HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 2033 .loc 2 1371 3 is_stmt 1 view .LVU683 +1371:Src/main.c **** HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 2034 .loc 2 1371 25 is_stmt 0 view .LVU684 + 2035 012a 0A94 str r4, [sp, #40] +1372:Src/main.c **** + 2036 .loc 2 1372 3 is_stmt 1 view .LVU685 + 2037 012c 07A9 add r1, sp, #28 + 2038 012e 5846 mov r0, fp + 2039 0130 FFF7FEFF bl HAL_GPIO_Init + 2040 .LVL187: +1375:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2041 .loc 2 1375 3 view .LVU686 +1375:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2042 .loc 2 1375 23 is_stmt 0 view .LVU687 + 2043 0134 0823 movs r3, #8 + 2044 0136 0793 str r3, [sp, #28] + ARM GAS /tmp/ccdsDELB.s page 146 + + +1376:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2045 .loc 2 1376 3 is_stmt 1 view .LVU688 +1376:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2046 .loc 2 1376 24 is_stmt 0 view .LVU689 + 2047 0138 0895 str r5, [sp, #32] +1377:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 2048 .loc 2 1377 3 is_stmt 1 view .LVU690 +1377:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 2049 .loc 2 1377 24 is_stmt 0 view .LVU691 + 2050 013a 0994 str r4, [sp, #36] +1378:Src/main.c **** HAL_GPIO_Init(EN_5V1_GPIO_Port, &GPIO_InitStruct); + 2051 .loc 2 1378 3 is_stmt 1 view .LVU692 +1378:Src/main.c **** HAL_GPIO_Init(EN_5V1_GPIO_Port, &GPIO_InitStruct); + 2052 .loc 2 1378 25 is_stmt 0 view .LVU693 + 2053 013c 0323 movs r3, #3 + 2054 013e 0A93 str r3, [sp, #40] +1379:Src/main.c **** + 2055 .loc 2 1379 3 is_stmt 1 view .LVU694 + 2056 0140 07A9 add r1, sp, #28 + 2057 0142 5846 mov r0, fp + 2058 0144 FFF7FEFF bl HAL_GPIO_Init + 2059 .LVL188: +1383:Src/main.c **** |DAC_LD2_CS_Pin; + 2060 .loc 2 1383 3 view .LVU695 +1383:Src/main.c **** |DAC_LD2_CS_Pin; + 2061 .loc 2 1383 23 is_stmt 0 view .LVU696 + 2062 0148 5B23 movs r3, #91 + 2063 014a 0793 str r3, [sp, #28] +1385:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2064 .loc 2 1385 3 is_stmt 1 view .LVU697 +1385:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2065 .loc 2 1385 24 is_stmt 0 view .LVU698 + 2066 014c 0895 str r5, [sp, #32] +1386:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2067 .loc 2 1386 3 is_stmt 1 view .LVU699 +1386:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2068 .loc 2 1386 24 is_stmt 0 view .LVU700 + 2069 014e 0994 str r4, [sp, #36] +1387:Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 2070 .loc 2 1387 3 is_stmt 1 view .LVU701 +1387:Src/main.c **** HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 2071 .loc 2 1387 25 is_stmt 0 view .LVU702 + 2072 0150 0A94 str r4, [sp, #40] +1388:Src/main.c **** + 2073 .loc 2 1388 3 is_stmt 1 view .LVU703 + 2074 0152 07A9 add r1, sp, #28 + 2075 0154 3846 mov r0, r7 + 2076 0156 FFF7FEFF bl HAL_GPIO_Init + 2077 .LVL189: +1391:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 2078 .loc 2 1391 3 view .LVU704 +1391:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 2079 .loc 2 1391 23 is_stmt 0 view .LVU705 + 2080 015a 4FF4F043 mov r3, #30720 + 2081 015e 0793 str r3, [sp, #28] +1392:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2082 .loc 2 1392 3 is_stmt 1 view .LVU706 + ARM GAS /tmp/ccdsDELB.s page 147 + + +1392:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2083 .loc 2 1392 24 is_stmt 0 view .LVU707 + 2084 0160 0894 str r4, [sp, #32] +1393:Src/main.c **** HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 2085 .loc 2 1393 3 is_stmt 1 view .LVU708 +1393:Src/main.c **** HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 2086 .loc 2 1393 24 is_stmt 0 view .LVU709 + 2087 0162 0994 str r4, [sp, #36] +1394:Src/main.c **** + 2088 .loc 2 1394 3 is_stmt 1 view .LVU710 + 2089 0164 07A9 add r1, sp, #28 + 2090 0166 5046 mov r0, r10 + 2091 0168 FFF7FEFF bl HAL_GPIO_Init + 2092 .LVL190: +1397:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2093 .loc 2 1397 3 view .LVU711 +1397:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2094 .loc 2 1397 23 is_stmt 0 view .LVU712 + 2095 016c 4FF44063 mov r3, #3072 + 2096 0170 0793 str r3, [sp, #28] +1398:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2097 .loc 2 1398 3 is_stmt 1 view .LVU713 +1398:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2098 .loc 2 1398 24 is_stmt 0 view .LVU714 + 2099 0172 0895 str r5, [sp, #32] +1399:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2100 .loc 2 1399 3 is_stmt 1 view .LVU715 +1399:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2101 .loc 2 1399 24 is_stmt 0 view .LVU716 + 2102 0174 0994 str r4, [sp, #36] +1400:Src/main.c **** HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + 2103 .loc 2 1400 3 is_stmt 1 view .LVU717 +1400:Src/main.c **** HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); + 2104 .loc 2 1400 25 is_stmt 0 view .LVU718 + 2105 0176 0A94 str r4, [sp, #40] +1401:Src/main.c **** + 2106 .loc 2 1401 3 is_stmt 1 view .LVU719 + 2107 0178 07A9 add r1, sp, #28 + 2108 017a 3046 mov r0, r6 + 2109 017c FFF7FEFF bl HAL_GPIO_Init + 2110 .LVL191: +1404:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2111 .loc 2 1404 3 view .LVU720 +1404:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2112 .loc 2 1404 23 is_stmt 0 view .LVU721 + 2113 0180 4FF48043 mov r3, #16384 + 2114 0184 0793 str r3, [sp, #28] +1405:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2115 .loc 2 1405 3 is_stmt 1 view .LVU722 +1405:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2116 .loc 2 1405 24 is_stmt 0 view .LVU723 + 2117 0186 0895 str r5, [sp, #32] +1406:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 2118 .loc 2 1406 3 is_stmt 1 view .LVU724 +1406:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 2119 .loc 2 1406 24 is_stmt 0 view .LVU725 + 2120 0188 0994 str r4, [sp, #36] + ARM GAS /tmp/ccdsDELB.s page 148 + + +1407:Src/main.c **** HAL_GPIO_Init(SPI4_CNV_GPIO_Port, &GPIO_InitStruct); + 2121 .loc 2 1407 3 is_stmt 1 view .LVU726 +1407:Src/main.c **** HAL_GPIO_Init(SPI4_CNV_GPIO_Port, &GPIO_InitStruct); + 2122 .loc 2 1407 25 is_stmt 0 view .LVU727 + 2123 018a 0323 movs r3, #3 + 2124 018c 0A93 str r3, [sp, #40] +1408:Src/main.c **** + 2125 .loc 2 1408 3 is_stmt 1 view .LVU728 + 2126 018e 07A9 add r1, sp, #28 + 2127 0190 3046 mov r0, r6 + 2128 0192 FFF7FEFF bl HAL_GPIO_Init + 2129 .LVL192: +1411:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2130 .loc 2 1411 3 view .LVU729 +1411:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2131 .loc 2 1411 23 is_stmt 0 view .LVU730 + 2132 0196 4FF4B843 mov r3, #23552 + 2133 019a 0793 str r3, [sp, #28] +1412:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2134 .loc 2 1412 3 is_stmt 1 view .LVU731 +1412:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2135 .loc 2 1412 24 is_stmt 0 view .LVU732 + 2136 019c 0895 str r5, [sp, #32] +1413:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2137 .loc 2 1413 3 is_stmt 1 view .LVU733 +1413:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2138 .loc 2 1413 24 is_stmt 0 view .LVU734 + 2139 019e 0994 str r4, [sp, #36] +1414:Src/main.c **** HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 2140 .loc 2 1414 3 is_stmt 1 view .LVU735 +1414:Src/main.c **** HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 2141 .loc 2 1414 25 is_stmt 0 view .LVU736 + 2142 01a0 0A94 str r4, [sp, #40] +1415:Src/main.c **** + 2143 .loc 2 1415 3 is_stmt 1 view .LVU737 + 2144 01a2 07A9 add r1, sp, #28 + 2145 01a4 4846 mov r0, r9 + 2146 01a6 FFF7FEFF bl HAL_GPIO_Init + 2147 .LVL193: +1418:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2148 .loc 2 1418 3 view .LVU738 +1418:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + 2149 .loc 2 1418 23 is_stmt 0 view .LVU739 + 2150 01aa 4FF4C173 mov r3, #386 + 2151 01ae 0793 str r3, [sp, #28] +1419:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2152 .loc 2 1419 3 is_stmt 1 view .LVU740 +1419:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2153 .loc 2 1419 24 is_stmt 0 view .LVU741 + 2154 01b0 0895 str r5, [sp, #32] +1420:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2155 .loc 2 1420 3 is_stmt 1 view .LVU742 +1420:Src/main.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + 2156 .loc 2 1420 24 is_stmt 0 view .LVU743 + 2157 01b2 0994 str r4, [sp, #36] +1421:Src/main.c **** HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + 2158 .loc 2 1421 3 is_stmt 1 view .LVU744 + ARM GAS /tmp/ccdsDELB.s page 149 + + +1421:Src/main.c **** HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + 2159 .loc 2 1421 25 is_stmt 0 view .LVU745 + 2160 01b4 0A94 str r4, [sp, #40] +1422:Src/main.c **** + 2161 .loc 2 1422 3 is_stmt 1 view .LVU746 + 2162 01b6 07A9 add r1, sp, #28 + 2163 01b8 4046 mov r0, r8 + 2164 01ba FFF7FEFF bl HAL_GPIO_Init + 2165 .LVL194: +1425:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 2166 .loc 2 1425 3 view .LVU747 +1425:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 2167 .loc 2 1425 23 is_stmt 0 view .LVU748 + 2168 01be 4FF48073 mov r3, #256 + 2169 01c2 0793 str r3, [sp, #28] +1426:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2170 .loc 2 1426 3 is_stmt 1 view .LVU749 +1426:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2171 .loc 2 1426 24 is_stmt 0 view .LVU750 + 2172 01c4 0894 str r4, [sp, #32] +1427:Src/main.c **** HAL_GPIO_Init(USB_FLAG_GPIO_Port, &GPIO_InitStruct); + 2173 .loc 2 1427 3 is_stmt 1 view .LVU751 +1427:Src/main.c **** HAL_GPIO_Init(USB_FLAG_GPIO_Port, &GPIO_InitStruct); + 2174 .loc 2 1427 24 is_stmt 0 view .LVU752 + 2175 01c6 0994 str r4, [sp, #36] +1428:Src/main.c **** + 2176 .loc 2 1428 3 is_stmt 1 view .LVU753 + 2177 01c8 07A9 add r1, sp, #28 + 2178 01ca 3846 mov r0, r7 + 2179 01cc FFF7FEFF bl HAL_GPIO_Init + 2180 .LVL195: +1431:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 2181 .loc 2 1431 3 view .LVU754 +1431:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 2182 .loc 2 1431 23 is_stmt 0 view .LVU755 + 2183 01d0 0795 str r5, [sp, #28] +1432:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2184 .loc 2 1432 3 is_stmt 1 view .LVU756 +1432:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2185 .loc 2 1432 24 is_stmt 0 view .LVU757 + 2186 01d2 0894 str r4, [sp, #32] +1433:Src/main.c **** HAL_GPIO_Init(SDMMC1_EN_GPIO_Port, &GPIO_InitStruct); + 2187 .loc 2 1433 3 is_stmt 1 view .LVU758 +1433:Src/main.c **** HAL_GPIO_Init(SDMMC1_EN_GPIO_Port, &GPIO_InitStruct); + 2188 .loc 2 1433 24 is_stmt 0 view .LVU759 + 2189 01d4 0994 str r4, [sp, #36] +1434:Src/main.c **** + 2190 .loc 2 1434 3 is_stmt 1 view .LVU760 + 2191 01d6 07A9 add r1, sp, #28 + 2192 01d8 4046 mov r0, r8 + 2193 01da FFF7FEFF bl HAL_GPIO_Init + 2194 .LVL196: +1437:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 2195 .loc 2 1437 3 view .LVU761 +1437:Src/main.c **** GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + 2196 .loc 2 1437 23 is_stmt 0 view .LVU762 + 2197 01de 0223 movs r3, #2 + ARM GAS /tmp/ccdsDELB.s page 150 + + + 2198 01e0 0793 str r3, [sp, #28] +1438:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2199 .loc 2 1438 3 is_stmt 1 view .LVU763 +1438:Src/main.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 2200 .loc 2 1438 24 is_stmt 0 view .LVU764 + 2201 01e2 0894 str r4, [sp, #32] +1439:Src/main.c **** HAL_GPIO_Init(FPGA_CONF_DONE_GPIO_Port, &GPIO_InitStruct); + 2202 .loc 2 1439 3 is_stmt 1 view .LVU765 +1439:Src/main.c **** HAL_GPIO_Init(FPGA_CONF_DONE_GPIO_Port, &GPIO_InitStruct); + 2203 .loc 2 1439 24 is_stmt 0 view .LVU766 + 2204 01e4 0994 str r4, [sp, #36] +1440:Src/main.c **** + 2205 .loc 2 1440 3 is_stmt 1 view .LVU767 + 2206 01e6 07A9 add r1, sp, #28 + 2207 01e8 3046 mov r0, r6 + 2208 01ea FFF7FEFF bl HAL_GPIO_Init + 2209 .LVL197: +1444:Src/main.c **** + 2210 .loc 2 1444 1 is_stmt 0 view .LVU768 + 2211 01ee 0DB0 add sp, sp, #52 + 2212 .LCFI12: + 2213 .cfi_def_cfa_offset 36 + 2214 @ sp needed + 2215 01f0 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 2216 .L111: + 2217 .align 2 + 2218 .L110: + 2219 01f4 00380240 .word 1073887232 + 2220 01f8 00000240 .word 1073872896 + 2221 01fc 00100240 .word 1073876992 + 2222 0200 00140240 .word 1073878016 + 2223 0204 00080240 .word 1073874944 + 2224 0208 00040240 .word 1073873920 + 2225 020c 000C0240 .word 1073875968 + 2226 .cfi_endproc + 2227 .LFE1202: + 2229 .section .text.MX_SPI4_Init,"ax",%progbits + 2230 .align 1 + 2231 .syntax unified + 2232 .thumb + 2233 .thumb_func + 2234 .fpu fpv5-d16 + 2236 MX_SPI4_Init: + 2237 .LFB1192: + 836:Src/main.c **** + 2238 .loc 2 836 1 is_stmt 1 view -0 + 2239 .cfi_startproc + 2240 @ args = 0, pretend = 0, frame = 72 + 2241 @ frame_needed = 0, uses_anonymous_args = 0 + 2242 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 2243 .LCFI13: + 2244 .cfi_def_cfa_offset 24 + 2245 .cfi_offset 4, -24 + 2246 .cfi_offset 5, -20 + 2247 .cfi_offset 6, -16 + 2248 .cfi_offset 7, -12 + 2249 .cfi_offset 8, -8 + ARM GAS /tmp/ccdsDELB.s page 151 + + + 2250 .cfi_offset 14, -4 + 2251 0004 92B0 sub sp, sp, #72 + 2252 .LCFI14: + 2253 .cfi_def_cfa_offset 96 + 842:Src/main.c **** + 2254 .loc 2 842 3 view .LVU770 + 842:Src/main.c **** + 2255 .loc 2 842 22 is_stmt 0 view .LVU771 + 2256 0006 2822 movs r2, #40 + 2257 0008 0021 movs r1, #0 + 2258 000a 08A8 add r0, sp, #32 + 2259 000c FFF7FEFF bl memset + 2260 .LVL198: + 844:Src/main.c **** + 2261 .loc 2 844 3 is_stmt 1 view .LVU772 + 844:Src/main.c **** + 2262 .loc 2 844 23 is_stmt 0 view .LVU773 + 2263 0010 0024 movs r4, #0 + 2264 0012 0294 str r4, [sp, #8] + 2265 0014 0394 str r4, [sp, #12] + 2266 0016 0494 str r4, [sp, #16] + 2267 0018 0594 str r4, [sp, #20] + 2268 001a 0694 str r4, [sp, #24] + 2269 001c 0794 str r4, [sp, #28] + 847:Src/main.c **** + 2270 .loc 2 847 3 is_stmt 1 view .LVU774 + 2271 .LVL199: + 2272 .LBB364: + 2273 .LBI364: + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB1 peripheral clock is enabled or not + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_IsEnabledClock\n + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_IsEnabledClock\n + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_IsEnabledClock\n + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_IsEnabledClock\n + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_IsEnabledClock\n + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_IsEnabledClock\n + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_IsEnabledClock\n + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_IsEnabledClock\n + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_IsEnabledClock\n + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_IsEnabledClock\n + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_IsEnabledClock\n + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_IsEnabledClock\n + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_IsEnabledClock\n + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_IsEnabledClock\n + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_IsEnabledClock\n + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_IsEnabledClock\n + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_IsEnabledClock\n + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_IsEnabledClock + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + ARM GAS /tmp/ccdsDELB.s page 152 + + + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB1ENR, Periphs) == Periphs); + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB1 peripherals clock. + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_DisableClock\n + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_DisableClock\n + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_DisableClock\n + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_DisableClock\n + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_DisableClock\n + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_DisableClock\n + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_DisableClock\n + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_DisableClock\n + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_DisableClock\n + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_DisableClock\n + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_DisableClock\n + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_DisableClock\n + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_DisableClock\n + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_DisableClock\n + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_DisableClock\n + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_DisableClock\n + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_DisableClock\n + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_DisableClock\n + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_DisableClock\n + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_DisableClock\n + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_DisableClock\n + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_DisableClock\n + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_DisableClock + ARM GAS /tmp/ccdsDELB.s page 153 + + + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1ENR, Periphs); + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB1 peripherals reset. + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ForceReset\n + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ForceReset\n + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ForceReset\n + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ForceReset\n + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ForceReset\n + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ForceReset\n + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ForceReset\n + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ForceReset\n + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ForceReset\n + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ForceReset\n + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ForceReset\n + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ForceReset\n + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset\n + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ForceReset\n + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ForceReset\n + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ForceReset\n + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ForceReset + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + ARM GAS /tmp/ccdsDELB.s page 154 + + + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1RSTR, Periphs); + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB1 peripherals reset. + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ReleaseReset\n + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ReleaseReset\n + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ReleaseReset\n + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ReleaseReset\n + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ReleaseReset\n + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ReleaseReset\n + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ReleaseReset\n + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ReleaseReset\n + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ReleaseReset\n + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ReleaseReset\n + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ReleaseReset\n + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ReleaseReset\n + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ReleaseReset\n + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ReleaseReset + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + ARM GAS /tmp/ccdsDELB.s page 155 + + + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1RSTR, Periphs); + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB1 peripheral clocks in low-power mode + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1LPENR GPIOALPEN LL_AHB1_GRP1_EnableClockLowPower\n + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOBLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOCLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIODLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOELPEN LL_AHB1_GRP1_EnableClockLowPower\n + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOFLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOGLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOHLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOILPEN LL_AHB1_GRP1_EnableClockLowPower\n + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOJLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOKLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR CRCLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR AXILPEN LL_AHB1_GRP1_EnableClockLowPower\n + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR FLITFLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM1LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM2LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR BKPSRAMLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DTCMRAMLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA1LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2DLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACTXLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACRXLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACPTPLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSULPILPEN LL_AHB1_GRP1_EnableClockLowPower + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_AXI + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_FLITF + ARM GAS /tmp/ccdsDELB.s page 156 + + + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM2 + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_EnableClockLowPower(uint32_t Periphs) + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1LPENR, Periphs); + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB1LPENR, Periphs); + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB1 peripheral clocks in low-power mode + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1LPENR GPIOALPEN LL_AHB1_GRP1_DisableClockLowPower\n + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOBLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOCLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIODLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOELPEN LL_AHB1_GRP1_DisableClockLowPower\n + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOFLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOGLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOHLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOILPEN LL_AHB1_GRP1_DisableClockLowPower\n + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOJLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOKLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR CRCLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR AXILPEN LL_AHB1_GRP1_DisableClockLowPower\n + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR FLITFLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM1LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM2LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR BKPSRAMLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DTCMRAMLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA1LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2DLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACTXLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACRXLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACPTPLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSULPILPEN LL_AHB1_GRP1_DisableClockLowPower + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + ARM GAS /tmp/ccdsDELB.s page 157 + + + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_AXI + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_FLITF + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM2 + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_DisableClockLowPower(uint32_t Periphs) + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1LPENR, Periphs); + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB2 AHB2 + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB2 peripherals clock. + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_EnableClock\n + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_EnableClock\n + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_EnableClock\n + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_EnableClock\n + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_EnableClock\n + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_EnableClock\n + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_EnableClock + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + ARM GAS /tmp/ccdsDELB.s page 158 + + + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs) + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2ENR, Periphs); + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB2 peripheral clock is enabled or not + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_IsEnabledClock\n + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_IsEnabledClock\n + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_IsEnabledClock\n + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_IsEnabledClock\n + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_IsEnabledClock\n + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_IsEnabledClock\n + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_IsEnabledClock + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB2_GRP1_IsEnabledClock(uint32_t Periphs) + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB2ENR, Periphs) == Periphs); + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB2 peripherals clock. + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_DisableClock\n + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_DisableClock\n + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_DisableClock\n + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_DisableClock\n + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_DisableClock\n + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_DisableClock\n + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_DisableClock + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + ARM GAS /tmp/ccdsDELB.s page 159 + + + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_DisableClock(uint32_t Periphs) + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2ENR, Periphs); + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB2 peripherals reset. + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2RSTR DCMIRST LL_AHB2_GRP1_ForceReset\n + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR JPEGRST LL_AHB2_GRP1_ForceReset\n + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR CRYPRST LL_AHB2_GRP1_ForceReset\n + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR AESRST LL_AHB2_GRP1_ForceReset\n + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR HASHRST LL_AHB2_GRP1_ForceReset\n + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR RNGRST LL_AHB2_GRP1_ForceReset\n + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ForceReset + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_ForceReset(uint32_t Periphs) + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2RSTR, Periphs); + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB2 peripherals reset. + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2RSTR DCMIRST LL_AHB2_GRP1_ReleaseReset\n + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR JPEGRST LL_AHB2_GRP1_ReleaseReset\n + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR CRYPRST LL_AHB2_GRP1_ReleaseReset\n + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR AESRST LL_AHB2_GRP1_ReleaseReset\n + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR HASHRST LL_AHB2_GRP1_ReleaseReset\n + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR RNGRST LL_AHB2_GRP1_ReleaseReset\n + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ReleaseReset + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + ARM GAS /tmp/ccdsDELB.s page 160 + + + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_ReleaseReset(uint32_t Periphs) + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2RSTR, Periphs); + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB2 peripheral clocks in low-power mode + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2LPENR DCMILPEN LL_AHB2_GRP1_EnableClockLowPower\n + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR JPEGLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR CRYPLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR AESLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR HASHLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR RNGLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR OTGFSLPEN LL_AHB2_GRP1_EnableClockLowPower + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_EnableClockLowPower(uint32_t Periphs) + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2LPENR, Periphs); + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB2LPENR, Periphs); + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB2 peripheral clocks in low-power mode + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2LPENR DCMILPEN LL_AHB2_GRP1_DisableClockLowPower\n + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR JPEGLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR CRYPLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR AESLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR HASHLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR RNGLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR OTGFSLPEN LL_AHB2_GRP1_DisableClockLowPower + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + ARM GAS /tmp/ccdsDELB.s page 161 + + + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_DisableClockLowPower(uint32_t Periphs) + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2LPENR, Periphs); + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB3 AHB3 + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB3 peripherals clock. + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_EnableClock\n + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_EnableClock + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_EnableClock(uint32_t Periphs) + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3ENR, Periphs); + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB3ENR, Periphs); + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB3 peripheral clock is enabled or not + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_IsEnabledClock\n + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_IsEnabledClock + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB3_GRP1_IsEnabledClock(uint32_t Periphs) + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB3ENR, Periphs) == Periphs); + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB3 peripherals clock. + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_DisableClock\n + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_DisableClock + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + ARM GAS /tmp/ccdsDELB.s page 162 + + + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_DisableClock(uint32_t Periphs) + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3ENR, Periphs); + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB3 peripherals reset. + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ForceReset\n + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3RSTR QSPIRST LL_AHB3_GRP1_ForceReset + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_ALL + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_ForceReset(uint32_t Periphs) + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3RSTR, Periphs); + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB3 peripherals reset. + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ReleaseReset\n + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3RSTR QSPIRST LL_AHB3_GRP1_ReleaseReset + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_ReleaseReset(uint32_t Periphs) + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3RSTR, Periphs); + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB3 peripheral clocks in low-power mode + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3LPENR FMCLPEN LL_AHB3_GRP1_EnableClockLowPower\n + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3LPENR QSPILPEN LL_AHB3_GRP1_EnableClockLowPower + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_EnableClockLowPower(uint32_t Periphs) + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + ARM GAS /tmp/ccdsDELB.s page 163 + + + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3LPENR, Periphs); + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB3LPENR, Periphs); + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB3 peripheral clocks in low-power mode + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3LPENR FMCLPEN LL_AHB3_GRP1_DisableClockLowPower\n + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3LPENR QSPILPEN LL_AHB3_GRP1_DisableClockLowPower + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_DisableClockLowPower(uint32_t Periphs) + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3LPENR, Periphs); + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_APB1 APB1 + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB1 peripherals clock. +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_EnableClock\n +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_EnableClock\n +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_EnableClock\n +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_EnableClock\n +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_EnableClock\n +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_EnableClock\n +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_EnableClock\n +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_EnableClock\n +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_EnableClock\n +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_EnableClock\n +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_EnableClock\n +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_EnableClock\n +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_EnableClock\n +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_EnableClock\n +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_EnableClock\n +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_EnableClock\n +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_EnableClock\n +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_EnableClock\n +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_EnableClock\n +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_EnableClock\n +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_EnableClock\n +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_EnableClock\n +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_EnableClock\n +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_EnableClock\n + ARM GAS /tmp/ccdsDELB.s page 164 + + +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_EnableClock\n +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_EnableClock\n +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_EnableClock\n +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_EnableClock\n +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_EnableClock\n +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_EnableClock\n +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_EnableClock +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1ENR, Periphs); +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB1ENR, Periphs); +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if APB1 peripheral clock is enabled or not +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_IsEnabledClock\n +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_IsEnabledClock\n +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_IsEnabledClock\n + ARM GAS /tmp/ccdsDELB.s page 165 + + +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_IsEnabledClock\n +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_IsEnabledClock\n +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_IsEnabledClock\n +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_IsEnabledClock\n +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_IsEnabledClock\n +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_IsEnabledClock\n +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_IsEnabledClock\n +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_IsEnabledClock\n +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_IsEnabledClock\n +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_IsEnabledClock\n +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_IsEnabledClock\n +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_IsEnabledClock\n +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_IsEnabledClock\n +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_IsEnabledClock\n +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_IsEnabledClock\n +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_IsEnabledClock\n +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_IsEnabledClock\n +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_IsEnabledClock\n +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_IsEnabledClock\n +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_IsEnabledClock\n +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_IsEnabledClock\n +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_IsEnabledClock\n +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_IsEnabledClock\n +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_IsEnabledClock\n +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_IsEnabledClock\n +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_IsEnabledClock\n +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_IsEnabledClock\n +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_IsEnabledClock +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + ARM GAS /tmp/ccdsDELB.s page 166 + + +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs) +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->APB1ENR, Periphs) == Periphs); +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB1 peripherals clock. +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_DisableClock\n +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_DisableClock\n +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_DisableClock\n +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_DisableClock\n +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_DisableClock\n +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_DisableClock\n +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_DisableClock\n +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_DisableClock\n +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_DisableClock\n +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_DisableClock\n +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_DisableClock\n +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_DisableClock\n +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_DisableClock\n +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_DisableClock\n +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_DisableClock\n +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_DisableClock\n +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_DisableClock\n +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_DisableClock\n +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_DisableClock\n +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_DisableClock\n +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_DisableClock\n +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_DisableClock\n +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_DisableClock\n +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_DisableClock\n +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_DisableClock\n +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_DisableClock\n +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_DisableClock\n +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_DisableClock\n +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_DisableClock\n +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_DisableClock\n +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_DisableClock +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + ARM GAS /tmp/ccdsDELB.s page 167 + + +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs) +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1ENR, Periphs); +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force APB1 peripherals reset. +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ForceReset\n +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM3RST LL_APB1_GRP1_ForceReset\n +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM4RST LL_APB1_GRP1_ForceReset\n +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM5RST LL_APB1_GRP1_ForceReset\n +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM6RST LL_APB1_GRP1_ForceReset\n +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM7RST LL_APB1_GRP1_ForceReset\n +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM12RST LL_APB1_GRP1_ForceReset\n +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM13RST LL_APB1_GRP1_ForceReset\n +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM14RST LL_APB1_GRP1_ForceReset\n +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR LPTIM1RST LL_APB1_GRP1_ForceReset\n +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR WWDGRST LL_APB1_GRP1_ForceReset\n +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI2RST LL_APB1_GRP1_ForceReset\n +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI3RST LL_APB1_GRP1_ForceReset\n +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPDIFRXRST LL_APB1_GRP1_ForceReset\n +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART2RST LL_APB1_GRP1_ForceReset\n +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART3RST LL_APB1_GRP1_ForceReset\n +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART4RST LL_APB1_GRP1_ForceReset\n +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART5RST LL_APB1_GRP1_ForceReset\n +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C1RST LL_APB1_GRP1_ForceReset\n +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C2RST LL_APB1_GRP1_ForceReset\n +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C3RST LL_APB1_GRP1_ForceReset\n +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C4RST LL_APB1_GRP1_ForceReset\n +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN1RST LL_APB1_GRP1_ForceReset\n +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN2RST LL_APB1_GRP1_ForceReset\n +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN3RST LL_APB1_GRP1_ForceReset\n +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CECRST LL_APB1_GRP1_ForceReset\n + ARM GAS /tmp/ccdsDELB.s page 168 + + +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR PWRRST LL_APB1_GRP1_ForceReset\n +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR DACRST LL_APB1_GRP1_ForceReset\n +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART7RST LL_APB1_GRP1_ForceReset\n +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART8RST LL_APB1_GRP1_ForceReset +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs) +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1RSTR, Periphs); +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release APB1 peripherals reset. +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ReleaseReset\n +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM3RST LL_APB1_GRP1_ReleaseReset\n +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM4RST LL_APB1_GRP1_ReleaseReset\n +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM5RST LL_APB1_GRP1_ReleaseReset\n +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM6RST LL_APB1_GRP1_ReleaseReset\n +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM7RST LL_APB1_GRP1_ReleaseReset\n +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM12RST LL_APB1_GRP1_ReleaseReset\n +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM13RST LL_APB1_GRP1_ReleaseReset\n +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM14RST LL_APB1_GRP1_ReleaseReset\n +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR LPTIM1RST LL_APB1_GRP1_ReleaseReset\n +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR WWDGRST LL_APB1_GRP1_ReleaseReset\n + ARM GAS /tmp/ccdsDELB.s page 169 + + +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI2RST LL_APB1_GRP1_ReleaseReset\n +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI3RST LL_APB1_GRP1_ReleaseReset\n +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPDIFRXRST LL_APB1_GRP1_ReleaseReset\n +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART2RST LL_APB1_GRP1_ReleaseReset\n +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART3RST LL_APB1_GRP1_ReleaseReset\n +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART4RST LL_APB1_GRP1_ReleaseReset\n +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART5RST LL_APB1_GRP1_ReleaseReset\n +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C1RST LL_APB1_GRP1_ReleaseReset\n +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C2RST LL_APB1_GRP1_ReleaseReset\n +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C3RST LL_APB1_GRP1_ReleaseReset\n +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C4RST LL_APB1_GRP1_ReleaseReset\n +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN1RST LL_APB1_GRP1_ReleaseReset\n +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN2RST LL_APB1_GRP1_ReleaseReset\n +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN3RST LL_APB1_GRP1_ReleaseReset\n +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CECRST LL_APB1_GRP1_ReleaseReset\n +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR PWRRST LL_APB1_GRP1_ReleaseReset\n +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR DACRST LL_APB1_GRP1_ReleaseReset\n +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART7RST LL_APB1_GRP1_ReleaseReset\n +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART8RST LL_APB1_GRP1_ReleaseReset +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs) +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1RSTR, Periphs); + ARM GAS /tmp/ccdsDELB.s page 170 + + +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB1 peripheral clocks in low-power mode +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM5LPEN LL_APB1_GRP1_EnableClockLowPower\n +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM6LPEN LL_APB1_GRP1_EnableClockLowPower\n +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM7LPEN LL_APB1_GRP1_EnableClockLowPower\n +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM12LPEN LL_APB1_GRP1_EnableClockLowPower\n +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM13LPEN LL_APB1_GRP1_EnableClockLowPower\n +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM14LPEN LL_APB1_GRP1_EnableClockLowPower\n +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR LPTIM1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR WWDGLPEN LL_APB1_GRP1_EnableClockLowPower\n +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPDIFRXLPEN LL_APB1_GRP1_EnableClockLowPower\n +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART5LPEN LL_APB1_GRP1_EnableClockLowPower\n +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CECLPEN LL_APB1_GRP1_EnableClockLowPower\n +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR PWRLPEN LL_APB1_GRP1_EnableClockLowPower\n +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR DACLPEN LL_APB1_GRP1_EnableClockLowPower\n +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART7LPEN LL_APB1_GRP1_EnableClockLowPower\n +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART8LPEN LL_APB1_GRP1_EnableClockLowPower\n +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR RTCLPEN LL_APB1_GRP1_EnableClockLowPower +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + ARM GAS /tmp/ccdsDELB.s page 171 + + +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_EnableClockLowPower(uint32_t Periphs) +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1LPENR, Periphs); +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB1LPENR, Periphs); +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB1 peripheral clocks in low-power mode +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM5LPEN LL_APB1_GRP1_DisableClockLowPower\n +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM6LPEN LL_APB1_GRP1_DisableClockLowPower\n +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM7LPEN LL_APB1_GRP1_DisableClockLowPower\n +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM12LPEN LL_APB1_GRP1_DisableClockLowPower\n +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM13LPEN LL_APB1_GRP1_DisableClockLowPower\n +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM14LPEN LL_APB1_GRP1_DisableClockLowPower\n +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR LPTIM1LPEN LL_APB1_GRP1_DisableClockLowPower\n +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR WWDGLPEN LL_APB1_GRP1_DisableClockLowPower\n +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPDIFRXLPEN LL_APB1_GRP1_DisableClockLowPower\n +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART5LPEN LL_APB1_GRP1_DisableClockLowPower\n +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C1LPEN LL_APB1_GRP1_DisableClockLowPower\n +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN1LPEN LL_APB1_GRP1_DisableClockLowPower\n +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CECLPEN LL_APB1_GRP1_DisableClockLowPower\n +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR PWRLPEN LL_APB1_GRP1_DisableClockLowPower\n +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR DACLPEN LL_APB1_GRP1_DisableClockLowPower\n +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART7LPEN LL_APB1_GRP1_DisableClockLowPower\n +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART8LPEN LL_APB1_GRP1_DisableClockLowPower\n +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR RTCLPEN LL_APB1_GRP1_DisableClockLowPower +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + ARM GAS /tmp/ccdsDELB.s page 172 + + +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_DisableClockLowPower(uint32_t Periphs) +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1LPENR, Periphs); +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_APB2 APB2 +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB2 peripherals clock. +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_EnableClock\n +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM8EN LL_APB2_GRP1_EnableClock\n +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART1EN LL_APB2_GRP1_EnableClock\n +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART6EN LL_APB2_GRP1_EnableClock\n +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC1EN LL_APB2_GRP1_EnableClock\n +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC2EN LL_APB2_GRP1_EnableClock\n +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC3EN LL_APB2_GRP1_EnableClock\n + ARM GAS /tmp/ccdsDELB.s page 173 + + +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC1EN LL_APB2_GRP1_EnableClock\n +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC2EN LL_APB2_GRP1_EnableClock\n +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI4EN LL_APB2_GRP1_EnableClock\n +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SYSCFGEN LL_APB2_GRP1_EnableClock\n +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM9EN LL_APB2_GRP1_EnableClock\n +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM10EN LL_APB2_GRP1_EnableClock\n +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM11EN LL_APB2_GRP1_EnableClock\n +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI5EN LL_APB2_GRP1_EnableClock\n +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI6EN LL_APB2_GRP1_EnableClock\n +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI1EN LL_APB2_GRP1_EnableClock\n +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI2EN LL_APB2_GRP1_EnableClock\n +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR LTDCEN LL_APB2_GRP1_EnableClock\n +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DSIEN LL_APB2_GRP1_EnableClock\n +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DFSDM1EN LL_APB2_GRP1_EnableClock\n +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR MDIOEN LL_APB2_GRP1_EnableClock\n +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR OTGPHYCEN LL_APB2_GRP1_EnableClock +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) + 2274 .loc 3 1587 22 view .LVU775 + 2275 .LBB365: +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 2276 .loc 3 1589 3 view .LVU776 +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB2ENR, Periphs); + 2277 .loc 3 1590 3 view .LVU777 + 2278 001e 2A4B ldr r3, .L114 + 2279 0020 5A6C ldr r2, [r3, #68] + 2280 0022 42F40052 orr r2, r2, #8192 + ARM GAS /tmp/ccdsDELB.s page 174 + + + 2281 0026 5A64 str r2, [r3, #68] +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB2ENR, Periphs); + 2282 .loc 3 1592 3 view .LVU778 + 2283 .loc 3 1592 12 is_stmt 0 view .LVU779 + 2284 0028 5A6C ldr r2, [r3, #68] + 2285 002a 02F40052 and r2, r2, #8192 + 2286 .loc 3 1592 10 view .LVU780 + 2287 002e 0192 str r2, [sp, #4] +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2288 .loc 3 1593 3 is_stmt 1 view .LVU781 + 2289 0030 019A ldr r2, [sp, #4] + 2290 .LVL200: + 2291 .loc 3 1593 3 is_stmt 0 view .LVU782 + 2292 .LBE365: + 2293 .LBE364: + 849:Src/main.c **** /**SPI4 GPIO Configuration + 2294 .loc 2 849 3 is_stmt 1 view .LVU783 + 2295 .LBB366: + 2296 .LBI366: + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 2297 .loc 3 309 22 view .LVU784 + 2298 .LBB367: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 2299 .loc 3 311 3 view .LVU785 + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 2300 .loc 3 312 3 view .LVU786 + 2301 0032 1A6B ldr r2, [r3, #48] + 2302 0034 42F01002 orr r2, r2, #16 + 2303 0038 1A63 str r2, [r3, #48] + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2304 .loc 3 314 3 view .LVU787 + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2305 .loc 3 314 12 is_stmt 0 view .LVU788 + 2306 003a 1B6B ldr r3, [r3, #48] + 2307 003c 03F01003 and r3, r3, #16 + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2308 .loc 3 314 10 view .LVU789 + 2309 0040 0093 str r3, [sp] + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 2310 .loc 3 315 3 is_stmt 1 view .LVU790 + 2311 0042 009B ldr r3, [sp] + 2312 .LVL201: + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 2313 .loc 3 315 3 is_stmt 0 view .LVU791 + 2314 .LBE367: + 2315 .LBE366: + 854:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2316 .loc 2 854 3 is_stmt 1 view .LVU792 + 854:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2317 .loc 2 854 23 is_stmt 0 view .LVU793 + 2318 0044 4FF48053 mov r3, #4096 + 2319 0048 0293 str r3, [sp, #8] + 855:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2320 .loc 2 855 3 is_stmt 1 view .LVU794 + 855:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2321 .loc 2 855 24 is_stmt 0 view .LVU795 + ARM GAS /tmp/ccdsDELB.s page 175 + + + 2322 004a 0225 movs r5, #2 + 2323 004c 0395 str r5, [sp, #12] + 856:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2324 .loc 2 856 3 is_stmt 1 view .LVU796 + 856:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2325 .loc 2 856 25 is_stmt 0 view .LVU797 + 2326 004e 4FF00308 mov r8, #3 + 2327 0052 CDF81080 str r8, [sp, #16] + 857:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 2328 .loc 2 857 3 is_stmt 1 view .LVU798 + 858:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 2329 .loc 2 858 3 view .LVU799 + 859:Src/main.c **** LL_GPIO_Init(GPIOE, &GPIO_InitStruct); + 2330 .loc 2 859 3 view .LVU800 + 859:Src/main.c **** LL_GPIO_Init(GPIOE, &GPIO_InitStruct); + 2331 .loc 2 859 29 is_stmt 0 view .LVU801 + 2332 0056 0527 movs r7, #5 + 2333 0058 0797 str r7, [sp, #28] + 860:Src/main.c **** + 2334 .loc 2 860 3 is_stmt 1 view .LVU802 + 2335 005a 1C4E ldr r6, .L114+4 + 2336 005c 02A9 add r1, sp, #8 + 2337 005e 3046 mov r0, r6 + 2338 0060 FFF7FEFF bl LL_GPIO_Init + 2339 .LVL202: + 862:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2340 .loc 2 862 3 view .LVU803 + 862:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2341 .loc 2 862 23 is_stmt 0 view .LVU804 + 2342 0064 4FF40053 mov r3, #8192 + 2343 0068 0293 str r3, [sp, #8] + 863:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2344 .loc 2 863 3 is_stmt 1 view .LVU805 + 863:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2345 .loc 2 863 24 is_stmt 0 view .LVU806 + 2346 006a 0395 str r5, [sp, #12] + 864:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2347 .loc 2 864 3 is_stmt 1 view .LVU807 + 864:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2348 .loc 2 864 25 is_stmt 0 view .LVU808 + 2349 006c CDF81080 str r8, [sp, #16] + 865:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 2350 .loc 2 865 3 is_stmt 1 view .LVU809 + 865:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 2351 .loc 2 865 30 is_stmt 0 view .LVU810 + 2352 0070 0594 str r4, [sp, #20] + 866:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 2353 .loc 2 866 3 is_stmt 1 view .LVU811 + 866:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 2354 .loc 2 866 24 is_stmt 0 view .LVU812 + 2355 0072 0694 str r4, [sp, #24] + 867:Src/main.c **** LL_GPIO_Init(GPIOE, &GPIO_InitStruct); + 2356 .loc 2 867 3 is_stmt 1 view .LVU813 + 867:Src/main.c **** LL_GPIO_Init(GPIOE, &GPIO_InitStruct); + 2357 .loc 2 867 29 is_stmt 0 view .LVU814 + 2358 0074 0797 str r7, [sp, #28] + 868:Src/main.c **** + ARM GAS /tmp/ccdsDELB.s page 176 + + + 2359 .loc 2 868 3 is_stmt 1 view .LVU815 + 2360 0076 02A9 add r1, sp, #8 + 2361 0078 3046 mov r0, r6 + 2362 007a FFF7FEFF bl LL_GPIO_Init + 2363 .LVL203: + 874:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 2364 .loc 2 874 3 view .LVU816 + 874:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 2365 .loc 2 874 36 is_stmt 0 view .LVU817 + 2366 007e 4FF48063 mov r3, #1024 + 2367 0082 0893 str r3, [sp, #32] + 875:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 2368 .loc 2 875 3 is_stmt 1 view .LVU818 + 875:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 2369 .loc 2 875 23 is_stmt 0 view .LVU819 + 2370 0084 4FF48273 mov r3, #260 + 2371 0088 0993 str r3, [sp, #36] + 876:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 2372 .loc 2 876 3 is_stmt 1 view .LVU820 + 876:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 2373 .loc 2 876 28 is_stmt 0 view .LVU821 + 2374 008a 4FF47063 mov r3, #3840 + 2375 008e 0A93 str r3, [sp, #40] + 877:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE; + 2376 .loc 2 877 3 is_stmt 1 view .LVU822 + 877:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE; + 2377 .loc 2 877 32 is_stmt 0 view .LVU823 + 2378 0090 0B95 str r5, [sp, #44] + 878:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 2379 .loc 2 878 3 is_stmt 1 view .LVU824 + 878:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 2380 .loc 2 878 29 is_stmt 0 view .LVU825 + 2381 0092 0C94 str r4, [sp, #48] + 879:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + 2382 .loc 2 879 3 is_stmt 1 view .LVU826 + 879:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + 2383 .loc 2 879 22 is_stmt 0 view .LVU827 + 2384 0094 4FF40073 mov r3, #512 + 2385 0098 0D93 str r3, [sp, #52] + 880:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 2386 .loc 2 880 3 is_stmt 1 view .LVU828 + 880:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 2387 .loc 2 880 27 is_stmt 0 view .LVU829 + 2388 009a 1823 movs r3, #24 + 2389 009c 0E93 str r3, [sp, #56] + 881:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 2390 .loc 2 881 3 is_stmt 1 view .LVU830 + 881:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 2391 .loc 2 881 27 is_stmt 0 view .LVU831 + 2392 009e 0F94 str r4, [sp, #60] + 882:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 2393 .loc 2 882 3 is_stmt 1 view .LVU832 + 882:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 2394 .loc 2 882 33 is_stmt 0 view .LVU833 + 2395 00a0 1094 str r4, [sp, #64] + 883:Src/main.c **** LL_SPI_Init(SPI4, &SPI_InitStruct); + 2396 .loc 2 883 3 is_stmt 1 view .LVU834 + ARM GAS /tmp/ccdsDELB.s page 177 + + + 883:Src/main.c **** LL_SPI_Init(SPI4, &SPI_InitStruct); + 2397 .loc 2 883 26 is_stmt 0 view .LVU835 + 2398 00a2 0723 movs r3, #7 + 2399 00a4 1193 str r3, [sp, #68] + 884:Src/main.c **** LL_SPI_SetStandard(SPI4, LL_SPI_PROTOCOL_MOTOROLA); + 2400 .loc 2 884 3 is_stmt 1 view .LVU836 + 2401 00a6 0A4C ldr r4, .L114+8 + 2402 00a8 08A9 add r1, sp, #32 + 2403 00aa 2046 mov r0, r4 + 2404 00ac FFF7FEFF bl LL_SPI_Init + 2405 .LVL204: + 885:Src/main.c **** LL_SPI_DisableNSSPulseMgt(SPI4); + 2406 .loc 2 885 3 view .LVU837 + 2407 .LBB368: + 2408 .LBI368: + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 2409 .loc 4 426 22 view .LVU838 + 2410 .LBB369: + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2411 .loc 4 428 3 view .LVU839 + 2412 00b0 6368 ldr r3, [r4, #4] + 2413 00b2 23F01003 bic r3, r3, #16 + 2414 00b6 6360 str r3, [r4, #4] + 2415 .LVL205: + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2416 .loc 4 428 3 is_stmt 0 view .LVU840 + 2417 .LBE369: + 2418 .LBE368: + 886:Src/main.c **** /* USER CODE BEGIN SPI4_Init 2 */ + 2419 .loc 2 886 3 is_stmt 1 view .LVU841 + 2420 .LBB370: + 2421 .LBI370: + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 2422 .loc 4 874 22 view .LVU842 + 2423 .LBB371: + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2424 .loc 4 876 3 view .LVU843 + 2425 00b8 6368 ldr r3, [r4, #4] + 2426 00ba 23F00803 bic r3, r3, #8 + 2427 00be 6360 str r3, [r4, #4] + 2428 .LVL206: + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2429 .loc 4 876 3 is_stmt 0 view .LVU844 + 2430 .LBE371: + 2431 .LBE370: + 891:Src/main.c **** + 2432 .loc 2 891 1 view .LVU845 + 2433 00c0 12B0 add sp, sp, #72 + 2434 .LCFI15: + 2435 .cfi_def_cfa_offset 24 + 2436 @ sp needed + 2437 00c2 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 2438 .L115: + 2439 00c6 00BF .align 2 + 2440 .L114: + 2441 00c8 00380240 .word 1073887232 + 2442 00cc 00100240 .word 1073876992 + ARM GAS /tmp/ccdsDELB.s page 178 + + + 2443 00d0 00340140 .word 1073820672 + 2444 .cfi_endproc + 2445 .LFE1192: + 2447 .section .text.MX_SPI2_Init,"ax",%progbits + 2448 .align 1 + 2449 .syntax unified + 2450 .thumb + 2451 .thumb_func + 2452 .fpu fpv5-d16 + 2454 MX_SPI2_Init: + 2455 .LFB1191: + 773:Src/main.c **** + 2456 .loc 2 773 1 is_stmt 1 view -0 + 2457 .cfi_startproc + 2458 @ args = 0, pretend = 0, frame = 72 + 2459 @ frame_needed = 0, uses_anonymous_args = 0 + 2460 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 2461 .LCFI16: + 2462 .cfi_def_cfa_offset 24 + 2463 .cfi_offset 4, -24 + 2464 .cfi_offset 5, -20 + 2465 .cfi_offset 6, -16 + 2466 .cfi_offset 7, -12 + 2467 .cfi_offset 8, -8 + 2468 .cfi_offset 14, -4 + 2469 0004 92B0 sub sp, sp, #72 + 2470 .LCFI17: + 2471 .cfi_def_cfa_offset 96 + 779:Src/main.c **** + 2472 .loc 2 779 3 view .LVU847 + 779:Src/main.c **** + 2473 .loc 2 779 22 is_stmt 0 view .LVU848 + 2474 0006 2822 movs r2, #40 + 2475 0008 0021 movs r1, #0 + 2476 000a 08A8 add r0, sp, #32 + 2477 000c FFF7FEFF bl memset + 2478 .LVL207: + 781:Src/main.c **** + 2479 .loc 2 781 3 is_stmt 1 view .LVU849 + 781:Src/main.c **** + 2480 .loc 2 781 23 is_stmt 0 view .LVU850 + 2481 0010 0024 movs r4, #0 + 2482 0012 0294 str r4, [sp, #8] + 2483 0014 0394 str r4, [sp, #12] + 2484 0016 0494 str r4, [sp, #16] + 2485 0018 0594 str r4, [sp, #20] + 2486 001a 0694 str r4, [sp, #24] + 2487 001c 0794 str r4, [sp, #28] + 784:Src/main.c **** + 2488 .loc 2 784 3 is_stmt 1 view .LVU851 + 2489 .LVL208: + 2490 .LBB372: + 2491 .LBI372: +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 2492 .loc 3 1071 22 view .LVU852 + 2493 .LBB373: +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1ENR, Periphs); + ARM GAS /tmp/ccdsDELB.s page 179 + + + 2494 .loc 3 1073 3 view .LVU853 +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 2495 .loc 3 1074 3 view .LVU854 + 2496 001e 294B ldr r3, .L118 + 2497 0020 1A6C ldr r2, [r3, #64] + 2498 0022 42F48042 orr r2, r2, #16384 + 2499 0026 1A64 str r2, [r3, #64] +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2500 .loc 3 1076 3 view .LVU855 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2501 .loc 3 1076 12 is_stmt 0 view .LVU856 + 2502 0028 1A6C ldr r2, [r3, #64] + 2503 002a 02F48042 and r2, r2, #16384 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2504 .loc 3 1076 10 view .LVU857 + 2505 002e 0192 str r2, [sp, #4] +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 2506 .loc 3 1077 3 is_stmt 1 view .LVU858 + 2507 0030 019A ldr r2, [sp, #4] + 2508 .LVL209: +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 2509 .loc 3 1077 3 is_stmt 0 view .LVU859 + 2510 .LBE373: + 2511 .LBE372: + 786:Src/main.c **** /**SPI2 GPIO Configuration + 2512 .loc 2 786 3 is_stmt 1 view .LVU860 + 2513 .LBB374: + 2514 .LBI374: + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 2515 .loc 3 309 22 view .LVU861 + 2516 .LBB375: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 2517 .loc 3 311 3 view .LVU862 + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 2518 .loc 3 312 3 view .LVU863 + 2519 0032 1A6B ldr r2, [r3, #48] + 2520 0034 42F00202 orr r2, r2, #2 + 2521 0038 1A63 str r2, [r3, #48] + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2522 .loc 3 314 3 view .LVU864 + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2523 .loc 3 314 12 is_stmt 0 view .LVU865 + 2524 003a 1B6B ldr r3, [r3, #48] + 2525 003c 03F00203 and r3, r3, #2 + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2526 .loc 3 314 10 view .LVU866 + 2527 0040 0093 str r3, [sp] + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 2528 .loc 3 315 3 is_stmt 1 view .LVU867 + 2529 0042 009B ldr r3, [sp] + 2530 .LVL210: + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 2531 .loc 3 315 3 is_stmt 0 view .LVU868 + 2532 .LBE375: + 2533 .LBE374: + 791:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2534 .loc 2 791 3 is_stmt 1 view .LVU869 + ARM GAS /tmp/ccdsDELB.s page 180 + + + 791:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2535 .loc 2 791 23 is_stmt 0 view .LVU870 + 2536 0044 4FF40053 mov r3, #8192 + 2537 0048 0293 str r3, [sp, #8] + 792:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2538 .loc 2 792 3 is_stmt 1 view .LVU871 + 792:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2539 .loc 2 792 24 is_stmt 0 view .LVU872 + 2540 004a 0225 movs r5, #2 + 2541 004c 0395 str r5, [sp, #12] + 793:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2542 .loc 2 793 3 is_stmt 1 view .LVU873 + 793:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2543 .loc 2 793 25 is_stmt 0 view .LVU874 + 2544 004e 4FF00308 mov r8, #3 + 2545 0052 CDF81080 str r8, [sp, #16] + 794:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 2546 .loc 2 794 3 is_stmt 1 view .LVU875 + 795:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 2547 .loc 2 795 3 view .LVU876 + 796:Src/main.c **** LL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 2548 .loc 2 796 3 view .LVU877 + 796:Src/main.c **** LL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 2549 .loc 2 796 29 is_stmt 0 view .LVU878 + 2550 0056 0527 movs r7, #5 + 2551 0058 0797 str r7, [sp, #28] + 797:Src/main.c **** + 2552 .loc 2 797 3 is_stmt 1 view .LVU879 + 2553 005a 1B4E ldr r6, .L118+4 + 2554 005c 02A9 add r1, sp, #8 + 2555 005e 3046 mov r0, r6 + 2556 0060 FFF7FEFF bl LL_GPIO_Init + 2557 .LVL211: + 799:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2558 .loc 2 799 3 view .LVU880 + 799:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2559 .loc 2 799 23 is_stmt 0 view .LVU881 + 2560 0064 4FF40043 mov r3, #32768 + 2561 0068 0293 str r3, [sp, #8] + 800:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2562 .loc 2 800 3 is_stmt 1 view .LVU882 + 800:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2563 .loc 2 800 24 is_stmt 0 view .LVU883 + 2564 006a 0395 str r5, [sp, #12] + 801:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2565 .loc 2 801 3 is_stmt 1 view .LVU884 + 801:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2566 .loc 2 801 25 is_stmt 0 view .LVU885 + 2567 006c CDF81080 str r8, [sp, #16] + 802:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 2568 .loc 2 802 3 is_stmt 1 view .LVU886 + 802:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 2569 .loc 2 802 30 is_stmt 0 view .LVU887 + 2570 0070 0594 str r4, [sp, #20] + 803:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 2571 .loc 2 803 3 is_stmt 1 view .LVU888 + 803:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + ARM GAS /tmp/ccdsDELB.s page 181 + + + 2572 .loc 2 803 24 is_stmt 0 view .LVU889 + 2573 0072 0694 str r4, [sp, #24] + 804:Src/main.c **** LL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 2574 .loc 2 804 3 is_stmt 1 view .LVU890 + 804:Src/main.c **** LL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 2575 .loc 2 804 29 is_stmt 0 view .LVU891 + 2576 0074 0797 str r7, [sp, #28] + 805:Src/main.c **** + 2577 .loc 2 805 3 is_stmt 1 view .LVU892 + 2578 0076 02A9 add r1, sp, #8 + 2579 0078 3046 mov r0, r6 + 2580 007a FFF7FEFF bl LL_GPIO_Init + 2581 .LVL212: + 811:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 2582 .loc 2 811 3 view .LVU893 + 811:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 2583 .loc 2 811 36 is_stmt 0 view .LVU894 + 2584 007e 0894 str r4, [sp, #32] + 812:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 2585 .loc 2 812 3 is_stmt 1 view .LVU895 + 812:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 2586 .loc 2 812 23 is_stmt 0 view .LVU896 + 2587 0080 4FF48273 mov r3, #260 + 2588 0084 0993 str r3, [sp, #36] + 813:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 2589 .loc 2 813 3 is_stmt 1 view .LVU897 + 813:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 2590 .loc 2 813 28 is_stmt 0 view .LVU898 + 2591 0086 4FF47063 mov r3, #3840 + 2592 008a 0A93 str r3, [sp, #40] + 814:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE; + 2593 .loc 2 814 3 is_stmt 1 view .LVU899 + 814:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE; + 2594 .loc 2 814 32 is_stmt 0 view .LVU900 + 2595 008c 0B95 str r5, [sp, #44] + 815:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 2596 .loc 2 815 3 is_stmt 1 view .LVU901 + 815:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 2597 .loc 2 815 29 is_stmt 0 view .LVU902 + 2598 008e 0123 movs r3, #1 + 2599 0090 0C93 str r3, [sp, #48] + 816:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV8; + 2600 .loc 2 816 3 is_stmt 1 view .LVU903 + 816:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV8; + 2601 .loc 2 816 22 is_stmt 0 view .LVU904 + 2602 0092 4FF40073 mov r3, #512 + 2603 0096 0D93 str r3, [sp, #52] + 817:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 2604 .loc 2 817 3 is_stmt 1 view .LVU905 + 817:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 2605 .loc 2 817 27 is_stmt 0 view .LVU906 + 2606 0098 1023 movs r3, #16 + 2607 009a 0E93 str r3, [sp, #56] + 818:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 2608 .loc 2 818 3 is_stmt 1 view .LVU907 + 818:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 2609 .loc 2 818 27 is_stmt 0 view .LVU908 + ARM GAS /tmp/ccdsDELB.s page 182 + + + 2610 009c 0F94 str r4, [sp, #60] + 819:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 2611 .loc 2 819 3 is_stmt 1 view .LVU909 + 819:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 2612 .loc 2 819 33 is_stmt 0 view .LVU910 + 2613 009e 1094 str r4, [sp, #64] + 820:Src/main.c **** LL_SPI_Init(SPI2, &SPI_InitStruct); + 2614 .loc 2 820 3 is_stmt 1 view .LVU911 + 820:Src/main.c **** LL_SPI_Init(SPI2, &SPI_InitStruct); + 2615 .loc 2 820 26 is_stmt 0 view .LVU912 + 2616 00a0 0723 movs r3, #7 + 2617 00a2 1193 str r3, [sp, #68] + 821:Src/main.c **** LL_SPI_SetStandard(SPI2, LL_SPI_PROTOCOL_MOTOROLA); + 2618 .loc 2 821 3 is_stmt 1 view .LVU913 + 2619 00a4 094C ldr r4, .L118+8 + 2620 00a6 08A9 add r1, sp, #32 + 2621 00a8 2046 mov r0, r4 + 2622 00aa FFF7FEFF bl LL_SPI_Init + 2623 .LVL213: + 822:Src/main.c **** LL_SPI_DisableNSSPulseMgt(SPI2); + 2624 .loc 2 822 3 view .LVU914 + 2625 .LBB376: + 2626 .LBI376: + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 2627 .loc 4 426 22 view .LVU915 + 2628 .LBB377: + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2629 .loc 4 428 3 view .LVU916 + 2630 00ae 6368 ldr r3, [r4, #4] + 2631 00b0 23F01003 bic r3, r3, #16 + 2632 00b4 6360 str r3, [r4, #4] + 2633 .LVL214: + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2634 .loc 4 428 3 is_stmt 0 view .LVU917 + 2635 .LBE377: + 2636 .LBE376: + 823:Src/main.c **** /* USER CODE BEGIN SPI2_Init 2 */ + 2637 .loc 2 823 3 is_stmt 1 view .LVU918 + 2638 .LBB378: + 2639 .LBI378: + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 2640 .loc 4 874 22 view .LVU919 + 2641 .LBB379: + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2642 .loc 4 876 3 view .LVU920 + 2643 00b6 6368 ldr r3, [r4, #4] + 2644 00b8 23F00803 bic r3, r3, #8 + 2645 00bc 6360 str r3, [r4, #4] + 2646 .LVL215: + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2647 .loc 4 876 3 is_stmt 0 view .LVU921 + 2648 .LBE379: + 2649 .LBE378: + 828:Src/main.c **** + 2650 .loc 2 828 1 view .LVU922 + 2651 00be 12B0 add sp, sp, #72 + 2652 .LCFI18: + ARM GAS /tmp/ccdsDELB.s page 183 + + + 2653 .cfi_def_cfa_offset 24 + 2654 @ sp needed + 2655 00c0 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 2656 .L119: + 2657 .align 2 + 2658 .L118: + 2659 00c4 00380240 .word 1073887232 + 2660 00c8 00040240 .word 1073873920 + 2661 00cc 00380040 .word 1073756160 + 2662 .cfi_endproc + 2663 .LFE1191: + 2665 .section .text.MX_SPI5_Init,"ax",%progbits + 2666 .align 1 + 2667 .syntax unified + 2668 .thumb + 2669 .thumb_func + 2670 .fpu fpv5-d16 + 2672 MX_SPI5_Init: + 2673 .LFB1193: + 899:Src/main.c **** + 2674 .loc 2 899 1 is_stmt 1 view -0 + 2675 .cfi_startproc + 2676 @ args = 0, pretend = 0, frame = 72 + 2677 @ frame_needed = 0, uses_anonymous_args = 0 + 2678 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 2679 .LCFI19: + 2680 .cfi_def_cfa_offset 24 + 2681 .cfi_offset 4, -24 + 2682 .cfi_offset 5, -20 + 2683 .cfi_offset 6, -16 + 2684 .cfi_offset 7, -12 + 2685 .cfi_offset 8, -8 + 2686 .cfi_offset 14, -4 + 2687 0004 92B0 sub sp, sp, #72 + 2688 .LCFI20: + 2689 .cfi_def_cfa_offset 96 + 905:Src/main.c **** + 2690 .loc 2 905 3 view .LVU924 + 905:Src/main.c **** + 2691 .loc 2 905 22 is_stmt 0 view .LVU925 + 2692 0006 2822 movs r2, #40 + 2693 0008 0021 movs r1, #0 + 2694 000a 08A8 add r0, sp, #32 + 2695 000c FFF7FEFF bl memset + 2696 .LVL216: + 907:Src/main.c **** + 2697 .loc 2 907 3 is_stmt 1 view .LVU926 + 907:Src/main.c **** + 2698 .loc 2 907 23 is_stmt 0 view .LVU927 + 2699 0010 0024 movs r4, #0 + 2700 0012 0294 str r4, [sp, #8] + 2701 0014 0394 str r4, [sp, #12] + 2702 0016 0494 str r4, [sp, #16] + 2703 0018 0594 str r4, [sp, #20] + 2704 001a 0694 str r4, [sp, #24] + 2705 001c 0794 str r4, [sp, #28] + 910:Src/main.c **** + ARM GAS /tmp/ccdsDELB.s page 184 + + + 2706 .loc 2 910 3 is_stmt 1 view .LVU928 + 2707 .LVL217: + 2708 .LBB380: + 2709 .LBI380: +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 2710 .loc 3 1587 22 view .LVU929 + 2711 .LBB381: +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB2ENR, Periphs); + 2712 .loc 3 1589 3 view .LVU930 +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 2713 .loc 3 1590 3 view .LVU931 + 2714 001e 294B ldr r3, .L122 + 2715 0020 5A6C ldr r2, [r3, #68] + 2716 0022 42F48012 orr r2, r2, #1048576 + 2717 0026 5A64 str r2, [r3, #68] +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2718 .loc 3 1592 3 view .LVU932 +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2719 .loc 3 1592 12 is_stmt 0 view .LVU933 + 2720 0028 5A6C ldr r2, [r3, #68] + 2721 002a 02F48012 and r2, r2, #1048576 +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2722 .loc 3 1592 10 view .LVU934 + 2723 002e 0192 str r2, [sp, #4] + 2724 .loc 3 1593 3 is_stmt 1 view .LVU935 + 2725 0030 019A ldr r2, [sp, #4] + 2726 .LVL218: + 2727 .loc 3 1593 3 is_stmt 0 view .LVU936 + 2728 .LBE381: + 2729 .LBE380: + 912:Src/main.c **** /**SPI5 GPIO Configuration + 2730 .loc 2 912 3 is_stmt 1 view .LVU937 + 2731 .LBB382: + 2732 .LBI382: + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 2733 .loc 3 309 22 view .LVU938 + 2734 .LBB383: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 2735 .loc 3 311 3 view .LVU939 + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 2736 .loc 3 312 3 view .LVU940 + 2737 0032 1A6B ldr r2, [r3, #48] + 2738 0034 42F02002 orr r2, r2, #32 + 2739 0038 1A63 str r2, [r3, #48] + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2740 .loc 3 314 3 view .LVU941 + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2741 .loc 3 314 12 is_stmt 0 view .LVU942 + 2742 003a 1B6B ldr r3, [r3, #48] + 2743 003c 03F02003 and r3, r3, #32 + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2744 .loc 3 314 10 view .LVU943 + 2745 0040 0093 str r3, [sp] + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 2746 .loc 3 315 3 is_stmt 1 view .LVU944 + 2747 0042 009B ldr r3, [sp] + 2748 .LVL219: + ARM GAS /tmp/ccdsDELB.s page 185 + + + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 2749 .loc 3 315 3 is_stmt 0 view .LVU945 + 2750 .LBE383: + 2751 .LBE382: + 917:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2752 .loc 2 917 3 is_stmt 1 view .LVU946 + 917:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2753 .loc 2 917 23 is_stmt 0 view .LVU947 + 2754 0044 8023 movs r3, #128 + 2755 0046 0293 str r3, [sp, #8] + 918:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2756 .loc 2 918 3 is_stmt 1 view .LVU948 + 918:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2757 .loc 2 918 24 is_stmt 0 view .LVU949 + 2758 0048 0225 movs r5, #2 + 2759 004a 0395 str r5, [sp, #12] + 919:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2760 .loc 2 919 3 is_stmt 1 view .LVU950 + 919:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2761 .loc 2 919 25 is_stmt 0 view .LVU951 + 2762 004c 4FF00308 mov r8, #3 + 2763 0050 CDF81080 str r8, [sp, #16] + 920:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 2764 .loc 2 920 3 is_stmt 1 view .LVU952 + 921:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 2765 .loc 2 921 3 view .LVU953 + 922:Src/main.c **** LL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 2766 .loc 2 922 3 view .LVU954 + 922:Src/main.c **** LL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 2767 .loc 2 922 29 is_stmt 0 view .LVU955 + 2768 0054 0527 movs r7, #5 + 2769 0056 0797 str r7, [sp, #28] + 923:Src/main.c **** + 2770 .loc 2 923 3 is_stmt 1 view .LVU956 + 2771 0058 1B4E ldr r6, .L122+4 + 2772 005a 02A9 add r1, sp, #8 + 2773 005c 3046 mov r0, r6 + 2774 005e FFF7FEFF bl LL_GPIO_Init + 2775 .LVL220: + 925:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2776 .loc 2 925 3 view .LVU957 + 925:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2777 .loc 2 925 23 is_stmt 0 view .LVU958 + 2778 0062 4FF48073 mov r3, #256 + 2779 0066 0293 str r3, [sp, #8] + 926:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2780 .loc 2 926 3 is_stmt 1 view .LVU959 + 926:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2781 .loc 2 926 24 is_stmt 0 view .LVU960 + 2782 0068 0395 str r5, [sp, #12] + 927:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2783 .loc 2 927 3 is_stmt 1 view .LVU961 + 927:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2784 .loc 2 927 25 is_stmt 0 view .LVU962 + 2785 006a CDF81080 str r8, [sp, #16] + 928:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 2786 .loc 2 928 3 is_stmt 1 view .LVU963 + ARM GAS /tmp/ccdsDELB.s page 186 + + + 928:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 2787 .loc 2 928 30 is_stmt 0 view .LVU964 + 2788 006e 0594 str r4, [sp, #20] + 929:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 2789 .loc 2 929 3 is_stmt 1 view .LVU965 + 929:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_5; + 2790 .loc 2 929 24 is_stmt 0 view .LVU966 + 2791 0070 0694 str r4, [sp, #24] + 930:Src/main.c **** LL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 2792 .loc 2 930 3 is_stmt 1 view .LVU967 + 930:Src/main.c **** LL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 2793 .loc 2 930 29 is_stmt 0 view .LVU968 + 2794 0072 0797 str r7, [sp, #28] + 931:Src/main.c **** + 2795 .loc 2 931 3 is_stmt 1 view .LVU969 + 2796 0074 02A9 add r1, sp, #8 + 2797 0076 3046 mov r0, r6 + 2798 0078 FFF7FEFF bl LL_GPIO_Init + 2799 .LVL221: + 937:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 2800 .loc 2 937 3 view .LVU970 + 937:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 2801 .loc 2 937 36 is_stmt 0 view .LVU971 + 2802 007c 4FF48063 mov r3, #1024 + 2803 0080 0893 str r3, [sp, #32] + 938:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 2804 .loc 2 938 3 is_stmt 1 view .LVU972 + 938:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 2805 .loc 2 938 23 is_stmt 0 view .LVU973 + 2806 0082 4FF48273 mov r3, #260 + 2807 0086 0993 str r3, [sp, #36] + 939:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 2808 .loc 2 939 3 is_stmt 1 view .LVU974 + 939:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 2809 .loc 2 939 28 is_stmt 0 view .LVU975 + 2810 0088 4FF47063 mov r3, #3840 + 2811 008c 0A93 str r3, [sp, #40] + 940:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE; + 2812 .loc 2 940 3 is_stmt 1 view .LVU976 + 940:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE; + 2813 .loc 2 940 32 is_stmt 0 view .LVU977 + 2814 008e 0B95 str r5, [sp, #44] + 941:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 2815 .loc 2 941 3 is_stmt 1 view .LVU978 + 941:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 2816 .loc 2 941 29 is_stmt 0 view .LVU979 + 2817 0090 0C94 str r4, [sp, #48] + 942:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + 2818 .loc 2 942 3 is_stmt 1 view .LVU980 + 942:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + 2819 .loc 2 942 22 is_stmt 0 view .LVU981 + 2820 0092 4FF40073 mov r3, #512 + 2821 0096 0D93 str r3, [sp, #52] + 943:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 2822 .loc 2 943 3 is_stmt 1 view .LVU982 + 943:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 2823 .loc 2 943 27 is_stmt 0 view .LVU983 + ARM GAS /tmp/ccdsDELB.s page 187 + + + 2824 0098 1823 movs r3, #24 + 2825 009a 0E93 str r3, [sp, #56] + 944:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 2826 .loc 2 944 3 is_stmt 1 view .LVU984 + 944:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 2827 .loc 2 944 27 is_stmt 0 view .LVU985 + 2828 009c 0F94 str r4, [sp, #60] + 945:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 2829 .loc 2 945 3 is_stmt 1 view .LVU986 + 945:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 2830 .loc 2 945 33 is_stmt 0 view .LVU987 + 2831 009e 1094 str r4, [sp, #64] + 946:Src/main.c **** LL_SPI_Init(SPI5, &SPI_InitStruct); + 2832 .loc 2 946 3 is_stmt 1 view .LVU988 + 946:Src/main.c **** LL_SPI_Init(SPI5, &SPI_InitStruct); + 2833 .loc 2 946 26 is_stmt 0 view .LVU989 + 2834 00a0 0723 movs r3, #7 + 2835 00a2 1193 str r3, [sp, #68] + 947:Src/main.c **** LL_SPI_SetStandard(SPI5, LL_SPI_PROTOCOL_MOTOROLA); + 2836 .loc 2 947 3 is_stmt 1 view .LVU990 + 2837 00a4 094C ldr r4, .L122+8 + 2838 00a6 08A9 add r1, sp, #32 + 2839 00a8 2046 mov r0, r4 + 2840 00aa FFF7FEFF bl LL_SPI_Init + 2841 .LVL222: + 948:Src/main.c **** LL_SPI_DisableNSSPulseMgt(SPI5); + 2842 .loc 2 948 3 view .LVU991 + 2843 .LBB384: + 2844 .LBI384: + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 2845 .loc 4 426 22 view .LVU992 + 2846 .LBB385: + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2847 .loc 4 428 3 view .LVU993 + 2848 00ae 6368 ldr r3, [r4, #4] + 2849 00b0 23F01003 bic r3, r3, #16 + 2850 00b4 6360 str r3, [r4, #4] + 2851 .LVL223: + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2852 .loc 4 428 3 is_stmt 0 view .LVU994 + 2853 .LBE385: + 2854 .LBE384: + 949:Src/main.c **** /* USER CODE BEGIN SPI5_Init 2 */ + 2855 .loc 2 949 3 is_stmt 1 view .LVU995 + 2856 .LBB386: + 2857 .LBI386: + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 2858 .loc 4 874 22 view .LVU996 + 2859 .LBB387: + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2860 .loc 4 876 3 view .LVU997 + 2861 00b6 6368 ldr r3, [r4, #4] + 2862 00b8 23F00803 bic r3, r3, #8 + 2863 00bc 6360 str r3, [r4, #4] + 2864 .LVL224: + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 2865 .loc 4 876 3 is_stmt 0 view .LVU998 + ARM GAS /tmp/ccdsDELB.s page 188 + + + 2866 .LBE387: + 2867 .LBE386: + 954:Src/main.c **** + 2868 .loc 2 954 1 view .LVU999 + 2869 00be 12B0 add sp, sp, #72 + 2870 .LCFI21: + 2871 .cfi_def_cfa_offset 24 + 2872 @ sp needed + 2873 00c0 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 2874 .L123: + 2875 .align 2 + 2876 .L122: + 2877 00c4 00380240 .word 1073887232 + 2878 00c8 00140240 .word 1073878016 + 2879 00cc 00500140 .word 1073827840 + 2880 .cfi_endproc + 2881 .LFE1193: + 2883 .section .text.MX_SPI6_Init,"ax",%progbits + 2884 .align 1 + 2885 .syntax unified + 2886 .thumb + 2887 .thumb_func + 2888 .fpu fpv5-d16 + 2890 MX_SPI6_Init: + 2891 .LFB1194: + 962:Src/main.c **** + 2892 .loc 2 962 1 is_stmt 1 view -0 + 2893 .cfi_startproc + 2894 @ args = 0, pretend = 0, frame = 72 + 2895 @ frame_needed = 0, uses_anonymous_args = 0 + 2896 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 2897 .LCFI22: + 2898 .cfi_def_cfa_offset 24 + 2899 .cfi_offset 4, -24 + 2900 .cfi_offset 5, -20 + 2901 .cfi_offset 6, -16 + 2902 .cfi_offset 7, -12 + 2903 .cfi_offset 8, -8 + 2904 .cfi_offset 14, -4 + 2905 0004 92B0 sub sp, sp, #72 + 2906 .LCFI23: + 2907 .cfi_def_cfa_offset 96 + 968:Src/main.c **** + 2908 .loc 2 968 3 view .LVU1001 + 968:Src/main.c **** + 2909 .loc 2 968 22 is_stmt 0 view .LVU1002 + 2910 0006 2822 movs r2, #40 + 2911 0008 0021 movs r1, #0 + 2912 000a 08A8 add r0, sp, #32 + 2913 000c FFF7FEFF bl memset + 2914 .LVL225: + 970:Src/main.c **** + 2915 .loc 2 970 3 is_stmt 1 view .LVU1003 + 970:Src/main.c **** + 2916 .loc 2 970 23 is_stmt 0 view .LVU1004 + 2917 0010 0024 movs r4, #0 + 2918 0012 0294 str r4, [sp, #8] + ARM GAS /tmp/ccdsDELB.s page 189 + + + 2919 0014 0394 str r4, [sp, #12] + 2920 0016 0494 str r4, [sp, #16] + 2921 0018 0594 str r4, [sp, #20] + 2922 001a 0694 str r4, [sp, #24] + 2923 001c 0794 str r4, [sp, #28] + 973:Src/main.c **** + 2924 .loc 2 973 3 is_stmt 1 view .LVU1005 + 2925 .LVL226: + 2926 .LBB388: + 2927 .LBI388: +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 2928 .loc 3 1587 22 view .LVU1006 + 2929 .LBB389: +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB2ENR, Periphs); + 2930 .loc 3 1589 3 view .LVU1007 +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 2931 .loc 3 1590 3 view .LVU1008 + 2932 001e 294B ldr r3, .L126 + 2933 0020 5A6C ldr r2, [r3, #68] + 2934 0022 42F40012 orr r2, r2, #2097152 + 2935 0026 5A64 str r2, [r3, #68] +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2936 .loc 3 1592 3 view .LVU1009 +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2937 .loc 3 1592 12 is_stmt 0 view .LVU1010 + 2938 0028 5A6C ldr r2, [r3, #68] + 2939 002a 02F40012 and r2, r2, #2097152 +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2940 .loc 3 1592 10 view .LVU1011 + 2941 002e 0192 str r2, [sp, #4] + 2942 .loc 3 1593 3 is_stmt 1 view .LVU1012 + 2943 0030 019A ldr r2, [sp, #4] + 2944 .LVL227: + 2945 .loc 3 1593 3 is_stmt 0 view .LVU1013 + 2946 .LBE389: + 2947 .LBE388: + 975:Src/main.c **** /**SPI6 GPIO Configuration + 2948 .loc 2 975 3 is_stmt 1 view .LVU1014 + 2949 .LBB390: + 2950 .LBI390: + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 2951 .loc 3 309 22 view .LVU1015 + 2952 .LBB391: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 2953 .loc 3 311 3 view .LVU1016 + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 2954 .loc 3 312 3 view .LVU1017 + 2955 0032 1A6B ldr r2, [r3, #48] + 2956 0034 42F00102 orr r2, r2, #1 + 2957 0038 1A63 str r2, [r3, #48] + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2958 .loc 3 314 3 view .LVU1018 + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 2959 .loc 3 314 12 is_stmt 0 view .LVU1019 + 2960 003a 1B6B ldr r3, [r3, #48] + 2961 003c 03F00103 and r3, r3, #1 + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + ARM GAS /tmp/ccdsDELB.s page 190 + + + 2962 .loc 3 314 10 view .LVU1020 + 2963 0040 0093 str r3, [sp] + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 2964 .loc 3 315 3 is_stmt 1 view .LVU1021 + 2965 0042 009B ldr r3, [sp] + 2966 .LVL228: + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 2967 .loc 3 315 3 is_stmt 0 view .LVU1022 + 2968 .LBE391: + 2969 .LBE390: + 980:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2970 .loc 2 980 3 is_stmt 1 view .LVU1023 + 980:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2971 .loc 2 980 23 is_stmt 0 view .LVU1024 + 2972 0044 2023 movs r3, #32 + 2973 0046 0293 str r3, [sp, #8] + 981:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2974 .loc 2 981 3 is_stmt 1 view .LVU1025 + 981:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2975 .loc 2 981 24 is_stmt 0 view .LVU1026 + 2976 0048 0225 movs r5, #2 + 2977 004a 0395 str r5, [sp, #12] + 982:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2978 .loc 2 982 3 is_stmt 1 view .LVU1027 + 982:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 2979 .loc 2 982 25 is_stmt 0 view .LVU1028 + 2980 004c 4FF00308 mov r8, #3 + 2981 0050 CDF81080 str r8, [sp, #16] + 983:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 2982 .loc 2 983 3 is_stmt 1 view .LVU1029 + 984:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_8; + 2983 .loc 2 984 3 view .LVU1030 + 985:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 2984 .loc 2 985 3 view .LVU1031 + 985:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 2985 .loc 2 985 29 is_stmt 0 view .LVU1032 + 2986 0054 0827 movs r7, #8 + 2987 0056 0797 str r7, [sp, #28] + 986:Src/main.c **** + 2988 .loc 2 986 3 is_stmt 1 view .LVU1033 + 2989 0058 1B4E ldr r6, .L126+4 + 2990 005a 0DEB0701 add r1, sp, r7 + 2991 005e 3046 mov r0, r6 + 2992 0060 FFF7FEFF bl LL_GPIO_Init + 2993 .LVL229: + 988:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2994 .loc 2 988 3 view .LVU1034 + 988:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 2995 .loc 2 988 23 is_stmt 0 view .LVU1035 + 2996 0064 8023 movs r3, #128 + 2997 0066 0293 str r3, [sp, #8] + 989:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2998 .loc 2 989 3 is_stmt 1 view .LVU1036 + 989:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 2999 .loc 2 989 24 is_stmt 0 view .LVU1037 + 3000 0068 0395 str r5, [sp, #12] + 990:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + ARM GAS /tmp/ccdsDELB.s page 191 + + + 3001 .loc 2 990 3 is_stmt 1 view .LVU1038 + 990:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 3002 .loc 2 990 25 is_stmt 0 view .LVU1039 + 3003 006a CDF81080 str r8, [sp, #16] + 991:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 3004 .loc 2 991 3 is_stmt 1 view .LVU1040 + 991:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 3005 .loc 2 991 30 is_stmt 0 view .LVU1041 + 3006 006e 0594 str r4, [sp, #20] + 992:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_8; + 3007 .loc 2 992 3 is_stmt 1 view .LVU1042 + 992:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_8; + 3008 .loc 2 992 24 is_stmt 0 view .LVU1043 + 3009 0070 0694 str r4, [sp, #24] + 993:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 3010 .loc 2 993 3 is_stmt 1 view .LVU1044 + 993:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 3011 .loc 2 993 29 is_stmt 0 view .LVU1045 + 3012 0072 0797 str r7, [sp, #28] + 994:Src/main.c **** + 3013 .loc 2 994 3 is_stmt 1 view .LVU1046 + 3014 0074 0DEB0701 add r1, sp, r7 + 3015 0078 3046 mov r0, r6 + 3016 007a FFF7FEFF bl LL_GPIO_Init + 3017 .LVL230: +1000:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 3018 .loc 2 1000 3 view .LVU1047 +1000:Src/main.c **** SPI_InitStruct.Mode = LL_SPI_MODE_MASTER; + 3019 .loc 2 1000 36 is_stmt 0 view .LVU1048 + 3020 007e 0894 str r4, [sp, #32] +1001:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 3021 .loc 2 1001 3 is_stmt 1 view .LVU1049 +1001:Src/main.c **** SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_16BIT; + 3022 .loc 2 1001 23 is_stmt 0 view .LVU1050 + 3023 0080 4FF48273 mov r3, #260 + 3024 0084 0993 str r3, [sp, #36] +1002:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 3025 .loc 2 1002 3 is_stmt 1 view .LVU1051 +1002:Src/main.c **** SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; + 3026 .loc 2 1002 28 is_stmt 0 view .LVU1052 + 3027 0086 4FF47063 mov r3, #3840 + 3028 008a 0A93 str r3, [sp, #40] +1003:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE; + 3029 .loc 2 1003 3 is_stmt 1 view .LVU1053 +1003:Src/main.c **** SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE; + 3030 .loc 2 1003 32 is_stmt 0 view .LVU1054 + 3031 008c 0B95 str r5, [sp, #44] +1004:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 3032 .loc 2 1004 3 is_stmt 1 view .LVU1055 +1004:Src/main.c **** SPI_InitStruct.NSS = LL_SPI_NSS_SOFT; + 3033 .loc 2 1004 29 is_stmt 0 view .LVU1056 + 3034 008e 0123 movs r3, #1 + 3035 0090 0C93 str r3, [sp, #48] +1005:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + 3036 .loc 2 1005 3 is_stmt 1 view .LVU1057 +1005:Src/main.c **** SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV16; + 3037 .loc 2 1005 22 is_stmt 0 view .LVU1058 + ARM GAS /tmp/ccdsDELB.s page 192 + + + 3038 0092 4FF40073 mov r3, #512 + 3039 0096 0D93 str r3, [sp, #52] +1006:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 3040 .loc 2 1006 3 is_stmt 1 view .LVU1059 +1006:Src/main.c **** SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST; + 3041 .loc 2 1006 27 is_stmt 0 view .LVU1060 + 3042 0098 1823 movs r3, #24 + 3043 009a 0E93 str r3, [sp, #56] +1007:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 3044 .loc 2 1007 3 is_stmt 1 view .LVU1061 +1007:Src/main.c **** SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 3045 .loc 2 1007 27 is_stmt 0 view .LVU1062 + 3046 009c 0F94 str r4, [sp, #60] +1008:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 3047 .loc 2 1008 3 is_stmt 1 view .LVU1063 +1008:Src/main.c **** SPI_InitStruct.CRCPoly = 7; + 3048 .loc 2 1008 33 is_stmt 0 view .LVU1064 + 3049 009e 1094 str r4, [sp, #64] +1009:Src/main.c **** LL_SPI_Init(SPI6, &SPI_InitStruct); + 3050 .loc 2 1009 3 is_stmt 1 view .LVU1065 +1009:Src/main.c **** LL_SPI_Init(SPI6, &SPI_InitStruct); + 3051 .loc 2 1009 26 is_stmt 0 view .LVU1066 + 3052 00a0 0723 movs r3, #7 + 3053 00a2 1193 str r3, [sp, #68] +1010:Src/main.c **** LL_SPI_SetStandard(SPI6, LL_SPI_PROTOCOL_MOTOROLA); + 3054 .loc 2 1010 3 is_stmt 1 view .LVU1067 + 3055 00a4 094C ldr r4, .L126+8 + 3056 00a6 08A9 add r1, sp, #32 + 3057 00a8 2046 mov r0, r4 + 3058 00aa FFF7FEFF bl LL_SPI_Init + 3059 .LVL231: +1011:Src/main.c **** LL_SPI_DisableNSSPulseMgt(SPI6); + 3060 .loc 2 1011 3 view .LVU1068 + 3061 .LBB392: + 3062 .LBI392: + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 3063 .loc 4 426 22 view .LVU1069 + 3064 .LBB393: + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 3065 .loc 4 428 3 view .LVU1070 + 3066 00ae 6368 ldr r3, [r4, #4] + 3067 00b0 23F01003 bic r3, r3, #16 + 3068 00b4 6360 str r3, [r4, #4] + 3069 .LVL232: + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 3070 .loc 4 428 3 is_stmt 0 view .LVU1071 + 3071 .LBE393: + 3072 .LBE392: +1012:Src/main.c **** /* USER CODE BEGIN SPI6_Init 2 */ + 3073 .loc 2 1012 3 is_stmt 1 view .LVU1072 + 3074 .LBB394: + 3075 .LBI394: + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 3076 .loc 4 874 22 view .LVU1073 + 3077 .LBB395: + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 3078 .loc 4 876 3 view .LVU1074 + ARM GAS /tmp/ccdsDELB.s page 193 + + + 3079 00b6 6368 ldr r3, [r4, #4] + 3080 00b8 23F00803 bic r3, r3, #8 + 3081 00bc 6360 str r3, [r4, #4] + 3082 .LVL233: + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 3083 .loc 4 876 3 is_stmt 0 view .LVU1075 + 3084 .LBE395: + 3085 .LBE394: +1017:Src/main.c **** + 3086 .loc 2 1017 1 view .LVU1076 + 3087 00be 12B0 add sp, sp, #72 + 3088 .LCFI24: + 3089 .cfi_def_cfa_offset 24 + 3090 @ sp needed + 3091 00c0 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 3092 .L127: + 3093 .align 2 + 3094 .L126: + 3095 00c4 00380240 .word 1073887232 + 3096 00c8 00000240 .word 1073872896 + 3097 00cc 00540140 .word 1073828864 + 3098 .cfi_endproc + 3099 .LFE1194: + 3101 .section .text.MX_TIM2_Init,"ax",%progbits + 3102 .align 1 + 3103 .syntax unified + 3104 .thumb + 3105 .thumb_func + 3106 .fpu fpv5-d16 + 3108 MX_TIM2_Init: + 3109 .LFB1195: +1025:Src/main.c **** + 3110 .loc 2 1025 1 is_stmt 1 view -0 + 3111 .cfi_startproc + 3112 @ args = 0, pretend = 0, frame = 24 + 3113 @ frame_needed = 0, uses_anonymous_args = 0 + 3114 0000 10B5 push {r4, lr} + 3115 .LCFI25: + 3116 .cfi_def_cfa_offset 8 + 3117 .cfi_offset 4, -8 + 3118 .cfi_offset 14, -4 + 3119 0002 86B0 sub sp, sp, #24 + 3120 .LCFI26: + 3121 .cfi_def_cfa_offset 32 +1031:Src/main.c **** + 3122 .loc 2 1031 3 view .LVU1078 +1031:Src/main.c **** + 3123 .loc 2 1031 22 is_stmt 0 view .LVU1079 + 3124 0004 0024 movs r4, #0 + 3125 0006 0194 str r4, [sp, #4] + 3126 0008 0294 str r4, [sp, #8] + 3127 000a 0394 str r4, [sp, #12] + 3128 000c 0494 str r4, [sp, #16] + 3129 000e 0594 str r4, [sp, #20] +1034:Src/main.c **** + 3130 .loc 2 1034 3 is_stmt 1 view .LVU1080 + 3131 .LVL234: + ARM GAS /tmp/ccdsDELB.s page 194 + + + 3132 .LBB396: + 3133 .LBI396: +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 3134 .loc 3 1071 22 view .LVU1081 + 3135 .LBB397: +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1ENR, Periphs); + 3136 .loc 3 1073 3 view .LVU1082 +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 3137 .loc 3 1074 3 view .LVU1083 + 3138 0010 1D4B ldr r3, .L130 + 3139 0012 1A6C ldr r2, [r3, #64] + 3140 0014 42F00102 orr r2, r2, #1 + 3141 0018 1A64 str r2, [r3, #64] +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3142 .loc 3 1076 3 view .LVU1084 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3143 .loc 3 1076 12 is_stmt 0 view .LVU1085 + 3144 001a 1B6C ldr r3, [r3, #64] + 3145 001c 03F00103 and r3, r3, #1 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3146 .loc 3 1076 10 view .LVU1086 + 3147 0020 0093 str r3, [sp] +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 3148 .loc 3 1077 3 is_stmt 1 view .LVU1087 + 3149 0022 009B ldr r3, [sp] + 3150 .LVL235: +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 3151 .loc 3 1077 3 is_stmt 0 view .LVU1088 + 3152 .LBE397: + 3153 .LBE396: +1037:Src/main.c **** NVIC_EnableIRQ(TIM2_IRQn); + 3154 .loc 2 1037 3 is_stmt 1 view .LVU1089 + 3155 .LBB398: + 3156 .LBI398: +1884:Drivers/CMSIS/Include/core_cm7.h **** { + 3157 .loc 1 1884 26 view .LVU1090 + 3158 .LBB399: +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 3159 .loc 1 1886 3 view .LVU1091 +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 3160 .loc 1 1886 26 is_stmt 0 view .LVU1092 + 3161 0024 194B ldr r3, .L130+4 + 3162 0026 D868 ldr r0, [r3, #12] + 3163 .LBE399: + 3164 .LBE398: +1037:Src/main.c **** NVIC_EnableIRQ(TIM2_IRQn); + 3165 .loc 2 1037 3 view .LVU1093 + 3166 0028 2246 mov r2, r4 + 3167 002a 2146 mov r1, r4 + 3168 002c C0F30220 ubfx r0, r0, #8, #3 + 3169 0030 FFF7FEFF bl NVIC_EncodePriority + 3170 .LVL236: + 3171 .LBB400: + 3172 .LBI400: +2024:Drivers/CMSIS/Include/core_cm7.h **** { + 3173 .loc 1 2024 22 is_stmt 1 view .LVU1094 + 3174 .LBB401: + ARM GAS /tmp/ccdsDELB.s page 195 + + +2026:Drivers/CMSIS/Include/core_cm7.h **** { + 3175 .loc 1 2026 3 view .LVU1095 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3176 .loc 1 2028 5 view .LVU1096 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3177 .loc 1 2028 49 is_stmt 0 view .LVU1097 + 3178 0034 0001 lsls r0, r0, #4 + 3179 .LVL237: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3180 .loc 1 2028 49 view .LVU1098 + 3181 0036 C0B2 uxtb r0, r0 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3182 .loc 1 2028 47 view .LVU1099 + 3183 0038 154B ldr r3, .L130+8 + 3184 003a 83F81C03 strb r0, [r3, #796] + 3185 .LVL238: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3186 .loc 1 2028 47 view .LVU1100 + 3187 .LBE401: + 3188 .LBE400: +1038:Src/main.c **** + 3189 .loc 2 1038 3 is_stmt 1 view .LVU1101 + 3190 .LBB402: + 3191 .LBI402: +1896:Drivers/CMSIS/Include/core_cm7.h **** { + 3192 .loc 1 1896 22 view .LVU1102 + 3193 .LBB403: +1898:Drivers/CMSIS/Include/core_cm7.h **** { + 3194 .loc 1 1898 3 view .LVU1103 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3195 .loc 1 1900 5 view .LVU1104 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3196 .loc 1 1900 43 is_stmt 0 view .LVU1105 + 3197 003e 4FF08052 mov r2, #268435456 + 3198 0042 1A60 str r2, [r3] + 3199 .LVL239: +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3200 .loc 1 1900 43 view .LVU1106 + 3201 .LBE403: + 3202 .LBE402: +1043:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + 3203 .loc 2 1043 3 is_stmt 1 view .LVU1107 +1043:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + 3204 .loc 2 1043 28 is_stmt 0 view .LVU1108 + 3205 0044 4FF47A73 mov r3, #1000 + 3206 0048 ADF80430 strh r3, [sp, #4] @ movhi +1044:Src/main.c **** TIM_InitStruct.Autoreload = 840000; + 3207 .loc 2 1044 3 is_stmt 1 view .LVU1109 +1044:Src/main.c **** TIM_InitStruct.Autoreload = 840000; + 3208 .loc 2 1044 30 is_stmt 0 view .LVU1110 + 3209 004c 0294 str r4, [sp, #8] +1045:Src/main.c **** TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + 3210 .loc 2 1045 3 is_stmt 1 view .LVU1111 +1045:Src/main.c **** TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + 3211 .loc 2 1045 29 is_stmt 0 view .LVU1112 + 3212 004e 114B ldr r3, .L130+12 + 3213 0050 0393 str r3, [sp, #12] + ARM GAS /tmp/ccdsDELB.s page 196 + + +1046:Src/main.c **** LL_TIM_Init(TIM2, &TIM_InitStruct); + 3214 .loc 2 1046 3 is_stmt 1 view .LVU1113 +1046:Src/main.c **** LL_TIM_Init(TIM2, &TIM_InitStruct); + 3215 .loc 2 1046 32 is_stmt 0 view .LVU1114 + 3216 0052 0494 str r4, [sp, #16] +1047:Src/main.c **** LL_TIM_DisableARRPreload(TIM2); + 3217 .loc 2 1047 3 is_stmt 1 view .LVU1115 + 3218 0054 01A9 add r1, sp, #4 + 3219 0056 4FF08040 mov r0, #1073741824 + 3220 005a FFF7FEFF bl LL_TIM_Init + 3221 .LVL240: +1048:Src/main.c **** LL_TIM_SetClockSource(TIM2, LL_TIM_CLOCKSOURCE_INTERNAL); + 3222 .loc 2 1048 3 view .LVU1116 + 3223 .LBB404: + 3224 .LBI404: + 3225 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @file stm32f7xx_ll_tim.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Header file of TIM LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #ifndef __STM32F7xx_LL_TIM_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __STM32F7xx_LL_TIM_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined (TIM1) || defined (TIM8) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defi + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL TIM + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private variables ---------------------------------------------------------*/ + ARM GAS /tmp/ccdsDELB.s page 197 + + + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Private_Variables TIM Private Variables + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t OFFSET_TAB_CCMRx[] = + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 0: TIMx_CH1 */ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 1: TIMx_CH1N */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 2: TIMx_CH2 */ + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 3: TIMx_CH2N */ + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x04U, /* 4: TIMx_CH3 */ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x04U, /* 5: TIMx_CH3N */ + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x04U, /* 6: TIMx_CH4 */ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x3CU, /* 7: TIMx_CH5 */ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x3CU /* 8: TIMx_CH6 */ + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_OCxx[] = + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: OC1M, OC1FE, OC1PE */ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 1: - NA */ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 2: OC2M, OC2FE, OC2PE */ + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 3: - NA */ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 4: OC3M, OC3FE, OC3PE */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 5: - NA */ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 6: OC4M, OC4FE, OC4PE */ + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 7: OC5M, OC5FE, OC5PE */ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U /* 8: OC6M, OC6FE, OC6PE */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_ICxx[] = + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: CC1S, IC1PSC, IC1F */ + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 1: - NA */ + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 2: CC2S, IC2PSC, IC2F */ + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 3: - NA */ + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 4: CC3S, IC3PSC, IC3F */ + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 5: - NA */ + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 6: CC4S, IC4PSC, IC4F */ + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 7: - NA */ + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U /* 8: - NA */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_CCxP[] = + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: CC1P */ + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 2U, /* 1: CC1NP */ + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 4U, /* 2: CC2P */ + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 6U, /* 3: CC2NP */ + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 4: CC3P */ + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 10U, /* 5: CC3NP */ + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 12U, /* 6: CC4P */ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 16U, /* 7: CC5P */ + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 20U /* 8: CC6P */ + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_OISx[] = + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + ARM GAS /tmp/ccdsDELB.s page 198 + + + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: OIS1 */ + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 1U, /* 1: OIS1N */ + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 2U, /* 2: OIS2 */ + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 3U, /* 3: OIS2N */ + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 4U, /* 4: OIS3 */ + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 5U, /* 5: OIS3N */ + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 6U, /* 6: OIS4 */ + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 7: OIS5 */ + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 10U /* 8: OIS6 */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private constants ---------------------------------------------------------*/ + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Private_Constants TIM Private Constants + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(TIM_BREAK_INPUT_SUPPORT) + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Defines used for the bit position in the register and perform offsets */ + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM_POSITION_BRK_SOURCE (POSITION_VAL(Source) & 0x1FUL) + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Generic bit definitions for TIMx_AF1 register */ + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIMx_AF1_BKINP TIM1_AF1_BKINP /*!< BRK BKIN input polarity */ + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* TIM_BREAK_INPUT_SUPPORT */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Remap mask definitions */ + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIMx_OR_RMP_SHIFT 16U + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIMx_OR_RMP_MASK 0x0000FFFFU + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM2_OR_RMP_MASK (TIM2_OR_ITR1_RMP << TIMx_OR_RMP_SHIFT) + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM5_OR_RMP_MASK (TIM5_OR_TI4_RMP << TIMx_OR_RMP_SHIFT) + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM11_OR_RMP_MASK (TIM11_OR_TI1_RMP << TIMx_OR_RMP_SHIFT) + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */ + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_1 ((uint8_t)0x7F) + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_2 ((uint8_t)0x3F) + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_3 ((uint8_t)0x1F) + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_4 ((uint8_t)0x1F) + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */ + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_1 ((uint8_t)0x00) + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_2 ((uint8_t)0x80) + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_3 ((uint8_t)0xC0) + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_4 ((uint8_t)0xE0) + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private macros ------------------------------------------------------------*/ + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Private_Macros TIM Private Macros + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @brief Convert channel id into channel index. + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CHANNEL__ This parameter can be one of the following values: + ARM GAS /tmp/ccdsDELB.s page 199 + + + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval none + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \ + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\ + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\ + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\ + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\ + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\ + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U :\ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH4) ? 6U :\ + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH5) ? 7U : 8U) + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @brief Calculate the deadtime sampling period(in ps). + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz). + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CKD__ This parameter can be one of the following values: + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval none + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM_CALC_DTS(__TIMCLK__, __CKD__) \ + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__)) : \ + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \ + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U))) + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Exported types ------------------------------------------------------------*/ + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(USE_FULL_LL_DRIVER) + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_ES_INIT TIM Exported Init structure + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Time Base configuration structure definition. + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint16_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data=0x0000 and Max_D + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetPrescaler().*/ + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t CounterMode; /*!< Specifies the counter mode. + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE. + ARM GAS /tmp/ccdsDELB.s page 200 + + + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetCounterMode().*/ + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Autoreload; /*!< Specifies the auto reload value to be loaded into the active + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Auto-Reload Register at the next update event. + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter must be a number between Min_Data=0x0000 and Max_ + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Some timer instances may support 32 bits counters. In that case + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** be a number between 0x0000 and 0xFFFFFFFF. + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetAutoReload().*/ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ClockDivision; /*!< Specifies the clock division. + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION. + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetClockDivision().*/ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downc + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** reaches zero, an update event is generated and counting restarts + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** from the RCR value (N). + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This means in PWM mode that (N+1) corresponds to: + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** - the number of PWM periods in edge-aligned mode + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** - the number of half PWM period in center-aligned mode + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** GP timers: this parameter must be a number between Min_Data = 0x + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Max_Data = 0xFF. + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Advanced timers: this parameter must be a number between Min_Dat + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Max_Data = 0xFFFF. + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetRepetitionCounter().*/ + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_InitTypeDef; + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Output Compare configuration structure definition. + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCMode; /*!< Specifies the output mode. + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCMODE. + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetMode().*/ + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCState; /*!< Specifies the TIM Output Compare state. + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functions + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCNState; /*!< Specifies the TIM complementary Output Compare state. + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functions + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccdsDELB.s page 201 + + + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t CompareValue; /*!< Specifies the Compare value to be loaded into the Capture Compare Re + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data=0x0000 and Max_Data= + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** LL_TIM_OC_SetCompareCHx (x=1..6).*/ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCPolarity; /*!< Specifies the output polarity. + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetPolarity().*/ + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetPolarity().*/ + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetIdleState().*/ + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetIdleState().*/ + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_OC_InitTypeDef; + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Input Capture configuration structure definition. + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICActiveInput; /*!< Specifies the input. + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetActiveInput().*/ + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccdsDELB.s page 202 + + + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICFilter; /*!< Specifies the input capture filter. + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_IC_InitTypeDef; + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Encoder interface configuration structure definition. + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t EncoderMode; /*!< Specifies the encoder resolution (x2 or x4). + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE. + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetEncoderMode().*/ + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1ActiveInput; /*!< Specifies the TI1 input source + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetActiveInput().*/ + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2Polarity; /*!< Specifies the active edge of TI2 input. + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2ActiveInput; /*!< Specifies the TI2 input source + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetActiveInput().*/ + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2Prescaler; /*!< Specifies the TI2 input prescaler value. + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + ARM GAS /tmp/ccdsDELB.s page 203 + + + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2Filter; /*!< Specifies the TI2 input filter. + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_ENCODER_InitTypeDef; + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Hall sensor interface configuration structure definition. + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Prescaler must be set to get a maximum counter period longer th + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** time interval between 2 consecutive changes on the Hall inputs. + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref TIM_LL_EC_IC_FILTER. + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t CommutationDelay; /*!< Specifies the compare value to be loaded into the Capture Compa + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** A positive pulse (TRGO event) is generated with a programmable + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** a change occurs on the Hall inputs. + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data = 0x0000 and Ma + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetCompareCH2().*/ + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_HALLSENSOR_InitTypeDef; + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief BDTR (Break and Dead Time) structure definition + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OSSRState; /*!< Specifies the Off-State selection used in Run mode. + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OSSR + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + ARM GAS /tmp/ccdsDELB.s page 204 + + + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetOffStates() + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field cannot be modified as long as LOCK level + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OSSIState; /*!< Specifies the Off-State used in Idle state. + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OSSI + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetOffStates() + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field cannot be modified as long as LOCK level + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t LockLevel; /*!< Specifies the LOCK level parameters. + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note The LOCK bits can be written only once after the reset. + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** register has been written, their content is frozen until the + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t DeadTime; /*!< Specifies the delay time between the switching-off and the + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** switching-on of the outputs. + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data = 0x00 and Ma + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetDeadTime() + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint16_t BreakState; /*!< Specifies whether the TIM Break input is enabled or not. + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK() + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARIT + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK() + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t BreakFilter; /*!< Specifies the TIM Break Filter. + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK_FILTER + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK() + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccdsDELB.s page 205 + + + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Break2State; /*!< Specifies whether the TIM Break2 input is enabled or not. + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK2_ENABLE + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_EnableBRK2() or @ref LL_TIM_DisableBRK2() + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Break2Polarity; /*!< Specifies the TIM Break2 Input pin polarity. + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK2_POLARI + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK2() + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Break2Filter; /*!< Specifies the TIM Break2 Filter. + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK2_FILTER + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK2() + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTP + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAut + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_BDTR_InitTypeDef; + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* USE_FULL_LL_DRIVER */ + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Exported constants --------------------------------------------------------*/ + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Exported_Constants TIM Exported Constants + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Flags defines which can be used with LL_TIM_ReadReg function. + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_UIF TIM_SR_UIF /*!< Update interrupt flag */ + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC1IF TIM_SR_CC1IF /*!< Capture/compare 1 interrup + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC2IF TIM_SR_CC2IF /*!< Capture/compare 2 interrup + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC3IF TIM_SR_CC3IF /*!< Capture/compare 3 interrup + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC4IF TIM_SR_CC4IF /*!< Capture/compare 4 interrup + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC5IF TIM_SR_CC5IF /*!< Capture/compare 5 interrup + ARM GAS /tmp/ccdsDELB.s page 206 + + + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC6IF TIM_SR_CC6IF /*!< Capture/compare 6 interrup + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_COMIF TIM_SR_COMIF /*!< COM interrupt flag */ + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_TIF TIM_SR_TIF /*!< Trigger interrupt flag */ + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_BIF TIM_SR_BIF /*!< Break interrupt flag */ + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_B2IF TIM_SR_B2IF /*!< Second break interrupt fla + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC1OF TIM_SR_CC1OF /*!< Capture/Compare 1 overcapt + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC2OF TIM_SR_CC2OF /*!< Capture/Compare 2 overcapt + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC3OF TIM_SR_CC3OF /*!< Capture/Compare 3 overcapt + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC4OF TIM_SR_CC4OF /*!< Capture/Compare 4 overcapt + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_SBIF TIM_SR_SBIF /*!< System Break interrupt fla + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(USE_FULL_LL_DRIVER) + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_BREAK_ENABLE Break Enable + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK_DISABLE 0x00000000U /*!< Break function disabled */ + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break function enabled */ + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_BREAK2_ENABLE Break2 Enable + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK2_DISABLE 0x00000000U /*!< Break2 function disabled */ + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK2_ENABLE TIM_BDTR_BK2E /*!< Break2 function enabled */ + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_AUTOMATICOUTPUT_ENABLE Automatic output enable + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by softw + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* USE_FULL_LL_DRIVER */ + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_IT IT Defines + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief IT defines which can be used with LL_TIM_ReadReg and LL_TIM_WriteReg functions. + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_UIE TIM_DIER_UIE /*!< Update interrupt enable */ + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC1IE TIM_DIER_CC1IE /*!< Capture/compare 1 interrup + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC2IE TIM_DIER_CC2IE /*!< Capture/compare 2 interrup + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC3IE TIM_DIER_CC3IE /*!< Capture/compare 3 interrup + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC4IE TIM_DIER_CC4IE /*!< Capture/compare 4 interrup + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_COMIE TIM_DIER_COMIE /*!< COM interrupt enable */ + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_TIE TIM_DIER_TIE /*!< Trigger interrupt enable * + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_BIE TIM_DIER_BIE /*!< Break interrupt enable */ + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + ARM GAS /tmp/ccdsDELB.s page 207 + + + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_UPDATESOURCE Update Source + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_UPDATESOURCE_REGULAR 0x00000000U /*!< Counter overflow/underflow + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_UPDATESOURCE_COUNTER TIM_CR1_URS /*!< Only counter overflow/unde + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_ONEPULSEMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_ONEPULSEMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_UP 0x00000000U /*!< Counter used as upcounter + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as downcounte + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_CENTER_DOWN TIM_CR1_CMS_0 /*!< The counter counts up and + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_CENTER_UP TIM_CR1_CMS_1 /*!< The counter counts up and + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_CENTER_UP_DOWN TIM_CR1_CMS /*!< The counter counts up and + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CLOCKDIVISION Clock Division + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< tDTS=tCK_INT */ + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< tDTS=2*tCK_INT */ + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< tDTS=4*tCK_INT */ + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_COUNTERDIRECTION Counter Direction + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERDIRECTION_UP 0x00000000U /*!< Timer counter counts up */ + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERDIRECTION_DOWN TIM_CR1_DIR /*!< Timer counter counts down + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CCUPDATESOURCE Capture Compare Update Source + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCUPDATESOURCE_COMG_ONLY 0x00000000U /*!< Capture/compare control bi + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI TIM_CR2_CCUS /*!< Capture/compare control bi + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + ARM GAS /tmp/ccdsDELB.s page 208 + + + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CCDMAREQUEST Capture Compare DMA Request + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCDMAREQUEST_CC 0x00000000U /*!< CCx DMA request sent when + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCDMAREQUEST_UPDATE TIM_CR2_CCDS /*!< CCx DMA requests sent when + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_LOCKLEVEL Lock Level + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_OFF 0x00000000U /*!< LOCK OFF - No bit is write + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_1 TIM_BDTR_LOCK_0 /*!< LOCK Level 1 */ + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_2 TIM_BDTR_LOCK_1 /*!< LOCK Level 2 */ + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_3 TIM_BDTR_LOCK /*!< LOCK Level 3 */ + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CHANNEL Channel + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH1 TIM_CCER_CC1E /*!< Timer input/output channel 1 + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH1N TIM_CCER_CC1NE /*!< Timer complementary output ch + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH2 TIM_CCER_CC2E /*!< Timer input/output channel 2 + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH2N TIM_CCER_CC2NE /*!< Timer complementary output ch + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH3 TIM_CCER_CC3E /*!< Timer input/output channel 3 + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH3N TIM_CCER_CC3NE /*!< Timer complementary output ch + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH4 TIM_CCER_CC4E /*!< Timer input/output channel 4 + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH5 TIM_CCER_CC5E /*!< Timer output channel 5 */ + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH6 TIM_CCER_CC6E /*!< Timer output channel 6 */ + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(USE_FULL_LL_DRIVER) + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCSTATE Output Configuration State + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCSTATE_DISABLE 0x00000000U /*!< OCx is not active */ + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCSTATE_ENABLE TIM_CCER_CC1E /*!< OCx signal is output on + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* USE_FULL_LL_DRIVER */ + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** Legacy definitions for compatibility purpose + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @cond 0 + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASSYMETRIC_PWM1 LL_TIM_OCMODE_ASYMMETRIC_PWM1 + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASSYMETRIC_PWM2 LL_TIM_OCMODE_ASYMMETRIC_PWM2 + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @endcond + ARM GAS /tmp/ccdsDELB.s page 209 + + + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCMODE Output Configuration Mode + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_FROZEN 0x00000000U + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1 + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_RETRIG_OPM1 TIM_CCMR1_OC1M_3 + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_RETRIG_OPM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0) + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_COMBINED_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_2) + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_COMBINED_PWM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1 + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASYMMETRIC_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1 + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASYMMETRIC_PWM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M) + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCPOLARITY Output Configuration Polarity + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCPOLARITY_HIGH 0x00000000U /*!< OCxactive high*/ + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< OCxactive low*/ + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCIDLESTATE Output Configuration Idle State + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCIDLESTATE_LOW 0x00000000U /*!__REG__, (__VAL +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Read a value in TIM register. +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __INSTANCE__ TIM Instance +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __REG__ Register to be read +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Register value +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__) +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro retrieving the UIFCPY flag from the counter value. +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_GETFLAG_UIFCPY (@ref LL_TIM_GetCounter ()); +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Relevant only if UIF flag remapping has been enabled (UIF status bit is copied +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * to TIMx_CNT register bit 31) +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CNT__ Counter value +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval UIF status bit +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_GETFLAG_UIFCPY(__CNT__) \ +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (READ_BIT((__CNT__), TIM_CNT_UIFCPY) >> TIM_CNT_UIFCPY_Pos) +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested de +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120); +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CKD__ This parameter can be one of the following values: +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __DT__ deadtime duration (in ns) +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval DTG[0:7] +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__) \ +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__))) & DT_DELAY_1) : +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__C +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMC +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__C +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMC +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__ +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMC +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U) +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the prescaler value to achieve the required counter clock freq +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000); +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CNTCLK__ counter clock frequency (in Hz) +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Prescaler value (between Min_Data=0 and Max_Data=65535) + ARM GAS /tmp/ccdsDELB.s page 218 + + +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__) \ +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)((((__TIMCLK__) + (__CNTCLK__)/2U)/(__CNTCLK__)) - 1U +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the auto-reload value to achieve the required output signal fr +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000); +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PSC__ prescaler +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __FREQ__ output signal frequency (in Hz) +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \ +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U)) +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the compare value required to achieve the required timer outpu +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * active/inactive delay. +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10); +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PSC__ prescaler +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __DELAY__ timer output compare active/inactive delay (in us) +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Compare value (between Min_Data=0 and Max_Data=65535) +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__) \ +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \ +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U)))) +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the auto-reload value to achieve the required pulse duration +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (when the timer operates in one pulse mode). +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20); +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PSC__ prescaler +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __DELAY__ timer output compare active/inactive delay (in us) +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PULSE__ pulse duration (in us) +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__) \ +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \ +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__)))) +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro retrieving the ratio of the input capture prescaler +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ()); +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __ICPSC__ This parameter can be one of the following values: +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV2 +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV4 +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV8 +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Input capture prescaler ratio (1, 2, 4 or 8) +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__) \ +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos))) +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + ARM GAS /tmp/ccdsDELB.s page 219 + + +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Exported functions --------------------------------------------------------*/ +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Exported_Functions TIM Exported Functions +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Time_Base Time Base configuration +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable timer counter. +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CEN LL_TIM_EnableCounter +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx) +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_CEN); +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable timer counter. +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CEN LL_TIM_DisableCounter +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx) +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN); +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the timer counter is enabled. +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CEN LL_TIM_IsEnabledCounter +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(const TIM_TypeDef *TIMx) +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL); +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable update event generation. +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UDIS LL_TIM_EnableUpdateEvent +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx) +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS); +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable update event generation. + ARM GAS /tmp/ccdsDELB.s page 220 + + +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UDIS LL_TIM_DisableUpdateEvent +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx) +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_UDIS); +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether update event generation is enabled. +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UDIS LL_TIM_IsEnabledUpdateEvent +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Inverted state of bit (0 or 1). +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(const TIM_TypeDef *TIMx) +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL); +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set update event source +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * generate an update interrupt or DMA request if enabled: +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * - Counter overflow/underflow +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * - Setting the UG bit +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * - Update generation through the slave mode controller +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * overflow/underflow generates an update interrupt or DMA request if enabled. +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 URS LL_TIM_SetUpdateSource +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param UpdateSource This parameter can be one of the following values: +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_REGULAR +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_COUNTER +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource) +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource); +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual event update source +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 URS LL_TIM_GetUpdateSource +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_REGULAR +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_COUNTER +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(const TIM_TypeDef *TIMx) +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS)); +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set one pulse mode (one shot v.s. repetitive). +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 OPM LL_TIM_SetOnePulseMode + ARM GAS /tmp/ccdsDELB.s page 221 + + +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param OnePulseMode This parameter can be one of the following values: +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode) +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode); +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual one pulse mode. +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 OPM LL_TIM_GetOnePulseMode +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(const TIM_TypeDef *TIMx) +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM)); +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the timer counter counting mode. +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * check whether or not the counter mode selection feature is supported +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * by a timer instance. +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * requires a timer reset to avoid unexpected direction +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * due to DIR bit readonly in center aligned mode. +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 DIR LL_TIM_SetCounterMode\n +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR1 CMS LL_TIM_SetCounterMode +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CounterMode This parameter can be one of the following values: +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_UP +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_DOWN +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode) +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode); +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual counter mode. +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * check whether or not the counter mode selection feature is supported +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * by a timer instance. +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 DIR LL_TIM_GetCounterMode\n +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR1 CMS LL_TIM_GetCounterMode +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: + ARM GAS /tmp/ccdsDELB.s page 222 + + +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_UP +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_DOWN +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetCounterMode(const TIM_TypeDef *TIMx) +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t counter_mode; +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CMS)); +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** if (counter_mode == 0U) +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return counter_mode; +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable auto-reload (ARR) preload. +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 ARPE LL_TIM_EnableARRPreload +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx) +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_ARPE); +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable auto-reload (ARR) preload. +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 ARPE LL_TIM_DisableARRPreload +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx) + 3226 .loc 5 1504 22 view .LVU1117 + 3227 .LBB405: +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE); + 3228 .loc 5 1506 3 view .LVU1118 + 3229 005e 4FF08043 mov r3, #1073741824 + 3230 0062 1A68 ldr r2, [r3] + 3231 0064 22F08002 bic r2, r2, #128 + 3232 0068 1A60 str r2, [r3] + 3233 .LVL241: + 3234 .loc 5 1506 3 is_stmt 0 view .LVU1119 + 3235 .LBE405: + 3236 .LBE404: +1049:Src/main.c **** LL_TIM_SetTriggerOutput(TIM2, LL_TIM_TRGO_RESET); + 3237 .loc 2 1049 3 is_stmt 1 view .LVU1120 + 3238 .LBB406: + 3239 .LBI406: +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccdsDELB.s page 223 + + +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether auto-reload (ARR) preload is enabled. +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 ARPE LL_TIM_IsEnabledARRPreload +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(const TIM_TypeDef *TIMx) +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL); +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the division ratio between the timer clock and the sampling clock used by the dead +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (when supported) and the digital filters. +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not the clock division feature is supported by the timer +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * instance. +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CKD LL_TIM_SetClockDivision +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ClockDivision This parameter can be one of the following values: +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision) +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision); +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the actual division ratio between the timer clock and the sampling clock used by t +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * generators (when supported) and the digital filters. +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not the clock division feature is supported by the timer +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * instance. +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CKD LL_TIM_GetClockDivision +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetClockDivision(const TIM_TypeDef *TIMx) +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD)); +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the counter value. +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CNT CNT LL_TIM_SetCounter +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF) +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/ccdsDELB.s page 224 + + +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter) +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CNT, Counter); +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the counter value. +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CNT CNT LL_TIM_GetCounter +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF) +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetCounter(const TIM_TypeDef *TIMx) +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CNT)); +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current direction of the counter +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 DIR LL_TIM_GetDirection +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERDIRECTION_UP +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERDIRECTION_DOWN +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetDirection(const TIM_TypeDef *TIMx) +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the prescaler value. +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1). +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The prescaler can be changed on the fly as this control register is buffered. The new +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * prescaler ratio is taken into account at the next update event. +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll PSC PSC LL_TIM_SetPrescaler +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Prescaler between Min_Data=0 and Max_Data=65535 +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler) +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->PSC, Prescaler); +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the prescaler value. +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll PSC PSC LL_TIM_GetPrescaler +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Prescaler value between Min_Data=0 and Max_Data=65535 +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetPrescaler(const TIM_TypeDef *TIMx) +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->PSC)); +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + ARM GAS /tmp/ccdsDELB.s page 225 + + +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the auto-reload value. +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The counter is blocked while the auto-reload value is null. +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll ARR ARR LL_TIM_SetAutoReload +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param AutoReload between Min_Data=0 and Max_Data=65535 +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload) +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->ARR, AutoReload); +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the auto-reload value. +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll ARR ARR LL_TIM_GetAutoReload +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Auto-reload value +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetAutoReload(const TIM_TypeDef *TIMx) +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->ARR)); +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the repetition counter value. +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note For advanced timer instances RepetitionCounter can be up to 65535. +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a repetition counter. +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll RCR REP LL_TIM_SetRepetitionCounter +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param RepetitionCounter between Min_Data=0 and Max_Data=255 or 65535 for advanced timer. +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter) +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->RCR, RepetitionCounter); +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the repetition counter value. +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a repetition counter. +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll RCR REP LL_TIM_GetRepetitionCounter +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Repetition counter value +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(const TIM_TypeDef *TIMx) +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->RCR)); +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + ARM GAS /tmp/ccdsDELB.s page 226 + + +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Force a continuous copy of the update interrupt flag (UIF) into the timer counter regis +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This allows both the counter value and a potential roll-over condition signalled by the U +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * in an atomic way. +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UIFREMAP LL_TIM_EnableUIFRemap +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableUIFRemap(TIM_TypeDef *TIMx) +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_UIFREMAP); +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable update interrupt flag (UIF) remapping. +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UIFREMAP LL_TIM_DisableUIFRemap +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableUIFRemap(TIM_TypeDef *TIMx) +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_UIFREMAP); +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether update interrupt flag (UIF) copy is set. +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Counter Counter value +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveUIFCPY(const uint32_t Counter) +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (((Counter & TIM_CNT_UIFCPY) == (TIM_CNT_UIFCPY)) ? 1UL : 0UL); +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written, +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * they are updated only when a commutation event (COM) occurs. +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Only on channels that have a complementary output. +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance is able to generate a commutation event. +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCPC LL_TIM_CC_EnablePreload +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx) +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR2, TIM_CR2_CCPC); +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + ARM GAS /tmp/ccdsDELB.s page 227 + + +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance is able to generate a commutation event. +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCPC LL_TIM_CC_DisablePreload +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx) +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC); +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare control bits (CCxE, CCxNE and OCxM) preload is en +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCPC LL_TIM_CC_IsEnabledPreload +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledPreload(const TIM_TypeDef *TIMx) +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR2, TIM_CR2_CCPC) == (TIM_CR2_CCPC)) ? 1UL : 0UL); +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM). +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance is able to generate a commutation event. +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCUS LL_TIM_CC_SetUpdate +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CCUpdateSource This parameter can be one of the following values: +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource) +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource); +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the trigger of the capture/compare DMA request. +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCDS LL_TIM_CC_SetDMAReqTrigger +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DMAReqTrigger This parameter can be one of the following values: +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_CC +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger) +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger); +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual trigger of the capture/compare DMA request. + ARM GAS /tmp/ccdsDELB.s page 228 + + +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCDS LL_TIM_CC_GetDMAReqTrigger +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_CC +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(const TIM_TypeDef *TIMx) +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS)); +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the lock level to freeze the +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * configuration of several capture/compare parameters. +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the lock mechanism is supported by a timer instance. +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR LOCK LL_TIM_CC_SetLockLevel +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param LockLevel This parameter can be one of the following values: +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_OFF +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_1 +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_2 +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_3 +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel) +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel); +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare channels. +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1E LL_TIM_CC_EnableChannel\n +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NE LL_TIM_CC_EnableChannel\n +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2E LL_TIM_CC_EnableChannel\n +1829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NE LL_TIM_CC_EnableChannel\n +1830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3E LL_TIM_CC_EnableChannel\n +1831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NE LL_TIM_CC_EnableChannel\n +1832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4E LL_TIM_CC_EnableChannel\n +1833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5E LL_TIM_CC_EnableChannel\n +1834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6E LL_TIM_CC_EnableChannel +1835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channels This parameter can be a combination of the following values: +1837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +1841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +1843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +1849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CCER, Channels); + ARM GAS /tmp/ccdsDELB.s page 229 + + +1851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare channels. +1855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1E LL_TIM_CC_DisableChannel\n +1856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NE LL_TIM_CC_DisableChannel\n +1857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2E LL_TIM_CC_DisableChannel\n +1858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NE LL_TIM_CC_DisableChannel\n +1859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3E LL_TIM_CC_DisableChannel\n +1860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NE LL_TIM_CC_DisableChannel\n +1861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4E LL_TIM_CC_DisableChannel\n +1862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5E LL_TIM_CC_DisableChannel\n +1863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6E LL_TIM_CC_DisableChannel +1864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channels This parameter can be a combination of the following values: +1866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +1868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +1870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +1872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +1878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CCER, Channels); +1880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether channel(s) is(are) enabled. +1884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1E LL_TIM_CC_IsEnabledChannel\n +1885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NE LL_TIM_CC_IsEnabledChannel\n +1886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2E LL_TIM_CC_IsEnabledChannel\n +1887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NE LL_TIM_CC_IsEnabledChannel\n +1888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3E LL_TIM_CC_IsEnabledChannel\n +1889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NE LL_TIM_CC_IsEnabledChannel\n +1890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4E LL_TIM_CC_IsEnabledChannel\n +1891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5E LL_TIM_CC_IsEnabledChannel\n +1892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6E LL_TIM_CC_IsEnabledChannel +1893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channels This parameter can be a combination of the following values: +1895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +1897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +1899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +1901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(const TIM_TypeDef *TIMx, uint32_t Channels) +1907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + ARM GAS /tmp/ccdsDELB.s page 230 + + +1908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL); +1909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Output_Channel Output channel configuration +1916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure an output channel. +1920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_OC_ConfigOutput\n +1921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_OC_ConfigOutput\n +1922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_OC_ConfigOutput\n +1923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_OC_ConfigOutput\n +1924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 CC5S LL_TIM_OC_ConfigOutput\n +1925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 CC6S LL_TIM_OC_ConfigOutput\n +1926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1P LL_TIM_OC_ConfigOutput\n +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_OC_ConfigOutput\n +1928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_OC_ConfigOutput\n +1929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_OC_ConfigOutput\n +1930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5P LL_TIM_OC_ConfigOutput\n +1931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6P LL_TIM_OC_ConfigOutput\n +1932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS1 LL_TIM_OC_ConfigOutput\n +1933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2 LL_TIM_OC_ConfigOutput\n +1934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3 LL_TIM_OC_ConfigOutput\n +1935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS4 LL_TIM_OC_ConfigOutput\n +1936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS5 LL_TIM_OC_ConfigOutput\n +1937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS6 LL_TIM_OC_ConfigOutput +1938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +1940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Configuration This parameter must be a combination of all the following values: +1947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW +1948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH +1949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configura +1952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +1954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel])); +1956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), +1957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]); +1958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), +1959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]); +1960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Define the behavior of the output reference signal OCxREF from which +1964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * OCx and OCxN (when relevant) are derived. + ARM GAS /tmp/ccdsDELB.s page 231 + + +1965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1M LL_TIM_OC_SetMode\n +1966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2M LL_TIM_OC_SetMode\n +1967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3M LL_TIM_OC_SetMode\n +1968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4M LL_TIM_OC_SetMode\n +1969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5M LL_TIM_OC_SetMode\n +1970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6M LL_TIM_OC_SetMode +1971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +1973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Mode This parameter can be one of the following values: +1980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FROZEN +1981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ACTIVE +1982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_INACTIVE +1983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_TOGGLE +1984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE +1985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE +1986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM1 +1987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM2 +1988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM1 +1989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM2 +1990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM1 +1991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM2 +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM1 +1993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM2 +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode) +1997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +1999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT +2001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the output compare mode of an output channel. +2005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1M LL_TIM_OC_GetMode\n +2006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2M LL_TIM_OC_GetMode\n +2007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3M LL_TIM_OC_GetMode\n +2008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4M LL_TIM_OC_GetMode\n +2009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5M LL_TIM_OC_GetMode\n +2010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6M LL_TIM_OC_GetMode +2011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FROZEN +2021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ACTIVE + ARM GAS /tmp/ccdsDELB.s page 232 + + +2022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_INACTIVE +2023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_TOGGLE +2024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE +2025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE +2026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM1 +2027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM2 +2028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM1 +2029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM2 +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM1 +2031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM2 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM1 +2033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM2 +2034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetMode(const TIM_TypeDef *TIMx, uint32_t Channel) +2036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT +2040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the polarity of an output channel. +2044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_OC_SetPolarity\n +2045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_OC_SetPolarity\n +2046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_OC_SetPolarity\n +2047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_OC_SetPolarity\n +2048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_OC_SetPolarity\n +2049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_OC_SetPolarity\n +2050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_OC_SetPolarity\n +2051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5P LL_TIM_OC_SetPolarity\n +2052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6P LL_TIM_OC_SetPolarity +2053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Polarity This parameter can be one of the following values: +2065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_HIGH +2066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_LOW +2067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity) +2070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), Polarity << SHIFT_TAB_CCxP[i +2073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the polarity of an output channel. +2077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_OC_GetPolarity\n +2078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_OC_GetPolarity\n + ARM GAS /tmp/ccdsDELB.s page 233 + + +2079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_OC_GetPolarity\n +2080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_OC_GetPolarity\n +2081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_OC_GetPolarity\n +2082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_OC_GetPolarity\n +2083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_OC_GetPolarity\n +2084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5P LL_TIM_OC_GetPolarity\n +2085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6P LL_TIM_OC_GetPolarity +2086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_HIGH +2099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_LOW +2100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +2102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChan +2105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the IDLE state of an output channel +2109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function is significant only for the timer instances +2110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * supporting the break feature. Macro IS_TIM_BREAK_INSTANCE(TIMx) +2111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * can be used to check whether or not a timer instance provides +2112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a break input. +2113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 OIS1 LL_TIM_OC_SetIdleState\n +2114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_SetIdleState\n +2115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2 LL_TIM_OC_SetIdleState\n +2116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_SetIdleState\n +2117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3 LL_TIM_OC_SetIdleState\n +2118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3N LL_TIM_OC_SetIdleState\n +2119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS4 LL_TIM_OC_SetIdleState\n +2120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS5 LL_TIM_OC_SetIdleState\n +2121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS6 LL_TIM_OC_SetIdleState +2122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param IdleState This parameter can be one of the following values: +2134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_LOW +2135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_HIGH + ARM GAS /tmp/ccdsDELB.s page 234 + + +2136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState +2139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), IdleState << SHIFT_TAB_OISx[iC +2142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the IDLE state of an output channel +2146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 OIS1 LL_TIM_OC_GetIdleState\n +2147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_GetIdleState\n +2148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2 LL_TIM_OC_GetIdleState\n +2149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_GetIdleState\n +2150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3 LL_TIM_OC_GetIdleState\n +2151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3N LL_TIM_OC_GetIdleState\n +2152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS4 LL_TIM_OC_GetIdleState\n +2153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS5 LL_TIM_OC_GetIdleState\n +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS6 LL_TIM_OC_GetIdleState +2155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_LOW +2168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_HIGH +2169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(const TIM_TypeDef *TIMx, uint32_t Channel) +2171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChanne +2174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable fast mode for the output channel. +2178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Acts only if the channel is configured in PWM1 or PWM2 mode. +2179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1FE LL_TIM_OC_EnableFast\n +2180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2FE LL_TIM_OC_EnableFast\n +2181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3FE LL_TIM_OC_EnableFast\n +2182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4FE LL_TIM_OC_EnableFast\n +2183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5FE LL_TIM_OC_EnableFast\n +2184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6FE LL_TIM_OC_EnableFast +2185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 + ARM GAS /tmp/ccdsDELB.s page 235 + + +2193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel) +2196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); +2200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable fast mode for the output channel. +2205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1FE LL_TIM_OC_DisableFast\n +2206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2FE LL_TIM_OC_DisableFast\n +2207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3FE LL_TIM_OC_DisableFast\n +2208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4FE LL_TIM_OC_DisableFast\n +2209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5FE LL_TIM_OC_DisableFast\n +2210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6FE LL_TIM_OC_DisableFast +2211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel) +2222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); +2226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether fast mode is enabled for the output channel. +2231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1FE LL_TIM_OC_IsEnabledFast\n +2232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2FE LL_TIM_OC_IsEnabledFast\n +2233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3FE LL_TIM_OC_IsEnabledFast\n +2234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4FE LL_TIM_OC_IsEnabledFast\n +2235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5FE LL_TIM_OC_IsEnabledFast\n +2236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6FE LL_TIM_OC_IsEnabledFast +2237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(const TIM_TypeDef *TIMx, uint32_t Channel) +2248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + ARM GAS /tmp/ccdsDELB.s page 236 + + +2250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]; +2252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +2253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable compare register (TIMx_CCRx) preload for the output channel. +2257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1PE LL_TIM_OC_EnablePreload\n +2258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2PE LL_TIM_OC_EnablePreload\n +2259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3PE LL_TIM_OC_EnablePreload\n +2260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4PE LL_TIM_OC_EnablePreload\n +2261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5PE LL_TIM_OC_EnablePreload\n +2262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6PE LL_TIM_OC_EnablePreload +2263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +2274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +2278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable compare register (TIMx_CCRx) preload for the output channel. +2282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1PE LL_TIM_OC_DisablePreload\n +2283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2PE LL_TIM_OC_DisablePreload\n +2284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3PE LL_TIM_OC_DisablePreload\n +2285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4PE LL_TIM_OC_DisablePreload\n +2286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5PE LL_TIM_OC_DisablePreload\n +2287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6PE LL_TIM_OC_DisablePreload +2288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +2299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +2303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channe + ARM GAS /tmp/ccdsDELB.s page 237 + + +2307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1PE LL_TIM_OC_IsEnabledPreload\n +2308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2PE LL_TIM_OC_IsEnabledPreload\n +2309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3PE LL_TIM_OC_IsEnabledPreload\n +2310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4PE LL_TIM_OC_IsEnabledPreload\n +2311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5PE LL_TIM_OC_IsEnabledPreload\n +2312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6PE LL_TIM_OC_IsEnabledPreload +2313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(const TIM_TypeDef *TIMx, uint32_t Channel) +2324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]; +2328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +2329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable clearing the output channel on an external event. +2333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function can only be used in Output compare and PWM modes. It does not work in Force +2334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether +2335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance can clear the OCxREF signal on an external event. +2336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1CE LL_TIM_OC_EnableClear\n +2337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2CE LL_TIM_OC_EnableClear\n +2338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3CE LL_TIM_OC_EnableClear\n +2339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4CE LL_TIM_OC_EnableClear\n +2340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5CE LL_TIM_OC_EnableClear\n +2341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6CE LL_TIM_OC_EnableClear +2342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel) +2353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +2357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable clearing the output channel on an external event. +2361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether +2362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance can clear the OCxREF signal on an external event. +2363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1CE LL_TIM_OC_DisableClear\n + ARM GAS /tmp/ccdsDELB.s page 238 + + +2364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2CE LL_TIM_OC_DisableClear\n +2365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3CE LL_TIM_OC_DisableClear\n +2366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4CE LL_TIM_OC_DisableClear\n +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5CE LL_TIM_OC_DisableClear\n +2368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6CE LL_TIM_OC_DisableClear +2369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel) +2380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +2384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates clearing the output channel on an external event is enabled for the output ch +2388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function enables clearing the output channel on an external event. +2389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function can only be used in Output compare and PWM modes. It does not work in Force +2390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether +2391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance can clear the OCxREF signal on an external event. +2392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1CE LL_TIM_OC_IsEnabledClear\n +2393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2CE LL_TIM_OC_IsEnabledClear\n +2394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3CE LL_TIM_OC_IsEnabledClear\n +2395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4CE LL_TIM_OC_IsEnabledClear\n +2396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5CE LL_TIM_OC_IsEnabledClear\n +2397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6CE LL_TIM_OC_IsEnabledClear +2398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(const TIM_TypeDef *TIMx, uint32_t Channel) +2409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]; +2413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +2414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal an +2418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the Ocx and OCxN signals). +2419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +2420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * dead-time insertion feature is supported by a timer instance. + ARM GAS /tmp/ccdsDELB.s page 239 + + +2421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter +2422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR DTG LL_TIM_OC_SetDeadTime +2423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DeadTime between Min_Data=0 and Max_Data=255 +2425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime) +2428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime); +2430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 1 (TIMx_CCR1). +2434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not +2438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 1 is supported by a timer instance. +2439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR1 CCR1 LL_TIM_OC_SetCompareCH1 +2440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue) +2445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR1, CompareValue); +2447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 2 (TIMx_CCR2). +2451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not +2455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 2 is supported by a timer instance. +2456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR2 CCR2 LL_TIM_OC_SetCompareCH2 +2457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue) +2462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR2, CompareValue); +2464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 3 (TIMx_CCR3). +2468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not +2472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel is supported by a timer instance. +2473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR3 CCR3 LL_TIM_OC_SetCompareCH3 +2474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/ccdsDELB.s page 240 + + +2478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue) +2479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR3, CompareValue); +2481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 4 (TIMx_CCR4). +2485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not +2489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 4 is supported by a timer instance. +2490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR4 CCR4 LL_TIM_OC_SetCompareCH4 +2491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue) +2496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR4, CompareValue); +2498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 5 (TIMx_CCR5). +2502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC5_INSTANCE(TIMx) can be used to check whether or not +2503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 5 is supported by a timer instance. +2504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR5 CCR5 LL_TIM_OC_SetCompareCH5 +2505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH5(TIM_TypeDef *TIMx, uint32_t CompareValue) +2510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCR5, TIM_CCR5_CCR5, CompareValue); +2512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 6 (TIMx_CCR6). +2516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC6_INSTANCE(TIMx) can be used to check whether or not +2517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 6 is supported by a timer instance. +2518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR6 CCR6 LL_TIM_OC_SetCompareCH6 +2519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH6(TIM_TypeDef *TIMx, uint32_t CompareValue) +2524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR6, CompareValue); +2526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR1) set for output channel 1. +2530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not +2534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 1 is supported by a timer instance. + ARM GAS /tmp/ccdsDELB.s page 241 + + +2535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR1 CCR1 LL_TIM_OC_GetCompareCH1 +2536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(const TIM_TypeDef *TIMx) +2540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR1)); +2542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR2) set for output channel 2. +2546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not +2550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 2 is supported by a timer instance. +2551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR2 CCR2 LL_TIM_OC_GetCompareCH2 +2552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(const TIM_TypeDef *TIMx) +2556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR2)); +2558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR3) set for output channel 3. +2562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not +2566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 3 is supported by a timer instance. +2567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR3 CCR3 LL_TIM_OC_GetCompareCH3 +2568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(const TIM_TypeDef *TIMx) +2572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR3)); +2574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR4) set for output channel 4. +2578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not +2582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 4 is supported by a timer instance. +2583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR4 CCR4 LL_TIM_OC_GetCompareCH4 +2584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(const TIM_TypeDef *TIMx) +2588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR4)); +2590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccdsDELB.s page 242 + + +2592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR5) set for output channel 5. +2594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC5_INSTANCE(TIMx) can be used to check whether or not +2595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 5 is supported by a timer instance. +2596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR5 CCR5 LL_TIM_OC_GetCompareCH5 +2597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH5(const TIM_TypeDef *TIMx) +2601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CCR5, TIM_CCR5_CCR5)); +2603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR6) set for output channel 6. +2607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC6_INSTANCE(TIMx) can be used to check whether or not +2608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 6 is supported by a timer instance. +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR6 CCR6 LL_TIM_OC_GetCompareCH6 +2610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH6(const TIM_TypeDef *TIMx) +2614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR6)); +2616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Select on which reference signal the OC5REF is combined to. +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMBINED3PHASEPWM_INSTANCE(TIMx) can be used to check +2621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports the combined 3-phase PWM mode. +2622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR5 GC5C3 LL_TIM_SetCH5CombinedChannels\n +2623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCR5 GC5C2 LL_TIM_SetCH5CombinedChannels\n +2624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCR5 GC5C1 LL_TIM_SetCH5CombinedChannels +2625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param GroupCH5 This parameter can be a combination of the following values: +2627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_NONE +2628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_OC1REFC +2629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_OC2REFC +2630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_OC3REFC +2631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetCH5CombinedChannels(TIM_TypeDef *TIMx, uint32_t GroupCH5) +2634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCR5, (TIM_CCR5_GC5C3 | TIM_CCR5_GC5C2 | TIM_CCR5_GC5C1), GroupCH5); +2636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +2640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Input_Channel Input channel configuration +2643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +2644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure input channel. +2647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_IC_Config\n +2648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC1PSC LL_TIM_IC_Config\n + ARM GAS /tmp/ccdsDELB.s page 243 + + +2649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC1F LL_TIM_IC_Config\n +2650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_IC_Config\n +2651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2PSC LL_TIM_IC_Config\n +2652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2F LL_TIM_IC_Config\n +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_IC_Config\n +2654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3PSC LL_TIM_IC_Config\n +2655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3F LL_TIM_IC_Config\n +2656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_IC_Config\n +2657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4PSC LL_TIM_IC_Config\n +2658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4F LL_TIM_IC_Config\n +2659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1P LL_TIM_IC_Config\n +2660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_IC_Config\n +2661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_IC_Config\n +2662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_IC_Config\n +2663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_IC_Config\n +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_IC_Config\n +2665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_IC_Config\n +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4NP LL_TIM_IC_Config +2667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Configuration This parameter must be a combination of all the following values: +2674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_ +2675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8 +2676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8 +2677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING or @ref LL_TIM_I +2678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +2681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChanne +2685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S)) +2686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** << SHIFT_TAB_ICxx[iChannel]); +2687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), +2688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]); +2689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the active input. +2693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_IC_SetActiveInput\n +2694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_IC_SetActiveInput\n +2695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_IC_SetActiveInput\n +2696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_IC_SetActiveInput +2697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICActiveInput This parameter can be one of the following values: +2704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI +2705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI + ARM GAS /tmp/ccdsDELB.s page 244 + + +2706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_TRC +2707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiv +2710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT +2714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current active input. +2718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_IC_GetActiveInput\n +2719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_IC_GetActiveInput\n +2720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_IC_GetActiveInput\n +2721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_IC_GetActiveInput +2722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI +2731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_TRC +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(const TIM_TypeDef *TIMx, uint32_t Channel) +2734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChann +2738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the prescaler of input channel. +2742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1PSC LL_TIM_IC_SetPrescaler\n +2743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2PSC LL_TIM_IC_SetPrescaler\n +2744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3PSC LL_TIM_IC_SetPrescaler\n +2745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4PSC LL_TIM_IC_SetPrescaler +2746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICPrescaler This parameter can be one of the following values: +2753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 +2754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV2 +2755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV4 +2756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV8 +2757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescal +2760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC + ARM GAS /tmp/ccdsDELB.s page 245 + + +2763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT +2764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current prescaler value acting on an input channel. +2768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1PSC LL_TIM_IC_GetPrescaler\n +2769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2PSC LL_TIM_IC_GetPrescaler\n +2770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3PSC LL_TIM_IC_GetPrescaler\n +2771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4PSC LL_TIM_IC_GetPrescaler +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 +2780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV2 +2781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV4 +2782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV8 +2783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(const TIM_TypeDef *TIMx, uint32_t Channel) +2785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iCha +2789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the input filter duration. +2793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1F LL_TIM_IC_SetFilter\n +2794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2F LL_TIM_IC_SetFilter\n +2795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3F LL_TIM_IC_SetFilter\n +2796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4F LL_TIM_IC_SetFilter +2797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICFilter This parameter can be one of the following values: +2804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1 +2805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 +2807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 +2808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 +2809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 +2810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 +2811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 +2812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 +2813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 +2814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 +2815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 +2816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 +2817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 +2818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 +2819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 + ARM GAS /tmp/ccdsDELB.s page 246 + + +2820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter) +2823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ +2827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the input filter duration. +2831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1F LL_TIM_IC_GetFilter\n +2832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2F LL_TIM_IC_GetFilter\n +2833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3F LL_TIM_IC_GetFilter\n +2834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4F LL_TIM_IC_GetFilter +2835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1 +2843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 +2844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 +2845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 +2846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 +2847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 +2848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 +2849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 +2850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 +2851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 +2852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 +2853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 +2854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 +2855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 +2856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 +2857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 +2858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(const TIM_TypeDef *TIMx, uint32_t Channel) +2860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChann +2864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the input channel polarity. +2868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_IC_SetPolarity\n +2869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_IC_SetPolarity\n +2870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_IC_SetPolarity\n +2871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_IC_SetPolarity\n +2872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_IC_SetPolarity\n +2873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_IC_SetPolarity\n +2874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_IC_SetPolarity\n +2875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4NP LL_TIM_IC_SetPolarity +2876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance + ARM GAS /tmp/ccdsDELB.s page 247 + + +2877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICPolarity This parameter can be one of the following values: +2883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_RISING +2884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_FALLING +2885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE +2886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity +2889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), +2892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ICPolarity << SHIFT_TAB_CCxP[iChannel]); +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current input channel polarity. +2897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_IC_GetPolarity\n +2898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_IC_GetPolarity\n +2899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_IC_GetPolarity\n +2900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_IC_GetPolarity\n +2901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_IC_GetPolarity\n +2902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_IC_GetPolarity\n +2903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_IC_GetPolarity\n +2904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4NP LL_TIM_IC_GetPolarity +2905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_RISING +2913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_FALLING +2914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE +2915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +2917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >> +2920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SHIFT_TAB_CCxP[iChannel]); +2921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Connect the TIMx_CH1, CH2 and CH3 pins to the TI1 input (XOR combination). +2925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not +2926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an XOR input. +2927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 TI1S LL_TIM_IC_EnableXORCombination +2928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx) +2932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR2, TIM_CR2_TI1S); + ARM GAS /tmp/ccdsDELB.s page 248 + + +2934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disconnect the TIMx_CH1, CH2 and CH3 pins from the TI1 input. +2938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not +2939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an XOR input. +2940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 TI1S LL_TIM_IC_DisableXORCombination +2941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx) +2945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S); +2947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input. +2951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not +2952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an XOR input. +2953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 TI1S LL_TIM_IC_IsEnabledXORCombination +2954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(const TIM_TypeDef *TIMx) +2958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL); +2960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 1. +2964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +2965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not +2968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 1 is supported by a timer instance. +2969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR1 CCR1 LL_TIM_IC_GetCaptureCH1 +2970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +2972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(const TIM_TypeDef *TIMx) +2974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR1)); +2976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 2. +2980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +2981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not +2984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 2 is supported by a timer instance. +2985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR2 CCR2 LL_TIM_IC_GetCaptureCH2 +2986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +2988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(const TIM_TypeDef *TIMx) +2990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + ARM GAS /tmp/ccdsDELB.s page 249 + + +2991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR2)); +2992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 3. +2996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +2997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not +3000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 3 is supported by a timer instance. +3001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR3 CCR3 LL_TIM_IC_GetCaptureCH3 +3002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +3004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(const TIM_TypeDef *TIMx) +3006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR3)); +3008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 4. +3012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +3013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +3014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +3015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not +3016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 4 is supported by a timer instance. +3017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR4 CCR4 LL_TIM_IC_GetCaptureCH4 +3018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +3020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(const TIM_TypeDef *TIMx) +3022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR4)); +3024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection +3031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable external clock mode 2. +3035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ET +3036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ECE LL_TIM_EnableExternalClock +3039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx) +3043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->SMCR, TIM_SMCR_ECE); +3045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + ARM GAS /tmp/ccdsDELB.s page 250 + + +3048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable external clock mode 2. +3049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ECE LL_TIM_DisableExternalClock +3052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx) +3056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE); +3058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether external clock mode 2 is enabled. +3062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ECE LL_TIM_IsEnabledExternalClock +3065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(const TIM_TypeDef *TIMx) +3069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL); +3071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the clock source of the counter clock. +3075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note when selected clock source is external clock mode 1, the timer input +3076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput() +3077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * function. This timer input must be configured by calling +3078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the @ref LL_TIM_IC_Config() function. +3079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check +3080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode1. +3081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR SMS LL_TIM_SetClockSource\n +3084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * SMCR ECE LL_TIM_SetClockSource +3085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ClockSource This parameter can be one of the following values: +3087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL +3088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1 +3089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2 +3090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource) + 3240 .loc 5 3092 22 view .LVU1121 + 3241 .LBB407: +3093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource); + 3242 .loc 5 3094 3 view .LVU1122 + 3243 006a 9968 ldr r1, [r3, #8] + 3244 006c 0A4A ldr r2, .L130+16 + 3245 006e 0A40 ands r2, r2, r1 + 3246 0070 9A60 str r2, [r3, #8] + 3247 .LVL242: + 3248 .loc 5 3094 3 is_stmt 0 view .LVU1123 + 3249 .LBE407: + ARM GAS /tmp/ccdsDELB.s page 251 + + + 3250 .LBE406: +1050:Src/main.c **** LL_TIM_DisableMasterSlaveMode(TIM2); + 3251 .loc 2 1050 3 is_stmt 1 view .LVU1124 + 3252 .LBB408: + 3253 .LBI408: +3095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the encoder interface mode. +3099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check +3100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports the encoder mode. +3101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR SMS LL_TIM_SetEncoderMode +3102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param EncoderMode This parameter can be one of the following values: +3104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ENCODERMODE_X2_TI1 +3105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ENCODERMODE_X2_TI2 +3106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ENCODERMODE_X4_TI12 +3107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode) +3110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode); +3112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration +3119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the trigger output (TRGO) used for timer synchronization . +3123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check +3124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance can operate as a master timer. +3125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 MMS LL_TIM_SetTriggerOutput +3126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TimerSynchronization This parameter can be one of the following values: +3128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_RESET +3129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_ENABLE +3130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_UPDATE +3131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_CC1IF +3132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC1REF +3133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC2REF +3134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC3REF +3135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC4REF +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization) + 3254 .loc 5 3138 22 view .LVU1125 + 3255 .LBB409: +3139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization); + 3256 .loc 5 3140 3 view .LVU1126 + 3257 0072 5A68 ldr r2, [r3, #4] + 3258 0074 22F07002 bic r2, r2, #112 + 3259 0078 5A60 str r2, [r3, #4] + ARM GAS /tmp/ccdsDELB.s page 252 + + + 3260 .LVL243: + 3261 .loc 5 3140 3 is_stmt 0 view .LVU1127 + 3262 .LBE409: + 3263 .LBE408: +1051:Src/main.c **** /* USER CODE BEGIN TIM2_Init 2 */ + 3264 .loc 2 1051 3 is_stmt 1 view .LVU1128 + 3265 .LBB410: + 3266 .LBI410: +3141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the trigger output 2 (TRGO2) used for ADC synchronization . +3145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_TRGO2_INSTANCE(TIMx) can be used to check +3146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance can be used for ADC synchronization. +3147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 MMS2 LL_TIM_SetTriggerOutput2 +3148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer Instance +3149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ADCSynchronization This parameter can be one of the following values: +3150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_RESET +3151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_ENABLE +3152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_UPDATE +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_CC1F +3154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC1 +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC2 +3156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC3 +3157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4 +3158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC5 +3159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC6 +3160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4_RISINGFALLING +3161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC6_RISINGFALLING +3162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4_RISING_OC6_RISING +3163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4_RISING_OC6_FALLING +3164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC5_RISING_OC6_RISING +3165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC5_RISING_OC6_FALLING +3166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetTriggerOutput2(TIM_TypeDef *TIMx, uint32_t ADCSynchronization) +3169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_MMS2, ADCSynchronization); +3171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the synchronization mode of a slave timer. +3175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR SMS LL_TIM_SetSlaveMode +3178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param SlaveMode This parameter can be one of the following values: +3180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_DISABLED +3181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_RESET +3182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_GATED +3183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_TRIGGER +3184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_COMBINED_RESETTRIGGER +3185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode) +3188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode); + ARM GAS /tmp/ccdsDELB.s page 253 + + +3190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the selects the trigger input to be used to synchronize the counter. +3194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR TS LL_TIM_SetTriggerInput +3197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TriggerInput This parameter can be one of the following values: +3199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR0 +3200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR1 +3201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR2 +3202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR3 +3203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_TI1F_ED +3204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_TI1FP1 +3205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_TI2FP2 +3206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ETRF +3207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput) +3210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput); +3212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the Master/Slave mode. +3216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR MSM LL_TIM_EnableMasterSlaveMode +3219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx) +3223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->SMCR, TIM_SMCR_MSM); +3225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the Master/Slave mode. +3229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR MSM LL_TIM_DisableMasterSlaveMode +3232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx) + 3267 .loc 5 3235 22 view .LVU1129 + 3268 .LBB411: +3236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM); + 3269 .loc 5 3237 3 view .LVU1130 + 3270 007a 9A68 ldr r2, [r3, #8] + 3271 007c 22F08002 bic r2, r2, #128 + 3272 0080 9A60 str r2, [r3, #8] + 3273 .LVL244: + 3274 .loc 5 3237 3 is_stmt 0 view .LVU1131 + 3275 .LBE411: + ARM GAS /tmp/ccdsDELB.s page 254 + + + 3276 .LBE410: +1056:Src/main.c **** + 3277 .loc 2 1056 1 view .LVU1132 + 3278 0082 06B0 add sp, sp, #24 + 3279 .LCFI27: + 3280 .cfi_def_cfa_offset 8 + 3281 @ sp needed + 3282 0084 10BD pop {r4, pc} + 3283 .L131: + 3284 0086 00BF .align 2 + 3285 .L130: + 3286 0088 00380240 .word 1073887232 + 3287 008c 00ED00E0 .word -536810240 + 3288 0090 00E100E0 .word -536813312 + 3289 0094 40D10C00 .word 840000 + 3290 0098 F8BFFEFF .word -81928 + 3291 .cfi_endproc + 3292 .LFE1195: + 3294 .section .text.MX_TIM5_Init,"ax",%progbits + 3295 .align 1 + 3296 .syntax unified + 3297 .thumb + 3298 .thumb_func + 3299 .fpu fpv5-d16 + 3301 MX_TIM5_Init: + 3302 .LFB1196: +1064:Src/main.c **** + 3303 .loc 2 1064 1 is_stmt 1 view -0 + 3304 .cfi_startproc + 3305 @ args = 0, pretend = 0, frame = 24 + 3306 @ frame_needed = 0, uses_anonymous_args = 0 + 3307 0000 10B5 push {r4, lr} + 3308 .LCFI28: + 3309 .cfi_def_cfa_offset 8 + 3310 .cfi_offset 4, -8 + 3311 .cfi_offset 14, -4 + 3312 0002 86B0 sub sp, sp, #24 + 3313 .LCFI29: + 3314 .cfi_def_cfa_offset 32 +1070:Src/main.c **** + 3315 .loc 2 1070 3 view .LVU1134 +1070:Src/main.c **** + 3316 .loc 2 1070 22 is_stmt 0 view .LVU1135 + 3317 0004 0024 movs r4, #0 + 3318 0006 0194 str r4, [sp, #4] + 3319 0008 0294 str r4, [sp, #8] + 3320 000a 0394 str r4, [sp, #12] + 3321 000c 0494 str r4, [sp, #16] + 3322 000e 0594 str r4, [sp, #20] +1073:Src/main.c **** + 3323 .loc 2 1073 3 is_stmt 1 view .LVU1136 + 3324 .LVL245: + 3325 .LBB412: + 3326 .LBI412: +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 3327 .loc 3 1071 22 view .LVU1137 + 3328 .LBB413: + ARM GAS /tmp/ccdsDELB.s page 255 + + +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1ENR, Periphs); + 3329 .loc 3 1073 3 view .LVU1138 +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 3330 .loc 3 1074 3 view .LVU1139 + 3331 0010 1C4B ldr r3, .L134 + 3332 0012 1A6C ldr r2, [r3, #64] + 3333 0014 42F00802 orr r2, r2, #8 + 3334 0018 1A64 str r2, [r3, #64] +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3335 .loc 3 1076 3 view .LVU1140 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3336 .loc 3 1076 12 is_stmt 0 view .LVU1141 + 3337 001a 1B6C ldr r3, [r3, #64] + 3338 001c 03F00803 and r3, r3, #8 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3339 .loc 3 1076 10 view .LVU1142 + 3340 0020 0093 str r3, [sp] +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 3341 .loc 3 1077 3 is_stmt 1 view .LVU1143 + 3342 0022 009B ldr r3, [sp] + 3343 .LVL246: +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 3344 .loc 3 1077 3 is_stmt 0 view .LVU1144 + 3345 .LBE413: + 3346 .LBE412: +1076:Src/main.c **** NVIC_EnableIRQ(TIM5_IRQn); + 3347 .loc 2 1076 3 is_stmt 1 view .LVU1145 + 3348 .LBB414: + 3349 .LBI414: +1884:Drivers/CMSIS/Include/core_cm7.h **** { + 3350 .loc 1 1884 26 view .LVU1146 + 3351 .LBB415: +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 3352 .loc 1 1886 3 view .LVU1147 +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 3353 .loc 1 1886 26 is_stmt 0 view .LVU1148 + 3354 0024 184B ldr r3, .L134+4 + 3355 0026 D868 ldr r0, [r3, #12] + 3356 .LBE415: + 3357 .LBE414: +1076:Src/main.c **** NVIC_EnableIRQ(TIM5_IRQn); + 3358 .loc 2 1076 3 view .LVU1149 + 3359 0028 2246 mov r2, r4 + 3360 002a 2146 mov r1, r4 + 3361 002c C0F30220 ubfx r0, r0, #8, #3 + 3362 0030 FFF7FEFF bl NVIC_EncodePriority + 3363 .LVL247: + 3364 .LBB416: + 3365 .LBI416: +2024:Drivers/CMSIS/Include/core_cm7.h **** { + 3366 .loc 1 2024 22 is_stmt 1 view .LVU1150 + 3367 .LBB417: +2026:Drivers/CMSIS/Include/core_cm7.h **** { + 3368 .loc 1 2026 3 view .LVU1151 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3369 .loc 1 2028 5 view .LVU1152 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + ARM GAS /tmp/ccdsDELB.s page 256 + + + 3370 .loc 1 2028 49 is_stmt 0 view .LVU1153 + 3371 0034 0001 lsls r0, r0, #4 + 3372 .LVL248: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3373 .loc 1 2028 49 view .LVU1154 + 3374 0036 C0B2 uxtb r0, r0 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3375 .loc 1 2028 47 view .LVU1155 + 3376 0038 144B ldr r3, .L134+8 + 3377 003a 83F83203 strb r0, [r3, #818] + 3378 .LVL249: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3379 .loc 1 2028 47 view .LVU1156 + 3380 .LBE417: + 3381 .LBE416: +1077:Src/main.c **** + 3382 .loc 2 1077 3 is_stmt 1 view .LVU1157 + 3383 .LBB418: + 3384 .LBI418: +1896:Drivers/CMSIS/Include/core_cm7.h **** { + 3385 .loc 1 1896 22 view .LVU1158 + 3386 .LBB419: +1898:Drivers/CMSIS/Include/core_cm7.h **** { + 3387 .loc 1 1898 3 view .LVU1159 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3388 .loc 1 1900 5 view .LVU1160 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3389 .loc 1 1900 43 is_stmt 0 view .LVU1161 + 3390 003e 4FF48022 mov r2, #262144 + 3391 0042 5A60 str r2, [r3, #4] + 3392 .LVL250: +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3393 .loc 1 1900 43 view .LVU1162 + 3394 .LBE419: + 3395 .LBE418: +1082:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + 3396 .loc 2 1082 3 is_stmt 1 view .LVU1163 +1082:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + 3397 .loc 2 1082 28 is_stmt 0 view .LVU1164 + 3398 0044 42F21073 movw r3, #10000 + 3399 0048 ADF80430 strh r3, [sp, #4] @ movhi +1083:Src/main.c **** TIM_InitStruct.Autoreload = 560; + 3400 .loc 2 1083 3 is_stmt 1 view .LVU1165 +1083:Src/main.c **** TIM_InitStruct.Autoreload = 560; + 3401 .loc 2 1083 30 is_stmt 0 view .LVU1166 + 3402 004c 0294 str r4, [sp, #8] +1084:Src/main.c **** TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + 3403 .loc 2 1084 3 is_stmt 1 view .LVU1167 +1084:Src/main.c **** TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + 3404 .loc 2 1084 29 is_stmt 0 view .LVU1168 + 3405 004e 4FF40C73 mov r3, #560 + 3406 0052 0393 str r3, [sp, #12] +1085:Src/main.c **** LL_TIM_Init(TIM5, &TIM_InitStruct); + 3407 .loc 2 1085 3 is_stmt 1 view .LVU1169 +1085:Src/main.c **** LL_TIM_Init(TIM5, &TIM_InitStruct); + 3408 .loc 2 1085 32 is_stmt 0 view .LVU1170 + 3409 0054 0494 str r4, [sp, #16] + ARM GAS /tmp/ccdsDELB.s page 257 + + +1086:Src/main.c **** LL_TIM_DisableARRPreload(TIM5); + 3410 .loc 2 1086 3 is_stmt 1 view .LVU1171 + 3411 0056 0E4C ldr r4, .L134+12 + 3412 0058 01A9 add r1, sp, #4 + 3413 005a 2046 mov r0, r4 + 3414 005c FFF7FEFF bl LL_TIM_Init + 3415 .LVL251: +1087:Src/main.c **** LL_TIM_SetClockSource(TIM5, LL_TIM_CLOCKSOURCE_INTERNAL); + 3416 .loc 2 1087 3 view .LVU1172 + 3417 .LBB420: + 3418 .LBI420: +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 3419 .loc 5 1504 22 view .LVU1173 + 3420 .LBB421: +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3421 .loc 5 1506 3 view .LVU1174 + 3422 0060 2368 ldr r3, [r4] + 3423 0062 23F08003 bic r3, r3, #128 + 3424 0066 2360 str r3, [r4] + 3425 .LVL252: +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3426 .loc 5 1506 3 is_stmt 0 view .LVU1175 + 3427 .LBE421: + 3428 .LBE420: +1088:Src/main.c **** LL_TIM_SetTriggerOutput(TIM5, LL_TIM_TRGO_RESET); + 3429 .loc 2 1088 3 is_stmt 1 view .LVU1176 + 3430 .LBB422: + 3431 .LBI422: +3092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 3432 .loc 5 3092 22 view .LVU1177 + 3433 .LBB423: +3094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3434 .loc 5 3094 3 view .LVU1178 + 3435 0068 A268 ldr r2, [r4, #8] + 3436 006a 0A4B ldr r3, .L134+16 + 3437 006c 1340 ands r3, r3, r2 + 3438 006e A360 str r3, [r4, #8] + 3439 .LVL253: +3094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3440 .loc 5 3094 3 is_stmt 0 view .LVU1179 + 3441 .LBE423: + 3442 .LBE422: +1089:Src/main.c **** LL_TIM_DisableMasterSlaveMode(TIM5); + 3443 .loc 2 1089 3 is_stmt 1 view .LVU1180 + 3444 .LBB424: + 3445 .LBI424: +3138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 3446 .loc 5 3138 22 view .LVU1181 + 3447 .LBB425: +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3448 .loc 5 3140 3 view .LVU1182 + 3449 0070 6368 ldr r3, [r4, #4] + 3450 0072 23F07003 bic r3, r3, #112 + 3451 0076 6360 str r3, [r4, #4] + 3452 .LVL254: +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3453 .loc 5 3140 3 is_stmt 0 view .LVU1183 + ARM GAS /tmp/ccdsDELB.s page 258 + + + 3454 .LBE425: + 3455 .LBE424: +1090:Src/main.c **** /* USER CODE BEGIN TIM5_Init 2 */ + 3456 .loc 2 1090 3 is_stmt 1 view .LVU1184 + 3457 .LBB426: + 3458 .LBI426: +3235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 3459 .loc 5 3235 22 view .LVU1185 + 3460 .LBB427: + 3461 .loc 5 3237 3 view .LVU1186 + 3462 0078 A368 ldr r3, [r4, #8] + 3463 007a 23F08003 bic r3, r3, #128 + 3464 007e A360 str r3, [r4, #8] + 3465 .LVL255: + 3466 .loc 5 3237 3 is_stmt 0 view .LVU1187 + 3467 .LBE427: + 3468 .LBE426: +1095:Src/main.c **** + 3469 .loc 2 1095 1 view .LVU1188 + 3470 0080 06B0 add sp, sp, #24 + 3471 .LCFI30: + 3472 .cfi_def_cfa_offset 8 + 3473 @ sp needed + 3474 0082 10BD pop {r4, pc} + 3475 .L135: + 3476 .align 2 + 3477 .L134: + 3478 0084 00380240 .word 1073887232 + 3479 0088 00ED00E0 .word -536810240 + 3480 008c 00E100E0 .word -536813312 + 3481 0090 000C0040 .word 1073744896 + 3482 0094 F8BFFEFF .word -81928 + 3483 .cfi_endproc + 3484 .LFE1196: + 3486 .section .text.MX_TIM7_Init,"ax",%progbits + 3487 .align 1 + 3488 .syntax unified + 3489 .thumb + 3490 .thumb_func + 3491 .fpu fpv5-d16 + 3493 MX_TIM7_Init: + 3494 .LFB1198: +1140:Src/main.c **** + 3495 .loc 2 1140 1 is_stmt 1 view -0 + 3496 .cfi_startproc + 3497 @ args = 0, pretend = 0, frame = 24 + 3498 @ frame_needed = 0, uses_anonymous_args = 0 + 3499 0000 10B5 push {r4, lr} + 3500 .LCFI31: + 3501 .cfi_def_cfa_offset 8 + 3502 .cfi_offset 4, -8 + 3503 .cfi_offset 14, -4 + 3504 0002 86B0 sub sp, sp, #24 + 3505 .LCFI32: + 3506 .cfi_def_cfa_offset 32 +1146:Src/main.c **** + 3507 .loc 2 1146 3 view .LVU1190 + ARM GAS /tmp/ccdsDELB.s page 259 + + +1146:Src/main.c **** + 3508 .loc 2 1146 22 is_stmt 0 view .LVU1191 + 3509 0004 0024 movs r4, #0 + 3510 0006 0194 str r4, [sp, #4] + 3511 0008 0294 str r4, [sp, #8] + 3512 000a 0394 str r4, [sp, #12] + 3513 000c 0494 str r4, [sp, #16] + 3514 000e 0594 str r4, [sp, #20] +1149:Src/main.c **** + 3515 .loc 2 1149 3 is_stmt 1 view .LVU1192 + 3516 .LVL256: + 3517 .LBB428: + 3518 .LBI428: +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 3519 .loc 3 1071 22 view .LVU1193 + 3520 .LBB429: +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1ENR, Periphs); + 3521 .loc 3 1073 3 view .LVU1194 +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 3522 .loc 3 1074 3 view .LVU1195 + 3523 0010 1A4B ldr r3, .L138 + 3524 0012 1A6C ldr r2, [r3, #64] + 3525 0014 42F02002 orr r2, r2, #32 + 3526 0018 1A64 str r2, [r3, #64] +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3527 .loc 3 1076 3 view .LVU1196 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3528 .loc 3 1076 12 is_stmt 0 view .LVU1197 + 3529 001a 1B6C ldr r3, [r3, #64] + 3530 001c 03F02003 and r3, r3, #32 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3531 .loc 3 1076 10 view .LVU1198 + 3532 0020 0093 str r3, [sp] +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 3533 .loc 3 1077 3 is_stmt 1 view .LVU1199 + 3534 0022 009B ldr r3, [sp] + 3535 .LVL257: +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 3536 .loc 3 1077 3 is_stmt 0 view .LVU1200 + 3537 .LBE429: + 3538 .LBE428: +1152:Src/main.c **** NVIC_EnableIRQ(TIM7_IRQn); + 3539 .loc 2 1152 3 is_stmt 1 view .LVU1201 + 3540 .LBB430: + 3541 .LBI430: +1884:Drivers/CMSIS/Include/core_cm7.h **** { + 3542 .loc 1 1884 26 view .LVU1202 + 3543 .LBB431: +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 3544 .loc 1 1886 3 view .LVU1203 +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 3545 .loc 1 1886 26 is_stmt 0 view .LVU1204 + 3546 0024 164B ldr r3, .L138+4 + 3547 0026 D868 ldr r0, [r3, #12] + 3548 .LBE431: + 3549 .LBE430: +1152:Src/main.c **** NVIC_EnableIRQ(TIM7_IRQn); + ARM GAS /tmp/ccdsDELB.s page 260 + + + 3550 .loc 2 1152 3 view .LVU1205 + 3551 0028 2246 mov r2, r4 + 3552 002a 2146 mov r1, r4 + 3553 002c C0F30220 ubfx r0, r0, #8, #3 + 3554 0030 FFF7FEFF bl NVIC_EncodePriority + 3555 .LVL258: + 3556 .LBB432: + 3557 .LBI432: +2024:Drivers/CMSIS/Include/core_cm7.h **** { + 3558 .loc 1 2024 22 is_stmt 1 view .LVU1206 + 3559 .LBB433: +2026:Drivers/CMSIS/Include/core_cm7.h **** { + 3560 .loc 1 2026 3 view .LVU1207 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3561 .loc 1 2028 5 view .LVU1208 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3562 .loc 1 2028 49 is_stmt 0 view .LVU1209 + 3563 0034 0001 lsls r0, r0, #4 + 3564 .LVL259: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3565 .loc 1 2028 49 view .LVU1210 + 3566 0036 C0B2 uxtb r0, r0 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3567 .loc 1 2028 47 view .LVU1211 + 3568 0038 124B ldr r3, .L138+8 + 3569 003a 83F83703 strb r0, [r3, #823] + 3570 .LVL260: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3571 .loc 1 2028 47 view .LVU1212 + 3572 .LBE433: + 3573 .LBE432: +1153:Src/main.c **** + 3574 .loc 2 1153 3 is_stmt 1 view .LVU1213 + 3575 .LBB434: + 3576 .LBI434: +1896:Drivers/CMSIS/Include/core_cm7.h **** { + 3577 .loc 1 1896 22 view .LVU1214 + 3578 .LBB435: +1898:Drivers/CMSIS/Include/core_cm7.h **** { + 3579 .loc 1 1898 3 view .LVU1215 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3580 .loc 1 1900 5 view .LVU1216 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3581 .loc 1 1900 43 is_stmt 0 view .LVU1217 + 3582 003e 4FF40002 mov r2, #8388608 + 3583 0042 5A60 str r2, [r3, #4] + 3584 .LVL261: +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3585 .loc 1 1900 43 view .LVU1218 + 3586 .LBE435: + 3587 .LBE434: +1158:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + 3588 .loc 2 1158 3 is_stmt 1 view .LVU1219 +1158:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + 3589 .loc 2 1158 28 is_stmt 0 view .LVU1220 + 3590 0044 40F29733 movw r3, #919 + 3591 0048 ADF80430 strh r3, [sp, #4] @ movhi + ARM GAS /tmp/ccdsDELB.s page 261 + + +1159:Src/main.c **** TIM_InitStruct.Autoreload = 99; + 3592 .loc 2 1159 3 is_stmt 1 view .LVU1221 +1159:Src/main.c **** TIM_InitStruct.Autoreload = 99; + 3593 .loc 2 1159 30 is_stmt 0 view .LVU1222 + 3594 004c 0294 str r4, [sp, #8] +1160:Src/main.c **** LL_TIM_Init(TIM7, &TIM_InitStruct); + 3595 .loc 2 1160 3 is_stmt 1 view .LVU1223 +1160:Src/main.c **** LL_TIM_Init(TIM7, &TIM_InitStruct); + 3596 .loc 2 1160 29 is_stmt 0 view .LVU1224 + 3597 004e 6323 movs r3, #99 + 3598 0050 0393 str r3, [sp, #12] +1161:Src/main.c **** LL_TIM_DisableARRPreload(TIM7); + 3599 .loc 2 1161 3 is_stmt 1 view .LVU1225 + 3600 0052 0D4C ldr r4, .L138+12 + 3601 0054 01A9 add r1, sp, #4 + 3602 0056 2046 mov r0, r4 + 3603 0058 FFF7FEFF bl LL_TIM_Init + 3604 .LVL262: +1162:Src/main.c **** LL_TIM_SetTriggerOutput(TIM7, LL_TIM_TRGO_ENABLE); + 3605 .loc 2 1162 3 view .LVU1226 + 3606 .LBB436: + 3607 .LBI436: +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 3608 .loc 5 1504 22 view .LVU1227 + 3609 .LBB437: +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3610 .loc 5 1506 3 view .LVU1228 + 3611 005c 2368 ldr r3, [r4] + 3612 005e 23F08003 bic r3, r3, #128 + 3613 0062 2360 str r3, [r4] + 3614 .LVL263: +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3615 .loc 5 1506 3 is_stmt 0 view .LVU1229 + 3616 .LBE437: + 3617 .LBE436: +1163:Src/main.c **** LL_TIM_DisableMasterSlaveMode(TIM7); + 3618 .loc 2 1163 3 is_stmt 1 view .LVU1230 + 3619 .LBB438: + 3620 .LBI438: +3138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 3621 .loc 5 3138 22 view .LVU1231 + 3622 .LBB439: +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3623 .loc 5 3140 3 view .LVU1232 + 3624 0064 6368 ldr r3, [r4, #4] + 3625 0066 23F07003 bic r3, r3, #112 + 3626 006a 43F01003 orr r3, r3, #16 + 3627 006e 6360 str r3, [r4, #4] + 3628 .LVL264: +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3629 .loc 5 3140 3 is_stmt 0 view .LVU1233 + 3630 .LBE439: + 3631 .LBE438: +1164:Src/main.c **** /* USER CODE BEGIN TIM7_Init 2 */ + 3632 .loc 2 1164 3 is_stmt 1 view .LVU1234 + 3633 .LBB440: + 3634 .LBI440: + ARM GAS /tmp/ccdsDELB.s page 262 + + +3235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 3635 .loc 5 3235 22 view .LVU1235 + 3636 .LBB441: + 3637 .loc 5 3237 3 view .LVU1236 + 3638 0070 A368 ldr r3, [r4, #8] + 3639 0072 23F08003 bic r3, r3, #128 + 3640 0076 A360 str r3, [r4, #8] + 3641 .LVL265: + 3642 .loc 5 3237 3 is_stmt 0 view .LVU1237 + 3643 .LBE441: + 3644 .LBE440: +1169:Src/main.c **** + 3645 .loc 2 1169 1 view .LVU1238 + 3646 0078 06B0 add sp, sp, #24 + 3647 .LCFI33: + 3648 .cfi_def_cfa_offset 8 + 3649 @ sp needed + 3650 007a 10BD pop {r4, pc} + 3651 .L139: + 3652 .align 2 + 3653 .L138: + 3654 007c 00380240 .word 1073887232 + 3655 0080 00ED00E0 .word -536810240 + 3656 0084 00E100E0 .word -536813312 + 3657 0088 00140040 .word 1073746944 + 3658 .cfi_endproc + 3659 .LFE1198: + 3661 .section .text.MX_TIM6_Init,"ax",%progbits + 3662 .align 1 + 3663 .syntax unified + 3664 .thumb + 3665 .thumb_func + 3666 .fpu fpv5-d16 + 3668 MX_TIM6_Init: + 3669 .LFB1197: +1103:Src/main.c **** + 3670 .loc 2 1103 1 is_stmt 1 view -0 + 3671 .cfi_startproc + 3672 @ args = 0, pretend = 0, frame = 24 + 3673 @ frame_needed = 0, uses_anonymous_args = 0 + 3674 0000 10B5 push {r4, lr} + 3675 .LCFI34: + 3676 .cfi_def_cfa_offset 8 + 3677 .cfi_offset 4, -8 + 3678 .cfi_offset 14, -4 + 3679 0002 86B0 sub sp, sp, #24 + 3680 .LCFI35: + 3681 .cfi_def_cfa_offset 32 +1109:Src/main.c **** + 3682 .loc 2 1109 3 view .LVU1240 +1109:Src/main.c **** + 3683 .loc 2 1109 22 is_stmt 0 view .LVU1241 + 3684 0004 0024 movs r4, #0 + 3685 0006 0194 str r4, [sp, #4] + 3686 0008 0294 str r4, [sp, #8] + 3687 000a 0394 str r4, [sp, #12] + 3688 000c 0494 str r4, [sp, #16] + ARM GAS /tmp/ccdsDELB.s page 263 + + + 3689 000e 0594 str r4, [sp, #20] +1112:Src/main.c **** + 3690 .loc 2 1112 3 is_stmt 1 view .LVU1242 + 3691 .LVL266: + 3692 .LBB442: + 3693 .LBI442: +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 3694 .loc 3 1071 22 view .LVU1243 + 3695 .LBB443: +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1ENR, Periphs); + 3696 .loc 3 1073 3 view .LVU1244 +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 3697 .loc 3 1074 3 view .LVU1245 + 3698 0010 1A4B ldr r3, .L142 + 3699 0012 1A6C ldr r2, [r3, #64] + 3700 0014 42F01002 orr r2, r2, #16 + 3701 0018 1A64 str r2, [r3, #64] +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3702 .loc 3 1076 3 view .LVU1246 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3703 .loc 3 1076 12 is_stmt 0 view .LVU1247 + 3704 001a 1B6C ldr r3, [r3, #64] + 3705 001c 03F01003 and r3, r3, #16 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 3706 .loc 3 1076 10 view .LVU1248 + 3707 0020 0093 str r3, [sp] +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 3708 .loc 3 1077 3 is_stmt 1 view .LVU1249 + 3709 0022 009B ldr r3, [sp] + 3710 .LVL267: +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 3711 .loc 3 1077 3 is_stmt 0 view .LVU1250 + 3712 .LBE443: + 3713 .LBE442: +1115:Src/main.c **** NVIC_EnableIRQ(TIM6_DAC_IRQn); + 3714 .loc 2 1115 3 is_stmt 1 view .LVU1251 + 3715 .LBB444: + 3716 .LBI444: +1884:Drivers/CMSIS/Include/core_cm7.h **** { + 3717 .loc 1 1884 26 view .LVU1252 + 3718 .LBB445: +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 3719 .loc 1 1886 3 view .LVU1253 +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 3720 .loc 1 1886 26 is_stmt 0 view .LVU1254 + 3721 0024 164B ldr r3, .L142+4 + 3722 0026 D868 ldr r0, [r3, #12] + 3723 .LBE445: + 3724 .LBE444: +1115:Src/main.c **** NVIC_EnableIRQ(TIM6_DAC_IRQn); + 3725 .loc 2 1115 3 view .LVU1255 + 3726 0028 2246 mov r2, r4 + 3727 002a 2146 mov r1, r4 + 3728 002c C0F30220 ubfx r0, r0, #8, #3 + 3729 0030 FFF7FEFF bl NVIC_EncodePriority + 3730 .LVL268: + 3731 .LBB446: + ARM GAS /tmp/ccdsDELB.s page 264 + + + 3732 .LBI446: +2024:Drivers/CMSIS/Include/core_cm7.h **** { + 3733 .loc 1 2024 22 is_stmt 1 view .LVU1256 + 3734 .LBB447: +2026:Drivers/CMSIS/Include/core_cm7.h **** { + 3735 .loc 1 2026 3 view .LVU1257 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3736 .loc 1 2028 5 view .LVU1258 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3737 .loc 1 2028 49 is_stmt 0 view .LVU1259 + 3738 0034 0001 lsls r0, r0, #4 + 3739 .LVL269: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3740 .loc 1 2028 49 view .LVU1260 + 3741 0036 C0B2 uxtb r0, r0 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3742 .loc 1 2028 47 view .LVU1261 + 3743 0038 124B ldr r3, .L142+8 + 3744 003a 83F83603 strb r0, [r3, #822] + 3745 .LVL270: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 3746 .loc 1 2028 47 view .LVU1262 + 3747 .LBE447: + 3748 .LBE446: +1116:Src/main.c **** + 3749 .loc 2 1116 3 is_stmt 1 view .LVU1263 + 3750 .LBB448: + 3751 .LBI448: +1896:Drivers/CMSIS/Include/core_cm7.h **** { + 3752 .loc 1 1896 22 view .LVU1264 + 3753 .LBB449: +1898:Drivers/CMSIS/Include/core_cm7.h **** { + 3754 .loc 1 1898 3 view .LVU1265 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3755 .loc 1 1900 5 view .LVU1266 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3756 .loc 1 1900 43 is_stmt 0 view .LVU1267 + 3757 003e 4FF48002 mov r2, #4194304 + 3758 0042 5A60 str r2, [r3, #4] + 3759 .LVL271: +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 3760 .loc 1 1900 43 view .LVU1268 + 3761 .LBE449: + 3762 .LBE448: +1121:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + 3763 .loc 2 1121 3 is_stmt 1 view .LVU1269 +1121:Src/main.c **** TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + 3764 .loc 2 1121 28 is_stmt 0 view .LVU1270 + 3765 0044 4BF2AF33 movw r3, #45999 + 3766 0048 ADF80430 strh r3, [sp, #4] @ movhi +1122:Src/main.c **** TIM_InitStruct.Autoreload = 19; + 3767 .loc 2 1122 3 is_stmt 1 view .LVU1271 +1122:Src/main.c **** TIM_InitStruct.Autoreload = 19; + 3768 .loc 2 1122 30 is_stmt 0 view .LVU1272 + 3769 004c 0294 str r4, [sp, #8] +1123:Src/main.c **** LL_TIM_Init(TIM6, &TIM_InitStruct); + 3770 .loc 2 1123 3 is_stmt 1 view .LVU1273 + ARM GAS /tmp/ccdsDELB.s page 265 + + +1123:Src/main.c **** LL_TIM_Init(TIM6, &TIM_InitStruct); + 3771 .loc 2 1123 29 is_stmt 0 view .LVU1274 + 3772 004e 1323 movs r3, #19 + 3773 0050 0393 str r3, [sp, #12] +1124:Src/main.c **** LL_TIM_DisableARRPreload(TIM6); + 3774 .loc 2 1124 3 is_stmt 1 view .LVU1275 + 3775 0052 0D4C ldr r4, .L142+12 + 3776 0054 01A9 add r1, sp, #4 + 3777 0056 2046 mov r0, r4 + 3778 0058 FFF7FEFF bl LL_TIM_Init + 3779 .LVL272: +1125:Src/main.c **** LL_TIM_SetTriggerOutput(TIM6, LL_TIM_TRGO_ENABLE); + 3780 .loc 2 1125 3 view .LVU1276 + 3781 .LBB450: + 3782 .LBI450: +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 3783 .loc 5 1504 22 view .LVU1277 + 3784 .LBB451: +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3785 .loc 5 1506 3 view .LVU1278 + 3786 005c 2368 ldr r3, [r4] + 3787 005e 23F08003 bic r3, r3, #128 + 3788 0062 2360 str r3, [r4] + 3789 .LVL273: +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3790 .loc 5 1506 3 is_stmt 0 view .LVU1279 + 3791 .LBE451: + 3792 .LBE450: +1126:Src/main.c **** LL_TIM_DisableMasterSlaveMode(TIM6); + 3793 .loc 2 1126 3 is_stmt 1 view .LVU1280 + 3794 .LBB452: + 3795 .LBI452: +3138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 3796 .loc 5 3138 22 view .LVU1281 + 3797 .LBB453: +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3798 .loc 5 3140 3 view .LVU1282 + 3799 0064 6368 ldr r3, [r4, #4] + 3800 0066 23F07003 bic r3, r3, #112 + 3801 006a 43F01003 orr r3, r3, #16 + 3802 006e 6360 str r3, [r4, #4] + 3803 .LVL274: +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 3804 .loc 5 3140 3 is_stmt 0 view .LVU1283 + 3805 .LBE453: + 3806 .LBE452: +1127:Src/main.c **** /* USER CODE BEGIN TIM6_Init 2 */ + 3807 .loc 2 1127 3 is_stmt 1 view .LVU1284 + 3808 .LBB454: + 3809 .LBI454: +3235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 3810 .loc 5 3235 22 view .LVU1285 + 3811 .LBB455: + 3812 .loc 5 3237 3 view .LVU1286 + 3813 0070 A368 ldr r3, [r4, #8] + 3814 0072 23F08003 bic r3, r3, #128 + 3815 0076 A360 str r3, [r4, #8] + ARM GAS /tmp/ccdsDELB.s page 266 + + + 3816 .LVL275: + 3817 .loc 5 3237 3 is_stmt 0 view .LVU1287 + 3818 .LBE455: + 3819 .LBE454: +1132:Src/main.c **** + 3820 .loc 2 1132 1 view .LVU1288 + 3821 0078 06B0 add sp, sp, #24 + 3822 .LCFI36: + 3823 .cfi_def_cfa_offset 8 + 3824 @ sp needed + 3825 007a 10BD pop {r4, pc} + 3826 .L143: + 3827 .align 2 + 3828 .L142: + 3829 007c 00380240 .word 1073887232 + 3830 0080 00ED00E0 .word -536810240 + 3831 0084 00E100E0 .word -536813312 + 3832 0088 00100040 .word 1073745920 + 3833 .cfi_endproc + 3834 .LFE1197: + 3836 .section .rodata.Decode_uart.str1.4,"aMS",%progbits,1 + 3837 .align 2 + 3838 .LC0: + 3839 0000 2F00 .ascii "/\000" + 3840 0002 0000 .align 2 + 3841 .LC1: + 3842 0004 434F4D4D .ascii "COMMAND.TXT\000" + 3842 414E442E + 3842 54585400 + 3843 .section .text.Decode_uart,"ax",%progbits + 3844 .align 1 + 3845 .syntax unified + 3846 .thumb + 3847 .thumb_func + 3848 .fpu fpv5-d16 + 3850 Decode_uart: + 3851 .LVL276: + 3852 .LFB1204: +1596:Src/main.c **** // uint8_t *temp1; + 3853 .loc 2 1596 1 is_stmt 1 view -0 + 3854 .cfi_startproc + 3855 @ args = 0, pretend = 0, frame = 0 + 3856 @ frame_needed = 0, uses_anonymous_args = 0 +1596:Src/main.c **** // uint8_t *temp1; + 3857 .loc 2 1596 1 is_stmt 0 view .LVU1290 + 3858 0000 2DE9F843 push {r3, r4, r5, r6, r7, r8, r9, lr} + 3859 .LCFI37: + 3860 .cfi_def_cfa_offset 32 + 3861 .cfi_offset 3, -32 + 3862 .cfi_offset 4, -28 + 3863 .cfi_offset 5, -24 + 3864 .cfi_offset 6, -20 + 3865 .cfi_offset 7, -16 + 3866 .cfi_offset 8, -12 + 3867 .cfi_offset 9, -8 + 3868 .cfi_offset 14, -4 + 3869 0004 0546 mov r5, r0 + ARM GAS /tmp/ccdsDELB.s page 267 + + + 3870 0006 0F46 mov r7, r1 + 3871 0008 1646 mov r6, r2 + 3872 000a 1C46 mov r4, r3 +1598:Src/main.c **** + 3873 .loc 2 1598 2 is_stmt 1 view .LVU1291 +1603:Src/main.c **** if ((HAL_GPIO_ReadPin(SDMMC1_EN_GPIO_Port, SDMMC1_EN_Pin) == GPIO_PIN_RESET)&& + 3874 .loc 2 1603 2 view .LVU1292 +1603:Src/main.c **** if ((HAL_GPIO_ReadPin(SDMMC1_EN_GPIO_Port, SDMMC1_EN_Pin) == GPIO_PIN_RESET)&& + 3875 .loc 2 1603 6 is_stmt 0 view .LVU1293 + 3876 000c AF4B ldr r3, .L168 + 3877 .LVL277: +1603:Src/main.c **** if ((HAL_GPIO_ReadPin(SDMMC1_EN_GPIO_Port, SDMMC1_EN_Pin) == GPIO_PIN_RESET)&& + 3878 .loc 2 1603 6 view .LVU1294 + 3879 000e 0022 movs r2, #0 + 3880 .LVL278: +1603:Src/main.c **** if ((HAL_GPIO_ReadPin(SDMMC1_EN_GPIO_Port, SDMMC1_EN_Pin) == GPIO_PIN_RESET)&& + 3881 .loc 2 1603 6 view .LVU1295 + 3882 0010 1A60 str r2, [r3] +1604:Src/main.c **** (HAL_GPIO_ReadPin(USB_FLAG_GPIO_Port, USB_FLAG_Pin) == GPIO_PIN_SET))//if exist sd && connect u + 3883 .loc 2 1604 2 is_stmt 1 view .LVU1296 +1604:Src/main.c **** (HAL_GPIO_ReadPin(USB_FLAG_GPIO_Port, USB_FLAG_Pin) == GPIO_PIN_SET))//if exist sd && connect u + 3884 .loc 2 1604 7 is_stmt 0 view .LVU1297 + 3885 0012 0121 movs r1, #1 + 3886 .LVL279: +1604:Src/main.c **** (HAL_GPIO_ReadPin(USB_FLAG_GPIO_Port, USB_FLAG_Pin) == GPIO_PIN_SET))//if exist sd && connect u + 3887 .loc 2 1604 7 view .LVU1298 + 3888 0014 AE48 ldr r0, .L168+4 + 3889 .LVL280: +1604:Src/main.c **** (HAL_GPIO_ReadPin(USB_FLAG_GPIO_Port, USB_FLAG_Pin) == GPIO_PIN_SET))//if exist sd && connect u + 3890 .loc 2 1604 7 view .LVU1299 + 3891 0016 FFF7FEFF bl HAL_GPIO_ReadPin + 3892 .LVL281: +1604:Src/main.c **** (HAL_GPIO_ReadPin(USB_FLAG_GPIO_Port, USB_FLAG_Pin) == GPIO_PIN_SET))//if exist sd && connect u + 3893 .loc 2 1604 5 view .LVU1300 + 3894 001a 0028 cmp r0, #0 + 3895 001c 00F0D280 beq .L165 + 3896 .L145: +1619:Src/main.c **** Curr_setup->WORK_EN = ((uint8_t)((*temp2)>>0))&0x01; + 3897 .loc 2 1619 2 is_stmt 1 view .LVU1301 + 3898 .LVL282: +1620:Src/main.c **** Curr_setup->U5V1_EN = ((uint8_t)((*temp2)>>1))&0x01; + 3899 .loc 2 1620 2 view .LVU1302 +1620:Src/main.c **** Curr_setup->U5V1_EN = ((uint8_t)((*temp2)>>1))&0x01; + 3900 .loc 2 1620 36 is_stmt 0 view .LVU1303 + 3901 0020 2B88 ldrh r3, [r5] +1620:Src/main.c **** Curr_setup->U5V1_EN = ((uint8_t)((*temp2)>>1))&0x01; + 3902 .loc 2 1620 48 view .LVU1304 + 3903 0022 03F00103 and r3, r3, #1 +1620:Src/main.c **** Curr_setup->U5V1_EN = ((uint8_t)((*temp2)>>1))&0x01; + 3904 .loc 2 1620 22 view .LVU1305 + 3905 0026 2370 strb r3, [r4] +1621:Src/main.c **** Curr_setup->U5V2_EN = ((uint8_t)((*temp2)>>2))&0x01; + 3906 .loc 2 1621 2 is_stmt 1 view .LVU1306 +1621:Src/main.c **** Curr_setup->U5V2_EN = ((uint8_t)((*temp2)>>2))&0x01; + 3907 .loc 2 1621 36 is_stmt 0 view .LVU1307 + 3908 0028 2B88 ldrh r3, [r5] +1621:Src/main.c **** Curr_setup->U5V2_EN = ((uint8_t)((*temp2)>>2))&0x01; + ARM GAS /tmp/ccdsDELB.s page 268 + + + 3909 .loc 2 1621 48 view .LVU1308 + 3910 002a C3F34003 ubfx r3, r3, #1, #1 +1621:Src/main.c **** Curr_setup->U5V2_EN = ((uint8_t)((*temp2)>>2))&0x01; + 3911 .loc 2 1621 22 view .LVU1309 + 3912 002e 6370 strb r3, [r4, #1] +1622:Src/main.c **** Curr_setup->LD1_EN = ((uint8_t)((*temp2)>>3))&0x01; + 3913 .loc 2 1622 2 is_stmt 1 view .LVU1310 +1622:Src/main.c **** Curr_setup->LD1_EN = ((uint8_t)((*temp2)>>3))&0x01; + 3914 .loc 2 1622 36 is_stmt 0 view .LVU1311 + 3915 0030 2B88 ldrh r3, [r5] +1622:Src/main.c **** Curr_setup->LD1_EN = ((uint8_t)((*temp2)>>3))&0x01; + 3916 .loc 2 1622 48 view .LVU1312 + 3917 0032 C3F38003 ubfx r3, r3, #2, #1 +1622:Src/main.c **** Curr_setup->LD1_EN = ((uint8_t)((*temp2)>>3))&0x01; + 3918 .loc 2 1622 22 view .LVU1313 + 3919 0036 A370 strb r3, [r4, #2] +1623:Src/main.c **** Curr_setup->LD2_EN = ((uint8_t)((*temp2)>>4))&0x01; + 3920 .loc 2 1623 2 is_stmt 1 view .LVU1314 +1623:Src/main.c **** Curr_setup->LD2_EN = ((uint8_t)((*temp2)>>4))&0x01; + 3921 .loc 2 1623 35 is_stmt 0 view .LVU1315 + 3922 0038 2B88 ldrh r3, [r5] +1623:Src/main.c **** Curr_setup->LD2_EN = ((uint8_t)((*temp2)>>4))&0x01; + 3923 .loc 2 1623 47 view .LVU1316 + 3924 003a C3F3C003 ubfx r3, r3, #3, #1 +1623:Src/main.c **** Curr_setup->LD2_EN = ((uint8_t)((*temp2)>>4))&0x01; + 3925 .loc 2 1623 21 view .LVU1317 + 3926 003e E370 strb r3, [r4, #3] +1624:Src/main.c **** Curr_setup->REF1_EN = ((uint8_t)((*temp2)>>5))&0x01; + 3927 .loc 2 1624 2 is_stmt 1 view .LVU1318 +1624:Src/main.c **** Curr_setup->REF1_EN = ((uint8_t)((*temp2)>>5))&0x01; + 3928 .loc 2 1624 35 is_stmt 0 view .LVU1319 + 3929 0040 2B88 ldrh r3, [r5] +1624:Src/main.c **** Curr_setup->REF1_EN = ((uint8_t)((*temp2)>>5))&0x01; + 3930 .loc 2 1624 47 view .LVU1320 + 3931 0042 C3F30013 ubfx r3, r3, #4, #1 +1624:Src/main.c **** Curr_setup->REF1_EN = ((uint8_t)((*temp2)>>5))&0x01; + 3932 .loc 2 1624 21 view .LVU1321 + 3933 0046 2371 strb r3, [r4, #4] +1625:Src/main.c **** Curr_setup->REF2_EN = ((uint8_t)((*temp2)>>6))&0x01; + 3934 .loc 2 1625 2 is_stmt 1 view .LVU1322 +1625:Src/main.c **** Curr_setup->REF2_EN = ((uint8_t)((*temp2)>>6))&0x01; + 3935 .loc 2 1625 36 is_stmt 0 view .LVU1323 + 3936 0048 2B88 ldrh r3, [r5] +1625:Src/main.c **** Curr_setup->REF2_EN = ((uint8_t)((*temp2)>>6))&0x01; + 3937 .loc 2 1625 48 view .LVU1324 + 3938 004a C3F34013 ubfx r3, r3, #5, #1 +1625:Src/main.c **** Curr_setup->REF2_EN = ((uint8_t)((*temp2)>>6))&0x01; + 3939 .loc 2 1625 22 view .LVU1325 + 3940 004e 6371 strb r3, [r4, #5] +1626:Src/main.c **** Curr_setup->TEC1_EN = ((uint8_t)((*temp2)>>7))&0x01; + 3941 .loc 2 1626 2 is_stmt 1 view .LVU1326 +1626:Src/main.c **** Curr_setup->TEC1_EN = ((uint8_t)((*temp2)>>7))&0x01; + 3942 .loc 2 1626 36 is_stmt 0 view .LVU1327 + 3943 0050 2B88 ldrh r3, [r5] +1626:Src/main.c **** Curr_setup->TEC1_EN = ((uint8_t)((*temp2)>>7))&0x01; + 3944 .loc 2 1626 48 view .LVU1328 + 3945 0052 C3F38013 ubfx r3, r3, #6, #1 + ARM GAS /tmp/ccdsDELB.s page 269 + + +1626:Src/main.c **** Curr_setup->TEC1_EN = ((uint8_t)((*temp2)>>7))&0x01; + 3946 .loc 2 1626 22 view .LVU1329 + 3947 0056 A371 strb r3, [r4, #6] +1627:Src/main.c **** Curr_setup->TEC2_EN = ((uint8_t)((*temp2)>>8))&0x01; + 3948 .loc 2 1627 2 is_stmt 1 view .LVU1330 +1627:Src/main.c **** Curr_setup->TEC2_EN = ((uint8_t)((*temp2)>>8))&0x01; + 3949 .loc 2 1627 36 is_stmt 0 view .LVU1331 + 3950 0058 2B88 ldrh r3, [r5] +1627:Src/main.c **** Curr_setup->TEC2_EN = ((uint8_t)((*temp2)>>8))&0x01; + 3951 .loc 2 1627 48 view .LVU1332 + 3952 005a C3F3C013 ubfx r3, r3, #7, #1 +1627:Src/main.c **** Curr_setup->TEC2_EN = ((uint8_t)((*temp2)>>8))&0x01; + 3953 .loc 2 1627 22 view .LVU1333 + 3954 005e E371 strb r3, [r4, #7] +1628:Src/main.c **** Curr_setup->TS1_EN = ((uint8_t)((*temp2)>>9))&0x01; + 3955 .loc 2 1628 2 is_stmt 1 view .LVU1334 +1628:Src/main.c **** Curr_setup->TS1_EN = ((uint8_t)((*temp2)>>9))&0x01; + 3956 .loc 2 1628 36 is_stmt 0 view .LVU1335 + 3957 0060 2B88 ldrh r3, [r5] +1628:Src/main.c **** Curr_setup->TS1_EN = ((uint8_t)((*temp2)>>9))&0x01; + 3958 .loc 2 1628 48 view .LVU1336 + 3959 0062 C3F30023 ubfx r3, r3, #8, #1 +1628:Src/main.c **** Curr_setup->TS1_EN = ((uint8_t)((*temp2)>>9))&0x01; + 3960 .loc 2 1628 22 view .LVU1337 + 3961 0066 2372 strb r3, [r4, #8] +1629:Src/main.c **** Curr_setup->TS2_EN = ((uint8_t)((*temp2)>>10))&0x01; + 3962 .loc 2 1629 2 is_stmt 1 view .LVU1338 +1629:Src/main.c **** Curr_setup->TS2_EN = ((uint8_t)((*temp2)>>10))&0x01; + 3963 .loc 2 1629 35 is_stmt 0 view .LVU1339 + 3964 0068 2B88 ldrh r3, [r5] +1629:Src/main.c **** Curr_setup->TS2_EN = ((uint8_t)((*temp2)>>10))&0x01; + 3965 .loc 2 1629 47 view .LVU1340 + 3966 006a C3F34023 ubfx r3, r3, #9, #1 +1629:Src/main.c **** Curr_setup->TS2_EN = ((uint8_t)((*temp2)>>10))&0x01; + 3967 .loc 2 1629 21 view .LVU1341 + 3968 006e 6372 strb r3, [r4, #9] +1630:Src/main.c **** Curr_setup->SD_EN = ((uint8_t)((*temp2)>>11))&0x01; + 3969 .loc 2 1630 2 is_stmt 1 view .LVU1342 +1630:Src/main.c **** Curr_setup->SD_EN = ((uint8_t)((*temp2)>>11))&0x01; + 3970 .loc 2 1630 35 is_stmt 0 view .LVU1343 + 3971 0070 2B88 ldrh r3, [r5] +1630:Src/main.c **** Curr_setup->SD_EN = ((uint8_t)((*temp2)>>11))&0x01; + 3972 .loc 2 1630 48 view .LVU1344 + 3973 0072 C3F38023 ubfx r3, r3, #10, #1 +1630:Src/main.c **** Curr_setup->SD_EN = ((uint8_t)((*temp2)>>11))&0x01; + 3974 .loc 2 1630 21 view .LVU1345 + 3975 0076 A372 strb r3, [r4, #10] +1631:Src/main.c **** Curr_setup->PI1_RD = ((uint8_t)((*temp2)>>12))&0x01; + 3976 .loc 2 1631 2 is_stmt 1 view .LVU1346 +1631:Src/main.c **** Curr_setup->PI1_RD = ((uint8_t)((*temp2)>>12))&0x01; + 3977 .loc 2 1631 34 is_stmt 0 view .LVU1347 + 3978 0078 2B88 ldrh r3, [r5] +1631:Src/main.c **** Curr_setup->PI1_RD = ((uint8_t)((*temp2)>>12))&0x01; + 3979 .loc 2 1631 47 view .LVU1348 + 3980 007a C3F3C023 ubfx r3, r3, #11, #1 +1631:Src/main.c **** Curr_setup->PI1_RD = ((uint8_t)((*temp2)>>12))&0x01; + 3981 .loc 2 1631 20 view .LVU1349 + ARM GAS /tmp/ccdsDELB.s page 270 + + + 3982 007e E372 strb r3, [r4, #11] +1632:Src/main.c **** Curr_setup->PI2_RD = ((uint8_t)((*temp2)>>13))&0x01; + 3983 .loc 2 1632 2 is_stmt 1 view .LVU1350 +1632:Src/main.c **** Curr_setup->PI2_RD = ((uint8_t)((*temp2)>>13))&0x01; + 3984 .loc 2 1632 35 is_stmt 0 view .LVU1351 + 3985 0080 2B88 ldrh r3, [r5] +1632:Src/main.c **** Curr_setup->PI2_RD = ((uint8_t)((*temp2)>>13))&0x01; + 3986 .loc 2 1632 48 view .LVU1352 + 3987 0082 C3F30033 ubfx r3, r3, #12, #1 +1632:Src/main.c **** Curr_setup->PI2_RD = ((uint8_t)((*temp2)>>13))&0x01; + 3988 .loc 2 1632 21 view .LVU1353 + 3989 0086 2373 strb r3, [r4, #12] +1633:Src/main.c **** + 3990 .loc 2 1633 2 is_stmt 1 view .LVU1354 +1633:Src/main.c **** + 3991 .loc 2 1633 35 is_stmt 0 view .LVU1355 + 3992 0088 2B88 ldrh r3, [r5] +1633:Src/main.c **** + 3993 .loc 2 1633 48 view .LVU1356 + 3994 008a C3F34033 ubfx r3, r3, #13, #1 +1633:Src/main.c **** + 3995 .loc 2 1633 21 view .LVU1357 + 3996 008e 6373 strb r3, [r4, #13] +1635:Src/main.c **** LD1_curr_setup->LD_TEMP = (uint16_t)(*temp2); + 3997 .loc 2 1635 2 is_stmt 1 view .LVU1358 + 3998 .LVL283: +1636:Src/main.c **** temp2++; + 3999 .loc 2 1636 2 view .LVU1359 +1636:Src/main.c **** temp2++; + 4000 .loc 2 1636 28 is_stmt 0 view .LVU1360 + 4001 0090 6B88 ldrh r3, [r5, #2] +1636:Src/main.c **** temp2++; + 4002 .loc 2 1636 26 view .LVU1361 + 4003 0092 3B80 strh r3, [r7] @ movhi +1637:Src/main.c **** LD2_curr_setup->LD_TEMP = (uint16_t)(*temp2); + 4004 .loc 2 1637 2 is_stmt 1 view .LVU1362 + 4005 .LVL284: +1638:Src/main.c **** temp2++; + 4006 .loc 2 1638 2 view .LVU1363 +1638:Src/main.c **** temp2++; + 4007 .loc 2 1638 28 is_stmt 0 view .LVU1364 + 4008 0094 AB88 ldrh r3, [r5, #4] +1638:Src/main.c **** temp2++; + 4009 .loc 2 1638 26 view .LVU1365 + 4010 0096 3380 strh r3, [r6] @ movhi +1639:Src/main.c **** temp2++; + 4011 .loc 2 1639 2 is_stmt 1 view .LVU1366 + 4012 .LVL285: +1640:Src/main.c **** temp2++; + 4013 .loc 2 1640 2 view .LVU1367 +1641:Src/main.c **** Curr_setup->AVERAGES = (uint16_t)(*temp2); + 4014 .loc 2 1641 2 view .LVU1368 +1642:Src/main.c **** temp2++; + 4015 .loc 2 1642 2 view .LVU1369 +1642:Src/main.c **** temp2++; + 4016 .loc 2 1642 25 is_stmt 0 view .LVU1370 + 4017 0098 6B89 ldrh r3, [r5, #10] + ARM GAS /tmp/ccdsDELB.s page 271 + + +1642:Src/main.c **** temp2++; + 4018 .loc 2 1642 23 view .LVU1371 + 4019 009a E381 strh r3, [r4, #14] @ movhi +1643:Src/main.c **** LD1_curr_setup->P_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint + 4020 .loc 2 1643 2 is_stmt 1 view .LVU1372 + 4021 .LVL286: +1644:Src/main.c **** temp2++; + 4022 .loc 2 1644 2 view .LVU1373 +1644:Src/main.c **** temp2++; + 4023 .loc 2 1644 51 is_stmt 0 view .LVU1374 + 4024 009c AB89 ldrh r3, [r5, #12] + 4025 009e 07EE103A vmov s14, r3 @ int +1644:Src/main.c **** temp2++; + 4026 .loc 2 1644 32 view .LVU1375 + 4027 00a2 B8EE477A vcvt.f32.u32 s14, s14 +1644:Src/main.c **** temp2++; + 4028 .loc 2 1644 59 view .LVU1376 + 4029 00a6 DFED8B6A vldr.32 s13, .L168+8 + 4030 00aa 27EE267A vmul.f32 s14, s14, s13 +1644:Src/main.c **** temp2++; + 4031 .loc 2 1644 30 view .LVU1377 + 4032 00ae 87ED017A vstr.32 s14, [r7, #4] +1645:Src/main.c **** LD1_curr_setup->I_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint + 4033 .loc 2 1645 2 is_stmt 1 view .LVU1378 + 4034 .LVL287: +1646:Src/main.c **** temp2++; + 4035 .loc 2 1646 2 view .LVU1379 +1646:Src/main.c **** temp2++; + 4036 .loc 2 1646 51 is_stmt 0 view .LVU1380 + 4037 00b2 EB89 ldrh r3, [r5, #14] + 4038 00b4 07EE103A vmov s14, r3 @ int +1646:Src/main.c **** temp2++; + 4039 .loc 2 1646 32 view .LVU1381 + 4040 00b8 B8EE477A vcvt.f32.u32 s14, s14 +1646:Src/main.c **** temp2++; + 4041 .loc 2 1646 59 view .LVU1382 + 4042 00bc 27EE267A vmul.f32 s14, s14, s13 +1646:Src/main.c **** temp2++; + 4043 .loc 2 1646 30 view .LVU1383 + 4044 00c0 87ED027A vstr.32 s14, [r7, #8] +1647:Src/main.c **** LD2_curr_setup->P_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint + 4045 .loc 2 1647 2 is_stmt 1 view .LVU1384 + 4046 .LVL288: +1648:Src/main.c **** temp2++; + 4047 .loc 2 1648 2 view .LVU1385 +1648:Src/main.c **** temp2++; + 4048 .loc 2 1648 51 is_stmt 0 view .LVU1386 + 4049 00c4 2B8A ldrh r3, [r5, #16] + 4050 00c6 07EE103A vmov s14, r3 @ int +1648:Src/main.c **** temp2++; + 4051 .loc 2 1648 32 view .LVU1387 + 4052 00ca B8EE477A vcvt.f32.u32 s14, s14 +1648:Src/main.c **** temp2++; + 4053 .loc 2 1648 59 view .LVU1388 + 4054 00ce 27EE267A vmul.f32 s14, s14, s13 +1648:Src/main.c **** temp2++; + 4055 .loc 2 1648 30 view .LVU1389 + ARM GAS /tmp/ccdsDELB.s page 272 + + + 4056 00d2 86ED017A vstr.32 s14, [r6, #4] +1649:Src/main.c **** LD2_curr_setup->I_coef_temp = (float)((uint16_t)(*temp2))/((float)(256));//(float)(1/(float)((uint + 4057 .loc 2 1649 2 is_stmt 1 view .LVU1390 + 4058 .LVL289: +1650:Src/main.c **** temp2++; + 4059 .loc 2 1650 2 view .LVU1391 +1650:Src/main.c **** temp2++; + 4060 .loc 2 1650 51 is_stmt 0 view .LVU1392 + 4061 00d6 6B8A ldrh r3, [r5, #18] + 4062 00d8 07EE903A vmov s15, r3 @ int +1650:Src/main.c **** temp2++; + 4063 .loc 2 1650 32 view .LVU1393 + 4064 00dc F8EE677A vcvt.f32.u32 s15, s15 +1650:Src/main.c **** temp2++; + 4065 .loc 2 1650 59 view .LVU1394 + 4066 00e0 67EEA67A vmul.f32 s15, s15, s13 +1650:Src/main.c **** temp2++; + 4067 .loc 2 1650 30 view .LVU1395 + 4068 00e4 C6ED027A vstr.32 s15, [r6, #8] +1651:Src/main.c **** Long_Data[13] = (uint16_t)(*temp2);//Message ID + 4069 .loc 2 1651 2 is_stmt 1 view .LVU1396 + 4070 .LVL290: +1652:Src/main.c **** temp2++; + 4071 .loc 2 1652 2 view .LVU1397 +1652:Src/main.c **** temp2++; + 4072 .loc 2 1652 18 is_stmt 0 view .LVU1398 + 4073 00e8 AA8A ldrh r2, [r5, #20] +1652:Src/main.c **** temp2++; + 4074 .loc 2 1652 16 view .LVU1399 + 4075 00ea 7B4B ldr r3, .L168+12 + 4076 00ec 5A83 strh r2, [r3, #26] @ movhi +1653:Src/main.c **** LD1_curr_setup->CURRENT = (uint16_t)(*temp2); + 4077 .loc 2 1653 2 is_stmt 1 view .LVU1400 + 4078 .LVL291: +1654:Src/main.c **** temp2++; + 4079 .loc 2 1654 2 view .LVU1401 +1654:Src/main.c **** temp2++; + 4080 .loc 2 1654 28 is_stmt 0 view .LVU1402 + 4081 00ee EB8A ldrh r3, [r5, #22] +1654:Src/main.c **** temp2++; + 4082 .loc 2 1654 26 view .LVU1403 + 4083 00f0 BB81 strh r3, [r7, #12] @ movhi +1655:Src/main.c **** LD2_curr_setup->CURRENT = (uint16_t)(*temp2); + 4084 .loc 2 1655 2 is_stmt 1 view .LVU1404 + 4085 .LVL292: +1656:Src/main.c **** temp2++; + 4086 .loc 2 1656 2 view .LVU1405 +1656:Src/main.c **** temp2++; + 4087 .loc 2 1656 28 is_stmt 0 view .LVU1406 + 4088 00f2 2B8B ldrh r3, [r5, #24] +1656:Src/main.c **** temp2++; + 4089 .loc 2 1656 26 view .LVU1407 + 4090 00f4 B381 strh r3, [r6, #12] @ movhi +1657:Src/main.c **** + 4091 .loc 2 1657 2 is_stmt 1 view .LVU1408 + 4092 .LVL293: +1659:Src/main.c **** { + ARM GAS /tmp/ccdsDELB.s page 273 + + + 4093 .loc 2 1659 2 view .LVU1409 +1659:Src/main.c **** { + 4094 .loc 2 1659 16 is_stmt 0 view .LVU1410 + 4095 00f6 6378 ldrb r3, [r4, #1] @ zero_extendqisi2 +1659:Src/main.c **** { + 4096 .loc 2 1659 5 view .LVU1411 + 4097 00f8 002B cmp r3, #0 + 4098 00fa 00F09580 beq .L146 +1661:Src/main.c **** } + 4099 .loc 2 1661 3 is_stmt 1 view .LVU1412 + 4100 00fe 0122 movs r2, #1 + 4101 0100 0821 movs r1, #8 + 4102 0102 7648 ldr r0, .L168+16 + 4103 0104 FFF7FEFF bl HAL_GPIO_WritePin + 4104 .LVL294: + 4105 .L147: +1668:Src/main.c **** { + 4106 .loc 2 1668 2 view .LVU1413 +1668:Src/main.c **** { + 4107 .loc 2 1668 16 is_stmt 0 view .LVU1414 + 4108 0108 A378 ldrb r3, [r4, #2] @ zero_extendqisi2 +1668:Src/main.c **** { + 4109 .loc 2 1668 5 view .LVU1415 + 4110 010a 002B cmp r3, #0 + 4111 010c 00F09280 beq .L148 +1670:Src/main.c **** } + 4112 .loc 2 1670 3 is_stmt 1 view .LVU1416 + 4113 0110 0122 movs r2, #1 + 4114 0112 0421 movs r1, #4 + 4115 0114 7148 ldr r0, .L168+16 + 4116 0116 FFF7FEFF bl HAL_GPIO_WritePin + 4117 .LVL295: + 4118 .L149: +1677:Src/main.c **** { + 4119 .loc 2 1677 2 view .LVU1417 +1677:Src/main.c **** { + 4120 .loc 2 1677 16 is_stmt 0 view .LVU1418 + 4121 011a E378 ldrb r3, [r4, #3] @ zero_extendqisi2 +1677:Src/main.c **** { + 4122 .loc 2 1677 5 view .LVU1419 + 4123 011c 002B cmp r3, #0 + 4124 011e 00F08F80 beq .L150 +1679:Src/main.c **** //LL_SPI_Enable(SPI2);//Enable SPI for Laser1 DAC + 4125 .loc 2 1679 3 is_stmt 1 view .LVU1420 + 4126 0122 0122 movs r2, #1 + 4127 0124 4FF48071 mov r1, #256 + 4128 0128 6948 ldr r0, .L168+4 + 4129 012a FFF7FEFF bl HAL_GPIO_WritePin + 4130 .LVL296: + 4131 .L151: +1688:Src/main.c **** { + 4132 .loc 2 1688 2 view .LVU1421 +1688:Src/main.c **** { + 4133 .loc 2 1688 16 is_stmt 0 view .LVU1422 + 4134 012e 2379 ldrb r3, [r4, #4] @ zero_extendqisi2 +1688:Src/main.c **** { + 4135 .loc 2 1688 5 view .LVU1423 + ARM GAS /tmp/ccdsDELB.s page 274 + + + 4136 0130 002B cmp r3, #0 + 4137 0132 00F08C80 beq .L152 +1690:Src/main.c **** //LL_SPI_Enable(SPI6);//Enable SPI for Laser2 DAC + 4138 .loc 2 1690 3 is_stmt 1 view .LVU1424 + 4139 0136 0122 movs r2, #1 + 4140 0138 1021 movs r1, #16 + 4141 013a 6848 ldr r0, .L168+16 + 4142 013c FFF7FEFF bl HAL_GPIO_WritePin + 4143 .LVL297: + 4144 .L153: +1699:Src/main.c **** { + 4145 .loc 2 1699 2 view .LVU1425 +1699:Src/main.c **** { + 4146 .loc 2 1699 16 is_stmt 0 view .LVU1426 + 4147 0140 6379 ldrb r3, [r4, #5] @ zero_extendqisi2 +1699:Src/main.c **** { + 4148 .loc 2 1699 5 view .LVU1427 + 4149 0142 002B cmp r3, #0 + 4150 0144 00F08980 beq .L154 +1701:Src/main.c **** } + 4151 .loc 2 1701 3 is_stmt 1 view .LVU1428 + 4152 0148 0122 movs r2, #1 + 4153 014a 4FF48061 mov r1, #1024 + 4154 014e 6448 ldr r0, .L168+20 + 4155 0150 FFF7FEFF bl HAL_GPIO_WritePin + 4156 .LVL298: + 4157 .L155: +1708:Src/main.c **** { + 4158 .loc 2 1708 2 view .LVU1429 +1708:Src/main.c **** { + 4159 .loc 2 1708 16 is_stmt 0 view .LVU1430 + 4160 0154 A379 ldrb r3, [r4, #6] @ zero_extendqisi2 +1708:Src/main.c **** { + 4161 .loc 2 1708 5 view .LVU1431 + 4162 0156 002B cmp r3, #0 + 4163 0158 00F08680 beq .L156 +1710:Src/main.c **** } + 4164 .loc 2 1710 3 is_stmt 1 view .LVU1432 + 4165 015c 0122 movs r2, #1 + 4166 015e 0821 movs r1, #8 + 4167 0160 6048 ldr r0, .L168+24 + 4168 0162 FFF7FEFF bl HAL_GPIO_WritePin + 4169 .LVL299: + 4170 .L157: +1717:Src/main.c **** { + 4171 .loc 2 1717 2 view .LVU1433 +1717:Src/main.c **** { + 4172 .loc 2 1717 17 is_stmt 0 view .LVU1434 + 4173 0166 637A ldrb r3, [r4, #9] @ zero_extendqisi2 +1717:Src/main.c **** { + 4174 .loc 2 1717 5 view .LVU1435 + 4175 0168 1BB1 cbz r3, .L158 +1717:Src/main.c **** { + 4176 .loc 2 1717 39 discriminator 1 view .LVU1436 + 4177 016a E379 ldrb r3, [r4, #7] @ zero_extendqisi2 +1717:Src/main.c **** { + 4178 .loc 2 1717 26 discriminator 1 view .LVU1437 + ARM GAS /tmp/ccdsDELB.s page 275 + + + 4179 016c 002B cmp r3, #0 + 4180 016e 40F08180 bne .L166 + 4181 .L158: +1726:Src/main.c **** HAL_GPIO_WritePin(TEC1_PD_GPIO_Port, TEC1_PD_Pin, GPIO_PIN_RESET); + 4182 .loc 2 1726 3 is_stmt 1 view .LVU1438 + 4183 0172 0022 movs r2, #0 + 4184 0174 0121 movs r1, #1 + 4185 0176 5B48 ldr r0, .L168+24 + 4186 0178 FFF7FEFF bl HAL_GPIO_WritePin + 4187 .LVL300: +1727:Src/main.c **** } + 4188 .loc 2 1727 3 view .LVU1439 + 4189 017c 0022 movs r2, #0 + 4190 017e 4FF40061 mov r1, #2048 + 4191 0182 5748 ldr r0, .L168+20 + 4192 0184 FFF7FEFF bl HAL_GPIO_WritePin + 4193 .LVL301: + 4194 .L159: +1730:Src/main.c **** { + 4195 .loc 2 1730 2 view .LVU1440 +1730:Src/main.c **** { + 4196 .loc 2 1730 17 is_stmt 0 view .LVU1441 + 4197 0188 A37A ldrb r3, [r4, #10] @ zero_extendqisi2 +1730:Src/main.c **** { + 4198 .loc 2 1730 5 view .LVU1442 + 4199 018a 1BB1 cbz r3, .L160 +1730:Src/main.c **** { + 4200 .loc 2 1730 39 discriminator 1 view .LVU1443 + 4201 018c 237A ldrb r3, [r4, #8] @ zero_extendqisi2 +1730:Src/main.c **** { + 4202 .loc 2 1730 26 discriminator 1 view .LVU1444 + 4203 018e 002B cmp r3, #0 + 4204 0190 40F08680 bne .L167 + 4205 .L160: +1739:Src/main.c **** HAL_GPIO_WritePin(TEC2_PD_GPIO_Port, TEC2_PD_Pin, GPIO_PIN_RESET); + 4206 .loc 2 1739 3 is_stmt 1 view .LVU1445 + 4207 0194 0022 movs r2, #0 + 4208 0196 0221 movs r1, #2 + 4209 0198 5248 ldr r0, .L168+24 + 4210 019a FFF7FEFF bl HAL_GPIO_WritePin + 4211 .LVL302: +1740:Src/main.c **** } + 4212 .loc 2 1740 3 view .LVU1446 + 4213 019e 0022 movs r2, #0 + 4214 01a0 2021 movs r1, #32 + 4215 01a2 4E48 ldr r0, .L168+16 + 4216 01a4 FFF7FEFF bl HAL_GPIO_WritePin + 4217 .LVL303: + 4218 .L161: +1743:Src/main.c **** { + 4219 .loc 2 1743 2 view .LVU1447 +1743:Src/main.c **** { + 4220 .loc 2 1743 16 is_stmt 0 view .LVU1448 + 4221 01a8 237B ldrb r3, [r4, #12] @ zero_extendqisi2 +1743:Src/main.c **** { + 4222 .loc 2 1743 5 view .LVU1449 + 4223 01aa 1BB9 cbnz r3, .L162 + ARM GAS /tmp/ccdsDELB.s page 276 + + +1745:Src/main.c **** LD1_curr_setup->I_coef_temp = 0.01; + 4224 .loc 2 1745 3 is_stmt 1 view .LVU1450 +1745:Src/main.c **** LD1_curr_setup->I_coef_temp = 0.01; + 4225 .loc 2 1745 31 is_stmt 0 view .LVU1451 + 4226 01ac 4E4B ldr r3, .L168+28 + 4227 01ae 7B60 str r3, [r7, #4] @ float +1746:Src/main.c **** } + 4228 .loc 2 1746 3 is_stmt 1 view .LVU1452 +1746:Src/main.c **** } + 4229 .loc 2 1746 31 is_stmt 0 view .LVU1453 + 4230 01b0 4E4B ldr r3, .L168+32 + 4231 01b2 BB60 str r3, [r7, #8] @ float + 4232 .L162: +1749:Src/main.c **** { + 4233 .loc 2 1749 2 is_stmt 1 view .LVU1454 +1749:Src/main.c **** { + 4234 .loc 2 1749 16 is_stmt 0 view .LVU1455 + 4235 01b4 637B ldrb r3, [r4, #13] @ zero_extendqisi2 +1749:Src/main.c **** { + 4236 .loc 2 1749 5 view .LVU1456 + 4237 01b6 1BB9 cbnz r3, .L144 +1751:Src/main.c **** LD2_curr_setup->I_coef_temp = 0.01; + 4238 .loc 2 1751 3 is_stmt 1 view .LVU1457 +1751:Src/main.c **** LD2_curr_setup->I_coef_temp = 0.01; + 4239 .loc 2 1751 31 is_stmt 0 view .LVU1458 + 4240 01b8 4B4B ldr r3, .L168+28 + 4241 01ba 7360 str r3, [r6, #4] @ float +1752:Src/main.c **** } + 4242 .loc 2 1752 3 is_stmt 1 view .LVU1459 +1752:Src/main.c **** } + 4243 .loc 2 1752 31 is_stmt 0 view .LVU1460 + 4244 01bc 4B4B ldr r3, .L168+32 + 4245 01be B360 str r3, [r6, #8] @ float + 4246 .L144: +1754:Src/main.c **** + 4247 .loc 2 1754 1 view .LVU1461 + 4248 01c0 BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc} + 4249 .LVL304: + 4250 .L165: +1605:Src/main.c **** { + 4251 .loc 2 1605 6 discriminator 1 view .LVU1462 + 4252 01c4 4FF48071 mov r1, #256 + 4253 01c8 4648 ldr r0, .L168+24 + 4254 01ca FFF7FEFF bl HAL_GPIO_ReadPin + 4255 .LVL305: +1604:Src/main.c **** (HAL_GPIO_ReadPin(USB_FLAG_GPIO_Port, USB_FLAG_Pin) == GPIO_PIN_SET))//if exist sd && connect u + 4256 .loc 2 1604 78 discriminator 1 view .LVU1463 + 4257 01ce 0128 cmp r0, #1 + 4258 01d0 7FF426AF bne .L145 +1607:Src/main.c **** if (test == 0) //0 - suc + 4259 .loc 2 1607 3 is_stmt 1 view .LVU1464 +1607:Src/main.c **** if (test == 0) //0 - suc + 4260 .loc 2 1607 10 is_stmt 0 view .LVU1465 + 4261 01d4 4648 ldr r0, .L168+36 + 4262 01d6 FFF7FEFF bl Mount_SD + 4263 .LVL306: +1607:Src/main.c **** if (test == 0) //0 - suc + ARM GAS /tmp/ccdsDELB.s page 277 + + + 4264 .loc 2 1607 8 view .LVU1466 + 4265 01da 3C4B ldr r3, .L168 + 4266 01dc 1860 str r0, [r3] +1608:Src/main.c **** { + 4267 .loc 2 1608 3 is_stmt 1 view .LVU1467 +1608:Src/main.c **** { + 4268 .loc 2 1608 6 is_stmt 0 view .LVU1468 + 4269 01de 0028 cmp r0, #0 + 4270 01e0 7FF41EAF bne .L145 +1611:Src/main.c **** test = Create_File("COMMAND.TXT"); // 0 -succ + 4271 .loc 2 1611 4 is_stmt 1 view .LVU1469 +1611:Src/main.c **** test = Create_File("COMMAND.TXT"); // 0 -succ + 4272 .loc 2 1611 11 is_stmt 0 view .LVU1470 + 4273 01e4 DFF80C91 ldr r9, .L168+40 + 4274 01e8 4846 mov r0, r9 + 4275 01ea FFF7FEFF bl Remove_File + 4276 .LVL307: +1611:Src/main.c **** test = Create_File("COMMAND.TXT"); // 0 -succ + 4277 .loc 2 1611 9 view .LVU1471 + 4278 01ee DFF8DC80 ldr r8, .L168 + 4279 01f2 C8F80000 str r0, [r8] +1612:Src/main.c **** test = Write_File_byte("COMMAND.TXT", (uint8_t *)Command, CL_8); + 4280 .loc 2 1612 4 is_stmt 1 view .LVU1472 +1612:Src/main.c **** test = Write_File_byte("COMMAND.TXT", (uint8_t *)Command, CL_8); + 4281 .loc 2 1612 11 is_stmt 0 view .LVU1473 + 4282 01f6 4846 mov r0, r9 + 4283 01f8 FFF7FEFF bl Create_File + 4284 .LVL308: +1612:Src/main.c **** test = Write_File_byte("COMMAND.TXT", (uint8_t *)Command, CL_8); + 4285 .loc 2 1612 9 view .LVU1474 + 4286 01fc C8F80000 str r0, [r8] +1613:Src/main.c **** test = Update_File_byte("COMMAND.TXT", (uint8_t *)Command, CL_8); + 4287 .loc 2 1613 4 is_stmt 1 view .LVU1475 +1613:Src/main.c **** test = Update_File_byte("COMMAND.TXT", (uint8_t *)Command, CL_8); + 4288 .loc 2 1613 11 is_stmt 0 view .LVU1476 + 4289 0200 1E22 movs r2, #30 + 4290 0202 2946 mov r1, r5 + 4291 0204 4846 mov r0, r9 + 4292 0206 FFF7FEFF bl Write_File_byte + 4293 .LVL309: +1613:Src/main.c **** test = Update_File_byte("COMMAND.TXT", (uint8_t *)Command, CL_8); + 4294 .loc 2 1613 9 view .LVU1477 + 4295 020a C8F80000 str r0, [r8] +1614:Src/main.c **** test = Unmount_SD("/"); // 0 - succ + 4296 .loc 2 1614 4 is_stmt 1 view .LVU1478 +1614:Src/main.c **** test = Unmount_SD("/"); // 0 - succ + 4297 .loc 2 1614 11 is_stmt 0 view .LVU1479 + 4298 020e 1E22 movs r2, #30 + 4299 0210 2946 mov r1, r5 + 4300 0212 4846 mov r0, r9 + 4301 0214 FFF7FEFF bl Update_File_byte + 4302 .LVL310: +1614:Src/main.c **** test = Unmount_SD("/"); // 0 - succ + 4303 .loc 2 1614 9 view .LVU1480 + 4304 0218 C8F80000 str r0, [r8] +1615:Src/main.c **** } + 4305 .loc 2 1615 4 is_stmt 1 view .LVU1481 + ARM GAS /tmp/ccdsDELB.s page 278 + + +1615:Src/main.c **** } + 4306 .loc 2 1615 11 is_stmt 0 view .LVU1482 + 4307 021c 3448 ldr r0, .L168+36 + 4308 021e FFF7FEFF bl Unmount_SD + 4309 .LVL311: +1615:Src/main.c **** } + 4310 .loc 2 1615 9 view .LVU1483 + 4311 0222 C8F80000 str r0, [r8] + 4312 0226 FBE6 b .L145 + 4313 .LVL312: + 4314 .L146: +1665:Src/main.c **** } + 4315 .loc 2 1665 3 is_stmt 1 view .LVU1484 + 4316 0228 0022 movs r2, #0 + 4317 022a 0821 movs r1, #8 + 4318 022c 2B48 ldr r0, .L168+16 + 4319 022e FFF7FEFF bl HAL_GPIO_WritePin + 4320 .LVL313: + 4321 0232 69E7 b .L147 + 4322 .L148: +1674:Src/main.c **** } + 4323 .loc 2 1674 3 view .LVU1485 + 4324 0234 0022 movs r2, #0 + 4325 0236 0421 movs r1, #4 + 4326 0238 2848 ldr r0, .L168+16 + 4327 023a FFF7FEFF bl HAL_GPIO_WritePin + 4328 .LVL314: + 4329 023e 6CE7 b .L149 + 4330 .L150: +1684:Src/main.c **** //LL_SPI_Disable(SPI2);//Disable SPI for Laser1 DAC + 4331 .loc 2 1684 3 view .LVU1486 + 4332 0240 0022 movs r2, #0 + 4333 0242 4FF48071 mov r1, #256 + 4334 0246 2248 ldr r0, .L168+4 + 4335 0248 FFF7FEFF bl HAL_GPIO_WritePin + 4336 .LVL315: + 4337 024c 6FE7 b .L151 + 4338 .L152: +1695:Src/main.c **** //LL_SPI_Disable(SPI6);//Disable SPI for Laser2 DAC + 4339 .loc 2 1695 3 view .LVU1487 + 4340 024e 0022 movs r2, #0 + 4341 0250 1021 movs r1, #16 + 4342 0252 2248 ldr r0, .L168+16 + 4343 0254 FFF7FEFF bl HAL_GPIO_WritePin + 4344 .LVL316: + 4345 0258 72E7 b .L153 + 4346 .L154: +1705:Src/main.c **** } + 4347 .loc 2 1705 3 view .LVU1488 + 4348 025a 0022 movs r2, #0 + 4349 025c 4FF48061 mov r1, #1024 + 4350 0260 1F48 ldr r0, .L168+20 + 4351 0262 FFF7FEFF bl HAL_GPIO_WritePin + 4352 .LVL317: + 4353 0266 75E7 b .L155 + 4354 .L156: +1714:Src/main.c **** } + ARM GAS /tmp/ccdsDELB.s page 279 + + + 4355 .loc 2 1714 3 view .LVU1489 + 4356 0268 0022 movs r2, #0 + 4357 026a 0821 movs r1, #8 + 4358 026c 1D48 ldr r0, .L168+24 + 4359 026e FFF7FEFF bl HAL_GPIO_WritePin + 4360 .LVL318: + 4361 0272 78E7 b .L157 + 4362 .L166: +1719:Src/main.c **** Set_LTEC(3,32767); + 4363 .loc 2 1719 3 view .LVU1490 + 4364 0274 47F6FF71 movw r1, #32767 + 4365 0278 0320 movs r0, #3 + 4366 027a FFF7FEFF bl Set_LTEC + 4367 .LVL319: +1720:Src/main.c **** HAL_GPIO_WritePin(TEC1_PD_GPIO_Port, TEC1_PD_Pin, GPIO_PIN_SET); + 4368 .loc 2 1720 3 view .LVU1491 + 4369 027e 47F6FF71 movw r1, #32767 + 4370 0282 0320 movs r0, #3 + 4371 0284 FFF7FEFF bl Set_LTEC + 4372 .LVL320: +1721:Src/main.c **** HAL_GPIO_WritePin(TECEN1_GPIO_Port, TECEN1_Pin, GPIO_PIN_SET); + 4373 .loc 2 1721 3 view .LVU1492 + 4374 0288 0122 movs r2, #1 + 4375 028a 4FF40061 mov r1, #2048 + 4376 028e 1448 ldr r0, .L168+20 + 4377 0290 FFF7FEFF bl HAL_GPIO_WritePin + 4378 .LVL321: +1722:Src/main.c **** } + 4379 .loc 2 1722 3 view .LVU1493 + 4380 0294 0122 movs r2, #1 + 4381 0296 1146 mov r1, r2 + 4382 0298 1248 ldr r0, .L168+24 + 4383 029a FFF7FEFF bl HAL_GPIO_WritePin + 4384 .LVL322: + 4385 029e 73E7 b .L159 + 4386 .L167: +1732:Src/main.c **** Set_LTEC(4,32767); + 4387 .loc 2 1732 3 view .LVU1494 + 4388 02a0 47F6FF71 movw r1, #32767 + 4389 02a4 0420 movs r0, #4 + 4390 02a6 FFF7FEFF bl Set_LTEC + 4391 .LVL323: +1733:Src/main.c **** HAL_GPIO_WritePin(TEC2_PD_GPIO_Port, TEC2_PD_Pin, GPIO_PIN_SET); + 4392 .loc 2 1733 3 view .LVU1495 + 4393 02aa 47F6FF71 movw r1, #32767 + 4394 02ae 0420 movs r0, #4 + 4395 02b0 FFF7FEFF bl Set_LTEC + 4396 .LVL324: +1734:Src/main.c **** HAL_GPIO_WritePin(TECEN2_GPIO_Port, TECEN2_Pin, GPIO_PIN_SET); + 4397 .loc 2 1734 3 view .LVU1496 + 4398 02b4 0122 movs r2, #1 + 4399 02b6 2021 movs r1, #32 + 4400 02b8 0848 ldr r0, .L168+16 + 4401 02ba FFF7FEFF bl HAL_GPIO_WritePin + 4402 .LVL325: +1735:Src/main.c **** } + 4403 .loc 2 1735 3 view .LVU1497 + ARM GAS /tmp/ccdsDELB.s page 280 + + + 4404 02be 0122 movs r2, #1 + 4405 02c0 0221 movs r1, #2 + 4406 02c2 0848 ldr r0, .L168+24 + 4407 02c4 FFF7FEFF bl HAL_GPIO_WritePin + 4408 .LVL326: + 4409 02c8 6EE7 b .L161 + 4410 .L169: + 4411 02ca 00BF .align 2 + 4412 .L168: + 4413 02cc 00000000 .word .LANCHOR5 + 4414 02d0 000C0240 .word 1073875968 + 4415 02d4 0000803B .word 998244352 + 4416 02d8 00000000 .word .LANCHOR6 + 4417 02dc 00080240 .word 1073874944 + 4418 02e0 00040240 .word 1073873920 + 4419 02e4 00000240 .word 1073872896 + 4420 02e8 00002041 .word 1092616192 + 4421 02ec 0AD7233C .word 1008981770 + 4422 02f0 00000000 .word .LC0 + 4423 02f4 04000000 .word .LC1 + 4424 .cfi_endproc + 4425 .LFE1204: + 4427 .section .text.Init_params,"ax",%progbits + 4428 .align 1 + 4429 .syntax unified + 4430 .thumb + 4431 .thumb_func + 4432 .fpu fpv5-d16 + 4434 Init_params: + 4435 .LFB1203: +1455:Src/main.c **** TO6 = 0; + 4436 .loc 2 1455 1 view -0 + 4437 .cfi_startproc + 4438 @ args = 0, pretend = 0, frame = 0 + 4439 @ frame_needed = 0, uses_anonymous_args = 0 + 4440 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 4441 .LCFI38: + 4442 .cfi_def_cfa_offset 24 + 4443 .cfi_offset 4, -24 + 4444 .cfi_offset 5, -20 + 4445 .cfi_offset 6, -16 + 4446 .cfi_offset 7, -12 + 4447 .cfi_offset 8, -8 + 4448 .cfi_offset 14, -4 +1456:Src/main.c **** TO7 = 0; + 4449 .loc 2 1456 2 view .LVU1499 +1456:Src/main.c **** TO7 = 0; + 4450 .loc 2 1456 6 is_stmt 0 view .LVU1500 + 4451 0004 0023 movs r3, #0 + 4452 0006 9C4A ldr r2, .L182 + 4453 0008 1360 str r3, [r2] +1457:Src/main.c **** TO7_before = 0; + 4454 .loc 2 1457 2 is_stmt 1 view .LVU1501 +1457:Src/main.c **** TO7_before = 0; + 4455 .loc 2 1457 6 is_stmt 0 view .LVU1502 + 4456 000a 9C4A ldr r2, .L182+4 + 4457 000c 1360 str r3, [r2] + ARM GAS /tmp/ccdsDELB.s page 281 + + +1458:Src/main.c **** TO6_before = 0; + 4458 .loc 2 1458 2 is_stmt 1 view .LVU1503 +1458:Src/main.c **** TO6_before = 0; + 4459 .loc 2 1458 13 is_stmt 0 view .LVU1504 + 4460 000e 9C4A ldr r2, .L182+8 + 4461 0010 1360 str r3, [r2] +1459:Src/main.c **** TO6_uart = 0; + 4462 .loc 2 1459 2 is_stmt 1 view .LVU1505 +1459:Src/main.c **** TO6_uart = 0; + 4463 .loc 2 1459 13 is_stmt 0 view .LVU1506 + 4464 0012 9C4A ldr r2, .L182+12 + 4465 0014 1360 str r3, [r2] +1460:Src/main.c **** flg_tmt = 0; + 4466 .loc 2 1460 2 is_stmt 1 view .LVU1507 +1460:Src/main.c **** flg_tmt = 0; + 4467 .loc 2 1460 11 is_stmt 0 view .LVU1508 + 4468 0016 9C4A ldr r2, .L182+16 + 4469 0018 1360 str r3, [r2] +1461:Src/main.c **** UART_rec_incr = 0; + 4470 .loc 2 1461 2 is_stmt 1 view .LVU1509 +1461:Src/main.c **** UART_rec_incr = 0; + 4471 .loc 2 1461 10 is_stmt 0 view .LVU1510 + 4472 001a 9C4A ldr r2, .L182+20 + 4473 001c 1370 strb r3, [r2] +1462:Src/main.c **** fgoto = 0; + 4474 .loc 2 1462 2 is_stmt 1 view .LVU1511 +1462:Src/main.c **** fgoto = 0; + 4475 .loc 2 1462 16 is_stmt 0 view .LVU1512 + 4476 001e 9C4A ldr r2, .L182+24 + 4477 0020 1380 strh r3, [r2] @ movhi +1463:Src/main.c **** sizeoffile = 0; + 4478 .loc 2 1463 2 is_stmt 1 view .LVU1513 +1463:Src/main.c **** sizeoffile = 0; + 4479 .loc 2 1463 8 is_stmt 0 view .LVU1514 + 4480 0022 9C4A ldr r2, .L182+28 + 4481 0024 1360 str r3, [r2] +1464:Src/main.c **** u_tx_flg = 0; + 4482 .loc 2 1464 2 is_stmt 1 view .LVU1515 +1464:Src/main.c **** u_tx_flg = 0; + 4483 .loc 2 1464 13 is_stmt 0 view .LVU1516 + 4484 0026 9C4A ldr r2, .L182+32 + 4485 0028 1360 str r3, [r2] +1465:Src/main.c **** u_rx_flg = 0; + 4486 .loc 2 1465 2 is_stmt 1 view .LVU1517 +1465:Src/main.c **** u_rx_flg = 0; + 4487 .loc 2 1465 11 is_stmt 0 view .LVU1518 + 4488 002a 9C4A ldr r2, .L182+36 + 4489 002c 1370 strb r3, [r2] +1466:Src/main.c **** //State_Data[0]=0; + 4490 .loc 2 1466 2 is_stmt 1 view .LVU1519 +1466:Src/main.c **** //State_Data[0]=0; + 4491 .loc 2 1466 11 is_stmt 0 view .LVU1520 + 4492 002e 9C4A ldr r2, .L182+40 + 4493 0030 1370 strb r3, [r2] +1469:Src/main.c **** { + 4494 .loc 2 1469 2 is_stmt 1 view .LVU1521 + 4495 .LBB456: + ARM GAS /tmp/ccdsDELB.s page 282 + + +1469:Src/main.c **** { + 4496 .loc 2 1469 7 view .LVU1522 + 4497 .LVL327: +1469:Src/main.c **** { + 4498 .loc 2 1469 2 is_stmt 0 view .LVU1523 + 4499 0032 05E0 b .L171 + 4500 .LVL328: + 4501 .L172: +1471:Src/main.c **** } + 4502 .loc 2 1471 3 is_stmt 1 discriminator 3 view .LVU1524 +1471:Src/main.c **** } + 4503 .loc 2 1471 16 is_stmt 0 discriminator 3 view .LVU1525 + 4504 0034 9B4A ldr r2, .L182+44 + 4505 0036 0021 movs r1, #0 + 4506 0038 22F81310 strh r1, [r2, r3, lsl #1] @ movhi +1469:Src/main.c **** { + 4507 .loc 2 1469 30 is_stmt 1 discriminator 3 view .LVU1526 +1469:Src/main.c **** { + 4508 .loc 2 1469 31 is_stmt 0 discriminator 3 view .LVU1527 + 4509 003c 0133 adds r3, r3, #1 + 4510 .LVL329: +1469:Src/main.c **** { + 4511 .loc 2 1469 31 discriminator 3 view .LVU1528 + 4512 003e 9BB2 uxth r3, r3 + 4513 .LVL330: + 4514 .L171: +1469:Src/main.c **** { + 4515 .loc 2 1469 21 is_stmt 1 discriminator 1 view .LVU1529 +1469:Src/main.c **** { + 4516 .loc 2 1469 2 is_stmt 0 discriminator 1 view .LVU1530 + 4517 0040 0E2B cmp r3, #14 + 4518 0042 F7D9 bls .L172 + 4519 .LBE456: +1473:Src/main.c **** + 4520 .loc 2 1473 2 is_stmt 1 view .LVU1531 +1473:Src/main.c **** + 4521 .loc 2 1473 14 is_stmt 0 view .LVU1532 + 4522 0044 974B ldr r3, .L182+44 + 4523 .LVL331: +1473:Src/main.c **** + 4524 .loc 2 1473 14 view .LVU1533 + 4525 0046 41F21112 movw r2, #4369 + 4526 004a 1A80 strh r2, [r3] @ movhi +1476:Src/main.c **** Def_setup.LD1_EN = 0; + 4527 .loc 2 1476 2 is_stmt 1 view .LVU1534 +1476:Src/main.c **** Def_setup.LD1_EN = 0; + 4528 .loc 2 1476 21 is_stmt 0 view .LVU1535 + 4529 004c 964B ldr r3, .L182+48 + 4530 004e 0022 movs r2, #0 + 4531 0050 DA81 strh r2, [r3, #14] @ movhi +1477:Src/main.c **** Def_setup.LD2_EN = 0; + 4532 .loc 2 1477 2 is_stmt 1 view .LVU1536 +1477:Src/main.c **** Def_setup.LD2_EN = 0; + 4533 .loc 2 1477 19 is_stmt 0 view .LVU1537 + 4534 0052 DA70 strb r2, [r3, #3] +1478:Src/main.c **** Def_setup.MES_ID = 0; + 4535 .loc 2 1478 2 is_stmt 1 view .LVU1538 + ARM GAS /tmp/ccdsDELB.s page 283 + + +1478:Src/main.c **** Def_setup.MES_ID = 0; + 4536 .loc 2 1478 19 is_stmt 0 view .LVU1539 + 4537 0054 1A71 strb r2, [r3, #4] +1479:Src/main.c **** Def_setup.PI1_RD = 0; + 4538 .loc 2 1479 2 is_stmt 1 view .LVU1540 +1479:Src/main.c **** Def_setup.PI1_RD = 0; + 4539 .loc 2 1479 19 is_stmt 0 view .LVU1541 + 4540 0056 1A82 strh r2, [r3, #16] @ movhi +1480:Src/main.c **** Def_setup.PI2_RD = 0; + 4541 .loc 2 1480 2 is_stmt 1 view .LVU1542 +1480:Src/main.c **** Def_setup.PI2_RD = 0; + 4542 .loc 2 1480 19 is_stmt 0 view .LVU1543 + 4543 0058 1A73 strb r2, [r3, #12] +1481:Src/main.c **** Def_setup.REF1_EN = 0; + 4544 .loc 2 1481 2 is_stmt 1 view .LVU1544 +1481:Src/main.c **** Def_setup.REF1_EN = 0; + 4545 .loc 2 1481 19 is_stmt 0 view .LVU1545 + 4546 005a 5A73 strb r2, [r3, #13] +1482:Src/main.c **** Def_setup.REF2_EN = 0; + 4547 .loc 2 1482 2 is_stmt 1 view .LVU1546 +1482:Src/main.c **** Def_setup.REF2_EN = 0; + 4548 .loc 2 1482 20 is_stmt 0 view .LVU1547 + 4549 005c 5A71 strb r2, [r3, #5] +1483:Src/main.c **** Def_setup.SD_EN = 0; + 4550 .loc 2 1483 2 is_stmt 1 view .LVU1548 +1483:Src/main.c **** Def_setup.SD_EN = 0; + 4551 .loc 2 1483 20 is_stmt 0 view .LVU1549 + 4552 005e 9A71 strb r2, [r3, #6] +1484:Src/main.c **** Def_setup.TEC1_EN = 0; + 4553 .loc 2 1484 2 is_stmt 1 view .LVU1550 +1484:Src/main.c **** Def_setup.TEC1_EN = 0; + 4554 .loc 2 1484 18 is_stmt 0 view .LVU1551 + 4555 0060 DA72 strb r2, [r3, #11] +1485:Src/main.c **** Def_setup.TEC2_EN = 0; + 4556 .loc 2 1485 2 is_stmt 1 view .LVU1552 +1485:Src/main.c **** Def_setup.TEC2_EN = 0; + 4557 .loc 2 1485 20 is_stmt 0 view .LVU1553 + 4558 0062 DA71 strb r2, [r3, #7] +1486:Src/main.c **** Def_setup.TS1_EN = 0; + 4559 .loc 2 1486 2 is_stmt 1 view .LVU1554 +1486:Src/main.c **** Def_setup.TS1_EN = 0; + 4560 .loc 2 1486 20 is_stmt 0 view .LVU1555 + 4561 0064 1A72 strb r2, [r3, #8] +1487:Src/main.c **** Def_setup.TS2_EN = 0; + 4562 .loc 2 1487 2 is_stmt 1 view .LVU1556 +1487:Src/main.c **** Def_setup.TS2_EN = 0; + 4563 .loc 2 1487 19 is_stmt 0 view .LVU1557 + 4564 0066 5A72 strb r2, [r3, #9] +1488:Src/main.c **** Def_setup.U5V1_EN = 0; + 4565 .loc 2 1488 2 is_stmt 1 view .LVU1558 +1488:Src/main.c **** Def_setup.U5V1_EN = 0; + 4566 .loc 2 1488 19 is_stmt 0 view .LVU1559 + 4567 0068 9A72 strb r2, [r3, #10] +1489:Src/main.c **** Def_setup.U5V2_EN = 0; + 4568 .loc 2 1489 2 is_stmt 1 view .LVU1560 +1489:Src/main.c **** Def_setup.U5V2_EN = 0; + 4569 .loc 2 1489 20 is_stmt 0 view .LVU1561 + ARM GAS /tmp/ccdsDELB.s page 284 + + + 4570 006a 5A70 strb r2, [r3, #1] +1490:Src/main.c **** Def_setup.WORK_EN = 0; + 4571 .loc 2 1490 2 is_stmt 1 view .LVU1562 +1490:Src/main.c **** Def_setup.WORK_EN = 0; + 4572 .loc 2 1490 20 is_stmt 0 view .LVU1563 + 4573 006c 9A70 strb r2, [r3, #2] +1491:Src/main.c **** + 4574 .loc 2 1491 2 is_stmt 1 view .LVU1564 +1491:Src/main.c **** + 4575 .loc 2 1491 20 is_stmt 0 view .LVU1565 + 4576 006e 1A70 strb r2, [r3] +1493:Src/main.c **** LD2_def_setup.LD_TEMP = 0; + 4577 .loc 2 1493 2 is_stmt 1 view .LVU1566 +1493:Src/main.c **** LD2_def_setup.LD_TEMP = 0; + 4578 .loc 2 1493 24 is_stmt 0 view .LVU1567 + 4579 0070 8E4D ldr r5, .L182+52 + 4580 0072 2A80 strh r2, [r5] @ movhi +1494:Src/main.c **** LD1_def_setup.P_coef_temp = 0; + 4581 .loc 2 1494 2 is_stmt 1 view .LVU1568 +1494:Src/main.c **** LD1_def_setup.P_coef_temp = 0; + 4582 .loc 2 1494 24 is_stmt 0 view .LVU1569 + 4583 0074 8E4C ldr r4, .L182+56 + 4584 0076 2280 strh r2, [r4] @ movhi +1495:Src/main.c **** LD2_def_setup.P_coef_temp = 0; + 4585 .loc 2 1495 2 is_stmt 1 view .LVU1570 +1495:Src/main.c **** LD2_def_setup.P_coef_temp = 0; + 4586 .loc 2 1495 28 is_stmt 0 view .LVU1571 + 4587 0078 0022 movs r2, #0 + 4588 007a 6A60 str r2, [r5, #4] @ float +1496:Src/main.c **** LD1_def_setup.I_coef_temp = 0; + 4589 .loc 2 1496 2 is_stmt 1 view .LVU1572 +1496:Src/main.c **** LD1_def_setup.I_coef_temp = 0; + 4590 .loc 2 1496 28 is_stmt 0 view .LVU1573 + 4591 007c 6260 str r2, [r4, #4] @ float +1497:Src/main.c **** LD2_def_setup.I_coef_temp = 0; + 4592 .loc 2 1497 2 is_stmt 1 view .LVU1574 +1497:Src/main.c **** LD2_def_setup.I_coef_temp = 0; + 4593 .loc 2 1497 28 is_stmt 0 view .LVU1575 + 4594 007e AA60 str r2, [r5, #8] @ float +1498:Src/main.c **** + 4595 .loc 2 1498 2 is_stmt 1 view .LVU1576 +1498:Src/main.c **** + 4596 .loc 2 1498 28 is_stmt 0 view .LVU1577 + 4597 0080 A260 str r2, [r4, #8] @ float +1501:Src/main.c **** LD1_curr_setup = LD1_def_setup; + 4598 .loc 2 1501 2 is_stmt 1 view .LVU1578 +1501:Src/main.c **** LD1_curr_setup = LD1_def_setup; + 4599 .loc 2 1501 13 is_stmt 0 view .LVU1579 + 4600 0082 8C4E ldr r6, .L182+60 + 4601 0084 9C46 mov ip, r3 + 4602 0086 BCE80F00 ldmia ip!, {r0, r1, r2, r3} + 4603 008a 0FC6 stmia r6!, {r0, r1, r2, r3} + 4604 008c DCF80030 ldr r3, [ip] + 4605 0090 3380 strh r3, [r6] @ movhi +1502:Src/main.c **** LD2_curr_setup = LD2_def_setup; + 4606 .loc 2 1502 2 is_stmt 1 view .LVU1580 +1502:Src/main.c **** LD2_curr_setup = LD2_def_setup; + ARM GAS /tmp/ccdsDELB.s page 285 + + + 4607 .loc 2 1502 17 is_stmt 0 view .LVU1581 + 4608 0092 894E ldr r6, .L182+64 + 4609 0094 95E80F00 ldm r5, {r0, r1, r2, r3} + 4610 0098 86E80F00 stm r6, {r0, r1, r2, r3} +1503:Src/main.c **** + 4611 .loc 2 1503 2 is_stmt 1 view .LVU1582 +1503:Src/main.c **** + 4612 .loc 2 1503 17 is_stmt 0 view .LVU1583 + 4613 009c 874D ldr r5, .L182+68 + 4614 009e 94E80F00 ldm r4, {r0, r1, r2, r3} + 4615 00a2 85E80F00 stm r5, {r0, r1, r2, r3} +1508:Src/main.c **** LL_TIM_EnableCounter(TIM6); + 4616 .loc 2 1508 2 is_stmt 1 view .LVU1584 + 4617 .LVL332: + 4618 .LBB457: + 4619 .LBI457: +3238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the Master/Slave mode is enabled. +3242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR MSM LL_TIM_IsEnabledMasterSlaveMode +3245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(const TIM_TypeDef *TIMx) +3249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL); +3251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure the external trigger (ETR) input. +3255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not +3256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an external trigger input. +3257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ETP LL_TIM_ConfigETR\n +3258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * SMCR ETPS LL_TIM_ConfigETR\n +3259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * SMCR ETF LL_TIM_ConfigETR +3260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ETRPolarity This parameter can be one of the following values: +3262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED +3263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_POLARITY_INVERTED +3264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ETRPrescaler This parameter can be one of the following values: +3265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV1 +3266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV2 +3267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV4 +3268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV8 +3269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ETRFilter This parameter can be one of the following values: +3270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1 +3271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2 +3272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4 +3273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8 +3274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6 +3275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8 +3276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6 +3277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8 +3278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6 + ARM GAS /tmp/ccdsDELB.s page 286 + + +3279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8 +3280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5 +3281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6 +3282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8 +3283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5 +3284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6 +3285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8 +3286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescale +3289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ETRFilter) +3290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | +3292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Break_Function Break function configuration +3299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the break function. +3303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BKE LL_TIM_EnableBRK +3306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx) +3310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_BKE); +3312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the break function. +3316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BKE LL_TIM_DisableBRK +3317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx) +3323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE); +3325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure the break input. +3329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BKP LL_TIM_ConfigBRK\n +3332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * BDTR BKF LL_TIM_ConfigBRK +3333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakPolarity This parameter can be one of the following values: +3335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_POLARITY_LOW + ARM GAS /tmp/ccdsDELB.s page 287 + + +3336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_POLARITY_HIGH +3337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakFilter This parameter can be one of the following values: +3338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1 +3339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N2 +3340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N4 +3341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N8 +3342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV2_N6 +3343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV2_N8 +3344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV4_N6 +3345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV4_N8 +3346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV8_N6 +3347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV8_N8 +3348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N5 +3349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N6 +3350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N8 +3351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N5 +3352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N6 +3353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N8 +3354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity, +3357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t BreakFilter) +3358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP | TIM_BDTR_BKF, BreakPolarity | BreakFilter); +3360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the break 2 function. +3364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not +3365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a second break input. +3366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BK2E LL_TIM_EnableBRK2 +3367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableBRK2(TIM_TypeDef *TIMx) +3371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_BK2E); +3373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the break 2 function. +3377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not +3378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a second break input. +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BK2E LL_TIM_DisableBRK2 +3380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableBRK2(TIM_TypeDef *TIMx) +3384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BK2E); +3386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure the break 2 input. +3390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not +3391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a second break input. +3392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BK2P LL_TIM_ConfigBRK2\n + ARM GAS /tmp/ccdsDELB.s page 288 + + +3393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * BDTR BK2F LL_TIM_ConfigBRK2 +3394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Break2Polarity This parameter can be one of the following values: +3396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_POLARITY_LOW +3397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_POLARITY_HIGH +3398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Break2Filter This parameter can be one of the following values: +3399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1 +3400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N2 +3401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N4 +3402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N8 +3403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV2_N6 +3404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV2_N8 +3405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV4_N6 +3406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV4_N8 +3407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV8_N6 +3408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV8_N8 +3409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N5 +3410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N6 +3411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N8 +3412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N5 +3413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N6 +3414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N8 +3415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigBRK2(TIM_TypeDef *TIMx, uint32_t Break2Polarity, uint32_t Break2F +3418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_BK2P | TIM_BDTR_BK2F, Break2Polarity | Break2Filter); +3420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Select the outputs off state (enabled v.s. disabled) in Idle and Run modes. +3424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR OSSI LL_TIM_SetOffStates\n +3427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * BDTR OSSR LL_TIM_SetOffStates +3428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param OffStateIdle This parameter can be one of the following values: +3430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSI_DISABLE +3431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSI_ENABLE +3432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param OffStateRun This parameter can be one of the following values: +3433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSR_DISABLE +3434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSR_ENABLE +3435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStat +3438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun); +3440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable automatic output (MOE can be set by software or automatically when a break input +3444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR AOE LL_TIM_EnableAutomaticOutput +3447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/ccdsDELB.s page 289 + + +3450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx) +3451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_AOE); +3453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable automatic output (MOE can be set only by software). +3457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR AOE LL_TIM_DisableAutomaticOutput +3460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx) +3464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE); +3466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether automatic output is enabled. +3470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR AOE LL_TIM_IsEnabledAutomaticOutput +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(const TIM_TypeDef *TIMx) +3477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL); +3479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the outputs (set the MOE bit in TIMx_BDTR register). +3483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by +3484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * software and is reset in case of break or break2 event +3485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR MOE LL_TIM_EnableAllOutputs +3488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx) +3492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_MOE); +3494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the outputs (reset the MOE bit in TIMx_BDTR register). +3498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by +3499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * software and is reset in case of break or break2 event. +3500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR MOE LL_TIM_DisableAllOutputs +3503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx) + ARM GAS /tmp/ccdsDELB.s page 290 + + +3507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE); +3509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether outputs are enabled. +3513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR MOE LL_TIM_IsEnabledAllOutputs +3516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(const TIM_TypeDef *TIMx) +3520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL); +3522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(TIM_BREAK_INPUT_SUPPORT) +3525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the signals connected to the designated timer break input. +3527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether +3528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance allows for break input selection. +3529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll AF1 BKINE LL_TIM_EnableBreakInputSource\n +3530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF1 BKDFBKE LL_TIM_EnableBreakInputSource\n +3531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2INE LL_TIM_EnableBreakInputSource\n +3532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2DFBKE LL_TIM_EnableBreakInputSource +3533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakInput This parameter can be one of the following values: +3535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN +3536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 +3537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Source This parameter can be one of the following values: +3538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_BKIN +3539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK +3540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableBreakInputSource(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_t +3543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); +3545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, Source); +3546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the signals connected to the designated timer break input. +3550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether +3551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance allows for break input selection. +3552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll AF1 BKINE LL_TIM_DisableBreakInputSource\n +3553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF1 BKDFBKE LL_TIM_DisableBreakInputSource\n +3554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2INE LL_TIM_DisableBreakInputSource\n +3555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2DFBKE LL_TIM_DisableBreakInputSource +3556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakInput This parameter can be one of the following values: +3558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN +3559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 +3560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Source This parameter can be one of the following values: +3561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_BKIN +3562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK +3563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 291 + + +3564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableBreakInputSource(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_ +3566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); +3568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, Source); +3569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the polarity of the break signal for the timer break input. +3573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether +3574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance allows for break input selection. +3575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll AF1 BKINP LL_TIM_SetBreakInputSourcePolarity\n +3576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF1 BKDFBKP LL_TIM_SetBreakInputSourcePolarity\n +3577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2INP LL_TIM_SetBreakInputSourcePolarity\n +3578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2DFBKP LL_TIM_SetBreakInputSourcePolarity +3579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakInput This parameter can be one of the following values: +3581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN +3582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 +3583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Source This parameter can be one of the following values: +3584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_BKIN +3585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK +3586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Polarity This parameter can be one of the following values: +3587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_POLARITY_LOW +3588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_POLARITY_HIGH +3589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetBreakInputSourcePolarity(TIM_TypeDef *TIMx, uint32_t BreakInput, uin +3592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Polarity) +3593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); +3595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, (TIMx_AF1_BKINP << TIM_POSITION_BRK_SOURCE), (Polarity << TIM_POSITION_BRK_SOUR +3596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* TIM_BREAK_INPUT_SUPPORT */ +3598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configures the timer DMA burst feature. +3607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or +3608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * not a timer instance supports the DMA burst mode. +3609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DCR DBL LL_TIM_ConfigDMABurst\n +3610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * DCR DBA LL_TIM_ConfigDMABurst +3611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DMABurstBaseAddress This parameter can be one of the following values: +3613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CR1 +3614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CR2 +3615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR +3616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_DIER +3617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_SR +3618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_EGR +3619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1 +3620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2 + ARM GAS /tmp/ccdsDELB.s page 292 + + +3621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCER +3622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CNT +3623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_PSC +3624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_ARR +3625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_RCR +3626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1 +3627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2 +3628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3 +3629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4 +3630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR +3631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_OR +3632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR3 +3633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR5 +3634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR6 +3635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_AF1 (*) +3636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_AF2 (*) +3637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (*) value not defined in all devices +3638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DMABurstLength This parameter can be one of the following values: +3639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER +3640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS +3641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS +3642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS +3643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS +3644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS +3645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS +3646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS +3647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS +3648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS +3649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS +3650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS +3651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS +3652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS +3653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS +3654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS +3655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS +3656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS +3657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_ +3660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength)); +3662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Timer_Inputs_Remapping Timer input remapping +3669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Remap TIM inputs (input channel, internal/external triggers). +3673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_REMAP_INSTANCE(TIMx) can be used to check whether or not +3674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a some timer inputs can be remapped. +3675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll TIM2_OR ITR1_RMP LL_TIM_SetRemap\n +3676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM5_OR TI4_RMP LL_TIM_SetRemap\n +3677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM11_OR TI1_RMP LL_TIM_SetRemap + ARM GAS /tmp/ccdsDELB.s page 293 + + +3678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Remap Remap param depends on the TIMx. Description available only +3680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * in CHM version of the User Manual (not in .pdf). +3681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * Otherwise see Reference Manual description of OR registers. +3682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * Below description summarizes "Timer Instance" and "Remap" param combinations: +3684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM2: one of the following values +3686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * ITR1_RMP can be one of the following values +3688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_TIM8_TRGO +3689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_ETH_PTP +3690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_FS_SOF +3691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_HS_SOF +3692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM5: one of the following values +3694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_GPIO +3696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_LSI +3697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_LSE +3698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_RTC +3699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM11: one of the following values +3701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_GPIO +3703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_SPDIFRX +3704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_HSE +3705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_MCO1 +3706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetRemap(TIM_TypeDef *TIMx, uint32_t Remap) +3710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->OR, (Remap >> TIMx_OR_RMP_SHIFT), (Remap & TIMx_OR_RMP_MASK)); +3712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management +3719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the update interrupt flag (UIF). +3723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR UIF LL_TIM_ClearFlag_UPDATE +3724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx) +3728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_UIF)); +3730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether update interrupt flag (UIF) is set (update interrupt is pending). +3734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR UIF LL_TIM_IsActiveFlag_UPDATE + ARM GAS /tmp/ccdsDELB.s page 294 + + +3735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(const TIM_TypeDef *TIMx) +3739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL); +3741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 1 interrupt flag (CC1F). +3745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC1IF LL_TIM_ClearFlag_CC1 +3746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx) +3750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF)); +3752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 1 interrupt flag (CC1F) is set (Capture/Compare 1 inte +3756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC1IF LL_TIM_IsActiveFlag_CC1 +3757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(const TIM_TypeDef *TIMx) +3761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL); +3763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 2 interrupt flag (CC2F). +3767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC2IF LL_TIM_ClearFlag_CC2 +3768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx) +3772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF)); +3774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 2 interrupt flag (CC2F) is set (Capture/Compare 2 inte +3778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC2IF LL_TIM_IsActiveFlag_CC2 +3779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(const TIM_TypeDef *TIMx) +3783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL); +3785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 3 interrupt flag (CC3F). +3789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC3IF LL_TIM_ClearFlag_CC3 +3790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 295 + + +3792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx) +3794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF)); +3796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 3 interrupt flag (CC3F) is set (Capture/Compare 3 inte +3800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC3IF LL_TIM_IsActiveFlag_CC3 +3801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(const TIM_TypeDef *TIMx) +3805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL); +3807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 4 interrupt flag (CC4F). +3811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC4IF LL_TIM_ClearFlag_CC4 +3812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx) +3816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF)); +3818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 4 interrupt flag (CC4F) is set (Capture/Compare 4 inte +3822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC4IF LL_TIM_IsActiveFlag_CC4 +3823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(const TIM_TypeDef *TIMx) +3827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL); +3829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 5 interrupt flag (CC5F). +3833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC5IF LL_TIM_ClearFlag_CC5 +3834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC5(TIM_TypeDef *TIMx) +3838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC5IF)); +3840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 5 interrupt flag (CC5F) is set (Capture/Compare 5 inte +3844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC5IF LL_TIM_IsActiveFlag_CC5 +3845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC5(const TIM_TypeDef *TIMx) + ARM GAS /tmp/ccdsDELB.s page 296 + + +3849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC5IF) == (TIM_SR_CC5IF)) ? 1UL : 0UL); +3851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 6 interrupt flag (CC6F). +3855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC6IF LL_TIM_ClearFlag_CC6 +3856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC6(TIM_TypeDef *TIMx) +3860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC6IF)); +3862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 6 interrupt flag (CC6F) is set (Capture/Compare 6 inte +3866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC6IF LL_TIM_IsActiveFlag_CC6 +3867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC6(const TIM_TypeDef *TIMx) +3871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC6IF) == (TIM_SR_CC6IF)) ? 1UL : 0UL); +3873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the commutation interrupt flag (COMIF). +3877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR COMIF LL_TIM_ClearFlag_COM +3878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_COM(TIM_TypeDef *TIMx) +3882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_COMIF)); +3884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether commutation interrupt flag (COMIF) is set (commutation interrupt is pe +3888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR COMIF LL_TIM_IsActiveFlag_COM +3889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(const TIM_TypeDef *TIMx) +3893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF)) ? 1UL : 0UL); +3895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the trigger interrupt flag (TIF). +3899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR TIF LL_TIM_ClearFlag_TRIG +3900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx) +3904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_TIF)); + ARM GAS /tmp/ccdsDELB.s page 297 + + +3906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether trigger interrupt flag (TIF) is set (trigger interrupt is pending). +3910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR TIF LL_TIM_IsActiveFlag_TRIG +3911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(const TIM_TypeDef *TIMx) +3915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL); +3917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the break interrupt flag (BIF). +3921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR BIF LL_TIM_ClearFlag_BRK +3922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_BRK(TIM_TypeDef *TIMx) +3926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_BIF)); +3928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether break interrupt flag (BIF) is set (break interrupt is pending). +3932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR BIF LL_TIM_IsActiveFlag_BRK +3933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(const TIM_TypeDef *TIMx) +3937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF)) ? 1UL : 0UL); +3939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the break 2 interrupt flag (B2IF). +3943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR B2IF LL_TIM_ClearFlag_BRK2 +3944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_BRK2(TIM_TypeDef *TIMx) +3948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_B2IF)); +3950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether break 2 interrupt flag (B2IF) is set (break 2 interrupt is pending). +3954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR B2IF LL_TIM_IsActiveFlag_BRK2 +3955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK2(const TIM_TypeDef *TIMx) +3959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_B2IF) == (TIM_SR_B2IF)) ? 1UL : 0UL); +3961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccdsDELB.s page 298 + + +3963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF). +3965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC1OF LL_TIM_ClearFlag_CC1OVR +3966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx) +3970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF)); +3972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set +3976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (Capture/Compare 1 interrupt is pending). +3977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC1OF LL_TIM_IsActiveFlag_CC1OVR +3978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(const TIM_TypeDef *TIMx) +3982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL); +3984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF). +3988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC2OF LL_TIM_ClearFlag_CC2OVR +3989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx) +3993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF)); +3995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set +3999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (Capture/Compare 2 over-capture interrupt is pending). +4000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC2OF LL_TIM_IsActiveFlag_CC2OVR +4001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(const TIM_TypeDef *TIMx) +4005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL); +4007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF). +4011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC3OF LL_TIM_ClearFlag_CC3OVR +4012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx) +4016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF)); +4018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccdsDELB.s page 299 + + +4020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set +4022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (Capture/Compare 3 over-capture interrupt is pending). +4023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC3OF LL_TIM_IsActiveFlag_CC3OVR +4024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(const TIM_TypeDef *TIMx) +4028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL); +4030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF). +4034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC4OF LL_TIM_ClearFlag_CC4OVR +4035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx) +4039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF)); +4041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set +4045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (Capture/Compare 4 over-capture interrupt is pending). +4046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC4OF LL_TIM_IsActiveFlag_CC4OVR +4047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(const TIM_TypeDef *TIMx) +4051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL); +4053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the system break interrupt flag (SBIF). +4057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR SBIF LL_TIM_ClearFlag_SYSBRK +4058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_SYSBRK(TIM_TypeDef *TIMx) +4062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_SBIF)); +4064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether system break interrupt flag (SBIF) is set (system break interrupt is p +4068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR SBIF LL_TIM_IsActiveFlag_SYSBRK +4069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_SYSBRK(const TIM_TypeDef *TIMx) +4073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_SBIF) == (TIM_SR_SBIF)) ? 1UL : 0UL); +4075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccdsDELB.s page 300 + + +4077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +4079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_IT_Management IT-Management +4082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +4083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable update interrupt (UIE). +4086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER UIE LL_TIM_EnableIT_UPDATE +4087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx) + 4620 .loc 5 4090 22 view .LVU1585 + 4621 .LBB458: +4091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_UIE); + 4622 .loc 5 4092 3 view .LVU1586 + 4623 00a6 864B ldr r3, .L182+72 + 4624 00a8 DA68 ldr r2, [r3, #12] + 4625 00aa 42F00102 orr r2, r2, #1 + 4626 00ae DA60 str r2, [r3, #12] + 4627 .LVL333: + 4628 .loc 5 4092 3 is_stmt 0 view .LVU1587 + 4629 .LBE458: + 4630 .LBE457: +1509:Src/main.c **** LL_TIM_EnableIT_UPDATE(TIM7); + 4631 .loc 2 1509 2 is_stmt 1 view .LVU1588 + 4632 .LBB459: + 4633 .LBI459: +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 4634 .loc 5 1313 22 view .LVU1589 + 4635 .LBB460: +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 4636 .loc 5 1315 3 view .LVU1590 + 4637 00b0 1A68 ldr r2, [r3] + 4638 00b2 42F00102 orr r2, r2, #1 + 4639 00b6 1A60 str r2, [r3] + 4640 .LVL334: +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 4641 .loc 5 1315 3 is_stmt 0 view .LVU1591 + 4642 .LBE460: + 4643 .LBE459: +1510:Src/main.c **** LL_TIM_EnableCounter(TIM7); + 4644 .loc 2 1510 2 is_stmt 1 view .LVU1592 + 4645 .LBB461: + 4646 .LBI461: +4090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 4647 .loc 5 4090 22 view .LVU1593 + 4648 .LBB462: + 4649 .loc 5 4092 3 view .LVU1594 + 4650 00b8 03F58063 add r3, r3, #1024 + 4651 00bc DA68 ldr r2, [r3, #12] + 4652 00be 42F00102 orr r2, r2, #1 + 4653 00c2 DA60 str r2, [r3, #12] + 4654 .LVL335: + ARM GAS /tmp/ccdsDELB.s page 301 + + + 4655 .loc 5 4092 3 is_stmt 0 view .LVU1595 + 4656 .LBE462: + 4657 .LBE461: +1511:Src/main.c **** //HAL_TIM_Base_Start_IT(&htim6); + 4658 .loc 2 1511 2 is_stmt 1 view .LVU1596 + 4659 .LBB463: + 4660 .LBI463: +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 4661 .loc 5 1313 22 view .LVU1597 + 4662 .LBB464: +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 4663 .loc 5 1315 3 view .LVU1598 + 4664 00c4 1A68 ldr r2, [r3] + 4665 00c6 42F00102 orr r2, r2, #1 + 4666 00ca 1A60 str r2, [r3] + 4667 .LVL336: +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 4668 .loc 5 1315 3 is_stmt 0 view .LVU1599 + 4669 .LBE464: + 4670 .LBE463: +1518:Src/main.c **** LL_DMA_ClearFlag_TC7(DMA2); + 4671 .loc 2 1518 3 is_stmt 1 view .LVU1600 + 4672 .LBB465: + 4673 .LBI465: + 4674 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @file stm32f7xx_ll_dma.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Header file of DMA LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * This software is licensed under terms that can be found in the LICENSE file in + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #ifndef __STM32F7xx_LL_DMA_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __STM32F7xx_LL_DMA_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + ARM GAS /tmp/ccdsDELB.s page 302 + + + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined (DMA1) || defined (DMA2) + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL DMA + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Private_Variables DMA Private Variables + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Array used to get the DMA stream register offset versus stream index LL_DMA_STREAM_x */ + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** static const uint8_t STREAM_OFFSET_TAB[] = + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream0_BASE - DMA1_BASE), + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream1_BASE - DMA1_BASE), + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream2_BASE - DMA1_BASE), + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream3_BASE - DMA1_BASE), + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream4_BASE - DMA1_BASE), + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream5_BASE - DMA1_BASE), + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream6_BASE - DMA1_BASE), + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream7_BASE - DMA1_BASE) + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** }; + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private constants ---------------------------------------------------------*/ + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Private_Constants DMA Private Constants + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined(DMA_SxCR_CHSEL_3) + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define DMA_CHANNEL_SELECTION_8_15 + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif /* DMA_SxCR_CHSEL_3 */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private macros ------------------------------------------------------------*/ + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported types ------------------------------------------------------------*/ + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined(USE_FULL_LL_DRIVER) + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** typedef struct + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** or as Source base address in case of memory to memory trans + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter must be a value between Min_Data = 0 and Max + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** or as Destination base address in case of memory to memory + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + ARM GAS /tmp/ccdsDELB.s page 303 + + + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter must be a value between Min_Data = 0 and Max + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Direction; /*!< Specifies if the data will be transferred from memory to pe + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** from memory to memory or from peripheral to memory. + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_DIRECTION + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Mode; /*!< Specifies the normal or circular operation mode. + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MODE + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The circular buffer mode cannot be used if the memory + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** data transfer direction is configured on the selected + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** is incremented or not. + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PERIPH + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** is incremented or not. + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MEMORY + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** in case of memory to memory transfer direction. + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination dat + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** in case of memory to memory transfer direction. + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** The data unit is equal to the source buffer configuration s + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** or MemorySize parameters depending in the transfer directio + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter must be a value between Min_Data = 0 and Max + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Channel; /*!< Specifies the peripheral channel. + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_CHANNEL + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Priority; /*!< Specifies the channel priority level. + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PRIORITY + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t FIFOMode; /*!< Specifies if the FIFO mode or Direct mode will be used for + ARM GAS /tmp/ccdsDELB.s page 304 + + + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_FIFOMODE + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The Direct mode (FIFO mode disabled) cannot be used i + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** memory-to-memory data transfer is configured on the selecte + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t FIFOThreshold; /*!< Specifies the FIFO threshold level. + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_FIFOTHRESHO + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemBurst; /*!< Specifies the Burst transfer configuration for the memory t + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** It specifies the amount of data to be transferred in a sing + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** transaction. + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MBURST + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The burst mode is possible only if the address Increm + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphBurst; /*!< Specifies the Burst transfer configuration for the peripher + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** It specifies the amount of data to be transferred in a sing + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** transaction. + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PBURST + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The burst mode is possible only if the address Increm + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } LL_DMA_InitTypeDef; + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif /*USE_FULL_LL_DRIVER*/ + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported constants --------------------------------------------------------*/ + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_STREAM STREAM + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_0 0x00000000U + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_1 0x00000001U + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_2 0x00000002U + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_3 0x00000003U + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_4 0x00000004U + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_5 0x00000005U + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_6 0x00000006U + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_7 0x00000007U + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_ALL 0xFFFF0000U + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_DIRECTION DIRECTION + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direc + ARM GAS /tmp/ccdsDELB.s page 305 + + + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_SxCR_DIR_0 /*!< Memory to peripheral direc + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_SxCR_DIR_1 /*!< Memory to memory direction + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MODE MODE + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MODE_CIRCULAR DMA_SxCR_CIRC /*!< Circular Mode + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MODE_PFCTRL DMA_SxCR_PFCTRL /*!< Peripheral flow control mo + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_DOUBLEBUFFER_MODE DOUBLE BUFFER MODE + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DOUBLEBUFFER_MODE_DISABLE 0x00000000U /*!< Disable double buffering m + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DOUBLEBUFFER_MODE_ENABLE DMA_SxCR_DBM /*!< Enable double buffering mo + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PERIPH PERIPH + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PERIPH_INCREMENT DMA_SxCR_PINC /*!< Peripheral increment mode + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MEMORY MEMORY + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disa + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MEMORY_INCREMENT DMA_SxCR_MINC /*!< Memory increment mode Enab + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PDATAALIGN PDATAALIGN + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PDATAALIGN_HALFWORD DMA_SxCR_PSIZE_0 /*!< Peripheral data alignment + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PDATAALIGN_WORD DMA_SxCR_PSIZE_1 /*!< Peripheral data alignment + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MDATAALIGN MDATAALIGN + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : By + ARM GAS /tmp/ccdsDELB.s page 306 + + + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MDATAALIGN_HALFWORD DMA_SxCR_MSIZE_0 /*!< Memory data alignment : Ha + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MDATAALIGN_WORD DMA_SxCR_MSIZE_1 /*!< Memory data alignment : Wo + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_OFFSETSIZE OFFSETSIZE + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_OFFSETSIZE_PSIZE 0x00000000U /*!< Peripheral increment offse + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_OFFSETSIZE_FIXEDTO4 DMA_SxCR_PINCOS /*!< Peripheral increment offse + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PRIORITY PRIORITY + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_MEDIUM DMA_SxCR_PL_0 /*!< Priority level : Medium + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_HIGH DMA_SxCR_PL_1 /*!< Priority level : High + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_VERYHIGH DMA_SxCR_PL /*!< Priority level : Very_High + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_CHANNEL CHANNEL + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_0 0x00000000U + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_1 DMA_SxCR_CHSEL_0 + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_2 DMA_SxCR_CHSEL_1 + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_3 (DMA_SxCR_CHSEL_0 | DMA_SxCR_CHSEL_1) + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_4 DMA_SxCR_CHSEL_2 + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_5 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_0) + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_6 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1) + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_7 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0) + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined(DMA_CHANNEL_SELECTION_8_15) + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_8 DMA_SxCR_CHSEL_3 + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_9 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_0) + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_10 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_1) + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_11 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0) + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_12 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2) + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_13 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_0) + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_14 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1) + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_15 DMA_SxCR_CHSEL + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif /* DMA_CHANNEL_SELECTION_8_15 */ + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MBURST MBURST + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_SINGLE 0x00000000U /*!< Memory burst + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_INC4 DMA_SxCR_MBURST_0 /*!< Memory burst + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_INC8 DMA_SxCR_MBURST_1 /*!< Memory burst + ARM GAS /tmp/ccdsDELB.s page 307 + + + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_INC16 (DMA_SxCR_MBURST_0 | DMA_SxCR_MBURST_1) /*!< Memory burst + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PBURST PBURST + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_SINGLE 0x00000000U /*!< Peripheral b + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_INC4 DMA_SxCR_PBURST_0 /*!< Peripheral b + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_INC8 DMA_SxCR_PBURST_1 /*!< Peripheral b + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_INC16 (DMA_SxCR_PBURST_0 | DMA_SxCR_PBURST_1) /*!< Peripheral b + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_FIFOMODE DMA_LL_FIFOMODE + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode di + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOMODE_ENABLE DMA_SxFCR_DMDIS /*!< FIFO mode en + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_FIFOSTATUS_0 FIFOSTATUS 0 + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_0_25 0x00000000U /*!< 0 < fifo_lev + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_25_50 DMA_SxFCR_FS_0 /*!< 1/4 < fifo_l + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_50_75 DMA_SxFCR_FS_1 /*!< 1/2 < fifo_l + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_75_100 (DMA_SxFCR_FS_1 | DMA_SxFCR_FS_0) /*!< 3/4 < fifo_l + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_EMPTY DMA_SxFCR_FS_2 /*!< FIFO is empt + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_FULL (DMA_SxFCR_FS_2 | DMA_SxFCR_FS_0) /*!< FIFO is full + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_FIFOTHRESHOLD FIFOTHRESHOLD + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_1_4 0x00000000U /*!< FIFO thresho + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_1_2 DMA_SxFCR_FTH_0 /*!< FIFO thresho + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_3_4 DMA_SxFCR_FTH_1 /*!< FIFO thresho + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_FULL DMA_SxFCR_FTH /*!< FIFO thresho + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_CURRENTTARGETMEM CURRENTTARGETMEM + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CURRENTTARGETMEM0 0x00000000U /*!< Set CurrentT + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CURRENTTARGETMEM1 DMA_SxCR_CT /*!< Set CurrentT + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + ARM GAS /tmp/ccdsDELB.s page 308 + + + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported macro ------------------------------------------------------------*/ + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Write a value in DMA register + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __INSTANCE__ DMA Instance + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __REG__ Register to be written + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __VALUE__ Value to be written in the register + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Read a value in DMA register + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __INSTANCE__ DMA Instance + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __REG__ Register to be read + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Register value + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxStreamy + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Convert DMAx_Streamy into DMAx + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __STREAM_INSTANCE__ DMAx_Streamy + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval DMAx + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __LL_DMA_GET_INSTANCE(__STREAM_INSTANCE__) \ + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__STREAM_INSTANCE__) > ((uint32_t)DMA1_Stream7)) ? DMA2 : DMA1) + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Convert DMAx_Streamy into LL_DMA_STREAM_y + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __STREAM_INSTANCE__ DMAx_Streamy + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval LL_DMA_CHANNEL_y + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __LL_DMA_GET_STREAM(__STREAM_INSTANCE__) \ + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream0)) ? LL_DMA_STREAM_0 : \ + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream0)) ? LL_DMA_STREAM_0 : \ + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream1)) ? LL_DMA_STREAM_1 : \ + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream1)) ? LL_DMA_STREAM_1 : \ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream2)) ? LL_DMA_STREAM_2 : \ + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream2)) ? LL_DMA_STREAM_2 : \ + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream3)) ? LL_DMA_STREAM_3 : \ + ARM GAS /tmp/ccdsDELB.s page 309 + + + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream3)) ? LL_DMA_STREAM_3 : \ + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream4)) ? LL_DMA_STREAM_4 : \ + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream4)) ? LL_DMA_STREAM_4 : \ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream5)) ? LL_DMA_STREAM_5 : \ + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream5)) ? LL_DMA_STREAM_5 : \ + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream6)) ? LL_DMA_STREAM_6 : \ + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream6)) ? LL_DMA_STREAM_6 : \ + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** LL_DMA_STREAM_7) + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Convert DMA Instance DMAx and LL_DMA_STREAM_y into DMAx_Streamy + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __DMA_INSTANCE__ DMAx + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __STREAM__ LL_DMA_STREAM_y + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval DMAx_Streamy + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __LL_DMA_GET_STREAM_INSTANCE(__DMA_INSTANCE__, __STREAM__) \ + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** DMA2_Stream7) + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported functions --------------------------------------------------------*/ + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EF_Configuration Configuration + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable DMA stream. + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR EN LL_DMA_EnableStream + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + ARM GAS /tmp/ccdsDELB.s page 310 + + + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableStream(DMA_TypeDef *DMAx, uint32_t Stream) + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Disable DMA stream. + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR EN LL_DMA_DisableStream + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_DisableStream(DMA_TypeDef *DMAx, uint32_t Stream) + 4675 .loc 6 517 22 view .LVU1601 + 4676 .LBB466: + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 4677 .loc 6 519 3 view .LVU1602 + 4678 00cc 03F51433 add r3, r3, #151552 + 4679 00d0 D3F8B820 ldr r2, [r3, #184] + 4680 00d4 22F00102 bic r2, r2, #1 + 4681 00d8 C3F8B820 str r2, [r3, #184] + 4682 .LVL337: + 4683 .loc 6 519 3 is_stmt 0 view .LVU1603 + 4684 .LBE466: + 4685 .LBE465: +1519:Src/main.c **** LL_DMA_ClearFlag_TE7(DMA2); + 4686 .loc 2 1519 3 is_stmt 1 view .LVU1604 + 4687 .LBB467: + 4688 .LBI467: + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Check if DMA stream is enabled or disabled. + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR EN LL_DMA_IsEnabledStream + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + ARM GAS /tmp/ccdsDELB.s page 311 + + + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsEnabledStream(DMA_TypeDef *DMAx, uint32_t Stream) + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Configure all parameters linked to DMA transfer. + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DIR LL_DMA_ConfigTransfer\n + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR CIRC LL_DMA_ConfigTransfer\n + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PINC LL_DMA_ConfigTransfer\n + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR MINC LL_DMA_ConfigTransfer\n + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PSIZE LL_DMA_ConfigTransfer\n + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR MSIZE LL_DMA_ConfigTransfer\n + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PL LL_DMA_ConfigTransfer\n + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PFCTRL LL_DMA_ConfigTransfer + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Configuration This parameter must be a combination of all the following values: + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH o + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR or @ref LL_DMA_MODE_PFCTRL + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDAT + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDAT + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HI + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** *@retval None + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Configurati + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_Sx + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** Configuration); + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Data transfer direction (read from peripheral or from memory). + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DIR LL_DMA_SetDataTransferDirection + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + ARM GAS /tmp/ccdsDELB.s page 312 + + + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Direction This parameter can be one of the following values: + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Data transfer direction (read from peripheral or from memory). + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DIR LL_DMA_GetDataTransferDirection + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream) + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set DMA mode normal, circular or peripheral flow control. + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CIRC LL_DMA_SetMode\n + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PFCTRL LL_DMA_SetMode + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Mode This parameter can be one of the following values: + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_NORMAL + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_CIRCULAR + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_PFCTRL + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 313 + + + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mode) + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get DMA mode normal, circular or peripheral flow control. + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CIRC LL_DMA_GetMode\n + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PFCTRL LL_DMA_GetMode + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_NORMAL + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_CIRCULAR + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_PFCTRL + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Stream) + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral increment mode. + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINC LL_DMA_SetPeriphIncMode + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param IncrementMode This parameter can be one of the following values: + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_NOINCREMENT + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_INCREMENT + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Increment + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral increment mode. + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINC LL_DMA_GetPeriphIncMode + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + ARM GAS /tmp/ccdsDELB.s page 314 + + + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_NOINCREMENT + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_INCREMENT + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream) + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory increment mode. + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MINC LL_DMA_SetMemoryIncMode + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param IncrementMode This parameter can be one of the following values: + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_NOINCREMENT + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_INCREMENT + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Increment + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory increment mode. + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MINC LL_DMA_GetMemoryIncMode + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_NOINCREMENT + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_INCREMENT + ARM GAS /tmp/ccdsDELB.s page 315 + + + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream) + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral size. + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PSIZE LL_DMA_SetPeriphSize + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Size This parameter can be one of the following values: + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_BYTE + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_WORD + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral size. + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PSIZE LL_DMA_GetPeriphSize + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_BYTE + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_WORD + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream) + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory size. + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MSIZE LL_DMA_SetMemorySize + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + ARM GAS /tmp/ccdsDELB.s page 316 + + + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Size This parameter can be one of the following values: + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_BYTE + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_WORD + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory size. + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MSIZE LL_DMA_GetMemorySize + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_BYTE + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_WORD + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream) + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral increment offset size. + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINCOS LL_DMA_SetIncOffsetSize + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param OffsetSize This parameter can be one of the following values: + ARM GAS /tmp/ccdsDELB.s page 317 + + + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_PSIZE + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4 + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t OffsetSiz + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral increment offset size. + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINCOS LL_DMA_GetIncOffsetSize + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_PSIZE + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4 + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream) + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Stream priority level. + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PL LL_DMA_SetStreamPriorityLevel + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Priority This parameter can be one of the following values: + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_LOW + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_MEDIUM + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_HIGH + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_VERYHIGH + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pr + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + ARM GAS /tmp/ccdsDELB.s page 318 + + + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream priority level. + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PL LL_DMA_GetStreamPriorityLevel + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_LOW + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_MEDIUM + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_HIGH + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_VERYHIGH + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream) + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Number of data to transfer. + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll NDTR NDT LL_DMA_SetDataLength + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This action has no effect if + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * stream is enabled. + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param NbData Between 0 to 0xFFFFFFFF + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t NbData) + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->NDTR, + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Number of data to transfer. + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll NDTR NDT LL_DMA_GetDataLength + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Once the stream is enabled, the return value indicate the + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * remaining bytes to be transmitted. + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + ARM GAS /tmp/ccdsDELB.s page 319 + + + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef* DMAx, uint32_t Stream) + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Select Channel number associated to the Stream. +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CHSEL LL_DMA_SetChannelSelection +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Channel This parameter can be one of the following values: +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_0 +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_1 +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_2 +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_3 +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_4 +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_5 +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_6 +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_7 +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_8 (*) +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_9 (*) +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_10 (*) +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_11 (*) +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_12 (*) +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_13 (*) +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_14 (*) +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_15 (*) +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * (*) value not defined in all devices. +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetChannelSelection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Channe +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Channel number associated to the Stream. +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CHSEL LL_DMA_GetChannelSelection +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + ARM GAS /tmp/ccdsDELB.s page 320 + + +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_0 +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_1 +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_2 +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_3 +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_4 +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_5 +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_6 +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_7 +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_8 (*) +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_9 (*) +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_10 (*) +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_11 (*) +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_12 (*) +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_13 (*) +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_14 (*) +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_15 (*) +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * (*) value not defined in all devices. +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetChannelSelection(DMA_TypeDef *DMAx, uint32_t Stream) +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory burst transfer configuration. +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MBURST LL_DMA_SetMemoryBurstxfer +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Mburst This parameter can be one of the following values: +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_SINGLE +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC4 +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC8 +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC16 +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mburst) +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + ARM GAS /tmp/ccdsDELB.s page 321 + + +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory burst transfer configuration. +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MBURST LL_DMA_GetMemoryBurstxfer +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_SINGLE +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC4 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC8 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC16 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream) +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral burst transfer configuration. +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PBURST LL_DMA_SetPeriphBurstxfer +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Pburst This parameter can be one of the following values: +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_SINGLE +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC4 +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC8 +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC16 +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pburst) +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral burst transfer configuration. +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PBURST LL_DMA_GetPeriphBurstxfer +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + ARM GAS /tmp/ccdsDELB.s page 322 + + +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_SINGLE +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC4 +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC8 +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC16 +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream) +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0. +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CT LL_DMA_SetCurrentTargetMem +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param CurrentMemory This parameter can be one of the following values: +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM0 +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM1 +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Curren +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0. +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CT LL_DMA_GetCurrentTargetMem +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM0 +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM1 +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream) +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + ARM GAS /tmp/ccdsDELB.s page 323 + + +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable the double buffer mode. +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DBM LL_DMA_EnableDoubleBufferMode +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Disable the double buffer mode. +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DBM LL_DMA_DisableDoubleBufferMode +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get FIFO status. +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FS LL_DMA_GetFIFOStatus +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + ARM GAS /tmp/ccdsDELB.s page 324 + + +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_0_25 +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_25_50 +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_50_75 +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_75_100 +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_EMPTY +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_FULL +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(DMA_TypeDef *DMAx, uint32_t Stream) +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Disable Fifo mode. +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR DMDIS LL_DMA_DisableFifoMode +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_DisableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable Fifo mode. +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR DMDIS LL_DMA_EnableFifoMode +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DM +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Select FIFO threshold. +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FTH LL_DMA_SetFIFOThreshold +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + ARM GAS /tmp/ccdsDELB.s page 325 + + +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Threshold This parameter can be one of the following values: +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Threshold +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get FIFO threshold. +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FTH LL_DMA_GetFIFOThreshold +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream) +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Configure the FIFO . +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FTH LL_DMA_ConfigFifo\n +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * FCR DMDIS LL_DMA_ConfigFifo +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + ARM GAS /tmp/ccdsDELB.s page 326 + + +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param FifoMode This parameter can be one of the following values: +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOMODE_ENABLE +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOMODE_DISABLE +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param FifoThreshold This parameter can be one of the following values: +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ConfigFifo(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t FifoMode, uint3 +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Configure the Source and Destination addresses. +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA stream is enabled. +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_ConfigAddresses\n +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * PAR PA LL_DMA_ConfigAddresses +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param SrcAddress Between 0 to 0xFFFFFFFF +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DstAddress Between 0 to 0xFFFFFFFF +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Direction This parameter can be one of the following values: +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t SrcAddress +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Direction Memory to Periph */ +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Direction Periph to Memory and Memory to Memory */ +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** else +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set the Memory address. + ARM GAS /tmp/ccdsDELB.s page 327 + + +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_SetMemoryAddress +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMO +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA channel is enabled. +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param MemoryAddress Between 0 to 0xFFFFFFFF +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAdd +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR, +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set the Peripheral address. +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll PAR PA LL_DMA_SetPeriphAddress +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMO +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA channel is enabled. +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param PeriphAddress Between 0 to 0xFFFFFFFF +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t PeriphAdd +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, P +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Memory address. +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_GetMemoryAddress +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMO +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + ARM GAS /tmp/ccdsDELB.s page 328 + + +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef* DMAx, uint32_t Stream) +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Peripheral address. +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll PAR PA LL_DMA_GetPeriphAddress +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMO +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef* DMAx, uint32_t Stream) +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_REG(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream]))) +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set the Memory to Memory Source address. +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll PAR PA LL_DMA_SetM2MSrcAddress +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA channel is enabled. +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param MemoryAddress Between 0 to 0xFFFFFFFF +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAdd +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, M +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set the Memory to Memory Destination address. +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_SetM2MDstAddress +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA channel is enabled. + ARM GAS /tmp/ccdsDELB.s page 329 + + +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param MemoryAddress Between 0 to 0xFFFFFFFF +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAdd +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Memory to Memory Source address. +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll PAR PA LL_DMA_GetM2MSrcAddress +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef* DMAx, uint32_t Stream) +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_REG(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])) +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Memory to Memory Destination address. +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_GetM2MDstAddress +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef* DMAx, uint32_t Stream) +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + ARM GAS /tmp/ccdsDELB.s page 330 + + +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))-> +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory 1 address (used in case of Double buffer mode). +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M1AR M1A LL_DMA_SetMemory1Address +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Address Between 0 to 0xFFFFFFFF +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Address) +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M1AR, +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory 1 address (used in case of Double buffer mode). +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M1AR M1A LL_DMA_GetMemory1Address +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream) +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M1AR); +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 0 half transfer flag. +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR HTIF0 LL_DMA_IsActiveFlag_HT0 +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). + ARM GAS /tmp/ccdsDELB.s page 331 + + +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT0(DMA_TypeDef *DMAx) +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF0)==(DMA_LISR_HTIF0)); +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 1 half transfer flag. +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR HTIF1 LL_DMA_IsActiveFlag_HT1 +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF1)==(DMA_LISR_HTIF1)); +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 2 half transfer flag. +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR HTIF2 LL_DMA_IsActiveFlag_HT2 +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF2)==(DMA_LISR_HTIF2)); +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 3 half transfer flag. +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR HTIF3 LL_DMA_IsActiveFlag_HT3 +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF3)==(DMA_LISR_HTIF3)); +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 4 half transfer flag. +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR HTIF4 LL_DMA_IsActiveFlag_HT4 +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF4)==(DMA_HISR_HTIF4)); +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 5 half transfer flag. +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR HTIF0 LL_DMA_IsActiveFlag_HT5 +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) + ARM GAS /tmp/ccdsDELB.s page 332 + + +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF5)==(DMA_HISR_HTIF5)); +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 6 half transfer flag. +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR HTIF6 LL_DMA_IsActiveFlag_HT6 +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF6)==(DMA_HISR_HTIF6)); +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 7 half transfer flag. +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR HTIF7 LL_DMA_IsActiveFlag_HT7 +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF7)==(DMA_HISR_HTIF7)); +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 0 transfer complete flag. +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TCIF0 LL_DMA_IsActiveFlag_TC0 +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC0(DMA_TypeDef *DMAx) +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF0)==(DMA_LISR_TCIF0)); +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 1 transfer complete flag. +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TCIF1 LL_DMA_IsActiveFlag_TC1 +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF1)==(DMA_LISR_TCIF1)); +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 2 transfer complete flag. +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TCIF2 LL_DMA_IsActiveFlag_TC2 +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF2)==(DMA_LISR_TCIF2)); + ARM GAS /tmp/ccdsDELB.s page 333 + + +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 3 transfer complete flag. +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TCIF3 LL_DMA_IsActiveFlag_TC3 +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF3)==(DMA_LISR_TCIF3)); +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 4 transfer complete flag. +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TCIF4 LL_DMA_IsActiveFlag_TC4 +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF4)==(DMA_HISR_TCIF4)); +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 5 transfer complete flag. +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TCIF0 LL_DMA_IsActiveFlag_TC5 +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF5)==(DMA_HISR_TCIF5)); +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 6 transfer complete flag. +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TCIF6 LL_DMA_IsActiveFlag_TC6 +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF6)==(DMA_HISR_TCIF6)); +1829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 7 transfer complete flag. +1833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TCIF7 LL_DMA_IsActiveFlag_TC7 +1834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) +1838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF7)==(DMA_HISR_TCIF7)); +1840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + ARM GAS /tmp/ccdsDELB.s page 334 + + +1842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 0 transfer error flag. +1844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TEIF0 LL_DMA_IsActiveFlag_TE0 +1845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE0(DMA_TypeDef *DMAx) +1849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF0)==(DMA_LISR_TEIF0)); +1851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 1 transfer error flag. +1855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TEIF1 LL_DMA_IsActiveFlag_TE1 +1856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) +1860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF1)==(DMA_LISR_TEIF1)); +1862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 2 transfer error flag. +1866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TEIF2 LL_DMA_IsActiveFlag_TE2 +1867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) +1871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF2)==(DMA_LISR_TEIF2)); +1873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 3 transfer error flag. +1877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TEIF3 LL_DMA_IsActiveFlag_TE3 +1878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) +1882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF3)==(DMA_LISR_TEIF3)); +1884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 4 transfer error flag. +1888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TEIF4 LL_DMA_IsActiveFlag_TE4 +1889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) +1893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF4)==(DMA_HISR_TEIF4)); +1895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 5 transfer error flag. + ARM GAS /tmp/ccdsDELB.s page 335 + + +1899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TEIF0 LL_DMA_IsActiveFlag_TE5 +1900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) +1904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF5)==(DMA_HISR_TEIF5)); +1906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 6 transfer error flag. +1910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TEIF6 LL_DMA_IsActiveFlag_TE6 +1911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) +1915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF6)==(DMA_HISR_TEIF6)); +1917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 7 transfer error flag. +1921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TEIF7 LL_DMA_IsActiveFlag_TE7 +1922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) +1926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF7)==(DMA_HISR_TEIF7)); +1928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 0 direct mode error flag. +1932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR DMEIF0 LL_DMA_IsActiveFlag_DME0 +1933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME0(DMA_TypeDef *DMAx) +1937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF0)==(DMA_LISR_DMEIF0)); +1939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 1 direct mode error flag. +1943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR DMEIF1 LL_DMA_IsActiveFlag_DME1 +1944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME1(DMA_TypeDef *DMAx) +1948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF1)==(DMA_LISR_DMEIF1)); +1950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 2 direct mode error flag. +1954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR DMEIF2 LL_DMA_IsActiveFlag_DME2 +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + ARM GAS /tmp/ccdsDELB.s page 336 + + +1956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME2(DMA_TypeDef *DMAx) +1959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF2)==(DMA_LISR_DMEIF2)); +1961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 3 direct mode error flag. +1965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR DMEIF3 LL_DMA_IsActiveFlag_DME3 +1966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME3(DMA_TypeDef *DMAx) +1970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF3)==(DMA_LISR_DMEIF3)); +1972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 4 direct mode error flag. +1976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR DMEIF4 LL_DMA_IsActiveFlag_DME4 +1977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME4(DMA_TypeDef *DMAx) +1981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF4)==(DMA_HISR_DMEIF4)); +1983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 5 direct mode error flag. +1987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR DMEIF0 LL_DMA_IsActiveFlag_DME5 +1988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME5(DMA_TypeDef *DMAx) +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF5)==(DMA_HISR_DMEIF5)); +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 6 direct mode error flag. +1998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR DMEIF6 LL_DMA_IsActiveFlag_DME6 +1999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME6(DMA_TypeDef *DMAx) +2003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF6)==(DMA_HISR_DMEIF6)); +2005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 7 direct mode error flag. +2009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR DMEIF7 LL_DMA_IsActiveFlag_DME7 +2010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + ARM GAS /tmp/ccdsDELB.s page 337 + + +2013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME7(DMA_TypeDef *DMAx) +2014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF7)==(DMA_HISR_DMEIF7)); +2016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 0 FIFO error flag. +2020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR FEIF0 LL_DMA_IsActiveFlag_FE0 +2021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE0(DMA_TypeDef *DMAx) +2025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF0)==(DMA_LISR_FEIF0)); +2027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 1 FIFO error flag. +2031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR FEIF1 LL_DMA_IsActiveFlag_FE1 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE1(DMA_TypeDef *DMAx) +2036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF1)==(DMA_LISR_FEIF1)); +2038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 2 FIFO error flag. +2042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR FEIF2 LL_DMA_IsActiveFlag_FE2 +2043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE2(DMA_TypeDef *DMAx) +2047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF2)==(DMA_LISR_FEIF2)); +2049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 3 FIFO error flag. +2053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR FEIF3 LL_DMA_IsActiveFlag_FE3 +2054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE3(DMA_TypeDef *DMAx) +2058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF3)==(DMA_LISR_FEIF3)); +2060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 4 FIFO error flag. +2064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR FEIF4 LL_DMA_IsActiveFlag_FE4 +2065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE4(DMA_TypeDef *DMAx) +2069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + ARM GAS /tmp/ccdsDELB.s page 338 + + +2070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF4)==(DMA_HISR_FEIF4)); +2071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 5 FIFO error flag. +2075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR FEIF0 LL_DMA_IsActiveFlag_FE5 +2076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE5(DMA_TypeDef *DMAx) +2080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF5)==(DMA_HISR_FEIF5)); +2082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 6 FIFO error flag. +2086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR FEIF6 LL_DMA_IsActiveFlag_FE6 +2087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE6(DMA_TypeDef *DMAx) +2091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF6)==(DMA_HISR_FEIF6)); +2093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 7 FIFO error flag. +2097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR FEIF7 LL_DMA_IsActiveFlag_FE7 +2098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE7(DMA_TypeDef *DMAx) +2102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF7)==(DMA_HISR_FEIF7)); +2104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 0 half transfer flag. +2108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CHTIF0 LL_DMA_ClearFlag_HT0 +2109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT0(DMA_TypeDef *DMAx) +2113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF0); +2115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 1 half transfer flag. +2119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CHTIF1 LL_DMA_ClearFlag_HT1 +2120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx) +2124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF1); +2126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + ARM GAS /tmp/ccdsDELB.s page 339 + + +2127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 2 half transfer flag. +2130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CHTIF2 LL_DMA_ClearFlag_HT2 +2131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx) +2135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF2); +2137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 3 half transfer flag. +2141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CHTIF3 LL_DMA_ClearFlag_HT3 +2142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx) +2146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF3); +2148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 4 half transfer flag. +2152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CHTIF4 LL_DMA_ClearFlag_HT4 +2153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx) +2157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF4); +2159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 5 half transfer flag. +2163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CHTIF5 LL_DMA_ClearFlag_HT5 +2164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx) +2168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF5); +2170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 6 half transfer flag. +2174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CHTIF6 LL_DMA_ClearFlag_HT6 +2175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx) +2179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF6); +2181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + ARM GAS /tmp/ccdsDELB.s page 340 + + +2184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 7 half transfer flag. +2185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CHTIF7 LL_DMA_ClearFlag_HT7 +2186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx) +2190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF7); +2192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 0 transfer complete flag. +2196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTCIF0 LL_DMA_ClearFlag_TC0 +2197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC0(DMA_TypeDef *DMAx) +2201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF0); +2203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 1 transfer complete flag. +2207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTCIF1 LL_DMA_ClearFlag_TC1 +2208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx) +2212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF1); +2214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 2 transfer complete flag. +2218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTCIF2 LL_DMA_ClearFlag_TC2 +2219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx) +2223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF2); +2225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 3 transfer complete flag. +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTCIF3 LL_DMA_ClearFlag_TC3 +2230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx) +2234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF3); +2236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 4 transfer complete flag. +2240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTCIF4 LL_DMA_ClearFlag_TC4 + ARM GAS /tmp/ccdsDELB.s page 341 + + +2241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx) +2245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF4); +2247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 5 transfer complete flag. +2251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTCIF5 LL_DMA_ClearFlag_TC5 +2252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx) +2256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF5); +2258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 6 transfer complete flag. +2262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTCIF6 LL_DMA_ClearFlag_TC6 +2263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx) +2267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF6); +2269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 7 transfer complete flag. +2273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTCIF7 LL_DMA_ClearFlag_TC7 +2274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx) + 4689 .loc 6 2277 22 view .LVU1605 + 4690 .LBB468: +2278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF7); + 4691 .loc 6 2279 3 view .LVU1606 + 4692 00dc 4FF00062 mov r2, #134217728 + 4693 00e0 DA60 str r2, [r3, #12] + 4694 .LVL338: + 4695 .loc 6 2279 3 is_stmt 0 view .LVU1607 + 4696 .LBE468: + 4697 .LBE467: +1520:Src/main.c **** LL_USART_EnableDMAReq_TX(USART1); + 4698 .loc 2 1520 3 is_stmt 1 view .LVU1608 + 4699 .LBB469: + 4700 .LBI469: +2280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 0 transfer error flag. +2284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTEIF0 LL_DMA_ClearFlag_TE0 + ARM GAS /tmp/ccdsDELB.s page 342 + + +2285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE0(DMA_TypeDef *DMAx) +2289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF0); +2291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 1 transfer error flag. +2295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTEIF1 LL_DMA_ClearFlag_TE1 +2296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx) +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF1); +2302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 2 transfer error flag. +2306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTEIF2 LL_DMA_ClearFlag_TE2 +2307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx) +2311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF2); +2313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 3 transfer error flag. +2317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTEIF3 LL_DMA_ClearFlag_TE3 +2318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx) +2322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF3); +2324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 4 transfer error flag. +2328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTEIF4 LL_DMA_ClearFlag_TE4 +2329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx) +2333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF4); +2335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 5 transfer error flag. +2339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTEIF5 LL_DMA_ClearFlag_TE5 +2340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 343 + + +2342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx) +2344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF5); +2346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 6 transfer error flag. +2350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTEIF6 LL_DMA_ClearFlag_TE6 +2351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx) +2355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF6); +2357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 7 transfer error flag. +2361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTEIF7 LL_DMA_ClearFlag_TE7 +2362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx) + 4701 .loc 6 2365 22 view .LVU1609 + 4702 .LBB470: +2366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF7); + 4703 .loc 6 2367 3 view .LVU1610 + 4704 00e2 4FF00072 mov r2, #33554432 + 4705 00e6 DA60 str r2, [r3, #12] + 4706 .LVL339: + 4707 .L173: + 4708 .loc 6 2367 3 is_stmt 0 view .LVU1611 + 4709 .LBE470: + 4710 .LBE469: + 4711 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @file stm32f7xx_ll_usart.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Header file of USART LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #ifndef STM32F7xx_LL_USART_H + ARM GAS /tmp/ccdsDELB.s page 344 + + + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define STM32F7xx_LL_USART_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART1) || defined(USART2) || defined(USART3) || defined(USART6) \ + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** || defined(UART4) || defined(UART5) || defined(UART7) || defined(UART8) + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL USART + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private types -------------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private variables ---------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private constants ---------------------------------------------------------*/ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Private_Constants USART Private Constants + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private macros ------------------------------------------------------------*/ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USE_FULL_LL_DRIVER) + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Private_Macros USART Private Macros + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /*USE_FULL_LL_DRIVER*/ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported types ------------------------------------------------------------*/ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USE_FULL_LL_DRIVER) + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_ES_INIT USART Exported Init structures + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief LL USART Init Structure definition + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** typedef struct + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t BaudRate; /*!< This field defines expected Usart communication baud rat + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetBaudRate().*/ + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/ccdsDELB.s page 345 + + + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t DataWidth; /*!< Specifies the number of data bits transmitted or receive + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_DATAWI + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetDataWidth().*/ + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t StopBits; /*!< Specifies the number of stop bits transmitted. + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_STOPBI + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetStopBitsLength().*/ + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t Parity; /*!< Specifies the parity mode. + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_PARITY + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetParity().*/ + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t TransferDirection; /*!< Specifies whether the Receive and/or Transmit mode is en + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_DIRECT + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetTransferDirection().*/ + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t HardwareFlowControl; /*!< Specifies whether the hardware flow control mode is enab + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_HWCONT + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetHWFlowCtrl().*/ + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t OverSampling; /*!< Specifies whether USART oversampling mode is 16 or 8. + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_OVERSA + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetOverSampling().*/ + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } LL_USART_InitTypeDef; + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief LL USART Clock Init Structure definition + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** typedef struct + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t ClockOutput; /*!< Specifies whether the USART clock is enabled or disabled + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_CLOCK. + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** @ref LL_USART_EnableSCLKOutput() or @ref LL_USART_Disabl + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t ClockPolarity; /*!< Specifies the steady state of the serial clock. + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_POLARI + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** functions @ref LL_USART_SetClockPolarity(). + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/ccdsDELB.s page 346 + + + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t ClockPhase; /*!< Specifies the clock transition on which the bit capture + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_PHASE. + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** functions @ref LL_USART_SetClockPhase(). + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t LastBitClockPulse; /*!< Specifies whether the clock pulse corresponding to the l + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** data bit (MSB) has to be output on the SCLK pin in synch + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_LASTCL + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** functions @ref LL_USART_SetLastClkPulseOutput(). + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } LL_USART_ClockInitTypeDef; + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USE_FULL_LL_DRIVER */ + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported constants --------------------------------------------------------*/ + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Exported_Constants USART Exported Constants + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_CLEAR_FLAG Clear Flags Defines + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Flags defines which can be used with LL_USART_WriteReg function + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_PECF USART_ICR_PECF /*!< Parity error cle + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_FECF USART_ICR_FECF /*!< Framing error cl + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_NCF USART_ICR_NCF /*!< Noise error dete + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_ORECF USART_ICR_ORECF /*!< Overrun error cl + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_IDLECF USART_ICR_IDLECF /*!< Idle line detect + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_TCCF USART_ICR_TCCF /*!< Transmission com + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_TCBGTCF USART_ICR_TCBGTCF /*!< Transmission com + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_LBDCF USART_ICR_LBDCF /*!< LIN break detect + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_CTSCF USART_ICR_CTSCF /*!< CTS clear flag * + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_RTOCF USART_ICR_RTOCF /*!< Receiver timeout + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_EOBCF USART_ICR_EOBCF /*!< End of block cle + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_CMCF USART_ICR_CMCF /*!< Character match + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_WUCF USART_ICR_WUCF /*!< Wakeup from Stop + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_GET_FLAG Get Flags Defines + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Flags defines which can be used with LL_USART_ReadReg function + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + ARM GAS /tmp/ccdsDELB.s page 347 + + + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_PE USART_ISR_PE /*!< Parity error fla + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_FE USART_ISR_FE /*!< Framing error fl + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_NE USART_ISR_NE /*!< Noise detected f + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_ORE USART_ISR_ORE /*!< Overrun error fl + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_IDLE USART_ISR_IDLE /*!< Idle line detect + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_RXNE USART_ISR_RXNE /*!< Read data regist + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TC USART_ISR_TC /*!< Transmission com + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TXE USART_ISR_TXE /*!< Transmit data re + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_LBDF USART_ISR_LBDF /*!< LIN break detect + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_CTSIF USART_ISR_CTSIF /*!< CTS interrupt fl + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_CTS USART_ISR_CTS /*!< CTS flag */ + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_RTOF USART_ISR_RTOF /*!< Receiver timeout + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_EOBF USART_ISR_EOBF /*!< End of block fla + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_ABRE USART_ISR_ABRE /*!< Auto baud rate e + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_ABRF USART_ISR_ABRF /*!< Auto baud rate f + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_BUSY USART_ISR_BUSY /*!< Busy flag */ + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_CMF USART_ISR_CMF /*!< Character match + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_SBKF USART_ISR_SBKF /*!< Send break flag + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_RWU USART_ISR_RWU /*!< Receiver wakeup + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_WUF USART_ISR_WUF /*!< Wakeup from Stop + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TEACK USART_ISR_TEACK /*!< Transmit enable + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_ISR_REACK) + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_REACK USART_ISR_REACK /*!< Receive enable a + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_ISR_REACK */ + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TCBGT USART_ISR_TCBGT /*!< Transmission com + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_IT IT Defines + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief IT defines which can be used with LL_USART_ReadReg and LL_USART_WriteReg functions + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_IDLEIE USART_CR1_IDLEIE /*!< IDLE interrupt e + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_RXNEIE USART_CR1_RXNEIE /*!< Read data regist + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_TCIE USART_CR1_TCIE /*!< Transmission com + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_TXEIE USART_CR1_TXEIE /*!< Transmit data re + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_PEIE USART_CR1_PEIE /*!< Parity error */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_CMIE USART_CR1_CMIE /*!< Character match + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_RTOIE USART_CR1_RTOIE /*!< Receiver timeout + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_EOBIE USART_CR1_EOBIE /*!< End of Block int + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR2_LBDIE USART_CR2_LBDIE /*!< LIN break detect + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_EIE USART_CR3_EIE /*!< Error interrupt + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_CTSIE USART_CR3_CTSIE /*!< CTS interrupt en + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_WUFIE USART_CR3_WUFIE /*!< Wakeup from Stop + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) + ARM GAS /tmp/ccdsDELB.s page 348 + + + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_TCBGTIE USART_CR3_TCBGTIE /*!< Transmission com + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DIRECTION Communication Direction + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_NONE 0x00000000U /*!< Transmitter + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_RX USART_CR1_RE /*!< Transmitter + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_TX USART_CR1_TE /*!< Transmitter + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< Transmitter + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_PARITY Parity Control + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PARITY_NONE 0x00000000U /*!< Parity co + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PARITY_EVEN USART_CR1_PCE /*!< Parity co + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< Parity co + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_WAKEUP Wakeup + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_IDLELINE 0x00000000U /*!< USART wake up from Mute + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ADDRESSMARK USART_CR1_WAKE /*!< USART wake up from Mute + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DATAWIDTH Datawidth + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DATAWIDTH_7B USART_CR1_M1 /*!< 7 bits word length : S + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DATAWIDTH_8B 0x00000000U /*!< 8 bits word length : S + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DATAWIDTH_9B USART_CR1_M0 /*!< 9 bits word length : S + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_OVERSAMPLING Oversampling + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_OVERSAMPLING_16 0x00000000U /*!< Oversampling by 16 */ + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_OVERSAMPLING_8 USART_CR1_OVER8 /*!< Oversampling by 8 */ + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USE_FULL_LL_DRIVER) + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_CLOCK Clock Signal + ARM GAS /tmp/ccdsDELB.s page 349 + + + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CLOCK_DISABLE 0x00000000U /*!< Clock signal not provid + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CLOCK_ENABLE USART_CR2_CLKEN /*!< Clock signal provided * + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /*USE_FULL_LL_DRIVER*/ + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_LASTCLKPULSE Last Clock Pulse + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LASTCLKPULSE_NO_OUTPUT 0x00000000U /*!< The clock pulse of the l + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LASTCLKPULSE_OUTPUT USART_CR2_LBCL /*!< The clock pulse of the l + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_PHASE Clock Phase + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PHASE_1EDGE 0x00000000U /*!< The first clock transiti + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PHASE_2EDGE USART_CR2_CPHA /*!< The second clock transit + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_POLARITY Clock Polarity + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_POLARITY_LOW 0x00000000U /*!< Steady low value on SCLK + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_POLARITY_HIGH USART_CR2_CPOL /*!< Steady high value on SCL + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_STOPBITS Stop Bits + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_0_5 USART_CR2_STOP_0 /*!< 0.5 + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_1 0x00000000U /*!< 1 s + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) /*!< 1.5 + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_2 USART_CR2_STOP_1 /*!< 2 s + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_TXRX TX RX Pins Swap + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXRX_STANDARD 0x00000000U /*!< TX/RX pins are used as d + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXRX_SWAPPED (USART_CR2_SWAP) /*!< TX and RX pins functions + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/ccdsDELB.s page 350 + + + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_RXPIN_LEVEL RX Pin Active Level Inversion + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_RXPIN_LEVEL_STANDARD 0x00000000U /*!< RX pin signal works usin + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_RXPIN_LEVEL_INVERTED (USART_CR2_RXINV) /*!< RX pin signal values are + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_TXPIN_LEVEL TX Pin Active Level Inversion + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXPIN_LEVEL_STANDARD 0x00000000U /*!< TX pin signal works usin + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXPIN_LEVEL_INVERTED (USART_CR2_TXINV) /*!< TX pin signal values are + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_BINARY_LOGIC Binary Data Inversion + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BINARY_LOGIC_POSITIVE 0x00000000U /*!< Logical data from the da + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BINARY_LOGIC_NEGATIVE USART_CR2_DATAINV /*!< Logical data from the da + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_BITORDER Bit Order + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BITORDER_LSBFIRST 0x00000000U /*!< data is transmitted/rece + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BITORDER_MSBFIRST USART_CR2_MSBFIRST /*!< data is transmitted/rece + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_AUTOBAUD_DETECT_ON Autobaud Detection + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_STARTBIT 0x00000000U /*!< Me + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE USART_CR2_ABRMODE_0 /*!< Fa + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME USART_CR2_ABRMODE_1 /*!< 0x + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_55_FRAME (USART_CR2_ABRMODE_1 | USART_CR2_ABRMODE_0) /*!< 0x + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_ADDRESS_DETECT Address Length Detection + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ADDRESS_DETECT_4B 0x00000000U /*!< 4-bit address detection + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ADDRESS_DETECT_7B USART_CR2_ADDM7 /*!< 7-bit address detection + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_HWCONTROL Hardware Control + ARM GAS /tmp/ccdsDELB.s page 351 + + + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_NONE 0x00000000U /*!< CTS and R + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_RTS USART_CR3_RTSE /*!< RTS outpu + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_CTS USART_CR3_CTSE /*!< CTS mode + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /*!< CTS and R + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUS) + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_WAKEUP_ON Wakeup Activation + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ON_ADDRESS 0x00000000U /*!< Wake u + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1 /*!< Wake u + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ON_RXNE (USART_CR3_WUS_0 | USART_CR3_WUS_1) /*!< Wake u + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUS */ + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_IRDA_POWER IrDA Power + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_IRDA_POWER_NORMAL 0x00000000U /*!< IrDA normal power mode * + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_IRDA_POWER_LOW USART_CR3_IRLP /*!< IrDA low power mode */ + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_LINBREAK_DETECT LIN Break Detection Length + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LINBREAK_DETECT_10B 0x00000000U /*!< 10-bit break detection m + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LINBREAK_DETECT_11B USART_CR2_LBDL /*!< 11-bit break detection m + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DE_POLARITY Driver Enable Polarity + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DE_POLARITY_HIGH 0x00000000U /*!< DE signal is active high + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DE_POLARITY_LOW USART_CR3_DEP /*!< DE signal is active low + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DMA_REG_DATA DMA Register Data + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DMA_REG_DATA_TRANSMIT 0x00000000U /*!< Get address of data regis + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DMA_REG_DATA_RECEIVE 0x00000001U /*!< Get address of data regis + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/ccdsDELB.s page 352 + + + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported macro ------------------------------------------------------------*/ + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Exported_Macros USART Exported Macros + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EM_WRITE_READ Common Write and read registers Macros + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Write a value in USART register + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __INSTANCE__ USART Instance + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __REG__ Register to be written + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __VALUE__ Value to be written in the register + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VAL + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Read a value in USART register + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __INSTANCE__ USART Instance + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __REG__ Register to be read + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Register value + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EM_Exported_Macros_Helper Exported_Macros_Helper + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Compute USARTDIV value according to Peripheral Clock and + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * expected Baud Rate in 8 bits sampling mode (32 bits value of USARTDIV is returned) + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __BAUDRATE__ Baud rate value to achieve + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval USARTDIV value to be used for BRR register filling in OverSampling_8 case + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) ((((__PERIPHCLK__)*2U)\ + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ((__BAUDRATE__)/2U))/(__BAUDRATE_ + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Compute USARTDIV value according to Peripheral Clock and + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * expected Baud Rate in 16 bits sampling mode (32 bits value of USARTDIV is returned) + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __BAUDRATE__ Baud rate value to achieve + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval USARTDIV value to be used for BRR register filling in OverSampling_16 case + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/ccdsDELB.s page 353 + + + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define __LL_USART_DIV_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (((__PERIPHCLK__) + ((__BAUDRATE__)/ + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported functions --------------------------------------------------------*/ + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Exported_Functions USART Exported Functions + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration Configuration functions + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART Enable + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UE LL_USART_Enable + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_Enable(USART_TypeDef *USARTx) + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR1, USART_CR1_UE); + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART Disable (all USART prescalers and outputs are disabled) + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When USART is disabled, USART prescalers and outputs are stopped immediately, + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * and current operations are discarded. The configuration of the USART is kept, but all t + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * flags, in the USARTx_ISR are set to their default values. + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UE LL_USART_Disable + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_Disable(USART_TypeDef *USARTx) + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR1, USART_CR1_UE); + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if USART is enabled + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UE LL_USART_IsEnabled + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabled(const USART_TypeDef *USARTx) + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)) ? 1UL : 0UL); + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + ARM GAS /tmp/ccdsDELB.s page 354 + + + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART enabled in STOP Mode. + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is enabled, USART is able to wake up the MCU from Stop mode, provide + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * USART clock selection is HSI or LSE in RCC. + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UESM LL_USART_EnableInStopMode + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableInStopMode(USART_TypeDef *USARTx) + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_UESM); + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART disabled in STOP Mode. + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is disabled, USART is not able to wake up the MCU from Stop mode + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UESM LL_USART_DisableInStopMode + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableInStopMode(USART_TypeDef *USARTx) + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_UESM); + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if USART is enabled in STOP Mode (able to wake up MCU from Stop mode or not) + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UESM LL_USART_IsEnabledInStopMode + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledInStopMode(const USART_TypeDef *USARTx) + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_UESM) == (USART_CR1_UESM)) ? 1UL : 0UL); + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_UCESM) + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART Clock enabled in STOP Mode + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is called, USART Clock is enabled while in STOP mode + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 UCESM LL_USART_EnableClockInStopMode + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableClockInStopMode(USART_TypeDef *USARTx) + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_UCESM); + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART clock disabled in STOP Mode + ARM GAS /tmp/ccdsDELB.s page 355 + + + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is called, USART Clock is disabled while in STOP mode + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 UCESM LL_USART_DisableClockInStopMode + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableClockInStopMode(USART_TypeDef *USARTx) + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_UCESM); + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if USART clock is enabled in STOP Mode + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 UCESM LL_USART_IsClockEnabledInStopMode + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsClockEnabledInStopMode(const USART_TypeDef *USARTx) + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (READ_BIT(USARTx->CR3, USART_CR3_UCESM) == (USART_CR3_UCESM)); + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_UCESM */ + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM*/ + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Receiver Enable (Receiver is enabled and begins searching for a start bit) + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_EnableDirectionRx + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDirectionRx(USART_TypeDef *USARTx) + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RE); + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Receiver Disable + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_DisableDirectionRx + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDirectionRx(USART_TypeDef *USARTx) + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RE); + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Transmitter Enable + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TE LL_USART_EnableDirectionTx + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDirectionTx(USART_TypeDef *USARTx) + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TE); + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/ccdsDELB.s page 356 + + + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Transmitter Disable + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TE LL_USART_DisableDirectionTx + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDirectionTx(USART_TypeDef *USARTx) + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TE); + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure simultaneously enabled/disabled states + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * of Transmitter and Receiver + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_SetTransferDirection\n + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 TE LL_USART_SetTransferDirection + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param TransferDirection This parameter can be one of the following values: + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_NONE + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_RX + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX_RX + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTransferDirection(USART_TypeDef *USARTx, uint32_t TransferDirectio + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_MODIFY_REG(USARTx->CR1, USART_CR1_RE | USART_CR1_TE, TransferDirection); + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return enabled/disabled states of Transmitter and Receiver + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_GetTransferDirection\n + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 TE LL_USART_GetTransferDirection + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_NONE + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_RX + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX_RX + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTransferDirection(const USART_TypeDef *USARTx) + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_RE | USART_CR1_TE)); + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Parity (enabled/disabled and parity mode if enabled). + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note This function selects if hardware parity control (generation and detection) is enabled + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * When the parity control is enabled (Odd or Even), computed parity bit is inserted at th + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (9th or 8th bit depending on data width) and parity is checked on the received data. + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PS LL_USART_SetParity\n + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 PCE LL_USART_SetParity + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Parity This parameter can be one of the following values: + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_NONE + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_EVEN + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_ODD + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 357 + + + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetParity(USART_TypeDef *USARTx, uint32_t Parity) + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE, Parity); + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Parity configuration (enabled/disabled and parity mode if enabled) + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PS LL_USART_GetParity\n + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 PCE LL_USART_GetParity + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_NONE + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_EVEN + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_ODD + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetParity(const USART_TypeDef *USARTx) + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE)); + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Receiver Wake Up method from Mute mode. + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 WAKE LL_USART_SetWakeUpMethod + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Method This parameter can be one of the following values: + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_IDLELINE + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetWakeUpMethod(USART_TypeDef *USARTx, uint32_t Method) + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_WAKE, Method); + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Receiver Wake Up method from Mute mode + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 WAKE LL_USART_GetWakeUpMethod + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_IDLELINE + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetWakeUpMethod(const USART_TypeDef *USARTx) + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_WAKE)); + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Word length (i.e. nb of data bits, excluding start and stop bits) + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 M0 LL_USART_SetDataWidth\n + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M1 LL_USART_SetDataWidth + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param DataWidth This parameter can be one of the following values: + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_7B + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_8B + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_9B + ARM GAS /tmp/ccdsDELB.s page 358 + + + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetDataWidth(USART_TypeDef *USARTx, uint32_t DataWidth) + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_M, DataWidth); + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Word length (i.e. nb of data bits, excluding start and stop bits) + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 M0 LL_USART_GetDataWidth\n + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M1 LL_USART_GetDataWidth + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_7B + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_8B + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_9B + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetDataWidth(const USART_TypeDef *USARTx) + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_M)); + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Allow switch between Mute Mode and Active mode + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 MME LL_USART_EnableMuteMode + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableMuteMode(USART_TypeDef *USARTx) + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_MME); + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Prevent Mute Mode use. Set Receiver in active mode permanently. + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 MME LL_USART_DisableMuteMode + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableMuteMode(USART_TypeDef *USARTx) + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_MME); + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if switch between Mute Mode and Active mode is allowed + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 MME LL_USART_IsEnabledMuteMode + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledMuteMode(const USART_TypeDef *USARTx) + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_MME) == (USART_CR1_MME)) ? 1UL : 0UL); + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Oversampling to 8-bit or 16-bit mode + ARM GAS /tmp/ccdsDELB.s page 359 + + + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 OVER8 LL_USART_SetOverSampling + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param OverSampling This parameter can be one of the following values: + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetOverSampling(USART_TypeDef *USARTx, uint32_t OverSampling) + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_OVER8, OverSampling); + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Oversampling mode + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 OVER8 LL_USART_GetOverSampling + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetOverSampling(const USART_TypeDef *USARTx) + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_OVER8)); + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure if Clock pulse of the last data bit is output to the SCLK pin or not + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBCL LL_USART_SetLastClkPulseOutput + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param LastBitClockPulse This parameter can be one of the following values: + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetLastClkPulseOutput(USART_TypeDef *USARTx, uint32_t LastBitClockPul + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_LBCL, LastBitClockPulse); + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve Clock pulse of the last data bit output configuration + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (Last bit Clock pulse output to the SCLK pin or not) + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBCL LL_USART_GetLastClkPulseOutput + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetLastClkPulseOutput(const USART_TypeDef *USARTx) + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBCL)); + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/ccdsDELB.s page 360 + + + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select the phase of the clock output on the SCLK pin in synchronous mode + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPHA LL_USART_SetClockPhase + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param ClockPhase This parameter can be one of the following values: + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_1EDGE + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetClockPhase(USART_TypeDef *USARTx, uint32_t ClockPhase) + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_CPHA, ClockPhase); + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return phase of the clock output on the SCLK pin in synchronous mode + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPHA LL_USART_GetClockPhase + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_1EDGE + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetClockPhase(const USART_TypeDef *USARTx) + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPHA)); + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select the polarity of the clock output on the SCLK pin in synchronous mode + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPOL LL_USART_SetClockPolarity + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param ClockPolarity This parameter can be one of the following values: + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_LOW + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_HIGH + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetClockPolarity(USART_TypeDef *USARTx, uint32_t ClockPolarity) + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_CPOL, ClockPolarity); + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return polarity of the clock output on the SCLK pin in synchronous mode + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPOL LL_USART_GetClockPolarity + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_LOW + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_HIGH + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/ccdsDELB.s page 361 + + + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetClockPolarity(const USART_TypeDef *USARTx) + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPOL)); + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Clock signal format (Phase Polarity and choice about output of last bit clock + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clock Phase configuration using @ref LL_USART_SetClockPhase() function +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clock Polarity configuration using @ref LL_USART_SetClockPolarity() function +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Output of Last bit Clock pulse configuration using @ref LL_USART_SetLastClkPulseOutpu +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPHA LL_USART_ConfigClock\n +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CPOL LL_USART_ConfigClock\n +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 LBCL LL_USART_ConfigClock +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Phase This parameter can be one of the following values: +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_1EDGE +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Polarity This parameter can be one of the following values: +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_LOW +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_HIGH +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param LBCPOutput This parameter can be one of the following values: +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigClock(USART_TypeDef *USARTx, uint32_t Phase, uint32_t Polarity, +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, Phase | Polarity | LBCP +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Clock output on SCLK pin +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_EnableSCLKOutput +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableSCLKOutput(USART_TypeDef *USARTx) +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_CLKEN); +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Clock output on SCLK pin +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_DisableSCLKOutput +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableSCLKOutput(USART_TypeDef *USARTx) +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_CLKEN); + ARM GAS /tmp/ccdsDELB.s page 362 + + +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Clock output on SCLK pin is enabled +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_IsEnabledSCLKOutput +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledSCLKOutput(const USART_TypeDef *USARTx) +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_CLKEN) == (USART_CR2_CLKEN)) ? 1UL : 0UL); +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set the length of the stop bits +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 STOP LL_USART_SetStopBitsLength +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param StopBits This parameter can be one of the following values: +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_0_5 +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1 +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1_5 +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_2 +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetStopBitsLength(USART_TypeDef *USARTx, uint32_t StopBits) +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve the length of the stop bits +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 STOP LL_USART_GetStopBitsLength +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_0_5 +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1 +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1_5 +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_2 +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetStopBitsLength(const USART_TypeDef *USARTx) +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_STOP)); +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Character frame format (Datawidth, Parity control, Stop Bits) +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Data Width configuration using @ref LL_USART_SetDataWidth() function +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Parity Control and mode configuration using @ref LL_USART_SetParity() function +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Stop bits configuration using @ref LL_USART_SetStopBitsLength() function +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PS LL_USART_ConfigCharacter\n +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 PCE LL_USART_ConfigCharacter\n +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M0 LL_USART_ConfigCharacter\n +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M1 LL_USART_ConfigCharacter\n +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 STOP LL_USART_ConfigCharacter + ARM GAS /tmp/ccdsDELB.s page 363 + + +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param DataWidth This parameter can be one of the following values: +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_7B +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_8B +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_9B +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Parity This parameter can be one of the following values: +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_NONE +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_EVEN +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_ODD +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param StopBits This parameter can be one of the following values: +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_0_5 +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1_5 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_2 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigCharacter(USART_TypeDef *USARTx, uint32_t DataWidth, uint32_t P +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t StopBits) +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE | USART_CR1_M, Parity | DataWidth); +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure TX/RX pins swapping setting. +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 SWAP LL_USART_SetTXRXSwap +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param SwapConfig This parameter can be one of the following values: +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_STANDARD +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_SWAPPED +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTXRXSwap(USART_TypeDef *USARTx, uint32_t SwapConfig) +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_SWAP, SwapConfig); +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve TX/RX pins swapping configuration. +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 SWAP LL_USART_GetTXRXSwap +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_STANDARD +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_SWAPPED +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTXRXSwap(const USART_TypeDef *USARTx) +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_SWAP)); +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure RX pin active level logic +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RXINV LL_USART_SetRXPinLevel +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PinInvMethod This parameter can be one of the following values: +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_STANDARD +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_INVERTED + ARM GAS /tmp/ccdsDELB.s page 364 + + +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetRXPinLevel(USART_TypeDef *USARTx, uint32_t PinInvMethod) +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_RXINV, PinInvMethod); +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve RX pin active level logic configuration +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RXINV LL_USART_GetRXPinLevel +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_STANDARD +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_INVERTED +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetRXPinLevel(const USART_TypeDef *USARTx) +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_RXINV)); +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure TX pin active level logic +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 TXINV LL_USART_SetTXPinLevel +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PinInvMethod This parameter can be one of the following values: +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_STANDARD +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_INVERTED +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTXPinLevel(USART_TypeDef *USARTx, uint32_t PinInvMethod) +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_TXINV, PinInvMethod); +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve TX pin active level logic configuration +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 TXINV LL_USART_GetTXPinLevel +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_STANDARD +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_INVERTED +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTXPinLevel(const USART_TypeDef *USARTx) +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_TXINV)); +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Binary data logic. +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Allow to define how Logical data from the data register are send/received : +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * either in positive/direct logic (1=H, 0=L) or in negative/inverse logic (1=L, 0=H) +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 DATAINV LL_USART_SetBinaryDataLogic +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param DataLogic This parameter can be one of the following values: +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_POSITIVE +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_NEGATIVE +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 365 + + +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetBinaryDataLogic(USART_TypeDef *USARTx, uint32_t DataLogic) +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_DATAINV, DataLogic); +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve Binary data configuration +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 DATAINV LL_USART_GetBinaryDataLogic +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_POSITIVE +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_NEGATIVE +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetBinaryDataLogic(const USART_TypeDef *USARTx) +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_DATAINV)); +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure transfer bit order (either Less or Most Significant Bit First) +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note MSB First means data is transmitted/received with the MSB first, following the start bi +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LSB First means data is transmitted/received with data bit 0 first, following the start +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 MSBFIRST LL_USART_SetTransferBitOrder +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param BitOrder This parameter can be one of the following values: +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_LSBFIRST +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_MSBFIRST +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTransferBitOrder(USART_TypeDef *USARTx, uint32_t BitOrder) +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_MSBFIRST, BitOrder); +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return transfer bit order (either Less or Most Significant Bit First) +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note MSB First means data is transmitted/received with the MSB first, following the start bi +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LSB First means data is transmitted/received with data bit 0 first, following the start +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 MSBFIRST LL_USART_GetTransferBitOrder +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_LSBFIRST +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_MSBFIRST +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTransferBitOrder(const USART_TypeDef *USARTx) +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_MSBFIRST)); +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Auto Baud-Rate Detection +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABREN LL_USART_EnableAutoBaudRate +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 366 + + +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableAutoBaudRate(USART_TypeDef *USARTx) +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_ABREN); +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Auto Baud-Rate Detection +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABREN LL_USART_DisableAutoBaudRate +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableAutoBaudRate(USART_TypeDef *USARTx) +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_ABREN); +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Auto Baud-Rate Detection mechanism is enabled +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABREN LL_USART_IsEnabledAutoBaud +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledAutoBaud(const USART_TypeDef *USARTx) +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_ABREN) == (USART_CR2_ABREN)) ? 1UL : 0UL); +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Auto Baud-Rate mode bits +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABRMODE LL_USART_SetAutoBaudRateMode +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param AutoBaudRateMode This parameter can be one of the following values: +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_STARTBIT +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_55_FRAME +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetAutoBaudRateMode(USART_TypeDef *USARTx, uint32_t AutoBaudRateMode) +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_ABRMODE, AutoBaudRateMode); +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Auto Baud-Rate mode +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABRMODE LL_USART_GetAutoBaudRateMode +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + ARM GAS /tmp/ccdsDELB.s page 367 + + +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_STARTBIT +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_55_FRAME +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetAutoBaudRateMode(const USART_TypeDef *USARTx) +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ABRMODE)); +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Receiver Timeout +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RTOEN LL_USART_EnableRxTimeout +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableRxTimeout(USART_TypeDef *USARTx) +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_RTOEN); +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Receiver Timeout +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RTOEN LL_USART_DisableRxTimeout +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableRxTimeout(USART_TypeDef *USARTx) +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_RTOEN); +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Receiver Timeout feature is enabled +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RTOEN LL_USART_IsEnabledRxTimeout +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledRxTimeout(const USART_TypeDef *USARTx) +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_RTOEN) == (USART_CR2_RTOEN)) ? 1UL : 0UL); +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Address of the USART node. +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note This is used in multiprocessor communication during Mute mode or Stop mode, +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * for wake up with address mark detection. +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note 4bits address node is used when 4-bit Address Detection is selected in ADDM7. +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (b7-b4 should be set to 0) +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 8bits address node is used when 7-bit Address Detection is selected in ADDM7. +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (This is used in multiprocessor communication during Mute mode or Stop mode, +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * for wake up with 7-bit address mark detection. +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * The MSB of the character sent by the transmitter should be equal to 1. +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * It may also be used for character detection during normal reception, +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Mute mode inactive (for example, end of block detection in ModBus protocol). +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * In this case, the whole received character (8-bit) is compared to the ADD[7:0] +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * value and CMF flag is set on match) + ARM GAS /tmp/ccdsDELB.s page 368 + + +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ADD LL_USART_ConfigNodeAddress\n +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 ADDM7 LL_USART_ConfigNodeAddress +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param AddressLen This parameter can be one of the following values: +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_4B +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_7B +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param NodeAddress 4 or 7 bit Address of the USART node. +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigNodeAddress(USART_TypeDef *USARTx, uint32_t AddressLen, uint32_ +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_ADD | USART_CR2_ADDM7, +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** (uint32_t)(AddressLen | (NodeAddress << USART_CR2_ADD_Pos))); +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return 8 bit Address of the USART node as set in ADD field of CR2. +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note If 4-bit Address Detection is selected in ADDM7, +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * only 4bits (b3-b0) of returned value are relevant (b31-b4 are not relevant) +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * If 7-bit Address Detection is selected in ADDM7, +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * only 8bits (b7-b0) of returned value are relevant (b31-b8 are not relevant) +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ADD LL_USART_GetNodeAddress +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Address of the USART node (Value between Min_Data=0 and Max_Data=255) +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetNodeAddress(const USART_TypeDef *USARTx) +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADD) >> USART_CR2_ADD_Pos); +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Length of Node Address used in Address Detection mode (7-bit or 4-bit) +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ADDM7 LL_USART_GetNodeAddressLen +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_4B +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_7B +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetNodeAddressLen(const USART_TypeDef *USARTx) +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADDM7)); +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable RTS HW Flow Control +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_EnableRTSHWFlowCtrl +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableRTSHWFlowCtrl(USART_TypeDef *USARTx) +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_RTSE); +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/ccdsDELB.s page 369 + + +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable RTS HW Flow Control +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_DisableRTSHWFlowCtrl +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableRTSHWFlowCtrl(USART_TypeDef *USARTx) +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_RTSE); +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable CTS HW Flow Control +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSE LL_USART_EnableCTSHWFlowCtrl +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableCTSHWFlowCtrl(USART_TypeDef *USARTx) +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_CTSE); +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable CTS HW Flow Control +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSE LL_USART_DisableCTSHWFlowCtrl +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableCTSHWFlowCtrl(USART_TypeDef *USARTx) +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_CTSE); +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure HW Flow Control mode (both CTS and RTS) +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_SetHWFlowCtrl\n +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 CTSE LL_USART_SetHWFlowCtrl +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param HardwareFlowControl This parameter can be one of the following values: +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_NONE +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_CTS +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS_CTS +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetHWFlowCtrl(USART_TypeDef *USARTx, uint32_t HardwareFlowControl) +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE, HardwareFlowControl); +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/ccdsDELB.s page 370 + + +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return HW Flow Control configuration (both CTS and RTS) +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_GetHWFlowCtrl\n +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 CTSE LL_USART_GetHWFlowCtrl +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_NONE +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_CTS +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS_CTS +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetHWFlowCtrl(const USART_TypeDef *USARTx) +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE)); +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable One bit sampling method +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 ONEBIT LL_USART_EnableOneBitSamp +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableOneBitSamp(USART_TypeDef *USARTx) +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_ONEBIT); +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable One bit sampling method +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 ONEBIT LL_USART_DisableOneBitSamp +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableOneBitSamp(USART_TypeDef *USARTx) +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_ONEBIT); +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if One bit sampling method is enabled +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 ONEBIT LL_USART_IsEnabledOneBitSamp +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledOneBitSamp(const USART_TypeDef *USARTx) +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_ONEBIT) == (USART_CR3_ONEBIT)) ? 1UL : 0UL); +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Overrun detection +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 OVRDIS LL_USART_EnableOverrunDetect +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/ccdsDELB.s page 371 + + +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableOverrunDetect(USART_TypeDef *USARTx) +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_OVRDIS); +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Overrun detection +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 OVRDIS LL_USART_DisableOverrunDetect +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableOverrunDetect(USART_TypeDef *USARTx) +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_OVRDIS); +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Overrun detection is enabled +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 OVRDIS LL_USART_IsEnabledOverrunDetect +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledOverrunDetect(const USART_TypeDef *USARTx) +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_OVRDIS) != USART_CR3_OVRDIS) ? 1UL : 0UL); +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUS) +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select event type for Wake UP Interrupt Flag (WUS[1:0] bits) +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUS LL_USART_SetWKUPType +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Type This parameter can be one of the following values: +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_ADDRESS +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_STARTBIT +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_RXNE +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetWKUPType(USART_TypeDef *USARTx, uint32_t Type) +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_WUS, Type); +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return event type for Wake UP Interrupt Flag (WUS[1:0] bits) +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUS LL_USART_GetWKUPType +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_ADDRESS +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_STARTBIT +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_RXNE +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/ccdsDELB.s page 372 + + +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetWKUPType(const USART_TypeDef *USARTx) +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_WUS)); +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUS */ +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure USART BRR register for achieving expected Baud Rate value. +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Compute and set USARTDIV value in BRR Register (full BRR content) +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * according to used Peripheral Clock, Oversampling mode, and expected Baud Rate values +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Peripheral clock and Baud rate values provided as function parameters should be valid +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (Baud rate value != 0) +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll BRR BRR LL_USART_SetBaudRate +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PeriphClk Peripheral Clock +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param OverSampling This parameter can be one of the following values: +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param BaudRate Baud Rate +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverS +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t BaudRate) +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t usartdiv; +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t brrtemp; +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if (OverSampling == LL_USART_OVERSAMPLING_8) +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** usartdiv = (uint16_t)(__LL_USART_DIV_SAMPLING8(PeriphClk, BaudRate)); +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp = usartdiv & 0xFFF0U; +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USARTx->BRR = brrtemp; +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** else +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING16(PeriphClk, BaudRate)); +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return current Baud Rate value, according to USARTDIV present in BRR register +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (full BRR content), and to used Peripheral Clock and Oversampling mode values +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In case of non-initialized or invalid value stored in BRR register, value 0 will be ret +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll BRR BRR LL_USART_GetBaudRate +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PeriphClk Peripheral Clock +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param OverSampling This parameter can be one of the following values: +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Baud Rate +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetBaudRate(const USART_TypeDef *USARTx, uint32_t PeriphClk, uint +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/ccdsDELB.s page 373 + + +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t usartdiv; +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t brrresult = 0x0U; +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** usartdiv = USARTx->BRR; +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if (usartdiv == 0U) +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Do not perform a division by 0 */ +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** else if (OverSampling == LL_USART_OVERSAMPLING_8) +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** usartdiv = (uint16_t)((usartdiv & 0xFFF0U) | ((usartdiv & 0x0007U) << 1U)) ; +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if (usartdiv != 0U) +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrresult = (PeriphClk * 2U) / usartdiv; +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** else +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if ((usartdiv & 0xFFFFU) != 0U) +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrresult = PeriphClk / usartdiv; +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (brrresult); +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Receiver Time Out Value (expressed in nb of bits duration) +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RTOR RTO LL_USART_SetRxTimeout +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Timeout Value between Min_Data=0x00 and Max_Data=0x00FFFFFF +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetRxTimeout(USART_TypeDef *USARTx, uint32_t Timeout) +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->RTOR, USART_RTOR_RTO, Timeout); +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Get Receiver Time Out Value (expressed in nb of bits duration) +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RTOR RTO LL_USART_GetRxTimeout +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Value between Min_Data=0x00 and Max_Data=0x00FFFFFF +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetRxTimeout(const USART_TypeDef *USARTx) +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->RTOR, USART_RTOR_RTO)); +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Block Length value in reception +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RTOR BLEN LL_USART_SetBlockLength +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param BlockLength Value between Min_Data=0x00 and Max_Data=0xFF +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/ccdsDELB.s page 374 + + +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetBlockLength(USART_TypeDef *USARTx, uint32_t BlockLength) +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->RTOR, USART_RTOR_BLEN, BlockLength << USART_RTOR_BLEN_Pos); +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Get Block Length value in reception +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RTOR BLEN LL_USART_GetBlockLength +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Value between Min_Data=0x00 and Max_Data=0xFF +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetBlockLength(const USART_TypeDef *USARTx) +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->RTOR, USART_RTOR_BLEN) >> USART_RTOR_BLEN_Pos); +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration_IRDA Configuration functions related to Irda feature +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable IrDA mode +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 IREN LL_USART_EnableIrda +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIrda(USART_TypeDef *USARTx) +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_IREN); +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable IrDA mode +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 IREN LL_USART_DisableIrda +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIrda(USART_TypeDef *USARTx) +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_IREN); +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if IrDA mode is enabled +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 IREN LL_USART_IsEnabledIrda +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + ARM GAS /tmp/ccdsDELB.s page 375 + + +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIrda(const USART_TypeDef *USARTx) +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_IREN) == (USART_CR3_IREN)) ? 1UL : 0UL); +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure IrDA Power Mode (Normal or Low Power) +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 IRLP LL_USART_SetIrdaPowerMode +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PowerMode This parameter can be one of the following values: +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_IRDA_POWER_NORMAL +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_IRDA_POWER_LOW +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetIrdaPowerMode(USART_TypeDef *USARTx, uint32_t PowerMode) +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_IRLP, PowerMode); +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve IrDA Power Mode configuration (Normal or Low Power) +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 IRLP LL_USART_GetIrdaPowerMode +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_IRDA_POWER_NORMAL +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetIrdaPowerMode(const USART_TypeDef *USARTx) +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_IRLP)); +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Irda prescaler value, used for dividing the USART clock source +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * to achieve the Irda Low Power frequency (8 bits value) +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR PSC LL_USART_SetIrdaPrescaler +1831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PrescalerValue Value between Min_Data=0x00 and Max_Data=0xFF +1833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetIrdaPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue) +1836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, (uint16_t)PrescalerValue); +1838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Irda prescaler value, used for dividing the USART clock source +1842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * to achieve the Irda Low Power frequency (8 bits value) +1843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. + ARM GAS /tmp/ccdsDELB.s page 376 + + +1845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR PSC LL_USART_GetIrdaPrescaler +1846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Irda prescaler value (Value between Min_Data=0x00 and Max_Data=0xFF) +1848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetIrdaPrescaler(const USART_TypeDef *USARTx) +1850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC)); +1852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +1856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration_Smartcard Configuration functions related to Smartcard feat +1859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +1860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Smartcard NACK transmission +1864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 NACK LL_USART_EnableSmartcardNACK +1867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableSmartcardNACK(USART_TypeDef *USARTx) +1871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_NACK); +1873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Smartcard NACK transmission +1877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 NACK LL_USART_DisableSmartcardNACK +1880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableSmartcardNACK(USART_TypeDef *USARTx) +1884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_NACK); +1886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Smartcard NACK transmission is enabled +1890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 NACK LL_USART_IsEnabledSmartcardNACK +1893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcardNACK(const USART_TypeDef *USARTx) +1897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_NACK) == (USART_CR3_NACK)) ? 1UL : 0UL); +1899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/ccdsDELB.s page 377 + + +1902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Smartcard mode +1903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 SCEN LL_USART_EnableSmartcard +1906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableSmartcard(USART_TypeDef *USARTx) +1910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_SCEN); +1912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Smartcard mode +1916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 SCEN LL_USART_DisableSmartcard +1919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableSmartcard(USART_TypeDef *USARTx) +1923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_SCEN); +1925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Smartcard mode is enabled +1929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 SCEN LL_USART_IsEnabledSmartcard +1932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcard(const USART_TypeDef *USARTx) +1936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_SCEN) == (USART_CR3_SCEN)) ? 1UL : 0UL); +1938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Smartcard Auto-Retry Count value (SCARCNT[2:0] bits) +1942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note This bit-field specifies the number of retries in transmit and receive, in Smartcard mo +1945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * In transmission mode, it specifies the number of automatic retransmission retries, befo +1946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * generating a transmission error (FE bit set). +1947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * In reception mode, it specifies the number or erroneous reception trials, before genera +1948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * reception error (RXNE and PE bits set) +1949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 SCARCNT LL_USART_SetSmartcardAutoRetryCount +1950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param AutoRetryCount Value between Min_Data=0 and Max_Data=7 +1952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetSmartcardAutoRetryCount(USART_TypeDef *USARTx, uint32_t AutoRetryC +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_SCARCNT, AutoRetryCount << USART_CR3_SCARCNT_Pos); +1957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/ccdsDELB.s page 378 + + +1959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Smartcard Auto-Retry Count value (SCARCNT[2:0] bits) +1961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 SCARCNT LL_USART_GetSmartcardAutoRetryCount +1964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Smartcard Auto-Retry Count value (Value between Min_Data=0 and Max_Data=7) +1966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetSmartcardAutoRetryCount(const USART_TypeDef *USARTx) +1968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_SCARCNT) >> USART_CR3_SCARCNT_Pos); +1970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Smartcard prescaler value, used for dividing the USART clock +1974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * source to provide the SMARTCARD Clock (5 bits value) +1975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR PSC LL_USART_SetSmartcardPrescaler +1978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PrescalerValue Value between Min_Data=0 and Max_Data=31 +1980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetSmartcardPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue) +1983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, (uint16_t)PrescalerValue); +1985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Smartcard prescaler value, used for dividing the USART clock +1989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * source to provide the SMARTCARD Clock (5 bits value) +1990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR PSC LL_USART_GetSmartcardPrescaler +1993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Smartcard prescaler value (Value between Min_Data=0 and Max_Data=31) +1995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetSmartcardPrescaler(const USART_TypeDef *USARTx) +1997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC)); +1999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Smartcard Guard time value, expressed in nb of baud clocks periods +2003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (GT[7:0] bits : Guard time value) +2004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +2005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +2006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR GT LL_USART_SetSmartcardGuardTime +2007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param GuardTime Value between Min_Data=0x00 and Max_Data=0xFF +2009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetSmartcardGuardTime(USART_TypeDef *USARTx, uint32_t GuardTime) +2012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->GTPR, USART_GTPR_GT, (uint16_t)(GuardTime << USART_GTPR_GT_Pos)); +2014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/ccdsDELB.s page 379 + + +2016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Smartcard Guard time value, expressed in nb of baud clocks periods +2018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (GT[7:0] bits : Guard time value) +2019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +2020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +2021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR GT LL_USART_GetSmartcardGuardTime +2022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Smartcard Guard time value (Value between Min_Data=0x00 and Max_Data=0xFF) +2024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetSmartcardGuardTime(const USART_TypeDef *USARTx) +2026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_GT) >> USART_GTPR_GT_Pos); +2028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration_HalfDuplex Configuration functions related to Half Duplex f +2035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +2036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Single Wire Half-Duplex mode +2040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not +2041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Half-Duplex mode is supported by the USARTx instance. +2042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 HDSEL LL_USART_EnableHalfDuplex +2043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableHalfDuplex(USART_TypeDef *USARTx) +2047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_HDSEL); +2049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Single Wire Half-Duplex mode +2053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not +2054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Half-Duplex mode is supported by the USARTx instance. +2055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 HDSEL LL_USART_DisableHalfDuplex +2056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableHalfDuplex(USART_TypeDef *USARTx) +2060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_HDSEL); +2062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Single Wire Half-Duplex mode is enabled +2066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not +2067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Half-Duplex mode is supported by the USARTx instance. +2068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 HDSEL LL_USART_IsEnabledHalfDuplex +2069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledHalfDuplex(const USART_TypeDef *USARTx) + ARM GAS /tmp/ccdsDELB.s page 380 + + +2073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_HDSEL) == (USART_CR3_HDSEL)) ? 1UL : 0UL); +2075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +2079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration_LIN Configuration functions related to LIN feature +2082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +2083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set LIN Break Detection Length +2087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBDL LL_USART_SetLINBrkDetectionLen +2090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param LINBDLength This parameter can be one of the following values: +2092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LINBREAK_DETECT_10B +2093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LINBREAK_DETECT_11B +2094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetLINBrkDetectionLen(USART_TypeDef *USARTx, uint32_t LINBDLength) +2097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_LBDL, LINBDLength); +2099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return LIN Break Detection Length +2103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBDL LL_USART_GetLINBrkDetectionLen +2106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +2108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LINBREAK_DETECT_10B +2109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LINBREAK_DETECT_11B +2110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetLINBrkDetectionLen(const USART_TypeDef *USARTx) +2112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBDL)); +2114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable LIN mode +2118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_EnableLIN +2121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableLIN(USART_TypeDef *USARTx) +2125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_LINEN); +2127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/ccdsDELB.s page 381 + + +2130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable LIN mode +2131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_DisableLIN +2134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableLIN(USART_TypeDef *USARTx) +2138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_LINEN); +2140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if LIN mode is enabled +2144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_IsEnabledLIN +2147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledLIN(const USART_TypeDef *USARTx) +2151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_LINEN) == (USART_CR2_LINEN)) ? 1UL : 0UL); +2153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +2157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration_DE Configuration functions related to Driver Enable feature +2160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +2161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set DEDT (Driver Enable De-Assertion Time), Time value expressed on 5 bits ([4:0] bits) +2165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 DEDT LL_USART_SetDEDeassertionTime +2168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Time Value between Min_Data=0 and Max_Data=31 +2170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetDEDeassertionTime(USART_TypeDef *USARTx, uint32_t Time) +2173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_DEDT, Time << USART_CR1_DEDT_Pos); +2175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return DEDT (Driver Enable De-Assertion Time) +2179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 DEDT LL_USART_GetDEDeassertionTime +2182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Time value expressed on 5 bits ([4:0] bits) : Value between Min_Data=0 and Max_Data=31 +2184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetDEDeassertionTime(const USART_TypeDef *USARTx) +2186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/ccdsDELB.s page 382 + + +2187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_DEDT) >> USART_CR1_DEDT_Pos); +2188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set DEAT (Driver Enable Assertion Time), Time value expressed on 5 bits ([4:0] bits). +2192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 DEAT LL_USART_SetDEAssertionTime +2195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Time Value between Min_Data=0 and Max_Data=31 +2197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetDEAssertionTime(USART_TypeDef *USARTx, uint32_t Time) +2200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_DEAT, Time << USART_CR1_DEAT_Pos); +2202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return DEAT (Driver Enable Assertion Time) +2206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 DEAT LL_USART_GetDEAssertionTime +2209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Time value expressed on 5 bits ([4:0] bits) : Value between Min_Data=0 and Max_Data=31 +2211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetDEAssertionTime(const USART_TypeDef *USARTx) +2213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_DEAT) >> USART_CR1_DEAT_Pos); +2215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Driver Enable (DE) Mode +2219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DEM LL_USART_EnableDEMode +2222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDEMode(USART_TypeDef *USARTx) +2226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_DEM); +2228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Driver Enable (DE) Mode +2232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DEM LL_USART_DisableDEMode +2235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDEMode(USART_TypeDef *USARTx) +2239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_DEM); +2241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/ccdsDELB.s page 383 + + +2244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Driver Enable (DE) Mode is enabled +2245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DEM LL_USART_IsEnabledDEMode +2248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledDEMode(const USART_TypeDef *USARTx) +2252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_DEM) == (USART_CR3_DEM)) ? 1UL : 0UL); +2254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select Driver Enable Polarity +2258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DEP LL_USART_SetDESignalPolarity +2261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Polarity This parameter can be one of the following values: +2263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DE_POLARITY_HIGH +2264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DE_POLARITY_LOW +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetDESignalPolarity(USART_TypeDef *USARTx, uint32_t Polarity) +2268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_DEP, Polarity); +2270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Driver Enable Polarity +2274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DEP LL_USART_GetDESignalPolarity +2277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DE_POLARITY_HIGH +2280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DE_POLARITY_LOW +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetDESignalPolarity(const USART_TypeDef *USARTx) +2283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_DEP)); +2285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +2289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_AdvancedConfiguration Advanced Configurations services +2292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +2293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Asynchronous Mode (UART) +2297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In UART mode, the following bits must be kept cleared: +2298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - CLKEN bit in the USART_CR2 register, +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, + ARM GAS /tmp/ccdsDELB.s page 384 + + +2301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function +2306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Asynchronous Mode +2310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, Parity, ...) should be set using +2311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigAsyncMode\n +2313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigAsyncMode\n +2314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigAsyncMode\n +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigAsyncMode\n +2316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigAsyncMode +2317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigAsyncMode(USART_TypeDef *USARTx) +2321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In Asynchronous mode, the following bits must be kept cleared: +2323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN, CLKEN bits in the USART_CR2 register, +2324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - SCEN, IREN and HDSEL bits in the USART_CR3 register. +2325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); +2328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Synchronous Mode +2332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In Synchronous mode, the following bits must be kept cleared: +2333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, +2335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This function also sets the USART in Synchronous mode. +2338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +2339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +2340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set CLKEN in CR2 using @ref LL_USART_EnableSCLKOutput() function +2346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Synchronous Mode +2347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, Parity, Clock Polarity, ...) should be set using +2348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigSyncMode\n +2350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigSyncMode\n +2351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigSyncMode\n +2352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigSyncMode\n +2353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigSyncMode +2354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigSyncMode(USART_TypeDef *USARTx) + ARM GAS /tmp/ccdsDELB.s page 385 + + +2358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In Synchronous mode, the following bits must be kept cleared: +2360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN bit in the USART_CR2 register, +2361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - SCEN, IREN and HDSEL bits in the USART_CR3 register. +2362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN)); +2364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); +2365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* set the UART/USART in Synchronous mode */ +2366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_CLKEN); +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in LIN Mode +2371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In LIN mode, the following bits must be kept cleared: +2372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - STOP and CLKEN bits in the USART_CR2 register, +2373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, +2374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This function also set the UART/USART in LIN mode. +2377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function +2381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear STOP in CR2 using @ref LL_USART_SetStopBitsLength() function +2382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set LINEN in CR2 using @ref LL_USART_EnableLIN() function +2386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to LIN Mode +2387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, LIN Break Detection Length, ...) should be set using +2388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_ConfigLINMode\n +2390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 STOP LL_USART_ConfigLINMode\n +2391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 LINEN LL_USART_ConfigLINMode\n +2392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigLINMode\n +2393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigLINMode\n +2394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigLINMode +2395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigLINMode(USART_TypeDef *USARTx) +2399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In LIN mode, the following bits must be kept cleared: +2401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - STOP and CLKEN bits in the USART_CR2 register, +2402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - IREN, SCEN and HDSEL bits in the USART_CR3 register. +2403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_CLKEN | USART_CR2_STOP)); +2405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_SCEN | USART_CR3_HDSEL)); +2406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Set the UART/USART in LIN mode */ +2407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_LINEN); +2408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Half Duplex Mode +2412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In Half Duplex mode, the following bits must be kept cleared: +2413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - CLKEN bit in the USART_CR2 register, + ARM GAS /tmp/ccdsDELB.s page 386 + + +2415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, +2416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This function also sets the UART/USART in Half Duplex mode. +2418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not +2419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Half-Duplex mode is supported by the USARTx instance. +2420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function +2423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set HDSEL in CR3 using @ref LL_USART_EnableHalfDuplex() function +2426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Half Duplex Mode +2427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, Parity, ...) should be set using +2428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigHalfDuplexMode\n +2430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigHalfDuplexMode\n +2431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigHalfDuplexMode\n +2432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigHalfDuplexMode\n +2433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigHalfDuplexMode +2434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigHalfDuplexMode(USART_TypeDef *USARTx) +2438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In Half Duplex mode, the following bits must be kept cleared: +2440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN and CLKEN bits in the USART_CR2 register, +2441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - SCEN and IREN bits in the USART_CR3 register. +2442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); +2444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN)); +2445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* set the UART/USART in Half Duplex mode */ +2446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_HDSEL); +2447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Smartcard Mode +2451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In Smartcard mode, the following bits must be kept cleared: +2452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This function also configures Stop bits to 1.5 bits and +2456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * sets the USART in Smartcard mode (SCEN bit). +2457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Clock Output is also enabled (CLKEN). +2458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +2459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +2460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Configure STOP in CR2 using @ref LL_USART_SetStopBitsLength() function +2465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set CLKEN in CR2 using @ref LL_USART_EnableSCLKOutput() function +2466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set SCEN in CR3 using @ref LL_USART_EnableSmartcard() function +2467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Smartcard Mode +2468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, Parity, ...) should be set using +2469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigSmartcardMode\n +2471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 STOP LL_USART_ConfigSmartcardMode\n + ARM GAS /tmp/ccdsDELB.s page 387 + + +2472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigSmartcardMode\n +2473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigSmartcardMode\n +2474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigSmartcardMode +2475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigSmartcardMode(USART_TypeDef *USARTx) +2479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In Smartcard mode, the following bits must be kept cleared: +2481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN bit in the USART_CR2 register, +2482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - IREN and HDSEL bits in the USART_CR3 register. +2483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN)); +2485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_HDSEL)); +2486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Configure Stop bits to 1.5 bits */ +2487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Synchronous mode is activated by default */ +2488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, (USART_CR2_STOP_0 | USART_CR2_STOP_1 | USART_CR2_CLKEN)); +2489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* set the UART/USART in Smartcard mode */ +2490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_SCEN); +2491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Irda Mode +2495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In IRDA mode, the following bits must be kept cleared: +2496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - STOP and CLKEN bits in the USART_CR2 register, +2498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, +2499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This function also sets the UART/USART in IRDA mode (IREN bit). +2501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +2502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +2503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function +2506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Configure STOP in CR2 using @ref LL_USART_SetStopBitsLength() function +2509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set IREN in CR3 using @ref LL_USART_EnableIrda() function +2510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Irda Mode +2511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, Power mode, ...) should be set using +2512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigIrdaMode\n +2514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigIrdaMode\n +2515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 STOP LL_USART_ConfigIrdaMode\n +2516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigIrdaMode\n +2517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigIrdaMode\n +2518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigIrdaMode +2519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigIrdaMode(USART_TypeDef *USARTx) +2523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In IRDA mode, the following bits must be kept cleared: +2525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN, STOP and CLKEN bits in the USART_CR2 register, +2526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - SCEN and HDSEL bits in the USART_CR3 register. +2527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); + ARM GAS /tmp/ccdsDELB.s page 388 + + +2529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); +2530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* set the UART/USART in IRDA mode */ +2531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_IREN); +2532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Multi processor Mode +2536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (several USARTs connected in a network, one of the USARTs can be the master, +2537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * its TX output connected to the RX inputs of the other slaves USARTs). +2538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In MultiProcessor mode, the following bits must be kept cleared: +2539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - CLKEN bit in the USART_CR2 register, +2541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, +2542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function +2547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Multi processor Mode +2551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Wake Up Method, Node address, ...) should be set using +2552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigMultiProcessMode\n +2554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigMultiProcessMode\n +2555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigMultiProcessMode\n +2556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigMultiProcessMode\n +2557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigMultiProcessMode +2558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigMultiProcessMode(USART_TypeDef *USARTx) +2562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In Multi Processor mode, the following bits must be kept cleared: +2564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN and CLKEN bits in the USART_CR2 register, +2565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - IREN, SCEN and HDSEL bits in the USART_CR3 register. +2566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); +2568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); +2569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +2573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_FLAG_Management FLAG_Management +2576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +2577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Parity Error Flag is set or not +2581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR PE LL_USART_IsActiveFlag_PE +2582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_PE(const USART_TypeDef *USARTx) + ARM GAS /tmp/ccdsDELB.s page 389 + + +2586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_PE) == (USART_ISR_PE)) ? 1UL : 0UL); +2588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Framing Error Flag is set or not +2592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR FE LL_USART_IsActiveFlag_FE +2593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_FE(const USART_TypeDef *USARTx) +2597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_FE) == (USART_ISR_FE)) ? 1UL : 0UL); +2599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Noise error detected Flag is set or not +2603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR NE LL_USART_IsActiveFlag_NE +2604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_NE(const USART_TypeDef *USARTx) +2608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_NE) == (USART_ISR_NE)) ? 1UL : 0UL); +2610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART OverRun Error Flag is set or not +2614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR ORE LL_USART_IsActiveFlag_ORE +2615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ORE(const USART_TypeDef *USARTx) +2619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_ORE) == (USART_ISR_ORE)) ? 1UL : 0UL); +2621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART IDLE line detected Flag is set or not +2625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR IDLE LL_USART_IsActiveFlag_IDLE +2626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_IDLE(const USART_TypeDef *USARTx) +2630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_IDLE) == (USART_ISR_IDLE)) ? 1UL : 0UL); +2632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Read Data Register Not Empty Flag is set or not +2636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR RXNE LL_USART_IsActiveFlag_RXNE +2637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RXNE(const USART_TypeDef *USARTx) +2641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_RXNE) == (USART_ISR_RXNE)) ? 1UL : 0UL); + ARM GAS /tmp/ccdsDELB.s page 390 + + +2643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Transmission Complete Flag is set or not +2647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR TC LL_USART_IsActiveFlag_TC +2648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TC(const USART_TypeDef *USARTx) +2652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_TC) == (USART_ISR_TC)) ? 1UL : 0UL); +2654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Transmit Data Register Empty Flag is set or not +2658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR TXE LL_USART_IsActiveFlag_TXE +2659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TXE(const USART_TypeDef *USARTx) +2663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_TXE) == (USART_ISR_TXE)) ? 1UL : 0UL); +2665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART LIN Break Detection Flag is set or not +2669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR LBDF LL_USART_IsActiveFlag_LBD +2672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_LBD(const USART_TypeDef *USARTx) +2676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_LBDF) == (USART_ISR_LBDF)) ? 1UL : 0UL); +2678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART CTS interrupt Flag is set or not +2682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +2683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +2684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR CTSIF LL_USART_IsActiveFlag_nCTS +2685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_nCTS(const USART_TypeDef *USARTx) +2689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_CTSIF) == (USART_ISR_CTSIF)) ? 1UL : 0UL); +2691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART CTS Flag is set or not +2695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +2696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +2697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR CTS LL_USART_IsActiveFlag_CTS +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + ARM GAS /tmp/ccdsDELB.s page 391 + + +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_CTS(const USART_TypeDef *USARTx) +2702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_CTS) == (USART_ISR_CTS)) ? 1UL : 0UL); +2704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Receiver Time Out Flag is set or not +2708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR RTOF LL_USART_IsActiveFlag_RTO +2709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RTO(const USART_TypeDef *USARTx) +2713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_RTOF) == (USART_ISR_RTOF)) ? 1UL : 0UL); +2715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART End Of Block Flag is set or not +2719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +2720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +2721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR EOBF LL_USART_IsActiveFlag_EOB +2722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_EOB(const USART_TypeDef *USARTx) +2726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_EOBF) == (USART_ISR_EOBF)) ? 1UL : 0UL); +2728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Auto-Baud Rate Error Flag is set or not +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +2733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +2734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR ABRE LL_USART_IsActiveFlag_ABRE +2735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ABRE(const USART_TypeDef *USARTx) +2739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_ABRE) == (USART_ISR_ABRE)) ? 1UL : 0UL); +2741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Auto-Baud Rate Flag is set or not +2745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +2746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +2747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR ABRF LL_USART_IsActiveFlag_ABR +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ABR(const USART_TypeDef *USARTx) +2752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_ABRF) == (USART_ISR_ABRF)) ? 1UL : 0UL); +2754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/ccdsDELB.s page 392 + + +2757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Busy Flag is set or not +2758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR BUSY LL_USART_IsActiveFlag_BUSY +2759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_BUSY(const USART_TypeDef *USARTx) +2763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_BUSY) == (USART_ISR_BUSY)) ? 1UL : 0UL); +2765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Character Match Flag is set or not +2769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR CMF LL_USART_IsActiveFlag_CM +2770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_CM(const USART_TypeDef *USARTx) +2774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_CMF) == (USART_ISR_CMF)) ? 1UL : 0UL); +2776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Send Break Flag is set or not +2780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR SBKF LL_USART_IsActiveFlag_SBK +2781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_SBK(const USART_TypeDef *USARTx) +2785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_SBKF) == (USART_ISR_SBKF)) ? 1UL : 0UL); +2787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Receive Wake Up from mute mode Flag is set or not +2791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR RWU LL_USART_IsActiveFlag_RWU +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RWU(const USART_TypeDef *USARTx) +2796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_RWU) == (USART_ISR_RWU)) ? 1UL : 0UL); +2798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +2801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) +2802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Wake Up from stop mode Flag is set or not +2804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +2805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR WUF LL_USART_IsActiveFlag_WKUP +2807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_WKUP(const USART_TypeDef *USARTx) +2811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_WUF) == (USART_ISR_WUF)) ? 1UL : 0UL); +2813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + ARM GAS /tmp/ccdsDELB.s page 393 + + +2814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ +2816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +2817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Transmit Enable Acknowledge Flag is set or not +2819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR TEACK LL_USART_IsActiveFlag_TEACK +2820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TEACK(const USART_TypeDef *USARTx) +2824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_TEACK) == (USART_ISR_TEACK)) ? 1UL : 0UL); +2826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_ISR_REACK) +2829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Receive Enable Acknowledge Flag is set or not +2831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR REACK LL_USART_IsActiveFlag_REACK +2832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_REACK(const USART_TypeDef *USARTx) +2836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_REACK) == (USART_ISR_REACK)) ? 1UL : 0UL); +2838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_ISR_REACK */ +2841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) +2842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Function available only on devices supporting Transmit Complete before Guard Time feature */ +2843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the Smartcard Transmission Complete Before Guard Time Flag is set or not +2845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR TCBGT LL_USART_IsActiveFlag_TCBGT +2846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TCBGT(const USART_TypeDef *USARTx) +2850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_TCBGT) == (USART_ISR_TCBGT)) ? 1UL : 0UL); +2852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ +2855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Parity Error Flag +2857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR PECF LL_USART_ClearFlag_PE +2858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_PE(USART_TypeDef *USARTx) +2862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_PECF); +2864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Framing Error Flag +2868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR FECF LL_USART_ClearFlag_FE +2869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 394 + + +2871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_FE(USART_TypeDef *USARTx) +2873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_FECF); +2875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Noise Error detected Flag +2879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR NCF LL_USART_ClearFlag_NE +2880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_NE(USART_TypeDef *USARTx) +2884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_NCF); +2886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear OverRun Error Flag +2890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR ORECF LL_USART_ClearFlag_ORE +2891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_ORE(USART_TypeDef *USARTx) +2895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_ORECF); +2897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear IDLE line detected Flag +2901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR IDLECF LL_USART_ClearFlag_IDLE +2902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_IDLE(USART_TypeDef *USARTx) +2906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_IDLECF); +2908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Transmission Complete Flag +2912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR TCCF LL_USART_ClearFlag_TC +2913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_TC(USART_TypeDef *USARTx) +2917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_TCCF); +2919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) +2922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Function available only on devices supporting Transmit Complete before Guard Time feature */ +2923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Smartcard Transmission Complete Before Guard Time Flag +2925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR TCBGTCF LL_USART_ClearFlag_TCBGT +2926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 395 + + +2928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_TCBGT(USART_TypeDef *USARTx) +2930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_TCBGTCF); +2932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ +2934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear LIN Break Detection Flag +2937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR LBDCF LL_USART_ClearFlag_LBD +2940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_LBD(USART_TypeDef *USARTx) +2944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_LBDCF); +2946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear CTS Interrupt Flag +2950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +2951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +2952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR CTSCF LL_USART_ClearFlag_nCTS +2953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_nCTS(USART_TypeDef *USARTx) +2957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_CTSCF); +2959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Receiver Time Out Flag +2963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR RTOCF LL_USART_ClearFlag_RTO +2964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_RTO(USART_TypeDef *USARTx) +2968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_RTOCF); +2970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear End Of Block Flag +2974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +2975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +2976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR EOBCF LL_USART_ClearFlag_EOB +2977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_EOB(USART_TypeDef *USARTx) +2981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_EOBCF); +2983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/ccdsDELB.s page 396 + + +2985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Character Match Flag +2987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR CMCF LL_USART_ClearFlag_CM +2988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_CM(USART_TypeDef *USARTx) +2992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_CMCF); +2994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +2997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) +2998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Wake Up from stop mode Flag +3000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +3001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +3002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR WUCF LL_USART_ClearFlag_WKUP +3003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_WKUP(USART_TypeDef *USARTx) +3007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_WUCF); +3009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ +3012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +3013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +3015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_IT_Management IT_Management +3018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +3019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable IDLE Interrupt +3023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 IDLEIE LL_USART_EnableIT_IDLE +3024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_IDLE(USART_TypeDef *USARTx) +3028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_IDLEIE); +3030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable RX Not Empty Interrupt +3034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RXNEIE LL_USART_EnableIT_RXNE +3035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_RXNE(USART_TypeDef *USARTx) +3039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RXNEIE); +3041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + ARM GAS /tmp/ccdsDELB.s page 397 + + +3042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Transmission Complete Interrupt +3045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TCIE LL_USART_EnableIT_TC +3046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_TC(USART_TypeDef *USARTx) +3050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TCIE); +3052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable TX Empty Interrupt +3056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TXEIE LL_USART_EnableIT_TXE +3057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_TXE(USART_TypeDef *USARTx) +3061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TXEIE); +3063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Parity Error Interrupt +3067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PEIE LL_USART_EnableIT_PE +3068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_PE(USART_TypeDef *USARTx) +3072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_PEIE); +3074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Character Match Interrupt +3078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 CMIE LL_USART_EnableIT_CM +3079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_CM(USART_TypeDef *USARTx) +3083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_CMIE); +3085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Receiver Timeout Interrupt +3089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RTOIE LL_USART_EnableIT_RTO +3090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_RTO(USART_TypeDef *USARTx) +3094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RTOIE); +3096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/ccdsDELB.s page 398 + + +3099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable End Of Block Interrupt +3100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 EOBIE LL_USART_EnableIT_EOB +3103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_EOB(USART_TypeDef *USARTx) +3107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_EOBIE); +3109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable LIN Break Detection Interrupt +3113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +3114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +3115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBDIE LL_USART_EnableIT_LBD +3116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_LBD(USART_TypeDef *USARTx) +3120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_LBDIE); +3122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Error Interrupt +3126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When set, Error Interrupt Enable Bit is enabling interrupt generation in case of a fram +3127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USARTx_ISR register). +3128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 0: Interrupt is inhibited +3129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USARTx_ISR register. +3130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 EIE LL_USART_EnableIT_ERROR +3131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_ERROR(USART_TypeDef *USARTx) +3135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_EIE); +3137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable CTS Interrupt +3141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +3142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +3143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSIE LL_USART_EnableIT_CTS +3144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_CTS(USART_TypeDef *USARTx) +3148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_CTSIE); +3150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) +3154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Wake Up from Stop Mode Interrupt + ARM GAS /tmp/ccdsDELB.s page 399 + + +3156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +3157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +3158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUFIE LL_USART_EnableIT_WKUP +3159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_WKUP(USART_TypeDef *USARTx) +3163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_WUFIE); +3165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ +3168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +3169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) +3170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Function available only on devices supporting Transmit Complete before Guard Time feature */ +3171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Smartcard Transmission Complete Before Guard Time Interrupt +3173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 TCBGTIE LL_USART_EnableIT_TCBGT +3176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_TCBGT(USART_TypeDef *USARTx) +3180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_TCBGTIE); +3182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ +3184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable IDLE Interrupt +3187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 IDLEIE LL_USART_DisableIT_IDLE +3188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_IDLE(USART_TypeDef *USARTx) +3192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_IDLEIE); +3194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable RX Not Empty Interrupt +3198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RXNEIE LL_USART_DisableIT_RXNE +3199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_RXNE(USART_TypeDef *USARTx) +3203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RXNEIE); +3205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Transmission Complete Interrupt +3209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TCIE LL_USART_DisableIT_TC +3210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/ccdsDELB.s page 400 + + +3213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_TC(USART_TypeDef *USARTx) +3214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TCIE); +3216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable TX Empty Interrupt +3220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TXEIE LL_USART_DisableIT_TXE +3221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_TXE(USART_TypeDef *USARTx) +3225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TXEIE); +3227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Parity Error Interrupt +3231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PEIE LL_USART_DisableIT_PE +3232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_PE(USART_TypeDef *USARTx) +3236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_PEIE); +3238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Character Match Interrupt +3242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 CMIE LL_USART_DisableIT_CM +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_CM(USART_TypeDef *USARTx) +3247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_CMIE); +3249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Receiver Timeout Interrupt +3253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RTOIE LL_USART_DisableIT_RTO +3254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_RTO(USART_TypeDef *USARTx) +3258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RTOIE); +3260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable End Of Block Interrupt +3264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 EOBIE LL_USART_DisableIT_EOB +3267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/ccdsDELB.s page 401 + + +3270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_EOB(USART_TypeDef *USARTx) +3271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_EOBIE); +3273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable LIN Break Detection Interrupt +3277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +3278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +3279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBDIE LL_USART_DisableIT_LBD +3280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_LBD(USART_TypeDef *USARTx) +3284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_LBDIE); +3286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Error Interrupt +3290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When set, Error Interrupt Enable Bit is enabling interrupt generation in case of a fram +3291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USARTx_ISR register). +3292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 0: Interrupt is inhibited +3293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USARTx_ISR register. +3294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 EIE LL_USART_DisableIT_ERROR +3295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_ERROR(USART_TypeDef *USARTx) +3299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_EIE); +3301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable CTS Interrupt +3305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +3306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +3307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSIE LL_USART_DisableIT_CTS +3308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_CTS(USART_TypeDef *USARTx) +3312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE); +3314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +3317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) +3318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Wake Up from Stop Mode Interrupt +3320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +3321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +3322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUFIE LL_USART_DisableIT_WKUP +3323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_WKUP(USART_TypeDef *USARTx) + ARM GAS /tmp/ccdsDELB.s page 402 + + +3327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_WUFIE); +3329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ +3332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +3333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) +3334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Function available only on devices supporting Transmit Complete before Guard Time feature */ +3335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Smartcard Transmission Complete Before Guard Time Interrupt +3337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 TCBGTIE LL_USART_DisableIT_TCBGT +3340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_TCBGT(USART_TypeDef *USARTx) +3344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_TCBGTIE); +3346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ +3348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART IDLE Interrupt source is enabled or disabled. +3351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 IDLEIE LL_USART_IsEnabledIT_IDLE +3352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_IDLE(const USART_TypeDef *USARTx) +3356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_IDLEIE) == (USART_CR1_IDLEIE)) ? 1UL : 0UL); +3358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART RX Not Empty Interrupt is enabled or disabled. +3362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RXNEIE LL_USART_IsEnabledIT_RXNE +3363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RXNE(const USART_TypeDef *USARTx) +3367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_RXNEIE) == (USART_CR1_RXNEIE)) ? 1U : 0U); +3369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Transmission Complete Interrupt is enabled or disabled. +3373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TCIE LL_USART_IsEnabledIT_TC +3374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TC(const USART_TypeDef *USARTx) +3378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_TCIE) == (USART_CR1_TCIE)) ? 1UL : 0UL); +3380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART TX Empty Interrupt is enabled or disabled. + ARM GAS /tmp/ccdsDELB.s page 403 + + +3384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TXEIE LL_USART_IsEnabledIT_TXE +3385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TXE(const USART_TypeDef *USARTx) +3389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_TXEIE) == (USART_CR1_TXEIE)) ? 1U : 0U); +3391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Parity Error Interrupt is enabled or disabled. +3395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PEIE LL_USART_IsEnabledIT_PE +3396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_PE(const USART_TypeDef *USARTx) +3400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_PEIE) == (USART_CR1_PEIE)) ? 1UL : 0UL); +3402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Character Match Interrupt is enabled or disabled. +3406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 CMIE LL_USART_IsEnabledIT_CM +3407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CM(const USART_TypeDef *USARTx) +3411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_CMIE) == (USART_CR1_CMIE)) ? 1UL : 0UL); +3413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Receiver Timeout Interrupt is enabled or disabled. +3417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RTOIE LL_USART_IsEnabledIT_RTO +3418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RTO(const USART_TypeDef *USARTx) +3422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_RTOIE) == (USART_CR1_RTOIE)) ? 1UL : 0UL); +3424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART End Of Block Interrupt is enabled or disabled. +3428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 EOBIE LL_USART_IsEnabledIT_EOB +3431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_EOB(const USART_TypeDef *USARTx) +3435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_EOBIE) == (USART_CR1_EOBIE)) ? 1UL : 0UL); +3437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART LIN Break Detection Interrupt is enabled or disabled. + ARM GAS /tmp/ccdsDELB.s page 404 + + +3441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +3442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +3443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBDIE LL_USART_IsEnabledIT_LBD +3444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_LBD(const USART_TypeDef *USARTx) +3448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_LBDIE) == (USART_CR2_LBDIE)) ? 1UL : 0UL); +3450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Error Interrupt is enabled or disabled. +3454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 EIE LL_USART_IsEnabledIT_ERROR +3455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_ERROR(const USART_TypeDef *USARTx) +3459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_EIE) == (USART_CR3_EIE)) ? 1UL : 0UL); +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART CTS Interrupt is enabled or disabled. +3465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +3466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +3467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSIE LL_USART_IsEnabledIT_CTS +3468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CTS(const USART_TypeDef *USARTx) +3472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE)) ? 1UL : 0UL); +3474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +3477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) +3478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Wake Up from Stop Mode Interrupt is enabled or disabled. +3480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +3481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +3482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUFIE LL_USART_IsEnabledIT_WKUP +3483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_WKUP(const USART_TypeDef *USARTx) +3487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_WUFIE) == (USART_CR3_WUFIE)) ? 1UL : 0UL); +3489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ +3492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +3493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) +3494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Function available only on devices supporting Transmit Complete before Guard Time feature */ +3495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the Smartcard Transmission Complete Before Guard Time Interrupt is enabled or +3497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + ARM GAS /tmp/ccdsDELB.s page 405 + + +3498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 TCBGTIE LL_USART_IsEnabledIT_TCBGT +3500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TCBGT(const USART_TypeDef *USARTx) +3504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_TCBGTIE) == (USART_CR3_TCBGTIE)) ? 1UL : 0UL); +3506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ +3508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +3511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_DMA_Management DMA_Management +3514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +3515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable DMA Mode for reception +3519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAR LL_USART_EnableDMAReq_RX +3520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDMAReq_RX(USART_TypeDef *USARTx) +3524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAR); +3526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable DMA Mode for reception +3530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAR LL_USART_DisableDMAReq_RX +3531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDMAReq_RX(USART_TypeDef *USARTx) +3535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAR); +3537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if DMA Mode is enabled for reception +3541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAR LL_USART_IsEnabledDMAReq_RX +3542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_RX(const USART_TypeDef *USARTx) +3546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_DMAR) == (USART_CR3_DMAR)) ? 1UL : 0UL); +3548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable DMA Mode for transmission +3552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAT LL_USART_EnableDMAReq_TX +3553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + ARM GAS /tmp/ccdsDELB.s page 406 + + +3555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDMAReq_TX(USART_TypeDef *USARTx) +3557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAT); + 4712 .loc 7 3558 3 is_stmt 1 view .LVU1612 + 4713 .LBB471: + 4714 .LBB472: + 4715 .loc 7 3558 3 view .LVU1613 + 4716 .loc 7 3558 3 view .LVU1614 + 4717 .loc 7 3558 3 view .LVU1615 + 4718 00e8 764A ldr r2, .L182+76 + 4719 .LVL340: + 4720 .LBB473: + 4721 .LBI473: + 4722 .file 8 "Drivers/CMSIS/Include/cmsis_gcc.h" + 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** + 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h + 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file + 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.0.4 + 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018 + 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ + 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* + 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 + 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may + 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. + 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at + 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 + 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software + 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT + 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and + 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. + 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 24:Drivers/CMSIS/Include/cmsis_gcc.h **** + 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H + 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H + 27:Drivers/CMSIS/Include/cmsis_gcc.h **** + 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ + 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" + 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" + 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" + 33:Drivers/CMSIS/Include/cmsis_gcc.h **** + 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ + 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin + 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) + 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 38:Drivers/CMSIS/Include/cmsis_gcc.h **** + 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ + 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM + 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm + 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + ARM GAS /tmp/ccdsDELB.s page 407 + + + 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE + 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline + 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE + 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline + 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE + 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline + 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN + 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) + 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED + 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) + 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK + 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) + 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED + 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) + 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT + 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION + 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) + 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ + 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE + 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- + 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ + 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add + 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE + 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + ARM GAS /tmp/ccdsDELB.s page 408 + + + 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- + 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ + 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add + 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED + 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) + 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT + 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict + 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 116:Drivers/CMSIS/Include/cmsis_gcc.h **** + 117:Drivers/CMSIS/Include/cmsis_gcc.h **** + 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ + 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface + 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 123:Drivers/CMSIS/Include/cmsis_gcc.h **** + 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts + 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void) + 130:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); + 132:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 133:Drivers/CMSIS/Include/cmsis_gcc.h **** + 134:Drivers/CMSIS/Include/cmsis_gcc.h **** + 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts + 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. + 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) + 141:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); + 143:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 144:Drivers/CMSIS/Include/cmsis_gcc.h **** + 145:Drivers/CMSIS/Include/cmsis_gcc.h **** + 146:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register + 148:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register. + 149:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value + 150:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 151:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) + 152:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 153:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 154:Drivers/CMSIS/Include/cmsis_gcc.h **** + 155:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) ); + 156:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + ARM GAS /tmp/ccdsDELB.s page 409 + + + 157:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 158:Drivers/CMSIS/Include/cmsis_gcc.h **** + 159:Drivers/CMSIS/Include/cmsis_gcc.h **** + 160:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 161:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 162:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure) + 163:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode. + 164:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value + 165:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 166:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) + 167:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 168:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 169:Drivers/CMSIS/Include/cmsis_gcc.h **** + 170:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + 171:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 172:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 174:Drivers/CMSIS/Include/cmsis_gcc.h **** + 175:Drivers/CMSIS/Include/cmsis_gcc.h **** + 176:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 177:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register + 178:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register. + 179:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 180:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 181:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) + 182:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 183:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + 184:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 185:Drivers/CMSIS/Include/cmsis_gcc.h **** + 186:Drivers/CMSIS/Include/cmsis_gcc.h **** + 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 188:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure) + 190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state. + 191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 192:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) + 194:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + 196:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 197:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 198:Drivers/CMSIS/Include/cmsis_gcc.h **** + 199:Drivers/CMSIS/Include/cmsis_gcc.h **** + 200:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 201:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register + 202:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register. + 203:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value + 204:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 205:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void) + 206:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 207:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 208:Drivers/CMSIS/Include/cmsis_gcc.h **** + 209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + 210:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 211:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 212:Drivers/CMSIS/Include/cmsis_gcc.h **** + 213:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccdsDELB.s page 410 + + + 214:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 215:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register + 216:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register. + 217:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value + 218:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 219:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void) + 220:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 221:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 222:Drivers/CMSIS/Include/cmsis_gcc.h **** + 223:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + 224:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 225:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 226:Drivers/CMSIS/Include/cmsis_gcc.h **** + 227:Drivers/CMSIS/Include/cmsis_gcc.h **** + 228:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register + 230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register. + 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value + 232:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(void) + 234:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 235:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 236:Drivers/CMSIS/Include/cmsis_gcc.h **** + 237:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + 238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 239:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 240:Drivers/CMSIS/Include/cmsis_gcc.h **** + 241:Drivers/CMSIS/Include/cmsis_gcc.h **** + 242:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer + 244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP). + 245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 246:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void) + 248:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 250:Drivers/CMSIS/Include/cmsis_gcc.h **** + 251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) ); + 252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 253:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 254:Drivers/CMSIS/Include/cmsis_gcc.h **** + 255:Drivers/CMSIS/Include/cmsis_gcc.h **** + 256:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 257:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure) + 259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s + 260:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 261:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 262:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) + 263:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 264:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 265:Drivers/CMSIS/Include/cmsis_gcc.h **** + 266:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + 267:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 268:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 269:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 270:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccdsDELB.s page 411 + + + 271:Drivers/CMSIS/Include/cmsis_gcc.h **** + 272:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 273:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer + 274:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP). + 275:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 276:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 277:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) + 278:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 279:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); + 280:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 281:Drivers/CMSIS/Include/cmsis_gcc.h **** + 282:Drivers/CMSIS/Include/cmsis_gcc.h **** + 283:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 284:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 285:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 286:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta + 287:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 288:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 289:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) + 290:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 291:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); + 292:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 293:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 294:Drivers/CMSIS/Include/cmsis_gcc.h **** + 295:Drivers/CMSIS/Include/cmsis_gcc.h **** + 296:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 297:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer + 298:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP). + 299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 300:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void) + 302:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 304:Drivers/CMSIS/Include/cmsis_gcc.h **** + 305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) ); + 306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 307:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 308:Drivers/CMSIS/Include/cmsis_gcc.h **** + 309:Drivers/CMSIS/Include/cmsis_gcc.h **** + 310:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 311:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 312:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure) + 313:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat + 314:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 315:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 316:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) + 317:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 319:Drivers/CMSIS/Include/cmsis_gcc.h **** + 320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + 321:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 322:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 323:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 324:Drivers/CMSIS/Include/cmsis_gcc.h **** + 325:Drivers/CMSIS/Include/cmsis_gcc.h **** + 326:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 327:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer + ARM GAS /tmp/ccdsDELB.s page 412 + + + 328:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP). + 329:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 330:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 331:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) + 332:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); + 334:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 335:Drivers/CMSIS/Include/cmsis_gcc.h **** + 336:Drivers/CMSIS/Include/cmsis_gcc.h **** + 337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 338:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 339:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure) + 340:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + 341:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 342:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 343:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) + 344:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 345:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); + 346:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 347:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 348:Drivers/CMSIS/Include/cmsis_gcc.h **** + 349:Drivers/CMSIS/Include/cmsis_gcc.h **** + 350:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 351:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 352:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Stack Pointer (non-secure) + 353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + 354:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value + 355:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) + 357:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 359:Drivers/CMSIS/Include/cmsis_gcc.h **** + 360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + 361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 362:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 363:Drivers/CMSIS/Include/cmsis_gcc.h **** + 364:Drivers/CMSIS/Include/cmsis_gcc.h **** + 365:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure) + 367:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + 368:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set + 369:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 370:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) + 371:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); + 373:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 374:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 375:Drivers/CMSIS/Include/cmsis_gcc.h **** + 376:Drivers/CMSIS/Include/cmsis_gcc.h **** + 377:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 378:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask + 379:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register. + 380:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 381:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 382:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) + 383:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 384:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + ARM GAS /tmp/ccdsDELB.s page 413 + + + 385:Drivers/CMSIS/Include/cmsis_gcc.h **** + 386:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 387:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 388:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 389:Drivers/CMSIS/Include/cmsis_gcc.h **** + 390:Drivers/CMSIS/Include/cmsis_gcc.h **** + 391:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 392:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 393:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure) + 394:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg + 395:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 396:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 397:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) + 398:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 399:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 400:Drivers/CMSIS/Include/cmsis_gcc.h **** + 401:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + 402:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 403:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 404:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 405:Drivers/CMSIS/Include/cmsis_gcc.h **** + 406:Drivers/CMSIS/Include/cmsis_gcc.h **** + 407:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 408:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask + 409:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register. + 410:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 411:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 412:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) + 413:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 415:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 416:Drivers/CMSIS/Include/cmsis_gcc.h **** + 417:Drivers/CMSIS/Include/cmsis_gcc.h **** + 418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 419:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure) + 421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + 422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 423:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 424:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) + 425:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 426:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); + 427:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 428:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 429:Drivers/CMSIS/Include/cmsis_gcc.h **** + 430:Drivers/CMSIS/Include/cmsis_gcc.h **** + 431:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 433:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 434:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 435:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ + 436:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + 437:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 438:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 439:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void) + 440:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 441:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory"); + ARM GAS /tmp/ccdsDELB.s page 414 + + + 442:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 443:Drivers/CMSIS/Include/cmsis_gcc.h **** + 444:Drivers/CMSIS/Include/cmsis_gcc.h **** + 445:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 446:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ + 447:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR. + 448:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 449:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 450:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void) + 451:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 452:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory"); + 453:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 454:Drivers/CMSIS/Include/cmsis_gcc.h **** + 455:Drivers/CMSIS/Include/cmsis_gcc.h **** + 456:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 457:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority + 458:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register. + 459:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 460:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 461:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) + 462:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 463:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 464:Drivers/CMSIS/Include/cmsis_gcc.h **** + 465:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + 466:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 467:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 468:Drivers/CMSIS/Include/cmsis_gcc.h **** + 469:Drivers/CMSIS/Include/cmsis_gcc.h **** + 470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 471:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure) + 473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state. + 474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 475:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) + 477:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 479:Drivers/CMSIS/Include/cmsis_gcc.h **** + 480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + 481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 482:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 483:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 484:Drivers/CMSIS/Include/cmsis_gcc.h **** + 485:Drivers/CMSIS/Include/cmsis_gcc.h **** + 486:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority + 488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register. + 489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 490:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) + 492:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); + 494:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 495:Drivers/CMSIS/Include/cmsis_gcc.h **** + 496:Drivers/CMSIS/Include/cmsis_gcc.h **** + 497:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 498:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + ARM GAS /tmp/ccdsDELB.s page 415 + + + 499:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure) + 500:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state. + 501:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 502:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 503:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) + 504:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 505:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); + 506:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 507:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 508:Drivers/CMSIS/Include/cmsis_gcc.h **** + 509:Drivers/CMSIS/Include/cmsis_gcc.h **** + 510:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 511:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition + 512:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable + 513:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level. + 514:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 515:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 516:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) + 517:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 518:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); + 519:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 520:Drivers/CMSIS/Include/cmsis_gcc.h **** + 521:Drivers/CMSIS/Include/cmsis_gcc.h **** + 522:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 523:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask + 524:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register. + 525:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 526:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) + 528:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 530:Drivers/CMSIS/Include/cmsis_gcc.h **** + 531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + 532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 533:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 534:Drivers/CMSIS/Include/cmsis_gcc.h **** + 535:Drivers/CMSIS/Include/cmsis_gcc.h **** + 536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 537:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 538:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure) + 539:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state. + 540:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 541:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 542:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) + 543:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 544:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 545:Drivers/CMSIS/Include/cmsis_gcc.h **** + 546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + 547:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 548:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 549:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 550:Drivers/CMSIS/Include/cmsis_gcc.h **** + 551:Drivers/CMSIS/Include/cmsis_gcc.h **** + 552:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 553:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask + 554:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register. + 555:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + ARM GAS /tmp/ccdsDELB.s page 416 + + + 556:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 557:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) + 558:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 559:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); + 560:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 561:Drivers/CMSIS/Include/cmsis_gcc.h **** + 562:Drivers/CMSIS/Include/cmsis_gcc.h **** + 563:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 564:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 565:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure) + 566:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state. + 567:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 568:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 569:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) + 570:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 571:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); + 572:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 573:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 574:Drivers/CMSIS/Include/cmsis_gcc.h **** + 575:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 576:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 577:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + 578:Drivers/CMSIS/Include/cmsis_gcc.h **** + 579:Drivers/CMSIS/Include/cmsis_gcc.h **** + 580:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 581:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + 582:Drivers/CMSIS/Include/cmsis_gcc.h **** + 583:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit + 585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 588:Drivers/CMSIS/Include/cmsis_gcc.h **** + 589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + 590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 591:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) + 593:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 595:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 596:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 597:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 598:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 599:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 600:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + 601:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 602:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 603:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 604:Drivers/CMSIS/Include/cmsis_gcc.h **** + 605:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + 606:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 607:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure) + 608:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 609:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 610:Drivers/CMSIS/Include/cmsis_gcc.h **** + 611:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in + 612:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + ARM GAS /tmp/ccdsDELB.s page 417 + + + 613:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 614:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) + 615:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 616:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 617:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 618:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 619:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 620:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 621:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + 622:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 623:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 624:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 625:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 626:Drivers/CMSIS/Include/cmsis_gcc.h **** + 627:Drivers/CMSIS/Include/cmsis_gcc.h **** + 628:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 629:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit + 630:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 631:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 632:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 633:Drivers/CMSIS/Include/cmsis_gcc.h **** + 634:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + 635:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 636:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 637:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) + 638:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 639:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 640:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); + 645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 646:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 647:Drivers/CMSIS/Include/cmsis_gcc.h **** + 648:Drivers/CMSIS/Include/cmsis_gcc.h **** + 649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 650:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 652:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 653:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 654:Drivers/CMSIS/Include/cmsis_gcc.h **** + 655:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s + 656:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 657:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 658:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) + 659:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 661:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 662:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 663:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 664:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); + 665:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 666:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 667:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 668:Drivers/CMSIS/Include/cmsis_gcc.h **** + 669:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccdsDELB.s page 418 + + + 670:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 671:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit + 672:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 673:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 674:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 675:Drivers/CMSIS/Include/cmsis_gcc.h **** + 676:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + 677:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 678:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 679:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) + 680:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 681:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 682:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 683:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 684:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 685:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 686:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 687:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + 688:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 689:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 690:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 691:Drivers/CMSIS/Include/cmsis_gcc.h **** + 692:Drivers/CMSIS/Include/cmsis_gcc.h **** + 693:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 694:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 695:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure) + 696:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 697:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 698:Drivers/CMSIS/Include/cmsis_gcc.h **** + 699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec + 700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 701:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) + 703:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 709:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + 710:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 711:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 712:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 713:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 714:Drivers/CMSIS/Include/cmsis_gcc.h **** + 715:Drivers/CMSIS/Include/cmsis_gcc.h **** + 716:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit + 718:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 719:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 720:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 721:Drivers/CMSIS/Include/cmsis_gcc.h **** + 722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + 723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + 724:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) + 726:Drivers/CMSIS/Include/cmsis_gcc.h **** { + ARM GAS /tmp/ccdsDELB.s page 419 + + + 727:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 728:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 729:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 730:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 731:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 732:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); + 733:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 734:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 735:Drivers/CMSIS/Include/cmsis_gcc.h **** + 736:Drivers/CMSIS/Include/cmsis_gcc.h **** + 737:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 738:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 739:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure) + 740:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 741:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 742:Drivers/CMSIS/Include/cmsis_gcc.h **** + 743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu + 744:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set + 745:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) + 747:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 748:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 749:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 750:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 751:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 752:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); + 753:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 754:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 756:Drivers/CMSIS/Include/cmsis_gcc.h **** + 757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + 759:Drivers/CMSIS/Include/cmsis_gcc.h **** + 760:Drivers/CMSIS/Include/cmsis_gcc.h **** + 761:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR + 763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register. + 764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value + 765:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 766:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void) + 767:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 768:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 769:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 770:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr) + 771:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 772:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 773:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr(); + 775:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 776:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 777:Drivers/CMSIS/Include/cmsis_gcc.h **** + 778:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + 779:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 781:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 782:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U); + 783:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + ARM GAS /tmp/ccdsDELB.s page 420 + + + 784:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 785:Drivers/CMSIS/Include/cmsis_gcc.h **** + 786:Drivers/CMSIS/Include/cmsis_gcc.h **** + 787:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 788:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR + 789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register. + 790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set + 791:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) + 793:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 795:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 796:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr) + 797:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 798:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 799:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 800:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr); + 801:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 802:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); + 803:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 804:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 805:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr; + 806:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 807:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 808:Drivers/CMSIS/Include/cmsis_gcc.h **** + 809:Drivers/CMSIS/Include/cmsis_gcc.h **** + 810:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */ + 811:Drivers/CMSIS/Include/cmsis_gcc.h **** + 812:Drivers/CMSIS/Include/cmsis_gcc.h **** + 813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ + 814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + 815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions + 816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 817:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 818:Drivers/CMSIS/Include/cmsis_gcc.h **** + 819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. + 820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" + 821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ + 822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) + 823:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) + 824:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) + 825:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) + 826:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 827:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) + 828:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) + 829:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) + 830:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 831:Drivers/CMSIS/Include/cmsis_gcc.h **** + 832:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 833:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation + 834:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. + 835:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 836:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") + 837:Drivers/CMSIS/Include/cmsis_gcc.h **** + 838:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 839:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt + 840:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o + ARM GAS /tmp/ccdsDELB.s page 421 + + + 841:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 842:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi") + 843:Drivers/CMSIS/Include/cmsis_gcc.h **** + 844:Drivers/CMSIS/Include/cmsis_gcc.h **** + 845:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 846:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event + 847:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter + 848:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. + 849:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 850:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe") + 851:Drivers/CMSIS/Include/cmsis_gcc.h **** + 852:Drivers/CMSIS/Include/cmsis_gcc.h **** + 853:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 854:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event + 855:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + 856:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 857:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") + 858:Drivers/CMSIS/Include/cmsis_gcc.h **** + 859:Drivers/CMSIS/Include/cmsis_gcc.h **** + 860:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 861:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier + 862:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, + 863:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, + 864:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. + 865:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) + 867:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); + 869:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 870:Drivers/CMSIS/Include/cmsis_gcc.h **** + 871:Drivers/CMSIS/Include/cmsis_gcc.h **** + 872:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 873:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Synchronization Barrier + 874:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Acts as a special kind of Data Memory Barrier. + 875:Drivers/CMSIS/Include/cmsis_gcc.h **** It completes when all explicit memory accesses before this instruction complete. + 876:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DSB(void) + 878:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory"); + 880:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 881:Drivers/CMSIS/Include/cmsis_gcc.h **** + 882:Drivers/CMSIS/Include/cmsis_gcc.h **** + 883:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 884:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Memory Barrier + 885:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Ensures the apparent order of the explicit memory operations before + 886:Drivers/CMSIS/Include/cmsis_gcc.h **** and after the instruction, without ensuring their completion. + 887:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 888:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DMB(void) + 889:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 890:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dmb 0xF":::"memory"); + 891:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 892:Drivers/CMSIS/Include/cmsis_gcc.h **** + 893:Drivers/CMSIS/Include/cmsis_gcc.h **** + 894:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 895:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (32 bit) + 896:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x785 + 897:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + ARM GAS /tmp/ccdsDELB.s page 422 + + + 898:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 899:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 900:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV(uint32_t value) + 901:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 902:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + 903:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_bswap32(value); + 904:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 905:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 906:Drivers/CMSIS/Include/cmsis_gcc.h **** + 907:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 908:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 909:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 910:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 911:Drivers/CMSIS/Include/cmsis_gcc.h **** + 912:Drivers/CMSIS/Include/cmsis_gcc.h **** + 913:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 914:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (16 bit) + 915:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes + 916:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 917:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 918:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 919:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) + 920:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 921:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 922:Drivers/CMSIS/Include/cmsis_gcc.h **** + 923:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 924:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 925:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 926:Drivers/CMSIS/Include/cmsis_gcc.h **** + 927:Drivers/CMSIS/Include/cmsis_gcc.h **** + 928:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 929:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (16 bit) + 930:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For exam + 931:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 932:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 933:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 934:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE int16_t __REVSH(int16_t value) + 935:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 936:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + 937:Drivers/CMSIS/Include/cmsis_gcc.h **** return (int16_t)__builtin_bswap16(value); + 938:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 939:Drivers/CMSIS/Include/cmsis_gcc.h **** int16_t result; + 940:Drivers/CMSIS/Include/cmsis_gcc.h **** + 941:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 942:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 943:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 944:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 945:Drivers/CMSIS/Include/cmsis_gcc.h **** + 946:Drivers/CMSIS/Include/cmsis_gcc.h **** + 947:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 948:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Rotate Right in unsigned value (32 bit) + 949:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Rotate Right (immediate) provides the value of the contents of a register rotated by a v + 950:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] op1 Value to rotate + 951:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] op2 Number of Bits to rotate + 952:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Rotated value + 953:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 954:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) + ARM GAS /tmp/ccdsDELB.s page 423 + + + 955:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 956:Drivers/CMSIS/Include/cmsis_gcc.h **** op2 %= 32U; + 957:Drivers/CMSIS/Include/cmsis_gcc.h **** if (op2 == 0U) + 958:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 959:Drivers/CMSIS/Include/cmsis_gcc.h **** return op1; + 960:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 961:Drivers/CMSIS/Include/cmsis_gcc.h **** return (op1 >> op2) | (op1 << (32U - op2)); + 962:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 963:Drivers/CMSIS/Include/cmsis_gcc.h **** + 964:Drivers/CMSIS/Include/cmsis_gcc.h **** + 965:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 966:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Breakpoint + 967:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Causes the processor to enter Debug state. + 968:Drivers/CMSIS/Include/cmsis_gcc.h **** Debug tools can use this to investigate system state when the instruction at a particula + 969:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value is ignored by the processor. + 970:Drivers/CMSIS/Include/cmsis_gcc.h **** If required, a debugger can use it to store additional information about the break + 971:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 972:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __BKPT(value) __ASM volatile ("bkpt "#value) + 973:Drivers/CMSIS/Include/cmsis_gcc.h **** + 974:Drivers/CMSIS/Include/cmsis_gcc.h **** + 975:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 976:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse bit order of value + 977:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the bit order of the given value. + 978:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 979:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 980:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) + 982:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 984:Drivers/CMSIS/Include/cmsis_gcc.h **** + 985:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 986:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 987:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + 989:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 990:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + 991:Drivers/CMSIS/Include/cmsis_gcc.h **** + 992:Drivers/CMSIS/Include/cmsis_gcc.h **** result = value; /* r will be reversed bits of v; first get LSB of v */ + 993:Drivers/CMSIS/Include/cmsis_gcc.h **** for (value >>= 1U; value != 0U; value >>= 1U) + 994:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 995:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= 1U; + 996:Drivers/CMSIS/Include/cmsis_gcc.h **** result |= value & 1U; + 997:Drivers/CMSIS/Include/cmsis_gcc.h **** s--; + 998:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 999:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= s; /* shift when v's highest bits are zero */ +1000:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif +1001:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; +1002:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1003:Drivers/CMSIS/Include/cmsis_gcc.h **** +1004:Drivers/CMSIS/Include/cmsis_gcc.h **** +1005:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1006:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Count leading zeros +1007:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Counts the number of leading zeros of a data value. +1008:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to count the leading zeros +1009:Drivers/CMSIS/Include/cmsis_gcc.h **** \return number of leading zeros in value +1010:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1011:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CLZ (uint8_t)__builtin_clz + ARM GAS /tmp/ccdsDELB.s page 424 + + +1012:Drivers/CMSIS/Include/cmsis_gcc.h **** +1013:Drivers/CMSIS/Include/cmsis_gcc.h **** +1014:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +1015:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ +1016:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ +1017:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +1018:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1019:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief LDR Exclusive (8 bit) +1020:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive LDR instruction for 8 bit value. +1021:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to data +1022:Drivers/CMSIS/Include/cmsis_gcc.h **** \return value of type uint8_t at (*ptr) +1023:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1024:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +1025:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1026:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; +1027:Drivers/CMSIS/Include/cmsis_gcc.h **** +1028:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) +1029:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +1030:Drivers/CMSIS/Include/cmsis_gcc.h **** #else +1031:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not +1032:Drivers/CMSIS/Include/cmsis_gcc.h **** accepted by assembler. So has to use following less efficient pattern. +1033:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1034:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +1035:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif +1036:Drivers/CMSIS/Include/cmsis_gcc.h **** return ((uint8_t) result); /* Add explicit type cast here */ +1037:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1038:Drivers/CMSIS/Include/cmsis_gcc.h **** +1039:Drivers/CMSIS/Include/cmsis_gcc.h **** +1040:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1041:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief LDR Exclusive (16 bit) +1042:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive LDR instruction for 16 bit values. +1043:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to data +1044:Drivers/CMSIS/Include/cmsis_gcc.h **** \return value of type uint16_t at (*ptr) +1045:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1046:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +1047:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1048:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; +1049:Drivers/CMSIS/Include/cmsis_gcc.h **** +1050:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) +1051:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +1052:Drivers/CMSIS/Include/cmsis_gcc.h **** #else +1053:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not +1054:Drivers/CMSIS/Include/cmsis_gcc.h **** accepted by assembler. So has to use following less efficient pattern. +1055:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1056:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +1057:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif +1058:Drivers/CMSIS/Include/cmsis_gcc.h **** return ((uint16_t) result); /* Add explicit type cast here */ +1059:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1060:Drivers/CMSIS/Include/cmsis_gcc.h **** +1061:Drivers/CMSIS/Include/cmsis_gcc.h **** +1062:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1063:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief LDR Exclusive (32 bit) +1064:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive LDR instruction for 32 bit values. +1065:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to data +1066:Drivers/CMSIS/Include/cmsis_gcc.h **** \return value of type uint32_t at (*ptr) +1067:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1068:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) + ARM GAS /tmp/ccdsDELB.s page 425 + + + 4723 .loc 8 1068 31 view .LVU1616 + 4724 .LBB474: +1069:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1070:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 4725 .loc 8 1070 5 view .LVU1617 +1071:Drivers/CMSIS/Include/cmsis_gcc.h **** +1072:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 4726 .loc 8 1072 4 view .LVU1618 + 4727 .syntax unified + 4728 @ 1072 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 4729 00ea 52E8003F ldrex r3, [r2] + 4730 @ 0 "" 2 + 4731 .LVL341: +1073:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 4732 .loc 8 1073 4 view .LVU1619 + 4733 .loc 8 1073 4 is_stmt 0 view .LVU1620 + 4734 .thumb + 4735 .syntax unified + 4736 .LBE474: + 4737 .LBE473: + 4738 .loc 7 3558 3 view .LVU1621 + 4739 00ee 43F08003 orr r3, r3, #128 + 4740 .LVL342: + 4741 .loc 7 3558 3 is_stmt 1 view .LVU1622 + 4742 .LBB475: + 4743 .LBI475: +1074:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1075:Drivers/CMSIS/Include/cmsis_gcc.h **** +1076:Drivers/CMSIS/Include/cmsis_gcc.h **** +1077:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1078:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief STR Exclusive (8 bit) +1079:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive STR instruction for 8 bit values. +1080:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to store +1081:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to location +1082:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 0 Function succeeded +1083:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 1 Function failed +1084:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1085:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +1086:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1087:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; +1088:Drivers/CMSIS/Include/cmsis_gcc.h **** +1089:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); +1090:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); +1091:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1092:Drivers/CMSIS/Include/cmsis_gcc.h **** +1093:Drivers/CMSIS/Include/cmsis_gcc.h **** +1094:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1095:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief STR Exclusive (16 bit) +1096:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive STR instruction for 16 bit values. +1097:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to store +1098:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to location +1099:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 0 Function succeeded +1100:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 1 Function failed +1101:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1102:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +1103:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1104:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + ARM GAS /tmp/ccdsDELB.s page 426 + + +1105:Drivers/CMSIS/Include/cmsis_gcc.h **** +1106:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); +1107:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); +1108:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1109:Drivers/CMSIS/Include/cmsis_gcc.h **** +1110:Drivers/CMSIS/Include/cmsis_gcc.h **** +1111:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1112:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief STR Exclusive (32 bit) +1113:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive STR instruction for 32 bit values. +1114:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to store +1115:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to location +1116:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 0 Function succeeded +1117:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 1 Function failed +1118:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1119:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) + 4744 .loc 8 1119 31 view .LVU1623 + 4745 .LBB476: +1120:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1121:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 4746 .loc 8 1121 4 view .LVU1624 +1122:Drivers/CMSIS/Include/cmsis_gcc.h **** +1123:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 4747 .loc 8 1123 4 view .LVU1625 + 4748 .syntax unified + 4749 @ 1123 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 4750 00f2 42E80031 strex r1, r3, [r2] + 4751 @ 0 "" 2 + 4752 .LVL343: +1124:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 4753 .loc 8 1124 4 view .LVU1626 + 4754 .loc 8 1124 4 is_stmt 0 view .LVU1627 + 4755 .thumb + 4756 .syntax unified + 4757 .LBE476: + 4758 .LBE475: + 4759 .loc 7 3558 3 view .LVU1628 + 4760 00f6 0029 cmp r1, #0 + 4761 00f8 F6D1 bne .L173 + 4762 .LBE472: + 4763 .LBE471: + 4764 .loc 7 3558 3 is_stmt 1 view .LVU1629 + 4765 .LVL344: +1522:Src/main.c **** LL_DMA_EnableIT_TE(DMA2, LL_DMA_STREAM_7); + 4766 .loc 2 1522 3 view .LVU1630 + 4767 .LBB477: + 4768 .LBI477: +2368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 0 direct mode error flag. +2372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CDMEIF0 LL_DMA_ClearFlag_DME0 +2373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_DME0(DMA_TypeDef *DMAx) +2377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CDMEIF0); + ARM GAS /tmp/ccdsDELB.s page 427 + + +2379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 1 direct mode error flag. +2383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CDMEIF1 LL_DMA_ClearFlag_DME1 +2384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_DME1(DMA_TypeDef *DMAx) +2388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CDMEIF1); +2390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 2 direct mode error flag. +2394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CDMEIF2 LL_DMA_ClearFlag_DME2 +2395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_DME2(DMA_TypeDef *DMAx) +2399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CDMEIF2); +2401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 3 direct mode error flag. +2405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CDMEIF3 LL_DMA_ClearFlag_DME3 +2406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_DME3(DMA_TypeDef *DMAx) +2410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CDMEIF3); +2412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 4 direct mode error flag. +2416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CDMEIF4 LL_DMA_ClearFlag_DME4 +2417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_DME4(DMA_TypeDef *DMAx) +2421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CDMEIF4); +2423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 5 direct mode error flag. +2427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CDMEIF5 LL_DMA_ClearFlag_DME5 +2428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_DME5(DMA_TypeDef *DMAx) +2432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CDMEIF5); +2434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + ARM GAS /tmp/ccdsDELB.s page 428 + + +2436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 6 direct mode error flag. +2438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CDMEIF6 LL_DMA_ClearFlag_DME6 +2439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_DME6(DMA_TypeDef *DMAx) +2443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CDMEIF6); +2445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 7 direct mode error flag. +2449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CDMEIF7 LL_DMA_ClearFlag_DME7 +2450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_DME7(DMA_TypeDef *DMAx) +2454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CDMEIF7); +2456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 0 FIFO error flag. +2460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CFEIF0 LL_DMA_ClearFlag_FE0 +2461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_FE0(DMA_TypeDef *DMAx) +2465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CFEIF0); +2467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 1 FIFO error flag. +2471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CFEIF1 LL_DMA_ClearFlag_FE1 +2472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_FE1(DMA_TypeDef *DMAx) +2476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CFEIF1); +2478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 2 FIFO error flag. +2482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CFEIF2 LL_DMA_ClearFlag_FE2 +2483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_FE2(DMA_TypeDef *DMAx) +2487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CFEIF2); +2489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 3 FIFO error flag. + ARM GAS /tmp/ccdsDELB.s page 429 + + +2493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CFEIF3 LL_DMA_ClearFlag_FE3 +2494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_FE3(DMA_TypeDef *DMAx) +2498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CFEIF3); +2500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 4 FIFO error flag. +2504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CFEIF4 LL_DMA_ClearFlag_FE4 +2505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_FE4(DMA_TypeDef *DMAx) +2509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CFEIF4); +2511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 5 FIFO error flag. +2515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CFEIF5 LL_DMA_ClearFlag_FE5 +2516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_FE5(DMA_TypeDef *DMAx) +2520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CFEIF5); +2522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 6 FIFO error flag. +2526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CFEIF6 LL_DMA_ClearFlag_FE6 +2527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_FE6(DMA_TypeDef *DMAx) +2531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CFEIF6); +2533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 7 FIFO error flag. +2537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CFEIF7 LL_DMA_ClearFlag_FE7 +2538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_FE7(DMA_TypeDef *DMAx) +2542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CFEIF7); +2544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} +2548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + ARM GAS /tmp/ccdsDELB.s page 430 + + +2550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EF_IT_Management IT_Management +2551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ +2552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable Half transfer interrupt. +2556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR HTIE LL_DMA_EnableIT_HT +2557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +2559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +2560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +2561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +2562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +2563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +2564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +2565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +2566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +2567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream) +2570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA +2572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable Transfer error interrupt. +2576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR TEIE LL_DMA_EnableIT_TE +2577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +2579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +2580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +2581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +2582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +2583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +2584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +2585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +2586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream) +2590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA +2592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable Transfer complete interrupt. +2596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR TCIE LL_DMA_EnableIT_TC +2597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +2599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +2600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +2601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +2602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +2603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +2604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +2605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +2606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + ARM GAS /tmp/ccdsDELB.s page 431 + + +2607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream) + 4769 .loc 6 2609 22 view .LVU1631 + 4770 .LBB478: +2610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA + 4771 .loc 6 2611 3 view .LVU1632 + 4772 00fa 734B ldr r3, .L182+80 + 4773 00fc D3F8B820 ldr r2, [r3, #184] + 4774 0100 42F01002 orr r2, r2, #16 + 4775 0104 C3F8B820 str r2, [r3, #184] + 4776 .LVL345: + 4777 .loc 6 2611 3 is_stmt 0 view .LVU1633 + 4778 .LBE478: + 4779 .LBE477: +1523:Src/main.c **** LL_DMA_ClearFlag_TC7(DMA2); + 4780 .loc 2 1523 3 is_stmt 1 view .LVU1634 + 4781 .LBB479: + 4782 .LBI479: +2589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 4783 .loc 6 2589 22 view .LVU1635 + 4784 .LBB480: +2591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 4785 .loc 6 2591 3 view .LVU1636 + 4786 0108 D3F8B820 ldr r2, [r3, #184] + 4787 010c 42F00402 orr r2, r2, #4 + 4788 0110 C3F8B820 str r2, [r3, #184] + 4789 .LVL346: +2591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 4790 .loc 6 2591 3 is_stmt 0 view .LVU1637 + 4791 .LBE480: + 4792 .LBE479: +1524:Src/main.c **** LL_DMA_ClearFlag_TE7(DMA2); + 4793 .loc 2 1524 3 is_stmt 1 view .LVU1638 + 4794 .LBB481: + 4795 .LBI481: +2277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 4796 .loc 6 2277 22 view .LVU1639 + 4797 .LBB482: +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 4798 .loc 6 2279 3 view .LVU1640 + 4799 0114 4FF00062 mov r2, #134217728 + 4800 0118 DA60 str r2, [r3, #12] + 4801 .LVL347: +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 4802 .loc 6 2279 3 is_stmt 0 view .LVU1641 + 4803 .LBE482: + 4804 .LBE481: +1525:Src/main.c **** LL_DMA_ConfigAddresses(DMA2, LL_DMA_STREAM_7, (uint32_t)&UART_DATA, LL_USART_DMA_GetRegAddr(USART + 4805 .loc 2 1525 3 is_stmt 1 view .LVU1642 + 4806 .LBB483: + 4807 .LBI483: +2365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 4808 .loc 6 2365 22 view .LVU1643 + 4809 .LBB484: +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + ARM GAS /tmp/ccdsDELB.s page 432 + + + 4810 .loc 6 2367 3 view .LVU1644 + 4811 011a 4FF00072 mov r2, #33554432 + 4812 011e DA60 str r2, [r3, #12] + 4813 .LVL348: +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 4814 .loc 6 2367 3 is_stmt 0 view .LVU1645 + 4815 .LBE484: + 4816 .LBE483: +1526:Src/main.c **** + 4817 .loc 2 1526 3 is_stmt 1 view .LVU1646 + 4818 0120 6A49 ldr r1, .L182+84 + 4819 .LVL349: + 4820 .LBB485: + 4821 .LBI485: +3559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable DMA Mode for transmission +3563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAT LL_USART_DisableDMAReq_TX +3564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDMAReq_TX(USART_TypeDef *USARTx) +3568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAT); +3570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if DMA Mode is enabled for transmission +3574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAT LL_USART_IsEnabledDMAReq_TX +3575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_TX(const USART_TypeDef *USARTx) +3579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_DMAT) == (USART_CR3_DMAT)) ? 1UL : 0UL); +3581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable DMA Disabling on Reception Error +3585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DDRE LL_USART_EnableDMADeactOnRxErr +3586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDMADeactOnRxErr(USART_TypeDef *USARTx) +3590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_DDRE); +3592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable DMA Disabling on Reception Error +3596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DDRE LL_USART_DisableDMADeactOnRxErr +3597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDMADeactOnRxErr(USART_TypeDef *USARTx) +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/ccdsDELB.s page 433 + + +3602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_DDRE); +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if DMA Disabling on Reception Error is disabled +3607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DDRE LL_USART_IsEnabledDMADeactOnRxErr +3608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledDMADeactOnRxErr(const USART_TypeDef *USARTx) +3612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_DDRE) == (USART_CR3_DDRE)) ? 1UL : 0UL); +3614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Get the data register address used for DMA transfer +3618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RDR RDR LL_USART_DMA_GetRegAddr\n +3619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll TDR TDR LL_USART_DMA_GetRegAddr +3620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Direction This parameter can be one of the following values: +3622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DMA_REG_DATA_TRANSMIT +3623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DMA_REG_DATA_RECEIVE +3624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Address of data register +3625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(const USART_TypeDef *USARTx, uint32_t Direction) + 4822 .loc 7 3626 26 view .LVU1647 + 4823 .LBB486: +3627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t data_reg_addr; + 4824 .loc 7 3628 3 view .LVU1648 +3629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if (Direction == LL_USART_DMA_REG_DATA_TRANSMIT) + 4825 .loc 7 3630 3 view .LVU1649 +3631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* return address of TDR register */ +3633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** data_reg_addr = (uint32_t) &(USARTx->TDR); + 4826 .loc 7 3633 5 view .LVU1650 + 4827 .loc 7 3633 32 is_stmt 0 view .LVU1651 + 4828 0122 6B4A ldr r2, .L182+88 + 4829 .LVL350: +3634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** else +3636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* return address of RDR register */ +3638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** data_reg_addr = (uint32_t) &(USARTx->RDR); +3639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return data_reg_addr; + 4830 .loc 7 3641 3 is_stmt 1 view .LVU1652 + 4831 .loc 7 3641 3 is_stmt 0 view .LVU1653 + 4832 .LBE486: + 4833 .LBE485: + 4834 .LBB487: + 4835 .LBI487: + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 4836 .loc 6 621 26 is_stmt 1 view .LVU1654 + 4837 .LBB488: + ARM GAS /tmp/ccdsDELB.s page 434 + + + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 4838 .loc 6 623 3 view .LVU1655 + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 4839 .loc 6 623 11 is_stmt 0 view .LVU1656 + 4840 0124 D3F8B830 ldr r3, [r3, #184] + 4841 0128 03F0C003 and r3, r3, #192 + 4842 .LVL351: + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 4843 .loc 6 623 11 view .LVU1657 + 4844 .LBE488: + 4845 .LBE487: + 4846 .LBB489: + 4847 .LBI489: +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 4848 .loc 6 1425 22 is_stmt 1 view .LVU1658 + 4849 .LBB490: +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 4850 .loc 6 1428 3 view .LVU1659 +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 4851 .loc 6 1428 6 is_stmt 0 view .LVU1660 + 4852 012c 402B cmp r3, #64 + 4853 012e 7AD0 beq .L179 +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR + 4854 .loc 6 1436 5 is_stmt 1 view .LVU1661 + 4855 0130 654B ldr r3, .L182+80 + 4856 .LVL352: +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR + 4857 .loc 6 1436 5 is_stmt 0 view .LVU1662 + 4858 0132 C3F8C010 str r1, [r3, #192] +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 4859 .loc 6 1437 5 is_stmt 1 view .LVU1663 + 4860 0136 C3F8C420 str r2, [r3, #196] + 4861 .L175: + 4862 .LVL353: +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 4863 .loc 6 1437 5 is_stmt 0 view .LVU1664 + 4864 .LBE490: + 4865 .LBE489: +1531:Src/main.c **** SD_SLIDE = 0; + 4866 .loc 2 1531 2 is_stmt 1 view .LVU1665 +1531:Src/main.c **** SD_SLIDE = 0; + 4867 .loc 2 1531 10 is_stmt 0 view .LVU1666 + 4868 013a 0024 movs r4, #0 + 4869 013c 654B ldr r3, .L182+92 + 4870 013e 1C60 str r4, [r3] +1532:Src/main.c **** //Reset all periphery + 4871 .loc 2 1532 2 is_stmt 1 view .LVU1667 +1532:Src/main.c **** //Reset all periphery + 4872 .loc 2 1532 11 is_stmt 0 view .LVU1668 + 4873 0140 654B ldr r3, .L182+96 + 4874 0142 1C60 str r4, [r3] +1534:Src/main.c **** HAL_GPIO_WritePin(EN_5V2_GPIO_Port, EN_5V2_Pin, GPIO_PIN_RESET); + 4875 .loc 2 1534 2 is_stmt 1 view .LVU1669 + 4876 0144 654F ldr r7, .L182+100 + 4877 0146 2246 mov r2, r4 + 4878 0148 0821 movs r1, #8 + 4879 014a 3846 mov r0, r7 + ARM GAS /tmp/ccdsDELB.s page 435 + + + 4880 014c FFF7FEFF bl HAL_GPIO_WritePin + 4881 .LVL354: +1535:Src/main.c **** HAL_GPIO_WritePin(LD1_EN_GPIO_Port, LD1_EN_Pin, GPIO_PIN_RESET); + 4882 .loc 2 1535 2 view .LVU1670 + 4883 0150 2246 mov r2, r4 + 4884 0152 0421 movs r1, #4 + 4885 0154 3846 mov r0, r7 + 4886 0156 FFF7FEFF bl HAL_GPIO_WritePin + 4887 .LVL355: +1536:Src/main.c **** HAL_GPIO_WritePin(LD2_EN_GPIO_Port, LD2_EN_Pin, GPIO_PIN_RESET); + 4888 .loc 2 1536 2 view .LVU1671 + 4889 015a DFF8A481 ldr r8, .L182+136 + 4890 015e 2246 mov r2, r4 + 4891 0160 4FF48071 mov r1, #256 + 4892 0164 4046 mov r0, r8 + 4893 0166 FFF7FEFF bl HAL_GPIO_WritePin + 4894 .LVL356: +1537:Src/main.c **** HAL_GPIO_WritePin(REF0_EN_GPIO_Port, REF0_EN_Pin, GPIO_PIN_RESET); + 4895 .loc 2 1537 2 view .LVU1672 + 4896 016a 2246 mov r2, r4 + 4897 016c 1021 movs r1, #16 + 4898 016e 3846 mov r0, r7 + 4899 0170 FFF7FEFF bl HAL_GPIO_WritePin + 4900 .LVL357: +1538:Src/main.c **** HAL_GPIO_WritePin(REF2_ON_GPIO_Port, REF2_ON_Pin, GPIO_PIN_RESET); + 4901 .loc 2 1538 2 view .LVU1673 + 4902 0174 5A4E ldr r6, .L182+104 + 4903 0176 2246 mov r2, r4 + 4904 0178 4FF48061 mov r1, #1024 + 4905 017c 3046 mov r0, r6 + 4906 017e FFF7FEFF bl HAL_GPIO_WritePin + 4907 .LVL358: +1539:Src/main.c **** HAL_GPIO_WritePin(TECEN1_GPIO_Port, TECEN1_Pin, GPIO_PIN_RESET); + 4908 .loc 2 1539 2 view .LVU1674 + 4909 0182 584D ldr r5, .L182+108 + 4910 0184 2246 mov r2, r4 + 4911 0186 0821 movs r1, #8 + 4912 0188 2846 mov r0, r5 + 4913 018a FFF7FEFF bl HAL_GPIO_WritePin + 4914 .LVL359: +1540:Src/main.c **** HAL_GPIO_WritePin(TECEN2_GPIO_Port, TECEN2_Pin, GPIO_PIN_RESET); + 4915 .loc 2 1540 2 view .LVU1675 + 4916 018e 2246 mov r2, r4 + 4917 0190 0121 movs r1, #1 + 4918 0192 2846 mov r0, r5 + 4919 0194 FFF7FEFF bl HAL_GPIO_WritePin + 4920 .LVL360: +1541:Src/main.c **** HAL_GPIO_WritePin(TEC1_PD_GPIO_Port, TEC1_PD_Pin, GPIO_PIN_RESET); + 4921 .loc 2 1541 2 view .LVU1676 + 4922 0198 2246 mov r2, r4 + 4923 019a 0221 movs r1, #2 + 4924 019c 2846 mov r0, r5 + 4925 019e FFF7FEFF bl HAL_GPIO_WritePin + 4926 .LVL361: +1542:Src/main.c **** HAL_GPIO_WritePin(TEC2_PD_GPIO_Port, TEC2_PD_Pin, GPIO_PIN_RESET); + 4927 .loc 2 1542 2 view .LVU1677 + 4928 01a2 2246 mov r2, r4 + ARM GAS /tmp/ccdsDELB.s page 436 + + + 4929 01a4 4FF40061 mov r1, #2048 + 4930 01a8 3046 mov r0, r6 + 4931 01aa FFF7FEFF bl HAL_GPIO_WritePin + 4932 .LVL362: +1543:Src/main.c **** // for (uint16_t i = 0; i < SD_Length; i++) + 4933 .loc 2 1543 2 view .LVU1678 + 4934 01ae 2246 mov r2, r4 + 4935 01b0 2021 movs r1, #32 + 4936 01b2 3846 mov r0, r7 + 4937 01b4 FFF7FEFF bl HAL_GPIO_WritePin + 4938 .LVL363: +1553:Src/main.c **** HAL_GPIO_WritePin(ADC_MPD2_CS_GPIO_Port, ADC_MPD2_CS_Pin, GPIO_PIN_SET);//Enable SPI for MPhD2 ADC + 4939 .loc 2 1553 2 view .LVU1679 + 4940 01b8 07F50067 add r7, r7, #2048 + 4941 01bc 0122 movs r2, #1 + 4942 01be 4FF48061 mov r1, #1024 + 4943 01c2 3846 mov r0, r7 + 4944 01c4 FFF7FEFF bl HAL_GPIO_WritePin + 4945 .LVL364: +1554:Src/main.c **** HAL_GPIO_WritePin(SPI4_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET); + 4946 .loc 2 1554 2 view .LVU1680 + 4947 01c8 474C ldr r4, .L182+112 + 4948 01ca 0122 movs r2, #1 + 4949 01cc 4021 movs r1, #64 + 4950 01ce 2046 mov r0, r4 + 4951 01d0 FFF7FEFF bl HAL_GPIO_WritePin + 4952 .LVL365: +1555:Src/main.c **** HAL_GPIO_WritePin(SPI5_CNV_GPIO_Port, SPI4_CNV_Pin, GPIO_PIN_SET); + 4953 .loc 2 1555 2 view .LVU1681 + 4954 01d4 0122 movs r2, #1 + 4955 01d6 4FF48041 mov r1, #16384 + 4956 01da 3846 mov r0, r7 + 4957 01dc FFF7FEFF bl HAL_GPIO_WritePin + 4958 .LVL366: +1556:Src/main.c **** HAL_GPIO_WritePin(DAC_LD1_CS_GPIO_Port, DAC_LD1_CS_Pin, GPIO_PIN_SET);//End operation with LDAC1 + 4959 .loc 2 1556 2 view .LVU1682 + 4960 01e0 0122 movs r2, #1 + 4961 01e2 4FF48041 mov r1, #16384 + 4962 01e6 2046 mov r0, r4 + 4963 01e8 FFF7FEFF bl HAL_GPIO_WritePin + 4964 .LVL367: +1557:Src/main.c **** HAL_GPIO_WritePin(DAC_LD2_CS_GPIO_Port, DAC_LD2_CS_Pin, GPIO_PIN_SET);//End operation with LDAC2 + 4965 .loc 2 1557 2 view .LVU1683 + 4966 01ec 0122 movs r2, #1 + 4967 01ee 4FF48041 mov r1, #16384 + 4968 01f2 3046 mov r0, r6 + 4969 01f4 FFF7FEFF bl HAL_GPIO_WritePin + 4970 .LVL368: +1558:Src/main.c **** HAL_GPIO_WritePin(DAC_TEC1_CS_GPIO_Port, DAC_TEC1_CS_Pin, GPIO_PIN_SET);//End operation with TEC1 + 4971 .loc 2 1558 2 view .LVU1684 + 4972 01f8 0122 movs r2, #1 + 4973 01fa 4021 movs r1, #64 + 4974 01fc 2846 mov r0, r5 + 4975 01fe FFF7FEFF bl HAL_GPIO_WritePin + 4976 .LVL369: +1559:Src/main.c **** HAL_GPIO_WritePin(DAC_TEC2_CS_GPIO_Port, DAC_TEC2_CS_Pin, GPIO_PIN_SET);//End operation with TEC2 + 4977 .loc 2 1559 2 view .LVU1685 + ARM GAS /tmp/ccdsDELB.s page 437 + + + 4978 0202 0122 movs r2, #1 + 4979 0204 4FF48051 mov r1, #4096 + 4980 0208 3046 mov r0, r6 + 4981 020a FFF7FEFF bl HAL_GPIO_WritePin + 4982 .LVL370: +1560:Src/main.c **** + 4983 .loc 2 1560 2 view .LVU1686 + 4984 020e 0122 movs r2, #1 + 4985 0210 1021 movs r1, #16 + 4986 0212 2846 mov r0, r5 + 4987 0214 FFF7FEFF bl HAL_GPIO_WritePin + 4988 .LVL371: +1564:Src/main.c **** { + 4989 .loc 2 1564 2 view .LVU1687 +1564:Src/main.c **** { + 4990 .loc 2 1564 6 is_stmt 0 view .LVU1688 + 4991 0218 0121 movs r1, #1 + 4992 021a 4046 mov r0, r8 + 4993 021c FFF7FEFF bl HAL_GPIO_ReadPin + 4994 .LVL372: +1564:Src/main.c **** { + 4995 .loc 2 1564 5 view .LVU1689 + 4996 0220 38B1 cbz r0, .L180 + 4997 .L170: +1594:Src/main.c **** static void Decode_uart(uint16_t *Command, LDx_SetupTypeDef *LD1_curr_setup, LDx_SetupTypeDef *LD2_ + 4998 .loc 2 1594 1 view .LVU1690 + 4999 0222 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 5000 .LVL373: + 5001 .L179: + 5002 .LBB492: + 5003 .LBB491: +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, + 5004 .loc 6 1430 5 is_stmt 1 view .LVU1691 + 5005 0226 284B ldr r3, .L182+80 + 5006 .LVL374: +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, + 5007 .loc 6 1430 5 is_stmt 0 view .LVU1692 + 5008 0228 C3F8C410 str r1, [r3, #196] +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 5009 .loc 6 1431 5 is_stmt 1 view .LVU1693 + 5010 022c C3F8C020 str r2, [r3, #192] + 5011 0230 83E7 b .L175 + 5012 .LVL375: + 5013 .L180: +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 5014 .loc 6 1431 5 is_stmt 0 view .LVU1694 + 5015 .LBE491: + 5016 .LBE492: +1567:Src/main.c **** { + 5017 .loc 2 1567 3 is_stmt 1 view .LVU1695 +1567:Src/main.c **** { + 5018 .loc 2 1567 7 is_stmt 0 view .LVU1696 + 5019 0232 4FF48071 mov r1, #256 + 5020 0236 2846 mov r0, r5 + 5021 0238 FFF7FEFF bl HAL_GPIO_ReadPin + 5022 .LVL376: +1567:Src/main.c **** { + ARM GAS /tmp/ccdsDELB.s page 438 + + + 5023 .loc 2 1567 6 view .LVU1697 + 5024 023c 0028 cmp r0, #0 + 5025 023e F0D1 bne .L170 +1570:Src/main.c **** if (test == 0) //0 - suc + 5026 .loc 2 1570 4 is_stmt 1 view .LVU1698 +1570:Src/main.c **** if (test == 0) //0 - suc + 5027 .loc 2 1570 11 is_stmt 0 view .LVU1699 + 5028 0240 2A48 ldr r0, .L182+116 + 5029 0242 FFF7FEFF bl Mount_SD + 5030 .LVL377: +1570:Src/main.c **** if (test == 0) //0 - suc + 5031 .loc 2 1570 9 view .LVU1700 + 5032 0246 2A4B ldr r3, .L182+120 + 5033 0248 1860 str r0, [r3] +1571:Src/main.c **** { + 5034 .loc 2 1571 4 is_stmt 1 view .LVU1701 +1571:Src/main.c **** { + 5035 .loc 2 1571 7 is_stmt 0 view .LVU1702 + 5036 024a 18B1 cbz r0, .L181 + 5037 .L177: +1583:Src/main.c **** } + 5038 .loc 2 1583 4 is_stmt 1 view .LVU1703 +1583:Src/main.c **** } + 5039 .loc 2 1583 14 is_stmt 0 view .LVU1704 + 5040 024c 294B ldr r3, .L182+124 + 5041 024e 0122 movs r2, #1 + 5042 0250 1A70 strb r2, [r3] +1594:Src/main.c **** static void Decode_uart(uint16_t *Command, LDx_SetupTypeDef *LD1_curr_setup, LDx_SetupTypeDef *LD2_ + 5043 .loc 2 1594 1 view .LVU1705 + 5044 0252 E6E7 b .L170 + 5045 .L181: +1574:Src/main.c **** test = Unmount_SD("/"); // 0 - succ + 5046 .loc 2 1574 5 is_stmt 1 view .LVU1706 +1574:Src/main.c **** test = Unmount_SD("/"); // 0 - succ + 5047 .loc 2 1574 12 is_stmt 0 view .LVU1707 + 5048 0254 1E23 movs r3, #30 + 5049 0256 1A46 mov r2, r3 + 5050 0258 2749 ldr r1, .L182+128 + 5051 025a 2848 ldr r0, .L182+132 + 5052 025c FFF7FEFF bl Seek_Read_File + 5053 .LVL378: +1574:Src/main.c **** test = Unmount_SD("/"); // 0 - succ + 5054 .loc 2 1574 10 view .LVU1708 + 5055 0260 234C ldr r4, .L182+120 + 5056 0262 2060 str r0, [r4] +1575:Src/main.c **** UART_rec_incr = 0; + 5057 .loc 2 1575 5 is_stmt 1 view .LVU1709 +1575:Src/main.c **** UART_rec_incr = 0; + 5058 .loc 2 1575 12 is_stmt 0 view .LVU1710 + 5059 0264 2148 ldr r0, .L182+116 + 5060 0266 FFF7FEFF bl Unmount_SD + 5061 .LVL379: +1575:Src/main.c **** UART_rec_incr = 0; + 5062 .loc 2 1575 10 view .LVU1711 + 5063 026a 2060 str r0, [r4] +1576:Src/main.c **** flg_tmt = 0;//Reset the timeout flag + 5064 .loc 2 1576 5 is_stmt 1 view .LVU1712 + ARM GAS /tmp/ccdsDELB.s page 439 + + +1576:Src/main.c **** flg_tmt = 0;//Reset the timeout flag + 5065 .loc 2 1576 19 is_stmt 0 view .LVU1713 + 5066 026c 0023 movs r3, #0 + 5067 026e 084A ldr r2, .L182+24 + 5068 0270 1380 strh r3, [r2] @ movhi +1577:Src/main.c **** } + 5069 .loc 2 1577 5 is_stmt 1 view .LVU1714 +1577:Src/main.c **** } + 5070 .loc 2 1577 13 is_stmt 0 view .LVU1715 + 5071 0272 064A ldr r2, .L182+20 + 5072 0274 1370 strb r3, [r2] + 5073 0276 E9E7 b .L177 + 5074 .L183: + 5075 .align 2 + 5076 .L182: + 5077 0278 00000000 .word .LANCHOR7 + 5078 027c 00000000 .word .LANCHOR3 + 5079 0280 00000000 .word .LANCHOR8 + 5080 0284 00000000 .word .LANCHOR9 + 5081 0288 00000000 .word .LANCHOR10 + 5082 028c 00000000 .word .LANCHOR11 + 5083 0290 00000000 .word .LANCHOR12 + 5084 0294 00000000 .word .LANCHOR13 + 5085 0298 00000000 .word .LANCHOR14 + 5086 029c 00000000 .word .LANCHOR15 + 5087 02a0 00000000 .word .LANCHOR16 + 5088 02a4 00000000 .word .LANCHOR6 + 5089 02a8 00000000 .word .LANCHOR17 + 5090 02ac 00000000 .word .LANCHOR18 + 5091 02b0 00000000 .word .LANCHOR19 + 5092 02b4 00000000 .word .LANCHOR20 + 5093 02b8 00000000 .word .LANCHOR21 + 5094 02bc 00000000 .word .LANCHOR22 + 5095 02c0 00100040 .word 1073745920 + 5096 02c4 08100140 .word 1073811464 + 5097 02c8 00640240 .word 1073898496 + 5098 02cc 00000000 .word .LANCHOR23 + 5099 02d0 28100140 .word 1073811496 + 5100 02d4 00000000 .word .LANCHOR24 + 5101 02d8 00000000 .word .LANCHOR25 + 5102 02dc 00080240 .word 1073874944 + 5103 02e0 00040240 .word 1073873920 + 5104 02e4 00000240 .word 1073872896 + 5105 02e8 00140240 .word 1073878016 + 5106 02ec 00000000 .word .LC0 + 5107 02f0 00000000 .word .LANCHOR5 + 5108 02f4 00000000 .word .LANCHOR27 + 5109 02f8 00000000 .word .LANCHOR26 + 5110 02fc 04000000 .word .LC1 + 5111 0300 000C0240 .word 1073875968 + 5112 .cfi_endproc + 5113 .LFE1203: + 5115 .section .text.Get_ADC,"ax",%progbits + 5116 .align 1 + 5117 .syntax unified + 5118 .thumb + 5119 .thumb_func + ARM GAS /tmp/ccdsDELB.s page 440 + + + 5120 .fpu fpv5-d16 + 5122 Get_ADC: + 5123 .LVL380: + 5124 .LFB1208: +1965:Src/main.c **** uint16_t OUT; + 5125 .loc 2 1965 1 is_stmt 1 view -0 + 5126 .cfi_startproc + 5127 @ args = 0, pretend = 0, frame = 0 + 5128 @ frame_needed = 0, uses_anonymous_args = 0 +1965:Src/main.c **** uint16_t OUT; + 5129 .loc 2 1965 1 is_stmt 0 view .LVU1717 + 5130 0000 10B5 push {r4, lr} + 5131 .LCFI39: + 5132 .cfi_def_cfa_offset 8 + 5133 .cfi_offset 4, -8 + 5134 .cfi_offset 14, -4 + 5135 0002 0024 movs r4, #0 +1966:Src/main.c **** switch (num) + 5136 .loc 2 1966 2 is_stmt 1 view .LVU1718 +1967:Src/main.c **** { + 5137 .loc 2 1967 2 view .LVU1719 + 5138 0004 0528 cmp r0, #5 + 5139 0006 2CD8 bhi .L193 + 5140 0008 DFE800F0 tbb [pc, r0] + 5141 .L187: + 5142 000c 03 .byte (.L192-.L187)/2 + 5143 000d 08 .byte (.L191-.L187)/2 + 5144 000e 12 .byte (.L190-.L187)/2 + 5145 000f 17 .byte (.L189-.L187)/2 + 5146 0010 1C .byte (.L188-.L187)/2 + 5147 0011 26 .byte (.L186-.L187)/2 + 5148 .p2align 1 + 5149 .L192: +1970:Src/main.c **** break; + 5150 .loc 2 1970 5 view .LVU1720 + 5151 0012 1548 ldr r0, .L195 + 5152 .LVL381: +1970:Src/main.c **** break; + 5153 .loc 2 1970 5 is_stmt 0 view .LVU1721 + 5154 0014 FFF7FEFF bl HAL_ADC_Start + 5155 .LVL382: +1971:Src/main.c **** case 1: + 5156 .loc 2 1971 4 is_stmt 1 view .LVU1722 + 5157 0018 2046 mov r0, r4 + 5158 .L185: + 5159 .LVL383: +1990:Src/main.c **** } + 5160 .loc 2 1990 2 view .LVU1723 +1991:Src/main.c **** uint16_t PID_Controller_Temp(LDx_SetupTypeDef * LDx_curr_setup, LDx_ParamTypeDef * LDx_results, uin + 5161 .loc 2 1991 1 is_stmt 0 view .LVU1724 + 5162 001a 10BD pop {r4, pc} + 5163 .LVL384: + 5164 .L191: +1973:Src/main.c **** OUT = HAL_ADC_GetValue(&hadc1); // Get value adc + 5165 .loc 2 1973 5 is_stmt 1 view .LVU1725 + 5166 001c 124C ldr r4, .L195 + 5167 001e 6421 movs r1, #100 + ARM GAS /tmp/ccdsDELB.s page 441 + + + 5168 0020 2046 mov r0, r4 + 5169 .LVL385: +1973:Src/main.c **** OUT = HAL_ADC_GetValue(&hadc1); // Get value adc + 5170 .loc 2 1973 5 is_stmt 0 view .LVU1726 + 5171 0022 FFF7FEFF bl HAL_ADC_PollForConversion + 5172 .LVL386: +1974:Src/main.c **** break; + 5173 .loc 2 1974 9 is_stmt 1 view .LVU1727 +1974:Src/main.c **** break; + 5174 .loc 2 1974 15 is_stmt 0 view .LVU1728 + 5175 0026 2046 mov r0, r4 + 5176 0028 FFF7FEFF bl HAL_ADC_GetValue + 5177 .LVL387: +1974:Src/main.c **** break; + 5178 .loc 2 1974 13 view .LVU1729 + 5179 002c 80B2 uxth r0, r0 + 5180 .LVL388: +1975:Src/main.c **** case 2: + 5181 .loc 2 1975 4 is_stmt 1 view .LVU1730 + 5182 002e F4E7 b .L185 + 5183 .LVL389: + 5184 .L190: +1977:Src/main.c **** break; + 5185 .loc 2 1977 5 view .LVU1731 + 5186 0030 0D48 ldr r0, .L195 + 5187 .LVL390: +1977:Src/main.c **** break; + 5188 .loc 2 1977 5 is_stmt 0 view .LVU1732 + 5189 0032 FFF7FEFF bl HAL_ADC_Stop + 5190 .LVL391: +1978:Src/main.c **** case 3: + 5191 .loc 2 1978 4 is_stmt 1 view .LVU1733 + 5192 0036 2046 mov r0, r4 + 5193 0038 EFE7 b .L185 + 5194 .LVL392: + 5195 .L189: +1980:Src/main.c **** break; + 5196 .loc 2 1980 5 view .LVU1734 + 5197 003a 0C48 ldr r0, .L195+4 + 5198 .LVL393: +1980:Src/main.c **** break; + 5199 .loc 2 1980 5 is_stmt 0 view .LVU1735 + 5200 003c FFF7FEFF bl HAL_ADC_Start + 5201 .LVL394: +1981:Src/main.c **** case 4: + 5202 .loc 2 1981 4 is_stmt 1 view .LVU1736 + 5203 0040 2046 mov r0, r4 + 5204 0042 EAE7 b .L185 + 5205 .LVL395: + 5206 .L188: +1983:Src/main.c **** OUT = HAL_ADC_GetValue(&hadc3); // Get value adc + 5207 .loc 2 1983 5 view .LVU1737 + 5208 0044 094C ldr r4, .L195+4 + 5209 0046 6421 movs r1, #100 + 5210 0048 2046 mov r0, r4 + 5211 .LVL396: +1983:Src/main.c **** OUT = HAL_ADC_GetValue(&hadc3); // Get value adc + ARM GAS /tmp/ccdsDELB.s page 442 + + + 5212 .loc 2 1983 5 is_stmt 0 view .LVU1738 + 5213 004a FFF7FEFF bl HAL_ADC_PollForConversion + 5214 .LVL397: +1984:Src/main.c **** break; + 5215 .loc 2 1984 9 is_stmt 1 view .LVU1739 +1984:Src/main.c **** break; + 5216 .loc 2 1984 15 is_stmt 0 view .LVU1740 + 5217 004e 2046 mov r0, r4 + 5218 0050 FFF7FEFF bl HAL_ADC_GetValue + 5219 .LVL398: +1984:Src/main.c **** break; + 5220 .loc 2 1984 13 view .LVU1741 + 5221 0054 80B2 uxth r0, r0 + 5222 .LVL399: +1985:Src/main.c **** case 5: + 5223 .loc 2 1985 4 is_stmt 1 view .LVU1742 + 5224 0056 E0E7 b .L185 + 5225 .LVL400: + 5226 .L186: +1987:Src/main.c **** break; + 5227 .loc 2 1987 9 view .LVU1743 + 5228 0058 0448 ldr r0, .L195+4 + 5229 .LVL401: +1987:Src/main.c **** break; + 5230 .loc 2 1987 9 is_stmt 0 view .LVU1744 + 5231 005a FFF7FEFF bl HAL_ADC_Stop + 5232 .LVL402: +1988:Src/main.c **** } + 5233 .loc 2 1988 4 is_stmt 1 view .LVU1745 + 5234 005e 2046 mov r0, r4 + 5235 0060 DBE7 b .L185 + 5236 .LVL403: + 5237 .L193: +1967:Src/main.c **** { + 5238 .loc 2 1967 2 is_stmt 0 view .LVU1746 + 5239 0062 2046 mov r0, r4 + 5240 .LVL404: +1967:Src/main.c **** { + 5241 .loc 2 1967 2 view .LVU1747 + 5242 0064 D9E7 b .L185 + 5243 .L196: + 5244 0066 00BF .align 2 + 5245 .L195: + 5246 0068 00000000 .word .LANCHOR28 + 5247 006c 00000000 .word .LANCHOR29 + 5248 .cfi_endproc + 5249 .LFE1208: + 5251 .section .text.Stop_TIM10,"ax",%progbits + 5252 .align 1 + 5253 .syntax unified + 5254 .thumb + 5255 .thumb_func + 5256 .fpu fpv5-d16 + 5258 Stop_TIM10: + 5259 .LFB1217: +2030:Src/main.c **** uint8_t CheckChecksum(uint16_t *pbuff) +2031:Src/main.c **** { + ARM GAS /tmp/ccdsDELB.s page 443 + + +2032:Src/main.c **** uint16_t cl_ind; +2033:Src/main.c **** +2034:Src/main.c **** switch (UART_header) +2035:Src/main.c **** { +2036:Src/main.c **** case 0x7777: +2037:Src/main.c **** cl_ind = TSK_16 - 2; +2038:Src/main.c **** break; +2039:Src/main.c **** case 0x1111: +2040:Src/main.c **** cl_ind = CL_16 - 2; +2041:Src/main.c **** break; +2042:Src/main.c **** default: +2043:Src/main.c **** return 0; +2044:Src/main.c **** break; +2045:Src/main.c **** } +2046:Src/main.c **** +2047:Src/main.c **** CS_result = CalculateChecksum(pbuff, cl_ind); +2048:Src/main.c **** +2049:Src/main.c **** return ((CS_result == COMMAND[cl_ind]) ? 1 : 0); +2050:Src/main.c **** } +2051:Src/main.c **** uint16_t CalculateChecksum(uint16_t *pbuff, uint16_t len) +2052:Src/main.c **** { +2053:Src/main.c **** short i; +2054:Src/main.c **** uint16_t cs = *pbuff; +2055:Src/main.c **** +2056:Src/main.c **** for(i = 1; i < len; i++) +2057:Src/main.c **** { +2058:Src/main.c **** cs ^= *(pbuff+i); +2059:Src/main.c **** } +2060:Src/main.c **** return cs; +2061:Src/main.c **** } +2062:Src/main.c **** +2063:Src/main.c **** /*int SD_Init(void) +2064:Src/main.c **** { +2065:Src/main.c **** int test=0; +2066:Src/main.c **** if (HAL_GPIO_ReadPin(SDMMC1_EN_GPIO_Port, SDMMC1_EN_Pin)==GPIO_PIN_RESET) +2067:Src/main.c **** { +2068:Src/main.c **** test = Mount_SD("/"); +2069:Src/main.c **** if (test == 0) //0 - suc +2070:Src/main.c **** { +2071:Src/main.c **** //Format_SD(); +2072:Src/main.c **** test = Create_File("FILE1.TXT"); // 0 -suc +2073:Src/main.c **** //Create_File("FILE2.TXT"); +2074:Src/main.c **** Write_File ("FILE1.TXT", "____OSGG main borad information. Program made by Kazakov Viktor. Part +2075:Src/main.c **** test = Unmount_SD("/"); // 0 - succ +2076:Src/main.c **** return test; +2077:Src/main.c **** } +2078:Src/main.c **** else +2079:Src/main.c **** { +2080:Src/main.c **** return 1; +2081:Src/main.c **** } +2082:Src/main.c **** } +2083:Src/main.c **** else +2084:Src/main.c **** { +2085:Src/main.c **** return 1; +2086:Src/main.c **** } +2087:Src/main.c **** }*/ +2088:Src/main.c **** + ARM GAS /tmp/ccdsDELB.s page 444 + + +2089:Src/main.c **** int SD_SAVE(uint16_t *pbuff) +2090:Src/main.c **** { +2091:Src/main.c **** int test=0; +2092:Src/main.c **** if (HAL_GPIO_ReadPin(SDMMC1_EN_GPIO_Port, SDMMC1_EN_Pin)==GPIO_PIN_RESET) +2093:Src/main.c **** { +2094:Src/main.c **** test = Mount_SD("/"); +2095:Src/main.c **** if (test == 0) //0 - suc +2096:Src/main.c **** { +2097:Src/main.c **** //Format_SD(); +2098:Src/main.c **** test = Update_File_byte("FILE1.TXT", (uint8_t *)pbuff, DL_8); +2099:Src/main.c **** test = Unmount_SD("/"); // 0 - succ +2100:Src/main.c **** return test; +2101:Src/main.c **** } +2102:Src/main.c **** else +2103:Src/main.c **** { +2104:Src/main.c **** return 1; +2105:Src/main.c **** } +2106:Src/main.c **** } +2107:Src/main.c **** else +2108:Src/main.c **** { +2109:Src/main.c **** return 1; +2110:Src/main.c **** } +2111:Src/main.c **** } +2112:Src/main.c **** +2113:Src/main.c **** +2114:Src/main.c **** +2115:Src/main.c **** //uint32_t Get_Length(void) +2116:Src/main.c **** //{ +2117:Src/main.c **** // return SD_matr[0][0] + ((uint32_t) (SD_matr[0][1])<<16); +2118:Src/main.c **** //} +2119:Src/main.c **** +2120:Src/main.c **** int SD_READ(uint16_t *pbuff) +2121:Src/main.c **** { +2122:Src/main.c **** int test=0; +2123:Src/main.c **** if (HAL_GPIO_ReadPin(SDMMC1_EN_GPIO_Port, SDMMC1_EN_Pin)==GPIO_PIN_RESET) +2124:Src/main.c **** { +2125:Src/main.c **** test = Mount_SD("/"); +2126:Src/main.c **** if (test == 0) //0 - suc +2127:Src/main.c **** { +2128:Src/main.c **** //Format_SD(); +2129:Src/main.c **** test = Seek_Read_File ("FILE1.TXT", (uint8_t *)pbuff, DL_8, fgoto);//Read next 246 bytes +2130:Src/main.c **** fgoto+=DL_8; +2131:Src/main.c **** test = Unmount_SD("/"); // 0 - succ +2132:Src/main.c **** return test; +2133:Src/main.c **** } +2134:Src/main.c **** else +2135:Src/main.c **** { +2136:Src/main.c **** return 1; +2137:Src/main.c **** } +2138:Src/main.c **** } +2139:Src/main.c **** else +2140:Src/main.c **** { +2141:Src/main.c **** return 1; +2142:Src/main.c **** } +2143:Src/main.c **** +2144:Src/main.c **** /* for (uint16_t j = 0; j < DL_16; j++) +2145:Src/main.c **** { + ARM GAS /tmp/ccdsDELB.s page 445 + + +2146:Src/main.c **** *(pbuff+j) = SD_matr[SD_SLIDE][j]; +2147:Src/main.c **** } +2148:Src/main.c **** if (SD_SLIDERDR, USART_RDR_RDR) & 0xFFU); +3661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Read Receiver Data register (Receive Data value, 9 bits) +3665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RDR RDR LL_USART_ReceiveData9 +3666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Value between Min_Data=0x00 and Max_Data=0x1FF +3668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint16_t LL_USART_ReceiveData9(const USART_TypeDef *USARTx) +3670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint16_t)(READ_BIT(USARTx->RDR, USART_RDR_RDR)); +3672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Write in Transmitter Data Register (Transmit Data value, 8 bits) +3676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll TDR TDR LL_USART_TransmitData8 +3677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + ARM GAS /tmp/ccdsDELB.s page 457 + + +3678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Value between Min_Data=0x00 and Max_Data=0xFF +3679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_TransmitData8(USART_TypeDef *USARTx, uint8_t Value) + 5738 .loc 7 3681 22 view .LVU1870 + 5739 .LBB496: +3682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USARTx->TDR = Value; + 5740 .loc 7 3683 3 view .LVU1871 + 5741 .loc 7 3683 15 is_stmt 0 view .LVU1872 + 5742 0014 044A ldr r2, .L246 + 5743 0016 9462 str r4, [r2, #40] + 5744 .LVL458: + 5745 .loc 7 3683 15 view .LVU1873 + 5746 .LBE496: + 5747 .LBE495: +2192:Src/main.c **** } + 5748 .loc 2 2192 5 is_stmt 1 view .LVU1874 +2192:Src/main.c **** } + 5749 .loc 2 2192 8 is_stmt 0 view .LVU1875 + 5750 0018 0133 adds r3, r3, #1 + 5751 .LVL459: +2192:Src/main.c **** } + 5752 .loc 2 2192 8 view .LVU1876 + 5753 001a 9BB2 uxth r3, r3 + 5754 .LVL460: +2188:Src/main.c **** { + 5755 .loc 2 2188 9 is_stmt 1 view .LVU1877 + 5756 001c 8B42 cmp r3, r1 + 5757 001e F3D3 bcc .L241 +2194:Src/main.c **** + 5758 .loc 2 2194 1 is_stmt 0 view .LVU1878 + 5759 0020 5DF8044B ldr r4, [sp], #4 + 5760 .LCFI46: + 5761 .cfi_restore 4 + 5762 .cfi_def_cfa_offset 0 + 5763 0024 7047 bx lr + 5764 .L245: +2194:Src/main.c **** + 5765 .loc 2 2194 1 view .LVU1879 + 5766 0026 7047 bx lr + 5767 .L247: + 5768 .align 2 + 5769 .L246: + 5770 0028 00100140 .word 1073811456 + 5771 .cfi_endproc + 5772 .LFE1215: + 5774 .section .text.USART_TX_DMA,"ax",%progbits + 5775 .align 1 + 5776 .global USART_TX_DMA + 5777 .syntax unified + 5778 .thumb + 5779 .thumb_func + 5780 .fpu fpv5-d16 + 5782 USART_TX_DMA: + 5783 .LFB1216: +2197:Src/main.c **** while (u_tx_flg) {}//Wait until previous transfer not complete. u_tx_flg is resetting in DMA inter + ARM GAS /tmp/ccdsDELB.s page 458 + + + 5784 .loc 2 2197 1 is_stmt 1 view -0 + 5785 .cfi_startproc + 5786 @ args = 0, pretend = 0, frame = 0 + 5787 @ frame_needed = 0, uses_anonymous_args = 0 + 5788 @ link register save eliminated. + 5789 .LVL461: + 5790 .L249: +2198:Src/main.c **** LL_DMA_DisableStream(DMA2, LL_DMA_STREAM_7); + 5791 .loc 2 2198 20 discriminator 1 view .LVU1881 +2198:Src/main.c **** LL_DMA_DisableStream(DMA2, LL_DMA_STREAM_7); + 5792 .loc 2 2198 8 discriminator 1 view .LVU1882 +2198:Src/main.c **** LL_DMA_DisableStream(DMA2, LL_DMA_STREAM_7); + 5793 .loc 2 2198 9 is_stmt 0 discriminator 1 view .LVU1883 + 5794 0000 0D4B ldr r3, .L250 + 5795 0002 1B78 ldrb r3, [r3] @ zero_extendqisi2 +2198:Src/main.c **** LL_DMA_DisableStream(DMA2, LL_DMA_STREAM_7); + 5796 .loc 2 2198 8 discriminator 1 view .LVU1884 + 5797 0004 002B cmp r3, #0 + 5798 0006 FBD1 bne .L249 +2199:Src/main.c **** LL_DMA_SetDataLength(DMA2, LL_DMA_STREAM_7, sz); + 5799 .loc 2 2199 2 is_stmt 1 view .LVU1885 + 5800 .LVL462: + 5801 .LBB497: + 5802 .LBI497: + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 5803 .loc 6 517 22 view .LVU1886 + 5804 .LBB498: + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 5805 .loc 6 519 3 view .LVU1887 + 5806 0008 0C4B ldr r3, .L250+4 + 5807 000a D3F8B820 ldr r2, [r3, #184] + 5808 000e 22F00102 bic r2, r2, #1 + 5809 0012 C3F8B820 str r2, [r3, #184] + 5810 .LVL463: + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 5811 .loc 6 519 3 is_stmt 0 view .LVU1888 + 5812 .LBE498: + 5813 .LBE497: +2200:Src/main.c **** LL_DMA_EnableStream(DMA2, LL_DMA_STREAM_7); + 5814 .loc 2 2200 3 is_stmt 1 view .LVU1889 + 5815 .LBB499: + 5816 .LBI499: + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 5817 .loc 6 971 22 view .LVU1890 + 5818 .LBB500: + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 5819 .loc 6 973 3 view .LVU1891 + 5820 0016 D3F8BC10 ldr r1, [r3, #188] + 5821 001a 094A ldr r2, .L250+8 + 5822 001c 0A40 ands r2, r2, r1 + 5823 001e 1043 orrs r0, r0, r2 + 5824 .LVL464: + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 5825 .loc 6 973 3 is_stmt 0 view .LVU1892 + 5826 0020 C3F8BC00 str r0, [r3, #188] + 5827 .LVL465: + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + ARM GAS /tmp/ccdsDELB.s page 459 + + + 5828 .loc 6 973 3 view .LVU1893 + 5829 .LBE500: + 5830 .LBE499: +2201:Src/main.c **** u_tx_flg = 1;//indicate that transfer begin + 5831 .loc 2 2201 3 is_stmt 1 view .LVU1894 + 5832 .LBB501: + 5833 .LBI501: + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 5834 .loc 6 497 22 view .LVU1895 + 5835 .LBB502: + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 5836 .loc 6 499 3 view .LVU1896 + 5837 0024 D3F8B820 ldr r2, [r3, #184] + 5838 0028 42F00102 orr r2, r2, #1 + 5839 002c C3F8B820 str r2, [r3, #184] + 5840 .LVL466: + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 5841 .loc 6 499 3 is_stmt 0 view .LVU1897 + 5842 .LBE502: + 5843 .LBE501: +2202:Src/main.c **** } + 5844 .loc 2 2202 2 is_stmt 1 view .LVU1898 +2202:Src/main.c **** } + 5845 .loc 2 2202 11 is_stmt 0 view .LVU1899 + 5846 0030 014B ldr r3, .L250 + 5847 0032 0122 movs r2, #1 + 5848 0034 1A70 strb r2, [r3] +2203:Src/main.c **** + 5849 .loc 2 2203 1 view .LVU1900 + 5850 0036 7047 bx lr + 5851 .L251: + 5852 .align 2 + 5853 .L250: + 5854 0038 00000000 .word .LANCHOR15 + 5855 003c 00640240 .word 1073898496 + 5856 0040 0000FFFF .word -65536 + 5857 .cfi_endproc + 5858 .LFE1216: + 5860 .section .text.Error_Handler,"ax",%progbits + 5861 .align 1 + 5862 .global Error_Handler + 5863 .syntax unified + 5864 .thumb + 5865 .thumb_func + 5866 .fpu fpv5-d16 + 5868 Error_Handler: + 5869 .LFB1218: +2211:Src/main.c **** //------------------------------------------------------- +2212:Src/main.c **** /* USER CODE END 4 */ +2213:Src/main.c **** +2214:Src/main.c **** /** +2215:Src/main.c **** * @brief This function is executed in case of error occurrence. +2216:Src/main.c **** * @retval None +2217:Src/main.c **** */ +2218:Src/main.c **** void Error_Handler(void) +2219:Src/main.c **** { + 5870 .loc 2 2219 1 is_stmt 1 view -0 + ARM GAS /tmp/ccdsDELB.s page 460 + + + 5871 .cfi_startproc + 5872 @ Volatile: function does not return. + 5873 @ args = 0, pretend = 0, frame = 0 + 5874 @ frame_needed = 0, uses_anonymous_args = 0 + 5875 @ link register save eliminated. +2220:Src/main.c **** /* USER CODE BEGIN Error_Handler_Debug */ +2221:Src/main.c **** /* User can add his own implementation to report the HAL error return state */ +2222:Src/main.c **** __disable_irq(); + 5876 .loc 2 2222 3 view .LVU1902 + 5877 .LBB503: + 5878 .LBI503: + 140:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 5879 .loc 8 140 27 view .LVU1903 + 5880 .LBB504: + 142:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 5881 .loc 8 142 3 view .LVU1904 + 5882 .syntax unified + 5883 @ 142 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 5884 0000 72B6 cpsid i + 5885 @ 0 "" 2 + 5886 .thumb + 5887 .syntax unified + 5888 .L253: + 5889 .LBE504: + 5890 .LBE503: +2223:Src/main.c **** while (1) + 5891 .loc 2 2223 3 discriminator 1 view .LVU1905 +2224:Src/main.c **** { +2225:Src/main.c **** } + 5892 .loc 2 2225 3 discriminator 1 view .LVU1906 +2223:Src/main.c **** while (1) + 5893 .loc 2 2223 9 discriminator 1 view .LVU1907 + 5894 0002 FEE7 b .L253 + 5895 .cfi_endproc + 5896 .LFE1218: + 5898 .section .text.MX_ADC1_Init,"ax",%progbits + 5899 .align 1 + 5900 .syntax unified + 5901 .thumb + 5902 .thumb_func + 5903 .fpu fpv5-d16 + 5905 MX_ADC1_Init: + 5906 .LFB1188: + 605:Src/main.c **** + 5907 .loc 2 605 1 view -0 + 5908 .cfi_startproc + 5909 @ args = 0, pretend = 0, frame = 16 + 5910 @ frame_needed = 0, uses_anonymous_args = 0 + 5911 0000 00B5 push {lr} + 5912 .LCFI47: + 5913 .cfi_def_cfa_offset 4 + 5914 .cfi_offset 14, -4 + 5915 0002 85B0 sub sp, sp, #20 + 5916 .LCFI48: + 5917 .cfi_def_cfa_offset 24 + 611:Src/main.c **** + 5918 .loc 2 611 3 view .LVU1909 + ARM GAS /tmp/ccdsDELB.s page 461 + + + 611:Src/main.c **** + 5919 .loc 2 611 26 is_stmt 0 view .LVU1910 + 5920 0004 0023 movs r3, #0 + 5921 0006 0093 str r3, [sp] + 5922 0008 0193 str r3, [sp, #4] + 5923 000a 0293 str r3, [sp, #8] + 5924 000c 0393 str r3, [sp, #12] + 619:Src/main.c **** hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV8; + 5925 .loc 2 619 3 is_stmt 1 view .LVU1911 + 619:Src/main.c **** hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV8; + 5926 .loc 2 619 18 is_stmt 0 view .LVU1912 + 5927 000e 2B48 ldr r0, .L268 + 5928 0010 2B4A ldr r2, .L268+4 + 5929 0012 0260 str r2, [r0] + 620:Src/main.c **** hadc1.Init.Resolution = ADC_RESOLUTION_12B; + 5930 .loc 2 620 3 is_stmt 1 view .LVU1913 + 620:Src/main.c **** hadc1.Init.Resolution = ADC_RESOLUTION_12B; + 5931 .loc 2 620 29 is_stmt 0 view .LVU1914 + 5932 0014 4FF44032 mov r2, #196608 + 5933 0018 4260 str r2, [r0, #4] + 621:Src/main.c **** hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; + 5934 .loc 2 621 3 is_stmt 1 view .LVU1915 + 621:Src/main.c **** hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; + 5935 .loc 2 621 25 is_stmt 0 view .LVU1916 + 5936 001a 8360 str r3, [r0, #8] + 622:Src/main.c **** hadc1.Init.ContinuousConvMode = DISABLE; + 5937 .loc 2 622 3 is_stmt 1 view .LVU1917 + 622:Src/main.c **** hadc1.Init.ContinuousConvMode = DISABLE; + 5938 .loc 2 622 27 is_stmt 0 view .LVU1918 + 5939 001c 0122 movs r2, #1 + 5940 001e 0261 str r2, [r0, #16] + 623:Src/main.c **** hadc1.Init.DiscontinuousConvMode = DISABLE; + 5941 .loc 2 623 3 is_stmt 1 view .LVU1919 + 623:Src/main.c **** hadc1.Init.DiscontinuousConvMode = DISABLE; + 5942 .loc 2 623 33 is_stmt 0 view .LVU1920 + 5943 0020 8361 str r3, [r0, #24] + 624:Src/main.c **** hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + 5944 .loc 2 624 3 is_stmt 1 view .LVU1921 + 624:Src/main.c **** hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + 5945 .loc 2 624 36 is_stmt 0 view .LVU1922 + 5946 0022 80F82030 strb r3, [r0, #32] + 625:Src/main.c **** hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; + 5947 .loc 2 625 3 is_stmt 1 view .LVU1923 + 625:Src/main.c **** hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; + 5948 .loc 2 625 35 is_stmt 0 view .LVU1924 + 5949 0026 C362 str r3, [r0, #44] + 626:Src/main.c **** hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; + 5950 .loc 2 626 3 is_stmt 1 view .LVU1925 + 626:Src/main.c **** hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; + 5951 .loc 2 626 31 is_stmt 0 view .LVU1926 + 5952 0028 2649 ldr r1, .L268+8 + 5953 002a 8162 str r1, [r0, #40] + 627:Src/main.c **** hadc1.Init.NbrOfConversion = 5; + 5954 .loc 2 627 3 is_stmt 1 view .LVU1927 + 627:Src/main.c **** hadc1.Init.NbrOfConversion = 5; + 5955 .loc 2 627 24 is_stmt 0 view .LVU1928 + 5956 002c C360 str r3, [r0, #12] + ARM GAS /tmp/ccdsDELB.s page 462 + + + 628:Src/main.c **** hadc1.Init.DMAContinuousRequests = DISABLE; + 5957 .loc 2 628 3 is_stmt 1 view .LVU1929 + 628:Src/main.c **** hadc1.Init.DMAContinuousRequests = DISABLE; + 5958 .loc 2 628 30 is_stmt 0 view .LVU1930 + 5959 002e 0521 movs r1, #5 + 5960 0030 C161 str r1, [r0, #28] + 629:Src/main.c **** hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + 5961 .loc 2 629 3 is_stmt 1 view .LVU1931 + 629:Src/main.c **** hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + 5962 .loc 2 629 36 is_stmt 0 view .LVU1932 + 5963 0032 80F83030 strb r3, [r0, #48] + 630:Src/main.c **** if (HAL_ADC_Init(&hadc1) != HAL_OK) + 5964 .loc 2 630 3 is_stmt 1 view .LVU1933 + 630:Src/main.c **** if (HAL_ADC_Init(&hadc1) != HAL_OK) + 5965 .loc 2 630 27 is_stmt 0 view .LVU1934 + 5966 0036 4261 str r2, [r0, #20] + 631:Src/main.c **** { + 5967 .loc 2 631 3 is_stmt 1 view .LVU1935 + 631:Src/main.c **** { + 5968 .loc 2 631 7 is_stmt 0 view .LVU1936 + 5969 0038 FFF7FEFF bl HAL_ADC_Init + 5970 .LVL467: + 631:Src/main.c **** { + 5971 .loc 2 631 6 view .LVU1937 + 5972 003c 0028 cmp r0, #0 + 5973 003e 31D1 bne .L262 + 638:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_1; + 5974 .loc 2 638 3 is_stmt 1 view .LVU1938 + 638:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_1; + 5975 .loc 2 638 19 is_stmt 0 view .LVU1939 + 5976 0040 0923 movs r3, #9 + 5977 0042 0093 str r3, [sp] + 639:Src/main.c **** sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES; + 5978 .loc 2 639 3 is_stmt 1 view .LVU1940 + 639:Src/main.c **** sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES; + 5979 .loc 2 639 16 is_stmt 0 view .LVU1941 + 5980 0044 0123 movs r3, #1 + 5981 0046 0193 str r3, [sp, #4] + 640:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 5982 .loc 2 640 3 is_stmt 1 view .LVU1942 + 640:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 5983 .loc 2 640 24 is_stmt 0 view .LVU1943 + 5984 0048 0723 movs r3, #7 + 5985 004a 0293 str r3, [sp, #8] + 641:Src/main.c **** { + 5986 .loc 2 641 3 is_stmt 1 view .LVU1944 + 641:Src/main.c **** { + 5987 .loc 2 641 7 is_stmt 0 view .LVU1945 + 5988 004c 6946 mov r1, sp + 5989 004e 1B48 ldr r0, .L268 + 5990 0050 FFF7FEFF bl HAL_ADC_ConfigChannel + 5991 .LVL468: + 641:Src/main.c **** { + 5992 .loc 2 641 6 view .LVU1946 + 5993 0054 40BB cbnz r0, .L263 + 648:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_2; + 5994 .loc 2 648 3 is_stmt 1 view .LVU1947 + ARM GAS /tmp/ccdsDELB.s page 463 + + + 648:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_2; + 5995 .loc 2 648 19 is_stmt 0 view .LVU1948 + 5996 0056 0823 movs r3, #8 + 5997 0058 0093 str r3, [sp] + 649:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 5998 .loc 2 649 3 is_stmt 1 view .LVU1949 + 649:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 5999 .loc 2 649 16 is_stmt 0 view .LVU1950 + 6000 005a 0223 movs r3, #2 + 6001 005c 0193 str r3, [sp, #4] + 650:Src/main.c **** { + 6002 .loc 2 650 3 is_stmt 1 view .LVU1951 + 650:Src/main.c **** { + 6003 .loc 2 650 7 is_stmt 0 view .LVU1952 + 6004 005e 6946 mov r1, sp + 6005 0060 1648 ldr r0, .L268 + 6006 0062 FFF7FEFF bl HAL_ADC_ConfigChannel + 6007 .LVL469: + 650:Src/main.c **** { + 6008 .loc 2 650 6 view .LVU1953 + 6009 0066 08BB cbnz r0, .L264 + 657:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_3; + 6010 .loc 2 657 3 is_stmt 1 view .LVU1954 + 657:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_3; + 6011 .loc 2 657 19 is_stmt 0 view .LVU1955 + 6012 0068 0223 movs r3, #2 + 6013 006a 0093 str r3, [sp] + 658:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 6014 .loc 2 658 3 is_stmt 1 view .LVU1956 + 658:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 6015 .loc 2 658 16 is_stmt 0 view .LVU1957 + 6016 006c 0323 movs r3, #3 + 6017 006e 0193 str r3, [sp, #4] + 659:Src/main.c **** { + 6018 .loc 2 659 3 is_stmt 1 view .LVU1958 + 659:Src/main.c **** { + 6019 .loc 2 659 7 is_stmt 0 view .LVU1959 + 6020 0070 6946 mov r1, sp + 6021 0072 1248 ldr r0, .L268 + 6022 0074 FFF7FEFF bl HAL_ADC_ConfigChannel + 6023 .LVL470: + 659:Src/main.c **** { + 6024 .loc 2 659 6 view .LVU1960 + 6025 0078 D0B9 cbnz r0, .L265 + 666:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_4; + 6026 .loc 2 666 3 is_stmt 1 view .LVU1961 + 666:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_4; + 6027 .loc 2 666 19 is_stmt 0 view .LVU1962 + 6028 007a 0A23 movs r3, #10 + 6029 007c 0093 str r3, [sp] + 667:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 6030 .loc 2 667 3 is_stmt 1 view .LVU1963 + 667:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 6031 .loc 2 667 16 is_stmt 0 view .LVU1964 + 6032 007e 0423 movs r3, #4 + 6033 0080 0193 str r3, [sp, #4] + 668:Src/main.c **** { + ARM GAS /tmp/ccdsDELB.s page 464 + + + 6034 .loc 2 668 3 is_stmt 1 view .LVU1965 + 668:Src/main.c **** { + 6035 .loc 2 668 7 is_stmt 0 view .LVU1966 + 6036 0082 6946 mov r1, sp + 6037 0084 0D48 ldr r0, .L268 + 6038 0086 FFF7FEFF bl HAL_ADC_ConfigChannel + 6039 .LVL471: + 668:Src/main.c **** { + 6040 .loc 2 668 6 view .LVU1967 + 6041 008a 98B9 cbnz r0, .L266 + 675:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_5; + 6042 .loc 2 675 3 is_stmt 1 view .LVU1968 + 675:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_5; + 6043 .loc 2 675 19 is_stmt 0 view .LVU1969 + 6044 008c 0B23 movs r3, #11 + 6045 008e 0093 str r3, [sp] + 676:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 6046 .loc 2 676 3 is_stmt 1 view .LVU1970 + 676:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) + 6047 .loc 2 676 16 is_stmt 0 view .LVU1971 + 6048 0090 0523 movs r3, #5 + 6049 0092 0193 str r3, [sp, #4] + 677:Src/main.c **** { + 6050 .loc 2 677 3 is_stmt 1 view .LVU1972 + 677:Src/main.c **** { + 6051 .loc 2 677 7 is_stmt 0 view .LVU1973 + 6052 0094 6946 mov r1, sp + 6053 0096 0948 ldr r0, .L268 + 6054 0098 FFF7FEFF bl HAL_ADC_ConfigChannel + 6055 .LVL472: + 677:Src/main.c **** { + 6056 .loc 2 677 6 view .LVU1974 + 6057 009c 60B9 cbnz r0, .L267 + 685:Src/main.c **** + 6058 .loc 2 685 1 view .LVU1975 + 6059 009e 05B0 add sp, sp, #20 + 6060 .LCFI49: + 6061 .cfi_remember_state + 6062 .cfi_def_cfa_offset 4 + 6063 @ sp needed + 6064 00a0 5DF804FB ldr pc, [sp], #4 + 6065 .L262: + 6066 .LCFI50: + 6067 .cfi_restore_state + 633:Src/main.c **** } + 6068 .loc 2 633 5 is_stmt 1 view .LVU1976 + 6069 00a4 FFF7FEFF bl Error_Handler + 6070 .LVL473: + 6071 .L263: + 643:Src/main.c **** } + 6072 .loc 2 643 5 view .LVU1977 + 6073 00a8 FFF7FEFF bl Error_Handler + 6074 .LVL474: + 6075 .L264: + 652:Src/main.c **** } + 6076 .loc 2 652 5 view .LVU1978 + 6077 00ac FFF7FEFF bl Error_Handler + ARM GAS /tmp/ccdsDELB.s page 465 + + + 6078 .LVL475: + 6079 .L265: + 661:Src/main.c **** } + 6080 .loc 2 661 5 view .LVU1979 + 6081 00b0 FFF7FEFF bl Error_Handler + 6082 .LVL476: + 6083 .L266: + 670:Src/main.c **** } + 6084 .loc 2 670 5 view .LVU1980 + 6085 00b4 FFF7FEFF bl Error_Handler + 6086 .LVL477: + 6087 .L267: + 679:Src/main.c **** } + 6088 .loc 2 679 5 view .LVU1981 + 6089 00b8 FFF7FEFF bl Error_Handler + 6090 .LVL478: + 6091 .L269: + 6092 .align 2 + 6093 .L268: + 6094 00bc 00000000 .word .LANCHOR28 + 6095 00c0 00200140 .word 1073815552 + 6096 00c4 0100000F .word 251658241 + 6097 .cfi_endproc + 6098 .LFE1188: + 6100 .section .text.MX_ADC3_Init,"ax",%progbits + 6101 .align 1 + 6102 .syntax unified + 6103 .thumb + 6104 .thumb_func + 6105 .fpu fpv5-d16 + 6107 MX_ADC3_Init: + 6108 .LFB1189: + 693:Src/main.c **** + 6109 .loc 2 693 1 view -0 + 6110 .cfi_startproc + 6111 @ args = 0, pretend = 0, frame = 16 + 6112 @ frame_needed = 0, uses_anonymous_args = 0 + 6113 0000 00B5 push {lr} + 6114 .LCFI51: + 6115 .cfi_def_cfa_offset 4 + 6116 .cfi_offset 14, -4 + 6117 0002 85B0 sub sp, sp, #20 + 6118 .LCFI52: + 6119 .cfi_def_cfa_offset 24 + 699:Src/main.c **** + 6120 .loc 2 699 3 view .LVU1983 + 699:Src/main.c **** + 6121 .loc 2 699 26 is_stmt 0 view .LVU1984 + 6122 0004 0023 movs r3, #0 + 6123 0006 0093 str r3, [sp] + 6124 0008 0193 str r3, [sp, #4] + 6125 000a 0293 str r3, [sp, #8] + 6126 000c 0393 str r3, [sp, #12] + 707:Src/main.c **** hadc3.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV8; + 6127 .loc 2 707 3 is_stmt 1 view .LVU1985 + 707:Src/main.c **** hadc3.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV8; + 6128 .loc 2 707 18 is_stmt 0 view .LVU1986 + ARM GAS /tmp/ccdsDELB.s page 466 + + + 6129 000e 1448 ldr r0, .L276 + 6130 0010 144A ldr r2, .L276+4 + 6131 0012 0260 str r2, [r0] + 708:Src/main.c **** hadc3.Init.Resolution = ADC_RESOLUTION_12B; + 6132 .loc 2 708 3 is_stmt 1 view .LVU1987 + 708:Src/main.c **** hadc3.Init.Resolution = ADC_RESOLUTION_12B; + 6133 .loc 2 708 29 is_stmt 0 view .LVU1988 + 6134 0014 4FF44032 mov r2, #196608 + 6135 0018 4260 str r2, [r0, #4] + 709:Src/main.c **** hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE; + 6136 .loc 2 709 3 is_stmt 1 view .LVU1989 + 709:Src/main.c **** hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE; + 6137 .loc 2 709 25 is_stmt 0 view .LVU1990 + 6138 001a 8360 str r3, [r0, #8] + 710:Src/main.c **** hadc3.Init.ContinuousConvMode = DISABLE; + 6139 .loc 2 710 3 is_stmt 1 view .LVU1991 + 710:Src/main.c **** hadc3.Init.ContinuousConvMode = DISABLE; + 6140 .loc 2 710 27 is_stmt 0 view .LVU1992 + 6141 001c 0361 str r3, [r0, #16] + 711:Src/main.c **** hadc3.Init.DiscontinuousConvMode = DISABLE; + 6142 .loc 2 711 3 is_stmt 1 view .LVU1993 + 711:Src/main.c **** hadc3.Init.DiscontinuousConvMode = DISABLE; + 6143 .loc 2 711 33 is_stmt 0 view .LVU1994 + 6144 001e 8361 str r3, [r0, #24] + 712:Src/main.c **** hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + 6145 .loc 2 712 3 is_stmt 1 view .LVU1995 + 712:Src/main.c **** hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; + 6146 .loc 2 712 36 is_stmt 0 view .LVU1996 + 6147 0020 80F82030 strb r3, [r0, #32] + 713:Src/main.c **** hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START; + 6148 .loc 2 713 3 is_stmt 1 view .LVU1997 + 713:Src/main.c **** hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START; + 6149 .loc 2 713 35 is_stmt 0 view .LVU1998 + 6150 0024 C362 str r3, [r0, #44] + 714:Src/main.c **** hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT; + 6151 .loc 2 714 3 is_stmt 1 view .LVU1999 + 714:Src/main.c **** hadc3.Init.DataAlign = ADC_DATAALIGN_RIGHT; + 6152 .loc 2 714 31 is_stmt 0 view .LVU2000 + 6153 0026 104A ldr r2, .L276+8 + 6154 0028 8262 str r2, [r0, #40] + 715:Src/main.c **** hadc3.Init.NbrOfConversion = 1; + 6155 .loc 2 715 3 is_stmt 1 view .LVU2001 + 715:Src/main.c **** hadc3.Init.NbrOfConversion = 1; + 6156 .loc 2 715 24 is_stmt 0 view .LVU2002 + 6157 002a C360 str r3, [r0, #12] + 716:Src/main.c **** hadc3.Init.DMAContinuousRequests = DISABLE; + 6158 .loc 2 716 3 is_stmt 1 view .LVU2003 + 716:Src/main.c **** hadc3.Init.DMAContinuousRequests = DISABLE; + 6159 .loc 2 716 30 is_stmt 0 view .LVU2004 + 6160 002c 0122 movs r2, #1 + 6161 002e C261 str r2, [r0, #28] + 717:Src/main.c **** hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + 6162 .loc 2 717 3 is_stmt 1 view .LVU2005 + 717:Src/main.c **** hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV; + 6163 .loc 2 717 36 is_stmt 0 view .LVU2006 + 6164 0030 80F83030 strb r3, [r0, #48] + 718:Src/main.c **** if (HAL_ADC_Init(&hadc3) != HAL_OK) + ARM GAS /tmp/ccdsDELB.s page 467 + + + 6165 .loc 2 718 3 is_stmt 1 view .LVU2007 + 718:Src/main.c **** if (HAL_ADC_Init(&hadc3) != HAL_OK) + 6166 .loc 2 718 27 is_stmt 0 view .LVU2008 + 6167 0034 4261 str r2, [r0, #20] + 719:Src/main.c **** { + 6168 .loc 2 719 3 is_stmt 1 view .LVU2009 + 719:Src/main.c **** { + 6169 .loc 2 719 7 is_stmt 0 view .LVU2010 + 6170 0036 FFF7FEFF bl HAL_ADC_Init + 6171 .LVL479: + 719:Src/main.c **** { + 6172 .loc 2 719 6 view .LVU2011 + 6173 003a 68B9 cbnz r0, .L274 + 726:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_1; + 6174 .loc 2 726 3 is_stmt 1 view .LVU2012 + 726:Src/main.c **** sConfig.Rank = ADC_REGULAR_RANK_1; + 6175 .loc 2 726 19 is_stmt 0 view .LVU2013 + 6176 003c 0F23 movs r3, #15 + 6177 003e 0093 str r3, [sp] + 727:Src/main.c **** sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES; + 6178 .loc 2 727 3 is_stmt 1 view .LVU2014 + 727:Src/main.c **** sConfig.SamplingTime = ADC_SAMPLETIME_480CYCLES; + 6179 .loc 2 727 16 is_stmt 0 view .LVU2015 + 6180 0040 0123 movs r3, #1 + 6181 0042 0193 str r3, [sp, #4] + 728:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK) + 6182 .loc 2 728 3 is_stmt 1 view .LVU2016 + 728:Src/main.c **** if (HAL_ADC_ConfigChannel(&hadc3, &sConfig) != HAL_OK) + 6183 .loc 2 728 24 is_stmt 0 view .LVU2017 + 6184 0044 0723 movs r3, #7 + 6185 0046 0293 str r3, [sp, #8] + 729:Src/main.c **** { + 6186 .loc 2 729 3 is_stmt 1 view .LVU2018 + 729:Src/main.c **** { + 6187 .loc 2 729 7 is_stmt 0 view .LVU2019 + 6188 0048 6946 mov r1, sp + 6189 004a 0548 ldr r0, .L276 + 6190 004c FFF7FEFF bl HAL_ADC_ConfigChannel + 6191 .LVL480: + 729:Src/main.c **** { + 6192 .loc 2 729 6 view .LVU2020 + 6193 0050 20B9 cbnz r0, .L275 + 737:Src/main.c **** + 6194 .loc 2 737 1 view .LVU2021 + 6195 0052 05B0 add sp, sp, #20 + 6196 .LCFI53: + 6197 .cfi_remember_state + 6198 .cfi_def_cfa_offset 4 + 6199 @ sp needed + 6200 0054 5DF804FB ldr pc, [sp], #4 + 6201 .L274: + 6202 .LCFI54: + 6203 .cfi_restore_state + 721:Src/main.c **** } + 6204 .loc 2 721 5 is_stmt 1 view .LVU2022 + 6205 0058 FFF7FEFF bl Error_Handler + 6206 .LVL481: + ARM GAS /tmp/ccdsDELB.s page 468 + + + 6207 .L275: + 731:Src/main.c **** } + 6208 .loc 2 731 5 view .LVU2023 + 6209 005c FFF7FEFF bl Error_Handler + 6210 .LVL482: + 6211 .L277: + 6212 .align 2 + 6213 .L276: + 6214 0060 00000000 .word .LANCHOR29 + 6215 0064 00220140 .word 1073816064 + 6216 0068 0100000F .word 251658241 + 6217 .cfi_endproc + 6218 .LFE1189: + 6220 .section .text.MX_USART1_UART_Init,"ax",%progbits + 6221 .align 1 + 6222 .syntax unified + 6223 .thumb + 6224 .thumb_func + 6225 .fpu fpv5-d16 + 6227 MX_USART1_UART_Init: + 6228 .LFB1200: +1208:Src/main.c **** + 6229 .loc 2 1208 1 view -0 + 6230 .cfi_startproc + 6231 @ args = 0, pretend = 0, frame = 208 + 6232 @ frame_needed = 0, uses_anonymous_args = 0 + 6233 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 6234 .LCFI55: + 6235 .cfi_def_cfa_offset 24 + 6236 .cfi_offset 4, -24 + 6237 .cfi_offset 5, -20 + 6238 .cfi_offset 6, -16 + 6239 .cfi_offset 7, -12 + 6240 .cfi_offset 8, -8 + 6241 .cfi_offset 14, -4 + 6242 0004 B4B0 sub sp, sp, #208 + 6243 .LCFI56: + 6244 .cfi_def_cfa_offset 232 +1214:Src/main.c **** + 6245 .loc 2 1214 3 view .LVU2025 +1214:Src/main.c **** + 6246 .loc 2 1214 24 is_stmt 0 view .LVU2026 + 6247 0006 0021 movs r1, #0 + 6248 0008 2D91 str r1, [sp, #180] + 6249 000a 2E91 str r1, [sp, #184] + 6250 000c 2F91 str r1, [sp, #188] + 6251 000e 3091 str r1, [sp, #192] + 6252 0010 3191 str r1, [sp, #196] + 6253 0012 3291 str r1, [sp, #200] + 6254 0014 3391 str r1, [sp, #204] +1216:Src/main.c **** RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + 6255 .loc 2 1216 3 is_stmt 1 view .LVU2027 +1216:Src/main.c **** RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + 6256 .loc 2 1216 23 is_stmt 0 view .LVU2028 + 6257 0016 2791 str r1, [sp, #156] + 6258 0018 2891 str r1, [sp, #160] + 6259 001a 2991 str r1, [sp, #164] + ARM GAS /tmp/ccdsDELB.s page 469 + + + 6260 001c 2A91 str r1, [sp, #168] + 6261 001e 2B91 str r1, [sp, #172] + 6262 0020 2C91 str r1, [sp, #176] +1217:Src/main.c **** + 6263 .loc 2 1217 3 is_stmt 1 view .LVU2029 +1217:Src/main.c **** + 6264 .loc 2 1217 28 is_stmt 0 view .LVU2030 + 6265 0022 9022 movs r2, #144 + 6266 0024 03A8 add r0, sp, #12 + 6267 0026 FFF7FEFF bl memset + 6268 .LVL483: +1221:Src/main.c **** PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; + 6269 .loc 2 1221 3 is_stmt 1 view .LVU2031 +1221:Src/main.c **** PeriphClkInitStruct.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; + 6270 .loc 2 1221 44 is_stmt 0 view .LVU2032 + 6271 002a 4023 movs r3, #64 + 6272 002c 0393 str r3, [sp, #12] +1222:Src/main.c **** if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + 6273 .loc 2 1222 3 is_stmt 1 view .LVU2033 +1223:Src/main.c **** { + 6274 .loc 2 1223 3 view .LVU2034 +1223:Src/main.c **** { + 6275 .loc 2 1223 7 is_stmt 0 view .LVU2035 + 6276 002e 03A8 add r0, sp, #12 + 6277 0030 FFF7FEFF bl HAL_RCCEx_PeriphCLKConfig + 6278 .LVL484: +1223:Src/main.c **** { + 6279 .loc 2 1223 6 view .LVU2036 + 6280 0034 0028 cmp r0, #0 + 6281 0036 40F09E80 bne .L281 +1229:Src/main.c **** + 6282 .loc 2 1229 3 is_stmt 1 view .LVU2037 + 6283 .LVL485: + 6284 .LBB505: + 6285 .LBI505: +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 6286 .loc 3 1587 22 view .LVU2038 + 6287 .LBB506: +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB2ENR, Periphs); + 6288 .loc 3 1589 3 view .LVU2039 +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 6289 .loc 3 1590 3 view .LVU2040 + 6290 003a 504B ldr r3, .L282 + 6291 003c 5A6C ldr r2, [r3, #68] + 6292 003e 42F01002 orr r2, r2, #16 + 6293 0042 5A64 str r2, [r3, #68] +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 6294 .loc 3 1592 3 view .LVU2041 +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 6295 .loc 3 1592 12 is_stmt 0 view .LVU2042 + 6296 0044 5A6C ldr r2, [r3, #68] + 6297 0046 02F01002 and r2, r2, #16 +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 6298 .loc 3 1592 10 view .LVU2043 + 6299 004a 0292 str r2, [sp, #8] + 6300 .loc 3 1593 3 is_stmt 1 view .LVU2044 + 6301 004c 029A ldr r2, [sp, #8] + ARM GAS /tmp/ccdsDELB.s page 470 + + + 6302 .LVL486: + 6303 .loc 3 1593 3 is_stmt 0 view .LVU2045 + 6304 .LBE506: + 6305 .LBE505: +1231:Src/main.c **** /**USART1 GPIO Configuration + 6306 .loc 2 1231 3 is_stmt 1 view .LVU2046 + 6307 .LBB507: + 6308 .LBI507: + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 6309 .loc 3 309 22 view .LVU2047 + 6310 .LBB508: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 6311 .loc 3 311 3 view .LVU2048 + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 6312 .loc 3 312 3 view .LVU2049 + 6313 004e 1A6B ldr r2, [r3, #48] + 6314 0050 42F00102 orr r2, r2, #1 + 6315 0054 1A63 str r2, [r3, #48] + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 6316 .loc 3 314 3 view .LVU2050 + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 6317 .loc 3 314 12 is_stmt 0 view .LVU2051 + 6318 0056 1B6B ldr r3, [r3, #48] + 6319 0058 03F00103 and r3, r3, #1 + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 6320 .loc 3 314 10 view .LVU2052 + 6321 005c 0193 str r3, [sp, #4] + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 6322 .loc 3 315 3 is_stmt 1 view .LVU2053 + 6323 005e 019B ldr r3, [sp, #4] + 6324 .LVL487: + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 6325 .loc 3 315 3 is_stmt 0 view .LVU2054 + 6326 .LBE508: + 6327 .LBE507: +1236:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 6328 .loc 2 1236 3 is_stmt 1 view .LVU2055 +1236:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 6329 .loc 2 1236 23 is_stmt 0 view .LVU2056 + 6330 0060 4FF40073 mov r3, #512 + 6331 0064 2793 str r3, [sp, #156] +1237:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 6332 .loc 2 1237 3 is_stmt 1 view .LVU2057 +1237:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 6333 .loc 2 1237 24 is_stmt 0 view .LVU2058 + 6334 0066 4FF00208 mov r8, #2 + 6335 006a CDF8A080 str r8, [sp, #160] +1238:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 6336 .loc 2 1238 3 is_stmt 1 view .LVU2059 +1238:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 6337 .loc 2 1238 25 is_stmt 0 view .LVU2060 + 6338 006e 0327 movs r7, #3 + 6339 0070 2997 str r7, [sp, #164] +1239:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 6340 .loc 2 1239 3 is_stmt 1 view .LVU2061 +1239:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 6341 .loc 2 1239 30 is_stmt 0 view .LVU2062 + ARM GAS /tmp/ccdsDELB.s page 471 + + + 6342 0072 0024 movs r4, #0 + 6343 0074 2A94 str r4, [sp, #168] +1240:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_7; + 6344 .loc 2 1240 3 is_stmt 1 view .LVU2063 +1240:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_7; + 6345 .loc 2 1240 24 is_stmt 0 view .LVU2064 + 6346 0076 2B94 str r4, [sp, #172] +1241:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 6347 .loc 2 1241 3 is_stmt 1 view .LVU2065 +1241:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 6348 .loc 2 1241 29 is_stmt 0 view .LVU2066 + 6349 0078 0726 movs r6, #7 + 6350 007a 2C96 str r6, [sp, #176] +1242:Src/main.c **** + 6351 .loc 2 1242 3 is_stmt 1 view .LVU2067 + 6352 007c 404D ldr r5, .L282+4 + 6353 007e 27A9 add r1, sp, #156 + 6354 0080 2846 mov r0, r5 + 6355 0082 FFF7FEFF bl LL_GPIO_Init + 6356 .LVL488: +1244:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 6357 .loc 2 1244 3 view .LVU2068 +1244:Src/main.c **** GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + 6358 .loc 2 1244 23 is_stmt 0 view .LVU2069 + 6359 0086 4FF48063 mov r3, #1024 + 6360 008a 2793 str r3, [sp, #156] +1245:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 6361 .loc 2 1245 3 is_stmt 1 view .LVU2070 +1245:Src/main.c **** GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; + 6362 .loc 2 1245 24 is_stmt 0 view .LVU2071 + 6363 008c CDF8A080 str r8, [sp, #160] +1246:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 6364 .loc 2 1246 3 is_stmt 1 view .LVU2072 +1246:Src/main.c **** GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 6365 .loc 2 1246 25 is_stmt 0 view .LVU2073 + 6366 0090 2997 str r7, [sp, #164] +1247:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 6367 .loc 2 1247 3 is_stmt 1 view .LVU2074 +1247:Src/main.c **** GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; + 6368 .loc 2 1247 30 is_stmt 0 view .LVU2075 + 6369 0092 2A94 str r4, [sp, #168] +1248:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_7; + 6370 .loc 2 1248 3 is_stmt 1 view .LVU2076 +1248:Src/main.c **** GPIO_InitStruct.Alternate = LL_GPIO_AF_7; + 6371 .loc 2 1248 24 is_stmt 0 view .LVU2077 + 6372 0094 2B94 str r4, [sp, #172] +1249:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 6373 .loc 2 1249 3 is_stmt 1 view .LVU2078 +1249:Src/main.c **** LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 6374 .loc 2 1249 29 is_stmt 0 view .LVU2079 + 6375 0096 2C96 str r6, [sp, #176] +1250:Src/main.c **** + 6376 .loc 2 1250 3 is_stmt 1 view .LVU2080 + 6377 0098 27A9 add r1, sp, #156 + 6378 009a 2846 mov r0, r5 + 6379 009c FFF7FEFF bl LL_GPIO_Init + 6380 .LVL489: + ARM GAS /tmp/ccdsDELB.s page 472 + + +1255:Src/main.c **** + 6381 .loc 2 1255 3 view .LVU2081 + 6382 .LBB509: + 6383 .LBI509: +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 6384 .loc 6 1032 22 view .LVU2082 + 6385 .LBB510: +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6386 .loc 6 1034 3 view .LVU2083 + 6387 00a0 384B ldr r3, .L282+8 + 6388 00a2 D3F8B820 ldr r2, [r3, #184] + 6389 00a6 22F0F052 bic r2, r2, #503316480 + 6390 00aa 42F00062 orr r2, r2, #134217728 + 6391 00ae C3F8B820 str r2, [r3, #184] + 6392 .LVL490: +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6393 .loc 6 1034 3 is_stmt 0 view .LVU2084 + 6394 .LBE510: + 6395 .LBE509: +1257:Src/main.c **** + 6396 .loc 2 1257 3 is_stmt 1 view .LVU2085 + 6397 .LBB511: + 6398 .LBI511: + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 6399 .loc 6 598 22 view .LVU2086 + 6400 .LBB512: + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6401 .loc 6 600 3 view .LVU2087 + 6402 00b2 D3F8B820 ldr r2, [r3, #184] + 6403 00b6 22F0C002 bic r2, r2, #192 + 6404 00ba 42F04002 orr r2, r2, #64 + 6405 00be C3F8B820 str r2, [r3, #184] + 6406 .LVL491: + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6407 .loc 6 600 3 is_stmt 0 view .LVU2088 + 6408 .LBE512: + 6409 .LBE511: +1259:Src/main.c **** + 6410 .loc 2 1259 3 is_stmt 1 view .LVU2089 + 6411 .LBB513: + 6412 .LBI513: + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 6413 .loc 6 924 22 view .LVU2090 + 6414 .LBB514: + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6415 .loc 6 926 3 view .LVU2091 + 6416 00c2 D3F8B820 ldr r2, [r3, #184] + 6417 00c6 42F44032 orr r2, r2, #196608 + 6418 00ca C3F8B820 str r2, [r3, #184] + 6419 .LVL492: + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6420 .loc 6 926 3 is_stmt 0 view .LVU2092 + 6421 .LBE514: + 6422 .LBE513: +1261:Src/main.c **** + 6423 .loc 2 1261 3 is_stmt 1 view .LVU2093 + 6424 .LBB515: + ARM GAS /tmp/ccdsDELB.s page 473 + + + 6425 .LBI515: + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 6426 .loc 6 646 22 view .LVU2094 + 6427 .LBB516: + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6428 .loc 6 648 3 view .LVU2095 + 6429 00ce D3F8B820 ldr r2, [r3, #184] + 6430 00d2 22F49072 bic r2, r2, #288 + 6431 00d6 C3F8B820 str r2, [r3, #184] + 6432 .LVL493: + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6433 .loc 6 648 3 is_stmt 0 view .LVU2096 + 6434 .LBE516: + 6435 .LBE515: +1263:Src/main.c **** + 6436 .loc 2 1263 3 is_stmt 1 view .LVU2097 + 6437 .LBB517: + 6438 .LBI517: + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 6439 .loc 6 693 22 view .LVU2098 + 6440 .LBB518: + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6441 .loc 6 695 3 view .LVU2099 + 6442 00da D3F8B820 ldr r2, [r3, #184] + 6443 00de 22F40072 bic r2, r2, #512 + 6444 00e2 C3F8B820 str r2, [r3, #184] + 6445 .LVL494: + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6446 .loc 6 695 3 is_stmt 0 view .LVU2100 + 6447 .LBE518: + 6448 .LBE517: +1265:Src/main.c **** + 6449 .loc 2 1265 3 is_stmt 1 view .LVU2101 + 6450 .LBB519: + 6451 .LBI519: + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 6452 .loc 6 738 22 view .LVU2102 + 6453 .LBB520: + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6454 .loc 6 740 3 view .LVU2103 + 6455 00e6 D3F8B820 ldr r2, [r3, #184] + 6456 00ea 42F48062 orr r2, r2, #1024 + 6457 00ee C3F8B820 str r2, [r3, #184] + 6458 .LVL495: + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6459 .loc 6 740 3 is_stmt 0 view .LVU2104 + 6460 .LBE520: + 6461 .LBE519: +1267:Src/main.c **** + 6462 .loc 2 1267 3 is_stmt 1 view .LVU2105 + 6463 .LBB521: + 6464 .LBI521: + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 6465 .loc 6 784 22 view .LVU2106 + 6466 .LBB522: + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6467 .loc 6 786 3 view .LVU2107 + ARM GAS /tmp/ccdsDELB.s page 474 + + + 6468 00f2 D3F8B820 ldr r2, [r3, #184] + 6469 00f6 22F4C052 bic r2, r2, #6144 + 6470 00fa C3F8B820 str r2, [r3, #184] + 6471 .LVL496: + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6472 .loc 6 786 3 is_stmt 0 view .LVU2108 + 6473 .LBE522: + 6474 .LBE521: +1269:Src/main.c **** + 6475 .loc 2 1269 3 is_stmt 1 view .LVU2109 + 6476 .LBB523: + 6477 .LBI523: + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 6478 .loc 6 831 22 view .LVU2110 + 6479 .LBB524: + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6480 .loc 6 833 3 view .LVU2111 + 6481 00fe D3F8B820 ldr r2, [r3, #184] + 6482 0102 22F4C042 bic r2, r2, #24576 + 6483 0106 C3F8B820 str r2, [r3, #184] + 6484 .LVL497: + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6485 .loc 6 833 3 is_stmt 0 view .LVU2112 + 6486 .LBE524: + 6487 .LBE523: +1271:Src/main.c **** + 6488 .loc 2 1271 3 is_stmt 1 view .LVU2113 + 6489 .LBB525: + 6490 .LBI525: +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 6491 .loc 6 1299 22 view .LVU2114 + 6492 .LBB526: +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6493 .loc 6 1301 3 view .LVU2115 + 6494 010a D3F8CC20 ldr r2, [r3, #204] + 6495 010e 22F00402 bic r2, r2, #4 + 6496 0112 C3F8CC20 str r2, [r3, #204] + 6497 .LVL498: +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 6498 .loc 6 1301 3 is_stmt 0 view .LVU2116 + 6499 .LBE526: + 6500 .LBE525: +1274:Src/main.c **** NVIC_EnableIRQ(USART1_IRQn); + 6501 .loc 2 1274 3 is_stmt 1 view .LVU2117 + 6502 .LBB527: + 6503 .LBI527: +1884:Drivers/CMSIS/Include/core_cm7.h **** { + 6504 .loc 1 1884 26 view .LVU2118 + 6505 .LBB528: +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 6506 .loc 1 1886 3 view .LVU2119 +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 6507 .loc 1 1886 26 is_stmt 0 view .LVU2120 + 6508 0116 1C4B ldr r3, .L282+12 + 6509 0118 D868 ldr r0, [r3, #12] + 6510 .LBE528: + 6511 .LBE527: + ARM GAS /tmp/ccdsDELB.s page 475 + + +1274:Src/main.c **** NVIC_EnableIRQ(USART1_IRQn); + 6512 .loc 2 1274 3 view .LVU2121 + 6513 011a 2246 mov r2, r4 + 6514 011c 2146 mov r1, r4 + 6515 011e C0F30220 ubfx r0, r0, #8, #3 + 6516 0122 FFF7FEFF bl NVIC_EncodePriority + 6517 .LVL499: + 6518 .LBB529: + 6519 .LBI529: +2024:Drivers/CMSIS/Include/core_cm7.h **** { + 6520 .loc 1 2024 22 is_stmt 1 view .LVU2122 + 6521 .LBB530: +2026:Drivers/CMSIS/Include/core_cm7.h **** { + 6522 .loc 1 2026 3 view .LVU2123 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 6523 .loc 1 2028 5 view .LVU2124 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 6524 .loc 1 2028 49 is_stmt 0 view .LVU2125 + 6525 0126 0001 lsls r0, r0, #4 + 6526 .LVL500: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 6527 .loc 1 2028 49 view .LVU2126 + 6528 0128 C0B2 uxtb r0, r0 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 6529 .loc 1 2028 47 view .LVU2127 + 6530 012a 184B ldr r3, .L282+16 + 6531 012c 83F82503 strb r0, [r3, #805] + 6532 .LVL501: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 6533 .loc 1 2028 47 view .LVU2128 + 6534 .LBE530: + 6535 .LBE529: +1275:Src/main.c **** + 6536 .loc 2 1275 3 is_stmt 1 view .LVU2129 + 6537 .LBB531: + 6538 .LBI531: +1896:Drivers/CMSIS/Include/core_cm7.h **** { + 6539 .loc 1 1896 22 view .LVU2130 + 6540 .LBB532: +1898:Drivers/CMSIS/Include/core_cm7.h **** { + 6541 .loc 1 1898 3 view .LVU2131 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 6542 .loc 1 1900 5 view .LVU2132 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 6543 .loc 1 1900 43 is_stmt 0 view .LVU2133 + 6544 0130 2022 movs r2, #32 + 6545 0132 5A60 str r2, [r3, #4] + 6546 .LVL502: +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 6547 .loc 1 1900 43 view .LVU2134 + 6548 .LBE532: + 6549 .LBE531: +1280:Src/main.c **** USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B; + 6550 .loc 2 1280 3 is_stmt 1 view .LVU2135 +1280:Src/main.c **** USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B; + 6551 .loc 2 1280 29 is_stmt 0 view .LVU2136 + 6552 0134 4FF4E133 mov r3, #115200 + ARM GAS /tmp/ccdsDELB.s page 476 + + + 6553 0138 2D93 str r3, [sp, #180] +1281:Src/main.c **** USART_InitStruct.StopBits = LL_USART_STOPBITS_1; + 6554 .loc 2 1281 3 is_stmt 1 view .LVU2137 +1281:Src/main.c **** USART_InitStruct.StopBits = LL_USART_STOPBITS_1; + 6555 .loc 2 1281 30 is_stmt 0 view .LVU2138 + 6556 013a 2E94 str r4, [sp, #184] +1282:Src/main.c **** USART_InitStruct.Parity = LL_USART_PARITY_NONE; + 6557 .loc 2 1282 3 is_stmt 1 view .LVU2139 +1282:Src/main.c **** USART_InitStruct.Parity = LL_USART_PARITY_NONE; + 6558 .loc 2 1282 29 is_stmt 0 view .LVU2140 + 6559 013c 2F94 str r4, [sp, #188] +1283:Src/main.c **** USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX; + 6560 .loc 2 1283 3 is_stmt 1 view .LVU2141 +1283:Src/main.c **** USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX; + 6561 .loc 2 1283 27 is_stmt 0 view .LVU2142 + 6562 013e 3094 str r4, [sp, #192] +1284:Src/main.c **** USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE; + 6563 .loc 2 1284 3 is_stmt 1 view .LVU2143 +1284:Src/main.c **** USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE; + 6564 .loc 2 1284 38 is_stmt 0 view .LVU2144 + 6565 0140 0C23 movs r3, #12 + 6566 0142 3193 str r3, [sp, #196] +1285:Src/main.c **** USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16; + 6567 .loc 2 1285 3 is_stmt 1 view .LVU2145 +1285:Src/main.c **** USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16; + 6568 .loc 2 1285 40 is_stmt 0 view .LVU2146 + 6569 0144 3294 str r4, [sp, #200] +1286:Src/main.c **** LL_USART_Init(USART1, &USART_InitStruct); + 6570 .loc 2 1286 3 is_stmt 1 view .LVU2147 +1286:Src/main.c **** LL_USART_Init(USART1, &USART_InitStruct); + 6571 .loc 2 1286 33 is_stmt 0 view .LVU2148 + 6572 0146 3394 str r4, [sp, #204] +1287:Src/main.c **** LL_USART_ConfigAsyncMode(USART1); + 6573 .loc 2 1287 3 is_stmt 1 view .LVU2149 + 6574 0148 04F18044 add r4, r4, #1073741824 + 6575 014c 04F58834 add r4, r4, #69632 + 6576 0150 2DA9 add r1, sp, #180 + 6577 0152 2046 mov r0, r4 + 6578 0154 FFF7FEFF bl LL_USART_Init + 6579 .LVL503: +1288:Src/main.c **** LL_USART_Enable(USART1); + 6580 .loc 2 1288 3 view .LVU2150 + 6581 .LBB533: + 6582 .LBI533: +2320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 6583 .loc 7 2320 22 view .LVU2151 + 6584 .LBB534: +2326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); + 6585 .loc 7 2326 3 view .LVU2152 + 6586 0158 6368 ldr r3, [r4, #4] + 6587 015a 23F49043 bic r3, r3, #18432 + 6588 015e 6360 str r3, [r4, #4] +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 6589 .loc 7 2327 3 view .LVU2153 + 6590 0160 A368 ldr r3, [r4, #8] + 6591 0162 23F02A03 bic r3, r3, #42 + 6592 0166 A360 str r3, [r4, #8] + ARM GAS /tmp/ccdsDELB.s page 477 + + + 6593 .LVL504: +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 6594 .loc 7 2327 3 is_stmt 0 view .LVU2154 + 6595 .LBE534: + 6596 .LBE533: +1289:Src/main.c **** /* USER CODE BEGIN USART1_Init 2 */ + 6597 .loc 2 1289 3 is_stmt 1 view .LVU2155 + 6598 .LBB535: + 6599 .LBI535: + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 6600 .loc 7 560 22 view .LVU2156 + 6601 .LBB536: + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 6602 .loc 7 562 3 view .LVU2157 + 6603 0168 2368 ldr r3, [r4] + 6604 016a 43F00103 orr r3, r3, #1 + 6605 016e 2360 str r3, [r4] + 6606 .LVL505: + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 6607 .loc 7 562 3 is_stmt 0 view .LVU2158 + 6608 .LBE536: + 6609 .LBE535: +1294:Src/main.c **** + 6610 .loc 2 1294 1 view .LVU2159 + 6611 0170 34B0 add sp, sp, #208 + 6612 .LCFI57: + 6613 .cfi_remember_state + 6614 .cfi_def_cfa_offset 24 + 6615 @ sp needed + 6616 0172 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 6617 .L281: + 6618 .LCFI58: + 6619 .cfi_restore_state +1225:Src/main.c **** } + 6620 .loc 2 1225 5 is_stmt 1 view .LVU2160 + 6621 0176 FFF7FEFF bl Error_Handler + 6622 .LVL506: + 6623 .L283: + 6624 017a 00BF .align 2 + 6625 .L282: + 6626 017c 00380240 .word 1073887232 + 6627 0180 00000240 .word 1073872896 + 6628 0184 00640240 .word 1073898496 + 6629 0188 00ED00E0 .word -536810240 + 6630 018c 00E100E0 .word -536813312 + 6631 .cfi_endproc + 6632 .LFE1200: + 6634 .section .text.MX_TIM10_Init,"ax",%progbits + 6635 .align 1 + 6636 .syntax unified + 6637 .thumb + 6638 .thumb_func + 6639 .fpu fpv5-d16 + 6641 MX_TIM10_Init: + 6642 .LFB1199: +1177:Src/main.c **** + 6643 .loc 2 1177 1 view -0 + ARM GAS /tmp/ccdsDELB.s page 478 + + + 6644 .cfi_startproc + 6645 @ args = 0, pretend = 0, frame = 0 + 6646 @ frame_needed = 0, uses_anonymous_args = 0 + 6647 0000 08B5 push {r3, lr} + 6648 .LCFI59: + 6649 .cfi_def_cfa_offset 8 + 6650 .cfi_offset 3, -8 + 6651 .cfi_offset 14, -4 +1186:Src/main.c **** htim10.Init.Prescaler = 183; + 6652 .loc 2 1186 3 view .LVU2162 +1186:Src/main.c **** htim10.Init.Prescaler = 183; + 6653 .loc 2 1186 19 is_stmt 0 view .LVU2163 + 6654 0002 0848 ldr r0, .L288 + 6655 0004 084B ldr r3, .L288+4 + 6656 0006 0360 str r3, [r0] +1187:Src/main.c **** htim10.Init.CounterMode = TIM_COUNTERMODE_UP; + 6657 .loc 2 1187 3 is_stmt 1 view .LVU2164 +1187:Src/main.c **** htim10.Init.CounterMode = TIM_COUNTERMODE_UP; + 6658 .loc 2 1187 25 is_stmt 0 view .LVU2165 + 6659 0008 B723 movs r3, #183 + 6660 000a 4360 str r3, [r0, #4] +1188:Src/main.c **** htim10.Init.Period = 9; + 6661 .loc 2 1188 3 is_stmt 1 view .LVU2166 +1188:Src/main.c **** htim10.Init.Period = 9; + 6662 .loc 2 1188 27 is_stmt 0 view .LVU2167 + 6663 000c 0023 movs r3, #0 + 6664 000e 8360 str r3, [r0, #8] +1189:Src/main.c **** htim10.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 6665 .loc 2 1189 3 is_stmt 1 view .LVU2168 +1189:Src/main.c **** htim10.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + 6666 .loc 2 1189 22 is_stmt 0 view .LVU2169 + 6667 0010 0922 movs r2, #9 + 6668 0012 C260 str r2, [r0, #12] +1190:Src/main.c **** htim10.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + 6669 .loc 2 1190 3 is_stmt 1 view .LVU2170 +1190:Src/main.c **** htim10.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + 6670 .loc 2 1190 29 is_stmt 0 view .LVU2171 + 6671 0014 0361 str r3, [r0, #16] +1191:Src/main.c **** if (HAL_TIM_Base_Init(&htim10) != HAL_OK) + 6672 .loc 2 1191 3 is_stmt 1 view .LVU2172 +1191:Src/main.c **** if (HAL_TIM_Base_Init(&htim10) != HAL_OK) + 6673 .loc 2 1191 33 is_stmt 0 view .LVU2173 + 6674 0016 8361 str r3, [r0, #24] +1192:Src/main.c **** { + 6675 .loc 2 1192 3 is_stmt 1 view .LVU2174 +1192:Src/main.c **** { + 6676 .loc 2 1192 7 is_stmt 0 view .LVU2175 + 6677 0018 FFF7FEFF bl HAL_TIM_Base_Init + 6678 .LVL507: +1192:Src/main.c **** { + 6679 .loc 2 1192 6 view .LVU2176 + 6680 001c 00B9 cbnz r0, .L287 +1200:Src/main.c **** + 6681 .loc 2 1200 1 view .LVU2177 + 6682 001e 08BD pop {r3, pc} + 6683 .L287: +1194:Src/main.c **** } + ARM GAS /tmp/ccdsDELB.s page 479 + + + 6684 .loc 2 1194 5 is_stmt 1 view .LVU2178 + 6685 0020 FFF7FEFF bl Error_Handler + 6686 .LVL508: + 6687 .L289: + 6688 .align 2 + 6689 .L288: + 6690 0024 00000000 .word .LANCHOR30 + 6691 0028 00440140 .word 1073824768 + 6692 .cfi_endproc + 6693 .LFE1199: + 6695 .section .text.SystemClock_Config,"ax",%progbits + 6696 .align 1 + 6697 .global SystemClock_Config + 6698 .syntax unified + 6699 .thumb + 6700 .thumb_func + 6701 .fpu fpv5-d16 + 6703 SystemClock_Config: + 6704 .LFB1187: + 551:Src/main.c **** RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + 6705 .loc 2 551 1 view -0 + 6706 .cfi_startproc + 6707 @ args = 0, pretend = 0, frame = 80 + 6708 @ frame_needed = 0, uses_anonymous_args = 0 + 6709 0000 00B5 push {lr} + 6710 .LCFI60: + 6711 .cfi_def_cfa_offset 4 + 6712 .cfi_offset 14, -4 + 6713 0002 95B0 sub sp, sp, #84 + 6714 .LCFI61: + 6715 .cfi_def_cfa_offset 88 + 552:Src/main.c **** RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 6716 .loc 2 552 3 view .LVU2180 + 552:Src/main.c **** RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + 6717 .loc 2 552 22 is_stmt 0 view .LVU2181 + 6718 0004 3422 movs r2, #52 + 6719 0006 0021 movs r1, #0 + 6720 0008 07A8 add r0, sp, #28 + 6721 000a FFF7FEFF bl memset + 6722 .LVL509: + 553:Src/main.c **** + 6723 .loc 2 553 3 is_stmt 1 view .LVU2182 + 553:Src/main.c **** + 6724 .loc 2 553 22 is_stmt 0 view .LVU2183 + 6725 000e 0023 movs r3, #0 + 6726 0010 0293 str r3, [sp, #8] + 6727 0012 0393 str r3, [sp, #12] + 6728 0014 0493 str r3, [sp, #16] + 6729 0016 0593 str r3, [sp, #20] + 6730 0018 0693 str r3, [sp, #24] + 557:Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 6731 .loc 2 557 3 is_stmt 1 view .LVU2184 + 6732 .LBB537: + 557:Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 6733 .loc 2 557 3 view .LVU2185 + 557:Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 6734 .loc 2 557 3 view .LVU2186 + ARM GAS /tmp/ccdsDELB.s page 480 + + + 6735 001a 244B ldr r3, .L298 + 6736 001c 1A6C ldr r2, [r3, #64] + 6737 001e 42F08052 orr r2, r2, #268435456 + 6738 0022 1A64 str r2, [r3, #64] + 557:Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 6739 .loc 2 557 3 view .LVU2187 + 6740 0024 1B6C ldr r3, [r3, #64] + 6741 0026 03F08053 and r3, r3, #268435456 + 6742 002a 0093 str r3, [sp] + 557:Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 6743 .loc 2 557 3 view .LVU2188 + 6744 002c 009B ldr r3, [sp] + 6745 .LBE537: + 557:Src/main.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); + 6746 .loc 2 557 3 view .LVU2189 + 558:Src/main.c **** + 6747 .loc 2 558 3 view .LVU2190 + 6748 .LBB538: + 558:Src/main.c **** + 6749 .loc 2 558 3 view .LVU2191 + 558:Src/main.c **** + 6750 .loc 2 558 3 view .LVU2192 + 6751 002e 204B ldr r3, .L298+4 + 6752 0030 1A68 ldr r2, [r3] + 6753 0032 42F44042 orr r2, r2, #49152 + 6754 0036 1A60 str r2, [r3] + 558:Src/main.c **** + 6755 .loc 2 558 3 view .LVU2193 + 6756 0038 1B68 ldr r3, [r3] + 6757 003a 03F44043 and r3, r3, #49152 + 6758 003e 0193 str r3, [sp, #4] + 558:Src/main.c **** + 6759 .loc 2 558 3 view .LVU2194 + 6760 0040 019B ldr r3, [sp, #4] + 6761 .LBE538: + 558:Src/main.c **** + 6762 .loc 2 558 3 view .LVU2195 + 563:Src/main.c **** RCC_OscInitStruct.HSEState = RCC_HSE_ON; + 6763 .loc 2 563 3 view .LVU2196 + 563:Src/main.c **** RCC_OscInitStruct.HSEState = RCC_HSE_ON; + 6764 .loc 2 563 36 is_stmt 0 view .LVU2197 + 6765 0042 0123 movs r3, #1 + 6766 0044 0793 str r3, [sp, #28] + 564:Src/main.c **** RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + 6767 .loc 2 564 3 is_stmt 1 view .LVU2198 + 564:Src/main.c **** RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + 6768 .loc 2 564 30 is_stmt 0 view .LVU2199 + 6769 0046 4FF48033 mov r3, #65536 + 6770 004a 0893 str r3, [sp, #32] + 565:Src/main.c **** RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + 6771 .loc 2 565 3 is_stmt 1 view .LVU2200 + 565:Src/main.c **** RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + 6772 .loc 2 565 34 is_stmt 0 view .LVU2201 + 6773 004c 0223 movs r3, #2 + 6774 004e 0D93 str r3, [sp, #52] + 566:Src/main.c **** RCC_OscInitStruct.PLL.PLLM = 25; + 6775 .loc 2 566 3 is_stmt 1 view .LVU2202 + ARM GAS /tmp/ccdsDELB.s page 481 + + + 566:Src/main.c **** RCC_OscInitStruct.PLL.PLLM = 25; + 6776 .loc 2 566 35 is_stmt 0 view .LVU2203 + 6777 0050 4FF48002 mov r2, #4194304 + 6778 0054 0E92 str r2, [sp, #56] + 567:Src/main.c **** RCC_OscInitStruct.PLL.PLLN = 368; + 6779 .loc 2 567 3 is_stmt 1 view .LVU2204 + 567:Src/main.c **** RCC_OscInitStruct.PLL.PLLN = 368; + 6780 .loc 2 567 30 is_stmt 0 view .LVU2205 + 6781 0056 1922 movs r2, #25 + 6782 0058 0F92 str r2, [sp, #60] + 568:Src/main.c **** RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + 6783 .loc 2 568 3 is_stmt 1 view .LVU2206 + 568:Src/main.c **** RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; + 6784 .loc 2 568 30 is_stmt 0 view .LVU2207 + 6785 005a 4FF4B872 mov r2, #368 + 6786 005e 1092 str r2, [sp, #64] + 569:Src/main.c **** RCC_OscInitStruct.PLL.PLLQ = 8; + 6787 .loc 2 569 3 is_stmt 1 view .LVU2208 + 569:Src/main.c **** RCC_OscInitStruct.PLL.PLLQ = 8; + 6788 .loc 2 569 30 is_stmt 0 view .LVU2209 + 6789 0060 1193 str r3, [sp, #68] + 570:Src/main.c **** RCC_OscInitStruct.PLL.PLLR = 2; + 6790 .loc 2 570 3 is_stmt 1 view .LVU2210 + 570:Src/main.c **** RCC_OscInitStruct.PLL.PLLR = 2; + 6791 .loc 2 570 30 is_stmt 0 view .LVU2211 + 6792 0062 0822 movs r2, #8 + 6793 0064 1292 str r2, [sp, #72] + 571:Src/main.c **** if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 6794 .loc 2 571 3 is_stmt 1 view .LVU2212 + 571:Src/main.c **** if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + 6795 .loc 2 571 30 is_stmt 0 view .LVU2213 + 6796 0066 1393 str r3, [sp, #76] + 572:Src/main.c **** { + 6797 .loc 2 572 3 is_stmt 1 view .LVU2214 + 572:Src/main.c **** { + 6798 .loc 2 572 7 is_stmt 0 view .LVU2215 + 6799 0068 07A8 add r0, sp, #28 + 6800 006a FFF7FEFF bl HAL_RCC_OscConfig + 6801 .LVL510: + 572:Src/main.c **** { + 6802 .loc 2 572 6 view .LVU2216 + 6803 006e B0B9 cbnz r0, .L295 + 579:Src/main.c **** { + 6804 .loc 2 579 3 is_stmt 1 view .LVU2217 + 579:Src/main.c **** { + 6805 .loc 2 579 7 is_stmt 0 view .LVU2218 + 6806 0070 FFF7FEFF bl HAL_PWREx_EnableOverDrive + 6807 .LVL511: + 579:Src/main.c **** { + 6808 .loc 2 579 6 view .LVU2219 + 6809 0074 A8B9 cbnz r0, .L296 + 586:Src/main.c **** |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + 6810 .loc 2 586 3 is_stmt 1 view .LVU2220 + 586:Src/main.c **** |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; + 6811 .loc 2 586 31 is_stmt 0 view .LVU2221 + 6812 0076 0F23 movs r3, #15 + 6813 0078 0293 str r3, [sp, #8] + ARM GAS /tmp/ccdsDELB.s page 482 + + + 588:Src/main.c **** RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 6814 .loc 2 588 3 is_stmt 1 view .LVU2222 + 588:Src/main.c **** RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + 6815 .loc 2 588 34 is_stmt 0 view .LVU2223 + 6816 007a 0223 movs r3, #2 + 6817 007c 0393 str r3, [sp, #12] + 589:Src/main.c **** RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + 6818 .loc 2 589 3 is_stmt 1 view .LVU2224 + 589:Src/main.c **** RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; + 6819 .loc 2 589 35 is_stmt 0 view .LVU2225 + 6820 007e 0023 movs r3, #0 + 6821 0080 0493 str r3, [sp, #16] + 590:Src/main.c **** RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + 6822 .loc 2 590 3 is_stmt 1 view .LVU2226 + 590:Src/main.c **** RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; + 6823 .loc 2 590 36 is_stmt 0 view .LVU2227 + 6824 0082 4FF4A053 mov r3, #5120 + 6825 0086 0593 str r3, [sp, #20] + 591:Src/main.c **** + 6826 .loc 2 591 3 is_stmt 1 view .LVU2228 + 591:Src/main.c **** + 6827 .loc 2 591 36 is_stmt 0 view .LVU2229 + 6828 0088 4FF48053 mov r3, #4096 + 6829 008c 0693 str r3, [sp, #24] + 593:Src/main.c **** { + 6830 .loc 2 593 3 is_stmt 1 view .LVU2230 + 593:Src/main.c **** { + 6831 .loc 2 593 7 is_stmt 0 view .LVU2231 + 6832 008e 0621 movs r1, #6 + 6833 0090 02A8 add r0, sp, #8 + 6834 0092 FFF7FEFF bl HAL_RCC_ClockConfig + 6835 .LVL512: + 593:Src/main.c **** { + 6836 .loc 2 593 6 view .LVU2232 + 6837 0096 30B9 cbnz r0, .L297 + 597:Src/main.c **** + 6838 .loc 2 597 1 view .LVU2233 + 6839 0098 15B0 add sp, sp, #84 + 6840 .LCFI62: + 6841 .cfi_remember_state + 6842 .cfi_def_cfa_offset 4 + 6843 @ sp needed + 6844 009a 5DF804FB ldr pc, [sp], #4 + 6845 .L295: + 6846 .LCFI63: + 6847 .cfi_restore_state + 574:Src/main.c **** } + 6848 .loc 2 574 5 is_stmt 1 view .LVU2234 + 6849 009e FFF7FEFF bl Error_Handler + 6850 .LVL513: + 6851 .L296: + 581:Src/main.c **** } + 6852 .loc 2 581 5 view .LVU2235 + 6853 00a2 FFF7FEFF bl Error_Handler + 6854 .LVL514: + 6855 .L297: + 595:Src/main.c **** } + ARM GAS /tmp/ccdsDELB.s page 483 + + + 6856 .loc 2 595 5 view .LVU2236 + 6857 00a6 FFF7FEFF bl Error_Handler + 6858 .LVL515: + 6859 .L299: + 6860 00aa 00BF .align 2 + 6861 .L298: + 6862 00ac 00380240 .word 1073887232 + 6863 00b0 00700040 .word 1073770496 + 6864 .cfi_endproc + 6865 .LFE1187: + 6867 .section .text.main,"ax",%progbits + 6868 .align 1 + 6869 .global main + 6870 .syntax unified + 6871 .thumb + 6872 .thumb_func + 6873 .fpu fpv5-d16 + 6875 main: + 6876 .LFB1186: + 115:Src/main.c **** /* USER CODE BEGIN 1 */ + 6877 .loc 2 115 1 view -0 + 6878 .cfi_startproc + 6879 @ args = 0, pretend = 0, frame = 0 + 6880 @ frame_needed = 0, uses_anonymous_args = 0 + 6881 0000 2DE9F843 push {r3, r4, r5, r6, r7, r8, r9, lr} + 6882 .LCFI64: + 6883 .cfi_def_cfa_offset 32 + 6884 .cfi_offset 3, -32 + 6885 .cfi_offset 4, -28 + 6886 .cfi_offset 5, -24 + 6887 .cfi_offset 6, -20 + 6888 .cfi_offset 7, -16 + 6889 .cfi_offset 8, -12 + 6890 .cfi_offset 9, -8 + 6891 .cfi_offset 14, -4 + 117:Src/main.c **** /* USER CODE END 1 */ + 6892 .loc 2 117 2 view .LVU2238 + 123:Src/main.c **** + 6893 .loc 2 123 3 view .LVU2239 + 6894 0004 FFF7FEFF bl HAL_Init + 6895 .LVL516: + 130:Src/main.c **** + 6896 .loc 2 130 3 view .LVU2240 + 6897 0008 FFF7FEFF bl SystemClock_Config + 6898 .LVL517: + 137:Src/main.c **** MX_DMA_Init(); + 6899 .loc 2 137 3 view .LVU2241 + 6900 000c FFF7FEFF bl MX_GPIO_Init + 6901 .LVL518: + 138:Src/main.c **** MX_SPI4_Init(); + 6902 .loc 2 138 3 view .LVU2242 + 6903 0010 FFF7FEFF bl MX_DMA_Init + 6904 .LVL519: + 139:Src/main.c **** MX_FATFS_Init(); + 6905 .loc 2 139 3 view .LVU2243 + 6906 0014 FFF7FEFF bl MX_SPI4_Init + 6907 .LVL520: + ARM GAS /tmp/ccdsDELB.s page 484 + + + 140:Src/main.c **** MX_TIM2_Init(); + 6908 .loc 2 140 3 view .LVU2244 + 6909 0018 FFF7FEFF bl MX_FATFS_Init + 6910 .LVL521: + 141:Src/main.c **** MX_TIM5_Init(); + 6911 .loc 2 141 3 view .LVU2245 + 6912 001c FFF7FEFF bl MX_TIM2_Init + 6913 .LVL522: + 142:Src/main.c **** MX_ADC1_Init(); + 6914 .loc 2 142 3 view .LVU2246 + 6915 0020 FFF7FEFF bl MX_TIM5_Init + 6916 .LVL523: + 143:Src/main.c **** MX_ADC3_Init(); + 6917 .loc 2 143 3 view .LVU2247 + 6918 0024 FFF7FEFF bl MX_ADC1_Init + 6919 .LVL524: + 144:Src/main.c **** MX_SPI2_Init(); + 6920 .loc 2 144 3 view .LVU2248 + 6921 0028 FFF7FEFF bl MX_ADC3_Init + 6922 .LVL525: + 145:Src/main.c **** MX_SPI5_Init(); + 6923 .loc 2 145 3 view .LVU2249 + 6924 002c FFF7FEFF bl MX_SPI2_Init + 6925 .LVL526: + 146:Src/main.c **** MX_SPI6_Init(); + 6926 .loc 2 146 3 view .LVU2250 + 6927 0030 FFF7FEFF bl MX_SPI5_Init + 6928 .LVL527: + 147:Src/main.c **** MX_USART1_UART_Init(); + 6929 .loc 2 147 3 view .LVU2251 + 6930 0034 FFF7FEFF bl MX_SPI6_Init + 6931 .LVL528: + 148:Src/main.c **** MX_SDMMC1_SD_Init(); + 6932 .loc 2 148 3 view .LVU2252 + 6933 0038 FFF7FEFF bl MX_USART1_UART_Init + 6934 .LVL529: + 149:Src/main.c **** MX_TIM7_Init(); + 6935 .loc 2 149 3 view .LVU2253 + 6936 003c FFF7FEFF bl MX_SDMMC1_SD_Init + 6937 .LVL530: + 150:Src/main.c **** MX_TIM6_Init(); + 6938 .loc 2 150 3 view .LVU2254 + 6939 0040 FFF7FEFF bl MX_TIM7_Init + 6940 .LVL531: + 151:Src/main.c **** MX_TIM10_Init(); + 6941 .loc 2 151 3 view .LVU2255 + 6942 0044 FFF7FEFF bl MX_TIM6_Init + 6943 .LVL532: + 152:Src/main.c **** /* USER CODE BEGIN 2 */ + 6944 .loc 2 152 3 view .LVU2256 + 6945 0048 FFF7FEFF bl MX_TIM10_Init + 6946 .LVL533: + 154:Src/main.c **** /* USER CODE END 2 */ + 6947 .loc 2 154 2 view .LVU2257 + 6948 004c FFF7FEFF bl Init_params + 6949 .LVL534: + 6950 0050 3FE0 b .L301 + ARM GAS /tmp/ccdsDELB.s page 485 + + + 6951 .L352: + 161:Src/main.c **** { + 6952 .loc 2 161 85 is_stmt 0 discriminator 1 view .LVU2258 + 6953 0052 744B ldr r3, .L359 + 6954 0054 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 161:Src/main.c **** { + 6955 .loc 2 161 73 discriminator 1 view .LVU2259 + 6956 0056 002B cmp r3, #0 + 6957 0058 42D1 bne .L302 + 6958 .L303: +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 6959 .loc 7 3073 3 is_stmt 1 view .LVU2260 + 6960 .LBB539: + 6961 .LBB540: +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 6962 .loc 7 3073 3 view .LVU2261 +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 6963 .loc 7 3073 3 view .LVU2262 +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 6964 .loc 7 3073 3 view .LVU2263 + 6965 005a 734B ldr r3, .L359+4 + 6966 .LVL535: + 6967 .LBB541: + 6968 .LBI541: +1068:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 6969 .loc 8 1068 31 view .LVU2264 + 6970 .LBB542: +1070:Drivers/CMSIS/Include/cmsis_gcc.h **** + 6971 .loc 8 1070 5 view .LVU2265 +1072:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 6972 .loc 8 1072 4 view .LVU2266 + 6973 .syntax unified + 6974 @ 1072 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 6975 005c 53E8002F ldrex r2, [r3] + 6976 @ 0 "" 2 + 6977 .LVL536: +1073:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 6978 .loc 8 1073 4 view .LVU2267 +1073:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 6979 .loc 8 1073 4 is_stmt 0 view .LVU2268 + 6980 .thumb + 6981 .syntax unified + 6982 .LBE542: + 6983 .LBE541: +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 6984 .loc 7 3073 3 view .LVU2269 + 6985 0060 42F48072 orr r2, r2, #256 + 6986 .LVL537: +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 6987 .loc 7 3073 3 is_stmt 1 view .LVU2270 + 6988 .LBB543: + 6989 .LBI543: +1119:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 6990 .loc 8 1119 31 view .LVU2271 + 6991 .LBB544: +1121:Drivers/CMSIS/Include/cmsis_gcc.h **** + 6992 .loc 8 1121 4 view .LVU2272 + ARM GAS /tmp/ccdsDELB.s page 486 + + +1123:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 6993 .loc 8 1123 4 view .LVU2273 + 6994 .syntax unified + 6995 @ 1123 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 6996 0064 43E80021 strex r1, r2, [r3] + 6997 @ 0 "" 2 + 6998 .LVL538: + 6999 .loc 8 1124 4 view .LVU2274 + 7000 .loc 8 1124 4 is_stmt 0 view .LVU2275 + 7001 .thumb + 7002 .syntax unified + 7003 .LBE544: + 7004 .LBE543: +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7005 .loc 7 3073 3 view .LVU2276 + 7006 0068 0029 cmp r1, #0 + 7007 006a F6D1 bne .L303 + 7008 .LVL539: + 7009 .L304: +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7010 .loc 7 3073 3 view .LVU2277 + 7011 .LBE540: + 7012 .LBE539: +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7013 .loc 7 3040 3 is_stmt 1 view .LVU2278 + 7014 .LBB545: + 7015 .LBB546: +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7016 .loc 7 3040 3 view .LVU2279 +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7017 .loc 7 3040 3 view .LVU2280 +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7018 .loc 7 3040 3 view .LVU2281 + 7019 .LBB547: + 7020 .LBI547: +1068:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 7021 .loc 8 1068 31 view .LVU2282 + 7022 .LBB548: +1070:Drivers/CMSIS/Include/cmsis_gcc.h **** + 7023 .loc 8 1070 5 view .LVU2283 +1072:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 7024 .loc 8 1072 4 view .LVU2284 + 7025 .syntax unified + 7026 @ 1072 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 7027 006c 53E8002F ldrex r2, [r3] + 7028 @ 0 "" 2 + 7029 .LVL540: +1073:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 7030 .loc 8 1073 4 view .LVU2285 +1073:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 7031 .loc 8 1073 4 is_stmt 0 view .LVU2286 + 7032 .thumb + 7033 .syntax unified + 7034 .LBE548: + 7035 .LBE547: +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7036 .loc 7 3040 3 view .LVU2287 + ARM GAS /tmp/ccdsDELB.s page 487 + + + 7037 0070 42F02002 orr r2, r2, #32 + 7038 .LVL541: +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7039 .loc 7 3040 3 is_stmt 1 view .LVU2288 + 7040 .LBB549: + 7041 .LBI549: +1119:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 7042 .loc 8 1119 31 view .LVU2289 + 7043 .LBB550: +1121:Drivers/CMSIS/Include/cmsis_gcc.h **** + 7044 .loc 8 1121 4 view .LVU2290 +1123:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 7045 .loc 8 1123 4 view .LVU2291 + 7046 .syntax unified + 7047 @ 1123 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 7048 0074 43E80021 strex r1, r2, [r3] + 7049 @ 0 "" 2 + 7050 .LVL542: + 7051 .loc 8 1124 4 view .LVU2292 + 7052 .loc 8 1124 4 is_stmt 0 view .LVU2293 + 7053 .thumb + 7054 .syntax unified + 7055 .LBE550: + 7056 .LBE549: +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7057 .loc 7 3040 3 view .LVU2294 + 7058 0078 0029 cmp r1, #0 + 7059 007a F7D1 bne .L304 + 7060 .LVL543: + 7061 .L305: +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7062 .loc 7 3040 3 view .LVU2295 + 7063 .LBE546: + 7064 .LBE545: +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7065 .loc 7 3136 3 is_stmt 1 view .LVU2296 + 7066 .LBB551: + 7067 .LBB552: +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7068 .loc 7 3136 3 view .LVU2297 +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7069 .loc 7 3136 3 view .LVU2298 +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7070 .loc 7 3136 3 view .LVU2299 + 7071 007c 6B4A ldr r2, .L359+8 + 7072 .LVL544: + 7073 .LBB553: + 7074 .LBI553: +1068:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 7075 .loc 8 1068 31 view .LVU2300 + 7076 .LBB554: +1070:Drivers/CMSIS/Include/cmsis_gcc.h **** + 7077 .loc 8 1070 5 view .LVU2301 +1072:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 7078 .loc 8 1072 4 view .LVU2302 + 7079 .syntax unified + 7080 @ 1072 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + ARM GAS /tmp/ccdsDELB.s page 488 + + + 7081 007e 52E8003F ldrex r3, [r2] + 7082 @ 0 "" 2 + 7083 .LVL545: +1073:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 7084 .loc 8 1073 4 view .LVU2303 +1073:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 7085 .loc 8 1073 4 is_stmt 0 view .LVU2304 + 7086 .thumb + 7087 .syntax unified + 7088 .LBE554: + 7089 .LBE553: +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7090 .loc 7 3136 3 view .LVU2305 + 7091 0082 43F00103 orr r3, r3, #1 + 7092 .LVL546: +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7093 .loc 7 3136 3 is_stmt 1 view .LVU2306 + 7094 .LBB555: + 7095 .LBI555: +1119:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 7096 .loc 8 1119 31 view .LVU2307 + 7097 .LBB556: +1121:Drivers/CMSIS/Include/cmsis_gcc.h **** + 7098 .loc 8 1121 4 view .LVU2308 +1123:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 7099 .loc 8 1123 4 view .LVU2309 + 7100 .syntax unified + 7101 @ 1123 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 7102 0086 42E80031 strex r1, r3, [r2] + 7103 @ 0 "" 2 + 7104 .LVL547: + 7105 .loc 8 1124 4 view .LVU2310 + 7106 .loc 8 1124 4 is_stmt 0 view .LVU2311 + 7107 .thumb + 7108 .syntax unified + 7109 .LBE556: + 7110 .LBE555: +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7111 .loc 7 3136 3 view .LVU2312 + 7112 008a 0029 cmp r1, #0 + 7113 008c F6D1 bne .L305 + 7114 .LBE552: + 7115 .LBE551: +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 7116 .loc 7 3136 3 is_stmt 1 view .LVU2313 + 7117 .LVL548: + 167:Src/main.c **** NVIC_EnableIRQ(USART1_IRQn);//In other case you have FE error flag... + 7118 .loc 2 167 4 view .LVU2314 + 7119 .LBB557: + 7120 .LBI557: +2024:Drivers/CMSIS/Include/core_cm7.h **** { + 7121 .loc 1 2024 22 view .LVU2315 + 7122 .LBB558: +2026:Drivers/CMSIS/Include/core_cm7.h **** { + 7123 .loc 1 2026 3 view .LVU2316 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 7124 .loc 1 2028 5 view .LVU2317 + ARM GAS /tmp/ccdsDELB.s page 489 + + +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 7125 .loc 1 2028 47 is_stmt 0 view .LVU2318 + 7126 008e 684B ldr r3, .L359+12 + 7127 0090 0022 movs r2, #0 + 7128 0092 83F82523 strb r2, [r3, #805] + 7129 .LVL549: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 7130 .loc 1 2028 47 view .LVU2319 + 7131 .LBE558: + 7132 .LBE557: + 168:Src/main.c **** u_rx_flg = 1; + 7133 .loc 2 168 4 is_stmt 1 view .LVU2320 + 7134 .LBB559: + 7135 .LBI559: +1896:Drivers/CMSIS/Include/core_cm7.h **** { + 7136 .loc 1 1896 22 view .LVU2321 + 7137 .LBB560: +1898:Drivers/CMSIS/Include/core_cm7.h **** { + 7138 .loc 1 1898 3 view .LVU2322 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 7139 .loc 1 1900 5 view .LVU2323 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 7140 .loc 1 1900 43 is_stmt 0 view .LVU2324 + 7141 0096 2022 movs r2, #32 + 7142 0098 5A60 str r2, [r3, #4] + 7143 .LVL550: +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 7144 .loc 1 1900 43 view .LVU2325 + 7145 .LBE560: + 7146 .LBE559: + 169:Src/main.c **** } + 7147 .loc 2 169 4 is_stmt 1 view .LVU2326 + 169:Src/main.c **** } + 7148 .loc 2 169 13 is_stmt 0 view .LVU2327 + 7149 009a 624B ldr r3, .L359 + 7150 009c 0122 movs r2, #1 + 7151 009e 1A70 strb r2, [r3] + 7152 00a0 1EE0 b .L302 + 7153 .L317: + 179:Src/main.c **** task.current_param = task.min_param; + 7154 .loc 2 179 6 is_stmt 1 view .LVU2328 + 179:Src/main.c **** task.current_param = task.min_param; + 7155 .loc 2 179 20 is_stmt 0 view .LVU2329 + 7156 00a2 644B ldr r3, .L359+16 + 7157 00a4 0022 movs r2, #0 + 7158 00a6 1A70 strb r2, [r3] + 180:Src/main.c **** Stop_TIM10(); + 7159 .loc 2 180 6 is_stmt 1 view .LVU2330 + 180:Src/main.c **** Stop_TIM10(); + 7160 .loc 2 180 31 is_stmt 0 view .LVU2331 + 7161 00a8 634B ldr r3, .L359+20 + 7162 00aa 5A68 ldr r2, [r3, #4] @ float + 180:Src/main.c **** Stop_TIM10(); + 7163 .loc 2 180 25 view .LVU2332 + 7164 00ac 1A61 str r2, [r3, #16] @ float + 181:Src/main.c **** break; + 7165 .loc 2 181 6 is_stmt 1 view .LVU2333 + ARM GAS /tmp/ccdsDELB.s page 490 + + + 7166 00ae FFF7FEFF bl Stop_TIM10 + 7167 .LVL551: + 182:Src/main.c **** case DECODE_ENABLE://1 - Decode rec. message + 7168 .loc 2 182 5 view .LVU2334 + 7169 .L306: + 490:Src/main.c **** { + 7170 .loc 2 490 3 view .LVU2335 + 7171 00b2 624B ldr r3, .L359+24 + 7172 00b4 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 7173 00b6 022B cmp r3, #2 + 7174 00b8 00F07583 beq .L341 + 7175 00bc 032B cmp r3, #3 + 7176 00be 00F0A683 beq .L348 + 7177 00c2 012B cmp r3, #1 + 7178 00c4 00F06483 beq .L350 + 7179 .L343: + 532:Src/main.c **** { + 7180 .loc 2 532 5 view .LVU2336 + 532:Src/main.c **** { + 7181 .loc 2 532 17 is_stmt 0 view .LVU2337 + 7182 00c8 5D4B ldr r3, .L359+28 + 7183 00ca 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 532:Src/main.c **** { + 7184 .loc 2 532 8 view .LVU2338 + 7185 00cc 012B cmp r3, #1 + 7186 00ce 00F0A083 beq .L351 + 7187 .L301: + 159:Src/main.c **** { + 7188 .loc 2 159 3 is_stmt 1 view .LVU2339 + 161:Src/main.c **** { + 7189 .loc 2 161 3 view .LVU2340 + 161:Src/main.c **** { + 7190 .loc 2 161 8 is_stmt 0 view .LVU2341 + 7191 00d2 4FF48071 mov r1, #256 + 7192 00d6 5B48 ldr r0, .L359+32 + 7193 00d8 FFF7FEFF bl HAL_GPIO_ReadPin + 7194 .LVL552: + 161:Src/main.c **** { + 7195 .loc 2 161 6 view .LVU2342 + 7196 00dc 0128 cmp r0, #1 + 7197 00de B8D0 beq .L352 + 7198 .L302: + 176:Src/main.c **** { + 7199 .loc 2 176 4 is_stmt 1 view .LVU2343 + 7200 00e0 594B ldr r3, .L359+36 + 7201 00e2 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 7202 00e4 092B cmp r3, #9 + 7203 00e6 E4D8 bhi .L306 + 7204 00e8 01A2 adr r2, .L308 + 7205 00ea 52F823F0 ldr pc, [r2, r3, lsl #2] + 7206 00ee 00BF .p2align 2 + 7207 .L308: + 7208 00f0 A3000000 .word .L317+1 + 7209 00f4 19010000 .word .L316+1 + 7210 00f8 83010000 .word .L315+1 + 7211 00fc B9010000 .word .L314+1 + 7212 0100 E9010000 .word .L313+1 + ARM GAS /tmp/ccdsDELB.s page 491 + + + 7213 0104 F9010000 .word .L312+1 + 7214 0108 15020000 .word .L311+1 + 7215 010c 79020000 .word .L310+1 + 7216 0110 C9030000 .word .L309+1 + 7217 0114 0F040000 .word .L307+1 + 7218 .p2align 1 + 7219 .L316: + 184:Src/main.c **** if (CheckChecksum(COMMAND)) + 7220 .loc 2 184 6 view .LVU2344 + 184:Src/main.c **** if (CheckChecksum(COMMAND)) + 7221 .loc 2 184 18 is_stmt 0 view .LVU2345 + 7222 0118 4C4C ldr r4, .L359+40 + 7223 011a 0D21 movs r1, #13 + 7224 011c 2046 mov r0, r4 + 7225 011e FFF7FEFF bl CalculateChecksum + 7226 .LVL553: + 184:Src/main.c **** if (CheckChecksum(COMMAND)) + 7227 .loc 2 184 16 view .LVU2346 + 7228 0122 4B4B ldr r3, .L359+44 + 7229 0124 1880 strh r0, [r3] @ movhi + 185:Src/main.c **** { + 7230 .loc 2 185 6 is_stmt 1 view .LVU2347 + 185:Src/main.c **** { + 7231 .loc 2 185 10 is_stmt 0 view .LVU2348 + 7232 0126 2046 mov r0, r4 + 7233 0128 FFF7FEFF bl CheckChecksum + 7234 .LVL554: + 185:Src/main.c **** { + 7235 .loc 2 185 9 view .LVU2349 + 7236 012c 70B9 cbnz r0, .L353 + 198:Src/main.c **** CPU_state = DEFAULT_ENABLE; + 7237 .loc 2 198 7 is_stmt 1 view .LVU2350 + 198:Src/main.c **** CPU_state = DEFAULT_ENABLE; + 7238 .loc 2 198 21 is_stmt 0 view .LVU2351 + 7239 012e 494A ldr r2, .L359+48 + 7240 0130 1378 ldrb r3, [r2] @ zero_extendqisi2 + 7241 0132 43F00403 orr r3, r3, #4 + 7242 0136 1370 strb r3, [r2] + 199:Src/main.c **** CPU_state_old = HALT;//Save main current cycle + 7243 .loc 2 199 7 is_stmt 1 view .LVU2352 + 199:Src/main.c **** CPU_state_old = HALT;//Save main current cycle + 7244 .loc 2 199 17 is_stmt 0 view .LVU2353 + 7245 0138 434B ldr r3, .L359+36 + 7246 013a 0222 movs r2, #2 + 7247 013c 1A70 strb r2, [r3] + 200:Src/main.c **** } + 7248 .loc 2 200 7 is_stmt 1 view .LVU2354 + 200:Src/main.c **** } + 7249 .loc 2 200 21 is_stmt 0 view .LVU2355 + 7250 013e 3D4B ldr r3, .L359+16 + 7251 0140 0022 movs r2, #0 + 7252 0142 1A70 strb r2, [r3] + 7253 .L319: + 202:Src/main.c **** break; + 7254 .loc 2 202 6 is_stmt 1 view .LVU2356 + 202:Src/main.c **** break; + 7255 .loc 2 202 32 is_stmt 0 view .LVU2357 + ARM GAS /tmp/ccdsDELB.s page 492 + + + 7256 0144 3D4B ldr r3, .L359+24 + 7257 0146 0122 movs r2, #1 + 7258 0148 1A70 strb r2, [r3] + 203:Src/main.c **** case DEFAULT_ENABLE://2 - Go to HALT + 7259 .loc 2 203 5 is_stmt 1 view .LVU2358 + 7260 014a B2E7 b .L306 + 7261 .L353: + 187:Src/main.c **** LL_SPI_Enable(SPI6);//Enable SPI for Laser2 DAC & TEC2 + 7262 .loc 2 187 7 view .LVU2359 + 7263 .LVL555: + 7264 .LBB561: + 7265 .LBI561: + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 7266 .loc 4 358 22 view .LVU2360 + 7267 .LBB562: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 7268 .loc 4 360 3 view .LVU2361 + 7269 014c 424A ldr r2, .L359+52 + 7270 014e 1368 ldr r3, [r2] + 7271 0150 43F04003 orr r3, r3, #64 + 7272 0154 1360 str r3, [r2] + 7273 .LVL556: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 7274 .loc 4 360 3 is_stmt 0 view .LVU2362 + 7275 .LBE562: + 7276 .LBE561: + 188:Src/main.c **** Decode_uart(COMMAND, &LD1_curr_setup, &LD2_curr_setup, &Curr_setup); + 7277 .loc 2 188 7 is_stmt 1 view .LVU2363 + 7278 .LBB563: + 7279 .LBI563: + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 7280 .loc 4 358 22 view .LVU2364 + 7281 .LBB564: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 7282 .loc 4 360 3 view .LVU2365 + 7283 0156 02F58E32 add r2, r2, #72704 + 7284 015a 1368 ldr r3, [r2] + 7285 015c 43F04003 orr r3, r3, #64 + 7286 0160 1360 str r3, [r2] + 7287 .LVL557: + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 7288 .loc 4 360 3 is_stmt 0 view .LVU2366 + 7289 .LBE564: + 7290 .LBE563: + 189:Src/main.c **** TO6_before = TO6; + 7291 .loc 2 189 7 is_stmt 1 view .LVU2367 + 7292 0162 3E4B ldr r3, .L359+56 + 7293 0164 3E4A ldr r2, .L359+60 + 7294 0166 3F49 ldr r1, .L359+64 + 7295 0168 2046 mov r0, r4 + 7296 016a FFF7FEFF bl Decode_uart + 7297 .LVL558: + 190:Src/main.c **** //LD1_param.LD_TEMP_Before = LD1_param.LD_TEMP; + 7298 .loc 2 190 7 view .LVU2368 + 190:Src/main.c **** //LD1_param.LD_TEMP_Before = LD1_param.LD_TEMP; + 7299 .loc 2 190 18 is_stmt 0 view .LVU2369 + 7300 016e 3E4B ldr r3, .L359+68 + ARM GAS /tmp/ccdsDELB.s page 493 + + + 7301 0170 1A68 ldr r2, [r3] + 7302 0172 3E4B ldr r3, .L359+72 + 7303 0174 1A60 str r2, [r3] + 193:Src/main.c **** CPU_state_old = WORK_ENABLE;//Save main current cycle + 7304 .loc 2 193 7 is_stmt 1 view .LVU2370 + 193:Src/main.c **** CPU_state_old = WORK_ENABLE;//Save main current cycle + 7305 .loc 2 193 17 is_stmt 0 view .LVU2371 + 7306 0176 0723 movs r3, #7 + 7307 0178 334A ldr r2, .L359+36 + 7308 017a 1370 strb r3, [r2] + 194:Src/main.c **** } + 7309 .loc 2 194 7 is_stmt 1 view .LVU2372 + 194:Src/main.c **** } + 7310 .loc 2 194 21 is_stmt 0 view .LVU2373 + 7311 017c 2D4A ldr r2, .L359+16 + 7312 017e 1370 strb r3, [r2] + 7313 0180 E0E7 b .L319 + 7314 .L315: + 206:Src/main.c **** Stop_TIM10(); + 7315 .loc 2 206 6 is_stmt 1 view .LVU2374 + 206:Src/main.c **** Stop_TIM10(); + 7316 .loc 2 206 31 is_stmt 0 view .LVU2375 + 7317 0182 2D4B ldr r3, .L359+20 + 7318 0184 5A68 ldr r2, [r3, #4] @ float + 206:Src/main.c **** Stop_TIM10(); + 7319 .loc 2 206 25 view .LVU2376 + 7320 0186 1A61 str r2, [r3, #16] @ float + 207:Src/main.c **** Init_params(); + 7321 .loc 2 207 6 is_stmt 1 view .LVU2377 + 7322 0188 FFF7FEFF bl Stop_TIM10 + 7323 .LVL559: + 208:Src/main.c **** LL_SPI_Disable(SPI2);//Disable SPI for Laser1 DAC & TEC1 + 7324 .loc 2 208 6 view .LVU2378 + 7325 018c FFF7FEFF bl Init_params + 7326 .LVL560: + 209:Src/main.c **** LL_SPI_Disable(SPI6);//Disable SPI for Laser2 DAC & TEC2 + 7327 .loc 2 209 6 view .LVU2379 + 7328 .LBB565: + 7329 .LBI565: + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 7330 .loc 4 370 22 view .LVU2380 + 7331 .LBB566: + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 7332 .loc 4 372 3 view .LVU2381 + 7333 0190 314A ldr r2, .L359+52 + 7334 0192 1368 ldr r3, [r2] + 7335 0194 23F04003 bic r3, r3, #64 + 7336 0198 1360 str r3, [r2] + 7337 .LVL561: + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 7338 .loc 4 372 3 is_stmt 0 view .LVU2382 + 7339 .LBE566: + 7340 .LBE565: + 210:Src/main.c **** CPU_state = HALT; + 7341 .loc 2 210 6 is_stmt 1 view .LVU2383 + 7342 .LBB567: + 7343 .LBI567: + ARM GAS /tmp/ccdsDELB.s page 494 + + + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 7344 .loc 4 370 22 view .LVU2384 + 7345 .LBB568: + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 7346 .loc 4 372 3 view .LVU2385 + 7347 019a 02F58E32 add r2, r2, #72704 + 7348 019e 1368 ldr r3, [r2] + 7349 01a0 23F04003 bic r3, r3, #64 + 7350 01a4 1360 str r3, [r2] + 7351 .LVL562: + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 7352 .loc 4 372 3 is_stmt 0 view .LVU2386 + 7353 .LBE568: + 7354 .LBE567: + 211:Src/main.c **** CPU_state_old = HALT;//Save main current cycle + 7355 .loc 2 211 6 is_stmt 1 view .LVU2387 + 211:Src/main.c **** CPU_state_old = HALT;//Save main current cycle + 7356 .loc 2 211 16 is_stmt 0 view .LVU2388 + 7357 01a6 0023 movs r3, #0 + 7358 01a8 274A ldr r2, .L359+36 + 7359 01aa 1370 strb r3, [r2] + 212:Src/main.c **** UART_transmission_request = MESS_01; + 7360 .loc 2 212 6 is_stmt 1 view .LVU2389 + 212:Src/main.c **** UART_transmission_request = MESS_01; + 7361 .loc 2 212 20 is_stmt 0 view .LVU2390 + 7362 01ac 214A ldr r2, .L359+16 + 7363 01ae 1370 strb r3, [r2] + 213:Src/main.c **** break; + 7364 .loc 2 213 6 is_stmt 1 view .LVU2391 + 213:Src/main.c **** break; + 7365 .loc 2 213 32 is_stmt 0 view .LVU2392 + 7366 01b0 224B ldr r3, .L359+24 + 7367 01b2 0122 movs r2, #1 + 7368 01b4 1A70 strb r2, [r3] + 214:Src/main.c **** case TRANS_S_ENABLE://3 - Transmith saved packet Before this operation must to be defaulting! + 7369 .loc 2 214 5 is_stmt 1 view .LVU2393 + 7370 01b6 7CE7 b .L306 + 7371 .L314: + 216:Src/main.c **** State_Data[0]|=temp16&0xff; + 7372 .loc 2 216 6 view .LVU2394 + 216:Src/main.c **** State_Data[0]|=temp16&0xff; + 7373 .loc 2 216 15 is_stmt 0 view .LVU2395 + 7374 01b8 2D48 ldr r0, .L359+76 + 7375 01ba FFF7FEFF bl SD_READ + 7376 .LVL563: + 216:Src/main.c **** State_Data[0]|=temp16&0xff; + 7377 .loc 2 216 13 view .LVU2396 + 7378 01be 80B2 uxth r0, r0 + 7379 01c0 2C4B ldr r3, .L359+80 + 7380 01c2 1880 strh r0, [r3] @ movhi + 217:Src/main.c **** if (temp16==0) + 7381 .loc 2 217 6 is_stmt 1 view .LVU2397 + 217:Src/main.c **** if (temp16==0) + 7382 .loc 2 217 19 is_stmt 0 view .LVU2398 + 7383 01c4 234A ldr r2, .L359+48 + 7384 01c6 1378 ldrb r3, [r2] @ zero_extendqisi2 + 7385 01c8 0343 orrs r3, r3, r0 + ARM GAS /tmp/ccdsDELB.s page 495 + + + 7386 01ca 1370 strb r3, [r2] + 218:Src/main.c **** { + 7387 .loc 2 218 6 is_stmt 1 view .LVU2399 + 218:Src/main.c **** { + 7388 .loc 2 218 9 is_stmt 0 view .LVU2400 + 7389 01cc 40B9 cbnz r0, .L320 + 220:Src/main.c **** } + 7390 .loc 2 220 7 is_stmt 1 view .LVU2401 + 220:Src/main.c **** } + 7391 .loc 2 220 33 is_stmt 0 view .LVU2402 + 7392 01ce 1B4B ldr r3, .L359+24 + 7393 01d0 0322 movs r2, #3 + 7394 01d2 1A70 strb r2, [r3] + 7395 .L321: + 226:Src/main.c **** CPU_state = CPU_state_old;//Return to main current cycle + 7396 .loc 2 226 6 is_stmt 1 view .LVU2403 + 226:Src/main.c **** CPU_state = CPU_state_old;//Return to main current cycle + 7397 .loc 2 226 20 is_stmt 0 view .LVU2404 + 7398 01d4 0023 movs r3, #0 + 7399 01d6 174A ldr r2, .L359+16 + 7400 01d8 1370 strb r3, [r2] + 227:Src/main.c **** break; + 7401 .loc 2 227 6 is_stmt 1 view .LVU2405 + 227:Src/main.c **** break; + 7402 .loc 2 227 16 is_stmt 0 view .LVU2406 + 7403 01da 1B4A ldr r2, .L359+36 + 7404 01dc 1370 strb r3, [r2] + 228:Src/main.c **** case TRANS_ENABLE://4 - Transmith current packet + 7405 .loc 2 228 5 is_stmt 1 view .LVU2407 + 7406 01de 68E7 b .L306 + 7407 .L320: + 224:Src/main.c **** } + 7408 .loc 2 224 7 view .LVU2408 + 224:Src/main.c **** } + 7409 .loc 2 224 33 is_stmt 0 view .LVU2409 + 7410 01e0 164B ldr r3, .L359+24 + 7411 01e2 0122 movs r2, #1 + 7412 01e4 1A70 strb r2, [r3] + 7413 01e6 F5E7 b .L321 + 7414 .L313: + 230:Src/main.c **** CPU_state = CPU_state_old;//Return to main current cycle + 7415 .loc 2 230 6 is_stmt 1 view .LVU2410 + 230:Src/main.c **** CPU_state = CPU_state_old;//Return to main current cycle + 7416 .loc 2 230 32 is_stmt 0 view .LVU2411 + 7417 01e8 144B ldr r3, .L359+24 + 7418 01ea 0222 movs r2, #2 + 7419 01ec 1A70 strb r2, [r3] + 231:Src/main.c **** break; + 7420 .loc 2 231 6 is_stmt 1 view .LVU2412 + 231:Src/main.c **** break; + 7421 .loc 2 231 16 is_stmt 0 view .LVU2413 + 7422 01ee 114B ldr r3, .L359+16 + 7423 01f0 1A78 ldrb r2, [r3] @ zero_extendqisi2 + 7424 01f2 154B ldr r3, .L359+36 + 7425 01f4 1A70 strb r2, [r3] + 232:Src/main.c **** case REMOVE_FILE://5 - Remove file from SD + 7426 .loc 2 232 5 is_stmt 1 view .LVU2414 + ARM GAS /tmp/ccdsDELB.s page 496 + + + 7427 01f6 5CE7 b .L306 + 7428 .L312: + 234:Src/main.c **** UART_transmission_request = MESS_01; + 7429 .loc 2 234 6 view .LVU2415 + 234:Src/main.c **** UART_transmission_request = MESS_01; + 7430 .loc 2 234 21 is_stmt 0 view .LVU2416 + 7431 01f8 FFF7FEFF bl SD_REMOVE + 7432 .LVL564: + 234:Src/main.c **** UART_transmission_request = MESS_01; + 7433 .loc 2 234 19 view .LVU2417 + 7434 01fc 154A ldr r2, .L359+48 + 7435 01fe 1378 ldrb r3, [r2] @ zero_extendqisi2 + 7436 0200 0343 orrs r3, r3, r0 + 7437 0202 1370 strb r3, [r2] + 235:Src/main.c **** CPU_state = CPU_state_old; + 7438 .loc 2 235 6 is_stmt 1 view .LVU2418 + 235:Src/main.c **** CPU_state = CPU_state_old; + 7439 .loc 2 235 32 is_stmt 0 view .LVU2419 + 7440 0204 0D4B ldr r3, .L359+24 + 7441 0206 0122 movs r2, #1 + 7442 0208 1A70 strb r2, [r3] + 236:Src/main.c **** break; + 7443 .loc 2 236 6 is_stmt 1 view .LVU2420 + 236:Src/main.c **** break; + 7444 .loc 2 236 16 is_stmt 0 view .LVU2421 + 7445 020a 0A4B ldr r3, .L359+16 + 7446 020c 1A78 ldrb r2, [r3] @ zero_extendqisi2 + 7447 020e 0E4B ldr r3, .L359+36 + 7448 0210 1A70 strb r2, [r3] + 237:Src/main.c **** case STATE://6 - Transmith state message + 7449 .loc 2 237 5 is_stmt 1 view .LVU2422 + 7450 0212 4EE7 b .L306 + 7451 .L311: + 239:Src/main.c **** CPU_state = CPU_state_old;//Return to main current cycle + 7452 .loc 2 239 6 view .LVU2423 + 239:Src/main.c **** CPU_state = CPU_state_old;//Return to main current cycle + 7453 .loc 2 239 32 is_stmt 0 view .LVU2424 + 7454 0214 094B ldr r3, .L359+24 + 7455 0216 0122 movs r2, #1 + 7456 0218 1A70 strb r2, [r3] + 240:Src/main.c **** break; + 7457 .loc 2 240 6 is_stmt 1 view .LVU2425 + 240:Src/main.c **** break; + 7458 .loc 2 240 16 is_stmt 0 view .LVU2426 + 7459 021a 064B ldr r3, .L359+16 + 7460 021c 1A78 ldrb r2, [r3] @ zero_extendqisi2 + 7461 021e 0A4B ldr r3, .L359+36 + 7462 0220 1A70 strb r2, [r3] + 241:Src/main.c **** case WORK_ENABLE://7 - Main work cycle + 7463 .loc 2 241 5 is_stmt 1 view .LVU2427 + 7464 0222 46E7 b .L306 + 7465 .L360: + 7466 .align 2 + 7467 .L359: + 7468 0224 00000000 .word .LANCHOR16 + 7469 0228 00100140 .word 1073811456 + 7470 022c 08100140 .word 1073811464 + ARM GAS /tmp/ccdsDELB.s page 497 + + + 7471 0230 00E100E0 .word -536813312 + 7472 0234 00000000 .word .LANCHOR35 + 7473 0238 00000000 .word .LANCHOR1 + 7474 023c 00000000 .word .LANCHOR37 + 7475 0240 00000000 .word .LANCHOR11 + 7476 0244 00000240 .word 1073872896 + 7477 0248 00000000 .word .LANCHOR27 + 7478 024c 00000000 .word .LANCHOR26 + 7479 0250 00000000 .word .LANCHOR34 + 7480 0254 00000000 .word .LANCHOR36 + 7481 0258 00380040 .word 1073756160 + 7482 025c 00000000 .word .LANCHOR20 + 7483 0260 00000000 .word .LANCHOR22 + 7484 0264 00000000 .word .LANCHOR21 + 7485 0268 00000000 .word .LANCHOR7 + 7486 026c 00000000 .word .LANCHOR9 + 7487 0270 00000000 .word .LANCHOR6 + 7488 0274 00000000 .word .LANCHOR38 + 7489 .L310: + 243:Src/main.c **** Stop_TIM10(); + 7490 .loc 2 243 6 view .LVU2428 + 243:Src/main.c **** Stop_TIM10(); + 7491 .loc 2 243 31 is_stmt 0 view .LVU2429 + 7492 0278 AC4B ldr r3, .L361 + 7493 027a 5A68 ldr r2, [r3, #4] @ float + 243:Src/main.c **** Stop_TIM10(); + 7494 .loc 2 243 25 view .LVU2430 + 7495 027c 1A61 str r2, [r3, #16] @ float + 244:Src/main.c **** if (TO7>TO7_before)//Main work cycle go with the timer 7 (1000 us or 1 kHz) + 7496 .loc 2 244 6 is_stmt 1 view .LVU2431 + 7497 027e FFF7FEFF bl Stop_TIM10 + 7498 .LVL565: + 245:Src/main.c **** { + 7499 .loc 2 245 6 view .LVU2432 + 245:Src/main.c **** { + 7500 .loc 2 245 13 is_stmt 0 view .LVU2433 + 7501 0282 AB4B ldr r3, .L361+4 + 7502 0284 1B68 ldr r3, [r3] + 7503 0286 AB4A ldr r2, .L361+8 + 7504 0288 1268 ldr r2, [r2] + 245:Src/main.c **** { + 7505 .loc 2 245 9 view .LVU2434 + 7506 028a 9342 cmp r3, r2 + 7507 028c 7FF611AF bls .L306 + 247:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 7508 .loc 2 247 7 is_stmt 1 view .LVU2435 + 247:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 7509 .loc 2 247 18 is_stmt 0 view .LVU2436 + 7510 0290 A84A ldr r2, .L361+8 + 7511 0292 1360 str r3, [r2] + 248:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 7512 .loc 2 248 7 is_stmt 1 view .LVU2437 + 248:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 7513 .loc 2 248 25 is_stmt 0 view .LVU2438 + 7514 0294 0120 movs r0, #1 + 7515 0296 FFF7FEFF bl MPhD_T + 7516 .LVL566: + ARM GAS /tmp/ccdsDELB.s page 498 + + + 248:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 7517 .loc 2 248 23 view .LVU2439 + 7518 029a A74F ldr r7, .L361+12 + 7519 029c 3881 strh r0, [r7, #8] @ movhi + 249:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 7520 .loc 2 249 7 is_stmt 1 view .LVU2440 + 249:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 7521 .loc 2 249 25 is_stmt 0 view .LVU2441 + 7522 029e 0120 movs r0, #1 + 7523 02a0 FFF7FEFF bl MPhD_T + 7524 .LVL567: + 249:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 7525 .loc 2 249 23 view .LVU2442 + 7526 02a4 3881 strh r0, [r7, #8] @ movhi + 250:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 7527 .loc 2 250 7 is_stmt 1 view .LVU2443 + 250:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 7528 .loc 2 250 25 is_stmt 0 view .LVU2444 + 7529 02a6 0220 movs r0, #2 + 7530 02a8 FFF7FEFF bl MPhD_T + 7531 .LVL568: + 250:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 7532 .loc 2 250 23 view .LVU2445 + 7533 02ac A34E ldr r6, .L361+16 + 7534 02ae 3081 strh r0, [r6, #8] @ movhi + 251:Src/main.c **** + 7535 .loc 2 251 7 is_stmt 1 view .LVU2446 + 251:Src/main.c **** + 7536 .loc 2 251 25 is_stmt 0 view .LVU2447 + 7537 02b0 0220 movs r0, #2 + 7538 02b2 FFF7FEFF bl MPhD_T + 7539 .LVL569: + 251:Src/main.c **** + 7540 .loc 2 251 23 view .LVU2448 + 7541 02b6 3081 strh r0, [r6, #8] @ movhi + 254:Src/main.c **** LD1_param.LD_CURR_TEMP = MPhD_T(3); + 7542 .loc 2 254 7 is_stmt 1 view .LVU2449 + 254:Src/main.c **** LD1_param.LD_CURR_TEMP = MPhD_T(3); + 7543 .loc 2 254 14 is_stmt 0 view .LVU2450 + 7544 02b8 0320 movs r0, #3 + 7545 02ba FFF7FEFF bl MPhD_T + 7546 .LVL570: + 255:Src/main.c **** (void) MPhD_T(4); + 7547 .loc 2 255 7 is_stmt 1 view .LVU2451 + 255:Src/main.c **** (void) MPhD_T(4); + 7548 .loc 2 255 32 is_stmt 0 view .LVU2452 + 7549 02be 0320 movs r0, #3 + 7550 02c0 FFF7FEFF bl MPhD_T + 7551 .LVL571: + 255:Src/main.c **** (void) MPhD_T(4); + 7552 .loc 2 255 30 view .LVU2453 + 7553 02c4 3880 strh r0, [r7] @ movhi + 256:Src/main.c **** LD2_param.LD_CURR_TEMP = MPhD_T(4); + 7554 .loc 2 256 7 is_stmt 1 view .LVU2454 + 256:Src/main.c **** LD2_param.LD_CURR_TEMP = MPhD_T(4); + 7555 .loc 2 256 14 is_stmt 0 view .LVU2455 + 7556 02c6 0420 movs r0, #4 + ARM GAS /tmp/ccdsDELB.s page 499 + + + 7557 02c8 FFF7FEFF bl MPhD_T + 7558 .LVL572: + 257:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 7559 .loc 2 257 7 is_stmt 1 view .LVU2456 + 257:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 7560 .loc 2 257 32 is_stmt 0 view .LVU2457 + 7561 02cc 0420 movs r0, #4 + 7562 02ce FFF7FEFF bl MPhD_T + 7563 .LVL573: + 257:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 7564 .loc 2 257 30 view .LVU2458 + 7565 02d2 3080 strh r0, [r6] @ movhi + 258:Src/main.c **** Set_LTEC(3, temp16);//Drive Laser TEC 1 + 7566 .loc 2 258 7 is_stmt 1 view .LVU2459 + 258:Src/main.c **** Set_LTEC(3, temp16);//Drive Laser TEC 1 + 7567 .loc 2 258 14 is_stmt 0 view .LVU2460 + 7568 02d4 DFF89882 ldr r8, .L361+68 + 7569 02d8 0122 movs r2, #1 + 7570 02da 3946 mov r1, r7 + 7571 02dc 4046 mov r0, r8 + 7572 02de FFF7FEFF bl PID_Controller_Temp + 7573 .LVL574: + 7574 02e2 0146 mov r1, r0 + 258:Src/main.c **** Set_LTEC(3, temp16);//Drive Laser TEC 1 + 7575 .loc 2 258 13 view .LVU2461 + 7576 02e4 964D ldr r5, .L361+20 + 7577 02e6 2880 strh r0, [r5] @ movhi + 259:Src/main.c **** temp16=PID_Controller_Temp(&LD2_curr_setup, &LD2_param, 2); + 7578 .loc 2 259 7 is_stmt 1 view .LVU2462 + 7579 02e8 0320 movs r0, #3 + 7580 02ea FFF7FEFF bl Set_LTEC + 7581 .LVL575: + 260:Src/main.c **** Set_LTEC(4, temp16);//Drive Laser TEC 2 + 7582 .loc 2 260 7 view .LVU2463 + 260:Src/main.c **** Set_LTEC(4, temp16);//Drive Laser TEC 2 + 7583 .loc 2 260 14 is_stmt 0 view .LVU2464 + 7584 02ee DFF87C92 ldr r9, .L361+64 + 7585 02f2 0222 movs r2, #2 + 7586 02f4 3146 mov r1, r6 + 7587 02f6 4846 mov r0, r9 + 7588 02f8 FFF7FEFF bl PID_Controller_Temp + 7589 .LVL576: + 7590 02fc 0146 mov r1, r0 + 260:Src/main.c **** Set_LTEC(4, temp16);//Drive Laser TEC 2 + 7591 .loc 2 260 13 view .LVU2465 + 7592 02fe 2880 strh r0, [r5] @ movhi + 261:Src/main.c **** + 7593 .loc 2 261 7 is_stmt 1 view .LVU2466 + 7594 0300 0420 movs r0, #4 + 7595 0302 FFF7FEFF bl Set_LTEC + 7596 .LVL577: + 263:Src/main.c **** Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + 7597 .loc 2 263 7 view .LVU2467 + 263:Src/main.c **** Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + 7598 .loc 2 263 31 is_stmt 0 view .LVU2468 + 7599 0306 3B89 ldrh r3, [r7, #8] + 263:Src/main.c **** Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + ARM GAS /tmp/ccdsDELB.s page 500 + + + 7600 .loc 2 263 20 view .LVU2469 + 7601 0308 8E4C ldr r4, .L361+24 + 7602 030a 6380 strh r3, [r4, #2] @ movhi + 264:Src/main.c **** + 7603 .loc 2 264 7 is_stmt 1 view .LVU2470 + 264:Src/main.c **** + 7604 .loc 2 264 31 is_stmt 0 view .LVU2471 + 7605 030c 3389 ldrh r3, [r6, #8] + 264:Src/main.c **** + 7606 .loc 2 264 20 view .LVU2472 + 7607 030e A380 strh r3, [r4, #4] @ movhi + 266:Src/main.c **** Set_LTEC(2,LD2_curr_setup.CURRENT);//Drive Laser diode 2 + 7608 .loc 2 266 7 is_stmt 1 view .LVU2473 + 7609 0310 B8F80C10 ldrh r1, [r8, #12] + 7610 0314 0120 movs r0, #1 + 7611 0316 FFF7FEFF bl Set_LTEC + 7612 .LVL578: + 267:Src/main.c **** + 7613 .loc 2 267 7 view .LVU2474 + 7614 031a B9F80C10 ldrh r1, [r9, #12] + 7615 031e 0220 movs r0, #2 + 7616 0320 FFF7FEFF bl Set_LTEC + 7617 .LVL579: + 271:Src/main.c **** temp16 = Get_ADC(1); + 7618 .loc 2 271 7 view .LVU2475 + 271:Src/main.c **** temp16 = Get_ADC(1); + 7619 .loc 2 271 16 is_stmt 0 view .LVU2476 + 7620 0324 0020 movs r0, #0 + 7621 0326 FFF7FEFF bl Get_ADC + 7622 .LVL580: + 271:Src/main.c **** temp16 = Get_ADC(1); + 7623 .loc 2 271 14 view .LVU2477 + 7624 032a 2880 strh r0, [r5] @ movhi + 272:Src/main.c **** Long_Data[7] = temp16; + 7625 .loc 2 272 7 is_stmt 1 view .LVU2478 + 272:Src/main.c **** Long_Data[7] = temp16; + 7626 .loc 2 272 16 is_stmt 0 view .LVU2479 + 7627 032c 0120 movs r0, #1 + 7628 032e FFF7FEFF bl Get_ADC + 7629 .LVL581: + 272:Src/main.c **** Long_Data[7] = temp16; + 7630 .loc 2 272 14 view .LVU2480 + 7631 0332 2880 strh r0, [r5] @ movhi + 273:Src/main.c **** + 7632 .loc 2 273 7 is_stmt 1 view .LVU2481 + 273:Src/main.c **** + 7633 .loc 2 273 20 is_stmt 0 view .LVU2482 + 7634 0334 E081 strh r0, [r4, #14] @ movhi + 276:Src/main.c **** Long_Data[8] = temp16; + 7635 .loc 2 276 7 is_stmt 1 view .LVU2483 + 276:Src/main.c **** Long_Data[8] = temp16; + 7636 .loc 2 276 16 is_stmt 0 view .LVU2484 + 7637 0336 0120 movs r0, #1 + 7638 0338 FFF7FEFF bl Get_ADC + 7639 .LVL582: + 276:Src/main.c **** Long_Data[8] = temp16; + 7640 .loc 2 276 14 view .LVU2485 + ARM GAS /tmp/ccdsDELB.s page 501 + + + 7641 033c 2880 strh r0, [r5] @ movhi + 277:Src/main.c **** + 7642 .loc 2 277 7 is_stmt 1 view .LVU2486 + 277:Src/main.c **** + 7643 .loc 2 277 20 is_stmt 0 view .LVU2487 + 7644 033e 2082 strh r0, [r4, #16] @ movhi + 280:Src/main.c **** Long_Data[9] = temp16; + 7645 .loc 2 280 7 is_stmt 1 view .LVU2488 + 280:Src/main.c **** Long_Data[9] = temp16; + 7646 .loc 2 280 16 is_stmt 0 view .LVU2489 + 7647 0340 0120 movs r0, #1 + 7648 0342 FFF7FEFF bl Get_ADC + 7649 .LVL583: + 280:Src/main.c **** Long_Data[9] = temp16; + 7650 .loc 2 280 14 view .LVU2490 + 7651 0346 2880 strh r0, [r5] @ movhi + 281:Src/main.c **** + 7652 .loc 2 281 7 is_stmt 1 view .LVU2491 + 281:Src/main.c **** + 7653 .loc 2 281 20 is_stmt 0 view .LVU2492 + 7654 0348 6082 strh r0, [r4, #18] @ movhi + 284:Src/main.c **** Long_Data[10] = temp16; + 7655 .loc 2 284 7 is_stmt 1 view .LVU2493 + 284:Src/main.c **** Long_Data[10] = temp16; + 7656 .loc 2 284 16 is_stmt 0 view .LVU2494 + 7657 034a 0120 movs r0, #1 + 7658 034c FFF7FEFF bl Get_ADC + 7659 .LVL584: + 284:Src/main.c **** Long_Data[10] = temp16; + 7660 .loc 2 284 14 view .LVU2495 + 7661 0350 2880 strh r0, [r5] @ movhi + 285:Src/main.c **** + 7662 .loc 2 285 7 is_stmt 1 view .LVU2496 + 285:Src/main.c **** + 7663 .loc 2 285 21 is_stmt 0 view .LVU2497 + 7664 0352 A082 strh r0, [r4, #20] @ movhi + 288:Src/main.c **** Long_Data[11] = temp16; + 7665 .loc 2 288 7 is_stmt 1 view .LVU2498 + 288:Src/main.c **** Long_Data[11] = temp16; + 7666 .loc 2 288 16 is_stmt 0 view .LVU2499 + 7667 0354 0120 movs r0, #1 + 7668 0356 FFF7FEFF bl Get_ADC + 7669 .LVL585: + 288:Src/main.c **** Long_Data[11] = temp16; + 7670 .loc 2 288 14 view .LVU2500 + 7671 035a 2880 strh r0, [r5] @ movhi + 289:Src/main.c **** temp16 = Get_ADC(2); + 7672 .loc 2 289 7 is_stmt 1 view .LVU2501 + 289:Src/main.c **** temp16 = Get_ADC(2); + 7673 .loc 2 289 21 is_stmt 0 view .LVU2502 + 7674 035c E082 strh r0, [r4, #22] @ movhi + 290:Src/main.c **** + 7675 .loc 2 290 7 is_stmt 1 view .LVU2503 + 290:Src/main.c **** + 7676 .loc 2 290 16 is_stmt 0 view .LVU2504 + 7677 035e 0220 movs r0, #2 + 7678 0360 FFF7FEFF bl Get_ADC + ARM GAS /tmp/ccdsDELB.s page 502 + + + 7679 .LVL586: + 290:Src/main.c **** + 7680 .loc 2 290 14 view .LVU2505 + 7681 0364 2880 strh r0, [r5] @ movhi + 293:Src/main.c **** temp16 = Get_ADC(4); + 7682 .loc 2 293 7 is_stmt 1 view .LVU2506 + 293:Src/main.c **** temp16 = Get_ADC(4); + 7683 .loc 2 293 16 is_stmt 0 view .LVU2507 + 7684 0366 0320 movs r0, #3 + 7685 0368 FFF7FEFF bl Get_ADC + 7686 .LVL587: + 293:Src/main.c **** temp16 = Get_ADC(4); + 7687 .loc 2 293 14 view .LVU2508 + 7688 036c 2880 strh r0, [r5] @ movhi + 294:Src/main.c **** Long_Data[12] = temp16; + 7689 .loc 2 294 7 is_stmt 1 view .LVU2509 + 294:Src/main.c **** Long_Data[12] = temp16; + 7690 .loc 2 294 16 is_stmt 0 view .LVU2510 + 7691 036e 0420 movs r0, #4 + 7692 0370 FFF7FEFF bl Get_ADC + 7693 .LVL588: + 294:Src/main.c **** Long_Data[12] = temp16; + 7694 .loc 2 294 14 view .LVU2511 + 7695 0374 2880 strh r0, [r5] @ movhi + 295:Src/main.c **** temp16 = Get_ADC(5); + 7696 .loc 2 295 7 is_stmt 1 view .LVU2512 + 295:Src/main.c **** temp16 = Get_ADC(5); + 7697 .loc 2 295 21 is_stmt 0 view .LVU2513 + 7698 0376 2083 strh r0, [r4, #24] @ movhi + 296:Src/main.c **** + 7699 .loc 2 296 7 is_stmt 1 view .LVU2514 + 296:Src/main.c **** + 7700 .loc 2 296 16 is_stmt 0 view .LVU2515 + 7701 0378 0520 movs r0, #5 + 7702 037a FFF7FEFF bl Get_ADC + 7703 .LVL589: + 296:Src/main.c **** + 7704 .loc 2 296 14 view .LVU2516 + 7705 037e 2880 strh r0, [r5] @ movhi + 299:Src/main.c **** Long_Data[3] = (TO6_stop)&0xffff; + 7706 .loc 2 299 7 is_stmt 1 view .LVU2517 + 299:Src/main.c **** Long_Data[3] = (TO6_stop)&0xffff; + 7707 .loc 2 299 16 is_stmt 0 view .LVU2518 + 7708 0380 714B ldr r3, .L361+28 + 7709 0382 1B68 ldr r3, [r3] + 7710 0384 714A ldr r2, .L361+32 + 7711 0386 1360 str r3, [r2] + 300:Src/main.c **** Long_Data[4] = (TO6_stop>>16)&0xffff; + 7712 .loc 2 300 7 is_stmt 1 view .LVU2519 + 300:Src/main.c **** Long_Data[4] = (TO6_stop>>16)&0xffff; + 7713 .loc 2 300 20 is_stmt 0 view .LVU2520 + 7714 0388 E380 strh r3, [r4, #6] @ movhi + 301:Src/main.c **** + 7715 .loc 2 301 7 is_stmt 1 view .LVU2521 + 301:Src/main.c **** + 7716 .loc 2 301 31 is_stmt 0 view .LVU2522 + 7717 038a 1B0C lsrs r3, r3, #16 + ARM GAS /tmp/ccdsDELB.s page 503 + + + 301:Src/main.c **** + 7718 .loc 2 301 20 view .LVU2523 + 7719 038c 2381 strh r3, [r4, #8] @ movhi + 304:Src/main.c **** + 7720 .loc 2 304 7 is_stmt 1 view .LVU2524 + 304:Src/main.c **** + 7721 .loc 2 304 31 is_stmt 0 view .LVU2525 + 7722 038e 3B88 ldrh r3, [r7] + 304:Src/main.c **** + 7723 .loc 2 304 20 view .LVU2526 + 7724 0390 6381 strh r3, [r4, #10] @ movhi + 307:Src/main.c **** + 7725 .loc 2 307 7 is_stmt 1 view .LVU2527 + 307:Src/main.c **** + 7726 .loc 2 307 31 is_stmt 0 view .LVU2528 + 7727 0392 3388 ldrh r3, [r6] + 307:Src/main.c **** + 7728 .loc 2 307 20 view .LVU2529 + 7729 0394 A381 strh r3, [r4, #12] @ movhi + 309:Src/main.c **** { + 7730 .loc 2 309 7 is_stmt 1 view .LVU2530 + 309:Src/main.c **** { + 7731 .loc 2 309 21 is_stmt 0 view .LVU2531 + 7732 0396 6E4B ldr r3, .L361+36 + 7733 0398 DB7A ldrb r3, [r3, #11] @ zero_extendqisi2 + 309:Src/main.c **** { + 7734 .loc 2 309 10 view .LVU2532 + 7735 039a 012B cmp r3, #1 + 7736 039c 03D0 beq .L354 + 7737 .L322: + 316:Src/main.c **** } + 7738 .loc 2 316 7 is_stmt 1 view .LVU2533 + 316:Src/main.c **** } + 7739 .loc 2 316 21 is_stmt 0 view .LVU2534 + 7740 039e 6D4B ldr r3, .L361+40 + 7741 03a0 0722 movs r2, #7 + 7742 03a2 1A70 strb r2, [r3] + 7743 03a4 85E6 b .L306 + 7744 .L354: + 311:Src/main.c **** Long_Data[DL_16-1] = CS_result; + 7745 .loc 2 311 8 is_stmt 1 view .LVU2535 + 311:Src/main.c **** Long_Data[DL_16-1] = CS_result; + 7746 .loc 2 311 20 is_stmt 0 view .LVU2536 + 7747 03a6 0D21 movs r1, #13 + 7748 03a8 A01C adds r0, r4, #2 + 7749 03aa FFF7FEFF bl CalculateChecksum + 7750 .LVL590: + 311:Src/main.c **** Long_Data[DL_16-1] = CS_result; + 7751 .loc 2 311 18 view .LVU2537 + 7752 03ae 6A4A ldr r2, .L361+44 + 7753 03b0 1080 strh r0, [r2] @ movhi + 312:Src/main.c **** temp16 = SD_SAVE(&Long_Data[0]); + 7754 .loc 2 312 8 is_stmt 1 view .LVU2538 + 312:Src/main.c **** temp16 = SD_SAVE(&Long_Data[0]); + 7755 .loc 2 312 27 is_stmt 0 view .LVU2539 + 7756 03b2 A083 strh r0, [r4, #28] @ movhi + 313:Src/main.c **** State_Data[0]|=temp16&0xff; + ARM GAS /tmp/ccdsDELB.s page 504 + + + 7757 .loc 2 313 8 is_stmt 1 view .LVU2540 + 313:Src/main.c **** State_Data[0]|=temp16&0xff; + 7758 .loc 2 313 17 is_stmt 0 view .LVU2541 + 7759 03b4 2046 mov r0, r4 + 7760 03b6 FFF7FEFF bl SD_SAVE + 7761 .LVL591: + 313:Src/main.c **** State_Data[0]|=temp16&0xff; + 7762 .loc 2 313 15 view .LVU2542 + 7763 03ba 83B2 uxth r3, r0 + 7764 03bc 2B80 strh r3, [r5] @ movhi + 314:Src/main.c **** } + 7765 .loc 2 314 8 is_stmt 1 view .LVU2543 + 314:Src/main.c **** } + 7766 .loc 2 314 21 is_stmt 0 view .LVU2544 + 7767 03be 6749 ldr r1, .L361+48 + 7768 03c0 0A78 ldrb r2, [r1] @ zero_extendqisi2 + 7769 03c2 1343 orrs r3, r3, r2 + 7770 03c4 0B70 strb r3, [r1] + 7771 03c6 EAE7 b .L322 + 7772 .L309: + 320:Src/main.c **** { + 7773 .loc 2 320 6 is_stmt 1 view .LVU2545 + 320:Src/main.c **** { + 7774 .loc 2 320 10 is_stmt 0 view .LVU2546 + 7775 03c8 6548 ldr r0, .L361+52 + 7776 03ca FFF7FEFF bl CheckChecksum + 7777 .LVL592: + 320:Src/main.c **** { + 7778 .loc 2 320 9 view .LVU2547 + 7779 03ce 70B9 cbnz r0, .L355 + 329:Src/main.c **** CPU_state = DEFAULT_ENABLE; + 7780 .loc 2 329 7 is_stmt 1 view .LVU2548 + 329:Src/main.c **** CPU_state = DEFAULT_ENABLE; + 7781 .loc 2 329 21 is_stmt 0 view .LVU2549 + 7782 03d0 624A ldr r2, .L361+48 + 7783 03d2 1378 ldrb r3, [r2] @ zero_extendqisi2 + 7784 03d4 43F00403 orr r3, r3, #4 + 7785 03d8 1370 strb r3, [r2] + 330:Src/main.c **** CPU_state_old = HALT;//Save main current cycle + 7786 .loc 2 330 7 is_stmt 1 view .LVU2550 + 330:Src/main.c **** CPU_state_old = HALT;//Save main current cycle + 7787 .loc 2 330 17 is_stmt 0 view .LVU2551 + 7788 03da 624B ldr r3, .L361+56 + 7789 03dc 0222 movs r2, #2 + 7790 03de 1A70 strb r2, [r3] + 331:Src/main.c **** } + 7791 .loc 2 331 7 is_stmt 1 view .LVU2552 + 331:Src/main.c **** } + 7792 .loc 2 331 21 is_stmt 0 view .LVU2553 + 7793 03e0 5C4B ldr r3, .L361+40 + 7794 03e2 0022 movs r2, #0 + 7795 03e4 1A70 strb r2, [r3] + 7796 .L324: + 333:Src/main.c **** break; + 7797 .loc 2 333 6 is_stmt 1 view .LVU2554 + 333:Src/main.c **** break; + 7798 .loc 2 333 32 is_stmt 0 view .LVU2555 + ARM GAS /tmp/ccdsDELB.s page 505 + + + 7799 03e6 604B ldr r3, .L361+60 + 7800 03e8 0122 movs r2, #1 + 7801 03ea 1A70 strb r2, [r3] + 334:Src/main.c **** case RUN_TASK: + 7802 .loc 2 334 5 is_stmt 1 view .LVU2556 + 7803 03ec 61E6 b .L306 + 7804 .L355: + 322:Src/main.c **** TO6_before = TO6; + 7805 .loc 2 322 7 view .LVU2557 + 7806 03ee 584B ldr r3, .L361+36 + 7807 03f0 5E4A ldr r2, .L361+64 + 7808 03f2 5F49 ldr r1, .L361+68 + 7809 03f4 5A48 ldr r0, .L361+52 + 7810 03f6 FFF7FEFF bl Decode_task + 7811 .LVL593: + 323:Src/main.c **** CPU_state = RUN_TASK; + 7812 .loc 2 323 7 view .LVU2558 + 323:Src/main.c **** CPU_state = RUN_TASK; + 7813 .loc 2 323 18 is_stmt 0 view .LVU2559 + 7814 03fa 534B ldr r3, .L361+28 + 7815 03fc 1A68 ldr r2, [r3] + 7816 03fe 5D4B ldr r3, .L361+72 + 7817 0400 1A60 str r2, [r3] + 324:Src/main.c **** CPU_state_old = RUN_TASK;//Save main current cycle + 7818 .loc 2 324 7 is_stmt 1 view .LVU2560 + 324:Src/main.c **** CPU_state_old = RUN_TASK;//Save main current cycle + 7819 .loc 2 324 17 is_stmt 0 view .LVU2561 + 7820 0402 0923 movs r3, #9 + 7821 0404 574A ldr r2, .L361+56 + 7822 0406 1370 strb r3, [r2] + 325:Src/main.c **** } + 7823 .loc 2 325 7 is_stmt 1 view .LVU2562 + 325:Src/main.c **** } + 7824 .loc 2 325 21 is_stmt 0 view .LVU2563 + 7825 0408 524A ldr r2, .L361+40 + 7826 040a 1370 strb r3, [r2] + 7827 040c EBE7 b .L324 + 7828 .L307: + 336:Src/main.c **** { + 7829 .loc 2 336 6 is_stmt 1 view .LVU2564 + 336:Src/main.c **** { + 7830 .loc 2 336 18 is_stmt 0 view .LVU2565 + 7831 040e 474B ldr r3, .L361 + 7832 0410 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 7833 0412 012B cmp r3, #1 + 7834 0414 24D0 beq .L325 + 7835 0416 022B cmp r3, #2 + 7836 0418 00F0DF80 beq .L326 + 7837 .L327: + 424:Src/main.c **** { + 7838 .loc 2 424 6 is_stmt 1 view .LVU2566 + 424:Src/main.c **** { + 7839 .loc 2 424 13 is_stmt 0 view .LVU2567 + 7840 041c 444B ldr r3, .L361+4 + 7841 041e 1B68 ldr r3, [r3] + 7842 0420 444A ldr r2, .L361+8 + 7843 0422 1268 ldr r2, [r2] + ARM GAS /tmp/ccdsDELB.s page 506 + + + 424:Src/main.c **** { + 7844 .loc 2 424 9 view .LVU2568 + 7845 0424 9342 cmp r3, r2 + 7846 0426 00F26081 bhi .L356 + 7847 .L339: + 476:Src/main.c **** + 7848 .loc 2 476 27 is_stmt 1 discriminator 1 view .LVU2569 + 476:Src/main.c **** + 7849 .loc 2 476 12 discriminator 1 view .LVU2570 + 476:Src/main.c **** + 7850 .loc 2 476 13 is_stmt 0 discriminator 1 view .LVU2571 + 7851 042a 534B ldr r3, .L361+76 + 7852 042c 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 476:Src/main.c **** + 7853 .loc 2 476 12 discriminator 1 view .LVU2572 + 7854 042e 002B cmp r3, #0 + 7855 0430 FBD0 beq .L339 + 478:Src/main.c **** + 7856 .loc 2 478 6 is_stmt 1 view .LVU2573 + 7857 0432 FFF7FEFF bl Stop_TIM10 + 7858 .LVL594: + 480:Src/main.c **** { + 7859 .loc 2 480 6 view .LVU2574 + 480:Src/main.c **** { + 7860 .loc 2 480 14 is_stmt 0 view .LVU2575 + 7861 0436 3D4B ldr r3, .L361 + 7862 0438 DB8A ldrh r3, [r3, #22] + 480:Src/main.c **** { + 7863 .loc 2 480 9 view .LVU2576 + 7864 043a 032B cmp r3, #3 + 7865 043c 0CD9 bls .L340 + 482:Src/main.c **** TO10_counter = task.dt / 10 - 1; + 7866 .loc 2 482 7 is_stmt 1 view .LVU2577 + 482:Src/main.c **** TO10_counter = task.dt / 10 - 1; + 7867 .loc 2 482 26 is_stmt 0 view .LVU2578 + 7868 043e 4F4B ldr r3, .L361+80 + 7869 0440 1A68 ldr r2, [r3] + 7870 0442 4F4B ldr r3, .L361+84 + 7871 0444 DA60 str r2, [r3, #12] + 483:Src/main.c **** } + 7872 .loc 2 483 7 is_stmt 1 view .LVU2579 + 483:Src/main.c **** } + 7873 .loc 2 483 26 is_stmt 0 view .LVU2580 + 7874 0446 394B ldr r3, .L361 + 7875 0448 1B7D ldrb r3, [r3, #20] @ zero_extendqisi2 + 483:Src/main.c **** } + 7876 .loc 2 483 30 view .LVU2581 + 7877 044a 4E4A ldr r2, .L361+88 + 7878 044c A2FB0323 umull r2, r3, r2, r3 + 7879 0450 DB08 lsrs r3, r3, #3 + 483:Src/main.c **** } + 7880 .loc 2 483 35 view .LVU2582 + 7881 0452 013B subs r3, r3, #1 + 483:Src/main.c **** } + 7882 .loc 2 483 20 view .LVU2583 + 7883 0454 4C4A ldr r2, .L361+92 + 7884 0456 1360 str r3, [r2] + ARM GAS /tmp/ccdsDELB.s page 507 + + + 7885 .L340: + 486:Src/main.c **** break; + 7886 .loc 2 486 6 is_stmt 1 view .LVU2584 + 486:Src/main.c **** break; + 7887 .loc 2 486 20 is_stmt 0 view .LVU2585 + 7888 0458 3E4B ldr r3, .L361+40 + 7889 045a 0922 movs r2, #9 + 7890 045c 1A70 strb r2, [r3] + 487:Src/main.c **** } + 7891 .loc 2 487 9 is_stmt 1 view .LVU2586 + 7892 045e 28E6 b .L306 + 7893 .L325: + 339:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_1); + 7894 .loc 2 339 7 view .LVU2587 + 339:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_1); + 7895 .loc 2 339 38 is_stmt 0 view .LVU2588 + 7896 0460 324B ldr r3, .L361 + 7897 0462 D3ED077A vldr.32 s15, [r3, #28] + 339:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_1); + 7898 .loc 2 339 7 view .LVU2589 + 7899 0466 FCEEE77A vcvt.u32.f32 s15, s15 + 7900 046a 17EE903A vmov r3, s15 @ int + 7901 046e 99B2 uxth r1, r3 + 7902 0470 0220 movs r0, #2 + 7903 0472 FFF7FEFF bl Set_LTEC + 7904 .LVL595: + 340:Src/main.c **** LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1); + 7905 .loc 2 340 7 is_stmt 1 view .LVU2590 + 340:Src/main.c **** LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1); + 7906 .loc 2 340 14 is_stmt 0 view .LVU2591 + 7907 0476 0320 movs r0, #3 + 7908 0478 FFF7FEFF bl MPhD_T + 7909 .LVL596: + 341:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_2); + 7910 .loc 2 341 7 is_stmt 1 view .LVU2592 + 341:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_2); + 7911 .loc 2 341 32 is_stmt 0 view .LVU2593 + 7912 047c 0320 movs r0, #3 + 7913 047e FFF7FEFF bl MPhD_T + 7914 .LVL597: + 341:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_2); + 7915 .loc 2 341 30 view .LVU2594 + 7916 0482 2D4C ldr r4, .L361+12 + 7917 0484 2080 strh r0, [r4] @ movhi + 342:Src/main.c **** LD2_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_2); + 7918 .loc 2 342 7 is_stmt 1 view .LVU2595 + 342:Src/main.c **** LD2_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_2); + 7919 .loc 2 342 14 is_stmt 0 view .LVU2596 + 7920 0486 0420 movs r0, #4 + 7921 0488 FFF7FEFF bl MPhD_T + 7922 .LVL598: + 343:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 7923 .loc 2 343 7 is_stmt 1 view .LVU2597 + 343:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 7924 .loc 2 343 32 is_stmt 0 view .LVU2598 + 7925 048c 0420 movs r0, #4 + 7926 048e FFF7FEFF bl MPhD_T + ARM GAS /tmp/ccdsDELB.s page 508 + + + 7927 .LVL599: + 343:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 7928 .loc 2 343 30 view .LVU2599 + 7929 0492 2A4D ldr r5, .L361+16 + 7930 0494 2880 strh r0, [r5] @ movhi + 344:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_1, temp16);//Drive Laser TEC 1 + 7931 .loc 2 344 7 is_stmt 1 view .LVU2600 + 344:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_1, temp16);//Drive Laser TEC 1 + 7932 .loc 2 344 14 is_stmt 0 view .LVU2601 + 7933 0496 0122 movs r2, #1 + 7934 0498 2146 mov r1, r4 + 7935 049a 3548 ldr r0, .L361+68 + 7936 049c FFF7FEFF bl PID_Controller_Temp + 7937 .LVL600: + 7938 04a0 0146 mov r1, r0 + 344:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_1, temp16);//Drive Laser TEC 1 + 7939 .loc 2 344 13 view .LVU2602 + 7940 04a2 274C ldr r4, .L361+20 + 7941 04a4 2080 strh r0, [r4] @ movhi + 345:Src/main.c **** temp16=PID_Controller_Temp(&LD2_curr_setup, &LD2_param, 2); + 7942 .loc 2 345 7 is_stmt 1 view .LVU2603 + 7943 04a6 0320 movs r0, #3 + 7944 04a8 FFF7FEFF bl Set_LTEC + 7945 .LVL601: + 346:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_2, temp16);//Drive Laser TEC 2 + 7946 .loc 2 346 7 view .LVU2604 + 346:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_2, temp16);//Drive Laser TEC 2 + 7947 .loc 2 346 14 is_stmt 0 view .LVU2605 + 7948 04ac 0222 movs r2, #2 + 7949 04ae 2946 mov r1, r5 + 7950 04b0 2E48 ldr r0, .L361+64 + 7951 04b2 FFF7FEFF bl PID_Controller_Temp + 7952 .LVL602: + 7953 04b6 0146 mov r1, r0 + 346:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_2, temp16);//Drive Laser TEC 2 + 7954 .loc 2 346 13 view .LVU2606 + 7955 04b8 2080 strh r0, [r4] @ movhi + 347:Src/main.c **** + 7956 .loc 2 347 7 is_stmt 1 view .LVU2607 + 7957 04ba 0420 movs r0, #4 + 7958 04bc FFF7FEFF bl Set_LTEC + 7959 .LVL603: + 350:Src/main.c **** HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_RESET); + 7960 .loc 2 350 7 view .LVU2608 + 7961 04c0 324C ldr r4, .L361+96 + 7962 04c2 0122 movs r2, #1 + 7963 04c4 8021 movs r1, #128 + 7964 04c6 2046 mov r0, r4 + 7965 04c8 FFF7FEFF bl HAL_GPIO_WritePin + 7966 .LVL604: + 351:Src/main.c **** + 7967 .loc 2 351 7 view .LVU2609 + 7968 04cc 0022 movs r2, #0 + 7969 04ce 8021 movs r1, #128 + 7970 04d0 2046 mov r0, r4 + 7971 04d2 FFF7FEFF bl HAL_GPIO_WritePin + 7972 .LVL605: + ARM GAS /tmp/ccdsDELB.s page 509 + + + 353:Src/main.c **** if (st != HAL_OK) + 7973 .loc 2 353 7 view .LVU2610 + 353:Src/main.c **** if (st != HAL_OK) + 7974 .loc 2 353 12 is_stmt 0 view .LVU2611 + 7975 04d6 2A48 ldr r0, .L361+84 + 7976 04d8 FFF7FEFF bl HAL_TIM_Base_Start_IT + 7977 .LVL606: + 354:Src/main.c **** while(1); + 7978 .loc 2 354 7 is_stmt 1 view .LVU2612 + 354:Src/main.c **** while(1); + 7979 .loc 2 354 10 is_stmt 0 view .LVU2613 + 7980 04dc 20BB cbnz r0, .L329 + 7981 .LVL607: + 7982 .L330: + 356:Src/main.c **** { + 7983 .loc 2 356 13 is_stmt 1 view .LVU2614 + 356:Src/main.c **** { + 7984 .loc 2 356 18 is_stmt 0 view .LVU2615 + 7985 04de 134B ldr r3, .L361 + 7986 04e0 D3ED047A vldr.32 s15, [r3, #16] + 356:Src/main.c **** { + 7987 .loc 2 356 39 view .LVU2616 + 7988 04e4 93ED027A vldr.32 s14, [r3, #8] + 356:Src/main.c **** { + 7989 .loc 2 356 13 view .LVU2617 + 7990 04e8 F4EEC77A vcmpe.f32 s15, s14 + 7991 04ec F1EE10FA vmrs APSR_nzcv, FPSCR + 7992 04f0 50D5 bpl .L357 + 358:Src/main.c **** { + 7993 .loc 2 358 8 is_stmt 1 view .LVU2618 + 358:Src/main.c **** { + 7994 .loc 2 358 12 is_stmt 0 view .LVU2619 + 7995 04f2 214B ldr r3, .L361+76 + 7996 04f4 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 358:Src/main.c **** { + 7997 .loc 2 358 11 view .LVU2620 + 7998 04f6 002B cmp r3, #0 + 7999 04f8 F1D0 beq .L330 + 360:Src/main.c **** task.current_param += task.delta_param; + 8000 .loc 2 360 9 is_stmt 1 view .LVU2621 + 8001 04fa FCEEE77A vcvt.u32.f32 s15, s15 + 8002 04fe 17EE903A vmov r3, s15 @ int + 8003 0502 99B2 uxth r1, r3 + 8004 0504 0120 movs r0, #1 + 8005 0506 FFF7FEFF bl Set_LTEC + 8006 .LVL608: + 361:Src/main.c **** TO10 = 0; + 8007 .loc 2 361 9 view .LVU2622 + 361:Src/main.c **** TO10 = 0; + 8008 .loc 2 361 35 is_stmt 0 view .LVU2623 + 8009 050a 084B ldr r3, .L361 + 8010 050c 93ED037A vldr.32 s14, [r3, #12] + 361:Src/main.c **** TO10 = 0; + 8011 .loc 2 361 28 view .LVU2624 + 8012 0510 D3ED047A vldr.32 s15, [r3, #16] + 8013 0514 77EE877A vadd.f32 s15, s15, s14 + 8014 0518 C3ED047A vstr.32 s15, [r3, #16] + ARM GAS /tmp/ccdsDELB.s page 510 + + + 362:Src/main.c **** TIM10_coflag = 0; + 8015 .loc 2 362 9 is_stmt 1 view .LVU2625 + 362:Src/main.c **** TIM10_coflag = 0; + 8016 .loc 2 362 14 is_stmt 0 view .LVU2626 + 8017 051c 0023 movs r3, #0 + 8018 051e 1C4A ldr r2, .L361+100 + 8019 0520 1360 str r3, [r2] + 363:Src/main.c **** } + 8020 .loc 2 363 9 is_stmt 1 view .LVU2627 + 363:Src/main.c **** } + 8021 .loc 2 363 22 is_stmt 0 view .LVU2628 + 8022 0522 154A ldr r2, .L361+76 + 8023 0524 1370 strb r3, [r2] + 8024 0526 DAE7 b .L330 + 8025 .LVL609: + 8026 .L329: + 355:Src/main.c **** while (task.current_param < task.max_param) + 8027 .loc 2 355 8 is_stmt 1 discriminator 1 view .LVU2629 + 355:Src/main.c **** while (task.current_param < task.max_param) + 8028 .loc 2 355 16 discriminator 1 view .LVU2630 + 355:Src/main.c **** while (task.current_param < task.max_param) + 8029 .loc 2 355 13 discriminator 1 view .LVU2631 + 8030 0528 FEE7 b .L329 + 8031 .L362: + 8032 052a 00BF .align 2 + 8033 .L361: + 8034 052c 00000000 .word .LANCHOR1 + 8035 0530 00000000 .word .LANCHOR3 + 8036 0534 00000000 .word .LANCHOR8 + 8037 0538 00000000 .word .LANCHOR39 + 8038 053c 00000000 .word .LANCHOR40 + 8039 0540 00000000 .word .LANCHOR38 + 8040 0544 00000000 .word .LANCHOR6 + 8041 0548 00000000 .word .LANCHOR7 + 8042 054c 00000000 .word .LANCHOR41 + 8043 0550 00000000 .word .LANCHOR20 + 8044 0554 00000000 .word .LANCHOR35 + 8045 0558 00000000 .word .LANCHOR34 + 8046 055c 00000000 .word .LANCHOR36 + 8047 0560 00000000 .word .LANCHOR26 + 8048 0564 00000000 .word .LANCHOR27 + 8049 0568 00000000 .word .LANCHOR37 + 8050 056c 00000000 .word .LANCHOR22 + 8051 0570 00000000 .word .LANCHOR21 + 8052 0574 00000000 .word .LANCHOR9 + 8053 0578 00000000 .word .LANCHOR31 + 8054 057c 00000000 .word .LANCHOR42 + 8055 0580 00000000 .word .LANCHOR30 + 8056 0584 CDCCCCCC .word -858993459 + 8057 0588 00000000 .word .LANCHOR2 + 8058 058c 000C0240 .word 1073875968 + 8059 0590 00000000 .word .LANCHOR32 + 8060 .LVL610: + 8061 .L357: + 366:Src/main.c **** task.current_param = task.min_param; + 8062 .loc 2 366 7 view .LVU2632 + 8063 0594 FFF7FEFF bl Stop_TIM10 + ARM GAS /tmp/ccdsDELB.s page 511 + + + 8064 .LVL611: + 367:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_1, task.current_param); + 8065 .loc 2 367 7 view .LVU2633 + 367:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_1, task.current_param); + 8066 .loc 2 367 32 is_stmt 0 view .LVU2634 + 8067 0598 A94C ldr r4, .L363 + 8068 059a D4ED017A vldr.32 s15, [r4, #4] + 367:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_1, task.current_param); + 8069 .loc 2 367 26 view .LVU2635 + 8070 059e C4ED047A vstr.32 s15, [r4, #16] + 368:Src/main.c **** if (task.tau > 3) + 8071 .loc 2 368 7 is_stmt 1 view .LVU2636 + 8072 05a2 FCEEE77A vcvt.u32.f32 s15, s15 + 8073 05a6 17EE903A vmov r3, s15 @ int + 8074 05aa 99B2 uxth r1, r3 + 8075 05ac 0120 movs r0, #1 + 8076 05ae FFF7FEFF bl Set_LTEC + 8077 .LVL612: + 369:Src/main.c **** { + 8078 .loc 2 369 7 view .LVU2637 + 369:Src/main.c **** { + 8079 .loc 2 369 15 is_stmt 0 view .LVU2638 + 8080 05b2 E38A ldrh r3, [r4, #22] + 369:Src/main.c **** { + 8081 .loc 2 369 10 view .LVU2639 + 8082 05b4 032B cmp r3, #3 + 8083 05b6 0CD9 bls .L332 + 371:Src/main.c **** htim10.Init.Period = 9999; + 8084 .loc 2 371 8 is_stmt 1 view .LVU2640 + 371:Src/main.c **** htim10.Init.Period = 9999; + 8085 .loc 2 371 34 is_stmt 0 view .LVU2641 + 8086 05b8 A24A ldr r2, .L363+4 + 8087 05ba D068 ldr r0, [r2, #12] + 371:Src/main.c **** htim10.Init.Period = 9999; + 8088 .loc 2 371 21 view .LVU2642 + 8089 05bc A249 ldr r1, .L363+8 + 8090 05be 0860 str r0, [r1] + 372:Src/main.c **** TO10_counter = (task.tau - 1) * 100; + 8091 .loc 2 372 8 is_stmt 1 view .LVU2643 + 372:Src/main.c **** TO10_counter = (task.tau - 1) * 100; + 8092 .loc 2 372 27 is_stmt 0 view .LVU2644 + 8093 05c0 42F20F71 movw r1, #9999 + 8094 05c4 D160 str r1, [r2, #12] + 373:Src/main.c **** } + 8095 .loc 2 373 8 is_stmt 1 view .LVU2645 + 373:Src/main.c **** } + 8096 .loc 2 373 33 is_stmt 0 view .LVU2646 + 8097 05c6 013B subs r3, r3, #1 + 373:Src/main.c **** } + 8098 .loc 2 373 38 view .LVU2647 + 8099 05c8 6422 movs r2, #100 + 8100 05ca 02FB03F3 mul r3, r2, r3 + 373:Src/main.c **** } + 8101 .loc 2 373 21 view .LVU2648 + 8102 05ce 9F4A ldr r2, .L363+12 + 8103 05d0 1360 str r3, [r2] + 8104 .L332: + ARM GAS /tmp/ccdsDELB.s page 512 + + + 375:Src/main.c **** break; + 8105 .loc 2 375 7 is_stmt 1 view .LVU2649 + 8106 05d2 9C48 ldr r0, .L363+4 + 8107 05d4 FFF7FEFF bl HAL_TIM_Base_Start_IT + 8108 .LVL613: + 376:Src/main.c **** case TT_CHANGE_CURR_2: + 8109 .loc 2 376 6 view .LVU2650 + 8110 05d8 20E7 b .L327 + 8111 .L326: + 378:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_1); + 8112 .loc 2 378 7 view .LVU2651 + 378:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_1); + 8113 .loc 2 378 38 is_stmt 0 view .LVU2652 + 8114 05da 994B ldr r3, .L363 + 8115 05dc D3ED077A vldr.32 s15, [r3, #28] + 378:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_1); + 8116 .loc 2 378 7 view .LVU2653 + 8117 05e0 FCEEE77A vcvt.u32.f32 s15, s15 + 8118 05e4 17EE903A vmov r3, s15 @ int + 8119 05e8 99B2 uxth r1, r3 + 8120 05ea 0120 movs r0, #1 + 8121 05ec FFF7FEFF bl Set_LTEC + 8122 .LVL614: + 379:Src/main.c **** LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1); + 8123 .loc 2 379 7 is_stmt 1 view .LVU2654 + 379:Src/main.c **** LD1_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_1); + 8124 .loc 2 379 14 is_stmt 0 view .LVU2655 + 8125 05f0 0320 movs r0, #3 + 8126 05f2 FFF7FEFF bl MPhD_T + 8127 .LVL615: + 380:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_2); + 8128 .loc 2 380 7 is_stmt 1 view .LVU2656 + 380:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_2); + 8129 .loc 2 380 32 is_stmt 0 view .LVU2657 + 8130 05f6 0320 movs r0, #3 + 8131 05f8 FFF7FEFF bl MPhD_T + 8132 .LVL616: + 380:Src/main.c **** (void) MPhD_T(TT_CHANGE_TEMP_2); + 8133 .loc 2 380 30 view .LVU2658 + 8134 05fc 944C ldr r4, .L363+16 + 8135 05fe 2080 strh r0, [r4] @ movhi + 381:Src/main.c **** LD2_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_2); + 8136 .loc 2 381 7 is_stmt 1 view .LVU2659 + 381:Src/main.c **** LD2_param.LD_CURR_TEMP = MPhD_T(TT_CHANGE_TEMP_2); + 8137 .loc 2 381 14 is_stmt 0 view .LVU2660 + 8138 0600 0420 movs r0, #4 + 8139 0602 FFF7FEFF bl MPhD_T + 8140 .LVL617: + 382:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 8141 .loc 2 382 7 is_stmt 1 view .LVU2661 + 382:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 8142 .loc 2 382 32 is_stmt 0 view .LVU2662 + 8143 0606 0420 movs r0, #4 + 8144 0608 FFF7FEFF bl MPhD_T + 8145 .LVL618: + 382:Src/main.c **** temp16=PID_Controller_Temp(&LD1_curr_setup, &LD1_param, 1); + 8146 .loc 2 382 30 view .LVU2663 + ARM GAS /tmp/ccdsDELB.s page 513 + + + 8147 060c 914D ldr r5, .L363+20 + 8148 060e 2880 strh r0, [r5] @ movhi + 383:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_1, temp16);//Drive Laser TEC 1 + 8149 .loc 2 383 7 is_stmt 1 view .LVU2664 + 383:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_1, temp16);//Drive Laser TEC 1 + 8150 .loc 2 383 14 is_stmt 0 view .LVU2665 + 8151 0610 0122 movs r2, #1 + 8152 0612 2146 mov r1, r4 + 8153 0614 9048 ldr r0, .L363+24 + 8154 0616 FFF7FEFF bl PID_Controller_Temp + 8155 .LVL619: + 8156 061a 0146 mov r1, r0 + 383:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_1, temp16);//Drive Laser TEC 1 + 8157 .loc 2 383 13 view .LVU2666 + 8158 061c 8F4C ldr r4, .L363+28 + 8159 061e 2080 strh r0, [r4] @ movhi + 384:Src/main.c **** temp16=PID_Controller_Temp(&LD2_curr_setup, &LD2_param, 2); + 8160 .loc 2 384 7 is_stmt 1 view .LVU2667 + 8161 0620 0320 movs r0, #3 + 8162 0622 FFF7FEFF bl Set_LTEC + 8163 .LVL620: + 385:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_2, temp16);//Drive Laser TEC 2 + 8164 .loc 2 385 7 view .LVU2668 + 385:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_2, temp16);//Drive Laser TEC 2 + 8165 .loc 2 385 14 is_stmt 0 view .LVU2669 + 8166 0626 0222 movs r2, #2 + 8167 0628 2946 mov r1, r5 + 8168 062a 8D48 ldr r0, .L363+32 + 8169 062c FFF7FEFF bl PID_Controller_Temp + 8170 .LVL621: + 8171 0630 0146 mov r1, r0 + 385:Src/main.c **** Set_LTEC(TT_CHANGE_TEMP_2, temp16);//Drive Laser TEC 2 + 8172 .loc 2 385 13 view .LVU2670 + 8173 0632 2080 strh r0, [r4] @ movhi + 386:Src/main.c **** + 8174 .loc 2 386 7 is_stmt 1 view .LVU2671 + 8175 0634 0420 movs r0, #4 + 8176 0636 FFF7FEFF bl Set_LTEC + 8177 .LVL622: + 389:Src/main.c **** HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_RESET); + 8178 .loc 2 389 7 view .LVU2672 + 8179 063a 8A4C ldr r4, .L363+36 + 8180 063c 0122 movs r2, #1 + 8181 063e 8021 movs r1, #128 + 8182 0640 2046 mov r0, r4 + 8183 0642 FFF7FEFF bl HAL_GPIO_WritePin + 8184 .LVL623: + 390:Src/main.c **** + 8185 .loc 2 390 7 view .LVU2673 + 8186 0646 0022 movs r2, #0 + 8187 0648 8021 movs r1, #128 + 8188 064a 2046 mov r0, r4 + 8189 064c FFF7FEFF bl HAL_GPIO_WritePin + 8190 .LVL624: + 392:Src/main.c **** if (st != HAL_OK) + 8191 .loc 2 392 7 view .LVU2674 + 392:Src/main.c **** if (st != HAL_OK) + ARM GAS /tmp/ccdsDELB.s page 514 + + + 8192 .loc 2 392 12 is_stmt 0 view .LVU2675 + 8193 0650 7C48 ldr r0, .L363+4 + 8194 0652 FFF7FEFF bl HAL_TIM_Base_Start_IT + 8195 .LVL625: + 393:Src/main.c **** while(1); + 8196 .loc 2 393 7 is_stmt 1 view .LVU2676 + 393:Src/main.c **** while(1); + 8197 .loc 2 393 10 is_stmt 0 view .LVU2677 + 8198 0656 20BB cbnz r0, .L334 + 8199 .LVL626: + 8200 .L335: + 395:Src/main.c **** { + 8201 .loc 2 395 13 is_stmt 1 view .LVU2678 + 395:Src/main.c **** { + 8202 .loc 2 395 18 is_stmt 0 view .LVU2679 + 8203 0658 794B ldr r3, .L363 + 8204 065a D3ED047A vldr.32 s15, [r3, #16] + 395:Src/main.c **** { + 8205 .loc 2 395 39 view .LVU2680 + 8206 065e 93ED027A vldr.32 s14, [r3, #8] + 395:Src/main.c **** { + 8207 .loc 2 395 13 view .LVU2681 + 8208 0662 F4EEC77A vcmpe.f32 s15, s14 + 8209 0666 F1EE10FA vmrs APSR_nzcv, FPSCR + 8210 066a 1BD5 bpl .L358 + 397:Src/main.c **** { + 8211 .loc 2 397 8 is_stmt 1 view .LVU2682 + 397:Src/main.c **** { + 8212 .loc 2 397 12 is_stmt 0 view .LVU2683 + 8213 066c 7E4B ldr r3, .L363+40 + 8214 066e 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 397:Src/main.c **** { + 8215 .loc 2 397 11 view .LVU2684 + 8216 0670 002B cmp r3, #0 + 8217 0672 F1D0 beq .L335 + 399:Src/main.c **** task.current_param += task.delta_param; + 8218 .loc 2 399 9 is_stmt 1 view .LVU2685 + 8219 0674 FCEEE77A vcvt.u32.f32 s15, s15 + 8220 0678 17EE903A vmov r3, s15 @ int + 8221 067c 99B2 uxth r1, r3 + 8222 067e 0220 movs r0, #2 + 8223 0680 FFF7FEFF bl Set_LTEC + 8224 .LVL627: + 400:Src/main.c **** TO10 = 0; + 8225 .loc 2 400 9 view .LVU2686 + 400:Src/main.c **** TO10 = 0; + 8226 .loc 2 400 35 is_stmt 0 view .LVU2687 + 8227 0684 6E4B ldr r3, .L363 + 8228 0686 93ED037A vldr.32 s14, [r3, #12] + 400:Src/main.c **** TO10 = 0; + 8229 .loc 2 400 28 view .LVU2688 + 8230 068a D3ED047A vldr.32 s15, [r3, #16] + 8231 068e 77EE877A vadd.f32 s15, s15, s14 + 8232 0692 C3ED047A vstr.32 s15, [r3, #16] + 401:Src/main.c **** TIM10_coflag = 0; + 8233 .loc 2 401 9 is_stmt 1 view .LVU2689 + 401:Src/main.c **** TIM10_coflag = 0; + ARM GAS /tmp/ccdsDELB.s page 515 + + + 8234 .loc 2 401 14 is_stmt 0 view .LVU2690 + 8235 0696 0023 movs r3, #0 + 8236 0698 744A ldr r2, .L363+44 + 8237 069a 1360 str r3, [r2] + 402:Src/main.c **** } + 8238 .loc 2 402 9 is_stmt 1 view .LVU2691 + 402:Src/main.c **** } + 8239 .loc 2 402 22 is_stmt 0 view .LVU2692 + 8240 069c 724A ldr r2, .L363+40 + 8241 069e 1370 strb r3, [r2] + 8242 06a0 DAE7 b .L335 + 8243 .LVL628: + 8244 .L334: + 394:Src/main.c **** while (task.current_param < task.max_param) + 8245 .loc 2 394 8 is_stmt 1 discriminator 2 view .LVU2693 + 394:Src/main.c **** while (task.current_param < task.max_param) + 8246 .loc 2 394 16 discriminator 2 view .LVU2694 + 394:Src/main.c **** while (task.current_param < task.max_param) + 8247 .loc 2 394 13 discriminator 2 view .LVU2695 + 8248 06a2 FEE7 b .L334 + 8249 .LVL629: + 8250 .L358: + 405:Src/main.c **** task.current_param = task.min_param; + 8251 .loc 2 405 7 view .LVU2696 + 8252 06a4 FFF7FEFF bl Stop_TIM10 + 8253 .LVL630: + 406:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_2, task.current_param); + 8254 .loc 2 406 7 view .LVU2697 + 406:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_2, task.current_param); + 8255 .loc 2 406 32 is_stmt 0 view .LVU2698 + 8256 06a8 654C ldr r4, .L363 + 8257 06aa D4ED017A vldr.32 s15, [r4, #4] + 406:Src/main.c **** Set_LTEC(TT_CHANGE_CURR_2, task.current_param); + 8258 .loc 2 406 26 view .LVU2699 + 8259 06ae C4ED047A vstr.32 s15, [r4, #16] + 407:Src/main.c **** if (task.tau > 3) + 8260 .loc 2 407 7 is_stmt 1 view .LVU2700 + 8261 06b2 FCEEE77A vcvt.u32.f32 s15, s15 + 8262 06b6 17EE903A vmov r3, s15 @ int + 8263 06ba 99B2 uxth r1, r3 + 8264 06bc 0220 movs r0, #2 + 8265 06be FFF7FEFF bl Set_LTEC + 8266 .LVL631: + 408:Src/main.c **** { + 8267 .loc 2 408 7 view .LVU2701 + 408:Src/main.c **** { + 8268 .loc 2 408 15 is_stmt 0 view .LVU2702 + 8269 06c2 E38A ldrh r3, [r4, #22] + 408:Src/main.c **** { + 8270 .loc 2 408 10 view .LVU2703 + 8271 06c4 032B cmp r3, #3 + 8272 06c6 0CD9 bls .L337 + 410:Src/main.c **** htim10.Init.Period = 9999; + 8273 .loc 2 410 8 is_stmt 1 view .LVU2704 + 410:Src/main.c **** htim10.Init.Period = 9999; + 8274 .loc 2 410 34 is_stmt 0 view .LVU2705 + 8275 06c8 5E4A ldr r2, .L363+4 + ARM GAS /tmp/ccdsDELB.s page 516 + + + 8276 06ca D068 ldr r0, [r2, #12] + 410:Src/main.c **** htim10.Init.Period = 9999; + 8277 .loc 2 410 21 view .LVU2706 + 8278 06cc 5E49 ldr r1, .L363+8 + 8279 06ce 0860 str r0, [r1] + 411:Src/main.c **** TO10_counter = (task.tau - 1) * 100; + 8280 .loc 2 411 8 is_stmt 1 view .LVU2707 + 411:Src/main.c **** TO10_counter = (task.tau - 1) * 100; + 8281 .loc 2 411 27 is_stmt 0 view .LVU2708 + 8282 06d0 42F20F71 movw r1, #9999 + 8283 06d4 D160 str r1, [r2, #12] + 412:Src/main.c **** } + 8284 .loc 2 412 8 is_stmt 1 view .LVU2709 + 412:Src/main.c **** } + 8285 .loc 2 412 33 is_stmt 0 view .LVU2710 + 8286 06d6 013B subs r3, r3, #1 + 412:Src/main.c **** } + 8287 .loc 2 412 38 view .LVU2711 + 8288 06d8 6422 movs r2, #100 + 8289 06da 02FB03F3 mul r3, r2, r3 + 412:Src/main.c **** } + 8290 .loc 2 412 21 view .LVU2712 + 8291 06de 5B4A ldr r2, .L363+12 + 8292 06e0 1360 str r3, [r2] + 8293 .L337: + 414:Src/main.c **** break; + 8294 .loc 2 414 7 is_stmt 1 view .LVU2713 + 8295 06e2 5848 ldr r0, .L363+4 + 8296 06e4 FFF7FEFF bl HAL_TIM_Base_Start_IT + 8297 .LVL632: + 415:Src/main.c **** case TT_CHANGE_TEMP_1: + 8298 .loc 2 415 6 view .LVU2714 + 8299 06e8 98E6 b .L327 + 8300 .L356: + 426:Src/main.c **** + 8301 .loc 2 426 7 view .LVU2715 + 426:Src/main.c **** + 8302 .loc 2 426 18 is_stmt 0 view .LVU2716 + 8303 06ea 614A ldr r2, .L363+48 + 8304 06ec 1360 str r3, [r2] + 428:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 8305 .loc 2 428 7 is_stmt 1 view .LVU2717 + 428:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 8306 .loc 2 428 25 is_stmt 0 view .LVU2718 + 8307 06ee 0120 movs r0, #1 + 8308 06f0 FFF7FEFF bl MPhD_T + 8309 .LVL633: + 428:Src/main.c **** LD1_param.POWER = MPhD_T(1);//Get Data from monitor photodiode of LD1 + 8310 .loc 2 428 23 view .LVU2719 + 8311 06f4 564E ldr r6, .L363+16 + 8312 06f6 3081 strh r0, [r6, #8] @ movhi + 429:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 8313 .loc 2 429 7 is_stmt 1 view .LVU2720 + 429:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 8314 .loc 2 429 25 is_stmt 0 view .LVU2721 + 8315 06f8 0120 movs r0, #1 + 8316 06fa FFF7FEFF bl MPhD_T + ARM GAS /tmp/ccdsDELB.s page 517 + + + 8317 .LVL634: + 429:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 8318 .loc 2 429 23 view .LVU2722 + 8319 06fe 3081 strh r0, [r6, #8] @ movhi + 430:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 8320 .loc 2 430 7 is_stmt 1 view .LVU2723 + 430:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 8321 .loc 2 430 25 is_stmt 0 view .LVU2724 + 8322 0700 0220 movs r0, #2 + 8323 0702 FFF7FEFF bl MPhD_T + 8324 .LVL635: + 430:Src/main.c **** LD2_param.POWER = MPhD_T(2);//Get Data from monitor photodiode of LD2 + 8325 .loc 2 430 23 view .LVU2725 + 8326 0706 534F ldr r7, .L363+20 + 8327 0708 3881 strh r0, [r7, #8] @ movhi + 431:Src/main.c **** + 8328 .loc 2 431 7 is_stmt 1 view .LVU2726 + 431:Src/main.c **** + 8329 .loc 2 431 25 is_stmt 0 view .LVU2727 + 8330 070a 0220 movs r0, #2 + 8331 070c FFF7FEFF bl MPhD_T + 8332 .LVL636: + 431:Src/main.c **** + 8333 .loc 2 431 23 view .LVU2728 + 8334 0710 3881 strh r0, [r7, #8] @ movhi + 433:Src/main.c **** Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + 8335 .loc 2 433 7 is_stmt 1 view .LVU2729 + 433:Src/main.c **** Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + 8336 .loc 2 433 31 is_stmt 0 view .LVU2730 + 8337 0712 3389 ldrh r3, [r6, #8] + 433:Src/main.c **** Long_Data[2] = LD2_param.POWER;//Translate Data from monitor photodiode of LD2 to Long_Data + 8338 .loc 2 433 20 view .LVU2731 + 8339 0714 574C ldr r4, .L363+52 + 8340 0716 6380 strh r3, [r4, #2] @ movhi + 434:Src/main.c **** + 8341 .loc 2 434 7 is_stmt 1 view .LVU2732 + 434:Src/main.c **** + 8342 .loc 2 434 20 is_stmt 0 view .LVU2733 + 8343 0718 A080 strh r0, [r4, #4] @ movhi + 438:Src/main.c **** temp16 = Get_ADC(1); + 8344 .loc 2 438 7 is_stmt 1 view .LVU2734 + 438:Src/main.c **** temp16 = Get_ADC(1); + 8345 .loc 2 438 16 is_stmt 0 view .LVU2735 + 8346 071a 0020 movs r0, #0 + 8347 071c FFF7FEFF bl Get_ADC + 8348 .LVL637: + 438:Src/main.c **** temp16 = Get_ADC(1); + 8349 .loc 2 438 14 view .LVU2736 + 8350 0720 4E4D ldr r5, .L363+28 + 8351 0722 2880 strh r0, [r5] @ movhi + 439:Src/main.c **** Long_Data[7] = temp16; + 8352 .loc 2 439 7 is_stmt 1 view .LVU2737 + 439:Src/main.c **** Long_Data[7] = temp16; + 8353 .loc 2 439 16 is_stmt 0 view .LVU2738 + 8354 0724 0120 movs r0, #1 + 8355 0726 FFF7FEFF bl Get_ADC + 8356 .LVL638: + ARM GAS /tmp/ccdsDELB.s page 518 + + + 439:Src/main.c **** Long_Data[7] = temp16; + 8357 .loc 2 439 14 view .LVU2739 + 8358 072a 2880 strh r0, [r5] @ movhi + 440:Src/main.c **** + 8359 .loc 2 440 7 is_stmt 1 view .LVU2740 + 440:Src/main.c **** + 8360 .loc 2 440 20 is_stmt 0 view .LVU2741 + 8361 072c E081 strh r0, [r4, #14] @ movhi + 443:Src/main.c **** Long_Data[8] = temp16; + 8362 .loc 2 443 7 is_stmt 1 view .LVU2742 + 443:Src/main.c **** Long_Data[8] = temp16; + 8363 .loc 2 443 16 is_stmt 0 view .LVU2743 + 8364 072e 0120 movs r0, #1 + 8365 0730 FFF7FEFF bl Get_ADC + 8366 .LVL639: + 443:Src/main.c **** Long_Data[8] = temp16; + 8367 .loc 2 443 14 view .LVU2744 + 8368 0734 2880 strh r0, [r5] @ movhi + 444:Src/main.c **** + 8369 .loc 2 444 7 is_stmt 1 view .LVU2745 + 444:Src/main.c **** + 8370 .loc 2 444 20 is_stmt 0 view .LVU2746 + 8371 0736 2082 strh r0, [r4, #16] @ movhi + 447:Src/main.c **** Long_Data[9] = temp16; + 8372 .loc 2 447 7 is_stmt 1 view .LVU2747 + 447:Src/main.c **** Long_Data[9] = temp16; + 8373 .loc 2 447 16 is_stmt 0 view .LVU2748 + 8374 0738 0120 movs r0, #1 + 8375 073a FFF7FEFF bl Get_ADC + 8376 .LVL640: + 447:Src/main.c **** Long_Data[9] = temp16; + 8377 .loc 2 447 14 view .LVU2749 + 8378 073e 2880 strh r0, [r5] @ movhi + 448:Src/main.c **** + 8379 .loc 2 448 7 is_stmt 1 view .LVU2750 + 448:Src/main.c **** + 8380 .loc 2 448 20 is_stmt 0 view .LVU2751 + 8381 0740 6082 strh r0, [r4, #18] @ movhi + 451:Src/main.c **** Long_Data[10] = temp16; + 8382 .loc 2 451 7 is_stmt 1 view .LVU2752 + 451:Src/main.c **** Long_Data[10] = temp16; + 8383 .loc 2 451 16 is_stmt 0 view .LVU2753 + 8384 0742 0120 movs r0, #1 + 8385 0744 FFF7FEFF bl Get_ADC + 8386 .LVL641: + 451:Src/main.c **** Long_Data[10] = temp16; + 8387 .loc 2 451 14 view .LVU2754 + 8388 0748 2880 strh r0, [r5] @ movhi + 452:Src/main.c **** + 8389 .loc 2 452 7 is_stmt 1 view .LVU2755 + 452:Src/main.c **** + 8390 .loc 2 452 21 is_stmt 0 view .LVU2756 + 8391 074a A082 strh r0, [r4, #20] @ movhi + 455:Src/main.c **** Long_Data[11] = temp16; + 8392 .loc 2 455 7 is_stmt 1 view .LVU2757 + 455:Src/main.c **** Long_Data[11] = temp16; + 8393 .loc 2 455 16 is_stmt 0 view .LVU2758 + ARM GAS /tmp/ccdsDELB.s page 519 + + + 8394 074c 0120 movs r0, #1 + 8395 074e FFF7FEFF bl Get_ADC + 8396 .LVL642: + 455:Src/main.c **** Long_Data[11] = temp16; + 8397 .loc 2 455 14 view .LVU2759 + 8398 0752 2880 strh r0, [r5] @ movhi + 456:Src/main.c **** temp16 = Get_ADC(2); + 8399 .loc 2 456 7 is_stmt 1 view .LVU2760 + 456:Src/main.c **** temp16 = Get_ADC(2); + 8400 .loc 2 456 21 is_stmt 0 view .LVU2761 + 8401 0754 E082 strh r0, [r4, #22] @ movhi + 457:Src/main.c **** + 8402 .loc 2 457 7 is_stmt 1 view .LVU2762 + 457:Src/main.c **** + 8403 .loc 2 457 16 is_stmt 0 view .LVU2763 + 8404 0756 0220 movs r0, #2 + 8405 0758 FFF7FEFF bl Get_ADC + 8406 .LVL643: + 457:Src/main.c **** + 8407 .loc 2 457 14 view .LVU2764 + 8408 075c 2880 strh r0, [r5] @ movhi + 460:Src/main.c **** temp16 = Get_ADC(4); + 8409 .loc 2 460 7 is_stmt 1 view .LVU2765 + 460:Src/main.c **** temp16 = Get_ADC(4); + 8410 .loc 2 460 16 is_stmt 0 view .LVU2766 + 8411 075e 0320 movs r0, #3 + 8412 0760 FFF7FEFF bl Get_ADC + 8413 .LVL644: + 460:Src/main.c **** temp16 = Get_ADC(4); + 8414 .loc 2 460 14 view .LVU2767 + 8415 0764 2880 strh r0, [r5] @ movhi + 461:Src/main.c **** Long_Data[12] = temp16; + 8416 .loc 2 461 7 is_stmt 1 view .LVU2768 + 461:Src/main.c **** Long_Data[12] = temp16; + 8417 .loc 2 461 16 is_stmt 0 view .LVU2769 + 8418 0766 0420 movs r0, #4 + 8419 0768 FFF7FEFF bl Get_ADC + 8420 .LVL645: + 461:Src/main.c **** Long_Data[12] = temp16; + 8421 .loc 2 461 14 view .LVU2770 + 8422 076c 2880 strh r0, [r5] @ movhi + 462:Src/main.c **** temp16 = Get_ADC(5); + 8423 .loc 2 462 7 is_stmt 1 view .LVU2771 + 462:Src/main.c **** temp16 = Get_ADC(5); + 8424 .loc 2 462 21 is_stmt 0 view .LVU2772 + 8425 076e 2083 strh r0, [r4, #24] @ movhi + 463:Src/main.c **** + 8426 .loc 2 463 7 is_stmt 1 view .LVU2773 + 463:Src/main.c **** + 8427 .loc 2 463 16 is_stmt 0 view .LVU2774 + 8428 0770 0520 movs r0, #5 + 8429 0772 FFF7FEFF bl Get_ADC + 8430 .LVL646: + 463:Src/main.c **** + 8431 .loc 2 463 14 view .LVU2775 + 8432 0776 2880 strh r0, [r5] @ movhi + 466:Src/main.c **** Long_Data[3] = (TO6_stop)&0xffff; + ARM GAS /tmp/ccdsDELB.s page 520 + + + 8433 .loc 2 466 7 is_stmt 1 view .LVU2776 + 466:Src/main.c **** Long_Data[3] = (TO6_stop)&0xffff; + 8434 .loc 2 466 16 is_stmt 0 view .LVU2777 + 8435 0778 3F4B ldr r3, .L363+56 + 8436 077a 1B68 ldr r3, [r3] + 8437 077c 3F4A ldr r2, .L363+60 + 8438 077e 1360 str r3, [r2] + 467:Src/main.c **** Long_Data[4] = (TO6_stop>>16)&0xffff; + 8439 .loc 2 467 7 is_stmt 1 view .LVU2778 + 467:Src/main.c **** Long_Data[4] = (TO6_stop>>16)&0xffff; + 8440 .loc 2 467 20 is_stmt 0 view .LVU2779 + 8441 0780 E380 strh r3, [r4, #6] @ movhi + 468:Src/main.c **** + 8442 .loc 2 468 7 is_stmt 1 view .LVU2780 + 468:Src/main.c **** + 8443 .loc 2 468 31 is_stmt 0 view .LVU2781 + 8444 0782 1B0C lsrs r3, r3, #16 + 468:Src/main.c **** + 8445 .loc 2 468 20 view .LVU2782 + 8446 0784 2381 strh r3, [r4, #8] @ movhi + 471:Src/main.c **** + 8447 .loc 2 471 7 is_stmt 1 view .LVU2783 + 471:Src/main.c **** + 8448 .loc 2 471 31 is_stmt 0 view .LVU2784 + 8449 0786 3388 ldrh r3, [r6] + 471:Src/main.c **** + 8450 .loc 2 471 20 view .LVU2785 + 8451 0788 6381 strh r3, [r4, #10] @ movhi + 474:Src/main.c **** } + 8452 .loc 2 474 7 is_stmt 1 view .LVU2786 + 474:Src/main.c **** } + 8453 .loc 2 474 31 is_stmt 0 view .LVU2787 + 8454 078a 3B88 ldrh r3, [r7] + 474:Src/main.c **** } + 8455 .loc 2 474 20 view .LVU2788 + 8456 078c A381 strh r3, [r4, #12] @ movhi + 8457 078e 4CE6 b .L339 + 8458 .L350: + 493:Src/main.c **** //HAL_UART_Transmit(&huart1, State_Data, 2, 10); + 8459 .loc 2 493 5 is_stmt 1 view .LVU2789 + 8460 0790 3B4C ldr r4, .L363+64 + 8461 0792 0221 movs r1, #2 + 8462 0794 2046 mov r0, r4 + 8463 0796 FFF7FEFF bl USART_TX + 8464 .LVL647: + 495:Src/main.c **** State_Data[1]=0;//All OK! + 8465 .loc 2 495 5 view .LVU2790 + 495:Src/main.c **** State_Data[1]=0;//All OK! + 8466 .loc 2 495 18 is_stmt 0 view .LVU2791 + 8467 079a 0023 movs r3, #0 + 8468 079c 2370 strb r3, [r4] + 496:Src/main.c **** UART_transmission_request = NO_MESS; + 8469 .loc 2 496 5 is_stmt 1 view .LVU2792 + 496:Src/main.c **** UART_transmission_request = NO_MESS; + 8470 .loc 2 496 18 is_stmt 0 view .LVU2793 + 8471 079e 6370 strb r3, [r4, #1] + 497:Src/main.c **** break; + ARM GAS /tmp/ccdsDELB.s page 521 + + + 8472 .loc 2 497 5 is_stmt 1 view .LVU2794 + 497:Src/main.c **** break; + 8473 .loc 2 497 31 is_stmt 0 view .LVU2795 + 8474 07a0 384A ldr r2, .L363+68 + 8475 07a2 1370 strb r3, [r2] + 498:Src/main.c **** case MESS_02://Transmith packet + 8476 .loc 2 498 4 is_stmt 1 view .LVU2796 + 8477 07a4 90E4 b .L343 + 8478 .L341: + 502:Src/main.c **** Long_Data[DL_16-1] = CS_result; + 8479 .loc 2 502 5 view .LVU2797 + 502:Src/main.c **** Long_Data[DL_16-1] = CS_result; + 8480 .loc 2 502 17 is_stmt 0 view .LVU2798 + 8481 07a6 334C ldr r4, .L363+52 + 8482 07a8 0D21 movs r1, #13 + 8483 07aa A01C adds r0, r4, #2 + 8484 07ac FFF7FEFF bl CalculateChecksum + 8485 .LVL648: + 502:Src/main.c **** Long_Data[DL_16-1] = CS_result; + 8486 .loc 2 502 15 view .LVU2799 + 8487 07b0 354B ldr r3, .L363+72 + 8488 07b2 1880 strh r0, [r3] @ movhi + 503:Src/main.c **** + 8489 .loc 2 503 5 is_stmt 1 view .LVU2800 + 503:Src/main.c **** + 8490 .loc 2 503 24 is_stmt 0 view .LVU2801 + 8491 07b4 A083 strh r0, [r4, #28] @ movhi + 505:Src/main.c **** { + 8492 .loc 2 505 5 is_stmt 1 view .LVU2802 + 8493 .LBB569: + 505:Src/main.c **** { + 8494 .loc 2 505 10 view .LVU2803 + 8495 .LVL649: + 505:Src/main.c **** { + 8496 .loc 2 505 19 is_stmt 0 view .LVU2804 + 8497 07b6 0023 movs r3, #0 + 505:Src/main.c **** { + 8498 .loc 2 505 5 view .LVU2805 + 8499 07b8 0BE0 b .L344 + 8500 .LVL650: + 8501 .L345: + 507:Src/main.c **** UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + 8502 .loc 2 507 6 is_stmt 1 discriminator 3 view .LVU2806 + 507:Src/main.c **** UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + 8503 .loc 2 507 33 is_stmt 0 discriminator 3 view .LVU2807 + 8504 07ba 2E4A ldr r2, .L363+52 + 8505 07bc 32F81320 ldrh r2, [r2, r3, lsl #1] + 507:Src/main.c **** UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + 8506 .loc 2 507 17 discriminator 3 view .LVU2808 + 8507 07c0 5900 lsls r1, r3, #1 + 507:Src/main.c **** UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + 8508 .loc 2 507 21 discriminator 3 view .LVU2809 + 8509 07c2 3248 ldr r0, .L363+76 + 8510 07c4 00F81320 strb r2, [r0, r3, lsl #1] + 508:Src/main.c **** } + 8511 .loc 2 508 6 is_stmt 1 discriminator 3 view .LVU2810 + 508:Src/main.c **** } + ARM GAS /tmp/ccdsDELB.s page 522 + + + 8512 .loc 2 508 19 is_stmt 0 discriminator 3 view .LVU2811 + 8513 07c8 0131 adds r1, r1, #1 + 508:Src/main.c **** } + 8514 .loc 2 508 23 discriminator 3 view .LVU2812 + 8515 07ca 120A lsrs r2, r2, #8 + 8516 07cc 4254 strb r2, [r0, r1] + 505:Src/main.c **** { + 8517 .loc 2 505 37 is_stmt 1 discriminator 3 view .LVU2813 + 505:Src/main.c **** { + 8518 .loc 2 505 38 is_stmt 0 discriminator 3 view .LVU2814 + 8519 07ce 0133 adds r3, r3, #1 + 8520 .LVL651: + 505:Src/main.c **** { + 8521 .loc 2 505 38 discriminator 3 view .LVU2815 + 8522 07d0 9BB2 uxth r3, r3 + 8523 .LVL652: + 8524 .L344: + 505:Src/main.c **** { + 8525 .loc 2 505 26 is_stmt 1 discriminator 1 view .LVU2816 + 505:Src/main.c **** { + 8526 .loc 2 505 5 is_stmt 0 discriminator 1 view .LVU2817 + 8527 07d2 0E2B cmp r3, #14 + 8528 07d4 F1D9 bls .L345 + 8529 .LBE569: + 515:Src/main.c **** UART_transmission_request = NO_MESS; + 8530 .loc 2 515 5 is_stmt 1 view .LVU2818 + 8531 07d6 1E20 movs r0, #30 + 8532 07d8 FFF7FEFF bl USART_TX_DMA + 8533 .LVL653: + 516:Src/main.c **** break; + 8534 .loc 2 516 5 view .LVU2819 + 516:Src/main.c **** break; + 8535 .loc 2 516 31 is_stmt 0 view .LVU2820 + 8536 07dc 294B ldr r3, .L363+68 + 8537 07de 0022 movs r2, #0 + 8538 07e0 1A70 strb r2, [r3] + 517:Src/main.c **** case MESS_03://Transmith saved packet + 8539 .loc 2 517 4 is_stmt 1 view .LVU2821 + 8540 07e2 71E4 b .L343 + 8541 .LVL654: + 8542 .L346: + 8543 .LBB570: + 521:Src/main.c **** UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + 8544 .loc 2 521 6 discriminator 3 view .LVU2822 + 521:Src/main.c **** UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + 8545 .loc 2 521 33 is_stmt 0 discriminator 3 view .LVU2823 + 8546 07e4 234A ldr r2, .L363+52 + 8547 07e6 32F81320 ldrh r2, [r2, r3, lsl #1] + 521:Src/main.c **** UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + 8548 .loc 2 521 17 discriminator 3 view .LVU2824 + 8549 07ea 5900 lsls r1, r3, #1 + 521:Src/main.c **** UART_DATA[i*2+1] = (Long_Data[i]>>8)&0xff; + 8550 .loc 2 521 21 discriminator 3 view .LVU2825 + 8551 07ec 2748 ldr r0, .L363+76 + 8552 07ee 00F81320 strb r2, [r0, r3, lsl #1] + 522:Src/main.c **** } + 8553 .loc 2 522 6 is_stmt 1 discriminator 3 view .LVU2826 + ARM GAS /tmp/ccdsDELB.s page 523 + + + 522:Src/main.c **** } + 8554 .loc 2 522 19 is_stmt 0 discriminator 3 view .LVU2827 + 8555 07f2 0131 adds r1, r1, #1 + 522:Src/main.c **** } + 8556 .loc 2 522 23 discriminator 3 view .LVU2828 + 8557 07f4 120A lsrs r2, r2, #8 + 8558 07f6 4254 strb r2, [r0, r1] + 519:Src/main.c **** { + 8559 .loc 2 519 37 is_stmt 1 discriminator 3 view .LVU2829 + 519:Src/main.c **** { + 8560 .loc 2 519 38 is_stmt 0 discriminator 3 view .LVU2830 + 8561 07f8 0133 adds r3, r3, #1 + 8562 .LVL655: + 519:Src/main.c **** { + 8563 .loc 2 519 38 discriminator 3 view .LVU2831 + 8564 07fa 9BB2 uxth r3, r3 + 8565 .LVL656: + 8566 .L342: + 519:Src/main.c **** { + 8567 .loc 2 519 26 is_stmt 1 discriminator 1 view .LVU2832 + 519:Src/main.c **** { + 8568 .loc 2 519 5 is_stmt 0 discriminator 1 view .LVU2833 + 8569 07fc 0E2B cmp r3, #14 + 8570 07fe F1D9 bls .L346 + 8571 .LBE570: + 528:Src/main.c **** UART_transmission_request = NO_MESS; + 8572 .loc 2 528 5 is_stmt 1 view .LVU2834 + 8573 0800 1E20 movs r0, #30 + 8574 0802 FFF7FEFF bl USART_TX_DMA + 8575 .LVL657: + 529:Src/main.c **** break; + 8576 .loc 2 529 5 view .LVU2835 + 529:Src/main.c **** break; + 8577 .loc 2 529 31 is_stmt 0 view .LVU2836 + 8578 0806 1F4B ldr r3, .L363+68 + 8579 0808 0022 movs r2, #0 + 8580 080a 1A70 strb r2, [r3] + 530:Src/main.c **** } + 8581 .loc 2 530 4 is_stmt 1 view .LVU2837 + 8582 080c 5CE4 b .L343 + 8583 .L348: + 490:Src/main.c **** { + 8584 .loc 2 490 3 is_stmt 0 view .LVU2838 + 8585 080e 0023 movs r3, #0 + 8586 0810 F4E7 b .L342 + 8587 .L351: + 532:Src/main.c **** { + 8588 .loc 2 532 28 discriminator 1 view .LVU2839 + 8589 0812 194B ldr r3, .L363+56 + 8590 0814 1B68 ldr r3, [r3] + 8591 0816 1E4A ldr r2, .L363+80 + 8592 0818 1268 ldr r2, [r2] + 8593 081a 9B1A subs r3, r3, r2 + 532:Src/main.c **** { + 8594 .loc 2 532 21 discriminator 1 view .LVU2840 + 8595 081c 642B cmp r3, #100 + 8596 081e 7FF658AC bls .L301 + ARM GAS /tmp/ccdsDELB.s page 524 + + + 534:Src/main.c **** State_Data[0] |= UART_ERR;//timeout error! + 8597 .loc 2 534 4 is_stmt 1 view .LVU2841 + 534:Src/main.c **** State_Data[0] |= UART_ERR;//timeout error! + 8598 .loc 2 534 18 is_stmt 0 view .LVU2842 + 8599 0822 0022 movs r2, #0 + 8600 0824 1B4B ldr r3, .L363+84 + 8601 0826 1A80 strh r2, [r3] @ movhi + 535:Src/main.c **** UART_transmission_request = MESS_01;//Send status + 8602 .loc 2 535 4 is_stmt 1 view .LVU2843 + 535:Src/main.c **** UART_transmission_request = MESS_01;//Send status + 8603 .loc 2 535 18 is_stmt 0 view .LVU2844 + 8604 0828 1549 ldr r1, .L363+64 + 8605 082a 0B78 ldrb r3, [r1] @ zero_extendqisi2 + 8606 082c 43F00203 orr r3, r3, #2 + 8607 0830 0B70 strb r3, [r1] + 536:Src/main.c **** flg_tmt = 0;//Reset timeout flag + 8608 .loc 2 536 4 is_stmt 1 view .LVU2845 + 536:Src/main.c **** flg_tmt = 0;//Reset timeout flag + 8609 .loc 2 536 30 is_stmt 0 view .LVU2846 + 8610 0832 144B ldr r3, .L363+68 + 8611 0834 0121 movs r1, #1 + 8612 0836 1970 strb r1, [r3] + 537:Src/main.c **** } + 8613 .loc 2 537 4 is_stmt 1 view .LVU2847 + 537:Src/main.c **** } + 8614 .loc 2 537 12 is_stmt 0 view .LVU2848 + 8615 0838 174B ldr r3, .L363+88 + 8616 083a 1A70 strb r2, [r3] + 8617 083c 49E4 b .L301 + 8618 .L364: + 8619 083e 00BF .align 2 + 8620 .L363: + 8621 0840 00000000 .word .LANCHOR1 + 8622 0844 00000000 .word .LANCHOR30 + 8623 0848 00000000 .word .LANCHOR42 + 8624 084c 00000000 .word .LANCHOR2 + 8625 0850 00000000 .word .LANCHOR39 + 8626 0854 00000000 .word .LANCHOR40 + 8627 0858 00000000 .word .LANCHOR21 + 8628 085c 00000000 .word .LANCHOR38 + 8629 0860 00000000 .word .LANCHOR22 + 8630 0864 000C0240 .word 1073875968 + 8631 0868 00000000 .word .LANCHOR31 + 8632 086c 00000000 .word .LANCHOR32 + 8633 0870 00000000 .word .LANCHOR8 + 8634 0874 00000000 .word .LANCHOR6 + 8635 0878 00000000 .word .LANCHOR7 + 8636 087c 00000000 .word .LANCHOR41 + 8637 0880 00000000 .word .LANCHOR36 + 8638 0884 00000000 .word .LANCHOR37 + 8639 0888 00000000 .word .LANCHOR34 + 8640 088c 00000000 .word .LANCHOR23 + 8641 0890 00000000 .word .LANCHOR10 + 8642 0894 00000000 .word .LANCHOR12 + 8643 0898 00000000 .word .LANCHOR11 + 8644 .cfi_endproc + 8645 .LFE1186: + ARM GAS /tmp/ccdsDELB.s page 525 + + + 8647 .global task + 8648 .global LD2_param + 8649 .global LD1_param + 8650 .global Def_setup + 8651 .global Curr_setup + 8652 .global LD2_def_setup + 8653 .global LD1_def_setup + 8654 .global LD2_curr_setup + 8655 .global LD1_curr_setup + 8656 .global sizeoffile + 8657 .global fgoto + 8658 .global test + 8659 .global fresult + 8660 .global COMMAND + 8661 .global Long_Data + 8662 .global temp16 + 8663 .global CS_result + 8664 .global UART_header + 8665 .global UART_rec_incr + 8666 .global TIM10_coflag + 8667 .global u_rx_flg + 8668 .global u_tx_flg + 8669 .global flg_tmt + 8670 .global UART_DATA + 8671 .global State_Data + 8672 .global UART_transmission_request + 8673 .global CPU_state_old + 8674 .global CPU_state + 8675 .global uart_buf + 8676 .global TIM10_period + 8677 .global TO10_counter + 8678 .global TO10 + 8679 .global TO7_PID + 8680 .global TO7_before + 8681 .global TO7 + 8682 .global temp32 + 8683 .global SD_SLIDE + 8684 .global SD_SEEK + 8685 .global TO6_uart + 8686 .global TO6_stop + 8687 .global TO6_before + 8688 .global TO6 + 8689 .global htim10 + 8690 .global hsd1 + 8691 .global hadc3 + 8692 .global hadc1 + 8693 .section .bss.COMMAND,"aw",%nobits + 8694 .align 2 + 8695 .set .LANCHOR26,. + 0 + 8698 COMMAND: + 8699 0000 00000000 .space 30 + 8699 00000000 + 8699 00000000 + 8699 00000000 + 8699 00000000 + 8700 .section .bss.CPU_state,"aw",%nobits + 8701 .set .LANCHOR27,. + 0 + ARM GAS /tmp/ccdsDELB.s page 526 + + + 8704 CPU_state: + 8705 0000 00 .space 1 + 8706 .section .bss.CPU_state_old,"aw",%nobits + 8707 .set .LANCHOR35,. + 0 + 8710 CPU_state_old: + 8711 0000 00 .space 1 + 8712 .section .bss.CS_result,"aw",%nobits + 8713 .align 1 + 8714 .set .LANCHOR34,. + 0 + 8717 CS_result: + 8718 0000 0000 .space 2 + 8719 .section .bss.Curr_setup,"aw",%nobits + 8720 .align 2 + 8721 .set .LANCHOR20,. + 0 + 8724 Curr_setup: + 8725 0000 00000000 .space 18 + 8725 00000000 + 8725 00000000 + 8725 00000000 + 8725 0000 + 8726 .section .bss.Def_setup,"aw",%nobits + 8727 .align 2 + 8728 .set .LANCHOR17,. + 0 + 8731 Def_setup: + 8732 0000 00000000 .space 18 + 8732 00000000 + 8732 00000000 + 8732 00000000 + 8732 0000 + 8733 .section .bss.LD1_curr_setup,"aw",%nobits + 8734 .align 2 + 8735 .set .LANCHOR21,. + 0 + 8738 LD1_curr_setup: + 8739 0000 00000000 .space 16 + 8739 00000000 + 8739 00000000 + 8739 00000000 + 8740 .section .bss.LD1_def_setup,"aw",%nobits + 8741 .align 2 + 8742 .set .LANCHOR18,. + 0 + 8745 LD1_def_setup: + 8746 0000 00000000 .space 16 + 8746 00000000 + 8746 00000000 + 8746 00000000 + 8747 .section .bss.LD1_param,"aw",%nobits + 8748 .align 2 + 8749 .set .LANCHOR39,. + 0 + 8752 LD1_param: + 8753 0000 00000000 .space 12 + 8753 00000000 + 8753 00000000 + 8754 .section .bss.LD2_curr_setup,"aw",%nobits + 8755 .align 2 + 8756 .set .LANCHOR22,. + 0 + 8759 LD2_curr_setup: + 8760 0000 00000000 .space 16 + ARM GAS /tmp/ccdsDELB.s page 527 + + + 8760 00000000 + 8760 00000000 + 8760 00000000 + 8761 .section .bss.LD2_def_setup,"aw",%nobits + 8762 .align 2 + 8763 .set .LANCHOR19,. + 0 + 8766 LD2_def_setup: + 8767 0000 00000000 .space 16 + 8767 00000000 + 8767 00000000 + 8767 00000000 + 8768 .section .bss.LD2_param,"aw",%nobits + 8769 .align 2 + 8770 .set .LANCHOR40,. + 0 + 8773 LD2_param: + 8774 0000 00000000 .space 12 + 8774 00000000 + 8774 00000000 + 8775 .section .bss.Long_Data,"aw",%nobits + 8776 .align 2 + 8777 .set .LANCHOR6,. + 0 + 8780 Long_Data: + 8781 0000 00000000 .space 30 + 8781 00000000 + 8781 00000000 + 8781 00000000 + 8781 00000000 + 8782 .section .bss.SD_SEEK,"aw",%nobits + 8783 .align 2 + 8784 .set .LANCHOR24,. + 0 + 8787 SD_SEEK: + 8788 0000 00000000 .space 4 + 8789 .section .bss.SD_SLIDE,"aw",%nobits + 8790 .align 2 + 8791 .set .LANCHOR25,. + 0 + 8794 SD_SLIDE: + 8795 0000 00000000 .space 4 + 8796 .section .bss.State_Data,"aw",%nobits + 8797 .align 2 + 8798 .set .LANCHOR36,. + 0 + 8801 State_Data: + 8802 0000 0000 .space 2 + 8803 .section .bss.TIM10_coflag,"aw",%nobits + 8804 .set .LANCHOR31,. + 0 + 8807 TIM10_coflag: + 8808 0000 00 .space 1 + 8809 .section .bss.TIM10_period,"aw",%nobits + 8810 .align 2 + 8811 .set .LANCHOR42,. + 0 + 8814 TIM10_period: + 8815 0000 00000000 .space 4 + 8816 .section .bss.TO10,"aw",%nobits + 8817 .align 2 + 8818 .set .LANCHOR32,. + 0 + 8821 TO10: + 8822 0000 00000000 .space 4 + 8823 .section .bss.TO10_counter,"aw",%nobits + ARM GAS /tmp/ccdsDELB.s page 528 + + + 8824 .align 2 + 8825 .set .LANCHOR2,. + 0 + 8828 TO10_counter: + 8829 0000 00000000 .space 4 + 8830 .section .bss.TO6,"aw",%nobits + 8831 .align 2 + 8832 .set .LANCHOR7,. + 0 + 8835 TO6: + 8836 0000 00000000 .space 4 + 8837 .section .bss.TO6_before,"aw",%nobits + 8838 .align 2 + 8839 .set .LANCHOR9,. + 0 + 8842 TO6_before: + 8843 0000 00000000 .space 4 + 8844 .section .bss.TO6_stop,"aw",%nobits + 8845 .align 2 + 8846 .set .LANCHOR41,. + 0 + 8849 TO6_stop: + 8850 0000 00000000 .space 4 + 8851 .section .bss.TO6_uart,"aw",%nobits + 8852 .align 2 + 8853 .set .LANCHOR10,. + 0 + 8856 TO6_uart: + 8857 0000 00000000 .space 4 + 8858 .section .bss.TO7,"aw",%nobits + 8859 .align 2 + 8860 .set .LANCHOR3,. + 0 + 8863 TO7: + 8864 0000 00000000 .space 4 + 8865 .section .bss.TO7_PID,"aw",%nobits + 8866 .align 2 + 8867 .set .LANCHOR4,. + 0 + 8870 TO7_PID: + 8871 0000 00000000 .space 4 + 8872 .section .bss.TO7_before,"aw",%nobits + 8873 .align 2 + 8874 .set .LANCHOR8,. + 0 + 8877 TO7_before: + 8878 0000 00000000 .space 4 + 8879 .section .bss.UART_DATA,"aw",%nobits + 8880 .align 2 + 8881 .set .LANCHOR23,. + 0 + 8884 UART_DATA: + 8885 0000 00000000 .space 30 + 8885 00000000 + 8885 00000000 + 8885 00000000 + 8885 00000000 + 8886 .section .bss.UART_header,"aw",%nobits + 8887 .align 1 + 8888 .set .LANCHOR33,. + 0 + 8891 UART_header: + 8892 0000 0000 .space 2 + 8893 .section .bss.UART_rec_incr,"aw",%nobits + 8894 .align 1 + 8895 .set .LANCHOR12,. + 0 + 8898 UART_rec_incr: + ARM GAS /tmp/ccdsDELB.s page 529 + + + 8899 0000 0000 .space 2 + 8900 .section .bss.UART_transmission_request,"aw",%nobits + 8901 .set .LANCHOR37,. + 0 + 8904 UART_transmission_request: + 8905 0000 00 .space 1 + 8906 .section .bss.fgoto,"aw",%nobits + 8907 .align 2 + 8908 .set .LANCHOR13,. + 0 + 8911 fgoto: + 8912 0000 00000000 .space 4 + 8913 .section .bss.flg_tmt,"aw",%nobits + 8914 .set .LANCHOR11,. + 0 + 8917 flg_tmt: + 8918 0000 00 .space 1 + 8919 .section .bss.fresult,"aw",%nobits + 8922 fresult: + 8923 0000 00 .space 1 + 8924 .section .bss.hadc1,"aw",%nobits + 8925 .align 2 + 8926 .set .LANCHOR28,. + 0 + 8929 hadc1: + 8930 0000 00000000 .space 72 + 8930 00000000 + 8930 00000000 + 8930 00000000 + 8930 00000000 + 8931 .section .bss.hadc3,"aw",%nobits + 8932 .align 2 + 8933 .set .LANCHOR29,. + 0 + 8936 hadc3: + 8937 0000 00000000 .space 72 + 8937 00000000 + 8937 00000000 + 8937 00000000 + 8937 00000000 + 8938 .section .bss.hsd1,"aw",%nobits + 8939 .align 2 + 8940 .set .LANCHOR0,. + 0 + 8943 hsd1: + 8944 0000 00000000 .space 132 + 8944 00000000 + 8944 00000000 + 8944 00000000 + 8944 00000000 + 8945 .section .bss.htim10,"aw",%nobits + 8946 .align 2 + 8947 .set .LANCHOR30,. + 0 + 8950 htim10: + 8951 0000 00000000 .space 76 + 8951 00000000 + 8951 00000000 + 8951 00000000 + 8951 00000000 + 8952 .section .bss.sizeoffile,"aw",%nobits + 8953 .align 2 + 8954 .set .LANCHOR14,. + 0 + 8957 sizeoffile: + ARM GAS /tmp/ccdsDELB.s page 530 + + + 8958 0000 00000000 .space 4 + 8959 .section .bss.task,"aw",%nobits + 8960 .align 2 + 8961 .set .LANCHOR1,. + 0 + 8964 task: + 8965 0000 00000000 .space 52 + 8965 00000000 + 8965 00000000 + 8965 00000000 + 8965 00000000 + 8966 .section .bss.temp16,"aw",%nobits + 8967 .align 1 + 8968 .set .LANCHOR38,. + 0 + 8971 temp16: + 8972 0000 0000 .space 2 + 8973 .section .bss.temp32,"aw",%nobits + 8974 .align 2 + 8977 temp32: + 8978 0000 00000000 .space 4 + 8979 .section .bss.test,"aw",%nobits + 8980 .align 2 + 8981 .set .LANCHOR5,. + 0 + 8984 test: + 8985 0000 00000000 .space 4 + 8986 .section .bss.u_rx_flg,"aw",%nobits + 8987 .set .LANCHOR16,. + 0 + 8990 u_rx_flg: + 8991 0000 00 .space 1 + 8992 .section .bss.u_tx_flg,"aw",%nobits + 8993 .set .LANCHOR15,. + 0 + 8996 u_tx_flg: + 8997 0000 00 .space 1 + 8998 .section .bss.uart_buf,"aw",%nobits + 9001 uart_buf: + 9002 0000 00 .space 1 + 9003 .text + 9004 .Letext0: + 9005 .file 9 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 9006 .file 10 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 9007 .file 11 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 9008 .file 12 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 9009 .file 13 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h" + 9010 .file 14 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h" + 9011 .file 15 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h" + 9012 .file 16 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 9013 .file 17 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h" + 9014 .file 18 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h" + 9015 .file 19 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h" + 9016 .file 20 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h" + 9017 .file 21 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 9018 .file 22 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h" + 9019 .file 23 "Inc/main.h" + 9020 .file 24 "Middlewares/Third_Party/FatFs/src/ff.h" + 9021 .file 25 "Inc/File_Handling.h" + 9022 .file 26 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h" + 9023 .file 27 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + 9024 .file 28 "Inc/fatfs.h" + ARM GAS /tmp/ccdsDELB.s page 531 + + + 9025 .file 29 "" + ARM GAS /tmp/ccdsDELB.s page 532 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 main.c + /tmp/ccdsDELB.s:17 .text.NVIC_EncodePriority:0000000000000000 $t + /tmp/ccdsDELB.s:24 .text.NVIC_EncodePriority:0000000000000000 NVIC_EncodePriority + /tmp/ccdsDELB.s:84 .text.MX_SDMMC1_SD_Init:0000000000000000 $t + /tmp/ccdsDELB.s:90 .text.MX_SDMMC1_SD_Init:0000000000000000 MX_SDMMC1_SD_Init + /tmp/ccdsDELB.s:129 .text.MX_SDMMC1_SD_Init:000000000000001c $d + /tmp/ccdsDELB.s:135 .text.MX_DMA_Init:0000000000000000 $t + /tmp/ccdsDELB.s:141 .text.MX_DMA_Init:0000000000000000 MX_DMA_Init + /tmp/ccdsDELB.s:237 .text.MX_DMA_Init:000000000000003c $d + /tmp/ccdsDELB.s:244 .text.Decode_task:0000000000000000 $t + /tmp/ccdsDELB.s:250 .text.Decode_task:0000000000000000 Decode_task + /tmp/ccdsDELB.s:529 .text.Decode_task:0000000000000150 $d + /tmp/ccdsDELB.s:539 .text.PID_Controller_Temp:0000000000000000 $t + /tmp/ccdsDELB.s:545 .text.PID_Controller_Temp:0000000000000000 PID_Controller_Temp + /tmp/ccdsDELB.s:714 .text.PID_Controller_Temp:00000000000000cc $d + /tmp/ccdsDELB.s:724 .text.Set_LTEC:0000000000000000 $t + /tmp/ccdsDELB.s:730 .text.Set_LTEC:0000000000000000 Set_LTEC + /tmp/ccdsDELB.s:755 .text.Set_LTEC:000000000000000e $d + /tmp/ccdsDELB.s:759 .text.Set_LTEC:0000000000000012 $t + /tmp/ccdsDELB.s:1168 .text.Set_LTEC:0000000000000148 $d + /tmp/ccdsDELB.s:1176 .text.MPhD_T:0000000000000000 $t + /tmp/ccdsDELB.s:1182 .text.MPhD_T:0000000000000000 MPhD_T + /tmp/ccdsDELB.s:1793 .text.MPhD_T:0000000000000214 $d + /tmp/ccdsDELB.s:1803 .text.MX_GPIO_Init:0000000000000000 $t + /tmp/ccdsDELB.s:1809 .text.MX_GPIO_Init:0000000000000000 MX_GPIO_Init + /tmp/ccdsDELB.s:2219 .text.MX_GPIO_Init:00000000000001f4 $d + /tmp/ccdsDELB.s:2230 .text.MX_SPI4_Init:0000000000000000 $t + /tmp/ccdsDELB.s:2236 .text.MX_SPI4_Init:0000000000000000 MX_SPI4_Init + /tmp/ccdsDELB.s:2441 .text.MX_SPI4_Init:00000000000000c8 $d + /tmp/ccdsDELB.s:2448 .text.MX_SPI2_Init:0000000000000000 $t + /tmp/ccdsDELB.s:2454 .text.MX_SPI2_Init:0000000000000000 MX_SPI2_Init + /tmp/ccdsDELB.s:2659 .text.MX_SPI2_Init:00000000000000c4 $d + /tmp/ccdsDELB.s:2666 .text.MX_SPI5_Init:0000000000000000 $t + /tmp/ccdsDELB.s:2672 .text.MX_SPI5_Init:0000000000000000 MX_SPI5_Init + /tmp/ccdsDELB.s:2877 .text.MX_SPI5_Init:00000000000000c4 $d + /tmp/ccdsDELB.s:2884 .text.MX_SPI6_Init:0000000000000000 $t + /tmp/ccdsDELB.s:2890 .text.MX_SPI6_Init:0000000000000000 MX_SPI6_Init + /tmp/ccdsDELB.s:3095 .text.MX_SPI6_Init:00000000000000c4 $d + /tmp/ccdsDELB.s:3102 .text.MX_TIM2_Init:0000000000000000 $t + /tmp/ccdsDELB.s:3108 .text.MX_TIM2_Init:0000000000000000 MX_TIM2_Init + /tmp/ccdsDELB.s:3286 .text.MX_TIM2_Init:0000000000000088 $d + /tmp/ccdsDELB.s:3295 .text.MX_TIM5_Init:0000000000000000 $t + /tmp/ccdsDELB.s:3301 .text.MX_TIM5_Init:0000000000000000 MX_TIM5_Init + /tmp/ccdsDELB.s:3478 .text.MX_TIM5_Init:0000000000000084 $d + /tmp/ccdsDELB.s:3487 .text.MX_TIM7_Init:0000000000000000 $t + /tmp/ccdsDELB.s:3493 .text.MX_TIM7_Init:0000000000000000 MX_TIM7_Init + /tmp/ccdsDELB.s:3654 .text.MX_TIM7_Init:000000000000007c $d + /tmp/ccdsDELB.s:3662 .text.MX_TIM6_Init:0000000000000000 $t + /tmp/ccdsDELB.s:3668 .text.MX_TIM6_Init:0000000000000000 MX_TIM6_Init + /tmp/ccdsDELB.s:3829 .text.MX_TIM6_Init:000000000000007c $d + /tmp/ccdsDELB.s:3837 .rodata.Decode_uart.str1.4:0000000000000000 $d + /tmp/ccdsDELB.s:3844 .text.Decode_uart:0000000000000000 $t + /tmp/ccdsDELB.s:3850 .text.Decode_uart:0000000000000000 Decode_uart + /tmp/ccdsDELB.s:4413 .text.Decode_uart:00000000000002cc $d + /tmp/ccdsDELB.s:4428 .text.Init_params:0000000000000000 $t + /tmp/ccdsDELB.s:4434 .text.Init_params:0000000000000000 Init_params + ARM GAS /tmp/ccdsDELB.s page 533 + + + /tmp/ccdsDELB.s:5077 .text.Init_params:0000000000000278 $d + /tmp/ccdsDELB.s:5116 .text.Get_ADC:0000000000000000 $t + /tmp/ccdsDELB.s:5122 .text.Get_ADC:0000000000000000 Get_ADC + /tmp/ccdsDELB.s:5142 .text.Get_ADC:000000000000000c $d + /tmp/ccdsDELB.s:5148 .text.Get_ADC:0000000000000012 $t + /tmp/ccdsDELB.s:5246 .text.Get_ADC:0000000000000068 $d + /tmp/ccdsDELB.s:5252 .text.Stop_TIM10:0000000000000000 $t + /tmp/ccdsDELB.s:5258 .text.Stop_TIM10:0000000000000000 Stop_TIM10 + /tmp/ccdsDELB.s:5287 .text.Stop_TIM10:0000000000000014 $d + /tmp/ccdsDELB.s:5294 .text.CalculateChecksum:0000000000000000 $t + /tmp/ccdsDELB.s:5301 .text.CalculateChecksum:0000000000000000 CalculateChecksum + /tmp/ccdsDELB.s:5348 .text.CheckChecksum:0000000000000000 $t + /tmp/ccdsDELB.s:5355 .text.CheckChecksum:0000000000000000 CheckChecksum + /tmp/ccdsDELB.s:5417 .text.CheckChecksum:000000000000003c $d + /tmp/ccdsDELB.s:5424 .rodata.SD_SAVE.str1.4:0000000000000000 $d + /tmp/ccdsDELB.s:5428 .text.SD_SAVE:0000000000000000 $t + /tmp/ccdsDELB.s:5435 .text.SD_SAVE:0000000000000000 SD_SAVE + /tmp/ccdsDELB.s:5504 .text.SD_SAVE:0000000000000030 $d + /tmp/ccdsDELB.s:5511 .text.SD_READ:0000000000000000 $t + /tmp/ccdsDELB.s:5518 .text.SD_READ:0000000000000000 SD_READ + /tmp/ccdsDELB.s:5596 .text.SD_READ:000000000000003c $d + /tmp/ccdsDELB.s:5604 .text.SD_REMOVE:0000000000000000 $t + /tmp/ccdsDELB.s:5611 .text.SD_REMOVE:0000000000000000 SD_REMOVE + /tmp/ccdsDELB.s:5679 .text.SD_REMOVE:0000000000000034 $d + /tmp/ccdsDELB.s:5686 .text.USART_TX:0000000000000000 $t + /tmp/ccdsDELB.s:5693 .text.USART_TX:0000000000000000 USART_TX + /tmp/ccdsDELB.s:5770 .text.USART_TX:0000000000000028 $d + /tmp/ccdsDELB.s:5775 .text.USART_TX_DMA:0000000000000000 $t + /tmp/ccdsDELB.s:5782 .text.USART_TX_DMA:0000000000000000 USART_TX_DMA + /tmp/ccdsDELB.s:5854 .text.USART_TX_DMA:0000000000000038 $d + /tmp/ccdsDELB.s:5861 .text.Error_Handler:0000000000000000 $t + /tmp/ccdsDELB.s:5868 .text.Error_Handler:0000000000000000 Error_Handler + /tmp/ccdsDELB.s:5899 .text.MX_ADC1_Init:0000000000000000 $t + /tmp/ccdsDELB.s:5905 .text.MX_ADC1_Init:0000000000000000 MX_ADC1_Init + /tmp/ccdsDELB.s:6094 .text.MX_ADC1_Init:00000000000000bc $d + /tmp/ccdsDELB.s:6101 .text.MX_ADC3_Init:0000000000000000 $t + /tmp/ccdsDELB.s:6107 .text.MX_ADC3_Init:0000000000000000 MX_ADC3_Init + /tmp/ccdsDELB.s:6214 .text.MX_ADC3_Init:0000000000000060 $d + /tmp/ccdsDELB.s:6221 .text.MX_USART1_UART_Init:0000000000000000 $t + /tmp/ccdsDELB.s:6227 .text.MX_USART1_UART_Init:0000000000000000 MX_USART1_UART_Init + /tmp/ccdsDELB.s:6626 .text.MX_USART1_UART_Init:000000000000017c $d + /tmp/ccdsDELB.s:6635 .text.MX_TIM10_Init:0000000000000000 $t + /tmp/ccdsDELB.s:6641 .text.MX_TIM10_Init:0000000000000000 MX_TIM10_Init + /tmp/ccdsDELB.s:6690 .text.MX_TIM10_Init:0000000000000024 $d + /tmp/ccdsDELB.s:6696 .text.SystemClock_Config:0000000000000000 $t + /tmp/ccdsDELB.s:6703 .text.SystemClock_Config:0000000000000000 SystemClock_Config + /tmp/ccdsDELB.s:6862 .text.SystemClock_Config:00000000000000ac $d + /tmp/ccdsDELB.s:6868 .text.main:0000000000000000 $t + /tmp/ccdsDELB.s:6875 .text.main:0000000000000000 main + /tmp/ccdsDELB.s:7208 .text.main:00000000000000f0 $d + /tmp/ccdsDELB.s:7218 .text.main:0000000000000118 $t + /tmp/ccdsDELB.s:7468 .text.main:0000000000000224 $d + /tmp/ccdsDELB.s:7492 .text.main:0000000000000278 $t + /tmp/ccdsDELB.s:8034 .text.main:000000000000052c $d + /tmp/ccdsDELB.s:8063 .text.main:0000000000000594 $t + /tmp/ccdsDELB.s:8621 .text.main:0000000000000840 $d + /tmp/ccdsDELB.s:8964 .bss.task:0000000000000000 task + ARM GAS /tmp/ccdsDELB.s page 534 + + + /tmp/ccdsDELB.s:8773 .bss.LD2_param:0000000000000000 LD2_param + /tmp/ccdsDELB.s:8752 .bss.LD1_param:0000000000000000 LD1_param + /tmp/ccdsDELB.s:8731 .bss.Def_setup:0000000000000000 Def_setup + /tmp/ccdsDELB.s:8724 .bss.Curr_setup:0000000000000000 Curr_setup + /tmp/ccdsDELB.s:8766 .bss.LD2_def_setup:0000000000000000 LD2_def_setup + /tmp/ccdsDELB.s:8745 .bss.LD1_def_setup:0000000000000000 LD1_def_setup + /tmp/ccdsDELB.s:8759 .bss.LD2_curr_setup:0000000000000000 LD2_curr_setup + /tmp/ccdsDELB.s:8738 .bss.LD1_curr_setup:0000000000000000 LD1_curr_setup + /tmp/ccdsDELB.s:8957 .bss.sizeoffile:0000000000000000 sizeoffile + /tmp/ccdsDELB.s:8911 .bss.fgoto:0000000000000000 fgoto + /tmp/ccdsDELB.s:8984 .bss.test:0000000000000000 test + /tmp/ccdsDELB.s:8922 .bss.fresult:0000000000000000 fresult + /tmp/ccdsDELB.s:8698 .bss.COMMAND:0000000000000000 COMMAND + /tmp/ccdsDELB.s:8780 .bss.Long_Data:0000000000000000 Long_Data + /tmp/ccdsDELB.s:8971 .bss.temp16:0000000000000000 temp16 + /tmp/ccdsDELB.s:8717 .bss.CS_result:0000000000000000 CS_result + /tmp/ccdsDELB.s:8891 .bss.UART_header:0000000000000000 UART_header + /tmp/ccdsDELB.s:8898 .bss.UART_rec_incr:0000000000000000 UART_rec_incr + /tmp/ccdsDELB.s:8807 .bss.TIM10_coflag:0000000000000000 TIM10_coflag + /tmp/ccdsDELB.s:8990 .bss.u_rx_flg:0000000000000000 u_rx_flg + /tmp/ccdsDELB.s:8996 .bss.u_tx_flg:0000000000000000 u_tx_flg + /tmp/ccdsDELB.s:8917 .bss.flg_tmt:0000000000000000 flg_tmt + /tmp/ccdsDELB.s:8884 .bss.UART_DATA:0000000000000000 UART_DATA + /tmp/ccdsDELB.s:8801 .bss.State_Data:0000000000000000 State_Data + /tmp/ccdsDELB.s:8904 .bss.UART_transmission_request:0000000000000000 UART_transmission_request + /tmp/ccdsDELB.s:8710 .bss.CPU_state_old:0000000000000000 CPU_state_old + /tmp/ccdsDELB.s:8704 .bss.CPU_state:0000000000000000 CPU_state + /tmp/ccdsDELB.s:9001 .bss.uart_buf:0000000000000000 uart_buf + /tmp/ccdsDELB.s:8814 .bss.TIM10_period:0000000000000000 TIM10_period + /tmp/ccdsDELB.s:8828 .bss.TO10_counter:0000000000000000 TO10_counter + /tmp/ccdsDELB.s:8821 .bss.TO10:0000000000000000 TO10 + /tmp/ccdsDELB.s:8870 .bss.TO7_PID:0000000000000000 TO7_PID + /tmp/ccdsDELB.s:8877 .bss.TO7_before:0000000000000000 TO7_before + /tmp/ccdsDELB.s:8863 .bss.TO7:0000000000000000 TO7 + /tmp/ccdsDELB.s:8977 .bss.temp32:0000000000000000 temp32 + /tmp/ccdsDELB.s:8794 .bss.SD_SLIDE:0000000000000000 SD_SLIDE + /tmp/ccdsDELB.s:8787 .bss.SD_SEEK:0000000000000000 SD_SEEK + /tmp/ccdsDELB.s:8856 .bss.TO6_uart:0000000000000000 TO6_uart + /tmp/ccdsDELB.s:8849 .bss.TO6_stop:0000000000000000 TO6_stop + /tmp/ccdsDELB.s:8842 .bss.TO6_before:0000000000000000 TO6_before + /tmp/ccdsDELB.s:8835 .bss.TO6:0000000000000000 TO6 + /tmp/ccdsDELB.s:8950 .bss.htim10:0000000000000000 htim10 + /tmp/ccdsDELB.s:8943 .bss.hsd1:0000000000000000 hsd1 + /tmp/ccdsDELB.s:8936 .bss.hadc3:0000000000000000 hadc3 + /tmp/ccdsDELB.s:8929 .bss.hadc1:0000000000000000 hadc1 + /tmp/ccdsDELB.s:8694 .bss.COMMAND:0000000000000000 $d + /tmp/ccdsDELB.s:8705 .bss.CPU_state:0000000000000000 $d + /tmp/ccdsDELB.s:8711 .bss.CPU_state_old:0000000000000000 $d + /tmp/ccdsDELB.s:8713 .bss.CS_result:0000000000000000 $d + /tmp/ccdsDELB.s:8720 .bss.Curr_setup:0000000000000000 $d + /tmp/ccdsDELB.s:8727 .bss.Def_setup:0000000000000000 $d + /tmp/ccdsDELB.s:8734 .bss.LD1_curr_setup:0000000000000000 $d + /tmp/ccdsDELB.s:8741 .bss.LD1_def_setup:0000000000000000 $d + /tmp/ccdsDELB.s:8748 .bss.LD1_param:0000000000000000 $d + /tmp/ccdsDELB.s:8755 .bss.LD2_curr_setup:0000000000000000 $d + /tmp/ccdsDELB.s:8762 .bss.LD2_def_setup:0000000000000000 $d + /tmp/ccdsDELB.s:8769 .bss.LD2_param:0000000000000000 $d + ARM GAS /tmp/ccdsDELB.s page 535 + + + /tmp/ccdsDELB.s:8776 .bss.Long_Data:0000000000000000 $d + /tmp/ccdsDELB.s:8783 .bss.SD_SEEK:0000000000000000 $d + /tmp/ccdsDELB.s:8790 .bss.SD_SLIDE:0000000000000000 $d + /tmp/ccdsDELB.s:8797 .bss.State_Data:0000000000000000 $d + /tmp/ccdsDELB.s:8808 .bss.TIM10_coflag:0000000000000000 $d + /tmp/ccdsDELB.s:8810 .bss.TIM10_period:0000000000000000 $d + /tmp/ccdsDELB.s:8817 .bss.TO10:0000000000000000 $d + /tmp/ccdsDELB.s:8824 .bss.TO10_counter:0000000000000000 $d + /tmp/ccdsDELB.s:8831 .bss.TO6:0000000000000000 $d + /tmp/ccdsDELB.s:8838 .bss.TO6_before:0000000000000000 $d + /tmp/ccdsDELB.s:8845 .bss.TO6_stop:0000000000000000 $d + /tmp/ccdsDELB.s:8852 .bss.TO6_uart:0000000000000000 $d + /tmp/ccdsDELB.s:8859 .bss.TO7:0000000000000000 $d + /tmp/ccdsDELB.s:8866 .bss.TO7_PID:0000000000000000 $d + /tmp/ccdsDELB.s:8873 .bss.TO7_before:0000000000000000 $d + /tmp/ccdsDELB.s:8880 .bss.UART_DATA:0000000000000000 $d + /tmp/ccdsDELB.s:8887 .bss.UART_header:0000000000000000 $d + /tmp/ccdsDELB.s:8894 .bss.UART_rec_incr:0000000000000000 $d + /tmp/ccdsDELB.s:8905 .bss.UART_transmission_request:0000000000000000 $d + /tmp/ccdsDELB.s:8907 .bss.fgoto:0000000000000000 $d + /tmp/ccdsDELB.s:8918 .bss.flg_tmt:0000000000000000 $d + /tmp/ccdsDELB.s:8923 .bss.fresult:0000000000000000 $d + /tmp/ccdsDELB.s:8925 .bss.hadc1:0000000000000000 $d + /tmp/ccdsDELB.s:8932 .bss.hadc3:0000000000000000 $d + /tmp/ccdsDELB.s:8939 .bss.hsd1:0000000000000000 $d + /tmp/ccdsDELB.s:8946 .bss.htim10:0000000000000000 $d + /tmp/ccdsDELB.s:8953 .bss.sizeoffile:0000000000000000 $d + /tmp/ccdsDELB.s:8960 .bss.task:0000000000000000 $d + /tmp/ccdsDELB.s:8967 .bss.temp16:0000000000000000 $d + /tmp/ccdsDELB.s:8974 .bss.temp32:0000000000000000 $d + /tmp/ccdsDELB.s:8980 .bss.test:0000000000000000 $d + /tmp/ccdsDELB.s:8991 .bss.u_rx_flg:0000000000000000 $d + /tmp/ccdsDELB.s:8997 .bss.u_tx_flg:0000000000000000 $d + /tmp/ccdsDELB.s:9002 .bss.uart_buf:0000000000000000 $d + +UNDEFINED SYMBOLS +HAL_GPIO_WritePin +HAL_GPIO_Init +memset +LL_GPIO_Init +LL_SPI_Init +LL_TIM_Init +HAL_GPIO_ReadPin +Mount_SD +Remove_File +Create_File +Write_File_byte +Update_File_byte +Unmount_SD +Seek_Read_File +HAL_ADC_Start +HAL_ADC_PollForConversion +HAL_ADC_GetValue +HAL_ADC_Stop +HAL_TIM_Base_Stop_IT +HAL_ADC_Init +HAL_ADC_ConfigChannel + ARM GAS /tmp/ccdsDELB.s page 536 + + +HAL_RCCEx_PeriphCLKConfig +LL_USART_Init +HAL_TIM_Base_Init +HAL_RCC_OscConfig +HAL_PWREx_EnableOverDrive +HAL_RCC_ClockConfig +HAL_Init +MX_FATFS_Init +HAL_TIM_Base_Start_IT diff --git a/build/main.o b/build/main.o new file mode 100644 index 0000000..2e4ba8c Binary files /dev/null and b/build/main.o differ diff --git a/build/sd_diskio.d b/build/sd_diskio.d new file mode 100644 index 0000000..01c7bd7 --- /dev/null +++ b/build/sd_diskio.d @@ -0,0 +1,101 @@ +build/sd_diskio.o: Src/sd_diskio.c \ + Middlewares/Third_Party/FatFs/src/ff_gen_drv.h \ + Middlewares/Third_Party/FatFs/src/diskio.h \ + Middlewares/Third_Party/FatFs/src/integer.h \ + Middlewares/Third_Party/FatFs/src/ff.h Inc/ffconf.h Inc/main.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h Inc/bsp_driver_sd.h \ + Inc/fatfs_platform.h Inc/sd_diskio.h +Middlewares/Third_Party/FatFs/src/ff_gen_drv.h: +Middlewares/Third_Party/FatFs/src/diskio.h: +Middlewares/Third_Party/FatFs/src/integer.h: +Middlewares/Third_Party/FatFs/src/ff.h: +Inc/ffconf.h: +Inc/main.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: +Inc/bsp_driver_sd.h: +Inc/fatfs_platform.h: +Inc/sd_diskio.h: diff --git a/build/sd_diskio.lst b/build/sd_diskio.lst new file mode 100644 index 0000000..d3e0a6a --- /dev/null +++ b/build/sd_diskio.lst @@ -0,0 +1,747 @@ +ARM GAS /tmp/ccixANLj.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "sd_diskio.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.SD_CheckStatus,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 SD_CheckStatus: + 25 .LVL0: + 26 .LFB1183: + 27 .file 1 "Src/sd_diskio.c" + 1:Src/sd_diskio.c **** /* USER CODE BEGIN Header */ + 2:Src/sd_diskio.c **** /** + 3:Src/sd_diskio.c **** ****************************************************************************** + 4:Src/sd_diskio.c **** * @file sd_diskio.c + 5:Src/sd_diskio.c **** * @brief SD Disk I/O driver + 6:Src/sd_diskio.c **** ****************************************************************************** + 7:Src/sd_diskio.c **** * @attention + 8:Src/sd_diskio.c **** * + 9:Src/sd_diskio.c **** * Copyright (c) 2023 STMicroelectronics. + 10:Src/sd_diskio.c **** * All rights reserved. + 11:Src/sd_diskio.c **** * + 12:Src/sd_diskio.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Src/sd_diskio.c **** * in the root directory of this software component. + 14:Src/sd_diskio.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Src/sd_diskio.c **** * + 16:Src/sd_diskio.c **** ****************************************************************************** + 17:Src/sd_diskio.c **** */ + 18:Src/sd_diskio.c **** /* USER CODE END Header */ + 19:Src/sd_diskio.c **** + 20:Src/sd_diskio.c **** /* Note: code generation based on sd_diskio_template_bspv1.c v2.1.4 + 21:Src/sd_diskio.c **** as "Use dma template" is disabled. */ + 22:Src/sd_diskio.c **** + 23:Src/sd_diskio.c **** /* USER CODE BEGIN firstSection */ + 24:Src/sd_diskio.c **** /* can be used to modify / undefine following code or add new definitions */ + 25:Src/sd_diskio.c **** /* USER CODE END firstSection*/ + 26:Src/sd_diskio.c **** + 27:Src/sd_diskio.c **** /* Includes ------------------------------------------------------------------*/ + 28:Src/sd_diskio.c **** #include "ff_gen_drv.h" + 29:Src/sd_diskio.c **** #include "sd_diskio.h" + 30:Src/sd_diskio.c **** + 31:Src/sd_diskio.c **** /* Private typedef -----------------------------------------------------------*/ + ARM GAS /tmp/ccixANLj.s page 2 + + + 32:Src/sd_diskio.c **** /* Private define ------------------------------------------------------------*/ + 33:Src/sd_diskio.c **** /* use the default SD timout as defined in the platform BSP driver*/ + 34:Src/sd_diskio.c **** #if defined(SDMMC_DATATIMEOUT) + 35:Src/sd_diskio.c **** #define SD_TIMEOUT SDMMC_DATATIMEOUT + 36:Src/sd_diskio.c **** #elif defined(SD_DATATIMEOUT) + 37:Src/sd_diskio.c **** #define SD_TIMEOUT SD_DATATIMEOUT + 38:Src/sd_diskio.c **** #else + 39:Src/sd_diskio.c **** #define SD_TIMEOUT 30 * 1000 + 40:Src/sd_diskio.c **** #endif + 41:Src/sd_diskio.c **** + 42:Src/sd_diskio.c **** #define SD_DEFAULT_BLOCK_SIZE 512 + 43:Src/sd_diskio.c **** + 44:Src/sd_diskio.c **** /* + 45:Src/sd_diskio.c **** * Depending on the use case, the SD card initialization could be done at the + 46:Src/sd_diskio.c **** * application level: if it is the case define the flag below to disable + 47:Src/sd_diskio.c **** * the BSP_SD_Init() call in the SD_Initialize() and add a call to + 48:Src/sd_diskio.c **** * BSP_SD_Init() elsewhere in the application. + 49:Src/sd_diskio.c **** */ + 50:Src/sd_diskio.c **** /* USER CODE BEGIN disableSDInit */ + 51:Src/sd_diskio.c **** /* #define DISABLE_SD_INIT */ + 52:Src/sd_diskio.c **** /* USER CODE END disableSDInit */ + 53:Src/sd_diskio.c **** + 54:Src/sd_diskio.c **** /* Private variables ---------------------------------------------------------*/ + 55:Src/sd_diskio.c **** /* Disk status */ + 56:Src/sd_diskio.c **** static volatile DSTATUS Stat = STA_NOINIT; + 57:Src/sd_diskio.c **** + 58:Src/sd_diskio.c **** /* Private function prototypes -----------------------------------------------*/ + 59:Src/sd_diskio.c **** static DSTATUS SD_CheckStatus(BYTE lun); + 60:Src/sd_diskio.c **** DSTATUS SD_initialize (BYTE); + 61:Src/sd_diskio.c **** DSTATUS SD_status (BYTE); + 62:Src/sd_diskio.c **** DRESULT SD_read (BYTE, BYTE*, DWORD, UINT); + 63:Src/sd_diskio.c **** #if _USE_WRITE == 1 + 64:Src/sd_diskio.c **** DRESULT SD_write (BYTE, const BYTE*, DWORD, UINT); + 65:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */ + 66:Src/sd_diskio.c **** #if _USE_IOCTL == 1 + 67:Src/sd_diskio.c **** DRESULT SD_ioctl (BYTE, BYTE, void*); + 68:Src/sd_diskio.c **** #endif /* _USE_IOCTL == 1 */ + 69:Src/sd_diskio.c **** + 70:Src/sd_diskio.c **** const Diskio_drvTypeDef SD_Driver = + 71:Src/sd_diskio.c **** { + 72:Src/sd_diskio.c **** SD_initialize, + 73:Src/sd_diskio.c **** SD_status, + 74:Src/sd_diskio.c **** SD_read, + 75:Src/sd_diskio.c **** #if _USE_WRITE == 1 + 76:Src/sd_diskio.c **** SD_write, + 77:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */ + 78:Src/sd_diskio.c **** + 79:Src/sd_diskio.c **** #if _USE_IOCTL == 1 + 80:Src/sd_diskio.c **** SD_ioctl, + 81:Src/sd_diskio.c **** #endif /* _USE_IOCTL == 1 */ + 82:Src/sd_diskio.c **** }; + 83:Src/sd_diskio.c **** + 84:Src/sd_diskio.c **** /* USER CODE BEGIN beforeFunctionSection */ + 85:Src/sd_diskio.c **** /* can be used to modify / undefine following code or add new code */ + 86:Src/sd_diskio.c **** /* USER CODE END beforeFunctionSection */ + 87:Src/sd_diskio.c **** + 88:Src/sd_diskio.c **** /* Private functions ---------------------------------------------------------*/ + ARM GAS /tmp/ccixANLj.s page 3 + + + 89:Src/sd_diskio.c **** + 90:Src/sd_diskio.c **** static DSTATUS SD_CheckStatus(BYTE lun) + 91:Src/sd_diskio.c **** { + 28 .loc 1 91 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 .loc 1 91 1 is_stmt 0 view .LVU1 + 33 0000 08B5 push {r3, lr} + 34 .LCFI0: + 35 .cfi_def_cfa_offset 8 + 36 .cfi_offset 3, -8 + 37 .cfi_offset 14, -4 + 92:Src/sd_diskio.c **** Stat = STA_NOINIT; + 38 .loc 1 92 3 is_stmt 1 view .LVU2 + 39 .loc 1 92 8 is_stmt 0 view .LVU3 + 40 0002 074B ldr r3, .L4 + 41 0004 0122 movs r2, #1 + 42 0006 1A70 strb r2, [r3] + 93:Src/sd_diskio.c **** + 94:Src/sd_diskio.c **** if(BSP_SD_GetCardState() == MSD_OK) + 43 .loc 1 94 3 is_stmt 1 view .LVU4 + 44 .loc 1 94 6 is_stmt 0 view .LVU5 + 45 0008 FFF7FEFF bl BSP_SD_GetCardState + 46 .LVL1: + 47 .loc 1 94 5 view .LVU6 + 48 000c 20B9 cbnz r0, .L2 + 95:Src/sd_diskio.c **** { + 96:Src/sd_diskio.c **** Stat &= ~STA_NOINIT; + 49 .loc 1 96 5 is_stmt 1 view .LVU7 + 50 .loc 1 96 10 is_stmt 0 view .LVU8 + 51 000e 044A ldr r2, .L4 + 52 0010 1378 ldrb r3, [r2] @ zero_extendqisi2 + 53 0012 03F0FE03 and r3, r3, #254 + 54 0016 1370 strb r3, [r2] + 55 .L2: + 97:Src/sd_diskio.c **** } + 98:Src/sd_diskio.c **** + 99:Src/sd_diskio.c **** return Stat; + 56 .loc 1 99 3 is_stmt 1 view .LVU9 + 57 .loc 1 99 10 is_stmt 0 view .LVU10 + 58 0018 014B ldr r3, .L4 + 59 001a 1878 ldrb r0, [r3] @ zero_extendqisi2 + 100:Src/sd_diskio.c **** } + 60 .loc 1 100 1 view .LVU11 + 61 001c 08BD pop {r3, pc} + 62 .L5: + 63 001e 00BF .align 2 + 64 .L4: + 65 0020 00000000 .word .LANCHOR0 + 66 .cfi_endproc + 67 .LFE1183: + 69 .section .text.SD_initialize,"ax",%progbits + 70 .align 1 + 71 .global SD_initialize + 72 .syntax unified + 73 .thumb + ARM GAS /tmp/ccixANLj.s page 4 + + + 74 .thumb_func + 75 .fpu fpv5-d16 + 77 SD_initialize: + 78 .LVL2: + 79 .LFB1184: + 101:Src/sd_diskio.c **** + 102:Src/sd_diskio.c **** /** + 103:Src/sd_diskio.c **** * @brief Initializes a Drive + 104:Src/sd_diskio.c **** * @param lun : not used + 105:Src/sd_diskio.c **** * @retval DSTATUS: Operation status + 106:Src/sd_diskio.c **** */ + 107:Src/sd_diskio.c **** DSTATUS SD_initialize(BYTE lun) + 108:Src/sd_diskio.c **** { + 80 .loc 1 108 1 is_stmt 1 view -0 + 81 .cfi_startproc + 82 @ args = 0, pretend = 0, frame = 0 + 83 @ frame_needed = 0, uses_anonymous_args = 0 + 84 .loc 1 108 1 is_stmt 0 view .LVU13 + 85 0000 10B5 push {r4, lr} + 86 .LCFI1: + 87 .cfi_def_cfa_offset 8 + 88 .cfi_offset 4, -8 + 89 .cfi_offset 14, -4 + 90 0002 0446 mov r4, r0 + 109:Src/sd_diskio.c **** Stat = STA_NOINIT; + 91 .loc 1 109 1 is_stmt 1 view .LVU14 + 92 .loc 1 109 6 is_stmt 0 view .LVU15 + 93 0004 074B ldr r3, .L10 + 94 0006 0122 movs r2, #1 + 95 0008 1A70 strb r2, [r3] + 110:Src/sd_diskio.c **** + 111:Src/sd_diskio.c **** #if !defined(DISABLE_SD_INIT) + 112:Src/sd_diskio.c **** + 113:Src/sd_diskio.c **** if(BSP_SD_Init() == MSD_OK) + 96 .loc 1 113 3 is_stmt 1 view .LVU16 + 97 .loc 1 113 6 is_stmt 0 view .LVU17 + 98 000a FFF7FEFF bl BSP_SD_Init + 99 .LVL3: + 100 .loc 1 113 5 view .LVU18 + 101 000e 10B1 cbz r0, .L9 + 102 .L7: + 114:Src/sd_diskio.c **** { + 115:Src/sd_diskio.c **** Stat = SD_CheckStatus(lun); + 116:Src/sd_diskio.c **** } + 117:Src/sd_diskio.c **** + 118:Src/sd_diskio.c **** #else + 119:Src/sd_diskio.c **** Stat = SD_CheckStatus(lun); + 120:Src/sd_diskio.c **** #endif + 121:Src/sd_diskio.c **** + 122:Src/sd_diskio.c **** return Stat; + 103 .loc 1 122 3 is_stmt 1 view .LVU19 + 104 .loc 1 122 10 is_stmt 0 view .LVU20 + 105 0010 044B ldr r3, .L10 + 106 0012 1878 ldrb r0, [r3] @ zero_extendqisi2 + 123:Src/sd_diskio.c **** } + 107 .loc 1 123 1 view .LVU21 + 108 0014 10BD pop {r4, pc} + ARM GAS /tmp/ccixANLj.s page 5 + + + 109 .L9: + 115:Src/sd_diskio.c **** } + 110 .loc 1 115 5 is_stmt 1 view .LVU22 + 115:Src/sd_diskio.c **** } + 111 .loc 1 115 12 is_stmt 0 view .LVU23 + 112 0016 2046 mov r0, r4 + 113 0018 FFF7FEFF bl SD_CheckStatus + 114 .LVL4: + 115:Src/sd_diskio.c **** } + 115 .loc 1 115 10 view .LVU24 + 116 001c 014B ldr r3, .L10 + 117 001e 1870 strb r0, [r3] + 118 0020 F6E7 b .L7 + 119 .L11: + 120 0022 00BF .align 2 + 121 .L10: + 122 0024 00000000 .word .LANCHOR0 + 123 .cfi_endproc + 124 .LFE1184: + 126 .section .text.SD_status,"ax",%progbits + 127 .align 1 + 128 .global SD_status + 129 .syntax unified + 130 .thumb + 131 .thumb_func + 132 .fpu fpv5-d16 + 134 SD_status: + 135 .LVL5: + 136 .LFB1185: + 124:Src/sd_diskio.c **** + 125:Src/sd_diskio.c **** /** + 126:Src/sd_diskio.c **** * @brief Gets Disk Status + 127:Src/sd_diskio.c **** * @param lun : not used + 128:Src/sd_diskio.c **** * @retval DSTATUS: Operation status + 129:Src/sd_diskio.c **** */ + 130:Src/sd_diskio.c **** DSTATUS SD_status(BYTE lun) + 131:Src/sd_diskio.c **** { + 137 .loc 1 131 1 is_stmt 1 view -0 + 138 .cfi_startproc + 139 @ args = 0, pretend = 0, frame = 0 + 140 @ frame_needed = 0, uses_anonymous_args = 0 + 141 .loc 1 131 1 is_stmt 0 view .LVU26 + 142 0000 08B5 push {r3, lr} + 143 .LCFI2: + 144 .cfi_def_cfa_offset 8 + 145 .cfi_offset 3, -8 + 146 .cfi_offset 14, -4 + 132:Src/sd_diskio.c **** return SD_CheckStatus(lun); + 147 .loc 1 132 3 is_stmt 1 view .LVU27 + 148 .loc 1 132 10 is_stmt 0 view .LVU28 + 149 0002 FFF7FEFF bl SD_CheckStatus + 150 .LVL6: + 133:Src/sd_diskio.c **** } + 151 .loc 1 133 1 view .LVU29 + 152 0006 08BD pop {r3, pc} + 153 .cfi_endproc + 154 .LFE1185: + ARM GAS /tmp/ccixANLj.s page 6 + + + 156 .section .text.SD_read,"ax",%progbits + 157 .align 1 + 158 .global SD_read + 159 .syntax unified + 160 .thumb + 161 .thumb_func + 162 .fpu fpv5-d16 + 164 SD_read: + 165 .LVL7: + 166 .LFB1186: + 134:Src/sd_diskio.c **** + 135:Src/sd_diskio.c **** /* USER CODE BEGIN beforeReadSection */ + 136:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */ + 137:Src/sd_diskio.c **** /* USER CODE END beforeReadSection */ + 138:Src/sd_diskio.c **** /** + 139:Src/sd_diskio.c **** * @brief Reads Sector(s) + 140:Src/sd_diskio.c **** * @param lun : not used + 141:Src/sd_diskio.c **** * @param *buff: Data buffer to store read data + 142:Src/sd_diskio.c **** * @param sector: Sector address (LBA) + 143:Src/sd_diskio.c **** * @param count: Number of sectors to read (1..128) + 144:Src/sd_diskio.c **** * @retval DRESULT: Operation result + 145:Src/sd_diskio.c **** */ + 146:Src/sd_diskio.c **** + 147:Src/sd_diskio.c **** DRESULT SD_read(BYTE lun, BYTE *buff, DWORD sector, UINT count) + 148:Src/sd_diskio.c **** { + 167 .loc 1 148 1 is_stmt 1 view -0 + 168 .cfi_startproc + 169 @ args = 0, pretend = 0, frame = 0 + 170 @ frame_needed = 0, uses_anonymous_args = 0 + 171 .loc 1 148 1 is_stmt 0 view .LVU31 + 172 0000 08B5 push {r3, lr} + 173 .LCFI3: + 174 .cfi_def_cfa_offset 8 + 175 .cfi_offset 3, -8 + 176 .cfi_offset 14, -4 + 177 0002 0846 mov r0, r1 + 178 .LVL8: + 179 .loc 1 148 1 view .LVU32 + 180 0004 1146 mov r1, r2 + 181 .LVL9: + 182 .loc 1 148 1 view .LVU33 + 183 0006 1A46 mov r2, r3 + 184 .LVL10: + 149:Src/sd_diskio.c **** DRESULT res = RES_ERROR; + 185 .loc 1 149 3 is_stmt 1 view .LVU34 + 150:Src/sd_diskio.c **** + 151:Src/sd_diskio.c **** if(BSP_SD_ReadBlocks((uint32_t*)buff, + 186 .loc 1 151 3 view .LVU35 + 187 .loc 1 151 6 is_stmt 0 view .LVU36 + 188 0008 4FF0FF33 mov r3, #-1 + 189 .LVL11: + 190 .loc 1 151 6 view .LVU37 + 191 000c FFF7FEFF bl BSP_SD_ReadBlocks + 192 .LVL12: + 193 .loc 1 151 5 view .LVU38 + 194 0010 30B9 cbnz r0, .L17 + 195 .L16: + ARM GAS /tmp/ccixANLj.s page 7 + + + 152:Src/sd_diskio.c **** (uint32_t) (sector), + 153:Src/sd_diskio.c **** count, SD_TIMEOUT) == MSD_OK) + 154:Src/sd_diskio.c **** { + 155:Src/sd_diskio.c **** /* wait until the read operation is finished */ + 156:Src/sd_diskio.c **** while(BSP_SD_GetCardState()!= MSD_OK) + 157:Src/sd_diskio.c **** { + 158:Src/sd_diskio.c **** } + 196 .loc 1 158 5 is_stmt 1 discriminator 1 view .LVU39 + 156:Src/sd_diskio.c **** { + 197 .loc 1 156 10 discriminator 1 view .LVU40 + 156:Src/sd_diskio.c **** { + 198 .loc 1 156 11 is_stmt 0 discriminator 1 view .LVU41 + 199 0012 FFF7FEFF bl BSP_SD_GetCardState + 200 .LVL13: + 156:Src/sd_diskio.c **** { + 201 .loc 1 156 10 discriminator 1 view .LVU42 + 202 0016 0346 mov r3, r0 + 203 0018 0028 cmp r0, #0 + 204 001a FAD1 bne .L16 + 205 .L15: + 206 .LVL14: + 159:Src/sd_diskio.c **** res = RES_OK; + 160:Src/sd_diskio.c **** } + 161:Src/sd_diskio.c **** + 162:Src/sd_diskio.c **** return res; + 207 .loc 1 162 3 is_stmt 1 view .LVU43 + 163:Src/sd_diskio.c **** } + 208 .loc 1 163 1 is_stmt 0 view .LVU44 + 209 001c 1846 mov r0, r3 + 210 001e 08BD pop {r3, pc} + 211 .LVL15: + 212 .L17: + 149:Src/sd_diskio.c **** + 213 .loc 1 149 11 view .LVU45 + 214 0020 0123 movs r3, #1 + 215 0022 FBE7 b .L15 + 216 .cfi_endproc + 217 .LFE1186: + 219 .section .text.SD_write,"ax",%progbits + 220 .align 1 + 221 .global SD_write + 222 .syntax unified + 223 .thumb + 224 .thumb_func + 225 .fpu fpv5-d16 + 227 SD_write: + 228 .LVL16: + 229 .LFB1187: + 164:Src/sd_diskio.c **** + 165:Src/sd_diskio.c **** /* USER CODE BEGIN beforeWriteSection */ + 166:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */ + 167:Src/sd_diskio.c **** /* USER CODE END beforeWriteSection */ + 168:Src/sd_diskio.c **** /** + 169:Src/sd_diskio.c **** * @brief Writes Sector(s) + 170:Src/sd_diskio.c **** * @param lun : not used + 171:Src/sd_diskio.c **** * @param *buff: Data to be written + 172:Src/sd_diskio.c **** * @param sector: Sector address (LBA) + ARM GAS /tmp/ccixANLj.s page 8 + + + 173:Src/sd_diskio.c **** * @param count: Number of sectors to write (1..128) + 174:Src/sd_diskio.c **** * @retval DRESULT: Operation result + 175:Src/sd_diskio.c **** */ + 176:Src/sd_diskio.c **** #if _USE_WRITE == 1 + 177:Src/sd_diskio.c **** + 178:Src/sd_diskio.c **** DRESULT SD_write(BYTE lun, const BYTE *buff, DWORD sector, UINT count) + 179:Src/sd_diskio.c **** { + 230 .loc 1 179 1 is_stmt 1 view -0 + 231 .cfi_startproc + 232 @ args = 0, pretend = 0, frame = 0 + 233 @ frame_needed = 0, uses_anonymous_args = 0 + 234 .loc 1 179 1 is_stmt 0 view .LVU47 + 235 0000 08B5 push {r3, lr} + 236 .LCFI4: + 237 .cfi_def_cfa_offset 8 + 238 .cfi_offset 3, -8 + 239 .cfi_offset 14, -4 + 240 0002 0846 mov r0, r1 + 241 .LVL17: + 242 .loc 1 179 1 view .LVU48 + 243 0004 1146 mov r1, r2 + 244 .LVL18: + 245 .loc 1 179 1 view .LVU49 + 246 0006 1A46 mov r2, r3 + 247 .LVL19: + 180:Src/sd_diskio.c **** DRESULT res = RES_ERROR; + 248 .loc 1 180 3 is_stmt 1 view .LVU50 + 181:Src/sd_diskio.c **** + 182:Src/sd_diskio.c **** if(BSP_SD_WriteBlocks((uint32_t*)buff, + 249 .loc 1 182 3 view .LVU51 + 250 .loc 1 182 6 is_stmt 0 view .LVU52 + 251 0008 4FF0FF33 mov r3, #-1 + 252 .LVL20: + 253 .loc 1 182 6 view .LVU53 + 254 000c FFF7FEFF bl BSP_SD_WriteBlocks + 255 .LVL21: + 256 .loc 1 182 5 view .LVU54 + 257 0010 30B9 cbnz r0, .L22 + 258 .L21: + 183:Src/sd_diskio.c **** (uint32_t)(sector), + 184:Src/sd_diskio.c **** count, SD_TIMEOUT) == MSD_OK) + 185:Src/sd_diskio.c **** { + 186:Src/sd_diskio.c **** /* wait until the Write operation is finished */ + 187:Src/sd_diskio.c **** while(BSP_SD_GetCardState() != MSD_OK) + 188:Src/sd_diskio.c **** { + 189:Src/sd_diskio.c **** } + 259 .loc 1 189 5 is_stmt 1 discriminator 1 view .LVU55 + 187:Src/sd_diskio.c **** { + 260 .loc 1 187 10 discriminator 1 view .LVU56 + 187:Src/sd_diskio.c **** { + 261 .loc 1 187 11 is_stmt 0 discriminator 1 view .LVU57 + 262 0012 FFF7FEFF bl BSP_SD_GetCardState + 263 .LVL22: + 187:Src/sd_diskio.c **** { + 264 .loc 1 187 10 discriminator 1 view .LVU58 + 265 0016 0346 mov r3, r0 + 266 0018 0028 cmp r0, #0 + ARM GAS /tmp/ccixANLj.s page 9 + + + 267 001a FAD1 bne .L21 + 268 .L20: + 269 .LVL23: + 190:Src/sd_diskio.c **** res = RES_OK; + 191:Src/sd_diskio.c **** } + 192:Src/sd_diskio.c **** + 193:Src/sd_diskio.c **** return res; + 270 .loc 1 193 3 is_stmt 1 view .LVU59 + 194:Src/sd_diskio.c **** } + 271 .loc 1 194 1 is_stmt 0 view .LVU60 + 272 001c 1846 mov r0, r3 + 273 001e 08BD pop {r3, pc} + 274 .LVL24: + 275 .L22: + 180:Src/sd_diskio.c **** + 276 .loc 1 180 11 view .LVU61 + 277 0020 0123 movs r3, #1 + 278 0022 FBE7 b .L20 + 279 .cfi_endproc + 280 .LFE1187: + 282 .section .text.SD_ioctl,"ax",%progbits + 283 .align 1 + 284 .global SD_ioctl + 285 .syntax unified + 286 .thumb + 287 .thumb_func + 288 .fpu fpv5-d16 + 290 SD_ioctl: + 291 .LVL25: + 292 .LFB1188: + 195:Src/sd_diskio.c **** #endif /* _USE_WRITE == 1 */ + 196:Src/sd_diskio.c **** + 197:Src/sd_diskio.c **** /* USER CODE BEGIN beforeIoctlSection */ + 198:Src/sd_diskio.c **** /* can be used to modify previous code / undefine following code / add new code */ + 199:Src/sd_diskio.c **** /* USER CODE END beforeIoctlSection */ + 200:Src/sd_diskio.c **** /** + 201:Src/sd_diskio.c **** * @brief I/O control operation + 202:Src/sd_diskio.c **** * @param lun : not used + 203:Src/sd_diskio.c **** * @param cmd: Control code + 204:Src/sd_diskio.c **** * @param *buff: Buffer to send/receive control data + 205:Src/sd_diskio.c **** * @retval DRESULT: Operation result + 206:Src/sd_diskio.c **** */ + 207:Src/sd_diskio.c **** #if _USE_IOCTL == 1 + 208:Src/sd_diskio.c **** DRESULT SD_ioctl(BYTE lun, BYTE cmd, void *buff) + 209:Src/sd_diskio.c **** { + 293 .loc 1 209 1 is_stmt 1 view -0 + 294 .cfi_startproc + 295 @ args = 0, pretend = 0, frame = 32 + 296 @ frame_needed = 0, uses_anonymous_args = 0 + 297 .loc 1 209 1 is_stmt 0 view .LVU63 + 298 0000 30B5 push {r4, r5, lr} + 299 .LCFI5: + 300 .cfi_def_cfa_offset 12 + 301 .cfi_offset 4, -12 + 302 .cfi_offset 5, -8 + 303 .cfi_offset 14, -4 + 304 0002 89B0 sub sp, sp, #36 + ARM GAS /tmp/ccixANLj.s page 10 + + + 305 .LCFI6: + 306 .cfi_def_cfa_offset 48 + 210:Src/sd_diskio.c **** DRESULT res = RES_ERROR; + 307 .loc 1 210 3 is_stmt 1 view .LVU64 + 308 .LVL26: + 211:Src/sd_diskio.c **** BSP_SD_CardInfo CardInfo; + 309 .loc 1 211 3 view .LVU65 + 212:Src/sd_diskio.c **** + 213:Src/sd_diskio.c **** if (Stat & STA_NOINIT) return RES_NOTRDY; + 310 .loc 1 213 3 view .LVU66 + 311 .loc 1 213 12 is_stmt 0 view .LVU67 + 312 0004 134B ldr r3, .L34 + 313 0006 1878 ldrb r0, [r3] @ zero_extendqisi2 + 314 .LVL27: + 315 .loc 1 213 6 view .LVU68 + 316 0008 10F00104 ands r4, r0, #1 + 317 000c 1BD1 bne .L31 + 318 000e 1546 mov r5, r2 + 214:Src/sd_diskio.c **** + 215:Src/sd_diskio.c **** switch (cmd) + 319 .loc 1 215 3 is_stmt 1 view .LVU69 + 320 0010 0329 cmp r1, #3 + 321 0012 1CD8 bhi .L32 + 322 0014 DFE801F0 tbb [pc, r1] + 323 .L27: + 324 0018 02 .byte (.L30-.L27)/2 + 325 0019 04 .byte (.L29-.L27)/2 + 326 001a 0A .byte (.L28-.L27)/2 + 327 001b 10 .byte (.L26-.L27)/2 + 328 .p2align 1 + 329 .L30: + 330 001c 0C46 mov r4, r1 + 331 001e 13E0 b .L25 + 332 .L29: + 216:Src/sd_diskio.c **** { + 217:Src/sd_diskio.c **** /* Make sure that no pending write process */ + 218:Src/sd_diskio.c **** case CTRL_SYNC : + 219:Src/sd_diskio.c **** res = RES_OK; + 220:Src/sd_diskio.c **** break; + 221:Src/sd_diskio.c **** + 222:Src/sd_diskio.c **** /* Get number of sectors on the disk (DWORD) */ + 223:Src/sd_diskio.c **** case GET_SECTOR_COUNT : + 224:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo); + 333 .loc 1 224 5 view .LVU70 + 334 0020 6846 mov r0, sp + 335 0022 FFF7FEFF bl BSP_SD_GetCardInfo + 336 .LVL28: + 225:Src/sd_diskio.c **** *(DWORD*)buff = CardInfo.LogBlockNbr; + 337 .loc 1 225 5 view .LVU71 + 338 .loc 1 225 29 is_stmt 0 view .LVU72 + 339 0026 069B ldr r3, [sp, #24] + 340 .loc 1 225 19 view .LVU73 + 341 0028 2B60 str r3, [r5] + 226:Src/sd_diskio.c **** res = RES_OK; + 342 .loc 1 226 5 is_stmt 1 view .LVU74 + 343 .LVL29: + 227:Src/sd_diskio.c **** break; + ARM GAS /tmp/ccixANLj.s page 11 + + + 344 .loc 1 227 5 view .LVU75 + 345 002a 0DE0 b .L25 + 346 .LVL30: + 347 .L28: + 228:Src/sd_diskio.c **** + 229:Src/sd_diskio.c **** /* Get R/W sector size (WORD) */ + 230:Src/sd_diskio.c **** case GET_SECTOR_SIZE : + 231:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo); + 348 .loc 1 231 5 view .LVU76 + 349 002c 6846 mov r0, sp + 350 002e FFF7FEFF bl BSP_SD_GetCardInfo + 351 .LVL31: + 232:Src/sd_diskio.c **** *(WORD*)buff = CardInfo.LogBlockSize; + 352 .loc 1 232 5 view .LVU77 + 353 .loc 1 232 28 is_stmt 0 view .LVU78 + 354 0032 079B ldr r3, [sp, #28] + 355 .loc 1 232 18 view .LVU79 + 356 0034 2B80 strh r3, [r5] @ movhi + 233:Src/sd_diskio.c **** res = RES_OK; + 357 .loc 1 233 5 is_stmt 1 view .LVU80 + 358 .LVL32: + 234:Src/sd_diskio.c **** break; + 359 .loc 1 234 5 view .LVU81 + 360 0036 07E0 b .L25 + 361 .LVL33: + 362 .L26: + 235:Src/sd_diskio.c **** + 236:Src/sd_diskio.c **** /* Get erase block size in unit of sector (DWORD) */ + 237:Src/sd_diskio.c **** case GET_BLOCK_SIZE : + 238:Src/sd_diskio.c **** BSP_SD_GetCardInfo(&CardInfo); + 363 .loc 1 238 5 view .LVU82 + 364 0038 6846 mov r0, sp + 365 003a FFF7FEFF bl BSP_SD_GetCardInfo + 366 .LVL34: + 239:Src/sd_diskio.c **** *(DWORD*)buff = CardInfo.LogBlockSize / SD_DEFAULT_BLOCK_SIZE; + 367 .loc 1 239 5 view .LVU83 + 368 .loc 1 239 29 is_stmt 0 view .LVU84 + 369 003e 079B ldr r3, [sp, #28] + 370 .loc 1 239 43 view .LVU85 + 371 0040 5B0A lsrs r3, r3, #9 + 372 .loc 1 239 19 view .LVU86 + 373 0042 2B60 str r3, [r5] + 240:Src/sd_diskio.c **** res = RES_OK; + 374 .loc 1 240 5 is_stmt 1 view .LVU87 + 375 .LVL35: + 241:Src/sd_diskio.c **** break; + 376 .loc 1 241 5 view .LVU88 + 377 0044 00E0 b .L25 + 378 .LVL36: + 379 .L31: + 213:Src/sd_diskio.c **** + 380 .loc 1 213 33 is_stmt 0 view .LVU89 + 381 0046 0324 movs r4, #3 + 382 .LVL37: + 383 .L25: + 242:Src/sd_diskio.c **** + 243:Src/sd_diskio.c **** default: + ARM GAS /tmp/ccixANLj.s page 12 + + + 244:Src/sd_diskio.c **** res = RES_PARERR; + 245:Src/sd_diskio.c **** } + 246:Src/sd_diskio.c **** + 247:Src/sd_diskio.c **** return res; + 248:Src/sd_diskio.c **** } + 384 .loc 1 248 1 view .LVU90 + 385 0048 2046 mov r0, r4 + 386 004a 09B0 add sp, sp, #36 + 387 .LCFI7: + 388 .cfi_remember_state + 389 .cfi_def_cfa_offset 12 + 390 @ sp needed + 391 004c 30BD pop {r4, r5, pc} + 392 .LVL38: + 393 .L32: + 394 .LCFI8: + 395 .cfi_restore_state + 244:Src/sd_diskio.c **** } + 396 .loc 1 244 9 view .LVU91 + 397 004e 0424 movs r4, #4 + 398 0050 FAE7 b .L25 + 399 .L35: + 400 0052 00BF .align 2 + 401 .L34: + 402 0054 00000000 .word .LANCHOR0 + 403 .cfi_endproc + 404 .LFE1188: + 406 .global SD_Driver + 407 .section .data.Stat,"aw" + 408 .set .LANCHOR0,. + 0 + 411 Stat: + 412 0000 01 .byte 1 + 413 .section .rodata.SD_Driver,"a" + 414 .align 2 + 417 SD_Driver: + 418 0000 00000000 .word SD_initialize + 419 0004 00000000 .word SD_status + 420 0008 00000000 .word SD_read + 421 000c 00000000 .word SD_write + 422 0010 00000000 .word SD_ioctl + 423 .text + 424 .Letext0: + 425 .file 2 "Middlewares/Third_Party/FatFs/src/integer.h" + 426 .file 3 "Middlewares/Third_Party/FatFs/src/diskio.h" + 427 .file 4 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 428 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h" + 429 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" + 430 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" + 431 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 432 .file 9 "Middlewares/Third_Party/FatFs/src/ff_gen_drv.h" + 433 .file 10 "Inc/bsp_driver_sd.h" + 434 .file 11 "Inc/sd_diskio.h" + ARM GAS /tmp/ccixANLj.s page 13 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 sd_diskio.c + /tmp/ccixANLj.s:17 .text.SD_CheckStatus:0000000000000000 $t + /tmp/ccixANLj.s:24 .text.SD_CheckStatus:0000000000000000 SD_CheckStatus + /tmp/ccixANLj.s:65 .text.SD_CheckStatus:0000000000000020 $d + /tmp/ccixANLj.s:70 .text.SD_initialize:0000000000000000 $t + /tmp/ccixANLj.s:77 .text.SD_initialize:0000000000000000 SD_initialize + /tmp/ccixANLj.s:122 .text.SD_initialize:0000000000000024 $d + /tmp/ccixANLj.s:127 .text.SD_status:0000000000000000 $t + /tmp/ccixANLj.s:134 .text.SD_status:0000000000000000 SD_status + /tmp/ccixANLj.s:157 .text.SD_read:0000000000000000 $t + /tmp/ccixANLj.s:164 .text.SD_read:0000000000000000 SD_read + /tmp/ccixANLj.s:220 .text.SD_write:0000000000000000 $t + /tmp/ccixANLj.s:227 .text.SD_write:0000000000000000 SD_write + /tmp/ccixANLj.s:283 .text.SD_ioctl:0000000000000000 $t + /tmp/ccixANLj.s:290 .text.SD_ioctl:0000000000000000 SD_ioctl + /tmp/ccixANLj.s:324 .text.SD_ioctl:0000000000000018 $d + /tmp/ccixANLj.s:328 .text.SD_ioctl:000000000000001c $t + /tmp/ccixANLj.s:402 .text.SD_ioctl:0000000000000054 $d + /tmp/ccixANLj.s:417 .rodata.SD_Driver:0000000000000000 SD_Driver + /tmp/ccixANLj.s:411 .data.Stat:0000000000000000 Stat + /tmp/ccixANLj.s:414 .rodata.SD_Driver:0000000000000000 $d + +UNDEFINED SYMBOLS +BSP_SD_GetCardState +BSP_SD_Init +BSP_SD_ReadBlocks +BSP_SD_WriteBlocks +BSP_SD_GetCardInfo diff --git a/build/sd_diskio.o b/build/sd_diskio.o new file mode 100644 index 0000000..26ca4d2 Binary files /dev/null and b/build/sd_diskio.o differ diff --git a/build/startup_stm32f767xx.d b/build/startup_stm32f767xx.d new file mode 100644 index 0000000..0be54eb --- /dev/null +++ b/build/startup_stm32f767xx.d @@ -0,0 +1 @@ +build/startup_stm32f767xx.o: startup_stm32f767xx.s diff --git a/build/startup_stm32f767xx.o b/build/startup_stm32f767xx.o new file mode 100644 index 0000000..699122c Binary files /dev/null and b/build/startup_stm32f767xx.o differ diff --git a/build/stm32f7xx_hal.d b/build/stm32f7xx_hal.d new file mode 100644 index 0000000..75bd47e --- /dev/null +++ b/build/stm32f7xx_hal.d @@ -0,0 +1,63 @@ +build/stm32f7xx_hal.o: Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal.lst b/build/stm32f7xx_hal.lst new file mode 100644 index 0000000..8615bf3 --- /dev/null +++ b/build/stm32f7xx_hal.lst @@ -0,0 +1,1844 @@ +ARM GAS /tmp/cceuBEQV.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.HAL_MspInit,"ax",%progbits + 17 .align 1 + 18 .weak HAL_MspInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 HAL_MspInit: + 26 .LFB143: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @file stm32f7xx_hal.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * This is the common part of the HAL initialization + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** ****************************************************************************** + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @attention + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * Copyright (c) 2017 STMicroelectronics. + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * All rights reserved. + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * This software is licensed under terms that can be found in the LICENSE file + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * in the root directory of this software component. + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** ****************************************************************************** + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** @verbatim + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** ============================================================================== + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** ##### How to use this driver ##### + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** ============================================================================== + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** [..] + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** The common HAL driver contains a set of generic and common APIs that can be + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** used by the PPP peripheral drivers and the user to start using the HAL. + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** [..] + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** The HAL contains two APIs' categories: + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Common HAL APIs + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Services HAL APIs + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** @endverbatim + ARM GAS /tmp/cceuBEQV.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** ****************************************************************************** + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Includes ------------------------------------------------------------------*/ + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #include "stm32f7xx_hal.h" + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** @addtogroup STM32F7xx_HAL_Driver + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @{ + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** @defgroup HAL HAL + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief HAL module driver. + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @{ + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Private typedef -----------------------------------------------------------*/ + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Private define ------------------------------------------------------------*/ + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** @addtogroup HAL_Private_Constants + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @{ + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief STM32F7xx HAL Driver version number V1.3.1 + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #define __STM32F7xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */ + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #define __STM32F7xx_HAL_VERSION_SUB1 (0x03) /*!< [23:16] sub1 version */ + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #define __STM32F7xx_HAL_VERSION_SUB2 (0x01) /*!< [15:8] sub2 version */ + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #define __STM32F7xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */ + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #define __STM32F7xx_HAL_VERSION ((__STM32F7xx_HAL_VERSION_MAIN << 24)\ + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** |(__STM32F7xx_HAL_VERSION_SUB1 << 16)\ + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** |(__STM32F7xx_HAL_VERSION_SUB2 << 8 )\ + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** |(__STM32F7xx_HAL_VERSION_RC)) + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #define IDCODE_DEVID_MASK ((uint32_t)0x00000FFF) + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @} + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Private macro -------------------------------------------------------------*/ + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Exported variables ---------------------------------------------------------*/ + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** @addtogroup HAL_Exported_Variables + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @{ + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __IO uint32_t uwTick; + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uint32_t uwTickPrio = (1UL << __NVIC_PRIO_BITS); /* Invalid PRIO */ + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_TickFreqTypeDef uwTickFreq = HAL_TICK_FREQ_DEFAULT; /* 1KHz */ + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @} + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Private function prototypes -----------------------------------------------*/ + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Private functions ---------------------------------------------------------*/ + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** @defgroup HAL_Exported_Functions HAL Exported Functions + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @{ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** @defgroup HAL_Exported_Functions_Group1 Initialization and de-initialization Functions + ARM GAS /tmp/cceuBEQV.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Initialization and de-initialization functions + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** @verbatim + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** =============================================================================== + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** ##### Initialization and Configuration functions ##### + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** =============================================================================== + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** [..] This section provides functions allowing to: + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Initializes the Flash interface the NVIC allocation and initial clock + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** configuration. It initializes the systick also when timeout is needed + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** and the backup domain when enabled. + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) De-Initializes common part of the HAL. + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Configure the time base source to have 1ms time base with a dedicated + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** Tick interrupt priority. + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (++) SysTick timer is used by default as source of time base, but user + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** can eventually implement his proper time base source (a general purpose + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** timer for example or other time source), keeping in mind that Time base + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** handled in milliseconds basis. + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (++) Time base configuration function (HAL_InitTick ()) is called automatically + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** at the beginning of the program after reset by HAL_Init() or at any time + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** when clock is configured, by HAL_RCC_ClockConfig(). + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (++) Source of time base is configured to generate interrupts at regular + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** time intervals. Care must be taken if HAL_Delay() is called from a + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** peripheral ISR process, the Tick interrupt line must have higher priority + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (numerically lower) than the peripheral interrupt. Otherwise the caller + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** ISR process will be blocked. + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (++) functions affecting time base configurations are declared as __weak + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** to make override possible in case of other implementations in user file. + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** @endverbatim + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @{ + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief This function is used to initialize the HAL Library; it must be the first + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * instruction to be executed in the main program (before to call any other + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * HAL function), it performs the following: + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * Configure the Flash prefetch, and instruction cache through ART accelerator. + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * Configures the SysTick to generate an interrupt each 1 millisecond, + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * which is clocked by the HSI (at this stage, the clock is not yet + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * configured and thus the system is running from the internal HSI at 16 MHz). + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * Set NVIC Group Priority to 4. + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * Calls the HAL_MspInit() callback function defined in user file + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * "stm32f7xx_hal_msp.c" to do the global low level hardware initialization + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note SysTick is used as time base for the HAL_Delay() function, the application + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * need to ensure that the SysTick time base is always set to 1 millisecond + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * to have correct HAL operation. + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval HAL status + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_StatusTypeDef HAL_Init(void) + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Configure Instruction cache through ART accelerator */ + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #if (ART_ACCELERATOR_ENABLE != 0) + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_FLASH_ART_ENABLE(); + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #endif /* ART_ACCELERATOR_ENABLE */ + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Configure Flash prefetch */ + ARM GAS /tmp/cceuBEQV.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #if (PREFETCH_ENABLE != 0U) + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_FLASH_PREFETCH_BUFFER_ENABLE(); + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #endif /* PREFETCH_ENABLE */ + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Set Interrupt Group Priority */ + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_InitTick(TICK_INT_PRIORITY); + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Init the low level hardware */ + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_MspInit(); + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Return function status */ + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return HAL_OK; + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief This function de-Initializes common part of the HAL and stops the systick. + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * This function is optional. + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval HAL status + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_StatusTypeDef HAL_DeInit(void) + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Reset of all peripherals */ + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_APB1_FORCE_RESET(); + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_APB1_RELEASE_RESET(); + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_APB2_FORCE_RESET(); + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_APB2_RELEASE_RESET(); + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_AHB1_FORCE_RESET(); + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_AHB1_RELEASE_RESET(); + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_AHB2_FORCE_RESET(); + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_AHB2_RELEASE_RESET(); + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_AHB3_FORCE_RESET(); + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_AHB3_RELEASE_RESET(); + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* De-Init the low level hardware */ + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_MspDeInit(); + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Return function status */ + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return HAL_OK; + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Initialize the MSP. + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __weak void HAL_MspInit(void) + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 28 .loc 1 198 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/cceuBEQV.s page 5 + + + 32 @ link register save eliminated. + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* NOTE : This function should not be modified, when the callback is needed, + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** the HAL_MspInit could be implemented in the user file + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 33 .loc 1 202 1 view .LVU1 + 34 0000 7047 bx lr + 35 .cfi_endproc + 36 .LFE143: + 38 .section .text.HAL_MspDeInit,"ax",%progbits + 39 .align 1 + 40 .weak HAL_MspDeInit + 41 .syntax unified + 42 .thumb + 43 .thumb_func + 44 .fpu fpv5-d16 + 46 HAL_MspDeInit: + 47 .LFB144: + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief DeInitializes the MSP. + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __weak void HAL_MspDeInit(void) + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 48 .loc 1 209 1 view -0 + 49 .cfi_startproc + 50 @ args = 0, pretend = 0, frame = 0 + 51 @ frame_needed = 0, uses_anonymous_args = 0 + 52 @ link register save eliminated. + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* NOTE : This function should not be modified, when the callback is needed, + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** the HAL_MspDeInit could be implemented in the user file + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 53 .loc 1 213 1 view .LVU3 + 54 0000 7047 bx lr + 55 .cfi_endproc + 56 .LFE144: + 58 .section .text.HAL_DeInit,"ax",%progbits + 59 .align 1 + 60 .global HAL_DeInit + 61 .syntax unified + 62 .thumb + 63 .thumb_func + 64 .fpu fpv5-d16 + 66 HAL_DeInit: + 67 .LFB142: + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Reset of all peripherals */ + 68 .loc 1 169 1 view -0 + 69 .cfi_startproc + 70 @ args = 0, pretend = 0, frame = 0 + 71 @ frame_needed = 0, uses_anonymous_args = 0 + 72 0000 10B5 push {r4, lr} + 73 .LCFI0: + 74 .cfi_def_cfa_offset 8 + 75 .cfi_offset 4, -8 + 76 .cfi_offset 14, -4 + ARM GAS /tmp/cceuBEQV.s page 6 + + + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_APB1_RELEASE_RESET(); + 77 .loc 1 171 3 view .LVU5 + 78 0002 094B ldr r3, .L5 + 79 0004 4FF0FF32 mov r2, #-1 + 80 0008 1A62 str r2, [r3, #32] + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 81 .loc 1 172 3 view .LVU6 + 82 000a 0024 movs r4, #0 + 83 000c 1C62 str r4, [r3, #32] + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_APB2_RELEASE_RESET(); + 84 .loc 1 174 3 view .LVU7 + 85 000e 5A62 str r2, [r3, #36] + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 86 .loc 1 175 3 view .LVU8 + 87 0010 5C62 str r4, [r3, #36] + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_AHB1_RELEASE_RESET(); + 88 .loc 1 177 3 view .LVU9 + 89 0012 1A61 str r2, [r3, #16] + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 90 .loc 1 178 3 view .LVU10 + 91 0014 1C61 str r4, [r3, #16] + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_AHB2_RELEASE_RESET(); + 92 .loc 1 180 3 view .LVU11 + 93 0016 5A61 str r2, [r3, #20] + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 94 .loc 1 181 3 view .LVU12 + 95 0018 5C61 str r4, [r3, #20] + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __HAL_RCC_AHB3_RELEASE_RESET(); + 96 .loc 1 183 3 view .LVU13 + 97 001a 9A61 str r2, [r3, #24] + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 98 .loc 1 184 3 view .LVU14 + 99 001c 9C61 str r4, [r3, #24] + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 100 .loc 1 187 3 view .LVU15 + 101 001e FFF7FEFF bl HAL_MspDeInit + 102 .LVL0: + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 103 .loc 1 190 3 view .LVU16 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 104 .loc 1 191 1 is_stmt 0 view .LVU17 + 105 0022 2046 mov r0, r4 + 106 0024 10BD pop {r4, pc} + 107 .L6: + 108 0026 00BF .align 2 + 109 .L5: + 110 0028 00380240 .word 1073887232 + 111 .cfi_endproc + 112 .LFE142: + 114 .section .text.HAL_InitTick,"ax",%progbits + 115 .align 1 + 116 .weak HAL_InitTick + 117 .syntax unified + 118 .thumb + 119 .thumb_func + 120 .fpu fpv5-d16 + 122 HAL_InitTick: + ARM GAS /tmp/cceuBEQV.s page 7 + + + 123 .LVL1: + 124 .LFB145: + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief This function configures the source of the time base. + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * The time source is configured to have 1ms time base with a dedicated + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * Tick interrupt priority. + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note This function is called automatically at the beginning of program after + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * reset by HAL_Init() or at any time when clock is reconfigured by HAL_RCC_ClockConfig(). + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note In the default implementation, SysTick timer is the source of time base. + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * It is used to generate interrupts at regular time intervals. + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * Care must be taken if HAL_Delay() is called from a peripheral ISR process, + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * The SysTick interrupt must have higher priority (numerically lower) + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * than the peripheral interrupt. Otherwise the caller ISR process will be blocked. + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * The function is declared as __weak to be overwritten in case of other + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * implementation in user file. + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @param TickPriority Tick interrupt priority. + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval HAL status + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 125 .loc 1 232 1 is_stmt 1 view -0 + 126 .cfi_startproc + 127 @ args = 0, pretend = 0, frame = 0 + 128 @ frame_needed = 0, uses_anonymous_args = 0 + 129 .loc 1 232 1 is_stmt 0 view .LVU19 + 130 0000 10B5 push {r4, lr} + 131 .LCFI1: + 132 .cfi_def_cfa_offset 8 + 133 .cfi_offset 4, -8 + 134 .cfi_offset 14, -4 + 135 0002 0446 mov r4, r0 + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Configure the SysTick to have interrupt in 1ms time basis*/ + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U) + 136 .loc 1 234 3 is_stmt 1 view .LVU20 + 137 .loc 1 234 51 is_stmt 0 view .LVU21 + 138 0004 0E4B ldr r3, .L13 + 139 0006 1878 ldrb r0, [r3] @ zero_extendqisi2 + 140 .LVL2: + 141 .loc 1 234 51 view .LVU22 + 142 0008 4FF47A73 mov r3, #1000 + 143 000c B3FBF0F3 udiv r3, r3, r0 + 144 .loc 1 234 7 view .LVU23 + 145 0010 0C4A ldr r2, .L13+4 + 146 0012 1068 ldr r0, [r2] + 147 0014 B0FBF3F0 udiv r0, r0, r3 + 148 0018 FFF7FEFF bl HAL_SYSTICK_Config + 149 .LVL3: + 150 .loc 1 234 6 view .LVU24 + 151 001c 68B9 cbnz r0, .L9 + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return HAL_ERROR; + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Configure the SysTick IRQ priority */ + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** if (TickPriority < (1UL << __NVIC_PRIO_BITS)) + 152 .loc 1 240 3 is_stmt 1 view .LVU25 + ARM GAS /tmp/cceuBEQV.s page 8 + + + 153 .loc 1 240 6 is_stmt 0 view .LVU26 + 154 001e 0F2C cmp r4, #15 + 155 0020 01D9 bls .L12 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uwTickPrio = TickPriority; + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** else + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return HAL_ERROR; + 156 .loc 1 247 12 view .LVU27 + 157 0022 0120 movs r0, #1 + 158 0024 0AE0 b .L8 + 159 .L12: + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uwTickPrio = TickPriority; + 160 .loc 1 242 5 is_stmt 1 view .LVU28 + 161 0026 0022 movs r2, #0 + 162 0028 2146 mov r1, r4 + 163 002a 4FF0FF30 mov r0, #-1 + 164 002e FFF7FEFF bl HAL_NVIC_SetPriority + 165 .LVL4: + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 166 .loc 1 243 5 view .LVU29 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 167 .loc 1 243 16 is_stmt 0 view .LVU30 + 168 0032 054B ldr r3, .L13+8 + 169 0034 1C60 str r4, [r3] + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Return function status */ + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return HAL_OK; + 170 .loc 1 251 3 is_stmt 1 view .LVU31 + 171 .loc 1 251 10 is_stmt 0 view .LVU32 + 172 0036 0020 movs r0, #0 + 173 0038 00E0 b .L8 + 174 .L9: + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 175 .loc 1 236 12 view .LVU33 + 176 003a 0120 movs r0, #1 + 177 .L8: + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 178 .loc 1 252 1 view .LVU34 + 179 003c 10BD pop {r4, pc} + 180 .LVL5: + 181 .L14: + 182 .loc 1 252 1 view .LVU35 + 183 003e 00BF .align 2 + 184 .L13: + 185 0040 00000000 .word .LANCHOR0 + 186 0044 00000000 .word SystemCoreClock + 187 0048 00000000 .word .LANCHOR1 + 188 .cfi_endproc + 189 .LFE145: + 191 .section .text.HAL_Init,"ax",%progbits + 192 .align 1 + 193 .global HAL_Init + 194 .syntax unified + ARM GAS /tmp/cceuBEQV.s page 9 + + + 195 .thumb + 196 .thumb_func + 197 .fpu fpv5-d16 + 199 HAL_Init: + 200 .LFB141: + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Configure Instruction cache through ART accelerator */ + 201 .loc 1 139 1 is_stmt 1 view -0 + 202 .cfi_startproc + 203 @ args = 0, pretend = 0, frame = 0 + 204 @ frame_needed = 0, uses_anonymous_args = 0 + 205 0000 08B5 push {r3, lr} + 206 .LCFI2: + 207 .cfi_def_cfa_offset 8 + 208 .cfi_offset 3, -8 + 209 .cfi_offset 14, -4 + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 210 .loc 1 151 3 view .LVU37 + 211 0002 0320 movs r0, #3 + 212 0004 FFF7FEFF bl HAL_NVIC_SetPriorityGrouping + 213 .LVL6: + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 214 .loc 1 154 3 view .LVU38 + 215 0008 0020 movs r0, #0 + 216 000a FFF7FEFF bl HAL_InitTick + 217 .LVL7: + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 218 .loc 1 157 3 view .LVU39 + 219 000e FFF7FEFF bl HAL_MspInit + 220 .LVL8: + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 221 .loc 1 160 3 view .LVU40 + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 222 .loc 1 161 1 is_stmt 0 view .LVU41 + 223 0012 0020 movs r0, #0 + 224 0014 08BD pop {r3, pc} + 225 .cfi_endproc + 226 .LFE141: + 228 .section .text.HAL_IncTick,"ax",%progbits + 229 .align 1 + 230 .weak HAL_IncTick + 231 .syntax unified + 232 .thumb + 233 .thumb_func + 234 .fpu fpv5-d16 + 236 HAL_IncTick: + 237 .LFB146: + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @} + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** @defgroup HAL_Exported_Functions_Group2 HAL Control functions + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief HAL Control functions + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** @verbatim + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** =============================================================================== + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** ##### HAL Control functions ##### + ARM GAS /tmp/cceuBEQV.s page 10 + + + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** =============================================================================== + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** [..] This section provides functions allowing to: + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Provide a tick value in millisecond + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Provide a blocking delay in millisecond + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Suspend the time base source interrupt + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Resume the time base source interrupt + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Get the HAL API driver version + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Get the device identifier + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Get the device revision identifier + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Enable/Disable Debug module during SLEEP mode + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Enable/Disable Debug module during STOP mode + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** (+) Enable/Disable Debug module during STANDBY mode + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** @endverbatim + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @{ + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief This function is called to increment a global variable "uwTick" + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * used as application time base. + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note In the default implementation, this variable is incremented each 1ms + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * in SysTick ISR. + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note This function is declared as __weak to be overwritten in case of other + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * implementations in user file. + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __weak void HAL_IncTick(void) + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 238 .loc 1 291 1 is_stmt 1 view -0 + 239 .cfi_startproc + 240 @ args = 0, pretend = 0, frame = 0 + 241 @ frame_needed = 0, uses_anonymous_args = 0 + 242 @ link register save eliminated. + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uwTick += uwTickFreq; + 243 .loc 1 292 3 view .LVU43 + 244 .loc 1 292 10 is_stmt 0 view .LVU44 + 245 0000 034A ldr r2, .L18 + 246 0002 1168 ldr r1, [r2] + 247 0004 034B ldr r3, .L18+4 + 248 0006 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 249 0008 0B44 add r3, r3, r1 + 250 000a 1360 str r3, [r2] + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 251 .loc 1 293 1 view .LVU45 + 252 000c 7047 bx lr + 253 .L19: + 254 000e 00BF .align 2 + 255 .L18: + 256 0010 00000000 .word .LANCHOR2 + 257 0014 00000000 .word .LANCHOR0 + 258 .cfi_endproc + 259 .LFE146: + 261 .section .text.HAL_GetTick,"ax",%progbits + 262 .align 1 + 263 .weak HAL_GetTick + 264 .syntax unified + 265 .thumb + ARM GAS /tmp/cceuBEQV.s page 11 + + + 266 .thumb_func + 267 .fpu fpv5-d16 + 269 HAL_GetTick: + 270 .LFB147: + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Provides a tick value in millisecond. + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note This function is declared as __weak to be overwritten in case of other + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * implementations in user file. + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval tick value + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __weak uint32_t HAL_GetTick(void) + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 271 .loc 1 302 1 is_stmt 1 view -0 + 272 .cfi_startproc + 273 @ args = 0, pretend = 0, frame = 0 + 274 @ frame_needed = 0, uses_anonymous_args = 0 + 275 @ link register save eliminated. + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return uwTick; + 276 .loc 1 303 3 view .LVU47 + 277 .loc 1 303 10 is_stmt 0 view .LVU48 + 278 0000 014B ldr r3, .L21 + 279 0002 1868 ldr r0, [r3] + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 280 .loc 1 304 1 view .LVU49 + 281 0004 7047 bx lr + 282 .L22: + 283 0006 00BF .align 2 + 284 .L21: + 285 0008 00000000 .word .LANCHOR2 + 286 .cfi_endproc + 287 .LFE147: + 289 .section .text.HAL_GetTickPrio,"ax",%progbits + 290 .align 1 + 291 .global HAL_GetTickPrio + 292 .syntax unified + 293 .thumb + 294 .thumb_func + 295 .fpu fpv5-d16 + 297 HAL_GetTickPrio: + 298 .LFB148: + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief This function returns a tick priority. + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval tick priority + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uint32_t HAL_GetTickPrio(void) + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 299 .loc 1 311 1 is_stmt 1 view -0 + 300 .cfi_startproc + 301 @ args = 0, pretend = 0, frame = 0 + 302 @ frame_needed = 0, uses_anonymous_args = 0 + 303 @ link register save eliminated. + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return uwTickPrio; + 304 .loc 1 312 3 view .LVU51 + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 305 .loc 1 313 1 is_stmt 0 view .LVU52 + ARM GAS /tmp/cceuBEQV.s page 12 + + + 306 0000 014B ldr r3, .L24 + 307 0002 1868 ldr r0, [r3] + 308 0004 7047 bx lr + 309 .L25: + 310 0006 00BF .align 2 + 311 .L24: + 312 0008 00000000 .word .LANCHOR1 + 313 .cfi_endproc + 314 .LFE148: + 316 .section .text.HAL_SetTickFreq,"ax",%progbits + 317 .align 1 + 318 .global HAL_SetTickFreq + 319 .syntax unified + 320 .thumb + 321 .thumb_func + 322 .fpu fpv5-d16 + 324 HAL_SetTickFreq: + 325 .LVL9: + 326 .LFB149: + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Set new tick Freq. + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval Status + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq) + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 327 .loc 1 320 1 is_stmt 1 view -0 + 328 .cfi_startproc + 329 @ args = 0, pretend = 0, frame = 0 + 330 @ frame_needed = 0, uses_anonymous_args = 0 + 331 .loc 1 320 1 is_stmt 0 view .LVU54 + 332 0000 10B5 push {r4, lr} + 333 .LCFI3: + 334 .cfi_def_cfa_offset 8 + 335 .cfi_offset 4, -8 + 336 .cfi_offset 14, -4 + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_StatusTypeDef status = HAL_OK; + 337 .loc 1 321 3 is_stmt 1 view .LVU55 + 338 .LVL10: + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_TickFreqTypeDef prevTickFreq; + 339 .loc 1 322 3 view .LVU56 + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** assert_param(IS_TICKFREQ(Freq)); + 340 .loc 1 324 3 view .LVU57 + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** if (uwTickFreq != Freq) + 341 .loc 1 326 3 view .LVU58 + 342 .loc 1 326 18 is_stmt 0 view .LVU59 + 343 0002 084B ldr r3, .L31 + 344 0004 1C78 ldrb r4, [r3] @ zero_extendqisi2 + 345 .loc 1 326 6 view .LVU60 + 346 0006 8442 cmp r4, r0 + 347 0008 01D1 bne .L30 + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_TickFreqTypeDef prevTickFreq; + 348 .loc 1 321 21 view .LVU61 + 349 000a 0020 movs r0, #0 + 350 .LVL11: + ARM GAS /tmp/cceuBEQV.s page 13 + + + 351 .L27: + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Back up uwTickFreq frequency */ + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** prevTickFreq = uwTickFreq; + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Update uwTickFreq global variable used by HAL_InitTick() */ + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uwTickFreq = Freq; + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Apply the new tick Freq */ + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** status = HAL_InitTick(uwTickPrio); + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** if (status != HAL_OK) + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Restore previous tick frequency */ + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uwTickFreq = prevTickFreq; + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return status; + 352 .loc 1 344 3 is_stmt 1 view .LVU62 + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 353 .loc 1 345 1 is_stmt 0 view .LVU63 + 354 000c 10BD pop {r4, pc} + 355 .LVL12: + 356 .L30: + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 357 .loc 1 329 5 is_stmt 1 view .LVU64 + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 358 .loc 1 332 5 view .LVU65 + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 359 .loc 1 332 16 is_stmt 0 view .LVU66 + 360 000e 1870 strb r0, [r3] + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 361 .loc 1 335 5 is_stmt 1 view .LVU67 + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 362 .loc 1 335 14 is_stmt 0 view .LVU68 + 363 0010 054B ldr r3, .L31+4 + 364 0012 1868 ldr r0, [r3] + 365 .LVL13: + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 366 .loc 1 335 14 view .LVU69 + 367 0014 FFF7FEFF bl HAL_InitTick + 368 .LVL14: + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 369 .loc 1 337 5 is_stmt 1 view .LVU70 + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 370 .loc 1 337 8 is_stmt 0 view .LVU71 + 371 0018 0028 cmp r0, #0 + 372 001a F7D0 beq .L27 + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 373 .loc 1 340 7 is_stmt 1 view .LVU72 + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 374 .loc 1 340 18 is_stmt 0 view .LVU73 + 375 001c 014B ldr r3, .L31 + 376 001e 1C70 strb r4, [r3] + 377 0020 F4E7 b .L27 + 378 .L32: + ARM GAS /tmp/cceuBEQV.s page 14 + + + 379 0022 00BF .align 2 + 380 .L31: + 381 0024 00000000 .word .LANCHOR0 + 382 0028 00000000 .word .LANCHOR1 + 383 .cfi_endproc + 384 .LFE149: + 386 .section .text.HAL_GetTickFreq,"ax",%progbits + 387 .align 1 + 388 .global HAL_GetTickFreq + 389 .syntax unified + 390 .thumb + 391 .thumb_func + 392 .fpu fpv5-d16 + 394 HAL_GetTickFreq: + 395 .LFB150: + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Return tick frequency. + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval Tick frequency. + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * Value of @ref HAL_TickFreqTypeDef. + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** HAL_TickFreqTypeDef HAL_GetTickFreq(void) + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 396 .loc 1 353 1 is_stmt 1 view -0 + 397 .cfi_startproc + 398 @ args = 0, pretend = 0, frame = 0 + 399 @ frame_needed = 0, uses_anonymous_args = 0 + 400 @ link register save eliminated. + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return uwTickFreq; + 401 .loc 1 354 3 view .LVU75 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 402 .loc 1 355 1 is_stmt 0 view .LVU76 + 403 0000 014B ldr r3, .L34 + 404 0002 1878 ldrb r0, [r3] @ zero_extendqisi2 + 405 0004 7047 bx lr + 406 .L35: + 407 0006 00BF .align 2 + 408 .L34: + 409 0008 00000000 .word .LANCHOR0 + 410 .cfi_endproc + 411 .LFE150: + 413 .section .text.HAL_Delay,"ax",%progbits + 414 .align 1 + 415 .weak HAL_Delay + 416 .syntax unified + 417 .thumb + 418 .thumb_func + 419 .fpu fpv5-d16 + 421 HAL_Delay: + 422 .LVL15: + 423 .LFB151: + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief This function provides minimum delay (in milliseconds) based + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * on variable incremented. + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note In the default implementation , SysTick timer is the source of time base. + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * It is used to generate interrupts at regular time intervals where uwTick + ARM GAS /tmp/cceuBEQV.s page 15 + + + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * is incremented. + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note This function is declared as __weak to be overwritten in case of other + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * implementations in user file. + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @param Delay specifies the delay time length, in milliseconds. + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __weak void HAL_Delay(uint32_t Delay) + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 424 .loc 1 369 1 is_stmt 1 view -0 + 425 .cfi_startproc + 426 @ args = 0, pretend = 0, frame = 0 + 427 @ frame_needed = 0, uses_anonymous_args = 0 + 428 .loc 1 369 1 is_stmt 0 view .LVU78 + 429 0000 38B5 push {r3, r4, r5, lr} + 430 .LCFI4: + 431 .cfi_def_cfa_offset 16 + 432 .cfi_offset 3, -16 + 433 .cfi_offset 4, -12 + 434 .cfi_offset 5, -8 + 435 .cfi_offset 14, -4 + 436 0002 0446 mov r4, r0 + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uint32_t tickstart = HAL_GetTick(); + 437 .loc 1 370 3 is_stmt 1 view .LVU79 + 438 .loc 1 370 24 is_stmt 0 view .LVU80 + 439 0004 FFF7FEFF bl HAL_GetTick + 440 .LVL16: + 441 .loc 1 370 24 view .LVU81 + 442 0008 0546 mov r5, r0 + 443 .LVL17: + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uint32_t wait = Delay; + 444 .loc 1 371 3 is_stmt 1 view .LVU82 + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Add a freq to guarantee minimum wait */ + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** if (wait < HAL_MAX_DELAY) + 445 .loc 1 374 3 view .LVU83 + 446 .loc 1 374 6 is_stmt 0 view .LVU84 + 447 000a B4F1FF3F cmp r4, #-1 + 448 000e 02D0 beq .L38 + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** wait += (uint32_t)(uwTickFreq); + 449 .loc 1 376 5 is_stmt 1 view .LVU85 + 450 .loc 1 376 13 is_stmt 0 view .LVU86 + 451 0010 044B ldr r3, .L40 + 452 0012 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 453 .loc 1 376 10 view .LVU87 + 454 0014 1C44 add r4, r4, r3 + 455 .LVL18: + 456 .L38: + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** while ((HAL_GetTick() - tickstart) < wait) + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 457 .loc 1 381 3 is_stmt 1 discriminator 1 view .LVU88 + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 458 .loc 1 379 9 discriminator 1 view .LVU89 + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + ARM GAS /tmp/cceuBEQV.s page 16 + + + 459 .loc 1 379 11 is_stmt 0 discriminator 1 view .LVU90 + 460 0016 FFF7FEFF bl HAL_GetTick + 461 .LVL19: + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 462 .loc 1 379 25 discriminator 1 view .LVU91 + 463 001a 401B subs r0, r0, r5 + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 464 .loc 1 379 9 discriminator 1 view .LVU92 + 465 001c A042 cmp r0, r4 + 466 001e FAD3 bcc .L38 + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 467 .loc 1 382 1 view .LVU93 + 468 0020 38BD pop {r3, r4, r5, pc} + 469 .LVL20: + 470 .L41: + 471 .loc 1 382 1 view .LVU94 + 472 0022 00BF .align 2 + 473 .L40: + 474 0024 00000000 .word .LANCHOR0 + 475 .cfi_endproc + 476 .LFE151: + 478 .section .text.HAL_SuspendTick,"ax",%progbits + 479 .align 1 + 480 .weak HAL_SuspendTick + 481 .syntax unified + 482 .thumb + 483 .thumb_func + 484 .fpu fpv5-d16 + 486 HAL_SuspendTick: + 487 .LFB152: + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Suspend Tick increment. + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note In the default implementation , SysTick timer is the source of time base. It is + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * used to generate interrupts at regular time intervals. Once HAL_SuspendTick() + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * is called, the SysTick interrupt will be disabled and so Tick increment + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * is suspended. + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note This function is declared as __weak to be overwritten in case of other + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * implementations in user file. + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __weak void HAL_SuspendTick(void) + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 488 .loc 1 395 1 is_stmt 1 view -0 + 489 .cfi_startproc + 490 @ args = 0, pretend = 0, frame = 0 + 491 @ frame_needed = 0, uses_anonymous_args = 0 + 492 @ link register save eliminated. + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Disable SysTick Interrupt */ + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk; + 493 .loc 1 397 3 view .LVU96 + 494 .loc 1 397 17 is_stmt 0 view .LVU97 + 495 0000 4FF0E022 mov r2, #-536813568 + 496 0004 1369 ldr r3, [r2, #16] + 497 0006 23F00203 bic r3, r3, #2 + 498 000a 1361 str r3, [r2, #16] + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + ARM GAS /tmp/cceuBEQV.s page 17 + + + 499 .loc 1 398 1 view .LVU98 + 500 000c 7047 bx lr + 501 .cfi_endproc + 502 .LFE152: + 504 .section .text.HAL_ResumeTick,"ax",%progbits + 505 .align 1 + 506 .weak HAL_ResumeTick + 507 .syntax unified + 508 .thumb + 509 .thumb_func + 510 .fpu fpv5-d16 + 512 HAL_ResumeTick: + 513 .LFB153: + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Resume Tick increment. + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note In the default implementation , SysTick timer is the source of time base. It is + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * used to generate interrupts at regular time intervals. Once HAL_ResumeTick() + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * is called, the SysTick interrupt will be enabled and so Tick increment + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * is resumed. + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note This function is declared as __weak to be overwritten in case of other + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * implementations in user file. + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** __weak void HAL_ResumeTick(void) + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 514 .loc 1 411 1 is_stmt 1 view -0 + 515 .cfi_startproc + 516 @ args = 0, pretend = 0, frame = 0 + 517 @ frame_needed = 0, uses_anonymous_args = 0 + 518 @ link register save eliminated. + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /* Enable SysTick Interrupt */ + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk; + 519 .loc 1 413 3 view .LVU100 + 520 .loc 1 413 18 is_stmt 0 view .LVU101 + 521 0000 4FF0E022 mov r2, #-536813568 + 522 0004 1369 ldr r3, [r2, #16] + 523 0006 43F00203 orr r3, r3, #2 + 524 000a 1361 str r3, [r2, #16] + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 525 .loc 1 414 1 view .LVU102 + 526 000c 7047 bx lr + 527 .cfi_endproc + 528 .LFE153: + 530 .section .text.HAL_GetHalVersion,"ax",%progbits + 531 .align 1 + 532 .global HAL_GetHalVersion + 533 .syntax unified + 534 .thumb + 535 .thumb_func + 536 .fpu fpv5-d16 + 538 HAL_GetHalVersion: + 539 .LFB154: + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Returns the HAL revision + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval version : 0xXYZR (8bits for each decimal, R for RC) + ARM GAS /tmp/cceuBEQV.s page 18 + + + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uint32_t HAL_GetHalVersion(void) + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 540 .loc 1 421 1 is_stmt 1 view -0 + 541 .cfi_startproc + 542 @ args = 0, pretend = 0, frame = 0 + 543 @ frame_needed = 0, uses_anonymous_args = 0 + 544 @ link register save eliminated. + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return __STM32F7xx_HAL_VERSION; + 545 .loc 1 422 3 view .LVU104 + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 546 .loc 1 423 1 is_stmt 0 view .LVU105 + 547 0000 0048 ldr r0, .L45 + 548 0002 7047 bx lr + 549 .L46: + 550 .align 2 + 551 .L45: + 552 0004 00010301 .word 16974080 + 553 .cfi_endproc + 554 .LFE154: + 556 .section .text.HAL_GetREVID,"ax",%progbits + 557 .align 1 + 558 .global HAL_GetREVID + 559 .syntax unified + 560 .thumb + 561 .thumb_func + 562 .fpu fpv5-d16 + 564 HAL_GetREVID: + 565 .LFB155: + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Returns the device revision identifier. + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval Device revision identifier + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uint32_t HAL_GetREVID(void) + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 566 .loc 1 430 1 is_stmt 1 view -0 + 567 .cfi_startproc + 568 @ args = 0, pretend = 0, frame = 0 + 569 @ frame_needed = 0, uses_anonymous_args = 0 + 570 @ link register save eliminated. + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return((DBGMCU->IDCODE) >> 16U); + 571 .loc 1 431 4 view .LVU107 + 572 .loc 1 431 18 is_stmt 0 view .LVU108 + 573 0000 014B ldr r3, .L48 + 574 0002 1868 ldr r0, [r3] + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 575 .loc 1 432 1 view .LVU109 + 576 0004 000C lsrs r0, r0, #16 + 577 0006 7047 bx lr + 578 .L49: + 579 .align 2 + 580 .L48: + 581 0008 002004E0 .word -536600576 + 582 .cfi_endproc + 583 .LFE155: + 585 .section .text.HAL_GetDEVID,"ax",%progbits + ARM GAS /tmp/cceuBEQV.s page 19 + + + 586 .align 1 + 587 .global HAL_GetDEVID + 588 .syntax unified + 589 .thumb + 590 .thumb_func + 591 .fpu fpv5-d16 + 593 HAL_GetDEVID: + 594 .LFB156: + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Returns the device identifier. + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval Device identifier + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uint32_t HAL_GetDEVID(void) + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 595 .loc 1 439 1 is_stmt 1 view -0 + 596 .cfi_startproc + 597 @ args = 0, pretend = 0, frame = 0 + 598 @ frame_needed = 0, uses_anonymous_args = 0 + 599 @ link register save eliminated. + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return((DBGMCU->IDCODE) & IDCODE_DEVID_MASK); + 600 .loc 1 440 4 view .LVU111 + 601 .loc 1 440 18 is_stmt 0 view .LVU112 + 602 0000 024B ldr r3, .L51 + 603 0002 1868 ldr r0, [r3] + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 604 .loc 1 441 1 view .LVU113 + 605 0004 C0F30B00 ubfx r0, r0, #0, #12 + 606 0008 7047 bx lr + 607 .L52: + 608 000a 00BF .align 2 + 609 .L51: + 610 000c 002004E0 .word -536600576 + 611 .cfi_endproc + 612 .LFE156: + 614 .section .text.HAL_GetUIDw0,"ax",%progbits + 615 .align 1 + 616 .global HAL_GetUIDw0 + 617 .syntax unified + 618 .thumb + 619 .thumb_func + 620 .fpu fpv5-d16 + 622 HAL_GetUIDw0: + 623 .LFB157: + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Returns first word of the unique device identifier (UID based on 96 bits) + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval Device identifier + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uint32_t HAL_GetUIDw0(void) + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 624 .loc 1 448 1 is_stmt 1 view -0 + 625 .cfi_startproc + 626 @ args = 0, pretend = 0, frame = 0 + 627 @ frame_needed = 0, uses_anonymous_args = 0 + 628 @ link register save eliminated. + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return(READ_REG(*((uint32_t *)UID_BASE))); + ARM GAS /tmp/cceuBEQV.s page 20 + + + 629 .loc 1 449 3 view .LVU115 + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 630 .loc 1 450 1 is_stmt 0 view .LVU116 + 631 0000 014B ldr r3, .L54 + 632 0002 D3F82004 ldr r0, [r3, #1056] + 633 0006 7047 bx lr + 634 .L55: + 635 .align 2 + 636 .L54: + 637 0008 00F0F01F .word 535883776 + 638 .cfi_endproc + 639 .LFE157: + 641 .section .text.HAL_GetUIDw1,"ax",%progbits + 642 .align 1 + 643 .global HAL_GetUIDw1 + 644 .syntax unified + 645 .thumb + 646 .thumb_func + 647 .fpu fpv5-d16 + 649 HAL_GetUIDw1: + 650 .LFB158: + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Returns second word of the unique device identifier (UID based on 96 bits) + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval Device identifier + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uint32_t HAL_GetUIDw1(void) + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 651 .loc 1 457 1 is_stmt 1 view -0 + 652 .cfi_startproc + 653 @ args = 0, pretend = 0, frame = 0 + 654 @ frame_needed = 0, uses_anonymous_args = 0 + 655 @ link register save eliminated. + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return(READ_REG(*((uint32_t *)(UID_BASE + 4U)))); + 656 .loc 1 458 3 view .LVU118 + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 657 .loc 1 459 1 is_stmt 0 view .LVU119 + 658 0000 014B ldr r3, .L57 + 659 0002 D3F82404 ldr r0, [r3, #1060] + 660 0006 7047 bx lr + 661 .L58: + 662 .align 2 + 663 .L57: + 664 0008 00F0F01F .word 535883776 + 665 .cfi_endproc + 666 .LFE158: + 668 .section .text.HAL_GetUIDw2,"ax",%progbits + 669 .align 1 + 670 .global HAL_GetUIDw2 + 671 .syntax unified + 672 .thumb + 673 .thumb_func + 674 .fpu fpv5-d16 + 676 HAL_GetUIDw2: + 677 .LFB159: + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + ARM GAS /tmp/cceuBEQV.s page 21 + + + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Returns third word of the unique device identifier (UID based on 96 bits) + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval Device identifier + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** uint32_t HAL_GetUIDw2(void) + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 678 .loc 1 466 1 is_stmt 1 view -0 + 679 .cfi_startproc + 680 @ args = 0, pretend = 0, frame = 0 + 681 @ frame_needed = 0, uses_anonymous_args = 0 + 682 @ link register save eliminated. + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** return(READ_REG(*((uint32_t *)(UID_BASE + 8U)))); + 683 .loc 1 467 3 view .LVU121 + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 684 .loc 1 468 1 is_stmt 0 view .LVU122 + 685 0000 014B ldr r3, .L60 + 686 0002 D3F82804 ldr r0, [r3, #1064] + 687 0006 7047 bx lr + 688 .L61: + 689 .align 2 + 690 .L60: + 691 0008 00F0F01F .word 535883776 + 692 .cfi_endproc + 693 .LFE159: + 695 .section .text.HAL_DBGMCU_EnableDBGSleepMode,"ax",%progbits + 696 .align 1 + 697 .global HAL_DBGMCU_EnableDBGSleepMode + 698 .syntax unified + 699 .thumb + 700 .thumb_func + 701 .fpu fpv5-d16 + 703 HAL_DBGMCU_EnableDBGSleepMode: + 704 .LFB160: + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Enable the Debug Module during SLEEP mode + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_DBGMCU_EnableDBGSleepMode(void) + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 705 .loc 1 475 1 is_stmt 1 view -0 + 706 .cfi_startproc + 707 @ args = 0, pretend = 0, frame = 0 + 708 @ frame_needed = 0, uses_anonymous_args = 0 + 709 @ link register save eliminated. + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); + 710 .loc 1 476 3 view .LVU124 + 711 0000 024A ldr r2, .L63 + 712 0002 5368 ldr r3, [r2, #4] + 713 0004 43F00103 orr r3, r3, #1 + 714 0008 5360 str r3, [r2, #4] + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 715 .loc 1 477 1 is_stmt 0 view .LVU125 + 716 000a 7047 bx lr + 717 .L64: + 718 .align 2 + 719 .L63: + 720 000c 002004E0 .word -536600576 + ARM GAS /tmp/cceuBEQV.s page 22 + + + 721 .cfi_endproc + 722 .LFE160: + 724 .section .text.HAL_DBGMCU_DisableDBGSleepMode,"ax",%progbits + 725 .align 1 + 726 .global HAL_DBGMCU_DisableDBGSleepMode + 727 .syntax unified + 728 .thumb + 729 .thumb_func + 730 .fpu fpv5-d16 + 732 HAL_DBGMCU_DisableDBGSleepMode: + 733 .LFB161: + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Disable the Debug Module during SLEEP mode + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_DBGMCU_DisableDBGSleepMode(void) + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 734 .loc 1 484 1 is_stmt 1 view -0 + 735 .cfi_startproc + 736 @ args = 0, pretend = 0, frame = 0 + 737 @ frame_needed = 0, uses_anonymous_args = 0 + 738 @ link register save eliminated. + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); + 739 .loc 1 485 3 view .LVU127 + 740 0000 024A ldr r2, .L66 + 741 0002 5368 ldr r3, [r2, #4] + 742 0004 23F00103 bic r3, r3, #1 + 743 0008 5360 str r3, [r2, #4] + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 744 .loc 1 486 1 is_stmt 0 view .LVU128 + 745 000a 7047 bx lr + 746 .L67: + 747 .align 2 + 748 .L66: + 749 000c 002004E0 .word -536600576 + 750 .cfi_endproc + 751 .LFE161: + 753 .section .text.HAL_DBGMCU_EnableDBGStopMode,"ax",%progbits + 754 .align 1 + 755 .global HAL_DBGMCU_EnableDBGStopMode + 756 .syntax unified + 757 .thumb + 758 .thumb_func + 759 .fpu fpv5-d16 + 761 HAL_DBGMCU_EnableDBGStopMode: + 762 .LFB162: + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Enable the Debug Module during STOP mode + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_DBGMCU_EnableDBGStopMode(void) + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 763 .loc 1 493 1 is_stmt 1 view -0 + 764 .cfi_startproc + 765 @ args = 0, pretend = 0, frame = 0 + ARM GAS /tmp/cceuBEQV.s page 23 + + + 766 @ frame_needed = 0, uses_anonymous_args = 0 + 767 @ link register save eliminated. + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); + 768 .loc 1 494 3 view .LVU130 + 769 0000 024A ldr r2, .L69 + 770 0002 5368 ldr r3, [r2, #4] + 771 0004 43F00203 orr r3, r3, #2 + 772 0008 5360 str r3, [r2, #4] + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 773 .loc 1 495 1 is_stmt 0 view .LVU131 + 774 000a 7047 bx lr + 775 .L70: + 776 .align 2 + 777 .L69: + 778 000c 002004E0 .word -536600576 + 779 .cfi_endproc + 780 .LFE162: + 782 .section .text.HAL_DBGMCU_DisableDBGStopMode,"ax",%progbits + 783 .align 1 + 784 .global HAL_DBGMCU_DisableDBGStopMode + 785 .syntax unified + 786 .thumb + 787 .thumb_func + 788 .fpu fpv5-d16 + 790 HAL_DBGMCU_DisableDBGStopMode: + 791 .LFB163: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Disable the Debug Module during STOP mode + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_DBGMCU_DisableDBGStopMode(void) + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 792 .loc 1 502 1 is_stmt 1 view -0 + 793 .cfi_startproc + 794 @ args = 0, pretend = 0, frame = 0 + 795 @ frame_needed = 0, uses_anonymous_args = 0 + 796 @ link register save eliminated. + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); + 797 .loc 1 503 3 view .LVU133 + 798 0000 024A ldr r2, .L72 + 799 0002 5368 ldr r3, [r2, #4] + 800 0004 23F00203 bic r3, r3, #2 + 801 0008 5360 str r3, [r2, #4] + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 802 .loc 1 504 1 is_stmt 0 view .LVU134 + 803 000a 7047 bx lr + 804 .L73: + 805 .align 2 + 806 .L72: + 807 000c 002004E0 .word -536600576 + 808 .cfi_endproc + 809 .LFE163: + 811 .section .text.HAL_DBGMCU_EnableDBGStandbyMode,"ax",%progbits + 812 .align 1 + 813 .global HAL_DBGMCU_EnableDBGStandbyMode + 814 .syntax unified + ARM GAS /tmp/cceuBEQV.s page 24 + + + 815 .thumb + 816 .thumb_func + 817 .fpu fpv5-d16 + 819 HAL_DBGMCU_EnableDBGStandbyMode: + 820 .LFB164: + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Enable the Debug Module during STANDBY mode + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_DBGMCU_EnableDBGStandbyMode(void) + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 821 .loc 1 511 1 is_stmt 1 view -0 + 822 .cfi_startproc + 823 @ args = 0, pretend = 0, frame = 0 + 824 @ frame_needed = 0, uses_anonymous_args = 0 + 825 @ link register save eliminated. + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); + 826 .loc 1 512 3 view .LVU136 + 827 0000 024A ldr r2, .L75 + 828 0002 5368 ldr r3, [r2, #4] + 829 0004 43F00403 orr r3, r3, #4 + 830 0008 5360 str r3, [r2, #4] + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 831 .loc 1 513 1 is_stmt 0 view .LVU137 + 832 000a 7047 bx lr + 833 .L76: + 834 .align 2 + 835 .L75: + 836 000c 002004E0 .word -536600576 + 837 .cfi_endproc + 838 .LFE164: + 840 .section .text.HAL_DBGMCU_DisableDBGStandbyMode,"ax",%progbits + 841 .align 1 + 842 .global HAL_DBGMCU_DisableDBGStandbyMode + 843 .syntax unified + 844 .thumb + 845 .thumb_func + 846 .fpu fpv5-d16 + 848 HAL_DBGMCU_DisableDBGStandbyMode: + 849 .LFB165: + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Disable the Debug Module during STANDBY mode + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_DBGMCU_DisableDBGStandbyMode(void) + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 850 .loc 1 520 1 is_stmt 1 view -0 + 851 .cfi_startproc + 852 @ args = 0, pretend = 0, frame = 0 + 853 @ frame_needed = 0, uses_anonymous_args = 0 + 854 @ link register save eliminated. + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); + 855 .loc 1 521 3 view .LVU139 + 856 0000 024A ldr r2, .L78 + 857 0002 5368 ldr r3, [r2, #4] + ARM GAS /tmp/cceuBEQV.s page 25 + + + 858 0004 23F00403 bic r3, r3, #4 + 859 0008 5360 str r3, [r2, #4] + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 860 .loc 1 522 1 is_stmt 0 view .LVU140 + 861 000a 7047 bx lr + 862 .L79: + 863 .align 2 + 864 .L78: + 865 000c 002004E0 .word -536600576 + 866 .cfi_endproc + 867 .LFE165: + 869 .section .text.HAL_EnableCompensationCell,"ax",%progbits + 870 .align 1 + 871 .global HAL_EnableCompensationCell + 872 .syntax unified + 873 .thumb + 874 .thumb_func + 875 .fpu fpv5-d16 + 877 HAL_EnableCompensationCell: + 878 .LFB166: + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Enables the I/O Compensation Cell. + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note The I/O compensation cell can be used only when the device supply + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * voltage ranges from 2.4 to 3.6 V. + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_EnableCompensationCell(void) + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 879 .loc 1 531 1 is_stmt 1 view -0 + 880 .cfi_startproc + 881 @ args = 0, pretend = 0, frame = 0 + 882 @ frame_needed = 0, uses_anonymous_args = 0 + 883 @ link register save eliminated. + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** SYSCFG->CMPCR |= SYSCFG_CMPCR_CMP_PD; + 884 .loc 1 532 3 view .LVU142 + 885 .loc 1 532 17 is_stmt 0 view .LVU143 + 886 0000 024A ldr r2, .L81 + 887 0002 136A ldr r3, [r2, #32] + 888 0004 43F00103 orr r3, r3, #1 + 889 0008 1362 str r3, [r2, #32] + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 890 .loc 1 533 1 view .LVU144 + 891 000a 7047 bx lr + 892 .L82: + 893 .align 2 + 894 .L81: + 895 000c 00380140 .word 1073821696 + 896 .cfi_endproc + 897 .LFE166: + 899 .section .text.HAL_DisableCompensationCell,"ax",%progbits + 900 .align 1 + 901 .global HAL_DisableCompensationCell + 902 .syntax unified + 903 .thumb + 904 .thumb_func + 905 .fpu fpv5-d16 + ARM GAS /tmp/cceuBEQV.s page 26 + + + 907 HAL_DisableCompensationCell: + 908 .LFB167: + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Power-down the I/O Compensation Cell. + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note The I/O compensation cell can be used only when the device supply + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * voltage ranges from 2.4 to 3.6 V. + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_DisableCompensationCell(void) + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 909 .loc 1 542 1 is_stmt 1 view -0 + 910 .cfi_startproc + 911 @ args = 0, pretend = 0, frame = 0 + 912 @ frame_needed = 0, uses_anonymous_args = 0 + 913 @ link register save eliminated. + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** SYSCFG->CMPCR &= (uint32_t)~((uint32_t)SYSCFG_CMPCR_CMP_PD); + 914 .loc 1 543 3 view .LVU146 + 915 .loc 1 543 17 is_stmt 0 view .LVU147 + 916 0000 024A ldr r2, .L84 + 917 0002 136A ldr r3, [r2, #32] + 918 0004 23F00103 bic r3, r3, #1 + 919 0008 1362 str r3, [r2, #32] + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 920 .loc 1 544 1 view .LVU148 + 921 000a 7047 bx lr + 922 .L85: + 923 .align 2 + 924 .L84: + 925 000c 00380140 .word 1073821696 + 926 .cfi_endproc + 927 .LFE167: + 929 .section .text.HAL_EnableFMCMemorySwapping,"ax",%progbits + 930 .align 1 + 931 .global HAL_EnableFMCMemorySwapping + 932 .syntax unified + 933 .thumb + 934 .thumb_func + 935 .fpu fpv5-d16 + 937 HAL_EnableFMCMemorySwapping: + 938 .LFB168: + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Enables the FMC Memory Mapping Swapping. + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note SDRAM is accessible at 0x60000000 + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * and NOR/RAM is accessible at 0xC0000000 + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_EnableFMCMemorySwapping(void) + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 939 .loc 1 555 1 is_stmt 1 view -0 + 940 .cfi_startproc + 941 @ args = 0, pretend = 0, frame = 0 + 942 @ frame_needed = 0, uses_anonymous_args = 0 + 943 @ link register save eliminated. + ARM GAS /tmp/cceuBEQV.s page 27 + + + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** SYSCFG->MEMRMP |= SYSCFG_MEMRMP_SWP_FMC_0; + 944 .loc 1 556 3 view .LVU150 + 945 .loc 1 556 18 is_stmt 0 view .LVU151 + 946 0000 024A ldr r2, .L87 + 947 0002 1368 ldr r3, [r2] + 948 0004 43F48063 orr r3, r3, #1024 + 949 0008 1360 str r3, [r2] + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 950 .loc 1 557 1 view .LVU152 + 951 000a 7047 bx lr + 952 .L88: + 953 .align 2 + 954 .L87: + 955 000c 00380140 .word 1073821696 + 956 .cfi_endproc + 957 .LFE168: + 959 .section .text.HAL_DisableFMCMemorySwapping,"ax",%progbits + 960 .align 1 + 961 .global HAL_DisableFMCMemorySwapping + 962 .syntax unified + 963 .thumb + 964 .thumb_func + 965 .fpu fpv5-d16 + 967 HAL_DisableFMCMemorySwapping: + 968 .LFB169: + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Disables the FMC Memory Mapping Swapping + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note SDRAM is accessible at 0xC0000000 (default mapping) + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * and NOR/RAM is accessible at 0x60000000 (default mapping) + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_DisableFMCMemorySwapping(void) + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 969 .loc 1 568 1 is_stmt 1 view -0 + 970 .cfi_startproc + 971 @ args = 0, pretend = 0, frame = 0 + 972 @ frame_needed = 0, uses_anonymous_args = 0 + 973 @ link register save eliminated. + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** SYSCFG->MEMRMP &= (uint32_t)~((uint32_t)SYSCFG_MEMRMP_SWP_FMC); + 974 .loc 1 569 3 view .LVU154 + 975 .loc 1 569 18 is_stmt 0 view .LVU155 + 976 0000 024A ldr r2, .L90 + 977 0002 1368 ldr r3, [r2] + 978 0004 23F44063 bic r3, r3, #3072 + 979 0008 1360 str r3, [r2] + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 980 .loc 1 570 1 view .LVU156 + 981 000a 7047 bx lr + 982 .L91: + 983 .align 2 + 984 .L90: + 985 000c 00380140 .word 1073821696 + 986 .cfi_endproc + 987 .LFE169: + ARM GAS /tmp/cceuBEQV.s page 28 + + + 989 .section .text.HAL_EnableMemorySwappingBank,"ax",%progbits + 990 .align 1 + 991 .global HAL_EnableMemorySwappingBank + 992 .syntax unified + 993 .thumb + 994 .thumb_func + 995 .fpu fpv5-d16 + 997 HAL_EnableMemorySwappingBank: + 998 .LFB170: + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** #if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Enable the Internal FLASH Bank Swapping. + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note This function can be used only for STM32F77xx/STM32F76xx devices. + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note Flash Bank2 mapped at 0x08000000 (AXI) (aliased at 0x00200000 (TCM)) + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * and Flash Bank1 mapped at 0x08100000 (AXI) (aliased at 0x00300000 (TCM)) + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_EnableMemorySwappingBank(void) + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 999 .loc 1 584 1 is_stmt 1 view -0 + 1000 .cfi_startproc + 1001 @ args = 0, pretend = 0, frame = 0 + 1002 @ frame_needed = 0, uses_anonymous_args = 0 + 1003 @ link register save eliminated. + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** SET_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB); + 1004 .loc 1 585 3 view .LVU158 + 1005 0000 024A ldr r2, .L93 + 1006 0002 1368 ldr r3, [r2] + 1007 0004 43F48073 orr r3, r3, #256 + 1008 0008 1360 str r3, [r2] + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 1009 .loc 1 586 1 is_stmt 0 view .LVU159 + 1010 000a 7047 bx lr + 1011 .L94: + 1012 .align 2 + 1013 .L93: + 1014 000c 00380140 .word 1073821696 + 1015 .cfi_endproc + 1016 .LFE170: + 1018 .section .text.HAL_DisableMemorySwappingBank,"ax",%progbits + 1019 .align 1 + 1020 .global HAL_DisableMemorySwappingBank + 1021 .syntax unified + 1022 .thumb + 1023 .thumb_func + 1024 .fpu fpv5-d16 + 1026 HAL_DisableMemorySwappingBank: + 1027 .LFB171: + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** /** + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @brief Disable the Internal FLASH Bank Swapping. + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note This function can be used only for STM32F77xx/STM32F76xx devices. + ARM GAS /tmp/cceuBEQV.s page 29 + + + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @note The default state : Flash Bank1 mapped at 0x08000000 (AXI) (aliased at 0x00200000 (TCM)) + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * and Flash Bank2 mapped at 0x08100000 (AXI)( aliased at 0x00300000 (TCM)) + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** * @retval None + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** */ + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** void HAL_DisableMemorySwappingBank(void) + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** { + 1028 .loc 1 599 1 is_stmt 1 view -0 + 1029 .cfi_startproc + 1030 @ args = 0, pretend = 0, frame = 0 + 1031 @ frame_needed = 0, uses_anonymous_args = 0 + 1032 @ link register save eliminated. + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB); + 1033 .loc 1 600 3 view .LVU161 + 1034 0000 024A ldr r2, .L96 + 1035 0002 1368 ldr r3, [r2] + 1036 0004 23F48073 bic r3, r3, #256 + 1037 0008 1360 str r3, [r2] + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c **** } + 1038 .loc 1 601 1 is_stmt 0 view .LVU162 + 1039 000a 7047 bx lr + 1040 .L97: + 1041 .align 2 + 1042 .L96: + 1043 000c 00380140 .word 1073821696 + 1044 .cfi_endproc + 1045 .LFE171: + 1047 .global uwTickFreq + 1048 .global uwTickPrio + 1049 .global uwTick + 1050 .section .bss.uwTick,"aw",%nobits + 1051 .align 2 + 1052 .set .LANCHOR2,. + 0 + 1055 uwTick: + 1056 0000 00000000 .space 4 + 1057 .section .data.uwTickFreq,"aw" + 1058 .set .LANCHOR0,. + 0 + 1061 uwTickFreq: + 1062 0000 01 .byte 1 + 1063 .section .data.uwTickPrio,"aw" + 1064 .align 2 + 1065 .set .LANCHOR1,. + 0 + 1068 uwTickPrio: + 1069 0000 10000000 .word 16 + 1070 .text + 1071 .Letext0: + 1072 .file 2 "Drivers/CMSIS/Include/core_cm7.h" + 1073 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 1074 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 1075 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 1076 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + 1077 .file 7 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h" + 1078 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h" + ARM GAS /tmp/cceuBEQV.s page 30 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal.c + /tmp/cceuBEQV.s:17 .text.HAL_MspInit:0000000000000000 $t + /tmp/cceuBEQV.s:25 .text.HAL_MspInit:0000000000000000 HAL_MspInit + /tmp/cceuBEQV.s:39 .text.HAL_MspDeInit:0000000000000000 $t + /tmp/cceuBEQV.s:46 .text.HAL_MspDeInit:0000000000000000 HAL_MspDeInit + /tmp/cceuBEQV.s:59 .text.HAL_DeInit:0000000000000000 $t + /tmp/cceuBEQV.s:66 .text.HAL_DeInit:0000000000000000 HAL_DeInit + /tmp/cceuBEQV.s:110 .text.HAL_DeInit:0000000000000028 $d + /tmp/cceuBEQV.s:115 .text.HAL_InitTick:0000000000000000 $t + /tmp/cceuBEQV.s:122 .text.HAL_InitTick:0000000000000000 HAL_InitTick + /tmp/cceuBEQV.s:185 .text.HAL_InitTick:0000000000000040 $d + /tmp/cceuBEQV.s:192 .text.HAL_Init:0000000000000000 $t + /tmp/cceuBEQV.s:199 .text.HAL_Init:0000000000000000 HAL_Init + /tmp/cceuBEQV.s:229 .text.HAL_IncTick:0000000000000000 $t + /tmp/cceuBEQV.s:236 .text.HAL_IncTick:0000000000000000 HAL_IncTick + /tmp/cceuBEQV.s:256 .text.HAL_IncTick:0000000000000010 $d + /tmp/cceuBEQV.s:262 .text.HAL_GetTick:0000000000000000 $t + /tmp/cceuBEQV.s:269 .text.HAL_GetTick:0000000000000000 HAL_GetTick + /tmp/cceuBEQV.s:285 .text.HAL_GetTick:0000000000000008 $d + /tmp/cceuBEQV.s:290 .text.HAL_GetTickPrio:0000000000000000 $t + /tmp/cceuBEQV.s:297 .text.HAL_GetTickPrio:0000000000000000 HAL_GetTickPrio + /tmp/cceuBEQV.s:312 .text.HAL_GetTickPrio:0000000000000008 $d + /tmp/cceuBEQV.s:317 .text.HAL_SetTickFreq:0000000000000000 $t + /tmp/cceuBEQV.s:324 .text.HAL_SetTickFreq:0000000000000000 HAL_SetTickFreq + /tmp/cceuBEQV.s:381 .text.HAL_SetTickFreq:0000000000000024 $d + /tmp/cceuBEQV.s:387 .text.HAL_GetTickFreq:0000000000000000 $t + /tmp/cceuBEQV.s:394 .text.HAL_GetTickFreq:0000000000000000 HAL_GetTickFreq + /tmp/cceuBEQV.s:409 .text.HAL_GetTickFreq:0000000000000008 $d + /tmp/cceuBEQV.s:414 .text.HAL_Delay:0000000000000000 $t + /tmp/cceuBEQV.s:421 .text.HAL_Delay:0000000000000000 HAL_Delay + /tmp/cceuBEQV.s:474 .text.HAL_Delay:0000000000000024 $d + /tmp/cceuBEQV.s:479 .text.HAL_SuspendTick:0000000000000000 $t + /tmp/cceuBEQV.s:486 .text.HAL_SuspendTick:0000000000000000 HAL_SuspendTick + /tmp/cceuBEQV.s:505 .text.HAL_ResumeTick:0000000000000000 $t + /tmp/cceuBEQV.s:512 .text.HAL_ResumeTick:0000000000000000 HAL_ResumeTick + /tmp/cceuBEQV.s:531 .text.HAL_GetHalVersion:0000000000000000 $t + /tmp/cceuBEQV.s:538 .text.HAL_GetHalVersion:0000000000000000 HAL_GetHalVersion + /tmp/cceuBEQV.s:552 .text.HAL_GetHalVersion:0000000000000004 $d + /tmp/cceuBEQV.s:557 .text.HAL_GetREVID:0000000000000000 $t + /tmp/cceuBEQV.s:564 .text.HAL_GetREVID:0000000000000000 HAL_GetREVID + /tmp/cceuBEQV.s:581 .text.HAL_GetREVID:0000000000000008 $d + /tmp/cceuBEQV.s:586 .text.HAL_GetDEVID:0000000000000000 $t + /tmp/cceuBEQV.s:593 .text.HAL_GetDEVID:0000000000000000 HAL_GetDEVID + /tmp/cceuBEQV.s:610 .text.HAL_GetDEVID:000000000000000c $d + /tmp/cceuBEQV.s:615 .text.HAL_GetUIDw0:0000000000000000 $t + /tmp/cceuBEQV.s:622 .text.HAL_GetUIDw0:0000000000000000 HAL_GetUIDw0 + /tmp/cceuBEQV.s:637 .text.HAL_GetUIDw0:0000000000000008 $d + /tmp/cceuBEQV.s:642 .text.HAL_GetUIDw1:0000000000000000 $t + /tmp/cceuBEQV.s:649 .text.HAL_GetUIDw1:0000000000000000 HAL_GetUIDw1 + /tmp/cceuBEQV.s:664 .text.HAL_GetUIDw1:0000000000000008 $d + /tmp/cceuBEQV.s:669 .text.HAL_GetUIDw2:0000000000000000 $t + /tmp/cceuBEQV.s:676 .text.HAL_GetUIDw2:0000000000000000 HAL_GetUIDw2 + /tmp/cceuBEQV.s:691 .text.HAL_GetUIDw2:0000000000000008 $d + /tmp/cceuBEQV.s:696 .text.HAL_DBGMCU_EnableDBGSleepMode:0000000000000000 $t + /tmp/cceuBEQV.s:703 .text.HAL_DBGMCU_EnableDBGSleepMode:0000000000000000 HAL_DBGMCU_EnableDBGSleepMode + /tmp/cceuBEQV.s:720 .text.HAL_DBGMCU_EnableDBGSleepMode:000000000000000c $d + ARM GAS /tmp/cceuBEQV.s page 31 + + + /tmp/cceuBEQV.s:725 .text.HAL_DBGMCU_DisableDBGSleepMode:0000000000000000 $t + /tmp/cceuBEQV.s:732 .text.HAL_DBGMCU_DisableDBGSleepMode:0000000000000000 HAL_DBGMCU_DisableDBGSleepMode + /tmp/cceuBEQV.s:749 .text.HAL_DBGMCU_DisableDBGSleepMode:000000000000000c $d + /tmp/cceuBEQV.s:754 .text.HAL_DBGMCU_EnableDBGStopMode:0000000000000000 $t + /tmp/cceuBEQV.s:761 .text.HAL_DBGMCU_EnableDBGStopMode:0000000000000000 HAL_DBGMCU_EnableDBGStopMode + /tmp/cceuBEQV.s:778 .text.HAL_DBGMCU_EnableDBGStopMode:000000000000000c $d + /tmp/cceuBEQV.s:783 .text.HAL_DBGMCU_DisableDBGStopMode:0000000000000000 $t + /tmp/cceuBEQV.s:790 .text.HAL_DBGMCU_DisableDBGStopMode:0000000000000000 HAL_DBGMCU_DisableDBGStopMode + /tmp/cceuBEQV.s:807 .text.HAL_DBGMCU_DisableDBGStopMode:000000000000000c $d + /tmp/cceuBEQV.s:812 .text.HAL_DBGMCU_EnableDBGStandbyMode:0000000000000000 $t + /tmp/cceuBEQV.s:819 .text.HAL_DBGMCU_EnableDBGStandbyMode:0000000000000000 HAL_DBGMCU_EnableDBGStandbyMode + /tmp/cceuBEQV.s:836 .text.HAL_DBGMCU_EnableDBGStandbyMode:000000000000000c $d + /tmp/cceuBEQV.s:841 .text.HAL_DBGMCU_DisableDBGStandbyMode:0000000000000000 $t + /tmp/cceuBEQV.s:848 .text.HAL_DBGMCU_DisableDBGStandbyMode:0000000000000000 HAL_DBGMCU_DisableDBGStandbyMode + /tmp/cceuBEQV.s:865 .text.HAL_DBGMCU_DisableDBGStandbyMode:000000000000000c $d + /tmp/cceuBEQV.s:870 .text.HAL_EnableCompensationCell:0000000000000000 $t + /tmp/cceuBEQV.s:877 .text.HAL_EnableCompensationCell:0000000000000000 HAL_EnableCompensationCell + /tmp/cceuBEQV.s:895 .text.HAL_EnableCompensationCell:000000000000000c $d + /tmp/cceuBEQV.s:900 .text.HAL_DisableCompensationCell:0000000000000000 $t + /tmp/cceuBEQV.s:907 .text.HAL_DisableCompensationCell:0000000000000000 HAL_DisableCompensationCell + /tmp/cceuBEQV.s:925 .text.HAL_DisableCompensationCell:000000000000000c $d + /tmp/cceuBEQV.s:930 .text.HAL_EnableFMCMemorySwapping:0000000000000000 $t + /tmp/cceuBEQV.s:937 .text.HAL_EnableFMCMemorySwapping:0000000000000000 HAL_EnableFMCMemorySwapping + /tmp/cceuBEQV.s:955 .text.HAL_EnableFMCMemorySwapping:000000000000000c $d + /tmp/cceuBEQV.s:960 .text.HAL_DisableFMCMemorySwapping:0000000000000000 $t + /tmp/cceuBEQV.s:967 .text.HAL_DisableFMCMemorySwapping:0000000000000000 HAL_DisableFMCMemorySwapping + /tmp/cceuBEQV.s:985 .text.HAL_DisableFMCMemorySwapping:000000000000000c $d + /tmp/cceuBEQV.s:990 .text.HAL_EnableMemorySwappingBank:0000000000000000 $t + /tmp/cceuBEQV.s:997 .text.HAL_EnableMemorySwappingBank:0000000000000000 HAL_EnableMemorySwappingBank + /tmp/cceuBEQV.s:1014 .text.HAL_EnableMemorySwappingBank:000000000000000c $d + /tmp/cceuBEQV.s:1019 .text.HAL_DisableMemorySwappingBank:0000000000000000 $t + /tmp/cceuBEQV.s:1026 .text.HAL_DisableMemorySwappingBank:0000000000000000 HAL_DisableMemorySwappingBank + /tmp/cceuBEQV.s:1043 .text.HAL_DisableMemorySwappingBank:000000000000000c $d + /tmp/cceuBEQV.s:1061 .data.uwTickFreq:0000000000000000 uwTickFreq + /tmp/cceuBEQV.s:1068 .data.uwTickPrio:0000000000000000 uwTickPrio + /tmp/cceuBEQV.s:1055 .bss.uwTick:0000000000000000 uwTick + /tmp/cceuBEQV.s:1051 .bss.uwTick:0000000000000000 $d + /tmp/cceuBEQV.s:1064 .data.uwTickPrio:0000000000000000 $d + +UNDEFINED SYMBOLS +HAL_SYSTICK_Config +HAL_NVIC_SetPriority +SystemCoreClock +HAL_NVIC_SetPriorityGrouping diff --git a/build/stm32f7xx_hal.o b/build/stm32f7xx_hal.o new file mode 100644 index 0000000..5c059d3 Binary files /dev/null and b/build/stm32f7xx_hal.o differ diff --git a/build/stm32f7xx_hal_adc.d b/build/stm32f7xx_hal_adc.d new file mode 100644 index 0000000..b579621 --- /dev/null +++ b/build/stm32f7xx_hal_adc.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_adc.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_adc.lst b/build/stm32f7xx_hal_adc.lst new file mode 100644 index 0000000..8c9dc94 --- /dev/null +++ b/build/stm32f7xx_hal_adc.lst @@ -0,0 +1,6352 @@ +ARM GAS /tmp/ccHbw826.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_adc.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.ADC_Init,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 ADC_Init: + 25 .LVL0: + 26 .LFB163: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @file stm32f7xx_hal_adc.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief This file provides firmware functions to manage the following + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * functionalities of the Analog to Digital Converter (ADC) peripheral: + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + Initialization and de-initialization functions + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + Peripheral Control functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + Peripheral State functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ****************************************************************************** + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @attention + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * Copyright (c) 2017 STMicroelectronics. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * All rights reserved. + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * This software is licensed under terms that can be found in the LICENSE file + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * in the root directory of this software component. + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ****************************************************************************** + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** @verbatim + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ============================================================================== + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ##### ADC Peripheral features ##### + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ============================================================================== + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) 12-bit, 10-bit, 8-bit or 6-bit configurable resolution. + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Interrupt generation at the end of conversion, end of injected conversion, + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** and in case of analog watchdog or overrun events + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Single and continuous conversion modes. + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Scan mode for automatic conversion of channel 0 to channel x. + ARM GAS /tmp/ccHbw826.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Data alignment with in-built data coherency. + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Channel-wise programmable sampling time. + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) External trigger option with configurable polarity for both regular and + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** injected conversion. + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Dual/Triple mode (on devices with 2 ADCs or more). + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Configurable DMA data storage in Dual/Triple ADC mode. + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Configurable delay between conversions in Dual/Triple interleaved mode. + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) ADC conversion type (refer to the datasheets). + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) ADC supply requirements: 2.4 V to 3.6 V at full speed and down to 1.8 V at + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** slower speed. + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) ADC input range: VREF(minus) = VIN = VREF(plus). + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) DMA request generation during regular channel conversion. + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ##### How to use this driver ##### + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ============================================================================== + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#)Initialize the ADC low level resources by implementing the HAL_ADC_MspInit(): + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (##) Enable the ADC interface clock using __HAL_RCC_ADC_CLK_ENABLE() + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (##) ADC pins configuration + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) Enable the clock for the ADC GPIOs using the following function: + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_RCC_GPIOx_CLK_ENABLE() + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) Configure these ADC pins in analog mode using HAL_GPIO_Init() + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (##) In case of using interrupts (e.g. HAL_ADC_Start_IT()) + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) Configure the ADC interrupt priority using HAL_NVIC_SetPriority() + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) Enable the ADC IRQ handler using HAL_NVIC_EnableIRQ() + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) In ADC IRQ handler, call HAL_ADC_IRQHandler() + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (##) In case of using DMA to control data transfer (e.g. HAL_ADC_Start_DMA()) + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) Enable the DMAx interface clock using __HAL_RCC_DMAx_CLK_ENABLE() + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) Configure and enable two DMA streams stream for managing data + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** transfer from peripheral to memory (output stream) + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) Associate the initialized DMA handle to the CRYP DMA handle + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** using __HAL_LINKDMA() + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) Configure the priority and enable the NVIC for the transfer complete + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** interrupt on the two DMA Streams. The output stream should have higher + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** priority than the input stream. + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** *** Configuration of ADC, groups regular/injected, channels parameters *** + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ============================================================================== + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Configure the ADC parameters (resolution, data alignment, ...) + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** and regular group parameters (conversion trigger, sequencer, ...) + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** using function HAL_ADC_Init(). + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Configure the channels for regular group parameters (channel number, + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** channel rank into sequencer, ..., into regular group) + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** using function HAL_ADC_ConfigChannel(). + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Optionally, configure the injected group parameters (conversion trigger, + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** sequencer, ..., of injected group) + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** and the channels for injected group parameters (channel number, + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** channel rank into sequencer, ..., into injected group) + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** using function HAL_ADCEx_InjectedConfigChannel(). + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Optionally, configure the analog watchdog parameters (channels + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** monitored, thresholds, ...) using function HAL_ADC_AnalogWDGConfig(). + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Optionally, for devices with several ADC instances: configure the + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** multimode parameters using function HAL_ADCEx_MultiModeConfigChannel(). + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** *** Execution of ADC conversions *** + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ============================================================================== + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) ADC driver can be used among three modes: polling, interruption, + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** transfer by DMA. + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** *** Polling mode IO operation *** + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ================================= + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Start the ADC peripheral using HAL_ADC_Start() + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Wait for end of conversion using HAL_ADC_PollForConversion(), at this stage + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** user can specify the value of timeout according to his end application + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) To read the ADC converted values, use the HAL_ADC_GetValue() function. + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Stop the ADC peripheral using HAL_ADC_Stop() + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** *** Interrupt mode IO operation *** + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** =================================== + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Start the ADC peripheral using HAL_ADC_Start_IT() + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Use HAL_ADC_IRQHandler() called under ADC_IRQHandler() Interrupt subroutine + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) At ADC end of conversion HAL_ADC_ConvCpltCallback() function is executed and user can + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** add his own code by customization of function pointer HAL_ADC_ConvCpltCallback + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) In case of ADC Error, HAL_ADC_ErrorCallback() function is executed and user can + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** add his own code by customization of function pointer HAL_ADC_ErrorCallback + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Stop the ADC peripheral using HAL_ADC_Stop_IT() + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** *** DMA mode IO operation *** + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ============================== + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Start the ADC peripheral using HAL_ADC_Start_DMA(), at this stage the user specify the l + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** of data to be transferred at each end of conversion + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) At The end of data transfer by HAL_ADC_ConvCpltCallback() function is executed and user + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** add his own code by customization of function pointer HAL_ADC_ConvCpltCallback + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) In case of transfer Error, HAL_ADC_ErrorCallback() function is executed and user can + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** add his own code by customization of function pointer HAL_ADC_ErrorCallback + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Stop the ADC peripheral using HAL_ADC_Stop_DMA() + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** *** ADC HAL driver macros list *** + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ============================================= + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Below the list of most used macros in ADC HAL driver. + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) __HAL_ADC_ENABLE : Enable the ADC peripheral + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) __HAL_ADC_DISABLE : Disable the ADC peripheral + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) __HAL_ADC_ENABLE_IT: Enable the ADC end of conversion interrupt + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) __HAL_ADC_DISABLE_IT: Disable the ADC end of conversion interrupt + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) __HAL_ADC_GET_IT_SOURCE: Check if the specified ADC interrupt source is enabled or disabl + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) __HAL_ADC_CLEAR_FLAG: Clear the ADC's pending flags + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) __HAL_ADC_GET_FLAG: Get the selected ADC's flag status + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) ADC_GET_RESOLUTION: Return resolution bits in CR1 register + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** *** Callback functions *** + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ============================== + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + ARM GAS /tmp/ccHbw826.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (@) Callback functions must be implemented in user program: + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+@) HAL_ADC_ErrorCallback() + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+@) HAL_ADC_LevelOutOfWindowCallback() (callback of analog watchdog) + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+@) HAL_ADC_ConvCpltCallback() + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+@) HAL_ADC_ConvHalfCpltCallback + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (@) You can refer to the ADC HAL driver header file for more useful macros + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** *** Deinitialization of ADC *** + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ============================================================================== + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Disable the ADC interface + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (++) ADC clock can be hard reset and disabled at RCC top level. + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (++) Hard reset of ADC peripherals + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** using macro __HAL_RCC_ADC_FORCE_RESET(), __HAL_RCC_ADC_RELEASE_RESET(). + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (++) ADC clock disable using the equivalent macro/functions as configuration step. + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) Example: + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Into HAL_ADC_MspDeInit() (recommended code location) or with + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** other device clock parameters configuration: + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) HAL_RCC_GetOscConfig(&RCC_OscInitStructure); + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) RCC_OscInitStructure.OscillatorType = RCC_OSCILLATORTYPE_HSI; + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) RCC_OscInitStructure.HSIState = RCC_HSI_OFF; (if not used for system clock) + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+++) HAL_RCC_OscConfig(&RCC_OscInitStructure); + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) ADC pins configuration + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (++) Disable the clock for the ADC GPIOs using macro __HAL_RCC_GPIOx_CLK_DISABLE() + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Optionally, in case of usage of ADC with interruptions: + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (++) Disable the NVIC for ADC using function HAL_NVIC_DisableIRQ(ADCx_IRQn) + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (#) Optionally, in case of usage of DMA: + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (++) Deinitialize the DMA using function HAL_DMA_DeInit(). + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (++) Disable the NVIC for DMA using function HAL_NVIC_DisableIRQ(DMAx_Channelx_IRQn) + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** *** Callback registration *** + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ============================================================================== + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** The compilation flag USE_HAL_ADC_REGISTER_CALLBACKS, when set to 1, + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** allows the user to configure dynamically the driver callbacks. + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Use Functions HAL_ADC_RegisterCallback() + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** to register an interrupt callback. + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Function HAL_ADC_RegisterCallback() allows to register following callbacks: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) ConvCpltCallback : ADC conversion complete callback + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) ConvHalfCpltCallback : ADC conversion DMA half-transfer callback + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) LevelOutOfWindowCallback : ADC analog watchdog 1 callback + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) ErrorCallback : ADC error callback + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) InjectedConvCpltCallback : ADC group injected conversion complete callback + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) InjectedQueueOverflowCallback : ADC group injected context queue overflow callback + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) LevelOutOfWindow2Callback : ADC analog watchdog 2 callback + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) LevelOutOfWindow3Callback : ADC analog watchdog 3 callback + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) EndOfSamplingCallback : ADC end of sampling callback + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) MspInitCallback : ADC Msp Init callback + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) MspDeInitCallback : ADC Msp DeInit callback + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** This function takes as parameters the HAL peripheral handle, the Callback ID + ARM GAS /tmp/ccHbw826.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** and a pointer to the user callback function. + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Use function HAL_ADC_UnRegisterCallback to reset a callback to the default + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** weak function. + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_UnRegisterCallback takes as parameters the HAL peripheral handle, + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** and the Callback ID. + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** This function allows to reset following callbacks: + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) ConvCpltCallback : ADC conversion complete callback + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) ConvHalfCpltCallback : ADC conversion DMA half-transfer callback + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) LevelOutOfWindowCallback : ADC analog watchdog 1 callback + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) ErrorCallback : ADC error callback + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) InjectedConvCpltCallback : ADC group injected conversion complete callback + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) InjectedQueueOverflowCallback : ADC group injected context queue overflow callback + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) LevelOutOfWindow2Callback : ADC analog watchdog 2 callback + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) LevelOutOfWindow3Callback : ADC analog watchdog 3 callback + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) EndOfSamplingCallback : ADC end of sampling callback + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) MspInitCallback : ADC Msp Init callback + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) MspDeInitCallback : ADC Msp DeInit callback + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** By default, after the HAL_ADC_Init() and when the state is HAL_ADC_STATE_RESET + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** all callbacks are set to the corresponding weak functions: + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** examples HAL_ADC_ConvCpltCallback(), HAL_ADC_ErrorCallback(). + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Exception done for MspInit and MspDeInit functions that are + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** reset to the legacy weak functions in the HAL_ADC_Init()/ HAL_ADC_DeInit() only when + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** these callbacks are null (not registered beforehand). + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** If MspInit or MspDeInit are not null, the HAL_ADC_Init()/ HAL_ADC_DeInit() + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state. + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Callbacks can be registered/unregistered in HAL_ADC_STATE_READY state only. + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Exception done MspInit/MspDeInit functions that can be registered/unregistered + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** in HAL_ADC_STATE_READY or HAL_ADC_STATE_RESET state, + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit. + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Then, the user first registers the MspInit/MspDeInit user callbacks + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** using HAL_ADC_RegisterCallback() before calling HAL_ADC_DeInit() + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** or HAL_ADC_Init() function. + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** When the compilation flag USE_HAL_ADC_REGISTER_CALLBACKS is set to 0 or + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** not defined, the callback registration feature is not available and all callbacks + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** are set to the corresponding weak functions. + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** @endverbatim + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ****************************************************************************** + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Includes ------------------------------------------------------------------*/ + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #include "stm32f7xx_hal.h" + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** @addtogroup STM32F7xx_HAL_Driver + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @{ + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** @defgroup ADC ADC + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief ADC driver modules + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @{ + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #ifdef HAL_ADC_MODULE_ENABLED + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Private typedef -----------------------------------------------------------*/ + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Private define ------------------------------------------------------------*/ + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Private macro -------------------------------------------------------------*/ + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Private variables ---------------------------------------------------------*/ + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** @addtogroup ADC_Private_Functions + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @{ + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Private function prototypes -----------------------------------------------*/ + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** static void ADC_Init(ADC_HandleTypeDef* hadc); + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** static void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma); + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** static void ADC_DMAError(DMA_HandleTypeDef *hdma); + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** static void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma); + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @} + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Exported functions --------------------------------------------------------*/ + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** @defgroup ADC_Exported_Functions ADC Exported Functions + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @{ + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** @defgroup ADC_Exported_Functions_Group1 Initialization and de-initialization functions + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Initialization and Configuration functions + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** @verbatim + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** =============================================================================== + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ##### Initialization and de-initialization functions ##### + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** =============================================================================== + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] This section provides functions allowing to: + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Initialize and configure the ADC. + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) De-initialize the ADC. + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** @endverbatim + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @{ + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Initializes the ADCx peripheral according to the specified parameters + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * in the ADC_InitStruct and initializes the ADC MSP. + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @note This function is used to configure the global features of the ADC ( + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * ClockPrescaler, Resolution, Data Alignment and number of conversion), however, + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the rest of the configuration parameters are specific to the regular + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * channels group (scan mode activation, continuous mode activation, + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * External trigger source and edge, DMA continuous request after the + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * last transfer and End of conversion selection). + ARM GAS /tmp/ccHbw826.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc) + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check ADC handle */ + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(hadc == NULL) + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_ERROR; + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_CLOCKPRESCALER(hadc->Init.ClockPrescaler)); + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_RESOLUTION(hadc->Init.Resolution)); + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_SCAN_MODE(hadc->Init.ScanConvMode)); + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EXT_TRIG(hadc->Init.ExternalTrigConv)); + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_DATA_ALIGN(hadc->Init.DataAlign)); + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_REGULAR_LENGTH(hadc->Init.NbrOfConversion)); + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests)); + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EOCSelection(hadc->Init.EOCSelection)); + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DiscontinuousConvMode)); + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(hadc->State == HAL_ADC_STATE_RESET) + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Init the ADC Callback settings */ + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ConvCpltCallback = HAL_ADC_ConvCpltCallback; /* Legacy weak + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ConvHalfCpltCallback = HAL_ADC_ConvHalfCpltCallback; /* Legacy weak + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->LevelOutOfWindowCallback = HAL_ADC_LevelOutOfWindowCallback; /* Legacy weak + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCallback = HAL_ADC_ErrorCallback; /* Legacy weak + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->InjectedConvCpltCallback = HAL_ADCEx_InjectedConvCpltCallback; /* Legacy weak + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (hadc->MspInitCallback == NULL) + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspInitCallback = HAL_ADC_MspInit; /* Legacy weak MspInit */ + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Init the low level hardware */ + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspInitCallback(hadc); + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #else + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Init the low level hardware */ + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_MspInit(hadc); + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Initialize ADC error code */ + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_CLEAR_ERRORCODE(hadc); + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Allocate lock resource and initialize it */ + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Lock = HAL_UNLOCKED; + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Configuration of ADC parameters if previous preliminary actions are */ + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* correctly completed. */ + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL)) + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_BUSY_INTERNAL); + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC parameters */ + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_Init(hadc); + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC error code to none */ + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_CLEAR_ERRORCODE(hadc); + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the ADC state */ + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_BUSY_INTERNAL, + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_READY); + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp_hal_status = HAL_ERROR; + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Release Lock */ + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return function status */ + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return tmp_hal_status; + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Deinitializes the ADCx peripheral registers to their default reset values. + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef* hadc) + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check ADC handle */ + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(hadc == NULL) + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_ERROR; + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_BUSY_INTERNAL); + ARM GAS /tmp/ccHbw826.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Stop potential conversion on going, on regular and injected groups */ + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable ADC peripheral */ + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_DISABLE(hadc); + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Configuration of ADC parameters if previous preliminary actions are */ + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* correctly completed. */ + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (hadc->MspDeInitCallback == NULL) + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspDeInitCallback = HAL_ADC_MspDeInit; /* Legacy weak MspDeInit */ + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* DeInit the low level hardware: RCC clock, NVIC */ + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspDeInitCallback(hadc); + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #else + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* DeInit the low level hardware: RCC clock, NVIC */ + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_MspDeInit(hadc); + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC error code to none */ + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_CLEAR_ERRORCODE(hadc); + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->State = HAL_ADC_STATE_RESET; + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return function status */ + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return tmp_hal_status; + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Initializes the ADC MSP. + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __weak void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** UNUSED(hadc); + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** the HAL_ADC_MspInit could be implemented in the user file + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief DeInitializes the ADC MSP. + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + ARM GAS /tmp/ccHbw826.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __weak void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** UNUSED(hadc); + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** the HAL_ADC_MspDeInit could be implemented in the user file + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Register a User ADC Callback + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * To be used instead of the weak predefined callback + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc Pointer to a ADC_HandleTypeDef structure that contains + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param CallbackID ID of the callback to be registered + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * This parameter can be one of the following values: + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_CONVERSION_COMPLETE_CB_ID ADC conversion complete callback ID + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_CONVERSION_HALF_CB_ID ADC conversion DMA half-transfer call + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID ADC analog watchdog 1 callback ID + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_ERROR_CB_ID ADC error callback ID + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID ADC group injected conversion complet + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_INJ_QUEUE_OVEFLOW_CB_ID ADC group injected context queue over + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_MSPINIT_CB_ID ADC Msp Init callback ID + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_MSPDEINIT_CB_ID ADC Msp DeInit callback ID + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param pCallback pointer to the Callback function + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_RegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef Callb + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef status = HAL_OK; + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (pCallback == NULL) + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update the error code */ + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_ERROR; + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if ((hadc->State & HAL_ADC_STATE_READY) != 0UL) + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** switch (CallbackID) + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_CONVERSION_COMPLETE_CB_ID : + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ConvCpltCallback = pCallback; + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_CONVERSION_HALF_CB_ID : + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ConvHalfCpltCallback = pCallback; + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID : + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->LevelOutOfWindowCallback = pCallback; + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_ERROR_CB_ID : + ARM GAS /tmp/ccHbw826.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCallback = pCallback; + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID : + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->InjectedConvCpltCallback = pCallback; + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_MSPINIT_CB_ID : + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspInitCallback = pCallback; + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_MSPDEINIT_CB_ID : + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspDeInitCallback = pCallback; + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** default : + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update the error code */ + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return error status */ + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** status = HAL_ERROR; + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else if (HAL_ADC_STATE_RESET == hadc->State) + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** switch (CallbackID) + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_MSPINIT_CB_ID : + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspInitCallback = pCallback; + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_MSPDEINIT_CB_ID : + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspDeInitCallback = pCallback; + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** default : + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update the error code */ + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return error status */ + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** status = HAL_ERROR; + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update the error code */ + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return error status */ + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** status = HAL_ERROR; + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return status; + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Unregister a ADC Callback + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * ADC callback is redirected to the weak predefined callback + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc Pointer to a ADC_HandleTypeDef structure that contains + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param CallbackID ID of the callback to be unregistered + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * This parameter can be one of the following values: + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_CONVERSION_COMPLETE_CB_ID ADC conversion complete callback ID + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_CONVERSION_HALF_CB_ID ADC conversion DMA half-transfer call + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID ADC analog watchdog 1 callback ID + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_ERROR_CB_ID ADC error callback ID + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID ADC group injected conversion complet + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_INJ_QUEUE_OVEFLOW_CB_ID ADC group injected context queue over + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_MSPINIT_CB_ID ADC Msp Init callback ID + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg @ref HAL_ADC_MSPDEINIT_CB_ID ADC Msp DeInit callback ID + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_UnRegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef Cal + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef status = HAL_OK; + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if ((hadc->State & HAL_ADC_STATE_READY) != 0UL) + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** switch (CallbackID) + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_CONVERSION_COMPLETE_CB_ID : + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ConvCpltCallback = HAL_ADC_ConvCpltCallback; + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_CONVERSION_HALF_CB_ID : + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ConvHalfCpltCallback = HAL_ADC_ConvHalfCpltCallback; + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID : + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->LevelOutOfWindowCallback = HAL_ADC_LevelOutOfWindowCallback; + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_ERROR_CB_ID : + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCallback = HAL_ADC_ErrorCallback; + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID : + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->InjectedConvCpltCallback = HAL_ADCEx_InjectedConvCpltCallback; + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_MSPINIT_CB_ID : + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspInitCallback = HAL_ADC_MspInit; /* Legacy weak MspInit */ + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_MSPDEINIT_CB_ID : + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspDeInitCallback = HAL_ADC_MspDeInit; /* Legacy weak MspDeInit */ + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** default : + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update the error code */ + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 13 + + + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return error status */ + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** status = HAL_ERROR; + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else if (HAL_ADC_STATE_RESET == hadc->State) + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** switch (CallbackID) + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_MSPINIT_CB_ID : + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspInitCallback = HAL_ADC_MspInit; /* Legacy weak MspInit + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** case HAL_ADC_MSPDEINIT_CB_ID : + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->MspDeInitCallback = HAL_ADC_MspDeInit; /* Legacy weak MspDeInit + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** default : + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update the error code */ + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return error status */ + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** status = HAL_ERROR; + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** break; + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update the error code */ + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK; + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return error status */ + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** status = HAL_ERROR; + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return status; + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @} + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** @defgroup ADC_Exported_Functions_Group2 IO operation functions + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief IO operation functions + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** @verbatim + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** =============================================================================== + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ##### IO operation functions ##### + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** =============================================================================== + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] This section provides functions allowing to: + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Start conversion of regular channel. + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Stop conversion of regular channel. + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Start conversion of regular channel and enable interrupt. + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Stop conversion of regular channel and disable interrupt. + ARM GAS /tmp/ccHbw826.s page 14 + + + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Start conversion of regular channel and enable DMA transfer. + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Stop conversion of regular channel and disable DMA transfer. + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Handle ADC interrupt request. + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** @endverbatim + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @{ + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Enables ADC and starts conversion of the regular channels. + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc) + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process locked */ + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_LOCK(hadc); + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the ADC peripheral */ + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if ADC peripheral is disabled in order to enable it and wait during + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Tstab time the ADC's stabilization */ + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the Peripheral */ + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_ENABLE(hadc); + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Delay for ADC stabilization time */ + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Compute number of CPU cycles to wait for */ + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** counter--; + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Start conversion if ADC is effectively enabled */ + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* - Clear state bitfield related to regular group conversion results */ + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* - Set state bitfield related to regular group operation */ + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY); + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* If conversions on group regular are also triggering group injected, */ + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* update ADC state. */ + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET) + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY); + ARM GAS /tmp/ccHbw826.s page 15 + + + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* State machine update: Check if an injected conversion is ongoing */ + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Reset ADC error code fields related to conversions on group regular */ + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA)); + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Reset ADC all error code fields */ + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_CLEAR_ERRORCODE(hadc); + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Unlock before starting ADC conversions: in case of potential */ + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* interruption, to let the process to ADC IRQ Handler. */ + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear regular group conversion flag and overrun flag */ + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* (To ensure of no unknown state from potential previous ADC operations) */ + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC | ADC_FLAG_OVR); + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if Multimode enabled */ + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI)) + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if no external trigger present enable software conversion of regular channels */ + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET) + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the selected ADC software conversion for regular group */ + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if instance of handle correspond to ADC1 and no external trigger present enable software + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance == ADC1) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the selected ADC software conversion for regular group */ + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if dual mode is selected, ADC3 works independently. */ + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* check if the mode selected is not triple */ + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if( HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI_4) ) + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if instance of handle correspond to ADC3 and no external trigger present enable software + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance == ADC3) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the selected ADC software conversion for regular group */ + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 16 + + + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update ADC state machine to error */ + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC error code to ADC IP internal error */ + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return function status */ + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_OK; + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Disables ADC and stop conversion of regular channels. + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @note Caution: This function will stop also injected channels. + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status. + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc) + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process locked */ + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_LOCK(hadc); + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Stop potential conversion on going, on regular and injected groups */ + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable ADC peripheral */ + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_DISABLE(hadc); + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if ADC is effectively disabled */ + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_READY); + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return function status */ + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_OK; + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Poll for regular conversion complete + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @note ADC conversion flags EOS (end of sequence) and EOC (end of + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * conversion) are cleared by this function. + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @note This function cannot be used in a particular setup: ADC configured + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * in DMA mode and polling for end of each conversion (ADC init + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * parameter "EOCSelection" set to ADC_EOC_SINGLE_CONV). + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * In this case, DMA resets the flag EOC and polling cannot be + ARM GAS /tmp/ccHbw826.s page 17 + + + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * performed on each conversion. Nevertheless, polling can still + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * be performed on the complete sequence. + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param Timeout Timeout value in millisecond. + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout) + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tickstart = 0; + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Verification that ADC configuration is compliant with polling for */ + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* each conversion: */ + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Particular case is ADC configured in DMA mode and ADC sequencer with */ + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* several ranks and polling for end of each conversion. */ + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* For code simplicity sake, this particular case is generalized to */ + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* ADC configured in DMA mode and polling for end of each conversion. */ + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_EOCS) && + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_DMA) ) + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update ADC state machine to error */ + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_ERROR; + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Get tick */ + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tickstart = HAL_GetTick(); + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check End of conversion flag */ + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))) + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if timeout is disabled (set to infinite wait) */ + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(Timeout != HAL_MAX_DELAY) + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((Timeout == 0) || ((HAL_GetTick() - tickstart ) > Timeout)) + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* New check to avoid false timeout detection in case of preemption */ + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))) + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update ADC state machine to timeout */ + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT); + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_TIMEOUT; + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear regular group conversion flag */ + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC); + ARM GAS /tmp/ccHbw826.s page 18 + + + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update ADC state machine */ + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Determine whether any further conversion upcoming on group regular */ + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* by external trigger, continuous mode or scan sequence on going. */ + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Note: On STM32F7, there is no independent flag of end of sequence. */ + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* The test of scan sequence on going is done either with scan */ + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* sequence disabled or with end of conversion flag set to */ + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* of end of sequence. */ + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(ADC_IS_SOFTWARE_START_REGULAR(hadc) && + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY); + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_READY); + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return ADC state */ + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_OK; + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Poll for conversion event + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param EventType the ADC event type. + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * This parameter can be one of the following values: + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg ADC_AWD_EVENT: ADC Analog watch Dog event. + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @arg ADC_OVR_EVENT: ADC Overrun event. + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param Timeout Timeout value in millisecond. + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeou + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tickstart = 0; + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EVENT_TYPE(EventType)); + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Get tick */ + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tickstart = HAL_GetTick(); + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check selected event flag */ + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(!(__HAL_ADC_GET_FLAG(hadc,EventType))) + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check for the Timeout */ + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(Timeout != HAL_MAX_DELAY) + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((Timeout == 0) || ((HAL_GetTick() - tickstart ) > Timeout)) + ARM GAS /tmp/ccHbw826.s page 19 + + +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* New check to avoid false timeout detection in case of preemption */ +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(!(__HAL_ADC_GET_FLAG(hadc,EventType))) +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update ADC state machine to timeout */ +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT); +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_TIMEOUT; +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Analog watchdog (level out of window) event */ +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(EventType == ADC_AWD_EVENT) +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_AWD1); +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear ADC analog watchdog flag */ +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD); +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Overrun event */ +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_REG_OVR); +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC error code to overrun */ +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_OVR); +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear ADC overrun flag */ +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR); +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return ADC state */ +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_OK; +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Enables the interrupt and starts ADC conversion of regular channels. +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status. +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc) +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process locked */ + ARM GAS /tmp/ccHbw826.s page 20 + + +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_LOCK(hadc); +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the ADC peripheral */ +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if ADC peripheral is disabled in order to enable it and wait during +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Tstab time the ADC's stabilization */ +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the Peripheral */ +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_ENABLE(hadc); +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Delay for ADC stabilization time */ +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Compute number of CPU cycles to wait for */ +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** counter--; +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Start conversion if ADC is effectively enabled */ +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* - Clear state bitfield related to regular group conversion results */ +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* - Set state bitfield related to regular group operation */ +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY); +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* If conversions on group regular are also triggering group injected, */ +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* update ADC state. */ +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET) +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY); +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* State machine update: Check if an injected conversion is ongoing */ +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY)) +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Reset ADC error code fields related to conversions on group regular */ +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA)); +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Reset ADC all error code fields */ +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_CLEAR_ERRORCODE(hadc); +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Unlock before starting ADC conversions: in case of potential */ +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* interruption, to let the process to ADC IRQ Handler. */ +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear regular group conversion flag and overrun flag */ +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* (To ensure of no unknown state from potential previous ADC operations) */ +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC | ADC_FLAG_OVR); +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 21 + + +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable end of conversion interrupt for regular group */ +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_ENABLE_IT(hadc, (ADC_IT_EOC | ADC_IT_OVR)); +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if Multimode enabled */ +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI)) +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if no external trigger present enable software conversion of regular channels */ +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET) +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the selected ADC software conversion for regular group */ +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if instance of handle correspond to ADC1 and no external trigger present enable software +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance == ADC1) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the selected ADC software conversion for regular group */ +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if dual mode is selected, ADC3 works independently. */ +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* check if the mode selected is not triple */ +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if( HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI_4) ) +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if instance of handle correspond to ADC3 and no external trigger present enable softwar +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance == ADC3) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the selected ADC software conversion for regular group */ +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update ADC state machine to error */ +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC error code to ADC IP internal error */ +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return function status */ +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_OK; +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Disables the interrupt and stop ADC conversion of regular channels. +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @note Caution: This function will stop also injected channels. +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status. +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + ARM GAS /tmp/ccHbw826.s page 22 + + +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc) +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process locked */ +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_LOCK(hadc); +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Stop potential conversion on going, on regular and injected groups */ +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable ADC peripheral */ +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_DISABLE(hadc); +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if ADC is effectively disabled */ +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable ADC end of conversion interrupt for regular group */ +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_DISABLE_IT(hadc, (ADC_IT_EOC | ADC_IT_OVR)); +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_READY); +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return function status */ +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_OK; +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Handles ADC interrupt request +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc) +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tmp1 = 0, tmp2 = 0; +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tmp_sr = hadc->Instance->SR; +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tmp_cr1 = hadc->Instance->CR1; +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_REGULAR_LENGTH(hadc->Init.NbrOfConversion)); +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EOCSelection(hadc->Init.EOCSelection)); +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp1 = tmp_sr & ADC_FLAG_EOC; +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp2 = tmp_cr1 & ADC_IT_EOC; +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check End of conversion flag for regular channels */ +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(tmp1 && tmp2) +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update state machine on conversion status if not in error state */ +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL)) + ARM GAS /tmp/ccHbw826.s page 23 + + +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Determine whether any further conversion upcoming on group regular */ +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* by external trigger, continuous mode or scan sequence on going. */ +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Note: On STM32F7, there is no independent flag of end of sequence. */ +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* The test of scan sequence on going is done either with scan */ +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* sequence disabled or with end of conversion flag set to */ +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* of end of sequence. */ +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(ADC_IS_SOFTWARE_START_REGULAR(hadc) && +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) +1244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable ADC end of single conversion interrupt on group regular */ +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Note: Overrun interrupt was enabled with EOC interrupt in */ +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* HAL_ADC_Start_IT(), but is not disabled here because can be used */ +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* by overrun IRQ process below. */ +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC); +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY); +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY)) +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_READY); +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Conversion complete callback */ +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ConvCpltCallback(hadc); +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #else +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_ConvCpltCallback(hadc); +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear regular group conversion flag */ +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC); +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp1 = tmp_sr & ADC_FLAG_JEOC; +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp2 = tmp_cr1 & ADC_IT_JEOC; +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check End of conversion flag for injected channels */ +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(tmp1 && tmp2) +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update state machine on conversion status if not in error state */ +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL)) +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_INJ_EOC); +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Determine whether any further conversion upcoming on group injected */ +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* by external trigger, scan sequence on going or by automatic injected */ +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* conversion from group regular (same conditions as group regular */ + ARM GAS /tmp/ccHbw826.s page 24 + + +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* interruption disabling above). */ +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(ADC_IS_SOFTWARE_START_INJECTED(hadc) && +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS)) && +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) && +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (ADC_IS_SOFTWARE_START_REGULAR(hadc) && +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE)))) +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable ADC end of single conversion interrupt on group injected */ +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC); +1296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY); +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY)) +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_READY); +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Conversion complete callback */ +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->InjectedConvCpltCallback(hadc); +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #else +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADCEx_InjectedConvCpltCallback(hadc); +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear injected group conversion flag */ +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_JSTRT | ADC_FLAG_JEOC)); +1315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp1 = tmp_sr & ADC_FLAG_AWD; +1318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp2 = tmp_cr1 & ADC_IT_AWD; +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check Analog watchdog flag */ +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(tmp1 && tmp2) +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_AWD)) +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_AWD1); +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Level out of window callback */ +1328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->LevelOutOfWindowCallback(hadc); +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #else +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_LevelOutOfWindowCallback(hadc); +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear the ADC analog watchdog flag */ +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD); +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp1 = tmp_sr & ADC_FLAG_OVR; +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp2 = tmp_cr1 & ADC_IT_OVR; +1342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check Overrun flag */ + ARM GAS /tmp/ccHbw826.s page 25 + + +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(tmp1 && tmp2) +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Note: On STM32F7, ADC overrun can be set through other parameters */ +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* refer to description of parameter "EOCSelection" for more */ +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* details. */ +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC error code to overrun */ +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_OVR); +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear ADC overrun flag */ +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR); +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Error callback */ +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCallback(hadc); +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #else +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_ErrorCallback(hadc); +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear the Overrun flag */ +1363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR); +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Enables ADC DMA request after last transfer (Single-ADC mode) and enables ADC periphera +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param pData The destination Buffer address. +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param Length The length of data to be transferred from ADC peripheral to memory. +1373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status +1374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length) +1376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); +1382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process locked */ +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_LOCK(hadc); +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the ADC peripheral */ +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if ADC peripheral is disabled in order to enable it and wait during +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** Tstab time the ADC's stabilization */ +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the Peripheral */ +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_ENABLE(hadc); +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Delay for ADC stabilization time */ +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Compute number of CPU cycles to wait for */ +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** counter--; + ARM GAS /tmp/ccHbw826.s page 26 + + +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Start conversion if ADC is effectively enabled */ +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* - Clear state bitfield related to regular group conversion results */ +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* - Set state bitfield related to regular group operation */ +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, +1410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY); +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* If conversions on group regular are also triggering group injected, */ +1414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* update ADC state. */ +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET) +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY); +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* State machine update: Check if an injected conversion is ongoing */ +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY)) +1422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Reset ADC error code fields related to conversions on group regular */ +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA)); +1425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Reset ADC all error code fields */ +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_CLEAR_ERRORCODE(hadc); +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Unlock before starting ADC conversions: in case of potential */ +1434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* interruption, to let the process to ADC IRQ Handler. */ +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the DMA transfer complete callback */ +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->DMA_Handle->XferCpltCallback = ADC_DMAConvCplt; +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the DMA half transfer complete callback */ +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->DMA_Handle->XferHalfCpltCallback = ADC_DMAHalfConvCplt; +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the DMA error callback */ +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->DMA_Handle->XferErrorCallback = ADC_DMAError; +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Manage ADC and DMA start: ADC overrun interruption, DMA start, ADC */ +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* start (in case of SW start): */ +1449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear regular group conversion flag and overrun flag */ +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* (To ensure of no unknown state from potential previous ADC operations) */ +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC | ADC_FLAG_OVR); +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable ADC overrun interrupt */ +1455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_ENABLE_IT(hadc, ADC_IT_OVR); +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 27 + + +1457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable ADC DMA mode */ +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= ADC_CR2_DMA; +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Start the DMA channel */ +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_DMA_Start_IT(hadc->DMA_Handle, (uint32_t)&hadc->Instance->DR, (uint32_t)pData, Length); +1462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if Multimode enabled */ +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI)) +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if no external trigger present enable software conversion of regular channels */ +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET) +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the selected ADC software conversion for regular group */ +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if instance of handle correspond to ADC1 and no external trigger present enable software +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance == ADC1) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the selected ADC software conversion for regular group */ +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if dual mode is selected, ADC3 works independently. */ +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* check if the mode selected is not triple */ +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if( HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI_4) ) +1484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if instance of handle correspond to ADC3 and no external trigger present enable softwar +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if((hadc->Instance == ADC3) && ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)) +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the selected ADC software conversion for regular group */ +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update ADC state machine to error */ +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC error code to ADC IP internal error */ +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return function status */ +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_OK; +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Disables ADC DMA (Single-ADC mode) and disables ADC peripheral +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc) + ARM GAS /tmp/ccHbw826.s page 28 + + +1514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process locked */ +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_LOCK(hadc); +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Stop potential conversion on going, on regular and injected groups */ +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable ADC peripheral */ +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_DISABLE(hadc); +1526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if ADC is effectively disabled */ +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable the selected ADC DMA mode */ +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~ADC_CR2_DMA; +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable the DMA channel (in case of DMA in circular mode or stop while */ +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* DMA transfer is on going) */ +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (hadc->DMA_Handle->State == HAL_DMA_STATE_BUSY) +1536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp_hal_status = HAL_DMA_Abort(hadc->DMA_Handle); +1538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check if DMA channel effectively disabled */ +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (tmp_hal_status != HAL_OK) +1541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update ADC state machine to error */ +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA); +1544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable ADC overrun interrupt */ +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_DISABLE_IT(hadc, ADC_IT_OVR); +1549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +1551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_STATE_CLR_SET(hadc->State, +1552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, +1553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_READY); +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); +1558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return function status */ +1560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return tmp_hal_status; +1561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Gets the converted value from data register of regular channel. +1565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval Converted value +1568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc) +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 29 + + +1571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return the selected ADC converted value */ +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return hadc->Instance->DR; +1573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Regular conversion complete callback in non blocking mode +1577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None +1580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __weak void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) +1582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** UNUSED(hadc); +1585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, +1586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** the HAL_ADC_ConvCpltCallback could be implemented in the user file +1587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Regular conversion half DMA transfer callback in non blocking mode +1592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None +1595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __weak void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc) +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** UNUSED(hadc); +1600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, +1601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** the HAL_ADC_ConvHalfCpltCallback could be implemented in the user file +1602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Analog watchdog callback in non blocking mode +1607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None +1610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __weak void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc) +1612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ +1614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** UNUSED(hadc); +1615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, +1616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** the HAL_ADC_LevelOoutOfWindowCallback could be implemented in the user file +1617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Error ADC callback. +1622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @note In case of error due to overrun when using ADC with DMA transfer +1623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * (HAL ADC handle parameter "ErrorCode" to state "HAL_ADC_ERROR_OVR"): +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * - Reinitialize the DMA using function "HAL_ADC_Stop_DMA()". +1625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * - If needed, restart a new ADC conversion using function +1626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * "HAL_ADC_Start_DMA()" +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * (this function is also clearing overrun flag) + ARM GAS /tmp/ccHbw826.s page 30 + + +1628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None +1631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __weak void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc) +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** UNUSED(hadc); +1636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, +1637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** the HAL_ADC_ErrorCallback could be implemented in the user file +1638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @} +1643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** @defgroup ADC_Exported_Functions_Group3 Peripheral Control functions +1646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Peripheral Control functions +1647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * +1648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** @verbatim +1649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** =============================================================================== +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ##### Peripheral Control functions ##### +1651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** =============================================================================== +1652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] This section provides functions allowing to: +1653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Configure regular channels. +1654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Configure injected channels. +1655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Configure multimode. +1656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Configure the analog watch dog. +1657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** @endverbatim +1659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @{ +1660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Configures for the selected ADC regular channel its corresponding +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * rank in the sequencer and its sample time. +1665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param sConfig ADC configuration structure. +1668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status +1669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig) +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; +1673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ +1675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_CHANNEL(sConfig->Channel)); +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_REGULAR_RANK(sConfig->Rank)); +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_SAMPLE_TIME(sConfig->SamplingTime)); +1678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process locked */ +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_LOCK(hadc); +1681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if ADC_Channel_10 ... ADC_Channel_18 is selected */ +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if ((sConfig->Channel > ADC_CHANNEL_9) && (sConfig->Channel != ADC_INTERNAL_NONE)) +1684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 31 + + +1685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear the old sample time */ +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SMPR1 &= ~ADC_SMPR1(ADC_SMPR1_SMP10, sConfig->Channel); +1687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the new sample time */ +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SMPR1 |= ADC_SMPR1(sConfig->SamplingTime, ADC_CHANNEL_18); +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the new sample time */ +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SMPR1 |= ADC_SMPR1(sConfig->SamplingTime, sConfig->Channel); +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else /* ADC_Channel include in ADC_Channel_[0..9] */ +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear the old sample time */ +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SMPR2 &= ~ADC_SMPR2(ADC_SMPR2_SMP0, sConfig->Channel); +1703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the new sample time */ +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SMPR2 |= ADC_SMPR2(sConfig->SamplingTime, sConfig->Channel); +1706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* For Rank 1 to 6 */ +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (sConfig->Rank < 7) +1710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear the old SQx bits for the selected rank */ +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SQR3 &= ~ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->Rank); +1713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the SQx bits for the selected rank */ +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SQR3 |= ADC_SQR3_RK(sConfig->Channel, sConfig->Rank); +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* For Rank 7 to 12 */ +1718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else if (sConfig->Rank < 13) +1719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear the old SQx bits for the selected rank */ +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SQR2 &= ~ADC_SQR2_RK(ADC_SQR2_SQ7, sConfig->Rank); +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the SQx bits for the selected rank */ +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SQR2 |= ADC_SQR2_RK(sConfig->Channel, sConfig->Rank); +1725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* For Rank 13 to 16 */ +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear the old SQx bits for the selected rank */ +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SQR1 &= ~ADC_SQR1_RK(ADC_SQR1_SQ13, sConfig->Rank); +1731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the SQx bits for the selected rank */ +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SQR1 |= ADC_SQR1_RK(sConfig->Channel, sConfig->Rank); +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if no internal channel selected */ +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if ((hadc->Instance == ADC1) && (sConfig->Channel == ADC_INTERNAL_NONE)) +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable the VBAT & TSVREFE channel*/ +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC->CCR &= ~(ADC_CCR_VBATE | ADC_CCR_TSVREFE); +1741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + ARM GAS /tmp/ccHbw826.s page 32 + + +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if ADC1 Channel_18 is selected enable VBAT Channel */ +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if ((hadc->Instance == ADC1) && (sConfig->Channel == ADC_CHANNEL_VBAT)) +1745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable the TEMPSENSOR channel as it is multiplixed with the VBAT channel */ +1747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC->CCR &= ~ADC_CCR_TSVREFE; +1748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the VBAT channel*/ +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC->CCR |= ADC_CCR_VBATE; +1751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* if ADC1 Channel_18 or Channel_17 is selected enable TSVREFE Channel(Temperature sensor and VRE +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if ((hadc->Instance == ADC1) && ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) || (sConfig->Channe +1755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable the VBAT channel as it is multiplixed with TEMPSENSOR channel */ +1757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC->CCR &= ~ADC_CCR_VBATE; +1758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the TSVREFE channel*/ +1760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC->CCR |= ADC_CCR_TSVREFE; +1761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) +1763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Delay for temperature sensor stabilization time */ +1765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Compute number of CPU cycles to wait for */ +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** counter = (ADC_TEMPSENSOR_DELAY_US * (SystemCoreClock / 1000000)); +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) +1768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** counter--; +1770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ +1775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); +1776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return function status */ +1778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_OK; +1779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Configures the analog watchdog. +1783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @note Analog watchdog thresholds can be modified while ADC conversion +1784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * is on going. +1785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * In this case, some constraints must be taken into account: +1786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the programmed threshold values are effective from the next +1787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * ADC EOC (end of unitary conversion). +1788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * Considering that registers write delay may happen due to +1789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * bus activity, this might cause an uncertainty on the +1790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * effective timing of the new programmed threshold values. +1791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param AnalogWDGConfig pointer to an ADC_AnalogWDGConfTypeDef structure +1794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * that contains the configuration information of ADC analog watchdog. +1795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL status +1796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* Analog +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 33 + + +1799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #ifdef USE_FULL_ASSERT +1800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tmp = 0; +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_FULL_ASSERT */ +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ +1804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_ANALOG_WATCHDOG(AnalogWDGConfig->WatchdogMode)); +1805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_CHANNEL(AnalogWDGConfig->Channel)); +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(AnalogWDGConfig->ITMode)); +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #ifdef USE_FULL_ASSERT +1809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp = ADC_GET_RESOLUTION(hadc); +1810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_RANGE(tmp, AnalogWDGConfig->HighThreshold)); +1811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_RANGE(tmp, AnalogWDGConfig->LowThreshold)); +1812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_FULL_ASSERT */ +1813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process locked */ +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_LOCK(hadc); +1816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(AnalogWDGConfig->ITMode == ENABLE) +1818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the ADC Analog watchdog interrupt */ +1820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_ENABLE_IT(hadc, ADC_IT_AWD); +1821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable the ADC Analog watchdog interrupt */ +1825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_DISABLE_IT(hadc, ADC_IT_AWD); +1826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear AWDEN, JAWDEN and AWDSGL bits */ +1829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 &= ~(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN | ADC_CR1_AWDEN); +1830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the analog watchdog enable mode */ +1832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 |= AnalogWDGConfig->WatchdogMode; +1833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the high threshold */ +1835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->HTR = AnalogWDGConfig->HighThreshold; +1836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the low threshold */ +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->LTR = AnalogWDGConfig->LowThreshold; +1839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Clear the Analog watchdog channel select bits */ +1841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 &= ~ADC_CR1_AWDCH; +1842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the Analog watchdog channel */ +1844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 |= (uint32_t)((uint16_t)(AnalogWDGConfig->Channel)); +1845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Process unlocked */ +1847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_UNLOCK(hadc); +1848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return function status */ +1850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return HAL_OK; +1851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @} +1855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ + ARM GAS /tmp/ccHbw826.s page 34 + + +1856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** @defgroup ADC_Exported_Functions_Group4 ADC Peripheral State functions +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief ADC Peripheral State functions +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * +1860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** @verbatim +1861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** =============================================================================== +1862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ##### Peripheral State and errors functions ##### +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** =============================================================================== +1864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** [..] +1865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** This subsection provides functions allowing to +1866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Check the ADC state +1867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (+) Check the ADC Error +1868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** @endverbatim +1870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @{ +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief return the ADC state +1875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval HAL state +1878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t HAL_ADC_GetState(ADC_HandleTypeDef* hadc) +1880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return ADC state */ +1882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return hadc->State; +1883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Return the ADC error code +1887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval ADC Error Code +1890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc) +1892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return hadc->ErrorCode; +1894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @} +1898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @} +1902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Private functions ---------------------------------------------------------*/ +1905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** @defgroup ADC_Private_Functions ADC Private Functions +1907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @{ +1908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief Initializes the ADCx peripheral according to the specified parameters +1912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * in the ADC_InitStruct without initializing the ADC MSP. + ARM GAS /tmp/ccHbw826.s page 35 + + +1913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains +1914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified ADC. +1915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None +1916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** static void ADC_Init(ADC_HandleTypeDef* hadc) +1918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 28 .loc 1 1918 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. +1919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC parameters */ +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the ADC clock prescaler */ +1921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC->CCR &= ~(ADC_CCR_ADCPRE); + 33 .loc 1 1921 3 view .LVU1 + 34 .loc 1 1921 12 is_stmt 0 view .LVU2 + 35 0000 4A4B ldr r3, .L6 + 36 0002 5A68 ldr r2, [r3, #4] + 37 0004 22F44032 bic r2, r2, #196608 + 38 0008 5A60 str r2, [r3, #4] +1922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC->CCR |= hadc->Init.ClockPrescaler; + 39 .loc 1 1922 3 is_stmt 1 view .LVU3 + 40 .loc 1 1922 12 is_stmt 0 view .LVU4 + 41 000a 5A68 ldr r2, [r3, #4] + 42 .loc 1 1922 26 view .LVU5 + 43 000c 4168 ldr r1, [r0, #4] + 44 .loc 1 1922 12 view .LVU6 + 45 000e 0A43 orrs r2, r2, r1 + 46 0010 5A60 str r2, [r3, #4] +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC scan mode */ +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 &= ~(ADC_CR1_SCAN); + 47 .loc 1 1925 3 is_stmt 1 view .LVU7 + 48 .loc 1 1925 7 is_stmt 0 view .LVU8 + 49 0012 0268 ldr r2, [r0] + 50 .loc 1 1925 23 view .LVU9 + 51 0014 5368 ldr r3, [r2, #4] + 52 0016 23F48073 bic r3, r3, #256 + 53 001a 5360 str r3, [r2, #4] +1926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 |= ADC_CR1_SCANCONV(hadc->Init.ScanConvMode); + 54 .loc 1 1926 3 is_stmt 1 view .LVU10 + 55 .loc 1 1926 7 is_stmt 0 view .LVU11 + 56 001c 0268 ldr r2, [r0] + 57 .loc 1 1926 23 view .LVU12 + 58 001e 5368 ldr r3, [r2, #4] + 59 .loc 1 1926 27 view .LVU13 + 60 0020 0169 ldr r1, [r0, #16] + 61 .loc 1 1926 23 view .LVU14 + 62 0022 43EA0123 orr r3, r3, r1, lsl #8 + 63 0026 5360 str r3, [r2, #4] +1927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC resolution */ +1929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 &= ~(ADC_CR1_RES); + 64 .loc 1 1929 3 is_stmt 1 view .LVU15 + 65 .loc 1 1929 7 is_stmt 0 view .LVU16 + 66 0028 0268 ldr r2, [r0] + 67 .loc 1 1929 23 view .LVU17 + ARM GAS /tmp/ccHbw826.s page 36 + + + 68 002a 5368 ldr r3, [r2, #4] + 69 002c 23F04073 bic r3, r3, #50331648 + 70 0030 5360 str r3, [r2, #4] +1930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 |= hadc->Init.Resolution; + 71 .loc 1 1930 3 is_stmt 1 view .LVU18 + 72 .loc 1 1930 7 is_stmt 0 view .LVU19 + 73 0032 0268 ldr r2, [r0] + 74 .loc 1 1930 23 view .LVU20 + 75 0034 5368 ldr r3, [r2, #4] + 76 .loc 1 1930 37 view .LVU21 + 77 0036 8168 ldr r1, [r0, #8] + 78 .loc 1 1930 23 view .LVU22 + 79 0038 0B43 orrs r3, r3, r1 + 80 003a 5360 str r3, [r2, #4] +1931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC data alignment */ +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_ALIGN); + 81 .loc 1 1933 3 is_stmt 1 view .LVU23 + 82 .loc 1 1933 7 is_stmt 0 view .LVU24 + 83 003c 0268 ldr r2, [r0] + 84 .loc 1 1933 23 view .LVU25 + 85 003e 9368 ldr r3, [r2, #8] + 86 0040 23F40063 bic r3, r3, #2048 + 87 0044 9360 str r3, [r2, #8] +1934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= hadc->Init.DataAlign; + 88 .loc 1 1934 3 is_stmt 1 view .LVU26 + 89 .loc 1 1934 7 is_stmt 0 view .LVU27 + 90 0046 0268 ldr r2, [r0] + 91 .loc 1 1934 23 view .LVU28 + 92 0048 9368 ldr r3, [r2, #8] + 93 .loc 1 1934 36 view .LVU29 + 94 004a C168 ldr r1, [r0, #12] + 95 .loc 1 1934 23 view .LVU30 + 96 004c 0B43 orrs r3, r3, r1 + 97 004e 9360 str r3, [r2, #8] +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable external trigger if trigger selection is different of software */ +1937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* start. */ +1938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Note: This configuration keeps the hardware feature of parameter */ +1939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* ExternalTrigConvEdge "trigger edge none" equivalent to */ +1940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* software start. */ +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) + 98 .loc 1 1941 3 is_stmt 1 view .LVU31 + 99 .loc 1 1941 16 is_stmt 0 view .LVU32 + 100 0050 826A ldr r2, [r0, #40] + 101 .loc 1 1941 5 view .LVU33 + 102 0052 374B ldr r3, .L6+4 + 103 0054 9A42 cmp r2, r3 + 104 0056 57D0 beq .L2 +1942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Select external trigger to start conversion */ +1944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_EXTSEL); + 105 .loc 1 1944 5 is_stmt 1 view .LVU34 + 106 .loc 1 1944 9 is_stmt 0 view .LVU35 + 107 0058 0268 ldr r2, [r0] + 108 .loc 1 1944 25 view .LVU36 + 109 005a 9368 ldr r3, [r2, #8] + ARM GAS /tmp/ccHbw826.s page 37 + + + 110 005c 23F07063 bic r3, r3, #251658240 + 111 0060 9360 str r3, [r2, #8] +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= hadc->Init.ExternalTrigConv; + 112 .loc 1 1945 5 is_stmt 1 view .LVU37 + 113 .loc 1 1945 9 is_stmt 0 view .LVU38 + 114 0062 0268 ldr r2, [r0] + 115 .loc 1 1945 25 view .LVU39 + 116 0064 9368 ldr r3, [r2, #8] + 117 .loc 1 1945 38 view .LVU40 + 118 0066 816A ldr r1, [r0, #40] + 119 .loc 1 1945 25 view .LVU41 + 120 0068 0B43 orrs r3, r3, r1 + 121 006a 9360 str r3, [r2, #8] +1946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Select external trigger polarity */ +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); + 122 .loc 1 1948 5 is_stmt 1 view .LVU42 + 123 .loc 1 1948 9 is_stmt 0 view .LVU43 + 124 006c 0268 ldr r2, [r0] + 125 .loc 1 1948 25 view .LVU44 + 126 006e 9368 ldr r3, [r2, #8] + 127 0070 23F04053 bic r3, r3, #805306368 + 128 0074 9360 str r3, [r2, #8] +1949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= hadc->Init.ExternalTrigConvEdge; + 129 .loc 1 1949 5 is_stmt 1 view .LVU45 + 130 .loc 1 1949 9 is_stmt 0 view .LVU46 + 131 0076 0268 ldr r2, [r0] + 132 .loc 1 1949 25 view .LVU47 + 133 0078 9368 ldr r3, [r2, #8] + 134 .loc 1 1949 38 view .LVU48 + 135 007a C16A ldr r1, [r0, #44] + 136 .loc 1 1949 25 view .LVU49 + 137 007c 0B43 orrs r3, r3, r1 + 138 007e 9360 str r3, [r2, #8] + 139 .L3: +1950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Reset the external trigger */ +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_EXTSEL); +1955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable or disable ADC continuous conversion mode */ +1959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_CONT); + 140 .loc 1 1959 3 is_stmt 1 view .LVU50 + 141 .loc 1 1959 7 is_stmt 0 view .LVU51 + 142 0080 0268 ldr r2, [r0] + 143 .loc 1 1959 23 view .LVU52 + 144 0082 9368 ldr r3, [r2, #8] + 145 0084 23F00203 bic r3, r3, #2 + 146 0088 9360 str r3, [r2, #8] +1960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode); + 147 .loc 1 1960 3 is_stmt 1 view .LVU53 + 148 .loc 1 1960 7 is_stmt 0 view .LVU54 + 149 008a 0268 ldr r2, [r0] + 150 .loc 1 1960 23 view .LVU55 + ARM GAS /tmp/ccHbw826.s page 38 + + + 151 008c 9368 ldr r3, [r2, #8] + 152 .loc 1 1960 26 view .LVU56 + 153 008e 8169 ldr r1, [r0, #24] + 154 .loc 1 1960 23 view .LVU57 + 155 0090 43EA4103 orr r3, r3, r1, lsl #1 + 156 0094 9360 str r3, [r2, #8] +1961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(hadc->Init.DiscontinuousConvMode != DISABLE) + 157 .loc 1 1962 3 is_stmt 1 view .LVU58 + 158 .loc 1 1962 16 is_stmt 0 view .LVU59 + 159 0096 90F82030 ldrb r3, [r0, #32] @ zero_extendqisi2 + 160 .loc 1 1962 5 view .LVU60 + 161 009a 002B cmp r3, #0 + 162 009c 3FD0 beq .L4 +1963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_REGULAR_DISC_NUMBER(hadc->Init.NbrOfDiscConversion)); + 163 .loc 1 1964 5 is_stmt 1 view .LVU61 +1965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable the selected ADC regular discontinuous mode */ +1967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 |= (uint32_t)ADC_CR1_DISCEN; + 164 .loc 1 1967 5 view .LVU62 + 165 .loc 1 1967 9 is_stmt 0 view .LVU63 + 166 009e 0268 ldr r2, [r0] + 167 .loc 1 1967 25 view .LVU64 + 168 00a0 5368 ldr r3, [r2, #4] + 169 00a2 43F40063 orr r3, r3, #2048 + 170 00a6 5360 str r3, [r2, #4] +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set the number of channels to be converted in discontinuous mode */ +1970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 &= ~(ADC_CR1_DISCNUM); + 171 .loc 1 1970 5 is_stmt 1 view .LVU65 + 172 .loc 1 1970 9 is_stmt 0 view .LVU66 + 173 00a8 0268 ldr r2, [r0] + 174 .loc 1 1970 25 view .LVU67 + 175 00aa 5368 ldr r3, [r2, #4] + 176 00ac 23F46043 bic r3, r3, #57344 + 177 00b0 5360 str r3, [r2, #4] +1971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 |= ADC_CR1_DISCONTINUOUS(hadc->Init.NbrOfDiscConversion); + 178 .loc 1 1971 5 is_stmt 1 view .LVU68 + 179 .loc 1 1971 9 is_stmt 0 view .LVU69 + 180 00b2 0168 ldr r1, [r0] + 181 .loc 1 1971 25 view .LVU70 + 182 00b4 4B68 ldr r3, [r1, #4] + 183 .loc 1 1971 29 view .LVU71 + 184 00b6 426A ldr r2, [r0, #36] + 185 00b8 013A subs r2, r2, #1 + 186 .loc 1 1971 25 view .LVU72 + 187 00ba 43EA4233 orr r3, r3, r2, lsl #13 + 188 00be 4B60 str r3, [r1, #4] + 189 .L5: +1972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +1974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +1975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable the selected ADC regular discontinuous mode */ +1976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR1 &= ~(ADC_CR1_DISCEN); +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +1978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 39 + + +1979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC number of conversion */ +1980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SQR1 &= ~(ADC_SQR1_L); + 190 .loc 1 1980 3 is_stmt 1 view .LVU73 + 191 .loc 1 1980 7 is_stmt 0 view .LVU74 + 192 00c0 0268 ldr r2, [r0] + 193 .loc 1 1980 24 view .LVU75 + 194 00c2 D36A ldr r3, [r2, #44] + 195 00c4 23F47003 bic r3, r3, #15728640 + 196 00c8 D362 str r3, [r2, #44] +1981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->SQR1 |= ADC_SQR1(hadc->Init.NbrOfConversion); + 197 .loc 1 1981 3 is_stmt 1 view .LVU76 + 198 .loc 1 1981 7 is_stmt 0 view .LVU77 + 199 00ca 0168 ldr r1, [r0] + 200 .loc 1 1981 24 view .LVU78 + 201 00cc CB6A ldr r3, [r1, #44] + 202 .loc 1 1981 28 view .LVU79 + 203 00ce C269 ldr r2, [r0, #28] + 204 00d0 013A subs r2, r2, #1 + 205 .loc 1 1981 24 view .LVU80 + 206 00d2 43EA0253 orr r3, r3, r2, lsl #20 + 207 00d6 CB62 str r3, [r1, #44] +1982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable or disable ADC DMA continuous request */ +1984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_DDS); + 208 .loc 1 1984 3 is_stmt 1 view .LVU81 + 209 .loc 1 1984 7 is_stmt 0 view .LVU82 + 210 00d8 0268 ldr r2, [r0] + 211 .loc 1 1984 23 view .LVU83 + 212 00da 9368 ldr r3, [r2, #8] + 213 00dc 23F40073 bic r3, r3, #512 + 214 00e0 9360 str r3, [r2, #8] +1985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= ADC_CR2_DMAContReq((uint32_t)hadc->Init.DMAContinuousRequests); + 215 .loc 1 1985 3 is_stmt 1 view .LVU84 + 216 .loc 1 1985 7 is_stmt 0 view .LVU85 + 217 00e2 0268 ldr r2, [r0] + 218 .loc 1 1985 23 view .LVU86 + 219 00e4 9368 ldr r3, [r2, #8] + 220 .loc 1 1985 26 view .LVU87 + 221 00e6 90F83010 ldrb r1, [r0, #48] @ zero_extendqisi2 + 222 .loc 1 1985 23 view .LVU88 + 223 00ea 43EA4123 orr r3, r3, r1, lsl #9 + 224 00ee 9360 str r3, [r2, #8] +1986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Enable or disable ADC end of conversion selection */ +1988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_EOCS); + 225 .loc 1 1988 3 is_stmt 1 view .LVU89 + 226 .loc 1 1988 7 is_stmt 0 view .LVU90 + 227 00f0 0268 ldr r2, [r0] + 228 .loc 1 1988 23 view .LVU91 + 229 00f2 9368 ldr r3, [r2, #8] + 230 00f4 23F48063 bic r3, r3, #1024 + 231 00f8 9360 str r3, [r2, #8] +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 |= ADC_CR2_EOCSelection(hadc->Init.EOCSelection); + 232 .loc 1 1989 3 is_stmt 1 view .LVU92 + 233 .loc 1 1989 7 is_stmt 0 view .LVU93 + 234 00fa 0268 ldr r2, [r0] + 235 .loc 1 1989 23 view .LVU94 + ARM GAS /tmp/ccHbw826.s page 40 + + + 236 00fc 9368 ldr r3, [r2, #8] + 237 .loc 1 1989 26 view .LVU95 + 238 00fe 4169 ldr r1, [r0, #20] + 239 .loc 1 1989 23 view .LVU96 + 240 0100 43EA8123 orr r3, r3, r1, lsl #10 + 241 0104 9360 str r3, [r2, #8] +1990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 242 .loc 1 1990 1 view .LVU97 + 243 0106 7047 bx lr + 244 .L2: +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); + 245 .loc 1 1954 5 is_stmt 1 view .LVU98 +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); + 246 .loc 1 1954 9 is_stmt 0 view .LVU99 + 247 0108 0268 ldr r2, [r0] +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN); + 248 .loc 1 1954 25 view .LVU100 + 249 010a 9368 ldr r3, [r2, #8] + 250 010c 23F07063 bic r3, r3, #251658240 + 251 0110 9360 str r3, [r2, #8] +1955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 252 .loc 1 1955 5 is_stmt 1 view .LVU101 +1955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 253 .loc 1 1955 9 is_stmt 0 view .LVU102 + 254 0112 0268 ldr r2, [r0] +1955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 255 .loc 1 1955 25 view .LVU103 + 256 0114 9368 ldr r3, [r2, #8] + 257 0116 23F04053 bic r3, r3, #805306368 + 258 011a 9360 str r3, [r2, #8] + 259 011c B0E7 b .L3 + 260 .L4: +1976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 261 .loc 1 1976 5 is_stmt 1 view .LVU104 +1976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 262 .loc 1 1976 9 is_stmt 0 view .LVU105 + 263 011e 0268 ldr r2, [r0] +1976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 264 .loc 1 1976 25 view .LVU106 + 265 0120 5368 ldr r3, [r2, #4] + 266 0122 23F40063 bic r3, r3, #2048 + 267 0126 5360 str r3, [r2, #4] + 268 0128 CAE7 b .L5 + 269 .L7: + 270 012a 00BF .align 2 + 271 .L6: + 272 012c 00230140 .word 1073816320 + 273 0130 0100000F .word 251658241 + 274 .cfi_endproc + 275 .LFE163: + 277 .section .text.HAL_ADC_MspInit,"ax",%progbits + 278 .align 1 + 279 .weak HAL_ADC_MspInit + 280 .syntax unified + 281 .thumb + 282 .thumb_func + 283 .fpu fpv5-d16 + ARM GAS /tmp/ccHbw826.s page 41 + + + 285 HAL_ADC_MspInit: + 286 .LVL1: + 287 .LFB143: + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ + 288 .loc 1 474 1 is_stmt 1 view -0 + 289 .cfi_startproc + 290 @ args = 0, pretend = 0, frame = 0 + 291 @ frame_needed = 0, uses_anonymous_args = 0 + 292 @ link register save eliminated. + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 293 .loc 1 476 3 view .LVU108 + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 294 .loc 1 480 1 is_stmt 0 view .LVU109 + 295 0000 7047 bx lr + 296 .cfi_endproc + 297 .LFE143: + 299 .section .text.HAL_ADC_Init,"ax",%progbits + 300 .align 1 + 301 .global HAL_ADC_Init + 302 .syntax unified + 303 .thumb + 304 .thumb_func + 305 .fpu fpv5-d16 + 307 HAL_ADC_Init: + 308 .LVL2: + 309 .LFB141: + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 310 .loc 1 323 1 is_stmt 1 view -0 + 311 .cfi_startproc + 312 @ args = 0, pretend = 0, frame = 0 + 313 @ frame_needed = 0, uses_anonymous_args = 0 + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 314 .loc 1 324 3 view .LVU111 + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 315 .loc 1 327 3 view .LVU112 + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 316 .loc 1 327 5 is_stmt 0 view .LVU113 + 317 0000 28B3 cbz r0, .L13 + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 318 .loc 1 323 1 view .LVU114 + 319 0002 10B5 push {r4, lr} + 320 .LCFI0: + 321 .cfi_def_cfa_offset 8 + 322 .cfi_offset 4, -8 + 323 .cfi_offset 14, -4 + 324 0004 0446 mov r4, r0 + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_CLOCKPRESCALER(hadc->Init.ClockPrescaler)); + 325 .loc 1 333 3 is_stmt 1 view .LVU115 + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_RESOLUTION(hadc->Init.Resolution)); + 326 .loc 1 334 3 view .LVU116 + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_SCAN_MODE(hadc->Init.ScanConvMode)); + 327 .loc 1 335 3 view .LVU117 + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + 328 .loc 1 336 3 view .LVU118 + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EXT_TRIG(hadc->Init.ExternalTrigConv)); + 329 .loc 1 337 3 view .LVU119 + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_DATA_ALIGN(hadc->Init.DataAlign)); + ARM GAS /tmp/ccHbw826.s page 42 + + + 330 .loc 1 338 3 view .LVU120 + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_REGULAR_LENGTH(hadc->Init.NbrOfConversion)); + 331 .loc 1 339 3 view .LVU121 + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests)); + 332 .loc 1 340 3 view .LVU122 + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EOCSelection(hadc->Init.EOCSelection)); + 333 .loc 1 341 3 view .LVU123 + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DiscontinuousConvMode)); + 334 .loc 1 342 3 view .LVU124 + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 335 .loc 1 343 3 view .LVU125 + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 336 .loc 1 345 3 view .LVU126 + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 337 .loc 1 347 5 view .LVU127 + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 338 .loc 1 350 3 view .LVU128 + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 339 .loc 1 350 10 is_stmt 0 view .LVU129 + 340 0006 036C ldr r3, [r0, #64] + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 341 .loc 1 350 5 view .LVU130 + 342 0008 43B1 cbz r3, .L19 + 343 .LVL3: + 344 .L11: + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 345 .loc 1 380 3 is_stmt 1 view .LVU131 + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 346 .loc 1 380 7 is_stmt 0 view .LVU132 + 347 000a 236C ldr r3, [r4, #64] + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 348 .loc 1 380 6 view .LVU133 + 349 000c 13F0100F tst r3, #16 + 350 0010 0BD0 beq .L20 + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 351 .loc 1 400 20 view .LVU134 + 352 0012 0120 movs r0, #1 + 353 .L12: + 354 .LVL4: + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 355 .loc 1 404 3 is_stmt 1 view .LVU135 + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 356 .loc 1 404 3 view .LVU136 + 357 0014 0023 movs r3, #0 + 358 0016 84F83C30 strb r3, [r4, #60] + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 359 .loc 1 404 3 view .LVU137 + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 360 .loc 1 407 3 view .LVU138 + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 361 .loc 1 408 1 is_stmt 0 view .LVU139 + 362 001a 10BD pop {r4, pc} + 363 .LVL5: + 364 .L19: + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 365 .loc 1 368 5 is_stmt 1 view .LVU140 + 366 001c FFF7FEFF bl HAL_ADC_MspInit + ARM GAS /tmp/ccHbw826.s page 43 + + + 367 .LVL6: + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 368 .loc 1 372 5 view .LVU141 + 369 0020 0023 movs r3, #0 + 370 0022 6364 str r3, [r4, #68] + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 371 .loc 1 375 5 view .LVU142 + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 372 .loc 1 375 16 is_stmt 0 view .LVU143 + 373 0024 84F83C30 strb r3, [r4, #60] + 374 0028 EFE7 b .L11 + 375 .L20: + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 376 .loc 1 383 5 is_stmt 1 view .LVU144 + 377 002a 226C ldr r2, [r4, #64] + 378 002c 094B ldr r3, .L21 + 379 002e 1340 ands r3, r3, r2 + 380 0030 43F00203 orr r3, r3, #2 + 381 0034 2364 str r3, [r4, #64] + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 382 .loc 1 388 5 view .LVU145 + 383 0036 2046 mov r0, r4 + 384 0038 FFF7FEFF bl ADC_Init + 385 .LVL7: + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 386 .loc 1 391 5 view .LVU146 + 387 003c 0020 movs r0, #0 + 388 003e 6064 str r0, [r4, #68] + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_BUSY_INTERNAL, + 389 .loc 1 394 5 view .LVU147 + 390 0040 236C ldr r3, [r4, #64] + 391 0042 23F00303 bic r3, r3, #3 + 392 0046 43F00103 orr r3, r3, #1 + 393 004a 2364 str r3, [r4, #64] + 394 004c E2E7 b .L12 + 395 .LVL8: + 396 .L13: + 397 .LCFI1: + 398 .cfi_def_cfa_offset 0 + 399 .cfi_restore 4 + 400 .cfi_restore 14 + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 401 .loc 1 329 12 is_stmt 0 view .LVU148 + 402 004e 0120 movs r0, #1 + 403 .LVL9: + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 404 .loc 1 408 1 view .LVU149 + 405 0050 7047 bx lr + 406 .L22: + 407 0052 00BF .align 2 + 408 .L21: + 409 0054 FDEEFFFF .word -4355 + 410 .cfi_endproc + 411 .LFE141: + 413 .section .text.HAL_ADC_MspDeInit,"ax",%progbits + 414 .align 1 + 415 .weak HAL_ADC_MspDeInit + ARM GAS /tmp/ccHbw826.s page 44 + + + 416 .syntax unified + 417 .thumb + 418 .thumb_func + 419 .fpu fpv5-d16 + 421 HAL_ADC_MspDeInit: + 422 .LVL10: + 423 .LFB144: + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ + 424 .loc 1 489 1 is_stmt 1 view -0 + 425 .cfi_startproc + 426 @ args = 0, pretend = 0, frame = 0 + 427 @ frame_needed = 0, uses_anonymous_args = 0 + 428 @ link register save eliminated. + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 429 .loc 1 491 3 view .LVU151 + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 430 .loc 1 495 1 is_stmt 0 view .LVU152 + 431 0000 7047 bx lr + 432 .cfi_endproc + 433 .LFE144: + 435 .section .text.HAL_ADC_DeInit,"ax",%progbits + 436 .align 1 + 437 .global HAL_ADC_DeInit + 438 .syntax unified + 439 .thumb + 440 .thumb_func + 441 .fpu fpv5-d16 + 443 HAL_ADC_DeInit: + 444 .LVL11: + 445 .LFB142: + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 446 .loc 1 417 1 is_stmt 1 view -0 + 447 .cfi_startproc + 448 @ args = 0, pretend = 0, frame = 0 + 449 @ frame_needed = 0, uses_anonymous_args = 0 + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 450 .loc 1 418 3 view .LVU154 + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 451 .loc 1 421 3 view .LVU155 + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 452 .loc 1 421 5 is_stmt 0 view .LVU156 + 453 0000 C8B1 cbz r0, .L27 + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 454 .loc 1 417 1 view .LVU157 + 455 0002 10B5 push {r4, lr} + 456 .LCFI2: + 457 .cfi_def_cfa_offset 8 + 458 .cfi_offset 4, -8 + 459 .cfi_offset 14, -4 + 460 0004 0446 mov r4, r0 + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 461 .loc 1 427 3 is_stmt 1 view .LVU158 + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 462 .loc 1 430 3 view .LVU159 + 463 0006 036C ldr r3, [r0, #64] + 464 0008 43F00203 orr r3, r3, #2 + 465 000c 0364 str r3, [r0, #64] + ARM GAS /tmp/ccHbw826.s page 45 + + + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 466 .loc 1 434 3 view .LVU160 + 467 000e 0268 ldr r2, [r0] + 468 0010 9368 ldr r3, [r2, #8] + 469 0012 23F00103 bic r3, r3, #1 + 470 0016 9360 str r3, [r2, #8] + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 471 .loc 1 438 3 view .LVU161 + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 472 .loc 1 438 6 is_stmt 0 view .LVU162 + 473 0018 0368 ldr r3, [r0] + 474 001a 9B68 ldr r3, [r3, #8] + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 475 .loc 1 438 5 view .LVU163 + 476 001c 13F0010F tst r3, #1 + 477 0020 03D0 beq .L32 + 478 .LVL12: + 479 .L26: + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 480 .loc 1 461 3 is_stmt 1 view .LVU164 + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 481 .loc 1 461 3 view .LVU165 + 482 0022 0020 movs r0, #0 + 483 0024 84F83C00 strb r0, [r4, #60] + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 484 .loc 1 461 3 view .LVU166 + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 485 .loc 1 464 3 view .LVU167 + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 486 .loc 1 465 1 is_stmt 0 view .LVU168 + 487 0028 10BD pop {r4, pc} + 488 .LVL13: + 489 .L32: + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 490 .loc 1 450 3 is_stmt 1 view .LVU169 + 491 002a FFF7FEFF bl HAL_ADC_MspDeInit + 492 .LVL14: + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 493 .loc 1 454 5 view .LVU170 + 494 002e 0023 movs r3, #0 + 495 0030 6364 str r3, [r4, #68] + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 496 .loc 1 457 5 view .LVU171 + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 497 .loc 1 457 17 is_stmt 0 view .LVU172 + 498 0032 2364 str r3, [r4, #64] + 499 0034 F5E7 b .L26 + 500 .LVL15: + 501 .L27: + 502 .LCFI3: + 503 .cfi_def_cfa_offset 0 + 504 .cfi_restore 4 + 505 .cfi_restore 14 + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 506 .loc 1 423 12 view .LVU173 + 507 0036 0120 movs r0, #1 + 508 .LVL16: + ARM GAS /tmp/ccHbw826.s page 46 + + + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 509 .loc 1 465 1 view .LVU174 + 510 0038 7047 bx lr + 511 .cfi_endproc + 512 .LFE142: + 514 .section .text.HAL_ADC_Start,"ax",%progbits + 515 .align 1 + 516 .global HAL_ADC_Start + 517 .syntax unified + 518 .thumb + 519 .thumb_func + 520 .fpu fpv5-d16 + 522 HAL_ADC_Start: + 523 .LVL17: + 524 .LFB145: + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; + 525 .loc 1 731 1 is_stmt 1 view -0 + 526 .cfi_startproc + 527 @ args = 0, pretend = 0, frame = 8 + 528 @ frame_needed = 0, uses_anonymous_args = 0 + 529 @ link register save eliminated. + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; + 530 .loc 1 731 1 is_stmt 0 view .LVU176 + 531 0000 82B0 sub sp, sp, #8 + 532 .LCFI4: + 533 .cfi_def_cfa_offset 8 + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 534 .loc 1 732 3 is_stmt 1 view .LVU177 + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 535 .loc 1 732 17 is_stmt 0 view .LVU178 + 536 0002 0023 movs r3, #0 + 537 0004 0193 str r3, [sp, #4] + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + 538 .loc 1 735 3 is_stmt 1 view .LVU179 + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 539 .loc 1 736 3 view .LVU180 + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 540 .loc 1 739 3 view .LVU181 + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 541 .loc 1 739 3 view .LVU182 + 542 0006 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 543 000a 012B cmp r3, #1 + 544 000c 7ED0 beq .L44 + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 545 .loc 1 739 3 discriminator 2 view .LVU183 + 546 000e 0123 movs r3, #1 + 547 0010 80F83C30 strb r3, [r0, #60] + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 548 .loc 1 739 3 discriminator 2 view .LVU184 + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 549 .loc 1 744 3 discriminator 2 view .LVU185 + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 550 .loc 1 744 11 is_stmt 0 discriminator 2 view .LVU186 + 551 0014 0368 ldr r3, [r0] + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 552 .loc 1 744 21 discriminator 2 view .LVU187 + 553 0016 9A68 ldr r2, [r3, #8] + ARM GAS /tmp/ccHbw826.s page 47 + + + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 554 .loc 1 744 5 discriminator 2 view .LVU188 + 555 0018 12F0010F tst r2, #1 + 556 001c 13D1 bne .L35 + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 557 .loc 1 747 5 is_stmt 1 view .LVU189 + 558 001e 9A68 ldr r2, [r3, #8] + 559 0020 42F00102 orr r2, r2, #1 + 560 0024 9A60 str r2, [r3, #8] + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 561 .loc 1 751 5 view .LVU190 + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 562 .loc 1 751 53 is_stmt 0 view .LVU191 + 563 0026 3D4B ldr r3, .L52 + 564 0028 1B68 ldr r3, [r3] + 565 002a 3D4A ldr r2, .L52+4 + 566 002c A2FB0323 umull r2, r3, r2, r3 + 567 0030 9B0C lsrs r3, r3, #18 + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 568 .loc 1 751 34 view .LVU192 + 569 0032 03EB4303 add r3, r3, r3, lsl #1 + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 570 .loc 1 751 13 view .LVU193 + 571 0036 0193 str r3, [sp, #4] + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 572 .loc 1 752 5 is_stmt 1 view .LVU194 + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 573 .loc 1 752 10 is_stmt 0 view .LVU195 + 574 0038 02E0 b .L36 + 575 .L37: + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 576 .loc 1 754 7 is_stmt 1 view .LVU196 + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 577 .loc 1 754 14 is_stmt 0 view .LVU197 + 578 003a 019B ldr r3, [sp, #4] + 579 003c 013B subs r3, r3, #1 + 580 003e 0193 str r3, [sp, #4] + 581 .L36: + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 582 .loc 1 752 10 is_stmt 1 view .LVU198 + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 583 .loc 1 752 19 is_stmt 0 view .LVU199 + 584 0040 019B ldr r3, [sp, #4] + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 585 .loc 1 752 10 view .LVU200 + 586 0042 002B cmp r3, #0 + 587 0044 F9D1 bne .L37 + 588 .L35: + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 589 .loc 1 759 3 is_stmt 1 view .LVU201 + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 590 .loc 1 759 6 is_stmt 0 view .LVU202 + 591 0046 0368 ldr r3, [r0] + 592 0048 9A68 ldr r2, [r3, #8] + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 593 .loc 1 759 5 view .LVU203 + 594 004a 12F0010F tst r2, #1 + ARM GAS /tmp/ccHbw826.s page 48 + + + 595 004e 52D0 beq .L38 + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, + 596 .loc 1 764 5 is_stmt 1 view .LVU204 + 597 0050 016C ldr r1, [r0, #64] + 598 0052 344A ldr r2, .L52+8 + 599 0054 0A40 ands r2, r2, r1 + 600 0056 42F48072 orr r2, r2, #256 + 601 005a 0264 str r2, [r0, #64] + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 602 .loc 1 770 5 view .LVU205 + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 603 .loc 1 770 9 is_stmt 0 view .LVU206 + 604 005c 5A68 ldr r2, [r3, #4] + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 605 .loc 1 770 8 view .LVU207 + 606 005e 12F4806F tst r2, #1024 + 607 0062 05D0 beq .L39 + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 608 .loc 1 772 7 is_stmt 1 view .LVU208 + 609 0064 026C ldr r2, [r0, #64] + 610 0066 22F44052 bic r2, r2, #12288 + 611 006a 42F48052 orr r2, r2, #4096 + 612 006e 0264 str r2, [r0, #64] + 613 .L39: + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 614 .loc 1 776 5 view .LVU209 + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 615 .loc 1 776 9 is_stmt 0 view .LVU210 + 616 0070 026C ldr r2, [r0, #64] + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 617 .loc 1 776 8 view .LVU211 + 618 0072 12F4805F tst r2, #4096 + 619 0076 19D0 beq .L40 + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 620 .loc 1 779 7 is_stmt 1 view .LVU212 + 621 0078 426C ldr r2, [r0, #68] + 622 007a 22F00602 bic r2, r2, #6 + 623 007e 4264 str r2, [r0, #68] + 624 .L41: + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 625 .loc 1 790 5 view .LVU213 + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 626 .loc 1 790 5 view .LVU214 + 627 0080 0022 movs r2, #0 + 628 0082 80F83C20 strb r2, [r0, #60] + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 629 .loc 1 790 5 view .LVU215 + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 630 .loc 1 794 5 view .LVU216 + 631 0086 6FF02202 mvn r2, #34 + 632 008a 1A60 str r2, [r3] + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 633 .loc 1 797 5 view .LVU217 + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 634 .loc 1 797 8 is_stmt 0 view .LVU218 + 635 008c 264B ldr r3, .L52+12 + 636 008e 5B68 ldr r3, [r3, #4] + ARM GAS /tmp/ccHbw826.s page 49 + + + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 637 .loc 1 797 7 view .LVU219 + 638 0090 13F01F0F tst r3, #31 + 639 0094 0DD1 bne .L42 + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 640 .loc 1 800 7 is_stmt 1 view .LVU220 + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 641 .loc 1 800 15 is_stmt 0 view .LVU221 + 642 0096 0368 ldr r3, [r0] + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 643 .loc 1 800 25 view .LVU222 + 644 0098 9A68 ldr r2, [r3, #8] + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 645 .loc 1 800 9 view .LVU223 + 646 009a 12F0405F tst r2, #805306368 + 647 009e 37D1 bne .L45 + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 648 .loc 1 803 9 is_stmt 1 view .LVU224 + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 649 .loc 1 803 29 is_stmt 0 view .LVU225 + 650 00a0 9A68 ldr r2, [r3, #8] + 651 00a2 42F08042 orr r2, r2, #1073741824 + 652 00a6 9A60 str r2, [r3, #8] + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 653 .loc 1 838 10 view .LVU226 + 654 00a8 0020 movs r0, #0 + 655 .LVL18: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 656 .loc 1 838 10 view .LVU227 + 657 00aa 2DE0 b .L34 + 658 .LVL19: + 659 .L40: + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 660 .loc 1 784 7 is_stmt 1 view .LVU228 + 661 00ac 0022 movs r2, #0 + 662 00ae 4264 str r2, [r0, #68] + 663 00b0 E6E7 b .L41 + 664 .L42: + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 665 .loc 1 809 7 view .LVU229 + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 666 .loc 1 809 15 is_stmt 0 view .LVU230 + 667 00b2 0368 ldr r3, [r0] + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 668 .loc 1 809 9 view .LVU231 + 669 00b4 1D4A ldr r2, .L52+16 + 670 00b6 9342 cmp r3, r2 + 671 00b8 0AD0 beq .L50 + 672 .L43: + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 673 .loc 1 817 7 is_stmt 1 view .LVU232 + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 674 .loc 1 817 11 is_stmt 0 view .LVU233 + 675 00ba 1B4B ldr r3, .L52+12 + 676 00bc 5B68 ldr r3, [r3, #4] + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 677 .loc 1 817 9 view .LVU234 + ARM GAS /tmp/ccHbw826.s page 50 + + + 678 00be 13F0100F tst r3, #16 + 679 00c2 27D1 bne .L46 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 680 .loc 1 820 9 is_stmt 1 view .LVU235 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 681 .loc 1 820 17 is_stmt 0 view .LVU236 + 682 00c4 0368 ldr r3, [r0] + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 683 .loc 1 820 11 view .LVU237 + 684 00c6 1A4A ldr r2, .L52+20 + 685 00c8 9342 cmp r3, r2 + 686 00ca 0AD0 beq .L51 + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 687 .loc 1 838 10 view .LVU238 + 688 00cc 0020 movs r0, #0 + 689 .LVL20: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 690 .loc 1 838 10 view .LVU239 + 691 00ce 1BE0 b .L34 + 692 .LVL21: + 693 .L50: + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 694 .loc 1 809 54 discriminator 1 view .LVU240 + 695 00d0 9A68 ldr r2, [r3, #8] + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 696 .loc 1 809 35 discriminator 1 view .LVU241 + 697 00d2 12F0405F tst r2, #805306368 + 698 00d6 F0D1 bne .L43 + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 699 .loc 1 812 11 is_stmt 1 view .LVU242 + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 700 .loc 1 812 31 is_stmt 0 view .LVU243 + 701 00d8 9A68 ldr r2, [r3, #8] + 702 00da 42F08042 orr r2, r2, #1073741824 + 703 00de 9A60 str r2, [r3, #8] + 704 00e0 EBE7 b .L43 + 705 .L51: + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 706 .loc 1 820 56 discriminator 1 view .LVU244 + 707 00e2 9A68 ldr r2, [r3, #8] + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 708 .loc 1 820 37 discriminator 1 view .LVU245 + 709 00e4 12F0405F tst r2, #805306368 + 710 00e8 16D1 bne .L48 + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 711 .loc 1 823 11 is_stmt 1 view .LVU246 + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 712 .loc 1 823 31 is_stmt 0 view .LVU247 + 713 00ea 9A68 ldr r2, [r3, #8] + 714 00ec 42F08042 orr r2, r2, #1073741824 + 715 00f0 9A60 str r2, [r3, #8] + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 716 .loc 1 838 10 view .LVU248 + 717 00f2 0020 movs r0, #0 + 718 .LVL22: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 719 .loc 1 838 10 view .LVU249 + ARM GAS /tmp/ccHbw826.s page 51 + + + 720 00f4 08E0 b .L34 + 721 .LVL23: + 722 .L38: + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 723 .loc 1 831 5 is_stmt 1 view .LVU250 + 724 00f6 036C ldr r3, [r0, #64] + 725 00f8 43F01003 orr r3, r3, #16 + 726 00fc 0364 str r3, [r0, #64] + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 727 .loc 1 834 5 view .LVU251 + 728 00fe 436C ldr r3, [r0, #68] + 729 0100 43F00103 orr r3, r3, #1 + 730 0104 4364 str r3, [r0, #68] + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 731 .loc 1 838 10 is_stmt 0 view .LVU252 + 732 0106 0020 movs r0, #0 + 733 .LVL24: + 734 .L34: + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 735 .loc 1 839 1 view .LVU253 + 736 0108 02B0 add sp, sp, #8 + 737 .LCFI5: + 738 .cfi_remember_state + 739 .cfi_def_cfa_offset 0 + 740 @ sp needed + 741 010a 7047 bx lr + 742 .LVL25: + 743 .L44: + 744 .LCFI6: + 745 .cfi_restore_state + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 746 .loc 1 739 3 view .LVU254 + 747 010c 0220 movs r0, #2 + 748 .LVL26: + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 749 .loc 1 739 3 view .LVU255 + 750 010e FBE7 b .L34 + 751 .LVL27: + 752 .L45: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 753 .loc 1 838 10 view .LVU256 + 754 0110 0020 movs r0, #0 + 755 .LVL28: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 756 .loc 1 838 10 view .LVU257 + 757 0112 F9E7 b .L34 + 758 .LVL29: + 759 .L46: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 760 .loc 1 838 10 view .LVU258 + 761 0114 0020 movs r0, #0 + 762 .LVL30: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 763 .loc 1 838 10 view .LVU259 + 764 0116 F7E7 b .L34 + 765 .LVL31: + 766 .L48: + ARM GAS /tmp/ccHbw826.s page 52 + + + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 767 .loc 1 838 10 view .LVU260 + 768 0118 0020 movs r0, #0 + 769 .LVL32: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 770 .loc 1 838 10 view .LVU261 + 771 011a F5E7 b .L34 + 772 .L53: + 773 .align 2 + 774 .L52: + 775 011c 00000000 .word SystemCoreClock + 776 0120 83DE1B43 .word 1125899907 + 777 0124 FEF8FFFF .word -1794 + 778 0128 00230140 .word 1073816320 + 779 012c 00200140 .word 1073815552 + 780 0130 00220140 .word 1073816064 + 781 .cfi_endproc + 782 .LFE145: + 784 .section .text.HAL_ADC_Stop,"ax",%progbits + 785 .align 1 + 786 .global HAL_ADC_Stop + 787 .syntax unified + 788 .thumb + 789 .thumb_func + 790 .fpu fpv5-d16 + 792 HAL_ADC_Stop: + 793 .LVL33: + 794 .LFB146: + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ + 795 .loc 1 852 1 is_stmt 1 view -0 + 796 .cfi_startproc + 797 @ args = 0, pretend = 0, frame = 0 + 798 @ frame_needed = 0, uses_anonymous_args = 0 + 799 @ link register save eliminated. + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 800 .loc 1 854 3 view .LVU263 + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 801 .loc 1 857 3 view .LVU264 + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 802 .loc 1 857 3 view .LVU265 + 803 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 804 0004 012B cmp r3, #1 + 805 0006 17D0 beq .L57 + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 806 .loc 1 857 3 discriminator 2 view .LVU266 + 807 0008 0123 movs r3, #1 + 808 000a 80F83C30 strb r3, [r0, #60] + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 809 .loc 1 857 3 discriminator 2 view .LVU267 + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 810 .loc 1 861 3 discriminator 2 view .LVU268 + 811 000e 0268 ldr r2, [r0] + 812 0010 9368 ldr r3, [r2, #8] + 813 0012 23F00103 bic r3, r3, #1 + 814 0016 9360 str r3, [r2, #8] + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 815 .loc 1 864 3 discriminator 2 view .LVU269 + ARM GAS /tmp/ccHbw826.s page 53 + + + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 816 .loc 1 864 6 is_stmt 0 discriminator 2 view .LVU270 + 817 0018 0368 ldr r3, [r0] + 818 001a 9B68 ldr r3, [r3, #8] + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 819 .loc 1 864 5 discriminator 2 view .LVU271 + 820 001c 13F0010F tst r3, #1 + 821 0020 05D1 bne .L56 + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 822 .loc 1 867 5 is_stmt 1 view .LVU272 + 823 0022 026C ldr r2, [r0, #64] + 824 0024 054B ldr r3, .L58 + 825 0026 1340 ands r3, r3, r2 + 826 0028 43F00103 orr r3, r3, #1 + 827 002c 0364 str r3, [r0, #64] + 828 .L56: + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 829 .loc 1 873 3 view .LVU273 + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 830 .loc 1 873 3 view .LVU274 + 831 002e 0023 movs r3, #0 + 832 0030 80F83C30 strb r3, [r0, #60] + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 833 .loc 1 873 3 view .LVU275 + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 834 .loc 1 876 3 view .LVU276 + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 835 .loc 1 876 10 is_stmt 0 view .LVU277 + 836 0034 1846 mov r0, r3 + 837 .LVL34: + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 838 .loc 1 876 10 view .LVU278 + 839 0036 7047 bx lr + 840 .LVL35: + 841 .L57: + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 842 .loc 1 857 3 view .LVU279 + 843 0038 0220 movs r0, #2 + 844 .LVL36: + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 845 .loc 1 877 1 view .LVU280 + 846 003a 7047 bx lr + 847 .L59: + 848 .align 2 + 849 .L58: + 850 003c FEEEFFFF .word -4354 + 851 .cfi_endproc + 852 .LFE146: + 854 .section .text.HAL_ADC_PollForConversion,"ax",%progbits + 855 .align 1 + 856 .global HAL_ADC_PollForConversion + 857 .syntax unified + 858 .thumb + 859 .thumb_func + 860 .fpu fpv5-d16 + 862 HAL_ADC_PollForConversion: + 863 .LVL37: + ARM GAS /tmp/ccHbw826.s page 54 + + + 864 .LFB147: + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tickstart = 0; + 865 .loc 1 895 1 is_stmt 1 view -0 + 866 .cfi_startproc + 867 @ args = 0, pretend = 0, frame = 0 + 868 @ frame_needed = 0, uses_anonymous_args = 0 + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tickstart = 0; + 869 .loc 1 895 1 is_stmt 0 view .LVU282 + 870 0000 70B5 push {r4, r5, r6, lr} + 871 .LCFI7: + 872 .cfi_def_cfa_offset 16 + 873 .cfi_offset 4, -16 + 874 .cfi_offset 5, -12 + 875 .cfi_offset 6, -8 + 876 .cfi_offset 14, -4 + 877 0002 0446 mov r4, r0 + 878 0004 0D46 mov r5, r1 + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 879 .loc 1 896 3 is_stmt 1 view .LVU283 + 880 .LVL38: + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_DMA) ) + 881 .loc 1 904 3 view .LVU284 + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_DMA) ) + 882 .loc 1 904 7 is_stmt 0 view .LVU285 + 883 0006 0368 ldr r3, [r0] + 884 0008 9A68 ldr r2, [r3, #8] + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_DMA) ) + 885 .loc 1 904 6 view .LVU286 + 886 000a 12F4806F tst r2, #1024 + 887 000e 03D0 beq .L61 + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 888 .loc 1 905 7 discriminator 1 view .LVU287 + 889 0010 9B68 ldr r3, [r3, #8] + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_DMA) ) + 890 .loc 1 904 57 discriminator 1 view .LVU288 + 891 0012 13F4807F tst r3, #256 + 892 0016 19D1 bne .L74 + 893 .L61: + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 894 .loc 1 917 3 is_stmt 1 view .LVU289 + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 895 .loc 1 917 15 is_stmt 0 view .LVU290 + 896 0018 FFF7FEFF bl HAL_GetTick + 897 .LVL39: + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 898 .loc 1 917 15 view .LVU291 + 899 001c 0646 mov r6, r0 + 900 .LVL40: + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 901 .loc 1 920 3 is_stmt 1 view .LVU292 + 902 .L64: + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 903 .loc 1 920 8 view .LVU293 + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 904 .loc 1 920 11 is_stmt 0 view .LVU294 + 905 001e 2368 ldr r3, [r4] + 906 0020 1A68 ldr r2, [r3] + ARM GAS /tmp/ccHbw826.s page 55 + + + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 907 .loc 1 920 8 view .LVU295 + 908 0022 12F0020F tst r2, #2 + 909 0026 20D1 bne .L75 + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 910 .loc 1 923 5 is_stmt 1 view .LVU296 + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 911 .loc 1 923 7 is_stmt 0 view .LVU297 + 912 0028 B5F1FF3F cmp r5, #-1 + 913 002c F7D0 beq .L64 + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 914 .loc 1 925 7 is_stmt 1 view .LVU298 + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 915 .loc 1 925 9 is_stmt 0 view .LVU299 + 916 002e B5B9 cbnz r5, .L76 + 917 .L65: + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 918 .loc 1 928 9 is_stmt 1 view .LVU300 + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 919 .loc 1 928 14 is_stmt 0 view .LVU301 + 920 0030 2368 ldr r3, [r4] + 921 0032 1B68 ldr r3, [r3] + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 922 .loc 1 928 11 view .LVU302 + 923 0034 13F0020F tst r3, #2 + 924 0038 F1D1 bne .L64 + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 925 .loc 1 931 11 is_stmt 1 view .LVU303 + 926 003a 236C ldr r3, [r4, #64] + 927 003c 43F00403 orr r3, r3, #4 + 928 0040 2364 str r3, [r4, #64] + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 929 .loc 1 934 11 view .LVU304 + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 930 .loc 1 934 11 view .LVU305 + 931 0042 0023 movs r3, #0 + 932 0044 84F83C30 strb r3, [r4, #60] + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 933 .loc 1 934 11 view .LVU306 + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 934 .loc 1 936 11 view .LVU307 + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 935 .loc 1 936 18 is_stmt 0 view .LVU308 + 936 0048 0320 movs r0, #3 + 937 004a 33E0 b .L62 + 938 .LVL41: + 939 .L74: + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 940 .loc 1 908 5 is_stmt 1 view .LVU309 + 941 004c 036C ldr r3, [r0, #64] + 942 004e 43F02003 orr r3, r3, #32 + 943 0052 0364 str r3, [r0, #64] + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 944 .loc 1 911 5 view .LVU310 + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 945 .loc 1 911 5 view .LVU311 + 946 0054 0023 movs r3, #0 + ARM GAS /tmp/ccHbw826.s page 56 + + + 947 0056 80F83C30 strb r3, [r0, #60] + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 948 .loc 1 911 5 view .LVU312 + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 949 .loc 1 913 5 view .LVU313 + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 950 .loc 1 913 12 is_stmt 0 view .LVU314 + 951 005a 0120 movs r0, #1 + 952 .LVL42: + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 953 .loc 1 913 12 view .LVU315 + 954 005c 2AE0 b .L62 + 955 .LVL43: + 956 .L76: + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 957 .loc 1 925 30 discriminator 1 view .LVU316 + 958 005e FFF7FEFF bl HAL_GetTick + 959 .LVL44: + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 960 .loc 1 925 44 discriminator 1 view .LVU317 + 961 0062 801B subs r0, r0, r6 + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 962 .loc 1 925 25 discriminator 1 view .LVU318 + 963 0064 A842 cmp r0, r5 + 964 0066 DAD9 bls .L64 + 965 0068 E2E7 b .L65 + 966 .L75: + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 967 .loc 1 943 3 is_stmt 1 view .LVU319 + 968 006a 6FF01202 mvn r2, #18 + 969 006e 1A60 str r2, [r3] + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 970 .loc 1 946 3 view .LVU320 + 971 0070 236C ldr r3, [r4, #64] + 972 0072 43F40073 orr r3, r3, #512 + 973 0076 2364 str r3, [r4, #64] + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 974 .loc 1 954 3 view .LVU321 + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 975 .loc 1 954 6 is_stmt 0 view .LVU322 + 976 0078 2368 ldr r3, [r4] + 977 007a 9A68 ldr r2, [r3, #8] + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 978 .loc 1 954 5 view .LVU323 + 979 007c 12F0405F tst r2, #805306368 + 980 0080 17D1 bne .L69 + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + 981 .loc 1 955 17 discriminator 1 view .LVU324 + 982 0082 A269 ldr r2, [r4, #24] + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 983 .loc 1 954 60 discriminator 1 view .LVU325 + 984 0084 BAB9 cbnz r2, .L70 + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + 985 .loc 1 956 7 view .LVU326 + 986 0086 DA6A ldr r2, [r3, #44] + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + 987 .loc 1 955 60 view .LVU327 + ARM GAS /tmp/ccHbw826.s page 57 + + + 988 0088 12F4700F tst r2, #15728640 + 989 008c 03D0 beq .L68 + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 990 .loc 1 957 7 view .LVU328 + 991 008e 9B68 ldr r3, [r3, #8] + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + 992 .loc 1 956 56 view .LVU329 + 993 0090 13F4806F tst r3, #1024 + 994 0094 11D1 bne .L71 + 995 .L68: + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 996 .loc 1 960 5 is_stmt 1 view .LVU330 + 997 0096 236C ldr r3, [r4, #64] + 998 0098 23F48073 bic r3, r3, #256 + 999 009c 2364 str r3, [r4, #64] + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1000 .loc 1 962 5 view .LVU331 + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1001 .loc 1 962 9 is_stmt 0 view .LVU332 + 1002 009e 236C ldr r3, [r4, #64] + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1003 .loc 1 962 8 view .LVU333 + 1004 00a0 13F4805F tst r3, #4096 + 1005 00a4 0BD1 bne .L72 + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1006 .loc 1 964 7 is_stmt 1 view .LVU334 + 1007 00a6 236C ldr r3, [r4, #64] + 1008 00a8 43F00103 orr r3, r3, #1 + 1009 00ac 2364 str r3, [r4, #64] + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1010 .loc 1 969 10 is_stmt 0 view .LVU335 + 1011 00ae 0020 movs r0, #0 + 1012 00b0 00E0 b .L62 + 1013 .L69: + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1014 .loc 1 969 10 view .LVU336 + 1015 00b2 0020 movs r0, #0 + 1016 .LVL45: + 1017 .L62: + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1018 .loc 1 970 1 view .LVU337 + 1019 00b4 70BD pop {r4, r5, r6, pc} + 1020 .LVL46: + 1021 .L70: + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1022 .loc 1 969 10 view .LVU338 + 1023 00b6 0020 movs r0, #0 + 1024 00b8 FCE7 b .L62 + 1025 .L71: + 1026 00ba 0020 movs r0, #0 + 1027 00bc FAE7 b .L62 + 1028 .L72: + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1029 .loc 1 969 10 view .LVU339 + 1030 00be 0020 movs r0, #0 + 1031 00c0 F8E7 b .L62 + 1032 .cfi_endproc + ARM GAS /tmp/ccHbw826.s page 58 + + + 1033 .LFE147: + 1035 .section .text.HAL_ADC_PollForEvent,"ax",%progbits + 1036 .align 1 + 1037 .global HAL_ADC_PollForEvent + 1038 .syntax unified + 1039 .thumb + 1040 .thumb_func + 1041 .fpu fpv5-d16 + 1043 HAL_ADC_PollForEvent: + 1044 .LVL47: + 1045 .LFB148: + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tickstart = 0; + 1046 .loc 1 984 1 is_stmt 1 view -0 + 1047 .cfi_startproc + 1048 @ args = 0, pretend = 0, frame = 0 + 1049 @ frame_needed = 0, uses_anonymous_args = 0 + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tickstart = 0; + 1050 .loc 1 984 1 is_stmt 0 view .LVU341 + 1051 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 1052 .LCFI8: + 1053 .cfi_def_cfa_offset 24 + 1054 .cfi_offset 4, -24 + 1055 .cfi_offset 5, -20 + 1056 .cfi_offset 6, -16 + 1057 .cfi_offset 7, -12 + 1058 .cfi_offset 8, -8 + 1059 .cfi_offset 14, -4 + 1060 0004 0546 mov r5, r0 + 1061 0006 0E46 mov r6, r1 + 1062 0008 1746 mov r7, r2 + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1063 .loc 1 985 3 is_stmt 1 view .LVU342 + 1064 .LVL48: + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EVENT_TYPE(EventType)); + 1065 .loc 1 988 3 view .LVU343 + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1066 .loc 1 989 3 view .LVU344 + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1067 .loc 1 992 3 view .LVU345 + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1068 .loc 1 992 15 is_stmt 0 view .LVU346 + 1069 000a FFF7FEFF bl HAL_GetTick + 1070 .LVL49: + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1071 .loc 1 992 15 view .LVU347 + 1072 000e 8046 mov r8, r0 + 1073 .LVL50: + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1074 .loc 1 995 3 is_stmt 1 view .LVU348 + 1075 .L79: + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1076 .loc 1 995 8 view .LVU349 + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1077 .loc 1 995 11 is_stmt 0 view .LVU350 + 1078 0010 2B68 ldr r3, [r5] + 1079 0012 1C68 ldr r4, [r3] + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 59 + + + 1080 .loc 1 995 8 view .LVU351 + 1081 0014 36EA0402 bics r2, r6, r4 + 1082 0018 18D0 beq .L86 + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1083 .loc 1 998 5 is_stmt 1 view .LVU352 + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1084 .loc 1 998 7 is_stmt 0 view .LVU353 + 1085 001a B7F1FF3F cmp r7, #-1 + 1086 001e F7D0 beq .L79 +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1087 .loc 1 1000 7 is_stmt 1 view .LVU354 +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1088 .loc 1 1000 9 is_stmt 0 view .LVU355 + 1089 0020 6FB9 cbnz r7, .L87 + 1090 .L80: +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1091 .loc 1 1003 9 is_stmt 1 view .LVU356 +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1092 .loc 1 1003 14 is_stmt 0 view .LVU357 + 1093 0022 2B68 ldr r3, [r5] + 1094 0024 1B68 ldr r3, [r3] +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1095 .loc 1 1003 11 view .LVU358 + 1096 0026 36EA0303 bics r3, r6, r3 + 1097 002a F1D0 beq .L79 +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1098 .loc 1 1006 11 is_stmt 1 view .LVU359 + 1099 002c 2B6C ldr r3, [r5, #64] + 1100 002e 43F00403 orr r3, r3, #4 + 1101 0032 2B64 str r3, [r5, #64] +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1102 .loc 1 1009 11 view .LVU360 +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1103 .loc 1 1009 11 view .LVU361 + 1104 0034 0023 movs r3, #0 + 1105 0036 85F83C30 strb r3, [r5, #60] +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1106 .loc 1 1009 11 view .LVU362 +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1107 .loc 1 1011 11 view .LVU363 +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1108 .loc 1 1011 18 is_stmt 0 view .LVU364 + 1109 003a 0320 movs r0, #3 + 1110 003c 14E0 b .L82 + 1111 .L87: +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1112 .loc 1 1000 30 discriminator 1 view .LVU365 + 1113 003e FFF7FEFF bl HAL_GetTick + 1114 .LVL51: +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1115 .loc 1 1000 44 discriminator 1 view .LVU366 + 1116 0042 A0EB0800 sub r0, r0, r8 +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1117 .loc 1 1000 25 discriminator 1 view .LVU367 + 1118 0046 B842 cmp r0, r7 + 1119 0048 E2D9 bls .L79 + 1120 004a EAE7 b .L80 + ARM GAS /tmp/ccHbw826.s page 60 + + + 1121 .L86: +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1122 .loc 1 1018 3 is_stmt 1 view .LVU368 +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1123 .loc 1 1018 5 is_stmt 0 view .LVU369 + 1124 004c 012E cmp r6, #1 + 1125 004e 0DD0 beq .L88 +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC error code to overrun */ + 1126 .loc 1 1030 5 is_stmt 1 view .LVU370 + 1127 0050 2A6C ldr r2, [r5, #64] + 1128 0052 42F48062 orr r2, r2, #1024 + 1129 0056 2A64 str r2, [r5, #64] +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1130 .loc 1 1032 5 view .LVU371 + 1131 0058 6A6C ldr r2, [r5, #68] + 1132 005a 42F00202 orr r2, r2, #2 + 1133 005e 6A64 str r2, [r5, #68] +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1134 .loc 1 1035 5 view .LVU372 + 1135 0060 6FF02002 mvn r2, #32 + 1136 0064 1A60 str r2, [r3] +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1137 .loc 1 1039 10 is_stmt 0 view .LVU373 + 1138 0066 0020 movs r0, #0 + 1139 .L82: +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1140 .loc 1 1040 1 view .LVU374 + 1141 0068 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 1142 .LVL52: + 1143 .L88: +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1144 .loc 1 1021 5 is_stmt 1 view .LVU375 + 1145 006c 2A6C ldr r2, [r5, #64] + 1146 006e 42F48032 orr r2, r2, #65536 + 1147 0072 2A64 str r2, [r5, #64] +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1148 .loc 1 1024 5 view .LVU376 + 1149 0074 6FF00102 mvn r2, #1 + 1150 0078 1A60 str r2, [r3] +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1151 .loc 1 1039 10 is_stmt 0 view .LVU377 + 1152 007a 0020 movs r0, #0 + 1153 007c F4E7 b .L82 + 1154 .cfi_endproc + 1155 .LFE148: + 1157 .section .text.HAL_ADC_Start_IT,"ax",%progbits + 1158 .align 1 + 1159 .global HAL_ADC_Start_IT + 1160 .syntax unified + 1161 .thumb + 1162 .thumb_func + 1163 .fpu fpv5-d16 + 1165 HAL_ADC_Start_IT: + 1166 .LVL53: + 1167 .LFB149: +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; + 1168 .loc 1 1050 1 is_stmt 1 view -0 + ARM GAS /tmp/ccHbw826.s page 61 + + + 1169 .cfi_startproc + 1170 @ args = 0, pretend = 0, frame = 8 + 1171 @ frame_needed = 0, uses_anonymous_args = 0 + 1172 @ link register save eliminated. +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; + 1173 .loc 1 1050 1 is_stmt 0 view .LVU379 + 1174 0000 82B0 sub sp, sp, #8 + 1175 .LCFI9: + 1176 .cfi_def_cfa_offset 8 +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1177 .loc 1 1051 3 is_stmt 1 view .LVU380 +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1178 .loc 1 1051 17 is_stmt 0 view .LVU381 + 1179 0002 0023 movs r3, #0 + 1180 0004 0193 str r3, [sp, #4] +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + 1181 .loc 1 1054 3 is_stmt 1 view .LVU382 +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1182 .loc 1 1055 3 view .LVU383 +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1183 .loc 1 1058 3 view .LVU384 +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1184 .loc 1 1058 3 view .LVU385 + 1185 0006 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 1186 000a 012B cmp r3, #1 + 1187 000c 00F08480 beq .L100 +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1188 .loc 1 1058 3 discriminator 2 view .LVU386 + 1189 0010 0123 movs r3, #1 + 1190 0012 80F83C30 strb r3, [r0, #60] +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1191 .loc 1 1058 3 discriminator 2 view .LVU387 +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1192 .loc 1 1063 3 discriminator 2 view .LVU388 +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1193 .loc 1 1063 11 is_stmt 0 discriminator 2 view .LVU389 + 1194 0016 0368 ldr r3, [r0] +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1195 .loc 1 1063 21 discriminator 2 view .LVU390 + 1196 0018 9A68 ldr r2, [r3, #8] +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1197 .loc 1 1063 5 discriminator 2 view .LVU391 + 1198 001a 12F0010F tst r2, #1 + 1199 001e 13D1 bne .L91 +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1200 .loc 1 1066 5 is_stmt 1 view .LVU392 + 1201 0020 9A68 ldr r2, [r3, #8] + 1202 0022 42F00102 orr r2, r2, #1 + 1203 0026 9A60 str r2, [r3, #8] +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 1204 .loc 1 1070 5 view .LVU393 +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 1205 .loc 1 1070 53 is_stmt 0 view .LVU394 + 1206 0028 3F4B ldr r3, .L108 + 1207 002a 1B68 ldr r3, [r3] + 1208 002c 3F4A ldr r2, .L108+4 + 1209 002e A2FB0323 umull r2, r3, r2, r3 + ARM GAS /tmp/ccHbw826.s page 62 + + + 1210 0032 9B0C lsrs r3, r3, #18 +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 1211 .loc 1 1070 34 view .LVU395 + 1212 0034 03EB4303 add r3, r3, r3, lsl #1 +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 1213 .loc 1 1070 13 view .LVU396 + 1214 0038 0193 str r3, [sp, #4] +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1215 .loc 1 1071 5 is_stmt 1 view .LVU397 +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1216 .loc 1 1071 10 is_stmt 0 view .LVU398 + 1217 003a 02E0 b .L92 + 1218 .L93: +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1219 .loc 1 1073 7 is_stmt 1 view .LVU399 +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1220 .loc 1 1073 14 is_stmt 0 view .LVU400 + 1221 003c 019B ldr r3, [sp, #4] + 1222 003e 013B subs r3, r3, #1 + 1223 0040 0193 str r3, [sp, #4] + 1224 .L92: +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1225 .loc 1 1071 10 is_stmt 1 view .LVU401 +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1226 .loc 1 1071 19 is_stmt 0 view .LVU402 + 1227 0042 019B ldr r3, [sp, #4] +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1228 .loc 1 1071 10 view .LVU403 + 1229 0044 002B cmp r3, #0 + 1230 0046 F9D1 bne .L93 + 1231 .L91: +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1232 .loc 1 1078 3 is_stmt 1 view .LVU404 +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1233 .loc 1 1078 6 is_stmt 0 view .LVU405 + 1234 0048 0368 ldr r3, [r0] + 1235 004a 9A68 ldr r2, [r3, #8] +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1236 .loc 1 1078 5 view .LVU406 + 1237 004c 12F0010F tst r2, #1 + 1238 0050 57D0 beq .L94 +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, + 1239 .loc 1 1083 5 is_stmt 1 view .LVU407 + 1240 0052 016C ldr r1, [r0, #64] + 1241 0054 364A ldr r2, .L108+8 + 1242 0056 0A40 ands r2, r2, r1 + 1243 0058 42F48072 orr r2, r2, #256 + 1244 005c 0264 str r2, [r0, #64] +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1245 .loc 1 1089 5 view .LVU408 +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1246 .loc 1 1089 9 is_stmt 0 view .LVU409 + 1247 005e 5A68 ldr r2, [r3, #4] +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1248 .loc 1 1089 8 view .LVU410 + 1249 0060 12F4806F tst r2, #1024 + 1250 0064 05D0 beq .L95 + ARM GAS /tmp/ccHbw826.s page 63 + + +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1251 .loc 1 1091 7 is_stmt 1 view .LVU411 + 1252 0066 026C ldr r2, [r0, #64] + 1253 0068 22F44052 bic r2, r2, #12288 + 1254 006c 42F48052 orr r2, r2, #4096 + 1255 0070 0264 str r2, [r0, #64] + 1256 .L95: +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1257 .loc 1 1095 5 view .LVU412 +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1258 .loc 1 1095 9 is_stmt 0 view .LVU413 + 1259 0072 026C ldr r2, [r0, #64] +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1260 .loc 1 1095 8 view .LVU414 + 1261 0074 12F4805F tst r2, #4096 + 1262 0078 1ED0 beq .L96 +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1263 .loc 1 1098 7 is_stmt 1 view .LVU415 + 1264 007a 426C ldr r2, [r0, #68] + 1265 007c 22F00602 bic r2, r2, #6 + 1266 0080 4264 str r2, [r0, #68] + 1267 .L97: +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1268 .loc 1 1109 5 view .LVU416 +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1269 .loc 1 1109 5 view .LVU417 + 1270 0082 0022 movs r2, #0 + 1271 0084 80F83C20 strb r2, [r0, #60] +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1272 .loc 1 1109 5 view .LVU418 +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1273 .loc 1 1113 5 view .LVU419 + 1274 0088 6FF02202 mvn r2, #34 + 1275 008c 1A60 str r2, [r3] +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1276 .loc 1 1116 5 view .LVU420 + 1277 008e 0268 ldr r2, [r0] + 1278 0090 5168 ldr r1, [r2, #4] + 1279 0092 284B ldr r3, .L108+12 + 1280 0094 0B43 orrs r3, r3, r1 + 1281 0096 5360 str r3, [r2, #4] +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1282 .loc 1 1119 5 view .LVU421 +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1283 .loc 1 1119 8 is_stmt 0 view .LVU422 + 1284 0098 274B ldr r3, .L108+16 + 1285 009a 5B68 ldr r3, [r3, #4] +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1286 .loc 1 1119 7 view .LVU423 + 1287 009c 13F01F0F tst r3, #31 + 1288 00a0 0DD1 bne .L98 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1289 .loc 1 1122 7 is_stmt 1 view .LVU424 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1290 .loc 1 1122 15 is_stmt 0 view .LVU425 + 1291 00a2 0368 ldr r3, [r0] +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 64 + + + 1292 .loc 1 1122 25 view .LVU426 + 1293 00a4 9A68 ldr r2, [r3, #8] +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1294 .loc 1 1122 9 view .LVU427 + 1295 00a6 12F0405F tst r2, #805306368 + 1296 00aa 37D1 bne .L101 +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1297 .loc 1 1125 9 is_stmt 1 view .LVU428 +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1298 .loc 1 1125 29 is_stmt 0 view .LVU429 + 1299 00ac 9A68 ldr r2, [r3, #8] + 1300 00ae 42F08042 orr r2, r2, #1073741824 + 1301 00b2 9A60 str r2, [r3, #8] +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1302 .loc 1 1160 10 view .LVU430 + 1303 00b4 0020 movs r0, #0 + 1304 .LVL54: +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1305 .loc 1 1160 10 view .LVU431 + 1306 00b6 2DE0 b .L90 + 1307 .LVL55: + 1308 .L96: +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1309 .loc 1 1103 7 is_stmt 1 view .LVU432 + 1310 00b8 0022 movs r2, #0 + 1311 00ba 4264 str r2, [r0, #68] + 1312 00bc E1E7 b .L97 + 1313 .L98: +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1314 .loc 1 1131 7 view .LVU433 +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1315 .loc 1 1131 15 is_stmt 0 view .LVU434 + 1316 00be 0368 ldr r3, [r0] +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1317 .loc 1 1131 9 view .LVU435 + 1318 00c0 1E4A ldr r2, .L108+20 + 1319 00c2 9342 cmp r3, r2 + 1320 00c4 0AD0 beq .L106 + 1321 .L99: +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1322 .loc 1 1139 7 is_stmt 1 view .LVU436 +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1323 .loc 1 1139 11 is_stmt 0 view .LVU437 + 1324 00c6 1C4B ldr r3, .L108+16 + 1325 00c8 5B68 ldr r3, [r3, #4] +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1326 .loc 1 1139 9 view .LVU438 + 1327 00ca 13F0100F tst r3, #16 + 1328 00ce 27D1 bne .L102 +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1329 .loc 1 1142 9 is_stmt 1 view .LVU439 +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1330 .loc 1 1142 17 is_stmt 0 view .LVU440 + 1331 00d0 0368 ldr r3, [r0] +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1332 .loc 1 1142 11 view .LVU441 + 1333 00d2 1B4A ldr r2, .L108+24 + ARM GAS /tmp/ccHbw826.s page 65 + + + 1334 00d4 9342 cmp r3, r2 + 1335 00d6 0AD0 beq .L107 +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1336 .loc 1 1160 10 view .LVU442 + 1337 00d8 0020 movs r0, #0 + 1338 .LVL56: +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1339 .loc 1 1160 10 view .LVU443 + 1340 00da 1BE0 b .L90 + 1341 .LVL57: + 1342 .L106: +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1343 .loc 1 1131 54 discriminator 1 view .LVU444 + 1344 00dc 9A68 ldr r2, [r3, #8] +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1345 .loc 1 1131 35 discriminator 1 view .LVU445 + 1346 00de 12F0405F tst r2, #805306368 + 1347 00e2 F0D1 bne .L99 +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1348 .loc 1 1134 11 is_stmt 1 view .LVU446 +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1349 .loc 1 1134 31 is_stmt 0 view .LVU447 + 1350 00e4 9A68 ldr r2, [r3, #8] + 1351 00e6 42F08042 orr r2, r2, #1073741824 + 1352 00ea 9A60 str r2, [r3, #8] + 1353 00ec EBE7 b .L99 + 1354 .L107: +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1355 .loc 1 1142 56 discriminator 1 view .LVU448 + 1356 00ee 9A68 ldr r2, [r3, #8] +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1357 .loc 1 1142 37 discriminator 1 view .LVU449 + 1358 00f0 12F0405F tst r2, #805306368 + 1359 00f4 16D1 bne .L104 +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1360 .loc 1 1145 11 is_stmt 1 view .LVU450 +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1361 .loc 1 1145 31 is_stmt 0 view .LVU451 + 1362 00f6 9A68 ldr r2, [r3, #8] + 1363 00f8 42F08042 orr r2, r2, #1073741824 + 1364 00fc 9A60 str r2, [r3, #8] +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1365 .loc 1 1160 10 view .LVU452 + 1366 00fe 0020 movs r0, #0 + 1367 .LVL58: +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1368 .loc 1 1160 10 view .LVU453 + 1369 0100 08E0 b .L90 + 1370 .LVL59: + 1371 .L94: +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1372 .loc 1 1153 5 is_stmt 1 view .LVU454 + 1373 0102 036C ldr r3, [r0, #64] + 1374 0104 43F01003 orr r3, r3, #16 + 1375 0108 0364 str r3, [r0, #64] +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1376 .loc 1 1156 5 view .LVU455 + ARM GAS /tmp/ccHbw826.s page 66 + + + 1377 010a 436C ldr r3, [r0, #68] + 1378 010c 43F00103 orr r3, r3, #1 + 1379 0110 4364 str r3, [r0, #68] +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1380 .loc 1 1160 10 is_stmt 0 view .LVU456 + 1381 0112 0020 movs r0, #0 + 1382 .LVL60: + 1383 .L90: +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1384 .loc 1 1161 1 view .LVU457 + 1385 0114 02B0 add sp, sp, #8 + 1386 .LCFI10: + 1387 .cfi_remember_state + 1388 .cfi_def_cfa_offset 0 + 1389 @ sp needed + 1390 0116 7047 bx lr + 1391 .LVL61: + 1392 .L100: + 1393 .LCFI11: + 1394 .cfi_restore_state +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1395 .loc 1 1058 3 view .LVU458 + 1396 0118 0220 movs r0, #2 + 1397 .LVL62: +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1398 .loc 1 1058 3 view .LVU459 + 1399 011a FBE7 b .L90 + 1400 .LVL63: + 1401 .L101: +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1402 .loc 1 1160 10 view .LVU460 + 1403 011c 0020 movs r0, #0 + 1404 .LVL64: +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1405 .loc 1 1160 10 view .LVU461 + 1406 011e F9E7 b .L90 + 1407 .LVL65: + 1408 .L102: +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1409 .loc 1 1160 10 view .LVU462 + 1410 0120 0020 movs r0, #0 + 1411 .LVL66: +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1412 .loc 1 1160 10 view .LVU463 + 1413 0122 F7E7 b .L90 + 1414 .LVL67: + 1415 .L104: +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1416 .loc 1 1160 10 view .LVU464 + 1417 0124 0020 movs r0, #0 + 1418 .LVL68: +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1419 .loc 1 1160 10 view .LVU465 + 1420 0126 F5E7 b .L90 + 1421 .L109: + 1422 .align 2 + 1423 .L108: + ARM GAS /tmp/ccHbw826.s page 67 + + + 1424 0128 00000000 .word SystemCoreClock + 1425 012c 83DE1B43 .word 1125899907 + 1426 0130 FEF8FFFF .word -1794 + 1427 0134 20000004 .word 67108896 + 1428 0138 00230140 .word 1073816320 + 1429 013c 00200140 .word 1073815552 + 1430 0140 00220140 .word 1073816064 + 1431 .cfi_endproc + 1432 .LFE149: + 1434 .section .text.HAL_ADC_Stop_IT,"ax",%progbits + 1435 .align 1 + 1436 .global HAL_ADC_Stop_IT + 1437 .syntax unified + 1438 .thumb + 1439 .thumb_func + 1440 .fpu fpv5-d16 + 1442 HAL_ADC_Stop_IT: + 1443 .LVL69: + 1444 .LFB150: +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check the parameters */ + 1445 .loc 1 1173 1 is_stmt 1 view -0 + 1446 .cfi_startproc + 1447 @ args = 0, pretend = 0, frame = 0 + 1448 @ frame_needed = 0, uses_anonymous_args = 0 + 1449 @ link register save eliminated. +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1450 .loc 1 1175 3 view .LVU467 +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1451 .loc 1 1178 3 view .LVU468 +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1452 .loc 1 1178 3 view .LVU469 + 1453 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 1454 0004 012B cmp r3, #1 + 1455 0006 1BD0 beq .L113 +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1456 .loc 1 1178 3 discriminator 2 view .LVU470 + 1457 0008 0123 movs r3, #1 + 1458 000a 80F83C30 strb r3, [r0, #60] +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1459 .loc 1 1178 3 discriminator 2 view .LVU471 +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1460 .loc 1 1182 3 discriminator 2 view .LVU472 + 1461 000e 0268 ldr r2, [r0] + 1462 0010 9368 ldr r3, [r2, #8] + 1463 0012 23F00103 bic r3, r3, #1 + 1464 0016 9360 str r3, [r2, #8] +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1465 .loc 1 1185 3 discriminator 2 view .LVU473 +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1466 .loc 1 1185 6 is_stmt 0 discriminator 2 view .LVU474 + 1467 0018 0368 ldr r3, [r0] + 1468 001a 9A68 ldr r2, [r3, #8] +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1469 .loc 1 1185 5 discriminator 2 view .LVU475 + 1470 001c 12F0010F tst r2, #1 + 1471 0020 09D1 bne .L112 +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 68 + + + 1472 .loc 1 1188 5 is_stmt 1 view .LVU476 + 1473 0022 5968 ldr r1, [r3, #4] + 1474 0024 074A ldr r2, .L114 + 1475 0026 0A40 ands r2, r2, r1 + 1476 0028 5A60 str r2, [r3, #4] +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 1477 .loc 1 1191 5 view .LVU477 + 1478 002a 026C ldr r2, [r0, #64] + 1479 002c 064B ldr r3, .L114+4 + 1480 002e 1340 ands r3, r3, r2 + 1481 0030 43F00103 orr r3, r3, #1 + 1482 0034 0364 str r3, [r0, #64] + 1483 .L112: +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1484 .loc 1 1197 3 view .LVU478 +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1485 .loc 1 1197 3 view .LVU479 + 1486 0036 0023 movs r3, #0 + 1487 0038 80F83C30 strb r3, [r0, #60] +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1488 .loc 1 1197 3 view .LVU480 +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1489 .loc 1 1200 3 view .LVU481 +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1490 .loc 1 1200 10 is_stmt 0 view .LVU482 + 1491 003c 1846 mov r0, r3 + 1492 .LVL70: +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1493 .loc 1 1200 10 view .LVU483 + 1494 003e 7047 bx lr + 1495 .LVL71: + 1496 .L113: +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1497 .loc 1 1178 3 view .LVU484 + 1498 0040 0220 movs r0, #2 + 1499 .LVL72: +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1500 .loc 1 1201 1 view .LVU485 + 1501 0042 7047 bx lr + 1502 .L115: + 1503 .align 2 + 1504 .L114: + 1505 0044 DFFFFFFB .word -67108897 + 1506 0048 FEEEFFFF .word -4354 + 1507 .cfi_endproc + 1508 .LFE150: + 1510 .section .text.HAL_ADC_Start_DMA,"ax",%progbits + 1511 .align 1 + 1512 .global HAL_ADC_Start_DMA + 1513 .syntax unified + 1514 .thumb + 1515 .thumb_func + 1516 .fpu fpv5-d16 + 1518 HAL_ADC_Start_DMA: + 1519 .LVL73: + 1520 .LFB152: +1376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; + ARM GAS /tmp/ccHbw826.s page 69 + + + 1521 .loc 1 1376 1 is_stmt 1 view -0 + 1522 .cfi_startproc + 1523 @ args = 0, pretend = 0, frame = 8 + 1524 @ frame_needed = 0, uses_anonymous_args = 0 +1376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; + 1525 .loc 1 1376 1 is_stmt 0 view .LVU487 + 1526 0000 30B5 push {r4, r5, lr} + 1527 .LCFI12: + 1528 .cfi_def_cfa_offset 12 + 1529 .cfi_offset 4, -12 + 1530 .cfi_offset 5, -8 + 1531 .cfi_offset 14, -4 + 1532 0002 83B0 sub sp, sp, #12 + 1533 .LCFI13: + 1534 .cfi_def_cfa_offset 24 + 1535 0004 1346 mov r3, r2 +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1536 .loc 1 1377 3 is_stmt 1 view .LVU488 +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1537 .loc 1 1377 17 is_stmt 0 view .LVU489 + 1538 0006 0022 movs r2, #0 + 1539 .LVL74: +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1540 .loc 1 1377 17 view .LVU490 + 1541 0008 0192 str r2, [sp, #4] +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + 1542 .loc 1 1380 3 is_stmt 1 view .LVU491 +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1543 .loc 1 1381 3 view .LVU492 +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1544 .loc 1 1384 3 view .LVU493 +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1545 .loc 1 1384 3 view .LVU494 + 1546 000a 90F83C20 ldrb r2, [r0, #60] @ zero_extendqisi2 + 1547 000e 012A cmp r2, #1 + 1548 0010 00F09B80 beq .L127 + 1549 0014 0446 mov r4, r0 +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1550 .loc 1 1384 3 discriminator 2 view .LVU495 + 1551 0016 0122 movs r2, #1 + 1552 0018 80F83C20 strb r2, [r0, #60] +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1553 .loc 1 1384 3 discriminator 2 view .LVU496 +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1554 .loc 1 1389 3 discriminator 2 view .LVU497 +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1555 .loc 1 1389 11 is_stmt 0 discriminator 2 view .LVU498 + 1556 001c 0268 ldr r2, [r0] +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1557 .loc 1 1389 21 discriminator 2 view .LVU499 + 1558 001e 9068 ldr r0, [r2, #8] + 1559 .LVL75: +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1560 .loc 1 1389 5 discriminator 2 view .LVU500 + 1561 0020 10F0010F tst r0, #1 + 1562 0024 13D1 bne .L118 +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 70 + + + 1563 .loc 1 1392 5 is_stmt 1 view .LVU501 + 1564 0026 9068 ldr r0, [r2, #8] + 1565 0028 40F00100 orr r0, r0, #1 + 1566 002c 9060 str r0, [r2, #8] +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 1567 .loc 1 1396 5 view .LVU502 +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 1568 .loc 1 1396 53 is_stmt 0 view .LVU503 + 1569 002e 4B4A ldr r2, .L135 + 1570 0030 1068 ldr r0, [r2] + 1571 0032 4B4A ldr r2, .L135+4 + 1572 0034 A2FB0020 umull r2, r0, r2, r0 + 1573 0038 800C lsrs r0, r0, #18 +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 1574 .loc 1 1396 34 view .LVU504 + 1575 003a 00EB4000 add r0, r0, r0, lsl #1 +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 1576 .loc 1 1396 13 view .LVU505 + 1577 003e 0190 str r0, [sp, #4] +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1578 .loc 1 1397 5 is_stmt 1 view .LVU506 +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1579 .loc 1 1397 10 is_stmt 0 view .LVU507 + 1580 0040 02E0 b .L119 + 1581 .L120: +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1582 .loc 1 1399 7 is_stmt 1 view .LVU508 +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1583 .loc 1 1399 14 is_stmt 0 view .LVU509 + 1584 0042 0198 ldr r0, [sp, #4] + 1585 0044 0138 subs r0, r0, #1 + 1586 0046 0190 str r0, [sp, #4] + 1587 .L119: +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1588 .loc 1 1397 10 is_stmt 1 view .LVU510 +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1589 .loc 1 1397 19 is_stmt 0 view .LVU511 + 1590 0048 0198 ldr r0, [sp, #4] +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1591 .loc 1 1397 10 view .LVU512 + 1592 004a 0028 cmp r0, #0 + 1593 004c F9D1 bne .L120 + 1594 .L118: +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1595 .loc 1 1404 3 is_stmt 1 view .LVU513 +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1596 .loc 1 1404 6 is_stmt 0 view .LVU514 + 1597 004e 2068 ldr r0, [r4] + 1598 0050 8268 ldr r2, [r0, #8] +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1599 .loc 1 1404 5 view .LVU515 + 1600 0052 12F0010F tst r2, #1 + 1601 0056 6DD0 beq .L121 +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, + 1602 .loc 1 1409 5 is_stmt 1 view .LVU516 + 1603 0058 256C ldr r5, [r4, #64] + 1604 005a 424A ldr r2, .L135+8 + ARM GAS /tmp/ccHbw826.s page 71 + + + 1605 005c 2A40 ands r2, r2, r5 + 1606 005e 42F48072 orr r2, r2, #256 + 1607 0062 2264 str r2, [r4, #64] +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1608 .loc 1 1415 5 view .LVU517 +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1609 .loc 1 1415 9 is_stmt 0 view .LVU518 + 1610 0064 4268 ldr r2, [r0, #4] +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1611 .loc 1 1415 8 view .LVU519 + 1612 0066 12F4806F tst r2, #1024 + 1613 006a 05D0 beq .L122 +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1614 .loc 1 1417 7 is_stmt 1 view .LVU520 + 1615 006c 226C ldr r2, [r4, #64] + 1616 006e 22F44052 bic r2, r2, #12288 + 1617 0072 42F48052 orr r2, r2, #4096 + 1618 0076 2264 str r2, [r4, #64] + 1619 .L122: +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1620 .loc 1 1421 5 view .LVU521 +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1621 .loc 1 1421 9 is_stmt 0 view .LVU522 + 1622 0078 226C ldr r2, [r4, #64] +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1623 .loc 1 1421 8 view .LVU523 + 1624 007a 12F4805F tst r2, #4096 + 1625 007e 34D0 beq .L123 +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1626 .loc 1 1424 7 is_stmt 1 view .LVU524 + 1627 0080 626C ldr r2, [r4, #68] + 1628 0082 22F00602 bic r2, r2, #6 + 1629 0086 6264 str r2, [r4, #68] + 1630 .L124: +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1631 .loc 1 1435 5 view .LVU525 +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1632 .loc 1 1435 5 view .LVU526 + 1633 0088 0022 movs r2, #0 + 1634 008a 84F83C20 strb r2, [r4, #60] +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1635 .loc 1 1435 5 view .LVU527 +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1636 .loc 1 1438 5 view .LVU528 +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1637 .loc 1 1438 9 is_stmt 0 view .LVU529 + 1638 008e A26B ldr r2, [r4, #56] +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1639 .loc 1 1438 40 view .LVU530 + 1640 0090 3548 ldr r0, .L135+12 + 1641 0092 D063 str r0, [r2, #60] +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1642 .loc 1 1441 5 is_stmt 1 view .LVU531 +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1643 .loc 1 1441 9 is_stmt 0 view .LVU532 + 1644 0094 A26B ldr r2, [r4, #56] +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 72 + + + 1645 .loc 1 1441 44 view .LVU533 + 1646 0096 3548 ldr r0, .L135+16 + 1647 0098 1064 str r0, [r2, #64] +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1648 .loc 1 1444 5 is_stmt 1 view .LVU534 +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1649 .loc 1 1444 9 is_stmt 0 view .LVU535 + 1650 009a A26B ldr r2, [r4, #56] +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1651 .loc 1 1444 41 view .LVU536 + 1652 009c 3448 ldr r0, .L135+20 + 1653 009e D064 str r0, [r2, #76] +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1654 .loc 1 1452 5 is_stmt 1 view .LVU537 + 1655 00a0 2268 ldr r2, [r4] + 1656 00a2 6FF02200 mvn r0, #34 + 1657 00a6 1060 str r0, [r2] +1455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1658 .loc 1 1455 5 view .LVU538 + 1659 00a8 2068 ldr r0, [r4] + 1660 00aa 4268 ldr r2, [r0, #4] + 1661 00ac 42F08062 orr r2, r2, #67108864 + 1662 00b0 4260 str r2, [r0, #4] +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1663 .loc 1 1458 5 view .LVU539 +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1664 .loc 1 1458 9 is_stmt 0 view .LVU540 + 1665 00b2 2068 ldr r0, [r4] +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1666 .loc 1 1458 25 view .LVU541 + 1667 00b4 8268 ldr r2, [r0, #8] + 1668 00b6 42F48072 orr r2, r2, #256 + 1669 00ba 8260 str r2, [r0, #8] +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1670 .loc 1 1461 5 is_stmt 1 view .LVU542 +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1671 .loc 1 1461 55 is_stmt 0 view .LVU543 + 1672 00bc 2068 ldr r0, [r4] +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1673 .loc 1 1461 5 view .LVU544 + 1674 00be 0A46 mov r2, r1 + 1675 00c0 00F14C01 add r1, r0, #76 + 1676 .LVL76: +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1677 .loc 1 1461 5 view .LVU545 + 1678 00c4 A06B ldr r0, [r4, #56] + 1679 00c6 FFF7FEFF bl HAL_DMA_Start_IT + 1680 .LVL77: +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1681 .loc 1 1464 5 is_stmt 1 view .LVU546 +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1682 .loc 1 1464 8 is_stmt 0 view .LVU547 + 1683 00ca 2A4B ldr r3, .L135+24 + 1684 00cc 5B68 ldr r3, [r3, #4] +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1685 .loc 1 1464 7 view .LVU548 + 1686 00ce 13F01F0F tst r3, #31 + ARM GAS /tmp/ccHbw826.s page 73 + + + 1687 00d2 0DD1 bne .L125 +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1688 .loc 1 1467 7 is_stmt 1 view .LVU549 +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1689 .loc 1 1467 15 is_stmt 0 view .LVU550 + 1690 00d4 2368 ldr r3, [r4] +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1691 .loc 1 1467 25 view .LVU551 + 1692 00d6 9A68 ldr r2, [r3, #8] +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1693 .loc 1 1467 9 view .LVU552 + 1694 00d8 12F0405F tst r2, #805306368 + 1695 00dc 37D1 bne .L128 +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1696 .loc 1 1470 9 is_stmt 1 view .LVU553 +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1697 .loc 1 1470 29 is_stmt 0 view .LVU554 + 1698 00de 9A68 ldr r2, [r3, #8] + 1699 00e0 42F08042 orr r2, r2, #1073741824 + 1700 00e4 9A60 str r2, [r3, #8] +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1701 .loc 1 1504 10 view .LVU555 + 1702 00e6 0020 movs r0, #0 + 1703 00e8 2DE0 b .L117 + 1704 .LVL78: + 1705 .L123: +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1706 .loc 1 1429 7 is_stmt 1 view .LVU556 + 1707 00ea 0022 movs r2, #0 + 1708 00ec 6264 str r2, [r4, #68] + 1709 00ee CBE7 b .L124 + 1710 .LVL79: + 1711 .L125: +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1712 .loc 1 1476 7 view .LVU557 +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1713 .loc 1 1476 15 is_stmt 0 view .LVU558 + 1714 00f0 2368 ldr r3, [r4] +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1715 .loc 1 1476 9 view .LVU559 + 1716 00f2 214A ldr r2, .L135+28 + 1717 00f4 9342 cmp r3, r2 + 1718 00f6 0AD0 beq .L133 + 1719 .L126: +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1720 .loc 1 1483 7 is_stmt 1 view .LVU560 +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1721 .loc 1 1483 11 is_stmt 0 view .LVU561 + 1722 00f8 1E4B ldr r3, .L135+24 + 1723 00fa 5B68 ldr r3, [r3, #4] +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1724 .loc 1 1483 9 view .LVU562 + 1725 00fc 13F0100F tst r3, #16 + 1726 0100 27D1 bne .L129 +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1727 .loc 1 1486 9 is_stmt 1 view .LVU563 +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 74 + + + 1728 .loc 1 1486 17 is_stmt 0 view .LVU564 + 1729 0102 2368 ldr r3, [r4] +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1730 .loc 1 1486 11 view .LVU565 + 1731 0104 1D4A ldr r2, .L135+32 + 1732 0106 9342 cmp r3, r2 + 1733 0108 0AD0 beq .L134 +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1734 .loc 1 1504 10 view .LVU566 + 1735 010a 0020 movs r0, #0 + 1736 010c 1BE0 b .L117 + 1737 .L133: +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1738 .loc 1 1476 54 discriminator 1 view .LVU567 + 1739 010e 9A68 ldr r2, [r3, #8] +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1740 .loc 1 1476 35 discriminator 1 view .LVU568 + 1741 0110 12F0405F tst r2, #805306368 + 1742 0114 F0D1 bne .L126 +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1743 .loc 1 1479 11 is_stmt 1 view .LVU569 +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1744 .loc 1 1479 31 is_stmt 0 view .LVU570 + 1745 0116 9A68 ldr r2, [r3, #8] + 1746 0118 42F08042 orr r2, r2, #1073741824 + 1747 011c 9A60 str r2, [r3, #8] + 1748 011e EBE7 b .L126 + 1749 .L134: +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1750 .loc 1 1486 56 discriminator 1 view .LVU571 + 1751 0120 9A68 ldr r2, [r3, #8] +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1752 .loc 1 1486 37 discriminator 1 view .LVU572 + 1753 0122 12F0405F tst r2, #805306368 + 1754 0126 16D1 bne .L131 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1755 .loc 1 1489 11 is_stmt 1 view .LVU573 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1756 .loc 1 1489 31 is_stmt 0 view .LVU574 + 1757 0128 9A68 ldr r2, [r3, #8] + 1758 012a 42F08042 orr r2, r2, #1073741824 + 1759 012e 9A60 str r2, [r3, #8] +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1760 .loc 1 1504 10 view .LVU575 + 1761 0130 0020 movs r0, #0 + 1762 0132 08E0 b .L117 + 1763 .LVL80: + 1764 .L121: +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1765 .loc 1 1497 5 is_stmt 1 view .LVU576 + 1766 0134 236C ldr r3, [r4, #64] + 1767 .LVL81: +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1768 .loc 1 1497 5 is_stmt 0 view .LVU577 + 1769 0136 43F01003 orr r3, r3, #16 + 1770 013a 2364 str r3, [r4, #64] +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + ARM GAS /tmp/ccHbw826.s page 75 + + + 1771 .loc 1 1500 5 is_stmt 1 view .LVU578 + 1772 013c 636C ldr r3, [r4, #68] + 1773 013e 43F00103 orr r3, r3, #1 + 1774 0142 6364 str r3, [r4, #68] +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1775 .loc 1 1504 10 is_stmt 0 view .LVU579 + 1776 0144 0020 movs r0, #0 + 1777 .LVL82: + 1778 .L117: +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1779 .loc 1 1505 1 view .LVU580 + 1780 0146 03B0 add sp, sp, #12 + 1781 .LCFI14: + 1782 .cfi_remember_state + 1783 .cfi_def_cfa_offset 12 + 1784 @ sp needed + 1785 0148 30BD pop {r4, r5, pc} + 1786 .LVL83: + 1787 .L127: + 1788 .LCFI15: + 1789 .cfi_restore_state +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1790 .loc 1 1384 3 view .LVU581 + 1791 014a 0220 movs r0, #2 + 1792 .LVL84: +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1793 .loc 1 1384 3 view .LVU582 + 1794 014c FBE7 b .L117 + 1795 .LVL85: + 1796 .L128: +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1797 .loc 1 1504 10 view .LVU583 + 1798 014e 0020 movs r0, #0 + 1799 0150 F9E7 b .L117 + 1800 .L129: +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1801 .loc 1 1504 10 view .LVU584 + 1802 0152 0020 movs r0, #0 + 1803 0154 F7E7 b .L117 + 1804 .L131: +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1805 .loc 1 1504 10 view .LVU585 + 1806 0156 0020 movs r0, #0 + 1807 0158 F5E7 b .L117 + 1808 .L136: + 1809 015a 00BF .align 2 + 1810 .L135: + 1811 015c 00000000 .word SystemCoreClock + 1812 0160 83DE1B43 .word 1125899907 + 1813 0164 FEF8FFFF .word -1794 + 1814 0168 00000000 .word ADC_DMAConvCplt + 1815 016c 00000000 .word ADC_DMAHalfConvCplt + 1816 0170 00000000 .word ADC_DMAError + 1817 0174 00230140 .word 1073816320 + 1818 0178 00200140 .word 1073815552 + 1819 017c 00220140 .word 1073816064 + 1820 .cfi_endproc + ARM GAS /tmp/ccHbw826.s page 76 + + + 1821 .LFE152: + 1823 .section .text.HAL_ADC_Stop_DMA,"ax",%progbits + 1824 .align 1 + 1825 .global HAL_ADC_Stop_DMA + 1826 .syntax unified + 1827 .thumb + 1828 .thumb_func + 1829 .fpu fpv5-d16 + 1831 HAL_ADC_Stop_DMA: + 1832 .LVL86: + 1833 .LFB153: +1514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 1834 .loc 1 1514 1 is_stmt 1 view -0 + 1835 .cfi_startproc + 1836 @ args = 0, pretend = 0, frame = 0 + 1837 @ frame_needed = 0, uses_anonymous_args = 0 +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1838 .loc 1 1515 3 view .LVU587 +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1839 .loc 1 1518 3 view .LVU588 +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1840 .loc 1 1521 3 view .LVU589 +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1841 .loc 1 1521 3 view .LVU590 + 1842 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 1843 0004 012B cmp r3, #1 + 1844 0006 33D0 beq .L141 +1514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 1845 .loc 1 1514 1 is_stmt 0 discriminator 2 view .LVU591 + 1846 0008 10B5 push {r4, lr} + 1847 .LCFI16: + 1848 .cfi_def_cfa_offset 8 + 1849 .cfi_offset 4, -8 + 1850 .cfi_offset 14, -4 + 1851 000a 0446 mov r4, r0 +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1852 .loc 1 1521 3 is_stmt 1 discriminator 2 view .LVU592 + 1853 000c 0123 movs r3, #1 + 1854 000e 80F83C30 strb r3, [r0, #60] +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1855 .loc 1 1521 3 discriminator 2 view .LVU593 +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1856 .loc 1 1525 3 discriminator 2 view .LVU594 + 1857 0012 0268 ldr r2, [r0] + 1858 0014 9368 ldr r3, [r2, #8] + 1859 0016 23F00103 bic r3, r3, #1 + 1860 001a 9360 str r3, [r2, #8] +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1861 .loc 1 1528 3 discriminator 2 view .LVU595 +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1862 .loc 1 1528 6 is_stmt 0 discriminator 2 view .LVU596 + 1863 001c 0368 ldr r3, [r0] + 1864 001e 9A68 ldr r2, [r3, #8] +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1865 .loc 1 1528 5 discriminator 2 view .LVU597 + 1866 0020 12F0010F tst r2, #1 + 1867 0024 1FD1 bne .L142 + ARM GAS /tmp/ccHbw826.s page 77 + + +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1868 .loc 1 1531 5 is_stmt 1 view .LVU598 +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1869 .loc 1 1531 25 is_stmt 0 view .LVU599 + 1870 0026 9A68 ldr r2, [r3, #8] + 1871 0028 22F48072 bic r2, r2, #256 + 1872 002c 9A60 str r2, [r3, #8] +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1873 .loc 1 1535 5 is_stmt 1 view .LVU600 +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1874 .loc 1 1535 13 is_stmt 0 view .LVU601 + 1875 002e 806B ldr r0, [r0, #56] + 1876 .LVL87: +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1877 .loc 1 1535 25 view .LVU602 + 1878 0030 90F83530 ldrb r3, [r0, #53] @ zero_extendqisi2 + 1879 0034 DBB2 uxtb r3, r3 +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1880 .loc 1 1535 8 view .LVU603 + 1881 0036 022B cmp r3, #2 + 1882 0038 0CD0 beq .L148 +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1883 .loc 1 1515 21 view .LVU604 + 1884 003a 0020 movs r0, #0 + 1885 .LVL88: + 1886 .L140: +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1887 .loc 1 1548 5 is_stmt 1 view .LVU605 + 1888 003c 2268 ldr r2, [r4] + 1889 003e 5368 ldr r3, [r2, #4] + 1890 0040 23F08063 bic r3, r3, #67108864 + 1891 0044 5360 str r3, [r2, #4] +1551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 1892 .loc 1 1551 5 view .LVU606 + 1893 0046 226C ldr r2, [r4, #64] + 1894 0048 0A4B ldr r3, .L149 + 1895 004a 1340 ands r3, r3, r2 + 1896 004c 43F00103 orr r3, r3, #1 + 1897 0050 2364 str r3, [r4, #64] + 1898 0052 09E0 b .L139 + 1899 .LVL89: + 1900 .L148: +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1901 .loc 1 1537 7 view .LVU607 +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1902 .loc 1 1537 24 is_stmt 0 view .LVU608 + 1903 0054 FFF7FEFF bl HAL_DMA_Abort + 1904 .LVL90: +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1905 .loc 1 1540 7 is_stmt 1 view .LVU609 +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 1906 .loc 1 1540 10 is_stmt 0 view .LVU610 + 1907 0058 0028 cmp r0, #0 + 1908 005a EFD0 beq .L140 +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1909 .loc 1 1543 9 is_stmt 1 view .LVU611 + 1910 005c 236C ldr r3, [r4, #64] + ARM GAS /tmp/ccHbw826.s page 78 + + + 1911 005e 43F04003 orr r3, r3, #64 + 1912 0062 2364 str r3, [r4, #64] + 1913 0064 EAE7 b .L140 + 1914 .LVL91: + 1915 .L142: +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1916 .loc 1 1515 21 is_stmt 0 view .LVU612 + 1917 0066 0020 movs r0, #0 + 1918 .LVL92: + 1919 .L139: +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1920 .loc 1 1557 3 is_stmt 1 view .LVU613 +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1921 .loc 1 1557 3 view .LVU614 + 1922 0068 0023 movs r3, #0 + 1923 006a 84F83C30 strb r3, [r4, #60] +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1924 .loc 1 1557 3 view .LVU615 +1560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1925 .loc 1 1560 3 view .LVU616 +1561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1926 .loc 1 1561 1 is_stmt 0 view .LVU617 + 1927 006e 10BD pop {r4, pc} + 1928 .LVL93: + 1929 .L141: + 1930 .LCFI17: + 1931 .cfi_def_cfa_offset 0 + 1932 .cfi_restore 4 + 1933 .cfi_restore 14 +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1934 .loc 1 1521 3 view .LVU618 + 1935 0070 0220 movs r0, #2 + 1936 .LVL94: +1561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1937 .loc 1 1561 1 view .LVU619 + 1938 0072 7047 bx lr + 1939 .L150: + 1940 .align 2 + 1941 .L149: + 1942 0074 FEEEFFFF .word -4354 + 1943 .cfi_endproc + 1944 .LFE153: + 1946 .section .text.HAL_ADC_GetValue,"ax",%progbits + 1947 .align 1 + 1948 .global HAL_ADC_GetValue + 1949 .syntax unified + 1950 .thumb + 1951 .thumb_func + 1952 .fpu fpv5-d16 + 1954 HAL_ADC_GetValue: + 1955 .LVL95: + 1956 .LFB154: +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return the selected ADC converted value */ + 1957 .loc 1 1570 1 is_stmt 1 view -0 + 1958 .cfi_startproc + 1959 @ args = 0, pretend = 0, frame = 0 + 1960 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccHbw826.s page 79 + + + 1961 @ link register save eliminated. +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1962 .loc 1 1572 3 view .LVU621 +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1963 .loc 1 1572 14 is_stmt 0 view .LVU622 + 1964 0000 0368 ldr r3, [r0] +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 1965 .loc 1 1572 24 view .LVU623 + 1966 0002 D86C ldr r0, [r3, #76] + 1967 .LVL96: +1573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1968 .loc 1 1573 1 view .LVU624 + 1969 0004 7047 bx lr + 1970 .cfi_endproc + 1971 .LFE154: + 1973 .section .text.HAL_ADC_ConvCpltCallback,"ax",%progbits + 1974 .align 1 + 1975 .weak HAL_ADC_ConvCpltCallback + 1976 .syntax unified + 1977 .thumb + 1978 .thumb_func + 1979 .fpu fpv5-d16 + 1981 HAL_ADC_ConvCpltCallback: + 1982 .LVL97: + 1983 .LFB155: +1582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ + 1984 .loc 1 1582 1 is_stmt 1 view -0 + 1985 .cfi_startproc + 1986 @ args = 0, pretend = 0, frame = 0 + 1987 @ frame_needed = 0, uses_anonymous_args = 0 + 1988 @ link register save eliminated. +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 1989 .loc 1 1584 3 view .LVU626 +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 1990 .loc 1 1588 1 is_stmt 0 view .LVU627 + 1991 0000 7047 bx lr + 1992 .cfi_endproc + 1993 .LFE155: + 1995 .section .text.HAL_ADC_ConvHalfCpltCallback,"ax",%progbits + 1996 .align 1 + 1997 .weak HAL_ADC_ConvHalfCpltCallback + 1998 .syntax unified + 1999 .thumb + 2000 .thumb_func + 2001 .fpu fpv5-d16 + 2003 HAL_ADC_ConvHalfCpltCallback: + 2004 .LVL98: + 2005 .LFB156: +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ + 2006 .loc 1 1597 1 is_stmt 1 view -0 + 2007 .cfi_startproc + 2008 @ args = 0, pretend = 0, frame = 0 + 2009 @ frame_needed = 0, uses_anonymous_args = 0 + 2010 @ link register save eliminated. +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 2011 .loc 1 1599 3 view .LVU629 +1603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 80 + + + 2012 .loc 1 1603 1 is_stmt 0 view .LVU630 + 2013 0000 7047 bx lr + 2014 .cfi_endproc + 2015 .LFE156: + 2017 .section .text.ADC_DMAHalfConvCplt,"ax",%progbits + 2018 .align 1 + 2019 .syntax unified + 2020 .thumb + 2021 .thumb_func + 2022 .fpu fpv5-d16 + 2024 ADC_DMAHalfConvCplt: + 2025 .LVL99: + 2026 .LFB165: +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +1992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief DMA transfer complete callback. +1994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified DMA module. +1996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +1998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** static void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma) +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +2000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Retrieve ADC handle corresponding to current DMA handle */ +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; +2002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +2003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update state machine on conversion status if not in error state */ +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL | HAL_ADC_STATE_ERROR_DMA)) +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +2006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Update ADC state machine */ +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); +2008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +2009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Determine whether any further conversion upcoming on group regular */ +2010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* by external trigger, continuous mode or scan sequence on going. */ +2011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Note: On STM32F7, there is no independent flag of end of sequence. */ +2012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* The test of scan sequence on going is done either with scan */ +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* sequence disabled or with end of conversion flag set to */ +2014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* of end of sequence. */ +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if(ADC_IS_SOFTWARE_START_REGULAR(hadc) && +2016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || +2018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +2020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Disable ADC end of single conversion interrupt on group regular */ +2021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Note: Overrun interrupt was enabled with EOC interrupt in */ +2022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* HAL_ADC_Start_IT(), but is not disabled here because can be used */ +2023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* by overrun IRQ process below. */ +2024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC); +2025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +2026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC state */ +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY); +2028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY)) +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** SET_BIT(hadc->State, HAL_ADC_STATE_READY); +2032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +2034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 81 + + +2035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Conversion complete callback */ +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ConvCpltCallback(hadc); +2038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #else +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_ConvCpltCallback(hadc); +2040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +2041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +2042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else /* DMA and-or internal error occurred */ +2043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** if ((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) != 0UL) +2045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +2046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Call HAL ADC Error Callback function */ +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +2048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCallback(hadc); +2049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #else +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_ErrorCallback(hadc); +2051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +2052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** else +2054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Call DMA error callback */ +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->DMA_Handle->XferErrorCallback(hdma); +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } +2060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +2061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +2062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief DMA half transfer complete callback. +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +2064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified DMA module. +2065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None +2066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +2067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** static void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma) +2068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2027 .loc 1 2068 1 is_stmt 1 view -0 + 2028 .cfi_startproc + 2029 @ args = 0, pretend = 0, frame = 0 + 2030 @ frame_needed = 0, uses_anonymous_args = 0 + 2031 .loc 1 2068 1 is_stmt 0 view .LVU632 + 2032 0000 08B5 push {r3, lr} + 2033 .LCFI18: + 2034 .cfi_def_cfa_offset 8 + 2035 .cfi_offset 3, -8 + 2036 .cfi_offset 14, -4 +2069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + 2037 .loc 1 2069 3 is_stmt 1 view .LVU633 + 2038 .LVL100: +2070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Half conversion callback */ +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +2072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ConvHalfCpltCallback(hadc); +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #else +2074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_ConvHalfCpltCallback(hadc); + 2039 .loc 1 2074 3 view .LVU634 + 2040 0002 806B ldr r0, [r0, #56] + 2041 .LVL101: + 2042 .loc 1 2074 3 is_stmt 0 view .LVU635 + 2043 0004 FFF7FEFF bl HAL_ADC_ConvHalfCpltCallback + ARM GAS /tmp/ccHbw826.s page 82 + + + 2044 .LVL102: +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2045 .loc 1 2076 1 view .LVU636 + 2046 0008 08BD pop {r3, pc} + 2047 .cfi_endproc + 2048 .LFE165: + 2050 .section .text.HAL_ADC_LevelOutOfWindowCallback,"ax",%progbits + 2051 .align 1 + 2052 .weak HAL_ADC_LevelOutOfWindowCallback + 2053 .syntax unified + 2054 .thumb + 2055 .thumb_func + 2056 .fpu fpv5-d16 + 2058 HAL_ADC_LevelOutOfWindowCallback: + 2059 .LVL103: + 2060 .LFB157: +1612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ + 2061 .loc 1 1612 1 is_stmt 1 view -0 + 2062 .cfi_startproc + 2063 @ args = 0, pretend = 0, frame = 0 + 2064 @ frame_needed = 0, uses_anonymous_args = 0 + 2065 @ link register save eliminated. +1614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 2066 .loc 1 1614 3 view .LVU638 +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2067 .loc 1 1618 1 is_stmt 0 view .LVU639 + 2068 0000 7047 bx lr + 2069 .cfi_endproc + 2070 .LFE157: + 2072 .section .text.HAL_ADC_ErrorCallback,"ax",%progbits + 2073 .align 1 + 2074 .weak HAL_ADC_ErrorCallback + 2075 .syntax unified + 2076 .thumb + 2077 .thumb_func + 2078 .fpu fpv5-d16 + 2080 HAL_ADC_ErrorCallback: + 2081 .LVL104: + 2082 .LFB158: +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Prevent unused argument(s) compilation warning */ + 2083 .loc 1 1633 1 is_stmt 1 view -0 + 2084 .cfi_startproc + 2085 @ args = 0, pretend = 0, frame = 0 + 2086 @ frame_needed = 0, uses_anonymous_args = 0 + 2087 @ link register save eliminated. +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 2088 .loc 1 1635 3 view .LVU641 +1639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2089 .loc 1 1639 1 is_stmt 0 view .LVU642 + 2090 0000 7047 bx lr + 2091 .cfi_endproc + 2092 .LFE158: + 2094 .section .text.HAL_ADC_IRQHandler,"ax",%progbits + 2095 .align 1 + 2096 .global HAL_ADC_IRQHandler + 2097 .syntax unified + ARM GAS /tmp/ccHbw826.s page 83 + + + 2098 .thumb + 2099 .thumb_func + 2100 .fpu fpv5-d16 + 2102 HAL_ADC_IRQHandler: + 2103 .LVL105: + 2104 .LFB151: +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tmp1 = 0, tmp2 = 0; + 2105 .loc 1 1210 1 is_stmt 1 view -0 + 2106 .cfi_startproc + 2107 @ args = 0, pretend = 0, frame = 0 + 2108 @ frame_needed = 0, uses_anonymous_args = 0 +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tmp1 = 0, tmp2 = 0; + 2109 .loc 1 1210 1 is_stmt 0 view .LVU644 + 2110 0000 70B5 push {r4, r5, r6, lr} + 2111 .LCFI19: + 2112 .cfi_def_cfa_offset 16 + 2113 .cfi_offset 4, -16 + 2114 .cfi_offset 5, -12 + 2115 .cfi_offset 6, -8 + 2116 .cfi_offset 14, -4 + 2117 0002 0446 mov r4, r0 +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2118 .loc 1 1211 3 is_stmt 1 view .LVU645 + 2119 .LVL106: +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tmp_cr1 = hadc->Instance->CR1; + 2120 .loc 1 1213 3 view .LVU646 +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tmp_cr1 = hadc->Instance->CR1; + 2121 .loc 1 1213 25 is_stmt 0 view .LVU647 + 2122 0004 0368 ldr r3, [r0] +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** uint32_t tmp_cr1 = hadc->Instance->CR1; + 2123 .loc 1 1213 12 view .LVU648 + 2124 0006 1E68 ldr r6, [r3] + 2125 .LVL107: +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2126 .loc 1 1214 3 is_stmt 1 view .LVU649 +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2127 .loc 1 1214 12 is_stmt 0 view .LVU650 + 2128 0008 5D68 ldr r5, [r3, #4] + 2129 .LVL108: +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_REGULAR_LENGTH(hadc->Init.NbrOfConversion)); + 2130 .loc 1 1217 3 is_stmt 1 view .LVU651 +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_EOCSelection(hadc->Init.EOCSelection)); + 2131 .loc 1 1218 3 view .LVU652 +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2132 .loc 1 1219 3 view .LVU653 +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp2 = tmp_cr1 & ADC_IT_EOC; + 2133 .loc 1 1221 3 view .LVU654 +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2134 .loc 1 1222 3 view .LVU655 +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2135 .loc 1 1225 3 view .LVU656 +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2136 .loc 1 1225 11 is_stmt 0 view .LVU657 + 2137 000a C5F34012 ubfx r2, r5, #5, #1 +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2138 .loc 1 1225 5 view .LVU658 + 2139 000e 12EA5602 ands r2, r2, r6, lsr #1 + ARM GAS /tmp/ccHbw826.s page 84 + + + 2140 0012 2CD0 beq .L159 +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2141 .loc 1 1228 5 is_stmt 1 view .LVU659 +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2142 .loc 1 1228 9 is_stmt 0 view .LVU660 + 2143 0014 026C ldr r2, [r0, #64] +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2144 .loc 1 1228 8 view .LVU661 + 2145 0016 12F0100F tst r2, #16 + 2146 001a 03D1 bne .L160 +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2147 .loc 1 1231 7 is_stmt 1 view .LVU662 + 2148 001c 026C ldr r2, [r0, #64] + 2149 001e 42F40072 orr r2, r2, #512 + 2150 0022 0264 str r2, [r0, #64] + 2151 .L160: +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 2152 .loc 1 1240 5 view .LVU663 +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 2153 .loc 1 1240 8 is_stmt 0 view .LVU664 + 2154 0024 9A68 ldr r2, [r3, #8] +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 2155 .loc 1 1240 7 view .LVU665 + 2156 0026 12F0405F tst r2, #805306368 + 2157 002a 19D1 bne .L161 +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + 2158 .loc 1 1241 19 discriminator 1 view .LVU666 + 2159 002c A269 ldr r2, [r4, #24] +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 2160 .loc 1 1240 62 discriminator 1 view .LVU667 + 2161 002e BAB9 cbnz r2, .L161 +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + 2162 .loc 1 1242 9 view .LVU668 + 2163 0030 DA6A ldr r2, [r3, #44] +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + 2164 .loc 1 1241 62 view .LVU669 + 2165 0032 12F4700F tst r2, #15728640 + 2166 0036 03D0 beq .L162 +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2167 .loc 1 1243 9 view .LVU670 + 2168 0038 9A68 ldr r2, [r3, #8] +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + 2169 .loc 1 1242 58 view .LVU671 + 2170 003a 12F4806F tst r2, #1024 + 2171 003e 0FD1 bne .L161 + 2172 .L162: +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2173 .loc 1 1249 7 is_stmt 1 view .LVU672 + 2174 0040 5A68 ldr r2, [r3, #4] + 2175 0042 22F02002 bic r2, r2, #32 + 2176 0046 5A60 str r2, [r3, #4] +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2177 .loc 1 1252 7 view .LVU673 + 2178 0048 236C ldr r3, [r4, #64] + 2179 004a 23F48073 bic r3, r3, #256 + 2180 004e 2364 str r3, [r4, #64] +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 85 + + + 2181 .loc 1 1254 7 view .LVU674 +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2182 .loc 1 1254 11 is_stmt 0 view .LVU675 + 2183 0050 236C ldr r3, [r4, #64] +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2184 .loc 1 1254 10 view .LVU676 + 2185 0052 13F4805F tst r3, #4096 + 2186 0056 03D1 bne .L161 +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2187 .loc 1 1256 9 is_stmt 1 view .LVU677 + 2188 0058 236C ldr r3, [r4, #64] + 2189 005a 43F00103 orr r3, r3, #1 + 2190 005e 2364 str r3, [r4, #64] + 2191 .L161: +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 2192 .loc 1 1264 5 view .LVU678 + 2193 0060 2046 mov r0, r4 + 2194 .LVL109: +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 2195 .loc 1 1264 5 is_stmt 0 view .LVU679 + 2196 0062 FFF7FEFF bl HAL_ADC_ConvCpltCallback + 2197 .LVL110: +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2198 .loc 1 1268 5 is_stmt 1 view .LVU680 + 2199 0066 2368 ldr r3, [r4] + 2200 0068 6FF01202 mvn r2, #18 + 2201 006c 1A60 str r2, [r3] + 2202 .L159: +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp2 = tmp_cr1 & ADC_IT_JEOC; + 2203 .loc 1 1271 3 view .LVU681 + 2204 .LVL111: +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check End of conversion flag for injected channels */ + 2205 .loc 1 1272 3 view .LVU682 +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2206 .loc 1 1274 3 view .LVU683 +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2207 .loc 1 1274 11 is_stmt 0 view .LVU684 + 2208 006e C5F3C013 ubfx r3, r5, #7, #1 +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2209 .loc 1 1274 5 view .LVU685 + 2210 0072 13EA9603 ands r3, r3, r6, lsr #2 + 2211 0076 35D0 beq .L163 +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2212 .loc 1 1277 5 is_stmt 1 view .LVU686 +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2213 .loc 1 1277 9 is_stmt 0 view .LVU687 + 2214 0078 236C ldr r3, [r4, #64] +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2215 .loc 1 1277 8 view .LVU688 + 2216 007a 13F0100F tst r3, #16 + 2217 007e 03D1 bne .L164 +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2218 .loc 1 1280 7 is_stmt 1 view .LVU689 + 2219 0080 236C ldr r3, [r4, #64] + 2220 0082 43F40053 orr r3, r3, #8192 + 2221 0086 2364 str r3, [r4, #64] + 2222 .L164: + ARM GAS /tmp/ccHbw826.s page 86 + + +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + 2223 .loc 1 1287 5 view .LVU690 +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + 2224 .loc 1 1287 8 is_stmt 0 view .LVU691 + 2225 0088 2368 ldr r3, [r4] + 2226 008a 9A68 ldr r2, [r3, #8] +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + 2227 .loc 1 1287 7 view .LVU692 + 2228 008c 12F4401F tst r2, #3145728 + 2229 0090 21D1 bne .L165 +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS)) && + 2230 .loc 1 1288 9 discriminator 1 view .LVU693 + 2231 0092 9A6B ldr r2, [r3, #56] +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + 2232 .loc 1 1287 64 discriminator 1 view .LVU694 + 2233 0094 12F4401F tst r2, #3145728 + 2234 0098 03D0 beq .L166 +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) && + 2235 .loc 1 1289 9 view .LVU695 + 2236 009a 9A68 ldr r2, [r3, #8] +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS)) && + 2237 .loc 1 1288 59 view .LVU696 + 2238 009c 12F4806F tst r2, #1024 + 2239 00a0 19D1 bne .L165 + 2240 .L166: +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (ADC_IS_SOFTWARE_START_REGULAR(hadc) && + 2241 .loc 1 1290 9 view .LVU697 + 2242 00a2 5A68 ldr r2, [r3, #4] +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) && + 2243 .loc 1 1289 60 view .LVU698 + 2244 00a4 12F4806F tst r2, #1024 + 2245 00a8 15D1 bne .L165 +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE)))) + 2246 .loc 1 1291 9 view .LVU699 + 2247 00aa 9A68 ldr r2, [r3, #8] +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (ADC_IS_SOFTWARE_START_REGULAR(hadc) && + 2248 .loc 1 1290 60 view .LVU700 + 2249 00ac 12F0405F tst r2, #805306368 + 2250 00b0 11D1 bne .L165 +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2251 .loc 1 1292 19 view .LVU701 + 2252 00b2 A269 ldr r2, [r4, #24] +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE)))) + 2253 .loc 1 1291 45 view .LVU702 + 2254 00b4 7AB9 cbnz r2, .L165 +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2255 .loc 1 1295 7 is_stmt 1 view .LVU703 + 2256 00b6 5A68 ldr r2, [r3, #4] + 2257 00b8 22F08002 bic r2, r2, #128 + 2258 00bc 5A60 str r2, [r3, #4] +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2259 .loc 1 1298 7 view .LVU704 + 2260 00be 236C ldr r3, [r4, #64] + 2261 00c0 23F48053 bic r3, r3, #4096 + 2262 00c4 2364 str r3, [r4, #64] +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2263 .loc 1 1300 7 view .LVU705 + ARM GAS /tmp/ccHbw826.s page 87 + + +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2264 .loc 1 1300 11 is_stmt 0 view .LVU706 + 2265 00c6 236C ldr r3, [r4, #64] +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2266 .loc 1 1300 10 view .LVU707 + 2267 00c8 13F4807F tst r3, #256 + 2268 00cc 03D1 bne .L165 +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2269 .loc 1 1302 9 is_stmt 1 view .LVU708 + 2270 00ce 236C ldr r3, [r4, #64] + 2271 00d0 43F00103 orr r3, r3, #1 + 2272 00d4 2364 str r3, [r4, #64] + 2273 .L165: +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 2274 .loc 1 1310 7 view .LVU709 + 2275 00d6 2046 mov r0, r4 + 2276 00d8 FFF7FEFF bl HAL_ADCEx_InjectedConvCpltCallback + 2277 .LVL112: +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2278 .loc 1 1314 5 view .LVU710 + 2279 00dc 2368 ldr r3, [r4] + 2280 00de 6FF00C02 mvn r2, #12 + 2281 00e2 1A60 str r2, [r3] + 2282 .L163: +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp2 = tmp_cr1 & ADC_IT_AWD; + 2283 .loc 1 1317 3 view .LVU711 + 2284 .LVL113: +1318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check Analog watchdog flag */ + 2285 .loc 1 1318 3 view .LVU712 +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2286 .loc 1 1320 3 view .LVU713 +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2287 .loc 1 1320 11 is_stmt 0 view .LVU714 + 2288 00e4 C5F38013 ubfx r3, r5, #6, #1 +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2289 .loc 1 1320 5 view .LVU715 + 2290 00e8 1E42 tst r6, r3 + 2291 00ea 04D0 beq .L167 +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2292 .loc 1 1322 5 is_stmt 1 view .LVU716 +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2293 .loc 1 1322 8 is_stmt 0 view .LVU717 + 2294 00ec 2368 ldr r3, [r4] + 2295 00ee 1B68 ldr r3, [r3] +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2296 .loc 1 1322 7 view .LVU718 + 2297 00f0 13F0010F tst r3, #1 + 2298 00f4 05D1 bne .L170 + 2299 .L167: +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** tmp2 = tmp_cr1 & ADC_IT_OVR; + 2300 .loc 1 1340 3 is_stmt 1 view .LVU719 + 2301 .LVL114: +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Check Overrun flag */ + 2302 .loc 1 1341 3 view .LVU720 +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2303 .loc 1 1343 3 view .LVU721 +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 88 + + + 2304 .loc 1 1343 11 is_stmt 0 view .LVU722 + 2305 00f6 C5F38065 ubfx r5, r5, #26, #1 + 2306 .LVL115: +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2307 .loc 1 1343 5 view .LVU723 + 2308 00fa 15EA5613 ands r3, r5, r6, lsr #5 + 2309 00fe 0CD1 bne .L171 + 2310 .L158: +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2311 .loc 1 1365 1 view .LVU724 + 2312 0100 70BD pop {r4, r5, r6, pc} + 2313 .LVL116: + 2314 .L170: +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2315 .loc 1 1325 7 is_stmt 1 view .LVU725 + 2316 0102 236C ldr r3, [r4, #64] + 2317 0104 43F48033 orr r3, r3, #65536 + 2318 0108 2364 str r3, [r4, #64] +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 2319 .loc 1 1331 7 view .LVU726 + 2320 010a 2046 mov r0, r4 + 2321 010c FFF7FEFF bl HAL_ADC_LevelOutOfWindowCallback + 2322 .LVL117: +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2323 .loc 1 1336 7 view .LVU727 + 2324 0110 2368 ldr r3, [r4] + 2325 0112 6FF00102 mvn r2, #1 + 2326 0116 1A60 str r2, [r3] + 2327 0118 EDE7 b .L167 + 2328 .LVL118: + 2329 .L171: +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2330 .loc 1 1350 5 view .LVU728 + 2331 011a 636C ldr r3, [r4, #68] + 2332 011c 43F00203 orr r3, r3, #2 + 2333 0120 6364 str r3, [r4, #68] +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2334 .loc 1 1353 5 view .LVU729 + 2335 0122 2368 ldr r3, [r4] + 2336 0124 6FF02005 mvn r5, #32 + 2337 0128 1D60 str r5, [r3] +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 2338 .loc 1 1359 7 view .LVU730 + 2339 012a 2046 mov r0, r4 + 2340 012c FFF7FEFF bl HAL_ADC_ErrorCallback + 2341 .LVL119: +1363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2342 .loc 1 1363 5 view .LVU731 + 2343 0130 2368 ldr r3, [r4] + 2344 0132 1D60 str r5, [r3] +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2345 .loc 1 1365 1 is_stmt 0 view .LVU732 + 2346 0134 E4E7 b .L158 + 2347 .cfi_endproc + 2348 .LFE151: + 2350 .section .text.ADC_DMAError,"ax",%progbits + 2351 .align 1 + ARM GAS /tmp/ccHbw826.s page 89 + + + 2352 .syntax unified + 2353 .thumb + 2354 .thumb_func + 2355 .fpu fpv5-d16 + 2357 ADC_DMAError: + 2358 .LVL120: + 2359 .LFB166: +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** +2078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /** +2079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @brief DMA error callback +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * the configuration information for the specified DMA module. +2082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** * @retval None +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** */ +2084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** static void ADC_DMAError(DMA_HandleTypeDef *hdma) +2085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2360 .loc 1 2085 1 is_stmt 1 view -0 + 2361 .cfi_startproc + 2362 @ args = 0, pretend = 0, frame = 0 + 2363 @ frame_needed = 0, uses_anonymous_args = 0 + 2364 .loc 1 2085 1 is_stmt 0 view .LVU734 + 2365 0000 08B5 push {r3, lr} + 2366 .LCFI20: + 2367 .cfi_def_cfa_offset 8 + 2368 .cfi_offset 3, -8 + 2369 .cfi_offset 14, -4 +2086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + 2370 .loc 1 2086 3 is_stmt 1 view .LVU735 + 2371 .loc 1 2086 22 is_stmt 0 view .LVU736 + 2372 0002 806B ldr r0, [r0, #56] + 2373 .LVL121: +2087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->State= HAL_ADC_STATE_ERROR_DMA; + 2374 .loc 1 2087 3 is_stmt 1 view .LVU737 + 2375 .loc 1 2087 14 is_stmt 0 view .LVU738 + 2376 0004 4023 movs r3, #64 + 2377 0006 0364 str r3, [r0, #64] +2088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Set ADC error code to DMA error */ +2089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCode |= HAL_ADC_ERROR_DMA; + 2378 .loc 1 2089 3 is_stmt 1 view .LVU739 + 2379 .loc 1 2089 19 is_stmt 0 view .LVU740 + 2380 0008 436C ldr r3, [r0, #68] + 2381 000a 43F00403 orr r3, r3, #4 + 2382 000e 4364 str r3, [r0, #68] +2090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Error callback */ +2091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) +2092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** hadc->ErrorCallback(hadc); +2093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #else +2094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_ADC_ErrorCallback(hadc); + 2383 .loc 1 2094 3 is_stmt 1 view .LVU741 + 2384 0010 FFF7FEFF bl HAL_ADC_ErrorCallback + 2385 .LVL122: +2095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ +2096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2386 .loc 1 2096 1 is_stmt 0 view .LVU742 + 2387 0014 08BD pop {r3, pc} + 2388 .cfi_endproc + 2389 .LFE166: + ARM GAS /tmp/ccHbw826.s page 90 + + + 2391 .section .text.ADC_DMAConvCplt,"ax",%progbits + 2392 .align 1 + 2393 .syntax unified + 2394 .thumb + 2395 .thumb_func + 2396 .fpu fpv5-d16 + 2398 ADC_DMAConvCplt: + 2399 .LVL123: + 2400 .LFB164: +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Retrieve ADC handle corresponding to current DMA handle */ + 2401 .loc 1 1999 1 is_stmt 1 view -0 + 2402 .cfi_startproc + 2403 @ args = 0, pretend = 0, frame = 0 + 2404 @ frame_needed = 0, uses_anonymous_args = 0 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Retrieve ADC handle corresponding to current DMA handle */ + 2405 .loc 1 1999 1 is_stmt 0 view .LVU744 + 2406 0000 08B5 push {r3, lr} + 2407 .LCFI21: + 2408 .cfi_def_cfa_offset 8 + 2409 .cfi_offset 3, -8 + 2410 .cfi_offset 14, -4 + 2411 0002 0346 mov r3, r0 +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2412 .loc 1 2001 3 is_stmt 1 view .LVU745 +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2413 .loc 1 2001 22 is_stmt 0 view .LVU746 + 2414 0004 806B ldr r0, [r0, #56] + 2415 .LVL124: +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2416 .loc 1 2004 3 is_stmt 1 view .LVU747 +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2417 .loc 1 2004 7 is_stmt 0 view .LVU748 + 2418 0006 026C ldr r2, [r0, #64] +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2419 .loc 1 2004 6 view .LVU749 + 2420 0008 12F0500F tst r2, #80 + 2421 000c 25D1 bne .L175 +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2422 .loc 1 2007 5 is_stmt 1 view .LVU750 + 2423 000e 036C ldr r3, [r0, #64] + 2424 .LVL125: +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2425 .loc 1 2007 5 is_stmt 0 view .LVU751 + 2426 0010 43F40073 orr r3, r3, #512 + 2427 0014 0364 str r3, [r0, #64] +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 2428 .loc 1 2015 5 is_stmt 1 view .LVU752 +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 2429 .loc 1 2015 8 is_stmt 0 view .LVU753 + 2430 0016 0368 ldr r3, [r0] + 2431 0018 9A68 ldr r2, [r3, #8] +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 2432 .loc 1 2015 7 view .LVU754 + 2433 001a 12F0405F tst r2, #805306368 + 2434 001e 19D1 bne .L176 +2016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + 2435 .loc 1 2016 19 discriminator 1 view .LVU755 + ARM GAS /tmp/ccHbw826.s page 91 + + + 2436 0020 8269 ldr r2, [r0, #24] +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 2437 .loc 1 2015 62 discriminator 1 view .LVU756 + 2438 0022 BAB9 cbnz r2, .L176 +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + 2439 .loc 1 2017 9 view .LVU757 + 2440 0024 DA6A ldr r2, [r3, #44] +2016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + 2441 .loc 1 2016 62 view .LVU758 + 2442 0026 12F4700F tst r2, #15728640 + 2443 002a 03D0 beq .L177 +2018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2444 .loc 1 2018 9 view .LVU759 + 2445 002c 9A68 ldr r2, [r3, #8] +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + 2446 .loc 1 2017 58 view .LVU760 + 2447 002e 12F4806F tst r2, #1024 + 2448 0032 0FD1 bne .L176 + 2449 .L177: +2024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2450 .loc 1 2024 7 is_stmt 1 view .LVU761 + 2451 0034 5A68 ldr r2, [r3, #4] + 2452 0036 22F02002 bic r2, r2, #32 + 2453 003a 5A60 str r2, [r3, #4] +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2454 .loc 1 2027 7 view .LVU762 + 2455 003c 036C ldr r3, [r0, #64] + 2456 003e 23F48073 bic r3, r3, #256 + 2457 0042 0364 str r3, [r0, #64] +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2458 .loc 1 2029 7 view .LVU763 +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2459 .loc 1 2029 11 is_stmt 0 view .LVU764 + 2460 0044 036C ldr r3, [r0, #64] +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2461 .loc 1 2029 10 view .LVU765 + 2462 0046 13F4805F tst r3, #4096 + 2463 004a 03D1 bne .L176 +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2464 .loc 1 2031 9 is_stmt 1 view .LVU766 + 2465 004c 036C ldr r3, [r0, #64] + 2466 004e 43F00103 orr r3, r3, #1 + 2467 0052 0364 str r3, [r0, #64] + 2468 .L176: +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 2469 .loc 1 2039 5 view .LVU767 + 2470 0054 FFF7FEFF bl HAL_ADC_ConvCpltCallback + 2471 .LVL126: + 2472 .L174: +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2473 .loc 1 2059 1 is_stmt 0 view .LVU768 + 2474 0058 08BD pop {r3, pc} + 2475 .LVL127: + 2476 .L175: +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2477 .loc 1 2044 5 is_stmt 1 view .LVU769 +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 92 + + + 2478 .loc 1 2044 14 is_stmt 0 view .LVU770 + 2479 005a 026C ldr r2, [r0, #64] +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2480 .loc 1 2044 8 view .LVU771 + 2481 005c 12F0100F tst r2, #16 + 2482 0060 04D1 bne .L181 +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2483 .loc 1 2056 7 is_stmt 1 view .LVU772 +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2484 .loc 1 2056 11 is_stmt 0 view .LVU773 + 2485 0062 826B ldr r2, [r0, #56] +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2486 .loc 1 2056 23 view .LVU774 + 2487 0064 D26C ldr r2, [r2, #76] +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2488 .loc 1 2056 7 view .LVU775 + 2489 0066 1846 mov r0, r3 + 2490 .LVL128: +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2491 .loc 1 2056 7 view .LVU776 + 2492 0068 9047 blx r2 + 2493 .LVL129: +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2494 .loc 1 2059 1 view .LVU777 + 2495 006a F5E7 b .L174 + 2496 .LVL130: + 2497 .L181: +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 2498 .loc 1 2050 7 is_stmt 1 view .LVU778 + 2499 006c FFF7FEFF bl HAL_ADC_ErrorCallback + 2500 .LVL131: +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ + 2501 .loc 1 2050 7 is_stmt 0 view .LVU779 + 2502 0070 F2E7 b .L174 + 2503 .cfi_endproc + 2504 .LFE164: + 2506 .section .text.HAL_ADC_ConfigChannel,"ax",%progbits + 2507 .align 1 + 2508 .global HAL_ADC_ConfigChannel + 2509 .syntax unified + 2510 .thumb + 2511 .thumb_func + 2512 .fpu fpv5-d16 + 2514 HAL_ADC_ConfigChannel: + 2515 .LVL132: + 2516 .LFB159: +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; + 2517 .loc 1 1671 1 is_stmt 1 view -0 + 2518 .cfi_startproc + 2519 @ args = 0, pretend = 0, frame = 8 + 2520 @ frame_needed = 0, uses_anonymous_args = 0 + 2521 @ link register save eliminated. +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** __IO uint32_t counter = 0; + 2522 .loc 1 1671 1 is_stmt 0 view .LVU781 + 2523 0000 30B4 push {r4, r5} + 2524 .LCFI22: + 2525 .cfi_def_cfa_offset 8 + ARM GAS /tmp/ccHbw826.s page 93 + + + 2526 .cfi_offset 4, -8 + 2527 .cfi_offset 5, -4 + 2528 0002 82B0 sub sp, sp, #8 + 2529 .LCFI23: + 2530 .cfi_def_cfa_offset 16 +1672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2531 .loc 1 1672 3 is_stmt 1 view .LVU782 +1672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2532 .loc 1 1672 17 is_stmt 0 view .LVU783 + 2533 0004 0023 movs r3, #0 + 2534 0006 0193 str r3, [sp, #4] +1675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_REGULAR_RANK(sConfig->Rank)); + 2535 .loc 1 1675 3 is_stmt 1 view .LVU784 +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_SAMPLE_TIME(sConfig->SamplingTime)); + 2536 .loc 1 1676 3 view .LVU785 +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2537 .loc 1 1677 3 view .LVU786 +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2538 .loc 1 1680 3 view .LVU787 +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2539 .loc 1 1680 3 view .LVU788 + 2540 0008 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 2541 000c 012B cmp r3, #1 + 2542 000e 00F0DD80 beq .L195 +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2543 .loc 1 1680 3 discriminator 2 view .LVU789 + 2544 0012 0123 movs r3, #1 + 2545 0014 80F83C30 strb r3, [r0, #60] +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2546 .loc 1 1680 3 discriminator 2 view .LVU790 +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2547 .loc 1 1683 3 discriminator 2 view .LVU791 +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2548 .loc 1 1683 15 is_stmt 0 discriminator 2 view .LVU792 + 2549 0018 0B68 ldr r3, [r1] +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2550 .loc 1 1683 6 discriminator 2 view .LVU793 + 2551 001a B3F1004F cmp r3, #-2147483648 + 2552 001e 18BF it ne + 2553 0020 092B cmpne r3, #9 + 2554 0022 23D9 bls .L184 +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2555 .loc 1 1686 5 is_stmt 1 view .LVU794 +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2556 .loc 1 1686 9 is_stmt 0 view .LVU795 + 2557 0024 0468 ldr r4, [r0] +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2558 .loc 1 1686 27 view .LVU796 + 2559 0026 E268 ldr r2, [r4, #12] +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2560 .loc 1 1686 31 view .LVU797 + 2561 0028 9BB2 uxth r3, r3 + 2562 002a 03EB4303 add r3, r3, r3, lsl #1 + 2563 002e 1E3B subs r3, r3, #30 + 2564 0030 4FF0070C mov ip, #7 + 2565 0034 0CFA03F3 lsl r3, ip, r3 +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 94 + + + 2566 .loc 1 1686 27 view .LVU798 + 2567 0038 22EA0303 bic r3, r2, r3 + 2568 003c E360 str r3, [r4, #12] +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2569 .loc 1 1688 5 is_stmt 1 view .LVU799 +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2570 .loc 1 1688 16 is_stmt 0 view .LVU800 + 2571 003e 0B68 ldr r3, [r1] +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2572 .loc 1 1688 8 view .LVU801 + 2573 0040 634A ldr r2, .L201 + 2574 0042 9342 cmp r3, r2 + 2575 0044 0BD0 beq .L197 +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2576 .loc 1 1696 7 is_stmt 1 view .LVU802 +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2577 .loc 1 1696 11 is_stmt 0 view .LVU803 + 2578 0046 0568 ldr r5, [r0] +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2579 .loc 1 1696 29 view .LVU804 + 2580 0048 EA68 ldr r2, [r5, #12] +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2581 .loc 1 1696 32 view .LVU805 + 2582 004a 8C68 ldr r4, [r1, #8] + 2583 004c 9BB2 uxth r3, r3 + 2584 004e 03EB4303 add r3, r3, r3, lsl #1 + 2585 0052 1E3B subs r3, r3, #30 + 2586 0054 04FA03F3 lsl r3, r4, r3 +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2587 .loc 1 1696 29 view .LVU806 + 2588 0058 1343 orrs r3, r3, r2 + 2589 005a EB60 str r3, [r5, #12] + 2590 005c 1CE0 b .L186 + 2591 .L197: +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2592 .loc 1 1691 7 is_stmt 1 view .LVU807 +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2593 .loc 1 1691 11 is_stmt 0 view .LVU808 + 2594 005e 0268 ldr r2, [r0] +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2595 .loc 1 1691 29 view .LVU809 + 2596 0060 D368 ldr r3, [r2, #12] +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2597 .loc 1 1691 32 view .LVU810 + 2598 0062 8C68 ldr r4, [r1, #8] +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2599 .loc 1 1691 29 view .LVU811 + 2600 0064 43EA0463 orr r3, r3, r4, lsl #24 + 2601 0068 D360 str r3, [r2, #12] + 2602 006a 15E0 b .L186 + 2603 .L184: +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2604 .loc 1 1702 5 is_stmt 1 view .LVU812 +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2605 .loc 1 1702 9 is_stmt 0 view .LVU813 + 2606 006c 0468 ldr r4, [r0] +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 95 + + + 2607 .loc 1 1702 27 view .LVU814 + 2608 006e 2269 ldr r2, [r4, #16] +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2609 .loc 1 1702 31 view .LVU815 + 2610 0070 9BB2 uxth r3, r3 + 2611 0072 03EB4303 add r3, r3, r3, lsl #1 + 2612 0076 4FF0070C mov ip, #7 + 2613 007a 0CFA03F3 lsl r3, ip, r3 +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2614 .loc 1 1702 27 view .LVU816 + 2615 007e 22EA0303 bic r3, r2, r3 + 2616 0082 2361 str r3, [r4, #16] +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2617 .loc 1 1705 5 is_stmt 1 view .LVU817 +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2618 .loc 1 1705 9 is_stmt 0 view .LVU818 + 2619 0084 0468 ldr r4, [r0] +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2620 .loc 1 1705 27 view .LVU819 + 2621 0086 2269 ldr r2, [r4, #16] +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2622 .loc 1 1705 30 view .LVU820 + 2623 0088 0B88 ldrh r3, [r1] + 2624 008a 03EB4303 add r3, r3, r3, lsl #1 + 2625 008e 8D68 ldr r5, [r1, #8] + 2626 0090 05FA03F3 lsl r3, r5, r3 +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2627 .loc 1 1705 27 view .LVU821 + 2628 0094 1343 orrs r3, r3, r2 + 2629 0096 2361 str r3, [r4, #16] + 2630 .L186: +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2631 .loc 1 1709 3 is_stmt 1 view .LVU822 +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2632 .loc 1 1709 14 is_stmt 0 view .LVU823 + 2633 0098 4B68 ldr r3, [r1, #4] +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2634 .loc 1 1709 6 view .LVU824 + 2635 009a 062B cmp r3, #6 + 2636 009c 2AD8 bhi .L187 +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2637 .loc 1 1712 5 is_stmt 1 view .LVU825 +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2638 .loc 1 1712 9 is_stmt 0 view .LVU826 + 2639 009e 0468 ldr r4, [r0] +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2640 .loc 1 1712 26 view .LVU827 + 2641 00a0 626B ldr r2, [r4, #52] +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2642 .loc 1 1712 30 view .LVU828 + 2643 00a2 03EB8303 add r3, r3, r3, lsl #2 + 2644 00a6 053B subs r3, r3, #5 + 2645 00a8 4FF01F0C mov ip, #31 + 2646 00ac 0CFA03F3 lsl r3, ip, r3 +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2647 .loc 1 1712 26 view .LVU829 + 2648 00b0 22EA0303 bic r3, r2, r3 + ARM GAS /tmp/ccHbw826.s page 96 + + + 2649 00b4 6363 str r3, [r4, #52] +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2650 .loc 1 1715 5 is_stmt 1 view .LVU830 +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2651 .loc 1 1715 9 is_stmt 0 view .LVU831 + 2652 00b6 0468 ldr r4, [r0] +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2653 .loc 1 1715 26 view .LVU832 + 2654 00b8 626B ldr r2, [r4, #52] +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2655 .loc 1 1715 29 view .LVU833 + 2656 00ba 4B68 ldr r3, [r1, #4] + 2657 00bc 03EB8303 add r3, r3, r3, lsl #2 + 2658 00c0 053B subs r3, r3, #5 + 2659 00c2 B1F800C0 ldrh ip, [r1] + 2660 00c6 0CFA03F3 lsl r3, ip, r3 +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2661 .loc 1 1715 26 view .LVU834 + 2662 00ca 1343 orrs r3, r3, r2 + 2663 00cc 6363 str r3, [r4, #52] + 2664 .L188: +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2665 .loc 1 1737 3 is_stmt 1 view .LVU835 +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2666 .loc 1 1737 12 is_stmt 0 view .LVU836 + 2667 00ce 0268 ldr r2, [r0] +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2668 .loc 1 1737 6 view .LVU837 + 2669 00d0 404B ldr r3, .L201+4 + 2670 00d2 9A42 cmp r2, r3 + 2671 00d4 3ED0 beq .L198 + 2672 .L190: +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2673 .loc 1 1744 3 is_stmt 1 view .LVU838 +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2674 .loc 1 1744 12 is_stmt 0 view .LVU839 + 2675 00d6 0268 ldr r2, [r0] +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2676 .loc 1 1744 6 view .LVU840 + 2677 00d8 3E4B ldr r3, .L201+4 + 2678 00da 9A42 cmp r2, r3 + 2679 00dc 44D0 beq .L199 + 2680 .L191: +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2681 .loc 1 1754 3 is_stmt 1 view .LVU841 +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2682 .loc 1 1754 12 is_stmt 0 view .LVU842 + 2683 00de 0268 ldr r2, [r0] +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2684 .loc 1 1754 6 view .LVU843 + 2685 00e0 3C4B ldr r3, .L201+4 + 2686 00e2 9A42 cmp r2, r3 + 2687 00e4 4DD0 beq .L200 + 2688 .L192: +1775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2689 .loc 1 1775 3 is_stmt 1 view .LVU844 +1775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 97 + + + 2690 .loc 1 1775 3 view .LVU845 + 2691 00e6 0023 movs r3, #0 + 2692 00e8 80F83C30 strb r3, [r0, #60] +1775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2693 .loc 1 1775 3 view .LVU846 +1778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2694 .loc 1 1778 3 view .LVU847 +1778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2695 .loc 1 1778 10 is_stmt 0 view .LVU848 + 2696 00ec 1846 mov r0, r3 + 2697 .LVL133: + 2698 .L183: +1779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2699 .loc 1 1779 1 view .LVU849 + 2700 00ee 02B0 add sp, sp, #8 + 2701 .LCFI24: + 2702 .cfi_remember_state + 2703 .cfi_def_cfa_offset 8 + 2704 @ sp needed + 2705 00f0 30BC pop {r4, r5} + 2706 .LCFI25: + 2707 .cfi_restore 5 + 2708 .cfi_restore 4 + 2709 .cfi_def_cfa_offset 0 + 2710 00f2 7047 bx lr + 2711 .LVL134: + 2712 .L187: + 2713 .LCFI26: + 2714 .cfi_restore_state +1718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2715 .loc 1 1718 8 is_stmt 1 view .LVU850 +1718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2716 .loc 1 1718 11 is_stmt 0 view .LVU851 + 2717 00f4 0C2B cmp r3, #12 + 2718 00f6 16D8 bhi .L189 +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2719 .loc 1 1721 5 is_stmt 1 view .LVU852 +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2720 .loc 1 1721 9 is_stmt 0 view .LVU853 + 2721 00f8 0568 ldr r5, [r0] +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2722 .loc 1 1721 26 view .LVU854 + 2723 00fa 2A6B ldr r2, [r5, #48] +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2724 .loc 1 1721 30 view .LVU855 + 2725 00fc 03EB8303 add r3, r3, r3, lsl #2 + 2726 0100 233B subs r3, r3, #35 + 2727 0102 1F24 movs r4, #31 + 2728 0104 04FA03F3 lsl r3, r4, r3 +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2729 .loc 1 1721 26 view .LVU856 + 2730 0108 22EA0303 bic r3, r2, r3 + 2731 010c 2B63 str r3, [r5, #48] +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2732 .loc 1 1724 5 is_stmt 1 view .LVU857 +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2733 .loc 1 1724 9 is_stmt 0 view .LVU858 + ARM GAS /tmp/ccHbw826.s page 98 + + + 2734 010e 0568 ldr r5, [r0] +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2735 .loc 1 1724 26 view .LVU859 + 2736 0110 2A6B ldr r2, [r5, #48] +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2737 .loc 1 1724 29 view .LVU860 + 2738 0112 4B68 ldr r3, [r1, #4] + 2739 0114 03EB8303 add r3, r3, r3, lsl #2 + 2740 0118 233B subs r3, r3, #35 + 2741 011a 0C88 ldrh r4, [r1] + 2742 011c 04FA03F3 lsl r3, r4, r3 +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2743 .loc 1 1724 26 view .LVU861 + 2744 0120 1343 orrs r3, r3, r2 + 2745 0122 2B63 str r3, [r5, #48] + 2746 0124 D3E7 b .L188 + 2747 .L189: +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2748 .loc 1 1730 5 is_stmt 1 view .LVU862 +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2749 .loc 1 1730 9 is_stmt 0 view .LVU863 + 2750 0126 0568 ldr r5, [r0] +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2751 .loc 1 1730 26 view .LVU864 + 2752 0128 EA6A ldr r2, [r5, #44] +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2753 .loc 1 1730 30 view .LVU865 + 2754 012a 03EB8303 add r3, r3, r3, lsl #2 + 2755 012e 413B subs r3, r3, #65 + 2756 0130 1F24 movs r4, #31 + 2757 0132 04FA03F3 lsl r3, r4, r3 +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2758 .loc 1 1730 26 view .LVU866 + 2759 0136 22EA0303 bic r3, r2, r3 + 2760 013a EB62 str r3, [r5, #44] +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2761 .loc 1 1733 5 is_stmt 1 view .LVU867 +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2762 .loc 1 1733 9 is_stmt 0 view .LVU868 + 2763 013c 0568 ldr r5, [r0] +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2764 .loc 1 1733 26 view .LVU869 + 2765 013e EA6A ldr r2, [r5, #44] +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2766 .loc 1 1733 29 view .LVU870 + 2767 0140 4B68 ldr r3, [r1, #4] + 2768 0142 03EB8303 add r3, r3, r3, lsl #2 + 2769 0146 413B subs r3, r3, #65 + 2770 0148 0C88 ldrh r4, [r1] + 2771 014a 04FA03F3 lsl r3, r4, r3 +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2772 .loc 1 1733 26 view .LVU871 + 2773 014e 1343 orrs r3, r3, r2 + 2774 0150 EB62 str r3, [r5, #44] + 2775 0152 BCE7 b .L188 + 2776 .L198: +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + ARM GAS /tmp/ccHbw826.s page 99 + + + 2777 .loc 1 1737 43 discriminator 1 view .LVU872 + 2778 0154 0B68 ldr r3, [r1] +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2779 .loc 1 1737 32 discriminator 1 view .LVU873 + 2780 0156 B3F1004F cmp r3, #-2147483648 + 2781 015a BCD1 bne .L190 +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2782 .loc 1 1740 5 is_stmt 1 view .LVU874 +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2783 .loc 1 1740 14 is_stmt 0 view .LVU875 + 2784 015c 1E4A ldr r2, .L201+8 + 2785 015e 5368 ldr r3, [r2, #4] + 2786 0160 23F44003 bic r3, r3, #12582912 + 2787 0164 5360 str r3, [r2, #4] + 2788 0166 B6E7 b .L190 + 2789 .L199: +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2790 .loc 1 1744 43 discriminator 1 view .LVU876 + 2791 0168 0B68 ldr r3, [r1] +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2792 .loc 1 1744 32 discriminator 1 view .LVU877 + 2793 016a 122B cmp r3, #18 + 2794 016c B7D1 bne .L191 +1747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2795 .loc 1 1747 5 is_stmt 1 view .LVU878 +1747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2796 .loc 1 1747 14 is_stmt 0 view .LVU879 + 2797 016e 1A4B ldr r3, .L201+8 + 2798 0170 5A68 ldr r2, [r3, #4] + 2799 0172 22F40002 bic r2, r2, #8388608 + 2800 0176 5A60 str r2, [r3, #4] +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2801 .loc 1 1750 5 is_stmt 1 view .LVU880 +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2802 .loc 1 1750 14 is_stmt 0 view .LVU881 + 2803 0178 5A68 ldr r2, [r3, #4] + 2804 017a 42F48002 orr r2, r2, #4194304 + 2805 017e 5A60 str r2, [r3, #4] + 2806 0180 ADE7 b .L191 + 2807 .L200: +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2808 .loc 1 1754 44 discriminator 1 view .LVU882 + 2809 0182 0B68 ldr r3, [r1] +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2810 .loc 1 1754 32 discriminator 1 view .LVU883 + 2811 0184 124A ldr r2, .L201 + 2812 0186 112B cmp r3, #17 + 2813 0188 18BF it ne + 2814 018a 9342 cmpne r3, r2 + 2815 018c ABD1 bne .L192 +1757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2816 .loc 1 1757 5 is_stmt 1 view .LVU884 +1757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2817 .loc 1 1757 14 is_stmt 0 view .LVU885 + 2818 018e 124B ldr r3, .L201+8 + 2819 0190 5A68 ldr r2, [r3, #4] + 2820 0192 22F48002 bic r2, r2, #4194304 + ARM GAS /tmp/ccHbw826.s page 100 + + + 2821 0196 5A60 str r2, [r3, #4] +1760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2822 .loc 1 1760 5 is_stmt 1 view .LVU886 +1760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2823 .loc 1 1760 14 is_stmt 0 view .LVU887 + 2824 0198 5A68 ldr r2, [r3, #4] + 2825 019a 42F40002 orr r2, r2, #8388608 + 2826 019e 5A60 str r2, [r3, #4] +1762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2827 .loc 1 1762 5 is_stmt 1 view .LVU888 +1762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2828 .loc 1 1762 15 is_stmt 0 view .LVU889 + 2829 01a0 0A68 ldr r2, [r1] +1762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2830 .loc 1 1762 7 view .LVU890 + 2831 01a2 0B4B ldr r3, .L201 + 2832 01a4 9A42 cmp r2, r3 + 2833 01a6 9ED1 bne .L192 +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 2834 .loc 1 1766 7 is_stmt 1 view .LVU891 +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 2835 .loc 1 1766 61 is_stmt 0 view .LVU892 + 2836 01a8 0C4B ldr r3, .L201+12 + 2837 01aa 1B68 ldr r3, [r3] + 2838 01ac 0C4A ldr r2, .L201+16 + 2839 01ae A2FB0323 umull r2, r3, r2, r3 + 2840 01b2 9B0C lsrs r3, r3, #18 +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 2841 .loc 1 1766 42 view .LVU893 + 2842 01b4 03EB8303 add r3, r3, r3, lsl #2 + 2843 01b8 5B00 lsls r3, r3, #1 +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** while(counter != 0) + 2844 .loc 1 1766 15 view .LVU894 + 2845 01ba 0193 str r3, [sp, #4] +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2846 .loc 1 1767 7 is_stmt 1 view .LVU895 +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2847 .loc 1 1767 12 is_stmt 0 view .LVU896 + 2848 01bc 02E0 b .L193 + 2849 .L194: +1769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2850 .loc 1 1769 9 is_stmt 1 view .LVU897 +1769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2851 .loc 1 1769 16 is_stmt 0 view .LVU898 + 2852 01be 019B ldr r3, [sp, #4] + 2853 01c0 013B subs r3, r3, #1 + 2854 01c2 0193 str r3, [sp, #4] + 2855 .L193: +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2856 .loc 1 1767 12 is_stmt 1 view .LVU899 +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2857 .loc 1 1767 21 is_stmt 0 view .LVU900 + 2858 01c4 019B ldr r3, [sp, #4] +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2859 .loc 1 1767 12 view .LVU901 + 2860 01c6 002B cmp r3, #0 + 2861 01c8 F9D1 bne .L194 + ARM GAS /tmp/ccHbw826.s page 101 + + + 2862 01ca 8CE7 b .L192 + 2863 .L195: +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2864 .loc 1 1680 3 view .LVU902 + 2865 01cc 0220 movs r0, #2 + 2866 .LVL135: +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2867 .loc 1 1680 3 view .LVU903 + 2868 01ce 8EE7 b .L183 + 2869 .L202: + 2870 .align 2 + 2871 .L201: + 2872 01d0 12000010 .word 268435474 + 2873 01d4 00200140 .word 1073815552 + 2874 01d8 00230140 .word 1073816320 + 2875 01dc 00000000 .word SystemCoreClock + 2876 01e0 83DE1B43 .word 1125899907 + 2877 .cfi_endproc + 2878 .LFE159: + 2880 .section .text.HAL_ADC_AnalogWDGConfig,"ax",%progbits + 2881 .align 1 + 2882 .global HAL_ADC_AnalogWDGConfig + 2883 .syntax unified + 2884 .thumb + 2885 .thumb_func + 2886 .fpu fpv5-d16 + 2888 HAL_ADC_AnalogWDGConfig: + 2889 .LVL136: + 2890 .LFB160: +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #ifdef USE_FULL_ASSERT + 2891 .loc 1 1798 1 is_stmt 1 view -0 + 2892 .cfi_startproc + 2893 @ args = 0, pretend = 0, frame = 0 + 2894 @ frame_needed = 0, uses_anonymous_args = 0 + 2895 @ link register save eliminated. +1804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_ADC_CHANNEL(AnalogWDGConfig->Channel)); + 2896 .loc 1 1804 3 view .LVU905 +1805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** assert_param(IS_FUNCTIONAL_STATE(AnalogWDGConfig->ITMode)); + 2897 .loc 1 1805 3 view .LVU906 +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2898 .loc 1 1806 3 view .LVU907 +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2899 .loc 1 1815 3 view .LVU908 +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2900 .loc 1 1815 3 view .LVU909 + 2901 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 2902 0004 012B cmp r3, #1 + 2903 0006 32D0 beq .L207 +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** #ifdef USE_FULL_ASSERT + 2904 .loc 1 1798 1 is_stmt 0 discriminator 2 view .LVU910 + 2905 0008 10B4 push {r4} + 2906 .LCFI27: + 2907 .cfi_def_cfa_offset 4 + 2908 .cfi_offset 4, -4 +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2909 .loc 1 1815 3 is_stmt 1 discriminator 2 view .LVU911 + 2910 000a 0123 movs r3, #1 + ARM GAS /tmp/ccHbw826.s page 102 + + + 2911 000c 80F83C30 strb r3, [r0, #60] +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2912 .loc 1 1815 3 discriminator 2 view .LVU912 +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2913 .loc 1 1817 3 discriminator 2 view .LVU913 +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2914 .loc 1 1817 21 is_stmt 0 discriminator 2 view .LVU914 + 2915 0010 0B7C ldrb r3, [r1, #16] @ zero_extendqisi2 +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** { + 2916 .loc 1 1817 5 discriminator 2 view .LVU915 + 2917 0012 012B cmp r3, #1 + 2918 0014 25D0 beq .L212 +1825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2919 .loc 1 1825 5 is_stmt 1 view .LVU916 + 2920 0016 0268 ldr r2, [r0] + 2921 0018 5368 ldr r3, [r2, #4] + 2922 001a 23F04003 bic r3, r3, #64 + 2923 001e 5360 str r3, [r2, #4] + 2924 .L206: +1829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2925 .loc 1 1829 3 view .LVU917 +1829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2926 .loc 1 1829 7 is_stmt 0 view .LVU918 + 2927 0020 0268 ldr r2, [r0] +1829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2928 .loc 1 1829 23 view .LVU919 + 2929 0022 5468 ldr r4, [r2, #4] + 2930 0024 134B ldr r3, .L213 + 2931 0026 2340 ands r3, r3, r4 + 2932 0028 5360 str r3, [r2, #4] +1832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2933 .loc 1 1832 3 is_stmt 1 view .LVU920 +1832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2934 .loc 1 1832 7 is_stmt 0 view .LVU921 + 2935 002a 0268 ldr r2, [r0] +1832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2936 .loc 1 1832 23 view .LVU922 + 2937 002c 5368 ldr r3, [r2, #4] +1832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2938 .loc 1 1832 41 view .LVU923 + 2939 002e 0C68 ldr r4, [r1] +1832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2940 .loc 1 1832 23 view .LVU924 + 2941 0030 2343 orrs r3, r3, r4 + 2942 0032 5360 str r3, [r2, #4] +1835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2943 .loc 1 1835 3 is_stmt 1 view .LVU925 +1835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2944 .loc 1 1835 7 is_stmt 0 view .LVU926 + 2945 0034 0368 ldr r3, [r0] +1835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2946 .loc 1 1835 40 view .LVU927 + 2947 0036 4A68 ldr r2, [r1, #4] +1835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2948 .loc 1 1835 23 view .LVU928 + 2949 0038 5A62 str r2, [r3, #36] +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + ARM GAS /tmp/ccHbw826.s page 103 + + + 2950 .loc 1 1838 3 is_stmt 1 view .LVU929 +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2951 .loc 1 1838 7 is_stmt 0 view .LVU930 + 2952 003a 0368 ldr r3, [r0] +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2953 .loc 1 1838 40 view .LVU931 + 2954 003c 8A68 ldr r2, [r1, #8] +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2955 .loc 1 1838 23 view .LVU932 + 2956 003e 9A62 str r2, [r3, #40] +1841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2957 .loc 1 1841 3 is_stmt 1 view .LVU933 +1841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2958 .loc 1 1841 7 is_stmt 0 view .LVU934 + 2959 0040 0268 ldr r2, [r0] +1841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2960 .loc 1 1841 23 view .LVU935 + 2961 0042 5368 ldr r3, [r2, #4] + 2962 0044 23F01F03 bic r3, r3, #31 + 2963 0048 5360 str r3, [r2, #4] +1844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2964 .loc 1 1844 3 is_stmt 1 view .LVU936 +1844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2965 .loc 1 1844 7 is_stmt 0 view .LVU937 + 2966 004a 0268 ldr r2, [r0] +1844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2967 .loc 1 1844 23 view .LVU938 + 2968 004c 5468 ldr r4, [r2, #4] + 2969 004e 8B89 ldrh r3, [r1, #12] + 2970 0050 2343 orrs r3, r3, r4 + 2971 0052 5360 str r3, [r2, #4] +1847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2972 .loc 1 1847 3 is_stmt 1 view .LVU939 +1847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2973 .loc 1 1847 3 view .LVU940 + 2974 0054 0023 movs r3, #0 + 2975 0056 80F83C30 strb r3, [r0, #60] +1847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2976 .loc 1 1847 3 view .LVU941 +1850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2977 .loc 1 1850 3 view .LVU942 +1850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2978 .loc 1 1850 10 is_stmt 0 view .LVU943 + 2979 005a 1846 mov r0, r3 + 2980 .LVL137: +1851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 2981 .loc 1 1851 1 view .LVU944 + 2982 005c 5DF8044B ldr r4, [sp], #4 + 2983 .LCFI28: + 2984 .cfi_remember_state + 2985 .cfi_restore 4 + 2986 .cfi_def_cfa_offset 0 + 2987 0060 7047 bx lr + 2988 .LVL138: + 2989 .L212: + 2990 .LCFI29: + 2991 .cfi_restore_state + ARM GAS /tmp/ccHbw826.s page 104 + + +1820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 2992 .loc 1 1820 5 is_stmt 1 view .LVU945 + 2993 0062 0268 ldr r2, [r0] + 2994 0064 5368 ldr r3, [r2, #4] + 2995 0066 43F04003 orr r3, r3, #64 + 2996 006a 5360 str r3, [r2, #4] + 2997 006c D8E7 b .L206 + 2998 .L207: + 2999 .LCFI30: + 3000 .cfi_def_cfa_offset 0 + 3001 .cfi_restore 4 +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 3002 .loc 1 1815 3 is_stmt 0 view .LVU946 + 3003 006e 0220 movs r0, #2 + 3004 .LVL139: +1851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 3005 .loc 1 1851 1 view .LVU947 + 3006 0070 7047 bx lr + 3007 .L214: + 3008 0072 00BF .align 2 + 3009 .L213: + 3010 0074 FFFD3FFF .word -12583425 + 3011 .cfi_endproc + 3012 .LFE160: + 3014 .section .text.HAL_ADC_GetState,"ax",%progbits + 3015 .align 1 + 3016 .global HAL_ADC_GetState + 3017 .syntax unified + 3018 .thumb + 3019 .thumb_func + 3020 .fpu fpv5-d16 + 3022 HAL_ADC_GetState: + 3023 .LVL140: + 3024 .LFB161: +1880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** /* Return ADC state */ + 3025 .loc 1 1880 1 is_stmt 1 view -0 + 3026 .cfi_startproc + 3027 @ args = 0, pretend = 0, frame = 0 + 3028 @ frame_needed = 0, uses_anonymous_args = 0 + 3029 @ link register save eliminated. +1882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 3030 .loc 1 1882 3 view .LVU949 +1882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 3031 .loc 1 1882 14 is_stmt 0 view .LVU950 + 3032 0000 006C ldr r0, [r0, #64] + 3033 .LVL141: +1883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 3034 .loc 1 1883 1 view .LVU951 + 3035 0002 7047 bx lr + 3036 .cfi_endproc + 3037 .LFE161: + 3039 .section .text.HAL_ADC_GetError,"ax",%progbits + 3040 .align 1 + 3041 .global HAL_ADC_GetError + 3042 .syntax unified + 3043 .thumb + 3044 .thumb_func + ARM GAS /tmp/ccHbw826.s page 105 + + + 3045 .fpu fpv5-d16 + 3047 HAL_ADC_GetError: + 3048 .LVL142: + 3049 .LFB162: +1892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** return hadc->ErrorCode; + 3050 .loc 1 1892 1 is_stmt 1 view -0 + 3051 .cfi_startproc + 3052 @ args = 0, pretend = 0, frame = 0 + 3053 @ frame_needed = 0, uses_anonymous_args = 0 + 3054 @ link register save eliminated. +1893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 3055 .loc 1 1893 3 view .LVU953 +1893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** } + 3056 .loc 1 1893 14 is_stmt 0 view .LVU954 + 3057 0000 406C ldr r0, [r0, #68] + 3058 .LVL143: +1894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.c **** + 3059 .loc 1 1894 1 view .LVU955 + 3060 0002 7047 bx lr + 3061 .cfi_endproc + 3062 .LFE162: + 3064 .text + 3065 .Letext0: + 3066 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 3067 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 3068 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 3069 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 3070 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 3071 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h" + 3072 .file 8 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h" + 3073 .file 9 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h" + 3074 .file 10 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + ARM GAS /tmp/ccHbw826.s page 106 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_adc.c + /tmp/ccHbw826.s:17 .text.ADC_Init:0000000000000000 $t + /tmp/ccHbw826.s:24 .text.ADC_Init:0000000000000000 ADC_Init + /tmp/ccHbw826.s:272 .text.ADC_Init:000000000000012c $d + /tmp/ccHbw826.s:278 .text.HAL_ADC_MspInit:0000000000000000 $t + /tmp/ccHbw826.s:285 .text.HAL_ADC_MspInit:0000000000000000 HAL_ADC_MspInit + /tmp/ccHbw826.s:300 .text.HAL_ADC_Init:0000000000000000 $t + /tmp/ccHbw826.s:307 .text.HAL_ADC_Init:0000000000000000 HAL_ADC_Init + /tmp/ccHbw826.s:409 .text.HAL_ADC_Init:0000000000000054 $d + /tmp/ccHbw826.s:414 .text.HAL_ADC_MspDeInit:0000000000000000 $t + /tmp/ccHbw826.s:421 .text.HAL_ADC_MspDeInit:0000000000000000 HAL_ADC_MspDeInit + /tmp/ccHbw826.s:436 .text.HAL_ADC_DeInit:0000000000000000 $t + /tmp/ccHbw826.s:443 .text.HAL_ADC_DeInit:0000000000000000 HAL_ADC_DeInit + /tmp/ccHbw826.s:515 .text.HAL_ADC_Start:0000000000000000 $t + /tmp/ccHbw826.s:522 .text.HAL_ADC_Start:0000000000000000 HAL_ADC_Start + /tmp/ccHbw826.s:775 .text.HAL_ADC_Start:000000000000011c $d + /tmp/ccHbw826.s:785 .text.HAL_ADC_Stop:0000000000000000 $t + /tmp/ccHbw826.s:792 .text.HAL_ADC_Stop:0000000000000000 HAL_ADC_Stop + /tmp/ccHbw826.s:850 .text.HAL_ADC_Stop:000000000000003c $d + /tmp/ccHbw826.s:855 .text.HAL_ADC_PollForConversion:0000000000000000 $t + /tmp/ccHbw826.s:862 .text.HAL_ADC_PollForConversion:0000000000000000 HAL_ADC_PollForConversion + /tmp/ccHbw826.s:1036 .text.HAL_ADC_PollForEvent:0000000000000000 $t + /tmp/ccHbw826.s:1043 .text.HAL_ADC_PollForEvent:0000000000000000 HAL_ADC_PollForEvent + /tmp/ccHbw826.s:1158 .text.HAL_ADC_Start_IT:0000000000000000 $t + /tmp/ccHbw826.s:1165 .text.HAL_ADC_Start_IT:0000000000000000 HAL_ADC_Start_IT + /tmp/ccHbw826.s:1424 .text.HAL_ADC_Start_IT:0000000000000128 $d + /tmp/ccHbw826.s:1435 .text.HAL_ADC_Stop_IT:0000000000000000 $t + /tmp/ccHbw826.s:1442 .text.HAL_ADC_Stop_IT:0000000000000000 HAL_ADC_Stop_IT + /tmp/ccHbw826.s:1505 .text.HAL_ADC_Stop_IT:0000000000000044 $d + /tmp/ccHbw826.s:1511 .text.HAL_ADC_Start_DMA:0000000000000000 $t + /tmp/ccHbw826.s:1518 .text.HAL_ADC_Start_DMA:0000000000000000 HAL_ADC_Start_DMA + /tmp/ccHbw826.s:1811 .text.HAL_ADC_Start_DMA:000000000000015c $d + /tmp/ccHbw826.s:2398 .text.ADC_DMAConvCplt:0000000000000000 ADC_DMAConvCplt + /tmp/ccHbw826.s:2024 .text.ADC_DMAHalfConvCplt:0000000000000000 ADC_DMAHalfConvCplt + /tmp/ccHbw826.s:2357 .text.ADC_DMAError:0000000000000000 ADC_DMAError + /tmp/ccHbw826.s:1824 .text.HAL_ADC_Stop_DMA:0000000000000000 $t + /tmp/ccHbw826.s:1831 .text.HAL_ADC_Stop_DMA:0000000000000000 HAL_ADC_Stop_DMA + /tmp/ccHbw826.s:1942 .text.HAL_ADC_Stop_DMA:0000000000000074 $d + /tmp/ccHbw826.s:1947 .text.HAL_ADC_GetValue:0000000000000000 $t + /tmp/ccHbw826.s:1954 .text.HAL_ADC_GetValue:0000000000000000 HAL_ADC_GetValue + /tmp/ccHbw826.s:1974 .text.HAL_ADC_ConvCpltCallback:0000000000000000 $t + /tmp/ccHbw826.s:1981 .text.HAL_ADC_ConvCpltCallback:0000000000000000 HAL_ADC_ConvCpltCallback + /tmp/ccHbw826.s:1996 .text.HAL_ADC_ConvHalfCpltCallback:0000000000000000 $t + /tmp/ccHbw826.s:2003 .text.HAL_ADC_ConvHalfCpltCallback:0000000000000000 HAL_ADC_ConvHalfCpltCallback + /tmp/ccHbw826.s:2018 .text.ADC_DMAHalfConvCplt:0000000000000000 $t + /tmp/ccHbw826.s:2051 .text.HAL_ADC_LevelOutOfWindowCallback:0000000000000000 $t + /tmp/ccHbw826.s:2058 .text.HAL_ADC_LevelOutOfWindowCallback:0000000000000000 HAL_ADC_LevelOutOfWindowCallback + /tmp/ccHbw826.s:2073 .text.HAL_ADC_ErrorCallback:0000000000000000 $t + /tmp/ccHbw826.s:2080 .text.HAL_ADC_ErrorCallback:0000000000000000 HAL_ADC_ErrorCallback + /tmp/ccHbw826.s:2095 .text.HAL_ADC_IRQHandler:0000000000000000 $t + /tmp/ccHbw826.s:2102 .text.HAL_ADC_IRQHandler:0000000000000000 HAL_ADC_IRQHandler + /tmp/ccHbw826.s:2351 .text.ADC_DMAError:0000000000000000 $t + /tmp/ccHbw826.s:2392 .text.ADC_DMAConvCplt:0000000000000000 $t + /tmp/ccHbw826.s:2507 .text.HAL_ADC_ConfigChannel:0000000000000000 $t + /tmp/ccHbw826.s:2514 .text.HAL_ADC_ConfigChannel:0000000000000000 HAL_ADC_ConfigChannel + /tmp/ccHbw826.s:2872 .text.HAL_ADC_ConfigChannel:00000000000001d0 $d + ARM GAS /tmp/ccHbw826.s page 107 + + + /tmp/ccHbw826.s:2881 .text.HAL_ADC_AnalogWDGConfig:0000000000000000 $t + /tmp/ccHbw826.s:2888 .text.HAL_ADC_AnalogWDGConfig:0000000000000000 HAL_ADC_AnalogWDGConfig + /tmp/ccHbw826.s:3010 .text.HAL_ADC_AnalogWDGConfig:0000000000000074 $d + /tmp/ccHbw826.s:3015 .text.HAL_ADC_GetState:0000000000000000 $t + /tmp/ccHbw826.s:3022 .text.HAL_ADC_GetState:0000000000000000 HAL_ADC_GetState + /tmp/ccHbw826.s:3040 .text.HAL_ADC_GetError:0000000000000000 $t + /tmp/ccHbw826.s:3047 .text.HAL_ADC_GetError:0000000000000000 HAL_ADC_GetError + +UNDEFINED SYMBOLS +SystemCoreClock +HAL_GetTick +HAL_DMA_Start_IT +HAL_DMA_Abort +HAL_ADCEx_InjectedConvCpltCallback diff --git a/build/stm32f7xx_hal_adc.o b/build/stm32f7xx_hal_adc.o new file mode 100644 index 0000000..4895630 Binary files /dev/null and b/build/stm32f7xx_hal_adc.o differ diff --git a/build/stm32f7xx_hal_adc_ex.d b/build/stm32f7xx_hal_adc_ex.d new file mode 100644 index 0000000..87cbf07 --- /dev/null +++ b/build/stm32f7xx_hal_adc_ex.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_adc_ex.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_adc_ex.lst b/build/stm32f7xx_hal_adc_ex.lst new file mode 100644 index 0000000..7feb701 --- /dev/null +++ b/build/stm32f7xx_hal_adc_ex.lst @@ -0,0 +1,4009 @@ +ARM GAS /tmp/ccfOJcl9.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_adc_ex.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.ADC_MultiModeDMAError,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 ADC_MultiModeDMAError: + 25 .LVL0: + 26 .LFB155: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @file stm32f7xx_hal_adc_ex.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief This file provides firmware functions to manage the following + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * functionalities of the ADC extension peripheral: + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * + Extended features functions + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ****************************************************************************** + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @attention + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * Copyright (c) 2017 STMicroelectronics. + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * All rights reserved. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * This software is licensed under terms that can be found in the LICENSE file + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * in the root directory of this software component. + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ****************************************************************************** + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** @verbatim + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ============================================================================== + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ##### How to use this driver ##### + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ============================================================================== + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** [..] + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (#)Initialize the ADC low level resources by implementing the HAL_ADC_MspInit(): + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (##) Enable the ADC interface clock using __HAL_RCC_ADC_CLK_ENABLE() + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (##) ADC pins configuration + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+++) Enable the clock for the ADC GPIOs using the following function: + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_RCC_GPIOx_CLK_ENABLE() + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+++) Configure these ADC pins in analog mode using HAL_GPIO_Init() + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (##) In case of using interrupts (e.g. HAL_ADC_Start_IT()) + ARM GAS /tmp/ccfOJcl9.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+++) Configure the ADC interrupt priority using HAL_NVIC_SetPriority() + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+++) Enable the ADC IRQ handler using HAL_NVIC_EnableIRQ() + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+++) In ADC IRQ handler, call HAL_ADC_IRQHandler() + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (##) In case of using DMA to control data transfer (e.g. HAL_ADC_Start_DMA()) + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+++) Enable the DMAx interface clock using __HAL_RCC_DMAx_CLK_ENABLE() + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+++) Configure and enable two DMA streams stream for managing data + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** transfer from peripheral to memory (output stream) + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+++) Associate the initialized DMA handle to the ADC DMA handle + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** using __HAL_LINKDMA() + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+++) Configure the priority and enable the NVIC for the transfer complete + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** interrupt on the two DMA Streams. The output stream should have higher + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** priority than the input stream. + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (#) Configure the ADC Prescaler, conversion resolution and data alignment + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** using the HAL_ADC_Init() function. + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (#) Configure the ADC Injected channels group features, use HAL_ADC_Init() + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** and HAL_ADC_ConfigChannel() functions. + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (#) Three operation modes are available within this driver : + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** *** Polling mode IO operation *** + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ================================= + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** [..] + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Start the ADC peripheral using HAL_ADCEx_InjectedStart() + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Wait for end of conversion using HAL_ADCEx_InjectedPollForConversion(), at this stage + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** user can specify the value of timeout according to his end application + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) To read the ADC converted values, use the HAL_ADCEx_InjectedGetValue() function. + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Stop the ADC peripheral using HAL_ADCEx_InjectedStop() + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** *** Interrupt mode IO operation *** + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** =================================== + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** [..] + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Start the ADC peripheral using HAL_ADCEx_InjectedStart_IT() + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Use HAL_ADC_IRQHandler() called under ADC_IRQHandler() Interrupt subroutine + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) At ADC end of conversion HAL_ADCEx_InjectedConvCpltCallback() function is executed and u + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** add his own code by customization of function pointer HAL_ADCEx_InjectedConvCpltCallbac + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) In case of ADC Error, HAL_ADCEx_InjectedErrorCallback() function is executed and user ca + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** add his own code by customization of function pointer HAL_ADCEx_InjectedErrorCallback + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Stop the ADC peripheral using HAL_ADCEx_InjectedStop_IT() + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** *** Multi mode ADCs Regular channels configuration *** + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ====================================================== + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** [..] + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Select the Multi mode ADC regular channels features (dual or triple mode) + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** and configure the DMA mode using HAL_ADCEx_MultiModeConfigChannel() functions. + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Start the ADC peripheral using HAL_ADCEx_MultiModeStart_DMA(), at this stage the user sp + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** of data to be transferred at each end of conversion + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Read the ADCs converted values using the HAL_ADCEx_MultiModeGetValue() function. + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** @endverbatim + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ****************************************************************************** + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Includes ------------------------------------------------------------------*/ + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** #include "stm32f7xx_hal.h" + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + ARM GAS /tmp/ccfOJcl9.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** @addtogroup STM32F7xx_HAL_Driver + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @{ + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** @defgroup ADCEx ADCEx + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief ADC Extended driver modules + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @{ + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** #ifdef HAL_ADC_MODULE_ENABLED + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Private typedef -----------------------------------------------------------*/ + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Private define ------------------------------------------------------------*/ + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Private macro -------------------------------------------------------------*/ + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Private variables ---------------------------------------------------------*/ + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** @addtogroup ADCEx_Private_Functions + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @{ + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Private function prototypes -----------------------------------------------*/ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** static void ADC_MultiModeDMAConvCplt(DMA_HandleTypeDef *hdma); + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** static void ADC_MultiModeDMAError(DMA_HandleTypeDef *hdma); + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** static void ADC_MultiModeDMAHalfConvCplt(DMA_HandleTypeDef *hdma); + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @} + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Exported functions --------------------------------------------------------*/ + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** @defgroup ADCEx_Exported_Functions ADC Exported Functions + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @{ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** @defgroup ADCEx_Exported_Functions_Group1 Extended features functions + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Extended features functions + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** @verbatim + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** =============================================================================== + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ##### Extended features functions ##### + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** =============================================================================== + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** [..] This section provides functions allowing to: + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Start conversion of injected channel. + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Stop conversion of injected channel. + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Start multimode and enable DMA transfer. + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Stop multimode and disable DMA transfer. + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Get result of injected channel conversion. + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Get result of multimode conversion. + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Configure injected channels. + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (+) Configure multimode. + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** @endverbatim + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @{ + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Enables the selected ADC software start conversion of the injected channels. + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified ADC. + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval HAL status + ARM GAS /tmp/ccfOJcl9.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef* hadc) + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t counter = 0; + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t tmp1 = 0, tmp2 = 0; + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process locked */ + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_LOCK(hadc); + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the ADC peripheral */ + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check if ADC peripheral is disabled in order to enable it and wait during + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** Tstab time the ADC's stabilization */ + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the Peripheral */ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_ENABLE(hadc); + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Delay for ADC stabilization time */ + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Compute number of CPU cycles to wait for */ + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** counter--; + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Start conversion if ADC is effectively enabled */ + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC state */ + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* - Clear state bitfield related to injected group conversion results */ + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* - Set state bitfield related to injected operation */ + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_STATE_CLR_SET(hadc->State, + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_INJ_EOC, + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_INJ_BUSY); + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check if a regular conversion is ongoing */ + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Note: On this device, there is no ADC error code fields related to */ + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* conversions on group injected only. In case of conversion on */ + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* going on group regular, no error code is reset. */ + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY)) + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Reset ADC all error code fields */ + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_CLEAR_ERRORCODE(hadc); + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Unlock before starting ADC conversions: in case of potential */ + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* interruption, to let the process to ADC IRQ Handler. */ + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_UNLOCK(hadc); + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Clear injected group conversion flag */ + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* (To ensure of no unknown state from potential previous ADC operations) */ + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC); + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check if Multimode enabled */ + ARM GAS /tmp/ccfOJcl9.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI)) + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN); + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(tmp1 && tmp2) + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the selected ADC software conversion for injected group */ + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= ADC_CR2_JSWSTART; + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN); + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((hadc->Instance == ADC1) && tmp1 && tmp2) + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the selected ADC software conversion for injected group */ + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= ADC_CR2_JSWSTART; + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Update ADC state machine to error */ + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC error code to ADC IP internal error */ + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return function status */ + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return HAL_OK; + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Enables the interrupt and starts ADC conversion of injected channels. + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified ADC. + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval HAL status. + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef* hadc) + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t counter = 0; + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t tmp1 = 0, tmp2 = 0; + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process locked */ + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_LOCK(hadc); + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the ADC peripheral */ + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check if ADC peripheral is disabled in order to enable it and wait during + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** Tstab time the ADC's stabilization */ + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the Peripheral */ + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_ENABLE(hadc); + ARM GAS /tmp/ccfOJcl9.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Delay for ADC stabilization time */ + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Compute number of CPU cycles to wait for */ + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** counter--; + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Start conversion if ADC is effectively enabled */ + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC state */ + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* - Clear state bitfield related to injected group conversion results */ + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* - Set state bitfield related to injected operation */ + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_STATE_CLR_SET(hadc->State, + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_INJ_EOC, + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_INJ_BUSY); + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check if a regular conversion is ongoing */ + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Note: On this device, there is no ADC error code fields related to */ + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* conversions on group injected only. In case of conversion on */ + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* going on group regular, no error code is reset. */ + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY)) + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Reset ADC all error code fields */ + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_CLEAR_ERRORCODE(hadc); + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Unlock before starting ADC conversions: in case of potential */ + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* interruption, to let the process to ADC IRQ Handler. */ + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_UNLOCK(hadc); + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Clear injected group conversion flag */ + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* (To ensure of no unknown state from potential previous ADC operations) */ + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC); + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable end of conversion interrupt for injected channels */ + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOC); + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check if Multimode enabled */ + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(HAL_IS_BIT_CLR(ADC->CCR, ADC_CCR_MULTI)) + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN); + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(tmp1 && tmp2) + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the selected ADC software conversion for injected group */ + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= ADC_CR2_JSWSTART; + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN); + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + ARM GAS /tmp/ccfOJcl9.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((hadc->Instance == ADC1) && tmp1 && tmp2) + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the selected ADC software conversion for injected group */ + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= ADC_CR2_JSWSTART; + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Update ADC state machine to error */ + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC error code to ADC IP internal error */ + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return function status */ + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return HAL_OK; + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Stop conversion of injected channels. Disable ADC peripheral if + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * no regular conversion is on going. + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @note If ADC must be disabled and if conversion is on going on + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * regular group, function HAL_ADC_Stop must be used to stop both + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * injected and regular groups, and disable the ADC. + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @note If injected group mode auto-injection is enabled, + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * function HAL_ADC_Stop must be used. + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @note In case of auto-injection mode, HAL_ADC_Stop must be used. + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc ADC handle + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval None + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef HAL_ADCEx_InjectedStop(ADC_HandleTypeDef* hadc) + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check the parameters */ + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process locked */ + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_LOCK(hadc); + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Stop potential conversion and disable ADC peripheral */ + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Conditioned to: */ + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* - No conversion on the other group (regular group) is intended to */ + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* continue (injected and regular groups stop conversion and ADC disable */ + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* are common) */ + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* - In case of auto-injection mode, HAL_ADC_Stop must be used. */ + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(((hadc->State & HAL_ADC_STATE_REG_BUSY) == RESET) && + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Stop potential conversion on going, on regular and injected groups */ + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable ADC peripheral */ + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_DISABLE(hadc); + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check if ADC is effectively disabled */ + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + ARM GAS /tmp/ccfOJcl9.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC state */ + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_STATE_CLR_SET(hadc->State, + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_READY); + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Update ADC state machine to error */ + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp_hal_status = HAL_ERROR; + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_UNLOCK(hadc); + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return function status */ + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return tmp_hal_status; + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Poll for injected conversion complete + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified ADC. + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param Timeout Timeout value in millisecond. + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval HAL status + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout) + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t tickstart = 0; + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Get tick */ + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tickstart = HAL_GetTick(); + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check End of conversion flag */ + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOC))) + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check for the Timeout */ + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(Timeout != HAL_MAX_DELAY) + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout)) + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* New check to avoid false timeout detection in case of preemption */ + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOC))) + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->State= HAL_ADC_STATE_TIMEOUT; + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_UNLOCK(hadc); + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return HAL_TIMEOUT; + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Clear injected group conversion flag */ + ARM GAS /tmp/ccfOJcl9.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JSTRT | ADC_FLAG_JEOC); + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Update ADC state machine */ + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->State, HAL_ADC_STATE_INJ_EOC); + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Determine whether any further conversion upcoming on group injected */ + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* by external trigger, continuous mode or scan sequence on going. */ + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Note: On STM32F7, there is no independent flag of end of sequence. */ + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* The test of scan sequence on going is done either with scan */ + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* sequence disabled or with end of conversion flag set to */ + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* of end of sequence. */ + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(ADC_IS_SOFTWARE_START_INJECTED(hadc) && + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) && + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) && + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (ADC_IS_SOFTWARE_START_REGULAR(hadc) && + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (hadc->Init.ContinuousConvMode == DISABLE) ) ) ) + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC state */ + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY); + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY)) + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->State, HAL_ADC_STATE_READY); + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return ADC state */ + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return HAL_OK; + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Stop conversion of injected channels, disable interruption of + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * end-of-conversion. Disable ADC peripheral if no regular conversion + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * is on going. + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @note If ADC must be disabled and if conversion is on going on + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * regular group, function HAL_ADC_Stop must be used to stop both + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * injected and regular groups, and disable the ADC. + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @note If injected group mode auto-injection is enabled, + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * function HAL_ADC_Stop must be used. + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc ADC handle + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval None + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(ADC_HandleTypeDef* hadc) + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check the parameters */ + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process locked */ + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_LOCK(hadc); + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Stop potential conversion and disable ADC peripheral */ + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Conditioned to: */ + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* - No conversion on the other group (regular group) is intended to */ + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* continue (injected and regular groups stop conversion and ADC disable */ + ARM GAS /tmp/ccfOJcl9.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* are common) */ + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* - In case of auto-injection mode, HAL_ADC_Stop must be used. */ + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(((hadc->State & HAL_ADC_STATE_REG_BUSY) == RESET) && + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Stop potential conversion on going, on regular and injected groups */ + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable ADC peripheral */ + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_DISABLE(hadc); + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check if ADC is effectively disabled */ + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable ADC end of conversion interrupt for injected channels */ + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC); + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC state */ + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_STATE_CLR_SET(hadc->State, + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_READY); + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Update ADC state machine to error */ + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp_hal_status = HAL_ERROR; + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_UNLOCK(hadc); + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return function status */ + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return tmp_hal_status; + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Gets the converted value from data register of injected channel. + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified ADC. + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param InjectedRank the ADC injected rank. + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * This parameter can be one of the following values: + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @arg ADC_INJECTED_RANK_1: Injected Channel1 selected + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @arg ADC_INJECTED_RANK_2: Injected Channel2 selected + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @arg ADC_INJECTED_RANK_3: Injected Channel3 selected + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @arg ADC_INJECTED_RANK_4: Injected Channel4 selected + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval None + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t HAL_ADCEx_InjectedGetValue(ADC_HandleTypeDef* hadc, uint32_t InjectedRank) + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t tmp = 0; + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check the parameters */ + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_INJECTED_RANK(InjectedRank)); + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Clear injected group conversion flag to have similar behaviour as */ + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* regular group: reading data register also clears end of conversion flag. */ + ARM GAS /tmp/ccfOJcl9.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC); + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return the selected ADC converted value */ + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** switch(InjectedRank) + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case ADC_INJECTED_RANK_4: + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp = hadc->Instance->JDR4; + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case ADC_INJECTED_RANK_3: + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp = hadc->Instance->JDR3; + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case ADC_INJECTED_RANK_2: + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp = hadc->Instance->JDR2; + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case ADC_INJECTED_RANK_1: + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp = hadc->Instance->JDR1; + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** default: + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return tmp; + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Enables ADC DMA request after last transfer (Multi-ADC mode) and enables ADC peripheral + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @note Caution: This function must be used only with the ADC master. + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified ADC. + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param pData Pointer to buffer in which transferred from ADC peripheral to memory will be st + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param Length The length of data to be transferred from ADC peripheral to memory. + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval HAL status + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t L + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t counter = 0; + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check the parameters */ + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode)); + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests)); + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process locked */ + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_LOCK(hadc); + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check if ADC peripheral is disabled in order to enable it and wait during + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** Tstab time the ADC's stabilization */ + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON) + ARM GAS /tmp/ccfOJcl9.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the Peripheral */ + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_ENABLE(hadc); + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Delay for temperature sensor stabilization time */ + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Compute number of CPU cycles to wait for */ + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000)); + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** counter--; + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Start conversion if ADC is effectively enabled */ + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON)) + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC state */ + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* - Clear state bitfield related to regular group conversion results */ + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* - Set state bitfield related to regular group operation */ + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_STATE_CLR_SET(hadc->State, + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_REG_BUSY); + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* If conversions on group regular are also triggering group injected, */ + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* update ADC state. */ + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET) + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY); + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* State machine update: Check if an injected conversion is ongoing */ + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY)) + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Reset ADC error code fields related to conversions on group regular */ + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA)); + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Reset ADC all error code fields */ + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_CLEAR_ERRORCODE(hadc); + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Unlock before starting ADC conversions: in case of potential */ + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* interruption, to let the process to ADC IRQ Handler. */ + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_UNLOCK(hadc); + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set the DMA transfer complete callback */ + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->DMA_Handle->XferCpltCallback = ADC_MultiModeDMAConvCplt; + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set the DMA half transfer complete callback */ + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->DMA_Handle->XferHalfCpltCallback = ADC_MultiModeDMAHalfConvCplt; + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set the DMA error callback */ + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->DMA_Handle->XferErrorCallback = ADC_MultiModeDMAError ; + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Manage ADC and DMA start: ADC overrun interruption, DMA start, ADC */ + ARM GAS /tmp/ccfOJcl9.s page 13 + + + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* start (in case of SW start): */ + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Clear regular group conversion flag and overrun flag */ + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* (To ensure of no unknown state from potential previous ADC operations) */ + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC); + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable ADC overrun interrupt */ + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_ENABLE_IT(hadc, ADC_IT_OVR); + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (hadc->Init.DMAContinuousRequests != DISABLE) + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the selected ADC DMA request after last transfer */ + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= ADC_CCR_DDS; + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable the selected ADC EOC rising on each regular channel conversion */ + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR &= ~ADC_CCR_DDS; + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the DMA Stream */ + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_DMA_Start_IT(hadc->DMA_Handle, (uint32_t)&ADC->CDR, (uint32_t)pData, Length); + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* if no external trigger present enable software conversion of regular channels */ + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET) + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the selected ADC software conversion for regular group */ + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART; + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Update ADC state machine to error */ + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC error code to ADC IP internal error */ + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return function status */ + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return HAL_OK; + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Disables ADC DMA (multi-ADC mode) and disables ADC peripheral + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified ADC. + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval HAL status + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef* hadc) + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check the parameters */ + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance)); + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process locked */ + ARM GAS /tmp/ccfOJcl9.s page 14 + + + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_LOCK(hadc); + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Stop potential conversion on going, on regular and injected groups */ + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable ADC peripheral */ + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_DISABLE(hadc); + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check if ADC is effectively disabled */ + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON)) + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable the selected ADC DMA mode for multimode */ + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR &= ~ADC_CCR_DDS; + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable the DMA channel (in case of DMA in circular mode or stop while */ + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* DMA transfer is on going) */ + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp_hal_status = HAL_DMA_Abort(hadc->DMA_Handle); + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable ADC overrun interrupt */ + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_DISABLE_IT(hadc, ADC_IT_OVR); + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC state */ + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_STATE_CLR_SET(hadc->State, + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_READY); + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_UNLOCK(hadc); + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return function status */ + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return tmp_hal_status; + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Returns the last ADC1, ADC2 and ADC3 regular conversions results + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * data in the selected multi mode. + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified ADC. + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval The converted data value. + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t HAL_ADCEx_MultiModeGetValue(ADC_HandleTypeDef* hadc) + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Prevent unused argument(s) compilation warning */ + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** UNUSED(hadc); + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return the multi mode conversion value */ + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return ADC->CDR; + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Injected conversion complete callback in non blocking mode + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified ADC. + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval None + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __weak void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc) + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Prevent unused argument(s) compilation warning */ + ARM GAS /tmp/ccfOJcl9.s page 15 + + + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** UNUSED(hadc); + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** the HAL_ADC_InjectedConvCpltCallback could be implemented in the user file + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Configures for the selected ADC injected channel its corresponding + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * rank in the sequencer and its sample time. + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified ADC. + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param sConfigInjected ADC configuration structure for injected channel. + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval None + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef* hadc, ADC_InjectionConfTypeDef + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** #ifdef USE_FULL_ASSERT + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t tmp = 0; + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** #endif /* USE_FULL_ASSERT */ + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check the parameters */ + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_CHANNEL(sConfigInjected->InjectedChannel)); + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_INJECTED_RANK(sConfigInjected->InjectedRank)); + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_SAMPLE_TIME(sConfigInjected->InjectedSamplingTime)); + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_EXT_INJEC_TRIG(sConfigInjected->ExternalTrigInjecConv)); + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_INJECTED_LENGTH(sConfigInjected->InjectedNbrOfConversion)); + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_FUNCTIONAL_STATE(sConfigInjected->AutoInjectedConv)); + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_FUNCTIONAL_STATE(sConfigInjected->InjectedDiscontinuousConvMode)); + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** #ifdef USE_FULL_ASSERT + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp = ADC_GET_RESOLUTION(hadc); + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_RANGE(tmp, sConfigInjected->InjectedOffset)); + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** #endif /* USE_FULL_ASSERT */ + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(sConfigInjected->ExternalTrigInjecConv != ADC_INJECTED_SOFTWARE_START) + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_EXT_INJEC_TRIG_EDGE(sConfigInjected->ExternalTrigInjecConvEdge)); + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process locked */ + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_LOCK(hadc); + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* if ADC_Channel_10 ... ADC_Channel_18 is selected */ + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (sConfigInjected->InjectedChannel > ADC_CHANNEL_9) + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Clear the old sample time */ + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->SMPR1 &= ~ADC_SMPR1(ADC_SMPR1_SMP10, sConfigInjected->InjectedChannel); + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set the new sample time */ + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->SMPR1 |= ADC_SMPR1(sConfigInjected->InjectedSamplingTime, sConfigInjected->Inje + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else /* ADC_Channel include in ADC_Channel_[0..9] */ + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Clear the old sample time */ + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->SMPR2 &= ~ADC_SMPR2(ADC_SMPR2_SMP0, sConfigInjected->InjectedChannel); + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + ARM GAS /tmp/ccfOJcl9.s page 16 + + + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set the new sample time */ + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->SMPR2 |= ADC_SMPR2(sConfigInjected->InjectedSamplingTime, sConfigInjected->Inje + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /*---------------------------- ADCx JSQR Configuration -----------------*/ + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JSQR &= ~(ADC_JSQR_JL); + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JSQR |= ADC_SQR1(sConfigInjected->InjectedNbrOfConversion); + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Rank configuration */ + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Clear the old SQx bits for the selected rank */ + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JSQR &= ~ADC_JSQR(ADC_JSQR_JSQ1, sConfigInjected->InjectedRank,sConfigInjected->I + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set the SQx bits for the selected rank */ + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JSQR |= ADC_JSQR(sConfigInjected->InjectedChannel, sConfigInjected->InjectedRank, + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable external trigger if trigger selection is different of software */ + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* start. */ + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Note: This configuration keeps the hardware feature of parameter */ + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* ExternalTrigConvEdge "trigger edge none" equivalent to */ + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* software start. */ + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(sConfigInjected->ExternalTrigInjecConv != ADC_INJECTED_SOFTWARE_START) + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Select external trigger to start conversion */ + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 &= ~(ADC_CR2_JEXTSEL); + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= sConfigInjected->ExternalTrigInjecConv; + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Select external trigger polarity */ + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 &= ~(ADC_CR2_JEXTEN); + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= sConfigInjected->ExternalTrigInjecConvEdge; + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Reset the external trigger */ + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 &= ~(ADC_CR2_JEXTSEL); + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 &= ~(ADC_CR2_JEXTEN); + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (sConfigInjected->AutoInjectedConv != DISABLE) + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the selected ADC automatic injected group conversion */ + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR1 |= ADC_CR1_JAUTO; + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable the selected ADC automatic injected group conversion */ + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR1 &= ~(ADC_CR1_JAUTO); + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (sConfigInjected->InjectedDiscontinuousConvMode != DISABLE) + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the selected ADC injected discontinuous mode */ + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR1 |= ADC_CR1_JDISCEN; + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable the selected ADC injected discontinuous mode */ + ARM GAS /tmp/ccfOJcl9.s page 17 + + + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR1 &= ~(ADC_CR1_JDISCEN); + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** switch(sConfigInjected->InjectedRank) + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case 1: + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set injected channel 1 offset */ + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR1 &= ~(ADC_JOFR1_JOFFSET1); + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR1 |= sConfigInjected->InjectedOffset; + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case 2: + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set injected channel 2 offset */ + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR2 &= ~(ADC_JOFR2_JOFFSET2); + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR2 |= sConfigInjected->InjectedOffset; + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case 3: + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set injected channel 3 offset */ + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR3 &= ~(ADC_JOFR3_JOFFSET3); + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR3 |= sConfigInjected->InjectedOffset; + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** default: + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set injected channel 4 offset */ + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR4 &= ~(ADC_JOFR4_JOFFSET4); + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR4 |= sConfigInjected->InjectedOffset; + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* if ADC1 Channel_18 is selected enable VBAT Channel */ + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if ((hadc->Instance == ADC1) && (sConfigInjected->InjectedChannel == ADC_CHANNEL_VBAT)) + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the VBAT channel*/ + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= ADC_CCR_VBATE; + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* if ADC1 Channel_16 or Channel_17 is selected enable TSVREFE Channel(Temperature sensor and VRE + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if ((hadc->Instance == ADC1) && ((sConfigInjected->InjectedChannel == ADC_CHANNEL_TEMPSENSOR) || + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Enable the TSVREFE channel*/ + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= ADC_CCR_TSVREFE; + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_UNLOCK(hadc); + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return function status */ + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return HAL_OK; + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief Configures the ADC multi-mode + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hadc pointer to a ADC_HandleTypeDef structure that contains + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified ADC. + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param multimode pointer to an ADC_MultiModeTypeDef structure that contains + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for multimode. + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval HAL status + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef* hadc, ADC_MultiModeTypeDef* m + ARM GAS /tmp/ccfOJcl9.s page 18 + + + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check the parameters */ + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_MODE(multimode->Mode)); + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_DMA_ACCESS_MODE(multimode->DMAAccessMode)); + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_SAMPLING_DELAY(multimode->TwoSamplingDelay)); + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process locked */ + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_LOCK(hadc); + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC mode */ + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR &= ~(ADC_CCR_MULTI); + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= multimode->Mode; + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set the ADC DMA access mode */ + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR &= ~(ADC_CCR_DMA); + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= multimode->DMAAccessMode; + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set delay between two sampling phases */ + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR &= ~(ADC_CCR_DELAY); + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= multimode->TwoSamplingDelay; + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_UNLOCK(hadc); + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Return function status */ + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return HAL_OK; + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @} + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief DMA transfer complete callback. + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified DMA module. + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval None + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** static void ADC_MultiModeDMAConvCplt(DMA_HandleTypeDef *hdma) + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Retrieve ADC handle corresponding to current DMA handle */ + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Update state machine on conversion status if not in error state */ + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL | HAL_ADC_STATE_ERROR_DMA)) + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Update ADC state machine */ + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC); + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Determine whether any further conversion upcoming on group regular */ + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* by external trigger, continuous mode or scan sequence on going. */ + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Note: On STM32F7, there is no independent flag of end of sequence. */ + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* The test of scan sequence on going is done either with scan */ + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* sequence disabled or with end of conversion flag set to */ + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* of end of sequence. */ + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(ADC_IS_SOFTWARE_START_REGULAR(hadc) && +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + ARM GAS /tmp/ccfOJcl9.s page 19 + + +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Disable ADC end of single conversion interrupt on group regular */ +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Note: Overrun interrupt was enabled with EOC interrupt in */ +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* HAL_ADC_Start_IT(), but is not disabled here because can be used */ +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* by overrun IRQ process below. */ +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC); +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC state */ +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY); +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY)) +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** SET_BIT(hadc->State, HAL_ADC_STATE_READY); +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Conversion complete callback */ +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_ConvCpltCallback(hadc); +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** else +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Call DMA error callback */ +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->DMA_Handle->XferErrorCallback(hdma); +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief DMA half transfer complete callback. +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified DMA module. +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval None +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** static void ADC_MultiModeDMAHalfConvCplt(DMA_HandleTypeDef *hdma) +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Conversion complete callback */ +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_ConvHalfCpltCallback(hadc); +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /** +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @brief DMA error callback +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * the configuration information for the specified DMA module. +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** * @retval None +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** */ +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** static void ADC_MultiModeDMAError(DMA_HandleTypeDef *hdma) +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 28 .loc 1 1049 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 .loc 1 1049 1 is_stmt 0 view .LVU1 + 33 0000 08B5 push {r3, lr} + 34 .LCFI0: + 35 .cfi_def_cfa_offset 8 + ARM GAS /tmp/ccfOJcl9.s page 20 + + + 36 .cfi_offset 3, -8 + 37 .cfi_offset 14, -4 +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + 38 .loc 1 1050 5 is_stmt 1 view .LVU2 + 39 .loc 1 1050 24 is_stmt 0 view .LVU3 + 40 0002 806B ldr r0, [r0, #56] + 41 .LVL1: +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->State= HAL_ADC_STATE_ERROR_DMA; + 42 .loc 1 1051 5 is_stmt 1 view .LVU4 + 43 .loc 1 1051 16 is_stmt 0 view .LVU5 + 44 0004 4023 movs r3, #64 + 45 0006 0364 str r3, [r0, #64] +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Set ADC error code to DMA error */ +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->ErrorCode |= HAL_ADC_ERROR_DMA; + 46 .loc 1 1053 5 is_stmt 1 view .LVU6 + 47 .loc 1 1053 21 is_stmt 0 view .LVU7 + 48 0008 436C ldr r3, [r0, #68] + 49 000a 43F00403 orr r3, r3, #4 + 50 000e 4364 str r3, [r0, #68] +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_ErrorCallback(hadc); + 51 .loc 1 1054 5 is_stmt 1 view .LVU8 + 52 0010 FFF7FEFF bl HAL_ADC_ErrorCallback + 53 .LVL2: +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 54 .loc 1 1055 1 is_stmt 0 view .LVU9 + 55 0014 08BD pop {r3, pc} + 56 .cfi_endproc + 57 .LFE155: + 59 .section .text.ADC_MultiModeDMAHalfConvCplt,"ax",%progbits + 60 .align 1 + 61 .syntax unified + 62 .thumb + 63 .thumb_func + 64 .fpu fpv5-d16 + 66 ADC_MultiModeDMAHalfConvCplt: + 67 .LVL3: + 68 .LFB154: +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + 69 .loc 1 1036 1 is_stmt 1 view -0 + 70 .cfi_startproc + 71 @ args = 0, pretend = 0, frame = 0 + 72 @ frame_needed = 0, uses_anonymous_args = 0 +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC_HandleTypeDef* hadc = ( ADC_HandleTypeDef* )((DMA_HandleTypeDef* )hdma)->Parent; + 73 .loc 1 1036 1 is_stmt 0 view .LVU11 + 74 0000 08B5 push {r3, lr} + 75 .LCFI1: + 76 .cfi_def_cfa_offset 8 + 77 .cfi_offset 3, -8 + 78 .cfi_offset 14, -4 +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Conversion complete callback */ + 79 .loc 1 1037 5 is_stmt 1 view .LVU12 + 80 .LVL4: +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 81 .loc 1 1039 5 view .LVU13 + 82 0002 806B ldr r0, [r0, #56] + 83 .LVL5: +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + ARM GAS /tmp/ccfOJcl9.s page 21 + + + 84 .loc 1 1039 5 is_stmt 0 view .LVU14 + 85 0004 FFF7FEFF bl HAL_ADC_ConvHalfCpltCallback + 86 .LVL6: +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 87 .loc 1 1040 1 view .LVU15 + 88 0008 08BD pop {r3, pc} + 89 .cfi_endproc + 90 .LFE154: + 92 .section .text.ADC_MultiModeDMAConvCplt,"ax",%progbits + 93 .align 1 + 94 .syntax unified + 95 .thumb + 96 .thumb_func + 97 .fpu fpv5-d16 + 99 ADC_MultiModeDMAConvCplt: + 100 .LVL7: + 101 .LFB153: + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Retrieve ADC handle corresponding to current DMA handle */ + 102 .loc 1 983 1 is_stmt 1 view -0 + 103 .cfi_startproc + 104 @ args = 0, pretend = 0, frame = 0 + 105 @ frame_needed = 0, uses_anonymous_args = 0 + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Retrieve ADC handle corresponding to current DMA handle */ + 106 .loc 1 983 1 is_stmt 0 view .LVU17 + 107 0000 08B5 push {r3, lr} + 108 .LCFI2: + 109 .cfi_def_cfa_offset 8 + 110 .cfi_offset 3, -8 + 111 .cfi_offset 14, -4 + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 112 .loc 1 985 3 is_stmt 1 view .LVU18 + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 113 .loc 1 985 22 is_stmt 0 view .LVU19 + 114 0002 836B ldr r3, [r0, #56] + 115 .LVL8: + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 116 .loc 1 988 3 is_stmt 1 view .LVU20 + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 117 .loc 1 988 7 is_stmt 0 view .LVU21 + 118 0004 1A6C ldr r2, [r3, #64] + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 119 .loc 1 988 6 view .LVU22 + 120 0006 12F0500F tst r2, #80 + 121 000a 26D1 bne .L6 + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 122 .loc 1 991 5 is_stmt 1 view .LVU23 + 123 000c 1A6C ldr r2, [r3, #64] + 124 000e 42F40072 orr r2, r2, #512 + 125 0012 1A64 str r2, [r3, #64] + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 126 .loc 1 999 5 view .LVU24 + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 127 .loc 1 999 8 is_stmt 0 view .LVU25 + 128 0014 1A68 ldr r2, [r3] + 129 0016 9168 ldr r1, [r2, #8] + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 130 .loc 1 999 7 view .LVU26 + ARM GAS /tmp/ccfOJcl9.s page 22 + + + 131 0018 11F0405F tst r1, #805306368 + 132 001c 19D1 bne .L7 +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + 133 .loc 1 1000 19 discriminator 1 view .LVU27 + 134 001e 9969 ldr r1, [r3, #24] + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (hadc->Init.ContinuousConvMode == DISABLE) && + 135 .loc 1 999 62 discriminator 1 view .LVU28 + 136 0020 B9B9 cbnz r1, .L7 +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + 137 .loc 1 1001 9 view .LVU29 + 138 0022 D16A ldr r1, [r2, #44] +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) || + 139 .loc 1 1000 62 view .LVU30 + 140 0024 11F4700F tst r1, #15728640 + 141 0028 03D0 beq .L8 +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 142 .loc 1 1002 9 view .LVU31 + 143 002a 9168 ldr r1, [r2, #8] +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) ) + 144 .loc 1 1001 58 view .LVU32 + 145 002c 11F4806F tst r1, #1024 + 146 0030 0FD1 bne .L7 + 147 .L8: +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 148 .loc 1 1008 7 is_stmt 1 view .LVU33 + 149 0032 5168 ldr r1, [r2, #4] + 150 0034 21F02001 bic r1, r1, #32 + 151 0038 5160 str r1, [r2, #4] +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 152 .loc 1 1011 7 view .LVU34 + 153 003a 1A6C ldr r2, [r3, #64] + 154 003c 22F48072 bic r2, r2, #256 + 155 0040 1A64 str r2, [r3, #64] +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 156 .loc 1 1013 7 view .LVU35 +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 157 .loc 1 1013 11 is_stmt 0 view .LVU36 + 158 0042 1A6C ldr r2, [r3, #64] +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 159 .loc 1 1013 10 view .LVU37 + 160 0044 12F4805F tst r2, #4096 + 161 0048 03D1 bne .L7 +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 162 .loc 1 1015 9 is_stmt 1 view .LVU38 + 163 004a 1A6C ldr r2, [r3, #64] + 164 004c 42F00102 orr r2, r2, #1 + 165 0050 1A64 str r2, [r3, #64] + 166 .L7: +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 167 .loc 1 1020 5 view .LVU39 + 168 0052 1846 mov r0, r3 + 169 .LVL9: +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 170 .loc 1 1020 5 is_stmt 0 view .LVU40 + 171 0054 FFF7FEFF bl HAL_ADC_ConvCpltCallback + 172 .LVL10: + 173 .L5: + ARM GAS /tmp/ccfOJcl9.s page 23 + + +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 174 .loc 1 1027 1 view .LVU41 + 175 0058 08BD pop {r3, pc} + 176 .LVL11: + 177 .L6: +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 178 .loc 1 1025 5 is_stmt 1 view .LVU42 +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 179 .loc 1 1025 9 is_stmt 0 view .LVU43 + 180 005a 9B6B ldr r3, [r3, #56] + 181 .LVL12: +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 182 .loc 1 1025 21 view .LVU44 + 183 005c DB6C ldr r3, [r3, #76] +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 184 .loc 1 1025 5 view .LVU45 + 185 005e 9847 blx r3 + 186 .LVL13: +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 187 .loc 1 1027 1 view .LVU46 + 188 0060 FAE7 b .L5 + 189 .cfi_endproc + 190 .LFE153: + 192 .section .text.HAL_ADCEx_InjectedStart,"ax",%progbits + 193 .align 1 + 194 .global HAL_ADCEx_InjectedStart + 195 .syntax unified + 196 .thumb + 197 .thumb_func + 198 .fpu fpv5-d16 + 200 HAL_ADCEx_InjectedStart: + 201 .LVL14: + 202 .LFB141: + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t counter = 0; + 203 .loc 1 148 1 is_stmt 1 view -0 + 204 .cfi_startproc + 205 @ args = 0, pretend = 0, frame = 8 + 206 @ frame_needed = 0, uses_anonymous_args = 0 + 207 @ link register save eliminated. + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t counter = 0; + 208 .loc 1 148 1 is_stmt 0 view .LVU48 + 209 0000 82B0 sub sp, sp, #8 + 210 .LCFI3: + 211 .cfi_def_cfa_offset 8 + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t tmp1 = 0, tmp2 = 0; + 212 .loc 1 149 3 is_stmt 1 view .LVU49 + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t tmp1 = 0, tmp2 = 0; + 213 .loc 1 149 17 is_stmt 0 view .LVU50 + 214 0002 0023 movs r3, #0 + 215 0004 0193 str r3, [sp, #4] + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 216 .loc 1 150 3 is_stmt 1 view .LVU51 + 217 .LVL15: + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 218 .loc 1 153 3 view .LVU52 + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 219 .loc 1 153 3 view .LVU53 + ARM GAS /tmp/ccfOJcl9.s page 24 + + + 220 0006 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 221 000a 012B cmp r3, #1 + 222 000c 65D0 beq .L19 + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 223 .loc 1 153 3 discriminator 2 view .LVU54 + 224 000e 0123 movs r3, #1 + 225 0010 80F83C30 strb r3, [r0, #60] + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 226 .loc 1 153 3 discriminator 2 view .LVU55 + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 227 .loc 1 159 3 discriminator 2 view .LVU56 + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 228 .loc 1 159 11 is_stmt 0 discriminator 2 view .LVU57 + 229 0014 0368 ldr r3, [r0] + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 230 .loc 1 159 21 discriminator 2 view .LVU58 + 231 0016 9A68 ldr r2, [r3, #8] + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 232 .loc 1 159 5 discriminator 2 view .LVU59 + 233 0018 12F0010F tst r2, #1 + 234 001c 13D1 bne .L13 + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 235 .loc 1 162 5 is_stmt 1 view .LVU60 + 236 001e 9A68 ldr r2, [r3, #8] + 237 0020 42F00102 orr r2, r2, #1 + 238 0024 9A60 str r2, [r3, #8] + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 239 .loc 1 166 5 view .LVU61 + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 240 .loc 1 166 53 is_stmt 0 view .LVU62 + 241 0026 304B ldr r3, .L25 + 242 0028 1B68 ldr r3, [r3] + 243 002a 304A ldr r2, .L25+4 + 244 002c A2FB0323 umull r2, r3, r2, r3 + 245 0030 9B0C lsrs r3, r3, #18 + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 246 .loc 1 166 34 view .LVU63 + 247 0032 03EB4303 add r3, r3, r3, lsl #1 + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 248 .loc 1 166 13 view .LVU64 + 249 0036 0193 str r3, [sp, #4] + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 250 .loc 1 167 5 is_stmt 1 view .LVU65 + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 251 .loc 1 167 10 is_stmt 0 view .LVU66 + 252 0038 02E0 b .L14 + 253 .L15: + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 254 .loc 1 169 7 is_stmt 1 view .LVU67 + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 255 .loc 1 169 14 is_stmt 0 view .LVU68 + 256 003a 019B ldr r3, [sp, #4] + 257 003c 013B subs r3, r3, #1 + 258 003e 0193 str r3, [sp, #4] + 259 .L14: + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 260 .loc 1 167 10 is_stmt 1 view .LVU69 + ARM GAS /tmp/ccfOJcl9.s page 25 + + + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 261 .loc 1 167 19 is_stmt 0 view .LVU70 + 262 0040 019B ldr r3, [sp, #4] + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 263 .loc 1 167 10 view .LVU71 + 264 0042 002B cmp r3, #0 + 265 0044 F9D1 bne .L15 + 266 .L13: + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 267 .loc 1 174 3 is_stmt 1 view .LVU72 + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 268 .loc 1 174 6 is_stmt 0 view .LVU73 + 269 0046 0268 ldr r2, [r0] + 270 0048 9368 ldr r3, [r2, #8] + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 271 .loc 1 174 5 view .LVU74 + 272 004a 13F0010F tst r3, #1 + 273 004e 39D0 beq .L16 + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_INJ_EOC, + 274 .loc 1 179 5 is_stmt 1 view .LVU75 + 275 0050 016C ldr r1, [r0, #64] + 276 0052 274B ldr r3, .L25+8 + 277 0054 0B40 ands r3, r3, r1 + 278 0056 43F48053 orr r3, r3, #4096 + 279 005a 0364 str r3, [r0, #64] + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 280 .loc 1 187 5 view .LVU76 + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 281 .loc 1 187 9 is_stmt 0 view .LVU77 + 282 005c 036C ldr r3, [r0, #64] + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 283 .loc 1 187 8 view .LVU78 + 284 005e 13F4807F tst r3, #256 + 285 0062 01D1 bne .L17 + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 286 .loc 1 190 7 is_stmt 1 view .LVU79 + 287 0064 0023 movs r3, #0 + 288 0066 4364 str r3, [r0, #68] + 289 .L17: + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 290 .loc 1 196 5 view .LVU80 + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 291 .loc 1 196 5 view .LVU81 + 292 0068 0023 movs r3, #0 + 293 006a 80F83C30 strb r3, [r0, #60] + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 294 .loc 1 196 5 view .LVU82 + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 295 .loc 1 200 5 view .LVU83 + 296 006e 6FF00403 mvn r3, #4 + 297 0072 1360 str r3, [r2] + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 298 .loc 1 203 5 view .LVU84 + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 299 .loc 1 203 8 is_stmt 0 view .LVU85 + 300 0074 1F4B ldr r3, .L25+12 + 301 0076 5B68 ldr r3, [r3, #4] + ARM GAS /tmp/ccfOJcl9.s page 26 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 302 .loc 1 203 7 view .LVU86 + 303 0078 13F01F0F tst r3, #31 + 304 007c 0ED1 bne .L18 + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 305 .loc 1 205 7 is_stmt 1 view .LVU87 + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 306 .loc 1 205 14 is_stmt 0 view .LVU88 + 307 007e 0168 ldr r1, [r0] + 308 0080 8A68 ldr r2, [r1, #8] + 309 0082 02F44012 and r2, r2, #3145728 + 310 .LVL16: + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(tmp1 && tmp2) + 311 .loc 1 206 7 is_stmt 1 view .LVU89 + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(tmp1 && tmp2) + 312 .loc 1 206 14 is_stmt 0 view .LVU90 + 313 0086 4B68 ldr r3, [r1, #4] + 314 0088 03F48063 and r3, r3, #1024 + 315 .LVL17: + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 316 .loc 1 207 7 is_stmt 1 view .LVU91 + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 317 .loc 1 207 9 is_stmt 0 view .LVU92 + 318 008c 1343 orrs r3, r2, r3 + 319 .LVL18: + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 320 .loc 1 207 9 view .LVU93 + 321 008e 26D1 bne .L20 + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 322 .loc 1 210 9 is_stmt 1 view .LVU94 + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 323 .loc 1 210 29 is_stmt 0 view .LVU95 + 324 0090 8B68 ldr r3, [r1, #8] + 325 0092 43F48003 orr r3, r3, #4194304 + 326 0096 8B60 str r3, [r1, #8] + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 327 .loc 1 234 10 view .LVU96 + 328 0098 0020 movs r0, #0 + 329 .LVL19: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 330 .loc 1 234 10 view .LVU97 + 331 009a 1CE0 b .L12 + 332 .LVL20: + 333 .L18: + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 334 .loc 1 215 7 is_stmt 1 view .LVU98 + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 335 .loc 1 215 14 is_stmt 0 view .LVU99 + 336 009c 0368 ldr r3, [r0] + 337 009e 9968 ldr r1, [r3, #8] + 338 00a0 01F44011 and r1, r1, #3145728 + 339 .LVL21: + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((hadc->Instance == ADC1) && tmp1 && tmp2) + 340 .loc 1 216 7 is_stmt 1 view .LVU100 + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((hadc->Instance == ADC1) && tmp1 && tmp2) + 341 .loc 1 216 14 is_stmt 0 view .LVU101 + 342 00a4 5A68 ldr r2, [r3, #4] + ARM GAS /tmp/ccfOJcl9.s page 27 + + + 343 00a6 02F48062 and r2, r2, #1024 + 344 .LVL22: + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 345 .loc 1 217 7 is_stmt 1 view .LVU102 + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 346 .loc 1 217 9 is_stmt 0 view .LVU103 + 347 00aa 1348 ldr r0, .L25+16 + 348 .LVL23: + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 349 .loc 1 217 9 view .LVU104 + 350 00ac 8342 cmp r3, r0 + 351 00ae 01D0 beq .L24 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 352 .loc 1 234 10 view .LVU105 + 353 00b0 0020 movs r0, #0 + 354 00b2 10E0 b .L12 + 355 .L24: + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 356 .loc 1 217 43 discriminator 1 view .LVU106 + 357 00b4 0A43 orrs r2, r1, r2 + 358 .LVL24: + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 359 .loc 1 217 43 discriminator 1 view .LVU107 + 360 00b6 14D1 bne .L22 + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 361 .loc 1 220 9 is_stmt 1 view .LVU108 + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 362 .loc 1 220 29 is_stmt 0 view .LVU109 + 363 00b8 9A68 ldr r2, [r3, #8] + 364 00ba 42F48002 orr r2, r2, #4194304 + 365 00be 9A60 str r2, [r3, #8] + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 366 .loc 1 234 10 view .LVU110 + 367 00c0 0020 movs r0, #0 + 368 00c2 08E0 b .L12 + 369 .LVL25: + 370 .L16: + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 371 .loc 1 227 5 is_stmt 1 view .LVU111 + 372 00c4 036C ldr r3, [r0, #64] + 373 00c6 43F01003 orr r3, r3, #16 + 374 00ca 0364 str r3, [r0, #64] + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 375 .loc 1 230 5 view .LVU112 + 376 00cc 436C ldr r3, [r0, #68] + 377 00ce 43F00103 orr r3, r3, #1 + 378 00d2 4364 str r3, [r0, #68] + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 379 .loc 1 234 10 is_stmt 0 view .LVU113 + 380 00d4 0020 movs r0, #0 + 381 .LVL26: + 382 .L12: + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 383 .loc 1 235 1 view .LVU114 + 384 00d6 02B0 add sp, sp, #8 + 385 .LCFI4: + 386 .cfi_remember_state + ARM GAS /tmp/ccfOJcl9.s page 28 + + + 387 .cfi_def_cfa_offset 0 + 388 @ sp needed + 389 00d8 7047 bx lr + 390 .LVL27: + 391 .L19: + 392 .LCFI5: + 393 .cfi_restore_state + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 394 .loc 1 153 3 view .LVU115 + 395 00da 0220 movs r0, #2 + 396 .LVL28: + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 397 .loc 1 153 3 view .LVU116 + 398 00dc FBE7 b .L12 + 399 .LVL29: + 400 .L20: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 401 .loc 1 234 10 view .LVU117 + 402 00de 0020 movs r0, #0 + 403 .LVL30: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 404 .loc 1 234 10 view .LVU118 + 405 00e0 F9E7 b .L12 + 406 .LVL31: + 407 .L22: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 408 .loc 1 234 10 view .LVU119 + 409 00e2 0020 movs r0, #0 + 410 00e4 F7E7 b .L12 + 411 .L26: + 412 00e6 00BF .align 2 + 413 .L25: + 414 00e8 00000000 .word SystemCoreClock + 415 00ec 83DE1B43 .word 1125899907 + 416 00f0 FECFFFFF .word -12290 + 417 00f4 00230140 .word 1073816320 + 418 00f8 00200140 .word 1073815552 + 419 .cfi_endproc + 420 .LFE141: + 422 .section .text.HAL_ADCEx_InjectedStart_IT,"ax",%progbits + 423 .align 1 + 424 .global HAL_ADCEx_InjectedStart_IT + 425 .syntax unified + 426 .thumb + 427 .thumb_func + 428 .fpu fpv5-d16 + 430 HAL_ADCEx_InjectedStart_IT: + 431 .LVL32: + 432 .LFB142: + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t counter = 0; + 433 .loc 1 245 1 is_stmt 1 view -0 + 434 .cfi_startproc + 435 @ args = 0, pretend = 0, frame = 8 + 436 @ frame_needed = 0, uses_anonymous_args = 0 + 437 @ link register save eliminated. + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t counter = 0; + 438 .loc 1 245 1 is_stmt 0 view .LVU121 + ARM GAS /tmp/ccfOJcl9.s page 29 + + + 439 0000 82B0 sub sp, sp, #8 + 440 .LCFI6: + 441 .cfi_def_cfa_offset 8 + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t tmp1 = 0, tmp2 = 0; + 442 .loc 1 246 3 is_stmt 1 view .LVU122 + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t tmp1 = 0, tmp2 = 0; + 443 .loc 1 246 17 is_stmt 0 view .LVU123 + 444 0002 0023 movs r3, #0 + 445 0004 0193 str r3, [sp, #4] + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 446 .loc 1 247 3 is_stmt 1 view .LVU124 + 447 .LVL33: + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 448 .loc 1 250 3 view .LVU125 + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 449 .loc 1 250 3 view .LVU126 + 450 0006 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 451 000a 012B cmp r3, #1 + 452 000c 6AD0 beq .L35 + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 453 .loc 1 250 3 discriminator 2 view .LVU127 + 454 000e 0123 movs r3, #1 + 455 0010 80F83C30 strb r3, [r0, #60] + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 456 .loc 1 250 3 discriminator 2 view .LVU128 + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 457 .loc 1 256 3 discriminator 2 view .LVU129 + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 458 .loc 1 256 11 is_stmt 0 discriminator 2 view .LVU130 + 459 0014 0368 ldr r3, [r0] + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 460 .loc 1 256 21 discriminator 2 view .LVU131 + 461 0016 9A68 ldr r2, [r3, #8] + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 462 .loc 1 256 5 discriminator 2 view .LVU132 + 463 0018 12F0010F tst r2, #1 + 464 001c 13D1 bne .L29 + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 465 .loc 1 259 5 is_stmt 1 view .LVU133 + 466 001e 9A68 ldr r2, [r3, #8] + 467 0020 42F00102 orr r2, r2, #1 + 468 0024 9A60 str r2, [r3, #8] + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 469 .loc 1 263 5 view .LVU134 + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 470 .loc 1 263 53 is_stmt 0 view .LVU135 + 471 0026 324B ldr r3, .L41 + 472 0028 1B68 ldr r3, [r3] + 473 002a 324A ldr r2, .L41+4 + 474 002c A2FB0323 umull r2, r3, r2, r3 + 475 0030 9B0C lsrs r3, r3, #18 + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 476 .loc 1 263 34 view .LVU136 + 477 0032 03EB4303 add r3, r3, r3, lsl #1 + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 478 .loc 1 263 13 view .LVU137 + 479 0036 0193 str r3, [sp, #4] + ARM GAS /tmp/ccfOJcl9.s page 30 + + + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 480 .loc 1 264 5 is_stmt 1 view .LVU138 + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 481 .loc 1 264 10 is_stmt 0 view .LVU139 + 482 0038 02E0 b .L30 + 483 .L31: + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 484 .loc 1 266 7 is_stmt 1 view .LVU140 + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 485 .loc 1 266 14 is_stmt 0 view .LVU141 + 486 003a 019B ldr r3, [sp, #4] + 487 003c 013B subs r3, r3, #1 + 488 003e 0193 str r3, [sp, #4] + 489 .L30: + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 490 .loc 1 264 10 is_stmt 1 view .LVU142 + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 491 .loc 1 264 19 is_stmt 0 view .LVU143 + 492 0040 019B ldr r3, [sp, #4] + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 493 .loc 1 264 10 view .LVU144 + 494 0042 002B cmp r3, #0 + 495 0044 F9D1 bne .L31 + 496 .L29: + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 497 .loc 1 271 3 is_stmt 1 view .LVU145 + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 498 .loc 1 271 6 is_stmt 0 view .LVU146 + 499 0046 0268 ldr r2, [r0] + 500 0048 9368 ldr r3, [r2, #8] + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 501 .loc 1 271 5 view .LVU147 + 502 004a 13F0010F tst r3, #1 + 503 004e 3ED0 beq .L32 + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_INJ_EOC, + 504 .loc 1 276 5 is_stmt 1 view .LVU148 + 505 0050 016C ldr r1, [r0, #64] + 506 0052 294B ldr r3, .L41+8 + 507 0054 0B40 ands r3, r3, r1 + 508 0056 43F48053 orr r3, r3, #4096 + 509 005a 0364 str r3, [r0, #64] + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 510 .loc 1 284 5 view .LVU149 + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 511 .loc 1 284 9 is_stmt 0 view .LVU150 + 512 005c 036C ldr r3, [r0, #64] + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 513 .loc 1 284 8 view .LVU151 + 514 005e 13F4807F tst r3, #256 + 515 0062 01D1 bne .L33 + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 516 .loc 1 287 7 is_stmt 1 view .LVU152 + 517 0064 0023 movs r3, #0 + 518 0066 4364 str r3, [r0, #68] + 519 .L33: + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 520 .loc 1 293 5 view .LVU153 + ARM GAS /tmp/ccfOJcl9.s page 31 + + + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 521 .loc 1 293 5 view .LVU154 + 522 0068 0023 movs r3, #0 + 523 006a 80F83C30 strb r3, [r0, #60] + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 524 .loc 1 293 5 view .LVU155 + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 525 .loc 1 297 5 view .LVU156 + 526 006e 6FF00403 mvn r3, #4 + 527 0072 1360 str r3, [r2] + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 528 .loc 1 300 5 view .LVU157 + 529 0074 0268 ldr r2, [r0] + 530 0076 5368 ldr r3, [r2, #4] + 531 0078 43F08003 orr r3, r3, #128 + 532 007c 5360 str r3, [r2, #4] + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 533 .loc 1 303 5 view .LVU158 + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 534 .loc 1 303 8 is_stmt 0 view .LVU159 + 535 007e 1F4B ldr r3, .L41+12 + 536 0080 5B68 ldr r3, [r3, #4] + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 537 .loc 1 303 7 view .LVU160 + 538 0082 13F01F0F tst r3, #31 + 539 0086 0ED1 bne .L34 + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 540 .loc 1 305 7 is_stmt 1 view .LVU161 + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 541 .loc 1 305 14 is_stmt 0 view .LVU162 + 542 0088 0168 ldr r1, [r0] + 543 008a 8A68 ldr r2, [r1, #8] + 544 008c 02F44012 and r2, r2, #3145728 + 545 .LVL34: + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(tmp1 && tmp2) + 546 .loc 1 306 7 is_stmt 1 view .LVU163 + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if(tmp1 && tmp2) + 547 .loc 1 306 14 is_stmt 0 view .LVU164 + 548 0090 4B68 ldr r3, [r1, #4] + 549 0092 03F48063 and r3, r3, #1024 + 550 .LVL35: + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 551 .loc 1 307 7 is_stmt 1 view .LVU165 + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 552 .loc 1 307 9 is_stmt 0 view .LVU166 + 553 0096 1343 orrs r3, r2, r3 + 554 .LVL36: + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 555 .loc 1 307 9 view .LVU167 + 556 0098 26D1 bne .L36 + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 557 .loc 1 310 9 is_stmt 1 view .LVU168 + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 558 .loc 1 310 29 is_stmt 0 view .LVU169 + 559 009a 8B68 ldr r3, [r1, #8] + 560 009c 43F48003 orr r3, r3, #4194304 + 561 00a0 8B60 str r3, [r1, #8] + ARM GAS /tmp/ccfOJcl9.s page 32 + + + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 562 .loc 1 334 10 view .LVU170 + 563 00a2 0020 movs r0, #0 + 564 .LVL37: + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 565 .loc 1 334 10 view .LVU171 + 566 00a4 1CE0 b .L28 + 567 .LVL38: + 568 .L34: + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 569 .loc 1 315 7 is_stmt 1 view .LVU172 + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO); + 570 .loc 1 315 14 is_stmt 0 view .LVU173 + 571 00a6 0368 ldr r3, [r0] + 572 00a8 9968 ldr r1, [r3, #8] + 573 00aa 01F44011 and r1, r1, #3145728 + 574 .LVL39: + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((hadc->Instance == ADC1) && tmp1 && tmp2) + 575 .loc 1 316 7 is_stmt 1 view .LVU174 + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** if((hadc->Instance == ADC1) && tmp1 && tmp2) + 576 .loc 1 316 14 is_stmt 0 view .LVU175 + 577 00ae 5A68 ldr r2, [r3, #4] + 578 00b0 02F48062 and r2, r2, #1024 + 579 .LVL40: + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 580 .loc 1 317 7 is_stmt 1 view .LVU176 + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 581 .loc 1 317 9 is_stmt 0 view .LVU177 + 582 00b4 1248 ldr r0, .L41+16 + 583 .LVL41: + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 584 .loc 1 317 9 view .LVU178 + 585 00b6 8342 cmp r3, r0 + 586 00b8 01D0 beq .L40 + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 587 .loc 1 334 10 view .LVU179 + 588 00ba 0020 movs r0, #0 + 589 00bc 10E0 b .L28 + 590 .L40: + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 591 .loc 1 317 43 discriminator 1 view .LVU180 + 592 00be 0A43 orrs r2, r1, r2 + 593 .LVL42: + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 594 .loc 1 317 43 discriminator 1 view .LVU181 + 595 00c0 14D1 bne .L38 + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 596 .loc 1 320 9 is_stmt 1 view .LVU182 + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 597 .loc 1 320 29 is_stmt 0 view .LVU183 + 598 00c2 9A68 ldr r2, [r3, #8] + 599 00c4 42F48002 orr r2, r2, #4194304 + 600 00c8 9A60 str r2, [r3, #8] + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 601 .loc 1 334 10 view .LVU184 + 602 00ca 0020 movs r0, #0 + 603 00cc 08E0 b .L28 + ARM GAS /tmp/ccfOJcl9.s page 33 + + + 604 .LVL43: + 605 .L32: + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 606 .loc 1 327 5 is_stmt 1 view .LVU185 + 607 00ce 036C ldr r3, [r0, #64] + 608 00d0 43F01003 orr r3, r3, #16 + 609 00d4 0364 str r3, [r0, #64] + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 610 .loc 1 330 5 view .LVU186 + 611 00d6 436C ldr r3, [r0, #68] + 612 00d8 43F00103 orr r3, r3, #1 + 613 00dc 4364 str r3, [r0, #68] + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 614 .loc 1 334 10 is_stmt 0 view .LVU187 + 615 00de 0020 movs r0, #0 + 616 .LVL44: + 617 .L28: + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 618 .loc 1 335 1 view .LVU188 + 619 00e0 02B0 add sp, sp, #8 + 620 .LCFI7: + 621 .cfi_remember_state + 622 .cfi_def_cfa_offset 0 + 623 @ sp needed + 624 00e2 7047 bx lr + 625 .LVL45: + 626 .L35: + 627 .LCFI8: + 628 .cfi_restore_state + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 629 .loc 1 250 3 view .LVU189 + 630 00e4 0220 movs r0, #2 + 631 .LVL46: + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 632 .loc 1 250 3 view .LVU190 + 633 00e6 FBE7 b .L28 + 634 .LVL47: + 635 .L36: + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 636 .loc 1 334 10 view .LVU191 + 637 00e8 0020 movs r0, #0 + 638 .LVL48: + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 639 .loc 1 334 10 view .LVU192 + 640 00ea F9E7 b .L28 + 641 .LVL49: + 642 .L38: + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 643 .loc 1 334 10 view .LVU193 + 644 00ec 0020 movs r0, #0 + 645 00ee F7E7 b .L28 + 646 .L42: + 647 .align 2 + 648 .L41: + 649 00f0 00000000 .word SystemCoreClock + 650 00f4 83DE1B43 .word 1125899907 + 651 00f8 FECFFFFF .word -12290 + ARM GAS /tmp/ccfOJcl9.s page 34 + + + 652 00fc 00230140 .word 1073816320 + 653 0100 00200140 .word 1073815552 + 654 .cfi_endproc + 655 .LFE142: + 657 .section .text.HAL_ADCEx_InjectedStop,"ax",%progbits + 658 .align 1 + 659 .global HAL_ADCEx_InjectedStop + 660 .syntax unified + 661 .thumb + 662 .thumb_func + 663 .fpu fpv5-d16 + 665 HAL_ADCEx_InjectedStop: + 666 .LVL50: + 667 .LFB143: + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 668 .loc 1 350 1 is_stmt 1 view -0 + 669 .cfi_startproc + 670 @ args = 0, pretend = 0, frame = 0 + 671 @ frame_needed = 0, uses_anonymous_args = 0 + 672 @ link register save eliminated. + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 673 .loc 1 350 1 is_stmt 0 view .LVU195 + 674 0000 0346 mov r3, r0 + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 675 .loc 1 351 3 is_stmt 1 view .LVU196 + 676 .LVL51: + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 677 .loc 1 354 3 view .LVU197 + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 678 .loc 1 357 3 view .LVU198 + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 679 .loc 1 357 3 view .LVU199 + 680 0002 90F83C20 ldrb r2, [r0, #60] @ zero_extendqisi2 + 681 0006 012A cmp r2, #1 + 682 0008 27D0 beq .L47 + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 683 .loc 1 357 3 discriminator 2 view .LVU200 + 684 000a 0122 movs r2, #1 + 685 000c 80F83C20 strb r2, [r0, #60] + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 686 .loc 1 357 3 discriminator 2 view .LVU201 + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + 687 .loc 1 365 3 discriminator 2 view .LVU202 + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + 688 .loc 1 365 12 is_stmt 0 discriminator 2 view .LVU203 + 689 0010 026C ldr r2, [r0, #64] + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + 690 .loc 1 365 5 discriminator 2 view .LVU204 + 691 0012 12F4807F tst r2, #256 + 692 0016 15D1 bne .L45 + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 693 .loc 1 366 6 discriminator 1 view .LVU205 + 694 0018 0268 ldr r2, [r0] + 695 001a 5168 ldr r1, [r2, #4] + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + 696 .loc 1 365 57 discriminator 1 view .LVU206 + 697 001c 11F4806F tst r1, #1024 + ARM GAS /tmp/ccfOJcl9.s page 35 + + + 698 0020 10D1 bne .L45 + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 699 .loc 1 370 5 is_stmt 1 view .LVU207 + 700 0022 9168 ldr r1, [r2, #8] + 701 0024 21F00101 bic r1, r1, #1 + 702 0028 9160 str r1, [r2, #8] + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 703 .loc 1 373 5 view .LVU208 + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 704 .loc 1 373 8 is_stmt 0 view .LVU209 + 705 002a 0268 ldr r2, [r0] + 706 002c 9268 ldr r2, [r2, #8] + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 707 .loc 1 373 7 view .LVU210 + 708 002e 12F0010F tst r2, #1 + 709 0032 10D1 bne .L48 + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 710 .loc 1 376 7 is_stmt 1 view .LVU211 + 711 0034 016C ldr r1, [r0, #64] + 712 0036 0A4A ldr r2, .L49 + 713 0038 0A40 ands r2, r2, r1 + 714 003a 42F00102 orr r2, r2, #1 + 715 003e 0264 str r2, [r0, #64] + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 716 .loc 1 351 21 is_stmt 0 view .LVU212 + 717 0040 0020 movs r0, #0 + 718 .LVL52: + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 719 .loc 1 351 21 view .LVU213 + 720 0042 04E0 b .L46 + 721 .LVL53: + 722 .L45: + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 723 .loc 1 384 5 is_stmt 1 view .LVU214 + 724 0044 1A6C ldr r2, [r3, #64] + 725 0046 42F02002 orr r2, r2, #32 + 726 004a 1A64 str r2, [r3, #64] + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 727 .loc 1 386 5 view .LVU215 + 728 .LVL54: + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 729 .loc 1 386 20 is_stmt 0 view .LVU216 + 730 004c 0120 movs r0, #1 + 731 .LVL55: + 732 .L46: + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 733 .loc 1 390 3 is_stmt 1 view .LVU217 + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 734 .loc 1 390 3 view .LVU218 + 735 004e 0022 movs r2, #0 + 736 0050 83F83C20 strb r2, [r3, #60] + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 737 .loc 1 390 3 view .LVU219 + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 738 .loc 1 393 3 view .LVU220 + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 739 .loc 1 393 10 is_stmt 0 view .LVU221 + ARM GAS /tmp/ccfOJcl9.s page 36 + + + 740 0054 7047 bx lr + 741 .LVL56: + 742 .L48: + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 743 .loc 1 351 21 view .LVU222 + 744 0056 0020 movs r0, #0 + 745 .LVL57: + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 746 .loc 1 351 21 view .LVU223 + 747 0058 F9E7 b .L46 + 748 .LVL58: + 749 .L47: + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 750 .loc 1 357 3 view .LVU224 + 751 005a 0220 movs r0, #2 + 752 .LVL59: + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 753 .loc 1 394 1 view .LVU225 + 754 005c 7047 bx lr + 755 .L50: + 756 005e 00BF .align 2 + 757 .L49: + 758 0060 FEEEFFFF .word -4354 + 759 .cfi_endproc + 760 .LFE143: + 762 .section .text.HAL_ADCEx_InjectedPollForConversion,"ax",%progbits + 763 .align 1 + 764 .global HAL_ADCEx_InjectedPollForConversion + 765 .syntax unified + 766 .thumb + 767 .thumb_func + 768 .fpu fpv5-d16 + 770 HAL_ADCEx_InjectedPollForConversion: + 771 .LVL60: + 772 .LFB144: + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t tickstart = 0; + 773 .loc 1 404 1 is_stmt 1 view -0 + 774 .cfi_startproc + 775 @ args = 0, pretend = 0, frame = 0 + 776 @ frame_needed = 0, uses_anonymous_args = 0 + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** uint32_t tickstart = 0; + 777 .loc 1 404 1 is_stmt 0 view .LVU227 + 778 0000 70B5 push {r4, r5, r6, lr} + 779 .LCFI9: + 780 .cfi_def_cfa_offset 16 + 781 .cfi_offset 4, -16 + 782 .cfi_offset 5, -12 + 783 .cfi_offset 6, -8 + 784 .cfi_offset 14, -4 + 785 0002 0446 mov r4, r0 + 786 0004 0D46 mov r5, r1 + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 787 .loc 1 405 3 is_stmt 1 view .LVU228 + 788 .LVL61: + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 789 .loc 1 408 3 view .LVU229 + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + ARM GAS /tmp/ccfOJcl9.s page 37 + + + 790 .loc 1 408 15 is_stmt 0 view .LVU230 + 791 0006 FFF7FEFF bl HAL_GetTick + 792 .LVL62: + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 793 .loc 1 408 15 view .LVU231 + 794 000a 0646 mov r6, r0 + 795 .LVL63: + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 796 .loc 1 411 3 is_stmt 1 view .LVU232 + 797 .L53: + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 798 .loc 1 411 8 view .LVU233 + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 799 .loc 1 411 11 is_stmt 0 view .LVU234 + 800 000c 2368 ldr r3, [r4] + 801 000e 1A68 ldr r2, [r3] + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 802 .loc 1 411 8 view .LVU235 + 803 0010 12F0040F tst r2, #4 + 804 0014 15D1 bne .L66 + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 805 .loc 1 414 5 is_stmt 1 view .LVU236 + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 806 .loc 1 414 7 is_stmt 0 view .LVU237 + 807 0016 B5F1FF3F cmp r5, #-1 + 808 001a F7D0 beq .L53 + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 809 .loc 1 416 7 is_stmt 1 view .LVU238 + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 810 .loc 1 416 9 is_stmt 0 view .LVU239 + 811 001c 5DB9 cbnz r5, .L67 + 812 .L54: + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 813 .loc 1 419 9 is_stmt 1 view .LVU240 + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 814 .loc 1 419 14 is_stmt 0 view .LVU241 + 815 001e 2368 ldr r3, [r4] + 816 0020 1B68 ldr r3, [r3] + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 817 .loc 1 419 11 view .LVU242 + 818 0022 13F0040F tst r3, #4 + 819 0026 F1D1 bne .L53 + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 820 .loc 1 421 11 is_stmt 1 view .LVU243 + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Process unlocked */ + 821 .loc 1 421 22 is_stmt 0 view .LVU244 + 822 0028 0423 movs r3, #4 + 823 002a 2364 str r3, [r4, #64] + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return HAL_TIMEOUT; + 824 .loc 1 423 11 is_stmt 1 view .LVU245 + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return HAL_TIMEOUT; + 825 .loc 1 423 11 view .LVU246 + 826 002c 0023 movs r3, #0 + 827 002e 84F83C30 strb r3, [r4, #60] + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** return HAL_TIMEOUT; + 828 .loc 1 423 11 view .LVU247 + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + ARM GAS /tmp/ccfOJcl9.s page 38 + + + 829 .loc 1 424 11 view .LVU248 + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 830 .loc 1 424 18 is_stmt 0 view .LVU249 + 831 0032 0320 movs r0, #3 + 832 0034 32E0 b .L56 + 833 .L67: + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 834 .loc 1 416 28 discriminator 1 view .LVU250 + 835 0036 FFF7FEFF bl HAL_GetTick + 836 .LVL64: + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 837 .loc 1 416 42 discriminator 1 view .LVU251 + 838 003a 801B subs r0, r0, r6 + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 839 .loc 1 416 24 discriminator 1 view .LVU252 + 840 003c A842 cmp r0, r5 + 841 003e E5D9 bls .L53 + 842 0040 EDE7 b .L54 + 843 .L66: + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 844 .loc 1 431 3 is_stmt 1 view .LVU253 + 845 0042 6FF00C02 mvn r2, #12 + 846 0046 1A60 str r2, [r3] + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 847 .loc 1 434 3 view .LVU254 + 848 0048 236C ldr r3, [r4, #64] + 849 004a 43F40053 orr r3, r3, #8192 + 850 004e 2364 str r3, [r4, #64] + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + 851 .loc 1 442 3 view .LVU255 + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + 852 .loc 1 442 6 is_stmt 0 view .LVU256 + 853 0050 2368 ldr r3, [r4] + 854 0052 9A68 ldr r2, [r3, #8] + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + 855 .loc 1 442 5 view .LVU257 + 856 0054 12F4401F tst r2, #3145728 + 857 0058 1FD1 bne .L59 + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) && + 858 .loc 1 443 7 discriminator 1 view .LVU258 + 859 005a 9A6B ldr r2, [r3, #56] + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) || + 860 .loc 1 442 62 discriminator 1 view .LVU259 + 861 005c 12F4401F tst r2, #3145728 + 862 0060 03D0 beq .L58 + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) && + 863 .loc 1 444 7 view .LVU260 + 864 0062 9A68 ldr r2, [r3, #8] + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS) ) && + 865 .loc 1 443 58 view .LVU261 + 866 0064 12F4806F tst r2, #1024 + 867 0068 19D1 bne .L60 + 868 .L58: + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (ADC_IS_SOFTWARE_START_REGULAR(hadc) && + 869 .loc 1 445 7 view .LVU262 + 870 006a 5A68 ldr r2, [r3, #4] + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) && + ARM GAS /tmp/ccfOJcl9.s page 39 + + + 871 .loc 1 444 62 view .LVU263 + 872 006c 12F4806F tst r2, #1024 + 873 0070 17D1 bne .L61 + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (hadc->Init.ContinuousConvMode == DISABLE) ) ) ) + 874 .loc 1 446 8 view .LVU264 + 875 0072 9B68 ldr r3, [r3, #8] + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (ADC_IS_SOFTWARE_START_REGULAR(hadc) && + 876 .loc 1 445 58 view .LVU265 + 877 0074 13F0405F tst r3, #805306368 + 878 0078 15D1 bne .L62 + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 879 .loc 1 447 18 view .LVU266 + 880 007a A369 ldr r3, [r4, #24] + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** (hadc->Init.ContinuousConvMode == DISABLE) ) ) ) + 881 .loc 1 446 50 view .LVU267 + 882 007c ABB9 cbnz r3, .L63 + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 883 .loc 1 450 5 is_stmt 1 view .LVU268 + 884 007e 236C ldr r3, [r4, #64] + 885 0080 23F48053 bic r3, r3, #4096 + 886 0084 2364 str r3, [r4, #64] + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 887 .loc 1 452 5 view .LVU269 + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 888 .loc 1 452 9 is_stmt 0 view .LVU270 + 889 0086 236C ldr r3, [r4, #64] + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 890 .loc 1 452 8 view .LVU271 + 891 0088 13F4807F tst r3, #256 + 892 008c 0FD1 bne .L64 + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 893 .loc 1 454 7 is_stmt 1 view .LVU272 + 894 008e 236C ldr r3, [r4, #64] + 895 0090 43F00103 orr r3, r3, #1 + 896 0094 2364 str r3, [r4, #64] + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 897 .loc 1 459 10 is_stmt 0 view .LVU273 + 898 0096 0020 movs r0, #0 + 899 0098 00E0 b .L56 + 900 .L59: + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 901 .loc 1 459 10 view .LVU274 + 902 009a 0020 movs r0, #0 + 903 .L56: + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 904 .loc 1 460 1 view .LVU275 + 905 009c 70BD pop {r4, r5, r6, pc} + 906 .LVL65: + 907 .L60: + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 908 .loc 1 459 10 view .LVU276 + 909 009e 0020 movs r0, #0 + 910 00a0 FCE7 b .L56 + 911 .L61: + 912 00a2 0020 movs r0, #0 + 913 00a4 FAE7 b .L56 + 914 .L62: + ARM GAS /tmp/ccfOJcl9.s page 40 + + + 915 00a6 0020 movs r0, #0 + 916 00a8 F8E7 b .L56 + 917 .L63: + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 918 .loc 1 459 10 view .LVU277 + 919 00aa 0020 movs r0, #0 + 920 00ac F6E7 b .L56 + 921 .L64: + 922 00ae 0020 movs r0, #0 + 923 00b0 F4E7 b .L56 + 924 .cfi_endproc + 925 .LFE144: + 927 .section .text.HAL_ADCEx_InjectedStop_IT,"ax",%progbits + 928 .align 1 + 929 .global HAL_ADCEx_InjectedStop_IT + 930 .syntax unified + 931 .thumb + 932 .thumb_func + 933 .fpu fpv5-d16 + 935 HAL_ADCEx_InjectedStop_IT: + 936 .LVL66: + 937 .LFB145: + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 938 .loc 1 475 1 is_stmt 1 view -0 + 939 .cfi_startproc + 940 @ args = 0, pretend = 0, frame = 0 + 941 @ frame_needed = 0, uses_anonymous_args = 0 + 942 @ link register save eliminated. + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 943 .loc 1 475 1 is_stmt 0 view .LVU279 + 944 0000 0346 mov r3, r0 + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 945 .loc 1 476 3 is_stmt 1 view .LVU280 + 946 .LVL67: + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 947 .loc 1 479 3 view .LVU281 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 948 .loc 1 482 3 view .LVU282 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 949 .loc 1 482 3 view .LVU283 + 950 0002 90F83C20 ldrb r2, [r0, #60] @ zero_extendqisi2 + 951 0006 012A cmp r2, #1 + 952 0008 2BD0 beq .L72 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 953 .loc 1 482 3 discriminator 2 view .LVU284 + 954 000a 0122 movs r2, #1 + 955 000c 80F83C20 strb r2, [r0, #60] + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 956 .loc 1 482 3 discriminator 2 view .LVU285 + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + 957 .loc 1 490 3 discriminator 2 view .LVU286 + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + 958 .loc 1 490 12 is_stmt 0 discriminator 2 view .LVU287 + 959 0010 026C ldr r2, [r0, #64] + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + 960 .loc 1 490 5 discriminator 2 view .LVU288 + 961 0012 12F4807F tst r2, #256 + ARM GAS /tmp/ccfOJcl9.s page 41 + + + 962 0016 19D1 bne .L70 + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 963 .loc 1 491 6 discriminator 1 view .LVU289 + 964 0018 0268 ldr r2, [r0] + 965 001a 5168 ldr r1, [r2, #4] + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) ) + 966 .loc 1 490 57 discriminator 1 view .LVU290 + 967 001c 11F4806F tst r1, #1024 + 968 0020 14D1 bne .L70 + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 969 .loc 1 495 5 is_stmt 1 view .LVU291 + 970 0022 9168 ldr r1, [r2, #8] + 971 0024 21F00101 bic r1, r1, #1 + 972 0028 9160 str r1, [r2, #8] + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 973 .loc 1 498 5 view .LVU292 + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 974 .loc 1 498 8 is_stmt 0 view .LVU293 + 975 002a 0268 ldr r2, [r0] + 976 002c 9168 ldr r1, [r2, #8] + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 977 .loc 1 498 7 view .LVU294 + 978 002e 11F0010F tst r1, #1 + 979 0032 14D1 bne .L73 + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 980 .loc 1 501 7 is_stmt 1 view .LVU295 + 981 0034 5168 ldr r1, [r2, #4] + 982 0036 21F08001 bic r1, r1, #128 + 983 003a 5160 str r1, [r2, #4] + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 984 .loc 1 504 7 view .LVU296 + 985 003c 016C ldr r1, [r0, #64] + 986 003e 0A4A ldr r2, .L74 + 987 0040 0A40 ands r2, r2, r1 + 988 0042 42F00102 orr r2, r2, #1 + 989 0046 0264 str r2, [r0, #64] + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 990 .loc 1 476 21 is_stmt 0 view .LVU297 + 991 0048 0020 movs r0, #0 + 992 .LVL68: + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 993 .loc 1 476 21 view .LVU298 + 994 004a 04E0 b .L71 + 995 .LVL69: + 996 .L70: + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 997 .loc 1 512 5 is_stmt 1 view .LVU299 + 998 004c 1A6C ldr r2, [r3, #64] + 999 004e 42F02002 orr r2, r2, #32 + 1000 0052 1A64 str r2, [r3, #64] + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1001 .loc 1 514 5 view .LVU300 + 1002 .LVL70: + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1003 .loc 1 514 20 is_stmt 0 view .LVU301 + 1004 0054 0120 movs r0, #1 + 1005 .LVL71: + ARM GAS /tmp/ccfOJcl9.s page 42 + + + 1006 .L71: + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1007 .loc 1 518 3 is_stmt 1 view .LVU302 + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1008 .loc 1 518 3 view .LVU303 + 1009 0056 0022 movs r2, #0 + 1010 0058 83F83C20 strb r2, [r3, #60] + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1011 .loc 1 518 3 view .LVU304 + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1012 .loc 1 521 3 view .LVU305 + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1013 .loc 1 521 10 is_stmt 0 view .LVU306 + 1014 005c 7047 bx lr + 1015 .LVL72: + 1016 .L73: + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1017 .loc 1 476 21 view .LVU307 + 1018 005e 0020 movs r0, #0 + 1019 .LVL73: + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1020 .loc 1 476 21 view .LVU308 + 1021 0060 F9E7 b .L71 + 1022 .LVL74: + 1023 .L72: + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1024 .loc 1 482 3 view .LVU309 + 1025 0062 0220 movs r0, #2 + 1026 .LVL75: + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1027 .loc 1 522 1 view .LVU310 + 1028 0064 7047 bx lr + 1029 .L75: + 1030 0066 00BF .align 2 + 1031 .L74: + 1032 0068 FEEEFFFF .word -4354 + 1033 .cfi_endproc + 1034 .LFE145: + 1036 .section .text.HAL_ADCEx_InjectedGetValue,"ax",%progbits + 1037 .align 1 + 1038 .global HAL_ADCEx_InjectedGetValue + 1039 .syntax unified + 1040 .thumb + 1041 .thumb_func + 1042 .fpu fpv5-d16 + 1044 HAL_ADCEx_InjectedGetValue: + 1045 .LVL76: + 1046 .LFB146: + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t tmp = 0; + 1047 .loc 1 537 1 is_stmt 1 view -0 + 1048 .cfi_startproc + 1049 @ args = 0, pretend = 0, frame = 8 + 1050 @ frame_needed = 0, uses_anonymous_args = 0 + 1051 @ link register save eliminated. + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t tmp = 0; + 1052 .loc 1 537 1 is_stmt 0 view .LVU312 + 1053 0000 82B0 sub sp, sp, #8 + ARM GAS /tmp/ccfOJcl9.s page 43 + + + 1054 .LCFI10: + 1055 .cfi_def_cfa_offset 8 + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1056 .loc 1 538 3 is_stmt 1 view .LVU313 + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1057 .loc 1 538 17 is_stmt 0 view .LVU314 + 1058 0002 0023 movs r3, #0 + 1059 0004 0193 str r3, [sp, #4] + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1060 .loc 1 541 3 is_stmt 1 view .LVU315 + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1061 .loc 1 545 3 view .LVU316 + 1062 0006 0368 ldr r3, [r0] + 1063 0008 6FF00402 mvn r2, #4 + 1064 000c 1A60 str r2, [r3] + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1065 .loc 1 548 3 view .LVU317 + 1066 000e 0139 subs r1, r1, #1 + 1067 .LVL77: + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1068 .loc 1 548 3 is_stmt 0 view .LVU318 + 1069 0010 0329 cmp r1, #3 + 1070 0012 06D8 bhi .L77 + 1071 0014 DFE801F0 tbb [pc, r1] + 1072 .L79: + 1073 0018 10 .byte (.L82-.L79)/2 + 1074 0019 0C .byte (.L81-.L79)/2 + 1075 001a 08 .byte (.L80-.L79)/2 + 1076 001b 02 .byte (.L78-.L79)/2 + 1077 .p2align 1 + 1078 .L78: + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1079 .loc 1 552 7 is_stmt 1 view .LVU319 + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1080 .loc 1 552 18 is_stmt 0 view .LVU320 + 1081 001c 0368 ldr r3, [r0] + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1082 .loc 1 552 28 view .LVU321 + 1083 001e 9B6C ldr r3, [r3, #72] + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1084 .loc 1 552 11 view .LVU322 + 1085 0020 0193 str r3, [sp, #4] + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case ADC_INJECTED_RANK_3: + 1086 .loc 1 554 5 is_stmt 1 view .LVU323 + 1087 .L77: + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1088 .loc 1 573 3 view .LVU324 + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1089 .loc 1 573 10 is_stmt 0 view .LVU325 + 1090 0022 0198 ldr r0, [sp, #4] + 1091 .LVL78: + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1092 .loc 1 574 1 view .LVU326 + 1093 0024 02B0 add sp, sp, #8 + 1094 .LCFI11: + 1095 .cfi_remember_state + 1096 .cfi_def_cfa_offset 0 + ARM GAS /tmp/ccfOJcl9.s page 44 + + + 1097 @ sp needed + 1098 0026 7047 bx lr + 1099 .LVL79: + 1100 .L80: + 1101 .LCFI12: + 1102 .cfi_restore_state + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1103 .loc 1 557 7 is_stmt 1 view .LVU327 + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1104 .loc 1 557 18 is_stmt 0 view .LVU328 + 1105 0028 0368 ldr r3, [r0] + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1106 .loc 1 557 28 view .LVU329 + 1107 002a 5B6C ldr r3, [r3, #68] + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1108 .loc 1 557 11 view .LVU330 + 1109 002c 0193 str r3, [sp, #4] + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case ADC_INJECTED_RANK_2: + 1110 .loc 1 559 5 is_stmt 1 view .LVU331 + 1111 002e F8E7 b .L77 + 1112 .L81: + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1113 .loc 1 562 7 view .LVU332 + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1114 .loc 1 562 18 is_stmt 0 view .LVU333 + 1115 0030 0368 ldr r3, [r0] + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1116 .loc 1 562 28 view .LVU334 + 1117 0032 1B6C ldr r3, [r3, #64] + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1118 .loc 1 562 11 view .LVU335 + 1119 0034 0193 str r3, [sp, #4] + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case ADC_INJECTED_RANK_1: + 1120 .loc 1 564 5 is_stmt 1 view .LVU336 + 1121 0036 F4E7 b .L77 + 1122 .L82: + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1123 .loc 1 567 7 view .LVU337 + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1124 .loc 1 567 18 is_stmt 0 view .LVU338 + 1125 0038 0368 ldr r3, [r0] + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1126 .loc 1 567 28 view .LVU339 + 1127 003a DB6B ldr r3, [r3, #60] + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1128 .loc 1 567 11 view .LVU340 + 1129 003c 0193 str r3, [sp, #4] + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** default: + 1130 .loc 1 569 5 is_stmt 1 view .LVU341 + 1131 003e F0E7 b .L77 + 1132 .cfi_endproc + 1133 .LFE146: + 1135 .section .text.HAL_ADCEx_MultiModeStart_DMA,"ax",%progbits + 1136 .align 1 + 1137 .global HAL_ADCEx_MultiModeStart_DMA + 1138 .syntax unified + 1139 .thumb + ARM GAS /tmp/ccfOJcl9.s page 45 + + + 1140 .thumb_func + 1141 .fpu fpv5-d16 + 1143 HAL_ADCEx_MultiModeStart_DMA: + 1144 .LVL80: + 1145 .LFB147: + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t counter = 0; + 1146 .loc 1 588 1 view -0 + 1147 .cfi_startproc + 1148 @ args = 0, pretend = 0, frame = 8 + 1149 @ frame_needed = 0, uses_anonymous_args = 0 + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** __IO uint32_t counter = 0; + 1150 .loc 1 588 1 is_stmt 0 view .LVU343 + 1151 0000 30B5 push {r4, r5, lr} + 1152 .LCFI13: + 1153 .cfi_def_cfa_offset 12 + 1154 .cfi_offset 4, -12 + 1155 .cfi_offset 5, -8 + 1156 .cfi_offset 14, -4 + 1157 0002 83B0 sub sp, sp, #12 + 1158 .LCFI14: + 1159 .cfi_def_cfa_offset 24 + 1160 0004 1346 mov r3, r2 + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1161 .loc 1 589 3 is_stmt 1 view .LVU344 + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1162 .loc 1 589 17 is_stmt 0 view .LVU345 + 1163 0006 0022 movs r2, #0 + 1164 .LVL81: + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1165 .loc 1 589 17 view .LVU346 + 1166 0008 0192 str r2, [sp, #4] + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge)); + 1167 .loc 1 592 3 is_stmt 1 view .LVU347 + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests)); + 1168 .loc 1 593 3 view .LVU348 + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1169 .loc 1 594 3 view .LVU349 + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1170 .loc 1 597 3 view .LVU350 + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1171 .loc 1 597 3 view .LVU351 + 1172 000a 90F83C20 ldrb r2, [r0, #60] @ zero_extendqisi2 + 1173 000e 012A cmp r2, #1 + 1174 0010 7AD0 beq .L95 + 1175 0012 0446 mov r4, r0 + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1176 .loc 1 597 3 discriminator 2 view .LVU352 + 1177 0014 0122 movs r2, #1 + 1178 0016 80F83C20 strb r2, [r0, #60] + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1179 .loc 1 597 3 discriminator 2 view .LVU353 + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1180 .loc 1 601 3 discriminator 2 view .LVU354 + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1181 .loc 1 601 11 is_stmt 0 discriminator 2 view .LVU355 + 1182 001a 0268 ldr r2, [r0] + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + ARM GAS /tmp/ccfOJcl9.s page 46 + + + 1183 .loc 1 601 21 discriminator 2 view .LVU356 + 1184 001c 9068 ldr r0, [r2, #8] + 1185 .LVL82: + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1186 .loc 1 601 5 discriminator 2 view .LVU357 + 1187 001e 10F0010F tst r0, #1 + 1188 0022 13D1 bne .L86 + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1189 .loc 1 604 5 is_stmt 1 view .LVU358 + 1190 0024 9068 ldr r0, [r2, #8] + 1191 0026 40F00100 orr r0, r0, #1 + 1192 002a 9060 str r0, [r2, #8] + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 1193 .loc 1 608 5 view .LVU359 + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 1194 .loc 1 608 53 is_stmt 0 view .LVU360 + 1195 002c 384A ldr r2, .L98 + 1196 002e 1068 ldr r0, [r2] + 1197 0030 384A ldr r2, .L98+4 + 1198 0032 A2FB0020 umull r2, r0, r2, r0 + 1199 0036 800C lsrs r0, r0, #18 + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 1200 .loc 1 608 34 view .LVU361 + 1201 0038 00EB4000 add r0, r0, r0, lsl #1 + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** while(counter != 0) + 1202 .loc 1 608 13 view .LVU362 + 1203 003c 0190 str r0, [sp, #4] + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1204 .loc 1 609 5 is_stmt 1 view .LVU363 + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1205 .loc 1 609 10 is_stmt 0 view .LVU364 + 1206 003e 02E0 b .L87 + 1207 .L88: + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1208 .loc 1 611 7 is_stmt 1 view .LVU365 + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1209 .loc 1 611 14 is_stmt 0 view .LVU366 + 1210 0040 0198 ldr r0, [sp, #4] + 1211 0042 0138 subs r0, r0, #1 + 1212 0044 0190 str r0, [sp, #4] + 1213 .L87: + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1214 .loc 1 609 10 is_stmt 1 view .LVU367 + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1215 .loc 1 609 19 is_stmt 0 view .LVU368 + 1216 0046 0198 ldr r0, [sp, #4] + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1217 .loc 1 609 10 view .LVU369 + 1218 0048 0028 cmp r0, #0 + 1219 004a F9D1 bne .L88 + 1220 .L86: + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1221 .loc 1 616 3 is_stmt 1 view .LVU370 + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1222 .loc 1 616 6 is_stmt 0 view .LVU371 + 1223 004c 2068 ldr r0, [r4] + 1224 004e 8268 ldr r2, [r0, #8] + ARM GAS /tmp/ccfOJcl9.s page 47 + + + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1225 .loc 1 616 5 view .LVU372 + 1226 0050 12F0010F tst r2, #1 + 1227 0054 4DD0 beq .L89 + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR, + 1228 .loc 1 621 5 is_stmt 1 view .LVU373 + 1229 0056 256C ldr r5, [r4, #64] + 1230 0058 2F4A ldr r2, .L98+8 + 1231 005a 2A40 ands r2, r2, r5 + 1232 005c 42F48072 orr r2, r2, #256 + 1233 0060 2264 str r2, [r4, #64] + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1234 .loc 1 627 5 view .LVU374 + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1235 .loc 1 627 9 is_stmt 0 view .LVU375 + 1236 0062 4268 ldr r2, [r0, #4] + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1237 .loc 1 627 8 view .LVU376 + 1238 0064 12F4806F tst r2, #1024 + 1239 0068 05D0 beq .L90 + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1240 .loc 1 629 7 is_stmt 1 view .LVU377 + 1241 006a 226C ldr r2, [r4, #64] + 1242 006c 22F44052 bic r2, r2, #12288 + 1243 0070 42F48052 orr r2, r2, #4096 + 1244 0074 2264 str r2, [r4, #64] + 1245 .L90: + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1246 .loc 1 633 5 view .LVU378 + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1247 .loc 1 633 9 is_stmt 0 view .LVU379 + 1248 0076 226C ldr r2, [r4, #64] + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1249 .loc 1 633 8 view .LVU380 + 1250 0078 12F4805F tst r2, #4096 + 1251 007c 30D0 beq .L91 + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1252 .loc 1 636 7 is_stmt 1 view .LVU381 + 1253 007e 626C ldr r2, [r4, #68] + 1254 0080 22F00602 bic r2, r2, #6 + 1255 0084 6264 str r2, [r4, #68] + 1256 .L92: + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1257 .loc 1 647 5 view .LVU382 + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1258 .loc 1 647 5 view .LVU383 + 1259 0086 0022 movs r2, #0 + 1260 0088 84F83C20 strb r2, [r4, #60] + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1261 .loc 1 647 5 view .LVU384 + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1262 .loc 1 650 5 view .LVU385 + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1263 .loc 1 650 9 is_stmt 0 view .LVU386 + 1264 008c A26B ldr r2, [r4, #56] + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1265 .loc 1 650 40 view .LVU387 + ARM GAS /tmp/ccfOJcl9.s page 48 + + + 1266 008e 2348 ldr r0, .L98+12 + 1267 0090 D063 str r0, [r2, #60] + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1268 .loc 1 653 5 is_stmt 1 view .LVU388 + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1269 .loc 1 653 9 is_stmt 0 view .LVU389 + 1270 0092 A26B ldr r2, [r4, #56] + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1271 .loc 1 653 44 view .LVU390 + 1272 0094 2248 ldr r0, .L98+16 + 1273 0096 1064 str r0, [r2, #64] + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1274 .loc 1 656 5 is_stmt 1 view .LVU391 + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1275 .loc 1 656 9 is_stmt 0 view .LVU392 + 1276 0098 A26B ldr r2, [r4, #56] + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1277 .loc 1 656 41 view .LVU393 + 1278 009a 2248 ldr r0, .L98+20 + 1279 009c D064 str r0, [r2, #76] + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1280 .loc 1 663 5 is_stmt 1 view .LVU394 + 1281 009e 2268 ldr r2, [r4] + 1282 00a0 6FF00200 mvn r0, #2 + 1283 00a4 1060 str r0, [r2] + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1284 .loc 1 666 5 view .LVU395 + 1285 00a6 2068 ldr r0, [r4] + 1286 00a8 4268 ldr r2, [r0, #4] + 1287 00aa 42F08062 orr r2, r2, #67108864 + 1288 00ae 4260 str r2, [r0, #4] + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1289 .loc 1 668 5 view .LVU396 + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1290 .loc 1 668 19 is_stmt 0 view .LVU397 + 1291 00b0 94F83020 ldrb r2, [r4, #48] @ zero_extendqisi2 + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1292 .loc 1 668 8 view .LVU398 + 1293 00b4 BAB1 cbz r2, .L93 + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1294 .loc 1 671 7 is_stmt 1 view .LVU399 + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1295 .loc 1 671 16 is_stmt 0 view .LVU400 + 1296 00b6 1C48 ldr r0, .L98+24 + 1297 00b8 4268 ldr r2, [r0, #4] + 1298 00ba 42F40052 orr r2, r2, #8192 + 1299 00be 4260 str r2, [r0, #4] + 1300 .L94: + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1301 .loc 1 680 5 is_stmt 1 view .LVU401 + 1302 00c0 0A46 mov r2, r1 + 1303 00c2 1A49 ldr r1, .L98+28 + 1304 .LVL83: + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1305 .loc 1 680 5 is_stmt 0 view .LVU402 + 1306 00c4 A06B ldr r0, [r4, #56] + 1307 00c6 FFF7FEFF bl HAL_DMA_Start_IT + ARM GAS /tmp/ccfOJcl9.s page 49 + + + 1308 .LVL84: + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1309 .loc 1 683 5 is_stmt 1 view .LVU403 + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1310 .loc 1 683 13 is_stmt 0 view .LVU404 + 1311 00ca 2368 ldr r3, [r4] + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1312 .loc 1 683 23 view .LVU405 + 1313 00cc 9A68 ldr r2, [r3, #8] + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1314 .loc 1 683 7 view .LVU406 + 1315 00ce 12F0405F tst r2, #805306368 + 1316 00d2 1BD1 bne .L96 + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1317 .loc 1 686 7 is_stmt 1 view .LVU407 + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1318 .loc 1 686 27 is_stmt 0 view .LVU408 + 1319 00d4 9A68 ldr r2, [r3, #8] + 1320 00d6 42F08042 orr r2, r2, #1073741824 + 1321 00da 9A60 str r2, [r3, #8] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1322 .loc 1 699 10 view .LVU409 + 1323 00dc 0020 movs r0, #0 + 1324 00de 11E0 b .L85 + 1325 .LVL85: + 1326 .L91: + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1327 .loc 1 641 7 is_stmt 1 view .LVU410 + 1328 00e0 0022 movs r2, #0 + 1329 00e2 6264 str r2, [r4, #68] + 1330 00e4 CFE7 b .L92 + 1331 .L93: + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1332 .loc 1 676 7 view .LVU411 + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1333 .loc 1 676 16 is_stmt 0 view .LVU412 + 1334 00e6 1048 ldr r0, .L98+24 + 1335 00e8 4268 ldr r2, [r0, #4] + 1336 00ea 22F40052 bic r2, r2, #8192 + 1337 00ee 4260 str r2, [r0, #4] + 1338 00f0 E6E7 b .L94 + 1339 .L89: + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1340 .loc 1 692 5 is_stmt 1 view .LVU413 + 1341 00f2 236C ldr r3, [r4, #64] + 1342 .LVL86: + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1343 .loc 1 692 5 is_stmt 0 view .LVU414 + 1344 00f4 43F01003 orr r3, r3, #16 + 1345 00f8 2364 str r3, [r4, #64] + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1346 .loc 1 695 5 is_stmt 1 view .LVU415 + 1347 00fa 636C ldr r3, [r4, #68] + 1348 00fc 43F00103 orr r3, r3, #1 + 1349 0100 6364 str r3, [r4, #68] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1350 .loc 1 699 10 is_stmt 0 view .LVU416 + ARM GAS /tmp/ccfOJcl9.s page 50 + + + 1351 0102 0020 movs r0, #0 + 1352 .LVL87: + 1353 .L85: + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1354 .loc 1 700 1 view .LVU417 + 1355 0104 03B0 add sp, sp, #12 + 1356 .LCFI15: + 1357 .cfi_remember_state + 1358 .cfi_def_cfa_offset 12 + 1359 @ sp needed + 1360 0106 30BD pop {r4, r5, pc} + 1361 .LVL88: + 1362 .L95: + 1363 .LCFI16: + 1364 .cfi_restore_state + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1365 .loc 1 597 3 view .LVU418 + 1366 0108 0220 movs r0, #2 + 1367 .LVL89: + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1368 .loc 1 597 3 view .LVU419 + 1369 010a FBE7 b .L85 + 1370 .LVL90: + 1371 .L96: + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1372 .loc 1 699 10 view .LVU420 + 1373 010c 0020 movs r0, #0 + 1374 010e F9E7 b .L85 + 1375 .L99: + 1376 .align 2 + 1377 .L98: + 1378 0110 00000000 .word SystemCoreClock + 1379 0114 83DE1B43 .word 1125899907 + 1380 0118 FEF8FFFF .word -1794 + 1381 011c 00000000 .word ADC_MultiModeDMAConvCplt + 1382 0120 00000000 .word ADC_MultiModeDMAHalfConvCplt + 1383 0124 00000000 .word ADC_MultiModeDMAError + 1384 0128 00230140 .word 1073816320 + 1385 012c 08230140 .word 1073816328 + 1386 .cfi_endproc + 1387 .LFE147: + 1389 .section .text.HAL_ADCEx_MultiModeStop_DMA,"ax",%progbits + 1390 .align 1 + 1391 .global HAL_ADCEx_MultiModeStop_DMA + 1392 .syntax unified + 1393 .thumb + 1394 .thumb_func + 1395 .fpu fpv5-d16 + 1397 HAL_ADCEx_MultiModeStop_DMA: + 1398 .LVL91: + 1399 .LFB148: + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 1400 .loc 1 709 1 is_stmt 1 view -0 + 1401 .cfi_startproc + 1402 @ args = 0, pretend = 0, frame = 0 + 1403 @ frame_needed = 0, uses_anonymous_args = 0 + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + ARM GAS /tmp/ccfOJcl9.s page 51 + + + 1404 .loc 1 710 3 view .LVU422 + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1405 .loc 1 713 3 view .LVU423 + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1406 .loc 1 716 3 view .LVU424 + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1407 .loc 1 716 3 view .LVU425 + 1408 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 1409 0004 012B cmp r3, #1 + 1410 0006 27D0 beq .L103 + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_StatusTypeDef tmp_hal_status = HAL_OK; + 1411 .loc 1 709 1 is_stmt 0 discriminator 2 view .LVU426 + 1412 0008 10B5 push {r4, lr} + 1413 .LCFI17: + 1414 .cfi_def_cfa_offset 8 + 1415 .cfi_offset 4, -8 + 1416 .cfi_offset 14, -4 + 1417 000a 0446 mov r4, r0 + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1418 .loc 1 716 3 is_stmt 1 discriminator 2 view .LVU427 + 1419 000c 0123 movs r3, #1 + 1420 000e 80F83C30 strb r3, [r0, #60] + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1421 .loc 1 716 3 discriminator 2 view .LVU428 + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1422 .loc 1 720 3 discriminator 2 view .LVU429 + 1423 0012 0268 ldr r2, [r0] + 1424 0014 9368 ldr r3, [r2, #8] + 1425 0016 23F00103 bic r3, r3, #1 + 1426 001a 9360 str r3, [r2, #8] + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1427 .loc 1 723 3 discriminator 2 view .LVU430 + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1428 .loc 1 723 6 is_stmt 0 discriminator 2 view .LVU431 + 1429 001c 0368 ldr r3, [r0] + 1430 001e 9B68 ldr r3, [r3, #8] + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1431 .loc 1 723 5 discriminator 2 view .LVU432 + 1432 0020 13F0010F tst r3, #1 + 1433 0024 04D0 beq .L109 + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1434 .loc 1 710 21 view .LVU433 + 1435 0026 0020 movs r0, #0 + 1436 .LVL92: + 1437 .L102: + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1438 .loc 1 742 3 is_stmt 1 view .LVU434 + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1439 .loc 1 742 3 view .LVU435 + 1440 0028 0023 movs r3, #0 + 1441 002a 84F83C30 strb r3, [r4, #60] + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1442 .loc 1 742 3 view .LVU436 + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1443 .loc 1 745 3 view .LVU437 + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1444 .loc 1 746 1 is_stmt 0 view .LVU438 + ARM GAS /tmp/ccfOJcl9.s page 52 + + + 1445 002e 10BD pop {r4, pc} + 1446 .LVL93: + 1447 .L109: + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1448 .loc 1 726 5 is_stmt 1 view .LVU439 + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1449 .loc 1 726 14 is_stmt 0 view .LVU440 + 1450 0030 0A4A ldr r2, .L110 + 1451 0032 5368 ldr r3, [r2, #4] + 1452 0034 23F40053 bic r3, r3, #8192 + 1453 0038 5360 str r3, [r2, #4] + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1454 .loc 1 730 5 is_stmt 1 view .LVU441 + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1455 .loc 1 730 22 is_stmt 0 view .LVU442 + 1456 003a 806B ldr r0, [r0, #56] + 1457 .LVL94: + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1458 .loc 1 730 22 view .LVU443 + 1459 003c FFF7FEFF bl HAL_DMA_Abort + 1460 .LVL95: + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1461 .loc 1 733 5 is_stmt 1 view .LVU444 + 1462 0040 2268 ldr r2, [r4] + 1463 0042 5368 ldr r3, [r2, #4] + 1464 0044 23F08063 bic r3, r3, #67108864 + 1465 0048 5360 str r3, [r2, #4] + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY, + 1466 .loc 1 736 5 view .LVU445 + 1467 004a 226C ldr r2, [r4, #64] + 1468 004c 044B ldr r3, .L110+4 + 1469 004e 1340 ands r3, r3, r2 + 1470 0050 43F00103 orr r3, r3, #1 + 1471 0054 2364 str r3, [r4, #64] + 1472 0056 E7E7 b .L102 + 1473 .LVL96: + 1474 .L103: + 1475 .LCFI18: + 1476 .cfi_def_cfa_offset 0 + 1477 .cfi_restore 4 + 1478 .cfi_restore 14 + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1479 .loc 1 716 3 is_stmt 0 view .LVU446 + 1480 0058 0220 movs r0, #2 + 1481 .LVL97: + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1482 .loc 1 746 1 view .LVU447 + 1483 005a 7047 bx lr + 1484 .L111: + 1485 .align 2 + 1486 .L110: + 1487 005c 00230140 .word 1073816320 + 1488 0060 FEEEFFFF .word -4354 + 1489 .cfi_endproc + 1490 .LFE148: + 1492 .section .text.HAL_ADCEx_MultiModeGetValue,"ax",%progbits + 1493 .align 1 + ARM GAS /tmp/ccfOJcl9.s page 53 + + + 1494 .global HAL_ADCEx_MultiModeGetValue + 1495 .syntax unified + 1496 .thumb + 1497 .thumb_func + 1498 .fpu fpv5-d16 + 1500 HAL_ADCEx_MultiModeGetValue: + 1501 .LVL98: + 1502 .LFB149: + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Prevent unused argument(s) compilation warning */ + 1503 .loc 1 756 1 is_stmt 1 view -0 + 1504 .cfi_startproc + 1505 @ args = 0, pretend = 0, frame = 0 + 1506 @ frame_needed = 0, uses_anonymous_args = 0 + 1507 @ link register save eliminated. + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1508 .loc 1 758 3 view .LVU449 + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1509 .loc 1 761 3 view .LVU450 + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1510 .loc 1 761 13 is_stmt 0 view .LVU451 + 1511 0000 014B ldr r3, .L113 + 1512 0002 9868 ldr r0, [r3, #8] + 1513 .LVL99: + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1514 .loc 1 762 1 view .LVU452 + 1515 0004 7047 bx lr + 1516 .L114: + 1517 0006 00BF .align 2 + 1518 .L113: + 1519 0008 00230140 .word 1073816320 + 1520 .cfi_endproc + 1521 .LFE149: + 1523 .section .text.HAL_ADCEx_InjectedConvCpltCallback,"ax",%progbits + 1524 .align 1 + 1525 .weak HAL_ADCEx_InjectedConvCpltCallback + 1526 .syntax unified + 1527 .thumb + 1528 .thumb_func + 1529 .fpu fpv5-d16 + 1531 HAL_ADCEx_InjectedConvCpltCallback: + 1532 .LVL100: + 1533 .LFB150: + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Prevent unused argument(s) compilation warning */ + 1534 .loc 1 771 1 is_stmt 1 view -0 + 1535 .cfi_startproc + 1536 @ args = 0, pretend = 0, frame = 0 + 1537 @ frame_needed = 0, uses_anonymous_args = 0 + 1538 @ link register save eliminated. + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 1539 .loc 1 773 3 view .LVU454 + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1540 .loc 1 777 1 is_stmt 0 view .LVU455 + 1541 0000 7047 bx lr + 1542 .cfi_endproc + 1543 .LFE150: + 1545 .section .text.HAL_ADCEx_InjectedConfigChannel,"ax",%progbits + 1546 .align 1 + ARM GAS /tmp/ccfOJcl9.s page 54 + + + 1547 .global HAL_ADCEx_InjectedConfigChannel + 1548 .syntax unified + 1549 .thumb + 1550 .thumb_func + 1551 .fpu fpv5-d16 + 1553 HAL_ADCEx_InjectedConfigChannel: + 1554 .LVL101: + 1555 .LFB151: + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1556 .loc 1 788 1 is_stmt 1 view -0 + 1557 .cfi_startproc + 1558 @ args = 0, pretend = 0, frame = 0 + 1559 @ frame_needed = 0, uses_anonymous_args = 0 + 1560 @ link register save eliminated. + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_INJECTED_RANK(sConfigInjected->InjectedRank)); + 1561 .loc 1 795 3 view .LVU457 + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_SAMPLE_TIME(sConfigInjected->InjectedSamplingTime)); + 1562 .loc 1 796 3 view .LVU458 + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_EXT_INJEC_TRIG(sConfigInjected->ExternalTrigInjecConv)); + 1563 .loc 1 797 3 view .LVU459 + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_INJECTED_LENGTH(sConfigInjected->InjectedNbrOfConversion)); + 1564 .loc 1 798 3 view .LVU460 + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_FUNCTIONAL_STATE(sConfigInjected->AutoInjectedConv)); + 1565 .loc 1 799 3 view .LVU461 + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_FUNCTIONAL_STATE(sConfigInjected->InjectedDiscontinuousConvMode)); + 1566 .loc 1 800 3 view .LVU462 + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1567 .loc 1 801 3 view .LVU463 + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1568 .loc 1 808 3 view .LVU464 + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1569 .loc 1 810 5 view .LVU465 + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1570 .loc 1 814 3 view .LVU466 + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1571 .loc 1 814 3 view .LVU467 + 1572 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 1573 0004 012B cmp r3, #1 + 1574 0006 00F0F580 beq .L132 + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1575 .loc 1 788 1 is_stmt 0 discriminator 2 view .LVU468 + 1576 000a 30B4 push {r4, r5} + 1577 .LCFI19: + 1578 .cfi_def_cfa_offset 8 + 1579 .cfi_offset 4, -8 + 1580 .cfi_offset 5, -4 + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1581 .loc 1 814 3 is_stmt 1 discriminator 2 view .LVU469 + 1582 000c 0123 movs r3, #1 + 1583 000e 80F83C30 strb r3, [r0, #60] + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1584 .loc 1 814 3 discriminator 2 view .LVU470 + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1585 .loc 1 817 3 discriminator 2 view .LVU471 + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1586 .loc 1 817 22 is_stmt 0 discriminator 2 view .LVU472 + 1587 0012 0B68 ldr r3, [r1] + ARM GAS /tmp/ccfOJcl9.s page 55 + + + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1588 .loc 1 817 6 discriminator 2 view .LVU473 + 1589 0014 092B cmp r3, #9 + 1590 0016 7DD9 bls .L118 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1591 .loc 1 820 5 is_stmt 1 view .LVU474 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1592 .loc 1 820 9 is_stmt 0 view .LVU475 + 1593 0018 0568 ldr r5, [r0] + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1594 .loc 1 820 27 view .LVU476 + 1595 001a EA68 ldr r2, [r5, #12] + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1596 .loc 1 820 31 view .LVU477 + 1597 001c 9BB2 uxth r3, r3 + 1598 001e 03EB4303 add r3, r3, r3, lsl #1 + 1599 0022 1E3B subs r3, r3, #30 + 1600 0024 0724 movs r4, #7 + 1601 0026 04FA03F3 lsl r3, r4, r3 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1602 .loc 1 820 27 view .LVU478 + 1603 002a 22EA0303 bic r3, r2, r3 + 1604 002e EB60 str r3, [r5, #12] + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1605 .loc 1 823 5 is_stmt 1 view .LVU479 + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1606 .loc 1 823 9 is_stmt 0 view .LVU480 + 1607 0030 0568 ldr r5, [r0] + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1608 .loc 1 823 27 view .LVU481 + 1609 0032 EA68 ldr r2, [r5, #12] + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1610 .loc 1 823 30 view .LVU482 + 1611 0034 8C68 ldr r4, [r1, #8] + 1612 0036 0B88 ldrh r3, [r1] + 1613 0038 03EB4303 add r3, r3, r3, lsl #1 + 1614 003c 1E3B subs r3, r3, #30 + 1615 003e 04FA03F3 lsl r3, r4, r3 + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1616 .loc 1 823 27 view .LVU483 + 1617 0042 1343 orrs r3, r3, r2 + 1618 0044 EB60 str r3, [r5, #12] + 1619 .L119: + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JSQR |= ADC_SQR1(sConfigInjected->InjectedNbrOfConversion); + 1620 .loc 1 835 3 is_stmt 1 view .LVU484 + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JSQR |= ADC_SQR1(sConfigInjected->InjectedNbrOfConversion); + 1621 .loc 1 835 7 is_stmt 0 view .LVU485 + 1622 0046 0268 ldr r2, [r0] + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JSQR |= ADC_SQR1(sConfigInjected->InjectedNbrOfConversion); + 1623 .loc 1 835 24 view .LVU486 + 1624 0048 936B ldr r3, [r2, #56] + 1625 004a 23F44013 bic r3, r3, #3145728 + 1626 004e 9363 str r3, [r2, #56] + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1627 .loc 1 836 3 is_stmt 1 view .LVU487 + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1628 .loc 1 836 7 is_stmt 0 view .LVU488 + ARM GAS /tmp/ccfOJcl9.s page 56 + + + 1629 0050 0468 ldr r4, [r0] + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1630 .loc 1 836 24 view .LVU489 + 1631 0052 A36B ldr r3, [r4, #56] + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1632 .loc 1 836 28 view .LVU490 + 1633 0054 0A69 ldr r2, [r1, #16] + 1634 0056 013A subs r2, r2, #1 + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1635 .loc 1 836 24 view .LVU491 + 1636 0058 43EA0253 orr r3, r3, r2, lsl #20 + 1637 005c A363 str r3, [r4, #56] + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1638 .loc 1 841 3 is_stmt 1 view .LVU492 + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1639 .loc 1 841 7 is_stmt 0 view .LVU493 + 1640 005e 0468 ldr r4, [r0] + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1641 .loc 1 841 24 view .LVU494 + 1642 0060 A26B ldr r2, [r4, #56] + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1643 .loc 1 841 28 view .LVU495 + 1644 0062 4B68 ldr r3, [r1, #4] + 1645 0064 0D69 ldr r5, [r1, #16] + 1646 0066 5B1B subs r3, r3, r5 + 1647 0068 DBB2 uxtb r3, r3 + 1648 006a 0333 adds r3, r3, #3 + 1649 006c DBB2 uxtb r3, r3 + 1650 006e 03EB8303 add r3, r3, r3, lsl #2 + 1651 0072 4FF01F0C mov ip, #31 + 1652 0076 0CFA03F3 lsl r3, ip, r3 + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1653 .loc 1 841 24 view .LVU496 + 1654 007a 22EA0303 bic r3, r2, r3 + 1655 007e A363 str r3, [r4, #56] + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1656 .loc 1 844 3 is_stmt 1 view .LVU497 + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1657 .loc 1 844 7 is_stmt 0 view .LVU498 + 1658 0080 0468 ldr r4, [r0] + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1659 .loc 1 844 24 view .LVU499 + 1660 0082 A26B ldr r2, [r4, #56] + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1661 .loc 1 844 27 view .LVU500 + 1662 0084 4B68 ldr r3, [r1, #4] + 1663 0086 0D69 ldr r5, [r1, #16] + 1664 0088 5B1B subs r3, r3, r5 + 1665 008a DBB2 uxtb r3, r3 + 1666 008c 0333 adds r3, r3, #3 + 1667 008e DBB2 uxtb r3, r3 + 1668 0090 03EB8303 add r3, r3, r3, lsl #2 + 1669 0094 B1F800C0 ldrh ip, [r1] + 1670 0098 0CFA03F3 lsl r3, ip, r3 + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1671 .loc 1 844 24 view .LVU501 + 1672 009c 1343 orrs r3, r3, r2 + ARM GAS /tmp/ccfOJcl9.s page 57 + + + 1673 009e A363 str r3, [r4, #56] + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1674 .loc 1 851 3 is_stmt 1 view .LVU502 + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1675 .loc 1 851 21 is_stmt 0 view .LVU503 + 1676 00a0 8A69 ldr r2, [r1, #24] + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1677 .loc 1 851 5 view .LVU504 + 1678 00a2 554B ldr r3, .L140 + 1679 00a4 9A42 cmp r2, r3 + 1680 00a6 4BD0 beq .L120 + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= sConfigInjected->ExternalTrigInjecConv; + 1681 .loc 1 854 5 is_stmt 1 view .LVU505 + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= sConfigInjected->ExternalTrigInjecConv; + 1682 .loc 1 854 9 is_stmt 0 view .LVU506 + 1683 00a8 0268 ldr r2, [r0] + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= sConfigInjected->ExternalTrigInjecConv; + 1684 .loc 1 854 25 view .LVU507 + 1685 00aa 9368 ldr r3, [r2, #8] + 1686 00ac 23F47023 bic r3, r3, #983040 + 1687 00b0 9360 str r3, [r2, #8] + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1688 .loc 1 855 5 is_stmt 1 view .LVU508 + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1689 .loc 1 855 9 is_stmt 0 view .LVU509 + 1690 00b2 0268 ldr r2, [r0] + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1691 .loc 1 855 25 view .LVU510 + 1692 00b4 9368 ldr r3, [r2, #8] + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1693 .loc 1 855 44 view .LVU511 + 1694 00b6 8C69 ldr r4, [r1, #24] + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1695 .loc 1 855 25 view .LVU512 + 1696 00b8 2343 orrs r3, r3, r4 + 1697 00ba 9360 str r3, [r2, #8] + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= sConfigInjected->ExternalTrigInjecConvEdge; + 1698 .loc 1 858 5 is_stmt 1 view .LVU513 + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= sConfigInjected->ExternalTrigInjecConvEdge; + 1699 .loc 1 858 9 is_stmt 0 view .LVU514 + 1700 00bc 0268 ldr r2, [r0] + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 |= sConfigInjected->ExternalTrigInjecConvEdge; + 1701 .loc 1 858 25 view .LVU515 + 1702 00be 9368 ldr r3, [r2, #8] + 1703 00c0 23F44013 bic r3, r3, #3145728 + 1704 00c4 9360 str r3, [r2, #8] + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1705 .loc 1 859 5 is_stmt 1 view .LVU516 + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1706 .loc 1 859 9 is_stmt 0 view .LVU517 + 1707 00c6 0268 ldr r2, [r0] + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1708 .loc 1 859 25 view .LVU518 + 1709 00c8 9368 ldr r3, [r2, #8] + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1710 .loc 1 859 43 view .LVU519 + 1711 00ca CC69 ldr r4, [r1, #28] + ARM GAS /tmp/ccfOJcl9.s page 58 + + + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1712 .loc 1 859 25 view .LVU520 + 1713 00cc 2343 orrs r3, r3, r4 + 1714 00ce 9360 str r3, [r2, #8] + 1715 .L121: + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1716 .loc 1 868 3 is_stmt 1 view .LVU521 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1717 .loc 1 868 22 is_stmt 0 view .LVU522 + 1718 00d0 4B7D ldrb r3, [r1, #21] @ zero_extendqisi2 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1719 .loc 1 868 6 view .LVU523 + 1720 00d2 002B cmp r3, #0 + 1721 00d4 3FD0 beq .L122 + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1722 .loc 1 871 5 is_stmt 1 view .LVU524 + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1723 .loc 1 871 9 is_stmt 0 view .LVU525 + 1724 00d6 0268 ldr r2, [r0] + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1725 .loc 1 871 25 view .LVU526 + 1726 00d8 5368 ldr r3, [r2, #4] + 1727 00da 43F48063 orr r3, r3, #1024 + 1728 00de 5360 str r3, [r2, #4] + 1729 .L123: + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1730 .loc 1 879 3 is_stmt 1 view .LVU527 + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1731 .loc 1 879 22 is_stmt 0 view .LVU528 + 1732 00e0 0B7D ldrb r3, [r1, #20] @ zero_extendqisi2 + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1733 .loc 1 879 6 view .LVU529 + 1734 00e2 002B cmp r3, #0 + 1735 00e4 3DD0 beq .L124 + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1736 .loc 1 882 5 is_stmt 1 view .LVU530 + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1737 .loc 1 882 9 is_stmt 0 view .LVU531 + 1738 00e6 0268 ldr r2, [r0] + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1739 .loc 1 882 25 view .LVU532 + 1740 00e8 5368 ldr r3, [r2, #4] + 1741 00ea 43F48053 orr r3, r3, #4096 + 1742 00ee 5360 str r3, [r2, #4] + 1743 .L125: + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1744 .loc 1 890 3 is_stmt 1 view .LVU533 + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1745 .loc 1 890 25 is_stmt 0 view .LVU534 + 1746 00f0 4B68 ldr r3, [r1, #4] + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1747 .loc 1 890 3 view .LVU535 + 1748 00f2 022B cmp r3, #2 + 1749 00f4 53D0 beq .L126 + 1750 00f6 032B cmp r3, #3 + 1751 00f8 5CD0 beq .L127 + 1752 00fa 012B cmp r3, #1 + ARM GAS /tmp/ccfOJcl9.s page 59 + + + 1753 00fc 37D0 beq .L137 + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR4 |= sConfigInjected->InjectedOffset; + 1754 .loc 1 909 7 is_stmt 1 view .LVU536 + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR4 |= sConfigInjected->InjectedOffset; + 1755 .loc 1 909 11 is_stmt 0 view .LVU537 + 1756 00fe 0268 ldr r2, [r0] + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR4 |= sConfigInjected->InjectedOffset; + 1757 .loc 1 909 29 view .LVU538 + 1758 0100 146A ldr r4, [r2, #32] + 1759 0102 3E4B ldr r3, .L140+4 + 1760 0104 2340 ands r3, r3, r4 + 1761 0106 1362 str r3, [r2, #32] + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1762 .loc 1 910 7 is_stmt 1 view .LVU539 + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1763 .loc 1 910 11 is_stmt 0 view .LVU540 + 1764 0108 0268 ldr r2, [r0] + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1765 .loc 1 910 29 view .LVU541 + 1766 010a 136A ldr r3, [r2, #32] + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1767 .loc 1 910 47 view .LVU542 + 1768 010c CC68 ldr r4, [r1, #12] + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1769 .loc 1 910 29 view .LVU543 + 1770 010e 2343 orrs r3, r3, r4 + 1771 0110 1362 str r3, [r2, #32] + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1772 .loc 1 911 7 is_stmt 1 view .LVU544 + 1773 0112 36E0 b .L129 + 1774 .L118: + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1775 .loc 1 828 5 view .LVU545 + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1776 .loc 1 828 9 is_stmt 0 view .LVU546 + 1777 0114 0568 ldr r5, [r0] + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1778 .loc 1 828 27 view .LVU547 + 1779 0116 2A69 ldr r2, [r5, #16] + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1780 .loc 1 828 31 view .LVU548 + 1781 0118 9BB2 uxth r3, r3 + 1782 011a 03EB4303 add r3, r3, r3, lsl #1 + 1783 011e 0724 movs r4, #7 + 1784 0120 04FA03F3 lsl r3, r4, r3 + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1785 .loc 1 828 27 view .LVU549 + 1786 0124 22EA0303 bic r3, r2, r3 + 1787 0128 2B61 str r3, [r5, #16] + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1788 .loc 1 831 5 is_stmt 1 view .LVU550 + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1789 .loc 1 831 9 is_stmt 0 view .LVU551 + 1790 012a 0568 ldr r5, [r0] + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1791 .loc 1 831 27 view .LVU552 + 1792 012c 2A69 ldr r2, [r5, #16] + ARM GAS /tmp/ccfOJcl9.s page 60 + + + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1793 .loc 1 831 30 view .LVU553 + 1794 012e 8C68 ldr r4, [r1, #8] + 1795 0130 0B88 ldrh r3, [r1] + 1796 0132 03EB4303 add r3, r3, r3, lsl #1 + 1797 0136 04FA03F3 lsl r3, r4, r3 + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1798 .loc 1 831 27 view .LVU554 + 1799 013a 1343 orrs r3, r3, r2 + 1800 013c 2B61 str r3, [r5, #16] + 1801 013e 82E7 b .L119 + 1802 .L120: + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 &= ~(ADC_CR2_JEXTEN); + 1803 .loc 1 864 5 is_stmt 1 view .LVU555 + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 &= ~(ADC_CR2_JEXTEN); + 1804 .loc 1 864 9 is_stmt 0 view .LVU556 + 1805 0140 0268 ldr r2, [r0] + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->CR2 &= ~(ADC_CR2_JEXTEN); + 1806 .loc 1 864 25 view .LVU557 + 1807 0142 9368 ldr r3, [r2, #8] + 1808 0144 23F47023 bic r3, r3, #983040 + 1809 0148 9360 str r3, [r2, #8] + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1810 .loc 1 865 5 is_stmt 1 view .LVU558 + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1811 .loc 1 865 9 is_stmt 0 view .LVU559 + 1812 014a 0268 ldr r2, [r0] + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1813 .loc 1 865 25 view .LVU560 + 1814 014c 9368 ldr r3, [r2, #8] + 1815 014e 23F44013 bic r3, r3, #3145728 + 1816 0152 9360 str r3, [r2, #8] + 1817 0154 BCE7 b .L121 + 1818 .L122: + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1819 .loc 1 876 5 is_stmt 1 view .LVU561 + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1820 .loc 1 876 9 is_stmt 0 view .LVU562 + 1821 0156 0268 ldr r2, [r0] + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1822 .loc 1 876 25 view .LVU563 + 1823 0158 5368 ldr r3, [r2, #4] + 1824 015a 23F48063 bic r3, r3, #1024 + 1825 015e 5360 str r3, [r2, #4] + 1826 0160 BEE7 b .L123 + 1827 .L124: + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1828 .loc 1 887 5 is_stmt 1 view .LVU564 + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1829 .loc 1 887 9 is_stmt 0 view .LVU565 + 1830 0162 0268 ldr r2, [r0] + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1831 .loc 1 887 25 view .LVU566 + 1832 0164 5368 ldr r3, [r2, #4] + 1833 0166 23F48053 bic r3, r3, #4096 + 1834 016a 5360 str r3, [r2, #4] + 1835 016c C0E7 b .L125 + ARM GAS /tmp/ccfOJcl9.s page 61 + + + 1836 .L137: + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR1 |= sConfigInjected->InjectedOffset; + 1837 .loc 1 894 7 is_stmt 1 view .LVU567 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR1 |= sConfigInjected->InjectedOffset; + 1838 .loc 1 894 11 is_stmt 0 view .LVU568 + 1839 016e 0268 ldr r2, [r0] + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR1 |= sConfigInjected->InjectedOffset; + 1840 .loc 1 894 29 view .LVU569 + 1841 0170 5469 ldr r4, [r2, #20] + 1842 0172 224B ldr r3, .L140+4 + 1843 0174 2340 ands r3, r3, r4 + 1844 0176 5361 str r3, [r2, #20] + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1845 .loc 1 895 7 is_stmt 1 view .LVU570 + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1846 .loc 1 895 11 is_stmt 0 view .LVU571 + 1847 0178 0268 ldr r2, [r0] + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1848 .loc 1 895 29 view .LVU572 + 1849 017a 5369 ldr r3, [r2, #20] + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1850 .loc 1 895 47 view .LVU573 + 1851 017c CC68 ldr r4, [r1, #12] + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1852 .loc 1 895 29 view .LVU574 + 1853 017e 2343 orrs r3, r3, r4 + 1854 0180 5361 str r3, [r2, #20] + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case 2: + 1855 .loc 1 896 7 is_stmt 1 view .LVU575 + 1856 .L129: + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1857 .loc 1 915 3 view .LVU576 + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1858 .loc 1 915 12 is_stmt 0 view .LVU577 + 1859 0182 0268 ldr r2, [r0] + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1860 .loc 1 915 6 view .LVU578 + 1861 0184 1E4B ldr r3, .L140+8 + 1862 0186 9A42 cmp r2, r3 + 1863 0188 1FD0 beq .L138 + 1864 .L130: + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1865 .loc 1 922 3 is_stmt 1 view .LVU579 + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1866 .loc 1 922 12 is_stmt 0 view .LVU580 + 1867 018a 0268 ldr r2, [r0] + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1868 .loc 1 922 6 view .LVU581 + 1869 018c 1C4B ldr r3, .L140+8 + 1870 018e 9A42 cmp r2, r3 + 1871 0190 24D0 beq .L139 + 1872 .L131: + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1873 .loc 1 929 3 is_stmt 1 view .LVU582 + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1874 .loc 1 929 3 view .LVU583 + 1875 0192 0023 movs r3, #0 + ARM GAS /tmp/ccfOJcl9.s page 62 + + + 1876 0194 80F83C30 strb r3, [r0, #60] + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1877 .loc 1 929 3 view .LVU584 + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1878 .loc 1 932 3 view .LVU585 + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1879 .loc 1 932 10 is_stmt 0 view .LVU586 + 1880 0198 1846 mov r0, r3 + 1881 .LVL102: + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1882 .loc 1 933 1 view .LVU587 + 1883 019a 30BC pop {r4, r5} + 1884 .LCFI20: + 1885 .cfi_remember_state + 1886 .cfi_restore 5 + 1887 .cfi_restore 4 + 1888 .cfi_def_cfa_offset 0 + 1889 019c 7047 bx lr + 1890 .LVL103: + 1891 .L126: + 1892 .LCFI21: + 1893 .cfi_restore_state + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR2 |= sConfigInjected->InjectedOffset; + 1894 .loc 1 899 7 is_stmt 1 view .LVU588 + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR2 |= sConfigInjected->InjectedOffset; + 1895 .loc 1 899 11 is_stmt 0 view .LVU589 + 1896 019e 0268 ldr r2, [r0] + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR2 |= sConfigInjected->InjectedOffset; + 1897 .loc 1 899 29 view .LVU590 + 1898 01a0 9469 ldr r4, [r2, #24] + 1899 01a2 164B ldr r3, .L140+4 + 1900 01a4 2340 ands r3, r3, r4 + 1901 01a6 9361 str r3, [r2, #24] + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1902 .loc 1 900 7 is_stmt 1 view .LVU591 + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1903 .loc 1 900 11 is_stmt 0 view .LVU592 + 1904 01a8 0268 ldr r2, [r0] + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1905 .loc 1 900 29 view .LVU593 + 1906 01aa 9369 ldr r3, [r2, #24] + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1907 .loc 1 900 47 view .LVU594 + 1908 01ac CC68 ldr r4, [r1, #12] + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1909 .loc 1 900 29 view .LVU595 + 1910 01ae 2343 orrs r3, r3, r4 + 1911 01b0 9361 str r3, [r2, #24] + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** case 3: + 1912 .loc 1 901 7 is_stmt 1 view .LVU596 + 1913 01b2 E6E7 b .L129 + 1914 .L127: + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR3 |= sConfigInjected->InjectedOffset; + 1915 .loc 1 904 7 view .LVU597 + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR3 |= sConfigInjected->InjectedOffset; + 1916 .loc 1 904 11 is_stmt 0 view .LVU598 + 1917 01b4 0268 ldr r2, [r0] + ARM GAS /tmp/ccfOJcl9.s page 63 + + + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** hadc->Instance->JOFR3 |= sConfigInjected->InjectedOffset; + 1918 .loc 1 904 29 view .LVU599 + 1919 01b6 D469 ldr r4, [r2, #28] + 1920 01b8 104B ldr r3, .L140+4 + 1921 01ba 2340 ands r3, r3, r4 + 1922 01bc D361 str r3, [r2, #28] + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1923 .loc 1 905 7 is_stmt 1 view .LVU600 + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1924 .loc 1 905 11 is_stmt 0 view .LVU601 + 1925 01be 0268 ldr r2, [r0] + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1926 .loc 1 905 29 view .LVU602 + 1927 01c0 D369 ldr r3, [r2, #28] + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1928 .loc 1 905 47 view .LVU603 + 1929 01c2 CC68 ldr r4, [r1, #12] + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** break; + 1930 .loc 1 905 29 view .LVU604 + 1931 01c4 2343 orrs r3, r3, r4 + 1932 01c6 D361 str r3, [r2, #28] + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** default: + 1933 .loc 1 906 7 is_stmt 1 view .LVU605 + 1934 01c8 DBE7 b .L129 + 1935 .L138: + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1936 .loc 1 915 51 is_stmt 0 discriminator 1 view .LVU606 + 1937 01ca 0B68 ldr r3, [r1] + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1938 .loc 1 915 32 discriminator 1 view .LVU607 + 1939 01cc 122B cmp r3, #18 + 1940 01ce DCD1 bne .L130 + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1941 .loc 1 918 5 is_stmt 1 view .LVU608 + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1942 .loc 1 918 14 is_stmt 0 view .LVU609 + 1943 01d0 0C4A ldr r2, .L140+12 + 1944 01d2 5368 ldr r3, [r2, #4] + 1945 01d4 43F48003 orr r3, r3, #4194304 + 1946 01d8 5360 str r3, [r2, #4] + 1947 01da D6E7 b .L130 + 1948 .L139: + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1949 .loc 1 922 52 discriminator 1 view .LVU610 + 1950 01dc 0B68 ldr r3, [r1] + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** { + 1951 .loc 1 922 32 discriminator 1 view .LVU611 + 1952 01de 0A4A ldr r2, .L140+16 + 1953 01e0 112B cmp r3, #17 + 1954 01e2 18BF it ne + 1955 01e4 9342 cmpne r3, r2 + 1956 01e6 D4D1 bne .L131 + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1957 .loc 1 925 5 is_stmt 1 view .LVU612 + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 1958 .loc 1 925 14 is_stmt 0 view .LVU613 + 1959 01e8 064A ldr r2, .L140+12 + ARM GAS /tmp/ccfOJcl9.s page 64 + + + 1960 01ea 5368 ldr r3, [r2, #4] + 1961 01ec 43F40003 orr r3, r3, #8388608 + 1962 01f0 5360 str r3, [r2, #4] + 1963 01f2 CEE7 b .L131 + 1964 .L132: + 1965 .LCFI22: + 1966 .cfi_def_cfa_offset 0 + 1967 .cfi_restore 4 + 1968 .cfi_restore 5 + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1969 .loc 1 814 3 view .LVU614 + 1970 01f4 0220 movs r0, #2 + 1971 .LVL104: + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 1972 .loc 1 933 1 view .LVU615 + 1973 01f6 7047 bx lr + 1974 .L141: + 1975 .align 2 + 1976 .L140: + 1977 01f8 01000F00 .word 983041 + 1978 01fc 00F0FFFF .word -4096 + 1979 0200 00200140 .word 1073815552 + 1980 0204 00230140 .word 1073816320 + 1981 0208 12000010 .word 268435474 + 1982 .cfi_endproc + 1983 .LFE151: + 1985 .section .text.HAL_ADCEx_MultiModeConfigChannel,"ax",%progbits + 1986 .align 1 + 1987 .global HAL_ADCEx_MultiModeConfigChannel + 1988 .syntax unified + 1989 .thumb + 1990 .thumb_func + 1991 .fpu fpv5-d16 + 1993 HAL_ADCEx_MultiModeConfigChannel: + 1994 .LVL105: + 1995 .LFB152: + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check the parameters */ + 1996 .loc 1 944 1 is_stmt 1 view -0 + 1997 .cfi_startproc + 1998 @ args = 0, pretend = 0, frame = 0 + 1999 @ frame_needed = 0, uses_anonymous_args = 0 + 2000 @ link register save eliminated. + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_DMA_ACCESS_MODE(multimode->DMAAccessMode)); + 2001 .loc 1 946 3 view .LVU617 + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** assert_param(IS_ADC_SAMPLING_DELAY(multimode->TwoSamplingDelay)); + 2002 .loc 1 947 3 view .LVU618 + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2003 .loc 1 948 3 view .LVU619 + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2004 .loc 1 951 3 view .LVU620 + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2005 .loc 1 951 3 view .LVU621 + 2006 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 2007 0004 012B cmp r3, #1 + 2008 0006 23D0 beq .L144 + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** /* Check the parameters */ + 2009 .loc 1 944 1 is_stmt 0 discriminator 2 view .LVU622 + ARM GAS /tmp/ccfOJcl9.s page 65 + + + 2010 0008 10B4 push {r4} + 2011 .LCFI23: + 2012 .cfi_def_cfa_offset 4 + 2013 .cfi_offset 4, -4 + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2014 .loc 1 951 3 is_stmt 1 discriminator 2 view .LVU623 + 2015 000a 0123 movs r3, #1 + 2016 000c 80F83C30 strb r3, [r0, #60] + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2017 .loc 1 951 3 discriminator 2 view .LVU624 + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= multimode->Mode; + 2018 .loc 1 954 3 discriminator 2 view .LVU625 + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= multimode->Mode; + 2019 .loc 1 954 12 is_stmt 0 discriminator 2 view .LVU626 + 2020 0010 104B ldr r3, .L149 + 2021 0012 5A68 ldr r2, [r3, #4] + 2022 0014 22F01F02 bic r2, r2, #31 + 2023 0018 5A60 str r2, [r3, #4] + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2024 .loc 1 955 3 is_stmt 1 discriminator 2 view .LVU627 + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2025 .loc 1 955 12 is_stmt 0 discriminator 2 view .LVU628 + 2026 001a 5A68 ldr r2, [r3, #4] + 2027 001c 0C68 ldr r4, [r1] + 2028 001e 2243 orrs r2, r2, r4 + 2029 0020 5A60 str r2, [r3, #4] + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= multimode->DMAAccessMode; + 2030 .loc 1 958 3 is_stmt 1 discriminator 2 view .LVU629 + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= multimode->DMAAccessMode; + 2031 .loc 1 958 12 is_stmt 0 discriminator 2 view .LVU630 + 2032 0022 5A68 ldr r2, [r3, #4] + 2033 0024 22F44042 bic r2, r2, #49152 + 2034 0028 5A60 str r2, [r3, #4] + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2035 .loc 1 959 3 is_stmt 1 discriminator 2 view .LVU631 + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2036 .loc 1 959 12 is_stmt 0 discriminator 2 view .LVU632 + 2037 002a 5A68 ldr r2, [r3, #4] + 2038 002c 4C68 ldr r4, [r1, #4] + 2039 002e 2243 orrs r2, r2, r4 + 2040 0030 5A60 str r2, [r3, #4] + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= multimode->TwoSamplingDelay; + 2041 .loc 1 962 3 is_stmt 1 discriminator 2 view .LVU633 + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** ADC->CCR |= multimode->TwoSamplingDelay; + 2042 .loc 1 962 12 is_stmt 0 discriminator 2 view .LVU634 + 2043 0032 5A68 ldr r2, [r3, #4] + 2044 0034 22F47062 bic r2, r2, #3840 + 2045 0038 5A60 str r2, [r3, #4] + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2046 .loc 1 963 3 is_stmt 1 discriminator 2 view .LVU635 + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2047 .loc 1 963 12 is_stmt 0 discriminator 2 view .LVU636 + 2048 003a 5A68 ldr r2, [r3, #4] + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2049 .loc 1 963 24 discriminator 2 view .LVU637 + 2050 003c 8968 ldr r1, [r1, #8] + 2051 .LVL106: + ARM GAS /tmp/ccfOJcl9.s page 66 + + + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2052 .loc 1 963 12 discriminator 2 view .LVU638 + 2053 003e 0A43 orrs r2, r2, r1 + 2054 0040 5A60 str r2, [r3, #4] + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2055 .loc 1 966 3 is_stmt 1 discriminator 2 view .LVU639 + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2056 .loc 1 966 3 discriminator 2 view .LVU640 + 2057 0042 0023 movs r3, #0 + 2058 0044 80F83C30 strb r3, [r0, #60] + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2059 .loc 1 966 3 discriminator 2 view .LVU641 + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 2060 .loc 1 969 3 discriminator 2 view .LVU642 + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** } + 2061 .loc 1 969 10 is_stmt 0 discriminator 2 view .LVU643 + 2062 0048 1846 mov r0, r3 + 2063 .LVL107: + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2064 .loc 1 970 1 discriminator 2 view .LVU644 + 2065 004a 5DF8044B ldr r4, [sp], #4 + 2066 .LCFI24: + 2067 .cfi_restore 4 + 2068 .cfi_def_cfa_offset 0 + 2069 004e 7047 bx lr + 2070 .LVL108: + 2071 .L144: + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2072 .loc 1 951 3 view .LVU645 + 2073 0050 0220 movs r0, #2 + 2074 .LVL109: + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.c **** + 2075 .loc 1 970 1 view .LVU646 + 2076 0052 7047 bx lr + 2077 .L150: + 2078 .align 2 + 2079 .L149: + 2080 0054 00230140 .word 1073816320 + 2081 .cfi_endproc + 2082 .LFE152: + 2084 .text + 2085 .Letext0: + 2086 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 2087 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 2088 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 2089 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 2090 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 2091 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h" + 2092 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h" + 2093 .file 9 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h" + 2094 .file 10 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + ARM GAS /tmp/ccfOJcl9.s page 67 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_adc_ex.c + /tmp/ccfOJcl9.s:17 .text.ADC_MultiModeDMAError:0000000000000000 $t + /tmp/ccfOJcl9.s:24 .text.ADC_MultiModeDMAError:0000000000000000 ADC_MultiModeDMAError + /tmp/ccfOJcl9.s:60 .text.ADC_MultiModeDMAHalfConvCplt:0000000000000000 $t + /tmp/ccfOJcl9.s:66 .text.ADC_MultiModeDMAHalfConvCplt:0000000000000000 ADC_MultiModeDMAHalfConvCplt + /tmp/ccfOJcl9.s:93 .text.ADC_MultiModeDMAConvCplt:0000000000000000 $t + /tmp/ccfOJcl9.s:99 .text.ADC_MultiModeDMAConvCplt:0000000000000000 ADC_MultiModeDMAConvCplt + /tmp/ccfOJcl9.s:193 .text.HAL_ADCEx_InjectedStart:0000000000000000 $t + /tmp/ccfOJcl9.s:200 .text.HAL_ADCEx_InjectedStart:0000000000000000 HAL_ADCEx_InjectedStart + /tmp/ccfOJcl9.s:414 .text.HAL_ADCEx_InjectedStart:00000000000000e8 $d + /tmp/ccfOJcl9.s:423 .text.HAL_ADCEx_InjectedStart_IT:0000000000000000 $t + /tmp/ccfOJcl9.s:430 .text.HAL_ADCEx_InjectedStart_IT:0000000000000000 HAL_ADCEx_InjectedStart_IT + /tmp/ccfOJcl9.s:649 .text.HAL_ADCEx_InjectedStart_IT:00000000000000f0 $d + /tmp/ccfOJcl9.s:658 .text.HAL_ADCEx_InjectedStop:0000000000000000 $t + /tmp/ccfOJcl9.s:665 .text.HAL_ADCEx_InjectedStop:0000000000000000 HAL_ADCEx_InjectedStop + /tmp/ccfOJcl9.s:758 .text.HAL_ADCEx_InjectedStop:0000000000000060 $d + /tmp/ccfOJcl9.s:763 .text.HAL_ADCEx_InjectedPollForConversion:0000000000000000 $t + /tmp/ccfOJcl9.s:770 .text.HAL_ADCEx_InjectedPollForConversion:0000000000000000 HAL_ADCEx_InjectedPollForConversion + /tmp/ccfOJcl9.s:928 .text.HAL_ADCEx_InjectedStop_IT:0000000000000000 $t + /tmp/ccfOJcl9.s:935 .text.HAL_ADCEx_InjectedStop_IT:0000000000000000 HAL_ADCEx_InjectedStop_IT + /tmp/ccfOJcl9.s:1032 .text.HAL_ADCEx_InjectedStop_IT:0000000000000068 $d + /tmp/ccfOJcl9.s:1037 .text.HAL_ADCEx_InjectedGetValue:0000000000000000 $t + /tmp/ccfOJcl9.s:1044 .text.HAL_ADCEx_InjectedGetValue:0000000000000000 HAL_ADCEx_InjectedGetValue + /tmp/ccfOJcl9.s:1073 .text.HAL_ADCEx_InjectedGetValue:0000000000000018 $d + /tmp/ccfOJcl9.s:1077 .text.HAL_ADCEx_InjectedGetValue:000000000000001c $t + /tmp/ccfOJcl9.s:1136 .text.HAL_ADCEx_MultiModeStart_DMA:0000000000000000 $t + /tmp/ccfOJcl9.s:1143 .text.HAL_ADCEx_MultiModeStart_DMA:0000000000000000 HAL_ADCEx_MultiModeStart_DMA + /tmp/ccfOJcl9.s:1378 .text.HAL_ADCEx_MultiModeStart_DMA:0000000000000110 $d + /tmp/ccfOJcl9.s:1390 .text.HAL_ADCEx_MultiModeStop_DMA:0000000000000000 $t + /tmp/ccfOJcl9.s:1397 .text.HAL_ADCEx_MultiModeStop_DMA:0000000000000000 HAL_ADCEx_MultiModeStop_DMA + /tmp/ccfOJcl9.s:1487 .text.HAL_ADCEx_MultiModeStop_DMA:000000000000005c $d + /tmp/ccfOJcl9.s:1493 .text.HAL_ADCEx_MultiModeGetValue:0000000000000000 $t + /tmp/ccfOJcl9.s:1500 .text.HAL_ADCEx_MultiModeGetValue:0000000000000000 HAL_ADCEx_MultiModeGetValue + /tmp/ccfOJcl9.s:1519 .text.HAL_ADCEx_MultiModeGetValue:0000000000000008 $d + /tmp/ccfOJcl9.s:1524 .text.HAL_ADCEx_InjectedConvCpltCallback:0000000000000000 $t + /tmp/ccfOJcl9.s:1531 .text.HAL_ADCEx_InjectedConvCpltCallback:0000000000000000 HAL_ADCEx_InjectedConvCpltCallback + /tmp/ccfOJcl9.s:1546 .text.HAL_ADCEx_InjectedConfigChannel:0000000000000000 $t + /tmp/ccfOJcl9.s:1553 .text.HAL_ADCEx_InjectedConfigChannel:0000000000000000 HAL_ADCEx_InjectedConfigChannel + /tmp/ccfOJcl9.s:1977 .text.HAL_ADCEx_InjectedConfigChannel:00000000000001f8 $d + /tmp/ccfOJcl9.s:1986 .text.HAL_ADCEx_MultiModeConfigChannel:0000000000000000 $t + /tmp/ccfOJcl9.s:1993 .text.HAL_ADCEx_MultiModeConfigChannel:0000000000000000 HAL_ADCEx_MultiModeConfigChannel + /tmp/ccfOJcl9.s:2080 .text.HAL_ADCEx_MultiModeConfigChannel:0000000000000054 $d + +UNDEFINED SYMBOLS +HAL_ADC_ErrorCallback +HAL_ADC_ConvHalfCpltCallback +HAL_ADC_ConvCpltCallback +SystemCoreClock +HAL_GetTick +HAL_DMA_Start_IT +HAL_DMA_Abort diff --git a/build/stm32f7xx_hal_adc_ex.o b/build/stm32f7xx_hal_adc_ex.o new file mode 100644 index 0000000..c769a92 Binary files /dev/null and b/build/stm32f7xx_hal_adc_ex.o differ diff --git a/build/stm32f7xx_hal_cortex.d b/build/stm32f7xx_hal_cortex.d new file mode 100644 index 0000000..a06a763 --- /dev/null +++ b/build/stm32f7xx_hal_cortex.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_cortex.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_cortex.lst b/build/stm32f7xx_hal_cortex.lst new file mode 100644 index 0000000..ee4e504 --- /dev/null +++ b/build/stm32f7xx_hal_cortex.lst @@ -0,0 +1,5737 @@ +ARM GAS /tmp/ccs1e2mJ.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_cortex.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.HAL_NVIC_SetPriorityGrouping,"ax",%progbits + 17 .align 1 + 18 .global HAL_NVIC_SetPriorityGrouping + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 HAL_NVIC_SetPriorityGrouping: + 26 .LVL0: + 27 .LFB141: + 28 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @file stm32f7xx_hal_cortex.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief CORTEX HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * functionalities of the CORTEX: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * + Initialization and de-initialization functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * + Peripheral Control functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** @verbatim + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ============================================================================== + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ##### How to use this driver ##### + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ============================================================================== + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** [..] + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** *** How to configure Interrupts using CORTEX HAL driver *** + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** =========================================================== + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** [..] + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** This section provides functions allowing to configure the NVIC interrupts (IRQ). + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** The Cortex-M4 exceptions are managed by CMSIS functions. + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (#) Configure the NVIC Priority Grouping using HAL_NVIC_SetPriorityGrouping() + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** function according to the following table. + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (#) Configure the priority of the selected IRQ Channels using HAL_NVIC_SetPriority(). + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (#) Enable the selected IRQ Channels using HAL_NVIC_EnableIRQ(). + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (#) please refer to programming manual for details in how to configure priority. + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** -@- When the NVIC_PRIORITYGROUP_0 is selected, IRQ preemption is no more possible. + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** The pending IRQ priority will be managed only by the sub priority. + ARM GAS /tmp/ccs1e2mJ.s page 2 + + + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** -@- IRQ priority order (sorted by highest to lowest priority): + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (+@) Lowest preemption priority + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (+@) Lowest sub priority + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (+@) Lowest hardware priority (IRQ number) + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** [..] + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** *** How to configure Systick using CORTEX HAL driver *** + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ======================================================== + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** [..] + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** Setup SysTick Timer for time base. + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (+) The HAL_SYSTICK_Config() function calls the SysTick_Config() function which + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** is a CMSIS function that: + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (++) Configures the SysTick Reload register with value passed as function parameter. + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (++) Configures the SysTick IRQ priority to the lowest value (0x0F). + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (++) Resets the SysTick Counter register. + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (++) Configures the SysTick Counter clock source to be Core Clock Source (HCLK). + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (++) Enables the SysTick Interrupt. + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (++) Starts the SysTick Counter. + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (+) You can change the SysTick Clock source to be HCLK_Div8 by calling the macro + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** __HAL_CORTEX_SYSTICKCLK_CONFIG(SYSTICK_CLKSOURCE_HCLK_DIV8) just after the + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** HAL_SYSTICK_Config() function call. The __HAL_CORTEX_SYSTICKCLK_CONFIG() macro is defined + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** inside the stm32f7xx_hal_cortex.h file. + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (+) You can change the SysTick IRQ priority by calling the + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** HAL_NVIC_SetPriority(SysTick_IRQn,...) function just after the HAL_SYSTICK_Config() function + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** call. The HAL_NVIC_SetPriority() call the NVIC_SetPriority() function which is a CMSIS funct + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (+) To adjust the SysTick time base, use the following formula: + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** Reload Value = SysTick Counter Clock (Hz) x Desired Time base (s) + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (++) Reload Value is the parameter to be passed for HAL_SYSTICK_Config() function + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (++) Reload Value should not exceed 0xFFFFFF + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** @endverbatim + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ****************************************************************************** + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @attention + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * Copyright (c) 2017 STMicroelectronics. + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * All rights reserved. + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This software is licensed under terms that can be found in the LICENSE file in + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * the root directory of this software component. + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ****************************************************************************** + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Includes ------------------------------------------------------------------*/ + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** #include "stm32f7xx_hal.h" + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** @addtogroup STM32F7xx_HAL_Driver + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @{ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + ARM GAS /tmp/ccs1e2mJ.s page 3 + + + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** @defgroup CORTEX CORTEX + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief CORTEX HAL module driver + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @{ + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** #ifdef HAL_CORTEX_MODULE_ENABLED + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Private types -------------------------------------------------------------*/ + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Private variables ---------------------------------------------------------*/ + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Private constants ---------------------------------------------------------*/ + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Private macros ------------------------------------------------------------*/ + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Private functions ---------------------------------------------------------*/ + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Exported functions --------------------------------------------------------*/ + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** @defgroup CORTEX_Exported_Functions CORTEX Exported Functions + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @{ + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** @defgroup CORTEX_Exported_Functions_Group1 Initialization and de-initialization functions + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Initialization and Configuration functions + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** @verbatim + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ============================================================================== + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ##### Initialization and de-initialization functions ##### + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ============================================================================== + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** [..] + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** This section provides the CORTEX HAL driver functions allowing to configure Interrupts + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** Systick functionalities + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** @endverbatim + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @{ + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Sets the priority grouping field (preemption priority and subpriority) + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * using the required unlock sequence. + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param PriorityGroup The priority grouping bits length. + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be one of the following values: + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * 4 bits for subpriority + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * 3 bits for subpriority + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * 2 bits for subpriority + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * 1 bits for subpriority + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * 0 bits for subpriority + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible. + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * The pending IRQ priority will be managed only by the subpriority. + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 29 .loc 1 143 1 view -0 + ARM GAS /tmp/ccs1e2mJ.s page 4 + + + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 33 @ link register save eliminated. + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + 34 .loc 1 145 3 view .LVU1 + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** NVIC_SetPriorityGrouping(PriorityGroup); + 35 .loc 1 148 3 view .LVU2 + 36 .LBB38: + 37 .LBI38: + 38 .file 2 "Drivers/CMSIS/Include/core_cm7.h" + 1:Drivers/CMSIS/Include/core_cm7.h **** /**************************************************************************//** + 2:Drivers/CMSIS/Include/core_cm7.h **** * @file core_cm7.h + 3:Drivers/CMSIS/Include/core_cm7.h **** * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + 4:Drivers/CMSIS/Include/core_cm7.h **** * @version V5.0.8 + 5:Drivers/CMSIS/Include/core_cm7.h **** * @date 04. June 2018 + 6:Drivers/CMSIS/Include/core_cm7.h **** ******************************************************************************/ + 7:Drivers/CMSIS/Include/core_cm7.h **** /* + 8:Drivers/CMSIS/Include/core_cm7.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + 9:Drivers/CMSIS/Include/core_cm7.h **** * + 10:Drivers/CMSIS/Include/core_cm7.h **** * SPDX-License-Identifier: Apache-2.0 + 11:Drivers/CMSIS/Include/core_cm7.h **** * + 12:Drivers/CMSIS/Include/core_cm7.h **** * Licensed under the Apache License, Version 2.0 (the License); you may + 13:Drivers/CMSIS/Include/core_cm7.h **** * not use this file except in compliance with the License. + 14:Drivers/CMSIS/Include/core_cm7.h **** * You may obtain a copy of the License at + 15:Drivers/CMSIS/Include/core_cm7.h **** * + 16:Drivers/CMSIS/Include/core_cm7.h **** * www.apache.org/licenses/LICENSE-2.0 + 17:Drivers/CMSIS/Include/core_cm7.h **** * + 18:Drivers/CMSIS/Include/core_cm7.h **** * Unless required by applicable law or agreed to in writing, software + 19:Drivers/CMSIS/Include/core_cm7.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT + 20:Drivers/CMSIS/Include/core_cm7.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 21:Drivers/CMSIS/Include/core_cm7.h **** * See the License for the specific language governing permissions and + 22:Drivers/CMSIS/Include/core_cm7.h **** * limitations under the License. + 23:Drivers/CMSIS/Include/core_cm7.h **** */ + 24:Drivers/CMSIS/Include/core_cm7.h **** + 25:Drivers/CMSIS/Include/core_cm7.h **** #if defined ( __ICCARM__ ) + 26:Drivers/CMSIS/Include/core_cm7.h **** #pragma system_include /* treat file as system include file for MISRA check */ + 27:Drivers/CMSIS/Include/core_cm7.h **** #elif defined (__clang__) + 28:Drivers/CMSIS/Include/core_cm7.h **** #pragma clang system_header /* treat file as system include file */ + 29:Drivers/CMSIS/Include/core_cm7.h **** #endif + 30:Drivers/CMSIS/Include/core_cm7.h **** + 31:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __CORE_CM7_H_GENERIC + 32:Drivers/CMSIS/Include/core_cm7.h **** #define __CORE_CM7_H_GENERIC + 33:Drivers/CMSIS/Include/core_cm7.h **** + 34:Drivers/CMSIS/Include/core_cm7.h **** #include + 35:Drivers/CMSIS/Include/core_cm7.h **** + 36:Drivers/CMSIS/Include/core_cm7.h **** #ifdef __cplusplus + 37:Drivers/CMSIS/Include/core_cm7.h **** extern "C" { + 38:Drivers/CMSIS/Include/core_cm7.h **** #endif + 39:Drivers/CMSIS/Include/core_cm7.h **** + 40:Drivers/CMSIS/Include/core_cm7.h **** /** + 41:Drivers/CMSIS/Include/core_cm7.h **** \page CMSIS_MISRA_Exceptions MISRA-C:2004 Compliance Exceptions + 42:Drivers/CMSIS/Include/core_cm7.h **** CMSIS violates the following MISRA-C:2004 rules: + 43:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccs1e2mJ.s page 5 + + + 44:Drivers/CMSIS/Include/core_cm7.h **** \li Required Rule 8.5, object/function definition in header file.
+ 45:Drivers/CMSIS/Include/core_cm7.h **** Function definitions in header files are used to allow 'inlining'. + 46:Drivers/CMSIS/Include/core_cm7.h **** + 47:Drivers/CMSIS/Include/core_cm7.h **** \li Required Rule 18.4, declaration of union type or object of union type: '{...}'.
+ 48:Drivers/CMSIS/Include/core_cm7.h **** Unions are used for effective representation of core registers. + 49:Drivers/CMSIS/Include/core_cm7.h **** + 50:Drivers/CMSIS/Include/core_cm7.h **** \li Advisory Rule 19.7, Function-like macro defined.
+ 51:Drivers/CMSIS/Include/core_cm7.h **** Function-like macros are used to allow more efficient code. + 52:Drivers/CMSIS/Include/core_cm7.h **** */ + 53:Drivers/CMSIS/Include/core_cm7.h **** + 54:Drivers/CMSIS/Include/core_cm7.h **** + 55:Drivers/CMSIS/Include/core_cm7.h **** /******************************************************************************* + 56:Drivers/CMSIS/Include/core_cm7.h **** * CMSIS definitions + 57:Drivers/CMSIS/Include/core_cm7.h **** ******************************************************************************/ + 58:Drivers/CMSIS/Include/core_cm7.h **** /** + 59:Drivers/CMSIS/Include/core_cm7.h **** \ingroup Cortex_M7 + 60:Drivers/CMSIS/Include/core_cm7.h **** @{ + 61:Drivers/CMSIS/Include/core_cm7.h **** */ + 62:Drivers/CMSIS/Include/core_cm7.h **** + 63:Drivers/CMSIS/Include/core_cm7.h **** #include "cmsis_version.h" + 64:Drivers/CMSIS/Include/core_cm7.h **** + 65:Drivers/CMSIS/Include/core_cm7.h **** /* CMSIS CM7 definitions */ + 66:Drivers/CMSIS/Include/core_cm7.h **** #define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:1 + 67:Drivers/CMSIS/Include/core_cm7.h **** #define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0 + 68:Drivers/CMSIS/Include/core_cm7.h **** #define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + 69:Drivers/CMSIS/Include/core_cm7.h **** __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS + 70:Drivers/CMSIS/Include/core_cm7.h **** + 71:Drivers/CMSIS/Include/core_cm7.h **** #define __CORTEX_M (7U) /*!< Cortex-M Core */ + 72:Drivers/CMSIS/Include/core_cm7.h **** + 73:Drivers/CMSIS/Include/core_cm7.h **** /** __FPU_USED indicates whether an FPU is used or not. + 74:Drivers/CMSIS/Include/core_cm7.h **** For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and fun + 75:Drivers/CMSIS/Include/core_cm7.h **** */ + 76:Drivers/CMSIS/Include/core_cm7.h **** #if defined ( __CC_ARM ) + 77:Drivers/CMSIS/Include/core_cm7.h **** #if defined __TARGET_FPU_VFP + 78:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 79:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 80:Drivers/CMSIS/Include/core_cm7.h **** #else + 81:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 82:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 83:Drivers/CMSIS/Include/core_cm7.h **** #endif + 84:Drivers/CMSIS/Include/core_cm7.h **** #else + 85:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 86:Drivers/CMSIS/Include/core_cm7.h **** #endif + 87:Drivers/CMSIS/Include/core_cm7.h **** + 88:Drivers/CMSIS/Include/core_cm7.h **** #elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + 89:Drivers/CMSIS/Include/core_cm7.h **** #if defined __ARM_PCS_VFP + 90:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 91:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 92:Drivers/CMSIS/Include/core_cm7.h **** #else + 93:Drivers/CMSIS/Include/core_cm7.h **** #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESEN + 94:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 95:Drivers/CMSIS/Include/core_cm7.h **** #endif + 96:Drivers/CMSIS/Include/core_cm7.h **** #else + 97:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 98:Drivers/CMSIS/Include/core_cm7.h **** #endif + 99:Drivers/CMSIS/Include/core_cm7.h **** + 100:Drivers/CMSIS/Include/core_cm7.h **** #elif defined ( __GNUC__ ) + ARM GAS /tmp/ccs1e2mJ.s page 6 + + + 101:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__VFP_FP__) && !defined(__SOFTFP__) + 102:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 103:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 104:Drivers/CMSIS/Include/core_cm7.h **** #else + 105:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 106:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 107:Drivers/CMSIS/Include/core_cm7.h **** #endif + 108:Drivers/CMSIS/Include/core_cm7.h **** #else + 109:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 110:Drivers/CMSIS/Include/core_cm7.h **** #endif + 111:Drivers/CMSIS/Include/core_cm7.h **** + 112:Drivers/CMSIS/Include/core_cm7.h **** #elif defined ( __ICCARM__ ) + 113:Drivers/CMSIS/Include/core_cm7.h **** #if defined __ARMVFP__ + 114:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 115:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 116:Drivers/CMSIS/Include/core_cm7.h **** #else + 117:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 118:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 119:Drivers/CMSIS/Include/core_cm7.h **** #endif + 120:Drivers/CMSIS/Include/core_cm7.h **** #else + 121:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 122:Drivers/CMSIS/Include/core_cm7.h **** #endif + 123:Drivers/CMSIS/Include/core_cm7.h **** + 124:Drivers/CMSIS/Include/core_cm7.h **** #elif defined ( __TI_ARM__ ) + 125:Drivers/CMSIS/Include/core_cm7.h **** #if defined __TI_VFP_SUPPORT__ + 126:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 127:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 128:Drivers/CMSIS/Include/core_cm7.h **** #else + 129:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 130:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 131:Drivers/CMSIS/Include/core_cm7.h **** #endif + 132:Drivers/CMSIS/Include/core_cm7.h **** #else + 133:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 134:Drivers/CMSIS/Include/core_cm7.h **** #endif + 135:Drivers/CMSIS/Include/core_cm7.h **** + 136:Drivers/CMSIS/Include/core_cm7.h **** #elif defined ( __TASKING__ ) + 137:Drivers/CMSIS/Include/core_cm7.h **** #if defined __FPU_VFP__ + 138:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 139:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 140:Drivers/CMSIS/Include/core_cm7.h **** #else + 141:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 142:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 143:Drivers/CMSIS/Include/core_cm7.h **** #endif + 144:Drivers/CMSIS/Include/core_cm7.h **** #else + 145:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 146:Drivers/CMSIS/Include/core_cm7.h **** #endif + 147:Drivers/CMSIS/Include/core_cm7.h **** + 148:Drivers/CMSIS/Include/core_cm7.h **** #elif defined ( __CSMC__ ) + 149:Drivers/CMSIS/Include/core_cm7.h **** #if ( __CSMC__ & 0x400U) + 150:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) + 151:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 1U + 152:Drivers/CMSIS/Include/core_cm7.h **** #else + 153:Drivers/CMSIS/Include/core_cm7.h **** #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT) + 154:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + 155:Drivers/CMSIS/Include/core_cm7.h **** #endif + 156:Drivers/CMSIS/Include/core_cm7.h **** #else + 157:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_USED 0U + ARM GAS /tmp/ccs1e2mJ.s page 7 + + + 158:Drivers/CMSIS/Include/core_cm7.h **** #endif + 159:Drivers/CMSIS/Include/core_cm7.h **** + 160:Drivers/CMSIS/Include/core_cm7.h **** #endif + 161:Drivers/CMSIS/Include/core_cm7.h **** + 162:Drivers/CMSIS/Include/core_cm7.h **** #include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + 163:Drivers/CMSIS/Include/core_cm7.h **** + 164:Drivers/CMSIS/Include/core_cm7.h **** + 165:Drivers/CMSIS/Include/core_cm7.h **** #ifdef __cplusplus + 166:Drivers/CMSIS/Include/core_cm7.h **** } + 167:Drivers/CMSIS/Include/core_cm7.h **** #endif + 168:Drivers/CMSIS/Include/core_cm7.h **** + 169:Drivers/CMSIS/Include/core_cm7.h **** #endif /* __CORE_CM7_H_GENERIC */ + 170:Drivers/CMSIS/Include/core_cm7.h **** + 171:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __CMSIS_GENERIC + 172:Drivers/CMSIS/Include/core_cm7.h **** + 173:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __CORE_CM7_H_DEPENDANT + 174:Drivers/CMSIS/Include/core_cm7.h **** #define __CORE_CM7_H_DEPENDANT + 175:Drivers/CMSIS/Include/core_cm7.h **** + 176:Drivers/CMSIS/Include/core_cm7.h **** #ifdef __cplusplus + 177:Drivers/CMSIS/Include/core_cm7.h **** extern "C" { + 178:Drivers/CMSIS/Include/core_cm7.h **** #endif + 179:Drivers/CMSIS/Include/core_cm7.h **** + 180:Drivers/CMSIS/Include/core_cm7.h **** /* check device defines and use defaults */ + 181:Drivers/CMSIS/Include/core_cm7.h **** #if defined __CHECK_DEVICE_DEFINES + 182:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __CM7_REV + 183:Drivers/CMSIS/Include/core_cm7.h **** #define __CM7_REV 0x0000U + 184:Drivers/CMSIS/Include/core_cm7.h **** #warning "__CM7_REV not defined in device header file; using default!" + 185:Drivers/CMSIS/Include/core_cm7.h **** #endif + 186:Drivers/CMSIS/Include/core_cm7.h **** + 187:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __FPU_PRESENT + 188:Drivers/CMSIS/Include/core_cm7.h **** #define __FPU_PRESENT 0U + 189:Drivers/CMSIS/Include/core_cm7.h **** #warning "__FPU_PRESENT not defined in device header file; using default!" + 190:Drivers/CMSIS/Include/core_cm7.h **** #endif + 191:Drivers/CMSIS/Include/core_cm7.h **** + 192:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __MPU_PRESENT + 193:Drivers/CMSIS/Include/core_cm7.h **** #define __MPU_PRESENT 0U + 194:Drivers/CMSIS/Include/core_cm7.h **** #warning "__MPU_PRESENT not defined in device header file; using default!" + 195:Drivers/CMSIS/Include/core_cm7.h **** #endif + 196:Drivers/CMSIS/Include/core_cm7.h **** + 197:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __ICACHE_PRESENT + 198:Drivers/CMSIS/Include/core_cm7.h **** #define __ICACHE_PRESENT 0U + 199:Drivers/CMSIS/Include/core_cm7.h **** #warning "__ICACHE_PRESENT not defined in device header file; using default!" + 200:Drivers/CMSIS/Include/core_cm7.h **** #endif + 201:Drivers/CMSIS/Include/core_cm7.h **** + 202:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __DCACHE_PRESENT + 203:Drivers/CMSIS/Include/core_cm7.h **** #define __DCACHE_PRESENT 0U + 204:Drivers/CMSIS/Include/core_cm7.h **** #warning "__DCACHE_PRESENT not defined in device header file; using default!" + 205:Drivers/CMSIS/Include/core_cm7.h **** #endif + 206:Drivers/CMSIS/Include/core_cm7.h **** + 207:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __DTCM_PRESENT + 208:Drivers/CMSIS/Include/core_cm7.h **** #define __DTCM_PRESENT 0U + 209:Drivers/CMSIS/Include/core_cm7.h **** #warning "__DTCM_PRESENT not defined in device header file; using default!" + 210:Drivers/CMSIS/Include/core_cm7.h **** #endif + 211:Drivers/CMSIS/Include/core_cm7.h **** + 212:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __NVIC_PRIO_BITS + 213:Drivers/CMSIS/Include/core_cm7.h **** #define __NVIC_PRIO_BITS 3U + 214:Drivers/CMSIS/Include/core_cm7.h **** #warning "__NVIC_PRIO_BITS not defined in device header file; using default!" + ARM GAS /tmp/ccs1e2mJ.s page 8 + + + 215:Drivers/CMSIS/Include/core_cm7.h **** #endif + 216:Drivers/CMSIS/Include/core_cm7.h **** + 217:Drivers/CMSIS/Include/core_cm7.h **** #ifndef __Vendor_SysTickConfig + 218:Drivers/CMSIS/Include/core_cm7.h **** #define __Vendor_SysTickConfig 0U + 219:Drivers/CMSIS/Include/core_cm7.h **** #warning "__Vendor_SysTickConfig not defined in device header file; using default!" + 220:Drivers/CMSIS/Include/core_cm7.h **** #endif + 221:Drivers/CMSIS/Include/core_cm7.h **** #endif + 222:Drivers/CMSIS/Include/core_cm7.h **** + 223:Drivers/CMSIS/Include/core_cm7.h **** /* IO definitions (access restrictions to peripheral registers) */ + 224:Drivers/CMSIS/Include/core_cm7.h **** /** + 225:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_glob_defs CMSIS Global Defines + 226:Drivers/CMSIS/Include/core_cm7.h **** + 227:Drivers/CMSIS/Include/core_cm7.h **** IO Type Qualifiers are used + 228:Drivers/CMSIS/Include/core_cm7.h **** \li to specify the access to peripheral variables. + 229:Drivers/CMSIS/Include/core_cm7.h **** \li for automatic generation of peripheral register debug information. + 230:Drivers/CMSIS/Include/core_cm7.h **** */ + 231:Drivers/CMSIS/Include/core_cm7.h **** #ifdef __cplusplus + 232:Drivers/CMSIS/Include/core_cm7.h **** #define __I volatile /*!< Defines 'read only' permissions */ + 233:Drivers/CMSIS/Include/core_cm7.h **** #else + 234:Drivers/CMSIS/Include/core_cm7.h **** #define __I volatile const /*!< Defines 'read only' permissions */ + 235:Drivers/CMSIS/Include/core_cm7.h **** #endif + 236:Drivers/CMSIS/Include/core_cm7.h **** #define __O volatile /*!< Defines 'write only' permissions */ + 237:Drivers/CMSIS/Include/core_cm7.h **** #define __IO volatile /*!< Defines 'read / write' permissions */ + 238:Drivers/CMSIS/Include/core_cm7.h **** + 239:Drivers/CMSIS/Include/core_cm7.h **** /* following defines should be used for structure members */ + 240:Drivers/CMSIS/Include/core_cm7.h **** #define __IM volatile const /*! Defines 'read only' structure member permissions */ + 241:Drivers/CMSIS/Include/core_cm7.h **** #define __OM volatile /*! Defines 'write only' structure member permissions */ + 242:Drivers/CMSIS/Include/core_cm7.h **** #define __IOM volatile /*! Defines 'read / write' structure member permissions */ + 243:Drivers/CMSIS/Include/core_cm7.h **** + 244:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group Cortex_M7 */ + 245:Drivers/CMSIS/Include/core_cm7.h **** + 246:Drivers/CMSIS/Include/core_cm7.h **** + 247:Drivers/CMSIS/Include/core_cm7.h **** + 248:Drivers/CMSIS/Include/core_cm7.h **** /******************************************************************************* + 249:Drivers/CMSIS/Include/core_cm7.h **** * Register Abstraction + 250:Drivers/CMSIS/Include/core_cm7.h **** Core Register contain: + 251:Drivers/CMSIS/Include/core_cm7.h **** - Core Register + 252:Drivers/CMSIS/Include/core_cm7.h **** - Core NVIC Register + 253:Drivers/CMSIS/Include/core_cm7.h **** - Core SCB Register + 254:Drivers/CMSIS/Include/core_cm7.h **** - Core SysTick Register + 255:Drivers/CMSIS/Include/core_cm7.h **** - Core Debug Register + 256:Drivers/CMSIS/Include/core_cm7.h **** - Core MPU Register + 257:Drivers/CMSIS/Include/core_cm7.h **** - Core FPU Register + 258:Drivers/CMSIS/Include/core_cm7.h **** ******************************************************************************/ + 259:Drivers/CMSIS/Include/core_cm7.h **** /** + 260:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_core_register Defines and Type Definitions + 261:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions and defines for Cortex-M processor based devices. + 262:Drivers/CMSIS/Include/core_cm7.h **** */ + 263:Drivers/CMSIS/Include/core_cm7.h **** + 264:Drivers/CMSIS/Include/core_cm7.h **** /** + 265:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register + 266:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_CORE Status and Control Registers + 267:Drivers/CMSIS/Include/core_cm7.h **** \brief Core Register type definitions. + 268:Drivers/CMSIS/Include/core_cm7.h **** @{ + 269:Drivers/CMSIS/Include/core_cm7.h **** */ + 270:Drivers/CMSIS/Include/core_cm7.h **** + 271:Drivers/CMSIS/Include/core_cm7.h **** /** + ARM GAS /tmp/ccs1e2mJ.s page 9 + + + 272:Drivers/CMSIS/Include/core_cm7.h **** \brief Union type to access the Application Program Status Register (APSR). + 273:Drivers/CMSIS/Include/core_cm7.h **** */ + 274:Drivers/CMSIS/Include/core_cm7.h **** typedef union + 275:Drivers/CMSIS/Include/core_cm7.h **** { + 276:Drivers/CMSIS/Include/core_cm7.h **** struct + 277:Drivers/CMSIS/Include/core_cm7.h **** { + 278:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved0:16; /*!< bit: 0..15 Reserved */ + 279:Drivers/CMSIS/Include/core_cm7.h **** uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + 280:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved1:7; /*!< bit: 20..26 Reserved */ + 281:Drivers/CMSIS/Include/core_cm7.h **** uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 282:Drivers/CMSIS/Include/core_cm7.h **** uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + 283:Drivers/CMSIS/Include/core_cm7.h **** uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + 284:Drivers/CMSIS/Include/core_cm7.h **** uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + 285:Drivers/CMSIS/Include/core_cm7.h **** uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + 286:Drivers/CMSIS/Include/core_cm7.h **** } b; /*!< Structure used for bit access */ + 287:Drivers/CMSIS/Include/core_cm7.h **** uint32_t w; /*!< Type used for word access */ + 288:Drivers/CMSIS/Include/core_cm7.h **** } APSR_Type; + 289:Drivers/CMSIS/Include/core_cm7.h **** + 290:Drivers/CMSIS/Include/core_cm7.h **** /* APSR Register Definitions */ + 291:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_N_Pos 31U /*!< APSR + 292:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_N_Msk (1UL << APSR_N_Pos) /*!< APSR + 293:Drivers/CMSIS/Include/core_cm7.h **** + 294:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_Z_Pos 30U /*!< APSR + 295:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_Z_Msk (1UL << APSR_Z_Pos) /*!< APSR + 296:Drivers/CMSIS/Include/core_cm7.h **** + 297:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_C_Pos 29U /*!< APSR + 298:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_C_Msk (1UL << APSR_C_Pos) /*!< APSR + 299:Drivers/CMSIS/Include/core_cm7.h **** + 300:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_V_Pos 28U /*!< APSR + 301:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_V_Msk (1UL << APSR_V_Pos) /*!< APSR + 302:Drivers/CMSIS/Include/core_cm7.h **** + 303:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_Q_Pos 27U /*!< APSR + 304:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_Q_Msk (1UL << APSR_Q_Pos) /*!< APSR + 305:Drivers/CMSIS/Include/core_cm7.h **** + 306:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_GE_Pos 16U /*!< APSR + 307:Drivers/CMSIS/Include/core_cm7.h **** #define APSR_GE_Msk (0xFUL << APSR_GE_Pos) /*!< APSR + 308:Drivers/CMSIS/Include/core_cm7.h **** + 309:Drivers/CMSIS/Include/core_cm7.h **** + 310:Drivers/CMSIS/Include/core_cm7.h **** /** + 311:Drivers/CMSIS/Include/core_cm7.h **** \brief Union type to access the Interrupt Program Status Register (IPSR). + 312:Drivers/CMSIS/Include/core_cm7.h **** */ + 313:Drivers/CMSIS/Include/core_cm7.h **** typedef union + 314:Drivers/CMSIS/Include/core_cm7.h **** { + 315:Drivers/CMSIS/Include/core_cm7.h **** struct + 316:Drivers/CMSIS/Include/core_cm7.h **** { + 317:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + 318:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved0:23; /*!< bit: 9..31 Reserved */ + 319:Drivers/CMSIS/Include/core_cm7.h **** } b; /*!< Structure used for bit access */ + 320:Drivers/CMSIS/Include/core_cm7.h **** uint32_t w; /*!< Type used for word access */ + 321:Drivers/CMSIS/Include/core_cm7.h **** } IPSR_Type; + 322:Drivers/CMSIS/Include/core_cm7.h **** + 323:Drivers/CMSIS/Include/core_cm7.h **** /* IPSR Register Definitions */ + 324:Drivers/CMSIS/Include/core_cm7.h **** #define IPSR_ISR_Pos 0U /*!< IPSR + 325:Drivers/CMSIS/Include/core_cm7.h **** #define IPSR_ISR_Msk (0x1FFUL /*<< IPSR_ISR_Pos*/) /*!< IPSR + 326:Drivers/CMSIS/Include/core_cm7.h **** + 327:Drivers/CMSIS/Include/core_cm7.h **** + 328:Drivers/CMSIS/Include/core_cm7.h **** /** + ARM GAS /tmp/ccs1e2mJ.s page 10 + + + 329:Drivers/CMSIS/Include/core_cm7.h **** \brief Union type to access the Special-Purpose Program Status Registers (xPSR). + 330:Drivers/CMSIS/Include/core_cm7.h **** */ + 331:Drivers/CMSIS/Include/core_cm7.h **** typedef union + 332:Drivers/CMSIS/Include/core_cm7.h **** { + 333:Drivers/CMSIS/Include/core_cm7.h **** struct + 334:Drivers/CMSIS/Include/core_cm7.h **** { + 335:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ISR:9; /*!< bit: 0.. 8 Exception number */ + 336:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved0:1; /*!< bit: 9 Reserved */ + 337:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ICI_IT_1:6; /*!< bit: 10..15 ICI/IT part 1 */ + 338:Drivers/CMSIS/Include/core_cm7.h **** uint32_t GE:4; /*!< bit: 16..19 Greater than or Equal flags */ + 339:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved1:4; /*!< bit: 20..23 Reserved */ + 340:Drivers/CMSIS/Include/core_cm7.h **** uint32_t T:1; /*!< bit: 24 Thumb bit */ + 341:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ICI_IT_2:2; /*!< bit: 25..26 ICI/IT part 2 */ + 342:Drivers/CMSIS/Include/core_cm7.h **** uint32_t Q:1; /*!< bit: 27 Saturation condition flag */ + 343:Drivers/CMSIS/Include/core_cm7.h **** uint32_t V:1; /*!< bit: 28 Overflow condition code flag */ + 344:Drivers/CMSIS/Include/core_cm7.h **** uint32_t C:1; /*!< bit: 29 Carry condition code flag */ + 345:Drivers/CMSIS/Include/core_cm7.h **** uint32_t Z:1; /*!< bit: 30 Zero condition code flag */ + 346:Drivers/CMSIS/Include/core_cm7.h **** uint32_t N:1; /*!< bit: 31 Negative condition code flag */ + 347:Drivers/CMSIS/Include/core_cm7.h **** } b; /*!< Structure used for bit access */ + 348:Drivers/CMSIS/Include/core_cm7.h **** uint32_t w; /*!< Type used for word access */ + 349:Drivers/CMSIS/Include/core_cm7.h **** } xPSR_Type; + 350:Drivers/CMSIS/Include/core_cm7.h **** + 351:Drivers/CMSIS/Include/core_cm7.h **** /* xPSR Register Definitions */ + 352:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_N_Pos 31U /*!< xPSR + 353:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_N_Msk (1UL << xPSR_N_Pos) /*!< xPSR + 354:Drivers/CMSIS/Include/core_cm7.h **** + 355:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_Z_Pos 30U /*!< xPSR + 356:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_Z_Msk (1UL << xPSR_Z_Pos) /*!< xPSR + 357:Drivers/CMSIS/Include/core_cm7.h **** + 358:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_C_Pos 29U /*!< xPSR + 359:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_C_Msk (1UL << xPSR_C_Pos) /*!< xPSR + 360:Drivers/CMSIS/Include/core_cm7.h **** + 361:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_V_Pos 28U /*!< xPSR + 362:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_V_Msk (1UL << xPSR_V_Pos) /*!< xPSR + 363:Drivers/CMSIS/Include/core_cm7.h **** + 364:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_Q_Pos 27U /*!< xPSR + 365:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_Q_Msk (1UL << xPSR_Q_Pos) /*!< xPSR + 366:Drivers/CMSIS/Include/core_cm7.h **** + 367:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ICI_IT_2_Pos 25U /*!< xPSR + 368:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ICI_IT_2_Msk (3UL << xPSR_ICI_IT_2_Pos) /*!< xPSR + 369:Drivers/CMSIS/Include/core_cm7.h **** + 370:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_T_Pos 24U /*!< xPSR + 371:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR + 372:Drivers/CMSIS/Include/core_cm7.h **** + 373:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_GE_Pos 16U /*!< xPSR + 374:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_GE_Msk (0xFUL << xPSR_GE_Pos) /*!< xPSR + 375:Drivers/CMSIS/Include/core_cm7.h **** + 376:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ICI_IT_1_Pos 10U /*!< xPSR + 377:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ICI_IT_1_Msk (0x3FUL << xPSR_ICI_IT_1_Pos) /*!< xPSR + 378:Drivers/CMSIS/Include/core_cm7.h **** + 379:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ISR_Pos 0U /*!< xPSR + 380:Drivers/CMSIS/Include/core_cm7.h **** #define xPSR_ISR_Msk (0x1FFUL /*<< xPSR_ISR_Pos*/) /*!< xPSR + 381:Drivers/CMSIS/Include/core_cm7.h **** + 382:Drivers/CMSIS/Include/core_cm7.h **** + 383:Drivers/CMSIS/Include/core_cm7.h **** /** + 384:Drivers/CMSIS/Include/core_cm7.h **** \brief Union type to access the Control Registers (CONTROL). + 385:Drivers/CMSIS/Include/core_cm7.h **** */ + ARM GAS /tmp/ccs1e2mJ.s page 11 + + + 386:Drivers/CMSIS/Include/core_cm7.h **** typedef union + 387:Drivers/CMSIS/Include/core_cm7.h **** { + 388:Drivers/CMSIS/Include/core_cm7.h **** struct + 389:Drivers/CMSIS/Include/core_cm7.h **** { + 390:Drivers/CMSIS/Include/core_cm7.h **** uint32_t nPRIV:1; /*!< bit: 0 Execution privilege in Thread mode */ + 391:Drivers/CMSIS/Include/core_cm7.h **** uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + 392:Drivers/CMSIS/Include/core_cm7.h **** uint32_t FPCA:1; /*!< bit: 2 FP extension active flag */ + 393:Drivers/CMSIS/Include/core_cm7.h **** uint32_t _reserved0:29; /*!< bit: 3..31 Reserved */ + 394:Drivers/CMSIS/Include/core_cm7.h **** } b; /*!< Structure used for bit access */ + 395:Drivers/CMSIS/Include/core_cm7.h **** uint32_t w; /*!< Type used for word access */ + 396:Drivers/CMSIS/Include/core_cm7.h **** } CONTROL_Type; + 397:Drivers/CMSIS/Include/core_cm7.h **** + 398:Drivers/CMSIS/Include/core_cm7.h **** /* CONTROL Register Definitions */ + 399:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_FPCA_Pos 2U /*!< CONT + 400:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_FPCA_Msk (1UL << CONTROL_FPCA_Pos) /*!< CONT + 401:Drivers/CMSIS/Include/core_cm7.h **** + 402:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_SPSEL_Pos 1U /*!< CONT + 403:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONT + 404:Drivers/CMSIS/Include/core_cm7.h **** + 405:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_nPRIV_Pos 0U /*!< CONT + 406:Drivers/CMSIS/Include/core_cm7.h **** #define CONTROL_nPRIV_Msk (1UL /*<< CONTROL_nPRIV_Pos*/) /*!< CONT + 407:Drivers/CMSIS/Include/core_cm7.h **** + 408:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_CORE */ + 409:Drivers/CMSIS/Include/core_cm7.h **** + 410:Drivers/CMSIS/Include/core_cm7.h **** + 411:Drivers/CMSIS/Include/core_cm7.h **** /** + 412:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register + 413:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_NVIC Nested Vectored Interrupt Controller (NVIC) + 414:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the NVIC Registers + 415:Drivers/CMSIS/Include/core_cm7.h **** @{ + 416:Drivers/CMSIS/Include/core_cm7.h **** */ + 417:Drivers/CMSIS/Include/core_cm7.h **** + 418:Drivers/CMSIS/Include/core_cm7.h **** /** + 419:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Nested Vectored Interrupt Controller (NVIC). + 420:Drivers/CMSIS/Include/core_cm7.h **** */ + 421:Drivers/CMSIS/Include/core_cm7.h **** typedef struct + 422:Drivers/CMSIS/Include/core_cm7.h **** { + 423:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ISER[8U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + 424:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[24U]; + 425:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ICER[8U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register + 426:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RSERVED1[24U]; + 427:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ISPR[8U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register * + 428:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED2[24U]; + 429:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ICPR[8U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register + 430:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED3[24U]; + 431:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t IABR[8U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + 432:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED4[56U]; + 433:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint8_t IP[240U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bi + 434:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED5[644U]; + 435:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t STIR; /*!< Offset: 0xE00 ( /W) Software Trigger Interrupt Regis + 436:Drivers/CMSIS/Include/core_cm7.h **** } NVIC_Type; + 437:Drivers/CMSIS/Include/core_cm7.h **** + 438:Drivers/CMSIS/Include/core_cm7.h **** /* Software Triggered Interrupt Register Definitions */ + 439:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_STIR_INTID_Pos 0U /*!< STIR: I + 440:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_STIR_INTID_Msk (0x1FFUL /*<< NVIC_STIR_INTID_Pos*/) /*!< STIR: I + 441:Drivers/CMSIS/Include/core_cm7.h **** + 442:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_NVIC */ + ARM GAS /tmp/ccs1e2mJ.s page 12 + + + 443:Drivers/CMSIS/Include/core_cm7.h **** + 444:Drivers/CMSIS/Include/core_cm7.h **** + 445:Drivers/CMSIS/Include/core_cm7.h **** /** + 446:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register + 447:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_SCB System Control Block (SCB) + 448:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the System Control Block Registers + 449:Drivers/CMSIS/Include/core_cm7.h **** @{ + 450:Drivers/CMSIS/Include/core_cm7.h **** */ + 451:Drivers/CMSIS/Include/core_cm7.h **** + 452:Drivers/CMSIS/Include/core_cm7.h **** /** + 453:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the System Control Block (SCB). + 454:Drivers/CMSIS/Include/core_cm7.h **** */ + 455:Drivers/CMSIS/Include/core_cm7.h **** typedef struct + 456:Drivers/CMSIS/Include/core_cm7.h **** { + 457:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CPUID; /*!< Offset: 0x000 (R/ ) CPUID Base Register */ + 458:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ICSR; /*!< Offset: 0x004 (R/W) Interrupt Control and State Regi + 459:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ + 460:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t AIRCR; /*!< Offset: 0x00C (R/W) Application Interrupt and Reset + 461:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t SCR; /*!< Offset: 0x010 (R/W) System Control Register */ + 462:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CCR; /*!< Offset: 0x014 (R/W) Configuration Control Register * + 463:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint8_t SHPR[12U]; /*!< Offset: 0x018 (R/W) System Handlers Priority Registe + 464:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State + 465:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CFSR; /*!< Offset: 0x028 (R/W) Configurable Fault Status Regist + 466:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t HFSR; /*!< Offset: 0x02C (R/W) HardFault Status Register */ + 467:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t DFSR; /*!< Offset: 0x030 (R/W) Debug Fault Status Register */ + 468:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t MMFAR; /*!< Offset: 0x034 (R/W) MemManage Fault Address Register + 469:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t BFAR; /*!< Offset: 0x038 (R/W) BusFault Address Register */ + 470:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t AFSR; /*!< Offset: 0x03C (R/W) Auxiliary Fault Status Register + 471:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + 472:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + 473:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + 474:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + 475:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Regis + 476:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[1U]; + 477:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + 478:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + 479:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + 480:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + 481:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Regis + 482:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED3[93U]; + 483:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Reg + 484:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED4[15U]; + 485:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 + 486:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 + 487:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 + 488:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED5[1U]; + 489:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + 490:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED6[1U]; + 491:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU + 492:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC + 493:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + 494:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + 495:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + 496:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + 497:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by + 498:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by + 499:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED7[6U]; + ARM GAS /tmp/ccs1e2mJ.s page 13 + + + 500:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memo + 501:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Cont + 502:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + 503:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + 504:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + 505:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED8[1U]; + 506:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status Regis + 507:Drivers/CMSIS/Include/core_cm7.h **** } SCB_Type; + 508:Drivers/CMSIS/Include/core_cm7.h **** + 509:Drivers/CMSIS/Include/core_cm7.h **** /* SCB CPUID Register Definitions */ + 510:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_IMPLEMENTER_Pos 24U /*!< SCB + 511:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB + 512:Drivers/CMSIS/Include/core_cm7.h **** + 513:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_VARIANT_Pos 20U /*!< SCB + 514:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB + 515:Drivers/CMSIS/Include/core_cm7.h **** + 516:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_ARCHITECTURE_Pos 16U /*!< SCB + 517:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB + 518:Drivers/CMSIS/Include/core_cm7.h **** + 519:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_PARTNO_Pos 4U /*!< SCB + 520:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB + 521:Drivers/CMSIS/Include/core_cm7.h **** + 522:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_REVISION_Pos 0U /*!< SCB + 523:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CPUID_REVISION_Msk (0xFUL /*<< SCB_CPUID_REVISION_Pos*/) /*!< SCB + 524:Drivers/CMSIS/Include/core_cm7.h **** + 525:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Interrupt Control State Register Definitions */ + 526:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_NMIPENDSET_Pos 31U /*!< SCB + 527:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB + 528:Drivers/CMSIS/Include/core_cm7.h **** + 529:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSVSET_Pos 28U /*!< SCB + 530:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB + 531:Drivers/CMSIS/Include/core_cm7.h **** + 532:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSVCLR_Pos 27U /*!< SCB + 533:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB + 534:Drivers/CMSIS/Include/core_cm7.h **** + 535:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSTSET_Pos 26U /*!< SCB + 536:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB + 537:Drivers/CMSIS/Include/core_cm7.h **** + 538:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSTCLR_Pos 25U /*!< SCB + 539:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB + 540:Drivers/CMSIS/Include/core_cm7.h **** + 541:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_ISRPREEMPT_Pos 23U /*!< SCB + 542:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB + 543:Drivers/CMSIS/Include/core_cm7.h **** + 544:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_ISRPENDING_Pos 22U /*!< SCB + 545:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB + 546:Drivers/CMSIS/Include/core_cm7.h **** + 547:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_VECTPENDING_Pos 12U /*!< SCB + 548:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB + 549:Drivers/CMSIS/Include/core_cm7.h **** + 550:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_RETTOBASE_Pos 11U /*!< SCB + 551:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_RETTOBASE_Msk (1UL << SCB_ICSR_RETTOBASE_Pos) /*!< SCB + 552:Drivers/CMSIS/Include/core_cm7.h **** + 553:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_VECTACTIVE_Pos 0U /*!< SCB + 554:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB + 555:Drivers/CMSIS/Include/core_cm7.h **** + 556:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Vector Table Offset Register Definitions */ + ARM GAS /tmp/ccs1e2mJ.s page 14 + + + 557:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB + 558:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB + 559:Drivers/CMSIS/Include/core_cm7.h **** + 560:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Application Interrupt and Reset Control Register Definitions */ + 561:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTKEY_Pos 16U /*!< SCB + 562:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB + 563:Drivers/CMSIS/Include/core_cm7.h **** + 564:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTKEYSTAT_Pos 16U /*!< SCB + 565:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB + 566:Drivers/CMSIS/Include/core_cm7.h **** + 567:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_ENDIANESS_Pos 15U /*!< SCB + 568:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB + 569:Drivers/CMSIS/Include/core_cm7.h **** + 570:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_PRIGROUP_Pos 8U /*!< SCB + 571:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_PRIGROUP_Msk (7UL << SCB_AIRCR_PRIGROUP_Pos) /*!< SCB + 572:Drivers/CMSIS/Include/core_cm7.h **** + 573:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_SYSRESETREQ_Pos 2U /*!< SCB + 574:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB + 575:Drivers/CMSIS/Include/core_cm7.h **** + 576:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTCLRACTIVE_Pos 1U /*!< SCB + 577:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB + 578:Drivers/CMSIS/Include/core_cm7.h **** + 579:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTRESET_Pos 0U /*!< SCB + 580:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AIRCR_VECTRESET_Msk (1UL /*<< SCB_AIRCR_VECTRESET_Pos*/) /*!< SCB + 581:Drivers/CMSIS/Include/core_cm7.h **** + 582:Drivers/CMSIS/Include/core_cm7.h **** /* SCB System Control Register Definitions */ + 583:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SEVONPEND_Pos 4U /*!< SCB + 584:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB + 585:Drivers/CMSIS/Include/core_cm7.h **** + 586:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SLEEPDEEP_Pos 2U /*!< SCB + 587:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB + 588:Drivers/CMSIS/Include/core_cm7.h **** + 589:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SLEEPONEXIT_Pos 1U /*!< SCB + 590:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB + 591:Drivers/CMSIS/Include/core_cm7.h **** + 592:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Configuration Control Register Definitions */ + 593:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_BP_Pos 18U /*!< SCB + 594:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB + 595:Drivers/CMSIS/Include/core_cm7.h **** + 596:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_IC_Pos 17U /*!< SCB + 597:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB + 598:Drivers/CMSIS/Include/core_cm7.h **** + 599:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_DC_Pos 16U /*!< SCB + 600:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB + 601:Drivers/CMSIS/Include/core_cm7.h **** + 602:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_STKALIGN_Pos 9U /*!< SCB + 603:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB + 604:Drivers/CMSIS/Include/core_cm7.h **** + 605:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_BFHFNMIGN_Pos 8U /*!< SCB + 606:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_BFHFNMIGN_Msk (1UL << SCB_CCR_BFHFNMIGN_Pos) /*!< SCB + 607:Drivers/CMSIS/Include/core_cm7.h **** + 608:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_DIV_0_TRP_Pos 4U /*!< SCB + 609:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_DIV_0_TRP_Msk (1UL << SCB_CCR_DIV_0_TRP_Pos) /*!< SCB + 610:Drivers/CMSIS/Include/core_cm7.h **** + 611:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_UNALIGN_TRP_Pos 3U /*!< SCB + 612:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB + 613:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccs1e2mJ.s page 15 + + + 614:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_USERSETMPEND_Pos 1U /*!< SCB + 615:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_USERSETMPEND_Msk (1UL << SCB_CCR_USERSETMPEND_Pos) /*!< SCB + 616:Drivers/CMSIS/Include/core_cm7.h **** + 617:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_NONBASETHRDENA_Pos 0U /*!< SCB + 618:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCR_NONBASETHRDENA_Msk (1UL /*<< SCB_CCR_NONBASETHRDENA_Pos*/) /*!< SCB + 619:Drivers/CMSIS/Include/core_cm7.h **** + 620:Drivers/CMSIS/Include/core_cm7.h **** /* SCB System Handler Control and State Register Definitions */ + 621:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTENA_Pos 18U /*!< SCB + 622:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTENA_Msk (1UL << SCB_SHCSR_USGFAULTENA_Pos) /*!< SCB + 623:Drivers/CMSIS/Include/core_cm7.h **** + 624:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTENA_Pos 17U /*!< SCB + 625:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTENA_Msk (1UL << SCB_SHCSR_BUSFAULTENA_Pos) /*!< SCB + 626:Drivers/CMSIS/Include/core_cm7.h **** + 627:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTENA_Pos 16U /*!< SCB + 628:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTENA_Msk (1UL << SCB_SHCSR_MEMFAULTENA_Pos) /*!< SCB + 629:Drivers/CMSIS/Include/core_cm7.h **** + 630:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB + 631:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB + 632:Drivers/CMSIS/Include/core_cm7.h **** + 633:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTPENDED_Pos 14U /*!< SCB + 634:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTPENDED_Msk (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos) /*!< SCB + 635:Drivers/CMSIS/Include/core_cm7.h **** + 636:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTPENDED_Pos 13U /*!< SCB + 637:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTPENDED_Msk (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos) /*!< SCB + 638:Drivers/CMSIS/Include/core_cm7.h **** + 639:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTPENDED_Pos 12U /*!< SCB + 640:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTPENDED_Msk (1UL << SCB_SHCSR_USGFAULTPENDED_Pos) /*!< SCB + 641:Drivers/CMSIS/Include/core_cm7.h **** + 642:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SYSTICKACT_Pos 11U /*!< SCB + 643:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SYSTICKACT_Msk (1UL << SCB_SHCSR_SYSTICKACT_Pos) /*!< SCB + 644:Drivers/CMSIS/Include/core_cm7.h **** + 645:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_PENDSVACT_Pos 10U /*!< SCB + 646:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_PENDSVACT_Msk (1UL << SCB_SHCSR_PENDSVACT_Pos) /*!< SCB + 647:Drivers/CMSIS/Include/core_cm7.h **** + 648:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MONITORACT_Pos 8U /*!< SCB + 649:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MONITORACT_Msk (1UL << SCB_SHCSR_MONITORACT_Pos) /*!< SCB + 650:Drivers/CMSIS/Include/core_cm7.h **** + 651:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SVCALLACT_Pos 7U /*!< SCB + 652:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB + 653:Drivers/CMSIS/Include/core_cm7.h **** + 654:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTACT_Pos 3U /*!< SCB + 655:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_USGFAULTACT_Msk (1UL << SCB_SHCSR_USGFAULTACT_Pos) /*!< SCB + 656:Drivers/CMSIS/Include/core_cm7.h **** + 657:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTACT_Pos 1U /*!< SCB + 658:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_BUSFAULTACT_Msk (1UL << SCB_SHCSR_BUSFAULTACT_Pos) /*!< SCB + 659:Drivers/CMSIS/Include/core_cm7.h **** + 660:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTACT_Pos 0U /*!< SCB + 661:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_SHCSR_MEMFAULTACT_Msk (1UL /*<< SCB_SHCSR_MEMFAULTACT_Pos*/) /*!< SCB + 662:Drivers/CMSIS/Include/core_cm7.h **** + 663:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Configurable Fault Status Register Definitions */ + 664:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_USGFAULTSR_Pos 16U /*!< SCB + 665:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_USGFAULTSR_Msk (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos) /*!< SCB + 666:Drivers/CMSIS/Include/core_cm7.h **** + 667:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_BUSFAULTSR_Pos 8U /*!< SCB + 668:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_BUSFAULTSR_Msk (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos) /*!< SCB + 669:Drivers/CMSIS/Include/core_cm7.h **** + 670:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MEMFAULTSR_Pos 0U /*!< SCB + ARM GAS /tmp/ccs1e2mJ.s page 16 + + + 671:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MEMFAULTSR_Msk (0xFFUL /*<< SCB_CFSR_MEMFAULTSR_Pos*/) /*!< SCB + 672:Drivers/CMSIS/Include/core_cm7.h **** + 673:Drivers/CMSIS/Include/core_cm7.h **** /* MemManage Fault Status Register (part of SCB Configurable Fault Status Register) */ + 674:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MMARVALID_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 7U) /*!< SCB + 675:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MMARVALID_Msk (1UL << SCB_CFSR_MMARVALID_Pos) /*!< SCB + 676:Drivers/CMSIS/Include/core_cm7.h **** + 677:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MLSPERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 5U) /*!< SCB + 678:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MLSPERR_Msk (1UL << SCB_CFSR_MLSPERR_Pos) /*!< SCB + 679:Drivers/CMSIS/Include/core_cm7.h **** + 680:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 4U) /*!< SCB + 681:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MSTKERR_Msk (1UL << SCB_CFSR_MSTKERR_Pos) /*!< SCB + 682:Drivers/CMSIS/Include/core_cm7.h **** + 683:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MUNSTKERR_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 3U) /*!< SCB + 684:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_MUNSTKERR_Msk (1UL << SCB_CFSR_MUNSTKERR_Pos) /*!< SCB + 685:Drivers/CMSIS/Include/core_cm7.h **** + 686:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_DACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 1U) /*!< SCB + 687:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_DACCVIOL_Msk (1UL << SCB_CFSR_DACCVIOL_Pos) /*!< SCB + 688:Drivers/CMSIS/Include/core_cm7.h **** + 689:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IACCVIOL_Pos (SCB_SHCSR_MEMFAULTACT_Pos + 0U) /*!< SCB + 690:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IACCVIOL_Msk (1UL /*<< SCB_CFSR_IACCVIOL_Pos*/) /*!< SCB + 691:Drivers/CMSIS/Include/core_cm7.h **** + 692:Drivers/CMSIS/Include/core_cm7.h **** /* BusFault Status Register (part of SCB Configurable Fault Status Register) */ + 693:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_BFARVALID_Pos (SCB_CFSR_BUSFAULTSR_Pos + 7U) /*!< SCB + 694:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_BFARVALID_Msk (1UL << SCB_CFSR_BFARVALID_Pos) /*!< SCB + 695:Drivers/CMSIS/Include/core_cm7.h **** + 696:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_LSPERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 5U) /*!< SCB + 697:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_LSPERR_Msk (1UL << SCB_CFSR_LSPERR_Pos) /*!< SCB + 698:Drivers/CMSIS/Include/core_cm7.h **** + 699:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_STKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 4U) /*!< SCB + 700:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_STKERR_Msk (1UL << SCB_CFSR_STKERR_Pos) /*!< SCB + 701:Drivers/CMSIS/Include/core_cm7.h **** + 702:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNSTKERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 3U) /*!< SCB + 703:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNSTKERR_Msk (1UL << SCB_CFSR_UNSTKERR_Pos) /*!< SCB + 704:Drivers/CMSIS/Include/core_cm7.h **** + 705:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IMPRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 2U) /*!< SCB + 706:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IMPRECISERR_Msk (1UL << SCB_CFSR_IMPRECISERR_Pos) /*!< SCB + 707:Drivers/CMSIS/Include/core_cm7.h **** + 708:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_PRECISERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 1U) /*!< SCB + 709:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_PRECISERR_Msk (1UL << SCB_CFSR_PRECISERR_Pos) /*!< SCB + 710:Drivers/CMSIS/Include/core_cm7.h **** + 711:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IBUSERR_Pos (SCB_CFSR_BUSFAULTSR_Pos + 0U) /*!< SCB + 712:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_IBUSERR_Msk (1UL << SCB_CFSR_IBUSERR_Pos) /*!< SCB + 713:Drivers/CMSIS/Include/core_cm7.h **** + 714:Drivers/CMSIS/Include/core_cm7.h **** /* UsageFault Status Register (part of SCB Configurable Fault Status Register) */ + 715:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_DIVBYZERO_Pos (SCB_CFSR_USGFAULTSR_Pos + 9U) /*!< SCB + 716:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_DIVBYZERO_Msk (1UL << SCB_CFSR_DIVBYZERO_Pos) /*!< SCB + 717:Drivers/CMSIS/Include/core_cm7.h **** + 718:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNALIGNED_Pos (SCB_CFSR_USGFAULTSR_Pos + 8U) /*!< SCB + 719:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNALIGNED_Msk (1UL << SCB_CFSR_UNALIGNED_Pos) /*!< SCB + 720:Drivers/CMSIS/Include/core_cm7.h **** + 721:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_NOCP_Pos (SCB_CFSR_USGFAULTSR_Pos + 3U) /*!< SCB + 722:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_NOCP_Msk (1UL << SCB_CFSR_NOCP_Pos) /*!< SCB + 723:Drivers/CMSIS/Include/core_cm7.h **** + 724:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_INVPC_Pos (SCB_CFSR_USGFAULTSR_Pos + 2U) /*!< SCB + 725:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_INVPC_Msk (1UL << SCB_CFSR_INVPC_Pos) /*!< SCB + 726:Drivers/CMSIS/Include/core_cm7.h **** + 727:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_INVSTATE_Pos (SCB_CFSR_USGFAULTSR_Pos + 1U) /*!< SCB + ARM GAS /tmp/ccs1e2mJ.s page 17 + + + 728:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_INVSTATE_Msk (1UL << SCB_CFSR_INVSTATE_Pos) /*!< SCB + 729:Drivers/CMSIS/Include/core_cm7.h **** + 730:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNDEFINSTR_Pos (SCB_CFSR_USGFAULTSR_Pos + 0U) /*!< SCB + 731:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CFSR_UNDEFINSTR_Msk (1UL << SCB_CFSR_UNDEFINSTR_Pos) /*!< SCB + 732:Drivers/CMSIS/Include/core_cm7.h **** + 733:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Hard Fault Status Register Definitions */ + 734:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_DEBUGEVT_Pos 31U /*!< SCB + 735:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_DEBUGEVT_Msk (1UL << SCB_HFSR_DEBUGEVT_Pos) /*!< SCB + 736:Drivers/CMSIS/Include/core_cm7.h **** + 737:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_FORCED_Pos 30U /*!< SCB + 738:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_FORCED_Msk (1UL << SCB_HFSR_FORCED_Pos) /*!< SCB + 739:Drivers/CMSIS/Include/core_cm7.h **** + 740:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_VECTTBL_Pos 1U /*!< SCB + 741:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_HFSR_VECTTBL_Msk (1UL << SCB_HFSR_VECTTBL_Pos) /*!< SCB + 742:Drivers/CMSIS/Include/core_cm7.h **** + 743:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Debug Fault Status Register Definitions */ + 744:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_EXTERNAL_Pos 4U /*!< SCB + 745:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_EXTERNAL_Msk (1UL << SCB_DFSR_EXTERNAL_Pos) /*!< SCB + 746:Drivers/CMSIS/Include/core_cm7.h **** + 747:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_VCATCH_Pos 3U /*!< SCB + 748:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_VCATCH_Msk (1UL << SCB_DFSR_VCATCH_Pos) /*!< SCB + 749:Drivers/CMSIS/Include/core_cm7.h **** + 750:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_DWTTRAP_Pos 2U /*!< SCB + 751:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_DWTTRAP_Msk (1UL << SCB_DFSR_DWTTRAP_Pos) /*!< SCB + 752:Drivers/CMSIS/Include/core_cm7.h **** + 753:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_BKPT_Pos 1U /*!< SCB + 754:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_BKPT_Msk (1UL << SCB_DFSR_BKPT_Pos) /*!< SCB + 755:Drivers/CMSIS/Include/core_cm7.h **** + 756:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_HALTED_Pos 0U /*!< SCB + 757:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DFSR_HALTED_Msk (1UL /*<< SCB_DFSR_HALTED_Pos*/) /*!< SCB + 758:Drivers/CMSIS/Include/core_cm7.h **** + 759:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Cache Level ID Register Definitions */ + 760:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CLIDR_LOUU_Pos 27U /*!< SCB + 761:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB + 762:Drivers/CMSIS/Include/core_cm7.h **** + 763:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CLIDR_LOC_Pos 24U /*!< SCB + 764:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB + 765:Drivers/CMSIS/Include/core_cm7.h **** + 766:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Cache Type Register Definitions */ + 767:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_FORMAT_Pos 29U /*!< SCB + 768:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB + 769:Drivers/CMSIS/Include/core_cm7.h **** + 770:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_CWG_Pos 24U /*!< SCB + 771:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB + 772:Drivers/CMSIS/Include/core_cm7.h **** + 773:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_ERG_Pos 20U /*!< SCB + 774:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB + 775:Drivers/CMSIS/Include/core_cm7.h **** + 776:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_DMINLINE_Pos 16U /*!< SCB + 777:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB + 778:Drivers/CMSIS/Include/core_cm7.h **** + 779:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_IMINLINE_Pos 0U /*!< SCB + 780:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB + 781:Drivers/CMSIS/Include/core_cm7.h **** + 782:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Cache Size ID Register Definitions */ + 783:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WT_Pos 31U /*!< SCB + 784:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB + ARM GAS /tmp/ccs1e2mJ.s page 18 + + + 785:Drivers/CMSIS/Include/core_cm7.h **** + 786:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WB_Pos 30U /*!< SCB + 787:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB + 788:Drivers/CMSIS/Include/core_cm7.h **** + 789:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_RA_Pos 29U /*!< SCB + 790:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB + 791:Drivers/CMSIS/Include/core_cm7.h **** + 792:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WA_Pos 28U /*!< SCB + 793:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB + 794:Drivers/CMSIS/Include/core_cm7.h **** + 795:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB + 796:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB + 797:Drivers/CMSIS/Include/core_cm7.h **** + 798:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB + 799:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB + 800:Drivers/CMSIS/Include/core_cm7.h **** + 801:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB + 802:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB + 803:Drivers/CMSIS/Include/core_cm7.h **** + 804:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Cache Size Selection Register Definitions */ + 805:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB + 806:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB + 807:Drivers/CMSIS/Include/core_cm7.h **** + 808:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CSSELR_IND_Pos 0U /*!< SCB + 809:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB + 810:Drivers/CMSIS/Include/core_cm7.h **** + 811:Drivers/CMSIS/Include/core_cm7.h **** /* SCB Software Triggered Interrupt Register Definitions */ + 812:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_STIR_INTID_Pos 0U /*!< SCB + 813:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB + 814:Drivers/CMSIS/Include/core_cm7.h **** + 815:Drivers/CMSIS/Include/core_cm7.h **** /* SCB D-Cache Invalidate by Set-way Register Definitions */ + 816:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCISW_WAY_Pos 30U /*!< SCB + 817:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB + 818:Drivers/CMSIS/Include/core_cm7.h **** + 819:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCISW_SET_Pos 5U /*!< SCB + 820:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB + 821:Drivers/CMSIS/Include/core_cm7.h **** + 822:Drivers/CMSIS/Include/core_cm7.h **** /* SCB D-Cache Clean by Set-way Register Definitions */ + 823:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCSW_WAY_Pos 30U /*!< SCB + 824:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB + 825:Drivers/CMSIS/Include/core_cm7.h **** + 826:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCSW_SET_Pos 5U /*!< SCB + 827:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB + 828:Drivers/CMSIS/Include/core_cm7.h **** + 829:Drivers/CMSIS/Include/core_cm7.h **** /* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ + 830:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCISW_WAY_Pos 30U /*!< SCB + 831:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB + 832:Drivers/CMSIS/Include/core_cm7.h **** + 833:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCISW_SET_Pos 5U /*!< SCB + 834:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB + 835:Drivers/CMSIS/Include/core_cm7.h **** + 836:Drivers/CMSIS/Include/core_cm7.h **** /* Instruction Tightly-Coupled Memory Control Register Definitions */ + 837:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_SZ_Pos 3U /*!< SCB + 838:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB + 839:Drivers/CMSIS/Include/core_cm7.h **** + 840:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB + 841:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB + ARM GAS /tmp/ccs1e2mJ.s page 19 + + + 842:Drivers/CMSIS/Include/core_cm7.h **** + 843:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_RMW_Pos 1U /*!< SCB + 844:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB + 845:Drivers/CMSIS/Include/core_cm7.h **** + 846:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_EN_Pos 0U /*!< SCB + 847:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB + 848:Drivers/CMSIS/Include/core_cm7.h **** + 849:Drivers/CMSIS/Include/core_cm7.h **** /* Data Tightly-Coupled Memory Control Register Definitions */ + 850:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_SZ_Pos 3U /*!< SCB + 851:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB + 852:Drivers/CMSIS/Include/core_cm7.h **** + 853:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB + 854:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB + 855:Drivers/CMSIS/Include/core_cm7.h **** + 856:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_RMW_Pos 1U /*!< SCB + 857:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB + 858:Drivers/CMSIS/Include/core_cm7.h **** + 859:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_EN_Pos 0U /*!< SCB + 860:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB + 861:Drivers/CMSIS/Include/core_cm7.h **** + 862:Drivers/CMSIS/Include/core_cm7.h **** /* AHBP Control Register Definitions */ + 863:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBPCR_SZ_Pos 1U /*!< SCB + 864:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB + 865:Drivers/CMSIS/Include/core_cm7.h **** + 866:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBPCR_EN_Pos 0U /*!< SCB + 867:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB + 868:Drivers/CMSIS/Include/core_cm7.h **** + 869:Drivers/CMSIS/Include/core_cm7.h **** /* L1 Cache Control Register Definitions */ + 870:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_FORCEWT_Pos 2U /*!< SCB + 871:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB + 872:Drivers/CMSIS/Include/core_cm7.h **** + 873:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_ECCEN_Pos 1U /*!< SCB + 874:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB + 875:Drivers/CMSIS/Include/core_cm7.h **** + 876:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_SIWT_Pos 0U /*!< SCB + 877:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB + 878:Drivers/CMSIS/Include/core_cm7.h **** + 879:Drivers/CMSIS/Include/core_cm7.h **** /* AHBS Control Register Definitions */ + 880:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB + 881:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB + 882:Drivers/CMSIS/Include/core_cm7.h **** + 883:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB + 884:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB + 885:Drivers/CMSIS/Include/core_cm7.h **** + 886:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_CTL_Pos 0U /*!< SCB + 887:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB + 888:Drivers/CMSIS/Include/core_cm7.h **** + 889:Drivers/CMSIS/Include/core_cm7.h **** /* Auxiliary Bus Fault Status Register Definitions */ + 890:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB + 891:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB + 892:Drivers/CMSIS/Include/core_cm7.h **** + 893:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_EPPB_Pos 4U /*!< SCB + 894:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB + 895:Drivers/CMSIS/Include/core_cm7.h **** + 896:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AXIM_Pos 3U /*!< SCB + 897:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB + 898:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccs1e2mJ.s page 20 + + + 899:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AHBP_Pos 2U /*!< SCB + 900:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB + 901:Drivers/CMSIS/Include/core_cm7.h **** + 902:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_DTCM_Pos 1U /*!< SCB + 903:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB + 904:Drivers/CMSIS/Include/core_cm7.h **** + 905:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_ITCM_Pos 0U /*!< SCB + 906:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB + 907:Drivers/CMSIS/Include/core_cm7.h **** + 908:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_SCB */ + 909:Drivers/CMSIS/Include/core_cm7.h **** + 910:Drivers/CMSIS/Include/core_cm7.h **** + 911:Drivers/CMSIS/Include/core_cm7.h **** /** + 912:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register + 913:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB) + 914:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the System Control and ID Register not in the SCB + 915:Drivers/CMSIS/Include/core_cm7.h **** @{ + 916:Drivers/CMSIS/Include/core_cm7.h **** */ + 917:Drivers/CMSIS/Include/core_cm7.h **** + 918:Drivers/CMSIS/Include/core_cm7.h **** /** + 919:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the System Control and ID Register not in the SCB. + 920:Drivers/CMSIS/Include/core_cm7.h **** */ + 921:Drivers/CMSIS/Include/core_cm7.h **** typedef struct + 922:Drivers/CMSIS/Include/core_cm7.h **** { + 923:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[1U]; + 924:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ICTR; /*!< Offset: 0x004 (R/ ) Interrupt Controller Type Regist + 925:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ + 926:Drivers/CMSIS/Include/core_cm7.h **** } SCnSCB_Type; + 927:Drivers/CMSIS/Include/core_cm7.h **** + 928:Drivers/CMSIS/Include/core_cm7.h **** /* Interrupt Controller Type Register Definitions */ + 929:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ICTR_INTLINESNUM_Pos 0U /*!< ICTR: I + 930:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ICTR_INTLINESNUM_Msk (0xFUL /*<< SCnSCB_ICTR_INTLINESNUM_Pos*/) /*!< ICTR: I + 931:Drivers/CMSIS/Include/core_cm7.h **** + 932:Drivers/CMSIS/Include/core_cm7.h **** /* Auxiliary Control Register Definitions */ + 933:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: + 934:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: + 935:Drivers/CMSIS/Include/core_cm7.h **** + 936:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: + 937:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: + 938:Drivers/CMSIS/Include/core_cm7.h **** + 939:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: + 940:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: + 941:Drivers/CMSIS/Include/core_cm7.h **** + 942:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISFOLD_Pos 2U /*!< ACTLR: + 943:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISFOLD_Msk (1UL << SCnSCB_ACTLR_DISFOLD_Pos) /*!< ACTLR: + 944:Drivers/CMSIS/Include/core_cm7.h **** + 945:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISMCYCINT_Pos 0U /*!< ACTLR: + 946:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB_ACTLR_DISMCYCINT_Msk (1UL /*<< SCnSCB_ACTLR_DISMCYCINT_Pos*/) /*!< ACTLR: + 947:Drivers/CMSIS/Include/core_cm7.h **** + 948:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_SCnotSCB */ + 949:Drivers/CMSIS/Include/core_cm7.h **** + 950:Drivers/CMSIS/Include/core_cm7.h **** + 951:Drivers/CMSIS/Include/core_cm7.h **** /** + 952:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register + 953:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_SysTick System Tick Timer (SysTick) + 954:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the System Timer Registers. + 955:Drivers/CMSIS/Include/core_cm7.h **** @{ + ARM GAS /tmp/ccs1e2mJ.s page 21 + + + 956:Drivers/CMSIS/Include/core_cm7.h **** */ + 957:Drivers/CMSIS/Include/core_cm7.h **** + 958:Drivers/CMSIS/Include/core_cm7.h **** /** + 959:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the System Timer (SysTick). + 960:Drivers/CMSIS/Include/core_cm7.h **** */ + 961:Drivers/CMSIS/Include/core_cm7.h **** typedef struct + 962:Drivers/CMSIS/Include/core_cm7.h **** { + 963:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SysTick Control and Status Regis + 964:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t LOAD; /*!< Offset: 0x004 (R/W) SysTick Reload Value Register */ + 965:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t VAL; /*!< Offset: 0x008 (R/W) SysTick Current Value Register * + 966:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CALIB; /*!< Offset: 0x00C (R/ ) SysTick Calibration Register */ + 967:Drivers/CMSIS/Include/core_cm7.h **** } SysTick_Type; + 968:Drivers/CMSIS/Include/core_cm7.h **** + 969:Drivers/CMSIS/Include/core_cm7.h **** /* SysTick Control / Status Register Definitions */ + 970:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_COUNTFLAG_Pos 16U /*!< SysT + 971:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysT + 972:Drivers/CMSIS/Include/core_cm7.h **** + 973:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_CLKSOURCE_Pos 2U /*!< SysT + 974:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysT + 975:Drivers/CMSIS/Include/core_cm7.h **** + 976:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_TICKINT_Pos 1U /*!< SysT + 977:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysT + 978:Drivers/CMSIS/Include/core_cm7.h **** + 979:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_ENABLE_Pos 0U /*!< SysT + 980:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CTRL_ENABLE_Msk (1UL /*<< SysTick_CTRL_ENABLE_Pos*/) /*!< SysT + 981:Drivers/CMSIS/Include/core_cm7.h **** + 982:Drivers/CMSIS/Include/core_cm7.h **** /* SysTick Reload Register Definitions */ + 983:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_LOAD_RELOAD_Pos 0U /*!< SysT + 984:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL /*<< SysTick_LOAD_RELOAD_Pos*/) /*!< SysT + 985:Drivers/CMSIS/Include/core_cm7.h **** + 986:Drivers/CMSIS/Include/core_cm7.h **** /* SysTick Current Register Definitions */ + 987:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_VAL_CURRENT_Pos 0U /*!< SysT + 988:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL /*<< SysTick_VAL_CURRENT_Pos*/) /*!< SysT + 989:Drivers/CMSIS/Include/core_cm7.h **** + 990:Drivers/CMSIS/Include/core_cm7.h **** /* SysTick Calibration Register Definitions */ + 991:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_NOREF_Pos 31U /*!< SysT + 992:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysT + 993:Drivers/CMSIS/Include/core_cm7.h **** + 994:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_SKEW_Pos 30U /*!< SysT + 995:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysT + 996:Drivers/CMSIS/Include/core_cm7.h **** + 997:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_TENMS_Pos 0U /*!< SysT + 998:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL /*<< SysTick_CALIB_TENMS_Pos*/) /*!< SysT + 999:Drivers/CMSIS/Include/core_cm7.h **** +1000:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_SysTick */ +1001:Drivers/CMSIS/Include/core_cm7.h **** +1002:Drivers/CMSIS/Include/core_cm7.h **** +1003:Drivers/CMSIS/Include/core_cm7.h **** /** +1004:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1005:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_ITM Instrumentation Trace Macrocell (ITM) +1006:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Instrumentation Trace Macrocell (ITM) +1007:Drivers/CMSIS/Include/core_cm7.h **** @{ +1008:Drivers/CMSIS/Include/core_cm7.h **** */ +1009:Drivers/CMSIS/Include/core_cm7.h **** +1010:Drivers/CMSIS/Include/core_cm7.h **** /** +1011:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Instrumentation Trace Macrocell Register (ITM). +1012:Drivers/CMSIS/Include/core_cm7.h **** */ + ARM GAS /tmp/ccs1e2mJ.s page 22 + + +1013:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1014:Drivers/CMSIS/Include/core_cm7.h **** { +1015:Drivers/CMSIS/Include/core_cm7.h **** __OM union +1016:Drivers/CMSIS/Include/core_cm7.h **** { +1017:Drivers/CMSIS/Include/core_cm7.h **** __OM uint8_t u8; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 8-bit */ +1018:Drivers/CMSIS/Include/core_cm7.h **** __OM uint16_t u16; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 16-bit */ +1019:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t u32; /*!< Offset: 0x000 ( /W) ITM Stimulus Port 32-bit */ +1020:Drivers/CMSIS/Include/core_cm7.h **** } PORT [32U]; /*!< Offset: 0x000 ( /W) ITM Stimulus Port Registers */ +1021:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[864U]; +1022:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t TER; /*!< Offset: 0xE00 (R/W) ITM Trace Enable Register */ +1023:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED1[15U]; +1024:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t TPR; /*!< Offset: 0xE40 (R/W) ITM Trace Privilege Register */ +1025:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED2[15U]; +1026:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t TCR; /*!< Offset: 0xE80 (R/W) ITM Trace Control Register */ +1027:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED3[29U]; +1028:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register * +1029:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ +1030:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Reg +1031:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED4[43U]; +1032:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) ITM Lock Access Register */ +1033:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) ITM Lock Status Register */ +1034:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED5[6U]; +1035:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID4; /*!< Offset: 0xFD0 (R/ ) ITM Peripheral Identification Re +1036:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID5; /*!< Offset: 0xFD4 (R/ ) ITM Peripheral Identification Re +1037:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID6; /*!< Offset: 0xFD8 (R/ ) ITM Peripheral Identification Re +1038:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID7; /*!< Offset: 0xFDC (R/ ) ITM Peripheral Identification Re +1039:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID0; /*!< Offset: 0xFE0 (R/ ) ITM Peripheral Identification Re +1040:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID1; /*!< Offset: 0xFE4 (R/ ) ITM Peripheral Identification Re +1041:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID2; /*!< Offset: 0xFE8 (R/ ) ITM Peripheral Identification Re +1042:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PID3; /*!< Offset: 0xFEC (R/ ) ITM Peripheral Identification Re +1043:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CID0; /*!< Offset: 0xFF0 (R/ ) ITM Component Identification Re +1044:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CID1; /*!< Offset: 0xFF4 (R/ ) ITM Component Identification Re +1045:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CID2; /*!< Offset: 0xFF8 (R/ ) ITM Component Identification Re +1046:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t CID3; /*!< Offset: 0xFFC (R/ ) ITM Component Identification Re +1047:Drivers/CMSIS/Include/core_cm7.h **** } ITM_Type; +1048:Drivers/CMSIS/Include/core_cm7.h **** +1049:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Trace Privilege Register Definitions */ +1050:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM +1051:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TPR_PRIVMASK_Msk (0xFFFFFFFFUL /*<< ITM_TPR_PRIVMASK_Pos*/) /*!< ITM +1052:Drivers/CMSIS/Include/core_cm7.h **** +1053:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Trace Control Register Definitions */ +1054:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_BUSY_Pos 23U /*!< ITM +1055:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_BUSY_Msk (1UL << ITM_TCR_BUSY_Pos) /*!< ITM +1056:Drivers/CMSIS/Include/core_cm7.h **** +1057:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TraceBusID_Pos 16U /*!< ITM +1058:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TraceBusID_Msk (0x7FUL << ITM_TCR_TraceBusID_Pos) /*!< ITM +1059:Drivers/CMSIS/Include/core_cm7.h **** +1060:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_GTSFREQ_Pos 10U /*!< ITM +1061:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_GTSFREQ_Msk (3UL << ITM_TCR_GTSFREQ_Pos) /*!< ITM +1062:Drivers/CMSIS/Include/core_cm7.h **** +1063:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TSPrescale_Pos 8U /*!< ITM +1064:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TSPrescale_Msk (3UL << ITM_TCR_TSPrescale_Pos) /*!< ITM +1065:Drivers/CMSIS/Include/core_cm7.h **** +1066:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_SWOENA_Pos 4U /*!< ITM +1067:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_SWOENA_Msk (1UL << ITM_TCR_SWOENA_Pos) /*!< ITM +1068:Drivers/CMSIS/Include/core_cm7.h **** +1069:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_DWTENA_Pos 3U /*!< ITM + ARM GAS /tmp/ccs1e2mJ.s page 23 + + +1070:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_DWTENA_Msk (1UL << ITM_TCR_DWTENA_Pos) /*!< ITM +1071:Drivers/CMSIS/Include/core_cm7.h **** +1072:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_SYNCENA_Pos 2U /*!< ITM +1073:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_SYNCENA_Msk (1UL << ITM_TCR_SYNCENA_Pos) /*!< ITM +1074:Drivers/CMSIS/Include/core_cm7.h **** +1075:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TSENA_Pos 1U /*!< ITM +1076:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_TSENA_Msk (1UL << ITM_TCR_TSENA_Pos) /*!< ITM +1077:Drivers/CMSIS/Include/core_cm7.h **** +1078:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_ITMENA_Pos 0U /*!< ITM +1079:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_TCR_ITMENA_Msk (1UL /*<< ITM_TCR_ITMENA_Pos*/) /*!< ITM +1080:Drivers/CMSIS/Include/core_cm7.h **** +1081:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Integration Write Register Definitions */ +1082:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM +1083:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM +1084:Drivers/CMSIS/Include/core_cm7.h **** +1085:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Integration Read Register Definitions */ +1086:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IRR_ATREADYM_Pos 0U /*!< ITM +1087:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM +1088:Drivers/CMSIS/Include/core_cm7.h **** +1089:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Integration Mode Control Register Definitions */ +1090:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM +1091:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM +1092:Drivers/CMSIS/Include/core_cm7.h **** +1093:Drivers/CMSIS/Include/core_cm7.h **** /* ITM Lock Status Register Definitions */ +1094:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_ByteAcc_Pos 2U /*!< ITM +1095:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_ByteAcc_Msk (1UL << ITM_LSR_ByteAcc_Pos) /*!< ITM +1096:Drivers/CMSIS/Include/core_cm7.h **** +1097:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_Access_Pos 1U /*!< ITM +1098:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_Access_Msk (1UL << ITM_LSR_Access_Pos) /*!< ITM +1099:Drivers/CMSIS/Include/core_cm7.h **** +1100:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_Present_Pos 0U /*!< ITM +1101:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_LSR_Present_Msk (1UL /*<< ITM_LSR_Present_Pos*/) /*!< ITM +1102:Drivers/CMSIS/Include/core_cm7.h **** +1103:Drivers/CMSIS/Include/core_cm7.h **** /*@}*/ /* end of group CMSIS_ITM */ +1104:Drivers/CMSIS/Include/core_cm7.h **** +1105:Drivers/CMSIS/Include/core_cm7.h **** +1106:Drivers/CMSIS/Include/core_cm7.h **** /** +1107:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1108:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_DWT Data Watchpoint and Trace (DWT) +1109:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Data Watchpoint and Trace (DWT) +1110:Drivers/CMSIS/Include/core_cm7.h **** @{ +1111:Drivers/CMSIS/Include/core_cm7.h **** */ +1112:Drivers/CMSIS/Include/core_cm7.h **** +1113:Drivers/CMSIS/Include/core_cm7.h **** /** +1114:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Data Watchpoint and Trace Register (DWT). +1115:Drivers/CMSIS/Include/core_cm7.h **** */ +1116:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1117:Drivers/CMSIS/Include/core_cm7.h **** { +1118:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) Control Register */ +1119:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CYCCNT; /*!< Offset: 0x004 (R/W) Cycle Count Register */ +1120:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CPICNT; /*!< Offset: 0x008 (R/W) CPI Count Register */ +1121:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t EXCCNT; /*!< Offset: 0x00C (R/W) Exception Overhead Count Registe +1122:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t SLEEPCNT; /*!< Offset: 0x010 (R/W) Sleep Count Register */ +1123:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t LSUCNT; /*!< Offset: 0x014 (R/W) LSU Count Register */ +1124:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FOLDCNT; /*!< Offset: 0x018 (R/W) Folded-instruction Count Registe +1125:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register +1126:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + ARM GAS /tmp/ccs1e2mJ.s page 24 + + +1127:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t MASK0; /*!< Offset: 0x024 (R/W) Mask Register 0 */ +1128:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ +1129:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[1U]; +1130:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ +1131:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t MASK1; /*!< Offset: 0x034 (R/W) Mask Register 1 */ +1132:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ +1133:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED1[1U]; +1134:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ +1135:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t MASK2; /*!< Offset: 0x044 (R/W) Mask Register 2 */ +1136:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ +1137:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED2[1U]; +1138:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ +1139:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t MASK3; /*!< Offset: 0x054 (R/W) Mask Register 3 */ +1140:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ +1141:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED3[981U]; +1142:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ +1143:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +1144:Drivers/CMSIS/Include/core_cm7.h **** } DWT_Type; +1145:Drivers/CMSIS/Include/core_cm7.h **** +1146:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Control Register Definitions */ +1147:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NUMCOMP_Pos 28U /*!< DWT CTR +1148:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NUMCOMP_Msk (0xFUL << DWT_CTRL_NUMCOMP_Pos) /*!< DWT CTR +1149:Drivers/CMSIS/Include/core_cm7.h **** +1150:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOTRCPKT_Pos 27U /*!< DWT CTR +1151:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOTRCPKT_Msk (0x1UL << DWT_CTRL_NOTRCPKT_Pos) /*!< DWT CTR +1152:Drivers/CMSIS/Include/core_cm7.h **** +1153:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOEXTTRIG_Pos 26U /*!< DWT CTR +1154:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOEXTTRIG_Msk (0x1UL << DWT_CTRL_NOEXTTRIG_Pos) /*!< DWT CTR +1155:Drivers/CMSIS/Include/core_cm7.h **** +1156:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOCYCCNT_Pos 25U /*!< DWT CTR +1157:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOCYCCNT_Msk (0x1UL << DWT_CTRL_NOCYCCNT_Pos) /*!< DWT CTR +1158:Drivers/CMSIS/Include/core_cm7.h **** +1159:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOPRFCNT_Pos 24U /*!< DWT CTR +1160:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_NOPRFCNT_Msk (0x1UL << DWT_CTRL_NOPRFCNT_Pos) /*!< DWT CTR +1161:Drivers/CMSIS/Include/core_cm7.h **** +1162:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCEVTENA_Pos 22U /*!< DWT CTR +1163:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCEVTENA_Msk (0x1UL << DWT_CTRL_CYCEVTENA_Pos) /*!< DWT CTR +1164:Drivers/CMSIS/Include/core_cm7.h **** +1165:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_FOLDEVTENA_Pos 21U /*!< DWT CTR +1166:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_FOLDEVTENA_Msk (0x1UL << DWT_CTRL_FOLDEVTENA_Pos) /*!< DWT CTR +1167:Drivers/CMSIS/Include/core_cm7.h **** +1168:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_LSUEVTENA_Pos 20U /*!< DWT CTR +1169:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_LSUEVTENA_Msk (0x1UL << DWT_CTRL_LSUEVTENA_Pos) /*!< DWT CTR +1170:Drivers/CMSIS/Include/core_cm7.h **** +1171:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_SLEEPEVTENA_Pos 19U /*!< DWT CTR +1172:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_SLEEPEVTENA_Msk (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos) /*!< DWT CTR +1173:Drivers/CMSIS/Include/core_cm7.h **** +1174:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_EXCEVTENA_Pos 18U /*!< DWT CTR +1175:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_EXCEVTENA_Msk (0x1UL << DWT_CTRL_EXCEVTENA_Pos) /*!< DWT CTR +1176:Drivers/CMSIS/Include/core_cm7.h **** +1177:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CPIEVTENA_Pos 17U /*!< DWT CTR +1178:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CPIEVTENA_Msk (0x1UL << DWT_CTRL_CPIEVTENA_Pos) /*!< DWT CTR +1179:Drivers/CMSIS/Include/core_cm7.h **** +1180:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_EXCTRCENA_Pos 16U /*!< DWT CTR +1181:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_EXCTRCENA_Msk (0x1UL << DWT_CTRL_EXCTRCENA_Pos) /*!< DWT CTR +1182:Drivers/CMSIS/Include/core_cm7.h **** +1183:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_PCSAMPLENA_Pos 12U /*!< DWT CTR + ARM GAS /tmp/ccs1e2mJ.s page 25 + + +1184:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_PCSAMPLENA_Msk (0x1UL << DWT_CTRL_PCSAMPLENA_Pos) /*!< DWT CTR +1185:Drivers/CMSIS/Include/core_cm7.h **** +1186:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_SYNCTAP_Pos 10U /*!< DWT CTR +1187:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_SYNCTAP_Msk (0x3UL << DWT_CTRL_SYNCTAP_Pos) /*!< DWT CTR +1188:Drivers/CMSIS/Include/core_cm7.h **** +1189:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCTAP_Pos 9U /*!< DWT CTR +1190:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCTAP_Msk (0x1UL << DWT_CTRL_CYCTAP_Pos) /*!< DWT CTR +1191:Drivers/CMSIS/Include/core_cm7.h **** +1192:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_POSTINIT_Pos 5U /*!< DWT CTR +1193:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_POSTINIT_Msk (0xFUL << DWT_CTRL_POSTINIT_Pos) /*!< DWT CTR +1194:Drivers/CMSIS/Include/core_cm7.h **** +1195:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_POSTPRESET_Pos 1U /*!< DWT CTR +1196:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_POSTPRESET_Msk (0xFUL << DWT_CTRL_POSTPRESET_Pos) /*!< DWT CTR +1197:Drivers/CMSIS/Include/core_cm7.h **** +1198:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCCNTENA_Pos 0U /*!< DWT CTR +1199:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CTRL_CYCCNTENA_Msk (0x1UL /*<< DWT_CTRL_CYCCNTENA_Pos*/) /*!< DWT CTR +1200:Drivers/CMSIS/Include/core_cm7.h **** +1201:Drivers/CMSIS/Include/core_cm7.h **** /* DWT CPI Count Register Definitions */ +1202:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CPICNT_CPICNT_Pos 0U /*!< DWT CPI +1203:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_CPICNT_CPICNT_Msk (0xFFUL /*<< DWT_CPICNT_CPICNT_Pos*/) /*!< DWT CPI +1204:Drivers/CMSIS/Include/core_cm7.h **** +1205:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Exception Overhead Count Register Definitions */ +1206:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_EXCCNT_EXCCNT_Pos 0U /*!< DWT EXC +1207:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_EXCCNT_EXCCNT_Msk (0xFFUL /*<< DWT_EXCCNT_EXCCNT_Pos*/) /*!< DWT EXC +1208:Drivers/CMSIS/Include/core_cm7.h **** +1209:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Sleep Count Register Definitions */ +1210:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_SLEEPCNT_SLEEPCNT_Pos 0U /*!< DWT SLE +1211:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_SLEEPCNT_SLEEPCNT_Msk (0xFFUL /*<< DWT_SLEEPCNT_SLEEPCNT_Pos*/) /*!< DWT SLE +1212:Drivers/CMSIS/Include/core_cm7.h **** +1213:Drivers/CMSIS/Include/core_cm7.h **** /* DWT LSU Count Register Definitions */ +1214:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_LSUCNT_LSUCNT_Pos 0U /*!< DWT LSU +1215:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_LSUCNT_LSUCNT_Msk (0xFFUL /*<< DWT_LSUCNT_LSUCNT_Pos*/) /*!< DWT LSU +1216:Drivers/CMSIS/Include/core_cm7.h **** +1217:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Folded-instruction Count Register Definitions */ +1218:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FOLDCNT_FOLDCNT_Pos 0U /*!< DWT FOL +1219:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FOLDCNT_FOLDCNT_Msk (0xFFUL /*<< DWT_FOLDCNT_FOLDCNT_Pos*/) /*!< DWT FOL +1220:Drivers/CMSIS/Include/core_cm7.h **** +1221:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Comparator Mask Register Definitions */ +1222:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_MASK_MASK_Pos 0U /*!< DWT MAS +1223:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_MASK_MASK_Msk (0x1FUL /*<< DWT_MASK_MASK_Pos*/) /*!< DWT MAS +1224:Drivers/CMSIS/Include/core_cm7.h **** +1225:Drivers/CMSIS/Include/core_cm7.h **** /* DWT Comparator Function Register Definitions */ +1226:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_MATCHED_Pos 24U /*!< DWT FUN +1227:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_MATCHED_Msk (0x1UL << DWT_FUNCTION_MATCHED_Pos) /*!< DWT FUN +1228:Drivers/CMSIS/Include/core_cm7.h **** +1229:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVADDR1_Pos 16U /*!< DWT FUN +1230:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVADDR1_Msk (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos) /*!< DWT FUN +1231:Drivers/CMSIS/Include/core_cm7.h **** +1232:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVADDR0_Pos 12U /*!< DWT FUN +1233:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVADDR0_Msk (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos) /*!< DWT FUN +1234:Drivers/CMSIS/Include/core_cm7.h **** +1235:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVSIZE_Pos 10U /*!< DWT FUN +1236:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUN +1237:Drivers/CMSIS/Include/core_cm7.h **** +1238:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_LNK1ENA_Pos 9U /*!< DWT FUN +1239:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_LNK1ENA_Msk (0x1UL << DWT_FUNCTION_LNK1ENA_Pos) /*!< DWT FUN +1240:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccs1e2mJ.s page 26 + + +1241:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVMATCH_Pos 8U /*!< DWT FUN +1242:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_DATAVMATCH_Msk (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos) /*!< DWT FUN +1243:Drivers/CMSIS/Include/core_cm7.h **** +1244:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_CYCMATCH_Pos 7U /*!< DWT FUN +1245:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_CYCMATCH_Msk (0x1UL << DWT_FUNCTION_CYCMATCH_Pos) /*!< DWT FUN +1246:Drivers/CMSIS/Include/core_cm7.h **** +1247:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_EMITRANGE_Pos 5U /*!< DWT FUN +1248:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_EMITRANGE_Msk (0x1UL << DWT_FUNCTION_EMITRANGE_Pos) /*!< DWT FUN +1249:Drivers/CMSIS/Include/core_cm7.h **** +1250:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_FUNCTION_Pos 0U /*!< DWT FUN +1251:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_FUNCTION_FUNCTION_Msk (0xFUL /*<< DWT_FUNCTION_FUNCTION_Pos*/) /*!< DWT FUN +1252:Drivers/CMSIS/Include/core_cm7.h **** +1253:Drivers/CMSIS/Include/core_cm7.h **** /*@}*/ /* end of group CMSIS_DWT */ +1254:Drivers/CMSIS/Include/core_cm7.h **** +1255:Drivers/CMSIS/Include/core_cm7.h **** +1256:Drivers/CMSIS/Include/core_cm7.h **** /** +1257:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1258:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_TPI Trace Port Interface (TPI) +1259:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Trace Port Interface (TPI) +1260:Drivers/CMSIS/Include/core_cm7.h **** @{ +1261:Drivers/CMSIS/Include/core_cm7.h **** */ +1262:Drivers/CMSIS/Include/core_cm7.h **** +1263:Drivers/CMSIS/Include/core_cm7.h **** /** +1264:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Trace Port Interface Register (TPI). +1265:Drivers/CMSIS/Include/core_cm7.h **** */ +1266:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1267:Drivers/CMSIS/Include/core_cm7.h **** { +1268:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t SSPSR; /*!< Offset: 0x000 (R/ ) Supported Parallel Port Size Reg +1269:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Size Regis +1270:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[2U]; +1271:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ACPR; /*!< Offset: 0x010 (R/W) Asynchronous Clock Prescaler Reg +1272:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED1[55U]; +1273:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t SPPR; /*!< Offset: 0x0F0 (R/W) Selected Pin Protocol Register * +1274:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED2[131U]; +1275:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t FFSR; /*!< Offset: 0x300 (R/ ) Formatter and Flush Status Regis +1276:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FFCR; /*!< Offset: 0x304 (R/W) Formatter and Flush Control Regi +1277:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t FSCR; /*!< Offset: 0x308 (R/ ) Formatter Synchronization Counte +1278:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED3[759U]; +1279:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ +1280:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t FIFO0; /*!< Offset: 0xEEC (R/ ) Integration ETM Data */ +1281:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/ ) ITATBCTR2 */ +1282:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED4[1U]; +1283:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) ITATBCTR0 */ +1284:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t FIFO1; /*!< Offset: 0xEFC (R/ ) Integration ITM Data */ +1285:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t ITCTRL; /*!< Offset: 0xF00 (R/W) Integration Mode Control */ +1286:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED5[39U]; +1287:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CLAIMSET; /*!< Offset: 0xFA0 (R/W) Claim tag set */ +1288:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CLAIMCLR; /*!< Offset: 0xFA4 (R/W) Claim tag clear */ +1289:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED7[8U]; +1290:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t DEVID; /*!< Offset: 0xFC8 (R/ ) TPIU_DEVID */ +1291:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) TPIU_DEVTYPE */ +1292:Drivers/CMSIS/Include/core_cm7.h **** } TPI_Type; +1293:Drivers/CMSIS/Include/core_cm7.h **** +1294:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Asynchronous Clock Prescaler Register Definitions */ +1295:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ACPR_PRESCALER_Pos 0U /*!< TPI ACP +1296:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ACPR_PRESCALER_Msk (0x1FFFUL /*<< TPI_ACPR_PRESCALER_Pos*/) /*!< TPI ACP +1297:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccs1e2mJ.s page 27 + + +1298:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Selected Pin Protocol Register Definitions */ +1299:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_SPPR_TXMODE_Pos 0U /*!< TPI SPP +1300:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_SPPR_TXMODE_Msk (0x3UL /*<< TPI_SPPR_TXMODE_Pos*/) /*!< TPI SPP +1301:Drivers/CMSIS/Include/core_cm7.h **** +1302:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Formatter and Flush Status Register Definitions */ +1303:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FtNonStop_Pos 3U /*!< TPI FFS +1304:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FtNonStop_Msk (0x1UL << TPI_FFSR_FtNonStop_Pos) /*!< TPI FFS +1305:Drivers/CMSIS/Include/core_cm7.h **** +1306:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_TCPresent_Pos 2U /*!< TPI FFS +1307:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_TCPresent_Msk (0x1UL << TPI_FFSR_TCPresent_Pos) /*!< TPI FFS +1308:Drivers/CMSIS/Include/core_cm7.h **** +1309:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FtStopped_Pos 1U /*!< TPI FFS +1310:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FtStopped_Msk (0x1UL << TPI_FFSR_FtStopped_Pos) /*!< TPI FFS +1311:Drivers/CMSIS/Include/core_cm7.h **** +1312:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FlInProg_Pos 0U /*!< TPI FFS +1313:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFSR_FlInProg_Msk (0x1UL /*<< TPI_FFSR_FlInProg_Pos*/) /*!< TPI FFS +1314:Drivers/CMSIS/Include/core_cm7.h **** +1315:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Formatter and Flush Control Register Definitions */ +1316:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFCR_TrigIn_Pos 8U /*!< TPI FFC +1317:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFCR_TrigIn_Msk (0x1UL << TPI_FFCR_TrigIn_Pos) /*!< TPI FFC +1318:Drivers/CMSIS/Include/core_cm7.h **** +1319:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFCR_EnFCont_Pos 1U /*!< TPI FFC +1320:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FFCR_EnFCont_Msk (0x1UL << TPI_FFCR_EnFCont_Pos) /*!< TPI FFC +1321:Drivers/CMSIS/Include/core_cm7.h **** +1322:Drivers/CMSIS/Include/core_cm7.h **** /* TPI TRIGGER Register Definitions */ +1323:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_TRIGGER_TRIGGER_Pos 0U /*!< TPI TRI +1324:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_TRIGGER_TRIGGER_Msk (0x1UL /*<< TPI_TRIGGER_TRIGGER_Pos*/) /*!< TPI TRI +1325:Drivers/CMSIS/Include/core_cm7.h **** +1326:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Integration ETM Data Register Definitions (FIFO0) */ +1327:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ITM_ATVALID_Pos 29U /*!< TPI FIF +1328:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ITM_ATVALID_Msk (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos) /*!< TPI FIF +1329:Drivers/CMSIS/Include/core_cm7.h **** +1330:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ITM_bytecount_Pos 27U /*!< TPI FIF +1331:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ITM_bytecount_Msk (0x3UL << TPI_FIFO0_ITM_bytecount_Pos) /*!< TPI FIF +1332:Drivers/CMSIS/Include/core_cm7.h **** +1333:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM_ATVALID_Pos 26U /*!< TPI FIF +1334:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM_ATVALID_Msk (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos) /*!< TPI FIF +1335:Drivers/CMSIS/Include/core_cm7.h **** +1336:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM_bytecount_Pos 24U /*!< TPI FIF +1337:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM_bytecount_Msk (0x3UL << TPI_FIFO0_ETM_bytecount_Pos) /*!< TPI FIF +1338:Drivers/CMSIS/Include/core_cm7.h **** +1339:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM2_Pos 16U /*!< TPI FIF +1340:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM2_Msk (0xFFUL << TPI_FIFO0_ETM2_Pos) /*!< TPI FIF +1341:Drivers/CMSIS/Include/core_cm7.h **** +1342:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM1_Pos 8U /*!< TPI FIF +1343:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM1_Msk (0xFFUL << TPI_FIFO0_ETM1_Pos) /*!< TPI FIF +1344:Drivers/CMSIS/Include/core_cm7.h **** +1345:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM0_Pos 0U /*!< TPI FIF +1346:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO0_ETM0_Msk (0xFFUL /*<< TPI_FIFO0_ETM0_Pos*/) /*!< TPI FIF +1347:Drivers/CMSIS/Include/core_cm7.h **** +1348:Drivers/CMSIS/Include/core_cm7.h **** /* TPI ITATBCTR2 Register Definitions */ +1349:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR2_ATREADY2_Pos 0U /*!< TPI ITA +1350:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR2_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2_Pos*/) /*!< TPI ITA +1351:Drivers/CMSIS/Include/core_cm7.h **** +1352:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR2_ATREADY1_Pos 0U /*!< TPI ITA +1353:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR2_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1_Pos*/) /*!< TPI ITA +1354:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccs1e2mJ.s page 28 + + +1355:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Integration ITM Data Register Definitions (FIFO1) */ +1356:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM_ATVALID_Pos 29U /*!< TPI FIF +1357:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM_ATVALID_Msk (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos) /*!< TPI FIF +1358:Drivers/CMSIS/Include/core_cm7.h **** +1359:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM_bytecount_Pos 27U /*!< TPI FIF +1360:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM_bytecount_Msk (0x3UL << TPI_FIFO1_ITM_bytecount_Pos) /*!< TPI FIF +1361:Drivers/CMSIS/Include/core_cm7.h **** +1362:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ETM_ATVALID_Pos 26U /*!< TPI FIF +1363:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ETM_ATVALID_Msk (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos) /*!< TPI FIF +1364:Drivers/CMSIS/Include/core_cm7.h **** +1365:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ETM_bytecount_Pos 24U /*!< TPI FIF +1366:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ETM_bytecount_Msk (0x3UL << TPI_FIFO1_ETM_bytecount_Pos) /*!< TPI FIF +1367:Drivers/CMSIS/Include/core_cm7.h **** +1368:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM2_Pos 16U /*!< TPI FIF +1369:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM2_Msk (0xFFUL << TPI_FIFO1_ITM2_Pos) /*!< TPI FIF +1370:Drivers/CMSIS/Include/core_cm7.h **** +1371:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM1_Pos 8U /*!< TPI FIF +1372:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM1_Msk (0xFFUL << TPI_FIFO1_ITM1_Pos) /*!< TPI FIF +1373:Drivers/CMSIS/Include/core_cm7.h **** +1374:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM0_Pos 0U /*!< TPI FIF +1375:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_FIFO1_ITM0_Msk (0xFFUL /*<< TPI_FIFO1_ITM0_Pos*/) /*!< TPI FIF +1376:Drivers/CMSIS/Include/core_cm7.h **** +1377:Drivers/CMSIS/Include/core_cm7.h **** /* TPI ITATBCTR0 Register Definitions */ +1378:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR0_ATREADY2_Pos 0U /*!< TPI ITA +1379:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR0_ATREADY2_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2_Pos*/) /*!< TPI ITA +1380:Drivers/CMSIS/Include/core_cm7.h **** +1381:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR0_ATREADY1_Pos 0U /*!< TPI ITA +1382:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITATBCTR0_ATREADY1_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1_Pos*/) /*!< TPI ITA +1383:Drivers/CMSIS/Include/core_cm7.h **** +1384:Drivers/CMSIS/Include/core_cm7.h **** /* TPI Integration Mode Control Register Definitions */ +1385:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITC +1386:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_ITCTRL_Mode_Msk (0x3UL /*<< TPI_ITCTRL_Mode_Pos*/) /*!< TPI ITC +1387:Drivers/CMSIS/Include/core_cm7.h **** +1388:Drivers/CMSIS/Include/core_cm7.h **** /* TPI DEVID Register Definitions */ +1389:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_NRZVALID_Pos 11U /*!< TPI DEV +1390:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_NRZVALID_Msk (0x1UL << TPI_DEVID_NRZVALID_Pos) /*!< TPI DEV +1391:Drivers/CMSIS/Include/core_cm7.h **** +1392:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_MANCVALID_Pos 10U /*!< TPI DEV +1393:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_MANCVALID_Msk (0x1UL << TPI_DEVID_MANCVALID_Pos) /*!< TPI DEV +1394:Drivers/CMSIS/Include/core_cm7.h **** +1395:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_PTINVALID_Pos 9U /*!< TPI DEV +1396:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_PTINVALID_Msk (0x1UL << TPI_DEVID_PTINVALID_Pos) /*!< TPI DEV +1397:Drivers/CMSIS/Include/core_cm7.h **** +1398:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_MinBufSz_Pos 6U /*!< TPI DEV +1399:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_MinBufSz_Msk (0x7UL << TPI_DEVID_MinBufSz_Pos) /*!< TPI DEV +1400:Drivers/CMSIS/Include/core_cm7.h **** +1401:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_AsynClkIn_Pos 5U /*!< TPI DEV +1402:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_AsynClkIn_Msk (0x1UL << TPI_DEVID_AsynClkIn_Pos) /*!< TPI DEV +1403:Drivers/CMSIS/Include/core_cm7.h **** +1404:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEV +1405:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVID_NrTraceInput_Msk (0x1FUL /*<< TPI_DEVID_NrTraceInput_Pos*/) /*!< TPI DEV +1406:Drivers/CMSIS/Include/core_cm7.h **** +1407:Drivers/CMSIS/Include/core_cm7.h **** /* TPI DEVTYPE Register Definitions */ +1408:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVTYPE_SubType_Pos 4U /*!< TPI DEV +1409:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEV +1410:Drivers/CMSIS/Include/core_cm7.h **** +1411:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVTYPE_MajorType_Pos 0U /*!< TPI DEV + ARM GAS /tmp/ccs1e2mJ.s page 29 + + +1412:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEV +1413:Drivers/CMSIS/Include/core_cm7.h **** +1414:Drivers/CMSIS/Include/core_cm7.h **** /*@}*/ /* end of group CMSIS_TPI */ +1415:Drivers/CMSIS/Include/core_cm7.h **** +1416:Drivers/CMSIS/Include/core_cm7.h **** +1417:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +1418:Drivers/CMSIS/Include/core_cm7.h **** /** +1419:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1420:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_MPU Memory Protection Unit (MPU) +1421:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Memory Protection Unit (MPU) +1422:Drivers/CMSIS/Include/core_cm7.h **** @{ +1423:Drivers/CMSIS/Include/core_cm7.h **** */ +1424:Drivers/CMSIS/Include/core_cm7.h **** +1425:Drivers/CMSIS/Include/core_cm7.h **** /** +1426:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Memory Protection Unit (MPU). +1427:Drivers/CMSIS/Include/core_cm7.h **** */ +1428:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1429:Drivers/CMSIS/Include/core_cm7.h **** { +1430:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t TYPE; /*!< Offset: 0x000 (R/ ) MPU Type Register */ +1431:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t CTRL; /*!< Offset: 0x004 (R/W) MPU Control Register */ +1432:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) MPU Region RNRber Register */ +1433:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register +1434:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RASR; /*!< Offset: 0x010 (R/W) MPU Region Attribute and Size Re +1435:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Alias 1 Region Base Address +1436:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RASR_A1; /*!< Offset: 0x018 (R/W) MPU Alias 1 Region Attribute and +1437:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Alias 2 Region Base Address +1438:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RASR_A2; /*!< Offset: 0x020 (R/W) MPU Alias 2 Region Attribute and +1439:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Alias 3 Region Base Address +1440:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t RASR_A3; /*!< Offset: 0x028 (R/W) MPU Alias 3 Region Attribute and +1441:Drivers/CMSIS/Include/core_cm7.h **** } MPU_Type; +1442:Drivers/CMSIS/Include/core_cm7.h **** +1443:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_RALIASES 4U +1444:Drivers/CMSIS/Include/core_cm7.h **** +1445:Drivers/CMSIS/Include/core_cm7.h **** /* MPU Type Register Definitions */ +1446:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_IREGION_Pos 16U /*!< MPU +1447:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_IREGION_Msk (0xFFUL << MPU_TYPE_IREGION_Pos) /*!< MPU +1448:Drivers/CMSIS/Include/core_cm7.h **** +1449:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_DREGION_Pos 8U /*!< MPU +1450:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_DREGION_Msk (0xFFUL << MPU_TYPE_DREGION_Pos) /*!< MPU +1451:Drivers/CMSIS/Include/core_cm7.h **** +1452:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_SEPARATE_Pos 0U /*!< MPU +1453:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_TYPE_SEPARATE_Msk (1UL /*<< MPU_TYPE_SEPARATE_Pos*/) /*!< MPU +1454:Drivers/CMSIS/Include/core_cm7.h **** +1455:Drivers/CMSIS/Include/core_cm7.h **** /* MPU Control Register Definitions */ +1456:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_PRIVDEFENA_Pos 2U /*!< MPU +1457:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_PRIVDEFENA_Msk (1UL << MPU_CTRL_PRIVDEFENA_Pos) /*!< MPU +1458:Drivers/CMSIS/Include/core_cm7.h **** +1459:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_HFNMIENA_Pos 1U /*!< MPU +1460:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_HFNMIENA_Msk (1UL << MPU_CTRL_HFNMIENA_Pos) /*!< MPU +1461:Drivers/CMSIS/Include/core_cm7.h **** +1462:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_ENABLE_Pos 0U /*!< MPU +1463:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_CTRL_ENABLE_Msk (1UL /*<< MPU_CTRL_ENABLE_Pos*/) /*!< MPU +1464:Drivers/CMSIS/Include/core_cm7.h **** +1465:Drivers/CMSIS/Include/core_cm7.h **** /* MPU Region Number Register Definitions */ +1466:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RNR_REGION_Pos 0U /*!< MPU +1467:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RNR_REGION_Msk (0xFFUL /*<< MPU_RNR_REGION_Pos*/) /*!< MPU +1468:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccs1e2mJ.s page 30 + + +1469:Drivers/CMSIS/Include/core_cm7.h **** /* MPU Region Base Address Register Definitions */ +1470:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_ADDR_Pos 5U /*!< MPU +1471:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_ADDR_Msk (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos) /*!< MPU +1472:Drivers/CMSIS/Include/core_cm7.h **** +1473:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_VALID_Pos 4U /*!< MPU +1474:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_VALID_Msk (1UL << MPU_RBAR_VALID_Pos) /*!< MPU +1475:Drivers/CMSIS/Include/core_cm7.h **** +1476:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_REGION_Pos 0U /*!< MPU +1477:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RBAR_REGION_Msk (0xFUL /*<< MPU_RBAR_REGION_Pos*/) /*!< MPU +1478:Drivers/CMSIS/Include/core_cm7.h **** +1479:Drivers/CMSIS/Include/core_cm7.h **** /* MPU Region Attribute and Size Register Definitions */ +1480:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_ATTRS_Pos 16U /*!< MPU +1481:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_ATTRS_Msk (0xFFFFUL << MPU_RASR_ATTRS_Pos) /*!< MPU +1482:Drivers/CMSIS/Include/core_cm7.h **** +1483:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_XN_Pos 28U /*!< MPU +1484:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_XN_Msk (1UL << MPU_RASR_XN_Pos) /*!< MPU +1485:Drivers/CMSIS/Include/core_cm7.h **** +1486:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_AP_Pos 24U /*!< MPU +1487:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_AP_Msk (0x7UL << MPU_RASR_AP_Pos) /*!< MPU +1488:Drivers/CMSIS/Include/core_cm7.h **** +1489:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_TEX_Pos 19U /*!< MPU +1490:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_TEX_Msk (0x7UL << MPU_RASR_TEX_Pos) /*!< MPU +1491:Drivers/CMSIS/Include/core_cm7.h **** +1492:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_S_Pos 18U /*!< MPU +1493:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_S_Msk (1UL << MPU_RASR_S_Pos) /*!< MPU +1494:Drivers/CMSIS/Include/core_cm7.h **** +1495:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_C_Pos 17U /*!< MPU +1496:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_C_Msk (1UL << MPU_RASR_C_Pos) /*!< MPU +1497:Drivers/CMSIS/Include/core_cm7.h **** +1498:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_B_Pos 16U /*!< MPU +1499:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) /*!< MPU +1500:Drivers/CMSIS/Include/core_cm7.h **** +1501:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_SRD_Pos 8U /*!< MPU +1502:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_SRD_Msk (0xFFUL << MPU_RASR_SRD_Pos) /*!< MPU +1503:Drivers/CMSIS/Include/core_cm7.h **** +1504:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_SIZE_Pos 1U /*!< MPU +1505:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_SIZE_Msk (0x1FUL << MPU_RASR_SIZE_Pos) /*!< MPU +1506:Drivers/CMSIS/Include/core_cm7.h **** +1507:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_ENABLE_Pos 0U /*!< MPU +1508:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_RASR_ENABLE_Msk (1UL /*<< MPU_RASR_ENABLE_Pos*/) /*!< MPU +1509:Drivers/CMSIS/Include/core_cm7.h **** +1510:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_MPU */ +1511:Drivers/CMSIS/Include/core_cm7.h **** #endif /* defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) */ +1512:Drivers/CMSIS/Include/core_cm7.h **** +1513:Drivers/CMSIS/Include/core_cm7.h **** +1514:Drivers/CMSIS/Include/core_cm7.h **** /** +1515:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1516:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_FPU Floating Point Unit (FPU) +1517:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Floating Point Unit (FPU) +1518:Drivers/CMSIS/Include/core_cm7.h **** @{ +1519:Drivers/CMSIS/Include/core_cm7.h **** */ +1520:Drivers/CMSIS/Include/core_cm7.h **** +1521:Drivers/CMSIS/Include/core_cm7.h **** /** +1522:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Floating Point Unit (FPU). +1523:Drivers/CMSIS/Include/core_cm7.h **** */ +1524:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1525:Drivers/CMSIS/Include/core_cm7.h **** { + ARM GAS /tmp/ccs1e2mJ.s page 31 + + +1526:Drivers/CMSIS/Include/core_cm7.h **** uint32_t RESERVED0[1U]; +1527:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FPCCR; /*!< Offset: 0x004 (R/W) Floating-Point Context Control R +1528:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FPCAR; /*!< Offset: 0x008 (R/W) Floating-Point Context Address R +1529:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t FPDSCR; /*!< Offset: 0x00C (R/W) Floating-Point Default Status Co +1530:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR0; /*!< Offset: 0x010 (R/ ) Media and FP Feature Register 0 +1531:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR1; /*!< Offset: 0x014 (R/ ) Media and FP Feature Register 1 +1532:Drivers/CMSIS/Include/core_cm7.h **** __IM uint32_t MVFR2; /*!< Offset: 0x018 (R/ ) Media and FP Feature Register 2 +1533:Drivers/CMSIS/Include/core_cm7.h **** } FPU_Type; +1534:Drivers/CMSIS/Include/core_cm7.h **** +1535:Drivers/CMSIS/Include/core_cm7.h **** /* Floating-Point Context Control Register Definitions */ +1536:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_ASPEN_Pos 31U /*!< FPCC +1537:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_ASPEN_Msk (1UL << FPU_FPCCR_ASPEN_Pos) /*!< FPCC +1538:Drivers/CMSIS/Include/core_cm7.h **** +1539:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_LSPEN_Pos 30U /*!< FPCC +1540:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_LSPEN_Msk (1UL << FPU_FPCCR_LSPEN_Pos) /*!< FPCC +1541:Drivers/CMSIS/Include/core_cm7.h **** +1542:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_MONRDY_Pos 8U /*!< FPCC +1543:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_MONRDY_Msk (1UL << FPU_FPCCR_MONRDY_Pos) /*!< FPCC +1544:Drivers/CMSIS/Include/core_cm7.h **** +1545:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_BFRDY_Pos 6U /*!< FPCC +1546:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_BFRDY_Msk (1UL << FPU_FPCCR_BFRDY_Pos) /*!< FPCC +1547:Drivers/CMSIS/Include/core_cm7.h **** +1548:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_MMRDY_Pos 5U /*!< FPCC +1549:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_MMRDY_Msk (1UL << FPU_FPCCR_MMRDY_Pos) /*!< FPCC +1550:Drivers/CMSIS/Include/core_cm7.h **** +1551:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_HFRDY_Pos 4U /*!< FPCC +1552:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_HFRDY_Msk (1UL << FPU_FPCCR_HFRDY_Pos) /*!< FPCC +1553:Drivers/CMSIS/Include/core_cm7.h **** +1554:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_THREAD_Pos 3U /*!< FPCC +1555:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_THREAD_Msk (1UL << FPU_FPCCR_THREAD_Pos) /*!< FPCC +1556:Drivers/CMSIS/Include/core_cm7.h **** +1557:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_USER_Pos 1U /*!< FPCC +1558:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_USER_Msk (1UL << FPU_FPCCR_USER_Pos) /*!< FPCC +1559:Drivers/CMSIS/Include/core_cm7.h **** +1560:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_LSPACT_Pos 0U /*!< FPCC +1561:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCCR_LSPACT_Msk (1UL /*<< FPU_FPCCR_LSPACT_Pos*/) /*!< FPCC +1562:Drivers/CMSIS/Include/core_cm7.h **** +1563:Drivers/CMSIS/Include/core_cm7.h **** /* Floating-Point Context Address Register Definitions */ +1564:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCAR_ADDRESS_Pos 3U /*!< FPCA +1565:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPCAR_ADDRESS_Msk (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos) /*!< FPCA +1566:Drivers/CMSIS/Include/core_cm7.h **** +1567:Drivers/CMSIS/Include/core_cm7.h **** /* Floating-Point Default Status Control Register Definitions */ +1568:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_AHP_Pos 26U /*!< FPDS +1569:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_AHP_Msk (1UL << FPU_FPDSCR_AHP_Pos) /*!< FPDS +1570:Drivers/CMSIS/Include/core_cm7.h **** +1571:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_DN_Pos 25U /*!< FPDS +1572:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_DN_Msk (1UL << FPU_FPDSCR_DN_Pos) /*!< FPDS +1573:Drivers/CMSIS/Include/core_cm7.h **** +1574:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_FZ_Pos 24U /*!< FPDS +1575:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_FZ_Msk (1UL << FPU_FPDSCR_FZ_Pos) /*!< FPDS +1576:Drivers/CMSIS/Include/core_cm7.h **** +1577:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_RMode_Pos 22U /*!< FPDS +1578:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_FPDSCR_RMode_Msk (3UL << FPU_FPDSCR_RMode_Pos) /*!< FPDS +1579:Drivers/CMSIS/Include/core_cm7.h **** +1580:Drivers/CMSIS/Include/core_cm7.h **** /* Media and FP Feature Register 0 Definitions */ +1581:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_FP_rounding_modes_Pos 28U /*!< MVFR +1582:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_FP_rounding_modes_Msk (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos) /*!< MVFR + ARM GAS /tmp/ccs1e2mJ.s page 32 + + +1583:Drivers/CMSIS/Include/core_cm7.h **** +1584:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Short_vectors_Pos 24U /*!< MVFR +1585:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Short_vectors_Msk (0xFUL << FPU_MVFR0_Short_vectors_Pos) /*!< MVFR +1586:Drivers/CMSIS/Include/core_cm7.h **** +1587:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Square_root_Pos 20U /*!< MVFR +1588:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Square_root_Msk (0xFUL << FPU_MVFR0_Square_root_Pos) /*!< MVFR +1589:Drivers/CMSIS/Include/core_cm7.h **** +1590:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Divide_Pos 16U /*!< MVFR +1591:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Divide_Msk (0xFUL << FPU_MVFR0_Divide_Pos) /*!< MVFR +1592:Drivers/CMSIS/Include/core_cm7.h **** +1593:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_FP_excep_trapping_Pos 12U /*!< MVFR +1594:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_FP_excep_trapping_Msk (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos) /*!< MVFR +1595:Drivers/CMSIS/Include/core_cm7.h **** +1596:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Double_precision_Pos 8U /*!< MVFR +1597:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Double_precision_Msk (0xFUL << FPU_MVFR0_Double_precision_Pos) /*!< MVFR +1598:Drivers/CMSIS/Include/core_cm7.h **** +1599:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Single_precision_Pos 4U /*!< MVFR +1600:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_Single_precision_Msk (0xFUL << FPU_MVFR0_Single_precision_Pos) /*!< MVFR +1601:Drivers/CMSIS/Include/core_cm7.h **** +1602:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_A_SIMD_registers_Pos 0U /*!< MVFR +1603:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR0_A_SIMD_registers_Msk (0xFUL /*<< FPU_MVFR0_A_SIMD_registers_Pos*/) /*!< MVFR +1604:Drivers/CMSIS/Include/core_cm7.h **** +1605:Drivers/CMSIS/Include/core_cm7.h **** /* Media and FP Feature Register 1 Definitions */ +1606:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FP_fused_MAC_Pos 28U /*!< MVFR +1607:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FP_fused_MAC_Msk (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos) /*!< MVFR +1608:Drivers/CMSIS/Include/core_cm7.h **** +1609:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FP_HPFP_Pos 24U /*!< MVFR +1610:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FP_HPFP_Msk (0xFUL << FPU_MVFR1_FP_HPFP_Pos) /*!< MVFR +1611:Drivers/CMSIS/Include/core_cm7.h **** +1612:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_D_NaN_mode_Pos 4U /*!< MVFR +1613:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_D_NaN_mode_Msk (0xFUL << FPU_MVFR1_D_NaN_mode_Pos) /*!< MVFR +1614:Drivers/CMSIS/Include/core_cm7.h **** +1615:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FtZ_mode_Pos 0U /*!< MVFR +1616:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_MVFR1_FtZ_mode_Msk (0xFUL /*<< FPU_MVFR1_FtZ_mode_Pos*/) /*!< MVFR +1617:Drivers/CMSIS/Include/core_cm7.h **** +1618:Drivers/CMSIS/Include/core_cm7.h **** /* Media and FP Feature Register 2 Definitions */ +1619:Drivers/CMSIS/Include/core_cm7.h **** +1620:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_FPU */ +1621:Drivers/CMSIS/Include/core_cm7.h **** +1622:Drivers/CMSIS/Include/core_cm7.h **** +1623:Drivers/CMSIS/Include/core_cm7.h **** /** +1624:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1625:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) +1626:Drivers/CMSIS/Include/core_cm7.h **** \brief Type definitions for the Core Debug Registers +1627:Drivers/CMSIS/Include/core_cm7.h **** @{ +1628:Drivers/CMSIS/Include/core_cm7.h **** */ +1629:Drivers/CMSIS/Include/core_cm7.h **** +1630:Drivers/CMSIS/Include/core_cm7.h **** /** +1631:Drivers/CMSIS/Include/core_cm7.h **** \brief Structure type to access the Core Debug Register (CoreDebug). +1632:Drivers/CMSIS/Include/core_cm7.h **** */ +1633:Drivers/CMSIS/Include/core_cm7.h **** typedef struct +1634:Drivers/CMSIS/Include/core_cm7.h **** { +1635:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t DHCSR; /*!< Offset: 0x000 (R/W) Debug Halting Control and Status +1636:Drivers/CMSIS/Include/core_cm7.h **** __OM uint32_t DCRSR; /*!< Offset: 0x004 ( /W) Debug Core Register Selector Reg +1637:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t DCRDR; /*!< Offset: 0x008 (R/W) Debug Core Register Data Registe +1638:Drivers/CMSIS/Include/core_cm7.h **** __IOM uint32_t DEMCR; /*!< Offset: 0x00C (R/W) Debug Exception and Monitor Cont +1639:Drivers/CMSIS/Include/core_cm7.h **** } CoreDebug_Type; + ARM GAS /tmp/ccs1e2mJ.s page 33 + + +1640:Drivers/CMSIS/Include/core_cm7.h **** +1641:Drivers/CMSIS/Include/core_cm7.h **** /* Debug Halting Control and Status Register Definitions */ +1642:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_DBGKEY_Pos 16U /*!< Core +1643:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_DBGKEY_Msk (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos) /*!< Core +1644:Drivers/CMSIS/Include/core_cm7.h **** +1645:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_RESET_ST_Pos 25U /*!< Core +1646:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_RESET_ST_Msk (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos) /*!< Core +1647:Drivers/CMSIS/Include/core_cm7.h **** +1648:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_RETIRE_ST_Pos 24U /*!< Core +1649:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_RETIRE_ST_Msk (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos) /*!< Core +1650:Drivers/CMSIS/Include/core_cm7.h **** +1651:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_LOCKUP_Pos 19U /*!< Core +1652:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_LOCKUP_Msk (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos) /*!< Core +1653:Drivers/CMSIS/Include/core_cm7.h **** +1654:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_SLEEP_Pos 18U /*!< Core +1655:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_SLEEP_Msk (1UL << CoreDebug_DHCSR_S_SLEEP_Pos) /*!< Core +1656:Drivers/CMSIS/Include/core_cm7.h **** +1657:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_HALT_Pos 17U /*!< Core +1658:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_HALT_Msk (1UL << CoreDebug_DHCSR_S_HALT_Pos) /*!< Core +1659:Drivers/CMSIS/Include/core_cm7.h **** +1660:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_REGRDY_Pos 16U /*!< Core +1661:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_S_REGRDY_Msk (1UL << CoreDebug_DHCSR_S_REGRDY_Pos) /*!< Core +1662:Drivers/CMSIS/Include/core_cm7.h **** +1663:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_SNAPSTALL_Pos 5U /*!< Core +1664:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_SNAPSTALL_Msk (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos) /*!< Core +1665:Drivers/CMSIS/Include/core_cm7.h **** +1666:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_MASKINTS_Pos 3U /*!< Core +1667:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_MASKINTS_Msk (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos) /*!< Core +1668:Drivers/CMSIS/Include/core_cm7.h **** +1669:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_STEP_Pos 2U /*!< Core +1670:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_STEP_Msk (1UL << CoreDebug_DHCSR_C_STEP_Pos) /*!< Core +1671:Drivers/CMSIS/Include/core_cm7.h **** +1672:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_HALT_Pos 1U /*!< Core +1673:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_HALT_Msk (1UL << CoreDebug_DHCSR_C_HALT_Pos) /*!< Core +1674:Drivers/CMSIS/Include/core_cm7.h **** +1675:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_DEBUGEN_Pos 0U /*!< Core +1676:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DHCSR_C_DEBUGEN_Msk (1UL /*<< CoreDebug_DHCSR_C_DEBUGEN_Pos*/) /*!< Core +1677:Drivers/CMSIS/Include/core_cm7.h **** +1678:Drivers/CMSIS/Include/core_cm7.h **** /* Debug Core Register Selector Register Definitions */ +1679:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DCRSR_REGWnR_Pos 16U /*!< Core +1680:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DCRSR_REGWnR_Msk (1UL << CoreDebug_DCRSR_REGWnR_Pos) /*!< Core +1681:Drivers/CMSIS/Include/core_cm7.h **** +1682:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DCRSR_REGSEL_Pos 0U /*!< Core +1683:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DCRSR_REGSEL_Msk (0x1FUL /*<< CoreDebug_DCRSR_REGSEL_Pos*/) /*!< Core +1684:Drivers/CMSIS/Include/core_cm7.h **** +1685:Drivers/CMSIS/Include/core_cm7.h **** /* Debug Exception and Monitor Control Register Definitions */ +1686:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_TRCENA_Pos 24U /*!< Core +1687:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_TRCENA_Msk (1UL << CoreDebug_DEMCR_TRCENA_Pos) /*!< Core +1688:Drivers/CMSIS/Include/core_cm7.h **** +1689:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_REQ_Pos 19U /*!< Core +1690:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_REQ_Msk (1UL << CoreDebug_DEMCR_MON_REQ_Pos) /*!< Core +1691:Drivers/CMSIS/Include/core_cm7.h **** +1692:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_STEP_Pos 18U /*!< Core +1693:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_STEP_Msk (1UL << CoreDebug_DEMCR_MON_STEP_Pos) /*!< Core +1694:Drivers/CMSIS/Include/core_cm7.h **** +1695:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_PEND_Pos 17U /*!< Core +1696:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_PEND_Msk (1UL << CoreDebug_DEMCR_MON_PEND_Pos) /*!< Core + ARM GAS /tmp/ccs1e2mJ.s page 34 + + +1697:Drivers/CMSIS/Include/core_cm7.h **** +1698:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_EN_Pos 16U /*!< Core +1699:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_MON_EN_Msk (1UL << CoreDebug_DEMCR_MON_EN_Pos) /*!< Core +1700:Drivers/CMSIS/Include/core_cm7.h **** +1701:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_HARDERR_Pos 10U /*!< Core +1702:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_HARDERR_Msk (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos) /*!< Core +1703:Drivers/CMSIS/Include/core_cm7.h **** +1704:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_INTERR_Pos 9U /*!< Core +1705:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_INTERR_Msk (1UL << CoreDebug_DEMCR_VC_INTERR_Pos) /*!< Core +1706:Drivers/CMSIS/Include/core_cm7.h **** +1707:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_BUSERR_Pos 8U /*!< Core +1708:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_BUSERR_Msk (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos) /*!< Core +1709:Drivers/CMSIS/Include/core_cm7.h **** +1710:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_STATERR_Pos 7U /*!< Core +1711:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_STATERR_Msk (1UL << CoreDebug_DEMCR_VC_STATERR_Pos) /*!< Core +1712:Drivers/CMSIS/Include/core_cm7.h **** +1713:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_CHKERR_Pos 6U /*!< Core +1714:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_CHKERR_Msk (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos) /*!< Core +1715:Drivers/CMSIS/Include/core_cm7.h **** +1716:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_NOCPERR_Pos 5U /*!< Core +1717:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_NOCPERR_Msk (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos) /*!< Core +1718:Drivers/CMSIS/Include/core_cm7.h **** +1719:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_MMERR_Pos 4U /*!< Core +1720:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_MMERR_Msk (1UL << CoreDebug_DEMCR_VC_MMERR_Pos) /*!< Core +1721:Drivers/CMSIS/Include/core_cm7.h **** +1722:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_CORERESET_Pos 0U /*!< Core +1723:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_DEMCR_VC_CORERESET_Msk (1UL /*<< CoreDebug_DEMCR_VC_CORERESET_Pos*/) /*!< Core +1724:Drivers/CMSIS/Include/core_cm7.h **** +1725:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_CoreDebug */ +1726:Drivers/CMSIS/Include/core_cm7.h **** +1727:Drivers/CMSIS/Include/core_cm7.h **** +1728:Drivers/CMSIS/Include/core_cm7.h **** /** +1729:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1730:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_core_bitfield Core register bit field macros +1731:Drivers/CMSIS/Include/core_cm7.h **** \brief Macros for use with bit field definitions (xxx_Pos, xxx_Msk). +1732:Drivers/CMSIS/Include/core_cm7.h **** @{ +1733:Drivers/CMSIS/Include/core_cm7.h **** */ +1734:Drivers/CMSIS/Include/core_cm7.h **** +1735:Drivers/CMSIS/Include/core_cm7.h **** /** +1736:Drivers/CMSIS/Include/core_cm7.h **** \brief Mask and shift a bit field value for use in a register bit range. +1737:Drivers/CMSIS/Include/core_cm7.h **** \param[in] field Name of the register bit field. +1738:Drivers/CMSIS/Include/core_cm7.h **** \param[in] value Value of the bit field. This parameter is interpreted as an uint32_t type. +1739:Drivers/CMSIS/Include/core_cm7.h **** \return Masked and shifted value. +1740:Drivers/CMSIS/Include/core_cm7.h **** */ +1741:Drivers/CMSIS/Include/core_cm7.h **** #define _VAL2FLD(field, value) (((uint32_t)(value) << field ## _Pos) & field ## _Msk) +1742:Drivers/CMSIS/Include/core_cm7.h **** +1743:Drivers/CMSIS/Include/core_cm7.h **** /** +1744:Drivers/CMSIS/Include/core_cm7.h **** \brief Mask and shift a register value to extract a bit filed value. +1745:Drivers/CMSIS/Include/core_cm7.h **** \param[in] field Name of the register bit field. +1746:Drivers/CMSIS/Include/core_cm7.h **** \param[in] value Value of register. This parameter is interpreted as an uint32_t type. +1747:Drivers/CMSIS/Include/core_cm7.h **** \return Masked and shifted bit field value. +1748:Drivers/CMSIS/Include/core_cm7.h **** */ +1749:Drivers/CMSIS/Include/core_cm7.h **** #define _FLD2VAL(field, value) (((uint32_t)(value) & field ## _Msk) >> field ## _Pos) +1750:Drivers/CMSIS/Include/core_cm7.h **** +1751:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of group CMSIS_core_bitfield */ +1752:Drivers/CMSIS/Include/core_cm7.h **** +1753:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccs1e2mJ.s page 35 + + +1754:Drivers/CMSIS/Include/core_cm7.h **** /** +1755:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_core_register +1756:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_core_base Core Definitions +1757:Drivers/CMSIS/Include/core_cm7.h **** \brief Definitions for base addresses, unions, and structures. +1758:Drivers/CMSIS/Include/core_cm7.h **** @{ +1759:Drivers/CMSIS/Include/core_cm7.h **** */ +1760:Drivers/CMSIS/Include/core_cm7.h **** +1761:Drivers/CMSIS/Include/core_cm7.h **** /* Memory mapping of Core Hardware */ +1762:Drivers/CMSIS/Include/core_cm7.h **** #define SCS_BASE (0xE000E000UL) /*!< System Control Space Bas +1763:Drivers/CMSIS/Include/core_cm7.h **** #define ITM_BASE (0xE0000000UL) /*!< ITM Base Address */ +1764:Drivers/CMSIS/Include/core_cm7.h **** #define DWT_BASE (0xE0001000UL) /*!< DWT Base Address */ +1765:Drivers/CMSIS/Include/core_cm7.h **** #define TPI_BASE (0xE0040000UL) /*!< TPI Base Address */ +1766:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug_BASE (0xE000EDF0UL) /*!< Core Debug Base Address +1767:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address */ +1768:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_BASE (SCS_BASE + 0x0100UL) /*!< NVIC Base Address */ +1769:Drivers/CMSIS/Include/core_cm7.h **** #define SCB_BASE (SCS_BASE + 0x0D00UL) /*!< System Control Block Bas +1770:Drivers/CMSIS/Include/core_cm7.h **** +1771:Drivers/CMSIS/Include/core_cm7.h **** #define SCnSCB ((SCnSCB_Type *) SCS_BASE ) /*!< System control Register +1772:Drivers/CMSIS/Include/core_cm7.h **** #define SCB ((SCB_Type *) SCB_BASE ) /*!< SCB configuration struct +1773:Drivers/CMSIS/Include/core_cm7.h **** #define SysTick ((SysTick_Type *) SysTick_BASE ) /*!< SysTick configuration st +1774:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC ((NVIC_Type *) NVIC_BASE ) /*!< NVIC configuration struc +1775:Drivers/CMSIS/Include/core_cm7.h **** #define ITM ((ITM_Type *) ITM_BASE ) /*!< ITM configuration struct +1776:Drivers/CMSIS/Include/core_cm7.h **** #define DWT ((DWT_Type *) DWT_BASE ) /*!< DWT configuration struct +1777:Drivers/CMSIS/Include/core_cm7.h **** #define TPI ((TPI_Type *) TPI_BASE ) /*!< TPI configuration struct +1778:Drivers/CMSIS/Include/core_cm7.h **** #define CoreDebug ((CoreDebug_Type *) CoreDebug_BASE) /*!< Core Debug configuration +1779:Drivers/CMSIS/Include/core_cm7.h **** +1780:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +1781:Drivers/CMSIS/Include/core_cm7.h **** #define MPU_BASE (SCS_BASE + 0x0D90UL) /*!< Memory Protection Unit * +1782:Drivers/CMSIS/Include/core_cm7.h **** #define MPU ((MPU_Type *) MPU_BASE ) /*!< Memory Protection Unit * +1783:Drivers/CMSIS/Include/core_cm7.h **** #endif +1784:Drivers/CMSIS/Include/core_cm7.h **** +1785:Drivers/CMSIS/Include/core_cm7.h **** #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ +1786:Drivers/CMSIS/Include/core_cm7.h **** #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ +1787:Drivers/CMSIS/Include/core_cm7.h **** +1788:Drivers/CMSIS/Include/core_cm7.h **** /*@} */ +1789:Drivers/CMSIS/Include/core_cm7.h **** +1790:Drivers/CMSIS/Include/core_cm7.h **** +1791:Drivers/CMSIS/Include/core_cm7.h **** +1792:Drivers/CMSIS/Include/core_cm7.h **** /******************************************************************************* +1793:Drivers/CMSIS/Include/core_cm7.h **** * Hardware Abstraction Layer +1794:Drivers/CMSIS/Include/core_cm7.h **** Core Function Interface contains: +1795:Drivers/CMSIS/Include/core_cm7.h **** - Core NVIC Functions +1796:Drivers/CMSIS/Include/core_cm7.h **** - Core SysTick Functions +1797:Drivers/CMSIS/Include/core_cm7.h **** - Core Debug Functions +1798:Drivers/CMSIS/Include/core_cm7.h **** - Core Register Access Functions +1799:Drivers/CMSIS/Include/core_cm7.h **** ******************************************************************************/ +1800:Drivers/CMSIS/Include/core_cm7.h **** /** +1801:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference +1802:Drivers/CMSIS/Include/core_cm7.h **** */ +1803:Drivers/CMSIS/Include/core_cm7.h **** +1804:Drivers/CMSIS/Include/core_cm7.h **** +1805:Drivers/CMSIS/Include/core_cm7.h **** +1806:Drivers/CMSIS/Include/core_cm7.h **** /* ########################## NVIC functions #################################### */ +1807:Drivers/CMSIS/Include/core_cm7.h **** /** +1808:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_Core_FunctionInterface +1809:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_Core_NVICFunctions NVIC Functions +1810:Drivers/CMSIS/Include/core_cm7.h **** \brief Functions that manage interrupts and exceptions via the NVIC. + ARM GAS /tmp/ccs1e2mJ.s page 36 + + +1811:Drivers/CMSIS/Include/core_cm7.h **** @{ +1812:Drivers/CMSIS/Include/core_cm7.h **** */ +1813:Drivers/CMSIS/Include/core_cm7.h **** +1814:Drivers/CMSIS/Include/core_cm7.h **** #ifdef CMSIS_NVIC_VIRTUAL +1815:Drivers/CMSIS/Include/core_cm7.h **** #ifndef CMSIS_NVIC_VIRTUAL_HEADER_FILE +1816:Drivers/CMSIS/Include/core_cm7.h **** #define CMSIS_NVIC_VIRTUAL_HEADER_FILE "cmsis_nvic_virtual.h" +1817:Drivers/CMSIS/Include/core_cm7.h **** #endif +1818:Drivers/CMSIS/Include/core_cm7.h **** #include CMSIS_NVIC_VIRTUAL_HEADER_FILE +1819:Drivers/CMSIS/Include/core_cm7.h **** #else +1820:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_SetPriorityGrouping __NVIC_SetPriorityGrouping +1821:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping +1822:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_EnableIRQ __NVIC_EnableIRQ +1823:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetEnableIRQ __NVIC_GetEnableIRQ +1824:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_DisableIRQ __NVIC_DisableIRQ +1825:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetPendingIRQ __NVIC_GetPendingIRQ +1826:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_SetPendingIRQ __NVIC_SetPendingIRQ +1827:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_ClearPendingIRQ __NVIC_ClearPendingIRQ +1828:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetActive __NVIC_GetActive +1829:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_SetPriority __NVIC_SetPriority +1830:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetPriority __NVIC_GetPriority +1831:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_SystemReset __NVIC_SystemReset +1832:Drivers/CMSIS/Include/core_cm7.h **** #endif /* CMSIS_NVIC_VIRTUAL */ +1833:Drivers/CMSIS/Include/core_cm7.h **** +1834:Drivers/CMSIS/Include/core_cm7.h **** #ifdef CMSIS_VECTAB_VIRTUAL +1835:Drivers/CMSIS/Include/core_cm7.h **** #ifndef CMSIS_VECTAB_VIRTUAL_HEADER_FILE +1836:Drivers/CMSIS/Include/core_cm7.h **** #define CMSIS_VECTAB_VIRTUAL_HEADER_FILE "cmsis_vectab_virtual.h" +1837:Drivers/CMSIS/Include/core_cm7.h **** #endif +1838:Drivers/CMSIS/Include/core_cm7.h **** #include CMSIS_VECTAB_VIRTUAL_HEADER_FILE +1839:Drivers/CMSIS/Include/core_cm7.h **** #else +1840:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_SetVector __NVIC_SetVector +1841:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_GetVector __NVIC_GetVector +1842:Drivers/CMSIS/Include/core_cm7.h **** #endif /* (CMSIS_VECTAB_VIRTUAL) */ +1843:Drivers/CMSIS/Include/core_cm7.h **** +1844:Drivers/CMSIS/Include/core_cm7.h **** #define NVIC_USER_IRQ_OFFSET 16 +1845:Drivers/CMSIS/Include/core_cm7.h **** +1846:Drivers/CMSIS/Include/core_cm7.h **** +1847:Drivers/CMSIS/Include/core_cm7.h **** /* The following EXC_RETURN values are saved the LR on exception entry */ +1848:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_HANDLER (0xFFFFFFF1UL) /* return to Handler mode, uses MSP after ret +1849:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_THREAD_MSP (0xFFFFFFF9UL) /* return to Thread mode, uses MSP after retu +1850:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_THREAD_PSP (0xFFFFFFFDUL) /* return to Thread mode, uses PSP after retu +1851:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_HANDLER_FPU (0xFFFFFFE1UL) /* return to Handler mode, uses MSP after ret +1852:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_THREAD_MSP_FPU (0xFFFFFFE9UL) /* return to Thread mode, uses MSP after retu +1853:Drivers/CMSIS/Include/core_cm7.h **** #define EXC_RETURN_THREAD_PSP_FPU (0xFFFFFFEDUL) /* return to Thread mode, uses PSP after retu +1854:Drivers/CMSIS/Include/core_cm7.h **** +1855:Drivers/CMSIS/Include/core_cm7.h **** +1856:Drivers/CMSIS/Include/core_cm7.h **** /** +1857:Drivers/CMSIS/Include/core_cm7.h **** \brief Set Priority Grouping +1858:Drivers/CMSIS/Include/core_cm7.h **** \details Sets the priority grouping field using the required unlock sequence. +1859:Drivers/CMSIS/Include/core_cm7.h **** The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field. +1860:Drivers/CMSIS/Include/core_cm7.h **** Only values from 0..7 are used. +1861:Drivers/CMSIS/Include/core_cm7.h **** In case of a conflict between priority grouping and available +1862:Drivers/CMSIS/Include/core_cm7.h **** priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. +1863:Drivers/CMSIS/Include/core_cm7.h **** \param [in] PriorityGroup Priority grouping field. +1864:Drivers/CMSIS/Include/core_cm7.h **** */ +1865:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_SetPriorityGrouping(uint32_t PriorityGroup) + 39 .loc 2 1865 22 view .LVU3 + 40 .LBB39: + ARM GAS /tmp/ccs1e2mJ.s page 37 + + +1866:Drivers/CMSIS/Include/core_cm7.h **** { +1867:Drivers/CMSIS/Include/core_cm7.h **** uint32_t reg_value; + 41 .loc 2 1867 3 view .LVU4 +1868:Drivers/CMSIS/Include/core_cm7.h **** uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 a + 42 .loc 2 1868 3 view .LVU5 +1869:Drivers/CMSIS/Include/core_cm7.h **** +1870:Drivers/CMSIS/Include/core_cm7.h **** reg_value = SCB->AIRCR; /* read old register + 43 .loc 2 1870 3 view .LVU6 + 44 .loc 2 1870 14 is_stmt 0 view .LVU7 + 45 0000 0649 ldr r1, .L2 + 46 0002 CB68 ldr r3, [r1, #12] + 47 .LVL1: +1871:Drivers/CMSIS/Include/core_cm7.h **** reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to chan + 48 .loc 2 1871 3 is_stmt 1 view .LVU8 + 49 .loc 2 1871 13 is_stmt 0 view .LVU9 + 50 0004 23F4E063 bic r3, r3, #1792 + 51 .LVL2: + 52 .loc 2 1871 13 view .LVU10 + 53 0008 1B04 lsls r3, r3, #16 + 54 000a 1B0C lsrs r3, r3, #16 + 55 .LVL3: +1872:Drivers/CMSIS/Include/core_cm7.h **** reg_value = (reg_value | + 56 .loc 2 1872 3 is_stmt 1 view .LVU11 +1873:Drivers/CMSIS/Include/core_cm7.h **** ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | +1874:Drivers/CMSIS/Include/core_cm7.h **** (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key a + 57 .loc 2 1874 35 is_stmt 0 view .LVU12 + 58 000c 0002 lsls r0, r0, #8 + 59 .LVL4: + 60 .loc 2 1874 35 view .LVU13 + 61 000e 00F4E060 and r0, r0, #1792 +1873:Drivers/CMSIS/Include/core_cm7.h **** ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 62 .loc 2 1873 62 view .LVU14 + 63 0012 0343 orrs r3, r3, r0 + 64 .LVL5: +1872:Drivers/CMSIS/Include/core_cm7.h **** reg_value = (reg_value | + 65 .loc 2 1872 14 view .LVU15 + 66 0014 024A ldr r2, .L2+4 + 67 0016 1A43 orrs r2, r2, r3 + 68 .LVL6: +1875:Drivers/CMSIS/Include/core_cm7.h **** SCB->AIRCR = reg_value; + 69 .loc 2 1875 3 is_stmt 1 view .LVU16 + 70 .loc 2 1875 14 is_stmt 0 view .LVU17 + 71 0018 CA60 str r2, [r1, #12] + 72 .LVL7: + 73 .loc 2 1875 14 view .LVU18 + 74 .LBE39: + 75 .LBE38: + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 76 .loc 1 149 1 view .LVU19 + 77 001a 7047 bx lr + 78 .L3: + 79 .align 2 + 80 .L2: + 81 001c 00ED00E0 .word -536810240 + 82 0020 0000FA05 .word 100270080 + 83 .cfi_endproc + 84 .LFE141: + ARM GAS /tmp/ccs1e2mJ.s page 38 + + + 86 .section .text.HAL_NVIC_SetPriority,"ax",%progbits + 87 .align 1 + 88 .global HAL_NVIC_SetPriority + 89 .syntax unified + 90 .thumb + 91 .thumb_func + 92 .fpu fpv5-d16 + 94 HAL_NVIC_SetPriority: + 95 .LVL8: + 96 .LFB142: + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Sets the priority of an interrupt. + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param IRQn External interrupt number. + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be an enumerator of IRQn_Type enumeration + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSI + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param PreemptPriority The preemption priority for the IRQn channel. + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be a value between 0 and 15 + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * A lower priority value indicates a higher priority + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param SubPriority the subpriority level for the IRQ channel. + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be a value between 0 and 15 + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * A lower priority value indicates a higher priority. + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 97 .loc 1 165 1 is_stmt 1 view -0 + 98 .cfi_startproc + 99 @ args = 0, pretend = 0, frame = 0 + 100 @ frame_needed = 0, uses_anonymous_args = 0 + 101 .loc 1 165 1 is_stmt 0 view .LVU21 + 102 0000 00B5 push {lr} + 103 .LCFI0: + 104 .cfi_def_cfa_offset 4 + 105 .cfi_offset 14, -4 + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** uint32_t prioritygroup = 0x00; + 106 .loc 1 166 3 is_stmt 1 view .LVU22 + 107 .LVL9: + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); + 108 .loc 1 169 3 view .LVU23 + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); + 109 .loc 1 170 3 view .LVU24 + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** prioritygroup = NVIC_GetPriorityGrouping(); + 110 .loc 1 172 3 view .LVU25 + 111 .LBB46: + 112 .LBI46: +1876:Drivers/CMSIS/Include/core_cm7.h **** } +1877:Drivers/CMSIS/Include/core_cm7.h **** +1878:Drivers/CMSIS/Include/core_cm7.h **** +1879:Drivers/CMSIS/Include/core_cm7.h **** /** +1880:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Priority Grouping +1881:Drivers/CMSIS/Include/core_cm7.h **** \details Reads the priority grouping field from the NVIC Interrupt Controller. +1882:Drivers/CMSIS/Include/core_cm7.h **** \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). +1883:Drivers/CMSIS/Include/core_cm7.h **** */ + ARM GAS /tmp/ccs1e2mJ.s page 39 + + +1884:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetPriorityGrouping(void) + 113 .loc 2 1884 26 view .LVU26 + 114 .LBB47: +1885:Drivers/CMSIS/Include/core_cm7.h **** { +1886:Drivers/CMSIS/Include/core_cm7.h **** return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); + 115 .loc 2 1886 3 view .LVU27 + 116 .loc 2 1886 26 is_stmt 0 view .LVU28 + 117 0002 174B ldr r3, .L10 + 118 0004 DB68 ldr r3, [r3, #12] + 119 .loc 2 1886 11 view .LVU29 + 120 0006 C3F30223 ubfx r3, r3, #8, #3 + 121 .LVL10: + 122 .loc 2 1886 11 view .LVU30 + 123 .LBE47: + 124 .LBE46: + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); + 125 .loc 1 174 3 is_stmt 1 view .LVU31 + 126 .LBB48: + 127 .LBI48: +1887:Drivers/CMSIS/Include/core_cm7.h **** } +1888:Drivers/CMSIS/Include/core_cm7.h **** +1889:Drivers/CMSIS/Include/core_cm7.h **** +1890:Drivers/CMSIS/Include/core_cm7.h **** /** +1891:Drivers/CMSIS/Include/core_cm7.h **** \brief Enable Interrupt +1892:Drivers/CMSIS/Include/core_cm7.h **** \details Enables a device specific interrupt in the NVIC interrupt controller. +1893:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1894:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1895:Drivers/CMSIS/Include/core_cm7.h **** */ +1896:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn) +1897:Drivers/CMSIS/Include/core_cm7.h **** { +1898:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1899:Drivers/CMSIS/Include/core_cm7.h **** { +1900:Drivers/CMSIS/Include/core_cm7.h **** NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +1901:Drivers/CMSIS/Include/core_cm7.h **** } +1902:Drivers/CMSIS/Include/core_cm7.h **** } +1903:Drivers/CMSIS/Include/core_cm7.h **** +1904:Drivers/CMSIS/Include/core_cm7.h **** +1905:Drivers/CMSIS/Include/core_cm7.h **** /** +1906:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Interrupt Enable status +1907:Drivers/CMSIS/Include/core_cm7.h **** \details Returns a device specific interrupt enable status from the NVIC interrupt controller. +1908:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1909:Drivers/CMSIS/Include/core_cm7.h **** \return 0 Interrupt is not enabled. +1910:Drivers/CMSIS/Include/core_cm7.h **** \return 1 Interrupt is enabled. +1911:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1912:Drivers/CMSIS/Include/core_cm7.h **** */ +1913:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn) +1914:Drivers/CMSIS/Include/core_cm7.h **** { +1915:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1916:Drivers/CMSIS/Include/core_cm7.h **** { +1917:Drivers/CMSIS/Include/core_cm7.h **** return((uint32_t)(((NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL) +1918:Drivers/CMSIS/Include/core_cm7.h **** } +1919:Drivers/CMSIS/Include/core_cm7.h **** else +1920:Drivers/CMSIS/Include/core_cm7.h **** { +1921:Drivers/CMSIS/Include/core_cm7.h **** return(0U); +1922:Drivers/CMSIS/Include/core_cm7.h **** } +1923:Drivers/CMSIS/Include/core_cm7.h **** } + ARM GAS /tmp/ccs1e2mJ.s page 40 + + +1924:Drivers/CMSIS/Include/core_cm7.h **** +1925:Drivers/CMSIS/Include/core_cm7.h **** +1926:Drivers/CMSIS/Include/core_cm7.h **** /** +1927:Drivers/CMSIS/Include/core_cm7.h **** \brief Disable Interrupt +1928:Drivers/CMSIS/Include/core_cm7.h **** \details Disables a device specific interrupt in the NVIC interrupt controller. +1929:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1930:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1931:Drivers/CMSIS/Include/core_cm7.h **** */ +1932:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_DisableIRQ(IRQn_Type IRQn) +1933:Drivers/CMSIS/Include/core_cm7.h **** { +1934:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1935:Drivers/CMSIS/Include/core_cm7.h **** { +1936:Drivers/CMSIS/Include/core_cm7.h **** NVIC->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +1937:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +1938:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +1939:Drivers/CMSIS/Include/core_cm7.h **** } +1940:Drivers/CMSIS/Include/core_cm7.h **** } +1941:Drivers/CMSIS/Include/core_cm7.h **** +1942:Drivers/CMSIS/Include/core_cm7.h **** +1943:Drivers/CMSIS/Include/core_cm7.h **** /** +1944:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Pending Interrupt +1945:Drivers/CMSIS/Include/core_cm7.h **** \details Reads the NVIC pending register and returns the pending bit for the specified device spe +1946:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1947:Drivers/CMSIS/Include/core_cm7.h **** \return 0 Interrupt status is not pending. +1948:Drivers/CMSIS/Include/core_cm7.h **** \return 1 Interrupt status is pending. +1949:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1950:Drivers/CMSIS/Include/core_cm7.h **** */ +1951:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn) +1952:Drivers/CMSIS/Include/core_cm7.h **** { +1953:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1954:Drivers/CMSIS/Include/core_cm7.h **** { +1955:Drivers/CMSIS/Include/core_cm7.h **** return((uint32_t)(((NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL) +1956:Drivers/CMSIS/Include/core_cm7.h **** } +1957:Drivers/CMSIS/Include/core_cm7.h **** else +1958:Drivers/CMSIS/Include/core_cm7.h **** { +1959:Drivers/CMSIS/Include/core_cm7.h **** return(0U); +1960:Drivers/CMSIS/Include/core_cm7.h **** } +1961:Drivers/CMSIS/Include/core_cm7.h **** } +1962:Drivers/CMSIS/Include/core_cm7.h **** +1963:Drivers/CMSIS/Include/core_cm7.h **** +1964:Drivers/CMSIS/Include/core_cm7.h **** /** +1965:Drivers/CMSIS/Include/core_cm7.h **** \brief Set Pending Interrupt +1966:Drivers/CMSIS/Include/core_cm7.h **** \details Sets the pending bit of a device specific interrupt in the NVIC pending register. +1967:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1968:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1969:Drivers/CMSIS/Include/core_cm7.h **** */ +1970:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_SetPendingIRQ(IRQn_Type IRQn) +1971:Drivers/CMSIS/Include/core_cm7.h **** { +1972:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1973:Drivers/CMSIS/Include/core_cm7.h **** { +1974:Drivers/CMSIS/Include/core_cm7.h **** NVIC->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +1975:Drivers/CMSIS/Include/core_cm7.h **** } +1976:Drivers/CMSIS/Include/core_cm7.h **** } +1977:Drivers/CMSIS/Include/core_cm7.h **** +1978:Drivers/CMSIS/Include/core_cm7.h **** +1979:Drivers/CMSIS/Include/core_cm7.h **** /** +1980:Drivers/CMSIS/Include/core_cm7.h **** \brief Clear Pending Interrupt + ARM GAS /tmp/ccs1e2mJ.s page 41 + + +1981:Drivers/CMSIS/Include/core_cm7.h **** \details Clears the pending bit of a device specific interrupt in the NVIC pending register. +1982:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1983:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +1984:Drivers/CMSIS/Include/core_cm7.h **** */ +1985:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn) +1986:Drivers/CMSIS/Include/core_cm7.h **** { +1987:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +1988:Drivers/CMSIS/Include/core_cm7.h **** { +1989:Drivers/CMSIS/Include/core_cm7.h **** NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); +1990:Drivers/CMSIS/Include/core_cm7.h **** } +1991:Drivers/CMSIS/Include/core_cm7.h **** } +1992:Drivers/CMSIS/Include/core_cm7.h **** +1993:Drivers/CMSIS/Include/core_cm7.h **** +1994:Drivers/CMSIS/Include/core_cm7.h **** /** +1995:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Active Interrupt +1996:Drivers/CMSIS/Include/core_cm7.h **** \details Reads the active register in the NVIC and returns the active bit for the device specific +1997:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Device specific interrupt number. +1998:Drivers/CMSIS/Include/core_cm7.h **** \return 0 Interrupt status is not active. +1999:Drivers/CMSIS/Include/core_cm7.h **** \return 1 Interrupt status is active. +2000:Drivers/CMSIS/Include/core_cm7.h **** \note IRQn must not be negative. +2001:Drivers/CMSIS/Include/core_cm7.h **** */ +2002:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetActive(IRQn_Type IRQn) +2003:Drivers/CMSIS/Include/core_cm7.h **** { +2004:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +2005:Drivers/CMSIS/Include/core_cm7.h **** { +2006:Drivers/CMSIS/Include/core_cm7.h **** return((uint32_t)(((NVIC->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL) +2007:Drivers/CMSIS/Include/core_cm7.h **** } +2008:Drivers/CMSIS/Include/core_cm7.h **** else +2009:Drivers/CMSIS/Include/core_cm7.h **** { +2010:Drivers/CMSIS/Include/core_cm7.h **** return(0U); +2011:Drivers/CMSIS/Include/core_cm7.h **** } +2012:Drivers/CMSIS/Include/core_cm7.h **** } +2013:Drivers/CMSIS/Include/core_cm7.h **** +2014:Drivers/CMSIS/Include/core_cm7.h **** +2015:Drivers/CMSIS/Include/core_cm7.h **** /** +2016:Drivers/CMSIS/Include/core_cm7.h **** \brief Set Interrupt Priority +2017:Drivers/CMSIS/Include/core_cm7.h **** \details Sets the priority of a device specific interrupt or a processor exception. +2018:Drivers/CMSIS/Include/core_cm7.h **** The interrupt number can be positive to specify a device specific interrupt, +2019:Drivers/CMSIS/Include/core_cm7.h **** or negative to specify a processor exception. +2020:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Interrupt number. +2021:Drivers/CMSIS/Include/core_cm7.h **** \param [in] priority Priority to set. +2022:Drivers/CMSIS/Include/core_cm7.h **** \note The priority cannot be set for every processor exception. +2023:Drivers/CMSIS/Include/core_cm7.h **** */ +2024:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority) +2025:Drivers/CMSIS/Include/core_cm7.h **** { +2026:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +2027:Drivers/CMSIS/Include/core_cm7.h **** { +2028:Drivers/CMSIS/Include/core_cm7.h **** NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & ( +2029:Drivers/CMSIS/Include/core_cm7.h **** } +2030:Drivers/CMSIS/Include/core_cm7.h **** else +2031:Drivers/CMSIS/Include/core_cm7.h **** { +2032:Drivers/CMSIS/Include/core_cm7.h **** SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & ( +2033:Drivers/CMSIS/Include/core_cm7.h **** } +2034:Drivers/CMSIS/Include/core_cm7.h **** } +2035:Drivers/CMSIS/Include/core_cm7.h **** +2036:Drivers/CMSIS/Include/core_cm7.h **** +2037:Drivers/CMSIS/Include/core_cm7.h **** /** + ARM GAS /tmp/ccs1e2mJ.s page 42 + + +2038:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Interrupt Priority +2039:Drivers/CMSIS/Include/core_cm7.h **** \details Reads the priority of a device specific interrupt or a processor exception. +2040:Drivers/CMSIS/Include/core_cm7.h **** The interrupt number can be positive to specify a device specific interrupt, +2041:Drivers/CMSIS/Include/core_cm7.h **** or negative to specify a processor exception. +2042:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Interrupt number. +2043:Drivers/CMSIS/Include/core_cm7.h **** \return Interrupt Priority. +2044:Drivers/CMSIS/Include/core_cm7.h **** Value is aligned automatically to the implemented priority bits of the microc +2045:Drivers/CMSIS/Include/core_cm7.h **** */ +2046:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetPriority(IRQn_Type IRQn) +2047:Drivers/CMSIS/Include/core_cm7.h **** { +2048:Drivers/CMSIS/Include/core_cm7.h **** +2049:Drivers/CMSIS/Include/core_cm7.h **** if ((int32_t)(IRQn) >= 0) +2050:Drivers/CMSIS/Include/core_cm7.h **** { +2051:Drivers/CMSIS/Include/core_cm7.h **** return(((uint32_t)NVIC->IP[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); +2052:Drivers/CMSIS/Include/core_cm7.h **** } +2053:Drivers/CMSIS/Include/core_cm7.h **** else +2054:Drivers/CMSIS/Include/core_cm7.h **** { +2055:Drivers/CMSIS/Include/core_cm7.h **** return(((uint32_t)SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); +2056:Drivers/CMSIS/Include/core_cm7.h **** } +2057:Drivers/CMSIS/Include/core_cm7.h **** } +2058:Drivers/CMSIS/Include/core_cm7.h **** +2059:Drivers/CMSIS/Include/core_cm7.h **** +2060:Drivers/CMSIS/Include/core_cm7.h **** /** +2061:Drivers/CMSIS/Include/core_cm7.h **** \brief Encode Priority +2062:Drivers/CMSIS/Include/core_cm7.h **** \details Encodes the priority for an interrupt with the given priority group, +2063:Drivers/CMSIS/Include/core_cm7.h **** preemptive priority value, and subpriority value. +2064:Drivers/CMSIS/Include/core_cm7.h **** In case of a conflict between priority grouping and available +2065:Drivers/CMSIS/Include/core_cm7.h **** priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set. +2066:Drivers/CMSIS/Include/core_cm7.h **** \param [in] PriorityGroup Used priority group. +2067:Drivers/CMSIS/Include/core_cm7.h **** \param [in] PreemptPriority Preemptive priority value (starting from 0). +2068:Drivers/CMSIS/Include/core_cm7.h **** \param [in] SubPriority Subpriority value (starting from 0). +2069:Drivers/CMSIS/Include/core_cm7.h **** \return Encoded priority. Value can be used in the function \ref NVIC_SetP +2070:Drivers/CMSIS/Include/core_cm7.h **** */ +2071:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uin + 128 .loc 2 2071 26 view .LVU32 + 129 .LBB49: +2072:Drivers/CMSIS/Include/core_cm7.h **** { +2073:Drivers/CMSIS/Include/core_cm7.h **** uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used + 130 .loc 2 2073 3 view .LVU33 +2074:Drivers/CMSIS/Include/core_cm7.h **** uint32_t PreemptPriorityBits; + 131 .loc 2 2074 3 view .LVU34 +2075:Drivers/CMSIS/Include/core_cm7.h **** uint32_t SubPriorityBits; + 132 .loc 2 2075 3 view .LVU35 +2076:Drivers/CMSIS/Include/core_cm7.h **** +2077:Drivers/CMSIS/Include/core_cm7.h **** PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NV + 133 .loc 2 2077 3 view .LVU36 + 134 .loc 2 2077 31 is_stmt 0 view .LVU37 + 135 000a C3F1070C rsb ip, r3, #7 + 136 .loc 2 2077 23 view .LVU38 + 137 000e BCF1040F cmp ip, #4 + 138 0012 28BF it cs + 139 0014 4FF0040C movcs ip, #4 + 140 .LVL11: +2078:Drivers/CMSIS/Include/core_cm7.h **** SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint + 141 .loc 2 2078 3 is_stmt 1 view .LVU39 + 142 .loc 2 2078 44 is_stmt 0 view .LVU40 + 143 0018 03F1040E add lr, r3, #4 + ARM GAS /tmp/ccs1e2mJ.s page 43 + + + 144 .loc 2 2078 109 view .LVU41 + 145 001c BEF1060F cmp lr, #6 + 146 0020 14D9 bls .L8 + 147 0022 033B subs r3, r3, #3 + 148 .LVL12: + 149 .L5: +2079:Drivers/CMSIS/Include/core_cm7.h **** +2080:Drivers/CMSIS/Include/core_cm7.h **** return ( + 150 .loc 2 2080 3 is_stmt 1 view .LVU42 +2081:Drivers/CMSIS/Include/core_cm7.h **** ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits + 151 .loc 2 2081 30 is_stmt 0 view .LVU43 + 152 0024 4FF0FF3E mov lr, #-1 + 153 .LVL13: + 154 .loc 2 2081 30 view .LVU44 + 155 0028 0EFA0CFC lsl ip, lr, ip + 156 .LVL14: + 157 .loc 2 2081 30 view .LVU45 + 158 002c 21EA0C01 bic r1, r1, ip + 159 .LVL15: + 160 .loc 2 2081 82 view .LVU46 + 161 0030 9940 lsls r1, r1, r3 +2082:Drivers/CMSIS/Include/core_cm7.h **** ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) + 162 .loc 2 2082 30 view .LVU47 + 163 0032 0EFA03F3 lsl r3, lr, r3 + 164 .LVL16: + 165 .loc 2 2082 30 view .LVU48 + 166 0036 22EA0303 bic r3, r2, r3 +2081:Drivers/CMSIS/Include/core_cm7.h **** ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits + 167 .loc 2 2081 102 view .LVU49 + 168 003a 1943 orrs r1, r1, r3 + 169 .LVL17: +2081:Drivers/CMSIS/Include/core_cm7.h **** ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits + 170 .loc 2 2081 102 view .LVU50 + 171 .LBE49: + 172 .LBE48: + 173 .LBB51: + 174 .LBI51: +2024:Drivers/CMSIS/Include/core_cm7.h **** { + 175 .loc 2 2024 22 is_stmt 1 view .LVU51 + 176 .LBB52: +2026:Drivers/CMSIS/Include/core_cm7.h **** { + 177 .loc 2 2026 3 view .LVU52 +2026:Drivers/CMSIS/Include/core_cm7.h **** { + 178 .loc 2 2026 6 is_stmt 0 view .LVU53 + 179 003c 0028 cmp r0, #0 + 180 003e 07DB blt .L6 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 181 .loc 2 2028 5 is_stmt 1 view .LVU54 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 182 .loc 2 2028 49 is_stmt 0 view .LVU55 + 183 0040 0901 lsls r1, r1, #4 + 184 .LVL18: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 185 .loc 2 2028 49 view .LVU56 + 186 0042 C9B2 uxtb r1, r1 +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 187 .loc 2 2028 47 view .LVU57 + ARM GAS /tmp/ccs1e2mJ.s page 44 + + + 188 0044 074B ldr r3, .L10+4 + 189 0046 1954 strb r1, [r3, r0] + 190 .LVL19: + 191 .L4: +2028:Drivers/CMSIS/Include/core_cm7.h **** } + 192 .loc 2 2028 47 view .LVU58 + 193 .LBE52: + 194 .LBE51: + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 195 .loc 1 175 1 view .LVU59 + 196 0048 5DF804FB ldr pc, [sp], #4 + 197 .LVL20: + 198 .L8: + 199 .LBB54: + 200 .LBB50: +2078:Drivers/CMSIS/Include/core_cm7.h **** + 201 .loc 2 2078 109 view .LVU60 + 202 004c 0023 movs r3, #0 + 203 .LVL21: +2078:Drivers/CMSIS/Include/core_cm7.h **** + 204 .loc 2 2078 109 view .LVU61 + 205 004e E9E7 b .L5 + 206 .LVL22: + 207 .L6: +2078:Drivers/CMSIS/Include/core_cm7.h **** + 208 .loc 2 2078 109 view .LVU62 + 209 .LBE50: + 210 .LBE54: + 211 .LBB55: + 212 .LBB53: +2032:Drivers/CMSIS/Include/core_cm7.h **** } + 213 .loc 2 2032 5 is_stmt 1 view .LVU63 +2032:Drivers/CMSIS/Include/core_cm7.h **** } + 214 .loc 2 2032 33 is_stmt 0 view .LVU64 + 215 0050 00F00F00 and r0, r0, #15 + 216 .LVL23: +2032:Drivers/CMSIS/Include/core_cm7.h **** } + 217 .loc 2 2032 49 view .LVU65 + 218 0054 0901 lsls r1, r1, #4 + 219 .LVL24: +2032:Drivers/CMSIS/Include/core_cm7.h **** } + 220 .loc 2 2032 49 view .LVU66 + 221 0056 C9B2 uxtb r1, r1 +2032:Drivers/CMSIS/Include/core_cm7.h **** } + 222 .loc 2 2032 47 view .LVU67 + 223 0058 034B ldr r3, .L10+8 + 224 005a 1954 strb r1, [r3, r0] + 225 .LVL25: +2032:Drivers/CMSIS/Include/core_cm7.h **** } + 226 .loc 2 2032 47 view .LVU68 + 227 .LBE53: + 228 .LBE55: + 229 .loc 1 175 1 view .LVU69 + 230 005c F4E7 b .L4 + 231 .L11: + 232 005e 00BF .align 2 + 233 .L10: + ARM GAS /tmp/ccs1e2mJ.s page 45 + + + 234 0060 00ED00E0 .word -536810240 + 235 0064 00E400E0 .word -536812544 + 236 0068 14ED00E0 .word -536810220 + 237 .cfi_endproc + 238 .LFE142: + 240 .section .text.HAL_NVIC_EnableIRQ,"ax",%progbits + 241 .align 1 + 242 .global HAL_NVIC_EnableIRQ + 243 .syntax unified + 244 .thumb + 245 .thumb_func + 246 .fpu fpv5-d16 + 248 HAL_NVIC_EnableIRQ: + 249 .LVL26: + 250 .LFB143: + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Enables a device specific interrupt in the NVIC interrupt controller. + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @note To configure interrupts priority correctly, the NVIC_PriorityGroupConfig() + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * function should be called before. + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param IRQn External interrupt number. + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be an enumerator of IRQn_Type enumeration + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSI + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 251 .loc 1 187 1 is_stmt 1 view -0 + 252 .cfi_startproc + 253 @ args = 0, pretend = 0, frame = 0 + 254 @ frame_needed = 0, uses_anonymous_args = 0 + 255 @ link register save eliminated. + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + 256 .loc 1 189 3 view .LVU71 + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Enable interrupt */ + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** NVIC_EnableIRQ(IRQn); + 257 .loc 1 192 3 view .LVU72 + 258 .LBB56: + 259 .LBI56: +1896:Drivers/CMSIS/Include/core_cm7.h **** { + 260 .loc 2 1896 22 view .LVU73 + 261 .LBB57: +1898:Drivers/CMSIS/Include/core_cm7.h **** { + 262 .loc 2 1898 3 view .LVU74 +1898:Drivers/CMSIS/Include/core_cm7.h **** { + 263 .loc 2 1898 6 is_stmt 0 view .LVU75 + 264 0000 0028 cmp r0, #0 + 265 .LVL27: +1898:Drivers/CMSIS/Include/core_cm7.h **** { + 266 .loc 2 1898 6 view .LVU76 + 267 0002 07DB blt .L12 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 268 .loc 2 1900 5 is_stmt 1 view .LVU77 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 269 .loc 2 1900 81 is_stmt 0 view .LVU78 + ARM GAS /tmp/ccs1e2mJ.s page 46 + + + 270 0004 00F01F02 and r2, r0, #31 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 271 .loc 2 1900 34 view .LVU79 + 272 0008 4009 lsrs r0, r0, #5 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 273 .loc 2 1900 45 view .LVU80 + 274 000a 0123 movs r3, #1 + 275 000c 9340 lsls r3, r3, r2 +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 276 .loc 2 1900 43 view .LVU81 + 277 000e 024A ldr r2, .L14 + 278 0010 42F82030 str r3, [r2, r0, lsl #2] + 279 .LVL28: + 280 .L12: +1900:Drivers/CMSIS/Include/core_cm7.h **** } + 281 .loc 2 1900 43 view .LVU82 + 282 .LBE57: + 283 .LBE56: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 284 .loc 1 193 1 view .LVU83 + 285 0014 7047 bx lr + 286 .L15: + 287 0016 00BF .align 2 + 288 .L14: + 289 0018 00E100E0 .word -536813312 + 290 .cfi_endproc + 291 .LFE143: + 293 .section .text.HAL_NVIC_DisableIRQ,"ax",%progbits + 294 .align 1 + 295 .global HAL_NVIC_DisableIRQ + 296 .syntax unified + 297 .thumb + 298 .thumb_func + 299 .fpu fpv5-d16 + 301 HAL_NVIC_DisableIRQ: + 302 .LVL29: + 303 .LFB144: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Disables a device specific interrupt in the NVIC interrupt controller. + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param IRQn External interrupt number. + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be an enumerator of IRQn_Type enumeration + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSI + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_NVIC_DisableIRQ(IRQn_Type IRQn) + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 304 .loc 1 203 1 is_stmt 1 view -0 + 305 .cfi_startproc + 306 @ args = 0, pretend = 0, frame = 0 + 307 @ frame_needed = 0, uses_anonymous_args = 0 + 308 @ link register save eliminated. + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + 309 .loc 1 205 3 view .LVU85 + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Disable interrupt */ + ARM GAS /tmp/ccs1e2mJ.s page 47 + + + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** NVIC_DisableIRQ(IRQn); + 310 .loc 1 208 3 view .LVU86 + 311 .LBB64: + 312 .LBI64: +1932:Drivers/CMSIS/Include/core_cm7.h **** { + 313 .loc 2 1932 22 view .LVU87 + 314 .LBB65: +1934:Drivers/CMSIS/Include/core_cm7.h **** { + 315 .loc 2 1934 3 view .LVU88 +1934:Drivers/CMSIS/Include/core_cm7.h **** { + 316 .loc 2 1934 6 is_stmt 0 view .LVU89 + 317 0000 0028 cmp r0, #0 + 318 .LVL30: +1934:Drivers/CMSIS/Include/core_cm7.h **** { + 319 .loc 2 1934 6 view .LVU90 + 320 0002 0CDB blt .L16 +1936:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); + 321 .loc 2 1936 5 is_stmt 1 view .LVU91 +1936:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); + 322 .loc 2 1936 81 is_stmt 0 view .LVU92 + 323 0004 00F01F02 and r2, r0, #31 +1936:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); + 324 .loc 2 1936 34 view .LVU93 + 325 0008 4009 lsrs r0, r0, #5 +1936:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); + 326 .loc 2 1936 45 view .LVU94 + 327 000a 0123 movs r3, #1 + 328 000c 9340 lsls r3, r3, r2 +1936:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); + 329 .loc 2 1936 43 view .LVU95 + 330 000e 2030 adds r0, r0, #32 + 331 0010 034A ldr r2, .L18 + 332 0012 42F82030 str r3, [r2, r0, lsl #2] +1937:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); + 333 .loc 2 1937 5 is_stmt 1 view .LVU96 + 334 .LBB66: + 335 .LBI66: + 336 .file 3 "Drivers/CMSIS/Include/cmsis_gcc.h" + 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** + 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h + 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file + 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.0.4 + 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018 + 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ + 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* + 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 + 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may + 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. + 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at + 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 + 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software + 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT + ARM GAS /tmp/ccs1e2mJ.s page 48 + + + 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and + 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. + 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 24:Drivers/CMSIS/Include/cmsis_gcc.h **** + 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H + 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H + 27:Drivers/CMSIS/Include/cmsis_gcc.h **** + 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ + 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" + 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" + 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" + 33:Drivers/CMSIS/Include/cmsis_gcc.h **** + 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ + 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin + 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) + 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 38:Drivers/CMSIS/Include/cmsis_gcc.h **** + 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ + 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM + 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm + 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE + 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline + 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE + 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline + 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE + 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline + 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN + 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) + 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED + 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) + 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK + 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) + 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED + 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) + 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT + 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION + 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) + 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ + 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + ARM GAS /tmp/ccs1e2mJ.s page 49 + + + 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE + 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- + 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ + 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add + 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE + 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- + 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ + 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add + 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED + 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) + 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT + 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict + 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 116:Drivers/CMSIS/Include/cmsis_gcc.h **** + 117:Drivers/CMSIS/Include/cmsis_gcc.h **** + 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ + 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface + 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 123:Drivers/CMSIS/Include/cmsis_gcc.h **** + 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts + 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void) + 130:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); + 132:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 133:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccs1e2mJ.s page 50 + + + 134:Drivers/CMSIS/Include/cmsis_gcc.h **** + 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts + 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. + 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) + 141:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); + 143:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 144:Drivers/CMSIS/Include/cmsis_gcc.h **** + 145:Drivers/CMSIS/Include/cmsis_gcc.h **** + 146:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register + 148:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register. + 149:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value + 150:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 151:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) + 152:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 153:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 154:Drivers/CMSIS/Include/cmsis_gcc.h **** + 155:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) ); + 156:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 157:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 158:Drivers/CMSIS/Include/cmsis_gcc.h **** + 159:Drivers/CMSIS/Include/cmsis_gcc.h **** + 160:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 161:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 162:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure) + 163:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode. + 164:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value + 165:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 166:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) + 167:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 168:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 169:Drivers/CMSIS/Include/cmsis_gcc.h **** + 170:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + 171:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 172:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 174:Drivers/CMSIS/Include/cmsis_gcc.h **** + 175:Drivers/CMSIS/Include/cmsis_gcc.h **** + 176:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 177:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register + 178:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register. + 179:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 180:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 181:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) + 182:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 183:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + 184:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 185:Drivers/CMSIS/Include/cmsis_gcc.h **** + 186:Drivers/CMSIS/Include/cmsis_gcc.h **** + 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 188:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure) + 190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state. + ARM GAS /tmp/ccs1e2mJ.s page 51 + + + 191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 192:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) + 194:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + 196:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 197:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 198:Drivers/CMSIS/Include/cmsis_gcc.h **** + 199:Drivers/CMSIS/Include/cmsis_gcc.h **** + 200:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 201:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register + 202:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register. + 203:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value + 204:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 205:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void) + 206:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 207:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 208:Drivers/CMSIS/Include/cmsis_gcc.h **** + 209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + 210:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 211:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 212:Drivers/CMSIS/Include/cmsis_gcc.h **** + 213:Drivers/CMSIS/Include/cmsis_gcc.h **** + 214:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 215:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register + 216:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register. + 217:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value + 218:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 219:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void) + 220:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 221:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 222:Drivers/CMSIS/Include/cmsis_gcc.h **** + 223:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + 224:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 225:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 226:Drivers/CMSIS/Include/cmsis_gcc.h **** + 227:Drivers/CMSIS/Include/cmsis_gcc.h **** + 228:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register + 230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register. + 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value + 232:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(void) + 234:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 235:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 236:Drivers/CMSIS/Include/cmsis_gcc.h **** + 237:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + 238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 239:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 240:Drivers/CMSIS/Include/cmsis_gcc.h **** + 241:Drivers/CMSIS/Include/cmsis_gcc.h **** + 242:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer + 244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP). + 245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 246:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void) + ARM GAS /tmp/ccs1e2mJ.s page 52 + + + 248:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 250:Drivers/CMSIS/Include/cmsis_gcc.h **** + 251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) ); + 252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 253:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 254:Drivers/CMSIS/Include/cmsis_gcc.h **** + 255:Drivers/CMSIS/Include/cmsis_gcc.h **** + 256:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 257:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure) + 259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s + 260:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 261:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 262:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) + 263:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 264:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 265:Drivers/CMSIS/Include/cmsis_gcc.h **** + 266:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + 267:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 268:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 269:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 270:Drivers/CMSIS/Include/cmsis_gcc.h **** + 271:Drivers/CMSIS/Include/cmsis_gcc.h **** + 272:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 273:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer + 274:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP). + 275:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 276:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 277:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) + 278:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 279:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); + 280:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 281:Drivers/CMSIS/Include/cmsis_gcc.h **** + 282:Drivers/CMSIS/Include/cmsis_gcc.h **** + 283:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 284:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 285:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 286:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta + 287:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 288:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 289:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) + 290:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 291:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); + 292:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 293:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 294:Drivers/CMSIS/Include/cmsis_gcc.h **** + 295:Drivers/CMSIS/Include/cmsis_gcc.h **** + 296:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 297:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer + 298:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP). + 299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 300:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void) + 302:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 304:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccs1e2mJ.s page 53 + + + 305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) ); + 306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 307:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 308:Drivers/CMSIS/Include/cmsis_gcc.h **** + 309:Drivers/CMSIS/Include/cmsis_gcc.h **** + 310:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 311:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 312:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure) + 313:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat + 314:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 315:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 316:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) + 317:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 319:Drivers/CMSIS/Include/cmsis_gcc.h **** + 320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + 321:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 322:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 323:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 324:Drivers/CMSIS/Include/cmsis_gcc.h **** + 325:Drivers/CMSIS/Include/cmsis_gcc.h **** + 326:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 327:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer + 328:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP). + 329:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 330:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 331:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) + 332:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); + 334:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 335:Drivers/CMSIS/Include/cmsis_gcc.h **** + 336:Drivers/CMSIS/Include/cmsis_gcc.h **** + 337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 338:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 339:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure) + 340:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + 341:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 342:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 343:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) + 344:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 345:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); + 346:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 347:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 348:Drivers/CMSIS/Include/cmsis_gcc.h **** + 349:Drivers/CMSIS/Include/cmsis_gcc.h **** + 350:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 351:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 352:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Stack Pointer (non-secure) + 353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + 354:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value + 355:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) + 357:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 359:Drivers/CMSIS/Include/cmsis_gcc.h **** + 360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + 361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + ARM GAS /tmp/ccs1e2mJ.s page 54 + + + 362:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 363:Drivers/CMSIS/Include/cmsis_gcc.h **** + 364:Drivers/CMSIS/Include/cmsis_gcc.h **** + 365:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure) + 367:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + 368:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set + 369:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 370:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) + 371:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); + 373:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 374:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 375:Drivers/CMSIS/Include/cmsis_gcc.h **** + 376:Drivers/CMSIS/Include/cmsis_gcc.h **** + 377:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 378:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask + 379:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register. + 380:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 381:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 382:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) + 383:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 384:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 385:Drivers/CMSIS/Include/cmsis_gcc.h **** + 386:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 387:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 388:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 389:Drivers/CMSIS/Include/cmsis_gcc.h **** + 390:Drivers/CMSIS/Include/cmsis_gcc.h **** + 391:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 392:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 393:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure) + 394:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg + 395:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 396:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 397:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) + 398:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 399:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 400:Drivers/CMSIS/Include/cmsis_gcc.h **** + 401:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + 402:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 403:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 404:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 405:Drivers/CMSIS/Include/cmsis_gcc.h **** + 406:Drivers/CMSIS/Include/cmsis_gcc.h **** + 407:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 408:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask + 409:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register. + 410:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 411:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 412:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) + 413:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 415:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 416:Drivers/CMSIS/Include/cmsis_gcc.h **** + 417:Drivers/CMSIS/Include/cmsis_gcc.h **** + 418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + ARM GAS /tmp/ccs1e2mJ.s page 55 + + + 419:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure) + 421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + 422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 423:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 424:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) + 425:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 426:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); + 427:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 428:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 429:Drivers/CMSIS/Include/cmsis_gcc.h **** + 430:Drivers/CMSIS/Include/cmsis_gcc.h **** + 431:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 433:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 434:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 435:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ + 436:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + 437:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 438:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 439:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void) + 440:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 441:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory"); + 442:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 443:Drivers/CMSIS/Include/cmsis_gcc.h **** + 444:Drivers/CMSIS/Include/cmsis_gcc.h **** + 445:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 446:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ + 447:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR. + 448:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 449:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 450:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void) + 451:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 452:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory"); + 453:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 454:Drivers/CMSIS/Include/cmsis_gcc.h **** + 455:Drivers/CMSIS/Include/cmsis_gcc.h **** + 456:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 457:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority + 458:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register. + 459:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 460:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 461:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) + 462:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 463:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 464:Drivers/CMSIS/Include/cmsis_gcc.h **** + 465:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + 466:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 467:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 468:Drivers/CMSIS/Include/cmsis_gcc.h **** + 469:Drivers/CMSIS/Include/cmsis_gcc.h **** + 470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 471:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure) + 473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state. + 474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 475:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + ARM GAS /tmp/ccs1e2mJ.s page 56 + + + 476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) + 477:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 479:Drivers/CMSIS/Include/cmsis_gcc.h **** + 480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + 481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 482:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 483:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 484:Drivers/CMSIS/Include/cmsis_gcc.h **** + 485:Drivers/CMSIS/Include/cmsis_gcc.h **** + 486:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority + 488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register. + 489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 490:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) + 492:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); + 494:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 495:Drivers/CMSIS/Include/cmsis_gcc.h **** + 496:Drivers/CMSIS/Include/cmsis_gcc.h **** + 497:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 498:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 499:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure) + 500:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state. + 501:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 502:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 503:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) + 504:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 505:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); + 506:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 507:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 508:Drivers/CMSIS/Include/cmsis_gcc.h **** + 509:Drivers/CMSIS/Include/cmsis_gcc.h **** + 510:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 511:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition + 512:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable + 513:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level. + 514:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 515:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 516:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) + 517:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 518:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); + 519:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 520:Drivers/CMSIS/Include/cmsis_gcc.h **** + 521:Drivers/CMSIS/Include/cmsis_gcc.h **** + 522:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 523:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask + 524:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register. + 525:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 526:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) + 528:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 530:Drivers/CMSIS/Include/cmsis_gcc.h **** + 531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + 532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + ARM GAS /tmp/ccs1e2mJ.s page 57 + + + 533:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 534:Drivers/CMSIS/Include/cmsis_gcc.h **** + 535:Drivers/CMSIS/Include/cmsis_gcc.h **** + 536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 537:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 538:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure) + 539:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state. + 540:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 541:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 542:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) + 543:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 544:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 545:Drivers/CMSIS/Include/cmsis_gcc.h **** + 546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + 547:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 548:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 549:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 550:Drivers/CMSIS/Include/cmsis_gcc.h **** + 551:Drivers/CMSIS/Include/cmsis_gcc.h **** + 552:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 553:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask + 554:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register. + 555:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 556:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 557:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) + 558:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 559:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); + 560:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 561:Drivers/CMSIS/Include/cmsis_gcc.h **** + 562:Drivers/CMSIS/Include/cmsis_gcc.h **** + 563:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 564:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 565:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure) + 566:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state. + 567:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 568:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 569:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) + 570:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 571:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); + 572:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 573:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 574:Drivers/CMSIS/Include/cmsis_gcc.h **** + 575:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 576:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 577:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + 578:Drivers/CMSIS/Include/cmsis_gcc.h **** + 579:Drivers/CMSIS/Include/cmsis_gcc.h **** + 580:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 581:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + 582:Drivers/CMSIS/Include/cmsis_gcc.h **** + 583:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit + 585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 588:Drivers/CMSIS/Include/cmsis_gcc.h **** + 589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + ARM GAS /tmp/ccs1e2mJ.s page 58 + + + 590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 591:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) + 593:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 595:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 596:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 597:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 598:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 599:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 600:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + 601:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 602:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 603:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 604:Drivers/CMSIS/Include/cmsis_gcc.h **** + 605:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + 606:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 607:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure) + 608:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 609:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 610:Drivers/CMSIS/Include/cmsis_gcc.h **** + 611:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in + 612:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 613:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 614:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) + 615:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 616:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 617:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 618:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 619:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 620:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 621:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + 622:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 623:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 624:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 625:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 626:Drivers/CMSIS/Include/cmsis_gcc.h **** + 627:Drivers/CMSIS/Include/cmsis_gcc.h **** + 628:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 629:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit + 630:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 631:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 632:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 633:Drivers/CMSIS/Include/cmsis_gcc.h **** + 634:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + 635:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 636:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 637:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) + 638:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 639:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 640:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); + 645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 646:Drivers/CMSIS/Include/cmsis_gcc.h **** } + ARM GAS /tmp/ccs1e2mJ.s page 59 + + + 647:Drivers/CMSIS/Include/cmsis_gcc.h **** + 648:Drivers/CMSIS/Include/cmsis_gcc.h **** + 649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 650:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 652:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 653:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 654:Drivers/CMSIS/Include/cmsis_gcc.h **** + 655:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s + 656:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 657:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 658:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) + 659:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 661:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 662:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 663:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 664:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); + 665:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 666:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 667:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 668:Drivers/CMSIS/Include/cmsis_gcc.h **** + 669:Drivers/CMSIS/Include/cmsis_gcc.h **** + 670:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 671:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit + 672:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 673:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 674:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 675:Drivers/CMSIS/Include/cmsis_gcc.h **** + 676:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + 677:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 678:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 679:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) + 680:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 681:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 682:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 683:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 684:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 685:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 686:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 687:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + 688:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 689:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 690:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 691:Drivers/CMSIS/Include/cmsis_gcc.h **** + 692:Drivers/CMSIS/Include/cmsis_gcc.h **** + 693:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 694:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 695:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure) + 696:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 697:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 698:Drivers/CMSIS/Include/cmsis_gcc.h **** + 699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec + 700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 701:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) + 703:Drivers/CMSIS/Include/cmsis_gcc.h **** { + ARM GAS /tmp/ccs1e2mJ.s page 60 + + + 704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 709:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + 710:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 711:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 712:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 713:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 714:Drivers/CMSIS/Include/cmsis_gcc.h **** + 715:Drivers/CMSIS/Include/cmsis_gcc.h **** + 716:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit + 718:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 719:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 720:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 721:Drivers/CMSIS/Include/cmsis_gcc.h **** + 722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + 723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + 724:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) + 726:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 727:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 728:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 729:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 730:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 731:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 732:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); + 733:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 734:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 735:Drivers/CMSIS/Include/cmsis_gcc.h **** + 736:Drivers/CMSIS/Include/cmsis_gcc.h **** + 737:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 738:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 739:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure) + 740:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 741:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 742:Drivers/CMSIS/Include/cmsis_gcc.h **** + 743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu + 744:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set + 745:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) + 747:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 748:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 749:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 750:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 751:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 752:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); + 753:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 754:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 756:Drivers/CMSIS/Include/cmsis_gcc.h **** + 757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + 759:Drivers/CMSIS/Include/cmsis_gcc.h **** + 760:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccs1e2mJ.s page 61 + + + 761:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR + 763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register. + 764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value + 765:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 766:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void) + 767:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 768:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 769:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 770:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr) + 771:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 772:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 773:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr(); + 775:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 776:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 777:Drivers/CMSIS/Include/cmsis_gcc.h **** + 778:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + 779:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 781:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 782:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U); + 783:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 784:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 785:Drivers/CMSIS/Include/cmsis_gcc.h **** + 786:Drivers/CMSIS/Include/cmsis_gcc.h **** + 787:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 788:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR + 789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register. + 790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set + 791:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) + 793:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 795:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 796:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr) + 797:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 798:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 799:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 800:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr); + 801:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 802:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); + 803:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 804:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 805:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr; + 806:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 807:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 808:Drivers/CMSIS/Include/cmsis_gcc.h **** + 809:Drivers/CMSIS/Include/cmsis_gcc.h **** + 810:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */ + 811:Drivers/CMSIS/Include/cmsis_gcc.h **** + 812:Drivers/CMSIS/Include/cmsis_gcc.h **** + 813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ + 814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + 815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions + 816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 817:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + ARM GAS /tmp/ccs1e2mJ.s page 62 + + + 818:Drivers/CMSIS/Include/cmsis_gcc.h **** + 819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. + 820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" + 821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ + 822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) + 823:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) + 824:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) + 825:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) + 826:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 827:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) + 828:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) + 829:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) + 830:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 831:Drivers/CMSIS/Include/cmsis_gcc.h **** + 832:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 833:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation + 834:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. + 835:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 836:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") + 837:Drivers/CMSIS/Include/cmsis_gcc.h **** + 838:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 839:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt + 840:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o + 841:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 842:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi") + 843:Drivers/CMSIS/Include/cmsis_gcc.h **** + 844:Drivers/CMSIS/Include/cmsis_gcc.h **** + 845:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 846:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event + 847:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter + 848:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. + 849:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 850:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe") + 851:Drivers/CMSIS/Include/cmsis_gcc.h **** + 852:Drivers/CMSIS/Include/cmsis_gcc.h **** + 853:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 854:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event + 855:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + 856:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 857:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") + 858:Drivers/CMSIS/Include/cmsis_gcc.h **** + 859:Drivers/CMSIS/Include/cmsis_gcc.h **** + 860:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 861:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier + 862:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, + 863:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, + 864:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. + 865:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) + 867:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); + 869:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 870:Drivers/CMSIS/Include/cmsis_gcc.h **** + 871:Drivers/CMSIS/Include/cmsis_gcc.h **** + 872:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 873:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Synchronization Barrier + 874:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Acts as a special kind of Data Memory Barrier. + ARM GAS /tmp/ccs1e2mJ.s page 63 + + + 875:Drivers/CMSIS/Include/cmsis_gcc.h **** It completes when all explicit memory accesses before this instruction complete. + 876:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DSB(void) + 337 .loc 3 877 27 view .LVU97 + 338 .LBB67: + 878:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory"); + 339 .loc 3 879 3 view .LVU98 + 340 .syntax unified + 341 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 342 0016 BFF34F8F dsb 0xF + 343 @ 0 "" 2 + 344 .thumb + 345 .syntax unified + 346 .LBE67: + 347 .LBE66: +1938:Drivers/CMSIS/Include/core_cm7.h **** } + 348 .loc 2 1938 5 view .LVU99 + 349 .LBB68: + 350 .LBI68: + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 351 .loc 3 866 27 view .LVU100 + 352 .LBB69: + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 353 .loc 3 868 3 view .LVU101 + 354 .syntax unified + 355 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 356 001a BFF36F8F isb 0xF + 357 @ 0 "" 2 + 358 .LVL31: + 359 .thumb + 360 .syntax unified + 361 .L16: + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 362 .loc 3 868 3 is_stmt 0 view .LVU102 + 363 .LBE69: + 364 .LBE68: + 365 .LBE65: + 366 .LBE64: + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 367 .loc 1 209 1 view .LVU103 + 368 001e 7047 bx lr + 369 .L19: + 370 .align 2 + 371 .L18: + 372 0020 00E100E0 .word -536813312 + 373 .cfi_endproc + 374 .LFE144: + 376 .section .text.HAL_NVIC_SystemReset,"ax",%progbits + 377 .align 1 + 378 .global HAL_NVIC_SystemReset + 379 .syntax unified + 380 .thumb + 381 .thumb_func + 382 .fpu fpv5-d16 + 384 HAL_NVIC_SystemReset: + 385 .LFB145: + ARM GAS /tmp/ccs1e2mJ.s page 64 + + + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Initiates a system reset request to reset the MCU. + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_NVIC_SystemReset(void) + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 386 .loc 1 216 1 is_stmt 1 view -0 + 387 .cfi_startproc + 388 @ Volatile: function does not return. + 389 @ args = 0, pretend = 0, frame = 0 + 390 @ frame_needed = 0, uses_anonymous_args = 0 + 391 @ link register save eliminated. + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* System Reset */ + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** NVIC_SystemReset(); + 392 .loc 1 218 3 view .LVU105 + 393 .LBB76: + 394 .LBI76: +2083:Drivers/CMSIS/Include/core_cm7.h **** ); +2084:Drivers/CMSIS/Include/core_cm7.h **** } +2085:Drivers/CMSIS/Include/core_cm7.h **** +2086:Drivers/CMSIS/Include/core_cm7.h **** +2087:Drivers/CMSIS/Include/core_cm7.h **** /** +2088:Drivers/CMSIS/Include/core_cm7.h **** \brief Decode Priority +2089:Drivers/CMSIS/Include/core_cm7.h **** \details Decodes an interrupt priority value with a given priority group to +2090:Drivers/CMSIS/Include/core_cm7.h **** preemptive priority value and subpriority value. +2091:Drivers/CMSIS/Include/core_cm7.h **** In case of a conflict between priority grouping and available +2092:Drivers/CMSIS/Include/core_cm7.h **** priority bits (__NVIC_PRIO_BITS) the smallest possible priority group is set. +2093:Drivers/CMSIS/Include/core_cm7.h **** \param [in] Priority Priority value, which can be retrieved with the function \ref NVIC +2094:Drivers/CMSIS/Include/core_cm7.h **** \param [in] PriorityGroup Used priority group. +2095:Drivers/CMSIS/Include/core_cm7.h **** \param [out] pPreemptPriority Preemptive priority value (starting from 0). +2096:Drivers/CMSIS/Include/core_cm7.h **** \param [out] pSubPriority Subpriority value (starting from 0). +2097:Drivers/CMSIS/Include/core_cm7.h **** */ +2098:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* cons +2099:Drivers/CMSIS/Include/core_cm7.h **** { +2100:Drivers/CMSIS/Include/core_cm7.h **** uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used +2101:Drivers/CMSIS/Include/core_cm7.h **** uint32_t PreemptPriorityBits; +2102:Drivers/CMSIS/Include/core_cm7.h **** uint32_t SubPriorityBits; +2103:Drivers/CMSIS/Include/core_cm7.h **** +2104:Drivers/CMSIS/Include/core_cm7.h **** PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NV +2105:Drivers/CMSIS/Include/core_cm7.h **** SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint +2106:Drivers/CMSIS/Include/core_cm7.h **** +2107:Drivers/CMSIS/Include/core_cm7.h **** *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1 +2108:Drivers/CMSIS/Include/core_cm7.h **** *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1 +2109:Drivers/CMSIS/Include/core_cm7.h **** } +2110:Drivers/CMSIS/Include/core_cm7.h **** +2111:Drivers/CMSIS/Include/core_cm7.h **** +2112:Drivers/CMSIS/Include/core_cm7.h **** /** +2113:Drivers/CMSIS/Include/core_cm7.h **** \brief Set Interrupt Vector +2114:Drivers/CMSIS/Include/core_cm7.h **** \details Sets an interrupt vector in SRAM based interrupt vector table. +2115:Drivers/CMSIS/Include/core_cm7.h **** The interrupt number can be positive to specify a device specific interrupt, +2116:Drivers/CMSIS/Include/core_cm7.h **** or negative to specify a processor exception. +2117:Drivers/CMSIS/Include/core_cm7.h **** VTOR must been relocated to SRAM before. +2118:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Interrupt number +2119:Drivers/CMSIS/Include/core_cm7.h **** \param [in] vector Address of interrupt handler function +2120:Drivers/CMSIS/Include/core_cm7.h **** */ +2121:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) + ARM GAS /tmp/ccs1e2mJ.s page 65 + + +2122:Drivers/CMSIS/Include/core_cm7.h **** { +2123:Drivers/CMSIS/Include/core_cm7.h **** uint32_t *vectors = (uint32_t *)SCB->VTOR; +2124:Drivers/CMSIS/Include/core_cm7.h **** vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; +2125:Drivers/CMSIS/Include/core_cm7.h **** } +2126:Drivers/CMSIS/Include/core_cm7.h **** +2127:Drivers/CMSIS/Include/core_cm7.h **** +2128:Drivers/CMSIS/Include/core_cm7.h **** /** +2129:Drivers/CMSIS/Include/core_cm7.h **** \brief Get Interrupt Vector +2130:Drivers/CMSIS/Include/core_cm7.h **** \details Reads an interrupt vector from interrupt vector table. +2131:Drivers/CMSIS/Include/core_cm7.h **** The interrupt number can be positive to specify a device specific interrupt, +2132:Drivers/CMSIS/Include/core_cm7.h **** or negative to specify a processor exception. +2133:Drivers/CMSIS/Include/core_cm7.h **** \param [in] IRQn Interrupt number. +2134:Drivers/CMSIS/Include/core_cm7.h **** \return Address of interrupt handler function +2135:Drivers/CMSIS/Include/core_cm7.h **** */ +2136:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t __NVIC_GetVector(IRQn_Type IRQn) +2137:Drivers/CMSIS/Include/core_cm7.h **** { +2138:Drivers/CMSIS/Include/core_cm7.h **** uint32_t *vectors = (uint32_t *)SCB->VTOR; +2139:Drivers/CMSIS/Include/core_cm7.h **** return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +2140:Drivers/CMSIS/Include/core_cm7.h **** } +2141:Drivers/CMSIS/Include/core_cm7.h **** +2142:Drivers/CMSIS/Include/core_cm7.h **** +2143:Drivers/CMSIS/Include/core_cm7.h **** /** +2144:Drivers/CMSIS/Include/core_cm7.h **** \brief System Reset +2145:Drivers/CMSIS/Include/core_cm7.h **** \details Initiates a system reset request to reset the MCU. +2146:Drivers/CMSIS/Include/core_cm7.h **** */ +2147:Drivers/CMSIS/Include/core_cm7.h **** __NO_RETURN __STATIC_INLINE void __NVIC_SystemReset(void) + 395 .loc 2 2147 34 view .LVU106 + 396 .LBB77: +2148:Drivers/CMSIS/Include/core_cm7.h **** { +2149:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); /* Ensure all outstanding memor + 397 .loc 2 2149 3 view .LVU107 + 398 .LBB78: + 399 .LBI78: + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 400 .loc 3 877 27 view .LVU108 + 401 .LBB79: + 402 .loc 3 879 3 view .LVU109 + 403 .syntax unified + 404 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 405 0000 BFF34F8F dsb 0xF + 406 @ 0 "" 2 + 407 .thumb + 408 .syntax unified + 409 .LBE79: + 410 .LBE78: +2150:Drivers/CMSIS/Include/core_cm7.h **** buffered write are completed +2151:Drivers/CMSIS/Include/core_cm7.h **** SCB->AIRCR = (uint32_t)((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + 411 .loc 2 2151 3 view .LVU110 +2152:Drivers/CMSIS/Include/core_cm7.h **** (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + 412 .loc 2 2152 32 is_stmt 0 view .LVU111 + 413 0004 0549 ldr r1, .L22 + 414 0006 CA68 ldr r2, [r1, #12] + 415 .loc 2 2152 40 view .LVU112 + 416 0008 02F4E062 and r2, r2, #1792 +2151:Drivers/CMSIS/Include/core_cm7.h **** (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + 417 .loc 2 2151 17 view .LVU113 + 418 000c 044B ldr r3, .L22+4 + ARM GAS /tmp/ccs1e2mJ.s page 66 + + + 419 000e 1343 orrs r3, r3, r2 +2151:Drivers/CMSIS/Include/core_cm7.h **** (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | + 420 .loc 2 2151 15 view .LVU114 + 421 0010 CB60 str r3, [r1, #12] +2153:Drivers/CMSIS/Include/core_cm7.h **** SCB_AIRCR_SYSRESETREQ_Msk ); /* Keep priority group unchange +2154:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); /* Ensure completion of memory + 422 .loc 2 2154 3 is_stmt 1 view .LVU115 + 423 .LBB80: + 424 .LBI80: + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 425 .loc 3 877 27 view .LVU116 + 426 .LBB81: + 427 .loc 3 879 3 view .LVU117 + 428 .syntax unified + 429 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 430 0012 BFF34F8F dsb 0xF + 431 @ 0 "" 2 + 432 .thumb + 433 .syntax unified + 434 .L21: + 435 .LBE81: + 436 .LBE80: +2155:Drivers/CMSIS/Include/core_cm7.h **** +2156:Drivers/CMSIS/Include/core_cm7.h **** for(;;) /* wait until reset */ + 437 .loc 2 2156 3 view .LVU118 +2157:Drivers/CMSIS/Include/core_cm7.h **** { +2158:Drivers/CMSIS/Include/core_cm7.h **** __NOP(); + 438 .loc 2 2158 5 view .LVU119 + 439 .syntax unified + 440 @ 2158 "Drivers/CMSIS/Include/core_cm7.h" 1 + 441 0016 00BF nop + 442 @ 0 "" 2 +2156:Drivers/CMSIS/Include/core_cm7.h **** { + 443 .loc 2 2156 8 view .LVU120 + 444 .thumb + 445 .syntax unified + 446 0018 FDE7 b .L21 + 447 .L23: + 448 001a 00BF .align 2 + 449 .L22: + 450 001c 00ED00E0 .word -536810240 + 451 0020 0400FA05 .word 100270084 + 452 .LBE77: + 453 .LBE76: + 454 .cfi_endproc + 455 .LFE145: + 457 .section .text.HAL_SYSTICK_Config,"ax",%progbits + 458 .align 1 + 459 .global HAL_SYSTICK_Config + 460 .syntax unified + 461 .thumb + 462 .thumb_func + 463 .fpu fpv5-d16 + 465 HAL_SYSTICK_Config: + 466 .LVL32: + 467 .LFB146: + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + ARM GAS /tmp/ccs1e2mJ.s page 67 + + + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Initializes the System Timer and its interrupt, and starts the System Tick Timer. + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * Counter is in free running mode to generate periodic interrupts. + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval status: - 0 Function succeeded. + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * - 1 Function failed. + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 468 .loc 1 229 1 view -0 + 469 .cfi_startproc + 470 @ args = 0, pretend = 0, frame = 0 + 471 @ frame_needed = 0, uses_anonymous_args = 0 + 472 @ link register save eliminated. + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** return SysTick_Config(TicksNumb); + 473 .loc 1 230 4 view .LVU122 + 474 .LBB82: + 475 .LBI82: +2159:Drivers/CMSIS/Include/core_cm7.h **** } +2160:Drivers/CMSIS/Include/core_cm7.h **** } +2161:Drivers/CMSIS/Include/core_cm7.h **** +2162:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of CMSIS_Core_NVICFunctions */ +2163:Drivers/CMSIS/Include/core_cm7.h **** +2164:Drivers/CMSIS/Include/core_cm7.h **** /* ########################## MPU functions #################################### */ +2165:Drivers/CMSIS/Include/core_cm7.h **** +2166:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) +2167:Drivers/CMSIS/Include/core_cm7.h **** +2168:Drivers/CMSIS/Include/core_cm7.h **** #include "mpu_armv7.h" +2169:Drivers/CMSIS/Include/core_cm7.h **** +2170:Drivers/CMSIS/Include/core_cm7.h **** #endif +2171:Drivers/CMSIS/Include/core_cm7.h **** +2172:Drivers/CMSIS/Include/core_cm7.h **** /* ########################## FPU functions #################################### */ +2173:Drivers/CMSIS/Include/core_cm7.h **** /** +2174:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_Core_FunctionInterface +2175:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_Core_FpuFunctions FPU Functions +2176:Drivers/CMSIS/Include/core_cm7.h **** \brief Function that provides FPU type. +2177:Drivers/CMSIS/Include/core_cm7.h **** @{ +2178:Drivers/CMSIS/Include/core_cm7.h **** */ +2179:Drivers/CMSIS/Include/core_cm7.h **** +2180:Drivers/CMSIS/Include/core_cm7.h **** /** +2181:Drivers/CMSIS/Include/core_cm7.h **** \brief get FPU type +2182:Drivers/CMSIS/Include/core_cm7.h **** \details returns the FPU type +2183:Drivers/CMSIS/Include/core_cm7.h **** \returns +2184:Drivers/CMSIS/Include/core_cm7.h **** - \b 0: No FPU +2185:Drivers/CMSIS/Include/core_cm7.h **** - \b 1: Single precision FPU +2186:Drivers/CMSIS/Include/core_cm7.h **** - \b 2: Double + Single precision FPU +2187:Drivers/CMSIS/Include/core_cm7.h **** */ +2188:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t SCB_GetFPUType(void) +2189:Drivers/CMSIS/Include/core_cm7.h **** { +2190:Drivers/CMSIS/Include/core_cm7.h **** uint32_t mvfr0; +2191:Drivers/CMSIS/Include/core_cm7.h **** +2192:Drivers/CMSIS/Include/core_cm7.h **** mvfr0 = SCB->MVFR0; +2193:Drivers/CMSIS/Include/core_cm7.h **** if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) +2194:Drivers/CMSIS/Include/core_cm7.h **** { +2195:Drivers/CMSIS/Include/core_cm7.h **** return 2U; /* Double + Single precision FPU */ +2196:Drivers/CMSIS/Include/core_cm7.h **** } + ARM GAS /tmp/ccs1e2mJ.s page 68 + + +2197:Drivers/CMSIS/Include/core_cm7.h **** else if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x020U) +2198:Drivers/CMSIS/Include/core_cm7.h **** { +2199:Drivers/CMSIS/Include/core_cm7.h **** return 1U; /* Single precision FPU */ +2200:Drivers/CMSIS/Include/core_cm7.h **** } +2201:Drivers/CMSIS/Include/core_cm7.h **** else +2202:Drivers/CMSIS/Include/core_cm7.h **** { +2203:Drivers/CMSIS/Include/core_cm7.h **** return 0U; /* No FPU */ +2204:Drivers/CMSIS/Include/core_cm7.h **** } +2205:Drivers/CMSIS/Include/core_cm7.h **** } +2206:Drivers/CMSIS/Include/core_cm7.h **** +2207:Drivers/CMSIS/Include/core_cm7.h **** +2208:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of CMSIS_Core_FpuFunctions */ +2209:Drivers/CMSIS/Include/core_cm7.h **** +2210:Drivers/CMSIS/Include/core_cm7.h **** +2211:Drivers/CMSIS/Include/core_cm7.h **** +2212:Drivers/CMSIS/Include/core_cm7.h **** /* ########################## Cache functions #################################### */ +2213:Drivers/CMSIS/Include/core_cm7.h **** /** +2214:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_Core_FunctionInterface +2215:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_Core_CacheFunctions Cache Functions +2216:Drivers/CMSIS/Include/core_cm7.h **** \brief Functions that configure Instruction and Data cache. +2217:Drivers/CMSIS/Include/core_cm7.h **** @{ +2218:Drivers/CMSIS/Include/core_cm7.h **** */ +2219:Drivers/CMSIS/Include/core_cm7.h **** +2220:Drivers/CMSIS/Include/core_cm7.h **** /* Cache Size ID Register Macros */ +2221:Drivers/CMSIS/Include/core_cm7.h **** #define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Po +2222:Drivers/CMSIS/Include/core_cm7.h **** #define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos +2223:Drivers/CMSIS/Include/core_cm7.h **** +2224:Drivers/CMSIS/Include/core_cm7.h **** +2225:Drivers/CMSIS/Include/core_cm7.h **** /** +2226:Drivers/CMSIS/Include/core_cm7.h **** \brief Enable I-Cache +2227:Drivers/CMSIS/Include/core_cm7.h **** \details Turns on I-Cache +2228:Drivers/CMSIS/Include/core_cm7.h **** */ +2229:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_EnableICache (void) +2230:Drivers/CMSIS/Include/core_cm7.h **** { +2231:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) +2232:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2233:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2234:Drivers/CMSIS/Include/core_cm7.h **** SCB->ICIALLU = 0UL; /* invalidate I-Cache */ +2235:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2236:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2237:Drivers/CMSIS/Include/core_cm7.h **** SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ +2238:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2239:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2240:Drivers/CMSIS/Include/core_cm7.h **** #endif +2241:Drivers/CMSIS/Include/core_cm7.h **** } +2242:Drivers/CMSIS/Include/core_cm7.h **** +2243:Drivers/CMSIS/Include/core_cm7.h **** +2244:Drivers/CMSIS/Include/core_cm7.h **** /** +2245:Drivers/CMSIS/Include/core_cm7.h **** \brief Disable I-Cache +2246:Drivers/CMSIS/Include/core_cm7.h **** \details Turns off I-Cache +2247:Drivers/CMSIS/Include/core_cm7.h **** */ +2248:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_DisableICache (void) +2249:Drivers/CMSIS/Include/core_cm7.h **** { +2250:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) +2251:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2252:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2253:Drivers/CMSIS/Include/core_cm7.h **** SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + ARM GAS /tmp/ccs1e2mJ.s page 69 + + +2254:Drivers/CMSIS/Include/core_cm7.h **** SCB->ICIALLU = 0UL; /* invalidate I-Cache */ +2255:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2256:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2257:Drivers/CMSIS/Include/core_cm7.h **** #endif +2258:Drivers/CMSIS/Include/core_cm7.h **** } +2259:Drivers/CMSIS/Include/core_cm7.h **** +2260:Drivers/CMSIS/Include/core_cm7.h **** +2261:Drivers/CMSIS/Include/core_cm7.h **** /** +2262:Drivers/CMSIS/Include/core_cm7.h **** \brief Invalidate I-Cache +2263:Drivers/CMSIS/Include/core_cm7.h **** \details Invalidates I-Cache +2264:Drivers/CMSIS/Include/core_cm7.h **** */ +2265:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_InvalidateICache (void) +2266:Drivers/CMSIS/Include/core_cm7.h **** { +2267:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) +2268:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2269:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2270:Drivers/CMSIS/Include/core_cm7.h **** SCB->ICIALLU = 0UL; +2271:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2272:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2273:Drivers/CMSIS/Include/core_cm7.h **** #endif +2274:Drivers/CMSIS/Include/core_cm7.h **** } +2275:Drivers/CMSIS/Include/core_cm7.h **** +2276:Drivers/CMSIS/Include/core_cm7.h **** +2277:Drivers/CMSIS/Include/core_cm7.h **** /** +2278:Drivers/CMSIS/Include/core_cm7.h **** \brief Enable D-Cache +2279:Drivers/CMSIS/Include/core_cm7.h **** \details Turns on D-Cache +2280:Drivers/CMSIS/Include/core_cm7.h **** */ +2281:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_EnableDCache (void) +2282:Drivers/CMSIS/Include/core_cm7.h **** { +2283:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) +2284:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ccsidr; +2285:Drivers/CMSIS/Include/core_cm7.h **** uint32_t sets; +2286:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ways; +2287:Drivers/CMSIS/Include/core_cm7.h **** +2288:Drivers/CMSIS/Include/core_cm7.h **** SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ +2289:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2290:Drivers/CMSIS/Include/core_cm7.h **** +2291:Drivers/CMSIS/Include/core_cm7.h **** ccsidr = SCB->CCSIDR; +2292:Drivers/CMSIS/Include/core_cm7.h **** +2293:Drivers/CMSIS/Include/core_cm7.h **** /* invalidate D-Cache */ +2294:Drivers/CMSIS/Include/core_cm7.h **** sets = (uint32_t)(CCSIDR_SETS(ccsidr)); +2295:Drivers/CMSIS/Include/core_cm7.h **** do { +2296:Drivers/CMSIS/Include/core_cm7.h **** ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); +2297:Drivers/CMSIS/Include/core_cm7.h **** do { +2298:Drivers/CMSIS/Include/core_cm7.h **** SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | +2299:Drivers/CMSIS/Include/core_cm7.h **** ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); +2300:Drivers/CMSIS/Include/core_cm7.h **** #if defined ( __CC_ARM ) +2301:Drivers/CMSIS/Include/core_cm7.h **** __schedule_barrier(); +2302:Drivers/CMSIS/Include/core_cm7.h **** #endif +2303:Drivers/CMSIS/Include/core_cm7.h **** } while (ways-- != 0U); +2304:Drivers/CMSIS/Include/core_cm7.h **** } while(sets-- != 0U); +2305:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2306:Drivers/CMSIS/Include/core_cm7.h **** +2307:Drivers/CMSIS/Include/core_cm7.h **** SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ +2308:Drivers/CMSIS/Include/core_cm7.h **** +2309:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2310:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); + ARM GAS /tmp/ccs1e2mJ.s page 70 + + +2311:Drivers/CMSIS/Include/core_cm7.h **** #endif +2312:Drivers/CMSIS/Include/core_cm7.h **** } +2313:Drivers/CMSIS/Include/core_cm7.h **** +2314:Drivers/CMSIS/Include/core_cm7.h **** +2315:Drivers/CMSIS/Include/core_cm7.h **** /** +2316:Drivers/CMSIS/Include/core_cm7.h **** \brief Disable D-Cache +2317:Drivers/CMSIS/Include/core_cm7.h **** \details Turns off D-Cache +2318:Drivers/CMSIS/Include/core_cm7.h **** */ +2319:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_DisableDCache (void) +2320:Drivers/CMSIS/Include/core_cm7.h **** { +2321:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) +2322:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ccsidr; +2323:Drivers/CMSIS/Include/core_cm7.h **** uint32_t sets; +2324:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ways; +2325:Drivers/CMSIS/Include/core_cm7.h **** +2326:Drivers/CMSIS/Include/core_cm7.h **** SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ +2327:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2328:Drivers/CMSIS/Include/core_cm7.h **** +2329:Drivers/CMSIS/Include/core_cm7.h **** SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ +2330:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2331:Drivers/CMSIS/Include/core_cm7.h **** +2332:Drivers/CMSIS/Include/core_cm7.h **** ccsidr = SCB->CCSIDR; +2333:Drivers/CMSIS/Include/core_cm7.h **** +2334:Drivers/CMSIS/Include/core_cm7.h **** /* clean & invalidate D-Cache */ +2335:Drivers/CMSIS/Include/core_cm7.h **** sets = (uint32_t)(CCSIDR_SETS(ccsidr)); +2336:Drivers/CMSIS/Include/core_cm7.h **** do { +2337:Drivers/CMSIS/Include/core_cm7.h **** ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); +2338:Drivers/CMSIS/Include/core_cm7.h **** do { +2339:Drivers/CMSIS/Include/core_cm7.h **** SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | +2340:Drivers/CMSIS/Include/core_cm7.h **** ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); +2341:Drivers/CMSIS/Include/core_cm7.h **** #if defined ( __CC_ARM ) +2342:Drivers/CMSIS/Include/core_cm7.h **** __schedule_barrier(); +2343:Drivers/CMSIS/Include/core_cm7.h **** #endif +2344:Drivers/CMSIS/Include/core_cm7.h **** } while (ways-- != 0U); +2345:Drivers/CMSIS/Include/core_cm7.h **** } while(sets-- != 0U); +2346:Drivers/CMSIS/Include/core_cm7.h **** +2347:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2348:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2349:Drivers/CMSIS/Include/core_cm7.h **** #endif +2350:Drivers/CMSIS/Include/core_cm7.h **** } +2351:Drivers/CMSIS/Include/core_cm7.h **** +2352:Drivers/CMSIS/Include/core_cm7.h **** +2353:Drivers/CMSIS/Include/core_cm7.h **** /** +2354:Drivers/CMSIS/Include/core_cm7.h **** \brief Invalidate D-Cache +2355:Drivers/CMSIS/Include/core_cm7.h **** \details Invalidates D-Cache +2356:Drivers/CMSIS/Include/core_cm7.h **** */ +2357:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_InvalidateDCache (void) +2358:Drivers/CMSIS/Include/core_cm7.h **** { +2359:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) +2360:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ccsidr; +2361:Drivers/CMSIS/Include/core_cm7.h **** uint32_t sets; +2362:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ways; +2363:Drivers/CMSIS/Include/core_cm7.h **** +2364:Drivers/CMSIS/Include/core_cm7.h **** SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ +2365:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2366:Drivers/CMSIS/Include/core_cm7.h **** +2367:Drivers/CMSIS/Include/core_cm7.h **** ccsidr = SCB->CCSIDR; + ARM GAS /tmp/ccs1e2mJ.s page 71 + + +2368:Drivers/CMSIS/Include/core_cm7.h **** +2369:Drivers/CMSIS/Include/core_cm7.h **** /* invalidate D-Cache */ +2370:Drivers/CMSIS/Include/core_cm7.h **** sets = (uint32_t)(CCSIDR_SETS(ccsidr)); +2371:Drivers/CMSIS/Include/core_cm7.h **** do { +2372:Drivers/CMSIS/Include/core_cm7.h **** ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); +2373:Drivers/CMSIS/Include/core_cm7.h **** do { +2374:Drivers/CMSIS/Include/core_cm7.h **** SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | +2375:Drivers/CMSIS/Include/core_cm7.h **** ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); +2376:Drivers/CMSIS/Include/core_cm7.h **** #if defined ( __CC_ARM ) +2377:Drivers/CMSIS/Include/core_cm7.h **** __schedule_barrier(); +2378:Drivers/CMSIS/Include/core_cm7.h **** #endif +2379:Drivers/CMSIS/Include/core_cm7.h **** } while (ways-- != 0U); +2380:Drivers/CMSIS/Include/core_cm7.h **** } while(sets-- != 0U); +2381:Drivers/CMSIS/Include/core_cm7.h **** +2382:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2383:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2384:Drivers/CMSIS/Include/core_cm7.h **** #endif +2385:Drivers/CMSIS/Include/core_cm7.h **** } +2386:Drivers/CMSIS/Include/core_cm7.h **** +2387:Drivers/CMSIS/Include/core_cm7.h **** +2388:Drivers/CMSIS/Include/core_cm7.h **** /** +2389:Drivers/CMSIS/Include/core_cm7.h **** \brief Clean D-Cache +2390:Drivers/CMSIS/Include/core_cm7.h **** \details Cleans D-Cache +2391:Drivers/CMSIS/Include/core_cm7.h **** */ +2392:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_CleanDCache (void) +2393:Drivers/CMSIS/Include/core_cm7.h **** { +2394:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) +2395:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ccsidr; +2396:Drivers/CMSIS/Include/core_cm7.h **** uint32_t sets; +2397:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ways; +2398:Drivers/CMSIS/Include/core_cm7.h **** +2399:Drivers/CMSIS/Include/core_cm7.h **** SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ +2400:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2401:Drivers/CMSIS/Include/core_cm7.h **** +2402:Drivers/CMSIS/Include/core_cm7.h **** ccsidr = SCB->CCSIDR; +2403:Drivers/CMSIS/Include/core_cm7.h **** +2404:Drivers/CMSIS/Include/core_cm7.h **** /* clean D-Cache */ +2405:Drivers/CMSIS/Include/core_cm7.h **** sets = (uint32_t)(CCSIDR_SETS(ccsidr)); +2406:Drivers/CMSIS/Include/core_cm7.h **** do { +2407:Drivers/CMSIS/Include/core_cm7.h **** ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); +2408:Drivers/CMSIS/Include/core_cm7.h **** do { +2409:Drivers/CMSIS/Include/core_cm7.h **** SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | +2410:Drivers/CMSIS/Include/core_cm7.h **** ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); +2411:Drivers/CMSIS/Include/core_cm7.h **** #if defined ( __CC_ARM ) +2412:Drivers/CMSIS/Include/core_cm7.h **** __schedule_barrier(); +2413:Drivers/CMSIS/Include/core_cm7.h **** #endif +2414:Drivers/CMSIS/Include/core_cm7.h **** } while (ways-- != 0U); +2415:Drivers/CMSIS/Include/core_cm7.h **** } while(sets-- != 0U); +2416:Drivers/CMSIS/Include/core_cm7.h **** +2417:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2418:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2419:Drivers/CMSIS/Include/core_cm7.h **** #endif +2420:Drivers/CMSIS/Include/core_cm7.h **** } +2421:Drivers/CMSIS/Include/core_cm7.h **** +2422:Drivers/CMSIS/Include/core_cm7.h **** +2423:Drivers/CMSIS/Include/core_cm7.h **** /** +2424:Drivers/CMSIS/Include/core_cm7.h **** \brief Clean & Invalidate D-Cache + ARM GAS /tmp/ccs1e2mJ.s page 72 + + +2425:Drivers/CMSIS/Include/core_cm7.h **** \details Cleans and Invalidates D-Cache +2426:Drivers/CMSIS/Include/core_cm7.h **** */ +2427:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_CleanInvalidateDCache (void) +2428:Drivers/CMSIS/Include/core_cm7.h **** { +2429:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) +2430:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ccsidr; +2431:Drivers/CMSIS/Include/core_cm7.h **** uint32_t sets; +2432:Drivers/CMSIS/Include/core_cm7.h **** uint32_t ways; +2433:Drivers/CMSIS/Include/core_cm7.h **** +2434:Drivers/CMSIS/Include/core_cm7.h **** SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* Level 1 data cache */ +2435:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2436:Drivers/CMSIS/Include/core_cm7.h **** +2437:Drivers/CMSIS/Include/core_cm7.h **** ccsidr = SCB->CCSIDR; +2438:Drivers/CMSIS/Include/core_cm7.h **** +2439:Drivers/CMSIS/Include/core_cm7.h **** /* clean & invalidate D-Cache */ +2440:Drivers/CMSIS/Include/core_cm7.h **** sets = (uint32_t)(CCSIDR_SETS(ccsidr)); +2441:Drivers/CMSIS/Include/core_cm7.h **** do { +2442:Drivers/CMSIS/Include/core_cm7.h **** ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); +2443:Drivers/CMSIS/Include/core_cm7.h **** do { +2444:Drivers/CMSIS/Include/core_cm7.h **** SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | +2445:Drivers/CMSIS/Include/core_cm7.h **** ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); +2446:Drivers/CMSIS/Include/core_cm7.h **** #if defined ( __CC_ARM ) +2447:Drivers/CMSIS/Include/core_cm7.h **** __schedule_barrier(); +2448:Drivers/CMSIS/Include/core_cm7.h **** #endif +2449:Drivers/CMSIS/Include/core_cm7.h **** } while (ways-- != 0U); +2450:Drivers/CMSIS/Include/core_cm7.h **** } while(sets-- != 0U); +2451:Drivers/CMSIS/Include/core_cm7.h **** +2452:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2453:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2454:Drivers/CMSIS/Include/core_cm7.h **** #endif +2455:Drivers/CMSIS/Include/core_cm7.h **** } +2456:Drivers/CMSIS/Include/core_cm7.h **** +2457:Drivers/CMSIS/Include/core_cm7.h **** +2458:Drivers/CMSIS/Include/core_cm7.h **** /** +2459:Drivers/CMSIS/Include/core_cm7.h **** \brief D-Cache Invalidate by address +2460:Drivers/CMSIS/Include/core_cm7.h **** \details Invalidates D-Cache for the given address +2461:Drivers/CMSIS/Include/core_cm7.h **** \param[in] addr address (aligned to 32-byte boundary) +2462:Drivers/CMSIS/Include/core_cm7.h **** \param[in] dsize size of memory block (in number of bytes) +2463:Drivers/CMSIS/Include/core_cm7.h **** */ +2464:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_InvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +2465:Drivers/CMSIS/Include/core_cm7.h **** { +2466:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) +2467:Drivers/CMSIS/Include/core_cm7.h **** int32_t op_size = dsize; +2468:Drivers/CMSIS/Include/core_cm7.h **** uint32_t op_addr = (uint32_t)addr; +2469:Drivers/CMSIS/Include/core_cm7.h **** int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words ( +2470:Drivers/CMSIS/Include/core_cm7.h **** +2471:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2472:Drivers/CMSIS/Include/core_cm7.h **** +2473:Drivers/CMSIS/Include/core_cm7.h **** while (op_size > 0) { +2474:Drivers/CMSIS/Include/core_cm7.h **** SCB->DCIMVAC = op_addr; +2475:Drivers/CMSIS/Include/core_cm7.h **** op_addr += (uint32_t)linesize; +2476:Drivers/CMSIS/Include/core_cm7.h **** op_size -= linesize; +2477:Drivers/CMSIS/Include/core_cm7.h **** } +2478:Drivers/CMSIS/Include/core_cm7.h **** +2479:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2480:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2481:Drivers/CMSIS/Include/core_cm7.h **** #endif + ARM GAS /tmp/ccs1e2mJ.s page 73 + + +2482:Drivers/CMSIS/Include/core_cm7.h **** } +2483:Drivers/CMSIS/Include/core_cm7.h **** +2484:Drivers/CMSIS/Include/core_cm7.h **** +2485:Drivers/CMSIS/Include/core_cm7.h **** /** +2486:Drivers/CMSIS/Include/core_cm7.h **** \brief D-Cache Clean by address +2487:Drivers/CMSIS/Include/core_cm7.h **** \details Cleans D-Cache for the given address +2488:Drivers/CMSIS/Include/core_cm7.h **** \param[in] addr address (aligned to 32-byte boundary) +2489:Drivers/CMSIS/Include/core_cm7.h **** \param[in] dsize size of memory block (in number of bytes) +2490:Drivers/CMSIS/Include/core_cm7.h **** */ +2491:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) +2492:Drivers/CMSIS/Include/core_cm7.h **** { +2493:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) +2494:Drivers/CMSIS/Include/core_cm7.h **** int32_t op_size = dsize; +2495:Drivers/CMSIS/Include/core_cm7.h **** uint32_t op_addr = (uint32_t) addr; +2496:Drivers/CMSIS/Include/core_cm7.h **** int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words ( +2497:Drivers/CMSIS/Include/core_cm7.h **** +2498:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2499:Drivers/CMSIS/Include/core_cm7.h **** +2500:Drivers/CMSIS/Include/core_cm7.h **** while (op_size > 0) { +2501:Drivers/CMSIS/Include/core_cm7.h **** SCB->DCCMVAC = op_addr; +2502:Drivers/CMSIS/Include/core_cm7.h **** op_addr += (uint32_t)linesize; +2503:Drivers/CMSIS/Include/core_cm7.h **** op_size -= linesize; +2504:Drivers/CMSIS/Include/core_cm7.h **** } +2505:Drivers/CMSIS/Include/core_cm7.h **** +2506:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2507:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2508:Drivers/CMSIS/Include/core_cm7.h **** #endif +2509:Drivers/CMSIS/Include/core_cm7.h **** } +2510:Drivers/CMSIS/Include/core_cm7.h **** +2511:Drivers/CMSIS/Include/core_cm7.h **** +2512:Drivers/CMSIS/Include/core_cm7.h **** /** +2513:Drivers/CMSIS/Include/core_cm7.h **** \brief D-Cache Clean and Invalidate by address +2514:Drivers/CMSIS/Include/core_cm7.h **** \details Cleans and invalidates D_Cache for the given address +2515:Drivers/CMSIS/Include/core_cm7.h **** \param[in] addr address (aligned to 32-byte boundary) +2516:Drivers/CMSIS/Include/core_cm7.h **** \param[in] dsize size of memory block (in number of bytes) +2517:Drivers/CMSIS/Include/core_cm7.h **** */ +2518:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +2519:Drivers/CMSIS/Include/core_cm7.h **** { +2520:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) +2521:Drivers/CMSIS/Include/core_cm7.h **** int32_t op_size = dsize; +2522:Drivers/CMSIS/Include/core_cm7.h **** uint32_t op_addr = (uint32_t) addr; +2523:Drivers/CMSIS/Include/core_cm7.h **** int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words ( +2524:Drivers/CMSIS/Include/core_cm7.h **** +2525:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2526:Drivers/CMSIS/Include/core_cm7.h **** +2527:Drivers/CMSIS/Include/core_cm7.h **** while (op_size > 0) { +2528:Drivers/CMSIS/Include/core_cm7.h **** SCB->DCCIMVAC = op_addr; +2529:Drivers/CMSIS/Include/core_cm7.h **** op_addr += (uint32_t)linesize; +2530:Drivers/CMSIS/Include/core_cm7.h **** op_size -= linesize; +2531:Drivers/CMSIS/Include/core_cm7.h **** } +2532:Drivers/CMSIS/Include/core_cm7.h **** +2533:Drivers/CMSIS/Include/core_cm7.h **** __DSB(); +2534:Drivers/CMSIS/Include/core_cm7.h **** __ISB(); +2535:Drivers/CMSIS/Include/core_cm7.h **** #endif +2536:Drivers/CMSIS/Include/core_cm7.h **** } +2537:Drivers/CMSIS/Include/core_cm7.h **** +2538:Drivers/CMSIS/Include/core_cm7.h **** + ARM GAS /tmp/ccs1e2mJ.s page 74 + + +2539:Drivers/CMSIS/Include/core_cm7.h **** /*@} end of CMSIS_Core_CacheFunctions */ +2540:Drivers/CMSIS/Include/core_cm7.h **** +2541:Drivers/CMSIS/Include/core_cm7.h **** +2542:Drivers/CMSIS/Include/core_cm7.h **** +2543:Drivers/CMSIS/Include/core_cm7.h **** /* ################################## SysTick function ######################################## +2544:Drivers/CMSIS/Include/core_cm7.h **** /** +2545:Drivers/CMSIS/Include/core_cm7.h **** \ingroup CMSIS_Core_FunctionInterface +2546:Drivers/CMSIS/Include/core_cm7.h **** \defgroup CMSIS_Core_SysTickFunctions SysTick Functions +2547:Drivers/CMSIS/Include/core_cm7.h **** \brief Functions that configure the System. +2548:Drivers/CMSIS/Include/core_cm7.h **** @{ +2549:Drivers/CMSIS/Include/core_cm7.h **** */ +2550:Drivers/CMSIS/Include/core_cm7.h **** +2551:Drivers/CMSIS/Include/core_cm7.h **** #if defined (__Vendor_SysTickConfig) && (__Vendor_SysTickConfig == 0U) +2552:Drivers/CMSIS/Include/core_cm7.h **** +2553:Drivers/CMSIS/Include/core_cm7.h **** /** +2554:Drivers/CMSIS/Include/core_cm7.h **** \brief System Tick Configuration +2555:Drivers/CMSIS/Include/core_cm7.h **** \details Initializes the System Timer and its interrupt, and starts the System Tick Timer. +2556:Drivers/CMSIS/Include/core_cm7.h **** Counter is in free running mode to generate periodic interrupts. +2557:Drivers/CMSIS/Include/core_cm7.h **** \param [in] ticks Number of ticks between two interrupts. +2558:Drivers/CMSIS/Include/core_cm7.h **** \return 0 Function succeeded. +2559:Drivers/CMSIS/Include/core_cm7.h **** \return 1 Function failed. +2560:Drivers/CMSIS/Include/core_cm7.h **** \note When the variable __Vendor_SysTickConfig is set to 1, then the +2561:Drivers/CMSIS/Include/core_cm7.h **** function SysTick_Config is not included. In this case, the file device. +2562:Drivers/CMSIS/Include/core_cm7.h **** must contain a vendor-specific implementation of this function. +2563:Drivers/CMSIS/Include/core_cm7.h **** */ +2564:Drivers/CMSIS/Include/core_cm7.h **** __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) + 476 .loc 2 2564 26 view .LVU123 + 477 .LBB83: +2565:Drivers/CMSIS/Include/core_cm7.h **** { +2566:Drivers/CMSIS/Include/core_cm7.h **** if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + 478 .loc 2 2566 3 view .LVU124 + 479 .loc 2 2566 14 is_stmt 0 view .LVU125 + 480 0000 0138 subs r0, r0, #1 + 481 .LVL33: + 482 .loc 2 2566 6 view .LVU126 + 483 0002 B0F1807F cmp r0, #16777216 + 484 0006 0BD2 bcs .L26 +2567:Drivers/CMSIS/Include/core_cm7.h **** { +2568:Drivers/CMSIS/Include/core_cm7.h **** return (1UL); /* Reload value impossible */ +2569:Drivers/CMSIS/Include/core_cm7.h **** } +2570:Drivers/CMSIS/Include/core_cm7.h **** +2571:Drivers/CMSIS/Include/core_cm7.h **** SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + 485 .loc 2 2571 3 is_stmt 1 view .LVU127 + 486 .loc 2 2571 18 is_stmt 0 view .LVU128 + 487 0008 4FF0E023 mov r3, #-536813568 + 488 000c 5861 str r0, [r3, #20] +2572:Drivers/CMSIS/Include/core_cm7.h **** NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Int + 489 .loc 2 2572 3 is_stmt 1 view .LVU129 + 490 .LVL34: + 491 .LBB84: + 492 .LBI84: +2024:Drivers/CMSIS/Include/core_cm7.h **** { + 493 .loc 2 2024 22 view .LVU130 + 494 .LBB85: +2026:Drivers/CMSIS/Include/core_cm7.h **** { + 495 .loc 2 2026 3 view .LVU131 +2032:Drivers/CMSIS/Include/core_cm7.h **** } + ARM GAS /tmp/ccs1e2mJ.s page 75 + + + 496 .loc 2 2032 5 view .LVU132 +2032:Drivers/CMSIS/Include/core_cm7.h **** } + 497 .loc 2 2032 47 is_stmt 0 view .LVU133 + 498 000e 054A ldr r2, .L27 + 499 0010 F021 movs r1, #240 + 500 0012 82F82310 strb r1, [r2, #35] + 501 .LVL35: +2032:Drivers/CMSIS/Include/core_cm7.h **** } + 502 .loc 2 2032 47 view .LVU134 + 503 .LBE85: + 504 .LBE84: +2573:Drivers/CMSIS/Include/core_cm7.h **** SysTick->VAL = 0UL; /* Load the SysTick Counter Val + 505 .loc 2 2573 3 is_stmt 1 view .LVU135 + 506 .loc 2 2573 18 is_stmt 0 view .LVU136 + 507 0016 0020 movs r0, #0 + 508 .LVL36: + 509 .loc 2 2573 18 view .LVU137 + 510 0018 9861 str r0, [r3, #24] +2574:Drivers/CMSIS/Include/core_cm7.h **** SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 511 .loc 2 2574 3 is_stmt 1 view .LVU138 + 512 .loc 2 2574 18 is_stmt 0 view .LVU139 + 513 001a 0722 movs r2, #7 + 514 001c 1A61 str r2, [r3, #16] +2575:Drivers/CMSIS/Include/core_cm7.h **** SysTick_CTRL_TICKINT_Msk | +2576:Drivers/CMSIS/Include/core_cm7.h **** SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTi +2577:Drivers/CMSIS/Include/core_cm7.h **** return (0UL); /* Function successful */ + 515 .loc 2 2577 3 is_stmt 1 view .LVU140 + 516 .loc 2 2577 10 is_stmt 0 view .LVU141 + 517 001e 7047 bx lr + 518 .L26: +2568:Drivers/CMSIS/Include/core_cm7.h **** } + 519 .loc 2 2568 12 view .LVU142 + 520 0020 0120 movs r0, #1 + 521 .LVL37: +2568:Drivers/CMSIS/Include/core_cm7.h **** } + 522 .loc 2 2568 12 view .LVU143 + 523 .LBE83: + 524 .LBE82: + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 525 .loc 1 231 1 view .LVU144 + 526 0022 7047 bx lr + 527 .L28: + 528 .align 2 + 529 .L27: + 530 0024 00ED00E0 .word -536810240 + 531 .cfi_endproc + 532 .LFE146: + 534 .section .text.HAL_MPU_Disable,"ax",%progbits + 535 .align 1 + 536 .global HAL_MPU_Disable + 537 .syntax unified + 538 .thumb + 539 .thumb_func + 540 .fpu fpv5-d16 + 542 HAL_MPU_Disable: + 543 .LFB147: + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + ARM GAS /tmp/ccs1e2mJ.s page 76 + + + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @} + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** @defgroup CORTEX_Exported_Functions_Group2 Peripheral Control functions + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Cortex control functions + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** @verbatim + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ============================================================================== + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ##### Peripheral Control functions ##### + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ============================================================================== + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** [..] + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** This subsection provides a set of functions allowing to control the CORTEX + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** (NVIC, SYSTICK, MPU) functionalities. + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** @endverbatim + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @{ + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** #if (__MPU_PRESENT == 1) + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Disables the MPU + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_MPU_Disable(void) + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 544 .loc 1 258 1 is_stmt 1 view -0 + 545 .cfi_startproc + 546 @ args = 0, pretend = 0, frame = 0 + 547 @ frame_needed = 0, uses_anonymous_args = 0 + 548 @ link register save eliminated. + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Make sure outstanding transfers are done */ + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** __DMB(); + 549 .loc 1 260 3 view .LVU146 + 550 .LBB86: + 551 .LBI86: + 880:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 881:Drivers/CMSIS/Include/cmsis_gcc.h **** + 882:Drivers/CMSIS/Include/cmsis_gcc.h **** + 883:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 884:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Memory Barrier + 885:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Ensures the apparent order of the explicit memory operations before + 886:Drivers/CMSIS/Include/cmsis_gcc.h **** and after the instruction, without ensuring their completion. + 887:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 888:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DMB(void) + 552 .loc 3 888 27 view .LVU147 + 553 .LBB87: + 889:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 890:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dmb 0xF":::"memory"); + 554 .loc 3 890 3 view .LVU148 + 555 .syntax unified + 556 @ 890 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 557 0000 BFF35F8F dmb 0xF + 558 @ 0 "" 2 + 559 .thumb + 560 .syntax unified + 561 .LBE87: + ARM GAS /tmp/ccs1e2mJ.s page 77 + + + 562 .LBE86: + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Disable fault exceptions */ + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; + 563 .loc 1 263 3 view .LVU149 + 564 .loc 1 263 14 is_stmt 0 view .LVU150 + 565 0004 044B ldr r3, .L30 + 566 0006 5A6A ldr r2, [r3, #36] + 567 0008 22F48032 bic r2, r2, #65536 + 568 000c 5A62 str r2, [r3, #36] + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Disable the MPU and clear the control register*/ + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** MPU->CTRL = 0; + 569 .loc 1 266 3 is_stmt 1 view .LVU151 + 570 .loc 1 266 13 is_stmt 0 view .LVU152 + 571 000e 0022 movs r2, #0 + 572 0010 C3F89420 str r2, [r3, #148] + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 573 .loc 1 267 1 view .LVU153 + 574 0014 7047 bx lr + 575 .L31: + 576 0016 00BF .align 2 + 577 .L30: + 578 0018 00ED00E0 .word -536810240 + 579 .cfi_endproc + 580 .LFE147: + 582 .section .text.HAL_MPU_Enable,"ax",%progbits + 583 .align 1 + 584 .global HAL_MPU_Enable + 585 .syntax unified + 586 .thumb + 587 .thumb_func + 588 .fpu fpv5-d16 + 590 HAL_MPU_Enable: + 591 .LVL38: + 592 .LFB148: + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Enables the MPU + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param MPU_Control Specifies the control mode of the MPU during hard fault, + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * NMI, FAULTMASK and privileged access to the default memory + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be one of the following values: + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg MPU_HFNMI_PRIVDEF_NONE + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg MPU_HARDFAULT_NMI + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg MPU_PRIVILEGED_DEFAULT + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg MPU_HFNMI_PRIVDEF + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_MPU_Enable(uint32_t MPU_Control) + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 593 .loc 1 281 1 is_stmt 1 view -0 + 594 .cfi_startproc + 595 @ args = 0, pretend = 0, frame = 0 + 596 @ frame_needed = 0, uses_anonymous_args = 0 + 597 @ link register save eliminated. + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Enable the MPU */ + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; + ARM GAS /tmp/ccs1e2mJ.s page 78 + + + 598 .loc 1 283 3 view .LVU155 + 599 .loc 1 283 27 is_stmt 0 view .LVU156 + 600 0000 40F00100 orr r0, r0, #1 + 601 .LVL39: + 602 .loc 1 283 13 view .LVU157 + 603 0004 054B ldr r3, .L33 + 604 0006 C3F89400 str r0, [r3, #148] + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Enable fault exceptions */ + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; + 605 .loc 1 286 3 is_stmt 1 view .LVU158 + 606 .loc 1 286 14 is_stmt 0 view .LVU159 + 607 000a 5A6A ldr r2, [r3, #36] + 608 000c 42F48032 orr r2, r2, #65536 + 609 0010 5A62 str r2, [r3, #36] + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Ensure MPU setting take effects */ + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** __DSB(); + 610 .loc 1 289 3 is_stmt 1 view .LVU160 + 611 .LBB88: + 612 .LBI88: + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 613 .loc 3 877 27 view .LVU161 + 614 .LBB89: + 879:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 615 .loc 3 879 3 view .LVU162 + 616 .syntax unified + 617 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 618 0012 BFF34F8F dsb 0xF + 619 @ 0 "" 2 + 620 .thumb + 621 .syntax unified + 622 .LBE89: + 623 .LBE88: + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** __ISB(); + 624 .loc 1 290 3 view .LVU163 + 625 .LBB90: + 626 .LBI90: + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 627 .loc 3 866 27 view .LVU164 + 628 .LBB91: + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 629 .loc 3 868 3 view .LVU165 + 630 .syntax unified + 631 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 632 0016 BFF36F8F isb 0xF + 633 @ 0 "" 2 + 634 .thumb + 635 .syntax unified + 636 .LBE91: + 637 .LBE90: + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 638 .loc 1 291 1 is_stmt 0 view .LVU166 + 639 001a 7047 bx lr + 640 .L34: + 641 .align 2 + 642 .L33: + ARM GAS /tmp/ccs1e2mJ.s page 79 + + + 643 001c 00ED00E0 .word -536810240 + 644 .cfi_endproc + 645 .LFE148: + 647 .section .text.HAL_MPU_EnableRegion,"ax",%progbits + 648 .align 1 + 649 .global HAL_MPU_EnableRegion + 650 .syntax unified + 651 .thumb + 652 .thumb_func + 653 .fpu fpv5-d16 + 655 HAL_MPU_EnableRegion: + 656 .LVL40: + 657 .LFB149: + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Enables the MPU Region. + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_MPU_EnableRegion(uint32_t RegionNumber) + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 658 .loc 1 298 1 is_stmt 1 view -0 + 659 .cfi_startproc + 660 @ args = 0, pretend = 0, frame = 0 + 661 @ frame_needed = 0, uses_anonymous_args = 0 + 662 @ link register save eliminated. + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_REGION_NUMBER(RegionNumber)); + 663 .loc 1 300 3 view .LVU168 + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Set the Region number */ + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** MPU->RNR = RegionNumber; + 664 .loc 1 303 3 view .LVU169 + 665 .loc 1 303 12 is_stmt 0 view .LVU170 + 666 0000 044B ldr r3, .L36 + 667 0002 C3F89800 str r0, [r3, #152] + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Enable the Region */ + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** SET_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); + 668 .loc 1 306 3 is_stmt 1 view .LVU171 + 669 0006 D3F8A020 ldr r2, [r3, #160] + 670 000a 42F00102 orr r2, r2, #1 + 671 000e C3F8A020 str r2, [r3, #160] + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 672 .loc 1 307 1 is_stmt 0 view .LVU172 + 673 0012 7047 bx lr + 674 .L37: + 675 .align 2 + 676 .L36: + 677 0014 00ED00E0 .word -536810240 + 678 .cfi_endproc + 679 .LFE149: + 681 .section .text.HAL_MPU_DisableRegion,"ax",%progbits + 682 .align 1 + 683 .global HAL_MPU_DisableRegion + 684 .syntax unified + 685 .thumb + 686 .thumb_func + ARM GAS /tmp/ccs1e2mJ.s page 80 + + + 687 .fpu fpv5-d16 + 689 HAL_MPU_DisableRegion: + 690 .LVL41: + 691 .LFB150: + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Disables the MPU Region. + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_MPU_DisableRegion(uint32_t RegionNumber) + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 692 .loc 1 314 1 is_stmt 1 view -0 + 693 .cfi_startproc + 694 @ args = 0, pretend = 0, frame = 0 + 695 @ frame_needed = 0, uses_anonymous_args = 0 + 696 @ link register save eliminated. + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_REGION_NUMBER(RegionNumber)); + 697 .loc 1 316 3 view .LVU174 + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Set the Region number */ + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** MPU->RNR = RegionNumber; + 698 .loc 1 319 3 view .LVU175 + 699 .loc 1 319 12 is_stmt 0 view .LVU176 + 700 0000 044B ldr r3, .L39 + 701 0002 C3F89800 str r0, [r3, #152] + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Disable the Region */ + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); + 702 .loc 1 322 3 is_stmt 1 view .LVU177 + 703 0006 D3F8A020 ldr r2, [r3, #160] + 704 000a 22F00102 bic r2, r2, #1 + 705 000e C3F8A020 str r2, [r3, #160] + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 706 .loc 1 323 1 is_stmt 0 view .LVU178 + 707 0012 7047 bx lr + 708 .L40: + 709 .align 2 + 710 .L39: + 711 0014 00ED00E0 .word -536810240 + 712 .cfi_endproc + 713 .LFE150: + 715 .section .text.HAL_MPU_ConfigRegion,"ax",%progbits + 716 .align 1 + 717 .global HAL_MPU_ConfigRegion + 718 .syntax unified + 719 .thumb + 720 .thumb_func + 721 .fpu fpv5-d16 + 723 HAL_MPU_ConfigRegion: + 724 .LVL42: + 725 .LFB151: + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Initializes and configures the Region and the memory to be protected. + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param MPU_Init Pointer to a MPU_Region_InitTypeDef structure that contains + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * the initialization and configuration information. + ARM GAS /tmp/ccs1e2mJ.s page 81 + + + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init) + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 726 .loc 1 332 1 is_stmt 1 view -0 + 727 .cfi_startproc + 728 @ args = 0, pretend = 0, frame = 0 + 729 @ frame_needed = 0, uses_anonymous_args = 0 + 730 @ link register save eliminated. + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number)); + 731 .loc 1 334 3 view .LVU180 + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable)); + 732 .loc 1 335 3 view .LVU181 + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec)); + 733 .loc 1 336 3 view .LVU182 + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission)); + 734 .loc 1 337 3 view .LVU183 + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_TEX_LEVEL(MPU_Init->TypeExtField)); + 735 .loc 1 338 3 view .LVU184 + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_ACCESS_SHAREABLE(MPU_Init->IsShareable)); + 736 .loc 1 339 3 view .LVU185 + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable)); + 737 .loc 1 340 3 view .LVU186 + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable)); + 738 .loc 1 341 3 view .LVU187 + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable)); + 739 .loc 1 342 3 view .LVU188 + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size)); + 740 .loc 1 343 3 view .LVU189 + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Set the Region number */ + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** MPU->RNR = MPU_Init->Number; + 741 .loc 1 346 3 view .LVU190 + 742 .loc 1 346 22 is_stmt 0 view .LVU191 + 743 0000 4378 ldrb r3, [r0, #1] @ zero_extendqisi2 + 744 .loc 1 346 12 view .LVU192 + 745 0002 144A ldr r2, .L42 + 746 0004 C2F89830 str r3, [r2, #152] + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Disable the Region */ + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); + 747 .loc 1 349 3 is_stmt 1 view .LVU193 + 748 0008 D2F8A030 ldr r3, [r2, #160] + 749 000c 23F00103 bic r3, r3, #1 + 750 0010 C2F8A030 str r3, [r2, #160] + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Apply configuration */ + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** MPU->RBAR = MPU_Init->BaseAddress; + 751 .loc 1 352 3 view .LVU194 + 752 .loc 1 352 23 is_stmt 0 view .LVU195 + 753 0014 4368 ldr r3, [r0, #4] + 754 .loc 1 352 13 view .LVU196 + 755 0016 C2F89C30 str r3, [r2, #156] + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) | + 756 .loc 1 353 3 is_stmt 1 view .LVU197 + 757 .loc 1 353 34 is_stmt 0 view .LVU198 + ARM GAS /tmp/ccs1e2mJ.s page 82 + + + 758 001a 017B ldrb r1, [r0, #12] @ zero_extendqisi2 + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) | + 759 .loc 1 354 34 view .LVU199 + 760 001c C37A ldrb r3, [r0, #11] @ zero_extendqisi2 + 761 .loc 1 354 60 view .LVU200 + 762 001e 1B06 lsls r3, r3, #24 + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) | + 763 .loc 1 353 82 view .LVU201 + 764 0020 43EA0173 orr r3, r3, r1, lsl #28 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->TypeExtField << MPU_RASR_TEX_Pos) | + 765 .loc 1 355 34 view .LVU202 + 766 0024 817A ldrb r1, [r0, #10] @ zero_extendqisi2 + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) | + 767 .loc 1 354 82 view .LVU203 + 768 0026 43EAC143 orr r3, r3, r1, lsl #19 + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->IsShareable << MPU_RASR_S_Pos) | + 769 .loc 1 356 34 view .LVU204 + 770 002a 417B ldrb r1, [r0, #13] @ zero_extendqisi2 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->TypeExtField << MPU_RASR_TEX_Pos) | + 771 .loc 1 355 82 view .LVU205 + 772 002c 43EA8143 orr r3, r3, r1, lsl #18 + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->IsCacheable << MPU_RASR_C_Pos) | + 773 .loc 1 357 34 view .LVU206 + 774 0030 817B ldrb r1, [r0, #14] @ zero_extendqisi2 + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->IsShareable << MPU_RASR_S_Pos) | + 775 .loc 1 356 82 view .LVU207 + 776 0032 43EA4143 orr r3, r3, r1, lsl #17 + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->IsBufferable << MPU_RASR_B_Pos) | + 777 .loc 1 358 34 view .LVU208 + 778 0036 C17B ldrb r1, [r0, #15] @ zero_extendqisi2 + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->IsCacheable << MPU_RASR_C_Pos) | + 779 .loc 1 357 82 view .LVU209 + 780 0038 43EA0143 orr r3, r3, r1, lsl #16 + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->SubRegionDisable << MPU_RASR_SRD_Pos) | + 781 .loc 1 359 34 view .LVU210 + 782 003c 417A ldrb r1, [r0, #9] @ zero_extendqisi2 + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->IsBufferable << MPU_RASR_B_Pos) | + 783 .loc 1 358 82 view .LVU211 + 784 003e 43EA0123 orr r3, r3, r1, lsl #8 + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->Size << MPU_RASR_SIZE_Pos) | + 785 .loc 1 360 34 view .LVU212 + 786 0042 017A ldrb r1, [r0, #8] @ zero_extendqisi2 + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->SubRegionDisable << MPU_RASR_SRD_Pos) | + 787 .loc 1 359 82 view .LVU213 + 788 0044 43EA4103 orr r3, r3, r1, lsl #1 + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->Enable << MPU_RASR_ENABLE_Pos); + 789 .loc 1 361 34 view .LVU214 + 790 0048 0178 ldrb r1, [r0] @ zero_extendqisi2 + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->Size << MPU_RASR_SIZE_Pos) | + 791 .loc 1 360 82 view .LVU215 + 792 004a 0B43 orrs r3, r3, r1 + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) | + 793 .loc 1 353 13 view .LVU216 + 794 004c C2F8A030 str r3, [r2, #160] + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 795 .loc 1 362 1 view .LVU217 + 796 0050 7047 bx lr + ARM GAS /tmp/ccs1e2mJ.s page 83 + + + 797 .L43: + 798 0052 00BF .align 2 + 799 .L42: + 800 0054 00ED00E0 .word -536810240 + 801 .cfi_endproc + 802 .LFE151: + 804 .section .text.HAL_NVIC_GetPriorityGrouping,"ax",%progbits + 805 .align 1 + 806 .global HAL_NVIC_GetPriorityGrouping + 807 .syntax unified + 808 .thumb + 809 .thumb_func + 810 .fpu fpv5-d16 + 812 HAL_NVIC_GetPriorityGrouping: + 813 .LFB152: + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** #endif /* __MPU_PRESENT */ + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Gets the priority grouping field from the NVIC Interrupt Controller. + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field) + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** uint32_t HAL_NVIC_GetPriorityGrouping(void) + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 814 .loc 1 370 1 is_stmt 1 view -0 + 815 .cfi_startproc + 816 @ args = 0, pretend = 0, frame = 0 + 817 @ frame_needed = 0, uses_anonymous_args = 0 + 818 @ link register save eliminated. + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Get the PRIGROUP[10:8] field value */ + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** return NVIC_GetPriorityGrouping(); + 819 .loc 1 372 3 view .LVU219 + 820 .LBB92: + 821 .LBI92: +1884:Drivers/CMSIS/Include/core_cm7.h **** { + 822 .loc 2 1884 26 view .LVU220 + 823 .LBB93: +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 824 .loc 2 1886 3 view .LVU221 +1886:Drivers/CMSIS/Include/core_cm7.h **** } + 825 .loc 2 1886 26 is_stmt 0 view .LVU222 + 826 0000 024B ldr r3, .L45 + 827 0002 D868 ldr r0, [r3, #12] + 828 .LBE93: + 829 .LBE92: + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 830 .loc 1 373 1 view .LVU223 + 831 0004 C0F30220 ubfx r0, r0, #8, #3 + 832 0008 7047 bx lr + 833 .L46: + 834 000a 00BF .align 2 + 835 .L45: + 836 000c 00ED00E0 .word -536810240 + 837 .cfi_endproc + 838 .LFE152: + 840 .section .text.HAL_NVIC_GetPriority,"ax",%progbits + 841 .align 1 + 842 .global HAL_NVIC_GetPriority + ARM GAS /tmp/ccs1e2mJ.s page 84 + + + 843 .syntax unified + 844 .thumb + 845 .thumb_func + 846 .fpu fpv5-d16 + 848 HAL_NVIC_GetPriority: + 849 .LVL43: + 850 .LFB153: + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Gets the priority of an interrupt. + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param IRQn External interrupt number. + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be an enumerator of IRQn_Type enumeration + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSI + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param PriorityGroup the priority grouping bits length. + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be one of the following values: + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg NVIC_PRIORITYGROUP_0: 0 bits for preemption priority + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * 4 bits for subpriority + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg NVIC_PRIORITYGROUP_1: 1 bits for preemption priority + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * 3 bits for subpriority + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg NVIC_PRIORITYGROUP_2: 2 bits for preemption priority + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * 2 bits for subpriority + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg NVIC_PRIORITYGROUP_3: 3 bits for preemption priority + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * 1 bits for subpriority + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg NVIC_PRIORITYGROUP_4: 4 bits for preemption priority + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * 0 bits for subpriority + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param pPreemptPriority Pointer on the Preemptive priority value (starting from 0). + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param pSubPriority Pointer on the Subpriority value (starting from 0). + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t *pPreemptPriority, uint3 + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 851 .loc 1 397 1 is_stmt 1 view -0 + 852 .cfi_startproc + 853 @ args = 0, pretend = 0, frame = 0 + 854 @ frame_needed = 0, uses_anonymous_args = 0 + 855 .loc 1 397 1 is_stmt 0 view .LVU225 + 856 0000 10B5 push {r4, lr} + 857 .LCFI1: + 858 .cfi_def_cfa_offset 8 + 859 .cfi_offset 4, -8 + 860 .cfi_offset 14, -4 + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); + 861 .loc 1 399 3 is_stmt 1 view .LVU226 + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Get priority for Cortex-M system or device specific interrupts */ + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** NVIC_DecodePriority(NVIC_GetPriority(IRQn), PriorityGroup, pPreemptPriority, pSubPriority); + 862 .loc 1 401 3 view .LVU227 + 863 .LVL44: + 864 .LBB98: + 865 .LBI98: +2046:Drivers/CMSIS/Include/core_cm7.h **** { + 866 .loc 2 2046 26 view .LVU228 + 867 .LBB99: +2049:Drivers/CMSIS/Include/core_cm7.h **** { + 868 .loc 2 2049 3 view .LVU229 +2049:Drivers/CMSIS/Include/core_cm7.h **** { + 869 .loc 2 2049 6 is_stmt 0 view .LVU230 + ARM GAS /tmp/ccs1e2mJ.s page 85 + + + 870 0002 0028 cmp r0, #0 + 871 .LVL45: +2049:Drivers/CMSIS/Include/core_cm7.h **** { + 872 .loc 2 2049 6 view .LVU231 + 873 0004 1EDB blt .L48 +2051:Drivers/CMSIS/Include/core_cm7.h **** } + 874 .loc 2 2051 5 is_stmt 1 view .LVU232 +2051:Drivers/CMSIS/Include/core_cm7.h **** } + 875 .loc 2 2051 31 is_stmt 0 view .LVU233 + 876 0006 134C ldr r4, .L53 + 877 0008 205C ldrb r0, [r4, r0] @ zero_extendqisi2 +2051:Drivers/CMSIS/Include/core_cm7.h **** } + 878 .loc 2 2051 65 view .LVU234 + 879 000a 0009 lsrs r0, r0, #4 + 880 .L49: + 881 .LVL46: +2051:Drivers/CMSIS/Include/core_cm7.h **** } + 882 .loc 2 2051 65 view .LVU235 + 883 .LBE99: + 884 .LBE98: + 885 .LBB101: + 886 .LBI101: +2098:Drivers/CMSIS/Include/core_cm7.h **** { + 887 .loc 2 2098 22 is_stmt 1 view .LVU236 + 888 .LBB102: +2100:Drivers/CMSIS/Include/core_cm7.h **** uint32_t PreemptPriorityBits; + 889 .loc 2 2100 3 view .LVU237 +2100:Drivers/CMSIS/Include/core_cm7.h **** uint32_t PreemptPriorityBits; + 890 .loc 2 2100 12 is_stmt 0 view .LVU238 + 891 000c 01F00701 and r1, r1, #7 + 892 .LVL47: +2101:Drivers/CMSIS/Include/core_cm7.h **** uint32_t SubPriorityBits; + 893 .loc 2 2101 3 is_stmt 1 view .LVU239 +2102:Drivers/CMSIS/Include/core_cm7.h **** + 894 .loc 2 2102 3 view .LVU240 +2104:Drivers/CMSIS/Include/core_cm7.h **** SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint + 895 .loc 2 2104 3 view .LVU241 +2104:Drivers/CMSIS/Include/core_cm7.h **** SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint + 896 .loc 2 2104 31 is_stmt 0 view .LVU242 + 897 0010 C1F1070C rsb ip, r1, #7 +2104:Drivers/CMSIS/Include/core_cm7.h **** SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint + 898 .loc 2 2104 23 view .LVU243 + 899 0014 BCF1040F cmp ip, #4 + 900 0018 28BF it cs + 901 001a 4FF0040C movcs ip, #4 + 902 .LVL48: +2105:Drivers/CMSIS/Include/core_cm7.h **** + 903 .loc 2 2105 3 is_stmt 1 view .LVU244 +2105:Drivers/CMSIS/Include/core_cm7.h **** + 904 .loc 2 2105 44 is_stmt 0 view .LVU245 + 905 001e 0C1D adds r4, r1, #4 +2105:Drivers/CMSIS/Include/core_cm7.h **** + 906 .loc 2 2105 109 view .LVU246 + 907 0020 062C cmp r4, #6 + 908 0022 15D9 bls .L51 + 909 0024 0339 subs r1, r1, #3 + 910 .LVL49: + ARM GAS /tmp/ccs1e2mJ.s page 86 + + + 911 .L50: +2107:Drivers/CMSIS/Include/core_cm7.h **** *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1 + 912 .loc 2 2107 3 is_stmt 1 view .LVU247 +2107:Drivers/CMSIS/Include/core_cm7.h **** *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1 + 913 .loc 2 2107 33 is_stmt 0 view .LVU248 + 914 0026 20FA01F4 lsr r4, r0, r1 + 915 .LVL50: +2107:Drivers/CMSIS/Include/core_cm7.h **** *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1 + 916 .loc 2 2107 53 view .LVU249 + 917 002a 4FF0FF3E mov lr, #-1 + 918 002e 0EFA0CFC lsl ip, lr, ip + 919 .LVL51: +2107:Drivers/CMSIS/Include/core_cm7.h **** *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1 + 920 .loc 2 2107 53 view .LVU250 + 921 0032 24EA0C04 bic r4, r4, ip +2107:Drivers/CMSIS/Include/core_cm7.h **** *pSubPriority = (Priority ) & (uint32_t)((1UL << (SubPriorityBits )) - 1 + 922 .loc 2 2107 21 view .LVU251 + 923 0036 1460 str r4, [r2] +2108:Drivers/CMSIS/Include/core_cm7.h **** } + 924 .loc 2 2108 3 is_stmt 1 view .LVU252 +2108:Drivers/CMSIS/Include/core_cm7.h **** } + 925 .loc 2 2108 53 is_stmt 0 view .LVU253 + 926 0038 0EFA01F1 lsl r1, lr, r1 + 927 .LVL52: +2108:Drivers/CMSIS/Include/core_cm7.h **** } + 928 .loc 2 2108 53 view .LVU254 + 929 003c 20EA0100 bic r0, r0, r1 + 930 .LVL53: +2108:Drivers/CMSIS/Include/core_cm7.h **** } + 931 .loc 2 2108 21 view .LVU255 + 932 0040 1860 str r0, [r3] + 933 .LVL54: +2108:Drivers/CMSIS/Include/core_cm7.h **** } + 934 .loc 2 2108 21 view .LVU256 + 935 .LBE102: + 936 .LBE101: + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 937 .loc 1 402 1 view .LVU257 + 938 0042 10BD pop {r4, pc} + 939 .LVL55: + 940 .L48: + 941 .LBB104: + 942 .LBB100: +2055:Drivers/CMSIS/Include/core_cm7.h **** } + 943 .loc 2 2055 5 is_stmt 1 view .LVU258 +2055:Drivers/CMSIS/Include/core_cm7.h **** } + 944 .loc 2 2055 51 is_stmt 0 view .LVU259 + 945 0044 00F00F00 and r0, r0, #15 +2055:Drivers/CMSIS/Include/core_cm7.h **** } + 946 .loc 2 2055 32 view .LVU260 + 947 0048 034C ldr r4, .L53+4 + 948 004a 205C ldrb r0, [r4, r0] @ zero_extendqisi2 +2055:Drivers/CMSIS/Include/core_cm7.h **** } + 949 .loc 2 2055 65 view .LVU261 + 950 004c 0009 lsrs r0, r0, #4 + 951 004e DDE7 b .L49 + 952 .LVL56: + ARM GAS /tmp/ccs1e2mJ.s page 87 + + + 953 .L51: +2055:Drivers/CMSIS/Include/core_cm7.h **** } + 954 .loc 2 2055 65 view .LVU262 + 955 .LBE100: + 956 .LBE104: + 957 .LBB105: + 958 .LBB103: +2105:Drivers/CMSIS/Include/core_cm7.h **** + 959 .loc 2 2105 109 view .LVU263 + 960 0050 0021 movs r1, #0 + 961 .LVL57: +2105:Drivers/CMSIS/Include/core_cm7.h **** + 962 .loc 2 2105 109 view .LVU264 + 963 0052 E8E7 b .L50 + 964 .L54: + 965 .align 2 + 966 .L53: + 967 0054 00E400E0 .word -536812544 + 968 0058 14ED00E0 .word -536810220 + 969 .LBE103: + 970 .LBE105: + 971 .cfi_endproc + 972 .LFE153: + 974 .section .text.HAL_NVIC_SetPendingIRQ,"ax",%progbits + 975 .align 1 + 976 .global HAL_NVIC_SetPendingIRQ + 977 .syntax unified + 978 .thumb + 979 .thumb_func + 980 .fpu fpv5-d16 + 982 HAL_NVIC_SetPendingIRQ: + 983 .LVL58: + 984 .LFB154: + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Sets Pending bit of an external interrupt. + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param IRQn External interrupt number + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be an enumerator of IRQn_Type enumeration + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSI + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_NVIC_SetPendingIRQ(IRQn_Type IRQn) + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 985 .loc 1 412 1 is_stmt 1 view -0 + 986 .cfi_startproc + 987 @ args = 0, pretend = 0, frame = 0 + 988 @ frame_needed = 0, uses_anonymous_args = 0 + 989 @ link register save eliminated. + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + 990 .loc 1 414 3 view .LVU266 + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Set interrupt pending */ + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** NVIC_SetPendingIRQ(IRQn); + 991 .loc 1 417 3 view .LVU267 + 992 .LBB106: + 993 .LBI106: + ARM GAS /tmp/ccs1e2mJ.s page 88 + + +1970:Drivers/CMSIS/Include/core_cm7.h **** { + 994 .loc 2 1970 22 view .LVU268 + 995 .LBB107: +1972:Drivers/CMSIS/Include/core_cm7.h **** { + 996 .loc 2 1972 3 view .LVU269 +1972:Drivers/CMSIS/Include/core_cm7.h **** { + 997 .loc 2 1972 6 is_stmt 0 view .LVU270 + 998 0000 0028 cmp r0, #0 + 999 .LVL59: +1972:Drivers/CMSIS/Include/core_cm7.h **** { + 1000 .loc 2 1972 6 view .LVU271 + 1001 0002 08DB blt .L55 +1974:Drivers/CMSIS/Include/core_cm7.h **** } + 1002 .loc 2 1974 5 is_stmt 1 view .LVU272 +1974:Drivers/CMSIS/Include/core_cm7.h **** } + 1003 .loc 2 1974 81 is_stmt 0 view .LVU273 + 1004 0004 00F01F02 and r2, r0, #31 +1974:Drivers/CMSIS/Include/core_cm7.h **** } + 1005 .loc 2 1974 34 view .LVU274 + 1006 0008 4009 lsrs r0, r0, #5 +1974:Drivers/CMSIS/Include/core_cm7.h **** } + 1007 .loc 2 1974 45 view .LVU275 + 1008 000a 0123 movs r3, #1 + 1009 000c 9340 lsls r3, r3, r2 +1974:Drivers/CMSIS/Include/core_cm7.h **** } + 1010 .loc 2 1974 43 view .LVU276 + 1011 000e 4030 adds r0, r0, #64 + 1012 0010 014A ldr r2, .L57 + 1013 0012 42F82030 str r3, [r2, r0, lsl #2] + 1014 .LVL60: + 1015 .L55: +1974:Drivers/CMSIS/Include/core_cm7.h **** } + 1016 .loc 2 1974 43 view .LVU277 + 1017 .LBE107: + 1018 .LBE106: + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 1019 .loc 1 418 1 view .LVU278 + 1020 0016 7047 bx lr + 1021 .L58: + 1022 .align 2 + 1023 .L57: + 1024 0018 00E100E0 .word -536813312 + 1025 .cfi_endproc + 1026 .LFE154: + 1028 .section .text.HAL_NVIC_GetPendingIRQ,"ax",%progbits + 1029 .align 1 + 1030 .global HAL_NVIC_GetPendingIRQ + 1031 .syntax unified + 1032 .thumb + 1033 .thumb_func + 1034 .fpu fpv5-d16 + 1036 HAL_NVIC_GetPendingIRQ: + 1037 .LVL61: + 1038 .LFB155: + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Gets Pending Interrupt (reads the pending register in the NVIC + ARM GAS /tmp/ccs1e2mJ.s page 89 + + + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * and returns the pending bit for the specified interrupt). + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param IRQn External interrupt number. + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be an enumerator of IRQn_Type enumeration + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSI + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval status: - 0 Interrupt status is not pending. + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * - 1 Interrupt status is pending. + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** uint32_t HAL_NVIC_GetPendingIRQ(IRQn_Type IRQn) + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 1039 .loc 1 430 1 is_stmt 1 view -0 + 1040 .cfi_startproc + 1041 @ args = 0, pretend = 0, frame = 0 + 1042 @ frame_needed = 0, uses_anonymous_args = 0 + 1043 @ link register save eliminated. + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + 1044 .loc 1 432 3 view .LVU280 + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Return 1 if pending else 0 */ + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** return NVIC_GetPendingIRQ(IRQn); + 1045 .loc 1 435 3 view .LVU281 + 1046 .LBB108: + 1047 .LBI108: +1951:Drivers/CMSIS/Include/core_cm7.h **** { + 1048 .loc 2 1951 26 view .LVU282 + 1049 .LBB109: +1953:Drivers/CMSIS/Include/core_cm7.h **** { + 1050 .loc 2 1953 3 view .LVU283 +1953:Drivers/CMSIS/Include/core_cm7.h **** { + 1051 .loc 2 1953 6 is_stmt 0 view .LVU284 + 1052 0000 0028 cmp r0, #0 + 1053 .LVL62: +1953:Drivers/CMSIS/Include/core_cm7.h **** { + 1054 .loc 2 1953 6 view .LVU285 + 1055 0002 0BDB blt .L61 +1955:Drivers/CMSIS/Include/core_cm7.h **** } + 1056 .loc 2 1955 5 is_stmt 1 view .LVU286 +1955:Drivers/CMSIS/Include/core_cm7.h **** } + 1057 .loc 2 1955 54 is_stmt 0 view .LVU287 + 1058 0004 4309 lsrs r3, r0, #5 +1955:Drivers/CMSIS/Include/core_cm7.h **** } + 1059 .loc 2 1955 35 view .LVU288 + 1060 0006 4033 adds r3, r3, #64 + 1061 0008 054A ldr r2, .L62 + 1062 000a 52F82330 ldr r3, [r2, r3, lsl #2] +1955:Drivers/CMSIS/Include/core_cm7.h **** } + 1063 .loc 2 1955 91 view .LVU289 + 1064 000e 00F01F00 and r0, r0, #31 +1955:Drivers/CMSIS/Include/core_cm7.h **** } + 1065 .loc 2 1955 103 view .LVU290 + 1066 0012 23FA00F0 lsr r0, r3, r0 +1955:Drivers/CMSIS/Include/core_cm7.h **** } + 1067 .loc 2 1955 12 view .LVU291 + 1068 0016 00F00100 and r0, r0, #1 + 1069 001a 7047 bx lr + 1070 .L61: +1959:Drivers/CMSIS/Include/core_cm7.h **** } + ARM GAS /tmp/ccs1e2mJ.s page 90 + + + 1071 .loc 2 1959 11 view .LVU292 + 1072 001c 0020 movs r0, #0 + 1073 .LVL63: +1959:Drivers/CMSIS/Include/core_cm7.h **** } + 1074 .loc 2 1959 11 view .LVU293 + 1075 .LBE109: + 1076 .LBE108: + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 1077 .loc 1 436 1 view .LVU294 + 1078 001e 7047 bx lr + 1079 .L63: + 1080 .align 2 + 1081 .L62: + 1082 0020 00E100E0 .word -536813312 + 1083 .cfi_endproc + 1084 .LFE155: + 1086 .section .text.HAL_NVIC_ClearPendingIRQ,"ax",%progbits + 1087 .align 1 + 1088 .global HAL_NVIC_ClearPendingIRQ + 1089 .syntax unified + 1090 .thumb + 1091 .thumb_func + 1092 .fpu fpv5-d16 + 1094 HAL_NVIC_ClearPendingIRQ: + 1095 .LVL64: + 1096 .LFB156: + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Clears the pending bit of an external interrupt. + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param IRQn External interrupt number. + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be an enumerator of IRQn_Type enumeration + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSI + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_NVIC_ClearPendingIRQ(IRQn_Type IRQn) + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 1097 .loc 1 446 1 is_stmt 1 view -0 + 1098 .cfi_startproc + 1099 @ args = 0, pretend = 0, frame = 0 + 1100 @ frame_needed = 0, uses_anonymous_args = 0 + 1101 @ link register save eliminated. + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + 1102 .loc 1 448 3 view .LVU296 + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Clear pending interrupt */ + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** NVIC_ClearPendingIRQ(IRQn); + 1103 .loc 1 451 3 view .LVU297 + 1104 .LBB110: + 1105 .LBI110: +1985:Drivers/CMSIS/Include/core_cm7.h **** { + 1106 .loc 2 1985 22 view .LVU298 + 1107 .LBB111: +1987:Drivers/CMSIS/Include/core_cm7.h **** { + 1108 .loc 2 1987 3 view .LVU299 +1987:Drivers/CMSIS/Include/core_cm7.h **** { + 1109 .loc 2 1987 6 is_stmt 0 view .LVU300 + ARM GAS /tmp/ccs1e2mJ.s page 91 + + + 1110 0000 0028 cmp r0, #0 + 1111 .LVL65: +1987:Drivers/CMSIS/Include/core_cm7.h **** { + 1112 .loc 2 1987 6 view .LVU301 + 1113 0002 08DB blt .L64 +1989:Drivers/CMSIS/Include/core_cm7.h **** } + 1114 .loc 2 1989 5 is_stmt 1 view .LVU302 +1989:Drivers/CMSIS/Include/core_cm7.h **** } + 1115 .loc 2 1989 81 is_stmt 0 view .LVU303 + 1116 0004 00F01F02 and r2, r0, #31 +1989:Drivers/CMSIS/Include/core_cm7.h **** } + 1117 .loc 2 1989 34 view .LVU304 + 1118 0008 4009 lsrs r0, r0, #5 +1989:Drivers/CMSIS/Include/core_cm7.h **** } + 1119 .loc 2 1989 45 view .LVU305 + 1120 000a 0123 movs r3, #1 + 1121 000c 9340 lsls r3, r3, r2 +1989:Drivers/CMSIS/Include/core_cm7.h **** } + 1122 .loc 2 1989 43 view .LVU306 + 1123 000e 6030 adds r0, r0, #96 + 1124 0010 014A ldr r2, .L66 + 1125 0012 42F82030 str r3, [r2, r0, lsl #2] + 1126 .LVL66: + 1127 .L64: +1989:Drivers/CMSIS/Include/core_cm7.h **** } + 1128 .loc 2 1989 43 view .LVU307 + 1129 .LBE111: + 1130 .LBE110: + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 1131 .loc 1 452 1 view .LVU308 + 1132 0016 7047 bx lr + 1133 .L67: + 1134 .align 2 + 1135 .L66: + 1136 0018 00E100E0 .word -536813312 + 1137 .cfi_endproc + 1138 .LFE156: + 1140 .section .text.HAL_NVIC_GetActive,"ax",%progbits + 1141 .align 1 + 1142 .global HAL_NVIC_GetActive + 1143 .syntax unified + 1144 .thumb + 1145 .thumb_func + 1146 .fpu fpv5-d16 + 1148 HAL_NVIC_GetActive: + 1149 .LVL67: + 1150 .LFB157: + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Gets active interrupt ( reads the active register in NVIC and returns the active bit). + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param IRQn External interrupt number + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be an enumerator of IRQn_Type enumeration + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSI + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval status: - 0 Interrupt status is not pending. + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * - 1 Interrupt status is pending. + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** uint32_t HAL_NVIC_GetActive(IRQn_Type IRQn) + ARM GAS /tmp/ccs1e2mJ.s page 92 + + + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 1151 .loc 1 463 1 is_stmt 1 view -0 + 1152 .cfi_startproc + 1153 @ args = 0, pretend = 0, frame = 0 + 1154 @ frame_needed = 0, uses_anonymous_args = 0 + 1155 @ link register save eliminated. + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); + 1156 .loc 1 465 3 view .LVU310 + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Return 1 if active else 0 */ + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** return NVIC_GetActive(IRQn); + 1157 .loc 1 468 3 view .LVU311 + 1158 .LBB112: + 1159 .LBI112: +2002:Drivers/CMSIS/Include/core_cm7.h **** { + 1160 .loc 2 2002 26 view .LVU312 + 1161 .LBB113: +2004:Drivers/CMSIS/Include/core_cm7.h **** { + 1162 .loc 2 2004 3 view .LVU313 +2004:Drivers/CMSIS/Include/core_cm7.h **** { + 1163 .loc 2 2004 6 is_stmt 0 view .LVU314 + 1164 0000 0028 cmp r0, #0 + 1165 .LVL68: +2004:Drivers/CMSIS/Include/core_cm7.h **** { + 1166 .loc 2 2004 6 view .LVU315 + 1167 0002 0BDB blt .L70 +2006:Drivers/CMSIS/Include/core_cm7.h **** } + 1168 .loc 2 2006 5 is_stmt 1 view .LVU316 +2006:Drivers/CMSIS/Include/core_cm7.h **** } + 1169 .loc 2 2006 54 is_stmt 0 view .LVU317 + 1170 0004 4309 lsrs r3, r0, #5 +2006:Drivers/CMSIS/Include/core_cm7.h **** } + 1171 .loc 2 2006 35 view .LVU318 + 1172 0006 8033 adds r3, r3, #128 + 1173 0008 054A ldr r2, .L71 + 1174 000a 52F82330 ldr r3, [r2, r3, lsl #2] +2006:Drivers/CMSIS/Include/core_cm7.h **** } + 1175 .loc 2 2006 91 view .LVU319 + 1176 000e 00F01F00 and r0, r0, #31 +2006:Drivers/CMSIS/Include/core_cm7.h **** } + 1177 .loc 2 2006 103 view .LVU320 + 1178 0012 23FA00F0 lsr r0, r3, r0 +2006:Drivers/CMSIS/Include/core_cm7.h **** } + 1179 .loc 2 2006 12 view .LVU321 + 1180 0016 00F00100 and r0, r0, #1 + 1181 001a 7047 bx lr + 1182 .L70: +2010:Drivers/CMSIS/Include/core_cm7.h **** } + 1183 .loc 2 2010 11 view .LVU322 + 1184 001c 0020 movs r0, #0 + 1185 .LVL69: +2010:Drivers/CMSIS/Include/core_cm7.h **** } + 1186 .loc 2 2010 11 view .LVU323 + 1187 .LBE113: + 1188 .LBE112: + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + ARM GAS /tmp/ccs1e2mJ.s page 93 + + + 1189 .loc 1 469 1 view .LVU324 + 1190 001e 7047 bx lr + 1191 .L72: + 1192 .align 2 + 1193 .L71: + 1194 0020 00E100E0 .word -536813312 + 1195 .cfi_endproc + 1196 .LFE157: + 1198 .section .text.HAL_SYSTICK_CLKSourceConfig,"ax",%progbits + 1199 .align 1 + 1200 .global HAL_SYSTICK_CLKSourceConfig + 1201 .syntax unified + 1202 .thumb + 1203 .thumb_func + 1204 .fpu fpv5-d16 + 1206 HAL_SYSTICK_CLKSourceConfig: + 1207 .LVL70: + 1208 .LFB158: + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief Configures the SysTick clock source. + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @param CLKSource specifies the SysTick clock source. + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * This parameter can be one of the following values: + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg SYSTICK_CLKSOURCE_HCLK_DIV8: AHB clock divided by 8 selected as SysTick clock + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @arg SYSTICK_CLKSOURCE_HCLK: AHB clock selected as SysTick clock source. + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource) + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 1209 .loc 1 480 1 is_stmt 1 view -0 + 1210 .cfi_startproc + 1211 @ args = 0, pretend = 0, frame = 0 + 1212 @ frame_needed = 0, uses_anonymous_args = 0 + 1213 @ link register save eliminated. + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* Check the parameters */ + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** assert_param(IS_SYSTICK_CLK_SOURCE(CLKSource)); + 1214 .loc 1 482 3 view .LVU326 + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** if (CLKSource == SYSTICK_CLKSOURCE_HCLK) + 1215 .loc 1 483 3 view .LVU327 + 1216 .loc 1 483 6 is_stmt 0 view .LVU328 + 1217 0000 0428 cmp r0, #4 + 1218 0002 06D0 beq .L76 + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK; + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** else + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK; + 1219 .loc 1 489 5 is_stmt 1 view .LVU329 + 1220 .loc 1 489 19 is_stmt 0 view .LVU330 + 1221 0004 4FF0E022 mov r2, #-536813568 + 1222 0008 1369 ldr r3, [r2, #16] + 1223 000a 23F00403 bic r3, r3, #4 + 1224 000e 1361 str r3, [r2, #16] + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 1225 .loc 1 491 1 view .LVU331 + ARM GAS /tmp/ccs1e2mJ.s page 94 + + + 1226 0010 7047 bx lr + 1227 .L76: + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 1228 .loc 1 485 5 is_stmt 1 view .LVU332 + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 1229 .loc 1 485 19 is_stmt 0 view .LVU333 + 1230 0012 4FF0E022 mov r2, #-536813568 + 1231 0016 1369 ldr r3, [r2, #16] + 1232 0018 43F00403 orr r3, r3, #4 + 1233 001c 1361 str r3, [r2, #16] + 1234 001e 7047 bx lr + 1235 .cfi_endproc + 1236 .LFE158: + 1238 .section .text.HAL_SYSTICK_Callback,"ax",%progbits + 1239 .align 1 + 1240 .weak HAL_SYSTICK_Callback + 1241 .syntax unified + 1242 .thumb + 1243 .thumb_func + 1244 .fpu fpv5-d16 + 1246 HAL_SYSTICK_Callback: + 1247 .LFB160: + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief This function handles SYSTICK interrupt request. + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** void HAL_SYSTICK_IRQHandler(void) + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** HAL_SYSTICK_Callback(); + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /** + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @brief SYSTICK callback. + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** * @retval None + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** __weak void HAL_SYSTICK_Callback(void) + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** { + 1248 .loc 1 507 1 is_stmt 1 view -0 + 1249 .cfi_startproc + 1250 @ args = 0, pretend = 0, frame = 0 + 1251 @ frame_needed = 0, uses_anonymous_args = 0 + 1252 @ link register save eliminated. + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** the HAL_SYSTICK_Callback could be implemented in the user file + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** */ + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 1253 .loc 1 511 1 view .LVU335 + 1254 0000 7047 bx lr + 1255 .cfi_endproc + 1256 .LFE160: + 1258 .section .text.HAL_SYSTICK_IRQHandler,"ax",%progbits + 1259 .align 1 + 1260 .global HAL_SYSTICK_IRQHandler + 1261 .syntax unified + 1262 .thumb + 1263 .thumb_func + ARM GAS /tmp/ccs1e2mJ.s page 95 + + + 1264 .fpu fpv5-d16 + 1266 HAL_SYSTICK_IRQHandler: + 1267 .LFB159: + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** HAL_SYSTICK_Callback(); + 1268 .loc 1 498 1 view -0 + 1269 .cfi_startproc + 1270 @ args = 0, pretend = 0, frame = 0 + 1271 @ frame_needed = 0, uses_anonymous_args = 0 + 1272 0000 08B5 push {r3, lr} + 1273 .LCFI2: + 1274 .cfi_def_cfa_offset 8 + 1275 .cfi_offset 3, -8 + 1276 .cfi_offset 14, -4 + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** } + 1277 .loc 1 499 3 view .LVU337 + 1278 0002 FFF7FEFF bl HAL_SYSTICK_Callback + 1279 .LVL71: + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c **** + 1280 .loc 1 500 1 is_stmt 0 view .LVU338 + 1281 0006 08BD pop {r3, pc} + 1282 .cfi_endproc + 1283 .LFE159: + 1285 .text + 1286 .Letext0: + 1287 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 1288 .file 5 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 1289 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h" + ARM GAS /tmp/ccs1e2mJ.s page 96 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_cortex.c + /tmp/ccs1e2mJ.s:17 .text.HAL_NVIC_SetPriorityGrouping:0000000000000000 $t + /tmp/ccs1e2mJ.s:25 .text.HAL_NVIC_SetPriorityGrouping:0000000000000000 HAL_NVIC_SetPriorityGrouping + /tmp/ccs1e2mJ.s:81 .text.HAL_NVIC_SetPriorityGrouping:000000000000001c $d + /tmp/ccs1e2mJ.s:87 .text.HAL_NVIC_SetPriority:0000000000000000 $t + /tmp/ccs1e2mJ.s:94 .text.HAL_NVIC_SetPriority:0000000000000000 HAL_NVIC_SetPriority + /tmp/ccs1e2mJ.s:234 .text.HAL_NVIC_SetPriority:0000000000000060 $d + /tmp/ccs1e2mJ.s:241 .text.HAL_NVIC_EnableIRQ:0000000000000000 $t + /tmp/ccs1e2mJ.s:248 .text.HAL_NVIC_EnableIRQ:0000000000000000 HAL_NVIC_EnableIRQ + /tmp/ccs1e2mJ.s:289 .text.HAL_NVIC_EnableIRQ:0000000000000018 $d + /tmp/ccs1e2mJ.s:294 .text.HAL_NVIC_DisableIRQ:0000000000000000 $t + /tmp/ccs1e2mJ.s:301 .text.HAL_NVIC_DisableIRQ:0000000000000000 HAL_NVIC_DisableIRQ + /tmp/ccs1e2mJ.s:372 .text.HAL_NVIC_DisableIRQ:0000000000000020 $d + /tmp/ccs1e2mJ.s:377 .text.HAL_NVIC_SystemReset:0000000000000000 $t + /tmp/ccs1e2mJ.s:384 .text.HAL_NVIC_SystemReset:0000000000000000 HAL_NVIC_SystemReset + /tmp/ccs1e2mJ.s:450 .text.HAL_NVIC_SystemReset:000000000000001c $d + /tmp/ccs1e2mJ.s:458 .text.HAL_SYSTICK_Config:0000000000000000 $t + /tmp/ccs1e2mJ.s:465 .text.HAL_SYSTICK_Config:0000000000000000 HAL_SYSTICK_Config + /tmp/ccs1e2mJ.s:530 .text.HAL_SYSTICK_Config:0000000000000024 $d + /tmp/ccs1e2mJ.s:535 .text.HAL_MPU_Disable:0000000000000000 $t + /tmp/ccs1e2mJ.s:542 .text.HAL_MPU_Disable:0000000000000000 HAL_MPU_Disable + /tmp/ccs1e2mJ.s:578 .text.HAL_MPU_Disable:0000000000000018 $d + /tmp/ccs1e2mJ.s:583 .text.HAL_MPU_Enable:0000000000000000 $t + /tmp/ccs1e2mJ.s:590 .text.HAL_MPU_Enable:0000000000000000 HAL_MPU_Enable + /tmp/ccs1e2mJ.s:643 .text.HAL_MPU_Enable:000000000000001c $d + /tmp/ccs1e2mJ.s:648 .text.HAL_MPU_EnableRegion:0000000000000000 $t + /tmp/ccs1e2mJ.s:655 .text.HAL_MPU_EnableRegion:0000000000000000 HAL_MPU_EnableRegion + /tmp/ccs1e2mJ.s:677 .text.HAL_MPU_EnableRegion:0000000000000014 $d + /tmp/ccs1e2mJ.s:682 .text.HAL_MPU_DisableRegion:0000000000000000 $t + /tmp/ccs1e2mJ.s:689 .text.HAL_MPU_DisableRegion:0000000000000000 HAL_MPU_DisableRegion + /tmp/ccs1e2mJ.s:711 .text.HAL_MPU_DisableRegion:0000000000000014 $d + /tmp/ccs1e2mJ.s:716 .text.HAL_MPU_ConfigRegion:0000000000000000 $t + /tmp/ccs1e2mJ.s:723 .text.HAL_MPU_ConfigRegion:0000000000000000 HAL_MPU_ConfigRegion + /tmp/ccs1e2mJ.s:800 .text.HAL_MPU_ConfigRegion:0000000000000054 $d + /tmp/ccs1e2mJ.s:805 .text.HAL_NVIC_GetPriorityGrouping:0000000000000000 $t + /tmp/ccs1e2mJ.s:812 .text.HAL_NVIC_GetPriorityGrouping:0000000000000000 HAL_NVIC_GetPriorityGrouping + /tmp/ccs1e2mJ.s:836 .text.HAL_NVIC_GetPriorityGrouping:000000000000000c $d + /tmp/ccs1e2mJ.s:841 .text.HAL_NVIC_GetPriority:0000000000000000 $t + /tmp/ccs1e2mJ.s:848 .text.HAL_NVIC_GetPriority:0000000000000000 HAL_NVIC_GetPriority + /tmp/ccs1e2mJ.s:967 .text.HAL_NVIC_GetPriority:0000000000000054 $d + /tmp/ccs1e2mJ.s:975 .text.HAL_NVIC_SetPendingIRQ:0000000000000000 $t + /tmp/ccs1e2mJ.s:982 .text.HAL_NVIC_SetPendingIRQ:0000000000000000 HAL_NVIC_SetPendingIRQ + /tmp/ccs1e2mJ.s:1024 .text.HAL_NVIC_SetPendingIRQ:0000000000000018 $d + /tmp/ccs1e2mJ.s:1029 .text.HAL_NVIC_GetPendingIRQ:0000000000000000 $t + /tmp/ccs1e2mJ.s:1036 .text.HAL_NVIC_GetPendingIRQ:0000000000000000 HAL_NVIC_GetPendingIRQ + /tmp/ccs1e2mJ.s:1082 .text.HAL_NVIC_GetPendingIRQ:0000000000000020 $d + /tmp/ccs1e2mJ.s:1087 .text.HAL_NVIC_ClearPendingIRQ:0000000000000000 $t + /tmp/ccs1e2mJ.s:1094 .text.HAL_NVIC_ClearPendingIRQ:0000000000000000 HAL_NVIC_ClearPendingIRQ + /tmp/ccs1e2mJ.s:1136 .text.HAL_NVIC_ClearPendingIRQ:0000000000000018 $d + /tmp/ccs1e2mJ.s:1141 .text.HAL_NVIC_GetActive:0000000000000000 $t + /tmp/ccs1e2mJ.s:1148 .text.HAL_NVIC_GetActive:0000000000000000 HAL_NVIC_GetActive + /tmp/ccs1e2mJ.s:1194 .text.HAL_NVIC_GetActive:0000000000000020 $d + /tmp/ccs1e2mJ.s:1199 .text.HAL_SYSTICK_CLKSourceConfig:0000000000000000 $t + /tmp/ccs1e2mJ.s:1206 .text.HAL_SYSTICK_CLKSourceConfig:0000000000000000 HAL_SYSTICK_CLKSourceConfig + /tmp/ccs1e2mJ.s:1239 .text.HAL_SYSTICK_Callback:0000000000000000 $t + /tmp/ccs1e2mJ.s:1246 .text.HAL_SYSTICK_Callback:0000000000000000 HAL_SYSTICK_Callback + ARM GAS /tmp/ccs1e2mJ.s page 97 + + + /tmp/ccs1e2mJ.s:1259 .text.HAL_SYSTICK_IRQHandler:0000000000000000 $t + /tmp/ccs1e2mJ.s:1266 .text.HAL_SYSTICK_IRQHandler:0000000000000000 HAL_SYSTICK_IRQHandler + +NO UNDEFINED SYMBOLS diff --git a/build/stm32f7xx_hal_cortex.o b/build/stm32f7xx_hal_cortex.o new file mode 100644 index 0000000..93eb222 Binary files /dev/null and b/build/stm32f7xx_hal_cortex.o differ diff --git a/build/stm32f7xx_hal_dma.d b/build/stm32f7xx_hal_dma.d new file mode 100644 index 0000000..4086f6c --- /dev/null +++ b/build/stm32f7xx_hal_dma.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_dma.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_dma.lst b/build/stm32f7xx_hal_dma.lst new file mode 100644 index 0000000..0a9fbb7 --- /dev/null +++ b/build/stm32f7xx_hal_dma.lst @@ -0,0 +1,4627 @@ +ARM GAS /tmp/ccRPwCnE.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_dma.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.DMA_SetConfig,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 DMA_SetConfig: + 25 .LVL0: + 26 .LFB153: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @file stm32f7xx_hal_dma.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief DMA HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * This file provides firmware functions to manage the following + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * functionalities of the Direct Memory Access (DMA) peripheral: + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * + Initialization and de-initialization functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * + IO operation functions + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * + Peripheral State and errors functions + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** @verbatim + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ============================================================================== + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ##### How to use this driver ##### + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ============================================================================== + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** [..] + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (#) Enable and configure the peripheral to be connected to the DMA Stream + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (except for internal SRAM/FLASH memories: no initialization is + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** necessary) please refer to Reference manual for connection between peripherals + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** and DMA requests. + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (#) For a given Stream, program the required configuration through the following parameters: + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** Transfer Direction, Source and Destination data formats, + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** Circular, Normal or peripheral flow control mode, Stream Priority level, + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** Source and Destination Increment mode, FIFO mode and its Threshold (if needed), + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** Burst mode for Source and/or Destination (if needed) using HAL_DMA_Init() function. + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** -@- Prior to HAL_DMA_Init() the clock must be enabled for DMA through the following macros: + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_RCC_DMA1_CLK_ENABLE() or __HAL_RCC_DMA2_CLK_ENABLE(). + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** *** Polling mode IO operation *** + ARM GAS /tmp/ccRPwCnE.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ================================= + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** [..] + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Use HAL_DMA_Start() to start DMA transfer after the configuration of Source + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** address and destination address and the Length of data to be transferred. + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Use HAL_DMA_PollForTransfer() to poll for the end of current transfer, in this + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case a fixed Timeout can be configured by User depending from his application. + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Use HAL_DMA_Abort() function to abort the current transfer. + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** *** Interrupt mode IO operation *** + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** =================================== + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** [..] + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Configure the DMA interrupt priority using HAL_NVIC_SetPriority() + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Enable the DMA IRQ handler using HAL_NVIC_EnableIRQ() + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Select Callbacks functions using HAL_DMA_RegisterCallback() + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Use HAL_DMA_Start_IT() to start DMA transfer after the configuration of + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** Source address and destination address and the Length of data to be transferred. In t + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case the DMA interrupt is configured + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Use HAL_DMA_IRQHandler() called under DMA_IRQHandler() Interrupt subroutine + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) At the end of data transfer HAL_DMA_IRQHandler() function is executed and user can + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** add his own function by customization of function pointer XferCpltCallback and + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** XferErrorCallback (i.e a member of DMA handle structure). + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** [..] + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (#) Use HAL_DMA_GetState() function to return the DMA state and HAL_DMA_GetError() in case of + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** detection. + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (#) Use HAL_DMA_Abort_IT() function to abort the current transfer + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** -@- In Memory-to-Memory transfer mode, Circular mode is not allowed. + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** -@- The FIFO is used mainly to reduce bus usage and to allow data packing/unpacking: it is + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** possible to set different Data Sizes for the Peripheral and the Memory (ie. you can set + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** Half-Word data size for the peripheral to access its data register and set Word data siz + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** for the Memory to gain in access time. Each two half words will be packed and written in + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** a single access to a Word in the Memory). + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** -@- When FIFO is disabled, it is not allowed to configure different Data Sizes for Source + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** and Destination. In this case the Peripheral Data Size will be applied to both Source + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** and Destination. + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** *** DMA HAL driver macros list *** + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ============================================= + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** [..] + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** Below the list of most used macros in DMA HAL driver. + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) __HAL_DMA_ENABLE: Enable the specified DMA Stream. + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) __HAL_DMA_DISABLE: Disable the specified DMA Stream. + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) __HAL_DMA_GET_IT_SOURCE: Check whether the specified DMA Stream interrupt has occurred or + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** [..] + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (@) You can refer to the DMA HAL driver header file for more useful macros + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** @endverbatim + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ****************************************************************************** + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @attention + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * Copyright (c) 2017 STMicroelectronics. + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * All rights reserved. + ARM GAS /tmp/ccRPwCnE.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * This software is licensed under terms that can be found in the LICENSE file in + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the root directory of this software component. + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ****************************************************************************** + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Includes ------------------------------------------------------------------*/ + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** #include "stm32f7xx_hal.h" + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** @addtogroup STM32F7xx_HAL_Driver + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @{ + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** @defgroup DMA DMA + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief DMA HAL module driver + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @{ + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** #ifdef HAL_DMA_MODULE_ENABLED + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Private types -------------------------------------------------------------*/ + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** typedef struct + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __IO uint32_t ISR; /*!< DMA interrupt status register */ + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __IO uint32_t Reserved0; + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __IO uint32_t IFCR; /*!< DMA interrupt flag clear register */ + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } DMA_Base_Registers; + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Private variables ---------------------------------------------------------*/ + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Private constants ---------------------------------------------------------*/ + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** @addtogroup DMA_Private_Constants + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @{ + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** #define HAL_TIMEOUT_DMA_ABORT ((uint32_t)5) /* 5 ms */ + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @} + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Private macros ------------------------------------------------------------*/ + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Private functions ---------------------------------------------------------*/ + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** @addtogroup DMA_Private_Functions + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @{ + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32 + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** static uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma); + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** static HAL_StatusTypeDef DMA_CheckFifoParam(DMA_HandleTypeDef *hdma); + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @} + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Exported functions ---------------------------------------------------------*/ + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** @addtogroup DMA_Exported_Functions + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @{ + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + ARM GAS /tmp/ccRPwCnE.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** @addtogroup DMA_Exported_Functions_Group1 + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** @verbatim + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** =============================================================================== + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ##### Initialization and de-initialization functions ##### + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** =============================================================================== + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** [..] + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** This section provides functions allowing to initialize the DMA Stream source + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** and destination addresses, incrementation and data sizes, transfer direction, + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** circular/normal mode selection, memory-to-memory mode selection and Stream priority value. + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** [..] + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** The HAL_DMA_Init() function follows the DMA configuration procedures as described in + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** reference manual. + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** @endverbatim + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @{ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Initialize the DMA according to the specified + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * parameters in the DMA_InitTypeDef and create the associated handle. + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma Pointer to a DMA_HandleTypeDef structure that contains + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = 0U; + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tickstart = HAL_GetTick(); + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_Base_Registers *regs; + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check the DMA peripheral state */ + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma == NULL) + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check the parameters */ + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_STREAM_ALL_INSTANCE(hdma->Instance)); + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_CHANNEL(hdma->Init.Channel)); + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_MODE(hdma->Init.Mode)); + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_FIFO_MODE_STATE(hdma->Init.FIFOMode)); + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check the memory burst, peripheral burst and FIFO threshold parameters only + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** when FIFO mode is enabled */ + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->Init.FIFOMode != DMA_FIFOMODE_DISABLE) + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_FIFO_THRESHOLD(hdma->Init.FIFOThreshold)); + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_MEMORY_BURST(hdma->Init.MemBurst)); + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_PERIPHERAL_BURST(hdma->Init.PeriphBurst)); + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + ARM GAS /tmp/ccRPwCnE.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change DMA peripheral state */ + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_BUSY; + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Allocate lock resource */ + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable the peripheral */ + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_DMA_DISABLE(hdma); + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check if the DMA Stream is effectively disabled */ + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** while((hdma->Instance->CR & DMA_SxCR_EN) != RESET) + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check for the Timeout */ + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT) + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Update error code */ + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change the DMA state */ + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_TIMEOUT; + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_TIMEOUT; + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Get the CR register value */ + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmp = hdma->Instance->CR; + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear CHSEL, MBURST, PBURST, PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR, CT and DBM bits */ + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmp &= ((uint32_t)~(DMA_SxCR_CHSEL | DMA_SxCR_MBURST | DMA_SxCR_PBURST | \ + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_SxCR_PL | DMA_SxCR_MSIZE | DMA_SxCR_PSIZE | \ + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_SxCR_MINC | DMA_SxCR_PINC | DMA_SxCR_CIRC | \ + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_SxCR_DIR | DMA_SxCR_CT | DMA_SxCR_DBM)); + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Prepare the DMA Stream configuration */ + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmp |= hdma->Init.Channel | hdma->Init.Direction | + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphInc | hdma->Init.MemInc | + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.Mode | hdma->Init.Priority; + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* the Memory burst and peripheral burst are not used when the FIFO is disabled */ + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE) + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Get memory burst and peripheral burst */ + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmp |= hdma->Init.MemBurst | hdma->Init.PeriphBurst; + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Write to DMA Stream CR register */ + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR = tmp; + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Get the FCR register value */ + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmp = hdma->Instance->FCR; + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear Direct mode and FIFO threshold bits */ + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmp &= (uint32_t)~(DMA_SxFCR_DMDIS | DMA_SxFCR_FTH); + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + ARM GAS /tmp/ccRPwCnE.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Prepare the DMA Stream FIFO configuration */ + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmp |= hdma->Init.FIFOMode; + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* The FIFO threshold is not used when the FIFO mode is disabled */ + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE) + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Get the FIFO threshold */ + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmp |= hdma->Init.FIFOThreshold; + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check compatibility between FIFO threshold level and size of the memory burst */ + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* for INCR4, INCR8, INCR16 bursts */ + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if (hdma->Init.MemBurst != DMA_MBURST_SINGLE) + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if (DMA_CheckFifoParam(hdma) != HAL_OK) + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Update error code */ + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_PARAM; + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change the DMA state */ + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_RESET; + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Write to DMA Stream FCR */ + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR = tmp; + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Initialize StreamBaseAddress and StreamIndex parameters to be used to calculate + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA steam Base Address needed by HAL_DMA_IRQHandler() and HAL_DMA_PollForTransfer() */ + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs = (DMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma); + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear all interrupt flags */ + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = 0x3FU << hdma->StreamIndex; + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Initialize the error code */ + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_NONE; + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Initialize the DMA state */ + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_READY; + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_OK; + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief DeInitializes the DMA peripheral + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma) + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_Base_Registers *regs; + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check the DMA peripheral state */ + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma == NULL) + ARM GAS /tmp/ccRPwCnE.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check the DMA peripheral state */ + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->State == HAL_DMA_STATE_BUSY) + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Return error status */ + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_BUSY; + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check the parameters */ + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_STREAM_ALL_INSTANCE(hdma->Instance)); + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable the selected DMA Streamx */ + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_DMA_DISABLE(hdma); + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Reset DMA Streamx control register */ + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR = 0U; + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Reset DMA Streamx number of data to transfer register */ + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->NDTR = 0U; + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Reset DMA Streamx peripheral address register */ + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->PAR = 0U; + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Reset DMA Streamx memory 0 address register */ + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->M0AR = 0U; + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Reset DMA Streamx memory 1 address register */ + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->M1AR = 0U; + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Reset DMA Streamx FIFO control register */ + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR = (uint32_t)0x00000021U; + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Get DMA steam Base Address */ + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs = (DMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma); + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear all interrupt flags at correct offset within the register */ + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = 0x3FU << hdma->StreamIndex; + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clean all callbacks */ + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferCpltCallback = NULL; + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferHalfCpltCallback = NULL; + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1CpltCallback = NULL; + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1HalfCpltCallback = NULL; + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferErrorCallback = NULL; + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferAbortCallback = NULL; + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Reset the error code */ + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_NONE; + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Reset the DMA state */ + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_RESET; + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Release Lock */ + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + ARM GAS /tmp/ccRPwCnE.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_OK; + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @} + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** @addtogroup DMA_Exported_Functions_Group2 + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** @verbatim + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** =============================================================================== + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ##### IO operation functions ##### + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** =============================================================================== + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** [..] This section provides functions allowing to: + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Configure the source, destination address and data length and Start DMA transfer + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Configure the source, destination address and data length and + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** Start DMA transfer with interrupt + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Abort DMA transfer + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Poll for transfer complete + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Handle DMA interrupt request + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** @endverbatim + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @{ + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Starts the DMA Transfer. + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param SrcAddress The source memory Buffer address + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param DstAddress The destination memory Buffer address + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param DataLength The length of data to be transferred from source to destination + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef HAL_DMA_Start(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check the parameters */ + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process locked */ + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_LOCK(hdma); + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(HAL_DMA_STATE_READY == hdma->State) + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change DMA peripheral state */ + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_BUSY; + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Initialize the error code */ + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_NONE; + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Configure the source, destination address and the data length */ + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Enable the Peripheral */ + ARM GAS /tmp/ccRPwCnE.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_DMA_ENABLE(hdma); + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process unlocked */ + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Return error status */ + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_BUSY; + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return status; + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Start the DMA Transfer with interrupt enabled. + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param SrcAddress The source memory Buffer address + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param DstAddress The destination memory Buffer address + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param DataLength The length of data to be transferred from source to destination + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddres + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* calculate DMA base and stream number */ + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check the parameters */ + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process locked */ + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_LOCK(hdma); + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(HAL_DMA_STATE_READY == hdma->State) + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change DMA peripheral state */ + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_BUSY; + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Initialize the error code */ + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_NONE; + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Configure the source, destination address and the data length */ + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear all interrupt flags at correct offset within the register */ + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = 0x3FU << hdma->StreamIndex; + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Enable Common interrupts*/ + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR |= DMA_IT_TC | DMA_IT_TE | DMA_IT_DME; + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR |= DMA_IT_FE; + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->XferHalfCpltCallback != NULL) + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR |= DMA_IT_HT; + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + ARM GAS /tmp/ccRPwCnE.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Enable the Peripheral */ + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_DMA_ENABLE(hdma); + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process unlocked */ + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Return error status */ + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_BUSY; + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return status; + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Aborts the DMA Transfer. + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @note After disabling a DMA Stream, a check for wait until the DMA Stream is + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * effectively disabled is added. If a Stream is disabled + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * while a data transfer is ongoing, the current data will be transferred + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * and the Stream will be effectively disabled only after the transfer of + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * this single data is finished. + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* calculate DMA base and stream number */ + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tickstart = HAL_GetTick(); + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->State != HAL_DMA_STATE_BUSY) + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process Unlocked */ + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable all the transfer interrupts */ + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME); + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR &= ~(DMA_IT_FE); + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL)) + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR &= ~(DMA_IT_HT); + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable the stream */ + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_DMA_DISABLE(hdma); + ARM GAS /tmp/ccRPwCnE.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check if the DMA Stream is effectively disabled */ + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** while((hdma->Instance->CR & DMA_SxCR_EN) != RESET) + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check for the Timeout */ + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT) + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Update error code */ + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change the DMA state */ + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_TIMEOUT; + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process Unlocked */ + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_TIMEOUT; + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear all interrupt flags at correct offset within the register */ + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = 0x3FU << hdma->StreamIndex; + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change the DMA state*/ + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_READY; + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process Unlocked */ + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_OK; + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Aborts the DMA Transfer in Interrupt mode. + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->State != HAL_DMA_STATE_BUSY) + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Set Abort State */ + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_ABORT; + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable the stream */ + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_DMA_DISABLE(hdma); + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_OK; + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + ARM GAS /tmp/ccRPwCnE.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Polling for transfer complete. + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param CompleteLevel Specifies the DMA level complete. + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @note The polling mode is kept in this version for legacy. it is recommended to use the IT mo + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * This model could be used for debug purpose. + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @note The HAL_DMA_PollForTransfer API cannot be used in circular and double buffering mode (a + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param Timeout Timeout duration. + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef Com + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t mask_cpltlevel; + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tickstart = HAL_GetTick(); + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmpisr; + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* calculate DMA base and stream number */ + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_Base_Registers *regs; + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(HAL_DMA_STATE_BUSY != hdma->State) + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* No transfer ongoing */ + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Polling mode not supported in circular mode and double buffering mode */ + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if ((hdma->Instance->CR & DMA_SxCR_CIRC) != RESET) + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Get the level transfer complete flag */ + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(CompleteLevel == HAL_DMA_FULL_TRANSFER) + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Transfer Complete flag */ + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** mask_cpltlevel = DMA_FLAG_TCIF0_4 << hdma->StreamIndex; + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Half Transfer Complete flag */ + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** mask_cpltlevel = DMA_FLAG_HTIF0_4 << hdma->StreamIndex; + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmpisr = regs->ISR; + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** while(((tmpisr & mask_cpltlevel) == RESET) && ((hdma->ErrorCode & HAL_DMA_ERROR_TE) == RESET)) + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check for the Timeout (Not applicable in circular mode)*/ + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(Timeout != HAL_MAX_DELAY) + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + ARM GAS /tmp/ccRPwCnE.s page 13 + + + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout)) + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Update error code */ + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change the DMA state */ + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_READY; + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process Unlocked */ + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_TIMEOUT; + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Get the ISR register value */ + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmpisr = regs->ISR; + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((tmpisr & (DMA_FLAG_TEIF0_4 << hdma->StreamIndex)) != RESET) + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Update error code */ + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode |= HAL_DMA_ERROR_TE; + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the transfer error flag */ + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = DMA_FLAG_TEIF0_4 << hdma->StreamIndex; + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((tmpisr & (DMA_FLAG_FEIF0_4 << hdma->StreamIndex)) != RESET) + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Update error code */ + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode |= HAL_DMA_ERROR_FE; + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the FIFO error flag */ + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = DMA_FLAG_FEIF0_4 << hdma->StreamIndex; + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((tmpisr & (DMA_FLAG_DMEIF0_4 << hdma->StreamIndex)) != RESET) + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Update error code */ + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode |= HAL_DMA_ERROR_DME; + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the Direct Mode error flag */ + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = DMA_FLAG_DMEIF0_4 << hdma->StreamIndex; + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->ErrorCode != HAL_DMA_ERROR_NONE) + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((hdma->ErrorCode & HAL_DMA_ERROR_TE) != RESET) + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_DMA_Abort(hdma); + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the half transfer and transfer complete flags */ + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = (DMA_FLAG_HTIF0_4 | DMA_FLAG_TCIF0_4) << hdma->StreamIndex; + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change the DMA state */ + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State= HAL_DMA_STATE_READY; + ARM GAS /tmp/ccRPwCnE.s page 14 + + + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process Unlocked */ + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Get the level transfer complete flag */ + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(CompleteLevel == HAL_DMA_FULL_TRANSFER) + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the half transfer and transfer complete flags */ + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = (DMA_FLAG_HTIF0_4 | DMA_FLAG_TCIF0_4) << hdma->StreamIndex; + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_READY; + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process Unlocked */ + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the half transfer flag */ + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = (DMA_FLAG_HTIF0_4) << hdma->StreamIndex; + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return status; + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Handles DMA interrupt request. + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval None + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmpisr; + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __IO uint32_t count = 0; + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t timeout = SystemCoreClock / 9600; + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* calculate DMA base and stream number */ + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_Base_Registers *regs = (DMA_Base_Registers *)hdma->StreamBaseAddress; + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmpisr = regs->ISR; + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Transfer Error Interrupt management ***************************************/ + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if ((tmpisr & (DMA_FLAG_TEIF0_4 << hdma->StreamIndex)) != RESET) + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TE) != RESET) + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable the transfer error interrupt */ + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR &= ~(DMA_IT_TE); + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the transfer error flag */ + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = DMA_FLAG_TEIF0_4 << hdma->StreamIndex; + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + ARM GAS /tmp/ccRPwCnE.s page 15 + + + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Update error code */ + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode |= HAL_DMA_ERROR_TE; + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* FIFO Error Interrupt management ******************************************/ + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if ((tmpisr & (DMA_FLAG_FEIF0_4 << hdma->StreamIndex)) != RESET) + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_FE) != RESET) + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the FIFO error flag */ + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = DMA_FLAG_FEIF0_4 << hdma->StreamIndex; + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Update error code */ + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode |= HAL_DMA_ERROR_FE; + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Direct Mode Error Interrupt management ***********************************/ + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if ((tmpisr & (DMA_FLAG_DMEIF0_4 << hdma->StreamIndex)) != RESET) + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_DME) != RESET) + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the direct mode error flag */ + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = DMA_FLAG_DMEIF0_4 << hdma->StreamIndex; + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Update error code */ + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->ErrorCode |= HAL_DMA_ERROR_DME; + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Half Transfer Complete Interrupt management ******************************/ + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if ((tmpisr & (DMA_FLAG_HTIF0_4 << hdma->StreamIndex)) != RESET) + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_HT) != RESET) + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the half transfer complete flag */ + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = DMA_FLAG_HTIF0_4 << hdma->StreamIndex; + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Multi_Buffering mode enabled */ + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET) + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Current memory buffer used is Memory 0 */ + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((hdma->Instance->CR & DMA_SxCR_CT) == RESET) + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->XferHalfCpltCallback != NULL) + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Half transfer callback */ + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferHalfCpltCallback(hdma); + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Current memory buffer used is Memory 1 */ + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->XferM1HalfCpltCallback != NULL) + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Half transfer callback */ + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1HalfCpltCallback(hdma); + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + ARM GAS /tmp/ccRPwCnE.s page 16 + + + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */ + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET) + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable the half transfer interrupt */ + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR &= ~(DMA_IT_HT); + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->XferHalfCpltCallback != NULL) + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Half transfer callback */ + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferHalfCpltCallback(hdma); + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Transfer Complete Interrupt management ***********************************/ + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if ((tmpisr & (DMA_FLAG_TCIF0_4 << hdma->StreamIndex)) != RESET) + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TC) != RESET) + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear the transfer complete flag */ + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = DMA_FLAG_TCIF0_4 << hdma->StreamIndex; + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(HAL_DMA_STATE_ABORT == hdma->State) + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable all the transfer interrupts */ + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME); + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR &= ~(DMA_IT_FE); + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL)) + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR &= ~(DMA_IT_HT); + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear all interrupt flags at correct offset within the register */ + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** regs->IFCR = 0x3FU << hdma->StreamIndex; + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change the DMA state */ + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_READY; + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process Unlocked */ + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->XferAbortCallback != NULL) + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferAbortCallback(hdma); + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return; + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(((hdma->Instance->CR) & (uint32_t)(DMA_SxCR_DBM)) != RESET) + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Current memory buffer used is Memory 0 */ + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((hdma->Instance->CR & DMA_SxCR_CT) == RESET) + ARM GAS /tmp/ccRPwCnE.s page 17 + + + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->XferM1CpltCallback != NULL) + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Transfer complete Callback for memory1 */ + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1CpltCallback(hdma); + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Current memory buffer used is Memory 1 */ + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->XferCpltCallback != NULL) + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Transfer complete Callback for memory0 */ + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferCpltCallback(hdma); + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */ + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((hdma->Instance->CR & DMA_SxCR_CIRC) == RESET) + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable the transfer complete interrupt */ + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR &= ~(DMA_IT_TC); + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change the DMA state */ + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_READY; + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process Unlocked */ + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->XferCpltCallback != NULL) + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Transfer complete callback */ + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferCpltCallback(hdma); + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* manage error case */ + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->ErrorCode != HAL_DMA_ERROR_NONE) + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((hdma->ErrorCode & HAL_DMA_ERROR_TE) != RESET) + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_ABORT; + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Disable the stream */ + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_DMA_DISABLE(hdma); + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** do + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if (++count > timeout) + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + ARM GAS /tmp/ccRPwCnE.s page 18 + + + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** while((hdma->Instance->CR & DMA_SxCR_EN) != RESET); + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Change the DMA state */ + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->State = HAL_DMA_STATE_READY; + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process Unlocked */ + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->XferErrorCallback != NULL) + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Transfer error callback */ + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferErrorCallback(hdma); + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Register callbacks + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param CallbackID User Callback identifier + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * a DMA_HandleTypeDef structure as parameter. + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param pCallback pointer to private callbacsk function which has pointer to + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * a DMA_HandleTypeDef structure as parameter. + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Callb + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process locked */ + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_LOCK(hdma); + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(HAL_DMA_STATE_READY == hdma->State) + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** switch (CallbackID) + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_CPLT_CB_ID: + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferCpltCallback = pCallback; + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_HALFCPLT_CB_ID: + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferHalfCpltCallback = pCallback; + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_M1CPLT_CB_ID: + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1CpltCallback = pCallback; + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_M1HALFCPLT_CB_ID: + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1HalfCpltCallback = pCallback; +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + ARM GAS /tmp/ccRPwCnE.s page 19 + + +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_ERROR_CB_ID: +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferErrorCallback = pCallback; +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_ABORT_CB_ID: +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferAbortCallback = pCallback; +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** default: +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Return error status */ +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Return error status */ +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Release Lock */ +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return status; +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief UnRegister callbacks +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param CallbackID User Callback identifier +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * a HAL_DMA_CallbackIDTypeDef ENUM as parameter. +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef Cal +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Process locked */ +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_LOCK(hdma); +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(HAL_DMA_STATE_READY == hdma->State) +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** switch (CallbackID) +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_CPLT_CB_ID: +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferCpltCallback = NULL; +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_HALFCPLT_CB_ID: +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferHalfCpltCallback = NULL; +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_M1CPLT_CB_ID: +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1CpltCallback = NULL; +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + ARM GAS /tmp/ccRPwCnE.s page 20 + + +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_M1HALFCPLT_CB_ID: +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1HalfCpltCallback = NULL; +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_ERROR_CB_ID: +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferErrorCallback = NULL; +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_ABORT_CB_ID: +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferAbortCallback = NULL; +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case HAL_DMA_XFER_ALL_CB_ID: +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferCpltCallback = NULL; +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferHalfCpltCallback = NULL; +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1CpltCallback = NULL; +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1HalfCpltCallback = NULL; +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferErrorCallback = NULL; +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferAbortCallback = NULL; +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** default: +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Release Lock */ +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return status; +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @} +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** @addtogroup DMA_Exported_Functions_Group3 +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** @verbatim +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** =============================================================================== +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** ##### State and Errors functions ##### +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** =============================================================================== +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** [..] +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** This subsection provides functions allowing to +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Check the DMA state +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** (+) Get error code +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** @endverbatim +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @{ +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + ARM GAS /tmp/ccRPwCnE.s page 21 + + +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Returns the DMA state. +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL state +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return hdma->State; +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Return the DMA error code +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval DMA Error Code +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma) +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return hdma->ErrorCode; +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @} +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @} +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** @addtogroup DMA_Private_Functions +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @{ +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Sets the DMA Transfer parameter. +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param SrcAddress The source memory Buffer address +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param DstAddress The destination memory Buffer address +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param DataLength The length of data to be transferred from source to destination +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32 +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 28 .loc 1 1159 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 33 .loc 1 1159 1 is_stmt 0 view .LVU1 + 34 0000 30B4 push {r4, r5} + 35 .LCFI0: + 36 .cfi_def_cfa_offset 8 + 37 .cfi_offset 4, -8 + 38 .cfi_offset 5, -4 +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Clear DBM bit */ + ARM GAS /tmp/ccRPwCnE.s page 22 + + +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->CR &= (uint32_t)(~DMA_SxCR_DBM); + 39 .loc 1 1161 3 is_stmt 1 view .LVU2 + 40 .loc 1 1161 7 is_stmt 0 view .LVU3 + 41 0002 0568 ldr r5, [r0] + 42 .loc 1 1161 22 view .LVU4 + 43 0004 2C68 ldr r4, [r5] + 44 0006 24F48024 bic r4, r4, #262144 + 45 000a 2C60 str r4, [r5] +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Configure DMA Stream data length */ +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->NDTR = DataLength; + 46 .loc 1 1164 3 is_stmt 1 view .LVU5 + 47 .loc 1 1164 7 is_stmt 0 view .LVU6 + 48 000c 0468 ldr r4, [r0] + 49 .loc 1 1164 24 view .LVU7 + 50 000e 6360 str r3, [r4, #4] +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Memory to Peripheral */ +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) + 51 .loc 1 1167 3 is_stmt 1 view .LVU8 + 52 .loc 1 1167 17 is_stmt 0 view .LVU9 + 53 0010 8368 ldr r3, [r0, #8] + 54 .LVL1: + 55 .loc 1 1167 5 view .LVU10 + 56 0012 402B cmp r3, #64 + 57 0014 05D0 beq .L5 +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Configure DMA Stream destination address */ +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->PAR = DstAddress; +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Configure DMA Stream source address */ +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->M0AR = SrcAddress; +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Peripheral to Memory */ +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Configure DMA Stream source address */ +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->PAR = SrcAddress; + 58 .loc 1 1179 5 is_stmt 1 view .LVU11 + 59 .loc 1 1179 9 is_stmt 0 view .LVU12 + 60 0016 0368 ldr r3, [r0] + 61 .loc 1 1179 25 view .LVU13 + 62 0018 9960 str r1, [r3, #8] + 63 .LVL2: +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Configure DMA Stream destination address */ +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->M0AR = DstAddress; + 64 .loc 1 1182 5 is_stmt 1 view .LVU14 + 65 .loc 1 1182 9 is_stmt 0 view .LVU15 + 66 001a 0368 ldr r3, [r0] + 67 .loc 1 1182 26 view .LVU16 + 68 001c DA60 str r2, [r3, #12] + 69 .L1: +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 70 .loc 1 1184 1 view .LVU17 + 71 001e 30BC pop {r4, r5} + ARM GAS /tmp/ccRPwCnE.s page 23 + + + 72 .LCFI1: + 73 .cfi_remember_state + 74 .cfi_restore 5 + 75 .cfi_restore 4 + 76 .cfi_def_cfa_offset 0 + 77 0020 7047 bx lr + 78 .LVL3: + 79 .L5: + 80 .LCFI2: + 81 .cfi_restore_state +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 82 .loc 1 1170 5 is_stmt 1 view .LVU18 +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 83 .loc 1 1170 9 is_stmt 0 view .LVU19 + 84 0022 0368 ldr r3, [r0] +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 85 .loc 1 1170 25 view .LVU20 + 86 0024 9A60 str r2, [r3, #8] + 87 .LVL4: +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 88 .loc 1 1173 5 is_stmt 1 view .LVU21 +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 89 .loc 1 1173 9 is_stmt 0 view .LVU22 + 90 0026 0368 ldr r3, [r0] +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 91 .loc 1 1173 26 view .LVU23 + 92 0028 D960 str r1, [r3, #12] + 93 002a F8E7 b .L1 + 94 .cfi_endproc + 95 .LFE153: + 97 .section .text.DMA_CalcBaseAndBitshift,"ax",%progbits + 98 .align 1 + 99 .syntax unified + 100 .thumb + 101 .thumb_func + 102 .fpu fpv5-d16 + 104 DMA_CalcBaseAndBitshift: + 105 .LVL5: + 106 .LFB154: +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Returns the DMA Stream base address depending on stream number +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval Stream base address +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** static uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma) +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 107 .loc 1 1193 1 is_stmt 1 view -0 + 108 .cfi_startproc + 109 @ args = 0, pretend = 0, frame = 0 + 110 @ frame_needed = 0, uses_anonymous_args = 0 + 111 @ link register save eliminated. + 112 .loc 1 1193 1 is_stmt 0 view .LVU25 + 113 0000 10B4 push {r4} + 114 .LCFI3: + 115 .cfi_def_cfa_offset 4 + ARM GAS /tmp/ccRPwCnE.s page 24 + + + 116 .cfi_offset 4, -4 +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t stream_number = (((uint32_t)hdma->Instance & 0xFFU) - 16U) / 24U; + 117 .loc 1 1194 3 is_stmt 1 view .LVU26 + 118 .loc 1 1194 44 is_stmt 0 view .LVU27 + 119 0002 0168 ldr r1, [r0] + 120 .loc 1 1194 55 view .LVU28 + 121 0004 CAB2 uxtb r2, r1 + 122 .loc 1 1194 64 view .LVU29 + 123 0006 103A subs r2, r2, #16 + 124 .loc 1 1194 12 view .LVU30 + 125 0008 0A4B ldr r3, .L10 + 126 000a A3FB0243 umull r4, r3, r3, r2 + 127 000e 1B09 lsrs r3, r3, #4 + 128 .LVL6: +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* lookup table for necessary bitshift of flags within status registers */ +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** static const uint8_t flagBitshiftOffset[8U] = {0U, 6U, 16U, 22U, 0U, 6U, 16U, 22U}; + 129 .loc 1 1197 3 is_stmt 1 view .LVU31 +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->StreamIndex = flagBitshiftOffset[stream_number]; + 130 .loc 1 1198 3 view .LVU32 + 131 .loc 1 1198 41 is_stmt 0 view .LVU33 + 132 0010 094C ldr r4, .L10+4 + 133 0012 E35C ldrb r3, [r4, r3] @ zero_extendqisi2 + 134 .LVL7: + 135 .loc 1 1198 21 view .LVU34 + 136 0014 C365 str r3, [r0, #92] +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if (stream_number > 3U) + 137 .loc 1 1200 3 is_stmt 1 view .LVU35 + 138 .loc 1 1200 6 is_stmt 0 view .LVU36 + 139 0016 5F2A cmp r2, #95 + 140 0018 07D9 bls .L7 +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* return pointer to HISR and HIFCR */ +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->StreamBaseAddress = (((uint32_t)hdma->Instance & (uint32_t)(~0x3FFU)) + 4U); + 141 .loc 1 1203 5 is_stmt 1 view .LVU37 + 142 .loc 1 1203 58 is_stmt 0 view .LVU38 + 143 001a 084B ldr r3, .L10+8 + 144 001c 0B40 ands r3, r3, r1 + 145 .loc 1 1203 81 view .LVU39 + 146 001e 0433 adds r3, r3, #4 + 147 .loc 1 1203 29 view .LVU40 + 148 0020 8365 str r3, [r0, #88] + 149 .L8: +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* return pointer to LISR and LIFCR */ +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->StreamBaseAddress = ((uint32_t)hdma->Instance & (uint32_t)(~0x3FFU)); +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return hdma->StreamBaseAddress; + 150 .loc 1 1211 3 is_stmt 1 view .LVU41 +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 151 .loc 1 1212 1 is_stmt 0 view .LVU42 + 152 0022 806D ldr r0, [r0, #88] + 153 .LVL8: + ARM GAS /tmp/ccRPwCnE.s page 25 + + + 154 .loc 1 1212 1 view .LVU43 + 155 0024 5DF8044B ldr r4, [sp], #4 + 156 .LCFI4: + 157 .cfi_remember_state + 158 .cfi_restore 4 + 159 .cfi_def_cfa_offset 0 + 160 0028 7047 bx lr + 161 .LVL9: + 162 .L7: + 163 .LCFI5: + 164 .cfi_restore_state +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 165 .loc 1 1208 5 is_stmt 1 view .LVU44 +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 166 .loc 1 1208 57 is_stmt 0 view .LVU45 + 167 002a 044B ldr r3, .L10+8 + 168 002c 0B40 ands r3, r3, r1 +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 169 .loc 1 1208 29 view .LVU46 + 170 002e 8365 str r3, [r0, #88] + 171 0030 F7E7 b .L8 + 172 .L11: + 173 0032 00BF .align 2 + 174 .L10: + 175 0034 ABAAAAAA .word -1431655765 + 176 0038 00000000 .word .LANCHOR0 + 177 003c 00FCFFFF .word -1024 + 178 .cfi_endproc + 179 .LFE154: + 181 .section .text.DMA_CheckFifoParam,"ax",%progbits + 182 .align 1 + 183 .syntax unified + 184 .thumb + 185 .thumb_func + 186 .fpu fpv5-d16 + 188 DMA_CheckFifoParam: + 189 .LVL10: + 190 .LFB155: +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /** +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @brief Check compatibility between FIFO threshold level and size of the memory burst +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * the configuration information for the specified DMA Stream. +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** * @retval HAL status +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** */ +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** static HAL_StatusTypeDef DMA_CheckFifoParam(DMA_HandleTypeDef *hdma) +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 191 .loc 1 1221 1 is_stmt 1 view -0 + 192 .cfi_startproc + 193 @ args = 0, pretend = 0, frame = 0 + 194 @ frame_needed = 0, uses_anonymous_args = 0 + 195 @ link register save eliminated. +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 196 .loc 1 1222 3 view .LVU48 +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 197 .loc 1 1223 3 view .LVU49 + 198 .loc 1 1223 12 is_stmt 0 view .LVU50 + ARM GAS /tmp/ccRPwCnE.s page 26 + + + 199 0000 836A ldr r3, [r0, #40] + 200 .LVL11: +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Memory Data size equal to Byte */ +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->Init.MemDataAlignment == DMA_MDATAALIGN_BYTE) + 201 .loc 1 1226 3 is_stmt 1 view .LVU51 + 202 .loc 1 1226 16 is_stmt 0 view .LVU52 + 203 0002 8269 ldr r2, [r0, #24] + 204 .loc 1 1226 5 view .LVU53 + 205 0004 92B9 cbnz r2, .L13 +1227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** switch (tmp) + 206 .loc 1 1228 5 is_stmt 1 view .LVU54 + 207 0006 012B cmp r3, #1 + 208 0008 0AD0 beq .L14 + 209 000a 022B cmp r3, #2 + 210 000c 02D0 beq .L15 + 211 000e 0BB1 cbz r3, .L15 + 212 0010 0020 movs r0, #0 + 213 .LVL12: + 214 .loc 1 1228 5 is_stmt 0 view .LVU55 + 215 0012 7047 bx lr + 216 .LVL13: + 217 .L15: +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_1QUARTERFULL: +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_3QUARTERSFULL: +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) + 218 .loc 1 1232 7 is_stmt 1 view .LVU56 + 219 .loc 1 1232 22 is_stmt 0 view .LVU57 + 220 0014 C36A ldr r3, [r0, #44] + 221 .LVL14: + 222 .loc 1 1232 10 view .LVU58 + 223 0016 13F0807F tst r3, #16777216 + 224 001a 28D1 bne .L23 +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 225 .loc 1 1222 21 view .LVU59 + 226 001c 0020 movs r0, #0 + 227 .LVL15: +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 228 .loc 1 1222 21 view .LVU60 + 229 001e 7047 bx lr + 230 .LVL16: + 231 .L14: +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_HALFFULL: +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if (hdma->Init.MemBurst == DMA_MBURST_INC16) + 232 .loc 1 1238 7 is_stmt 1 view .LVU61 + 233 .loc 1 1238 21 is_stmt 0 view .LVU62 + 234 0020 C36A ldr r3, [r0, #44] + 235 .LVL17: + 236 .loc 1 1238 10 view .LVU63 + 237 0022 B3F1C07F cmp r3, #25165824 + 238 0026 24D0 beq .L24 + ARM GAS /tmp/ccRPwCnE.s page 27 + + +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 239 .loc 1 1222 21 view .LVU64 + 240 0028 0020 movs r0, #0 + 241 .LVL18: +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 242 .loc 1 1222 21 view .LVU65 + 243 002a 7047 bx lr + 244 .LVL19: + 245 .L13: +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_FULL: +1244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** default: +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Memory Data size equal to Half-Word */ +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else if (hdma->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) + 246 .loc 1 1251 8 is_stmt 1 view .LVU66 + 247 .loc 1 1251 11 is_stmt 0 view .LVU67 + 248 002c B2F5005F cmp r2, #8192 + 249 0030 09D0 beq .L31 +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** switch (tmp) +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_1QUARTERFULL: +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_3QUARTERSFULL: +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; +1258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_HALFFULL: +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_FULL: +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if (hdma->Init.MemBurst == DMA_MBURST_INC16) +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** default: +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Memory Data size equal to Word */ +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** else +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** switch (tmp) + 250 .loc 1 1279 5 is_stmt 1 view .LVU68 + 251 0032 022B cmp r3, #2 + 252 0034 25D9 bls .L28 + ARM GAS /tmp/ccRPwCnE.s page 28 + + + 253 0036 032B cmp r3, #3 + 254 0038 25D1 bne .L29 +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_1QUARTERFULL: +1282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_HALFFULL: +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_3QUARTERSFULL: +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** case DMA_FIFO_THRESHOLD_FULL: +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) + 255 .loc 1 1287 7 view .LVU69 + 256 .loc 1 1287 22 is_stmt 0 view .LVU70 + 257 003a C36A ldr r3, [r0, #44] + 258 .LVL20: + 259 .loc 1 1287 10 view .LVU71 + 260 003c 13F0807F tst r3, #16777216 + 261 0040 23D1 bne .L30 +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 262 .loc 1 1222 21 view .LVU72 + 263 0042 0020 movs r0, #0 + 264 .LVL21: +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 265 .loc 1 1222 21 view .LVU73 + 266 0044 7047 bx lr + 267 .LVL22: + 268 .L31: +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 269 .loc 1 1253 5 is_stmt 1 view .LVU74 + 270 0046 032B cmp r3, #3 + 271 0048 03D8 bhi .L18 + 272 004a DFE803F0 tbb [pc, r3] + 273 .L20: + 274 004e 14 .byte (.L25-.L20)/2 + 275 004f 04 .byte (.L21-.L20)/2 + 276 0050 14 .byte (.L25-.L20)/2 + 277 0051 0A .byte (.L19-.L20)/2 + 278 .p2align 1 + 279 .L18: + 280 0052 0020 movs r0, #0 + 281 .LVL23: +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 282 .loc 1 1253 5 is_stmt 0 view .LVU75 + 283 0054 7047 bx lr + 284 .LVL24: + 285 .L21: +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 286 .loc 1 1260 7 is_stmt 1 view .LVU76 +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 287 .loc 1 1260 22 is_stmt 0 view .LVU77 + 288 0056 C36A ldr r3, [r0, #44] + 289 .LVL25: +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 290 .loc 1 1260 10 view .LVU78 + 291 0058 13F0807F tst r3, #16777216 + 292 005c 0DD1 bne .L26 +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 293 .loc 1 1222 21 view .LVU79 + ARM GAS /tmp/ccRPwCnE.s page 29 + + + 294 005e 0020 movs r0, #0 + 295 .LVL26: +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 296 .loc 1 1222 21 view .LVU80 + 297 0060 7047 bx lr + 298 .LVL27: + 299 .L19: +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 300 .loc 1 1266 7 is_stmt 1 view .LVU81 +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 301 .loc 1 1266 21 is_stmt 0 view .LVU82 + 302 0062 C36A ldr r3, [r0, #44] + 303 .LVL28: +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 304 .loc 1 1266 10 view .LVU83 + 305 0064 B3F1C07F cmp r3, #25165824 + 306 0068 09D0 beq .L27 +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 307 .loc 1 1222 21 view .LVU84 + 308 006a 0020 movs r0, #0 + 309 .LVL29: +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = hdma->Init.FIFOThreshold; + 310 .loc 1 1222 21 view .LVU85 + 311 006c 7047 bx lr + 312 .LVL30: + 313 .L23: +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 314 .loc 1 1234 16 view .LVU86 + 315 006e 0120 movs r0, #1 + 316 .LVL31: +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 317 .loc 1 1234 16 view .LVU87 + 318 0070 7047 bx lr + 319 .LVL32: + 320 .L24: +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 321 .loc 1 1240 16 view .LVU88 + 322 0072 0120 movs r0, #1 + 323 .LVL33: +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 324 .loc 1 1240 16 view .LVU89 + 325 0074 7047 bx lr + 326 .LVL34: + 327 .L25: +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 328 .loc 1 1257 14 view .LVU90 + 329 0076 0120 movs r0, #1 + 330 .LVL35: +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 331 .loc 1 1257 14 view .LVU91 + 332 0078 7047 bx lr + 333 .LVL36: + 334 .L26: +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 335 .loc 1 1262 16 view .LVU92 + 336 007a 0120 movs r0, #1 + 337 .LVL37: + ARM GAS /tmp/ccRPwCnE.s page 30 + + +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 338 .loc 1 1262 16 view .LVU93 + 339 007c 7047 bx lr + 340 .LVL38: + 341 .L27: +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 342 .loc 1 1268 16 view .LVU94 + 343 007e 0120 movs r0, #1 + 344 .LVL39: +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 345 .loc 1 1268 16 view .LVU95 + 346 0080 7047 bx lr + 347 .LVL40: + 348 .L28: +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 349 .loc 1 1284 14 view .LVU96 + 350 0082 0120 movs r0, #1 + 351 .LVL41: +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 352 .loc 1 1284 14 view .LVU97 + 353 0084 7047 bx lr + 354 .LVL42: + 355 .L29: +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 356 .loc 1 1279 5 view .LVU98 + 357 0086 0020 movs r0, #0 + 358 .LVL43: +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 359 .loc 1 1279 5 view .LVU99 + 360 0088 7047 bx lr + 361 .LVL44: + 362 .L30: +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** status = HAL_ERROR; + 363 .loc 1 1289 16 view .LVU100 + 364 008a 0120 movs r0, #1 + 365 .LVL45: +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** default: +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } +1296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return status; + 366 .loc 1 1297 3 is_stmt 1 view .LVU101 +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 367 .loc 1 1298 1 is_stmt 0 view .LVU102 + 368 008c 7047 bx lr + 369 .cfi_endproc + 370 .LFE155: + 372 .section .text.HAL_DMA_Init,"ax",%progbits + 373 .align 1 + 374 .global HAL_DMA_Init + 375 .syntax unified + 376 .thumb + 377 .thumb_func + ARM GAS /tmp/ccRPwCnE.s page 31 + + + 378 .fpu fpv5-d16 + 380 HAL_DMA_Init: + 381 .LVL46: + 382 .LFB141: + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = 0U; + 383 .loc 1 172 1 is_stmt 1 view -0 + 384 .cfi_startproc + 385 @ args = 0, pretend = 0, frame = 0 + 386 @ frame_needed = 0, uses_anonymous_args = 0 + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmp = 0U; + 387 .loc 1 172 1 is_stmt 0 view .LVU104 + 388 0000 70B5 push {r4, r5, r6, lr} + 389 .LCFI6: + 390 .cfi_def_cfa_offset 16 + 391 .cfi_offset 4, -16 + 392 .cfi_offset 5, -12 + 393 .cfi_offset 6, -8 + 394 .cfi_offset 14, -4 + 395 0002 0446 mov r4, r0 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tickstart = HAL_GetTick(); + 396 .loc 1 173 3 is_stmt 1 view .LVU105 + 397 .LVL47: + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_Base_Registers *regs; + 398 .loc 1 174 3 view .LVU106 + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_Base_Registers *regs; + 399 .loc 1 174 24 is_stmt 0 view .LVU107 + 400 0004 FFF7FEFF bl HAL_GetTick + 401 .LVL48: + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 402 .loc 1 175 3 is_stmt 1 view .LVU108 + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 403 .loc 1 178 3 view .LVU109 + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 404 .loc 1 178 5 is_stmt 0 view .LVU110 + 405 0008 002C cmp r4, #0 + 406 000a 5CD0 beq .L38 + 407 000c 0546 mov r5, r0 + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_CHANNEL(hdma->Init.Channel)); + 408 .loc 1 184 3 is_stmt 1 view .LVU111 + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_DIRECTION(hdma->Init.Direction)); + 409 .loc 1 185 3 view .LVU112 + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_PERIPHERAL_INC_STATE(hdma->Init.PeriphInc)); + 410 .loc 1 186 3 view .LVU113 + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_MEMORY_INC_STATE(hdma->Init.MemInc)); + 411 .loc 1 187 3 view .LVU114 + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); + 412 .loc 1 188 3 view .LVU115 + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); + 413 .loc 1 189 3 view .LVU116 + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_MODE(hdma->Init.Mode)); + 414 .loc 1 190 3 view .LVU117 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); + 415 .loc 1 191 3 view .LVU118 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_FIFO_MODE_STATE(hdma->Init.FIFOMode)); + 416 .loc 1 192 3 view .LVU119 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* Check the memory burst, peripheral burst and FIFO threshold parameters only + 417 .loc 1 193 3 view .LVU120 + ARM GAS /tmp/ccRPwCnE.s page 32 + + + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 418 .loc 1 196 3 view .LVU121 + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_MEMORY_BURST(hdma->Init.MemBurst)); + 419 .loc 1 198 5 view .LVU122 + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** assert_param(IS_DMA_PERIPHERAL_BURST(hdma->Init.PeriphBurst)); + 420 .loc 1 199 5 view .LVU123 + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 421 .loc 1 200 5 view .LVU124 + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 422 .loc 1 204 3 view .LVU125 + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 423 .loc 1 204 15 is_stmt 0 view .LVU126 + 424 000e 0223 movs r3, #2 + 425 0010 84F83530 strb r3, [r4, #53] + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 426 .loc 1 207 3 is_stmt 1 view .LVU127 + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 427 .loc 1 207 3 view .LVU128 + 428 0014 0023 movs r3, #0 + 429 0016 84F83430 strb r3, [r4, #52] + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 430 .loc 1 207 3 view .LVU129 + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 431 .loc 1 211 3 view .LVU130 + 432 001a 2268 ldr r2, [r4] + 433 001c 1368 ldr r3, [r2] + 434 001e 23F00103 bic r3, r3, #1 + 435 0022 1360 str r3, [r2] + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 436 .loc 1 214 3 view .LVU131 + 437 .LVL49: + 438 .L34: + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 439 .loc 1 214 8 view .LVU132 + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 440 .loc 1 214 14 is_stmt 0 view .LVU133 + 441 0024 2368 ldr r3, [r4] + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 442 .loc 1 214 24 view .LVU134 + 443 0026 1A68 ldr r2, [r3] + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 444 .loc 1 214 8 view .LVU135 + 445 0028 12F0010F tst r2, #1 + 446 002c 0AD0 beq .L40 + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 447 .loc 1 217 5 is_stmt 1 view .LVU136 + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 448 .loc 1 217 9 is_stmt 0 view .LVU137 + 449 002e FFF7FEFF bl HAL_GetTick + 450 .LVL50: + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 451 .loc 1 217 23 view .LVU138 + 452 0032 431B subs r3, r0, r5 + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 453 .loc 1 217 7 view .LVU139 + 454 0034 052B cmp r3, #5 + 455 0036 F5D9 bls .L34 + ARM GAS /tmp/ccRPwCnE.s page 33 + + + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 456 .loc 1 220 7 is_stmt 1 view .LVU140 + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 457 .loc 1 220 23 is_stmt 0 view .LVU141 + 458 0038 2023 movs r3, #32 + 459 003a 6365 str r3, [r4, #84] + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 460 .loc 1 223 7 is_stmt 1 view .LVU142 + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 461 .loc 1 223 19 is_stmt 0 view .LVU143 + 462 003c 0320 movs r0, #3 + 463 003e 84F83500 strb r0, [r4, #53] + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 464 .loc 1 225 7 is_stmt 1 view .LVU144 + 465 .LVL51: + 466 .L33: + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 467 .loc 1 303 1 is_stmt 0 view .LVU145 + 468 0042 70BD pop {r4, r5, r6, pc} + 469 .LVL52: + 470 .L40: + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 471 .loc 1 230 3 is_stmt 1 view .LVU146 + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 472 .loc 1 230 7 is_stmt 0 view .LVU147 + 473 0044 1A68 ldr r2, [r3] + 474 .LVL53: + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_SxCR_PL | DMA_SxCR_MSIZE | DMA_SxCR_PSIZE | \ + 475 .loc 1 233 3 is_stmt 1 view .LVU148 + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_SxCR_PL | DMA_SxCR_MSIZE | DMA_SxCR_PSIZE | \ + 476 .loc 1 233 7 is_stmt 0 view .LVU149 + 477 0046 2148 ldr r0, .L43 + 478 0048 1040 ands r0, r0, r2 + 479 .LVL54: + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphInc | hdma->Init.MemInc | + 480 .loc 1 239 3 is_stmt 1 view .LVU150 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphInc | hdma->Init.MemInc | + 481 .loc 1 239 21 is_stmt 0 view .LVU151 + 482 004a 6168 ldr r1, [r4, #4] + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphInc | hdma->Init.MemInc | + 483 .loc 1 239 54 view .LVU152 + 484 004c A268 ldr r2, [r4, #8] + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphInc | hdma->Init.MemInc | + 485 .loc 1 239 42 view .LVU153 + 486 004e 0A43 orrs r2, r2, r1 + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | + 487 .loc 1 240 21 view .LVU154 + 488 0050 E168 ldr r1, [r4, #12] + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphInc | hdma->Init.MemInc | + 489 .loc 1 239 72 view .LVU155 + 490 0052 0A43 orrs r2, r2, r1 + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | + 491 .loc 1 240 54 view .LVU156 + 492 0054 2169 ldr r1, [r4, #16] + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | + 493 .loc 1 240 42 view .LVU157 + 494 0056 0A43 orrs r2, r2, r1 + ARM GAS /tmp/ccRPwCnE.s page 34 + + + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.Mode | hdma->Init.Priority; + 495 .loc 1 241 21 view .LVU158 + 496 0058 6169 ldr r1, [r4, #20] + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | + 497 .loc 1 240 72 view .LVU159 + 498 005a 0A43 orrs r2, r2, r1 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.Mode | hdma->Init.Priority; + 499 .loc 1 241 54 view .LVU160 + 500 005c A169 ldr r1, [r4, #24] + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.Mode | hdma->Init.Priority; + 501 .loc 1 241 42 view .LVU161 + 502 005e 0A43 orrs r2, r2, r1 + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 503 .loc 1 242 21 view .LVU162 + 504 0060 E169 ldr r1, [r4, #28] + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.Mode | hdma->Init.Priority; + 505 .loc 1 241 72 view .LVU163 + 506 0062 0A43 orrs r2, r2, r1 + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 507 .loc 1 242 54 view .LVU164 + 508 0064 216A ldr r1, [r4, #32] + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 509 .loc 1 242 42 view .LVU165 + 510 0066 0A43 orrs r2, r2, r1 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Init.PeriphInc | hdma->Init.MemInc | + 511 .loc 1 239 7 view .LVU166 + 512 0068 0243 orrs r2, r2, r0 + 513 .LVL55: + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 514 .loc 1 245 3 is_stmt 1 view .LVU167 + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 515 .loc 1 245 16 is_stmt 0 view .LVU168 + 516 006a 616A ldr r1, [r4, #36] + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 517 .loc 1 245 5 view .LVU169 + 518 006c 0429 cmp r1, #4 + 519 006e 1ED0 beq .L41 + 520 .L36: + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 521 .loc 1 252 3 is_stmt 1 view .LVU170 + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 522 .loc 1 252 22 is_stmt 0 view .LVU171 + 523 0070 1A60 str r2, [r3] + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 524 .loc 1 255 3 is_stmt 1 view .LVU172 + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 525 .loc 1 255 13 is_stmt 0 view .LVU173 + 526 0072 2668 ldr r6, [r4] + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 527 .loc 1 255 7 view .LVU174 + 528 0074 7569 ldr r5, [r6, #20] + 529 .LVL56: + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 530 .loc 1 258 3 is_stmt 1 view .LVU175 + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 531 .loc 1 258 7 is_stmt 0 view .LVU176 + 532 0076 25F00705 bic r5, r5, #7 + ARM GAS /tmp/ccRPwCnE.s page 35 + + + 533 .LVL57: + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 534 .loc 1 261 3 is_stmt 1 view .LVU177 + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 535 .loc 1 261 20 is_stmt 0 view .LVU178 + 536 007a 636A ldr r3, [r4, #36] + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 537 .loc 1 261 7 view .LVU179 + 538 007c 1D43 orrs r5, r5, r3 + 539 .LVL58: + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 540 .loc 1 264 3 is_stmt 1 view .LVU180 + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 541 .loc 1 264 5 is_stmt 0 view .LVU181 + 542 007e 042B cmp r3, #4 + 543 0080 07D1 bne .L37 + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 544 .loc 1 267 5 is_stmt 1 view .LVU182 + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 545 .loc 1 267 22 is_stmt 0 view .LVU183 + 546 0082 A36A ldr r3, [r4, #40] + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 547 .loc 1 267 9 view .LVU184 + 548 0084 1D43 orrs r5, r5, r3 + 549 .LVL59: + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 550 .loc 1 271 5 is_stmt 1 view .LVU185 + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 551 .loc 1 271 19 is_stmt 0 view .LVU186 + 552 0086 E36A ldr r3, [r4, #44] + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 553 .loc 1 271 8 view .LVU187 + 554 0088 1BB1 cbz r3, .L37 + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 555 .loc 1 273 7 is_stmt 1 view .LVU188 + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 556 .loc 1 273 11 is_stmt 0 view .LVU189 + 557 008a 2046 mov r0, r4 + 558 008c FFF7FEFF bl DMA_CheckFifoParam + 559 .LVL60: + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 560 .loc 1 273 10 view .LVU190 + 561 0090 90B9 cbnz r0, .L42 + 562 .L37: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 563 .loc 1 287 3 is_stmt 1 view .LVU191 + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 564 .loc 1 287 23 is_stmt 0 view .LVU192 + 565 0092 7561 str r5, [r6, #20] + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 566 .loc 1 291 3 is_stmt 1 view .LVU193 + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 567 .loc 1 291 32 is_stmt 0 view .LVU194 + 568 0094 2046 mov r0, r4 + 569 0096 FFF7FEFF bl DMA_CalcBaseAndBitshift + 570 .LVL61: + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + ARM GAS /tmp/ccRPwCnE.s page 36 + + + 571 .loc 1 294 3 is_stmt 1 view .LVU195 + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 572 .loc 1 294 29 is_stmt 0 view .LVU196 + 573 009a E26D ldr r2, [r4, #92] + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 574 .loc 1 294 22 view .LVU197 + 575 009c 3F23 movs r3, #63 + 576 009e 9340 lsls r3, r3, r2 + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 577 .loc 1 294 14 view .LVU198 + 578 00a0 8360 str r3, [r0, #8] + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 579 .loc 1 297 3 is_stmt 1 view .LVU199 + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 580 .loc 1 297 19 is_stmt 0 view .LVU200 + 581 00a2 0020 movs r0, #0 + 582 .LVL62: + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 583 .loc 1 297 19 view .LVU201 + 584 00a4 6065 str r0, [r4, #84] + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 585 .loc 1 300 3 is_stmt 1 view .LVU202 + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 586 .loc 1 300 15 is_stmt 0 view .LVU203 + 587 00a6 0123 movs r3, #1 + 588 00a8 84F83530 strb r3, [r4, #53] + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 589 .loc 1 302 3 is_stmt 1 view .LVU204 + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 590 .loc 1 302 10 is_stmt 0 view .LVU205 + 591 00ac C9E7 b .L33 + 592 .LVL63: + 593 .L41: + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 594 .loc 1 248 5 is_stmt 1 view .LVU206 + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 595 .loc 1 248 23 is_stmt 0 view .LVU207 + 596 00ae E16A ldr r1, [r4, #44] + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 597 .loc 1 248 45 view .LVU208 + 598 00b0 206B ldr r0, [r4, #48] + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 599 .loc 1 248 33 view .LVU209 + 600 00b2 0143 orrs r1, r1, r0 + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 601 .loc 1 248 9 view .LVU210 + 602 00b4 0A43 orrs r2, r2, r1 + 603 .LVL64: + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 604 .loc 1 248 9 view .LVU211 + 605 00b6 DBE7 b .L36 + 606 .LVL65: + 607 .L42: + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 608 .loc 1 276 9 is_stmt 1 view .LVU212 + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 609 .loc 1 276 25 is_stmt 0 view .LVU213 + ARM GAS /tmp/ccRPwCnE.s page 37 + + + 610 00b8 4023 movs r3, #64 + 611 00ba 6365 str r3, [r4, #84] + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 612 .loc 1 279 9 is_stmt 1 view .LVU214 + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 613 .loc 1 279 21 is_stmt 0 view .LVU215 + 614 00bc 0023 movs r3, #0 + 615 00be 84F83530 strb r3, [r4, #53] + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 616 .loc 1 281 9 is_stmt 1 view .LVU216 + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 617 .loc 1 281 16 is_stmt 0 view .LVU217 + 618 00c2 0120 movs r0, #1 + 619 00c4 BDE7 b .L33 + 620 .LVL66: + 621 .L38: + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 622 .loc 1 180 12 view .LVU218 + 623 00c6 0120 movs r0, #1 + 624 .LVL67: + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 625 .loc 1 180 12 view .LVU219 + 626 00c8 BBE7 b .L33 + 627 .L44: + 628 00ca 00BF .align 2 + 629 .L43: + 630 00cc 3F8010E0 .word -535789505 + 631 .cfi_endproc + 632 .LFE141: + 634 .section .text.HAL_DMA_DeInit,"ax",%progbits + 635 .align 1 + 636 .global HAL_DMA_DeInit + 637 .syntax unified + 638 .thumb + 639 .thumb_func + 640 .fpu fpv5-d16 + 642 HAL_DMA_DeInit: + 643 .LVL68: + 644 .LFB142: + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_Base_Registers *regs; + 645 .loc 1 312 1 is_stmt 1 view -0 + 646 .cfi_startproc + 647 @ args = 0, pretend = 0, frame = 0 + 648 @ frame_needed = 0, uses_anonymous_args = 0 + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 649 .loc 1 313 3 view .LVU221 + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 650 .loc 1 316 3 view .LVU222 + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 651 .loc 1 316 5 is_stmt 0 view .LVU223 + 652 0000 0028 cmp r0, #0 + 653 0002 2DD0 beq .L47 + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** DMA_Base_Registers *regs; + 654 .loc 1 312 1 view .LVU224 + 655 0004 38B5 push {r3, r4, r5, lr} + 656 .LCFI7: + 657 .cfi_def_cfa_offset 16 + ARM GAS /tmp/ccRPwCnE.s page 38 + + + 658 .cfi_offset 3, -16 + 659 .cfi_offset 4, -12 + 660 .cfi_offset 5, -8 + 661 .cfi_offset 14, -4 + 662 0006 0546 mov r5, r0 + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 663 .loc 1 322 3 is_stmt 1 view .LVU225 + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 664 .loc 1 322 10 is_stmt 0 view .LVU226 + 665 0008 90F83500 ldrb r0, [r0, #53] @ zero_extendqisi2 + 666 .LVL69: + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 667 .loc 1 322 10 view .LVU227 + 668 000c C0B2 uxtb r0, r0 + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 669 .loc 1 322 5 view .LVU228 + 670 000e 0228 cmp r0, #2 + 671 0010 25D0 beq .L46 + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 672 .loc 1 329 3 is_stmt 1 view .LVU229 + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 673 .loc 1 332 3 view .LVU230 + 674 0012 2A68 ldr r2, [r5] + 675 0014 1368 ldr r3, [r2] + 676 0016 23F00103 bic r3, r3, #1 + 677 001a 1360 str r3, [r2] + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 678 .loc 1 335 3 view .LVU231 + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 679 .loc 1 335 7 is_stmt 0 view .LVU232 + 680 001c 2B68 ldr r3, [r5] + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 681 .loc 1 335 24 view .LVU233 + 682 001e 0024 movs r4, #0 + 683 0020 1C60 str r4, [r3] + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 684 .loc 1 338 3 is_stmt 1 view .LVU234 + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 685 .loc 1 338 7 is_stmt 0 view .LVU235 + 686 0022 2B68 ldr r3, [r5] + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 687 .loc 1 338 24 view .LVU236 + 688 0024 5C60 str r4, [r3, #4] + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 689 .loc 1 341 3 is_stmt 1 view .LVU237 + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 690 .loc 1 341 7 is_stmt 0 view .LVU238 + 691 0026 2B68 ldr r3, [r5] + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 692 .loc 1 341 24 view .LVU239 + 693 0028 9C60 str r4, [r3, #8] + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 694 .loc 1 344 3 is_stmt 1 view .LVU240 + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 695 .loc 1 344 7 is_stmt 0 view .LVU241 + 696 002a 2B68 ldr r3, [r5] + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + ARM GAS /tmp/ccRPwCnE.s page 39 + + + 697 .loc 1 344 24 view .LVU242 + 698 002c DC60 str r4, [r3, #12] + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 699 .loc 1 347 3 is_stmt 1 view .LVU243 + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 700 .loc 1 347 7 is_stmt 0 view .LVU244 + 701 002e 2B68 ldr r3, [r5] + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 702 .loc 1 347 24 view .LVU245 + 703 0030 1C61 str r4, [r3, #16] + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 704 .loc 1 350 3 is_stmt 1 view .LVU246 + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 705 .loc 1 350 7 is_stmt 0 view .LVU247 + 706 0032 2B68 ldr r3, [r5] + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 707 .loc 1 350 24 view .LVU248 + 708 0034 2122 movs r2, #33 + 709 0036 5A61 str r2, [r3, #20] + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 710 .loc 1 353 3 is_stmt 1 view .LVU249 + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 711 .loc 1 353 32 is_stmt 0 view .LVU250 + 712 0038 2846 mov r0, r5 + 713 003a FFF7FEFF bl DMA_CalcBaseAndBitshift + 714 .LVL70: + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 715 .loc 1 356 3 is_stmt 1 view .LVU251 + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 716 .loc 1 356 29 is_stmt 0 view .LVU252 + 717 003e EA6D ldr r2, [r5, #92] + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 718 .loc 1 356 22 view .LVU253 + 719 0040 3F23 movs r3, #63 + 720 0042 9340 lsls r3, r3, r2 + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 721 .loc 1 356 14 view .LVU254 + 722 0044 8360 str r3, [r0, #8] + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferHalfCpltCallback = NULL; + 723 .loc 1 359 3 is_stmt 1 view .LVU255 + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferHalfCpltCallback = NULL; + 724 .loc 1 359 26 is_stmt 0 view .LVU256 + 725 0046 EC63 str r4, [r5, #60] + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1CpltCallback = NULL; + 726 .loc 1 360 3 is_stmt 1 view .LVU257 + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1CpltCallback = NULL; + 727 .loc 1 360 30 is_stmt 0 view .LVU258 + 728 0048 2C64 str r4, [r5, #64] + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1HalfCpltCallback = NULL; + 729 .loc 1 361 3 is_stmt 1 view .LVU259 + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1HalfCpltCallback = NULL; + 730 .loc 1 361 28 is_stmt 0 view .LVU260 + 731 004a 6C64 str r4, [r5, #68] + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferErrorCallback = NULL; + 732 .loc 1 362 3 is_stmt 1 view .LVU261 + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferErrorCallback = NULL; + 733 .loc 1 362 32 is_stmt 0 view .LVU262 + ARM GAS /tmp/ccRPwCnE.s page 40 + + + 734 004c AC64 str r4, [r5, #72] + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferAbortCallback = NULL; + 735 .loc 1 363 3 is_stmt 1 view .LVU263 + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferAbortCallback = NULL; + 736 .loc 1 363 27 is_stmt 0 view .LVU264 + 737 004e EC64 str r4, [r5, #76] + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 738 .loc 1 364 3 is_stmt 1 view .LVU265 + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 739 .loc 1 364 27 is_stmt 0 view .LVU266 + 740 0050 2C65 str r4, [r5, #80] + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 741 .loc 1 367 3 is_stmt 1 view .LVU267 + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 742 .loc 1 367 19 is_stmt 0 view .LVU268 + 743 0052 6C65 str r4, [r5, #84] + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 744 .loc 1 370 3 is_stmt 1 view .LVU269 + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 745 .loc 1 370 15 is_stmt 0 view .LVU270 + 746 0054 85F83540 strb r4, [r5, #53] + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 747 .loc 1 373 3 is_stmt 1 view .LVU271 + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 748 .loc 1 373 3 view .LVU272 + 749 0058 85F83440 strb r4, [r5, #52] + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 750 .loc 1 373 3 view .LVU273 + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 751 .loc 1 375 3 view .LVU274 + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 752 .loc 1 375 10 is_stmt 0 view .LVU275 + 753 005c 2046 mov r0, r4 + 754 .LVL71: + 755 .L46: + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 756 .loc 1 376 1 view .LVU276 + 757 005e 38BD pop {r3, r4, r5, pc} + 758 .LVL72: + 759 .L47: + 760 .LCFI8: + 761 .cfi_def_cfa_offset 0 + 762 .cfi_restore 3 + 763 .cfi_restore 4 + 764 .cfi_restore 5 + 765 .cfi_restore 14 + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 766 .loc 1 318 12 view .LVU277 + 767 0060 0120 movs r0, #1 + 768 .LVL73: + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 769 .loc 1 376 1 view .LVU278 + 770 0062 7047 bx lr + 771 .cfi_endproc + 772 .LFE142: + 774 .section .text.HAL_DMA_Start,"ax",%progbits + 775 .align 1 + ARM GAS /tmp/ccRPwCnE.s page 41 + + + 776 .global HAL_DMA_Start + 777 .syntax unified + 778 .thumb + 779 .thumb_func + 780 .fpu fpv5-d16 + 782 HAL_DMA_Start: + 783 .LVL74: + 784 .LFB143: + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 785 .loc 1 410 1 is_stmt 1 view -0 + 786 .cfi_startproc + 787 @ args = 0, pretend = 0, frame = 0 + 788 @ frame_needed = 0, uses_anonymous_args = 0 + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 789 .loc 1 410 1 is_stmt 0 view .LVU280 + 790 0000 38B5 push {r3, r4, r5, lr} + 791 .LCFI9: + 792 .cfi_def_cfa_offset 16 + 793 .cfi_offset 3, -16 + 794 .cfi_offset 4, -12 + 795 .cfi_offset 5, -8 + 796 .cfi_offset 14, -4 + 797 0002 0446 mov r4, r0 + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 798 .loc 1 411 3 is_stmt 1 view .LVU281 + 799 .LVL75: + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 800 .loc 1 414 3 view .LVU282 + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 801 .loc 1 417 3 view .LVU283 + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 802 .loc 1 417 3 view .LVU284 + 803 0004 90F83400 ldrb r0, [r0, #52] @ zero_extendqisi2 + 804 .LVL76: + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 805 .loc 1 417 3 is_stmt 0 view .LVU285 + 806 0008 0128 cmp r0, #1 + 807 000a 1BD0 beq .L55 + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 808 .loc 1 417 3 is_stmt 1 discriminator 2 view .LVU286 + 809 000c 0120 movs r0, #1 + 810 000e 84F83400 strb r0, [r4, #52] + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 811 .loc 1 417 3 discriminator 2 view .LVU287 + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 812 .loc 1 419 3 discriminator 2 view .LVU288 + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 813 .loc 1 419 33 is_stmt 0 discriminator 2 view .LVU289 + 814 0012 94F83500 ldrb r0, [r4, #53] @ zero_extendqisi2 + 815 0016 C0B2 uxtb r0, r0 + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 816 .loc 1 419 5 discriminator 2 view .LVU290 + 817 0018 0128 cmp r0, #1 + 818 001a 04D0 beq .L57 + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 819 .loc 1 436 5 is_stmt 1 view .LVU291 + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + ARM GAS /tmp/ccRPwCnE.s page 42 + + + 820 .loc 1 436 5 view .LVU292 + 821 001c 0023 movs r3, #0 + 822 .LVL77: + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 823 .loc 1 436 5 is_stmt 0 view .LVU293 + 824 001e 84F83430 strb r3, [r4, #52] + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 825 .loc 1 436 5 is_stmt 1 view .LVU294 + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 826 .loc 1 439 5 view .LVU295 + 827 .LVL78: + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 828 .loc 1 439 12 is_stmt 0 view .LVU296 + 829 0022 0220 movs r0, #2 + 830 .LVL79: + 831 .L53: + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 832 .loc 1 442 1 view .LVU297 + 833 0024 38BD pop {r3, r4, r5, pc} + 834 .LVL80: + 835 .L57: + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 836 .loc 1 422 5 is_stmt 1 view .LVU298 + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 837 .loc 1 422 17 is_stmt 0 view .LVU299 + 838 0026 0220 movs r0, #2 + 839 0028 84F83500 strb r0, [r4, #53] + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 840 .loc 1 425 5 is_stmt 1 view .LVU300 + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 841 .loc 1 425 21 is_stmt 0 view .LVU301 + 842 002c 0025 movs r5, #0 + 843 002e 6565 str r5, [r4, #84] + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 844 .loc 1 428 5 is_stmt 1 view .LVU302 + 845 0030 2046 mov r0, r4 + 846 0032 FFF7FEFF bl DMA_SetConfig + 847 .LVL81: + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 848 .loc 1 431 5 view .LVU303 + 849 0036 2268 ldr r2, [r4] + 850 0038 1368 ldr r3, [r2] + 851 003a 43F00103 orr r3, r3, #1 + 852 003e 1360 str r3, [r2] + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 853 .loc 1 411 21 is_stmt 0 view .LVU304 + 854 0040 2846 mov r0, r5 + 855 0042 EFE7 b .L53 + 856 .LVL82: + 857 .L55: + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 858 .loc 1 417 3 view .LVU305 + 859 0044 0220 movs r0, #2 + 860 0046 EDE7 b .L53 + 861 .cfi_endproc + 862 .LFE143: + 864 .section .text.HAL_DMA_Start_IT,"ax",%progbits + ARM GAS /tmp/ccRPwCnE.s page 43 + + + 865 .align 1 + 866 .global HAL_DMA_Start_IT + 867 .syntax unified + 868 .thumb + 869 .thumb_func + 870 .fpu fpv5-d16 + 872 HAL_DMA_Start_IT: + 873 .LVL83: + 874 .LFB144: + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 875 .loc 1 454 1 is_stmt 1 view -0 + 876 .cfi_startproc + 877 @ args = 0, pretend = 0, frame = 0 + 878 @ frame_needed = 0, uses_anonymous_args = 0 + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 879 .loc 1 454 1 is_stmt 0 view .LVU307 + 880 0000 38B5 push {r3, r4, r5, lr} + 881 .LCFI10: + 882 .cfi_def_cfa_offset 16 + 883 .cfi_offset 3, -16 + 884 .cfi_offset 4, -12 + 885 .cfi_offset 5, -8 + 886 .cfi_offset 14, -4 + 887 0002 0446 mov r4, r0 + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 888 .loc 1 455 3 is_stmt 1 view .LVU308 + 889 .LVL84: + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 890 .loc 1 458 3 view .LVU309 + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 891 .loc 1 458 56 is_stmt 0 view .LVU310 + 892 0004 856D ldr r5, [r0, #88] + 893 .LVL85: + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 894 .loc 1 461 3 is_stmt 1 view .LVU311 + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 895 .loc 1 464 3 view .LVU312 + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 896 .loc 1 464 3 view .LVU313 + 897 0006 90F83400 ldrb r0, [r0, #52] @ zero_extendqisi2 + 898 .LVL86: + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 899 .loc 1 464 3 is_stmt 0 view .LVU314 + 900 000a 0128 cmp r0, #1 + 901 000c 30D0 beq .L62 + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 902 .loc 1 464 3 is_stmt 1 discriminator 2 view .LVU315 + 903 000e 0120 movs r0, #1 + 904 0010 84F83400 strb r0, [r4, #52] + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 905 .loc 1 464 3 discriminator 2 view .LVU316 + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 906 .loc 1 466 3 discriminator 2 view .LVU317 + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 907 .loc 1 466 33 is_stmt 0 discriminator 2 view .LVU318 + 908 0014 94F83500 ldrb r0, [r4, #53] @ zero_extendqisi2 + 909 0018 C0B2 uxtb r0, r0 + ARM GAS /tmp/ccRPwCnE.s page 44 + + + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 910 .loc 1 466 5 discriminator 2 view .LVU319 + 911 001a 0128 cmp r0, #1 + 912 001c 04D0 beq .L64 + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 913 .loc 1 495 5 is_stmt 1 view .LVU320 + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 914 .loc 1 495 5 view .LVU321 + 915 001e 0023 movs r3, #0 + 916 .LVL87: + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 917 .loc 1 495 5 is_stmt 0 view .LVU322 + 918 0020 84F83430 strb r3, [r4, #52] + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 919 .loc 1 495 5 is_stmt 1 view .LVU323 + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 920 .loc 1 498 5 view .LVU324 + 921 .LVL88: + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 922 .loc 1 498 12 is_stmt 0 view .LVU325 + 923 0024 0220 movs r0, #2 + 924 .LVL89: + 925 .L59: + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 926 .loc 1 502 1 view .LVU326 + 927 0026 38BD pop {r3, r4, r5, pc} + 928 .LVL90: + 929 .L64: + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 930 .loc 1 469 5 is_stmt 1 view .LVU327 + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 931 .loc 1 469 17 is_stmt 0 view .LVU328 + 932 0028 0220 movs r0, #2 + 933 002a 84F83500 strb r0, [r4, #53] + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 934 .loc 1 472 5 is_stmt 1 view .LVU329 + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 935 .loc 1 472 21 is_stmt 0 view .LVU330 + 936 002e 0020 movs r0, #0 + 937 0030 6065 str r0, [r4, #84] + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 938 .loc 1 475 5 is_stmt 1 view .LVU331 + 939 0032 2046 mov r0, r4 + 940 0034 FFF7FEFF bl DMA_SetConfig + 941 .LVL91: + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 942 .loc 1 478 5 view .LVU332 + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 943 .loc 1 478 31 is_stmt 0 view .LVU333 + 944 0038 E26D ldr r2, [r4, #92] + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 945 .loc 1 478 24 view .LVU334 + 946 003a 3F23 movs r3, #63 + 947 003c 9340 lsls r3, r3, r2 + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 948 .loc 1 478 16 view .LVU335 + 949 003e AB60 str r3, [r5, #8] + ARM GAS /tmp/ccRPwCnE.s page 45 + + + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR |= DMA_IT_FE; + 950 .loc 1 481 5 is_stmt 1 view .LVU336 + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR |= DMA_IT_FE; + 951 .loc 1 481 9 is_stmt 0 view .LVU337 + 952 0040 2268 ldr r2, [r4] + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR |= DMA_IT_FE; + 953 .loc 1 481 25 view .LVU338 + 954 0042 1368 ldr r3, [r2] + 955 0044 43F01603 orr r3, r3, #22 + 956 0048 1360 str r3, [r2] + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 957 .loc 1 482 5 is_stmt 1 view .LVU339 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 958 .loc 1 482 9 is_stmt 0 view .LVU340 + 959 004a 2268 ldr r2, [r4] + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 960 .loc 1 482 25 view .LVU341 + 961 004c 5369 ldr r3, [r2, #20] + 962 004e 43F08003 orr r3, r3, #128 + 963 0052 5361 str r3, [r2, #20] + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 964 .loc 1 484 5 is_stmt 1 view .LVU342 + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 965 .loc 1 484 12 is_stmt 0 view .LVU343 + 966 0054 236C ldr r3, [r4, #64] + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 967 .loc 1 484 7 view .LVU344 + 968 0056 23B1 cbz r3, .L61 + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 969 .loc 1 486 7 is_stmt 1 view .LVU345 + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 970 .loc 1 486 11 is_stmt 0 view .LVU346 + 971 0058 2268 ldr r2, [r4] + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 972 .loc 1 486 27 view .LVU347 + 973 005a 1368 ldr r3, [r2] + 974 005c 43F00803 orr r3, r3, #8 + 975 0060 1360 str r3, [r2] + 976 .L61: + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 977 .loc 1 490 5 is_stmt 1 view .LVU348 + 978 0062 2268 ldr r2, [r4] + 979 0064 1368 ldr r3, [r2] + 980 0066 43F00103 orr r3, r3, #1 + 981 006a 1360 str r3, [r2] + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 982 .loc 1 455 21 is_stmt 0 view .LVU349 + 983 006c 0020 movs r0, #0 + 984 006e DAE7 b .L59 + 985 .LVL92: + 986 .L62: + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 987 .loc 1 464 3 view .LVU350 + 988 0070 0220 movs r0, #2 + 989 0072 D8E7 b .L59 + 990 .cfi_endproc + 991 .LFE144: + ARM GAS /tmp/ccRPwCnE.s page 46 + + + 993 .section .text.HAL_DMA_Abort,"ax",%progbits + 994 .align 1 + 995 .global HAL_DMA_Abort + 996 .syntax unified + 997 .thumb + 998 .thumb_func + 999 .fpu fpv5-d16 + 1001 HAL_DMA_Abort: + 1002 .LVL93: + 1003 .LFB145: + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* calculate DMA base and stream number */ + 1004 .loc 1 517 1 is_stmt 1 view -0 + 1005 .cfi_startproc + 1006 @ args = 0, pretend = 0, frame = 0 + 1007 @ frame_needed = 0, uses_anonymous_args = 0 + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** /* calculate DMA base and stream number */ + 1008 .loc 1 517 1 is_stmt 0 view .LVU352 + 1009 0000 70B5 push {r4, r5, r6, lr} + 1010 .LCFI11: + 1011 .cfi_def_cfa_offset 16 + 1012 .cfi_offset 4, -16 + 1013 .cfi_offset 5, -12 + 1014 .cfi_offset 6, -8 + 1015 .cfi_offset 14, -4 + 1016 0002 0446 mov r4, r0 + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1017 .loc 1 519 3 is_stmt 1 view .LVU353 + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1018 .loc 1 519 56 is_stmt 0 view .LVU354 + 1019 0004 866D ldr r6, [r0, #88] + 1020 .LVL94: + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1021 .loc 1 521 3 is_stmt 1 view .LVU355 + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1022 .loc 1 521 24 is_stmt 0 view .LVU356 + 1023 0006 FFF7FEFF bl HAL_GetTick + 1024 .LVL95: + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1025 .loc 1 523 3 is_stmt 1 view .LVU357 + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1026 .loc 1 523 10 is_stmt 0 view .LVU358 + 1027 000a 94F83530 ldrb r3, [r4, #53] @ zero_extendqisi2 + 1028 000e DBB2 uxtb r3, r3 + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1029 .loc 1 523 5 view .LVU359 + 1030 0010 022B cmp r3, #2 + 1031 0012 06D0 beq .L66 + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1032 .loc 1 525 5 is_stmt 1 view .LVU360 + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1033 .loc 1 525 21 is_stmt 0 view .LVU361 + 1034 0014 8023 movs r3, #128 + 1035 0016 6365 str r3, [r4, #84] + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1036 .loc 1 528 5 is_stmt 1 view .LVU362 + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1037 .loc 1 528 5 view .LVU363 + ARM GAS /tmp/ccRPwCnE.s page 47 + + + 1038 0018 0023 movs r3, #0 + 1039 001a 84F83430 strb r3, [r4, #52] + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1040 .loc 1 528 5 view .LVU364 + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1041 .loc 1 530 5 view .LVU365 + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1042 .loc 1 530 12 is_stmt 0 view .LVU366 + 1043 001e 0120 movs r0, #1 + 1044 .LVL96: + 1045 .L67: + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1046 .loc 1 576 1 view .LVU367 + 1047 0020 70BD pop {r4, r5, r6, pc} + 1048 .LVL97: + 1049 .L66: + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1050 .loc 1 576 1 view .LVU368 + 1051 0022 0546 mov r5, r0 + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR &= ~(DMA_IT_FE); + 1052 .loc 1 535 5 is_stmt 1 view .LVU369 + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR &= ~(DMA_IT_FE); + 1053 .loc 1 535 9 is_stmt 0 view .LVU370 + 1054 0024 2268 ldr r2, [r4] + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR &= ~(DMA_IT_FE); + 1055 .loc 1 535 25 view .LVU371 + 1056 0026 1368 ldr r3, [r2] + 1057 0028 23F01603 bic r3, r3, #22 + 1058 002c 1360 str r3, [r2] + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1059 .loc 1 536 5 is_stmt 1 view .LVU372 + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1060 .loc 1 536 9 is_stmt 0 view .LVU373 + 1061 002e 2268 ldr r2, [r4] + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1062 .loc 1 536 25 view .LVU374 + 1063 0030 5369 ldr r3, [r2, #20] + 1064 0032 23F08003 bic r3, r3, #128 + 1065 0036 5361 str r3, [r2, #20] + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1066 .loc 1 538 5 is_stmt 1 view .LVU375 + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1067 .loc 1 538 13 is_stmt 0 view .LVU376 + 1068 0038 236C ldr r3, [r4, #64] + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1069 .loc 1 538 7 view .LVU377 + 1070 003a E3B1 cbz r3, .L73 + 1071 .L68: + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1072 .loc 1 540 7 is_stmt 1 view .LVU378 + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1073 .loc 1 540 11 is_stmt 0 view .LVU379 + 1074 003c 2268 ldr r2, [r4] + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1075 .loc 1 540 27 view .LVU380 + 1076 003e 1368 ldr r3, [r2] + 1077 0040 23F00803 bic r3, r3, #8 + ARM GAS /tmp/ccRPwCnE.s page 48 + + + 1078 0044 1360 str r3, [r2] + 1079 .L69: + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1080 .loc 1 544 5 is_stmt 1 view .LVU381 + 1081 0046 2268 ldr r2, [r4] + 1082 0048 1368 ldr r3, [r2] + 1083 004a 23F00103 bic r3, r3, #1 + 1084 004e 1360 str r3, [r2] + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1085 .loc 1 547 5 view .LVU382 + 1086 .LVL98: + 1087 .L70: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1088 .loc 1 547 10 view .LVU383 + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1089 .loc 1 547 16 is_stmt 0 view .LVU384 + 1090 0050 2368 ldr r3, [r4] + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1091 .loc 1 547 26 view .LVU385 + 1092 0052 1B68 ldr r3, [r3] + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1093 .loc 1 547 10 view .LVU386 + 1094 0054 13F0010F tst r3, #1 + 1095 0058 11D0 beq .L74 + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1096 .loc 1 550 7 is_stmt 1 view .LVU387 + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1097 .loc 1 550 11 is_stmt 0 view .LVU388 + 1098 005a FFF7FEFF bl HAL_GetTick + 1099 .LVL99: + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1100 .loc 1 550 25 view .LVU389 + 1101 005e 431B subs r3, r0, r5 + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1102 .loc 1 550 9 view .LVU390 + 1103 0060 052B cmp r3, #5 + 1104 0062 F5D9 bls .L70 + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1105 .loc 1 553 9 is_stmt 1 view .LVU391 + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1106 .loc 1 553 25 is_stmt 0 view .LVU392 + 1107 0064 2023 movs r3, #32 + 1108 0066 6365 str r3, [r4, #84] + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1109 .loc 1 556 9 is_stmt 1 view .LVU393 + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1110 .loc 1 556 21 is_stmt 0 view .LVU394 + 1111 0068 0320 movs r0, #3 + 1112 006a 84F83500 strb r0, [r4, #53] + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1113 .loc 1 559 9 is_stmt 1 view .LVU395 + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1114 .loc 1 559 9 view .LVU396 + 1115 006e 0023 movs r3, #0 + 1116 0070 84F83430 strb r3, [r4, #52] + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1117 .loc 1 559 9 view .LVU397 + ARM GAS /tmp/ccRPwCnE.s page 49 + + + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1118 .loc 1 561 9 view .LVU398 + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1119 .loc 1 561 16 is_stmt 0 view .LVU399 + 1120 0074 D4E7 b .L67 + 1121 .LVL100: + 1122 .L73: + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1123 .loc 1 538 53 discriminator 1 view .LVU400 + 1124 0076 A36C ldr r3, [r4, #72] + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1125 .loc 1 538 45 discriminator 1 view .LVU401 + 1126 0078 002B cmp r3, #0 + 1127 007a DFD1 bne .L68 + 1128 007c E3E7 b .L69 + 1129 .LVL101: + 1130 .L74: + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1131 .loc 1 566 5 is_stmt 1 view .LVU402 + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1132 .loc 1 566 31 is_stmt 0 view .LVU403 + 1133 007e E26D ldr r2, [r4, #92] + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1134 .loc 1 566 24 view .LVU404 + 1135 0080 3F23 movs r3, #63 + 1136 0082 9340 lsls r3, r3, r2 + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1137 .loc 1 566 16 view .LVU405 + 1138 0084 B360 str r3, [r6, #8] + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1139 .loc 1 569 5 is_stmt 1 view .LVU406 + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1140 .loc 1 569 17 is_stmt 0 view .LVU407 + 1141 0086 0123 movs r3, #1 + 1142 0088 84F83530 strb r3, [r4, #53] + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1143 .loc 1 572 5 is_stmt 1 view .LVU408 + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1144 .loc 1 572 5 view .LVU409 + 1145 008c 0020 movs r0, #0 + 1146 008e 84F83400 strb r0, [r4, #52] + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1147 .loc 1 572 5 view .LVU410 + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1148 .loc 1 575 3 view .LVU411 + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1149 .loc 1 575 10 is_stmt 0 view .LVU412 + 1150 0092 C5E7 b .L67 + 1151 .cfi_endproc + 1152 .LFE145: + 1154 .section .text.HAL_DMA_Abort_IT,"ax",%progbits + 1155 .align 1 + 1156 .global HAL_DMA_Abort_IT + 1157 .syntax unified + 1158 .thumb + 1159 .thumb_func + 1160 .fpu fpv5-d16 + ARM GAS /tmp/ccRPwCnE.s page 50 + + + 1162 HAL_DMA_Abort_IT: + 1163 .LVL102: + 1164 .LFB146: + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** if(hdma->State != HAL_DMA_STATE_BUSY) + 1165 .loc 1 585 1 is_stmt 1 view -0 + 1166 .cfi_startproc + 1167 @ args = 0, pretend = 0, frame = 0 + 1168 @ frame_needed = 0, uses_anonymous_args = 0 + 1169 @ link register save eliminated. + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1170 .loc 1 586 3 view .LVU414 + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1171 .loc 1 586 10 is_stmt 0 view .LVU415 + 1172 0000 90F83530 ldrb r3, [r0, #53] @ zero_extendqisi2 + 1173 0004 DBB2 uxtb r3, r3 + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1174 .loc 1 586 5 view .LVU416 + 1175 0006 022B cmp r3, #2 + 1176 0008 03D0 beq .L76 + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 1177 .loc 1 588 5 is_stmt 1 view .LVU417 + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 1178 .loc 1 588 21 is_stmt 0 view .LVU418 + 1179 000a 8023 movs r3, #128 + 1180 000c 4365 str r3, [r0, #84] + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1181 .loc 1 589 5 is_stmt 1 view .LVU419 + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1182 .loc 1 589 12 is_stmt 0 view .LVU420 + 1183 000e 0120 movs r0, #1 + 1184 .LVL103: + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1185 .loc 1 589 12 view .LVU421 + 1186 0010 7047 bx lr + 1187 .LVL104: + 1188 .L76: + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1189 .loc 1 594 5 is_stmt 1 view .LVU422 + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1190 .loc 1 594 17 is_stmt 0 view .LVU423 + 1191 0012 0523 movs r3, #5 + 1192 0014 80F83530 strb r3, [r0, #53] + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1193 .loc 1 597 5 is_stmt 1 view .LVU424 + 1194 0018 0268 ldr r2, [r0] + 1195 001a 1368 ldr r3, [r2] + 1196 001c 23F00103 bic r3, r3, #1 + 1197 0020 1360 str r3, [r2] + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1198 .loc 1 600 3 view .LVU425 + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1199 .loc 1 600 10 is_stmt 0 view .LVU426 + 1200 0022 0020 movs r0, #0 + 1201 .LVL105: + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1202 .loc 1 601 1 view .LVU427 + 1203 0024 7047 bx lr + ARM GAS /tmp/ccRPwCnE.s page 51 + + + 1204 .cfi_endproc + 1205 .LFE146: + 1207 .section .text.HAL_DMA_PollForTransfer,"ax",%progbits + 1208 .align 1 + 1209 .global HAL_DMA_PollForTransfer + 1210 .syntax unified + 1211 .thumb + 1212 .thumb_func + 1213 .fpu fpv5-d16 + 1215 HAL_DMA_PollForTransfer: + 1216 .LVL106: + 1217 .LFB147: + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 1218 .loc 1 615 1 is_stmt 1 view -0 + 1219 .cfi_startproc + 1220 @ args = 0, pretend = 0, frame = 0 + 1221 @ frame_needed = 0, uses_anonymous_args = 0 + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 1222 .loc 1 615 1 is_stmt 0 view .LVU429 + 1223 0000 2DE9F047 push {r4, r5, r6, r7, r8, r9, r10, lr} + 1224 .LCFI12: + 1225 .cfi_def_cfa_offset 32 + 1226 .cfi_offset 4, -32 + 1227 .cfi_offset 5, -28 + 1228 .cfi_offset 6, -24 + 1229 .cfi_offset 7, -20 + 1230 .cfi_offset 8, -16 + 1231 .cfi_offset 9, -12 + 1232 .cfi_offset 10, -8 + 1233 .cfi_offset 14, -4 + 1234 0004 0446 mov r4, r0 + 1235 0006 8846 mov r8, r1 + 1236 0008 1646 mov r6, r2 + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t mask_cpltlevel; + 1237 .loc 1 616 3 is_stmt 1 view .LVU430 + 1238 .LVL107: + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tickstart = HAL_GetTick(); + 1239 .loc 1 617 3 view .LVU431 + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmpisr; + 1240 .loc 1 618 3 view .LVU432 + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmpisr; + 1241 .loc 1 618 24 is_stmt 0 view .LVU433 + 1242 000a FFF7FEFF bl HAL_GetTick + 1243 .LVL108: + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1244 .loc 1 619 3 is_stmt 1 view .LVU434 + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1245 .loc 1 622 3 view .LVU435 + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1246 .loc 1 624 3 view .LVU436 + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1247 .loc 1 624 32 is_stmt 0 view .LVU437 + 1248 000e 94F83530 ldrb r3, [r4, #53] @ zero_extendqisi2 + 1249 0012 DBB2 uxtb r3, r3 + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1250 .loc 1 624 5 view .LVU438 + 1251 0014 022B cmp r3, #2 + ARM GAS /tmp/ccRPwCnE.s page 52 + + + 1252 0016 07D0 beq .L79 + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 1253 .loc 1 627 5 is_stmt 1 view .LVU439 + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __HAL_UNLOCK(hdma); + 1254 .loc 1 627 21 is_stmt 0 view .LVU440 + 1255 0018 8023 movs r3, #128 + 1256 001a 6365 str r3, [r4, #84] + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 1257 .loc 1 628 5 is_stmt 1 view .LVU441 + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 1258 .loc 1 628 5 view .LVU442 + 1259 001c 0023 movs r3, #0 + 1260 001e 84F83430 strb r3, [r4, #52] + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 1261 .loc 1 628 5 view .LVU443 + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1262 .loc 1 629 5 view .LVU444 + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1263 .loc 1 629 12 is_stmt 0 view .LVU445 + 1264 0022 0120 movs r0, #1 + 1265 .LVL109: + 1266 .L80: + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1267 .loc 1 743 1 view .LVU446 + 1268 0024 BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc} + 1269 .LVL110: + 1270 .L79: + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1271 .loc 1 743 1 view .LVU447 + 1272 0028 8146 mov r9, r0 + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1273 .loc 1 633 3 is_stmt 1 view .LVU448 + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1274 .loc 1 633 12 is_stmt 0 view .LVU449 + 1275 002a 2368 ldr r3, [r4] + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1276 .loc 1 633 22 view .LVU450 + 1277 002c 1B68 ldr r3, [r3] + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1278 .loc 1 633 6 view .LVU451 + 1279 002e 13F4807F tst r3, #256 + 1280 0032 3BD1 bne .L95 + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1281 .loc 1 640 3 is_stmt 1 view .LVU452 + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1282 .loc 1 640 5 is_stmt 0 view .LVU453 + 1283 0034 B8F1000F cmp r8, #0 + 1284 0038 3DD1 bne .L82 + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1285 .loc 1 643 5 is_stmt 1 view .LVU454 + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1286 .loc 1 643 46 is_stmt 0 view .LVU455 + 1287 003a E36D ldr r3, [r4, #92] + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1288 .loc 1 643 20 view .LVU456 + 1289 003c 4FF0200A mov r10, #32 + 1290 0040 0AFA03FA lsl r10, r10, r3 + ARM GAS /tmp/ccRPwCnE.s page 53 + + + 1291 .LVL111: + 1292 .L83: + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmpisr = regs->ISR; + 1293 .loc 1 651 3 is_stmt 1 view .LVU457 + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** tmpisr = regs->ISR; + 1294 .loc 1 651 36 is_stmt 0 view .LVU458 + 1295 0044 A76D ldr r7, [r4, #88] + 1296 .LVL112: + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1297 .loc 1 652 3 is_stmt 1 view .LVU459 + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1298 .loc 1 652 10 is_stmt 0 view .LVU460 + 1299 0046 3B68 ldr r3, [r7] + 1300 .LVL113: + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1301 .loc 1 654 3 is_stmt 1 view .LVU461 + 1302 .L84: + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1303 .loc 1 654 8 view .LVU462 + 1304 0048 1AEA030F tst r10, r3 + 1305 004c 43D1 bne .L90 + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1306 .loc 1 654 55 is_stmt 0 discriminator 1 view .LVU463 + 1307 004e 636D ldr r3, [r4, #84] + 1308 .LVL114: + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1309 .loc 1 654 46 discriminator 1 view .LVU464 + 1310 0050 13F0010F tst r3, #1 + 1311 0054 3FD1 bne .L90 + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1312 .loc 1 657 5 is_stmt 1 view .LVU465 + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1313 .loc 1 657 7 is_stmt 0 view .LVU466 + 1314 0056 B6F1FF3F cmp r6, #-1 + 1315 005a 07D0 beq .L85 + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1316 .loc 1 659 7 is_stmt 1 view .LVU467 + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1317 .loc 1 659 9 is_stmt 0 view .LVU468 + 1318 005c 002E cmp r6, #0 + 1319 005e 30D0 beq .L86 + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1320 .loc 1 659 28 discriminator 1 view .LVU469 + 1321 0060 FFF7FEFF bl HAL_GetTick + 1322 .LVL115: + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1323 .loc 1 659 42 discriminator 1 view .LVU470 + 1324 0064 A0EB0900 sub r0, r0, r9 + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1325 .loc 1 659 24 discriminator 1 view .LVU471 + 1326 0068 B042 cmp r0, r6 + 1327 006a 2AD8 bhi .L86 + 1328 .L85: + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1329 .loc 1 675 5 is_stmt 1 view .LVU472 + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1330 .loc 1 675 12 is_stmt 0 view .LVU473 + ARM GAS /tmp/ccRPwCnE.s page 54 + + + 1331 006c 3B68 ldr r3, [r7] + 1332 .LVL116: + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1333 .loc 1 677 5 is_stmt 1 view .LVU474 + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1334 .loc 1 677 43 is_stmt 0 view .LVU475 + 1335 006e E16D ldr r1, [r4, #92] + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1336 .loc 1 677 36 view .LVU476 + 1337 0070 0822 movs r2, #8 + 1338 0072 8A40 lsls r2, r2, r1 + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1339 .loc 1 677 7 view .LVU477 + 1340 0074 1A42 tst r2, r3 + 1341 0076 04D0 beq .L87 + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1342 .loc 1 680 7 is_stmt 1 view .LVU478 + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1343 .loc 1 680 23 is_stmt 0 view .LVU479 + 1344 0078 616D ldr r1, [r4, #84] + 1345 007a 41F00101 orr r1, r1, #1 + 1346 007e 6165 str r1, [r4, #84] + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1347 .loc 1 683 7 is_stmt 1 view .LVU480 + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1348 .loc 1 683 18 is_stmt 0 view .LVU481 + 1349 0080 BA60 str r2, [r7, #8] + 1350 .L87: + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1351 .loc 1 686 5 is_stmt 1 view .LVU482 + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1352 .loc 1 686 43 is_stmt 0 view .LVU483 + 1353 0082 E16D ldr r1, [r4, #92] + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1354 .loc 1 686 36 view .LVU484 + 1355 0084 0122 movs r2, #1 + 1356 0086 8A40 lsls r2, r2, r1 + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1357 .loc 1 686 7 view .LVU485 + 1358 0088 1A42 tst r2, r3 + 1359 008a 04D0 beq .L88 + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1360 .loc 1 689 7 is_stmt 1 view .LVU486 + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1361 .loc 1 689 23 is_stmt 0 view .LVU487 + 1362 008c 616D ldr r1, [r4, #84] + 1363 008e 41F00201 orr r1, r1, #2 + 1364 0092 6165 str r1, [r4, #84] + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1365 .loc 1 692 7 is_stmt 1 view .LVU488 + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1366 .loc 1 692 18 is_stmt 0 view .LVU489 + 1367 0094 BA60 str r2, [r7, #8] + 1368 .L88: + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1369 .loc 1 695 5 is_stmt 1 view .LVU490 + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + ARM GAS /tmp/ccRPwCnE.s page 55 + + + 1370 .loc 1 695 44 is_stmt 0 view .LVU491 + 1371 0096 E26D ldr r2, [r4, #92] + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1372 .loc 1 695 37 view .LVU492 + 1373 0098 0425 movs r5, #4 + 1374 009a 9540 lsls r5, r5, r2 + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1375 .loc 1 695 7 view .LVU493 + 1376 009c 1D42 tst r5, r3 + 1377 009e D3D0 beq .L84 + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1378 .loc 1 698 7 is_stmt 1 view .LVU494 + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1379 .loc 1 698 23 is_stmt 0 view .LVU495 + 1380 00a0 626D ldr r2, [r4, #84] + 1381 00a2 42F00402 orr r2, r2, #4 + 1382 00a6 6265 str r2, [r4, #84] + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1383 .loc 1 701 7 is_stmt 1 view .LVU496 + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1384 .loc 1 701 18 is_stmt 0 view .LVU497 + 1385 00a8 BD60 str r5, [r7, #8] + 1386 00aa CDE7 b .L84 + 1387 .LVL117: + 1388 .L95: + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 1389 .loc 1 635 5 is_stmt 1 view .LVU498 + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return HAL_ERROR; + 1390 .loc 1 635 21 is_stmt 0 view .LVU499 + 1391 00ac 4FF48073 mov r3, #256 + 1392 00b0 6365 str r3, [r4, #84] + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1393 .loc 1 636 5 is_stmt 1 view .LVU500 + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1394 .loc 1 636 12 is_stmt 0 view .LVU501 + 1395 00b2 0120 movs r0, #1 + 1396 .LVL118: + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1397 .loc 1 636 12 view .LVU502 + 1398 00b4 B6E7 b .L80 + 1399 .LVL119: + 1400 .L82: + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1401 .loc 1 648 5 is_stmt 1 view .LVU503 + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1402 .loc 1 648 46 is_stmt 0 view .LVU504 + 1403 00b6 E36D ldr r3, [r4, #92] + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1404 .loc 1 648 20 view .LVU505 + 1405 00b8 4FF0100A mov r10, #16 + 1406 00bc 0AFA03FA lsl r10, r10, r3 + 1407 .LVL120: + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1408 .loc 1 648 20 view .LVU506 + 1409 00c0 C0E7 b .L83 + 1410 .LVL121: + 1411 .L86: + ARM GAS /tmp/ccRPwCnE.s page 56 + + + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1412 .loc 1 662 9 is_stmt 1 view .LVU507 + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1413 .loc 1 662 25 is_stmt 0 view .LVU508 + 1414 00c2 2023 movs r3, #32 + 1415 00c4 6365 str r3, [r4, #84] + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1416 .loc 1 665 9 is_stmt 1 view .LVU509 + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1417 .loc 1 665 21 is_stmt 0 view .LVU510 + 1418 00c6 0123 movs r3, #1 + 1419 00c8 84F83530 strb r3, [r4, #53] + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1420 .loc 1 668 9 is_stmt 1 view .LVU511 + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1421 .loc 1 668 9 view .LVU512 + 1422 00cc 0023 movs r3, #0 + 1423 00ce 84F83430 strb r3, [r4, #52] + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1424 .loc 1 668 9 view .LVU513 + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1425 .loc 1 670 9 view .LVU514 + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1426 .loc 1 670 16 is_stmt 0 view .LVU515 + 1427 00d2 0320 movs r0, #3 + 1428 00d4 A6E7 b .L80 + 1429 .L90: + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1430 .loc 1 705 3 is_stmt 1 view .LVU516 + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1431 .loc 1 705 10 is_stmt 0 view .LVU517 + 1432 00d6 636D ldr r3, [r4, #84] + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1433 .loc 1 705 5 view .LVU518 + 1434 00d8 1BB1 cbz r3, .L92 + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1435 .loc 1 707 5 is_stmt 1 view .LVU519 + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1436 .loc 1 707 13 is_stmt 0 view .LVU520 + 1437 00da 636D ldr r3, [r4, #84] + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1438 .loc 1 707 7 view .LVU521 + 1439 00dc 13F0010F tst r3, #1 + 1440 00e0 0ED1 bne .L96 + 1441 .L92: + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1442 .loc 1 725 3 is_stmt 1 view .LVU522 + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1443 .loc 1 725 5 is_stmt 0 view .LVU523 + 1444 00e2 B8F1000F cmp r8, #0 + 1445 00e6 19D1 bne .L93 + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1446 .loc 1 728 5 is_stmt 1 view .LVU524 + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1447 .loc 1 728 63 is_stmt 0 view .LVU525 + 1448 00e8 E26D ldr r2, [r4, #92] + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + ARM GAS /tmp/ccRPwCnE.s page 57 + + + 1449 .loc 1 728 56 view .LVU526 + 1450 00ea 3023 movs r3, #48 + 1451 00ec 9340 lsls r3, r3, r2 + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1452 .loc 1 728 16 view .LVU527 + 1453 00ee BB60 str r3, [r7, #8] + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1454 .loc 1 730 5 is_stmt 1 view .LVU528 + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1455 .loc 1 730 17 is_stmt 0 view .LVU529 + 1456 00f0 0123 movs r3, #1 + 1457 00f2 84F83530 strb r3, [r4, #53] + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1458 .loc 1 733 5 is_stmt 1 view .LVU530 + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1459 .loc 1 733 5 view .LVU531 + 1460 00f6 0023 movs r3, #0 + 1461 00f8 84F83430 strb r3, [r4, #52] + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1462 .loc 1 733 5 view .LVU532 + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1463 .loc 1 742 10 is_stmt 0 view .LVU533 + 1464 00fc 4046 mov r0, r8 + 1465 00fe 91E7 b .L80 + 1466 .L96: + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1467 .loc 1 709 7 is_stmt 1 view .LVU534 + 1468 0100 2046 mov r0, r4 + 1469 0102 FFF7FEFF bl HAL_DMA_Abort + 1470 .LVL122: + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1471 .loc 1 712 7 view .LVU535 + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1472 .loc 1 712 65 is_stmt 0 view .LVU536 + 1473 0106 E26D ldr r2, [r4, #92] + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1474 .loc 1 712 58 view .LVU537 + 1475 0108 3023 movs r3, #48 + 1476 010a 9340 lsls r3, r3, r2 + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1477 .loc 1 712 18 view .LVU538 + 1478 010c BB60 str r3, [r7, #8] + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1479 .loc 1 715 7 is_stmt 1 view .LVU539 + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1480 .loc 1 715 18 is_stmt 0 view .LVU540 + 1481 010e 0120 movs r0, #1 + 1482 0110 84F83500 strb r0, [r4, #53] + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1483 .loc 1 718 7 is_stmt 1 view .LVU541 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1484 .loc 1 718 7 view .LVU542 + 1485 0114 0023 movs r3, #0 + 1486 0116 84F83430 strb r3, [r4, #52] + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1487 .loc 1 718 7 view .LVU543 + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + ARM GAS /tmp/ccRPwCnE.s page 58 + + + 1488 .loc 1 720 7 view .LVU544 + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1489 .loc 1 720 14 is_stmt 0 view .LVU545 + 1490 011a 83E7 b .L80 + 1491 .L93: + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1492 .loc 1 739 5 is_stmt 1 view .LVU546 + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1493 .loc 1 739 44 is_stmt 0 view .LVU547 + 1494 011c E26D ldr r2, [r4, #92] + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1495 .loc 1 739 37 view .LVU548 + 1496 011e 1023 movs r3, #16 + 1497 0120 9340 lsls r3, r3, r2 + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1498 .loc 1 739 16 view .LVU549 + 1499 0122 BB60 str r3, [r7, #8] + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1500 .loc 1 742 10 view .LVU550 + 1501 0124 0020 movs r0, #0 + 1502 0126 7DE7 b .L80 + 1503 .cfi_endproc + 1504 .LFE147: + 1506 .section .text.HAL_DMA_IRQHandler,"ax",%progbits + 1507 .align 1 + 1508 .global HAL_DMA_IRQHandler + 1509 .syntax unified + 1510 .thumb + 1511 .thumb_func + 1512 .fpu fpv5-d16 + 1514 HAL_DMA_IRQHandler: + 1515 .LVL123: + 1516 .LFB148: + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmpisr; + 1517 .loc 1 752 1 is_stmt 1 view -0 + 1518 .cfi_startproc + 1519 @ args = 0, pretend = 0, frame = 8 + 1520 @ frame_needed = 0, uses_anonymous_args = 0 + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t tmpisr; + 1521 .loc 1 752 1 is_stmt 0 view .LVU552 + 1522 0000 F0B5 push {r4, r5, r6, r7, lr} + 1523 .LCFI13: + 1524 .cfi_def_cfa_offset 20 + 1525 .cfi_offset 4, -20 + 1526 .cfi_offset 5, -16 + 1527 .cfi_offset 6, -12 + 1528 .cfi_offset 7, -8 + 1529 .cfi_offset 14, -4 + 1530 0002 83B0 sub sp, sp, #12 + 1531 .LCFI14: + 1532 .cfi_def_cfa_offset 32 + 1533 0004 0446 mov r4, r0 + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** __IO uint32_t count = 0; + 1534 .loc 1 753 3 is_stmt 1 view .LVU553 + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t timeout = SystemCoreClock / 9600; + 1535 .loc 1 754 3 view .LVU554 + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** uint32_t timeout = SystemCoreClock / 9600; + ARM GAS /tmp/ccRPwCnE.s page 59 + + + 1536 .loc 1 754 17 is_stmt 0 view .LVU555 + 1537 0006 0023 movs r3, #0 + 1538 0008 0193 str r3, [sp, #4] + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1539 .loc 1 755 3 is_stmt 1 view .LVU556 + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1540 .loc 1 755 38 is_stmt 0 view .LVU557 + 1541 000a 724B ldr r3, .L120 + 1542 000c 1D68 ldr r5, [r3] + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1543 .loc 1 755 12 view .LVU558 + 1544 000e 724B ldr r3, .L120+4 + 1545 0010 A3FB0535 umull r3, r5, r3, r5 + 1546 0014 AD0A lsrs r5, r5, #10 + 1547 .LVL124: + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1548 .loc 1 758 3 is_stmt 1 view .LVU559 + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1549 .loc 1 758 56 is_stmt 0 view .LVU560 + 1550 0016 876D ldr r7, [r0, #88] + 1551 .LVL125: + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1552 .loc 1 760 3 is_stmt 1 view .LVU561 + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1553 .loc 1 760 10 is_stmt 0 view .LVU562 + 1554 0018 3E68 ldr r6, [r7] + 1555 .LVL126: + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1556 .loc 1 763 3 is_stmt 1 view .LVU563 + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1557 .loc 1 763 42 is_stmt 0 view .LVU564 + 1558 001a C26D ldr r2, [r0, #92] + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1559 .loc 1 763 35 view .LVU565 + 1560 001c 0823 movs r3, #8 + 1561 001e 9340 lsls r3, r3, r2 + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1562 .loc 1 763 6 view .LVU566 + 1563 0020 3342 tst r3, r6 + 1564 0022 10D0 beq .L98 + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1565 .loc 1 765 5 is_stmt 1 view .LVU567 + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1566 .loc 1 765 8 is_stmt 0 view .LVU568 + 1567 0024 0368 ldr r3, [r0] + 1568 0026 1A68 ldr r2, [r3] + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1569 .loc 1 765 7 view .LVU569 + 1570 0028 12F0040F tst r2, #4 + 1571 002c 0BD0 beq .L98 + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1572 .loc 1 768 7 is_stmt 1 view .LVU570 + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1573 .loc 1 768 27 is_stmt 0 view .LVU571 + 1574 002e 1A68 ldr r2, [r3] + 1575 0030 22F00402 bic r2, r2, #4 + 1576 0034 1A60 str r2, [r3] + ARM GAS /tmp/ccRPwCnE.s page 60 + + + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1577 .loc 1 771 7 is_stmt 1 view .LVU572 + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1578 .loc 1 771 44 is_stmt 0 view .LVU573 + 1579 0036 C26D ldr r2, [r0, #92] + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1580 .loc 1 771 37 view .LVU574 + 1581 0038 0823 movs r3, #8 + 1582 003a 9340 lsls r3, r3, r2 + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1583 .loc 1 771 18 view .LVU575 + 1584 003c BB60 str r3, [r7, #8] + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1585 .loc 1 774 7 is_stmt 1 view .LVU576 + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1586 .loc 1 774 23 is_stmt 0 view .LVU577 + 1587 003e 436D ldr r3, [r0, #84] + 1588 0040 43F00103 orr r3, r3, #1 + 1589 0044 4365 str r3, [r0, #84] + 1590 .L98: + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1591 .loc 1 778 3 is_stmt 1 view .LVU578 + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1592 .loc 1 778 42 is_stmt 0 view .LVU579 + 1593 0046 E26D ldr r2, [r4, #92] + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1594 .loc 1 778 35 view .LVU580 + 1595 0048 0123 movs r3, #1 + 1596 004a 9340 lsls r3, r3, r2 + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1597 .loc 1 778 6 view .LVU581 + 1598 004c 3342 tst r3, r6 + 1599 004e 09D0 beq .L99 + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1600 .loc 1 780 5 is_stmt 1 view .LVU582 + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1601 .loc 1 780 8 is_stmt 0 view .LVU583 + 1602 0050 2268 ldr r2, [r4] + 1603 0052 5269 ldr r2, [r2, #20] + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1604 .loc 1 780 7 view .LVU584 + 1605 0054 12F0800F tst r2, #128 + 1606 0058 04D0 beq .L99 + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1607 .loc 1 783 7 is_stmt 1 view .LVU585 + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1608 .loc 1 783 18 is_stmt 0 view .LVU586 + 1609 005a BB60 str r3, [r7, #8] + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1610 .loc 1 786 7 is_stmt 1 view .LVU587 + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1611 .loc 1 786 23 is_stmt 0 view .LVU588 + 1612 005c 636D ldr r3, [r4, #84] + 1613 005e 43F00203 orr r3, r3, #2 + 1614 0062 6365 str r3, [r4, #84] + 1615 .L99: + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + ARM GAS /tmp/ccRPwCnE.s page 61 + + + 1616 .loc 1 790 3 is_stmt 1 view .LVU589 + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1617 .loc 1 790 43 is_stmt 0 view .LVU590 + 1618 0064 E26D ldr r2, [r4, #92] + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1619 .loc 1 790 36 view .LVU591 + 1620 0066 0423 movs r3, #4 + 1621 0068 9340 lsls r3, r3, r2 + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1622 .loc 1 790 6 view .LVU592 + 1623 006a 3342 tst r3, r6 + 1624 006c 09D0 beq .L100 + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1625 .loc 1 792 5 is_stmt 1 view .LVU593 + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1626 .loc 1 792 8 is_stmt 0 view .LVU594 + 1627 006e 2268 ldr r2, [r4] + 1628 0070 1268 ldr r2, [r2] + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1629 .loc 1 792 7 view .LVU595 + 1630 0072 12F0020F tst r2, #2 + 1631 0076 04D0 beq .L100 + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1632 .loc 1 795 7 is_stmt 1 view .LVU596 + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1633 .loc 1 795 18 is_stmt 0 view .LVU597 + 1634 0078 BB60 str r3, [r7, #8] + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1635 .loc 1 798 7 is_stmt 1 view .LVU598 + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1636 .loc 1 798 23 is_stmt 0 view .LVU599 + 1637 007a 636D ldr r3, [r4, #84] + 1638 007c 43F00403 orr r3, r3, #4 + 1639 0080 6365 str r3, [r4, #84] + 1640 .L100: + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1641 .loc 1 802 3 is_stmt 1 view .LVU600 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1642 .loc 1 802 42 is_stmt 0 view .LVU601 + 1643 0082 E26D ldr r2, [r4, #92] + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1644 .loc 1 802 35 view .LVU602 + 1645 0084 1023 movs r3, #16 + 1646 0086 9340 lsls r3, r3, r2 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1647 .loc 1 802 6 view .LVU603 + 1648 0088 3342 tst r3, r6 + 1649 008a 24D0 beq .L101 + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1650 .loc 1 804 5 is_stmt 1 view .LVU604 + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1651 .loc 1 804 8 is_stmt 0 view .LVU605 + 1652 008c 2268 ldr r2, [r4] + 1653 008e 1268 ldr r2, [r2] + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1654 .loc 1 804 7 view .LVU606 + 1655 0090 12F0080F tst r2, #8 + ARM GAS /tmp/ccRPwCnE.s page 62 + + + 1656 0094 1FD0 beq .L101 + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1657 .loc 1 807 7 is_stmt 1 view .LVU607 + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1658 .loc 1 807 18 is_stmt 0 view .LVU608 + 1659 0096 BB60 str r3, [r7, #8] + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1660 .loc 1 810 7 is_stmt 1 view .LVU609 + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1661 .loc 1 810 16 is_stmt 0 view .LVU610 + 1662 0098 2368 ldr r3, [r4] + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1663 .loc 1 810 26 view .LVU611 + 1664 009a 1A68 ldr r2, [r3] + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1665 .loc 1 810 9 view .LVU612 + 1666 009c 12F4802F tst r2, #262144 + 1667 00a0 0DD0 beq .L102 + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1668 .loc 1 813 9 is_stmt 1 view .LVU613 + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1669 .loc 1 813 27 is_stmt 0 view .LVU614 + 1670 00a2 1B68 ldr r3, [r3] + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1671 .loc 1 813 11 view .LVU615 + 1672 00a4 13F4002F tst r3, #524288 + 1673 00a8 04D1 bne .L103 + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1674 .loc 1 815 11 is_stmt 1 view .LVU616 + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1675 .loc 1 815 18 is_stmt 0 view .LVU617 + 1676 00aa 236C ldr r3, [r4, #64] + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1677 .loc 1 815 13 view .LVU618 + 1678 00ac 9BB1 cbz r3, .L101 + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1679 .loc 1 818 13 is_stmt 1 view .LVU619 + 1680 00ae 2046 mov r0, r4 + 1681 .LVL127: + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1682 .loc 1 818 13 is_stmt 0 view .LVU620 + 1683 00b0 9847 blx r3 + 1684 .LVL128: + 1685 00b2 10E0 b .L101 + 1686 .LVL129: + 1687 .L103: + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1688 .loc 1 824 11 is_stmt 1 view .LVU621 + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1689 .loc 1 824 18 is_stmt 0 view .LVU622 + 1690 00b4 A36C ldr r3, [r4, #72] + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1691 .loc 1 824 13 view .LVU623 + 1692 00b6 73B1 cbz r3, .L101 + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1693 .loc 1 827 13 is_stmt 1 view .LVU624 + 1694 00b8 2046 mov r0, r4 + ARM GAS /tmp/ccRPwCnE.s page 63 + + + 1695 .LVL130: + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1696 .loc 1 827 13 is_stmt 0 view .LVU625 + 1697 00ba 9847 blx r3 + 1698 .LVL131: + 1699 00bc 0BE0 b .L101 + 1700 .LVL132: + 1701 .L102: + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1702 .loc 1 834 9 is_stmt 1 view .LVU626 + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1703 .loc 1 834 27 is_stmt 0 view .LVU627 + 1704 00be 1A68 ldr r2, [r3] + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1705 .loc 1 834 11 view .LVU628 + 1706 00c0 12F4807F tst r2, #256 + 1707 00c4 03D1 bne .L104 + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1708 .loc 1 837 11 is_stmt 1 view .LVU629 + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1709 .loc 1 837 31 is_stmt 0 view .LVU630 + 1710 00c6 1A68 ldr r2, [r3] + 1711 00c8 22F00802 bic r2, r2, #8 + 1712 00cc 1A60 str r2, [r3] + 1713 .L104: + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1714 .loc 1 840 9 is_stmt 1 view .LVU631 + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1715 .loc 1 840 16 is_stmt 0 view .LVU632 + 1716 00ce 236C ldr r3, [r4, #64] + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1717 .loc 1 840 11 view .LVU633 + 1718 00d0 0BB1 cbz r3, .L101 + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1719 .loc 1 843 11 is_stmt 1 view .LVU634 + 1720 00d2 2046 mov r0, r4 + 1721 .LVL133: + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1722 .loc 1 843 11 is_stmt 0 view .LVU635 + 1723 00d4 9847 blx r3 + 1724 .LVL134: + 1725 .L101: + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1726 .loc 1 849 3 is_stmt 1 view .LVU636 + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1727 .loc 1 849 42 is_stmt 0 view .LVU637 + 1728 00d6 E26D ldr r2, [r4, #92] + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1729 .loc 1 849 35 view .LVU638 + 1730 00d8 2023 movs r3, #32 + 1731 00da 9340 lsls r3, r3, r2 + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1732 .loc 1 849 6 view .LVU639 + 1733 00dc 3342 tst r3, r6 + 1734 00de 55D0 beq .L105 + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1735 .loc 1 851 5 is_stmt 1 view .LVU640 + ARM GAS /tmp/ccRPwCnE.s page 64 + + + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1736 .loc 1 851 8 is_stmt 0 view .LVU641 + 1737 00e0 2268 ldr r2, [r4] + 1738 00e2 1268 ldr r2, [r2] + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1739 .loc 1 851 7 view .LVU642 + 1740 00e4 12F0100F tst r2, #16 + 1741 00e8 50D0 beq .L105 + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1742 .loc 1 854 7 is_stmt 1 view .LVU643 + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1743 .loc 1 854 18 is_stmt 0 view .LVU644 + 1744 00ea BB60 str r3, [r7, #8] + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1745 .loc 1 856 7 is_stmt 1 view .LVU645 + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1746 .loc 1 856 37 is_stmt 0 view .LVU646 + 1747 00ec 94F83530 ldrb r3, [r4, #53] @ zero_extendqisi2 + 1748 00f0 DBB2 uxtb r3, r3 + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1749 .loc 1 856 9 view .LVU647 + 1750 00f2 052B cmp r3, #5 + 1751 00f4 0ED0 beq .L118 + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1752 .loc 1 883 7 is_stmt 1 view .LVU648 + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1753 .loc 1 883 16 is_stmt 0 view .LVU649 + 1754 00f6 2368 ldr r3, [r4] + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1755 .loc 1 883 26 view .LVU650 + 1756 00f8 1A68 ldr r2, [r3] + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1757 .loc 1 883 9 view .LVU651 + 1758 00fa 12F4802F tst r2, #262144 + 1759 00fe 33D0 beq .L111 + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1760 .loc 1 886 9 is_stmt 1 view .LVU652 + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1761 .loc 1 886 27 is_stmt 0 view .LVU653 + 1762 0100 1B68 ldr r3, [r3] + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1763 .loc 1 886 11 view .LVU654 + 1764 0102 13F4002F tst r3, #524288 + 1765 0106 2AD1 bne .L112 + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1766 .loc 1 888 11 is_stmt 1 view .LVU655 + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1767 .loc 1 888 18 is_stmt 0 view .LVU656 + 1768 0108 636C ldr r3, [r4, #68] + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1769 .loc 1 888 13 view .LVU657 + 1770 010a 002B cmp r3, #0 + 1771 010c 3ED0 beq .L105 + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1772 .loc 1 891 13 is_stmt 1 view .LVU658 + 1773 010e 2046 mov r0, r4 + 1774 0110 9847 blx r3 + ARM GAS /tmp/ccRPwCnE.s page 65 + + + 1775 .LVL135: + 1776 0112 3BE0 b .L105 + 1777 .L118: + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR &= ~(DMA_IT_FE); + 1778 .loc 1 859 9 view .LVU659 + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR &= ~(DMA_IT_FE); + 1779 .loc 1 859 13 is_stmt 0 view .LVU660 + 1780 0114 2268 ldr r2, [r4] + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->Instance->FCR &= ~(DMA_IT_FE); + 1781 .loc 1 859 29 view .LVU661 + 1782 0116 1368 ldr r3, [r2] + 1783 0118 23F01603 bic r3, r3, #22 + 1784 011c 1360 str r3, [r2] + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1785 .loc 1 860 9 is_stmt 1 view .LVU662 + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1786 .loc 1 860 13 is_stmt 0 view .LVU663 + 1787 011e 2268 ldr r2, [r4] + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1788 .loc 1 860 29 view .LVU664 + 1789 0120 5369 ldr r3, [r2, #20] + 1790 0122 23F08003 bic r3, r3, #128 + 1791 0126 5361 str r3, [r2, #20] + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1792 .loc 1 862 9 is_stmt 1 view .LVU665 + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1793 .loc 1 862 17 is_stmt 0 view .LVU666 + 1794 0128 236C ldr r3, [r4, #64] + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1795 .loc 1 862 11 view .LVU667 + 1796 012a A3B1 cbz r3, .L119 + 1797 .L107: + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1798 .loc 1 864 11 is_stmt 1 view .LVU668 + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1799 .loc 1 864 15 is_stmt 0 view .LVU669 + 1800 012c 2268 ldr r2, [r4] + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1801 .loc 1 864 31 view .LVU670 + 1802 012e 1368 ldr r3, [r2] + 1803 0130 23F00803 bic r3, r3, #8 + 1804 0134 1360 str r3, [r2] + 1805 .L108: + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1806 .loc 1 868 9 is_stmt 1 view .LVU671 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1807 .loc 1 868 35 is_stmt 0 view .LVU672 + 1808 0136 E26D ldr r2, [r4, #92] + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1809 .loc 1 868 28 view .LVU673 + 1810 0138 3F23 movs r3, #63 + 1811 013a 9340 lsls r3, r3, r2 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1812 .loc 1 868 20 view .LVU674 + 1813 013c BB60 str r3, [r7, #8] + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1814 .loc 1 871 9 is_stmt 1 view .LVU675 + ARM GAS /tmp/ccRPwCnE.s page 66 + + + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1815 .loc 1 871 21 is_stmt 0 view .LVU676 + 1816 013e 0123 movs r3, #1 + 1817 0140 84F83530 strb r3, [r4, #53] + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1818 .loc 1 874 9 is_stmt 1 view .LVU677 + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1819 .loc 1 874 9 view .LVU678 + 1820 0144 0023 movs r3, #0 + 1821 0146 84F83430 strb r3, [r4, #52] + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1822 .loc 1 874 9 view .LVU679 + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1823 .loc 1 876 9 view .LVU680 + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1824 .loc 1 876 16 is_stmt 0 view .LVU681 + 1825 014a 236D ldr r3, [r4, #80] + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1826 .loc 1 876 11 view .LVU682 + 1827 014c 002B cmp r3, #0 + 1828 014e 3FD0 beq .L97 + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1829 .loc 1 878 11 is_stmt 1 view .LVU683 + 1830 0150 2046 mov r0, r4 + 1831 0152 9847 blx r3 + 1832 .LVL136: + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1833 .loc 1 880 9 view .LVU684 + 1834 0154 3CE0 b .L97 + 1835 .L119: + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1836 .loc 1 862 57 is_stmt 0 discriminator 1 view .LVU685 + 1837 0156 A36C ldr r3, [r4, #72] + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1838 .loc 1 862 49 discriminator 1 view .LVU686 + 1839 0158 002B cmp r3, #0 + 1840 015a E7D1 bne .L107 + 1841 015c EBE7 b .L108 + 1842 .L112: + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1843 .loc 1 897 11 is_stmt 1 view .LVU687 + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1844 .loc 1 897 18 is_stmt 0 view .LVU688 + 1845 015e E36B ldr r3, [r4, #60] + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1846 .loc 1 897 13 view .LVU689 + 1847 0160 A3B1 cbz r3, .L105 + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1848 .loc 1 900 13 is_stmt 1 view .LVU690 + 1849 0162 2046 mov r0, r4 + 1850 0164 9847 blx r3 + 1851 .LVL137: + 1852 0166 11E0 b .L105 + 1853 .L111: + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1854 .loc 1 907 9 view .LVU691 + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + ARM GAS /tmp/ccRPwCnE.s page 67 + + + 1855 .loc 1 907 27 is_stmt 0 view .LVU692 + 1856 0168 1A68 ldr r2, [r3] + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1857 .loc 1 907 11 view .LVU693 + 1858 016a 12F4807F tst r2, #256 + 1859 016e 09D1 bne .L113 + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1860 .loc 1 910 11 is_stmt 1 view .LVU694 + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1861 .loc 1 910 31 is_stmt 0 view .LVU695 + 1862 0170 1A68 ldr r2, [r3] + 1863 0172 22F01002 bic r2, r2, #16 + 1864 0176 1A60 str r2, [r3] + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1865 .loc 1 913 11 is_stmt 1 view .LVU696 + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1866 .loc 1 913 23 is_stmt 0 view .LVU697 + 1867 0178 0123 movs r3, #1 + 1868 017a 84F83530 strb r3, [r4, #53] + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1869 .loc 1 916 11 is_stmt 1 view .LVU698 + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1870 .loc 1 916 11 view .LVU699 + 1871 017e 0023 movs r3, #0 + 1872 0180 84F83430 strb r3, [r4, #52] + 1873 .L113: + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1874 .loc 1 916 11 discriminator 1 view .LVU700 + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1875 .loc 1 920 9 discriminator 1 view .LVU701 + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1876 .loc 1 920 16 is_stmt 0 discriminator 1 view .LVU702 + 1877 0184 E36B ldr r3, [r4, #60] + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1878 .loc 1 920 11 discriminator 1 view .LVU703 + 1879 0186 0BB1 cbz r3, .L105 + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1880 .loc 1 923 11 is_stmt 1 view .LVU704 + 1881 0188 2046 mov r0, r4 + 1882 018a 9847 blx r3 + 1883 .LVL138: + 1884 .L105: + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1885 .loc 1 930 3 view .LVU705 + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1886 .loc 1 930 10 is_stmt 0 view .LVU706 + 1887 018c 636D ldr r3, [r4, #84] + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1888 .loc 1 930 5 view .LVU707 + 1889 018e FBB1 cbz r3, .L97 + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1890 .loc 1 932 5 is_stmt 1 view .LVU708 + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1891 .loc 1 932 13 is_stmt 0 view .LVU709 + 1892 0190 636D ldr r3, [r4, #84] + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1893 .loc 1 932 7 view .LVU710 + ARM GAS /tmp/ccRPwCnE.s page 68 + + + 1894 0192 13F0010F tst r3, #1 + 1895 0196 17D0 beq .L114 + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1896 .loc 1 934 7 is_stmt 1 view .LVU711 + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1897 .loc 1 934 19 is_stmt 0 view .LVU712 + 1898 0198 0523 movs r3, #5 + 1899 019a 84F83530 strb r3, [r4, #53] + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1900 .loc 1 937 7 is_stmt 1 view .LVU713 + 1901 019e 2268 ldr r2, [r4] + 1902 01a0 1368 ldr r3, [r2] + 1903 01a2 23F00103 bic r3, r3, #1 + 1904 01a6 1360 str r3, [r2] + 1905 .L116: + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1906 .loc 1 939 7 view .LVU714 + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1907 .loc 1 941 9 view .LVU715 + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1908 .loc 1 941 13 is_stmt 0 view .LVU716 + 1909 01a8 019B ldr r3, [sp, #4] + 1910 01aa 0133 adds r3, r3, #1 + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1911 .loc 1 941 12 view .LVU717 + 1912 01ac 0193 str r3, [sp, #4] + 1913 01ae AB42 cmp r3, r5 + 1914 01b0 04D8 bhi .L115 + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1915 .loc 1 946 12 is_stmt 1 view .LVU718 + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1916 .loc 1 946 18 is_stmt 0 view .LVU719 + 1917 01b2 2368 ldr r3, [r4] + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1918 .loc 1 946 28 view .LVU720 + 1919 01b4 1B68 ldr r3, [r3] + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1920 .loc 1 946 7 view .LVU721 + 1921 01b6 13F0010F tst r3, #1 + 1922 01ba F5D1 bne .L116 + 1923 .L115: + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1924 .loc 1 949 7 is_stmt 1 view .LVU722 + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1925 .loc 1 949 19 is_stmt 0 view .LVU723 + 1926 01bc 0123 movs r3, #1 + 1927 01be 84F83530 strb r3, [r4, #53] + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1928 .loc 1 952 7 is_stmt 1 view .LVU724 + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1929 .loc 1 952 7 view .LVU725 + 1930 01c2 0023 movs r3, #0 + 1931 01c4 84F83430 strb r3, [r4, #52] + 1932 .L114: + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1933 .loc 1 952 7 discriminator 1 view .LVU726 + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + ARM GAS /tmp/ccRPwCnE.s page 69 + + + 1934 .loc 1 956 5 discriminator 1 view .LVU727 + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1935 .loc 1 956 12 is_stmt 0 discriminator 1 view .LVU728 + 1936 01c8 E36C ldr r3, [r4, #76] + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1937 .loc 1 956 7 discriminator 1 view .LVU729 + 1938 01ca 0BB1 cbz r3, .L97 + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1939 .loc 1 959 7 is_stmt 1 view .LVU730 + 1940 01cc 2046 mov r0, r4 + 1941 01ce 9847 blx r3 + 1942 .LVL139: + 1943 .L97: + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1944 .loc 1 962 1 is_stmt 0 view .LVU731 + 1945 01d0 03B0 add sp, sp, #12 + 1946 .LCFI15: + 1947 .cfi_def_cfa_offset 20 + 1948 @ sp needed + 1949 01d2 F0BD pop {r4, r5, r6, r7, pc} + 1950 .LVL140: + 1951 .L121: + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1952 .loc 1 962 1 view .LVU732 + 1953 .align 2 + 1954 .L120: + 1955 01d4 00000000 .word SystemCoreClock + 1956 01d8 B5814E1B .word 458129845 + 1957 .cfi_endproc + 1958 .LFE148: + 1960 .section .text.HAL_DMA_RegisterCallback,"ax",%progbits + 1961 .align 1 + 1962 .global HAL_DMA_RegisterCallback + 1963 .syntax unified + 1964 .thumb + 1965 .thumb_func + 1966 .fpu fpv5-d16 + 1968 HAL_DMA_RegisterCallback: + 1969 .LVL141: + 1970 .LFB149: + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1971 .loc 1 975 1 is_stmt 1 view -0 + 1972 .cfi_startproc + 1973 @ args = 0, pretend = 0, frame = 0 + 1974 @ frame_needed = 0, uses_anonymous_args = 0 + 1975 @ link register save eliminated. + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1976 .loc 1 975 1 is_stmt 0 view .LVU734 + 1977 0000 0346 mov r3, r0 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1978 .loc 1 977 3 is_stmt 1 view .LVU735 + 1979 .LVL142: + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1980 .loc 1 980 3 view .LVU736 + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1981 .loc 1 980 3 view .LVU737 + 1982 0002 90F83400 ldrb r0, [r0, #52] @ zero_extendqisi2 + ARM GAS /tmp/ccRPwCnE.s page 70 + + + 1983 .LVL143: + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1984 .loc 1 980 3 is_stmt 0 view .LVU738 + 1985 0006 0128 cmp r0, #1 + 1986 0008 25D0 beq .L132 + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1987 .loc 1 980 3 is_stmt 1 discriminator 2 view .LVU739 + 1988 000a 0120 movs r0, #1 + 1989 000c 83F83400 strb r0, [r3, #52] + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 1990 .loc 1 980 3 discriminator 2 view .LVU740 + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1991 .loc 1 982 3 discriminator 2 view .LVU741 + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1992 .loc 1 982 33 is_stmt 0 discriminator 2 view .LVU742 + 1993 0010 93F83500 ldrb r0, [r3, #53] @ zero_extendqisi2 + 1994 0014 C0B2 uxtb r0, r0 + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 1995 .loc 1 982 5 discriminator 2 view .LVU743 + 1996 0016 0128 cmp r0, #1 + 1997 0018 04D0 beq .L134 +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 1998 .loc 1 1019 12 view .LVU744 + 1999 001a 0120 movs r0, #1 + 2000 .L124: + 2001 .LVL144: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2002 .loc 1 1023 3 is_stmt 1 view .LVU745 +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2003 .loc 1 1023 3 view .LVU746 + 2004 001c 0022 movs r2, #0 + 2005 .LVL145: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2006 .loc 1 1023 3 is_stmt 0 view .LVU747 + 2007 001e 83F83420 strb r2, [r3, #52] +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2008 .loc 1 1023 3 is_stmt 1 view .LVU748 +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 2009 .loc 1 1025 3 view .LVU749 +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 2010 .loc 1 1025 10 is_stmt 0 view .LVU750 + 2011 0022 7047 bx lr + 2012 .LVL146: + 2013 .L134: + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 2014 .loc 1 984 5 is_stmt 1 view .LVU751 + 2015 0024 0529 cmp r1, #5 + 2016 0026 F9D8 bhi .L124 + 2017 0028 DFE801F0 tbb [pc, r1] + 2018 .L126: + 2019 002c 03 .byte (.L131-.L126)/2 + 2020 002d 06 .byte (.L130-.L126)/2 + 2021 002e 09 .byte (.L129-.L126)/2 + 2022 002f 0C .byte (.L128-.L126)/2 + 2023 0030 0F .byte (.L127-.L126)/2 + 2024 0031 12 .byte (.L125-.L126)/2 + 2025 .p2align 1 + ARM GAS /tmp/ccRPwCnE.s page 71 + + + 2026 .L131: + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2027 .loc 1 987 7 view .LVU752 + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2028 .loc 1 987 30 is_stmt 0 view .LVU753 + 2029 0032 DA63 str r2, [r3, #60] + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2030 .loc 1 988 7 is_stmt 1 view .LVU754 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2031 .loc 1 977 21 is_stmt 0 view .LVU755 + 2032 0034 0846 mov r0, r1 + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2033 .loc 1 988 7 view .LVU756 + 2034 0036 F1E7 b .L124 + 2035 .L130: + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2036 .loc 1 991 7 is_stmt 1 view .LVU757 + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2037 .loc 1 991 34 is_stmt 0 view .LVU758 + 2038 0038 1A64 str r2, [r3, #64] + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2039 .loc 1 992 7 is_stmt 1 view .LVU759 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2040 .loc 1 977 21 is_stmt 0 view .LVU760 + 2041 003a 0020 movs r0, #0 + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2042 .loc 1 992 7 view .LVU761 + 2043 003c EEE7 b .L124 + 2044 .L129: + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2045 .loc 1 995 7 is_stmt 1 view .LVU762 + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2046 .loc 1 995 32 is_stmt 0 view .LVU763 + 2047 003e 5A64 str r2, [r3, #68] + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2048 .loc 1 996 7 is_stmt 1 view .LVU764 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2049 .loc 1 977 21 is_stmt 0 view .LVU765 + 2050 0040 0020 movs r0, #0 + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2051 .loc 1 996 7 view .LVU766 + 2052 0042 EBE7 b .L124 + 2053 .L128: + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2054 .loc 1 999 7 is_stmt 1 view .LVU767 + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2055 .loc 1 999 36 is_stmt 0 view .LVU768 + 2056 0044 9A64 str r2, [r3, #72] +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2057 .loc 1 1000 7 is_stmt 1 view .LVU769 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2058 .loc 1 977 21 is_stmt 0 view .LVU770 + 2059 0046 0020 movs r0, #0 +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2060 .loc 1 1000 7 view .LVU771 + 2061 0048 E8E7 b .L124 + 2062 .L127: + ARM GAS /tmp/ccRPwCnE.s page 72 + + +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2063 .loc 1 1003 7 is_stmt 1 view .LVU772 +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2064 .loc 1 1003 31 is_stmt 0 view .LVU773 + 2065 004a DA64 str r2, [r3, #76] +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2066 .loc 1 1004 7 is_stmt 1 view .LVU774 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2067 .loc 1 977 21 is_stmt 0 view .LVU775 + 2068 004c 0020 movs r0, #0 +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2069 .loc 1 1004 7 view .LVU776 + 2070 004e E5E7 b .L124 + 2071 .L125: +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2072 .loc 1 1007 7 is_stmt 1 view .LVU777 +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2073 .loc 1 1007 31 is_stmt 0 view .LVU778 + 2074 0050 1A65 str r2, [r3, #80] +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2075 .loc 1 1008 7 is_stmt 1 view .LVU779 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2076 .loc 1 977 21 is_stmt 0 view .LVU780 + 2077 0052 0020 movs r0, #0 +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2078 .loc 1 1008 7 view .LVU781 + 2079 0054 E2E7 b .L124 + 2080 .L132: + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2081 .loc 1 980 3 view .LVU782 + 2082 0056 0220 movs r0, #2 +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2083 .loc 1 1026 1 view .LVU783 + 2084 0058 7047 bx lr + 2085 .cfi_endproc + 2086 .LFE149: + 2088 .section .text.HAL_DMA_UnRegisterCallback,"ax",%progbits + 2089 .align 1 + 2090 .global HAL_DMA_UnRegisterCallback + 2091 .syntax unified + 2092 .thumb + 2093 .thumb_func + 2094 .fpu fpv5-d16 + 2096 HAL_DMA_UnRegisterCallback: + 2097 .LVL147: + 2098 .LFB150: +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 2099 .loc 1 1037 1 is_stmt 1 view -0 + 2100 .cfi_startproc + 2101 @ args = 0, pretend = 0, frame = 0 + 2102 @ frame_needed = 0, uses_anonymous_args = 0 + 2103 @ link register save eliminated. +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** HAL_StatusTypeDef status = HAL_OK; + 2104 .loc 1 1037 1 is_stmt 0 view .LVU785 + 2105 0000 0346 mov r3, r0 +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2106 .loc 1 1038 3 is_stmt 1 view .LVU786 + ARM GAS /tmp/ccRPwCnE.s page 73 + + + 2107 .LVL148: +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2108 .loc 1 1041 3 view .LVU787 +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2109 .loc 1 1041 3 view .LVU788 + 2110 0002 90F83420 ldrb r2, [r0, #52] @ zero_extendqisi2 + 2111 0006 012A cmp r2, #1 + 2112 0008 2FD0 beq .L146 +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2113 .loc 1 1041 3 discriminator 2 view .LVU789 + 2114 000a 0122 movs r2, #1 + 2115 000c 80F83420 strb r2, [r0, #52] +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2116 .loc 1 1041 3 discriminator 2 view .LVU790 +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 2117 .loc 1 1043 3 discriminator 2 view .LVU791 +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 2118 .loc 1 1043 33 is_stmt 0 discriminator 2 view .LVU792 + 2119 0010 90F83500 ldrb r0, [r0, #53] @ zero_extendqisi2 + 2120 .LVL149: +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 2121 .loc 1 1043 33 discriminator 2 view .LVU793 + 2122 0014 C0B2 uxtb r0, r0 +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 2123 .loc 1 1043 5 discriminator 2 view .LVU794 + 2124 0016 9042 cmp r0, r2 + 2125 0018 04D0 beq .L148 +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 2126 .loc 1 1087 12 view .LVU795 + 2127 001a 0120 movs r0, #1 + 2128 .L137: + 2129 .LVL150: +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2130 .loc 1 1091 3 is_stmt 1 view .LVU796 +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2131 .loc 1 1091 3 view .LVU797 + 2132 001c 0022 movs r2, #0 + 2133 001e 83F83420 strb r2, [r3, #52] +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2134 .loc 1 1091 3 view .LVU798 +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 2135 .loc 1 1093 3 view .LVU799 +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 2136 .loc 1 1093 10 is_stmt 0 view .LVU800 + 2137 0022 7047 bx lr + 2138 .LVL151: + 2139 .L148: +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** { + 2140 .loc 1 1045 5 is_stmt 1 view .LVU801 + 2141 0024 0629 cmp r1, #6 + 2142 0026 F9D8 bhi .L137 + 2143 0028 DFE801F0 tbb [pc, r1] + 2144 .L139: + 2145 002c 04 .byte (.L145-.L139)/2 + 2146 002d 08 .byte (.L144-.L139)/2 + 2147 002e 0B .byte (.L143-.L139)/2 + 2148 002f 0E .byte (.L142-.L139)/2 + ARM GAS /tmp/ccRPwCnE.s page 74 + + + 2149 0030 11 .byte (.L141-.L139)/2 + 2150 0031 14 .byte (.L140-.L139)/2 + 2151 0032 17 .byte (.L138-.L139)/2 + 2152 0033 00 .p2align 1 + 2153 .L145: +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2154 .loc 1 1048 7 view .LVU802 +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2155 .loc 1 1048 30 is_stmt 0 view .LVU803 + 2156 0034 0022 movs r2, #0 + 2157 0036 DA63 str r2, [r3, #60] +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2158 .loc 1 1049 7 is_stmt 1 view .LVU804 +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2159 .loc 1 1038 21 is_stmt 0 view .LVU805 + 2160 0038 0846 mov r0, r1 +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2161 .loc 1 1049 7 view .LVU806 + 2162 003a EFE7 b .L137 + 2163 .L144: +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2164 .loc 1 1052 7 is_stmt 1 view .LVU807 +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2165 .loc 1 1052 34 is_stmt 0 view .LVU808 + 2166 003c 0020 movs r0, #0 + 2167 003e 1864 str r0, [r3, #64] +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2168 .loc 1 1053 7 is_stmt 1 view .LVU809 + 2169 0040 ECE7 b .L137 + 2170 .L143: +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2171 .loc 1 1056 7 view .LVU810 +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2172 .loc 1 1056 32 is_stmt 0 view .LVU811 + 2173 0042 0020 movs r0, #0 + 2174 0044 5864 str r0, [r3, #68] +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2175 .loc 1 1057 7 is_stmt 1 view .LVU812 + 2176 0046 E9E7 b .L137 + 2177 .L142: +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2178 .loc 1 1060 7 view .LVU813 +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2179 .loc 1 1060 36 is_stmt 0 view .LVU814 + 2180 0048 0020 movs r0, #0 + 2181 004a 9864 str r0, [r3, #72] +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2182 .loc 1 1061 7 is_stmt 1 view .LVU815 + 2183 004c E6E7 b .L137 + 2184 .L141: +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2185 .loc 1 1064 7 view .LVU816 +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2186 .loc 1 1064 31 is_stmt 0 view .LVU817 + 2187 004e 0020 movs r0, #0 + 2188 0050 D864 str r0, [r3, #76] +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + ARM GAS /tmp/ccRPwCnE.s page 75 + + + 2189 .loc 1 1065 7 is_stmt 1 view .LVU818 + 2190 0052 E3E7 b .L137 + 2191 .L140: +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2192 .loc 1 1068 7 view .LVU819 +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2193 .loc 1 1068 31 is_stmt 0 view .LVU820 + 2194 0054 0020 movs r0, #0 + 2195 0056 1865 str r0, [r3, #80] +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2196 .loc 1 1069 7 is_stmt 1 view .LVU821 + 2197 0058 E0E7 b .L137 + 2198 .L138: +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferHalfCpltCallback = NULL; + 2199 .loc 1 1072 7 view .LVU822 +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferHalfCpltCallback = NULL; + 2200 .loc 1 1072 30 is_stmt 0 view .LVU823 + 2201 005a 0020 movs r0, #0 + 2202 005c D863 str r0, [r3, #60] +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1CpltCallback = NULL; + 2203 .loc 1 1073 7 is_stmt 1 view .LVU824 +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1CpltCallback = NULL; + 2204 .loc 1 1073 34 is_stmt 0 view .LVU825 + 2205 005e 1864 str r0, [r3, #64] +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1HalfCpltCallback = NULL; + 2206 .loc 1 1074 7 is_stmt 1 view .LVU826 +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferM1HalfCpltCallback = NULL; + 2207 .loc 1 1074 32 is_stmt 0 view .LVU827 + 2208 0060 5864 str r0, [r3, #68] +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferErrorCallback = NULL; + 2209 .loc 1 1075 7 is_stmt 1 view .LVU828 +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferErrorCallback = NULL; + 2210 .loc 1 1075 36 is_stmt 0 view .LVU829 + 2211 0062 9864 str r0, [r3, #72] +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferAbortCallback = NULL; + 2212 .loc 1 1076 7 is_stmt 1 view .LVU830 +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** hdma->XferAbortCallback = NULL; + 2213 .loc 1 1076 31 is_stmt 0 view .LVU831 + 2214 0064 D864 str r0, [r3, #76] +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2215 .loc 1 1077 7 is_stmt 1 view .LVU832 +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** break; + 2216 .loc 1 1077 31 is_stmt 0 view .LVU833 + 2217 0066 1865 str r0, [r3, #80] +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2218 .loc 1 1078 7 is_stmt 1 view .LVU834 + 2219 0068 D8E7 b .L137 + 2220 .LVL152: + 2221 .L146: +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2222 .loc 1 1041 3 is_stmt 0 view .LVU835 + 2223 006a 0220 movs r0, #2 + 2224 .LVL153: +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2225 .loc 1 1094 1 view .LVU836 + 2226 006c 7047 bx lr + 2227 .cfi_endproc + ARM GAS /tmp/ccRPwCnE.s page 76 + + + 2228 .LFE150: + 2230 .section .text.HAL_DMA_GetState,"ax",%progbits + 2231 .align 1 + 2232 .global HAL_DMA_GetState + 2233 .syntax unified + 2234 .thumb + 2235 .thumb_func + 2236 .fpu fpv5-d16 + 2238 HAL_DMA_GetState: + 2239 .LVL154: + 2240 .LFB151: +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return hdma->State; + 2241 .loc 1 1122 1 is_stmt 1 view -0 + 2242 .cfi_startproc + 2243 @ args = 0, pretend = 0, frame = 0 + 2244 @ frame_needed = 0, uses_anonymous_args = 0 + 2245 @ link register save eliminated. +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 2246 .loc 1 1123 3 view .LVU838 +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 2247 .loc 1 1123 14 is_stmt 0 view .LVU839 + 2248 0000 90F83500 ldrb r0, [r0, #53] @ zero_extendqisi2 + 2249 .LVL155: +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2250 .loc 1 1124 1 view .LVU840 + 2251 0004 7047 bx lr + 2252 .cfi_endproc + 2253 .LFE151: + 2255 .section .text.HAL_DMA_GetError,"ax",%progbits + 2256 .align 1 + 2257 .global HAL_DMA_GetError + 2258 .syntax unified + 2259 .thumb + 2260 .thumb_func + 2261 .fpu fpv5-d16 + 2263 HAL_DMA_GetError: + 2264 .LVL156: + 2265 .LFB152: +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** return hdma->ErrorCode; + 2266 .loc 1 1133 1 is_stmt 1 view -0 + 2267 .cfi_startproc + 2268 @ args = 0, pretend = 0, frame = 0 + 2269 @ frame_needed = 0, uses_anonymous_args = 0 + 2270 @ link register save eliminated. +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 2271 .loc 1 1134 3 view .LVU842 +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** } + 2272 .loc 1 1134 14 is_stmt 0 view .LVU843 + 2273 0000 406D ldr r0, [r0, #84] + 2274 .LVL157: +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c **** + 2275 .loc 1 1135 1 view .LVU844 + 2276 0002 7047 bx lr + 2277 .cfi_endproc + 2278 .LFE152: + 2280 .section .rodata.flagBitshiftOffset.0,"a" + 2281 .align 2 + ARM GAS /tmp/ccRPwCnE.s page 77 + + + 2282 .set .LANCHOR0,. + 0 + 2285 flagBitshiftOffset.0: + 2286 0000 00061016 .ascii "\000\006\020\026\000\006\020\026" + 2286 00061016 + 2287 .text + 2288 .Letext0: + 2289 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 2290 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 2291 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 2292 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 2293 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 2294 .file 7 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h" + 2295 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + ARM GAS /tmp/ccRPwCnE.s page 78 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_dma.c + /tmp/ccRPwCnE.s:17 .text.DMA_SetConfig:0000000000000000 $t + /tmp/ccRPwCnE.s:24 .text.DMA_SetConfig:0000000000000000 DMA_SetConfig + /tmp/ccRPwCnE.s:98 .text.DMA_CalcBaseAndBitshift:0000000000000000 $t + /tmp/ccRPwCnE.s:104 .text.DMA_CalcBaseAndBitshift:0000000000000000 DMA_CalcBaseAndBitshift + /tmp/ccRPwCnE.s:175 .text.DMA_CalcBaseAndBitshift:0000000000000034 $d + /tmp/ccRPwCnE.s:182 .text.DMA_CheckFifoParam:0000000000000000 $t + /tmp/ccRPwCnE.s:188 .text.DMA_CheckFifoParam:0000000000000000 DMA_CheckFifoParam + /tmp/ccRPwCnE.s:274 .text.DMA_CheckFifoParam:000000000000004e $d + /tmp/ccRPwCnE.s:278 .text.DMA_CheckFifoParam:0000000000000052 $t + /tmp/ccRPwCnE.s:373 .text.HAL_DMA_Init:0000000000000000 $t + /tmp/ccRPwCnE.s:380 .text.HAL_DMA_Init:0000000000000000 HAL_DMA_Init + /tmp/ccRPwCnE.s:630 .text.HAL_DMA_Init:00000000000000cc $d + /tmp/ccRPwCnE.s:635 .text.HAL_DMA_DeInit:0000000000000000 $t + /tmp/ccRPwCnE.s:642 .text.HAL_DMA_DeInit:0000000000000000 HAL_DMA_DeInit + /tmp/ccRPwCnE.s:775 .text.HAL_DMA_Start:0000000000000000 $t + /tmp/ccRPwCnE.s:782 .text.HAL_DMA_Start:0000000000000000 HAL_DMA_Start + /tmp/ccRPwCnE.s:865 .text.HAL_DMA_Start_IT:0000000000000000 $t + /tmp/ccRPwCnE.s:872 .text.HAL_DMA_Start_IT:0000000000000000 HAL_DMA_Start_IT + /tmp/ccRPwCnE.s:994 .text.HAL_DMA_Abort:0000000000000000 $t + /tmp/ccRPwCnE.s:1001 .text.HAL_DMA_Abort:0000000000000000 HAL_DMA_Abort + /tmp/ccRPwCnE.s:1155 .text.HAL_DMA_Abort_IT:0000000000000000 $t + /tmp/ccRPwCnE.s:1162 .text.HAL_DMA_Abort_IT:0000000000000000 HAL_DMA_Abort_IT + /tmp/ccRPwCnE.s:1208 .text.HAL_DMA_PollForTransfer:0000000000000000 $t + /tmp/ccRPwCnE.s:1215 .text.HAL_DMA_PollForTransfer:0000000000000000 HAL_DMA_PollForTransfer + /tmp/ccRPwCnE.s:1507 .text.HAL_DMA_IRQHandler:0000000000000000 $t + /tmp/ccRPwCnE.s:1514 .text.HAL_DMA_IRQHandler:0000000000000000 HAL_DMA_IRQHandler + /tmp/ccRPwCnE.s:1955 .text.HAL_DMA_IRQHandler:00000000000001d4 $d + /tmp/ccRPwCnE.s:1961 .text.HAL_DMA_RegisterCallback:0000000000000000 $t + /tmp/ccRPwCnE.s:1968 .text.HAL_DMA_RegisterCallback:0000000000000000 HAL_DMA_RegisterCallback + /tmp/ccRPwCnE.s:2019 .text.HAL_DMA_RegisterCallback:000000000000002c $d + /tmp/ccRPwCnE.s:2025 .text.HAL_DMA_RegisterCallback:0000000000000032 $t + /tmp/ccRPwCnE.s:2089 .text.HAL_DMA_UnRegisterCallback:0000000000000000 $t + /tmp/ccRPwCnE.s:2096 .text.HAL_DMA_UnRegisterCallback:0000000000000000 HAL_DMA_UnRegisterCallback + /tmp/ccRPwCnE.s:2145 .text.HAL_DMA_UnRegisterCallback:000000000000002c $d + /tmp/ccRPwCnE.s:2231 .text.HAL_DMA_GetState:0000000000000000 $t + /tmp/ccRPwCnE.s:2238 .text.HAL_DMA_GetState:0000000000000000 HAL_DMA_GetState + /tmp/ccRPwCnE.s:2256 .text.HAL_DMA_GetError:0000000000000000 $t + /tmp/ccRPwCnE.s:2263 .text.HAL_DMA_GetError:0000000000000000 HAL_DMA_GetError + /tmp/ccRPwCnE.s:2281 .rodata.flagBitshiftOffset.0:0000000000000000 $d + /tmp/ccRPwCnE.s:2285 .rodata.flagBitshiftOffset.0:0000000000000000 flagBitshiftOffset.0 + /tmp/ccRPwCnE.s:2152 .text.HAL_DMA_UnRegisterCallback:0000000000000033 $d + /tmp/ccRPwCnE.s:2152 .text.HAL_DMA_UnRegisterCallback:0000000000000034 $t + +UNDEFINED SYMBOLS +HAL_GetTick +SystemCoreClock diff --git a/build/stm32f7xx_hal_dma.o b/build/stm32f7xx_hal_dma.o new file mode 100644 index 0000000..5982929 Binary files /dev/null and b/build/stm32f7xx_hal_dma.o differ diff --git a/build/stm32f7xx_hal_dma_ex.d b/build/stm32f7xx_hal_dma_ex.d new file mode 100644 index 0000000..f621e4a --- /dev/null +++ b/build/stm32f7xx_hal_dma_ex.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_dma_ex.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_dma_ex.lst b/build/stm32f7xx_hal_dma_ex.lst new file mode 100644 index 0000000..6e10cea --- /dev/null +++ b/build/stm32f7xx_hal_dma_ex.lst @@ -0,0 +1,3299 @@ +ARM GAS /tmp/ccgvGc3k.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_dma_ex.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.DMA_MultiBufferSetConfig,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 DMA_MultiBufferSetConfig: + 25 .LVL0: + 26 .LFB144: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @file stm32f7xx_hal_dma_ex.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @brief DMA Extension HAL module driver + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * functionalities of the DMA Extension peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * + Extended features functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** @verbatim + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** ============================================================================== + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** ##### How to use this driver ##### + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** ============================================================================== + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** [..] + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** The DMA Extension HAL driver can be used as follows: + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** (+) Start a multi buffer transfer using the HAL_DMA_MultiBufferStart() function + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** for polling mode or HAL_DMA_MultiBufferStart_IT() for interrupt mode. + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** -@- In Memory-to-Memory transfer mode, Multi (Double) Buffer mode is not allowed. + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** -@- When Multi (Double) Buffer mode is enabled, the transfer is circular by default. + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** -@- In Multi (Double) buffer mode, it is possible to update the base address for + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** the AHB memory port on the fly (DMA_SxM0AR or DMA_SxM1AR) when the stream is enabled. + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** @endverbatim + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** ****************************************************************************** + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @attention + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * Copyright (c) 2017 STMicroelectronics. + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * All rights reserved. + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * This software is licensed under terms that can be found in the LICENSE file in + ARM GAS /tmp/ccgvGc3k.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * the root directory of this software component. + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** ****************************************************************************** + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Includes ------------------------------------------------------------------*/ + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** #include "stm32f7xx_hal.h" + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** @addtogroup STM32F7xx_HAL_Driver + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @{ + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** @defgroup DMAEx DMAEx + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @brief DMA Extended HAL module driver + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @{ + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** #ifdef HAL_DMA_MODULE_ENABLED + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Private types -------------------------------------------------------------*/ + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Private variables ---------------------------------------------------------*/ + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Private Constants ---------------------------------------------------------*/ + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Private macros ------------------------------------------------------------*/ + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Private functions ---------------------------------------------------------*/ + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** @addtogroup DMAEx_Private_Functions + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @{ + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** static void DMA_MultiBufferSetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddr + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @} + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Exported functions ---------------------------------------------------------*/ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** @addtogroup DMAEx_Exported_Functions + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @{ + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** @addtogroup DMAEx_Exported_Functions_Group1 + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** @verbatim + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** =============================================================================== + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** ##### Extended features functions ##### + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** =============================================================================== + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** [..] This section provides functions allowing to: + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** (+) Configure the source, destination address and data length and + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** Start MultiBuffer DMA transfer + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** (+) Configure the source, destination address and data length and + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** Start MultiBuffer DMA transfer with interrupt + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** (+) Change on the fly the memory0 or memory1 address. + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** @endverbatim + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @{ + ARM GAS /tmp/ccgvGc3k.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @brief Starts the multi_buffer DMA Transfer. + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * the configuration information for the specified DMA Stream. + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param SrcAddress The source memory Buffer address + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param DstAddress The destination memory Buffer address + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param SecondMemAddress The second memory Buffer address in case of multi buffer Transfer + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param DataLength The length of data to be transferred from source to destination + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @retval HAL status + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Check the parameters */ + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Memory-to-memory transfer not supported in double buffering mode */ + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY) + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** status = HAL_ERROR; + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** else + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Process Locked */ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_LOCK(hdma); + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** if(HAL_DMA_STATE_READY == hdma->State) + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Change DMA peripheral state */ + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->State = HAL_DMA_STATE_BUSY; + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Enable the double buffer mode */ + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->CR |= (uint32_t)DMA_SxCR_DBM; + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Configure DMA Stream destination address */ + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->M1AR = SecondMemAddress; + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Configure the source, destination address and the data length */ + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** DMA_MultiBufferSetConfig(hdma, SrcAddress, DstAddress, DataLength); + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Enable the peripheral */ + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_ENABLE(hdma); + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** else + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Return error status */ + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** status = HAL_BUSY; + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** return status; + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + ARM GAS /tmp/ccgvGc3k.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @brief Starts the multi_buffer DMA Transfer with interrupt enabled. + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * the configuration information for the specified DMA Stream. + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param SrcAddress The source memory Buffer address + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param DstAddress The destination memory Buffer address + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param SecondMemAddress The second memory Buffer address in case of multi buffer Transfer + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param DataLength The length of data to be transferred from source to destination + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @retval HAL status + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint3 + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Check the parameters */ + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** assert_param(IS_DMA_BUFFER_SIZE(DataLength)); + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Memory-to-memory transfer not supported in double buffering mode */ + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** if (hdma->Init.Direction == DMA_MEMORY_TO_MEMORY) + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->ErrorCode = HAL_DMA_ERROR_NOT_SUPPORTED; + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** return HAL_ERROR; + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Process locked */ + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_LOCK(hdma); + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** if(HAL_DMA_STATE_READY == hdma->State) + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Change DMA peripheral state */ + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->State = HAL_DMA_STATE_BUSY; + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Initialize the error code */ + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->ErrorCode = HAL_DMA_ERROR_NONE; + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Enable the Double buffer mode */ + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->CR |= (uint32_t)DMA_SxCR_DBM; + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Configure DMA Stream destination address */ + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->M1AR = SecondMemAddress; + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Configure the source, destination address and the data length */ + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** DMA_MultiBufferSetConfig(hdma, SrcAddress, DstAddress, DataLength); + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Clear all flags */ + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TC_FLAG_INDEX(hdma)); + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Enable Common interrupts*/ + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->CR |= DMA_IT_TC | DMA_IT_TE | DMA_IT_DME; + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->FCR |= DMA_IT_FE; + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL)) + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + ARM GAS /tmp/ccgvGc3k.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->CR |= DMA_IT_HT; + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Enable the peripheral */ + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_ENABLE(hdma); + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** else + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Process unlocked */ + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_UNLOCK(hdma); + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Return error status */ + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** status = HAL_BUSY; + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** return status; + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @brief Change the memory0 or memory1 address on the fly. + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * the configuration information for the specified DMA Stream. + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param Address The new address + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param memory the memory to be changed, This parameter can be one of + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * the following values: + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * MEMORY0 / + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * MEMORY1 + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @note The MEMORY0 address can be changed only when the current transfer use + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * MEMORY1 and the MEMORY1 address can be changed only when the current + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * transfer use MEMORY0. + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @retval HAL status + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** HAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryT + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** if(memory == MEMORY0) + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* change the memory0 address */ + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->M0AR = Address; + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** else + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* change the memory1 address */ + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->M1AR = Address; + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** return HAL_OK; + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @} + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @} + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** @addtogroup DMAEx_Private_Functions + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @{ + ARM GAS /tmp/ccgvGc3k.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /** + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @brief Set the DMA Transfer parameter. + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param hdma pointer to a DMA_HandleTypeDef structure that contains + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * the configuration information for the specified DMA Stream. + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param SrcAddress The source memory Buffer address + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param DstAddress The destination memory Buffer address + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @param DataLength The length of data to be transferred from source to destination + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** * @retval HAL status + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** */ + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** static void DMA_MultiBufferSetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddr + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 28 .loc 1 272 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 33 .loc 1 272 1 is_stmt 0 view .LVU1 + 34 0000 10B4 push {r4} + 35 .LCFI0: + 36 .cfi_def_cfa_offset 4 + 37 .cfi_offset 4, -4 + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Configure DMA Stream data length */ + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->NDTR = DataLength; + 38 .loc 1 274 3 is_stmt 1 view .LVU2 + 39 .loc 1 274 24 is_stmt 0 view .LVU3 + 40 0002 0468 ldr r4, [r0] + 41 0004 6360 str r3, [r4, #4] + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Peripheral to Memory */ + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) + 42 .loc 1 277 3 is_stmt 1 view .LVU4 + 43 .loc 1 277 17 is_stmt 0 view .LVU5 + 44 0006 8368 ldr r3, [r0, #8] + 45 .LVL1: + 46 .loc 1 277 5 view .LVU6 + 47 0008 402B cmp r3, #64 + 48 000a 06D0 beq .L5 + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Configure DMA Stream destination address */ + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->PAR = DstAddress; + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Configure DMA Stream source address */ + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->M0AR = SrcAddress; + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Memory to Peripheral */ + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** else + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Configure DMA Stream source address */ + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->PAR = SrcAddress; + 49 .loc 1 289 5 is_stmt 1 view .LVU7 + 50 .loc 1 289 9 is_stmt 0 view .LVU8 + 51 000c 0368 ldr r3, [r0] + 52 .loc 1 289 25 view .LVU9 + 53 000e 9960 str r1, [r3, #8] + 54 .LVL2: + ARM GAS /tmp/ccgvGc3k.s page 7 + + + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** /* Configure DMA Stream destination address */ + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->M0AR = DstAddress; + 55 .loc 1 292 5 is_stmt 1 view .LVU10 + 56 .loc 1 292 9 is_stmt 0 view .LVU11 + 57 0010 0368 ldr r3, [r0] + 58 .loc 1 292 26 view .LVU12 + 59 0012 DA60 str r2, [r3, #12] + 60 .L1: + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 61 .loc 1 294 1 view .LVU13 + 62 0014 5DF8044B ldr r4, [sp], #4 + 63 .LCFI1: + 64 .cfi_remember_state + 65 .cfi_restore 4 + 66 .cfi_def_cfa_offset 0 + 67 0018 7047 bx lr + 68 .LVL3: + 69 .L5: + 70 .LCFI2: + 71 .cfi_restore_state + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 72 .loc 1 280 5 is_stmt 1 view .LVU14 + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 73 .loc 1 280 9 is_stmt 0 view .LVU15 + 74 001a 0368 ldr r3, [r0] + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 75 .loc 1 280 25 view .LVU16 + 76 001c 9A60 str r2, [r3, #8] + 77 .LVL4: + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 78 .loc 1 283 5 is_stmt 1 view .LVU17 + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 79 .loc 1 283 9 is_stmt 0 view .LVU18 + 80 001e 0368 ldr r3, [r0] + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 81 .loc 1 283 26 view .LVU19 + 82 0020 D960 str r1, [r3, #12] + 83 0022 F7E7 b .L1 + 84 .cfi_endproc + 85 .LFE144: + 87 .section .text.HAL_DMAEx_MultiBufferStart,"ax",%progbits + 88 .align 1 + 89 .global HAL_DMAEx_MultiBufferStart + 90 .syntax unified + 91 .thumb + 92 .thumb_func + 93 .fpu fpv5-d16 + 95 HAL_DMAEx_MultiBufferStart: + 96 .LVL5: + 97 .LFB141: + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 98 .loc 1 103 1 is_stmt 1 view -0 + 99 .cfi_startproc + 100 @ args = 4, pretend = 0, frame = 0 + 101 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccgvGc3k.s page 8 + + + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 102 .loc 1 103 1 is_stmt 0 view .LVU21 + 103 0000 38B5 push {r3, r4, r5, lr} + 104 .LCFI3: + 105 .cfi_def_cfa_offset 16 + 106 .cfi_offset 3, -16 + 107 .cfi_offset 4, -12 + 108 .cfi_offset 5, -8 + 109 .cfi_offset 14, -4 + 110 0002 0446 mov r4, r0 + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 111 .loc 1 104 3 is_stmt 1 view .LVU22 + 112 .LVL6: + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 113 .loc 1 107 3 view .LVU23 + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 114 .loc 1 110 3 view .LVU24 + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 115 .loc 1 110 17 is_stmt 0 view .LVU25 + 116 0004 8068 ldr r0, [r0, #8] + 117 .LVL7: + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 118 .loc 1 110 6 view .LVU26 + 119 0006 8028 cmp r0, #128 + 120 0008 0DD0 beq .L12 + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 121 .loc 1 118 5 is_stmt 1 view .LVU27 + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 122 .loc 1 118 5 view .LVU28 + 123 000a 94F83400 ldrb r0, [r4, #52] @ zero_extendqisi2 + 124 000e 0128 cmp r0, #1 + 125 0010 23D0 beq .L9 + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 126 .loc 1 118 5 discriminator 2 view .LVU29 + 127 0012 0120 movs r0, #1 + 128 0014 84F83400 strb r0, [r4, #52] + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 129 .loc 1 118 5 discriminator 2 view .LVU30 + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 130 .loc 1 120 5 discriminator 2 view .LVU31 + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 131 .loc 1 120 35 is_stmt 0 discriminator 2 view .LVU32 + 132 0018 94F83500 ldrb r0, [r4, #53] @ zero_extendqisi2 + 133 001c C0B2 uxtb r0, r0 + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 134 .loc 1 120 7 discriminator 2 view .LVU33 + 135 001e 0128 cmp r0, #1 + 136 0020 06D0 beq .L13 + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 137 .loc 1 140 14 view .LVU34 + 138 0022 0220 movs r0, #2 + 139 .LVL8: + 140 .L8: + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 141 .loc 1 144 1 view .LVU35 + 142 0024 38BD pop {r3, r4, r5, pc} + 143 .LVL9: + ARM GAS /tmp/ccgvGc3k.s page 9 + + + 144 .L12: + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** status = HAL_ERROR; + 145 .loc 1 112 5 is_stmt 1 view .LVU36 + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** status = HAL_ERROR; + 146 .loc 1 112 21 is_stmt 0 view .LVU37 + 147 0026 4FF48073 mov r3, #256 + 148 .LVL10: + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** status = HAL_ERROR; + 149 .loc 1 112 21 view .LVU38 + 150 002a 6365 str r3, [r4, #84] + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 151 .loc 1 113 5 is_stmt 1 view .LVU39 + 152 .LVL11: + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 153 .loc 1 113 12 is_stmt 0 view .LVU40 + 154 002c 0120 movs r0, #1 + 155 002e F9E7 b .L8 + 156 .LVL12: + 157 .L13: + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 158 .loc 1 123 7 is_stmt 1 view .LVU41 + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 159 .loc 1 123 19 is_stmt 0 view .LVU42 + 160 0030 0220 movs r0, #2 + 161 0032 84F83500 strb r0, [r4, #53] + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 162 .loc 1 126 7 is_stmt 1 view .LVU43 + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 163 .loc 1 126 11 is_stmt 0 view .LVU44 + 164 0036 2568 ldr r5, [r4] + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 165 .loc 1 126 26 view .LVU45 + 166 0038 2868 ldr r0, [r5] + 167 003a 40F48020 orr r0, r0, #262144 + 168 003e 2860 str r0, [r5] + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 169 .loc 1 129 7 is_stmt 1 view .LVU46 + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 170 .loc 1 129 11 is_stmt 0 view .LVU47 + 171 0040 2068 ldr r0, [r4] + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 172 .loc 1 129 28 view .LVU48 + 173 0042 0361 str r3, [r0, #16] + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 174 .loc 1 132 7 is_stmt 1 view .LVU49 + 175 0044 049B ldr r3, [sp, #16] + 176 .LVL13: + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 177 .loc 1 132 7 is_stmt 0 view .LVU50 + 178 0046 2046 mov r0, r4 + 179 .LVL14: + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 180 .loc 1 132 7 view .LVU51 + 181 0048 FFF7FEFF bl DMA_MultiBufferSetConfig + 182 .LVL15: + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 183 .loc 1 135 7 is_stmt 1 view .LVU52 + ARM GAS /tmp/ccgvGc3k.s page 10 + + + 184 004c 2268 ldr r2, [r4] + 185 004e 1368 ldr r3, [r2] + 186 0050 43F00103 orr r3, r3, #1 + 187 0054 1360 str r3, [r2] + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 188 .loc 1 104 21 is_stmt 0 view .LVU53 + 189 0056 0020 movs r0, #0 + 190 0058 E4E7 b .L8 + 191 .LVL16: + 192 .L9: + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 193 .loc 1 118 5 view .LVU54 + 194 005a 0220 movs r0, #2 + 195 005c E2E7 b .L8 + 196 .cfi_endproc + 197 .LFE141: + 199 .section .text.HAL_DMAEx_MultiBufferStart_IT,"ax",%progbits + 200 .align 1 + 201 .global HAL_DMAEx_MultiBufferStart_IT + 202 .syntax unified + 203 .thumb + 204 .thumb_func + 205 .fpu fpv5-d16 + 207 HAL_DMAEx_MultiBufferStart_IT: + 208 .LVL17: + 209 .LFB142: + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 210 .loc 1 157 1 is_stmt 1 view -0 + 211 .cfi_startproc + 212 @ args = 4, pretend = 0, frame = 0 + 213 @ frame_needed = 0, uses_anonymous_args = 0 + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 214 .loc 1 157 1 is_stmt 0 view .LVU56 + 215 0000 38B5 push {r3, r4, r5, lr} + 216 .LCFI4: + 217 .cfi_def_cfa_offset 16 + 218 .cfi_offset 3, -16 + 219 .cfi_offset 4, -12 + 220 .cfi_offset 5, -8 + 221 .cfi_offset 14, -4 + 222 0002 0446 mov r4, r0 + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 223 .loc 1 158 3 is_stmt 1 view .LVU57 + 224 .LVL18: + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 225 .loc 1 161 3 view .LVU58 + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 226 .loc 1 164 3 view .LVU59 + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 227 .loc 1 164 17 is_stmt 0 view .LVU60 + 228 0004 8068 ldr r0, [r0, #8] + 229 .LVL19: + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 230 .loc 1 164 6 view .LVU61 + 231 0006 8028 cmp r0, #128 + 232 0008 11D0 beq .L302 + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + ARM GAS /tmp/ccgvGc3k.s page 11 + + + 233 .loc 1 171 3 is_stmt 1 view .LVU62 + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 234 .loc 1 171 3 view .LVU63 + 235 000a 94F83400 ldrb r0, [r4, #52] @ zero_extendqisi2 + 236 000e 0128 cmp r0, #1 + 237 0010 00F06587 beq .L60 + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 238 .loc 1 171 3 discriminator 2 view .LVU64 + 239 0014 0120 movs r0, #1 + 240 0016 84F83400 strb r0, [r4, #52] + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 241 .loc 1 171 3 discriminator 2 view .LVU65 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 242 .loc 1 173 3 discriminator 2 view .LVU66 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 243 .loc 1 173 33 is_stmt 0 discriminator 2 view .LVU67 + 244 001a 94F83500 ldrb r0, [r4, #53] @ zero_extendqisi2 + 245 001e C0B2 uxtb r0, r0 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 246 .loc 1 173 5 discriminator 2 view .LVU68 + 247 0020 0128 cmp r0, #1 + 248 0022 09D0 beq .L303 + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 249 .loc 1 212 5 is_stmt 1 view .LVU69 + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 250 .loc 1 212 5 view .LVU70 + 251 0024 0023 movs r3, #0 + 252 .LVL20: + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 253 .loc 1 212 5 is_stmt 0 view .LVU71 + 254 0026 84F83430 strb r3, [r4, #52] + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 255 .loc 1 212 5 is_stmt 1 view .LVU72 + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 256 .loc 1 215 5 view .LVU73 + 257 .LVL21: + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 258 .loc 1 215 12 is_stmt 0 view .LVU74 + 259 002a 0220 movs r0, #2 + 260 .LVL22: + 261 .L16: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 262 .loc 1 218 1 view .LVU75 + 263 002c 38BD pop {r3, r4, r5, pc} + 264 .LVL23: + 265 .L302: + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** return HAL_ERROR; + 266 .loc 1 166 5 is_stmt 1 view .LVU76 + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** return HAL_ERROR; + 267 .loc 1 166 21 is_stmt 0 view .LVU77 + 268 002e 4FF48073 mov r3, #256 + 269 .LVL24: + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** return HAL_ERROR; + 270 .loc 1 166 21 view .LVU78 + 271 0032 6365 str r3, [r4, #84] + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 272 .loc 1 167 5 is_stmt 1 view .LVU79 + ARM GAS /tmp/ccgvGc3k.s page 12 + + + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 273 .loc 1 167 12 is_stmt 0 view .LVU80 + 274 0034 0120 movs r0, #1 + 275 0036 F9E7 b .L16 + 276 .LVL25: + 277 .L303: + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 278 .loc 1 176 5 is_stmt 1 view .LVU81 + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 279 .loc 1 176 17 is_stmt 0 view .LVU82 + 280 0038 0220 movs r0, #2 + 281 003a 84F83500 strb r0, [r4, #53] + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 282 .loc 1 179 5 is_stmt 1 view .LVU83 + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 283 .loc 1 179 21 is_stmt 0 view .LVU84 + 284 003e 0020 movs r0, #0 + 285 0040 6065 str r0, [r4, #84] + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 286 .loc 1 182 5 is_stmt 1 view .LVU85 + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 287 .loc 1 182 9 is_stmt 0 view .LVU86 + 288 0042 2568 ldr r5, [r4] + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 289 .loc 1 182 24 view .LVU87 + 290 0044 2868 ldr r0, [r5] + 291 0046 40F48020 orr r0, r0, #262144 + 292 004a 2860 str r0, [r5] + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 293 .loc 1 185 5 is_stmt 1 view .LVU88 + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 294 .loc 1 185 9 is_stmt 0 view .LVU89 + 295 004c 2068 ldr r0, [r4] + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 296 .loc 1 185 26 view .LVU90 + 297 004e 0361 str r3, [r0, #16] + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 298 .loc 1 188 5 is_stmt 1 view .LVU91 + 299 0050 049B ldr r3, [sp, #16] + 300 .LVL26: + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 301 .loc 1 188 5 is_stmt 0 view .LVU92 + 302 0052 2046 mov r0, r4 + 303 .LVL27: + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 304 .loc 1 188 5 view .LVU93 + 305 0054 FFF7FEFF bl DMA_MultiBufferSetConfig + 306 .LVL28: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 307 .loc 1 191 5 is_stmt 1 view .LVU94 + 308 0058 2368 ldr r3, [r4] + 309 005a A54A ldr r2, .L325 + 310 005c 9342 cmp r3, r2 + 311 005e 40F29880 bls .L18 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 312 .loc 1 191 5 is_stmt 0 discriminator 1 view .LVU95 + 313 0062 A2F58962 sub r2, r2, #1096 + ARM GAS /tmp/ccgvGc3k.s page 13 + + + 314 0066 9342 cmp r3, r2 + 315 0068 31D0 beq .L61 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 316 .loc 1 191 5 discriminator 3 view .LVU96 + 317 006a 02F58062 add r2, r2, #1024 + 318 006e 9342 cmp r3, r2 + 319 0070 74D0 beq .L62 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 320 .loc 1 191 5 discriminator 5 view .LVU97 + 321 0072 A2F56872 sub r2, r2, #928 + 322 0076 9342 cmp r3, r2 + 323 0078 72D0 beq .L63 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 324 .loc 1 191 5 discriminator 7 view .LVU98 + 325 007a 02F58062 add r2, r2, #1024 + 326 007e 9342 cmp r3, r2 + 327 0080 70D0 beq .L64 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 328 .loc 1 191 5 discriminator 9 view .LVU99 + 329 0082 A2F58962 sub r2, r2, #1096 + 330 0086 9342 cmp r3, r2 + 331 0088 6ED0 beq .L65 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 332 .loc 1 191 5 discriminator 11 view .LVU100 + 333 008a 02F58062 add r2, r2, #1024 + 334 008e 9342 cmp r3, r2 + 335 0090 6DD0 beq .L66 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 336 .loc 1 191 5 discriminator 13 view .LVU101 + 337 0092 A2F56872 sub r2, r2, #928 + 338 0096 9342 cmp r3, r2 + 339 0098 6CD0 beq .L67 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 340 .loc 1 191 5 discriminator 15 view .LVU102 + 341 009a 02F58062 add r2, r2, #1024 + 342 009e 9342 cmp r3, r2 + 343 00a0 6BD0 beq .L68 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 344 .loc 1 191 5 discriminator 17 view .LVU103 + 345 00a2 A2F58962 sub r2, r2, #1096 + 346 00a6 9342 cmp r3, r2 + 347 00a8 6AD0 beq .L69 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 348 .loc 1 191 5 discriminator 19 view .LVU104 + 349 00aa 02F58062 add r2, r2, #1024 + 350 00ae 9342 cmp r3, r2 + 351 00b0 69D0 beq .L70 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 352 .loc 1 191 5 discriminator 21 view .LVU105 + 353 00b2 A2F56872 sub r2, r2, #928 + 354 00b6 9342 cmp r3, r2 + 355 00b8 68D0 beq .L71 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 356 .loc 1 191 5 discriminator 23 view .LVU106 + 357 00ba 02F58062 add r2, r2, #1024 + 358 00be 9342 cmp r3, r2 + 359 00c0 02D0 beq .L304 + ARM GAS /tmp/ccgvGc3k.s page 14 + + + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 360 .loc 1 191 5 view .LVU107 + 361 00c2 4FF00062 mov r2, #134217728 + 362 00c6 03E0 b .L19 + 363 .L304: + 364 00c8 4FF40012 mov r2, #2097152 + 365 00cc 00E0 b .L19 + 366 .L61: + 367 00ce 2022 movs r2, #32 + 368 .L19: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 369 .loc 1 191 5 discriminator 50 view .LVU108 + 370 00d0 884B ldr r3, .L325+4 + 371 00d2 DA60 str r2, [r3, #12] + 372 .LVL29: + 373 .L20: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 374 .loc 1 192 5 is_stmt 1 view .LVU109 + 375 00d4 2368 ldr r3, [r4] + 376 00d6 864A ldr r2, .L325 + 377 00d8 9342 cmp r3, r2 + 378 00da 40F2CC81 bls .L26 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 379 .loc 1 192 5 is_stmt 0 discriminator 1 view .LVU110 + 380 00de A2F58962 sub r2, r2, #1096 + 381 00e2 9342 cmp r3, r2 + 382 00e4 00F06581 beq .L109 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 383 .loc 1 192 5 discriminator 3 view .LVU111 + 384 00e8 02F58062 add r2, r2, #1024 + 385 00ec 9342 cmp r3, r2 + 386 00ee 00F0A781 beq .L110 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 387 .loc 1 192 5 discriminator 5 view .LVU112 + 388 00f2 A2F56872 sub r2, r2, #928 + 389 00f6 9342 cmp r3, r2 + 390 00f8 00F0A481 beq .L111 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 391 .loc 1 192 5 discriminator 7 view .LVU113 + 392 00fc 02F58062 add r2, r2, #1024 + 393 0100 9342 cmp r3, r2 + 394 0102 00F0A181 beq .L112 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 395 .loc 1 192 5 discriminator 9 view .LVU114 + 396 0106 A2F58962 sub r2, r2, #1096 + 397 010a 9342 cmp r3, r2 + 398 010c 00F09E81 beq .L113 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 399 .loc 1 192 5 discriminator 11 view .LVU115 + 400 0110 02F58062 add r2, r2, #1024 + 401 0114 9342 cmp r3, r2 + 402 0116 00F09C81 beq .L114 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 403 .loc 1 192 5 discriminator 13 view .LVU116 + 404 011a A2F56872 sub r2, r2, #928 + 405 011e 9342 cmp r3, r2 + 406 0120 00F09A81 beq .L115 + ARM GAS /tmp/ccgvGc3k.s page 15 + + + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 407 .loc 1 192 5 discriminator 15 view .LVU117 + 408 0124 02F58062 add r2, r2, #1024 + 409 0128 9342 cmp r3, r2 + 410 012a 00F09881 beq .L116 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 411 .loc 1 192 5 discriminator 17 view .LVU118 + 412 012e A2F58962 sub r2, r2, #1096 + 413 0132 9342 cmp r3, r2 + 414 0134 00F09681 beq .L117 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 415 .loc 1 192 5 discriminator 19 view .LVU119 + 416 0138 02F58062 add r2, r2, #1024 + 417 013c 9342 cmp r3, r2 + 418 013e 00F09481 beq .L118 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 419 .loc 1 192 5 discriminator 21 view .LVU120 + 420 0142 A2F56872 sub r2, r2, #928 + 421 0146 9342 cmp r3, r2 + 422 0148 00F09281 beq .L119 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 423 .loc 1 192 5 discriminator 23 view .LVU121 + 424 014c 02F58062 add r2, r2, #1024 + 425 0150 9342 cmp r3, r2 + 426 0152 00F02B81 beq .L305 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 427 .loc 1 192 5 view .LVU122 + 428 0156 4FF08062 mov r2, #67108864 + 429 015a 2BE1 b .L27 + 430 .LVL30: + 431 .L62: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 432 .loc 1 191 5 view .LVU123 + 433 015c 2022 movs r2, #32 + 434 015e B7E7 b .L19 + 435 .L63: + 436 0160 2022 movs r2, #32 + 437 0162 B5E7 b .L19 + 438 .L64: + 439 0164 2022 movs r2, #32 + 440 0166 B3E7 b .L19 + 441 .L65: + 442 0168 4FF40062 mov r2, #2048 + 443 016c B0E7 b .L19 + 444 .L66: + 445 016e 4FF40062 mov r2, #2048 + 446 0172 ADE7 b .L19 + 447 .L67: + 448 0174 4FF40062 mov r2, #2048 + 449 0178 AAE7 b .L19 + 450 .L68: + 451 017a 4FF40062 mov r2, #2048 + 452 017e A7E7 b .L19 + 453 .L69: + 454 0180 4FF40012 mov r2, #2097152 + 455 0184 A4E7 b .L19 + 456 .L70: + ARM GAS /tmp/ccgvGc3k.s page 16 + + + 457 0186 4FF40012 mov r2, #2097152 + 458 018a A1E7 b .L19 + 459 .L71: + 460 018c 4FF40012 mov r2, #2097152 + 461 0190 9EE7 b .L19 + 462 .L18: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 463 .loc 1 191 5 discriminator 2 view .LVU124 + 464 0192 594A ldr r2, .L325+8 + 465 0194 9342 cmp r3, r2 + 466 0196 53D9 bls .L21 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 467 .loc 1 191 5 discriminator 51 view .LVU125 + 468 0198 A83A subs r2, r2, #168 + 469 019a 9342 cmp r3, r2 + 470 019c 31D0 beq .L73 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 471 .loc 1 191 5 discriminator 53 view .LVU126 + 472 019e 02F58062 add r2, r2, #1024 + 473 01a2 9342 cmp r3, r2 + 474 01a4 31D0 beq .L74 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 475 .loc 1 191 5 discriminator 55 view .LVU127 + 476 01a6 A2F56872 sub r2, r2, #928 + 477 01aa 9342 cmp r3, r2 + 478 01ac 2FD0 beq .L75 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 479 .loc 1 191 5 discriminator 57 view .LVU128 + 480 01ae 02F58062 add r2, r2, #1024 + 481 01b2 9342 cmp r3, r2 + 482 01b4 2DD0 beq .L76 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 483 .loc 1 191 5 discriminator 59 view .LVU129 + 484 01b6 A2F58962 sub r2, r2, #1096 + 485 01ba 9342 cmp r3, r2 + 486 01bc 2BD0 beq .L77 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 487 .loc 1 191 5 discriminator 61 view .LVU130 + 488 01be 02F58062 add r2, r2, #1024 + 489 01c2 9342 cmp r3, r2 + 490 01c4 2AD0 beq .L78 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 491 .loc 1 191 5 discriminator 63 view .LVU131 + 492 01c6 A2F56872 sub r2, r2, #928 + 493 01ca 9342 cmp r3, r2 + 494 01cc 29D0 beq .L79 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 495 .loc 1 191 5 discriminator 65 view .LVU132 + 496 01ce 02F58062 add r2, r2, #1024 + 497 01d2 9342 cmp r3, r2 + 498 01d4 28D0 beq .L80 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 499 .loc 1 191 5 discriminator 67 view .LVU133 + 500 01d6 A2F58962 sub r2, r2, #1096 + 501 01da 9342 cmp r3, r2 + 502 01dc 27D0 beq .L81 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + ARM GAS /tmp/ccgvGc3k.s page 17 + + + 503 .loc 1 191 5 discriminator 69 view .LVU134 + 504 01de 02F58062 add r2, r2, #1024 + 505 01e2 9342 cmp r3, r2 + 506 01e4 26D0 beq .L82 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 507 .loc 1 191 5 discriminator 71 view .LVU135 + 508 01e6 A2F56872 sub r2, r2, #928 + 509 01ea 9342 cmp r3, r2 + 510 01ec 25D0 beq .L83 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 511 .loc 1 191 5 discriminator 73 view .LVU136 + 512 01ee 02F58062 add r2, r2, #1024 + 513 01f2 9342 cmp r3, r2 + 514 01f4 02D0 beq .L306 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 515 .loc 1 191 5 view .LVU137 + 516 01f6 4FF00062 mov r2, #134217728 + 517 01fa 03E0 b .L22 + 518 .L306: + 519 01fc 4FF40012 mov r2, #2097152 + 520 0200 00E0 b .L22 + 521 .L73: + 522 0202 2022 movs r2, #32 + 523 .L22: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 524 .loc 1 191 5 discriminator 100 view .LVU138 + 525 0204 3B4B ldr r3, .L325+4 + 526 0206 9A60 str r2, [r3, #8] + 527 .LVL31: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 528 .loc 1 191 5 discriminator 100 view .LVU139 + 529 0208 64E7 b .L20 + 530 .LVL32: + 531 .L74: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 532 .loc 1 191 5 view .LVU140 + 533 020a 2022 movs r2, #32 + 534 020c FAE7 b .L22 + 535 .L75: + 536 020e 2022 movs r2, #32 + 537 0210 F8E7 b .L22 + 538 .L76: + 539 0212 2022 movs r2, #32 + 540 0214 F6E7 b .L22 + 541 .L77: + 542 0216 4FF40062 mov r2, #2048 + 543 021a F3E7 b .L22 + 544 .L78: + 545 021c 4FF40062 mov r2, #2048 + 546 0220 F0E7 b .L22 + 547 .L79: + 548 0222 4FF40062 mov r2, #2048 + 549 0226 EDE7 b .L22 + 550 .L80: + 551 0228 4FF40062 mov r2, #2048 + 552 022c EAE7 b .L22 + 553 .L81: + ARM GAS /tmp/ccgvGc3k.s page 18 + + + 554 022e 4FF40012 mov r2, #2097152 + 555 0232 E7E7 b .L22 + 556 .L82: + 557 0234 4FF40012 mov r2, #2097152 + 558 0238 E4E7 b .L22 + 559 .L83: + 560 023a 4FF40012 mov r2, #2097152 + 561 023e E1E7 b .L22 + 562 .L21: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 563 .loc 1 191 5 discriminator 52 view .LVU141 + 564 0240 2E4A ldr r2, .L325+12 + 565 0242 9342 cmp r3, r2 + 566 0244 5ED9 bls .L23 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 567 .loc 1 191 5 discriminator 102 view .LVU142 + 568 0246 483A subs r2, r2, #72 + 569 0248 9342 cmp r3, r2 + 570 024a 31D0 beq .L85 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 571 .loc 1 191 5 discriminator 104 view .LVU143 + 572 024c 02F58062 add r2, r2, #1024 + 573 0250 9342 cmp r3, r2 + 574 0252 31D0 beq .L86 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 575 .loc 1 191 5 discriminator 106 view .LVU144 + 576 0254 A2F56872 sub r2, r2, #928 + 577 0258 9342 cmp r3, r2 + 578 025a 2FD0 beq .L87 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 579 .loc 1 191 5 discriminator 108 view .LVU145 + 580 025c 02F58062 add r2, r2, #1024 + 581 0260 9342 cmp r3, r2 + 582 0262 2DD0 beq .L88 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 583 .loc 1 191 5 discriminator 110 view .LVU146 + 584 0264 A2F58962 sub r2, r2, #1096 + 585 0268 9342 cmp r3, r2 + 586 026a 2BD0 beq .L89 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 587 .loc 1 191 5 discriminator 112 view .LVU147 + 588 026c 02F58062 add r2, r2, #1024 + 589 0270 9342 cmp r3, r2 + 590 0272 2AD0 beq .L90 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 591 .loc 1 191 5 discriminator 114 view .LVU148 + 592 0274 A2F56872 sub r2, r2, #928 + 593 0278 9342 cmp r3, r2 + 594 027a 29D0 beq .L91 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 595 .loc 1 191 5 discriminator 116 view .LVU149 + 596 027c 02F58062 add r2, r2, #1024 + 597 0280 9342 cmp r3, r2 + 598 0282 28D0 beq .L92 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 599 .loc 1 191 5 discriminator 118 view .LVU150 + 600 0284 A2F58962 sub r2, r2, #1096 + ARM GAS /tmp/ccgvGc3k.s page 19 + + + 601 0288 9342 cmp r3, r2 + 602 028a 27D0 beq .L93 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 603 .loc 1 191 5 discriminator 120 view .LVU151 + 604 028c 02F58062 add r2, r2, #1024 + 605 0290 9342 cmp r3, r2 + 606 0292 26D0 beq .L94 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 607 .loc 1 191 5 discriminator 122 view .LVU152 + 608 0294 A2F56872 sub r2, r2, #928 + 609 0298 9342 cmp r3, r2 + 610 029a 25D0 beq .L95 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 611 .loc 1 191 5 discriminator 124 view .LVU153 + 612 029c 02F58062 add r2, r2, #1024 + 613 02a0 9342 cmp r3, r2 + 614 02a2 02D0 beq .L307 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 615 .loc 1 191 5 view .LVU154 + 616 02a4 4FF00063 mov r3, #134217728 + 617 02a8 03E0 b .L24 + 618 .L307: + 619 02aa 4FF40013 mov r3, #2097152 + 620 02ae 00E0 b .L24 + 621 .L85: + 622 02b0 2023 movs r3, #32 + 623 .L24: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 624 .loc 1 191 5 discriminator 151 view .LVU155 + 625 02b2 134A ldr r2, .L325+16 + 626 02b4 D360 str r3, [r2, #12] + 627 .LVL33: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 628 .loc 1 191 5 discriminator 151 view .LVU156 + 629 02b6 0DE7 b .L20 + 630 .LVL34: + 631 .L86: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 632 .loc 1 191 5 view .LVU157 + 633 02b8 2023 movs r3, #32 + 634 02ba FAE7 b .L24 + 635 .L87: + 636 02bc 2023 movs r3, #32 + 637 02be F8E7 b .L24 + 638 .L88: + 639 02c0 2023 movs r3, #32 + 640 02c2 F6E7 b .L24 + 641 .L89: + 642 02c4 4FF40063 mov r3, #2048 + 643 02c8 F3E7 b .L24 + 644 .L90: + 645 02ca 4FF40063 mov r3, #2048 + 646 02ce F0E7 b .L24 + 647 .L91: + 648 02d0 4FF40063 mov r3, #2048 + 649 02d4 EDE7 b .L24 + 650 .L92: + ARM GAS /tmp/ccgvGc3k.s page 20 + + + 651 02d6 4FF40063 mov r3, #2048 + 652 02da EAE7 b .L24 + 653 .L93: + 654 02dc 4FF40013 mov r3, #2097152 + 655 02e0 E7E7 b .L24 + 656 .L94: + 657 02e2 4FF40013 mov r3, #2097152 + 658 02e6 E4E7 b .L24 + 659 .L95: + 660 02e8 4FF40013 mov r3, #2097152 + 661 02ec E1E7 b .L24 + 662 .L326: + 663 02ee 00BF .align 2 + 664 .L325: + 665 02f0 58640240 .word 1073898584 + 666 02f4 00640240 .word 1073898496 + 667 02f8 B8600240 .word 1073897656 + 668 02fc 58600240 .word 1073897560 + 669 0300 00600240 .word 1073897472 + 670 .L23: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 671 .loc 1 191 5 discriminator 103 view .LVU158 + 672 0304 B14A ldr r2, .L327 + 673 0306 9342 cmp r3, r2 + 674 0308 31D0 beq .L97 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 675 .loc 1 191 5 discriminator 153 view .LVU159 + 676 030a 02F58062 add r2, r2, #1024 + 677 030e 9342 cmp r3, r2 + 678 0310 31D0 beq .L98 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 679 .loc 1 191 5 discriminator 155 view .LVU160 + 680 0312 A2F56872 sub r2, r2, #928 + 681 0316 9342 cmp r3, r2 + 682 0318 2FD0 beq .L99 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 683 .loc 1 191 5 discriminator 157 view .LVU161 + 684 031a 02F58062 add r2, r2, #1024 + 685 031e 9342 cmp r3, r2 + 686 0320 2DD0 beq .L100 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 687 .loc 1 191 5 discriminator 159 view .LVU162 + 688 0322 A2F58962 sub r2, r2, #1096 + 689 0326 9342 cmp r3, r2 + 690 0328 2BD0 beq .L101 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 691 .loc 1 191 5 discriminator 161 view .LVU163 + 692 032a 02F58062 add r2, r2, #1024 + 693 032e 9342 cmp r3, r2 + 694 0330 2AD0 beq .L102 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 695 .loc 1 191 5 discriminator 163 view .LVU164 + 696 0332 A2F56872 sub r2, r2, #928 + 697 0336 9342 cmp r3, r2 + 698 0338 29D0 beq .L103 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 699 .loc 1 191 5 discriminator 165 view .LVU165 + ARM GAS /tmp/ccgvGc3k.s page 21 + + + 700 033a 02F58062 add r2, r2, #1024 + 701 033e 9342 cmp r3, r2 + 702 0340 28D0 beq .L104 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 703 .loc 1 191 5 discriminator 167 view .LVU166 + 704 0342 A2F58962 sub r2, r2, #1096 + 705 0346 9342 cmp r3, r2 + 706 0348 27D0 beq .L105 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 707 .loc 1 191 5 discriminator 169 view .LVU167 + 708 034a 02F58062 add r2, r2, #1024 + 709 034e 9342 cmp r3, r2 + 710 0350 26D0 beq .L106 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 711 .loc 1 191 5 discriminator 171 view .LVU168 + 712 0352 A2F56872 sub r2, r2, #928 + 713 0356 9342 cmp r3, r2 + 714 0358 25D0 beq .L107 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 715 .loc 1 191 5 discriminator 173 view .LVU169 + 716 035a 02F58062 add r2, r2, #1024 + 717 035e 9342 cmp r3, r2 + 718 0360 02D0 beq .L308 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 719 .loc 1 191 5 view .LVU170 + 720 0362 4FF00063 mov r3, #134217728 + 721 0366 03E0 b .L25 + 722 .L308: + 723 0368 4FF40013 mov r3, #2097152 + 724 036c 00E0 b .L25 + 725 .L97: + 726 036e 2023 movs r3, #32 + 727 .L25: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 728 .loc 1 191 5 discriminator 200 view .LVU171 + 729 0370 974A ldr r2, .L327+4 + 730 0372 9360 str r3, [r2, #8] + 731 .LVL35: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 732 .loc 1 191 5 discriminator 200 view .LVU172 + 733 0374 AEE6 b .L20 + 734 .LVL36: + 735 .L98: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_HT_FLAG_INDEX(hdma)); + 736 .loc 1 191 5 view .LVU173 + 737 0376 2023 movs r3, #32 + 738 0378 FAE7 b .L25 + 739 .L99: + 740 037a 2023 movs r3, #32 + 741 037c F8E7 b .L25 + 742 .L100: + 743 037e 2023 movs r3, #32 + 744 0380 F6E7 b .L25 + 745 .L101: + 746 0382 4FF40063 mov r3, #2048 + 747 0386 F3E7 b .L25 + 748 .L102: + ARM GAS /tmp/ccgvGc3k.s page 22 + + + 749 0388 4FF40063 mov r3, #2048 + 750 038c F0E7 b .L25 + 751 .L103: + 752 038e 4FF40063 mov r3, #2048 + 753 0392 EDE7 b .L25 + 754 .L104: + 755 0394 4FF40063 mov r3, #2048 + 756 0398 EAE7 b .L25 + 757 .L105: + 758 039a 4FF40013 mov r3, #2097152 + 759 039e E7E7 b .L25 + 760 .L106: + 761 03a0 4FF40013 mov r3, #2097152 + 762 03a4 E4E7 b .L25 + 763 .L107: + 764 03a6 4FF40013 mov r3, #2097152 + 765 03aa E1E7 b .L25 + 766 .LVL37: + 767 .L305: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 768 .loc 1 192 5 view .LVU174 + 769 03ac 4FF48012 mov r2, #1048576 + 770 03b0 00E0 b .L27 + 771 .L109: + 772 03b2 1022 movs r2, #16 + 773 .L27: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 774 .loc 1 192 5 discriminator 50 view .LVU175 + 775 03b4 874B ldr r3, .L327+8 + 776 03b6 DA60 str r2, [r3, #12] + 777 .L28: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 778 .loc 1 193 5 is_stmt 1 view .LVU176 + 779 03b8 2368 ldr r3, [r4] + 780 03ba 874A ldr r2, .L327+12 + 781 03bc 9342 cmp r3, r2 + 782 03be 40F2CD81 bls .L34 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 783 .loc 1 193 5 is_stmt 0 discriminator 1 view .LVU177 + 784 03c2 A2F58962 sub r2, r2, #1096 + 785 03c6 9342 cmp r3, r2 + 786 03c8 00F06681 beq .L157 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 787 .loc 1 193 5 discriminator 3 view .LVU178 + 788 03cc 02F58062 add r2, r2, #1024 + 789 03d0 9342 cmp r3, r2 + 790 03d2 00F0A881 beq .L158 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 791 .loc 1 193 5 discriminator 5 view .LVU179 + 792 03d6 A2F56872 sub r2, r2, #928 + 793 03da 9342 cmp r3, r2 + 794 03dc 00F0A581 beq .L159 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 795 .loc 1 193 5 discriminator 7 view .LVU180 + 796 03e0 02F58062 add r2, r2, #1024 + 797 03e4 9342 cmp r3, r2 + 798 03e6 00F0A281 beq .L160 + ARM GAS /tmp/ccgvGc3k.s page 23 + + + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 799 .loc 1 193 5 discriminator 9 view .LVU181 + 800 03ea A2F58962 sub r2, r2, #1096 + 801 03ee 9342 cmp r3, r2 + 802 03f0 00F09F81 beq .L161 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 803 .loc 1 193 5 discriminator 11 view .LVU182 + 804 03f4 02F58062 add r2, r2, #1024 + 805 03f8 9342 cmp r3, r2 + 806 03fa 00F09D81 beq .L162 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 807 .loc 1 193 5 discriminator 13 view .LVU183 + 808 03fe A2F56872 sub r2, r2, #928 + 809 0402 9342 cmp r3, r2 + 810 0404 00F09B81 beq .L163 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 811 .loc 1 193 5 discriminator 15 view .LVU184 + 812 0408 02F58062 add r2, r2, #1024 + 813 040c 9342 cmp r3, r2 + 814 040e 00F09981 beq .L164 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 815 .loc 1 193 5 discriminator 17 view .LVU185 + 816 0412 A2F58962 sub r2, r2, #1096 + 817 0416 9342 cmp r3, r2 + 818 0418 00F09781 beq .L165 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 819 .loc 1 193 5 discriminator 19 view .LVU186 + 820 041c 02F58062 add r2, r2, #1024 + 821 0420 9342 cmp r3, r2 + 822 0422 00F09581 beq .L166 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 823 .loc 1 193 5 discriminator 21 view .LVU187 + 824 0426 A2F56872 sub r2, r2, #928 + 825 042a 9342 cmp r3, r2 + 826 042c 00F09381 beq .L167 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 827 .loc 1 193 5 discriminator 23 view .LVU188 + 828 0430 02F58062 add r2, r2, #1024 + 829 0434 9342 cmp r3, r2 + 830 0436 00F02C81 beq .L309 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 831 .loc 1 193 5 view .LVU189 + 832 043a 4FF00072 mov r2, #33554432 + 833 043e 2CE1 b .L35 + 834 .L110: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 835 .loc 1 192 5 view .LVU190 + 836 0440 1022 movs r2, #16 + 837 0442 B7E7 b .L27 + 838 .L111: + 839 0444 1022 movs r2, #16 + 840 0446 B5E7 b .L27 + 841 .L112: + 842 0448 1022 movs r2, #16 + 843 044a B3E7 b .L27 + 844 .L113: + 845 044c 4FF48062 mov r2, #1024 + ARM GAS /tmp/ccgvGc3k.s page 24 + + + 846 0450 B0E7 b .L27 + 847 .L114: + 848 0452 4FF48062 mov r2, #1024 + 849 0456 ADE7 b .L27 + 850 .L115: + 851 0458 4FF48062 mov r2, #1024 + 852 045c AAE7 b .L27 + 853 .L116: + 854 045e 4FF48062 mov r2, #1024 + 855 0462 A7E7 b .L27 + 856 .L117: + 857 0464 4FF48012 mov r2, #1048576 + 858 0468 A4E7 b .L27 + 859 .L118: + 860 046a 4FF48012 mov r2, #1048576 + 861 046e A1E7 b .L27 + 862 .L119: + 863 0470 4FF48012 mov r2, #1048576 + 864 0474 9EE7 b .L27 + 865 .L26: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 866 .loc 1 192 5 discriminator 2 view .LVU191 + 867 0476 594A ldr r2, .L327+16 + 868 0478 9342 cmp r3, r2 + 869 047a 53D9 bls .L29 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 870 .loc 1 192 5 discriminator 51 view .LVU192 + 871 047c A83A subs r2, r2, #168 + 872 047e 9342 cmp r3, r2 + 873 0480 31D0 beq .L121 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 874 .loc 1 192 5 discriminator 53 view .LVU193 + 875 0482 02F58062 add r2, r2, #1024 + 876 0486 9342 cmp r3, r2 + 877 0488 31D0 beq .L122 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 878 .loc 1 192 5 discriminator 55 view .LVU194 + 879 048a A2F56872 sub r2, r2, #928 + 880 048e 9342 cmp r3, r2 + 881 0490 2FD0 beq .L123 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 882 .loc 1 192 5 discriminator 57 view .LVU195 + 883 0492 02F58062 add r2, r2, #1024 + 884 0496 9342 cmp r3, r2 + 885 0498 2DD0 beq .L124 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 886 .loc 1 192 5 discriminator 59 view .LVU196 + 887 049a A2F58962 sub r2, r2, #1096 + 888 049e 9342 cmp r3, r2 + 889 04a0 2BD0 beq .L125 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 890 .loc 1 192 5 discriminator 61 view .LVU197 + 891 04a2 02F58062 add r2, r2, #1024 + 892 04a6 9342 cmp r3, r2 + 893 04a8 2AD0 beq .L126 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 894 .loc 1 192 5 discriminator 63 view .LVU198 + ARM GAS /tmp/ccgvGc3k.s page 25 + + + 895 04aa A2F56872 sub r2, r2, #928 + 896 04ae 9342 cmp r3, r2 + 897 04b0 29D0 beq .L127 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 898 .loc 1 192 5 discriminator 65 view .LVU199 + 899 04b2 02F58062 add r2, r2, #1024 + 900 04b6 9342 cmp r3, r2 + 901 04b8 28D0 beq .L128 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 902 .loc 1 192 5 discriminator 67 view .LVU200 + 903 04ba A2F58962 sub r2, r2, #1096 + 904 04be 9342 cmp r3, r2 + 905 04c0 27D0 beq .L129 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 906 .loc 1 192 5 discriminator 69 view .LVU201 + 907 04c2 02F58062 add r2, r2, #1024 + 908 04c6 9342 cmp r3, r2 + 909 04c8 26D0 beq .L130 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 910 .loc 1 192 5 discriminator 71 view .LVU202 + 911 04ca A2F56872 sub r2, r2, #928 + 912 04ce 9342 cmp r3, r2 + 913 04d0 25D0 beq .L131 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 914 .loc 1 192 5 discriminator 73 view .LVU203 + 915 04d2 02F58062 add r2, r2, #1024 + 916 04d6 9342 cmp r3, r2 + 917 04d8 02D0 beq .L310 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 918 .loc 1 192 5 view .LVU204 + 919 04da 4FF08062 mov r2, #67108864 + 920 04de 03E0 b .L30 + 921 .L310: + 922 04e0 4FF48012 mov r2, #1048576 + 923 04e4 00E0 b .L30 + 924 .L121: + 925 04e6 1022 movs r2, #16 + 926 .L30: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 927 .loc 1 192 5 discriminator 100 view .LVU205 + 928 04e8 3A4B ldr r3, .L327+8 + 929 04ea 9A60 str r2, [r3, #8] + 930 04ec 64E7 b .L28 + 931 .L122: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 932 .loc 1 192 5 view .LVU206 + 933 04ee 1022 movs r2, #16 + 934 04f0 FAE7 b .L30 + 935 .L123: + 936 04f2 1022 movs r2, #16 + 937 04f4 F8E7 b .L30 + 938 .L124: + 939 04f6 1022 movs r2, #16 + 940 04f8 F6E7 b .L30 + 941 .L125: + 942 04fa 4FF48062 mov r2, #1024 + 943 04fe F3E7 b .L30 + ARM GAS /tmp/ccgvGc3k.s page 26 + + + 944 .L126: + 945 0500 4FF48062 mov r2, #1024 + 946 0504 F0E7 b .L30 + 947 .L127: + 948 0506 4FF48062 mov r2, #1024 + 949 050a EDE7 b .L30 + 950 .L128: + 951 050c 4FF48062 mov r2, #1024 + 952 0510 EAE7 b .L30 + 953 .L129: + 954 0512 4FF48012 mov r2, #1048576 + 955 0516 E7E7 b .L30 + 956 .L130: + 957 0518 4FF48012 mov r2, #1048576 + 958 051c E4E7 b .L30 + 959 .L131: + 960 051e 4FF48012 mov r2, #1048576 + 961 0522 E1E7 b .L30 + 962 .L29: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 963 .loc 1 192 5 discriminator 52 view .LVU207 + 964 0524 2E4A ldr r2, .L327+20 + 965 0526 9342 cmp r3, r2 + 966 0528 5FD9 bls .L31 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 967 .loc 1 192 5 discriminator 102 view .LVU208 + 968 052a 483A subs r2, r2, #72 + 969 052c 9342 cmp r3, r2 + 970 052e 31D0 beq .L133 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 971 .loc 1 192 5 discriminator 104 view .LVU209 + 972 0530 02F58062 add r2, r2, #1024 + 973 0534 9342 cmp r3, r2 + 974 0536 31D0 beq .L134 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 975 .loc 1 192 5 discriminator 106 view .LVU210 + 976 0538 A2F56872 sub r2, r2, #928 + 977 053c 9342 cmp r3, r2 + 978 053e 2FD0 beq .L135 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 979 .loc 1 192 5 discriminator 108 view .LVU211 + 980 0540 02F58062 add r2, r2, #1024 + 981 0544 9342 cmp r3, r2 + 982 0546 2DD0 beq .L136 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 983 .loc 1 192 5 discriminator 110 view .LVU212 + 984 0548 A2F58962 sub r2, r2, #1096 + 985 054c 9342 cmp r3, r2 + 986 054e 2BD0 beq .L137 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 987 .loc 1 192 5 discriminator 112 view .LVU213 + 988 0550 02F58062 add r2, r2, #1024 + 989 0554 9342 cmp r3, r2 + 990 0556 2AD0 beq .L138 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 991 .loc 1 192 5 discriminator 114 view .LVU214 + 992 0558 A2F56872 sub r2, r2, #928 + ARM GAS /tmp/ccgvGc3k.s page 27 + + + 993 055c 9342 cmp r3, r2 + 994 055e 29D0 beq .L139 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 995 .loc 1 192 5 discriminator 116 view .LVU215 + 996 0560 02F58062 add r2, r2, #1024 + 997 0564 9342 cmp r3, r2 + 998 0566 28D0 beq .L140 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 999 .loc 1 192 5 discriminator 118 view .LVU216 + 1000 0568 A2F58962 sub r2, r2, #1096 + 1001 056c 9342 cmp r3, r2 + 1002 056e 27D0 beq .L141 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1003 .loc 1 192 5 discriminator 120 view .LVU217 + 1004 0570 02F58062 add r2, r2, #1024 + 1005 0574 9342 cmp r3, r2 + 1006 0576 26D0 beq .L142 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1007 .loc 1 192 5 discriminator 122 view .LVU218 + 1008 0578 A2F56872 sub r2, r2, #928 + 1009 057c 9342 cmp r3, r2 + 1010 057e 31D0 beq .L143 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1011 .loc 1 192 5 discriminator 124 view .LVU219 + 1012 0580 02F58062 add r2, r2, #1024 + 1013 0584 9342 cmp r3, r2 + 1014 0586 02D0 beq .L311 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1015 .loc 1 192 5 view .LVU220 + 1016 0588 4FF08063 mov r3, #67108864 + 1017 058c 03E0 b .L32 + 1018 .L311: + 1019 058e 4FF48013 mov r3, #1048576 + 1020 0592 00E0 b .L32 + 1021 .L133: + 1022 0594 1023 movs r3, #16 + 1023 .L32: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1024 .loc 1 192 5 discriminator 151 view .LVU221 + 1025 0596 0E4A ldr r2, .L327+4 + 1026 0598 D360 str r3, [r2, #12] + 1027 059a 0DE7 b .L28 + 1028 .L134: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1029 .loc 1 192 5 view .LVU222 + 1030 059c 1023 movs r3, #16 + 1031 059e FAE7 b .L32 + 1032 .L135: + 1033 05a0 1023 movs r3, #16 + 1034 05a2 F8E7 b .L32 + 1035 .L136: + 1036 05a4 1023 movs r3, #16 + 1037 05a6 F6E7 b .L32 + 1038 .L137: + 1039 05a8 4FF48063 mov r3, #1024 + 1040 05ac F3E7 b .L32 + 1041 .L138: + ARM GAS /tmp/ccgvGc3k.s page 28 + + + 1042 05ae 4FF48063 mov r3, #1024 + 1043 05b2 F0E7 b .L32 + 1044 .L139: + 1045 05b4 4FF48063 mov r3, #1024 + 1046 05b8 EDE7 b .L32 + 1047 .L140: + 1048 05ba 4FF48063 mov r3, #1024 + 1049 05be EAE7 b .L32 + 1050 .L141: + 1051 05c0 4FF48013 mov r3, #1048576 + 1052 05c4 E7E7 b .L32 + 1053 .L142: + 1054 05c6 4FF48013 mov r3, #1048576 + 1055 05ca E4E7 b .L32 + 1056 .L328: + 1057 .align 2 + 1058 .L327: + 1059 05cc 10600240 .word 1073897488 + 1060 05d0 00600240 .word 1073897472 + 1061 05d4 00640240 .word 1073898496 + 1062 05d8 58640240 .word 1073898584 + 1063 05dc B8600240 .word 1073897656 + 1064 05e0 58600240 .word 1073897560 + 1065 .L143: + 1066 05e4 4FF48013 mov r3, #1048576 + 1067 05e8 D5E7 b .L32 + 1068 .L31: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1069 .loc 1 192 5 discriminator 103 view .LVU223 + 1070 05ea B24A ldr r2, .L329 + 1071 05ec 9342 cmp r3, r2 + 1072 05ee 31D0 beq .L145 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1073 .loc 1 192 5 discriminator 153 view .LVU224 + 1074 05f0 02F58062 add r2, r2, #1024 + 1075 05f4 9342 cmp r3, r2 + 1076 05f6 31D0 beq .L146 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1077 .loc 1 192 5 discriminator 155 view .LVU225 + 1078 05f8 A2F56872 sub r2, r2, #928 + 1079 05fc 9342 cmp r3, r2 + 1080 05fe 2FD0 beq .L147 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1081 .loc 1 192 5 discriminator 157 view .LVU226 + 1082 0600 02F58062 add r2, r2, #1024 + 1083 0604 9342 cmp r3, r2 + 1084 0606 2DD0 beq .L148 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1085 .loc 1 192 5 discriminator 159 view .LVU227 + 1086 0608 A2F58962 sub r2, r2, #1096 + 1087 060c 9342 cmp r3, r2 + 1088 060e 2BD0 beq .L149 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1089 .loc 1 192 5 discriminator 161 view .LVU228 + 1090 0610 02F58062 add r2, r2, #1024 + 1091 0614 9342 cmp r3, r2 + 1092 0616 2AD0 beq .L150 + ARM GAS /tmp/ccgvGc3k.s page 29 + + + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1093 .loc 1 192 5 discriminator 163 view .LVU229 + 1094 0618 A2F56872 sub r2, r2, #928 + 1095 061c 9342 cmp r3, r2 + 1096 061e 29D0 beq .L151 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1097 .loc 1 192 5 discriminator 165 view .LVU230 + 1098 0620 02F58062 add r2, r2, #1024 + 1099 0624 9342 cmp r3, r2 + 1100 0626 28D0 beq .L152 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1101 .loc 1 192 5 discriminator 167 view .LVU231 + 1102 0628 A2F58962 sub r2, r2, #1096 + 1103 062c 9342 cmp r3, r2 + 1104 062e 27D0 beq .L153 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1105 .loc 1 192 5 discriminator 169 view .LVU232 + 1106 0630 02F58062 add r2, r2, #1024 + 1107 0634 9342 cmp r3, r2 + 1108 0636 26D0 beq .L154 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1109 .loc 1 192 5 discriminator 171 view .LVU233 + 1110 0638 A2F56872 sub r2, r2, #928 + 1111 063c 9342 cmp r3, r2 + 1112 063e 25D0 beq .L155 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1113 .loc 1 192 5 discriminator 173 view .LVU234 + 1114 0640 02F58062 add r2, r2, #1024 + 1115 0644 9342 cmp r3, r2 + 1116 0646 02D0 beq .L312 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1117 .loc 1 192 5 view .LVU235 + 1118 0648 4FF08063 mov r3, #67108864 + 1119 064c 03E0 b .L33 + 1120 .L312: + 1121 064e 4FF48013 mov r3, #1048576 + 1122 0652 00E0 b .L33 + 1123 .L145: + 1124 0654 1023 movs r3, #16 + 1125 .L33: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1126 .loc 1 192 5 discriminator 200 view .LVU236 + 1127 0656 984A ldr r2, .L329+4 + 1128 0658 9360 str r3, [r2, #8] + 1129 065a ADE6 b .L28 + 1130 .L146: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_TE_FLAG_INDEX(hdma)); + 1131 .loc 1 192 5 view .LVU237 + 1132 065c 1023 movs r3, #16 + 1133 065e FAE7 b .L33 + 1134 .L147: + 1135 0660 1023 movs r3, #16 + 1136 0662 F8E7 b .L33 + 1137 .L148: + 1138 0664 1023 movs r3, #16 + 1139 0666 F6E7 b .L33 + 1140 .L149: + ARM GAS /tmp/ccgvGc3k.s page 30 + + + 1141 0668 4FF48063 mov r3, #1024 + 1142 066c F3E7 b .L33 + 1143 .L150: + 1144 066e 4FF48063 mov r3, #1024 + 1145 0672 F0E7 b .L33 + 1146 .L151: + 1147 0674 4FF48063 mov r3, #1024 + 1148 0678 EDE7 b .L33 + 1149 .L152: + 1150 067a 4FF48063 mov r3, #1024 + 1151 067e EAE7 b .L33 + 1152 .L153: + 1153 0680 4FF48013 mov r3, #1048576 + 1154 0684 E7E7 b .L33 + 1155 .L154: + 1156 0686 4FF48013 mov r3, #1048576 + 1157 068a E4E7 b .L33 + 1158 .L155: + 1159 068c 4FF48013 mov r3, #1048576 + 1160 0690 E1E7 b .L33 + 1161 .L309: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1162 .loc 1 193 5 view .LVU238 + 1163 0692 4FF40022 mov r2, #524288 + 1164 0696 00E0 b .L35 + 1165 .L157: + 1166 0698 0822 movs r2, #8 + 1167 .L35: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1168 .loc 1 193 5 discriminator 50 view .LVU239 + 1169 069a 884B ldr r3, .L329+8 + 1170 069c DA60 str r2, [r3, #12] + 1171 .L36: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1172 .loc 1 194 5 is_stmt 1 view .LVU240 + 1173 069e 2368 ldr r3, [r4] + 1174 06a0 874A ldr r2, .L329+12 + 1175 06a2 9342 cmp r3, r2 + 1176 06a4 40F2CE81 bls .L42 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1177 .loc 1 194 5 is_stmt 0 discriminator 1 view .LVU241 + 1178 06a8 A2F58962 sub r2, r2, #1096 + 1179 06ac 9342 cmp r3, r2 + 1180 06ae 00F06781 beq .L205 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1181 .loc 1 194 5 discriminator 3 view .LVU242 + 1182 06b2 02F58062 add r2, r2, #1024 + 1183 06b6 9342 cmp r3, r2 + 1184 06b8 00F0A981 beq .L206 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1185 .loc 1 194 5 discriminator 5 view .LVU243 + 1186 06bc A2F56872 sub r2, r2, #928 + 1187 06c0 9342 cmp r3, r2 + 1188 06c2 00F0A681 beq .L207 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1189 .loc 1 194 5 discriminator 7 view .LVU244 + 1190 06c6 02F58062 add r2, r2, #1024 + ARM GAS /tmp/ccgvGc3k.s page 31 + + + 1191 06ca 9342 cmp r3, r2 + 1192 06cc 00F0A381 beq .L208 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1193 .loc 1 194 5 discriminator 9 view .LVU245 + 1194 06d0 A2F58962 sub r2, r2, #1096 + 1195 06d4 9342 cmp r3, r2 + 1196 06d6 00F0A081 beq .L209 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1197 .loc 1 194 5 discriminator 11 view .LVU246 + 1198 06da 02F58062 add r2, r2, #1024 + 1199 06de 9342 cmp r3, r2 + 1200 06e0 00F09E81 beq .L210 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1201 .loc 1 194 5 discriminator 13 view .LVU247 + 1202 06e4 A2F56872 sub r2, r2, #928 + 1203 06e8 9342 cmp r3, r2 + 1204 06ea 00F09C81 beq .L211 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1205 .loc 1 194 5 discriminator 15 view .LVU248 + 1206 06ee 02F58062 add r2, r2, #1024 + 1207 06f2 9342 cmp r3, r2 + 1208 06f4 00F09A81 beq .L212 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1209 .loc 1 194 5 discriminator 17 view .LVU249 + 1210 06f8 A2F58962 sub r2, r2, #1096 + 1211 06fc 9342 cmp r3, r2 + 1212 06fe 00F09881 beq .L213 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1213 .loc 1 194 5 discriminator 19 view .LVU250 + 1214 0702 02F58062 add r2, r2, #1024 + 1215 0706 9342 cmp r3, r2 + 1216 0708 00F09681 beq .L214 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1217 .loc 1 194 5 discriminator 21 view .LVU251 + 1218 070c A2F56872 sub r2, r2, #928 + 1219 0710 9342 cmp r3, r2 + 1220 0712 00F09481 beq .L215 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1221 .loc 1 194 5 discriminator 23 view .LVU252 + 1222 0716 02F58062 add r2, r2, #1024 + 1223 071a 9342 cmp r3, r2 + 1224 071c 00F02D81 beq .L313 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1225 .loc 1 194 5 view .LVU253 + 1226 0720 4FF08072 mov r2, #16777216 + 1227 0724 2DE1 b .L43 + 1228 .L158: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1229 .loc 1 193 5 view .LVU254 + 1230 0726 0822 movs r2, #8 + 1231 0728 B7E7 b .L35 + 1232 .L159: + 1233 072a 0822 movs r2, #8 + 1234 072c B5E7 b .L35 + 1235 .L160: + 1236 072e 0822 movs r2, #8 + 1237 0730 B3E7 b .L35 + ARM GAS /tmp/ccgvGc3k.s page 32 + + + 1238 .L161: + 1239 0732 4FF40072 mov r2, #512 + 1240 0736 B0E7 b .L35 + 1241 .L162: + 1242 0738 4FF40072 mov r2, #512 + 1243 073c ADE7 b .L35 + 1244 .L163: + 1245 073e 4FF40072 mov r2, #512 + 1246 0742 AAE7 b .L35 + 1247 .L164: + 1248 0744 4FF40072 mov r2, #512 + 1249 0748 A7E7 b .L35 + 1250 .L165: + 1251 074a 4FF40022 mov r2, #524288 + 1252 074e A4E7 b .L35 + 1253 .L166: + 1254 0750 4FF40022 mov r2, #524288 + 1255 0754 A1E7 b .L35 + 1256 .L167: + 1257 0756 4FF40022 mov r2, #524288 + 1258 075a 9EE7 b .L35 + 1259 .L34: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1260 .loc 1 193 5 discriminator 2 view .LVU255 + 1261 075c 594A ldr r2, .L329+16 + 1262 075e 9342 cmp r3, r2 + 1263 0760 53D9 bls .L37 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1264 .loc 1 193 5 discriminator 51 view .LVU256 + 1265 0762 A83A subs r2, r2, #168 + 1266 0764 9342 cmp r3, r2 + 1267 0766 31D0 beq .L169 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1268 .loc 1 193 5 discriminator 53 view .LVU257 + 1269 0768 02F58062 add r2, r2, #1024 + 1270 076c 9342 cmp r3, r2 + 1271 076e 31D0 beq .L170 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1272 .loc 1 193 5 discriminator 55 view .LVU258 + 1273 0770 A2F56872 sub r2, r2, #928 + 1274 0774 9342 cmp r3, r2 + 1275 0776 2FD0 beq .L171 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1276 .loc 1 193 5 discriminator 57 view .LVU259 + 1277 0778 02F58062 add r2, r2, #1024 + 1278 077c 9342 cmp r3, r2 + 1279 077e 2DD0 beq .L172 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1280 .loc 1 193 5 discriminator 59 view .LVU260 + 1281 0780 A2F58962 sub r2, r2, #1096 + 1282 0784 9342 cmp r3, r2 + 1283 0786 2BD0 beq .L173 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1284 .loc 1 193 5 discriminator 61 view .LVU261 + 1285 0788 02F58062 add r2, r2, #1024 + 1286 078c 9342 cmp r3, r2 + 1287 078e 2AD0 beq .L174 + ARM GAS /tmp/ccgvGc3k.s page 33 + + + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1288 .loc 1 193 5 discriminator 63 view .LVU262 + 1289 0790 A2F56872 sub r2, r2, #928 + 1290 0794 9342 cmp r3, r2 + 1291 0796 29D0 beq .L175 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1292 .loc 1 193 5 discriminator 65 view .LVU263 + 1293 0798 02F58062 add r2, r2, #1024 + 1294 079c 9342 cmp r3, r2 + 1295 079e 28D0 beq .L176 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1296 .loc 1 193 5 discriminator 67 view .LVU264 + 1297 07a0 A2F58962 sub r2, r2, #1096 + 1298 07a4 9342 cmp r3, r2 + 1299 07a6 27D0 beq .L177 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1300 .loc 1 193 5 discriminator 69 view .LVU265 + 1301 07a8 02F58062 add r2, r2, #1024 + 1302 07ac 9342 cmp r3, r2 + 1303 07ae 26D0 beq .L178 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1304 .loc 1 193 5 discriminator 71 view .LVU266 + 1305 07b0 A2F56872 sub r2, r2, #928 + 1306 07b4 9342 cmp r3, r2 + 1307 07b6 25D0 beq .L179 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1308 .loc 1 193 5 discriminator 73 view .LVU267 + 1309 07b8 02F58062 add r2, r2, #1024 + 1310 07bc 9342 cmp r3, r2 + 1311 07be 02D0 beq .L314 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1312 .loc 1 193 5 view .LVU268 + 1313 07c0 4FF00072 mov r2, #33554432 + 1314 07c4 03E0 b .L38 + 1315 .L314: + 1316 07c6 4FF40022 mov r2, #524288 + 1317 07ca 00E0 b .L38 + 1318 .L169: + 1319 07cc 0822 movs r2, #8 + 1320 .L38: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1321 .loc 1 193 5 discriminator 100 view .LVU269 + 1322 07ce 3B4B ldr r3, .L329+8 + 1323 07d0 9A60 str r2, [r3, #8] + 1324 07d2 64E7 b .L36 + 1325 .L170: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1326 .loc 1 193 5 view .LVU270 + 1327 07d4 0822 movs r2, #8 + 1328 07d6 FAE7 b .L38 + 1329 .L171: + 1330 07d8 0822 movs r2, #8 + 1331 07da F8E7 b .L38 + 1332 .L172: + 1333 07dc 0822 movs r2, #8 + 1334 07de F6E7 b .L38 + 1335 .L173: + ARM GAS /tmp/ccgvGc3k.s page 34 + + + 1336 07e0 4FF40072 mov r2, #512 + 1337 07e4 F3E7 b .L38 + 1338 .L174: + 1339 07e6 4FF40072 mov r2, #512 + 1340 07ea F0E7 b .L38 + 1341 .L175: + 1342 07ec 4FF40072 mov r2, #512 + 1343 07f0 EDE7 b .L38 + 1344 .L176: + 1345 07f2 4FF40072 mov r2, #512 + 1346 07f6 EAE7 b .L38 + 1347 .L177: + 1348 07f8 4FF40022 mov r2, #524288 + 1349 07fc E7E7 b .L38 + 1350 .L178: + 1351 07fe 4FF40022 mov r2, #524288 + 1352 0802 E4E7 b .L38 + 1353 .L179: + 1354 0804 4FF40022 mov r2, #524288 + 1355 0808 E1E7 b .L38 + 1356 .L37: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1357 .loc 1 193 5 discriminator 52 view .LVU271 + 1358 080a 2F4A ldr r2, .L329+20 + 1359 080c 9342 cmp r3, r2 + 1360 080e 60D9 bls .L39 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1361 .loc 1 193 5 discriminator 102 view .LVU272 + 1362 0810 483A subs r2, r2, #72 + 1363 0812 9342 cmp r3, r2 + 1364 0814 31D0 beq .L181 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1365 .loc 1 193 5 discriminator 104 view .LVU273 + 1366 0816 02F58062 add r2, r2, #1024 + 1367 081a 9342 cmp r3, r2 + 1368 081c 31D0 beq .L182 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1369 .loc 1 193 5 discriminator 106 view .LVU274 + 1370 081e A2F56872 sub r2, r2, #928 + 1371 0822 9342 cmp r3, r2 + 1372 0824 2FD0 beq .L183 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1373 .loc 1 193 5 discriminator 108 view .LVU275 + 1374 0826 02F58062 add r2, r2, #1024 + 1375 082a 9342 cmp r3, r2 + 1376 082c 2DD0 beq .L184 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1377 .loc 1 193 5 discriminator 110 view .LVU276 + 1378 082e A2F58962 sub r2, r2, #1096 + 1379 0832 9342 cmp r3, r2 + 1380 0834 2BD0 beq .L185 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1381 .loc 1 193 5 discriminator 112 view .LVU277 + 1382 0836 02F58062 add r2, r2, #1024 + 1383 083a 9342 cmp r3, r2 + 1384 083c 2AD0 beq .L186 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + ARM GAS /tmp/ccgvGc3k.s page 35 + + + 1385 .loc 1 193 5 discriminator 114 view .LVU278 + 1386 083e A2F56872 sub r2, r2, #928 + 1387 0842 9342 cmp r3, r2 + 1388 0844 29D0 beq .L187 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1389 .loc 1 193 5 discriminator 116 view .LVU279 + 1390 0846 02F58062 add r2, r2, #1024 + 1391 084a 9342 cmp r3, r2 + 1392 084c 28D0 beq .L188 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1393 .loc 1 193 5 discriminator 118 view .LVU280 + 1394 084e A2F58962 sub r2, r2, #1096 + 1395 0852 9342 cmp r3, r2 + 1396 0854 27D0 beq .L189 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1397 .loc 1 193 5 discriminator 120 view .LVU281 + 1398 0856 02F58062 add r2, r2, #1024 + 1399 085a 9342 cmp r3, r2 + 1400 085c 26D0 beq .L190 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1401 .loc 1 193 5 discriminator 122 view .LVU282 + 1402 085e A2F56872 sub r2, r2, #928 + 1403 0862 9342 cmp r3, r2 + 1404 0864 32D0 beq .L191 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1405 .loc 1 193 5 discriminator 124 view .LVU283 + 1406 0866 02F58062 add r2, r2, #1024 + 1407 086a 9342 cmp r3, r2 + 1408 086c 02D0 beq .L315 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1409 .loc 1 193 5 view .LVU284 + 1410 086e 4FF00073 mov r3, #33554432 + 1411 0872 03E0 b .L40 + 1412 .L315: + 1413 0874 4FF40023 mov r3, #524288 + 1414 0878 00E0 b .L40 + 1415 .L181: + 1416 087a 0823 movs r3, #8 + 1417 .L40: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1418 .loc 1 193 5 discriminator 151 view .LVU285 + 1419 087c 0E4A ldr r2, .L329+4 + 1420 087e D360 str r3, [r2, #12] + 1421 0880 0DE7 b .L36 + 1422 .L182: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1423 .loc 1 193 5 view .LVU286 + 1424 0882 0823 movs r3, #8 + 1425 0884 FAE7 b .L40 + 1426 .L183: + 1427 0886 0823 movs r3, #8 + 1428 0888 F8E7 b .L40 + 1429 .L184: + 1430 088a 0823 movs r3, #8 + 1431 088c F6E7 b .L40 + 1432 .L185: + 1433 088e 4FF40073 mov r3, #512 + ARM GAS /tmp/ccgvGc3k.s page 36 + + + 1434 0892 F3E7 b .L40 + 1435 .L186: + 1436 0894 4FF40073 mov r3, #512 + 1437 0898 F0E7 b .L40 + 1438 .L187: + 1439 089a 4FF40073 mov r3, #512 + 1440 089e EDE7 b .L40 + 1441 .L188: + 1442 08a0 4FF40073 mov r3, #512 + 1443 08a4 EAE7 b .L40 + 1444 .L189: + 1445 08a6 4FF40023 mov r3, #524288 + 1446 08aa E7E7 b .L40 + 1447 .L190: + 1448 08ac 4FF40023 mov r3, #524288 + 1449 08b0 E4E7 b .L40 + 1450 .L330: + 1451 08b2 00BF .align 2 + 1452 .L329: + 1453 08b4 10600240 .word 1073897488 + 1454 08b8 00600240 .word 1073897472 + 1455 08bc 00640240 .word 1073898496 + 1456 08c0 58640240 .word 1073898584 + 1457 08c4 B8600240 .word 1073897656 + 1458 08c8 58600240 .word 1073897560 + 1459 .L191: + 1460 08cc 4FF40023 mov r3, #524288 + 1461 08d0 D4E7 b .L40 + 1462 .L39: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1463 .loc 1 193 5 discriminator 103 view .LVU287 + 1464 08d2 B24A ldr r2, .L331 + 1465 08d4 9342 cmp r3, r2 + 1466 08d6 31D0 beq .L193 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1467 .loc 1 193 5 discriminator 153 view .LVU288 + 1468 08d8 02F58062 add r2, r2, #1024 + 1469 08dc 9342 cmp r3, r2 + 1470 08de 31D0 beq .L194 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1471 .loc 1 193 5 discriminator 155 view .LVU289 + 1472 08e0 A2F56872 sub r2, r2, #928 + 1473 08e4 9342 cmp r3, r2 + 1474 08e6 2FD0 beq .L195 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1475 .loc 1 193 5 discriminator 157 view .LVU290 + 1476 08e8 02F58062 add r2, r2, #1024 + 1477 08ec 9342 cmp r3, r2 + 1478 08ee 2DD0 beq .L196 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1479 .loc 1 193 5 discriminator 159 view .LVU291 + 1480 08f0 A2F58962 sub r2, r2, #1096 + 1481 08f4 9342 cmp r3, r2 + 1482 08f6 2BD0 beq .L197 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1483 .loc 1 193 5 discriminator 161 view .LVU292 + 1484 08f8 02F58062 add r2, r2, #1024 + ARM GAS /tmp/ccgvGc3k.s page 37 + + + 1485 08fc 9342 cmp r3, r2 + 1486 08fe 2AD0 beq .L198 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1487 .loc 1 193 5 discriminator 163 view .LVU293 + 1488 0900 A2F56872 sub r2, r2, #928 + 1489 0904 9342 cmp r3, r2 + 1490 0906 29D0 beq .L199 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1491 .loc 1 193 5 discriminator 165 view .LVU294 + 1492 0908 02F58062 add r2, r2, #1024 + 1493 090c 9342 cmp r3, r2 + 1494 090e 28D0 beq .L200 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1495 .loc 1 193 5 discriminator 167 view .LVU295 + 1496 0910 A2F58962 sub r2, r2, #1096 + 1497 0914 9342 cmp r3, r2 + 1498 0916 27D0 beq .L201 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1499 .loc 1 193 5 discriminator 169 view .LVU296 + 1500 0918 02F58062 add r2, r2, #1024 + 1501 091c 9342 cmp r3, r2 + 1502 091e 26D0 beq .L202 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1503 .loc 1 193 5 discriminator 171 view .LVU297 + 1504 0920 A2F56872 sub r2, r2, #928 + 1505 0924 9342 cmp r3, r2 + 1506 0926 25D0 beq .L203 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1507 .loc 1 193 5 discriminator 173 view .LVU298 + 1508 0928 02F58062 add r2, r2, #1024 + 1509 092c 9342 cmp r3, r2 + 1510 092e 02D0 beq .L316 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1511 .loc 1 193 5 view .LVU299 + 1512 0930 4FF00073 mov r3, #33554432 + 1513 0934 03E0 b .L41 + 1514 .L316: + 1515 0936 4FF40023 mov r3, #524288 + 1516 093a 00E0 b .L41 + 1517 .L193: + 1518 093c 0823 movs r3, #8 + 1519 .L41: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1520 .loc 1 193 5 discriminator 200 view .LVU300 + 1521 093e 984A ldr r2, .L331+4 + 1522 0940 9360 str r3, [r2, #8] + 1523 0942 ACE6 b .L36 + 1524 .L194: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_DME_FLAG_INDEX(hdma)); + 1525 .loc 1 193 5 view .LVU301 + 1526 0944 0823 movs r3, #8 + 1527 0946 FAE7 b .L41 + 1528 .L195: + 1529 0948 0823 movs r3, #8 + 1530 094a F8E7 b .L41 + 1531 .L196: + 1532 094c 0823 movs r3, #8 + ARM GAS /tmp/ccgvGc3k.s page 38 + + + 1533 094e F6E7 b .L41 + 1534 .L197: + 1535 0950 4FF40073 mov r3, #512 + 1536 0954 F3E7 b .L41 + 1537 .L198: + 1538 0956 4FF40073 mov r3, #512 + 1539 095a F0E7 b .L41 + 1540 .L199: + 1541 095c 4FF40073 mov r3, #512 + 1542 0960 EDE7 b .L41 + 1543 .L200: + 1544 0962 4FF40073 mov r3, #512 + 1545 0966 EAE7 b .L41 + 1546 .L201: + 1547 0968 4FF40023 mov r3, #524288 + 1548 096c E7E7 b .L41 + 1549 .L202: + 1550 096e 4FF40023 mov r3, #524288 + 1551 0972 E4E7 b .L41 + 1552 .L203: + 1553 0974 4FF40023 mov r3, #524288 + 1554 0978 E1E7 b .L41 + 1555 .L313: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1556 .loc 1 194 5 view .LVU302 + 1557 097a 4FF48022 mov r2, #262144 + 1558 097e 00E0 b .L43 + 1559 .L205: + 1560 0980 0422 movs r2, #4 + 1561 .L43: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1562 .loc 1 194 5 discriminator 50 view .LVU303 + 1563 0982 884B ldr r3, .L331+8 + 1564 0984 DA60 str r2, [r3, #12] + 1565 .L44: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1566 .loc 1 195 5 is_stmt 1 view .LVU304 + 1567 0986 2368 ldr r3, [r4] + 1568 0988 874A ldr r2, .L331+12 + 1569 098a 9342 cmp r3, r2 + 1570 098c 40F2A181 bls .L50 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1571 .loc 1 195 5 is_stmt 0 discriminator 1 view .LVU305 + 1572 0990 A2F58962 sub r2, r2, #1096 + 1573 0994 9342 cmp r3, r2 + 1574 0996 00F06781 beq .L253 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1575 .loc 1 195 5 discriminator 3 view .LVU306 + 1576 099a 02F58062 add r2, r2, #1024 + 1577 099e 9342 cmp r3, r2 + 1578 09a0 00F08081 beq .L254 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1579 .loc 1 195 5 discriminator 5 view .LVU307 + 1580 09a4 A2F56872 sub r2, r2, #928 + 1581 09a8 9342 cmp r3, r2 + 1582 09aa 00F07D81 beq .L255 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + ARM GAS /tmp/ccgvGc3k.s page 39 + + + 1583 .loc 1 195 5 discriminator 7 view .LVU308 + 1584 09ae 02F58062 add r2, r2, #1024 + 1585 09b2 9342 cmp r3, r2 + 1586 09b4 00F07A81 beq .L256 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1587 .loc 1 195 5 discriminator 9 view .LVU309 + 1588 09b8 A2F58962 sub r2, r2, #1096 + 1589 09bc 9342 cmp r3, r2 + 1590 09be 00F07781 beq .L257 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1591 .loc 1 195 5 discriminator 11 view .LVU310 + 1592 09c2 02F58062 add r2, r2, #1024 + 1593 09c6 9342 cmp r3, r2 + 1594 09c8 00F07481 beq .L258 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1595 .loc 1 195 5 discriminator 13 view .LVU311 + 1596 09cc A2F56872 sub r2, r2, #928 + 1597 09d0 9342 cmp r3, r2 + 1598 09d2 00F07181 beq .L259 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1599 .loc 1 195 5 discriminator 15 view .LVU312 + 1600 09d6 02F58062 add r2, r2, #1024 + 1601 09da 9342 cmp r3, r2 + 1602 09dc 00F06E81 beq .L260 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1603 .loc 1 195 5 discriminator 17 view .LVU313 + 1604 09e0 A2F58962 sub r2, r2, #1096 + 1605 09e4 9342 cmp r3, r2 + 1606 09e6 00F06B81 beq .L261 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1607 .loc 1 195 5 discriminator 19 view .LVU314 + 1608 09ea 02F58062 add r2, r2, #1024 + 1609 09ee 9342 cmp r3, r2 + 1610 09f0 00F06981 beq .L262 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1611 .loc 1 195 5 discriminator 21 view .LVU315 + 1612 09f4 A2F56872 sub r2, r2, #928 + 1613 09f8 9342 cmp r3, r2 + 1614 09fa 00F06781 beq .L263 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1615 .loc 1 195 5 discriminator 23 view .LVU316 + 1616 09fe 02F58062 add r2, r2, #1024 + 1617 0a02 9342 cmp r3, r2 + 1618 0a04 00F02D81 beq .L317 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1619 .loc 1 195 5 view .LVU317 + 1620 0a08 4FF48002 mov r2, #4194304 + 1621 0a0c 2DE1 b .L51 + 1622 .L206: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1623 .loc 1 194 5 view .LVU318 + 1624 0a0e 0422 movs r2, #4 + 1625 0a10 B7E7 b .L43 + 1626 .L207: + 1627 0a12 0422 movs r2, #4 + 1628 0a14 B5E7 b .L43 + 1629 .L208: + ARM GAS /tmp/ccgvGc3k.s page 40 + + + 1630 0a16 0422 movs r2, #4 + 1631 0a18 B3E7 b .L43 + 1632 .L209: + 1633 0a1a 4FF48072 mov r2, #256 + 1634 0a1e B0E7 b .L43 + 1635 .L210: + 1636 0a20 4FF48072 mov r2, #256 + 1637 0a24 ADE7 b .L43 + 1638 .L211: + 1639 0a26 4FF48072 mov r2, #256 + 1640 0a2a AAE7 b .L43 + 1641 .L212: + 1642 0a2c 4FF48072 mov r2, #256 + 1643 0a30 A7E7 b .L43 + 1644 .L213: + 1645 0a32 4FF48022 mov r2, #262144 + 1646 0a36 A4E7 b .L43 + 1647 .L214: + 1648 0a38 4FF48022 mov r2, #262144 + 1649 0a3c A1E7 b .L43 + 1650 .L215: + 1651 0a3e 4FF48022 mov r2, #262144 + 1652 0a42 9EE7 b .L43 + 1653 .L42: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1654 .loc 1 194 5 discriminator 2 view .LVU319 + 1655 0a44 594A ldr r2, .L331+16 + 1656 0a46 9342 cmp r3, r2 + 1657 0a48 53D9 bls .L45 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1658 .loc 1 194 5 discriminator 51 view .LVU320 + 1659 0a4a A83A subs r2, r2, #168 + 1660 0a4c 9342 cmp r3, r2 + 1661 0a4e 31D0 beq .L217 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1662 .loc 1 194 5 discriminator 53 view .LVU321 + 1663 0a50 02F58062 add r2, r2, #1024 + 1664 0a54 9342 cmp r3, r2 + 1665 0a56 31D0 beq .L218 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1666 .loc 1 194 5 discriminator 55 view .LVU322 + 1667 0a58 A2F56872 sub r2, r2, #928 + 1668 0a5c 9342 cmp r3, r2 + 1669 0a5e 2FD0 beq .L219 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1670 .loc 1 194 5 discriminator 57 view .LVU323 + 1671 0a60 02F58062 add r2, r2, #1024 + 1672 0a64 9342 cmp r3, r2 + 1673 0a66 2DD0 beq .L220 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1674 .loc 1 194 5 discriminator 59 view .LVU324 + 1675 0a68 A2F58962 sub r2, r2, #1096 + 1676 0a6c 9342 cmp r3, r2 + 1677 0a6e 2BD0 beq .L221 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1678 .loc 1 194 5 discriminator 61 view .LVU325 + 1679 0a70 02F58062 add r2, r2, #1024 + ARM GAS /tmp/ccgvGc3k.s page 41 + + + 1680 0a74 9342 cmp r3, r2 + 1681 0a76 2AD0 beq .L222 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1682 .loc 1 194 5 discriminator 63 view .LVU326 + 1683 0a78 A2F56872 sub r2, r2, #928 + 1684 0a7c 9342 cmp r3, r2 + 1685 0a7e 29D0 beq .L223 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1686 .loc 1 194 5 discriminator 65 view .LVU327 + 1687 0a80 02F58062 add r2, r2, #1024 + 1688 0a84 9342 cmp r3, r2 + 1689 0a86 28D0 beq .L224 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1690 .loc 1 194 5 discriminator 67 view .LVU328 + 1691 0a88 A2F58962 sub r2, r2, #1096 + 1692 0a8c 9342 cmp r3, r2 + 1693 0a8e 27D0 beq .L225 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1694 .loc 1 194 5 discriminator 69 view .LVU329 + 1695 0a90 02F58062 add r2, r2, #1024 + 1696 0a94 9342 cmp r3, r2 + 1697 0a96 26D0 beq .L226 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1698 .loc 1 194 5 discriminator 71 view .LVU330 + 1699 0a98 A2F56872 sub r2, r2, #928 + 1700 0a9c 9342 cmp r3, r2 + 1701 0a9e 25D0 beq .L227 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1702 .loc 1 194 5 discriminator 73 view .LVU331 + 1703 0aa0 02F58062 add r2, r2, #1024 + 1704 0aa4 9342 cmp r3, r2 + 1705 0aa6 02D0 beq .L318 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1706 .loc 1 194 5 view .LVU332 + 1707 0aa8 4FF08072 mov r2, #16777216 + 1708 0aac 03E0 b .L46 + 1709 .L318: + 1710 0aae 4FF48022 mov r2, #262144 + 1711 0ab2 00E0 b .L46 + 1712 .L217: + 1713 0ab4 0422 movs r2, #4 + 1714 .L46: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1715 .loc 1 194 5 discriminator 100 view .LVU333 + 1716 0ab6 3B4B ldr r3, .L331+8 + 1717 0ab8 9A60 str r2, [r3, #8] + 1718 0aba 64E7 b .L44 + 1719 .L218: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1720 .loc 1 194 5 view .LVU334 + 1721 0abc 0422 movs r2, #4 + 1722 0abe FAE7 b .L46 + 1723 .L219: + 1724 0ac0 0422 movs r2, #4 + 1725 0ac2 F8E7 b .L46 + 1726 .L220: + 1727 0ac4 0422 movs r2, #4 + ARM GAS /tmp/ccgvGc3k.s page 42 + + + 1728 0ac6 F6E7 b .L46 + 1729 .L221: + 1730 0ac8 4FF48072 mov r2, #256 + 1731 0acc F3E7 b .L46 + 1732 .L222: + 1733 0ace 4FF48072 mov r2, #256 + 1734 0ad2 F0E7 b .L46 + 1735 .L223: + 1736 0ad4 4FF48072 mov r2, #256 + 1737 0ad8 EDE7 b .L46 + 1738 .L224: + 1739 0ada 4FF48072 mov r2, #256 + 1740 0ade EAE7 b .L46 + 1741 .L225: + 1742 0ae0 4FF48022 mov r2, #262144 + 1743 0ae4 E7E7 b .L46 + 1744 .L226: + 1745 0ae6 4FF48022 mov r2, #262144 + 1746 0aea E4E7 b .L46 + 1747 .L227: + 1748 0aec 4FF48022 mov r2, #262144 + 1749 0af0 E1E7 b .L46 + 1750 .L45: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1751 .loc 1 194 5 discriminator 52 view .LVU335 + 1752 0af2 2F4A ldr r2, .L331+20 + 1753 0af4 9342 cmp r3, r2 + 1754 0af6 60D9 bls .L47 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1755 .loc 1 194 5 discriminator 102 view .LVU336 + 1756 0af8 483A subs r2, r2, #72 + 1757 0afa 9342 cmp r3, r2 + 1758 0afc 31D0 beq .L229 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1759 .loc 1 194 5 discriminator 104 view .LVU337 + 1760 0afe 02F58062 add r2, r2, #1024 + 1761 0b02 9342 cmp r3, r2 + 1762 0b04 31D0 beq .L230 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1763 .loc 1 194 5 discriminator 106 view .LVU338 + 1764 0b06 A2F56872 sub r2, r2, #928 + 1765 0b0a 9342 cmp r3, r2 + 1766 0b0c 2FD0 beq .L231 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1767 .loc 1 194 5 discriminator 108 view .LVU339 + 1768 0b0e 02F58062 add r2, r2, #1024 + 1769 0b12 9342 cmp r3, r2 + 1770 0b14 2DD0 beq .L232 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1771 .loc 1 194 5 discriminator 110 view .LVU340 + 1772 0b16 A2F58962 sub r2, r2, #1096 + 1773 0b1a 9342 cmp r3, r2 + 1774 0b1c 2BD0 beq .L233 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1775 .loc 1 194 5 discriminator 112 view .LVU341 + 1776 0b1e 02F58062 add r2, r2, #1024 + 1777 0b22 9342 cmp r3, r2 + ARM GAS /tmp/ccgvGc3k.s page 43 + + + 1778 0b24 2AD0 beq .L234 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1779 .loc 1 194 5 discriminator 114 view .LVU342 + 1780 0b26 A2F56872 sub r2, r2, #928 + 1781 0b2a 9342 cmp r3, r2 + 1782 0b2c 29D0 beq .L235 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1783 .loc 1 194 5 discriminator 116 view .LVU343 + 1784 0b2e 02F58062 add r2, r2, #1024 + 1785 0b32 9342 cmp r3, r2 + 1786 0b34 28D0 beq .L236 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1787 .loc 1 194 5 discriminator 118 view .LVU344 + 1788 0b36 A2F58962 sub r2, r2, #1096 + 1789 0b3a 9342 cmp r3, r2 + 1790 0b3c 27D0 beq .L237 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1791 .loc 1 194 5 discriminator 120 view .LVU345 + 1792 0b3e 02F58062 add r2, r2, #1024 + 1793 0b42 9342 cmp r3, r2 + 1794 0b44 26D0 beq .L238 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1795 .loc 1 194 5 discriminator 122 view .LVU346 + 1796 0b46 A2F56872 sub r2, r2, #928 + 1797 0b4a 9342 cmp r3, r2 + 1798 0b4c 32D0 beq .L239 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1799 .loc 1 194 5 discriminator 124 view .LVU347 + 1800 0b4e 02F58062 add r2, r2, #1024 + 1801 0b52 9342 cmp r3, r2 + 1802 0b54 02D0 beq .L319 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1803 .loc 1 194 5 view .LVU348 + 1804 0b56 4FF08073 mov r3, #16777216 + 1805 0b5a 03E0 b .L48 + 1806 .L319: + 1807 0b5c 4FF48023 mov r3, #262144 + 1808 0b60 00E0 b .L48 + 1809 .L229: + 1810 0b62 0423 movs r3, #4 + 1811 .L48: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1812 .loc 1 194 5 discriminator 151 view .LVU349 + 1813 0b64 0E4A ldr r2, .L331+4 + 1814 0b66 D360 str r3, [r2, #12] + 1815 0b68 0DE7 b .L44 + 1816 .L230: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1817 .loc 1 194 5 view .LVU350 + 1818 0b6a 0423 movs r3, #4 + 1819 0b6c FAE7 b .L48 + 1820 .L231: + 1821 0b6e 0423 movs r3, #4 + 1822 0b70 F8E7 b .L48 + 1823 .L232: + 1824 0b72 0423 movs r3, #4 + 1825 0b74 F6E7 b .L48 + ARM GAS /tmp/ccgvGc3k.s page 44 + + + 1826 .L233: + 1827 0b76 4FF48073 mov r3, #256 + 1828 0b7a F3E7 b .L48 + 1829 .L234: + 1830 0b7c 4FF48073 mov r3, #256 + 1831 0b80 F0E7 b .L48 + 1832 .L235: + 1833 0b82 4FF48073 mov r3, #256 + 1834 0b86 EDE7 b .L48 + 1835 .L236: + 1836 0b88 4FF48073 mov r3, #256 + 1837 0b8c EAE7 b .L48 + 1838 .L237: + 1839 0b8e 4FF48023 mov r3, #262144 + 1840 0b92 E7E7 b .L48 + 1841 .L238: + 1842 0b94 4FF48023 mov r3, #262144 + 1843 0b98 E4E7 b .L48 + 1844 .L332: + 1845 0b9a 00BF .align 2 + 1846 .L331: + 1847 0b9c 10600240 .word 1073897488 + 1848 0ba0 00600240 .word 1073897472 + 1849 0ba4 00640240 .word 1073898496 + 1850 0ba8 58640240 .word 1073898584 + 1851 0bac B8600240 .word 1073897656 + 1852 0bb0 58600240 .word 1073897560 + 1853 .L239: + 1854 0bb4 4FF48023 mov r3, #262144 + 1855 0bb8 D4E7 b .L48 + 1856 .L47: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1857 .loc 1 194 5 discriminator 103 view .LVU351 + 1858 0bba 994A ldr r2, .L333 + 1859 0bbc 9342 cmp r3, r2 + 1860 0bbe 31D0 beq .L241 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1861 .loc 1 194 5 discriminator 153 view .LVU352 + 1862 0bc0 02F58062 add r2, r2, #1024 + 1863 0bc4 9342 cmp r3, r2 + 1864 0bc6 31D0 beq .L242 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1865 .loc 1 194 5 discriminator 155 view .LVU353 + 1866 0bc8 A2F56872 sub r2, r2, #928 + 1867 0bcc 9342 cmp r3, r2 + 1868 0bce 2FD0 beq .L243 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1869 .loc 1 194 5 discriminator 157 view .LVU354 + 1870 0bd0 02F58062 add r2, r2, #1024 + 1871 0bd4 9342 cmp r3, r2 + 1872 0bd6 2DD0 beq .L244 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1873 .loc 1 194 5 discriminator 159 view .LVU355 + 1874 0bd8 A2F58962 sub r2, r2, #1096 + 1875 0bdc 9342 cmp r3, r2 + 1876 0bde 2BD0 beq .L245 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + ARM GAS /tmp/ccgvGc3k.s page 45 + + + 1877 .loc 1 194 5 discriminator 161 view .LVU356 + 1878 0be0 02F58062 add r2, r2, #1024 + 1879 0be4 9342 cmp r3, r2 + 1880 0be6 2AD0 beq .L246 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1881 .loc 1 194 5 discriminator 163 view .LVU357 + 1882 0be8 A2F56872 sub r2, r2, #928 + 1883 0bec 9342 cmp r3, r2 + 1884 0bee 29D0 beq .L247 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1885 .loc 1 194 5 discriminator 165 view .LVU358 + 1886 0bf0 02F58062 add r2, r2, #1024 + 1887 0bf4 9342 cmp r3, r2 + 1888 0bf6 28D0 beq .L248 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1889 .loc 1 194 5 discriminator 167 view .LVU359 + 1890 0bf8 A2F58962 sub r2, r2, #1096 + 1891 0bfc 9342 cmp r3, r2 + 1892 0bfe 27D0 beq .L249 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1893 .loc 1 194 5 discriminator 169 view .LVU360 + 1894 0c00 02F58062 add r2, r2, #1024 + 1895 0c04 9342 cmp r3, r2 + 1896 0c06 26D0 beq .L250 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1897 .loc 1 194 5 discriminator 171 view .LVU361 + 1898 0c08 A2F56872 sub r2, r2, #928 + 1899 0c0c 9342 cmp r3, r2 + 1900 0c0e 25D0 beq .L251 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1901 .loc 1 194 5 discriminator 173 view .LVU362 + 1902 0c10 02F58062 add r2, r2, #1024 + 1903 0c14 9342 cmp r3, r2 + 1904 0c16 02D0 beq .L320 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1905 .loc 1 194 5 view .LVU363 + 1906 0c18 4FF08073 mov r3, #16777216 + 1907 0c1c 03E0 b .L49 + 1908 .L320: + 1909 0c1e 4FF48023 mov r3, #262144 + 1910 0c22 00E0 b .L49 + 1911 .L241: + 1912 0c24 0423 movs r3, #4 + 1913 .L49: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1914 .loc 1 194 5 discriminator 200 view .LVU364 + 1915 0c26 7F4A ldr r2, .L333+4 + 1916 0c28 9360 str r3, [r2, #8] + 1917 0c2a ACE6 b .L44 + 1918 .L242: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** __HAL_DMA_CLEAR_FLAG (hdma, __HAL_DMA_GET_FE_FLAG_INDEX(hdma)); + 1919 .loc 1 194 5 view .LVU365 + 1920 0c2c 0423 movs r3, #4 + 1921 0c2e FAE7 b .L49 + 1922 .L243: + 1923 0c30 0423 movs r3, #4 + 1924 0c32 F8E7 b .L49 + ARM GAS /tmp/ccgvGc3k.s page 46 + + + 1925 .L244: + 1926 0c34 0423 movs r3, #4 + 1927 0c36 F6E7 b .L49 + 1928 .L245: + 1929 0c38 4FF48073 mov r3, #256 + 1930 0c3c F3E7 b .L49 + 1931 .L246: + 1932 0c3e 4FF48073 mov r3, #256 + 1933 0c42 F0E7 b .L49 + 1934 .L247: + 1935 0c44 4FF48073 mov r3, #256 + 1936 0c48 EDE7 b .L49 + 1937 .L248: + 1938 0c4a 4FF48073 mov r3, #256 + 1939 0c4e EAE7 b .L49 + 1940 .L249: + 1941 0c50 4FF48023 mov r3, #262144 + 1942 0c54 E7E7 b .L49 + 1943 .L250: + 1944 0c56 4FF48023 mov r3, #262144 + 1945 0c5a E4E7 b .L49 + 1946 .L251: + 1947 0c5c 4FF48023 mov r3, #262144 + 1948 0c60 E1E7 b .L49 + 1949 .L317: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1950 .loc 1 195 5 view .LVU366 + 1951 0c62 4FF48032 mov r2, #65536 + 1952 0c66 00E0 b .L51 + 1953 .L253: + 1954 0c68 0122 movs r2, #1 + 1955 .L51: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1956 .loc 1 195 5 discriminator 50 view .LVU367 + 1957 0c6a 6F4B ldr r3, .L333+8 + 1958 0c6c DA60 str r2, [r3, #12] + 1959 .L52: + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->FCR |= DMA_IT_FE; + 1960 .loc 1 198 5 is_stmt 1 view .LVU368 + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->FCR |= DMA_IT_FE; + 1961 .loc 1 198 9 is_stmt 0 view .LVU369 + 1962 0c6e 2268 ldr r2, [r4] + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** hdma->Instance->FCR |= DMA_IT_FE; + 1963 .loc 1 198 25 view .LVU370 + 1964 0c70 1368 ldr r3, [r2] + 1965 0c72 43F01603 orr r3, r3, #22 + 1966 0c76 1360 str r3, [r2] + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1967 .loc 1 199 5 is_stmt 1 view .LVU371 + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1968 .loc 1 199 9 is_stmt 0 view .LVU372 + 1969 0c78 2268 ldr r2, [r4] + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1970 .loc 1 199 25 view .LVU373 + 1971 0c7a 5369 ldr r3, [r2, #20] + 1972 0c7c 43F08003 orr r3, r3, #128 + 1973 0c80 5361 str r3, [r2, #20] + ARM GAS /tmp/ccgvGc3k.s page 47 + + + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 1974 .loc 1 201 5 is_stmt 1 view .LVU374 + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 1975 .loc 1 201 13 is_stmt 0 view .LVU375 + 1976 0c82 236C ldr r3, [r4, #64] + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 1977 .loc 1 201 7 view .LVU376 + 1978 0c84 002B cmp r3, #0 + 1979 0c86 00F02581 beq .L321 + 1980 .L58: + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 1981 .loc 1 203 7 is_stmt 1 view .LVU377 + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 1982 .loc 1 203 11 is_stmt 0 view .LVU378 + 1983 0c8a 2268 ldr r2, [r4] + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 1984 .loc 1 203 27 view .LVU379 + 1985 0c8c 1368 ldr r3, [r2] + 1986 0c8e 43F00803 orr r3, r3, #8 + 1987 0c92 1360 str r3, [r2] + 1988 .L59: + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 1989 .loc 1 207 5 is_stmt 1 view .LVU380 + 1990 0c94 2268 ldr r2, [r4] + 1991 0c96 1368 ldr r3, [r2] + 1992 0c98 43F00103 orr r3, r3, #1 + 1993 0c9c 1360 str r3, [r2] + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1994 .loc 1 158 21 is_stmt 0 view .LVU381 + 1995 0c9e 0020 movs r0, #0 + 1996 0ca0 FFF7C4B9 b .L16 + 1997 .L254: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 1998 .loc 1 195 5 view .LVU382 + 1999 0ca4 0122 movs r2, #1 + 2000 0ca6 E0E7 b .L51 + 2001 .L255: + 2002 0ca8 0122 movs r2, #1 + 2003 0caa DEE7 b .L51 + 2004 .L256: + 2005 0cac 0122 movs r2, #1 + 2006 0cae DCE7 b .L51 + 2007 .L257: + 2008 0cb0 4022 movs r2, #64 + 2009 0cb2 DAE7 b .L51 + 2010 .L258: + 2011 0cb4 4022 movs r2, #64 + 2012 0cb6 D8E7 b .L51 + 2013 .L259: + 2014 0cb8 4022 movs r2, #64 + 2015 0cba D6E7 b .L51 + 2016 .L260: + 2017 0cbc 4022 movs r2, #64 + 2018 0cbe D4E7 b .L51 + 2019 .L261: + 2020 0cc0 4FF48032 mov r2, #65536 + 2021 0cc4 D1E7 b .L51 + ARM GAS /tmp/ccgvGc3k.s page 48 + + + 2022 .L262: + 2023 0cc6 4FF48032 mov r2, #65536 + 2024 0cca CEE7 b .L51 + 2025 .L263: + 2026 0ccc 4FF48032 mov r2, #65536 + 2027 0cd0 CBE7 b .L51 + 2028 .L50: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2029 .loc 1 195 5 discriminator 2 view .LVU383 + 2030 0cd2 564A ldr r2, .L333+12 + 2031 0cd4 9342 cmp r3, r2 + 2032 0cd6 4FD9 bls .L53 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2033 .loc 1 195 5 discriminator 51 view .LVU384 + 2034 0cd8 A83A subs r2, r2, #168 + 2035 0cda 9342 cmp r3, r2 + 2036 0cdc 31D0 beq .L265 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2037 .loc 1 195 5 discriminator 53 view .LVU385 + 2038 0cde 02F58062 add r2, r2, #1024 + 2039 0ce2 9342 cmp r3, r2 + 2040 0ce4 31D0 beq .L266 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2041 .loc 1 195 5 discriminator 55 view .LVU386 + 2042 0ce6 A2F56872 sub r2, r2, #928 + 2043 0cea 9342 cmp r3, r2 + 2044 0cec 2FD0 beq .L267 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2045 .loc 1 195 5 discriminator 57 view .LVU387 + 2046 0cee 02F58062 add r2, r2, #1024 + 2047 0cf2 9342 cmp r3, r2 + 2048 0cf4 2DD0 beq .L268 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2049 .loc 1 195 5 discriminator 59 view .LVU388 + 2050 0cf6 A2F58962 sub r2, r2, #1096 + 2051 0cfa 9342 cmp r3, r2 + 2052 0cfc 2BD0 beq .L269 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2053 .loc 1 195 5 discriminator 61 view .LVU389 + 2054 0cfe 02F58062 add r2, r2, #1024 + 2055 0d02 9342 cmp r3, r2 + 2056 0d04 29D0 beq .L270 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2057 .loc 1 195 5 discriminator 63 view .LVU390 + 2058 0d06 A2F56872 sub r2, r2, #928 + 2059 0d0a 9342 cmp r3, r2 + 2060 0d0c 27D0 beq .L271 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2061 .loc 1 195 5 discriminator 65 view .LVU391 + 2062 0d0e 02F58062 add r2, r2, #1024 + 2063 0d12 9342 cmp r3, r2 + 2064 0d14 25D0 beq .L272 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2065 .loc 1 195 5 discriminator 67 view .LVU392 + 2066 0d16 A2F58962 sub r2, r2, #1096 + 2067 0d1a 9342 cmp r3, r2 + 2068 0d1c 23D0 beq .L273 + ARM GAS /tmp/ccgvGc3k.s page 49 + + + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2069 .loc 1 195 5 discriminator 69 view .LVU393 + 2070 0d1e 02F58062 add r2, r2, #1024 + 2071 0d22 9342 cmp r3, r2 + 2072 0d24 22D0 beq .L274 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2073 .loc 1 195 5 discriminator 71 view .LVU394 + 2074 0d26 A2F56872 sub r2, r2, #928 + 2075 0d2a 9342 cmp r3, r2 + 2076 0d2c 21D0 beq .L275 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2077 .loc 1 195 5 discriminator 73 view .LVU395 + 2078 0d2e 02F58062 add r2, r2, #1024 + 2079 0d32 9342 cmp r3, r2 + 2080 0d34 02D0 beq .L322 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2081 .loc 1 195 5 view .LVU396 + 2082 0d36 4FF48002 mov r2, #4194304 + 2083 0d3a 03E0 b .L54 + 2084 .L322: + 2085 0d3c 4FF48032 mov r2, #65536 + 2086 0d40 00E0 b .L54 + 2087 .L265: + 2088 0d42 0122 movs r2, #1 + 2089 .L54: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2090 .loc 1 195 5 discriminator 100 view .LVU397 + 2091 0d44 384B ldr r3, .L333+8 + 2092 0d46 9A60 str r2, [r3, #8] + 2093 0d48 91E7 b .L52 + 2094 .L266: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2095 .loc 1 195 5 view .LVU398 + 2096 0d4a 0122 movs r2, #1 + 2097 0d4c FAE7 b .L54 + 2098 .L267: + 2099 0d4e 0122 movs r2, #1 + 2100 0d50 F8E7 b .L54 + 2101 .L268: + 2102 0d52 0122 movs r2, #1 + 2103 0d54 F6E7 b .L54 + 2104 .L269: + 2105 0d56 4022 movs r2, #64 + 2106 0d58 F4E7 b .L54 + 2107 .L270: + 2108 0d5a 4022 movs r2, #64 + 2109 0d5c F2E7 b .L54 + 2110 .L271: + 2111 0d5e 4022 movs r2, #64 + 2112 0d60 F0E7 b .L54 + 2113 .L272: + 2114 0d62 4022 movs r2, #64 + 2115 0d64 EEE7 b .L54 + 2116 .L273: + 2117 0d66 4FF48032 mov r2, #65536 + 2118 0d6a EBE7 b .L54 + 2119 .L274: + ARM GAS /tmp/ccgvGc3k.s page 50 + + + 2120 0d6c 4FF48032 mov r2, #65536 + 2121 0d70 E8E7 b .L54 + 2122 .L275: + 2123 0d72 4FF48032 mov r2, #65536 + 2124 0d76 E5E7 b .L54 + 2125 .L53: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2126 .loc 1 195 5 discriminator 52 view .LVU399 + 2127 0d78 2D4A ldr r2, .L333+16 + 2128 0d7a 9342 cmp r3, r2 + 2129 0d7c 5AD9 bls .L55 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2130 .loc 1 195 5 discriminator 102 view .LVU400 + 2131 0d7e 483A subs r2, r2, #72 + 2132 0d80 9342 cmp r3, r2 + 2133 0d82 31D0 beq .L277 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2134 .loc 1 195 5 discriminator 104 view .LVU401 + 2135 0d84 02F58062 add r2, r2, #1024 + 2136 0d88 9342 cmp r3, r2 + 2137 0d8a 31D0 beq .L278 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2138 .loc 1 195 5 discriminator 106 view .LVU402 + 2139 0d8c A2F56872 sub r2, r2, #928 + 2140 0d90 9342 cmp r3, r2 + 2141 0d92 2FD0 beq .L279 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2142 .loc 1 195 5 discriminator 108 view .LVU403 + 2143 0d94 02F58062 add r2, r2, #1024 + 2144 0d98 9342 cmp r3, r2 + 2145 0d9a 2DD0 beq .L280 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2146 .loc 1 195 5 discriminator 110 view .LVU404 + 2147 0d9c A2F58962 sub r2, r2, #1096 + 2148 0da0 9342 cmp r3, r2 + 2149 0da2 2BD0 beq .L281 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2150 .loc 1 195 5 discriminator 112 view .LVU405 + 2151 0da4 02F58062 add r2, r2, #1024 + 2152 0da8 9342 cmp r3, r2 + 2153 0daa 29D0 beq .L282 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2154 .loc 1 195 5 discriminator 114 view .LVU406 + 2155 0dac A2F56872 sub r2, r2, #928 + 2156 0db0 9342 cmp r3, r2 + 2157 0db2 27D0 beq .L283 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2158 .loc 1 195 5 discriminator 116 view .LVU407 + 2159 0db4 02F58062 add r2, r2, #1024 + 2160 0db8 9342 cmp r3, r2 + 2161 0dba 25D0 beq .L284 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2162 .loc 1 195 5 discriminator 118 view .LVU408 + 2163 0dbc A2F58962 sub r2, r2, #1096 + 2164 0dc0 9342 cmp r3, r2 + 2165 0dc2 23D0 beq .L285 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + ARM GAS /tmp/ccgvGc3k.s page 51 + + + 2166 .loc 1 195 5 discriminator 120 view .LVU409 + 2167 0dc4 02F58062 add r2, r2, #1024 + 2168 0dc8 9342 cmp r3, r2 + 2169 0dca 22D0 beq .L286 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2170 .loc 1 195 5 discriminator 122 view .LVU410 + 2171 0dcc A2F56872 sub r2, r2, #928 + 2172 0dd0 9342 cmp r3, r2 + 2173 0dd2 21D0 beq .L287 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2174 .loc 1 195 5 discriminator 124 view .LVU411 + 2175 0dd4 02F58062 add r2, r2, #1024 + 2176 0dd8 9342 cmp r3, r2 + 2177 0dda 02D0 beq .L323 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2178 .loc 1 195 5 view .LVU412 + 2179 0ddc 4FF48003 mov r3, #4194304 + 2180 0de0 03E0 b .L56 + 2181 .L323: + 2182 0de2 4FF48033 mov r3, #65536 + 2183 0de6 00E0 b .L56 + 2184 .L277: + 2185 0de8 0123 movs r3, #1 + 2186 .L56: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2187 .loc 1 195 5 discriminator 151 view .LVU413 + 2188 0dea 0E4A ldr r2, .L333+4 + 2189 0dec D360 str r3, [r2, #12] + 2190 0dee 3EE7 b .L52 + 2191 .L278: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2192 .loc 1 195 5 view .LVU414 + 2193 0df0 0123 movs r3, #1 + 2194 0df2 FAE7 b .L56 + 2195 .L279: + 2196 0df4 0123 movs r3, #1 + 2197 0df6 F8E7 b .L56 + 2198 .L280: + 2199 0df8 0123 movs r3, #1 + 2200 0dfa F6E7 b .L56 + 2201 .L281: + 2202 0dfc 4023 movs r3, #64 + 2203 0dfe F4E7 b .L56 + 2204 .L282: + 2205 0e00 4023 movs r3, #64 + 2206 0e02 F2E7 b .L56 + 2207 .L283: + 2208 0e04 4023 movs r3, #64 + 2209 0e06 F0E7 b .L56 + 2210 .L284: + 2211 0e08 4023 movs r3, #64 + 2212 0e0a EEE7 b .L56 + 2213 .L285: + 2214 0e0c 4FF48033 mov r3, #65536 + 2215 0e10 EBE7 b .L56 + 2216 .L286: + 2217 0e12 4FF48033 mov r3, #65536 + ARM GAS /tmp/ccgvGc3k.s page 52 + + + 2218 0e16 E8E7 b .L56 + 2219 .L287: + 2220 0e18 4FF48033 mov r3, #65536 + 2221 0e1c E5E7 b .L56 + 2222 .L334: + 2223 0e1e 00BF .align 2 + 2224 .L333: + 2225 0e20 10600240 .word 1073897488 + 2226 0e24 00600240 .word 1073897472 + 2227 0e28 00640240 .word 1073898496 + 2228 0e2c B8600240 .word 1073897656 + 2229 0e30 58600240 .word 1073897560 + 2230 .L55: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2231 .loc 1 195 5 discriminator 103 view .LVU415 + 2232 0e34 2B4A ldr r2, .L335 + 2233 0e36 9342 cmp r3, r2 + 2234 0e38 31D0 beq .L289 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2235 .loc 1 195 5 discriminator 153 view .LVU416 + 2236 0e3a 02F58062 add r2, r2, #1024 + 2237 0e3e 9342 cmp r3, r2 + 2238 0e40 31D0 beq .L290 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2239 .loc 1 195 5 discriminator 155 view .LVU417 + 2240 0e42 A2F56872 sub r2, r2, #928 + 2241 0e46 9342 cmp r3, r2 + 2242 0e48 2FD0 beq .L291 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2243 .loc 1 195 5 discriminator 157 view .LVU418 + 2244 0e4a 02F58062 add r2, r2, #1024 + 2245 0e4e 9342 cmp r3, r2 + 2246 0e50 2DD0 beq .L292 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2247 .loc 1 195 5 discriminator 159 view .LVU419 + 2248 0e52 A2F58962 sub r2, r2, #1096 + 2249 0e56 9342 cmp r3, r2 + 2250 0e58 2BD0 beq .L293 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2251 .loc 1 195 5 discriminator 161 view .LVU420 + 2252 0e5a 02F58062 add r2, r2, #1024 + 2253 0e5e 9342 cmp r3, r2 + 2254 0e60 29D0 beq .L294 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2255 .loc 1 195 5 discriminator 163 view .LVU421 + 2256 0e62 A2F56872 sub r2, r2, #928 + 2257 0e66 9342 cmp r3, r2 + 2258 0e68 27D0 beq .L295 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2259 .loc 1 195 5 discriminator 165 view .LVU422 + 2260 0e6a 02F58062 add r2, r2, #1024 + 2261 0e6e 9342 cmp r3, r2 + 2262 0e70 25D0 beq .L296 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2263 .loc 1 195 5 discriminator 167 view .LVU423 + 2264 0e72 A2F58962 sub r2, r2, #1096 + 2265 0e76 9342 cmp r3, r2 + ARM GAS /tmp/ccgvGc3k.s page 53 + + + 2266 0e78 23D0 beq .L297 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2267 .loc 1 195 5 discriminator 169 view .LVU424 + 2268 0e7a 02F58062 add r2, r2, #1024 + 2269 0e7e 9342 cmp r3, r2 + 2270 0e80 22D0 beq .L298 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2271 .loc 1 195 5 discriminator 171 view .LVU425 + 2272 0e82 A2F56872 sub r2, r2, #928 + 2273 0e86 9342 cmp r3, r2 + 2274 0e88 21D0 beq .L299 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2275 .loc 1 195 5 discriminator 173 view .LVU426 + 2276 0e8a 02F58062 add r2, r2, #1024 + 2277 0e8e 9342 cmp r3, r2 + 2278 0e90 02D0 beq .L324 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2279 .loc 1 195 5 view .LVU427 + 2280 0e92 4FF48003 mov r3, #4194304 + 2281 0e96 03E0 b .L57 + 2282 .L324: + 2283 0e98 4FF48033 mov r3, #65536 + 2284 0e9c 00E0 b .L57 + 2285 .L289: + 2286 0e9e 0123 movs r3, #1 + 2287 .L57: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2288 .loc 1 195 5 discriminator 200 view .LVU428 + 2289 0ea0 114A ldr r2, .L335+4 + 2290 0ea2 9360 str r3, [r2, #8] + 2291 0ea4 E3E6 b .L52 + 2292 .L290: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2293 .loc 1 195 5 view .LVU429 + 2294 0ea6 0123 movs r3, #1 + 2295 0ea8 FAE7 b .L57 + 2296 .L291: + 2297 0eaa 0123 movs r3, #1 + 2298 0eac F8E7 b .L57 + 2299 .L292: + 2300 0eae 0123 movs r3, #1 + 2301 0eb0 F6E7 b .L57 + 2302 .L293: + 2303 0eb2 4023 movs r3, #64 + 2304 0eb4 F4E7 b .L57 + 2305 .L294: + 2306 0eb6 4023 movs r3, #64 + 2307 0eb8 F2E7 b .L57 + 2308 .L295: + 2309 0eba 4023 movs r3, #64 + 2310 0ebc F0E7 b .L57 + 2311 .L296: + 2312 0ebe 4023 movs r3, #64 + 2313 0ec0 EEE7 b .L57 + 2314 .L297: + 2315 0ec2 4FF48033 mov r3, #65536 + 2316 0ec6 EBE7 b .L57 + ARM GAS /tmp/ccgvGc3k.s page 54 + + + 2317 .L298: + 2318 0ec8 4FF48033 mov r3, #65536 + 2319 0ecc E8E7 b .L57 + 2320 .L299: + 2321 0ece 4FF48033 mov r3, #65536 + 2322 0ed2 E5E7 b .L57 + 2323 .L321: + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 2324 .loc 1 201 53 discriminator 1 view .LVU430 + 2325 0ed4 A36C ldr r3, [r4, #72] + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 2326 .loc 1 201 45 discriminator 1 view .LVU431 + 2327 0ed6 002B cmp r3, #0 + 2328 0ed8 7FF4D7AE bne .L58 + 2329 0edc DAE6 b .L59 + 2330 .LVL38: + 2331 .L60: + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2332 .loc 1 171 3 view .LVU432 + 2333 0ede 0220 movs r0, #2 + 2334 0ee0 FFF7A4B8 b .L16 + 2335 .L336: + 2336 .align 2 + 2337 .L335: + 2338 0ee4 10600240 .word 1073897488 + 2339 0ee8 00600240 .word 1073897472 + 2340 .cfi_endproc + 2341 .LFE142: + 2343 .section .text.HAL_DMAEx_ChangeMemory,"ax",%progbits + 2344 .align 1 + 2345 .global HAL_DMAEx_ChangeMemory + 2346 .syntax unified + 2347 .thumb + 2348 .thumb_func + 2349 .fpu fpv5-d16 + 2351 HAL_DMAEx_ChangeMemory: + 2352 .LVL39: + 2353 .LFB143: + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** if(memory == MEMORY0) + 2354 .loc 1 235 1 is_stmt 1 view -0 + 2355 .cfi_startproc + 2356 @ args = 0, pretend = 0, frame = 0 + 2357 @ frame_needed = 0, uses_anonymous_args = 0 + 2358 @ link register save eliminated. + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 2359 .loc 1 236 3 view .LVU434 + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** { + 2360 .loc 1 236 5 is_stmt 0 view .LVU435 + 2361 0000 1AB9 cbnz r2, .L338 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 2362 .loc 1 239 5 is_stmt 1 view .LVU436 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 2363 .loc 1 239 9 is_stmt 0 view .LVU437 + 2364 0002 0368 ldr r3, [r0] + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 2365 .loc 1 239 26 view .LVU438 + 2366 0004 D960 str r1, [r3, #12] + ARM GAS /tmp/ccgvGc3k.s page 55 + + + 2367 .L339: + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 2368 .loc 1 247 3 is_stmt 1 view .LVU439 + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2369 .loc 1 248 1 is_stmt 0 view .LVU440 + 2370 0006 0020 movs r0, #0 + 2371 .LVL40: + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** + 2372 .loc 1 248 1 view .LVU441 + 2373 0008 7047 bx lr + 2374 .LVL41: + 2375 .L338: + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 2376 .loc 1 244 5 is_stmt 1 view .LVU442 + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 2377 .loc 1 244 9 is_stmt 0 view .LVU443 + 2378 000a 0368 ldr r3, [r0] + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c **** } + 2379 .loc 1 244 26 view .LVU444 + 2380 000c 1961 str r1, [r3, #16] + 2381 000e FAE7 b .L339 + 2382 .cfi_endproc + 2383 .LFE143: + 2385 .text + 2386 .Letext0: + 2387 .file 2 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 2388 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 2389 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 2390 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 2391 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h" + ARM GAS /tmp/ccgvGc3k.s page 56 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_dma_ex.c + /tmp/ccgvGc3k.s:17 .text.DMA_MultiBufferSetConfig:0000000000000000 $t + /tmp/ccgvGc3k.s:24 .text.DMA_MultiBufferSetConfig:0000000000000000 DMA_MultiBufferSetConfig + /tmp/ccgvGc3k.s:88 .text.HAL_DMAEx_MultiBufferStart:0000000000000000 $t + /tmp/ccgvGc3k.s:95 .text.HAL_DMAEx_MultiBufferStart:0000000000000000 HAL_DMAEx_MultiBufferStart + /tmp/ccgvGc3k.s:200 .text.HAL_DMAEx_MultiBufferStart_IT:0000000000000000 $t + /tmp/ccgvGc3k.s:207 .text.HAL_DMAEx_MultiBufferStart_IT:0000000000000000 HAL_DMAEx_MultiBufferStart_IT + /tmp/ccgvGc3k.s:665 .text.HAL_DMAEx_MultiBufferStart_IT:00000000000002f0 $d + /tmp/ccgvGc3k.s:672 .text.HAL_DMAEx_MultiBufferStart_IT:0000000000000304 $t + /tmp/ccgvGc3k.s:1059 .text.HAL_DMAEx_MultiBufferStart_IT:00000000000005cc $d + /tmp/ccgvGc3k.s:1066 .text.HAL_DMAEx_MultiBufferStart_IT:00000000000005e4 $t + /tmp/ccgvGc3k.s:1453 .text.HAL_DMAEx_MultiBufferStart_IT:00000000000008b4 $d + /tmp/ccgvGc3k.s:1460 .text.HAL_DMAEx_MultiBufferStart_IT:00000000000008cc $t + /tmp/ccgvGc3k.s:1847 .text.HAL_DMAEx_MultiBufferStart_IT:0000000000000b9c $d + /tmp/ccgvGc3k.s:1854 .text.HAL_DMAEx_MultiBufferStart_IT:0000000000000bb4 $t + /tmp/ccgvGc3k.s:2225 .text.HAL_DMAEx_MultiBufferStart_IT:0000000000000e20 $d + /tmp/ccgvGc3k.s:2232 .text.HAL_DMAEx_MultiBufferStart_IT:0000000000000e34 $t + /tmp/ccgvGc3k.s:2338 .text.HAL_DMAEx_MultiBufferStart_IT:0000000000000ee4 $d + /tmp/ccgvGc3k.s:2344 .text.HAL_DMAEx_ChangeMemory:0000000000000000 $t + /tmp/ccgvGc3k.s:2351 .text.HAL_DMAEx_ChangeMemory:0000000000000000 HAL_DMAEx_ChangeMemory + +NO UNDEFINED SYMBOLS diff --git a/build/stm32f7xx_hal_dma_ex.o b/build/stm32f7xx_hal_dma_ex.o new file mode 100644 index 0000000..da8112d Binary files /dev/null and b/build/stm32f7xx_hal_dma_ex.o differ diff --git a/build/stm32f7xx_hal_exti.d b/build/stm32f7xx_hal_exti.d new file mode 100644 index 0000000..d425bfb --- /dev/null +++ b/build/stm32f7xx_hal_exti.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_exti.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_exti.lst b/build/stm32f7xx_hal_exti.lst new file mode 100644 index 0000000..18bad11 --- /dev/null +++ b/build/stm32f7xx_hal_exti.lst @@ -0,0 +1,1555 @@ +ARM GAS /tmp/ccsKoAYX.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_exti.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.HAL_EXTI_SetConfigLine,"ax",%progbits + 17 .align 1 + 18 .global HAL_EXTI_SetConfigLine + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 HAL_EXTI_SetConfigLine: + 26 .LVL0: + 27 .LFB141: + 28 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @file stm32F7xx_hal_exti.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief EXTI HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * functionalities of the Extended Interrupts and events controller (EXTI) peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * + Initialization and de-initialization functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * + IO operation functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** ****************************************************************************** + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @attention + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * Copyright (c) 2018 STMicroelectronics. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * All rights reserved. + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * This software is licensed under terms that can be found in the LICENSE file + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * in the root directory of this software component. + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** ****************************************************************************** + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** @verbatim + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** ============================================================================== + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** ##### EXTI Peripheral features ##### + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** ============================================================================== + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** [..] + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (+) Each Exti line can be configured within this driver. + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (+) Exti line can be configured in 3 different modes + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Interrupt + ARM GAS /tmp/ccsKoAYX.s page 2 + + + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Event + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Both of them + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (+) Configurable Exti lines can be configured with 3 different triggers + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Rising + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Falling + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Both of them + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (+) When set in interrupt mode, configurable Exti lines have two different + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** interrupts pending registers which allow to distinguish which transition + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** occurs: + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Rising edge pending interrupt + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Falling + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (+) Exti lines 0 to 15 are linked to gpio pin number 0 to 15. Gpio port can + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** be selected through multiplexer. + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** ##### How to use this driver ##### + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** ============================================================================== + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** [..] + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (#) Configure the EXTI line using HAL_EXTI_SetConfigLine(). + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Choose the interrupt line number by setting "Line" member from + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI_ConfigTypeDef structure. + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Configure the interrupt and/or event mode using "Mode" member from + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI_ConfigTypeDef structure. + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) For configurable lines, configure rising and/or falling trigger + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** "Trigger" member from EXTI_ConfigTypeDef structure. + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) For Exti lines linked to gpio, choose gpio port using "GPIOSel" + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** member from GPIO_InitTypeDef structure. + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (#) Get current Exti configuration of a dedicated line using + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** HAL_EXTI_GetConfigLine(). + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Provide exiting handle as parameter. + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Provide pointer on EXTI_ConfigTypeDef structure as second parameter. + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (#) Clear Exti configuration of a dedicated line using HAL_EXTI_ClearConfigLine(). + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Provide exiting handle as parameter. + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (#) Register callback to treat Exti interrupts using HAL_EXTI_RegisterCallback(). + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Provide exiting handle as first parameter. + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Provide which callback will be registered using one value from + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI_CallbackIDTypeDef. + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (++) Provide callback function pointer. + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (#) Get interrupt pending bit using HAL_EXTI_GetPending(). + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (#) Clear interrupt pending bit using HAL_EXTI_ClearPending(). + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** (#) Generate software interrupt using HAL_EXTI_GenerateSWI(). + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** @endverbatim + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Includes ------------------------------------------------------------------*/ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** #include "stm32f7xx_hal.h" + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + ARM GAS /tmp/ccsKoAYX.s page 3 + + + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** @addtogroup STM32F7xx_HAL_Driver + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @{ + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** @addtogroup EXTI + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @{ + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** MISRA C:2012 deviation rule has been granted for following rule: + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * Rule-18.1_b - Medium: Array `EXTICR' 1st subscript interval [0,7] may be out + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * of bounds [0,3] in following API : + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * HAL_EXTI_SetConfigLine + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * HAL_EXTI_GetConfigLine + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * HAL_EXTI_ClearConfigLine + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** #ifdef HAL_EXTI_MODULE_ENABLED + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Private typedef -----------------------------------------------------------*/ + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Private defines -----------------------------------------------------------*/ + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** @defgroup EXTI_Private_Constants EXTI Private Constants + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @{ + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @} + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Private macros ------------------------------------------------------------*/ + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Private variables ---------------------------------------------------------*/ + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Private function prototypes -----------------------------------------------*/ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Exported functions --------------------------------------------------------*/ + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** @addtogroup EXTI_Exported_Functions + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @{ + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** @addtogroup EXTI_Exported_Functions_Group1 + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief Configuration functions + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** @verbatim + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** =============================================================================== + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** ##### Configuration functions ##### + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** =============================================================================== + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** @endverbatim + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @{ + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief Set configuration of a dedicated Exti line. + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param hexti Exti handle. + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param pExtiConfig Pointer on EXTI configuration to be set. + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @retval HAL Status. + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 29 .loc 1 143 1 view -0 + ARM GAS /tmp/ccsKoAYX.s page 4 + + + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 33 @ link register save eliminated. + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t regval; + 34 .loc 1 144 3 view .LVU1 + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t linepos; + 35 .loc 1 145 3 view .LVU2 + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t maskline; + 36 .loc 1 146 3 view .LVU3 + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check null pointer */ + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((hexti == NULL) || (pExtiConfig == NULL)) + 37 .loc 1 149 3 view .LVU4 + 38 .loc 1 149 6 is_stmt 0 view .LVU5 + 39 0000 0029 cmp r1, #0 + 40 0002 18BF it ne + 41 0004 0028 cmpne r0, #0 + 42 0006 5FD0 beq .L11 + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t regval; + 43 .loc 1 143 1 view .LVU6 + 44 0008 70B4 push {r4, r5, r6} + 45 .LCFI0: + 46 .cfi_def_cfa_offset 12 + 47 .cfi_offset 4, -12 + 48 .cfi_offset 5, -8 + 49 .cfi_offset 6, -4 + 50 000a 0B46 mov r3, r1 + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** return HAL_ERROR; + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check parameters */ + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_LINE(pExtiConfig->Line)); + 51 .loc 1 155 3 is_stmt 1 view .LVU7 + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_MODE(pExtiConfig->Mode)); + 52 .loc 1 156 3 view .LVU8 + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Assign line number to handle */ + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** hexti->Line = pExtiConfig->Line; + 53 .loc 1 159 3 view .LVU9 + 54 .loc 1 159 28 is_stmt 0 view .LVU10 + 55 000c 0968 ldr r1, [r1] + 56 .LVL1: + 57 .loc 1 159 15 view .LVU11 + 58 000e 0160 str r1, [r0] + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Compute line mask */ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** linepos = (pExtiConfig->Line & EXTI_PIN_MASK); + 59 .loc 1 162 3 is_stmt 1 view .LVU12 + 60 .loc 1 162 11 is_stmt 0 view .LVU13 + 61 0010 01F01F00 and r0, r1, #31 + 62 .LVL2: + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** maskline = (1uL << linepos); + 63 .loc 1 163 3 is_stmt 1 view .LVU14 + 64 .loc 1 163 12 is_stmt 0 view .LVU15 + 65 0014 0122 movs r2, #1 + ARM GAS /tmp/ccsKoAYX.s page 5 + + + 66 0016 8240 lsls r2, r2, r0 + 67 .LVL3: + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Configure triggers for configurable lines */ + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u) + 68 .loc 1 166 3 is_stmt 1 view .LVU16 + 69 .loc 1 166 6 is_stmt 0 view .LVU17 + 70 0018 11F0007F tst r1, #33554432 + 71 001c 15D0 beq .L3 + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger)); + 72 .loc 1 168 5 is_stmt 1 view .LVU18 + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Configure rising trigger */ + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Mask or set line */ + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((pExtiConfig->Trigger & EXTI_TRIGGER_RISING) != 0x00u) + 73 .loc 1 172 5 view .LVU19 + 74 .loc 1 172 21 is_stmt 0 view .LVU20 + 75 001e 9C68 ldr r4, [r3, #8] + 76 .loc 1 172 8 view .LVU21 + 77 0020 14F0010F tst r4, #1 + 78 0024 24D0 beq .L4 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->RTSR |= maskline; + 79 .loc 1 174 7 is_stmt 1 view .LVU22 + 80 .loc 1 174 18 is_stmt 0 view .LVU23 + 81 0026 294D ldr r5, .L17 + 82 0028 AC68 ldr r4, [r5, #8] + 83 002a 1443 orrs r4, r4, r2 + 84 002c AC60 str r4, [r5, #8] + 85 .L5: + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** else + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->RTSR &= ~maskline; + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Configure falling trigger */ + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Mask or set line */ + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((pExtiConfig->Trigger & EXTI_TRIGGER_FALLING) != 0x00u) + 86 .loc 1 183 5 is_stmt 1 view .LVU24 + 87 .loc 1 183 21 is_stmt 0 view .LVU25 + 88 002e 9C68 ldr r4, [r3, #8] + 89 .loc 1 183 8 view .LVU26 + 90 0030 14F0020F tst r4, #2 + 91 0034 22D0 beq .L6 + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->FTSR |= maskline; + 92 .loc 1 185 7 is_stmt 1 view .LVU27 + 93 .loc 1 185 18 is_stmt 0 view .LVU28 + 94 0036 254D ldr r5, .L17 + 95 0038 EC68 ldr r4, [r5, #12] + 96 003a 1443 orrs r4, r4, r2 + 97 003c EC60 str r4, [r5, #12] + 98 .L7: + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** else + ARM GAS /tmp/ccsKoAYX.s page 6 + + + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->FTSR &= ~maskline; + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Configure gpio port selection in case of gpio exti line */ + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO) + 99 .loc 1 194 5 is_stmt 1 view .LVU29 + 100 .loc 1 194 28 is_stmt 0 view .LVU30 + 101 003e 1C68 ldr r4, [r3] + 102 0040 04F0C06C and ip, r4, #100663296 + 103 .loc 1 194 8 view .LVU31 + 104 0044 BCF1C06F cmp ip, #100663296 + 105 0048 1ED0 beq .L16 + 106 .LVL4: + 107 .L3: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_GPIO_PORT(pExtiConfig->GPIOSel)); + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_GPIO_PIN(linepos)); + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval = SYSCFG->EXTICR[linepos >> 2u]; + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** SYSCFG->EXTICR[linepos >> 2u] = regval; + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Configure interrupt mode : read current mode */ + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Mask or set line */ + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((pExtiConfig->Mode & EXTI_MODE_INTERRUPT) != 0x00u) + 108 .loc 1 208 3 is_stmt 1 view .LVU32 + 109 .loc 1 208 19 is_stmt 0 view .LVU33 + 110 004a 5968 ldr r1, [r3, #4] + 111 .loc 1 208 6 view .LVU34 + 112 004c 11F0010F tst r1, #1 + 113 0050 2DD0 beq .L8 + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->IMR |= maskline; + 114 .loc 1 210 5 is_stmt 1 view .LVU35 + 115 .loc 1 210 15 is_stmt 0 view .LVU36 + 116 0052 1E48 ldr r0, .L17 + 117 0054 0168 ldr r1, [r0] + 118 0056 1143 orrs r1, r1, r2 + 119 0058 0160 str r1, [r0] + 120 .L9: + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** else + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->IMR &= ~maskline; + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Configure event mode : read current mode */ + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Mask or set line */ + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((pExtiConfig->Mode & EXTI_MODE_EVENT) != 0x00u) + 121 .loc 1 219 3 is_stmt 1 view .LVU37 + 122 .loc 1 219 19 is_stmt 0 view .LVU38 + 123 005a 5B68 ldr r3, [r3, #4] + ARM GAS /tmp/ccsKoAYX.s page 7 + + + 124 .LVL5: + 125 .loc 1 219 6 view .LVU39 + 126 005c 13F0020F tst r3, #2 + 127 0060 2BD0 beq .L10 + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->EMR |= maskline; + 128 .loc 1 221 5 is_stmt 1 view .LVU40 + 129 .loc 1 221 15 is_stmt 0 view .LVU41 + 130 0062 1A49 ldr r1, .L17 + 131 0064 4B68 ldr r3, [r1, #4] + 132 0066 1A43 orrs r2, r2, r3 + 133 .LVL6: + 134 .loc 1 221 15 view .LVU42 + 135 0068 4A60 str r2, [r1, #4] + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** else + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->EMR &= ~maskline; + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** return HAL_OK; + 136 .loc 1 228 10 view .LVU43 + 137 006a 0020 movs r0, #0 + 138 .L2: + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 139 .loc 1 229 1 view .LVU44 + 140 006c 70BC pop {r4, r5, r6} + 141 .LCFI1: + 142 .cfi_remember_state + 143 .cfi_restore 6 + 144 .cfi_restore 5 + 145 .cfi_restore 4 + 146 .cfi_def_cfa_offset 0 + 147 006e 7047 bx lr + 148 .LVL7: + 149 .L4: + 150 .LCFI2: + 151 .cfi_restore_state + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 152 .loc 1 178 7 is_stmt 1 view .LVU45 + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 153 .loc 1 178 18 is_stmt 0 view .LVU46 + 154 0070 164D ldr r5, .L17 + 155 0072 AC68 ldr r4, [r5, #8] + 156 0074 24EA0204 bic r4, r4, r2 + 157 0078 AC60 str r4, [r5, #8] + 158 007a D8E7 b .L5 + 159 .L6: + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 160 .loc 1 189 7 is_stmt 1 view .LVU47 + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 161 .loc 1 189 18 is_stmt 0 view .LVU48 + 162 007c 134D ldr r5, .L17 + 163 007e EC68 ldr r4, [r5, #12] + 164 0080 24EA0204 bic r4, r4, r2 + 165 0084 EC60 str r4, [r5, #12] + 166 0086 DAE7 b .L7 + ARM GAS /tmp/ccsKoAYX.s page 8 + + + 167 .L16: + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_GPIO_PIN(linepos)); + 168 .loc 1 196 7 is_stmt 1 view .LVU49 + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 169 .loc 1 197 7 view .LVU50 + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 170 .loc 1 199 7 view .LVU51 + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 171 .loc 1 199 39 is_stmt 0 view .LVU52 + 172 0088 8008 lsrs r0, r0, #2 + 173 .LVL8: + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 174 .loc 1 199 14 view .LVU53 + 175 008a 114E ldr r6, .L17+4 + 176 008c 0230 adds r0, r0, #2 + 177 008e 56F82040 ldr r4, [r6, r0, lsl #2] + 178 .LVL9: + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 179 .loc 1 200 7 is_stmt 1 view .LVU54 + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 180 .loc 1 200 80 is_stmt 0 view .LVU55 + 181 0092 01F00301 and r1, r1, #3 + 182 .LVL10: + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 183 .loc 1 200 69 view .LVU56 + 184 0096 8900 lsls r1, r1, #2 + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 185 .loc 1 200 40 view .LVU57 + 186 0098 0F25 movs r5, #15 + 187 009a 8D40 lsls r5, r5, r1 + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 188 .loc 1 200 14 view .LVU58 + 189 009c 24EA0504 bic r4, r4, r5 + 190 .LVL11: + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** SYSCFG->EXTICR[linepos >> 2u] = regval; + 191 .loc 1 201 7 is_stmt 1 view .LVU59 + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** SYSCFG->EXTICR[linepos >> 2u] = regval; + 192 .loc 1 201 39 is_stmt 0 view .LVU60 + 193 00a0 DD68 ldr r5, [r3, #12] + 194 00a2 05FA01F1 lsl r1, r5, r1 + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** SYSCFG->EXTICR[linepos >> 2u] = regval; + 195 .loc 1 201 14 view .LVU61 + 196 00a6 2143 orrs r1, r1, r4 + 197 .LVL12: + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 198 .loc 1 202 7 is_stmt 1 view .LVU62 + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 199 .loc 1 202 37 is_stmt 0 view .LVU63 + 200 00a8 46F82010 str r1, [r6, r0, lsl #2] + 201 00ac CDE7 b .L3 + 202 .LVL13: + 203 .L8: + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 204 .loc 1 214 5 is_stmt 1 view .LVU64 + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 205 .loc 1 214 15 is_stmt 0 view .LVU65 + 206 00ae 0748 ldr r0, .L17 + ARM GAS /tmp/ccsKoAYX.s page 9 + + + 207 00b0 0168 ldr r1, [r0] + 208 00b2 21EA0201 bic r1, r1, r2 + 209 00b6 0160 str r1, [r0] + 210 00b8 CFE7 b .L9 + 211 .LVL14: + 212 .L10: + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 213 .loc 1 225 5 is_stmt 1 view .LVU66 + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 214 .loc 1 225 15 is_stmt 0 view .LVU67 + 215 00ba 0449 ldr r1, .L17 + 216 00bc 4B68 ldr r3, [r1, #4] + 217 00be 23EA0202 bic r2, r3, r2 + 218 .LVL15: + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 219 .loc 1 225 15 view .LVU68 + 220 00c2 4A60 str r2, [r1, #4] + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 221 .loc 1 228 10 view .LVU69 + 222 00c4 0020 movs r0, #0 + 223 00c6 D1E7 b .L2 + 224 .LVL16: + 225 .L11: + 226 .LCFI3: + 227 .cfi_def_cfa_offset 0 + 228 .cfi_restore 4 + 229 .cfi_restore 5 + 230 .cfi_restore 6 + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 231 .loc 1 151 12 view .LVU70 + 232 00c8 0120 movs r0, #1 + 233 .LVL17: + 234 .loc 1 229 1 view .LVU71 + 235 00ca 7047 bx lr + 236 .L18: + 237 .align 2 + 238 .L17: + 239 00cc 003C0140 .word 1073822720 + 240 00d0 00380140 .word 1073821696 + 241 .cfi_endproc + 242 .LFE141: + 244 .section .text.HAL_EXTI_GetConfigLine,"ax",%progbits + 245 .align 1 + 246 .global HAL_EXTI_GetConfigLine + 247 .syntax unified + 248 .thumb + 249 .thumb_func + 250 .fpu fpv5-d16 + 252 HAL_EXTI_GetConfigLine: + 253 .LVL18: + 254 .LFB142: + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief Get configuration of a dedicated Exti line. + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param hexti Exti handle. + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param pExtiConfig Pointer on structure to store Exti configuration. + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @retval HAL Status. + ARM GAS /tmp/ccsKoAYX.s page 10 + + + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 255 .loc 1 238 1 is_stmt 1 view -0 + 256 .cfi_startproc + 257 @ args = 0, pretend = 0, frame = 0 + 258 @ frame_needed = 0, uses_anonymous_args = 0 + 259 @ link register save eliminated. + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t regval; + 260 .loc 1 239 3 view .LVU73 + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t linepos; + 261 .loc 1 240 3 view .LVU74 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t maskline; + 262 .loc 1 241 3 view .LVU75 + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check null pointer */ + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((hexti == NULL) || (pExtiConfig == NULL)) + 263 .loc 1 244 3 view .LVU76 + 264 .loc 1 244 6 is_stmt 0 view .LVU77 + 265 0000 0029 cmp r1, #0 + 266 0002 18BF it ne + 267 0004 0028 cmpne r0, #0 + 268 0006 44D0 beq .L26 + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t regval; + 269 .loc 1 238 1 view .LVU78 + 270 0008 10B4 push {r4} + 271 .LCFI4: + 272 .cfi_def_cfa_offset 4 + 273 .cfi_offset 4, -4 + 274 000a 0B46 mov r3, r1 + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** return HAL_ERROR; + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check the parameter */ + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_LINE(hexti->Line)); + 275 .loc 1 250 3 is_stmt 1 view .LVU79 + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Store handle line number to configuration structure */ + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->Line = hexti->Line; + 276 .loc 1 253 3 view .LVU80 + 277 .loc 1 253 28 is_stmt 0 view .LVU81 + 278 000c 0468 ldr r4, [r0] + 279 .loc 1 253 21 view .LVU82 + 280 000e 0C60 str r4, [r1] + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Compute line mask */ + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** linepos = (pExtiConfig->Line & EXTI_PIN_MASK); + 281 .loc 1 256 3 is_stmt 1 view .LVU83 + 282 .loc 1 256 11 is_stmt 0 view .LVU84 + 283 0010 04F01F0C and ip, r4, #31 + 284 .LVL19: + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** maskline = (1uL << linepos); + 285 .loc 1 257 3 is_stmt 1 view .LVU85 + 286 .loc 1 257 12 is_stmt 0 view .LVU86 + 287 0014 0122 movs r2, #1 + 288 0016 02FA0CF2 lsl r2, r2, ip + ARM GAS /tmp/ccsKoAYX.s page 11 + + + 289 .LVL20: + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* 1] Get core mode : interrupt */ + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check if selected line is enable */ + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((EXTI->IMR & maskline) != 0x00u) + 290 .loc 1 262 3 is_stmt 1 view .LVU87 + 291 .loc 1 262 12 is_stmt 0 view .LVU88 + 292 001a 2148 ldr r0, .L34 + 293 .LVL21: + 294 .loc 1 262 12 view .LVU89 + 295 001c 0068 ldr r0, [r0] + 296 .loc 1 262 6 view .LVU90 + 297 001e 1042 tst r0, r2 + 298 0020 24D0 beq .L21 + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->Mode = EXTI_MODE_INTERRUPT; + 299 .loc 1 264 5 is_stmt 1 view .LVU91 + 300 .loc 1 264 23 is_stmt 0 view .LVU92 + 301 0022 0121 movs r1, #1 + 302 .LVL22: + 303 .loc 1 264 23 view .LVU93 + 304 0024 5960 str r1, [r3, #4] + 305 .L22: + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** else + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->Mode = EXTI_MODE_NONE; + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Get event mode */ + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check if selected line is enable */ + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((EXTI->EMR & maskline) != 0x00u) + 306 .loc 1 273 3 is_stmt 1 view .LVU94 + 307 .loc 1 273 12 is_stmt 0 view .LVU95 + 308 0026 1E48 ldr r0, .L34 + 309 0028 4068 ldr r0, [r0, #4] + 310 .loc 1 273 6 view .LVU96 + 311 002a 1042 tst r0, r2 + 312 002c 03D0 beq .L23 + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->Mode |= EXTI_MODE_EVENT; + 313 .loc 1 275 5 is_stmt 1 view .LVU97 + 314 .loc 1 275 23 is_stmt 0 view .LVU98 + 315 002e 5868 ldr r0, [r3, #4] + 316 0030 40F00200 orr r0, r0, #2 + 317 0034 5860 str r0, [r3, #4] + 318 .L23: + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Get default Trigger and GPIOSel configuration */ + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->Trigger = EXTI_TRIGGER_NONE; + 319 .loc 1 279 3 is_stmt 1 view .LVU99 + 320 .loc 1 279 24 is_stmt 0 view .LVU100 + 321 0036 0021 movs r1, #0 + 322 0038 9960 str r1, [r3, #8] + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->GPIOSel = 0x00u; + ARM GAS /tmp/ccsKoAYX.s page 12 + + + 323 .loc 1 280 3 is_stmt 1 view .LVU101 + 324 .loc 1 280 24 is_stmt 0 view .LVU102 + 325 003a D960 str r1, [r3, #12] + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* 2] Get trigger for configurable lines : rising */ + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u) + 326 .loc 1 283 3 is_stmt 1 view .LVU103 + 327 .loc 1 283 6 is_stmt 0 view .LVU104 + 328 003c 14F0007F tst r4, #33554432 + 329 0040 29D0 beq .L27 + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check if configuration of selected line is enable */ + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((EXTI->RTSR & maskline) != 0x00u) + 330 .loc 1 286 5 is_stmt 1 view .LVU105 + 331 .loc 1 286 14 is_stmt 0 view .LVU106 + 332 0042 1749 ldr r1, .L34 + 333 0044 8968 ldr r1, [r1, #8] + 334 .loc 1 286 8 view .LVU107 + 335 0046 1142 tst r1, r2 + 336 0048 01D0 beq .L24 + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->Trigger = EXTI_TRIGGER_RISING; + 337 .loc 1 288 7 is_stmt 1 view .LVU108 + 338 .loc 1 288 28 is_stmt 0 view .LVU109 + 339 004a 0121 movs r1, #1 + 340 004c 9960 str r1, [r3, #8] + 341 .L24: + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Get falling configuration */ + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check if configuration of selected line is enable */ + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((EXTI->FTSR & maskline) != 0x00u) + 342 .loc 1 293 5 is_stmt 1 view .LVU110 + 343 .loc 1 293 14 is_stmt 0 view .LVU111 + 344 004e 1449 ldr r1, .L34 + 345 0050 C968 ldr r1, [r1, #12] + 346 .loc 1 293 8 view .LVU112 + 347 0052 1142 tst r1, r2 + 348 0054 03D0 beq .L25 + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->Trigger |= EXTI_TRIGGER_FALLING; + 349 .loc 1 295 7 is_stmt 1 view .LVU113 + 350 .loc 1 295 28 is_stmt 0 view .LVU114 + 351 0056 9A68 ldr r2, [r3, #8] + 352 .LVL23: + 353 .loc 1 295 28 view .LVU115 + 354 0058 42F00202 orr r2, r2, #2 + 355 005c 9A60 str r2, [r3, #8] + 356 .L25: + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Get Gpio port selection for gpio lines */ + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO) + 357 .loc 1 299 5 is_stmt 1 view .LVU116 + 358 .loc 1 299 28 is_stmt 0 view .LVU117 + 359 005e 04F0C062 and r2, r4, #100663296 + 360 .loc 1 299 8 view .LVU118 + ARM GAS /tmp/ccsKoAYX.s page 13 + + + 361 0062 B2F1C06F cmp r2, #100663296 + 362 0066 04D0 beq .L33 + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_GPIO_PIN(linepos)); + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval = SYSCFG->EXTICR[linepos >> 2u]; + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->GPIOSel = (regval >> (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))) & SYSCFG_EX + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** return HAL_OK; + 363 .loc 1 308 10 view .LVU119 + 364 0068 0020 movs r0, #0 + 365 006a 15E0 b .L20 + 366 .LVL24: + 367 .L21: + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 368 .loc 1 268 5 is_stmt 1 view .LVU120 + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 369 .loc 1 268 23 is_stmt 0 view .LVU121 + 370 006c 0021 movs r1, #0 + 371 .LVL25: + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 372 .loc 1 268 23 view .LVU122 + 373 006e 5960 str r1, [r3, #4] + 374 0070 D9E7 b .L22 + 375 .LVL26: + 376 .L33: + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 377 .loc 1 301 7 is_stmt 1 view .LVU123 + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->GPIOSel = (regval >> (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))) & SYSCFG_EX + 378 .loc 1 303 7 view .LVU124 + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->GPIOSel = (regval >> (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))) & SYSCFG_EX + 379 .loc 1 303 39 is_stmt 0 view .LVU125 + 380 0072 4FEA9C01 lsr r1, ip, #2 + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** pExtiConfig->GPIOSel = (regval >> (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))) & SYSCFG_EX + 381 .loc 1 303 14 view .LVU126 + 382 0076 0231 adds r1, r1, #2 + 383 0078 0A4A ldr r2, .L34+4 + 384 007a 52F82110 ldr r1, [r2, r1, lsl #2] + 385 .LVL27: + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 386 .loc 1 304 7 is_stmt 1 view .LVU127 + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 387 .loc 1 304 78 is_stmt 0 view .LVU128 + 388 007e 04F00302 and r2, r4, #3 + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 389 .loc 1 304 67 view .LVU129 + 390 0082 9200 lsls r2, r2, #2 + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 391 .loc 1 304 38 view .LVU130 + 392 0084 21FA02F2 lsr r2, r1, r2 + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 393 .loc 1 304 89 view .LVU131 + 394 0088 02F00F02 and r2, r2, #15 + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 395 .loc 1 304 28 view .LVU132 + ARM GAS /tmp/ccsKoAYX.s page 14 + + + 396 008c DA60 str r2, [r3, #12] + 397 .loc 1 308 10 view .LVU133 + 398 008e 0020 movs r0, #0 + 399 0090 02E0 b .L20 + 400 .LVL28: + 401 .L26: + 402 .LCFI5: + 403 .cfi_def_cfa_offset 0 + 404 .cfi_restore 4 + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 405 .loc 1 246 12 view .LVU134 + 406 0092 0120 movs r0, #1 + 407 .LVL29: + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 408 .loc 1 309 1 view .LVU135 + 409 0094 7047 bx lr + 410 .LVL30: + 411 .L27: + 412 .LCFI6: + 413 .cfi_def_cfa_offset 4 + 414 .cfi_offset 4, -4 + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 415 .loc 1 308 10 view .LVU136 + 416 0096 0020 movs r0, #0 + 417 .LVL31: + 418 .L20: + 419 .loc 1 309 1 view .LVU137 + 420 0098 5DF8044B ldr r4, [sp], #4 + 421 .LCFI7: + 422 .cfi_restore 4 + 423 .cfi_def_cfa_offset 0 + 424 009c 7047 bx lr + 425 .L35: + 426 009e 00BF .align 2 + 427 .L34: + 428 00a0 003C0140 .word 1073822720 + 429 00a4 00380140 .word 1073821696 + 430 .cfi_endproc + 431 .LFE142: + 433 .section .text.HAL_EXTI_ClearConfigLine,"ax",%progbits + 434 .align 1 + 435 .global HAL_EXTI_ClearConfigLine + 436 .syntax unified + 437 .thumb + 438 .thumb_func + 439 .fpu fpv5-d16 + 441 HAL_EXTI_ClearConfigLine: + 442 .LVL32: + 443 .LFB143: + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief Clear whole configuration of a dedicated Exti line. + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param hexti Exti handle. + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @retval HAL Status. + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti) + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + ARM GAS /tmp/ccsKoAYX.s page 15 + + + 444 .loc 1 317 1 is_stmt 1 view -0 + 445 .cfi_startproc + 446 @ args = 0, pretend = 0, frame = 0 + 447 @ frame_needed = 0, uses_anonymous_args = 0 + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t regval; + 448 .loc 1 318 3 view .LVU139 + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t linepos; + 449 .loc 1 319 3 view .LVU140 + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t maskline; + 450 .loc 1 320 3 view .LVU141 + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check null pointer */ + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if (hexti == NULL) + 451 .loc 1 323 3 view .LVU142 + 452 .loc 1 323 6 is_stmt 0 view .LVU143 + 453 0000 0028 cmp r0, #0 + 454 0002 38D0 beq .L38 + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t regval; + 455 .loc 1 317 1 view .LVU144 + 456 0004 10B5 push {r4, lr} + 457 .LCFI8: + 458 .cfi_def_cfa_offset 8 + 459 .cfi_offset 4, -8 + 460 .cfi_offset 14, -4 + 461 0006 8446 mov ip, r0 + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** return HAL_ERROR; + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check the parameter */ + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_LINE(hexti->Line)); + 462 .loc 1 329 3 is_stmt 1 view .LVU145 + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* compute line mask */ + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** linepos = (hexti->Line & EXTI_PIN_MASK); + 463 .loc 1 332 3 view .LVU146 + 464 .loc 1 332 19 is_stmt 0 view .LVU147 + 465 0008 0468 ldr r4, [r0] + 466 .loc 1 332 11 view .LVU148 + 467 000a 04F01F00 and r0, r4, #31 + 468 .LVL33: + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** maskline = (1uL << linepos); + 469 .loc 1 333 3 is_stmt 1 view .LVU149 + 470 .loc 1 333 12 is_stmt 0 view .LVU150 + 471 000e 0123 movs r3, #1 + 472 0010 8340 lsls r3, r3, r0 + 473 .LVL34: + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* 1] Clear interrupt mode */ + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->IMR = (EXTI->IMR & ~maskline); + 474 .loc 1 336 3 is_stmt 1 view .LVU151 + 475 .loc 1 336 20 is_stmt 0 view .LVU152 + 476 0012 1B4A ldr r2, .L46 + 477 0014 1168 ldr r1, [r2] + 478 .loc 1 336 28 view .LVU153 + 479 0016 6FEA030E mvn lr, r3 + 480 .loc 1 336 26 view .LVU154 + ARM GAS /tmp/ccsKoAYX.s page 16 + + + 481 001a 21EA0301 bic r1, r1, r3 + 482 .loc 1 336 13 view .LVU155 + 483 001e 1160 str r1, [r2] + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* 2] Clear event mode */ + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->EMR = (EXTI->EMR & ~maskline); + 484 .loc 1 339 3 is_stmt 1 view .LVU156 + 485 .loc 1 339 20 is_stmt 0 view .LVU157 + 486 0020 5168 ldr r1, [r2, #4] + 487 .loc 1 339 26 view .LVU158 + 488 0022 21EA0303 bic r3, r1, r3 + 489 .LVL35: + 490 .loc 1 339 13 view .LVU159 + 491 0026 5360 str r3, [r2, #4] + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* 3] Clear triggers in case of configurable lines */ + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((hexti->Line & EXTI_CONFIG) != 0x00u) + 492 .loc 1 342 3 is_stmt 1 view .LVU160 + 493 .loc 1 342 13 is_stmt 0 view .LVU161 + 494 0028 DCF80030 ldr r3, [ip] + 495 .loc 1 342 6 view .LVU162 + 496 002c 13F0007F tst r3, #33554432 + 497 0030 23D0 beq .L39 + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->RTSR = (EXTI->RTSR & ~maskline); + 498 .loc 1 344 5 is_stmt 1 view .LVU163 + 499 .loc 1 344 23 is_stmt 0 view .LVU164 + 500 0032 9368 ldr r3, [r2, #8] + 501 .loc 1 344 30 view .LVU165 + 502 0034 0EEA0303 and r3, lr, r3 + 503 .loc 1 344 16 view .LVU166 + 504 0038 9360 str r3, [r2, #8] + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->FTSR = (EXTI->FTSR & ~maskline); + 505 .loc 1 345 5 is_stmt 1 view .LVU167 + 506 .loc 1 345 23 is_stmt 0 view .LVU168 + 507 003a D368 ldr r3, [r2, #12] + 508 .loc 1 345 30 view .LVU169 + 509 003c 0EEA0303 and r3, lr, r3 + 510 .loc 1 345 16 view .LVU170 + 511 0040 D360 str r3, [r2, #12] + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Get Gpio port selection for gpio lines */ + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if ((hexti->Line & EXTI_GPIO) == EXTI_GPIO) + 512 .loc 1 348 5 is_stmt 1 view .LVU171 + 513 .loc 1 348 15 is_stmt 0 view .LVU172 + 514 0042 DCF80030 ldr r3, [ip] + 515 .loc 1 348 22 view .LVU173 + 516 0046 03F0C063 and r3, r3, #100663296 + 517 .loc 1 348 8 view .LVU174 + 518 004a B3F1C06F cmp r3, #100663296 + 519 004e 01D0 beq .L45 + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_GPIO_PIN(linepos)); + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval = SYSCFG->EXTICR[linepos >> 2u]; + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** SYSCFG->EXTICR[linepos >> 2u] = regval; + ARM GAS /tmp/ccsKoAYX.s page 17 + + + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** return HAL_OK; + 520 .loc 1 358 10 view .LVU175 + 521 0050 0020 movs r0, #0 + 522 .LVL36: + 523 .loc 1 358 10 view .LVU176 + 524 0052 13E0 b .L37 + 525 .LVL37: + 526 .L45: + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 527 .loc 1 350 7 is_stmt 1 view .LVU177 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 528 .loc 1 352 7 view .LVU178 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 529 .loc 1 352 39 is_stmt 0 view .LVU179 + 530 0054 8008 lsrs r0, r0, #2 + 531 .LVL38: + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u))); + 532 .loc 1 352 14 view .LVU180 + 533 0056 0B49 ldr r1, .L46+4 + 534 0058 0230 adds r0, r0, #2 + 535 005a 51F82030 ldr r3, [r1, r0, lsl #2] + 536 .LVL39: + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** SYSCFG->EXTICR[linepos >> 2u] = regval; + 537 .loc 1 353 7 is_stmt 1 view .LVU181 + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** SYSCFG->EXTICR[linepos >> 2u] = regval; + 538 .loc 1 353 80 is_stmt 0 view .LVU182 + 539 005e 04F00304 and r4, r4, #3 + 540 .LVL40: + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** SYSCFG->EXTICR[linepos >> 2u] = regval; + 541 .loc 1 353 69 view .LVU183 + 542 0062 A400 lsls r4, r4, #2 + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** SYSCFG->EXTICR[linepos >> 2u] = regval; + 543 .loc 1 353 40 view .LVU184 + 544 0064 0F22 movs r2, #15 + 545 0066 02FA04F4 lsl r4, r2, r4 + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** SYSCFG->EXTICR[linepos >> 2u] = regval; + 546 .loc 1 353 14 view .LVU185 + 547 006a 23EA0404 bic r4, r3, r4 + 548 .LVL41: + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 549 .loc 1 354 7 is_stmt 1 view .LVU186 + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 550 .loc 1 354 37 is_stmt 0 view .LVU187 + 551 006e 41F82040 str r4, [r1, r0, lsl #2] + 552 .loc 1 358 10 view .LVU188 + 553 0072 0020 movs r0, #0 + 554 0074 02E0 b .L37 + 555 .LVL42: + 556 .L38: + 557 .LCFI9: + 558 .cfi_def_cfa_offset 0 + 559 .cfi_restore 4 + 560 .cfi_restore 14 + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + ARM GAS /tmp/ccsKoAYX.s page 18 + + + 561 .loc 1 325 12 view .LVU189 + 562 0076 0120 movs r0, #1 + 563 .LVL43: + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 564 .loc 1 359 1 view .LVU190 + 565 0078 7047 bx lr + 566 .LVL44: + 567 .L39: + 568 .LCFI10: + 569 .cfi_def_cfa_offset 8 + 570 .cfi_offset 4, -8 + 571 .cfi_offset 14, -4 + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 572 .loc 1 358 10 view .LVU191 + 573 007a 0020 movs r0, #0 + 574 .LVL45: + 575 .L37: + 576 .loc 1 359 1 view .LVU192 + 577 007c 10BD pop {r4, pc} + 578 .L47: + 579 007e 00BF .align 2 + 580 .L46: + 581 0080 003C0140 .word 1073822720 + 582 0084 00380140 .word 1073821696 + 583 .cfi_endproc + 584 .LFE143: + 586 .section .text.HAL_EXTI_RegisterCallback,"ax",%progbits + 587 .align 1 + 588 .global HAL_EXTI_RegisterCallback + 589 .syntax unified + 590 .thumb + 591 .thumb_func + 592 .fpu fpv5-d16 + 594 HAL_EXTI_RegisterCallback: + 595 .LVL46: + 596 .LFB144: + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief Register callback for a dedicated Exti line. + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param hexti Exti handle. + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param CallbackID User callback identifier. + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * This parameter can be one of @arg @ref EXTI_CallbackIDTypeDef values. + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param pPendingCbfn function pointer to be stored as callback. + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @retval HAL Status. + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** HAL_StatusTypeDef HAL_EXTI_RegisterCallback(EXTI_HandleTypeDef *hexti, EXTI_CallbackIDTypeDef Callb + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 597 .loc 1 370 1 is_stmt 1 view -0 + 598 .cfi_startproc + 599 @ args = 0, pretend = 0, frame = 0 + 600 @ frame_needed = 0, uses_anonymous_args = 0 + 601 @ link register save eliminated. + 602 .loc 1 370 1 is_stmt 0 view .LVU194 + 603 0000 0346 mov r3, r0 + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** HAL_StatusTypeDef status = HAL_OK; + 604 .loc 1 371 3 is_stmt 1 view .LVU195 + 605 .LVL47: + ARM GAS /tmp/ccsKoAYX.s page 19 + + + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** switch (CallbackID) + 606 .loc 1 373 3 view .LVU196 + 607 0002 0846 mov r0, r1 + 608 .LVL48: + 609 .loc 1 373 3 is_stmt 0 view .LVU197 + 610 0004 09B9 cbnz r1, .L50 + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** case HAL_EXTI_COMMON_CB_ID: + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** hexti->PendingCallback = pPendingCbfn; + 611 .loc 1 376 7 is_stmt 1 view .LVU198 + 612 .loc 1 376 30 is_stmt 0 view .LVU199 + 613 0006 5A60 str r2, [r3, #4] + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** break; + 614 .loc 1 377 7 is_stmt 1 view .LVU200 + 615 0008 7047 bx lr + 616 .L50: + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** default: + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** status = HAL_ERROR; + 617 .loc 1 380 14 is_stmt 0 view .LVU201 + 618 000a 0120 movs r0, #1 + 619 .LVL49: + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** break; + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** return status; + 620 .loc 1 384 3 is_stmt 1 view .LVU202 + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 621 .loc 1 385 1 is_stmt 0 view .LVU203 + 622 000c 7047 bx lr + 623 .cfi_endproc + 624 .LFE144: + 626 .section .text.HAL_EXTI_GetHandle,"ax",%progbits + 627 .align 1 + 628 .global HAL_EXTI_GetHandle + 629 .syntax unified + 630 .thumb + 631 .thumb_func + 632 .fpu fpv5-d16 + 634 HAL_EXTI_GetHandle: + 635 .LVL50: + 636 .LFB145: + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief Store line number as handle private field. + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param hexti Exti handle. + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param ExtiLine Exti line number. + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * This parameter can be from 0 to @ref EXTI_LINE_NB. + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @retval HAL Status. + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLine) + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 637 .loc 1 395 1 is_stmt 1 view -0 + 638 .cfi_startproc + 639 @ args = 0, pretend = 0, frame = 0 + 640 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccsKoAYX.s page 20 + + + 641 @ link register save eliminated. + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check the parameters */ + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_LINE(ExtiLine)); + 642 .loc 1 397 3 view .LVU205 + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check null pointer */ + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if (hexti == NULL) + 643 .loc 1 400 3 view .LVU206 + 644 .loc 1 400 6 is_stmt 0 view .LVU207 + 645 0000 10B1 cbz r0, .L53 + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** return HAL_ERROR; + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** else + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Store line number as handle private field */ + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** hexti->Line = ExtiLine; + 646 .loc 1 407 5 is_stmt 1 view .LVU208 + 647 .loc 1 407 17 is_stmt 0 view .LVU209 + 648 0002 0160 str r1, [r0] + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** return HAL_OK; + 649 .loc 1 409 5 is_stmt 1 view .LVU210 + 650 .loc 1 409 12 is_stmt 0 view .LVU211 + 651 0004 0020 movs r0, #0 + 652 .LVL51: + 653 .loc 1 409 12 view .LVU212 + 654 0006 7047 bx lr + 655 .LVL52: + 656 .L53: + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 657 .loc 1 402 12 view .LVU213 + 658 0008 0120 movs r0, #1 + 659 .LVL53: + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 660 .loc 1 411 1 view .LVU214 + 661 000a 7047 bx lr + 662 .cfi_endproc + 663 .LFE145: + 665 .section .text.HAL_EXTI_IRQHandler,"ax",%progbits + 666 .align 1 + 667 .global HAL_EXTI_IRQHandler + 668 .syntax unified + 669 .thumb + 670 .thumb_func + 671 .fpu fpv5-d16 + 673 HAL_EXTI_IRQHandler: + 674 .LVL54: + 675 .LFB146: + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @} + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** @addtogroup EXTI_Exported_Functions_Group2 + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief EXTI IO functions. + ARM GAS /tmp/ccsKoAYX.s page 21 + + + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** @verbatim + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** =============================================================================== + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** ##### IO operation functions ##### + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** =============================================================================== + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** @endverbatim + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @{ + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief Handle EXTI interrupt request. + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param hexti Exti handle. + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @retval none. + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti) + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 676 .loc 1 435 1 is_stmt 1 view -0 + 677 .cfi_startproc + 678 @ args = 0, pretend = 0, frame = 0 + 679 @ frame_needed = 0, uses_anonymous_args = 0 + 680 .loc 1 435 1 is_stmt 0 view .LVU216 + 681 0000 08B5 push {r3, lr} + 682 .LCFI11: + 683 .cfi_def_cfa_offset 8 + 684 .cfi_offset 3, -8 + 685 .cfi_offset 14, -4 + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t regval; + 686 .loc 1 436 3 is_stmt 1 view .LVU217 + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t maskline; + 687 .loc 1 437 3 view .LVU218 + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Compute line mask */ + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + 688 .loc 1 440 3 view .LVU219 + 689 .loc 1 440 28 is_stmt 0 view .LVU220 + 690 0002 0368 ldr r3, [r0] + 691 .loc 1 440 35 view .LVU221 + 692 0004 03F01F02 and r2, r3, #31 + 693 .loc 1 440 12 view .LVU222 + 694 0008 0123 movs r3, #1 + 695 000a 9340 lsls r3, r3, r2 + 696 .LVL55: + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Get pending bit */ + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval = (EXTI->PR & maskline); + 697 .loc 1 443 3 is_stmt 1 view .LVU223 + 698 .loc 1 443 17 is_stmt 0 view .LVU224 + 699 000c 044A ldr r2, .L57 + 700 000e 5269 ldr r2, [r2, #20] + 701 .LVL56: + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if (regval != 0x00u) + 702 .loc 1 444 3 is_stmt 1 view .LVU225 + 703 .loc 1 444 6 is_stmt 0 view .LVU226 + 704 0010 1A42 tst r2, r3 + 705 0012 04D0 beq .L54 + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + ARM GAS /tmp/ccsKoAYX.s page 22 + + + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Clear pending bit */ + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->PR = maskline; + 706 .loc 1 447 5 is_stmt 1 view .LVU227 + 707 .loc 1 447 14 is_stmt 0 view .LVU228 + 708 0014 024A ldr r2, .L57 + 709 .LVL57: + 710 .loc 1 447 14 view .LVU229 + 711 0016 5361 str r3, [r2, #20] + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Call callback */ + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** if (hexti->PendingCallback != NULL) + 712 .loc 1 450 5 is_stmt 1 view .LVU230 + 713 .loc 1 450 14 is_stmt 0 view .LVU231 + 714 0018 4368 ldr r3, [r0, #4] + 715 .LVL58: + 716 .loc 1 450 8 view .LVU232 + 717 001a 03B1 cbz r3, .L54 + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** hexti->PendingCallback(); + 718 .loc 1 452 7 is_stmt 1 view .LVU233 + 719 001c 9847 blx r3 + 720 .LVL59: + 721 .L54: + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 722 .loc 1 455 1 is_stmt 0 view .LVU234 + 723 001e 08BD pop {r3, pc} + 724 .L58: + 725 .align 2 + 726 .L57: + 727 0020 003C0140 .word 1073822720 + 728 .cfi_endproc + 729 .LFE146: + 731 .section .text.HAL_EXTI_GetPending,"ax",%progbits + 732 .align 1 + 733 .global HAL_EXTI_GetPending + 734 .syntax unified + 735 .thumb + 736 .thumb_func + 737 .fpu fpv5-d16 + 739 HAL_EXTI_GetPending: + 740 .LVL60: + 741 .LFB147: + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief Get interrupt pending bit of a dedicated line. + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param hexti Exti handle. + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param Edge Specify which pending edge as to be checked. + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * This parameter can be one of the following values: + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @arg @ref EXTI_TRIGGER_RISING_FALLING + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * This parameter is kept for compatibility with other series. + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @retval 1 if interrupt is pending else 0. + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge) + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 742 .loc 1 467 1 is_stmt 1 view -0 + ARM GAS /tmp/ccsKoAYX.s page 23 + + + 743 .cfi_startproc + 744 @ args = 0, pretend = 0, frame = 0 + 745 @ frame_needed = 0, uses_anonymous_args = 0 + 746 @ link register save eliminated. + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t regval; + 747 .loc 1 468 3 view .LVU236 + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t linepos; + 748 .loc 1 469 3 view .LVU237 + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t maskline; + 749 .loc 1 470 3 view .LVU238 + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check parameters */ + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_LINE(hexti->Line)); + 750 .loc 1 473 3 view .LVU239 + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + 751 .loc 1 474 3 view .LVU240 + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_PENDING_EDGE(Edge)); + 752 .loc 1 475 3 view .LVU241 + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Compute line mask */ + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** linepos = (hexti->Line & EXTI_PIN_MASK); + 753 .loc 1 478 3 view .LVU242 + 754 .loc 1 478 19 is_stmt 0 view .LVU243 + 755 0000 0368 ldr r3, [r0] + 756 .loc 1 478 11 view .LVU244 + 757 0002 03F01F03 and r3, r3, #31 + 758 .LVL61: + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** maskline = (1uL << linepos); + 759 .loc 1 479 3 is_stmt 1 view .LVU245 + 760 .loc 1 479 12 is_stmt 0 view .LVU246 + 761 0006 0120 movs r0, #1 + 762 .LVL62: + 763 .loc 1 479 12 view .LVU247 + 764 0008 00FA03F2 lsl r2, r0, r3 + 765 .LVL63: + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* return 1 if bit is set else 0 */ + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** regval = ((EXTI->PR & maskline) >> linepos); + 766 .loc 1 482 3 is_stmt 1 view .LVU248 + 767 .loc 1 482 18 is_stmt 0 view .LVU249 + 768 000c 0249 ldr r1, .L60 + 769 .LVL64: + 770 .loc 1 482 18 view .LVU250 + 771 000e 4869 ldr r0, [r1, #20] + 772 .loc 1 482 23 view .LVU251 + 773 0010 1040 ands r0, r0, r2 + 774 .LVL65: + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** return regval; + 775 .loc 1 483 3 is_stmt 1 view .LVU252 + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 776 .loc 1 484 1 is_stmt 0 view .LVU253 + 777 0012 D840 lsrs r0, r0, r3 + 778 .LVL66: + 779 .loc 1 484 1 view .LVU254 + 780 0014 7047 bx lr + 781 .L61: + 782 0016 00BF .align 2 + ARM GAS /tmp/ccsKoAYX.s page 24 + + + 783 .L60: + 784 0018 003C0140 .word 1073822720 + 785 .cfi_endproc + 786 .LFE147: + 788 .section .text.HAL_EXTI_ClearPending,"ax",%progbits + 789 .align 1 + 790 .global HAL_EXTI_ClearPending + 791 .syntax unified + 792 .thumb + 793 .thumb_func + 794 .fpu fpv5-d16 + 796 HAL_EXTI_ClearPending: + 797 .LVL67: + 798 .LFB148: + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief Clear interrupt pending bit of a dedicated line. + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param hexti Exti handle. + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param Edge Specify which pending edge as to be clear. + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * This parameter can be one of the following values: + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @arg @ref EXTI_TRIGGER_RISING_FALLING + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * This parameter is kept for compatibility with other series. + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @retval None. + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge) + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 799 .loc 1 496 1 is_stmt 1 view -0 + 800 .cfi_startproc + 801 @ args = 0, pretend = 0, frame = 0 + 802 @ frame_needed = 0, uses_anonymous_args = 0 + 803 @ link register save eliminated. + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t maskline; + 804 .loc 1 497 3 view .LVU256 + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check parameters */ + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_LINE(hexti->Line)); + 805 .loc 1 500 3 view .LVU257 + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + 806 .loc 1 501 3 view .LVU258 + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_PENDING_EDGE(Edge)); + 807 .loc 1 502 3 view .LVU259 + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Compute line mask */ + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + 808 .loc 1 505 3 view .LVU260 + 809 .loc 1 505 28 is_stmt 0 view .LVU261 + 810 0000 0268 ldr r2, [r0] + 811 .loc 1 505 35 view .LVU262 + 812 0002 02F01F02 and r2, r2, #31 + 813 .loc 1 505 12 view .LVU263 + 814 0006 0123 movs r3, #1 + 815 0008 9340 lsls r3, r3, r2 + 816 .LVL68: + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Clear Pending bit */ + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->PR = maskline; + 817 .loc 1 508 3 is_stmt 1 view .LVU264 + ARM GAS /tmp/ccsKoAYX.s page 25 + + + 818 .loc 1 508 12 is_stmt 0 view .LVU265 + 819 000a 014A ldr r2, .L63 + 820 000c 5361 str r3, [r2, #20] + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 821 .loc 1 509 1 view .LVU266 + 822 000e 7047 bx lr + 823 .L64: + 824 .align 2 + 825 .L63: + 826 0010 003C0140 .word 1073822720 + 827 .cfi_endproc + 828 .LFE148: + 830 .section .text.HAL_EXTI_GenerateSWI,"ax",%progbits + 831 .align 1 + 832 .global HAL_EXTI_GenerateSWI + 833 .syntax unified + 834 .thumb + 835 .thumb_func + 836 .fpu fpv5-d16 + 838 HAL_EXTI_GenerateSWI: + 839 .LVL69: + 840 .LFB149: + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /** + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @brief Generate a software interrupt for a dedicated line. + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @param hexti Exti handle. + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** * @retval None. + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** */ + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti) + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** { + 841 .loc 1 517 1 is_stmt 1 view -0 + 842 .cfi_startproc + 843 @ args = 0, pretend = 0, frame = 0 + 844 @ frame_needed = 0, uses_anonymous_args = 0 + 845 @ link register save eliminated. + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** uint32_t maskline; + 846 .loc 1 518 3 view .LVU268 + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Check parameters */ + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_LINE(hexti->Line)); + 847 .loc 1 521 3 view .LVU269 + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** assert_param(IS_EXTI_CONFIG_LINE(hexti->Line)); + 848 .loc 1 522 3 view .LVU270 + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Compute line mask */ + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** maskline = (1uL << (hexti->Line & EXTI_PIN_MASK)); + 849 .loc 1 525 3 view .LVU271 + 850 .loc 1 525 28 is_stmt 0 view .LVU272 + 851 0000 0268 ldr r2, [r0] + 852 .loc 1 525 35 view .LVU273 + 853 0002 02F01F02 and r2, r2, #31 + 854 .loc 1 525 12 view .LVU274 + 855 0006 0123 movs r3, #1 + 856 0008 9340 lsls r3, r3, r2 + 857 .LVL70: + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** /* Generate Software interrupt */ + ARM GAS /tmp/ccsKoAYX.s page 26 + + + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** EXTI->SWIER = maskline; + 858 .loc 1 528 3 is_stmt 1 view .LVU275 + 859 .loc 1 528 15 is_stmt 0 view .LVU276 + 860 000a 014A ldr r2, .L66 + 861 000c 1361 str r3, [r2, #16] + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c **** } + 862 .loc 1 529 1 view .LVU277 + 863 000e 7047 bx lr + 864 .L67: + 865 .align 2 + 866 .L66: + 867 0010 003C0140 .word 1073822720 + 868 .cfi_endproc + 869 .LFE149: + 871 .text + 872 .Letext0: + 873 .file 2 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 874 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 875 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 876 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h" + ARM GAS /tmp/ccsKoAYX.s page 27 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_exti.c + /tmp/ccsKoAYX.s:17 .text.HAL_EXTI_SetConfigLine:0000000000000000 $t + /tmp/ccsKoAYX.s:25 .text.HAL_EXTI_SetConfigLine:0000000000000000 HAL_EXTI_SetConfigLine + /tmp/ccsKoAYX.s:239 .text.HAL_EXTI_SetConfigLine:00000000000000cc $d + /tmp/ccsKoAYX.s:245 .text.HAL_EXTI_GetConfigLine:0000000000000000 $t + /tmp/ccsKoAYX.s:252 .text.HAL_EXTI_GetConfigLine:0000000000000000 HAL_EXTI_GetConfigLine + /tmp/ccsKoAYX.s:428 .text.HAL_EXTI_GetConfigLine:00000000000000a0 $d + /tmp/ccsKoAYX.s:434 .text.HAL_EXTI_ClearConfigLine:0000000000000000 $t + /tmp/ccsKoAYX.s:441 .text.HAL_EXTI_ClearConfigLine:0000000000000000 HAL_EXTI_ClearConfigLine + /tmp/ccsKoAYX.s:581 .text.HAL_EXTI_ClearConfigLine:0000000000000080 $d + /tmp/ccsKoAYX.s:587 .text.HAL_EXTI_RegisterCallback:0000000000000000 $t + /tmp/ccsKoAYX.s:594 .text.HAL_EXTI_RegisterCallback:0000000000000000 HAL_EXTI_RegisterCallback + /tmp/ccsKoAYX.s:627 .text.HAL_EXTI_GetHandle:0000000000000000 $t + /tmp/ccsKoAYX.s:634 .text.HAL_EXTI_GetHandle:0000000000000000 HAL_EXTI_GetHandle + /tmp/ccsKoAYX.s:666 .text.HAL_EXTI_IRQHandler:0000000000000000 $t + /tmp/ccsKoAYX.s:673 .text.HAL_EXTI_IRQHandler:0000000000000000 HAL_EXTI_IRQHandler + /tmp/ccsKoAYX.s:727 .text.HAL_EXTI_IRQHandler:0000000000000020 $d + /tmp/ccsKoAYX.s:732 .text.HAL_EXTI_GetPending:0000000000000000 $t + /tmp/ccsKoAYX.s:739 .text.HAL_EXTI_GetPending:0000000000000000 HAL_EXTI_GetPending + /tmp/ccsKoAYX.s:784 .text.HAL_EXTI_GetPending:0000000000000018 $d + /tmp/ccsKoAYX.s:789 .text.HAL_EXTI_ClearPending:0000000000000000 $t + /tmp/ccsKoAYX.s:796 .text.HAL_EXTI_ClearPending:0000000000000000 HAL_EXTI_ClearPending + /tmp/ccsKoAYX.s:826 .text.HAL_EXTI_ClearPending:0000000000000010 $d + /tmp/ccsKoAYX.s:831 .text.HAL_EXTI_GenerateSWI:0000000000000000 $t + /tmp/ccsKoAYX.s:838 .text.HAL_EXTI_GenerateSWI:0000000000000000 HAL_EXTI_GenerateSWI + /tmp/ccsKoAYX.s:867 .text.HAL_EXTI_GenerateSWI:0000000000000010 $d + +NO UNDEFINED SYMBOLS diff --git a/build/stm32f7xx_hal_exti.o b/build/stm32f7xx_hal_exti.o new file mode 100644 index 0000000..dba4ba7 Binary files /dev/null and b/build/stm32f7xx_hal_exti.o differ diff --git a/build/stm32f7xx_hal_flash.d b/build/stm32f7xx_hal_flash.d new file mode 100644 index 0000000..b314449 --- /dev/null +++ b/build/stm32f7xx_hal_flash.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_flash.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_flash.lst b/build/stm32f7xx_hal_flash.lst new file mode 100644 index 0000000..89f9714 --- /dev/null +++ b/build/stm32f7xx_hal_flash.lst @@ -0,0 +1,3444 @@ +ARM GAS /tmp/ccSYetfS.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_flash.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.FLASH_Program_DoubleWord,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 FLASH_Program_DoubleWord: + 25 .LVL0: + 26 .LFB153: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @file stm32f7xx_hal_flash.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief FLASH HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * functionalities of the internal FLASH memory: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + Program operations functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + Memory Control functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + Peripheral Errors functions + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @verbatim + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ============================================================================== + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ##### FLASH peripheral features ##### + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ============================================================================== + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** to the Flash memory. It implements the erase and program Flash memory operations + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** and the read and write protection mechanisms. + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] The Flash memory interface accelerates code execution with a system of instruction + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** prefetch and cache lines. + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] The FLASH main features are: + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Flash memory read operations + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Flash memory program/erase operations + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Read / write protections + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Prefetch on I-Code + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) 64 cache lines of 128 bits on I-Code + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) 8 cache lines of 128 bits on D-Code + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + ARM GAS /tmp/ccSYetfS.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ##### How to use this driver ##### + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ============================================================================== + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This driver provides functions and macros to configure and program the FLASH + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** memory of all STM32F7xx devices. + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (#) FLASH Memory IO Programming functions: + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_Lock() functions + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) Program functions: byte, half word, word and double word + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) There Two modes of programming : + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+++) Polling mode using HAL_FLASH_Program() function + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+++) Interrupt mode using HAL_FLASH_Program_IT() function + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (#) Interrupts and flags management functions : + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler() + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) Wait for last FLASH operation according to its status + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (++) Get error flag status by calling HAL_SetErrorCode() + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** In addition to these functions, this driver includes a set of macros allowing + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** to handle the following operations: + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Set the latency + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Enable/Disable the prefetch buffer + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Enable/Disable the Instruction cache and the Data cache + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Reset the Instruction cache and the Data cache + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Enable/Disable the FLASH interrupts + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (+) Monitor the FLASH flags status + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (@) For any Flash memory program operation (erase or program), the CPU clock frequency + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (HCLK) must be at least 1MHz. + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (@) The contents of the Flash memory are not guaranteed if a device reset occurs during + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** a Flash memory operation. + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (@) Any attempt to read the Flash memory while it is being written or erased, causes the + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** bus to stall. Read operations are processed correctly once the program operation has + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** completed. This means that code or data fetches cannot be performed while a write/erase + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** operation is ongoing. + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @endverbatim + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ****************************************************************************** + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @attention + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * Copyright (c) 2017 STMicroelectronics. + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * All rights reserved. + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * This software is licensed under terms that can be found in the LICENSE file in + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * the root directory of this software component. + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ****************************************************************************** + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Includes ------------------------------------------------------------------*/ + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #include "stm32f7xx_hal.h" + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @addtogroup STM32F7xx_HAL_Driver + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{ + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + ARM GAS /tmp/ccSYetfS.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @defgroup FLASH FLASH + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief FLASH HAL module driver + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{ + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #ifdef HAL_FLASH_MODULE_ENABLED + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/ + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Private define ------------------------------------------------------------*/ + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @addtogroup FLASH_Private_Constants + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{ + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #define SECTOR_MASK ((uint32_t)0xFFFFFF07U) + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #define FLASH_TIMEOUT_VALUE ((uint32_t)50000U)/* 50 s */ + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @} + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Private macro -------------------------------------------------------------*/ + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @addtogroup FLASH_Private_Variables + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{ + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Variable used for Erase sectors under interruption */ + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash; + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @} + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Private function prototypes -----------------------------------------------*/ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{ + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Program operations */ + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data); + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data); + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data); + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data); + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_SetErrorCode(void); + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @} + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Exported functions --------------------------------------------------------*/ + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported Functions + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{ + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Programming operation functions + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @verbatim + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** =============================================================================== + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ##### Programming operation functions ##### + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** =============================================================================== + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] + ARM GAS /tmp/ccSYetfS.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This subsection provides a set of functions allowing to manage the FLASH + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** program operations. + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @endverbatim + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{ + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed. + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Process Locked */ + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_LOCK(&pFlash); + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */ + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Wait for last operation to be completed */ + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(status == HAL_OK) + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** switch(TypeProgram) + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_BYTE : + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/ + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data); + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_HALFWORD : + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data); + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_WORD : + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data); + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_DOUBLEWORD : + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/ + ARM GAS /tmp/ccSYetfS.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data); + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** default : + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Wait for last operation to be completed */ + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the program operation is completed, disable the PG Bit */ + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= (~FLASH_CR_PG); + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Process Unlocked */ + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return status; + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address with interrupt ena + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed. + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data) + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Process Locked */ + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_LOCK(&pFlash); + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */ + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Enable End of FLASH Operation interrupt */ + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP); + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Enable Error source interrupt */ + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR); + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Clear pending flags (if any) */ + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |\ + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR); + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM; + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Address = Address; + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** switch(TypeProgram) + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_BYTE : + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/ + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data); + ARM GAS /tmp/ccSYetfS.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_HALFWORD : + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data); + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_WORD : + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data); + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_TYPEPROGRAM_DOUBLEWORD : + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/ + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data); + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** default : + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return status; + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief This function handles FLASH interrupt request. + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void) + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t temp = 0; + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the program operation is completed, disable the PG Bit */ + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= (~FLASH_CR_PG); + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the erase operation is completed, disable the SER Bit */ + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= (~FLASH_CR_SER); + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= SECTOR_MASK; + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* if the erase operation is completed, disable the MER Bit */ + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= (~FLASH_MER_BIT); + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check FLASH End of Operation flag */ + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** switch (pFlash.ProcedureOnGoing) + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_SECTERASE : + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + ARM GAS /tmp/ccSYetfS.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Nb of sector to erased can be decreased */ + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.NbSectorsToErase--; + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check if there are still sectors to erase */ + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(pFlash.NbSectorsToErase != 0) + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** temp = pFlash.Sector; + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Indicate user which sector has been erased */ + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(temp); + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Increment sector number */ + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** temp = ++pFlash.Sector; + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase); + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** else + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* No more sectors to Erase, user callback can be called.*/ + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Reset Sector and stop Erase sectors procedure */ + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Sector = temp = 0xFFFFFFFFU; + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(temp); + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Sector Erase procedure is completed */ + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_MASSERASE : + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* MassErase ended. Return the selected bank : in this product we don't have Banks */ + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(0); + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* MAss Erase procedure is completed */ + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_PROGRAM : + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Program ended. Return the selected address*/ + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address); + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Programming procedure is completed */ + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** default : + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check FLASH operation error flags */ + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ALL_ERRORS) != RESET) + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** switch (pFlash.ProcedureOnGoing) + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_SECTERASE : + ARM GAS /tmp/ccSYetfS.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* return the faulty sector */ + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** temp = pFlash.Sector; + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_MASSERASE : + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* No return in case of Mass Erase */ + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** temp = 0; + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** case FLASH_PROC_PROGRAM : + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*return the faulty address*/ + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** temp = pFlash.Address; + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** default : + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Save the Error code*/ + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_SetErrorCode(); + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH error interrupt user callback */ + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(temp); + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Stop the procedure ongoing */ + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE) + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Disable End of FLASH Operation interrupt */ + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP); + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Disable Error source interrupt */ + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_ERR); + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Process Unlocked */ + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief FLASH end of operation interrupt callback + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Sectors Erase: Sector which has been erased (if 0xFFFFFFFF, it means that + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * all the selected sectors have been erased) + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Program : Address which was selected for data program + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Mass Erase : No return value expected + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue) + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ + ARM GAS /tmp/ccSYetfS.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** UNUSED(ReturnValue); + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief FLASH operation error interrupt callback + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Sectors Erase: Sector which has been erased (if 0xFFFFFFFF, it means that + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * all the selected sectors have been erased) + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Program : Address which was selected for data program + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * - Mass Erase : No return value expected + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue) + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** UNUSED(ReturnValue); + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @} + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief management functions + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @verbatim + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** =============================================================================== + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ##### Peripheral Control functions ##### + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** =============================================================================== + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** memory operations. + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @endverbatim + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{ + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Unlock the FLASH control register access + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void) + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Authorize the FLASH Registers access */ + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY1); + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + ARM GAS /tmp/ccSYetfS.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Verify Flash is unlocked */ + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** status = HAL_ERROR; + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return status; + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Locks the FLASH control register access + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void) + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_LOCK; + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_OK; + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Unlock the FLASH Option Control Registers access. + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Authorizes the Option Byte register programming */ + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY1; + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** else + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_ERROR; + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_OK; + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Lock the FLASH Option Control Registers access. + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void) + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK; + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_OK; + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Launch the option byte loading. + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status + ARM GAS /tmp/ccSYetfS.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void) + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */ + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTCR |= FLASH_OPTCR_OPTSTRT; + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Wait for last operation to be completed */ + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE)); + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @} + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Peripheral Errors functions + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @verbatim + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** =============================================================================== + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** ##### Peripheral Errors functions ##### + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** =============================================================================== + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** [..] + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This subsection permits to get in run-time Errors of the FLASH peripheral. + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** @endverbatim + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @{ + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Get the specific FLASH error flag. + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval FLASH_ErrorCode: The returned value can be: + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @arg FLASH_ERROR_ERS: FLASH Erasing Sequence error flag + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @arg FLASH_ERROR_PGP: FLASH Programming Parallelism error flag + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @arg FLASH_ERROR_PGA: FLASH Programming Alignment error flag + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @arg FLASH_ERROR_WRP: FLASH Write protected error flag + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @arg FLASH_ERROR_OPERATION: FLASH operation Error flag + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void) + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return pFlash.ErrorCode; + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @} + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete. + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Timeout maximum flash operationtimeout + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval HAL Status + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t tickstart = 0; + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Clear Error Code */ + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; + ARM GAS /tmp/ccSYetfS.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** flag will be set */ + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Get tick */ + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** tickstart = HAL_GetTick(); + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET) + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(Timeout != HAL_MAX_DELAY) + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout)) + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_TIMEOUT; + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ALL_ERRORS) != RESET) + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /*Save the error code*/ + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_SetErrorCode(); + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_ERROR; + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check FLASH End of Operation flag */ + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If there is an error flag set */ + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_OK; + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program a double word (64-bit) at a specified address. + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note This function must be used when the device voltage range is from + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * 2.7V to 3.6V and an External Vpp is present. + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * the erase operation is performed before the program one. + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed. + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed. + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data) + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 28 .loc 1 652 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 33 .loc 1 652 1 is_stmt 0 view .LVU1 + ARM GAS /tmp/ccSYetfS.s page 13 + + + 34 0000 10B4 push {r4} + 35 .LCFI0: + 36 .cfi_def_cfa_offset 4 + 37 .cfi_offset 4, -4 + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */ + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); + 38 .loc 1 654 3 is_stmt 1 view .LVU2 + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= CR_PSIZE_MASK; + 39 .loc 1 657 3 view .LVU3 + 40 .loc 1 657 13 is_stmt 0 view .LVU4 + 41 0002 0B49 ldr r1, .L3 + 42 0004 0C69 ldr r4, [r1, #16] + 43 0006 24F44074 bic r4, r4, #768 + 44 000a 0C61 str r4, [r1, #16] + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD; + 45 .loc 1 658 3 is_stmt 1 view .LVU5 + 46 .loc 1 658 13 is_stmt 0 view .LVU6 + 47 000c 0C69 ldr r4, [r1, #16] + 48 000e 44F44074 orr r4, r4, #768 + 49 0012 0C61 str r4, [r1, #16] + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; + 50 .loc 1 659 3 is_stmt 1 view .LVU7 + 51 .loc 1 659 13 is_stmt 0 view .LVU8 + 52 0014 0C69 ldr r4, [r1, #16] + 53 0016 44F00104 orr r4, r4, #1 + 54 001a 0C61 str r4, [r1, #16] + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Program first word */ + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *(__IO uint32_t*)Address = (uint32_t)Data; + 55 .loc 1 662 3 is_stmt 1 view .LVU9 + 56 .loc 1 662 28 is_stmt 0 view .LVU10 + 57 001c 0260 str r2, [r0] + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Barrier to ensure programming is performed in 2 steps, in right order + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** (independently of compiler optimization behavior) */ + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __ISB(); + 58 .loc 1 665 3 is_stmt 1 view .LVU11 + 59 .LBB12: + 60 .LBI12: + 61 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h" + 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** + 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h + 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file + 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.0.4 + 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018 + 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ + 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* + 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 + 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may + 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. + 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at + 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 + ARM GAS /tmp/ccSYetfS.s page 14 + + + 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software + 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT + 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and + 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. + 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 24:Drivers/CMSIS/Include/cmsis_gcc.h **** + 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H + 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H + 27:Drivers/CMSIS/Include/cmsis_gcc.h **** + 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ + 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" + 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" + 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" + 33:Drivers/CMSIS/Include/cmsis_gcc.h **** + 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ + 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin + 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) + 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 38:Drivers/CMSIS/Include/cmsis_gcc.h **** + 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ + 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM + 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm + 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE + 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline + 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE + 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline + 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE + 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline + 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN + 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) + 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED + 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) + 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK + 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) + 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED + 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) + 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT + 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION + 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) + 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ + 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + ARM GAS /tmp/ccSYetfS.s page 15 + + + 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE + 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- + 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ + 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add + 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE + 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- + 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ + 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add + 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED + 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) + 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT + 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict + 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 116:Drivers/CMSIS/Include/cmsis_gcc.h **** + 117:Drivers/CMSIS/Include/cmsis_gcc.h **** + 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ + 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface + 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 123:Drivers/CMSIS/Include/cmsis_gcc.h **** + 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts + 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void) + 130:Drivers/CMSIS/Include/cmsis_gcc.h **** { + ARM GAS /tmp/ccSYetfS.s page 16 + + + 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); + 132:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 133:Drivers/CMSIS/Include/cmsis_gcc.h **** + 134:Drivers/CMSIS/Include/cmsis_gcc.h **** + 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts + 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. + 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) + 141:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); + 143:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 144:Drivers/CMSIS/Include/cmsis_gcc.h **** + 145:Drivers/CMSIS/Include/cmsis_gcc.h **** + 146:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register + 148:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register. + 149:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value + 150:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 151:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) + 152:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 153:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 154:Drivers/CMSIS/Include/cmsis_gcc.h **** + 155:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) ); + 156:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 157:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 158:Drivers/CMSIS/Include/cmsis_gcc.h **** + 159:Drivers/CMSIS/Include/cmsis_gcc.h **** + 160:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 161:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 162:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure) + 163:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode. + 164:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value + 165:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 166:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) + 167:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 168:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 169:Drivers/CMSIS/Include/cmsis_gcc.h **** + 170:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + 171:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 172:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 174:Drivers/CMSIS/Include/cmsis_gcc.h **** + 175:Drivers/CMSIS/Include/cmsis_gcc.h **** + 176:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 177:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register + 178:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register. + 179:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 180:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 181:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) + 182:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 183:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + 184:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 185:Drivers/CMSIS/Include/cmsis_gcc.h **** + 186:Drivers/CMSIS/Include/cmsis_gcc.h **** + 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + ARM GAS /tmp/ccSYetfS.s page 17 + + + 188:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure) + 190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state. + 191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 192:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) + 194:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + 196:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 197:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 198:Drivers/CMSIS/Include/cmsis_gcc.h **** + 199:Drivers/CMSIS/Include/cmsis_gcc.h **** + 200:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 201:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register + 202:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register. + 203:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value + 204:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 205:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void) + 206:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 207:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 208:Drivers/CMSIS/Include/cmsis_gcc.h **** + 209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + 210:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 211:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 212:Drivers/CMSIS/Include/cmsis_gcc.h **** + 213:Drivers/CMSIS/Include/cmsis_gcc.h **** + 214:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 215:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register + 216:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register. + 217:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value + 218:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 219:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void) + 220:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 221:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 222:Drivers/CMSIS/Include/cmsis_gcc.h **** + 223:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + 224:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 225:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 226:Drivers/CMSIS/Include/cmsis_gcc.h **** + 227:Drivers/CMSIS/Include/cmsis_gcc.h **** + 228:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register + 230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register. + 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value + 232:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(void) + 234:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 235:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 236:Drivers/CMSIS/Include/cmsis_gcc.h **** + 237:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + 238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 239:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 240:Drivers/CMSIS/Include/cmsis_gcc.h **** + 241:Drivers/CMSIS/Include/cmsis_gcc.h **** + 242:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer + 244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP). + ARM GAS /tmp/ccSYetfS.s page 18 + + + 245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 246:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void) + 248:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 250:Drivers/CMSIS/Include/cmsis_gcc.h **** + 251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) ); + 252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 253:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 254:Drivers/CMSIS/Include/cmsis_gcc.h **** + 255:Drivers/CMSIS/Include/cmsis_gcc.h **** + 256:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 257:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure) + 259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s + 260:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 261:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 262:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) + 263:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 264:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 265:Drivers/CMSIS/Include/cmsis_gcc.h **** + 266:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + 267:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 268:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 269:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 270:Drivers/CMSIS/Include/cmsis_gcc.h **** + 271:Drivers/CMSIS/Include/cmsis_gcc.h **** + 272:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 273:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer + 274:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP). + 275:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 276:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 277:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) + 278:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 279:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); + 280:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 281:Drivers/CMSIS/Include/cmsis_gcc.h **** + 282:Drivers/CMSIS/Include/cmsis_gcc.h **** + 283:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 284:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 285:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 286:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta + 287:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 288:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 289:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) + 290:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 291:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); + 292:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 293:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 294:Drivers/CMSIS/Include/cmsis_gcc.h **** + 295:Drivers/CMSIS/Include/cmsis_gcc.h **** + 296:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 297:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer + 298:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP). + 299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 300:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void) + ARM GAS /tmp/ccSYetfS.s page 19 + + + 302:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 304:Drivers/CMSIS/Include/cmsis_gcc.h **** + 305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) ); + 306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 307:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 308:Drivers/CMSIS/Include/cmsis_gcc.h **** + 309:Drivers/CMSIS/Include/cmsis_gcc.h **** + 310:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 311:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 312:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure) + 313:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat + 314:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 315:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 316:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) + 317:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 319:Drivers/CMSIS/Include/cmsis_gcc.h **** + 320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + 321:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 322:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 323:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 324:Drivers/CMSIS/Include/cmsis_gcc.h **** + 325:Drivers/CMSIS/Include/cmsis_gcc.h **** + 326:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 327:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer + 328:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP). + 329:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 330:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 331:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) + 332:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); + 334:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 335:Drivers/CMSIS/Include/cmsis_gcc.h **** + 336:Drivers/CMSIS/Include/cmsis_gcc.h **** + 337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 338:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 339:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure) + 340:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + 341:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 342:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 343:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) + 344:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 345:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); + 346:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 347:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 348:Drivers/CMSIS/Include/cmsis_gcc.h **** + 349:Drivers/CMSIS/Include/cmsis_gcc.h **** + 350:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 351:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 352:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Stack Pointer (non-secure) + 353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + 354:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value + 355:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) + 357:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + ARM GAS /tmp/ccSYetfS.s page 20 + + + 359:Drivers/CMSIS/Include/cmsis_gcc.h **** + 360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + 361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 362:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 363:Drivers/CMSIS/Include/cmsis_gcc.h **** + 364:Drivers/CMSIS/Include/cmsis_gcc.h **** + 365:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure) + 367:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + 368:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set + 369:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 370:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) + 371:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); + 373:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 374:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 375:Drivers/CMSIS/Include/cmsis_gcc.h **** + 376:Drivers/CMSIS/Include/cmsis_gcc.h **** + 377:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 378:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask + 379:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register. + 380:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 381:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 382:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) + 383:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 384:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 385:Drivers/CMSIS/Include/cmsis_gcc.h **** + 386:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 387:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 388:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 389:Drivers/CMSIS/Include/cmsis_gcc.h **** + 390:Drivers/CMSIS/Include/cmsis_gcc.h **** + 391:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 392:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 393:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure) + 394:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg + 395:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 396:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 397:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) + 398:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 399:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 400:Drivers/CMSIS/Include/cmsis_gcc.h **** + 401:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + 402:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 403:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 404:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 405:Drivers/CMSIS/Include/cmsis_gcc.h **** + 406:Drivers/CMSIS/Include/cmsis_gcc.h **** + 407:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 408:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask + 409:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register. + 410:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 411:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 412:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) + 413:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 415:Drivers/CMSIS/Include/cmsis_gcc.h **** } + ARM GAS /tmp/ccSYetfS.s page 21 + + + 416:Drivers/CMSIS/Include/cmsis_gcc.h **** + 417:Drivers/CMSIS/Include/cmsis_gcc.h **** + 418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 419:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure) + 421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + 422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 423:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 424:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) + 425:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 426:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); + 427:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 428:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 429:Drivers/CMSIS/Include/cmsis_gcc.h **** + 430:Drivers/CMSIS/Include/cmsis_gcc.h **** + 431:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 433:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 434:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 435:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ + 436:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + 437:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 438:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 439:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void) + 440:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 441:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory"); + 442:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 443:Drivers/CMSIS/Include/cmsis_gcc.h **** + 444:Drivers/CMSIS/Include/cmsis_gcc.h **** + 445:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 446:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ + 447:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR. + 448:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 449:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 450:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void) + 451:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 452:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory"); + 453:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 454:Drivers/CMSIS/Include/cmsis_gcc.h **** + 455:Drivers/CMSIS/Include/cmsis_gcc.h **** + 456:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 457:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority + 458:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register. + 459:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 460:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 461:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) + 462:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 463:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 464:Drivers/CMSIS/Include/cmsis_gcc.h **** + 465:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + 466:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 467:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 468:Drivers/CMSIS/Include/cmsis_gcc.h **** + 469:Drivers/CMSIS/Include/cmsis_gcc.h **** + 470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 471:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure) + ARM GAS /tmp/ccSYetfS.s page 22 + + + 473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state. + 474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 475:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) + 477:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 479:Drivers/CMSIS/Include/cmsis_gcc.h **** + 480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + 481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 482:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 483:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 484:Drivers/CMSIS/Include/cmsis_gcc.h **** + 485:Drivers/CMSIS/Include/cmsis_gcc.h **** + 486:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority + 488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register. + 489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 490:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) + 492:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); + 494:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 495:Drivers/CMSIS/Include/cmsis_gcc.h **** + 496:Drivers/CMSIS/Include/cmsis_gcc.h **** + 497:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 498:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 499:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure) + 500:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state. + 501:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 502:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 503:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) + 504:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 505:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); + 506:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 507:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 508:Drivers/CMSIS/Include/cmsis_gcc.h **** + 509:Drivers/CMSIS/Include/cmsis_gcc.h **** + 510:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 511:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition + 512:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable + 513:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level. + 514:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 515:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 516:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) + 517:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 518:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); + 519:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 520:Drivers/CMSIS/Include/cmsis_gcc.h **** + 521:Drivers/CMSIS/Include/cmsis_gcc.h **** + 522:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 523:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask + 524:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register. + 525:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 526:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) + 528:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + ARM GAS /tmp/ccSYetfS.s page 23 + + + 530:Drivers/CMSIS/Include/cmsis_gcc.h **** + 531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + 532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 533:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 534:Drivers/CMSIS/Include/cmsis_gcc.h **** + 535:Drivers/CMSIS/Include/cmsis_gcc.h **** + 536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 537:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 538:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure) + 539:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state. + 540:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 541:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 542:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) + 543:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 544:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 545:Drivers/CMSIS/Include/cmsis_gcc.h **** + 546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + 547:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 548:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 549:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 550:Drivers/CMSIS/Include/cmsis_gcc.h **** + 551:Drivers/CMSIS/Include/cmsis_gcc.h **** + 552:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 553:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask + 554:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register. + 555:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 556:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 557:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) + 558:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 559:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); + 560:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 561:Drivers/CMSIS/Include/cmsis_gcc.h **** + 562:Drivers/CMSIS/Include/cmsis_gcc.h **** + 563:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 564:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 565:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure) + 566:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state. + 567:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 568:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 569:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) + 570:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 571:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); + 572:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 573:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 574:Drivers/CMSIS/Include/cmsis_gcc.h **** + 575:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 576:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 577:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + 578:Drivers/CMSIS/Include/cmsis_gcc.h **** + 579:Drivers/CMSIS/Include/cmsis_gcc.h **** + 580:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 581:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + 582:Drivers/CMSIS/Include/cmsis_gcc.h **** + 583:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit + 585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + ARM GAS /tmp/ccSYetfS.s page 24 + + + 587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 588:Drivers/CMSIS/Include/cmsis_gcc.h **** + 589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + 590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 591:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) + 593:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 595:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 596:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 597:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 598:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 599:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 600:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + 601:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 602:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 603:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 604:Drivers/CMSIS/Include/cmsis_gcc.h **** + 605:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + 606:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 607:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure) + 608:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 609:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 610:Drivers/CMSIS/Include/cmsis_gcc.h **** + 611:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in + 612:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 613:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 614:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) + 615:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 616:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 617:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 618:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 619:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 620:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 621:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + 622:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 623:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 624:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 625:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 626:Drivers/CMSIS/Include/cmsis_gcc.h **** + 627:Drivers/CMSIS/Include/cmsis_gcc.h **** + 628:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 629:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit + 630:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 631:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 632:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 633:Drivers/CMSIS/Include/cmsis_gcc.h **** + 634:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + 635:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 636:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 637:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) + 638:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 639:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 640:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + ARM GAS /tmp/ccSYetfS.s page 25 + + + 644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); + 645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 646:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 647:Drivers/CMSIS/Include/cmsis_gcc.h **** + 648:Drivers/CMSIS/Include/cmsis_gcc.h **** + 649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 650:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 652:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 653:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 654:Drivers/CMSIS/Include/cmsis_gcc.h **** + 655:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s + 656:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 657:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 658:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) + 659:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 661:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 662:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 663:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 664:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); + 665:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 666:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 667:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 668:Drivers/CMSIS/Include/cmsis_gcc.h **** + 669:Drivers/CMSIS/Include/cmsis_gcc.h **** + 670:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 671:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit + 672:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 673:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 674:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 675:Drivers/CMSIS/Include/cmsis_gcc.h **** + 676:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + 677:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 678:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 679:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) + 680:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 681:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 682:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 683:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 684:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 685:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 686:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 687:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + 688:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 689:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 690:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 691:Drivers/CMSIS/Include/cmsis_gcc.h **** + 692:Drivers/CMSIS/Include/cmsis_gcc.h **** + 693:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 694:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 695:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure) + 696:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 697:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 698:Drivers/CMSIS/Include/cmsis_gcc.h **** + 699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec + 700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + ARM GAS /tmp/ccSYetfS.s page 26 + + + 701:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) + 703:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 709:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + 710:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 711:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 712:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 713:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 714:Drivers/CMSIS/Include/cmsis_gcc.h **** + 715:Drivers/CMSIS/Include/cmsis_gcc.h **** + 716:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit + 718:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 719:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 720:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 721:Drivers/CMSIS/Include/cmsis_gcc.h **** + 722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + 723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + 724:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) + 726:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 727:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 728:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 729:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 730:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 731:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 732:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); + 733:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 734:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 735:Drivers/CMSIS/Include/cmsis_gcc.h **** + 736:Drivers/CMSIS/Include/cmsis_gcc.h **** + 737:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 738:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 739:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure) + 740:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 741:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 742:Drivers/CMSIS/Include/cmsis_gcc.h **** + 743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu + 744:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set + 745:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) + 747:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 748:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 749:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 750:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 751:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 752:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); + 753:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 754:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 756:Drivers/CMSIS/Include/cmsis_gcc.h **** + 757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + ARM GAS /tmp/ccSYetfS.s page 27 + + + 758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + 759:Drivers/CMSIS/Include/cmsis_gcc.h **** + 760:Drivers/CMSIS/Include/cmsis_gcc.h **** + 761:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR + 763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register. + 764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value + 765:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 766:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void) + 767:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 768:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 769:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 770:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr) + 771:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 772:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 773:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr(); + 775:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 776:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 777:Drivers/CMSIS/Include/cmsis_gcc.h **** + 778:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + 779:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 781:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 782:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U); + 783:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 784:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 785:Drivers/CMSIS/Include/cmsis_gcc.h **** + 786:Drivers/CMSIS/Include/cmsis_gcc.h **** + 787:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 788:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR + 789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register. + 790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set + 791:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) + 793:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 795:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 796:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr) + 797:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 798:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 799:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 800:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr); + 801:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 802:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); + 803:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 804:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 805:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr; + 806:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 807:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 808:Drivers/CMSIS/Include/cmsis_gcc.h **** + 809:Drivers/CMSIS/Include/cmsis_gcc.h **** + 810:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */ + 811:Drivers/CMSIS/Include/cmsis_gcc.h **** + 812:Drivers/CMSIS/Include/cmsis_gcc.h **** + 813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ + 814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + ARM GAS /tmp/ccSYetfS.s page 28 + + + 815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions + 816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 817:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 818:Drivers/CMSIS/Include/cmsis_gcc.h **** + 819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. + 820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" + 821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ + 822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) + 823:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) + 824:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) + 825:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) + 826:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 827:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) + 828:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) + 829:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) + 830:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 831:Drivers/CMSIS/Include/cmsis_gcc.h **** + 832:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 833:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation + 834:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. + 835:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 836:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") + 837:Drivers/CMSIS/Include/cmsis_gcc.h **** + 838:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 839:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt + 840:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o + 841:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 842:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi") + 843:Drivers/CMSIS/Include/cmsis_gcc.h **** + 844:Drivers/CMSIS/Include/cmsis_gcc.h **** + 845:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 846:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event + 847:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter + 848:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. + 849:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 850:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe") + 851:Drivers/CMSIS/Include/cmsis_gcc.h **** + 852:Drivers/CMSIS/Include/cmsis_gcc.h **** + 853:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 854:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event + 855:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + 856:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 857:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") + 858:Drivers/CMSIS/Include/cmsis_gcc.h **** + 859:Drivers/CMSIS/Include/cmsis_gcc.h **** + 860:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 861:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier + 862:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, + 863:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, + 864:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. + 865:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) + 62 .loc 2 866 27 view .LVU12 + 63 .LBB13: + 867:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); + 64 .loc 2 868 3 view .LVU13 + ARM GAS /tmp/ccSYetfS.s page 29 + + + 65 .syntax unified + 66 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 67 001e BFF36F8F isb 0xF + 68 @ 0 "" 2 + 69 .thumb + 70 .syntax unified + 71 .LBE13: + 72 .LBE12: + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Program second word */ + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *(__IO uint32_t*)(Address+4) = (uint32_t)(Data >> 32); + 73 .loc 1 668 3 view .LVU14 + 74 .loc 1 668 32 is_stmt 0 view .LVU15 + 75 0022 4360 str r3, [r0, #4] + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Data synchronous Barrier (DSB) Just after the write operation + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/ + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __DSB(); + 76 .loc 1 672 3 is_stmt 1 view .LVU16 + 77 .LBB14: + 78 .LBI14: + 869:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 870:Drivers/CMSIS/Include/cmsis_gcc.h **** + 871:Drivers/CMSIS/Include/cmsis_gcc.h **** + 872:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 873:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Synchronization Barrier + 874:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Acts as a special kind of Data Memory Barrier. + 875:Drivers/CMSIS/Include/cmsis_gcc.h **** It completes when all explicit memory accesses before this instruction complete. + 876:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DSB(void) + 79 .loc 2 877 27 view .LVU17 + 80 .LBB15: + 878:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory"); + 81 .loc 2 879 3 view .LVU18 + 82 .syntax unified + 83 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 84 0024 BFF34F8F dsb 0xF + 85 @ 0 "" 2 + 86 .thumb + 87 .syntax unified + 88 .LBE15: + 89 .LBE14: + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 90 .loc 1 673 1 is_stmt 0 view .LVU19 + 91 0028 5DF8044B ldr r4, [sp], #4 + 92 .LCFI1: + 93 .cfi_restore 4 + 94 .cfi_def_cfa_offset 0 + 95 002c 7047 bx lr + 96 .L4: + 97 002e 00BF .align 2 + 98 .L3: + 99 0030 003C0240 .word 1073888256 + 100 .cfi_endproc + 101 .LFE153: + 103 .section .text.FLASH_Program_Word,"ax",%progbits + ARM GAS /tmp/ccSYetfS.s page 30 + + + 104 .align 1 + 105 .syntax unified + 106 .thumb + 107 .thumb_func + 108 .fpu fpv5-d16 + 110 FLASH_Program_Word: + 111 .LVL1: + 112 .LFB154: + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program word (32-bit) at a specified address. + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note This function must be used when the device voltage range is from + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * 2.7V to 3.3V. + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * the erase operation is performed before the program one. + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed. + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed. + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data) + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 113 .loc 1 689 1 is_stmt 1 view -0 + 114 .cfi_startproc + 115 @ args = 0, pretend = 0, frame = 0 + 116 @ frame_needed = 0, uses_anonymous_args = 0 + 117 @ link register save eliminated. + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */ + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); + 118 .loc 1 691 3 view .LVU21 + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= CR_PSIZE_MASK; + 119 .loc 1 694 3 view .LVU22 + 120 .loc 1 694 13 is_stmt 0 view .LVU23 + 121 0000 084B ldr r3, .L6 + 122 0002 1A69 ldr r2, [r3, #16] + 123 0004 22F44072 bic r2, r2, #768 + 124 0008 1A61 str r2, [r3, #16] + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_WORD; + 125 .loc 1 695 3 is_stmt 1 view .LVU24 + 126 .loc 1 695 13 is_stmt 0 view .LVU25 + 127 000a 1A69 ldr r2, [r3, #16] + 128 000c 42F40072 orr r2, r2, #512 + 129 0010 1A61 str r2, [r3, #16] + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; + 130 .loc 1 696 3 is_stmt 1 view .LVU26 + 131 .loc 1 696 13 is_stmt 0 view .LVU27 + 132 0012 1A69 ldr r2, [r3, #16] + 133 0014 42F00102 orr r2, r2, #1 + 134 0018 1A61 str r2, [r3, #16] + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *(__IO uint32_t*)Address = Data; + 135 .loc 1 698 3 is_stmt 1 view .LVU28 + 136 .loc 1 698 28 is_stmt 0 view .LVU29 + ARM GAS /tmp/ccSYetfS.s page 31 + + + 137 001a 0160 str r1, [r0] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Data synchronous Barrier (DSB) Just after the write operation + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/ + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __DSB(); + 138 .loc 1 702 3 is_stmt 1 view .LVU30 + 139 .LBB16: + 140 .LBI16: + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 141 .loc 2 877 27 view .LVU31 + 142 .LBB17: + 143 .loc 2 879 3 view .LVU32 + 144 .syntax unified + 145 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 146 001c BFF34F8F dsb 0xF + 147 @ 0 "" 2 + 148 .thumb + 149 .syntax unified + 150 .LBE17: + 151 .LBE16: + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 152 .loc 1 703 1 is_stmt 0 view .LVU33 + 153 0020 7047 bx lr + 154 .L7: + 155 0022 00BF .align 2 + 156 .L6: + 157 0024 003C0240 .word 1073888256 + 158 .cfi_endproc + 159 .LFE154: + 161 .section .text.FLASH_Program_HalfWord,"ax",%progbits + 162 .align 1 + 163 .syntax unified + 164 .thumb + 165 .thumb_func + 166 .fpu fpv5-d16 + 168 FLASH_Program_HalfWord: + 169 .LVL2: + 170 .LFB155: + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program a half-word (16-bit) at a specified address. + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note This function must be used when the device voltage range is from + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * 2.1V to 3.6V. + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * the erase operation is performed before the program one. + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed. + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed. + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data) + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 171 .loc 1 718 1 is_stmt 1 view -0 + 172 .cfi_startproc + 173 @ args = 0, pretend = 0, frame = 0 + 174 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccSYetfS.s page 32 + + + 175 @ link register save eliminated. + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */ + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); + 176 .loc 1 720 3 view .LVU35 + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= CR_PSIZE_MASK; + 177 .loc 1 723 3 view .LVU36 + 178 .loc 1 723 13 is_stmt 0 view .LVU37 + 179 0000 084B ldr r3, .L9 + 180 0002 1A69 ldr r2, [r3, #16] + 181 0004 22F44072 bic r2, r2, #768 + 182 0008 1A61 str r2, [r3, #16] + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_HALF_WORD; + 183 .loc 1 724 3 is_stmt 1 view .LVU38 + 184 .loc 1 724 13 is_stmt 0 view .LVU39 + 185 000a 1A69 ldr r2, [r3, #16] + 186 000c 42F48072 orr r2, r2, #256 + 187 0010 1A61 str r2, [r3, #16] + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; + 188 .loc 1 725 3 is_stmt 1 view .LVU40 + 189 .loc 1 725 13 is_stmt 0 view .LVU41 + 190 0012 1A69 ldr r2, [r3, #16] + 191 0014 42F00102 orr r2, r2, #1 + 192 0018 1A61 str r2, [r3, #16] + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *(__IO uint16_t*)Address = Data; + 193 .loc 1 727 3 is_stmt 1 view .LVU42 + 194 .loc 1 727 28 is_stmt 0 view .LVU43 + 195 001a 0180 strh r1, [r0] @ movhi + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Data synchronous Barrier (DSB) Just after the write operation + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/ + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __DSB(); + 196 .loc 1 731 3 is_stmt 1 view .LVU44 + 197 .LBB18: + 198 .LBI18: + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 199 .loc 2 877 27 view .LVU45 + 200 .LBB19: + 201 .loc 2 879 3 view .LVU46 + 202 .syntax unified + 203 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 204 001c BFF34F8F dsb 0xF + 205 @ 0 "" 2 + 206 .thumb + 207 .syntax unified + 208 .LBE19: + 209 .LBE18: + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 210 .loc 1 733 1 is_stmt 0 view .LVU47 + 211 0020 7047 bx lr + 212 .L10: + 213 0022 00BF .align 2 + 214 .L9: + 215 0024 003C0240 .word 1073888256 + ARM GAS /tmp/ccSYetfS.s page 33 + + + 216 .cfi_endproc + 217 .LFE155: + 219 .section .text.FLASH_Program_Byte,"ax",%progbits + 220 .align 1 + 221 .syntax unified + 222 .thumb + 223 .thumb_func + 224 .fpu fpv5-d16 + 226 FLASH_Program_Byte: + 227 .LVL3: + 228 .LFB156: + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Program byte (8-bit) at a specified address. + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note This function must be used when the device voltage range is from + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * 1.7V to 3.6V. + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * the erase operation is performed before the program one. + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Address specifies the address to be programmed. + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @param Data specifies the data to be programmed. + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data) + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 229 .loc 1 748 1 is_stmt 1 view -0 + 230 .cfi_startproc + 231 @ args = 0, pretend = 0, frame = 0 + 232 @ frame_needed = 0, uses_anonymous_args = 0 + 233 @ link register save eliminated. + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Check the parameters */ + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); + 234 .loc 1 750 3 view .LVU49 + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= CR_PSIZE_MASK; + 235 .loc 1 753 3 view .LVU50 + 236 .loc 1 753 13 is_stmt 0 view .LVU51 + 237 0000 074B ldr r3, .L12 + 238 0002 1A69 ldr r2, [r3, #16] + 239 0004 22F44072 bic r2, r2, #768 + 240 0008 1A61 str r2, [r3, #16] + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_BYTE; + 241 .loc 1 754 3 is_stmt 1 view .LVU52 + 242 .loc 1 754 13 is_stmt 0 view .LVU53 + 243 000a 1A69 ldr r2, [r3, #16] + 244 000c 1A61 str r2, [r3, #16] + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; + 245 .loc 1 755 3 is_stmt 1 view .LVU54 + 246 .loc 1 755 13 is_stmt 0 view .LVU55 + 247 000e 1A69 ldr r2, [r3, #16] + 248 0010 42F00102 orr r2, r2, #1 + 249 0014 1A61 str r2, [r3, #16] + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** *(__IO uint8_t*)Address = Data; + 250 .loc 1 757 3 is_stmt 1 view .LVU56 + ARM GAS /tmp/ccSYetfS.s page 34 + + + 251 .loc 1 757 27 is_stmt 0 view .LVU57 + 252 0016 0170 strb r1, [r0] + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Data synchronous Barrier (DSB) Just after the write operation + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/ + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __DSB(); + 253 .loc 1 761 3 is_stmt 1 view .LVU58 + 254 .LBB20: + 255 .LBI20: + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 256 .loc 2 877 27 view .LVU59 + 257 .LBB21: + 258 .loc 2 879 3 view .LVU60 + 259 .syntax unified + 260 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 261 0018 BFF34F8F dsb 0xF + 262 @ 0 "" 2 + 263 .thumb + 264 .syntax unified + 265 .LBE21: + 266 .LBE20: + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 267 .loc 1 762 1 is_stmt 0 view .LVU61 + 268 001c 7047 bx lr + 269 .L13: + 270 001e 00BF .align 2 + 271 .L12: + 272 0020 003C0240 .word 1073888256 + 273 .cfi_endproc + 274 .LFE156: + 276 .section .text.FLASH_SetErrorCode,"ax",%progbits + 277 .align 1 + 278 .syntax unified + 279 .thumb + 280 .thumb_func + 281 .fpu fpv5-d16 + 283 FLASH_SetErrorCode: + 284 .LFB157: + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /** + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @brief Set the specific FLASH error flag. + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** * @retval None + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** */ + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** static void FLASH_SetErrorCode(void) + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 285 .loc 1 769 1 is_stmt 1 view -0 + 286 .cfi_startproc + 287 @ args = 0, pretend = 0, frame = 0 + 288 @ frame_needed = 0, uses_anonymous_args = 0 + 289 @ link register save eliminated. + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET) + 290 .loc 1 770 3 view .LVU63 + 291 .loc 1 770 6 is_stmt 0 view .LVU64 + 292 0000 1A4B ldr r3, .L20 + 293 0002 DB68 ldr r3, [r3, #12] + 294 .loc 1 770 5 view .LVU65 + 295 0004 13F0020F tst r3, #2 + ARM GAS /tmp/ccSYetfS.s page 35 + + + 296 0008 04D0 beq .L15 + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_OPERATION; + 297 .loc 1 772 5 is_stmt 1 view .LVU66 + 298 .loc 1 772 22 is_stmt 0 view .LVU67 + 299 000a 194A ldr r2, .L20+4 + 300 000c 9369 ldr r3, [r2, #24] + 301 000e 43F02003 orr r3, r3, #32 + 302 0012 9361 str r3, [r2, #24] + 303 .L15: + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET) + 304 .loc 1 775 3 is_stmt 1 view .LVU68 + 305 .loc 1 775 6 is_stmt 0 view .LVU69 + 306 0014 154B ldr r3, .L20 + 307 0016 DB68 ldr r3, [r3, #12] + 308 .loc 1 775 5 view .LVU70 + 309 0018 13F0100F tst r3, #16 + 310 001c 04D0 beq .L16 + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; + 311 .loc 1 777 4 is_stmt 1 view .LVU71 + 312 .loc 1 777 21 is_stmt 0 view .LVU72 + 313 001e 144A ldr r2, .L20+4 + 314 0020 9369 ldr r3, [r2, #24] + 315 0022 43F01003 orr r3, r3, #16 + 316 0026 9361 str r3, [r2, #24] + 317 .L16: + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) != RESET) + 318 .loc 1 780 3 is_stmt 1 view .LVU73 + 319 .loc 1 780 6 is_stmt 0 view .LVU74 + 320 0028 104B ldr r3, .L20 + 321 002a DB68 ldr r3, [r3, #12] + 322 .loc 1 780 5 view .LVU75 + 323 002c 13F0200F tst r3, #32 + 324 0030 04D0 beq .L17 + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; + 325 .loc 1 782 4 is_stmt 1 view .LVU76 + 326 .loc 1 782 21 is_stmt 0 view .LVU77 + 327 0032 0F4A ldr r2, .L20+4 + 328 0034 9369 ldr r3, [r2, #24] + 329 0036 43F00803 orr r3, r3, #8 + 330 003a 9361 str r3, [r2, #24] + 331 .L17: + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGPERR) != RESET) + 332 .loc 1 785 3 is_stmt 1 view .LVU78 + 333 .loc 1 785 6 is_stmt 0 view .LVU79 + 334 003c 0B4B ldr r3, .L20 + 335 003e DB68 ldr r3, [r3, #12] + 336 .loc 1 785 5 view .LVU80 + 337 0040 13F0400F tst r3, #64 + ARM GAS /tmp/ccSYetfS.s page 36 + + + 338 0044 04D0 beq .L18 + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGP; + 339 .loc 1 787 5 is_stmt 1 view .LVU81 + 340 .loc 1 787 22 is_stmt 0 view .LVU82 + 341 0046 0A4A ldr r2, .L20+4 + 342 0048 9369 ldr r3, [r2, #24] + 343 004a 43F00403 orr r3, r3, #4 + 344 004e 9361 str r3, [r2, #24] + 345 .L18: + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_ERSERR) != RESET) + 346 .loc 1 790 3 is_stmt 1 view .LVU83 + 347 .loc 1 790 6 is_stmt 0 view .LVU84 + 348 0050 064B ldr r3, .L20 + 349 0052 DB68 ldr r3, [r3, #12] + 350 .loc 1 790 5 view .LVU85 + 351 0054 13F0800F tst r3, #128 + 352 0058 04D0 beq .L19 + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_ERS; + 353 .loc 1 792 5 is_stmt 1 view .LVU86 + 354 .loc 1 792 22 is_stmt 0 view .LVU87 + 355 005a 054A ldr r2, .L20+4 + 356 005c 9369 ldr r3, [r2, #24] + 357 005e 43F00203 orr r3, r3, #2 + 358 0062 9361 str r3, [r2, #24] + 359 .L19: + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #if defined (FLASH_OPTCR2_PCROP) + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) != RESET) + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** #endif /* FLASH_OPTCR2_PCROP */ + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Clear error programming flags */ + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_ALL_ERRORS); + 360 .loc 1 803 3 is_stmt 1 view .LVU88 + 361 0064 014B ldr r3, .L20 + 362 0066 F222 movs r2, #242 + 363 0068 DA60 str r2, [r3, #12] + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 364 .loc 1 804 1 is_stmt 0 view .LVU89 + 365 006a 7047 bx lr + 366 .L21: + 367 .align 2 + 368 .L20: + 369 006c 003C0240 .word 1073888256 + 370 0070 00000000 .word .LANCHOR0 + 371 .cfi_endproc + 372 .LFE157: + 374 .section .text.HAL_FLASH_Program_IT,"ax",%progbits + 375 .align 1 + 376 .global HAL_FLASH_Program_IT + ARM GAS /tmp/ccSYetfS.s page 37 + + + 377 .syntax unified + 378 .thumb + 379 .thumb_func + 380 .fpu fpv5-d16 + 382 HAL_FLASH_Program_IT: + 383 .LVL4: + 384 .LFB142: + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; + 385 .loc 1 232 1 is_stmt 1 view -0 + 386 .cfi_startproc + 387 @ args = 0, pretend = 0, frame = 0 + 388 @ frame_needed = 0, uses_anonymous_args = 0 + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; + 389 .loc 1 232 1 is_stmt 0 view .LVU91 + 390 0000 70B5 push {r4, r5, r6, lr} + 391 .LCFI2: + 392 .cfi_def_cfa_offset 16 + 393 .cfi_offset 4, -16 + 394 .cfi_offset 5, -12 + 395 .cfi_offset 6, -8 + 396 .cfi_offset 14, -4 + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 397 .loc 1 233 3 is_stmt 1 view .LVU92 + 398 .LVL5: + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 399 .loc 1 236 3 view .LVU93 + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 400 .loc 1 236 3 view .LVU94 + 401 0002 1A4C ldr r4, .L32 + 402 0004 247D ldrb r4, [r4, #20] @ zero_extendqisi2 + 403 0006 012C cmp r4, #1 + 404 0008 2CD0 beq .L29 + 405 000a 8446 mov ip, r0 + 406 000c 0846 mov r0, r1 + 407 .LVL6: + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 408 .loc 1 236 3 discriminator 2 view .LVU95 + 409 000e 174D ldr r5, .L32 + 410 0010 0121 movs r1, #1 + 411 .LVL7: + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 412 .loc 1 236 3 is_stmt 0 discriminator 2 view .LVU96 + 413 0012 2975 strb r1, [r5, #20] + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 414 .loc 1 236 3 is_stmt 1 discriminator 2 view .LVU97 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 415 .loc 1 239 3 discriminator 2 view .LVU98 + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 416 .loc 1 242 3 discriminator 2 view .LVU99 + 417 0014 164C ldr r4, .L32+4 + 418 0016 2669 ldr r6, [r4, #16] + 419 0018 46F08076 orr r6, r6, #16777216 + 420 001c 2661 str r6, [r4, #16] + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 421 .loc 1 245 3 discriminator 2 view .LVU100 + 422 001e 2669 ldr r6, [r4, #16] + 423 0020 46F00076 orr r6, r6, #33554432 + ARM GAS /tmp/ccSYetfS.s page 38 + + + 424 0024 2661 str r6, [r4, #16] + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR); + 425 .loc 1 248 3 discriminator 2 view .LVU101 + 426 0026 F321 movs r1, #243 + 427 0028 E160 str r1, [r4, #12] + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Address = Address; + 428 .loc 1 251 3 discriminator 2 view .LVU102 + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Address = Address; + 429 .loc 1 251 27 is_stmt 0 discriminator 2 view .LVU103 + 430 002a 0321 movs r1, #3 + 431 002c 2970 strb r1, [r5] + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 432 .loc 1 252 3 is_stmt 1 discriminator 2 view .LVU104 + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 433 .loc 1 252 18 is_stmt 0 discriminator 2 view .LVU105 + 434 002e 2861 str r0, [r5, #16] + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 435 .loc 1 254 3 is_stmt 1 discriminator 2 view .LVU106 + 436 0030 BCF1030F cmp ip, #3 + 437 0034 18D8 bhi .L30 + 438 0036 DFE80CF0 tbb [pc, ip] + 439 .L25: + 440 003a 02 .byte (.L28-.L25)/2 + 441 003b 07 .byte (.L27-.L25)/2 + 442 003c 0C .byte (.L26-.L25)/2 + 443 003d 11 .byte (.L24-.L25)/2 + 444 .p2align 1 + 445 .L28: + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 446 .loc 1 259 7 view .LVU107 + 447 003e D1B2 uxtb r1, r2 + 448 0040 FFF7FEFF bl FLASH_Program_Byte + 449 .LVL8: + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 450 .loc 1 260 7 view .LVU108 + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 451 .loc 1 286 10 is_stmt 0 view .LVU109 + 452 0044 0020 movs r0, #0 + 453 .L23: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 454 .loc 1 287 1 view .LVU110 + 455 0046 70BD pop {r4, r5, r6, pc} + 456 .LVL9: + 457 .L27: + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 458 .loc 1 266 7 is_stmt 1 view .LVU111 + 459 0048 91B2 uxth r1, r2 + 460 004a FFF7FEFF bl FLASH_Program_HalfWord + 461 .LVL10: + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 462 .loc 1 267 7 view .LVU112 + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 463 .loc 1 286 10 is_stmt 0 view .LVU113 + 464 004e 0020 movs r0, #0 + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 465 .loc 1 267 7 view .LVU114 + 466 0050 F9E7 b .L23 + ARM GAS /tmp/ccSYetfS.s page 39 + + + 467 .LVL11: + 468 .L26: + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 469 .loc 1 273 7 is_stmt 1 view .LVU115 + 470 0052 1146 mov r1, r2 + 471 0054 FFF7FEFF bl FLASH_Program_Word + 472 .LVL12: + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 473 .loc 1 274 7 view .LVU116 + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 474 .loc 1 286 10 is_stmt 0 view .LVU117 + 475 0058 0020 movs r0, #0 + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 476 .loc 1 274 7 view .LVU118 + 477 005a F4E7 b .L23 + 478 .LVL13: + 479 .L24: + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 480 .loc 1 280 7 is_stmt 1 view .LVU119 + 481 005c FFF7FEFF bl FLASH_Program_DoubleWord + 482 .LVL14: + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 483 .loc 1 281 7 view .LVU120 + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 484 .loc 1 286 10 is_stmt 0 view .LVU121 + 485 0060 0020 movs r0, #0 + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 486 .loc 1 281 7 view .LVU122 + 487 0062 F0E7 b .L23 + 488 .LVL15: + 489 .L29: + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 490 .loc 1 236 3 view .LVU123 + 491 0064 0220 movs r0, #2 + 492 .LVL16: + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 493 .loc 1 236 3 view .LVU124 + 494 0066 EEE7 b .L23 + 495 .LVL17: + 496 .L30: + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 497 .loc 1 254 3 view .LVU125 + 498 0068 0020 movs r0, #0 + 499 .LVL18: + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 500 .loc 1 254 3 view .LVU126 + 501 006a ECE7 b .L23 + 502 .L33: + 503 .align 2 + 504 .L32: + 505 006c 00000000 .word .LANCHOR0 + 506 0070 003C0240 .word 1073888256 + 507 .cfi_endproc + 508 .LFE142: + 510 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits + 511 .align 1 + 512 .weak HAL_FLASH_EndOfOperationCallback + ARM GAS /tmp/ccSYetfS.s page 40 + + + 513 .syntax unified + 514 .thumb + 515 .thumb_func + 516 .fpu fpv5-d16 + 518 HAL_FLASH_EndOfOperationCallback: + 519 .LVL19: + 520 .LFB144: + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ + 521 .loc 1 429 1 is_stmt 1 view -0 + 522 .cfi_startproc + 523 @ args = 0, pretend = 0, frame = 0 + 524 @ frame_needed = 0, uses_anonymous_args = 0 + 525 @ link register save eliminated. + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 526 .loc 1 431 3 view .LVU128 + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 527 .loc 1 435 1 is_stmt 0 view .LVU129 + 528 0000 7047 bx lr + 529 .cfi_endproc + 530 .LFE144: + 532 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits + 533 .align 1 + 534 .weak HAL_FLASH_OperationErrorCallback + 535 .syntax unified + 536 .thumb + 537 .thumb_func + 538 .fpu fpv5-d16 + 540 HAL_FLASH_OperationErrorCallback: + 541 .LVL20: + 542 .LFB145: + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ + 543 .loc 1 447 1 is_stmt 1 view -0 + 544 .cfi_startproc + 545 @ args = 0, pretend = 0, frame = 0 + 546 @ frame_needed = 0, uses_anonymous_args = 0 + 547 @ link register save eliminated. + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 548 .loc 1 449 3 view .LVU131 + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 549 .loc 1 453 1 is_stmt 0 view .LVU132 + 550 0000 7047 bx lr + 551 .cfi_endproc + 552 .LFE145: + 554 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits + 555 .align 1 + 556 .global HAL_FLASH_IRQHandler + 557 .syntax unified + 558 .thumb + 559 .thumb_func + 560 .fpu fpv5-d16 + 562 HAL_FLASH_IRQHandler: + 563 .LFB143: + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t temp = 0; + 564 .loc 1 294 1 is_stmt 1 view -0 + 565 .cfi_startproc + 566 @ args = 0, pretend = 0, frame = 0 + 567 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccSYetfS.s page 41 + + + 568 0000 38B5 push {r3, r4, r5, lr} + 569 .LCFI3: + 570 .cfi_def_cfa_offset 16 + 571 .cfi_offset 3, -16 + 572 .cfi_offset 4, -12 + 573 .cfi_offset 5, -8 + 574 .cfi_offset 14, -4 + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 575 .loc 1 295 3 view .LVU134 + 576 .LVL21: + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 577 .loc 1 298 3 view .LVU135 + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 578 .loc 1 298 13 is_stmt 0 view .LVU136 + 579 0002 3F4B ldr r3, .L50 + 580 0004 1A69 ldr r2, [r3, #16] + 581 0006 22F00102 bic r2, r2, #1 + 582 000a 1A61 str r2, [r3, #16] + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= SECTOR_MASK; + 583 .loc 1 301 3 is_stmt 1 view .LVU137 + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->CR &= SECTOR_MASK; + 584 .loc 1 301 13 is_stmt 0 view .LVU138 + 585 000c 1A69 ldr r2, [r3, #16] + 586 000e 22F00202 bic r2, r2, #2 + 587 0012 1A61 str r2, [r3, #16] + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 588 .loc 1 302 3 is_stmt 1 view .LVU139 + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 589 .loc 1 302 13 is_stmt 0 view .LVU140 + 590 0014 1A69 ldr r2, [r3, #16] + 591 0016 22F0F802 bic r2, r2, #248 + 592 001a 1A61 str r2, [r3, #16] + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 593 .loc 1 305 3 is_stmt 1 view .LVU141 + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 594 .loc 1 305 13 is_stmt 0 view .LVU142 + 595 001c 1969 ldr r1, [r3, #16] + 596 001e 394A ldr r2, .L50+4 + 597 0020 0A40 ands r2, r2, r1 + 598 0022 1A61 str r2, [r3, #16] + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 599 .loc 1 308 3 is_stmt 1 view .LVU143 + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 600 .loc 1 308 6 is_stmt 0 view .LVU144 + 601 0024 DC68 ldr r4, [r3, #12] + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 602 .loc 1 308 5 view .LVU145 + 603 0026 14F00104 ands r4, r4, #1 + 604 002a 0BD0 beq .L37 + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 605 .loc 1 311 5 is_stmt 1 view .LVU146 + 606 002c 0122 movs r2, #1 + 607 002e DA60 str r2, [r3, #12] + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 608 .loc 1 313 5 view .LVU147 + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 609 .loc 1 313 19 is_stmt 0 view .LVU148 + ARM GAS /tmp/ccSYetfS.s page 42 + + + 610 0030 354B ldr r3, .L50+8 + 611 0032 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 612 0034 DBB2 uxtb r3, r3 + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 613 .loc 1 313 5 view .LVU149 + 614 0036 022B cmp r3, #2 + 615 0038 46D0 beq .L38 + 616 003a 032B cmp r3, #3 + 617 003c 4CD0 beq .L39 + 618 003e 9342 cmp r3, r2 + 619 0040 26D0 beq .L48 + 620 0042 0024 movs r4, #0 + 621 .LVL22: + 622 .L37: + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 623 .loc 1 369 3 is_stmt 1 view .LVU150 + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 624 .loc 1 369 6 is_stmt 0 view .LVU151 + 625 0044 2E4B ldr r3, .L50 + 626 0046 DB68 ldr r3, [r3, #12] + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 627 .loc 1 369 5 view .LVU152 + 628 0048 13F0F20F tst r3, #242 + 629 004c 10D0 beq .L41 + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 630 .loc 1 371 5 is_stmt 1 view .LVU153 + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 631 .loc 1 371 19 is_stmt 0 view .LVU154 + 632 004e 2E4B ldr r3, .L50+8 + 633 0050 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 634 0052 DBB2 uxtb r3, r3 + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 635 .loc 1 371 5 view .LVU155 + 636 0054 022B cmp r3, #2 + 637 0056 50D0 beq .L46 + 638 0058 032B cmp r3, #3 + 639 005a 4BD0 beq .L43 + 640 005c 012B cmp r3, #1 + 641 005e 43D0 beq .L49 + 642 .LVL23: + 643 .L42: + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 644 .loc 1 396 5 is_stmt 1 view .LVU156 + 645 0060 FFF7FEFF bl FLASH_SetErrorCode + 646 .LVL24: + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 647 .loc 1 399 5 view .LVU157 + 648 0064 2046 mov r0, r4 + 649 0066 FFF7FEFF bl HAL_FLASH_OperationErrorCallback + 650 .LVL25: + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 651 .loc 1 402 5 view .LVU158 + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 652 .loc 1 402 29 is_stmt 0 view .LVU159 + 653 006a 274B ldr r3, .L50+8 + 654 006c 0022 movs r2, #0 + 655 006e 1A70 strb r2, [r3] + ARM GAS /tmp/ccSYetfS.s page 43 + + + 656 .L41: + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 657 .loc 1 405 3 is_stmt 1 view .LVU160 + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 658 .loc 1 405 12 is_stmt 0 view .LVU161 + 659 0070 254B ldr r3, .L50+8 + 660 0072 1B78 ldrb r3, [r3] @ zero_extendqisi2 + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 661 .loc 1 405 5 view .LVU162 + 662 0074 5BB9 cbnz r3, .L36 + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 663 .loc 1 408 5 is_stmt 1 view .LVU163 + 664 0076 224B ldr r3, .L50 + 665 0078 1A69 ldr r2, [r3, #16] + 666 007a 22F08072 bic r2, r2, #16777216 + 667 007e 1A61 str r2, [r3, #16] + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 668 .loc 1 411 5 view .LVU164 + 669 0080 1A69 ldr r2, [r3, #16] + 670 0082 22F00072 bic r2, r2, #33554432 + 671 0086 1A61 str r2, [r3, #16] + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 672 .loc 1 414 5 view .LVU165 + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 673 .loc 1 414 5 view .LVU166 + 674 0088 1F4B ldr r3, .L50+8 + 675 008a 0022 movs r2, #0 + 676 008c 1A75 strb r2, [r3, #20] + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 677 .loc 1 414 5 view .LVU167 + 678 .L36: + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 679 .loc 1 417 1 is_stmt 0 view .LVU168 + 680 008e 38BD pop {r3, r4, r5, pc} + 681 .LVL26: + 682 .L48: + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 683 .loc 1 318 9 is_stmt 1 view .LVU169 + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 684 .loc 1 318 15 is_stmt 0 view .LVU170 + 685 0090 1D4B ldr r3, .L50+8 + 686 0092 5A68 ldr r2, [r3, #4] + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 687 .loc 1 318 32 view .LVU171 + 688 0094 013A subs r2, r2, #1 + 689 0096 5A60 str r2, [r3, #4] + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 690 .loc 1 321 9 is_stmt 1 view .LVU172 + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 691 .loc 1 321 18 is_stmt 0 view .LVU173 + 692 0098 5B68 ldr r3, [r3, #4] + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 693 .loc 1 321 11 view .LVU174 + 694 009a 5BB1 cbz r3, .L40 + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Indicate user which sector has been erased */ + 695 .loc 1 323 11 is_stmt 1 view .LVU175 + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Indicate user which sector has been erased */ + ARM GAS /tmp/ccSYetfS.s page 44 + + + 696 .loc 1 323 16 is_stmt 0 view .LVU176 + 697 009c 1A4D ldr r5, .L50+8 + 698 009e E868 ldr r0, [r5, #12] + 699 .LVL27: + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 700 .loc 1 325 11 is_stmt 1 view .LVU177 + 701 00a0 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback + 702 .LVL28: + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase); + 703 .loc 1 328 11 view .LVU178 + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase); + 704 .loc 1 328 26 is_stmt 0 view .LVU179 + 705 00a4 EC68 ldr r4, [r5, #12] + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase); + 706 .loc 1 328 18 view .LVU180 + 707 00a6 0134 adds r4, r4, #1 + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH_Erase_Sector(temp, pFlash.VoltageForErase); + 708 .loc 1 328 16 view .LVU181 + 709 00a8 EC60 str r4, [r5, #12] + 710 .LVL29: + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 711 .loc 1 329 11 is_stmt 1 view .LVU182 + 712 00aa 297A ldrb r1, [r5, #8] @ zero_extendqisi2 + 713 00ac 2046 mov r0, r4 + 714 00ae FFF7FEFF bl FLASH_Erase_Sector + 715 .LVL30: + 716 00b2 C7E7 b .L37 + 717 .LVL31: + 718 .L40: + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ + 719 .loc 1 335 11 view .LVU183 + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ + 720 .loc 1 335 25 is_stmt 0 view .LVU184 + 721 00b4 144D ldr r5, .L50+8 + 722 00b6 4FF0FF34 mov r4, #-1 + 723 00ba EC60 str r4, [r5, #12] + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Sector Erase procedure is completed */ + 724 .loc 1 337 11 is_stmt 1 view .LVU185 + 725 00bc 2046 mov r0, r4 + 726 00be FFF7FEFF bl HAL_FLASH_EndOfOperationCallback + 727 .LVL32: + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 728 .loc 1 339 11 view .LVU186 + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 729 .loc 1 339 35 is_stmt 0 view .LVU187 + 730 00c2 0023 movs r3, #0 + 731 00c4 2B70 strb r3, [r5] + 732 00c6 BDE7 b .L37 + 733 .LVL33: + 734 .L38: + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* MAss Erase procedure is completed */ + 735 .loc 1 348 9 is_stmt 1 view .LVU188 + 736 00c8 0020 movs r0, #0 + 737 00ca FFF7FEFF bl HAL_FLASH_EndOfOperationCallback + 738 .LVL34: + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 739 .loc 1 350 9 view .LVU189 + ARM GAS /tmp/ccSYetfS.s page 45 + + + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 740 .loc 1 350 33 is_stmt 0 view .LVU190 + 741 00ce 0020 movs r0, #0 + 742 00d0 0D4B ldr r3, .L50+8 + 743 00d2 1870 strb r0, [r3] + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 744 .loc 1 351 9 is_stmt 1 view .LVU191 + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 745 .loc 1 295 12 is_stmt 0 view .LVU192 + 746 00d4 0446 mov r4, r0 + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 747 .loc 1 351 9 view .LVU193 + 748 00d6 B5E7 b .L37 + 749 .L39: + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Programming procedure is completed */ + 750 .loc 1 358 9 is_stmt 1 view .LVU194 + 751 00d8 0B4C ldr r4, .L50+8 + 752 00da 2069 ldr r0, [r4, #16] + 753 00dc FFF7FEFF bl HAL_FLASH_EndOfOperationCallback + 754 .LVL35: + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 755 .loc 1 360 9 view .LVU195 + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 756 .loc 1 360 33 is_stmt 0 view .LVU196 + 757 00e0 0020 movs r0, #0 + 758 00e2 2070 strb r0, [r4] + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 759 .loc 1 361 9 is_stmt 1 view .LVU197 + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 760 .loc 1 295 12 is_stmt 0 view .LVU198 + 761 00e4 0446 mov r4, r0 + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 762 .loc 1 361 9 view .LVU199 + 763 00e6 ADE7 b .L37 + 764 .LVL36: + 765 .L49: + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; + 766 .loc 1 376 9 is_stmt 1 view .LVU200 + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; + 767 .loc 1 376 14 is_stmt 0 view .LVU201 + 768 00e8 074B ldr r3, .L50+8 + 769 00ea DC68 ldr r4, [r3, #12] + 770 .LVL37: + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 771 .loc 1 377 9 is_stmt 1 view .LVU202 + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 772 .loc 1 377 23 is_stmt 0 view .LVU203 + 773 00ec 4FF0FF32 mov r2, #-1 + 774 00f0 DA60 str r2, [r3, #12] + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 775 .loc 1 378 9 is_stmt 1 view .LVU204 + 776 00f2 B5E7 b .L42 + 777 .L43: + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 778 .loc 1 389 9 view .LVU205 + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 779 .loc 1 389 14 is_stmt 0 view .LVU206 + ARM GAS /tmp/ccSYetfS.s page 46 + + + 780 00f4 044B ldr r3, .L50+8 + 781 00f6 1C69 ldr r4, [r3, #16] + 782 .LVL38: + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 783 .loc 1 390 9 is_stmt 1 view .LVU207 + 784 00f8 B2E7 b .L42 + 785 .L46: + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 786 .loc 1 383 14 is_stmt 0 view .LVU208 + 787 00fa 0024 movs r4, #0 + 788 .LVL39: + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 789 .loc 1 383 14 view .LVU209 + 790 00fc B0E7 b .L42 + 791 .L51: + 792 00fe 00BF .align 2 + 793 .L50: + 794 0100 003C0240 .word 1073888256 + 795 0104 FB7FFFFF .word -32773 + 796 0108 00000000 .word .LANCHOR0 + 797 .cfi_endproc + 798 .LFE143: + 800 .section .text.HAL_FLASH_Unlock,"ax",%progbits + 801 .align 1 + 802 .global HAL_FLASH_Unlock + 803 .syntax unified + 804 .thumb + 805 .thumb_func + 806 .fpu fpv5-d16 + 808 HAL_FLASH_Unlock: + 809 .LFB146: + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; + 810 .loc 1 479 1 is_stmt 1 view -0 + 811 .cfi_startproc + 812 @ args = 0, pretend = 0, frame = 0 + 813 @ frame_needed = 0, uses_anonymous_args = 0 + 814 @ link register save eliminated. + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 815 .loc 1 480 3 view .LVU211 + 816 .LVL40: + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 817 .loc 1 482 3 view .LVU212 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 818 .loc 1 482 6 is_stmt 0 view .LVU213 + 819 0000 094B ldr r3, .L57 + 820 0002 1B69 ldr r3, [r3, #16] + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 821 .loc 1 482 5 view .LVU214 + 822 0004 002B cmp r3, #0 + 823 0006 01DB blt .L56 + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 824 .loc 1 480 21 view .LVU215 + 825 0008 0020 movs r0, #0 + 826 000a 7047 bx lr + 827 .L56: + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); + 828 .loc 1 485 5 is_stmt 1 view .LVU216 + ARM GAS /tmp/ccSYetfS.s page 47 + + + 829 000c 064B ldr r3, .L57 + 830 000e 074A ldr r2, .L57+4 + 831 0010 5A60 str r2, [r3, #4] + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 832 .loc 1 486 5 view .LVU217 + 833 0012 02F18832 add r2, r2, #-2004318072 + 834 0016 5A60 str r2, [r3, #4] + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 835 .loc 1 489 5 view .LVU218 + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 836 .loc 1 489 8 is_stmt 0 view .LVU219 + 837 0018 1B69 ldr r3, [r3, #16] + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 838 .loc 1 489 7 view .LVU220 + 839 001a 002B cmp r3, #0 + 840 001c 01DB blt .L55 + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 841 .loc 1 480 21 view .LVU221 + 842 001e 0020 movs r0, #0 + 843 0020 7047 bx lr + 844 .L55: + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 845 .loc 1 491 14 view .LVU222 + 846 0022 0120 movs r0, #1 + 847 .LVL41: + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 848 .loc 1 495 3 is_stmt 1 view .LVU223 + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 849 .loc 1 496 1 is_stmt 0 view .LVU224 + 850 0024 7047 bx lr + 851 .L58: + 852 0026 00BF .align 2 + 853 .L57: + 854 0028 003C0240 .word 1073888256 + 855 002c 23016745 .word 1164378403 + 856 .cfi_endproc + 857 .LFE146: + 859 .section .text.HAL_FLASH_Lock,"ax",%progbits + 860 .align 1 + 861 .global HAL_FLASH_Lock + 862 .syntax unified + 863 .thumb + 864 .thumb_func + 865 .fpu fpv5-d16 + 867 HAL_FLASH_Lock: + 868 .LFB147: + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ + 869 .loc 1 503 1 is_stmt 1 view -0 + 870 .cfi_startproc + 871 @ args = 0, pretend = 0, frame = 0 + 872 @ frame_needed = 0, uses_anonymous_args = 0 + 873 @ link register save eliminated. + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 874 .loc 1 505 3 view .LVU226 + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 875 .loc 1 505 13 is_stmt 0 view .LVU227 + 876 0000 034A ldr r2, .L60 + ARM GAS /tmp/ccSYetfS.s page 48 + + + 877 0002 1369 ldr r3, [r2, #16] + 878 0004 43F00043 orr r3, r3, #-2147483648 + 879 0008 1361 str r3, [r2, #16] + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 880 .loc 1 507 3 is_stmt 1 view .LVU228 + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 881 .loc 1 508 1 is_stmt 0 view .LVU229 + 882 000a 0020 movs r0, #0 + 883 000c 7047 bx lr + 884 .L61: + 885 000e 00BF .align 2 + 886 .L60: + 887 0010 003C0240 .word 1073888256 + 888 .cfi_endproc + 889 .LFE147: + 891 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits + 892 .align 1 + 893 .global HAL_FLASH_OB_Unlock + 894 .syntax unified + 895 .thumb + 896 .thumb_func + 897 .fpu fpv5-d16 + 899 HAL_FLASH_OB_Unlock: + 900 .LFB148: + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) + 901 .loc 1 515 1 is_stmt 1 view -0 + 902 .cfi_startproc + 903 @ args = 0, pretend = 0, frame = 0 + 904 @ frame_needed = 0, uses_anonymous_args = 0 + 905 @ link register save eliminated. + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 906 .loc 1 516 3 view .LVU231 + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 907 .loc 1 516 12 is_stmt 0 view .LVU232 + 908 0000 074B ldr r3, .L65 + 909 0002 5B69 ldr r3, [r3, #20] + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 910 .loc 1 516 5 view .LVU233 + 911 0004 13F0010F tst r3, #1 + 912 0008 07D0 beq .L64 + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; + 913 .loc 1 519 5 is_stmt 1 view .LVU234 + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; + 914 .loc 1 519 20 is_stmt 0 view .LVU235 + 915 000a 054B ldr r3, .L65 + 916 000c 054A ldr r2, .L65+4 + 917 000e 9A60 str r2, [r3, #8] + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 918 .loc 1 520 5 is_stmt 1 view .LVU236 + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 919 .loc 1 520 20 is_stmt 0 view .LVU237 + 920 0010 02F14432 add r2, r2, #1145324612 + 921 0014 9A60 str r2, [r3, #8] + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 922 .loc 1 527 3 is_stmt 1 view .LVU238 + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 923 .loc 1 527 10 is_stmt 0 view .LVU239 + ARM GAS /tmp/ccSYetfS.s page 49 + + + 924 0016 0020 movs r0, #0 + 925 0018 7047 bx lr + 926 .L64: + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 927 .loc 1 524 12 view .LVU240 + 928 001a 0120 movs r0, #1 + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 929 .loc 1 528 1 view .LVU241 + 930 001c 7047 bx lr + 931 .L66: + 932 001e 00BF .align 2 + 933 .L65: + 934 0020 003C0240 .word 1073888256 + 935 0024 3B2A1908 .word 135866939 + 936 .cfi_endproc + 937 .LFE148: + 939 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits + 940 .align 1 + 941 .global HAL_FLASH_OB_Lock + 942 .syntax unified + 943 .thumb + 944 .thumb_func + 945 .fpu fpv5-d16 + 947 HAL_FLASH_OB_Lock: + 948 .LFB149: + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ + 949 .loc 1 535 1 is_stmt 1 view -0 + 950 .cfi_startproc + 951 @ args = 0, pretend = 0, frame = 0 + 952 @ frame_needed = 0, uses_anonymous_args = 0 + 953 @ link register save eliminated. + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 954 .loc 1 537 3 view .LVU243 + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 955 .loc 1 537 16 is_stmt 0 view .LVU244 + 956 0000 034A ldr r2, .L68 + 957 0002 5369 ldr r3, [r2, #20] + 958 0004 43F00103 orr r3, r3, #1 + 959 0008 5361 str r3, [r2, #20] + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 960 .loc 1 539 3 is_stmt 1 view .LVU245 + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 961 .loc 1 540 1 is_stmt 0 view .LVU246 + 962 000a 0020 movs r0, #0 + 963 000c 7047 bx lr + 964 .L69: + 965 000e 00BF .align 2 + 966 .L68: + 967 0010 003C0240 .word 1073888256 + 968 .cfi_endproc + 969 .LFE149: + 971 .section .text.HAL_FLASH_GetError,"ax",%progbits + 972 .align 1 + 973 .global HAL_FLASH_GetError + 974 .syntax unified + 975 .thumb + 976 .thumb_func + ARM GAS /tmp/ccSYetfS.s page 50 + + + 977 .fpu fpv5-d16 + 979 HAL_FLASH_GetError: + 980 .LFB151: + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return pFlash.ErrorCode; + 981 .loc 1 583 1 is_stmt 1 view -0 + 982 .cfi_startproc + 983 @ args = 0, pretend = 0, frame = 0 + 984 @ frame_needed = 0, uses_anonymous_args = 0 + 985 @ link register save eliminated. + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 986 .loc 1 584 4 view .LVU248 + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 987 .loc 1 584 17 is_stmt 0 view .LVU249 + 988 0000 014B ldr r3, .L71 + 989 0002 9869 ldr r0, [r3, #24] + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 990 .loc 1 585 1 view .LVU250 + 991 0004 7047 bx lr + 992 .L72: + 993 0006 00BF .align 2 + 994 .L71: + 995 0008 00000000 .word .LANCHOR0 + 996 .cfi_endproc + 997 .LFE151: + 999 .section .text.FLASH_WaitForLastOperation,"ax",%progbits + 1000 .align 1 + 1001 .global FLASH_WaitForLastOperation + 1002 .syntax unified + 1003 .thumb + 1004 .thumb_func + 1005 .fpu fpv5-d16 + 1007 FLASH_WaitForLastOperation: + 1008 .LVL42: + 1009 .LFB152: + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t tickstart = 0; + 1010 .loc 1 597 1 is_stmt 1 view -0 + 1011 .cfi_startproc + 1012 @ args = 0, pretend = 0, frame = 0 + 1013 @ frame_needed = 0, uses_anonymous_args = 0 + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** uint32_t tickstart = 0; + 1014 .loc 1 597 1 is_stmt 0 view .LVU252 + 1015 0000 38B5 push {r3, r4, r5, lr} + 1016 .LCFI4: + 1017 .cfi_def_cfa_offset 16 + 1018 .cfi_offset 3, -16 + 1019 .cfi_offset 4, -12 + 1020 .cfi_offset 5, -8 + 1021 .cfi_offset 14, -4 + 1022 0002 0446 mov r4, r0 + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1023 .loc 1 598 3 is_stmt 1 view .LVU253 + 1024 .LVL43: + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1025 .loc 1 601 3 view .LVU254 + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1026 .loc 1 601 20 is_stmt 0 view .LVU255 + 1027 0004 154B ldr r3, .L84 + ARM GAS /tmp/ccSYetfS.s page 51 + + + 1028 0006 0022 movs r2, #0 + 1029 0008 9A61 str r2, [r3, #24] + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1030 .loc 1 607 3 is_stmt 1 view .LVU256 + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1031 .loc 1 607 15 is_stmt 0 view .LVU257 + 1032 000a FFF7FEFF bl HAL_GetTick + 1033 .LVL44: + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1034 .loc 1 607 15 view .LVU258 + 1035 000e 0546 mov r5, r0 + 1036 .LVL45: + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1037 .loc 1 609 3 is_stmt 1 view .LVU259 + 1038 .L75: + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1039 .loc 1 609 8 view .LVU260 + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1040 .loc 1 609 9 is_stmt 0 view .LVU261 + 1041 0010 134B ldr r3, .L84+4 + 1042 0012 DB68 ldr r3, [r3, #12] + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1043 .loc 1 609 8 view .LVU262 + 1044 0014 13F4803F tst r3, #65536 + 1045 0018 0AD0 beq .L82 + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1046 .loc 1 611 5 is_stmt 1 view .LVU263 + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1047 .loc 1 611 7 is_stmt 0 view .LVU264 + 1048 001a B4F1FF3F cmp r4, #-1 + 1049 001e F7D0 beq .L75 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1050 .loc 1 613 7 is_stmt 1 view .LVU265 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1051 .loc 1 613 9 is_stmt 0 view .LVU266 + 1052 0020 24B1 cbz r4, .L76 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1053 .loc 1 613 28 discriminator 1 view .LVU267 + 1054 0022 FFF7FEFF bl HAL_GetTick + 1055 .LVL46: + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1056 .loc 1 613 42 discriminator 1 view .LVU268 + 1057 0026 401B subs r0, r0, r5 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1058 .loc 1 613 24 discriminator 1 view .LVU269 + 1059 0028 A042 cmp r0, r4 + 1060 002a F1D9 bls .L75 + 1061 .L76: + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1062 .loc 1 615 9 is_stmt 1 view .LVU270 + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1063 .loc 1 615 16 is_stmt 0 view .LVU271 + 1064 002c 0320 movs r0, #3 + 1065 002e 0DE0 b .L77 + 1066 .L82: + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1067 .loc 1 620 3 is_stmt 1 view .LVU272 + ARM GAS /tmp/ccSYetfS.s page 52 + + + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1068 .loc 1 620 6 is_stmt 0 view .LVU273 + 1069 0030 0B4B ldr r3, .L84+4 + 1070 0032 DB68 ldr r3, [r3, #12] + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1071 .loc 1 620 5 view .LVU274 + 1072 0034 13F0F20F tst r3, #242 + 1073 0038 09D1 bne .L83 + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1074 .loc 1 628 3 is_stmt 1 view .LVU275 + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1075 .loc 1 628 7 is_stmt 0 view .LVU276 + 1076 003a 094B ldr r3, .L84+4 + 1077 003c DB68 ldr r3, [r3, #12] + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1078 .loc 1 628 6 view .LVU277 + 1079 003e 13F0010F tst r3, #1 + 1080 0042 08D0 beq .L80 + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1081 .loc 1 631 5 is_stmt 1 view .LVU278 + 1082 0044 064B ldr r3, .L84+4 + 1083 0046 0122 movs r2, #1 + 1084 0048 DA60 str r2, [r3, #12] + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1085 .loc 1 635 10 is_stmt 0 view .LVU279 + 1086 004a 0020 movs r0, #0 + 1087 .L77: + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1088 .loc 1 637 1 view .LVU280 + 1089 004c 38BD pop {r3, r4, r5, pc} + 1090 .LVL47: + 1091 .L83: + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** return HAL_ERROR; + 1092 .loc 1 623 5 is_stmt 1 view .LVU281 + 1093 004e FFF7FEFF bl FLASH_SetErrorCode + 1094 .LVL48: + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1095 .loc 1 624 5 view .LVU282 + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1096 .loc 1 624 12 is_stmt 0 view .LVU283 + 1097 0052 0120 movs r0, #1 + 1098 0054 FAE7 b .L77 + 1099 .L80: + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1100 .loc 1 635 10 view .LVU284 + 1101 0056 0020 movs r0, #0 + 1102 0058 F8E7 b .L77 + 1103 .L85: + 1104 005a 00BF .align 2 + 1105 .L84: + 1106 005c 00000000 .word .LANCHOR0 + 1107 0060 003C0240 .word 1073888256 + 1108 .cfi_endproc + 1109 .LFE152: + 1111 .section .text.HAL_FLASH_Program,"ax",%progbits + 1112 .align 1 + 1113 .global HAL_FLASH_Program + ARM GAS /tmp/ccSYetfS.s page 53 + + + 1114 .syntax unified + 1115 .thumb + 1116 .thumb_func + 1117 .fpu fpv5-d16 + 1119 HAL_FLASH_Program: + 1120 .LVL49: + 1121 .LFB141: + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; + 1122 .loc 1 163 1 is_stmt 1 view -0 + 1123 .cfi_startproc + 1124 @ args = 0, pretend = 0, frame = 0 + 1125 @ frame_needed = 0, uses_anonymous_args = 0 + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; + 1126 .loc 1 163 1 is_stmt 0 view .LVU286 + 1127 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 1128 .LCFI5: + 1129 .cfi_def_cfa_offset 24 + 1130 .cfi_offset 3, -24 + 1131 .cfi_offset 4, -20 + 1132 .cfi_offset 5, -16 + 1133 .cfi_offset 6, -12 + 1134 .cfi_offset 7, -8 + 1135 .cfi_offset 14, -4 + 1136 0002 1646 mov r6, r2 + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1137 .loc 1 164 3 is_stmt 1 view .LVU287 + 1138 .LVL50: + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1139 .loc 1 167 3 view .LVU288 + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1140 .loc 1 167 3 view .LVU289 + 1141 0004 1B4A ldr r2, .L97 + 1142 .LVL51: + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1143 .loc 1 167 3 is_stmt 0 view .LVU290 + 1144 0006 127D ldrb r2, [r2, #20] @ zero_extendqisi2 + 1145 0008 012A cmp r2, #1 + 1146 000a 31D0 beq .L95 + 1147 000c 0446 mov r4, r0 + 1148 000e 0D46 mov r5, r1 + 1149 0010 1F46 mov r7, r3 + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1150 .loc 1 167 3 is_stmt 1 discriminator 2 view .LVU291 + 1151 0012 184B ldr r3, .L97 + 1152 0014 0122 movs r2, #1 + 1153 0016 1A75 strb r2, [r3, #20] + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1154 .loc 1 167 3 discriminator 2 view .LVU292 + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1155 .loc 1 170 3 discriminator 2 view .LVU293 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1156 .loc 1 173 3 discriminator 2 view .LVU294 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1157 .loc 1 173 12 is_stmt 0 discriminator 2 view .LVU295 + 1158 0018 4CF25030 movw r0, #50000 + 1159 .LVL52: + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + ARM GAS /tmp/ccSYetfS.s page 54 + + + 1160 .loc 1 173 12 discriminator 2 view .LVU296 + 1161 001c FFF7FEFF bl FLASH_WaitForLastOperation + 1162 .LVL53: + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1163 .loc 1 175 3 is_stmt 1 discriminator 2 view .LVU297 + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1164 .loc 1 175 5 is_stmt 0 discriminator 2 view .LVU298 + 1165 0020 90B9 cbnz r0, .L88 + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** { + 1166 .loc 1 177 5 is_stmt 1 view .LVU299 + 1167 0022 032C cmp r4, #3 + 1168 0024 07D8 bhi .L89 + 1169 0026 DFE804F0 tbb [pc, r4] + 1170 .L91: + 1171 002a 02 .byte (.L94-.L91)/2 + 1172 002b 13 .byte (.L93-.L91)/2 + 1173 002c 18 .byte (.L92-.L91)/2 + 1174 002d 1D .byte (.L90-.L91)/2 + 1175 .p2align 1 + 1176 .L94: + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 1177 .loc 1 182 9 view .LVU300 + 1178 002e F1B2 uxtb r1, r6 + 1179 0030 2846 mov r0, r5 + 1180 .LVL54: + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 1181 .loc 1 182 9 is_stmt 0 view .LVU301 + 1182 0032 FFF7FEFF bl FLASH_Program_Byte + 1183 .LVL55: + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1184 .loc 1 183 9 is_stmt 1 view .LVU302 + 1185 .L89: + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1186 .loc 1 210 5 view .LVU303 + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1187 .loc 1 210 14 is_stmt 0 view .LVU304 + 1188 0036 4CF25030 movw r0, #50000 + 1189 003a FFF7FEFF bl FLASH_WaitForLastOperation + 1190 .LVL56: + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1191 .loc 1 213 5 is_stmt 1 view .LVU305 + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1192 .loc 1 213 15 is_stmt 0 view .LVU306 + 1193 003e 0E4A ldr r2, .L97+4 + 1194 0040 1369 ldr r3, [r2, #16] + 1195 0042 23F00103 bic r3, r3, #1 + 1196 0046 1361 str r3, [r2, #16] + 1197 .L88: + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1198 .loc 1 217 3 is_stmt 1 view .LVU307 + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1199 .loc 1 217 3 view .LVU308 + 1200 0048 0A4B ldr r3, .L97 + 1201 004a 0022 movs r2, #0 + 1202 004c 1A75 strb r2, [r3, #20] + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1203 .loc 1 217 3 view .LVU309 + ARM GAS /tmp/ccSYetfS.s page 55 + + + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1204 .loc 1 219 3 view .LVU310 + 1205 .LVL57: + 1206 .L87: + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1207 .loc 1 220 1 is_stmt 0 view .LVU311 + 1208 004e F8BD pop {r3, r4, r5, r6, r7, pc} + 1209 .LVL58: + 1210 .L93: + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 1211 .loc 1 189 9 is_stmt 1 view .LVU312 + 1212 0050 B1B2 uxth r1, r6 + 1213 0052 2846 mov r0, r5 + 1214 .LVL59: + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 1215 .loc 1 189 9 is_stmt 0 view .LVU313 + 1216 0054 FFF7FEFF bl FLASH_Program_HalfWord + 1217 .LVL60: + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1218 .loc 1 190 9 is_stmt 1 view .LVU314 + 1219 0058 EDE7 b .L89 + 1220 .LVL61: + 1221 .L92: + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 1222 .loc 1 196 9 view .LVU315 + 1223 005a 3146 mov r1, r6 + 1224 005c 2846 mov r0, r5 + 1225 .LVL62: + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 1226 .loc 1 196 9 is_stmt 0 view .LVU316 + 1227 005e FFF7FEFF bl FLASH_Program_Word + 1228 .LVL63: + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1229 .loc 1 197 9 is_stmt 1 view .LVU317 + 1230 0062 E8E7 b .L89 + 1231 .LVL64: + 1232 .L90: + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 1233 .loc 1 203 9 view .LVU318 + 1234 0064 3246 mov r2, r6 + 1235 0066 3B46 mov r3, r7 + 1236 0068 2846 mov r0, r5 + 1237 .LVL65: + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** break; + 1238 .loc 1 203 9 is_stmt 0 view .LVU319 + 1239 006a FFF7FEFF bl FLASH_Program_DoubleWord + 1240 .LVL66: + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1241 .loc 1 204 9 is_stmt 1 view .LVU320 + 1242 006e E2E7 b .L89 + 1243 .LVL67: + 1244 .L95: + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1245 .loc 1 167 3 is_stmt 0 view .LVU321 + 1246 0070 0220 movs r0, #2 + 1247 .LVL68: + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + ARM GAS /tmp/ccSYetfS.s page 56 + + + 1248 .loc 1 167 3 view .LVU322 + 1249 0072 ECE7 b .L87 + 1250 .L98: + 1251 .align 2 + 1252 .L97: + 1253 0074 00000000 .word .LANCHOR0 + 1254 0078 003C0240 .word 1073888256 + 1255 .cfi_endproc + 1256 .LFE141: + 1258 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits + 1259 .align 1 + 1260 .global HAL_FLASH_OB_Launch + 1261 .syntax unified + 1262 .thumb + 1263 .thumb_func + 1264 .fpu fpv5-d16 + 1266 HAL_FLASH_OB_Launch: + 1267 .LFB150: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */ + 1268 .loc 1 547 1 is_stmt 1 view -0 + 1269 .cfi_startproc + 1270 @ args = 0, pretend = 0, frame = 0 + 1271 @ frame_needed = 0, uses_anonymous_args = 0 + 1272 0000 08B5 push {r3, lr} + 1273 .LCFI6: + 1274 .cfi_def_cfa_offset 8 + 1275 .cfi_offset 3, -8 + 1276 .cfi_offset 14, -4 + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1277 .loc 1 549 3 view .LVU324 + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1278 .loc 1 549 16 is_stmt 0 view .LVU325 + 1279 0002 054A ldr r2, .L101 + 1280 0004 5369 ldr r3, [r2, #20] + 1281 0006 43F00203 orr r3, r3, #2 + 1282 000a 5361 str r3, [r2, #20] + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1283 .loc 1 552 3 is_stmt 1 view .LVU326 + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** } + 1284 .loc 1 552 10 is_stmt 0 view .LVU327 + 1285 000c 4CF25030 movw r0, #50000 + 1286 0010 FFF7FEFF bl FLASH_WaitForLastOperation + 1287 .LVL69: + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c **** + 1288 .loc 1 553 1 view .LVU328 + 1289 0014 08BD pop {r3, pc} + 1290 .L102: + 1291 0016 00BF .align 2 + 1292 .L101: + 1293 0018 003C0240 .word 1073888256 + 1294 .cfi_endproc + 1295 .LFE150: + 1297 .global pFlash + 1298 .section .bss.pFlash,"aw",%nobits + 1299 .align 2 + 1300 .set .LANCHOR0,. + 0 + 1303 pFlash: + ARM GAS /tmp/ccSYetfS.s page 57 + + + 1304 0000 00000000 .space 28 + 1304 00000000 + 1304 00000000 + 1304 00000000 + 1304 00000000 + 1305 .text + 1306 .Letext0: + 1307 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 1308 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 1309 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 1310 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 1311 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h" + 1312 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + 1313 .file 9 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h" + ARM GAS /tmp/ccSYetfS.s page 58 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_flash.c + /tmp/ccSYetfS.s:17 .text.FLASH_Program_DoubleWord:0000000000000000 $t + /tmp/ccSYetfS.s:24 .text.FLASH_Program_DoubleWord:0000000000000000 FLASH_Program_DoubleWord + /tmp/ccSYetfS.s:99 .text.FLASH_Program_DoubleWord:0000000000000030 $d + /tmp/ccSYetfS.s:104 .text.FLASH_Program_Word:0000000000000000 $t + /tmp/ccSYetfS.s:110 .text.FLASH_Program_Word:0000000000000000 FLASH_Program_Word + /tmp/ccSYetfS.s:157 .text.FLASH_Program_Word:0000000000000024 $d + /tmp/ccSYetfS.s:162 .text.FLASH_Program_HalfWord:0000000000000000 $t + /tmp/ccSYetfS.s:168 .text.FLASH_Program_HalfWord:0000000000000000 FLASH_Program_HalfWord + /tmp/ccSYetfS.s:215 .text.FLASH_Program_HalfWord:0000000000000024 $d + /tmp/ccSYetfS.s:220 .text.FLASH_Program_Byte:0000000000000000 $t + /tmp/ccSYetfS.s:226 .text.FLASH_Program_Byte:0000000000000000 FLASH_Program_Byte + /tmp/ccSYetfS.s:272 .text.FLASH_Program_Byte:0000000000000020 $d + /tmp/ccSYetfS.s:277 .text.FLASH_SetErrorCode:0000000000000000 $t + /tmp/ccSYetfS.s:283 .text.FLASH_SetErrorCode:0000000000000000 FLASH_SetErrorCode + /tmp/ccSYetfS.s:369 .text.FLASH_SetErrorCode:000000000000006c $d + /tmp/ccSYetfS.s:375 .text.HAL_FLASH_Program_IT:0000000000000000 $t + /tmp/ccSYetfS.s:382 .text.HAL_FLASH_Program_IT:0000000000000000 HAL_FLASH_Program_IT + /tmp/ccSYetfS.s:440 .text.HAL_FLASH_Program_IT:000000000000003a $d + /tmp/ccSYetfS.s:444 .text.HAL_FLASH_Program_IT:000000000000003e $t + /tmp/ccSYetfS.s:505 .text.HAL_FLASH_Program_IT:000000000000006c $d + /tmp/ccSYetfS.s:511 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 $t + /tmp/ccSYetfS.s:518 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 HAL_FLASH_EndOfOperationCallback + /tmp/ccSYetfS.s:533 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 $t + /tmp/ccSYetfS.s:540 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 HAL_FLASH_OperationErrorCallback + /tmp/ccSYetfS.s:555 .text.HAL_FLASH_IRQHandler:0000000000000000 $t + /tmp/ccSYetfS.s:562 .text.HAL_FLASH_IRQHandler:0000000000000000 HAL_FLASH_IRQHandler + /tmp/ccSYetfS.s:794 .text.HAL_FLASH_IRQHandler:0000000000000100 $d + /tmp/ccSYetfS.s:801 .text.HAL_FLASH_Unlock:0000000000000000 $t + /tmp/ccSYetfS.s:808 .text.HAL_FLASH_Unlock:0000000000000000 HAL_FLASH_Unlock + /tmp/ccSYetfS.s:854 .text.HAL_FLASH_Unlock:0000000000000028 $d + /tmp/ccSYetfS.s:860 .text.HAL_FLASH_Lock:0000000000000000 $t + /tmp/ccSYetfS.s:867 .text.HAL_FLASH_Lock:0000000000000000 HAL_FLASH_Lock + /tmp/ccSYetfS.s:887 .text.HAL_FLASH_Lock:0000000000000010 $d + /tmp/ccSYetfS.s:892 .text.HAL_FLASH_OB_Unlock:0000000000000000 $t + /tmp/ccSYetfS.s:899 .text.HAL_FLASH_OB_Unlock:0000000000000000 HAL_FLASH_OB_Unlock + /tmp/ccSYetfS.s:934 .text.HAL_FLASH_OB_Unlock:0000000000000020 $d + /tmp/ccSYetfS.s:940 .text.HAL_FLASH_OB_Lock:0000000000000000 $t + /tmp/ccSYetfS.s:947 .text.HAL_FLASH_OB_Lock:0000000000000000 HAL_FLASH_OB_Lock + /tmp/ccSYetfS.s:967 .text.HAL_FLASH_OB_Lock:0000000000000010 $d + /tmp/ccSYetfS.s:972 .text.HAL_FLASH_GetError:0000000000000000 $t + /tmp/ccSYetfS.s:979 .text.HAL_FLASH_GetError:0000000000000000 HAL_FLASH_GetError + /tmp/ccSYetfS.s:995 .text.HAL_FLASH_GetError:0000000000000008 $d + /tmp/ccSYetfS.s:1000 .text.FLASH_WaitForLastOperation:0000000000000000 $t + /tmp/ccSYetfS.s:1007 .text.FLASH_WaitForLastOperation:0000000000000000 FLASH_WaitForLastOperation + /tmp/ccSYetfS.s:1106 .text.FLASH_WaitForLastOperation:000000000000005c $d + /tmp/ccSYetfS.s:1112 .text.HAL_FLASH_Program:0000000000000000 $t + /tmp/ccSYetfS.s:1119 .text.HAL_FLASH_Program:0000000000000000 HAL_FLASH_Program + /tmp/ccSYetfS.s:1171 .text.HAL_FLASH_Program:000000000000002a $d + /tmp/ccSYetfS.s:1175 .text.HAL_FLASH_Program:000000000000002e $t + /tmp/ccSYetfS.s:1253 .text.HAL_FLASH_Program:0000000000000074 $d + /tmp/ccSYetfS.s:1259 .text.HAL_FLASH_OB_Launch:0000000000000000 $t + /tmp/ccSYetfS.s:1266 .text.HAL_FLASH_OB_Launch:0000000000000000 HAL_FLASH_OB_Launch + /tmp/ccSYetfS.s:1293 .text.HAL_FLASH_OB_Launch:0000000000000018 $d + /tmp/ccSYetfS.s:1303 .bss.pFlash:0000000000000000 pFlash + /tmp/ccSYetfS.s:1299 .bss.pFlash:0000000000000000 $d + ARM GAS /tmp/ccSYetfS.s page 59 + + + +UNDEFINED SYMBOLS +FLASH_Erase_Sector +HAL_GetTick diff --git a/build/stm32f7xx_hal_flash.o b/build/stm32f7xx_hal_flash.o new file mode 100644 index 0000000..7600b33 Binary files /dev/null and b/build/stm32f7xx_hal_flash.o differ diff --git a/build/stm32f7xx_hal_flash_ex.d b/build/stm32f7xx_hal_flash_ex.d new file mode 100644 index 0000000..7f140b7 --- /dev/null +++ b/build/stm32f7xx_hal_flash_ex.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_flash_ex.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_flash_ex.lst b/build/stm32f7xx_hal_flash_ex.lst new file mode 100644 index 0000000..c7146e5 --- /dev/null +++ b/build/stm32f7xx_hal_flash_ex.lst @@ -0,0 +1,3765 @@ +ARM GAS /tmp/cctoWaKX.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_flash_ex.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.FLASH_MassErase,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 FLASH_MassErase: + 25 .LVL0: + 26 .LFB145: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @file stm32f7xx_hal_flash_ex.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Extended FLASH HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * functionalities of the FLASH extension peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + Extended programming operations functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** @verbatim + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** ============================================================================== + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** ##### Flash Extension features ##### + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** ============================================================================== + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** [..] Comparing to other previous devices, the FLASH interface for STM32F76xx/STM32F77xx + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** devices contains the following additional features + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (+) Capacity up to 2 Mbyte with dual bank architecture supporting read-while-write + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** capability (RWW) + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (+) Dual bank memory organization + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (+) Dual boot mode + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** ##### How to use this driver ##### + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** ============================================================================== + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** [..] This driver provides functions to configure and program the FLASH memory + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** of all STM32F7xx devices. It includes + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (#) FLASH Memory Erase functions: + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_FLASH_Lock() functions + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (++) Erase function: Erase sector, erase all sectors + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (++) There are two modes of erase : + ARM GAS /tmp/cctoWaKX.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (+++) Polling Mode using HAL_FLASHEx_Erase() + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (+++) Interrupt Mode using HAL_FLASHEx_Erase_IT() + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (#) Option Bytes Programming functions: Use HAL_FLASHEx_OBProgram() to : + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (++) Set/Reset the write protection + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (++) Set the Read protection Level + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (++) Set the BOR level + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** (++) Program the user Option Bytes + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** @endverbatim + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** ****************************************************************************** + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @attention + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * Copyright (c) 2017 STMicroelectronics. + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * All rights reserved. + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This software is licensed under terms that can be found in the LICENSE file in + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the root directory of this software component. + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** ****************************************************************************** + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Includes ------------------------------------------------------------------*/ + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #include "stm32f7xx_hal.h" + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** @addtogroup STM32F7xx_HAL_Driver + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @{ + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** @defgroup FLASHEx FLASHEx + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief FLASH HAL Extension module driver + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @{ + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #ifdef HAL_FLASH_MODULE_ENABLED + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Private typedef -----------------------------------------------------------*/ + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Private define ------------------------------------------------------------*/ + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** @addtogroup FLASHEx_Private_Constants + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @{ + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #define SECTOR_MASK 0xFFFFFF07U + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #define FLASH_TIMEOUT_VALUE 50000U/* 50 s */ + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @} + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Private macro -------------------------------------------------------------*/ + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Private variables ---------------------------------------------------------*/ + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** @addtogroup FLASHEx_Private_Variables + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @{ + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** extern FLASH_ProcessTypeDef pFlash; + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @} + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + ARM GAS /tmp/cctoWaKX.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Private function prototypes -----------------------------------------------*/ + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** @addtogroup FLASHEx_Private_Functions + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @{ + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Option bytes control */ + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_EnableWRP(uint32_t WRPSector); + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_DisableWRP(uint32_t WRPSector); + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_RDP_LevelConfig(uint8_t Level); + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_BOR_LevelConfig(uint8_t Level); + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_BootAddressConfig(uint32_t BootOption, uint32_t Address); + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetUser(void); + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetWRP(void); + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetRDP(void); + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetBOR(void); + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetBootAddress(uint32_t BootOption); + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #if defined (FLASH_OPTCR_nDBANK) + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static void FLASH_MassErase(uint8_t VoltageRange, uint32_t Banks); + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t Iwdgstdby, uint32_t NDBank, uint32_t NDBoot) + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #else + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static void FLASH_MassErase(uint8_t VoltageRange); + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #endif /* FLASH_OPTCR_nDBANK */ + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #if defined (FLASH_OPTCR2_PCROP) + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_PCROP_Config(uint32_t PCROPSector); + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_PCROP_RDP_Config(uint32_t Pcrop_Rdp); + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetPCROP(void); + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetPCROPRDP(void); + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #endif /* FLASH_OPTCR2_PCROP */ + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** extern HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @} + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Exported functions --------------------------------------------------------*/ + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Exported_Functions FLASHEx Exported Functions + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @{ + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Exported_Functions_Group1 Extended IO operation functions + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Extended IO operation functions + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** @verbatim + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** =============================================================================== + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** ##### Extended programming operation functions ##### + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** =============================================================================== + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** [..] + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** This subsection provides a set of functions allowing to manage the Extension FLASH + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** programming operations Operations. + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** @endverbatim + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @{ + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + ARM GAS /tmp/cctoWaKX.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Perform a mass erase or erase the specified FLASH memory sectors + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param[in] pEraseInit pointer to an FLASH_EraseInitTypeDef structure that + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * contains the configuration information for the erasing. + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param[out] SectorError pointer to variable that + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * contains the configuration information on faulty sector in case of error + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * (0xFFFFFFFF means that all the sectors have been correctly erased) + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError) + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t index = 0; + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Process Locked */ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __HAL_LOCK(&pFlash); + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(status == HAL_OK) + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Initialization of SectorError variable*/ + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** *SectorError = 0xFFFFFFFFU; + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE) + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Mass erase to be done*/ + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #if defined (FLASH_OPTCR_nDBANK) + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_MassErase((uint8_t) pEraseInit->VoltageRange, pEraseInit->Banks); + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #else + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_MassErase((uint8_t) pEraseInit->VoltageRange); + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #endif /* FLASH_OPTCR_nDBANK */ + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* if the erase operation is completed, disable the MER Bit */ + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR &= (~FLASH_MER_BIT); + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_FLASH_NBSECTORS(pEraseInit->NbSectors + pEraseInit->Sector)); + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Erase by sector by sector to be done*/ + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** for(index = pEraseInit->Sector; index < (pEraseInit->NbSectors + pEraseInit->Sector); index++ + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_Erase_Sector(index, (uint8_t) pEraseInit->VoltageRange); + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + ARM GAS /tmp/cctoWaKX.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* If the erase operation is completed, disable the SER Bit and SNB Bits */ + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, (FLASH_CR_SER | FLASH_CR_SNB)); + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(status != HAL_OK) + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* In case of error, stop erase procedure and return the faulty sector*/ + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** *SectorError = index; + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** break; + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Process Unlocked */ + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return status; + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Perform a mass erase or erase the specified FLASH memory sectors with interrupt enable + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param pEraseInit pointer to an FLASH_EraseInitTypeDef structure that + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * contains the configuration information for the erasing. + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit) + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Process Locked */ + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __HAL_LOCK(&pFlash); + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Enable End of FLASH Operation interrupt */ + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP); + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Enable Error source interrupt */ + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR); + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Clear pending flags (if any) */ + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |\ + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR); + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE) + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Mass erase to be done*/ + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.ProcedureOnGoing = FLASH_PROC_MASSERASE; + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #if defined (FLASH_OPTCR_nDBANK) + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_MassErase((uint8_t) pEraseInit->VoltageRange, pEraseInit->Banks); + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #else + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_MassErase((uint8_t) pEraseInit->VoltageRange); + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #endif /* FLASH_OPTCR_nDBANK */ + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else + ARM GAS /tmp/cctoWaKX.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Erase by sector to be done*/ + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_FLASH_NBSECTORS(pEraseInit->NbSectors + pEraseInit->Sector)); + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.ProcedureOnGoing = FLASH_PROC_SECTERASE; + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.NbSectorsToErase = pEraseInit->NbSectors; + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.Sector = pEraseInit->Sector; + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.VoltageForErase = (uint8_t)pEraseInit->VoltageRange; + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Erase 1st sector and wait for IT*/ + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_Erase_Sector(pEraseInit->Sector, pEraseInit->VoltageRange); + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return status; + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Program option bytes + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param pOBInit pointer to an FLASH_OBInitStruct structure that + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * contains the configuration information for the programming. + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit) + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Process Locked */ + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __HAL_LOCK(&pFlash); + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OPTIONBYTE(pOBInit->OptionType)); + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Write protection configuration */ + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_WRP) == OPTIONBYTE_WRP) + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_WRPSTATE(pOBInit->WRPState)); + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(pOBInit->WRPState == OB_WRPSTATE_ENABLE) + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Enable of Write protection on the selected Sector*/ + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_OB_EnableWRP(pOBInit->WRPSector); + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Disable of Write protection on the selected Sector*/ + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_OB_DisableWRP(pOBInit->WRPSector); + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Read protection configuration */ + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_RDP) == OPTIONBYTE_RDP) + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_OB_RDP_LevelConfig(pOBInit->RDPLevel); + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + ARM GAS /tmp/cctoWaKX.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* USER configuration */ + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_USER) == OPTIONBYTE_USER) + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #if defined (FLASH_OPTCR_nDBANK) + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_OB_UserConfig(pOBInit->USERConfig & OB_WWDG_SW, + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_IWDG_SW, + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_STOP_NO_RST, + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_STDBY_NO_RST, + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_IWDG_STOP_ACTIVE, + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_IWDG_STDBY_ACTIVE, + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_NDBANK_SINGLE_BANK, + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_DUAL_BOOT_DISABLE); + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #else + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_OB_UserConfig(pOBInit->USERConfig & OB_WWDG_SW, + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_IWDG_SW, + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_STOP_NO_RST, + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_STDBY_NO_RST, + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_IWDG_STOP_ACTIVE, + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_IWDG_STDBY_ACTIVE); + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #endif /* FLASH_OPTCR_nDBANK */ + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* BOR Level configuration */ + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_BOR) == OPTIONBYTE_BOR) + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_OB_BOR_LevelConfig(pOBInit->BORLevel); + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Boot 0 Address configuration */ + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_BOOTADDR_0) == OPTIONBYTE_BOOTADDR_0) + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_OB_BootAddressConfig(OPTIONBYTE_BOOTADDR_0, pOBInit->BootAddr0); + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Boot 1 Address configuration */ + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_BOOTADDR_1) == OPTIONBYTE_BOOTADDR_1) + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_OB_BootAddressConfig(OPTIONBYTE_BOOTADDR_1, pOBInit->BootAddr1); + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #if defined (FLASH_OPTCR2_PCROP) + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* PCROP configuration */ + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_PCROP) == OPTIONBYTE_PCROP) + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_OB_PCROP_Config(pOBInit->PCROPSector); + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* PCROP_RDP configuration */ + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_PCROP_RDP) == OPTIONBYTE_PCROP_RDP) + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_OB_PCROP_RDP_Config(pOBInit->PCROPRdp); + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #endif /* FLASH_OPTCR2_PCROP */ + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Process Unlocked */ + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + ARM GAS /tmp/cctoWaKX.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return status; + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Get the Option byte configuration + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param pOBInit pointer to an FLASH_OBInitStruct structure that + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * contains the configuration information for the programming. + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval None + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit) + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->OptionType = OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER |\ + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** OPTIONBYTE_BOR | OPTIONBYTE_BOOTADDR_0 | OPTIONBYTE_BOOTADDR_1; + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Get WRP*/ + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->WRPSector = FLASH_OB_GetWRP(); + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Get RDP Level*/ + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->RDPLevel = FLASH_OB_GetRDP(); + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Get USER*/ + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig = FLASH_OB_GetUser(); + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Get BOR Level*/ + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->BORLevel = FLASH_OB_GetBOR(); + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Get Boot Address when Boot pin = 0 */ + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->BootAddr0 = FLASH_OB_GetBootAddress(OPTIONBYTE_BOOTADDR_0); + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Get Boot Address when Boot pin = 1 */ + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->BootAddr1 = FLASH_OB_GetBootAddress(OPTIONBYTE_BOOTADDR_1); + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #if defined (FLASH_OPTCR2_PCROP) + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Get PCROP Sectors */ + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->PCROPSector = FLASH_OB_GetPCROP(); + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Get PCROP_RDP Value */ + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->PCROPRdp = FLASH_OB_GetPCROPRDP(); + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #endif /* FLASH_OPTCR2_PCROP */ + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @} + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #if defined (FLASH_OPTCR_nDBANK) + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Full erase of FLASH memory sectors + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param VoltageRange The device voltage range which defines the erase parallelism. + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by byte (8-bit) + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V, + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by half word (16-bit) + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V, + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by word (32-bit) + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External Vpp, + ARM GAS /tmp/cctoWaKX.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by double word (64-bit) + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Banks Banks to be erased + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_BANK_1: Bank1 to be erased + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_BANK_2: Bank2 to be erased + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_BANK_BOTH: Bank1 and Bank2 to be erased + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static void FLASH_MassErase(uint8_t VoltageRange, uint32_t Banks) + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 28 .loc 1 441 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_VOLTAGERANGE(VoltageRange)); + 33 .loc 1 443 3 view .LVU1 + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_FLASH_BANK(Banks)); + 34 .loc 1 444 3 view .LVU2 + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* if the previous operation is completed, proceed to erase all sectors */ + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR &= CR_PSIZE_MASK; + 35 .loc 1 447 3 view .LVU3 + 36 .loc 1 447 13 is_stmt 0 view .LVU4 + 37 0000 114A ldr r2, .L7 + 38 0002 1369 ldr r3, [r2, #16] + 39 0004 23F44073 bic r3, r3, #768 + 40 0008 1361 str r3, [r2, #16] + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(Banks == FLASH_BANK_BOTH) + 41 .loc 1 448 3 is_stmt 1 view .LVU5 + 42 .loc 1 448 5 is_stmt 0 view .LVU6 + 43 000a 0329 cmp r1, #3 + 44 000c 10D0 beq .L5 + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* bank1 & bank2 will be erased*/ + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_MER_BIT; + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else if(Banks == FLASH_BANK_2) + 45 .loc 1 453 8 is_stmt 1 view .LVU7 + 46 .loc 1 453 10 is_stmt 0 view .LVU8 + 47 000e 0229 cmp r1, #2 + 48 0010 14D0 beq .L6 + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Only bank2 will be erased*/ + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_MER2; + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Only bank1 will be erased*/ + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_MER1; + 49 .loc 1 461 5 is_stmt 1 view .LVU9 + 50 .loc 1 461 15 is_stmt 0 view .LVU10 + 51 0012 0D4A ldr r2, .L7 + 52 0014 1369 ldr r3, [r2, #16] + 53 0016 43F00403 orr r3, r3, #4 + ARM GAS /tmp/cctoWaKX.s page 10 + + + 54 001a 1361 str r3, [r2, #16] + 55 .LVL1: + 56 .L3: + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_STRT | ((uint32_t)VoltageRange <<8); + 57 .loc 1 463 3 is_stmt 1 view .LVU11 + 58 .loc 1 463 13 is_stmt 0 view .LVU12 + 59 001c 0A4A ldr r2, .L7 + 60 001e 1369 ldr r3, [r2, #16] + 61 0020 43EA0020 orr r0, r3, r0, lsl #8 + 62 .LVL2: + 63 .loc 1 463 13 view .LVU13 + 64 0024 40F48030 orr r0, r0, #65536 + 65 0028 1061 str r0, [r2, #16] + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Data synchronous Barrier (DSB) Just after the write operation + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/ + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __DSB(); + 66 .loc 1 466 3 is_stmt 1 view .LVU14 + 67 .LBB6: + 68 .LBI6: + 69 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h" + 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** + 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h + 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file + 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.0.4 + 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018 + 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ + 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* + 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 + 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may + 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. + 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at + 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 + 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software + 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT + 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and + 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. + 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 24:Drivers/CMSIS/Include/cmsis_gcc.h **** + 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H + 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H + 27:Drivers/CMSIS/Include/cmsis_gcc.h **** + 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ + 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" + 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" + 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" + 33:Drivers/CMSIS/Include/cmsis_gcc.h **** + 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ + 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin + 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) + ARM GAS /tmp/cctoWaKX.s page 11 + + + 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 38:Drivers/CMSIS/Include/cmsis_gcc.h **** + 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ + 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM + 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm + 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE + 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline + 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE + 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline + 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE + 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline + 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN + 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) + 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED + 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) + 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK + 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) + 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED + 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) + 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT + 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION + 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) + 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ + 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE + 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- + 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ + 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add + 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + ARM GAS /tmp/cctoWaKX.s page 12 + + + 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE + 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- + 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ + 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add + 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED + 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) + 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT + 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict + 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 116:Drivers/CMSIS/Include/cmsis_gcc.h **** + 117:Drivers/CMSIS/Include/cmsis_gcc.h **** + 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ + 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface + 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 123:Drivers/CMSIS/Include/cmsis_gcc.h **** + 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts + 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void) + 130:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); + 132:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 133:Drivers/CMSIS/Include/cmsis_gcc.h **** + 134:Drivers/CMSIS/Include/cmsis_gcc.h **** + 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts + 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. + 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) + 141:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); + 143:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 144:Drivers/CMSIS/Include/cmsis_gcc.h **** + 145:Drivers/CMSIS/Include/cmsis_gcc.h **** + 146:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register + 148:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register. + 149:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value + 150:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + ARM GAS /tmp/cctoWaKX.s page 13 + + + 151:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) + 152:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 153:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 154:Drivers/CMSIS/Include/cmsis_gcc.h **** + 155:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) ); + 156:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 157:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 158:Drivers/CMSIS/Include/cmsis_gcc.h **** + 159:Drivers/CMSIS/Include/cmsis_gcc.h **** + 160:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 161:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 162:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure) + 163:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode. + 164:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value + 165:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 166:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) + 167:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 168:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 169:Drivers/CMSIS/Include/cmsis_gcc.h **** + 170:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + 171:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 172:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 174:Drivers/CMSIS/Include/cmsis_gcc.h **** + 175:Drivers/CMSIS/Include/cmsis_gcc.h **** + 176:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 177:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register + 178:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register. + 179:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 180:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 181:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) + 182:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 183:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + 184:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 185:Drivers/CMSIS/Include/cmsis_gcc.h **** + 186:Drivers/CMSIS/Include/cmsis_gcc.h **** + 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 188:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure) + 190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state. + 191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 192:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) + 194:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + 196:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 197:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 198:Drivers/CMSIS/Include/cmsis_gcc.h **** + 199:Drivers/CMSIS/Include/cmsis_gcc.h **** + 200:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 201:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register + 202:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register. + 203:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value + 204:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 205:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void) + 206:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 207:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + ARM GAS /tmp/cctoWaKX.s page 14 + + + 208:Drivers/CMSIS/Include/cmsis_gcc.h **** + 209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + 210:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 211:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 212:Drivers/CMSIS/Include/cmsis_gcc.h **** + 213:Drivers/CMSIS/Include/cmsis_gcc.h **** + 214:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 215:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register + 216:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register. + 217:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value + 218:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 219:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void) + 220:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 221:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 222:Drivers/CMSIS/Include/cmsis_gcc.h **** + 223:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + 224:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 225:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 226:Drivers/CMSIS/Include/cmsis_gcc.h **** + 227:Drivers/CMSIS/Include/cmsis_gcc.h **** + 228:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register + 230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register. + 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value + 232:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(void) + 234:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 235:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 236:Drivers/CMSIS/Include/cmsis_gcc.h **** + 237:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + 238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 239:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 240:Drivers/CMSIS/Include/cmsis_gcc.h **** + 241:Drivers/CMSIS/Include/cmsis_gcc.h **** + 242:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer + 244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP). + 245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 246:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void) + 248:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 250:Drivers/CMSIS/Include/cmsis_gcc.h **** + 251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) ); + 252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 253:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 254:Drivers/CMSIS/Include/cmsis_gcc.h **** + 255:Drivers/CMSIS/Include/cmsis_gcc.h **** + 256:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 257:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure) + 259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s + 260:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 261:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 262:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) + 263:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 264:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + ARM GAS /tmp/cctoWaKX.s page 15 + + + 265:Drivers/CMSIS/Include/cmsis_gcc.h **** + 266:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + 267:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 268:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 269:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 270:Drivers/CMSIS/Include/cmsis_gcc.h **** + 271:Drivers/CMSIS/Include/cmsis_gcc.h **** + 272:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 273:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer + 274:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP). + 275:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 276:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 277:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) + 278:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 279:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); + 280:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 281:Drivers/CMSIS/Include/cmsis_gcc.h **** + 282:Drivers/CMSIS/Include/cmsis_gcc.h **** + 283:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 284:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 285:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 286:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta + 287:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 288:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 289:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) + 290:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 291:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); + 292:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 293:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 294:Drivers/CMSIS/Include/cmsis_gcc.h **** + 295:Drivers/CMSIS/Include/cmsis_gcc.h **** + 296:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 297:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer + 298:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP). + 299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 300:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void) + 302:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 304:Drivers/CMSIS/Include/cmsis_gcc.h **** + 305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) ); + 306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 307:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 308:Drivers/CMSIS/Include/cmsis_gcc.h **** + 309:Drivers/CMSIS/Include/cmsis_gcc.h **** + 310:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 311:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 312:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure) + 313:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat + 314:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 315:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 316:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) + 317:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 319:Drivers/CMSIS/Include/cmsis_gcc.h **** + 320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + 321:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + ARM GAS /tmp/cctoWaKX.s page 16 + + + 322:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 323:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 324:Drivers/CMSIS/Include/cmsis_gcc.h **** + 325:Drivers/CMSIS/Include/cmsis_gcc.h **** + 326:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 327:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer + 328:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP). + 329:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 330:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 331:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) + 332:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); + 334:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 335:Drivers/CMSIS/Include/cmsis_gcc.h **** + 336:Drivers/CMSIS/Include/cmsis_gcc.h **** + 337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 338:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 339:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure) + 340:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + 341:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 342:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 343:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) + 344:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 345:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); + 346:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 347:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 348:Drivers/CMSIS/Include/cmsis_gcc.h **** + 349:Drivers/CMSIS/Include/cmsis_gcc.h **** + 350:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 351:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 352:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Stack Pointer (non-secure) + 353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + 354:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value + 355:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) + 357:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 359:Drivers/CMSIS/Include/cmsis_gcc.h **** + 360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + 361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 362:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 363:Drivers/CMSIS/Include/cmsis_gcc.h **** + 364:Drivers/CMSIS/Include/cmsis_gcc.h **** + 365:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure) + 367:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + 368:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set + 369:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 370:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) + 371:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); + 373:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 374:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 375:Drivers/CMSIS/Include/cmsis_gcc.h **** + 376:Drivers/CMSIS/Include/cmsis_gcc.h **** + 377:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 378:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask + ARM GAS /tmp/cctoWaKX.s page 17 + + + 379:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register. + 380:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 381:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 382:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) + 383:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 384:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 385:Drivers/CMSIS/Include/cmsis_gcc.h **** + 386:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 387:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 388:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 389:Drivers/CMSIS/Include/cmsis_gcc.h **** + 390:Drivers/CMSIS/Include/cmsis_gcc.h **** + 391:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 392:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 393:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure) + 394:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg + 395:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 396:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 397:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) + 398:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 399:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 400:Drivers/CMSIS/Include/cmsis_gcc.h **** + 401:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + 402:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 403:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 404:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 405:Drivers/CMSIS/Include/cmsis_gcc.h **** + 406:Drivers/CMSIS/Include/cmsis_gcc.h **** + 407:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 408:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask + 409:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register. + 410:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 411:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 412:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) + 413:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 415:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 416:Drivers/CMSIS/Include/cmsis_gcc.h **** + 417:Drivers/CMSIS/Include/cmsis_gcc.h **** + 418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 419:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure) + 421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + 422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 423:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 424:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) + 425:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 426:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); + 427:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 428:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 429:Drivers/CMSIS/Include/cmsis_gcc.h **** + 430:Drivers/CMSIS/Include/cmsis_gcc.h **** + 431:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 433:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 434:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 435:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ + ARM GAS /tmp/cctoWaKX.s page 18 + + + 436:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + 437:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 438:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 439:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void) + 440:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 441:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory"); + 442:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 443:Drivers/CMSIS/Include/cmsis_gcc.h **** + 444:Drivers/CMSIS/Include/cmsis_gcc.h **** + 445:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 446:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ + 447:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR. + 448:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 449:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 450:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void) + 451:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 452:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory"); + 453:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 454:Drivers/CMSIS/Include/cmsis_gcc.h **** + 455:Drivers/CMSIS/Include/cmsis_gcc.h **** + 456:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 457:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority + 458:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register. + 459:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 460:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 461:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) + 462:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 463:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 464:Drivers/CMSIS/Include/cmsis_gcc.h **** + 465:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + 466:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 467:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 468:Drivers/CMSIS/Include/cmsis_gcc.h **** + 469:Drivers/CMSIS/Include/cmsis_gcc.h **** + 470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 471:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure) + 473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state. + 474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 475:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) + 477:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 479:Drivers/CMSIS/Include/cmsis_gcc.h **** + 480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + 481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 482:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 483:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 484:Drivers/CMSIS/Include/cmsis_gcc.h **** + 485:Drivers/CMSIS/Include/cmsis_gcc.h **** + 486:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority + 488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register. + 489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 490:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) + 492:Drivers/CMSIS/Include/cmsis_gcc.h **** { + ARM GAS /tmp/cctoWaKX.s page 19 + + + 493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); + 494:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 495:Drivers/CMSIS/Include/cmsis_gcc.h **** + 496:Drivers/CMSIS/Include/cmsis_gcc.h **** + 497:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 498:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 499:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure) + 500:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state. + 501:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 502:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 503:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) + 504:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 505:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); + 506:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 507:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 508:Drivers/CMSIS/Include/cmsis_gcc.h **** + 509:Drivers/CMSIS/Include/cmsis_gcc.h **** + 510:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 511:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition + 512:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable + 513:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level. + 514:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 515:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 516:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) + 517:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 518:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); + 519:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 520:Drivers/CMSIS/Include/cmsis_gcc.h **** + 521:Drivers/CMSIS/Include/cmsis_gcc.h **** + 522:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 523:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask + 524:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register. + 525:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 526:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) + 528:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 530:Drivers/CMSIS/Include/cmsis_gcc.h **** + 531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + 532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 533:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 534:Drivers/CMSIS/Include/cmsis_gcc.h **** + 535:Drivers/CMSIS/Include/cmsis_gcc.h **** + 536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 537:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 538:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure) + 539:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state. + 540:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 541:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 542:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) + 543:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 544:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 545:Drivers/CMSIS/Include/cmsis_gcc.h **** + 546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + 547:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 548:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 549:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + ARM GAS /tmp/cctoWaKX.s page 20 + + + 550:Drivers/CMSIS/Include/cmsis_gcc.h **** + 551:Drivers/CMSIS/Include/cmsis_gcc.h **** + 552:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 553:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask + 554:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register. + 555:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 556:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 557:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) + 558:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 559:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); + 560:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 561:Drivers/CMSIS/Include/cmsis_gcc.h **** + 562:Drivers/CMSIS/Include/cmsis_gcc.h **** + 563:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 564:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 565:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure) + 566:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state. + 567:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 568:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 569:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) + 570:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 571:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); + 572:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 573:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 574:Drivers/CMSIS/Include/cmsis_gcc.h **** + 575:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 576:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 577:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + 578:Drivers/CMSIS/Include/cmsis_gcc.h **** + 579:Drivers/CMSIS/Include/cmsis_gcc.h **** + 580:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 581:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + 582:Drivers/CMSIS/Include/cmsis_gcc.h **** + 583:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit + 585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 588:Drivers/CMSIS/Include/cmsis_gcc.h **** + 589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + 590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 591:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) + 593:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 595:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 596:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 597:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 598:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 599:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 600:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + 601:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 602:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 603:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 604:Drivers/CMSIS/Include/cmsis_gcc.h **** + 605:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + 606:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + ARM GAS /tmp/cctoWaKX.s page 21 + + + 607:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure) + 608:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 609:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 610:Drivers/CMSIS/Include/cmsis_gcc.h **** + 611:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in + 612:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 613:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 614:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) + 615:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 616:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 617:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 618:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 619:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 620:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 621:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + 622:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 623:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 624:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 625:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 626:Drivers/CMSIS/Include/cmsis_gcc.h **** + 627:Drivers/CMSIS/Include/cmsis_gcc.h **** + 628:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 629:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit + 630:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 631:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 632:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 633:Drivers/CMSIS/Include/cmsis_gcc.h **** + 634:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + 635:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 636:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 637:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) + 638:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 639:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 640:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); + 645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 646:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 647:Drivers/CMSIS/Include/cmsis_gcc.h **** + 648:Drivers/CMSIS/Include/cmsis_gcc.h **** + 649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 650:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 652:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 653:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 654:Drivers/CMSIS/Include/cmsis_gcc.h **** + 655:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s + 656:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 657:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 658:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) + 659:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 661:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 662:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 663:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + ARM GAS /tmp/cctoWaKX.s page 22 + + + 664:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); + 665:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 666:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 667:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 668:Drivers/CMSIS/Include/cmsis_gcc.h **** + 669:Drivers/CMSIS/Include/cmsis_gcc.h **** + 670:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 671:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit + 672:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 673:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 674:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 675:Drivers/CMSIS/Include/cmsis_gcc.h **** + 676:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + 677:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 678:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 679:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) + 680:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 681:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 682:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 683:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 684:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 685:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 686:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 687:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + 688:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 689:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 690:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 691:Drivers/CMSIS/Include/cmsis_gcc.h **** + 692:Drivers/CMSIS/Include/cmsis_gcc.h **** + 693:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 694:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 695:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure) + 696:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 697:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 698:Drivers/CMSIS/Include/cmsis_gcc.h **** + 699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec + 700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 701:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) + 703:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 709:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + 710:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 711:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 712:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 713:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 714:Drivers/CMSIS/Include/cmsis_gcc.h **** + 715:Drivers/CMSIS/Include/cmsis_gcc.h **** + 716:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit + 718:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 719:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 720:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + ARM GAS /tmp/cctoWaKX.s page 23 + + + 721:Drivers/CMSIS/Include/cmsis_gcc.h **** + 722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + 723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + 724:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) + 726:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 727:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 728:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 729:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 730:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 731:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 732:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); + 733:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 734:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 735:Drivers/CMSIS/Include/cmsis_gcc.h **** + 736:Drivers/CMSIS/Include/cmsis_gcc.h **** + 737:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 738:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 739:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure) + 740:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 741:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 742:Drivers/CMSIS/Include/cmsis_gcc.h **** + 743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu + 744:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set + 745:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) + 747:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 748:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 749:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 750:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 751:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 752:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); + 753:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 754:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 756:Drivers/CMSIS/Include/cmsis_gcc.h **** + 757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + 759:Drivers/CMSIS/Include/cmsis_gcc.h **** + 760:Drivers/CMSIS/Include/cmsis_gcc.h **** + 761:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR + 763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register. + 764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value + 765:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 766:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void) + 767:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 768:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 769:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 770:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr) + 771:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 772:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 773:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr(); + 775:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 776:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 777:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/cctoWaKX.s page 24 + + + 778:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + 779:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 781:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 782:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U); + 783:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 784:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 785:Drivers/CMSIS/Include/cmsis_gcc.h **** + 786:Drivers/CMSIS/Include/cmsis_gcc.h **** + 787:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 788:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR + 789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register. + 790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set + 791:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) + 793:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 795:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 796:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr) + 797:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 798:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 799:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 800:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr); + 801:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 802:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); + 803:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 804:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 805:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr; + 806:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 807:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 808:Drivers/CMSIS/Include/cmsis_gcc.h **** + 809:Drivers/CMSIS/Include/cmsis_gcc.h **** + 810:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */ + 811:Drivers/CMSIS/Include/cmsis_gcc.h **** + 812:Drivers/CMSIS/Include/cmsis_gcc.h **** + 813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ + 814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + 815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions + 816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 817:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 818:Drivers/CMSIS/Include/cmsis_gcc.h **** + 819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. + 820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" + 821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ + 822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) + 823:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) + 824:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) + 825:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) + 826:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 827:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) + 828:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) + 829:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) + 830:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 831:Drivers/CMSIS/Include/cmsis_gcc.h **** + 832:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 833:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation + 834:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. + ARM GAS /tmp/cctoWaKX.s page 25 + + + 835:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 836:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") + 837:Drivers/CMSIS/Include/cmsis_gcc.h **** + 838:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 839:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt + 840:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o + 841:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 842:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi") + 843:Drivers/CMSIS/Include/cmsis_gcc.h **** + 844:Drivers/CMSIS/Include/cmsis_gcc.h **** + 845:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 846:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event + 847:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter + 848:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. + 849:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 850:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe") + 851:Drivers/CMSIS/Include/cmsis_gcc.h **** + 852:Drivers/CMSIS/Include/cmsis_gcc.h **** + 853:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 854:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event + 855:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + 856:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 857:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") + 858:Drivers/CMSIS/Include/cmsis_gcc.h **** + 859:Drivers/CMSIS/Include/cmsis_gcc.h **** + 860:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 861:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier + 862:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, + 863:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, + 864:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. + 865:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) + 867:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); + 869:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 870:Drivers/CMSIS/Include/cmsis_gcc.h **** + 871:Drivers/CMSIS/Include/cmsis_gcc.h **** + 872:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 873:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Synchronization Barrier + 874:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Acts as a special kind of Data Memory Barrier. + 875:Drivers/CMSIS/Include/cmsis_gcc.h **** It completes when all explicit memory accesses before this instruction complete. + 876:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DSB(void) + 70 .loc 2 877 27 view .LVU15 + 71 .LBB7: + 878:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory"); + 72 .loc 2 879 3 view .LVU16 + 73 .syntax unified + 74 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 75 002a BFF34F8F dsb 0xF + 76 @ 0 "" 2 + 77 .thumb + 78 .syntax unified + 79 .LBE7: + 80 .LBE6: + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + ARM GAS /tmp/cctoWaKX.s page 26 + + + 81 .loc 1 467 1 is_stmt 0 view .LVU17 + 82 002e 7047 bx lr + 83 .LVL3: + 84 .L5: + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 85 .loc 1 451 5 is_stmt 1 view .LVU18 + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 86 .loc 1 451 15 is_stmt 0 view .LVU19 + 87 0030 1169 ldr r1, [r2, #16] + 88 .LVL4: + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 89 .loc 1 451 15 view .LVU20 + 90 0032 48F20403 movw r3, #32772 + 91 0036 0B43 orrs r3, r3, r1 + 92 0038 1361 str r3, [r2, #16] + 93 003a EFE7 b .L3 + 94 .LVL5: + 95 .L6: + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 96 .loc 1 456 5 is_stmt 1 view .LVU21 + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 97 .loc 1 456 15 is_stmt 0 view .LVU22 + 98 003c 024A ldr r2, .L7 + 99 003e 1369 ldr r3, [r2, #16] + 100 0040 43F40043 orr r3, r3, #32768 + 101 0044 1361 str r3, [r2, #16] + 102 0046 E9E7 b .L3 + 103 .L8: + 104 .align 2 + 105 .L7: + 106 0048 003C0240 .word 1073888256 + 107 .cfi_endproc + 108 .LFE145: + 110 .section .text.FLASH_OB_GetWRP,"ax",%progbits + 111 .align 1 + 112 .syntax unified + 113 .thumb + 114 .thumb_func + 115 .fpu fpv5-d16 + 117 FLASH_OB_GetWRP: + 118 .LFB147: + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Erase the specified FLASH memory sector + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Sector FLASH sector to erase + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * The value of this parameter depend on device used within the same series + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param VoltageRange The device voltage range which defines the erase parallelism. + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by byte (8-bit) + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V, + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by half word (16-bit) + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V, + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by word (32-bit) + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by double word (64-bit) + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + ARM GAS /tmp/cctoWaKX.s page 27 + + + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval None + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange) + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t tmp_psize = 0; + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_FLASH_SECTOR(Sector)); + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_VOLTAGERANGE(VoltageRange)); + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(VoltageRange == FLASH_VOLTAGE_RANGE_1) + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** tmp_psize = FLASH_PSIZE_BYTE; + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else if(VoltageRange == FLASH_VOLTAGE_RANGE_2) + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** tmp_psize = FLASH_PSIZE_HALF_WORD; + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else if(VoltageRange == FLASH_VOLTAGE_RANGE_3) + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** tmp_psize = FLASH_PSIZE_WORD; + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** tmp_psize = FLASH_PSIZE_DOUBLE_WORD; + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Need to add offset of 4 when sector higher than FLASH_SECTOR_11 */ + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(Sector > FLASH_SECTOR_11) + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** Sector += 4; + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* If the previous operation is completed, proceed to erase the sector */ + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR &= CR_PSIZE_MASK; + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= tmp_psize; + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_SNB); + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_SER | (Sector << FLASH_CR_SNB_Pos); + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_STRT; + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Data synchronous Barrier (DSB) Just after the write operation + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/ + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __DSB(); + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Return the FLASH Write Protection Option Bytes value. + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval uint32_t FLASH Write Protection Option Bytes value + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetWRP(void) + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 119 .loc 1 534 1 is_stmt 1 view -0 + 120 .cfi_startproc + 121 @ args = 0, pretend = 0, frame = 0 + 122 @ frame_needed = 0, uses_anonymous_args = 0 + 123 @ link register save eliminated. + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Return the FLASH write protection Register value */ + ARM GAS /tmp/cctoWaKX.s page 28 + + + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return ((uint32_t)(FLASH->OPTCR & 0x0FFF0000)); + 124 .loc 1 536 3 view .LVU24 + 125 .loc 1 536 27 is_stmt 0 view .LVU25 + 126 0000 024B ldr r3, .L10 + 127 0002 5B69 ldr r3, [r3, #20] + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 128 .loc 1 537 1 view .LVU26 + 129 0004 0248 ldr r0, .L10+4 + 130 0006 1840 ands r0, r0, r3 + 131 0008 7047 bx lr + 132 .L11: + 133 000a 00BF .align 2 + 134 .L10: + 135 000c 003C0240 .word 1073888256 + 136 0010 0000FF0F .word 268369920 + 137 .cfi_endproc + 138 .LFE147: + 140 .section .text.FLASH_OB_GetUser,"ax",%progbits + 141 .align 1 + 142 .syntax unified + 143 .thumb + 144 .thumb_func + 145 .fpu fpv5-d16 + 147 FLASH_OB_GetUser: + 148 .LFB149: + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Program the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Wwdg Selects the IWDG mode + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_WWDG_SW: Software WWDG selected + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_WWDG_HW: Hardware WWDG selected + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Iwdg Selects the WWDG mode + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_SW: Software IWDG selected + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_HW: Hardware IWDG selected + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Stop Reset event when entering STOP mode. + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_STOP_NO_RST: No reset generated when entering in STOP + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_STOP_RST: Reset generated when entering in STOP + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Stdby Reset event when entering Standby mode. + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_STDBY_NO_RST: No reset generated when entering in STANDBY + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_STDBY_RST: Reset generated when entering in STANDBY + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Iwdgstop Independent watchdog counter freeze in Stop mode. + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_STOP_FREEZE: Freeze IWDG counter in STOP + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_STOP_ACTIVE: IWDG counter active in STOP + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Iwdgstdby Independent watchdog counter freeze in standby mode. + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_STDBY_FREEZE: Freeze IWDG counter in STANDBY + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_STDBY_ACTIVE: IWDG counter active in STANDBY + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param NDBank Flash Single Bank mode enabled. + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_NDBANK_SINGLE_BANK: enable 256 bits mode (Flash is a single bank) + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_NDBANK_DUAL_BANK: disable 256 bits mode (Flash is a dual bank in 128 bits mo + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param NDBoot Flash Dual boot mode disable. + ARM GAS /tmp/cctoWaKX.s page 29 + + + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_DUAL_BOOT_DISABLE: Disable Dual Boot + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_DUAL_BOOT_ENABLE: Enable Dual Boot + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t Iwdgstdby, uint32_t NDBank, uint32_t NDBoot) + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t useroptionmask = 0x00; + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t useroptionvalue = 0x00; + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_WWDG_SOURCE(Wwdg)); + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_SOURCE(Iwdg)); + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_STOP_SOURCE(Stop)); + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_STDBY_SOURCE(Stdby)); + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_STOP_FREEZE(Iwdgstop)); + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_STDBY_FREEZE(Iwdgstdby)); + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_NDBANK(NDBank)); + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_NDBOOT(NDBoot)); + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(status == HAL_OK) + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** useroptionmask = (FLASH_OPTCR_WWDG_SW | FLASH_OPTCR_IWDG_SW | FLASH_OPTCR_nRST_STOP | \ + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_OPTCR_nRST_STDBY | FLASH_OPTCR_IWDG_STOP | FLASH_OPTCR_IWDG_STDBY | \ + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_OPTCR_nDBOOT | FLASH_OPTCR_nDBANK); + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** useroptionvalue = (Iwdg | Wwdg | Stop | Stdby | Iwdgstop | Iwdgstdby | NDBoot | NDBank); + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Update User Option Byte */ + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** MODIFY_REG(FLASH->OPTCR, useroptionmask, useroptionvalue); + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return status; + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Return the FLASH User Option Byte value. + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval uint32_t FLASH User Option Bytes values: WWDG_SW(Bit4), IWDG_SW(Bit5), nRST_STOP(Bit6), + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * nRST_STDBY(Bit7), nDBOOT(Bit28), nDBANK(Bit29), IWDG_STDBY(Bit30) and IWDG_STOP(Bit31). + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetUser(void) + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 149 .loc 1 618 1 is_stmt 1 view -0 + 150 .cfi_startproc + 151 @ args = 0, pretend = 0, frame = 0 + 152 @ frame_needed = 0, uses_anonymous_args = 0 + 153 @ link register save eliminated. + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Return the User Option Byte */ + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return ((uint32_t)(FLASH->OPTCR & 0xF00000F0U)); + 154 .loc 1 620 3 view .LVU28 + ARM GAS /tmp/cctoWaKX.s page 30 + + + 155 .loc 1 620 27 is_stmt 0 view .LVU29 + 156 0000 024B ldr r3, .L13 + 157 0002 5B69 ldr r3, [r3, #20] + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 158 .loc 1 621 1 view .LVU30 + 159 0004 0248 ldr r0, .L13+4 + 160 0006 1840 ands r0, r0, r3 + 161 0008 7047 bx lr + 162 .L14: + 163 000a 00BF .align 2 + 164 .L13: + 165 000c 003C0240 .word 1073888256 + 166 0010 F00000F0 .word -268435216 + 167 .cfi_endproc + 168 .LFE149: + 170 .section .text.FLASH_OB_BOR_LevelConfig,"ax",%progbits + 171 .align 1 + 172 .syntax unified + 173 .thumb + 174 .thumb_func + 175 .fpu fpv5-d16 + 177 FLASH_OB_BOR_LevelConfig: + 178 .LVL6: + 179 .LFB153: + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #else + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Full erase of FLASH memory sectors + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param VoltageRange The device voltage range which defines the erase parallelism. + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by byte (8-bit) + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V, + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by half word (16-bit) + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V, + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by word (32-bit) + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External Vpp, + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by double word (64-bit) + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static void FLASH_MassErase(uint8_t VoltageRange) + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_VOLTAGERANGE(VoltageRange)); + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* if the previous operation is completed, proceed to erase all sectors */ + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR &= CR_PSIZE_MASK; + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_MER; + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_STRT | ((uint32_t)VoltageRange <<8); + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Data synchronous Barrier (DSB) Just after the write operation + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/ + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __DSB(); + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Erase the specified FLASH memory sector + ARM GAS /tmp/cctoWaKX.s page 31 + + + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Sector FLASH sector to erase + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * The value of this parameter depend on device used within the same series + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param VoltageRange The device voltage range which defines the erase parallelism. + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_VOLTAGE_RANGE_1: when the device voltage range is 1.8V to 2.1V, + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by byte (8-bit) + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_VOLTAGE_RANGE_2: when the device voltage range is 2.1V to 2.7V, + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by half word (16-bit) + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_VOLTAGE_RANGE_3: when the device voltage range is 2.7V to 3.6V, + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by word (32-bit) + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg FLASH_VOLTAGE_RANGE_4: when the device voltage range is 2.7V to 3.6V + External + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * the operation will be done by double word (64-bit) + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval None + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange) + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t tmp_psize = 0; + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_FLASH_SECTOR(Sector)); + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_VOLTAGERANGE(VoltageRange)); + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(VoltageRange == FLASH_VOLTAGE_RANGE_1) + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** tmp_psize = FLASH_PSIZE_BYTE; + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else if(VoltageRange == FLASH_VOLTAGE_RANGE_2) + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** tmp_psize = FLASH_PSIZE_HALF_WORD; + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else if(VoltageRange == FLASH_VOLTAGE_RANGE_3) + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** tmp_psize = FLASH_PSIZE_WORD; + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** tmp_psize = FLASH_PSIZE_DOUBLE_WORD; + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* If the previous operation is completed, proceed to erase the sector */ + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR &= CR_PSIZE_MASK; + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= tmp_psize; + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR &= SECTOR_MASK; + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_SER | (Sector << FLASH_CR_SNB_Pos); + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_STRT; + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Data synchronous Barrier (DSB) Just after the write operation + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** This will force the CPU to respect the sequence of instruction (no optimization).*/ + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** __DSB(); + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Return the FLASH Write Protection Option Bytes value. + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval uint32_t FLASH Write Protection Option Bytes value + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetWRP(void) + ARM GAS /tmp/cctoWaKX.s page 32 + + + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Return the FLASH write protection Register value */ + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return ((uint32_t)(FLASH->OPTCR & 0x00FF0000)); + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Program the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Wwdg Selects the IWDG mode + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_WWDG_SW: Software WWDG selected + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_WWDG_HW: Hardware WWDG selected + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Iwdg Selects the WWDG mode + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_SW: Software IWDG selected + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_HW: Hardware IWDG selected + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Stop Reset event when entering STOP mode. + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_STOP_NO_RST: No reset generated when entering in STOP + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_STOP_RST: Reset generated when entering in STOP + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Stdby Reset event when entering Standby mode. + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_STDBY_NO_RST: No reset generated when entering in STANDBY + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_STDBY_RST: Reset generated when entering in STANDBY + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Iwdgstop Independent watchdog counter freeze in Stop mode. + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_STOP_FREEZE: Freeze IWDG counter in STOP + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_STOP_ACTIVE: IWDG counter active in STOP + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Iwdgstdby Independent watchdog counter freeze in standby mode. + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_STDBY_FREEZE: Freeze IWDG counter in STANDBY + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_IWDG_STDBY_ACTIVE: IWDG counter active in STANDBY + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t Wwdg, uint32_t Iwdg, uint32_t Stop, uint32_t + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t useroptionmask = 0x00; + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t useroptionvalue = 0x00; + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_WWDG_SOURCE(Wwdg)); + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_SOURCE(Iwdg)); + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_STOP_SOURCE(Stop)); + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_STDBY_SOURCE(Stdby)); + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_STOP_FREEZE(Iwdgstop)); + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_STDBY_FREEZE(Iwdgstdby)); + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(status == HAL_OK) + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** useroptionmask = (FLASH_OPTCR_WWDG_SW | FLASH_OPTCR_IWDG_SW | FLASH_OPTCR_nRST_STOP | \ + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_OPTCR_nRST_STDBY | FLASH_OPTCR_IWDG_STOP | FLASH_OPTCR_IWDG_STDBY); + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** useroptionvalue = (Iwdg | Wwdg | Stop | Stdby | Iwdgstop | Iwdgstdby); + ARM GAS /tmp/cctoWaKX.s page 33 + + + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Update User Option Byte */ + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** MODIFY_REG(FLASH->OPTCR, useroptionmask, useroptionvalue); + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return status; + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Return the FLASH User Option Byte value. + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval uint32_t FLASH User Option Bytes values: WWDG_SW(Bit4), IWDG_SW(Bit5), nRST_STOP(Bit6), + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * nRST_STDBY(Bit7), IWDG_STDBY(Bit30) and IWDG_STOP(Bit31). + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetUser(void) + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Return the User Option Byte */ + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return ((uint32_t)(FLASH->OPTCR & 0xC00000F0U)); + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #endif /* FLASH_OPTCR_nDBANK */ + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Enable the write protection of the desired bank1 or bank2 sectors + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @note When the memory read protection level is selected (RDP level = 1), + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * it is not possible to program or erase the flash sector i if CortexM7 + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * debug features are connected or boot code is executed in RAM, even if nWRPi = 1 + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param WRPSector specifies the sector(s) to be write protected. + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg WRPSector: A value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_7 (for STM32F74xxx + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * or a value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_11 (in Single Bank mode for S + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * or a value between OB_WRP_DB_SECTOR_0 and OB_WRP_DB_SECTOR_23 (in Dual Bank mode f + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_WRP_SECTOR_All + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL FLASH State + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_EnableWRP(uint32_t WRPSector) + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_WRP_SECTOR(WRPSector)); + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(status == HAL_OK) + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /*Write protection enabled on sectors */ + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->OPTCR &= (~WRPSector); + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return status; + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + ARM GAS /tmp/cctoWaKX.s page 34 + + + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Disable the write protection of the desired bank1 or bank 2 sectors + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @note When the memory read protection level is selected (RDP level = 1), + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * it is not possible to program or erase the flash sector i if CortexM4 + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * debug features are connected or boot code is executed in RAM, even if nWRPi = 1 + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param WRPSector specifies the sector(s) to be write protected. + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg WRPSector: A value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_7 (for STM32F74xxx + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * or a value between OB_WRP_SECTOR_0 and OB_WRP_SECTOR_11 (in Single Bank mode for S + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * or a value between OB_WRP_DB_SECTOR_0 and OB_WRP_DB_SECTOR_23 (in Dual Bank mode f + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_WRP_Sector_All + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_DisableWRP(uint32_t WRPSector) + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_WRP_SECTOR(WRPSector)); + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(status == HAL_OK) + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Write protection disabled on sectors */ + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->OPTCR |= (WRPSector); + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return status; + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Set the read protection level. + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Level specifies the read protection level. + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_RDP_LEVEL_0: No protection + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_RDP_LEVEL_1: Read protection of the memory + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_RDP_LEVEL_2: Full chip protection + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @note WARNING: When enabling OB_RDP level 2 it's no more possible to go back to level 1 or 0 + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_RDP_LevelConfig(uint8_t Level) + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_RDP_LEVEL(Level)); + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + ARM GAS /tmp/cctoWaKX.s page 35 + + + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(status == HAL_OK) + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** *(__IO uint8_t*)OPTCR_BYTE1_ADDRESS = Level; + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return status; + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Set the BOR Level. + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Level specifies the Option Bytes BOR Reset Level. + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOR_LEVEL3: Supply voltage ranges from 2.7 to 3.6 V + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOR_LEVEL2: Supply voltage ranges from 2.4 to 2.7 V + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOR_LEVEL1: Supply voltage ranges from 2.1 to 2.4 V + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOR_OFF: Supply voltage ranges from 1.62 to 2.1 V + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_BOR_LevelConfig(uint8_t Level) + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 180 .loc 1 902 1 is_stmt 1 view -0 + 181 .cfi_startproc + 182 @ args = 0, pretend = 0, frame = 0 + 183 @ frame_needed = 0, uses_anonymous_args = 0 + 184 @ link register save eliminated. + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_BOR_LEVEL(Level)); + 185 .loc 1 904 3 view .LVU32 + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Set the BOR Level */ + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** MODIFY_REG(FLASH->OPTCR, FLASH_OPTCR_BOR_LEV, Level); + 186 .loc 1 907 3 view .LVU33 + 187 0000 034A ldr r2, .L16 + 188 0002 5369 ldr r3, [r2, #20] + 189 0004 23F00C03 bic r3, r3, #12 + 190 0008 1843 orrs r0, r0, r3 + 191 .LVL7: + 192 .loc 1 907 3 is_stmt 0 view .LVU34 + 193 000a 5061 str r0, [r2, #20] + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return HAL_OK; + 194 .loc 1 909 3 is_stmt 1 view .LVU35 + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 195 .loc 1 911 1 is_stmt 0 view .LVU36 + 196 000c 0020 movs r0, #0 + 197 000e 7047 bx lr + 198 .L17: + 199 .align 2 + 200 .L16: + 201 0010 003C0240 .word 1073888256 + 202 .cfi_endproc + 203 .LFE153: + 205 .section .text.FLASH_OB_GetRDP,"ax",%progbits + 206 .align 1 + 207 .syntax unified + 208 .thumb + ARM GAS /tmp/cctoWaKX.s page 36 + + + 209 .thumb_func + 210 .fpu fpv5-d16 + 212 FLASH_OB_GetRDP: + 213 .LFB155: + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Configure Boot base address. + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param BootOption specifies Boot base address depending from Boot pin = 0 or pin = 1 + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OPTIONBYTE_BOOTADDR_0 : Boot address based when Boot pin = 0 + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OPTIONBYTE_BOOTADDR_1 : Boot address based when Boot pin = 1 + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param Address specifies Boot base address + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOOTADDR_ITCM_RAM : Boot from ITCM RAM (0x00000000) + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOOTADDR_SYSTEM : Boot from System memory bootloader (0x00100000) + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOOTADDR_ITCM_FLASH : Boot from Flash on ITCM interface (0x00200000) + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOOTADDR_AXIM_FLASH : Boot from Flash on AXIM interface (0x08000000) + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOOTADDR_DTCM_RAM : Boot from DTCM RAM (0x20000000) + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOOTADDR_SRAM1 : Boot from SRAM1 (0x20010000) + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_BOOTADDR_SRAM2 : Boot from SRAM2 (0x2004C000) + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval HAL Status + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_BootAddressConfig(uint32_t BootOption, uint32_t Address) + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Check the parameters */ + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_BOOT_ADDRESS(Address)); + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(status == HAL_OK) + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(BootOption == OPTIONBYTE_BOOTADDR_0) + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** MODIFY_REG(FLASH->OPTCR1, FLASH_OPTCR1_BOOT_ADD0, Address); + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** MODIFY_REG(FLASH->OPTCR1, FLASH_OPTCR1_BOOT_ADD1, (Address << 16)); + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return status; + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Returns the FLASH Read Protection level. + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval FlagStatus FLASH ReadOut Protection Status: + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_RDP_LEVEL_0: No protection + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_RDP_LEVEL_1: Read protection of the memory + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OB_RDP_LEVEL_2: Full chip protection + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + ARM GAS /tmp/cctoWaKX.s page 37 + + + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetRDP(void) + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 214 .loc 1 966 1 is_stmt 1 view -0 + 215 .cfi_startproc + 216 @ args = 0, pretend = 0, frame = 0 + 217 @ frame_needed = 0, uses_anonymous_args = 0 + 218 @ link register save eliminated. + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint8_t readstatus = OB_RDP_LEVEL_0; + 219 .loc 1 967 3 view .LVU38 + 220 .LVL8: + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if ((*(__IO uint8_t*)(OPTCR_BYTE1_ADDRESS)) == OB_RDP_LEVEL_0) + 221 .loc 1 969 3 view .LVU39 + 222 .loc 1 969 8 is_stmt 0 view .LVU40 + 223 0000 054B ldr r3, .L21 + 224 0002 587D ldrb r0, [r3, #21] @ zero_extendqisi2 + 225 0004 C0B2 uxtb r0, r0 + 226 .loc 1 969 6 view .LVU41 + 227 0006 AA28 cmp r0, #170 + 228 0008 04D0 beq .L19 + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** readstatus = OB_RDP_LEVEL_0; + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else if ((*(__IO uint8_t*)(OPTCR_BYTE1_ADDRESS)) == OB_RDP_LEVEL_2) + 229 .loc 1 973 8 is_stmt 1 view .LVU42 + 230 .loc 1 973 13 is_stmt 0 view .LVU43 + 231 000a 587D ldrb r0, [r3, #21] @ zero_extendqisi2 + 232 000c C0B2 uxtb r0, r0 + 233 .loc 1 973 11 view .LVU44 + 234 000e CC28 cmp r0, #204 + 235 0010 00D0 beq .L19 + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** readstatus = OB_RDP_LEVEL_2; + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** readstatus = OB_RDP_LEVEL_1; + 236 .loc 1 979 16 view .LVU45 + 237 0012 5520 movs r0, #85 + 238 .L19: + 239 .LVL9: + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return readstatus; + 240 .loc 1 982 3 is_stmt 1 view .LVU46 + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 241 .loc 1 983 1 is_stmt 0 view .LVU47 + 242 0014 7047 bx lr + 243 .L22: + 244 0016 00BF .align 2 + 245 .L21: + 246 0018 003C0240 .word 1073888256 + 247 .cfi_endproc + 248 .LFE155: + 250 .section .text.FLASH_OB_GetBOR,"ax",%progbits + 251 .align 1 + 252 .syntax unified + ARM GAS /tmp/cctoWaKX.s page 38 + + + 253 .thumb + 254 .thumb_func + 255 .fpu fpv5-d16 + 257 FLASH_OB_GetBOR: + 258 .LFB156: + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Returns the FLASH BOR level. + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval uint32_t The FLASH BOR level: + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOR_LEVEL3: Supply voltage ranges from 2.7 to 3.6 V + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOR_LEVEL2: Supply voltage ranges from 2.4 to 2.7 V + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOR_LEVEL1: Supply voltage ranges from 2.1 to 2.4 V + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOR_OFF : Supply voltage ranges from 1.62 to 2.1 V + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetBOR(void) + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 259 .loc 1 994 1 is_stmt 1 view -0 + 260 .cfi_startproc + 261 @ args = 0, pretend = 0, frame = 0 + 262 @ frame_needed = 0, uses_anonymous_args = 0 + 263 @ link register save eliminated. + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Return the FLASH BOR level */ + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return ((uint32_t)(FLASH->OPTCR & 0x0C)); + 264 .loc 1 996 3 view .LVU49 + 265 .loc 1 996 27 is_stmt 0 view .LVU50 + 266 0000 024B ldr r3, .L24 + 267 0002 5869 ldr r0, [r3, #20] + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 268 .loc 1 997 1 view .LVU51 + 269 0004 00F00C00 and r0, r0, #12 + 270 0008 7047 bx lr + 271 .L25: + 272 000a 00BF .align 2 + 273 .L24: + 274 000c 003C0240 .word 1073888256 + 275 .cfi_endproc + 276 .LFE156: + 278 .section .text.FLASH_OB_GetBootAddress,"ax",%progbits + 279 .align 1 + 280 .syntax unified + 281 .thumb + 282 .thumb_func + 283 .fpu fpv5-d16 + 285 FLASH_OB_GetBootAddress: + 286 .LVL10: + 287 .LFB157: + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @brief Configure Boot base address. +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @param BootOption specifies Boot base address depending from Boot pin = 0 or pin = 1 +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * This parameter can be one of the following values: +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OPTIONBYTE_BOOTADDR_0 : Boot address based when Boot pin = 0 +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @arg OPTIONBYTE_BOOTADDR_1 : Boot address based when Boot pin = 1 +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * @retval uint32_t Boot Base Address: +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOOTADDR_ITCM_RAM : Boot from ITCM RAM (0x00000000) + ARM GAS /tmp/cctoWaKX.s page 39 + + +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOOTADDR_SYSTEM : Boot from System memory bootloader (0x00100000) +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOOTADDR_ITCM_FLASH : Boot from Flash on ITCM interface (0x00200000) +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOOTADDR_AXIM_FLASH : Boot from Flash on AXIM interface (0x08000000) +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOOTADDR_DTCM_RAM : Boot from DTCM RAM (0x20000000) +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOOTADDR_SRAM1 : Boot from SRAM1 (0x20010000) +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** * - OB_BOOTADDR_SRAM2 : Boot from SRAM2 (0x2004C000) +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** */ +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetBootAddress(uint32_t BootOption) +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 288 .loc 1 1017 1 is_stmt 1 view -0 + 289 .cfi_startproc + 290 @ args = 0, pretend = 0, frame = 0 + 291 @ frame_needed = 0, uses_anonymous_args = 0 + 292 @ link register save eliminated. +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t Address = 0; + 293 .loc 1 1018 3 view .LVU53 +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /* Return the Boot base Address */ +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(BootOption == OPTIONBYTE_BOOTADDR_0) + 294 .loc 1 1021 3 view .LVU54 + 295 .loc 1 1021 5 is_stmt 0 view .LVU55 + 296 0000 1028 cmp r0, #16 + 297 0002 03D0 beq .L29 +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** Address = FLASH->OPTCR1 & FLASH_OPTCR1_BOOT_ADD0; +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** else +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** Address = ((FLASH->OPTCR1 & FLASH_OPTCR1_BOOT_ADD1) >> 16); + 298 .loc 1 1027 3 is_stmt 1 view .LVU56 + 299 .loc 1 1027 20 is_stmt 0 view .LVU57 + 300 0004 034B ldr r3, .L30 + 301 0006 9869 ldr r0, [r3, #24] + 302 .LVL11: + 303 .loc 1 1027 55 view .LVU58 + 304 0008 000C lsrs r0, r0, #16 + 305 .LVL12: +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** return Address; + 306 .loc 1 1030 3 is_stmt 1 view .LVU59 +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 307 .loc 1 1031 1 is_stmt 0 view .LVU60 + 308 000a 7047 bx lr + 309 .LVL13: + 310 .L29: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 311 .loc 1 1023 5 is_stmt 1 view .LVU61 +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 312 .loc 1 1023 20 is_stmt 0 view .LVU62 + 313 000c 014B ldr r3, .L30 + 314 000e 9869 ldr r0, [r3, #24] + 315 .LVL14: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 316 .loc 1 1023 13 view .LVU63 + 317 0010 80B2 uxth r0, r0 + 318 .LVL15: + ARM GAS /tmp/cctoWaKX.s page 40 + + +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 319 .loc 1 1023 13 view .LVU64 + 320 0012 7047 bx lr + 321 .L31: + 322 .align 2 + 323 .L30: + 324 0014 003C0240 .word 1073888256 + 325 .cfi_endproc + 326 .LFE157: + 328 .section .text.FLASH_OB_EnableWRP,"ax",%progbits + 329 .align 1 + 330 .syntax unified + 331 .thumb + 332 .thumb_func + 333 .fpu fpv5-d16 + 335 FLASH_OB_EnableWRP: + 336 .LVL16: + 337 .LFB150: + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 338 .loc 1 807 1 is_stmt 1 view -0 + 339 .cfi_startproc + 340 @ args = 0, pretend = 0, frame = 0 + 341 @ frame_needed = 0, uses_anonymous_args = 0 + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 342 .loc 1 807 1 is_stmt 0 view .LVU66 + 343 0000 10B5 push {r4, lr} + 344 .LCFI0: + 345 .cfi_def_cfa_offset 8 + 346 .cfi_offset 4, -8 + 347 .cfi_offset 14, -4 + 348 0002 0446 mov r4, r0 + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 349 .loc 1 808 3 is_stmt 1 view .LVU67 + 350 .LVL17: + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 351 .loc 1 811 3 view .LVU68 + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 352 .loc 1 814 3 view .LVU69 + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 353 .loc 1 814 12 is_stmt 0 view .LVU70 + 354 0004 4CF25030 movw r0, #50000 + 355 .LVL18: + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 356 .loc 1 814 12 view .LVU71 + 357 0008 FFF7FEFF bl FLASH_WaitForLastOperation + 358 .LVL19: + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 359 .loc 1 816 3 is_stmt 1 view .LVU72 + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 360 .loc 1 816 5 is_stmt 0 view .LVU73 + 361 000c 20B9 cbnz r0, .L33 + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 362 .loc 1 819 5 is_stmt 1 view .LVU74 + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 363 .loc 1 819 18 is_stmt 0 view .LVU75 + 364 000e 034A ldr r2, .L35 + 365 0010 5369 ldr r3, [r2, #20] + ARM GAS /tmp/cctoWaKX.s page 41 + + + 366 0012 23EA0404 bic r4, r3, r4 + 367 .LVL20: + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 368 .loc 1 819 18 view .LVU76 + 369 0016 5461 str r4, [r2, #20] + 370 .L33: + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 371 .loc 1 822 3 is_stmt 1 view .LVU77 + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 372 .loc 1 823 1 is_stmt 0 view .LVU78 + 373 0018 10BD pop {r4, pc} + 374 .L36: + 375 001a 00BF .align 2 + 376 .L35: + 377 001c 003C0240 .word 1073888256 + 378 .cfi_endproc + 379 .LFE150: + 381 .section .text.FLASH_OB_DisableWRP,"ax",%progbits + 382 .align 1 + 383 .syntax unified + 384 .thumb + 385 .thumb_func + 386 .fpu fpv5-d16 + 388 FLASH_OB_DisableWRP: + 389 .LVL21: + 390 .LFB151: + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 391 .loc 1 843 1 is_stmt 1 view -0 + 392 .cfi_startproc + 393 @ args = 0, pretend = 0, frame = 0 + 394 @ frame_needed = 0, uses_anonymous_args = 0 + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 395 .loc 1 843 1 is_stmt 0 view .LVU80 + 396 0000 10B5 push {r4, lr} + 397 .LCFI1: + 398 .cfi_def_cfa_offset 8 + 399 .cfi_offset 4, -8 + 400 .cfi_offset 14, -4 + 401 0002 0446 mov r4, r0 + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 402 .loc 1 844 3 is_stmt 1 view .LVU81 + 403 .LVL22: + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 404 .loc 1 847 3 view .LVU82 + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 405 .loc 1 850 3 view .LVU83 + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 406 .loc 1 850 12 is_stmt 0 view .LVU84 + 407 0004 4CF25030 movw r0, #50000 + 408 .LVL23: + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 409 .loc 1 850 12 view .LVU85 + 410 0008 FFF7FEFF bl FLASH_WaitForLastOperation + 411 .LVL24: + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 412 .loc 1 852 3 is_stmt 1 view .LVU86 + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + ARM GAS /tmp/cctoWaKX.s page 42 + + + 413 .loc 1 852 5 is_stmt 0 view .LVU87 + 414 000c 18B9 cbnz r0, .L38 + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 415 .loc 1 855 5 is_stmt 1 view .LVU88 + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 416 .loc 1 855 18 is_stmt 0 view .LVU89 + 417 000e 024A ldr r2, .L40 + 418 0010 5369 ldr r3, [r2, #20] + 419 0012 1C43 orrs r4, r4, r3 + 420 .LVL25: + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 421 .loc 1 855 18 view .LVU90 + 422 0014 5461 str r4, [r2, #20] + 423 .L38: + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 424 .loc 1 858 3 is_stmt 1 view .LVU91 + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 425 .loc 1 859 1 is_stmt 0 view .LVU92 + 426 0016 10BD pop {r4, pc} + 427 .L41: + 428 .align 2 + 429 .L40: + 430 0018 003C0240 .word 1073888256 + 431 .cfi_endproc + 432 .LFE151: + 434 .section .text.FLASH_OB_RDP_LevelConfig,"ax",%progbits + 435 .align 1 + 436 .syntax unified + 437 .thumb + 438 .thumb_func + 439 .fpu fpv5-d16 + 441 FLASH_OB_RDP_LevelConfig: + 442 .LVL26: + 443 .LFB152: + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 444 .loc 1 874 1 is_stmt 1 view -0 + 445 .cfi_startproc + 446 @ args = 0, pretend = 0, frame = 0 + 447 @ frame_needed = 0, uses_anonymous_args = 0 + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 448 .loc 1 874 1 is_stmt 0 view .LVU94 + 449 0000 10B5 push {r4, lr} + 450 .LCFI2: + 451 .cfi_def_cfa_offset 8 + 452 .cfi_offset 4, -8 + 453 .cfi_offset 14, -4 + 454 0002 0446 mov r4, r0 + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 455 .loc 1 875 3 is_stmt 1 view .LVU95 + 456 .LVL27: + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 457 .loc 1 878 3 view .LVU96 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 458 .loc 1 881 3 view .LVU97 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 459 .loc 1 881 12 is_stmt 0 view .LVU98 + 460 0004 4CF25030 movw r0, #50000 + ARM GAS /tmp/cctoWaKX.s page 43 + + + 461 .LVL28: + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 462 .loc 1 881 12 view .LVU99 + 463 0008 FFF7FEFF bl FLASH_WaitForLastOperation + 464 .LVL29: + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 465 .loc 1 883 3 is_stmt 1 view .LVU100 + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 466 .loc 1 883 5 is_stmt 0 view .LVU101 + 467 000c 08B9 cbnz r0, .L43 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 468 .loc 1 885 5 is_stmt 1 view .LVU102 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 469 .loc 1 885 41 is_stmt 0 view .LVU103 + 470 000e 014B ldr r3, .L45 + 471 0010 5C75 strb r4, [r3, #21] + 472 .L43: + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 473 .loc 1 888 3 is_stmt 1 view .LVU104 + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 474 .loc 1 889 1 is_stmt 0 view .LVU105 + 475 0012 10BD pop {r4, pc} + 476 .L46: + 477 .align 2 + 478 .L45: + 479 0014 003C0240 .word 1073888256 + 480 .cfi_endproc + 481 .LFE152: + 483 .section .text.FLASH_OB_UserConfig,"ax",%progbits + 484 .align 1 + 485 .syntax unified + 486 .thumb + 487 .thumb_func + 488 .fpu fpv5-d16 + 490 FLASH_OB_UserConfig: + 491 .LVL30: + 492 .LFB148: + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t useroptionmask = 0x00; + 493 .loc 1 578 1 is_stmt 1 view -0 + 494 .cfi_startproc + 495 @ args = 16, pretend = 0, frame = 0 + 496 @ frame_needed = 0, uses_anonymous_args = 0 + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t useroptionmask = 0x00; + 497 .loc 1 578 1 is_stmt 0 view .LVU107 + 498 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 499 .LCFI3: + 500 .cfi_def_cfa_offset 24 + 501 .cfi_offset 3, -24 + 502 .cfi_offset 4, -20 + 503 .cfi_offset 5, -16 + 504 .cfi_offset 6, -12 + 505 .cfi_offset 7, -8 + 506 .cfi_offset 14, -4 + 507 0002 0746 mov r7, r0 + 508 0004 0C46 mov r4, r1 + 509 0006 1646 mov r6, r2 + 510 0008 1D46 mov r5, r3 + ARM GAS /tmp/cctoWaKX.s page 44 + + + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t useroptionvalue = 0x00; + 511 .loc 1 579 3 is_stmt 1 view .LVU108 + 512 .LVL31: + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 513 .loc 1 580 3 view .LVU109 + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 514 .loc 1 582 3 view .LVU110 + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_SOURCE(Iwdg)); + 515 .loc 1 585 3 view .LVU111 + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_STOP_SOURCE(Stop)); + 516 .loc 1 586 3 view .LVU112 + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_STDBY_SOURCE(Stdby)); + 517 .loc 1 587 3 view .LVU113 + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_STOP_FREEZE(Iwdgstop)); + 518 .loc 1 588 3 view .LVU114 + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_STDBY_FREEZE(Iwdgstdby)); + 519 .loc 1 589 3 view .LVU115 + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_NDBANK(NDBank)); + 520 .loc 1 590 3 view .LVU116 + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_OB_NDBOOT(NDBoot)); + 521 .loc 1 591 3 view .LVU117 + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 522 .loc 1 592 3 view .LVU118 + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 523 .loc 1 595 3 view .LVU119 + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 524 .loc 1 595 12 is_stmt 0 view .LVU120 + 525 000a 4CF25030 movw r0, #50000 + 526 .LVL32: + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 527 .loc 1 595 12 view .LVU121 + 528 000e FFF7FEFF bl FLASH_WaitForLastOperation + 529 .LVL33: + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 530 .loc 1 597 3 is_stmt 1 view .LVU122 + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 531 .loc 1 597 5 is_stmt 0 view .LVU123 + 532 0012 90B9 cbnz r0, .L48 + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_OPTCR_nRST_STDBY | FLASH_OPTCR_IWDG_STOP | FLASH_OPTCR_IWDG_STDBY | \ + 533 .loc 1 599 5 is_stmt 1 view .LVU124 + 534 .LVL34: + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 535 .loc 1 603 5 view .LVU125 + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 536 .loc 1 603 29 is_stmt 0 view .LVU126 + 537 0014 44EA0701 orr r1, r4, r7 + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 538 .loc 1 603 36 view .LVU127 + 539 0018 3143 orrs r1, r1, r6 + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 540 .loc 1 603 43 view .LVU128 + 541 001a 41EA0503 orr r3, r1, r5 + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 542 .loc 1 603 51 view .LVU129 + 543 001e 069C ldr r4, [sp, #24] + 544 .LVL35: + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + ARM GAS /tmp/cctoWaKX.s page 45 + + + 545 .loc 1 603 51 view .LVU130 + 546 0020 2343 orrs r3, r3, r4 + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 547 .loc 1 603 62 view .LVU131 + 548 0022 079A ldr r2, [sp, #28] + 549 0024 1343 orrs r3, r3, r2 + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 550 .loc 1 603 74 view .LVU132 + 551 0026 099A ldr r2, [sp, #36] + 552 0028 1343 orrs r3, r3, r2 + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 553 .loc 1 603 21 view .LVU133 + 554 002a 089A ldr r2, [sp, #32] + 555 002c 1343 orrs r3, r3, r2 + 556 .LVL36: + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 557 .loc 1 606 5 is_stmt 1 view .LVU134 + 558 002e 0349 ldr r1, .L50 + 559 0030 4C69 ldr r4, [r1, #20] + 560 0032 034A ldr r2, .L50+4 + 561 0034 2240 ands r2, r2, r4 + 562 0036 1343 orrs r3, r3, r2 + 563 .LVL37: + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 564 .loc 1 606 5 is_stmt 0 view .LVU135 + 565 0038 4B61 str r3, [r1, #20] + 566 .LVL38: + 567 .L48: + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 568 .loc 1 609 3 is_stmt 1 view .LVU136 + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 569 .loc 1 610 1 is_stmt 0 view .LVU137 + 570 003a F8BD pop {r3, r4, r5, r6, r7, pc} + 571 .LVL39: + 572 .L51: + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 573 .loc 1 610 1 view .LVU138 + 574 .align 2 + 575 .L50: + 576 003c 003C0240 .word 1073888256 + 577 0040 0FFFFF0F .word 268435215 + 578 .cfi_endproc + 579 .LFE148: + 581 .section .text.FLASH_OB_BootAddressConfig,"ax",%progbits + 582 .align 1 + 583 .syntax unified + 584 .thumb + 585 .thumb_func + 586 .fpu fpv5-d16 + 588 FLASH_OB_BootAddressConfig: + 589 .LVL40: + 590 .LFB154: + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 591 .loc 1 933 1 is_stmt 1 view -0 + 592 .cfi_startproc + 593 @ args = 0, pretend = 0, frame = 0 + 594 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/cctoWaKX.s page 46 + + + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 595 .loc 1 933 1 is_stmt 0 view .LVU140 + 596 0000 38B5 push {r3, r4, r5, lr} + 597 .LCFI4: + 598 .cfi_def_cfa_offset 16 + 599 .cfi_offset 3, -16 + 600 .cfi_offset 4, -12 + 601 .cfi_offset 5, -8 + 602 .cfi_offset 14, -4 + 603 0002 0446 mov r4, r0 + 604 0004 0D46 mov r5, r1 + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 605 .loc 1 934 3 is_stmt 1 view .LVU141 + 606 .LVL41: + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 607 .loc 1 937 3 view .LVU142 + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 608 .loc 1 940 3 view .LVU143 + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 609 .loc 1 940 12 is_stmt 0 view .LVU144 + 610 0006 4CF25030 movw r0, #50000 + 611 .LVL42: + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 612 .loc 1 940 12 view .LVU145 + 613 000a FFF7FEFF bl FLASH_WaitForLastOperation + 614 .LVL43: + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 615 .loc 1 942 3 is_stmt 1 view .LVU146 + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 616 .loc 1 942 5 is_stmt 0 view .LVU147 + 617 000e 38B9 cbnz r0, .L53 + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 618 .loc 1 944 5 is_stmt 1 view .LVU148 + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 619 .loc 1 944 7 is_stmt 0 view .LVU149 + 620 0010 102C cmp r4, #16 + 621 0012 06D0 beq .L56 + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 622 .loc 1 950 7 is_stmt 1 view .LVU150 + 623 0014 064B ldr r3, .L57 + 624 0016 9969 ldr r1, [r3, #24] + 625 0018 89B2 uxth r1, r1 + 626 001a 41EA0541 orr r1, r1, r5, lsl #16 + 627 001e 9961 str r1, [r3, #24] + 628 .L53: + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 629 .loc 1 954 3 view .LVU151 + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 630 .loc 1 955 1 is_stmt 0 view .LVU152 + 631 0020 38BD pop {r3, r4, r5, pc} + 632 .LVL44: + 633 .L56: + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 634 .loc 1 946 7 is_stmt 1 view .LVU153 + 635 0022 034B ldr r3, .L57 + 636 0024 9A69 ldr r2, [r3, #24] + 637 0026 0349 ldr r1, .L57+4 + ARM GAS /tmp/cctoWaKX.s page 47 + + + 638 0028 1140 ands r1, r1, r2 + 639 002a 2943 orrs r1, r1, r5 + 640 002c 9961 str r1, [r3, #24] + 641 002e F7E7 b .L53 + 642 .L58: + 643 .align 2 + 644 .L57: + 645 0030 003C0240 .word 1073888256 + 646 0034 0000FFFF .word -65536 + 647 .cfi_endproc + 648 .LFE154: + 650 .section .text.HAL_FLASHEx_OBProgram,"ax",%progbits + 651 .align 1 + 652 .global HAL_FLASHEx_OBProgram + 653 .syntax unified + 654 .thumb + 655 .thumb_func + 656 .fpu fpv5-d16 + 658 HAL_FLASHEx_OBProgram: + 659 .LVL45: + 660 .LFB143: + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; + 661 .loc 1 286 1 view -0 + 662 .cfi_startproc + 663 @ args = 0, pretend = 0, frame = 0 + 664 @ frame_needed = 0, uses_anonymous_args = 0 + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 665 .loc 1 287 3 view .LVU155 + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 666 .loc 1 290 3 view .LVU156 + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 667 .loc 1 290 3 view .LVU157 + 668 0000 2F4B ldr r3, .L80 + 669 0002 1B7D ldrb r3, [r3, #20] @ zero_extendqisi2 + 670 0004 012B cmp r3, #1 + 671 0006 58D0 beq .L68 + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; + 672 .loc 1 286 1 is_stmt 0 discriminator 2 view .LVU158 + 673 0008 10B5 push {r4, lr} + 674 .LCFI5: + 675 .cfi_def_cfa_offset 8 + 676 .cfi_offset 4, -8 + 677 .cfi_offset 14, -4 + 678 000a 84B0 sub sp, sp, #16 + 679 .LCFI6: + 680 .cfi_def_cfa_offset 24 + 681 000c 0446 mov r4, r0 + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 682 .loc 1 290 3 is_stmt 1 discriminator 2 view .LVU159 + 683 000e 2C4B ldr r3, .L80 + 684 0010 0122 movs r2, #1 + 685 0012 1A75 strb r2, [r3, #20] + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 686 .loc 1 290 3 discriminator 2 view .LVU160 + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 687 .loc 1 293 3 discriminator 2 view .LVU161 + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + ARM GAS /tmp/cctoWaKX.s page 48 + + + 688 .loc 1 296 3 discriminator 2 view .LVU162 + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 689 .loc 1 296 14 is_stmt 0 discriminator 2 view .LVU163 + 690 0014 0368 ldr r3, [r0] + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 691 .loc 1 296 5 discriminator 2 view .LVU164 + 692 0016 13F0010F tst r3, #1 + 693 001a 0AD0 beq .L69 + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** if(pOBInit->WRPState == OB_WRPSTATE_ENABLE) + 694 .loc 1 298 5 is_stmt 1 view .LVU165 + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 695 .loc 1 299 5 view .LVU166 + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 696 .loc 1 299 15 is_stmt 0 view .LVU167 + 697 001c 4368 ldr r3, [r0, #4] + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 698 .loc 1 299 7 view .LVU168 + 699 001e 9342 cmp r3, r2 + 700 0020 03D0 beq .L74 + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 701 .loc 1 307 7 is_stmt 1 view .LVU169 + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 702 .loc 1 307 16 is_stmt 0 view .LVU170 + 703 0022 8068 ldr r0, [r0, #8] + 704 .LVL46: + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 705 .loc 1 307 16 view .LVU171 + 706 0024 FFF7FEFF bl FLASH_OB_DisableWRP + 707 .LVL47: + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 708 .loc 1 307 16 view .LVU172 + 709 0028 04E0 b .L61 + 710 .LVL48: + 711 .L74: + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 712 .loc 1 302 7 is_stmt 1 view .LVU173 + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 713 .loc 1 302 16 is_stmt 0 view .LVU174 + 714 002a 8068 ldr r0, [r0, #8] + 715 .LVL49: + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 716 .loc 1 302 16 view .LVU175 + 717 002c FFF7FEFF bl FLASH_OB_EnableWRP + 718 .LVL50: + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 719 .loc 1 302 16 view .LVU176 + 720 0030 00E0 b .L61 + 721 .LVL51: + 722 .L69: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 723 .loc 1 287 21 view .LVU177 + 724 0032 0120 movs r0, #1 + 725 .LVL52: + 726 .L61: + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 727 .loc 1 312 3 is_stmt 1 view .LVU178 + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + ARM GAS /tmp/cctoWaKX.s page 49 + + + 728 .loc 1 312 14 is_stmt 0 view .LVU179 + 729 0034 2368 ldr r3, [r4] + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 730 .loc 1 312 5 view .LVU180 + 731 0036 13F0020F tst r3, #2 + 732 003a 14D1 bne .L75 + 733 .L63: + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 734 .loc 1 318 3 is_stmt 1 view .LVU181 + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 735 .loc 1 318 14 is_stmt 0 view .LVU182 + 736 003c 2368 ldr r3, [r4] + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 737 .loc 1 318 5 view .LVU183 + 738 003e 13F0040F tst r3, #4 + 739 0042 14D1 bne .L76 + 740 .L64: + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 741 .loc 1 340 3 is_stmt 1 view .LVU184 + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 742 .loc 1 340 14 is_stmt 0 view .LVU185 + 743 0044 2368 ldr r3, [r4] + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 744 .loc 1 340 5 view .LVU186 + 745 0046 13F0080F tst r3, #8 + 746 004a 28D1 bne .L77 + 747 .L65: + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 748 .loc 1 346 3 is_stmt 1 view .LVU187 + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 749 .loc 1 346 14 is_stmt 0 view .LVU188 + 750 004c 2368 ldr r3, [r4] + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 751 .loc 1 346 5 view .LVU189 + 752 004e 13F0100F tst r3, #16 + 753 0052 28D1 bne .L78 + 754 .L66: + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 755 .loc 1 352 3 is_stmt 1 view .LVU190 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 756 .loc 1 352 14 is_stmt 0 view .LVU191 + 757 0054 2368 ldr r3, [r4] + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 758 .loc 1 352 5 view .LVU192 + 759 0056 13F0200F tst r3, #32 + 760 005a 29D1 bne .L79 + 761 .L67: + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 762 .loc 1 372 3 is_stmt 1 view .LVU193 + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 763 .loc 1 372 3 view .LVU194 + 764 005c 184B ldr r3, .L80 + 765 005e 0022 movs r2, #0 + 766 0060 1A75 strb r2, [r3, #20] + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 767 .loc 1 372 3 view .LVU195 + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + ARM GAS /tmp/cctoWaKX.s page 50 + + + 768 .loc 1 374 3 view .LVU196 + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 769 .loc 1 375 1 is_stmt 0 view .LVU197 + 770 0062 04B0 add sp, sp, #16 + 771 .LCFI7: + 772 .cfi_remember_state + 773 .cfi_def_cfa_offset 8 + 774 @ sp needed + 775 0064 10BD pop {r4, pc} + 776 .LVL53: + 777 .L75: + 778 .LCFI8: + 779 .cfi_restore_state + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 780 .loc 1 314 5 is_stmt 1 view .LVU198 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 781 .loc 1 314 14 is_stmt 0 view .LVU199 + 782 0066 207B ldrb r0, [r4, #12] @ zero_extendqisi2 + 783 .LVL54: + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 784 .loc 1 314 14 view .LVU200 + 785 0068 FFF7FEFF bl FLASH_OB_RDP_LevelConfig + 786 .LVL55: + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 787 .loc 1 314 14 view .LVU201 + 788 006c E6E7 b .L63 + 789 .L76: + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_IWDG_SW, + 790 .loc 1 321 5 is_stmt 1 view .LVU202 + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_IWDG_SW, + 791 .loc 1 321 41 is_stmt 0 view .LVU203 + 792 006e 6069 ldr r0, [r4, #20] + 793 .LVL56: + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_IWDG_SW, + 794 .loc 1 321 14 view .LVU204 + 795 0070 00F08053 and r3, r0, #268435456 + 796 0074 0393 str r3, [sp, #12] + 797 0076 00F00053 and r3, r0, #536870912 + 798 007a 0293 str r3, [sp, #8] + 799 007c 00F08043 and r3, r0, #1073741824 + 800 0080 0193 str r3, [sp, #4] + 801 0082 00F00043 and r3, r0, #-2147483648 + 802 0086 0093 str r3, [sp] + 803 0088 00F08003 and r3, r0, #128 + 804 008c 00F04002 and r2, r0, #64 + 805 0090 00F02001 and r1, r0, #32 + 806 0094 00F01000 and r0, r0, #16 + 807 0098 FFF7FEFF bl FLASH_OB_UserConfig + 808 .LVL57: + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_IWDG_SW, + 809 .loc 1 321 14 view .LVU205 + 810 009c D2E7 b .L64 + 811 .L77: + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 812 .loc 1 342 5 is_stmt 1 view .LVU206 + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 813 .loc 1 342 14 is_stmt 0 view .LVU207 + ARM GAS /tmp/cctoWaKX.s page 51 + + + 814 009e 207C ldrb r0, [r4, #16] @ zero_extendqisi2 + 815 .LVL58: + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 816 .loc 1 342 14 view .LVU208 + 817 00a0 FFF7FEFF bl FLASH_OB_BOR_LevelConfig + 818 .LVL59: + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 819 .loc 1 342 14 view .LVU209 + 820 00a4 D2E7 b .L65 + 821 .L78: + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 822 .loc 1 348 5 is_stmt 1 view .LVU210 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 823 .loc 1 348 14 is_stmt 0 view .LVU211 + 824 00a6 A169 ldr r1, [r4, #24] + 825 00a8 1020 movs r0, #16 + 826 .LVL60: + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 827 .loc 1 348 14 view .LVU212 + 828 00aa FFF7FEFF bl FLASH_OB_BootAddressConfig + 829 .LVL61: + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 830 .loc 1 348 14 view .LVU213 + 831 00ae D1E7 b .L66 + 832 .L79: + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 833 .loc 1 354 5 is_stmt 1 view .LVU214 + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 834 .loc 1 354 14 is_stmt 0 view .LVU215 + 835 00b0 E169 ldr r1, [r4, #28] + 836 00b2 2020 movs r0, #32 + 837 .LVL62: + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 838 .loc 1 354 14 view .LVU216 + 839 00b4 FFF7FEFF bl FLASH_OB_BootAddressConfig + 840 .LVL63: + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 841 .loc 1 354 14 view .LVU217 + 842 00b8 D0E7 b .L67 + 843 .LVL64: + 844 .L68: + 845 .LCFI9: + 846 .cfi_def_cfa_offset 0 + 847 .cfi_restore 4 + 848 .cfi_restore 14 + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 849 .loc 1 290 3 view .LVU218 + 850 00ba 0220 movs r0, #2 + 851 .LVL65: + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 852 .loc 1 375 1 view .LVU219 + 853 00bc 7047 bx lr + 854 .L81: + 855 00be 00BF .align 2 + 856 .L80: + 857 00c0 00000000 .word pFlash + 858 .cfi_endproc + ARM GAS /tmp/cctoWaKX.s page 52 + + + 859 .LFE143: + 861 .section .text.HAL_FLASHEx_OBGetConfig,"ax",%progbits + 862 .align 1 + 863 .global HAL_FLASHEx_OBGetConfig + 864 .syntax unified + 865 .thumb + 866 .thumb_func + 867 .fpu fpv5-d16 + 869 HAL_FLASHEx_OBGetConfig: + 870 .LVL66: + 871 .LFB144: + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->OptionType = OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER |\ + 872 .loc 1 385 1 is_stmt 1 view -0 + 873 .cfi_startproc + 874 @ args = 0, pretend = 0, frame = 0 + 875 @ frame_needed = 0, uses_anonymous_args = 0 + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pOBInit->OptionType = OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER |\ + 876 .loc 1 385 1 is_stmt 0 view .LVU221 + 877 0000 10B5 push {r4, lr} + 878 .LCFI10: + 879 .cfi_def_cfa_offset 8 + 880 .cfi_offset 4, -8 + 881 .cfi_offset 14, -4 + 882 0002 0446 mov r4, r0 + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** OPTIONBYTE_BOR | OPTIONBYTE_BOOTADDR_0 | OPTIONBYTE_BOOTADDR_1; + 883 .loc 1 386 3 is_stmt 1 view .LVU222 + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** OPTIONBYTE_BOR | OPTIONBYTE_BOOTADDR_0 | OPTIONBYTE_BOOTADDR_1; + 884 .loc 1 386 23 is_stmt 0 view .LVU223 + 885 0004 3F23 movs r3, #63 + 886 0006 0360 str r3, [r0] + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 887 .loc 1 390 3 is_stmt 1 view .LVU224 + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 888 .loc 1 390 24 is_stmt 0 view .LVU225 + 889 0008 FFF7FEFF bl FLASH_OB_GetWRP + 890 .LVL67: + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 891 .loc 1 390 22 view .LVU226 + 892 000c A060 str r0, [r4, #8] + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 893 .loc 1 393 3 is_stmt 1 view .LVU227 + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 894 .loc 1 393 23 is_stmt 0 view .LVU228 + 895 000e FFF7FEFF bl FLASH_OB_GetRDP + 896 .LVL68: + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 897 .loc 1 393 21 view .LVU229 + 898 0012 E060 str r0, [r4, #12] + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 899 .loc 1 396 3 is_stmt 1 view .LVU230 + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 900 .loc 1 396 25 is_stmt 0 view .LVU231 + 901 0014 FFF7FEFF bl FLASH_OB_GetUser + 902 .LVL69: + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 903 .loc 1 396 23 view .LVU232 + 904 0018 6061 str r0, [r4, #20] + ARM GAS /tmp/cctoWaKX.s page 53 + + + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 905 .loc 1 399 3 is_stmt 1 view .LVU233 + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 906 .loc 1 399 23 is_stmt 0 view .LVU234 + 907 001a FFF7FEFF bl FLASH_OB_GetBOR + 908 .LVL70: + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 909 .loc 1 399 21 view .LVU235 + 910 001e 2061 str r0, [r4, #16] + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 911 .loc 1 402 3 is_stmt 1 view .LVU236 + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 912 .loc 1 402 24 is_stmt 0 view .LVU237 + 913 0020 1020 movs r0, #16 + 914 0022 FFF7FEFF bl FLASH_OB_GetBootAddress + 915 .LVL71: + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 916 .loc 1 402 22 view .LVU238 + 917 0026 A061 str r0, [r4, #24] + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 918 .loc 1 405 3 is_stmt 1 view .LVU239 + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 919 .loc 1 405 24 is_stmt 0 view .LVU240 + 920 0028 2020 movs r0, #32 + 921 002a FFF7FEFF bl FLASH_OB_GetBootAddress + 922 .LVL72: + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 923 .loc 1 405 22 view .LVU241 + 924 002e E061 str r0, [r4, #28] + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 925 .loc 1 414 1 view .LVU242 + 926 0030 10BD pop {r4, pc} + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** /** + 927 .loc 1 414 1 view .LVU243 + 928 .cfi_endproc + 929 .LFE144: + 931 .section .text.FLASH_Erase_Sector,"ax",%progbits + 932 .align 1 + 933 .global FLASH_Erase_Sector + 934 .syntax unified + 935 .thumb + 936 .thumb_func + 937 .fpu fpv5-d16 + 939 FLASH_Erase_Sector: + 940 .LVL73: + 941 .LFB146: + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t tmp_psize = 0; + 942 .loc 1 487 1 is_stmt 1 view -0 + 943 .cfi_startproc + 944 @ args = 0, pretend = 0, frame = 0 + 945 @ frame_needed = 0, uses_anonymous_args = 0 + 946 @ link register save eliminated. + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 947 .loc 1 488 3 view .LVU245 + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** assert_param(IS_VOLTAGERANGE(VoltageRange)); + 948 .loc 1 491 3 view .LVU246 + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + ARM GAS /tmp/cctoWaKX.s page 54 + + + 949 .loc 1 492 3 view .LVU247 + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 950 .loc 1 494 3 view .LVU248 + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 951 .loc 1 494 5 is_stmt 0 view .LVU249 + 952 0000 49B1 cbz r1, .L87 + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 953 .loc 1 498 8 is_stmt 1 view .LVU250 + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 954 .loc 1 498 10 is_stmt 0 view .LVU251 + 955 0002 0129 cmp r1, #1 + 956 0004 26D0 beq .L88 + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 957 .loc 1 502 8 is_stmt 1 view .LVU252 + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 958 .loc 1 502 10 is_stmt 0 view .LVU253 + 959 0006 0229 cmp r1, #2 + 960 0008 02D0 beq .L90 + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 961 .loc 1 508 15 view .LVU254 + 962 000a 4FF4407C mov ip, #768 + 963 000e 04E0 b .L85 + 964 .L90: + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 965 .loc 1 504 15 view .LVU255 + 966 0010 4FF4007C mov ip, #512 + 967 0014 01E0 b .L85 + 968 .L87: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 969 .loc 1 496 16 view .LVU256 + 970 0016 4FF0000C mov ip, #0 + 971 .L85: + 972 .LVL74: + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 973 .loc 1 512 3 is_stmt 1 view .LVU257 + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 974 .loc 1 512 5 is_stmt 0 view .LVU258 + 975 001a 0B28 cmp r0, #11 + 976 001c 00D9 bls .L86 + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 977 .loc 1 514 5 is_stmt 1 view .LVU259 + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 978 .loc 1 514 12 is_stmt 0 view .LVU260 + 979 001e 0430 adds r0, r0, #4 + 980 .LVL75: + 981 .L86: + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= tmp_psize; + 982 .loc 1 518 3 is_stmt 1 view .LVU261 + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= tmp_psize; + 983 .loc 1 518 13 is_stmt 0 view .LVU262 + 984 0020 0E4B ldr r3, .L91 + 985 0022 1969 ldr r1, [r3, #16] + 986 .LVL76: + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= tmp_psize; + 987 .loc 1 518 13 view .LVU263 + 988 0024 21F44071 bic r1, r1, #768 + 989 0028 1961 str r1, [r3, #16] + ARM GAS /tmp/cctoWaKX.s page 55 + + + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_SNB); + 990 .loc 1 519 3 is_stmt 1 view .LVU264 + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_SNB); + 991 .loc 1 519 13 is_stmt 0 view .LVU265 + 992 002a 1A69 ldr r2, [r3, #16] + 993 002c 42EA0C02 orr r2, r2, ip + 994 0030 1A61 str r2, [r3, #16] + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_SER | (Sector << FLASH_CR_SNB_Pos); + 995 .loc 1 520 3 is_stmt 1 view .LVU266 + 996 0032 1A69 ldr r2, [r3, #16] + 997 0034 22F0F802 bic r2, r2, #248 + 998 0038 1A61 str r2, [r3, #16] + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_STRT; + 999 .loc 1 521 3 view .LVU267 + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_STRT; + 1000 .loc 1 521 13 is_stmt 0 view .LVU268 + 1001 003a 1A69 ldr r2, [r3, #16] + 1002 003c 42EAC000 orr r0, r2, r0, lsl #3 + 1003 .LVL77: + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH->CR |= FLASH_CR_STRT; + 1004 .loc 1 521 13 view .LVU269 + 1005 0040 40F00200 orr r0, r0, #2 + 1006 0044 1861 str r0, [r3, #16] + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1007 .loc 1 522 3 is_stmt 1 view .LVU270 + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1008 .loc 1 522 13 is_stmt 0 view .LVU271 + 1009 0046 1A69 ldr r2, [r3, #16] + 1010 0048 42F48032 orr r2, r2, #65536 + 1011 004c 1A61 str r2, [r3, #16] + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 1012 .loc 1 526 3 is_stmt 1 view .LVU272 + 1013 .LBB8: + 1014 .LBI8: + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 1015 .loc 2 877 27 view .LVU273 + 1016 .LBB9: + 1017 .loc 2 879 3 view .LVU274 + 1018 .syntax unified + 1019 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 1020 004e BFF34F8F dsb 0xF + 1021 @ 0 "" 2 + 1022 .thumb + 1023 .syntax unified + 1024 .LBE9: + 1025 .LBE8: + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1026 .loc 1 527 1 is_stmt 0 view .LVU275 + 1027 0052 7047 bx lr + 1028 .LVL78: + 1029 .L88: + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 1030 .loc 1 500 15 view .LVU276 + 1031 0054 4FF4807C mov ip, #256 + 1032 0058 DFE7 b .L85 + 1033 .L92: + 1034 005a 00BF .align 2 + ARM GAS /tmp/cctoWaKX.s page 56 + + + 1035 .L91: + 1036 005c 003C0240 .word 1073888256 + 1037 .cfi_endproc + 1038 .LFE146: + 1040 .section .text.HAL_FLASHEx_Erase,"ax",%progbits + 1041 .align 1 + 1042 .global HAL_FLASHEx_Erase + 1043 .syntax unified + 1044 .thumb + 1045 .thumb_func + 1046 .fpu fpv5-d16 + 1048 HAL_FLASHEx_Erase: + 1049 .LVL79: + 1050 .LFB141: + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; + 1051 .loc 1 157 1 is_stmt 1 view -0 + 1052 .cfi_startproc + 1053 @ args = 0, pretend = 0, frame = 0 + 1054 @ frame_needed = 0, uses_anonymous_args = 0 + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** uint32_t index = 0; + 1055 .loc 1 158 3 view .LVU278 + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1056 .loc 1 159 3 view .LVU279 + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1057 .loc 1 162 3 view .LVU280 + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1058 .loc 1 162 3 view .LVU281 + 1059 0000 224B ldr r3, .L107 + 1060 0002 1B7D ldrb r3, [r3, #20] @ zero_extendqisi2 + 1061 0004 012B cmp r3, #1 + 1062 0006 3DD0 beq .L100 + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; + 1063 .loc 1 157 1 is_stmt 0 discriminator 2 view .LVU282 + 1064 0008 70B5 push {r4, r5, r6, lr} + 1065 .LCFI11: + 1066 .cfi_def_cfa_offset 16 + 1067 .cfi_offset 4, -16 + 1068 .cfi_offset 5, -12 + 1069 .cfi_offset 6, -8 + 1070 .cfi_offset 14, -4 + 1071 000a 0446 mov r4, r0 + 1072 000c 0E46 mov r6, r1 + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1073 .loc 1 162 3 is_stmt 1 discriminator 2 view .LVU283 + 1074 000e 1F4B ldr r3, .L107 + 1075 0010 0122 movs r2, #1 + 1076 0012 1A75 strb r2, [r3, #20] + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1077 .loc 1 162 3 discriminator 2 view .LVU284 + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1078 .loc 1 165 3 discriminator 2 view .LVU285 + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1079 .loc 1 168 3 discriminator 2 view .LVU286 + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1080 .loc 1 168 12 is_stmt 0 discriminator 2 view .LVU287 + 1081 0014 4CF25030 movw r0, #50000 + 1082 .LVL80: + ARM GAS /tmp/cctoWaKX.s page 57 + + + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1083 .loc 1 168 12 discriminator 2 view .LVU288 + 1084 0018 FFF7FEFF bl FLASH_WaitForLastOperation + 1085 .LVL81: + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1086 .loc 1 170 3 is_stmt 1 discriminator 2 view .LVU289 + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1087 .loc 1 170 5 is_stmt 0 discriminator 2 view .LVU290 + 1088 001c 0146 mov r1, r0 + 1089 001e 60BB cbnz r0, .L95 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1090 .loc 1 173 5 is_stmt 1 view .LVU291 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1091 .loc 1 173 18 is_stmt 0 view .LVU292 + 1092 0020 4FF0FF33 mov r3, #-1 + 1093 0024 3360 str r3, [r6] + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1094 .loc 1 175 5 is_stmt 1 view .LVU293 + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1095 .loc 1 175 18 is_stmt 0 view .LVU294 + 1096 0026 2368 ldr r3, [r4] + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1097 .loc 1 175 7 view .LVU295 + 1098 0028 012B cmp r3, #1 + 1099 002a 16D0 beq .L105 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1100 .loc 1 193 7 is_stmt 1 view .LVU296 + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1101 .loc 1 196 7 view .LVU297 + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1102 .loc 1 196 17 is_stmt 0 view .LVU298 + 1103 002c A568 ldr r5, [r4, #8] + 1104 .LVL82: + 1105 .L97: + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1106 .loc 1 196 39 is_stmt 1 discriminator 1 view .LVU299 + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1107 .loc 1 196 58 is_stmt 0 discriminator 1 view .LVU300 + 1108 002e E368 ldr r3, [r4, #12] + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1109 .loc 1 196 82 discriminator 1 view .LVU301 + 1110 0030 A268 ldr r2, [r4, #8] + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1111 .loc 1 196 70 discriminator 1 view .LVU302 + 1112 0032 1344 add r3, r3, r2 + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1113 .loc 1 196 7 discriminator 1 view .LVU303 + 1114 0034 AB42 cmp r3, r5 + 1115 0036 20D9 bls .L95 + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1116 .loc 1 198 9 is_stmt 1 view .LVU304 + 1117 0038 217C ldrb r1, [r4, #16] @ zero_extendqisi2 + 1118 .LVL83: + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1119 .loc 1 198 9 is_stmt 0 view .LVU305 + 1120 003a 2846 mov r0, r5 + 1121 003c FFF7FEFF bl FLASH_Erase_Sector + ARM GAS /tmp/cctoWaKX.s page 58 + + + 1122 .LVL84: + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1123 .loc 1 201 9 is_stmt 1 view .LVU306 + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1124 .loc 1 201 18 is_stmt 0 view .LVU307 + 1125 0040 4CF25030 movw r0, #50000 + 1126 0044 FFF7FEFF bl FLASH_WaitForLastOperation + 1127 .LVL85: + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1128 .loc 1 204 9 is_stmt 1 view .LVU308 + 1129 0048 114A ldr r2, .L107+4 + 1130 004a 1369 ldr r3, [r2, #16] + 1131 004c 23F0FA03 bic r3, r3, #250 + 1132 0050 1361 str r3, [r2, #16] + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1133 .loc 1 206 9 view .LVU309 + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1134 .loc 1 206 11 is_stmt 0 view .LVU310 + 1135 0052 0146 mov r1, r0 + 1136 0054 80B9 cbnz r0, .L106 + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1137 .loc 1 196 93 is_stmt 1 discriminator 2 view .LVU311 + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1138 .loc 1 196 98 is_stmt 0 discriminator 2 view .LVU312 + 1139 0056 0135 adds r5, r5, #1 + 1140 .LVL86: + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1141 .loc 1 196 98 discriminator 2 view .LVU313 + 1142 0058 E9E7 b .L97 + 1143 .LVL87: + 1144 .L105: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #else + 1145 .loc 1 179 7 is_stmt 1 view .LVU314 + 1146 005a 6168 ldr r1, [r4, #4] + 1147 005c 207C ldrb r0, [r4, #16] @ zero_extendqisi2 + 1148 .LVL88: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #else + 1149 .loc 1 179 7 is_stmt 0 view .LVU315 + 1150 005e FFF7FEFF bl FLASH_MassErase + 1151 .LVL89: + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1152 .loc 1 185 7 is_stmt 1 view .LVU316 + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1153 .loc 1 185 16 is_stmt 0 view .LVU317 + 1154 0062 4CF25030 movw r0, #50000 + 1155 0066 FFF7FEFF bl FLASH_WaitForLastOperation + 1156 .LVL90: + 1157 006a 0146 mov r1, r0 + 1158 .LVL91: + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 1159 .loc 1 188 7 is_stmt 1 view .LVU318 + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 1160 .loc 1 188 17 is_stmt 0 view .LVU319 + 1161 006c 084A ldr r2, .L107+4 + 1162 006e 1069 ldr r0, [r2, #16] + 1163 0070 084B ldr r3, .L107+8 + 1164 0072 0340 ands r3, r3, r0 + ARM GAS /tmp/cctoWaKX.s page 59 + + + 1165 0074 1361 str r3, [r2, #16] + 1166 0076 00E0 b .L95 + 1167 .LVL92: + 1168 .L106: + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** break; + 1169 .loc 1 209 11 is_stmt 1 view .LVU320 + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** break; + 1170 .loc 1 209 24 is_stmt 0 view .LVU321 + 1171 0078 3560 str r5, [r6] + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 1172 .loc 1 210 11 is_stmt 1 view .LVU322 + 1173 .LVL93: + 1174 .L95: + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1175 .loc 1 217 3 view .LVU323 + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1176 .loc 1 217 3 view .LVU324 + 1177 007a 044B ldr r3, .L107 + 1178 007c 0022 movs r2, #0 + 1179 007e 1A75 strb r2, [r3, #20] + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1180 .loc 1 217 3 view .LVU325 + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 1181 .loc 1 219 3 view .LVU326 + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1182 .loc 1 220 1 is_stmt 0 view .LVU327 + 1183 0080 0846 mov r0, r1 + 1184 0082 70BD pop {r4, r5, r6, pc} + 1185 .LVL94: + 1186 .L100: + 1187 .LCFI12: + 1188 .cfi_def_cfa_offset 0 + 1189 .cfi_restore 4 + 1190 .cfi_restore 5 + 1191 .cfi_restore 6 + 1192 .cfi_restore 14 + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1193 .loc 1 162 3 view .LVU328 + 1194 0084 0221 movs r1, #2 + 1195 .LVL95: + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1196 .loc 1 220 1 view .LVU329 + 1197 0086 0846 mov r0, r1 + 1198 .LVL96: + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1199 .loc 1 220 1 view .LVU330 + 1200 0088 7047 bx lr + 1201 .L108: + 1202 008a 00BF .align 2 + 1203 .L107: + 1204 008c 00000000 .word pFlash + 1205 0090 003C0240 .word 1073888256 + 1206 0094 FB7FFFFF .word -32773 + 1207 .cfi_endproc + 1208 .LFE141: + 1210 .section .text.HAL_FLASHEx_Erase_IT,"ax",%progbits + 1211 .align 1 + ARM GAS /tmp/cctoWaKX.s page 60 + + + 1212 .global HAL_FLASHEx_Erase_IT + 1213 .syntax unified + 1214 .thumb + 1215 .thumb_func + 1216 .fpu fpv5-d16 + 1218 HAL_FLASHEx_Erase_IT: + 1219 .LVL97: + 1220 .LFB142: + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 1221 .loc 1 230 1 is_stmt 1 view -0 + 1222 .cfi_startproc + 1223 @ args = 0, pretend = 0, frame = 0 + 1224 @ frame_needed = 0, uses_anonymous_args = 0 + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 1225 .loc 1 230 1 is_stmt 0 view .LVU332 + 1226 0000 08B5 push {r3, lr} + 1227 .LCFI13: + 1228 .cfi_def_cfa_offset 8 + 1229 .cfi_offset 3, -8 + 1230 .cfi_offset 14, -4 + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1231 .loc 1 231 3 is_stmt 1 view .LVU333 + 1232 .LVL98: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1233 .loc 1 234 3 view .LVU334 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1234 .loc 1 234 3 view .LVU335 + 1235 0002 174B ldr r3, .L115 + 1236 0004 1B7D ldrb r3, [r3, #20] @ zero_extendqisi2 + 1237 0006 012B cmp r3, #1 + 1238 0008 27D0 beq .L112 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1239 .loc 1 234 3 discriminator 2 view .LVU336 + 1240 000a 154B ldr r3, .L115 + 1241 000c 0122 movs r2, #1 + 1242 000e 1A75 strb r2, [r3, #20] + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1243 .loc 1 234 3 discriminator 2 view .LVU337 + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1244 .loc 1 237 3 discriminator 2 view .LVU338 + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1245 .loc 1 240 3 discriminator 2 view .LVU339 + 1246 0010 144B ldr r3, .L115+4 + 1247 0012 1A69 ldr r2, [r3, #16] + 1248 0014 42F08072 orr r2, r2, #16777216 + 1249 0018 1A61 str r2, [r3, #16] + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1250 .loc 1 243 3 discriminator 2 view .LVU340 + 1251 001a 1A69 ldr r2, [r3, #16] + 1252 001c 42F00072 orr r2, r2, #33554432 + 1253 0020 1A61 str r2, [r3, #16] + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR| FLASH_FLAG_ERSERR); + 1254 .loc 1 246 3 discriminator 2 view .LVU341 + 1255 0022 F322 movs r2, #243 + 1256 0024 DA60 str r2, [r3, #12] + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1257 .loc 1 249 3 discriminator 2 view .LVU342 + ARM GAS /tmp/cctoWaKX.s page 61 + + + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1258 .loc 1 249 16 is_stmt 0 discriminator 2 view .LVU343 + 1259 0026 0368 ldr r3, [r0] + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** { + 1260 .loc 1 249 5 discriminator 2 view .LVU344 + 1261 0028 012B cmp r3, #1 + 1262 002a 0DD0 beq .L114 + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1263 .loc 1 264 5 is_stmt 1 view .LVU345 + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.NbSectorsToErase = pEraseInit->NbSectors; + 1264 .loc 1 266 5 view .LVU346 + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.NbSectorsToErase = pEraseInit->NbSectors; + 1265 .loc 1 266 29 is_stmt 0 view .LVU347 + 1266 002c 0C4B ldr r3, .L115 + 1267 002e 0122 movs r2, #1 + 1268 0030 1A70 strb r2, [r3] + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.Sector = pEraseInit->Sector; + 1269 .loc 1 267 5 is_stmt 1 view .LVU348 + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.Sector = pEraseInit->Sector; + 1270 .loc 1 267 41 is_stmt 0 view .LVU349 + 1271 0032 C268 ldr r2, [r0, #12] + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.Sector = pEraseInit->Sector; + 1272 .loc 1 267 29 view .LVU350 + 1273 0034 5A60 str r2, [r3, #4] + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.VoltageForErase = (uint8_t)pEraseInit->VoltageRange; + 1274 .loc 1 268 5 is_stmt 1 view .LVU351 + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.VoltageForErase = (uint8_t)pEraseInit->VoltageRange; + 1275 .loc 1 268 31 is_stmt 0 view .LVU352 + 1276 0036 8268 ldr r2, [r0, #8] + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** pFlash.VoltageForErase = (uint8_t)pEraseInit->VoltageRange; + 1277 .loc 1 268 19 view .LVU353 + 1278 0038 DA60 str r2, [r3, #12] + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1279 .loc 1 269 5 is_stmt 1 view .LVU354 + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1280 .loc 1 269 30 is_stmt 0 view .LVU355 + 1281 003a 017C ldrb r1, [r0, #16] @ zero_extendqisi2 + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1282 .loc 1 269 28 view .LVU356 + 1283 003c 1972 strb r1, [r3, #8] + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 1284 .loc 1 272 5 is_stmt 1 view .LVU357 + 1285 003e 8068 ldr r0, [r0, #8] + 1286 .LVL99: + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 1287 .loc 1 272 5 is_stmt 0 view .LVU358 + 1288 0040 FFF7FEFF bl FLASH_Erase_Sector + 1289 .LVL100: + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 1290 .loc 1 275 10 view .LVU359 + 1291 0044 0020 movs r0, #0 + 1292 .L110: + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1293 .loc 1 276 1 view .LVU360 + 1294 0046 08BD pop {r3, pc} + 1295 .LVL101: + 1296 .L114: + ARM GAS /tmp/cctoWaKX.s page 62 + + + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #if defined (FLASH_OPTCR_nDBANK) + 1297 .loc 1 252 5 is_stmt 1 view .LVU361 + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #if defined (FLASH_OPTCR_nDBANK) + 1298 .loc 1 252 29 is_stmt 0 view .LVU362 + 1299 0048 054B ldr r3, .L115 + 1300 004a 0222 movs r2, #2 + 1301 004c 1A70 strb r2, [r3] + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #else + 1302 .loc 1 254 5 is_stmt 1 view .LVU363 + 1303 004e 4168 ldr r1, [r0, #4] + 1304 0050 007C ldrb r0, [r0, #16] @ zero_extendqisi2 + 1305 .LVL102: + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** #else + 1306 .loc 1 254 5 is_stmt 0 view .LVU364 + 1307 0052 FFF7FEFF bl FLASH_MassErase + 1308 .LVL103: + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** } + 1309 .loc 1 275 10 view .LVU365 + 1310 0056 0020 movs r0, #0 + 1311 0058 F5E7 b .L110 + 1312 .LVL104: + 1313 .L112: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1314 .loc 1 234 3 view .LVU366 + 1315 005a 0220 movs r0, #2 + 1316 .LVL105: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c **** + 1317 .loc 1 234 3 view .LVU367 + 1318 005c F3E7 b .L110 + 1319 .L116: + 1320 005e 00BF .align 2 + 1321 .L115: + 1322 0060 00000000 .word pFlash + 1323 0064 003C0240 .word 1073888256 + 1324 .cfi_endproc + 1325 .LFE142: + 1327 .text + 1328 .Letext0: + 1329 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 1330 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 1331 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 1332 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h" + 1333 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h" + ARM GAS /tmp/cctoWaKX.s page 63 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_flash_ex.c + /tmp/cctoWaKX.s:17 .text.FLASH_MassErase:0000000000000000 $t + /tmp/cctoWaKX.s:24 .text.FLASH_MassErase:0000000000000000 FLASH_MassErase + /tmp/cctoWaKX.s:106 .text.FLASH_MassErase:0000000000000048 $d + /tmp/cctoWaKX.s:111 .text.FLASH_OB_GetWRP:0000000000000000 $t + /tmp/cctoWaKX.s:117 .text.FLASH_OB_GetWRP:0000000000000000 FLASH_OB_GetWRP + /tmp/cctoWaKX.s:135 .text.FLASH_OB_GetWRP:000000000000000c $d + /tmp/cctoWaKX.s:141 .text.FLASH_OB_GetUser:0000000000000000 $t + /tmp/cctoWaKX.s:147 .text.FLASH_OB_GetUser:0000000000000000 FLASH_OB_GetUser + /tmp/cctoWaKX.s:165 .text.FLASH_OB_GetUser:000000000000000c $d + /tmp/cctoWaKX.s:171 .text.FLASH_OB_BOR_LevelConfig:0000000000000000 $t + /tmp/cctoWaKX.s:177 .text.FLASH_OB_BOR_LevelConfig:0000000000000000 FLASH_OB_BOR_LevelConfig + /tmp/cctoWaKX.s:201 .text.FLASH_OB_BOR_LevelConfig:0000000000000010 $d + /tmp/cctoWaKX.s:206 .text.FLASH_OB_GetRDP:0000000000000000 $t + /tmp/cctoWaKX.s:212 .text.FLASH_OB_GetRDP:0000000000000000 FLASH_OB_GetRDP + /tmp/cctoWaKX.s:246 .text.FLASH_OB_GetRDP:0000000000000018 $d + /tmp/cctoWaKX.s:251 .text.FLASH_OB_GetBOR:0000000000000000 $t + /tmp/cctoWaKX.s:257 .text.FLASH_OB_GetBOR:0000000000000000 FLASH_OB_GetBOR + /tmp/cctoWaKX.s:274 .text.FLASH_OB_GetBOR:000000000000000c $d + /tmp/cctoWaKX.s:279 .text.FLASH_OB_GetBootAddress:0000000000000000 $t + /tmp/cctoWaKX.s:285 .text.FLASH_OB_GetBootAddress:0000000000000000 FLASH_OB_GetBootAddress + /tmp/cctoWaKX.s:324 .text.FLASH_OB_GetBootAddress:0000000000000014 $d + /tmp/cctoWaKX.s:329 .text.FLASH_OB_EnableWRP:0000000000000000 $t + /tmp/cctoWaKX.s:335 .text.FLASH_OB_EnableWRP:0000000000000000 FLASH_OB_EnableWRP + /tmp/cctoWaKX.s:377 .text.FLASH_OB_EnableWRP:000000000000001c $d + /tmp/cctoWaKX.s:382 .text.FLASH_OB_DisableWRP:0000000000000000 $t + /tmp/cctoWaKX.s:388 .text.FLASH_OB_DisableWRP:0000000000000000 FLASH_OB_DisableWRP + /tmp/cctoWaKX.s:430 .text.FLASH_OB_DisableWRP:0000000000000018 $d + /tmp/cctoWaKX.s:435 .text.FLASH_OB_RDP_LevelConfig:0000000000000000 $t + /tmp/cctoWaKX.s:441 .text.FLASH_OB_RDP_LevelConfig:0000000000000000 FLASH_OB_RDP_LevelConfig + /tmp/cctoWaKX.s:479 .text.FLASH_OB_RDP_LevelConfig:0000000000000014 $d + /tmp/cctoWaKX.s:484 .text.FLASH_OB_UserConfig:0000000000000000 $t + /tmp/cctoWaKX.s:490 .text.FLASH_OB_UserConfig:0000000000000000 FLASH_OB_UserConfig + /tmp/cctoWaKX.s:576 .text.FLASH_OB_UserConfig:000000000000003c $d + /tmp/cctoWaKX.s:582 .text.FLASH_OB_BootAddressConfig:0000000000000000 $t + /tmp/cctoWaKX.s:588 .text.FLASH_OB_BootAddressConfig:0000000000000000 FLASH_OB_BootAddressConfig + /tmp/cctoWaKX.s:645 .text.FLASH_OB_BootAddressConfig:0000000000000030 $d + /tmp/cctoWaKX.s:651 .text.HAL_FLASHEx_OBProgram:0000000000000000 $t + /tmp/cctoWaKX.s:658 .text.HAL_FLASHEx_OBProgram:0000000000000000 HAL_FLASHEx_OBProgram + /tmp/cctoWaKX.s:857 .text.HAL_FLASHEx_OBProgram:00000000000000c0 $d + /tmp/cctoWaKX.s:862 .text.HAL_FLASHEx_OBGetConfig:0000000000000000 $t + /tmp/cctoWaKX.s:869 .text.HAL_FLASHEx_OBGetConfig:0000000000000000 HAL_FLASHEx_OBGetConfig + /tmp/cctoWaKX.s:932 .text.FLASH_Erase_Sector:0000000000000000 $t + /tmp/cctoWaKX.s:939 .text.FLASH_Erase_Sector:0000000000000000 FLASH_Erase_Sector + /tmp/cctoWaKX.s:1036 .text.FLASH_Erase_Sector:000000000000005c $d + /tmp/cctoWaKX.s:1041 .text.HAL_FLASHEx_Erase:0000000000000000 $t + /tmp/cctoWaKX.s:1048 .text.HAL_FLASHEx_Erase:0000000000000000 HAL_FLASHEx_Erase + /tmp/cctoWaKX.s:1204 .text.HAL_FLASHEx_Erase:000000000000008c $d + /tmp/cctoWaKX.s:1211 .text.HAL_FLASHEx_Erase_IT:0000000000000000 $t + /tmp/cctoWaKX.s:1218 .text.HAL_FLASHEx_Erase_IT:0000000000000000 HAL_FLASHEx_Erase_IT + /tmp/cctoWaKX.s:1322 .text.HAL_FLASHEx_Erase_IT:0000000000000060 $d + +UNDEFINED SYMBOLS +FLASH_WaitForLastOperation +pFlash diff --git a/build/stm32f7xx_hal_flash_ex.o b/build/stm32f7xx_hal_flash_ex.o new file mode 100644 index 0000000..db806f8 Binary files /dev/null and b/build/stm32f7xx_hal_flash_ex.o differ diff --git a/build/stm32f7xx_hal_gpio.d b/build/stm32f7xx_hal_gpio.d new file mode 100644 index 0000000..452faa4 --- /dev/null +++ b/build/stm32f7xx_hal_gpio.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_gpio.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_gpio.lst b/build/stm32f7xx_hal_gpio.lst new file mode 100644 index 0000000..9befbfb --- /dev/null +++ b/build/stm32f7xx_hal_gpio.lst @@ -0,0 +1,1791 @@ +ARM GAS /tmp/ccJPacwp.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_gpio.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.HAL_GPIO_Init,"ax",%progbits + 17 .align 1 + 18 .global HAL_GPIO_Init + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 HAL_GPIO_Init: + 26 .LVL0: + 27 .LFB141: + 28 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @file stm32f7xx_hal_gpio.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief GPIO HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * functionalities of the General Purpose Input/Output (GPIO) peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * + Initialization and de-initialization functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * + IO operation functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ****************************************************************************** + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @attention + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * Copyright (c) 2017 STMicroelectronics. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * All rights reserved. + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * This software is licensed under terms that can be found in the LICENSE file + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * in the root directory of this software component. + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ****************************************************************************** + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** @verbatim + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ============================================================================== + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ##### GPIO Peripheral features ##### + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ============================================================================== + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** [..] + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** Subject to the specific hardware characteristics of each I/O port listed in the datasheet, each + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** port bit of the General Purpose IO (GPIO) Ports, can be individually configured by software + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** in several modes: + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (+) Input mode + ARM GAS /tmp/ccJPacwp.s page 2 + + + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (+) Analog mode + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (+) Output mode + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (+) Alternate function mode + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (+) External interrupt/event lines + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** [..] + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** During and just after reset, the alternate functions and external interrupt + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** lines are not active and the I/O ports are configured in input floating mode. + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** [..] + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** All GPIO pins have weak internal pull-up and pull-down resistors, which can be + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** activated or not. + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** [..] + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** In Output or Alternate mode, each IO can be configured on open-drain or push-pull + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** type and the IO speed can be selected depending on the VDD value. + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** [..] + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** All ports have external interrupt/event capability. To use external interrupt + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** lines, the port must be configured in input mode. All available GPIO pins are + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** connected to the 16 external interrupt/event lines from EXTI0 to EXTI15. + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** [..] + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** The external interrupt/event controller consists of up to 23 edge detectors + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (16 lines are connected to GPIO) for generating event/interrupt requests (each + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** input line can be independently configured to select the type (interrupt or event) + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** and the corresponding trigger event (rising or falling or both). Each line can + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** also be masked independently. + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ##### How to use this driver ##### + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ============================================================================== + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** [..] + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (#) Enable the GPIO AHB clock using the following function: __HAL_RCC_GPIOx_CLK_ENABLE(). + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (#) Configure the GPIO pin(s) using HAL_GPIO_Init(). + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (++) Configure the IO mode using "Mode" member from GPIO_InitTypeDef structure + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (++) Activate Pull-up, Pull-down resistor using "Pull" member from GPIO_InitTypeDef + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** structure. + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (++) In case of Output or alternate function mode selection: the speed is + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** configured through "Speed" member from GPIO_InitTypeDef structure. + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (++) In alternate mode is selection, the alternate function connected to the IO + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** is configured through "Alternate" member from GPIO_InitTypeDef structure. + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (++) Analog mode is required when a pin is to be used as ADC channel + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** or DAC output. + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (++) In case of external interrupt/event selection the "Mode" member from + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIO_InitTypeDef structure select the type (interrupt or event) and + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** the corresponding trigger event (rising or falling or both). + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (#) In case of external interrupt/event mode selection, configure NVIC IRQ priority + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** mapped to the EXTI line using HAL_NVIC_SetPriority() and enable it using + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** HAL_NVIC_EnableIRQ(). + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (#) To get the level of a pin configured in input mode use HAL_GPIO_ReadPin(). + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (#) To set/reset the level of a pin configured in output mode use + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** HAL_GPIO_WritePin()/HAL_GPIO_TogglePin(). + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + ARM GAS /tmp/ccJPacwp.s page 3 + + + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (#) To lock pin configuration until next reset use HAL_GPIO_LockPin(). + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (#) During and just after reset, the alternate functions are not + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** active and the GPIO pins are configured in input floating mode (except JTAG + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** pins). + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (#) The LSE oscillator pins OSC32_IN and OSC32_OUT can be used as general purpose + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (PC14 and PC15, respectively) when the LSE oscillator is off. The LSE has + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** priority over the GPIO function. + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** (#) The HSE oscillator pins OSC_IN/OSC_OUT can be used as + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** general purpose PH0 and PH1, respectively, when the HSE oscillator is off. + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** The HSE has priority over the GPIO function. + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** @endverbatim + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ****************************************************************************** + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Includes ------------------------------------------------------------------*/ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** #include "stm32f7xx_hal.h" + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** @addtogroup STM32F7xx_HAL_Driver + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @{ + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** @defgroup GPIO GPIO + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief GPIO HAL module driver + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @{ + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** #ifdef HAL_GPIO_MODULE_ENABLED + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Private typedef -----------------------------------------------------------*/ + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Private define ------------------------------------------------------------*/ + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** @addtogroup GPIO_Private_Constants GPIO Private Constants + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @{ + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** #define GPIO_NUMBER ((uint32_t)16U) + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @} + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Private macro -------------------------------------------------------------*/ + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Private variables ---------------------------------------------------------*/ + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Private function prototypes -----------------------------------------------*/ + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Private functions ---------------------------------------------------------*/ + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Exported functions --------------------------------------------------------*/ + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** @defgroup GPIO_Exported_Functions GPIO Exported Functions + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @{ + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** @defgroup GPIO_Exported_Functions_Group1 Initialization and de-initialization functions + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief Initialization and Configuration functions + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** @verbatim + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** =============================================================================== + ARM GAS /tmp/ccJPacwp.s page 4 + + + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ##### Initialization and de-initialization functions ##### + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** =============================================================================== + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** [..] + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** This section provides functions allowing to initialize and de-initialize the GPIOs + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** to be ready for use. + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** @endverbatim + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @{ + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief Initializes the GPIOx peripheral according to the specified parameters in the GPIO_Init + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIOx where x can be (A..K) to select the GPIO peripheral. + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIO_Init pointer to a GPIO_InitTypeDef structure that contains + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * the configuration information for the specified GPIO peripheral. + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @retval None + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 29 .loc 1 163 1 view -0 + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 8 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t position = 0x00; + 33 .loc 1 164 3 view .LVU1 + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t ioposition = 0x00; + 34 .loc 1 165 3 view .LVU2 + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t iocurrent = 0x00; + 35 .loc 1 166 3 view .LVU3 + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t temp = 0x00; + 36 .loc 1 167 3 view .LVU4 + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Check the parameters */ + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + 37 .loc 1 170 3 view .LVU5 + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); + 38 .loc 1 171 3 view .LVU6 + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); + 39 .loc 1 172 3 view .LVU7 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure the port pins */ + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** for (position = 0; position < GPIO_NUMBER; position++) + 40 .loc 1 175 3 view .LVU8 + 41 .loc 1 175 17 is_stmt 0 view .LVU9 + 42 0000 0023 movs r3, #0 + 43 .LVL1: + 44 .loc 1 175 22 is_stmt 1 view .LVU10 + 45 .loc 1 175 3 is_stmt 0 view .LVU11 + 46 0002 0F2B cmp r3, #15 + 47 0004 00F2EF80 bhi .L26 + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t position = 0x00; + 48 .loc 1 163 1 view .LVU12 + 49 0008 70B5 push {r4, r5, r6, lr} + 50 .LCFI0: + 51 .cfi_def_cfa_offset 16 + 52 .cfi_offset 4, -16 + 53 .cfi_offset 5, -12 + ARM GAS /tmp/ccJPacwp.s page 5 + + + 54 .cfi_offset 6, -8 + 55 .cfi_offset 14, -4 + 56 000a 82B0 sub sp, sp, #8 + 57 .LCFI1: + 58 .cfi_def_cfa_offset 24 + 59 000c 61E0 b .L12 + 60 .LVL2: + 61 .L28: + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Get the IO position */ + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ioposition = ((uint32_t)0x01) << position; + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Get the current IO position */ + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** iocurrent = (uint32_t)(GPIO_Init->Pin) & ioposition; + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (iocurrent == ioposition) + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /*--------------------- GPIO Mode Configuration ------------------------*/ + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* In case of Output or Alternate function mode selection */ + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_ + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Check the Speed parameter */ + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); + 62 .loc 1 189 9 is_stmt 1 view .LVU13 + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure the IO Speed */ + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp = GPIOx->OSPEEDR; + 63 .loc 1 191 9 view .LVU14 + 64 .loc 1 191 14 is_stmt 0 view .LVU15 + 65 000e 8568 ldr r5, [r0, #8] + 66 .LVL3: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 67 .loc 1 192 9 is_stmt 1 view .LVU16 + 68 .loc 1 192 55 is_stmt 0 view .LVU17 + 69 0010 5E00 lsls r6, r3, #1 + 70 .loc 1 192 42 view .LVU18 + 71 0012 0324 movs r4, #3 + 72 0014 B440 lsls r4, r4, r6 + 73 .loc 1 192 14 view .LVU19 + 74 0016 25EA0405 bic r5, r5, r4 + 75 .LVL4: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= (GPIO_Init->Speed << (position * 2)); + 76 .loc 1 193 9 is_stmt 1 view .LVU20 + 77 .loc 1 193 27 is_stmt 0 view .LVU21 + 78 001a CC68 ldr r4, [r1, #12] + 79 .loc 1 193 35 view .LVU22 + 80 001c B440 lsls r4, r4, r6 + 81 .loc 1 193 14 view .LVU23 + 82 001e 2C43 orrs r4, r4, r5 + 83 .LVL5: + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->OSPEEDR = temp; + 84 .loc 1 194 9 is_stmt 1 view .LVU24 + 85 .loc 1 194 24 is_stmt 0 view .LVU25 + 86 0020 8460 str r4, [r0, #8] + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure the IO Output Type */ + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp = GPIOx->OTYPER; + 87 .loc 1 197 9 is_stmt 1 view .LVU26 + 88 .loc 1 197 14 is_stmt 0 view .LVU27 + ARM GAS /tmp/ccJPacwp.s page 6 + + + 89 0022 4568 ldr r5, [r0, #4] + 90 .LVL6: + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(GPIO_OTYPER_OT_0 << position) ; + 91 .loc 1 198 9 is_stmt 1 view .LVU28 + 92 .loc 1 198 14 is_stmt 0 view .LVU29 + 93 0024 25EA0205 bic r5, r5, r2 + 94 .LVL7: + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); + 95 .loc 1 199 9 is_stmt 1 view .LVU30 + 96 .loc 1 199 29 is_stmt 0 view .LVU31 + 97 0028 4C68 ldr r4, [r1, #4] + 98 .loc 1 199 51 view .LVU32 + 99 002a C4F30012 ubfx r2, r4, #4, #1 + 100 .LVL8: + 101 .loc 1 199 71 view .LVU33 + 102 002e 9A40 lsls r2, r2, r3 + 103 .loc 1 199 14 view .LVU34 + 104 0030 2A43 orrs r2, r2, r5 + 105 .LVL9: + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->OTYPER = temp; + 106 .loc 1 200 9 is_stmt 1 view .LVU35 + 107 .loc 1 200 23 is_stmt 0 view .LVU36 + 108 0032 4260 str r2, [r0, #4] + 109 0034 5BE0 b .L4 + 110 .LVL10: + 111 .L29: + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Check the Pull parameter */ + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Activate the Pull-up or Pull down resistor for the current IO */ + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp = GPIOx->PUPDR; + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2)); + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((GPIO_Init->Pull) << (position * 2)); + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->PUPDR = temp; + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* In case of Alternate function mode selection */ + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Check the Alternate function parameter */ + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); + 112 .loc 1 219 9 is_stmt 1 view .LVU37 + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure Alternate function mapped with the current IO */ + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp = GPIOx->AFR[position >> 3]; + 113 .loc 1 222 9 view .LVU38 + 114 .loc 1 222 36 is_stmt 0 view .LVU39 + 115 0036 DC08 lsrs r4, r3, #3 + 116 .loc 1 222 14 view .LVU40 + 117 0038 0834 adds r4, r4, #8 + 118 003a 50F82460 ldr r6, [r0, r4, lsl #2] + 119 .LVL11: + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ; + ARM GAS /tmp/ccJPacwp.s page 7 + + + 120 .loc 1 223 9 is_stmt 1 view .LVU41 + 121 .loc 1 223 37 is_stmt 0 view .LVU42 + 122 003e 03F00702 and r2, r3, #7 + 123 .loc 1 223 75 view .LVU43 + 124 0042 9500 lsls r5, r2, #2 + 125 .loc 1 223 33 view .LVU44 + 126 0044 0F22 movs r2, #15 + 127 0046 AA40 lsls r2, r2, r5 + 128 .loc 1 223 14 view .LVU45 + 129 0048 26EA020E bic lr, r6, r2 + 130 .LVL12: + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4)); + 131 .loc 1 224 9 is_stmt 1 view .LVU46 + 132 .loc 1 224 38 is_stmt 0 view .LVU47 + 133 004c 0A69 ldr r2, [r1, #16] + 134 .loc 1 224 51 view .LVU48 + 135 004e AA40 lsls r2, r2, r5 + 136 .loc 1 224 14 view .LVU49 + 137 0050 42EA0E02 orr r2, r2, lr + 138 .LVL13: + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->AFR[position >> 3] = temp; + 139 .loc 1 225 9 is_stmt 1 view .LVU50 + 140 .loc 1 225 35 is_stmt 0 view .LVU51 + 141 0054 40F82420 str r2, [r0, r4, lsl #2] + 142 0058 5DE0 b .L6 + 143 .LVL14: + 144 .L30: + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp = GPIOx->MODER; + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(GPIO_MODER_MODER0 << (position * 2)); + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->MODER = temp; + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /*--------------------- EXTI Mode Configuration ------------------------*/ + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure the External Interrupt or event for the current IO */ + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if ((GPIO_Init->Mode & EXTI_MODE) != 0x00u) + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Enable SYSCFG Clock */ + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** __HAL_RCC_SYSCFG_CLK_ENABLE(); + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp = SYSCFG->EXTICR[position >> 2]; + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(((uint32_t)0x0F) << (4 * (position & 0x03))); + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 145 .loc 1 243 29 view .LVU52 + 146 005a 0922 movs r2, #9 + 147 005c 00E0 b .L7 + 148 .L13: + 149 .loc 1 243 18 view .LVU53 + 150 005e 0022 movs r2, #0 + 151 .L7: + 152 .loc 1 243 52 discriminator 40 view .LVU54 + 153 0060 02FA0EF2 lsl r2, r2, lr + 154 .loc 1 243 14 discriminator 40 view .LVU55 + 155 0064 2A43 orrs r2, r2, r5 + 156 .LVL15: + ARM GAS /tmp/ccJPacwp.s page 8 + + + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 157 .loc 1 244 9 is_stmt 1 discriminator 40 view .LVU56 + 158 .loc 1 244 39 is_stmt 0 discriminator 40 view .LVU57 + 159 0066 0234 adds r4, r4, #2 + 160 0068 5F4D ldr r5, .L31 + 161 006a 45F82420 str r2, [r5, r4, lsl #2] + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Clear Rising Falling edge configuration */ + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp = EXTI->RTSR; + 162 .loc 1 247 9 is_stmt 1 discriminator 40 view .LVU58 + 163 .loc 1 247 14 is_stmt 0 discriminator 40 view .LVU59 + 164 006e 5F4A ldr r2, .L31+4 + 165 .LVL16: + 166 .loc 1 247 14 discriminator 40 view .LVU60 + 167 0070 9468 ldr r4, [r2, #8] + 168 .LVL17: + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~((uint32_t)iocurrent); + 169 .loc 1 248 9 is_stmt 1 discriminator 40 view .LVU61 + 170 .loc 1 248 17 is_stmt 0 discriminator 40 view .LVU62 + 171 0072 6FEA0C02 mvn r2, ip + 172 .loc 1 248 14 discriminator 40 view .LVU63 + 173 0076 24EA0C05 bic r5, r4, ip + 174 .LVL18: + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00u) + 175 .loc 1 249 9 is_stmt 1 discriminator 40 view .LVU64 + 176 .loc 1 249 23 is_stmt 0 discriminator 40 view .LVU65 + 177 007a 4E68 ldr r6, [r1, #4] + 178 .loc 1 249 12 discriminator 40 view .LVU66 + 179 007c 16F4801F tst r6, #1048576 + 180 0080 01D0 beq .L8 + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= iocurrent; + 181 .loc 1 251 11 is_stmt 1 view .LVU67 + 182 .loc 1 251 16 is_stmt 0 view .LVU68 + 183 0082 4CEA0405 orr r5, ip, r4 + 184 .LVL19: + 185 .L8: + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->RTSR = temp; + 186 .loc 1 253 9 is_stmt 1 view .LVU69 + 187 .loc 1 253 20 is_stmt 0 view .LVU70 + 188 0086 594C ldr r4, .L31+4 + 189 0088 A560 str r5, [r4, #8] + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp = EXTI->FTSR; + 190 .loc 1 255 9 is_stmt 1 view .LVU71 + 191 .loc 1 255 14 is_stmt 0 view .LVU72 + 192 008a E468 ldr r4, [r4, #12] + 193 .LVL20: + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~((uint32_t)iocurrent); + 194 .loc 1 256 9 is_stmt 1 view .LVU73 + 195 .loc 1 256 14 is_stmt 0 view .LVU74 + 196 008c 02EA0405 and r5, r2, r4 + 197 .LVL21: + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00u) + 198 .loc 1 257 9 is_stmt 1 view .LVU75 + 199 .loc 1 257 23 is_stmt 0 view .LVU76 + ARM GAS /tmp/ccJPacwp.s page 9 + + + 200 0090 4E68 ldr r6, [r1, #4] + 201 .loc 1 257 12 view .LVU77 + 202 0092 16F4001F tst r6, #2097152 + 203 0096 01D0 beq .L9 + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= iocurrent; + 204 .loc 1 259 11 is_stmt 1 view .LVU78 + 205 .loc 1 259 16 is_stmt 0 view .LVU79 + 206 0098 4CEA0405 orr r5, ip, r4 + 207 .LVL22: + 208 .L9: + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->FTSR = temp; + 209 .loc 1 261 9 is_stmt 1 view .LVU80 + 210 .loc 1 261 20 is_stmt 0 view .LVU81 + 211 009c 534C ldr r4, .L31+4 + 212 009e E560 str r5, [r4, #12] + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp = EXTI->EMR; + 213 .loc 1 263 9 is_stmt 1 view .LVU82 + 214 .loc 1 263 14 is_stmt 0 view .LVU83 + 215 00a0 6468 ldr r4, [r4, #4] + 216 .LVL23: + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~((uint32_t)iocurrent); + 217 .loc 1 264 9 is_stmt 1 view .LVU84 + 218 .loc 1 264 14 is_stmt 0 view .LVU85 + 219 00a2 02EA0405 and r5, r2, r4 + 220 .LVL24: + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if ((GPIO_Init->Mode & EXTI_EVT) != 0x00u) + 221 .loc 1 265 9 is_stmt 1 view .LVU86 + 222 .loc 1 265 23 is_stmt 0 view .LVU87 + 223 00a6 4E68 ldr r6, [r1, #4] + 224 .loc 1 265 12 view .LVU88 + 225 00a8 16F4003F tst r6, #131072 + 226 00ac 01D0 beq .L10 + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= iocurrent; + 227 .loc 1 267 11 is_stmt 1 view .LVU89 + 228 .loc 1 267 16 is_stmt 0 view .LVU90 + 229 00ae 4CEA0405 orr r5, ip, r4 + 230 .LVL25: + 231 .L10: + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->EMR = temp; + 232 .loc 1 269 9 is_stmt 1 view .LVU91 + 233 .loc 1 269 19 is_stmt 0 view .LVU92 + 234 00b2 4E4C ldr r4, .L31+4 + 235 00b4 6560 str r5, [r4, #4] + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Clear EXTI line configuration */ + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp = EXTI->IMR; + 236 .loc 1 272 9 is_stmt 1 view .LVU93 + 237 .loc 1 272 14 is_stmt 0 view .LVU94 + 238 00b6 2468 ldr r4, [r4] + 239 .LVL26: + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~((uint32_t)iocurrent); + 240 .loc 1 273 9 is_stmt 1 view .LVU95 + ARM GAS /tmp/ccJPacwp.s page 10 + + + 241 .loc 1 273 14 is_stmt 0 view .LVU96 + 242 00b8 2240 ands r2, r2, r4 + 243 .LVL27: + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if ((GPIO_Init->Mode & EXTI_IT) != 0x00u) + 244 .loc 1 274 9 is_stmt 1 view .LVU97 + 245 .loc 1 274 23 is_stmt 0 view .LVU98 + 246 00ba 4D68 ldr r5, [r1, #4] + 247 .loc 1 274 12 view .LVU99 + 248 00bc 15F4803F tst r5, #65536 + 249 00c0 01D0 beq .L11 + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= iocurrent; + 250 .loc 1 276 11 is_stmt 1 view .LVU100 + 251 .loc 1 276 16 is_stmt 0 view .LVU101 + 252 00c2 4CEA0402 orr r2, ip, r4 + 253 .LVL28: + 254 .L11: + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->IMR = temp; + 255 .loc 1 278 9 is_stmt 1 view .LVU102 + 256 .loc 1 278 19 is_stmt 0 view .LVU103 + 257 00c6 494C ldr r4, .L31+4 + 258 00c8 2260 str r2, [r4] + 259 .LVL29: + 260 .L3: + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 261 .loc 1 175 46 is_stmt 1 discriminator 2 view .LVU104 + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 262 .loc 1 175 54 is_stmt 0 discriminator 2 view .LVU105 + 263 00ca 0133 adds r3, r3, #1 + 264 .LVL30: + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 265 .loc 1 175 22 is_stmt 1 discriminator 2 view .LVU106 + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 266 .loc 1 175 3 is_stmt 0 discriminator 2 view .LVU107 + 267 00cc 0F2B cmp r3, #15 + 268 00ce 00F28880 bhi .L27 + 269 .LVL31: + 270 .L12: + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Get the current IO position */ + 271 .loc 1 178 5 is_stmt 1 view .LVU108 + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Get the current IO position */ + 272 .loc 1 178 16 is_stmt 0 view .LVU109 + 273 00d2 0122 movs r2, #1 + 274 00d4 9A40 lsls r2, r2, r3 + 275 .LVL32: + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 276 .loc 1 180 5 is_stmt 1 view .LVU110 + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 277 .loc 1 180 37 is_stmt 0 view .LVU111 + 278 00d6 0C68 ldr r4, [r1] + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 279 .loc 1 180 15 view .LVU112 + 280 00d8 04EA020C and ip, r4, r2 + 281 .LVL33: + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 282 .loc 1 182 5 is_stmt 1 view .LVU113 + ARM GAS /tmp/ccJPacwp.s page 11 + + + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 283 .loc 1 182 8 is_stmt 0 view .LVU114 + 284 00dc 32EA0404 bics r4, r2, r4 + 285 00e0 F3D1 bne .L3 + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 286 .loc 1 186 7 is_stmt 1 view .LVU115 + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 287 .loc 1 186 22 is_stmt 0 view .LVU116 + 288 00e2 4C68 ldr r4, [r1, #4] + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 289 .loc 1 186 29 view .LVU117 + 290 00e4 04F00304 and r4, r4, #3 + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 291 .loc 1 186 58 view .LVU118 + 292 00e8 013C subs r4, r4, #1 + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 293 .loc 1 186 10 view .LVU119 + 294 00ea 012C cmp r4, #1 + 295 00ec 8FD9 bls .L28 + 296 .LVL34: + 297 .L4: + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 298 .loc 1 203 7 is_stmt 1 view .LVU120 + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 299 .loc 1 203 21 is_stmt 0 view .LVU121 + 300 00ee 4A68 ldr r2, [r1, #4] + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 301 .loc 1 203 28 view .LVU122 + 302 00f0 02F00302 and r2, r2, #3 + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 303 .loc 1 203 10 view .LVU123 + 304 00f4 032A cmp r2, #3 + 305 00f6 09D0 beq .L5 + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 306 .loc 1 206 9 is_stmt 1 view .LVU124 + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2)); + 307 .loc 1 209 9 view .LVU125 + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(GPIO_PUPDR_PUPDR0 << (position * 2)); + 308 .loc 1 209 14 is_stmt 0 view .LVU126 + 309 00f8 C468 ldr r4, [r0, #12] + 310 .LVL35: + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((GPIO_Init->Pull) << (position * 2)); + 311 .loc 1 210 9 is_stmt 1 view .LVU127 + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((GPIO_Init->Pull) << (position * 2)); + 312 .loc 1 210 50 is_stmt 0 view .LVU128 + 313 00fa 5D00 lsls r5, r3, #1 + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((GPIO_Init->Pull) << (position * 2)); + 314 .loc 1 210 37 view .LVU129 + 315 00fc 0322 movs r2, #3 + 316 00fe AA40 lsls r2, r2, r5 + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((GPIO_Init->Pull) << (position * 2)); + 317 .loc 1 210 14 view .LVU130 + 318 0100 24EA0204 bic r4, r4, r2 + 319 .LVL36: + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->PUPDR = temp; + 320 .loc 1 211 9 is_stmt 1 view .LVU131 + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->PUPDR = temp; + ARM GAS /tmp/ccJPacwp.s page 12 + + + 321 .loc 1 211 28 is_stmt 0 view .LVU132 + 322 0104 8A68 ldr r2, [r1, #8] + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->PUPDR = temp; + 323 .loc 1 211 36 view .LVU133 + 324 0106 AA40 lsls r2, r2, r5 + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->PUPDR = temp; + 325 .loc 1 211 14 view .LVU134 + 326 0108 2243 orrs r2, r2, r4 + 327 .LVL37: + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 328 .loc 1 212 9 is_stmt 1 view .LVU135 + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 329 .loc 1 212 22 is_stmt 0 view .LVU136 + 330 010a C260 str r2, [r0, #12] + 331 .LVL38: + 332 .L5: + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 333 .loc 1 216 7 is_stmt 1 view .LVU137 + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 334 .loc 1 216 21 is_stmt 0 view .LVU138 + 335 010c 4A68 ldr r2, [r1, #4] + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 336 .loc 1 216 28 view .LVU139 + 337 010e 02F00302 and r2, r2, #3 + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 338 .loc 1 216 10 view .LVU140 + 339 0112 022A cmp r2, #2 + 340 0114 8FD0 beq .L29 + 341 .L6: + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(GPIO_MODER_MODER0 << (position * 2)); + 342 .loc 1 229 7 is_stmt 1 view .LVU141 + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(GPIO_MODER_MODER0 << (position * 2)); + 343 .loc 1 229 12 is_stmt 0 view .LVU142 + 344 0116 0468 ldr r4, [r0] + 345 .LVL39: + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 346 .loc 1 230 7 is_stmt 1 view .LVU143 + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 347 .loc 1 230 48 is_stmt 0 view .LVU144 + 348 0118 4FEA430E lsl lr, r3, #1 + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 349 .loc 1 230 35 view .LVU145 + 350 011c 0322 movs r2, #3 + 351 011e 02FA0EF2 lsl r2, r2, lr + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2)); + 352 .loc 1 230 12 view .LVU146 + 353 0122 24EA0204 bic r4, r4, r2 + 354 .LVL40: + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->MODER = temp; + 355 .loc 1 231 7 is_stmt 1 view .LVU147 + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->MODER = temp; + 356 .loc 1 231 26 is_stmt 0 view .LVU148 + 357 0126 4A68 ldr r2, [r1, #4] + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->MODER = temp; + 358 .loc 1 231 33 view .LVU149 + 359 0128 02F00302 and r2, r2, #3 + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->MODER = temp; + ARM GAS /tmp/ccJPacwp.s page 13 + + + 360 .loc 1 231 46 view .LVU150 + 361 012c 02FA0EF2 lsl r2, r2, lr + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->MODER = temp; + 362 .loc 1 231 12 view .LVU151 + 363 0130 2243 orrs r2, r2, r4 + 364 .LVL41: + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 365 .loc 1 232 7 is_stmt 1 view .LVU152 + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 366 .loc 1 232 20 is_stmt 0 view .LVU153 + 367 0132 0260 str r2, [r0] + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 368 .loc 1 236 7 is_stmt 1 view .LVU154 + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 369 .loc 1 236 21 is_stmt 0 view .LVU155 + 370 0134 4A68 ldr r2, [r1, #4] + 371 .LVL42: + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 372 .loc 1 236 10 view .LVU156 + 373 0136 12F4403F tst r2, #196608 + 374 013a C6D0 beq .L3 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 375 .loc 1 239 9 is_stmt 1 view .LVU157 + 376 .LBB2: + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 377 .loc 1 239 9 view .LVU158 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 378 .loc 1 239 9 view .LVU159 + 379 013c 2C4A ldr r2, .L31+8 + 380 013e 546C ldr r4, [r2, #68] + 381 0140 44F48044 orr r4, r4, #16384 + 382 0144 5464 str r4, [r2, #68] + 383 .LVL43: + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 384 .loc 1 239 9 view .LVU160 + 385 0146 526C ldr r2, [r2, #68] + 386 0148 02F48042 and r2, r2, #16384 + 387 014c 0192 str r2, [sp, #4] + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 388 .loc 1 239 9 view .LVU161 + 389 014e 019A ldr r2, [sp, #4] + 390 .LBE2: + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 391 .loc 1 239 9 view .LVU162 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(((uint32_t)0x0F) << (4 * (position & 0x03))); + 392 .loc 1 241 9 view .LVU163 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(((uint32_t)0x0F) << (4 * (position & 0x03))); + 393 .loc 1 241 40 is_stmt 0 view .LVU164 + 394 0150 9C08 lsrs r4, r3, #2 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp &= ~(((uint32_t)0x0F) << (4 * (position & 0x03))); + 395 .loc 1 241 14 view .LVU165 + 396 0152 A51C adds r5, r4, #2 + 397 0154 244A ldr r2, .L31 + 398 0156 52F82550 ldr r5, [r2, r5, lsl #2] + 399 .LVL44: + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 400 .loc 1 242 9 is_stmt 1 view .LVU166 + ARM GAS /tmp/ccJPacwp.s page 14 + + + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 401 .loc 1 242 54 is_stmt 0 view .LVU167 + 402 015a 03F00302 and r2, r3, #3 + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 403 .loc 1 242 42 view .LVU168 + 404 015e 4FEA820E lsl lr, r2, #2 + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 405 .loc 1 242 36 view .LVU169 + 406 0162 0F22 movs r2, #15 + 407 0164 02FA0EF2 lsl r2, r2, lr + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** temp |= ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))); + 408 .loc 1 242 14 view .LVU170 + 409 0168 25EA0205 bic r5, r5, r2 + 410 .LVL45: + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 411 .loc 1 243 9 is_stmt 1 view .LVU171 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 412 .loc 1 243 18 is_stmt 0 view .LVU172 + 413 016c 214A ldr r2, .L31+12 + 414 016e 9042 cmp r0, r2 + 415 0170 3FF475AF beq .L13 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 416 .loc 1 243 29 discriminator 1 view .LVU173 + 417 0174 02F58062 add r2, r2, #1024 + 418 0178 9042 cmp r0, r2 + 419 017a 22D0 beq .L14 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 420 .loc 1 243 29 discriminator 3 view .LVU174 + 421 017c 02F58062 add r2, r2, #1024 + 422 0180 9042 cmp r0, r2 + 423 0182 20D0 beq .L15 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 424 .loc 1 243 29 discriminator 5 view .LVU175 + 425 0184 02F58062 add r2, r2, #1024 + 426 0188 9042 cmp r0, r2 + 427 018a 1ED0 beq .L16 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 428 .loc 1 243 29 discriminator 7 view .LVU176 + 429 018c 02F58062 add r2, r2, #1024 + 430 0190 9042 cmp r0, r2 + 431 0192 1CD0 beq .L17 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 432 .loc 1 243 29 discriminator 9 view .LVU177 + 433 0194 02F58062 add r2, r2, #1024 + 434 0198 9042 cmp r0, r2 + 435 019a 1AD0 beq .L18 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 436 .loc 1 243 29 discriminator 11 view .LVU178 + 437 019c 02F58062 add r2, r2, #1024 + 438 01a0 9042 cmp r0, r2 + 439 01a2 18D0 beq .L19 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 440 .loc 1 243 29 discriminator 13 view .LVU179 + 441 01a4 02F58062 add r2, r2, #1024 + 442 01a8 9042 cmp r0, r2 + 443 01aa 16D0 beq .L20 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + ARM GAS /tmp/ccJPacwp.s page 15 + + + 444 .loc 1 243 29 discriminator 15 view .LVU180 + 445 01ac 02F58062 add r2, r2, #1024 + 446 01b0 9042 cmp r0, r2 + 447 01b2 14D0 beq .L21 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 448 .loc 1 243 29 discriminator 17 view .LVU181 + 449 01b4 02F58062 add r2, r2, #1024 + 450 01b8 9042 cmp r0, r2 + 451 01ba 3FF44EAF beq .L30 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 452 .loc 1 243 29 view .LVU182 + 453 01be 0A22 movs r2, #10 + 454 01c0 4EE7 b .L7 + 455 .L14: + 456 01c2 0122 movs r2, #1 + 457 .LVL46: + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 458 .loc 1 243 29 view .LVU183 + 459 01c4 4CE7 b .L7 + 460 .LVL47: + 461 .L15: + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] = temp; + 462 .loc 1 243 29 view .LVU184 + 463 01c6 0222 movs r2, #2 + 464 01c8 4AE7 b .L7 + 465 .L16: + 466 01ca 0322 movs r2, #3 + 467 01cc 48E7 b .L7 + 468 .L17: + 469 01ce 0422 movs r2, #4 + 470 01d0 46E7 b .L7 + 471 .L18: + 472 01d2 0522 movs r2, #5 + 473 01d4 44E7 b .L7 + 474 .L19: + 475 01d6 0622 movs r2, #6 + 476 01d8 42E7 b .L7 + 477 .L20: + 478 01da 0722 movs r2, #7 + 479 01dc 40E7 b .L7 + 480 .L21: + 481 01de 0822 movs r2, #8 + 482 01e0 3EE7 b .L7 + 483 .LVL48: + 484 .L27: + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 485 .loc 1 282 1 view .LVU185 + 486 01e2 02B0 add sp, sp, #8 + 487 .LCFI2: + 488 .cfi_def_cfa_offset 16 + 489 @ sp needed + 490 01e4 70BD pop {r4, r5, r6, pc} + 491 .LVL49: + 492 .L26: + ARM GAS /tmp/ccJPacwp.s page 16 + + + 493 .LCFI3: + 494 .cfi_def_cfa_offset 0 + 495 .cfi_restore 4 + 496 .cfi_restore 5 + 497 .cfi_restore 6 + 498 .cfi_restore 14 + 499 .loc 1 282 1 view .LVU186 + 500 01e6 7047 bx lr + 501 .L32: + 502 .align 2 + 503 .L31: + 504 01e8 00380140 .word 1073821696 + 505 01ec 003C0140 .word 1073822720 + 506 01f0 00380240 .word 1073887232 + 507 01f4 00000240 .word 1073872896 + 508 .cfi_endproc + 509 .LFE141: + 511 .section .text.HAL_GPIO_DeInit,"ax",%progbits + 512 .align 1 + 513 .global HAL_GPIO_DeInit + 514 .syntax unified + 515 .thumb + 516 .thumb_func + 517 .fpu fpv5-d16 + 519 HAL_GPIO_DeInit: + 520 .LVL50: + 521 .LFB142: + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief De-initializes the GPIOx peripheral registers to their default reset values. + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIOx where x can be (A..K) to select the GPIO peripheral. + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIO_Pin specifies the port bit to be written. + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * This parameter can be one of GPIO_PIN_x where x can be (0..15). + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @retval None + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 522 .loc 1 292 1 is_stmt 1 view -0 + 523 .cfi_startproc + 524 @ args = 0, pretend = 0, frame = 0 + 525 @ frame_needed = 0, uses_anonymous_args = 0 + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t position; + 526 .loc 1 293 3 view .LVU188 + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t ioposition = 0x00; + 527 .loc 1 294 3 view .LVU189 + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t iocurrent = 0x00; + 528 .loc 1 295 3 view .LVU190 + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t tmp = 0x00; + 529 .loc 1 296 3 view .LVU191 + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Check the parameters */ + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + 530 .loc 1 299 3 view .LVU192 + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure the port pins */ + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** for (position = 0; position < GPIO_NUMBER; position++) + 531 .loc 1 302 3 view .LVU193 + ARM GAS /tmp/ccJPacwp.s page 17 + + + 532 .loc 1 302 17 is_stmt 0 view .LVU194 + 533 0000 0023 movs r3, #0 + 534 .LVL51: + 535 .loc 1 302 22 is_stmt 1 view .LVU195 + 536 .loc 1 302 3 is_stmt 0 view .LVU196 + 537 0002 0F2B cmp r3, #15 + 538 0004 00F29B80 bhi .L52 + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t position; + 539 .loc 1 292 1 view .LVU197 + 540 0008 F0B5 push {r4, r5, r6, r7, lr} + 541 .LCFI4: + 542 .cfi_def_cfa_offset 20 + 543 .cfi_offset 4, -20 + 544 .cfi_offset 5, -16 + 545 .cfi_offset 6, -12 + 546 .cfi_offset 7, -8 + 547 .cfi_offset 14, -4 + 548 000a 2DE0 b .L38 + 549 .LVL52: + 550 .L55: + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Get the IO position */ + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ioposition = ((uint32_t)0x01) << position; + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Get the current IO position */ + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** iocurrent = (GPIO_Pin) & ioposition; + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (iocurrent == ioposition) + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /*------------------------- EXTI Mode Configuration --------------------*/ + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** tmp = SYSCFG->EXTICR[position >> 2]; + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03))); + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)))) + 551 .loc 1 314 30 view .LVU198 + 552 000c 0925 movs r5, #9 + 553 000e 00E0 b .L36 + 554 .L39: + 555 .loc 1 314 19 view .LVU199 + 556 0010 0025 movs r5, #0 + 557 .L36: + 558 .loc 1 314 53 discriminator 40 view .LVU200 + 559 0012 05FA0CFC lsl ip, r5, ip + 560 .loc 1 314 10 discriminator 40 view .LVU201 + 561 0016 A445 cmp ip, r4 + 562 0018 75D0 beq .L53 + 563 .LVL53: + 564 .L37: + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Clear EXTI line configuration */ + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->IMR &= ~((uint32_t)iocurrent); + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->EMR &= ~((uint32_t)iocurrent); + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Clear Rising Falling edge configuration */ + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->FTSR &= ~((uint32_t)iocurrent); + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->RTSR &= ~((uint32_t)iocurrent); + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure the External Interrupt or event for the current IO */ + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** tmp = ((uint32_t)0x0F) << (4 * (position & 0x03)); + ARM GAS /tmp/ccJPacwp.s page 18 + + + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] &= ~tmp; + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /*------------------------- GPIO Mode Configuration --------------------*/ + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure IO Direction in Input Floating Mode */ + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->MODER &= ~(GPIO_MODER_MODER0 << (position * 2)); + 565 .loc 1 330 7 is_stmt 1 view .LVU202 + 566 .loc 1 330 20 is_stmt 0 view .LVU203 + 567 001a 0468 ldr r4, [r0] + 568 .loc 1 330 56 view .LVU204 + 569 001c 5D00 lsls r5, r3, #1 + 570 .loc 1 330 43 view .LVU205 + 571 001e 4FF0030C mov ip, #3 + 572 0022 0CFA05FC lsl ip, ip, r5 + 573 .loc 1 330 20 view .LVU206 + 574 0026 24EA0C04 bic r4, r4, ip + 575 002a 0460 str r4, [r0] + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure the default Alternate Function in current IO */ + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->AFR[position >> 3] &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) + 576 .loc 1 333 7 is_stmt 1 view .LVU207 + 577 .loc 1 333 33 is_stmt 0 view .LVU208 + 578 002c 4FEAD30E lsr lr, r3, #3 + 579 0030 0EF1080E add lr, lr, #8 + 580 0034 50F82E40 ldr r4, [r0, lr, lsl #2] + 581 .loc 1 333 56 view .LVU209 + 582 0038 03F00705 and r5, r3, #7 + 583 .loc 1 333 94 view .LVU210 + 584 003c AE00 lsls r6, r5, #2 + 585 .loc 1 333 52 view .LVU211 + 586 003e 0F25 movs r5, #15 + 587 0040 B540 lsls r5, r5, r6 + 588 .loc 1 333 33 view .LVU212 + 589 0042 24EA0504 bic r4, r4, r5 + 590 0046 40F82E40 str r4, [r0, lr, lsl #2] + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Deactivate the Pull-up and Pull-down resistor for the current IO */ + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << (position * 2)); + 591 .loc 1 336 7 is_stmt 1 view .LVU213 + 592 .loc 1 336 20 is_stmt 0 view .LVU214 + 593 004a C468 ldr r4, [r0, #12] + 594 004c 24EA0C04 bic r4, r4, ip + 595 0050 C460 str r4, [r0, #12] + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure the default value IO Output Type */ + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ; + 596 .loc 1 339 7 is_stmt 1 view .LVU215 + 597 .loc 1 339 22 is_stmt 0 view .LVU216 + 598 0052 4468 ldr r4, [r0, #4] + 599 0054 24EA0202 bic r2, r4, r2 + 600 .LVL54: + 601 .loc 1 339 22 view .LVU217 + 602 0058 4260 str r2, [r0, #4] + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Configure the default value for IO Speed */ + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2)); + 603 .loc 1 342 7 is_stmt 1 view .LVU218 + 604 .loc 1 342 22 is_stmt 0 view .LVU219 + ARM GAS /tmp/ccJPacwp.s page 19 + + + 605 005a 8268 ldr r2, [r0, #8] + 606 005c 22EA0C02 bic r2, r2, ip + 607 0060 8260 str r2, [r0, #8] + 608 .L35: + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 609 .loc 1 302 46 is_stmt 1 discriminator 2 view .LVU220 + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 610 .loc 1 302 54 is_stmt 0 discriminator 2 view .LVU221 + 611 0062 0133 adds r3, r3, #1 + 612 .LVL55: + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 613 .loc 1 302 22 is_stmt 1 discriminator 2 view .LVU222 + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 614 .loc 1 302 3 is_stmt 0 discriminator 2 view .LVU223 + 615 0064 0F2B cmp r3, #15 + 616 0066 69D8 bhi .L54 + 617 .LVL56: + 618 .L38: + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Get the current IO position */ + 619 .loc 1 305 5 is_stmt 1 view .LVU224 + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Get the current IO position */ + 620 .loc 1 305 16 is_stmt 0 view .LVU225 + 621 0068 0122 movs r2, #1 + 622 006a 9A40 lsls r2, r2, r3 + 623 .LVL57: + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 624 .loc 1 307 5 is_stmt 1 view .LVU226 + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 625 .loc 1 307 15 is_stmt 0 view .LVU227 + 626 006c 02EA0106 and r6, r2, r1 + 627 .LVL58: + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 628 .loc 1 309 5 is_stmt 1 view .LVU228 + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 629 .loc 1 309 8 is_stmt 0 view .LVU229 + 630 0070 32EA0104 bics r4, r2, r1 + 631 0074 F5D1 bne .L35 + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03))); + 632 .loc 1 312 7 is_stmt 1 view .LVU230 + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03))); + 633 .loc 1 312 37 is_stmt 0 view .LVU231 + 634 0076 4FEA930E lsr lr, r3, #2 + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03))); + 635 .loc 1 312 11 view .LVU232 + 636 007a 0EF10205 add r5, lr, #2 + 637 007e 304C ldr r4, .L56 + 638 0080 54F82540 ldr r4, [r4, r5, lsl #2] + 639 .LVL59: + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)))) + 640 .loc 1 313 7 is_stmt 1 view .LVU233 + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)))) + 641 .loc 1 313 50 is_stmt 0 view .LVU234 + 642 0084 03F0030C and ip, r3, #3 + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)))) + 643 .loc 1 313 38 view .LVU235 + 644 0088 4FEA8C0C lsl ip, ip, #2 + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)))) + ARM GAS /tmp/ccJPacwp.s page 20 + + + 645 .loc 1 313 32 view .LVU236 + 646 008c 0F25 movs r5, #15 + 647 008e 05FA0CF7 lsl r7, r5, ip + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03)))) + 648 .loc 1 313 11 view .LVU237 + 649 0092 3C40 ands r4, r4, r7 + 650 .LVL60: + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 651 .loc 1 314 7 is_stmt 1 view .LVU238 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 652 .loc 1 314 19 is_stmt 0 view .LVU239 + 653 0094 2B4D ldr r5, .L56+4 + 654 0096 A842 cmp r0, r5 + 655 0098 BAD0 beq .L39 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 656 .loc 1 314 30 discriminator 1 view .LVU240 + 657 009a 05F58065 add r5, r5, #1024 + 658 009e A842 cmp r0, r5 + 659 00a0 21D0 beq .L40 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 660 .loc 1 314 30 discriminator 3 view .LVU241 + 661 00a2 05F58065 add r5, r5, #1024 + 662 00a6 A842 cmp r0, r5 + 663 00a8 1FD0 beq .L41 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 664 .loc 1 314 30 discriminator 5 view .LVU242 + 665 00aa 05F58065 add r5, r5, #1024 + 666 00ae A842 cmp r0, r5 + 667 00b0 1DD0 beq .L42 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 668 .loc 1 314 30 discriminator 7 view .LVU243 + 669 00b2 05F58065 add r5, r5, #1024 + 670 00b6 A842 cmp r0, r5 + 671 00b8 1BD0 beq .L43 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 672 .loc 1 314 30 discriminator 9 view .LVU244 + 673 00ba 05F58065 add r5, r5, #1024 + 674 00be A842 cmp r0, r5 + 675 00c0 19D0 beq .L44 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 676 .loc 1 314 30 discriminator 11 view .LVU245 + 677 00c2 05F58065 add r5, r5, #1024 + 678 00c6 A842 cmp r0, r5 + 679 00c8 17D0 beq .L45 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 680 .loc 1 314 30 discriminator 13 view .LVU246 + 681 00ca 05F58065 add r5, r5, #1024 + 682 00ce A842 cmp r0, r5 + 683 00d0 15D0 beq .L46 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 684 .loc 1 314 30 discriminator 15 view .LVU247 + 685 00d2 05F58065 add r5, r5, #1024 + 686 00d6 A842 cmp r0, r5 + 687 00d8 13D0 beq .L47 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 688 .loc 1 314 30 discriminator 17 view .LVU248 + 689 00da 05F58065 add r5, r5, #1024 + ARM GAS /tmp/ccJPacwp.s page 21 + + + 690 00de A842 cmp r0, r5 + 691 00e0 94D0 beq .L55 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 692 .loc 1 314 30 view .LVU249 + 693 00e2 0A25 movs r5, #10 + 694 00e4 95E7 b .L36 + 695 .L40: + 696 00e6 0125 movs r5, #1 + 697 00e8 93E7 b .L36 + 698 .L41: + 699 00ea 0225 movs r5, #2 + 700 00ec 91E7 b .L36 + 701 .L42: + 702 00ee 0325 movs r5, #3 + 703 00f0 8FE7 b .L36 + 704 .L43: + 705 00f2 0425 movs r5, #4 + 706 00f4 8DE7 b .L36 + 707 .L44: + 708 00f6 0525 movs r5, #5 + 709 00f8 8BE7 b .L36 + 710 .L45: + 711 00fa 0625 movs r5, #6 + 712 00fc 89E7 b .L36 + 713 .L46: + 714 00fe 0725 movs r5, #7 + 715 0100 87E7 b .L36 + 716 .L47: + 717 0102 0825 movs r5, #8 + 718 0104 85E7 b .L36 + 719 .L53: + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->EMR &= ~((uint32_t)iocurrent); + 720 .loc 1 317 9 is_stmt 1 view .LVU250 + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->EMR &= ~((uint32_t)iocurrent); + 721 .loc 1 317 19 is_stmt 0 view .LVU251 + 722 0106 104C ldr r4, .L56+8 + 723 .LVL61: + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->EMR &= ~((uint32_t)iocurrent); + 724 .loc 1 317 19 view .LVU252 + 725 0108 2568 ldr r5, [r4] + 726 010a 25EA0605 bic r5, r5, r6 + 727 010e 2560 str r5, [r4] + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 728 .loc 1 318 9 is_stmt 1 view .LVU253 + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 729 .loc 1 318 19 is_stmt 0 view .LVU254 + 730 0110 6568 ldr r5, [r4, #4] + 731 0112 25EA0605 bic r5, r5, r6 + 732 0116 6560 str r5, [r4, #4] + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->RTSR &= ~((uint32_t)iocurrent); + 733 .loc 1 321 9 is_stmt 1 view .LVU255 + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** EXTI->RTSR &= ~((uint32_t)iocurrent); + 734 .loc 1 321 20 is_stmt 0 view .LVU256 + 735 0118 E568 ldr r5, [r4, #12] + 736 011a 25EA0605 bic r5, r5, r6 + 737 011e E560 str r5, [r4, #12] + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + ARM GAS /tmp/ccJPacwp.s page 22 + + + 738 .loc 1 322 9 is_stmt 1 view .LVU257 + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 739 .loc 1 322 20 is_stmt 0 view .LVU258 + 740 0120 A568 ldr r5, [r4, #8] + 741 0122 25EA0606 bic r6, r5, r6 + 742 .LVL62: + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 743 .loc 1 322 20 view .LVU259 + 744 0126 A660 str r6, [r4, #8] + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** SYSCFG->EXTICR[position >> 2] &= ~tmp; + 745 .loc 1 325 9 is_stmt 1 view .LVU260 + 746 .LVL63: + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 747 .loc 1 326 9 view .LVU261 + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 748 .loc 1 326 39 is_stmt 0 view .LVU262 + 749 0128 054E ldr r6, .L56 + 750 012a 0EF10204 add r4, lr, #2 + 751 012e 56F82450 ldr r5, [r6, r4, lsl #2] + 752 0132 25EA0705 bic r5, r5, r7 + 753 0136 46F82450 str r5, [r6, r4, lsl #2] + 754 013a 6EE7 b .L37 + 755 .LVL64: + 756 .L54: + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 757 .loc 1 345 1 view .LVU263 + 758 013c F0BD pop {r4, r5, r6, r7, pc} + 759 .LVL65: + 760 .L52: + 761 .LCFI5: + 762 .cfi_def_cfa_offset 0 + 763 .cfi_restore 4 + 764 .cfi_restore 5 + 765 .cfi_restore 6 + 766 .cfi_restore 7 + 767 .cfi_restore 14 + 768 .loc 1 345 1 view .LVU264 + 769 013e 7047 bx lr + 770 .L57: + 771 .align 2 + 772 .L56: + 773 0140 00380140 .word 1073821696 + 774 0144 00000240 .word 1073872896 + 775 0148 003C0140 .word 1073822720 + 776 .cfi_endproc + 777 .LFE142: + 779 .section .text.HAL_GPIO_ReadPin,"ax",%progbits + 780 .align 1 + 781 .global HAL_GPIO_ReadPin + 782 .syntax unified + 783 .thumb + 784 .thumb_func + 785 .fpu fpv5-d16 + 787 HAL_GPIO_ReadPin: + 788 .LVL66: + ARM GAS /tmp/ccJPacwp.s page 23 + + + 789 .LFB143: + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @} + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** @defgroup GPIO_Exported_Functions_Group2 IO operation functions + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief GPIO Read and Write + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** @verbatim + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** =============================================================================== + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** ##### IO operation functions ##### + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** =============================================================================== + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** @endverbatim + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @{ + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief Reads the specified input port pin. + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIOx where x can be (A..K) to select the GPIO peripheral. + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIO_Pin specifies the port bit to read. + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @retval The input port pin value. + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 790 .loc 1 371 1 is_stmt 1 view -0 + 791 .cfi_startproc + 792 @ args = 0, pretend = 0, frame = 0 + 793 @ frame_needed = 0, uses_anonymous_args = 0 + 794 @ link register save eliminated. + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIO_PinState bitstatus; + 795 .loc 1 372 3 view .LVU266 + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Check the parameters */ + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Pin)); + 796 .loc 1 375 3 view .LVU267 + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET) + 797 .loc 1 377 3 view .LVU268 + 798 .loc 1 377 13 is_stmt 0 view .LVU269 + 799 0000 0369 ldr r3, [r0, #16] + 800 .loc 1 377 6 view .LVU270 + 801 0002 1942 tst r1, r3 + 802 0004 01D0 beq .L60 + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** bitstatus = GPIO_PIN_SET; + 803 .loc 1 379 15 view .LVU271 + 804 0006 0120 movs r0, #1 + 805 .LVL67: + 806 .loc 1 379 15 view .LVU272 + 807 0008 7047 bx lr + 808 .LVL68: + 809 .L60: + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** else + ARM GAS /tmp/ccJPacwp.s page 24 + + + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** bitstatus = GPIO_PIN_RESET; + 810 .loc 1 383 15 view .LVU273 + 811 000a 0020 movs r0, #0 + 812 .LVL69: + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** return bitstatus; + 813 .loc 1 385 3 is_stmt 1 view .LVU274 + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 814 .loc 1 386 1 is_stmt 0 view .LVU275 + 815 000c 7047 bx lr + 816 .cfi_endproc + 817 .LFE143: + 819 .section .text.HAL_GPIO_WritePin,"ax",%progbits + 820 .align 1 + 821 .global HAL_GPIO_WritePin + 822 .syntax unified + 823 .thumb + 824 .thumb_func + 825 .fpu fpv5-d16 + 827 HAL_GPIO_WritePin: + 828 .LVL70: + 829 .LFB144: + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief Sets or clears the selected data port bit. + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @note This function uses GPIOx_BSRR register to allow atomic read/modify + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * accesses. In this way, there is no risk of an IRQ occurring between + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * the read and the modify access. + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIOx where x can be (A..K) to select the GPIO peripheral. + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIO_Pin specifies the port bit to be written. + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param PinState specifies the value to be written to the selected bit. + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * This parameter can be one of the GPIO_PinState enum values: + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @arg GPIO_PIN_RESET: to clear the port pin + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @arg GPIO_PIN_SET: to set the port pin + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @retval None + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 830 .loc 1 405 1 is_stmt 1 view -0 + 831 .cfi_startproc + 832 @ args = 0, pretend = 0, frame = 0 + 833 @ frame_needed = 0, uses_anonymous_args = 0 + 834 @ link register save eliminated. + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Check the parameters */ + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Pin)); + 835 .loc 1 407 3 view .LVU277 + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_PIN_ACTION(PinState)); + 836 .loc 1 408 3 view .LVU278 + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (PinState != GPIO_PIN_RESET) + 837 .loc 1 410 3 view .LVU279 + 838 .loc 1 410 6 is_stmt 0 view .LVU280 + 839 0000 0AB1 cbz r2, .L62 + ARM GAS /tmp/ccJPacwp.s page 25 + + + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->BSRR = GPIO_Pin; + 840 .loc 1 412 5 is_stmt 1 view .LVU281 + 841 .loc 1 412 17 is_stmt 0 view .LVU282 + 842 0002 8161 str r1, [r0, #24] + 843 0004 7047 bx lr + 844 .L62: + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** else + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->BSRR = (uint32_t)GPIO_Pin << 16; + 845 .loc 1 416 5 is_stmt 1 view .LVU283 + 846 .loc 1 416 38 is_stmt 0 view .LVU284 + 847 0006 0904 lsls r1, r1, #16 + 848 .LVL71: + 849 .loc 1 416 17 view .LVU285 + 850 0008 8161 str r1, [r0, #24] + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 851 .loc 1 418 1 view .LVU286 + 852 000a 7047 bx lr + 853 .cfi_endproc + 854 .LFE144: + 856 .section .text.HAL_GPIO_TogglePin,"ax",%progbits + 857 .align 1 + 858 .global HAL_GPIO_TogglePin + 859 .syntax unified + 860 .thumb + 861 .thumb_func + 862 .fpu fpv5-d16 + 864 HAL_GPIO_TogglePin: + 865 .LVL72: + 866 .LFB145: + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief Toggles the specified GPIO pins. + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIOx Where x can be (A..I) to select the GPIO peripheral. + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIO_Pin Specifies the pins to be toggled. + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @retval None + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 867 .loc 1 428 1 is_stmt 1 view -0 + 868 .cfi_startproc + 869 @ args = 0, pretend = 0, frame = 0 + 870 @ frame_needed = 0, uses_anonymous_args = 0 + 871 @ link register save eliminated. + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** uint32_t odr; + 872 .loc 1 429 3 view .LVU288 + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Check the parameters */ + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Pin)); + 873 .loc 1 432 3 view .LVU289 + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* get current Output Data Register value */ + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** odr = GPIOx->ODR; + ARM GAS /tmp/ccJPacwp.s page 26 + + + 874 .loc 1 435 3 view .LVU290 + 875 .loc 1 435 7 is_stmt 0 view .LVU291 + 876 0000 4369 ldr r3, [r0, #20] + 877 .LVL73: + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Set selected pins that were at low level, and reset ones that were high */ + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->BSRR = ((odr & GPIO_Pin) << GPIO_NUMBER) | (~odr & GPIO_Pin); + 878 .loc 1 438 3 is_stmt 1 view .LVU292 + 879 .loc 1 438 23 is_stmt 0 view .LVU293 + 880 0002 01EA0302 and r2, r1, r3 + 881 .loc 1 438 59 view .LVU294 + 882 0006 21EA0301 bic r1, r1, r3 + 883 .LVL74: + 884 .loc 1 438 51 view .LVU295 + 885 000a 41EA0241 orr r1, r1, r2, lsl #16 + 886 .loc 1 438 15 view .LVU296 + 887 000e 8161 str r1, [r0, #24] + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 888 .loc 1 439 1 view .LVU297 + 889 0010 7047 bx lr + 890 .cfi_endproc + 891 .LFE145: + 893 .section .text.HAL_GPIO_LockPin,"ax",%progbits + 894 .align 1 + 895 .global HAL_GPIO_LockPin + 896 .syntax unified + 897 .thumb + 898 .thumb_func + 899 .fpu fpv5-d16 + 901 HAL_GPIO_LockPin: + 902 .LVL75: + 903 .LFB146: + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief Locks GPIO Pins configuration registers. + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @note The locked registers are GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * GPIOx_PUPDR, GPIOx_AFRL and GPIOx_AFRH. + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @note The configuration of the locked GPIO pins can no longer be modified + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * until the next reset. + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIOx where x can be (A..F) to select the GPIO peripheral for STM32F7 family + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIO_Pin specifies the port bit to be locked. + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * This parameter can be any combination of GPIO_PIN_x where x can be (0..15). + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @retval None + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 904 .loc 1 453 1 is_stmt 1 view -0 + 905 .cfi_startproc + 906 @ args = 0, pretend = 0, frame = 8 + 907 @ frame_needed = 0, uses_anonymous_args = 0 + 908 @ link register save eliminated. + 909 .loc 1 453 1 is_stmt 0 view .LVU299 + 910 0000 82B0 sub sp, sp, #8 + 911 .LCFI6: + 912 .cfi_def_cfa_offset 8 + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** __IO uint32_t tmp = GPIO_LCKR_LCKK; + 913 .loc 1 454 3 is_stmt 1 view .LVU300 + ARM GAS /tmp/ccJPacwp.s page 27 + + + 914 .loc 1 454 17 is_stmt 0 view .LVU301 + 915 0002 4FF48033 mov r3, #65536 + 916 0006 0193 str r3, [sp, #4] + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Check the parameters */ + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** assert_param(IS_GPIO_PIN(GPIO_Pin)); + 917 .loc 1 457 3 is_stmt 1 view .LVU302 + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Apply lock key write sequence */ + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** tmp |= GPIO_Pin; + 918 .loc 1 460 3 view .LVU303 + 919 .loc 1 460 7 is_stmt 0 view .LVU304 + 920 0008 019B ldr r3, [sp, #4] + 921 000a 0B43 orrs r3, r3, r1 + 922 000c 0193 str r3, [sp, #4] + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->LCKR = tmp; + 923 .loc 1 462 3 is_stmt 1 view .LVU305 + 924 .loc 1 462 15 is_stmt 0 view .LVU306 + 925 000e 019B ldr r3, [sp, #4] + 926 0010 C361 str r3, [r0, #28] + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Reset LCKx bit(s): LCKK='0' + LCK[15-0] */ + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->LCKR = GPIO_Pin; + 927 .loc 1 464 3 is_stmt 1 view .LVU307 + 928 .loc 1 464 15 is_stmt 0 view .LVU308 + 929 0012 C161 str r1, [r0, #28] + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Set LCKx bit(s): LCKK='1' + LCK[15-0] */ + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** GPIOx->LCKR = tmp; + 930 .loc 1 466 3 is_stmt 1 view .LVU309 + 931 .loc 1 466 15 is_stmt 0 view .LVU310 + 932 0014 019B ldr r3, [sp, #4] + 933 0016 C361 str r3, [r0, #28] + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Read LCKR register. This read is mandatory to complete key lock sequence */ + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** tmp = GPIOx->LCKR; + 934 .loc 1 468 3 is_stmt 1 view .LVU311 + 935 .loc 1 468 14 is_stmt 0 view .LVU312 + 936 0018 C369 ldr r3, [r0, #28] + 937 .loc 1 468 7 view .LVU313 + 938 001a 0193 str r3, [sp, #4] + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Read again in order to confirm lock is active */ + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if ((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET) + 939 .loc 1 471 3 is_stmt 1 view .LVU314 + 940 .loc 1 471 13 is_stmt 0 view .LVU315 + 941 001c C369 ldr r3, [r0, #28] + 942 .loc 1 471 6 view .LVU316 + 943 001e 13F4803F tst r3, #65536 + 944 0022 02D0 beq .L67 + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** return HAL_OK; + 945 .loc 1 473 12 view .LVU317 + 946 0024 0020 movs r0, #0 + 947 .LVL76: + 948 .L66: + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** else + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + ARM GAS /tmp/ccJPacwp.s page 28 + + + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** return HAL_ERROR; + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 949 .loc 1 479 1 view .LVU318 + 950 0026 02B0 add sp, sp, #8 + 951 .LCFI7: + 952 .cfi_remember_state + 953 .cfi_def_cfa_offset 0 + 954 @ sp needed + 955 0028 7047 bx lr + 956 .LVL77: + 957 .L67: + 958 .LCFI8: + 959 .cfi_restore_state + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 960 .loc 1 477 12 view .LVU319 + 961 002a 0120 movs r0, #1 + 962 .LVL78: + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 963 .loc 1 477 12 view .LVU320 + 964 002c FBE7 b .L66 + 965 .cfi_endproc + 966 .LFE146: + 968 .section .text.HAL_GPIO_EXTI_Callback,"ax",%progbits + 969 .align 1 + 970 .weak HAL_GPIO_EXTI_Callback + 971 .syntax unified + 972 .thumb + 973 .thumb_func + 974 .fpu fpv5-d16 + 976 HAL_GPIO_EXTI_Callback: + 977 .LVL79: + 978 .LFB148: + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief This function handles EXTI interrupt request. + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIO_Pin Specifies the pins connected EXTI line + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @retval None + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin) + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* EXTI line interrupt detected */ + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** HAL_GPIO_EXTI_Callback(GPIO_Pin); + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /** + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @brief EXTI line detection callbacks. + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @param GPIO_Pin Specifies the pins connected EXTI line + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** * @retval None + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** __weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 979 .loc 1 502 1 is_stmt 1 view -0 + ARM GAS /tmp/ccJPacwp.s page 29 + + + 980 .cfi_startproc + 981 @ args = 0, pretend = 0, frame = 0 + 982 @ frame_needed = 0, uses_anonymous_args = 0 + 983 @ link register save eliminated. + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* Prevent unused argument(s) compilation warning */ + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** UNUSED(GPIO_Pin); + 984 .loc 1 504 3 view .LVU322 + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* NOTE: This function Should not be modified, when the callback is needed, + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** the HAL_GPIO_EXTI_Callback could be implemented in the user file + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** */ + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 985 .loc 1 509 1 is_stmt 0 view .LVU323 + 986 0000 7047 bx lr + 987 .cfi_endproc + 988 .LFE148: + 990 .section .text.HAL_GPIO_EXTI_IRQHandler,"ax",%progbits + 991 .align 1 + 992 .global HAL_GPIO_EXTI_IRQHandler + 993 .syntax unified + 994 .thumb + 995 .thumb_func + 996 .fpu fpv5-d16 + 998 HAL_GPIO_EXTI_IRQHandler: + 999 .LVL80: + 1000 .LFB147: + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* EXTI line interrupt detected */ + 1001 .loc 1 487 1 is_stmt 1 view -0 + 1002 .cfi_startproc + 1003 @ args = 0, pretend = 0, frame = 0 + 1004 @ frame_needed = 0, uses_anonymous_args = 0 + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** /* EXTI line interrupt detected */ + 1005 .loc 1 487 1 is_stmt 0 view .LVU325 + 1006 0000 08B5 push {r3, lr} + 1007 .LCFI9: + 1008 .cfi_def_cfa_offset 8 + 1009 .cfi_offset 3, -8 + 1010 .cfi_offset 14, -4 + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 1011 .loc 1 489 3 is_stmt 1 view .LVU326 + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 1012 .loc 1 489 7 is_stmt 0 view .LVU327 + 1013 0002 054B ldr r3, .L74 + 1014 0004 5B69 ldr r3, [r3, #20] + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** { + 1015 .loc 1 489 6 view .LVU328 + 1016 0006 0342 tst r3, r0 + 1017 0008 00D1 bne .L73 + 1018 .LVL81: + 1019 .L70: + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 1020 .loc 1 494 1 view .LVU329 + 1021 000a 08BD pop {r3, pc} + 1022 .LVL82: + 1023 .L73: + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** HAL_GPIO_EXTI_Callback(GPIO_Pin); + 1024 .loc 1 491 5 is_stmt 1 view .LVU330 + ARM GAS /tmp/ccJPacwp.s page 30 + + + 1025 000c 024B ldr r3, .L74 + 1026 000e 5861 str r0, [r3, #20] + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** } + 1027 .loc 1 492 5 view .LVU331 + 1028 0010 FFF7FEFF bl HAL_GPIO_EXTI_Callback + 1029 .LVL83: + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c **** + 1030 .loc 1 494 1 is_stmt 0 view .LVU332 + 1031 0014 F9E7 b .L70 + 1032 .L75: + 1033 0016 00BF .align 2 + 1034 .L74: + 1035 0018 003C0140 .word 1073822720 + 1036 .cfi_endproc + 1037 .LFE147: + 1039 .text + 1040 .Letext0: + 1041 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 1042 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 1043 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 1044 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 1045 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h" + ARM GAS /tmp/ccJPacwp.s page 31 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_gpio.c + /tmp/ccJPacwp.s:17 .text.HAL_GPIO_Init:0000000000000000 $t + /tmp/ccJPacwp.s:25 .text.HAL_GPIO_Init:0000000000000000 HAL_GPIO_Init + /tmp/ccJPacwp.s:504 .text.HAL_GPIO_Init:00000000000001e8 $d + /tmp/ccJPacwp.s:512 .text.HAL_GPIO_DeInit:0000000000000000 $t + /tmp/ccJPacwp.s:519 .text.HAL_GPIO_DeInit:0000000000000000 HAL_GPIO_DeInit + /tmp/ccJPacwp.s:773 .text.HAL_GPIO_DeInit:0000000000000140 $d + /tmp/ccJPacwp.s:780 .text.HAL_GPIO_ReadPin:0000000000000000 $t + /tmp/ccJPacwp.s:787 .text.HAL_GPIO_ReadPin:0000000000000000 HAL_GPIO_ReadPin + /tmp/ccJPacwp.s:820 .text.HAL_GPIO_WritePin:0000000000000000 $t + /tmp/ccJPacwp.s:827 .text.HAL_GPIO_WritePin:0000000000000000 HAL_GPIO_WritePin + /tmp/ccJPacwp.s:857 .text.HAL_GPIO_TogglePin:0000000000000000 $t + /tmp/ccJPacwp.s:864 .text.HAL_GPIO_TogglePin:0000000000000000 HAL_GPIO_TogglePin + /tmp/ccJPacwp.s:894 .text.HAL_GPIO_LockPin:0000000000000000 $t + /tmp/ccJPacwp.s:901 .text.HAL_GPIO_LockPin:0000000000000000 HAL_GPIO_LockPin + /tmp/ccJPacwp.s:969 .text.HAL_GPIO_EXTI_Callback:0000000000000000 $t + /tmp/ccJPacwp.s:976 .text.HAL_GPIO_EXTI_Callback:0000000000000000 HAL_GPIO_EXTI_Callback + /tmp/ccJPacwp.s:991 .text.HAL_GPIO_EXTI_IRQHandler:0000000000000000 $t + /tmp/ccJPacwp.s:998 .text.HAL_GPIO_EXTI_IRQHandler:0000000000000000 HAL_GPIO_EXTI_IRQHandler + /tmp/ccJPacwp.s:1035 .text.HAL_GPIO_EXTI_IRQHandler:0000000000000018 $d + +NO UNDEFINED SYMBOLS diff --git a/build/stm32f7xx_hal_gpio.o b/build/stm32f7xx_hal_gpio.o new file mode 100644 index 0000000..5c4402a Binary files /dev/null and b/build/stm32f7xx_hal_gpio.o differ diff --git a/build/stm32f7xx_hal_i2c.d b/build/stm32f7xx_hal_i2c.d new file mode 100644 index 0000000..3751e1e --- /dev/null +++ b/build/stm32f7xx_hal_i2c.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_i2c.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_i2c.lst b/build/stm32f7xx_hal_i2c.lst new file mode 100644 index 0000000..407cf2c --- /dev/null +++ b/build/stm32f7xx_hal_i2c.lst @@ -0,0 +1,28608 @@ +ARM GAS /tmp/ccVyGVF6.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_i2c.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.I2C_Flush_TXDR,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 I2C_Flush_TXDR: + 25 .LVL0: + 26 .LFB206: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @file stm32f7xx_hal_i2c.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * functionalities of the Inter Integrated Circuit (I2C) peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * + Initialization and de-initialization functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * + IO operation functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * + Peripheral State and Errors functions + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ****************************************************************************** + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @attention + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * Copyright (c) 2017 STMicroelectronics. + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * All rights reserved. + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * This software is licensed under terms that can be found in the LICENSE file + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in the root directory of this software component. + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ****************************************************************************** + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** @verbatim + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ============================================================================== + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ##### How to use this driver ##### + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ============================================================================== + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** The I2C HAL driver can be used as follows: + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#) Declare a I2C_HandleTypeDef handle structure, for example: + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_HandleTypeDef hi2c; + ARM GAS /tmp/ccVyGVF6.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#)Initialize the I2C low level resources by implementing the HAL_I2C_MspInit() API: + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (##) Enable the I2Cx interface clock + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (##) I2C pins configuration + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) Enable the clock for the I2C GPIOs + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) Configure I2C pins as alternate function open-drain + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (##) NVIC configuration if you need to use interrupt process + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) Configure the I2Cx interrupt priority + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) Enable the NVIC I2C IRQ Channel + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (##) DMA Configuration if you need to use DMA process + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) Declare a DMA_HandleTypeDef handle structure for + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the transmit or receive stream + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) Enable the DMAx interface clock using + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) Configure the DMA handle parameters + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) Configure the DMA Tx or Rx stream + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) Associate the initialized DMA handle to the hi2c DMA Tx or Rx handle + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) Configure the priority and enable the NVIC for the transfer complete interrupt on + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the DMA Tx or Rx stream + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#) Configure the Communication Clock Timing, Own Address1, Master Addressing mode, Dual Addres + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Own Address2, Own Address2 Mask, General call and Nostretch mode in the hi2c Init structure + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#) Initialize the I2C registers by calling the HAL_I2C_Init(), configures also the low level H + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (GPIO, CLOCK, NVIC...etc) by calling the customized HAL_I2C_MspInit(&hi2c) API. + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#) To check if target device is ready for communication, use the function HAL_I2C_IsDeviceRead + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#) For I2C IO and IO MEM operations, three operation modes are available within this driver : + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *** Polling mode IO operation *** + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ================================= + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Transmit in master mode an amount of data in blocking mode using HAL_I2C_Master_Transmit( + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Receive in master mode an amount of data in blocking mode using HAL_I2C_Master_Receive() + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Transmit in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Transmit() + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Receive in slave mode an amount of data in blocking mode using HAL_I2C_Slave_Receive() + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *** Polling mode IO MEM operation *** + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ===================================== + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Write an amount of data in blocking mode to a specific memory address using HAL_I2C_Mem_W + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Read an amount of data in blocking mode from a specific memory address using HAL_I2C_Mem_ + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *** Interrupt mode IO operation *** + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** =================================== + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Transmit in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Trans + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Receive in master mode an amount of data in non-blocking mode using HAL_I2C_Master_Receiv + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Transmit in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Transmi + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Receive in slave mode an amount of data in non-blocking mode using HAL_I2C_Slave_Receive_ + ARM GAS /tmp/ccVyGVF6.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback() + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Abort a master or memory I2C process communication with Interrupt using HAL_I2C_Master_Ab + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** This action will inform Master to generate a Stop condition to discard the communication + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *** Interrupt mode or DMA mode IO sequential operation *** + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ========================================================== + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (@) These interfaces allow to manage a sequential transfer with a repeated start condition + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** when a direction change during transfer + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) A specific option field manage the different steps of a sequential transfer + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Option field values are defined through I2C_XFEROPTIONS and are listed below: + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) I2C_FIRST_AND_LAST_FRAME: No sequential usage, functional is same as associated interfac + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** no sequential mode + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) I2C_FIRST_FRAME: Sequential usage, this option allow to manage a sequence with start con + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** and data to transfer without a final stop condition + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) I2C_FIRST_AND_NEXT_FRAME: Sequential usage (Master only), this option allow to manage a + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** start condition, address and data to transfer without a final stop cond + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** an then permit a call the same master sequential interface several time + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (like HAL_I2C_Master_Seq_Transmit_IT() then HAL_I2C_Master_Seq_Transmit + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Transmit_DMA() then HAL_I2C_Master_Seq_Transmit_D + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) I2C_NEXT_FRAME: Sequential usage, this option allow to manage a sequence with a restart + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** and with new data to transfer if the direction change or manage only th + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** transfer + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if no direction change and without a final stop condition in both cases + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) I2C_LAST_FRAME: Sequential usage, this option allow to manage a sequance with a restart + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** and with new data to transfer if the direction change or manage only th + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** transfer + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if no direction change and with a final stop condition in both cases + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) I2C_LAST_FRAME_NO_STOP: Sequential usage (Master only), this option allow to manage a re + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** after several call of the same master sequential interface several time + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (link with option I2C_FIRST_AND_NEXT_FRAME). + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Usage can, transfer several bytes one by one using + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Master_Seq_Transmit_IT + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_IT + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Transmit_DMA + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_DMA + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** with option I2C_FIRST_AND_NEXT_FRAME then I2C_NEXT_FRAME. + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Then usage of this option I2C_LAST_FRAME_NO_STOP at the last Transmit + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Receive sequence permit to call the opposite interface Receive or Tra + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** without stopping the communication and so generate a restart conditio + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) I2C_OTHER_FRAME: Sequential usage (Master only), this option allow to manage a restart c + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** each call of the same master sequential + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** interface. + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Usage can, transfer several bytes one by one with a restart with slave + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** each bytes using + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Master_Seq_Transmit_IT + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_IT + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Transmit_DMA + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** or HAL_I2C_Master_Seq_Receive_DMA + ARM GAS /tmp/ccVyGVF6.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** with option I2C_FIRST_FRAME then I2C_OTHER_FRAME. + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Then usage of this option I2C_OTHER_AND_LAST_FRAME at the last frame to + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** generation of STOP condition. + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Different sequential I2C interfaces are listed below: + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Sequential transmit in master I2C mode an amount of data in non-blocking mode using + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Master_Seq_Transmit_IT() or using HAL_I2C_Master_Seq_Transmit_DMA() + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) At transmission end of current frame transfer, HAL_I2C_MasterTxCpltCallback() is execut + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** users can add their own code by customization of function pointer HAL_I2C_MasterTxCpltC + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Sequential receive in master I2C mode an amount of data in non-blocking mode using + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Master_Seq_Receive_IT() or using HAL_I2C_Master_Seq_Receive_DMA() + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) At reception end of current frame transfer, HAL_I2C_MasterRxCpltCallback() is executed + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Abort a master or memory IT or DMA I2C process communication with Interrupt using HAL_I2 + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Enable/disable the Address listen mode in slave I2C mode using HAL_I2C_EnableListen_IT() + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_DisableListen_IT() + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) When address slave I2C match, HAL_I2C_AddrCallback() is executed and users can + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code to check the Address Match Code and the transmission direction reques + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (Write/Read). + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) At Listen mode end HAL_I2C_ListenCpltCallback() is executed and users can + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ListenCpltCallback() + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Sequential transmit in slave I2C mode an amount of data in non-blocking mode using + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Slave_Seq_Transmit_IT() or using HAL_I2C_Slave_Seq_Transmit_DMA() + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) At transmission end of current frame transfer, HAL_I2C_SlaveTxCpltCallback() is execute + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** users can add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCa + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Sequential receive in slave I2C mode an amount of data in non-blocking mode using + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Slave_Seq_Receive_IT() or using HAL_I2C_Slave_Seq_Receive_DMA() + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+++) At reception end of current frame transfer, HAL_I2C_SlaveRxCpltCallback() is executed a + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback() + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** This action will inform Master to generate a Stop condition to discard the communication + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *** Interrupt mode IO MEM operation *** + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ======================================= + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Write an amount of data in non-blocking mode with Interrupt to a specific memory address + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Mem_Write_IT() + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback() + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Read an amount of data in non-blocking mode with Interrupt from a specific memory address + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Mem_Read_IT() + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback() + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback() + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *** DMA mode IO operation *** + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ============================== + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Transmit in master mode an amount of data in non-blocking mode (DMA) using + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Master_Transmit_DMA() + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_MasterTxCpltCallback() is executed and users can + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterTxCpltCallback() + ARM GAS /tmp/ccVyGVF6.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Receive in master mode an amount of data in non-blocking mode (DMA) using + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Master_Receive_DMA() + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_MasterRxCpltCallback() is executed and users can + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MasterRxCpltCallback() + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Transmit in slave mode an amount of data in non-blocking mode (DMA) using + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Slave_Transmit_DMA() + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At transmission end of transfer, HAL_I2C_SlaveTxCpltCallback() is executed and users can + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveTxCpltCallback() + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Receive in slave mode an amount of data in non-blocking mode (DMA) using + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Slave_Receive_DMA() + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At reception end of transfer, HAL_I2C_SlaveRxCpltCallback() is executed and users can + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_SlaveRxCpltCallback() + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback() + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Abort a master or memory I2C process communication with Interrupt using HAL_I2C_Master_Ab + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) End of abort process, HAL_I2C_AbortCpltCallback() is executed and users can + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_AbortCpltCallback() + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Discard a slave I2C process communication using __HAL_I2C_GENERATE_NACK() macro. + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** This action will inform Master to generate a Stop condition to discard the communication + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *** DMA mode IO MEM operation *** + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ================================= + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Write an amount of data in non-blocking mode with DMA to a specific memory address using + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Mem_Write_DMA() + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At Memory end of write transfer, HAL_I2C_MemTxCpltCallback() is executed and users can + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemTxCpltCallback() + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Read an amount of data in non-blocking mode with DMA from a specific memory address using + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_Mem_Read_DMA() + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) At Memory end of read transfer, HAL_I2C_MemRxCpltCallback() is executed and users can + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_MemRxCpltCallback() + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) In case of transfer Error, HAL_I2C_ErrorCallback() function is executed and users can + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** add their own code by customization of function pointer HAL_I2C_ErrorCallback() + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *** I2C HAL driver macros list *** + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ================================== + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Below the list of most used macros in I2C HAL driver. + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) __HAL_I2C_ENABLE: Enable the I2C peripheral + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) __HAL_I2C_DISABLE: Disable the I2C peripheral + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) __HAL_I2C_GENERATE_NACK: Generate a Non-Acknowledge I2C peripheral in Slave mode + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) __HAL_I2C_GET_FLAG: Check whether the specified I2C flag is set or not + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) __HAL_I2C_CLEAR_FLAG: Clear the specified I2C pending flag + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) __HAL_I2C_ENABLE_IT: Enable the specified I2C interrupt + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) __HAL_I2C_DISABLE_IT: Disable the specified I2C interrupt + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *** Callback registration *** + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ============================================= + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1 + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** allows the user to configure dynamically the driver callbacks. + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Use Functions HAL_I2C_RegisterCallback() or HAL_I2C_RegisterAddrCallback() + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to register an interrupt callback. + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Function HAL_I2C_RegisterCallback() allows to register following callbacks: + ARM GAS /tmp/ccVyGVF6.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MasterTxCpltCallback : callback for Master transmission end of transfer. + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MasterRxCpltCallback : callback for Master reception end of transfer. + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer. + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) SlaveRxCpltCallback : callback for Slave reception end of transfer. + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) ListenCpltCallback : callback for end of listen mode. + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MemTxCpltCallback : callback for Memory transmission end of transfer. + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MemRxCpltCallback : callback for Memory reception end of transfer. + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) ErrorCallback : callback for error detection. + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) AbortCpltCallback : callback for abort completion process. + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MspInitCallback : callback for Msp Init. + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MspDeInitCallback : callback for Msp DeInit. + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** This function takes as parameters the HAL peripheral handle, the Callback ID + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** and a pointer to the user callback function. + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** For specific callback AddrCallback use dedicated register callbacks : HAL_I2C_RegisterAddrCall + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Use function HAL_I2C_UnRegisterCallback to reset a callback to the default + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** weak function. + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle, + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** and the Callback ID. + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** This function allows to reset following callbacks: + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MasterTxCpltCallback : callback for Master transmission end of transfer. + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MasterRxCpltCallback : callback for Master reception end of transfer. + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) SlaveTxCpltCallback : callback for Slave transmission end of transfer. + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) SlaveRxCpltCallback : callback for Slave reception end of transfer. + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) ListenCpltCallback : callback for end of listen mode. + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MemTxCpltCallback : callback for Memory transmission end of transfer. + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MemRxCpltCallback : callback for Memory reception end of transfer. + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) ErrorCallback : callback for error detection. + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) AbortCpltCallback : callback for abort completion process. + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MspInitCallback : callback for Msp Init. + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) MspDeInitCallback : callback for Msp DeInit. + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** For callback AddrCallback use dedicated register callbacks : HAL_I2C_UnRegisterAddrCallback(). + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** By default, after the HAL_I2C_Init() and when the state is HAL_I2C_STATE_RESET + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** all callbacks are set to the corresponding weak functions: + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** examples HAL_I2C_MasterTxCpltCallback(), HAL_I2C_MasterRxCpltCallback(). + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Exception done for MspInit and MspDeInit functions that are + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** reset to the legacy weak functions in the HAL_I2C_Init()/ HAL_I2C_DeInit() only when + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** these callbacks are null (not registered beforehand). + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** If MspInit or MspDeInit are not null, the HAL_I2C_Init()/ HAL_I2C_DeInit() + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state. + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Callbacks can be registered/unregistered in HAL_I2C_STATE_READY state only. + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Exception done MspInit/MspDeInit functions that can be registered/unregistered + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** in HAL_I2C_STATE_READY or HAL_I2C_STATE_RESET state, + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** thus registered (user) MspInit/DeInit callbacks can be used during the Init/DeInit. + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Then, the user first registers the MspInit/MspDeInit user callbacks + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** using HAL_I2C_RegisterCallback() before calling HAL_I2C_DeInit() + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** or HAL_I2C_Init() function. + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** not defined, the callback registration feature is not available and all callbacks + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** are set to the corresponding weak functions. + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] + ARM GAS /tmp/ccVyGVF6.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (@) You can refer to the I2C HAL driver header file for more useful macros + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** @endverbatim + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Includes ------------------------------------------------------------------*/ + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #include "stm32f7xx_hal.h" + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @addtogroup STM32F7xx_HAL_Driver + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @defgroup I2C I2C + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C HAL module driver + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #ifdef HAL_I2C_MODULE_ENABLED + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private typedef -----------------------------------------------------------*/ + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private define ------------------------------------------------------------*/ + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @defgroup I2C_Private_Define I2C Private Define + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define TIMING_CLEAR_MASK (0xF0FFFFFFU) /*!< I2C TIMING clear register Mask */ + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_TIMEOUT_ADDR (10000U) /*!< 10 s */ + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_TIMEOUT_BUSY (25U) /*!< 25 ms */ + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_TIMEOUT_DIR (25U) /*!< 25 ms */ + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_TIMEOUT_RXNE (25U) /*!< 25 ms */ + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_TIMEOUT_STOPF (25U) /*!< 25 ms */ + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_TIMEOUT_TC (25U) /*!< 25 ms */ + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_TIMEOUT_TCR (25U) /*!< 25 ms */ + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_TIMEOUT_TXIS (25U) /*!< 25 ms */ + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_TIMEOUT_FLAG (25U) /*!< 25 ms */ + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define MAX_NBYTE_SIZE 255U + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define SLAVE_ADDR_SHIFT 7U + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define SLAVE_ADDR_MSK 0x06U + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private define for @ref PreviousState usage */ + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_STATE_MSK ((uint32_t)((uint32_t)((uint32_t)HAL_I2C_STATE_BUSY_TX | \ + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)HAL_I2C_STATE_BUSY_RX) & \ + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)(~((uint32_t)HAL_I2C_STATE_READY)))) + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*!< Mask State define, keep only RX and TX bits */ + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_STATE_NONE ((uint32_t)(HAL_I2C_MODE_NONE)) + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*!< Default Value */ + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_STATE_MASTER_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MASTER)) + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*!< Master Busy TX, combinaison of State LSB and Mode enum */ + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_STATE_MASTER_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MASTER)) + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*!< Master Busy RX, combinaison of State LSB and Mode enum */ + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_STATE_SLAVE_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_SLAVE)) + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*!< Slave Busy TX, combinaison of State LSB and Mode enum */ + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_STATE_SLAVE_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + ARM GAS /tmp/ccVyGVF6.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_SLAVE)) + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*!< Slave Busy RX, combinaison of State LSB and Mode enum */ + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_STATE_MEM_BUSY_TX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_TX & I2C_STATE_MSK) | \ + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MEM)) + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*!< Memory Busy TX, combinaison of State LSB and Mode enum */ + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_STATE_MEM_BUSY_RX ((uint32_t)(((uint32_t)HAL_I2C_STATE_BUSY_RX & I2C_STATE_MSK) | \ + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)HAL_I2C_MODE_MEM)) + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*!< Memory Busy RX, combinaison of State LSB and Mode enum */ + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private define to centralize the enable/disable of Interrupts */ + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_XFER_TX_IT (uint16_t)(0x0001U) /*!< Bit field can be combinated with + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** @ref I2C_XFER_LISTEN_IT */ + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_XFER_RX_IT (uint16_t)(0x0002U) /*!< Bit field can be combinated with + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** @ref I2C_XFER_LISTEN_IT */ + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_XFER_LISTEN_IT (uint16_t)(0x8000U) /*!< Bit field can be combinated with @ref I2 + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** and @ref I2C_XFER_RX_IT */ + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_XFER_ERROR_IT (uint16_t)(0x0010U) /*!< Bit definition to manage addition of glo + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** and NACK treatment */ + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_XFER_CPLT_IT (uint16_t)(0x0020U) /*!< Bit definition to manage only STOP evene + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_XFER_RELOAD_IT (uint16_t)(0x0040U) /*!< Bit definition to manage only Reload of + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private define Sequential Transfer Options default/reset value */ + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_NO_OPTION_FRAME (0xFFFF0000U) + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @} + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private macros ------------------------------------------------------------*/ + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @addtogroup I2C_Private_Macro + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Macro to get remaining data to transfer on DMA side */ + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #define I2C_GET_DMA_REMAIN_DATA(__HANDLE__) __HAL_DMA_GET_COUNTER(__HANDLE__) + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @} + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private variables ---------------------------------------------------------*/ + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private function prototypes -----------------------------------------------*/ + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @defgroup I2C_Private_Functions I2C Private Functions + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private functions to handle DMA transfer */ + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma); + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma); + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma); + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma); + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMAError(DMA_HandleTypeDef *hdma); + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMAAbort(DMA_HandleTypeDef *hdma); + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private functions to handle IT transfer */ + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c); + ARM GAS /tmp/ccVyGVF6.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c); + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags); + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode); + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private functions to handle IT transfer */ + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart); + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t T + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart); + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private functions for I2C transfer IRQ handler */ + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources); + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources); + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources); + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources); + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources); + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources); + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private functions to handle flags during polling transfer */ + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Timeout, uint32_t Tickstart); + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart); + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart); + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart); + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart); + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private functions to centralize the enable/disable of Interrupts */ + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest); + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest); + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private function to treat different error callback */ + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c); + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private function to flush TXDR register */ + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c); + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private function to handle start, restart or stop a transfer */ + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Request); + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Private function to Convert Specific options */ + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c); + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + ARM GAS /tmp/ccVyGVF6.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @} + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Exported functions --------------------------------------------------------*/ + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions I2C Exported Functions + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group1 Initialization and de-initialization functions + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Initialization and Configuration functions + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** @verbatim + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** =============================================================================== + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ##### Initialization and de-initialization functions ##### + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** =============================================================================== + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] This subsection provides a set of functions allowing to initialize and + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** deinitialize the I2Cx peripheral: + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) User must Implement HAL_I2C_MspInit() function in which he configures + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ). + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Call the function HAL_I2C_Init() to configure the selected device with + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the selected configuration: + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Clock Timing + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Own Address 1 + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Addressing mode (Master, Slave) + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Dual Addressing mode + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Own Address 2 + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Own Address 2 Mask + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) General call mode + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Nostretch mode + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (+) Call the function HAL_I2C_DeInit() to restore the default configuration + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** of the selected I2Cx peripheral. + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** @endverbatim + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Initializes the I2C according to the specified parameters + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in the I2C_InitTypeDef and initialize the associated handle. + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the I2C handle allocation */ + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c == NULL) + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + ARM GAS /tmp/ccVyGVF6.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_RESET) + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Allocate lock resource and initialize it */ + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Lock = HAL_UNLOCKED; + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Init the I2C Callback settings */ + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallback + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallback + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallback + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallback + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallback + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->MspInitCallback == NULL) + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit */ + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspInitCallback(hi2c); + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_MspInit(hi2c); + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY; + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable the selected I2C peripheral */ + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_DISABLE(hi2c); + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*---------------------------- I2Cx TIMINGR Configuration ------------------*/ + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Configure I2Cx: Frequency range */ + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Own Address1 before set the Own Address1 configuration */ + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Configure I2Cx: Own Address1 and ack own address1 mode */ + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else /* I2C_ADDRESSINGMODE_10BIT */ + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*---------------------------- I2Cx CR2 Configuration ----------------------*/ + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Configure I2Cx: Addressing Master mode */ + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** SET_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear the I2C ADD10 bit */ + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** CLEAR_BIT(hi2c->Instance->CR2, I2C_CR2_ADD10); + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Own Address2 before set the Own Address2 configuration */ + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Configure I2Cx: Dual mode and Own Address2 */ + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /*---------------------------- I2Cx CR1 Configuration ----------------------*/ + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Configure I2Cx: Generalcall and NoStretch mode */ + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the selected I2C peripheral */ + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_ENABLE(hi2c); + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief DeInitialize the I2C peripheral. + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_DeInit(I2C_HandleTypeDef *hi2c) + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the I2C handle allocation */ + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c == NULL) + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ + ARM GAS /tmp/ccVyGVF6.s page 13 + + + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY; + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable the I2C Peripheral Clock */ + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_DISABLE(hi2c); + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->MspDeInitCallback == NULL) + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit */ + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspDeInitCallback(hi2c); + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_MspDeInit(hi2c); + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_RESET; + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Release Lock */ + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Initialize the I2C MSP. + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c) + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_MspInit could be implemented in the user file + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief DeInitialize the I2C MSP. + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_MspDeInit(I2C_HandleTypeDef *hi2c) + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); + ARM GAS /tmp/ccVyGVF6.s page 14 + + + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_MspDeInit could be implemented in the user file + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Register a User I2C Callback + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * To be used instead of the weak predefined callback + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note The HAL_I2C_RegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_RES + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * to register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID. + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param CallbackID ID of the callback to be registered + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * This parameter can be one of the following values: + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pCallback pointer to the Callback function + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_RegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Callb + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** pI2C_CallbackTypeDef pCallback) + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (pCallback == NULL) + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update the error code */ + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** switch (CallbackID) + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = pCallback; + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = pCallback; + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = pCallback; + ARM GAS /tmp/ccVyGVF6.s page 15 + + + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = pCallback; + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_LISTEN_COMPLETE_CB_ID : + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ListenCpltCallback = pCallback; + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MEM_TX_COMPLETE_CB_ID : + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MemTxCpltCallback = pCallback; + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MEM_RX_COMPLETE_CB_ID : + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MemRxCpltCallback = pCallback; + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_ERROR_CB_ID : + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCallback = pCallback; + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_ABORT_CB_ID : + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AbortCpltCallback = pCallback; + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspInitCallback = pCallback; + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspDeInitCallback = pCallback; + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** default : + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update the error code */ + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return error status */ + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (HAL_I2C_STATE_RESET == hi2c->State) + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** switch (CallbackID) + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspInitCallback = pCallback; + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspDeInitCallback = pCallback; + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** default : + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update the error code */ + ARM GAS /tmp/ccVyGVF6.s page 16 + + + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return error status */ + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update the error code */ + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return error status */ + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return status; + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Unregister an I2C Callback + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * I2C callback is redirected to the weak predefined callback + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note The HAL_I2C_UnRegisterCallback() may be called before HAL_I2C_Init() in HAL_I2C_STATE_R + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * to un-register callbacks for HAL_I2C_MSPINIT_CB_ID and HAL_I2C_MSPDEINIT_CB_ID. + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param CallbackID ID of the callback to be unregistered + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * This parameter can be one of the following values: + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * This parameter can be one of the following values: + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_TX_COMPLETE_CB_ID Master Tx Transfer completed callback ID + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MASTER_RX_COMPLETE_CB_ID Master Rx Transfer completed callback ID + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_TX_COMPLETE_CB_ID Slave Tx Transfer completed callback ID + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_SLAVE_RX_COMPLETE_CB_ID Slave Rx Transfer completed callback ID + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_LISTEN_COMPLETE_CB_ID Listen Complete callback ID + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_TX_COMPLETE_CB_ID Memory Tx Transfer callback ID + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MEM_RX_COMPLETE_CB_ID Memory Rx Transfer completed callback ID + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_ERROR_CB_ID Error callback ID + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_ABORT_CB_ID Abort callback ID + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPINIT_CB_ID MspInit callback ID + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref HAL_I2C_MSPDEINIT_CB_ID MspDeInit callback ID + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_UnRegisterCallback(I2C_HandleTypeDef *hi2c, HAL_I2C_CallbackIDTypeDef Cal + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** switch (CallbackID) + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MASTER_TX_COMPLETE_CB_ID : + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MasterTxCpltCallback = HAL_I2C_MasterTxCpltCallback; /* Legacy weak MasterTxCpltCallb + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MASTER_RX_COMPLETE_CB_ID : + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MasterRxCpltCallback = HAL_I2C_MasterRxCpltCallback; /* Legacy weak MasterRxCpltCallb + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + ARM GAS /tmp/ccVyGVF6.s page 17 + + + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_SLAVE_TX_COMPLETE_CB_ID : + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback = HAL_I2C_SlaveTxCpltCallback; /* Legacy weak SlaveTxCpltCallba + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_SLAVE_RX_COMPLETE_CB_ID : + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback = HAL_I2C_SlaveRxCpltCallback; /* Legacy weak SlaveRxCpltCallba + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_LISTEN_COMPLETE_CB_ID : + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ListenCpltCallback = HAL_I2C_ListenCpltCallback; /* Legacy weak ListenCpltCallbac + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MEM_TX_COMPLETE_CB_ID : + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MemTxCpltCallback = HAL_I2C_MemTxCpltCallback; /* Legacy weak MemTxCpltCallback + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MEM_RX_COMPLETE_CB_ID : + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MemRxCpltCallback = HAL_I2C_MemRxCpltCallback; /* Legacy weak MemRxCpltCallback + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_ERROR_CB_ID : + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCallback = HAL_I2C_ErrorCallback; /* Legacy weak ErrorCallback + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_ABORT_CB_ID : + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AbortCpltCallback = HAL_I2C_AbortCpltCallback; /* Legacy weak AbortCpltCallback + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** default : + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update the error code */ + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return error status */ + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (HAL_I2C_STATE_RESET == hi2c->State) + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** switch (CallbackID) + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MSPINIT_CB_ID : + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspInitCallback = HAL_I2C_MspInit; /* Legacy weak MspInit + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** case HAL_I2C_MSPDEINIT_CB_ID : + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MspDeInitCallback = HAL_I2C_MspDeInit; /* Legacy weak MspDeInit + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + ARM GAS /tmp/ccVyGVF6.s page 18 + + + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** default : + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update the error code */ + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return error status */ + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update the error code */ + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return error status */ + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return status; + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Register the Slave Address Match I2C Callback + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * To be used instead of the weak HAL_I2C_AddrCallback() predefined callback + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pCallback pointer to the Address Match Callback function + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_RegisterAddrCallback(I2C_HandleTypeDef *hi2c, pI2C_AddrCallbackTypeDef pC + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (pCallback == NULL) + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update the error code */ + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AddrCallback = pCallback; + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update the error code */ + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return error status */ + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return status; +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 19 + + +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief UnRegister the Slave Address Match I2C Callback +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * Info Ready I2C Callback is redirected to the weak HAL_I2C_AddrCallback() predefined cal +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_UnRegisterAddrCallback(I2C_HandleTypeDef *hi2c) +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_I2C_STATE_READY == hi2c->State) +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AddrCallback = HAL_I2C_AddrCallback; /* Legacy weak AddrCallback */ +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update the error code */ +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_INVALID_CALLBACK; +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return error status */ +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return status; +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @} +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group2 Input and Output operation functions +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Data transfers functions +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** @verbatim +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** =============================================================================== +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ##### IO operation functions ##### +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** =============================================================================== +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** This subsection provides a set of functions allowing to manage the I2C data +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** transfers. +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#) There are two modes of transfer: +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) Blocking mode : The communication is performed in the polling mode. +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** The status of all data processing is returned by the same function +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** after finishing transfer. +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) No-Blocking mode : The communication is performed using Interrupts +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** or DMA. These functions return the status of the transfer startup. +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** The end of the data processing will be indicated through the +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dedicated I2C IRQ when using Interrupt mode or the DMA IRQ when +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** using DMA mode. +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#) Blocking mode functions are : +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit() + ARM GAS /tmp/ccVyGVF6.s page 20 + + +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive() +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit() +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive() +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write() +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read() +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_IsDeviceReady() +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#) No-Blocking mode functions with Interrupt are : +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit_IT() +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive_IT() +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit_IT() +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive_IT() +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write_IT() +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read_IT() +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Transmit_IT() +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Receive_IT() +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Transmit_IT() +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Receive_IT() +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_EnableListen_IT() +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_DisableListen_IT() +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Abort_IT() +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#) No-Blocking mode functions with DMA are : +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Transmit_DMA() +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Receive_DMA() +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Slave_Transmit_DMA() +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Slave_Receive_DMA() +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Mem_Write_DMA() +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Mem_Read_DMA() +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Transmit_DMA() +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Master_Seq_Receive_DMA() +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Transmit_DMA() +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_Slave_Seq_Receive_DMA() +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (#) A set of Transfer Complete Callbacks are provided in non Blocking mode: +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_MasterTxCpltCallback() +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_MasterRxCpltCallback() +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_SlaveTxCpltCallback() +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_SlaveRxCpltCallback() +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_MemTxCpltCallback() +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_MemRxCpltCallback() +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_AddrCallback() +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_ListenCpltCallback() +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_ErrorCallback() +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (++) HAL_I2C_AbortCpltCallback() +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** @endverbatim +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Transmits in master mode an amount of data in blocking mode. +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer + ARM GAS /tmp/ccVyGVF6.s page 21 + + +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pD +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t Size, uint32_t Timeout) +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Init tickstart for timeout management*/ +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tickstart = HAL_GetTick(); +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferSize > 0U) +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX register */ +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + ARM GAS /tmp/ccVyGVF6.s page 22 + + +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), xfermode, +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (hi2c->XferCount > 0U) +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TXIS flag is set */ +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TCR flag is set */ +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until STOPF flag is set */ +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 23 + + +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag */ +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear Configuration Register 2 */ +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Receives in master mode an amount of data in blocking mode. +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +1258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pDa +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t Size, uint32_t Timeout) +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Init tickstart for timeout management*/ +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tickstart = HAL_GetTick(); +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + ARM GAS /tmp/ccVyGVF6.s page 24 + + +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (hi2c->XferCount > 0U) +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until RXNE flag is set */ +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Read data from RXDR */ +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +1315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +1318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TCR flag is set */ +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +1328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); +1338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ + ARM GAS /tmp/ccVyGVF6.s page 25 + + +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until STOPF flag is set */ +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag */ +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear Configuration Register 2 */ +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Transmits in slave mode an amount of data in blocking mode. +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +1373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +1374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +1376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Transmit(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Timeout) +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; +1382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t tmpXferCount; +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef error; +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +1386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +1394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Init tickstart for timeout management*/ +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tickstart = HAL_GetTick(); +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + ARM GAS /tmp/ccVyGVF6.s page 26 + + +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX data if no stretch enable */ +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX register */ +1414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until ADDR flag is set */ +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) +1425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +1431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ADDR flag */ +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If 10bit addressing mode is selected */ +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until ADDR flag is set */ +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +1449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ADDR flag */ +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); +1455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 27 + + +1457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until DIR flag is set Transmitter mode */ +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, RESET, Timeout, tickstart) != HAL_OK) +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (hi2c->XferCount > 0U) +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TXIS flag is set */ +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +1473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +1481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +1484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until AF flag is set */ +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** error = I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_AF, RESET, Timeout, tickstart); +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (error != HAL_OK) +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check that I2C transfer finished */ +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Mean XferCount == 0 */ +1496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpXferCount = hi2c->XferCount; +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->ErrorCode == HAL_I2C_ERROR_AF) && (tmpXferCount == 0U)) +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset ErrorCode to NONE */ +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); + ARM GAS /tmp/ccVyGVF6.s page 28 + + +1514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear AF flag */ +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +1517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until STOP flag is set */ +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +1520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP flag */ +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until BUSY flag is reset */ +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) +1533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +1544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +1549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in blocking mode +1558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +1559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +1560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +1561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +1564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Receive(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size, +1566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Timeout) +1567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) + ARM GAS /tmp/ccVyGVF6.s page 29 + + +1571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +1573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +1579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Init tickstart for timeout management*/ +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tickstart = HAL_GetTick(); +1582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; +1585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +1586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +1589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +1590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +1592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ +1594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; +1595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until ADDR flag is set */ +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_ADDR, RESET, Timeout, tickstart) != HAL_OK) +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ADDR flag */ +1605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until DIR flag is reset Receiver mode */ +1608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_DIR, SET, Timeout, tickstart) != HAL_OK) +1609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (hi2c->XferCount > 0U) +1616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until RXNE flag is set */ +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnRXNEFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +1619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Store Last receive data if any */ +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) +1625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Read data from RXDR */ +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; + ARM GAS /tmp/ccVyGVF6.s page 30 + + +1628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +1631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +1634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Read data from RXDR */ +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; +1641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +1643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +1644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +1646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +1647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until STOP flag is set */ +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +1651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP flag */ +1658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +1659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until BUSY flag is reset */ +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, Timeout, tickstart) != HAL_OK) +1662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +1666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +1669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +1670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +1672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +1673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +1675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +1678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 31 + + +1685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Transmit in master mode an amount of data in non-blocking mode with Interrupt +1687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +1690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +1693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +1694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t Size) +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; +1699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) +1703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +1711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +1713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +1717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +1718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; +1719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +1723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; +1729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferSize > 0U) +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX register */ +1736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +1741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 32 + + +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +1743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), xfermode, +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); +1747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, +1751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); +1752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +1755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +1756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +1758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +1759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +1760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ +1762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +1763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +1764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +1765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +1768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Receive in master mode an amount of data in non-blocking mode with Interrupt +1777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +1778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +1779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +1780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +1781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +1782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +1783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +1784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t * +1786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t Size) +1787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; +1789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +1791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) +1793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); + ARM GAS /tmp/ccVyGVF6.s page 33 + + +1799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +1803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +1805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; +1809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +1811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +1813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; +1814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +1818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; +1819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +1822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_READ +1824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +1826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +1827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +1829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +1830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +1831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ +1833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +1834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +1835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +1836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); +1837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +1839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Transmit in slave mode an amount of data in non-blocking mode with Interrupt +1848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +1849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +1850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +1851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +1852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +1853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +1855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 34 + + +1856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +1857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +1860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +1862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +1864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ +1866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; +1867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +1869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +1870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +1872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +1873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; +1874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX data if no stretch enable */ +1876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) +1877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX register */ +1879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +1880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +1881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +1883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +1884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +1886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +1887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +1890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +1891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +1893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +1894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +1895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ +1897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +1898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +1899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +1900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); +1901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +1903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in non-blocking mode with Interrupt +1912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + ARM GAS /tmp/ccVyGVF6.s page 35 + + +1913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +1914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +1915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +1916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +1917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +1918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +1919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +1921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +1924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +1926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; +1927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +1928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ +1930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; +1931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +1934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +1936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +1937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; +1938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +1940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +1943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +1944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ +1947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +1949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +1950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); +1951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +1953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +1955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +1961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Transmit in master mode an amount of data in non-blocking mode with DMA +1962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +1963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +1965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +1966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +1967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +1969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + ARM GAS /tmp/ccVyGVF6.s page 36 + + +1970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t +1971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t Size) +1972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; +1974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; +1975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; +1976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +1978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) +1980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +1982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +1983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +1985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +1986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +1988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +1990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +1992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +1994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; +1996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +1998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +2000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; +2006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferSize > 0U) +2009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX register */ +2011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +2012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +2016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** sizetoxfer = hi2c->XferSize; +2018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +2020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferSize > 0U) +2023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +2025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ + ARM GAS /tmp/ccVyGVF6.s page 37 + + +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; +2028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the DMA error callback */ +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; +2034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; +2035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, +2038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +2043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +2045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; +2048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)(hi2c->XferSize + 1U), +2060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode, I2C_GENERATE_START_WRITE); +2061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update XferCount value */ +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; +2064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +2069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +2070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ +2072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +2082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ + ARM GAS /tmp/ccVyGVF6.s page 38 + + +2084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; +2085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ +2095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; +2096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +2098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and generate START condition */ +2099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, I2C_AUTOEND_MODE, +2100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); +2101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +2106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +2107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +2108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ +2109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +2110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +2111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +2112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); +2113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +2116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +2124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Receive in master mode an amount of data in non-blocking mode with DMA +2125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +2126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +2127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +2128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +2129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +2130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t +2134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t Size) +2135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; +2137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; +2138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +2140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 39 + + +2141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) +2142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +2148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; +2151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +2152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +2154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +2155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +2156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +2157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; +2158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +2160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; +2163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; +2168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferSize > 0U) +2171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +2173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ +2175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; +2176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the DMA error callback */ +2178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; +2179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ +2181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; +2182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; +2183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +2185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)p +2186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); +2187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +2191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +2195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; +2196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ + ARM GAS /tmp/ccVyGVF6.s page 40 + + +2198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) +2204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +2206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to read and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART * +2207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, I2C_GENERATE_START_ +2208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update XferCount value */ +2210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; +2211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +2218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ +2219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); +2220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ +2222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; +2223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +2227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +2228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +2229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; +2232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ +2242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; +2243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +2245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to read and generate START condition */ +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, +2247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); +2248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +2253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +2254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ + ARM GAS /tmp/ccVyGVF6.s page 41 + + +2255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ +2256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +2257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +2258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +2259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); +2260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +2263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +2271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Transmit in slave mode an amount of data in non-blocking mode with DMA +2272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +2273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +2275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +2276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +2277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +2278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size +2279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; +2281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +2283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +2285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +2287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +2291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +2293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; +2294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +2295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +2297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +2298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +2299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +2300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +2301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; +2302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX data if no stretch enable */ +2304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->Init.NoStretchMode == I2C_NOSTRETCH_ENABLE) +2305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX register */ +2307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +2308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +2309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; + ARM GAS /tmp/ccVyGVF6.s page 42 + + +2312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +2314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +2315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount != 0U) +2318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +2320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ +2322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; +2323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the DMA error callback */ +2325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; +2326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ +2328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; +2329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; +2330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +2332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, +2333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, +2334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); +2335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +2339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +2340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +2341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +2343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; +2344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) +2352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +2360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +2361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +2362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ +2363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); +2364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ +2366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; +2367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else + ARM GAS /tmp/ccVyGVF6.s page 43 + + +2369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +2371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +2372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +2373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +2375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; +2376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ +2386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; +2387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +2392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +2393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +2394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ +2395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); +2396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +2399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +2407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Receive in slave mode an amount of data in non-blocking mode with DMA +2408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +2410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +2411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +2412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +2413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +2414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) +2415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; +2417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +2419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +2421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +2423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ + ARM GAS /tmp/ccVyGVF6.s page 44 + + +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +2427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +2429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; +2430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +2431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +2433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +2434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +2435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +2436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +2437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; +2438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +2440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ +2442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; +2443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the DMA error callback */ +2445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; +2446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ +2448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; +2449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; +2450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +2452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pDa +2453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); +2454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +2458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +2459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +2460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; +2463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) +2471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ +2473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; +2474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +2479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +2480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +2481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ +2482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); + ARM GAS /tmp/ccVyGVF6.s page 45 + + +2483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ +2485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; +2486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +2490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +2491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +2492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +2494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; +2495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +2503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +2511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Write an amount of data in blocking mode to a specific memory address +2512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +2513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +2514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +2515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +2516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddress Internal memory address +2517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address +2518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +2519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +2520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +2521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +2522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +2523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddre +2524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Ti +2525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; +2527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +2529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); +2530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +2532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +2534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +2536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ + ARM GAS /tmp/ccVyGVF6.s page 46 + + +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +2541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Init tickstart for timeout management*/ +2543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tickstart = HAL_GetTick(); +2544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK +2546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +2551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +2553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +2555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +2556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +2557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +2558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ +2560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL +2561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE */ +2568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +2569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +2571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTST +2572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +2576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTS +2577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** do +2580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TXIS flag is set */ +2582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +2583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +2588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +2589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +2592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +2594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +2595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) + ARM GAS /tmp/ccVyGVF6.s page 47 + + +2597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TCR flag is set */ +2599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) +2600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +2605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +2607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, +2608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); +2609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +2613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, +2614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); +2615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } while (hi2c->XferCount > 0U); +2619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ +2621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ +2622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +2623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag */ +2628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +2629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear Configuration Register 2 */ +2631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); +2632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +2634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +2635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +2640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +2648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Read an amount of data in blocking mode from a specific memory address +2649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +2650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +2651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +2652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +2653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddress Internal memory address + ARM GAS /tmp/ccVyGVF6.s page 48 + + +2654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address +2655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +2656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +2657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +2658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +2659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +2660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddres +2661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Tim +2662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; +2664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +2666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); +2667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +2669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +2671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +2673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +2678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Init tickstart for timeout management*/ +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tickstart = HAL_GetTick(); +2681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_BUSY, SET, I2C_TIMEOUT_BUSY, tickstart) != HAL_OK +2683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +2688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; +2689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +2690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +2692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +2693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +2694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +2695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ +2697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_RequestMemoryRead(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_ +2698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +2705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ +2706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +2707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +2709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, +2710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); + ARM GAS /tmp/ccVyGVF6.s page 49 + + +2711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +2715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, +2716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); +2717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** do +2720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until RXNE flag is set */ +2722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_RXNE, RESET, Timeout, tickstart) != HAL_OK) +2723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Read data from RXDR */ +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; +2729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +2731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +2732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +2734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +2735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) +2737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TCR flag is set */ +2739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, tickstart) != HAL_OK) +2740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +2745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +2747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, +2748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); +2749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +2753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, +2754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); +2755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } while (hi2c->XferCount > 0U); +2758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ +2760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ +2761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnSTOPFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) +2762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag */ +2767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); + ARM GAS /tmp/ccVyGVF6.s page 50 + + +2768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear Configuration Register 2 */ +2770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); +2771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +2773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +2774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +2779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +2786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Write an amount of data in non-blocking mode with Interrupt to a specific memory addres +2787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +2788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +2789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +2790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +2791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddress Internal memory address +2792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address +2793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +2794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +2795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +2796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +2797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Write_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd +2798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +2799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +2801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); +2802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +2804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +2806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +2808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) +2812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +2817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +2818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +2820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; +2821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +2822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +2824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 0U; + ARM GAS /tmp/ccVyGVF6.s page 51 + + +2825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +2826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +2827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +2828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT; +2829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; +2830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 8Bit */ +2832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) +2833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prefetch Memory Address */ +2835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); +2836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset Memaddress content */ +2838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; +2839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 16Bit */ +2841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ +2844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); +2845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ +2847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); +2848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ +2850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_W +2851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +2856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +2857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +2858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ +2860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +2861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +2863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); +2864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +2874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Read an amount of data in non-blocking mode with Interrupt from a specific memory addre +2875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +2876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +2877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +2878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +2879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddress Internal memory address +2880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address +2881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer + ARM GAS /tmp/ccVyGVF6.s page 52 + + +2882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +2883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +2884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +2885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Read_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAdd +2886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +2887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +2889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); +2890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +2892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +2894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +2896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) +2900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +2905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +2906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +2908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; +2909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +2910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +2912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +2913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +2914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +2915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT; +2916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; +2917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 8Bit */ +2919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) +2920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prefetch Memory Address */ +2922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); +2923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset Memaddress content */ +2925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; +2926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 16Bit */ +2928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ +2931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); +2932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ +2934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); +2935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ +2937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_ +2938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 53 + + +2939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +2940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +2941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +2943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +2944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +2945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ +2947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +2948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +2949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +2950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); +2951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +2953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +2955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +2961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Write an amount of data in non-blocking mode with DMA to a specific memory address +2962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +2963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +2964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +2965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +2966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddress Internal memory address +2967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address +2968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +2969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +2970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +2971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +2972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Write_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemA +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +2974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; +2976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +2978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); +2979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +2981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +2983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +2985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +2986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) +2989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +2990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +2991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +2992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +2993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +2994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +2995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 54 + + +2996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +2997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; +2998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +2999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +3001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +3002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +3003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +3004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA; +3005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; +3006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +3008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +3010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +3014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 8Bit */ +3017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) +3018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prefetch Memory Address */ +3020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); +3021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset Memaddress content */ +3023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; +3024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 16Bit */ +3026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ +3029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); +3030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ +3032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); +3033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +3036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ +3038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; +3039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the DMA error callback */ +3041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; +3042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ +3044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; +3045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; +3046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +3048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TX +3049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); +3050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 55 + + +3053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +3054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +3056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; +3059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) +3067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ +3069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START +3070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +3075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +3076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +3077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ +3078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +3079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +3080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +3081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); +3082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +3088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +3090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; +3091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +3099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +3103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +3107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Reads an amount of data in non-blocking mode with DMA from a specific memory address. +3108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +3109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. + ARM GAS /tmp/ccVyGVF6.s page 56 + + +3110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +3111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +3112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddress Internal memory address +3113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address +3114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +3115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be read +3116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +3117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +3118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Mem_Read_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAd +3119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t MemAddSize, uint8_t *pData, uint16_t Size) +3120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; +3122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +3124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_MEMADD_SIZE(MemAddSize)); +3125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +3127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +3129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +3131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) +3135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +3137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +3140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +3141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +3143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; +3144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +3145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +3147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +3148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +3149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +3150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA; +3151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; +3152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +3154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +3156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +3160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 8Bit */ +3163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) +3164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prefetch Memory Address */ +3166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); + ARM GAS /tmp/ccVyGVF6.s page 57 + + +3167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset Memaddress content */ +3169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; +3170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 16Bit */ +3172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prefetch Memory Address (MSB part, LSB will be manage through interrupt) */ +3175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); +3176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare Memaddress buffer for LSB part */ +3178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Memaddress = I2C_MEM_ADD_LSB(MemAddress); +3179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +3182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ +3184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; +3185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the DMA error callback */ +3187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; +3188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ +3190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; +3191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; +3192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +3194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)pDa +3195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); +3196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +3200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +3202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +3204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; +3205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) +3213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address and Memory Address */ +3215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_STAR +3216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +3221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +3222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +3223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ + ARM GAS /tmp/ccVyGVF6.s page 58 + + +3224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +3225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +3226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +3227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); +3228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +3232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +3234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +3236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; +3237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +3245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +3249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +3253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Checks if target device is ready for communication. +3254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note This function is used with Memory devices +3255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +3256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +3257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +3258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +3259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Trials Number of trials +3260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +3261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +3262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +3263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_IsDeviceReady(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint32_t Tria +3264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Timeout) +3265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; +3267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __IO uint32_t I2C_Trials = 0UL; +3269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** FlagStatus tmp1; +3271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** FlagStatus tmp2; +3272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +3274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) +3276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +3278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ + ARM GAS /tmp/ccVyGVF6.s page 59 + + +3281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +3282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY; +3284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +3285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** do +3287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Generate Start */ +3289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 = I2C_GENERATE_START(hi2c->Init.AddressingMode, DevAddress); +3290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No need to Check TC flag, with AUTOEND mode the stop is automatically generated */ +3292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until STOPF flag is set or a NACK flag is set*/ +3293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tickstart = HAL_GetTick(); +3294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); +3296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); +3297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while ((tmp1 == RESET) && (tmp2 == RESET)) +3299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) +3301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) +3303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +3305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +3308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; +3309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp1 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF); +3318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); +3319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if the NACKF flag has not been set */ +3322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == RESET) +3323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ +3325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) +3326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag */ +3331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +3332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Device is ready */ +3334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); + ARM GAS /tmp/ccVyGVF6.s page 60 + + +3338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +3340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until STOPF flag is reset */ +3344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_STOPF, RESET, Timeout, tickstart) != HAL_OK) +3345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +3350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +3351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag, auto generated with autoend*/ +3353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Trials */ +3357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Trials++; +3358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } while (I2C_Trials < Trials); +3359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +3361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +3364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; +3365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +3374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +3378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with Inte +3379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during +3380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +3381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +3382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +3383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +3384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +3385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +3386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS +3387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +3388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +3389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint +3390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) +3391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; +3393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_WRITE; +3394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; + ARM GAS /tmp/ccVyGVF6.s page 61 + + +3395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +3397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); +3398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +3400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +3402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +3403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +3405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; +3406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +3407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +3409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +3410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +3411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; +3412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; +3413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ +3415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +3416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +3418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; +3419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +3423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; +3424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferSize > 0U) && ((XferOptions == I2C_FIRST_FRAME) || \ +3427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) +3428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX register */ +3430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +3431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +3432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +3434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +3435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** sizetoxfer = hi2c->XferSize; +3437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +3438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +3439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, +3442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** do not generate Restart Condition */ +3443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Mean Previous state is same as current state */ +3444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ +3445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) +3446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; +3448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ + ARM GAS /tmp/ccVyGVF6.s page 62 + + +3452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); +3453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ +3455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) +3456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; +3458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to write */ +3462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((XferOptions == I2C_FIRST_FRAME) || (XferOptions == I2C_FIRST_AND_LAST_FRAME)) +3463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); +3465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); +3469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +3475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +3476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +3477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ +3478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +3479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +3480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +3481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); +3482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +3484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +3488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +3492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Sequential transmit in master I2C mode an amount of data in non-blocking mode with DMA. +3493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during +3494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +3495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +3496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +3497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +3498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +3499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +3500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS +3501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +3502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +3503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uin +3504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) +3505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; +3507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_WRITE; +3508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + ARM GAS /tmp/ccVyGVF6.s page 63 + + +3509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; +3510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +3512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); +3513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +3515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +3518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX; +3520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; +3521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +3522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +3524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +3525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +3526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; +3527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; +3528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ +3530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +3531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +3533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; +3534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +3538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; +3539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferSize > 0U) && ((XferOptions == I2C_FIRST_FRAME) || \ +3542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) +3543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Preload TX register */ +3545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +3546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +3547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +3549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +3550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** sizetoxfer = hi2c->XferSize; +3552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +3553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +3554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, +3557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** do not generate Restart Condition */ +3558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Mean Previous state is same as current state */ +3559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_TX) && \ +3560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) +3561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; +3563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 64 + + +3566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ +3567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); +3568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ +3570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) +3571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; +3573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferSize > 0U) +3577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +3579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ +3581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMAMasterTransmitCplt; +3582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the DMA error callback */ +3584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; +3585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ +3587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; +3588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; +3589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +3591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, +3592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); +3593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +3597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +3599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +3601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; +3602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) +3610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to write */ +3612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((XferOptions == I2C_FIRST_FRAME) || (XferOptions == I2C_FIRST_AND_LAST_FRAME)) +3613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); +3615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); +3619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update XferCount value */ +3622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; + ARM GAS /tmp/ccVyGVF6.s page 65 + + +3623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +3628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +3629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +3630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ +3631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); +3632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ +3634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; +3635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +3639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +3641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +3643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; +3644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ +3654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; +3655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +3657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and generate START condition */ +3658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((XferOptions == I2C_FIRST_FRAME) || (XferOptions == I2C_FIRST_AND_LAST_FRAME)) +3659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)sizetoxfer, xfermode, xferrequest); +3661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); +3665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +3671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +3672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +3673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, TXI interrupt */ +3674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +3675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +3676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +3677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT); +3678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 66 + + +3680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +3681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +3685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +3689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with Inter +3690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during +3691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +3692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +3693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +3694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +3695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +3696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +3697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS +3698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +3699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +3700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8 +3701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) +3702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; +3704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_READ; +3705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +3707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); +3708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +3710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +3712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +3713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +3715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; +3716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +3717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +3719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +3720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +3721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; +3722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; +3723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ +3725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +3726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +3728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; +3729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +3733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; +3734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, + ARM GAS /tmp/ccVyGVF6.s page 67 + + +3737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** do not generate Restart Condition */ +3738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Mean Previous state is same as current state */ +3739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ +3740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) +3741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; +3743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ +3747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); +3748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ +3750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) +3751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; +3753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to read */ +3757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); +3758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +3763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +3764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +3765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); +3766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +3768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +3772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +3776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Sequential receive in master I2C mode an amount of data in non-blocking mode with DMA +3777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during +3778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +3779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +3780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +3781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +3782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +3783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +3784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS +3785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +3786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +3787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint +3788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t Size, uint32_t XferOptions) +3789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; +3791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_READ; +3792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; +3793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 68 + + +3794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +3795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); +3796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +3800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +3801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX; +3803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; +3804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +3805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +3807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +3808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +3809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; +3810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; +3811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */ +3813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +3814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +3816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; +3817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +3821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; +3822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If transfer direction not change and there is no request to start another frame, +3825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** do not generate Restart Condition */ +3826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Mean Previous state is same as current state */ +3827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->PreviousState == I2C_STATE_MASTER_BUSY_RX) && \ +3828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) +3829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xferrequest = I2C_NO_STARTSTOP; +3831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Convert OTHER_xxx XferOptions if any */ +3835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ConvertOtherXferOptions(hi2c); +3836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update xfermode accordingly if no reload is necessary */ +3838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount <= MAX_NBYTE_SIZE) +3839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; +3841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferSize > 0U) +3845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +3847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ +3849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMAMasterReceiveCplt; +3850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 69 + + +3851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the DMA error callback */ +3852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; +3853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ +3855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; +3856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; +3857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +3859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)p +3860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); +3861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +3865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +3867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +3869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; +3870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) +3878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address and set NBYTES to read */ +3880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, xfermode, xferrequest); +3881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update XferCount value */ +3883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; +3884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +3889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +3890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +3891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ +3892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); +3893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ +3895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; +3896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +3900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +3901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +3902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +3904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; +3905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); + ARM GAS /tmp/ccVyGVF6.s page 70 + + +3908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update Transfer ISR function pointer */ +3915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; +3916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Slave Address */ +3918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to read and generate START condition */ +3919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, +3920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); +3921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +3923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +3924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +3926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +3927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +3928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK, RXI interrupt */ +3929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* possible to enable all of these */ +3930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | +3931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_IT_ADDRI | I2C_IT_RXI | I2C_IT_TXI */ +3932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); +3933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +3936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +3938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +3940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +3944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode wit +3945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during +3946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +3947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +3948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +3949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +3950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS +3951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +3952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +3953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t S +3954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t XferOptions) +3955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ +3957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** FlagStatus tmp; +3958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +3960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); +3961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) +3963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) + ARM GAS /tmp/ccVyGVF6.s page 71 + + +3965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +3967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +3968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +3969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ +3971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); +3972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +3974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +3975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ +3977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* and then toggle the HAL slave RX state to TX state */ +3978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) +3979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable associated Interrupts */ +3981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); +3982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA Xfer if any */ +3984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) +3985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; +3987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +3989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : +3991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ +3992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; +3993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +3994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA RX */ +3995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) +3996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +3997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ +3998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); +3999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; +4005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; +4006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +4007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ +4009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; +4010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +4012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +4013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +4014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +4015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; +4016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; +4017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); +4019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) +4020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ + ARM GAS /tmp/ccVyGVF6.s page 72 + + +4022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ +4023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); +4024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +4027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +4028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +4030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +4031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +4032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* REnable ADDR interrupt */ +4033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_TX_IT | I2C_XFER_LISTEN_IT); +4034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +4036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Sequential transmit in slave/device I2C mode an amount of data in non-blocking mode wit +4045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during +4046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +4049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +4050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS +4051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +4052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t +4054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t XferOptions) +4055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ +4057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** FlagStatus tmp; +4058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; +4059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +4061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); +4062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) +4064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +4066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +4068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +4073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ +4075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); +4076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ +4078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* and then toggle the HAL slave RX state to TX state */ + ARM GAS /tmp/ccVyGVF6.s page 73 + + +4079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) +4080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable associated Interrupts */ +4082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); +4083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) +4085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA Xfer if any */ +4087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +4088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; +4090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : +4092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ +4093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; +4094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA RX */ +4096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) +4097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ +4099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); +4100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) +4105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) +4107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; +4109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA Xfer if any */ +4111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +4112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : +4114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ +4115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; +4116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA TX */ +4118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) +4119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ +4121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); +4122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +4129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_TX_LISTEN; +4132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; +4133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +4134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ + ARM GAS /tmp/ccVyGVF6.s page 74 + + +4136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; +4137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +4139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +4140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +4141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +4142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; +4143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; +4144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +4146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ +4148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferCpltCallback = I2C_DMASlaveTransmitCplt; +4149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the DMA error callback */ +4151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferErrorCallback = I2C_DMAError; +4152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ +4154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferHalfCpltCallback = NULL; +4155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; +4156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +4158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)pData, (uint32_t)&hi2c->Instance->TX +4159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); +4160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +4164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +4165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +4166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +4168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; +4169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +4171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +4172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) +4177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update XferCount value */ +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; +4180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset XferSize */ +4182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 0; +4183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +4187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +4188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +4189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +4191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; +4192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 75 + + +4193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +4194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +4195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); +4200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) +4201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ +4203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ +4204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); +4205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +4208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +4209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ +4211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; +4212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +4214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +4215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +4216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, STOP, NACK, ADDR interrupts */ +4217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); +4218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +4220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with +4229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during +4230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +4233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +4234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS +4235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +4236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_IT(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Si +4238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t XferOptions) +4239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ +4241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** FlagStatus tmp; +4242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +4244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); +4245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) +4247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +4249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 76 + + +4250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +4251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ +4255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); +4256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +4258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +4259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ +4261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* and then toggle the HAL slave TX state to RX state */ +4262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) +4263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable associated Interrupts */ +4265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); +4266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) +4268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; +4270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA Xfer if any */ +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +4273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : +4275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ +4276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; +4277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA TX */ +4279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) +4280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ +4282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); +4283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; +4289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; +4290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +4291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ +4293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; +4294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +4296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +4297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +4298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +4299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; +4300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; +4301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); +4303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) +4304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ +4306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ + ARM GAS /tmp/ccVyGVF6.s page 77 + + +4307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); +4308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +4311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +4312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +4314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +4315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +4316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* REnable ADDR interrupt */ +4317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); +4318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +4320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Sequential receive in slave/device I2C mode an amount of data in non-blocking mode with +4329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @note This interface allow to manage repeated start condition when a direction change during +4330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param pData Pointer to data buffer +4333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Amount of data to be sent +4334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param XferOptions Options of Transfer, value of @ref I2C_XFEROPTIONS +4335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +4336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Slave_Seq_Receive_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t S +4338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t XferOptions) +4339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ +4341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** FlagStatus tmp; +4342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; +4343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +4345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_TRANSFER_OPTIONS_REQUEST(XferOptions)); +4346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) +4348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((pData == NULL) || (Size == 0U)) +4350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_INVALID_PARAM; +4352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts, to prevent preemption during treatment in case of multicall */ +4356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); +4357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +4359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +4360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C cannot manage full duplex exchange so disable previous IT enabled if any */ +4362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* and then toggle the HAL slave TX state to RX state */ +4363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) + ARM GAS /tmp/ccVyGVF6.s page 78 + + +4364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable associated Interrupts */ +4366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); +4367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) +4369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA Xfer if any */ +4371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +4372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; +4374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : +4376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ +4377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; +4378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA TX */ +4380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) +4381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); +4384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) +4389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) +4391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; +4393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA Xfer if any */ +4395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +4396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : +4398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ +4399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; +4400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA RX */ +4402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) +4403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ +4405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); +4406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +4413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_BUSY_RX_LISTEN; +4416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; +4417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +4418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable Address Acknowledge */ +4420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 &= ~I2C_CR2_NACK; + ARM GAS /tmp/ccVyGVF6.s page 79 + + +4421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare transfer parameters */ +4423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; +4424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; +4425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +4426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; +4427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; +4428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +4430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA transfer complete callback */ +4432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferCpltCallback = I2C_DMASlaveReceiveCplt; +4433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the DMA error callback */ +4435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferErrorCallback = I2C_DMAError; +4436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the unused DMA callbacks to NULL */ +4438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferHalfCpltCallback = NULL; +4439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; +4440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +4442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** dmaxferstatus = HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, +4443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)pData, hi2c->XferSize); +4444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +4448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +4449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +4450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +4452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA_PARAM; +4453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +4455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +4456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (dmaxferstatus == HAL_OK) +4461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update XferCount value */ +4463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; +4464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset XferSize */ +4466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 0; +4467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C state */ +4471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +4472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +4473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update I2C error code */ +4475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_DMA; +4476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ + ARM GAS /tmp/ccVyGVF6.s page 80 + + +4478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +4479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_ADDR); +4484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) +4485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ADDR flag after prepare the transfer parameters */ +4487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* This action will generate an acknowledge to the Master */ +4488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); +4489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +4492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +4493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ +4495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; +4496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +4498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +4499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +4500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* REnable ADDR interrupt */ +4501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_LISTEN_IT); +4502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +4504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Enable the Address listen mode with Interrupt. +4513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +4516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_EnableListen_IT(I2C_HandleTypeDef *hi2c) +4518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) +4520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +4522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; +4523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the Address Match interrupt */ +4525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_LISTEN_IT); +4526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +4528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +4532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 81 + + +4535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Disable the Address listen mode with Interrupt. +4537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C +4539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +4540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_DisableListen_IT(I2C_HandleTypeDef *hi2c) +4542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ +4544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmp; +4545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address listen mode only if a transfer is not ongoing */ +4547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_LISTEN) +4548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp = (uint32_t)(hi2c->State) & I2C_STATE_MSK; +4550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); +4551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +4552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +4553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +4554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable the Address Match interrupt */ +4556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); +4557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +4559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_BUSY; +4563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Abort a master or memory I2C IT or DMA process communication with Interrupt. +4568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +4571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +4572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +4573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef HAL_I2C_Master_Abort_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress) +4575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_ModeTypeDef tmp_mode = hi2c->Mode; +4577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((tmp_mode == HAL_I2C_MODE_MASTER) || (tmp_mode == HAL_I2C_MODE_MEM)) +4579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +4581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +4582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */ +4584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX) +4585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); +4587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; +4588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) +4590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); + ARM GAS /tmp/ccVyGVF6.s page 82 + + +4592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; +4593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Do nothing */ +4597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set State at HAL_I2C_STATE_ABORT */ +4600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_ABORT; +4601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to 1 to generate a dummy read on I2C peripheral */ +4603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set AUTOEND mode, this will generate a NACK then STOP condition to abort the current transfe +4604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, 1, I2C_AUTOEND_MODE, I2C_GENERATE_STOP); +4605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +4607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +4608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Note : The I2C interrupts must be enabled after unlocking current process +4610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** to avoid the risk of I2C interrupt handle execution before current +4611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** process unlock */ +4612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); +4613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +4615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +4617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wrong usage of abort function */ +4619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* This function should be used only in case of abort monitored by master device */ +4620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +4621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @} +4626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @defgroup I2C_IRQ_Handler_and_Callbacks IRQ Handler and Callbacks +4629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ +4630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief This function handles I2C event interrupt request. +4634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) /* Derogation MISRAC2012-Rule-8.13 */ +4639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Get current IT Flags and IT sources value */ +4641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itflags = READ_REG(hi2c->Instance->ISR); +4642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); +4643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C events treatment -------------------------------------*/ +4645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferISR != NULL) +4646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR(hi2c, itflags, itsources); +4648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 83 + + +4649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief This function handles I2C error interrupt request. +4653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) +4658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itflags = READ_REG(hi2c->Instance->ISR); +4660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); +4661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmperror; +4662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C Bus error interrupt occurred ------------------------------------*/ +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ +4665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) +4666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; +4668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear BERR flag */ +4670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); +4671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/ +4674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ +4675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) +4676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; +4678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear OVR flag */ +4680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); +4681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/ +4684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ +4685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) +4686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; +4688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ARLO flag */ +4690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); +4691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Store current volatile hi2c->ErrorCode, misra rule */ +4694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmperror = hi2c->ErrorCode; +4695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the Error Callback in case of Error detected */ +4697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) != HAL_I2C_ERROR_ +4698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, tmperror); +4700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Master Tx Transfer completed callback. +4705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + ARM GAS /tmp/ccVyGVF6.s page 84 + + +4706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_MasterTxCpltCallback(I2C_HandleTypeDef *hi2c) +4710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +4712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); +4713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, +4715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_MasterTxCpltCallback could be implemented in the user file +4716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Master Rx Transfer completed callback. +4721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_MasterRxCpltCallback(I2C_HandleTypeDef *hi2c) +4726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +4728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); +4729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, +4731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_MasterRxCpltCallback could be implemented in the user file +4732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @brief Slave Tx Transfer completed callback. +4736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) +4741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +4743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); +4744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, +4746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file +4747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Slave Rx Transfer completed callback. +4752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) +4757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +4759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); +4760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, +4762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_SlaveRxCpltCallback could be implemented in the user file + ARM GAS /tmp/ccVyGVF6.s page 85 + + +4763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Slave Address Match callback. +4768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFE +4771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param AddrMatchCode Address Match Code +4772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrM +4775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +4777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); +4778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(TransferDirection); +4779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(AddrMatchCode); +4780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, +4782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_AddrCallback() could be implemented in the user file +4783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Listen Complete callback. +4788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) +4793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +4795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); +4796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, +4798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_ListenCpltCallback() could be implemented in the user file +4799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Memory Tx Transfer completed callback. +4804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c) +4809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +4811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); +4812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, +4814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_MemTxCpltCallback could be implemented in the user file +4815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Memory Rx Transfer completed callback. + ARM GAS /tmp/ccVyGVF6.s page 86 + + +4820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c) +4825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +4827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); +4828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, +4830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_MemRxCpltCallback could be implemented in the user file +4831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C error callback. +4836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) +4841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +4843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); +4844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, +4846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_ErrorCallback could be implemented in the user file +4847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C abort callback. +4852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +4855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) +4857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +4859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(hi2c); +4860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* NOTE : This function should not be modified, when the callback is needed, +4862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** the HAL_I2C_AbortCpltCallback could be implemented in the user file +4863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @} +4868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @defgroup I2C_Exported_Functions_Group3 Peripheral State, Mode and Error functions +4871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Peripheral State, Mode and Error functions +4872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * +4873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** @verbatim +4874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** =============================================================================== +4875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ##### Peripheral State, Mode and Error functions ##### +4876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** =============================================================================== + ARM GAS /tmp/ccVyGVF6.s page 87 + + +4877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** [..] +4878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** This subsection permit to get in run-time the status of the peripheral +4879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** and the data flow. +4880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** @endverbatim +4882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ +4883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Return the I2C handle state. +4887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL state +4890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef HAL_I2C_GetState(const I2C_HandleTypeDef *hi2c) +4892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return I2C handle state */ +4894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return hi2c->State; +4895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Returns the I2C Master, Slave, Memory or no mode. +4899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for I2C module +4901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL mode +4902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_ModeTypeDef HAL_I2C_GetMode(const I2C_HandleTypeDef *hi2c) +4904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return hi2c->Mode; +4906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Return the I2C error code. +4910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +4911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval I2C Error Code +4913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t HAL_I2C_GetError(const I2C_HandleTypeDef *hi2c) +4915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return hi2c->ErrorCode; +4917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @} +4921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @} +4925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** @addtogroup I2C_Private_Functions +4928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @{ +4929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +4932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with Interrupt. +4933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + ARM GAS /tmp/ccVyGVF6.s page 88 + + +4934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +4935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. +4936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. +4937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +4938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +4939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, +4940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources) +4941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t devaddress; +4943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; +4944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +4946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +4947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ +4949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) +4950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +4952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +4953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set corresponding Error Code */ +4955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ +4956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ +4957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; +4958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +4960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +4961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ +4963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) +4964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */ +4966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE; +4967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Read data from RXDR */ +4969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; +4970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +4972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +4973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +4975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +4976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) == RESET) && \ +4978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ +4979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))) +4980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +4982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount != 0U) +4983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +4985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +4986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +4988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +4989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +4990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + ARM GAS /tmp/ccVyGVF6.s page 89 + + +4991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +4992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +4994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ +4995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) +4996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) +4998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +4999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); +5000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +5002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Errata workaround 170323 */ +5004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) +5005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +5007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +5011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_START +5013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +5017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) +5018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, +5020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions, I2C_NO_STARTSTOP); +5021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, +5025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); +5026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call TxCpltCallback() if no stop mode is set */ +5032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) +5033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ +5035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); +5036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ +5040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +5041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); +5042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ +5046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) +5047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 90 + + +5048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount == 0U) +5049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) +5051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Generate a stop condition in case of no transfer option */ +5053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) +5054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Generate Stop */ +5056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP; +5057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ +5061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); +5062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wrong size Status regarding TC flag event */ +5068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +5069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); +5070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +5075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ +5078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) +5079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Master complete process */ +5081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, tmpITFlags); +5082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +5085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +5086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +5088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +5091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with Interrupt. +5092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +5093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +5094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. +5095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. +5096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +5097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +5098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, +5099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources) +5100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE; +5102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; +5103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ + ARM GAS /tmp/ccVyGVF6.s page 91 + + +5105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +5106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ +5108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) +5109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +5111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +5112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set corresponding Error Code */ +5114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ +5115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ +5116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; +5117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +5119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +5120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ +5122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) +5123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */ +5125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE; +5126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Read data from RXDR */ +5128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; +5129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +5131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +5132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +5134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +5135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ +5137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) +5138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->Memaddress == 0xFFFFFFFFU) +5140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +5142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +5143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +5145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +5146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +5148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +5149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write LSB part of Memory Address */ +5153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = hi2c->Memaddress; +5154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset Memaddress content */ +5156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; +5157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TCR) != RESET) && \ +5160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) +5161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 92 + + +5162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferCount != 0U) && (hi2c->XferSize == 0U)) +5163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +5165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Errata workaround 170323 */ +5167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) +5168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +5170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +5174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, +5176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); +5177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +5181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, +5182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); +5183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ +5188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +5189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); +5190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TC) != RESET) && \ +5193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) +5194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupt related to address step */ +5196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); +5197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and RXI interrupts */ +5199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RX_IT); +5200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) +5202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** direction = I2C_GENERATE_START_READ; +5204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +5207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Errata workaround 170323 */ +5209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) +5210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +5212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +5216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ + ARM GAS /tmp/ccVyGVF6.s page 93 + + +5219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, +5220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); +5221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +5225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and generate RESTART */ +5227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, +5228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); +5229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +5234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ +5237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) +5238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Master complete process */ +5240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, tmpITFlags); +5241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +5244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +5245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +5247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +5250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with Interrupt. +5251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +5252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +5253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. +5254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. +5255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +5256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +5257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, +5258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources) +5259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; +5261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; +5262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process locked */ +5264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +5265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if STOPF is set */ +5267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ +5268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) +5269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Slave complete process */ +5271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITSlaveCplt(hi2c, tmpITFlags); +5272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ +5274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) +5275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 94 + + +5276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check that I2C transfer finished */ +5277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ +5278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Mean XferCount == 0*/ +5279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* So clear Flag NACKF only */ +5280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount == 0U) +5281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) +5283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for +5284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Warning[Pa134]: left and right operands are identical */ +5285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Listen complete process */ +5287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, tmpITFlags); +5288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME) +5290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +5292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +5293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +5295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +5296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Last Byte is Transmitted */ +5298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ +5299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); +5300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +5304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +5305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ +5310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +5311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +5312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ +5314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; +5315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) +5317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +5319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); +5320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ +5324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) +5325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > 0U) +5327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Read data from RXDR */ +5329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; +5330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +5332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; + ARM GAS /tmp/ccVyGVF6.s page 95 + + +5333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +5335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +5336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferCount == 0U) && \ +5339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) +5340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ +5342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); +5343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ +5346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) +5347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITAddrCplt(hi2c, tmpITFlags); +5349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ +5351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) +5352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR only if XferCount not reach "0" */ +5354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* A TXIS flag can be set, during STOP treatment */ +5355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if all Data have already been sent */ +5356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */ +5357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > 0U) +5358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write data to TXDR */ +5360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = *hi2c->pBuffPtr; +5361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +5363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +5364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +5366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +5367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) +5371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Last Byte is Transmitted */ +5373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ +5374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); +5375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +5381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +5384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +5385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +5387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + ARM GAS /tmp/ccVyGVF6.s page 96 + + +5390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Master Mode with DMA. +5391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +5392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +5393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. +5394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. +5395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +5396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +5397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Master_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, +5398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources) +5399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t devaddress; +5401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; +5402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +5404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +5405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ +5407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) +5408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +5410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +5411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set corresponding Error Code */ +5413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; +5414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ +5416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* But enable STOP interrupt, to treat it */ +5417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ +5418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); +5419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +5421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +5422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ +5424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) +5425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable TC interrupt */ +5427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_DISABLE_IT(hi2c, I2C_IT_TCI); +5428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount != 0U) +5430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Recover Slave address */ +5432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** devaddress = (uint16_t)(hi2c->Instance->CR2 & I2C_CR2_SADD); +5433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare the new XferSize to transfer */ +5435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +5436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Errata workaround 170323 */ +5438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) +5439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +5441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +5445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + ARM GAS /tmp/ccVyGVF6.s page 97 + + +5447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +5451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) +5452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; +5454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; +5458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the new XferSize in Nbytes register */ +5462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, devaddress, (uint8_t)hi2c->XferSize, xfermode, I2C_NO_STARTSTOP); +5463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update XferCount value */ +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; +5466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ +5468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) +5469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; +5471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; +5475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call TxCpltCallback() if no stop mode is set */ +5480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) +5481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ +5483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); +5484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ +5488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +5489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); +5490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ +5494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) +5495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount == 0U) +5497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_STOP_MODE(hi2c) != I2C_AUTOEND_MODE) +5499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Generate a stop condition in case of no transfer option */ +5501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_NO_OPTION_FRAME) +5502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Generate Stop */ + ARM GAS /tmp/ccVyGVF6.s page 98 + + +5504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP; +5505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Master Sequential complete process */ +5509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITMasterSeqCplt(hi2c); +5510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wrong size Status regarding TC flag event */ +5516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +5517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); +5518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ +5521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) +5522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Master complete process */ +5524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, ITFlags); +5525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +5529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +5532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +5533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +5535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +5538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Memory Mode with DMA. +5539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +5540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +5541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. +5542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. +5543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +5544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +5545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Mem_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, +5546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources) +5547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE; +5549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Locked */ +5551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +5552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ +5554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) +5555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +5557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +5558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set corresponding Error Code */ +5560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + ARM GAS /tmp/ccVyGVF6.s page 99 + + +5561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No need to generate STOP, it is automatically done */ +5563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* But enable STOP interrupt, to treat it */ +5564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Error callback will be send during stop flag treatment */ +5565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); +5566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +5568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +5569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TXIS) != RESET) && \ +5571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) +5572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write LSB part of Memory Address */ +5574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = hi2c->Memaddress; +5575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset Memaddress content */ +5577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Memaddress = 0xFFFFFFFFU; +5578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TCR) != RESET) && \ +5580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) +5581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupt related to address step */ +5583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); +5584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable only Error interrupt */ +5586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); +5587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount != 0U) +5589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prepare the new XferSize to transfer */ +5591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +5592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Errata workaround 170323 */ +5594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) +5595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +5597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +5601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, +5603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); +5604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +5608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, +5609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); +5610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update XferCount value */ +5613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; +5614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ +5616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) +5617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 100 + + +5618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; +5619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; +5623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wrong size Status regarding TCR flag event */ +5628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +5629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_SIZE); +5630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_TC) != RESET) && \ +5633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) +5634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupt related to address step */ +5636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); +5637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable only Error and NACK interrupt for data transfer */ +5639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_ERROR_IT); +5640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) +5642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** direction = I2C_GENERATE_START_READ; +5644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +5647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Errata workaround 170323 */ +5649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) +5650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +5652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +5656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and reload if hi2c->XferCount > MAX_NBYTE_SIZE and generate RESTART */ +5659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, +5660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); +5661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +5665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set NBYTES to write and generate RESTART */ +5667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, +5668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); +5669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update XferCount value */ +5672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount -= hi2c->XferSize; +5673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable DMA Request */ + ARM GAS /tmp/ccVyGVF6.s page 101 + + +5675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_RX) +5676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_RXDMAEN; +5678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 |= I2C_CR1_TXDMAEN; +5682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ +5685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) +5686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Master complete process */ +5688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITMasterCplt(hi2c, ITFlags); +5689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +5693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +5696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +5697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +5699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +5702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Interrupt Sub-Routine which handle the Interrupt Flags Slave Mode with DMA. +5703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +5704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +5705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. +5706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITSources Interrupt sources enabled. +5707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +5708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +5709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, +5710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t ITSources) +5711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; +5713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t treatdmanack = 0U; +5714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate; +5715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process locked */ +5717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_LOCK(hi2c); +5718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if STOPF is set */ +5720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && \ +5721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) +5722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Slave complete process */ +5724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITSlaveCplt(hi2c, ITFlags); +5725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && \ +5727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) +5728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check that I2C transfer finished */ +5730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ +5731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Mean XferCount == 0 */ + ARM GAS /tmp/ccVyGVF6.s page 102 + + +5732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* So clear Flag NACKF only */ +5733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) || +5734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) +5735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Split check of hdmarx, for MISRA compliance */ +5737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +5738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET) +5740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) +5742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** treatdmanack = 1U; +5744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Split check of hdmatx, for MISRA compliance */ +5749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +5750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_TXDMAEN) != RESET) +5752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) +5754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** treatdmanack = 1U; +5756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (treatdmanack == 1U) +5761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) +5763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for +5764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Warning[Pa134]: left and right operands are identical */ +5765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Listen complete process */ +5767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, ITFlags); +5768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAM +5770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +5772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +5773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +5775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +5776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Last Byte is Transmitted */ +5778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ +5779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); +5780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +5784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +5785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 103 + + +5789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ +5790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +5791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +5792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ +5794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; +5795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Store current hi2c->State, solve MISRA2012-Rule-13.5 */ +5797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpstate = hi2c->State; +5798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) +5800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) +5802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; +5804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN +5806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; +5808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Do nothing */ +5812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +5815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); +5816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Only Clear NACK Flag, no DMA treatment is pending */ +5822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +5823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_ADDR) != RESET) && \ +5826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) +5827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITAddrCplt(hi2c, ITFlags); +5829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +5833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +5836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +5837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +5839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +5842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Master sends target device address followed by internal memory address for write reques +5843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +5844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +5845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value + ARM GAS /tmp/ccVyGVF6.s page 104 + + +5846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +5847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddress Internal memory address +5848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address +5849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +5850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Tickstart Tick start value +5851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +5852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +5853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, +5854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t +5855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart) +5856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRI +5858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TXIS flag is set */ +5860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) +5861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +5863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 8Bit */ +5866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) +5867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Memory Address */ +5869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); +5870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 16Bit */ +5872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send MSB of Memory Address */ +5875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); +5876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TXIS flag is set */ +5878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) +5879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +5881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send LSB of Memory Address */ +5884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); +5885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TCR flag is set */ +5888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TCR, RESET, Timeout, Tickstart) != HAL_OK) +5889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +5891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +5894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +5897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Master sends target device address followed by internal memory address for read request +5898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +5899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +5900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Target device address: The device 7 bits address value +5901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * in datasheet must be shifted to the left before calling the interface +5902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddress Internal memory address + ARM GAS /tmp/ccVyGVF6.s page 105 + + +5903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param MemAddSize Size of internal memory address +5904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +5905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Tickstart Tick start value +5906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +5907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +5908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_RequestMemoryRead(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, +5909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t MemAddress, uint16_t MemAddSize, uint32_t T +5910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart) +5911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WR +5913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TXIS flag is set */ +5915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) +5916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +5918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 8Bit */ +5921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (MemAddSize == I2C_MEMADD_SIZE_8BIT) +5922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send Memory Address */ +5924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); +5925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If Memory address size is 16Bit */ +5927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +5928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send MSB of Memory Address */ +5930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_MSB(MemAddress); +5931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TXIS flag is set */ +5933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, Tickstart) != HAL_OK) +5934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +5936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Send LSB of Memory Address */ +5939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = I2C_MEM_ADD_LSB(MemAddress); +5940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until TC flag is set */ +5943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_WaitOnFlagUntilTimeout(hi2c, I2C_FLAG_TC, RESET, Timeout, Tickstart) != HAL_OK) +5944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +5946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +5949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +5950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +5952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C Address complete process callback. +5953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +5954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. +5955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +5956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +5957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +5958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint8_t transferdirection; + ARM GAS /tmp/ccVyGVF6.s page 106 + + +5960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t slaveaddrcode; +5961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t ownadd1code; +5962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t ownadd2code; +5963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ +5965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(ITFlags); +5966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* In case of Listen state, need to inform upper layer of address match code event */ +5968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) +5969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** transferdirection = I2C_GET_DIR(hi2c); +5971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); +5972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); +5973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); +5974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If 10bits addressing mode is selected */ +5976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) +5977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK)) +5979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** slaveaddrcode = ownadd1code; +5981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AddrEventCount++; +5982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->AddrEventCount == 2U) +5983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +5984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset Address Event counter */ +5985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AddrEventCount = 0U; +5986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ADDR flag */ +5988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); +5989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +5991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +5992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +5993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Slave Addr callback */ +5994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +5995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +5996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +5997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +5998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +5999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** slaveaddrcode = ownadd2code; +6004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable ADDR Interrupts */ +6006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); +6007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Slave Addr callback */ +6012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +6014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +6016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + ARM GAS /tmp/ccVyGVF6.s page 107 + + +6017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* else 7 bits addressing mode is selected */ +6020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable ADDR Interrupts */ +6023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); +6024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Slave Addr callback */ +6029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); +6031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); +6033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Else clear address flag only */ +6037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ADDR flag */ +6040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); +6041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C Master sequential complete process. +6049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +6050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITMasterSeqCplt(I2C_HandleTypeDef *hi2c) +6053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset I2C handle mode */ +6055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +6056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No Generate Stop, to permit restart mode */ +6058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* The stop will be done at the end of transfer, when I2C_AUTOEND_MODE enable */ +6059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX) +6060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +6062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; +6063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +6064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts */ +6066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); +6067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MasterTxCpltCallback(hi2c); + ARM GAS /tmp/ccVyGVF6.s page 108 + + +6074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_MasterTxCpltCallback(hi2c); +6076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ +6079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +6082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; +6083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +6084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts */ +6086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); +6087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MasterRxCpltCallback(hi2c); +6094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_MasterRxCpltCallback(hi2c); +6096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C Slave sequential complete process. +6102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +6103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) +6106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); +6108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset I2C handle mode */ +6110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +6111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If a DMA is ongoing, Update handle size context */ +6113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) +6114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable DMA Request */ +6116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; +6117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) +6119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable DMA Request */ +6121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; +6122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Do nothing */ +6126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) +6129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */ + ARM GAS /tmp/ccVyGVF6.s page 109 + + +6131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +6132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; +6133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts */ +6135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); +6136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback(hi2c); +6143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_SlaveTxCpltCallback(hi2c); +6145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) +6149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Remove HAL_I2C_STATE_SLAVE_BUSY_RX, keep only HAL_I2C_STATE_LISTEN */ +6151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +6152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; +6153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts */ +6155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); +6156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback(hi2c); +6163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_SlaveRxCpltCallback(hi2c); +6165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +6170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C Master complete process. +6175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +6176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. +6177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITMasterCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +6180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmperror; +6182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; +6183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __IO uint32_t tmpreg; +6184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag */ +6186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +6187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 110 + + +6188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */ +6189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_BUSY_TX) +6190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); +6192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; +6193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) +6195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); +6197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; +6198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Do nothing */ +6202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear Configuration Register 2 */ +6205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); +6206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset handle parameters */ +6208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +6209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +6210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) +6212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +6214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +6215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set acknowledge error code */ +6217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; +6218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Fetch Last receive data if any */ +6221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_ABORT) && (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET)) +6222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Read data from RXDR */ +6224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpreg = (uint8_t)hi2c->Instance->RXDR; +6225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(tmpreg); +6226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +6229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +6230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Store current volatile hi2c->ErrorCode, misra rule */ +6232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmperror = hi2c->ErrorCode; +6233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_ABORT) || (tmperror != HAL_I2C_ERROR_NONE)) +6236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); +6239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_TX */ +6241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_TX) +6242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +6244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + ARM GAS /tmp/ccVyGVF6.s page 111 + + +6245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->Mode == HAL_I2C_MODE_MEM) +6247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +6249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MemTxCpltCallback(hi2c); +6256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_MemTxCpltCallback(hi2c); +6258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +6263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MasterTxCpltCallback(hi2c); +6270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_MasterTxCpltCallback(hi2c); +6272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* hi2c->State == HAL_I2C_STATE_BUSY_RX */ +6276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) +6277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +6279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; +6280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->Mode == HAL_I2C_MODE_MEM) +6282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +6284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MemRxCpltCallback(hi2c); +6291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_MemRxCpltCallback(hi2c); +6293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +6298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 112 + + +6302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->MasterRxCpltCallback(hi2c); +6305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_MasterRxCpltCallback(hi2c); +6307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +6313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C Slave complete process. +6318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +6319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. +6320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +6323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); +6325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; +6326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; +6327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State; +6328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag */ +6330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +6331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts and Store Previous state */ +6333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) +6334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); +6336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; +6337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) +6339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); +6341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; +6342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (tmpstate == HAL_I2C_STATE_LISTEN) +6344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT | I2C_XFER_RX_IT); +6346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; +6347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Do nothing */ +6351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Address Acknowledge */ +6354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +6355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear Configuration Register 2 */ +6357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); +6358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 113 + + +6359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +6360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +6361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If a DMA is ongoing, Update handle size context */ +6363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) +6364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable DMA Request */ +6366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; +6367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +6369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); +6371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) +6374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable DMA Request */ +6376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; +6377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +6379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); +6381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Do nothing */ +6386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Store Last receive data if any */ +6389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) +6390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Remove RXNE flag on temporary variable as read done */ +6392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpITFlags &= ~I2C_FLAG_RXNE; +6393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Read data from RXDR */ +6395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; +6396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +6398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +6399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferSize > 0U)) +6401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +6403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +6404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* All data are not transferred, so set error code accordingly */ +6408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount != 0U) +6409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ +6411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; +6412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ +6415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_IT_NACKI) != RESET)) + ARM GAS /tmp/ccVyGVF6.s page 114 + + +6416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check that I2C transfer finished */ +6418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ +6419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Mean XferCount == 0*/ +6420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* So clear Flag NACKF only */ +6421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount == 0U) +6422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) +6424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for +6425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** Warning[Pa134]: left and right operands are identical */ +6426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Listen complete process */ +6428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, tmpITFlags); +6429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME) +6431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +6433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +6434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +6436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +6437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Last Byte is Transmitted */ +6439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ +6440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); +6441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +6445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +6446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ +6451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +6452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +6453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ +6455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; +6456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) +6458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); +6461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +6466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +6467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) +6469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, hi2c->ErrorCode); +6472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 115 + + +6473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ +6474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_LISTEN) +6475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Listen complete process */ +6477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITListenCplt(hi2c, tmpITFlags); +6478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) +6481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the Sequential Complete callback, to inform upper layer of the end of Transfer */ +6483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); +6484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +6486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +6487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; +6488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ +6493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ListenCpltCallback(hi2c); +6495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_ListenCpltCallback(hi2c); +6497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) +6501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +6503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; +6504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->SlaveRxCpltCallback(hi2c); +6511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_SlaveRxCpltCallback(hi2c); +6513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +6518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; +6519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->SlaveTxCpltCallback(hi2c); +6526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_SlaveTxCpltCallback(hi2c); +6528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 116 + + +6530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C Listen complete process. +6534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +6535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ITFlags Interrupt flags to handle. +6536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) +6539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset handle parameters */ +6541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +6542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; +6543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +6544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +6545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +6546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Store Last receive data if any */ +6548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET) +6549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Read data from RXDR */ +6551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; +6552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Increment Buffer pointer */ +6554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr++; +6555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferSize > 0U)) +6557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; +6559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; +6560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set ErrorCode corresponding to a Non-Acknowledge */ +6562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; +6563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable all Interrupts*/ +6567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); +6568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACK Flag */ +6570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +6571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ +6576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ListenCpltCallback(hi2c); +6578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_ListenCpltCallback(hi2c); +6580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C interrupts error process. +6585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +6586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param ErrorCode Error code to handle. + ARM GAS /tmp/ccVyGVF6.s page 117 + + +6587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) +6590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State; +6592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmppreviousstate; +6594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset handle parameters */ +6596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +6597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; +6598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = 0U; +6599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set new error code */ +6601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= ErrorCode; +6602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Interrupts */ +6604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((tmpstate == HAL_I2C_STATE_LISTEN) || +6605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || +6606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) +6607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable all interrupts, except interrupts related to LISTEN state */ +6609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); +6610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* keep HAL_I2C_STATE_LISTEN if set */ +6612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_LISTEN; +6613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; +6614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable all interrupts */ +6618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); +6619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +6621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +6622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If state is an abort treatment on going, don't change state */ +6624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* This change will be do later */ +6625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State != HAL_I2C_STATE_ABORT) +6626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set HAL_I2C_STATE_READY */ +6628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +6629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if a STOPF is detected */ +6631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) +6632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) +6634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +6636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; +6637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag */ +6640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +6641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 118 + + +6644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; +6645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA TX transfer if any */ +6648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmppreviousstate = hi2c->PreviousState; +6649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ +6651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) +6652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) +6654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; +6656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) +6659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : +6661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ +6662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; +6663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA TX */ +6668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) +6669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Directly XferAbortCallback function in case of error */ +6671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); +6672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); +6677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA RX transfer if any */ +6680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ +6681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) +6682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) +6684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; +6686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) +6689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the I2C DMA Abort callback : +6691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ +6692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; +6693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Abort DMA RX */ +6698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) +6699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */ + ARM GAS /tmp/ccVyGVF6.s page 119 + + +6701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); +6702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); +6707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); +6712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C Error callback treatment. +6717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +6718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) +6721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_ABORT) +6723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +6725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; +6726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AbortCpltCallback(hi2c); +6733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_AbortCpltCallback(hi2c); +6735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; +6740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +6742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +6743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) +6746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCallback(hi2c); +6747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #else +6748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_ErrorCallback(hi2c); +6749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ +6750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief I2C Tx data register flush process. +6755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +6756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + ARM GAS /tmp/ccVyGVF6.s page 120 + + +6758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) +6759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 28 .loc 1 6759 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. +6760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If a pending TXIS flag is set */ +6761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Write a dummy data in TXDR to clear it */ +6762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) + 33 .loc 1 6762 3 view .LVU1 + 34 .loc 1 6762 7 is_stmt 0 view .LVU2 + 35 0000 0368 ldr r3, [r0] + 36 0002 9A69 ldr r2, [r3, #24] + 37 .loc 1 6762 6 view .LVU3 + 38 0004 12F0020F tst r2, #2 + 39 0008 01D0 beq .L2 +6763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->TXDR = 0x00U; + 40 .loc 1 6764 5 is_stmt 1 view .LVU4 + 41 .loc 1 6764 26 is_stmt 0 view .LVU5 + 42 000a 0022 movs r2, #0 + 43 000c 9A62 str r2, [r3, #40] + 44 .L2: +6765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register if not empty */ +6768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) + 45 .loc 1 6768 3 is_stmt 1 view .LVU6 + 46 .loc 1 6768 7 is_stmt 0 view .LVU7 + 47 000e 0368 ldr r3, [r0] + 48 0010 9A69 ldr r2, [r3, #24] + 49 .loc 1 6768 6 view .LVU8 + 50 0012 12F0010F tst r2, #1 + 51 0016 03D1 bne .L1 +6769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); + 52 .loc 1 6770 5 is_stmt 1 view .LVU9 + 53 0018 9A69 ldr r2, [r3, #24] + 54 001a 42F00102 orr r2, r2, #1 + 55 001e 9A61 str r2, [r3, #24] + 56 .L1: +6771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 57 .loc 1 6772 1 is_stmt 0 view .LVU10 + 58 0020 7047 bx lr + 59 .cfi_endproc + 60 .LFE206: + 62 .section .text.I2C_TransferConfig,"ax",%progbits + 63 .align 1 + 64 .syntax unified + 65 .thumb + 66 .thumb_func + 67 .fpu fpv5-d16 + 69 I2C_TransferConfig: + 70 .LVL1: + 71 .LFB218: + ARM GAS /tmp/ccVyGVF6.s page 121 + + +6773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief DMA I2C master transmit process complete callback. +6776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hdma DMA handle +6777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMAMasterTransmitCplt(DMA_HandleTypeDef *hdma) +6780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ +6782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); +6783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable DMA Request */ +6785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; +6786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If last transfer, enable STOP interrupt */ +6788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount == 0U) +6789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable STOP interrupt */ +6791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); +6792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* else prepare a new DMA transfer and enable TCReload interrupt */ +6794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update Buffer pointer */ +6797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr += hi2c->XferSize; +6798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the XferSize to transfer */ +6800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +6801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +6803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +6807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +6810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_Start_IT(hi2c->hdmatx, (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, +6811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) +6812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); +6815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable TC interrupts */ +6819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); +6820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief DMA I2C slave transmit process complete callback. +6827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hdma DMA handle +6828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ + ARM GAS /tmp/ccVyGVF6.s page 122 + + +6830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMASlaveTransmitCplt(DMA_HandleTypeDef *hdma) +6831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ +6833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); +6834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; +6835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) +6837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable DMA Request */ +6839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; +6840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Last Byte is Transmitted */ +6842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ +6843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); +6844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No specific action, Master fully manage the generation of STOP condition */ +6848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Mean that this generation can arrive at any time, at the end or during DMA process */ +6849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* So STOP condition should be manage through Interrupt treatment */ +6850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief DMA I2C master receive process complete callback. +6856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hdma DMA handle +6857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMAMasterReceiveCplt(DMA_HandleTypeDef *hdma) +6860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ +6862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); +6863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable DMA Request */ +6865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; +6866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* If last transfer, enable STOP interrupt */ +6868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount == 0U) +6869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable STOP interrupt */ +6871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_CPLT_IT); +6872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* else prepare a new DMA transfer and enable TCReload interrupt */ +6874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update Buffer pointer */ +6877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr += hi2c->XferSize; +6878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Set the XferSize to transfer */ +6880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferCount > MAX_NBYTE_SIZE) +6881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Errata workaround 170323 */ +6883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) +6884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = 1U; +6886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 123 + + +6887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = MAX_NBYTE_SIZE; +6890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; +6895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable the DMA stream */ +6898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_DMA_Start_IT(hi2c->hdmarx, (uint32_t)&hi2c->Instance->RXDR, (uint32_t)hi2c->pBuffPtr, +6899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) +6900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); +6903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable TC interrupts */ +6907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Enable_IRQ(hi2c, I2C_XFER_RELOAD_IT); +6908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief DMA I2C slave receive process complete callback. +6915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hdma DMA handle +6916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMASlaveReceiveCplt(DMA_HandleTypeDef *hdma) +6919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ +6921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); +6922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; +6923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) && \ +6925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) +6926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable DMA Request */ +6928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; +6929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call I2C Slave Sequential complete process */ +6931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITSlaveSeqCplt(hi2c); +6932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +6934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* No specific action, Master fully manage the generation of STOP condition */ +6936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Mean that this generation can arrive at any time, at the end or during DMA process */ +6937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* So STOP condition should be manage through Interrupt treatment */ +6938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief DMA I2C communication error callback. + ARM GAS /tmp/ccVyGVF6.s page 124 + + +6944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hdma DMA handle +6945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMAError(DMA_HandleTypeDef *hdma) +6948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t treatdmaerror = 0U; +6950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ +6951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); +6952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +6954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx) == 0U) +6956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** treatdmaerror = 1U; +6958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +6962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx) == 0U) +6964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** treatdmaerror = 1U; +6966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if a FIFO error is detected, if true normal use case, so no specific action to perform * +6970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (!((HAL_DMA_GetError(hdma) == HAL_DMA_ERROR_FE)) && (treatdmaerror != 0U)) +6971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable Acknowledge */ +6973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_NACK; +6974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Call the corresponding callback to inform upper layer of End of Transfer */ +6976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_ITError(hi2c, HAL_I2C_ERROR_DMA); +6977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +6982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief DMA I2C communication abort callback +6983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * (To be called at end of DMA Abort procedure). +6984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hdma DMA handle. +6985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +6986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +6987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_DMAAbort(DMA_HandleTypeDef *hdma) +6988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ +6990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); +6991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +6992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset AbortCpltCallback */ +6993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmatx != NULL) +6994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; +6996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +6997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->hdmarx != NULL) +6998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +6999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; +7000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 125 + + +7001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TreatErrorCallback(hi2c); +7003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +7007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout. It waits +7008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * until a flag is no longer in the specified status. +7009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +7010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +7011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Flag Specifies the I2C flag to check. +7012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Status The actual Flag status (SET or RESET). +7013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +7014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Tickstart Tick start value +7015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +7016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +7017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Flag, FlagSta +7018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Timeout, uint32_t Tickstart) +7019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) +7021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if an error is detected */ +7023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) +7024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +7026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check for the Timeout */ +7029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) +7030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) +7032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, Flag) == Status)) +7034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; +7036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +7037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +7038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +7040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +7041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +7042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +7047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +7050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of TXIS flag. +7051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +7052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +7053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +7054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Tickstart Tick start value +7055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +7056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +7057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnTXISFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, + ARM GAS /tmp/ccVyGVF6.s page 126 + + +7058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart) +7059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) +7061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if an error is detected */ +7063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) +7064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +7066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check for the Timeout */ +7069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) +7070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) +7072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)) +7074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; +7076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +7077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +7078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +7080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +7081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +7083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +7088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +7091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of STOP flag. +7092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +7093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +7094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +7095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Tickstart Tick start value +7096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +7097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +7098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnSTOPFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, +7099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart) +7100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) +7102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if an error is detected */ +7104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) +7105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +7107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check for the Timeout */ +7110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) +7111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET)) +7113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; + ARM GAS /tmp/ccVyGVF6.s page 127 + + +7115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +7116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +7117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +7119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +7120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; +7122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_OK; +7126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +7129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief This function handles I2C Communication Timeout for specific usage of RXNE flag. +7130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +7131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +7132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +7133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Tickstart Tick start value +7134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +7135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +7136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_WaitOnRXNEFlagUntilTimeout(I2C_HandleTypeDef *hi2c, uint32_t Timeout, +7137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Tickstart) +7138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; +7140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET) && (status == HAL_OK)) +7142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if an error is detected */ +7144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (I2C_IsErrorOccurred(hi2c, Timeout, Tickstart) != HAL_OK) +7145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; +7147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if a STOPF is detected */ +7150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == SET) && (status == HAL_OK)) +7151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if an RXNE is pending */ +7153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Store Last receive data if any */ +7154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == SET) && (hi2c->XferSize > 0U)) +7155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return HAL_OK */ +7157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* The Reading of data from RXDR will be done in caller function */ +7158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_OK; +7159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check a no-acknowledge have been detected */ +7162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF) == SET) +7163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +7165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_AF; +7166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag */ +7168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +7169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear Configuration Register 2 */ +7171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); + ARM GAS /tmp/ccVyGVF6.s page 128 + + +7172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +7174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +7175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +7177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +7178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; +7180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +7182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; +7184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check for the Timeout */ +7188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) && (status == HAL_OK)) +7189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_RXNE) == RESET)) +7191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_TIMEOUT; +7193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +7194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +7196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +7197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; +7199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return status; +7203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +7206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief This function handles errors detection during an I2C Communication. +7207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +7208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +7209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Timeout Timeout duration +7210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Tickstart Tick start value +7211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval HAL status +7212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +7213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static HAL_StatusTypeDef I2C_IsErrorOccurred(I2C_HandleTypeDef *hi2c, uint32_t Timeout, uint32_t Ti +7214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; +7216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itflag = hi2c->Instance->ISR; +7217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t error_code = 0; +7218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart = Tickstart; +7219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmp1; +7220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_ModeTypeDef tmp2; +7221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_AF)) +7223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear NACKF Flag */ +7225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); +7226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Wait until STOP Flag is set or timeout occurred */ +7228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* AutoEnd should be initiate after AF */ + ARM GAS /tmp/ccVyGVF6.s page 129 + + +7229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) && (status == HAL_OK)) +7230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check for the Timeout */ +7232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (Timeout != HAL_MAX_DELAY) +7233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) +7235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp1 = (uint32_t)(hi2c->Instance->CR2 & I2C_CR2_STOP); +7237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = hi2c->Mode; +7238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* In case of I2C still busy, try to regenerate a STOP manually */ +7240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) != RESET) && \ +7241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmp1 != I2C_CR2_STOP) && \ +7242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmp2 != HAL_I2C_MODE_SLAVE)) +7243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Generate Stop */ +7245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Instance->CR2 |= I2C_CR2_STOP; +7246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Update Tick with new reference */ +7248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tickstart = HAL_GetTick(); +7249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) +7252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check for the Timeout */ +7254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((HAL_GetTick() - tickstart) > I2C_TIMEOUT_STOPF) +7255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_TIMEOUT; +7257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; +7259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** break; +7261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* In case STOP Flag is detected, clear it */ +7268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (status == HAL_OK) +7269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear STOP Flag */ +7271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); +7272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_AF; +7275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; +7277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Refresh Content of Status register */ +7280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** itflag = hi2c->Instance->ISR; +7281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Then verify if an additional errors occurs */ +7283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if a Bus error occurred */ +7284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_BERR)) +7285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 130 + + +7286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_BERR; +7287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear BERR flag */ +7289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); +7290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; +7292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if an Over-Run/Under-Run error occurred */ +7295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_OVR)) +7296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_OVR; +7298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear OVR flag */ +7300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); +7301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; +7303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check if an Arbitration Loss error occurred */ +7306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (HAL_IS_BIT_SET(itflag, I2C_FLAG_ARLO)) +7307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** error_code |= HAL_I2C_ERROR_ARLO; +7309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear ARLO flag */ +7311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); +7312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** status = HAL_ERROR; +7314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (status != HAL_OK) +7317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Flush TX register */ +7319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_Flush_TXDR(hi2c); +7320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Clear Configuration Register 2 */ +7322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RESET_CR2(hi2c); +7323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= error_code; +7325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; +7326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; +7327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Process Unlocked */ +7329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_UNLOCK(hi2c); +7330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return status; +7333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +7336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Handles I2Cx communication when starting transfer or during transfer (TC or TCR flag ar +7337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +7338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param DevAddress Specifies the slave address to be programmed. +7339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Size Specifies the number of bytes to be programmed. +7340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * This parameter must be a value between 0 and 255. +7341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Mode New state of the I2C START condition generation. +7342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * This parameter can be one of the following values: + ARM GAS /tmp/ccVyGVF6.s page 131 + + +7343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref I2C_RELOAD_MODE Enable Reload mode . +7344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref I2C_AUTOEND_MODE Enable Automatic end mode. +7345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref I2C_SOFTEND_MODE Enable Software end mode. +7346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param Request New state of the I2C START condition generation. +7347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * This parameter can be one of the following values: +7348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref I2C_NO_STARTSTOP Don't Generate stop and start condition. +7349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_STOP Generate stop condition (Size should be set to 0). +7350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_START_READ Generate Restart for read request. +7351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @arg @ref I2C_GENERATE_START_WRITE Generate Restart for write request. +7352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +7353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +7354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_TransferConfig(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t Size, uint32_t +7355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t Request) +7356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 72 .loc 1 7356 1 is_stmt 1 view -0 + 73 .cfi_startproc + 74 @ args = 4, pretend = 0, frame = 0 + 75 @ frame_needed = 0, uses_anonymous_args = 0 + 76 @ link register save eliminated. + 77 .loc 1 7356 1 is_stmt 0 view .LVU12 + 78 0000 10B4 push {r4} + 79 .LCFI0: + 80 .cfi_def_cfa_offset 4 + 81 .cfi_offset 4, -4 + 82 0002 019C ldr r4, [sp, #4] +7357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ +7358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + 83 .loc 1 7358 3 is_stmt 1 view .LVU13 +7359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_TRANSFER_MODE(Mode)); + 84 .loc 1 7359 3 view .LVU14 +7360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_TRANSFER_REQUEST(Request)); + 85 .loc 1 7360 3 view .LVU15 +7361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ +7363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmp = ((uint32_t)(((uint32_t)DevAddress & I2C_CR2_SADD) | \ + 86 .loc 1 7363 3 view .LVU16 + 87 .loc 1 7363 52 is_stmt 0 view .LVU17 + 88 0004 C1F30901 ubfx r1, r1, #0, #10 + 89 .LVL2: + 90 .loc 1 7363 68 view .LVU18 + 91 0008 41EA0241 orr r1, r1, r2, lsl #16 +7364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ + 92 .loc 1 7364 88 view .LVU19 + 93 000c 1943 orrs r1, r1, r3 +7363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ + 94 .loc 1 7363 19 view .LVU20 + 95 000e 2143 orrs r1, r1, r4 +7363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (((uint32_t)Size << I2C_CR2_NBYTES_Pos) & I2C_CR2_NBYTES) | \ + 96 .loc 1 7363 12 view .LVU21 + 97 0010 21F00041 bic r1, r1, #-2147483648 + 98 .LVL3: +7365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)Mode | (uint32_t)Request) & (~0x80000000U)); +7366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* update CR2 register */ +7368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** MODIFY_REG(hi2c->Instance->CR2, \ + 99 .loc 1 7368 3 is_stmt 1 view .LVU22 + 100 0014 0268 ldr r2, [r0] + ARM GAS /tmp/ccVyGVF6.s page 132 + + + 101 .LVL4: + 102 .loc 1 7368 3 is_stmt 0 view .LVU23 + 103 0016 5368 ldr r3, [r2, #4] + 104 .LVL5: + 105 .loc 1 7368 3 view .LVU24 + 106 0018 640D lsrs r4, r4, #21 + 107 001a 04F48064 and r4, r4, #1024 + 108 001e 44F07F74 orr r4, r4, #66846720 + 109 0022 44F45834 orr r4, r4, #221184 + 110 0026 44F47F74 orr r4, r4, #1020 + 111 002a 44F00304 orr r4, r4, #3 + 112 002e 23EA0404 bic r4, r3, r4 + 113 0032 2143 orrs r1, r1, r4 + 114 .LVL6: + 115 .loc 1 7368 3 view .LVU25 + 116 0034 5160 str r1, [r2, #4] +7369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ((I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | \ +7370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CR2_RD_WRN & (uint32_t)(Request >> (31U - I2C_CR2_RD_WRN_Pos))) | \ +7371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_CR2_START | I2C_CR2_STOP)), tmp); +7372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 117 .loc 1 7372 1 view .LVU26 + 118 0036 5DF8044B ldr r4, [sp], #4 + 119 .LCFI1: + 120 .cfi_restore 4 + 121 .cfi_def_cfa_offset 0 + 122 .LVL7: + 123 .loc 1 7372 1 view .LVU27 + 124 003a 7047 bx lr + 125 .cfi_endproc + 126 .LFE218: + 128 .section .text.I2C_Enable_IRQ,"ax",%progbits + 129 .align 1 + 130 .syntax unified + 131 .thumb + 132 .thumb_func + 133 .fpu fpv5-d16 + 135 I2C_Enable_IRQ: + 136 .LVL8: + 137 .LFB219: +7373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +7375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Manage the enabling of Interrupts. +7376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +7377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +7378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. +7379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +7380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +7381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_Enable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) +7382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 138 .loc 1 7382 1 is_stmt 1 view -0 + 139 .cfi_startproc + 140 @ args = 0, pretend = 0, frame = 0 + 141 @ frame_needed = 0, uses_anonymous_args = 0 + 142 @ link register save eliminated. +7383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpisr = 0U; + 143 .loc 1 7383 3 view .LVU29 +7384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 133 + + +7385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->XferISR != I2C_Master_ISR_DMA) && \ + 144 .loc 1 7385 3 view .LVU30 + 145 .loc 1 7385 12 is_stmt 0 view .LVU31 + 146 0000 436B ldr r3, [r0, #52] + 147 .loc 1 7385 6 view .LVU32 + 148 0002 234A ldr r2, .L24 + 149 0004 9342 cmp r3, r2 + 150 0006 1FD0 beq .L7 + 151 .loc 1 7385 45 discriminator 1 view .LVU33 + 152 0008 224A ldr r2, .L24+4 + 153 000a 9342 cmp r3, r2 + 154 000c 1CD0 beq .L7 +7386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (hi2c->XferISR != I2C_Slave_ISR_DMA) && \ + 155 .loc 1 7386 44 view .LVU34 + 156 000e 224A ldr r2, .L24+8 + 157 0010 9342 cmp r3, r2 + 158 0012 19D0 beq .L7 +7387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (hi2c->XferISR != I2C_Mem_ISR_DMA)) +7388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + 159 .loc 1 7389 5 is_stmt 1 view .LVU35 + 160 .loc 1 7389 8 is_stmt 0 view .LVU36 + 161 0014 11F4004F tst r1, #32768 + 162 0018 11D1 bne .L18 +7383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 163 .loc 1 7383 12 view .LVU37 + 164 001a 0023 movs r3, #0 + 165 .L8: + 166 .LVL9: +7390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, STOP, NACK and ADDR interrupts */ +7392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; +7393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) + 167 .loc 1 7395 5 is_stmt 1 view .LVU38 + 168 .loc 1 7395 8 is_stmt 0 view .LVU39 + 169 001c 11F0010F tst r1, #1 + 170 0020 01D0 beq .L9 +7396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and TXI interrupts */ +7398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; + 171 .loc 1 7398 7 is_stmt 1 view .LVU40 + 172 .loc 1 7398 14 is_stmt 0 view .LVU41 + 173 0022 43F0F203 orr r3, r3, #242 + 174 .LVL10: + 175 .L9: +7399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) + 176 .loc 1 7401 5 is_stmt 1 view .LVU42 + 177 .loc 1 7401 8 is_stmt 0 view .LVU43 + 178 0026 11F0020F tst r1, #2 + 179 002a 01D0 beq .L10 +7402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and RXI interrupts */ +7404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; + ARM GAS /tmp/ccVyGVF6.s page 134 + + + 180 .loc 1 7404 7 is_stmt 1 view .LVU44 + 181 .loc 1 7404 14 is_stmt 0 view .LVU45 + 182 002c 43F0F403 orr r3, r3, #244 + 183 .LVL11: + 184 .L10: +7405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT) + 185 .loc 1 7407 5 is_stmt 1 view .LVU46 + 186 .loc 1 7407 8 is_stmt 0 view .LVU47 + 187 0030 1029 cmp r1, #16 + 188 0032 06D0 beq .L20 + 189 .L11: +7408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ +7410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; +7411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT) + 190 .loc 1 7413 5 is_stmt 1 view .LVU48 + 191 .loc 1 7413 8 is_stmt 0 view .LVU49 + 192 0034 2029 cmp r1, #32 + 193 0036 1BD1 bne .L12 +7414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable STOP interrupts */ +7416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI; + 194 .loc 1 7416 7 is_stmt 1 view .LVU50 + 195 .loc 1 7416 14 is_stmt 0 view .LVU51 + 196 0038 43F02003 orr r3, r3, #32 + 197 .LVL12: + 198 .loc 1 7416 14 view .LVU52 + 199 003c 18E0 b .L12 + 200 .LVL13: + 201 .L18: +7392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 202 .loc 1 7392 14 view .LVU53 + 203 003e B823 movs r3, #184 + 204 0040 ECE7 b .L8 + 205 .LVL14: + 206 .L20: +7410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 207 .loc 1 7410 7 is_stmt 1 view .LVU54 +7410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 208 .loc 1 7410 14 is_stmt 0 view .LVU55 + 209 0042 43F09003 orr r3, r3, #144 + 210 .LVL15: +7410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 211 .loc 1 7410 14 view .LVU56 + 212 0046 F5E7 b .L11 + 213 .LVL16: + 214 .L7: +7417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +7421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + ARM GAS /tmp/ccVyGVF6.s page 135 + + + 215 .loc 1 7422 5 is_stmt 1 view .LVU57 + 216 .loc 1 7422 8 is_stmt 0 view .LVU58 + 217 0048 11F4004F tst r1, #32768 + 218 004c 15D1 bne .L19 +7383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 219 .loc 1 7383 12 view .LVU59 + 220 004e 0023 movs r3, #0 + 221 .L13: + 222 .LVL17: +7423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, STOP, NACK and ADDR interrupts */ +7425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; +7426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) + 223 .loc 1 7428 5 is_stmt 1 view .LVU60 + 224 .loc 1 7428 8 is_stmt 0 view .LVU61 + 225 0050 11F0010F tst r1, #1 + 226 0054 01D0 beq .L14 +7429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and TXI interrupts */ +7431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_TXI; + 227 .loc 1 7431 7 is_stmt 1 view .LVU62 + 228 .loc 1 7431 14 is_stmt 0 view .LVU63 + 229 0056 43F0F203 orr r3, r3, #242 + 230 .LVL18: + 231 .L14: +7432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) + 232 .loc 1 7434 5 is_stmt 1 view .LVU64 + 233 .loc 1 7434 8 is_stmt 0 view .LVU65 + 234 005a 11F0020F tst r1, #2 + 235 005e 01D0 beq .L15 +7435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR, TC, STOP, NACK and RXI interrupts */ +7437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_TCI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_RXI; + 236 .loc 1 7437 7 is_stmt 1 view .LVU66 + 237 .loc 1 7437 14 is_stmt 0 view .LVU67 + 238 0060 43F0F403 orr r3, r3, #244 + 239 .LVL19: + 240 .L15: +7438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT) + 241 .loc 1 7440 5 is_stmt 1 view .LVU68 + 242 .loc 1 7440 8 is_stmt 0 view .LVU69 + 243 0064 1029 cmp r1, #16 + 244 0066 0AD0 beq .L21 + 245 .L16: +7441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ +7443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; +7444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT) + 246 .loc 1 7446 5 is_stmt 1 view .LVU70 + ARM GAS /tmp/ccVyGVF6.s page 136 + + + 247 .loc 1 7446 8 is_stmt 0 view .LVU71 + 248 0068 2029 cmp r1, #32 + 249 006a 0BD0 beq .L22 + 250 .L17: +7447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable STOP interrupts */ +7449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= (I2C_IT_STOPI | I2C_IT_TCI); +7450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_RELOAD_IT) + 251 .loc 1 7452 5 is_stmt 1 view .LVU72 + 252 .loc 1 7452 8 is_stmt 0 view .LVU73 + 253 006c 4029 cmp r1, #64 + 254 006e 0CD0 beq .L23 + 255 .L12: +7453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable TC interrupts */ +7455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI; +7456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable interrupts only at the end */ +7460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* to avoid the risk of I2C interrupt handle execution before */ +7461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* all interrupts requested done */ +7462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_ENABLE_IT(hi2c, tmpisr); + 256 .loc 1 7462 3 is_stmt 1 view .LVU74 + 257 0070 0168 ldr r1, [r0] + 258 .LVL20: + 259 .loc 1 7462 3 is_stmt 0 view .LVU75 + 260 0072 0A68 ldr r2, [r1] + 261 0074 1343 orrs r3, r3, r2 + 262 .LVL21: + 263 .loc 1 7462 3 view .LVU76 + 264 0076 0B60 str r3, [r1] +7463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 265 .loc 1 7463 1 view .LVU77 + 266 0078 7047 bx lr + 267 .LVL22: + 268 .L19: +7425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 269 .loc 1 7425 14 view .LVU78 + 270 007a B823 movs r3, #184 + 271 007c E8E7 b .L13 + 272 .LVL23: + 273 .L21: +7443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 274 .loc 1 7443 7 is_stmt 1 view .LVU79 +7443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 275 .loc 1 7443 14 is_stmt 0 view .LVU80 + 276 007e 43F09003 orr r3, r3, #144 + 277 .LVL24: +7443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 278 .loc 1 7443 14 view .LVU81 + 279 0082 F1E7 b .L16 + 280 .L22: +7449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 281 .loc 1 7449 7 is_stmt 1 view .LVU82 + ARM GAS /tmp/ccVyGVF6.s page 137 + + +7449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 282 .loc 1 7449 14 is_stmt 0 view .LVU83 + 283 0084 43F06003 orr r3, r3, #96 + 284 .LVL25: +7449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 285 .loc 1 7449 14 view .LVU84 + 286 0088 F0E7 b .L17 + 287 .L23: +7455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 288 .loc 1 7455 7 is_stmt 1 view .LVU85 +7455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 289 .loc 1 7455 14 is_stmt 0 view .LVU86 + 290 008a 43F04003 orr r3, r3, #64 + 291 .LVL26: +7455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 292 .loc 1 7455 14 view .LVU87 + 293 008e EFE7 b .L12 + 294 .L25: + 295 .align 2 + 296 .L24: + 297 0090 00000000 .word I2C_Master_ISR_DMA + 298 0094 00000000 .word I2C_Slave_ISR_DMA + 299 0098 00000000 .word I2C_Mem_ISR_DMA + 300 .cfi_endproc + 301 .LFE219: + 303 .section .text.I2C_Disable_IRQ,"ax",%progbits + 304 .align 1 + 305 .syntax unified + 306 .thumb + 307 .thumb_func + 308 .fpu fpv5-d16 + 310 I2C_Disable_IRQ: + 311 .LVL27: + 312 .LFB220: +7464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +7466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Manage the disabling of Interrupts. +7467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains +7468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * the configuration information for the specified I2C. +7469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. +7470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +7471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +7472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) +7473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 313 .loc 1 7473 1 is_stmt 1 view -0 + 314 .cfi_startproc + 315 @ args = 0, pretend = 0, frame = 0 + 316 @ frame_needed = 0, uses_anonymous_args = 0 + 317 @ link register save eliminated. +7474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpisr = 0U; + 318 .loc 1 7474 3 view .LVU89 +7475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) + 319 .loc 1 7476 3 view .LVU90 + 320 .loc 1 7476 6 is_stmt 0 view .LVU91 + 321 0000 11F0010F tst r1, #1 + 322 0004 09D0 beq .L33 + ARM GAS /tmp/ccVyGVF6.s page 138 + + +7477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable TC and TXI interrupts */ +7479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI | I2C_IT_TXI; + 323 .loc 1 7479 5 is_stmt 1 view .LVU92 + 324 .LVL28: +7480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) + 325 .loc 1 7481 5 view .LVU93 + 326 .loc 1 7481 24 is_stmt 0 view .LVU94 + 327 0006 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 328 .loc 1 7481 8 view .LVU95 + 329 000a 03F02803 and r3, r3, #40 + 330 000e 282B cmp r3, #40 + 331 0010 01D0 beq .L36 +7482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable NACK and STOP interrupts */ +7484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + 332 .loc 1 7484 14 view .LVU96 + 333 0012 F223 movs r3, #242 + 334 0014 02E0 b .L27 + 335 .L36: +7479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 336 .loc 1 7479 12 view .LVU97 + 337 0016 4223 movs r3, #66 + 338 0018 00E0 b .L27 + 339 .LVL29: + 340 .L33: +7474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 341 .loc 1 7474 12 view .LVU98 + 342 001a 0023 movs r3, #0 + 343 .LVL30: + 344 .L27: +7485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) + 345 .loc 1 7488 3 is_stmt 1 view .LVU99 + 346 .loc 1 7488 6 is_stmt 0 view .LVU100 + 347 001c 11F0020F tst r1, #2 + 348 0020 09D0 beq .L28 +7489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable TC and RXI interrupts */ +7491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI | I2C_IT_RXI; + 349 .loc 1 7491 5 is_stmt 1 view .LVU101 + 350 .loc 1 7491 12 is_stmt 0 view .LVU102 + 351 0022 43F0440C orr ip, r3, #68 + 352 .LVL31: +7492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) + 353 .loc 1 7493 5 is_stmt 1 view .LVU103 + 354 .loc 1 7493 24 is_stmt 0 view .LVU104 + 355 0026 90F84120 ldrb r2, [r0, #65] @ zero_extendqisi2 + 356 .loc 1 7493 8 view .LVU105 + 357 002a 02F02802 and r2, r2, #40 + 358 002e 282A cmp r2, #40 + 359 0030 10D0 beq .L35 +7494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 139 + + +7495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable NACK and STOP interrupts */ +7496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; + 360 .loc 1 7496 7 is_stmt 1 view .LVU106 + 361 .loc 1 7496 14 is_stmt 0 view .LVU107 + 362 0032 43F0F403 orr r3, r3, #244 + 363 .LVL32: + 364 .L28: +7497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) + 365 .loc 1 7500 3 is_stmt 1 view .LVU108 + 366 .loc 1 7500 6 is_stmt 0 view .LVU109 + 367 0036 11F4004F tst r1, #32768 + 368 003a 0DD1 bne .L37 + 369 .L29: +7501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable ADDR, NACK and STOP interrupts */ +7503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; +7504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_ERROR_IT) + 370 .loc 1 7506 3 is_stmt 1 view .LVU110 + 371 .loc 1 7506 6 is_stmt 0 view .LVU111 + 372 003c 1029 cmp r1, #16 + 373 003e 0ED0 beq .L38 + 374 .L30: +7507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable ERR and NACK interrupts */ +7509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; +7510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_CPLT_IT) + 375 .loc 1 7512 3 is_stmt 1 view .LVU112 + 376 .loc 1 7512 6 is_stmt 0 view .LVU113 + 377 0040 2029 cmp r1, #32 + 378 0042 0FD0 beq .L39 + 379 .L31: +7513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable STOP interrupts */ +7515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_STOPI; +7516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (InterruptRequest == I2C_XFER_RELOAD_IT) + 380 .loc 1 7518 3 is_stmt 1 view .LVU114 + 381 .loc 1 7518 6 is_stmt 0 view .LVU115 + 382 0044 4029 cmp r1, #64 + 383 0046 10D0 beq .L40 + 384 .L32: +7519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Enable TC interrupts */ +7521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmpisr |= I2C_IT_TCI; +7522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Disable interrupts only at the end */ +7525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* to avoid a breaking situation like at "t" time */ +7526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* all disable interrupts request are not done */ + ARM GAS /tmp/ccVyGVF6.s page 140 + + +7527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __HAL_I2C_DISABLE_IT(hi2c, tmpisr); + 385 .loc 1 7527 3 is_stmt 1 view .LVU116 + 386 0048 0168 ldr r1, [r0] + 387 .LVL33: + 388 .loc 1 7527 3 is_stmt 0 view .LVU117 + 389 004a 0A68 ldr r2, [r1] + 390 004c 22EA0303 bic r3, r2, r3 + 391 .LVL34: + 392 .loc 1 7527 3 view .LVU118 + 393 0050 0B60 str r3, [r1] +7528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 394 .loc 1 7528 1 view .LVU119 + 395 0052 7047 bx lr + 396 .LVL35: + 397 .L35: +7491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 398 .loc 1 7491 12 view .LVU120 + 399 0054 6346 mov r3, ip + 400 0056 EEE7 b .L28 + 401 .LVL36: + 402 .L37: +7503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 403 .loc 1 7503 5 is_stmt 1 view .LVU121 +7503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 404 .loc 1 7503 12 is_stmt 0 view .LVU122 + 405 0058 43F0B803 orr r3, r3, #184 + 406 .LVL37: +7503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 407 .loc 1 7503 12 view .LVU123 + 408 005c EEE7 b .L29 + 409 .L38: +7509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 410 .loc 1 7509 5 is_stmt 1 view .LVU124 +7509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 411 .loc 1 7509 12 is_stmt 0 view .LVU125 + 412 005e 43F09003 orr r3, r3, #144 + 413 .LVL38: +7509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 414 .loc 1 7509 12 view .LVU126 + 415 0062 EDE7 b .L30 + 416 .L39: +7515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 417 .loc 1 7515 5 is_stmt 1 view .LVU127 +7515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 418 .loc 1 7515 12 is_stmt 0 view .LVU128 + 419 0064 43F02003 orr r3, r3, #32 + 420 .LVL39: +7515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 421 .loc 1 7515 12 view .LVU129 + 422 0068 ECE7 b .L31 + 423 .L40: +7521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 424 .loc 1 7521 5 is_stmt 1 view .LVU130 +7521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 425 .loc 1 7521 12 is_stmt 0 view .LVU131 + 426 006a 43F04003 orr r3, r3, #64 + 427 .LVL40: + ARM GAS /tmp/ccVyGVF6.s page 141 + + +7521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 428 .loc 1 7521 12 view .LVU132 + 429 006e EBE7 b .L32 + 430 .cfi_endproc + 431 .LFE220: + 433 .section .text.I2C_ConvertOtherXferOptions,"ax",%progbits + 434 .align 1 + 435 .syntax unified + 436 .thumb + 437 .thumb_func + 438 .fpu fpv5-d16 + 440 I2C_ConvertOtherXferOptions: + 441 .LVL41: + 442 .LFB221: +7529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** +7530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** +7531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @brief Convert I2Cx OTHER_xxx XferOptions to functional XferOptions. +7532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @param hi2c I2C handle. +7533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** * @retval None +7534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** */ +7535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** static void I2C_ConvertOtherXferOptions(I2C_HandleTypeDef *hi2c) +7536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 443 .loc 1 7536 1 is_stmt 1 view -0 + 444 .cfi_startproc + 445 @ args = 0, pretend = 0, frame = 0 + 446 @ frame_needed = 0, uses_anonymous_args = 0 + 447 @ link register save eliminated. +7537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* if user set XferOptions to I2C_OTHER_FRAME */ +7538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* it request implicitly to generate a restart condition */ +7539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* set XferOptions to I2C_FIRST_FRAME */ +7540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions == I2C_OTHER_FRAME) + 448 .loc 1 7540 3 view .LVU134 + 449 .loc 1 7540 11 is_stmt 0 view .LVU135 + 450 0000 C36A ldr r3, [r0, #44] + 451 .loc 1 7540 6 view .LVU136 + 452 0002 AA2B cmp r3, #170 + 453 0004 04D0 beq .L44 +7541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_FIRST_FRAME; +7543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* else if user set XferOptions to I2C_OTHER_AND_LAST_FRAME */ +7545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* it request implicitly to generate a restart condition */ +7546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* then generate a stop condition at the end of transfer */ +7547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* set XferOptions to I2C_FIRST_AND_LAST_FRAME */ +7548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else if (hi2c->XferOptions == I2C_OTHER_AND_LAST_FRAME) + 454 .loc 1 7548 8 is_stmt 1 view .LVU137 + 455 .loc 1 7548 16 is_stmt 0 view .LVU138 + 456 0006 C36A ldr r3, [r0, #44] + 457 .loc 1 7548 11 view .LVU139 + 458 0008 B3F52A4F cmp r3, #43520 + 459 000c 03D0 beq .L45 + 460 .L41: +7549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { +7550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_FIRST_AND_LAST_FRAME; +7551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** else +7553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 142 + + +7554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Nothing to do */ +7555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } +7556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 461 .loc 1 7556 1 view .LVU140 + 462 000e 7047 bx lr + 463 .L44: +7542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 464 .loc 1 7542 5 is_stmt 1 view .LVU141 +7542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 465 .loc 1 7542 23 is_stmt 0 view .LVU142 + 466 0010 0023 movs r3, #0 + 467 0012 C362 str r3, [r0, #44] + 468 0014 7047 bx lr + 469 .L45: +7550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 470 .loc 1 7550 5 is_stmt 1 view .LVU143 +7550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 471 .loc 1 7550 23 is_stmt 0 view .LVU144 + 472 0016 4FF00073 mov r3, #33554432 + 473 001a C362 str r3, [r0, #44] +7555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 474 .loc 1 7555 3 is_stmt 1 view .LVU145 + 475 .loc 1 7556 1 is_stmt 0 view .LVU146 + 476 001c F7E7 b .L41 + 477 .cfi_endproc + 478 .LFE221: + 480 .section .text.I2C_IsErrorOccurred,"ax",%progbits + 481 .align 1 + 482 .syntax unified + 483 .thumb + 484 .thumb_func + 485 .fpu fpv5-d16 + 487 I2C_IsErrorOccurred: + 488 .LVL42: + 489 .LFB217: +7214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; + 490 .loc 1 7214 1 is_stmt 1 view -0 + 491 .cfi_startproc + 492 @ args = 0, pretend = 0, frame = 0 + 493 @ frame_needed = 0, uses_anonymous_args = 0 +7214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; + 494 .loc 1 7214 1 is_stmt 0 view .LVU148 + 495 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 496 .LCFI2: + 497 .cfi_def_cfa_offset 24 + 498 .cfi_offset 4, -24 + 499 .cfi_offset 5, -20 + 500 .cfi_offset 6, -16 + 501 .cfi_offset 7, -12 + 502 .cfi_offset 8, -8 + 503 .cfi_offset 14, -4 + 504 0004 0446 mov r4, r0 +7215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itflag = hi2c->Instance->ISR; + 505 .loc 1 7215 3 is_stmt 1 view .LVU149 + 506 .LVL43: +7216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t error_code = 0; + 507 .loc 1 7216 3 view .LVU150 + ARM GAS /tmp/ccVyGVF6.s page 143 + + +7216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t error_code = 0; + 508 .loc 1 7216 27 is_stmt 0 view .LVU151 + 509 0006 0368 ldr r3, [r0] +7216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t error_code = 0; + 510 .loc 1 7216 12 view .LVU152 + 511 0008 9E69 ldr r6, [r3, #24] + 512 .LVL44: +7217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart = Tickstart; + 513 .loc 1 7217 3 is_stmt 1 view .LVU153 +7218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmp1; + 514 .loc 1 7218 3 view .LVU154 +7219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_ModeTypeDef tmp2; + 515 .loc 1 7219 3 view .LVU155 +7220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 516 .loc 1 7220 3 view .LVU156 +7222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 517 .loc 1 7222 3 view .LVU157 +7222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 518 .loc 1 7222 6 is_stmt 0 view .LVU158 + 519 000a 16F01006 ands r6, r6, #16 + 520 .LVL45: +7222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 521 .loc 1 7222 6 view .LVU159 + 522 000e 7ED0 beq .L63 + 523 0010 0D46 mov r5, r1 + 524 0012 9046 mov r8, r2 +7225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 525 .loc 1 7225 5 is_stmt 1 view .LVU160 + 526 0014 1022 movs r2, #16 + 527 .LVL46: +7225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 528 .loc 1 7225 5 is_stmt 0 view .LVU161 + 529 0016 DA61 str r2, [r3, #28] +7229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 530 .loc 1 7229 5 is_stmt 1 view .LVU162 +7217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart = Tickstart; + 531 .loc 1 7217 12 is_stmt 0 view .LVU163 + 532 0018 0026 movs r6, #0 +7215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itflag = hi2c->Instance->ISR; + 533 .loc 1 7215 21 view .LVU164 + 534 001a 3746 mov r7, r6 + 535 .LVL47: + 536 .L49: +7229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 537 .loc 1 7229 11 is_stmt 1 view .LVU165 +7229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 538 .loc 1 7229 13 is_stmt 0 view .LVU166 + 539 001c 2368 ldr r3, [r4] + 540 001e 9869 ldr r0, [r3, #24] +7229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 541 .loc 1 7229 11 view .LVU167 + 542 0020 10F0200F tst r0, #32 + 543 0024 32D1 bne .L55 +7229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 544 .loc 1 7229 64 discriminator 1 view .LVU168 + 545 0026 8FBB cbnz r7, .L55 +7232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 144 + + + 546 .loc 1 7232 7 is_stmt 1 view .LVU169 +7232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 547 .loc 1 7232 10 is_stmt 0 view .LVU170 + 548 0028 B5F1FF3F cmp r5, #-1 + 549 002c F6D0 beq .L49 +7234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 550 .loc 1 7234 9 is_stmt 1 view .LVU171 +7234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 551 .loc 1 7234 15 is_stmt 0 view .LVU172 + 552 002e FFF7FEFF bl HAL_GetTick + 553 .LVL48: +7234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 554 .loc 1 7234 29 view .LVU173 + 555 0032 A0EB0800 sub r0, r0, r8 +7234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 556 .loc 1 7234 12 view .LVU174 + 557 0036 A842 cmp r0, r5 + 558 0038 01D8 bhi .L50 +7234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 559 .loc 1 7234 53 discriminator 1 view .LVU175 + 560 003a 002D cmp r5, #0 + 561 003c EED1 bne .L49 + 562 .L50: +7236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = hi2c->Mode; + 563 .loc 1 7236 11 is_stmt 1 view .LVU176 +7236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = hi2c->Mode; + 564 .loc 1 7236 33 is_stmt 0 view .LVU177 + 565 003e 2168 ldr r1, [r4] +7236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = hi2c->Mode; + 566 .loc 1 7236 43 view .LVU178 + 567 0040 4A68 ldr r2, [r1, #4] +7236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = hi2c->Mode; + 568 .loc 1 7236 16 view .LVU179 + 569 0042 02F48042 and r2, r2, #16384 + 570 .LVL49: +7237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 571 .loc 1 7237 11 is_stmt 1 view .LVU180 +7237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 572 .loc 1 7237 16 is_stmt 0 view .LVU181 + 573 0046 94F84230 ldrb r3, [r4, #66] @ zero_extendqisi2 + 574 004a DBB2 uxtb r3, r3 + 575 .LVL50: +7240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmp1 != I2C_CR2_STOP) && \ + 576 .loc 1 7240 11 is_stmt 1 view .LVU182 +7240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmp1 != I2C_CR2_STOP) && \ + 577 .loc 1 7240 16 is_stmt 0 view .LVU183 + 578 004c 8869 ldr r0, [r1, #24] +7240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmp1 != I2C_CR2_STOP) && \ + 579 .loc 1 7240 14 view .LVU184 + 580 004e 10F4004F tst r0, #32768 + 581 0052 04D0 beq .L53 +7242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 582 .loc 1 7242 21 view .LVU185 + 583 0054 203B subs r3, r3, #32 + 584 .LVL51: +7242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 585 .loc 1 7242 21 view .LVU186 + ARM GAS /tmp/ccVyGVF6.s page 145 + + + 586 0056 18BF it ne + 587 0058 0123 movne r3, #1 + 588 .LVL52: +7241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmp2 != HAL_I2C_MODE_SLAVE)) + 589 .loc 1 7241 38 view .LVU187 + 590 005a 02B9 cbnz r2, .L53 + 591 005c 73B9 cbnz r3, .L65 + 592 .LVL53: + 593 .L53: +7251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 594 .loc 1 7251 17 is_stmt 1 view .LVU188 +7251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 595 .loc 1 7251 18 is_stmt 0 view .LVU189 + 596 005e 2368 ldr r3, [r4] + 597 0060 9B69 ldr r3, [r3, #24] +7251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 598 .loc 1 7251 17 view .LVU190 + 599 0062 13F0200F tst r3, #32 + 600 0066 D9D1 bne .L49 +7254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 601 .loc 1 7254 13 is_stmt 1 view .LVU191 +7254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 602 .loc 1 7254 18 is_stmt 0 view .LVU192 + 603 0068 FFF7FEFF bl HAL_GetTick + 604 .LVL54: +7254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 605 .loc 1 7254 32 view .LVU193 + 606 006c A0EB0800 sub r0, r0, r8 +7254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 607 .loc 1 7254 16 view .LVU194 + 608 0070 1928 cmp r0, #25 + 609 0072 F4D9 bls .L53 +7256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 610 .loc 1 7256 15 is_stmt 1 view .LVU195 +7256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 611 .loc 1 7256 26 is_stmt 0 view .LVU196 + 612 0074 46F02006 orr r6, r6, #32 + 613 .LVL55: +7258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 614 .loc 1 7258 15 is_stmt 1 view .LVU197 +7260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 615 .loc 1 7260 15 view .LVU198 +7258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 616 .loc 1 7258 22 is_stmt 0 view .LVU199 + 617 0078 0127 movs r7, #1 +7260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 618 .loc 1 7260 15 view .LVU200 + 619 007a CFE7 b .L49 + 620 .LVL56: + 621 .L65: +7245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 622 .loc 1 7245 13 is_stmt 1 view .LVU201 +7245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 623 .loc 1 7245 33 is_stmt 0 view .LVU202 + 624 007c 4B68 ldr r3, [r1, #4] + 625 007e 43F48043 orr r3, r3, #16384 + 626 0082 4B60 str r3, [r1, #4] + ARM GAS /tmp/ccVyGVF6.s page 146 + + +7248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 627 .loc 1 7248 13 is_stmt 1 view .LVU203 +7248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 628 .loc 1 7248 25 is_stmt 0 view .LVU204 + 629 0084 FFF7FEFF bl HAL_GetTick + 630 .LVL57: +7248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 631 .loc 1 7248 25 view .LVU205 + 632 0088 8046 mov r8, r0 + 633 .LVL58: +7248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 634 .loc 1 7248 25 view .LVU206 + 635 008a E8E7 b .L53 + 636 .LVL59: + 637 .L55: +7268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 638 .loc 1 7268 5 is_stmt 1 view .LVU207 +7268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 639 .loc 1 7268 8 is_stmt 0 view .LVU208 + 640 008c 0FB9 cbnz r7, .L57 +7271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 641 .loc 1 7271 7 is_stmt 1 view .LVU209 + 642 008e 2022 movs r2, #32 + 643 0090 DA61 str r2, [r3, #28] + 644 .L57: +7274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 645 .loc 1 7274 5 view .LVU210 +7274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 646 .loc 1 7274 16 is_stmt 0 view .LVU211 + 647 0092 46F00406 orr r6, r6, #4 + 648 .LVL60: +7276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 649 .loc 1 7276 5 is_stmt 1 view .LVU212 +7276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 650 .loc 1 7276 12 is_stmt 0 view .LVU213 + 651 0096 0125 movs r5, #1 + 652 .LVL61: + 653 .L47: +7280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 654 .loc 1 7280 3 is_stmt 1 view .LVU214 +7280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 655 .loc 1 7280 16 is_stmt 0 view .LVU215 + 656 0098 2268 ldr r2, [r4] +7280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 657 .loc 1 7280 10 view .LVU216 + 658 009a 9369 ldr r3, [r2, #24] + 659 .LVL62: +7284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 660 .loc 1 7284 3 is_stmt 1 view .LVU217 +7284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 661 .loc 1 7284 6 is_stmt 0 view .LVU218 + 662 009c 13F4807F tst r3, #256 + 663 00a0 05D0 beq .L58 +7286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 664 .loc 1 7286 5 is_stmt 1 view .LVU219 +7286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 665 .loc 1 7286 16 is_stmt 0 view .LVU220 + ARM GAS /tmp/ccVyGVF6.s page 147 + + + 666 00a2 46F00106 orr r6, r6, #1 + 667 .LVL63: +7289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 668 .loc 1 7289 5 is_stmt 1 view .LVU221 + 669 00a6 4FF48071 mov r1, #256 + 670 00aa D161 str r1, [r2, #28] +7291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 671 .loc 1 7291 5 view .LVU222 + 672 .LVL64: +7291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 673 .loc 1 7291 12 is_stmt 0 view .LVU223 + 674 00ac 0125 movs r5, #1 + 675 .LVL65: + 676 .L58: +7295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 677 .loc 1 7295 3 is_stmt 1 view .LVU224 +7295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 678 .loc 1 7295 6 is_stmt 0 view .LVU225 + 679 00ae 13F4806F tst r3, #1024 + 680 00b2 06D0 beq .L59 +7297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 681 .loc 1 7297 5 is_stmt 1 view .LVU226 +7297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 682 .loc 1 7297 16 is_stmt 0 view .LVU227 + 683 00b4 46F00806 orr r6, r6, #8 + 684 .LVL66: +7300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 685 .loc 1 7300 5 is_stmt 1 view .LVU228 + 686 00b8 2268 ldr r2, [r4] + 687 00ba 4FF48061 mov r1, #1024 + 688 00be D161 str r1, [r2, #28] +7302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 689 .loc 1 7302 5 view .LVU229 + 690 .LVL67: +7302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 691 .loc 1 7302 12 is_stmt 0 view .LVU230 + 692 00c0 0125 movs r5, #1 + 693 .LVL68: + 694 .L59: +7306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 695 .loc 1 7306 3 is_stmt 1 view .LVU231 +7306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 696 .loc 1 7306 6 is_stmt 0 view .LVU232 + 697 00c2 13F4007F tst r3, #512 + 698 00c6 24D0 beq .L60 +7308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 699 .loc 1 7308 5 is_stmt 1 view .LVU233 +7308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 700 .loc 1 7308 16 is_stmt 0 view .LVU234 + 701 00c8 46F00206 orr r6, r6, #2 + 702 .LVL69: +7311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 703 .loc 1 7311 5 is_stmt 1 view .LVU235 + 704 00cc 2368 ldr r3, [r4] + 705 .LVL70: +7311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 706 .loc 1 7311 5 is_stmt 0 view .LVU236 + ARM GAS /tmp/ccVyGVF6.s page 148 + + + 707 00ce 4FF40072 mov r2, #512 + 708 00d2 DA61 str r2, [r3, #28] +7313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 709 .loc 1 7313 5 is_stmt 1 view .LVU237 + 710 .LVL71: +7316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 711 .loc 1 7316 3 view .LVU238 +7313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 712 .loc 1 7313 12 is_stmt 0 view .LVU239 + 713 00d4 0125 movs r5, #1 + 714 .LVL72: + 715 .L61: +7319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 716 .loc 1 7319 5 is_stmt 1 view .LVU240 + 717 00d6 2046 mov r0, r4 + 718 00d8 FFF7FEFF bl I2C_Flush_TXDR + 719 .LVL73: +7322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 720 .loc 1 7322 5 view .LVU241 + 721 00dc 2268 ldr r2, [r4] + 722 00de 5368 ldr r3, [r2, #4] + 723 00e0 23F0FF73 bic r3, r3, #33423360 + 724 00e4 23F48B33 bic r3, r3, #71168 + 725 00e8 23F4FF73 bic r3, r3, #510 + 726 00ec 23F00103 bic r3, r3, #1 + 727 00f0 5360 str r3, [r2, #4] +7324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 728 .loc 1 7324 5 view .LVU242 +7324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 729 .loc 1 7324 21 is_stmt 0 view .LVU243 + 730 00f2 636C ldr r3, [r4, #68] + 731 00f4 1E43 orrs r6, r6, r3 + 732 .LVL74: +7324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 733 .loc 1 7324 21 view .LVU244 + 734 00f6 6664 str r6, [r4, #68] +7325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 735 .loc 1 7325 5 is_stmt 1 view .LVU245 +7325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 736 .loc 1 7325 17 is_stmt 0 view .LVU246 + 737 00f8 2023 movs r3, #32 + 738 00fa 84F84130 strb r3, [r4, #65] +7326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 739 .loc 1 7326 5 is_stmt 1 view .LVU247 +7326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 740 .loc 1 7326 16 is_stmt 0 view .LVU248 + 741 00fe 0023 movs r3, #0 + 742 0100 84F84230 strb r3, [r4, #66] +7329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 743 .loc 1 7329 5 is_stmt 1 view .LVU249 +7329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 744 .loc 1 7329 5 view .LVU250 + 745 0104 84F84030 strb r3, [r4, #64] + 746 .L62: +7329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 747 .loc 1 7329 5 discriminator 1 view .LVU251 +7332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 149 + + + 748 .loc 1 7332 3 discriminator 1 view .LVU252 +7333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 749 .loc 1 7333 1 is_stmt 0 discriminator 1 view .LVU253 + 750 0108 2846 mov r0, r5 + 751 010a BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 752 .LVL75: + 753 .L63: +7215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itflag = hi2c->Instance->ISR; + 754 .loc 1 7215 21 view .LVU254 + 755 010e 0025 movs r5, #0 + 756 0110 C2E7 b .L47 + 757 .LVL76: + 758 .L60: +7316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 759 .loc 1 7316 3 is_stmt 1 view .LVU255 +7316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 760 .loc 1 7316 6 is_stmt 0 view .LVU256 + 761 0112 002D cmp r5, #0 + 762 0114 F8D0 beq .L62 + 763 0116 DEE7 b .L61 + 764 .cfi_endproc + 765 .LFE217: + 767 .section .text.I2C_WaitOnTXISFlagUntilTimeout,"ax",%progbits + 768 .align 1 + 769 .syntax unified + 770 .thumb + 771 .thumb_func + 772 .fpu fpv5-d16 + 774 I2C_WaitOnTXISFlagUntilTimeout: + 775 .LVL77: + 776 .LFB214: +7059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) + 777 .loc 1 7059 1 is_stmt 1 view -0 + 778 .cfi_startproc + 779 @ args = 0, pretend = 0, frame = 0 + 780 @ frame_needed = 0, uses_anonymous_args = 0 +7059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET) + 781 .loc 1 7059 1 is_stmt 0 view .LVU258 + 782 0000 70B5 push {r4, r5, r6, lr} + 783 .LCFI3: + 784 .cfi_def_cfa_offset 16 + 785 .cfi_offset 4, -16 + 786 .cfi_offset 5, -12 + 787 .cfi_offset 6, -8 + 788 .cfi_offset 14, -4 + 789 0002 0446 mov r4, r0 + 790 0004 0D46 mov r5, r1 + 791 0006 1646 mov r6, r2 +7060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 792 .loc 1 7060 3 is_stmt 1 view .LVU259 + 793 .LVL78: + 794 .L69: +7060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 795 .loc 1 7060 9 view .LVU260 +7060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 796 .loc 1 7060 10 is_stmt 0 view .LVU261 + 797 0008 2368 ldr r3, [r4] + ARM GAS /tmp/ccVyGVF6.s page 150 + + + 798 000a 9B69 ldr r3, [r3, #24] +7060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 799 .loc 1 7060 9 view .LVU262 + 800 000c 13F0020F tst r3, #2 + 801 0010 22D1 bne .L74 +7063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 802 .loc 1 7063 5 is_stmt 1 view .LVU263 +7063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 803 .loc 1 7063 9 is_stmt 0 view .LVU264 + 804 0012 3246 mov r2, r6 + 805 0014 2946 mov r1, r5 + 806 0016 2046 mov r0, r4 + 807 0018 FFF7FEFF bl I2C_IsErrorOccurred + 808 .LVL79: +7063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 809 .loc 1 7063 8 view .LVU265 + 810 001c F0B9 cbnz r0, .L72 +7069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 811 .loc 1 7069 5 is_stmt 1 view .LVU266 +7069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 812 .loc 1 7069 8 is_stmt 0 view .LVU267 + 813 001e B5F1FF3F cmp r5, #-1 + 814 0022 F1D0 beq .L69 +7071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 815 .loc 1 7071 7 is_stmt 1 view .LVU268 +7071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 816 .loc 1 7071 13 is_stmt 0 view .LVU269 + 817 0024 FFF7FEFF bl HAL_GetTick + 818 .LVL80: +7071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 819 .loc 1 7071 27 view .LVU270 + 820 0028 801B subs r0, r0, r6 +7071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 821 .loc 1 7071 10 view .LVU271 + 822 002a A842 cmp r0, r5 + 823 002c 01D8 bhi .L70 +7071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 824 .loc 1 7071 51 discriminator 1 view .LVU272 + 825 002e 002D cmp r5, #0 + 826 0030 EAD1 bne .L69 + 827 .L70: +7073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 828 .loc 1 7073 9 is_stmt 1 view .LVU273 +7073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 829 .loc 1 7073 14 is_stmt 0 view .LVU274 + 830 0032 2368 ldr r3, [r4] + 831 0034 9B69 ldr r3, [r3, #24] +7073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 832 .loc 1 7073 12 view .LVU275 + 833 0036 13F0020F tst r3, #2 + 834 003a E5D1 bne .L69 +7075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 835 .loc 1 7075 11 is_stmt 1 view .LVU276 +7075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 836 .loc 1 7075 27 is_stmt 0 view .LVU277 + 837 003c 636C ldr r3, [r4, #68] + 838 003e 43F02003 orr r3, r3, #32 + ARM GAS /tmp/ccVyGVF6.s page 151 + + + 839 0042 6364 str r3, [r4, #68] +7076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 840 .loc 1 7076 11 is_stmt 1 view .LVU278 +7076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 841 .loc 1 7076 23 is_stmt 0 view .LVU279 + 842 0044 2023 movs r3, #32 + 843 0046 84F84130 strb r3, [r4, #65] +7077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 844 .loc 1 7077 11 is_stmt 1 view .LVU280 +7077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 845 .loc 1 7077 22 is_stmt 0 view .LVU281 + 846 004a 0023 movs r3, #0 + 847 004c 84F84230 strb r3, [r4, #66] +7080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 848 .loc 1 7080 11 is_stmt 1 view .LVU282 +7080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 849 .loc 1 7080 11 view .LVU283 + 850 0050 84F84030 strb r3, [r4, #64] +7080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 851 .loc 1 7080 11 view .LVU284 +7082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 852 .loc 1 7082 11 view .LVU285 +7082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 853 .loc 1 7082 18 is_stmt 0 view .LVU286 + 854 0054 0120 movs r0, #1 + 855 0056 00E0 b .L68 + 856 .L74: +7087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 857 .loc 1 7087 10 view .LVU287 + 858 0058 0020 movs r0, #0 + 859 .L68: +7088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 860 .loc 1 7088 1 view .LVU288 + 861 005a 70BD pop {r4, r5, r6, pc} + 862 .LVL81: + 863 .L72: +7065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 864 .loc 1 7065 14 view .LVU289 + 865 005c 0120 movs r0, #1 + 866 005e FCE7 b .L68 + 867 .cfi_endproc + 868 .LFE214: + 870 .section .text.I2C_WaitOnFlagUntilTimeout,"ax",%progbits + 871 .align 1 + 872 .syntax unified + 873 .thumb + 874 .thumb_func + 875 .fpu fpv5-d16 + 877 I2C_WaitOnFlagUntilTimeout: + 878 .LVL82: + 879 .LFB213: +7019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) + 880 .loc 1 7019 1 is_stmt 1 view -0 + 881 .cfi_startproc + 882 @ args = 4, pretend = 0, frame = 0 + 883 @ frame_needed = 0, uses_anonymous_args = 0 +7019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, Flag) == Status) + ARM GAS /tmp/ccVyGVF6.s page 152 + + + 884 .loc 1 7019 1 is_stmt 0 view .LVU291 + 885 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 886 .LCFI4: + 887 .cfi_def_cfa_offset 24 + 888 .cfi_offset 4, -24 + 889 .cfi_offset 5, -20 + 890 .cfi_offset 6, -16 + 891 .cfi_offset 7, -12 + 892 .cfi_offset 8, -8 + 893 .cfi_offset 14, -4 + 894 0004 0446 mov r4, r0 + 895 0006 0F46 mov r7, r1 + 896 0008 1646 mov r6, r2 + 897 000a 1D46 mov r5, r3 + 898 000c DDF81880 ldr r8, [sp, #24] +7020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 899 .loc 1 7020 3 is_stmt 1 view .LVU292 + 900 .LVL83: + 901 .L78: +7020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 902 .loc 1 7020 9 view .LVU293 +7020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 903 .loc 1 7020 10 is_stmt 0 view .LVU294 + 904 0010 2368 ldr r3, [r4] + 905 0012 9B69 ldr r3, [r3, #24] + 906 0014 37EA0303 bics r3, r7, r3 + 907 0018 0CBF ite eq + 908 001a 0123 moveq r3, #1 + 909 001c 0023 movne r3, #0 +7020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 910 .loc 1 7020 9 view .LVU295 + 911 001e B342 cmp r3, r6 + 912 0020 27D1 bne .L83 +7023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 913 .loc 1 7023 5 is_stmt 1 view .LVU296 +7023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 914 .loc 1 7023 9 is_stmt 0 view .LVU297 + 915 0022 4246 mov r2, r8 + 916 0024 2946 mov r1, r5 + 917 0026 2046 mov r0, r4 + 918 0028 FFF7FEFF bl I2C_IsErrorOccurred + 919 .LVL84: +7023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 920 .loc 1 7023 8 view .LVU298 + 921 002c 20BB cbnz r0, .L81 +7029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 922 .loc 1 7029 5 is_stmt 1 view .LVU299 +7029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 923 .loc 1 7029 8 is_stmt 0 view .LVU300 + 924 002e B5F1FF3F cmp r5, #-1 + 925 0032 EDD0 beq .L78 +7031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 926 .loc 1 7031 7 is_stmt 1 view .LVU301 +7031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 927 .loc 1 7031 13 is_stmt 0 view .LVU302 + 928 0034 FFF7FEFF bl HAL_GetTick + 929 .LVL85: + ARM GAS /tmp/ccVyGVF6.s page 153 + + +7031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 930 .loc 1 7031 27 view .LVU303 + 931 0038 A0EB0800 sub r0, r0, r8 +7031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 932 .loc 1 7031 10 view .LVU304 + 933 003c A842 cmp r0, r5 + 934 003e 01D8 bhi .L79 +7031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 935 .loc 1 7031 51 discriminator 1 view .LVU305 + 936 0040 002D cmp r5, #0 + 937 0042 E5D1 bne .L78 + 938 .L79: +7033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 939 .loc 1 7033 9 is_stmt 1 view .LVU306 +7033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 940 .loc 1 7033 14 is_stmt 0 view .LVU307 + 941 0044 2368 ldr r3, [r4] + 942 0046 9B69 ldr r3, [r3, #24] + 943 0048 37EA0303 bics r3, r7, r3 + 944 004c 0CBF ite eq + 945 004e 0123 moveq r3, #1 + 946 0050 0023 movne r3, #0 +7033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 947 .loc 1 7033 12 view .LVU308 + 948 0052 B342 cmp r3, r6 + 949 0054 DCD1 bne .L78 +7035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 950 .loc 1 7035 11 is_stmt 1 view .LVU309 +7035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 951 .loc 1 7035 27 is_stmt 0 view .LVU310 + 952 0056 636C ldr r3, [r4, #68] + 953 0058 43F02003 orr r3, r3, #32 + 954 005c 6364 str r3, [r4, #68] +7036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 955 .loc 1 7036 11 is_stmt 1 view .LVU311 +7036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 956 .loc 1 7036 23 is_stmt 0 view .LVU312 + 957 005e 2023 movs r3, #32 + 958 0060 84F84130 strb r3, [r4, #65] +7037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 959 .loc 1 7037 11 is_stmt 1 view .LVU313 +7037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 960 .loc 1 7037 22 is_stmt 0 view .LVU314 + 961 0064 0023 movs r3, #0 + 962 0066 84F84230 strb r3, [r4, #66] +7040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 963 .loc 1 7040 11 is_stmt 1 view .LVU315 +7040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 964 .loc 1 7040 11 view .LVU316 + 965 006a 84F84030 strb r3, [r4, #64] +7040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 966 .loc 1 7040 11 view .LVU317 +7041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 967 .loc 1 7041 11 view .LVU318 +7041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 968 .loc 1 7041 18 is_stmt 0 view .LVU319 + 969 006e 0120 movs r0, #1 + ARM GAS /tmp/ccVyGVF6.s page 154 + + + 970 0070 00E0 b .L77 + 971 .L83: +7046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 972 .loc 1 7046 10 view .LVU320 + 973 0072 0020 movs r0, #0 + 974 .L77: +7047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 975 .loc 1 7047 1 view .LVU321 + 976 0074 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 977 .LVL86: + 978 .L81: +7025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 979 .loc 1 7025 14 view .LVU322 + 980 0078 0120 movs r0, #1 + 981 007a FBE7 b .L77 + 982 .cfi_endproc + 983 .LFE213: + 985 .section .text.I2C_RequestMemoryWrite,"ax",%progbits + 986 .align 1 + 987 .syntax unified + 988 .thumb + 989 .thumb_func + 990 .fpu fpv5-d16 + 992 I2C_RequestMemoryWrite: + 993 .LVL87: + 994 .LFB196: +5856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRI + 995 .loc 1 5856 1 is_stmt 1 view -0 + 996 .cfi_startproc + 997 @ args = 8, pretend = 0, frame = 0 + 998 @ frame_needed = 0, uses_anonymous_args = 0 +5856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_RELOAD_MODE, I2C_GENERATE_START_WRI + 999 .loc 1 5856 1 is_stmt 0 view .LVU324 + 1000 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 1001 .LCFI5: + 1002 .cfi_def_cfa_offset 24 + 1003 .cfi_offset 4, -24 + 1004 .cfi_offset 5, -20 + 1005 .cfi_offset 6, -16 + 1006 .cfi_offset 7, -12 + 1007 .cfi_offset 8, -8 + 1008 .cfi_offset 14, -4 + 1009 0004 82B0 sub sp, sp, #8 + 1010 .LCFI6: + 1011 .cfi_def_cfa_offset 32 + 1012 0006 0446 mov r4, r0 + 1013 0008 9046 mov r8, r2 + 1014 000a 1D46 mov r5, r3 + 1015 000c 089E ldr r6, [sp, #32] + 1016 000e 099F ldr r7, [sp, #36] +5857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1017 .loc 1 5857 3 is_stmt 1 view .LVU325 + 1018 0010 194B ldr r3, .L93 + 1019 .LVL88: +5857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1020 .loc 1 5857 3 is_stmt 0 view .LVU326 + 1021 0012 0093 str r3, [sp] + ARM GAS /tmp/ccVyGVF6.s page 155 + + + 1022 0014 4FF08073 mov r3, #16777216 + 1023 0018 EAB2 uxtb r2, r5 + 1024 .LVL89: +5857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1025 .loc 1 5857 3 view .LVU327 + 1026 001a FFF7FEFF bl I2C_TransferConfig + 1027 .LVL90: +5860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1028 .loc 1 5860 3 is_stmt 1 view .LVU328 +5860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1029 .loc 1 5860 7 is_stmt 0 view .LVU329 + 1030 001e 3A46 mov r2, r7 + 1031 0020 3146 mov r1, r6 + 1032 0022 2046 mov r0, r4 + 1033 0024 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout + 1034 .LVL91: +5860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1035 .loc 1 5860 6 view .LVU330 + 1036 0028 F8B9 cbnz r0, .L88 +5866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1037 .loc 1 5866 3 is_stmt 1 view .LVU331 +5866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1038 .loc 1 5866 6 is_stmt 0 view .LVU332 + 1039 002a 012D cmp r5, #1 + 1040 002c 0ED1 bne .L86 +5869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1041 .loc 1 5869 5 is_stmt 1 view .LVU333 +5869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1042 .loc 1 5869 9 is_stmt 0 view .LVU334 + 1043 002e 2368 ldr r3, [r4] +5869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1044 .loc 1 5869 28 view .LVU335 + 1045 0030 5FFA88F2 uxtb r2, r8 +5869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1046 .loc 1 5869 26 view .LVU336 + 1047 0034 9A62 str r2, [r3, #40] + 1048 .L87: +5888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1049 .loc 1 5888 3 is_stmt 1 view .LVU337 +5888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1050 .loc 1 5888 7 is_stmt 0 view .LVU338 + 1051 0036 0097 str r7, [sp] + 1052 0038 3346 mov r3, r6 + 1053 003a 0022 movs r2, #0 + 1054 003c 8021 movs r1, #128 + 1055 003e 2046 mov r0, r4 + 1056 0040 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 1057 .LVL92: +5888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1058 .loc 1 5888 6 view .LVU339 + 1059 0044 A8B9 cbnz r0, .L92 + 1060 .L85: +5894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1061 .loc 1 5894 1 view .LVU340 + 1062 0046 02B0 add sp, sp, #8 + 1063 .LCFI7: + 1064 .cfi_remember_state + ARM GAS /tmp/ccVyGVF6.s page 156 + + + 1065 .cfi_def_cfa_offset 24 + 1066 @ sp needed + 1067 0048 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 1068 .LVL93: + 1069 .L86: + 1070 .LCFI8: + 1071 .cfi_restore_state +5875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1072 .loc 1 5875 5 is_stmt 1 view .LVU341 +5875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1073 .loc 1 5875 9 is_stmt 0 view .LVU342 + 1074 004c 2368 ldr r3, [r4] +5875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1075 .loc 1 5875 28 view .LVU343 + 1076 004e 4FEA1822 lsr r2, r8, #8 +5875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1077 .loc 1 5875 26 view .LVU344 + 1078 0052 9A62 str r2, [r3, #40] +5878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1079 .loc 1 5878 5 is_stmt 1 view .LVU345 +5878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1080 .loc 1 5878 9 is_stmt 0 view .LVU346 + 1081 0054 3A46 mov r2, r7 + 1082 0056 3146 mov r1, r6 + 1083 0058 2046 mov r0, r4 + 1084 005a FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout + 1085 .LVL94: +5878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1086 .loc 1 5878 8 view .LVU347 + 1087 005e 30B9 cbnz r0, .L89 +5884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1088 .loc 1 5884 5 is_stmt 1 view .LVU348 +5884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1089 .loc 1 5884 9 is_stmt 0 view .LVU349 + 1090 0060 2368 ldr r3, [r4] +5884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1091 .loc 1 5884 28 view .LVU350 + 1092 0062 5FFA88F2 uxtb r2, r8 +5884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1093 .loc 1 5884 26 view .LVU351 + 1094 0066 9A62 str r2, [r3, #40] + 1095 0068 E5E7 b .L87 + 1096 .L88: +5862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1097 .loc 1 5862 12 view .LVU352 + 1098 006a 0120 movs r0, #1 + 1099 006c EBE7 b .L85 + 1100 .L89: +5880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1101 .loc 1 5880 14 view .LVU353 + 1102 006e 0120 movs r0, #1 + 1103 0070 E9E7 b .L85 + 1104 .L92: +5890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1105 .loc 1 5890 12 view .LVU354 + 1106 0072 0120 movs r0, #1 + 1107 0074 E7E7 b .L85 + ARM GAS /tmp/ccVyGVF6.s page 157 + + + 1108 .L94: + 1109 0076 00BF .align 2 + 1110 .L93: + 1111 0078 00200080 .word -2147475456 + 1112 .cfi_endproc + 1113 .LFE196: + 1115 .section .text.I2C_RequestMemoryRead,"ax",%progbits + 1116 .align 1 + 1117 .syntax unified + 1118 .thumb + 1119 .thumb_func + 1120 .fpu fpv5-d16 + 1122 I2C_RequestMemoryRead: + 1123 .LVL95: + 1124 .LFB197: +5911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WR + 1125 .loc 1 5911 1 is_stmt 1 view -0 + 1126 .cfi_startproc + 1127 @ args = 8, pretend = 0, frame = 0 + 1128 @ frame_needed = 0, uses_anonymous_args = 0 +5911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)MemAddSize, I2C_SOFTEND_MODE, I2C_GENERATE_START_WR + 1129 .loc 1 5911 1 is_stmt 0 view .LVU356 + 1130 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 1131 .LCFI9: + 1132 .cfi_def_cfa_offset 24 + 1133 .cfi_offset 4, -24 + 1134 .cfi_offset 5, -20 + 1135 .cfi_offset 6, -16 + 1136 .cfi_offset 7, -12 + 1137 .cfi_offset 8, -8 + 1138 .cfi_offset 14, -4 + 1139 0004 82B0 sub sp, sp, #8 + 1140 .LCFI10: + 1141 .cfi_def_cfa_offset 32 + 1142 0006 0446 mov r4, r0 + 1143 0008 9046 mov r8, r2 + 1144 000a 1D46 mov r5, r3 + 1145 000c 089E ldr r6, [sp, #32] + 1146 000e 099F ldr r7, [sp, #36] +5912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1147 .loc 1 5912 3 is_stmt 1 view .LVU357 + 1148 0010 184B ldr r3, .L104 + 1149 .LVL96: +5912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1150 .loc 1 5912 3 is_stmt 0 view .LVU358 + 1151 0012 0093 str r3, [sp] + 1152 0014 0023 movs r3, #0 + 1153 0016 EAB2 uxtb r2, r5 + 1154 .LVL97: +5912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1155 .loc 1 5912 3 view .LVU359 + 1156 0018 FFF7FEFF bl I2C_TransferConfig + 1157 .LVL98: +5915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1158 .loc 1 5915 3 is_stmt 1 view .LVU360 +5915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1159 .loc 1 5915 7 is_stmt 0 view .LVU361 + ARM GAS /tmp/ccVyGVF6.s page 158 + + + 1160 001c 3A46 mov r2, r7 + 1161 001e 3146 mov r1, r6 + 1162 0020 2046 mov r0, r4 + 1163 0022 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout + 1164 .LVL99: +5915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1165 .loc 1 5915 6 view .LVU362 + 1166 0026 F8B9 cbnz r0, .L99 +5921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1167 .loc 1 5921 3 is_stmt 1 view .LVU363 +5921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1168 .loc 1 5921 6 is_stmt 0 view .LVU364 + 1169 0028 012D cmp r5, #1 + 1170 002a 0ED1 bne .L97 +5924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1171 .loc 1 5924 5 is_stmt 1 view .LVU365 +5924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1172 .loc 1 5924 9 is_stmt 0 view .LVU366 + 1173 002c 2368 ldr r3, [r4] +5924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1174 .loc 1 5924 28 view .LVU367 + 1175 002e 5FFA88F2 uxtb r2, r8 +5924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1176 .loc 1 5924 26 view .LVU368 + 1177 0032 9A62 str r2, [r3, #40] + 1178 .L98: +5943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1179 .loc 1 5943 3 is_stmt 1 view .LVU369 +5943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1180 .loc 1 5943 7 is_stmt 0 view .LVU370 + 1181 0034 0097 str r7, [sp] + 1182 0036 3346 mov r3, r6 + 1183 0038 0022 movs r2, #0 + 1184 003a 4021 movs r1, #64 + 1185 003c 2046 mov r0, r4 + 1186 003e FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 1187 .LVL100: +5943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1188 .loc 1 5943 6 view .LVU371 + 1189 0042 A8B9 cbnz r0, .L103 + 1190 .L96: +5949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1191 .loc 1 5949 1 view .LVU372 + 1192 0044 02B0 add sp, sp, #8 + 1193 .LCFI11: + 1194 .cfi_remember_state + 1195 .cfi_def_cfa_offset 24 + 1196 @ sp needed + 1197 0046 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 1198 .LVL101: + 1199 .L97: + 1200 .LCFI12: + 1201 .cfi_restore_state +5930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1202 .loc 1 5930 5 is_stmt 1 view .LVU373 +5930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1203 .loc 1 5930 9 is_stmt 0 view .LVU374 + ARM GAS /tmp/ccVyGVF6.s page 159 + + + 1204 004a 2368 ldr r3, [r4] +5930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1205 .loc 1 5930 28 view .LVU375 + 1206 004c 4FEA1822 lsr r2, r8, #8 +5930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1207 .loc 1 5930 26 view .LVU376 + 1208 0050 9A62 str r2, [r3, #40] +5933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1209 .loc 1 5933 5 is_stmt 1 view .LVU377 +5933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1210 .loc 1 5933 9 is_stmt 0 view .LVU378 + 1211 0052 3A46 mov r2, r7 + 1212 0054 3146 mov r1, r6 + 1213 0056 2046 mov r0, r4 + 1214 0058 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout + 1215 .LVL102: +5933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1216 .loc 1 5933 8 view .LVU379 + 1217 005c 30B9 cbnz r0, .L100 +5939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1218 .loc 1 5939 5 is_stmt 1 view .LVU380 +5939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1219 .loc 1 5939 9 is_stmt 0 view .LVU381 + 1220 005e 2368 ldr r3, [r4] +5939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1221 .loc 1 5939 28 view .LVU382 + 1222 0060 5FFA88F2 uxtb r2, r8 +5939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1223 .loc 1 5939 26 view .LVU383 + 1224 0064 9A62 str r2, [r3, #40] + 1225 0066 E5E7 b .L98 + 1226 .L99: +5917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1227 .loc 1 5917 12 view .LVU384 + 1228 0068 0120 movs r0, #1 + 1229 006a EBE7 b .L96 + 1230 .L100: +5935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1231 .loc 1 5935 14 view .LVU385 + 1232 006c 0120 movs r0, #1 + 1233 006e E9E7 b .L96 + 1234 .L103: +5945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1235 .loc 1 5945 12 view .LVU386 + 1236 0070 0120 movs r0, #1 + 1237 0072 E7E7 b .L96 + 1238 .L105: + 1239 .align 2 + 1240 .L104: + 1241 0074 00200080 .word -2147475456 + 1242 .cfi_endproc + 1243 .LFE197: + 1245 .section .text.I2C_WaitOnSTOPFlagUntilTimeout,"ax",%progbits + 1246 .align 1 + 1247 .syntax unified + 1248 .thumb + 1249 .thumb_func + ARM GAS /tmp/ccVyGVF6.s page 160 + + + 1250 .fpu fpv5-d16 + 1252 I2C_WaitOnSTOPFlagUntilTimeout: + 1253 .LVL103: + 1254 .LFB215: +7100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + 1255 .loc 1 7100 1 is_stmt 1 view -0 + 1256 .cfi_startproc + 1257 @ args = 0, pretend = 0, frame = 0 + 1258 @ frame_needed = 0, uses_anonymous_args = 0 +7100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** while (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_STOPF) == RESET) + 1259 .loc 1 7100 1 is_stmt 0 view .LVU388 + 1260 0000 70B5 push {r4, r5, r6, lr} + 1261 .LCFI13: + 1262 .cfi_def_cfa_offset 16 + 1263 .cfi_offset 4, -16 + 1264 .cfi_offset 5, -12 + 1265 .cfi_offset 6, -8 + 1266 .cfi_offset 14, -4 + 1267 0002 0446 mov r4, r0 + 1268 0004 0D46 mov r5, r1 + 1269 0006 1646 mov r6, r2 +7101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1270 .loc 1 7101 3 is_stmt 1 view .LVU389 +7101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1271 .loc 1 7101 9 is_stmt 0 view .LVU390 + 1272 0008 04E0 b .L107 + 1273 .LVL104: + 1274 .L109: +7112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1275 .loc 1 7112 7 is_stmt 1 view .LVU391 +7112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1276 .loc 1 7112 12 is_stmt 0 view .LVU392 + 1277 000a 2368 ldr r3, [r4] + 1278 000c 9B69 ldr r3, [r3, #24] +7112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1279 .loc 1 7112 10 view .LVU393 + 1280 000e 13F0200F tst r3, #32 + 1281 0012 12D0 beq .L113 + 1282 .L107: +7101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1283 .loc 1 7101 9 is_stmt 1 view .LVU394 +7101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1284 .loc 1 7101 10 is_stmt 0 view .LVU395 + 1285 0014 2368 ldr r3, [r4] + 1286 0016 9B69 ldr r3, [r3, #24] +7101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1287 .loc 1 7101 9 view .LVU396 + 1288 0018 13F0200F tst r3, #32 + 1289 001c 1BD1 bne .L114 +7104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1290 .loc 1 7104 5 is_stmt 1 view .LVU397 +7104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1291 .loc 1 7104 9 is_stmt 0 view .LVU398 + 1292 001e 3246 mov r2, r6 + 1293 0020 2946 mov r1, r5 + 1294 0022 2046 mov r0, r4 + 1295 0024 FFF7FEFF bl I2C_IsErrorOccurred + ARM GAS /tmp/ccVyGVF6.s page 161 + + + 1296 .LVL105: +7104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1297 .loc 1 7104 8 view .LVU399 + 1298 0028 B8B9 cbnz r0, .L111 +7110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1299 .loc 1 7110 5 is_stmt 1 view .LVU400 +7110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1300 .loc 1 7110 11 is_stmt 0 view .LVU401 + 1301 002a FFF7FEFF bl HAL_GetTick + 1302 .LVL106: +7110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1303 .loc 1 7110 25 view .LVU402 + 1304 002e 801B subs r0, r0, r6 +7110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1305 .loc 1 7110 8 view .LVU403 + 1306 0030 A842 cmp r0, r5 + 1307 0032 EAD8 bhi .L109 +7110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1308 .loc 1 7110 49 discriminator 1 view .LVU404 + 1309 0034 002D cmp r5, #0 + 1310 0036 EDD1 bne .L107 + 1311 0038 E7E7 b .L109 + 1312 .L113: +7114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 1313 .loc 1 7114 9 is_stmt 1 view .LVU405 +7114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 1314 .loc 1 7114 25 is_stmt 0 view .LVU406 + 1315 003a 636C ldr r3, [r4, #68] + 1316 003c 43F02003 orr r3, r3, #32 + 1317 0040 6364 str r3, [r4, #68] +7115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 1318 .loc 1 7115 9 is_stmt 1 view .LVU407 +7115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 1319 .loc 1 7115 21 is_stmt 0 view .LVU408 + 1320 0042 2023 movs r3, #32 + 1321 0044 84F84130 strb r3, [r4, #65] +7116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1322 .loc 1 7116 9 is_stmt 1 view .LVU409 +7116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1323 .loc 1 7116 20 is_stmt 0 view .LVU410 + 1324 0048 0023 movs r3, #0 + 1325 004a 84F84230 strb r3, [r4, #66] +7119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1326 .loc 1 7119 9 is_stmt 1 view .LVU411 +7119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1327 .loc 1 7119 9 view .LVU412 + 1328 004e 84F84030 strb r3, [r4, #64] +7119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1329 .loc 1 7119 9 view .LVU413 +7121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1330 .loc 1 7121 9 view .LVU414 +7121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1331 .loc 1 7121 16 is_stmt 0 view .LVU415 + 1332 0052 0120 movs r0, #1 + 1333 0054 00E0 b .L108 + 1334 .L114: +7125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 162 + + + 1335 .loc 1 7125 10 view .LVU416 + 1336 0056 0020 movs r0, #0 + 1337 .L108: +7126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1338 .loc 1 7126 1 view .LVU417 + 1339 0058 70BD pop {r4, r5, r6, pc} + 1340 .LVL107: + 1341 .L111: +7106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1342 .loc 1 7106 14 view .LVU418 + 1343 005a 0120 movs r0, #1 + 1344 005c FCE7 b .L108 + 1345 .cfi_endproc + 1346 .LFE215: + 1348 .section .text.I2C_WaitOnRXNEFlagUntilTimeout,"ax",%progbits + 1349 .align 1 + 1350 .syntax unified + 1351 .thumb + 1352 .thumb_func + 1353 .fpu fpv5-d16 + 1355 I2C_WaitOnRXNEFlagUntilTimeout: + 1356 .LVL108: + 1357 .LFB216: +7138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; + 1358 .loc 1 7138 1 is_stmt 1 view -0 + 1359 .cfi_startproc + 1360 @ args = 0, pretend = 0, frame = 0 + 1361 @ frame_needed = 0, uses_anonymous_args = 0 +7138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef status = HAL_OK; + 1362 .loc 1 7138 1 is_stmt 0 view .LVU420 + 1363 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 1364 .LCFI14: + 1365 .cfi_def_cfa_offset 24 + 1366 .cfi_offset 3, -24 + 1367 .cfi_offset 4, -20 + 1368 .cfi_offset 5, -16 + 1369 .cfi_offset 6, -12 + 1370 .cfi_offset 7, -8 + 1371 .cfi_offset 14, -4 + 1372 0002 0446 mov r4, r0 + 1373 0004 0E46 mov r6, r1 + 1374 0006 1746 mov r7, r2 +7139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1375 .loc 1 7139 3 is_stmt 1 view .LVU421 + 1376 .LVL109: +7141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1377 .loc 1 7141 3 view .LVU422 +7139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1378 .loc 1 7139 21 is_stmt 0 view .LVU423 + 1379 0008 0025 movs r5, #0 +7141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1380 .loc 1 7141 9 view .LVU424 + 1381 000a 18E0 b .L116 + 1382 .LVL110: + 1383 .L120: +7183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1384 .loc 1 7183 9 is_stmt 1 view .LVU425 + ARM GAS /tmp/ccVyGVF6.s page 163 + + +7183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1385 .loc 1 7183 25 is_stmt 0 view .LVU426 + 1386 000c 0023 movs r3, #0 + 1387 000e 6364 str r3, [r4, #68] + 1388 .LVL111: + 1389 .L118: +7188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1390 .loc 1 7188 5 is_stmt 1 view .LVU427 +7188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1391 .loc 1 7188 12 is_stmt 0 view .LVU428 + 1392 0010 FFF7FEFF bl HAL_GetTick + 1393 .LVL112: +7188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1394 .loc 1 7188 26 view .LVU429 + 1395 0014 C01B subs r0, r0, r7 +7188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1396 .loc 1 7188 8 view .LVU430 + 1397 0016 B042 cmp r0, r6 + 1398 0018 00D8 bhi .L121 +7188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1399 .loc 1 7188 50 discriminator 2 view .LVU431 + 1400 001a 86B9 cbnz r6, .L116 + 1401 .L121: +7188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1402 .loc 1 7188 70 discriminator 3 view .LVU432 + 1403 001c 7DB9 cbnz r5, .L116 +7190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1404 .loc 1 7190 7 is_stmt 1 view .LVU433 +7190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1405 .loc 1 7190 12 is_stmt 0 view .LVU434 + 1406 001e 2368 ldr r3, [r4] + 1407 0020 9B69 ldr r3, [r3, #24] +7190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1408 .loc 1 7190 10 view .LVU435 + 1409 0022 13F0040F tst r3, #4 + 1410 0026 0AD1 bne .L116 +7192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 1411 .loc 1 7192 9 is_stmt 1 view .LVU436 +7192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 1412 .loc 1 7192 25 is_stmt 0 view .LVU437 + 1413 0028 636C ldr r3, [r4, #68] + 1414 002a 43F02003 orr r3, r3, #32 + 1415 002e 6364 str r3, [r4, #68] +7193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1416 .loc 1 7193 9 is_stmt 1 view .LVU438 +7193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1417 .loc 1 7193 21 is_stmt 0 view .LVU439 + 1418 0030 2023 movs r3, #32 + 1419 0032 84F84130 strb r3, [r4, #65] +7196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1420 .loc 1 7196 9 is_stmt 1 view .LVU440 +7196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1421 .loc 1 7196 9 view .LVU441 + 1422 0036 0023 movs r3, #0 + 1423 0038 84F84030 strb r3, [r4, #64] +7196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1424 .loc 1 7196 9 view .LVU442 + ARM GAS /tmp/ccVyGVF6.s page 164 + + +7198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1425 .loc 1 7198 9 view .LVU443 + 1426 .LVL113: +7198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1427 .loc 1 7198 16 is_stmt 0 view .LVU444 + 1428 003c 0125 movs r5, #1 + 1429 .LVL114: + 1430 .L116: +7141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1431 .loc 1 7141 9 is_stmt 1 view .LVU445 +7141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1432 .loc 1 7141 11 is_stmt 0 view .LVU446 + 1433 003e 2368 ldr r3, [r4] + 1434 0040 9B69 ldr r3, [r3, #24] +7141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1435 .loc 1 7141 9 view .LVU447 + 1436 0042 13F0040F tst r3, #4 + 1437 0046 2ED1 bne .L123 +7141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1438 .loc 1 7141 61 discriminator 1 view .LVU448 + 1439 0048 6DBB cbnz r5, .L123 +7144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1440 .loc 1 7144 5 is_stmt 1 view .LVU449 +7144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1441 .loc 1 7144 9 is_stmt 0 view .LVU450 + 1442 004a 3A46 mov r2, r7 + 1443 004c 3146 mov r1, r6 + 1444 004e 2046 mov r0, r4 + 1445 0050 FFF7FEFF bl I2C_IsErrorOccurred + 1446 .LVL115: +7144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1447 .loc 1 7144 8 view .LVU451 + 1448 0054 00B1 cbz r0, .L117 +7146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1449 .loc 1 7146 14 view .LVU452 + 1450 0056 0125 movs r5, #1 + 1451 .LVL116: + 1452 .L117: +7150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1453 .loc 1 7150 5 is_stmt 1 view .LVU453 +7150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1454 .loc 1 7150 10 is_stmt 0 view .LVU454 + 1455 0058 2368 ldr r3, [r4] + 1456 005a 9A69 ldr r2, [r3, #24] +7150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1457 .loc 1 7150 8 view .LVU455 + 1458 005c 12F0200F tst r2, #32 + 1459 0060 D6D0 beq .L118 +7150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1460 .loc 1 7150 59 discriminator 1 view .LVU456 + 1461 0062 002D cmp r5, #0 + 1462 0064 D4D1 bne .L118 +7154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1463 .loc 1 7154 7 is_stmt 1 view .LVU457 +7154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1464 .loc 1 7154 12 is_stmt 0 view .LVU458 + 1465 0066 9A69 ldr r2, [r3, #24] + ARM GAS /tmp/ccVyGVF6.s page 165 + + +7162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1466 .loc 1 7162 7 is_stmt 1 view .LVU459 +7162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1467 .loc 1 7162 11 is_stmt 0 view .LVU460 + 1468 0068 9A69 ldr r2, [r3, #24] +7162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1469 .loc 1 7162 10 view .LVU461 + 1470 006a 12F0100F tst r2, #16 + 1471 006e CDD0 beq .L120 +7164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_AF; + 1472 .loc 1 7164 9 is_stmt 1 view .LVU462 + 1473 0070 1022 movs r2, #16 + 1474 0072 DA61 str r2, [r3, #28] +7165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1475 .loc 1 7165 9 view .LVU463 +7165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1476 .loc 1 7165 25 is_stmt 0 view .LVU464 + 1477 0074 0423 movs r3, #4 + 1478 0076 6364 str r3, [r4, #68] +7168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1479 .loc 1 7168 9 is_stmt 1 view .LVU465 + 1480 0078 2368 ldr r3, [r4] + 1481 007a 2022 movs r2, #32 + 1482 007c DA61 str r2, [r3, #28] +7171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1483 .loc 1 7171 9 view .LVU466 + 1484 007e 2168 ldr r1, [r4] + 1485 0080 4B68 ldr r3, [r1, #4] + 1486 0082 23F0FF73 bic r3, r3, #33423360 + 1487 0086 23F48B33 bic r3, r3, #71168 + 1488 008a 23F4FF73 bic r3, r3, #510 + 1489 008e 23F00103 bic r3, r3, #1 + 1490 0092 4B60 str r3, [r1, #4] +7173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 1491 .loc 1 7173 9 view .LVU467 +7173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 1492 .loc 1 7173 21 is_stmt 0 view .LVU468 + 1493 0094 84F84120 strb r2, [r4, #65] +7174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1494 .loc 1 7174 9 is_stmt 1 view .LVU469 +7174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1495 .loc 1 7174 20 is_stmt 0 view .LVU470 + 1496 0098 0023 movs r3, #0 + 1497 009a 84F84230 strb r3, [r4, #66] +7177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1498 .loc 1 7177 9 is_stmt 1 view .LVU471 +7177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1499 .loc 1 7177 9 view .LVU472 + 1500 009e 84F84030 strb r3, [r4, #64] +7177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1501 .loc 1 7177 9 view .LVU473 +7179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1502 .loc 1 7179 9 view .LVU474 + 1503 .LVL117: +7179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1504 .loc 1 7179 16 is_stmt 0 view .LVU475 + 1505 00a2 0125 movs r5, #1 + ARM GAS /tmp/ccVyGVF6.s page 166 + + + 1506 00a4 B4E7 b .L118 + 1507 .LVL118: + 1508 .L123: +7202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1509 .loc 1 7202 3 is_stmt 1 view .LVU476 +7203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1510 .loc 1 7203 1 is_stmt 0 view .LVU477 + 1511 00a6 2846 mov r0, r5 + 1512 00a8 F8BD pop {r3, r4, r5, r6, r7, pc} +7203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1513 .loc 1 7203 1 view .LVU478 + 1514 .cfi_endproc + 1515 .LFE216: + 1517 .section .text.HAL_I2C_MspInit,"ax",%progbits + 1518 .align 1 + 1519 .weak HAL_I2C_MspInit + 1520 .syntax unified + 1521 .thumb + 1522 .thumb_func + 1523 .fpu fpv5-d16 + 1525 HAL_I2C_MspInit: + 1526 .LVL119: + 1527 .LFB143: + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 1528 .loc 1 697 1 is_stmt 1 view -0 + 1529 .cfi_startproc + 1530 @ args = 0, pretend = 0, frame = 0 + 1531 @ frame_needed = 0, uses_anonymous_args = 0 + 1532 @ link register save eliminated. + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1533 .loc 1 699 3 view .LVU480 + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1534 .loc 1 704 1 is_stmt 0 view .LVU481 + 1535 0000 7047 bx lr + 1536 .cfi_endproc + 1537 .LFE143: + 1539 .section .text.HAL_I2C_Init,"ax",%progbits + 1540 .align 1 + 1541 .global HAL_I2C_Init + 1542 .syntax unified + 1543 .thumb + 1544 .thumb_func + 1545 .fpu fpv5-d16 + 1547 HAL_I2C_Init: + 1548 .LVL120: + 1549 .LFB141: + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the I2C handle allocation */ + 1550 .loc 1 536 1 is_stmt 1 view -0 + 1551 .cfi_startproc + 1552 @ args = 0, pretend = 0, frame = 0 + 1553 @ frame_needed = 0, uses_anonymous_args = 0 + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1554 .loc 1 538 3 view .LVU483 + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1555 .loc 1 538 6 is_stmt 0 view .LVU484 + 1556 0000 0028 cmp r0, #0 + 1557 0002 5DD0 beq .L135 + ARM GAS /tmp/ccVyGVF6.s page 167 + + + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the I2C handle allocation */ + 1558 .loc 1 536 1 view .LVU485 + 1559 0004 10B5 push {r4, lr} + 1560 .LCFI15: + 1561 .cfi_def_cfa_offset 8 + 1562 .cfi_offset 4, -8 + 1563 .cfi_offset 14, -4 + 1564 0006 0446 mov r4, r0 + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS1(hi2c->Init.OwnAddress1)); + 1565 .loc 1 544 3 is_stmt 1 view .LVU486 + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_ADDRESSING_MODE(hi2c->Init.AddressingMode)); + 1566 .loc 1 545 3 view .LVU487 + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_DUAL_ADDRESS(hi2c->Init.DualAddressMode)); + 1567 .loc 1 546 3 view .LVU488 + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); + 1568 .loc 1 547 3 view .LVU489 + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); + 1569 .loc 1 548 3 view .LVU490 + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); + 1570 .loc 1 549 3 view .LVU491 + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); + 1571 .loc 1 550 3 view .LVU492 + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1572 .loc 1 551 3 view .LVU493 + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1573 .loc 1 553 3 view .LVU494 + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1574 .loc 1 553 11 is_stmt 0 view .LVU495 + 1575 0008 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1576 .loc 1 553 6 view .LVU496 + 1577 000c 002B cmp r3, #0 + 1578 000e 46D0 beq .L140 + 1579 .LVL121: + 1580 .L130: + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1581 .loc 1 584 3 is_stmt 1 view .LVU497 + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1582 .loc 1 584 15 is_stmt 0 view .LVU498 + 1583 0010 2423 movs r3, #36 + 1584 0012 84F84130 strb r3, [r4, #65] + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1585 .loc 1 587 3 is_stmt 1 view .LVU499 + 1586 0016 2268 ldr r2, [r4] + 1587 0018 1368 ldr r3, [r2] + 1588 001a 23F00103 bic r3, r3, #1 + 1589 001e 1360 str r3, [r2] + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1590 .loc 1 591 3 view .LVU500 + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1591 .loc 1 591 39 is_stmt 0 view .LVU501 + 1592 0020 6368 ldr r3, [r4, #4] + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1593 .loc 1 591 7 view .LVU502 + 1594 0022 2268 ldr r2, [r4] + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1595 .loc 1 591 47 view .LVU503 + ARM GAS /tmp/ccVyGVF6.s page 168 + + + 1596 0024 23F07063 bic r3, r3, #251658240 + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1597 .loc 1 591 27 view .LVU504 + 1598 0028 1361 str r3, [r2, #16] + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1599 .loc 1 595 3 is_stmt 1 view .LVU505 + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1600 .loc 1 595 7 is_stmt 0 view .LVU506 + 1601 002a 2268 ldr r2, [r4] + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1602 .loc 1 595 24 view .LVU507 + 1603 002c 9368 ldr r3, [r2, #8] + 1604 002e 23F40043 bic r3, r3, #32768 + 1605 0032 9360 str r3, [r2, #8] + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1606 .loc 1 598 3 is_stmt 1 view .LVU508 + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1607 .loc 1 598 17 is_stmt 0 view .LVU509 + 1608 0034 E368 ldr r3, [r4, #12] + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1609 .loc 1 598 6 view .LVU510 + 1610 0036 012B cmp r3, #1 + 1611 0038 36D0 beq .L141 + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1612 .loc 1 604 5 is_stmt 1 view .LVU511 + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1613 .loc 1 604 75 is_stmt 0 view .LVU512 + 1614 003a A368 ldr r3, [r4, #8] + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1615 .loc 1 604 9 view .LVU513 + 1616 003c 2268 ldr r2, [r4] + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1617 .loc 1 604 63 view .LVU514 + 1618 003e 43F40443 orr r3, r3, #33792 + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1619 .loc 1 604 26 view .LVU515 + 1620 0042 9360 str r3, [r2, #8] + 1621 .L132: + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1622 .loc 1 609 3 is_stmt 1 view .LVU516 + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1623 .loc 1 609 17 is_stmt 0 view .LVU517 + 1624 0044 E368 ldr r3, [r4, #12] + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1625 .loc 1 609 6 view .LVU518 + 1626 0046 022B cmp r3, #2 + 1627 0048 34D0 beq .L142 + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1628 .loc 1 616 5 is_stmt 1 view .LVU519 + 1629 004a 2268 ldr r2, [r4] + 1630 004c 5368 ldr r3, [r2, #4] + 1631 004e 23F40063 bic r3, r3, #2048 + 1632 0052 5360 str r3, [r2, #4] + 1633 .L134: + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1634 .loc 1 619 3 view .LVU520 + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 169 + + + 1635 .loc 1 619 7 is_stmt 0 view .LVU521 + 1636 0054 2268 ldr r2, [r4] + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1637 .loc 1 619 23 view .LVU522 + 1638 0056 5168 ldr r1, [r2, #4] + 1639 0058 1A4B ldr r3, .L143 + 1640 005a 0B43 orrs r3, r3, r1 + 1641 005c 5360 str r3, [r2, #4] + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1642 .loc 1 623 3 is_stmt 1 view .LVU523 + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1643 .loc 1 623 7 is_stmt 0 view .LVU524 + 1644 005e 2268 ldr r2, [r4] + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1645 .loc 1 623 24 view .LVU525 + 1646 0060 D368 ldr r3, [r2, #12] + 1647 0062 23F40043 bic r3, r3, #32768 + 1648 0066 D360 str r3, [r2, #12] + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); + 1649 .loc 1 626 3 is_stmt 1 view .LVU526 + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); + 1650 .loc 1 626 37 is_stmt 0 view .LVU527 + 1651 0068 2369 ldr r3, [r4, #16] + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); + 1652 .loc 1 626 66 view .LVU528 + 1653 006a 6269 ldr r2, [r4, #20] + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); + 1654 .loc 1 626 54 view .LVU529 + 1655 006c 1343 orrs r3, r3, r2 + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1656 .loc 1 627 38 view .LVU530 + 1657 006e A169 ldr r1, [r4, #24] + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); + 1658 .loc 1 626 7 view .LVU531 + 1659 0070 2268 ldr r2, [r4] + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); + 1660 .loc 1 626 79 view .LVU532 + 1661 0072 43EA0123 orr r3, r3, r1, lsl #8 + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (hi2c->Init.OwnAddress2Masks << 8)); + 1662 .loc 1 626 24 view .LVU533 + 1663 0076 D360 str r3, [r2, #12] + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1664 .loc 1 631 3 is_stmt 1 view .LVU534 + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1665 .loc 1 631 36 is_stmt 0 view .LVU535 + 1666 0078 E369 ldr r3, [r4, #28] + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1667 .loc 1 631 65 view .LVU536 + 1668 007a 216A ldr r1, [r4, #32] + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1669 .loc 1 631 7 view .LVU537 + 1670 007c 2268 ldr r2, [r4] + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1671 .loc 1 631 53 view .LVU538 + 1672 007e 0B43 orrs r3, r3, r1 + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1673 .loc 1 631 23 view .LVU539 + ARM GAS /tmp/ccVyGVF6.s page 170 + + + 1674 0080 1360 str r3, [r2] + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1675 .loc 1 634 3 is_stmt 1 view .LVU540 + 1676 0082 2268 ldr r2, [r4] + 1677 0084 1368 ldr r3, [r2] + 1678 0086 43F00103 orr r3, r3, #1 + 1679 008a 1360 str r3, [r2] + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 1680 .loc 1 636 3 view .LVU541 + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 1681 .loc 1 636 19 is_stmt 0 view .LVU542 + 1682 008c 0020 movs r0, #0 + 1683 008e 6064 str r0, [r4, #68] + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 1684 .loc 1 637 3 is_stmt 1 view .LVU543 + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 1685 .loc 1 637 15 is_stmt 0 view .LVU544 + 1686 0090 2023 movs r3, #32 + 1687 0092 84F84130 strb r3, [r4, #65] + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 1688 .loc 1 638 3 is_stmt 1 view .LVU545 + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 1689 .loc 1 638 23 is_stmt 0 view .LVU546 + 1690 0096 2063 str r0, [r4, #48] + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1691 .loc 1 639 3 is_stmt 1 view .LVU547 + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1692 .loc 1 639 14 is_stmt 0 view .LVU548 + 1693 0098 84F84200 strb r0, [r4, #66] + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1694 .loc 1 641 3 is_stmt 1 view .LVU549 + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1695 .loc 1 642 1 is_stmt 0 view .LVU550 + 1696 009c 10BD pop {r4, pc} + 1697 .LVL122: + 1698 .L140: + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1699 .loc 1 556 5 is_stmt 1 view .LVU551 + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1700 .loc 1 556 16 is_stmt 0 view .LVU552 + 1701 009e 80F84030 strb r3, [r0, #64] + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 1702 .loc 1 580 5 is_stmt 1 view .LVU553 + 1703 00a2 FFF7FEFF bl HAL_I2C_MspInit + 1704 .LVL123: + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 1705 .loc 1 580 5 is_stmt 0 view .LVU554 + 1706 00a6 B3E7 b .L130 + 1707 .L141: + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1708 .loc 1 600 5 is_stmt 1 view .LVU555 + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1709 .loc 1 600 56 is_stmt 0 view .LVU556 + 1710 00a8 A368 ldr r3, [r4, #8] + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1711 .loc 1 600 9 view .LVU557 + 1712 00aa 2268 ldr r2, [r4] + ARM GAS /tmp/ccVyGVF6.s page 171 + + + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1713 .loc 1 600 44 view .LVU558 + 1714 00ac 43F40043 orr r3, r3, #32768 + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1715 .loc 1 600 26 view .LVU559 + 1716 00b0 9360 str r3, [r2, #8] + 1717 00b2 C7E7 b .L132 + 1718 .L142: + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1719 .loc 1 611 5 is_stmt 1 view .LVU560 + 1720 00b4 2268 ldr r2, [r4] + 1721 00b6 5368 ldr r3, [r2, #4] + 1722 00b8 43F40063 orr r3, r3, #2048 + 1723 00bc 5360 str r3, [r2, #4] + 1724 00be C9E7 b .L134 + 1725 .LVL124: + 1726 .L135: + 1727 .LCFI16: + 1728 .cfi_def_cfa_offset 0 + 1729 .cfi_restore 4 + 1730 .cfi_restore 14 + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1731 .loc 1 540 12 is_stmt 0 view .LVU561 + 1732 00c0 0120 movs r0, #1 + 1733 .LVL125: + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1734 .loc 1 642 1 view .LVU562 + 1735 00c2 7047 bx lr + 1736 .L144: + 1737 .align 2 + 1738 .L143: + 1739 00c4 00800002 .word 33587200 + 1740 .cfi_endproc + 1741 .LFE141: + 1743 .section .text.HAL_I2C_MspDeInit,"ax",%progbits + 1744 .align 1 + 1745 .weak HAL_I2C_MspDeInit + 1746 .syntax unified + 1747 .thumb + 1748 .thumb_func + 1749 .fpu fpv5-d16 + 1751 HAL_I2C_MspDeInit: + 1752 .LVL126: + 1753 .LFB144: + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 1754 .loc 1 713 1 is_stmt 1 view -0 + 1755 .cfi_startproc + 1756 @ args = 0, pretend = 0, frame = 0 + 1757 @ frame_needed = 0, uses_anonymous_args = 0 + 1758 @ link register save eliminated. + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1759 .loc 1 715 3 view .LVU564 + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1760 .loc 1 720 1 is_stmt 0 view .LVU565 + 1761 0000 7047 bx lr + 1762 .cfi_endproc + 1763 .LFE144: + ARM GAS /tmp/ccVyGVF6.s page 172 + + + 1765 .section .text.HAL_I2C_DeInit,"ax",%progbits + 1766 .align 1 + 1767 .global HAL_I2C_DeInit + 1768 .syntax unified + 1769 .thumb + 1770 .thumb_func + 1771 .fpu fpv5-d16 + 1773 HAL_I2C_DeInit: + 1774 .LVL127: + 1775 .LFB142: + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the I2C handle allocation */ + 1776 .loc 1 651 1 is_stmt 1 view -0 + 1777 .cfi_startproc + 1778 @ args = 0, pretend = 0, frame = 0 + 1779 @ frame_needed = 0, uses_anonymous_args = 0 + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1780 .loc 1 653 3 view .LVU567 + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1781 .loc 1 653 6 is_stmt 0 view .LVU568 + 1782 0000 A8B1 cbz r0, .L148 + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the I2C handle allocation */ + 1783 .loc 1 651 1 view .LVU569 + 1784 0002 10B5 push {r4, lr} + 1785 .LCFI17: + 1786 .cfi_def_cfa_offset 8 + 1787 .cfi_offset 4, -8 + 1788 .cfi_offset 14, -4 + 1789 0004 0446 mov r4, r0 + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1790 .loc 1 659 3 is_stmt 1 view .LVU570 + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1791 .loc 1 661 3 view .LVU571 + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1792 .loc 1 661 15 is_stmt 0 view .LVU572 + 1793 0006 2423 movs r3, #36 + 1794 0008 80F84130 strb r3, [r0, #65] + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1795 .loc 1 664 3 is_stmt 1 view .LVU573 + 1796 000c 0268 ldr r2, [r0] + 1797 000e 1368 ldr r3, [r2] + 1798 0010 23F00103 bic r3, r3, #1 + 1799 0014 1360 str r3, [r2] + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 1800 .loc 1 676 3 view .LVU574 + 1801 0016 FFF7FEFF bl HAL_I2C_MspDeInit + 1802 .LVL128: + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_RESET; + 1803 .loc 1 679 3 view .LVU575 + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_RESET; + 1804 .loc 1 679 19 is_stmt 0 view .LVU576 + 1805 001a 0020 movs r0, #0 + 1806 001c 6064 str r0, [r4, #68] + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 1807 .loc 1 680 3 is_stmt 1 view .LVU577 + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 1808 .loc 1 680 15 is_stmt 0 view .LVU578 + 1809 001e 84F84100 strb r0, [r4, #65] + ARM GAS /tmp/ccVyGVF6.s page 173 + + + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 1810 .loc 1 681 3 is_stmt 1 view .LVU579 + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 1811 .loc 1 681 23 is_stmt 0 view .LVU580 + 1812 0022 2063 str r0, [r4, #48] + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1813 .loc 1 682 3 is_stmt 1 view .LVU581 + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1814 .loc 1 682 14 is_stmt 0 view .LVU582 + 1815 0024 84F84200 strb r0, [r4, #66] + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1816 .loc 1 685 3 is_stmt 1 view .LVU583 + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1817 .loc 1 685 3 view .LVU584 + 1818 0028 84F84000 strb r0, [r4, #64] + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1819 .loc 1 685 3 view .LVU585 + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1820 .loc 1 687 3 view .LVU586 + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1821 .loc 1 688 1 is_stmt 0 view .LVU587 + 1822 002c 10BD pop {r4, pc} + 1823 .LVL129: + 1824 .L148: + 1825 .LCFI18: + 1826 .cfi_def_cfa_offset 0 + 1827 .cfi_restore 4 + 1828 .cfi_restore 14 + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1829 .loc 1 655 12 view .LVU588 + 1830 002e 0120 movs r0, #1 + 1831 .LVL130: + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1832 .loc 1 688 1 view .LVU589 + 1833 0030 7047 bx lr + 1834 .cfi_endproc + 1835 .LFE142: + 1837 .section .text.HAL_I2C_Master_Transmit,"ax",%progbits + 1838 .align 1 + 1839 .global HAL_I2C_Master_Transmit + 1840 .syntax unified + 1841 .thumb + 1842 .thumb_func + 1843 .fpu fpv5-d16 + 1845 HAL_I2C_Master_Transmit: + 1846 .LVL131: + 1847 .LFB145: +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 1848 .loc 1 1121 1 is_stmt 1 view -0 + 1849 .cfi_startproc + 1850 @ args = 4, pretend = 0, frame = 0 + 1851 @ frame_needed = 0, uses_anonymous_args = 0 +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 1852 .loc 1 1121 1 is_stmt 0 view .LVU591 + 1853 0000 2DE9F047 push {r4, r5, r6, r7, r8, r9, r10, lr} + 1854 .LCFI19: + 1855 .cfi_def_cfa_offset 32 + ARM GAS /tmp/ccVyGVF6.s page 174 + + + 1856 .cfi_offset 4, -32 + 1857 .cfi_offset 5, -28 + 1858 .cfi_offset 6, -24 + 1859 .cfi_offset 7, -20 + 1860 .cfi_offset 8, -16 + 1861 .cfi_offset 9, -12 + 1862 .cfi_offset 10, -8 + 1863 .cfi_offset 14, -4 + 1864 0004 82B0 sub sp, sp, #8 + 1865 .LCFI20: + 1866 .cfi_def_cfa_offset 40 + 1867 0006 0F46 mov r7, r1 + 1868 0008 0A9E ldr r6, [sp, #40] +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 1869 .loc 1 1122 3 is_stmt 1 view .LVU592 +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1870 .loc 1 1123 3 view .LVU593 +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1871 .loc 1 1125 3 view .LVU594 +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1872 .loc 1 1125 11 is_stmt 0 view .LVU595 + 1873 000a 90F84110 ldrb r1, [r0, #65] @ zero_extendqisi2 + 1874 .LVL132: +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1875 .loc 1 1125 11 view .LVU596 + 1876 000e C9B2 uxtb r1, r1 +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1877 .loc 1 1125 6 view .LVU597 + 1878 0010 2029 cmp r1, #32 + 1879 0012 40F0B780 bne .L163 + 1880 0016 0446 mov r4, r0 + 1881 0018 9046 mov r8, r2 + 1882 001a 9946 mov r9, r3 +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1883 .loc 1 1128 5 is_stmt 1 view .LVU598 +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1884 .loc 1 1128 5 view .LVU599 + 1885 001c 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 1886 .LVL133: +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1887 .loc 1 1128 5 is_stmt 0 view .LVU600 + 1888 0020 012B cmp r3, #1 + 1889 0022 00F0B380 beq .L164 +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1890 .loc 1 1128 5 is_stmt 1 discriminator 2 view .LVU601 + 1891 0026 4FF0010A mov r10, #1 + 1892 002a 80F840A0 strb r10, [r0, #64] +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1893 .loc 1 1128 5 discriminator 2 view .LVU602 +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1894 .loc 1 1131 5 discriminator 2 view .LVU603 +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1895 .loc 1 1131 17 is_stmt 0 discriminator 2 view .LVU604 + 1896 002e FFF7FEFF bl HAL_GetTick + 1897 .LVL134: +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1898 .loc 1 1131 17 discriminator 2 view .LVU605 + ARM GAS /tmp/ccVyGVF6.s page 175 + + + 1899 0032 0546 mov r5, r0 + 1900 .LVL135: +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1901 .loc 1 1133 5 is_stmt 1 discriminator 2 view .LVU606 +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1902 .loc 1 1133 9 is_stmt 0 discriminator 2 view .LVU607 + 1903 0034 0090 str r0, [sp] + 1904 0036 1923 movs r3, #25 + 1905 0038 5246 mov r2, r10 + 1906 003a 4FF40041 mov r1, #32768 + 1907 003e 2046 mov r0, r4 + 1908 .LVL136: +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1909 .loc 1 1133 9 discriminator 2 view .LVU608 + 1910 0040 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 1911 .LVL137: +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1912 .loc 1 1133 8 discriminator 2 view .LVU609 + 1913 0044 0028 cmp r0, #0 + 1914 0046 40F0A380 bne .L165 +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 1915 .loc 1 1138 5 is_stmt 1 view .LVU610 +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 1916 .loc 1 1138 21 is_stmt 0 view .LVU611 + 1917 004a 2123 movs r3, #33 + 1918 004c 84F84130 strb r3, [r4, #65] +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 1919 .loc 1 1139 5 is_stmt 1 view .LVU612 +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 1920 .loc 1 1139 21 is_stmt 0 view .LVU613 + 1921 0050 1023 movs r3, #16 + 1922 0052 84F84230 strb r3, [r4, #66] +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1923 .loc 1 1140 5 is_stmt 1 view .LVU614 +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1924 .loc 1 1140 21 is_stmt 0 view .LVU615 + 1925 0056 0023 movs r3, #0 + 1926 0058 6364 str r3, [r4, #68] +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 1927 .loc 1 1143 5 is_stmt 1 view .LVU616 +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 1928 .loc 1 1143 21 is_stmt 0 view .LVU617 + 1929 005a C4F82480 str r8, [r4, #36] +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 1930 .loc 1 1144 5 is_stmt 1 view .LVU618 +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 1931 .loc 1 1144 21 is_stmt 0 view .LVU619 + 1932 005e A4F82A90 strh r9, [r4, #42] @ movhi +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1933 .loc 1 1145 5 is_stmt 1 view .LVU620 +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1934 .loc 1 1145 21 is_stmt 0 view .LVU621 + 1935 0062 6363 str r3, [r4, #52] +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1936 .loc 1 1147 5 is_stmt 1 view .LVU622 +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1937 .loc 1 1147 13 is_stmt 0 view .LVU623 + ARM GAS /tmp/ccVyGVF6.s page 176 + + + 1938 0064 638D ldrh r3, [r4, #42] + 1939 0066 9BB2 uxth r3, r3 +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1940 .loc 1 1147 8 view .LVU624 + 1941 0068 FF2B cmp r3, #255 + 1942 006a 1ED9 bls .L155 +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 1943 .loc 1 1149 7 is_stmt 1 view .LVU625 +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 1944 .loc 1 1149 22 is_stmt 0 view .LVU626 + 1945 006c FF23 movs r3, #255 + 1946 006e 2385 strh r3, [r4, #40] @ movhi +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1947 .loc 1 1150 7 is_stmt 1 view .LVU627 + 1948 .LVL138: +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 1949 .loc 1 1150 16 is_stmt 0 view .LVU628 + 1950 0070 4FF08073 mov r3, #16777216 + 1951 .LVL139: + 1952 .L156: +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1953 .loc 1 1158 5 is_stmt 1 view .LVU629 +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1954 .loc 1 1158 13 is_stmt 0 view .LVU630 + 1955 0074 228D ldrh r2, [r4, #40] +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 1956 .loc 1 1158 8 view .LVU631 + 1957 0076 EAB1 cbz r2, .L157 +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1958 .loc 1 1162 7 is_stmt 1 view .LVU632 +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1959 .loc 1 1162 11 is_stmt 0 view .LVU633 + 1960 0078 2268 ldr r2, [r4] +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1961 .loc 1 1162 30 view .LVU634 + 1962 007a 98F80010 ldrb r1, [r8] @ zero_extendqisi2 +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1963 .loc 1 1162 28 view .LVU635 + 1964 007e 9162 str r1, [r2, #40] +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1965 .loc 1 1165 7 is_stmt 1 view .LVU636 +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1966 .loc 1 1165 11 is_stmt 0 view .LVU637 + 1967 0080 626A ldr r2, [r4, #36] +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1968 .loc 1 1165 21 view .LVU638 + 1969 0082 0132 adds r2, r2, #1 + 1970 0084 6262 str r2, [r4, #36] +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 1971 .loc 1 1167 7 is_stmt 1 view .LVU639 +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 1972 .loc 1 1167 11 is_stmt 0 view .LVU640 + 1973 0086 628D ldrh r2, [r4, #42] + 1974 0088 92B2 uxth r2, r2 +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 1975 .loc 1 1167 22 view .LVU641 + 1976 008a 013A subs r2, r2, #1 + ARM GAS /tmp/ccVyGVF6.s page 177 + + + 1977 008c 92B2 uxth r2, r2 + 1978 008e 6285 strh r2, [r4, #42] @ movhi +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1979 .loc 1 1168 7 is_stmt 1 view .LVU642 +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1980 .loc 1 1168 11 is_stmt 0 view .LVU643 + 1981 0090 228D ldrh r2, [r4, #40] +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 1982 .loc 1 1168 21 view .LVU644 + 1983 0092 013A subs r2, r2, #1 + 1984 0094 92B2 uxth r2, r2 + 1985 0096 2285 strh r2, [r4, #40] @ movhi +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 1986 .loc 1 1172 7 is_stmt 1 view .LVU645 + 1987 0098 0132 adds r2, r2, #1 + 1988 009a 4149 ldr r1, .L171 + 1989 009c 0091 str r1, [sp] + 1990 009e D2B2 uxtb r2, r2 + 1991 00a0 3946 mov r1, r7 + 1992 00a2 2046 mov r0, r4 + 1993 00a4 FFF7FEFF bl I2C_TransferConfig + 1994 .LVL140: +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 1995 .loc 1 1172 7 is_stmt 0 view .LVU646 + 1996 00a8 18E0 b .L159 + 1997 .L155: +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 1998 .loc 1 1154 7 is_stmt 1 view .LVU647 +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 1999 .loc 1 1154 28 is_stmt 0 view .LVU648 + 2000 00aa 638D ldrh r3, [r4, #42] +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 2001 .loc 1 1154 22 view .LVU649 + 2002 00ac 2385 strh r3, [r4, #40] @ movhi +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2003 .loc 1 1155 7 is_stmt 1 view .LVU650 + 2004 .LVL141: +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2005 .loc 1 1155 16 is_stmt 0 view .LVU651 + 2006 00ae 4FF00073 mov r3, #33554432 + 2007 00b2 DFE7 b .L156 + 2008 .LVL142: + 2009 .L157: +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 2010 .loc 1 1179 7 is_stmt 1 view .LVU652 + 2011 00b4 3A49 ldr r1, .L171 + 2012 00b6 0091 str r1, [sp] + 2013 00b8 D2B2 uxtb r2, r2 + 2014 00ba 3946 mov r1, r7 + 2015 00bc 2046 mov r0, r4 + 2016 00be FFF7FEFF bl I2C_TransferConfig + 2017 .LVL143: +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 2018 .loc 1 1179 7 is_stmt 0 view .LVU653 + 2019 00c2 0BE0 b .L159 + 2020 .L161: +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + ARM GAS /tmp/ccVyGVF6.s page 178 + + + 2021 .loc 1 1215 11 is_stmt 1 view .LVU654 +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 2022 .loc 1 1215 32 is_stmt 0 view .LVU655 + 2023 00c4 628D ldrh r2, [r4, #42] + 2024 00c6 92B2 uxth r2, r2 +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 2025 .loc 1 1215 26 view .LVU656 + 2026 00c8 2285 strh r2, [r4, #40] @ movhi +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); + 2027 .loc 1 1216 11 is_stmt 1 view .LVU657 + 2028 00ca 0023 movs r3, #0 + 2029 00cc 0093 str r3, [sp] + 2030 00ce 4FF00073 mov r3, #33554432 + 2031 00d2 D2B2 uxtb r2, r2 + 2032 00d4 3946 mov r1, r7 + 2033 00d6 2046 mov r0, r4 + 2034 00d8 FFF7FEFF bl I2C_TransferConfig + 2035 .LVL144: + 2036 .L159: +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2037 .loc 1 1183 11 view .LVU658 +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2038 .loc 1 1183 16 is_stmt 0 view .LVU659 + 2039 00dc 638D ldrh r3, [r4, #42] + 2040 00de 9BB2 uxth r3, r3 +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2041 .loc 1 1183 11 view .LVU660 + 2042 00e0 002B cmp r3, #0 + 2043 00e2 33D0 beq .L170 +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2044 .loc 1 1186 7 is_stmt 1 view .LVU661 +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2045 .loc 1 1186 11 is_stmt 0 view .LVU662 + 2046 00e4 2A46 mov r2, r5 + 2047 00e6 3146 mov r1, r6 + 2048 00e8 2046 mov r0, r4 + 2049 00ea FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout + 2050 .LVL145: +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2051 .loc 1 1186 10 view .LVU663 + 2052 00ee 0028 cmp r0, #0 + 2053 00f0 50D1 bne .L166 +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2054 .loc 1 1191 7 is_stmt 1 view .LVU664 +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2055 .loc 1 1191 35 is_stmt 0 view .LVU665 + 2056 00f2 626A ldr r2, [r4, #36] +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2057 .loc 1 1191 11 view .LVU666 + 2058 00f4 2368 ldr r3, [r4] +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2059 .loc 1 1191 30 view .LVU667 + 2060 00f6 1278 ldrb r2, [r2] @ zero_extendqisi2 +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2061 .loc 1 1191 28 view .LVU668 + 2062 00f8 9A62 str r2, [r3, #40] +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 179 + + + 2063 .loc 1 1194 7 is_stmt 1 view .LVU669 +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2064 .loc 1 1194 11 is_stmt 0 view .LVU670 + 2065 00fa 636A ldr r3, [r4, #36] +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2066 .loc 1 1194 21 view .LVU671 + 2067 00fc 0133 adds r3, r3, #1 + 2068 00fe 6362 str r3, [r4, #36] +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 2069 .loc 1 1196 7 is_stmt 1 view .LVU672 +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 2070 .loc 1 1196 11 is_stmt 0 view .LVU673 + 2071 0100 638D ldrh r3, [r4, #42] + 2072 0102 9BB2 uxth r3, r3 +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 2073 .loc 1 1196 22 view .LVU674 + 2074 0104 013B subs r3, r3, #1 + 2075 0106 9BB2 uxth r3, r3 + 2076 0108 6385 strh r3, [r4, #42] @ movhi +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2077 .loc 1 1197 7 is_stmt 1 view .LVU675 +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2078 .loc 1 1197 11 is_stmt 0 view .LVU676 + 2079 010a 238D ldrh r3, [r4, #40] +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2080 .loc 1 1197 21 view .LVU677 + 2081 010c 013B subs r3, r3, #1 + 2082 010e 9BB2 uxth r3, r3 + 2083 0110 2385 strh r3, [r4, #40] @ movhi +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2084 .loc 1 1199 7 is_stmt 1 view .LVU678 +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2085 .loc 1 1199 16 is_stmt 0 view .LVU679 + 2086 0112 628D ldrh r2, [r4, #42] + 2087 0114 92B2 uxth r2, r2 +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2088 .loc 1 1199 10 view .LVU680 + 2089 0116 002A cmp r2, #0 + 2090 0118 E0D0 beq .L159 +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2091 .loc 1 1199 35 discriminator 1 view .LVU681 + 2092 011a 002B cmp r3, #0 + 2093 011c DED1 bne .L159 +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2094 .loc 1 1202 9 is_stmt 1 view .LVU682 +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2095 .loc 1 1202 13 is_stmt 0 view .LVU683 + 2096 011e 0095 str r5, [sp] + 2097 0120 3346 mov r3, r6 + 2098 0122 0022 movs r2, #0 + 2099 0124 8021 movs r1, #128 + 2100 0126 2046 mov r0, r4 + 2101 0128 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 2102 .LVL146: +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2103 .loc 1 1202 12 view .LVU684 + 2104 012c A0BB cbnz r0, .L167 + ARM GAS /tmp/ccVyGVF6.s page 180 + + +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2105 .loc 1 1207 9 is_stmt 1 view .LVU685 +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2106 .loc 1 1207 17 is_stmt 0 view .LVU686 + 2107 012e 638D ldrh r3, [r4, #42] + 2108 0130 9BB2 uxth r3, r3 +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2109 .loc 1 1207 12 view .LVU687 + 2110 0132 FF2B cmp r3, #255 + 2111 0134 C6D9 bls .L161 +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 2112 .loc 1 1209 11 is_stmt 1 view .LVU688 +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 2113 .loc 1 1209 26 is_stmt 0 view .LVU689 + 2114 0136 FF22 movs r2, #255 + 2115 0138 2285 strh r2, [r4, #40] @ movhi +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); + 2116 .loc 1 1210 11 is_stmt 1 view .LVU690 + 2117 013a 0023 movs r3, #0 + 2118 013c 0093 str r3, [sp] + 2119 013e 4FF08073 mov r3, #16777216 + 2120 0142 3946 mov r1, r7 + 2121 0144 2046 mov r0, r4 + 2122 0146 FFF7FEFF bl I2C_TransferConfig + 2123 .LVL147: + 2124 014a C7E7 b .L159 + 2125 .L170: +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2126 .loc 1 1224 5 view .LVU691 +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2127 .loc 1 1224 9 is_stmt 0 view .LVU692 + 2128 014c 2A46 mov r2, r5 + 2129 014e 3146 mov r1, r6 + 2130 0150 2046 mov r0, r4 + 2131 0152 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout + 2132 .LVL148: +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2133 .loc 1 1224 8 view .LVU693 + 2134 0156 08BB cbnz r0, .L168 +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2135 .loc 1 1230 5 is_stmt 1 view .LVU694 + 2136 0158 2368 ldr r3, [r4] + 2137 015a 2022 movs r2, #32 + 2138 015c DA61 str r2, [r3, #28] +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2139 .loc 1 1233 5 view .LVU695 + 2140 015e 2168 ldr r1, [r4] + 2141 0160 4B68 ldr r3, [r1, #4] + 2142 0162 23F0FF73 bic r3, r3, #33423360 + 2143 0166 23F48B33 bic r3, r3, #71168 + 2144 016a 23F4FF73 bic r3, r3, #510 + 2145 016e 23F00103 bic r3, r3, #1 + 2146 0172 4B60 str r3, [r1, #4] +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 2147 .loc 1 1235 5 view .LVU696 +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 2148 .loc 1 1235 17 is_stmt 0 view .LVU697 + ARM GAS /tmp/ccVyGVF6.s page 181 + + + 2149 0174 84F84120 strb r2, [r4, #65] +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2150 .loc 1 1236 5 is_stmt 1 view .LVU698 +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2151 .loc 1 1236 17 is_stmt 0 view .LVU699 + 2152 0178 0023 movs r3, #0 + 2153 017a 84F84230 strb r3, [r4, #66] +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2154 .loc 1 1239 5 is_stmt 1 view .LVU700 +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2155 .loc 1 1239 5 view .LVU701 + 2156 017e 84F84030 strb r3, [r4, #64] +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2157 .loc 1 1239 5 view .LVU702 +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2158 .loc 1 1241 5 view .LVU703 +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2159 .loc 1 1241 12 is_stmt 0 view .LVU704 + 2160 0182 00E0 b .L154 + 2161 .LVL149: + 2162 .L163: +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2163 .loc 1 1245 12 view .LVU705 + 2164 0184 0220 movs r0, #2 + 2165 .LVL150: + 2166 .L154: +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2167 .loc 1 1247 1 view .LVU706 + 2168 0186 02B0 add sp, sp, #8 + 2169 .LCFI21: + 2170 .cfi_remember_state + 2171 .cfi_def_cfa_offset 32 + 2172 @ sp needed + 2173 0188 BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc} + 2174 .LVL151: + 2175 .L164: + 2176 .LCFI22: + 2177 .cfi_restore_state +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2178 .loc 1 1128 5 view .LVU707 + 2179 018c 0220 movs r0, #2 + 2180 .LVL152: +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2181 .loc 1 1128 5 view .LVU708 + 2182 018e FAE7 b .L154 + 2183 .LVL153: + 2184 .L165: +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2185 .loc 1 1135 14 view .LVU709 + 2186 0190 0120 movs r0, #1 + 2187 0192 F8E7 b .L154 + 2188 .L166: +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2189 .loc 1 1188 16 view .LVU710 + 2190 0194 0120 movs r0, #1 + 2191 0196 F6E7 b .L154 + 2192 .L167: + ARM GAS /tmp/ccVyGVF6.s page 182 + + +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2193 .loc 1 1204 18 view .LVU711 + 2194 0198 0120 movs r0, #1 + 2195 019a F4E7 b .L154 + 2196 .L168: +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2197 .loc 1 1226 14 view .LVU712 + 2198 019c 0120 movs r0, #1 + 2199 019e F2E7 b .L154 + 2200 .L172: + 2201 .align 2 + 2202 .L171: + 2203 01a0 00200080 .word -2147475456 + 2204 .cfi_endproc + 2205 .LFE145: + 2207 .section .text.HAL_I2C_Master_Receive,"ax",%progbits + 2208 .align 1 + 2209 .global HAL_I2C_Master_Receive + 2210 .syntax unified + 2211 .thumb + 2212 .thumb_func + 2213 .fpu fpv5-d16 + 2215 HAL_I2C_Master_Receive: + 2216 .LVL154: + 2217 .LFB146: +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 2218 .loc 1 1262 1 is_stmt 1 view -0 + 2219 .cfi_startproc + 2220 @ args = 4, pretend = 0, frame = 0 + 2221 @ frame_needed = 0, uses_anonymous_args = 0 +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 2222 .loc 1 1262 1 is_stmt 0 view .LVU714 + 2223 0000 2DE9F047 push {r4, r5, r6, r7, r8, r9, r10, lr} + 2224 .LCFI23: + 2225 .cfi_def_cfa_offset 32 + 2226 .cfi_offset 4, -32 + 2227 .cfi_offset 5, -28 + 2228 .cfi_offset 6, -24 + 2229 .cfi_offset 7, -20 + 2230 .cfi_offset 8, -16 + 2231 .cfi_offset 9, -12 + 2232 .cfi_offset 10, -8 + 2233 .cfi_offset 14, -4 + 2234 0004 82B0 sub sp, sp, #8 + 2235 .LCFI24: + 2236 .cfi_def_cfa_offset 40 + 2237 0006 0F46 mov r7, r1 + 2238 0008 0A9E ldr r6, [sp, #40] +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2239 .loc 1 1263 3 is_stmt 1 view .LVU715 +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2240 .loc 1 1265 3 view .LVU716 +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2241 .loc 1 1265 11 is_stmt 0 view .LVU717 + 2242 000a 90F84110 ldrb r1, [r0, #65] @ zero_extendqisi2 + 2243 .LVL155: +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 183 + + + 2244 .loc 1 1265 11 view .LVU718 + 2245 000e C9B2 uxtb r1, r1 +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2246 .loc 1 1265 6 view .LVU719 + 2247 0010 2029 cmp r1, #32 + 2248 0012 40F0A380 bne .L181 + 2249 0016 0446 mov r4, r0 + 2250 0018 9046 mov r8, r2 + 2251 001a 9946 mov r9, r3 +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2252 .loc 1 1268 5 is_stmt 1 view .LVU720 +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2253 .loc 1 1268 5 view .LVU721 + 2254 001c 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 2255 .LVL156: +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2256 .loc 1 1268 5 is_stmt 0 view .LVU722 + 2257 0020 012B cmp r3, #1 + 2258 0022 00F09F80 beq .L182 +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2259 .loc 1 1268 5 is_stmt 1 discriminator 2 view .LVU723 + 2260 0026 4FF0010A mov r10, #1 + 2261 002a 80F840A0 strb r10, [r0, #64] +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2262 .loc 1 1268 5 discriminator 2 view .LVU724 +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2263 .loc 1 1271 5 discriminator 2 view .LVU725 +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2264 .loc 1 1271 17 is_stmt 0 discriminator 2 view .LVU726 + 2265 002e FFF7FEFF bl HAL_GetTick + 2266 .LVL157: +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2267 .loc 1 1271 17 discriminator 2 view .LVU727 + 2268 0032 0546 mov r5, r0 + 2269 .LVL158: +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2270 .loc 1 1273 5 is_stmt 1 discriminator 2 view .LVU728 +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2271 .loc 1 1273 9 is_stmt 0 discriminator 2 view .LVU729 + 2272 0034 0090 str r0, [sp] + 2273 0036 1923 movs r3, #25 + 2274 0038 5246 mov r2, r10 + 2275 003a 4FF40041 mov r1, #32768 + 2276 003e 2046 mov r0, r4 + 2277 .LVL159: +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2278 .loc 1 1273 9 discriminator 2 view .LVU730 + 2279 0040 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 2280 .LVL160: +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2281 .loc 1 1273 8 discriminator 2 view .LVU731 + 2282 0044 0028 cmp r0, #0 + 2283 0046 40F08F80 bne .L183 +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 2284 .loc 1 1278 5 is_stmt 1 view .LVU732 +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 2285 .loc 1 1278 21 is_stmt 0 view .LVU733 + ARM GAS /tmp/ccVyGVF6.s page 184 + + + 2286 004a 2223 movs r3, #34 + 2287 004c 84F84130 strb r3, [r4, #65] +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 2288 .loc 1 1279 5 is_stmt 1 view .LVU734 +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 2289 .loc 1 1279 21 is_stmt 0 view .LVU735 + 2290 0050 1023 movs r3, #16 + 2291 0052 84F84230 strb r3, [r4, #66] +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2292 .loc 1 1280 5 is_stmt 1 view .LVU736 +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2293 .loc 1 1280 21 is_stmt 0 view .LVU737 + 2294 0056 0023 movs r3, #0 + 2295 0058 6364 str r3, [r4, #68] +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 2296 .loc 1 1283 5 is_stmt 1 view .LVU738 +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 2297 .loc 1 1283 21 is_stmt 0 view .LVU739 + 2298 005a C4F82480 str r8, [r4, #36] +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 2299 .loc 1 1284 5 is_stmt 1 view .LVU740 +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 2300 .loc 1 1284 21 is_stmt 0 view .LVU741 + 2301 005e A4F82A90 strh r9, [r4, #42] @ movhi +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2302 .loc 1 1285 5 is_stmt 1 view .LVU742 +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2303 .loc 1 1285 21 is_stmt 0 view .LVU743 + 2304 0062 6363 str r3, [r4, #52] +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2305 .loc 1 1289 5 is_stmt 1 view .LVU744 +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2306 .loc 1 1289 13 is_stmt 0 view .LVU745 + 2307 0064 638D ldrh r3, [r4, #42] + 2308 0066 9BB2 uxth r3, r3 +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2309 .loc 1 1289 8 view .LVU746 + 2310 0068 FF2B cmp r3, #255 + 2311 006a 0BD9 bls .L175 +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 2312 .loc 1 1291 7 is_stmt 1 view .LVU747 +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 2313 .loc 1 1291 22 is_stmt 0 view .LVU748 + 2314 006c 5246 mov r2, r10 + 2315 006e A4F828A0 strh r10, [r4, #40] @ movhi +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); + 2316 .loc 1 1292 7 is_stmt 1 view .LVU749 + 2317 0072 414B ldr r3, .L189 + 2318 0074 0093 str r3, [sp] + 2319 0076 4FF08073 mov r3, #16777216 + 2320 007a 3946 mov r1, r7 + 2321 007c 2046 mov r0, r4 + 2322 007e FFF7FEFF bl I2C_TransferConfig + 2323 .LVL161: + 2324 0082 18E0 b .L177 + 2325 .L175: +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + ARM GAS /tmp/ccVyGVF6.s page 185 + + + 2326 .loc 1 1297 7 view .LVU750 +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 2327 .loc 1 1297 28 is_stmt 0 view .LVU751 + 2328 0084 628D ldrh r2, [r4, #42] + 2329 0086 92B2 uxth r2, r2 +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 2330 .loc 1 1297 22 view .LVU752 + 2331 0088 2285 strh r2, [r4, #40] @ movhi +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); + 2332 .loc 1 1298 7 is_stmt 1 view .LVU753 + 2333 008a 3B4B ldr r3, .L189 + 2334 008c 0093 str r3, [sp] + 2335 008e 4FF00073 mov r3, #33554432 + 2336 0092 D2B2 uxtb r2, r2 + 2337 0094 3946 mov r1, r7 + 2338 0096 2046 mov r0, r4 + 2339 0098 FFF7FEFF bl I2C_TransferConfig + 2340 .LVL162: + 2341 009c 0BE0 b .L177 + 2342 .L179: +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 2343 .loc 1 1335 11 view .LVU754 +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 2344 .loc 1 1335 32 is_stmt 0 view .LVU755 + 2345 009e 628D ldrh r2, [r4, #42] + 2346 00a0 92B2 uxth r2, r2 +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 2347 .loc 1 1335 26 view .LVU756 + 2348 00a2 2285 strh r2, [r4, #40] @ movhi +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); + 2349 .loc 1 1336 11 is_stmt 1 view .LVU757 + 2350 00a4 0023 movs r3, #0 + 2351 00a6 0093 str r3, [sp] + 2352 00a8 4FF00073 mov r3, #33554432 + 2353 00ac D2B2 uxtb r2, r2 + 2354 00ae 3946 mov r1, r7 + 2355 00b0 2046 mov r0, r4 + 2356 00b2 FFF7FEFF bl I2C_TransferConfig + 2357 .LVL163: + 2358 .L177: +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2359 .loc 1 1302 11 view .LVU758 +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2360 .loc 1 1302 16 is_stmt 0 view .LVU759 + 2361 00b6 638D ldrh r3, [r4, #42] + 2362 00b8 9BB2 uxth r3, r3 +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2363 .loc 1 1302 11 view .LVU760 + 2364 00ba 002B cmp r3, #0 + 2365 00bc 32D0 beq .L188 +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2366 .loc 1 1305 7 is_stmt 1 view .LVU761 +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2367 .loc 1 1305 11 is_stmt 0 view .LVU762 + 2368 00be 2A46 mov r2, r5 + 2369 00c0 3146 mov r1, r6 + 2370 00c2 2046 mov r0, r4 + ARM GAS /tmp/ccVyGVF6.s page 186 + + + 2371 00c4 FFF7FEFF bl I2C_WaitOnRXNEFlagUntilTimeout + 2372 .LVL164: +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2373 .loc 1 1305 10 view .LVU763 + 2374 00c8 0028 cmp r0, #0 + 2375 00ca 4FD1 bne .L184 +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2376 .loc 1 1311 7 is_stmt 1 view .LVU764 +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2377 .loc 1 1311 38 is_stmt 0 view .LVU765 + 2378 00cc 2368 ldr r3, [r4] +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2379 .loc 1 1311 48 view .LVU766 + 2380 00ce 5A6A ldr r2, [r3, #36] +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2381 .loc 1 1311 12 view .LVU767 + 2382 00d0 636A ldr r3, [r4, #36] +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2383 .loc 1 1311 23 view .LVU768 + 2384 00d2 1A70 strb r2, [r3] +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2385 .loc 1 1314 7 is_stmt 1 view .LVU769 +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2386 .loc 1 1314 11 is_stmt 0 view .LVU770 + 2387 00d4 636A ldr r3, [r4, #36] +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2388 .loc 1 1314 21 view .LVU771 + 2389 00d6 0133 adds r3, r3, #1 + 2390 00d8 6362 str r3, [r4, #36] +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 2391 .loc 1 1316 7 is_stmt 1 view .LVU772 +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 2392 .loc 1 1316 11 is_stmt 0 view .LVU773 + 2393 00da 228D ldrh r2, [r4, #40] +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 2394 .loc 1 1316 21 view .LVU774 + 2395 00dc 013A subs r2, r2, #1 + 2396 00de 92B2 uxth r2, r2 + 2397 00e0 2285 strh r2, [r4, #40] @ movhi +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2398 .loc 1 1317 7 is_stmt 1 view .LVU775 +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2399 .loc 1 1317 11 is_stmt 0 view .LVU776 + 2400 00e2 638D ldrh r3, [r4, #42] + 2401 00e4 9BB2 uxth r3, r3 +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2402 .loc 1 1317 22 view .LVU777 + 2403 00e6 013B subs r3, r3, #1 + 2404 00e8 9BB2 uxth r3, r3 + 2405 00ea 6385 strh r3, [r4, #42] @ movhi +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2406 .loc 1 1319 7 is_stmt 1 view .LVU778 +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2407 .loc 1 1319 16 is_stmt 0 view .LVU779 + 2408 00ec 638D ldrh r3, [r4, #42] + 2409 00ee 9BB2 uxth r3, r3 +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 187 + + + 2410 .loc 1 1319 10 view .LVU780 + 2411 00f0 002B cmp r3, #0 + 2412 00f2 E0D0 beq .L177 +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2413 .loc 1 1319 35 discriminator 1 view .LVU781 + 2414 00f4 002A cmp r2, #0 + 2415 00f6 DED1 bne .L177 +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2416 .loc 1 1322 9 is_stmt 1 view .LVU782 +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2417 .loc 1 1322 13 is_stmt 0 view .LVU783 + 2418 00f8 0095 str r5, [sp] + 2419 00fa 3346 mov r3, r6 + 2420 00fc 8021 movs r1, #128 + 2421 00fe 2046 mov r0, r4 + 2422 0100 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 2423 .LVL165: +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2424 .loc 1 1322 12 view .LVU784 + 2425 0104 A0BB cbnz r0, .L185 +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2426 .loc 1 1327 9 is_stmt 1 view .LVU785 +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2427 .loc 1 1327 17 is_stmt 0 view .LVU786 + 2428 0106 638D ldrh r3, [r4, #42] + 2429 0108 9BB2 uxth r3, r3 +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2430 .loc 1 1327 12 view .LVU787 + 2431 010a FF2B cmp r3, #255 + 2432 010c C7D9 bls .L179 +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 2433 .loc 1 1329 11 is_stmt 1 view .LVU788 +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 2434 .loc 1 1329 26 is_stmt 0 view .LVU789 + 2435 010e FF22 movs r2, #255 + 2436 0110 2285 strh r2, [r4, #40] @ movhi +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); + 2437 .loc 1 1330 11 is_stmt 1 view .LVU790 + 2438 0112 0023 movs r3, #0 + 2439 0114 0093 str r3, [sp] + 2440 0116 4FF08073 mov r3, #16777216 + 2441 011a 3946 mov r1, r7 + 2442 011c 2046 mov r0, r4 + 2443 011e FFF7FEFF bl I2C_TransferConfig + 2444 .LVL166: + 2445 0122 C8E7 b .L177 + 2446 .L188: +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2447 .loc 1 1344 5 view .LVU791 +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2448 .loc 1 1344 9 is_stmt 0 view .LVU792 + 2449 0124 2A46 mov r2, r5 + 2450 0126 3146 mov r1, r6 + 2451 0128 2046 mov r0, r4 + 2452 012a FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout + 2453 .LVL167: +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 188 + + + 2454 .loc 1 1344 8 view .LVU793 + 2455 012e 08BB cbnz r0, .L186 +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2456 .loc 1 1350 5 is_stmt 1 view .LVU794 + 2457 0130 2368 ldr r3, [r4] + 2458 0132 2022 movs r2, #32 + 2459 0134 DA61 str r2, [r3, #28] +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2460 .loc 1 1353 5 view .LVU795 + 2461 0136 2168 ldr r1, [r4] + 2462 0138 4B68 ldr r3, [r1, #4] + 2463 013a 23F0FF73 bic r3, r3, #33423360 + 2464 013e 23F48B33 bic r3, r3, #71168 + 2465 0142 23F4FF73 bic r3, r3, #510 + 2466 0146 23F00103 bic r3, r3, #1 + 2467 014a 4B60 str r3, [r1, #4] +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 2468 .loc 1 1355 5 view .LVU796 +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 2469 .loc 1 1355 17 is_stmt 0 view .LVU797 + 2470 014c 84F84120 strb r2, [r4, #65] +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2471 .loc 1 1356 5 is_stmt 1 view .LVU798 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2472 .loc 1 1356 17 is_stmt 0 view .LVU799 + 2473 0150 0023 movs r3, #0 + 2474 0152 84F84230 strb r3, [r4, #66] +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2475 .loc 1 1359 5 is_stmt 1 view .LVU800 +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2476 .loc 1 1359 5 view .LVU801 + 2477 0156 84F84030 strb r3, [r4, #64] +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2478 .loc 1 1359 5 view .LVU802 +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2479 .loc 1 1361 5 view .LVU803 +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2480 .loc 1 1361 12 is_stmt 0 view .LVU804 + 2481 015a 00E0 b .L174 + 2482 .LVL168: + 2483 .L181: +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2484 .loc 1 1365 12 view .LVU805 + 2485 015c 0220 movs r0, #2 + 2486 .LVL169: + 2487 .L174: +1367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2488 .loc 1 1367 1 view .LVU806 + 2489 015e 02B0 add sp, sp, #8 + 2490 .LCFI25: + 2491 .cfi_remember_state + 2492 .cfi_def_cfa_offset 32 + 2493 @ sp needed + 2494 0160 BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc} + 2495 .LVL170: + 2496 .L182: + 2497 .LCFI26: + ARM GAS /tmp/ccVyGVF6.s page 189 + + + 2498 .cfi_restore_state +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2499 .loc 1 1268 5 view .LVU807 + 2500 0164 0220 movs r0, #2 + 2501 .LVL171: +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2502 .loc 1 1268 5 view .LVU808 + 2503 0166 FAE7 b .L174 + 2504 .LVL172: + 2505 .L183: +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2506 .loc 1 1275 14 view .LVU809 + 2507 0168 0120 movs r0, #1 + 2508 016a F8E7 b .L174 + 2509 .L184: +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2510 .loc 1 1307 16 view .LVU810 + 2511 016c 0120 movs r0, #1 + 2512 016e F6E7 b .L174 + 2513 .L185: +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2514 .loc 1 1324 18 view .LVU811 + 2515 0170 0120 movs r0, #1 + 2516 0172 F4E7 b .L174 + 2517 .L186: +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2518 .loc 1 1346 14 view .LVU812 + 2519 0174 0120 movs r0, #1 + 2520 0176 F2E7 b .L174 + 2521 .L190: + 2522 .align 2 + 2523 .L189: + 2524 0178 00240080 .word -2147474432 + 2525 .cfi_endproc + 2526 .LFE146: + 2528 .section .text.HAL_I2C_Slave_Transmit,"ax",%progbits + 2529 .align 1 + 2530 .global HAL_I2C_Slave_Transmit + 2531 .syntax unified + 2532 .thumb + 2533 .thumb_func + 2534 .fpu fpv5-d16 + 2536 HAL_I2C_Slave_Transmit: + 2537 .LVL173: + 2538 .LFB147: +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 2539 .loc 1 1380 1 is_stmt 1 view -0 + 2540 .cfi_startproc + 2541 @ args = 0, pretend = 0, frame = 0 + 2542 @ frame_needed = 0, uses_anonymous_args = 0 +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 2543 .loc 1 1380 1 is_stmt 0 view .LVU814 + 2544 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 2545 .LCFI27: + 2546 .cfi_def_cfa_offset 24 + 2547 .cfi_offset 4, -24 + 2548 .cfi_offset 5, -20 + ARM GAS /tmp/ccVyGVF6.s page 190 + + + 2549 .cfi_offset 6, -16 + 2550 .cfi_offset 7, -12 + 2551 .cfi_offset 8, -8 + 2552 .cfi_offset 14, -4 + 2553 0004 82B0 sub sp, sp, #8 + 2554 .LCFI28: + 2555 .cfi_def_cfa_offset 32 + 2556 0006 1D46 mov r5, r3 +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t tmpXferCount; + 2557 .loc 1 1381 3 is_stmt 1 view .LVU815 +1382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef error; + 2558 .loc 1 1382 3 view .LVU816 +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2559 .loc 1 1383 3 view .LVU817 +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2560 .loc 1 1385 3 view .LVU818 +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2561 .loc 1 1385 11 is_stmt 0 view .LVU819 + 2562 0008 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 2563 .LVL174: +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2564 .loc 1 1385 11 view .LVU820 + 2565 000c DBB2 uxtb r3, r3 +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2566 .loc 1 1385 6 view .LVU821 + 2567 000e 202B cmp r3, #32 + 2568 0010 40F0EA80 bne .L206 + 2569 0014 0446 mov r4, r0 + 2570 0016 0F46 mov r7, r1 + 2571 0018 9046 mov r8, r2 +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2572 .loc 1 1387 5 is_stmt 1 view .LVU822 +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2573 .loc 1 1387 8 is_stmt 0 view .LVU823 + 2574 001a 002A cmp r2, #0 + 2575 001c 18BF it ne + 2576 001e 0029 cmpne r1, #0 + 2577 0020 55D0 beq .L209 +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2578 .loc 1 1393 5 is_stmt 1 view .LVU824 +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2579 .loc 1 1393 5 view .LVU825 + 2580 0022 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 2581 0026 012B cmp r3, #1 + 2582 0028 00F0E280 beq .L207 +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2583 .loc 1 1393 5 discriminator 2 view .LVU826 + 2584 002c 0123 movs r3, #1 + 2585 002e 80F84030 strb r3, [r0, #64] +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2586 .loc 1 1393 5 discriminator 2 view .LVU827 +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2587 .loc 1 1396 5 discriminator 2 view .LVU828 +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2588 .loc 1 1396 17 is_stmt 0 discriminator 2 view .LVU829 + 2589 0032 FFF7FEFF bl HAL_GetTick + 2590 .LVL175: + ARM GAS /tmp/ccVyGVF6.s page 191 + + +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2591 .loc 1 1396 17 discriminator 2 view .LVU830 + 2592 0036 0646 mov r6, r0 + 2593 .LVL176: +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 2594 .loc 1 1398 5 is_stmt 1 discriminator 2 view .LVU831 +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 2595 .loc 1 1398 21 is_stmt 0 discriminator 2 view .LVU832 + 2596 0038 2123 movs r3, #33 + 2597 003a 84F84130 strb r3, [r4, #65] +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 2598 .loc 1 1399 5 is_stmt 1 discriminator 2 view .LVU833 +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 2599 .loc 1 1399 21 is_stmt 0 discriminator 2 view .LVU834 + 2600 003e 2023 movs r3, #32 + 2601 0040 84F84230 strb r3, [r4, #66] +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2602 .loc 1 1400 5 is_stmt 1 discriminator 2 view .LVU835 +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2603 .loc 1 1400 21 is_stmt 0 discriminator 2 view .LVU836 + 2604 0044 0023 movs r3, #0 + 2605 0046 6364 str r3, [r4, #68] +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 2606 .loc 1 1403 5 is_stmt 1 discriminator 2 view .LVU837 +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 2607 .loc 1 1403 21 is_stmt 0 discriminator 2 view .LVU838 + 2608 0048 6762 str r7, [r4, #36] +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 2609 .loc 1 1404 5 is_stmt 1 discriminator 2 view .LVU839 +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 2610 .loc 1 1404 21 is_stmt 0 discriminator 2 view .LVU840 + 2611 004a A4F82A80 strh r8, [r4, #42] @ movhi +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2612 .loc 1 1405 5 is_stmt 1 discriminator 2 view .LVU841 +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2613 .loc 1 1405 21 is_stmt 0 discriminator 2 view .LVU842 + 2614 004e 6363 str r3, [r4, #52] +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2615 .loc 1 1408 5 is_stmt 1 discriminator 2 view .LVU843 +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2616 .loc 1 1408 9 is_stmt 0 discriminator 2 view .LVU844 + 2617 0050 2268 ldr r2, [r4] +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2618 .loc 1 1408 25 discriminator 2 view .LVU845 + 2619 0052 5368 ldr r3, [r2, #4] + 2620 0054 23F40043 bic r3, r3, #32768 + 2621 0058 5360 str r3, [r2, #4] +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2622 .loc 1 1411 5 is_stmt 1 discriminator 2 view .LVU846 +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2623 .loc 1 1411 19 is_stmt 0 discriminator 2 view .LVU847 + 2624 005a 236A ldr r3, [r4, #32] +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2625 .loc 1 1411 8 discriminator 2 view .LVU848 + 2626 005c B3F5003F cmp r3, #131072 + 2627 0060 3AD0 beq .L210 + 2628 .L194: + ARM GAS /tmp/ccVyGVF6.s page 192 + + +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2629 .loc 1 1424 5 is_stmt 1 view .LVU849 +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2630 .loc 1 1424 9 is_stmt 0 view .LVU850 + 2631 0062 0096 str r6, [sp] + 2632 0064 2B46 mov r3, r5 + 2633 0066 0022 movs r2, #0 + 2634 0068 0821 movs r1, #8 + 2635 006a 2046 mov r0, r4 + 2636 .LVL177: +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2637 .loc 1 1424 9 view .LVU851 + 2638 006c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 2639 .LVL178: +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2640 .loc 1 1424 8 view .LVU852 + 2641 0070 0028 cmp r0, #0 + 2642 0072 3ED1 bne .L211 +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2643 .loc 1 1436 5 is_stmt 1 view .LVU853 + 2644 0074 2368 ldr r3, [r4] + 2645 0076 0822 movs r2, #8 + 2646 0078 DA61 str r2, [r3, #28] +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2647 .loc 1 1439 5 view .LVU854 +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2648 .loc 1 1439 19 is_stmt 0 view .LVU855 + 2649 007a E368 ldr r3, [r4, #12] +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2650 .loc 1 1439 8 view .LVU856 + 2651 007c 022B cmp r3, #2 + 2652 007e 42D0 beq .L212 + 2653 .L196: +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2654 .loc 1 1458 5 is_stmt 1 view .LVU857 +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2655 .loc 1 1458 9 is_stmt 0 view .LVU858 + 2656 0080 0096 str r6, [sp] + 2657 0082 2B46 mov r3, r5 + 2658 0084 0022 movs r2, #0 + 2659 0086 4FF48031 mov r1, #65536 + 2660 008a 2046 mov r0, r4 + 2661 008c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 2662 .LVL179: +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2663 .loc 1 1458 8 view .LVU859 + 2664 0090 0028 cmp r0, #0 + 2665 0092 4ED1 bne .L213 + 2666 .L198: +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2667 .loc 1 1469 11 is_stmt 1 view .LVU860 +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2668 .loc 1 1469 16 is_stmt 0 view .LVU861 + 2669 0094 628D ldrh r2, [r4, #42] + 2670 0096 92B2 uxth r2, r2 +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2671 .loc 1 1469 11 view .LVU862 + ARM GAS /tmp/ccVyGVF6.s page 193 + + + 2672 0098 002A cmp r2, #0 + 2673 009a 5BD0 beq .L214 +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2674 .loc 1 1472 7 is_stmt 1 view .LVU863 +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2675 .loc 1 1472 11 is_stmt 0 view .LVU864 + 2676 009c 3246 mov r2, r6 + 2677 009e 2946 mov r1, r5 + 2678 00a0 2046 mov r0, r4 + 2679 00a2 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout + 2680 .LVL180: +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2681 .loc 1 1472 10 view .LVU865 + 2682 00a6 0028 cmp r0, #0 + 2683 00a8 4DD1 bne .L215 +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2684 .loc 1 1480 7 is_stmt 1 view .LVU866 +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2685 .loc 1 1480 35 is_stmt 0 view .LVU867 + 2686 00aa 626A ldr r2, [r4, #36] +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2687 .loc 1 1480 11 view .LVU868 + 2688 00ac 2368 ldr r3, [r4] +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2689 .loc 1 1480 30 view .LVU869 + 2690 00ae 1278 ldrb r2, [r2] @ zero_extendqisi2 +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2691 .loc 1 1480 28 view .LVU870 + 2692 00b0 9A62 str r2, [r3, #40] +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2693 .loc 1 1483 7 is_stmt 1 view .LVU871 +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2694 .loc 1 1483 11 is_stmt 0 view .LVU872 + 2695 00b2 636A ldr r3, [r4, #36] +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2696 .loc 1 1483 21 view .LVU873 + 2697 00b4 0133 adds r3, r3, #1 + 2698 00b6 6362 str r3, [r4, #36] +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2699 .loc 1 1485 7 is_stmt 1 view .LVU874 +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2700 .loc 1 1485 11 is_stmt 0 view .LVU875 + 2701 00b8 B4F82AC0 ldrh ip, [r4, #42] + 2702 00bc 1FFA8CFC uxth ip, ip +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2703 .loc 1 1485 22 view .LVU876 + 2704 00c0 0CF1FF3C add ip, ip, #-1 + 2705 00c4 1FFA8CFC uxth ip, ip + 2706 00c8 A4F82AC0 strh ip, [r4, #42] @ movhi + 2707 00cc E2E7 b .L198 + 2708 .LVL181: + 2709 .L209: +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2710 .loc 1 1389 7 is_stmt 1 view .LVU877 +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2711 .loc 1 1389 23 is_stmt 0 view .LVU878 + 2712 00ce 4FF40073 mov r3, #512 + ARM GAS /tmp/ccVyGVF6.s page 194 + + + 2713 00d2 4364 str r3, [r0, #68] +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2714 .loc 1 1390 7 is_stmt 1 view .LVU879 +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2715 .loc 1 1390 15 is_stmt 0 view .LVU880 + 2716 00d4 0120 movs r0, #1 + 2717 .LVL182: +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2718 .loc 1 1390 15 view .LVU881 + 2719 00d6 88E0 b .L192 + 2720 .LVL183: + 2721 .L210: +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2722 .loc 1 1415 7 is_stmt 1 view .LVU882 +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2723 .loc 1 1415 35 is_stmt 0 view .LVU883 + 2724 00d8 626A ldr r2, [r4, #36] +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2725 .loc 1 1415 11 view .LVU884 + 2726 00da 2368 ldr r3, [r4] +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2727 .loc 1 1415 30 view .LVU885 + 2728 00dc 1278 ldrb r2, [r2] @ zero_extendqisi2 +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2729 .loc 1 1415 28 view .LVU886 + 2730 00de 9A62 str r2, [r3, #40] +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2731 .loc 1 1418 7 is_stmt 1 view .LVU887 +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2732 .loc 1 1418 11 is_stmt 0 view .LVU888 + 2733 00e0 636A ldr r3, [r4, #36] +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2734 .loc 1 1418 21 view .LVU889 + 2735 00e2 0133 adds r3, r3, #1 + 2736 00e4 6362 str r3, [r4, #36] +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2737 .loc 1 1420 7 is_stmt 1 view .LVU890 +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2738 .loc 1 1420 11 is_stmt 0 view .LVU891 + 2739 00e6 638D ldrh r3, [r4, #42] + 2740 00e8 9BB2 uxth r3, r3 +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2741 .loc 1 1420 22 view .LVU892 + 2742 00ea 013B subs r3, r3, #1 + 2743 00ec 9BB2 uxth r3, r3 + 2744 00ee 6385 strh r3, [r4, #42] @ movhi + 2745 00f0 B7E7 b .L194 + 2746 .LVL184: + 2747 .L211: +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2748 .loc 1 1427 7 is_stmt 1 view .LVU893 +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2749 .loc 1 1427 11 is_stmt 0 view .LVU894 + 2750 00f2 2268 ldr r2, [r4] +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2751 .loc 1 1427 27 view .LVU895 + 2752 00f4 5368 ldr r3, [r2, #4] + ARM GAS /tmp/ccVyGVF6.s page 195 + + + 2753 00f6 43F40043 orr r3, r3, #32768 + 2754 00fa 5360 str r3, [r2, #4] +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2755 .loc 1 1430 7 is_stmt 1 view .LVU896 + 2756 00fc 2046 mov r0, r4 + 2757 00fe FFF7FEFF bl I2C_Flush_TXDR + 2758 .LVL185: +1432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2759 .loc 1 1432 7 view .LVU897 +1432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2760 .loc 1 1432 14 is_stmt 0 view .LVU898 + 2761 0102 0120 movs r0, #1 + 2762 0104 71E0 b .L192 + 2763 .L212: +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2764 .loc 1 1442 7 is_stmt 1 view .LVU899 +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2765 .loc 1 1442 11 is_stmt 0 view .LVU900 + 2766 0106 0096 str r6, [sp] + 2767 0108 2B46 mov r3, r5 + 2768 010a 0022 movs r2, #0 + 2769 010c 0821 movs r1, #8 + 2770 010e 2046 mov r0, r4 + 2771 0110 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 2772 .LVL186: +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2773 .loc 1 1442 10 view .LVU901 + 2774 0114 18B9 cbnz r0, .L216 +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2775 .loc 1 1454 7 is_stmt 1 view .LVU902 + 2776 0116 2368 ldr r3, [r4] + 2777 0118 0822 movs r2, #8 + 2778 011a DA61 str r2, [r3, #28] + 2779 011c B0E7 b .L196 + 2780 .L216: +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2781 .loc 1 1445 9 view .LVU903 +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2782 .loc 1 1445 13 is_stmt 0 view .LVU904 + 2783 011e 2268 ldr r2, [r4] +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2784 .loc 1 1445 29 view .LVU905 + 2785 0120 5368 ldr r3, [r2, #4] + 2786 0122 43F40043 orr r3, r3, #32768 + 2787 0126 5360 str r3, [r2, #4] +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2788 .loc 1 1448 9 is_stmt 1 view .LVU906 + 2789 0128 2046 mov r0, r4 + 2790 012a FFF7FEFF bl I2C_Flush_TXDR + 2791 .LVL187: +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2792 .loc 1 1450 9 view .LVU907 +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2793 .loc 1 1450 16 is_stmt 0 view .LVU908 + 2794 012e 0120 movs r0, #1 + 2795 0130 5BE0 b .L192 + 2796 .L213: + ARM GAS /tmp/ccVyGVF6.s page 196 + + +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2797 .loc 1 1461 7 is_stmt 1 view .LVU909 +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2798 .loc 1 1461 11 is_stmt 0 view .LVU910 + 2799 0132 2268 ldr r2, [r4] +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2800 .loc 1 1461 27 view .LVU911 + 2801 0134 5368 ldr r3, [r2, #4] + 2802 0136 43F40043 orr r3, r3, #32768 + 2803 013a 5360 str r3, [r2, #4] +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2804 .loc 1 1464 7 is_stmt 1 view .LVU912 + 2805 013c 2046 mov r0, r4 + 2806 013e FFF7FEFF bl I2C_Flush_TXDR + 2807 .LVL188: +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2808 .loc 1 1466 7 view .LVU913 +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2809 .loc 1 1466 14 is_stmt 0 view .LVU914 + 2810 0142 0120 movs r0, #1 + 2811 0144 51E0 b .L192 + 2812 .L215: +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2813 .loc 1 1475 9 is_stmt 1 view .LVU915 +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2814 .loc 1 1475 13 is_stmt 0 view .LVU916 + 2815 0146 2268 ldr r2, [r4] +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2816 .loc 1 1475 29 view .LVU917 + 2817 0148 5368 ldr r3, [r2, #4] + 2818 014a 43F40043 orr r3, r3, #32768 + 2819 014e 5360 str r3, [r2, #4] +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2820 .loc 1 1476 9 is_stmt 1 view .LVU918 +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2821 .loc 1 1476 16 is_stmt 0 view .LVU919 + 2822 0150 0120 movs r0, #1 + 2823 0152 4AE0 b .L192 + 2824 .L214: +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2825 .loc 1 1489 5 is_stmt 1 view .LVU920 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2826 .loc 1 1489 13 is_stmt 0 view .LVU921 + 2827 0154 0096 str r6, [sp] + 2828 0156 2B46 mov r3, r5 + 2829 0158 1021 movs r1, #16 + 2830 015a 2046 mov r0, r4 + 2831 015c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 2832 .LVL189: +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2833 .loc 1 1491 5 is_stmt 1 view .LVU922 +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2834 .loc 1 1491 8 is_stmt 0 view .LVU923 + 2835 0160 E8B1 cbz r0, .L201 +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->ErrorCode == HAL_I2C_ERROR_AF) && (tmpXferCount == 0U)) + 2836 .loc 1 1497 7 is_stmt 1 view .LVU924 +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((hi2c->ErrorCode == HAL_I2C_ERROR_AF) && (tmpXferCount == 0U)) + ARM GAS /tmp/ccVyGVF6.s page 197 + + + 2837 .loc 1 1497 20 is_stmt 0 view .LVU925 + 2838 0162 638D ldrh r3, [r4, #42] + 2839 0164 9BB2 uxth r3, r3 + 2840 .LVL190: +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2841 .loc 1 1498 7 is_stmt 1 view .LVU926 +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2842 .loc 1 1498 16 is_stmt 0 view .LVU927 + 2843 0166 626C ldr r2, [r4, #68] +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2844 .loc 1 1498 10 view .LVU928 + 2845 0168 042A cmp r2, #4 + 2846 016a 11D1 bne .L202 +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2847 .loc 1 1498 49 discriminator 1 view .LVU929 + 2848 016c 83B9 cbnz r3, .L202 +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2849 .loc 1 1501 9 is_stmt 1 view .LVU930 +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2850 .loc 1 1501 25 is_stmt 0 view .LVU931 + 2851 016e 6364 str r3, [r4, #68] + 2852 .LVL191: + 2853 .L203: +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2854 .loc 1 1532 5 is_stmt 1 view .LVU932 +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2855 .loc 1 1532 9 is_stmt 0 view .LVU933 + 2856 0170 0096 str r6, [sp] + 2857 0172 2B46 mov r3, r5 + 2858 0174 0122 movs r2, #1 + 2859 0176 4FF40041 mov r1, #32768 + 2860 017a 2046 mov r0, r4 + 2861 017c FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 2862 .LVL192: +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2863 .loc 1 1532 8 view .LVU934 + 2864 0180 20B3 cbz r0, .L205 +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2865 .loc 1 1535 7 is_stmt 1 view .LVU935 +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2866 .loc 1 1535 11 is_stmt 0 view .LVU936 + 2867 0182 2268 ldr r2, [r4] +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2868 .loc 1 1535 27 view .LVU937 + 2869 0184 5368 ldr r3, [r2, #4] + 2870 0186 43F40043 orr r3, r3, #32768 + 2871 018a 5360 str r3, [r2, #4] +1536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2872 .loc 1 1536 7 is_stmt 1 view .LVU938 +1536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2873 .loc 1 1536 14 is_stmt 0 view .LVU939 + 2874 018c 0120 movs r0, #1 + 2875 018e 2CE0 b .L192 + 2876 .LVL193: + 2877 .L202: +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2878 .loc 1 1506 9 is_stmt 1 view .LVU940 + ARM GAS /tmp/ccVyGVF6.s page 198 + + +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2879 .loc 1 1506 13 is_stmt 0 view .LVU941 + 2880 0190 2268 ldr r2, [r4] +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2881 .loc 1 1506 29 view .LVU942 + 2882 0192 5368 ldr r3, [r2, #4] + 2883 .LVL194: +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 2884 .loc 1 1506 29 view .LVU943 + 2885 0194 43F40043 orr r3, r3, #32768 + 2886 0198 5360 str r3, [r2, #4] +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2887 .loc 1 1507 9 is_stmt 1 view .LVU944 +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2888 .loc 1 1507 16 is_stmt 0 view .LVU945 + 2889 019a 0120 movs r0, #1 + 2890 .LVL195: +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2891 .loc 1 1507 16 view .LVU946 + 2892 019c 25E0 b .L192 + 2893 .LVL196: + 2894 .L201: +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2895 .loc 1 1513 7 is_stmt 1 view .LVU947 + 2896 019e 2046 mov r0, r4 + 2897 .LVL197: +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2898 .loc 1 1513 7 is_stmt 0 view .LVU948 + 2899 01a0 FFF7FEFF bl I2C_Flush_TXDR + 2900 .LVL198: +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2901 .loc 1 1516 7 is_stmt 1 view .LVU949 + 2902 01a4 2368 ldr r3, [r4] + 2903 01a6 1022 movs r2, #16 + 2904 01a8 DA61 str r2, [r3, #28] +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2905 .loc 1 1519 7 view .LVU950 +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2906 .loc 1 1519 11 is_stmt 0 view .LVU951 + 2907 01aa 3246 mov r2, r6 + 2908 01ac 2946 mov r1, r5 + 2909 01ae 2046 mov r0, r4 + 2910 01b0 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout + 2911 .LVL199: +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 2912 .loc 1 1519 10 view .LVU952 + 2913 01b4 18B9 cbnz r0, .L217 +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2914 .loc 1 1528 7 is_stmt 1 view .LVU953 + 2915 01b6 2368 ldr r3, [r4] + 2916 01b8 2022 movs r2, #32 + 2917 01ba DA61 str r2, [r3, #28] + 2918 01bc D8E7 b .L203 + 2919 .L217: +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2920 .loc 1 1522 9 view .LVU954 +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 199 + + + 2921 .loc 1 1522 13 is_stmt 0 view .LVU955 + 2922 01be 2268 ldr r2, [r4] +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2923 .loc 1 1522 29 view .LVU956 + 2924 01c0 5368 ldr r3, [r2, #4] + 2925 01c2 43F40043 orr r3, r3, #32768 + 2926 01c6 5360 str r3, [r2, #4] +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2927 .loc 1 1524 9 is_stmt 1 view .LVU957 +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2928 .loc 1 1524 16 is_stmt 0 view .LVU958 + 2929 01c8 0120 movs r0, #1 + 2930 01ca 0EE0 b .L192 + 2931 .L205: +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2932 .loc 1 1540 5 is_stmt 1 view .LVU959 +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2933 .loc 1 1540 9 is_stmt 0 view .LVU960 + 2934 01cc 2268 ldr r2, [r4] +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2935 .loc 1 1540 25 view .LVU961 + 2936 01ce 5368 ldr r3, [r2, #4] + 2937 01d0 43F40043 orr r3, r3, #32768 + 2938 01d4 5360 str r3, [r2, #4] +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 2939 .loc 1 1542 5 is_stmt 1 view .LVU962 +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 2940 .loc 1 1542 17 is_stmt 0 view .LVU963 + 2941 01d6 2023 movs r3, #32 + 2942 01d8 84F84130 strb r3, [r4, #65] +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2943 .loc 1 1543 5 is_stmt 1 view .LVU964 +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2944 .loc 1 1543 17 is_stmt 0 view .LVU965 + 2945 01dc 0023 movs r3, #0 + 2946 01de 84F84230 strb r3, [r4, #66] +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2947 .loc 1 1546 5 is_stmt 1 view .LVU966 +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2948 .loc 1 1546 5 view .LVU967 + 2949 01e2 84F84030 strb r3, [r4, #64] +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2950 .loc 1 1546 5 view .LVU968 +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2951 .loc 1 1548 5 view .LVU969 +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2952 .loc 1 1548 12 is_stmt 0 view .LVU970 + 2953 01e6 00E0 b .L192 + 2954 .LVL200: + 2955 .L206: +1552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 2956 .loc 1 1552 12 view .LVU971 + 2957 01e8 0220 movs r0, #2 + 2958 .LVL201: + 2959 .L192: +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2960 .loc 1 1554 1 view .LVU972 + ARM GAS /tmp/ccVyGVF6.s page 200 + + + 2961 01ea 02B0 add sp, sp, #8 + 2962 .LCFI29: + 2963 .cfi_remember_state + 2964 .cfi_def_cfa_offset 24 + 2965 @ sp needed + 2966 01ec BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 2967 .LVL202: + 2968 .L207: + 2969 .LCFI30: + 2970 .cfi_restore_state +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2971 .loc 1 1393 5 view .LVU973 + 2972 01f0 0220 movs r0, #2 + 2973 .LVL203: +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 2974 .loc 1 1393 5 view .LVU974 + 2975 01f2 FAE7 b .L192 + 2976 .cfi_endproc + 2977 .LFE147: + 2979 .section .text.HAL_I2C_Slave_Receive,"ax",%progbits + 2980 .align 1 + 2981 .global HAL_I2C_Slave_Receive + 2982 .syntax unified + 2983 .thumb + 2984 .thumb_func + 2985 .fpu fpv5-d16 + 2987 HAL_I2C_Slave_Receive: + 2988 .LVL204: + 2989 .LFB148: +1567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 2990 .loc 1 1567 1 is_stmt 1 view -0 + 2991 .cfi_startproc + 2992 @ args = 0, pretend = 0, frame = 0 + 2993 @ frame_needed = 0, uses_anonymous_args = 0 +1567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 2994 .loc 1 1567 1 is_stmt 0 view .LVU976 + 2995 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 2996 .LCFI31: + 2997 .cfi_def_cfa_offset 24 + 2998 .cfi_offset 4, -24 + 2999 .cfi_offset 5, -20 + 3000 .cfi_offset 6, -16 + 3001 .cfi_offset 7, -12 + 3002 .cfi_offset 8, -8 + 3003 .cfi_offset 14, -4 + 3004 0004 82B0 sub sp, sp, #8 + 3005 .LCFI32: + 3006 .cfi_def_cfa_offset 32 + 3007 0006 1D46 mov r5, r3 +1568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3008 .loc 1 1568 3 is_stmt 1 view .LVU977 +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3009 .loc 1 1570 3 view .LVU978 +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3010 .loc 1 1570 11 is_stmt 0 view .LVU979 + 3011 0008 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 3012 .LVL205: + ARM GAS /tmp/ccVyGVF6.s page 201 + + +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3013 .loc 1 1570 11 view .LVU980 + 3014 000c DBB2 uxtb r3, r3 +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3015 .loc 1 1570 6 view .LVU981 + 3016 000e 202B cmp r3, #32 + 3017 0010 40F0B280 bne .L228 + 3018 0014 0446 mov r4, r0 + 3019 0016 0F46 mov r7, r1 + 3020 0018 9046 mov r8, r2 +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3021 .loc 1 1572 5 is_stmt 1 view .LVU982 +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3022 .loc 1 1572 8 is_stmt 0 view .LVU983 + 3023 001a 002A cmp r2, #0 + 3024 001c 18BF it ne + 3025 001e 0029 cmpne r1, #0 + 3026 0020 2BD0 beq .L231 +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3027 .loc 1 1578 5 is_stmt 1 view .LVU984 +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3028 .loc 1 1578 5 view .LVU985 + 3029 0022 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 3030 0026 012B cmp r3, #1 + 3031 0028 00F0AA80 beq .L229 +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3032 .loc 1 1578 5 discriminator 2 view .LVU986 + 3033 002c 0123 movs r3, #1 + 3034 002e 80F84030 strb r3, [r0, #64] +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3035 .loc 1 1578 5 discriminator 2 view .LVU987 +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3036 .loc 1 1581 5 discriminator 2 view .LVU988 +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3037 .loc 1 1581 17 is_stmt 0 discriminator 2 view .LVU989 + 3038 0032 FFF7FEFF bl HAL_GetTick + 3039 .LVL206: +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3040 .loc 1 1581 17 discriminator 2 view .LVU990 + 3041 0036 0646 mov r6, r0 + 3042 .LVL207: +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 3043 .loc 1 1583 5 is_stmt 1 discriminator 2 view .LVU991 +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 3044 .loc 1 1583 21 is_stmt 0 discriminator 2 view .LVU992 + 3045 0038 2223 movs r3, #34 + 3046 003a 84F84130 strb r3, [r4, #65] +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 3047 .loc 1 1584 5 is_stmt 1 discriminator 2 view .LVU993 +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 3048 .loc 1 1584 21 is_stmt 0 discriminator 2 view .LVU994 + 3049 003e 2023 movs r3, #32 + 3050 0040 84F84230 strb r3, [r4, #66] +1585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3051 .loc 1 1585 5 is_stmt 1 discriminator 2 view .LVU995 +1585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3052 .loc 1 1585 21 is_stmt 0 discriminator 2 view .LVU996 + ARM GAS /tmp/ccVyGVF6.s page 202 + + + 3053 0044 0022 movs r2, #0 + 3054 0046 6264 str r2, [r4, #68] +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 3055 .loc 1 1588 5 is_stmt 1 discriminator 2 view .LVU997 +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 3056 .loc 1 1588 21 is_stmt 0 discriminator 2 view .LVU998 + 3057 0048 6762 str r7, [r4, #36] +1589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 3058 .loc 1 1589 5 is_stmt 1 discriminator 2 view .LVU999 +1589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 3059 .loc 1 1589 21 is_stmt 0 discriminator 2 view .LVU1000 + 3060 004a A4F82A80 strh r8, [r4, #42] @ movhi +1590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 3061 .loc 1 1590 5 is_stmt 1 discriminator 2 view .LVU1001 +1590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 3062 .loc 1 1590 26 is_stmt 0 discriminator 2 view .LVU1002 + 3063 004e 638D ldrh r3, [r4, #42] +1590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 3064 .loc 1 1590 20 discriminator 2 view .LVU1003 + 3065 0050 2385 strh r3, [r4, #40] @ movhi +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3066 .loc 1 1591 5 is_stmt 1 discriminator 2 view .LVU1004 +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3067 .loc 1 1591 21 is_stmt 0 discriminator 2 view .LVU1005 + 3068 0052 6263 str r2, [r4, #52] +1594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3069 .loc 1 1594 5 is_stmt 1 discriminator 2 view .LVU1006 +1594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3070 .loc 1 1594 9 is_stmt 0 discriminator 2 view .LVU1007 + 3071 0054 2168 ldr r1, [r4] +1594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3072 .loc 1 1594 25 discriminator 2 view .LVU1008 + 3073 0056 4B68 ldr r3, [r1, #4] + 3074 0058 23F40043 bic r3, r3, #32768 + 3075 005c 4B60 str r3, [r1, #4] +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3076 .loc 1 1597 5 is_stmt 1 discriminator 2 view .LVU1009 +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3077 .loc 1 1597 9 is_stmt 0 discriminator 2 view .LVU1010 + 3078 005e 0090 str r0, [sp] + 3079 0060 2B46 mov r3, r5 + 3080 0062 0821 movs r1, #8 + 3081 0064 2046 mov r0, r4 + 3082 .LVL208: +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3083 .loc 1 1597 9 discriminator 2 view .LVU1011 + 3084 0066 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 3085 .LVL209: +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3086 .loc 1 1597 8 discriminator 2 view .LVU1012 + 3087 006a 58B1 cbz r0, .L221 +1600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3088 .loc 1 1600 7 is_stmt 1 view .LVU1013 +1600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3089 .loc 1 1600 11 is_stmt 0 view .LVU1014 + 3090 006c 2268 ldr r2, [r4] +1600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + ARM GAS /tmp/ccVyGVF6.s page 203 + + + 3091 .loc 1 1600 27 view .LVU1015 + 3092 006e 5368 ldr r3, [r2, #4] + 3093 0070 43F40043 orr r3, r3, #32768 + 3094 0074 5360 str r3, [r2, #4] +1601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3095 .loc 1 1601 7 is_stmt 1 view .LVU1016 +1601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3096 .loc 1 1601 14 is_stmt 0 view .LVU1017 + 3097 0076 0120 movs r0, #1 + 3098 0078 7FE0 b .L219 + 3099 .LVL210: + 3100 .L231: +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3101 .loc 1 1574 7 is_stmt 1 view .LVU1018 +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3102 .loc 1 1574 23 is_stmt 0 view .LVU1019 + 3103 007a 4FF40073 mov r3, #512 + 3104 007e 4364 str r3, [r0, #68] +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3105 .loc 1 1575 7 is_stmt 1 view .LVU1020 +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3106 .loc 1 1575 15 is_stmt 0 view .LVU1021 + 3107 0080 0120 movs r0, #1 + 3108 .LVL211: +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3109 .loc 1 1575 15 view .LVU1022 + 3110 0082 7AE0 b .L219 + 3111 .LVL212: + 3112 .L221: +1605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3113 .loc 1 1605 5 is_stmt 1 view .LVU1023 + 3114 0084 2368 ldr r3, [r4] + 3115 0086 0822 movs r2, #8 + 3116 0088 DA61 str r2, [r3, #28] +1608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3117 .loc 1 1608 5 view .LVU1024 +1608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3118 .loc 1 1608 9 is_stmt 0 view .LVU1025 + 3119 008a 0096 str r6, [sp] + 3120 008c 2B46 mov r3, r5 + 3121 008e 0122 movs r2, #1 + 3122 0090 4FF48031 mov r1, #65536 + 3123 0094 2046 mov r0, r4 + 3124 0096 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 3125 .LVL213: +1608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3126 .loc 1 1608 8 view .LVU1026 + 3127 009a F0B9 cbnz r0, .L232 + 3128 .L222: +1615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3129 .loc 1 1615 11 is_stmt 1 view .LVU1027 +1615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3130 .loc 1 1615 16 is_stmt 0 view .LVU1028 + 3131 009c 638D ldrh r3, [r4, #42] + 3132 009e 9BB2 uxth r3, r3 +1615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3133 .loc 1 1615 11 view .LVU1029 + ARM GAS /tmp/ccVyGVF6.s page 204 + + + 3134 00a0 002B cmp r3, #0 + 3135 00a2 3BD0 beq .L233 +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3136 .loc 1 1618 7 is_stmt 1 view .LVU1030 +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3137 .loc 1 1618 11 is_stmt 0 view .LVU1031 + 3138 00a4 3246 mov r2, r6 + 3139 00a6 2946 mov r1, r5 + 3140 00a8 2046 mov r0, r4 + 3141 00aa FFF7FEFF bl I2C_WaitOnRXNEFlagUntilTimeout + 3142 .LVL214: +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3143 .loc 1 1618 10 view .LVU1032 + 3144 00ae D8B9 cbnz r0, .L234 +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3145 .loc 1 1640 7 is_stmt 1 view .LVU1033 +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3146 .loc 1 1640 38 is_stmt 0 view .LVU1034 + 3147 00b0 2368 ldr r3, [r4] +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3148 .loc 1 1640 48 view .LVU1035 + 3149 00b2 5A6A ldr r2, [r3, #36] +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3150 .loc 1 1640 12 view .LVU1036 + 3151 00b4 636A ldr r3, [r4, #36] +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3152 .loc 1 1640 23 view .LVU1037 + 3153 00b6 1A70 strb r2, [r3] +1643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3154 .loc 1 1643 7 is_stmt 1 view .LVU1038 +1643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3155 .loc 1 1643 11 is_stmt 0 view .LVU1039 + 3156 00b8 636A ldr r3, [r4, #36] +1643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3157 .loc 1 1643 21 view .LVU1040 + 3158 00ba 0133 adds r3, r3, #1 + 3159 00bc 6362 str r3, [r4, #36] +1645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3160 .loc 1 1645 7 is_stmt 1 view .LVU1041 +1645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3161 .loc 1 1645 11 is_stmt 0 view .LVU1042 + 3162 00be B4F82AC0 ldrh ip, [r4, #42] + 3163 00c2 1FFA8CFC uxth ip, ip +1645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3164 .loc 1 1645 22 view .LVU1043 + 3165 00c6 0CF1FF3C add ip, ip, #-1 + 3166 00ca 1FFA8CFC uxth ip, ip + 3167 00ce A4F82AC0 strh ip, [r4, #42] @ movhi +1646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3168 .loc 1 1646 7 is_stmt 1 view .LVU1044 +1646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3169 .loc 1 1646 11 is_stmt 0 view .LVU1045 + 3170 00d2 238D ldrh r3, [r4, #40] +1646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3171 .loc 1 1646 21 view .LVU1046 + 3172 00d4 013B subs r3, r3, #1 + 3173 00d6 2385 strh r3, [r4, #40] @ movhi + ARM GAS /tmp/ccVyGVF6.s page 205 + + + 3174 00d8 E0E7 b .L222 + 3175 .L232: +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3176 .loc 1 1611 7 is_stmt 1 view .LVU1047 +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3177 .loc 1 1611 11 is_stmt 0 view .LVU1048 + 3178 00da 2268 ldr r2, [r4] +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3179 .loc 1 1611 27 view .LVU1049 + 3180 00dc 5368 ldr r3, [r2, #4] + 3181 00de 43F40043 orr r3, r3, #32768 + 3182 00e2 5360 str r3, [r2, #4] +1612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3183 .loc 1 1612 7 is_stmt 1 view .LVU1050 +1612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3184 .loc 1 1612 14 is_stmt 0 view .LVU1051 + 3185 00e4 0120 movs r0, #1 + 3186 00e6 48E0 b .L219 + 3187 .L234: +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3188 .loc 1 1621 9 is_stmt 1 view .LVU1052 +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3189 .loc 1 1621 13 is_stmt 0 view .LVU1053 + 3190 00e8 2268 ldr r2, [r4] +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3191 .loc 1 1621 29 view .LVU1054 + 3192 00ea 5368 ldr r3, [r2, #4] + 3193 00ec 43F40043 orr r3, r3, #32768 + 3194 00f0 5360 str r3, [r2, #4] +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3195 .loc 1 1624 9 is_stmt 1 view .LVU1055 +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3196 .loc 1 1624 13 is_stmt 0 view .LVU1056 + 3197 00f2 2368 ldr r3, [r4] + 3198 00f4 9A69 ldr r2, [r3, #24] +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3199 .loc 1 1624 12 view .LVU1057 + 3200 00f6 12F0040F tst r2, #4 + 3201 00fa 0DD0 beq .L224 +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3202 .loc 1 1627 11 is_stmt 1 view .LVU1058 +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3203 .loc 1 1627 52 is_stmt 0 view .LVU1059 + 3204 00fc 5A6A ldr r2, [r3, #36] +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3205 .loc 1 1627 16 view .LVU1060 + 3206 00fe 636A ldr r3, [r4, #36] +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3207 .loc 1 1627 27 view .LVU1061 + 3208 0100 1A70 strb r2, [r3] +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3209 .loc 1 1630 11 is_stmt 1 view .LVU1062 +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3210 .loc 1 1630 15 is_stmt 0 view .LVU1063 + 3211 0102 636A ldr r3, [r4, #36] +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3212 .loc 1 1630 25 view .LVU1064 + ARM GAS /tmp/ccVyGVF6.s page 206 + + + 3213 0104 0133 adds r3, r3, #1 + 3214 0106 6362 str r3, [r4, #36] +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3215 .loc 1 1632 11 is_stmt 1 view .LVU1065 +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3216 .loc 1 1632 15 is_stmt 0 view .LVU1066 + 3217 0108 638D ldrh r3, [r4, #42] + 3218 010a 9BB2 uxth r3, r3 +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3219 .loc 1 1632 26 view .LVU1067 + 3220 010c 013B subs r3, r3, #1 + 3221 010e 9BB2 uxth r3, r3 + 3222 0110 6385 strh r3, [r4, #42] @ movhi +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3223 .loc 1 1633 11 is_stmt 1 view .LVU1068 +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3224 .loc 1 1633 15 is_stmt 0 view .LVU1069 + 3225 0112 238D ldrh r3, [r4, #40] +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3226 .loc 1 1633 25 view .LVU1070 + 3227 0114 013B subs r3, r3, #1 + 3228 0116 2385 strh r3, [r4, #40] @ movhi + 3229 .L224: +1636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3230 .loc 1 1636 9 is_stmt 1 view .LVU1071 +1636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3231 .loc 1 1636 16 is_stmt 0 view .LVU1072 + 3232 0118 0120 movs r0, #1 + 3233 011a 2EE0 b .L219 + 3234 .L233: +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3235 .loc 1 1650 5 is_stmt 1 view .LVU1073 +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3236 .loc 1 1650 9 is_stmt 0 view .LVU1074 + 3237 011c 3246 mov r2, r6 + 3238 011e 2946 mov r1, r5 + 3239 0120 2046 mov r0, r4 + 3240 0122 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout + 3241 .LVL215: +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3242 .loc 1 1650 8 view .LVU1075 + 3243 0126 30B1 cbz r0, .L226 +1653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3244 .loc 1 1653 7 is_stmt 1 view .LVU1076 +1653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3245 .loc 1 1653 11 is_stmt 0 view .LVU1077 + 3246 0128 2268 ldr r2, [r4] +1653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3247 .loc 1 1653 27 view .LVU1078 + 3248 012a 5368 ldr r3, [r2, #4] + 3249 012c 43F40043 orr r3, r3, #32768 + 3250 0130 5360 str r3, [r2, #4] +1654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3251 .loc 1 1654 7 is_stmt 1 view .LVU1079 +1654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3252 .loc 1 1654 14 is_stmt 0 view .LVU1080 + 3253 0132 0120 movs r0, #1 + ARM GAS /tmp/ccVyGVF6.s page 207 + + + 3254 0134 21E0 b .L219 + 3255 .L226: +1658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3256 .loc 1 1658 5 is_stmt 1 view .LVU1081 + 3257 0136 2368 ldr r3, [r4] + 3258 0138 2022 movs r2, #32 + 3259 013a DA61 str r2, [r3, #28] +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3260 .loc 1 1661 5 view .LVU1082 +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3261 .loc 1 1661 9 is_stmt 0 view .LVU1083 + 3262 013c 0096 str r6, [sp] + 3263 013e 2B46 mov r3, r5 + 3264 0140 0122 movs r2, #1 + 3265 0142 4FF40041 mov r1, #32768 + 3266 0146 2046 mov r0, r4 + 3267 0148 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 3268 .LVL216: +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3269 .loc 1 1661 8 view .LVU1084 + 3270 014c 30B1 cbz r0, .L227 +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3271 .loc 1 1664 7 is_stmt 1 view .LVU1085 +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3272 .loc 1 1664 11 is_stmt 0 view .LVU1086 + 3273 014e 2268 ldr r2, [r4] +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 3274 .loc 1 1664 27 view .LVU1087 + 3275 0150 5368 ldr r3, [r2, #4] + 3276 0152 43F40043 orr r3, r3, #32768 + 3277 0156 5360 str r3, [r2, #4] +1665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3278 .loc 1 1665 7 is_stmt 1 view .LVU1088 +1665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3279 .loc 1 1665 14 is_stmt 0 view .LVU1089 + 3280 0158 0120 movs r0, #1 + 3281 015a 0EE0 b .L219 + 3282 .L227: +1669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3283 .loc 1 1669 5 is_stmt 1 view .LVU1090 +1669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3284 .loc 1 1669 9 is_stmt 0 view .LVU1091 + 3285 015c 2268 ldr r2, [r4] +1669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3286 .loc 1 1669 25 view .LVU1092 + 3287 015e 5368 ldr r3, [r2, #4] + 3288 0160 43F40043 orr r3, r3, #32768 + 3289 0164 5360 str r3, [r2, #4] +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 3290 .loc 1 1671 5 is_stmt 1 view .LVU1093 +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 3291 .loc 1 1671 17 is_stmt 0 view .LVU1094 + 3292 0166 2023 movs r3, #32 + 3293 0168 84F84130 strb r3, [r4, #65] +1672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3294 .loc 1 1672 5 is_stmt 1 view .LVU1095 +1672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 208 + + + 3295 .loc 1 1672 17 is_stmt 0 view .LVU1096 + 3296 016c 0023 movs r3, #0 + 3297 016e 84F84230 strb r3, [r4, #66] +1675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3298 .loc 1 1675 5 is_stmt 1 view .LVU1097 +1675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3299 .loc 1 1675 5 view .LVU1098 + 3300 0172 84F84030 strb r3, [r4, #64] +1675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3301 .loc 1 1675 5 view .LVU1099 +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3302 .loc 1 1677 5 view .LVU1100 +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3303 .loc 1 1677 12 is_stmt 0 view .LVU1101 + 3304 0176 00E0 b .L219 + 3305 .LVL217: + 3306 .L228: +1681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3307 .loc 1 1681 12 view .LVU1102 + 3308 0178 0220 movs r0, #2 + 3309 .LVL218: + 3310 .L219: +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3311 .loc 1 1683 1 view .LVU1103 + 3312 017a 02B0 add sp, sp, #8 + 3313 .LCFI33: + 3314 .cfi_remember_state + 3315 .cfi_def_cfa_offset 24 + 3316 @ sp needed + 3317 017c BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 3318 .LVL219: + 3319 .L229: + 3320 .LCFI34: + 3321 .cfi_restore_state +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3322 .loc 1 1578 5 view .LVU1104 + 3323 0180 0220 movs r0, #2 + 3324 .LVL220: +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3325 .loc 1 1578 5 view .LVU1105 + 3326 0182 FAE7 b .L219 + 3327 .cfi_endproc + 3328 .LFE148: + 3330 .section .text.HAL_I2C_Master_Transmit_IT,"ax",%progbits + 3331 .align 1 + 3332 .global HAL_I2C_Master_Transmit_IT + 3333 .syntax unified + 3334 .thumb + 3335 .thumb_func + 3336 .fpu fpv5-d16 + 3338 HAL_I2C_Master_Transmit_IT: + 3339 .LVL221: + 3340 .LFB149: +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 3341 .loc 1 1697 1 is_stmt 1 view -0 + 3342 .cfi_startproc + 3343 @ args = 0, pretend = 0, frame = 0 + ARM GAS /tmp/ccVyGVF6.s page 209 + + + 3344 @ frame_needed = 0, uses_anonymous_args = 0 +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 3345 .loc 1 1697 1 is_stmt 0 view .LVU1107 + 3346 0000 30B5 push {r4, r5, lr} + 3347 .LCFI35: + 3348 .cfi_def_cfa_offset 12 + 3349 .cfi_offset 4, -12 + 3350 .cfi_offset 5, -8 + 3351 .cfi_offset 14, -4 + 3352 0002 83B0 sub sp, sp, #12 + 3353 .LCFI36: + 3354 .cfi_def_cfa_offset 24 + 3355 0004 0446 mov r4, r0 +1698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3356 .loc 1 1698 3 is_stmt 1 view .LVU1108 +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3357 .loc 1 1700 3 view .LVU1109 +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3358 .loc 1 1700 11 is_stmt 0 view .LVU1110 + 3359 0006 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 3360 .LVL222: +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3361 .loc 1 1700 11 view .LVU1111 + 3362 000a C0B2 uxtb r0, r0 +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3363 .loc 1 1700 6 view .LVU1112 + 3364 000c 2028 cmp r0, #32 + 3365 000e 4ED1 bne .L241 +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3366 .loc 1 1702 5 is_stmt 1 view .LVU1113 +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3367 .loc 1 1702 9 is_stmt 0 view .LVU1114 + 3368 0010 2068 ldr r0, [r4] + 3369 0012 8569 ldr r5, [r0, #24] +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3370 .loc 1 1702 8 view .LVU1115 + 3371 0014 15F4004F tst r5, #32768 + 3372 0018 4BD1 bne .L242 +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3373 .loc 1 1708 5 is_stmt 1 view .LVU1116 +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3374 .loc 1 1708 5 view .LVU1117 + 3375 001a 94F84050 ldrb r5, [r4, #64] @ zero_extendqisi2 + 3376 001e 012D cmp r5, #1 + 3377 0020 49D0 beq .L243 +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3378 .loc 1 1708 5 discriminator 2 view .LVU1118 + 3379 0022 0125 movs r5, #1 + 3380 0024 84F84050 strb r5, [r4, #64] +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3381 .loc 1 1708 5 discriminator 2 view .LVU1119 +1710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 3382 .loc 1 1710 5 discriminator 2 view .LVU1120 +1710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 3383 .loc 1 1710 23 is_stmt 0 discriminator 2 view .LVU1121 + 3384 0028 2125 movs r5, #33 + 3385 002a 84F84150 strb r5, [r4, #65] + ARM GAS /tmp/ccVyGVF6.s page 210 + + +1711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 3386 .loc 1 1711 5 is_stmt 1 discriminator 2 view .LVU1122 +1711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 3387 .loc 1 1711 23 is_stmt 0 discriminator 2 view .LVU1123 + 3388 002e 1025 movs r5, #16 + 3389 0030 84F84250 strb r5, [r4, #66] +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3390 .loc 1 1712 5 is_stmt 1 discriminator 2 view .LVU1124 +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3391 .loc 1 1712 23 is_stmt 0 discriminator 2 view .LVU1125 + 3392 0034 0025 movs r5, #0 + 3393 0036 6564 str r5, [r4, #68] +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 3394 .loc 1 1715 5 is_stmt 1 discriminator 2 view .LVU1126 +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 3395 .loc 1 1715 23 is_stmt 0 discriminator 2 view .LVU1127 + 3396 0038 6262 str r2, [r4, #36] +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 3397 .loc 1 1716 5 is_stmt 1 discriminator 2 view .LVU1128 +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 3398 .loc 1 1716 23 is_stmt 0 discriminator 2 view .LVU1129 + 3399 003a 6385 strh r3, [r4, #42] @ movhi +1717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; + 3400 .loc 1 1717 5 is_stmt 1 discriminator 2 view .LVU1130 +1717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; + 3401 .loc 1 1717 23 is_stmt 0 discriminator 2 view .LVU1131 + 3402 003c 1F4B ldr r3, .L245 + 3403 .LVL223: +1717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; + 3404 .loc 1 1717 23 discriminator 2 view .LVU1132 + 3405 003e E362 str r3, [r4, #44] + 3406 .LVL224: +1718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3407 .loc 1 1718 5 is_stmt 1 discriminator 2 view .LVU1133 +1718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3408 .loc 1 1718 23 is_stmt 0 discriminator 2 view .LVU1134 + 3409 0040 1F4B ldr r3, .L245+4 + 3410 0042 6363 str r3, [r4, #52] +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3411 .loc 1 1720 5 is_stmt 1 discriminator 2 view .LVU1135 +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3412 .loc 1 1720 13 is_stmt 0 discriminator 2 view .LVU1136 + 3413 0044 638D ldrh r3, [r4, #42] + 3414 0046 9BB2 uxth r3, r3 +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3415 .loc 1 1720 8 discriminator 2 view .LVU1137 + 3416 0048 FF2B cmp r3, #255 + 3417 004a 24D9 bls .L237 +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 3418 .loc 1 1722 7 is_stmt 1 view .LVU1138 +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 3419 .loc 1 1722 22 is_stmt 0 view .LVU1139 + 3420 004c FF23 movs r3, #255 + 3421 004e 2385 strh r3, [r4, #40] @ movhi +1723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3422 .loc 1 1723 7 is_stmt 1 view .LVU1140 + 3423 .LVL225: + ARM GAS /tmp/ccVyGVF6.s page 211 + + +1723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3424 .loc 1 1723 16 is_stmt 0 view .LVU1141 + 3425 0050 4FF08073 mov r3, #16777216 + 3426 .LVL226: + 3427 .L238: +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3428 .loc 1 1733 5 is_stmt 1 view .LVU1142 +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3429 .loc 1 1733 13 is_stmt 0 view .LVU1143 + 3430 0054 258D ldrh r5, [r4, #40] +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3431 .loc 1 1733 8 view .LVU1144 + 3432 0056 1DB3 cbz r5, .L239 +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3433 .loc 1 1737 7 is_stmt 1 view .LVU1145 +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3434 .loc 1 1737 30 is_stmt 0 view .LVU1146 + 3435 0058 1278 ldrb r2, [r2] @ zero_extendqisi2 + 3436 .LVL227: +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3437 .loc 1 1737 28 view .LVU1147 + 3438 005a 8262 str r2, [r0, #40] + 3439 .LVL228: +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3440 .loc 1 1740 7 is_stmt 1 view .LVU1148 +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3441 .loc 1 1740 11 is_stmt 0 view .LVU1149 + 3442 005c 626A ldr r2, [r4, #36] +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3443 .loc 1 1740 21 view .LVU1150 + 3444 005e 0132 adds r2, r2, #1 + 3445 0060 6262 str r2, [r4, #36] +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3446 .loc 1 1742 7 is_stmt 1 view .LVU1151 +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3447 .loc 1 1742 11 is_stmt 0 view .LVU1152 + 3448 0062 628D ldrh r2, [r4, #42] + 3449 0064 92B2 uxth r2, r2 +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3450 .loc 1 1742 22 view .LVU1153 + 3451 0066 013A subs r2, r2, #1 + 3452 0068 92B2 uxth r2, r2 + 3453 006a 6285 strh r2, [r4, #42] @ movhi +1743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3454 .loc 1 1743 7 is_stmt 1 view .LVU1154 +1743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3455 .loc 1 1743 11 is_stmt 0 view .LVU1155 + 3456 006c 228D ldrh r2, [r4, #40] +1743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3457 .loc 1 1743 21 view .LVU1156 + 3458 006e 013A subs r2, r2, #1 + 3459 0070 92B2 uxth r2, r2 + 3460 0072 2285 strh r2, [r4, #40] @ movhi +1745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 3461 .loc 1 1745 7 is_stmt 1 view .LVU1157 + 3462 0074 0132 adds r2, r2, #1 + 3463 0076 1348 ldr r0, .L245+8 + ARM GAS /tmp/ccVyGVF6.s page 212 + + + 3464 0078 0090 str r0, [sp] + 3465 007a D2B2 uxtb r2, r2 + 3466 007c 2046 mov r0, r4 + 3467 007e FFF7FEFF bl I2C_TransferConfig + 3468 .LVL229: + 3469 .L240: +1755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3470 .loc 1 1755 5 view .LVU1158 +1755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3471 .loc 1 1755 5 view .LVU1159 + 3472 0082 0025 movs r5, #0 + 3473 0084 84F84050 strb r5, [r4, #64] +1755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3474 .loc 1 1755 5 view .LVU1160 +1765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3475 .loc 1 1765 5 view .LVU1161 + 3476 0088 0121 movs r1, #1 + 3477 008a 2046 mov r0, r4 + 3478 008c FFF7FEFF bl I2C_Enable_IRQ + 3479 .LVL230: +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3480 .loc 1 1767 5 view .LVU1162 +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3481 .loc 1 1767 12 is_stmt 0 view .LVU1163 + 3482 0090 2846 mov r0, r5 + 3483 .L236: +1773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3484 .loc 1 1773 1 view .LVU1164 + 3485 0092 03B0 add sp, sp, #12 + 3486 .LCFI37: + 3487 .cfi_remember_state + 3488 .cfi_def_cfa_offset 12 + 3489 @ sp needed + 3490 0094 30BD pop {r4, r5, pc} + 3491 .LVL231: + 3492 .L237: + 3493 .LCFI38: + 3494 .cfi_restore_state +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 3495 .loc 1 1727 7 is_stmt 1 view .LVU1165 +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 3496 .loc 1 1727 28 is_stmt 0 view .LVU1166 + 3497 0096 638D ldrh r3, [r4, #42] +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 3498 .loc 1 1727 22 view .LVU1167 + 3499 0098 2385 strh r3, [r4, #40] @ movhi +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3500 .loc 1 1728 7 is_stmt 1 view .LVU1168 + 3501 .LVL232: +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3502 .loc 1 1728 16 is_stmt 0 view .LVU1169 + 3503 009a 4FF00073 mov r3, #33554432 + 3504 009e D9E7 b .L238 + 3505 .LVL233: + 3506 .L239: +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 3507 .loc 1 1750 7 is_stmt 1 view .LVU1170 + ARM GAS /tmp/ccVyGVF6.s page 213 + + + 3508 00a0 084A ldr r2, .L245+8 + 3509 .LVL234: +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 3510 .loc 1 1750 7 is_stmt 0 view .LVU1171 + 3511 00a2 0092 str r2, [sp] + 3512 .LVL235: +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 3513 .loc 1 1750 7 view .LVU1172 + 3514 00a4 EAB2 uxtb r2, r5 + 3515 00a6 2046 mov r0, r4 + 3516 00a8 FFF7FEFF bl I2C_TransferConfig + 3517 .LVL236: +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 3518 .loc 1 1750 7 view .LVU1173 + 3519 00ac E9E7 b .L240 + 3520 .LVL237: + 3521 .L241: +1771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3522 .loc 1 1771 12 view .LVU1174 + 3523 00ae 0220 movs r0, #2 + 3524 00b0 EFE7 b .L236 + 3525 .L242: +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3526 .loc 1 1704 14 view .LVU1175 + 3527 00b2 0220 movs r0, #2 + 3528 00b4 EDE7 b .L236 + 3529 .L243: +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3530 .loc 1 1708 5 view .LVU1176 + 3531 00b6 0220 movs r0, #2 + 3532 00b8 EBE7 b .L236 + 3533 .L246: + 3534 00ba 00BF .align 2 + 3535 .L245: + 3536 00bc 0000FFFF .word -65536 + 3537 00c0 00000000 .word I2C_Master_ISR_IT + 3538 00c4 00200080 .word -2147475456 + 3539 .cfi_endproc + 3540 .LFE149: + 3542 .section .text.HAL_I2C_Master_Receive_IT,"ax",%progbits + 3543 .align 1 + 3544 .global HAL_I2C_Master_Receive_IT + 3545 .syntax unified + 3546 .thumb + 3547 .thumb_func + 3548 .fpu fpv5-d16 + 3550 HAL_I2C_Master_Receive_IT: + 3551 .LVL238: + 3552 .LFB150: +1787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 3553 .loc 1 1787 1 is_stmt 1 view -0 + 3554 .cfi_startproc + 3555 @ args = 0, pretend = 0, frame = 0 + 3556 @ frame_needed = 0, uses_anonymous_args = 0 +1787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 3557 .loc 1 1787 1 is_stmt 0 view .LVU1178 + 3558 0000 30B5 push {r4, r5, lr} + ARM GAS /tmp/ccVyGVF6.s page 214 + + + 3559 .LCFI39: + 3560 .cfi_def_cfa_offset 12 + 3561 .cfi_offset 4, -12 + 3562 .cfi_offset 5, -8 + 3563 .cfi_offset 14, -4 + 3564 0002 83B0 sub sp, sp, #12 + 3565 .LCFI40: + 3566 .cfi_def_cfa_offset 24 + 3567 0004 0446 mov r4, r0 +1788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3568 .loc 1 1788 3 is_stmt 1 view .LVU1179 +1790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3569 .loc 1 1790 3 view .LVU1180 +1790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3570 .loc 1 1790 11 is_stmt 0 view .LVU1181 + 3571 0006 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 3572 .LVL239: +1790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3573 .loc 1 1790 11 view .LVU1182 + 3574 000a C0B2 uxtb r0, r0 +1790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3575 .loc 1 1790 6 view .LVU1183 + 3576 000c 2028 cmp r0, #32 + 3577 000e 37D1 bne .L251 +1792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3578 .loc 1 1792 5 is_stmt 1 view .LVU1184 +1792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3579 .loc 1 1792 9 is_stmt 0 view .LVU1185 + 3580 0010 2068 ldr r0, [r4] + 3581 0012 8069 ldr r0, [r0, #24] +1792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3582 .loc 1 1792 8 view .LVU1186 + 3583 0014 10F4004F tst r0, #32768 + 3584 0018 34D1 bne .L252 +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3585 .loc 1 1798 5 is_stmt 1 view .LVU1187 +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3586 .loc 1 1798 5 view .LVU1188 + 3587 001a 94F84000 ldrb r0, [r4, #64] @ zero_extendqisi2 + 3588 001e 0128 cmp r0, #1 + 3589 0020 32D0 beq .L253 +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3590 .loc 1 1798 5 discriminator 2 view .LVU1189 + 3591 0022 0120 movs r0, #1 + 3592 0024 84F84000 strb r0, [r4, #64] +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3593 .loc 1 1798 5 discriminator 2 view .LVU1190 +1800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 3594 .loc 1 1800 5 discriminator 2 view .LVU1191 +1800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 3595 .loc 1 1800 23 is_stmt 0 discriminator 2 view .LVU1192 + 3596 0028 2220 movs r0, #34 + 3597 002a 84F84100 strb r0, [r4, #65] +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 3598 .loc 1 1801 5 is_stmt 1 discriminator 2 view .LVU1193 +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 3599 .loc 1 1801 23 is_stmt 0 discriminator 2 view .LVU1194 + ARM GAS /tmp/ccVyGVF6.s page 215 + + + 3600 002e 1020 movs r0, #16 + 3601 0030 84F84200 strb r0, [r4, #66] +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3602 .loc 1 1802 5 is_stmt 1 discriminator 2 view .LVU1195 +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3603 .loc 1 1802 23 is_stmt 0 discriminator 2 view .LVU1196 + 3604 0034 0020 movs r0, #0 + 3605 0036 6064 str r0, [r4, #68] +1805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 3606 .loc 1 1805 5 is_stmt 1 discriminator 2 view .LVU1197 +1805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 3607 .loc 1 1805 23 is_stmt 0 discriminator 2 view .LVU1198 + 3608 0038 6262 str r2, [r4, #36] +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 3609 .loc 1 1806 5 is_stmt 1 discriminator 2 view .LVU1199 +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 3610 .loc 1 1806 23 is_stmt 0 discriminator 2 view .LVU1200 + 3611 003a 6385 strh r3, [r4, #42] @ movhi +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; + 3612 .loc 1 1807 5 is_stmt 1 discriminator 2 view .LVU1201 +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; + 3613 .loc 1 1807 23 is_stmt 0 discriminator 2 view .LVU1202 + 3614 003c 134B ldr r3, .L255 + 3615 .LVL240: +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; + 3616 .loc 1 1807 23 discriminator 2 view .LVU1203 + 3617 003e E362 str r3, [r4, #44] + 3618 .LVL241: +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3619 .loc 1 1808 5 is_stmt 1 discriminator 2 view .LVU1204 +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3620 .loc 1 1808 23 is_stmt 0 discriminator 2 view .LVU1205 + 3621 0040 134B ldr r3, .L255+4 + 3622 0042 6363 str r3, [r4, #52] +1810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3623 .loc 1 1810 5 is_stmt 1 discriminator 2 view .LVU1206 +1810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3624 .loc 1 1810 13 is_stmt 0 discriminator 2 view .LVU1207 + 3625 0044 638D ldrh r3, [r4, #42] + 3626 0046 9BB2 uxth r3, r3 +1810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3627 .loc 1 1810 8 discriminator 2 view .LVU1208 + 3628 0048 FF2B cmp r3, #255 + 3629 004a 14D9 bls .L249 +1812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 3630 .loc 1 1812 7 is_stmt 1 view .LVU1209 +1812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 3631 .loc 1 1812 22 is_stmt 0 view .LVU1210 + 3632 004c 0123 movs r3, #1 + 3633 004e 2385 strh r3, [r4, #40] @ movhi +1813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3634 .loc 1 1813 7 is_stmt 1 view .LVU1211 + 3635 .LVL242: +1813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3636 .loc 1 1813 16 is_stmt 0 view .LVU1212 + 3637 0050 4FF08073 mov r3, #16777216 + 3638 .LVL243: + ARM GAS /tmp/ccVyGVF6.s page 216 + + + 3639 .L250: +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3640 .loc 1 1823 5 is_stmt 1 view .LVU1213 + 3641 0054 0F4A ldr r2, .L255+8 + 3642 .LVL244: +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3643 .loc 1 1823 5 is_stmt 0 view .LVU1214 + 3644 0056 0092 str r2, [sp] + 3645 .LVL245: +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3646 .loc 1 1823 5 view .LVU1215 + 3647 0058 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 3648 005c 2046 mov r0, r4 + 3649 005e FFF7FEFF bl I2C_TransferConfig + 3650 .LVL246: +1826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3651 .loc 1 1826 5 is_stmt 1 view .LVU1216 +1826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3652 .loc 1 1826 5 view .LVU1217 + 3653 0062 0025 movs r5, #0 + 3654 0064 84F84050 strb r5, [r4, #64] +1826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3655 .loc 1 1826 5 view .LVU1218 +1836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3656 .loc 1 1836 5 view .LVU1219 + 3657 0068 0221 movs r1, #2 + 3658 006a 2046 mov r0, r4 + 3659 006c FFF7FEFF bl I2C_Enable_IRQ + 3660 .LVL247: +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3661 .loc 1 1838 5 view .LVU1220 +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3662 .loc 1 1838 12 is_stmt 0 view .LVU1221 + 3663 0070 2846 mov r0, r5 + 3664 .L248: +1844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3665 .loc 1 1844 1 view .LVU1222 + 3666 0072 03B0 add sp, sp, #12 + 3667 .LCFI41: + 3668 .cfi_remember_state + 3669 .cfi_def_cfa_offset 12 + 3670 @ sp needed + 3671 0074 30BD pop {r4, r5, pc} + 3672 .LVL248: + 3673 .L249: + 3674 .LCFI42: + 3675 .cfi_restore_state +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 3676 .loc 1 1817 7 is_stmt 1 view .LVU1223 +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 3677 .loc 1 1817 28 is_stmt 0 view .LVU1224 + 3678 0076 638D ldrh r3, [r4, #42] +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 3679 .loc 1 1817 22 view .LVU1225 + 3680 0078 2385 strh r3, [r4, #40] @ movhi +1818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3681 .loc 1 1818 7 is_stmt 1 view .LVU1226 + ARM GAS /tmp/ccVyGVF6.s page 217 + + + 3682 .LVL249: +1818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3683 .loc 1 1818 16 is_stmt 0 view .LVU1227 + 3684 007a 4FF00073 mov r3, #33554432 + 3685 007e E9E7 b .L250 + 3686 .LVL250: + 3687 .L251: +1842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3688 .loc 1 1842 12 view .LVU1228 + 3689 0080 0220 movs r0, #2 + 3690 0082 F6E7 b .L248 + 3691 .L252: +1794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3692 .loc 1 1794 14 view .LVU1229 + 3693 0084 0220 movs r0, #2 + 3694 0086 F4E7 b .L248 + 3695 .L253: +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3696 .loc 1 1798 5 view .LVU1230 + 3697 0088 0220 movs r0, #2 + 3698 008a F2E7 b .L248 + 3699 .L256: + 3700 .align 2 + 3701 .L255: + 3702 008c 0000FFFF .word -65536 + 3703 0090 00000000 .word I2C_Master_ISR_IT + 3704 0094 00240080 .word -2147474432 + 3705 .cfi_endproc + 3706 .LFE150: + 3708 .section .text.HAL_I2C_Slave_Transmit_IT,"ax",%progbits + 3709 .align 1 + 3710 .global HAL_I2C_Slave_Transmit_IT + 3711 .syntax unified + 3712 .thumb + 3713 .thumb_func + 3714 .fpu fpv5-d16 + 3716 HAL_I2C_Slave_Transmit_IT: + 3717 .LVL251: + 3718 .LFB151: +1855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) + 3719 .loc 1 1855 1 is_stmt 1 view -0 + 3720 .cfi_startproc + 3721 @ args = 0, pretend = 0, frame = 0 + 3722 @ frame_needed = 0, uses_anonymous_args = 0 +1856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3723 .loc 1 1856 3 view .LVU1232 +1856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3724 .loc 1 1856 11 is_stmt 0 view .LVU1233 + 3725 0000 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 3726 0004 DBB2 uxtb r3, r3 +1856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3727 .loc 1 1856 6 view .LVU1234 + 3728 0006 202B cmp r3, #32 + 3729 0008 38D1 bne .L260 +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3730 .loc 1 1859 5 is_stmt 1 view .LVU1235 +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 218 + + + 3731 .loc 1 1859 5 view .LVU1236 + 3732 000a 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 3733 000e 012B cmp r3, #1 + 3734 0010 36D0 beq .L261 +1855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) + 3735 .loc 1 1855 1 is_stmt 0 discriminator 2 view .LVU1237 + 3736 0012 10B5 push {r4, lr} + 3737 .LCFI43: + 3738 .cfi_def_cfa_offset 8 + 3739 .cfi_offset 4, -8 + 3740 .cfi_offset 14, -4 +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3741 .loc 1 1859 5 is_stmt 1 discriminator 2 view .LVU1238 + 3742 0014 0123 movs r3, #1 + 3743 0016 80F84030 strb r3, [r0, #64] +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3744 .loc 1 1859 5 discriminator 2 view .LVU1239 +1861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 3745 .loc 1 1861 5 discriminator 2 view .LVU1240 +1861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 3746 .loc 1 1861 23 is_stmt 0 discriminator 2 view .LVU1241 + 3747 001a 2123 movs r3, #33 + 3748 001c 80F84130 strb r3, [r0, #65] +1862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 3749 .loc 1 1862 5 is_stmt 1 discriminator 2 view .LVU1242 +1862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 3750 .loc 1 1862 23 is_stmt 0 discriminator 2 view .LVU1243 + 3751 0020 2023 movs r3, #32 + 3752 0022 80F84230 strb r3, [r0, #66] +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3753 .loc 1 1863 5 is_stmt 1 discriminator 2 view .LVU1244 +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3754 .loc 1 1863 23 is_stmt 0 discriminator 2 view .LVU1245 + 3755 0026 0023 movs r3, #0 + 3756 0028 4364 str r3, [r0, #68] +1866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3757 .loc 1 1866 5 is_stmt 1 discriminator 2 view .LVU1246 +1866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3758 .loc 1 1866 9 is_stmt 0 discriminator 2 view .LVU1247 + 3759 002a 0468 ldr r4, [r0] +1866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3760 .loc 1 1866 25 discriminator 2 view .LVU1248 + 3761 002c 6368 ldr r3, [r4, #4] + 3762 002e 23F40043 bic r3, r3, #32768 + 3763 0032 6360 str r3, [r4, #4] +1869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 3764 .loc 1 1869 5 is_stmt 1 discriminator 2 view .LVU1249 +1869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 3765 .loc 1 1869 23 is_stmt 0 discriminator 2 view .LVU1250 + 3766 0034 4162 str r1, [r0, #36] +1870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 3767 .loc 1 1870 5 is_stmt 1 discriminator 2 view .LVU1251 +1870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 3768 .loc 1 1870 23 is_stmt 0 discriminator 2 view .LVU1252 + 3769 0036 4285 strh r2, [r0, #42] @ movhi +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 3770 .loc 1 1871 5 is_stmt 1 discriminator 2 view .LVU1253 + ARM GAS /tmp/ccVyGVF6.s page 219 + + +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 3771 .loc 1 1871 29 is_stmt 0 discriminator 2 view .LVU1254 + 3772 0038 438D ldrh r3, [r0, #42] +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 3773 .loc 1 1871 23 discriminator 2 view .LVU1255 + 3774 003a 0385 strh r3, [r0, #40] @ movhi +1872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 3775 .loc 1 1872 5 is_stmt 1 discriminator 2 view .LVU1256 +1872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 3776 .loc 1 1872 23 is_stmt 0 discriminator 2 view .LVU1257 + 3777 003c 114B ldr r3, .L267 + 3778 003e C362 str r3, [r0, #44] +1873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3779 .loc 1 1873 5 is_stmt 1 discriminator 2 view .LVU1258 +1873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3780 .loc 1 1873 23 is_stmt 0 discriminator 2 view .LVU1259 + 3781 0040 114B ldr r3, .L267+4 + 3782 0042 4363 str r3, [r0, #52] +1876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3783 .loc 1 1876 5 is_stmt 1 discriminator 2 view .LVU1260 +1876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3784 .loc 1 1876 19 is_stmt 0 discriminator 2 view .LVU1261 + 3785 0044 036A ldr r3, [r0, #32] +1876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3786 .loc 1 1876 8 discriminator 2 view .LVU1262 + 3787 0046 B3F5003F cmp r3, #131072 + 3788 004a 08D0 beq .L266 + 3789 .LVL252: + 3790 .L259: +1890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3791 .loc 1 1890 5 is_stmt 1 view .LVU1263 +1890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3792 .loc 1 1890 5 view .LVU1264 + 3793 004c 0024 movs r4, #0 + 3794 004e 80F84040 strb r4, [r0, #64] +1890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3795 .loc 1 1890 5 view .LVU1265 +1900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3796 .loc 1 1900 5 view .LVU1266 + 3797 0052 48F20101 movw r1, #32769 + 3798 .LVL253: +1900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3799 .loc 1 1900 5 is_stmt 0 view .LVU1267 + 3800 0056 FFF7FEFF bl I2C_Enable_IRQ + 3801 .LVL254: +1902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3802 .loc 1 1902 5 is_stmt 1 view .LVU1268 +1902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3803 .loc 1 1902 12 is_stmt 0 view .LVU1269 + 3804 005a 2046 mov r0, r4 +1908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3805 .loc 1 1908 1 view .LVU1270 + 3806 005c 10BD pop {r4, pc} + 3807 .LVL255: + 3808 .L266: +1880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3809 .loc 1 1880 7 is_stmt 1 view .LVU1271 + ARM GAS /tmp/ccVyGVF6.s page 220 + + +1880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3810 .loc 1 1880 11 is_stmt 0 view .LVU1272 + 3811 005e 0368 ldr r3, [r0] +1880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3812 .loc 1 1880 30 view .LVU1273 + 3813 0060 0A78 ldrb r2, [r1] @ zero_extendqisi2 + 3814 .LVL256: +1880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3815 .loc 1 1880 28 view .LVU1274 + 3816 0062 9A62 str r2, [r3, #40] +1883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3817 .loc 1 1883 7 is_stmt 1 view .LVU1275 +1883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3818 .loc 1 1883 11 is_stmt 0 view .LVU1276 + 3819 0064 436A ldr r3, [r0, #36] +1883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3820 .loc 1 1883 21 view .LVU1277 + 3821 0066 0133 adds r3, r3, #1 + 3822 0068 4362 str r3, [r0, #36] +1885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3823 .loc 1 1885 7 is_stmt 1 view .LVU1278 +1885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3824 .loc 1 1885 11 is_stmt 0 view .LVU1279 + 3825 006a 438D ldrh r3, [r0, #42] + 3826 006c 9BB2 uxth r3, r3 +1885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 3827 .loc 1 1885 22 view .LVU1280 + 3828 006e 013B subs r3, r3, #1 + 3829 0070 9BB2 uxth r3, r3 + 3830 0072 4385 strh r3, [r0, #42] @ movhi +1886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3831 .loc 1 1886 7 is_stmt 1 view .LVU1281 +1886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3832 .loc 1 1886 11 is_stmt 0 view .LVU1282 + 3833 0074 038D ldrh r3, [r0, #40] +1886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3834 .loc 1 1886 21 view .LVU1283 + 3835 0076 013B subs r3, r3, #1 + 3836 0078 0385 strh r3, [r0, #40] @ movhi + 3837 007a E7E7 b .L259 + 3838 .LVL257: + 3839 .L260: + 3840 .LCFI44: + 3841 .cfi_def_cfa_offset 0 + 3842 .cfi_restore 4 + 3843 .cfi_restore 14 +1906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3844 .loc 1 1906 12 view .LVU1284 + 3845 007c 0220 movs r0, #2 + 3846 .LVL258: +1906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3847 .loc 1 1906 12 view .LVU1285 + 3848 007e 7047 bx lr + 3849 .LVL259: + 3850 .L261: +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3851 .loc 1 1859 5 view .LVU1286 + ARM GAS /tmp/ccVyGVF6.s page 221 + + + 3852 0080 0220 movs r0, #2 + 3853 .LVL260: +1908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3854 .loc 1 1908 1 view .LVU1287 + 3855 0082 7047 bx lr + 3856 .L268: + 3857 .align 2 + 3858 .L267: + 3859 0084 0000FFFF .word -65536 + 3860 0088 00000000 .word I2C_Slave_ISR_IT + 3861 .cfi_endproc + 3862 .LFE151: + 3864 .section .text.HAL_I2C_Slave_Receive_IT,"ax",%progbits + 3865 .align 1 + 3866 .global HAL_I2C_Slave_Receive_IT + 3867 .syntax unified + 3868 .thumb + 3869 .thumb_func + 3870 .fpu fpv5-d16 + 3872 HAL_I2C_Slave_Receive_IT: + 3873 .LVL261: + 3874 .LFB152: +1919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) + 3875 .loc 1 1919 1 is_stmt 1 view -0 + 3876 .cfi_startproc + 3877 @ args = 0, pretend = 0, frame = 0 + 3878 @ frame_needed = 0, uses_anonymous_args = 0 +1919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) + 3879 .loc 1 1919 1 is_stmt 0 view .LVU1289 + 3880 0000 38B5 push {r3, r4, r5, lr} + 3881 .LCFI45: + 3882 .cfi_def_cfa_offset 16 + 3883 .cfi_offset 3, -16 + 3884 .cfi_offset 4, -12 + 3885 .cfi_offset 5, -8 + 3886 .cfi_offset 14, -4 +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3887 .loc 1 1920 3 is_stmt 1 view .LVU1290 +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3888 .loc 1 1920 11 is_stmt 0 view .LVU1291 + 3889 0002 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 3890 0006 DBB2 uxtb r3, r3 +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 3891 .loc 1 1920 6 view .LVU1292 + 3892 0008 202B cmp r3, #32 + 3893 000a 23D1 bne .L271 +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3894 .loc 1 1923 5 is_stmt 1 view .LVU1293 +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3895 .loc 1 1923 5 view .LVU1294 + 3896 000c 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 3897 0010 012B cmp r3, #1 + 3898 0012 21D0 beq .L272 +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3899 .loc 1 1923 5 discriminator 2 view .LVU1295 + 3900 0014 0123 movs r3, #1 + 3901 0016 80F84030 strb r3, [r0, #64] + ARM GAS /tmp/ccVyGVF6.s page 222 + + +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3902 .loc 1 1923 5 discriminator 2 view .LVU1296 +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 3903 .loc 1 1925 5 discriminator 2 view .LVU1297 +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 3904 .loc 1 1925 23 is_stmt 0 discriminator 2 view .LVU1298 + 3905 001a 2223 movs r3, #34 + 3906 001c 80F84130 strb r3, [r0, #65] +1926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 3907 .loc 1 1926 5 is_stmt 1 discriminator 2 view .LVU1299 +1926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 3908 .loc 1 1926 23 is_stmt 0 discriminator 2 view .LVU1300 + 3909 0020 2023 movs r3, #32 + 3910 0022 80F84230 strb r3, [r0, #66] +1927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3911 .loc 1 1927 5 is_stmt 1 discriminator 2 view .LVU1301 +1927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3912 .loc 1 1927 23 is_stmt 0 discriminator 2 view .LVU1302 + 3913 0026 0024 movs r4, #0 + 3914 0028 4464 str r4, [r0, #68] +1930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3915 .loc 1 1930 5 is_stmt 1 discriminator 2 view .LVU1303 +1930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3916 .loc 1 1930 9 is_stmt 0 discriminator 2 view .LVU1304 + 3917 002a 0568 ldr r5, [r0] +1930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3918 .loc 1 1930 25 discriminator 2 view .LVU1305 + 3919 002c 6B68 ldr r3, [r5, #4] + 3920 002e 23F40043 bic r3, r3, #32768 + 3921 0032 6B60 str r3, [r5, #4] +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 3922 .loc 1 1933 5 is_stmt 1 discriminator 2 view .LVU1306 +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 3923 .loc 1 1933 23 is_stmt 0 discriminator 2 view .LVU1307 + 3924 0034 4162 str r1, [r0, #36] +1934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 3925 .loc 1 1934 5 is_stmt 1 discriminator 2 view .LVU1308 +1934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 3926 .loc 1 1934 23 is_stmt 0 discriminator 2 view .LVU1309 + 3927 0036 4285 strh r2, [r0, #42] @ movhi +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 3928 .loc 1 1935 5 is_stmt 1 discriminator 2 view .LVU1310 +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 3929 .loc 1 1935 29 is_stmt 0 discriminator 2 view .LVU1311 + 3930 0038 438D ldrh r3, [r0, #42] +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 3931 .loc 1 1935 23 discriminator 2 view .LVU1312 + 3932 003a 0385 strh r3, [r0, #40] @ movhi +1936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 3933 .loc 1 1936 5 is_stmt 1 discriminator 2 view .LVU1313 +1936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 3934 .loc 1 1936 23 is_stmt 0 discriminator 2 view .LVU1314 + 3935 003c 074B ldr r3, .L274 + 3936 003e C362 str r3, [r0, #44] +1937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3937 .loc 1 1937 5 is_stmt 1 discriminator 2 view .LVU1315 +1937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 223 + + + 3938 .loc 1 1937 23 is_stmt 0 discriminator 2 view .LVU1316 + 3939 0040 074B ldr r3, .L274+4 + 3940 0042 4363 str r3, [r0, #52] +1940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3941 .loc 1 1940 5 is_stmt 1 discriminator 2 view .LVU1317 +1940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3942 .loc 1 1940 5 discriminator 2 view .LVU1318 + 3943 0044 80F84040 strb r4, [r0, #64] +1940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3944 .loc 1 1940 5 discriminator 2 view .LVU1319 +1950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3945 .loc 1 1950 5 discriminator 2 view .LVU1320 + 3946 0048 48F20201 movw r1, #32770 + 3947 .LVL262: +1950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3948 .loc 1 1950 5 is_stmt 0 discriminator 2 view .LVU1321 + 3949 004c FFF7FEFF bl I2C_Enable_IRQ + 3950 .LVL263: +1952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3951 .loc 1 1952 5 is_stmt 1 discriminator 2 view .LVU1322 +1952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3952 .loc 1 1952 12 is_stmt 0 discriminator 2 view .LVU1323 + 3953 0050 2046 mov r0, r4 + 3954 .L270: +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3955 .loc 1 1958 1 view .LVU1324 + 3956 0052 38BD pop {r3, r4, r5, pc} + 3957 .LVL264: + 3958 .L271: +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3959 .loc 1 1956 12 view .LVU1325 + 3960 0054 0220 movs r0, #2 + 3961 .LVL265: +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 3962 .loc 1 1956 12 view .LVU1326 + 3963 0056 FCE7 b .L270 + 3964 .LVL266: + 3965 .L272: +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3966 .loc 1 1923 5 view .LVU1327 + 3967 0058 0220 movs r0, #2 + 3968 .LVL267: +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 3969 .loc 1 1923 5 view .LVU1328 + 3970 005a FAE7 b .L270 + 3971 .L275: + 3972 .align 2 + 3973 .L274: + 3974 005c 0000FFFF .word -65536 + 3975 0060 00000000 .word I2C_Slave_ISR_IT + 3976 .cfi_endproc + 3977 .LFE152: + 3979 .section .text.HAL_I2C_Master_Transmit_DMA,"ax",%progbits + 3980 .align 1 + 3981 .global HAL_I2C_Master_Transmit_DMA + 3982 .syntax unified + 3983 .thumb + ARM GAS /tmp/ccVyGVF6.s page 224 + + + 3984 .thumb_func + 3985 .fpu fpv5-d16 + 3987 HAL_I2C_Master_Transmit_DMA: + 3988 .LVL268: + 3989 .LFB153: +1972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 3990 .loc 1 1972 1 is_stmt 1 view -0 + 3991 .cfi_startproc + 3992 @ args = 0, pretend = 0, frame = 0 + 3993 @ frame_needed = 0, uses_anonymous_args = 0 +1972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 3994 .loc 1 1972 1 is_stmt 0 view .LVU1330 + 3995 0000 70B5 push {r4, r5, r6, lr} + 3996 .LCFI46: + 3997 .cfi_def_cfa_offset 16 + 3998 .cfi_offset 4, -16 + 3999 .cfi_offset 5, -12 + 4000 .cfi_offset 6, -8 + 4001 .cfi_offset 14, -4 + 4002 0002 82B0 sub sp, sp, #8 + 4003 .LCFI47: + 4004 .cfi_def_cfa_offset 24 + 4005 0004 0446 mov r4, r0 +1973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 4006 .loc 1 1973 3 is_stmt 1 view .LVU1331 +1974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; + 4007 .loc 1 1974 3 view .LVU1332 +1975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4008 .loc 1 1975 3 view .LVU1333 + 4009 .LVL269: +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4010 .loc 1 1977 3 view .LVU1334 +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4011 .loc 1 1977 11 is_stmt 0 view .LVU1335 + 4012 0006 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 4013 .LVL270: +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4014 .loc 1 1977 11 view .LVU1336 + 4015 000a C0B2 uxtb r0, r0 +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4016 .loc 1 1977 6 view .LVU1337 + 4017 000c 2028 cmp r0, #32 + 4018 000e 40F09D80 bne .L286 + 4019 0012 0D46 mov r5, r1 +1979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4020 .loc 1 1979 5 is_stmt 1 view .LVU1338 +1979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4021 .loc 1 1979 9 is_stmt 0 view .LVU1339 + 4022 0014 2068 ldr r0, [r4] + 4023 0016 8169 ldr r1, [r0, #24] + 4024 .LVL271: +1979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4025 .loc 1 1979 8 view .LVU1340 + 4026 0018 11F40041 ands r1, r1, #32768 + 4027 001c 40F09980 bne .L287 +1985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4028 .loc 1 1985 5 is_stmt 1 view .LVU1341 + ARM GAS /tmp/ccVyGVF6.s page 225 + + +1985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4029 .loc 1 1985 5 view .LVU1342 + 4030 0020 94F84060 ldrb r6, [r4, #64] @ zero_extendqisi2 + 4031 0024 012E cmp r6, #1 + 4032 0026 00F09680 beq .L288 +1985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4033 .loc 1 1985 5 discriminator 2 view .LVU1343 + 4034 002a 0126 movs r6, #1 + 4035 002c 84F84060 strb r6, [r4, #64] +1985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4036 .loc 1 1985 5 discriminator 2 view .LVU1344 +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 4037 .loc 1 1987 5 discriminator 2 view .LVU1345 +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 4038 .loc 1 1987 23 is_stmt 0 discriminator 2 view .LVU1346 + 4039 0030 2126 movs r6, #33 + 4040 0032 84F84160 strb r6, [r4, #65] +1988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 4041 .loc 1 1988 5 is_stmt 1 discriminator 2 view .LVU1347 +1988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 4042 .loc 1 1988 23 is_stmt 0 discriminator 2 view .LVU1348 + 4043 0036 1026 movs r6, #16 + 4044 0038 84F84260 strb r6, [r4, #66] +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4045 .loc 1 1989 5 is_stmt 1 discriminator 2 view .LVU1349 +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4046 .loc 1 1989 23 is_stmt 0 discriminator 2 view .LVU1350 + 4047 003c 0026 movs r6, #0 + 4048 003e 6664 str r6, [r4, #68] +1992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 4049 .loc 1 1992 5 is_stmt 1 discriminator 2 view .LVU1351 +1992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 4050 .loc 1 1992 23 is_stmt 0 discriminator 2 view .LVU1352 + 4051 0040 6262 str r2, [r4, #36] +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 4052 .loc 1 1993 5 is_stmt 1 discriminator 2 view .LVU1353 +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 4053 .loc 1 1993 23 is_stmt 0 discriminator 2 view .LVU1354 + 4054 0042 6385 strh r3, [r4, #42] @ movhi +1994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; + 4055 .loc 1 1994 5 is_stmt 1 discriminator 2 view .LVU1355 +1994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; + 4056 .loc 1 1994 23 is_stmt 0 discriminator 2 view .LVU1356 + 4057 0044 454B ldr r3, .L292 + 4058 .LVL272: +1994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; + 4059 .loc 1 1994 23 discriminator 2 view .LVU1357 + 4060 0046 E362 str r3, [r4, #44] + 4061 .LVL273: +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4062 .loc 1 1995 5 is_stmt 1 discriminator 2 view .LVU1358 +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4063 .loc 1 1995 23 is_stmt 0 discriminator 2 view .LVU1359 + 4064 0048 454B ldr r3, .L292+4 + 4065 004a 6363 str r3, [r4, #52] +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4066 .loc 1 1997 5 is_stmt 1 discriminator 2 view .LVU1360 + ARM GAS /tmp/ccVyGVF6.s page 226 + + +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4067 .loc 1 1997 13 is_stmt 0 discriminator 2 view .LVU1361 + 4068 004c 638D ldrh r3, [r4, #42] + 4069 004e 9BB2 uxth r3, r3 +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4070 .loc 1 1997 8 discriminator 2 view .LVU1362 + 4071 0050 FF2B cmp r3, #255 + 4072 0052 37D9 bls .L278 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 4073 .loc 1 1999 7 is_stmt 1 view .LVU1363 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 4074 .loc 1 1999 22 is_stmt 0 view .LVU1364 + 4075 0054 FF23 movs r3, #255 + 4076 0056 2385 strh r3, [r4, #40] @ movhi +2000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4077 .loc 1 2000 7 is_stmt 1 view .LVU1365 + 4078 .LVL274: +2000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4079 .loc 1 2000 16 is_stmt 0 view .LVU1366 + 4080 0058 4FF08076 mov r6, #16777216 + 4081 .LVL275: + 4082 .L279: +2008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4083 .loc 1 2008 5 is_stmt 1 view .LVU1367 +2008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4084 .loc 1 2008 13 is_stmt 0 view .LVU1368 + 4085 005c 238D ldrh r3, [r4, #40] +2008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4086 .loc 1 2008 8 view .LVU1369 + 4087 005e 63B1 cbz r3, .L280 +2012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4088 .loc 1 2012 7 is_stmt 1 view .LVU1370 +2012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4089 .loc 1 2012 30 is_stmt 0 view .LVU1371 + 4090 0060 1378 ldrb r3, [r2] @ zero_extendqisi2 +2012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4091 .loc 1 2012 28 view .LVU1372 + 4092 0062 8362 str r3, [r0, #40] +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4093 .loc 1 2015 7 is_stmt 1 view .LVU1373 +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4094 .loc 1 2015 11 is_stmt 0 view .LVU1374 + 4095 0064 636A ldr r3, [r4, #36] +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4096 .loc 1 2015 21 view .LVU1375 + 4097 0066 0133 adds r3, r3, #1 + 4098 0068 6362 str r3, [r4, #36] +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 4099 .loc 1 2017 7 is_stmt 1 view .LVU1376 +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 4100 .loc 1 2017 24 is_stmt 0 view .LVU1377 + 4101 006a 218D ldrh r1, [r4, #40] + 4102 .LVL276: +2018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 4103 .loc 1 2018 7 is_stmt 1 view .LVU1378 +2018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 4104 .loc 1 2018 11 is_stmt 0 view .LVU1379 + ARM GAS /tmp/ccVyGVF6.s page 227 + + + 4105 006c 638D ldrh r3, [r4, #42] + 4106 006e 9BB2 uxth r3, r3 +2018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 4107 .loc 1 2018 22 view .LVU1380 + 4108 0070 013B subs r3, r3, #1 + 4109 0072 9BB2 uxth r3, r3 + 4110 0074 6385 strh r3, [r4, #42] @ movhi +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4111 .loc 1 2019 7 is_stmt 1 view .LVU1381 +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4112 .loc 1 2019 21 is_stmt 0 view .LVU1382 + 4113 0076 4B1E subs r3, r1, #1 + 4114 0078 2385 strh r3, [r4, #40] @ movhi + 4115 .LVL277: + 4116 .L280: +2022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4117 .loc 1 2022 5 is_stmt 1 view .LVU1383 +2022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4118 .loc 1 2022 13 is_stmt 0 view .LVU1384 + 4119 007a 238D ldrh r3, [r4, #40] +2022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4120 .loc 1 2022 8 view .LVU1385 + 4121 007c 002B cmp r3, #0 + 4122 007e 51D0 beq .L281 +2024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4123 .loc 1 2024 7 is_stmt 1 view .LVU1386 +2024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4124 .loc 1 2024 15 is_stmt 0 view .LVU1387 + 4125 0080 A36B ldr r3, [r4, #56] +2024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4126 .loc 1 2024 10 view .LVU1388 + 4127 0082 23B3 cbz r3, .L282 +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4128 .loc 1 2027 9 is_stmt 1 view .LVU1389 +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4129 .loc 1 2027 40 is_stmt 0 view .LVU1390 + 4130 0084 374A ldr r2, .L292+8 + 4131 .LVL278: +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4132 .loc 1 2027 40 view .LVU1391 + 4133 0086 DA63 str r2, [r3, #60] +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4134 .loc 1 2030 9 is_stmt 1 view .LVU1392 +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4135 .loc 1 2030 13 is_stmt 0 view .LVU1393 + 4136 0088 A36B ldr r3, [r4, #56] +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4137 .loc 1 2030 41 view .LVU1394 + 4138 008a 374A ldr r2, .L292+12 + 4139 008c DA64 str r2, [r3, #76] +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 4140 .loc 1 2033 9 is_stmt 1 view .LVU1395 +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 4141 .loc 1 2033 13 is_stmt 0 view .LVU1396 + 4142 008e A26B ldr r2, [r4, #56] +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 4143 .loc 1 2033 44 view .LVU1397 + ARM GAS /tmp/ccVyGVF6.s page 228 + + + 4144 0090 0023 movs r3, #0 + 4145 0092 1364 str r3, [r2, #64] +2034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4146 .loc 1 2034 9 is_stmt 1 view .LVU1398 +2034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4147 .loc 1 2034 13 is_stmt 0 view .LVU1399 + 4148 0094 A26B ldr r2, [r4, #56] +2034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4149 .loc 1 2034 41 view .LVU1400 + 4150 0096 1365 str r3, [r2, #80] +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); + 4151 .loc 1 2037 9 is_stmt 1 view .LVU1401 +2038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4152 .loc 1 2038 57 is_stmt 0 view .LVU1402 + 4153 0098 2268 ldr r2, [r4] +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); + 4154 .loc 1 2037 25 view .LVU1403 + 4155 009a 238D ldrh r3, [r4, #40] + 4156 009c 2832 adds r2, r2, #40 + 4157 009e 616A ldr r1, [r4, #36] + 4158 .LVL279: +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); + 4159 .loc 1 2037 25 view .LVU1404 + 4160 00a0 A06B ldr r0, [r4, #56] + 4161 00a2 FFF7FEFF bl HAL_DMA_Start_IT + 4162 .LVL280: +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4163 .loc 1 2055 7 is_stmt 1 view .LVU1405 +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4164 .loc 1 2055 10 is_stmt 0 view .LVU1406 + 4165 00a6 00B3 cbz r0, .L291 +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4166 .loc 1 2080 9 is_stmt 1 view .LVU1407 +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4167 .loc 1 2080 25 is_stmt 0 view .LVU1408 + 4168 00a8 2023 movs r3, #32 + 4169 00aa 84F84130 strb r3, [r4, #65] +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4170 .loc 1 2081 9 is_stmt 1 view .LVU1409 +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4171 .loc 1 2081 25 is_stmt 0 view .LVU1410 + 4172 00ae 0022 movs r2, #0 + 4173 00b0 84F84220 strb r2, [r4, #66] +2084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4174 .loc 1 2084 9 is_stmt 1 view .LVU1411 +2084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4175 .loc 1 2084 25 is_stmt 0 view .LVU1412 + 4176 00b4 636C ldr r3, [r4, #68] + 4177 00b6 43F01003 orr r3, r3, #16 + 4178 00ba 6364 str r3, [r4, #68] +2087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4179 .loc 1 2087 9 is_stmt 1 view .LVU1413 +2087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4180 .loc 1 2087 9 view .LVU1414 + 4181 00bc 84F84020 strb r2, [r4, #64] +2087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4182 .loc 1 2087 9 view .LVU1415 + ARM GAS /tmp/ccVyGVF6.s page 229 + + +2089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4183 .loc 1 2089 9 view .LVU1416 +2089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4184 .loc 1 2089 16 is_stmt 0 view .LVU1417 + 4185 00c0 0120 movs r0, #1 + 4186 .LVL281: +2089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4187 .loc 1 2089 16 view .LVU1418 + 4188 00c2 44E0 b .L277 + 4189 .LVL282: + 4190 .L278: +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 4191 .loc 1 2004 7 is_stmt 1 view .LVU1419 +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 4192 .loc 1 2004 28 is_stmt 0 view .LVU1420 + 4193 00c4 638D ldrh r3, [r4, #42] +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 4194 .loc 1 2004 22 view .LVU1421 + 4195 00c6 2385 strh r3, [r4, #40] @ movhi +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4196 .loc 1 2005 7 is_stmt 1 view .LVU1422 + 4197 .LVL283: +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4198 .loc 1 2005 16 is_stmt 0 view .LVU1423 + 4199 00c8 4FF00076 mov r6, #33554432 + 4200 00cc C6E7 b .L279 + 4201 .LVL284: + 4202 .L282: +2043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4203 .loc 1 2043 9 is_stmt 1 view .LVU1424 +2043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4204 .loc 1 2043 25 is_stmt 0 view .LVU1425 + 4205 00ce 2023 movs r3, #32 + 4206 00d0 84F84130 strb r3, [r4, #65] +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4207 .loc 1 2044 9 is_stmt 1 view .LVU1426 +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4208 .loc 1 2044 25 is_stmt 0 view .LVU1427 + 4209 00d4 0022 movs r2, #0 + 4210 .LVL285: +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4211 .loc 1 2044 25 view .LVU1428 + 4212 00d6 84F84220 strb r2, [r4, #66] +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4213 .loc 1 2047 9 is_stmt 1 view .LVU1429 +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4214 .loc 1 2047 25 is_stmt 0 view .LVU1430 + 4215 00da 636C ldr r3, [r4, #68] + 4216 00dc 43F08003 orr r3, r3, #128 + 4217 00e0 6364 str r3, [r4, #68] +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4218 .loc 1 2050 9 is_stmt 1 view .LVU1431 +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4219 .loc 1 2050 9 view .LVU1432 + 4220 00e2 84F84020 strb r2, [r4, #64] +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4221 .loc 1 2050 9 view .LVU1433 + ARM GAS /tmp/ccVyGVF6.s page 230 + + +2052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4222 .loc 1 2052 9 view .LVU1434 +2052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4223 .loc 1 2052 16 is_stmt 0 view .LVU1435 + 4224 00e6 0120 movs r0, #1 + 4225 00e8 31E0 b .L277 + 4226 .LVL286: + 4227 .L291: +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode, I2C_GENERATE_START_WRITE); + 4228 .loc 1 2059 9 is_stmt 1 view .LVU1436 +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode, I2C_GENERATE_START_WRITE); + 4229 .loc 1 2059 60 is_stmt 0 view .LVU1437 + 4230 00ea 228D ldrh r2, [r4, #40] +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode, I2C_GENERATE_START_WRITE); + 4231 .loc 1 2059 9 view .LVU1438 + 4232 00ec 0132 adds r2, r2, #1 + 4233 00ee 1F4B ldr r3, .L292+16 + 4234 00f0 0093 str r3, [sp] + 4235 00f2 3346 mov r3, r6 + 4236 00f4 D2B2 uxtb r2, r2 + 4237 00f6 2946 mov r1, r5 + 4238 00f8 2046 mov r0, r4 + 4239 .LVL287: +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode, I2C_GENERATE_START_WRITE); + 4240 .loc 1 2059 9 view .LVU1439 + 4241 00fa FFF7FEFF bl I2C_TransferConfig + 4242 .LVL288: +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4243 .loc 1 2063 9 is_stmt 1 view .LVU1440 +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4244 .loc 1 2063 25 is_stmt 0 view .LVU1441 + 4245 00fe 638D ldrh r3, [r4, #42] + 4246 0100 9BB2 uxth r3, r3 +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4247 .loc 1 2063 32 view .LVU1442 + 4248 0102 228D ldrh r2, [r4, #40] +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4249 .loc 1 2063 25 view .LVU1443 + 4250 0104 9B1A subs r3, r3, r2 + 4251 0106 9BB2 uxth r3, r3 + 4252 0108 6385 strh r3, [r4, #42] @ movhi +2066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4253 .loc 1 2066 9 is_stmt 1 view .LVU1444 +2066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4254 .loc 1 2066 9 view .LVU1445 + 4255 010a 0023 movs r3, #0 + 4256 010c 84F84030 strb r3, [r4, #64] +2066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4257 .loc 1 2066 9 view .LVU1446 +2072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4258 .loc 1 2072 9 view .LVU1447 + 4259 0110 1021 movs r1, #16 + 4260 0112 2046 mov r0, r4 + 4261 0114 FFF7FEFF bl I2C_Enable_IRQ + 4262 .LVL289: +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4263 .loc 1 2075 9 view .LVU1448 + ARM GAS /tmp/ccVyGVF6.s page 231 + + +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4264 .loc 1 2075 13 is_stmt 0 view .LVU1449 + 4265 0118 2268 ldr r2, [r4] +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4266 .loc 1 2075 29 view .LVU1450 + 4267 011a 1368 ldr r3, [r2] + 4268 011c 43F48043 orr r3, r3, #16384 + 4269 0120 1360 str r3, [r2] + 4270 0122 11E0 b .L285 + 4271 .LVL290: + 4272 .L281: +2095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4273 .loc 1 2095 7 is_stmt 1 view .LVU1451 +2095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4274 .loc 1 2095 21 is_stmt 0 view .LVU1452 + 4275 0124 124B ldr r3, .L292+20 + 4276 0126 6363 str r3, [r4, #52] +2099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 4277 .loc 1 2099 7 is_stmt 1 view .LVU1453 + 4278 0128 104B ldr r3, .L292+16 + 4279 012a 0093 str r3, [sp] + 4280 012c 4FF00073 mov r3, #33554432 + 4281 0130 CAB2 uxtb r2, r1 + 4282 .LVL291: +2099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 4283 .loc 1 2099 7 is_stmt 0 view .LVU1454 + 4284 0132 2946 mov r1, r5 + 4285 .LVL292: +2099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_WRITE); + 4286 .loc 1 2099 7 view .LVU1455 + 4287 0134 2046 mov r0, r4 + 4288 0136 FFF7FEFF bl I2C_TransferConfig + 4289 .LVL293: +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4290 .loc 1 2103 7 is_stmt 1 view .LVU1456 +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4291 .loc 1 2103 7 view .LVU1457 + 4292 013a 0023 movs r3, #0 + 4293 013c 84F84030 strb r3, [r4, #64] +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4294 .loc 1 2103 7 view .LVU1458 +2112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4295 .loc 1 2112 7 view .LVU1459 + 4296 0140 0121 movs r1, #1 + 4297 0142 2046 mov r0, r4 + 4298 0144 FFF7FEFF bl I2C_Enable_IRQ + 4299 .LVL294: + 4300 .L285: +2115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4301 .loc 1 2115 5 view .LVU1460 +2115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4302 .loc 1 2115 12 is_stmt 0 view .LVU1461 + 4303 0148 0020 movs r0, #0 + 4304 014a 00E0 b .L277 + 4305 .LVL295: + 4306 .L286: +2119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 232 + + + 4307 .loc 1 2119 12 view .LVU1462 + 4308 014c 0220 movs r0, #2 + 4309 .LVL296: + 4310 .L277: +2121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4311 .loc 1 2121 1 view .LVU1463 + 4312 014e 02B0 add sp, sp, #8 + 4313 .LCFI48: + 4314 .cfi_remember_state + 4315 .cfi_def_cfa_offset 16 + 4316 @ sp needed + 4317 0150 70BD pop {r4, r5, r6, pc} + 4318 .LVL297: + 4319 .L287: + 4320 .LCFI49: + 4321 .cfi_restore_state +1981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4322 .loc 1 1981 14 view .LVU1464 + 4323 0152 0220 movs r0, #2 + 4324 0154 FBE7 b .L277 + 4325 .L288: +1985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4326 .loc 1 1985 5 view .LVU1465 + 4327 0156 0220 movs r0, #2 + 4328 0158 F9E7 b .L277 + 4329 .L293: + 4330 015a 00BF .align 2 + 4331 .L292: + 4332 015c 0000FFFF .word -65536 + 4333 0160 00000000 .word I2C_Master_ISR_DMA + 4334 0164 00000000 .word I2C_DMAMasterTransmitCplt + 4335 0168 00000000 .word I2C_DMAError + 4336 016c 00200080 .word -2147475456 + 4337 0170 00000000 .word I2C_Master_ISR_IT + 4338 .cfi_endproc + 4339 .LFE153: + 4341 .section .text.HAL_I2C_Master_Receive_DMA,"ax",%progbits + 4342 .align 1 + 4343 .global HAL_I2C_Master_Receive_DMA + 4344 .syntax unified + 4345 .thumb + 4346 .thumb_func + 4347 .fpu fpv5-d16 + 4349 HAL_I2C_Master_Receive_DMA: + 4350 .LVL298: + 4351 .LFB154: +2135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 4352 .loc 1 2135 1 is_stmt 1 view -0 + 4353 .cfi_startproc + 4354 @ args = 0, pretend = 0, frame = 0 + 4355 @ frame_needed = 0, uses_anonymous_args = 0 +2135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 4356 .loc 1 2135 1 is_stmt 0 view .LVU1467 + 4357 0000 70B5 push {r4, r5, r6, lr} + 4358 .LCFI50: + 4359 .cfi_def_cfa_offset 16 + 4360 .cfi_offset 4, -16 + ARM GAS /tmp/ccVyGVF6.s page 233 + + + 4361 .cfi_offset 5, -12 + 4362 .cfi_offset 6, -8 + 4363 .cfi_offset 14, -4 + 4364 0002 82B0 sub sp, sp, #8 + 4365 .LCFI51: + 4366 .cfi_def_cfa_offset 24 + 4367 0004 0446 mov r4, r0 +2136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 4368 .loc 1 2136 3 is_stmt 1 view .LVU1468 +2137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4369 .loc 1 2137 3 view .LVU1469 +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4370 .loc 1 2139 3 view .LVU1470 +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4371 .loc 1 2139 11 is_stmt 0 view .LVU1471 + 4372 0006 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 4373 .LVL299: +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4374 .loc 1 2139 11 view .LVU1472 + 4375 000a C0B2 uxtb r0, r0 +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4376 .loc 1 2139 6 view .LVU1473 + 4377 000c 2028 cmp r0, #32 + 4378 000e 40F08C80 bne .L303 + 4379 0012 0D46 mov r5, r1 +2141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4380 .loc 1 2141 5 is_stmt 1 view .LVU1474 +2141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4381 .loc 1 2141 9 is_stmt 0 view .LVU1475 + 4382 0014 2168 ldr r1, [r4] + 4383 .LVL300: +2141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4384 .loc 1 2141 9 view .LVU1476 + 4385 0016 8969 ldr r1, [r1, #24] +2141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4386 .loc 1 2141 8 view .LVU1477 + 4387 0018 11F4004F tst r1, #32768 + 4388 001c 40F08880 bne .L304 +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4389 .loc 1 2147 5 is_stmt 1 view .LVU1478 +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4390 .loc 1 2147 5 view .LVU1479 + 4391 0020 94F84010 ldrb r1, [r4, #64] @ zero_extendqisi2 + 4392 0024 0129 cmp r1, #1 + 4393 0026 00F08580 beq .L305 +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4394 .loc 1 2147 5 discriminator 2 view .LVU1480 + 4395 002a 0121 movs r1, #1 + 4396 002c 84F84010 strb r1, [r4, #64] +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4397 .loc 1 2147 5 discriminator 2 view .LVU1481 +2149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 4398 .loc 1 2149 5 discriminator 2 view .LVU1482 +2149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 4399 .loc 1 2149 23 is_stmt 0 discriminator 2 view .LVU1483 + 4400 0030 2221 movs r1, #34 + 4401 0032 84F84110 strb r1, [r4, #65] + ARM GAS /tmp/ccVyGVF6.s page 234 + + +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 4402 .loc 1 2150 5 is_stmt 1 discriminator 2 view .LVU1484 +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 4403 .loc 1 2150 23 is_stmt 0 discriminator 2 view .LVU1485 + 4404 0036 1021 movs r1, #16 + 4405 0038 84F84210 strb r1, [r4, #66] +2151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4406 .loc 1 2151 5 is_stmt 1 discriminator 2 view .LVU1486 +2151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4407 .loc 1 2151 23 is_stmt 0 discriminator 2 view .LVU1487 + 4408 003c 0021 movs r1, #0 + 4409 003e 6164 str r1, [r4, #68] +2154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 4410 .loc 1 2154 5 is_stmt 1 discriminator 2 view .LVU1488 +2154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 4411 .loc 1 2154 23 is_stmt 0 discriminator 2 view .LVU1489 + 4412 0040 6262 str r2, [r4, #36] +2155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 4413 .loc 1 2155 5 is_stmt 1 discriminator 2 view .LVU1490 +2155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 4414 .loc 1 2155 23 is_stmt 0 discriminator 2 view .LVU1491 + 4415 0042 6385 strh r3, [r4, #42] @ movhi +2156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; + 4416 .loc 1 2156 5 is_stmt 1 discriminator 2 view .LVU1492 +2156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; + 4417 .loc 1 2156 23 is_stmt 0 discriminator 2 view .LVU1493 + 4418 0044 3C4B ldr r3, .L309 + 4419 .LVL301: +2156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; + 4420 .loc 1 2156 23 discriminator 2 view .LVU1494 + 4421 0046 E362 str r3, [r4, #44] + 4422 .LVL302: +2157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4423 .loc 1 2157 5 is_stmt 1 discriminator 2 view .LVU1495 +2157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4424 .loc 1 2157 23 is_stmt 0 discriminator 2 view .LVU1496 + 4425 0048 3C4B ldr r3, .L309+4 + 4426 004a 6363 str r3, [r4, #52] +2159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4427 .loc 1 2159 5 is_stmt 1 discriminator 2 view .LVU1497 +2159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4428 .loc 1 2159 13 is_stmt 0 discriminator 2 view .LVU1498 + 4429 004c 638D ldrh r3, [r4, #42] + 4430 004e 9BB2 uxth r3, r3 +2159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4431 .loc 1 2159 8 discriminator 2 view .LVU1499 + 4432 0050 FF2B cmp r3, #255 + 4433 0052 27D9 bls .L296 +2161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 4434 .loc 1 2161 7 is_stmt 1 view .LVU1500 +2161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 4435 .loc 1 2161 22 is_stmt 0 view .LVU1501 + 4436 0054 0123 movs r3, #1 + 4437 0056 2385 strh r3, [r4, #40] @ movhi +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4438 .loc 1 2162 7 is_stmt 1 view .LVU1502 + 4439 .LVL303: + ARM GAS /tmp/ccVyGVF6.s page 235 + + +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4440 .loc 1 2162 16 is_stmt 0 view .LVU1503 + 4441 0058 4FF08076 mov r6, #16777216 + 4442 .LVL304: + 4443 .L297: +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4444 .loc 1 2170 5 is_stmt 1 view .LVU1504 +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4445 .loc 1 2170 13 is_stmt 0 view .LVU1505 + 4446 005c 218D ldrh r1, [r4, #40] +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4447 .loc 1 2170 8 view .LVU1506 + 4448 005e 0029 cmp r1, #0 + 4449 0060 4FD0 beq .L298 +2172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4450 .loc 1 2172 7 is_stmt 1 view .LVU1507 +2172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4451 .loc 1 2172 15 is_stmt 0 view .LVU1508 + 4452 0062 E36B ldr r3, [r4, #60] +2172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4453 .loc 1 2172 10 view .LVU1509 + 4454 0064 1BB3 cbz r3, .L299 +2175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4455 .loc 1 2175 9 is_stmt 1 view .LVU1510 +2175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4456 .loc 1 2175 40 is_stmt 0 view .LVU1511 + 4457 0066 3649 ldr r1, .L309+8 + 4458 0068 D963 str r1, [r3, #60] +2178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4459 .loc 1 2178 9 is_stmt 1 view .LVU1512 +2178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4460 .loc 1 2178 13 is_stmt 0 view .LVU1513 + 4461 006a E36B ldr r3, [r4, #60] +2178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4462 .loc 1 2178 41 view .LVU1514 + 4463 006c 3549 ldr r1, .L309+12 + 4464 006e D964 str r1, [r3, #76] +2181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 4465 .loc 1 2181 9 is_stmt 1 view .LVU1515 +2181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 4466 .loc 1 2181 13 is_stmt 0 view .LVU1516 + 4467 0070 E16B ldr r1, [r4, #60] +2181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 4468 .loc 1 2181 44 view .LVU1517 + 4469 0072 0023 movs r3, #0 + 4470 0074 0B64 str r3, [r1, #64] +2182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4471 .loc 1 2182 9 is_stmt 1 view .LVU1518 +2182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4472 .loc 1 2182 13 is_stmt 0 view .LVU1519 + 4473 0076 E16B ldr r1, [r4, #60] +2182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4474 .loc 1 2182 41 view .LVU1520 + 4475 0078 0B65 str r3, [r1, #80] +2185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 4476 .loc 1 2185 9 is_stmt 1 view .LVU1521 +2185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + ARM GAS /tmp/ccVyGVF6.s page 236 + + + 4477 .loc 1 2185 71 is_stmt 0 view .LVU1522 + 4478 007a 2168 ldr r1, [r4] +2185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 4479 .loc 1 2185 25 view .LVU1523 + 4480 007c 238D ldrh r3, [r4, #40] + 4481 007e 2431 adds r1, r1, #36 + 4482 0080 E06B ldr r0, [r4, #60] + 4483 0082 FFF7FEFF bl HAL_DMA_Start_IT + 4484 .LVL305: +2203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4485 .loc 1 2203 7 is_stmt 1 view .LVU1524 +2203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4486 .loc 1 2203 10 is_stmt 0 view .LVU1525 + 4487 0086 00B3 cbz r0, .L308 +2227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4488 .loc 1 2227 9 is_stmt 1 view .LVU1526 +2227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4489 .loc 1 2227 25 is_stmt 0 view .LVU1527 + 4490 0088 2023 movs r3, #32 + 4491 008a 84F84130 strb r3, [r4, #65] +2228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4492 .loc 1 2228 9 is_stmt 1 view .LVU1528 +2228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4493 .loc 1 2228 25 is_stmt 0 view .LVU1529 + 4494 008e 0022 movs r2, #0 + 4495 0090 84F84220 strb r2, [r4, #66] +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4496 .loc 1 2231 9 is_stmt 1 view .LVU1530 +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4497 .loc 1 2231 25 is_stmt 0 view .LVU1531 + 4498 0094 636C ldr r3, [r4, #68] + 4499 0096 43F01003 orr r3, r3, #16 + 4500 009a 6364 str r3, [r4, #68] +2234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4501 .loc 1 2234 9 is_stmt 1 view .LVU1532 +2234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4502 .loc 1 2234 9 view .LVU1533 + 4503 009c 84F84020 strb r2, [r4, #64] +2234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4504 .loc 1 2234 9 view .LVU1534 +2236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4505 .loc 1 2236 9 view .LVU1535 +2236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4506 .loc 1 2236 16 is_stmt 0 view .LVU1536 + 4507 00a0 0120 movs r0, #1 + 4508 .LVL306: +2236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4509 .loc 1 2236 16 view .LVU1537 + 4510 00a2 43E0 b .L295 + 4511 .LVL307: + 4512 .L296: +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 4513 .loc 1 2166 7 is_stmt 1 view .LVU1538 +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + 4514 .loc 1 2166 28 is_stmt 0 view .LVU1539 + 4515 00a4 638D ldrh r3, [r4, #42] +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_AUTOEND_MODE; + ARM GAS /tmp/ccVyGVF6.s page 237 + + + 4516 .loc 1 2166 22 view .LVU1540 + 4517 00a6 2385 strh r3, [r4, #40] @ movhi +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4518 .loc 1 2167 7 is_stmt 1 view .LVU1541 + 4519 .LVL308: +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4520 .loc 1 2167 16 is_stmt 0 view .LVU1542 + 4521 00a8 4FF00076 mov r6, #33554432 + 4522 00ac D6E7 b .L297 + 4523 .LVL309: + 4524 .L299: +2191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4525 .loc 1 2191 9 is_stmt 1 view .LVU1543 +2191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4526 .loc 1 2191 25 is_stmt 0 view .LVU1544 + 4527 00ae 2023 movs r3, #32 + 4528 00b0 84F84130 strb r3, [r4, #65] +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4529 .loc 1 2192 9 is_stmt 1 view .LVU1545 +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4530 .loc 1 2192 25 is_stmt 0 view .LVU1546 + 4531 00b4 0022 movs r2, #0 + 4532 .LVL310: +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4533 .loc 1 2192 25 view .LVU1547 + 4534 00b6 84F84220 strb r2, [r4, #66] +2195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4535 .loc 1 2195 9 is_stmt 1 view .LVU1548 +2195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4536 .loc 1 2195 25 is_stmt 0 view .LVU1549 + 4537 00ba 636C ldr r3, [r4, #68] + 4538 00bc 43F08003 orr r3, r3, #128 + 4539 00c0 6364 str r3, [r4, #68] +2198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4540 .loc 1 2198 9 is_stmt 1 view .LVU1550 +2198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4541 .loc 1 2198 9 view .LVU1551 + 4542 00c2 84F84020 strb r2, [r4, #64] +2198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4543 .loc 1 2198 9 view .LVU1552 +2200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4544 .loc 1 2200 9 view .LVU1553 +2200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4545 .loc 1 2200 16 is_stmt 0 view .LVU1554 + 4546 00c6 0120 movs r0, #1 + 4547 00c8 30E0 b .L295 + 4548 .LVL311: + 4549 .L308: +2207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4550 .loc 1 2207 9 is_stmt 1 view .LVU1555 + 4551 00ca 1F4B ldr r3, .L309+16 + 4552 00cc 0093 str r3, [sp] + 4553 00ce 3346 mov r3, r6 + 4554 00d0 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 4555 00d4 2946 mov r1, r5 + 4556 00d6 2046 mov r0, r4 + 4557 .LVL312: + ARM GAS /tmp/ccVyGVF6.s page 238 + + +2207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4558 .loc 1 2207 9 is_stmt 0 view .LVU1556 + 4559 00d8 FFF7FEFF bl I2C_TransferConfig + 4560 .LVL313: +2210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4561 .loc 1 2210 9 is_stmt 1 view .LVU1557 +2210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4562 .loc 1 2210 25 is_stmt 0 view .LVU1558 + 4563 00dc 638D ldrh r3, [r4, #42] + 4564 00de 9BB2 uxth r3, r3 +2210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4565 .loc 1 2210 32 view .LVU1559 + 4566 00e0 228D ldrh r2, [r4, #40] +2210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4567 .loc 1 2210 25 view .LVU1560 + 4568 00e2 9B1A subs r3, r3, r2 + 4569 00e4 9BB2 uxth r3, r3 + 4570 00e6 6385 strh r3, [r4, #42] @ movhi +2213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4571 .loc 1 2213 9 is_stmt 1 view .LVU1561 +2213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4572 .loc 1 2213 9 view .LVU1562 + 4573 00e8 0023 movs r3, #0 + 4574 00ea 84F84030 strb r3, [r4, #64] +2213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4575 .loc 1 2213 9 view .LVU1563 +2219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4576 .loc 1 2219 9 view .LVU1564 + 4577 00ee 1021 movs r1, #16 + 4578 00f0 2046 mov r0, r4 + 4579 00f2 FFF7FEFF bl I2C_Enable_IRQ + 4580 .LVL314: +2222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4581 .loc 1 2222 9 view .LVU1565 +2222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4582 .loc 1 2222 13 is_stmt 0 view .LVU1566 + 4583 00f6 2268 ldr r2, [r4] +2222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4584 .loc 1 2222 29 view .LVU1567 + 4585 00f8 1368 ldr r3, [r2] + 4586 00fa 43F40043 orr r3, r3, #32768 + 4587 00fe 1360 str r3, [r2] + 4588 0100 11E0 b .L302 + 4589 .LVL315: + 4590 .L298: +2242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4591 .loc 1 2242 7 is_stmt 1 view .LVU1568 +2242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4592 .loc 1 2242 21 is_stmt 0 view .LVU1569 + 4593 0102 124B ldr r3, .L309+20 + 4594 0104 6363 str r3, [r4, #52] +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); + 4595 .loc 1 2246 7 is_stmt 1 view .LVU1570 + 4596 0106 104B ldr r3, .L309+16 + 4597 0108 0093 str r3, [sp] + 4598 010a 4FF00073 mov r3, #33554432 + 4599 010e CAB2 uxtb r2, r1 + ARM GAS /tmp/ccVyGVF6.s page 239 + + + 4600 .LVL316: +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); + 4601 .loc 1 2246 7 is_stmt 0 view .LVU1571 + 4602 0110 2946 mov r1, r5 + 4603 0112 2046 mov r0, r4 + 4604 0114 FFF7FEFF bl I2C_TransferConfig + 4605 .LVL317: +2250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4606 .loc 1 2250 7 is_stmt 1 view .LVU1572 +2250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4607 .loc 1 2250 7 view .LVU1573 + 4608 0118 0023 movs r3, #0 + 4609 011a 84F84030 strb r3, [r4, #64] +2250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4610 .loc 1 2250 7 view .LVU1574 +2259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4611 .loc 1 2259 7 view .LVU1575 + 4612 011e 0221 movs r1, #2 + 4613 0120 2046 mov r0, r4 + 4614 0122 FFF7FEFF bl I2C_Enable_IRQ + 4615 .LVL318: + 4616 .L302: +2262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4617 .loc 1 2262 5 view .LVU1576 +2262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4618 .loc 1 2262 12 is_stmt 0 view .LVU1577 + 4619 0126 0020 movs r0, #0 + 4620 0128 00E0 b .L295 + 4621 .LVL319: + 4622 .L303: +2266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4623 .loc 1 2266 12 view .LVU1578 + 4624 012a 0220 movs r0, #2 + 4625 .LVL320: + 4626 .L295: +2268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4627 .loc 1 2268 1 view .LVU1579 + 4628 012c 02B0 add sp, sp, #8 + 4629 .LCFI52: + 4630 .cfi_remember_state + 4631 .cfi_def_cfa_offset 16 + 4632 @ sp needed + 4633 012e 70BD pop {r4, r5, r6, pc} + 4634 .LVL321: + 4635 .L304: + 4636 .LCFI53: + 4637 .cfi_restore_state +2143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4638 .loc 1 2143 14 view .LVU1580 + 4639 0130 0220 movs r0, #2 + 4640 0132 FBE7 b .L295 + 4641 .L305: +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4642 .loc 1 2147 5 view .LVU1581 + 4643 0134 0220 movs r0, #2 + 4644 0136 F9E7 b .L295 + 4645 .L310: + ARM GAS /tmp/ccVyGVF6.s page 240 + + + 4646 .align 2 + 4647 .L309: + 4648 0138 0000FFFF .word -65536 + 4649 013c 00000000 .word I2C_Master_ISR_DMA + 4650 0140 00000000 .word I2C_DMAMasterReceiveCplt + 4651 0144 00000000 .word I2C_DMAError + 4652 0148 00240080 .word -2147474432 + 4653 014c 00000000 .word I2C_Master_ISR_IT + 4654 .cfi_endproc + 4655 .LFE154: + 4657 .section .text.HAL_I2C_Slave_Transmit_DMA,"ax",%progbits + 4658 .align 1 + 4659 .global HAL_I2C_Slave_Transmit_DMA + 4660 .syntax unified + 4661 .thumb + 4662 .thumb_func + 4663 .fpu fpv5-d16 + 4665 HAL_I2C_Slave_Transmit_DMA: + 4666 .LVL322: + 4667 .LFB155: +2279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 4668 .loc 1 2279 1 is_stmt 1 view -0 + 4669 .cfi_startproc + 4670 @ args = 0, pretend = 0, frame = 0 + 4671 @ frame_needed = 0, uses_anonymous_args = 0 +2280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4672 .loc 1 2280 3 view .LVU1583 +2282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4673 .loc 1 2282 3 view .LVU1584 +2282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4674 .loc 1 2282 11 is_stmt 0 view .LVU1585 + 4675 0000 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 4676 0004 DBB2 uxtb r3, r3 +2282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4677 .loc 1 2282 6 view .LVU1586 + 4678 0006 202B cmp r3, #32 + 4679 0008 40F08D80 bne .L320 +2279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 4680 .loc 1 2279 1 view .LVU1587 + 4681 000c 10B5 push {r4, lr} + 4682 .LCFI54: + 4683 .cfi_def_cfa_offset 8 + 4684 .cfi_offset 4, -8 + 4685 .cfi_offset 14, -4 + 4686 000e 0446 mov r4, r0 +2284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4687 .loc 1 2284 5 is_stmt 1 view .LVU1588 +2284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4688 .loc 1 2284 8 is_stmt 0 view .LVU1589 + 4689 0010 002A cmp r2, #0 + 4690 0012 18BF it ne + 4691 0014 0029 cmpne r1, #0 + 4692 0016 42D0 beq .L327 +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4693 .loc 1 2290 5 is_stmt 1 view .LVU1590 +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4694 .loc 1 2290 5 view .LVU1591 + ARM GAS /tmp/ccVyGVF6.s page 241 + + + 4695 0018 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 4696 001c 012B cmp r3, #1 + 4697 001e 00F08480 beq .L321 +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4698 .loc 1 2290 5 discriminator 2 view .LVU1592 + 4699 0022 0123 movs r3, #1 + 4700 0024 80F84030 strb r3, [r0, #64] +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4701 .loc 1 2290 5 discriminator 2 view .LVU1593 +2292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 4702 .loc 1 2292 5 discriminator 2 view .LVU1594 +2292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 4703 .loc 1 2292 23 is_stmt 0 discriminator 2 view .LVU1595 + 4704 0028 2123 movs r3, #33 + 4705 002a 80F84130 strb r3, [r0, #65] +2293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 4706 .loc 1 2293 5 is_stmt 1 discriminator 2 view .LVU1596 +2293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 4707 .loc 1 2293 23 is_stmt 0 discriminator 2 view .LVU1597 + 4708 002e 2023 movs r3, #32 + 4709 0030 80F84230 strb r3, [r0, #66] +2294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4710 .loc 1 2294 5 is_stmt 1 discriminator 2 view .LVU1598 +2294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4711 .loc 1 2294 23 is_stmt 0 discriminator 2 view .LVU1599 + 4712 0034 0023 movs r3, #0 + 4713 0036 4364 str r3, [r0, #68] +2297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 4714 .loc 1 2297 5 is_stmt 1 discriminator 2 view .LVU1600 +2297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 4715 .loc 1 2297 23 is_stmt 0 discriminator 2 view .LVU1601 + 4716 0038 4162 str r1, [r0, #36] +2298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 4717 .loc 1 2298 5 is_stmt 1 discriminator 2 view .LVU1602 +2298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 4718 .loc 1 2298 23 is_stmt 0 discriminator 2 view .LVU1603 + 4719 003a 4285 strh r2, [r0, #42] @ movhi +2299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 4720 .loc 1 2299 5 is_stmt 1 discriminator 2 view .LVU1604 +2299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 4721 .loc 1 2299 29 is_stmt 0 discriminator 2 view .LVU1605 + 4722 003c 438D ldrh r3, [r0, #42] +2299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 4723 .loc 1 2299 23 discriminator 2 view .LVU1606 + 4724 003e 0385 strh r3, [r0, #40] @ movhi +2300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; + 4725 .loc 1 2300 5 is_stmt 1 discriminator 2 view .LVU1607 +2300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; + 4726 .loc 1 2300 23 is_stmt 0 discriminator 2 view .LVU1608 + 4727 0040 3B4B ldr r3, .L330 + 4728 0042 C362 str r3, [r0, #44] +2301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4729 .loc 1 2301 5 is_stmt 1 discriminator 2 view .LVU1609 +2301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4730 .loc 1 2301 23 is_stmt 0 discriminator 2 view .LVU1610 + 4731 0044 3B4B ldr r3, .L330+4 + 4732 0046 4363 str r3, [r0, #52] + ARM GAS /tmp/ccVyGVF6.s page 242 + + +2304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4733 .loc 1 2304 5 is_stmt 1 discriminator 2 view .LVU1611 +2304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4734 .loc 1 2304 19 is_stmt 0 discriminator 2 view .LVU1612 + 4735 0048 036A ldr r3, [r0, #32] +2304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4736 .loc 1 2304 8 discriminator 2 view .LVU1613 + 4737 004a B3F5003F cmp r3, #131072 + 4738 004e 2BD0 beq .L328 + 4739 .LVL323: + 4740 .L314: +2317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4741 .loc 1 2317 5 is_stmt 1 view .LVU1614 +2317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4742 .loc 1 2317 13 is_stmt 0 view .LVU1615 + 4743 0050 638D ldrh r3, [r4, #42] + 4744 0052 9BB2 uxth r3, r3 +2317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4745 .loc 1 2317 8 view .LVU1616 + 4746 0054 002B cmp r3, #0 + 4747 0056 57D0 beq .L315 +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4748 .loc 1 2319 7 is_stmt 1 view .LVU1617 +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4749 .loc 1 2319 15 is_stmt 0 view .LVU1618 + 4750 0058 A36B ldr r3, [r4, #56] +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4751 .loc 1 2319 10 view .LVU1619 + 4752 005a 002B cmp r3, #0 + 4753 005c 33D0 beq .L316 +2322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4754 .loc 1 2322 9 is_stmt 1 view .LVU1620 +2322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4755 .loc 1 2322 40 is_stmt 0 view .LVU1621 + 4756 005e 364A ldr r2, .L330+8 + 4757 0060 DA63 str r2, [r3, #60] +2325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4758 .loc 1 2325 9 is_stmt 1 view .LVU1622 +2325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4759 .loc 1 2325 13 is_stmt 0 view .LVU1623 + 4760 0062 A36B ldr r3, [r4, #56] +2325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4761 .loc 1 2325 41 view .LVU1624 + 4762 0064 354A ldr r2, .L330+12 + 4763 0066 DA64 str r2, [r3, #76] +2328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 4764 .loc 1 2328 9 is_stmt 1 view .LVU1625 +2328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 4765 .loc 1 2328 13 is_stmt 0 view .LVU1626 + 4766 0068 A26B ldr r2, [r4, #56] +2328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 4767 .loc 1 2328 44 view .LVU1627 + 4768 006a 0023 movs r3, #0 + 4769 006c 1364 str r3, [r2, #64] +2329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4770 .loc 1 2329 9 is_stmt 1 view .LVU1628 +2329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 243 + + + 4771 .loc 1 2329 13 is_stmt 0 view .LVU1629 + 4772 006e A26B ldr r2, [r4, #56] +2329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4773 .loc 1 2329 41 view .LVU1630 + 4774 0070 1365 str r3, [r2, #80] +2332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, + 4775 .loc 1 2332 9 is_stmt 1 view .LVU1631 +2333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 4776 .loc 1 2333 83 is_stmt 0 view .LVU1632 + 4777 0072 2268 ldr r2, [r4] +2332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, + 4778 .loc 1 2332 25 view .LVU1633 + 4779 0074 238D ldrh r3, [r4, #40] + 4780 0076 2832 adds r2, r2, #40 + 4781 0078 616A ldr r1, [r4, #36] + 4782 .LVL324: +2332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, + 4783 .loc 1 2332 25 view .LVU1634 + 4784 007a A06B ldr r0, [r4, #56] + 4785 .LVL325: +2332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)hi2c->pBuffPtr, (uint32_t)&hi2c->Instance->TXDR, + 4786 .loc 1 2332 25 view .LVU1635 + 4787 007c FFF7FEFF bl HAL_DMA_Start_IT + 4788 .LVL326: +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4789 .loc 1 2351 7 is_stmt 1 view .LVU1636 +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4790 .loc 1 2351 10 is_stmt 0 view .LVU1637 + 4791 0080 78B3 cbz r0, .L329 +2371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4792 .loc 1 2371 9 is_stmt 1 view .LVU1638 +2371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4793 .loc 1 2371 25 is_stmt 0 view .LVU1639 + 4794 0082 2823 movs r3, #40 + 4795 0084 84F84130 strb r3, [r4, #65] +2372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4796 .loc 1 2372 9 is_stmt 1 view .LVU1640 +2372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4797 .loc 1 2372 25 is_stmt 0 view .LVU1641 + 4798 0088 0022 movs r2, #0 + 4799 008a 84F84220 strb r2, [r4, #66] +2375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4800 .loc 1 2375 9 is_stmt 1 view .LVU1642 +2375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4801 .loc 1 2375 25 is_stmt 0 view .LVU1643 + 4802 008e 636C ldr r3, [r4, #68] + 4803 0090 43F01003 orr r3, r3, #16 + 4804 0094 6364 str r3, [r4, #68] +2378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4805 .loc 1 2378 9 is_stmt 1 view .LVU1644 +2378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4806 .loc 1 2378 9 view .LVU1645 + 4807 0096 84F84020 strb r2, [r4, #64] +2378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4808 .loc 1 2378 9 view .LVU1646 +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4809 .loc 1 2380 9 view .LVU1647 + ARM GAS /tmp/ccVyGVF6.s page 244 + + +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4810 .loc 1 2380 16 is_stmt 0 view .LVU1648 + 4811 009a 0120 movs r0, #1 + 4812 .LVL327: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4813 .loc 1 2380 16 view .LVU1649 + 4814 009c 03E0 b .L312 + 4815 .LVL328: + 4816 .L327: +2286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 4817 .loc 1 2286 7 is_stmt 1 view .LVU1650 +2286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 4818 .loc 1 2286 23 is_stmt 0 view .LVU1651 + 4819 009e 4FF40073 mov r3, #512 + 4820 00a2 4364 str r3, [r0, #68] +2287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4821 .loc 1 2287 7 is_stmt 1 view .LVU1652 +2287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4822 .loc 1 2287 15 is_stmt 0 view .LVU1653 + 4823 00a4 0120 movs r0, #1 + 4824 .LVL329: + 4825 .L312: +2404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4826 .loc 1 2404 1 view .LVU1654 + 4827 00a6 10BD pop {r4, pc} + 4828 .LVL330: + 4829 .L328: +2308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4830 .loc 1 2308 7 is_stmt 1 view .LVU1655 +2308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4831 .loc 1 2308 11 is_stmt 0 view .LVU1656 + 4832 00a8 0368 ldr r3, [r0] +2308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4833 .loc 1 2308 30 view .LVU1657 + 4834 00aa 0A78 ldrb r2, [r1] @ zero_extendqisi2 + 4835 .LVL331: +2308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4836 .loc 1 2308 28 view .LVU1658 + 4837 00ac 9A62 str r2, [r3, #40] +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4838 .loc 1 2311 7 is_stmt 1 view .LVU1659 +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4839 .loc 1 2311 11 is_stmt 0 view .LVU1660 + 4840 00ae 436A ldr r3, [r0, #36] +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4841 .loc 1 2311 21 view .LVU1661 + 4842 00b0 0133 adds r3, r3, #1 + 4843 00b2 4362 str r3, [r0, #36] +2313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 4844 .loc 1 2313 7 is_stmt 1 view .LVU1662 +2313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 4845 .loc 1 2313 11 is_stmt 0 view .LVU1663 + 4846 00b4 438D ldrh r3, [r0, #42] + 4847 00b6 9BB2 uxth r3, r3 +2313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 4848 .loc 1 2313 22 view .LVU1664 + 4849 00b8 013B subs r3, r3, #1 + ARM GAS /tmp/ccVyGVF6.s page 245 + + + 4850 00ba 9BB2 uxth r3, r3 + 4851 00bc 4385 strh r3, [r0, #42] @ movhi +2314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4852 .loc 1 2314 7 is_stmt 1 view .LVU1665 +2314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4853 .loc 1 2314 11 is_stmt 0 view .LVU1666 + 4854 00be 038D ldrh r3, [r0, #40] +2314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4855 .loc 1 2314 21 view .LVU1667 + 4856 00c0 013B subs r3, r3, #1 + 4857 00c2 0385 strh r3, [r0, #40] @ movhi + 4858 00c4 C4E7 b .L314 + 4859 .L316: +2339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4860 .loc 1 2339 9 is_stmt 1 view .LVU1668 +2339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 4861 .loc 1 2339 25 is_stmt 0 view .LVU1669 + 4862 00c6 2823 movs r3, #40 + 4863 00c8 84F84130 strb r3, [r4, #65] +2340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4864 .loc 1 2340 9 is_stmt 1 view .LVU1670 +2340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4865 .loc 1 2340 25 is_stmt 0 view .LVU1671 + 4866 00cc 0022 movs r2, #0 + 4867 00ce 84F84220 strb r2, [r4, #66] +2343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4868 .loc 1 2343 9 is_stmt 1 view .LVU1672 +2343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4869 .loc 1 2343 25 is_stmt 0 view .LVU1673 + 4870 00d2 636C ldr r3, [r4, #68] + 4871 00d4 43F08003 orr r3, r3, #128 + 4872 00d8 6364 str r3, [r4, #68] +2346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4873 .loc 1 2346 9 is_stmt 1 view .LVU1674 +2346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4874 .loc 1 2346 9 view .LVU1675 + 4875 00da 84F84020 strb r2, [r4, #64] +2346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4876 .loc 1 2346 9 view .LVU1676 +2348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4877 .loc 1 2348 9 view .LVU1677 +2348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4878 .loc 1 2348 16 is_stmt 0 view .LVU1678 + 4879 00de 0120 movs r0, #1 + 4880 .LVL332: +2348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4881 .loc 1 2348 16 view .LVU1679 + 4882 00e0 E1E7 b .L312 + 4883 .LVL333: + 4884 .L329: +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4885 .loc 1 2354 9 is_stmt 1 view .LVU1680 +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4886 .loc 1 2354 13 is_stmt 0 view .LVU1681 + 4887 00e2 2268 ldr r2, [r4] +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4888 .loc 1 2354 29 view .LVU1682 + ARM GAS /tmp/ccVyGVF6.s page 246 + + + 4889 00e4 5368 ldr r3, [r2, #4] + 4890 00e6 23F40043 bic r3, r3, #32768 + 4891 00ea 5360 str r3, [r2, #4] +2357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4892 .loc 1 2357 9 is_stmt 1 view .LVU1683 +2357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4893 .loc 1 2357 9 view .LVU1684 + 4894 00ec 0023 movs r3, #0 + 4895 00ee 84F84030 strb r3, [r4, #64] +2357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4896 .loc 1 2357 9 view .LVU1685 +2363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4897 .loc 1 2363 9 view .LVU1686 + 4898 00f2 4FF40041 mov r1, #32768 + 4899 00f6 2046 mov r0, r4 + 4900 .LVL334: +2363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4901 .loc 1 2363 9 is_stmt 0 view .LVU1687 + 4902 00f8 FFF7FEFF bl I2C_Enable_IRQ + 4903 .LVL335: +2366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4904 .loc 1 2366 9 is_stmt 1 view .LVU1688 +2366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4905 .loc 1 2366 13 is_stmt 0 view .LVU1689 + 4906 00fc 2268 ldr r2, [r4] +2366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4907 .loc 1 2366 29 view .LVU1690 + 4908 00fe 1368 ldr r3, [r2] + 4909 0100 43F48043 orr r3, r3, #16384 + 4910 0104 1360 str r3, [r2] + 4911 0106 0CE0 b .L319 + 4912 .LVL336: + 4913 .L315: +2386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4914 .loc 1 2386 7 is_stmt 1 view .LVU1691 +2386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4915 .loc 1 2386 11 is_stmt 0 view .LVU1692 + 4916 0108 2268 ldr r2, [r4] +2386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4917 .loc 1 2386 27 view .LVU1693 + 4918 010a 5368 ldr r3, [r2, #4] + 4919 010c 23F40043 bic r3, r3, #32768 + 4920 0110 5360 str r3, [r2, #4] +2389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4921 .loc 1 2389 7 is_stmt 1 view .LVU1694 +2389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4922 .loc 1 2389 7 view .LVU1695 + 4923 0112 0023 movs r3, #0 + 4924 0114 84F84030 strb r3, [r4, #64] +2389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4925 .loc 1 2389 7 view .LVU1696 +2395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4926 .loc 1 2395 7 view .LVU1697 + 4927 0118 4FF40041 mov r1, #32768 + 4928 .LVL337: +2395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4929 .loc 1 2395 7 is_stmt 0 view .LVU1698 + ARM GAS /tmp/ccVyGVF6.s page 247 + + + 4930 011c 2046 mov r0, r4 + 4931 .LVL338: +2395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4932 .loc 1 2395 7 view .LVU1699 + 4933 011e FFF7FEFF bl I2C_Enable_IRQ + 4934 .LVL339: + 4935 .L319: +2398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4936 .loc 1 2398 5 is_stmt 1 view .LVU1700 +2398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4937 .loc 1 2398 12 is_stmt 0 view .LVU1701 + 4938 0122 0020 movs r0, #0 + 4939 0124 BFE7 b .L312 + 4940 .LVL340: + 4941 .L320: + 4942 .LCFI55: + 4943 .cfi_def_cfa_offset 0 + 4944 .cfi_restore 4 + 4945 .cfi_restore 14 +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 4946 .loc 1 2402 12 view .LVU1702 + 4947 0126 0220 movs r0, #2 + 4948 .LVL341: +2404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4949 .loc 1 2404 1 view .LVU1703 + 4950 0128 7047 bx lr + 4951 .LVL342: + 4952 .L321: + 4953 .LCFI56: + 4954 .cfi_def_cfa_offset 8 + 4955 .cfi_offset 4, -8 + 4956 .cfi_offset 14, -4 +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4957 .loc 1 2290 5 view .LVU1704 + 4958 012a 0220 movs r0, #2 + 4959 .LVL343: +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4960 .loc 1 2290 5 view .LVU1705 + 4961 012c BBE7 b .L312 + 4962 .L331: + 4963 012e 00BF .align 2 + 4964 .L330: + 4965 0130 0000FFFF .word -65536 + 4966 0134 00000000 .word I2C_Slave_ISR_DMA + 4967 0138 00000000 .word I2C_DMASlaveTransmitCplt + 4968 013c 00000000 .word I2C_DMAError + 4969 .cfi_endproc + 4970 .LFE155: + 4972 .section .text.HAL_I2C_Slave_Receive_DMA,"ax",%progbits + 4973 .align 1 + 4974 .global HAL_I2C_Slave_Receive_DMA + 4975 .syntax unified + 4976 .thumb + 4977 .thumb_func + 4978 .fpu fpv5-d16 + 4980 HAL_I2C_Slave_Receive_DMA: + 4981 .LVL344: + ARM GAS /tmp/ccVyGVF6.s page 248 + + + 4982 .LFB156: +2415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 4983 .loc 1 2415 1 is_stmt 1 view -0 + 4984 .cfi_startproc + 4985 @ args = 0, pretend = 0, frame = 0 + 4986 @ frame_needed = 0, uses_anonymous_args = 0 +2415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 4987 .loc 1 2415 1 is_stmt 0 view .LVU1707 + 4988 0000 38B5 push {r3, r4, r5, lr} + 4989 .LCFI57: + 4990 .cfi_def_cfa_offset 16 + 4991 .cfi_offset 3, -16 + 4992 .cfi_offset 4, -12 + 4993 .cfi_offset 5, -8 + 4994 .cfi_offset 14, -4 +2416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 4995 .loc 1 2416 3 is_stmt 1 view .LVU1708 +2418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4996 .loc 1 2418 3 view .LVU1709 +2418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 4997 .loc 1 2418 11 is_stmt 0 view .LVU1710 + 4998 0002 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 4999 0006 DBB2 uxtb r3, r3 +2418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5000 .loc 1 2418 6 view .LVU1711 + 5001 0008 202B cmp r3, #32 + 5002 000a 65D1 bne .L338 + 5003 000c 0446 mov r4, r0 +2420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5004 .loc 1 2420 5 is_stmt 1 view .LVU1712 +2420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5005 .loc 1 2420 8 is_stmt 0 view .LVU1713 + 5006 000e 002A cmp r2, #0 + 5007 0010 18BF it ne + 5008 0012 0029 cmpne r1, #0 + 5009 0014 3AD0 beq .L342 +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5010 .loc 1 2426 5 is_stmt 1 view .LVU1714 +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5011 .loc 1 2426 5 view .LVU1715 + 5012 0016 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 5013 001a 012B cmp r3, #1 + 5014 001c 5FD0 beq .L339 +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5015 .loc 1 2426 5 discriminator 2 view .LVU1716 + 5016 001e 0123 movs r3, #1 + 5017 0020 80F84030 strb r3, [r0, #64] +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5018 .loc 1 2426 5 discriminator 2 view .LVU1717 +2428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 5019 .loc 1 2428 5 discriminator 2 view .LVU1718 +2428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 5020 .loc 1 2428 23 is_stmt 0 discriminator 2 view .LVU1719 + 5021 0024 2223 movs r3, #34 + 5022 0026 80F84130 strb r3, [r0, #65] +2429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 5023 .loc 1 2429 5 is_stmt 1 discriminator 2 view .LVU1720 + ARM GAS /tmp/ccVyGVF6.s page 249 + + +2429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 5024 .loc 1 2429 23 is_stmt 0 discriminator 2 view .LVU1721 + 5025 002a 2023 movs r3, #32 + 5026 002c 80F84230 strb r3, [r0, #66] +2430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5027 .loc 1 2430 5 is_stmt 1 discriminator 2 view .LVU1722 +2430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5028 .loc 1 2430 23 is_stmt 0 discriminator 2 view .LVU1723 + 5029 0030 0023 movs r3, #0 + 5030 0032 4364 str r3, [r0, #68] +2433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 5031 .loc 1 2433 5 is_stmt 1 discriminator 2 view .LVU1724 +2433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 5032 .loc 1 2433 23 is_stmt 0 discriminator 2 view .LVU1725 + 5033 0034 4162 str r1, [r0, #36] +2434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 5034 .loc 1 2434 5 is_stmt 1 discriminator 2 view .LVU1726 +2434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 5035 .loc 1 2434 23 is_stmt 0 discriminator 2 view .LVU1727 + 5036 0036 4285 strh r2, [r0, #42] @ movhi +2435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 5037 .loc 1 2435 5 is_stmt 1 discriminator 2 view .LVU1728 +2435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 5038 .loc 1 2435 29 is_stmt 0 discriminator 2 view .LVU1729 + 5039 0038 438D ldrh r3, [r0, #42] +2435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 5040 .loc 1 2435 23 discriminator 2 view .LVU1730 + 5041 003a 0385 strh r3, [r0, #40] @ movhi +2436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; + 5042 .loc 1 2436 5 is_stmt 1 discriminator 2 view .LVU1731 +2436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; + 5043 .loc 1 2436 23 is_stmt 0 discriminator 2 view .LVU1732 + 5044 003c 294B ldr r3, .L344 + 5045 003e C362 str r3, [r0, #44] +2437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5046 .loc 1 2437 5 is_stmt 1 discriminator 2 view .LVU1733 +2437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5047 .loc 1 2437 23 is_stmt 0 discriminator 2 view .LVU1734 + 5048 0040 294B ldr r3, .L344+4 + 5049 0042 4363 str r3, [r0, #52] +2439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5050 .loc 1 2439 5 is_stmt 1 discriminator 2 view .LVU1735 +2439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5051 .loc 1 2439 13 is_stmt 0 discriminator 2 view .LVU1736 + 5052 0044 C36B ldr r3, [r0, #60] +2439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5053 .loc 1 2439 8 discriminator 2 view .LVU1737 + 5054 0046 33B3 cbz r3, .L335 +2442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5055 .loc 1 2442 7 is_stmt 1 view .LVU1738 +2442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5056 .loc 1 2442 38 is_stmt 0 view .LVU1739 + 5057 0048 284A ldr r2, .L344+8 + 5058 .LVL345: +2442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5059 .loc 1 2442 38 view .LVU1740 + 5060 004a DA63 str r2, [r3, #60] + ARM GAS /tmp/ccVyGVF6.s page 250 + + +2445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5061 .loc 1 2445 7 is_stmt 1 view .LVU1741 +2445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5062 .loc 1 2445 11 is_stmt 0 view .LVU1742 + 5063 004c C36B ldr r3, [r0, #60] +2445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5064 .loc 1 2445 39 view .LVU1743 + 5065 004e 284A ldr r2, .L344+12 + 5066 0050 DA64 str r2, [r3, #76] +2448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 5067 .loc 1 2448 7 is_stmt 1 view .LVU1744 +2448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 5068 .loc 1 2448 11 is_stmt 0 view .LVU1745 + 5069 0052 C26B ldr r2, [r0, #60] +2448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 5070 .loc 1 2448 42 view .LVU1746 + 5071 0054 0023 movs r3, #0 + 5072 0056 1364 str r3, [r2, #64] +2449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5073 .loc 1 2449 7 is_stmt 1 view .LVU1747 +2449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5074 .loc 1 2449 11 is_stmt 0 view .LVU1748 + 5075 0058 C26B ldr r2, [r0, #60] +2449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5076 .loc 1 2449 39 view .LVU1749 + 5077 005a 1365 str r3, [r2, #80] +2452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 5078 .loc 1 2452 7 is_stmt 1 view .LVU1750 +2452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 5079 .loc 1 2452 69 is_stmt 0 view .LVU1751 + 5080 005c 0068 ldr r0, [r0] + 5081 .LVL346: +2452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 5082 .loc 1 2452 23 view .LVU1752 + 5083 005e 238D ldrh r3, [r4, #40] + 5084 0060 0A46 mov r2, r1 + 5085 0062 00F12401 add r1, r0, #36 + 5086 .LVL347: +2452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 5087 .loc 1 2452 23 view .LVU1753 + 5088 0066 E06B ldr r0, [r4, #60] + 5089 0068 FFF7FEFF bl HAL_DMA_Start_IT + 5090 .LVL348: +2470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5091 .loc 1 2470 5 is_stmt 1 view .LVU1754 +2470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5092 .loc 1 2470 8 is_stmt 0 view .LVU1755 + 5093 006c 0546 mov r5, r0 + 5094 006e 00B3 cbz r0, .L343 +2490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 5095 .loc 1 2490 7 is_stmt 1 view .LVU1756 +2490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 5096 .loc 1 2490 23 is_stmt 0 view .LVU1757 + 5097 0070 2823 movs r3, #40 + 5098 0072 84F84130 strb r3, [r4, #65] +2491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5099 .loc 1 2491 7 is_stmt 1 view .LVU1758 + ARM GAS /tmp/ccVyGVF6.s page 251 + + +2491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5100 .loc 1 2491 23 is_stmt 0 view .LVU1759 + 5101 0076 0022 movs r2, #0 + 5102 0078 84F84220 strb r2, [r4, #66] +2494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5103 .loc 1 2494 7 is_stmt 1 view .LVU1760 +2494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5104 .loc 1 2494 23 is_stmt 0 view .LVU1761 + 5105 007c 636C ldr r3, [r4, #68] + 5106 007e 43F01003 orr r3, r3, #16 + 5107 0082 6364 str r3, [r4, #68] +2497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5108 .loc 1 2497 7 is_stmt 1 view .LVU1762 +2497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5109 .loc 1 2497 7 view .LVU1763 + 5110 0084 84F84020 strb r2, [r4, #64] +2497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5111 .loc 1 2497 7 view .LVU1764 +2499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5112 .loc 1 2499 7 view .LVU1765 +2499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5113 .loc 1 2499 14 is_stmt 0 view .LVU1766 + 5114 0088 0125 movs r5, #1 + 5115 008a 26E0 b .L333 + 5116 .LVL349: + 5117 .L342: +2422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5118 .loc 1 2422 7 is_stmt 1 view .LVU1767 +2422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5119 .loc 1 2422 23 is_stmt 0 view .LVU1768 + 5120 008c 4FF40073 mov r3, #512 + 5121 0090 4364 str r3, [r0, #68] +2423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5122 .loc 1 2423 7 is_stmt 1 view .LVU1769 +2423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5123 .loc 1 2423 15 is_stmt 0 view .LVU1770 + 5124 0092 0125 movs r5, #1 + 5125 0094 21E0 b .L333 + 5126 .L335: +2458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 5127 .loc 1 2458 7 is_stmt 1 view .LVU1771 +2458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 5128 .loc 1 2458 23 is_stmt 0 view .LVU1772 + 5129 0096 2823 movs r3, #40 + 5130 0098 80F84130 strb r3, [r0, #65] +2459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5131 .loc 1 2459 7 is_stmt 1 view .LVU1773 +2459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5132 .loc 1 2459 23 is_stmt 0 view .LVU1774 + 5133 009c 0022 movs r2, #0 + 5134 .LVL350: +2459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5135 .loc 1 2459 23 view .LVU1775 + 5136 009e 80F84220 strb r2, [r0, #66] +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5137 .loc 1 2462 7 is_stmt 1 view .LVU1776 +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 252 + + + 5138 .loc 1 2462 23 is_stmt 0 view .LVU1777 + 5139 00a2 436C ldr r3, [r0, #68] + 5140 00a4 43F08003 orr r3, r3, #128 + 5141 00a8 4364 str r3, [r0, #68] +2465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5142 .loc 1 2465 7 is_stmt 1 view .LVU1778 +2465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5143 .loc 1 2465 7 view .LVU1779 + 5144 00aa 80F84020 strb r2, [r0, #64] +2465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5145 .loc 1 2465 7 view .LVU1780 +2467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5146 .loc 1 2467 7 view .LVU1781 +2467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5147 .loc 1 2467 14 is_stmt 0 view .LVU1782 + 5148 00ae 0125 movs r5, #1 + 5149 00b0 13E0 b .L333 + 5150 .LVL351: + 5151 .L343: +2473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5152 .loc 1 2473 7 is_stmt 1 view .LVU1783 +2473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5153 .loc 1 2473 11 is_stmt 0 view .LVU1784 + 5154 00b2 2268 ldr r2, [r4] +2473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5155 .loc 1 2473 27 view .LVU1785 + 5156 00b4 5368 ldr r3, [r2, #4] + 5157 00b6 23F40043 bic r3, r3, #32768 + 5158 00ba 5360 str r3, [r2, #4] +2476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5159 .loc 1 2476 7 is_stmt 1 view .LVU1786 +2476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5160 .loc 1 2476 7 view .LVU1787 + 5161 00bc 0023 movs r3, #0 + 5162 00be 84F84030 strb r3, [r4, #64] +2476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5163 .loc 1 2476 7 view .LVU1788 +2482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5164 .loc 1 2482 7 view .LVU1789 + 5165 00c2 4FF40041 mov r1, #32768 + 5166 00c6 2046 mov r0, r4 + 5167 .LVL352: +2482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5168 .loc 1 2482 7 is_stmt 0 view .LVU1790 + 5169 00c8 FFF7FEFF bl I2C_Enable_IRQ + 5170 .LVL353: +2485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5171 .loc 1 2485 7 is_stmt 1 view .LVU1791 +2485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5172 .loc 1 2485 11 is_stmt 0 view .LVU1792 + 5173 00cc 2268 ldr r2, [r4] +2485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5174 .loc 1 2485 27 view .LVU1793 + 5175 00ce 1368 ldr r3, [r2] + 5176 00d0 43F40043 orr r3, r3, #32768 + 5177 00d4 1360 str r3, [r2] +2502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 253 + + + 5178 .loc 1 2502 5 is_stmt 1 view .LVU1794 +2502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5179 .loc 1 2502 12 is_stmt 0 view .LVU1795 + 5180 00d6 00E0 b .L333 + 5181 .LVL354: + 5182 .L338: +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5183 .loc 1 2506 12 view .LVU1796 + 5184 00d8 0225 movs r5, #2 + 5185 .LVL355: + 5186 .L333: +2508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5187 .loc 1 2508 1 view .LVU1797 + 5188 00da 2846 mov r0, r5 + 5189 00dc 38BD pop {r3, r4, r5, pc} + 5190 .LVL356: + 5191 .L339: +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5192 .loc 1 2426 5 view .LVU1798 + 5193 00de 0225 movs r5, #2 + 5194 00e0 FBE7 b .L333 + 5195 .L345: + 5196 00e2 00BF .align 2 + 5197 .L344: + 5198 00e4 0000FFFF .word -65536 + 5199 00e8 00000000 .word I2C_Slave_ISR_DMA + 5200 00ec 00000000 .word I2C_DMASlaveReceiveCplt + 5201 00f0 00000000 .word I2C_DMAError + 5202 .cfi_endproc + 5203 .LFE156: + 5205 .section .text.HAL_I2C_Mem_Write,"ax",%progbits + 5206 .align 1 + 5207 .global HAL_I2C_Mem_Write + 5208 .syntax unified + 5209 .thumb + 5210 .thumb_func + 5211 .fpu fpv5-d16 + 5213 HAL_I2C_Mem_Write: + 5214 .LVL357: + 5215 .LFB157: +2525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 5216 .loc 1 2525 1 is_stmt 1 view -0 + 5217 .cfi_startproc + 5218 @ args = 12, pretend = 0, frame = 0 + 5219 @ frame_needed = 0, uses_anonymous_args = 0 +2525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 5220 .loc 1 2525 1 is_stmt 0 view .LVU1800 + 5221 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 5222 .LCFI58: + 5223 .cfi_def_cfa_offset 36 + 5224 .cfi_offset 4, -36 + 5225 .cfi_offset 5, -32 + 5226 .cfi_offset 6, -28 + 5227 .cfi_offset 7, -24 + 5228 .cfi_offset 8, -20 + 5229 .cfi_offset 9, -16 + 5230 .cfi_offset 10, -12 + ARM GAS /tmp/ccVyGVF6.s page 254 + + + 5231 .cfi_offset 11, -8 + 5232 .cfi_offset 14, -4 + 5233 0004 83B0 sub sp, sp, #12 + 5234 .LCFI59: + 5235 .cfi_def_cfa_offset 48 + 5236 0006 0D46 mov r5, r1 + 5237 0008 BDF834A0 ldrh r10, [sp, #52] + 5238 000c 0E9F ldr r7, [sp, #56] +2526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5239 .loc 1 2526 3 is_stmt 1 view .LVU1801 +2529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5240 .loc 1 2529 3 view .LVU1802 +2531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5241 .loc 1 2531 3 view .LVU1803 +2531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5242 .loc 1 2531 11 is_stmt 0 view .LVU1804 + 5243 000e 90F84110 ldrb r1, [r0, #65] @ zero_extendqisi2 + 5244 .LVL358: +2531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5245 .loc 1 2531 11 view .LVU1805 + 5246 0012 C9B2 uxtb r1, r1 +2531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5247 .loc 1 2531 6 view .LVU1806 + 5248 0014 2029 cmp r1, #32 + 5249 0016 40F0BC80 bne .L355 + 5250 001a 0446 mov r4, r0 + 5251 001c 9046 mov r8, r2 + 5252 001e 9946 mov r9, r3 +2533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5253 .loc 1 2533 5 is_stmt 1 view .LVU1807 +2533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5254 .loc 1 2533 8 is_stmt 0 view .LVU1808 + 5255 0020 0C9B ldr r3, [sp, #48] + 5256 .LVL359: +2533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5257 .loc 1 2533 8 view .LVU1809 + 5258 0022 BAF1000F cmp r10, #0 + 5259 0026 18BF it ne + 5260 0028 002B cmpne r3, #0 + 5261 002a 16D0 beq .L362 +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5262 .loc 1 2540 5 is_stmt 1 view .LVU1810 +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5263 .loc 1 2540 5 view .LVU1811 + 5264 002c 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 5265 0030 012B cmp r3, #1 + 5266 0032 00F0B280 beq .L356 +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5267 .loc 1 2540 5 discriminator 2 view .LVU1812 + 5268 0036 4FF0010B mov fp, #1 + 5269 003a 80F840B0 strb fp, [r0, #64] +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5270 .loc 1 2540 5 discriminator 2 view .LVU1813 +2543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5271 .loc 1 2543 5 discriminator 2 view .LVU1814 +2543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5272 .loc 1 2543 17 is_stmt 0 discriminator 2 view .LVU1815 + ARM GAS /tmp/ccVyGVF6.s page 255 + + + 5273 003e FFF7FEFF bl HAL_GetTick + 5274 .LVL360: +2543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5275 .loc 1 2543 17 discriminator 2 view .LVU1816 + 5276 0042 0646 mov r6, r0 + 5277 .LVL361: +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5278 .loc 1 2545 5 is_stmt 1 discriminator 2 view .LVU1817 +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5279 .loc 1 2545 9 is_stmt 0 discriminator 2 view .LVU1818 + 5280 0044 0090 str r0, [sp] + 5281 0046 1923 movs r3, #25 + 5282 0048 5A46 mov r2, fp + 5283 004a 4FF40041 mov r1, #32768 + 5284 004e 2046 mov r0, r4 + 5285 .LVL362: +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5286 .loc 1 2545 9 discriminator 2 view .LVU1819 + 5287 0050 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 5288 .LVL363: +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5289 .loc 1 2545 8 discriminator 2 view .LVU1820 + 5290 0054 30B1 cbz r0, .L363 +2547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5291 .loc 1 2547 14 view .LVU1821 + 5292 0056 0120 movs r0, #1 + 5293 0058 9CE0 b .L347 + 5294 .LVL364: + 5295 .L362: +2535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5296 .loc 1 2535 7 is_stmt 1 view .LVU1822 +2535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5297 .loc 1 2535 23 is_stmt 0 view .LVU1823 + 5298 005a 4FF40073 mov r3, #512 + 5299 005e 4364 str r3, [r0, #68] +2536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5300 .loc 1 2536 7 is_stmt 1 view .LVU1824 +2536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5301 .loc 1 2536 15 is_stmt 0 view .LVU1825 + 5302 0060 0120 movs r0, #1 + 5303 .LVL365: +2536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5304 .loc 1 2536 15 view .LVU1826 + 5305 0062 97E0 b .L347 + 5306 .LVL366: + 5307 .L363: +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 5308 .loc 1 2550 5 is_stmt 1 view .LVU1827 +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 5309 .loc 1 2550 21 is_stmt 0 view .LVU1828 + 5310 0064 2123 movs r3, #33 + 5311 0066 84F84130 strb r3, [r4, #65] +2551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 5312 .loc 1 2551 5 is_stmt 1 view .LVU1829 +2551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 5313 .loc 1 2551 21 is_stmt 0 view .LVU1830 + 5314 006a 4023 movs r3, #64 + ARM GAS /tmp/ccVyGVF6.s page 256 + + + 5315 006c 84F84230 strb r3, [r4, #66] +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5316 .loc 1 2552 5 is_stmt 1 view .LVU1831 +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5317 .loc 1 2552 21 is_stmt 0 view .LVU1832 + 5318 0070 0023 movs r3, #0 + 5319 0072 6364 str r3, [r4, #68] +2555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 5320 .loc 1 2555 5 is_stmt 1 view .LVU1833 +2555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 5321 .loc 1 2555 21 is_stmt 0 view .LVU1834 + 5322 0074 0C9A ldr r2, [sp, #48] + 5323 0076 6262 str r2, [r4, #36] +2556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 5324 .loc 1 2556 5 is_stmt 1 view .LVU1835 +2556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 5325 .loc 1 2556 21 is_stmt 0 view .LVU1836 + 5326 0078 A4F82AA0 strh r10, [r4, #42] @ movhi +2557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5327 .loc 1 2557 5 is_stmt 1 view .LVU1837 +2557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5328 .loc 1 2557 21 is_stmt 0 view .LVU1838 + 5329 007c 6363 str r3, [r4, #52] +2560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5330 .loc 1 2560 5 is_stmt 1 view .LVU1839 +2560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5331 .loc 1 2560 9 is_stmt 0 view .LVU1840 + 5332 007e 0196 str r6, [sp, #4] + 5333 0080 0097 str r7, [sp] + 5334 0082 4B46 mov r3, r9 + 5335 0084 4246 mov r2, r8 + 5336 0086 2946 mov r1, r5 + 5337 0088 2046 mov r0, r4 + 5338 008a FFF7FEFF bl I2C_RequestMemoryWrite + 5339 .LVL367: +2560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5340 .loc 1 2560 8 view .LVU1841 + 5341 008e 70B9 cbnz r0, .L364 +2568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5342 .loc 1 2568 5 is_stmt 1 view .LVU1842 +2568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5343 .loc 1 2568 13 is_stmt 0 view .LVU1843 + 5344 0090 638D ldrh r3, [r4, #42] + 5345 0092 9BB2 uxth r3, r3 +2568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5346 .loc 1 2568 8 view .LVU1844 + 5347 0094 FF2B cmp r3, #255 + 5348 0096 0FD9 bls .L350 +2570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTST + 5349 .loc 1 2570 7 is_stmt 1 view .LVU1845 +2570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, I2C_NO_STARTST + 5350 .loc 1 2570 22 is_stmt 0 view .LVU1846 + 5351 0098 FF22 movs r2, #255 + 5352 009a 2285 strh r2, [r4, #40] @ movhi +2571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5353 .loc 1 2571 7 is_stmt 1 view .LVU1847 + 5354 009c 0023 movs r3, #0 + ARM GAS /tmp/ccVyGVF6.s page 257 + + + 5355 009e 0093 str r3, [sp] + 5356 00a0 4FF08073 mov r3, #16777216 + 5357 00a4 2946 mov r1, r5 + 5358 00a6 2046 mov r0, r4 + 5359 00a8 FFF7FEFF bl I2C_TransferConfig + 5360 .LVL368: + 5361 00ac 21E0 b .L354 + 5362 .L364: +2563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5363 .loc 1 2563 7 view .LVU1848 +2563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5364 .loc 1 2563 7 view .LVU1849 + 5365 00ae 0023 movs r3, #0 + 5366 00b0 84F84030 strb r3, [r4, #64] +2563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5367 .loc 1 2563 7 view .LVU1850 +2564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5368 .loc 1 2564 7 view .LVU1851 +2564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5369 .loc 1 2564 14 is_stmt 0 view .LVU1852 + 5370 00b4 5846 mov r0, fp + 5371 00b6 6DE0 b .L347 + 5372 .L350: +2575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTS + 5373 .loc 1 2575 7 is_stmt 1 view .LVU1853 +2575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTS + 5374 .loc 1 2575 28 is_stmt 0 view .LVU1854 + 5375 00b8 628D ldrh r2, [r4, #42] + 5376 00ba 92B2 uxth r2, r2 +2575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, I2C_NO_STARTS + 5377 .loc 1 2575 22 view .LVU1855 + 5378 00bc 2285 strh r2, [r4, #40] @ movhi +2576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5379 .loc 1 2576 7 is_stmt 1 view .LVU1856 + 5380 00be 0023 movs r3, #0 + 5381 00c0 0093 str r3, [sp] + 5382 00c2 4FF00073 mov r3, #33554432 + 5383 00c6 D2B2 uxtb r2, r2 + 5384 00c8 2946 mov r1, r5 + 5385 00ca 2046 mov r0, r4 + 5386 00cc FFF7FEFF bl I2C_TransferConfig + 5387 .LVL369: + 5388 00d0 0FE0 b .L354 + 5389 .L353: +2612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 5390 .loc 1 2612 11 view .LVU1857 +2612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 5391 .loc 1 2612 32 is_stmt 0 view .LVU1858 + 5392 00d2 628D ldrh r2, [r4, #42] + 5393 00d4 92B2 uxth r2, r2 +2612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 5394 .loc 1 2612 26 view .LVU1859 + 5395 00d6 2285 strh r2, [r4, #40] @ movhi +2613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); + 5396 .loc 1 2613 11 is_stmt 1 view .LVU1860 + 5397 00d8 0023 movs r3, #0 + 5398 00da 0093 str r3, [sp] + ARM GAS /tmp/ccVyGVF6.s page 258 + + + 5399 00dc 4FF00073 mov r3, #33554432 + 5400 00e0 D2B2 uxtb r2, r2 + 5401 00e2 2946 mov r1, r5 + 5402 00e4 2046 mov r0, r4 + 5403 00e6 FFF7FEFF bl I2C_TransferConfig + 5404 .LVL370: + 5405 .L352: +2618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5406 .loc 1 2618 13 view .LVU1861 +2618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5407 .loc 1 2618 18 is_stmt 0 view .LVU1862 + 5408 00ea 638D ldrh r3, [r4, #42] + 5409 00ec 9BB2 uxth r3, r3 +2618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5410 .loc 1 2618 5 view .LVU1863 + 5411 00ee 002B cmp r3, #0 + 5412 00f0 33D0 beq .L365 + 5413 .L354: +2579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5414 .loc 1 2579 5 is_stmt 1 view .LVU1864 +2582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5415 .loc 1 2582 7 view .LVU1865 +2582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5416 .loc 1 2582 11 is_stmt 0 view .LVU1866 + 5417 00f2 3246 mov r2, r6 + 5418 00f4 3946 mov r1, r7 + 5419 00f6 2046 mov r0, r4 + 5420 00f8 FFF7FEFF bl I2C_WaitOnTXISFlagUntilTimeout + 5421 .LVL371: +2582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5422 .loc 1 2582 10 view .LVU1867 + 5423 00fc 0028 cmp r0, #0 + 5424 00fe 4ED1 bne .L358 +2588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5425 .loc 1 2588 7 is_stmt 1 view .LVU1868 +2588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5426 .loc 1 2588 35 is_stmt 0 view .LVU1869 + 5427 0100 626A ldr r2, [r4, #36] +2588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5428 .loc 1 2588 11 view .LVU1870 + 5429 0102 2368 ldr r3, [r4] +2588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5430 .loc 1 2588 30 view .LVU1871 + 5431 0104 1278 ldrb r2, [r2] @ zero_extendqisi2 +2588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5432 .loc 1 2588 28 view .LVU1872 + 5433 0106 9A62 str r2, [r3, #40] +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5434 .loc 1 2591 7 is_stmt 1 view .LVU1873 +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5435 .loc 1 2591 11 is_stmt 0 view .LVU1874 + 5436 0108 636A ldr r3, [r4, #36] +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5437 .loc 1 2591 21 view .LVU1875 + 5438 010a 0133 adds r3, r3, #1 + 5439 010c 6362 str r3, [r4, #36] +2593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + ARM GAS /tmp/ccVyGVF6.s page 259 + + + 5440 .loc 1 2593 7 is_stmt 1 view .LVU1876 +2593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 5441 .loc 1 2593 11 is_stmt 0 view .LVU1877 + 5442 010e 638D ldrh r3, [r4, #42] + 5443 0110 9BB2 uxth r3, r3 +2593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 5444 .loc 1 2593 22 view .LVU1878 + 5445 0112 013B subs r3, r3, #1 + 5446 0114 9BB2 uxth r3, r3 + 5447 0116 6385 strh r3, [r4, #42] @ movhi +2594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5448 .loc 1 2594 7 is_stmt 1 view .LVU1879 +2594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5449 .loc 1 2594 11 is_stmt 0 view .LVU1880 + 5450 0118 238D ldrh r3, [r4, #40] +2594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5451 .loc 1 2594 21 view .LVU1881 + 5452 011a 013B subs r3, r3, #1 + 5453 011c 9BB2 uxth r3, r3 + 5454 011e 2385 strh r3, [r4, #40] @ movhi +2596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5455 .loc 1 2596 7 is_stmt 1 view .LVU1882 +2596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5456 .loc 1 2596 16 is_stmt 0 view .LVU1883 + 5457 0120 628D ldrh r2, [r4, #42] + 5458 0122 92B2 uxth r2, r2 +2596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5459 .loc 1 2596 10 view .LVU1884 + 5460 0124 002A cmp r2, #0 + 5461 0126 E0D0 beq .L352 +2596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5462 .loc 1 2596 35 discriminator 1 view .LVU1885 + 5463 0128 002B cmp r3, #0 + 5464 012a DED1 bne .L352 +2599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5465 .loc 1 2599 9 is_stmt 1 view .LVU1886 +2599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5466 .loc 1 2599 13 is_stmt 0 view .LVU1887 + 5467 012c 0096 str r6, [sp] + 5468 012e 3B46 mov r3, r7 + 5469 0130 0022 movs r2, #0 + 5470 0132 8021 movs r1, #128 + 5471 0134 2046 mov r0, r4 + 5472 0136 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 5473 .LVL372: +2599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5474 .loc 1 2599 12 view .LVU1888 + 5475 013a 90BB cbnz r0, .L359 +2604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5476 .loc 1 2604 9 is_stmt 1 view .LVU1889 +2604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5477 .loc 1 2604 17 is_stmt 0 view .LVU1890 + 5478 013c 638D ldrh r3, [r4, #42] + 5479 013e 9BB2 uxth r3, r3 +2604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5480 .loc 1 2604 12 view .LVU1891 + 5481 0140 FF2B cmp r3, #255 + ARM GAS /tmp/ccVyGVF6.s page 260 + + + 5482 0142 C6D9 bls .L353 +2606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 5483 .loc 1 2606 11 is_stmt 1 view .LVU1892 +2606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 5484 .loc 1 2606 26 is_stmt 0 view .LVU1893 + 5485 0144 FF22 movs r2, #255 + 5486 0146 2285 strh r2, [r4, #40] @ movhi +2607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); + 5487 .loc 1 2607 11 is_stmt 1 view .LVU1894 + 5488 0148 0023 movs r3, #0 + 5489 014a 0093 str r3, [sp] + 5490 014c 4FF08073 mov r3, #16777216 + 5491 0150 2946 mov r1, r5 + 5492 0152 2046 mov r0, r4 + 5493 0154 FFF7FEFF bl I2C_TransferConfig + 5494 .LVL373: + 5495 0158 C7E7 b .L352 + 5496 .L365: +2622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5497 .loc 1 2622 5 view .LVU1895 +2622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5498 .loc 1 2622 9 is_stmt 0 view .LVU1896 + 5499 015a 3246 mov r2, r6 + 5500 015c 3946 mov r1, r7 + 5501 015e 2046 mov r0, r4 + 5502 0160 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout + 5503 .LVL374: +2622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5504 .loc 1 2622 8 view .LVU1897 + 5505 0164 F8B9 cbnz r0, .L360 +2628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5506 .loc 1 2628 5 is_stmt 1 view .LVU1898 + 5507 0166 2368 ldr r3, [r4] + 5508 0168 2022 movs r2, #32 + 5509 016a DA61 str r2, [r3, #28] +2631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5510 .loc 1 2631 5 view .LVU1899 + 5511 016c 2168 ldr r1, [r4] + 5512 016e 4B68 ldr r3, [r1, #4] + 5513 0170 23F0FF73 bic r3, r3, #33423360 + 5514 0174 23F48B33 bic r3, r3, #71168 + 5515 0178 23F4FF73 bic r3, r3, #510 + 5516 017c 23F00103 bic r3, r3, #1 + 5517 0180 4B60 str r3, [r1, #4] +2633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 5518 .loc 1 2633 5 view .LVU1900 +2633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 5519 .loc 1 2633 17 is_stmt 0 view .LVU1901 + 5520 0182 84F84120 strb r2, [r4, #65] +2634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5521 .loc 1 2634 5 is_stmt 1 view .LVU1902 +2634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5522 .loc 1 2634 17 is_stmt 0 view .LVU1903 + 5523 0186 0023 movs r3, #0 + 5524 0188 84F84230 strb r3, [r4, #66] +2637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5525 .loc 1 2637 5 is_stmt 1 view .LVU1904 + ARM GAS /tmp/ccVyGVF6.s page 261 + + +2637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5526 .loc 1 2637 5 view .LVU1905 + 5527 018c 84F84030 strb r3, [r4, #64] +2637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5528 .loc 1 2637 5 view .LVU1906 +2639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5529 .loc 1 2639 5 view .LVU1907 +2639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5530 .loc 1 2639 12 is_stmt 0 view .LVU1908 + 5531 0190 00E0 b .L347 + 5532 .LVL375: + 5533 .L355: +2643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5534 .loc 1 2643 12 view .LVU1909 + 5535 0192 0220 movs r0, #2 + 5536 .LVL376: + 5537 .L347: +2645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5538 .loc 1 2645 1 view .LVU1910 + 5539 0194 03B0 add sp, sp, #12 + 5540 .LCFI60: + 5541 .cfi_remember_state + 5542 .cfi_def_cfa_offset 36 + 5543 @ sp needed + 5544 0196 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 5545 .LVL377: + 5546 .L356: + 5547 .LCFI61: + 5548 .cfi_restore_state +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5549 .loc 1 2540 5 view .LVU1911 + 5550 019a 0220 movs r0, #2 + 5551 .LVL378: +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5552 .loc 1 2540 5 view .LVU1912 + 5553 019c FAE7 b .L347 + 5554 .LVL379: + 5555 .L358: +2584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5556 .loc 1 2584 16 view .LVU1913 + 5557 019e 0120 movs r0, #1 + 5558 01a0 F8E7 b .L347 + 5559 .L359: +2601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5560 .loc 1 2601 18 view .LVU1914 + 5561 01a2 0120 movs r0, #1 + 5562 01a4 F6E7 b .L347 + 5563 .L360: +2624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5564 .loc 1 2624 14 view .LVU1915 + 5565 01a6 0120 movs r0, #1 + 5566 01a8 F4E7 b .L347 + 5567 .cfi_endproc + 5568 .LFE157: + 5570 .section .text.HAL_I2C_Mem_Read,"ax",%progbits + 5571 .align 1 + 5572 .global HAL_I2C_Mem_Read + ARM GAS /tmp/ccVyGVF6.s page 262 + + + 5573 .syntax unified + 5574 .thumb + 5575 .thumb_func + 5576 .fpu fpv5-d16 + 5578 HAL_I2C_Mem_Read: + 5579 .LVL380: + 5580 .LFB158: +2662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 5581 .loc 1 2662 1 is_stmt 1 view -0 + 5582 .cfi_startproc + 5583 @ args = 12, pretend = 0, frame = 0 + 5584 @ frame_needed = 0, uses_anonymous_args = 0 +2662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 5585 .loc 1 2662 1 is_stmt 0 view .LVU1917 + 5586 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 5587 .LCFI62: + 5588 .cfi_def_cfa_offset 36 + 5589 .cfi_offset 4, -36 + 5590 .cfi_offset 5, -32 + 5591 .cfi_offset 6, -28 + 5592 .cfi_offset 7, -24 + 5593 .cfi_offset 8, -20 + 5594 .cfi_offset 9, -16 + 5595 .cfi_offset 10, -12 + 5596 .cfi_offset 11, -8 + 5597 .cfi_offset 14, -4 + 5598 0004 83B0 sub sp, sp, #12 + 5599 .LCFI63: + 5600 .cfi_def_cfa_offset 48 + 5601 0006 0D46 mov r5, r1 + 5602 0008 BDF834A0 ldrh r10, [sp, #52] + 5603 000c 0E9F ldr r7, [sp, #56] +2663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5604 .loc 1 2663 3 is_stmt 1 view .LVU1918 +2666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5605 .loc 1 2666 3 view .LVU1919 +2668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5606 .loc 1 2668 3 view .LVU1920 +2668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5607 .loc 1 2668 11 is_stmt 0 view .LVU1921 + 5608 000e 90F84110 ldrb r1, [r0, #65] @ zero_extendqisi2 + 5609 .LVL381: +2668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5610 .loc 1 2668 11 view .LVU1922 + 5611 0012 C9B2 uxtb r1, r1 +2668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5612 .loc 1 2668 6 view .LVU1923 + 5613 0014 2029 cmp r1, #32 + 5614 0016 40F0BD80 bne .L375 + 5615 001a 0446 mov r4, r0 + 5616 001c 9046 mov r8, r2 + 5617 001e 9946 mov r9, r3 +2670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5618 .loc 1 2670 5 is_stmt 1 view .LVU1924 +2670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5619 .loc 1 2670 8 is_stmt 0 view .LVU1925 + 5620 0020 0C9B ldr r3, [sp, #48] + ARM GAS /tmp/ccVyGVF6.s page 263 + + + 5621 .LVL382: +2670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5622 .loc 1 2670 8 view .LVU1926 + 5623 0022 BAF1000F cmp r10, #0 + 5624 0026 18BF it ne + 5625 0028 002B cmpne r3, #0 + 5626 002a 16D0 beq .L382 +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5627 .loc 1 2677 5 is_stmt 1 view .LVU1927 +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5628 .loc 1 2677 5 view .LVU1928 + 5629 002c 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 5630 0030 012B cmp r3, #1 + 5631 0032 00F0B380 beq .L376 +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5632 .loc 1 2677 5 discriminator 2 view .LVU1929 + 5633 0036 4FF0010B mov fp, #1 + 5634 003a 80F840B0 strb fp, [r0, #64] +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5635 .loc 1 2677 5 discriminator 2 view .LVU1930 +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5636 .loc 1 2680 5 discriminator 2 view .LVU1931 +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5637 .loc 1 2680 17 is_stmt 0 discriminator 2 view .LVU1932 + 5638 003e FFF7FEFF bl HAL_GetTick + 5639 .LVL383: +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5640 .loc 1 2680 17 discriminator 2 view .LVU1933 + 5641 0042 0646 mov r6, r0 + 5642 .LVL384: +2682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5643 .loc 1 2682 5 is_stmt 1 discriminator 2 view .LVU1934 +2682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5644 .loc 1 2682 9 is_stmt 0 discriminator 2 view .LVU1935 + 5645 0044 0090 str r0, [sp] + 5646 0046 1923 movs r3, #25 + 5647 0048 5A46 mov r2, fp + 5648 004a 4FF40041 mov r1, #32768 + 5649 004e 2046 mov r0, r4 + 5650 .LVL385: +2682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5651 .loc 1 2682 9 discriminator 2 view .LVU1936 + 5652 0050 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 5653 .LVL386: +2682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5654 .loc 1 2682 8 discriminator 2 view .LVU1937 + 5655 0054 30B1 cbz r0, .L383 +2684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5656 .loc 1 2684 14 view .LVU1938 + 5657 0056 0120 movs r0, #1 + 5658 0058 9DE0 b .L367 + 5659 .LVL387: + 5660 .L382: +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5661 .loc 1 2672 7 is_stmt 1 view .LVU1939 +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5662 .loc 1 2672 23 is_stmt 0 view .LVU1940 + ARM GAS /tmp/ccVyGVF6.s page 264 + + + 5663 005a 4FF40073 mov r3, #512 + 5664 005e 4364 str r3, [r0, #68] +2673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5665 .loc 1 2673 7 is_stmt 1 view .LVU1941 +2673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5666 .loc 1 2673 15 is_stmt 0 view .LVU1942 + 5667 0060 0120 movs r0, #1 + 5668 .LVL388: +2673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5669 .loc 1 2673 15 view .LVU1943 + 5670 0062 98E0 b .L367 + 5671 .LVL389: + 5672 .L383: +2687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 5673 .loc 1 2687 5 is_stmt 1 view .LVU1944 +2687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 5674 .loc 1 2687 21 is_stmt 0 view .LVU1945 + 5675 0064 2223 movs r3, #34 + 5676 0066 84F84130 strb r3, [r4, #65] +2688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 5677 .loc 1 2688 5 is_stmt 1 view .LVU1946 +2688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 5678 .loc 1 2688 21 is_stmt 0 view .LVU1947 + 5679 006a 4023 movs r3, #64 + 5680 006c 84F84230 strb r3, [r4, #66] +2689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5681 .loc 1 2689 5 is_stmt 1 view .LVU1948 +2689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5682 .loc 1 2689 21 is_stmt 0 view .LVU1949 + 5683 0070 0023 movs r3, #0 + 5684 0072 6364 str r3, [r4, #68] +2692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 5685 .loc 1 2692 5 is_stmt 1 view .LVU1950 +2692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 5686 .loc 1 2692 21 is_stmt 0 view .LVU1951 + 5687 0074 0C9A ldr r2, [sp, #48] + 5688 0076 6262 str r2, [r4, #36] +2693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 5689 .loc 1 2693 5 is_stmt 1 view .LVU1952 +2693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 5690 .loc 1 2693 21 is_stmt 0 view .LVU1953 + 5691 0078 A4F82AA0 strh r10, [r4, #42] @ movhi +2694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5692 .loc 1 2694 5 is_stmt 1 view .LVU1954 +2694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5693 .loc 1 2694 21 is_stmt 0 view .LVU1955 + 5694 007c 6363 str r3, [r4, #52] +2697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5695 .loc 1 2697 5 is_stmt 1 view .LVU1956 +2697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5696 .loc 1 2697 9 is_stmt 0 view .LVU1957 + 5697 007e 0196 str r6, [sp, #4] + 5698 0080 0097 str r7, [sp] + 5699 0082 4B46 mov r3, r9 + 5700 0084 4246 mov r2, r8 + 5701 0086 2946 mov r1, r5 + 5702 0088 2046 mov r0, r4 + ARM GAS /tmp/ccVyGVF6.s page 265 + + + 5703 008a FFF7FEFF bl I2C_RequestMemoryRead + 5704 .LVL390: +2697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5705 .loc 1 2697 8 view .LVU1958 + 5706 008e 70B9 cbnz r0, .L384 +2706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5707 .loc 1 2706 5 is_stmt 1 view .LVU1959 +2706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5708 .loc 1 2706 13 is_stmt 0 view .LVU1960 + 5709 0090 638D ldrh r3, [r4, #42] + 5710 0092 9BB2 uxth r3, r3 +2706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5711 .loc 1 2706 8 view .LVU1961 + 5712 0094 FF2B cmp r3, #255 + 5713 0096 0FD9 bls .L370 +2708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 5714 .loc 1 2708 7 is_stmt 1 view .LVU1962 +2708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_RELOAD_MODE, + 5715 .loc 1 2708 22 is_stmt 0 view .LVU1963 + 5716 0098 0122 movs r2, #1 + 5717 009a 2285 strh r2, [r4, #40] @ movhi +2709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); + 5718 .loc 1 2709 7 is_stmt 1 view .LVU1964 + 5719 009c 434B ldr r3, .L386 + 5720 009e 0093 str r3, [sp] + 5721 00a0 4FF08073 mov r3, #16777216 + 5722 00a4 2946 mov r1, r5 + 5723 00a6 2046 mov r0, r4 + 5724 00a8 FFF7FEFF bl I2C_TransferConfig + 5725 .LVL391: + 5726 00ac 21E0 b .L374 + 5727 .L384: +2700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5728 .loc 1 2700 7 view .LVU1965 +2700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5729 .loc 1 2700 7 view .LVU1966 + 5730 00ae 0023 movs r3, #0 + 5731 00b0 84F84030 strb r3, [r4, #64] +2700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 5732 .loc 1 2700 7 view .LVU1967 +2701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5733 .loc 1 2701 7 view .LVU1968 +2701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5734 .loc 1 2701 14 is_stmt 0 view .LVU1969 + 5735 00b4 5846 mov r0, fp + 5736 00b6 6EE0 b .L367 + 5737 .L370: +2714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 5738 .loc 1 2714 7 is_stmt 1 view .LVU1970 +2714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 5739 .loc 1 2714 28 is_stmt 0 view .LVU1971 + 5740 00b8 628D ldrh r2, [r4, #42] + 5741 00ba 92B2 uxth r2, r2 +2714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 5742 .loc 1 2714 22 view .LVU1972 + 5743 00bc 2285 strh r2, [r4, #40] @ movhi +2715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); + ARM GAS /tmp/ccVyGVF6.s page 266 + + + 5744 .loc 1 2715 7 is_stmt 1 view .LVU1973 + 5745 00be 3B4B ldr r3, .L386 + 5746 00c0 0093 str r3, [sp] + 5747 00c2 4FF00073 mov r3, #33554432 + 5748 00c6 D2B2 uxtb r2, r2 + 5749 00c8 2946 mov r1, r5 + 5750 00ca 2046 mov r0, r4 + 5751 00cc FFF7FEFF bl I2C_TransferConfig + 5752 .LVL392: + 5753 00d0 0FE0 b .L374 + 5754 .L373: +2752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 5755 .loc 1 2752 11 view .LVU1974 +2752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 5756 .loc 1 2752 32 is_stmt 0 view .LVU1975 + 5757 00d2 628D ldrh r2, [r4, #42] + 5758 00d4 92B2 uxth r2, r2 +2752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t)hi2c->XferSize, I2C_AUTOEND_MODE, + 5759 .loc 1 2752 26 view .LVU1976 + 5760 00d6 2285 strh r2, [r4, #40] @ movhi +2753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); + 5761 .loc 1 2753 11 is_stmt 1 view .LVU1977 + 5762 00d8 0023 movs r3, #0 + 5763 00da 0093 str r3, [sp] + 5764 00dc 4FF00073 mov r3, #33554432 + 5765 00e0 D2B2 uxtb r2, r2 + 5766 00e2 2946 mov r1, r5 + 5767 00e4 2046 mov r0, r4 + 5768 00e6 FFF7FEFF bl I2C_TransferConfig + 5769 .LVL393: + 5770 .L372: +2757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5771 .loc 1 2757 13 view .LVU1978 +2757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5772 .loc 1 2757 18 is_stmt 0 view .LVU1979 + 5773 00ea 638D ldrh r3, [r4, #42] + 5774 00ec 9BB2 uxth r3, r3 +2757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5775 .loc 1 2757 5 view .LVU1980 + 5776 00ee 002B cmp r3, #0 + 5777 00f0 34D0 beq .L385 + 5778 .L374: +2719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5779 .loc 1 2719 5 is_stmt 1 view .LVU1981 +2722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5780 .loc 1 2722 7 view .LVU1982 +2722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5781 .loc 1 2722 11 is_stmt 0 view .LVU1983 + 5782 00f2 0096 str r6, [sp] + 5783 00f4 3B46 mov r3, r7 + 5784 00f6 0022 movs r2, #0 + 5785 00f8 0421 movs r1, #4 + 5786 00fa 2046 mov r0, r4 + 5787 00fc FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 5788 .LVL394: +2722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5789 .loc 1 2722 10 view .LVU1984 + ARM GAS /tmp/ccVyGVF6.s page 267 + + + 5790 0100 0028 cmp r0, #0 + 5791 0102 4DD1 bne .L378 +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5792 .loc 1 2728 7 is_stmt 1 view .LVU1985 +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5793 .loc 1 2728 38 is_stmt 0 view .LVU1986 + 5794 0104 2368 ldr r3, [r4] +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5795 .loc 1 2728 48 view .LVU1987 + 5796 0106 5A6A ldr r2, [r3, #36] +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5797 .loc 1 2728 12 view .LVU1988 + 5798 0108 636A ldr r3, [r4, #36] +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5799 .loc 1 2728 23 view .LVU1989 + 5800 010a 1A70 strb r2, [r3] +2731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5801 .loc 1 2731 7 is_stmt 1 view .LVU1990 +2731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5802 .loc 1 2731 11 is_stmt 0 view .LVU1991 + 5803 010c 636A ldr r3, [r4, #36] +2731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5804 .loc 1 2731 21 view .LVU1992 + 5805 010e 0133 adds r3, r3, #1 + 5806 0110 6362 str r3, [r4, #36] +2733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 5807 .loc 1 2733 7 is_stmt 1 view .LVU1993 +2733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 5808 .loc 1 2733 11 is_stmt 0 view .LVU1994 + 5809 0112 228D ldrh r2, [r4, #40] +2733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 5810 .loc 1 2733 21 view .LVU1995 + 5811 0114 013A subs r2, r2, #1 + 5812 0116 92B2 uxth r2, r2 + 5813 0118 2285 strh r2, [r4, #40] @ movhi +2734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5814 .loc 1 2734 7 is_stmt 1 view .LVU1996 +2734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5815 .loc 1 2734 11 is_stmt 0 view .LVU1997 + 5816 011a 638D ldrh r3, [r4, #42] + 5817 011c 9BB2 uxth r3, r3 +2734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5818 .loc 1 2734 22 view .LVU1998 + 5819 011e 013B subs r3, r3, #1 + 5820 0120 9BB2 uxth r3, r3 + 5821 0122 6385 strh r3, [r4, #42] @ movhi +2736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5822 .loc 1 2736 7 is_stmt 1 view .LVU1999 +2736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5823 .loc 1 2736 16 is_stmt 0 view .LVU2000 + 5824 0124 638D ldrh r3, [r4, #42] + 5825 0126 9BB2 uxth r3, r3 +2736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5826 .loc 1 2736 10 view .LVU2001 + 5827 0128 002B cmp r3, #0 + 5828 012a DED0 beq .L372 +2736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 268 + + + 5829 .loc 1 2736 35 discriminator 1 view .LVU2002 + 5830 012c 002A cmp r2, #0 + 5831 012e DCD1 bne .L372 +2739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5832 .loc 1 2739 9 is_stmt 1 view .LVU2003 +2739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5833 .loc 1 2739 13 is_stmt 0 view .LVU2004 + 5834 0130 0096 str r6, [sp] + 5835 0132 3B46 mov r3, r7 + 5836 0134 8021 movs r1, #128 + 5837 0136 2046 mov r0, r4 + 5838 0138 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 5839 .LVL395: +2739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5840 .loc 1 2739 12 view .LVU2005 + 5841 013c 90BB cbnz r0, .L379 +2744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5842 .loc 1 2744 9 is_stmt 1 view .LVU2006 +2744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5843 .loc 1 2744 17 is_stmt 0 view .LVU2007 + 5844 013e 638D ldrh r3, [r4, #42] + 5845 0140 9BB2 uxth r3, r3 +2744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5846 .loc 1 2744 12 view .LVU2008 + 5847 0142 FF2B cmp r3, #255 + 5848 0144 C5D9 bls .L373 +2746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, + 5849 .loc 1 2746 11 is_stmt 1 view .LVU2009 +2746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, DevAddress, (uint8_t) hi2c->XferSize, I2C_RELOAD_MODE, + 5850 .loc 1 2746 26 is_stmt 0 view .LVU2010 + 5851 0146 0122 movs r2, #1 + 5852 0148 2285 strh r2, [r4, #40] @ movhi +2747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_NO_STARTSTOP); + 5853 .loc 1 2747 11 is_stmt 1 view .LVU2011 + 5854 014a 0023 movs r3, #0 + 5855 014c 0093 str r3, [sp] + 5856 014e 4FF08073 mov r3, #16777216 + 5857 0152 2946 mov r1, r5 + 5858 0154 2046 mov r0, r4 + 5859 0156 FFF7FEFF bl I2C_TransferConfig + 5860 .LVL396: + 5861 015a C6E7 b .L372 + 5862 .L385: +2761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5863 .loc 1 2761 5 view .LVU2012 +2761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5864 .loc 1 2761 9 is_stmt 0 view .LVU2013 + 5865 015c 3246 mov r2, r6 + 5866 015e 3946 mov r1, r7 + 5867 0160 2046 mov r0, r4 + 5868 0162 FFF7FEFF bl I2C_WaitOnSTOPFlagUntilTimeout + 5869 .LVL397: +2761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5870 .loc 1 2761 8 view .LVU2014 + 5871 0166 F8B9 cbnz r0, .L380 +2767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5872 .loc 1 2767 5 is_stmt 1 view .LVU2015 + ARM GAS /tmp/ccVyGVF6.s page 269 + + + 5873 0168 2368 ldr r3, [r4] + 5874 016a 2022 movs r2, #32 + 5875 016c DA61 str r2, [r3, #28] +2770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5876 .loc 1 2770 5 view .LVU2016 + 5877 016e 2168 ldr r1, [r4] + 5878 0170 4B68 ldr r3, [r1, #4] + 5879 0172 23F0FF73 bic r3, r3, #33423360 + 5880 0176 23F48B33 bic r3, r3, #71168 + 5881 017a 23F4FF73 bic r3, r3, #510 + 5882 017e 23F00103 bic r3, r3, #1 + 5883 0182 4B60 str r3, [r1, #4] +2772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 5884 .loc 1 2772 5 view .LVU2017 +2772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 5885 .loc 1 2772 17 is_stmt 0 view .LVU2018 + 5886 0184 84F84120 strb r2, [r4, #65] +2773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5887 .loc 1 2773 5 is_stmt 1 view .LVU2019 +2773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5888 .loc 1 2773 17 is_stmt 0 view .LVU2020 + 5889 0188 0023 movs r3, #0 + 5890 018a 84F84230 strb r3, [r4, #66] +2776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5891 .loc 1 2776 5 is_stmt 1 view .LVU2021 +2776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5892 .loc 1 2776 5 view .LVU2022 + 5893 018e 84F84030 strb r3, [r4, #64] +2776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5894 .loc 1 2776 5 view .LVU2023 +2778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5895 .loc 1 2778 5 view .LVU2024 +2778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5896 .loc 1 2778 12 is_stmt 0 view .LVU2025 + 5897 0192 00E0 b .L367 + 5898 .LVL398: + 5899 .L375: +2782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5900 .loc 1 2782 12 view .LVU2026 + 5901 0194 0220 movs r0, #2 + 5902 .LVL399: + 5903 .L367: +2784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /** + 5904 .loc 1 2784 1 view .LVU2027 + 5905 0196 03B0 add sp, sp, #12 + 5906 .LCFI64: + 5907 .cfi_remember_state + 5908 .cfi_def_cfa_offset 36 + 5909 @ sp needed + 5910 0198 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 5911 .LVL400: + 5912 .L376: + 5913 .LCFI65: + 5914 .cfi_restore_state +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5915 .loc 1 2677 5 view .LVU2028 + 5916 019c 0220 movs r0, #2 + ARM GAS /tmp/ccVyGVF6.s page 270 + + + 5917 .LVL401: +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5918 .loc 1 2677 5 view .LVU2029 + 5919 019e FAE7 b .L367 + 5920 .LVL402: + 5921 .L378: +2724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5922 .loc 1 2724 16 view .LVU2030 + 5923 01a0 0120 movs r0, #1 + 5924 01a2 F8E7 b .L367 + 5925 .L379: +2741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5926 .loc 1 2741 18 view .LVU2031 + 5927 01a4 0120 movs r0, #1 + 5928 01a6 F6E7 b .L367 + 5929 .L380: +2763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 5930 .loc 1 2763 14 view .LVU2032 + 5931 01a8 0120 movs r0, #1 + 5932 01aa F4E7 b .L367 + 5933 .L387: + 5934 .align 2 + 5935 .L386: + 5936 01ac 00240080 .word -2147474432 + 5937 .cfi_endproc + 5938 .LFE158: + 5940 .section .text.HAL_I2C_Mem_Write_IT,"ax",%progbits + 5941 .align 1 + 5942 .global HAL_I2C_Mem_Write_IT + 5943 .syntax unified + 5944 .thumb + 5945 .thumb_func + 5946 .fpu fpv5-d16 + 5948 HAL_I2C_Mem_Write_IT: + 5949 .LVL403: + 5950 .LFB159: +2799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ + 5951 .loc 1 2799 1 is_stmt 1 view -0 + 5952 .cfi_startproc + 5953 @ args = 8, pretend = 0, frame = 0 + 5954 @ frame_needed = 0, uses_anonymous_args = 0 +2799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ + 5955 .loc 1 2799 1 is_stmt 0 view .LVU2034 + 5956 0000 70B5 push {r4, r5, r6, lr} + 5957 .LCFI66: + 5958 .cfi_def_cfa_offset 16 + 5959 .cfi_offset 4, -16 + 5960 .cfi_offset 5, -12 + 5961 .cfi_offset 6, -8 + 5962 .cfi_offset 14, -4 + 5963 0002 82B0 sub sp, sp, #8 + 5964 .LCFI67: + 5965 .cfi_def_cfa_offset 24 + 5966 0004 0446 mov r4, r0 + 5967 0006 1D46 mov r5, r3 + 5968 0008 BDF81C30 ldrh r3, [sp, #28] + 5969 .LVL404: + ARM GAS /tmp/ccVyGVF6.s page 271 + + +2801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5970 .loc 1 2801 3 is_stmt 1 view .LVU2035 +2803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5971 .loc 1 2803 3 view .LVU2036 +2803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5972 .loc 1 2803 11 is_stmt 0 view .LVU2037 + 5973 000c 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 5974 .LVL405: +2803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5975 .loc 1 2803 11 view .LVU2038 + 5976 0010 C0B2 uxtb r0, r0 +2803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5977 .loc 1 2803 6 view .LVU2039 + 5978 0012 2028 cmp r0, #32 + 5979 0014 43D1 bne .L393 +2805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5980 .loc 1 2805 5 is_stmt 1 view .LVU2040 +2805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5981 .loc 1 2805 8 is_stmt 0 view .LVU2041 + 5982 0016 0698 ldr r0, [sp, #24] + 5983 0018 002B cmp r3, #0 + 5984 001a 18BF it ne + 5985 001c 0028 cmpne r0, #0 + 5986 001e 33D0 beq .L397 +2811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5987 .loc 1 2811 5 is_stmt 1 view .LVU2042 +2811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5988 .loc 1 2811 9 is_stmt 0 view .LVU2043 + 5989 0020 2068 ldr r0, [r4] + 5990 0022 8669 ldr r6, [r0, #24] +2811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 5991 .loc 1 2811 8 view .LVU2044 + 5992 0024 16F4004F tst r6, #32768 + 5993 0028 3CD1 bne .L394 +2817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5994 .loc 1 2817 5 is_stmt 1 view .LVU2045 +2817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5995 .loc 1 2817 5 view .LVU2046 + 5996 002a 94F84060 ldrb r6, [r4, #64] @ zero_extendqisi2 + 5997 002e 012E cmp r6, #1 + 5998 0030 3AD0 beq .L395 +2817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 5999 .loc 1 2817 5 discriminator 2 view .LVU2047 + 6000 0032 0126 movs r6, #1 + 6001 0034 84F84060 strb r6, [r4, #64] +2817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6002 .loc 1 2817 5 discriminator 2 view .LVU2048 +2819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 6003 .loc 1 2819 5 discriminator 2 view .LVU2049 +2819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 6004 .loc 1 2819 23 is_stmt 0 discriminator 2 view .LVU2050 + 6005 0038 2126 movs r6, #33 + 6006 003a 84F84160 strb r6, [r4, #65] +2820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 6007 .loc 1 2820 5 is_stmt 1 discriminator 2 view .LVU2051 +2820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 6008 .loc 1 2820 23 is_stmt 0 discriminator 2 view .LVU2052 + ARM GAS /tmp/ccVyGVF6.s page 272 + + + 6009 003e 4026 movs r6, #64 + 6010 0040 84F84260 strb r6, [r4, #66] +2821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6011 .loc 1 2821 5 is_stmt 1 discriminator 2 view .LVU2053 +2821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6012 .loc 1 2821 23 is_stmt 0 discriminator 2 view .LVU2054 + 6013 0044 0026 movs r6, #0 + 6014 0046 6664 str r6, [r4, #68] +2824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; + 6015 .loc 1 2824 5 is_stmt 1 discriminator 2 view .LVU2055 +2824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->pBuffPtr = pData; + 6016 .loc 1 2824 23 is_stmt 0 discriminator 2 view .LVU2056 + 6017 0048 2685 strh r6, [r4, #40] @ movhi +2825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 6018 .loc 1 2825 5 is_stmt 1 discriminator 2 view .LVU2057 +2825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 6019 .loc 1 2825 23 is_stmt 0 discriminator 2 view .LVU2058 + 6020 004a 069E ldr r6, [sp, #24] + 6021 004c 6662 str r6, [r4, #36] +2826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 6022 .loc 1 2826 5 is_stmt 1 discriminator 2 view .LVU2059 +2826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 6023 .loc 1 2826 23 is_stmt 0 discriminator 2 view .LVU2060 + 6024 004e 6385 strh r3, [r4, #42] @ movhi +2827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT; + 6025 .loc 1 2827 5 is_stmt 1 discriminator 2 view .LVU2061 +2827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT; + 6026 .loc 1 2827 23 is_stmt 0 discriminator 2 view .LVU2062 + 6027 0050 164B ldr r3, .L399 + 6028 0052 E362 str r3, [r4, #44] +2828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; + 6029 .loc 1 2828 5 is_stmt 1 discriminator 2 view .LVU2063 +2828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; + 6030 .loc 1 2828 23 is_stmt 0 discriminator 2 view .LVU2064 + 6031 0054 164B ldr r3, .L399+4 + 6032 0056 6363 str r3, [r4, #52] +2829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6033 .loc 1 2829 5 is_stmt 1 discriminator 2 view .LVU2065 +2829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6034 .loc 1 2829 23 is_stmt 0 discriminator 2 view .LVU2066 + 6035 0058 E164 str r1, [r4, #76] +2832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6036 .loc 1 2832 5 is_stmt 1 discriminator 2 view .LVU2067 +2832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6037 .loc 1 2832 8 is_stmt 0 discriminator 2 view .LVU2068 + 6038 005a 012D cmp r5, #1 + 6039 005c 19D0 beq .L398 +2844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6040 .loc 1 2844 7 is_stmt 1 view .LVU2069 +2844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6041 .loc 1 2844 30 is_stmt 0 view .LVU2070 + 6042 005e 130A lsrs r3, r2, #8 +2844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6043 .loc 1 2844 28 view .LVU2071 + 6044 0060 8362 str r3, [r0, #40] +2847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6045 .loc 1 2847 7 is_stmt 1 view .LVU2072 + ARM GAS /tmp/ccVyGVF6.s page 273 + + +2847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6046 .loc 1 2847 26 is_stmt 0 view .LVU2073 + 6047 0062 D2B2 uxtb r2, r2 + 6048 .LVL406: +2847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6049 .loc 1 2847 24 view .LVU2074 + 6050 0064 2265 str r2, [r4, #80] + 6051 .L392: +2850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6052 .loc 1 2850 5 is_stmt 1 view .LVU2075 + 6053 0066 134B ldr r3, .L399+8 + 6054 0068 0093 str r3, [sp] + 6055 006a 4FF08073 mov r3, #16777216 + 6056 006e EAB2 uxtb r2, r5 + 6057 0070 2046 mov r0, r4 + 6058 0072 FFF7FEFF bl I2C_TransferConfig + 6059 .LVL407: +2853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6060 .loc 1 2853 5 view .LVU2076 +2853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6061 .loc 1 2853 5 view .LVU2077 + 6062 0076 0025 movs r5, #0 + 6063 0078 84F84050 strb r5, [r4, #64] +2853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6064 .loc 1 2853 5 view .LVU2078 +2863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6065 .loc 1 2863 5 view .LVU2079 + 6066 007c 0121 movs r1, #1 + 6067 007e 2046 mov r0, r4 + 6068 0080 FFF7FEFF bl I2C_Enable_IRQ + 6069 .LVL408: +2865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6070 .loc 1 2865 5 view .LVU2080 +2865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6071 .loc 1 2865 12 is_stmt 0 view .LVU2081 + 6072 0084 2846 mov r0, r5 + 6073 0086 0BE0 b .L389 + 6074 .LVL409: + 6075 .L397: +2807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 6076 .loc 1 2807 7 is_stmt 1 view .LVU2082 +2807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 6077 .loc 1 2807 23 is_stmt 0 view .LVU2083 + 6078 0088 4FF40073 mov r3, #512 + 6079 008c 6364 str r3, [r4, #68] +2808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6080 .loc 1 2808 7 is_stmt 1 view .LVU2084 +2808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6081 .loc 1 2808 15 is_stmt 0 view .LVU2085 + 6082 008e 0120 movs r0, #1 + 6083 0090 06E0 b .L389 + 6084 .L398: +2835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6085 .loc 1 2835 7 is_stmt 1 view .LVU2086 +2835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6086 .loc 1 2835 30 is_stmt 0 view .LVU2087 + 6087 0092 D2B2 uxtb r2, r2 + ARM GAS /tmp/ccVyGVF6.s page 274 + + + 6088 .LVL410: +2835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6089 .loc 1 2835 28 view .LVU2088 + 6090 0094 8262 str r2, [r0, #40] +2838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6091 .loc 1 2838 7 is_stmt 1 view .LVU2089 +2838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6092 .loc 1 2838 24 is_stmt 0 view .LVU2090 + 6093 0096 4FF0FF33 mov r3, #-1 + 6094 009a 2365 str r3, [r4, #80] + 6095 009c E3E7 b .L392 + 6096 .LVL411: + 6097 .L393: +2869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6098 .loc 1 2869 12 view .LVU2091 + 6099 009e 0220 movs r0, #2 + 6100 .LVL412: + 6101 .L389: +2871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6102 .loc 1 2871 1 view .LVU2092 + 6103 00a0 02B0 add sp, sp, #8 + 6104 .LCFI68: + 6105 .cfi_remember_state + 6106 .cfi_def_cfa_offset 16 + 6107 @ sp needed + 6108 00a2 70BD pop {r4, r5, r6, pc} + 6109 .LVL413: + 6110 .L394: + 6111 .LCFI69: + 6112 .cfi_restore_state +2813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6113 .loc 1 2813 14 view .LVU2093 + 6114 00a4 0220 movs r0, #2 + 6115 00a6 FBE7 b .L389 + 6116 .L395: +2817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6117 .loc 1 2817 5 view .LVU2094 + 6118 00a8 0220 movs r0, #2 + 6119 00aa F9E7 b .L389 + 6120 .L400: + 6121 .align 2 + 6122 .L399: + 6123 00ac 0000FFFF .word -65536 + 6124 00b0 00000000 .word I2C_Mem_ISR_IT + 6125 00b4 00200080 .word -2147475456 + 6126 .cfi_endproc + 6127 .LFE159: + 6129 .section .text.HAL_I2C_Mem_Read_IT,"ax",%progbits + 6130 .align 1 + 6131 .global HAL_I2C_Mem_Read_IT + 6132 .syntax unified + 6133 .thumb + 6134 .thumb_func + 6135 .fpu fpv5-d16 + 6137 HAL_I2C_Mem_Read_IT: + 6138 .LVL414: + 6139 .LFB160: + ARM GAS /tmp/ccVyGVF6.s page 275 + + +2887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ + 6140 .loc 1 2887 1 is_stmt 1 view -0 + 6141 .cfi_startproc + 6142 @ args = 8, pretend = 0, frame = 0 + 6143 @ frame_needed = 0, uses_anonymous_args = 0 +2887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Check the parameters */ + 6144 .loc 1 2887 1 is_stmt 0 view .LVU2096 + 6145 0000 70B5 push {r4, r5, r6, lr} + 6146 .LCFI70: + 6147 .cfi_def_cfa_offset 16 + 6148 .cfi_offset 4, -16 + 6149 .cfi_offset 5, -12 + 6150 .cfi_offset 6, -8 + 6151 .cfi_offset 14, -4 + 6152 0002 82B0 sub sp, sp, #8 + 6153 .LCFI71: + 6154 .cfi_def_cfa_offset 24 + 6155 0004 0446 mov r4, r0 + 6156 0006 1D46 mov r5, r3 + 6157 0008 BDF81C30 ldrh r3, [sp, #28] + 6158 .LVL415: +2889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6159 .loc 1 2889 3 is_stmt 1 view .LVU2097 +2891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6160 .loc 1 2891 3 view .LVU2098 +2891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6161 .loc 1 2891 11 is_stmt 0 view .LVU2099 + 6162 000c 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 6163 .LVL416: +2891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6164 .loc 1 2891 11 view .LVU2100 + 6165 0010 C0B2 uxtb r0, r0 +2891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6166 .loc 1 2891 6 view .LVU2101 + 6167 0012 2028 cmp r0, #32 + 6168 0014 41D1 bne .L406 +2893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6169 .loc 1 2893 5 is_stmt 1 view .LVU2102 +2893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6170 .loc 1 2893 8 is_stmt 0 view .LVU2103 + 6171 0016 0698 ldr r0, [sp, #24] + 6172 0018 002B cmp r3, #0 + 6173 001a 18BF it ne + 6174 001c 0028 cmpne r0, #0 + 6175 001e 31D0 beq .L410 +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6176 .loc 1 2899 5 is_stmt 1 view .LVU2104 +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6177 .loc 1 2899 9 is_stmt 0 view .LVU2105 + 6178 0020 2068 ldr r0, [r4] + 6179 0022 8669 ldr r6, [r0, #24] +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6180 .loc 1 2899 8 view .LVU2106 + 6181 0024 16F4004F tst r6, #32768 + 6182 0028 3AD1 bne .L407 +2905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6183 .loc 1 2905 5 is_stmt 1 view .LVU2107 + ARM GAS /tmp/ccVyGVF6.s page 276 + + +2905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6184 .loc 1 2905 5 view .LVU2108 + 6185 002a 94F84060 ldrb r6, [r4, #64] @ zero_extendqisi2 + 6186 002e 012E cmp r6, #1 + 6187 0030 38D0 beq .L408 +2905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6188 .loc 1 2905 5 discriminator 2 view .LVU2109 + 6189 0032 0126 movs r6, #1 + 6190 0034 84F84060 strb r6, [r4, #64] +2905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6191 .loc 1 2905 5 discriminator 2 view .LVU2110 +2907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 6192 .loc 1 2907 5 discriminator 2 view .LVU2111 +2907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 6193 .loc 1 2907 23 is_stmt 0 discriminator 2 view .LVU2112 + 6194 0038 2226 movs r6, #34 + 6195 003a 84F84160 strb r6, [r4, #65] +2908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 6196 .loc 1 2908 5 is_stmt 1 discriminator 2 view .LVU2113 +2908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 6197 .loc 1 2908 23 is_stmt 0 discriminator 2 view .LVU2114 + 6198 003e 4026 movs r6, #64 + 6199 0040 84F84260 strb r6, [r4, #66] +2909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6200 .loc 1 2909 5 is_stmt 1 discriminator 2 view .LVU2115 +2909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6201 .loc 1 2909 23 is_stmt 0 discriminator 2 view .LVU2116 + 6202 0044 0026 movs r6, #0 + 6203 0046 6664 str r6, [r4, #68] +2912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 6204 .loc 1 2912 5 is_stmt 1 discriminator 2 view .LVU2117 +2912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 6205 .loc 1 2912 23 is_stmt 0 discriminator 2 view .LVU2118 + 6206 0048 069E ldr r6, [sp, #24] + 6207 004a 6662 str r6, [r4, #36] +2913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 6208 .loc 1 2913 5 is_stmt 1 discriminator 2 view .LVU2119 +2913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 6209 .loc 1 2913 23 is_stmt 0 discriminator 2 view .LVU2120 + 6210 004c 6385 strh r3, [r4, #42] @ movhi +2914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT; + 6211 .loc 1 2914 5 is_stmt 1 discriminator 2 view .LVU2121 +2914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_IT; + 6212 .loc 1 2914 23 is_stmt 0 discriminator 2 view .LVU2122 + 6213 004e 164B ldr r3, .L412 + 6214 0050 E362 str r3, [r4, #44] +2915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; + 6215 .loc 1 2915 5 is_stmt 1 discriminator 2 view .LVU2123 +2915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; + 6216 .loc 1 2915 23 is_stmt 0 discriminator 2 view .LVU2124 + 6217 0052 164B ldr r3, .L412+4 + 6218 0054 6363 str r3, [r4, #52] +2916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6219 .loc 1 2916 5 is_stmt 1 discriminator 2 view .LVU2125 +2916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6220 .loc 1 2916 23 is_stmt 0 discriminator 2 view .LVU2126 + 6221 0056 E164 str r1, [r4, #76] + ARM GAS /tmp/ccVyGVF6.s page 277 + + +2919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6222 .loc 1 2919 5 is_stmt 1 discriminator 2 view .LVU2127 +2919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6223 .loc 1 2919 8 is_stmt 0 discriminator 2 view .LVU2128 + 6224 0058 012D cmp r5, #1 + 6225 005a 18D0 beq .L411 +2931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6226 .loc 1 2931 7 is_stmt 1 view .LVU2129 +2931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6227 .loc 1 2931 30 is_stmt 0 view .LVU2130 + 6228 005c 130A lsrs r3, r2, #8 +2931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6229 .loc 1 2931 28 view .LVU2131 + 6230 005e 8362 str r3, [r0, #40] +2934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6231 .loc 1 2934 7 is_stmt 1 view .LVU2132 +2934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6232 .loc 1 2934 26 is_stmt 0 view .LVU2133 + 6233 0060 D2B2 uxtb r2, r2 + 6234 .LVL417: +2934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6235 .loc 1 2934 24 view .LVU2134 + 6236 0062 2265 str r2, [r4, #80] + 6237 .L405: +2937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6238 .loc 1 2937 5 is_stmt 1 view .LVU2135 + 6239 0064 124B ldr r3, .L412+8 + 6240 0066 0093 str r3, [sp] + 6241 0068 0023 movs r3, #0 + 6242 006a EAB2 uxtb r2, r5 + 6243 006c 2046 mov r0, r4 + 6244 006e FFF7FEFF bl I2C_TransferConfig + 6245 .LVL418: +2940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6246 .loc 1 2940 5 view .LVU2136 +2940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6247 .loc 1 2940 5 view .LVU2137 + 6248 0072 0025 movs r5, #0 + 6249 0074 84F84050 strb r5, [r4, #64] +2940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6250 .loc 1 2940 5 view .LVU2138 +2950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6251 .loc 1 2950 5 view .LVU2139 + 6252 0078 0121 movs r1, #1 + 6253 007a 2046 mov r0, r4 + 6254 007c FFF7FEFF bl I2C_Enable_IRQ + 6255 .LVL419: +2952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6256 .loc 1 2952 5 view .LVU2140 +2952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6257 .loc 1 2952 12 is_stmt 0 view .LVU2141 + 6258 0080 2846 mov r0, r5 + 6259 0082 0BE0 b .L402 + 6260 .LVL420: + 6261 .L410: +2895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 6262 .loc 1 2895 7 is_stmt 1 view .LVU2142 + ARM GAS /tmp/ccVyGVF6.s page 278 + + +2895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 6263 .loc 1 2895 23 is_stmt 0 view .LVU2143 + 6264 0084 4FF40073 mov r3, #512 + 6265 0088 6364 str r3, [r4, #68] +2896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6266 .loc 1 2896 7 is_stmt 1 view .LVU2144 +2896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6267 .loc 1 2896 15 is_stmt 0 view .LVU2145 + 6268 008a 0120 movs r0, #1 + 6269 008c 06E0 b .L402 + 6270 .L411: +2922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6271 .loc 1 2922 7 is_stmt 1 view .LVU2146 +2922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6272 .loc 1 2922 30 is_stmt 0 view .LVU2147 + 6273 008e D2B2 uxtb r2, r2 + 6274 .LVL421: +2922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6275 .loc 1 2922 28 view .LVU2148 + 6276 0090 8262 str r2, [r0, #40] +2925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6277 .loc 1 2925 7 is_stmt 1 view .LVU2149 +2925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6278 .loc 1 2925 24 is_stmt 0 view .LVU2150 + 6279 0092 4FF0FF33 mov r3, #-1 + 6280 0096 2365 str r3, [r4, #80] + 6281 0098 E4E7 b .L405 + 6282 .LVL422: + 6283 .L406: +2956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6284 .loc 1 2956 12 view .LVU2151 + 6285 009a 0220 movs r0, #2 + 6286 .LVL423: + 6287 .L402: +2958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6288 .loc 1 2958 1 view .LVU2152 + 6289 009c 02B0 add sp, sp, #8 + 6290 .LCFI72: + 6291 .cfi_remember_state + 6292 .cfi_def_cfa_offset 16 + 6293 @ sp needed + 6294 009e 70BD pop {r4, r5, r6, pc} + 6295 .LVL424: + 6296 .L407: + 6297 .LCFI73: + 6298 .cfi_restore_state +2901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6299 .loc 1 2901 14 view .LVU2153 + 6300 00a0 0220 movs r0, #2 + 6301 00a2 FBE7 b .L402 + 6302 .L408: +2905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6303 .loc 1 2905 5 view .LVU2154 + 6304 00a4 0220 movs r0, #2 + 6305 00a6 F9E7 b .L402 + 6306 .L413: + 6307 .align 2 + ARM GAS /tmp/ccVyGVF6.s page 279 + + + 6308 .L412: + 6309 00a8 0000FFFF .word -65536 + 6310 00ac 00000000 .word I2C_Mem_ISR_IT + 6311 00b0 00200080 .word -2147475456 + 6312 .cfi_endproc + 6313 .LFE160: + 6315 .section .text.HAL_I2C_Mem_Write_DMA,"ax",%progbits + 6316 .align 1 + 6317 .global HAL_I2C_Mem_Write_DMA + 6318 .syntax unified + 6319 .thumb + 6320 .thumb_func + 6321 .fpu fpv5-d16 + 6323 HAL_I2C_Mem_Write_DMA: + 6324 .LVL425: + 6325 .LFB161: +2974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 6326 .loc 1 2974 1 is_stmt 1 view -0 + 6327 .cfi_startproc + 6328 @ args = 8, pretend = 0, frame = 0 + 6329 @ frame_needed = 0, uses_anonymous_args = 0 +2974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 6330 .loc 1 2974 1 is_stmt 0 view .LVU2156 + 6331 0000 F0B5 push {r4, r5, r6, r7, lr} + 6332 .LCFI74: + 6333 .cfi_def_cfa_offset 20 + 6334 .cfi_offset 4, -20 + 6335 .cfi_offset 5, -16 + 6336 .cfi_offset 6, -12 + 6337 .cfi_offset 7, -8 + 6338 .cfi_offset 14, -4 + 6339 0002 83B0 sub sp, sp, #12 + 6340 .LCFI75: + 6341 .cfi_def_cfa_offset 32 + 6342 0004 0446 mov r4, r0 + 6343 0006 0E46 mov r6, r1 + 6344 0008 1F46 mov r7, r3 + 6345 000a 0899 ldr r1, [sp, #32] + 6346 .LVL426: +2974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 6347 .loc 1 2974 1 view .LVU2157 + 6348 000c BDF82430 ldrh r3, [sp, #36] + 6349 .LVL427: +2975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6350 .loc 1 2975 3 is_stmt 1 view .LVU2158 +2978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6351 .loc 1 2978 3 view .LVU2159 +2980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6352 .loc 1 2980 3 view .LVU2160 +2980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6353 .loc 1 2980 11 is_stmt 0 view .LVU2161 + 6354 0010 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 6355 .LVL428: +2980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6356 .loc 1 2980 11 view .LVU2162 + 6357 0014 C0B2 uxtb r0, r0 +2980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 280 + + + 6358 .loc 1 2980 6 view .LVU2163 + 6359 0016 2028 cmp r0, #32 + 6360 0018 7AD1 bne .L424 +2982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6361 .loc 1 2982 5 is_stmt 1 view .LVU2164 +2982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6362 .loc 1 2982 8 is_stmt 0 view .LVU2165 + 6363 001a 002B cmp r3, #0 + 6364 001c 18BF it ne + 6365 001e 0029 cmpne r1, #0 + 6366 0020 49D0 beq .L429 +2988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6367 .loc 1 2988 5 is_stmt 1 view .LVU2166 +2988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6368 .loc 1 2988 9 is_stmt 0 view .LVU2167 + 6369 0022 2068 ldr r0, [r4] + 6370 0024 8569 ldr r5, [r0, #24] +2988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6371 .loc 1 2988 8 view .LVU2168 + 6372 0026 15F4004F tst r5, #32768 + 6373 002a 75D1 bne .L425 +2994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6374 .loc 1 2994 5 is_stmt 1 view .LVU2169 +2994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6375 .loc 1 2994 5 view .LVU2170 + 6376 002c 94F84050 ldrb r5, [r4, #64] @ zero_extendqisi2 + 6377 0030 012D cmp r5, #1 + 6378 0032 73D0 beq .L426 +2994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6379 .loc 1 2994 5 discriminator 2 view .LVU2171 + 6380 0034 0125 movs r5, #1 + 6381 0036 84F84050 strb r5, [r4, #64] +2994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6382 .loc 1 2994 5 discriminator 2 view .LVU2172 +2996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 6383 .loc 1 2996 5 discriminator 2 view .LVU2173 +2996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 6384 .loc 1 2996 23 is_stmt 0 discriminator 2 view .LVU2174 + 6385 003a 2125 movs r5, #33 + 6386 003c 84F84150 strb r5, [r4, #65] +2997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 6387 .loc 1 2997 5 is_stmt 1 discriminator 2 view .LVU2175 +2997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 6388 .loc 1 2997 23 is_stmt 0 discriminator 2 view .LVU2176 + 6389 0040 4025 movs r5, #64 + 6390 0042 84F84250 strb r5, [r4, #66] +2998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6391 .loc 1 2998 5 is_stmt 1 discriminator 2 view .LVU2177 +2998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6392 .loc 1 2998 23 is_stmt 0 discriminator 2 view .LVU2178 + 6393 0046 0025 movs r5, #0 + 6394 0048 6564 str r5, [r4, #68] +3001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 6395 .loc 1 3001 5 is_stmt 1 discriminator 2 view .LVU2179 +3001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 6396 .loc 1 3001 23 is_stmt 0 discriminator 2 view .LVU2180 + 6397 004a 6162 str r1, [r4, #36] + ARM GAS /tmp/ccVyGVF6.s page 281 + + +3002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 6398 .loc 1 3002 5 is_stmt 1 discriminator 2 view .LVU2181 +3002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 6399 .loc 1 3002 23 is_stmt 0 discriminator 2 view .LVU2182 + 6400 004c 6385 strh r3, [r4, #42] @ movhi +3003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA; + 6401 .loc 1 3003 5 is_stmt 1 discriminator 2 view .LVU2183 +3003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA; + 6402 .loc 1 3003 23 is_stmt 0 discriminator 2 view .LVU2184 + 6403 004e 344B ldr r3, .L432 + 6404 0050 E362 str r3, [r4, #44] +3004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; + 6405 .loc 1 3004 5 is_stmt 1 discriminator 2 view .LVU2185 +3004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; + 6406 .loc 1 3004 23 is_stmt 0 discriminator 2 view .LVU2186 + 6407 0052 344B ldr r3, .L432+4 + 6408 0054 6363 str r3, [r4, #52] +3005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6409 .loc 1 3005 5 is_stmt 1 discriminator 2 view .LVU2187 +3005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6410 .loc 1 3005 23 is_stmt 0 discriminator 2 view .LVU2188 + 6411 0056 E664 str r6, [r4, #76] +3007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6412 .loc 1 3007 5 is_stmt 1 discriminator 2 view .LVU2189 +3007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6413 .loc 1 3007 13 is_stmt 0 discriminator 2 view .LVU2190 + 6414 0058 638D ldrh r3, [r4, #42] + 6415 005a 9BB2 uxth r3, r3 +3007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6416 .loc 1 3007 8 discriminator 2 view .LVU2191 + 6417 005c FF2B cmp r3, #255 + 6418 005e 2FD9 bls .L417 +3009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6419 .loc 1 3009 7 is_stmt 1 view .LVU2192 +3009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6420 .loc 1 3009 22 is_stmt 0 view .LVU2193 + 6421 0060 FF23 movs r3, #255 + 6422 0062 2385 strh r3, [r4, #40] @ movhi + 6423 .L418: +3017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6424 .loc 1 3017 5 is_stmt 1 view .LVU2194 +3017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6425 .loc 1 3017 8 is_stmt 0 view .LVU2195 + 6426 0064 012F cmp r7, #1 + 6427 0066 2ED0 beq .L430 +3029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6428 .loc 1 3029 7 is_stmt 1 view .LVU2196 +3029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6429 .loc 1 3029 30 is_stmt 0 view .LVU2197 + 6430 0068 130A lsrs r3, r2, #8 +3029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6431 .loc 1 3029 28 view .LVU2198 + 6432 006a 8362 str r3, [r0, #40] +3032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6433 .loc 1 3032 7 is_stmt 1 view .LVU2199 +3032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6434 .loc 1 3032 26 is_stmt 0 view .LVU2200 + ARM GAS /tmp/ccVyGVF6.s page 282 + + + 6435 006c D2B2 uxtb r2, r2 + 6436 .LVL429: +3032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6437 .loc 1 3032 24 view .LVU2201 + 6438 006e 2265 str r2, [r4, #80] + 6439 .L420: +3035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6440 .loc 1 3035 5 is_stmt 1 view .LVU2202 +3035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6441 .loc 1 3035 13 is_stmt 0 view .LVU2203 + 6442 0070 A36B ldr r3, [r4, #56] +3035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6443 .loc 1 3035 8 view .LVU2204 + 6444 0072 002B cmp r3, #0 + 6445 0074 2DD0 beq .L421 +3038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6446 .loc 1 3038 7 is_stmt 1 view .LVU2205 +3038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6447 .loc 1 3038 38 is_stmt 0 view .LVU2206 + 6448 0076 2C4A ldr r2, .L432+8 + 6449 0078 DA63 str r2, [r3, #60] +3041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6450 .loc 1 3041 7 is_stmt 1 view .LVU2207 +3041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6451 .loc 1 3041 11 is_stmt 0 view .LVU2208 + 6452 007a A36B ldr r3, [r4, #56] +3041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6453 .loc 1 3041 39 view .LVU2209 + 6454 007c 2B4A ldr r2, .L432+12 + 6455 007e DA64 str r2, [r3, #76] +3044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 6456 .loc 1 3044 7 is_stmt 1 view .LVU2210 +3044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 6457 .loc 1 3044 11 is_stmt 0 view .LVU2211 + 6458 0080 A26B ldr r2, [r4, #56] +3044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 6459 .loc 1 3044 42 view .LVU2212 + 6460 0082 0023 movs r3, #0 + 6461 0084 1364 str r3, [r2, #64] +3045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6462 .loc 1 3045 7 is_stmt 1 view .LVU2213 +3045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6463 .loc 1 3045 11 is_stmt 0 view .LVU2214 + 6464 0086 A26B ldr r2, [r4, #56] +3045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6465 .loc 1 3045 39 view .LVU2215 + 6466 0088 1365 str r3, [r2, #80] +3048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 6467 .loc 1 3048 7 is_stmt 1 view .LVU2216 +3048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 6468 .loc 1 3048 86 is_stmt 0 view .LVU2217 + 6469 008a 2268 ldr r2, [r4] +3048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 6470 .loc 1 3048 23 view .LVU2218 + 6471 008c 238D ldrh r3, [r4, #40] + 6472 008e 2832 adds r2, r2, #40 + 6473 0090 A06B ldr r0, [r4, #56] + ARM GAS /tmp/ccVyGVF6.s page 283 + + + 6474 0092 FFF7FEFF bl HAL_DMA_Start_IT + 6475 .LVL430: +3066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6476 .loc 1 3066 5 is_stmt 1 view .LVU2219 +3066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6477 .loc 1 3066 8 is_stmt 0 view .LVU2220 + 6478 0096 0546 mov r5, r0 + 6479 0098 48B3 cbz r0, .L431 +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 6480 .loc 1 3086 7 is_stmt 1 view .LVU2221 +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 6481 .loc 1 3086 23 is_stmt 0 view .LVU2222 + 6482 009a 2023 movs r3, #32 + 6483 009c 84F84130 strb r3, [r4, #65] +3087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6484 .loc 1 3087 7 is_stmt 1 view .LVU2223 +3087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6485 .loc 1 3087 23 is_stmt 0 view .LVU2224 + 6486 00a0 0022 movs r2, #0 + 6487 00a2 84F84220 strb r2, [r4, #66] +3090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6488 .loc 1 3090 7 is_stmt 1 view .LVU2225 +3090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6489 .loc 1 3090 23 is_stmt 0 view .LVU2226 + 6490 00a6 636C ldr r3, [r4, #68] + 6491 00a8 43F01003 orr r3, r3, #16 + 6492 00ac 6364 str r3, [r4, #68] +3093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6493 .loc 1 3093 7 is_stmt 1 view .LVU2227 +3093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6494 .loc 1 3093 7 view .LVU2228 + 6495 00ae 84F84020 strb r2, [r4, #64] +3093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6496 .loc 1 3093 7 view .LVU2229 +3095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6497 .loc 1 3095 7 view .LVU2230 +3095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6498 .loc 1 3095 14 is_stmt 0 view .LVU2231 + 6499 00b2 0125 movs r5, #1 + 6500 00b4 2DE0 b .L415 + 6501 .LVL431: + 6502 .L429: +2984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 6503 .loc 1 2984 7 is_stmt 1 view .LVU2232 +2984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 6504 .loc 1 2984 23 is_stmt 0 view .LVU2233 + 6505 00b6 4FF40073 mov r3, #512 + 6506 00ba 6364 str r3, [r4, #68] +2985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6507 .loc 1 2985 7 is_stmt 1 view .LVU2234 +2985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6508 .loc 1 2985 15 is_stmt 0 view .LVU2235 + 6509 00bc 0125 movs r5, #1 + 6510 00be 28E0 b .L415 + 6511 .L417: +3013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6512 .loc 1 3013 7 is_stmt 1 view .LVU2236 + ARM GAS /tmp/ccVyGVF6.s page 284 + + +3013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6513 .loc 1 3013 28 is_stmt 0 view .LVU2237 + 6514 00c0 638D ldrh r3, [r4, #42] +3013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6515 .loc 1 3013 22 view .LVU2238 + 6516 00c2 2385 strh r3, [r4, #40] @ movhi + 6517 00c4 CEE7 b .L418 + 6518 .L430: +3020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6519 .loc 1 3020 7 is_stmt 1 view .LVU2239 +3020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6520 .loc 1 3020 30 is_stmt 0 view .LVU2240 + 6521 00c6 D2B2 uxtb r2, r2 + 6522 .LVL432: +3020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6523 .loc 1 3020 28 view .LVU2241 + 6524 00c8 8262 str r2, [r0, #40] +3023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6525 .loc 1 3023 7 is_stmt 1 view .LVU2242 +3023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6526 .loc 1 3023 24 is_stmt 0 view .LVU2243 + 6527 00ca 4FF0FF33 mov r3, #-1 + 6528 00ce 2365 str r3, [r4, #80] + 6529 00d0 CEE7 b .L420 + 6530 .L421: +3054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 6531 .loc 1 3054 7 is_stmt 1 view .LVU2244 +3054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 6532 .loc 1 3054 23 is_stmt 0 view .LVU2245 + 6533 00d2 2023 movs r3, #32 + 6534 00d4 84F84130 strb r3, [r4, #65] +3055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6535 .loc 1 3055 7 is_stmt 1 view .LVU2246 +3055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6536 .loc 1 3055 23 is_stmt 0 view .LVU2247 + 6537 00d8 0022 movs r2, #0 + 6538 00da 84F84220 strb r2, [r4, #66] +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6539 .loc 1 3058 7 is_stmt 1 view .LVU2248 +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6540 .loc 1 3058 23 is_stmt 0 view .LVU2249 + 6541 00de 636C ldr r3, [r4, #68] + 6542 00e0 43F08003 orr r3, r3, #128 + 6543 00e4 6364 str r3, [r4, #68] +3061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6544 .loc 1 3061 7 is_stmt 1 view .LVU2250 +3061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6545 .loc 1 3061 7 view .LVU2251 + 6546 00e6 84F84020 strb r2, [r4, #64] +3061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6547 .loc 1 3061 7 view .LVU2252 +3063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6548 .loc 1 3063 7 view .LVU2253 +3063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6549 .loc 1 3063 14 is_stmt 0 view .LVU2254 + 6550 00ea 0125 movs r5, #1 + 6551 00ec 11E0 b .L415 + ARM GAS /tmp/ccVyGVF6.s page 285 + + + 6552 .LVL433: + 6553 .L431: +3069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6554 .loc 1 3069 7 is_stmt 1 view .LVU2255 + 6555 00ee 104B ldr r3, .L432+16 + 6556 00f0 0093 str r3, [sp] + 6557 00f2 4FF08073 mov r3, #16777216 + 6558 00f6 FAB2 uxtb r2, r7 + 6559 00f8 3146 mov r1, r6 + 6560 00fa 2046 mov r0, r4 + 6561 .LVL434: +3069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6562 .loc 1 3069 7 is_stmt 0 view .LVU2256 + 6563 00fc FFF7FEFF bl I2C_TransferConfig + 6564 .LVL435: +3072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6565 .loc 1 3072 7 is_stmt 1 view .LVU2257 +3072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6566 .loc 1 3072 7 view .LVU2258 + 6567 0100 0023 movs r3, #0 + 6568 0102 84F84030 strb r3, [r4, #64] +3072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6569 .loc 1 3072 7 view .LVU2259 +3081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6570 .loc 1 3081 7 view .LVU2260 + 6571 0106 0121 movs r1, #1 + 6572 0108 2046 mov r0, r4 + 6573 010a FFF7FEFF bl I2C_Enable_IRQ + 6574 .LVL436: +3098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6575 .loc 1 3098 5 view .LVU2261 +3098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6576 .loc 1 3098 12 is_stmt 0 view .LVU2262 + 6577 010e 00E0 b .L415 + 6578 .LVL437: + 6579 .L424: +3102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6580 .loc 1 3102 12 view .LVU2263 + 6581 0110 0225 movs r5, #2 + 6582 .LVL438: + 6583 .L415: +3104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6584 .loc 1 3104 1 view .LVU2264 + 6585 0112 2846 mov r0, r5 + 6586 0114 03B0 add sp, sp, #12 + 6587 .LCFI76: + 6588 .cfi_remember_state + 6589 .cfi_def_cfa_offset 20 + 6590 @ sp needed + 6591 0116 F0BD pop {r4, r5, r6, r7, pc} + 6592 .LVL439: + 6593 .L425: + 6594 .LCFI77: + 6595 .cfi_restore_state +2990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6596 .loc 1 2990 14 view .LVU2265 + 6597 0118 0225 movs r5, #2 + ARM GAS /tmp/ccVyGVF6.s page 286 + + + 6598 011a FAE7 b .L415 + 6599 .L426: +2994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6600 .loc 1 2994 5 view .LVU2266 + 6601 011c 0225 movs r5, #2 + 6602 011e F8E7 b .L415 + 6603 .L433: + 6604 .align 2 + 6605 .L432: + 6606 0120 0000FFFF .word -65536 + 6607 0124 00000000 .word I2C_Mem_ISR_DMA + 6608 0128 00000000 .word I2C_DMAMasterTransmitCplt + 6609 012c 00000000 .word I2C_DMAError + 6610 0130 00200080 .word -2147475456 + 6611 .cfi_endproc + 6612 .LFE161: + 6614 .section .text.HAL_I2C_Mem_Read_DMA,"ax",%progbits + 6615 .align 1 + 6616 .global HAL_I2C_Mem_Read_DMA + 6617 .syntax unified + 6618 .thumb + 6619 .thumb_func + 6620 .fpu fpv5-d16 + 6622 HAL_I2C_Mem_Read_DMA: + 6623 .LVL440: + 6624 .LFB162: +3120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 6625 .loc 1 3120 1 is_stmt 1 view -0 + 6626 .cfi_startproc + 6627 @ args = 8, pretend = 0, frame = 0 + 6628 @ frame_needed = 0, uses_anonymous_args = 0 +3120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 6629 .loc 1 3120 1 is_stmt 0 view .LVU2268 + 6630 0000 F0B5 push {r4, r5, r6, r7, lr} + 6631 .LCFI78: + 6632 .cfi_def_cfa_offset 20 + 6633 .cfi_offset 4, -20 + 6634 .cfi_offset 5, -16 + 6635 .cfi_offset 6, -12 + 6636 .cfi_offset 7, -8 + 6637 .cfi_offset 14, -4 + 6638 0002 83B0 sub sp, sp, #12 + 6639 .LCFI79: + 6640 .cfi_def_cfa_offset 32 + 6641 0004 0446 mov r4, r0 + 6642 0006 1F46 mov r7, r3 + 6643 0008 089D ldr r5, [sp, #32] + 6644 000a BDF82430 ldrh r3, [sp, #36] + 6645 .LVL441: +3121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6646 .loc 1 3121 3 is_stmt 1 view .LVU2269 +3124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6647 .loc 1 3124 3 view .LVU2270 +3126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6648 .loc 1 3126 3 view .LVU2271 +3126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6649 .loc 1 3126 11 is_stmt 0 view .LVU2272 + ARM GAS /tmp/ccVyGVF6.s page 287 + + + 6650 000e 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 6651 .LVL442: +3126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6652 .loc 1 3126 11 view .LVU2273 + 6653 0012 C0B2 uxtb r0, r0 +3126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6654 .loc 1 3126 6 view .LVU2274 + 6655 0014 2028 cmp r0, #32 + 6656 0016 7BD1 bne .L444 + 6657 0018 0E46 mov r6, r1 +3128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6658 .loc 1 3128 5 is_stmt 1 view .LVU2275 +3128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6659 .loc 1 3128 8 is_stmt 0 view .LVU2276 + 6660 001a 002B cmp r3, #0 + 6661 001c 18BF it ne + 6662 001e 002D cmpne r5, #0 + 6663 0020 4AD0 beq .L449 +3134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6664 .loc 1 3134 5 is_stmt 1 view .LVU2277 +3134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6665 .loc 1 3134 9 is_stmt 0 view .LVU2278 + 6666 0022 2168 ldr r1, [r4] + 6667 .LVL443: +3134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6668 .loc 1 3134 9 view .LVU2279 + 6669 0024 8869 ldr r0, [r1, #24] +3134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6670 .loc 1 3134 8 view .LVU2280 + 6671 0026 10F4004F tst r0, #32768 + 6672 002a 75D1 bne .L445 +3140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6673 .loc 1 3140 5 is_stmt 1 view .LVU2281 +3140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6674 .loc 1 3140 5 view .LVU2282 + 6675 002c 94F84000 ldrb r0, [r4, #64] @ zero_extendqisi2 + 6676 0030 0128 cmp r0, #1 + 6677 0032 73D0 beq .L446 +3140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6678 .loc 1 3140 5 discriminator 2 view .LVU2283 + 6679 0034 0120 movs r0, #1 + 6680 0036 84F84000 strb r0, [r4, #64] +3140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6681 .loc 1 3140 5 discriminator 2 view .LVU2284 +3142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 6682 .loc 1 3142 5 discriminator 2 view .LVU2285 +3142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MEM; + 6683 .loc 1 3142 23 is_stmt 0 discriminator 2 view .LVU2286 + 6684 003a 2220 movs r0, #34 + 6685 003c 84F84100 strb r0, [r4, #65] +3143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 6686 .loc 1 3143 5 is_stmt 1 discriminator 2 view .LVU2287 +3143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 6687 .loc 1 3143 23 is_stmt 0 discriminator 2 view .LVU2288 + 6688 0040 4020 movs r0, #64 + 6689 0042 84F84200 strb r0, [r4, #66] +3144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 288 + + + 6690 .loc 1 3144 5 is_stmt 1 discriminator 2 view .LVU2289 +3144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6691 .loc 1 3144 23 is_stmt 0 discriminator 2 view .LVU2290 + 6692 0046 0020 movs r0, #0 + 6693 0048 6064 str r0, [r4, #68] +3147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 6694 .loc 1 3147 5 is_stmt 1 discriminator 2 view .LVU2291 +3147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 6695 .loc 1 3147 23 is_stmt 0 discriminator 2 view .LVU2292 + 6696 004a 6562 str r5, [r4, #36] +3148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 6697 .loc 1 3148 5 is_stmt 1 discriminator 2 view .LVU2293 +3148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 6698 .loc 1 3148 23 is_stmt 0 discriminator 2 view .LVU2294 + 6699 004c 6385 strh r3, [r4, #42] @ movhi +3149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA; + 6700 .loc 1 3149 5 is_stmt 1 discriminator 2 view .LVU2295 +3149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Mem_ISR_DMA; + 6701 .loc 1 3149 23 is_stmt 0 discriminator 2 view .LVU2296 + 6702 004e 344B ldr r3, .L452 + 6703 0050 E362 str r3, [r4, #44] +3150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; + 6704 .loc 1 3150 5 is_stmt 1 discriminator 2 view .LVU2297 +3150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Devaddress = DevAddress; + 6705 .loc 1 3150 23 is_stmt 0 discriminator 2 view .LVU2298 + 6706 0052 344B ldr r3, .L452+4 + 6707 0054 6363 str r3, [r4, #52] +3151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6708 .loc 1 3151 5 is_stmt 1 discriminator 2 view .LVU2299 +3151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6709 .loc 1 3151 23 is_stmt 0 discriminator 2 view .LVU2300 + 6710 0056 E664 str r6, [r4, #76] +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6711 .loc 1 3153 5 is_stmt 1 discriminator 2 view .LVU2301 +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6712 .loc 1 3153 13 is_stmt 0 discriminator 2 view .LVU2302 + 6713 0058 638D ldrh r3, [r4, #42] + 6714 005a 9BB2 uxth r3, r3 +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6715 .loc 1 3153 8 discriminator 2 view .LVU2303 + 6716 005c FF2B cmp r3, #255 + 6717 005e 30D9 bls .L437 +3155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6718 .loc 1 3155 7 is_stmt 1 view .LVU2304 +3155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6719 .loc 1 3155 22 is_stmt 0 view .LVU2305 + 6720 0060 FF23 movs r3, #255 + 6721 0062 2385 strh r3, [r4, #40] @ movhi + 6722 .L438: +3163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6723 .loc 1 3163 5 is_stmt 1 view .LVU2306 +3163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6724 .loc 1 3163 8 is_stmt 0 view .LVU2307 + 6725 0064 012F cmp r7, #1 + 6726 0066 2FD0 beq .L450 +3175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6727 .loc 1 3175 7 is_stmt 1 view .LVU2308 + ARM GAS /tmp/ccVyGVF6.s page 289 + + +3175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6728 .loc 1 3175 30 is_stmt 0 view .LVU2309 + 6729 0068 130A lsrs r3, r2, #8 +3175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6730 .loc 1 3175 28 view .LVU2310 + 6731 006a 8B62 str r3, [r1, #40] +3178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6732 .loc 1 3178 7 is_stmt 1 view .LVU2311 +3178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6733 .loc 1 3178 26 is_stmt 0 view .LVU2312 + 6734 006c D2B2 uxtb r2, r2 + 6735 .LVL444: +3178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6736 .loc 1 3178 24 view .LVU2313 + 6737 006e 2265 str r2, [r4, #80] + 6738 .L440: +3181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6739 .loc 1 3181 5 is_stmt 1 view .LVU2314 +3181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6740 .loc 1 3181 13 is_stmt 0 view .LVU2315 + 6741 0070 E36B ldr r3, [r4, #60] +3181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6742 .loc 1 3181 8 view .LVU2316 + 6743 0072 002B cmp r3, #0 + 6744 0074 2ED0 beq .L441 +3184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6745 .loc 1 3184 7 is_stmt 1 view .LVU2317 +3184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6746 .loc 1 3184 38 is_stmt 0 view .LVU2318 + 6747 0076 2C4A ldr r2, .L452+8 + 6748 0078 DA63 str r2, [r3, #60] +3187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6749 .loc 1 3187 7 is_stmt 1 view .LVU2319 +3187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6750 .loc 1 3187 11 is_stmt 0 view .LVU2320 + 6751 007a E36B ldr r3, [r4, #60] +3187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6752 .loc 1 3187 39 view .LVU2321 + 6753 007c 2B4A ldr r2, .L452+12 + 6754 007e DA64 str r2, [r3, #76] +3190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 6755 .loc 1 3190 7 is_stmt 1 view .LVU2322 +3190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 6756 .loc 1 3190 11 is_stmt 0 view .LVU2323 + 6757 0080 E26B ldr r2, [r4, #60] +3190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 6758 .loc 1 3190 42 view .LVU2324 + 6759 0082 0023 movs r3, #0 + 6760 0084 1364 str r3, [r2, #64] +3191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6761 .loc 1 3191 7 is_stmt 1 view .LVU2325 +3191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6762 .loc 1 3191 11 is_stmt 0 view .LVU2326 + 6763 0086 E26B ldr r2, [r4, #60] +3191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6764 .loc 1 3191 39 view .LVU2327 + 6765 0088 1365 str r3, [r2, #80] + ARM GAS /tmp/ccVyGVF6.s page 290 + + +3194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 6766 .loc 1 3194 7 is_stmt 1 view .LVU2328 +3194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 6767 .loc 1 3194 69 is_stmt 0 view .LVU2329 + 6768 008a 2168 ldr r1, [r4] +3194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 6769 .loc 1 3194 23 view .LVU2330 + 6770 008c 238D ldrh r3, [r4, #40] + 6771 008e 2A46 mov r2, r5 + 6772 0090 2431 adds r1, r1, #36 + 6773 0092 E06B ldr r0, [r4, #60] + 6774 0094 FFF7FEFF bl HAL_DMA_Start_IT + 6775 .LVL445: +3212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6776 .loc 1 3212 5 is_stmt 1 view .LVU2331 +3212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6777 .loc 1 3212 8 is_stmt 0 view .LVU2332 + 6778 0098 0546 mov r5, r0 + 6779 009a 48B3 cbz r0, .L451 +3232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 6780 .loc 1 3232 7 is_stmt 1 view .LVU2333 +3232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 6781 .loc 1 3232 23 is_stmt 0 view .LVU2334 + 6782 009c 2023 movs r3, #32 + 6783 009e 84F84130 strb r3, [r4, #65] +3233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6784 .loc 1 3233 7 is_stmt 1 view .LVU2335 +3233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6785 .loc 1 3233 23 is_stmt 0 view .LVU2336 + 6786 00a2 0022 movs r2, #0 + 6787 00a4 84F84220 strb r2, [r4, #66] +3236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6788 .loc 1 3236 7 is_stmt 1 view .LVU2337 +3236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6789 .loc 1 3236 23 is_stmt 0 view .LVU2338 + 6790 00a8 636C ldr r3, [r4, #68] + 6791 00aa 43F01003 orr r3, r3, #16 + 6792 00ae 6364 str r3, [r4, #68] +3239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6793 .loc 1 3239 7 is_stmt 1 view .LVU2339 +3239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6794 .loc 1 3239 7 view .LVU2340 + 6795 00b0 84F84020 strb r2, [r4, #64] +3239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6796 .loc 1 3239 7 view .LVU2341 +3241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6797 .loc 1 3241 7 view .LVU2342 +3241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6798 .loc 1 3241 14 is_stmt 0 view .LVU2343 + 6799 00b4 0125 movs r5, #1 + 6800 00b6 2CE0 b .L435 + 6801 .LVL446: + 6802 .L449: +3130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 6803 .loc 1 3130 7 is_stmt 1 view .LVU2344 +3130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 6804 .loc 1 3130 23 is_stmt 0 view .LVU2345 + ARM GAS /tmp/ccVyGVF6.s page 291 + + + 6805 00b8 4FF40073 mov r3, #512 + 6806 00bc 6364 str r3, [r4, #68] +3131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6807 .loc 1 3131 7 is_stmt 1 view .LVU2346 +3131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6808 .loc 1 3131 15 is_stmt 0 view .LVU2347 + 6809 00be 0125 movs r5, #1 + 6810 00c0 27E0 b .L435 + 6811 .LVL447: + 6812 .L437: +3159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6813 .loc 1 3159 7 is_stmt 1 view .LVU2348 +3159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6814 .loc 1 3159 28 is_stmt 0 view .LVU2349 + 6815 00c2 638D ldrh r3, [r4, #42] +3159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6816 .loc 1 3159 22 view .LVU2350 + 6817 00c4 2385 strh r3, [r4, #40] @ movhi + 6818 00c6 CDE7 b .L438 + 6819 .L450: +3166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6820 .loc 1 3166 7 is_stmt 1 view .LVU2351 +3166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6821 .loc 1 3166 30 is_stmt 0 view .LVU2352 + 6822 00c8 D2B2 uxtb r2, r2 + 6823 .LVL448: +3166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6824 .loc 1 3166 28 view .LVU2353 + 6825 00ca 8A62 str r2, [r1, #40] +3169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6826 .loc 1 3169 7 is_stmt 1 view .LVU2354 +3169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6827 .loc 1 3169 24 is_stmt 0 view .LVU2355 + 6828 00cc 4FF0FF33 mov r3, #-1 + 6829 00d0 2365 str r3, [r4, #80] + 6830 00d2 CDE7 b .L440 + 6831 .L441: +3200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 6832 .loc 1 3200 7 is_stmt 1 view .LVU2356 +3200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 6833 .loc 1 3200 23 is_stmt 0 view .LVU2357 + 6834 00d4 2023 movs r3, #32 + 6835 00d6 84F84130 strb r3, [r4, #65] +3201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6836 .loc 1 3201 7 is_stmt 1 view .LVU2358 +3201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6837 .loc 1 3201 23 is_stmt 0 view .LVU2359 + 6838 00da 0022 movs r2, #0 + 6839 00dc 84F84220 strb r2, [r4, #66] +3204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6840 .loc 1 3204 7 is_stmt 1 view .LVU2360 +3204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6841 .loc 1 3204 23 is_stmt 0 view .LVU2361 + 6842 00e0 636C ldr r3, [r4, #68] + 6843 00e2 43F08003 orr r3, r3, #128 + 6844 00e6 6364 str r3, [r4, #68] +3207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 292 + + + 6845 .loc 1 3207 7 is_stmt 1 view .LVU2362 +3207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6846 .loc 1 3207 7 view .LVU2363 + 6847 00e8 84F84020 strb r2, [r4, #64] +3207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6848 .loc 1 3207 7 view .LVU2364 +3209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6849 .loc 1 3209 7 view .LVU2365 +3209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6850 .loc 1 3209 14 is_stmt 0 view .LVU2366 + 6851 00ec 0125 movs r5, #1 + 6852 00ee 10E0 b .L435 + 6853 .LVL449: + 6854 .L451: +3215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6855 .loc 1 3215 7 is_stmt 1 view .LVU2367 + 6856 00f0 0F4B ldr r3, .L452+16 + 6857 00f2 0093 str r3, [sp] + 6858 00f4 0023 movs r3, #0 + 6859 00f6 FAB2 uxtb r2, r7 + 6860 00f8 3146 mov r1, r6 + 6861 00fa 2046 mov r0, r4 + 6862 .LVL450: +3215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6863 .loc 1 3215 7 is_stmt 0 view .LVU2368 + 6864 00fc FFF7FEFF bl I2C_TransferConfig + 6865 .LVL451: +3218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6866 .loc 1 3218 7 is_stmt 1 view .LVU2369 +3218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6867 .loc 1 3218 7 view .LVU2370 + 6868 0100 0023 movs r3, #0 + 6869 0102 84F84030 strb r3, [r4, #64] +3218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6870 .loc 1 3218 7 view .LVU2371 +3227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6871 .loc 1 3227 7 view .LVU2372 + 6872 0106 0121 movs r1, #1 + 6873 0108 2046 mov r0, r4 + 6874 010a FFF7FEFF bl I2C_Enable_IRQ + 6875 .LVL452: +3244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6876 .loc 1 3244 5 view .LVU2373 +3244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6877 .loc 1 3244 12 is_stmt 0 view .LVU2374 + 6878 010e 00E0 b .L435 + 6879 .LVL453: + 6880 .L444: +3248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6881 .loc 1 3248 12 view .LVU2375 + 6882 0110 0225 movs r5, #2 + 6883 .LVL454: + 6884 .L435: +3250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6885 .loc 1 3250 1 view .LVU2376 + 6886 0112 2846 mov r0, r5 + 6887 0114 03B0 add sp, sp, #12 + ARM GAS /tmp/ccVyGVF6.s page 293 + + + 6888 .LCFI80: + 6889 .cfi_remember_state + 6890 .cfi_def_cfa_offset 20 + 6891 @ sp needed + 6892 0116 F0BD pop {r4, r5, r6, r7, pc} + 6893 .LVL455: + 6894 .L445: + 6895 .LCFI81: + 6896 .cfi_restore_state +3136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 6897 .loc 1 3136 14 view .LVU2377 + 6898 0118 0225 movs r5, #2 + 6899 011a FAE7 b .L435 + 6900 .L446: +3140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6901 .loc 1 3140 5 view .LVU2378 + 6902 011c 0225 movs r5, #2 + 6903 011e F8E7 b .L435 + 6904 .L453: + 6905 .align 2 + 6906 .L452: + 6907 0120 0000FFFF .word -65536 + 6908 0124 00000000 .word I2C_Mem_ISR_DMA + 6909 0128 00000000 .word I2C_DMAMasterReceiveCplt + 6910 012c 00000000 .word I2C_DMAError + 6911 0130 00200080 .word -2147475456 + 6912 .cfi_endproc + 6913 .LFE162: + 6915 .section .text.HAL_I2C_IsDeviceReady,"ax",%progbits + 6916 .align 1 + 6917 .global HAL_I2C_IsDeviceReady + 6918 .syntax unified + 6919 .thumb + 6920 .thumb_func + 6921 .fpu fpv5-d16 + 6923 HAL_I2C_IsDeviceReady: + 6924 .LVL456: + 6925 .LFB163: +3265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 6926 .loc 1 3265 1 is_stmt 1 view -0 + 6927 .cfi_startproc + 6928 @ args = 0, pretend = 0, frame = 8 + 6929 @ frame_needed = 0, uses_anonymous_args = 0 +3265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tickstart; + 6930 .loc 1 3265 1 is_stmt 0 view .LVU2380 + 6931 0000 2DE9F043 push {r4, r5, r6, r7, r8, r9, lr} + 6932 .LCFI82: + 6933 .cfi_def_cfa_offset 28 + 6934 .cfi_offset 4, -28 + 6935 .cfi_offset 5, -24 + 6936 .cfi_offset 6, -20 + 6937 .cfi_offset 7, -16 + 6938 .cfi_offset 8, -12 + 6939 .cfi_offset 9, -8 + 6940 .cfi_offset 14, -4 + 6941 0004 85B0 sub sp, sp, #20 + 6942 .LCFI83: + ARM GAS /tmp/ccVyGVF6.s page 294 + + + 6943 .cfi_def_cfa_offset 48 + 6944 0006 1D46 mov r5, r3 +3266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6945 .loc 1 3266 3 is_stmt 1 view .LVU2381 +3268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6946 .loc 1 3268 3 view .LVU2382 +3268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6947 .loc 1 3268 17 is_stmt 0 view .LVU2383 + 6948 0008 0023 movs r3, #0 + 6949 .LVL457: +3268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6950 .loc 1 3268 17 view .LVU2384 + 6951 000a 0393 str r3, [sp, #12] +3270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** FlagStatus tmp2; + 6952 .loc 1 3270 3 is_stmt 1 view .LVU2385 +3271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6953 .loc 1 3271 3 view .LVU2386 +3273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6954 .loc 1 3273 3 view .LVU2387 +3273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6955 .loc 1 3273 11 is_stmt 0 view .LVU2388 + 6956 000c 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 6957 0010 DBB2 uxtb r3, r3 +3273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6958 .loc 1 3273 6 view .LVU2389 + 6959 0012 202B cmp r3, #32 + 6960 0014 40F08380 bne .L464 + 6961 0018 0646 mov r6, r0 + 6962 001a 8846 mov r8, r1 + 6963 001c 9146 mov r9, r2 +3275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6964 .loc 1 3275 5 is_stmt 1 view .LVU2390 +3275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6965 .loc 1 3275 9 is_stmt 0 view .LVU2391 + 6966 001e 0368 ldr r3, [r0] + 6967 0020 9B69 ldr r3, [r3, #24] +3275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6968 .loc 1 3275 8 view .LVU2392 + 6969 0022 13F4004F tst r3, #32768 + 6970 0026 7CD1 bne .L465 +3281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6971 .loc 1 3281 5 is_stmt 1 view .LVU2393 +3281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6972 .loc 1 3281 5 view .LVU2394 + 6973 0028 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 6974 002c 012B cmp r3, #1 + 6975 002e 7AD0 beq .L466 +3281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6976 .loc 1 3281 5 discriminator 2 view .LVU2395 + 6977 0030 0123 movs r3, #1 + 6978 0032 80F84030 strb r3, [r0, #64] +3281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6979 .loc 1 3281 5 discriminator 2 view .LVU2396 +3283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 6980 .loc 1 3283 5 discriminator 2 view .LVU2397 +3283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 6981 .loc 1 3283 17 is_stmt 0 discriminator 2 view .LVU2398 + ARM GAS /tmp/ccVyGVF6.s page 295 + + + 6982 0036 2423 movs r3, #36 + 6983 0038 80F84130 strb r3, [r0, #65] +3284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6984 .loc 1 3284 5 is_stmt 1 discriminator 2 view .LVU2399 +3284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6985 .loc 1 3284 21 is_stmt 0 discriminator 2 view .LVU2400 + 6986 003c 0023 movs r3, #0 + 6987 003e 4364 str r3, [r0, #68] + 6988 .LVL458: + 6989 .L463: +3286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 6990 .loc 1 3286 5 is_stmt 1 view .LVU2401 +3289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6991 .loc 1 3289 7 view .LVU2402 +3289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6992 .loc 1 3289 29 is_stmt 0 view .LVU2403 + 6993 0040 F368 ldr r3, [r6, #12] + 6994 0042 012B cmp r3, #1 + 6995 0044 10D0 beq .L470 +3289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 6996 .loc 1 3289 29 discriminator 2 view .LVU2404 + 6997 0046 C8F30902 ubfx r2, r8, #0, #10 + 6998 004a 3A4B ldr r3, .L473 + 6999 004c 1343 orrs r3, r3, r2 + 7000 .L457: +3289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7001 .loc 1 3289 11 discriminator 4 view .LVU2405 + 7002 004e 3268 ldr r2, [r6] +3289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7003 .loc 1 3289 27 discriminator 4 view .LVU2406 + 7004 0050 5360 str r3, [r2, #4] +3293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7005 .loc 1 3293 7 is_stmt 1 discriminator 4 view .LVU2407 +3293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7006 .loc 1 3293 19 is_stmt 0 discriminator 4 view .LVU2408 + 7007 0052 FFF7FEFF bl HAL_GetTick + 7008 .LVL459: + 7009 0056 0746 mov r7, r0 + 7010 .LVL460: +3295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); + 7011 .loc 1 3295 7 is_stmt 1 discriminator 4 view .LVU2409 +3295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); + 7012 .loc 1 3295 14 is_stmt 0 discriminator 4 view .LVU2410 + 7013 0058 3268 ldr r2, [r6] + 7014 005a 9369 ldr r3, [r2, #24] + 7015 005c C3F34013 ubfx r3, r3, #5, #1 + 7016 .LVL461: +3296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7017 .loc 1 3296 7 is_stmt 1 discriminator 4 view .LVU2411 +3296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7018 .loc 1 3296 14 is_stmt 0 discriminator 4 view .LVU2412 + 7019 0060 9469 ldr r4, [r2, #24] + 7020 0062 C4F3001C ubfx ip, r4, #4, #1 + 7021 .LVL462: +3298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7022 .loc 1 3298 7 is_stmt 1 discriminator 4 view .LVU2413 +3298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 296 + + + 7023 .loc 1 3298 13 is_stmt 0 discriminator 4 view .LVU2414 + 7024 0066 0BE0 b .L458 + 7025 .LVL463: + 7026 .L470: +3289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7027 .loc 1 3289 29 discriminator 1 view .LVU2415 + 7028 0068 C8F30902 ubfx r2, r8, #0, #10 + 7029 006c 324B ldr r3, .L473+4 + 7030 006e 1343 orrs r3, r3, r2 + 7031 0070 EDE7 b .L457 + 7032 .LVL464: + 7033 .L459: +3317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); + 7034 .loc 1 3317 9 is_stmt 1 view .LVU2416 +3317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** tmp2 = __HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_AF); + 7035 .loc 1 3317 16 is_stmt 0 view .LVU2417 + 7036 0072 3268 ldr r2, [r6] + 7037 0074 9369 ldr r3, [r2, #24] + 7038 0076 C3F34013 ubfx r3, r3, #5, #1 + 7039 .LVL465: +3318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7040 .loc 1 3318 9 is_stmt 1 view .LVU2418 +3318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7041 .loc 1 3318 16 is_stmt 0 view .LVU2419 + 7042 007a 9469 ldr r4, [r2, #24] + 7043 007c C4F3001C ubfx ip, r4, #4, #1 + 7044 .LVL466: + 7045 .L458: +3298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7046 .loc 1 3298 13 is_stmt 1 view .LVU2420 + 7047 0080 53EA0C03 orrs r3, r3, ip + 7048 .LVL467: +3298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7049 .loc 1 3298 13 is_stmt 0 view .LVU2421 + 7050 0084 17D1 bne .L471 +3300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7051 .loc 1 3300 9 is_stmt 1 view .LVU2422 +3300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7052 .loc 1 3300 12 is_stmt 0 view .LVU2423 + 7053 0086 B5F1FF3F cmp r5, #-1 + 7054 008a F2D0 beq .L459 +3302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7055 .loc 1 3302 11 is_stmt 1 view .LVU2424 +3302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7056 .loc 1 3302 17 is_stmt 0 view .LVU2425 + 7057 008c FFF7FEFF bl HAL_GetTick + 7058 .LVL468: +3302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7059 .loc 1 3302 31 view .LVU2426 + 7060 0090 C01B subs r0, r0, r7 +3302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7061 .loc 1 3302 14 view .LVU2427 + 7062 0092 A842 cmp r0, r5 + 7063 0094 01D8 bhi .L460 +3302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7064 .loc 1 3302 55 discriminator 1 view .LVU2428 + 7065 0096 002D cmp r5, #0 + ARM GAS /tmp/ccVyGVF6.s page 297 + + + 7066 0098 EBD1 bne .L459 + 7067 .L460: +3305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7068 .loc 1 3305 13 is_stmt 1 view .LVU2429 +3305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7069 .loc 1 3305 25 is_stmt 0 view .LVU2430 + 7070 009a 2023 movs r3, #32 + 7071 009c 86F84130 strb r3, [r6, #65] +3308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7072 .loc 1 3308 13 is_stmt 1 view .LVU2431 +3308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7073 .loc 1 3308 29 is_stmt 0 view .LVU2432 + 7074 00a0 736C ldr r3, [r6, #68] + 7075 00a2 43F02003 orr r3, r3, #32 + 7076 00a6 7364 str r3, [r6, #68] +3311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7077 .loc 1 3311 13 is_stmt 1 view .LVU2433 +3311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7078 .loc 1 3311 13 view .LVU2434 + 7079 00a8 0023 movs r3, #0 + 7080 00aa 86F84030 strb r3, [r6, #64] +3311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7081 .loc 1 3311 13 view .LVU2435 +3313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7082 .loc 1 3313 13 view .LVU2436 +3313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7083 .loc 1 3313 20 is_stmt 0 view .LVU2437 + 7084 00ae 0120 movs r0, #1 + 7085 .LVL469: + 7086 .L455: +3375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7087 .loc 1 3375 1 view .LVU2438 + 7088 00b0 05B0 add sp, sp, #20 + 7089 .LCFI84: + 7090 .cfi_remember_state + 7091 .cfi_def_cfa_offset 28 + 7092 @ sp needed + 7093 00b2 BDE8F083 pop {r4, r5, r6, r7, r8, r9, pc} + 7094 .LVL470: + 7095 .L471: + 7096 .LCFI85: + 7097 .cfi_restore_state +3322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7098 .loc 1 3322 7 is_stmt 1 view .LVU2439 +3322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7099 .loc 1 3322 11 is_stmt 0 view .LVU2440 + 7100 00b6 3368 ldr r3, [r6] + 7101 00b8 9B69 ldr r3, [r3, #24] +3322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7102 .loc 1 3322 10 view .LVU2441 + 7103 00ba 13F0100F tst r3, #16 + 7104 00be 1DD0 beq .L472 +3344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7105 .loc 1 3344 9 is_stmt 1 view .LVU2442 +3344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7106 .loc 1 3344 13 is_stmt 0 view .LVU2443 + 7107 00c0 0097 str r7, [sp] + ARM GAS /tmp/ccVyGVF6.s page 298 + + + 7108 00c2 2B46 mov r3, r5 + 7109 00c4 0022 movs r2, #0 + 7110 00c6 2021 movs r1, #32 + 7111 00c8 3046 mov r0, r6 + 7112 00ca FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 7113 .LVL471: +3344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7114 .loc 1 3344 12 view .LVU2444 + 7115 00ce 70BB cbnz r0, .L468 +3350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7116 .loc 1 3350 9 is_stmt 1 view .LVU2445 + 7117 00d0 3368 ldr r3, [r6] + 7118 00d2 1022 movs r2, #16 + 7119 00d4 DA61 str r2, [r3, #28] +3353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7120 .loc 1 3353 9 view .LVU2446 + 7121 00d6 3368 ldr r3, [r6] + 7122 00d8 2022 movs r2, #32 + 7123 00da DA61 str r2, [r3, #28] +3357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } while (I2C_Trials < Trials); + 7124 .loc 1 3357 7 view .LVU2447 +3357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } while (I2C_Trials < Trials); + 7125 .loc 1 3357 17 is_stmt 0 view .LVU2448 + 7126 00dc 039B ldr r3, [sp, #12] + 7127 00de 0133 adds r3, r3, #1 + 7128 00e0 0393 str r3, [sp, #12] +3358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7129 .loc 1 3358 13 is_stmt 1 view .LVU2449 +3358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7130 .loc 1 3358 25 is_stmt 0 view .LVU2450 + 7131 00e2 039B ldr r3, [sp, #12] +3358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7132 .loc 1 3358 5 view .LVU2451 + 7133 00e4 4B45 cmp r3, r9 + 7134 00e6 ABD3 bcc .L463 +3361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7135 .loc 1 3361 5 is_stmt 1 view .LVU2452 +3361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7136 .loc 1 3361 17 is_stmt 0 view .LVU2453 + 7137 00e8 86F84120 strb r2, [r6, #65] +3364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7138 .loc 1 3364 5 is_stmt 1 view .LVU2454 +3364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7139 .loc 1 3364 21 is_stmt 0 view .LVU2455 + 7140 00ec 736C ldr r3, [r6, #68] + 7141 00ee 1343 orrs r3, r3, r2 + 7142 00f0 7364 str r3, [r6, #68] +3367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7143 .loc 1 3367 5 is_stmt 1 view .LVU2456 +3367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7144 .loc 1 3367 5 view .LVU2457 + 7145 00f2 0023 movs r3, #0 + 7146 00f4 86F84030 strb r3, [r6, #64] +3367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7147 .loc 1 3367 5 view .LVU2458 +3369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7148 .loc 1 3369 5 view .LVU2459 + ARM GAS /tmp/ccVyGVF6.s page 299 + + +3369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7149 .loc 1 3369 12 is_stmt 0 view .LVU2460 + 7150 00f8 0120 movs r0, #1 + 7151 00fa D9E7 b .L455 + 7152 .LVL472: + 7153 .L472: +3325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7154 .loc 1 3325 9 is_stmt 1 view .LVU2461 +3325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7155 .loc 1 3325 13 is_stmt 0 view .LVU2462 + 7156 00fc 0097 str r7, [sp] + 7157 00fe 2B46 mov r3, r5 + 7158 0100 0022 movs r2, #0 + 7159 0102 2021 movs r1, #32 + 7160 0104 3046 mov r0, r6 + 7161 0106 FFF7FEFF bl I2C_WaitOnFlagUntilTimeout + 7162 .LVL473: +3325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7163 .loc 1 3325 12 view .LVU2463 + 7164 010a 70B9 cbnz r0, .L467 +3331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7165 .loc 1 3331 9 is_stmt 1 view .LVU2464 + 7166 010c 3268 ldr r2, [r6] + 7167 010e 2023 movs r3, #32 + 7168 0110 D361 str r3, [r2, #28] +3334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7169 .loc 1 3334 9 view .LVU2465 +3334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7170 .loc 1 3334 21 is_stmt 0 view .LVU2466 + 7171 0112 86F84130 strb r3, [r6, #65] +3337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7172 .loc 1 3337 9 is_stmt 1 view .LVU2467 +3337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7173 .loc 1 3337 9 view .LVU2468 + 7174 0116 0023 movs r3, #0 + 7175 0118 86F84030 strb r3, [r6, #64] +3337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7176 .loc 1 3337 9 view .LVU2469 +3339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7177 .loc 1 3339 9 view .LVU2470 +3339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7178 .loc 1 3339 16 is_stmt 0 view .LVU2471 + 7179 011c C8E7 b .L455 + 7180 .LVL474: + 7181 .L464: +3373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7182 .loc 1 3373 12 view .LVU2472 + 7183 011e 0220 movs r0, #2 + 7184 .LVL475: +3373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7185 .loc 1 3373 12 view .LVU2473 + 7186 0120 C6E7 b .L455 + 7187 .LVL476: + 7188 .L465: +3277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7189 .loc 1 3277 14 view .LVU2474 + 7190 0122 0220 movs r0, #2 + ARM GAS /tmp/ccVyGVF6.s page 300 + + + 7191 .LVL477: +3277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7192 .loc 1 3277 14 view .LVU2475 + 7193 0124 C4E7 b .L455 + 7194 .LVL478: + 7195 .L466: +3281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7196 .loc 1 3281 5 view .LVU2476 + 7197 0126 0220 movs r0, #2 + 7198 .LVL479: +3281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7199 .loc 1 3281 5 view .LVU2477 + 7200 0128 C2E7 b .L455 + 7201 .LVL480: + 7202 .L467: +3327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7203 .loc 1 3327 18 view .LVU2478 + 7204 012a 0120 movs r0, #1 + 7205 012c C0E7 b .L455 + 7206 .L468: +3346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7207 .loc 1 3346 18 view .LVU2479 + 7208 012e 0120 movs r0, #1 + 7209 0130 BEE7 b .L455 + 7210 .L474: + 7211 0132 00BF .align 2 + 7212 .L473: + 7213 0134 00280002 .word 33564672 + 7214 0138 00200002 .word 33562624 + 7215 .cfi_endproc + 7216 .LFE163: + 7218 .section .text.HAL_I2C_Master_Seq_Transmit_IT,"ax",%progbits + 7219 .align 1 + 7220 .global HAL_I2C_Master_Seq_Transmit_IT + 7221 .syntax unified + 7222 .thumb + 7223 .thumb_func + 7224 .fpu fpv5-d16 + 7226 HAL_I2C_Master_Seq_Transmit_IT: + 7227 .LVL481: + 7228 .LFB164: +3391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 7229 .loc 1 3391 1 is_stmt 1 view -0 + 7230 .cfi_startproc + 7231 @ args = 4, pretend = 0, frame = 0 + 7232 @ frame_needed = 0, uses_anonymous_args = 0 +3391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 7233 .loc 1 3391 1 is_stmt 0 view .LVU2481 + 7234 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 7235 .LCFI86: + 7236 .cfi_def_cfa_offset 24 + 7237 .cfi_offset 4, -24 + 7238 .cfi_offset 5, -20 + 7239 .cfi_offset 6, -16 + 7240 .cfi_offset 7, -12 + 7241 .cfi_offset 8, -8 + 7242 .cfi_offset 14, -4 + ARM GAS /tmp/ccVyGVF6.s page 301 + + + 7243 0004 82B0 sub sp, sp, #8 + 7244 .LCFI87: + 7245 .cfi_def_cfa_offset 32 + 7246 0006 0446 mov r4, r0 + 7247 0008 089E ldr r6, [sp, #32] +3392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_WRITE; + 7248 .loc 1 3392 3 is_stmt 1 view .LVU2482 +3393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; + 7249 .loc 1 3393 3 view .LVU2483 + 7250 .LVL482: +3394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7251 .loc 1 3394 3 view .LVU2484 +3397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7252 .loc 1 3397 3 view .LVU2485 +3399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7253 .loc 1 3399 3 view .LVU2486 +3399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7254 .loc 1 3399 11 is_stmt 0 view .LVU2487 + 7255 000a 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 7256 .LVL483: +3399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7257 .loc 1 3399 11 view .LVU2488 + 7258 000e C0B2 uxtb r0, r0 +3399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7259 .loc 1 3399 6 view .LVU2489 + 7260 0010 2028 cmp r0, #32 + 7261 0012 73D1 bne .L484 + 7262 0014 0D46 mov r5, r1 +3402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7263 .loc 1 3402 5 is_stmt 1 view .LVU2490 +3402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7264 .loc 1 3402 5 view .LVU2491 + 7265 0016 94F84010 ldrb r1, [r4, #64] @ zero_extendqisi2 + 7266 .LVL484: +3402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7267 .loc 1 3402 5 is_stmt 0 view .LVU2492 + 7268 001a 0129 cmp r1, #1 + 7269 001c 70D0 beq .L485 +3402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7270 .loc 1 3402 5 is_stmt 1 discriminator 2 view .LVU2493 + 7271 001e 0121 movs r1, #1 + 7272 0020 84F84010 strb r1, [r4, #64] +3402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7273 .loc 1 3402 5 discriminator 2 view .LVU2494 +3404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 7274 .loc 1 3404 5 discriminator 2 view .LVU2495 +3404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 7275 .loc 1 3404 21 is_stmt 0 discriminator 2 view .LVU2496 + 7276 0024 2121 movs r1, #33 + 7277 0026 84F84110 strb r1, [r4, #65] +3405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 7278 .loc 1 3405 5 is_stmt 1 discriminator 2 view .LVU2497 +3405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 7279 .loc 1 3405 21 is_stmt 0 discriminator 2 view .LVU2498 + 7280 002a 1021 movs r1, #16 + 7281 002c 84F84210 strb r1, [r4, #66] +3406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 302 + + + 7282 .loc 1 3406 5 is_stmt 1 discriminator 2 view .LVU2499 +3406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7283 .loc 1 3406 21 is_stmt 0 discriminator 2 view .LVU2500 + 7284 0030 0021 movs r1, #0 + 7285 0032 6164 str r1, [r4, #68] +3409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 7286 .loc 1 3409 5 is_stmt 1 discriminator 2 view .LVU2501 +3409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 7287 .loc 1 3409 23 is_stmt 0 discriminator 2 view .LVU2502 + 7288 0034 6262 str r2, [r4, #36] +3410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 7289 .loc 1 3410 5 is_stmt 1 discriminator 2 view .LVU2503 +3410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 7290 .loc 1 3410 23 is_stmt 0 discriminator 2 view .LVU2504 + 7291 0036 6385 strh r3, [r4, #42] @ movhi +3411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; + 7292 .loc 1 3411 5 is_stmt 1 discriminator 2 view .LVU2505 +3411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; + 7293 .loc 1 3411 23 is_stmt 0 discriminator 2 view .LVU2506 + 7294 0038 E662 str r6, [r4, #44] +3412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7295 .loc 1 3412 5 is_stmt 1 discriminator 2 view .LVU2507 +3412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7296 .loc 1 3412 23 is_stmt 0 discriminator 2 view .LVU2508 + 7297 003a 324B ldr r3, .L491 + 7298 .LVL485: +3412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7299 .loc 1 3412 23 discriminator 2 view .LVU2509 + 7300 003c 6363 str r3, [r4, #52] +3415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7301 .loc 1 3415 5 is_stmt 1 discriminator 2 view .LVU2510 +3415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7302 .loc 1 3415 13 is_stmt 0 discriminator 2 view .LVU2511 + 7303 003e 638D ldrh r3, [r4, #42] + 7304 0040 9BB2 uxth r3, r3 +3415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7305 .loc 1 3415 8 discriminator 2 view .LVU2512 + 7306 0042 FF2B cmp r3, #255 + 7307 0044 1BD9 bls .L477 +3417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 7308 .loc 1 3417 7 is_stmt 1 view .LVU2513 +3417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 7309 .loc 1 3417 22 is_stmt 0 view .LVU2514 + 7310 0046 FF23 movs r3, #255 + 7311 0048 2385 strh r3, [r4, #40] @ movhi +3418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7312 .loc 1 3418 7 is_stmt 1 view .LVU2515 + 7313 .LVL486: +3418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7314 .loc 1 3418 16 is_stmt 0 view .LVU2516 + 7315 004a 4FF08077 mov r7, #16777216 + 7316 .LVL487: + 7317 .L478: +3426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) + 7318 .loc 1 3426 5 is_stmt 1 view .LVU2517 +3426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) + 7319 .loc 1 3426 14 is_stmt 0 view .LVU2518 + ARM GAS /tmp/ccVyGVF6.s page 303 + + + 7320 004e 238D ldrh r3, [r4, #40] +3426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) + 7321 .loc 1 3426 8 view .LVU2519 + 7322 0050 CBB1 cbz r3, .L486 +3426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) + 7323 .loc 1 3426 31 discriminator 1 view .LVU2520 + 7324 0052 B6F1007F cmp r6, #33554432 + 7325 0056 18BF it ne + 7326 0058 002E cmpne r6, #0 + 7327 005a 3FD1 bne .L487 +3431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7328 .loc 1 3431 7 is_stmt 1 view .LVU2521 +3431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7329 .loc 1 3431 11 is_stmt 0 view .LVU2522 + 7330 005c 2368 ldr r3, [r4] +3431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7331 .loc 1 3431 30 view .LVU2523 + 7332 005e 1278 ldrb r2, [r2] @ zero_extendqisi2 + 7333 .LVL488: +3431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7334 .loc 1 3431 28 view .LVU2524 + 7335 0060 9A62 str r2, [r3, #40] + 7336 .LVL489: +3434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7337 .loc 1 3434 7 is_stmt 1 view .LVU2525 +3434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7338 .loc 1 3434 11 is_stmt 0 view .LVU2526 + 7339 0062 636A ldr r3, [r4, #36] +3434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7340 .loc 1 3434 21 view .LVU2527 + 7341 0064 0133 adds r3, r3, #1 + 7342 0066 6362 str r3, [r4, #36] +3436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 7343 .loc 1 3436 7 is_stmt 1 view .LVU2528 +3436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 7344 .loc 1 3436 24 is_stmt 0 view .LVU2529 + 7345 0068 B4F82880 ldrh r8, [r4, #40] + 7346 .LVL490: +3437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 7347 .loc 1 3437 7 is_stmt 1 view .LVU2530 +3437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 7348 .loc 1 3437 11 is_stmt 0 view .LVU2531 + 7349 006c 638D ldrh r3, [r4, #42] + 7350 006e 9BB2 uxth r3, r3 +3437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 7351 .loc 1 3437 22 view .LVU2532 + 7352 0070 013B subs r3, r3, #1 + 7353 0072 9BB2 uxth r3, r3 + 7354 0074 6385 strh r3, [r4, #42] @ movhi +3438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7355 .loc 1 3438 7 is_stmt 1 view .LVU2533 +3438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7356 .loc 1 3438 21 is_stmt 0 view .LVU2534 + 7357 0076 08F1FF33 add r3, r8, #-1 + 7358 007a 2385 strh r3, [r4, #40] @ movhi + 7359 007c 05E0 b .L479 + 7360 .LVL491: + ARM GAS /tmp/ccVyGVF6.s page 304 + + + 7361 .L477: +3422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 7362 .loc 1 3422 7 is_stmt 1 view .LVU2535 +3422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 7363 .loc 1 3422 28 is_stmt 0 view .LVU2536 + 7364 007e 638D ldrh r3, [r4, #42] +3422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 7365 .loc 1 3422 22 view .LVU2537 + 7366 0080 2385 strh r3, [r4, #40] @ movhi +3423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7367 .loc 1 3423 7 is_stmt 1 view .LVU2538 +3423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7368 .loc 1 3423 16 is_stmt 0 view .LVU2539 + 7369 0082 E76A ldr r7, [r4, #44] + 7370 .LVL492: +3423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7371 .loc 1 3423 16 view .LVU2540 + 7372 0084 E3E7 b .L478 + 7373 .L486: +3394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7374 .loc 1 3394 12 view .LVU2541 + 7375 0086 4FF00008 mov r8, #0 + 7376 .LVL493: + 7377 .L479: +3444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 7378 .loc 1 3444 5 is_stmt 1 view .LVU2542 +3444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 7379 .loc 1 3444 14 is_stmt 0 view .LVU2543 + 7380 008a 236B ldr r3, [r4, #48] +3444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 7381 .loc 1 3444 8 view .LVU2544 + 7382 008c 112B cmp r3, #17 + 7383 008e 04D1 bne .L480 +3444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 7384 .loc 1 3444 59 discriminator 1 view .LVU2545 + 7385 0090 B6F52A4F cmp r6, #43520 + 7386 0094 18BF it ne + 7387 0096 AA2E cmpne r6, #170 + 7388 0098 23D1 bne .L488 + 7389 .L480: +3452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7390 .loc 1 3452 7 is_stmt 1 view .LVU2546 + 7391 009a 2046 mov r0, r4 + 7392 009c FFF7FEFF bl I2C_ConvertOtherXferOptions + 7393 .LVL494: +3455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7394 .loc 1 3455 7 view .LVU2547 +3455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7395 .loc 1 3455 15 is_stmt 0 view .LVU2548 + 7396 00a0 638D ldrh r3, [r4, #42] + 7397 00a2 9BB2 uxth r3, r3 +3455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7398 .loc 1 3455 10 view .LVU2549 + 7399 00a4 FF2B cmp r3, #255 + 7400 00a6 1ED8 bhi .L489 +3457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7401 .loc 1 3457 9 is_stmt 1 view .LVU2550 + ARM GAS /tmp/ccVyGVF6.s page 305 + + +3457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7402 .loc 1 3457 18 is_stmt 0 view .LVU2551 + 7403 00a8 E76A ldr r7, [r4, #44] + 7404 .LVL495: +3393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; + 7405 .loc 1 3393 12 view .LVU2552 + 7406 00aa 174B ldr r3, .L491+4 + 7407 .L481: + 7408 .LVL496: +3462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7409 .loc 1 3462 5 is_stmt 1 view .LVU2553 +3462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7410 .loc 1 3462 8 is_stmt 0 view .LVU2554 + 7411 00ac B6F1007F cmp r6, #33554432 + 7412 00b0 18BF it ne + 7413 00b2 002E cmpne r6, #0 + 7414 00b4 19D1 bne .L482 +3464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7415 .loc 1 3464 7 is_stmt 1 view .LVU2555 + 7416 00b6 0093 str r3, [sp] + 7417 00b8 3B46 mov r3, r7 + 7418 .LVL497: +3464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7419 .loc 1 3464 7 is_stmt 0 view .LVU2556 + 7420 00ba 5FFA88F2 uxtb r2, r8 + 7421 00be 2946 mov r1, r5 + 7422 00c0 2046 mov r0, r4 + 7423 00c2 FFF7FEFF bl I2C_TransferConfig + 7424 .LVL498: + 7425 .L483: +3472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7426 .loc 1 3472 5 is_stmt 1 view .LVU2557 +3472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7427 .loc 1 3472 5 view .LVU2558 + 7428 00c6 0025 movs r5, #0 + 7429 00c8 84F84050 strb r5, [r4, #64] +3472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7430 .loc 1 3472 5 view .LVU2559 +3481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7431 .loc 1 3481 5 view .LVU2560 + 7432 00cc 0121 movs r1, #1 + 7433 00ce 2046 mov r0, r4 + 7434 00d0 FFF7FEFF bl I2C_Enable_IRQ + 7435 .LVL499: +3483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7436 .loc 1 3483 5 view .LVU2561 +3483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7437 .loc 1 3483 12 is_stmt 0 view .LVU2562 + 7438 00d4 2846 mov r0, r5 + 7439 .LVL500: + 7440 .L476: +3489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7441 .loc 1 3489 1 view .LVU2563 + 7442 00d6 02B0 add sp, sp, #8 + 7443 .LCFI88: + 7444 .cfi_remember_state + 7445 .cfi_def_cfa_offset 24 + ARM GAS /tmp/ccVyGVF6.s page 306 + + + 7446 @ sp needed + 7447 00d8 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 7448 .LVL501: + 7449 .L487: + 7450 .LCFI89: + 7451 .cfi_restore_state +3394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7452 .loc 1 3394 12 view .LVU2564 + 7453 00dc 4FF00008 mov r8, #0 + 7454 00e0 D3E7 b .L479 + 7455 .LVL502: + 7456 .L488: +3447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7457 .loc 1 3447 19 view .LVU2565 + 7458 00e2 0023 movs r3, #0 + 7459 00e4 E2E7 b .L481 + 7460 .L489: +3393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; + 7461 .loc 1 3393 12 view .LVU2566 + 7462 00e6 084B ldr r3, .L491+4 + 7463 00e8 E0E7 b .L481 + 7464 .LVL503: + 7465 .L482: +3468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7466 .loc 1 3468 7 is_stmt 1 view .LVU2567 + 7467 00ea 0093 str r3, [sp] + 7468 00ec 3B46 mov r3, r7 + 7469 .LVL504: +3468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7470 .loc 1 3468 7 is_stmt 0 view .LVU2568 + 7471 00ee 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 7472 00f2 2946 mov r1, r5 + 7473 00f4 2046 mov r0, r4 + 7474 00f6 FFF7FEFF bl I2C_TransferConfig + 7475 .LVL505: +3468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7476 .loc 1 3468 7 view .LVU2569 + 7477 00fa E4E7 b .L483 + 7478 .LVL506: + 7479 .L484: +3487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7480 .loc 1 3487 12 view .LVU2570 + 7481 00fc 0220 movs r0, #2 + 7482 00fe EAE7 b .L476 + 7483 .LVL507: + 7484 .L485: +3402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7485 .loc 1 3402 5 view .LVU2571 + 7486 0100 0220 movs r0, #2 + 7487 0102 E8E7 b .L476 + 7488 .L492: + 7489 .align 2 + 7490 .L491: + 7491 0104 00000000 .word I2C_Master_ISR_IT + 7492 0108 00200080 .word -2147475456 + 7493 .cfi_endproc + 7494 .LFE164: + ARM GAS /tmp/ccVyGVF6.s page 307 + + + 7496 .section .text.HAL_I2C_Master_Seq_Transmit_DMA,"ax",%progbits + 7497 .align 1 + 7498 .global HAL_I2C_Master_Seq_Transmit_DMA + 7499 .syntax unified + 7500 .thumb + 7501 .thumb_func + 7502 .fpu fpv5-d16 + 7504 HAL_I2C_Master_Seq_Transmit_DMA: + 7505 .LVL508: + 7506 .LFB165: +3505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 7507 .loc 1 3505 1 is_stmt 1 view -0 + 7508 .cfi_startproc + 7509 @ args = 4, pretend = 0, frame = 0 + 7510 @ frame_needed = 0, uses_anonymous_args = 0 +3505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 7511 .loc 1 3505 1 is_stmt 0 view .LVU2573 + 7512 0000 2DE9F043 push {r4, r5, r6, r7, r8, r9, lr} + 7513 .LCFI90: + 7514 .cfi_def_cfa_offset 28 + 7515 .cfi_offset 4, -28 + 7516 .cfi_offset 5, -24 + 7517 .cfi_offset 6, -20 + 7518 .cfi_offset 7, -16 + 7519 .cfi_offset 8, -12 + 7520 .cfi_offset 9, -8 + 7521 .cfi_offset 14, -4 + 7522 0004 83B0 sub sp, sp, #12 + 7523 .LCFI91: + 7524 .cfi_def_cfa_offset 40 + 7525 0006 0446 mov r4, r0 + 7526 0008 0A9E ldr r6, [sp, #40] +3506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_WRITE; + 7527 .loc 1 3506 3 is_stmt 1 view .LVU2574 +3507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 7528 .loc 1 3507 3 view .LVU2575 + 7529 .LVL509: +3508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t sizetoxfer = 0U; + 7530 .loc 1 3508 3 view .LVU2576 +3509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7531 .loc 1 3509 3 view .LVU2577 +3512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7532 .loc 1 3512 3 view .LVU2578 +3514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7533 .loc 1 3514 3 view .LVU2579 +3514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7534 .loc 1 3514 11 is_stmt 0 view .LVU2580 + 7535 000a 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 7536 .LVL510: +3514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7537 .loc 1 3514 11 view .LVU2581 + 7538 000e C0B2 uxtb r0, r0 +3514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7539 .loc 1 3514 6 view .LVU2582 + 7540 0010 2028 cmp r0, #32 + 7541 0012 40F0D780 bne .L509 + 7542 0016 0D46 mov r5, r1 + ARM GAS /tmp/ccVyGVF6.s page 308 + + +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7543 .loc 1 3517 5 is_stmt 1 view .LVU2583 +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7544 .loc 1 3517 5 view .LVU2584 + 7545 0018 94F84010 ldrb r1, [r4, #64] @ zero_extendqisi2 + 7546 .LVL511: +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7547 .loc 1 3517 5 is_stmt 0 view .LVU2585 + 7548 001c 0129 cmp r1, #1 + 7549 001e 00F0D580 beq .L510 +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7550 .loc 1 3517 5 is_stmt 1 discriminator 2 view .LVU2586 + 7551 0022 0121 movs r1, #1 + 7552 0024 84F84010 strb r1, [r4, #64] +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7553 .loc 1 3517 5 discriminator 2 view .LVU2587 +3519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 7554 .loc 1 3519 5 discriminator 2 view .LVU2588 +3519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 7555 .loc 1 3519 21 is_stmt 0 discriminator 2 view .LVU2589 + 7556 0028 2121 movs r1, #33 + 7557 002a 84F84110 strb r1, [r4, #65] +3520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 7558 .loc 1 3520 5 is_stmt 1 discriminator 2 view .LVU2590 +3520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 7559 .loc 1 3520 21 is_stmt 0 discriminator 2 view .LVU2591 + 7560 002e 1021 movs r1, #16 + 7561 0030 84F84210 strb r1, [r4, #66] +3521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7562 .loc 1 3521 5 is_stmt 1 discriminator 2 view .LVU2592 +3521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7563 .loc 1 3521 21 is_stmt 0 discriminator 2 view .LVU2593 + 7564 0034 0021 movs r1, #0 + 7565 0036 6164 str r1, [r4, #68] +3524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 7566 .loc 1 3524 5 is_stmt 1 discriminator 2 view .LVU2594 +3524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 7567 .loc 1 3524 23 is_stmt 0 discriminator 2 view .LVU2595 + 7568 0038 6262 str r2, [r4, #36] +3525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 7569 .loc 1 3525 5 is_stmt 1 discriminator 2 view .LVU2596 +3525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 7570 .loc 1 3525 23 is_stmt 0 discriminator 2 view .LVU2597 + 7571 003a 6385 strh r3, [r4, #42] @ movhi +3526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; + 7572 .loc 1 3526 5 is_stmt 1 discriminator 2 view .LVU2598 +3526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; + 7573 .loc 1 3526 23 is_stmt 0 discriminator 2 view .LVU2599 + 7574 003c E662 str r6, [r4, #44] +3527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7575 .loc 1 3527 5 is_stmt 1 discriminator 2 view .LVU2600 +3527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7576 .loc 1 3527 23 is_stmt 0 discriminator 2 view .LVU2601 + 7577 003e 644B ldr r3, .L517 + 7578 .LVL512: +3527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7579 .loc 1 3527 23 discriminator 2 view .LVU2602 + ARM GAS /tmp/ccVyGVF6.s page 309 + + + 7580 0040 6363 str r3, [r4, #52] +3530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7581 .loc 1 3530 5 is_stmt 1 discriminator 2 view .LVU2603 +3530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7582 .loc 1 3530 13 is_stmt 0 discriminator 2 view .LVU2604 + 7583 0042 638D ldrh r3, [r4, #42] + 7584 0044 9BB2 uxth r3, r3 +3530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7585 .loc 1 3530 8 discriminator 2 view .LVU2605 + 7586 0046 FF2B cmp r3, #255 + 7587 0048 1BD9 bls .L495 +3532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 7588 .loc 1 3532 7 is_stmt 1 view .LVU2606 +3532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 7589 .loc 1 3532 22 is_stmt 0 view .LVU2607 + 7590 004a FF23 movs r3, #255 + 7591 004c 2385 strh r3, [r4, #40] @ movhi +3533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7592 .loc 1 3533 7 is_stmt 1 view .LVU2608 + 7593 .LVL513: +3533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7594 .loc 1 3533 16 is_stmt 0 view .LVU2609 + 7595 004e 4FF08077 mov r7, #16777216 + 7596 .LVL514: + 7597 .L496: +3541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) + 7598 .loc 1 3541 5 is_stmt 1 view .LVU2610 +3541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) + 7599 .loc 1 3541 14 is_stmt 0 view .LVU2611 + 7600 0052 238D ldrh r3, [r4, #40] +3541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) + 7601 .loc 1 3541 8 view .LVU2612 + 7602 0054 CBB1 cbz r3, .L511 +3541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (XferOptions == I2C_FIRST_AND_LAST_FRAME))) + 7603 .loc 1 3541 31 discriminator 1 view .LVU2613 + 7604 0056 B6F1007F cmp r6, #33554432 + 7605 005a 18BF it ne + 7606 005c 002E cmpne r6, #0 + 7607 005e 29D1 bne .L512 +3546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7608 .loc 1 3546 7 is_stmt 1 view .LVU2614 +3546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7609 .loc 1 3546 11 is_stmt 0 view .LVU2615 + 7610 0060 2368 ldr r3, [r4] +3546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7611 .loc 1 3546 30 view .LVU2616 + 7612 0062 1278 ldrb r2, [r2] @ zero_extendqisi2 + 7613 .LVL515: +3546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7614 .loc 1 3546 28 view .LVU2617 + 7615 0064 9A62 str r2, [r3, #40] + 7616 .LVL516: +3549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7617 .loc 1 3549 7 is_stmt 1 view .LVU2618 +3549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7618 .loc 1 3549 11 is_stmt 0 view .LVU2619 + 7619 0066 636A ldr r3, [r4, #36] + ARM GAS /tmp/ccVyGVF6.s page 310 + + +3549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7620 .loc 1 3549 21 view .LVU2620 + 7621 0068 0133 adds r3, r3, #1 + 7622 006a 6362 str r3, [r4, #36] +3551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 7623 .loc 1 3551 7 is_stmt 1 view .LVU2621 +3551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 7624 .loc 1 3551 24 is_stmt 0 view .LVU2622 + 7625 006c B4F82880 ldrh r8, [r4, #40] + 7626 .LVL517: +3552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 7627 .loc 1 3552 7 is_stmt 1 view .LVU2623 +3552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 7628 .loc 1 3552 11 is_stmt 0 view .LVU2624 + 7629 0070 638D ldrh r3, [r4, #42] + 7630 0072 9BB2 uxth r3, r3 +3552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 7631 .loc 1 3552 22 view .LVU2625 + 7632 0074 013B subs r3, r3, #1 + 7633 0076 9BB2 uxth r3, r3 + 7634 0078 6385 strh r3, [r4, #42] @ movhi +3553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7635 .loc 1 3553 7 is_stmt 1 view .LVU2626 +3553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7636 .loc 1 3553 21 is_stmt 0 view .LVU2627 + 7637 007a 08F1FF33 add r3, r8, #-1 + 7638 007e 2385 strh r3, [r4, #40] @ movhi + 7639 0080 05E0 b .L497 + 7640 .LVL518: + 7641 .L495: +3537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 7642 .loc 1 3537 7 is_stmt 1 view .LVU2628 +3537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 7643 .loc 1 3537 28 is_stmt 0 view .LVU2629 + 7644 0082 638D ldrh r3, [r4, #42] +3537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 7645 .loc 1 3537 22 view .LVU2630 + 7646 0084 2385 strh r3, [r4, #40] @ movhi +3538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7647 .loc 1 3538 7 is_stmt 1 view .LVU2631 +3538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7648 .loc 1 3538 16 is_stmt 0 view .LVU2632 + 7649 0086 E76A ldr r7, [r4, #44] + 7650 .LVL519: +3538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7651 .loc 1 3538 16 view .LVU2633 + 7652 0088 E3E7 b .L496 + 7653 .L511: +3509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7654 .loc 1 3509 12 view .LVU2634 + 7655 008a 4FF00008 mov r8, #0 + 7656 .LVL520: + 7657 .L497: +3559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 7658 .loc 1 3559 5 is_stmt 1 view .LVU2635 +3559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 7659 .loc 1 3559 14 is_stmt 0 view .LVU2636 + ARM GAS /tmp/ccVyGVF6.s page 311 + + + 7660 008e 236B ldr r3, [r4, #48] +3559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 7661 .loc 1 3559 8 view .LVU2637 + 7662 0090 112B cmp r3, #17 + 7663 0092 04D1 bne .L498 +3559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 7664 .loc 1 3559 59 discriminator 1 view .LVU2638 + 7665 0094 B6F52A4F cmp r6, #43520 + 7666 0098 18BF it ne + 7667 009a AA2E cmpne r6, #170 + 7668 009c 0DD1 bne .L513 + 7669 .L498: +3567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7670 .loc 1 3567 7 is_stmt 1 view .LVU2639 + 7671 009e 2046 mov r0, r4 + 7672 00a0 FFF7FEFF bl I2C_ConvertOtherXferOptions + 7673 .LVL521: +3570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7674 .loc 1 3570 7 view .LVU2640 +3570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7675 .loc 1 3570 15 is_stmt 0 view .LVU2641 + 7676 00a4 638D ldrh r3, [r4, #42] + 7677 00a6 9BB2 uxth r3, r3 +3570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7678 .loc 1 3570 10 view .LVU2642 + 7679 00a8 FF2B cmp r3, #255 + 7680 00aa 09D8 bhi .L514 +3572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7681 .loc 1 3572 9 is_stmt 1 view .LVU2643 +3572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7682 .loc 1 3572 18 is_stmt 0 view .LVU2644 + 7683 00ac E76A ldr r7, [r4, #44] + 7684 .LVL522: +3507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 7685 .loc 1 3507 12 view .LVU2645 + 7686 00ae DFF83091 ldr r9, .L517+16 + 7687 00b2 07E0 b .L499 + 7688 .LVL523: + 7689 .L512: +3509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7690 .loc 1 3509 12 view .LVU2646 + 7691 00b4 4FF00008 mov r8, #0 + 7692 00b8 E9E7 b .L497 + 7693 .LVL524: + 7694 .L513: +3562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7695 .loc 1 3562 19 view .LVU2647 + 7696 00ba 4FF00009 mov r9, #0 + 7697 00be 01E0 b .L499 + 7698 .L514: +3507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 7699 .loc 1 3507 12 view .LVU2648 + 7700 00c0 DFF81C91 ldr r9, .L517+16 + 7701 .L499: + 7702 .LVL525: +3576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7703 .loc 1 3576 5 is_stmt 1 view .LVU2649 + ARM GAS /tmp/ccVyGVF6.s page 312 + + +3576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7704 .loc 1 3576 13 is_stmt 0 view .LVU2650 + 7705 00c4 228D ldrh r2, [r4, #40] +3576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7706 .loc 1 3576 8 view .LVU2651 + 7707 00c6 002A cmp r2, #0 + 7708 00c8 5AD0 beq .L500 +3578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7709 .loc 1 3578 7 is_stmt 1 view .LVU2652 +3578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7710 .loc 1 3578 15 is_stmt 0 view .LVU2653 + 7711 00ca A36B ldr r3, [r4, #56] +3578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7712 .loc 1 3578 10 view .LVU2654 + 7713 00cc FBB1 cbz r3, .L501 +3581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7714 .loc 1 3581 9 is_stmt 1 view .LVU2655 +3581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7715 .loc 1 3581 40 is_stmt 0 view .LVU2656 + 7716 00ce 414A ldr r2, .L517+4 + 7717 00d0 DA63 str r2, [r3, #60] +3584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7718 .loc 1 3584 9 is_stmt 1 view .LVU2657 +3584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7719 .loc 1 3584 13 is_stmt 0 view .LVU2658 + 7720 00d2 A36B ldr r3, [r4, #56] +3584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7721 .loc 1 3584 41 view .LVU2659 + 7722 00d4 404A ldr r2, .L517+8 + 7723 00d6 DA64 str r2, [r3, #76] +3587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 7724 .loc 1 3587 9 is_stmt 1 view .LVU2660 +3587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 7725 .loc 1 3587 13 is_stmt 0 view .LVU2661 + 7726 00d8 A26B ldr r2, [r4, #56] +3587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 7727 .loc 1 3587 44 view .LVU2662 + 7728 00da 0023 movs r3, #0 + 7729 00dc 1364 str r3, [r2, #64] +3588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7730 .loc 1 3588 9 is_stmt 1 view .LVU2663 +3588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7731 .loc 1 3588 13 is_stmt 0 view .LVU2664 + 7732 00de A26B ldr r2, [r4, #56] +3588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7733 .loc 1 3588 41 view .LVU2665 + 7734 00e0 1365 str r3, [r2, #80] +3591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); + 7735 .loc 1 3591 9 is_stmt 1 view .LVU2666 +3592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7736 .loc 1 3592 57 is_stmt 0 view .LVU2667 + 7737 00e2 2268 ldr r2, [r4] +3591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)&hi2c->Instance->TXDR, hi2c->XferSize); + 7738 .loc 1 3591 25 view .LVU2668 + 7739 00e4 238D ldrh r3, [r4, #40] + 7740 00e6 2832 adds r2, r2, #40 + 7741 00e8 616A ldr r1, [r4, #36] + ARM GAS /tmp/ccVyGVF6.s page 313 + + + 7742 00ea A06B ldr r0, [r4, #56] + 7743 00ec FFF7FEFF bl HAL_DMA_Start_IT + 7744 .LVL526: +3609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7745 .loc 1 3609 7 is_stmt 1 view .LVU2669 +3609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7746 .loc 1 3609 10 is_stmt 0 view .LVU2670 + 7747 00f0 D8B1 cbz r0, .L502 +3639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 7748 .loc 1 3639 9 is_stmt 1 view .LVU2671 +3639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 7749 .loc 1 3639 25 is_stmt 0 view .LVU2672 + 7750 00f2 2023 movs r3, #32 + 7751 00f4 84F84130 strb r3, [r4, #65] +3640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7752 .loc 1 3640 9 is_stmt 1 view .LVU2673 +3640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7753 .loc 1 3640 25 is_stmt 0 view .LVU2674 + 7754 00f8 0022 movs r2, #0 + 7755 00fa 84F84220 strb r2, [r4, #66] +3643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7756 .loc 1 3643 9 is_stmt 1 view .LVU2675 +3643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7757 .loc 1 3643 25 is_stmt 0 view .LVU2676 + 7758 00fe 636C ldr r3, [r4, #68] + 7759 0100 43F01003 orr r3, r3, #16 + 7760 0104 6364 str r3, [r4, #68] +3646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7761 .loc 1 3646 9 is_stmt 1 view .LVU2677 +3646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7762 .loc 1 3646 9 view .LVU2678 + 7763 0106 84F84020 strb r2, [r4, #64] +3646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7764 .loc 1 3646 9 view .LVU2679 +3648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7765 .loc 1 3648 9 view .LVU2680 +3648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7766 .loc 1 3648 16 is_stmt 0 view .LVU2681 + 7767 010a 0120 movs r0, #1 + 7768 .LVL527: +3648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7769 .loc 1 3648 16 view .LVU2682 + 7770 010c 5BE0 b .L494 + 7771 .L501: +3597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 7772 .loc 1 3597 9 is_stmt 1 view .LVU2683 +3597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 7773 .loc 1 3597 25 is_stmt 0 view .LVU2684 + 7774 010e 2023 movs r3, #32 + 7775 0110 84F84130 strb r3, [r4, #65] +3598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7776 .loc 1 3598 9 is_stmt 1 view .LVU2685 +3598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7777 .loc 1 3598 25 is_stmt 0 view .LVU2686 + 7778 0114 0022 movs r2, #0 + 7779 0116 84F84220 strb r2, [r4, #66] +3601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 314 + + + 7780 .loc 1 3601 9 is_stmt 1 view .LVU2687 +3601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7781 .loc 1 3601 25 is_stmt 0 view .LVU2688 + 7782 011a 636C ldr r3, [r4, #68] + 7783 011c 43F08003 orr r3, r3, #128 + 7784 0120 6364 str r3, [r4, #68] +3604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7785 .loc 1 3604 9 is_stmt 1 view .LVU2689 +3604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7786 .loc 1 3604 9 view .LVU2690 + 7787 0122 84F84020 strb r2, [r4, #64] +3604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7788 .loc 1 3604 9 view .LVU2691 +3606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7789 .loc 1 3606 9 view .LVU2692 +3606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7790 .loc 1 3606 16 is_stmt 0 view .LVU2693 + 7791 0126 0120 movs r0, #1 + 7792 0128 4DE0 b .L494 + 7793 .LVL528: + 7794 .L502: +3612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7795 .loc 1 3612 9 is_stmt 1 view .LVU2694 +3612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7796 .loc 1 3612 12 is_stmt 0 view .LVU2695 + 7797 012a B6F1007F cmp r6, #33554432 + 7798 012e 18BF it ne + 7799 0130 002E cmpne r6, #0 + 7800 0132 1BD1 bne .L504 +3614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7801 .loc 1 3614 11 is_stmt 1 view .LVU2696 + 7802 0134 CDF80090 str r9, [sp] + 7803 0138 3B46 mov r3, r7 + 7804 013a 5FFA88F2 uxtb r2, r8 + 7805 013e 2946 mov r1, r5 + 7806 0140 2046 mov r0, r4 + 7807 .LVL529: +3614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7808 .loc 1 3614 11 is_stmt 0 view .LVU2697 + 7809 0142 FFF7FEFF bl I2C_TransferConfig + 7810 .LVL530: + 7811 .L505: +3622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7812 .loc 1 3622 9 is_stmt 1 view .LVU2698 +3622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7813 .loc 1 3622 25 is_stmt 0 view .LVU2699 + 7814 0146 638D ldrh r3, [r4, #42] + 7815 0148 9BB2 uxth r3, r3 +3622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7816 .loc 1 3622 32 view .LVU2700 + 7817 014a 228D ldrh r2, [r4, #40] +3622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7818 .loc 1 3622 25 view .LVU2701 + 7819 014c 9B1A subs r3, r3, r2 + 7820 014e 9BB2 uxth r3, r3 + 7821 0150 6385 strh r3, [r4, #42] @ movhi +3625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 315 + + + 7822 .loc 1 3625 9 is_stmt 1 view .LVU2702 +3625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7823 .loc 1 3625 9 view .LVU2703 + 7824 0152 0023 movs r3, #0 + 7825 0154 84F84030 strb r3, [r4, #64] +3625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7826 .loc 1 3625 9 view .LVU2704 +3631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7827 .loc 1 3631 9 view .LVU2705 + 7828 0158 1021 movs r1, #16 + 7829 015a 2046 mov r0, r4 + 7830 015c FFF7FEFF bl I2C_Enable_IRQ + 7831 .LVL531: +3634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7832 .loc 1 3634 9 view .LVU2706 +3634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7833 .loc 1 3634 13 is_stmt 0 view .LVU2707 + 7834 0160 2268 ldr r2, [r4] +3634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7835 .loc 1 3634 29 view .LVU2708 + 7836 0162 1368 ldr r3, [r2] + 7837 0164 43F48043 orr r3, r3, #16384 + 7838 0168 1360 str r3, [r2] + 7839 016a 20E0 b .L506 + 7840 .LVL532: + 7841 .L504: +3618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7842 .loc 1 3618 11 is_stmt 1 view .LVU2709 + 7843 016c CDF80090 str r9, [sp] + 7844 0170 3B46 mov r3, r7 + 7845 0172 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 7846 0176 2946 mov r1, r5 + 7847 0178 2046 mov r0, r4 + 7848 .LVL533: +3618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7849 .loc 1 3618 11 is_stmt 0 view .LVU2710 + 7850 017a FFF7FEFF bl I2C_TransferConfig + 7851 .LVL534: + 7852 017e E2E7 b .L505 + 7853 .L500: +3654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7854 .loc 1 3654 7 is_stmt 1 view .LVU2711 +3654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7855 .loc 1 3654 21 is_stmt 0 view .LVU2712 + 7856 0180 164B ldr r3, .L517+12 + 7857 0182 6363 str r3, [r4, #52] +3658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7858 .loc 1 3658 7 is_stmt 1 view .LVU2713 +3658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7859 .loc 1 3658 10 is_stmt 0 view .LVU2714 + 7860 0184 B6F1007F cmp r6, #33554432 + 7861 0188 18BF it ne + 7862 018a 002E cmpne r6, #0 + 7863 018c 11D1 bne .L507 +3660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7864 .loc 1 3660 9 is_stmt 1 view .LVU2715 + 7865 018e CDF80090 str r9, [sp] + ARM GAS /tmp/ccVyGVF6.s page 316 + + + 7866 0192 3B46 mov r3, r7 + 7867 0194 5FFA88F2 uxtb r2, r8 + 7868 0198 2946 mov r1, r5 + 7869 019a 2046 mov r0, r4 + 7870 019c FFF7FEFF bl I2C_TransferConfig + 7871 .LVL535: + 7872 .L508: +3668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7873 .loc 1 3668 7 view .LVU2716 +3668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7874 .loc 1 3668 7 view .LVU2717 + 7875 01a0 0023 movs r3, #0 + 7876 01a2 84F84030 strb r3, [r4, #64] +3668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7877 .loc 1 3668 7 view .LVU2718 +3677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7878 .loc 1 3677 7 view .LVU2719 + 7879 01a6 0121 movs r1, #1 + 7880 01a8 2046 mov r0, r4 + 7881 01aa FFF7FEFF bl I2C_Enable_IRQ + 7882 .LVL536: + 7883 .L506: +3680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7884 .loc 1 3680 5 view .LVU2720 +3680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7885 .loc 1 3680 12 is_stmt 0 view .LVU2721 + 7886 01ae 0020 movs r0, #0 + 7887 01b0 09E0 b .L494 + 7888 .L507: +3664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7889 .loc 1 3664 9 is_stmt 1 view .LVU2722 + 7890 01b2 CDF80090 str r9, [sp] + 7891 01b6 3B46 mov r3, r7 + 7892 01b8 D2B2 uxtb r2, r2 + 7893 01ba 2946 mov r1, r5 + 7894 01bc 2046 mov r0, r4 + 7895 01be FFF7FEFF bl I2C_TransferConfig + 7896 .LVL537: + 7897 01c2 EDE7 b .L508 + 7898 .LVL538: + 7899 .L509: +3684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 7900 .loc 1 3684 12 is_stmt 0 view .LVU2723 + 7901 01c4 0220 movs r0, #2 + 7902 .LVL539: + 7903 .L494: +3686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7904 .loc 1 3686 1 view .LVU2724 + 7905 01c6 03B0 add sp, sp, #12 + 7906 .LCFI92: + 7907 .cfi_remember_state + 7908 .cfi_def_cfa_offset 28 + 7909 @ sp needed + 7910 01c8 BDE8F083 pop {r4, r5, r6, r7, r8, r9, pc} + 7911 .LVL540: + 7912 .L510: + 7913 .LCFI93: + ARM GAS /tmp/ccVyGVF6.s page 317 + + + 7914 .cfi_restore_state +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7915 .loc 1 3517 5 view .LVU2725 + 7916 01cc 0220 movs r0, #2 + 7917 01ce FAE7 b .L494 + 7918 .L518: + 7919 .align 2 + 7920 .L517: + 7921 01d0 00000000 .word I2C_Master_ISR_DMA + 7922 01d4 00000000 .word I2C_DMAMasterTransmitCplt + 7923 01d8 00000000 .word I2C_DMAError + 7924 01dc 00000000 .word I2C_Master_ISR_IT + 7925 01e0 00200080 .word -2147475456 + 7926 .cfi_endproc + 7927 .LFE165: + 7929 .section .text.HAL_I2C_Master_Seq_Receive_IT,"ax",%progbits + 7930 .align 1 + 7931 .global HAL_I2C_Master_Seq_Receive_IT + 7932 .syntax unified + 7933 .thumb + 7934 .thumb_func + 7935 .fpu fpv5-d16 + 7937 HAL_I2C_Master_Seq_Receive_IT: + 7938 .LVL541: + 7939 .LFB166: +3702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 7940 .loc 1 3702 1 is_stmt 1 view -0 + 7941 .cfi_startproc + 7942 @ args = 4, pretend = 0, frame = 0 + 7943 @ frame_needed = 0, uses_anonymous_args = 0 +3702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 7944 .loc 1 3702 1 is_stmt 0 view .LVU2727 + 7945 0000 70B5 push {r4, r5, r6, lr} + 7946 .LCFI94: + 7947 .cfi_def_cfa_offset 16 + 7948 .cfi_offset 4, -16 + 7949 .cfi_offset 5, -12 + 7950 .cfi_offset 6, -8 + 7951 .cfi_offset 14, -4 + 7952 0002 82B0 sub sp, sp, #8 + 7953 .LCFI95: + 7954 .cfi_def_cfa_offset 24 + 7955 0004 0446 mov r4, r0 + 7956 0006 0D46 mov r5, r1 + 7957 0008 0699 ldr r1, [sp, #24] + 7958 .LVL542: +3703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_READ; + 7959 .loc 1 3703 3 is_stmt 1 view .LVU2728 +3704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7960 .loc 1 3704 3 view .LVU2729 +3707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7961 .loc 1 3707 3 view .LVU2730 +3709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7962 .loc 1 3709 3 view .LVU2731 +3709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7963 .loc 1 3709 11 is_stmt 0 view .LVU2732 + 7964 000a 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + ARM GAS /tmp/ccVyGVF6.s page 318 + + + 7965 .LVL543: +3709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7966 .loc 1 3709 11 view .LVU2733 + 7967 000e C0B2 uxtb r0, r0 +3709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 7968 .loc 1 3709 6 view .LVU2734 + 7969 0010 2028 cmp r0, #32 + 7970 0012 46D1 bne .L525 +3712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7971 .loc 1 3712 5 is_stmt 1 view .LVU2735 +3712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7972 .loc 1 3712 5 view .LVU2736 + 7973 0014 94F84000 ldrb r0, [r4, #64] @ zero_extendqisi2 + 7974 0018 0128 cmp r0, #1 + 7975 001a 44D0 beq .L526 +3712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7976 .loc 1 3712 5 discriminator 2 view .LVU2737 + 7977 001c 0120 movs r0, #1 + 7978 001e 84F84000 strb r0, [r4, #64] +3712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7979 .loc 1 3712 5 discriminator 2 view .LVU2738 +3714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 7980 .loc 1 3714 5 discriminator 2 view .LVU2739 +3714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 7981 .loc 1 3714 21 is_stmt 0 discriminator 2 view .LVU2740 + 7982 0022 2220 movs r0, #34 + 7983 0024 84F84100 strb r0, [r4, #65] +3715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 7984 .loc 1 3715 5 is_stmt 1 discriminator 2 view .LVU2741 +3715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 7985 .loc 1 3715 21 is_stmt 0 discriminator 2 view .LVU2742 + 7986 0028 1020 movs r0, #16 + 7987 002a 84F84200 strb r0, [r4, #66] +3716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7988 .loc 1 3716 5 is_stmt 1 discriminator 2 view .LVU2743 +3716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 7989 .loc 1 3716 21 is_stmt 0 discriminator 2 view .LVU2744 + 7990 002e 0020 movs r0, #0 + 7991 0030 6064 str r0, [r4, #68] +3719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 7992 .loc 1 3719 5 is_stmt 1 discriminator 2 view .LVU2745 +3719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 7993 .loc 1 3719 23 is_stmt 0 discriminator 2 view .LVU2746 + 7994 0032 6262 str r2, [r4, #36] +3720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 7995 .loc 1 3720 5 is_stmt 1 discriminator 2 view .LVU2747 +3720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 7996 .loc 1 3720 23 is_stmt 0 discriminator 2 view .LVU2748 + 7997 0034 6385 strh r3, [r4, #42] @ movhi +3721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; + 7998 .loc 1 3721 5 is_stmt 1 discriminator 2 view .LVU2749 +3721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_IT; + 7999 .loc 1 3721 23 is_stmt 0 discriminator 2 view .LVU2750 + 8000 0036 E162 str r1, [r4, #44] +3722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8001 .loc 1 3722 5 is_stmt 1 discriminator 2 view .LVU2751 +3722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 319 + + + 8002 .loc 1 3722 23 is_stmt 0 discriminator 2 view .LVU2752 + 8003 0038 1C4B ldr r3, .L530 + 8004 .LVL544: +3722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8005 .loc 1 3722 23 discriminator 2 view .LVU2753 + 8006 003a 6363 str r3, [r4, #52] +3725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8007 .loc 1 3725 5 is_stmt 1 discriminator 2 view .LVU2754 +3725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8008 .loc 1 3725 13 is_stmt 0 discriminator 2 view .LVU2755 + 8009 003c 638D ldrh r3, [r4, #42] + 8010 003e 9BB2 uxth r3, r3 +3725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8011 .loc 1 3725 8 discriminator 2 view .LVU2756 + 8012 0040 FF2B cmp r3, #255 + 8013 0042 26D9 bls .L521 +3727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 8014 .loc 1 3727 7 is_stmt 1 view .LVU2757 +3727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 8015 .loc 1 3727 22 is_stmt 0 view .LVU2758 + 8016 0044 FF23 movs r3, #255 + 8017 0046 2385 strh r3, [r4, #40] @ movhi +3728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8018 .loc 1 3728 7 is_stmt 1 view .LVU2759 + 8019 .LVL545: +3728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8020 .loc 1 3728 16 is_stmt 0 view .LVU2760 + 8021 0048 4FF08076 mov r6, #16777216 + 8022 .LVL546: + 8023 .L522: +3739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 8024 .loc 1 3739 5 is_stmt 1 view .LVU2761 +3739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 8025 .loc 1 3739 14 is_stmt 0 view .LVU2762 + 8026 004c 236B ldr r3, [r4, #48] +3739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 8027 .loc 1 3739 8 view .LVU2763 + 8028 004e 122B cmp r3, #18 + 8029 0050 04D1 bne .L523 +3739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 8030 .loc 1 3739 59 discriminator 1 view .LVU2764 + 8031 0052 B1F52A4F cmp r1, #43520 + 8032 0056 18BF it ne + 8033 0058 AA29 cmpne r1, #170 + 8034 005a 1ED1 bne .L527 + 8035 .L523: +3747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8036 .loc 1 3747 7 is_stmt 1 view .LVU2765 + 8037 005c 2046 mov r0, r4 + 8038 005e FFF7FEFF bl I2C_ConvertOtherXferOptions + 8039 .LVL547: +3750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8040 .loc 1 3750 7 view .LVU2766 +3750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8041 .loc 1 3750 15 is_stmt 0 view .LVU2767 + 8042 0062 638D ldrh r3, [r4, #42] + 8043 0064 9BB2 uxth r3, r3 + ARM GAS /tmp/ccVyGVF6.s page 320 + + +3750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8044 .loc 1 3750 10 view .LVU2768 + 8045 0066 FF2B cmp r3, #255 + 8046 0068 19D8 bhi .L528 +3752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8047 .loc 1 3752 9 is_stmt 1 view .LVU2769 +3752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8048 .loc 1 3752 18 is_stmt 0 view .LVU2770 + 8049 006a E66A ldr r6, [r4, #44] + 8050 .LVL548: +3704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8051 .loc 1 3704 12 view .LVU2771 + 8052 006c 104B ldr r3, .L530+4 + 8053 .L524: + 8054 .LVL549: +3757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8055 .loc 1 3757 5 is_stmt 1 view .LVU2772 + 8056 006e 0093 str r3, [sp] + 8057 0070 3346 mov r3, r6 + 8058 .LVL550: +3757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8059 .loc 1 3757 5 is_stmt 0 view .LVU2773 + 8060 0072 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 8061 0076 2946 mov r1, r5 + 8062 0078 2046 mov r0, r4 + 8063 007a FFF7FEFF bl I2C_TransferConfig + 8064 .LVL551: +3760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8065 .loc 1 3760 5 is_stmt 1 view .LVU2774 +3760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8066 .loc 1 3760 5 view .LVU2775 + 8067 007e 0025 movs r5, #0 + 8068 0080 84F84050 strb r5, [r4, #64] +3760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8069 .loc 1 3760 5 view .LVU2776 +3765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8070 .loc 1 3765 5 view .LVU2777 + 8071 0084 0221 movs r1, #2 + 8072 0086 2046 mov r0, r4 + 8073 0088 FFF7FEFF bl I2C_Enable_IRQ + 8074 .LVL552: +3767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8075 .loc 1 3767 5 view .LVU2778 +3767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8076 .loc 1 3767 12 is_stmt 0 view .LVU2779 + 8077 008c 2846 mov r0, r5 + 8078 .LVL553: + 8079 .L520: +3773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8080 .loc 1 3773 1 view .LVU2780 + 8081 008e 02B0 add sp, sp, #8 + 8082 .LCFI96: + 8083 .cfi_remember_state + 8084 .cfi_def_cfa_offset 16 + 8085 @ sp needed + 8086 0090 70BD pop {r4, r5, r6, pc} + 8087 .LVL554: + ARM GAS /tmp/ccVyGVF6.s page 321 + + + 8088 .L521: + 8089 .LCFI97: + 8090 .cfi_restore_state +3732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 8091 .loc 1 3732 7 is_stmt 1 view .LVU2781 +3732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 8092 .loc 1 3732 28 is_stmt 0 view .LVU2782 + 8093 0092 638D ldrh r3, [r4, #42] +3732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 8094 .loc 1 3732 22 view .LVU2783 + 8095 0094 2385 strh r3, [r4, #40] @ movhi +3733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8096 .loc 1 3733 7 is_stmt 1 view .LVU2784 +3733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8097 .loc 1 3733 16 is_stmt 0 view .LVU2785 + 8098 0096 E66A ldr r6, [r4, #44] + 8099 .LVL555: +3733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8100 .loc 1 3733 16 view .LVU2786 + 8101 0098 D8E7 b .L522 + 8102 .L527: +3742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8103 .loc 1 3742 19 view .LVU2787 + 8104 009a 0023 movs r3, #0 + 8105 009c E7E7 b .L524 + 8106 .LVL556: + 8107 .L528: +3704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8108 .loc 1 3704 12 view .LVU2788 + 8109 009e 044B ldr r3, .L530+4 + 8110 00a0 E5E7 b .L524 + 8111 .LVL557: + 8112 .L525: +3771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8113 .loc 1 3771 12 view .LVU2789 + 8114 00a2 0220 movs r0, #2 + 8115 00a4 F3E7 b .L520 + 8116 .L526: +3712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8117 .loc 1 3712 5 view .LVU2790 + 8118 00a6 0220 movs r0, #2 + 8119 00a8 F1E7 b .L520 + 8120 .L531: + 8121 00aa 00BF .align 2 + 8122 .L530: + 8123 00ac 00000000 .word I2C_Master_ISR_IT + 8124 00b0 00240080 .word -2147474432 + 8125 .cfi_endproc + 8126 .LFE166: + 8128 .section .text.HAL_I2C_Master_Seq_Receive_DMA,"ax",%progbits + 8129 .align 1 + 8130 .global HAL_I2C_Master_Seq_Receive_DMA + 8131 .syntax unified + 8132 .thumb + 8133 .thumb_func + 8134 .fpu fpv5-d16 + 8136 HAL_I2C_Master_Seq_Receive_DMA: + ARM GAS /tmp/ccVyGVF6.s page 322 + + + 8137 .LVL558: + 8138 .LFB167: +3789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 8139 .loc 1 3789 1 is_stmt 1 view -0 + 8140 .cfi_startproc + 8141 @ args = 4, pretend = 0, frame = 0 + 8142 @ frame_needed = 0, uses_anonymous_args = 0 +3789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 8143 .loc 1 3789 1 is_stmt 0 view .LVU2792 + 8144 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} + 8145 .LCFI98: + 8146 .cfi_def_cfa_offset 24 + 8147 .cfi_offset 4, -24 + 8148 .cfi_offset 5, -20 + 8149 .cfi_offset 6, -16 + 8150 .cfi_offset 7, -12 + 8151 .cfi_offset 8, -8 + 8152 .cfi_offset 14, -4 + 8153 0004 82B0 sub sp, sp, #8 + 8154 .LCFI99: + 8155 .cfi_def_cfa_offset 32 + 8156 0006 0446 mov r4, r0 + 8157 0008 1546 mov r5, r2 + 8158 000a 089A ldr r2, [sp, #32] + 8159 .LVL559: +3790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xferrequest = I2C_GENERATE_START_READ; + 8160 .loc 1 3790 3 is_stmt 1 view .LVU2793 +3791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 8161 .loc 1 3791 3 view .LVU2794 +3792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8162 .loc 1 3792 3 view .LVU2795 +3795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8163 .loc 1 3795 3 view .LVU2796 +3797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8164 .loc 1 3797 3 view .LVU2797 +3797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8165 .loc 1 3797 11 is_stmt 0 view .LVU2798 + 8166 000c 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 8167 .LVL560: +3797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8168 .loc 1 3797 11 view .LVU2799 + 8169 0010 C0B2 uxtb r0, r0 +3797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8170 .loc 1 3797 6 view .LVU2800 + 8171 0012 2028 cmp r0, #32 + 8172 0014 40F09D80 bne .L543 + 8173 0018 0E46 mov r6, r1 +3800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8174 .loc 1 3800 5 is_stmt 1 view .LVU2801 +3800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8175 .loc 1 3800 5 view .LVU2802 + 8176 001a 94F84010 ldrb r1, [r4, #64] @ zero_extendqisi2 + 8177 .LVL561: +3800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8178 .loc 1 3800 5 is_stmt 0 view .LVU2803 + 8179 001e 0129 cmp r1, #1 + 8180 0020 00F09B80 beq .L544 + ARM GAS /tmp/ccVyGVF6.s page 323 + + +3800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8181 .loc 1 3800 5 is_stmt 1 discriminator 2 view .LVU2804 + 8182 0024 0121 movs r1, #1 + 8183 0026 84F84010 strb r1, [r4, #64] +3800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8184 .loc 1 3800 5 discriminator 2 view .LVU2805 +3802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 8185 .loc 1 3802 5 discriminator 2 view .LVU2806 +3802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_MASTER; + 8186 .loc 1 3802 21 is_stmt 0 discriminator 2 view .LVU2807 + 8187 002a 2221 movs r1, #34 + 8188 002c 84F84110 strb r1, [r4, #65] +3803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8189 .loc 1 3803 5 is_stmt 1 discriminator 2 view .LVU2808 +3803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8190 .loc 1 3803 21 is_stmt 0 discriminator 2 view .LVU2809 + 8191 0030 1021 movs r1, #16 + 8192 0032 84F84210 strb r1, [r4, #66] +3804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8193 .loc 1 3804 5 is_stmt 1 discriminator 2 view .LVU2810 +3804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8194 .loc 1 3804 21 is_stmt 0 discriminator 2 view .LVU2811 + 8195 0036 0021 movs r1, #0 + 8196 0038 6164 str r1, [r4, #68] +3807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 8197 .loc 1 3807 5 is_stmt 1 discriminator 2 view .LVU2812 +3807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 8198 .loc 1 3807 23 is_stmt 0 discriminator 2 view .LVU2813 + 8199 003a 6562 str r5, [r4, #36] +3808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 8200 .loc 1 3808 5 is_stmt 1 discriminator 2 view .LVU2814 +3808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 8201 .loc 1 3808 23 is_stmt 0 discriminator 2 view .LVU2815 + 8202 003c 6385 strh r3, [r4, #42] @ movhi +3809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; + 8203 .loc 1 3809 5 is_stmt 1 discriminator 2 view .LVU2816 +3809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Master_ISR_DMA; + 8204 .loc 1 3809 23 is_stmt 0 discriminator 2 view .LVU2817 + 8205 003e E262 str r2, [r4, #44] +3810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8206 .loc 1 3810 5 is_stmt 1 discriminator 2 view .LVU2818 +3810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8207 .loc 1 3810 23 is_stmt 0 discriminator 2 view .LVU2819 + 8208 0040 474B ldr r3, .L550 + 8209 .LVL562: +3810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8210 .loc 1 3810 23 discriminator 2 view .LVU2820 + 8211 0042 6363 str r3, [r4, #52] +3813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8212 .loc 1 3813 5 is_stmt 1 discriminator 2 view .LVU2821 +3813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8213 .loc 1 3813 13 is_stmt 0 discriminator 2 view .LVU2822 + 8214 0044 638D ldrh r3, [r4, #42] + 8215 0046 9BB2 uxth r3, r3 +3813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8216 .loc 1 3813 8 discriminator 2 view .LVU2823 + 8217 0048 FF2B cmp r3, #255 + ARM GAS /tmp/ccVyGVF6.s page 324 + + + 8218 004a 3AD9 bls .L534 +3815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 8219 .loc 1 3815 7 is_stmt 1 view .LVU2824 +3815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = I2C_RELOAD_MODE; + 8220 .loc 1 3815 22 is_stmt 0 view .LVU2825 + 8221 004c FF23 movs r3, #255 + 8222 004e 2385 strh r3, [r4, #40] @ movhi +3816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8223 .loc 1 3816 7 is_stmt 1 view .LVU2826 + 8224 .LVL563: +3816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8225 .loc 1 3816 16 is_stmt 0 view .LVU2827 + 8226 0050 4FF08077 mov r7, #16777216 + 8227 .LVL564: + 8228 .L535: +3827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 8229 .loc 1 3827 5 is_stmt 1 view .LVU2828 +3827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 8230 .loc 1 3827 14 is_stmt 0 view .LVU2829 + 8231 0054 236B ldr r3, [r4, #48] +3827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 8232 .loc 1 3827 8 view .LVU2830 + 8233 0056 122B cmp r3, #18 + 8234 0058 04D1 bne .L536 +3827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (IS_I2C_TRANSFER_OTHER_OPTIONS_REQUEST(XferOptions) == 0)) + 8235 .loc 1 3827 59 discriminator 1 view .LVU2831 + 8236 005a B2F52A4F cmp r2, #43520 + 8237 005e 18BF it ne + 8238 0060 AA2A cmpne r2, #170 + 8239 0062 32D1 bne .L545 + 8240 .L536: +3835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8241 .loc 1 3835 7 is_stmt 1 view .LVU2832 + 8242 0064 2046 mov r0, r4 + 8243 0066 FFF7FEFF bl I2C_ConvertOtherXferOptions + 8244 .LVL565: +3838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8245 .loc 1 3838 7 view .LVU2833 +3838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8246 .loc 1 3838 15 is_stmt 0 view .LVU2834 + 8247 006a 638D ldrh r3, [r4, #42] + 8248 006c 9BB2 uxth r3, r3 +3838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8249 .loc 1 3838 10 view .LVU2835 + 8250 006e FF2B cmp r3, #255 + 8251 0070 2ED8 bhi .L546 +3840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8252 .loc 1 3840 9 is_stmt 1 view .LVU2836 +3840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8253 .loc 1 3840 18 is_stmt 0 view .LVU2837 + 8254 0072 E76A ldr r7, [r4, #44] + 8255 .LVL566: +3791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 8256 .loc 1 3791 12 view .LVU2838 + 8257 0074 DFF8F880 ldr r8, .L550+16 + 8258 .L537: + 8259 .LVL567: + ARM GAS /tmp/ccVyGVF6.s page 325 + + +3844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8260 .loc 1 3844 5 is_stmt 1 view .LVU2839 +3844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8261 .loc 1 3844 13 is_stmt 0 view .LVU2840 + 8262 0078 228D ldrh r2, [r4, #40] +3844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8263 .loc 1 3844 8 view .LVU2841 + 8264 007a 002A cmp r2, #0 + 8265 007c 55D0 beq .L538 +3846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8266 .loc 1 3846 7 is_stmt 1 view .LVU2842 +3846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8267 .loc 1 3846 15 is_stmt 0 view .LVU2843 + 8268 007e E36B ldr r3, [r4, #60] +3846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8269 .loc 1 3846 10 view .LVU2844 + 8270 0080 4BB3 cbz r3, .L539 +3849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8271 .loc 1 3849 9 is_stmt 1 view .LVU2845 +3849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8272 .loc 1 3849 40 is_stmt 0 view .LVU2846 + 8273 0082 384A ldr r2, .L550+4 + 8274 0084 DA63 str r2, [r3, #60] +3852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8275 .loc 1 3852 9 is_stmt 1 view .LVU2847 +3852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8276 .loc 1 3852 13 is_stmt 0 view .LVU2848 + 8277 0086 E36B ldr r3, [r4, #60] +3852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8278 .loc 1 3852 41 view .LVU2849 + 8279 0088 374A ldr r2, .L550+8 + 8280 008a DA64 str r2, [r3, #76] +3855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 8281 .loc 1 3855 9 is_stmt 1 view .LVU2850 +3855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 8282 .loc 1 3855 13 is_stmt 0 view .LVU2851 + 8283 008c E26B ldr r2, [r4, #60] +3855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 8284 .loc 1 3855 44 view .LVU2852 + 8285 008e 0023 movs r3, #0 + 8286 0090 1364 str r3, [r2, #64] +3856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8287 .loc 1 3856 9 is_stmt 1 view .LVU2853 +3856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8288 .loc 1 3856 13 is_stmt 0 view .LVU2854 + 8289 0092 E26B ldr r2, [r4, #60] +3856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8290 .loc 1 3856 41 view .LVU2855 + 8291 0094 1365 str r3, [r2, #80] +3859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 8292 .loc 1 3859 9 is_stmt 1 view .LVU2856 +3859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 8293 .loc 1 3859 71 is_stmt 0 view .LVU2857 + 8294 0096 2168 ldr r1, [r4] +3859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 8295 .loc 1 3859 25 view .LVU2858 + 8296 0098 238D ldrh r3, [r4, #40] + ARM GAS /tmp/ccVyGVF6.s page 326 + + + 8297 009a 2A46 mov r2, r5 + 8298 009c 2431 adds r1, r1, #36 + 8299 009e E06B ldr r0, [r4, #60] + 8300 00a0 FFF7FEFF bl HAL_DMA_Start_IT + 8301 .LVL568: +3877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8302 .loc 1 3877 7 is_stmt 1 view .LVU2859 +3877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8303 .loc 1 3877 10 is_stmt 0 view .LVU2860 + 8304 00a4 28B3 cbz r0, .L549 +3900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 8305 .loc 1 3900 9 is_stmt 1 view .LVU2861 +3900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 8306 .loc 1 3900 25 is_stmt 0 view .LVU2862 + 8307 00a6 2023 movs r3, #32 + 8308 00a8 84F84130 strb r3, [r4, #65] +3901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8309 .loc 1 3901 9 is_stmt 1 view .LVU2863 +3901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8310 .loc 1 3901 25 is_stmt 0 view .LVU2864 + 8311 00ac 0022 movs r2, #0 + 8312 00ae 84F84220 strb r2, [r4, #66] +3904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8313 .loc 1 3904 9 is_stmt 1 view .LVU2865 +3904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8314 .loc 1 3904 25 is_stmt 0 view .LVU2866 + 8315 00b2 636C ldr r3, [r4, #68] + 8316 00b4 43F01003 orr r3, r3, #16 + 8317 00b8 6364 str r3, [r4, #68] +3907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8318 .loc 1 3907 9 is_stmt 1 view .LVU2867 +3907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8319 .loc 1 3907 9 view .LVU2868 + 8320 00ba 84F84020 strb r2, [r4, #64] +3907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8321 .loc 1 3907 9 view .LVU2869 +3909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8322 .loc 1 3909 9 view .LVU2870 +3909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8323 .loc 1 3909 16 is_stmt 0 view .LVU2871 + 8324 00be 0120 movs r0, #1 + 8325 .LVL569: +3909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8326 .loc 1 3909 16 view .LVU2872 + 8327 00c0 48E0 b .L533 + 8328 .LVL570: + 8329 .L534: +3820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 8330 .loc 1 3820 7 is_stmt 1 view .LVU2873 +3820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 8331 .loc 1 3820 28 is_stmt 0 view .LVU2874 + 8332 00c2 638D ldrh r3, [r4, #42] +3820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** xfermode = hi2c->XferOptions; + 8333 .loc 1 3820 22 view .LVU2875 + 8334 00c4 2385 strh r3, [r4, #40] @ movhi +3821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8335 .loc 1 3821 7 is_stmt 1 view .LVU2876 + ARM GAS /tmp/ccVyGVF6.s page 327 + + +3821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8336 .loc 1 3821 16 is_stmt 0 view .LVU2877 + 8337 00c6 E76A ldr r7, [r4, #44] + 8338 .LVL571: +3821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8339 .loc 1 3821 16 view .LVU2878 + 8340 00c8 C4E7 b .L535 + 8341 .L545: +3830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8342 .loc 1 3830 19 view .LVU2879 + 8343 00ca 4FF00008 mov r8, #0 + 8344 00ce D3E7 b .L537 + 8345 .L546: +3791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 8346 .loc 1 3791 12 view .LVU2880 + 8347 00d0 DFF89C80 ldr r8, .L550+16 + 8348 00d4 D0E7 b .L537 + 8349 .LVL572: + 8350 .L539: +3865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 8351 .loc 1 3865 9 is_stmt 1 view .LVU2881 +3865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 8352 .loc 1 3865 25 is_stmt 0 view .LVU2882 + 8353 00d6 2023 movs r3, #32 + 8354 00d8 84F84130 strb r3, [r4, #65] +3866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8355 .loc 1 3866 9 is_stmt 1 view .LVU2883 +3866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8356 .loc 1 3866 25 is_stmt 0 view .LVU2884 + 8357 00dc 0022 movs r2, #0 + 8358 00de 84F84220 strb r2, [r4, #66] +3869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8359 .loc 1 3869 9 is_stmt 1 view .LVU2885 +3869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8360 .loc 1 3869 25 is_stmt 0 view .LVU2886 + 8361 00e2 636C ldr r3, [r4, #68] + 8362 00e4 43F08003 orr r3, r3, #128 + 8363 00e8 6364 str r3, [r4, #68] +3872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8364 .loc 1 3872 9 is_stmt 1 view .LVU2887 +3872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8365 .loc 1 3872 9 view .LVU2888 + 8366 00ea 84F84020 strb r2, [r4, #64] +3872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8367 .loc 1 3872 9 view .LVU2889 +3874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8368 .loc 1 3874 9 view .LVU2890 +3874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8369 .loc 1 3874 16 is_stmt 0 view .LVU2891 + 8370 00ee 0120 movs r0, #1 + 8371 00f0 30E0 b .L533 + 8372 .LVL573: + 8373 .L549: +3880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8374 .loc 1 3880 9 is_stmt 1 view .LVU2892 + 8375 00f2 CDF80080 str r8, [sp] + 8376 00f6 3B46 mov r3, r7 + ARM GAS /tmp/ccVyGVF6.s page 328 + + + 8377 00f8 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 8378 00fc 3146 mov r1, r6 + 8379 00fe 2046 mov r0, r4 + 8380 .LVL574: +3880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8381 .loc 1 3880 9 is_stmt 0 view .LVU2893 + 8382 0100 FFF7FEFF bl I2C_TransferConfig + 8383 .LVL575: +3883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8384 .loc 1 3883 9 is_stmt 1 view .LVU2894 +3883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8385 .loc 1 3883 25 is_stmt 0 view .LVU2895 + 8386 0104 638D ldrh r3, [r4, #42] + 8387 0106 9BB2 uxth r3, r3 +3883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8388 .loc 1 3883 32 view .LVU2896 + 8389 0108 228D ldrh r2, [r4, #40] +3883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8390 .loc 1 3883 25 view .LVU2897 + 8391 010a 9B1A subs r3, r3, r2 + 8392 010c 9BB2 uxth r3, r3 + 8393 010e 6385 strh r3, [r4, #42] @ movhi +3886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8394 .loc 1 3886 9 is_stmt 1 view .LVU2898 +3886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8395 .loc 1 3886 9 view .LVU2899 + 8396 0110 0023 movs r3, #0 + 8397 0112 84F84030 strb r3, [r4, #64] +3886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8398 .loc 1 3886 9 view .LVU2900 +3892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8399 .loc 1 3892 9 view .LVU2901 + 8400 0116 1021 movs r1, #16 + 8401 0118 2046 mov r0, r4 + 8402 011a FFF7FEFF bl I2C_Enable_IRQ + 8403 .LVL576: +3895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8404 .loc 1 3895 9 view .LVU2902 +3895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8405 .loc 1 3895 13 is_stmt 0 view .LVU2903 + 8406 011e 2268 ldr r2, [r4] +3895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8407 .loc 1 3895 29 view .LVU2904 + 8408 0120 1368 ldr r3, [r2] + 8409 0122 43F40043 orr r3, r3, #32768 + 8410 0126 1360 str r3, [r2] + 8411 0128 11E0 b .L542 + 8412 .L538: +3915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8413 .loc 1 3915 7 is_stmt 1 view .LVU2905 +3915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8414 .loc 1 3915 21 is_stmt 0 view .LVU2906 + 8415 012a 104B ldr r3, .L550+12 + 8416 012c 6363 str r3, [r4, #52] +3919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_GENERATE_START_READ); + 8417 .loc 1 3919 7 is_stmt 1 view .LVU2907 + 8418 012e 104B ldr r3, .L550+16 + ARM GAS /tmp/ccVyGVF6.s page 329 + + + 8419 0130 0093 str r3, [sp] + 8420 0132 4FF00073 mov r3, #33554432 + 8421 0136 D2B2 uxtb r2, r2 + 8422 0138 3146 mov r1, r6 + 8423 013a 2046 mov r0, r4 + 8424 013c FFF7FEFF bl I2C_TransferConfig + 8425 .LVL577: +3923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8426 .loc 1 3923 7 view .LVU2908 +3923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8427 .loc 1 3923 7 view .LVU2909 + 8428 0140 0023 movs r3, #0 + 8429 0142 84F84030 strb r3, [r4, #64] +3923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8430 .loc 1 3923 7 view .LVU2910 +3932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8431 .loc 1 3932 7 view .LVU2911 + 8432 0146 0221 movs r1, #2 + 8433 0148 2046 mov r0, r4 + 8434 014a FFF7FEFF bl I2C_Enable_IRQ + 8435 .LVL578: + 8436 .L542: +3935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8437 .loc 1 3935 5 view .LVU2912 +3935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8438 .loc 1 3935 12 is_stmt 0 view .LVU2913 + 8439 014e 0020 movs r0, #0 + 8440 0150 00E0 b .L533 + 8441 .LVL579: + 8442 .L543: +3939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8443 .loc 1 3939 12 view .LVU2914 + 8444 0152 0220 movs r0, #2 + 8445 .LVL580: + 8446 .L533: +3941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8447 .loc 1 3941 1 view .LVU2915 + 8448 0154 02B0 add sp, sp, #8 + 8449 .LCFI100: + 8450 .cfi_remember_state + 8451 .cfi_def_cfa_offset 24 + 8452 @ sp needed + 8453 0156 BDE8F081 pop {r4, r5, r6, r7, r8, pc} + 8454 .LVL581: + 8455 .L544: + 8456 .LCFI101: + 8457 .cfi_restore_state +3800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8458 .loc 1 3800 5 view .LVU2916 + 8459 015a 0220 movs r0, #2 + 8460 015c FAE7 b .L533 + 8461 .L551: + 8462 015e 00BF .align 2 + 8463 .L550: + 8464 0160 00000000 .word I2C_Master_ISR_DMA + 8465 0164 00000000 .word I2C_DMAMasterReceiveCplt + 8466 0168 00000000 .word I2C_DMAError + ARM GAS /tmp/ccVyGVF6.s page 330 + + + 8467 016c 00000000 .word I2C_Master_ISR_IT + 8468 0170 00240080 .word -2147474432 + 8469 .cfi_endproc + 8470 .LFE167: + 8472 .section .text.HAL_I2C_Slave_Seq_Transmit_IT,"ax",%progbits + 8473 .align 1 + 8474 .global HAL_I2C_Slave_Seq_Transmit_IT + 8475 .syntax unified + 8476 .thumb + 8477 .thumb_func + 8478 .fpu fpv5-d16 + 8480 HAL_I2C_Slave_Seq_Transmit_IT: + 8481 .LVL582: + 8482 .LFB168: +3955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ + 8483 .loc 1 3955 1 is_stmt 1 view -0 + 8484 .cfi_startproc + 8485 @ args = 0, pretend = 0, frame = 0 + 8486 @ frame_needed = 0, uses_anonymous_args = 0 +3955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ + 8487 .loc 1 3955 1 is_stmt 0 view .LVU2918 + 8488 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 8489 .LCFI102: + 8490 .cfi_def_cfa_offset 24 + 8491 .cfi_offset 3, -24 + 8492 .cfi_offset 4, -20 + 8493 .cfi_offset 5, -16 + 8494 .cfi_offset 6, -12 + 8495 .cfi_offset 7, -8 + 8496 .cfi_offset 14, -4 + 8497 0002 0446 mov r4, r0 +3957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8498 .loc 1 3957 3 is_stmt 1 view .LVU2919 +3960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8499 .loc 1 3960 3 view .LVU2920 +3962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8500 .loc 1 3962 3 view .LVU2921 +3962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8501 .loc 1 3962 22 is_stmt 0 view .LVU2922 + 8502 0004 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 8503 .LVL583: +3962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8504 .loc 1 3962 6 view .LVU2923 + 8505 0008 00F02800 and r0, r0, #40 + 8506 000c 2828 cmp r0, #40 + 8507 000e 60D1 bne .L557 + 8508 0010 0F46 mov r7, r1 + 8509 0012 1646 mov r6, r2 + 8510 0014 1D46 mov r5, r3 +3964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8511 .loc 1 3964 5 is_stmt 1 view .LVU2924 +3964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8512 .loc 1 3964 8 is_stmt 0 view .LVU2925 + 8513 0016 002A cmp r2, #0 + 8514 0018 18BF it ne + 8515 001a 0029 cmpne r1, #0 + 8516 001c 04D1 bne .L554 + ARM GAS /tmp/ccVyGVF6.s page 331 + + +3966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 8517 .loc 1 3966 7 is_stmt 1 view .LVU2926 +3966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 8518 .loc 1 3966 23 is_stmt 0 view .LVU2927 + 8519 001e 4FF40073 mov r3, #512 + 8520 .LVL584: +3966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 8521 .loc 1 3966 23 view .LVU2928 + 8522 0022 6364 str r3, [r4, #68] +3967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8523 .loc 1 3967 7 is_stmt 1 view .LVU2929 +3967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8524 .loc 1 3967 15 is_stmt 0 view .LVU2930 + 8525 0024 0120 movs r0, #1 + 8526 0026 55E0 b .L553 + 8527 .LVL585: + 8528 .L554: +3971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8529 .loc 1 3971 5 is_stmt 1 view .LVU2931 + 8530 0028 48F20101 movw r1, #32769 + 8531 .LVL586: +3971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8532 .loc 1 3971 5 is_stmt 0 view .LVU2932 + 8533 002c 2046 mov r0, r4 + 8534 002e FFF7FEFF bl I2C_Disable_IRQ + 8535 .LVL587: +3974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8536 .loc 1 3974 5 is_stmt 1 view .LVU2933 +3974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8537 .loc 1 3974 5 view .LVU2934 + 8538 0032 94F84030 ldrb r3, [r4, #64] @ zero_extendqisi2 + 8539 0036 012B cmp r3, #1 + 8540 0038 4DD0 beq .L558 +3974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8541 .loc 1 3974 5 discriminator 2 view .LVU2935 + 8542 003a 0123 movs r3, #1 + 8543 003c 84F84030 strb r3, [r4, #64] +3974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8544 .loc 1 3974 5 discriminator 2 view .LVU2936 +3978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8545 .loc 1 3978 5 discriminator 2 view .LVU2937 +3978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8546 .loc 1 3978 13 is_stmt 0 discriminator 2 view .LVU2938 + 8547 0040 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 8548 0044 DBB2 uxtb r3, r3 +3978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8549 .loc 1 3978 8 discriminator 2 view .LVU2939 + 8550 0046 2A2B cmp r3, #42 + 8551 0048 28D0 beq .L560 + 8552 .L555: +4004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 8553 .loc 1 4004 5 is_stmt 1 view .LVU2940 +4004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 8554 .loc 1 4004 21 is_stmt 0 view .LVU2941 + 8555 004a 2923 movs r3, #41 + 8556 004c 84F84130 strb r3, [r4, #65] +4005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + ARM GAS /tmp/ccVyGVF6.s page 332 + + + 8557 .loc 1 4005 5 is_stmt 1 view .LVU2942 +4005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8558 .loc 1 4005 21 is_stmt 0 view .LVU2943 + 8559 0050 2023 movs r3, #32 + 8560 0052 84F84230 strb r3, [r4, #66] +4006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8561 .loc 1 4006 5 is_stmt 1 view .LVU2944 +4006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8562 .loc 1 4006 21 is_stmt 0 view .LVU2945 + 8563 0056 0023 movs r3, #0 + 8564 0058 6364 str r3, [r4, #68] +4009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8565 .loc 1 4009 5 is_stmt 1 view .LVU2946 +4009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8566 .loc 1 4009 9 is_stmt 0 view .LVU2947 + 8567 005a 2268 ldr r2, [r4] +4009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8568 .loc 1 4009 25 view .LVU2948 + 8569 005c 5368 ldr r3, [r2, #4] + 8570 005e 23F40043 bic r3, r3, #32768 + 8571 0062 5360 str r3, [r2, #4] +4012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 8572 .loc 1 4012 5 is_stmt 1 view .LVU2949 +4012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 8573 .loc 1 4012 23 is_stmt 0 view .LVU2950 + 8574 0064 6762 str r7, [r4, #36] +4013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 8575 .loc 1 4013 5 is_stmt 1 view .LVU2951 +4013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 8576 .loc 1 4013 23 is_stmt 0 view .LVU2952 + 8577 0066 6685 strh r6, [r4, #42] @ movhi +4014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 8578 .loc 1 4014 5 is_stmt 1 view .LVU2953 +4014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 8579 .loc 1 4014 29 is_stmt 0 view .LVU2954 + 8580 0068 638D ldrh r3, [r4, #42] +4014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 8581 .loc 1 4014 23 view .LVU2955 + 8582 006a 2385 strh r3, [r4, #40] @ movhi +4015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 8583 .loc 1 4015 5 is_stmt 1 view .LVU2956 +4015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 8584 .loc 1 4015 23 is_stmt 0 view .LVU2957 + 8585 006c E562 str r5, [r4, #44] +4016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8586 .loc 1 4016 5 is_stmt 1 view .LVU2958 +4016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8587 .loc 1 4016 23 is_stmt 0 view .LVU2959 + 8588 006e 1B4B ldr r3, .L561 + 8589 0070 6363 str r3, [r4, #52] +4018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) + 8590 .loc 1 4018 5 is_stmt 1 view .LVU2960 +4018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) + 8591 .loc 1 4018 11 is_stmt 0 view .LVU2961 + 8592 0072 2268 ldr r2, [r4] + 8593 0074 9369 ldr r3, [r2, #24] + 8594 0076 03F00803 and r3, r3, #8 + ARM GAS /tmp/ccVyGVF6.s page 333 + + + 8595 .LVL588: +4019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8596 .loc 1 4019 5 is_stmt 1 view .LVU2962 +4019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8597 .loc 1 4019 10 is_stmt 0 view .LVU2963 + 8598 007a 9169 ldr r1, [r2, #24] +4019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8599 .loc 1 4019 8 view .LVU2964 + 8600 007c 11F4803F tst r1, #65536 + 8601 0080 02D0 beq .L556 +4019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8602 .loc 1 4019 54 discriminator 1 view .LVU2965 + 8603 0082 0BB1 cbz r3, .L556 +4023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8604 .loc 1 4023 7 is_stmt 1 view .LVU2966 + 8605 0084 0823 movs r3, #8 + 8606 .LVL589: +4023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8607 .loc 1 4023 7 is_stmt 0 view .LVU2967 + 8608 0086 D361 str r3, [r2, #28] + 8609 .L556: +4027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8610 .loc 1 4027 5 is_stmt 1 view .LVU2968 +4027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8611 .loc 1 4027 5 view .LVU2969 + 8612 0088 0025 movs r5, #0 + 8613 .LVL590: +4027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8614 .loc 1 4027 5 is_stmt 0 view .LVU2970 + 8615 008a 84F84050 strb r5, [r4, #64] +4027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8616 .loc 1 4027 5 is_stmt 1 view .LVU2971 +4033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8617 .loc 1 4033 5 view .LVU2972 + 8618 008e 48F20101 movw r1, #32769 + 8619 0092 2046 mov r0, r4 + 8620 0094 FFF7FEFF bl I2C_Enable_IRQ + 8621 .LVL591: +4035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8622 .loc 1 4035 5 view .LVU2973 +4035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8623 .loc 1 4035 12 is_stmt 0 view .LVU2974 + 8624 0098 2846 mov r0, r5 + 8625 009a 1BE0 b .L553 + 8626 .LVL592: + 8627 .L560: +3981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8628 .loc 1 3981 7 is_stmt 1 view .LVU2975 + 8629 009c 0221 movs r1, #2 + 8630 009e 2046 mov r0, r4 + 8631 00a0 FFF7FEFF bl I2C_Disable_IRQ + 8632 .LVL593: +3984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8633 .loc 1 3984 7 view .LVU2976 +3984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8634 .loc 1 3984 16 is_stmt 0 view .LVU2977 + 8635 00a4 2368 ldr r3, [r4] + ARM GAS /tmp/ccVyGVF6.s page 334 + + +3984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8636 .loc 1 3984 26 view .LVU2978 + 8637 00a6 1A68 ldr r2, [r3] +3984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8638 .loc 1 3984 10 view .LVU2979 + 8639 00a8 12F4004F tst r2, #32768 + 8640 00ac CDD0 beq .L555 +3986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8641 .loc 1 3986 9 is_stmt 1 view .LVU2980 +3986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8642 .loc 1 3986 29 is_stmt 0 view .LVU2981 + 8643 00ae 1A68 ldr r2, [r3] + 8644 00b0 22F40042 bic r2, r2, #32768 + 8645 00b4 1A60 str r2, [r3] +3988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8646 .loc 1 3988 9 is_stmt 1 view .LVU2982 +3988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8647 .loc 1 3988 17 is_stmt 0 view .LVU2983 + 8648 00b6 E36B ldr r3, [r4, #60] +3988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8649 .loc 1 3988 12 view .LVU2984 + 8650 00b8 002B cmp r3, #0 + 8651 00ba C6D0 beq .L555 +3992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8652 .loc 1 3992 11 is_stmt 1 view .LVU2985 +3992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8653 .loc 1 3992 43 is_stmt 0 view .LVU2986 + 8654 00bc 084A ldr r2, .L561+4 + 8655 00be 1A65 str r2, [r3, #80] +3995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8656 .loc 1 3995 11 is_stmt 1 view .LVU2987 +3995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8657 .loc 1 3995 15 is_stmt 0 view .LVU2988 + 8658 00c0 E06B ldr r0, [r4, #60] + 8659 00c2 FFF7FEFF bl HAL_DMA_Abort_IT + 8660 .LVL594: +3995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8661 .loc 1 3995 14 view .LVU2989 + 8662 00c6 0028 cmp r0, #0 + 8663 00c8 BFD0 beq .L555 +3998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8664 .loc 1 3998 13 is_stmt 1 view .LVU2990 +3998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8665 .loc 1 3998 17 is_stmt 0 view .LVU2991 + 8666 00ca E06B ldr r0, [r4, #60] +3998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8667 .loc 1 3998 25 view .LVU2992 + 8668 00cc 036D ldr r3, [r0, #80] +3998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8669 .loc 1 3998 13 view .LVU2993 + 8670 00ce 9847 blx r3 + 8671 .LVL595: + 8672 00d0 BBE7 b .L555 + 8673 .LVL596: + 8674 .L557: +4039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8675 .loc 1 4039 12 view .LVU2994 + ARM GAS /tmp/ccVyGVF6.s page 335 + + + 8676 00d2 0120 movs r0, #1 + 8677 .LVL597: + 8678 .L553: +4041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8679 .loc 1 4041 1 view .LVU2995 + 8680 00d4 F8BD pop {r3, r4, r5, r6, r7, pc} + 8681 .LVL598: + 8682 .L558: +3974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8683 .loc 1 3974 5 view .LVU2996 + 8684 00d6 0220 movs r0, #2 + 8685 00d8 FCE7 b .L553 + 8686 .L562: + 8687 00da 00BF .align 2 + 8688 .L561: + 8689 00dc 00000000 .word I2C_Slave_ISR_IT + 8690 00e0 00000000 .word I2C_DMAAbort + 8691 .cfi_endproc + 8692 .LFE168: + 8694 .section .text.HAL_I2C_Slave_Seq_Transmit_DMA,"ax",%progbits + 8695 .align 1 + 8696 .global HAL_I2C_Slave_Seq_Transmit_DMA + 8697 .syntax unified + 8698 .thumb + 8699 .thumb_func + 8700 .fpu fpv5-d16 + 8702 HAL_I2C_Slave_Seq_Transmit_DMA: + 8703 .LVL599: + 8704 .LFB169: +4055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ + 8705 .loc 1 4055 1 is_stmt 1 view -0 + 8706 .cfi_startproc + 8707 @ args = 0, pretend = 0, frame = 0 + 8708 @ frame_needed = 0, uses_anonymous_args = 0 +4055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ + 8709 .loc 1 4055 1 is_stmt 0 view .LVU2998 + 8710 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 8711 .LCFI103: + 8712 .cfi_def_cfa_offset 24 + 8713 .cfi_offset 3, -24 + 8714 .cfi_offset 4, -20 + 8715 .cfi_offset 5, -16 + 8716 .cfi_offset 6, -12 + 8717 .cfi_offset 7, -8 + 8718 .cfi_offset 14, -4 + 8719 0002 0446 mov r4, r0 +4057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 8720 .loc 1 4057 3 is_stmt 1 view .LVU2999 +4058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8721 .loc 1 4058 3 view .LVU3000 +4061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8722 .loc 1 4061 3 view .LVU3001 +4063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8723 .loc 1 4063 3 view .LVU3002 +4063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8724 .loc 1 4063 22 is_stmt 0 view .LVU3003 + 8725 0004 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + ARM GAS /tmp/ccVyGVF6.s page 336 + + + 8726 .LVL600: +4063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8727 .loc 1 4063 6 view .LVU3004 + 8728 0008 00F02800 and r0, r0, #40 + 8729 000c 2828 cmp r0, #40 + 8730 000e 40F0C080 bne .L573 + 8731 0012 0F46 mov r7, r1 + 8732 0014 1646 mov r6, r2 + 8733 0016 1D46 mov r5, r3 +4065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8734 .loc 1 4065 5 is_stmt 1 view .LVU3005 +4065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8735 .loc 1 4065 8 is_stmt 0 view .LVU3006 + 8736 0018 002A cmp r2, #0 + 8737 001a 18BF it ne + 8738 001c 0029 cmpne r1, #0 + 8739 001e 4FD0 beq .L577 +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8740 .loc 1 4072 5 is_stmt 1 view .LVU3007 +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8741 .loc 1 4072 5 view .LVU3008 + 8742 0020 94F84030 ldrb r3, [r4, #64] @ zero_extendqisi2 + 8743 .LVL601: +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8744 .loc 1 4072 5 is_stmt 0 view .LVU3009 + 8745 0024 012B cmp r3, #1 + 8746 0026 00F0B780 beq .L574 +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8747 .loc 1 4072 5 is_stmt 1 discriminator 2 view .LVU3010 + 8748 002a 0123 movs r3, #1 + 8749 002c 84F84030 strb r3, [r4, #64] +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8750 .loc 1 4072 5 discriminator 2 view .LVU3011 +4075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8751 .loc 1 4075 5 discriminator 2 view .LVU3012 + 8752 0030 48F20101 movw r1, #32769 + 8753 .LVL602: +4075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8754 .loc 1 4075 5 is_stmt 0 discriminator 2 view .LVU3013 + 8755 0034 2046 mov r0, r4 + 8756 0036 FFF7FEFF bl I2C_Disable_IRQ + 8757 .LVL603: +4079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8758 .loc 1 4079 5 is_stmt 1 discriminator 2 view .LVU3014 +4079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8759 .loc 1 4079 13 is_stmt 0 discriminator 2 view .LVU3015 + 8760 003a 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 8761 003e DBB2 uxtb r3, r3 +4079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8762 .loc 1 4079 8 discriminator 2 view .LVU3016 + 8763 0040 2A2B cmp r3, #42 + 8764 0042 42D0 beq .L578 +4104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8765 .loc 1 4104 10 is_stmt 1 view .LVU3017 +4104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8766 .loc 1 4104 18 is_stmt 0 view .LVU3018 + 8767 0044 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + ARM GAS /tmp/ccVyGVF6.s page 337 + + + 8768 0048 DBB2 uxtb r3, r3 +4104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8769 .loc 1 4104 13 view .LVU3019 + 8770 004a 292B cmp r3, #41 + 8771 004c 59D0 beq .L579 + 8772 .L567: +4129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8773 .loc 1 4129 5 is_stmt 1 view .LVU3020 +4131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 8774 .loc 1 4131 5 view .LVU3021 +4131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 8775 .loc 1 4131 21 is_stmt 0 view .LVU3022 + 8776 004e 2923 movs r3, #41 + 8777 0050 84F84130 strb r3, [r4, #65] +4132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8778 .loc 1 4132 5 is_stmt 1 view .LVU3023 +4132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 8779 .loc 1 4132 21 is_stmt 0 view .LVU3024 + 8780 0054 2023 movs r3, #32 + 8781 0056 84F84230 strb r3, [r4, #66] +4133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8782 .loc 1 4133 5 is_stmt 1 view .LVU3025 +4133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8783 .loc 1 4133 21 is_stmt 0 view .LVU3026 + 8784 005a 0023 movs r3, #0 + 8785 005c 6364 str r3, [r4, #68] +4136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8786 .loc 1 4136 5 is_stmt 1 view .LVU3027 +4136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8787 .loc 1 4136 9 is_stmt 0 view .LVU3028 + 8788 005e 2268 ldr r2, [r4] +4136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8789 .loc 1 4136 25 view .LVU3029 + 8790 0060 5368 ldr r3, [r2, #4] + 8791 0062 23F40043 bic r3, r3, #32768 + 8792 0066 5360 str r3, [r2, #4] +4139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 8793 .loc 1 4139 5 is_stmt 1 view .LVU3030 +4139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 8794 .loc 1 4139 23 is_stmt 0 view .LVU3031 + 8795 0068 6762 str r7, [r4, #36] +4140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 8796 .loc 1 4140 5 is_stmt 1 view .LVU3032 +4140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 8797 .loc 1 4140 23 is_stmt 0 view .LVU3033 + 8798 006a 6685 strh r6, [r4, #42] @ movhi +4141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 8799 .loc 1 4141 5 is_stmt 1 view .LVU3034 +4141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 8800 .loc 1 4141 29 is_stmt 0 view .LVU3035 + 8801 006c 638D ldrh r3, [r4, #42] +4141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 8802 .loc 1 4141 23 view .LVU3036 + 8803 006e 2385 strh r3, [r4, #40] @ movhi +4142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; + 8804 .loc 1 4142 5 is_stmt 1 view .LVU3037 +4142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; + ARM GAS /tmp/ccVyGVF6.s page 338 + + + 8805 .loc 1 4142 23 is_stmt 0 view .LVU3038 + 8806 0070 E562 str r5, [r4, #44] +4143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8807 .loc 1 4143 5 is_stmt 1 view .LVU3039 +4143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8808 .loc 1 4143 23 is_stmt 0 view .LVU3040 + 8809 0072 4A4B ldr r3, .L580 + 8810 0074 6363 str r3, [r4, #52] +4145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8811 .loc 1 4145 5 is_stmt 1 view .LVU3041 +4145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8812 .loc 1 4145 13 is_stmt 0 view .LVU3042 + 8813 0076 A36B ldr r3, [r4, #56] +4145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8814 .loc 1 4145 8 view .LVU3043 + 8815 0078 002B cmp r3, #0 + 8816 007a 59D0 beq .L568 +4148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8817 .loc 1 4148 7 is_stmt 1 view .LVU3044 +4148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8818 .loc 1 4148 38 is_stmt 0 view .LVU3045 + 8819 007c 484A ldr r2, .L580+4 + 8820 007e DA63 str r2, [r3, #60] +4151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8821 .loc 1 4151 7 is_stmt 1 view .LVU3046 +4151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8822 .loc 1 4151 11 is_stmt 0 view .LVU3047 + 8823 0080 A36B ldr r3, [r4, #56] +4151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8824 .loc 1 4151 39 view .LVU3048 + 8825 0082 484A ldr r2, .L580+8 + 8826 0084 DA64 str r2, [r3, #76] +4154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 8827 .loc 1 4154 7 is_stmt 1 view .LVU3049 +4154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 8828 .loc 1 4154 11 is_stmt 0 view .LVU3050 + 8829 0086 A26B ldr r2, [r4, #56] +4154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmatx->XferAbortCallback = NULL; + 8830 .loc 1 4154 42 view .LVU3051 + 8831 0088 0023 movs r3, #0 + 8832 008a 1364 str r3, [r2, #64] +4155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8833 .loc 1 4155 7 is_stmt 1 view .LVU3052 +4155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8834 .loc 1 4155 11 is_stmt 0 view .LVU3053 + 8835 008c A26B ldr r2, [r4, #56] +4155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8836 .loc 1 4155 39 view .LVU3054 + 8837 008e 1365 str r3, [r2, #80] +4158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 8838 .loc 1 4158 7 is_stmt 1 view .LVU3055 +4158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 8839 .loc 1 4158 86 is_stmt 0 view .LVU3056 + 8840 0090 2268 ldr r2, [r4] +4158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize); + 8841 .loc 1 4158 23 view .LVU3057 + 8842 0092 238D ldrh r3, [r4, #40] + ARM GAS /tmp/ccVyGVF6.s page 339 + + + 8843 0094 2832 adds r2, r2, #40 + 8844 0096 3946 mov r1, r7 + 8845 0098 A06B ldr r0, [r4, #56] + 8846 009a FFF7FEFF bl HAL_DMA_Start_IT + 8847 .LVL604: +4176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8848 .loc 1 4176 5 is_stmt 1 view .LVU3058 +4176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8849 .loc 1 4176 8 is_stmt 0 view .LVU3059 + 8850 009e 0546 mov r5, r0 + 8851 .LVL605: +4176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8852 .loc 1 4176 8 view .LVU3060 + 8853 00a0 0028 cmp r0, #0 + 8854 00a2 53D0 beq .L569 +4187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 8855 .loc 1 4187 7 is_stmt 1 view .LVU3061 +4187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 8856 .loc 1 4187 23 is_stmt 0 view .LVU3062 + 8857 00a4 2823 movs r3, #40 + 8858 00a6 84F84130 strb r3, [r4, #65] +4188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8859 .loc 1 4188 7 is_stmt 1 view .LVU3063 +4188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8860 .loc 1 4188 23 is_stmt 0 view .LVU3064 + 8861 00aa 0022 movs r2, #0 + 8862 00ac 84F84220 strb r2, [r4, #66] +4191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8863 .loc 1 4191 7 is_stmt 1 view .LVU3065 +4191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8864 .loc 1 4191 23 is_stmt 0 view .LVU3066 + 8865 00b0 636C ldr r3, [r4, #68] + 8866 00b2 43F01003 orr r3, r3, #16 + 8867 00b6 6364 str r3, [r4, #68] +4194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8868 .loc 1 4194 7 is_stmt 1 view .LVU3067 +4194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8869 .loc 1 4194 7 view .LVU3068 + 8870 00b8 84F84020 strb r2, [r4, #64] +4194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8871 .loc 1 4194 7 view .LVU3069 +4196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8872 .loc 1 4196 7 view .LVU3070 +4196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8873 .loc 1 4196 14 is_stmt 0 view .LVU3071 + 8874 00bc 0125 movs r5, #1 + 8875 00be 69E0 b .L564 + 8876 .LVL606: + 8877 .L577: +4067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 8878 .loc 1 4067 7 is_stmt 1 view .LVU3072 +4067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 8879 .loc 1 4067 23 is_stmt 0 view .LVU3073 + 8880 00c0 4FF40073 mov r3, #512 + 8881 .LVL607: +4067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 8882 .loc 1 4067 23 view .LVU3074 + ARM GAS /tmp/ccVyGVF6.s page 340 + + + 8883 00c4 6364 str r3, [r4, #68] +4068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8884 .loc 1 4068 7 is_stmt 1 view .LVU3075 +4068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8885 .loc 1 4068 15 is_stmt 0 view .LVU3076 + 8886 00c6 0125 movs r5, #1 + 8887 .LVL608: +4068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8888 .loc 1 4068 15 view .LVU3077 + 8889 00c8 64E0 b .L564 + 8890 .LVL609: + 8891 .L578: +4082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8892 .loc 1 4082 7 is_stmt 1 view .LVU3078 + 8893 00ca 0221 movs r1, #2 + 8894 00cc 2046 mov r0, r4 + 8895 00ce FFF7FEFF bl I2C_Disable_IRQ + 8896 .LVL610: +4084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8897 .loc 1 4084 7 view .LVU3079 +4084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8898 .loc 1 4084 16 is_stmt 0 view .LVU3080 + 8899 00d2 2368 ldr r3, [r4] +4084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8900 .loc 1 4084 26 view .LVU3081 + 8901 00d4 1A68 ldr r2, [r3] +4084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8902 .loc 1 4084 10 view .LVU3082 + 8903 00d6 12F4004F tst r2, #32768 + 8904 00da B8D0 beq .L567 +4087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8905 .loc 1 4087 9 is_stmt 1 view .LVU3083 +4087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8906 .loc 1 4087 17 is_stmt 0 view .LVU3084 + 8907 00dc E26B ldr r2, [r4, #60] +4087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8908 .loc 1 4087 12 view .LVU3085 + 8909 00de 002A cmp r2, #0 + 8910 00e0 B5D0 beq .L567 +4089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8911 .loc 1 4089 11 is_stmt 1 view .LVU3086 +4089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8912 .loc 1 4089 31 is_stmt 0 view .LVU3087 + 8913 00e2 1A68 ldr r2, [r3] + 8914 00e4 22F40042 bic r2, r2, #32768 + 8915 00e8 1A60 str r2, [r3] +4093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8916 .loc 1 4093 11 is_stmt 1 view .LVU3088 +4093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8917 .loc 1 4093 15 is_stmt 0 view .LVU3089 + 8918 00ea E36B ldr r3, [r4, #60] +4093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8919 .loc 1 4093 43 view .LVU3090 + 8920 00ec 2E4A ldr r2, .L580+12 + 8921 00ee 1A65 str r2, [r3, #80] +4096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8922 .loc 1 4096 11 is_stmt 1 view .LVU3091 + ARM GAS /tmp/ccVyGVF6.s page 341 + + +4096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8923 .loc 1 4096 15 is_stmt 0 view .LVU3092 + 8924 00f0 E06B ldr r0, [r4, #60] + 8925 00f2 FFF7FEFF bl HAL_DMA_Abort_IT + 8926 .LVL611: +4096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8927 .loc 1 4096 14 view .LVU3093 + 8928 00f6 0028 cmp r0, #0 + 8929 00f8 A9D0 beq .L567 +4099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8930 .loc 1 4099 13 is_stmt 1 view .LVU3094 +4099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8931 .loc 1 4099 17 is_stmt 0 view .LVU3095 + 8932 00fa E06B ldr r0, [r4, #60] +4099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8933 .loc 1 4099 25 view .LVU3096 + 8934 00fc 036D ldr r3, [r0, #80] +4099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8935 .loc 1 4099 13 view .LVU3097 + 8936 00fe 9847 blx r3 + 8937 .LVL612: + 8938 0100 A5E7 b .L567 + 8939 .L579: +4106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8940 .loc 1 4106 7 is_stmt 1 view .LVU3098 +4106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8941 .loc 1 4106 16 is_stmt 0 view .LVU3099 + 8942 0102 2368 ldr r3, [r4] +4106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8943 .loc 1 4106 26 view .LVU3100 + 8944 0104 1A68 ldr r2, [r3] +4106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8945 .loc 1 4106 10 view .LVU3101 + 8946 0106 12F4804F tst r2, #16384 + 8947 010a A0D0 beq .L567 +4108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8948 .loc 1 4108 9 is_stmt 1 view .LVU3102 +4108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8949 .loc 1 4108 29 is_stmt 0 view .LVU3103 + 8950 010c 1A68 ldr r2, [r3] + 8951 010e 22F48042 bic r2, r2, #16384 + 8952 0112 1A60 str r2, [r3] +4111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8953 .loc 1 4111 9 is_stmt 1 view .LVU3104 +4111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8954 .loc 1 4111 17 is_stmt 0 view .LVU3105 + 8955 0114 A36B ldr r3, [r4, #56] +4111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8956 .loc 1 4111 12 view .LVU3106 + 8957 0116 002B cmp r3, #0 + 8958 0118 99D0 beq .L567 +4115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8959 .loc 1 4115 11 is_stmt 1 view .LVU3107 +4115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8960 .loc 1 4115 43 is_stmt 0 view .LVU3108 + 8961 011a 234A ldr r2, .L580+12 + 8962 011c 1A65 str r2, [r3, #80] + ARM GAS /tmp/ccVyGVF6.s page 342 + + +4118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8963 .loc 1 4118 11 is_stmt 1 view .LVU3109 +4118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8964 .loc 1 4118 15 is_stmt 0 view .LVU3110 + 8965 011e A06B ldr r0, [r4, #56] + 8966 0120 FFF7FEFF bl HAL_DMA_Abort_IT + 8967 .LVL613: +4118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 8968 .loc 1 4118 14 view .LVU3111 + 8969 0124 0028 cmp r0, #0 + 8970 0126 92D0 beq .L567 +4121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8971 .loc 1 4121 13 is_stmt 1 view .LVU3112 +4121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8972 .loc 1 4121 17 is_stmt 0 view .LVU3113 + 8973 0128 A06B ldr r0, [r4, #56] +4121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8974 .loc 1 4121 25 view .LVU3114 + 8975 012a 036D ldr r3, [r0, #80] +4121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8976 .loc 1 4121 13 view .LVU3115 + 8977 012c 9847 blx r3 + 8978 .LVL614: + 8979 012e 8EE7 b .L567 + 8980 .L568: +4164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 8981 .loc 1 4164 7 is_stmt 1 view .LVU3116 +4164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 8982 .loc 1 4164 23 is_stmt 0 view .LVU3117 + 8983 0130 2823 movs r3, #40 + 8984 0132 84F84130 strb r3, [r4, #65] +4165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8985 .loc 1 4165 7 is_stmt 1 view .LVU3118 +4165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8986 .loc 1 4165 23 is_stmt 0 view .LVU3119 + 8987 0136 0022 movs r2, #0 + 8988 0138 84F84220 strb r2, [r4, #66] +4168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8989 .loc 1 4168 7 is_stmt 1 view .LVU3120 +4168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8990 .loc 1 4168 23 is_stmt 0 view .LVU3121 + 8991 013c 636C ldr r3, [r4, #68] + 8992 013e 43F08003 orr r3, r3, #128 + 8993 0142 6364 str r3, [r4, #68] +4171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8994 .loc 1 4171 7 is_stmt 1 view .LVU3122 +4171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8995 .loc 1 4171 7 view .LVU3123 + 8996 0144 84F84020 strb r2, [r4, #64] +4171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 8997 .loc 1 4171 7 view .LVU3124 +4173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8998 .loc 1 4173 7 view .LVU3125 +4173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 8999 .loc 1 4173 14 is_stmt 0 view .LVU3126 + 9000 0148 0125 movs r5, #1 + 9001 .LVL615: + ARM GAS /tmp/ccVyGVF6.s page 343 + + +4173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9002 .loc 1 4173 14 view .LVU3127 + 9003 014a 23E0 b .L564 + 9004 .LVL616: + 9005 .L569: +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9006 .loc 1 4179 7 is_stmt 1 view .LVU3128 +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9007 .loc 1 4179 23 is_stmt 0 view .LVU3129 + 9008 014c 638D ldrh r3, [r4, #42] + 9009 014e 9BB2 uxth r3, r3 +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9010 .loc 1 4179 30 view .LVU3130 + 9011 0150 228D ldrh r2, [r4, #40] +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9012 .loc 1 4179 23 view .LVU3131 + 9013 0152 9B1A subs r3, r3, r2 + 9014 0154 9BB2 uxth r3, r3 + 9015 0156 6385 strh r3, [r4, #42] @ movhi +4182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9016 .loc 1 4182 7 is_stmt 1 view .LVU3132 +4182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9017 .loc 1 4182 22 is_stmt 0 view .LVU3133 + 9018 0158 0023 movs r3, #0 + 9019 015a 2385 strh r3, [r4, #40] @ movhi +4199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) + 9020 .loc 1 4199 5 is_stmt 1 view .LVU3134 +4199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_RECEIVE) && (tmp != RESET)) + 9021 .loc 1 4199 11 is_stmt 0 view .LVU3135 + 9022 015c 2268 ldr r2, [r4] + 9023 015e 9369 ldr r3, [r2, #24] + 9024 0160 03F00803 and r3, r3, #8 + 9025 .LVL617: +4200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9026 .loc 1 4200 5 is_stmt 1 view .LVU3136 +4200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9027 .loc 1 4200 10 is_stmt 0 view .LVU3137 + 9028 0164 9169 ldr r1, [r2, #24] +4200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9029 .loc 1 4200 8 view .LVU3138 + 9030 0166 11F4803F tst r1, #65536 + 9031 016a 0DD1 bne .L571 + 9032 .LVL618: + 9033 .L572: +4208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9034 .loc 1 4208 5 is_stmt 1 view .LVU3139 +4208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9035 .loc 1 4208 5 view .LVU3140 + 9036 016c 0023 movs r3, #0 + 9037 016e 84F84030 strb r3, [r4, #64] +4208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9038 .loc 1 4208 5 view .LVU3141 +4211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9039 .loc 1 4211 5 view .LVU3142 +4211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9040 .loc 1 4211 9 is_stmt 0 view .LVU3143 + 9041 0172 2268 ldr r2, [r4] + ARM GAS /tmp/ccVyGVF6.s page 344 + + +4211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9042 .loc 1 4211 25 view .LVU3144 + 9043 0174 1368 ldr r3, [r2] + 9044 0176 43F48043 orr r3, r3, #16384 + 9045 017a 1360 str r3, [r2] +4217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9046 .loc 1 4217 5 is_stmt 1 view .LVU3145 + 9047 017c 4FF40041 mov r1, #32768 + 9048 0180 2046 mov r0, r4 + 9049 .LVL619: +4217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9050 .loc 1 4217 5 is_stmt 0 view .LVU3146 + 9051 0182 FFF7FEFF bl I2C_Enable_IRQ + 9052 .LVL620: +4219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9053 .loc 1 4219 5 is_stmt 1 view .LVU3147 +4219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9054 .loc 1 4219 12 is_stmt 0 view .LVU3148 + 9055 0186 05E0 b .L564 + 9056 .LVL621: + 9057 .L571: +4200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9058 .loc 1 4200 54 discriminator 1 view .LVU3149 + 9059 0188 002B cmp r3, #0 + 9060 018a EFD0 beq .L572 +4204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9061 .loc 1 4204 7 is_stmt 1 view .LVU3150 + 9062 018c 0823 movs r3, #8 + 9063 .LVL622: +4204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9064 .loc 1 4204 7 is_stmt 0 view .LVU3151 + 9065 018e D361 str r3, [r2, #28] + 9066 0190 ECE7 b .L572 + 9067 .LVL623: + 9068 .L573: +4223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9069 .loc 1 4223 12 view .LVU3152 + 9070 0192 0125 movs r5, #1 + 9071 .LVL624: + 9072 .L564: +4225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9073 .loc 1 4225 1 view .LVU3153 + 9074 0194 2846 mov r0, r5 + 9075 0196 F8BD pop {r3, r4, r5, r6, r7, pc} + 9076 .LVL625: + 9077 .L574: +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9078 .loc 1 4072 5 view .LVU3154 + 9079 0198 0225 movs r5, #2 + 9080 .LVL626: +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9081 .loc 1 4072 5 view .LVU3155 + 9082 019a FBE7 b .L564 + 9083 .L581: + 9084 .align 2 + 9085 .L580: + 9086 019c 00000000 .word I2C_Slave_ISR_DMA + ARM GAS /tmp/ccVyGVF6.s page 345 + + + 9087 01a0 00000000 .word I2C_DMASlaveTransmitCplt + 9088 01a4 00000000 .word I2C_DMAError + 9089 01a8 00000000 .word I2C_DMAAbort + 9090 .cfi_endproc + 9091 .LFE169: + 9093 .section .text.HAL_I2C_Slave_Seq_Receive_IT,"ax",%progbits + 9094 .align 1 + 9095 .global HAL_I2C_Slave_Seq_Receive_IT + 9096 .syntax unified + 9097 .thumb + 9098 .thumb_func + 9099 .fpu fpv5-d16 + 9101 HAL_I2C_Slave_Seq_Receive_IT: + 9102 .LVL627: + 9103 .LFB170: +4239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ + 9104 .loc 1 4239 1 is_stmt 1 view -0 + 9105 .cfi_startproc + 9106 @ args = 0, pretend = 0, frame = 0 + 9107 @ frame_needed = 0, uses_anonymous_args = 0 +4239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ + 9108 .loc 1 4239 1 is_stmt 0 view .LVU3157 + 9109 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 9110 .LCFI104: + 9111 .cfi_def_cfa_offset 24 + 9112 .cfi_offset 3, -24 + 9113 .cfi_offset 4, -20 + 9114 .cfi_offset 5, -16 + 9115 .cfi_offset 6, -12 + 9116 .cfi_offset 7, -8 + 9117 .cfi_offset 14, -4 + 9118 0002 0446 mov r4, r0 +4241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9119 .loc 1 4241 3 is_stmt 1 view .LVU3158 +4244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9120 .loc 1 4244 3 view .LVU3159 +4246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9121 .loc 1 4246 3 view .LVU3160 +4246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9122 .loc 1 4246 22 is_stmt 0 view .LVU3161 + 9123 0004 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 9124 .LVL628: +4246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9125 .loc 1 4246 6 view .LVU3162 + 9126 0008 00F02800 and r0, r0, #40 + 9127 000c 2828 cmp r0, #40 + 9128 000e 60D1 bne .L587 + 9129 0010 0F46 mov r7, r1 + 9130 0012 1646 mov r6, r2 + 9131 0014 1D46 mov r5, r3 +4248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9132 .loc 1 4248 5 is_stmt 1 view .LVU3163 +4248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9133 .loc 1 4248 8 is_stmt 0 view .LVU3164 + 9134 0016 002A cmp r2, #0 + 9135 0018 18BF it ne + 9136 001a 0029 cmpne r1, #0 + ARM GAS /tmp/ccVyGVF6.s page 346 + + + 9137 001c 04D1 bne .L584 +4250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 9138 .loc 1 4250 7 is_stmt 1 view .LVU3165 +4250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 9139 .loc 1 4250 23 is_stmt 0 view .LVU3166 + 9140 001e 4FF40073 mov r3, #512 + 9141 .LVL629: +4250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 9142 .loc 1 4250 23 view .LVU3167 + 9143 0022 6364 str r3, [r4, #68] +4251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9144 .loc 1 4251 7 is_stmt 1 view .LVU3168 +4251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9145 .loc 1 4251 15 is_stmt 0 view .LVU3169 + 9146 0024 0120 movs r0, #1 + 9147 0026 55E0 b .L583 + 9148 .LVL630: + 9149 .L584: +4255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9150 .loc 1 4255 5 is_stmt 1 view .LVU3170 + 9151 0028 48F20201 movw r1, #32770 + 9152 .LVL631: +4255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9153 .loc 1 4255 5 is_stmt 0 view .LVU3171 + 9154 002c 2046 mov r0, r4 + 9155 002e FFF7FEFF bl I2C_Disable_IRQ + 9156 .LVL632: +4258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9157 .loc 1 4258 5 is_stmt 1 view .LVU3172 +4258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9158 .loc 1 4258 5 view .LVU3173 + 9159 0032 94F84030 ldrb r3, [r4, #64] @ zero_extendqisi2 + 9160 0036 012B cmp r3, #1 + 9161 0038 4DD0 beq .L588 +4258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9162 .loc 1 4258 5 discriminator 2 view .LVU3174 + 9163 003a 0123 movs r3, #1 + 9164 003c 84F84030 strb r3, [r4, #64] +4258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9165 .loc 1 4258 5 discriminator 2 view .LVU3175 +4262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9166 .loc 1 4262 5 discriminator 2 view .LVU3176 +4262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9167 .loc 1 4262 13 is_stmt 0 discriminator 2 view .LVU3177 + 9168 0040 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 9169 0044 DBB2 uxtb r3, r3 +4262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9170 .loc 1 4262 8 discriminator 2 view .LVU3178 + 9171 0046 292B cmp r3, #41 + 9172 0048 28D0 beq .L590 + 9173 .L585: +4288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 9174 .loc 1 4288 5 is_stmt 1 view .LVU3179 +4288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 9175 .loc 1 4288 21 is_stmt 0 view .LVU3180 + 9176 004a 2A23 movs r3, #42 + 9177 004c 84F84130 strb r3, [r4, #65] + ARM GAS /tmp/ccVyGVF6.s page 347 + + +4289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 9178 .loc 1 4289 5 is_stmt 1 view .LVU3181 +4289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 9179 .loc 1 4289 21 is_stmt 0 view .LVU3182 + 9180 0050 2023 movs r3, #32 + 9181 0052 84F84230 strb r3, [r4, #66] +4290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9182 .loc 1 4290 5 is_stmt 1 view .LVU3183 +4290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9183 .loc 1 4290 21 is_stmt 0 view .LVU3184 + 9184 0056 0023 movs r3, #0 + 9185 0058 6364 str r3, [r4, #68] +4293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9186 .loc 1 4293 5 is_stmt 1 view .LVU3185 +4293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9187 .loc 1 4293 9 is_stmt 0 view .LVU3186 + 9188 005a 2268 ldr r2, [r4] +4293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9189 .loc 1 4293 25 view .LVU3187 + 9190 005c 5368 ldr r3, [r2, #4] + 9191 005e 23F40043 bic r3, r3, #32768 + 9192 0062 5360 str r3, [r2, #4] +4296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 9193 .loc 1 4296 5 is_stmt 1 view .LVU3188 +4296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 9194 .loc 1 4296 23 is_stmt 0 view .LVU3189 + 9195 0064 6762 str r7, [r4, #36] +4297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 9196 .loc 1 4297 5 is_stmt 1 view .LVU3190 +4297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 9197 .loc 1 4297 23 is_stmt 0 view .LVU3191 + 9198 0066 6685 strh r6, [r4, #42] @ movhi +4298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 9199 .loc 1 4298 5 is_stmt 1 view .LVU3192 +4298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 9200 .loc 1 4298 29 is_stmt 0 view .LVU3193 + 9201 0068 638D ldrh r3, [r4, #42] +4298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 9202 .loc 1 4298 23 view .LVU3194 + 9203 006a 2385 strh r3, [r4, #40] @ movhi +4299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 9204 .loc 1 4299 5 is_stmt 1 view .LVU3195 +4299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 9205 .loc 1 4299 23 is_stmt 0 view .LVU3196 + 9206 006c E562 str r5, [r4, #44] +4300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9207 .loc 1 4300 5 is_stmt 1 view .LVU3197 +4300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9208 .loc 1 4300 23 is_stmt 0 view .LVU3198 + 9209 006e 1B4B ldr r3, .L591 + 9210 0070 6363 str r3, [r4, #52] +4302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) + 9211 .loc 1 4302 5 is_stmt 1 view .LVU3199 +4302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) + 9212 .loc 1 4302 11 is_stmt 0 view .LVU3200 + 9213 0072 2268 ldr r2, [r4] + 9214 0074 9369 ldr r3, [r2, #24] + ARM GAS /tmp/ccVyGVF6.s page 348 + + + 9215 0076 03F00803 and r3, r3, #8 + 9216 .LVL633: +4303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9217 .loc 1 4303 5 is_stmt 1 view .LVU3201 +4303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9218 .loc 1 4303 10 is_stmt 0 view .LVU3202 + 9219 007a 9169 ldr r1, [r2, #24] +4303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9220 .loc 1 4303 8 view .LVU3203 + 9221 007c 11F4803F tst r1, #65536 + 9222 0080 02D1 bne .L586 +4303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9223 .loc 1 4303 55 discriminator 1 view .LVU3204 + 9224 0082 0BB1 cbz r3, .L586 +4307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9225 .loc 1 4307 7 is_stmt 1 view .LVU3205 + 9226 0084 0823 movs r3, #8 + 9227 .LVL634: +4307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9228 .loc 1 4307 7 is_stmt 0 view .LVU3206 + 9229 0086 D361 str r3, [r2, #28] + 9230 .L586: +4311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9231 .loc 1 4311 5 is_stmt 1 view .LVU3207 +4311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9232 .loc 1 4311 5 view .LVU3208 + 9233 0088 0025 movs r5, #0 + 9234 .LVL635: +4311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9235 .loc 1 4311 5 is_stmt 0 view .LVU3209 + 9236 008a 84F84050 strb r5, [r4, #64] +4311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9237 .loc 1 4311 5 is_stmt 1 view .LVU3210 +4317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9238 .loc 1 4317 5 view .LVU3211 + 9239 008e 48F20201 movw r1, #32770 + 9240 0092 2046 mov r0, r4 + 9241 0094 FFF7FEFF bl I2C_Enable_IRQ + 9242 .LVL636: +4319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9243 .loc 1 4319 5 view .LVU3212 +4319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9244 .loc 1 4319 12 is_stmt 0 view .LVU3213 + 9245 0098 2846 mov r0, r5 + 9246 009a 1BE0 b .L583 + 9247 .LVL637: + 9248 .L590: +4265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9249 .loc 1 4265 7 is_stmt 1 view .LVU3214 + 9250 009c 0121 movs r1, #1 + 9251 009e 2046 mov r0, r4 + 9252 00a0 FFF7FEFF bl I2C_Disable_IRQ + 9253 .LVL638: +4267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9254 .loc 1 4267 7 view .LVU3215 +4267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9255 .loc 1 4267 16 is_stmt 0 view .LVU3216 + ARM GAS /tmp/ccVyGVF6.s page 349 + + + 9256 00a4 2368 ldr r3, [r4] +4267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9257 .loc 1 4267 26 view .LVU3217 + 9258 00a6 1A68 ldr r2, [r3] +4267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9259 .loc 1 4267 10 view .LVU3218 + 9260 00a8 12F4804F tst r2, #16384 + 9261 00ac CDD0 beq .L585 +4269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9262 .loc 1 4269 9 is_stmt 1 view .LVU3219 +4269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9263 .loc 1 4269 29 is_stmt 0 view .LVU3220 + 9264 00ae 1A68 ldr r2, [r3] + 9265 00b0 22F48042 bic r2, r2, #16384 + 9266 00b4 1A60 str r2, [r3] +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9267 .loc 1 4272 9 is_stmt 1 view .LVU3221 +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9268 .loc 1 4272 17 is_stmt 0 view .LVU3222 + 9269 00b6 A36B ldr r3, [r4, #56] +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9270 .loc 1 4272 12 view .LVU3223 + 9271 00b8 002B cmp r3, #0 + 9272 00ba C6D0 beq .L585 +4276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9273 .loc 1 4276 11 is_stmt 1 view .LVU3224 +4276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9274 .loc 1 4276 43 is_stmt 0 view .LVU3225 + 9275 00bc 084A ldr r2, .L591+4 + 9276 00be 1A65 str r2, [r3, #80] +4279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9277 .loc 1 4279 11 is_stmt 1 view .LVU3226 +4279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9278 .loc 1 4279 15 is_stmt 0 view .LVU3227 + 9279 00c0 A06B ldr r0, [r4, #56] + 9280 00c2 FFF7FEFF bl HAL_DMA_Abort_IT + 9281 .LVL639: +4279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9282 .loc 1 4279 14 view .LVU3228 + 9283 00c6 0028 cmp r0, #0 + 9284 00c8 BFD0 beq .L585 +4282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9285 .loc 1 4282 13 is_stmt 1 view .LVU3229 +4282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9286 .loc 1 4282 17 is_stmt 0 view .LVU3230 + 9287 00ca A06B ldr r0, [r4, #56] +4282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9288 .loc 1 4282 25 view .LVU3231 + 9289 00cc 036D ldr r3, [r0, #80] +4282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9290 .loc 1 4282 13 view .LVU3232 + 9291 00ce 9847 blx r3 + 9292 .LVL640: + 9293 00d0 BBE7 b .L585 + 9294 .LVL641: + 9295 .L587: +4323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 350 + + + 9296 .loc 1 4323 12 view .LVU3233 + 9297 00d2 0120 movs r0, #1 + 9298 .LVL642: + 9299 .L583: +4325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9300 .loc 1 4325 1 view .LVU3234 + 9301 00d4 F8BD pop {r3, r4, r5, r6, r7, pc} + 9302 .LVL643: + 9303 .L588: +4258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9304 .loc 1 4258 5 view .LVU3235 + 9305 00d6 0220 movs r0, #2 + 9306 00d8 FCE7 b .L583 + 9307 .L592: + 9308 00da 00BF .align 2 + 9309 .L591: + 9310 00dc 00000000 .word I2C_Slave_ISR_IT + 9311 00e0 00000000 .word I2C_DMAAbort + 9312 .cfi_endproc + 9313 .LFE170: + 9315 .section .text.HAL_I2C_Slave_Seq_Receive_DMA,"ax",%progbits + 9316 .align 1 + 9317 .global HAL_I2C_Slave_Seq_Receive_DMA + 9318 .syntax unified + 9319 .thumb + 9320 .thumb_func + 9321 .fpu fpv5-d16 + 9323 HAL_I2C_Slave_Seq_Receive_DMA: + 9324 .LVL644: + 9325 .LFB171: +4339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ + 9326 .loc 1 4339 1 is_stmt 1 view -0 + 9327 .cfi_startproc + 9328 @ args = 0, pretend = 0, frame = 0 + 9329 @ frame_needed = 0, uses_anonymous_args = 0 +4339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ + 9330 .loc 1 4339 1 is_stmt 0 view .LVU3237 + 9331 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 9332 .LCFI105: + 9333 .cfi_def_cfa_offset 24 + 9334 .cfi_offset 3, -24 + 9335 .cfi_offset 4, -20 + 9336 .cfi_offset 5, -16 + 9337 .cfi_offset 6, -12 + 9338 .cfi_offset 7, -8 + 9339 .cfi_offset 14, -4 + 9340 0002 0446 mov r4, r0 +4341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_StatusTypeDef dmaxferstatus; + 9341 .loc 1 4341 3 is_stmt 1 view .LVU3238 +4342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9342 .loc 1 4342 3 view .LVU3239 +4345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9343 .loc 1 4345 3 view .LVU3240 +4347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9344 .loc 1 4347 3 view .LVU3241 +4347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9345 .loc 1 4347 22 is_stmt 0 view .LVU3242 + ARM GAS /tmp/ccVyGVF6.s page 351 + + + 9346 0004 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 9347 .LVL645: +4347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9348 .loc 1 4347 6 view .LVU3243 + 9349 0008 00F02800 and r0, r0, #40 + 9350 000c 2828 cmp r0, #40 + 9351 000e 40F0C080 bne .L603 + 9352 0012 0F46 mov r7, r1 + 9353 0014 1646 mov r6, r2 + 9354 0016 1D46 mov r5, r3 +4349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9355 .loc 1 4349 5 is_stmt 1 view .LVU3244 +4349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9356 .loc 1 4349 8 is_stmt 0 view .LVU3245 + 9357 0018 002A cmp r2, #0 + 9358 001a 18BF it ne + 9359 001c 0029 cmpne r1, #0 + 9360 001e 04D1 bne .L595 +4351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 9361 .loc 1 4351 7 is_stmt 1 view .LVU3246 +4351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 9362 .loc 1 4351 23 is_stmt 0 view .LVU3247 + 9363 0020 4FF40073 mov r3, #512 + 9364 .LVL646: +4351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return HAL_ERROR; + 9365 .loc 1 4351 23 view .LVU3248 + 9366 0024 6364 str r3, [r4, #68] +4352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9367 .loc 1 4352 7 is_stmt 1 view .LVU3249 +4352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9368 .loc 1 4352 15 is_stmt 0 view .LVU3250 + 9369 0026 0125 movs r5, #1 + 9370 .LVL647: +4352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9371 .loc 1 4352 15 view .LVU3251 + 9372 0028 B4E0 b .L594 + 9373 .LVL648: + 9374 .L595: +4356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9375 .loc 1 4356 5 is_stmt 1 view .LVU3252 + 9376 002a 48F20201 movw r1, #32770 + 9377 .LVL649: +4356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9378 .loc 1 4356 5 is_stmt 0 view .LVU3253 + 9379 002e 2046 mov r0, r4 + 9380 0030 FFF7FEFF bl I2C_Disable_IRQ + 9381 .LVL650: +4359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9382 .loc 1 4359 5 is_stmt 1 view .LVU3254 +4359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9383 .loc 1 4359 5 view .LVU3255 + 9384 0034 94F84030 ldrb r3, [r4, #64] @ zero_extendqisi2 + 9385 0038 012B cmp r3, #1 + 9386 003a 00F0AD80 beq .L604 +4359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9387 .loc 1 4359 5 discriminator 2 view .LVU3256 + 9388 003e 0123 movs r3, #1 + ARM GAS /tmp/ccVyGVF6.s page 352 + + + 9389 0040 84F84030 strb r3, [r4, #64] +4359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9390 .loc 1 4359 5 discriminator 2 view .LVU3257 +4363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9391 .loc 1 4363 5 discriminator 2 view .LVU3258 +4363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9392 .loc 1 4363 13 is_stmt 0 discriminator 2 view .LVU3259 + 9393 0044 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 9394 0048 DBB2 uxtb r3, r3 +4363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9395 .loc 1 4363 8 discriminator 2 view .LVU3260 + 9396 004a 292B cmp r3, #41 + 9397 004c 3DD0 beq .L607 +4388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9398 .loc 1 4388 10 is_stmt 1 view .LVU3261 +4388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9399 .loc 1 4388 18 is_stmt 0 view .LVU3262 + 9400 004e 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 9401 0052 DBB2 uxtb r3, r3 +4388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9402 .loc 1 4388 13 view .LVU3263 + 9403 0054 2A2B cmp r3, #42 + 9404 0056 54D0 beq .L608 + 9405 .L597: +4413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9406 .loc 1 4413 5 is_stmt 1 view .LVU3264 +4415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 9407 .loc 1 4415 5 view .LVU3265 +4415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_SLAVE; + 9408 .loc 1 4415 21 is_stmt 0 view .LVU3266 + 9409 0058 2A23 movs r3, #42 + 9410 005a 84F84130 strb r3, [r4, #65] +4416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 9411 .loc 1 4416 5 is_stmt 1 view .LVU3267 +4416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode = HAL_I2C_ERROR_NONE; + 9412 .loc 1 4416 21 is_stmt 0 view .LVU3268 + 9413 005e 2023 movs r3, #32 + 9414 0060 84F84230 strb r3, [r4, #66] +4417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9415 .loc 1 4417 5 is_stmt 1 view .LVU3269 +4417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9416 .loc 1 4417 21 is_stmt 0 view .LVU3270 + 9417 0064 0023 movs r3, #0 + 9418 0066 6364 str r3, [r4, #68] +4420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9419 .loc 1 4420 5 is_stmt 1 view .LVU3271 +4420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9420 .loc 1 4420 9 is_stmt 0 view .LVU3272 + 9421 0068 2268 ldr r2, [r4] +4420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9422 .loc 1 4420 25 view .LVU3273 + 9423 006a 5368 ldr r3, [r2, #4] + 9424 006c 23F40043 bic r3, r3, #32768 + 9425 0070 5360 str r3, [r2, #4] +4423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + 9426 .loc 1 4423 5 is_stmt 1 view .LVU3274 +4423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = Size; + ARM GAS /tmp/ccVyGVF6.s page 353 + + + 9427 .loc 1 4423 23 is_stmt 0 view .LVU3275 + 9428 0072 6762 str r7, [r4, #36] +4424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 9429 .loc 1 4424 5 is_stmt 1 view .LVU3276 +4424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize = hi2c->XferCount; + 9430 .loc 1 4424 23 is_stmt 0 view .LVU3277 + 9431 0074 6685 strh r6, [r4, #42] @ movhi +4425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 9432 .loc 1 4425 5 is_stmt 1 view .LVU3278 +4425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 9433 .loc 1 4425 29 is_stmt 0 view .LVU3279 + 9434 0076 638D ldrh r3, [r4, #42] +4425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = XferOptions; + 9435 .loc 1 4425 23 view .LVU3280 + 9436 0078 2385 strh r3, [r4, #40] @ movhi +4426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; + 9437 .loc 1 4426 5 is_stmt 1 view .LVU3281 +4426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_DMA; + 9438 .loc 1 4426 23 is_stmt 0 view .LVU3282 + 9439 007a E562 str r5, [r4, #44] +4427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9440 .loc 1 4427 5 is_stmt 1 view .LVU3283 +4427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9441 .loc 1 4427 23 is_stmt 0 view .LVU3284 + 9442 007c 474B ldr r3, .L609 + 9443 007e 6363 str r3, [r4, #52] +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9444 .loc 1 4429 5 is_stmt 1 view .LVU3285 +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9445 .loc 1 4429 13 is_stmt 0 view .LVU3286 + 9446 0080 E36B ldr r3, [r4, #60] +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9447 .loc 1 4429 8 view .LVU3287 + 9448 0082 002B cmp r3, #0 + 9449 0084 54D0 beq .L598 +4432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9450 .loc 1 4432 7 is_stmt 1 view .LVU3288 +4432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9451 .loc 1 4432 38 is_stmt 0 view .LVU3289 + 9452 0086 464A ldr r2, .L609+4 + 9453 0088 DA63 str r2, [r3, #60] +4435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9454 .loc 1 4435 7 is_stmt 1 view .LVU3290 +4435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9455 .loc 1 4435 11 is_stmt 0 view .LVU3291 + 9456 008a E36B ldr r3, [r4, #60] +4435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9457 .loc 1 4435 39 view .LVU3292 + 9458 008c 454A ldr r2, .L609+8 + 9459 008e DA64 str r2, [r3, #76] +4438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 9460 .loc 1 4438 7 is_stmt 1 view .LVU3293 +4438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 9461 .loc 1 4438 11 is_stmt 0 view .LVU3294 + 9462 0090 E26B ldr r2, [r4, #60] +4438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->hdmarx->XferAbortCallback = NULL; + 9463 .loc 1 4438 42 view .LVU3295 + ARM GAS /tmp/ccVyGVF6.s page 354 + + + 9464 0092 0023 movs r3, #0 + 9465 0094 1364 str r3, [r2, #64] +4439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9466 .loc 1 4439 7 is_stmt 1 view .LVU3296 +4439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9467 .loc 1 4439 11 is_stmt 0 view .LVU3297 + 9468 0096 E26B ldr r2, [r4, #60] +4439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9469 .loc 1 4439 39 view .LVU3298 + 9470 0098 1365 str r3, [r2, #80] +4442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)pData, hi2c->XferSize); + 9471 .loc 1 4442 7 is_stmt 1 view .LVU3299 +4442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)pData, hi2c->XferSize); + 9472 .loc 1 4442 69 is_stmt 0 view .LVU3300 + 9473 009a 2168 ldr r1, [r4] +4442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (uint32_t)pData, hi2c->XferSize); + 9474 .loc 1 4442 23 view .LVU3301 + 9475 009c 238D ldrh r3, [r4, #40] + 9476 009e 3A46 mov r2, r7 + 9477 00a0 2431 adds r1, r1, #36 + 9478 00a2 E06B ldr r0, [r4, #60] + 9479 00a4 FFF7FEFF bl HAL_DMA_Start_IT + 9480 .LVL651: +4460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9481 .loc 1 4460 5 is_stmt 1 view .LVU3302 +4460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9482 .loc 1 4460 8 is_stmt 0 view .LVU3303 + 9483 00a8 0546 mov r5, r0 + 9484 .LVL652: +4460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9485 .loc 1 4460 8 view .LVU3304 + 9486 00aa 0028 cmp r0, #0 + 9487 00ac 4ED0 beq .L599 +4471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 9488 .loc 1 4471 7 is_stmt 1 view .LVU3305 +4471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 9489 .loc 1 4471 23 is_stmt 0 view .LVU3306 + 9490 00ae 2823 movs r3, #40 + 9491 00b0 84F84130 strb r3, [r4, #65] +4472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9492 .loc 1 4472 7 is_stmt 1 view .LVU3307 +4472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9493 .loc 1 4472 23 is_stmt 0 view .LVU3308 + 9494 00b4 0022 movs r2, #0 + 9495 00b6 84F84220 strb r2, [r4, #66] +4475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9496 .loc 1 4475 7 is_stmt 1 view .LVU3309 +4475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9497 .loc 1 4475 23 is_stmt 0 view .LVU3310 + 9498 00ba 636C ldr r3, [r4, #68] + 9499 00bc 43F01003 orr r3, r3, #16 + 9500 00c0 6364 str r3, [r4, #68] +4478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9501 .loc 1 4478 7 is_stmt 1 view .LVU3311 +4478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9502 .loc 1 4478 7 view .LVU3312 + 9503 00c2 84F84020 strb r2, [r4, #64] + ARM GAS /tmp/ccVyGVF6.s page 355 + + +4478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9504 .loc 1 4478 7 view .LVU3313 +4480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9505 .loc 1 4480 7 view .LVU3314 +4480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9506 .loc 1 4480 14 is_stmt 0 view .LVU3315 + 9507 00c6 0125 movs r5, #1 + 9508 00c8 64E0 b .L594 + 9509 .LVL653: + 9510 .L607: +4366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9511 .loc 1 4366 7 is_stmt 1 view .LVU3316 + 9512 00ca 0121 movs r1, #1 + 9513 00cc 2046 mov r0, r4 + 9514 00ce FFF7FEFF bl I2C_Disable_IRQ + 9515 .LVL654: +4368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9516 .loc 1 4368 7 view .LVU3317 +4368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9517 .loc 1 4368 16 is_stmt 0 view .LVU3318 + 9518 00d2 2368 ldr r3, [r4] +4368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9519 .loc 1 4368 26 view .LVU3319 + 9520 00d4 1A68 ldr r2, [r3] +4368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9521 .loc 1 4368 10 view .LVU3320 + 9522 00d6 12F4804F tst r2, #16384 + 9523 00da BDD0 beq .L597 +4371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9524 .loc 1 4371 9 is_stmt 1 view .LVU3321 +4371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9525 .loc 1 4371 17 is_stmt 0 view .LVU3322 + 9526 00dc A26B ldr r2, [r4, #56] +4371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9527 .loc 1 4371 12 view .LVU3323 + 9528 00de 002A cmp r2, #0 + 9529 00e0 BAD0 beq .L597 +4373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9530 .loc 1 4373 11 is_stmt 1 view .LVU3324 +4373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9531 .loc 1 4373 31 is_stmt 0 view .LVU3325 + 9532 00e2 1A68 ldr r2, [r3] + 9533 00e4 22F48042 bic r2, r2, #16384 + 9534 00e8 1A60 str r2, [r3] +4377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9535 .loc 1 4377 11 is_stmt 1 view .LVU3326 +4377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9536 .loc 1 4377 15 is_stmt 0 view .LVU3327 + 9537 00ea A36B ldr r3, [r4, #56] +4377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9538 .loc 1 4377 43 view .LVU3328 + 9539 00ec 2E4A ldr r2, .L609+12 + 9540 00ee 1A65 str r2, [r3, #80] +4380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9541 .loc 1 4380 11 is_stmt 1 view .LVU3329 +4380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9542 .loc 1 4380 15 is_stmt 0 view .LVU3330 + ARM GAS /tmp/ccVyGVF6.s page 356 + + + 9543 00f0 A06B ldr r0, [r4, #56] + 9544 00f2 FFF7FEFF bl HAL_DMA_Abort_IT + 9545 .LVL655: +4380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9546 .loc 1 4380 14 view .LVU3331 + 9547 00f6 0028 cmp r0, #0 + 9548 00f8 AED0 beq .L597 +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9549 .loc 1 4383 13 is_stmt 1 view .LVU3332 +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9550 .loc 1 4383 17 is_stmt 0 view .LVU3333 + 9551 00fa A06B ldr r0, [r4, #56] +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9552 .loc 1 4383 25 view .LVU3334 + 9553 00fc 036D ldr r3, [r0, #80] +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9554 .loc 1 4383 13 view .LVU3335 + 9555 00fe 9847 blx r3 + 9556 .LVL656: + 9557 0100 AAE7 b .L597 + 9558 .L608: +4390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9559 .loc 1 4390 7 is_stmt 1 view .LVU3336 +4390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9560 .loc 1 4390 16 is_stmt 0 view .LVU3337 + 9561 0102 2368 ldr r3, [r4] +4390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9562 .loc 1 4390 26 view .LVU3338 + 9563 0104 1A68 ldr r2, [r3] +4390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9564 .loc 1 4390 10 view .LVU3339 + 9565 0106 12F4004F tst r2, #32768 + 9566 010a A5D0 beq .L597 +4392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9567 .loc 1 4392 9 is_stmt 1 view .LVU3340 +4392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9568 .loc 1 4392 29 is_stmt 0 view .LVU3341 + 9569 010c 1A68 ldr r2, [r3] + 9570 010e 22F40042 bic r2, r2, #32768 + 9571 0112 1A60 str r2, [r3] +4395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9572 .loc 1 4395 9 is_stmt 1 view .LVU3342 +4395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9573 .loc 1 4395 17 is_stmt 0 view .LVU3343 + 9574 0114 E36B ldr r3, [r4, #60] +4395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9575 .loc 1 4395 12 view .LVU3344 + 9576 0116 002B cmp r3, #0 + 9577 0118 9ED0 beq .L597 +4399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9578 .loc 1 4399 11 is_stmt 1 view .LVU3345 +4399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9579 .loc 1 4399 43 is_stmt 0 view .LVU3346 + 9580 011a 234A ldr r2, .L609+12 + 9581 011c 1A65 str r2, [r3, #80] +4402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9582 .loc 1 4402 11 is_stmt 1 view .LVU3347 + ARM GAS /tmp/ccVyGVF6.s page 357 + + +4402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9583 .loc 1 4402 15 is_stmt 0 view .LVU3348 + 9584 011e E06B ldr r0, [r4, #60] + 9585 0120 FFF7FEFF bl HAL_DMA_Abort_IT + 9586 .LVL657: +4402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9587 .loc 1 4402 14 view .LVU3349 + 9588 0124 0028 cmp r0, #0 + 9589 0126 97D0 beq .L597 +4405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9590 .loc 1 4405 13 is_stmt 1 view .LVU3350 +4405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9591 .loc 1 4405 17 is_stmt 0 view .LVU3351 + 9592 0128 E06B ldr r0, [r4, #60] +4405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9593 .loc 1 4405 25 view .LVU3352 + 9594 012a 036D ldr r3, [r0, #80] +4405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9595 .loc 1 4405 13 view .LVU3353 + 9596 012c 9847 blx r3 + 9597 .LVL658: + 9598 012e 93E7 b .L597 + 9599 .L598: +4448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 9600 .loc 1 4448 7 is_stmt 1 view .LVU3354 +4448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 9601 .loc 1 4448 23 is_stmt 0 view .LVU3355 + 9602 0130 2823 movs r3, #40 + 9603 0132 84F84130 strb r3, [r4, #65] +4449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9604 .loc 1 4449 7 is_stmt 1 view .LVU3356 +4449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9605 .loc 1 4449 23 is_stmt 0 view .LVU3357 + 9606 0136 0022 movs r2, #0 + 9607 0138 84F84220 strb r2, [r4, #66] +4452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9608 .loc 1 4452 7 is_stmt 1 view .LVU3358 +4452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9609 .loc 1 4452 23 is_stmt 0 view .LVU3359 + 9610 013c 636C ldr r3, [r4, #68] + 9611 013e 43F08003 orr r3, r3, #128 + 9612 0142 6364 str r3, [r4, #68] +4455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9613 .loc 1 4455 7 is_stmt 1 view .LVU3360 +4455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9614 .loc 1 4455 7 view .LVU3361 + 9615 0144 84F84020 strb r2, [r4, #64] +4455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9616 .loc 1 4455 7 view .LVU3362 +4457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9617 .loc 1 4457 7 view .LVU3363 +4457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9618 .loc 1 4457 14 is_stmt 0 view .LVU3364 + 9619 0148 0125 movs r5, #1 + 9620 .LVL659: +4457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9621 .loc 1 4457 14 view .LVU3365 + ARM GAS /tmp/ccVyGVF6.s page 358 + + + 9622 014a 23E0 b .L594 + 9623 .LVL660: + 9624 .L599: +4463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9625 .loc 1 4463 7 is_stmt 1 view .LVU3366 +4463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9626 .loc 1 4463 23 is_stmt 0 view .LVU3367 + 9627 014c 638D ldrh r3, [r4, #42] + 9628 014e 9BB2 uxth r3, r3 +4463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9629 .loc 1 4463 30 view .LVU3368 + 9630 0150 228D ldrh r2, [r4, #40] +4463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9631 .loc 1 4463 23 view .LVU3369 + 9632 0152 9B1A subs r3, r3, r2 + 9633 0154 9BB2 uxth r3, r3 + 9634 0156 6385 strh r3, [r4, #42] @ movhi +4466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9635 .loc 1 4466 7 is_stmt 1 view .LVU3370 +4466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9636 .loc 1 4466 22 is_stmt 0 view .LVU3371 + 9637 0158 0023 movs r3, #0 + 9638 015a 2385 strh r3, [r4, #40] @ movhi +4483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) + 9639 .loc 1 4483 5 is_stmt 1 view .LVU3372 +4483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if ((I2C_GET_DIR(hi2c) == I2C_DIRECTION_TRANSMIT) && (tmp != RESET)) + 9640 .loc 1 4483 11 is_stmt 0 view .LVU3373 + 9641 015c 2268 ldr r2, [r4] + 9642 015e 9369 ldr r3, [r2, #24] + 9643 0160 03F00803 and r3, r3, #8 + 9644 .LVL661: +4484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9645 .loc 1 4484 5 is_stmt 1 view .LVU3374 +4484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9646 .loc 1 4484 10 is_stmt 0 view .LVU3375 + 9647 0164 9169 ldr r1, [r2, #24] +4484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9648 .loc 1 4484 8 view .LVU3376 + 9649 0166 11F4803F tst r1, #65536 + 9650 016a 0DD0 beq .L601 + 9651 .LVL662: + 9652 .L602: +4492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9653 .loc 1 4492 5 is_stmt 1 view .LVU3377 +4492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9654 .loc 1 4492 5 view .LVU3378 + 9655 016c 0023 movs r3, #0 + 9656 016e 84F84030 strb r3, [r4, #64] +4492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9657 .loc 1 4492 5 view .LVU3379 +4495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9658 .loc 1 4495 5 view .LVU3380 +4495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9659 .loc 1 4495 9 is_stmt 0 view .LVU3381 + 9660 0172 2268 ldr r2, [r4] +4495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9661 .loc 1 4495 25 view .LVU3382 + ARM GAS /tmp/ccVyGVF6.s page 359 + + + 9662 0174 1368 ldr r3, [r2] + 9663 0176 43F40043 orr r3, r3, #32768 + 9664 017a 1360 str r3, [r2] +4501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9665 .loc 1 4501 5 is_stmt 1 view .LVU3383 + 9666 017c 48F20201 movw r1, #32770 + 9667 0180 2046 mov r0, r4 + 9668 .LVL663: +4501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9669 .loc 1 4501 5 is_stmt 0 view .LVU3384 + 9670 0182 FFF7FEFF bl I2C_Enable_IRQ + 9671 .LVL664: +4503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9672 .loc 1 4503 5 is_stmt 1 view .LVU3385 +4503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9673 .loc 1 4503 12 is_stmt 0 view .LVU3386 + 9674 0186 05E0 b .L594 + 9675 .LVL665: + 9676 .L601: +4484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9677 .loc 1 4484 55 discriminator 1 view .LVU3387 + 9678 0188 002B cmp r3, #0 + 9679 018a EFD0 beq .L602 +4488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9680 .loc 1 4488 7 is_stmt 1 view .LVU3388 + 9681 018c 0823 movs r3, #8 + 9682 .LVL666: +4488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9683 .loc 1 4488 7 is_stmt 0 view .LVU3389 + 9684 018e D361 str r3, [r2, #28] + 9685 0190 ECE7 b .L602 + 9686 .LVL667: + 9687 .L603: +4507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9688 .loc 1 4507 12 view .LVU3390 + 9689 0192 0125 movs r5, #1 + 9690 .LVL668: + 9691 .L594: +4509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9692 .loc 1 4509 1 view .LVU3391 + 9693 0194 2846 mov r0, r5 + 9694 0196 F8BD pop {r3, r4, r5, r6, r7, pc} + 9695 .LVL669: + 9696 .L604: +4359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9697 .loc 1 4359 5 view .LVU3392 + 9698 0198 0225 movs r5, #2 + 9699 .LVL670: +4359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9700 .loc 1 4359 5 view .LVU3393 + 9701 019a FBE7 b .L594 + 9702 .L610: + 9703 .align 2 + 9704 .L609: + 9705 019c 00000000 .word I2C_Slave_ISR_DMA + 9706 01a0 00000000 .word I2C_DMASlaveReceiveCplt + 9707 01a4 00000000 .word I2C_DMAError + ARM GAS /tmp/ccVyGVF6.s page 360 + + + 9708 01a8 00000000 .word I2C_DMAAbort + 9709 .cfi_endproc + 9710 .LFE171: + 9712 .section .text.HAL_I2C_EnableListen_IT,"ax",%progbits + 9713 .align 1 + 9714 .global HAL_I2C_EnableListen_IT + 9715 .syntax unified + 9716 .thumb + 9717 .thumb_func + 9718 .fpu fpv5-d16 + 9720 HAL_I2C_EnableListen_IT: + 9721 .LVL671: + 9722 .LFB172: +4518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) + 9723 .loc 1 4518 1 is_stmt 1 view -0 + 9724 .cfi_startproc + 9725 @ args = 0, pretend = 0, frame = 0 + 9726 @ frame_needed = 0, uses_anonymous_args = 0 +4518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_READY) + 9727 .loc 1 4518 1 is_stmt 0 view .LVU3395 + 9728 0000 08B5 push {r3, lr} + 9729 .LCFI106: + 9730 .cfi_def_cfa_offset 8 + 9731 .cfi_offset 3, -8 + 9732 .cfi_offset 14, -4 +4519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9733 .loc 1 4519 3 is_stmt 1 view .LVU3396 +4519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9734 .loc 1 4519 11 is_stmt 0 view .LVU3397 + 9735 0002 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 9736 0006 DBB2 uxtb r3, r3 +4519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9737 .loc 1 4519 6 view .LVU3398 + 9738 0008 202B cmp r3, #32 + 9739 000a 01D0 beq .L615 +4531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9740 .loc 1 4531 12 view .LVU3399 + 9741 000c 0220 movs r0, #2 + 9742 .LVL672: + 9743 .L612: +4533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9744 .loc 1 4533 1 view .LVU3400 + 9745 000e 08BD pop {r3, pc} + 9746 .LVL673: + 9747 .L615: +4521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 9748 .loc 1 4521 5 is_stmt 1 view .LVU3401 +4521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 9749 .loc 1 4521 17 is_stmt 0 view .LVU3402 + 9750 0010 2823 movs r3, #40 + 9751 0012 80F84130 strb r3, [r0, #65] +4522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9752 .loc 1 4522 5 is_stmt 1 view .LVU3403 +4522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9753 .loc 1 4522 19 is_stmt 0 view .LVU3404 + 9754 0016 044B ldr r3, .L616 + 9755 0018 4363 str r3, [r0, #52] + ARM GAS /tmp/ccVyGVF6.s page 361 + + +4525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9756 .loc 1 4525 5 is_stmt 1 view .LVU3405 + 9757 001a 4FF40041 mov r1, #32768 + 9758 001e FFF7FEFF bl I2C_Enable_IRQ + 9759 .LVL674: +4527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9760 .loc 1 4527 5 view .LVU3406 +4527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9761 .loc 1 4527 12 is_stmt 0 view .LVU3407 + 9762 0022 0020 movs r0, #0 + 9763 0024 F3E7 b .L612 + 9764 .L617: + 9765 0026 00BF .align 2 + 9766 .L616: + 9767 0028 00000000 .word I2C_Slave_ISR_IT + 9768 .cfi_endproc + 9769 .LFE172: + 9771 .section .text.HAL_I2C_DisableListen_IT,"ax",%progbits + 9772 .align 1 + 9773 .global HAL_I2C_DisableListen_IT + 9774 .syntax unified + 9775 .thumb + 9776 .thumb_func + 9777 .fpu fpv5-d16 + 9779 HAL_I2C_DisableListen_IT: + 9780 .LVL675: + 9781 .LFB173: +4542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ + 9782 .loc 1 4542 1 is_stmt 1 view -0 + 9783 .cfi_startproc + 9784 @ args = 0, pretend = 0, frame = 0 + 9785 @ frame_needed = 0, uses_anonymous_args = 0 +4544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9786 .loc 1 4544 3 view .LVU3409 +4547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9787 .loc 1 4547 3 view .LVU3410 +4547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9788 .loc 1 4547 11 is_stmt 0 view .LVU3411 + 9789 0000 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 9790 0004 DBB2 uxtb r3, r3 +4547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9791 .loc 1 4547 6 view .LVU3412 + 9792 0006 282B cmp r3, #40 + 9793 0008 01D0 beq .L625 +4562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9794 .loc 1 4562 12 view .LVU3413 + 9795 000a 0220 movs r0, #2 + 9796 .LVL676: +4564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9797 .loc 1 4564 1 view .LVU3414 + 9798 000c 7047 bx lr + 9799 .LVL677: + 9800 .L625: +4542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Declaration of tmp to prevent undefined behavior of volatile usage */ + 9801 .loc 1 4542 1 view .LVU3415 + 9802 000e 10B5 push {r4, lr} + 9803 .LCFI107: + ARM GAS /tmp/ccVyGVF6.s page 362 + + + 9804 .cfi_def_cfa_offset 8 + 9805 .cfi_offset 4, -8 + 9806 .cfi_offset 14, -4 +4549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); + 9807 .loc 1 4549 5 is_stmt 1 view .LVU3416 +4549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = tmp | (uint32_t)(hi2c->Mode); + 9808 .loc 1 4549 26 is_stmt 0 view .LVU3417 + 9809 0010 90F84120 ldrb r2, [r0, #65] @ zero_extendqisi2 + 9810 .LVL678: +4550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 9811 .loc 1 4550 5 is_stmt 1 view .LVU3418 +4550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 9812 .loc 1 4550 48 is_stmt 0 view .LVU3419 + 9813 0014 90F84230 ldrb r3, [r0, #66] @ zero_extendqisi2 +4550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 9814 .loc 1 4550 31 view .LVU3420 + 9815 0018 02F00302 and r2, r2, #3 + 9816 .LVL679: +4550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 9817 .loc 1 4550 31 view .LVU3421 + 9818 001c 1343 orrs r3, r3, r2 +4550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 9819 .loc 1 4550 25 view .LVU3422 + 9820 001e 0363 str r3, [r0, #48] +4551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 9821 .loc 1 4551 5 is_stmt 1 view .LVU3423 +4551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 9822 .loc 1 4551 17 is_stmt 0 view .LVU3424 + 9823 0020 2023 movs r3, #32 + 9824 0022 80F84130 strb r3, [r0, #65] +4552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 9825 .loc 1 4552 5 is_stmt 1 view .LVU3425 +4552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 9826 .loc 1 4552 16 is_stmt 0 view .LVU3426 + 9827 0026 0024 movs r4, #0 + 9828 0028 80F84240 strb r4, [r0, #66] +4553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9829 .loc 1 4553 5 is_stmt 1 view .LVU3427 +4553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9830 .loc 1 4553 19 is_stmt 0 view .LVU3428 + 9831 002c 4463 str r4, [r0, #52] +4556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9832 .loc 1 4556 5 is_stmt 1 view .LVU3429 + 9833 002e 4FF40041 mov r1, #32768 + 9834 0032 FFF7FEFF bl I2C_Disable_IRQ + 9835 .LVL680: +4558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9836 .loc 1 4558 5 view .LVU3430 +4558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9837 .loc 1 4558 12 is_stmt 0 view .LVU3431 + 9838 0036 2046 mov r0, r4 +4564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9839 .loc 1 4564 1 view .LVU3432 + 9840 0038 10BD pop {r4, pc} + 9841 .cfi_endproc + 9842 .LFE173: + 9844 .section .text.HAL_I2C_Master_Abort_IT,"ax",%progbits + ARM GAS /tmp/ccVyGVF6.s page 363 + + + 9845 .align 1 + 9846 .global HAL_I2C_Master_Abort_IT + 9847 .syntax unified + 9848 .thumb + 9849 .thumb_func + 9850 .fpu fpv5-d16 + 9852 HAL_I2C_Master_Abort_IT: + 9853 .LVL681: + 9854 .LFB174: +4575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_ModeTypeDef tmp_mode = hi2c->Mode; + 9855 .loc 1 4575 1 is_stmt 1 view -0 + 9856 .cfi_startproc + 9857 @ args = 0, pretend = 0, frame = 0 + 9858 @ frame_needed = 0, uses_anonymous_args = 0 +4576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9859 .loc 1 4576 3 view .LVU3434 +4576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9860 .loc 1 4576 23 is_stmt 0 view .LVU3435 + 9861 0000 90F84230 ldrb r3, [r0, #66] @ zero_extendqisi2 + 9862 0004 DBB2 uxtb r3, r3 + 9863 .LVL682: +4578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9864 .loc 1 4578 3 is_stmt 1 view .LVU3436 +4578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9865 .loc 1 4578 6 is_stmt 0 view .LVU3437 + 9866 0006 402B cmp r3, #64 + 9867 0008 18BF it ne + 9868 000a 102B cmpne r3, #16 + 9869 000c 36D1 bne .L630 +4575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_ModeTypeDef tmp_mode = hi2c->Mode; + 9870 .loc 1 4575 1 view .LVU3438 + 9871 000e 30B5 push {r4, r5, lr} + 9872 .LCFI108: + 9873 .cfi_def_cfa_offset 12 + 9874 .cfi_offset 4, -12 + 9875 .cfi_offset 5, -8 + 9876 .cfi_offset 14, -4 + 9877 0010 83B0 sub sp, sp, #12 + 9878 .LCFI109: + 9879 .cfi_def_cfa_offset 24 + 9880 0012 0446 mov r4, r0 + 9881 0014 0D46 mov r5, r1 +4581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9882 .loc 1 4581 5 is_stmt 1 view .LVU3439 +4581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9883 .loc 1 4581 5 view .LVU3440 + 9884 0016 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 9885 .LVL683: +4581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9886 .loc 1 4581 5 is_stmt 0 view .LVU3441 + 9887 001a 012B cmp r3, #1 + 9888 001c 30D0 beq .L631 +4581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9889 .loc 1 4581 5 is_stmt 1 discriminator 2 view .LVU3442 + 9890 001e 0123 movs r3, #1 + 9891 0020 80F84030 strb r3, [r0, #64] +4581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 364 + + + 9892 .loc 1 4581 5 discriminator 2 view .LVU3443 +4584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9893 .loc 1 4584 5 discriminator 2 view .LVU3444 +4584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9894 .loc 1 4584 13 is_stmt 0 discriminator 2 view .LVU3445 + 9895 0024 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 9896 0028 DBB2 uxtb r3, r3 +4584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9897 .loc 1 4584 8 discriminator 2 view .LVU3446 + 9898 002a 212B cmp r3, #33 + 9899 002c 1AD0 beq .L636 +4589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9900 .loc 1 4589 10 is_stmt 1 view .LVU3447 +4589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9901 .loc 1 4589 18 is_stmt 0 view .LVU3448 + 9902 002e 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 9903 0032 DBB2 uxtb r3, r3 +4589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 9904 .loc 1 4589 13 view .LVU3449 + 9905 0034 222B cmp r3, #34 + 9906 0036 1BD0 beq .L637 + 9907 .LVL684: + 9908 .L629: +4597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9909 .loc 1 4597 5 is_stmt 1 view .LVU3450 +4600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9910 .loc 1 4600 5 view .LVU3451 +4600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9911 .loc 1 4600 17 is_stmt 0 view .LVU3452 + 9912 0038 6023 movs r3, #96 + 9913 003a 84F84130 strb r3, [r4, #65] +4604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9914 .loc 1 4604 5 is_stmt 1 view .LVU3453 + 9915 003e 114B ldr r3, .L638 + 9916 0040 0093 str r3, [sp] + 9917 0042 4FF00073 mov r3, #33554432 + 9918 0046 0122 movs r2, #1 + 9919 0048 2946 mov r1, r5 + 9920 004a 2046 mov r0, r4 + 9921 004c FFF7FEFF bl I2C_TransferConfig + 9922 .LVL685: +4607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9923 .loc 1 4607 5 view .LVU3454 +4607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9924 .loc 1 4607 5 view .LVU3455 + 9925 0050 0025 movs r5, #0 + 9926 0052 84F84050 strb r5, [r4, #64] +4607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9927 .loc 1 4607 5 view .LVU3456 +4612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9928 .loc 1 4612 5 view .LVU3457 + 9929 0056 2021 movs r1, #32 + 9930 0058 2046 mov r0, r4 + 9931 005a FFF7FEFF bl I2C_Enable_IRQ + 9932 .LVL686: +4614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9933 .loc 1 4614 5 view .LVU3458 + ARM GAS /tmp/ccVyGVF6.s page 365 + + +4614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9934 .loc 1 4614 12 is_stmt 0 view .LVU3459 + 9935 005e 2846 mov r0, r5 + 9936 .L627: +4622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9937 .loc 1 4622 1 view .LVU3460 + 9938 0060 03B0 add sp, sp, #12 + 9939 .LCFI110: + 9940 .cfi_remember_state + 9941 .cfi_def_cfa_offset 12 + 9942 @ sp needed + 9943 0062 30BD pop {r4, r5, pc} + 9944 .LVL687: + 9945 .L636: + 9946 .LCFI111: + 9947 .cfi_restore_state +4586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + 9948 .loc 1 4586 7 is_stmt 1 view .LVU3461 + 9949 0064 0121 movs r1, #1 + 9950 .LVL688: +4586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + 9951 .loc 1 4586 7 is_stmt 0 view .LVU3462 + 9952 0066 FFF7FEFF bl I2C_Disable_IRQ + 9953 .LVL689: +4587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9954 .loc 1 4587 7 is_stmt 1 view .LVU3463 +4587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9955 .loc 1 4587 27 is_stmt 0 view .LVU3464 + 9956 006a 1123 movs r3, #17 + 9957 006c 2363 str r3, [r4, #48] + 9958 006e E3E7 b .L629 + 9959 .LVL690: + 9960 .L637: +4591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + 9961 .loc 1 4591 7 is_stmt 1 view .LVU3465 + 9962 0070 0221 movs r1, #2 + 9963 .LVL691: +4591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + 9964 .loc 1 4591 7 is_stmt 0 view .LVU3466 + 9965 0072 FFF7FEFF bl I2C_Disable_IRQ + 9966 .LVL692: +4592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9967 .loc 1 4592 7 is_stmt 1 view .LVU3467 +4592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9968 .loc 1 4592 27 is_stmt 0 view .LVU3468 + 9969 0076 1223 movs r3, #18 + 9970 0078 2363 str r3, [r4, #48] + 9971 007a DDE7 b .L629 + 9972 .LVL693: + 9973 .L630: + 9974 .LCFI112: + 9975 .cfi_def_cfa_offset 0 + 9976 .cfi_restore 4 + 9977 .cfi_restore 5 + 9978 .cfi_restore 14 +4620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 9979 .loc 1 4620 12 view .LVU3469 + ARM GAS /tmp/ccVyGVF6.s page 366 + + + 9980 007c 0120 movs r0, #1 + 9981 .LVL694: +4622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9982 .loc 1 4622 1 view .LVU3470 + 9983 007e 7047 bx lr + 9984 .LVL695: + 9985 .L631: + 9986 .LCFI113: + 9987 .cfi_def_cfa_offset 24 + 9988 .cfi_offset 4, -12 + 9989 .cfi_offset 5, -8 + 9990 .cfi_offset 14, -4 +4581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9991 .loc 1 4581 5 view .LVU3471 + 9992 0080 0220 movs r0, #2 + 9993 .LVL696: +4581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 9994 .loc 1 4581 5 view .LVU3472 + 9995 0082 EDE7 b .L627 + 9996 .L639: + 9997 .align 2 + 9998 .L638: + 9999 0084 00400080 .word -2147467264 + 10000 .cfi_endproc + 10001 .LFE174: + 10003 .section .text.HAL_I2C_EV_IRQHandler,"ax",%progbits + 10004 .align 1 + 10005 .global HAL_I2C_EV_IRQHandler + 10006 .syntax unified + 10007 .thumb + 10008 .thumb_func + 10009 .fpu fpv5-d16 + 10011 HAL_I2C_EV_IRQHandler: + 10012 .LVL697: + 10013 .LFB175: +4639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Get current IT Flags and IT sources value */ + 10014 .loc 1 4639 1 is_stmt 1 view -0 + 10015 .cfi_startproc + 10016 @ args = 0, pretend = 0, frame = 0 + 10017 @ frame_needed = 0, uses_anonymous_args = 0 +4639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Get current IT Flags and IT sources value */ + 10018 .loc 1 4639 1 is_stmt 0 view .LVU3474 + 10019 0000 08B5 push {r3, lr} + 10020 .LCFI114: + 10021 .cfi_def_cfa_offset 8 + 10022 .cfi_offset 3, -8 + 10023 .cfi_offset 14, -4 +4641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); + 10024 .loc 1 4641 3 is_stmt 1 view .LVU3475 +4641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); + 10025 .loc 1 4641 24 is_stmt 0 view .LVU3476 + 10026 0002 0368 ldr r3, [r0] +4641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); + 10027 .loc 1 4641 12 view .LVU3477 + 10028 0004 9969 ldr r1, [r3, #24] + 10029 .LVL698: +4642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 367 + + + 10030 .loc 1 4642 3 is_stmt 1 view .LVU3478 +4642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10031 .loc 1 4642 12 is_stmt 0 view .LVU3479 + 10032 0006 1A68 ldr r2, [r3] + 10033 .LVL699: +4645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10034 .loc 1 4645 3 is_stmt 1 view .LVU3480 +4645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10035 .loc 1 4645 11 is_stmt 0 view .LVU3481 + 10036 0008 436B ldr r3, [r0, #52] +4645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10037 .loc 1 4645 6 view .LVU3482 + 10038 000a 03B1 cbz r3, .L640 +4647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10039 .loc 1 4647 5 is_stmt 1 view .LVU3483 + 10040 000c 9847 blx r3 + 10041 .LVL700: + 10042 .L640: +4649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10043 .loc 1 4649 1 is_stmt 0 view .LVU3484 + 10044 000e 08BD pop {r3, pc} + 10045 .cfi_endproc + 10046 .LFE175: + 10048 .section .text.HAL_I2C_MasterTxCpltCallback,"ax",%progbits + 10049 .align 1 + 10050 .weak HAL_I2C_MasterTxCpltCallback + 10051 .syntax unified + 10052 .thumb + 10053 .thumb_func + 10054 .fpu fpv5-d16 + 10056 HAL_I2C_MasterTxCpltCallback: + 10057 .LVL701: + 10058 .LFB177: +4710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 10059 .loc 1 4710 1 is_stmt 1 view -0 + 10060 .cfi_startproc + 10061 @ args = 0, pretend = 0, frame = 0 + 10062 @ frame_needed = 0, uses_anonymous_args = 0 + 10063 @ link register save eliminated. +4712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10064 .loc 1 4712 3 view .LVU3486 +4717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10065 .loc 1 4717 1 is_stmt 0 view .LVU3487 + 10066 0000 7047 bx lr + 10067 .cfi_endproc + 10068 .LFE177: + 10070 .section .text.HAL_I2C_MasterRxCpltCallback,"ax",%progbits + 10071 .align 1 + 10072 .weak HAL_I2C_MasterRxCpltCallback + 10073 .syntax unified + 10074 .thumb + 10075 .thumb_func + 10076 .fpu fpv5-d16 + 10078 HAL_I2C_MasterRxCpltCallback: + 10079 .LVL702: + 10080 .LFB178: +4726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + ARM GAS /tmp/ccVyGVF6.s page 368 + + + 10081 .loc 1 4726 1 is_stmt 1 view -0 + 10082 .cfi_startproc + 10083 @ args = 0, pretend = 0, frame = 0 + 10084 @ frame_needed = 0, uses_anonymous_args = 0 + 10085 @ link register save eliminated. +4728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10086 .loc 1 4728 3 view .LVU3489 +4733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10087 .loc 1 4733 1 is_stmt 0 view .LVU3490 + 10088 0000 7047 bx lr + 10089 .cfi_endproc + 10090 .LFE178: + 10092 .section .text.I2C_ITMasterSeqCplt,"ax",%progbits + 10093 .align 1 + 10094 .syntax unified + 10095 .thumb + 10096 .thumb_func + 10097 .fpu fpv5-d16 + 10099 I2C_ITMasterSeqCplt: + 10100 .LVL703: + 10101 .LFB199: +6053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset I2C handle mode */ + 10102 .loc 1 6053 1 is_stmt 1 view -0 + 10103 .cfi_startproc + 10104 @ args = 0, pretend = 0, frame = 0 + 10105 @ frame_needed = 0, uses_anonymous_args = 0 +6053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset I2C handle mode */ + 10106 .loc 1 6053 1 is_stmt 0 view .LVU3492 + 10107 0000 38B5 push {r3, r4, r5, lr} + 10108 .LCFI115: + 10109 .cfi_def_cfa_offset 16 + 10110 .cfi_offset 3, -16 + 10111 .cfi_offset 4, -12 + 10112 .cfi_offset 5, -8 + 10113 .cfi_offset 14, -4 + 10114 0002 0446 mov r4, r0 +6055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10115 .loc 1 6055 3 is_stmt 1 view .LVU3493 +6055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10116 .loc 1 6055 14 is_stmt 0 view .LVU3494 + 10117 0004 0023 movs r3, #0 + 10118 0006 80F84230 strb r3, [r0, #66] +6059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10119 .loc 1 6059 3 is_stmt 1 view .LVU3495 +6059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10120 .loc 1 6059 11 is_stmt 0 view .LVU3496 + 10121 000a 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 10122 000e DBB2 uxtb r3, r3 +6059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10123 .loc 1 6059 6 view .LVU3497 + 10124 0010 212B cmp r3, #33 + 10125 0012 0FD0 beq .L649 +6081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + 10126 .loc 1 6081 5 is_stmt 1 view .LVU3498 +6081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + 10127 .loc 1 6081 25 is_stmt 0 view .LVU3499 + 10128 0014 2023 movs r3, #32 + ARM GAS /tmp/ccVyGVF6.s page 369 + + + 10129 0016 80F84130 strb r3, [r0, #65] +6082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 10130 .loc 1 6082 5 is_stmt 1 view .LVU3500 +6082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 10131 .loc 1 6082 25 is_stmt 0 view .LVU3501 + 10132 001a 1223 movs r3, #18 + 10133 001c 0363 str r3, [r0, #48] +6083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10134 .loc 1 6083 5 is_stmt 1 view .LVU3502 +6083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10135 .loc 1 6083 25 is_stmt 0 view .LVU3503 + 10136 001e 0025 movs r5, #0 + 10137 0020 4563 str r5, [r0, #52] +6086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10138 .loc 1 6086 5 is_stmt 1 view .LVU3504 + 10139 0022 0221 movs r1, #2 + 10140 0024 FFF7FEFF bl I2C_Disable_IRQ + 10141 .LVL704: +6089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10142 .loc 1 6089 5 view .LVU3505 +6089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10143 .loc 1 6089 5 view .LVU3506 + 10144 0028 84F84050 strb r5, [r4, #64] +6089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10145 .loc 1 6089 5 view .LVU3507 +6095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10146 .loc 1 6095 5 view .LVU3508 + 10147 002c 2046 mov r0, r4 + 10148 002e FFF7FEFF bl HAL_I2C_MasterRxCpltCallback + 10149 .LVL705: + 10150 .L645: +6098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10151 .loc 1 6098 1 is_stmt 0 view .LVU3509 + 10152 0032 38BD pop {r3, r4, r5, pc} + 10153 .LVL706: + 10154 .L649: +6061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + 10155 .loc 1 6061 5 is_stmt 1 view .LVU3510 +6061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + 10156 .loc 1 6061 25 is_stmt 0 view .LVU3511 + 10157 0034 2023 movs r3, #32 + 10158 0036 80F84130 strb r3, [r0, #65] +6062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 10159 .loc 1 6062 5 is_stmt 1 view .LVU3512 +6062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 10160 .loc 1 6062 25 is_stmt 0 view .LVU3513 + 10161 003a 1123 movs r3, #17 + 10162 003c 0363 str r3, [r0, #48] +6063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10163 .loc 1 6063 5 is_stmt 1 view .LVU3514 +6063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10164 .loc 1 6063 25 is_stmt 0 view .LVU3515 + 10165 003e 0025 movs r5, #0 + 10166 0040 4563 str r5, [r0, #52] +6066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10167 .loc 1 6066 5 is_stmt 1 view .LVU3516 + 10168 0042 0121 movs r1, #1 + ARM GAS /tmp/ccVyGVF6.s page 370 + + + 10169 0044 FFF7FEFF bl I2C_Disable_IRQ + 10170 .LVL707: +6069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10171 .loc 1 6069 5 view .LVU3517 +6069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10172 .loc 1 6069 5 view .LVU3518 + 10173 0048 84F84050 strb r5, [r4, #64] +6069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10174 .loc 1 6069 5 view .LVU3519 +6075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10175 .loc 1 6075 5 view .LVU3520 + 10176 004c 2046 mov r0, r4 + 10177 004e FFF7FEFF bl HAL_I2C_MasterTxCpltCallback + 10178 .LVL708: + 10179 0052 EEE7 b .L645 + 10180 .cfi_endproc + 10181 .LFE199: + 10183 .section .text.HAL_I2C_SlaveTxCpltCallback,"ax",%progbits + 10184 .align 1 + 10185 .weak HAL_I2C_SlaveTxCpltCallback + 10186 .syntax unified + 10187 .thumb + 10188 .thumb_func + 10189 .fpu fpv5-d16 + 10191 HAL_I2C_SlaveTxCpltCallback: + 10192 .LVL709: + 10193 .LFB179: +4741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 10194 .loc 1 4741 1 view -0 + 10195 .cfi_startproc + 10196 @ args = 0, pretend = 0, frame = 0 + 10197 @ frame_needed = 0, uses_anonymous_args = 0 + 10198 @ link register save eliminated. +4743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10199 .loc 1 4743 3 view .LVU3522 +4748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10200 .loc 1 4748 1 is_stmt 0 view .LVU3523 + 10201 0000 7047 bx lr + 10202 .cfi_endproc + 10203 .LFE179: + 10205 .section .text.HAL_I2C_SlaveRxCpltCallback,"ax",%progbits + 10206 .align 1 + 10207 .weak HAL_I2C_SlaveRxCpltCallback + 10208 .syntax unified + 10209 .thumb + 10210 .thumb_func + 10211 .fpu fpv5-d16 + 10213 HAL_I2C_SlaveRxCpltCallback: + 10214 .LVL710: + 10215 .LFB180: +4757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 10216 .loc 1 4757 1 is_stmt 1 view -0 + 10217 .cfi_startproc + 10218 @ args = 0, pretend = 0, frame = 0 + 10219 @ frame_needed = 0, uses_anonymous_args = 0 + 10220 @ link register save eliminated. +4759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 371 + + + 10221 .loc 1 4759 3 view .LVU3525 +4764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10222 .loc 1 4764 1 is_stmt 0 view .LVU3526 + 10223 0000 7047 bx lr + 10224 .cfi_endproc + 10225 .LFE180: + 10227 .section .text.I2C_ITSlaveSeqCplt,"ax",%progbits + 10228 .align 1 + 10229 .syntax unified + 10230 .thumb + 10231 .thumb_func + 10232 .fpu fpv5-d16 + 10234 I2C_ITSlaveSeqCplt: + 10235 .LVL711: + 10236 .LFB200: +6106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); + 10237 .loc 1 6106 1 is_stmt 1 view -0 + 10238 .cfi_startproc + 10239 @ args = 0, pretend = 0, frame = 0 + 10240 @ frame_needed = 0, uses_anonymous_args = 0 +6106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); + 10241 .loc 1 6106 1 is_stmt 0 view .LVU3528 + 10242 0000 10B5 push {r4, lr} + 10243 .LCFI116: + 10244 .cfi_def_cfa_offset 8 + 10245 .cfi_offset 4, -8 + 10246 .cfi_offset 14, -4 + 10247 0002 0446 mov r4, r0 +6107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10248 .loc 1 6107 3 is_stmt 1 view .LVU3529 +6107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10249 .loc 1 6107 26 is_stmt 0 view .LVU3530 + 10250 0004 0368 ldr r3, [r0] +6107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10251 .loc 1 6107 12 view .LVU3531 + 10252 0006 1A68 ldr r2, [r3] + 10253 .LVL712: +6110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10254 .loc 1 6110 3 is_stmt 1 view .LVU3532 +6110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10255 .loc 1 6110 14 is_stmt 0 view .LVU3533 + 10256 0008 0021 movs r1, #0 + 10257 000a 80F84210 strb r1, [r0, #66] +6113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10258 .loc 1 6113 3 is_stmt 1 view .LVU3534 +6113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10259 .loc 1 6113 6 is_stmt 0 view .LVU3535 + 10260 000e 12F4804F tst r2, #16384 + 10261 0012 0ED0 beq .L653 +6116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10262 .loc 1 6116 5 is_stmt 1 view .LVU3536 +6116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10263 .loc 1 6116 25 is_stmt 0 view .LVU3537 + 10264 0014 1A68 ldr r2, [r3] + 10265 .LVL713: +6116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10266 .loc 1 6116 25 view .LVU3538 + ARM GAS /tmp/ccVyGVF6.s page 372 + + + 10267 0016 22F48042 bic r2, r2, #16384 + 10268 001a 1A60 str r2, [r3] + 10269 .L654: +6126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10270 .loc 1 6126 3 is_stmt 1 view .LVU3539 +6128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10271 .loc 1 6128 3 view .LVU3540 +6128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10272 .loc 1 6128 11 is_stmt 0 view .LVU3541 + 10273 001c 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 10274 0020 DBB2 uxtb r3, r3 +6128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10275 .loc 1 6128 6 view .LVU3542 + 10276 0022 292B cmp r3, #41 + 10277 0024 0DD0 beq .L658 +6148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10278 .loc 1 6148 8 is_stmt 1 view .LVU3543 +6148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10279 .loc 1 6148 16 is_stmt 0 view .LVU3544 + 10280 0026 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 10281 002a DBB2 uxtb r3, r3 +6148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10282 .loc 1 6148 11 view .LVU3545 + 10283 002c 2A2B cmp r3, #42 + 10284 002e 18D0 beq .L659 + 10285 .LVL714: + 10286 .L652: +6171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10287 .loc 1 6171 1 view .LVU3546 + 10288 0030 10BD pop {r4, pc} + 10289 .LVL715: + 10290 .L653: +6118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10291 .loc 1 6118 8 is_stmt 1 view .LVU3547 +6118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10292 .loc 1 6118 11 is_stmt 0 view .LVU3548 + 10293 0032 12F4004F tst r2, #32768 + 10294 0036 F1D0 beq .L654 +6121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10295 .loc 1 6121 5 is_stmt 1 view .LVU3549 +6121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10296 .loc 1 6121 25 is_stmt 0 view .LVU3550 + 10297 0038 1A68 ldr r2, [r3] + 10298 .LVL716: +6121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10299 .loc 1 6121 25 view .LVU3551 + 10300 003a 22F40042 bic r2, r2, #32768 + 10301 003e 1A60 str r2, [r3] + 10302 0040 ECE7 b .L654 + 10303 .L658: +6131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + 10304 .loc 1 6131 5 is_stmt 1 view .LVU3552 +6131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + 10305 .loc 1 6131 25 is_stmt 0 view .LVU3553 + 10306 0042 2823 movs r3, #40 + 10307 0044 84F84130 strb r3, [r4, #65] +6132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 373 + + + 10308 .loc 1 6132 5 is_stmt 1 view .LVU3554 +6132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10309 .loc 1 6132 25 is_stmt 0 view .LVU3555 + 10310 0048 2123 movs r3, #33 + 10311 004a 2363 str r3, [r4, #48] +6135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10312 .loc 1 6135 5 is_stmt 1 view .LVU3556 + 10313 004c 0121 movs r1, #1 + 10314 004e 2046 mov r0, r4 + 10315 .LVL717: +6135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10316 .loc 1 6135 5 is_stmt 0 view .LVU3557 + 10317 0050 FFF7FEFF bl I2C_Disable_IRQ + 10318 .LVL718: +6138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10319 .loc 1 6138 5 is_stmt 1 view .LVU3558 +6138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10320 .loc 1 6138 5 view .LVU3559 + 10321 0054 0023 movs r3, #0 + 10322 0056 84F84030 strb r3, [r4, #64] +6138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10323 .loc 1 6138 5 view .LVU3560 +6144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10324 .loc 1 6144 5 view .LVU3561 + 10325 005a 2046 mov r0, r4 + 10326 005c FFF7FEFF bl HAL_I2C_SlaveTxCpltCallback + 10327 .LVL719: + 10328 0060 E6E7 b .L652 + 10329 .LVL720: + 10330 .L659: +6151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + 10331 .loc 1 6151 5 view .LVU3562 +6151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + 10332 .loc 1 6151 25 is_stmt 0 view .LVU3563 + 10333 0062 2823 movs r3, #40 + 10334 0064 84F84130 strb r3, [r4, #65] +6152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10335 .loc 1 6152 5 is_stmt 1 view .LVU3564 +6152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10336 .loc 1 6152 25 is_stmt 0 view .LVU3565 + 10337 0068 2223 movs r3, #34 + 10338 006a 2363 str r3, [r4, #48] +6155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10339 .loc 1 6155 5 is_stmt 1 view .LVU3566 + 10340 006c 0221 movs r1, #2 + 10341 006e 2046 mov r0, r4 + 10342 .LVL721: +6155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10343 .loc 1 6155 5 is_stmt 0 view .LVU3567 + 10344 0070 FFF7FEFF bl I2C_Disable_IRQ + 10345 .LVL722: +6158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10346 .loc 1 6158 5 is_stmt 1 view .LVU3568 +6158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10347 .loc 1 6158 5 view .LVU3569 + 10348 0074 0023 movs r3, #0 + 10349 0076 84F84030 strb r3, [r4, #64] + ARM GAS /tmp/ccVyGVF6.s page 374 + + +6158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10350 .loc 1 6158 5 view .LVU3570 +6164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10351 .loc 1 6164 5 view .LVU3571 + 10352 007a 2046 mov r0, r4 + 10353 007c FFF7FEFF bl HAL_I2C_SlaveRxCpltCallback + 10354 .LVL723: +6170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10355 .loc 1 6170 3 view .LVU3572 +6171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10356 .loc 1 6171 1 is_stmt 0 view .LVU3573 + 10357 0080 D6E7 b .L652 + 10358 .cfi_endproc + 10359 .LFE200: + 10361 .section .text.I2C_DMASlaveTransmitCplt,"ax",%progbits + 10362 .align 1 + 10363 .syntax unified + 10364 .thumb + 10365 .thumb_func + 10366 .fpu fpv5-d16 + 10368 I2C_DMASlaveTransmitCplt: + 10369 .LVL724: + 10370 .LFB208: +6831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 10371 .loc 1 6831 1 is_stmt 1 view -0 + 10372 .cfi_startproc + 10373 @ args = 0, pretend = 0, frame = 0 + 10374 @ frame_needed = 0, uses_anonymous_args = 0 +6831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 10375 .loc 1 6831 1 is_stmt 0 view .LVU3575 + 10376 0000 08B5 push {r3, lr} + 10377 .LCFI117: + 10378 .cfi_def_cfa_offset 8 + 10379 .cfi_offset 3, -8 + 10380 .cfi_offset 14, -4 +6833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; + 10381 .loc 1 6833 3 is_stmt 1 view .LVU3576 +6833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; + 10382 .loc 1 6833 22 is_stmt 0 view .LVU3577 + 10383 0002 806B ldr r0, [r0, #56] + 10384 .LVL725: +6834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10385 .loc 1 6834 3 is_stmt 1 view .LVU3578 +6834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10386 .loc 1 6834 12 is_stmt 0 view .LVU3579 + 10387 0004 C36A ldr r3, [r0, #44] + 10388 .LVL726: +6836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10389 .loc 1 6836 3 is_stmt 1 view .LVU3580 +6836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10390 .loc 1 6836 6 is_stmt 0 view .LVU3581 + 10391 0006 002B cmp r3, #0 + 10392 0008 18BF it ne + 10393 000a B3F1807F cmpne r3, #16777216 + 10394 000e 00D0 beq .L663 + 10395 .LVL727: + 10396 .L660: + ARM GAS /tmp/ccVyGVF6.s page 375 + + +6851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10397 .loc 1 6851 1 view .LVU3582 + 10398 0010 08BD pop {r3, pc} + 10399 .LVL728: + 10400 .L663: +6839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10401 .loc 1 6839 5 is_stmt 1 view .LVU3583 +6839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10402 .loc 1 6839 9 is_stmt 0 view .LVU3584 + 10403 0012 0268 ldr r2, [r0] +6839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10404 .loc 1 6839 25 view .LVU3585 + 10405 0014 1368 ldr r3, [r2] + 10406 .LVL729: +6839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10407 .loc 1 6839 25 view .LVU3586 + 10408 0016 23F48043 bic r3, r3, #16384 + 10409 001a 1360 str r3, [r2] +6843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10410 .loc 1 6843 5 is_stmt 1 view .LVU3587 + 10411 001c FFF7FEFF bl I2C_ITSlaveSeqCplt + 10412 .LVL730: +6850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10413 .loc 1 6850 3 view .LVU3588 +6851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10414 .loc 1 6851 1 is_stmt 0 view .LVU3589 + 10415 0020 F6E7 b .L660 + 10416 .cfi_endproc + 10417 .LFE208: + 10419 .section .text.I2C_DMASlaveReceiveCplt,"ax",%progbits + 10420 .align 1 + 10421 .syntax unified + 10422 .thumb + 10423 .thumb_func + 10424 .fpu fpv5-d16 + 10426 I2C_DMASlaveReceiveCplt: + 10427 .LVL731: + 10428 .LFB210: +6919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 10429 .loc 1 6919 1 is_stmt 1 view -0 + 10430 .cfi_startproc + 10431 @ args = 0, pretend = 0, frame = 0 + 10432 @ frame_needed = 0, uses_anonymous_args = 0 +6919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 10433 .loc 1 6919 1 is_stmt 0 view .LVU3591 + 10434 0000 08B5 push {r3, lr} + 10435 .LCFI118: + 10436 .cfi_def_cfa_offset 8 + 10437 .cfi_offset 3, -8 + 10438 .cfi_offset 14, -4 +6921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; + 10439 .loc 1 6921 3 is_stmt 1 view .LVU3592 +6921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; + 10440 .loc 1 6921 22 is_stmt 0 view .LVU3593 + 10441 0002 806B ldr r0, [r0, #56] + 10442 .LVL732: +6922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 376 + + + 10443 .loc 1 6922 3 is_stmt 1 view .LVU3594 +6922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10444 .loc 1 6922 12 is_stmt 0 view .LVU3595 + 10445 0004 C26A ldr r2, [r0, #44] + 10446 .LVL733: +6924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) + 10447 .loc 1 6924 3 is_stmt 1 view .LVU3596 +6924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) + 10448 .loc 1 6924 8 is_stmt 0 view .LVU3597 + 10449 0006 C36B ldr r3, [r0, #60] + 10450 0008 1B68 ldr r3, [r3] + 10451 000a 5B68 ldr r3, [r3, #4] +6924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) + 10452 .loc 1 6924 6 view .LVU3598 + 10453 000c 13B9 cbnz r3, .L664 +6924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) + 10454 .loc 1 6924 53 discriminator 1 view .LVU3599 + 10455 000e 12F5803F cmn r2, #65536 + 10456 0012 00D1 bne .L667 + 10457 .LVL734: + 10458 .L664: +6939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10459 .loc 1 6939 1 view .LVU3600 + 10460 0014 08BD pop {r3, pc} + 10461 .LVL735: + 10462 .L667: +6928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10463 .loc 1 6928 5 is_stmt 1 view .LVU3601 +6928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10464 .loc 1 6928 9 is_stmt 0 view .LVU3602 + 10465 0016 0268 ldr r2, [r0] + 10466 .LVL736: +6928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10467 .loc 1 6928 25 view .LVU3603 + 10468 0018 1368 ldr r3, [r2] + 10469 001a 23F40043 bic r3, r3, #32768 + 10470 001e 1360 str r3, [r2] +6931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10471 .loc 1 6931 5 is_stmt 1 view .LVU3604 + 10472 0020 FFF7FEFF bl I2C_ITSlaveSeqCplt + 10473 .LVL737: +6938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10474 .loc 1 6938 3 view .LVU3605 +6939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10475 .loc 1 6939 1 is_stmt 0 view .LVU3606 + 10476 0024 F6E7 b .L664 + 10477 .cfi_endproc + 10478 .LFE210: + 10480 .section .text.HAL_I2C_AddrCallback,"ax",%progbits + 10481 .align 1 + 10482 .weak HAL_I2C_AddrCallback + 10483 .syntax unified + 10484 .thumb + 10485 .thumb_func + 10486 .fpu fpv5-d16 + 10488 HAL_I2C_AddrCallback: + 10489 .LVL738: + ARM GAS /tmp/ccVyGVF6.s page 377 + + + 10490 .LFB181: +4775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 10491 .loc 1 4775 1 is_stmt 1 view -0 + 10492 .cfi_startproc + 10493 @ args = 0, pretend = 0, frame = 0 + 10494 @ frame_needed = 0, uses_anonymous_args = 0 + 10495 @ link register save eliminated. +4777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(TransferDirection); + 10496 .loc 1 4777 3 view .LVU3608 +4778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(AddrMatchCode); + 10497 .loc 1 4778 3 view .LVU3609 +4779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10498 .loc 1 4779 3 view .LVU3610 +4784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10499 .loc 1 4784 1 is_stmt 0 view .LVU3611 + 10500 0000 7047 bx lr + 10501 .cfi_endproc + 10502 .LFE181: + 10504 .section .text.I2C_ITAddrCplt,"ax",%progbits + 10505 .align 1 + 10506 .syntax unified + 10507 .thumb + 10508 .thumb_func + 10509 .fpu fpv5-d16 + 10511 I2C_ITAddrCplt: + 10512 .LVL739: + 10513 .LFB198: +5958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint8_t transferdirection; + 10514 .loc 1 5958 1 is_stmt 1 view -0 + 10515 .cfi_startproc + 10516 @ args = 0, pretend = 0, frame = 0 + 10517 @ frame_needed = 0, uses_anonymous_args = 0 +5958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint8_t transferdirection; + 10518 .loc 1 5958 1 is_stmt 0 view .LVU3613 + 10519 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 10520 .LCFI119: + 10521 .cfi_def_cfa_offset 24 + 10522 .cfi_offset 3, -24 + 10523 .cfi_offset 4, -20 + 10524 .cfi_offset 5, -16 + 10525 .cfi_offset 6, -12 + 10526 .cfi_offset 7, -8 + 10527 .cfi_offset 14, -4 + 10528 0002 0446 mov r4, r0 +5959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t slaveaddrcode; + 10529 .loc 1 5959 3 is_stmt 1 view .LVU3614 +5960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t ownadd1code; + 10530 .loc 1 5960 3 view .LVU3615 +5961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t ownadd2code; + 10531 .loc 1 5961 3 view .LVU3616 +5962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10532 .loc 1 5962 3 view .LVU3617 +5965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10533 .loc 1 5965 3 view .LVU3618 +5968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10534 .loc 1 5968 3 view .LVU3619 +5968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 378 + + + 10535 .loc 1 5968 22 is_stmt 0 view .LVU3620 + 10536 0004 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 +5968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10537 .loc 1 5968 6 view .LVU3621 + 10538 0008 03F02803 and r3, r3, #40 + 10539 000c 282B cmp r3, #40 + 10540 000e 06D0 beq .L675 +6040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10541 .loc 1 6040 5 is_stmt 1 view .LVU3622 + 10542 0010 0368 ldr r3, [r0] + 10543 0012 0822 movs r2, #8 + 10544 0014 DA61 str r2, [r3, #28] +6043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10545 .loc 1 6043 5 view .LVU3623 +6043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10546 .loc 1 6043 5 view .LVU3624 + 10547 0016 0023 movs r3, #0 + 10548 0018 80F84030 strb r3, [r0, #64] +6043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10549 .loc 1 6043 5 view .LVU3625 + 10550 .LVL740: + 10551 .L669: +6045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10552 .loc 1 6045 1 is_stmt 0 view .LVU3626 + 10553 001c F8BD pop {r3, r4, r5, r6, r7, pc} + 10554 .LVL741: + 10555 .L675: +5970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); + 10556 .loc 1 5970 5 is_stmt 1 view .LVU3627 +5970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); + 10557 .loc 1 5970 25 is_stmt 0 view .LVU3628 + 10558 001e 0368 ldr r3, [r0] + 10559 0020 9E69 ldr r6, [r3, #24] +5970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); + 10560 .loc 1 5970 23 view .LVU3629 + 10561 0022 C6F30046 ubfx r6, r6, #16, #1 + 10562 .LVL742: +5971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); + 10563 .loc 1 5971 5 is_stmt 1 view .LVU3630 +5971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); + 10564 .loc 1 5971 25 is_stmt 0 view .LVU3631 + 10565 0026 9A69 ldr r2, [r3, #24] + 10566 0028 120C lsrs r2, r2, #16 +5971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); + 10567 .loc 1 5971 23 view .LVU3632 + 10568 002a 02F0FE05 and r5, r2, #254 + 10569 .LVL743: +5972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); + 10570 .loc 1 5972 5 is_stmt 1 view .LVU3633 +5972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); + 10571 .loc 1 5972 25 is_stmt 0 view .LVU3634 + 10572 002e 9A68 ldr r2, [r3, #8] +5972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); + 10573 .loc 1 5972 23 view .LVU3635 + 10574 0030 C2F30902 ubfx r2, r2, #0, #10 + 10575 .LVL744: +5973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 379 + + + 10576 .loc 1 5973 5 is_stmt 1 view .LVU3636 +5973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10577 .loc 1 5973 25 is_stmt 0 view .LVU3637 + 10578 0034 DF68 ldr r7, [r3, #12] +5973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10579 .loc 1 5973 23 view .LVU3638 + 10580 0036 07F0FE07 and r7, r7, #254 + 10581 .LVL745: +5976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10582 .loc 1 5976 5 is_stmt 1 view .LVU3639 +5976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10583 .loc 1 5976 19 is_stmt 0 view .LVU3640 + 10584 003a C168 ldr r1, [r0, #12] + 10585 .LVL746: +5976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10586 .loc 1 5976 8 view .LVU3641 + 10587 003c 0229 cmp r1, #2 + 10588 003e 22D1 bne .L671 +5978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10589 .loc 1 5978 7 is_stmt 1 view .LVU3642 +5978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10590 .loc 1 5978 44 is_stmt 0 view .LVU3643 + 10591 0040 85EAD215 eor r5, r5, r2, lsr #7 + 10592 .LVL747: +5978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10593 .loc 1 5978 10 view .LVU3644 + 10594 0044 15F0060F tst r5, #6 + 10595 0048 10D1 bne .L672 +5980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->AddrEventCount++; + 10596 .loc 1 5980 9 is_stmt 1 view .LVU3645 + 10597 .LVL748: +5981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->AddrEventCount == 2U) + 10598 .loc 1 5981 9 view .LVU3646 +5981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->AddrEventCount == 2U) + 10599 .loc 1 5981 13 is_stmt 0 view .LVU3647 + 10600 004a 816C ldr r1, [r0, #72] +5981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->AddrEventCount == 2U) + 10601 .loc 1 5981 29 view .LVU3648 + 10602 004c 0131 adds r1, r1, #1 + 10603 004e 8164 str r1, [r0, #72] +5982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10604 .loc 1 5982 9 is_stmt 1 view .LVU3649 +5982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10605 .loc 1 5982 17 is_stmt 0 view .LVU3650 + 10606 0050 816C ldr r1, [r0, #72] +5982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10607 .loc 1 5982 12 view .LVU3651 + 10608 0052 0229 cmp r1, #2 + 10609 0054 E2D1 bne .L669 +5985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10610 .loc 1 5985 11 is_stmt 1 view .LVU3652 +5985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10611 .loc 1 5985 32 is_stmt 0 view .LVU3653 + 10612 0056 0021 movs r1, #0 + 10613 0058 8164 str r1, [r0, #72] +5988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10614 .loc 1 5988 11 is_stmt 1 view .LVU3654 + ARM GAS /tmp/ccVyGVF6.s page 380 + + + 10615 005a 0820 movs r0, #8 + 10616 .LVL749: +5988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10617 .loc 1 5988 11 is_stmt 0 view .LVU3655 + 10618 005c D861 str r0, [r3, #28] +5991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10619 .loc 1 5991 11 is_stmt 1 view .LVU3656 +5991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10620 .loc 1 5991 11 view .LVU3657 + 10621 005e 84F84010 strb r1, [r4, #64] +5991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10622 .loc 1 5991 11 view .LVU3658 +5997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10623 .loc 1 5997 11 view .LVU3659 + 10624 0062 3146 mov r1, r6 + 10625 0064 2046 mov r0, r4 + 10626 0066 FFF7FEFF bl HAL_I2C_AddrCallback + 10627 .LVL750: +5997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10628 .loc 1 5997 11 is_stmt 0 view .LVU3660 + 10629 006a D7E7 b .L669 + 10630 .LVL751: + 10631 .L672: +6003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10632 .loc 1 6003 9 is_stmt 1 view .LVU3661 +6006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10633 .loc 1 6006 9 view .LVU3662 + 10634 006c 4FF40041 mov r1, #32768 + 10635 0070 FFF7FEFF bl I2C_Disable_IRQ + 10636 .LVL752: +6009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10637 .loc 1 6009 9 view .LVU3663 +6009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10638 .loc 1 6009 9 view .LVU3664 + 10639 0074 0023 movs r3, #0 + 10640 0076 84F84030 strb r3, [r4, #64] +6009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10641 .loc 1 6009 9 view .LVU3665 +6015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10642 .loc 1 6015 9 view .LVU3666 + 10643 007a 3A46 mov r2, r7 + 10644 007c 3146 mov r1, r6 + 10645 007e 2046 mov r0, r4 + 10646 0080 FFF7FEFF bl HAL_I2C_AddrCallback + 10647 .LVL753: + 10648 0084 CAE7 b .L669 + 10649 .LVL754: + 10650 .L671: +6023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10651 .loc 1 6023 7 view .LVU3667 + 10652 0086 4FF40041 mov r1, #32768 + 10653 008a FFF7FEFF bl I2C_Disable_IRQ + 10654 .LVL755: +6026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10655 .loc 1 6026 7 view .LVU3668 +6026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10656 .loc 1 6026 7 view .LVU3669 + ARM GAS /tmp/ccVyGVF6.s page 381 + + + 10657 008e 0023 movs r3, #0 + 10658 0090 84F84030 strb r3, [r4, #64] +6026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10659 .loc 1 6026 7 view .LVU3670 +6032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10660 .loc 1 6032 7 view .LVU3671 + 10661 0094 2A46 mov r2, r5 + 10662 0096 3146 mov r1, r6 + 10663 0098 2046 mov r0, r4 + 10664 009a FFF7FEFF bl HAL_I2C_AddrCallback + 10665 .LVL756: + 10666 009e BDE7 b .L669 + 10667 .cfi_endproc + 10668 .LFE198: + 10670 .section .text.HAL_I2C_ListenCpltCallback,"ax",%progbits + 10671 .align 1 + 10672 .weak HAL_I2C_ListenCpltCallback + 10673 .syntax unified + 10674 .thumb + 10675 .thumb_func + 10676 .fpu fpv5-d16 + 10678 HAL_I2C_ListenCpltCallback: + 10679 .LVL757: + 10680 .LFB182: +4793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 10681 .loc 1 4793 1 view -0 + 10682 .cfi_startproc + 10683 @ args = 0, pretend = 0, frame = 0 + 10684 @ frame_needed = 0, uses_anonymous_args = 0 + 10685 @ link register save eliminated. +4795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10686 .loc 1 4795 3 view .LVU3673 +4800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10687 .loc 1 4800 1 is_stmt 0 view .LVU3674 + 10688 0000 7047 bx lr + 10689 .cfi_endproc + 10690 .LFE182: + 10692 .section .text.I2C_ITListenCplt,"ax",%progbits + 10693 .align 1 + 10694 .syntax unified + 10695 .thumb + 10696 .thumb_func + 10697 .fpu fpv5-d16 + 10699 I2C_ITListenCplt: + 10700 .LVL758: + 10701 .LFB203: +6539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset handle parameters */ + 10702 .loc 1 6539 1 is_stmt 1 view -0 + 10703 .cfi_startproc + 10704 @ args = 0, pretend = 0, frame = 0 + 10705 @ frame_needed = 0, uses_anonymous_args = 0 +6539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Reset handle parameters */ + 10706 .loc 1 6539 1 is_stmt 0 view .LVU3676 + 10707 0000 10B5 push {r4, lr} + 10708 .LCFI120: + 10709 .cfi_def_cfa_offset 8 + 10710 .cfi_offset 4, -8 + ARM GAS /tmp/ccVyGVF6.s page 382 + + + 10711 .cfi_offset 14, -4 + 10712 0002 0446 mov r4, r0 +6541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 10713 .loc 1 6541 3 is_stmt 1 view .LVU3677 +6541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 10714 .loc 1 6541 21 is_stmt 0 view .LVU3678 + 10715 0004 174B ldr r3, .L680 + 10716 0006 C362 str r3, [r0, #44] +6542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 10717 .loc 1 6542 3 is_stmt 1 view .LVU3679 +6542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 10718 .loc 1 6542 23 is_stmt 0 view .LVU3680 + 10719 0008 0023 movs r3, #0 + 10720 000a 0363 str r3, [r0, #48] +6543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 10721 .loc 1 6543 3 is_stmt 1 view .LVU3681 +6543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->Mode = HAL_I2C_MODE_NONE; + 10722 .loc 1 6543 15 is_stmt 0 view .LVU3682 + 10723 000c 2022 movs r2, #32 + 10724 000e 80F84120 strb r2, [r0, #65] +6544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 10725 .loc 1 6544 3 is_stmt 1 view .LVU3683 +6544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 10726 .loc 1 6544 14 is_stmt 0 view .LVU3684 + 10727 0012 80F84230 strb r3, [r0, #66] +6545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10728 .loc 1 6545 3 is_stmt 1 view .LVU3685 +6545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10729 .loc 1 6545 17 is_stmt 0 view .LVU3686 + 10730 0016 4363 str r3, [r0, #52] +6548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10731 .loc 1 6548 3 is_stmt 1 view .LVU3687 +6548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10732 .loc 1 6548 6 is_stmt 0 view .LVU3688 + 10733 0018 11F0040F tst r1, #4 + 10734 001c 13D0 beq .L678 +6551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10735 .loc 1 6551 5 is_stmt 1 view .LVU3689 +6551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10736 .loc 1 6551 36 is_stmt 0 view .LVU3690 + 10737 001e 0368 ldr r3, [r0] +6551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10738 .loc 1 6551 46 view .LVU3691 + 10739 0020 5A6A ldr r2, [r3, #36] +6551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10740 .loc 1 6551 10 view .LVU3692 + 10741 0022 436A ldr r3, [r0, #36] +6551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10742 .loc 1 6551 21 view .LVU3693 + 10743 0024 1A70 strb r2, [r3] +6554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10744 .loc 1 6554 5 is_stmt 1 view .LVU3694 +6554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10745 .loc 1 6554 9 is_stmt 0 view .LVU3695 + 10746 0026 436A ldr r3, [r0, #36] +6554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10747 .loc 1 6554 19 view .LVU3696 + ARM GAS /tmp/ccVyGVF6.s page 383 + + + 10748 0028 0133 adds r3, r3, #1 + 10749 002a 4362 str r3, [r0, #36] +6556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10750 .loc 1 6556 5 is_stmt 1 view .LVU3697 +6556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10751 .loc 1 6556 14 is_stmt 0 view .LVU3698 + 10752 002c 038D ldrh r3, [r0, #40] +6556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10753 .loc 1 6556 8 view .LVU3699 + 10754 002e 53B1 cbz r3, .L678 +6558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 10755 .loc 1 6558 7 is_stmt 1 view .LVU3700 +6558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 10756 .loc 1 6558 21 is_stmt 0 view .LVU3701 + 10757 0030 013B subs r3, r3, #1 + 10758 0032 0385 strh r3, [r0, #40] @ movhi +6559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10759 .loc 1 6559 7 is_stmt 1 view .LVU3702 +6559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10760 .loc 1 6559 11 is_stmt 0 view .LVU3703 + 10761 0034 438D ldrh r3, [r0, #42] + 10762 0036 9BB2 uxth r3, r3 +6559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10763 .loc 1 6559 22 view .LVU3704 + 10764 0038 013B subs r3, r3, #1 + 10765 003a 9BB2 uxth r3, r3 + 10766 003c 4385 strh r3, [r0, #42] @ movhi +6562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10767 .loc 1 6562 7 is_stmt 1 view .LVU3705 +6562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 10768 .loc 1 6562 23 is_stmt 0 view .LVU3706 + 10769 003e 436C ldr r3, [r0, #68] + 10770 0040 43F00403 orr r3, r3, #4 + 10771 0044 4364 str r3, [r0, #68] + 10772 .L678: +6567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10773 .loc 1 6567 3 is_stmt 1 view .LVU3707 + 10774 0046 48F20301 movw r1, #32771 + 10775 .LVL759: +6567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10776 .loc 1 6567 3 is_stmt 0 view .LVU3708 + 10777 004a 2046 mov r0, r4 + 10778 .LVL760: +6567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10779 .loc 1 6567 3 view .LVU3709 + 10780 004c FFF7FEFF bl I2C_Disable_IRQ + 10781 .LVL761: +6570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10782 .loc 1 6570 3 is_stmt 1 view .LVU3710 + 10783 0050 2368 ldr r3, [r4] + 10784 0052 1022 movs r2, #16 + 10785 0054 DA61 str r2, [r3, #28] +6573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10786 .loc 1 6573 3 view .LVU3711 +6573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10787 .loc 1 6573 3 view .LVU3712 + 10788 0056 0023 movs r3, #0 + ARM GAS /tmp/ccVyGVF6.s page 384 + + + 10789 0058 84F84030 strb r3, [r4, #64] +6573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10790 .loc 1 6573 3 view .LVU3713 +6579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10791 .loc 1 6579 3 view .LVU3714 + 10792 005c 2046 mov r0, r4 + 10793 005e FFF7FEFF bl HAL_I2C_ListenCpltCallback + 10794 .LVL762: +6581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10795 .loc 1 6581 1 is_stmt 0 view .LVU3715 + 10796 0062 10BD pop {r4, pc} + 10797 .LVL763: + 10798 .L681: +6581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10799 .loc 1 6581 1 view .LVU3716 + 10800 .align 2 + 10801 .L680: + 10802 0064 0000FFFF .word -65536 + 10803 .cfi_endproc + 10804 .LFE203: + 10806 .section .text.HAL_I2C_MemTxCpltCallback,"ax",%progbits + 10807 .align 1 + 10808 .weak HAL_I2C_MemTxCpltCallback + 10809 .syntax unified + 10810 .thumb + 10811 .thumb_func + 10812 .fpu fpv5-d16 + 10814 HAL_I2C_MemTxCpltCallback: + 10815 .LVL764: + 10816 .LFB183: +4809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 10817 .loc 1 4809 1 is_stmt 1 view -0 + 10818 .cfi_startproc + 10819 @ args = 0, pretend = 0, frame = 0 + 10820 @ frame_needed = 0, uses_anonymous_args = 0 + 10821 @ link register save eliminated. +4811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10822 .loc 1 4811 3 view .LVU3718 +4816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10823 .loc 1 4816 1 is_stmt 0 view .LVU3719 + 10824 0000 7047 bx lr + 10825 .cfi_endproc + 10826 .LFE183: + 10828 .section .text.HAL_I2C_MemRxCpltCallback,"ax",%progbits + 10829 .align 1 + 10830 .weak HAL_I2C_MemRxCpltCallback + 10831 .syntax unified + 10832 .thumb + 10833 .thumb_func + 10834 .fpu fpv5-d16 + 10836 HAL_I2C_MemRxCpltCallback: + 10837 .LVL765: + 10838 .LFB184: +4825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 10839 .loc 1 4825 1 is_stmt 1 view -0 + 10840 .cfi_startproc + 10841 @ args = 0, pretend = 0, frame = 0 + ARM GAS /tmp/ccVyGVF6.s page 385 + + + 10842 @ frame_needed = 0, uses_anonymous_args = 0 + 10843 @ link register save eliminated. +4827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10844 .loc 1 4827 3 view .LVU3721 +4832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10845 .loc 1 4832 1 is_stmt 0 view .LVU3722 + 10846 0000 7047 bx lr + 10847 .cfi_endproc + 10848 .LFE184: + 10850 .section .text.HAL_I2C_ErrorCallback,"ax",%progbits + 10851 .align 1 + 10852 .weak HAL_I2C_ErrorCallback + 10853 .syntax unified + 10854 .thumb + 10855 .thumb_func + 10856 .fpu fpv5-d16 + 10858 HAL_I2C_ErrorCallback: + 10859 .LVL766: + 10860 .LFB185: +4841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 10861 .loc 1 4841 1 is_stmt 1 view -0 + 10862 .cfi_startproc + 10863 @ args = 0, pretend = 0, frame = 0 + 10864 @ frame_needed = 0, uses_anonymous_args = 0 + 10865 @ link register save eliminated. +4843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10866 .loc 1 4843 3 view .LVU3724 +4848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10867 .loc 1 4848 1 is_stmt 0 view .LVU3725 + 10868 0000 7047 bx lr + 10869 .cfi_endproc + 10870 .LFE185: + 10872 .section .text.HAL_I2C_AbortCpltCallback,"ax",%progbits + 10873 .align 1 + 10874 .weak HAL_I2C_AbortCpltCallback + 10875 .syntax unified + 10876 .thumb + 10877 .thumb_func + 10878 .fpu fpv5-d16 + 10880 HAL_I2C_AbortCpltCallback: + 10881 .LVL767: + 10882 .LFB186: +4857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Prevent unused argument(s) compilation warning */ + 10883 .loc 1 4857 1 is_stmt 1 view -0 + 10884 .cfi_startproc + 10885 @ args = 0, pretend = 0, frame = 0 + 10886 @ frame_needed = 0, uses_anonymous_args = 0 + 10887 @ link register save eliminated. +4859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10888 .loc 1 4859 3 view .LVU3727 +4864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10889 .loc 1 4864 1 is_stmt 0 view .LVU3728 + 10890 0000 7047 bx lr + 10891 .cfi_endproc + 10892 .LFE186: + 10894 .section .text.I2C_TreatErrorCallback,"ax",%progbits + 10895 .align 1 + ARM GAS /tmp/ccVyGVF6.s page 386 + + + 10896 .syntax unified + 10897 .thumb + 10898 .thumb_func + 10899 .fpu fpv5-d16 + 10901 I2C_TreatErrorCallback: + 10902 .LVL768: + 10903 .LFB205: +6721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_ABORT) + 10904 .loc 1 6721 1 is_stmt 1 view -0 + 10905 .cfi_startproc + 10906 @ args = 0, pretend = 0, frame = 0 + 10907 @ frame_needed = 0, uses_anonymous_args = 0 +6721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->State == HAL_I2C_STATE_ABORT) + 10908 .loc 1 6721 1 is_stmt 0 view .LVU3730 + 10909 0000 08B5 push {r3, lr} + 10910 .LCFI121: + 10911 .cfi_def_cfa_offset 8 + 10912 .cfi_offset 3, -8 + 10913 .cfi_offset 14, -4 +6722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10914 .loc 1 6722 3 is_stmt 1 view .LVU3731 +6722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10915 .loc 1 6722 11 is_stmt 0 view .LVU3732 + 10916 0002 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 10917 0006 DBB2 uxtb r3, r3 +6722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 10918 .loc 1 6722 6 view .LVU3733 + 10919 0008 602B cmp r3, #96 + 10920 000a 06D0 beq .L690 +6739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10921 .loc 1 6739 5 is_stmt 1 view .LVU3734 +6739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10922 .loc 1 6739 25 is_stmt 0 view .LVU3735 + 10923 000c 0023 movs r3, #0 + 10924 000e 0363 str r3, [r0, #48] +6742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10925 .loc 1 6742 5 is_stmt 1 view .LVU3736 +6742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10926 .loc 1 6742 5 view .LVU3737 + 10927 0010 80F84030 strb r3, [r0, #64] +6742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10928 .loc 1 6742 5 view .LVU3738 +6748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10929 .loc 1 6748 5 view .LVU3739 + 10930 0014 FFF7FEFF bl HAL_I2C_ErrorCallback + 10931 .LVL769: + 10932 .L686: +6751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10933 .loc 1 6751 1 is_stmt 0 view .LVU3740 + 10934 0018 08BD pop {r3, pc} + 10935 .LVL770: + 10936 .L690: +6724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 10937 .loc 1 6724 5 is_stmt 1 view .LVU3741 +6724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 10938 .loc 1 6724 17 is_stmt 0 view .LVU3742 + 10939 001a 2023 movs r3, #32 + ARM GAS /tmp/ccVyGVF6.s page 387 + + + 10940 001c 80F84130 strb r3, [r0, #65] +6725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10941 .loc 1 6725 5 is_stmt 1 view .LVU3743 +6725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10942 .loc 1 6725 25 is_stmt 0 view .LVU3744 + 10943 0020 0023 movs r3, #0 + 10944 0022 0363 str r3, [r0, #48] +6728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10945 .loc 1 6728 5 is_stmt 1 view .LVU3745 +6728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10946 .loc 1 6728 5 view .LVU3746 + 10947 0024 80F84030 strb r3, [r0, #64] +6728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10948 .loc 1 6728 5 view .LVU3747 +6734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10949 .loc 1 6734 5 view .LVU3748 + 10950 0028 FFF7FEFF bl HAL_I2C_AbortCpltCallback + 10951 .LVL771: +6734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 10952 .loc 1 6734 5 is_stmt 0 view .LVU3749 + 10953 002c F4E7 b .L686 + 10954 .cfi_endproc + 10955 .LFE205: + 10957 .section .text.I2C_ITError,"ax",%progbits + 10958 .align 1 + 10959 .syntax unified + 10960 .thumb + 10961 .thumb_func + 10962 .fpu fpv5-d16 + 10964 I2C_ITError: + 10965 .LVL772: + 10966 .LFB204: +6590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State; + 10967 .loc 1 6590 1 is_stmt 1 view -0 + 10968 .cfi_startproc + 10969 @ args = 0, pretend = 0, frame = 0 + 10970 @ frame_needed = 0, uses_anonymous_args = 0 +6590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State; + 10971 .loc 1 6590 1 is_stmt 0 view .LVU3751 + 10972 0000 10B5 push {r4, lr} + 10973 .LCFI122: + 10974 .cfi_def_cfa_offset 8 + 10975 .cfi_offset 4, -8 + 10976 .cfi_offset 14, -4 + 10977 0002 0446 mov r4, r0 +6591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10978 .loc 1 6591 3 is_stmt 1 view .LVU3752 +6591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10979 .loc 1 6591 24 is_stmt 0 view .LVU3753 + 10980 0004 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 10981 .LVL773: +6593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10982 .loc 1 6593 3 is_stmt 1 view .LVU3754 +6596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 10983 .loc 1 6596 3 view .LVU3755 +6596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 10984 .loc 1 6596 23 is_stmt 0 view .LVU3756 + ARM GAS /tmp/ccVyGVF6.s page 388 + + + 10985 0008 0020 movs r0, #0 + 10986 .LVL774: +6596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 10987 .loc 1 6596 23 view .LVU3757 + 10988 000a 84F84200 strb r0, [r4, #66] +6597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = 0U; + 10989 .loc 1 6597 3 is_stmt 1 view .LVU3758 +6597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount = 0U; + 10990 .loc 1 6597 23 is_stmt 0 view .LVU3759 + 10991 000e 454A ldr r2, .L704 + 10992 0010 E262 str r2, [r4, #44] +6598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10993 .loc 1 6598 3 is_stmt 1 view .LVU3760 +6598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10994 .loc 1 6598 23 is_stmt 0 view .LVU3761 + 10995 0012 6085 strh r0, [r4, #42] @ movhi +6601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10996 .loc 1 6601 3 is_stmt 1 view .LVU3762 +6601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 10997 .loc 1 6601 19 is_stmt 0 view .LVU3763 + 10998 0014 626C ldr r2, [r4, #68] + 10999 0016 0A43 orrs r2, r2, r1 + 11000 0018 6264 str r2, [r4, #68] +6604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || + 11001 .loc 1 6604 3 is_stmt 1 view .LVU3764 +6605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + 11002 .loc 1 6605 50 is_stmt 0 view .LVU3765 + 11003 001a 283B subs r3, r3, #40 + 11004 .LVL775: +6605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) + 11005 .loc 1 6605 50 view .LVU3766 + 11006 001c DBB2 uxtb r3, r3 +6604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || + 11007 .loc 1 6604 6 view .LVU3767 + 11008 001e 022B cmp r3, #2 + 11009 0020 2DD8 bhi .L692 +6609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11010 .loc 1 6609 5 is_stmt 1 view .LVU3768 + 11011 0022 0321 movs r1, #3 + 11012 .LVL776: +6609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11013 .loc 1 6609 5 is_stmt 0 view .LVU3769 + 11014 0024 2046 mov r0, r4 + 11015 0026 FFF7FEFF bl I2C_Disable_IRQ + 11016 .LVL777: +6612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 11017 .loc 1 6612 5 is_stmt 1 view .LVU3770 +6612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = I2C_Slave_ISR_IT; + 11018 .loc 1 6612 25 is_stmt 0 view .LVU3771 + 11019 002a 2823 movs r3, #40 + 11020 002c 84F84130 strb r3, [r4, #65] +6613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11021 .loc 1 6613 5 is_stmt 1 view .LVU3772 +6613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11022 .loc 1 6613 25 is_stmt 0 view .LVU3773 + 11023 0030 3D4B ldr r3, .L704+4 + 11024 0032 6363 str r3, [r4, #52] + ARM GAS /tmp/ccVyGVF6.s page 389 + + + 11025 .L693: +6648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11026 .loc 1 6648 3 is_stmt 1 view .LVU3774 +6648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11027 .loc 1 6648 20 is_stmt 0 view .LVU3775 + 11028 0034 236B ldr r3, [r4, #48] + 11029 .LVL778: +6650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) + 11030 .loc 1 6650 3 is_stmt 1 view .LVU3776 +6650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) + 11031 .loc 1 6650 12 is_stmt 0 view .LVU3777 + 11032 0036 A26B ldr r2, [r4, #56] +6650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) + 11033 .loc 1 6650 6 view .LVU3778 + 11034 0038 002A cmp r2, #0 + 11035 003a 49D0 beq .L696 +6650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) + 11036 .loc 1 6650 30 discriminator 1 view .LVU3779 + 11037 003c 212B cmp r3, #33 + 11038 003e 18BF it ne + 11039 0040 112B cmpne r3, #17 + 11040 0042 45D1 bne .L696 +6653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11041 .loc 1 6653 5 is_stmt 1 view .LVU3780 +6653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11042 .loc 1 6653 14 is_stmt 0 view .LVU3781 + 11043 0044 2368 ldr r3, [r4] + 11044 .LVL779: +6653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11045 .loc 1 6653 24 view .LVU3782 + 11046 0046 1A68 ldr r2, [r3] +6653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11047 .loc 1 6653 8 view .LVU3783 + 11048 0048 12F4804F tst r2, #16384 + 11049 004c 03D0 beq .L697 +6655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11050 .loc 1 6655 7 is_stmt 1 view .LVU3784 +6655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11051 .loc 1 6655 27 is_stmt 0 view .LVU3785 + 11052 004e 1A68 ldr r2, [r3] + 11053 0050 22F48042 bic r2, r2, #16384 + 11054 0054 1A60 str r2, [r3] + 11055 .L697: +6658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11056 .loc 1 6658 5 is_stmt 1 view .LVU3786 +6658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11057 .loc 1 6658 9 is_stmt 0 view .LVU3787 + 11058 0056 A06B ldr r0, [r4, #56] + 11059 0058 FFF7FEFF bl HAL_DMA_GetState + 11060 .LVL780: +6658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11061 .loc 1 6658 8 view .LVU3788 + 11062 005c 0128 cmp r0, #1 + 11063 005e 33D0 beq .L698 +6662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11064 .loc 1 6662 7 is_stmt 1 view .LVU3789 +6662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 390 + + + 11065 .loc 1 6662 11 is_stmt 0 view .LVU3790 + 11066 0060 A36B ldr r3, [r4, #56] +6662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11067 .loc 1 6662 39 view .LVU3791 + 11068 0062 324A ldr r2, .L704+8 + 11069 0064 1A65 str r2, [r3, #80] +6665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11070 .loc 1 6665 7 is_stmt 1 view .LVU3792 +6665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11071 .loc 1 6665 7 view .LVU3793 + 11072 0066 0023 movs r3, #0 + 11073 0068 84F84030 strb r3, [r4, #64] +6665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11074 .loc 1 6665 7 view .LVU3794 +6668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11075 .loc 1 6668 7 view .LVU3795 +6668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11076 .loc 1 6668 11 is_stmt 0 view .LVU3796 + 11077 006c A06B ldr r0, [r4, #56] + 11078 006e FFF7FEFF bl HAL_DMA_Abort_IT + 11079 .LVL781: +6668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11080 .loc 1 6668 10 view .LVU3797 + 11081 0072 0028 cmp r0, #0 + 11082 0074 55D0 beq .L691 +6671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11083 .loc 1 6671 9 is_stmt 1 view .LVU3798 +6671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11084 .loc 1 6671 13 is_stmt 0 view .LVU3799 + 11085 0076 A06B ldr r0, [r4, #56] +6671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11086 .loc 1 6671 21 view .LVU3800 + 11087 0078 036D ldr r3, [r0, #80] +6671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11088 .loc 1 6671 9 view .LVU3801 + 11089 007a 9847 blx r3 + 11090 .LVL782: + 11091 007c 51E0 b .L691 + 11092 .LVL783: + 11093 .L692: +6618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11094 .loc 1 6618 5 is_stmt 1 view .LVU3802 + 11095 007e 48F20301 movw r1, #32771 + 11096 .LVL784: +6618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11097 .loc 1 6618 5 is_stmt 0 view .LVU3803 + 11098 0082 2046 mov r0, r4 + 11099 0084 FFF7FEFF bl I2C_Disable_IRQ + 11100 .LVL785: +6621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11101 .loc 1 6621 5 is_stmt 1 view .LVU3804 + 11102 0088 2046 mov r0, r4 + 11103 008a FFF7FEFF bl I2C_Flush_TXDR + 11104 .LVL786: +6625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11105 .loc 1 6625 5 view .LVU3805 +6625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 391 + + + 11106 .loc 1 6625 13 is_stmt 0 view .LVU3806 + 11107 008e 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 11108 0092 DBB2 uxtb r3, r3 +6625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11109 .loc 1 6625 8 view .LVU3807 + 11110 0094 602B cmp r3, #96 + 11111 0096 14D0 beq .L694 +6628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11112 .loc 1 6628 7 is_stmt 1 view .LVU3808 +6628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11113 .loc 1 6628 27 is_stmt 0 view .LVU3809 + 11114 0098 2023 movs r3, #32 + 11115 009a 84F84130 strb r3, [r4, #65] +6631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11116 .loc 1 6631 7 is_stmt 1 view .LVU3810 +6631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11117 .loc 1 6631 11 is_stmt 0 view .LVU3811 + 11118 009e 2368 ldr r3, [r4] + 11119 00a0 9A69 ldr r2, [r3, #24] +6631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11120 .loc 1 6631 10 view .LVU3812 + 11121 00a2 12F0200F tst r2, #32 + 11122 00a6 0CD0 beq .L694 +6633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11123 .loc 1 6633 9 is_stmt 1 view .LVU3813 +6633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11124 .loc 1 6633 13 is_stmt 0 view .LVU3814 + 11125 00a8 9A69 ldr r2, [r3, #24] +6633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11126 .loc 1 6633 12 view .LVU3815 + 11127 00aa 12F0100F tst r2, #16 + 11128 00ae 05D0 beq .L695 +6635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->ErrorCode |= HAL_I2C_ERROR_AF; + 11129 .loc 1 6635 11 is_stmt 1 view .LVU3816 + 11130 00b0 1022 movs r2, #16 + 11131 00b2 DA61 str r2, [r3, #28] +6636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11132 .loc 1 6636 11 view .LVU3817 +6636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11133 .loc 1 6636 27 is_stmt 0 view .LVU3818 + 11134 00b4 636C ldr r3, [r4, #68] + 11135 00b6 43F00403 orr r3, r3, #4 + 11136 00ba 6364 str r3, [r4, #68] + 11137 .L695: +6640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11138 .loc 1 6640 9 is_stmt 1 view .LVU3819 + 11139 00bc 2368 ldr r3, [r4] + 11140 00be 2022 movs r2, #32 + 11141 00c0 DA61 str r2, [r3, #28] + 11142 .L694: +6644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11143 .loc 1 6644 5 view .LVU3820 +6644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11144 .loc 1 6644 25 is_stmt 0 view .LVU3821 + 11145 00c2 0023 movs r3, #0 + 11146 00c4 6363 str r3, [r4, #52] + 11147 00c6 B5E7 b .L693 + ARM GAS /tmp/ccVyGVF6.s page 392 + + + 11148 .L698: +6676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11149 .loc 1 6676 7 is_stmt 1 view .LVU3822 + 11150 00c8 2046 mov r0, r4 + 11151 00ca FFF7FEFF bl I2C_TreatErrorCallback + 11152 .LVL787: + 11153 00ce 28E0 b .L691 + 11154 .LVL788: + 11155 .L696: +6680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) + 11156 .loc 1 6680 8 view .LVU3823 +6680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) + 11157 .loc 1 6680 17 is_stmt 0 view .LVU3824 + 11158 00d0 E26B ldr r2, [r4, #60] +6680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) + 11159 .loc 1 6680 11 view .LVU3825 + 11160 00d2 1AB3 cbz r2, .L700 +6680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) + 11161 .loc 1 6680 35 discriminator 1 view .LVU3826 + 11162 00d4 222B cmp r3, #34 + 11163 00d6 18BF it ne + 11164 00d8 122B cmpne r3, #18 + 11165 00da 1FD1 bne .L700 +6683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11166 .loc 1 6683 5 is_stmt 1 view .LVU3827 +6683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11167 .loc 1 6683 14 is_stmt 0 view .LVU3828 + 11168 00dc 2368 ldr r3, [r4] + 11169 .LVL789: +6683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11170 .loc 1 6683 24 view .LVU3829 + 11171 00de 1A68 ldr r2, [r3] +6683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11172 .loc 1 6683 8 view .LVU3830 + 11173 00e0 12F4004F tst r2, #32768 + 11174 00e4 03D0 beq .L701 +6685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11175 .loc 1 6685 7 is_stmt 1 view .LVU3831 +6685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11176 .loc 1 6685 27 is_stmt 0 view .LVU3832 + 11177 00e6 1A68 ldr r2, [r3] + 11178 00e8 22F40042 bic r2, r2, #32768 + 11179 00ec 1A60 str r2, [r3] + 11180 .L701: +6688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11181 .loc 1 6688 5 is_stmt 1 view .LVU3833 +6688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11182 .loc 1 6688 9 is_stmt 0 view .LVU3834 + 11183 00ee E06B ldr r0, [r4, #60] + 11184 00f0 FFF7FEFF bl HAL_DMA_GetState + 11185 .LVL790: +6688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11186 .loc 1 6688 8 view .LVU3835 + 11187 00f4 0128 cmp r0, #1 + 11188 00f6 0DD0 beq .L702 +6692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11189 .loc 1 6692 7 is_stmt 1 view .LVU3836 + ARM GAS /tmp/ccVyGVF6.s page 393 + + +6692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11190 .loc 1 6692 11 is_stmt 0 view .LVU3837 + 11191 00f8 E36B ldr r3, [r4, #60] +6692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11192 .loc 1 6692 39 view .LVU3838 + 11193 00fa 0C4A ldr r2, .L704+8 + 11194 00fc 1A65 str r2, [r3, #80] +6695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11195 .loc 1 6695 7 is_stmt 1 view .LVU3839 +6695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11196 .loc 1 6695 7 view .LVU3840 + 11197 00fe 0023 movs r3, #0 + 11198 0100 84F84030 strb r3, [r4, #64] +6695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11199 .loc 1 6695 7 view .LVU3841 +6698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11200 .loc 1 6698 7 view .LVU3842 +6698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11201 .loc 1 6698 11 is_stmt 0 view .LVU3843 + 11202 0104 E06B ldr r0, [r4, #60] + 11203 0106 FFF7FEFF bl HAL_DMA_Abort_IT + 11204 .LVL791: +6698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11205 .loc 1 6698 10 view .LVU3844 + 11206 010a 50B1 cbz r0, .L691 +6701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11207 .loc 1 6701 9 is_stmt 1 view .LVU3845 +6701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11208 .loc 1 6701 13 is_stmt 0 view .LVU3846 + 11209 010c E06B ldr r0, [r4, #60] +6701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11210 .loc 1 6701 21 view .LVU3847 + 11211 010e 036D ldr r3, [r0, #80] +6701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11212 .loc 1 6701 9 view .LVU3848 + 11213 0110 9847 blx r3 + 11214 .LVL792: + 11215 0112 06E0 b .L691 + 11216 .L702: +6706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11217 .loc 1 6706 7 is_stmt 1 view .LVU3849 + 11218 0114 2046 mov r0, r4 + 11219 0116 FFF7FEFF bl I2C_TreatErrorCallback + 11220 .LVL793: + 11221 011a 02E0 b .L691 + 11222 .LVL794: + 11223 .L700: +6711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11224 .loc 1 6711 5 view .LVU3850 + 11225 011c 2046 mov r0, r4 + 11226 011e FFF7FEFF bl I2C_TreatErrorCallback + 11227 .LVL795: + 11228 .L691: +6713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11229 .loc 1 6713 1 is_stmt 0 view .LVU3851 + 11230 0122 10BD pop {r4, pc} + 11231 .LVL796: + ARM GAS /tmp/ccVyGVF6.s page 394 + + + 11232 .L705: +6713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11233 .loc 1 6713 1 view .LVU3852 + 11234 .align 2 + 11235 .L704: + 11236 0124 0000FFFF .word -65536 + 11237 0128 00000000 .word I2C_Slave_ISR_IT + 11238 012c 00000000 .word I2C_DMAAbort + 11239 .cfi_endproc + 11240 .LFE204: + 11242 .section .text.I2C_ITSlaveCplt,"ax",%progbits + 11243 .align 1 + 11244 .syntax unified + 11245 .thumb + 11246 .thumb_func + 11247 .fpu fpv5-d16 + 11249 I2C_ITSlaveCplt: + 11250 .LVL797: + 11251 .LFB202: +6323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); + 11252 .loc 1 6323 1 is_stmt 1 view -0 + 11253 .cfi_startproc + 11254 @ args = 0, pretend = 0, frame = 0 + 11255 @ frame_needed = 0, uses_anonymous_args = 0 +6323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); + 11256 .loc 1 6323 1 is_stmt 0 view .LVU3854 + 11257 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 11258 .LCFI123: + 11259 .cfi_def_cfa_offset 24 + 11260 .cfi_offset 3, -24 + 11261 .cfi_offset 4, -20 + 11262 .cfi_offset 5, -16 + 11263 .cfi_offset 6, -12 + 11264 .cfi_offset 7, -8 + 11265 .cfi_offset 14, -4 + 11266 0002 0446 mov r4, r0 + 11267 0004 0D46 mov r5, r1 +6324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; + 11268 .loc 1 6324 3 is_stmt 1 view .LVU3855 +6324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; + 11269 .loc 1 6324 26 is_stmt 0 view .LVU3856 + 11270 0006 0268 ldr r2, [r0] +6324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; + 11271 .loc 1 6324 12 view .LVU3857 + 11272 0008 1668 ldr r6, [r2] + 11273 .LVL798: +6325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; + 11274 .loc 1 6325 3 is_stmt 1 view .LVU3858 +6326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State; + 11275 .loc 1 6326 3 view .LVU3859 +6326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate = hi2c->State; + 11276 .loc 1 6326 12 is_stmt 0 view .LVU3860 + 11277 000a C76A ldr r7, [r0, #44] + 11278 .LVL799: +6327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11279 .loc 1 6327 3 is_stmt 1 view .LVU3861 +6327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 395 + + + 11280 .loc 1 6327 24 is_stmt 0 view .LVU3862 + 11281 000c 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 11282 0010 DBB2 uxtb r3, r3 + 11283 .LVL800: +6330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11284 .loc 1 6330 3 is_stmt 1 view .LVU3863 + 11285 0012 2021 movs r1, #32 + 11286 .LVL801: +6330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11287 .loc 1 6330 3 is_stmt 0 view .LVU3864 + 11288 0014 D161 str r1, [r2, #28] +6333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11289 .loc 1 6333 3 is_stmt 1 view .LVU3865 +6333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11290 .loc 1 6333 6 is_stmt 0 view .LVU3866 + 11291 0016 292B cmp r3, #41 + 11292 0018 18BF it ne + 11293 001a 212B cmpne r3, #33 + 11294 001c 74D0 beq .L723 +6338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11295 .loc 1 6338 8 is_stmt 1 view .LVU3867 +6338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11296 .loc 1 6338 11 is_stmt 0 view .LVU3868 + 11297 001e 2A2B cmp r3, #42 + 11298 0020 18BF it ne + 11299 0022 222B cmpne r3, #34 + 11300 0024 77D0 beq .L724 +6343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11301 .loc 1 6343 8 is_stmt 1 view .LVU3869 +6343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11302 .loc 1 6343 11 is_stmt 0 view .LVU3870 + 11303 0026 282B cmp r3, #40 + 11304 0028 7CD0 beq .L725 + 11305 .LVL802: + 11306 .L708: +6351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11307 .loc 1 6351 3 is_stmt 1 view .LVU3871 +6354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11308 .loc 1 6354 3 view .LVU3872 +6354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11309 .loc 1 6354 7 is_stmt 0 view .LVU3873 + 11310 002a 2268 ldr r2, [r4] +6354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11311 .loc 1 6354 23 view .LVU3874 + 11312 002c 5368 ldr r3, [r2, #4] + 11313 002e 43F40043 orr r3, r3, #32768 + 11314 0032 5360 str r3, [r2, #4] +6357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11315 .loc 1 6357 3 is_stmt 1 view .LVU3875 + 11316 0034 2268 ldr r2, [r4] + 11317 0036 5368 ldr r3, [r2, #4] + 11318 0038 23F0FF73 bic r3, r3, #33423360 + 11319 003c 23F48B33 bic r3, r3, #71168 + 11320 0040 23F4FF73 bic r3, r3, #510 + 11321 0044 23F00103 bic r3, r3, #1 + 11322 0048 5360 str r3, [r2, #4] +6360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 396 + + + 11323 .loc 1 6360 3 view .LVU3876 + 11324 004a 2046 mov r0, r4 + 11325 004c FFF7FEFF bl I2C_Flush_TXDR + 11326 .LVL803: +6363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11327 .loc 1 6363 3 view .LVU3877 +6363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11328 .loc 1 6363 6 is_stmt 0 view .LVU3878 + 11329 0050 16F4804F tst r6, #16384 + 11330 0054 6DD0 beq .L710 +6366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11331 .loc 1 6366 5 is_stmt 1 view .LVU3879 +6366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11332 .loc 1 6366 9 is_stmt 0 view .LVU3880 + 11333 0056 2268 ldr r2, [r4] +6366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11334 .loc 1 6366 25 view .LVU3881 + 11335 0058 1368 ldr r3, [r2] + 11336 005a 23F48043 bic r3, r3, #16384 + 11337 005e 1360 str r3, [r2] +6368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11338 .loc 1 6368 5 is_stmt 1 view .LVU3882 +6368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11339 .loc 1 6368 13 is_stmt 0 view .LVU3883 + 11340 0060 A36B ldr r3, [r4, #56] +6368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11341 .loc 1 6368 8 view .LVU3884 + 11342 0062 1BB1 cbz r3, .L711 +6370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11343 .loc 1 6370 7 is_stmt 1 view .LVU3885 +6370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11344 .loc 1 6370 35 is_stmt 0 view .LVU3886 + 11345 0064 1B68 ldr r3, [r3] + 11346 0066 5B68 ldr r3, [r3, #4] +6370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11347 .loc 1 6370 25 view .LVU3887 + 11348 0068 9BB2 uxth r3, r3 +6370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11349 .loc 1 6370 23 view .LVU3888 + 11350 006a 6385 strh r3, [r4, #42] @ movhi + 11351 .L711: +6386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11352 .loc 1 6386 3 is_stmt 1 view .LVU3889 +6389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11353 .loc 1 6389 3 view .LVU3890 +6389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11354 .loc 1 6389 6 is_stmt 0 view .LVU3891 + 11355 006c 15F0040F tst r5, #4 + 11356 0070 11D0 beq .L712 +6392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11357 .loc 1 6392 5 is_stmt 1 view .LVU3892 +6392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11358 .loc 1 6392 16 is_stmt 0 view .LVU3893 + 11359 0072 25F00405 bic r5, r5, #4 + 11360 .LVL804: +6395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11361 .loc 1 6395 5 is_stmt 1 view .LVU3894 + ARM GAS /tmp/ccVyGVF6.s page 397 + + +6395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11362 .loc 1 6395 36 is_stmt 0 view .LVU3895 + 11363 0076 2368 ldr r3, [r4] +6395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11364 .loc 1 6395 46 view .LVU3896 + 11365 0078 5A6A ldr r2, [r3, #36] +6395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11366 .loc 1 6395 10 view .LVU3897 + 11367 007a 636A ldr r3, [r4, #36] +6395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11368 .loc 1 6395 21 view .LVU3898 + 11369 007c 1A70 strb r2, [r3] +6398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11370 .loc 1 6398 5 is_stmt 1 view .LVU3899 +6398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11371 .loc 1 6398 9 is_stmt 0 view .LVU3900 + 11372 007e 636A ldr r3, [r4, #36] +6398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11373 .loc 1 6398 19 view .LVU3901 + 11374 0080 0133 adds r3, r3, #1 + 11375 0082 6362 str r3, [r4, #36] +6400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11376 .loc 1 6400 5 is_stmt 1 view .LVU3902 +6400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11377 .loc 1 6400 14 is_stmt 0 view .LVU3903 + 11378 0084 238D ldrh r3, [r4, #40] +6400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11379 .loc 1 6400 8 view .LVU3904 + 11380 0086 33B1 cbz r3, .L712 +6402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 11381 .loc 1 6402 7 is_stmt 1 view .LVU3905 +6402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 11382 .loc 1 6402 21 is_stmt 0 view .LVU3906 + 11383 0088 013B subs r3, r3, #1 + 11384 008a 2385 strh r3, [r4, #40] @ movhi +6403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11385 .loc 1 6403 7 is_stmt 1 view .LVU3907 +6403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11386 .loc 1 6403 11 is_stmt 0 view .LVU3908 + 11387 008c 638D ldrh r3, [r4, #42] + 11388 008e 9BB2 uxth r3, r3 +6403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11389 .loc 1 6403 22 view .LVU3909 + 11390 0090 013B subs r3, r3, #1 + 11391 0092 9BB2 uxth r3, r3 + 11392 0094 6385 strh r3, [r4, #42] @ movhi + 11393 .L712: +6408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11394 .loc 1 6408 3 is_stmt 1 view .LVU3910 +6408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11395 .loc 1 6408 11 is_stmt 0 view .LVU3911 + 11396 0096 638D ldrh r3, [r4, #42] + 11397 0098 9BB2 uxth r3, r3 +6408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11398 .loc 1 6408 6 view .LVU3912 + 11399 009a 1BB1 cbz r3, .L713 +6411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 398 + + + 11400 .loc 1 6411 5 is_stmt 1 view .LVU3913 +6411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11401 .loc 1 6411 21 is_stmt 0 view .LVU3914 + 11402 009c 636C ldr r3, [r4, #68] + 11403 009e 43F00403 orr r3, r3, #4 + 11404 00a2 6364 str r3, [r4, #68] + 11405 .L713: +6414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_IT_NACKI) != RESET)) + 11406 .loc 1 6414 3 is_stmt 1 view .LVU3915 +6414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_IT_NACKI) != RESET)) + 11407 .loc 1 6414 6 is_stmt 0 view .LVU3916 + 11408 00a4 15F0100F tst r5, #16 + 11409 00a8 13D0 beq .L714 +6414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_IT_NACKI) != RESET)) + 11410 .loc 1 6414 58 discriminator 1 view .LVU3917 + 11411 00aa 16F0100F tst r6, #16 + 11412 00ae 10D0 beq .L714 +6421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11413 .loc 1 6421 5 is_stmt 1 view .LVU3918 +6421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11414 .loc 1 6421 13 is_stmt 0 view .LVU3919 + 11415 00b0 638D ldrh r3, [r4, #42] + 11416 00b2 9BB2 uxth r3, r3 +6421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11417 .loc 1 6421 8 view .LVU3920 + 11418 00b4 002B cmp r3, #0 + 11419 00b6 61D1 bne .L715 +6423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 11420 .loc 1 6423 7 is_stmt 1 view .LVU3921 +6423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 11421 .loc 1 6423 16 is_stmt 0 view .LVU3922 + 11422 00b8 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 11423 00bc DBB2 uxtb r3, r3 +6423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 11424 .loc 1 6423 10 view .LVU3923 + 11425 00be 282B cmp r3, #40 + 11426 00c0 47D0 beq .L726 + 11427 .L716: +6430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11428 .loc 1 6430 12 is_stmt 1 view .LVU3924 +6430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11429 .loc 1 6430 21 is_stmt 0 view .LVU3925 + 11430 00c2 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 11431 00c6 DBB2 uxtb r3, r3 +6430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11432 .loc 1 6430 15 view .LVU3926 + 11433 00c8 292B cmp r3, #41 + 11434 00ca 4AD0 beq .L727 + 11435 .L717: +6445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11436 .loc 1 6445 9 is_stmt 1 view .LVU3927 + 11437 00cc 2368 ldr r3, [r4] + 11438 00ce 1022 movs r2, #16 + 11439 00d0 DA61 str r2, [r3, #28] + 11440 .L714: +6465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 11441 .loc 1 6465 3 view .LVU3928 + ARM GAS /tmp/ccVyGVF6.s page 399 + + +6465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferISR = NULL; + 11442 .loc 1 6465 14 is_stmt 0 view .LVU3929 + 11443 00d2 0023 movs r3, #0 + 11444 00d4 84F84230 strb r3, [r4, #66] +6466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11445 .loc 1 6466 3 is_stmt 1 view .LVU3930 +6466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11446 .loc 1 6466 17 is_stmt 0 view .LVU3931 + 11447 00d8 6363 str r3, [r4, #52] +6468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11448 .loc 1 6468 3 is_stmt 1 view .LVU3932 +6468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11449 .loc 1 6468 11 is_stmt 0 view .LVU3933 + 11450 00da 636C ldr r3, [r4, #68] +6468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11451 .loc 1 6468 6 view .LVU3934 + 11452 00dc 002B cmp r3, #0 + 11453 00de 5ED1 bne .L728 +6480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11454 .loc 1 6480 8 is_stmt 1 view .LVU3935 +6480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11455 .loc 1 6480 16 is_stmt 0 view .LVU3936 + 11456 00e0 E36A ldr r3, [r4, #44] +6480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11457 .loc 1 6480 11 view .LVU3937 + 11458 00e2 13F5803F cmn r3, #65536 + 11459 00e6 68D1 bne .L729 +6500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11460 .loc 1 6500 8 is_stmt 1 view .LVU3938 +6500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11461 .loc 1 6500 16 is_stmt 0 view .LVU3939 + 11462 00e8 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 11463 00ec DBB2 uxtb r3, r3 +6500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11464 .loc 1 6500 11 view .LVU3940 + 11465 00ee 222B cmp r3, #34 + 11466 00f0 73D0 beq .L730 +6517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 11467 .loc 1 6517 5 is_stmt 1 view .LVU3941 +6517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 11468 .loc 1 6517 17 is_stmt 0 view .LVU3942 + 11469 00f2 2023 movs r3, #32 + 11470 00f4 84F84130 strb r3, [r4, #65] +6518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11471 .loc 1 6518 5 is_stmt 1 view .LVU3943 +6518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11472 .loc 1 6518 25 is_stmt 0 view .LVU3944 + 11473 00f8 0023 movs r3, #0 + 11474 00fa 2363 str r3, [r4, #48] +6521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11475 .loc 1 6521 5 is_stmt 1 view .LVU3945 +6521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11476 .loc 1 6521 5 view .LVU3946 + 11477 00fc 84F84030 strb r3, [r4, #64] +6521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11478 .loc 1 6521 5 view .LVU3947 +6527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + ARM GAS /tmp/ccVyGVF6.s page 400 + + + 11479 .loc 1 6527 5 view .LVU3948 + 11480 0100 2046 mov r0, r4 + 11481 0102 FFF7FEFF bl HAL_I2C_SlaveTxCpltCallback + 11482 .LVL805: +6530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11483 .loc 1 6530 1 is_stmt 0 view .LVU3949 + 11484 0106 67E0 b .L706 + 11485 .LVL806: + 11486 .L723: +6335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; + 11487 .loc 1 6335 5 is_stmt 1 view .LVU3950 + 11488 0108 48F20101 movw r1, #32769 + 11489 010c FFF7FEFF bl I2C_Disable_IRQ + 11490 .LVL807: +6336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11491 .loc 1 6336 5 view .LVU3951 +6336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11492 .loc 1 6336 25 is_stmt 0 view .LVU3952 + 11493 0110 2123 movs r3, #33 + 11494 0112 2363 str r3, [r4, #48] + 11495 0114 89E7 b .L708 + 11496 .LVL808: + 11497 .L724: +6340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; + 11498 .loc 1 6340 5 is_stmt 1 view .LVU3953 + 11499 0116 48F20201 movw r1, #32770 + 11500 011a FFF7FEFF bl I2C_Disable_IRQ + 11501 .LVL809: +6341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11502 .loc 1 6341 5 view .LVU3954 +6341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11503 .loc 1 6341 25 is_stmt 0 view .LVU3955 + 11504 011e 2223 movs r3, #34 + 11505 0120 2363 str r3, [r4, #48] + 11506 0122 82E7 b .L708 + 11507 .LVL810: + 11508 .L725: +6345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 11509 .loc 1 6345 5 is_stmt 1 view .LVU3956 + 11510 0124 48F20301 movw r1, #32771 + 11511 0128 FFF7FEFF bl I2C_Disable_IRQ + 11512 .LVL811: +6346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11513 .loc 1 6346 5 view .LVU3957 +6346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11514 .loc 1 6346 25 is_stmt 0 view .LVU3958 + 11515 012c 0023 movs r3, #0 + 11516 012e 2363 str r3, [r4, #48] + 11517 0130 7BE7 b .L708 + 11518 .L710: +6373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11519 .loc 1 6373 8 is_stmt 1 view .LVU3959 +6373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11520 .loc 1 6373 11 is_stmt 0 view .LVU3960 + 11521 0132 16F4004F tst r6, #32768 + 11522 0136 99D0 beq .L711 +6376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 401 + + + 11523 .loc 1 6376 5 is_stmt 1 view .LVU3961 +6376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11524 .loc 1 6376 9 is_stmt 0 view .LVU3962 + 11525 0138 2268 ldr r2, [r4] +6376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11526 .loc 1 6376 25 view .LVU3963 + 11527 013a 1368 ldr r3, [r2] + 11528 013c 23F40043 bic r3, r3, #32768 + 11529 0140 1360 str r3, [r2] +6378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11530 .loc 1 6378 5 is_stmt 1 view .LVU3964 +6378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11531 .loc 1 6378 13 is_stmt 0 view .LVU3965 + 11532 0142 E36B ldr r3, [r4, #60] +6378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11533 .loc 1 6378 8 view .LVU3966 + 11534 0144 002B cmp r3, #0 + 11535 0146 91D0 beq .L711 +6380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11536 .loc 1 6380 7 is_stmt 1 view .LVU3967 +6380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11537 .loc 1 6380 35 is_stmt 0 view .LVU3968 + 11538 0148 1B68 ldr r3, [r3] + 11539 014a 5B68 ldr r3, [r3, #4] +6380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11540 .loc 1 6380 25 view .LVU3969 + 11541 014c 9BB2 uxth r3, r3 +6380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11542 .loc 1 6380 23 view .LVU3970 + 11543 014e 6385 strh r3, [r4, #42] @ movhi + 11544 0150 8CE7 b .L711 + 11545 .LVL812: + 11546 .L726: +6423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 11547 .loc 1 6423 49 discriminator 1 view .LVU3971 + 11548 0152 B7F1007F cmp r7, #33554432 + 11549 0156 B4D1 bne .L716 +6428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11550 .loc 1 6428 9 is_stmt 1 view .LVU3972 + 11551 0158 2946 mov r1, r5 + 11552 015a 2046 mov r0, r4 + 11553 015c FFF7FEFF bl I2C_ITListenCplt + 11554 .LVL813: + 11555 0160 B7E7 b .L714 + 11556 .L727: +6430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11557 .loc 1 6430 62 is_stmt 0 discriminator 1 view .LVU3973 + 11558 0162 17F5803F cmn r7, #65536 + 11559 0166 B1D0 beq .L717 +6433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11560 .loc 1 6433 9 is_stmt 1 view .LVU3974 + 11561 0168 2368 ldr r3, [r4] + 11562 016a 1022 movs r2, #16 + 11563 016c DA61 str r2, [r3, #28] +6436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11564 .loc 1 6436 9 view .LVU3975 + 11565 016e 2046 mov r0, r4 + ARM GAS /tmp/ccVyGVF6.s page 402 + + + 11566 0170 FFF7FEFF bl I2C_Flush_TXDR + 11567 .LVL814: +6440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11568 .loc 1 6440 9 view .LVU3976 + 11569 0174 2046 mov r0, r4 + 11570 0176 FFF7FEFF bl I2C_ITSlaveSeqCplt + 11571 .LVL815: + 11572 017a AAE7 b .L714 + 11573 .L715: +6452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11574 .loc 1 6452 7 view .LVU3977 + 11575 017c 2368 ldr r3, [r4] + 11576 017e 1022 movs r2, #16 + 11577 0180 DA61 str r2, [r3, #28] +6455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11578 .loc 1 6455 7 view .LVU3978 +6455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11579 .loc 1 6455 23 is_stmt 0 view .LVU3979 + 11580 0182 636C ldr r3, [r4, #68] + 11581 0184 43F00403 orr r3, r3, #4 + 11582 0188 6364 str r3, [r4, #68] +6457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11583 .loc 1 6457 7 is_stmt 1 view .LVU3980 +6457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11584 .loc 1 6457 10 is_stmt 0 view .LVU3981 + 11585 018a B7F1807F cmp r7, #16777216 + 11586 018e 18BF it ne + 11587 0190 002F cmpne r7, #0 + 11588 0192 9ED1 bne .L714 +6460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11589 .loc 1 6460 9 is_stmt 1 view .LVU3982 + 11590 0194 616C ldr r1, [r4, #68] + 11591 0196 2046 mov r0, r4 + 11592 0198 FFF7FEFF bl I2C_ITError + 11593 .LVL816: + 11594 019c 99E7 b .L714 + 11595 .L728: +6471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11596 .loc 1 6471 5 view .LVU3983 + 11597 019e 616C ldr r1, [r4, #68] + 11598 01a0 2046 mov r0, r4 + 11599 01a2 FFF7FEFF bl I2C_ITError + 11600 .LVL817: +6474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11601 .loc 1 6474 5 view .LVU3984 +6474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11602 .loc 1 6474 13 is_stmt 0 view .LVU3985 + 11603 01a6 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 11604 01aa DBB2 uxtb r3, r3 +6474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11605 .loc 1 6474 8 view .LVU3986 + 11606 01ac 282B cmp r3, #40 + 11607 01ae 13D1 bne .L706 +6477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11608 .loc 1 6477 7 is_stmt 1 view .LVU3987 + 11609 01b0 2946 mov r1, r5 + 11610 01b2 2046 mov r0, r4 + ARM GAS /tmp/ccVyGVF6.s page 403 + + + 11611 01b4 FFF7FEFF bl I2C_ITListenCplt + 11612 .LVL818: + 11613 01b8 0EE0 b .L706 + 11614 .L729: +6483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11615 .loc 1 6483 5 view .LVU3988 + 11616 01ba 2046 mov r0, r4 + 11617 01bc FFF7FEFF bl I2C_ITSlaveSeqCplt + 11618 .LVL819: +6485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 11619 .loc 1 6485 5 view .LVU3989 +6485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->State = HAL_I2C_STATE_READY; + 11620 .loc 1 6485 23 is_stmt 0 view .LVU3990 + 11621 01c0 0B4B ldr r3, .L731 + 11622 01c2 E362 str r3, [r4, #44] +6486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 11623 .loc 1 6486 5 is_stmt 1 view .LVU3991 +6486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 11624 .loc 1 6486 17 is_stmt 0 view .LVU3992 + 11625 01c4 2023 movs r3, #32 + 11626 01c6 84F84130 strb r3, [r4, #65] +6487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11627 .loc 1 6487 5 is_stmt 1 view .LVU3993 +6487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11628 .loc 1 6487 25 is_stmt 0 view .LVU3994 + 11629 01ca 0023 movs r3, #0 + 11630 01cc 2363 str r3, [r4, #48] +6490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11631 .loc 1 6490 5 is_stmt 1 view .LVU3995 +6490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11632 .loc 1 6490 5 view .LVU3996 + 11633 01ce 84F84030 strb r3, [r4, #64] +6490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11634 .loc 1 6490 5 view .LVU3997 +6496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 11635 .loc 1 6496 5 view .LVU3998 + 11636 01d2 2046 mov r0, r4 + 11637 01d4 FFF7FEFF bl HAL_I2C_ListenCpltCallback + 11638 .LVL820: + 11639 .L706: +6530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11640 .loc 1 6530 1 is_stmt 0 view .LVU3999 + 11641 01d8 F8BD pop {r3, r4, r5, r6, r7, pc} + 11642 .LVL821: + 11643 .L730: +6502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 11644 .loc 1 6502 5 is_stmt 1 view .LVU4000 +6502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 11645 .loc 1 6502 17 is_stmt 0 view .LVU4001 + 11646 01da 2023 movs r3, #32 + 11647 01dc 84F84130 strb r3, [r4, #65] +6503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11648 .loc 1 6503 5 is_stmt 1 view .LVU4002 +6503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11649 .loc 1 6503 25 is_stmt 0 view .LVU4003 + 11650 01e0 0023 movs r3, #0 + 11651 01e2 2363 str r3, [r4, #48] + ARM GAS /tmp/ccVyGVF6.s page 404 + + +6506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11652 .loc 1 6506 5 is_stmt 1 view .LVU4004 +6506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11653 .loc 1 6506 5 view .LVU4005 + 11654 01e4 84F84030 strb r3, [r4, #64] +6506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11655 .loc 1 6506 5 view .LVU4006 +6512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 11656 .loc 1 6512 5 view .LVU4007 + 11657 01e8 2046 mov r0, r4 + 11658 01ea FFF7FEFF bl HAL_I2C_SlaveRxCpltCallback + 11659 .LVL822: + 11660 01ee F3E7 b .L706 + 11661 .L732: + 11662 .align 2 + 11663 .L731: + 11664 01f0 0000FFFF .word -65536 + 11665 .cfi_endproc + 11666 .LFE202: + 11668 .section .text.I2C_Slave_ISR_IT,"ax",%progbits + 11669 .align 1 + 11670 .syntax unified + 11671 .thumb + 11672 .thumb_func + 11673 .fpu fpv5-d16 + 11675 I2C_Slave_ISR_IT: + 11676 .LVL823: + 11677 .LFB192: +5259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; + 11678 .loc 1 5259 1 view -0 + 11679 .cfi_startproc + 11680 @ args = 0, pretend = 0, frame = 0 + 11681 @ frame_needed = 0, uses_anonymous_args = 0 +5259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; + 11682 .loc 1 5259 1 is_stmt 0 view .LVU4009 + 11683 0000 10B5 push {r4, lr} + 11684 .LCFI124: + 11685 .cfi_def_cfa_offset 8 + 11686 .cfi_offset 4, -8 + 11687 .cfi_offset 14, -4 + 11688 0002 0446 mov r4, r0 +5260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; + 11689 .loc 1 5260 3 is_stmt 1 view .LVU4010 +5260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; + 11690 .loc 1 5260 12 is_stmt 0 view .LVU4011 + 11691 0004 C06A ldr r0, [r0, #44] + 11692 .LVL824: +5261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11693 .loc 1 5261 3 is_stmt 1 view .LVU4012 +5264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11694 .loc 1 5264 3 view .LVU4013 +5264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11695 .loc 1 5264 3 view .LVU4014 + 11696 0006 94F84030 ldrb r3, [r4, #64] @ zero_extendqisi2 + 11697 000a 012B cmp r3, #1 + 11698 000c 00F09B80 beq .L745 +5264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + ARM GAS /tmp/ccVyGVF6.s page 405 + + + 11699 .loc 1 5264 3 discriminator 2 view .LVU4015 + 11700 0010 0123 movs r3, #1 + 11701 0012 84F84030 strb r3, [r4, #64] +5264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11702 .loc 1 5264 3 discriminator 2 view .LVU4016 +5267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 11703 .loc 1 5267 3 discriminator 2 view .LVU4017 +5267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 11704 .loc 1 5267 6 is_stmt 0 discriminator 2 view .LVU4018 + 11705 0016 11F0200F tst r1, #32 + 11706 001a 02D0 beq .L735 +5267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 11707 .loc 1 5267 61 discriminator 1 view .LVU4019 + 11708 001c 12F0200F tst r2, #32 + 11709 0020 16D1 bne .L747 + 11710 .L735: +5273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 11711 .loc 1 5273 8 is_stmt 1 view .LVU4020 +5273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 11712 .loc 1 5273 11 is_stmt 0 view .LVU4021 + 11713 0022 11F0100F tst r1, #16 + 11714 0026 3FD0 beq .L737 +5273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 11715 .loc 1 5273 63 discriminator 1 view .LVU4022 + 11716 0028 12F0100F tst r2, #16 + 11717 002c 3CD0 beq .L737 +5280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11718 .loc 1 5280 5 is_stmt 1 view .LVU4023 +5280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11719 .loc 1 5280 13 is_stmt 0 view .LVU4024 + 11720 002e 638D ldrh r3, [r4, #42] + 11721 0030 9BB2 uxth r3, r3 +5280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11722 .loc 1 5280 8 view .LVU4025 + 11723 0032 43BB cbnz r3, .L738 +5282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 11724 .loc 1 5282 7 is_stmt 1 view .LVU4026 +5282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 11725 .loc 1 5282 16 is_stmt 0 view .LVU4027 + 11726 0034 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 11727 0038 DBB2 uxtb r3, r3 +5282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 11728 .loc 1 5282 10 view .LVU4028 + 11729 003a 282B cmp r3, #40 + 11730 003c 0FD0 beq .L748 + 11731 .L739: +5289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11732 .loc 1 5289 12 is_stmt 1 view .LVU4029 +5289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11733 .loc 1 5289 21 is_stmt 0 view .LVU4030 + 11734 003e 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 11735 0042 DBB2 uxtb r3, r3 +5289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11736 .loc 1 5289 15 view .LVU4031 + 11737 0044 292B cmp r3, #41 + 11738 0046 11D0 beq .L749 + 11739 .L740: + ARM GAS /tmp/ccVyGVF6.s page 406 + + +5304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11740 .loc 1 5304 9 is_stmt 1 view .LVU4032 + 11741 0048 2368 ldr r3, [r4] + 11742 004a 1022 movs r2, #16 + 11743 .LVL825: +5304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11744 .loc 1 5304 9 is_stmt 0 view .LVU4033 + 11745 004c DA61 str r2, [r3, #28] + 11746 004e 02E0 b .L736 + 11747 .LVL826: + 11748 .L747: +5271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11749 .loc 1 5271 5 is_stmt 1 view .LVU4034 + 11750 0050 2046 mov r0, r4 + 11751 .LVL827: +5271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11752 .loc 1 5271 5 is_stmt 0 view .LVU4035 + 11753 0052 FFF7FEFF bl I2C_ITSlaveCplt + 11754 .LVL828: + 11755 .L736: +5381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11756 .loc 1 5381 3 is_stmt 1 view .LVU4036 +5384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11757 .loc 1 5384 3 view .LVU4037 +5384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11758 .loc 1 5384 3 view .LVU4038 + 11759 0056 0020 movs r0, #0 + 11760 0058 84F84000 strb r0, [r4, #64] +5384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11761 .loc 1 5384 3 view .LVU4039 +5386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11762 .loc 1 5386 3 view .LVU4040 + 11763 .L734: +5387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11764 .loc 1 5387 1 is_stmt 0 view .LVU4041 + 11765 005c 10BD pop {r4, pc} + 11766 .LVL829: + 11767 .L748: +5282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 11768 .loc 1 5282 49 discriminator 1 view .LVU4042 + 11769 005e B0F1007F cmp r0, #33554432 + 11770 0062 ECD1 bne .L739 +5287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11771 .loc 1 5287 9 is_stmt 1 view .LVU4043 + 11772 0064 2046 mov r0, r4 + 11773 .LVL830: +5287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11774 .loc 1 5287 9 is_stmt 0 view .LVU4044 + 11775 0066 FFF7FEFF bl I2C_ITListenCplt + 11776 .LVL831: +5287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11777 .loc 1 5287 9 view .LVU4045 + 11778 006a F4E7 b .L736 + 11779 .LVL832: + 11780 .L749: +5289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11781 .loc 1 5289 62 discriminator 1 view .LVU4046 + ARM GAS /tmp/ccVyGVF6.s page 407 + + + 11782 006c 10F5803F cmn r0, #65536 + 11783 0070 EAD0 beq .L740 +5292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11784 .loc 1 5292 9 is_stmt 1 view .LVU4047 + 11785 0072 2368 ldr r3, [r4] + 11786 0074 1022 movs r2, #16 + 11787 .LVL833: +5292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11788 .loc 1 5292 9 is_stmt 0 view .LVU4048 + 11789 0076 DA61 str r2, [r3, #28] +5295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11790 .loc 1 5295 9 is_stmt 1 view .LVU4049 + 11791 0078 2046 mov r0, r4 + 11792 .LVL834: +5295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11793 .loc 1 5295 9 is_stmt 0 view .LVU4050 + 11794 007a FFF7FEFF bl I2C_Flush_TXDR + 11795 .LVL835: +5299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11796 .loc 1 5299 9 is_stmt 1 view .LVU4051 + 11797 007e 2046 mov r0, r4 + 11798 0080 FFF7FEFF bl I2C_ITSlaveSeqCplt + 11799 .LVL836: + 11800 0084 E7E7 b .L736 + 11801 .LVL837: + 11802 .L738: +5311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11803 .loc 1 5311 7 view .LVU4052 + 11804 0086 2368 ldr r3, [r4] + 11805 0088 1022 movs r2, #16 + 11806 .LVL838: +5311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11807 .loc 1 5311 7 is_stmt 0 view .LVU4053 + 11808 008a DA61 str r2, [r3, #28] +5314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11809 .loc 1 5314 7 is_stmt 1 view .LVU4054 +5314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11810 .loc 1 5314 23 is_stmt 0 view .LVU4055 + 11811 008c 636C ldr r3, [r4, #68] + 11812 008e 43F00403 orr r3, r3, #4 + 11813 0092 6364 str r3, [r4, #68] +5316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11814 .loc 1 5316 7 is_stmt 1 view .LVU4056 +5316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11815 .loc 1 5316 10 is_stmt 0 view .LVU4057 + 11816 0094 B0F1807F cmp r0, #16777216 + 11817 0098 18BF it ne + 11818 009a 0028 cmpne r0, #0 + 11819 009c DBD1 bne .L736 +5319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11820 .loc 1 5319 9 is_stmt 1 view .LVU4058 + 11821 009e 616C ldr r1, [r4, #68] + 11822 .LVL839: +5319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11823 .loc 1 5319 9 is_stmt 0 view .LVU4059 + 11824 00a0 2046 mov r0, r4 + 11825 .LVL840: + ARM GAS /tmp/ccVyGVF6.s page 408 + + +5319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11826 .loc 1 5319 9 view .LVU4060 + 11827 00a2 FFF7FEFF bl I2C_ITError + 11828 .LVL841: + 11829 00a6 D6E7 b .L736 + 11830 .LVL842: + 11831 .L737: +5323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + 11832 .loc 1 5323 8 is_stmt 1 view .LVU4061 +5323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + 11833 .loc 1 5323 11 is_stmt 0 view .LVU4062 + 11834 00a8 11F0040F tst r1, #4 + 11835 00ac 1FD0 beq .L741 +5323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + 11836 .loc 1 5323 65 discriminator 1 view .LVU4063 + 11837 00ae 12F0040F tst r2, #4 + 11838 00b2 1CD0 beq .L741 +5326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11839 .loc 1 5326 5 is_stmt 1 view .LVU4064 +5326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11840 .loc 1 5326 13 is_stmt 0 view .LVU4065 + 11841 00b4 638D ldrh r3, [r4, #42] + 11842 00b6 9BB2 uxth r3, r3 +5326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11843 .loc 1 5326 8 view .LVU4066 + 11844 00b8 73B1 cbz r3, .L742 +5329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11845 .loc 1 5329 7 is_stmt 1 view .LVU4067 +5329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11846 .loc 1 5329 38 is_stmt 0 view .LVU4068 + 11847 00ba 2368 ldr r3, [r4] +5329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11848 .loc 1 5329 48 view .LVU4069 + 11849 00bc 5A6A ldr r2, [r3, #36] + 11850 .LVL843: +5329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11851 .loc 1 5329 12 view .LVU4070 + 11852 00be 636A ldr r3, [r4, #36] +5329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11853 .loc 1 5329 23 view .LVU4071 + 11854 00c0 1A70 strb r2, [r3] +5332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11855 .loc 1 5332 7 is_stmt 1 view .LVU4072 +5332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11856 .loc 1 5332 11 is_stmt 0 view .LVU4073 + 11857 00c2 636A ldr r3, [r4, #36] +5332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11858 .loc 1 5332 21 view .LVU4074 + 11859 00c4 0133 adds r3, r3, #1 + 11860 00c6 6362 str r3, [r4, #36] +5334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 11861 .loc 1 5334 7 is_stmt 1 view .LVU4075 +5334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 11862 .loc 1 5334 11 is_stmt 0 view .LVU4076 + 11863 00c8 238D ldrh r3, [r4, #40] +5334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 11864 .loc 1 5334 21 view .LVU4077 + ARM GAS /tmp/ccVyGVF6.s page 409 + + + 11865 00ca 013B subs r3, r3, #1 + 11866 00cc 2385 strh r3, [r4, #40] @ movhi +5335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11867 .loc 1 5335 7 is_stmt 1 view .LVU4078 +5335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11868 .loc 1 5335 11 is_stmt 0 view .LVU4079 + 11869 00ce 638D ldrh r3, [r4, #42] + 11870 00d0 9BB2 uxth r3, r3 +5335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11871 .loc 1 5335 22 view .LVU4080 + 11872 00d2 013B subs r3, r3, #1 + 11873 00d4 9BB2 uxth r3, r3 + 11874 00d6 6385 strh r3, [r4, #42] @ movhi + 11875 .L742: +5338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) + 11876 .loc 1 5338 5 is_stmt 1 view .LVU4081 +5338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) + 11877 .loc 1 5338 14 is_stmt 0 view .LVU4082 + 11878 00d8 638D ldrh r3, [r4, #42] + 11879 00da 9BB2 uxth r3, r3 +5338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) + 11880 .loc 1 5338 8 view .LVU4083 + 11881 00dc 002B cmp r3, #0 + 11882 00de BAD1 bne .L736 +5338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (tmpoptions != I2C_NO_OPTION_FRAME)) + 11883 .loc 1 5338 33 discriminator 1 view .LVU4084 + 11884 00e0 10F5803F cmn r0, #65536 + 11885 00e4 B7D0 beq .L736 +5342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11886 .loc 1 5342 7 is_stmt 1 view .LVU4085 + 11887 00e6 2046 mov r0, r4 + 11888 .LVL844: +5342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11889 .loc 1 5342 7 is_stmt 0 view .LVU4086 + 11890 00e8 FFF7FEFF bl I2C_ITSlaveSeqCplt + 11891 .LVL845: +5342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11892 .loc 1 5342 7 view .LVU4087 + 11893 00ec B3E7 b .L736 + 11894 .LVL846: + 11895 .L741: +5345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + 11896 .loc 1 5345 8 is_stmt 1 view .LVU4088 +5345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + 11897 .loc 1 5345 11 is_stmt 0 view .LVU4089 + 11898 00ee 11F0080F tst r1, #8 + 11899 00f2 02D0 beq .L743 +5345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + 11900 .loc 1 5345 65 discriminator 1 view .LVU4090 + 11901 00f4 12F0080F tst r2, #8 + 11902 00f8 18D1 bne .L750 + 11903 .L743: +5350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + 11904 .loc 1 5350 8 is_stmt 1 view .LVU4091 +5350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + 11905 .loc 1 5350 11 is_stmt 0 view .LVU4092 + 11906 00fa 11F0020F tst r1, #2 + ARM GAS /tmp/ccVyGVF6.s page 410 + + + 11907 00fe AAD0 beq .L736 +5350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + 11908 .loc 1 5350 65 discriminator 1 view .LVU4093 + 11909 0100 12F0020F tst r2, #2 + 11910 0104 A7D0 beq .L736 +5357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11911 .loc 1 5357 5 is_stmt 1 view .LVU4094 +5357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11912 .loc 1 5357 13 is_stmt 0 view .LVU4095 + 11913 0106 638D ldrh r3, [r4, #42] + 11914 0108 9BB2 uxth r3, r3 +5357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11915 .loc 1 5357 8 view .LVU4096 + 11916 010a 9BB1 cbz r3, .L744 +5360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11917 .loc 1 5360 7 is_stmt 1 view .LVU4097 +5360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11918 .loc 1 5360 35 is_stmt 0 view .LVU4098 + 11919 010c 626A ldr r2, [r4, #36] + 11920 .LVL847: +5360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11921 .loc 1 5360 11 view .LVU4099 + 11922 010e 2368 ldr r3, [r4] +5360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11923 .loc 1 5360 30 view .LVU4100 + 11924 0110 1278 ldrb r2, [r2] @ zero_extendqisi2 +5360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11925 .loc 1 5360 28 view .LVU4101 + 11926 0112 9A62 str r2, [r3, #40] +5363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11927 .loc 1 5363 7 is_stmt 1 view .LVU4102 +5363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11928 .loc 1 5363 11 is_stmt 0 view .LVU4103 + 11929 0114 636A ldr r3, [r4, #36] +5363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11930 .loc 1 5363 21 view .LVU4104 + 11931 0116 0133 adds r3, r3, #1 + 11932 0118 6362 str r3, [r4, #36] +5365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 11933 .loc 1 5365 7 is_stmt 1 view .LVU4105 +5365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 11934 .loc 1 5365 11 is_stmt 0 view .LVU4106 + 11935 011a 638D ldrh r3, [r4, #42] + 11936 011c 9BB2 uxth r3, r3 +5365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize--; + 11937 .loc 1 5365 22 view .LVU4107 + 11938 011e 013B subs r3, r3, #1 + 11939 0120 9BB2 uxth r3, r3 + 11940 0122 6385 strh r3, [r4, #42] @ movhi +5366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11941 .loc 1 5366 7 is_stmt 1 view .LVU4108 +5366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11942 .loc 1 5366 11 is_stmt 0 view .LVU4109 + 11943 0124 238D ldrh r3, [r4, #40] +5366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11944 .loc 1 5366 21 view .LVU4110 + 11945 0126 013B subs r3, r3, #1 + ARM GAS /tmp/ccVyGVF6.s page 411 + + + 11946 0128 2385 strh r3, [r4, #40] @ movhi + 11947 012a 94E7 b .L736 + 11948 .LVL848: + 11949 .L750: +5348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11950 .loc 1 5348 5 is_stmt 1 view .LVU4111 + 11951 012c 2046 mov r0, r4 + 11952 .LVL849: +5348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11953 .loc 1 5348 5 is_stmt 0 view .LVU4112 + 11954 012e FFF7FEFF bl I2C_ITAddrCplt + 11955 .LVL850: +5348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11956 .loc 1 5348 5 view .LVU4113 + 11957 0132 90E7 b .L736 + 11958 .LVL851: + 11959 .L744: +5370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11960 .loc 1 5370 7 is_stmt 1 view .LVU4114 +5370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 11961 .loc 1 5370 10 is_stmt 0 view .LVU4115 + 11962 0134 0028 cmp r0, #0 + 11963 0136 18BF it ne + 11964 0138 B0F1807F cmpne r0, #16777216 + 11965 013c 8BD1 bne .L736 +5374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11966 .loc 1 5374 9 is_stmt 1 view .LVU4116 + 11967 013e 2046 mov r0, r4 + 11968 .LVL852: +5374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11969 .loc 1 5374 9 is_stmt 0 view .LVU4117 + 11970 0140 FFF7FEFF bl I2C_ITSlaveSeqCplt + 11971 .LVL853: +5374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 11972 .loc 1 5374 9 view .LVU4118 + 11973 0144 87E7 b .L736 + 11974 .LVL854: + 11975 .L745: +5264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11976 .loc 1 5264 3 view .LVU4119 + 11977 0146 0220 movs r0, #2 + 11978 .LVL855: +5264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 11979 .loc 1 5264 3 view .LVU4120 + 11980 0148 88E7 b .L734 + 11981 .cfi_endproc + 11982 .LFE192: + 11984 .section .text.I2C_ITMasterCplt,"ax",%progbits + 11985 .align 1 + 11986 .syntax unified + 11987 .thumb + 11988 .thumb_func + 11989 .fpu fpv5-d16 + 11991 I2C_ITMasterCplt: + 11992 .LVL856: + 11993 .LFB201: +6180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmperror; + ARM GAS /tmp/ccVyGVF6.s page 412 + + + 11994 .loc 1 6180 1 is_stmt 1 view -0 + 11995 .cfi_startproc + 11996 @ args = 0, pretend = 0, frame = 8 + 11997 @ frame_needed = 0, uses_anonymous_args = 0 +6180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmperror; + 11998 .loc 1 6180 1 is_stmt 0 view .LVU4122 + 11999 0000 30B5 push {r4, r5, lr} + 12000 .LCFI125: + 12001 .cfi_def_cfa_offset 12 + 12002 .cfi_offset 4, -12 + 12003 .cfi_offset 5, -8 + 12004 .cfi_offset 14, -4 + 12005 0002 83B0 sub sp, sp, #12 + 12006 .LCFI126: + 12007 .cfi_def_cfa_offset 24 + 12008 0004 0446 mov r4, r0 + 12009 0006 0D46 mov r5, r1 +6181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; + 12010 .loc 1 6181 3 is_stmt 1 view .LVU4123 +6182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** __IO uint32_t tmpreg; + 12011 .loc 1 6182 3 view .LVU4124 + 12012 .LVL857: +6183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12013 .loc 1 6183 3 view .LVU4125 +6186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12014 .loc 1 6186 3 view .LVU4126 + 12015 0008 0368 ldr r3, [r0] + 12016 000a 2022 movs r2, #32 + 12017 000c DA61 str r2, [r3, #28] +6189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12018 .loc 1 6189 3 view .LVU4127 +6189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12019 .loc 1 6189 11 is_stmt 0 view .LVU4128 + 12020 000e 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 12021 0012 DBB2 uxtb r3, r3 +6189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12022 .loc 1 6189 6 view .LVU4129 + 12023 0014 212B cmp r3, #33 + 12024 0016 33D0 beq .L763 +6194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12025 .loc 1 6194 8 is_stmt 1 view .LVU4130 +6194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12026 .loc 1 6194 16 is_stmt 0 view .LVU4131 + 12027 0018 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 12028 001c DBB2 uxtb r3, r3 +6194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12029 .loc 1 6194 11 view .LVU4132 + 12030 001e 222B cmp r3, #34 + 12031 0020 34D0 beq .L764 + 12032 .LVL858: + 12033 .L753: +6202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12034 .loc 1 6202 3 is_stmt 1 view .LVU4133 +6205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12035 .loc 1 6205 3 view .LVU4134 + 12036 0022 2268 ldr r2, [r4] + 12037 0024 5368 ldr r3, [r2, #4] + ARM GAS /tmp/ccVyGVF6.s page 413 + + + 12038 0026 23F0FF73 bic r3, r3, #33423360 + 12039 002a 23F48B33 bic r3, r3, #71168 + 12040 002e 23F4FF73 bic r3, r3, #510 + 12041 0032 23F00103 bic r3, r3, #1 + 12042 0036 5360 str r3, [r2, #4] +6208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 12043 .loc 1 6208 3 view .LVU4135 +6208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions = I2C_NO_OPTION_FRAME; + 12044 .loc 1 6208 23 is_stmt 0 view .LVU4136 + 12045 0038 0023 movs r3, #0 + 12046 003a 6363 str r3, [r4, #52] +6209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12047 .loc 1 6209 3 is_stmt 1 view .LVU4137 +6209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12048 .loc 1 6209 23 is_stmt 0 view .LVU4138 + 12049 003c A3F58033 sub r3, r3, #65536 + 12050 0040 E362 str r3, [r4, #44] +6211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12051 .loc 1 6211 3 is_stmt 1 view .LVU4139 +6211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12052 .loc 1 6211 6 is_stmt 0 view .LVU4140 + 12053 0042 15F0100F tst r5, #16 + 12054 0046 06D0 beq .L754 +6214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12055 .loc 1 6214 5 is_stmt 1 view .LVU4141 + 12056 0048 2368 ldr r3, [r4] + 12057 004a 1022 movs r2, #16 + 12058 004c DA61 str r2, [r3, #28] +6217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12059 .loc 1 6217 5 view .LVU4142 +6217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12060 .loc 1 6217 21 is_stmt 0 view .LVU4143 + 12061 004e 636C ldr r3, [r4, #68] + 12062 0050 43F00403 orr r3, r3, #4 + 12063 0054 6364 str r3, [r4, #68] + 12064 .L754: +6221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12065 .loc 1 6221 3 is_stmt 1 view .LVU4144 +6221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12066 .loc 1 6221 12 is_stmt 0 view .LVU4145 + 12067 0056 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 12068 005a DBB2 uxtb r3, r3 +6221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12069 .loc 1 6221 6 view .LVU4146 + 12070 005c 602B cmp r3, #96 + 12071 005e 1BD0 beq .L765 + 12072 .L755: +6229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12073 .loc 1 6229 3 is_stmt 1 view .LVU4147 + 12074 0060 2046 mov r0, r4 + 12075 0062 FFF7FEFF bl I2C_Flush_TXDR + 12076 .LVL859: +6232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12077 .loc 1 6232 3 view .LVU4148 +6232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12078 .loc 1 6232 12 is_stmt 0 view .LVU4149 + 12079 0066 626C ldr r2, [r4, #68] + ARM GAS /tmp/ccVyGVF6.s page 414 + + + 12080 .LVL860: +6235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12081 .loc 1 6235 3 is_stmt 1 view .LVU4150 +6235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12082 .loc 1 6235 12 is_stmt 0 view .LVU4151 + 12083 0068 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 12084 006c DBB2 uxtb r3, r3 +6235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12085 .loc 1 6235 6 view .LVU4152 + 12086 006e 602B cmp r3, #96 + 12087 0070 00D0 beq .L756 +6235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12088 .loc 1 6235 44 discriminator 1 view .LVU4153 + 12089 0072 D2B1 cbz r2, .L757 + 12090 .L756: +6238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12091 .loc 1 6238 5 is_stmt 1 view .LVU4154 + 12092 0074 616C ldr r1, [r4, #68] + 12093 0076 2046 mov r0, r4 + 12094 0078 FFF7FEFF bl I2C_ITError + 12095 .LVL861: + 12096 .L751: +6314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12097 .loc 1 6314 1 is_stmt 0 view .LVU4155 + 12098 007c 03B0 add sp, sp, #12 + 12099 .LCFI127: + 12100 .cfi_remember_state + 12101 .cfi_def_cfa_offset 12 + 12102 @ sp needed + 12103 007e 30BD pop {r4, r5, pc} + 12104 .LVL862: + 12105 .L763: + 12106 .LCFI128: + 12107 .cfi_restore_state +6191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + 12108 .loc 1 6191 5 is_stmt 1 view .LVU4156 + 12109 0080 0121 movs r1, #1 + 12110 .LVL863: +6191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_TX; + 12111 .loc 1 6191 5 is_stmt 0 view .LVU4157 + 12112 0082 FFF7FEFF bl I2C_Disable_IRQ + 12113 .LVL864: +6192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12114 .loc 1 6192 5 is_stmt 1 view .LVU4158 +6192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12115 .loc 1 6192 25 is_stmt 0 view .LVU4159 + 12116 0086 1123 movs r3, #17 + 12117 0088 2363 str r3, [r4, #48] + 12118 008a CAE7 b .L753 + 12119 .LVL865: + 12120 .L764: +6196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + 12121 .loc 1 6196 5 is_stmt 1 view .LVU4160 + 12122 008c 0221 movs r1, #2 + 12123 .LVL866: +6196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_MASTER_BUSY_RX; + 12124 .loc 1 6196 5 is_stmt 0 view .LVU4161 + ARM GAS /tmp/ccVyGVF6.s page 415 + + + 12125 008e FFF7FEFF bl I2C_Disable_IRQ + 12126 .LVL867: +6197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12127 .loc 1 6197 5 is_stmt 1 view .LVU4162 +6197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12128 .loc 1 6197 25 is_stmt 0 view .LVU4163 + 12129 0092 1223 movs r3, #18 + 12130 0094 2363 str r3, [r4, #48] + 12131 0096 C4E7 b .L753 + 12132 .L765: +6221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12133 .loc 1 6221 44 discriminator 1 view .LVU4164 + 12134 0098 15F0040F tst r5, #4 + 12135 009c E0D0 beq .L755 +6224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(tmpreg); + 12136 .loc 1 6224 5 is_stmt 1 view .LVU4165 +6224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(tmpreg); + 12137 .loc 1 6224 27 is_stmt 0 view .LVU4166 + 12138 009e 2368 ldr r3, [r4] +6224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(tmpreg); + 12139 .loc 1 6224 37 view .LVU4167 + 12140 00a0 5B6A ldr r3, [r3, #36] + 12141 00a2 DBB2 uxtb r3, r3 +6224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** UNUSED(tmpreg); + 12142 .loc 1 6224 12 view .LVU4168 + 12143 00a4 0193 str r3, [sp, #4] +6225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12144 .loc 1 6225 5 is_stmt 1 view .LVU4169 + 12145 00a6 019B ldr r3, [sp, #4] + 12146 00a8 DAE7 b .L755 + 12147 .LVL868: + 12148 .L757: +6241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12149 .loc 1 6241 8 view .LVU4170 +6241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12150 .loc 1 6241 16 is_stmt 0 view .LVU4171 + 12151 00aa 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 12152 00ae DBB2 uxtb r3, r3 +6241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12153 .loc 1 6241 11 view .LVU4172 + 12154 00b0 212B cmp r3, #33 + 12155 00b2 17D0 beq .L766 +6276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12156 .loc 1 6276 8 is_stmt 1 view .LVU4173 +6276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12157 .loc 1 6276 16 is_stmt 0 view .LVU4174 + 12158 00b4 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 12159 00b8 DBB2 uxtb r3, r3 +6276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12160 .loc 1 6276 11 view .LVU4175 + 12161 00ba 222B cmp r3, #34 + 12162 00bc DED1 bne .L751 +6278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 12163 .loc 1 6278 5 is_stmt 1 view .LVU4176 +6278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 12164 .loc 1 6278 17 is_stmt 0 view .LVU4177 + 12165 00be 2023 movs r3, #32 + ARM GAS /tmp/ccVyGVF6.s page 416 + + + 12166 00c0 84F84130 strb r3, [r4, #65] +6279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12167 .loc 1 6279 5 is_stmt 1 view .LVU4178 +6279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12168 .loc 1 6279 25 is_stmt 0 view .LVU4179 + 12169 00c4 0023 movs r3, #0 + 12170 00c6 2363 str r3, [r4, #48] +6281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12171 .loc 1 6281 5 is_stmt 1 view .LVU4180 +6281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12172 .loc 1 6281 13 is_stmt 0 view .LVU4181 + 12173 00c8 94F84230 ldrb r3, [r4, #66] @ zero_extendqisi2 + 12174 00cc DBB2 uxtb r3, r3 +6281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12175 .loc 1 6281 8 view .LVU4182 + 12176 00ce 402B cmp r3, #64 + 12177 00d0 24D0 beq .L767 +6297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12178 .loc 1 6297 7 is_stmt 1 view .LVU4183 +6297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12179 .loc 1 6297 18 is_stmt 0 view .LVU4184 + 12180 00d2 0023 movs r3, #0 + 12181 00d4 84F84230 strb r3, [r4, #66] +6300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12182 .loc 1 6300 7 is_stmt 1 view .LVU4185 +6300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12183 .loc 1 6300 7 view .LVU4186 + 12184 00d8 84F84030 strb r3, [r4, #64] +6300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12185 .loc 1 6300 7 view .LVU4187 +6306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 12186 .loc 1 6306 7 view .LVU4188 + 12187 00dc 2046 mov r0, r4 + 12188 00de FFF7FEFF bl HAL_I2C_MasterRxCpltCallback + 12189 .LVL869: +6313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12190 .loc 1 6313 3 view .LVU4189 +6314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12191 .loc 1 6314 1 is_stmt 0 view .LVU4190 + 12192 00e2 CBE7 b .L751 + 12193 .LVL870: + 12194 .L766: +6243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 12195 .loc 1 6243 5 is_stmt 1 view .LVU4191 +6243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->PreviousState = I2C_STATE_NONE; + 12196 .loc 1 6243 17 is_stmt 0 view .LVU4192 + 12197 00e4 2023 movs r3, #32 + 12198 00e6 84F84130 strb r3, [r4, #65] +6244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12199 .loc 1 6244 5 is_stmt 1 view .LVU4193 +6244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12200 .loc 1 6244 25 is_stmt 0 view .LVU4194 + 12201 00ea 0023 movs r3, #0 + 12202 00ec 2363 str r3, [r4, #48] +6246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12203 .loc 1 6246 5 is_stmt 1 view .LVU4195 +6246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 417 + + + 12204 .loc 1 6246 13 is_stmt 0 view .LVU4196 + 12205 00ee 94F84230 ldrb r3, [r4, #66] @ zero_extendqisi2 + 12206 00f2 DBB2 uxtb r3, r3 +6246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12207 .loc 1 6246 8 view .LVU4197 + 12208 00f4 402B cmp r3, #64 + 12209 00f6 08D0 beq .L768 +6262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12210 .loc 1 6262 7 is_stmt 1 view .LVU4198 +6262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12211 .loc 1 6262 18 is_stmt 0 view .LVU4199 + 12212 00f8 0023 movs r3, #0 + 12213 00fa 84F84230 strb r3, [r4, #66] +6265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12214 .loc 1 6265 7 is_stmt 1 view .LVU4200 +6265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12215 .loc 1 6265 7 view .LVU4201 + 12216 00fe 84F84030 strb r3, [r4, #64] +6265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12217 .loc 1 6265 7 view .LVU4202 +6271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 12218 .loc 1 6271 7 view .LVU4203 + 12219 0102 2046 mov r0, r4 + 12220 0104 FFF7FEFF bl HAL_I2C_MasterTxCpltCallback + 12221 .LVL871: +6271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 12222 .loc 1 6271 7 is_stmt 0 view .LVU4204 + 12223 0108 B8E7 b .L751 + 12224 .LVL872: + 12225 .L768: +6248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12226 .loc 1 6248 7 is_stmt 1 view .LVU4205 +6248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12227 .loc 1 6248 18 is_stmt 0 view .LVU4206 + 12228 010a 0023 movs r3, #0 + 12229 010c 84F84230 strb r3, [r4, #66] +6251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12230 .loc 1 6251 7 is_stmt 1 view .LVU4207 +6251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12231 .loc 1 6251 7 view .LVU4208 + 12232 0110 84F84030 strb r3, [r4, #64] +6251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12233 .loc 1 6251 7 view .LVU4209 +6257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 12234 .loc 1 6257 7 view .LVU4210 + 12235 0114 2046 mov r0, r4 + 12236 0116 FFF7FEFF bl HAL_I2C_MemTxCpltCallback + 12237 .LVL873: +6257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 12238 .loc 1 6257 7 is_stmt 0 view .LVU4211 + 12239 011a AFE7 b .L751 + 12240 .LVL874: + 12241 .L767: +6283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12242 .loc 1 6283 7 is_stmt 1 view .LVU4212 +6283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12243 .loc 1 6283 18 is_stmt 0 view .LVU4213 + ARM GAS /tmp/ccVyGVF6.s page 418 + + + 12244 011c 0023 movs r3, #0 + 12245 011e 84F84230 strb r3, [r4, #66] +6286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12246 .loc 1 6286 7 is_stmt 1 view .LVU4214 +6286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12247 .loc 1 6286 7 view .LVU4215 + 12248 0122 84F84030 strb r3, [r4, #64] +6286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12249 .loc 1 6286 7 view .LVU4216 +6292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 12250 .loc 1 6292 7 view .LVU4217 + 12251 0126 2046 mov r0, r4 + 12252 0128 FFF7FEFF bl HAL_I2C_MemRxCpltCallback + 12253 .LVL875: +6292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ + 12254 .loc 1 6292 7 is_stmt 0 view .LVU4218 + 12255 012c A6E7 b .L751 + 12256 .cfi_endproc + 12257 .LFE201: + 12259 .section .text.I2C_Master_ISR_IT,"ax",%progbits + 12260 .align 1 + 12261 .syntax unified + 12262 .thumb + 12263 .thumb_func + 12264 .fpu fpv5-d16 + 12266 I2C_Master_ISR_IT: + 12267 .LVL876: + 12268 .LFB190: +4941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t devaddress; + 12269 .loc 1 4941 1 is_stmt 1 view -0 + 12270 .cfi_startproc + 12271 @ args = 0, pretend = 0, frame = 0 + 12272 @ frame_needed = 0, uses_anonymous_args = 0 +4942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; + 12273 .loc 1 4942 3 view .LVU4220 +4943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12274 .loc 1 4943 3 view .LVU4221 +4946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12275 .loc 1 4946 3 view .LVU4222 +4946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12276 .loc 1 4946 3 view .LVU4223 + 12277 0000 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 12278 0004 012B cmp r3, #1 + 12279 0006 00F0CF80 beq .L785 +4941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t devaddress; + 12280 .loc 1 4941 1 is_stmt 0 discriminator 2 view .LVU4224 + 12281 000a 70B5 push {r4, r5, r6, lr} + 12282 .LCFI129: + 12283 .cfi_def_cfa_offset 16 + 12284 .cfi_offset 4, -16 + 12285 .cfi_offset 5, -12 + 12286 .cfi_offset 6, -8 + 12287 .cfi_offset 14, -4 + 12288 000c 82B0 sub sp, sp, #8 + 12289 .LCFI130: + 12290 .cfi_def_cfa_offset 24 + 12291 000e 0446 mov r4, r0 + ARM GAS /tmp/ccVyGVF6.s page 419 + + + 12292 0010 0D46 mov r5, r1 + 12293 0012 1646 mov r6, r2 +4946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12294 .loc 1 4946 3 is_stmt 1 discriminator 2 view .LVU4225 + 12295 0014 0123 movs r3, #1 + 12296 0016 80F84030 strb r3, [r0, #64] +4946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12297 .loc 1 4946 3 discriminator 2 view .LVU4226 +4948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 12298 .loc 1 4948 3 discriminator 2 view .LVU4227 +4948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 12299 .loc 1 4948 6 is_stmt 0 discriminator 2 view .LVU4228 + 12300 001a 11F0100F tst r1, #16 + 12301 001e 02D0 beq .L771 +4948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 12302 .loc 1 4948 58 discriminator 1 view .LVU4229 + 12303 0020 12F0100F tst r2, #16 + 12304 0024 22D1 bne .L790 + 12305 .L771: +4962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + 12306 .loc 1 4962 8 is_stmt 1 view .LVU4230 +4962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + 12307 .loc 1 4962 11 is_stmt 0 view .LVU4231 + 12308 0026 15F0040F tst r5, #4 + 12309 002a 29D0 beq .L773 +4962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + 12310 .loc 1 4962 65 discriminator 1 view .LVU4232 + 12311 002c 16F0040F tst r6, #4 + 12312 0030 26D0 beq .L773 +4966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12313 .loc 1 4966 5 is_stmt 1 view .LVU4233 +4966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12314 .loc 1 4966 16 is_stmt 0 view .LVU4234 + 12315 0032 25F00405 bic r5, r5, #4 + 12316 .LVL877: +4969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12317 .loc 1 4969 5 is_stmt 1 view .LVU4235 +4969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12318 .loc 1 4969 36 is_stmt 0 view .LVU4236 + 12319 0036 2368 ldr r3, [r4] +4969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12320 .loc 1 4969 46 view .LVU4237 + 12321 0038 5A6A ldr r2, [r3, #36] + 12322 .LVL878: +4969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12323 .loc 1 4969 10 view .LVU4238 + 12324 003a 636A ldr r3, [r4, #36] +4969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12325 .loc 1 4969 21 view .LVU4239 + 12326 003c 1A70 strb r2, [r3] +4972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12327 .loc 1 4972 5 is_stmt 1 view .LVU4240 +4972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12328 .loc 1 4972 9 is_stmt 0 view .LVU4241 + 12329 003e 636A ldr r3, [r4, #36] +4972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12330 .loc 1 4972 19 view .LVU4242 + ARM GAS /tmp/ccVyGVF6.s page 420 + + + 12331 0040 0133 adds r3, r3, #1 + 12332 0042 6362 str r3, [r4, #36] +4974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 12333 .loc 1 4974 5 is_stmt 1 view .LVU4243 +4974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 12334 .loc 1 4974 9 is_stmt 0 view .LVU4244 + 12335 0044 238D ldrh r3, [r4, #40] +4974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 12336 .loc 1 4974 19 view .LVU4245 + 12337 0046 013B subs r3, r3, #1 + 12338 0048 2385 strh r3, [r4, #40] @ movhi +4975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12339 .loc 1 4975 5 is_stmt 1 view .LVU4246 +4975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12340 .loc 1 4975 9 is_stmt 0 view .LVU4247 + 12341 004a 638D ldrh r3, [r4, #42] + 12342 004c 9BB2 uxth r3, r3 +4975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12343 .loc 1 4975 20 view .LVU4248 + 12344 004e 013B subs r3, r3, #1 + 12345 0050 9BB2 uxth r3, r3 + 12346 0052 6385 strh r3, [r4, #42] @ movhi + 12347 .LVL879: + 12348 .L772: +5075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12349 .loc 1 5075 3 is_stmt 1 view .LVU4249 +5077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 12350 .loc 1 5077 3 view .LVU4250 +5077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 12351 .loc 1 5077 6 is_stmt 0 view .LVU4251 + 12352 0054 15F0200F tst r5, #32 + 12353 0058 03D0 beq .L784 +5077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 12354 .loc 1 5077 61 discriminator 1 view .LVU4252 + 12355 005a 16F0200F tst r6, #32 + 12356 005e 40F09E80 bne .L791 + 12357 .L784: +5085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12358 .loc 1 5085 3 is_stmt 1 view .LVU4253 +5085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12359 .loc 1 5085 3 view .LVU4254 + 12360 0062 0020 movs r0, #0 + 12361 0064 84F84000 strb r0, [r4, #64] +5085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12362 .loc 1 5085 3 view .LVU4255 +5087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12363 .loc 1 5087 3 view .LVU4256 +5088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12364 .loc 1 5088 1 is_stmt 0 view .LVU4257 + 12365 0068 02B0 add sp, sp, #8 + 12366 .LCFI131: + 12367 .cfi_remember_state + 12368 .cfi_def_cfa_offset 16 + 12369 @ sp needed + 12370 006a 70BD pop {r4, r5, r6, pc} + 12371 .LVL880: + 12372 .L790: + ARM GAS /tmp/ccVyGVF6.s page 421 + + + 12373 .LCFI132: + 12374 .cfi_restore_state +4952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12375 .loc 1 4952 5 is_stmt 1 view .LVU4258 + 12376 006c 0368 ldr r3, [r0] + 12377 006e 1022 movs r2, #16 + 12378 .LVL881: +4952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12379 .loc 1 4952 5 is_stmt 0 view .LVU4259 + 12380 0070 DA61 str r2, [r3, #28] +4957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12381 .loc 1 4957 5 is_stmt 1 view .LVU4260 +4957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12382 .loc 1 4957 21 is_stmt 0 view .LVU4261 + 12383 0072 436C ldr r3, [r0, #68] + 12384 0074 43F00403 orr r3, r3, #4 + 12385 0078 4364 str r3, [r0, #68] +4960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12386 .loc 1 4960 5 is_stmt 1 view .LVU4262 + 12387 007a FFF7FEFF bl I2C_Flush_TXDR + 12388 .LVL882: +4960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12389 .loc 1 4960 5 is_stmt 0 view .LVU4263 + 12390 007e E9E7 b .L772 + 12391 .LVL883: + 12392 .L773: +4977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + 12393 .loc 1 4977 8 is_stmt 1 view .LVU4264 +4977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + 12394 .loc 1 4977 13 is_stmt 0 view .LVU4265 + 12395 0080 C5F38013 ubfx r3, r5, #6, #1 +4977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + 12396 .loc 1 4977 11 view .LVU4266 + 12397 0084 15F0400F tst r5, #64 + 12398 0088 19D1 bne .L774 +4977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ + 12399 .loc 1 4977 63 discriminator 1 view .LVU4267 + 12400 008a 15F0020F tst r5, #2 + 12401 008e 16D0 beq .L774 +4978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET))) + 12402 .loc 1 4978 66 view .LVU4268 + 12403 0090 16F0020F tst r6, #2 + 12404 0094 13D0 beq .L774 +4982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12405 .loc 1 4982 5 is_stmt 1 view .LVU4269 +4982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12406 .loc 1 4982 13 is_stmt 0 view .LVU4270 + 12407 0096 638D ldrh r3, [r4, #42] + 12408 0098 9BB2 uxth r3, r3 +4982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12409 .loc 1 4982 8 view .LVU4271 + 12410 009a 002B cmp r3, #0 + 12411 009c DAD0 beq .L772 +4985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12412 .loc 1 4985 7 is_stmt 1 view .LVU4272 +4985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12413 .loc 1 4985 35 is_stmt 0 view .LVU4273 + ARM GAS /tmp/ccVyGVF6.s page 422 + + + 12414 009e 626A ldr r2, [r4, #36] + 12415 .LVL884: +4985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12416 .loc 1 4985 11 view .LVU4274 + 12417 00a0 2368 ldr r3, [r4] +4985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12418 .loc 1 4985 30 view .LVU4275 + 12419 00a2 1278 ldrb r2, [r2] @ zero_extendqisi2 +4985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12420 .loc 1 4985 28 view .LVU4276 + 12421 00a4 9A62 str r2, [r3, #40] +4988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12422 .loc 1 4988 7 is_stmt 1 view .LVU4277 +4988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12423 .loc 1 4988 11 is_stmt 0 view .LVU4278 + 12424 00a6 636A ldr r3, [r4, #36] +4988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12425 .loc 1 4988 21 view .LVU4279 + 12426 00a8 0133 adds r3, r3, #1 + 12427 00aa 6362 str r3, [r4, #36] +4990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 12428 .loc 1 4990 7 is_stmt 1 view .LVU4280 +4990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 12429 .loc 1 4990 11 is_stmt 0 view .LVU4281 + 12430 00ac 238D ldrh r3, [r4, #40] +4990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 12431 .loc 1 4990 21 view .LVU4282 + 12432 00ae 013B subs r3, r3, #1 + 12433 00b0 2385 strh r3, [r4, #40] @ movhi +4991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12434 .loc 1 4991 7 is_stmt 1 view .LVU4283 +4991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12435 .loc 1 4991 11 is_stmt 0 view .LVU4284 + 12436 00b2 638D ldrh r3, [r4, #42] + 12437 00b4 9BB2 uxth r3, r3 +4991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12438 .loc 1 4991 22 view .LVU4285 + 12439 00b6 013B subs r3, r3, #1 + 12440 00b8 9BB2 uxth r3, r3 + 12441 00ba 6385 strh r3, [r4, #42] @ movhi + 12442 00bc CAE7 b .L772 + 12443 .LVL885: + 12444 .L774: +4994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12445 .loc 1 4994 8 is_stmt 1 view .LVU4286 +4994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12446 .loc 1 4994 11 is_stmt 0 view .LVU4287 + 12447 00be 15F0800F tst r5, #128 + 12448 00c2 4AD0 beq .L775 +4994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12449 .loc 1 4994 64 discriminator 1 view .LVU4288 + 12450 00c4 16F0400F tst r6, #64 + 12451 00c8 47D0 beq .L775 +4997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12452 .loc 1 4997 5 is_stmt 1 view .LVU4289 +4997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12453 .loc 1 4997 14 is_stmt 0 view .LVU4290 + ARM GAS /tmp/ccVyGVF6.s page 423 + + + 12454 00ca 638D ldrh r3, [r4, #42] + 12455 00cc 9BB2 uxth r3, r3 +4997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12456 .loc 1 4997 8 view .LVU4291 + 12457 00ce 002B cmp r3, #0 + 12458 00d0 35D0 beq .L776 +4997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12459 .loc 1 4997 41 discriminator 1 view .LVU4292 + 12460 00d2 238D ldrh r3, [r4, #40] +4997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12461 .loc 1 4997 33 discriminator 1 view .LVU4293 + 12462 00d4 002B cmp r3, #0 + 12463 00d6 32D1 bne .L776 +4999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12464 .loc 1 4999 7 is_stmt 1 view .LVU4294 +4999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12465 .loc 1 4999 35 is_stmt 0 view .LVU4295 + 12466 00d8 2268 ldr r2, [r4] + 12467 .LVL886: +4999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12468 .loc 1 4999 45 view .LVU4296 + 12469 00da 5168 ldr r1, [r2, #4] + 12470 .LVL887: +4999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12471 .loc 1 4999 18 view .LVU4297 + 12472 00dc C1F30901 ubfx r1, r1, #0, #10 + 12473 .LVL888: +5001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12474 .loc 1 5001 7 is_stmt 1 view .LVU4298 +5001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12475 .loc 1 5001 15 is_stmt 0 view .LVU4299 + 12476 00e0 638D ldrh r3, [r4, #42] + 12477 00e2 9BB2 uxth r3, r3 +5001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12478 .loc 1 5001 10 view .LVU4300 + 12479 00e4 FF2B cmp r3, #255 + 12480 00e6 12D9 bls .L777 +5004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12481 .loc 1 5004 9 is_stmt 1 view .LVU4301 +5004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12482 .loc 1 5004 13 is_stmt 0 view .LVU4302 + 12483 00e8 9369 ldr r3, [r2, #24] +5004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12484 .loc 1 5004 12 view .LVU4303 + 12485 00ea 13F4803F tst r3, #65536 + 12486 00ee 0BD0 beq .L778 +5006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12487 .loc 1 5006 11 is_stmt 1 view .LVU4304 +5006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12488 .loc 1 5006 26 is_stmt 0 view .LVU4305 + 12489 00f0 0123 movs r3, #1 + 12490 00f2 2385 strh r3, [r4, #40] @ movhi + 12491 .L779: +5012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12492 .loc 1 5012 9 is_stmt 1 view .LVU4306 + 12493 00f4 0023 movs r3, #0 + 12494 00f6 0093 str r3, [sp] + ARM GAS /tmp/ccVyGVF6.s page 424 + + + 12495 00f8 4FF08073 mov r3, #16777216 + 12496 00fc 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 12497 0100 2046 mov r0, r4 + 12498 .LVL889: +5012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12499 .loc 1 5012 9 is_stmt 0 view .LVU4307 + 12500 0102 FFF7FEFF bl I2C_TransferConfig + 12501 .LVL890: +5012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12502 .loc 1 5012 9 view .LVU4308 + 12503 0106 A5E7 b .L772 + 12504 .LVL891: + 12505 .L778: +5010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12506 .loc 1 5010 11 is_stmt 1 view .LVU4309 +5010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12507 .loc 1 5010 26 is_stmt 0 view .LVU4310 + 12508 0108 FF23 movs r3, #255 + 12509 010a 2385 strh r3, [r4, #40] @ movhi + 12510 010c F2E7 b .L779 + 12511 .L777: +5016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + 12512 .loc 1 5016 9 is_stmt 1 view .LVU4311 +5016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + 12513 .loc 1 5016 30 is_stmt 0 view .LVU4312 + 12514 010e 628D ldrh r2, [r4, #42] + 12515 0110 92B2 uxth r2, r2 +5016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + 12516 .loc 1 5016 24 view .LVU4313 + 12517 0112 2285 strh r2, [r4, #40] @ movhi +5017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12518 .loc 1 5017 9 is_stmt 1 view .LVU4314 +5017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12519 .loc 1 5017 17 is_stmt 0 view .LVU4315 + 12520 0114 E36A ldr r3, [r4, #44] +5017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12521 .loc 1 5017 12 view .LVU4316 + 12522 0116 13F5803F cmn r3, #65536 + 12523 011a 07D0 beq .L780 +5019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions, I2C_NO_STARTSTOP); + 12524 .loc 1 5019 11 is_stmt 1 view .LVU4317 + 12525 011c E36A ldr r3, [r4, #44] + 12526 011e 0020 movs r0, #0 + 12527 .LVL892: +5019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions, I2C_NO_STARTSTOP); + 12528 .loc 1 5019 11 is_stmt 0 view .LVU4318 + 12529 0120 0090 str r0, [sp] + 12530 0122 D2B2 uxtb r2, r2 + 12531 0124 2046 mov r0, r4 + 12532 0126 FFF7FEFF bl I2C_TransferConfig + 12533 .LVL893: +5019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferOptions, I2C_NO_STARTSTOP); + 12534 .loc 1 5019 11 view .LVU4319 + 12535 012a 93E7 b .L772 + 12536 .LVL894: + 12537 .L780: +5024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + ARM GAS /tmp/ccVyGVF6.s page 425 + + + 12538 .loc 1 5024 11 is_stmt 1 view .LVU4320 + 12539 012c 0023 movs r3, #0 + 12540 012e 0093 str r3, [sp] + 12541 0130 4FF00073 mov r3, #33554432 + 12542 0134 D2B2 uxtb r2, r2 + 12543 0136 2046 mov r0, r4 + 12544 .LVL895: +5024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + 12545 .loc 1 5024 11 is_stmt 0 view .LVU4321 + 12546 0138 FFF7FEFF bl I2C_TransferConfig + 12547 .LVL896: +5024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + 12548 .loc 1 5024 11 view .LVU4322 + 12549 013c 8AE7 b .L772 + 12550 .LVL897: + 12551 .L776: +5032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12552 .loc 1 5032 7 is_stmt 1 view .LVU4323 +5032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12553 .loc 1 5032 11 is_stmt 0 view .LVU4324 + 12554 013e 2368 ldr r3, [r4] + 12555 0140 5B68 ldr r3, [r3, #4] +5032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12556 .loc 1 5032 10 view .LVU4325 + 12557 0142 13F0007F tst r3, #33554432 + 12558 0146 03D1 bne .L781 +5035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12559 .loc 1 5035 9 is_stmt 1 view .LVU4326 + 12560 0148 2046 mov r0, r4 + 12561 .LVL898: +5035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12562 .loc 1 5035 9 is_stmt 0 view .LVU4327 + 12563 014a FFF7FEFF bl I2C_ITMasterSeqCplt + 12564 .LVL899: +5035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12565 .loc 1 5035 9 view .LVU4328 + 12566 014e 81E7 b .L772 + 12567 .LVL900: + 12568 .L781: +5041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12569 .loc 1 5041 9 is_stmt 1 view .LVU4329 + 12570 0150 4021 movs r1, #64 + 12571 .LVL901: +5041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12572 .loc 1 5041 9 is_stmt 0 view .LVU4330 + 12573 0152 2046 mov r0, r4 + 12574 .LVL902: +5041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12575 .loc 1 5041 9 view .LVU4331 + 12576 0154 FFF7FEFF bl I2C_ITError + 12577 .LVL903: +5041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12578 .loc 1 5041 9 view .LVU4332 + 12579 0158 7CE7 b .L772 + 12580 .LVL904: + 12581 .L775: +5045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + ARM GAS /tmp/ccVyGVF6.s page 426 + + + 12582 .loc 1 5045 8 is_stmt 1 view .LVU4333 +5045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12583 .loc 1 5045 11 is_stmt 0 view .LVU4334 + 12584 015a 002B cmp r3, #0 + 12585 015c 3FF47AAF beq .L772 +5045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12586 .loc 1 5045 63 discriminator 1 view .LVU4335 + 12587 0160 16F0400F tst r6, #64 + 12588 0164 3FF476AF beq .L772 +5048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12589 .loc 1 5048 5 is_stmt 1 view .LVU4336 +5048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12590 .loc 1 5048 13 is_stmt 0 view .LVU4337 + 12591 0168 638D ldrh r3, [r4, #42] + 12592 016a 9BB2 uxth r3, r3 +5048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12593 .loc 1 5048 8 view .LVU4338 + 12594 016c 93B9 cbnz r3, .L782 +5050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12595 .loc 1 5050 7 is_stmt 1 view .LVU4339 +5050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12596 .loc 1 5050 11 is_stmt 0 view .LVU4340 + 12597 016e 2368 ldr r3, [r4] + 12598 0170 5A68 ldr r2, [r3, #4] + 12599 .LVL905: +5050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12600 .loc 1 5050 10 view .LVU4341 + 12601 0172 12F0007F tst r2, #33554432 + 12602 0176 7FF46DAF bne .L772 +5053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12603 .loc 1 5053 9 is_stmt 1 view .LVU4342 +5053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12604 .loc 1 5053 17 is_stmt 0 view .LVU4343 + 12605 017a E26A ldr r2, [r4, #44] +5053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12606 .loc 1 5053 12 view .LVU4344 + 12607 017c 12F5803F cmn r2, #65536 + 12608 0180 04D1 bne .L783 +5056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12609 .loc 1 5056 11 is_stmt 1 view .LVU4345 +5056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12610 .loc 1 5056 31 is_stmt 0 view .LVU4346 + 12611 0182 5A68 ldr r2, [r3, #4] + 12612 0184 42F48042 orr r2, r2, #16384 + 12613 0188 5A60 str r2, [r3, #4] + 12614 018a 63E7 b .L772 + 12615 .L783: +5061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12616 .loc 1 5061 11 is_stmt 1 view .LVU4347 + 12617 018c 2046 mov r0, r4 + 12618 .LVL906: +5061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12619 .loc 1 5061 11 is_stmt 0 view .LVU4348 + 12620 018e FFF7FEFF bl I2C_ITMasterSeqCplt + 12621 .LVL907: +5061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12622 .loc 1 5061 11 view .LVU4349 + ARM GAS /tmp/ccVyGVF6.s page 427 + + + 12623 0192 5FE7 b .L772 + 12624 .LVL908: + 12625 .L782: +5069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12626 .loc 1 5069 7 is_stmt 1 view .LVU4350 + 12627 0194 4021 movs r1, #64 + 12628 .LVL909: +5069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12629 .loc 1 5069 7 is_stmt 0 view .LVU4351 + 12630 0196 2046 mov r0, r4 + 12631 .LVL910: +5069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12632 .loc 1 5069 7 view .LVU4352 + 12633 0198 FFF7FEFF bl I2C_ITError + 12634 .LVL911: +5069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12635 .loc 1 5069 7 view .LVU4353 + 12636 019c 5AE7 b .L772 + 12637 .LVL912: + 12638 .L791: +5081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12639 .loc 1 5081 5 is_stmt 1 view .LVU4354 + 12640 019e 2946 mov r1, r5 + 12641 01a0 2046 mov r0, r4 + 12642 01a2 FFF7FEFF bl I2C_ITMasterCplt + 12643 .LVL913: + 12644 01a6 5CE7 b .L784 + 12645 .LVL914: + 12646 .L785: + 12647 .LCFI133: + 12648 .cfi_def_cfa_offset 0 + 12649 .cfi_restore 4 + 12650 .cfi_restore 5 + 12651 .cfi_restore 6 + 12652 .cfi_restore 14 +4946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12653 .loc 1 4946 3 is_stmt 0 view .LVU4355 + 12654 01a8 0220 movs r0, #2 + 12655 .LVL915: +5088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12656 .loc 1 5088 1 view .LVU4356 + 12657 01aa 7047 bx lr + 12658 .cfi_endproc + 12659 .LFE190: + 12661 .section .text.I2C_Mem_ISR_DMA,"ax",%progbits + 12662 .align 1 + 12663 .syntax unified + 12664 .thumb + 12665 .thumb_func + 12666 .fpu fpv5-d16 + 12668 I2C_Mem_ISR_DMA: + 12669 .LVL916: + 12670 .LFB194: +5547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE; + 12671 .loc 1 5547 1 is_stmt 1 view -0 + 12672 .cfi_startproc + 12673 @ args = 0, pretend = 0, frame = 0 + ARM GAS /tmp/ccVyGVF6.s page 428 + + + 12674 @ frame_needed = 0, uses_anonymous_args = 0 +5548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12675 .loc 1 5548 3 view .LVU4358 +5551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12676 .loc 1 5551 3 view .LVU4359 +5551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12677 .loc 1 5551 3 view .LVU4360 + 12678 0000 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 12679 0004 012B cmp r3, #1 + 12680 0006 00F0DC80 beq .L811 +5547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE; + 12681 .loc 1 5547 1 is_stmt 0 discriminator 2 view .LVU4361 + 12682 000a 10B5 push {r4, lr} + 12683 .LCFI134: + 12684 .cfi_def_cfa_offset 8 + 12685 .cfi_offset 4, -8 + 12686 .cfi_offset 14, -4 + 12687 000c 82B0 sub sp, sp, #8 + 12688 .LCFI135: + 12689 .cfi_def_cfa_offset 16 + 12690 000e 0446 mov r4, r0 +5551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12691 .loc 1 5551 3 is_stmt 1 discriminator 2 view .LVU4362 + 12692 0010 0123 movs r3, #1 + 12693 0012 80F84030 strb r3, [r0, #64] +5551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12694 .loc 1 5551 3 discriminator 2 view .LVU4363 +5553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 12695 .loc 1 5553 3 discriminator 2 view .LVU4364 +5553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 12696 .loc 1 5553 6 is_stmt 0 discriminator 2 view .LVU4365 + 12697 0016 11F0100F tst r1, #16 + 12698 001a 02D0 beq .L794 +5553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 12699 .loc 1 5553 55 discriminator 1 view .LVU4366 + 12700 001c 12F0100F tst r2, #16 + 12701 0020 10D1 bne .L817 + 12702 .L794: +5570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + 12703 .loc 1 5570 8 is_stmt 1 view .LVU4367 +5570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + 12704 .loc 1 5570 11 is_stmt 0 view .LVU4368 + 12705 0022 11F0020F tst r1, #2 + 12706 0026 1BD0 beq .L796 +5570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + 12707 .loc 1 5570 62 discriminator 1 view .LVU4369 + 12708 0028 12F0020F tst r2, #2 + 12709 002c 18D0 beq .L796 +5574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12710 .loc 1 5574 5 is_stmt 1 view .LVU4370 +5574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12711 .loc 1 5574 9 is_stmt 0 view .LVU4371 + 12712 002e 2368 ldr r3, [r4] +5574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12713 .loc 1 5574 32 view .LVU4372 + 12714 0030 226D ldr r2, [r4, #80] + 12715 .LVL917: + ARM GAS /tmp/ccVyGVF6.s page 429 + + +5574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12716 .loc 1 5574 26 view .LVU4373 + 12717 0032 9A62 str r2, [r3, #40] +5577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12718 .loc 1 5577 5 is_stmt 1 view .LVU4374 +5577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12719 .loc 1 5577 22 is_stmt 0 view .LVU4375 + 12720 0034 4FF0FF33 mov r3, #-1 + 12721 0038 2365 str r3, [r4, #80] + 12722 .LVL918: + 12723 .L795: +5693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12724 .loc 1 5693 3 is_stmt 1 view .LVU4376 +5696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12725 .loc 1 5696 3 view .LVU4377 +5696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12726 .loc 1 5696 3 view .LVU4378 + 12727 003a 0020 movs r0, #0 + 12728 003c 84F84000 strb r0, [r4, #64] +5696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12729 .loc 1 5696 3 view .LVU4379 +5698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12730 .loc 1 5698 3 view .LVU4380 +5699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12731 .loc 1 5699 1 is_stmt 0 view .LVU4381 + 12732 0040 02B0 add sp, sp, #8 + 12733 .LCFI136: + 12734 .cfi_remember_state + 12735 .cfi_def_cfa_offset 8 + 12736 @ sp needed + 12737 0042 10BD pop {r4, pc} + 12738 .LVL919: + 12739 .L817: + 12740 .LCFI137: + 12741 .cfi_restore_state +5557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12742 .loc 1 5557 5 is_stmt 1 view .LVU4382 + 12743 0044 0368 ldr r3, [r0] + 12744 0046 1022 movs r2, #16 + 12745 .LVL920: +5557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12746 .loc 1 5557 5 is_stmt 0 view .LVU4383 + 12747 0048 DA61 str r2, [r3, #28] +5560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12748 .loc 1 5560 5 is_stmt 1 view .LVU4384 +5560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12749 .loc 1 5560 21 is_stmt 0 view .LVU4385 + 12750 004a 436C ldr r3, [r0, #68] + 12751 004c 43F00403 orr r3, r3, #4 + 12752 0050 4364 str r3, [r0, #68] +5565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12753 .loc 1 5565 5 is_stmt 1 view .LVU4386 + 12754 0052 2021 movs r1, #32 + 12755 .LVL921: +5565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12756 .loc 1 5565 5 is_stmt 0 view .LVU4387 + 12757 0054 FFF7FEFF bl I2C_Enable_IRQ + ARM GAS /tmp/ccVyGVF6.s page 430 + + + 12758 .LVL922: +5568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12759 .loc 1 5568 5 is_stmt 1 view .LVU4388 + 12760 0058 2046 mov r0, r4 + 12761 005a FFF7FEFF bl I2C_Flush_TXDR + 12762 .LVL923: + 12763 005e ECE7 b .L795 + 12764 .LVL924: + 12765 .L796: +5579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12766 .loc 1 5579 8 view .LVU4389 +5579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12767 .loc 1 5579 11 is_stmt 0 view .LVU4390 + 12768 0060 11F0800F tst r1, #128 + 12769 0064 02D0 beq .L797 +5579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12770 .loc 1 5579 61 discriminator 1 view .LVU4391 + 12771 0066 12F0400F tst r2, #64 + 12772 006a 0FD1 bne .L818 + 12773 .L797: +5632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12774 .loc 1 5632 8 is_stmt 1 view .LVU4392 +5632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12775 .loc 1 5632 11 is_stmt 0 view .LVU4393 + 12776 006c 11F0400F tst r1, #64 + 12777 0070 02D0 beq .L804 +5632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 12778 .loc 1 5632 60 discriminator 1 view .LVU4394 + 12779 0072 12F0400F tst r2, #64 + 12780 0076 58D1 bne .L819 + 12781 .L804: +5684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 12782 .loc 1 5684 8 is_stmt 1 view .LVU4395 +5684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 12783 .loc 1 5684 11 is_stmt 0 view .LVU4396 + 12784 0078 11F0200F tst r1, #32 + 12785 007c DDD0 beq .L795 +5684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 12786 .loc 1 5684 63 discriminator 1 view .LVU4397 + 12787 007e 12F0200F tst r2, #32 + 12788 0082 DAD0 beq .L795 +5688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12789 .loc 1 5688 5 is_stmt 1 view .LVU4398 + 12790 0084 2046 mov r0, r4 + 12791 .LVL925: +5688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12792 .loc 1 5688 5 is_stmt 0 view .LVU4399 + 12793 0086 FFF7FEFF bl I2C_ITMasterCplt + 12794 .LVL926: +5688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12795 .loc 1 5688 5 view .LVU4400 + 12796 008a D6E7 b .L795 + 12797 .LVL927: + 12798 .L818: +5583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12799 .loc 1 5583 5 is_stmt 1 view .LVU4401 + 12800 008c 0121 movs r1, #1 + ARM GAS /tmp/ccVyGVF6.s page 431 + + + 12801 .LVL928: +5583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12802 .loc 1 5583 5 is_stmt 0 view .LVU4402 + 12803 008e 2046 mov r0, r4 + 12804 .LVL929: +5583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12805 .loc 1 5583 5 view .LVU4403 + 12806 0090 FFF7FEFF bl I2C_Disable_IRQ + 12807 .LVL930: +5586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12808 .loc 1 5586 5 is_stmt 1 view .LVU4404 + 12809 0094 1021 movs r1, #16 + 12810 0096 2046 mov r0, r4 + 12811 0098 FFF7FEFF bl I2C_Enable_IRQ + 12812 .LVL931: +5588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12813 .loc 1 5588 5 view .LVU4405 +5588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12814 .loc 1 5588 13 is_stmt 0 view .LVU4406 + 12815 009c 638D ldrh r3, [r4, #42] + 12816 009e 9BB2 uxth r3, r3 +5588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12817 .loc 1 5588 8 view .LVU4407 + 12818 00a0 002B cmp r3, #0 + 12819 00a2 3DD0 beq .L798 +5591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12820 .loc 1 5591 7 is_stmt 1 view .LVU4408 +5591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12821 .loc 1 5591 15 is_stmt 0 view .LVU4409 + 12822 00a4 638D ldrh r3, [r4, #42] + 12823 00a6 9BB2 uxth r3, r3 +5591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12824 .loc 1 5591 10 view .LVU4410 + 12825 00a8 FF2B cmp r3, #255 + 12826 00aa 25D9 bls .L799 +5594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12827 .loc 1 5594 9 is_stmt 1 view .LVU4411 +5594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12828 .loc 1 5594 13 is_stmt 0 view .LVU4412 + 12829 00ac 2368 ldr r3, [r4] + 12830 00ae 9B69 ldr r3, [r3, #24] +5594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12831 .loc 1 5594 12 view .LVU4413 + 12832 00b0 13F4803F tst r3, #65536 + 12833 00b4 1DD0 beq .L800 +5596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12834 .loc 1 5596 11 is_stmt 1 view .LVU4414 +5596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12835 .loc 1 5596 26 is_stmt 0 view .LVU4415 + 12836 00b6 0123 movs r3, #1 + 12837 00b8 2385 strh r3, [r4, #40] @ movhi + 12838 .L801: +5602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + 12839 .loc 1 5602 9 is_stmt 1 view .LVU4416 +5602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + 12840 .loc 1 5602 48 is_stmt 0 view .LVU4417 + 12841 00ba E16C ldr r1, [r4, #76] + ARM GAS /tmp/ccVyGVF6.s page 432 + + +5602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + 12842 .loc 1 5602 9 view .LVU4418 + 12843 00bc 0023 movs r3, #0 + 12844 00be 0093 str r3, [sp] + 12845 00c0 4FF08073 mov r3, #16777216 + 12846 00c4 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 12847 00c8 89B2 uxth r1, r1 + 12848 00ca 2046 mov r0, r4 + 12849 00cc FFF7FEFF bl I2C_TransferConfig + 12850 .LVL932: + 12851 .L802: +5613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12852 .loc 1 5613 7 is_stmt 1 view .LVU4419 +5613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12853 .loc 1 5613 23 is_stmt 0 view .LVU4420 + 12854 00d0 638D ldrh r3, [r4, #42] + 12855 00d2 9BB2 uxth r3, r3 +5613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12856 .loc 1 5613 30 view .LVU4421 + 12857 00d4 228D ldrh r2, [r4, #40] +5613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12858 .loc 1 5613 23 view .LVU4422 + 12859 00d6 9B1A subs r3, r3, r2 + 12860 00d8 9BB2 uxth r3, r3 + 12861 00da 6385 strh r3, [r4, #42] @ movhi +5616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12862 .loc 1 5616 7 is_stmt 1 view .LVU4423 +5616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12863 .loc 1 5616 15 is_stmt 0 view .LVU4424 + 12864 00dc 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 12865 00e0 DBB2 uxtb r3, r3 +5616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12866 .loc 1 5616 10 view .LVU4425 + 12867 00e2 222B cmp r3, #34 + 12868 00e4 16D0 beq .L820 +5622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12869 .loc 1 5622 9 is_stmt 1 view .LVU4426 +5622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12870 .loc 1 5622 13 is_stmt 0 view .LVU4427 + 12871 00e6 2268 ldr r2, [r4] +5622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12872 .loc 1 5622 29 view .LVU4428 + 12873 00e8 1368 ldr r3, [r2] + 12874 00ea 43F48043 orr r3, r3, #16384 + 12875 00ee 1360 str r3, [r2] + 12876 00f0 A3E7 b .L795 + 12877 .L800: +5600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12878 .loc 1 5600 11 is_stmt 1 view .LVU4429 +5600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12879 .loc 1 5600 26 is_stmt 0 view .LVU4430 + 12880 00f2 FF23 movs r3, #255 + 12881 00f4 2385 strh r3, [r4, #40] @ movhi + 12882 00f6 E0E7 b .L801 + 12883 .L799: +5607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + 12884 .loc 1 5607 9 is_stmt 1 view .LVU4431 + ARM GAS /tmp/ccVyGVF6.s page 433 + + +5607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + 12885 .loc 1 5607 30 is_stmt 0 view .LVU4432 + 12886 00f8 628D ldrh r2, [r4, #42] + 12887 00fa 92B2 uxth r2, r2 +5607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + 12888 .loc 1 5607 24 view .LVU4433 + 12889 00fc 2285 strh r2, [r4, #40] @ movhi +5608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + 12890 .loc 1 5608 9 is_stmt 1 view .LVU4434 +5608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + 12891 .loc 1 5608 48 is_stmt 0 view .LVU4435 + 12892 00fe E16C ldr r1, [r4, #76] +5608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + 12893 .loc 1 5608 9 view .LVU4436 + 12894 0100 0023 movs r3, #0 + 12895 0102 0093 str r3, [sp] + 12896 0104 4FF00073 mov r3, #33554432 + 12897 0108 D2B2 uxtb r2, r2 + 12898 010a 89B2 uxth r1, r1 + 12899 010c 2046 mov r0, r4 + 12900 010e FFF7FEFF bl I2C_TransferConfig + 12901 .LVL933: + 12902 0112 DDE7 b .L802 + 12903 .L820: +5618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12904 .loc 1 5618 9 is_stmt 1 view .LVU4437 +5618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12905 .loc 1 5618 13 is_stmt 0 view .LVU4438 + 12906 0114 2268 ldr r2, [r4] +5618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12907 .loc 1 5618 29 view .LVU4439 + 12908 0116 1368 ldr r3, [r2] + 12909 0118 43F40043 orr r3, r3, #32768 + 12910 011c 1360 str r3, [r2] + 12911 011e 8CE7 b .L795 + 12912 .L798: +5629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12913 .loc 1 5629 7 is_stmt 1 view .LVU4440 + 12914 0120 4021 movs r1, #64 + 12915 0122 2046 mov r0, r4 + 12916 0124 FFF7FEFF bl I2C_ITError + 12917 .LVL934: + 12918 0128 87E7 b .L795 + 12919 .LVL935: + 12920 .L819: +5636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12921 .loc 1 5636 5 view .LVU4441 + 12922 012a 0121 movs r1, #1 + 12923 .LVL936: +5636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12924 .loc 1 5636 5 is_stmt 0 view .LVU4442 + 12925 012c 2046 mov r0, r4 + 12926 .LVL937: +5636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12927 .loc 1 5636 5 view .LVU4443 + 12928 012e FFF7FEFF bl I2C_Disable_IRQ + 12929 .LVL938: + ARM GAS /tmp/ccVyGVF6.s page 434 + + +5639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12930 .loc 1 5639 5 is_stmt 1 view .LVU4444 + 12931 0132 1021 movs r1, #16 + 12932 0134 2046 mov r0, r4 + 12933 0136 FFF7FEFF bl I2C_Enable_IRQ + 12934 .LVL939: +5641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12935 .loc 1 5641 5 view .LVU4445 +5641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12936 .loc 1 5641 13 is_stmt 0 view .LVU4446 + 12937 013a 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 12938 013e DBB2 uxtb r3, r3 +5641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12939 .loc 1 5641 8 view .LVU4447 + 12940 0140 222B cmp r3, #34 + 12941 0142 26D0 beq .L812 +5548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12942 .loc 1 5548 12 view .LVU4448 + 12943 0144 2048 ldr r0, .L822 + 12944 .L805: + 12945 .LVL940: +5646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12946 .loc 1 5646 5 is_stmt 1 view .LVU4449 +5646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12947 .loc 1 5646 13 is_stmt 0 view .LVU4450 + 12948 0146 638D ldrh r3, [r4, #42] + 12949 0148 9BB2 uxth r3, r3 +5646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12950 .loc 1 5646 8 view .LVU4451 + 12951 014a FF2B cmp r3, #255 + 12952 014c 26D9 bls .L806 +5649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12953 .loc 1 5649 7 is_stmt 1 view .LVU4452 +5649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12954 .loc 1 5649 11 is_stmt 0 view .LVU4453 + 12955 014e 2368 ldr r3, [r4] + 12956 0150 9B69 ldr r3, [r3, #24] +5649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12957 .loc 1 5649 10 view .LVU4454 + 12958 0152 13F4803F tst r3, #65536 + 12959 0156 1ED0 beq .L807 +5651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12960 .loc 1 5651 9 is_stmt 1 view .LVU4455 +5651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12961 .loc 1 5651 24 is_stmt 0 view .LVU4456 + 12962 0158 0123 movs r3, #1 + 12963 015a 2385 strh r3, [r4, #40] @ movhi + 12964 .L808: +5659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); + 12965 .loc 1 5659 7 is_stmt 1 view .LVU4457 +5659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); + 12966 .loc 1 5659 46 is_stmt 0 view .LVU4458 + 12967 015c E16C ldr r1, [r4, #76] +5659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); + 12968 .loc 1 5659 7 view .LVU4459 + 12969 015e 0090 str r0, [sp] + 12970 0160 4FF08073 mov r3, #16777216 + ARM GAS /tmp/ccVyGVF6.s page 435 + + + 12971 0164 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 12972 0168 89B2 uxth r1, r1 + 12973 016a 2046 mov r0, r4 + 12974 .LVL941: +5659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); + 12975 .loc 1 5659 7 view .LVU4460 + 12976 016c FFF7FEFF bl I2C_TransferConfig + 12977 .LVL942: + 12978 .L809: +5672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12979 .loc 1 5672 5 is_stmt 1 view .LVU4461 +5672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12980 .loc 1 5672 21 is_stmt 0 view .LVU4462 + 12981 0170 638D ldrh r3, [r4, #42] + 12982 0172 9BB2 uxth r3, r3 +5672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12983 .loc 1 5672 28 view .LVU4463 + 12984 0174 228D ldrh r2, [r4, #40] +5672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 12985 .loc 1 5672 21 view .LVU4464 + 12986 0176 9B1A subs r3, r3, r2 + 12987 0178 9BB2 uxth r3, r3 + 12988 017a 6385 strh r3, [r4, #42] @ movhi +5675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12989 .loc 1 5675 5 is_stmt 1 view .LVU4465 +5675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12990 .loc 1 5675 13 is_stmt 0 view .LVU4466 + 12991 017c 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 12992 0180 DBB2 uxtb r3, r3 +5675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 12993 .loc 1 5675 8 view .LVU4467 + 12994 0182 222B cmp r3, #34 + 12995 0184 17D0 beq .L821 +5681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12996 .loc 1 5681 7 is_stmt 1 view .LVU4468 +5681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12997 .loc 1 5681 11 is_stmt 0 view .LVU4469 + 12998 0186 2268 ldr r2, [r4] +5681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 12999 .loc 1 5681 27 view .LVU4470 + 13000 0188 1368 ldr r3, [r2] + 13001 018a 43F48043 orr r3, r3, #16384 + 13002 018e 1360 str r3, [r2] + 13003 0190 53E7 b .L795 + 13004 .LVL943: + 13005 .L812: +5643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13006 .loc 1 5643 17 view .LVU4471 + 13007 0192 0E48 ldr r0, .L822+4 + 13008 0194 D7E7 b .L805 + 13009 .LVL944: + 13010 .L807: +5655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13011 .loc 1 5655 9 is_stmt 1 view .LVU4472 +5655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13012 .loc 1 5655 24 is_stmt 0 view .LVU4473 + 13013 0196 FF23 movs r3, #255 + ARM GAS /tmp/ccVyGVF6.s page 436 + + + 13014 0198 2385 strh r3, [r4, #40] @ movhi + 13015 019a DFE7 b .L808 + 13016 .L806: +5664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13017 .loc 1 5664 7 is_stmt 1 view .LVU4474 +5664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13018 .loc 1 5664 28 is_stmt 0 view .LVU4475 + 13019 019c 628D ldrh r2, [r4, #42] + 13020 019e 92B2 uxth r2, r2 +5664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13021 .loc 1 5664 22 view .LVU4476 + 13022 01a0 2285 strh r2, [r4, #40] @ movhi +5667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); + 13023 .loc 1 5667 7 is_stmt 1 view .LVU4477 +5667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); + 13024 .loc 1 5667 46 is_stmt 0 view .LVU4478 + 13025 01a2 E16C ldr r1, [r4, #76] +5667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); + 13026 .loc 1 5667 7 view .LVU4479 + 13027 01a4 0090 str r0, [sp] + 13028 01a6 4FF00073 mov r3, #33554432 + 13029 01aa D2B2 uxtb r2, r2 + 13030 01ac 89B2 uxth r1, r1 + 13031 01ae 2046 mov r0, r4 + 13032 .LVL945: +5667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); + 13033 .loc 1 5667 7 view .LVU4480 + 13034 01b0 FFF7FEFF bl I2C_TransferConfig + 13035 .LVL946: +5667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); + 13036 .loc 1 5667 7 view .LVU4481 + 13037 01b4 DCE7 b .L809 + 13038 .L821: +5677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13039 .loc 1 5677 7 is_stmt 1 view .LVU4482 +5677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13040 .loc 1 5677 11 is_stmt 0 view .LVU4483 + 13041 01b6 2268 ldr r2, [r4] +5677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13042 .loc 1 5677 27 view .LVU4484 + 13043 01b8 1368 ldr r3, [r2] + 13044 01ba 43F40043 orr r3, r3, #32768 + 13045 01be 1360 str r3, [r2] + 13046 01c0 3BE7 b .L795 + 13047 .LVL947: + 13048 .L811: + 13049 .LCFI138: + 13050 .cfi_def_cfa_offset 0 + 13051 .cfi_restore 4 + 13052 .cfi_restore 14 +5551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13053 .loc 1 5551 3 view .LVU4485 + 13054 01c2 0220 movs r0, #2 + 13055 .LVL948: +5699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13056 .loc 1 5699 1 view .LVU4486 + 13057 01c4 7047 bx lr + ARM GAS /tmp/ccVyGVF6.s page 437 + + + 13058 .L823: + 13059 01c6 00BF .align 2 + 13060 .L822: + 13061 01c8 00200080 .word -2147475456 + 13062 01cc 00240080 .word -2147474432 + 13063 .cfi_endproc + 13064 .LFE194: + 13066 .section .text.I2C_Slave_ISR_DMA,"ax",%progbits + 13067 .align 1 + 13068 .syntax unified + 13069 .thumb + 13070 .thumb_func + 13071 .fpu fpv5-d16 + 13073 I2C_Slave_ISR_DMA: + 13074 .LVL949: + 13075 .LFB195: +5711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; + 13076 .loc 1 5711 1 is_stmt 1 view -0 + 13077 .cfi_startproc + 13078 @ args = 0, pretend = 0, frame = 0 + 13079 @ frame_needed = 0, uses_anonymous_args = 0 +5711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpoptions = hi2c->XferOptions; + 13080 .loc 1 5711 1 is_stmt 0 view .LVU4488 + 13081 0000 38B5 push {r3, r4, r5, lr} + 13082 .LCFI139: + 13083 .cfi_def_cfa_offset 16 + 13084 .cfi_offset 3, -16 + 13085 .cfi_offset 4, -12 + 13086 .cfi_offset 5, -8 + 13087 .cfi_offset 14, -4 + 13088 0002 0446 mov r4, r0 +5712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t treatdmanack = 0U; + 13089 .loc 1 5712 3 is_stmt 1 view .LVU4489 +5712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t treatdmanack = 0U; + 13090 .loc 1 5712 12 is_stmt 0 view .LVU4490 + 13091 0004 C06A ldr r0, [r0, #44] + 13092 .LVL950: +5713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate; + 13093 .loc 1 5713 3 is_stmt 1 view .LVU4491 +5714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13094 .loc 1 5714 3 view .LVU4492 +5717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13095 .loc 1 5717 3 view .LVU4493 +5717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13096 .loc 1 5717 3 view .LVU4494 + 13097 0006 94F84030 ldrb r3, [r4, #64] @ zero_extendqisi2 + 13098 000a 012B cmp r3, #1 + 13099 000c 00F08680 beq .L839 +5717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13100 .loc 1 5717 3 discriminator 2 view .LVU4495 + 13101 0010 0123 movs r3, #1 + 13102 0012 84F84030 strb r3, [r4, #64] +5717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13103 .loc 1 5717 3 discriminator 2 view .LVU4496 +5720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 13104 .loc 1 5720 3 discriminator 2 view .LVU4497 +5720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + ARM GAS /tmp/ccVyGVF6.s page 438 + + + 13105 .loc 1 5720 6 is_stmt 0 discriminator 2 view .LVU4498 + 13106 0016 11F0200F tst r1, #32 + 13107 001a 02D0 beq .L826 +5720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 13108 .loc 1 5720 58 discriminator 1 view .LVU4499 + 13109 001c 12F0200F tst r2, #32 + 13110 0020 17D1 bne .L844 + 13111 .L826: +5726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 13112 .loc 1 5726 8 is_stmt 1 view .LVU4500 +5726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 13113 .loc 1 5726 11 is_stmt 0 view .LVU4501 + 13114 0022 11F0100F tst r1, #16 + 13115 0026 6BD0 beq .L828 +5726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 13116 .loc 1 5726 60 discriminator 1 view .LVU4502 + 13117 0028 12F0100F tst r2, #16 + 13118 002c 68D0 beq .L828 +5733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) + 13119 .loc 1 5733 5 is_stmt 1 view .LVU4503 +5733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) + 13120 .loc 1 5733 10 is_stmt 0 view .LVU4504 + 13121 002e C2F38035 ubfx r5, r2, #14, #1 +5733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) + 13122 .loc 1 5733 8 view .LVU4505 + 13123 0032 12F4804F tst r2, #16384 + 13124 0036 02D1 bne .L829 +5733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_CR1_RXDMAEN) != RESET)) + 13125 .loc 1 5733 68 discriminator 1 view .LVU4506 + 13126 0038 12F4004F tst r2, #32768 + 13127 003c 5CD0 beq .L830 + 13128 .L829: +5737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13129 .loc 1 5737 7 is_stmt 1 view .LVU4507 +5737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13130 .loc 1 5737 15 is_stmt 0 view .LVU4508 + 13131 003e E36B ldr r3, [r4, #60] +5737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13132 .loc 1 5737 10 view .LVU4509 + 13133 0040 5BB1 cbz r3, .L840 +5739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13134 .loc 1 5739 9 is_stmt 1 view .LVU4510 +5739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13135 .loc 1 5739 12 is_stmt 0 view .LVU4511 + 13136 0042 12F4004F tst r2, #32768 + 13137 0046 0AD0 beq .L841 +5741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13138 .loc 1 5741 11 is_stmt 1 view .LVU4512 +5741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13139 .loc 1 5741 15 is_stmt 0 view .LVU4513 + 13140 0048 1B68 ldr r3, [r3] + 13141 004a 5B68 ldr r3, [r3, #4] +5741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13142 .loc 1 5741 14 view .LVU4514 + 13143 004c 4BB3 cbz r3, .L842 +5713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate; + 13144 .loc 1 5713 12 view .LVU4515 + ARM GAS /tmp/ccVyGVF6.s page 439 + + + 13145 004e 0022 movs r2, #0 + 13146 .LVL951: +5713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate; + 13147 .loc 1 5713 12 view .LVU4516 + 13148 0050 06E0 b .L831 + 13149 .LVL952: + 13150 .L844: +5724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13151 .loc 1 5724 5 is_stmt 1 view .LVU4517 + 13152 0052 2046 mov r0, r4 + 13153 .LVL953: +5724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13154 .loc 1 5724 5 is_stmt 0 view .LVU4518 + 13155 0054 FFF7FEFF bl I2C_ITSlaveCplt + 13156 .LVL954: +5724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13157 .loc 1 5724 5 view .LVU4519 + 13158 0058 58E0 b .L827 + 13159 .LVL955: + 13160 .L840: +5713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate; + 13161 .loc 1 5713 12 view .LVU4520 + 13162 005a 0022 movs r2, #0 + 13163 .LVL956: +5713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate; + 13164 .loc 1 5713 12 view .LVU4521 + 13165 005c 00E0 b .L831 + 13166 .LVL957: + 13167 .L841: +5713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** HAL_I2C_StateTypeDef tmpstate; + 13168 .loc 1 5713 12 view .LVU4522 + 13169 005e 0022 movs r2, #0 + 13170 .LVL958: + 13171 .L831: +5749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13172 .loc 1 5749 7 is_stmt 1 view .LVU4523 +5749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13173 .loc 1 5749 15 is_stmt 0 view .LVU4524 + 13174 0060 A36B ldr r3, [r4, #56] +5749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13175 .loc 1 5749 10 view .LVU4525 + 13176 0062 1BB1 cbz r3, .L832 +5751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13177 .loc 1 5751 9 is_stmt 1 view .LVU4526 +5751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13178 .loc 1 5751 12 is_stmt 0 view .LVU4527 + 13179 0064 15B1 cbz r5, .L832 +5753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13180 .loc 1 5753 11 is_stmt 1 view .LVU4528 +5753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13181 .loc 1 5753 15 is_stmt 0 view .LVU4529 + 13182 0066 1B68 ldr r3, [r3] + 13183 0068 5B68 ldr r3, [r3, #4] +5753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13184 .loc 1 5753 14 view .LVU4530 + 13185 006a E3B1 cbz r3, .L833 + 13186 .L832: + ARM GAS /tmp/ccVyGVF6.s page 440 + + +5760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13187 .loc 1 5760 7 is_stmt 1 view .LVU4531 +5760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13188 .loc 1 5760 10 is_stmt 0 view .LVU4532 + 13189 006c DAB9 cbnz r2, .L833 +5791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13190 .loc 1 5791 9 is_stmt 1 view .LVU4533 + 13191 006e 2368 ldr r3, [r4] + 13192 0070 1022 movs r2, #16 + 13193 .LVL959: +5791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13194 .loc 1 5791 9 is_stmt 0 view .LVU4534 + 13195 0072 DA61 str r2, [r3, #28] +5794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13196 .loc 1 5794 9 is_stmt 1 view .LVU4535 +5794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13197 .loc 1 5794 25 is_stmt 0 view .LVU4536 + 13198 0074 636C ldr r3, [r4, #68] + 13199 0076 43F00403 orr r3, r3, #4 + 13200 007a 6364 str r3, [r4, #68] +5797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13201 .loc 1 5797 9 is_stmt 1 view .LVU4537 +5797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13202 .loc 1 5797 18 is_stmt 0 view .LVU4538 + 13203 007c 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 13204 0080 DBB2 uxtb r3, r3 + 13205 .LVL960: +5799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13206 .loc 1 5799 9 is_stmt 1 view .LVU4539 +5799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13207 .loc 1 5799 12 is_stmt 0 view .LVU4540 + 13208 0082 B0F1807F cmp r0, #16777216 + 13209 0086 18BF it ne + 13210 0088 0028 cmpne r0, #0 + 13211 008a 3FD1 bne .L827 +5801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13212 .loc 1 5801 11 is_stmt 1 view .LVU4541 +5801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13213 .loc 1 5801 14 is_stmt 0 view .LVU4542 + 13214 008c 292B cmp r3, #41 + 13215 008e 18BF it ne + 13216 0090 212B cmpne r3, #33 + 13217 0092 2AD1 bne .L837 +5803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13218 .loc 1 5803 13 is_stmt 1 view .LVU4543 +5803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13219 .loc 1 5803 33 is_stmt 0 view .LVU4544 + 13220 0094 2123 movs r3, #33 + 13221 .LVL961: +5803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13222 .loc 1 5803 33 view .LVU4545 + 13223 0096 2363 str r3, [r4, #48] + 13224 .L838: +5812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13225 .loc 1 5812 11 is_stmt 1 view .LVU4546 +5815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13226 .loc 1 5815 11 view .LVU4547 + ARM GAS /tmp/ccVyGVF6.s page 441 + + + 13227 0098 616C ldr r1, [r4, #68] + 13228 .LVL962: +5815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13229 .loc 1 5815 11 is_stmt 0 view .LVU4548 + 13230 009a 2046 mov r0, r4 + 13231 .LVL963: +5815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13232 .loc 1 5815 11 view .LVU4549 + 13233 009c FFF7FEFF bl I2C_ITError + 13234 .LVL964: + 13235 00a0 34E0 b .L827 + 13236 .LVL965: + 13237 .L842: +5743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13238 .loc 1 5743 26 view .LVU4550 + 13239 00a2 0122 movs r2, #1 + 13240 .LVL966: +5743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13241 .loc 1 5743 26 view .LVU4551 + 13242 00a4 DCE7 b .L831 + 13243 .LVL967: + 13244 .L833: +5762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 13245 .loc 1 5762 9 is_stmt 1 view .LVU4552 +5762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 13246 .loc 1 5762 18 is_stmt 0 view .LVU4553 + 13247 00a6 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 13248 00aa DBB2 uxtb r3, r3 +5762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 13249 .loc 1 5762 12 view .LVU4554 + 13250 00ac 282B cmp r3, #40 + 13251 00ae 08D0 beq .L845 + 13252 .L835: +5769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13253 .loc 1 5769 14 is_stmt 1 view .LVU4555 +5769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13254 .loc 1 5769 23 is_stmt 0 view .LVU4556 + 13255 00b0 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 13256 00b4 DBB2 uxtb r3, r3 +5769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13257 .loc 1 5769 17 view .LVU4557 + 13258 00b6 292B cmp r3, #41 + 13259 00b8 0AD0 beq .L846 + 13260 .L836: +5784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13261 .loc 1 5784 11 is_stmt 1 view .LVU4558 + 13262 00ba 2368 ldr r3, [r4] + 13263 00bc 1022 movs r2, #16 + 13264 00be DA61 str r2, [r3, #28] + 13265 00c0 24E0 b .L827 + 13266 .L845: +5762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for + 13267 .loc 1 5762 51 is_stmt 0 discriminator 1 view .LVU4559 + 13268 00c2 B0F1007F cmp r0, #33554432 + 13269 00c6 F3D1 bne .L835 +5767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13270 .loc 1 5767 11 is_stmt 1 view .LVU4560 + ARM GAS /tmp/ccVyGVF6.s page 442 + + + 13271 00c8 2046 mov r0, r4 + 13272 .LVL968: +5767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13273 .loc 1 5767 11 is_stmt 0 view .LVU4561 + 13274 00ca FFF7FEFF bl I2C_ITListenCplt + 13275 .LVL969: +5767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13276 .loc 1 5767 11 view .LVU4562 + 13277 00ce 1DE0 b .L827 + 13278 .LVL970: + 13279 .L846: +5769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13280 .loc 1 5769 64 discriminator 1 view .LVU4563 + 13281 00d0 10F5803F cmn r0, #65536 + 13282 00d4 F1D0 beq .L836 +5772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13283 .loc 1 5772 11 is_stmt 1 view .LVU4564 + 13284 00d6 2368 ldr r3, [r4] + 13285 00d8 1022 movs r2, #16 + 13286 00da DA61 str r2, [r3, #28] +5775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13287 .loc 1 5775 11 view .LVU4565 + 13288 00dc 2046 mov r0, r4 + 13289 .LVL971: +5775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13290 .loc 1 5775 11 is_stmt 0 view .LVU4566 + 13291 00de FFF7FEFF bl I2C_Flush_TXDR + 13292 .LVL972: +5779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13293 .loc 1 5779 11 is_stmt 1 view .LVU4567 + 13294 00e2 2046 mov r0, r4 + 13295 00e4 FFF7FEFF bl I2C_ITSlaveSeqCplt + 13296 .LVL973: + 13297 00e8 10E0 b .L827 + 13298 .LVL974: + 13299 .L837: +5805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13300 .loc 1 5805 16 view .LVU4568 +5805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13301 .loc 1 5805 19 is_stmt 0 view .LVU4569 + 13302 00ea 2A2B cmp r3, #42 + 13303 00ec 18BF it ne + 13304 00ee 222B cmpne r3, #34 + 13305 00f0 D2D1 bne .L838 +5807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13306 .loc 1 5807 13 is_stmt 1 view .LVU4570 +5807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13307 .loc 1 5807 33 is_stmt 0 view .LVU4571 + 13308 00f2 2223 movs r3, #34 + 13309 .LVL975: +5807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13310 .loc 1 5807 33 view .LVU4572 + 13311 00f4 2363 str r3, [r4, #48] + 13312 00f6 CFE7 b .L838 + 13313 .LVL976: + 13314 .L830: +5822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 443 + + + 13315 .loc 1 5822 7 is_stmt 1 view .LVU4573 + 13316 00f8 2368 ldr r3, [r4] + 13317 00fa 1022 movs r2, #16 + 13318 .LVL977: +5822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13319 .loc 1 5822 7 is_stmt 0 view .LVU4574 + 13320 00fc DA61 str r2, [r3, #28] + 13321 00fe 05E0 b .L827 + 13322 .LVL978: + 13323 .L828: +5825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + 13324 .loc 1 5825 8 is_stmt 1 view .LVU4575 +5825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + 13325 .loc 1 5825 11 is_stmt 0 view .LVU4576 + 13326 0100 11F0080F tst r1, #8 + 13327 0104 02D0 beq .L827 +5825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) + 13328 .loc 1 5825 62 discriminator 1 view .LVU4577 + 13329 0106 12F0080F tst r2, #8 + 13330 010a 03D1 bne .L847 + 13331 .LVL979: + 13332 .L827: +5833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13333 .loc 1 5833 3 is_stmt 1 view .LVU4578 +5836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13334 .loc 1 5836 3 view .LVU4579 +5836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13335 .loc 1 5836 3 view .LVU4580 + 13336 010c 0020 movs r0, #0 + 13337 010e 84F84000 strb r0, [r4, #64] +5836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13338 .loc 1 5836 3 view .LVU4581 +5838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13339 .loc 1 5838 3 view .LVU4582 + 13340 .L825: +5839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13341 .loc 1 5839 1 is_stmt 0 view .LVU4583 + 13342 0112 38BD pop {r3, r4, r5, pc} + 13343 .LVL980: + 13344 .L847: +5828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13345 .loc 1 5828 5 is_stmt 1 view .LVU4584 + 13346 0114 2046 mov r0, r4 + 13347 .LVL981: +5828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13348 .loc 1 5828 5 is_stmt 0 view .LVU4585 + 13349 0116 FFF7FEFF bl I2C_ITAddrCplt + 13350 .LVL982: +5828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13351 .loc 1 5828 5 view .LVU4586 + 13352 011a F7E7 b .L827 + 13353 .LVL983: + 13354 .L839: +5717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13355 .loc 1 5717 3 view .LVU4587 + 13356 011c 0220 movs r0, #2 + 13357 .LVL984: + ARM GAS /tmp/ccVyGVF6.s page 444 + + +5717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13358 .loc 1 5717 3 view .LVU4588 + 13359 011e F8E7 b .L825 + 13360 .cfi_endproc + 13361 .LFE195: + 13363 .section .text.I2C_Master_ISR_DMA,"ax",%progbits + 13364 .align 1 + 13365 .syntax unified + 13366 .thumb + 13367 .thumb_func + 13368 .fpu fpv5-d16 + 13370 I2C_Master_ISR_DMA: + 13371 .LVL985: + 13372 .LFB193: +5399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t devaddress; + 13373 .loc 1 5399 1 is_stmt 1 view -0 + 13374 .cfi_startproc + 13375 @ args = 0, pretend = 0, frame = 0 + 13376 @ frame_needed = 0, uses_anonymous_args = 0 +5400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t xfermode; + 13377 .loc 1 5400 3 view .LVU4590 +5401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13378 .loc 1 5401 3 view .LVU4591 +5404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13379 .loc 1 5404 3 view .LVU4592 +5404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13380 .loc 1 5404 3 view .LVU4593 + 13381 0000 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 13382 0004 012B cmp r3, #1 + 13383 0006 00F0A380 beq .L862 +5399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint16_t devaddress; + 13384 .loc 1 5399 1 is_stmt 0 discriminator 2 view .LVU4594 + 13385 000a 10B5 push {r4, lr} + 13386 .LCFI140: + 13387 .cfi_def_cfa_offset 8 + 13388 .cfi_offset 4, -8 + 13389 .cfi_offset 14, -4 + 13390 000c 82B0 sub sp, sp, #8 + 13391 .LCFI141: + 13392 .cfi_def_cfa_offset 16 + 13393 000e 0446 mov r4, r0 +5404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13394 .loc 1 5404 3 is_stmt 1 discriminator 2 view .LVU4595 + 13395 0010 0123 movs r3, #1 + 13396 0012 80F84030 strb r3, [r0, #64] +5404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13397 .loc 1 5404 3 discriminator 2 view .LVU4596 +5406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 13398 .loc 1 5406 3 discriminator 2 view .LVU4597 +5406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 13399 .loc 1 5406 6 is_stmt 0 discriminator 2 view .LVU4598 + 13400 0016 11F0100F tst r1, #16 + 13401 001a 02D0 beq .L850 +5406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 13402 .loc 1 5406 55 discriminator 1 view .LVU4599 + 13403 001c 12F0100F tst r2, #16 + 13404 0020 1FD1 bne .L868 + ARM GAS /tmp/ccVyGVF6.s page 445 + + + 13405 .L850: +5423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 13406 .loc 1 5423 8 is_stmt 1 view .LVU4600 +5423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 13407 .loc 1 5423 11 is_stmt 0 view .LVU4601 + 13408 0022 11F0800F tst r1, #128 + 13409 0026 69D0 beq .L852 +5423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 13410 .loc 1 5423 61 discriminator 1 view .LVU4602 + 13411 0028 12F0400F tst r2, #64 + 13412 002c 66D0 beq .L852 +5427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13413 .loc 1 5427 5 is_stmt 1 view .LVU4603 + 13414 002e 2268 ldr r2, [r4] + 13415 .LVL986: +5427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13416 .loc 1 5427 5 is_stmt 0 view .LVU4604 + 13417 0030 1368 ldr r3, [r2] + 13418 0032 23F04003 bic r3, r3, #64 + 13419 0036 1360 str r3, [r2] +5429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13420 .loc 1 5429 5 is_stmt 1 view .LVU4605 +5429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13421 .loc 1 5429 13 is_stmt 0 view .LVU4606 + 13422 0038 638D ldrh r3, [r4, #42] + 13423 003a 9BB2 uxth r3, r3 +5429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13424 .loc 1 5429 8 view .LVU4607 + 13425 003c 002B cmp r3, #0 + 13426 003e 4FD0 beq .L853 +5432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13427 .loc 1 5432 7 is_stmt 1 view .LVU4608 +5432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13428 .loc 1 5432 35 is_stmt 0 view .LVU4609 + 13429 0040 2268 ldr r2, [r4] +5432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13430 .loc 1 5432 45 view .LVU4610 + 13431 0042 5168 ldr r1, [r2, #4] + 13432 .LVL987: +5432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13433 .loc 1 5432 18 view .LVU4611 + 13434 0044 C1F30901 ubfx r1, r1, #0, #10 + 13435 .LVL988: +5435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13436 .loc 1 5435 7 is_stmt 1 view .LVU4612 +5435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13437 .loc 1 5435 15 is_stmt 0 view .LVU4613 + 13438 0048 638D ldrh r3, [r4, #42] + 13439 004a 9BB2 uxth r3, r3 +5435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13440 .loc 1 5435 10 view .LVU4614 + 13441 004c FF2B cmp r3, #255 + 13442 004e 1FD9 bls .L854 +5438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13443 .loc 1 5438 9 is_stmt 1 view .LVU4615 +5438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13444 .loc 1 5438 13 is_stmt 0 view .LVU4616 + ARM GAS /tmp/ccVyGVF6.s page 446 + + + 13445 0050 9369 ldr r3, [r2, #24] +5438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13446 .loc 1 5438 12 view .LVU4617 + 13447 0052 13F4803F tst r3, #65536 + 13448 0056 16D0 beq .L855 +5440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13449 .loc 1 5440 11 is_stmt 1 view .LVU4618 +5440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13450 .loc 1 5440 26 is_stmt 0 view .LVU4619 + 13451 0058 0123 movs r3, #1 + 13452 005a 2385 strh r3, [r4, #40] @ movhi +5446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13453 .loc 1 5446 18 view .LVU4620 + 13454 005c 4FF08073 mov r3, #16777216 + 13455 0060 1DE0 b .L856 + 13456 .LVL989: + 13457 .L868: +5410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13458 .loc 1 5410 5 is_stmt 1 view .LVU4621 + 13459 0062 0368 ldr r3, [r0] + 13460 0064 1022 movs r2, #16 + 13461 .LVL990: +5410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13462 .loc 1 5410 5 is_stmt 0 view .LVU4622 + 13463 0066 DA61 str r2, [r3, #28] +5413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13464 .loc 1 5413 5 is_stmt 1 view .LVU4623 +5413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13465 .loc 1 5413 21 is_stmt 0 view .LVU4624 + 13466 0068 436C ldr r3, [r0, #68] + 13467 006a 43F00403 orr r3, r3, #4 + 13468 006e 4364 str r3, [r0, #68] +5418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13469 .loc 1 5418 5 is_stmt 1 view .LVU4625 + 13470 0070 2021 movs r1, #32 + 13471 .LVL991: +5418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13472 .loc 1 5418 5 is_stmt 0 view .LVU4626 + 13473 0072 FFF7FEFF bl I2C_Enable_IRQ + 13474 .LVL992: +5421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13475 .loc 1 5421 5 is_stmt 1 view .LVU4627 + 13476 0076 2046 mov r0, r4 + 13477 0078 FFF7FEFF bl I2C_Flush_TXDR + 13478 .LVL993: + 13479 .L851: +5529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13480 .loc 1 5529 3 view .LVU4628 +5532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13481 .loc 1 5532 3 view .LVU4629 +5532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13482 .loc 1 5532 3 view .LVU4630 + 13483 007c 0020 movs r0, #0 + 13484 007e 84F84000 strb r0, [r4, #64] +5532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13485 .loc 1 5532 3 view .LVU4631 +5534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 447 + + + 13486 .loc 1 5534 3 view .LVU4632 +5535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13487 .loc 1 5535 1 is_stmt 0 view .LVU4633 + 13488 0082 02B0 add sp, sp, #8 + 13489 .LCFI142: + 13490 .cfi_remember_state + 13491 .cfi_def_cfa_offset 8 + 13492 @ sp needed + 13493 0084 10BD pop {r4, pc} + 13494 .LVL994: + 13495 .L855: + 13496 .LCFI143: + 13497 .cfi_restore_state +5444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13498 .loc 1 5444 11 is_stmt 1 view .LVU4634 +5444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13499 .loc 1 5444 26 is_stmt 0 view .LVU4635 + 13500 0086 FF23 movs r3, #255 + 13501 0088 2385 strh r3, [r4, #40] @ movhi +5446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13502 .loc 1 5446 18 view .LVU4636 + 13503 008a 4FF08073 mov r3, #16777216 + 13504 008e 06E0 b .L856 + 13505 .L854: +5450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + 13506 .loc 1 5450 9 is_stmt 1 view .LVU4637 +5450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + 13507 .loc 1 5450 30 is_stmt 0 view .LVU4638 + 13508 0090 638D ldrh r3, [r4, #42] +5450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) + 13509 .loc 1 5450 24 view .LVU4639 + 13510 0092 2385 strh r3, [r4, #40] @ movhi +5451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13511 .loc 1 5451 9 is_stmt 1 view .LVU4640 +5451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13512 .loc 1 5451 17 is_stmt 0 view .LVU4641 + 13513 0094 E36A ldr r3, [r4, #44] +5451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13514 .loc 1 5451 12 view .LVU4642 + 13515 0096 13F5803F cmn r3, #65536 + 13516 009a 18D0 beq .L863 +5453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13517 .loc 1 5453 11 is_stmt 1 view .LVU4643 +5453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13518 .loc 1 5453 20 is_stmt 0 view .LVU4644 + 13519 009c E36A ldr r3, [r4, #44] + 13520 .LVL995: + 13521 .L856: +5462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13522 .loc 1 5462 7 is_stmt 1 view .LVU4645 + 13523 009e 0022 movs r2, #0 + 13524 00a0 0092 str r2, [sp] + 13525 00a2 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 13526 00a6 2046 mov r0, r4 + 13527 .LVL996: +5462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13528 .loc 1 5462 7 is_stmt 0 view .LVU4646 + ARM GAS /tmp/ccVyGVF6.s page 448 + + + 13529 00a8 FFF7FEFF bl I2C_TransferConfig + 13530 .LVL997: +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13531 .loc 1 5465 7 is_stmt 1 view .LVU4647 +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13532 .loc 1 5465 23 is_stmt 0 view .LVU4648 + 13533 00ac 638D ldrh r3, [r4, #42] + 13534 00ae 9BB2 uxth r3, r3 +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13535 .loc 1 5465 30 view .LVU4649 + 13536 00b0 228D ldrh r2, [r4, #40] +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13537 .loc 1 5465 23 view .LVU4650 + 13538 00b2 9B1A subs r3, r3, r2 + 13539 00b4 9BB2 uxth r3, r3 + 13540 00b6 6385 strh r3, [r4, #42] @ movhi +5468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13541 .loc 1 5468 7 is_stmt 1 view .LVU4651 +5468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13542 .loc 1 5468 15 is_stmt 0 view .LVU4652 + 13543 00b8 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 13544 00bc DBB2 uxtb r3, r3 +5468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13545 .loc 1 5468 10 view .LVU4653 + 13546 00be 222B cmp r3, #34 + 13547 00c0 08D0 beq .L869 +5474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13548 .loc 1 5474 9 is_stmt 1 view .LVU4654 +5474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13549 .loc 1 5474 13 is_stmt 0 view .LVU4655 + 13550 00c2 2268 ldr r2, [r4] +5474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13551 .loc 1 5474 29 view .LVU4656 + 13552 00c4 1368 ldr r3, [r2] + 13553 00c6 43F48043 orr r3, r3, #16384 + 13554 00ca 1360 str r3, [r2] + 13555 00cc D6E7 b .L851 + 13556 .LVL998: + 13557 .L863: +5457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13558 .loc 1 5457 20 view .LVU4657 + 13559 00ce 4FF00073 mov r3, #33554432 + 13560 00d2 E4E7 b .L856 + 13561 .LVL999: + 13562 .L869: +5470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13563 .loc 1 5470 9 is_stmt 1 view .LVU4658 +5470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13564 .loc 1 5470 13 is_stmt 0 view .LVU4659 + 13565 00d4 2268 ldr r2, [r4] +5470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13566 .loc 1 5470 29 view .LVU4660 + 13567 00d6 1368 ldr r3, [r2] + 13568 00d8 43F40043 orr r3, r3, #32768 + 13569 00dc 1360 str r3, [r2] + 13570 00de CDE7 b .L851 + 13571 .LVL1000: + ARM GAS /tmp/ccVyGVF6.s page 449 + + + 13572 .L853: +5480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13573 .loc 1 5480 7 is_stmt 1 view .LVU4661 +5480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13574 .loc 1 5480 11 is_stmt 0 view .LVU4662 + 13575 00e0 2368 ldr r3, [r4] + 13576 00e2 5B68 ldr r3, [r3, #4] +5480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13577 .loc 1 5480 10 view .LVU4663 + 13578 00e4 13F0007F tst r3, #33554432 + 13579 00e8 03D1 bne .L858 +5483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13580 .loc 1 5483 9 is_stmt 1 view .LVU4664 + 13581 00ea 2046 mov r0, r4 + 13582 .LVL1001: +5483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13583 .loc 1 5483 9 is_stmt 0 view .LVU4665 + 13584 00ec FFF7FEFF bl I2C_ITMasterSeqCplt + 13585 .LVL1002: +5483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13586 .loc 1 5483 9 view .LVU4666 + 13587 00f0 C4E7 b .L851 + 13588 .LVL1003: + 13589 .L858: +5489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13590 .loc 1 5489 9 is_stmt 1 view .LVU4667 + 13591 00f2 4021 movs r1, #64 + 13592 .LVL1004: +5489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13593 .loc 1 5489 9 is_stmt 0 view .LVU4668 + 13594 00f4 2046 mov r0, r4 + 13595 .LVL1005: +5489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13596 .loc 1 5489 9 view .LVU4669 + 13597 00f6 FFF7FEFF bl I2C_ITError + 13598 .LVL1006: + 13599 00fa BFE7 b .L851 + 13600 .LVL1007: + 13601 .L852: +5493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 13602 .loc 1 5493 8 is_stmt 1 view .LVU4670 +5493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 13603 .loc 1 5493 11 is_stmt 0 view .LVU4671 + 13604 00fc 11F0400F tst r1, #64 + 13605 0100 1CD0 beq .L859 +5493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 13606 .loc 1 5493 60 discriminator 1 view .LVU4672 + 13607 0102 12F0400F tst r2, #64 + 13608 0106 19D0 beq .L859 +5496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13609 .loc 1 5496 5 is_stmt 1 view .LVU4673 +5496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13610 .loc 1 5496 13 is_stmt 0 view .LVU4674 + 13611 0108 638D ldrh r3, [r4, #42] + 13612 010a 9BB2 uxth r3, r3 +5496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13613 .loc 1 5496 8 view .LVU4675 + ARM GAS /tmp/ccVyGVF6.s page 450 + + + 13614 010c 8BB9 cbnz r3, .L860 +5498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13615 .loc 1 5498 7 is_stmt 1 view .LVU4676 +5498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13616 .loc 1 5498 11 is_stmt 0 view .LVU4677 + 13617 010e 2368 ldr r3, [r4] + 13618 0110 5A68 ldr r2, [r3, #4] + 13619 .LVL1008: +5498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13620 .loc 1 5498 10 view .LVU4678 + 13621 0112 12F0007F tst r2, #33554432 + 13622 0116 B1D1 bne .L851 +5501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13623 .loc 1 5501 9 is_stmt 1 view .LVU4679 +5501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13624 .loc 1 5501 17 is_stmt 0 view .LVU4680 + 13625 0118 E26A ldr r2, [r4, #44] +5501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13626 .loc 1 5501 12 view .LVU4681 + 13627 011a 12F5803F cmn r2, #65536 + 13628 011e 04D1 bne .L861 +5504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13629 .loc 1 5504 11 is_stmt 1 view .LVU4682 +5504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13630 .loc 1 5504 31 is_stmt 0 view .LVU4683 + 13631 0120 5A68 ldr r2, [r3, #4] + 13632 0122 42F48042 orr r2, r2, #16384 + 13633 0126 5A60 str r2, [r3, #4] + 13634 0128 A8E7 b .L851 + 13635 .L861: +5509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13636 .loc 1 5509 11 is_stmt 1 view .LVU4684 + 13637 012a 2046 mov r0, r4 + 13638 .LVL1009: +5509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13639 .loc 1 5509 11 is_stmt 0 view .LVU4685 + 13640 012c FFF7FEFF bl I2C_ITMasterSeqCplt + 13641 .LVL1010: +5509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13642 .loc 1 5509 11 view .LVU4686 + 13643 0130 A4E7 b .L851 + 13644 .LVL1011: + 13645 .L860: +5517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13646 .loc 1 5517 7 is_stmt 1 view .LVU4687 + 13647 0132 4021 movs r1, #64 + 13648 .LVL1012: +5517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13649 .loc 1 5517 7 is_stmt 0 view .LVU4688 + 13650 0134 2046 mov r0, r4 + 13651 .LVL1013: +5517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13652 .loc 1 5517 7 view .LVU4689 + 13653 0136 FFF7FEFF bl I2C_ITError + 13654 .LVL1014: +5517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13655 .loc 1 5517 7 view .LVU4690 + ARM GAS /tmp/ccVyGVF6.s page 451 + + + 13656 013a 9FE7 b .L851 + 13657 .LVL1015: + 13658 .L859: +5520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 13659 .loc 1 5520 8 is_stmt 1 view .LVU4691 +5520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 13660 .loc 1 5520 11 is_stmt 0 view .LVU4692 + 13661 013c 11F0200F tst r1, #32 + 13662 0140 9CD0 beq .L851 +5520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 13663 .loc 1 5520 63 discriminator 1 view .LVU4693 + 13664 0142 12F0200F tst r2, #32 + 13665 0146 99D0 beq .L851 +5524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13666 .loc 1 5524 5 is_stmt 1 view .LVU4694 + 13667 0148 2046 mov r0, r4 + 13668 .LVL1016: +5524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13669 .loc 1 5524 5 is_stmt 0 view .LVU4695 + 13670 014a FFF7FEFF bl I2C_ITMasterCplt + 13671 .LVL1017: +5524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13672 .loc 1 5524 5 view .LVU4696 + 13673 014e 95E7 b .L851 + 13674 .LVL1018: + 13675 .L862: + 13676 .LCFI144: + 13677 .cfi_def_cfa_offset 0 + 13678 .cfi_restore 4 + 13679 .cfi_restore 14 +5404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13680 .loc 1 5404 3 view .LVU4697 + 13681 0150 0220 movs r0, #2 + 13682 .LVL1019: +5535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13683 .loc 1 5535 1 view .LVU4698 + 13684 0152 7047 bx lr + 13685 .cfi_endproc + 13686 .LFE193: + 13688 .section .text.I2C_DMAError,"ax",%progbits + 13689 .align 1 + 13690 .syntax unified + 13691 .thumb + 13692 .thumb_func + 13693 .fpu fpv5-d16 + 13695 I2C_DMAError: + 13696 .LVL1020: + 13697 .LFB211: +6948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t treatdmaerror = 0U; + 13698 .loc 1 6948 1 is_stmt 1 view -0 + 13699 .cfi_startproc + 13700 @ args = 0, pretend = 0, frame = 0 + 13701 @ frame_needed = 0, uses_anonymous_args = 0 +6948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t treatdmaerror = 0U; + 13702 .loc 1 6948 1 is_stmt 0 view .LVU4700 + 13703 0000 38B5 push {r3, r4, r5, lr} + 13704 .LCFI145: + ARM GAS /tmp/ccVyGVF6.s page 452 + + + 13705 .cfi_def_cfa_offset 16 + 13706 .cfi_offset 3, -16 + 13707 .cfi_offset 4, -12 + 13708 .cfi_offset 5, -8 + 13709 .cfi_offset 14, -4 +6949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 13710 .loc 1 6949 3 is_stmt 1 view .LVU4701 + 13711 .LVL1021: +6951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13712 .loc 1 6951 3 view .LVU4702 +6951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13713 .loc 1 6951 22 is_stmt 0 view .LVU4703 + 13714 0002 846B ldr r4, [r0, #56] + 13715 .LVL1022: +6953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13716 .loc 1 6953 3 is_stmt 1 view .LVU4704 +6953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13717 .loc 1 6953 11 is_stmt 0 view .LVU4705 + 13718 0004 A36B ldr r3, [r4, #56] +6953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13719 .loc 1 6953 6 view .LVU4706 + 13720 0006 7BB1 cbz r3, .L874 +6955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13721 .loc 1 6955 5 is_stmt 1 view .LVU4707 +6955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13722 .loc 1 6955 9 is_stmt 0 view .LVU4708 + 13723 0008 1B68 ldr r3, [r3] + 13724 000a 5B68 ldr r3, [r3, #4] +6955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13725 .loc 1 6955 8 view .LVU4709 + 13726 000c 73B1 cbz r3, .L875 +6949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 13727 .loc 1 6949 12 view .LVU4710 + 13728 000e 0025 movs r5, #0 + 13729 .L871: + 13730 .LVL1023: +6961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13731 .loc 1 6961 3 is_stmt 1 view .LVU4711 +6961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13732 .loc 1 6961 11 is_stmt 0 view .LVU4712 + 13733 0010 E36B ldr r3, [r4, #60] +6961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13734 .loc 1 6961 6 view .LVU4713 + 13735 0012 1BB1 cbz r3, .L872 +6963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13736 .loc 1 6963 5 is_stmt 1 view .LVU4714 +6963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13737 .loc 1 6963 9 is_stmt 0 view .LVU4715 + 13738 0014 1B68 ldr r3, [r3] + 13739 0016 5B68 ldr r3, [r3, #4] +6963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13740 .loc 1 6963 8 view .LVU4716 + 13741 0018 03B9 cbnz r3, .L872 +6965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13742 .loc 1 6965 21 view .LVU4717 + 13743 001a 0125 movs r5, #1 + 13744 .LVL1024: + ARM GAS /tmp/ccVyGVF6.s page 453 + + + 13745 .L872: +6970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13746 .loc 1 6970 3 is_stmt 1 view .LVU4718 +6970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13747 .loc 1 6970 10 is_stmt 0 view .LVU4719 + 13748 001c FFF7FEFF bl HAL_DMA_GetError + 13749 .LVL1025: +6970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13750 .loc 1 6970 6 view .LVU4720 + 13751 0020 0228 cmp r0, #2 + 13752 0022 00D0 beq .L870 +6970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13753 .loc 1 6970 55 discriminator 1 view .LVU4721 + 13754 0024 25B9 cbnz r5, .L878 + 13755 .L870: +6978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13756 .loc 1 6978 1 view .LVU4722 + 13757 0026 38BD pop {r3, r4, r5, pc} + 13758 .LVL1026: + 13759 .L874: +6949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 13760 .loc 1 6949 12 view .LVU4723 + 13761 0028 0025 movs r5, #0 + 13762 002a F1E7 b .L871 + 13763 .L875: +6957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13764 .loc 1 6957 21 view .LVU4724 + 13765 002c 0125 movs r5, #1 + 13766 002e EFE7 b .L871 + 13767 .LVL1027: + 13768 .L878: +6973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13769 .loc 1 6973 5 is_stmt 1 view .LVU4725 +6973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13770 .loc 1 6973 9 is_stmt 0 view .LVU4726 + 13771 0030 2268 ldr r2, [r4] +6973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13772 .loc 1 6973 25 view .LVU4727 + 13773 0032 5368 ldr r3, [r2, #4] + 13774 0034 43F40043 orr r3, r3, #32768 + 13775 0038 5360 str r3, [r2, #4] +6976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13776 .loc 1 6976 5 is_stmt 1 view .LVU4728 + 13777 003a 1021 movs r1, #16 + 13778 003c 2046 mov r0, r4 + 13779 003e FFF7FEFF bl I2C_ITError + 13780 .LVL1028: +6978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13781 .loc 1 6978 1 is_stmt 0 view .LVU4729 + 13782 0042 F0E7 b .L870 + 13783 .cfi_endproc + 13784 .LFE211: + 13786 .section .text.I2C_DMAMasterTransmitCplt,"ax",%progbits + 13787 .align 1 + 13788 .syntax unified + 13789 .thumb + 13790 .thumb_func + ARM GAS /tmp/ccVyGVF6.s page 454 + + + 13791 .fpu fpv5-d16 + 13793 I2C_DMAMasterTransmitCplt: + 13794 .LVL1029: + 13795 .LFB207: +6780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 13796 .loc 1 6780 1 is_stmt 1 view -0 + 13797 .cfi_startproc + 13798 @ args = 0, pretend = 0, frame = 0 + 13799 @ frame_needed = 0, uses_anonymous_args = 0 +6780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 13800 .loc 1 6780 1 is_stmt 0 view .LVU4731 + 13801 0000 10B5 push {r4, lr} + 13802 .LCFI146: + 13803 .cfi_def_cfa_offset 8 + 13804 .cfi_offset 4, -8 + 13805 .cfi_offset 14, -4 +6782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13806 .loc 1 6782 3 is_stmt 1 view .LVU4732 +6782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13807 .loc 1 6782 22 is_stmt 0 view .LVU4733 + 13808 0002 846B ldr r4, [r0, #56] + 13809 .LVL1030: +6785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13810 .loc 1 6785 3 is_stmt 1 view .LVU4734 +6785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13811 .loc 1 6785 7 is_stmt 0 view .LVU4735 + 13812 0004 2268 ldr r2, [r4] +6785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13813 .loc 1 6785 23 view .LVU4736 + 13814 0006 1368 ldr r3, [r2] + 13815 0008 23F48043 bic r3, r3, #16384 + 13816 000c 1360 str r3, [r2] +6788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13817 .loc 1 6788 3 is_stmt 1 view .LVU4737 +6788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13818 .loc 1 6788 11 is_stmt 0 view .LVU4738 + 13819 000e 638D ldrh r3, [r4, #42] + 13820 0010 9BB2 uxth r3, r3 +6788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13821 .loc 1 6788 6 view .LVU4739 + 13822 0012 ABB1 cbz r3, .L886 +6797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13823 .loc 1 6797 5 is_stmt 1 view .LVU4740 +6797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13824 .loc 1 6797 27 is_stmt 0 view .LVU4741 + 13825 0014 238D ldrh r3, [r4, #40] +6797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13826 .loc 1 6797 20 view .LVU4742 + 13827 0016 616A ldr r1, [r4, #36] + 13828 0018 1944 add r1, r1, r3 + 13829 001a 6162 str r1, [r4, #36] +6800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13830 .loc 1 6800 5 is_stmt 1 view .LVU4743 +6800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13831 .loc 1 6800 13 is_stmt 0 view .LVU4744 + 13832 001c 638D ldrh r3, [r4, #42] + 13833 001e 9BB2 uxth r3, r3 + ARM GAS /tmp/ccVyGVF6.s page 455 + + +6800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13834 .loc 1 6800 8 view .LVU4745 + 13835 0020 FF2B cmp r3, #255 + 13836 0022 12D9 bls .L882 +6802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13837 .loc 1 6802 7 is_stmt 1 view .LVU4746 +6802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13838 .loc 1 6802 22 is_stmt 0 view .LVU4747 + 13839 0024 FF23 movs r3, #255 + 13840 0026 2385 strh r3, [r4, #40] @ movhi + 13841 .L883: +6810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) + 13842 .loc 1 6810 5 is_stmt 1 view .LVU4748 +6810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) + 13843 .loc 1 6810 81 is_stmt 0 view .LVU4749 + 13844 0028 2268 ldr r2, [r4] +6810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) + 13845 .loc 1 6810 9 view .LVU4750 + 13846 002a 238D ldrh r3, [r4, #40] + 13847 002c 2832 adds r2, r2, #40 + 13848 002e A06B ldr r0, [r4, #56] + 13849 .LVL1031: +6810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) + 13850 .loc 1 6810 9 view .LVU4751 + 13851 0030 FFF7FEFF bl HAL_DMA_Start_IT + 13852 .LVL1032: +6810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) + 13853 .loc 1 6810 8 view .LVU4752 + 13854 0034 60B1 cbz r0, .L884 +6814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13855 .loc 1 6814 7 is_stmt 1 view .LVU4753 + 13856 0036 1021 movs r1, #16 + 13857 0038 2046 mov r0, r4 + 13858 003a FFF7FEFF bl I2C_ITError + 13859 .LVL1033: + 13860 .L879: +6822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13861 .loc 1 6822 1 is_stmt 0 view .LVU4754 + 13862 003e 10BD pop {r4, pc} + 13863 .LVL1034: + 13864 .L886: +6791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13865 .loc 1 6791 5 is_stmt 1 view .LVU4755 + 13866 0040 2021 movs r1, #32 + 13867 0042 2046 mov r0, r4 + 13868 .LVL1035: +6791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13869 .loc 1 6791 5 is_stmt 0 view .LVU4756 + 13870 0044 FFF7FEFF bl I2C_Enable_IRQ + 13871 .LVL1036: + 13872 0048 F9E7 b .L879 + 13873 .LVL1037: + 13874 .L882: +6806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13875 .loc 1 6806 7 is_stmt 1 view .LVU4757 +6806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13876 .loc 1 6806 28 is_stmt 0 view .LVU4758 + ARM GAS /tmp/ccVyGVF6.s page 456 + + + 13877 004a 638D ldrh r3, [r4, #42] +6806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13878 .loc 1 6806 22 view .LVU4759 + 13879 004c 2385 strh r3, [r4, #40] @ movhi + 13880 004e EBE7 b .L883 + 13881 .LVL1038: + 13882 .L884: +6819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13883 .loc 1 6819 7 is_stmt 1 view .LVU4760 + 13884 0050 4021 movs r1, #64 + 13885 0052 2046 mov r0, r4 + 13886 0054 FFF7FEFF bl I2C_Enable_IRQ + 13887 .LVL1039: +6822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13888 .loc 1 6822 1 is_stmt 0 view .LVU4761 + 13889 0058 F1E7 b .L879 + 13890 .cfi_endproc + 13891 .LFE207: + 13893 .section .text.I2C_DMAMasterReceiveCplt,"ax",%progbits + 13894 .align 1 + 13895 .syntax unified + 13896 .thumb + 13897 .thumb_func + 13898 .fpu fpv5-d16 + 13900 I2C_DMAMasterReceiveCplt: + 13901 .LVL1040: + 13902 .LFB209: +6860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 13903 .loc 1 6860 1 is_stmt 1 view -0 + 13904 .cfi_startproc + 13905 @ args = 0, pretend = 0, frame = 0 + 13906 @ frame_needed = 0, uses_anonymous_args = 0 +6860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 13907 .loc 1 6860 1 is_stmt 0 view .LVU4763 + 13908 0000 10B5 push {r4, lr} + 13909 .LCFI147: + 13910 .cfi_def_cfa_offset 8 + 13911 .cfi_offset 4, -8 + 13912 .cfi_offset 14, -4 +6862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13913 .loc 1 6862 3 is_stmt 1 view .LVU4764 +6862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13914 .loc 1 6862 22 is_stmt 0 view .LVU4765 + 13915 0002 846B ldr r4, [r0, #56] + 13916 .LVL1041: +6865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13917 .loc 1 6865 3 is_stmt 1 view .LVU4766 +6865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13918 .loc 1 6865 7 is_stmt 0 view .LVU4767 + 13919 0004 2268 ldr r2, [r4] +6865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13920 .loc 1 6865 23 view .LVU4768 + 13921 0006 1368 ldr r3, [r2] + 13922 0008 23F40043 bic r3, r3, #32768 + 13923 000c 1360 str r3, [r2] +6868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13924 .loc 1 6868 3 is_stmt 1 view .LVU4769 + ARM GAS /tmp/ccVyGVF6.s page 457 + + +6868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13925 .loc 1 6868 11 is_stmt 0 view .LVU4770 + 13926 000e 638D ldrh r3, [r4, #42] + 13927 0010 9BB2 uxth r3, r3 +6868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13928 .loc 1 6868 6 view .LVU4771 + 13929 0012 7BB1 cbz r3, .L895 +6877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13930 .loc 1 6877 5 is_stmt 1 view .LVU4772 +6877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13931 .loc 1 6877 27 is_stmt 0 view .LVU4773 + 13932 0014 238D ldrh r3, [r4, #40] +6877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13933 .loc 1 6877 20 view .LVU4774 + 13934 0016 626A ldr r2, [r4, #36] + 13935 0018 1A44 add r2, r2, r3 + 13936 001a 6262 str r2, [r4, #36] +6880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13937 .loc 1 6880 5 is_stmt 1 view .LVU4775 +6880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13938 .loc 1 6880 13 is_stmt 0 view .LVU4776 + 13939 001c 638D ldrh r3, [r4, #42] + 13940 001e 9BB2 uxth r3, r3 +6880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13941 .loc 1 6880 8 view .LVU4777 + 13942 0020 FF2B cmp r3, #255 + 13943 0022 0FD9 bls .L890 +6883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13944 .loc 1 6883 7 is_stmt 1 view .LVU4778 +6883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13945 .loc 1 6883 11 is_stmt 0 view .LVU4779 + 13946 0024 2368 ldr r3, [r4] + 13947 0026 9B69 ldr r3, [r3, #24] +6883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 13948 .loc 1 6883 10 view .LVU4780 + 13949 0028 13F4803F tst r3, #65536 + 13950 002c 07D0 beq .L891 +6885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13951 .loc 1 6885 9 is_stmt 1 view .LVU4781 +6885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13952 .loc 1 6885 24 is_stmt 0 view .LVU4782 + 13953 002e 0123 movs r3, #1 + 13954 0030 2385 strh r3, [r4, #40] @ movhi + 13955 0032 09E0 b .L892 + 13956 .L895: +6871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13957 .loc 1 6871 5 is_stmt 1 view .LVU4783 + 13958 0034 2021 movs r1, #32 + 13959 0036 2046 mov r0, r4 + 13960 .LVL1042: +6871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13961 .loc 1 6871 5 is_stmt 0 view .LVU4784 + 13962 0038 FFF7FEFF bl I2C_Enable_IRQ + 13963 .LVL1043: + 13964 003c 0FE0 b .L887 + 13965 .LVL1044: + 13966 .L891: + ARM GAS /tmp/ccVyGVF6.s page 458 + + +6889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13967 .loc 1 6889 9 is_stmt 1 view .LVU4785 +6889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13968 .loc 1 6889 24 is_stmt 0 view .LVU4786 + 13969 003e FF23 movs r3, #255 + 13970 0040 2385 strh r3, [r4, #40] @ movhi + 13971 0042 01E0 b .L892 + 13972 .L890: +6894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13973 .loc 1 6894 7 is_stmt 1 view .LVU4787 +6894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13974 .loc 1 6894 28 is_stmt 0 view .LVU4788 + 13975 0044 638D ldrh r3, [r4, #42] +6894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13976 .loc 1 6894 22 view .LVU4789 + 13977 0046 2385 strh r3, [r4, #40] @ movhi + 13978 .L892: +6898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) + 13979 .loc 1 6898 5 is_stmt 1 view .LVU4790 +6898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) + 13980 .loc 1 6898 55 is_stmt 0 view .LVU4791 + 13981 0048 2168 ldr r1, [r4] +6898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) + 13982 .loc 1 6898 9 view .LVU4792 + 13983 004a 238D ldrh r3, [r4, #40] + 13984 004c 2431 adds r1, r1, #36 + 13985 004e E06B ldr r0, [r4, #60] + 13986 .LVL1045: +6898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) + 13987 .loc 1 6898 9 view .LVU4793 + 13988 0050 FFF7FEFF bl HAL_DMA_Start_IT + 13989 .LVL1046: +6898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferSize) != HAL_OK) + 13990 .loc 1 6898 8 view .LVU4794 + 13991 0054 20B1 cbz r0, .L893 +6902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 13992 .loc 1 6902 7 is_stmt 1 view .LVU4795 + 13993 0056 1021 movs r1, #16 + 13994 0058 2046 mov r0, r4 + 13995 005a FFF7FEFF bl I2C_ITError + 13996 .LVL1047: + 13997 .L887: +6910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 13998 .loc 1 6910 1 is_stmt 0 view .LVU4796 + 13999 005e 10BD pop {r4, pc} + 14000 .LVL1048: + 14001 .L893: +6907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14002 .loc 1 6907 7 is_stmt 1 view .LVU4797 + 14003 0060 4021 movs r1, #64 + 14004 0062 2046 mov r0, r4 + 14005 0064 FFF7FEFF bl I2C_Enable_IRQ + 14006 .LVL1049: +6910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14007 .loc 1 6910 1 is_stmt 0 view .LVU4798 + 14008 0068 F9E7 b .L887 + 14009 .cfi_endproc + ARM GAS /tmp/ccVyGVF6.s page 459 + + + 14010 .LFE209: + 14012 .section .text.I2C_Mem_ISR_IT,"ax",%progbits + 14013 .align 1 + 14014 .syntax unified + 14015 .thumb + 14016 .thumb_func + 14017 .fpu fpv5-d16 + 14019 I2C_Mem_ISR_IT: + 14020 .LVL1050: + 14021 .LFB191: +5100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE; + 14022 .loc 1 5100 1 is_stmt 1 view -0 + 14023 .cfi_startproc + 14024 @ args = 0, pretend = 0, frame = 0 + 14025 @ frame_needed = 0, uses_anonymous_args = 0 +5101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; + 14026 .loc 1 5101 3 view .LVU4800 +5102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14027 .loc 1 5102 3 view .LVU4801 +5105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14028 .loc 1 5105 3 view .LVU4802 +5105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14029 .loc 1 5105 3 view .LVU4803 + 14030 0000 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 14031 0004 012B cmp r3, #1 + 14032 0006 00F0D580 beq .L913 +5100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t direction = I2C_GENERATE_START_WRITE; + 14033 .loc 1 5100 1 is_stmt 0 discriminator 2 view .LVU4804 + 14034 000a 70B5 push {r4, r5, r6, lr} + 14035 .LCFI148: + 14036 .cfi_def_cfa_offset 16 + 14037 .cfi_offset 4, -16 + 14038 .cfi_offset 5, -12 + 14039 .cfi_offset 6, -8 + 14040 .cfi_offset 14, -4 + 14041 000c 82B0 sub sp, sp, #8 + 14042 .LCFI149: + 14043 .cfi_def_cfa_offset 24 + 14044 000e 0446 mov r4, r0 + 14045 0010 0D46 mov r5, r1 + 14046 0012 1646 mov r6, r2 +5105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14047 .loc 1 5105 3 is_stmt 1 discriminator 2 view .LVU4805 + 14048 0014 0123 movs r3, #1 + 14049 0016 80F84030 strb r3, [r0, #64] +5105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14050 .loc 1 5105 3 discriminator 2 view .LVU4806 +5107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 14051 .loc 1 5107 3 discriminator 2 view .LVU4807 +5107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 14052 .loc 1 5107 6 is_stmt 0 discriminator 2 view .LVU4808 + 14053 001a 11F0100F tst r1, #16 + 14054 001e 02D0 beq .L898 +5107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) + 14055 .loc 1 5107 58 discriminator 1 view .LVU4809 + 14056 0020 12F0100F tst r2, #16 + 14057 0024 22D1 bne .L919 + ARM GAS /tmp/ccVyGVF6.s page 460 + + + 14058 .L898: +5121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + 14059 .loc 1 5121 8 is_stmt 1 view .LVU4810 +5121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + 14060 .loc 1 5121 11 is_stmt 0 view .LVU4811 + 14061 0026 15F0040F tst r5, #4 + 14062 002a 29D0 beq .L900 +5121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) + 14063 .loc 1 5121 65 discriminator 1 view .LVU4812 + 14064 002c 16F0040F tst r6, #4 + 14065 0030 26D0 beq .L900 +5125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14066 .loc 1 5125 5 is_stmt 1 view .LVU4813 +5125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14067 .loc 1 5125 16 is_stmt 0 view .LVU4814 + 14068 0032 25F00405 bic r5, r5, #4 + 14069 .LVL1051: +5128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14070 .loc 1 5128 5 is_stmt 1 view .LVU4815 +5128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14071 .loc 1 5128 36 is_stmt 0 view .LVU4816 + 14072 0036 2368 ldr r3, [r4] +5128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14073 .loc 1 5128 46 view .LVU4817 + 14074 0038 5A6A ldr r2, [r3, #36] + 14075 .LVL1052: +5128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14076 .loc 1 5128 10 view .LVU4818 + 14077 003a 636A ldr r3, [r4, #36] +5128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14078 .loc 1 5128 21 view .LVU4819 + 14079 003c 1A70 strb r2, [r3] +5131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14080 .loc 1 5131 5 is_stmt 1 view .LVU4820 +5131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14081 .loc 1 5131 9 is_stmt 0 view .LVU4821 + 14082 003e 636A ldr r3, [r4, #36] +5131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14083 .loc 1 5131 19 view .LVU4822 + 14084 0040 0133 adds r3, r3, #1 + 14085 0042 6362 str r3, [r4, #36] +5133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 14086 .loc 1 5133 5 is_stmt 1 view .LVU4823 +5133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 14087 .loc 1 5133 9 is_stmt 0 view .LVU4824 + 14088 0044 238D ldrh r3, [r4, #40] +5133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 14089 .loc 1 5133 19 view .LVU4825 + 14090 0046 013B subs r3, r3, #1 + 14091 0048 2385 strh r3, [r4, #40] @ movhi +5134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14092 .loc 1 5134 5 is_stmt 1 view .LVU4826 +5134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14093 .loc 1 5134 9 is_stmt 0 view .LVU4827 + 14094 004a 638D ldrh r3, [r4, #42] + 14095 004c 9BB2 uxth r3, r3 +5134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 461 + + + 14096 .loc 1 5134 20 view .LVU4828 + 14097 004e 013B subs r3, r3, #1 + 14098 0050 9BB2 uxth r3, r3 + 14099 0052 6385 strh r3, [r4, #42] @ movhi + 14100 .LVL1053: + 14101 .L899: +5234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14102 .loc 1 5234 3 is_stmt 1 view .LVU4829 +5236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 14103 .loc 1 5236 3 view .LVU4830 +5236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 14104 .loc 1 5236 6 is_stmt 0 view .LVU4831 + 14105 0054 15F0200F tst r5, #32 + 14106 0058 03D0 beq .L912 +5236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) + 14107 .loc 1 5236 61 discriminator 1 view .LVU4832 + 14108 005a 16F0200F tst r6, #32 + 14109 005e 40F0A480 bne .L920 + 14110 .L912: +5244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14111 .loc 1 5244 3 is_stmt 1 view .LVU4833 +5244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14112 .loc 1 5244 3 view .LVU4834 + 14113 0062 0020 movs r0, #0 + 14114 0064 84F84000 strb r0, [r4, #64] +5244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14115 .loc 1 5244 3 view .LVU4835 +5246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14116 .loc 1 5246 3 view .LVU4836 +5247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14117 .loc 1 5247 1 is_stmt 0 view .LVU4837 + 14118 0068 02B0 add sp, sp, #8 + 14119 .LCFI150: + 14120 .cfi_remember_state + 14121 .cfi_def_cfa_offset 16 + 14122 @ sp needed + 14123 006a 70BD pop {r4, r5, r6, pc} + 14124 .LVL1054: + 14125 .L919: + 14126 .LCFI151: + 14127 .cfi_restore_state +5111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14128 .loc 1 5111 5 is_stmt 1 view .LVU4838 + 14129 006c 0368 ldr r3, [r0] + 14130 006e 1022 movs r2, #16 + 14131 .LVL1055: +5111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14132 .loc 1 5111 5 is_stmt 0 view .LVU4839 + 14133 0070 DA61 str r2, [r3, #28] +5116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14134 .loc 1 5116 5 is_stmt 1 view .LVU4840 +5116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14135 .loc 1 5116 21 is_stmt 0 view .LVU4841 + 14136 0072 436C ldr r3, [r0, #68] + 14137 0074 43F00403 orr r3, r3, #4 + 14138 0078 4364 str r3, [r0, #68] +5119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + ARM GAS /tmp/ccVyGVF6.s page 462 + + + 14139 .loc 1 5119 5 is_stmt 1 view .LVU4842 + 14140 007a FFF7FEFF bl I2C_Flush_TXDR + 14141 .LVL1056: +5119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14142 .loc 1 5119 5 is_stmt 0 view .LVU4843 + 14143 007e E9E7 b .L899 + 14144 .LVL1057: + 14145 .L900: +5136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + 14146 .loc 1 5136 8 is_stmt 1 view .LVU4844 +5136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + 14147 .loc 1 5136 11 is_stmt 0 view .LVU4845 + 14148 0080 15F0020F tst r5, #2 + 14149 0084 1DD0 beq .L901 +5136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) + 14150 .loc 1 5136 65 discriminator 1 view .LVU4846 + 14151 0086 16F0020F tst r6, #2 + 14152 008a 1AD0 beq .L901 +5139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14153 .loc 1 5139 5 is_stmt 1 view .LVU4847 +5139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14154 .loc 1 5139 13 is_stmt 0 view .LVU4848 + 14155 008c 236D ldr r3, [r4, #80] +5139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14156 .loc 1 5139 8 view .LVU4849 + 14157 008e B3F1FF3F cmp r3, #-1 + 14158 0092 06D0 beq .L921 +5153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14159 .loc 1 5153 7 is_stmt 1 view .LVU4850 +5153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14160 .loc 1 5153 11 is_stmt 0 view .LVU4851 + 14161 0094 2368 ldr r3, [r4] +5153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14162 .loc 1 5153 34 view .LVU4852 + 14163 0096 226D ldr r2, [r4, #80] + 14164 .LVL1058: +5153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14165 .loc 1 5153 28 view .LVU4853 + 14166 0098 9A62 str r2, [r3, #40] +5156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14167 .loc 1 5156 7 is_stmt 1 view .LVU4854 +5156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14168 .loc 1 5156 24 is_stmt 0 view .LVU4855 + 14169 009a 4FF0FF33 mov r3, #-1 + 14170 009e 2365 str r3, [r4, #80] + 14171 00a0 D8E7 b .L899 + 14172 .LVL1059: + 14173 .L921: +5142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14174 .loc 1 5142 7 is_stmt 1 view .LVU4856 +5142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14175 .loc 1 5142 35 is_stmt 0 view .LVU4857 + 14176 00a2 626A ldr r2, [r4, #36] + 14177 .LVL1060: +5142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14178 .loc 1 5142 11 view .LVU4858 + 14179 00a4 2368 ldr r3, [r4] + ARM GAS /tmp/ccVyGVF6.s page 463 + + +5142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14180 .loc 1 5142 30 view .LVU4859 + 14181 00a6 1278 ldrb r2, [r2] @ zero_extendqisi2 +5142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14182 .loc 1 5142 28 view .LVU4860 + 14183 00a8 9A62 str r2, [r3, #40] +5145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14184 .loc 1 5145 7 is_stmt 1 view .LVU4861 +5145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14185 .loc 1 5145 11 is_stmt 0 view .LVU4862 + 14186 00aa 636A ldr r3, [r4, #36] +5145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14187 .loc 1 5145 21 view .LVU4863 + 14188 00ac 0133 adds r3, r3, #1 + 14189 00ae 6362 str r3, [r4, #36] +5147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 14190 .loc 1 5147 7 is_stmt 1 view .LVU4864 +5147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 14191 .loc 1 5147 11 is_stmt 0 view .LVU4865 + 14192 00b0 238D ldrh r3, [r4, #40] +5147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** hi2c->XferCount--; + 14193 .loc 1 5147 21 view .LVU4866 + 14194 00b2 013B subs r3, r3, #1 + 14195 00b4 2385 strh r3, [r4, #40] @ movhi +5148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14196 .loc 1 5148 7 is_stmt 1 view .LVU4867 +5148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14197 .loc 1 5148 11 is_stmt 0 view .LVU4868 + 14198 00b6 638D ldrh r3, [r4, #42] + 14199 00b8 9BB2 uxth r3, r3 +5148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14200 .loc 1 5148 22 view .LVU4869 + 14201 00ba 013B subs r3, r3, #1 + 14202 00bc 9BB2 uxth r3, r3 + 14203 00be 6385 strh r3, [r4, #42] @ movhi + 14204 00c0 C8E7 b .L899 + 14205 .LVL1061: + 14206 .L901: +5159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 14207 .loc 1 5159 8 is_stmt 1 view .LVU4870 +5159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 14208 .loc 1 5159 11 is_stmt 0 view .LVU4871 + 14209 00c2 15F0800F tst r5, #128 + 14210 00c6 34D0 beq .L903 +5159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 14211 .loc 1 5159 64 discriminator 1 view .LVU4872 + 14212 00c8 16F0400F tst r6, #64 + 14213 00cc 31D0 beq .L903 +5162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14214 .loc 1 5162 5 is_stmt 1 view .LVU4873 +5162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14215 .loc 1 5162 14 is_stmt 0 view .LVU4874 + 14216 00ce 638D ldrh r3, [r4, #42] + 14217 00d0 9BB2 uxth r3, r3 +5162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14218 .loc 1 5162 8 view .LVU4875 + 14219 00d2 4BB3 cbz r3, .L904 + ARM GAS /tmp/ccVyGVF6.s page 464 + + +5162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14220 .loc 1 5162 41 discriminator 1 view .LVU4876 + 14221 00d4 238D ldrh r3, [r4, #40] +5162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14222 .loc 1 5162 33 discriminator 1 view .LVU4877 + 14223 00d6 3BBB cbnz r3, .L904 +5164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14224 .loc 1 5164 7 is_stmt 1 view .LVU4878 +5164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14225 .loc 1 5164 15 is_stmt 0 view .LVU4879 + 14226 00d8 638D ldrh r3, [r4, #42] + 14227 00da 9BB2 uxth r3, r3 +5164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14228 .loc 1 5164 10 view .LVU4880 + 14229 00dc FF2B cmp r3, #255 + 14230 00de 15D9 bls .L905 +5167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14231 .loc 1 5167 9 is_stmt 1 view .LVU4881 +5167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14232 .loc 1 5167 13 is_stmt 0 view .LVU4882 + 14233 00e0 2368 ldr r3, [r4] + 14234 00e2 9B69 ldr r3, [r3, #24] +5167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14235 .loc 1 5167 12 view .LVU4883 + 14236 00e4 13F4803F tst r3, #65536 + 14237 00e8 0DD0 beq .L906 +5169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14238 .loc 1 5169 11 is_stmt 1 view .LVU4884 +5169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14239 .loc 1 5169 26 is_stmt 0 view .LVU4885 + 14240 00ea 0123 movs r3, #1 + 14241 00ec 2385 strh r3, [r4, #40] @ movhi + 14242 .L907: +5175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + 14243 .loc 1 5175 9 is_stmt 1 view .LVU4886 +5175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + 14244 .loc 1 5175 48 is_stmt 0 view .LVU4887 + 14245 00ee E16C ldr r1, [r4, #76] + 14246 .LVL1062: +5175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + 14247 .loc 1 5175 9 view .LVU4888 + 14248 00f0 0023 movs r3, #0 + 14249 00f2 0093 str r3, [sp] + 14250 00f4 4FF08073 mov r3, #16777216 + 14251 00f8 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 14252 .LVL1063: +5175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + 14253 .loc 1 5175 9 view .LVU4889 + 14254 00fc 89B2 uxth r1, r1 + 14255 00fe 2046 mov r0, r4 + 14256 .LVL1064: +5175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, I2C_NO_STARTSTOP); + 14257 .loc 1 5175 9 view .LVU4890 + 14258 0100 FFF7FEFF bl I2C_TransferConfig + 14259 .LVL1065: + 14260 0104 A6E7 b .L899 + 14261 .LVL1066: + ARM GAS /tmp/ccVyGVF6.s page 465 + + + 14262 .L906: +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14263 .loc 1 5173 11 is_stmt 1 view .LVU4891 +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14264 .loc 1 5173 26 is_stmt 0 view .LVU4892 + 14265 0106 FF23 movs r3, #255 + 14266 0108 2385 strh r3, [r4, #40] @ movhi + 14267 010a F0E7 b .L907 + 14268 .L905: +5180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + 14269 .loc 1 5180 9 is_stmt 1 view .LVU4893 +5180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + 14270 .loc 1 5180 30 is_stmt 0 view .LVU4894 + 14271 010c 628D ldrh r2, [r4, #42] + 14272 .LVL1067: +5180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + 14273 .loc 1 5180 30 view .LVU4895 + 14274 010e 92B2 uxth r2, r2 +5180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_TransferConfig(hi2c, (uint16_t)hi2c->Devaddress, (uint8_t)hi2c->XferSize, + 14275 .loc 1 5180 24 view .LVU4896 + 14276 0110 2285 strh r2, [r4, #40] @ movhi +5181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + 14277 .loc 1 5181 9 is_stmt 1 view .LVU4897 +5181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + 14278 .loc 1 5181 48 is_stmt 0 view .LVU4898 + 14279 0112 E16C ldr r1, [r4, #76] + 14280 .LVL1068: +5181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + 14281 .loc 1 5181 9 view .LVU4899 + 14282 0114 0023 movs r3, #0 + 14283 0116 0093 str r3, [sp] + 14284 0118 4FF00073 mov r3, #33554432 + 14285 011c D2B2 uxtb r2, r2 + 14286 011e 89B2 uxth r1, r1 + 14287 0120 2046 mov r0, r4 + 14288 .LVL1069: +5181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, I2C_NO_STARTSTOP); + 14289 .loc 1 5181 9 view .LVU4900 + 14290 0122 FFF7FEFF bl I2C_TransferConfig + 14291 .LVL1070: + 14292 0126 95E7 b .L899 + 14293 .LVL1071: + 14294 .L904: +5189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14295 .loc 1 5189 7 is_stmt 1 view .LVU4901 + 14296 0128 4021 movs r1, #64 + 14297 .LVL1072: +5189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14298 .loc 1 5189 7 is_stmt 0 view .LVU4902 + 14299 012a 2046 mov r0, r4 + 14300 .LVL1073: +5189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14301 .loc 1 5189 7 view .LVU4903 + 14302 012c FFF7FEFF bl I2C_ITError + 14303 .LVL1074: +5189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14304 .loc 1 5189 7 view .LVU4904 + ARM GAS /tmp/ccVyGVF6.s page 466 + + + 14305 0130 90E7 b .L899 + 14306 .LVL1075: + 14307 .L903: +5192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 14308 .loc 1 5192 8 is_stmt 1 view .LVU4905 +5192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 14309 .loc 1 5192 11 is_stmt 0 view .LVU4906 + 14310 0132 15F0400F tst r5, #64 + 14311 0136 8DD0 beq .L899 +5192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TCI) != RESET)) + 14312 .loc 1 5192 63 discriminator 1 view .LVU4907 + 14313 0138 16F0400F tst r6, #64 + 14314 013c 8AD0 beq .L899 +5196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14315 .loc 1 5196 5 is_stmt 1 view .LVU4908 + 14316 013e 0121 movs r1, #1 + 14317 .LVL1076: +5196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14318 .loc 1 5196 5 is_stmt 0 view .LVU4909 + 14319 0140 2046 mov r0, r4 + 14320 .LVL1077: +5196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14321 .loc 1 5196 5 view .LVU4910 + 14322 0142 FFF7FEFF bl I2C_Disable_IRQ + 14323 .LVL1078: +5199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14324 .loc 1 5199 5 is_stmt 1 view .LVU4911 + 14325 0146 0221 movs r1, #2 + 14326 0148 2046 mov r0, r4 + 14327 014a FFF7FEFF bl I2C_Enable_IRQ + 14328 .LVL1079: +5201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14329 .loc 1 5201 5 view .LVU4912 +5201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14330 .loc 1 5201 13 is_stmt 0 view .LVU4913 + 14331 014e 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 14332 0152 DBB2 uxtb r3, r3 +5201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14333 .loc 1 5201 8 view .LVU4914 + 14334 0154 222B cmp r3, #34 + 14335 0156 16D0 beq .L914 +5101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmpITFlags = ITFlags; + 14336 .loc 1 5101 12 view .LVU4915 + 14337 0158 1748 ldr r0, .L922 + 14338 .L908: + 14339 .LVL1080: +5206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14340 .loc 1 5206 5 is_stmt 1 view .LVU4916 +5206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14341 .loc 1 5206 13 is_stmt 0 view .LVU4917 + 14342 015a 638D ldrh r3, [r4, #42] + 14343 015c 9BB2 uxth r3, r3 +5206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14344 .loc 1 5206 8 view .LVU4918 + 14345 015e FF2B cmp r3, #255 + 14346 0160 16D9 bls .L909 +5209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + ARM GAS /tmp/ccVyGVF6.s page 467 + + + 14347 .loc 1 5209 7 is_stmt 1 view .LVU4919 +5209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14348 .loc 1 5209 11 is_stmt 0 view .LVU4920 + 14349 0162 2368 ldr r3, [r4] + 14350 0164 9B69 ldr r3, [r3, #24] +5209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14351 .loc 1 5209 10 view .LVU4921 + 14352 0166 13F4803F tst r3, #65536 + 14353 016a 0ED0 beq .L910 +5211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14354 .loc 1 5211 9 is_stmt 1 view .LVU4922 +5211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14355 .loc 1 5211 24 is_stmt 0 view .LVU4923 + 14356 016c 0123 movs r3, #1 + 14357 016e 2385 strh r3, [r4, #40] @ movhi + 14358 .L911: +5219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); + 14359 .loc 1 5219 7 is_stmt 1 view .LVU4924 +5219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); + 14360 .loc 1 5219 46 is_stmt 0 view .LVU4925 + 14361 0170 E16C ldr r1, [r4, #76] +5219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); + 14362 .loc 1 5219 7 view .LVU4926 + 14363 0172 0090 str r0, [sp] + 14364 0174 4FF08073 mov r3, #16777216 + 14365 0178 94F82820 ldrb r2, [r4, #40] @ zero_extendqisi2 + 14366 017c 89B2 uxth r1, r1 + 14367 017e 2046 mov r0, r4 + 14368 .LVL1081: +5219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); + 14369 .loc 1 5219 7 view .LVU4927 + 14370 0180 FFF7FEFF bl I2C_TransferConfig + 14371 .LVL1082: +5219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_RELOAD_MODE, direction); + 14372 .loc 1 5219 7 view .LVU4928 + 14373 0184 66E7 b .L899 + 14374 .LVL1083: + 14375 .L914: +5203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14376 .loc 1 5203 17 view .LVU4929 + 14377 0186 0D48 ldr r0, .L922+4 + 14378 0188 E7E7 b .L908 + 14379 .LVL1084: + 14380 .L910: +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14381 .loc 1 5215 9 is_stmt 1 view .LVU4930 +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14382 .loc 1 5215 24 is_stmt 0 view .LVU4931 + 14383 018a FF23 movs r3, #255 + 14384 018c 2385 strh r3, [r4, #40] @ movhi + 14385 018e EFE7 b .L911 + 14386 .L909: +5224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14387 .loc 1 5224 7 is_stmt 1 view .LVU4932 +5224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14388 .loc 1 5224 28 is_stmt 0 view .LVU4933 + 14389 0190 628D ldrh r2, [r4, #42] + ARM GAS /tmp/ccVyGVF6.s page 468 + + + 14390 0192 92B2 uxth r2, r2 +5224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14391 .loc 1 5224 22 view .LVU4934 + 14392 0194 2285 strh r2, [r4, #40] @ movhi +5227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); + 14393 .loc 1 5227 7 is_stmt 1 view .LVU4935 +5227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); + 14394 .loc 1 5227 46 is_stmt 0 view .LVU4936 + 14395 0196 E16C ldr r1, [r4, #76] +5227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); + 14396 .loc 1 5227 7 view .LVU4937 + 14397 0198 0090 str r0, [sp] + 14398 019a 4FF00073 mov r3, #33554432 + 14399 019e D2B2 uxtb r2, r2 + 14400 01a0 89B2 uxth r1, r1 + 14401 01a2 2046 mov r0, r4 + 14402 .LVL1085: +5227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); + 14403 .loc 1 5227 7 view .LVU4938 + 14404 01a4 FFF7FEFF bl I2C_TransferConfig + 14405 .LVL1086: +5227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** I2C_AUTOEND_MODE, direction); + 14406 .loc 1 5227 7 view .LVU4939 + 14407 01a8 54E7 b .L899 + 14408 .LVL1087: + 14409 .L920: +5240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14410 .loc 1 5240 5 is_stmt 1 view .LVU4940 + 14411 01aa 2946 mov r1, r5 + 14412 01ac 2046 mov r0, r4 + 14413 01ae FFF7FEFF bl I2C_ITMasterCplt + 14414 .LVL1088: + 14415 01b2 56E7 b .L912 + 14416 .LVL1089: + 14417 .L913: + 14418 .LCFI152: + 14419 .cfi_def_cfa_offset 0 + 14420 .cfi_restore 4 + 14421 .cfi_restore 5 + 14422 .cfi_restore 6 + 14423 .cfi_restore 14 +5105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14424 .loc 1 5105 3 is_stmt 0 view .LVU4941 + 14425 01b4 0220 movs r0, #2 + 14426 .LVL1090: +5247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14427 .loc 1 5247 1 view .LVU4942 + 14428 01b6 7047 bx lr + 14429 .L923: + 14430 .align 2 + 14431 .L922: + 14432 01b8 00200080 .word -2147475456 + 14433 01bc 00240080 .word -2147474432 + 14434 .cfi_endproc + 14435 .LFE191: + 14437 .section .text.HAL_I2C_ER_IRQHandler,"ax",%progbits + 14438 .align 1 + ARM GAS /tmp/ccVyGVF6.s page 469 + + + 14439 .global HAL_I2C_ER_IRQHandler + 14440 .syntax unified + 14441 .thumb + 14442 .thumb_func + 14443 .fpu fpv5-d16 + 14445 HAL_I2C_ER_IRQHandler: + 14446 .LVL1091: + 14447 .LFB176: +4658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itflags = READ_REG(hi2c->Instance->ISR); + 14448 .loc 1 4658 1 is_stmt 1 view -0 + 14449 .cfi_startproc + 14450 @ args = 0, pretend = 0, frame = 0 + 14451 @ frame_needed = 0, uses_anonymous_args = 0 +4658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itflags = READ_REG(hi2c->Instance->ISR); + 14452 .loc 1 4658 1 is_stmt 0 view .LVU4944 + 14453 0000 10B5 push {r4, lr} + 14454 .LCFI153: + 14455 .cfi_def_cfa_offset 8 + 14456 .cfi_offset 4, -8 + 14457 .cfi_offset 14, -4 +4659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); + 14458 .loc 1 4659 3 is_stmt 1 view .LVU4945 +4659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); + 14459 .loc 1 4659 24 is_stmt 0 view .LVU4946 + 14460 0002 0268 ldr r2, [r0] +4659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t itsources = READ_REG(hi2c->Instance->CR1); + 14461 .loc 1 4659 12 view .LVU4947 + 14462 0004 9369 ldr r3, [r2, #24] + 14463 .LVL1092: +4660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmperror; + 14464 .loc 1 4660 3 is_stmt 1 view .LVU4948 +4660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** uint32_t tmperror; + 14465 .loc 1 4660 12 is_stmt 0 view .LVU4949 + 14466 0006 1168 ldr r1, [r2] + 14467 .LVL1093: +4661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14468 .loc 1 4661 3 is_stmt 1 view .LVU4950 +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + 14469 .loc 1 4664 3 view .LVU4951 +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + 14470 .loc 1 4664 6 is_stmt 0 view .LVU4952 + 14471 0008 13F4807F tst r3, #256 + 14472 000c 09D0 beq .L925 +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + 14473 .loc 1 4664 57 discriminator 1 view .LVU4953 + 14474 000e 11F0800F tst r1, #128 + 14475 0012 06D0 beq .L925 +4667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14476 .loc 1 4667 5 is_stmt 1 view .LVU4954 +4667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14477 .loc 1 4667 21 is_stmt 0 view .LVU4955 + 14478 0014 446C ldr r4, [r0, #68] + 14479 0016 44F00104 orr r4, r4, #1 + 14480 001a 4464 str r4, [r0, #68] +4670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14481 .loc 1 4670 5 is_stmt 1 view .LVU4956 + 14482 001c 4FF48074 mov r4, #256 + ARM GAS /tmp/ccVyGVF6.s page 470 + + + 14483 0020 D461 str r4, [r2, #28] + 14484 .L925: +4674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + 14485 .loc 1 4674 3 view .LVU4957 +4674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + 14486 .loc 1 4674 6 is_stmt 0 view .LVU4958 + 14487 0022 13F4806F tst r3, #1024 + 14488 0026 0AD0 beq .L926 +4674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + 14489 .loc 1 4674 56 discriminator 1 view .LVU4959 + 14490 0028 11F0800F tst r1, #128 + 14491 002c 07D0 beq .L926 +4677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14492 .loc 1 4677 5 is_stmt 1 view .LVU4960 +4677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14493 .loc 1 4677 21 is_stmt 0 view .LVU4961 + 14494 002e 426C ldr r2, [r0, #68] + 14495 0030 42F00802 orr r2, r2, #8 + 14496 0034 4264 str r2, [r0, #68] +4680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14497 .loc 1 4680 5 is_stmt 1 view .LVU4962 + 14498 0036 0268 ldr r2, [r0] + 14499 0038 4FF48064 mov r4, #1024 + 14500 003c D461 str r4, [r2, #28] + 14501 .L926: +4684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + 14502 .loc 1 4684 3 view .LVU4963 +4684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + 14503 .loc 1 4684 6 is_stmt 0 view .LVU4964 + 14504 003e 13F4007F tst r3, #512 + 14505 0042 0AD0 beq .L927 +4684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) + 14506 .loc 1 4684 57 discriminator 1 view .LVU4965 + 14507 0044 11F0800F tst r1, #128 + 14508 0048 07D0 beq .L927 +4687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14509 .loc 1 4687 5 is_stmt 1 view .LVU4966 +4687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14510 .loc 1 4687 21 is_stmt 0 view .LVU4967 + 14511 004a 436C ldr r3, [r0, #68] + 14512 .LVL1094: +4687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14513 .loc 1 4687 21 view .LVU4968 + 14514 004c 43F00203 orr r3, r3, #2 + 14515 0050 4364 str r3, [r0, #68] +4690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14516 .loc 1 4690 5 is_stmt 1 view .LVU4969 + 14517 0052 0368 ldr r3, [r0] + 14518 0054 4FF40072 mov r2, #512 + 14519 0058 DA61 str r2, [r3, #28] + 14520 .L927: +4694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14521 .loc 1 4694 3 view .LVU4970 +4694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14522 .loc 1 4694 12 is_stmt 0 view .LVU4971 + 14523 005a 416C ldr r1, [r0, #68] + 14524 .LVL1095: + ARM GAS /tmp/ccVyGVF6.s page 471 + + +4697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14525 .loc 1 4697 3 is_stmt 1 view .LVU4972 +4697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14526 .loc 1 4697 6 is_stmt 0 view .LVU4973 + 14527 005c 11F00B0F tst r1, #11 + 14528 0060 00D1 bne .L930 + 14529 .LVL1096: + 14530 .L924: +4701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14531 .loc 1 4701 1 view .LVU4974 + 14532 0062 10BD pop {r4, pc} + 14533 .LVL1097: + 14534 .L930: +4699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14535 .loc 1 4699 5 is_stmt 1 view .LVU4975 + 14536 0064 FFF7FEFF bl I2C_ITError + 14537 .LVL1098: +4701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14538 .loc 1 4701 1 is_stmt 0 view .LVU4976 + 14539 0068 FBE7 b .L924 + 14540 .cfi_endproc + 14541 .LFE176: + 14543 .section .text.I2C_DMAAbort,"ax",%progbits + 14544 .align 1 + 14545 .syntax unified + 14546 .thumb + 14547 .thumb_func + 14548 .fpu fpv5-d16 + 14550 I2C_DMAAbort: + 14551 .LVL1099: + 14552 .LFB212: +6988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 14553 .loc 1 6988 1 is_stmt 1 view -0 + 14554 .cfi_startproc + 14555 @ args = 0, pretend = 0, frame = 0 + 14556 @ frame_needed = 0, uses_anonymous_args = 0 +6988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Derogation MISRAC2012-Rule-11.5 */ + 14557 .loc 1 6988 1 is_stmt 0 view .LVU4978 + 14558 0000 08B5 push {r3, lr} + 14559 .LCFI154: + 14560 .cfi_def_cfa_offset 8 + 14561 .cfi_offset 3, -8 + 14562 .cfi_offset 14, -4 +6990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14563 .loc 1 6990 3 is_stmt 1 view .LVU4979 +6990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14564 .loc 1 6990 22 is_stmt 0 view .LVU4980 + 14565 0002 806B ldr r0, [r0, #56] + 14566 .LVL1100: +6993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14567 .loc 1 6993 3 is_stmt 1 view .LVU4981 +6993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14568 .loc 1 6993 11 is_stmt 0 view .LVU4982 + 14569 0004 836B ldr r3, [r0, #56] +6993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14570 .loc 1 6993 6 view .LVU4983 + 14571 0006 0BB1 cbz r3, .L932 + ARM GAS /tmp/ccVyGVF6.s page 472 + + +6995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14572 .loc 1 6995 5 is_stmt 1 view .LVU4984 +6995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14573 .loc 1 6995 37 is_stmt 0 view .LVU4985 + 14574 0008 0022 movs r2, #0 + 14575 000a 1A65 str r2, [r3, #80] + 14576 .L932: +6997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14577 .loc 1 6997 3 is_stmt 1 view .LVU4986 +6997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14578 .loc 1 6997 11 is_stmt 0 view .LVU4987 + 14579 000c C36B ldr r3, [r0, #60] +6997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** { + 14580 .loc 1 6997 6 view .LVU4988 + 14581 000e 0BB1 cbz r3, .L933 +6999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14582 .loc 1 6999 5 is_stmt 1 view .LVU4989 +6999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14583 .loc 1 6999 37 is_stmt 0 view .LVU4990 + 14584 0010 0022 movs r2, #0 + 14585 0012 1A65 str r2, [r3, #80] + 14586 .L933: +7002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14587 .loc 1 7002 3 is_stmt 1 view .LVU4991 + 14588 0014 FFF7FEFF bl I2C_TreatErrorCallback + 14589 .LVL1101: +7003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14590 .loc 1 7003 1 is_stmt 0 view .LVU4992 + 14591 0018 08BD pop {r3, pc} + 14592 .cfi_endproc + 14593 .LFE212: + 14595 .section .text.HAL_I2C_GetState,"ax",%progbits + 14596 .align 1 + 14597 .global HAL_I2C_GetState + 14598 .syntax unified + 14599 .thumb + 14600 .thumb_func + 14601 .fpu fpv5-d16 + 14603 HAL_I2C_GetState: + 14604 .LVL1102: + 14605 .LFB187: +4892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** /* Return I2C handle state */ + 14606 .loc 1 4892 1 is_stmt 1 view -0 + 14607 .cfi_startproc + 14608 @ args = 0, pretend = 0, frame = 0 + 14609 @ frame_needed = 0, uses_anonymous_args = 0 + 14610 @ link register save eliminated. +4894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14611 .loc 1 4894 3 view .LVU4994 +4894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14612 .loc 1 4894 14 is_stmt 0 view .LVU4995 + 14613 0000 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 14614 .LVL1103: +4895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14615 .loc 1 4895 1 view .LVU4996 + 14616 0004 7047 bx lr + 14617 .cfi_endproc + ARM GAS /tmp/ccVyGVF6.s page 473 + + + 14618 .LFE187: + 14620 .section .text.HAL_I2C_GetMode,"ax",%progbits + 14621 .align 1 + 14622 .global HAL_I2C_GetMode + 14623 .syntax unified + 14624 .thumb + 14625 .thumb_func + 14626 .fpu fpv5-d16 + 14628 HAL_I2C_GetMode: + 14629 .LVL1104: + 14630 .LFB188: +4904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return hi2c->Mode; + 14631 .loc 1 4904 1 is_stmt 1 view -0 + 14632 .cfi_startproc + 14633 @ args = 0, pretend = 0, frame = 0 + 14634 @ frame_needed = 0, uses_anonymous_args = 0 + 14635 @ link register save eliminated. +4905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14636 .loc 1 4905 3 view .LVU4998 +4905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14637 .loc 1 4905 14 is_stmt 0 view .LVU4999 + 14638 0000 90F84200 ldrb r0, [r0, #66] @ zero_extendqisi2 + 14639 .LVL1105: +4906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14640 .loc 1 4906 1 view .LVU5000 + 14641 0004 7047 bx lr + 14642 .cfi_endproc + 14643 .LFE188: + 14645 .section .text.HAL_I2C_GetError,"ax",%progbits + 14646 .align 1 + 14647 .global HAL_I2C_GetError + 14648 .syntax unified + 14649 .thumb + 14650 .thumb_func + 14651 .fpu fpv5-d16 + 14653 HAL_I2C_GetError: + 14654 .LVL1106: + 14655 .LFB189: +4915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** return hi2c->ErrorCode; + 14656 .loc 1 4915 1 is_stmt 1 view -0 + 14657 .cfi_startproc + 14658 @ args = 0, pretend = 0, frame = 0 + 14659 @ frame_needed = 0, uses_anonymous_args = 0 + 14660 @ link register save eliminated. +4916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14661 .loc 1 4916 3 view .LVU5002 +4916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** } + 14662 .loc 1 4916 14 is_stmt 0 view .LVU5003 + 14663 0000 406C ldr r0, [r0, #68] + 14664 .LVL1107: +4917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c **** + 14665 .loc 1 4917 1 view .LVU5004 + 14666 0002 7047 bx lr + 14667 .cfi_endproc + 14668 .LFE189: + 14670 .text + 14671 .Letext0: + ARM GAS /tmp/ccVyGVF6.s page 474 + + + 14672 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 14673 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 14674 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 14675 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 14676 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 14677 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h" + 14678 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + ARM GAS /tmp/ccVyGVF6.s page 475 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_i2c.c + /tmp/ccVyGVF6.s:17 .text.I2C_Flush_TXDR:0000000000000000 $t + /tmp/ccVyGVF6.s:24 .text.I2C_Flush_TXDR:0000000000000000 I2C_Flush_TXDR + /tmp/ccVyGVF6.s:63 .text.I2C_TransferConfig:0000000000000000 $t + /tmp/ccVyGVF6.s:69 .text.I2C_TransferConfig:0000000000000000 I2C_TransferConfig + /tmp/ccVyGVF6.s:129 .text.I2C_Enable_IRQ:0000000000000000 $t + /tmp/ccVyGVF6.s:135 .text.I2C_Enable_IRQ:0000000000000000 I2C_Enable_IRQ + /tmp/ccVyGVF6.s:297 .text.I2C_Enable_IRQ:0000000000000090 $d + /tmp/ccVyGVF6.s:13370 .text.I2C_Master_ISR_DMA:0000000000000000 I2C_Master_ISR_DMA + /tmp/ccVyGVF6.s:13073 .text.I2C_Slave_ISR_DMA:0000000000000000 I2C_Slave_ISR_DMA + /tmp/ccVyGVF6.s:12668 .text.I2C_Mem_ISR_DMA:0000000000000000 I2C_Mem_ISR_DMA + /tmp/ccVyGVF6.s:304 .text.I2C_Disable_IRQ:0000000000000000 $t + /tmp/ccVyGVF6.s:310 .text.I2C_Disable_IRQ:0000000000000000 I2C_Disable_IRQ + /tmp/ccVyGVF6.s:434 .text.I2C_ConvertOtherXferOptions:0000000000000000 $t + /tmp/ccVyGVF6.s:440 .text.I2C_ConvertOtherXferOptions:0000000000000000 I2C_ConvertOtherXferOptions + /tmp/ccVyGVF6.s:481 .text.I2C_IsErrorOccurred:0000000000000000 $t + /tmp/ccVyGVF6.s:487 .text.I2C_IsErrorOccurred:0000000000000000 I2C_IsErrorOccurred + /tmp/ccVyGVF6.s:768 .text.I2C_WaitOnTXISFlagUntilTimeout:0000000000000000 $t + /tmp/ccVyGVF6.s:774 .text.I2C_WaitOnTXISFlagUntilTimeout:0000000000000000 I2C_WaitOnTXISFlagUntilTimeout + /tmp/ccVyGVF6.s:871 .text.I2C_WaitOnFlagUntilTimeout:0000000000000000 $t + /tmp/ccVyGVF6.s:877 .text.I2C_WaitOnFlagUntilTimeout:0000000000000000 I2C_WaitOnFlagUntilTimeout + /tmp/ccVyGVF6.s:986 .text.I2C_RequestMemoryWrite:0000000000000000 $t + /tmp/ccVyGVF6.s:992 .text.I2C_RequestMemoryWrite:0000000000000000 I2C_RequestMemoryWrite + /tmp/ccVyGVF6.s:1111 .text.I2C_RequestMemoryWrite:0000000000000078 $d + /tmp/ccVyGVF6.s:1116 .text.I2C_RequestMemoryRead:0000000000000000 $t + /tmp/ccVyGVF6.s:1122 .text.I2C_RequestMemoryRead:0000000000000000 I2C_RequestMemoryRead + /tmp/ccVyGVF6.s:1241 .text.I2C_RequestMemoryRead:0000000000000074 $d + /tmp/ccVyGVF6.s:1246 .text.I2C_WaitOnSTOPFlagUntilTimeout:0000000000000000 $t + /tmp/ccVyGVF6.s:1252 .text.I2C_WaitOnSTOPFlagUntilTimeout:0000000000000000 I2C_WaitOnSTOPFlagUntilTimeout + /tmp/ccVyGVF6.s:1349 .text.I2C_WaitOnRXNEFlagUntilTimeout:0000000000000000 $t + /tmp/ccVyGVF6.s:1355 .text.I2C_WaitOnRXNEFlagUntilTimeout:0000000000000000 I2C_WaitOnRXNEFlagUntilTimeout + /tmp/ccVyGVF6.s:1518 .text.HAL_I2C_MspInit:0000000000000000 $t + /tmp/ccVyGVF6.s:1525 .text.HAL_I2C_MspInit:0000000000000000 HAL_I2C_MspInit + /tmp/ccVyGVF6.s:1540 .text.HAL_I2C_Init:0000000000000000 $t + /tmp/ccVyGVF6.s:1547 .text.HAL_I2C_Init:0000000000000000 HAL_I2C_Init + /tmp/ccVyGVF6.s:1739 .text.HAL_I2C_Init:00000000000000c4 $d + /tmp/ccVyGVF6.s:1744 .text.HAL_I2C_MspDeInit:0000000000000000 $t + /tmp/ccVyGVF6.s:1751 .text.HAL_I2C_MspDeInit:0000000000000000 HAL_I2C_MspDeInit + /tmp/ccVyGVF6.s:1766 .text.HAL_I2C_DeInit:0000000000000000 $t + /tmp/ccVyGVF6.s:1773 .text.HAL_I2C_DeInit:0000000000000000 HAL_I2C_DeInit + /tmp/ccVyGVF6.s:1838 .text.HAL_I2C_Master_Transmit:0000000000000000 $t + /tmp/ccVyGVF6.s:1845 .text.HAL_I2C_Master_Transmit:0000000000000000 HAL_I2C_Master_Transmit + /tmp/ccVyGVF6.s:2203 .text.HAL_I2C_Master_Transmit:00000000000001a0 $d + /tmp/ccVyGVF6.s:2208 .text.HAL_I2C_Master_Receive:0000000000000000 $t + /tmp/ccVyGVF6.s:2215 .text.HAL_I2C_Master_Receive:0000000000000000 HAL_I2C_Master_Receive + /tmp/ccVyGVF6.s:2524 .text.HAL_I2C_Master_Receive:0000000000000178 $d + /tmp/ccVyGVF6.s:2529 .text.HAL_I2C_Slave_Transmit:0000000000000000 $t + /tmp/ccVyGVF6.s:2536 .text.HAL_I2C_Slave_Transmit:0000000000000000 HAL_I2C_Slave_Transmit + /tmp/ccVyGVF6.s:2980 .text.HAL_I2C_Slave_Receive:0000000000000000 $t + /tmp/ccVyGVF6.s:2987 .text.HAL_I2C_Slave_Receive:0000000000000000 HAL_I2C_Slave_Receive + /tmp/ccVyGVF6.s:3331 .text.HAL_I2C_Master_Transmit_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:3338 .text.HAL_I2C_Master_Transmit_IT:0000000000000000 HAL_I2C_Master_Transmit_IT + /tmp/ccVyGVF6.s:3536 .text.HAL_I2C_Master_Transmit_IT:00000000000000bc $d + /tmp/ccVyGVF6.s:12266 .text.I2C_Master_ISR_IT:0000000000000000 I2C_Master_ISR_IT + /tmp/ccVyGVF6.s:3543 .text.HAL_I2C_Master_Receive_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:3550 .text.HAL_I2C_Master_Receive_IT:0000000000000000 HAL_I2C_Master_Receive_IT + ARM GAS /tmp/ccVyGVF6.s page 476 + + + /tmp/ccVyGVF6.s:3702 .text.HAL_I2C_Master_Receive_IT:000000000000008c $d + /tmp/ccVyGVF6.s:3709 .text.HAL_I2C_Slave_Transmit_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:3716 .text.HAL_I2C_Slave_Transmit_IT:0000000000000000 HAL_I2C_Slave_Transmit_IT + /tmp/ccVyGVF6.s:3859 .text.HAL_I2C_Slave_Transmit_IT:0000000000000084 $d + /tmp/ccVyGVF6.s:11675 .text.I2C_Slave_ISR_IT:0000000000000000 I2C_Slave_ISR_IT + /tmp/ccVyGVF6.s:3865 .text.HAL_I2C_Slave_Receive_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:3872 .text.HAL_I2C_Slave_Receive_IT:0000000000000000 HAL_I2C_Slave_Receive_IT + /tmp/ccVyGVF6.s:3974 .text.HAL_I2C_Slave_Receive_IT:000000000000005c $d + /tmp/ccVyGVF6.s:3980 .text.HAL_I2C_Master_Transmit_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:3987 .text.HAL_I2C_Master_Transmit_DMA:0000000000000000 HAL_I2C_Master_Transmit_DMA + /tmp/ccVyGVF6.s:4332 .text.HAL_I2C_Master_Transmit_DMA:000000000000015c $d + /tmp/ccVyGVF6.s:13793 .text.I2C_DMAMasterTransmitCplt:0000000000000000 I2C_DMAMasterTransmitCplt + /tmp/ccVyGVF6.s:13695 .text.I2C_DMAError:0000000000000000 I2C_DMAError + /tmp/ccVyGVF6.s:4342 .text.HAL_I2C_Master_Receive_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:4349 .text.HAL_I2C_Master_Receive_DMA:0000000000000000 HAL_I2C_Master_Receive_DMA + /tmp/ccVyGVF6.s:4648 .text.HAL_I2C_Master_Receive_DMA:0000000000000138 $d + /tmp/ccVyGVF6.s:13900 .text.I2C_DMAMasterReceiveCplt:0000000000000000 I2C_DMAMasterReceiveCplt + /tmp/ccVyGVF6.s:4658 .text.HAL_I2C_Slave_Transmit_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:4665 .text.HAL_I2C_Slave_Transmit_DMA:0000000000000000 HAL_I2C_Slave_Transmit_DMA + /tmp/ccVyGVF6.s:4965 .text.HAL_I2C_Slave_Transmit_DMA:0000000000000130 $d + /tmp/ccVyGVF6.s:10368 .text.I2C_DMASlaveTransmitCplt:0000000000000000 I2C_DMASlaveTransmitCplt + /tmp/ccVyGVF6.s:4973 .text.HAL_I2C_Slave_Receive_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:4980 .text.HAL_I2C_Slave_Receive_DMA:0000000000000000 HAL_I2C_Slave_Receive_DMA + /tmp/ccVyGVF6.s:5198 .text.HAL_I2C_Slave_Receive_DMA:00000000000000e4 $d + /tmp/ccVyGVF6.s:10426 .text.I2C_DMASlaveReceiveCplt:0000000000000000 I2C_DMASlaveReceiveCplt + /tmp/ccVyGVF6.s:5206 .text.HAL_I2C_Mem_Write:0000000000000000 $t + /tmp/ccVyGVF6.s:5213 .text.HAL_I2C_Mem_Write:0000000000000000 HAL_I2C_Mem_Write + /tmp/ccVyGVF6.s:5571 .text.HAL_I2C_Mem_Read:0000000000000000 $t + /tmp/ccVyGVF6.s:5578 .text.HAL_I2C_Mem_Read:0000000000000000 HAL_I2C_Mem_Read + /tmp/ccVyGVF6.s:5936 .text.HAL_I2C_Mem_Read:00000000000001ac $d + /tmp/ccVyGVF6.s:5941 .text.HAL_I2C_Mem_Write_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:5948 .text.HAL_I2C_Mem_Write_IT:0000000000000000 HAL_I2C_Mem_Write_IT + /tmp/ccVyGVF6.s:6123 .text.HAL_I2C_Mem_Write_IT:00000000000000ac $d + /tmp/ccVyGVF6.s:14019 .text.I2C_Mem_ISR_IT:0000000000000000 I2C_Mem_ISR_IT + /tmp/ccVyGVF6.s:6130 .text.HAL_I2C_Mem_Read_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:6137 .text.HAL_I2C_Mem_Read_IT:0000000000000000 HAL_I2C_Mem_Read_IT + /tmp/ccVyGVF6.s:6309 .text.HAL_I2C_Mem_Read_IT:00000000000000a8 $d + /tmp/ccVyGVF6.s:6316 .text.HAL_I2C_Mem_Write_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:6323 .text.HAL_I2C_Mem_Write_DMA:0000000000000000 HAL_I2C_Mem_Write_DMA + /tmp/ccVyGVF6.s:6606 .text.HAL_I2C_Mem_Write_DMA:0000000000000120 $d + /tmp/ccVyGVF6.s:6615 .text.HAL_I2C_Mem_Read_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:6622 .text.HAL_I2C_Mem_Read_DMA:0000000000000000 HAL_I2C_Mem_Read_DMA + /tmp/ccVyGVF6.s:6907 .text.HAL_I2C_Mem_Read_DMA:0000000000000120 $d + /tmp/ccVyGVF6.s:6916 .text.HAL_I2C_IsDeviceReady:0000000000000000 $t + /tmp/ccVyGVF6.s:6923 .text.HAL_I2C_IsDeviceReady:0000000000000000 HAL_I2C_IsDeviceReady + /tmp/ccVyGVF6.s:7213 .text.HAL_I2C_IsDeviceReady:0000000000000134 $d + /tmp/ccVyGVF6.s:7219 .text.HAL_I2C_Master_Seq_Transmit_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:7226 .text.HAL_I2C_Master_Seq_Transmit_IT:0000000000000000 HAL_I2C_Master_Seq_Transmit_IT + /tmp/ccVyGVF6.s:7491 .text.HAL_I2C_Master_Seq_Transmit_IT:0000000000000104 $d + /tmp/ccVyGVF6.s:7497 .text.HAL_I2C_Master_Seq_Transmit_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:7504 .text.HAL_I2C_Master_Seq_Transmit_DMA:0000000000000000 HAL_I2C_Master_Seq_Transmit_DMA + /tmp/ccVyGVF6.s:7921 .text.HAL_I2C_Master_Seq_Transmit_DMA:00000000000001d0 $d + /tmp/ccVyGVF6.s:7930 .text.HAL_I2C_Master_Seq_Receive_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:7937 .text.HAL_I2C_Master_Seq_Receive_IT:0000000000000000 HAL_I2C_Master_Seq_Receive_IT + /tmp/ccVyGVF6.s:8123 .text.HAL_I2C_Master_Seq_Receive_IT:00000000000000ac $d + /tmp/ccVyGVF6.s:8129 .text.HAL_I2C_Master_Seq_Receive_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:8136 .text.HAL_I2C_Master_Seq_Receive_DMA:0000000000000000 HAL_I2C_Master_Seq_Receive_DMA + ARM GAS /tmp/ccVyGVF6.s page 477 + + + /tmp/ccVyGVF6.s:8464 .text.HAL_I2C_Master_Seq_Receive_DMA:0000000000000160 $d + /tmp/ccVyGVF6.s:8473 .text.HAL_I2C_Slave_Seq_Transmit_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:8480 .text.HAL_I2C_Slave_Seq_Transmit_IT:0000000000000000 HAL_I2C_Slave_Seq_Transmit_IT + /tmp/ccVyGVF6.s:8689 .text.HAL_I2C_Slave_Seq_Transmit_IT:00000000000000dc $d + /tmp/ccVyGVF6.s:14550 .text.I2C_DMAAbort:0000000000000000 I2C_DMAAbort + /tmp/ccVyGVF6.s:8695 .text.HAL_I2C_Slave_Seq_Transmit_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:8702 .text.HAL_I2C_Slave_Seq_Transmit_DMA:0000000000000000 HAL_I2C_Slave_Seq_Transmit_DMA + /tmp/ccVyGVF6.s:9086 .text.HAL_I2C_Slave_Seq_Transmit_DMA:000000000000019c $d + /tmp/ccVyGVF6.s:9094 .text.HAL_I2C_Slave_Seq_Receive_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:9101 .text.HAL_I2C_Slave_Seq_Receive_IT:0000000000000000 HAL_I2C_Slave_Seq_Receive_IT + /tmp/ccVyGVF6.s:9310 .text.HAL_I2C_Slave_Seq_Receive_IT:00000000000000dc $d + /tmp/ccVyGVF6.s:9316 .text.HAL_I2C_Slave_Seq_Receive_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:9323 .text.HAL_I2C_Slave_Seq_Receive_DMA:0000000000000000 HAL_I2C_Slave_Seq_Receive_DMA + /tmp/ccVyGVF6.s:9705 .text.HAL_I2C_Slave_Seq_Receive_DMA:000000000000019c $d + /tmp/ccVyGVF6.s:9713 .text.HAL_I2C_EnableListen_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:9720 .text.HAL_I2C_EnableListen_IT:0000000000000000 HAL_I2C_EnableListen_IT + /tmp/ccVyGVF6.s:9767 .text.HAL_I2C_EnableListen_IT:0000000000000028 $d + /tmp/ccVyGVF6.s:9772 .text.HAL_I2C_DisableListen_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:9779 .text.HAL_I2C_DisableListen_IT:0000000000000000 HAL_I2C_DisableListen_IT + /tmp/ccVyGVF6.s:9845 .text.HAL_I2C_Master_Abort_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:9852 .text.HAL_I2C_Master_Abort_IT:0000000000000000 HAL_I2C_Master_Abort_IT + /tmp/ccVyGVF6.s:9999 .text.HAL_I2C_Master_Abort_IT:0000000000000084 $d + /tmp/ccVyGVF6.s:10004 .text.HAL_I2C_EV_IRQHandler:0000000000000000 $t + /tmp/ccVyGVF6.s:10011 .text.HAL_I2C_EV_IRQHandler:0000000000000000 HAL_I2C_EV_IRQHandler + /tmp/ccVyGVF6.s:10049 .text.HAL_I2C_MasterTxCpltCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10056 .text.HAL_I2C_MasterTxCpltCallback:0000000000000000 HAL_I2C_MasterTxCpltCallback + /tmp/ccVyGVF6.s:10071 .text.HAL_I2C_MasterRxCpltCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10078 .text.HAL_I2C_MasterRxCpltCallback:0000000000000000 HAL_I2C_MasterRxCpltCallback + /tmp/ccVyGVF6.s:10093 .text.I2C_ITMasterSeqCplt:0000000000000000 $t + /tmp/ccVyGVF6.s:10099 .text.I2C_ITMasterSeqCplt:0000000000000000 I2C_ITMasterSeqCplt + /tmp/ccVyGVF6.s:10184 .text.HAL_I2C_SlaveTxCpltCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10191 .text.HAL_I2C_SlaveTxCpltCallback:0000000000000000 HAL_I2C_SlaveTxCpltCallback + /tmp/ccVyGVF6.s:10206 .text.HAL_I2C_SlaveRxCpltCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10213 .text.HAL_I2C_SlaveRxCpltCallback:0000000000000000 HAL_I2C_SlaveRxCpltCallback + /tmp/ccVyGVF6.s:10228 .text.I2C_ITSlaveSeqCplt:0000000000000000 $t + /tmp/ccVyGVF6.s:10234 .text.I2C_ITSlaveSeqCplt:0000000000000000 I2C_ITSlaveSeqCplt + /tmp/ccVyGVF6.s:10362 .text.I2C_DMASlaveTransmitCplt:0000000000000000 $t + /tmp/ccVyGVF6.s:10420 .text.I2C_DMASlaveReceiveCplt:0000000000000000 $t + /tmp/ccVyGVF6.s:10481 .text.HAL_I2C_AddrCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10488 .text.HAL_I2C_AddrCallback:0000000000000000 HAL_I2C_AddrCallback + /tmp/ccVyGVF6.s:10505 .text.I2C_ITAddrCplt:0000000000000000 $t + /tmp/ccVyGVF6.s:10511 .text.I2C_ITAddrCplt:0000000000000000 I2C_ITAddrCplt + /tmp/ccVyGVF6.s:10671 .text.HAL_I2C_ListenCpltCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10678 .text.HAL_I2C_ListenCpltCallback:0000000000000000 HAL_I2C_ListenCpltCallback + /tmp/ccVyGVF6.s:10693 .text.I2C_ITListenCplt:0000000000000000 $t + /tmp/ccVyGVF6.s:10699 .text.I2C_ITListenCplt:0000000000000000 I2C_ITListenCplt + /tmp/ccVyGVF6.s:10802 .text.I2C_ITListenCplt:0000000000000064 $d + /tmp/ccVyGVF6.s:10807 .text.HAL_I2C_MemTxCpltCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10814 .text.HAL_I2C_MemTxCpltCallback:0000000000000000 HAL_I2C_MemTxCpltCallback + /tmp/ccVyGVF6.s:10829 .text.HAL_I2C_MemRxCpltCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10836 .text.HAL_I2C_MemRxCpltCallback:0000000000000000 HAL_I2C_MemRxCpltCallback + /tmp/ccVyGVF6.s:10851 .text.HAL_I2C_ErrorCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10858 .text.HAL_I2C_ErrorCallback:0000000000000000 HAL_I2C_ErrorCallback + /tmp/ccVyGVF6.s:10873 .text.HAL_I2C_AbortCpltCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10880 .text.HAL_I2C_AbortCpltCallback:0000000000000000 HAL_I2C_AbortCpltCallback + /tmp/ccVyGVF6.s:10895 .text.I2C_TreatErrorCallback:0000000000000000 $t + /tmp/ccVyGVF6.s:10901 .text.I2C_TreatErrorCallback:0000000000000000 I2C_TreatErrorCallback + ARM GAS /tmp/ccVyGVF6.s page 478 + + + /tmp/ccVyGVF6.s:10958 .text.I2C_ITError:0000000000000000 $t + /tmp/ccVyGVF6.s:10964 .text.I2C_ITError:0000000000000000 I2C_ITError + /tmp/ccVyGVF6.s:11236 .text.I2C_ITError:0000000000000124 $d + /tmp/ccVyGVF6.s:11243 .text.I2C_ITSlaveCplt:0000000000000000 $t + /tmp/ccVyGVF6.s:11249 .text.I2C_ITSlaveCplt:0000000000000000 I2C_ITSlaveCplt + /tmp/ccVyGVF6.s:11664 .text.I2C_ITSlaveCplt:00000000000001f0 $d + /tmp/ccVyGVF6.s:11669 .text.I2C_Slave_ISR_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:11985 .text.I2C_ITMasterCplt:0000000000000000 $t + /tmp/ccVyGVF6.s:11991 .text.I2C_ITMasterCplt:0000000000000000 I2C_ITMasterCplt + /tmp/ccVyGVF6.s:12260 .text.I2C_Master_ISR_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:12662 .text.I2C_Mem_ISR_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:13061 .text.I2C_Mem_ISR_DMA:00000000000001c8 $d + /tmp/ccVyGVF6.s:13067 .text.I2C_Slave_ISR_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:13364 .text.I2C_Master_ISR_DMA:0000000000000000 $t + /tmp/ccVyGVF6.s:13689 .text.I2C_DMAError:0000000000000000 $t + /tmp/ccVyGVF6.s:13787 .text.I2C_DMAMasterTransmitCplt:0000000000000000 $t + /tmp/ccVyGVF6.s:13894 .text.I2C_DMAMasterReceiveCplt:0000000000000000 $t + /tmp/ccVyGVF6.s:14013 .text.I2C_Mem_ISR_IT:0000000000000000 $t + /tmp/ccVyGVF6.s:14432 .text.I2C_Mem_ISR_IT:00000000000001b8 $d + /tmp/ccVyGVF6.s:14438 .text.HAL_I2C_ER_IRQHandler:0000000000000000 $t + /tmp/ccVyGVF6.s:14445 .text.HAL_I2C_ER_IRQHandler:0000000000000000 HAL_I2C_ER_IRQHandler + /tmp/ccVyGVF6.s:14544 .text.I2C_DMAAbort:0000000000000000 $t + /tmp/ccVyGVF6.s:14596 .text.HAL_I2C_GetState:0000000000000000 $t + /tmp/ccVyGVF6.s:14603 .text.HAL_I2C_GetState:0000000000000000 HAL_I2C_GetState + /tmp/ccVyGVF6.s:14621 .text.HAL_I2C_GetMode:0000000000000000 $t + /tmp/ccVyGVF6.s:14628 .text.HAL_I2C_GetMode:0000000000000000 HAL_I2C_GetMode + /tmp/ccVyGVF6.s:14646 .text.HAL_I2C_GetError:0000000000000000 $t + /tmp/ccVyGVF6.s:14653 .text.HAL_I2C_GetError:0000000000000000 HAL_I2C_GetError + +UNDEFINED SYMBOLS +HAL_GetTick +HAL_DMA_Start_IT +HAL_DMA_Abort_IT +HAL_DMA_GetState +HAL_DMA_GetError diff --git a/build/stm32f7xx_hal_i2c.o b/build/stm32f7xx_hal_i2c.o new file mode 100644 index 0000000..971720b Binary files /dev/null and b/build/stm32f7xx_hal_i2c.o differ diff --git a/build/stm32f7xx_hal_i2c_ex.d b/build/stm32f7xx_hal_i2c_ex.d new file mode 100644 index 0000000..271be8e --- /dev/null +++ b/build/stm32f7xx_hal_i2c_ex.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_i2c_ex.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_i2c_ex.lst b/build/stm32f7xx_hal_i2c_ex.lst new file mode 100644 index 0000000..fdfff38 --- /dev/null +++ b/build/stm32f7xx_hal_i2c_ex.lst @@ -0,0 +1,628 @@ +ARM GAS /tmp/ccJs8R3x.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_i2c_ex.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.HAL_I2CEx_ConfigAnalogFilter,"ax",%progbits + 17 .align 1 + 18 .global HAL_I2CEx_ConfigAnalogFilter + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 HAL_I2CEx_ConfigAnalogFilter: + 26 .LVL0: + 27 .LFB141: + 28 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @file stm32f7xx_hal_i2c_ex.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @brief I2C Extended HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * functionalities of I2C Extended peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * + Filter Mode Functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * + FastModePlus Functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** ****************************************************************************** + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @attention + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * Copyright (c) 2017 STMicroelectronics. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * All rights reserved. + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * This software is licensed under terms that can be found in the LICENSE file + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * in the root directory of this software component. + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** ****************************************************************************** + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** @verbatim + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** ============================================================================== + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** ##### I2C peripheral Extended features ##### + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** ============================================================================== + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** [..] Comparing to other previous devices, the I2C interface for STM32F7xx + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** devices contains the following additional features + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** (+) Possibility to disable or enable Analog Noise Filter + ARM GAS /tmp/ccJs8R3x.s page 2 + + + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** (+) Use of a configured Digital Noise Filter + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** (+) Disable or enable Fast Mode Plus + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** ##### How to use this driver ##### + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** ============================================================================== + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** [..] This driver provides functions to: + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** (#) Configure I2C Analog noise filter using the function HAL_I2CEx_ConfigAnalogFilter() + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** (#) Configure I2C Digital noise filter using the function HAL_I2CEx_ConfigDigitalFilter() + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** (#) Configure the enable or disable of fast mode plus driving capability using the functions : + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** (++) HAL_I2CEx_EnableFastModePlus() + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** (++) HAL_I2CEx_DisableFastModePlus() + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** @endverbatim + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Includes ------------------------------------------------------------------*/ + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** #include "stm32f7xx_hal.h" + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** @addtogroup STM32F7xx_HAL_Driver + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @{ + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** @defgroup I2CEx I2CEx + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @brief I2C Extended HAL module driver + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @{ + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** #ifdef HAL_I2C_MODULE_ENABLED + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Private typedef -----------------------------------------------------------*/ + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Private define ------------------------------------------------------------*/ + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Private macro -------------------------------------------------------------*/ + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Private variables ---------------------------------------------------------*/ + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Private function prototypes -----------------------------------------------*/ + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Private functions ---------------------------------------------------------*/ + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** @defgroup I2CEx_Exported_Functions I2C Extended Exported Functions + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @{ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** @defgroup I2CEx_Exported_Functions_Group1 Filter Mode Functions + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @brief Filter Mode Functions + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** @verbatim + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** =============================================================================== + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** ##### Filter Mode Functions ##### + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** =============================================================================== + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** [..] This section provides functions allowing to: + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** (+) Configure Noise Filters + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** @endverbatim + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @{ + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @brief Configure I2C Analog noise filter. + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * the configuration information for the specified I2Cx peripheral. + ARM GAS /tmp/ccJs8R3x.s page 3 + + + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @param AnalogFilter New state of the Analog filter. + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @retval HAL status + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** { + 29 .loc 1 92 1 view -0 + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 33 @ link register save eliminated. + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Check the parameters */ + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + 34 .loc 1 94 3 view .LVU1 + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); + 35 .loc 1 95 3 view .LVU2 + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** if (hi2c->State == HAL_I2C_STATE_READY) + 36 .loc 1 97 3 view .LVU3 + 37 .loc 1 97 11 is_stmt 0 view .LVU4 + 38 0000 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 39 0004 DBB2 uxtb r3, r3 + 40 .loc 1 97 6 view .LVU5 + 41 0006 202B cmp r3, #32 + 42 0008 24D1 bne .L3 + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** { + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Process Locked */ + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** __HAL_LOCK(hi2c); + 43 .loc 1 100 5 is_stmt 1 view .LVU6 + 44 .loc 1 100 5 view .LVU7 + 45 000a 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 46 000e 012B cmp r3, #1 + 47 0010 22D0 beq .L4 + 48 .loc 1 100 5 discriminator 2 view .LVU8 + 49 0012 0123 movs r3, #1 + 50 0014 80F84030 strb r3, [r0, #64] + 51 .loc 1 100 5 discriminator 2 view .LVU9 + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** hi2c->State = HAL_I2C_STATE_BUSY; + 52 .loc 1 102 5 discriminator 2 view .LVU10 + 53 .loc 1 102 17 is_stmt 0 discriminator 2 view .LVU11 + 54 0018 2423 movs r3, #36 + 55 001a 80F84130 strb r3, [r0, #65] + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Disable the selected I2C peripheral */ + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** __HAL_I2C_DISABLE(hi2c); + 56 .loc 1 105 5 is_stmt 1 discriminator 2 view .LVU12 + 57 001e 0268 ldr r2, [r0] + 58 0020 1368 ldr r3, [r2] + 59 0022 23F00103 bic r3, r3, #1 + 60 0026 1360 str r3, [r2] + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Reset I2Cx ANOFF bit */ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); + 61 .loc 1 108 5 discriminator 2 view .LVU13 + 62 .loc 1 108 9 is_stmt 0 discriminator 2 view .LVU14 + 63 0028 0268 ldr r2, [r0] + 64 .loc 1 108 25 discriminator 2 view .LVU15 + ARM GAS /tmp/ccJs8R3x.s page 4 + + + 65 002a 1368 ldr r3, [r2] + 66 002c 23F48053 bic r3, r3, #4096 + 67 0030 1360 str r3, [r2] + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Set analog filter bit*/ + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** hi2c->Instance->CR1 |= AnalogFilter; + 68 .loc 1 111 5 is_stmt 1 discriminator 2 view .LVU16 + 69 .loc 1 111 9 is_stmt 0 discriminator 2 view .LVU17 + 70 0032 0268 ldr r2, [r0] + 71 .loc 1 111 25 discriminator 2 view .LVU18 + 72 0034 1368 ldr r3, [r2] + 73 0036 1943 orrs r1, r1, r3 + 74 .LVL1: + 75 .loc 1 111 25 discriminator 2 view .LVU19 + 76 0038 1160 str r1, [r2] + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** __HAL_I2C_ENABLE(hi2c); + 77 .loc 1 113 5 is_stmt 1 discriminator 2 view .LVU20 + 78 003a 0268 ldr r2, [r0] + 79 003c 1368 ldr r3, [r2] + 80 003e 43F00103 orr r3, r3, #1 + 81 0042 1360 str r3, [r2] + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** hi2c->State = HAL_I2C_STATE_READY; + 82 .loc 1 115 5 discriminator 2 view .LVU21 + 83 .loc 1 115 17 is_stmt 0 discriminator 2 view .LVU22 + 84 0044 2023 movs r3, #32 + 85 0046 80F84130 strb r3, [r0, #65] + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Process Unlocked */ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** __HAL_UNLOCK(hi2c); + 86 .loc 1 118 5 is_stmt 1 discriminator 2 view .LVU23 + 87 .loc 1 118 5 discriminator 2 view .LVU24 + 88 004a 0023 movs r3, #0 + 89 004c 80F84030 strb r3, [r0, #64] + 90 .loc 1 118 5 discriminator 2 view .LVU25 + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** return HAL_OK; + 91 .loc 1 120 5 discriminator 2 view .LVU26 + 92 .loc 1 120 12 is_stmt 0 discriminator 2 view .LVU27 + 93 0050 1846 mov r0, r3 + 94 .LVL2: + 95 .loc 1 120 12 discriminator 2 view .LVU28 + 96 0052 7047 bx lr + 97 .LVL3: + 98 .L3: + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** } + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** else + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** { + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** return HAL_BUSY; + 99 .loc 1 124 12 view .LVU29 + 100 0054 0220 movs r0, #2 + 101 .LVL4: + 102 .loc 1 124 12 view .LVU30 + 103 0056 7047 bx lr + 104 .LVL5: + 105 .L4: + ARM GAS /tmp/ccJs8R3x.s page 5 + + + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 106 .loc 1 100 5 view .LVU31 + 107 0058 0220 movs r0, #2 + 108 .LVL6: + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** } + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** } + 109 .loc 1 126 1 view .LVU32 + 110 005a 7047 bx lr + 111 .cfi_endproc + 112 .LFE141: + 114 .section .text.HAL_I2CEx_ConfigDigitalFilter,"ax",%progbits + 115 .align 1 + 116 .global HAL_I2CEx_ConfigDigitalFilter + 117 .syntax unified + 118 .thumb + 119 .thumb_func + 120 .fpu fpv5-d16 + 122 HAL_I2CEx_ConfigDigitalFilter: + 123 .LVL7: + 124 .LFB142: + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @brief Configure I2C Digital noise filter. + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * the configuration information for the specified I2Cx peripheral. + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @retval HAL status + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** { + 125 .loc 1 136 1 is_stmt 1 view -0 + 126 .cfi_startproc + 127 @ args = 0, pretend = 0, frame = 0 + 128 @ frame_needed = 0, uses_anonymous_args = 0 + 129 @ link register save eliminated. + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** uint32_t tmpreg; + 130 .loc 1 137 3 view .LVU34 + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Check the parameters */ + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); + 131 .loc 1 140 3 view .LVU35 + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); + 132 .loc 1 141 3 view .LVU36 + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** if (hi2c->State == HAL_I2C_STATE_READY) + 133 .loc 1 143 3 view .LVU37 + 134 .loc 1 143 11 is_stmt 0 view .LVU38 + 135 0000 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 136 0004 DBB2 uxtb r3, r3 + 137 .loc 1 143 6 view .LVU39 + 138 0006 202B cmp r3, #32 + 139 0008 22D1 bne .L7 + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** { + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Process Locked */ + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** __HAL_LOCK(hi2c); + 140 .loc 1 146 5 is_stmt 1 view .LVU40 + 141 .loc 1 146 5 view .LVU41 + ARM GAS /tmp/ccJs8R3x.s page 6 + + + 142 000a 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 143 000e 012B cmp r3, #1 + 144 0010 20D0 beq .L8 + 145 .loc 1 146 5 discriminator 2 view .LVU42 + 146 0012 0123 movs r3, #1 + 147 0014 80F84030 strb r3, [r0, #64] + 148 .loc 1 146 5 discriminator 2 view .LVU43 + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** hi2c->State = HAL_I2C_STATE_BUSY; + 149 .loc 1 148 5 discriminator 2 view .LVU44 + 150 .loc 1 148 17 is_stmt 0 discriminator 2 view .LVU45 + 151 0018 2423 movs r3, #36 + 152 001a 80F84130 strb r3, [r0, #65] + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Disable the selected I2C peripheral */ + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** __HAL_I2C_DISABLE(hi2c); + 153 .loc 1 151 5 is_stmt 1 discriminator 2 view .LVU46 + 154 001e 0268 ldr r2, [r0] + 155 0020 1368 ldr r3, [r2] + 156 0022 23F00103 bic r3, r3, #1 + 157 0026 1360 str r3, [r2] + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Get the old register value */ + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** tmpreg = hi2c->Instance->CR1; + 158 .loc 1 154 5 discriminator 2 view .LVU47 + 159 .loc 1 154 18 is_stmt 0 discriminator 2 view .LVU48 + 160 0028 0268 ldr r2, [r0] + 161 .loc 1 154 12 discriminator 2 view .LVU49 + 162 002a 1368 ldr r3, [r2] + 163 .LVL8: + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Reset I2Cx DNF bits [11:8] */ + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** tmpreg &= ~(I2C_CR1_DNF); + 164 .loc 1 157 5 is_stmt 1 discriminator 2 view .LVU50 + 165 .loc 1 157 12 is_stmt 0 discriminator 2 view .LVU51 + 166 002c 23F47063 bic r3, r3, #3840 + 167 .LVL9: + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Set I2Cx DNF coefficient */ + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** tmpreg |= DigitalFilter << 8U; + 168 .loc 1 160 5 is_stmt 1 discriminator 2 view .LVU52 + 169 .loc 1 160 12 is_stmt 0 discriminator 2 view .LVU53 + 170 0030 43EA0121 orr r1, r3, r1, lsl #8 + 171 .LVL10: + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Store the new register value */ + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** hi2c->Instance->CR1 = tmpreg; + 172 .loc 1 163 5 is_stmt 1 discriminator 2 view .LVU54 + 173 .loc 1 163 25 is_stmt 0 discriminator 2 view .LVU55 + 174 0034 1160 str r1, [r2] + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** __HAL_I2C_ENABLE(hi2c); + 175 .loc 1 165 5 is_stmt 1 discriminator 2 view .LVU56 + 176 0036 0268 ldr r2, [r0] + 177 0038 1368 ldr r3, [r2] + 178 003a 43F00103 orr r3, r3, #1 + 179 003e 1360 str r3, [r2] + ARM GAS /tmp/ccJs8R3x.s page 7 + + + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** hi2c->State = HAL_I2C_STATE_READY; + 180 .loc 1 167 5 discriminator 2 view .LVU57 + 181 .loc 1 167 17 is_stmt 0 discriminator 2 view .LVU58 + 182 0040 2023 movs r3, #32 + 183 0042 80F84130 strb r3, [r0, #65] + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Process Unlocked */ + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** __HAL_UNLOCK(hi2c); + 184 .loc 1 170 5 is_stmt 1 discriminator 2 view .LVU59 + 185 .loc 1 170 5 discriminator 2 view .LVU60 + 186 0046 0023 movs r3, #0 + 187 0048 80F84030 strb r3, [r0, #64] + 188 .loc 1 170 5 discriminator 2 view .LVU61 + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** return HAL_OK; + 189 .loc 1 172 5 discriminator 2 view .LVU62 + 190 .loc 1 172 12 is_stmt 0 discriminator 2 view .LVU63 + 191 004c 1846 mov r0, r3 + 192 .LVL11: + 193 .loc 1 172 12 discriminator 2 view .LVU64 + 194 004e 7047 bx lr + 195 .LVL12: + 196 .L7: + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** } + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** else + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** { + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** return HAL_BUSY; + 197 .loc 1 176 12 view .LVU65 + 198 0050 0220 movs r0, #2 + 199 .LVL13: + 200 .loc 1 176 12 view .LVU66 + 201 0052 7047 bx lr + 202 .LVL14: + 203 .L8: + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 204 .loc 1 146 5 view .LVU67 + 205 0054 0220 movs r0, #2 + 206 .LVL15: + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** } + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** } + 207 .loc 1 178 1 view .LVU68 + 208 0056 7047 bx lr + 209 .cfi_endproc + 210 .LFE142: + 212 .section .text.HAL_I2CEx_EnableFastModePlus,"ax",%progbits + 213 .align 1 + 214 .global HAL_I2CEx_EnableFastModePlus + 215 .syntax unified + 216 .thumb + 217 .thumb_func + 218 .fpu fpv5-d16 + 220 HAL_I2CEx_EnableFastModePlus: + 221 .LVL16: + 222 .LFB143: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @} + ARM GAS /tmp/ccJs8R3x.s page 8 + + + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** #if (defined(SYSCFG_PMC_I2C_PB6_FMP) || defined(SYSCFG_PMC_I2C_PB7_FMP)) || (defined(SYSCFG_PMC_I2 + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** @defgroup I2CEx_Exported_Functions_Group3 Fast Mode Plus Functions + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @brief Fast Mode Plus Functions + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** @verbatim + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** =============================================================================== + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** ##### Fast Mode Plus Functions ##### + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** =============================================================================== + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** [..] This section provides functions allowing to: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** (+) Configure Fast Mode Plus + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** @endverbatim + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @{ + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @brief Enable the I2C fast mode plus driving capability. + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @param ConfigFastModePlus Selects the pin. + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * This parameter can be one of the @ref I2CEx_FastModePlus values + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @note For I2C1, fast mode plus driving capability can be enabled on all selected + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * on each one of the following pins PB6, PB7, PB8 and PB9. + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * can be enabled only by using I2C_FASTMODEPLUS_I2C1 parameter. + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @note For all I2C2 pins fast mode plus driving capability can be enabled + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * only by using I2C_FASTMODEPLUS_I2C2 parameter. + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @note For all I2C3 pins fast mode plus driving capability can be enabled + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * only by using I2C_FASTMODEPLUS_I2C3 parameter. + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @note For all I2C4 pins fast mode plus driving capability can be enabled + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * only by using I2C_FASTMODEPLUS_I2C4 parameter. + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @retval None + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** void HAL_I2CEx_EnableFastModePlus(uint32_t ConfigFastModePlus) + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** { + 223 .loc 1 216 1 is_stmt 1 view -0 + 224 .cfi_startproc + 225 @ args = 0, pretend = 0, frame = 8 + 226 @ frame_needed = 0, uses_anonymous_args = 0 + 227 @ link register save eliminated. + 228 .loc 1 216 1 is_stmt 0 view .LVU70 + 229 0000 82B0 sub sp, sp, #8 + 230 .LCFI0: + 231 .cfi_def_cfa_offset 8 + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Check the parameter */ + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus)); + 232 .loc 1 218 3 is_stmt 1 view .LVU71 + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Enable SYSCFG clock */ + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** __HAL_RCC_SYSCFG_CLK_ENABLE(); + 233 .loc 1 221 3 view .LVU72 + 234 .LBB2: + 235 .loc 1 221 3 view .LVU73 + 236 .loc 1 221 3 view .LVU74 + 237 0002 084A ldr r2, .L11 + 238 0004 516C ldr r1, [r2, #68] + ARM GAS /tmp/ccJs8R3x.s page 9 + + + 239 0006 41F48041 orr r1, r1, #16384 + 240 000a 5164 str r1, [r2, #68] + 241 .loc 1 221 3 view .LVU75 + 242 000c 526C ldr r2, [r2, #68] + 243 000e 02F48042 and r2, r2, #16384 + 244 0012 0192 str r2, [sp, #4] + 245 .loc 1 221 3 view .LVU76 + 246 0014 019B ldr r3, [sp, #4] + 247 .LBE2: + 248 .loc 1 221 3 view .LVU77 + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Enable fast mode plus driving capability for selected pin */ + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** SET_BIT(SYSCFG->PMC, (uint32_t)ConfigFastModePlus); + 249 .loc 1 224 3 view .LVU78 + 250 0016 044A ldr r2, .L11+4 + 251 0018 5368 ldr r3, [r2, #4] + 252 001a 0343 orrs r3, r3, r0 + 253 001c 5360 str r3, [r2, #4] + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** } + 254 .loc 1 225 1 is_stmt 0 view .LVU79 + 255 001e 02B0 add sp, sp, #8 + 256 .LCFI1: + 257 .cfi_def_cfa_offset 0 + 258 @ sp needed + 259 0020 7047 bx lr + 260 .L12: + 261 0022 00BF .align 2 + 262 .L11: + 263 0024 00380240 .word 1073887232 + 264 0028 00380140 .word 1073821696 + 265 .cfi_endproc + 266 .LFE143: + 268 .section .text.HAL_I2CEx_DisableFastModePlus,"ax",%progbits + 269 .align 1 + 270 .global HAL_I2CEx_DisableFastModePlus + 271 .syntax unified + 272 .thumb + 273 .thumb_func + 274 .fpu fpv5-d16 + 276 HAL_I2CEx_DisableFastModePlus: + 277 .LVL17: + 278 .LFB144: + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /** + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @brief Disable the I2C fast mode plus driving capability. + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @param ConfigFastModePlus Selects the pin. + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * This parameter can be one of the @ref I2CEx_FastModePlus values + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @note For I2C1, fast mode plus driving capability can be disabled on all selected + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * I2C1 pins using I2C_FASTMODEPLUS_I2C1 parameter or independently + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * on each one of the following pins PB6, PB7, PB8 and PB9. + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @note For remaining I2C1 pins (PA14, PA15...) fast mode plus driving capability + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * can be disabled only by using I2C_FASTMODEPLUS_I2C1 parameter. + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @note For all I2C2 pins fast mode plus driving capability can be disabled + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * only by using I2C_FASTMODEPLUS_I2C2 parameter. + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @note For all I2C3 pins fast mode plus driving capability can be disabled + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * only by using I2C_FASTMODEPLUS_I2C3 parameter. + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @note For all I2C4 pins fast mode plus driving capability can be disabled + ARM GAS /tmp/ccJs8R3x.s page 10 + + + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * only by using I2C_FASTMODEPLUS_I2C4 parameter. + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** * @retval None + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** */ + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus) + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** { + 279 .loc 1 245 1 is_stmt 1 view -0 + 280 .cfi_startproc + 281 @ args = 0, pretend = 0, frame = 8 + 282 @ frame_needed = 0, uses_anonymous_args = 0 + 283 @ link register save eliminated. + 284 .loc 1 245 1 is_stmt 0 view .LVU81 + 285 0000 82B0 sub sp, sp, #8 + 286 .LCFI2: + 287 .cfi_def_cfa_offset 8 + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Check the parameter */ + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** assert_param(IS_I2C_FASTMODEPLUS(ConfigFastModePlus)); + 288 .loc 1 247 3 is_stmt 1 view .LVU82 + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Enable SYSCFG clock */ + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** __HAL_RCC_SYSCFG_CLK_ENABLE(); + 289 .loc 1 250 3 view .LVU83 + 290 .LBB3: + 291 .loc 1 250 3 view .LVU84 + 292 .loc 1 250 3 view .LVU85 + 293 0002 084A ldr r2, .L15 + 294 0004 516C ldr r1, [r2, #68] + 295 0006 41F48041 orr r1, r1, #16384 + 296 000a 5164 str r1, [r2, #68] + 297 .loc 1 250 3 view .LVU86 + 298 000c 526C ldr r2, [r2, #68] + 299 000e 02F48042 and r2, r2, #16384 + 300 0012 0192 str r2, [sp, #4] + 301 .loc 1 250 3 view .LVU87 + 302 0014 019B ldr r3, [sp, #4] + 303 .LBE3: + 304 .loc 1 250 3 view .LVU88 + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** /* Disable fast mode plus driving capability for selected pin */ + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** CLEAR_BIT(SYSCFG->PMC, (uint32_t)ConfigFastModePlus); + 305 .loc 1 253 3 view .LVU89 + 306 0016 044A ldr r2, .L15+4 + 307 0018 5368 ldr r3, [r2, #4] + 308 001a 23EA0003 bic r3, r3, r0 + 309 001e 5360 str r3, [r2, #4] + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c **** } + 310 .loc 1 254 1 is_stmt 0 view .LVU90 + 311 0020 02B0 add sp, sp, #8 + 312 .LCFI3: + 313 .cfi_def_cfa_offset 0 + 314 @ sp needed + 315 0022 7047 bx lr + 316 .L16: + 317 .align 2 + 318 .L15: + 319 0024 00380240 .word 1073887232 + 320 0028 00380140 .word 1073821696 + 321 .cfi_endproc + ARM GAS /tmp/ccJs8R3x.s page 11 + + + 322 .LFE144: + 324 .text + 325 .Letext0: + 326 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 327 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 328 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 329 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 330 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h" + ARM GAS /tmp/ccJs8R3x.s page 12 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_i2c_ex.c + /tmp/ccJs8R3x.s:17 .text.HAL_I2CEx_ConfigAnalogFilter:0000000000000000 $t + /tmp/ccJs8R3x.s:25 .text.HAL_I2CEx_ConfigAnalogFilter:0000000000000000 HAL_I2CEx_ConfigAnalogFilter + /tmp/ccJs8R3x.s:115 .text.HAL_I2CEx_ConfigDigitalFilter:0000000000000000 $t + /tmp/ccJs8R3x.s:122 .text.HAL_I2CEx_ConfigDigitalFilter:0000000000000000 HAL_I2CEx_ConfigDigitalFilter + /tmp/ccJs8R3x.s:213 .text.HAL_I2CEx_EnableFastModePlus:0000000000000000 $t + /tmp/ccJs8R3x.s:220 .text.HAL_I2CEx_EnableFastModePlus:0000000000000000 HAL_I2CEx_EnableFastModePlus + /tmp/ccJs8R3x.s:263 .text.HAL_I2CEx_EnableFastModePlus:0000000000000024 $d + /tmp/ccJs8R3x.s:269 .text.HAL_I2CEx_DisableFastModePlus:0000000000000000 $t + /tmp/ccJs8R3x.s:276 .text.HAL_I2CEx_DisableFastModePlus:0000000000000000 HAL_I2CEx_DisableFastModePlus + /tmp/ccJs8R3x.s:319 .text.HAL_I2CEx_DisableFastModePlus:0000000000000024 $d + +NO UNDEFINED SYMBOLS diff --git a/build/stm32f7xx_hal_i2c_ex.o b/build/stm32f7xx_hal_i2c_ex.o new file mode 100644 index 0000000..16e9799 Binary files /dev/null and b/build/stm32f7xx_hal_i2c_ex.o differ diff --git a/build/stm32f7xx_hal_msp.d b/build/stm32f7xx_hal_msp.d new file mode 100644 index 0000000..3b544a2 --- /dev/null +++ b/build/stm32f7xx_hal_msp.d @@ -0,0 +1,88 @@ +build/stm32f7xx_hal_msp.o: Src/stm32f7xx_hal_msp.c Inc/main.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h +Inc/main.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: diff --git a/build/stm32f7xx_hal_msp.lst b/build/stm32f7xx_hal_msp.lst new file mode 100644 index 0000000..8ee4560 --- /dev/null +++ b/build/stm32f7xx_hal_msp.lst @@ -0,0 +1,1415 @@ +ARM GAS /tmp/ccF0g8wo.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_msp.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.HAL_MspInit,"ax",%progbits + 17 .align 1 + 18 .global HAL_MspInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 HAL_MspInit: + 26 .LFB1183: + 27 .file 1 "Src/stm32f7xx_hal_msp.c" + 1:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN Header */ + 2:Src/stm32f7xx_hal_msp.c **** /** + 3:Src/stm32f7xx_hal_msp.c **** ****************************************************************************** + 4:Src/stm32f7xx_hal_msp.c **** * @file stm32f7xx_hal_msp.c + 5:Src/stm32f7xx_hal_msp.c **** * @brief This file provides code for the MSP Initialization + 6:Src/stm32f7xx_hal_msp.c **** * and de-Initialization codes. + 7:Src/stm32f7xx_hal_msp.c **** ****************************************************************************** + 8:Src/stm32f7xx_hal_msp.c **** * @attention + 9:Src/stm32f7xx_hal_msp.c **** * + 10:Src/stm32f7xx_hal_msp.c **** * Copyright (c) 2023 STMicroelectronics. + 11:Src/stm32f7xx_hal_msp.c **** * All rights reserved. + 12:Src/stm32f7xx_hal_msp.c **** * + 13:Src/stm32f7xx_hal_msp.c **** * This software is licensed under terms that can be found in the LICENSE file + 14:Src/stm32f7xx_hal_msp.c **** * in the root directory of this software component. + 15:Src/stm32f7xx_hal_msp.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 16:Src/stm32f7xx_hal_msp.c **** * + 17:Src/stm32f7xx_hal_msp.c **** ****************************************************************************** + 18:Src/stm32f7xx_hal_msp.c **** */ + 19:Src/stm32f7xx_hal_msp.c **** /* USER CODE END Header */ + 20:Src/stm32f7xx_hal_msp.c **** + 21:Src/stm32f7xx_hal_msp.c **** /* Includes ------------------------------------------------------------------*/ + 22:Src/stm32f7xx_hal_msp.c **** #include "main.h" + 23:Src/stm32f7xx_hal_msp.c **** + 24:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN Includes */ + 25:Src/stm32f7xx_hal_msp.c **** + 26:Src/stm32f7xx_hal_msp.c **** /* USER CODE END Includes */ + 27:Src/stm32f7xx_hal_msp.c **** + 28:Src/stm32f7xx_hal_msp.c **** /* Private typedef -----------------------------------------------------------*/ + 29:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN TD */ + 30:Src/stm32f7xx_hal_msp.c **** + 31:Src/stm32f7xx_hal_msp.c **** /* USER CODE END TD */ + ARM GAS /tmp/ccF0g8wo.s page 2 + + + 32:Src/stm32f7xx_hal_msp.c **** + 33:Src/stm32f7xx_hal_msp.c **** /* Private define ------------------------------------------------------------*/ + 34:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN Define */ + 35:Src/stm32f7xx_hal_msp.c **** + 36:Src/stm32f7xx_hal_msp.c **** /* USER CODE END Define */ + 37:Src/stm32f7xx_hal_msp.c **** + 38:Src/stm32f7xx_hal_msp.c **** /* Private macro -------------------------------------------------------------*/ + 39:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN Macro */ + 40:Src/stm32f7xx_hal_msp.c **** + 41:Src/stm32f7xx_hal_msp.c **** /* USER CODE END Macro */ + 42:Src/stm32f7xx_hal_msp.c **** + 43:Src/stm32f7xx_hal_msp.c **** /* Private variables ---------------------------------------------------------*/ + 44:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN PV */ + 45:Src/stm32f7xx_hal_msp.c **** + 46:Src/stm32f7xx_hal_msp.c **** /* USER CODE END PV */ + 47:Src/stm32f7xx_hal_msp.c **** + 48:Src/stm32f7xx_hal_msp.c **** /* Private function prototypes -----------------------------------------------*/ + 49:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN PFP */ + 50:Src/stm32f7xx_hal_msp.c **** + 51:Src/stm32f7xx_hal_msp.c **** /* USER CODE END PFP */ + 52:Src/stm32f7xx_hal_msp.c **** + 53:Src/stm32f7xx_hal_msp.c **** /* External functions --------------------------------------------------------*/ + 54:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ExternalFunctions */ + 55:Src/stm32f7xx_hal_msp.c **** + 56:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ExternalFunctions */ + 57:Src/stm32f7xx_hal_msp.c **** + 58:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN 0 */ + 59:Src/stm32f7xx_hal_msp.c **** + 60:Src/stm32f7xx_hal_msp.c **** /* USER CODE END 0 */ + 61:Src/stm32f7xx_hal_msp.c **** /** + 62:Src/stm32f7xx_hal_msp.c **** * Initializes the Global MSP. + 63:Src/stm32f7xx_hal_msp.c **** */ + 64:Src/stm32f7xx_hal_msp.c **** void HAL_MspInit(void) + 65:Src/stm32f7xx_hal_msp.c **** { + 28 .loc 1 65 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 8 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 33 0000 82B0 sub sp, sp, #8 + 34 .LCFI0: + 35 .cfi_def_cfa_offset 8 + 66:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN MspInit 0 */ + 67:Src/stm32f7xx_hal_msp.c **** + 68:Src/stm32f7xx_hal_msp.c **** /* USER CODE END MspInit 0 */ + 69:Src/stm32f7xx_hal_msp.c **** + 70:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_PWR_CLK_ENABLE(); + 36 .loc 1 70 3 view .LVU1 + 37 .LBB2: + 38 .loc 1 70 3 view .LVU2 + 39 .loc 1 70 3 view .LVU3 + 40 0002 0A4B ldr r3, .L3 + 41 0004 1A6C ldr r2, [r3, #64] + 42 0006 42F08052 orr r2, r2, #268435456 + 43 000a 1A64 str r2, [r3, #64] + 44 .loc 1 70 3 view .LVU4 + 45 000c 1A6C ldr r2, [r3, #64] + ARM GAS /tmp/ccF0g8wo.s page 3 + + + 46 000e 02F08052 and r2, r2, #268435456 + 47 0012 0092 str r2, [sp] + 48 .loc 1 70 3 view .LVU5 + 49 0014 009A ldr r2, [sp] + 50 .LBE2: + 51 .loc 1 70 3 view .LVU6 + 71:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_SYSCFG_CLK_ENABLE(); + 52 .loc 1 71 3 view .LVU7 + 53 .LBB3: + 54 .loc 1 71 3 view .LVU8 + 55 .loc 1 71 3 view .LVU9 + 56 0016 5A6C ldr r2, [r3, #68] + 57 0018 42F48042 orr r2, r2, #16384 + 58 001c 5A64 str r2, [r3, #68] + 59 .loc 1 71 3 view .LVU10 + 60 001e 5B6C ldr r3, [r3, #68] + 61 0020 03F48043 and r3, r3, #16384 + 62 0024 0193 str r3, [sp, #4] + 63 .loc 1 71 3 view .LVU11 + 64 0026 019B ldr r3, [sp, #4] + 65 .LBE3: + 66 .loc 1 71 3 view .LVU12 + 72:Src/stm32f7xx_hal_msp.c **** + 73:Src/stm32f7xx_hal_msp.c **** /* System interrupt init*/ + 74:Src/stm32f7xx_hal_msp.c **** + 75:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN MspInit 1 */ + 76:Src/stm32f7xx_hal_msp.c **** + 77:Src/stm32f7xx_hal_msp.c **** /* USER CODE END MspInit 1 */ + 78:Src/stm32f7xx_hal_msp.c **** } + 67 .loc 1 78 1 is_stmt 0 view .LVU13 + 68 0028 02B0 add sp, sp, #8 + 69 .LCFI1: + 70 .cfi_def_cfa_offset 0 + 71 @ sp needed + 72 002a 7047 bx lr + 73 .L4: + 74 .align 2 + 75 .L3: + 76 002c 00380240 .word 1073887232 + 77 .cfi_endproc + 78 .LFE1183: + 80 .section .text.HAL_ADC_MspInit,"ax",%progbits + 81 .align 1 + 82 .global HAL_ADC_MspInit + 83 .syntax unified + 84 .thumb + 85 .thumb_func + 86 .fpu fpv5-d16 + 88 HAL_ADC_MspInit: + 89 .LVL0: + 90 .LFB1184: + 79:Src/stm32f7xx_hal_msp.c **** + 80:Src/stm32f7xx_hal_msp.c **** /** + 81:Src/stm32f7xx_hal_msp.c **** * @brief ADC MSP Initialization + 82:Src/stm32f7xx_hal_msp.c **** * This function configures the hardware resources used in this example + 83:Src/stm32f7xx_hal_msp.c **** * @param hadc: ADC handle pointer + 84:Src/stm32f7xx_hal_msp.c **** * @retval None + ARM GAS /tmp/ccF0g8wo.s page 4 + + + 85:Src/stm32f7xx_hal_msp.c **** */ + 86:Src/stm32f7xx_hal_msp.c **** void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) + 87:Src/stm32f7xx_hal_msp.c **** { + 91 .loc 1 87 1 is_stmt 1 view -0 + 92 .cfi_startproc + 93 @ args = 0, pretend = 0, frame = 48 + 94 @ frame_needed = 0, uses_anonymous_args = 0 + 95 .loc 1 87 1 is_stmt 0 view .LVU15 + 96 0000 30B5 push {r4, r5, lr} + 97 .LCFI2: + 98 .cfi_def_cfa_offset 12 + 99 .cfi_offset 4, -12 + 100 .cfi_offset 5, -8 + 101 .cfi_offset 14, -4 + 102 0002 8DB0 sub sp, sp, #52 + 103 .LCFI3: + 104 .cfi_def_cfa_offset 64 + 88:Src/stm32f7xx_hal_msp.c **** GPIO_InitTypeDef GPIO_InitStruct = {0}; + 105 .loc 1 88 3 is_stmt 1 view .LVU16 + 106 .loc 1 88 20 is_stmt 0 view .LVU17 + 107 0004 0023 movs r3, #0 + 108 0006 0793 str r3, [sp, #28] + 109 0008 0893 str r3, [sp, #32] + 110 000a 0993 str r3, [sp, #36] + 111 000c 0A93 str r3, [sp, #40] + 112 000e 0B93 str r3, [sp, #44] + 89:Src/stm32f7xx_hal_msp.c **** if(hadc->Instance==ADC1) + 113 .loc 1 89 3 is_stmt 1 view .LVU18 + 114 .loc 1 89 10 is_stmt 0 view .LVU19 + 115 0010 0368 ldr r3, [r0] + 116 .loc 1 89 5 view .LVU20 + 117 0012 384A ldr r2, .L11 + 118 0014 9342 cmp r3, r2 + 119 0016 04D0 beq .L9 + 90:Src/stm32f7xx_hal_msp.c **** { + 91:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC1_MspInit 0 */ + 92:Src/stm32f7xx_hal_msp.c **** + 93:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ADC1_MspInit 0 */ + 94:Src/stm32f7xx_hal_msp.c **** /* Peripheral clock enable */ + 95:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_ADC1_CLK_ENABLE(); + 96:Src/stm32f7xx_hal_msp.c **** + 97:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); + 98:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 99:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 100:Src/stm32f7xx_hal_msp.c **** /**ADC1 GPIO Configuration + 101:Src/stm32f7xx_hal_msp.c **** PC0 ------> ADC1_IN10 + 102:Src/stm32f7xx_hal_msp.c **** PC1 ------> ADC1_IN11 + 103:Src/stm32f7xx_hal_msp.c **** PA2 ------> ADC1_IN2 + 104:Src/stm32f7xx_hal_msp.c **** PB0 ------> ADC1_IN8 + 105:Src/stm32f7xx_hal_msp.c **** PB1 ------> ADC1_IN9 + 106:Src/stm32f7xx_hal_msp.c **** */ + 107:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; + 108:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 109:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 110:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 111:Src/stm32f7xx_hal_msp.c **** + 112:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pin = GPIO_PIN_2; + ARM GAS /tmp/ccF0g8wo.s page 5 + + + 113:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 114:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 115:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 116:Src/stm32f7xx_hal_msp.c **** + 117:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; + 118:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 119:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 120:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 121:Src/stm32f7xx_hal_msp.c **** + 122:Src/stm32f7xx_hal_msp.c **** /* ADC1 interrupt Init */ + 123:Src/stm32f7xx_hal_msp.c **** HAL_NVIC_SetPriority(ADC_IRQn, 0, 0); + 124:Src/stm32f7xx_hal_msp.c **** HAL_NVIC_EnableIRQ(ADC_IRQn); + 125:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC1_MspInit 1 */ + 126:Src/stm32f7xx_hal_msp.c **** + 127:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ADC1_MspInit 1 */ + 128:Src/stm32f7xx_hal_msp.c **** } + 129:Src/stm32f7xx_hal_msp.c **** else if(hadc->Instance==ADC3) + 120 .loc 1 129 8 is_stmt 1 view .LVU21 + 121 .loc 1 129 10 is_stmt 0 view .LVU22 + 122 0018 374A ldr r2, .L11+4 + 123 001a 9342 cmp r3, r2 + 124 001c 46D0 beq .L10 + 125 .LVL1: + 126 .L5: + 130:Src/stm32f7xx_hal_msp.c **** { + 131:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC3_MspInit 0 */ + 132:Src/stm32f7xx_hal_msp.c **** + 133:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ADC3_MspInit 0 */ + 134:Src/stm32f7xx_hal_msp.c **** /* Peripheral clock enable */ + 135:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_ADC3_CLK_ENABLE(); + 136:Src/stm32f7xx_hal_msp.c **** + 137:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOF_CLK_ENABLE(); + 138:Src/stm32f7xx_hal_msp.c **** /**ADC3 GPIO Configuration + 139:Src/stm32f7xx_hal_msp.c **** PF5 ------> ADC3_IN15 + 140:Src/stm32f7xx_hal_msp.c **** */ + 141:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pin = GPIO_PIN_5; + 142:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 143:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 144:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 145:Src/stm32f7xx_hal_msp.c **** + 146:Src/stm32f7xx_hal_msp.c **** /* ADC3 interrupt Init */ + 147:Src/stm32f7xx_hal_msp.c **** HAL_NVIC_SetPriority(ADC_IRQn, 0, 0); + 148:Src/stm32f7xx_hal_msp.c **** HAL_NVIC_EnableIRQ(ADC_IRQn); + 149:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC3_MspInit 1 */ + 150:Src/stm32f7xx_hal_msp.c **** + 151:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ADC3_MspInit 1 */ + 152:Src/stm32f7xx_hal_msp.c **** } + 153:Src/stm32f7xx_hal_msp.c **** + 154:Src/stm32f7xx_hal_msp.c **** } + 127 .loc 1 154 1 view .LVU23 + 128 001e 0DB0 add sp, sp, #52 + 129 .LCFI4: + 130 .cfi_remember_state + 131 .cfi_def_cfa_offset 12 + 132 @ sp needed + 133 0020 30BD pop {r4, r5, pc} + 134 .LVL2: + ARM GAS /tmp/ccF0g8wo.s page 6 + + + 135 .L9: + 136 .LCFI5: + 137 .cfi_restore_state + 95:Src/stm32f7xx_hal_msp.c **** + 138 .loc 1 95 5 is_stmt 1 view .LVU24 + 139 .LBB4: + 95:Src/stm32f7xx_hal_msp.c **** + 140 .loc 1 95 5 view .LVU25 + 95:Src/stm32f7xx_hal_msp.c **** + 141 .loc 1 95 5 view .LVU26 + 142 0022 364B ldr r3, .L11+8 + 143 0024 5A6C ldr r2, [r3, #68] + 144 0026 42F48072 orr r2, r2, #256 + 145 002a 5A64 str r2, [r3, #68] + 95:Src/stm32f7xx_hal_msp.c **** + 146 .loc 1 95 5 view .LVU27 + 147 002c 5A6C ldr r2, [r3, #68] + 148 002e 02F48072 and r2, r2, #256 + 149 0032 0192 str r2, [sp, #4] + 95:Src/stm32f7xx_hal_msp.c **** + 150 .loc 1 95 5 view .LVU28 + 151 0034 019A ldr r2, [sp, #4] + 152 .LBE4: + 95:Src/stm32f7xx_hal_msp.c **** + 153 .loc 1 95 5 view .LVU29 + 97:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 154 .loc 1 97 5 view .LVU30 + 155 .LBB5: + 97:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 156 .loc 1 97 5 view .LVU31 + 97:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 157 .loc 1 97 5 view .LVU32 + 158 0036 1A6B ldr r2, [r3, #48] + 159 0038 42F00402 orr r2, r2, #4 + 160 003c 1A63 str r2, [r3, #48] + 97:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 161 .loc 1 97 5 view .LVU33 + 162 003e 1A6B ldr r2, [r3, #48] + 163 0040 02F00402 and r2, r2, #4 + 164 0044 0292 str r2, [sp, #8] + 97:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 165 .loc 1 97 5 view .LVU34 + 166 0046 029A ldr r2, [sp, #8] + 167 .LBE5: + 97:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOA_CLK_ENABLE(); + 168 .loc 1 97 5 view .LVU35 + 98:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 169 .loc 1 98 5 view .LVU36 + 170 .LBB6: + 98:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 171 .loc 1 98 5 view .LVU37 + 98:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 172 .loc 1 98 5 view .LVU38 + 173 0048 1A6B ldr r2, [r3, #48] + 174 004a 42F00102 orr r2, r2, #1 + 175 004e 1A63 str r2, [r3, #48] + 98:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + ARM GAS /tmp/ccF0g8wo.s page 7 + + + 176 .loc 1 98 5 view .LVU39 + 177 0050 1A6B ldr r2, [r3, #48] + 178 0052 02F00102 and r2, r2, #1 + 179 0056 0392 str r2, [sp, #12] + 98:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 180 .loc 1 98 5 view .LVU40 + 181 0058 039A ldr r2, [sp, #12] + 182 .LBE6: + 98:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOB_CLK_ENABLE(); + 183 .loc 1 98 5 view .LVU41 + 99:Src/stm32f7xx_hal_msp.c **** /**ADC1 GPIO Configuration + 184 .loc 1 99 5 view .LVU42 + 185 .LBB7: + 99:Src/stm32f7xx_hal_msp.c **** /**ADC1 GPIO Configuration + 186 .loc 1 99 5 view .LVU43 + 99:Src/stm32f7xx_hal_msp.c **** /**ADC1 GPIO Configuration + 187 .loc 1 99 5 view .LVU44 + 188 005a 1A6B ldr r2, [r3, #48] + 189 005c 42F00202 orr r2, r2, #2 + 190 0060 1A63 str r2, [r3, #48] + 99:Src/stm32f7xx_hal_msp.c **** /**ADC1 GPIO Configuration + 191 .loc 1 99 5 view .LVU45 + 192 0062 1B6B ldr r3, [r3, #48] + 193 0064 03F00203 and r3, r3, #2 + 194 0068 0493 str r3, [sp, #16] + 99:Src/stm32f7xx_hal_msp.c **** /**ADC1 GPIO Configuration + 195 .loc 1 99 5 view .LVU46 + 196 006a 049B ldr r3, [sp, #16] + 197 .LBE7: + 99:Src/stm32f7xx_hal_msp.c **** /**ADC1 GPIO Configuration + 198 .loc 1 99 5 view .LVU47 + 107:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 199 .loc 1 107 5 view .LVU48 + 107:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 200 .loc 1 107 25 is_stmt 0 view .LVU49 + 201 006c 0324 movs r4, #3 + 202 006e 0794 str r4, [sp, #28] + 108:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 203 .loc 1 108 5 is_stmt 1 view .LVU50 + 108:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 204 .loc 1 108 26 is_stmt 0 view .LVU51 + 205 0070 0894 str r4, [sp, #32] + 109:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 206 .loc 1 109 5 is_stmt 1 view .LVU52 + 110:Src/stm32f7xx_hal_msp.c **** + 207 .loc 1 110 5 view .LVU53 + 208 0072 07A9 add r1, sp, #28 + 209 0074 2248 ldr r0, .L11+12 + 210 .LVL3: + 110:Src/stm32f7xx_hal_msp.c **** + 211 .loc 1 110 5 is_stmt 0 view .LVU54 + 212 0076 FFF7FEFF bl HAL_GPIO_Init + 213 .LVL4: + 112:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 214 .loc 1 112 5 is_stmt 1 view .LVU55 + 112:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 215 .loc 1 112 25 is_stmt 0 view .LVU56 + ARM GAS /tmp/ccF0g8wo.s page 8 + + + 216 007a 0423 movs r3, #4 + 217 007c 0793 str r3, [sp, #28] + 113:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 218 .loc 1 113 5 is_stmt 1 view .LVU57 + 113:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 219 .loc 1 113 26 is_stmt 0 view .LVU58 + 220 007e 0894 str r4, [sp, #32] + 114:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 221 .loc 1 114 5 is_stmt 1 view .LVU59 + 114:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + 222 .loc 1 114 26 is_stmt 0 view .LVU60 + 223 0080 0025 movs r5, #0 + 224 0082 0995 str r5, [sp, #36] + 115:Src/stm32f7xx_hal_msp.c **** + 225 .loc 1 115 5 is_stmt 1 view .LVU61 + 226 0084 07A9 add r1, sp, #28 + 227 0086 1F48 ldr r0, .L11+16 + 228 0088 FFF7FEFF bl HAL_GPIO_Init + 229 .LVL5: + 117:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 230 .loc 1 117 5 view .LVU62 + 117:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 231 .loc 1 117 25 is_stmt 0 view .LVU63 + 232 008c 0794 str r4, [sp, #28] + 118:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 233 .loc 1 118 5 is_stmt 1 view .LVU64 + 118:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 234 .loc 1 118 26 is_stmt 0 view .LVU65 + 235 008e 0894 str r4, [sp, #32] + 119:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 236 .loc 1 119 5 is_stmt 1 view .LVU66 + 119:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + 237 .loc 1 119 26 is_stmt 0 view .LVU67 + 238 0090 0995 str r5, [sp, #36] + 120:Src/stm32f7xx_hal_msp.c **** + 239 .loc 1 120 5 is_stmt 1 view .LVU68 + 240 0092 07A9 add r1, sp, #28 + 241 0094 1C48 ldr r0, .L11+20 + 242 0096 FFF7FEFF bl HAL_GPIO_Init + 243 .LVL6: + 123:Src/stm32f7xx_hal_msp.c **** HAL_NVIC_EnableIRQ(ADC_IRQn); + 244 .loc 1 123 5 view .LVU69 + 245 009a 2A46 mov r2, r5 + 246 009c 2946 mov r1, r5 + 247 009e 1220 movs r0, #18 + 248 00a0 FFF7FEFF bl HAL_NVIC_SetPriority + 249 .LVL7: + 124:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC1_MspInit 1 */ + 250 .loc 1 124 5 view .LVU70 + 251 00a4 1220 movs r0, #18 + 252 00a6 FFF7FEFF bl HAL_NVIC_EnableIRQ + 253 .LVL8: + 254 00aa B8E7 b .L5 + 255 .LVL9: + 256 .L10: + 135:Src/stm32f7xx_hal_msp.c **** + 257 .loc 1 135 5 view .LVU71 + ARM GAS /tmp/ccF0g8wo.s page 9 + + + 258 .LBB8: + 135:Src/stm32f7xx_hal_msp.c **** + 259 .loc 1 135 5 view .LVU72 + 135:Src/stm32f7xx_hal_msp.c **** + 260 .loc 1 135 5 view .LVU73 + 261 00ac 134B ldr r3, .L11+8 + 262 00ae 5A6C ldr r2, [r3, #68] + 263 00b0 42F48062 orr r2, r2, #1024 + 264 00b4 5A64 str r2, [r3, #68] + 135:Src/stm32f7xx_hal_msp.c **** + 265 .loc 1 135 5 view .LVU74 + 266 00b6 5A6C ldr r2, [r3, #68] + 267 00b8 02F48062 and r2, r2, #1024 + 268 00bc 0592 str r2, [sp, #20] + 135:Src/stm32f7xx_hal_msp.c **** + 269 .loc 1 135 5 view .LVU75 + 270 00be 059A ldr r2, [sp, #20] + 271 .LBE8: + 135:Src/stm32f7xx_hal_msp.c **** + 272 .loc 1 135 5 view .LVU76 + 137:Src/stm32f7xx_hal_msp.c **** /**ADC3 GPIO Configuration + 273 .loc 1 137 5 view .LVU77 + 274 .LBB9: + 137:Src/stm32f7xx_hal_msp.c **** /**ADC3 GPIO Configuration + 275 .loc 1 137 5 view .LVU78 + 137:Src/stm32f7xx_hal_msp.c **** /**ADC3 GPIO Configuration + 276 .loc 1 137 5 view .LVU79 + 277 00c0 1A6B ldr r2, [r3, #48] + 278 00c2 42F02002 orr r2, r2, #32 + 279 00c6 1A63 str r2, [r3, #48] + 137:Src/stm32f7xx_hal_msp.c **** /**ADC3 GPIO Configuration + 280 .loc 1 137 5 view .LVU80 + 281 00c8 1B6B ldr r3, [r3, #48] + 282 00ca 03F02003 and r3, r3, #32 + 283 00ce 0693 str r3, [sp, #24] + 137:Src/stm32f7xx_hal_msp.c **** /**ADC3 GPIO Configuration + 284 .loc 1 137 5 view .LVU81 + 285 00d0 069B ldr r3, [sp, #24] + 286 .LBE9: + 137:Src/stm32f7xx_hal_msp.c **** /**ADC3 GPIO Configuration + 287 .loc 1 137 5 view .LVU82 + 141:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 288 .loc 1 141 5 view .LVU83 + 141:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + 289 .loc 1 141 25 is_stmt 0 view .LVU84 + 290 00d2 2023 movs r3, #32 + 291 00d4 0793 str r3, [sp, #28] + 142:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 292 .loc 1 142 5 is_stmt 1 view .LVU85 + 142:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 293 .loc 1 142 26 is_stmt 0 view .LVU86 + 294 00d6 0323 movs r3, #3 + 295 00d8 0893 str r3, [sp, #32] + 143:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); + 296 .loc 1 143 5 is_stmt 1 view .LVU87 + 144:Src/stm32f7xx_hal_msp.c **** + 297 .loc 1 144 5 view .LVU88 + ARM GAS /tmp/ccF0g8wo.s page 10 + + + 298 00da 07A9 add r1, sp, #28 + 299 00dc 0B48 ldr r0, .L11+24 + 300 .LVL10: + 144:Src/stm32f7xx_hal_msp.c **** + 301 .loc 1 144 5 is_stmt 0 view .LVU89 + 302 00de FFF7FEFF bl HAL_GPIO_Init + 303 .LVL11: + 147:Src/stm32f7xx_hal_msp.c **** HAL_NVIC_EnableIRQ(ADC_IRQn); + 304 .loc 1 147 5 is_stmt 1 view .LVU90 + 305 00e2 0022 movs r2, #0 + 306 00e4 1146 mov r1, r2 + 307 00e6 1220 movs r0, #18 + 308 00e8 FFF7FEFF bl HAL_NVIC_SetPriority + 309 .LVL12: + 148:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC3_MspInit 1 */ + 310 .loc 1 148 5 view .LVU91 + 311 00ec 1220 movs r0, #18 + 312 00ee FFF7FEFF bl HAL_NVIC_EnableIRQ + 313 .LVL13: + 314 .loc 1 154 1 is_stmt 0 view .LVU92 + 315 00f2 94E7 b .L5 + 316 .L12: + 317 .align 2 + 318 .L11: + 319 00f4 00200140 .word 1073815552 + 320 00f8 00220140 .word 1073816064 + 321 00fc 00380240 .word 1073887232 + 322 0100 00080240 .word 1073874944 + 323 0104 00000240 .word 1073872896 + 324 0108 00040240 .word 1073873920 + 325 010c 00140240 .word 1073878016 + 326 .cfi_endproc + 327 .LFE1184: + 329 .section .text.HAL_ADC_MspDeInit,"ax",%progbits + 330 .align 1 + 331 .global HAL_ADC_MspDeInit + 332 .syntax unified + 333 .thumb + 334 .thumb_func + 335 .fpu fpv5-d16 + 337 HAL_ADC_MspDeInit: + 338 .LVL14: + 339 .LFB1185: + 155:Src/stm32f7xx_hal_msp.c **** + 156:Src/stm32f7xx_hal_msp.c **** /** + 157:Src/stm32f7xx_hal_msp.c **** * @brief ADC MSP De-Initialization + 158:Src/stm32f7xx_hal_msp.c **** * This function freeze the hardware resources used in this example + 159:Src/stm32f7xx_hal_msp.c **** * @param hadc: ADC handle pointer + 160:Src/stm32f7xx_hal_msp.c **** * @retval None + 161:Src/stm32f7xx_hal_msp.c **** */ + 162:Src/stm32f7xx_hal_msp.c **** void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) + 163:Src/stm32f7xx_hal_msp.c **** { + 340 .loc 1 163 1 is_stmt 1 view -0 + 341 .cfi_startproc + 342 @ args = 0, pretend = 0, frame = 0 + 343 @ frame_needed = 0, uses_anonymous_args = 0 + 344 .loc 1 163 1 is_stmt 0 view .LVU94 + ARM GAS /tmp/ccF0g8wo.s page 11 + + + 345 0000 08B5 push {r3, lr} + 346 .LCFI6: + 347 .cfi_def_cfa_offset 8 + 348 .cfi_offset 3, -8 + 349 .cfi_offset 14, -4 + 164:Src/stm32f7xx_hal_msp.c **** if(hadc->Instance==ADC1) + 350 .loc 1 164 3 is_stmt 1 view .LVU95 + 351 .loc 1 164 10 is_stmt 0 view .LVU96 + 352 0002 0368 ldr r3, [r0] + 353 .loc 1 164 5 view .LVU97 + 354 0004 124A ldr r2, .L19 + 355 0006 9342 cmp r3, r2 + 356 0008 03D0 beq .L17 + 165:Src/stm32f7xx_hal_msp.c **** { + 166:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC1_MspDeInit 0 */ + 167:Src/stm32f7xx_hal_msp.c **** + 168:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ADC1_MspDeInit 0 */ + 169:Src/stm32f7xx_hal_msp.c **** /* Peripheral clock disable */ + 170:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_ADC1_CLK_DISABLE(); + 171:Src/stm32f7xx_hal_msp.c **** + 172:Src/stm32f7xx_hal_msp.c **** /**ADC1 GPIO Configuration + 173:Src/stm32f7xx_hal_msp.c **** PC0 ------> ADC1_IN10 + 174:Src/stm32f7xx_hal_msp.c **** PC1 ------> ADC1_IN11 + 175:Src/stm32f7xx_hal_msp.c **** PA2 ------> ADC1_IN2 + 176:Src/stm32f7xx_hal_msp.c **** PB0 ------> ADC1_IN8 + 177:Src/stm32f7xx_hal_msp.c **** PB1 ------> ADC1_IN9 + 178:Src/stm32f7xx_hal_msp.c **** */ + 179:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_1); + 180:Src/stm32f7xx_hal_msp.c **** + 181:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2); + 182:Src/stm32f7xx_hal_msp.c **** + 183:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0|GPIO_PIN_1); + 184:Src/stm32f7xx_hal_msp.c **** + 185:Src/stm32f7xx_hal_msp.c **** /* ADC1 interrupt DeInit */ + 186:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC1:ADC_IRQn disable */ + 187:Src/stm32f7xx_hal_msp.c **** /** + 188:Src/stm32f7xx_hal_msp.c **** * Uncomment the line below to disable the "ADC_IRQn" interrupt + 189:Src/stm32f7xx_hal_msp.c **** * Be aware, disabling shared interrupt may affect other IPs + 190:Src/stm32f7xx_hal_msp.c **** */ + 191:Src/stm32f7xx_hal_msp.c **** /* HAL_NVIC_DisableIRQ(ADC_IRQn); */ + 192:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ADC1:ADC_IRQn disable */ + 193:Src/stm32f7xx_hal_msp.c **** + 194:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC1_MspDeInit 1 */ + 195:Src/stm32f7xx_hal_msp.c **** + 196:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ADC1_MspDeInit 1 */ + 197:Src/stm32f7xx_hal_msp.c **** } + 198:Src/stm32f7xx_hal_msp.c **** else if(hadc->Instance==ADC3) + 357 .loc 1 198 8 is_stmt 1 view .LVU98 + 358 .loc 1 198 10 is_stmt 0 view .LVU99 + 359 000a 124A ldr r2, .L19+4 + 360 000c 9342 cmp r3, r2 + 361 000e 13D0 beq .L18 + 362 .LVL15: + 363 .L13: + 199:Src/stm32f7xx_hal_msp.c **** { + 200:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC3_MspDeInit 0 */ + 201:Src/stm32f7xx_hal_msp.c **** + ARM GAS /tmp/ccF0g8wo.s page 12 + + + 202:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ADC3_MspDeInit 0 */ + 203:Src/stm32f7xx_hal_msp.c **** /* Peripheral clock disable */ + 204:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_ADC3_CLK_DISABLE(); + 205:Src/stm32f7xx_hal_msp.c **** + 206:Src/stm32f7xx_hal_msp.c **** /**ADC3 GPIO Configuration + 207:Src/stm32f7xx_hal_msp.c **** PF5 ------> ADC3_IN15 + 208:Src/stm32f7xx_hal_msp.c **** */ + 209:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_DeInit(GPIOF, GPIO_PIN_5); + 210:Src/stm32f7xx_hal_msp.c **** + 211:Src/stm32f7xx_hal_msp.c **** /* ADC3 interrupt DeInit */ + 212:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC3:ADC_IRQn disable */ + 213:Src/stm32f7xx_hal_msp.c **** /** + 214:Src/stm32f7xx_hal_msp.c **** * Uncomment the line below to disable the "ADC_IRQn" interrupt + 215:Src/stm32f7xx_hal_msp.c **** * Be aware, disabling shared interrupt may affect other IPs + 216:Src/stm32f7xx_hal_msp.c **** */ + 217:Src/stm32f7xx_hal_msp.c **** /* HAL_NVIC_DisableIRQ(ADC_IRQn); */ + 218:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ADC3:ADC_IRQn disable */ + 219:Src/stm32f7xx_hal_msp.c **** + 220:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN ADC3_MspDeInit 1 */ + 221:Src/stm32f7xx_hal_msp.c **** + 222:Src/stm32f7xx_hal_msp.c **** /* USER CODE END ADC3_MspDeInit 1 */ + 223:Src/stm32f7xx_hal_msp.c **** } + 224:Src/stm32f7xx_hal_msp.c **** + 225:Src/stm32f7xx_hal_msp.c **** } + 364 .loc 1 225 1 view .LVU100 + 365 0010 08BD pop {r3, pc} + 366 .LVL16: + 367 .L17: + 170:Src/stm32f7xx_hal_msp.c **** + 368 .loc 1 170 5 is_stmt 1 view .LVU101 + 369 0012 02F58C32 add r2, r2, #71680 + 370 0016 536C ldr r3, [r2, #68] + 371 0018 23F48073 bic r3, r3, #256 + 372 001c 5364 str r3, [r2, #68] + 179:Src/stm32f7xx_hal_msp.c **** + 373 .loc 1 179 5 view .LVU102 + 374 001e 0321 movs r1, #3 + 375 0020 0D48 ldr r0, .L19+8 + 376 .LVL17: + 179:Src/stm32f7xx_hal_msp.c **** + 377 .loc 1 179 5 is_stmt 0 view .LVU103 + 378 0022 FFF7FEFF bl HAL_GPIO_DeInit + 379 .LVL18: + 181:Src/stm32f7xx_hal_msp.c **** + 380 .loc 1 181 5 is_stmt 1 view .LVU104 + 381 0026 0421 movs r1, #4 + 382 0028 0C48 ldr r0, .L19+12 + 383 002a FFF7FEFF bl HAL_GPIO_DeInit + 384 .LVL19: + 183:Src/stm32f7xx_hal_msp.c **** + 385 .loc 1 183 5 view .LVU105 + 386 002e 0321 movs r1, #3 + 387 0030 0B48 ldr r0, .L19+16 + 388 0032 FFF7FEFF bl HAL_GPIO_DeInit + 389 .LVL20: + 390 0036 EBE7 b .L13 + 391 .LVL21: + ARM GAS /tmp/ccF0g8wo.s page 13 + + + 392 .L18: + 204:Src/stm32f7xx_hal_msp.c **** + 393 .loc 1 204 5 view .LVU106 + 394 0038 02F58B32 add r2, r2, #71168 + 395 003c 536C ldr r3, [r2, #68] + 396 003e 23F48063 bic r3, r3, #1024 + 397 0042 5364 str r3, [r2, #68] + 209:Src/stm32f7xx_hal_msp.c **** + 398 .loc 1 209 5 view .LVU107 + 399 0044 2021 movs r1, #32 + 400 0046 0748 ldr r0, .L19+20 + 401 .LVL22: + 209:Src/stm32f7xx_hal_msp.c **** + 402 .loc 1 209 5 is_stmt 0 view .LVU108 + 403 0048 FFF7FEFF bl HAL_GPIO_DeInit + 404 .LVL23: + 405 .loc 1 225 1 view .LVU109 + 406 004c E0E7 b .L13 + 407 .L20: + 408 004e 00BF .align 2 + 409 .L19: + 410 0050 00200140 .word 1073815552 + 411 0054 00220140 .word 1073816064 + 412 0058 00080240 .word 1073874944 + 413 005c 00000240 .word 1073872896 + 414 0060 00040240 .word 1073873920 + 415 0064 00140240 .word 1073878016 + 416 .cfi_endproc + 417 .LFE1185: + 419 .section .text.HAL_SD_MspInit,"ax",%progbits + 420 .align 1 + 421 .global HAL_SD_MspInit + 422 .syntax unified + 423 .thumb + 424 .thumb_func + 425 .fpu fpv5-d16 + 427 HAL_SD_MspInit: + 428 .LVL24: + 429 .LFB1186: + 226:Src/stm32f7xx_hal_msp.c **** + 227:Src/stm32f7xx_hal_msp.c **** /** + 228:Src/stm32f7xx_hal_msp.c **** * @brief SD MSP Initialization + 229:Src/stm32f7xx_hal_msp.c **** * This function configures the hardware resources used in this example + 230:Src/stm32f7xx_hal_msp.c **** * @param hsd: SD handle pointer + 231:Src/stm32f7xx_hal_msp.c **** * @retval None + 232:Src/stm32f7xx_hal_msp.c **** */ + 233:Src/stm32f7xx_hal_msp.c **** void HAL_SD_MspInit(SD_HandleTypeDef* hsd) + 234:Src/stm32f7xx_hal_msp.c **** { + 430 .loc 1 234 1 is_stmt 1 view -0 + 431 .cfi_startproc + 432 @ args = 0, pretend = 0, frame = 176 + 433 @ frame_needed = 0, uses_anonymous_args = 0 + 434 .loc 1 234 1 is_stmt 0 view .LVU111 + 435 0000 F0B5 push {r4, r5, r6, r7, lr} + 436 .LCFI7: + 437 .cfi_def_cfa_offset 20 + 438 .cfi_offset 4, -20 + ARM GAS /tmp/ccF0g8wo.s page 14 + + + 439 .cfi_offset 5, -16 + 440 .cfi_offset 6, -12 + 441 .cfi_offset 7, -8 + 442 .cfi_offset 14, -4 + 443 0002 ADB0 sub sp, sp, #180 + 444 .LCFI8: + 445 .cfi_def_cfa_offset 200 + 446 0004 0446 mov r4, r0 + 235:Src/stm32f7xx_hal_msp.c **** GPIO_InitTypeDef GPIO_InitStruct = {0}; + 447 .loc 1 235 3 is_stmt 1 view .LVU112 + 448 .loc 1 235 20 is_stmt 0 view .LVU113 + 449 0006 0021 movs r1, #0 + 450 0008 2791 str r1, [sp, #156] + 451 000a 2891 str r1, [sp, #160] + 452 000c 2991 str r1, [sp, #164] + 453 000e 2A91 str r1, [sp, #168] + 454 0010 2B91 str r1, [sp, #172] + 236:Src/stm32f7xx_hal_msp.c **** RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; + 455 .loc 1 236 3 is_stmt 1 view .LVU114 + 456 .loc 1 236 28 is_stmt 0 view .LVU115 + 457 0012 9022 movs r2, #144 + 458 0014 03A8 add r0, sp, #12 + 459 .LVL25: + 460 .loc 1 236 28 view .LVU116 + 461 0016 FFF7FEFF bl memset + 462 .LVL26: + 237:Src/stm32f7xx_hal_msp.c **** if(hsd->Instance==SDMMC1) + 463 .loc 1 237 3 is_stmt 1 view .LVU117 + 464 .loc 1 237 9 is_stmt 0 view .LVU118 + 465 001a 2268 ldr r2, [r4] + 466 .loc 1 237 5 view .LVU119 + 467 001c 224B ldr r3, .L27 + 468 001e 9A42 cmp r2, r3 + 469 0020 01D0 beq .L25 + 470 .LVL27: + 471 .L21: + 238:Src/stm32f7xx_hal_msp.c **** { + 239:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN SDMMC1_MspInit 0 */ + 240:Src/stm32f7xx_hal_msp.c **** + 241:Src/stm32f7xx_hal_msp.c **** /* USER CODE END SDMMC1_MspInit 0 */ + 242:Src/stm32f7xx_hal_msp.c **** + 243:Src/stm32f7xx_hal_msp.c **** /** Initializes the peripherals clock + 244:Src/stm32f7xx_hal_msp.c **** */ + 245:Src/stm32f7xx_hal_msp.c **** PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SDMMC1|RCC_PERIPHCLK_CLK48; + 246:Src/stm32f7xx_hal_msp.c **** PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48SOURCE_PLL; + 247:Src/stm32f7xx_hal_msp.c **** PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_CLK48; + 248:Src/stm32f7xx_hal_msp.c **** if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + 249:Src/stm32f7xx_hal_msp.c **** { + 250:Src/stm32f7xx_hal_msp.c **** Error_Handler(); + 251:Src/stm32f7xx_hal_msp.c **** } + 252:Src/stm32f7xx_hal_msp.c **** + 253:Src/stm32f7xx_hal_msp.c **** /* Peripheral clock enable */ + 254:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_SDMMC1_CLK_ENABLE(); + 255:Src/stm32f7xx_hal_msp.c **** + 256:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOC_CLK_ENABLE(); + 257:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 258:Src/stm32f7xx_hal_msp.c **** /**SDMMC1 GPIO Configuration + ARM GAS /tmp/ccF0g8wo.s page 15 + + + 259:Src/stm32f7xx_hal_msp.c **** PC8 ------> SDMMC1_D0 + 260:Src/stm32f7xx_hal_msp.c **** PC9 ------> SDMMC1_D1 + 261:Src/stm32f7xx_hal_msp.c **** PC10 ------> SDMMC1_D2 + 262:Src/stm32f7xx_hal_msp.c **** PC11 ------> SDMMC1_D3 + 263:Src/stm32f7xx_hal_msp.c **** PC12 ------> SDMMC1_CK + 264:Src/stm32f7xx_hal_msp.c **** PD2 ------> SDMMC1_CMD + 265:Src/stm32f7xx_hal_msp.c **** */ + 266:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11 + 267:Src/stm32f7xx_hal_msp.c **** |GPIO_PIN_12; + 268:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 269:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 270:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 271:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1; + 272:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 273:Src/stm32f7xx_hal_msp.c **** + 274:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pin = GPIO_PIN_2; + 275:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 276:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 277:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 278:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1; + 279:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + 280:Src/stm32f7xx_hal_msp.c **** + 281:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN SDMMC1_MspInit 1 */ + 282:Src/stm32f7xx_hal_msp.c **** + 283:Src/stm32f7xx_hal_msp.c **** /* USER CODE END SDMMC1_MspInit 1 */ + 284:Src/stm32f7xx_hal_msp.c **** } + 285:Src/stm32f7xx_hal_msp.c **** + 286:Src/stm32f7xx_hal_msp.c **** } + 472 .loc 1 286 1 view .LVU120 + 473 0022 2DB0 add sp, sp, #180 + 474 .LCFI9: + 475 .cfi_remember_state + 476 .cfi_def_cfa_offset 20 + 477 @ sp needed + 478 0024 F0BD pop {r4, r5, r6, r7, pc} + 479 .LVL28: + 480 .L25: + 481 .LCFI10: + 482 .cfi_restore_state + 245:Src/stm32f7xx_hal_msp.c **** PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48SOURCE_PLL; + 483 .loc 1 245 5 is_stmt 1 view .LVU121 + 245:Src/stm32f7xx_hal_msp.c **** PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48SOURCE_PLL; + 484 .loc 1 245 46 is_stmt 0 view .LVU122 + 485 0026 4FF42003 mov r3, #10485760 + 486 002a 0393 str r3, [sp, #12] + 246:Src/stm32f7xx_hal_msp.c **** PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_CLK48; + 487 .loc 1 246 5 is_stmt 1 view .LVU123 + 247:Src/stm32f7xx_hal_msp.c **** if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) + 488 .loc 1 247 5 view .LVU124 + 248:Src/stm32f7xx_hal_msp.c **** { + 489 .loc 1 248 5 view .LVU125 + 248:Src/stm32f7xx_hal_msp.c **** { + 490 .loc 1 248 9 is_stmt 0 view .LVU126 + 491 002c 03A8 add r0, sp, #12 + 492 002e FFF7FEFF bl HAL_RCCEx_PeriphCLKConfig + 493 .LVL29: + 248:Src/stm32f7xx_hal_msp.c **** { + ARM GAS /tmp/ccF0g8wo.s page 16 + + + 494 .loc 1 248 8 view .LVU127 + 495 0032 0028 cmp r0, #0 + 496 0034 35D1 bne .L26 + 497 .L23: + 254:Src/stm32f7xx_hal_msp.c **** + 498 .loc 1 254 5 is_stmt 1 view .LVU128 + 499 .LBB10: + 254:Src/stm32f7xx_hal_msp.c **** + 500 .loc 1 254 5 view .LVU129 + 254:Src/stm32f7xx_hal_msp.c **** + 501 .loc 1 254 5 view .LVU130 + 502 0036 1D4B ldr r3, .L27+4 + 503 0038 5A6C ldr r2, [r3, #68] + 504 003a 42F40062 orr r2, r2, #2048 + 505 003e 5A64 str r2, [r3, #68] + 254:Src/stm32f7xx_hal_msp.c **** + 506 .loc 1 254 5 view .LVU131 + 507 0040 5A6C ldr r2, [r3, #68] + 508 0042 02F40062 and r2, r2, #2048 + 509 0046 0092 str r2, [sp] + 254:Src/stm32f7xx_hal_msp.c **** + 510 .loc 1 254 5 view .LVU132 + 511 0048 009A ldr r2, [sp] + 512 .LBE10: + 254:Src/stm32f7xx_hal_msp.c **** + 513 .loc 1 254 5 view .LVU133 + 256:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 514 .loc 1 256 5 view .LVU134 + 515 .LBB11: + 256:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 516 .loc 1 256 5 view .LVU135 + 256:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 517 .loc 1 256 5 view .LVU136 + 518 004a 1A6B ldr r2, [r3, #48] + 519 004c 42F00402 orr r2, r2, #4 + 520 0050 1A63 str r2, [r3, #48] + 256:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 521 .loc 1 256 5 view .LVU137 + 522 0052 1A6B ldr r2, [r3, #48] + 523 0054 02F00402 and r2, r2, #4 + 524 0058 0192 str r2, [sp, #4] + 256:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 525 .loc 1 256 5 view .LVU138 + 526 005a 019A ldr r2, [sp, #4] + 527 .LBE11: + 256:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_GPIOD_CLK_ENABLE(); + 528 .loc 1 256 5 view .LVU139 + 257:Src/stm32f7xx_hal_msp.c **** /**SDMMC1 GPIO Configuration + 529 .loc 1 257 5 view .LVU140 + 530 .LBB12: + 257:Src/stm32f7xx_hal_msp.c **** /**SDMMC1 GPIO Configuration + 531 .loc 1 257 5 view .LVU141 + 257:Src/stm32f7xx_hal_msp.c **** /**SDMMC1 GPIO Configuration + 532 .loc 1 257 5 view .LVU142 + 533 005c 1A6B ldr r2, [r3, #48] + 534 005e 42F00802 orr r2, r2, #8 + 535 0062 1A63 str r2, [r3, #48] + ARM GAS /tmp/ccF0g8wo.s page 17 + + + 257:Src/stm32f7xx_hal_msp.c **** /**SDMMC1 GPIO Configuration + 536 .loc 1 257 5 view .LVU143 + 537 0064 1B6B ldr r3, [r3, #48] + 538 0066 03F00803 and r3, r3, #8 + 539 006a 0293 str r3, [sp, #8] + 257:Src/stm32f7xx_hal_msp.c **** /**SDMMC1 GPIO Configuration + 540 .loc 1 257 5 view .LVU144 + 541 006c 029B ldr r3, [sp, #8] + 542 .LBE12: + 257:Src/stm32f7xx_hal_msp.c **** /**SDMMC1 GPIO Configuration + 543 .loc 1 257 5 view .LVU145 + 266:Src/stm32f7xx_hal_msp.c **** |GPIO_PIN_12; + 544 .loc 1 266 5 view .LVU146 + 266:Src/stm32f7xx_hal_msp.c **** |GPIO_PIN_12; + 545 .loc 1 266 25 is_stmt 0 view .LVU147 + 546 006e 4FF4F853 mov r3, #7936 + 547 0072 2793 str r3, [sp, #156] + 268:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 548 .loc 1 268 5 is_stmt 1 view .LVU148 + 268:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 549 .loc 1 268 26 is_stmt 0 view .LVU149 + 550 0074 0227 movs r7, #2 + 551 0076 2897 str r7, [sp, #160] + 269:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 552 .loc 1 269 5 is_stmt 1 view .LVU150 + 269:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 553 .loc 1 269 26 is_stmt 0 view .LVU151 + 554 0078 0026 movs r6, #0 + 555 007a 2996 str r6, [sp, #164] + 270:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1; + 556 .loc 1 270 5 is_stmt 1 view .LVU152 + 270:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1; + 557 .loc 1 270 27 is_stmt 0 view .LVU153 + 558 007c 0325 movs r5, #3 + 559 007e 2A95 str r5, [sp, #168] + 271:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 560 .loc 1 271 5 is_stmt 1 view .LVU154 + 271:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 561 .loc 1 271 31 is_stmt 0 view .LVU155 + 562 0080 0C24 movs r4, #12 + 563 .LVL30: + 271:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + 564 .loc 1 271 31 view .LVU156 + 565 0082 2B94 str r4, [sp, #172] + 272:Src/stm32f7xx_hal_msp.c **** + 566 .loc 1 272 5 is_stmt 1 view .LVU157 + 567 0084 27A9 add r1, sp, #156 + 568 0086 0A48 ldr r0, .L27+8 + 569 0088 FFF7FEFF bl HAL_GPIO_Init + 570 .LVL31: + 274:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 571 .loc 1 274 5 view .LVU158 + 274:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 572 .loc 1 274 25 is_stmt 0 view .LVU159 + 573 008c 0423 movs r3, #4 + 574 008e 2793 str r3, [sp, #156] + 275:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + ARM GAS /tmp/ccF0g8wo.s page 18 + + + 575 .loc 1 275 5 is_stmt 1 view .LVU160 + 275:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 576 .loc 1 275 26 is_stmt 0 view .LVU161 + 577 0090 2897 str r7, [sp, #160] + 276:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 578 .loc 1 276 5 is_stmt 1 view .LVU162 + 276:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; + 579 .loc 1 276 26 is_stmt 0 view .LVU163 + 580 0092 2996 str r6, [sp, #164] + 277:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1; + 581 .loc 1 277 5 is_stmt 1 view .LVU164 + 277:Src/stm32f7xx_hal_msp.c **** GPIO_InitStruct.Alternate = GPIO_AF12_SDMMC1; + 582 .loc 1 277 27 is_stmt 0 view .LVU165 + 583 0094 2A95 str r5, [sp, #168] + 278:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + 584 .loc 1 278 5 is_stmt 1 view .LVU166 + 278:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); + 585 .loc 1 278 31 is_stmt 0 view .LVU167 + 586 0096 2B94 str r4, [sp, #172] + 279:Src/stm32f7xx_hal_msp.c **** + 587 .loc 1 279 5 is_stmt 1 view .LVU168 + 588 0098 27A9 add r1, sp, #156 + 589 009a 0648 ldr r0, .L27+12 + 590 009c FFF7FEFF bl HAL_GPIO_Init + 591 .LVL32: + 592 .loc 1 286 1 is_stmt 0 view .LVU169 + 593 00a0 BFE7 b .L21 + 594 .LVL33: + 595 .L26: + 250:Src/stm32f7xx_hal_msp.c **** } + 596 .loc 1 250 7 is_stmt 1 view .LVU170 + 597 00a2 FFF7FEFF bl Error_Handler + 598 .LVL34: + 599 00a6 C6E7 b .L23 + 600 .L28: + 601 .align 2 + 602 .L27: + 603 00a8 002C0140 .word 1073818624 + 604 00ac 00380240 .word 1073887232 + 605 00b0 00080240 .word 1073874944 + 606 00b4 000C0240 .word 1073875968 + 607 .cfi_endproc + 608 .LFE1186: + 610 .section .text.HAL_SD_MspDeInit,"ax",%progbits + 611 .align 1 + 612 .global HAL_SD_MspDeInit + 613 .syntax unified + 614 .thumb + 615 .thumb_func + 616 .fpu fpv5-d16 + 618 HAL_SD_MspDeInit: + 619 .LVL35: + 620 .LFB1187: + 287:Src/stm32f7xx_hal_msp.c **** + 288:Src/stm32f7xx_hal_msp.c **** /** + 289:Src/stm32f7xx_hal_msp.c **** * @brief SD MSP De-Initialization + 290:Src/stm32f7xx_hal_msp.c **** * This function freeze the hardware resources used in this example + ARM GAS /tmp/ccF0g8wo.s page 19 + + + 291:Src/stm32f7xx_hal_msp.c **** * @param hsd: SD handle pointer + 292:Src/stm32f7xx_hal_msp.c **** * @retval None + 293:Src/stm32f7xx_hal_msp.c **** */ + 294:Src/stm32f7xx_hal_msp.c **** void HAL_SD_MspDeInit(SD_HandleTypeDef* hsd) + 295:Src/stm32f7xx_hal_msp.c **** { + 621 .loc 1 295 1 view -0 + 622 .cfi_startproc + 623 @ args = 0, pretend = 0, frame = 0 + 624 @ frame_needed = 0, uses_anonymous_args = 0 + 625 .loc 1 295 1 is_stmt 0 view .LVU172 + 626 0000 08B5 push {r3, lr} + 627 .LCFI11: + 628 .cfi_def_cfa_offset 8 + 629 .cfi_offset 3, -8 + 630 .cfi_offset 14, -4 + 296:Src/stm32f7xx_hal_msp.c **** if(hsd->Instance==SDMMC1) + 631 .loc 1 296 3 is_stmt 1 view .LVU173 + 632 .loc 1 296 9 is_stmt 0 view .LVU174 + 633 0002 0268 ldr r2, [r0] + 634 .loc 1 296 5 view .LVU175 + 635 0004 094B ldr r3, .L33 + 636 0006 9A42 cmp r2, r3 + 637 0008 00D0 beq .L32 + 638 .LVL36: + 639 .L29: + 297:Src/stm32f7xx_hal_msp.c **** { + 298:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN SDMMC1_MspDeInit 0 */ + 299:Src/stm32f7xx_hal_msp.c **** + 300:Src/stm32f7xx_hal_msp.c **** /* USER CODE END SDMMC1_MspDeInit 0 */ + 301:Src/stm32f7xx_hal_msp.c **** /* Peripheral clock disable */ + 302:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_SDMMC1_CLK_DISABLE(); + 303:Src/stm32f7xx_hal_msp.c **** + 304:Src/stm32f7xx_hal_msp.c **** /**SDMMC1 GPIO Configuration + 305:Src/stm32f7xx_hal_msp.c **** PC8 ------> SDMMC1_D0 + 306:Src/stm32f7xx_hal_msp.c **** PC9 ------> SDMMC1_D1 + 307:Src/stm32f7xx_hal_msp.c **** PC10 ------> SDMMC1_D2 + 308:Src/stm32f7xx_hal_msp.c **** PC11 ------> SDMMC1_D3 + 309:Src/stm32f7xx_hal_msp.c **** PC12 ------> SDMMC1_CK + 310:Src/stm32f7xx_hal_msp.c **** PD2 ------> SDMMC1_CMD + 311:Src/stm32f7xx_hal_msp.c **** */ + 312:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_DeInit(GPIOC, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11 + 313:Src/stm32f7xx_hal_msp.c **** |GPIO_PIN_12); + 314:Src/stm32f7xx_hal_msp.c **** + 315:Src/stm32f7xx_hal_msp.c **** HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2); + 316:Src/stm32f7xx_hal_msp.c **** + 317:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN SDMMC1_MspDeInit 1 */ + 318:Src/stm32f7xx_hal_msp.c **** + 319:Src/stm32f7xx_hal_msp.c **** /* USER CODE END SDMMC1_MspDeInit 1 */ + 320:Src/stm32f7xx_hal_msp.c **** } + 321:Src/stm32f7xx_hal_msp.c **** + 322:Src/stm32f7xx_hal_msp.c **** } + 640 .loc 1 322 1 view .LVU176 + 641 000a 08BD pop {r3, pc} + 642 .LVL37: + 643 .L32: + 302:Src/stm32f7xx_hal_msp.c **** + 644 .loc 1 302 5 is_stmt 1 view .LVU177 + ARM GAS /tmp/ccF0g8wo.s page 20 + + + 645 000c 084A ldr r2, .L33+4 + 646 000e 536C ldr r3, [r2, #68] + 647 0010 23F40063 bic r3, r3, #2048 + 648 0014 5364 str r3, [r2, #68] + 312:Src/stm32f7xx_hal_msp.c **** |GPIO_PIN_12); + 649 .loc 1 312 5 view .LVU178 + 650 0016 4FF4F851 mov r1, #7936 + 651 001a 0648 ldr r0, .L33+8 + 652 .LVL38: + 312:Src/stm32f7xx_hal_msp.c **** |GPIO_PIN_12); + 653 .loc 1 312 5 is_stmt 0 view .LVU179 + 654 001c FFF7FEFF bl HAL_GPIO_DeInit + 655 .LVL39: + 315:Src/stm32f7xx_hal_msp.c **** + 656 .loc 1 315 5 is_stmt 1 view .LVU180 + 657 0020 0421 movs r1, #4 + 658 0022 0548 ldr r0, .L33+12 + 659 0024 FFF7FEFF bl HAL_GPIO_DeInit + 660 .LVL40: + 661 .loc 1 322 1 is_stmt 0 view .LVU181 + 662 0028 EFE7 b .L29 + 663 .L34: + 664 002a 00BF .align 2 + 665 .L33: + 666 002c 002C0140 .word 1073818624 + 667 0030 00380240 .word 1073887232 + 668 0034 00080240 .word 1073874944 + 669 0038 000C0240 .word 1073875968 + 670 .cfi_endproc + 671 .LFE1187: + 673 .section .text.HAL_TIM_Base_MspInit,"ax",%progbits + 674 .align 1 + 675 .global HAL_TIM_Base_MspInit + 676 .syntax unified + 677 .thumb + 678 .thumb_func + 679 .fpu fpv5-d16 + 681 HAL_TIM_Base_MspInit: + 682 .LVL41: + 683 .LFB1188: + 323:Src/stm32f7xx_hal_msp.c **** + 324:Src/stm32f7xx_hal_msp.c **** /** + 325:Src/stm32f7xx_hal_msp.c **** * @brief TIM_Base MSP Initialization + 326:Src/stm32f7xx_hal_msp.c **** * This function configures the hardware resources used in this example + 327:Src/stm32f7xx_hal_msp.c **** * @param htim_base: TIM_Base handle pointer + 328:Src/stm32f7xx_hal_msp.c **** * @retval None + 329:Src/stm32f7xx_hal_msp.c **** */ + 330:Src/stm32f7xx_hal_msp.c **** void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) + 331:Src/stm32f7xx_hal_msp.c **** { + 684 .loc 1 331 1 is_stmt 1 view -0 + 685 .cfi_startproc + 686 @ args = 0, pretend = 0, frame = 8 + 687 @ frame_needed = 0, uses_anonymous_args = 0 + 332:Src/stm32f7xx_hal_msp.c **** if(htim_base->Instance==TIM10) + 688 .loc 1 332 3 view .LVU183 + 689 .loc 1 332 15 is_stmt 0 view .LVU184 + 690 0000 0268 ldr r2, [r0] + ARM GAS /tmp/ccF0g8wo.s page 21 + + + 691 .loc 1 332 5 view .LVU185 + 692 0002 0E4B ldr r3, .L42 + 693 0004 9A42 cmp r2, r3 + 694 0006 00D0 beq .L41 + 695 0008 7047 bx lr + 696 .L41: + 331:Src/stm32f7xx_hal_msp.c **** if(htim_base->Instance==TIM10) + 697 .loc 1 331 1 view .LVU186 + 698 000a 00B5 push {lr} + 699 .LCFI12: + 700 .cfi_def_cfa_offset 4 + 701 .cfi_offset 14, -4 + 702 000c 83B0 sub sp, sp, #12 + 703 .LCFI13: + 704 .cfi_def_cfa_offset 16 + 333:Src/stm32f7xx_hal_msp.c **** { + 334:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN TIM10_MspInit 0 */ + 335:Src/stm32f7xx_hal_msp.c **** + 336:Src/stm32f7xx_hal_msp.c **** /* USER CODE END TIM10_MspInit 0 */ + 337:Src/stm32f7xx_hal_msp.c **** /* Peripheral clock enable */ + 338:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_TIM10_CLK_ENABLE(); + 705 .loc 1 338 5 is_stmt 1 view .LVU187 + 706 .LBB13: + 707 .loc 1 338 5 view .LVU188 + 708 .loc 1 338 5 view .LVU189 + 709 000e 03F57443 add r3, r3, #62464 + 710 0012 5A6C ldr r2, [r3, #68] + 711 0014 42F40032 orr r2, r2, #131072 + 712 0018 5A64 str r2, [r3, #68] + 713 .loc 1 338 5 view .LVU190 + 714 001a 5B6C ldr r3, [r3, #68] + 715 001c 03F40033 and r3, r3, #131072 + 716 0020 0193 str r3, [sp, #4] + 717 .loc 1 338 5 view .LVU191 + 718 0022 019B ldr r3, [sp, #4] + 719 .LBE13: + 720 .loc 1 338 5 view .LVU192 + 339:Src/stm32f7xx_hal_msp.c **** /* TIM10 interrupt Init */ + 340:Src/stm32f7xx_hal_msp.c **** HAL_NVIC_SetPriority(TIM1_UP_TIM10_IRQn, 0, 0); + 721 .loc 1 340 5 view .LVU193 + 722 0024 0022 movs r2, #0 + 723 0026 1146 mov r1, r2 + 724 0028 1920 movs r0, #25 + 725 .LVL42: + 726 .loc 1 340 5 is_stmt 0 view .LVU194 + 727 002a FFF7FEFF bl HAL_NVIC_SetPriority + 728 .LVL43: + 341:Src/stm32f7xx_hal_msp.c **** HAL_NVIC_EnableIRQ(TIM1_UP_TIM10_IRQn); + 729 .loc 1 341 5 is_stmt 1 view .LVU195 + 730 002e 1920 movs r0, #25 + 731 0030 FFF7FEFF bl HAL_NVIC_EnableIRQ + 732 .LVL44: + 342:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN TIM10_MspInit 1 */ + 343:Src/stm32f7xx_hal_msp.c **** + 344:Src/stm32f7xx_hal_msp.c **** /* USER CODE END TIM10_MspInit 1 */ + 345:Src/stm32f7xx_hal_msp.c **** } + 346:Src/stm32f7xx_hal_msp.c **** + ARM GAS /tmp/ccF0g8wo.s page 22 + + + 347:Src/stm32f7xx_hal_msp.c **** } + 733 .loc 1 347 1 is_stmt 0 view .LVU196 + 734 0034 03B0 add sp, sp, #12 + 735 .LCFI14: + 736 .cfi_def_cfa_offset 4 + 737 @ sp needed + 738 0036 5DF804FB ldr pc, [sp], #4 + 739 .L43: + 740 003a 00BF .align 2 + 741 .L42: + 742 003c 00440140 .word 1073824768 + 743 .cfi_endproc + 744 .LFE1188: + 746 .section .text.HAL_TIM_Base_MspDeInit,"ax",%progbits + 747 .align 1 + 748 .global HAL_TIM_Base_MspDeInit + 749 .syntax unified + 750 .thumb + 751 .thumb_func + 752 .fpu fpv5-d16 + 754 HAL_TIM_Base_MspDeInit: + 755 .LVL45: + 756 .LFB1189: + 348:Src/stm32f7xx_hal_msp.c **** + 349:Src/stm32f7xx_hal_msp.c **** /** + 350:Src/stm32f7xx_hal_msp.c **** * @brief TIM_Base MSP De-Initialization + 351:Src/stm32f7xx_hal_msp.c **** * This function freeze the hardware resources used in this example + 352:Src/stm32f7xx_hal_msp.c **** * @param htim_base: TIM_Base handle pointer + 353:Src/stm32f7xx_hal_msp.c **** * @retval None + 354:Src/stm32f7xx_hal_msp.c **** */ + 355:Src/stm32f7xx_hal_msp.c **** void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) + 356:Src/stm32f7xx_hal_msp.c **** { + 757 .loc 1 356 1 is_stmt 1 view -0 + 758 .cfi_startproc + 759 @ args = 0, pretend = 0, frame = 0 + 760 @ frame_needed = 0, uses_anonymous_args = 0 + 761 .loc 1 356 1 is_stmt 0 view .LVU198 + 762 0000 08B5 push {r3, lr} + 763 .LCFI15: + 764 .cfi_def_cfa_offset 8 + 765 .cfi_offset 3, -8 + 766 .cfi_offset 14, -4 + 357:Src/stm32f7xx_hal_msp.c **** if(htim_base->Instance==TIM10) + 767 .loc 1 357 3 is_stmt 1 view .LVU199 + 768 .loc 1 357 15 is_stmt 0 view .LVU200 + 769 0002 0268 ldr r2, [r0] + 770 .loc 1 357 5 view .LVU201 + 771 0004 064B ldr r3, .L48 + 772 0006 9A42 cmp r2, r3 + 773 0008 00D0 beq .L47 + 774 .LVL46: + 775 .L44: + 358:Src/stm32f7xx_hal_msp.c **** { + 359:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN TIM10_MspDeInit 0 */ + 360:Src/stm32f7xx_hal_msp.c **** + 361:Src/stm32f7xx_hal_msp.c **** /* USER CODE END TIM10_MspDeInit 0 */ + 362:Src/stm32f7xx_hal_msp.c **** /* Peripheral clock disable */ + ARM GAS /tmp/ccF0g8wo.s page 23 + + + 363:Src/stm32f7xx_hal_msp.c **** __HAL_RCC_TIM10_CLK_DISABLE(); + 364:Src/stm32f7xx_hal_msp.c **** + 365:Src/stm32f7xx_hal_msp.c **** /* TIM10 interrupt DeInit */ + 366:Src/stm32f7xx_hal_msp.c **** HAL_NVIC_DisableIRQ(TIM1_UP_TIM10_IRQn); + 367:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN TIM10_MspDeInit 1 */ + 368:Src/stm32f7xx_hal_msp.c **** + 369:Src/stm32f7xx_hal_msp.c **** /* USER CODE END TIM10_MspDeInit 1 */ + 370:Src/stm32f7xx_hal_msp.c **** } + 371:Src/stm32f7xx_hal_msp.c **** + 372:Src/stm32f7xx_hal_msp.c **** } + 776 .loc 1 372 1 view .LVU202 + 777 000a 08BD pop {r3, pc} + 778 .LVL47: + 779 .L47: + 363:Src/stm32f7xx_hal_msp.c **** + 780 .loc 1 363 5 is_stmt 1 view .LVU203 + 781 000c 054A ldr r2, .L48+4 + 782 000e 536C ldr r3, [r2, #68] + 783 0010 23F40033 bic r3, r3, #131072 + 784 0014 5364 str r3, [r2, #68] + 366:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN TIM10_MspDeInit 1 */ + 785 .loc 1 366 5 view .LVU204 + 786 0016 1920 movs r0, #25 + 787 .LVL48: + 366:Src/stm32f7xx_hal_msp.c **** /* USER CODE BEGIN TIM10_MspDeInit 1 */ + 788 .loc 1 366 5 is_stmt 0 view .LVU205 + 789 0018 FFF7FEFF bl HAL_NVIC_DisableIRQ + 790 .LVL49: + 791 .loc 1 372 1 view .LVU206 + 792 001c F5E7 b .L44 + 793 .L49: + 794 001e 00BF .align 2 + 795 .L48: + 796 0020 00440140 .word 1073824768 + 797 0024 00380240 .word 1073887232 + 798 .cfi_endproc + 799 .LFE1189: + 801 .text + 802 .Letext0: + 803 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 804 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 805 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 806 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 807 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h" + 808 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h" + 809 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 810 .file 9 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h" + 811 .file 10 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h" + 812 .file 11 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h" + 813 .file 12 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h" + 814 .file 13 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" + 815 .file 14 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" + 816 .file 15 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 817 .file 16 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h" + 818 .file 17 "Inc/main.h" + 819 .file 18 "" + ARM GAS /tmp/ccF0g8wo.s page 24 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_msp.c + /tmp/ccF0g8wo.s:17 .text.HAL_MspInit:0000000000000000 $t + /tmp/ccF0g8wo.s:25 .text.HAL_MspInit:0000000000000000 HAL_MspInit + /tmp/ccF0g8wo.s:76 .text.HAL_MspInit:000000000000002c $d + /tmp/ccF0g8wo.s:81 .text.HAL_ADC_MspInit:0000000000000000 $t + /tmp/ccF0g8wo.s:88 .text.HAL_ADC_MspInit:0000000000000000 HAL_ADC_MspInit + /tmp/ccF0g8wo.s:319 .text.HAL_ADC_MspInit:00000000000000f4 $d + /tmp/ccF0g8wo.s:330 .text.HAL_ADC_MspDeInit:0000000000000000 $t + /tmp/ccF0g8wo.s:337 .text.HAL_ADC_MspDeInit:0000000000000000 HAL_ADC_MspDeInit + /tmp/ccF0g8wo.s:410 .text.HAL_ADC_MspDeInit:0000000000000050 $d + /tmp/ccF0g8wo.s:420 .text.HAL_SD_MspInit:0000000000000000 $t + /tmp/ccF0g8wo.s:427 .text.HAL_SD_MspInit:0000000000000000 HAL_SD_MspInit + /tmp/ccF0g8wo.s:603 .text.HAL_SD_MspInit:00000000000000a8 $d + /tmp/ccF0g8wo.s:611 .text.HAL_SD_MspDeInit:0000000000000000 $t + /tmp/ccF0g8wo.s:618 .text.HAL_SD_MspDeInit:0000000000000000 HAL_SD_MspDeInit + /tmp/ccF0g8wo.s:666 .text.HAL_SD_MspDeInit:000000000000002c $d + /tmp/ccF0g8wo.s:674 .text.HAL_TIM_Base_MspInit:0000000000000000 $t + /tmp/ccF0g8wo.s:681 .text.HAL_TIM_Base_MspInit:0000000000000000 HAL_TIM_Base_MspInit + /tmp/ccF0g8wo.s:742 .text.HAL_TIM_Base_MspInit:000000000000003c $d + /tmp/ccF0g8wo.s:747 .text.HAL_TIM_Base_MspDeInit:0000000000000000 $t + /tmp/ccF0g8wo.s:754 .text.HAL_TIM_Base_MspDeInit:0000000000000000 HAL_TIM_Base_MspDeInit + /tmp/ccF0g8wo.s:796 .text.HAL_TIM_Base_MspDeInit:0000000000000020 $d + +UNDEFINED SYMBOLS +HAL_GPIO_Init +HAL_NVIC_SetPriority +HAL_NVIC_EnableIRQ +HAL_GPIO_DeInit +memset +HAL_RCCEx_PeriphCLKConfig +Error_Handler +HAL_NVIC_DisableIRQ diff --git a/build/stm32f7xx_hal_msp.o b/build/stm32f7xx_hal_msp.o new file mode 100644 index 0000000..4d41b08 Binary files /dev/null and b/build/stm32f7xx_hal_msp.o differ diff --git a/build/stm32f7xx_hal_pwr.d b/build/stm32f7xx_hal_pwr.d new file mode 100644 index 0000000..b5ea50f --- /dev/null +++ b/build/stm32f7xx_hal_pwr.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_pwr.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_pwr.lst b/build/stm32f7xx_hal_pwr.lst new file mode 100644 index 0000000..333afef --- /dev/null +++ b/build/stm32f7xx_hal_pwr.lst @@ -0,0 +1,2392 @@ +ARM GAS /tmp/ccE9MXkV.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_pwr.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.HAL_PWR_DeInit,"ax",%progbits + 17 .align 1 + 18 .global HAL_PWR_DeInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 HAL_PWR_DeInit: + 26 .LFB141: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @file stm32f7xx_hal_pwr.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief PWR HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * functionalities of the Power Controller (PWR) peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + Initialization and de-initialization functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + Peripheral Control functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ****************************************************************************** + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @attention + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * Copyright (c) 2017 STMicroelectronics. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * All rights reserved. + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * This software is licensed under terms that can be found in the LICENSE file + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * in the root directory of this software component. + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ****************************************************************************** + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Includes ------------------------------------------------------------------*/ + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** #include "stm32f7xx_hal.h" + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** @addtogroup STM32F7xx_HAL_Driver + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @{ + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** @defgroup PWR PWR + ARM GAS /tmp/ccE9MXkV.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief PWR HAL module driver + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @{ + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** #ifdef HAL_PWR_MODULE_ENABLED + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Private typedef -----------------------------------------------------------*/ + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Private define ------------------------------------------------------------*/ + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** @addtogroup PWR_Private_Constants + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @{ + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** @defgroup PWR_PVD_Mode_Mask PWR PVD Mode Mask + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @{ + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** #define PVD_MODE_IT ((uint32_t)0x00010000U) + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** #define PVD_MODE_EVT ((uint32_t)0x00020000U) + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** #define PVD_RISING_EDGE ((uint32_t)0x00000001U) + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** #define PVD_FALLING_EDGE ((uint32_t)0x00000002U) + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @} + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** @defgroup PWR_ENABLE_WUP_Mask PWR Enable WUP Mask + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @{ + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** #define PWR_EWUP_MASK ((uint32_t)0x00003F00) + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @} + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @} + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Private macro -------------------------------------------------------------*/ + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Private variables ---------------------------------------------------------*/ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Private function prototypes -----------------------------------------------*/ + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Private functions ---------------------------------------------------------*/ + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** @defgroup PWR_Exported_Functions PWR Exported Functions + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @{ + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** @defgroup PWR_Exported_Functions_Group1 Initialization and de-initialization functions + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Initialization and de-initialization functions + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** @verbatim + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** =============================================================================== + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ##### Initialization and de-initialization functions ##### + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** =============================================================================== + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** [..] + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** After reset, the backup domain (RTC registers, RTC backup data + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** registers and backup SRAM) is protected against possible unwanted + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** write accesses. + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** To enable access to the RTC Domain and RTC registers, proceed as follows: + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) Enable the Power Controller (PWR) APB1 interface clock using the + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_RCC_PWR_CLK_ENABLE() macro. + ARM GAS /tmp/ccE9MXkV.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) Enable access to RTC domain using the HAL_PWR_EnableBkUpAccess() function. + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** @endverbatim + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @{ + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Deinitializes the HAL PWR peripheral registers to their default reset values. + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_DeInit(void) + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 28 .loc 1 100 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_RCC_PWR_FORCE_RESET(); + 33 .loc 1 101 3 view .LVU1 + 34 0000 044B ldr r3, .L2 + 35 0002 1A6A ldr r2, [r3, #32] + 36 0004 42F08052 orr r2, r2, #268435456 + 37 0008 1A62 str r2, [r3, #32] + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_RCC_PWR_RELEASE_RESET(); + 38 .loc 1 102 3 view .LVU2 + 39 000a 1A6A ldr r2, [r3, #32] + 40 000c 22F08052 bic r2, r2, #268435456 + 41 0010 1A62 str r2, [r3, #32] + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 42 .loc 1 103 1 is_stmt 0 view .LVU3 + 43 0012 7047 bx lr + 44 .L3: + 45 .align 2 + 46 .L2: + 47 0014 00380240 .word 1073887232 + 48 .cfi_endproc + 49 .LFE141: + 51 .section .text.HAL_PWR_EnableBkUpAccess,"ax",%progbits + 52 .align 1 + 53 .global HAL_PWR_EnableBkUpAccess + 54 .syntax unified + 55 .thumb + 56 .thumb_func + 57 .fpu fpv5-d16 + 59 HAL_PWR_EnableBkUpAccess: + 60 .LFB142: + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Enables access to the backup domain (RTC registers, RTC + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * backup data registers and backup SRAM). + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note If the HSE divided by 2, 3, ..31 is used as the RTC clock, the + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * Backup Domain Access should be kept enabled. + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_EnableBkUpAccess(void) + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 61 .loc 1 113 1 is_stmt 1 view -0 + ARM GAS /tmp/ccE9MXkV.s page 4 + + + 62 .cfi_startproc + 63 @ args = 0, pretend = 0, frame = 0 + 64 @ frame_needed = 0, uses_anonymous_args = 0 + 65 @ link register save eliminated. + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Enable access to RTC and backup registers */ + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** SET_BIT(PWR->CR1, PWR_CR1_DBP); + 66 .loc 1 115 3 view .LVU5 + 67 0000 024A ldr r2, .L5 + 68 0002 1368 ldr r3, [r2] + 69 0004 43F48073 orr r3, r3, #256 + 70 0008 1360 str r3, [r2] + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 71 .loc 1 116 1 is_stmt 0 view .LVU6 + 72 000a 7047 bx lr + 73 .L6: + 74 .align 2 + 75 .L5: + 76 000c 00700040 .word 1073770496 + 77 .cfi_endproc + 78 .LFE142: + 80 .section .text.HAL_PWR_DisableBkUpAccess,"ax",%progbits + 81 .align 1 + 82 .global HAL_PWR_DisableBkUpAccess + 83 .syntax unified + 84 .thumb + 85 .thumb_func + 86 .fpu fpv5-d16 + 88 HAL_PWR_DisableBkUpAccess: + 89 .LFB143: + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Disables access to the backup domain (RTC registers, RTC + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * backup data registers and backup SRAM). + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note If the HSE divided by 2, 3, ..31 is used as the RTC clock, the + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * Backup Domain Access should be kept enabled. + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_DisableBkUpAccess(void) + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 90 .loc 1 126 1 is_stmt 1 view -0 + 91 .cfi_startproc + 92 @ args = 0, pretend = 0, frame = 0 + 93 @ frame_needed = 0, uses_anonymous_args = 0 + 94 @ link register save eliminated. + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Disable access to RTC and backup registers */ + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** CLEAR_BIT(PWR->CR1, PWR_CR1_DBP); + 95 .loc 1 128 2 view .LVU8 + 96 0000 024A ldr r2, .L8 + 97 0002 1368 ldr r3, [r2] + 98 0004 23F48073 bic r3, r3, #256 + 99 0008 1360 str r3, [r2] + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 100 .loc 1 129 1 is_stmt 0 view .LVU9 + 101 000a 7047 bx lr + 102 .L9: + 103 .align 2 + 104 .L8: + ARM GAS /tmp/ccE9MXkV.s page 5 + + + 105 000c 00700040 .word 1073770496 + 106 .cfi_endproc + 107 .LFE143: + 109 .section .text.HAL_PWR_ConfigPVD,"ax",%progbits + 110 .align 1 + 111 .global HAL_PWR_ConfigPVD + 112 .syntax unified + 113 .thumb + 114 .thumb_func + 115 .fpu fpv5-d16 + 117 HAL_PWR_ConfigPVD: + 118 .LVL0: + 119 .LFB144: + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @} + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** @defgroup PWR_Exported_Functions_Group2 Peripheral Control functions + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Low Power modes configuration functions + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** @verbatim + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** =============================================================================== + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ##### Peripheral Control functions ##### + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** =============================================================================== + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** *** PVD configuration *** + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ========================= + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** [..] + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) The PVD is used to monitor the VDD power supply by comparing it to a + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** threshold selected by the PVD Level (PLS[2:0] bits in the PWR_CR). + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) A PVDO flag is available to indicate if VDD/VDDA is higher or lower + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** than the PVD threshold. This event is internally connected to the EXTI + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** line16 and can generate an interrupt if enabled. This is done through + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_PWR_PVD_EXTI_ENABLE_IT() macro. + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) The PVD is stopped in Standby mode. + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** *** Wake-up pin configuration *** + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ================================ + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** [..] + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) Wake-up pin is used to wake up the system from Standby mode. This pin is + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** forced in input pull-down configuration and is active on rising edges. + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) There are up to 6 Wake-up pin in the STM32F7 devices family + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** *** Low Power modes configuration *** + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ===================================== + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** [..] + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** The devices feature 3 low-power modes: + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) Sleep mode: Cortex-M7 core stopped, peripherals kept running. + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) Stop mode: all clocks are stopped, regulator running, regulator + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** in low power mode + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) Standby mode: 1.2V domain powered off. + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** *** Sleep mode *** + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ================== + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** [..] + ARM GAS /tmp/ccE9MXkV.s page 6 + + + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) Entry: + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** The Sleep mode is entered by using the HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLE + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** functions with + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (++) PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (++) PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** -@@- The Regulator parameter is not used for the STM32F7 family + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** and is kept as parameter just to maintain compatibility with the + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** lower power families (STM32L). + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) Exit: + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** Any peripheral interrupt acknowledged by the nested vectored interrupt + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** controller (NVIC) can wake up the device from Sleep mode. + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** *** Stop mode *** + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ================= + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** [..] + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** In Stop mode, all clocks in the 1.2V domain are stopped, the PLL, the HSI, + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** and the HSE RC oscillators are disabled. Internal SRAM and register contents + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** are preserved. + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** The voltage regulator can be configured either in normal or low-power mode. + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** To minimize the consumption In Stop mode, FLASH can be powered off before + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** entering the Stop mode using the HAL_PWREx_EnableFlashPowerDown() function. + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** It can be switched on again by software after exiting the Stop mode using + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** the HAL_PWREx_DisableFlashPowerDown() function. + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) Entry: + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** The Stop mode is entered using the HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON) + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** function with: + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (++) Main regulator ON. + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (++) Low Power regulator ON. + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) Exit: + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** Any EXTI Line (Internal or External) configured in Interrupt/Event mode. + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** *** Standby mode *** + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ==================== + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** [..] + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** The Standby mode allows to achieve the lowest power consumption. It is based + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** on the Cortex-M7 deep sleep mode, with the voltage regulator disabled. + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** The 1.2V domain is consequently powered off. The PLL, the HSI oscillator and + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** the HSE oscillator are also switched off. SRAM and register contents are lost + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** except for the RTC registers, RTC backup registers, backup SRAM and Standby + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** circuitry. + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** The voltage regulator is OFF. + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (++) Entry: + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+++) The Standby mode is entered using the HAL_PWR_EnterSTANDBYMode() function. + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (++) Exit: + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+++) WKUP pin rising or falling edge, RTC alarm (Alarm A and Alarm B), RTC + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** wakeup, tamper event, time stamp event, external reset in NRST pin, IWDG reset. + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** *** Auto-wakeup (AWU) from low-power mode *** + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** ============================================= + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** [..] + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) The MCU can be woken up from low-power mode by an RTC Alarm event, an RTC + ARM GAS /tmp/ccE9MXkV.s page 7 + + + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** Wakeup event, a tamper event or a time-stamp event, without depending on + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** an external interrupt (Auto-wakeup mode). + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (+) RTC auto-wakeup (AWU) from the Stop and Standby modes + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (++) To wake up from the Stop mode with an RTC alarm event, it is necessary to + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** configure the RTC to generate the RTC alarm using the HAL_RTC_SetAlarm_IT() function. + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (++) To wake up from the Stop mode with an RTC Tamper or time stamp event, it + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** is necessary to configure the RTC to detect the tamper or time stamp event using the + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** HAL_RTCEx_SetTimeStamp_IT() or HAL_RTCEx_SetTamper_IT() functions. + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (++) To wake up from the Stop mode with an RTC WakeUp event, it is necessary to + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** configure the RTC to generate the RTC WakeUp event using the HAL_RTCEx_SetWakeUpTimer + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** @endverbatim + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @{ + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Configures the voltage threshold detected by the Power Voltage Detector(PVD). + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @param sConfigPVD pointer to an PWR_PVDTypeDef structure that contains the configuration + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * information for the PVD. + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note Refer to the electrical characteristics of your device datasheet for + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * more details about the voltage threshold corresponding to each + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * detection level. + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD) + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 120 .loc 1 260 1 is_stmt 1 view -0 + 121 .cfi_startproc + 122 @ args = 0, pretend = 0, frame = 0 + 123 @ frame_needed = 0, uses_anonymous_args = 0 + 124 @ link register save eliminated. + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Check the parameters */ + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** assert_param(IS_PWR_PVD_LEVEL(sConfigPVD->PVDLevel)); + 125 .loc 1 262 3 view .LVU11 + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** assert_param(IS_PWR_PVD_MODE(sConfigPVD->Mode)); + 126 .loc 1 263 3 view .LVU12 + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Set PLS[7:5] bits according to PVDLevel value */ + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** MODIFY_REG(PWR->CR1, PWR_CR1_PLS, sConfigPVD->PVDLevel); + 127 .loc 1 266 3 view .LVU13 + 128 0000 1E4A ldr r2, .L15 + 129 0002 1368 ldr r3, [r2] + 130 0004 23F0E003 bic r3, r3, #224 + 131 0008 0168 ldr r1, [r0] + 132 000a 0B43 orrs r3, r3, r1 + 133 000c 1360 str r3, [r2] + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Clear any previous config. Keep it clear if no event or IT mode is selected */ + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_PWR_PVD_EXTI_DISABLE_EVENT(); + 134 .loc 1 269 3 view .LVU14 + 135 000e 1C4B ldr r3, .L15+4 + 136 0010 5A68 ldr r2, [r3, #4] + 137 0012 22F48032 bic r2, r2, #65536 + ARM GAS /tmp/ccE9MXkV.s page 8 + + + 138 0016 5A60 str r2, [r3, #4] + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_PWR_PVD_EXTI_DISABLE_IT(); + 139 .loc 1 270 3 view .LVU15 + 140 0018 1A68 ldr r2, [r3] + 141 001a 22F48032 bic r2, r2, #65536 + 142 001e 1A60 str r2, [r3] + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE(); + 143 .loc 1 271 3 view .LVU16 + 144 0020 9A68 ldr r2, [r3, #8] + 145 0022 22F48032 bic r2, r2, #65536 + 146 0026 9A60 str r2, [r3, #8] + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE(); + 147 .loc 1 272 3 view .LVU17 + 148 0028 DA68 ldr r2, [r3, #12] + 149 002a 22F48032 bic r2, r2, #65536 + 150 002e DA60 str r2, [r3, #12] + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Configure interrupt mode */ + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** if((sConfigPVD->Mode & PVD_MODE_IT) == PVD_MODE_IT) + 151 .loc 1 275 3 view .LVU18 + 152 .loc 1 275 17 is_stmt 0 view .LVU19 + 153 0030 4368 ldr r3, [r0, #4] + 154 .loc 1 275 5 view .LVU20 + 155 0032 13F4803F tst r3, #65536 + 156 0036 04D0 beq .L11 + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_PWR_PVD_EXTI_ENABLE_IT(); + 157 .loc 1 277 5 is_stmt 1 view .LVU21 + 158 0038 114A ldr r2, .L15+4 + 159 003a 1368 ldr r3, [r2] + 160 003c 43F48033 orr r3, r3, #65536 + 161 0040 1360 str r3, [r2] + 162 .L11: + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Configure event mode */ + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** if((sConfigPVD->Mode & PVD_MODE_EVT) == PVD_MODE_EVT) + 163 .loc 1 281 3 view .LVU22 + 164 .loc 1 281 17 is_stmt 0 view .LVU23 + 165 0042 4368 ldr r3, [r0, #4] + 166 .loc 1 281 5 view .LVU24 + 167 0044 13F4003F tst r3, #131072 + 168 0048 04D0 beq .L12 + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_PWR_PVD_EXTI_ENABLE_EVENT(); + 169 .loc 1 283 5 is_stmt 1 view .LVU25 + 170 004a 0D4A ldr r2, .L15+4 + 171 004c 5368 ldr r3, [r2, #4] + 172 004e 43F48033 orr r3, r3, #65536 + 173 0052 5360 str r3, [r2, #4] + 174 .L12: + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Configure the edge */ + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** if((sConfigPVD->Mode & PVD_RISING_EDGE) == PVD_RISING_EDGE) + 175 .loc 1 287 3 view .LVU26 + 176 .loc 1 287 17 is_stmt 0 view .LVU27 + ARM GAS /tmp/ccE9MXkV.s page 9 + + + 177 0054 4368 ldr r3, [r0, #4] + 178 .loc 1 287 5 view .LVU28 + 179 0056 13F0010F tst r3, #1 + 180 005a 04D0 beq .L13 + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE(); + 181 .loc 1 289 5 is_stmt 1 view .LVU29 + 182 005c 084A ldr r2, .L15+4 + 183 005e 9368 ldr r3, [r2, #8] + 184 0060 43F48033 orr r3, r3, #65536 + 185 0064 9360 str r3, [r2, #8] + 186 .L13: + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** if((sConfigPVD->Mode & PVD_FALLING_EDGE) == PVD_FALLING_EDGE) + 187 .loc 1 292 3 view .LVU30 + 188 .loc 1 292 17 is_stmt 0 view .LVU31 + 189 0066 4368 ldr r3, [r0, #4] + 190 .loc 1 292 5 view .LVU32 + 191 0068 13F0020F tst r3, #2 + 192 006c 04D0 beq .L10 + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE(); + 193 .loc 1 294 5 is_stmt 1 view .LVU33 + 194 006e 044A ldr r2, .L15+4 + 195 0070 D368 ldr r3, [r2, #12] + 196 0072 43F48033 orr r3, r3, #65536 + 197 0076 D360 str r3, [r2, #12] + 198 .L10: + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 199 .loc 1 296 1 is_stmt 0 view .LVU34 + 200 0078 7047 bx lr + 201 .L16: + 202 007a 00BF .align 2 + 203 .L15: + 204 007c 00700040 .word 1073770496 + 205 0080 003C0140 .word 1073822720 + 206 .cfi_endproc + 207 .LFE144: + 209 .section .text.HAL_PWR_EnablePVD,"ax",%progbits + 210 .align 1 + 211 .global HAL_PWR_EnablePVD + 212 .syntax unified + 213 .thumb + 214 .thumb_func + 215 .fpu fpv5-d16 + 217 HAL_PWR_EnablePVD: + 218 .LFB145: + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Enables the Power Voltage Detector(PVD). + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_EnablePVD(void) + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 219 .loc 1 303 1 is_stmt 1 view -0 + ARM GAS /tmp/ccE9MXkV.s page 10 + + + 220 .cfi_startproc + 221 @ args = 0, pretend = 0, frame = 0 + 222 @ frame_needed = 0, uses_anonymous_args = 0 + 223 @ link register save eliminated. + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Enable the power voltage detector */ + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** SET_BIT(PWR->CR1, PWR_CR1_PVDE); + 224 .loc 1 305 2 view .LVU36 + 225 0000 024A ldr r2, .L18 + 226 0002 1368 ldr r3, [r2] + 227 0004 43F01003 orr r3, r3, #16 + 228 0008 1360 str r3, [r2] + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 229 .loc 1 306 1 is_stmt 0 view .LVU37 + 230 000a 7047 bx lr + 231 .L19: + 232 .align 2 + 233 .L18: + 234 000c 00700040 .word 1073770496 + 235 .cfi_endproc + 236 .LFE145: + 238 .section .text.HAL_PWR_DisablePVD,"ax",%progbits + 239 .align 1 + 240 .global HAL_PWR_DisablePVD + 241 .syntax unified + 242 .thumb + 243 .thumb_func + 244 .fpu fpv5-d16 + 246 HAL_PWR_DisablePVD: + 247 .LFB146: + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Disables the Power Voltage Detector(PVD). + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_DisablePVD(void) + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 248 .loc 1 313 1 is_stmt 1 view -0 + 249 .cfi_startproc + 250 @ args = 0, pretend = 0, frame = 0 + 251 @ frame_needed = 0, uses_anonymous_args = 0 + 252 @ link register save eliminated. + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Disable the power voltage detector */ + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** CLEAR_BIT(PWR->CR1, PWR_CR1_PVDE); + 253 .loc 1 315 2 view .LVU39 + 254 0000 024A ldr r2, .L21 + 255 0002 1368 ldr r3, [r2] + 256 0004 23F01003 bic r3, r3, #16 + 257 0008 1360 str r3, [r2] + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 258 .loc 1 316 1 is_stmt 0 view .LVU40 + 259 000a 7047 bx lr + 260 .L22: + 261 .align 2 + 262 .L21: + 263 000c 00700040 .word 1073770496 + 264 .cfi_endproc + 265 .LFE146: + ARM GAS /tmp/ccE9MXkV.s page 11 + + + 267 .section .text.HAL_PWR_EnableWakeUpPin,"ax",%progbits + 268 .align 1 + 269 .global HAL_PWR_EnableWakeUpPin + 270 .syntax unified + 271 .thumb + 272 .thumb_func + 273 .fpu fpv5-d16 + 275 HAL_PWR_EnableWakeUpPin: + 276 .LVL1: + 277 .LFB147: + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Enable the WakeUp PINx functionality. + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @param WakeUpPinPolarity Specifies which Wake-Up pin to enable. + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * This parameter can be one of the following legacy values, which sets the default polari + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * detection on high level (rising edge): + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN1, PWR_WAKEUP_PIN2, PWR_WAKEUP_PIN3, PWR_WAKEUP_PIN4, PWR_WAKEUP_P + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * or one of the following value where the user can explicitly states the enabled pin and + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * the chosen polarity + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN1_HIGH or PWR_WAKEUP_PIN1_LOW + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN2_HIGH or PWR_WAKEUP_PIN2_LOW + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN3_HIGH or PWR_WAKEUP_PIN3_LOW + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN4_HIGH or PWR_WAKEUP_PIN4_LOW + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN5_HIGH or PWR_WAKEUP_PIN5_LOW + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN6_HIGH or PWR_WAKEUP_PIN6_LOW + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note PWR_WAKEUP_PINx and PWR_WAKEUP_PINx_HIGH are equivalent. + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_EnableWakeUpPin(uint32_t WakeUpPinPolarity) + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 278 .loc 1 336 1 is_stmt 1 view -0 + 279 .cfi_startproc + 280 @ args = 0, pretend = 0, frame = 0 + 281 @ frame_needed = 0, uses_anonymous_args = 0 + 282 @ link register save eliminated. + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinPolarity)); + 283 .loc 1 337 3 view .LVU42 + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Enable wake-up pin */ + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** SET_BIT(PWR->CSR2, (PWR_EWUP_MASK & WakeUpPinPolarity)); + 284 .loc 1 340 3 view .LVU43 + 285 0000 064A ldr r2, .L24 + 286 0002 D168 ldr r1, [r2, #12] + 287 0004 00F47C5C and ip, r0, #16128 + 288 0008 41EA0C01 orr r1, r1, ip + 289 000c D160 str r1, [r2, #12] + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Specifies the Wake-Up pin polarity for the event detection + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** (rising or falling edge) */ + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** MODIFY_REG(PWR->CR2, (PWR_EWUP_MASK & WakeUpPinPolarity), (WakeUpPinPolarity >> 0x06)); + 290 .loc 1 344 3 view .LVU44 + 291 000e 9368 ldr r3, [r2, #8] + 292 0010 23EA0C03 bic r3, r3, ip + 293 0014 43EA9010 orr r0, r3, r0, lsr #6 + 294 .LVL2: + 295 .loc 1 344 3 is_stmt 0 view .LVU45 + 296 0018 9060 str r0, [r2, #8] + ARM GAS /tmp/ccE9MXkV.s page 12 + + + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 297 .loc 1 345 1 view .LVU46 + 298 001a 7047 bx lr + 299 .L25: + 300 .align 2 + 301 .L24: + 302 001c 00700040 .word 1073770496 + 303 .cfi_endproc + 304 .LFE147: + 306 .section .text.HAL_PWR_DisableWakeUpPin,"ax",%progbits + 307 .align 1 + 308 .global HAL_PWR_DisableWakeUpPin + 309 .syntax unified + 310 .thumb + 311 .thumb_func + 312 .fpu fpv5-d16 + 314 HAL_PWR_DisableWakeUpPin: + 315 .LVL3: + 316 .LFB148: + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Disables the WakeUp PINx functionality. + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @param WakeUpPinx Specifies the Power Wake-Up pin to disable. + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * This parameter can be one of the following values: + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN1 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN2 + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN3 + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN4 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN5 + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_WAKEUP_PIN6 + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_DisableWakeUpPin(uint32_t WakeUpPinx) + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 317 .loc 1 360 1 is_stmt 1 view -0 + 318 .cfi_startproc + 319 @ args = 0, pretend = 0, frame = 0 + 320 @ frame_needed = 0, uses_anonymous_args = 0 + 321 @ link register save eliminated. + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** assert_param(IS_PWR_WAKEUP_PIN(WakeUpPinx)); + 322 .loc 1 361 3 view .LVU48 + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** CLEAR_BIT(PWR->CSR2, WakeUpPinx); + 323 .loc 1 363 3 view .LVU49 + 324 0000 024A ldr r2, .L27 + 325 0002 D368 ldr r3, [r2, #12] + 326 0004 23EA0003 bic r3, r3, r0 + 327 0008 D360 str r3, [r2, #12] + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 328 .loc 1 364 1 is_stmt 0 view .LVU50 + 329 000a 7047 bx lr + 330 .L28: + 331 .align 2 + 332 .L27: + 333 000c 00700040 .word 1073770496 + 334 .cfi_endproc + 335 .LFE148: + ARM GAS /tmp/ccE9MXkV.s page 13 + + + 337 .section .text.HAL_PWR_EnterSLEEPMode,"ax",%progbits + 338 .align 1 + 339 .global HAL_PWR_EnterSLEEPMode + 340 .syntax unified + 341 .thumb + 342 .thumb_func + 343 .fpu fpv5-d16 + 345 HAL_PWR_EnterSLEEPMode: + 346 .LVL4: + 347 .LFB149: + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Enters Sleep mode. + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note In Sleep mode, all I/O pins keep the same state as in Run mode. + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note In Sleep mode, the systick is stopped to avoid exit from this mode with + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * systick interrupt when used as time base for Timeout + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @param Regulator Specifies the regulator state in SLEEP mode. + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * This parameter can be one of the following values: + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_MAINREGULATOR_ON: SLEEP mode with regulator ON + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_LOWPOWERREGULATOR_ON: SLEEP mode with low power regulator ON + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note This parameter is not used for the STM32F7 family and is kept as parameter + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * just to maintain compatibility with the lower power families. + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @param SLEEPEntry Specifies if SLEEP mode in entered with WFI or WFE instruction. + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * This parameter can be one of the following values: + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_SLEEPENTRY_WFI: enter SLEEP mode with WFI instruction + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_SLEEPENTRY_WFE: enter SLEEP mode with WFE instruction + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_EnterSLEEPMode(uint32_t Regulator, uint8_t SLEEPEntry) + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 348 .loc 1 387 1 is_stmt 1 view -0 + 349 .cfi_startproc + 350 @ args = 0, pretend = 0, frame = 0 + 351 @ frame_needed = 0, uses_anonymous_args = 0 + 352 @ link register save eliminated. + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Check the parameters */ + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** assert_param(IS_PWR_REGULATOR(Regulator)); + 353 .loc 1 389 3 view .LVU52 + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** assert_param(IS_PWR_SLEEP_ENTRY(SLEEPEntry)); + 354 .loc 1 390 3 view .LVU53 + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Prevent unused argument(s) compilation warning */ + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** UNUSED(Regulator); + 355 .loc 1 393 3 view .LVU54 + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Clear SLEEPDEEP bit of Cortex System Control Register */ + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); + 356 .loc 1 396 3 view .LVU55 + 357 0000 084A ldr r2, .L33 + 358 0002 1369 ldr r3, [r2, #16] + 359 0004 23F00403 bic r3, r3, #4 + 360 0008 1361 str r3, [r2, #16] + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Ensure that all instructions done before entering SLEEP mode */ + ARM GAS /tmp/ccE9MXkV.s page 14 + + + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __DSB(); + 361 .loc 1 399 3 view .LVU56 + 362 .LBB10: + 363 .LBI10: + 364 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h" + 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** + 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h + 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file + 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.0.4 + 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018 + 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ + 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* + 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 + 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may + 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. + 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at + 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 + 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software + 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT + 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and + 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. + 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 24:Drivers/CMSIS/Include/cmsis_gcc.h **** + 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H + 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H + 27:Drivers/CMSIS/Include/cmsis_gcc.h **** + 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ + 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" + 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" + 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" + 33:Drivers/CMSIS/Include/cmsis_gcc.h **** + 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ + 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin + 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) + 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 38:Drivers/CMSIS/Include/cmsis_gcc.h **** + 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ + 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM + 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm + 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE + 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline + 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE + 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline + 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE + 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline + 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN + ARM GAS /tmp/ccE9MXkV.s page 15 + + + 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) + 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED + 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) + 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK + 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) + 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED + 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) + 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT + 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION + 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) + 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ + 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE + 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- + 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ + 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add + 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE + 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- + 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ + 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add + 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + ARM GAS /tmp/ccE9MXkV.s page 16 + + + 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED + 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) + 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT + 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict + 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 116:Drivers/CMSIS/Include/cmsis_gcc.h **** + 117:Drivers/CMSIS/Include/cmsis_gcc.h **** + 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ + 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface + 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 123:Drivers/CMSIS/Include/cmsis_gcc.h **** + 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts + 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void) + 130:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); + 132:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 133:Drivers/CMSIS/Include/cmsis_gcc.h **** + 134:Drivers/CMSIS/Include/cmsis_gcc.h **** + 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts + 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. + 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) + 141:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); + 143:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 144:Drivers/CMSIS/Include/cmsis_gcc.h **** + 145:Drivers/CMSIS/Include/cmsis_gcc.h **** + 146:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register + 148:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register. + 149:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value + 150:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 151:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) + 152:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 153:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 154:Drivers/CMSIS/Include/cmsis_gcc.h **** + 155:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) ); + 156:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 157:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 158:Drivers/CMSIS/Include/cmsis_gcc.h **** + 159:Drivers/CMSIS/Include/cmsis_gcc.h **** + 160:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 161:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 162:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure) + 163:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode. + 164:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value + 165:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 166:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) + ARM GAS /tmp/ccE9MXkV.s page 17 + + + 167:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 168:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 169:Drivers/CMSIS/Include/cmsis_gcc.h **** + 170:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + 171:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 172:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 174:Drivers/CMSIS/Include/cmsis_gcc.h **** + 175:Drivers/CMSIS/Include/cmsis_gcc.h **** + 176:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 177:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register + 178:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register. + 179:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 180:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 181:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) + 182:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 183:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + 184:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 185:Drivers/CMSIS/Include/cmsis_gcc.h **** + 186:Drivers/CMSIS/Include/cmsis_gcc.h **** + 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 188:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure) + 190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state. + 191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 192:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) + 194:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + 196:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 197:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 198:Drivers/CMSIS/Include/cmsis_gcc.h **** + 199:Drivers/CMSIS/Include/cmsis_gcc.h **** + 200:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 201:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register + 202:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register. + 203:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value + 204:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 205:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void) + 206:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 207:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 208:Drivers/CMSIS/Include/cmsis_gcc.h **** + 209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + 210:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 211:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 212:Drivers/CMSIS/Include/cmsis_gcc.h **** + 213:Drivers/CMSIS/Include/cmsis_gcc.h **** + 214:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 215:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register + 216:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register. + 217:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value + 218:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 219:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void) + 220:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 221:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 222:Drivers/CMSIS/Include/cmsis_gcc.h **** + 223:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + ARM GAS /tmp/ccE9MXkV.s page 18 + + + 224:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 225:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 226:Drivers/CMSIS/Include/cmsis_gcc.h **** + 227:Drivers/CMSIS/Include/cmsis_gcc.h **** + 228:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register + 230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register. + 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value + 232:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(void) + 234:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 235:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 236:Drivers/CMSIS/Include/cmsis_gcc.h **** + 237:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + 238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 239:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 240:Drivers/CMSIS/Include/cmsis_gcc.h **** + 241:Drivers/CMSIS/Include/cmsis_gcc.h **** + 242:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer + 244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP). + 245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 246:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void) + 248:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 250:Drivers/CMSIS/Include/cmsis_gcc.h **** + 251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) ); + 252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 253:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 254:Drivers/CMSIS/Include/cmsis_gcc.h **** + 255:Drivers/CMSIS/Include/cmsis_gcc.h **** + 256:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 257:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure) + 259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s + 260:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 261:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 262:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) + 263:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 264:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 265:Drivers/CMSIS/Include/cmsis_gcc.h **** + 266:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + 267:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 268:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 269:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 270:Drivers/CMSIS/Include/cmsis_gcc.h **** + 271:Drivers/CMSIS/Include/cmsis_gcc.h **** + 272:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 273:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer + 274:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP). + 275:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 276:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 277:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) + 278:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 279:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); + 280:Drivers/CMSIS/Include/cmsis_gcc.h **** } + ARM GAS /tmp/ccE9MXkV.s page 19 + + + 281:Drivers/CMSIS/Include/cmsis_gcc.h **** + 282:Drivers/CMSIS/Include/cmsis_gcc.h **** + 283:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 284:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 285:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 286:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta + 287:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 288:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 289:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) + 290:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 291:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); + 292:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 293:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 294:Drivers/CMSIS/Include/cmsis_gcc.h **** + 295:Drivers/CMSIS/Include/cmsis_gcc.h **** + 296:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 297:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer + 298:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP). + 299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 300:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void) + 302:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 304:Drivers/CMSIS/Include/cmsis_gcc.h **** + 305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) ); + 306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 307:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 308:Drivers/CMSIS/Include/cmsis_gcc.h **** + 309:Drivers/CMSIS/Include/cmsis_gcc.h **** + 310:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 311:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 312:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure) + 313:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat + 314:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 315:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 316:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) + 317:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 319:Drivers/CMSIS/Include/cmsis_gcc.h **** + 320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + 321:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 322:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 323:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 324:Drivers/CMSIS/Include/cmsis_gcc.h **** + 325:Drivers/CMSIS/Include/cmsis_gcc.h **** + 326:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 327:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer + 328:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP). + 329:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 330:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 331:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) + 332:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); + 334:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 335:Drivers/CMSIS/Include/cmsis_gcc.h **** + 336:Drivers/CMSIS/Include/cmsis_gcc.h **** + 337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + ARM GAS /tmp/ccE9MXkV.s page 20 + + + 338:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 339:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure) + 340:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + 341:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 342:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 343:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) + 344:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 345:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); + 346:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 347:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 348:Drivers/CMSIS/Include/cmsis_gcc.h **** + 349:Drivers/CMSIS/Include/cmsis_gcc.h **** + 350:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 351:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 352:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Stack Pointer (non-secure) + 353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + 354:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value + 355:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) + 357:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 359:Drivers/CMSIS/Include/cmsis_gcc.h **** + 360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + 361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 362:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 363:Drivers/CMSIS/Include/cmsis_gcc.h **** + 364:Drivers/CMSIS/Include/cmsis_gcc.h **** + 365:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure) + 367:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + 368:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set + 369:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 370:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) + 371:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); + 373:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 374:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 375:Drivers/CMSIS/Include/cmsis_gcc.h **** + 376:Drivers/CMSIS/Include/cmsis_gcc.h **** + 377:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 378:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask + 379:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register. + 380:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 381:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 382:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) + 383:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 384:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 385:Drivers/CMSIS/Include/cmsis_gcc.h **** + 386:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 387:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 388:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 389:Drivers/CMSIS/Include/cmsis_gcc.h **** + 390:Drivers/CMSIS/Include/cmsis_gcc.h **** + 391:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 392:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 393:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure) + 394:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg + ARM GAS /tmp/ccE9MXkV.s page 21 + + + 395:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 396:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 397:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) + 398:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 399:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 400:Drivers/CMSIS/Include/cmsis_gcc.h **** + 401:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + 402:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 403:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 404:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 405:Drivers/CMSIS/Include/cmsis_gcc.h **** + 406:Drivers/CMSIS/Include/cmsis_gcc.h **** + 407:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 408:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask + 409:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register. + 410:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 411:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 412:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) + 413:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 415:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 416:Drivers/CMSIS/Include/cmsis_gcc.h **** + 417:Drivers/CMSIS/Include/cmsis_gcc.h **** + 418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 419:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure) + 421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + 422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 423:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 424:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) + 425:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 426:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); + 427:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 428:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 429:Drivers/CMSIS/Include/cmsis_gcc.h **** + 430:Drivers/CMSIS/Include/cmsis_gcc.h **** + 431:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 433:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 434:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 435:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ + 436:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + 437:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 438:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 439:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void) + 440:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 441:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory"); + 442:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 443:Drivers/CMSIS/Include/cmsis_gcc.h **** + 444:Drivers/CMSIS/Include/cmsis_gcc.h **** + 445:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 446:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ + 447:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR. + 448:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 449:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 450:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void) + 451:Drivers/CMSIS/Include/cmsis_gcc.h **** { + ARM GAS /tmp/ccE9MXkV.s page 22 + + + 452:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory"); + 453:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 454:Drivers/CMSIS/Include/cmsis_gcc.h **** + 455:Drivers/CMSIS/Include/cmsis_gcc.h **** + 456:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 457:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority + 458:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register. + 459:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 460:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 461:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) + 462:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 463:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 464:Drivers/CMSIS/Include/cmsis_gcc.h **** + 465:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + 466:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 467:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 468:Drivers/CMSIS/Include/cmsis_gcc.h **** + 469:Drivers/CMSIS/Include/cmsis_gcc.h **** + 470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 471:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure) + 473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state. + 474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 475:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) + 477:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 479:Drivers/CMSIS/Include/cmsis_gcc.h **** + 480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + 481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 482:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 483:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 484:Drivers/CMSIS/Include/cmsis_gcc.h **** + 485:Drivers/CMSIS/Include/cmsis_gcc.h **** + 486:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority + 488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register. + 489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 490:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) + 492:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); + 494:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 495:Drivers/CMSIS/Include/cmsis_gcc.h **** + 496:Drivers/CMSIS/Include/cmsis_gcc.h **** + 497:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 498:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 499:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure) + 500:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state. + 501:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 502:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 503:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) + 504:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 505:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); + 506:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 507:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 508:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccE9MXkV.s page 23 + + + 509:Drivers/CMSIS/Include/cmsis_gcc.h **** + 510:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 511:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition + 512:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable + 513:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level. + 514:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 515:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 516:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) + 517:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 518:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); + 519:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 520:Drivers/CMSIS/Include/cmsis_gcc.h **** + 521:Drivers/CMSIS/Include/cmsis_gcc.h **** + 522:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 523:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask + 524:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register. + 525:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 526:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) + 528:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 530:Drivers/CMSIS/Include/cmsis_gcc.h **** + 531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + 532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 533:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 534:Drivers/CMSIS/Include/cmsis_gcc.h **** + 535:Drivers/CMSIS/Include/cmsis_gcc.h **** + 536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 537:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 538:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure) + 539:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state. + 540:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 541:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 542:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) + 543:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 544:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 545:Drivers/CMSIS/Include/cmsis_gcc.h **** + 546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + 547:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 548:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 549:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 550:Drivers/CMSIS/Include/cmsis_gcc.h **** + 551:Drivers/CMSIS/Include/cmsis_gcc.h **** + 552:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 553:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask + 554:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register. + 555:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 556:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 557:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) + 558:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 559:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); + 560:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 561:Drivers/CMSIS/Include/cmsis_gcc.h **** + 562:Drivers/CMSIS/Include/cmsis_gcc.h **** + 563:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 564:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 565:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure) + ARM GAS /tmp/ccE9MXkV.s page 24 + + + 566:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state. + 567:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 568:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 569:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) + 570:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 571:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); + 572:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 573:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 574:Drivers/CMSIS/Include/cmsis_gcc.h **** + 575:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 576:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 577:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + 578:Drivers/CMSIS/Include/cmsis_gcc.h **** + 579:Drivers/CMSIS/Include/cmsis_gcc.h **** + 580:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 581:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + 582:Drivers/CMSIS/Include/cmsis_gcc.h **** + 583:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit + 585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 588:Drivers/CMSIS/Include/cmsis_gcc.h **** + 589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + 590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 591:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) + 593:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 595:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 596:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 597:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 598:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 599:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 600:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + 601:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 602:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 603:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 604:Drivers/CMSIS/Include/cmsis_gcc.h **** + 605:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + 606:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 607:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure) + 608:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 609:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 610:Drivers/CMSIS/Include/cmsis_gcc.h **** + 611:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in + 612:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 613:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 614:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) + 615:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 616:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 617:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 618:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 619:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 620:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 621:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + 622:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + ARM GAS /tmp/ccE9MXkV.s page 25 + + + 623:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 624:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 625:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 626:Drivers/CMSIS/Include/cmsis_gcc.h **** + 627:Drivers/CMSIS/Include/cmsis_gcc.h **** + 628:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 629:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit + 630:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 631:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 632:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 633:Drivers/CMSIS/Include/cmsis_gcc.h **** + 634:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + 635:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 636:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 637:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) + 638:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 639:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 640:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); + 645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 646:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 647:Drivers/CMSIS/Include/cmsis_gcc.h **** + 648:Drivers/CMSIS/Include/cmsis_gcc.h **** + 649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 650:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 652:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 653:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 654:Drivers/CMSIS/Include/cmsis_gcc.h **** + 655:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s + 656:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 657:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 658:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) + 659:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 661:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 662:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 663:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 664:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); + 665:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 666:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 667:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 668:Drivers/CMSIS/Include/cmsis_gcc.h **** + 669:Drivers/CMSIS/Include/cmsis_gcc.h **** + 670:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 671:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit + 672:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 673:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 674:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 675:Drivers/CMSIS/Include/cmsis_gcc.h **** + 676:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + 677:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 678:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 679:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) + ARM GAS /tmp/ccE9MXkV.s page 26 + + + 680:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 681:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 682:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 683:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 684:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 685:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 686:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 687:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + 688:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 689:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 690:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 691:Drivers/CMSIS/Include/cmsis_gcc.h **** + 692:Drivers/CMSIS/Include/cmsis_gcc.h **** + 693:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 694:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 695:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure) + 696:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 697:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 698:Drivers/CMSIS/Include/cmsis_gcc.h **** + 699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec + 700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 701:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) + 703:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 709:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + 710:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 711:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 712:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 713:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 714:Drivers/CMSIS/Include/cmsis_gcc.h **** + 715:Drivers/CMSIS/Include/cmsis_gcc.h **** + 716:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit + 718:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 719:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 720:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 721:Drivers/CMSIS/Include/cmsis_gcc.h **** + 722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + 723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + 724:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) + 726:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 727:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 728:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 729:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 730:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 731:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 732:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); + 733:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 734:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 735:Drivers/CMSIS/Include/cmsis_gcc.h **** + 736:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccE9MXkV.s page 27 + + + 737:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 738:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 739:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure) + 740:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 741:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 742:Drivers/CMSIS/Include/cmsis_gcc.h **** + 743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu + 744:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set + 745:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) + 747:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 748:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 749:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 750:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 751:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 752:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); + 753:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 754:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 756:Drivers/CMSIS/Include/cmsis_gcc.h **** + 757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + 759:Drivers/CMSIS/Include/cmsis_gcc.h **** + 760:Drivers/CMSIS/Include/cmsis_gcc.h **** + 761:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR + 763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register. + 764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value + 765:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 766:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void) + 767:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 768:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 769:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 770:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr) + 771:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 772:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 773:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr(); + 775:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 776:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 777:Drivers/CMSIS/Include/cmsis_gcc.h **** + 778:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + 779:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 781:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 782:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U); + 783:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 784:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 785:Drivers/CMSIS/Include/cmsis_gcc.h **** + 786:Drivers/CMSIS/Include/cmsis_gcc.h **** + 787:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 788:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR + 789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register. + 790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set + 791:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) + 793:Drivers/CMSIS/Include/cmsis_gcc.h **** { + ARM GAS /tmp/ccE9MXkV.s page 28 + + + 794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 795:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 796:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr) + 797:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 798:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 799:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 800:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr); + 801:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 802:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); + 803:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 804:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 805:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr; + 806:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 807:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 808:Drivers/CMSIS/Include/cmsis_gcc.h **** + 809:Drivers/CMSIS/Include/cmsis_gcc.h **** + 810:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */ + 811:Drivers/CMSIS/Include/cmsis_gcc.h **** + 812:Drivers/CMSIS/Include/cmsis_gcc.h **** + 813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ + 814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + 815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions + 816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 817:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 818:Drivers/CMSIS/Include/cmsis_gcc.h **** + 819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. + 820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" + 821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ + 822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) + 823:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) + 824:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) + 825:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) + 826:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 827:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) + 828:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) + 829:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) + 830:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 831:Drivers/CMSIS/Include/cmsis_gcc.h **** + 832:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 833:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation + 834:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. + 835:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 836:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") + 837:Drivers/CMSIS/Include/cmsis_gcc.h **** + 838:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 839:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt + 840:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o + 841:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 842:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi") + 843:Drivers/CMSIS/Include/cmsis_gcc.h **** + 844:Drivers/CMSIS/Include/cmsis_gcc.h **** + 845:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 846:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event + 847:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter + 848:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. + 849:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 850:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe") + ARM GAS /tmp/ccE9MXkV.s page 29 + + + 851:Drivers/CMSIS/Include/cmsis_gcc.h **** + 852:Drivers/CMSIS/Include/cmsis_gcc.h **** + 853:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 854:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event + 855:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + 856:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 857:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") + 858:Drivers/CMSIS/Include/cmsis_gcc.h **** + 859:Drivers/CMSIS/Include/cmsis_gcc.h **** + 860:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 861:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier + 862:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, + 863:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, + 864:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. + 865:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) + 867:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); + 869:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 870:Drivers/CMSIS/Include/cmsis_gcc.h **** + 871:Drivers/CMSIS/Include/cmsis_gcc.h **** + 872:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 873:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Synchronization Barrier + 874:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Acts as a special kind of Data Memory Barrier. + 875:Drivers/CMSIS/Include/cmsis_gcc.h **** It completes when all explicit memory accesses before this instruction complete. + 876:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DSB(void) + 365 .loc 2 877 27 view .LVU57 + 366 .LBB11: + 878:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory"); + 367 .loc 2 879 3 view .LVU58 + 368 .syntax unified + 369 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 370 000a BFF34F8F dsb 0xF + 371 @ 0 "" 2 + 372 .thumb + 373 .syntax unified + 374 .LBE11: + 375 .LBE10: + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __ISB(); + 376 .loc 1 400 3 view .LVU59 + 377 .LBB12: + 378 .LBI12: + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 379 .loc 2 866 27 view .LVU60 + 380 .LBB13: + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 381 .loc 2 868 3 view .LVU61 + 382 .syntax unified + 383 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 384 000e BFF36F8F isb 0xF + 385 @ 0 "" 2 + 386 .thumb + 387 .syntax unified + 388 .LBE13: + 389 .LBE12: + ARM GAS /tmp/ccE9MXkV.s page 30 + + + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Select SLEEP mode entry -------------------------------------------------*/ + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** if(SLEEPEntry == PWR_SLEEPENTRY_WFI) + 390 .loc 1 403 3 view .LVU62 + 391 .loc 1 403 5 is_stmt 0 view .LVU63 + 392 0012 0129 cmp r1, #1 + 393 0014 03D0 beq .L32 + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Request Wait For Interrupt */ + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __WFI(); + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** else + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Request Wait For Event */ + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __SEV(); + 394 .loc 1 411 5 is_stmt 1 view .LVU64 + 395 .syntax unified + 396 @ 411 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c" 1 + 397 0016 40BF sev + 398 @ 0 "" 2 + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __WFE(); + 399 .loc 1 412 5 view .LVU65 + 400 @ 412 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c" 1 + 401 0018 20BF wfe + 402 @ 0 "" 2 + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __WFE(); + 403 .loc 1 413 5 view .LVU66 + 404 @ 413 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c" 1 + 405 001a 20BF wfe + 406 @ 0 "" 2 + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 407 .loc 1 415 1 is_stmt 0 view .LVU67 + 408 .thumb + 409 .syntax unified + 410 001c 7047 bx lr + 411 .L32: + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 412 .loc 1 406 5 is_stmt 1 view .LVU68 + 413 .syntax unified + 414 @ 406 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c" 1 + 415 001e 30BF wfi + 416 @ 0 "" 2 + 417 .thumb + 418 .syntax unified + 419 0020 7047 bx lr + 420 .L34: + 421 0022 00BF .align 2 + 422 .L33: + 423 0024 00ED00E0 .word -536810240 + 424 .cfi_endproc + 425 .LFE149: + 427 .section .text.HAL_PWR_EnterSTOPMode,"ax",%progbits + 428 .align 1 + 429 .global HAL_PWR_EnterSTOPMode + 430 .syntax unified + 431 .thumb + ARM GAS /tmp/ccE9MXkV.s page 31 + + + 432 .thumb_func + 433 .fpu fpv5-d16 + 435 HAL_PWR_EnterSTOPMode: + 436 .LVL5: + 437 .LFB150: + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Enters Stop mode. + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note In Stop mode, all I/O pins keep the same state as in Run mode. + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note When exiting Stop mode by issuing an interrupt or a wakeup event, + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * the HSI RC oscillator is selected as system clock. + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note When the voltage regulator operates in low power mode, an additional + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * startup delay is incurred when waking up from Stop mode. + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * By keeping the internal regulator ON during Stop mode, the consumption + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * is higher although the startup time is reduced. + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @param Regulator Specifies the regulator state in Stop mode. + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * This parameter can be one of the following values: + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_MAINREGULATOR_ON: Stop mode with regulator ON + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_LOWPOWERREGULATOR_ON: Stop mode with low power regulator ON + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @param STOPEntry Specifies if Stop mode in entered with WFI or WFE instruction. + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * This parameter can be one of the following values: + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_STOPENTRY_WFI: Enter Stop mode with WFI instruction + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @arg PWR_STOPENTRY_WFE: Enter Stop mode with WFE instruction + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_EnterSTOPMode(uint32_t Regulator, uint8_t STOPEntry) + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 438 .loc 1 437 1 view -0 + 439 .cfi_startproc + 440 @ args = 0, pretend = 0, frame = 0 + 441 @ frame_needed = 0, uses_anonymous_args = 0 + 442 @ link register save eliminated. + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** uint32_t tmpreg = 0; + 443 .loc 1 438 3 view .LVU70 + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Check the parameters */ + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** assert_param(IS_PWR_REGULATOR(Regulator)); + 444 .loc 1 441 3 view .LVU71 + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** assert_param(IS_PWR_STOP_ENTRY(STOPEntry)); + 445 .loc 1 442 3 view .LVU72 + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Select the regulator state in Stop mode ---------------------------------*/ + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** tmpreg = PWR->CR1; + 446 .loc 1 445 3 view .LVU73 + 447 .loc 1 445 10 is_stmt 0 view .LVU74 + 448 0000 0D4A ldr r2, .L39 + 449 0002 1368 ldr r3, [r2] + 450 .LVL6: + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Clear PDDS and LPDS bits */ + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** tmpreg &= (uint32_t)~(PWR_CR1_PDDS | PWR_CR1_LPDS); + 451 .loc 1 447 3 is_stmt 1 view .LVU75 + 452 .loc 1 447 10 is_stmt 0 view .LVU76 + 453 0004 23F00303 bic r3, r3, #3 + 454 .LVL7: + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Set LPDS, MRLVDS and LPLVDS bits according to Regulator value */ + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** tmpreg |= Regulator; + ARM GAS /tmp/ccE9MXkV.s page 32 + + + 455 .loc 1 450 3 is_stmt 1 view .LVU77 + 456 .loc 1 450 10 is_stmt 0 view .LVU78 + 457 0008 0343 orrs r3, r3, r0 + 458 .LVL8: + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Store the new value */ + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** PWR->CR1 = tmpreg; + 459 .loc 1 453 3 is_stmt 1 view .LVU79 + 460 .loc 1 453 12 is_stmt 0 view .LVU80 + 461 000a 1360 str r3, [r2] + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Set SLEEPDEEP bit of Cortex System Control Register */ + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; + 462 .loc 1 456 3 is_stmt 1 view .LVU81 + 463 .loc 1 456 12 is_stmt 0 view .LVU82 + 464 000c 0B4A ldr r2, .L39+4 + 465 000e 1369 ldr r3, [r2, #16] + 466 .LVL9: + 467 .loc 1 456 12 view .LVU83 + 468 0010 43F00403 orr r3, r3, #4 + 469 0014 1361 str r3, [r2, #16] + 470 .LVL10: + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Ensure that all instructions done before entering STOP mode */ + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __DSB(); + 471 .loc 1 459 3 is_stmt 1 view .LVU84 + 472 .LBB14: + 473 .LBI14: + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 474 .loc 2 877 27 view .LVU85 + 475 .LBB15: + 476 .loc 2 879 3 view .LVU86 + 477 .syntax unified + 478 @ 879 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 479 0016 BFF34F8F dsb 0xF + 480 @ 0 "" 2 + 481 .thumb + 482 .syntax unified + 483 .LBE15: + 484 .LBE14: + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __ISB(); + 485 .loc 1 460 3 view .LVU87 + 486 .LBB16: + 487 .LBI16: + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 488 .loc 2 866 27 view .LVU88 + 489 .LBB17: + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 490 .loc 2 868 3 view .LVU89 + 491 .syntax unified + 492 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 493 001a BFF36F8F isb 0xF + 494 @ 0 "" 2 + 495 .thumb + 496 .syntax unified + 497 .LBE17: + 498 .LBE16: + ARM GAS /tmp/ccE9MXkV.s page 33 + + + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Select Stop mode entry --------------------------------------------------*/ + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** if(STOPEntry == PWR_STOPENTRY_WFI) + 499 .loc 1 463 3 view .LVU90 + 500 .loc 1 463 5 is_stmt 0 view .LVU91 + 501 001e 0129 cmp r1, #1 + 502 0020 08D0 beq .L38 + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Request Wait For Interrupt */ + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __WFI(); + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** else + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Request Wait For Event */ + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __SEV(); + 503 .loc 1 471 5 is_stmt 1 view .LVU92 + 504 .syntax unified + 505 @ 471 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c" 1 + 506 0022 40BF sev + 507 @ 0 "" 2 + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __WFE(); + 508 .loc 1 472 5 view .LVU93 + 509 @ 472 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c" 1 + 510 0024 20BF wfe + 511 @ 0 "" 2 + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __WFE(); + 512 .loc 1 473 5 view .LVU94 + 513 @ 473 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c" 1 + 514 0026 20BF wfe + 515 @ 0 "" 2 + 516 .thumb + 517 .syntax unified + 518 .L37: + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Reset SLEEPDEEP bit of Cortex System Control Register */ + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); + 519 .loc 1 476 3 view .LVU95 + 520 .loc 1 476 12 is_stmt 0 view .LVU96 + 521 0028 044A ldr r2, .L39+4 + 522 002a 1369 ldr r3, [r2, #16] + 523 002c 23F00403 bic r3, r3, #4 + 524 0030 1361 str r3, [r2, #16] + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 525 .loc 1 477 1 view .LVU97 + 526 0032 7047 bx lr + 527 .L38: + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 528 .loc 1 466 5 is_stmt 1 view .LVU98 + 529 .syntax unified + 530 @ 466 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c" 1 + 531 0034 30BF wfi + 532 @ 0 "" 2 + 533 .thumb + 534 .syntax unified + 535 0036 F7E7 b .L37 + 536 .L40: + 537 .align 2 + ARM GAS /tmp/ccE9MXkV.s page 34 + + + 538 .L39: + 539 0038 00700040 .word 1073770496 + 540 003c 00ED00E0 .word -536810240 + 541 .cfi_endproc + 542 .LFE150: + 544 .section .text.HAL_PWR_EnterSTANDBYMode,"ax",%progbits + 545 .align 1 + 546 .global HAL_PWR_EnterSTANDBYMode + 547 .syntax unified + 548 .thumb + 549 .thumb_func + 550 .fpu fpv5-d16 + 552 HAL_PWR_EnterSTANDBYMode: + 553 .LFB151: + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Enters Standby mode. + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note In Standby mode, all I/O pins are high impedance except for: + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * - Reset pad (still available) + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * - RTC_AF1 pin (PC13) if configured for tamper, time-stamp, RTC + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * Alarm out, or RTC clock calibration out. + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * - RTC_AF2 pin (PI8) if configured for tamper or time-stamp. + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * - WKUP pins if enabled. + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_EnterSTANDBYMode(void) + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 554 .loc 1 490 1 view -0 + 555 .cfi_startproc + 556 @ args = 0, pretend = 0, frame = 0 + 557 @ frame_needed = 0, uses_anonymous_args = 0 + 558 @ link register save eliminated. + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Select Standby mode */ + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** PWR->CR1 |= PWR_CR1_PDDS; + 559 .loc 1 492 3 view .LVU100 + 560 .loc 1 492 12 is_stmt 0 view .LVU101 + 561 0000 054A ldr r2, .L42 + 562 0002 1368 ldr r3, [r2] + 563 0004 43F00203 orr r3, r3, #2 + 564 0008 1360 str r3, [r2] + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Set SLEEPDEEP bit of Cortex System Control Register */ + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; + 565 .loc 1 495 3 is_stmt 1 view .LVU102 + 566 .loc 1 495 12 is_stmt 0 view .LVU103 + 567 000a 044A ldr r2, .L42+4 + 568 000c 1369 ldr r3, [r2, #16] + 569 000e 43F00403 orr r3, r3, #4 + 570 0012 1361 str r3, [r2, #16] + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* This option is used to ensure that store operations are completed */ + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** #if defined ( __CC_ARM) + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __force_stores(); + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** #endif + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Request Wait For Interrupt */ + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __WFI(); + 571 .loc 1 502 3 is_stmt 1 view .LVU104 + ARM GAS /tmp/ccE9MXkV.s page 35 + + + 572 .syntax unified + 573 @ 502 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c" 1 + 574 0014 30BF wfi + 575 @ 0 "" 2 + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 576 .loc 1 503 1 is_stmt 0 view .LVU105 + 577 .thumb + 578 .syntax unified + 579 0016 7047 bx lr + 580 .L43: + 581 .align 2 + 582 .L42: + 583 0018 00700040 .word 1073770496 + 584 001c 00ED00E0 .word -536810240 + 585 .cfi_endproc + 586 .LFE151: + 588 .section .text.HAL_PWR_PVDCallback,"ax",%progbits + 589 .align 1 + 590 .weak HAL_PWR_PVDCallback + 591 .syntax unified + 592 .thumb + 593 .thumb_func + 594 .fpu fpv5-d16 + 596 HAL_PWR_PVDCallback: + 597 .LFB153: + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief This function handles the PWR PVD interrupt request. + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note This API should be called under the PVD_IRQHandler(). + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_PVD_IRQHandler(void) + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Check PWR Exti flag */ + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** if(__HAL_PWR_PVD_EXTI_GET_FLAG() != RESET) + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* PWR PVD interrupt user callback */ + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** HAL_PWR_PVDCallback(); + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Clear PWR Exti pending bit */ + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __HAL_PWR_PVD_EXTI_CLEAR_FLAG(); + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief PWR PVD interrupt callback + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** __weak void HAL_PWR_PVDCallback(void) + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 598 .loc 1 528 1 is_stmt 1 view -0 + 599 .cfi_startproc + 600 @ args = 0, pretend = 0, frame = 0 + 601 @ frame_needed = 0, uses_anonymous_args = 0 + 602 @ link register save eliminated. + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* NOTE : This function Should not be modified, when the callback is needed, + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** the HAL_PWR_PVDCallback could be implemented in the user file + ARM GAS /tmp/ccE9MXkV.s page 36 + + + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 603 .loc 1 532 1 view .LVU107 + 604 0000 7047 bx lr + 605 .cfi_endproc + 606 .LFE153: + 608 .section .text.HAL_PWR_PVD_IRQHandler,"ax",%progbits + 609 .align 1 + 610 .global HAL_PWR_PVD_IRQHandler + 611 .syntax unified + 612 .thumb + 613 .thumb_func + 614 .fpu fpv5-d16 + 616 HAL_PWR_PVD_IRQHandler: + 617 .LFB152: + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Check PWR Exti flag */ + 618 .loc 1 511 1 view -0 + 619 .cfi_startproc + 620 @ args = 0, pretend = 0, frame = 0 + 621 @ frame_needed = 0, uses_anonymous_args = 0 + 622 0000 08B5 push {r3, lr} + 623 .LCFI0: + 624 .cfi_def_cfa_offset 8 + 625 .cfi_offset 3, -8 + 626 .cfi_offset 14, -4 + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 627 .loc 1 513 3 view .LVU109 + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 628 .loc 1 513 6 is_stmt 0 view .LVU110 + 629 0002 064B ldr r3, .L49 + 630 0004 5B69 ldr r3, [r3, #20] + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 631 .loc 1 513 5 view .LVU111 + 632 0006 13F4803F tst r3, #65536 + 633 000a 00D1 bne .L48 + 634 .L45: + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 635 .loc 1 521 1 view .LVU112 + 636 000c 08BD pop {r3, pc} + 637 .L48: + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 638 .loc 1 516 5 is_stmt 1 view .LVU113 + 639 000e FFF7FEFF bl HAL_PWR_PVDCallback + 640 .LVL11: + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 641 .loc 1 519 5 view .LVU114 + 642 0012 024B ldr r3, .L49 + 643 0014 4FF48032 mov r2, #65536 + 644 0018 5A61 str r2, [r3, #20] + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 645 .loc 1 521 1 is_stmt 0 view .LVU115 + 646 001a F7E7 b .L45 + 647 .L50: + 648 .align 2 + 649 .L49: + 650 001c 003C0140 .word 1073822720 + 651 .cfi_endproc + ARM GAS /tmp/ccE9MXkV.s page 37 + + + 652 .LFE152: + 654 .section .text.HAL_PWR_EnableSleepOnExit,"ax",%progbits + 655 .align 1 + 656 .global HAL_PWR_EnableSleepOnExit + 657 .syntax unified + 658 .thumb + 659 .thumb_func + 660 .fpu fpv5-d16 + 662 HAL_PWR_EnableSleepOnExit: + 663 .LFB154: + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Indicates Sleep-On-Exit when returning from Handler mode to Thread mode. + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note Set SLEEPONEXIT bit of SCR register. When this bit is set, the processor + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * re-enters SLEEP mode when an interruption handling is over. + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * Setting this bit is useful when the processor is expected to run only on + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * interruptions handling. + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_EnableSleepOnExit(void) + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 664 .loc 1 543 1 is_stmt 1 view -0 + 665 .cfi_startproc + 666 @ args = 0, pretend = 0, frame = 0 + 667 @ frame_needed = 0, uses_anonymous_args = 0 + 668 @ link register save eliminated. + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Set SLEEPONEXIT bit of Cortex System Control Register */ + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); + 669 .loc 1 545 3 view .LVU117 + 670 0000 024A ldr r2, .L52 + 671 0002 1369 ldr r3, [r2, #16] + 672 0004 43F00203 orr r3, r3, #2 + 673 0008 1361 str r3, [r2, #16] + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 674 .loc 1 546 1 is_stmt 0 view .LVU118 + 675 000a 7047 bx lr + 676 .L53: + 677 .align 2 + 678 .L52: + 679 000c 00ED00E0 .word -536810240 + 680 .cfi_endproc + 681 .LFE154: + 683 .section .text.HAL_PWR_DisableSleepOnExit,"ax",%progbits + 684 .align 1 + 685 .global HAL_PWR_DisableSleepOnExit + 686 .syntax unified + 687 .thumb + 688 .thumb_func + 689 .fpu fpv5-d16 + 691 HAL_PWR_DisableSleepOnExit: + 692 .LFB155: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Disables Sleep-On-Exit feature when returning from Handler mode to Thread mode. + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note Clears SLEEPONEXIT bit of SCR register. When this bit is set, the processor + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * re-enters SLEEP mode when an interruption handling is over. + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + ARM GAS /tmp/ccE9MXkV.s page 38 + + + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_DisableSleepOnExit(void) + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 693 .loc 1 555 1 is_stmt 1 view -0 + 694 .cfi_startproc + 695 @ args = 0, pretend = 0, frame = 0 + 696 @ frame_needed = 0, uses_anonymous_args = 0 + 697 @ link register save eliminated. + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Clear SLEEPONEXIT bit of Cortex System Control Register */ + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); + 698 .loc 1 557 3 view .LVU120 + 699 0000 024A ldr r2, .L55 + 700 0002 1369 ldr r3, [r2, #16] + 701 0004 23F00203 bic r3, r3, #2 + 702 0008 1361 str r3, [r2, #16] + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 703 .loc 1 558 1 is_stmt 0 view .LVU121 + 704 000a 7047 bx lr + 705 .L56: + 706 .align 2 + 707 .L55: + 708 000c 00ED00E0 .word -536810240 + 709 .cfi_endproc + 710 .LFE155: + 712 .section .text.HAL_PWR_EnableSEVOnPend,"ax",%progbits + 713 .align 1 + 714 .global HAL_PWR_EnableSEVOnPend + 715 .syntax unified + 716 .thumb + 717 .thumb_func + 718 .fpu fpv5-d16 + 720 HAL_PWR_EnableSEVOnPend: + 721 .LFB156: + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Enables CORTEX M4 SEVONPEND bit. + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note Sets SEVONPEND bit of SCR register. When this bit is set, this causes + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * WFE to wake up when an interrupt moves from inactive to pended. + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_EnableSEVOnPend(void) + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 722 .loc 1 567 1 is_stmt 1 view -0 + 723 .cfi_startproc + 724 @ args = 0, pretend = 0, frame = 0 + 725 @ frame_needed = 0, uses_anonymous_args = 0 + 726 @ link register save eliminated. + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Set SEVONPEND bit of Cortex System Control Register */ + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); + 727 .loc 1 569 3 view .LVU123 + 728 0000 024A ldr r2, .L58 + 729 0002 1369 ldr r3, [r2, #16] + 730 0004 43F01003 orr r3, r3, #16 + 731 0008 1361 str r3, [r2, #16] + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 732 .loc 1 570 1 is_stmt 0 view .LVU124 + 733 000a 7047 bx lr + ARM GAS /tmp/ccE9MXkV.s page 39 + + + 734 .L59: + 735 .align 2 + 736 .L58: + 737 000c 00ED00E0 .word -536810240 + 738 .cfi_endproc + 739 .LFE156: + 741 .section .text.HAL_PWR_DisableSEVOnPend,"ax",%progbits + 742 .align 1 + 743 .global HAL_PWR_DisableSEVOnPend + 744 .syntax unified + 745 .thumb + 746 .thumb_func + 747 .fpu fpv5-d16 + 749 HAL_PWR_DisableSEVOnPend: + 750 .LFB157: + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /** + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @brief Disables CORTEX M4 SEVONPEND bit. + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @note Clears SEVONPEND bit of SCR register. When this bit is set, this causes + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * WFE to wake up when an interrupt moves from inactive to pended. + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** * @retval None + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** */ + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** void HAL_PWR_DisableSEVOnPend(void) + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** { + 751 .loc 1 579 1 is_stmt 1 view -0 + 752 .cfi_startproc + 753 @ args = 0, pretend = 0, frame = 0 + 754 @ frame_needed = 0, uses_anonymous_args = 0 + 755 @ link register save eliminated. + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** /* Clear SEVONPEND bit of Cortex System Control Register */ + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); + 756 .loc 1 581 3 view .LVU126 + 757 0000 024A ldr r2, .L61 + 758 0002 1369 ldr r3, [r2, #16] + 759 0004 23F01003 bic r3, r3, #16 + 760 0008 1361 str r3, [r2, #16] + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c **** } + 761 .loc 1 582 1 is_stmt 0 view .LVU127 + 762 000a 7047 bx lr + 763 .L62: + 764 .align 2 + 765 .L61: + 766 000c 00ED00E0 .word -536810240 + 767 .cfi_endproc + 768 .LFE157: + 770 .text + 771 .Letext0: + 772 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 773 .file 4 "Drivers/CMSIS/Include/core_cm7.h" + 774 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 775 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h" + 776 .file 7 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + ARM GAS /tmp/ccE9MXkV.s page 40 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_pwr.c + /tmp/ccE9MXkV.s:17 .text.HAL_PWR_DeInit:0000000000000000 $t + /tmp/ccE9MXkV.s:25 .text.HAL_PWR_DeInit:0000000000000000 HAL_PWR_DeInit + /tmp/ccE9MXkV.s:47 .text.HAL_PWR_DeInit:0000000000000014 $d + /tmp/ccE9MXkV.s:52 .text.HAL_PWR_EnableBkUpAccess:0000000000000000 $t + /tmp/ccE9MXkV.s:59 .text.HAL_PWR_EnableBkUpAccess:0000000000000000 HAL_PWR_EnableBkUpAccess + /tmp/ccE9MXkV.s:76 .text.HAL_PWR_EnableBkUpAccess:000000000000000c $d + /tmp/ccE9MXkV.s:81 .text.HAL_PWR_DisableBkUpAccess:0000000000000000 $t + /tmp/ccE9MXkV.s:88 .text.HAL_PWR_DisableBkUpAccess:0000000000000000 HAL_PWR_DisableBkUpAccess + /tmp/ccE9MXkV.s:105 .text.HAL_PWR_DisableBkUpAccess:000000000000000c $d + /tmp/ccE9MXkV.s:110 .text.HAL_PWR_ConfigPVD:0000000000000000 $t + /tmp/ccE9MXkV.s:117 .text.HAL_PWR_ConfigPVD:0000000000000000 HAL_PWR_ConfigPVD + /tmp/ccE9MXkV.s:204 .text.HAL_PWR_ConfigPVD:000000000000007c $d + /tmp/ccE9MXkV.s:210 .text.HAL_PWR_EnablePVD:0000000000000000 $t + /tmp/ccE9MXkV.s:217 .text.HAL_PWR_EnablePVD:0000000000000000 HAL_PWR_EnablePVD + /tmp/ccE9MXkV.s:234 .text.HAL_PWR_EnablePVD:000000000000000c $d + /tmp/ccE9MXkV.s:239 .text.HAL_PWR_DisablePVD:0000000000000000 $t + /tmp/ccE9MXkV.s:246 .text.HAL_PWR_DisablePVD:0000000000000000 HAL_PWR_DisablePVD + /tmp/ccE9MXkV.s:263 .text.HAL_PWR_DisablePVD:000000000000000c $d + /tmp/ccE9MXkV.s:268 .text.HAL_PWR_EnableWakeUpPin:0000000000000000 $t + /tmp/ccE9MXkV.s:275 .text.HAL_PWR_EnableWakeUpPin:0000000000000000 HAL_PWR_EnableWakeUpPin + /tmp/ccE9MXkV.s:302 .text.HAL_PWR_EnableWakeUpPin:000000000000001c $d + /tmp/ccE9MXkV.s:307 .text.HAL_PWR_DisableWakeUpPin:0000000000000000 $t + /tmp/ccE9MXkV.s:314 .text.HAL_PWR_DisableWakeUpPin:0000000000000000 HAL_PWR_DisableWakeUpPin + /tmp/ccE9MXkV.s:333 .text.HAL_PWR_DisableWakeUpPin:000000000000000c $d + /tmp/ccE9MXkV.s:338 .text.HAL_PWR_EnterSLEEPMode:0000000000000000 $t + /tmp/ccE9MXkV.s:345 .text.HAL_PWR_EnterSLEEPMode:0000000000000000 HAL_PWR_EnterSLEEPMode + /tmp/ccE9MXkV.s:423 .text.HAL_PWR_EnterSLEEPMode:0000000000000024 $d + /tmp/ccE9MXkV.s:428 .text.HAL_PWR_EnterSTOPMode:0000000000000000 $t + /tmp/ccE9MXkV.s:435 .text.HAL_PWR_EnterSTOPMode:0000000000000000 HAL_PWR_EnterSTOPMode + /tmp/ccE9MXkV.s:539 .text.HAL_PWR_EnterSTOPMode:0000000000000038 $d + /tmp/ccE9MXkV.s:545 .text.HAL_PWR_EnterSTANDBYMode:0000000000000000 $t + /tmp/ccE9MXkV.s:552 .text.HAL_PWR_EnterSTANDBYMode:0000000000000000 HAL_PWR_EnterSTANDBYMode + /tmp/ccE9MXkV.s:583 .text.HAL_PWR_EnterSTANDBYMode:0000000000000018 $d + /tmp/ccE9MXkV.s:589 .text.HAL_PWR_PVDCallback:0000000000000000 $t + /tmp/ccE9MXkV.s:596 .text.HAL_PWR_PVDCallback:0000000000000000 HAL_PWR_PVDCallback + /tmp/ccE9MXkV.s:609 .text.HAL_PWR_PVD_IRQHandler:0000000000000000 $t + /tmp/ccE9MXkV.s:616 .text.HAL_PWR_PVD_IRQHandler:0000000000000000 HAL_PWR_PVD_IRQHandler + /tmp/ccE9MXkV.s:650 .text.HAL_PWR_PVD_IRQHandler:000000000000001c $d + /tmp/ccE9MXkV.s:655 .text.HAL_PWR_EnableSleepOnExit:0000000000000000 $t + /tmp/ccE9MXkV.s:662 .text.HAL_PWR_EnableSleepOnExit:0000000000000000 HAL_PWR_EnableSleepOnExit + /tmp/ccE9MXkV.s:679 .text.HAL_PWR_EnableSleepOnExit:000000000000000c $d + /tmp/ccE9MXkV.s:684 .text.HAL_PWR_DisableSleepOnExit:0000000000000000 $t + /tmp/ccE9MXkV.s:691 .text.HAL_PWR_DisableSleepOnExit:0000000000000000 HAL_PWR_DisableSleepOnExit + /tmp/ccE9MXkV.s:708 .text.HAL_PWR_DisableSleepOnExit:000000000000000c $d + /tmp/ccE9MXkV.s:713 .text.HAL_PWR_EnableSEVOnPend:0000000000000000 $t + /tmp/ccE9MXkV.s:720 .text.HAL_PWR_EnableSEVOnPend:0000000000000000 HAL_PWR_EnableSEVOnPend + /tmp/ccE9MXkV.s:737 .text.HAL_PWR_EnableSEVOnPend:000000000000000c $d + /tmp/ccE9MXkV.s:742 .text.HAL_PWR_DisableSEVOnPend:0000000000000000 $t + /tmp/ccE9MXkV.s:749 .text.HAL_PWR_DisableSEVOnPend:0000000000000000 HAL_PWR_DisableSEVOnPend + /tmp/ccE9MXkV.s:766 .text.HAL_PWR_DisableSEVOnPend:000000000000000c $d + +NO UNDEFINED SYMBOLS diff --git a/build/stm32f7xx_hal_pwr.o b/build/stm32f7xx_hal_pwr.o new file mode 100644 index 0000000..0993df6 Binary files /dev/null and b/build/stm32f7xx_hal_pwr.o differ diff --git a/build/stm32f7xx_hal_pwr_ex.d b/build/stm32f7xx_hal_pwr_ex.d new file mode 100644 index 0000000..8f22bab --- /dev/null +++ b/build/stm32f7xx_hal_pwr_ex.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_pwr_ex.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_pwr_ex.lst b/build/stm32f7xx_hal_pwr_ex.lst new file mode 100644 index 0000000..9f2a736 --- /dev/null +++ b/build/stm32f7xx_hal_pwr_ex.lst @@ -0,0 +1,1659 @@ +ARM GAS /tmp/cc97GYnP.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_pwr_ex.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.HAL_PWREx_EnableBkUpReg,"ax",%progbits + 17 .align 1 + 18 .global HAL_PWREx_EnableBkUpReg + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 HAL_PWREx_EnableBkUpReg: + 26 .LFB141: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @file stm32f7xx_hal_pwr_ex.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Extended PWR HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * functionalities of PWR extension peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + Peripheral Extended features functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** ****************************************************************************** + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @attention + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * Copyright (c) 2017 STMicroelectronics. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * All rights reserved. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * This software is licensed under terms that can be found in the LICENSE file + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * in the root directory of this software component. + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** ****************************************************************************** + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Includes ------------------------------------------------------------------*/ + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** #include "stm32f7xx_hal.h" + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** @addtogroup STM32F7xx_HAL_Driver + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @{ + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** @defgroup PWREx PWREx + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief PWR HAL module driver + ARM GAS /tmp/cc97GYnP.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @{ + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** #ifdef HAL_PWR_MODULE_ENABLED + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Private typedef -----------------------------------------------------------*/ + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Private define ------------------------------------------------------------*/ + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** @addtogroup PWREx_Private_Constants + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @{ + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** #define PWR_OVERDRIVE_TIMEOUT_VALUE 1000 + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** #define PWR_UDERDRIVE_TIMEOUT_VALUE 1000 + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** #define PWR_BKPREG_TIMEOUT_VALUE 1000 + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** #define PWR_VOSRDY_TIMEOUT_VALUE 1000 + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @} + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Private macro -------------------------------------------------------------*/ + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Private variables ---------------------------------------------------------*/ + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Private function prototypes -----------------------------------------------*/ + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Private functions ---------------------------------------------------------*/ + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** @defgroup PWREx_Exported_Functions PWREx Exported Functions + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @{ + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** @defgroup PWREx_Exported_Functions_Group1 Peripheral Extended features functions + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Peripheral Extended features functions + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** @verbatim + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** =============================================================================== + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** ##### Peripheral extended features functions ##### + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** =============================================================================== + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** *** Main and Backup Regulators configuration *** + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** ================================================ + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** [..] + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (+) The backup domain includes 4 Kbytes of backup SRAM accessible only from + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** the CPU, and address in 32-bit, 16-bit or 8-bit mode. Its content is + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** retained even in Standby or VBAT mode when the low power backup regulator + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** is enabled. It can be considered as an internal EEPROM when VBAT is + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** always present. You can use the HAL_PWREx_EnableBkUpReg() function to + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** enable the low power backup regulator. + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (+) When the backup domain is supplied by VDD (analog switch connected to VDD) + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** the backup SRAM is powered from VDD which replaces the VBAT power supply to + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** save battery life. + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (+) The backup SRAM is not mass erased by a tamper event. It is read + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** protected to prevent confidential data, such as cryptographic private + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** key, from being accessed. The backup SRAM can be erased only through + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** the Flash interface when a protection level change from level 1 to + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** level 0 is requested. + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** -@- Refer to the description of Read protection (RDP) in the Flash + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** programming manual. + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + ARM GAS /tmp/cc97GYnP.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (+) The main internal regulator can be configured to have a tradeoff between + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** performance and power consumption when the device does not operate at + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** the maximum frequency. This is done through __HAL_PWR_MAINREGULATORMODE_CONFIG() + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** macro which configure VOS bit in PWR_CR register + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** Refer to the product datasheets for more details. + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** *** FLASH Power Down configuration **** + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** ======================================= + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** [..] + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (+) By setting the FPDS bit in the PWR_CR register by using the + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** HAL_PWREx_EnableFlashPowerDown() function, the Flash memory also enters power + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** down mode when the device enters Stop mode. When the Flash memory + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** is in power down mode, an additional startup delay is incurred when + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** waking up from Stop mode. + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** *** Over-Drive and Under-Drive configuration **** + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** ================================================= + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** [..] + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (+) In Run mode: the main regulator has 2 operating modes available: + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (++) Normal mode: The CPU and core logic operate at maximum frequency at a given + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** voltage scaling (scale 1, scale 2 or scale 3) + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (++) Over-drive mode: This mode allows the CPU and the core logic to operate at a + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** higher frequency than the normal mode for a given voltage scaling (scale 1, + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** scale 2 or scale 3). This mode is enabled through HAL_PWREx_EnableOverDrive() function + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** disabled by HAL_PWREx_DisableOverDrive() function, to enter or exit from Over-drive mod + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** the sequence described in Reference manual. + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (+) In Stop mode: the main regulator or low power regulator supplies a low power + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** voltage to the 1.2V domain, thus preserving the content of registers + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** and internal SRAM. 2 operating modes are available: + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (++) Normal mode: the 1.2V domain is preserved in nominal leakage mode. This mode is only + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** available when the main regulator or the low power regulator is used in Scale 3 or + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** low voltage mode. + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** (++) Under-drive mode: the 1.2V domain is preserved in reduced leakage mode. This mode is + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** available when the main regulator or the low power regulator is in low voltage mode. + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** @endverbatim + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @{ + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Enables the Backup Regulator. + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval HAL status + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** HAL_StatusTypeDef HAL_PWREx_EnableBkUpReg(void) + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 28 .loc 1 135 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 0000 10B5 push {r4, lr} + 33 .LCFI0: + 34 .cfi_def_cfa_offset 8 + 35 .cfi_offset 4, -8 + 36 .cfi_offset 14, -4 + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** uint32_t tickstart = 0; + ARM GAS /tmp/cc97GYnP.s page 4 + + + 37 .loc 1 136 3 view .LVU1 + 38 .LVL0: + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable Backup regulator */ + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CSR1 |= PWR_CSR1_BRE; + 39 .loc 1 139 3 view .LVU2 + 40 .loc 1 139 13 is_stmt 0 view .LVU3 + 41 0002 0D4B ldr r3, .L8 + 42 0004 5A68 ldr r2, [r3, #4] + 43 0006 42F40072 orr r2, r2, #512 + 44 000a 5A60 str r2, [r3, #4] + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Workaround for the following hardware bug: */ + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Id 19: PWR : No STANDBY wake-up when Back-up RAM enabled (ref. Errata Sheet p23) */ + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CSR1 |= PWR_CSR1_EIWUP; + 45 .loc 1 143 3 is_stmt 1 view .LVU4 + 46 .loc 1 143 13 is_stmt 0 view .LVU5 + 47 000c 5A68 ldr r2, [r3, #4] + 48 000e 42F48072 orr r2, r2, #256 + 49 0012 5A60 str r2, [r3, #4] + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Get tick */ + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tickstart = HAL_GetTick(); + 50 .loc 1 146 3 is_stmt 1 view .LVU6 + 51 .loc 1 146 15 is_stmt 0 view .LVU7 + 52 0014 FFF7FEFF bl HAL_GetTick + 53 .LVL1: + 54 0018 0446 mov r4, r0 + 55 .LVL2: + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Wait till Backup regulator ready flag is set */ + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** while(__HAL_PWR_GET_FLAG(PWR_FLAG_BRR) == RESET) + 56 .loc 1 149 3 is_stmt 1 view .LVU8 + 57 .L2: + 58 .loc 1 149 8 view .LVU9 + 59 .loc 1 149 9 is_stmt 0 view .LVU10 + 60 001a 074B ldr r3, .L8 + 61 001c 5B68 ldr r3, [r3, #4] + 62 .loc 1 149 8 view .LVU11 + 63 001e 13F0080F tst r3, #8 + 64 0022 07D1 bne .L7 + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if((HAL_GetTick() - tickstart ) > PWR_BKPREG_TIMEOUT_VALUE) + 65 .loc 1 151 5 is_stmt 1 view .LVU12 + 66 .loc 1 151 9 is_stmt 0 view .LVU13 + 67 0024 FFF7FEFF bl HAL_GetTick + 68 .LVL3: + 69 .loc 1 151 23 view .LVU14 + 70 0028 001B subs r0, r0, r4 + 71 .loc 1 151 7 view .LVU15 + 72 002a B0F57A7F cmp r0, #1000 + 73 002e F4D9 bls .L2 + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_TIMEOUT; + 74 .loc 1 153 14 view .LVU16 + 75 0030 0320 movs r0, #3 + 76 0032 00E0 b .L3 + ARM GAS /tmp/cc97GYnP.s page 5 + + + 77 .L7: + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_OK; + 78 .loc 1 156 10 view .LVU17 + 79 0034 0020 movs r0, #0 + 80 .L3: + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 81 .loc 1 157 1 view .LVU18 + 82 0036 10BD pop {r4, pc} + 83 .LVL4: + 84 .L9: + 85 .loc 1 157 1 view .LVU19 + 86 .align 2 + 87 .L8: + 88 0038 00700040 .word 1073770496 + 89 .cfi_endproc + 90 .LFE141: + 92 .section .text.HAL_PWREx_DisableBkUpReg,"ax",%progbits + 93 .align 1 + 94 .global HAL_PWREx_DisableBkUpReg + 95 .syntax unified + 96 .thumb + 97 .thumb_func + 98 .fpu fpv5-d16 + 100 HAL_PWREx_DisableBkUpReg: + 101 .LFB142: + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Disables the Backup Regulator. + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval HAL status + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** HAL_StatusTypeDef HAL_PWREx_DisableBkUpReg(void) + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 102 .loc 1 164 1 is_stmt 1 view -0 + 103 .cfi_startproc + 104 @ args = 0, pretend = 0, frame = 0 + 105 @ frame_needed = 0, uses_anonymous_args = 0 + 106 0000 10B5 push {r4, lr} + 107 .LCFI1: + 108 .cfi_def_cfa_offset 8 + 109 .cfi_offset 4, -8 + 110 .cfi_offset 14, -4 + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** uint32_t tickstart = 0; + 111 .loc 1 165 3 view .LVU21 + 112 .LVL5: + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Disable Backup regulator */ + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CSR1 &= (uint32_t)~((uint32_t)PWR_CSR1_BRE); + 113 .loc 1 168 3 view .LVU22 + 114 .loc 1 168 13 is_stmt 0 view .LVU23 + 115 0002 0D4B ldr r3, .L17 + 116 0004 5A68 ldr r2, [r3, #4] + 117 0006 22F40072 bic r2, r2, #512 + 118 000a 5A60 str r2, [r3, #4] + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Workaround for the following hardware bug: */ + ARM GAS /tmp/cc97GYnP.s page 6 + + + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Id 19: PWR : No STANDBY wake-up when Back-up RAM enabled (ref. Errata Sheet p23) */ + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CSR1 |= PWR_CSR1_EIWUP; + 119 .loc 1 172 3 is_stmt 1 view .LVU24 + 120 .loc 1 172 13 is_stmt 0 view .LVU25 + 121 000c 5A68 ldr r2, [r3, #4] + 122 000e 42F48072 orr r2, r2, #256 + 123 0012 5A60 str r2, [r3, #4] + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Get tick */ + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tickstart = HAL_GetTick(); + 124 .loc 1 175 3 is_stmt 1 view .LVU26 + 125 .loc 1 175 15 is_stmt 0 view .LVU27 + 126 0014 FFF7FEFF bl HAL_GetTick + 127 .LVL6: + 128 0018 0446 mov r4, r0 + 129 .LVL7: + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Wait till Backup regulator ready flag is set */ + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** while(__HAL_PWR_GET_FLAG(PWR_FLAG_BRR) != RESET) + 130 .loc 1 178 3 is_stmt 1 view .LVU28 + 131 .L11: + 132 .loc 1 178 8 view .LVU29 + 133 .loc 1 178 9 is_stmt 0 view .LVU30 + 134 001a 074B ldr r3, .L17 + 135 001c 5B68 ldr r3, [r3, #4] + 136 .loc 1 178 8 view .LVU31 + 137 001e 13F0080F tst r3, #8 + 138 0022 07D0 beq .L16 + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if((HAL_GetTick() - tickstart ) > PWR_BKPREG_TIMEOUT_VALUE) + 139 .loc 1 180 5 is_stmt 1 view .LVU32 + 140 .loc 1 180 9 is_stmt 0 view .LVU33 + 141 0024 FFF7FEFF bl HAL_GetTick + 142 .LVL8: + 143 .loc 1 180 23 view .LVU34 + 144 0028 001B subs r0, r0, r4 + 145 .loc 1 180 7 view .LVU35 + 146 002a B0F57A7F cmp r0, #1000 + 147 002e F4D9 bls .L11 + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_TIMEOUT; + 148 .loc 1 182 14 view .LVU36 + 149 0030 0320 movs r0, #3 + 150 0032 00E0 b .L12 + 151 .L16: + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_OK; + 152 .loc 1 185 10 view .LVU37 + 153 0034 0020 movs r0, #0 + 154 .L12: + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 155 .loc 1 186 1 view .LVU38 + 156 0036 10BD pop {r4, pc} + 157 .LVL9: + 158 .L18: + 159 .loc 1 186 1 view .LVU39 + ARM GAS /tmp/cc97GYnP.s page 7 + + + 160 .align 2 + 161 .L17: + 162 0038 00700040 .word 1073770496 + 163 .cfi_endproc + 164 .LFE142: + 166 .section .text.HAL_PWREx_EnableFlashPowerDown,"ax",%progbits + 167 .align 1 + 168 .global HAL_PWREx_EnableFlashPowerDown + 169 .syntax unified + 170 .thumb + 171 .thumb_func + 172 .fpu fpv5-d16 + 174 HAL_PWREx_EnableFlashPowerDown: + 175 .LFB143: + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Enables the Flash Power Down in Stop mode. + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval None + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** void HAL_PWREx_EnableFlashPowerDown(void) + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 176 .loc 1 193 1 is_stmt 1 view -0 + 177 .cfi_startproc + 178 @ args = 0, pretend = 0, frame = 0 + 179 @ frame_needed = 0, uses_anonymous_args = 0 + 180 @ link register save eliminated. + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable the Flash Power Down */ + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CR1 |= PWR_CR1_FPDS; + 181 .loc 1 195 3 view .LVU41 + 182 .loc 1 195 12 is_stmt 0 view .LVU42 + 183 0000 024A ldr r2, .L20 + 184 0002 1368 ldr r3, [r2] + 185 0004 43F40073 orr r3, r3, #512 + 186 0008 1360 str r3, [r2] + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 187 .loc 1 196 1 view .LVU43 + 188 000a 7047 bx lr + 189 .L21: + 190 .align 2 + 191 .L20: + 192 000c 00700040 .word 1073770496 + 193 .cfi_endproc + 194 .LFE143: + 196 .section .text.HAL_PWREx_DisableFlashPowerDown,"ax",%progbits + 197 .align 1 + 198 .global HAL_PWREx_DisableFlashPowerDown + 199 .syntax unified + 200 .thumb + 201 .thumb_func + 202 .fpu fpv5-d16 + 204 HAL_PWREx_DisableFlashPowerDown: + 205 .LFB144: + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Disables the Flash Power Down in Stop mode. + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval None + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + ARM GAS /tmp/cc97GYnP.s page 8 + + + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** void HAL_PWREx_DisableFlashPowerDown(void) + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 206 .loc 1 203 1 is_stmt 1 view -0 + 207 .cfi_startproc + 208 @ args = 0, pretend = 0, frame = 0 + 209 @ frame_needed = 0, uses_anonymous_args = 0 + 210 @ link register save eliminated. + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Disable the Flash Power Down */ + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CR1 &= (uint32_t)~((uint32_t)PWR_CR1_FPDS); + 211 .loc 1 205 3 view .LVU45 + 212 .loc 1 205 12 is_stmt 0 view .LVU46 + 213 0000 024A ldr r2, .L23 + 214 0002 1368 ldr r3, [r2] + 215 0004 23F40073 bic r3, r3, #512 + 216 0008 1360 str r3, [r2] + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 217 .loc 1 206 1 view .LVU47 + 218 000a 7047 bx lr + 219 .L24: + 220 .align 2 + 221 .L23: + 222 000c 00700040 .word 1073770496 + 223 .cfi_endproc + 224 .LFE144: + 226 .section .text.HAL_PWREx_EnableMainRegulatorLowVoltage,"ax",%progbits + 227 .align 1 + 228 .global HAL_PWREx_EnableMainRegulatorLowVoltage + 229 .syntax unified + 230 .thumb + 231 .thumb_func + 232 .fpu fpv5-d16 + 234 HAL_PWREx_EnableMainRegulatorLowVoltage: + 235 .LFB145: + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Enables Main Regulator low voltage mode. + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval None + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** void HAL_PWREx_EnableMainRegulatorLowVoltage(void) + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 236 .loc 1 213 1 is_stmt 1 view -0 + 237 .cfi_startproc + 238 @ args = 0, pretend = 0, frame = 0 + 239 @ frame_needed = 0, uses_anonymous_args = 0 + 240 @ link register save eliminated. + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable Main regulator low voltage */ + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CR1 |= PWR_CR1_MRUDS; + 241 .loc 1 215 3 view .LVU49 + 242 .loc 1 215 12 is_stmt 0 view .LVU50 + 243 0000 024A ldr r2, .L26 + 244 0002 1368 ldr r3, [r2] + 245 0004 43F40063 orr r3, r3, #2048 + 246 0008 1360 str r3, [r2] + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 247 .loc 1 216 1 view .LVU51 + 248 000a 7047 bx lr + 249 .L27: + ARM GAS /tmp/cc97GYnP.s page 9 + + + 250 .align 2 + 251 .L26: + 252 000c 00700040 .word 1073770496 + 253 .cfi_endproc + 254 .LFE145: + 256 .section .text.HAL_PWREx_DisableMainRegulatorLowVoltage,"ax",%progbits + 257 .align 1 + 258 .global HAL_PWREx_DisableMainRegulatorLowVoltage + 259 .syntax unified + 260 .thumb + 261 .thumb_func + 262 .fpu fpv5-d16 + 264 HAL_PWREx_DisableMainRegulatorLowVoltage: + 265 .LFB146: + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Disables Main Regulator low voltage mode. + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval None + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** void HAL_PWREx_DisableMainRegulatorLowVoltage(void) + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 266 .loc 1 223 1 is_stmt 1 view -0 + 267 .cfi_startproc + 268 @ args = 0, pretend = 0, frame = 0 + 269 @ frame_needed = 0, uses_anonymous_args = 0 + 270 @ link register save eliminated. + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Disable Main regulator low voltage */ + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CR1 &= (uint32_t)~((uint32_t)PWR_CR1_MRUDS); + 271 .loc 1 225 3 view .LVU53 + 272 .loc 1 225 12 is_stmt 0 view .LVU54 + 273 0000 024A ldr r2, .L29 + 274 0002 1368 ldr r3, [r2] + 275 0004 23F40063 bic r3, r3, #2048 + 276 0008 1360 str r3, [r2] + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 277 .loc 1 226 1 view .LVU55 + 278 000a 7047 bx lr + 279 .L30: + 280 .align 2 + 281 .L29: + 282 000c 00700040 .word 1073770496 + 283 .cfi_endproc + 284 .LFE146: + 286 .section .text.HAL_PWREx_EnableLowRegulatorLowVoltage,"ax",%progbits + 287 .align 1 + 288 .global HAL_PWREx_EnableLowRegulatorLowVoltage + 289 .syntax unified + 290 .thumb + 291 .thumb_func + 292 .fpu fpv5-d16 + 294 HAL_PWREx_EnableLowRegulatorLowVoltage: + 295 .LFB147: + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Enables Low Power Regulator low voltage mode. + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval None + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + ARM GAS /tmp/cc97GYnP.s page 10 + + + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** void HAL_PWREx_EnableLowRegulatorLowVoltage(void) + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 296 .loc 1 233 1 is_stmt 1 view -0 + 297 .cfi_startproc + 298 @ args = 0, pretend = 0, frame = 0 + 299 @ frame_needed = 0, uses_anonymous_args = 0 + 300 @ link register save eliminated. + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable low power regulator */ + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CR1 |= PWR_CR1_LPUDS; + 301 .loc 1 235 3 view .LVU57 + 302 .loc 1 235 12 is_stmt 0 view .LVU58 + 303 0000 024A ldr r2, .L32 + 304 0002 1368 ldr r3, [r2] + 305 0004 43F48063 orr r3, r3, #1024 + 306 0008 1360 str r3, [r2] + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 307 .loc 1 236 1 view .LVU59 + 308 000a 7047 bx lr + 309 .L33: + 310 .align 2 + 311 .L32: + 312 000c 00700040 .word 1073770496 + 313 .cfi_endproc + 314 .LFE147: + 316 .section .text.HAL_PWREx_DisableLowRegulatorLowVoltage,"ax",%progbits + 317 .align 1 + 318 .global HAL_PWREx_DisableLowRegulatorLowVoltage + 319 .syntax unified + 320 .thumb + 321 .thumb_func + 322 .fpu fpv5-d16 + 324 HAL_PWREx_DisableLowRegulatorLowVoltage: + 325 .LFB148: + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Disables Low Power Regulator low voltage mode. + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval None + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** void HAL_PWREx_DisableLowRegulatorLowVoltage(void) + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 326 .loc 1 243 1 is_stmt 1 view -0 + 327 .cfi_startproc + 328 @ args = 0, pretend = 0, frame = 0 + 329 @ frame_needed = 0, uses_anonymous_args = 0 + 330 @ link register save eliminated. + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Disable low power regulator */ + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CR1 &= (uint32_t)~((uint32_t)PWR_CR1_LPUDS); + 331 .loc 1 245 3 view .LVU61 + 332 .loc 1 245 12 is_stmt 0 view .LVU62 + 333 0000 024A ldr r2, .L35 + 334 0002 1368 ldr r3, [r2] + 335 0004 23F48063 bic r3, r3, #1024 + 336 0008 1360 str r3, [r2] + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 337 .loc 1 246 1 view .LVU63 + 338 000a 7047 bx lr + 339 .L36: + ARM GAS /tmp/cc97GYnP.s page 11 + + + 340 .align 2 + 341 .L35: + 342 000c 00700040 .word 1073770496 + 343 .cfi_endproc + 344 .LFE148: + 346 .section .text.HAL_PWREx_EnableOverDrive,"ax",%progbits + 347 .align 1 + 348 .global HAL_PWREx_EnableOverDrive + 349 .syntax unified + 350 .thumb + 351 .thumb_func + 352 .fpu fpv5-d16 + 354 HAL_PWREx_EnableOverDrive: + 355 .LFB149: + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Activates the Over-Drive mode. + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note This mode allows the CPU and the core logic to operate at a higher frequency + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * than the normal mode for a given voltage scaling (scale 1, scale 2 or scale 3). + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note It is recommended to enter or exit Over-drive mode when the application is not running + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * critical tasks and when the system clock source is either HSI or HSE. + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * During the Over-drive switch activation, no peripheral clocks should be enabled. + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * The peripheral clocks must be enabled once the Over-drive mode is activated. + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval HAL status + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** HAL_StatusTypeDef HAL_PWREx_EnableOverDrive(void) + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 356 .loc 1 259 1 is_stmt 1 view -0 + 357 .cfi_startproc + 358 @ args = 0, pretend = 0, frame = 8 + 359 @ frame_needed = 0, uses_anonymous_args = 0 + 360 0000 10B5 push {r4, lr} + 361 .LCFI2: + 362 .cfi_def_cfa_offset 8 + 363 .cfi_offset 4, -8 + 364 .cfi_offset 14, -4 + 365 0002 82B0 sub sp, sp, #8 + 366 .LCFI3: + 367 .cfi_def_cfa_offset 16 + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** uint32_t tickstart = 0; + 368 .loc 1 260 3 view .LVU65 + 369 .LVL10: + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_RCC_PWR_CLK_ENABLE(); + 370 .loc 1 262 3 view .LVU66 + 371 .LBB2: + 372 .loc 1 262 3 view .LVU67 + 373 .loc 1 262 3 view .LVU68 + 374 0004 1B4B ldr r3, .L48 + 375 0006 1A6C ldr r2, [r3, #64] + 376 0008 42F08052 orr r2, r2, #268435456 + 377 000c 1A64 str r2, [r3, #64] + 378 .loc 1 262 3 view .LVU69 + 379 000e 1B6C ldr r3, [r3, #64] + 380 0010 03F08053 and r3, r3, #268435456 + 381 0014 0193 str r3, [sp, #4] + 382 .loc 1 262 3 view .LVU70 + ARM GAS /tmp/cc97GYnP.s page 12 + + + 383 0016 019B ldr r3, [sp, #4] + 384 .LBE2: + 385 .loc 1 262 3 view .LVU71 + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable the Over-drive to extend the clock frequency to 216 MHz */ + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_PWR_OVERDRIVE_ENABLE(); + 386 .loc 1 265 3 view .LVU72 + 387 0018 174A ldr r2, .L48+4 + 388 001a 1368 ldr r3, [r2] + 389 001c 43F48033 orr r3, r3, #65536 + 390 0020 1360 str r3, [r2] + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Get tick */ + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tickstart = HAL_GetTick(); + 391 .loc 1 268 3 view .LVU73 + 392 .loc 1 268 15 is_stmt 0 view .LVU74 + 393 0022 FFF7FEFF bl HAL_GetTick + 394 .LVL11: + 395 0026 0446 mov r4, r0 + 396 .LVL12: + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** while(!__HAL_PWR_GET_FLAG(PWR_FLAG_ODRDY)) + 397 .loc 1 270 3 is_stmt 1 view .LVU75 + 398 .L38: + 399 .loc 1 270 8 view .LVU76 + 400 .loc 1 270 10 is_stmt 0 view .LVU77 + 401 0028 134B ldr r3, .L48+4 + 402 002a 5B68 ldr r3, [r3, #4] + 403 .loc 1 270 8 view .LVU78 + 404 002c 13F4803F tst r3, #65536 + 405 0030 08D1 bne .L46 + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE) + 406 .loc 1 272 5 is_stmt 1 view .LVU79 + 407 .loc 1 272 9 is_stmt 0 view .LVU80 + 408 0032 FFF7FEFF bl HAL_GetTick + 409 .LVL13: + 410 .loc 1 272 23 view .LVU81 + 411 0036 001B subs r0, r0, r4 + 412 .loc 1 272 7 view .LVU82 + 413 0038 B0F57A7F cmp r0, #1000 + 414 003c F4D9 bls .L38 + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_TIMEOUT; + 415 .loc 1 274 14 view .LVU83 + 416 003e 0320 movs r0, #3 + 417 .L39: + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable the Over-drive switch */ + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_PWR_OVERDRIVESWITCHING_ENABLE(); + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Get tick */ + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tickstart = HAL_GetTick(); + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** while(!__HAL_PWR_GET_FLAG(PWR_FLAG_ODSWRDY)) + ARM GAS /tmp/cc97GYnP.s page 13 + + + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE) + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_TIMEOUT; + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_OK; + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 418 .loc 1 292 1 view .LVU84 + 419 0040 02B0 add sp, sp, #8 + 420 .LCFI4: + 421 .cfi_remember_state + 422 .cfi_def_cfa_offset 8 + 423 @ sp needed + 424 0042 10BD pop {r4, pc} + 425 .LVL14: + 426 .L46: + 427 .LCFI5: + 428 .cfi_restore_state + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 429 .loc 1 279 3 is_stmt 1 view .LVU85 + 430 0044 0C4A ldr r2, .L48+4 + 431 0046 1368 ldr r3, [r2] + 432 0048 43F40033 orr r3, r3, #131072 + 433 004c 1360 str r3, [r2] + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 434 .loc 1 282 3 view .LVU86 + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 435 .loc 1 282 15 is_stmt 0 view .LVU87 + 436 004e FFF7FEFF bl HAL_GetTick + 437 .LVL15: + 438 0052 0446 mov r4, r0 + 439 .LVL16: + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 440 .loc 1 284 3 is_stmt 1 view .LVU88 + 441 .L41: + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 442 .loc 1 284 8 view .LVU89 + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 443 .loc 1 284 10 is_stmt 0 view .LVU90 + 444 0054 084B ldr r3, .L48+4 + 445 0056 5B68 ldr r3, [r3, #4] + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 446 .loc 1 284 8 view .LVU91 + 447 0058 13F4003F tst r3, #131072 + 448 005c 07D1 bne .L47 + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 449 .loc 1 286 5 is_stmt 1 view .LVU92 + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 450 .loc 1 286 9 is_stmt 0 view .LVU93 + 451 005e FFF7FEFF bl HAL_GetTick + 452 .LVL17: + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 453 .loc 1 286 23 view .LVU94 + 454 0062 001B subs r0, r0, r4 + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 455 .loc 1 286 7 view .LVU95 + ARM GAS /tmp/cc97GYnP.s page 14 + + + 456 0064 B0F57A7F cmp r0, #1000 + 457 0068 F4D9 bls .L41 + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 458 .loc 1 288 14 view .LVU96 + 459 006a 0320 movs r0, #3 + 460 006c E8E7 b .L39 + 461 .L47: + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 462 .loc 1 291 10 view .LVU97 + 463 006e 0020 movs r0, #0 + 464 0070 E6E7 b .L39 + 465 .L49: + 466 0072 00BF .align 2 + 467 .L48: + 468 0074 00380240 .word 1073887232 + 469 0078 00700040 .word 1073770496 + 470 .cfi_endproc + 471 .LFE149: + 473 .section .text.HAL_PWREx_DisableOverDrive,"ax",%progbits + 474 .align 1 + 475 .global HAL_PWREx_DisableOverDrive + 476 .syntax unified + 477 .thumb + 478 .thumb_func + 479 .fpu fpv5-d16 + 481 HAL_PWREx_DisableOverDrive: + 482 .LFB150: + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Deactivates the Over-Drive mode. + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note This mode allows the CPU and the core logic to operate at a higher frequency + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * than the normal mode for a given voltage scaling (scale 1, scale 2 or scale 3). + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note It is recommended to enter or exit Over-drive mode when the application is not running + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * critical tasks and when the system clock source is either HSI or HSE. + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * During the Over-drive switch activation, no peripheral clocks should be enabled. + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * The peripheral clocks must be enabled once the Over-drive mode is activated. + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval HAL status + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** HAL_StatusTypeDef HAL_PWREx_DisableOverDrive(void) + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 483 .loc 1 305 1 is_stmt 1 view -0 + 484 .cfi_startproc + 485 @ args = 0, pretend = 0, frame = 8 + 486 @ frame_needed = 0, uses_anonymous_args = 0 + 487 0000 10B5 push {r4, lr} + 488 .LCFI6: + 489 .cfi_def_cfa_offset 8 + 490 .cfi_offset 4, -8 + 491 .cfi_offset 14, -4 + 492 0002 82B0 sub sp, sp, #8 + 493 .LCFI7: + 494 .cfi_def_cfa_offset 16 + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** uint32_t tickstart = 0; + 495 .loc 1 306 3 view .LVU99 + 496 .LVL18: + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_RCC_PWR_CLK_ENABLE(); + ARM GAS /tmp/cc97GYnP.s page 15 + + + 497 .loc 1 308 3 view .LVU100 + 498 .LBB3: + 499 .loc 1 308 3 view .LVU101 + 500 .loc 1 308 3 view .LVU102 + 501 0004 1B4B ldr r3, .L61 + 502 0006 1A6C ldr r2, [r3, #64] + 503 0008 42F08052 orr r2, r2, #268435456 + 504 000c 1A64 str r2, [r3, #64] + 505 .loc 1 308 3 view .LVU103 + 506 000e 1B6C ldr r3, [r3, #64] + 507 0010 03F08053 and r3, r3, #268435456 + 508 0014 0193 str r3, [sp, #4] + 509 .loc 1 308 3 view .LVU104 + 510 0016 019B ldr r3, [sp, #4] + 511 .LBE3: + 512 .loc 1 308 3 view .LVU105 + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Disable the Over-drive switch */ + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_PWR_OVERDRIVESWITCHING_DISABLE(); + 513 .loc 1 311 3 view .LVU106 + 514 0018 174A ldr r2, .L61+4 + 515 001a 1368 ldr r3, [r2] + 516 001c 23F40033 bic r3, r3, #131072 + 517 0020 1360 str r3, [r2] + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Get tick */ + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tickstart = HAL_GetTick(); + 518 .loc 1 314 3 view .LVU107 + 519 .loc 1 314 15 is_stmt 0 view .LVU108 + 520 0022 FFF7FEFF bl HAL_GetTick + 521 .LVL19: + 522 0026 0446 mov r4, r0 + 523 .LVL20: + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** while(__HAL_PWR_GET_FLAG(PWR_FLAG_ODSWRDY)) + 524 .loc 1 316 3 is_stmt 1 view .LVU109 + 525 .L51: + 526 .loc 1 316 8 view .LVU110 + 527 .loc 1 316 9 is_stmt 0 view .LVU111 + 528 0028 134B ldr r3, .L61+4 + 529 002a 5B68 ldr r3, [r3, #4] + 530 .loc 1 316 8 view .LVU112 + 531 002c 13F4003F tst r3, #131072 + 532 0030 08D0 beq .L59 + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE) + 533 .loc 1 318 5 is_stmt 1 view .LVU113 + 534 .loc 1 318 9 is_stmt 0 view .LVU114 + 535 0032 FFF7FEFF bl HAL_GetTick + 536 .LVL21: + 537 .loc 1 318 23 view .LVU115 + 538 0036 001B subs r0, r0, r4 + 539 .loc 1 318 7 view .LVU116 + 540 0038 B0F57A7F cmp r0, #1000 + 541 003c F4D9 bls .L51 + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_TIMEOUT; + ARM GAS /tmp/cc97GYnP.s page 16 + + + 542 .loc 1 320 14 view .LVU117 + 543 003e 0320 movs r0, #3 + 544 .L52: + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Disable the Over-drive */ + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_PWR_OVERDRIVE_DISABLE(); + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Get tick */ + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tickstart = HAL_GetTick(); + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** while(__HAL_PWR_GET_FLAG(PWR_FLAG_ODRDY)) + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if((HAL_GetTick() - tickstart ) > PWR_OVERDRIVE_TIMEOUT_VALUE) + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_TIMEOUT; + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_OK; + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 545 .loc 1 339 1 view .LVU118 + 546 0040 02B0 add sp, sp, #8 + 547 .LCFI8: + 548 .cfi_remember_state + 549 .cfi_def_cfa_offset 8 + 550 @ sp needed + 551 0042 10BD pop {r4, pc} + 552 .LVL22: + 553 .L59: + 554 .LCFI9: + 555 .cfi_restore_state + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 556 .loc 1 325 3 is_stmt 1 view .LVU119 + 557 0044 0C4A ldr r2, .L61+4 + 558 0046 1368 ldr r3, [r2] + 559 0048 23F48033 bic r3, r3, #65536 + 560 004c 1360 str r3, [r2] + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 561 .loc 1 328 3 view .LVU120 + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 562 .loc 1 328 15 is_stmt 0 view .LVU121 + 563 004e FFF7FEFF bl HAL_GetTick + 564 .LVL23: + 565 0052 0446 mov r4, r0 + 566 .LVL24: + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 567 .loc 1 330 3 is_stmt 1 view .LVU122 + 568 .L54: + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 569 .loc 1 330 8 view .LVU123 + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 570 .loc 1 330 9 is_stmt 0 view .LVU124 + 571 0054 084B ldr r3, .L61+4 + 572 0056 5B68 ldr r3, [r3, #4] + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + ARM GAS /tmp/cc97GYnP.s page 17 + + + 573 .loc 1 330 8 view .LVU125 + 574 0058 13F4803F tst r3, #65536 + 575 005c 07D0 beq .L60 + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 576 .loc 1 332 5 is_stmt 1 view .LVU126 + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 577 .loc 1 332 9 is_stmt 0 view .LVU127 + 578 005e FFF7FEFF bl HAL_GetTick + 579 .LVL25: + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 580 .loc 1 332 23 view .LVU128 + 581 0062 001B subs r0, r0, r4 + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 582 .loc 1 332 7 view .LVU129 + 583 0064 B0F57A7F cmp r0, #1000 + 584 0068 F4D9 bls .L54 + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 585 .loc 1 334 14 view .LVU130 + 586 006a 0320 movs r0, #3 + 587 006c E8E7 b .L52 + 588 .L60: + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 589 .loc 1 338 10 view .LVU131 + 590 006e 0020 movs r0, #0 + 591 0070 E6E7 b .L52 + 592 .L62: + 593 0072 00BF .align 2 + 594 .L61: + 595 0074 00380240 .word 1073887232 + 596 0078 00700040 .word 1073770496 + 597 .cfi_endproc + 598 .LFE150: + 600 .section .text.HAL_PWREx_EnterUnderDriveSTOPMode,"ax",%progbits + 601 .align 1 + 602 .global HAL_PWREx_EnterUnderDriveSTOPMode + 603 .syntax unified + 604 .thumb + 605 .thumb_func + 606 .fpu fpv5-d16 + 608 HAL_PWREx_EnterUnderDriveSTOPMode: + 609 .LVL26: + 610 .LFB151: + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Enters in Under-Drive STOP mode. + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note This mode can be selected only when the Under-Drive is already active + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note This mode is enabled only with STOP low power mode. + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * In this mode, the 1.2V domain is preserved in reduced leakage mode. This + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * mode is only available when the main regulator or the low power regulator + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * is in low voltage mode + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note If the Under-drive mode was enabled, it is automatically disabled after + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * exiting Stop mode. + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * When the voltage regulator operates in Under-drive mode, an additional + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * startup delay is induced when waking up from Stop mode. + ARM GAS /tmp/cc97GYnP.s page 18 + + + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note In Stop mode, all I/O pins keep the same state as in Run mode. + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note When exiting Stop mode by issuing an interrupt or a wakeup event, + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * the HSI RC oscillator is selected as system clock. + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note When the voltage regulator operates in low power mode, an additional + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * startup delay is incurred when waking up from Stop mode. + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * By keeping the internal regulator ON during Stop mode, the consumption + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * is higher although the startup time is reduced. + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @param Regulator specifies the regulator state in STOP mode. + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * This parameter can be one of the following values: + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @arg PWR_MAINREGULATOR_UNDERDRIVE_ON: Main Regulator in under-drive mode + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * and Flash memory in power-down when the device is in Stop under-drive mode + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @arg PWR_LOWPOWERREGULATOR_UNDERDRIVE_ON: Low Power Regulator in under-drive mode + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * and Flash memory in power-down when the device is in Stop under-drive mode + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @param STOPEntry specifies if STOP mode in entered with WFI or WFE instruction. + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * This parameter can be one of the following values: + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @arg PWR_SLEEPENTRY_WFI: enter STOP mode with WFI instruction + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @arg PWR_SLEEPENTRY_WFE: enter STOP mode with WFE instruction + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval None + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** HAL_StatusTypeDef HAL_PWREx_EnterUnderDriveSTOPMode(uint32_t Regulator, uint8_t STOPEntry) + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 611 .loc 1 379 1 is_stmt 1 view -0 + 612 .cfi_startproc + 613 @ args = 0, pretend = 0, frame = 8 + 614 @ frame_needed = 0, uses_anonymous_args = 0 + 615 .loc 1 379 1 is_stmt 0 view .LVU133 + 616 0000 70B5 push {r4, r5, r6, lr} + 617 .LCFI10: + 618 .cfi_def_cfa_offset 16 + 619 .cfi_offset 4, -16 + 620 .cfi_offset 5, -12 + 621 .cfi_offset 6, -8 + 622 .cfi_offset 14, -4 + 623 0002 82B0 sub sp, sp, #8 + 624 .LCFI11: + 625 .cfi_def_cfa_offset 24 + 626 0004 0646 mov r6, r0 + 627 0006 0D46 mov r5, r1 + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** uint32_t tempreg = 0; + 628 .loc 1 380 3 is_stmt 1 view .LVU134 + 629 .LVL27: + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** uint32_t tickstart = 0; + 630 .loc 1 381 3 view .LVU135 + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Check the parameters */ + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** assert_param(IS_PWR_REGULATOR_UNDERDRIVE(Regulator)); + 631 .loc 1 384 3 view .LVU136 + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** assert_param(IS_PWR_STOP_ENTRY(STOPEntry)); + 632 .loc 1 385 3 view .LVU137 + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable Power ctrl clock */ + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_RCC_PWR_CLK_ENABLE(); + 633 .loc 1 388 3 view .LVU138 + ARM GAS /tmp/cc97GYnP.s page 19 + + + 634 .LBB4: + 635 .loc 1 388 3 view .LVU139 + 636 .loc 1 388 3 view .LVU140 + 637 0008 1E4B ldr r3, .L73 + 638 000a 1A6C ldr r2, [r3, #64] + 639 000c 42F08052 orr r2, r2, #268435456 + 640 0010 1A64 str r2, [r3, #64] + 641 .loc 1 388 3 view .LVU141 + 642 0012 1B6C ldr r3, [r3, #64] + 643 0014 03F08053 and r3, r3, #268435456 + 644 0018 0193 str r3, [sp, #4] + 645 .loc 1 388 3 view .LVU142 + 646 001a 019B ldr r3, [sp, #4] + 647 .LBE4: + 648 .loc 1 388 3 view .LVU143 + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable the Under-drive Mode ---------------------------------------------*/ + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Clear Under-drive flag */ + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_PWR_CLEAR_ODRUDR_FLAG(); + 649 .loc 1 391 3 view .LVU144 + 650 001c 1A4B ldr r3, .L73+4 + 651 001e 5968 ldr r1, [r3, #4] + 652 .LVL28: + 653 .loc 1 391 3 is_stmt 0 view .LVU145 + 654 0020 1A4A ldr r2, .L73+8 + 655 0022 0A43 orrs r2, r2, r1 + 656 0024 5A60 str r2, [r3, #4] + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable the Under-drive */ + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_PWR_UNDERDRIVE_ENABLE(); + 657 .loc 1 394 3 is_stmt 1 view .LVU146 + 658 0026 1A68 ldr r2, [r3] + 659 0028 42F44022 orr r2, r2, #786432 + 660 002c 1A60 str r2, [r3] + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Get tick */ + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tickstart = HAL_GetTick(); + 661 .loc 1 397 3 view .LVU147 + 662 .loc 1 397 15 is_stmt 0 view .LVU148 + 663 002e FFF7FEFF bl HAL_GetTick + 664 .LVL29: + 665 .loc 1 397 15 view .LVU149 + 666 0032 0446 mov r4, r0 + 667 .LVL30: + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Wait for UnderDrive mode is ready */ + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** while(__HAL_PWR_GET_FLAG(PWR_FLAG_UDRDY)) + 668 .loc 1 400 3 is_stmt 1 view .LVU150 + 669 .L64: + 670 .loc 1 400 8 view .LVU151 + 671 .loc 1 400 9 is_stmt 0 view .LVU152 + 672 0034 144B ldr r3, .L73+4 + 673 0036 5B68 ldr r3, [r3, #4] + 674 0038 03F44023 and r3, r3, #786432 + 675 .loc 1 400 8 view .LVU153 + 676 003c B3F5402F cmp r3, #786432 + 677 0040 07D1 bne .L71 + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + ARM GAS /tmp/cc97GYnP.s page 20 + + + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if((HAL_GetTick() - tickstart ) > PWR_UDERDRIVE_TIMEOUT_VALUE) + 678 .loc 1 402 5 is_stmt 1 view .LVU154 + 679 .loc 1 402 9 is_stmt 0 view .LVU155 + 680 0042 FFF7FEFF bl HAL_GetTick + 681 .LVL31: + 682 .loc 1 402 23 view .LVU156 + 683 0046 001B subs r0, r0, r4 + 684 .loc 1 402 7 view .LVU157 + 685 0048 B0F57A7F cmp r0, #1000 + 686 004c F2D9 bls .L64 + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_TIMEOUT; + 687 .loc 1 404 14 view .LVU158 + 688 004e 0320 movs r0, #3 + 689 0050 13E0 b .L65 + 690 .L71: + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Select the regulator state in STOP mode ---------------------------------*/ + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tempreg = PWR->CR1; + 691 .loc 1 409 3 is_stmt 1 view .LVU159 + 692 .loc 1 409 11 is_stmt 0 view .LVU160 + 693 0052 0D4A ldr r2, .L73+4 + 694 0054 1168 ldr r1, [r2] + 695 .LVL32: + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Clear PDDS, LPDS, MRLUDS and LPLUDS bits */ + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tempreg &= (uint32_t)~(PWR_CR1_PDDS | PWR_CR1_LPDS | PWR_CR1_LPUDS | PWR_CR1_MRUDS); + 696 .loc 1 411 3 is_stmt 1 view .LVU161 + 697 .loc 1 411 11 is_stmt 0 view .LVU162 + 698 0056 0E4B ldr r3, .L73+12 + 699 0058 0B40 ands r3, r3, r1 + 700 .LVL33: + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Set LPDS, MRLUDS and LPLUDS bits according to PWR_Regulator value */ + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tempreg |= Regulator; + 701 .loc 1 414 3 is_stmt 1 view .LVU163 + 702 .loc 1 414 11 is_stmt 0 view .LVU164 + 703 005a 3343 orrs r3, r3, r6 + 704 .LVL34: + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Store the new value */ + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** PWR->CR1 = tempreg; + 705 .loc 1 417 3 is_stmt 1 view .LVU165 + 706 .loc 1 417 12 is_stmt 0 view .LVU166 + 707 005c 1360 str r3, [r2] + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Set SLEEPDEEP bit of Cortex System Control Register */ + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; + 708 .loc 1 420 3 is_stmt 1 view .LVU167 + 709 .loc 1 420 12 is_stmt 0 view .LVU168 + 710 005e 0D4A ldr r2, .L73+16 + 711 0060 1369 ldr r3, [r2, #16] + 712 .LVL35: + 713 .loc 1 420 12 view .LVU169 + 714 0062 43F00403 orr r3, r3, #4 + 715 0066 1361 str r3, [r2, #16] + ARM GAS /tmp/cc97GYnP.s page 21 + + + 716 .LVL36: + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Select STOP mode entry --------------------------------------------------*/ + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if(STOPEntry == PWR_SLEEPENTRY_WFI) + 717 .loc 1 423 3 is_stmt 1 view .LVU170 + 718 .loc 1 423 5 is_stmt 0 view .LVU171 + 719 0068 012D cmp r5, #1 + 720 006a 08D0 beq .L72 + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Request Wait For Interrupt */ + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __WFI(); + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** else + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Request Wait For Event */ + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __WFE(); + 721 .loc 1 431 5 is_stmt 1 view .LVU172 + 722 .syntax unified + 723 @ 431 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c" 1 + 724 006c 20BF wfe + 725 @ 0 "" 2 + 726 .thumb + 727 .syntax unified + 728 .L68: + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Reset SLEEPDEEP bit of Cortex System Control Register */ + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** SCB->SCR &= (uint32_t)~((uint32_t)SCB_SCR_SLEEPDEEP_Msk); + 729 .loc 1 434 3 view .LVU173 + 730 .loc 1 434 12 is_stmt 0 view .LVU174 + 731 006e 094A ldr r2, .L73+16 + 732 0070 1369 ldr r3, [r2, #16] + 733 0072 23F00403 bic r3, r3, #4 + 734 0076 1361 str r3, [r2, #16] + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_OK; + 735 .loc 1 436 3 is_stmt 1 view .LVU175 + 736 .loc 1 436 10 is_stmt 0 view .LVU176 + 737 0078 0020 movs r0, #0 + 738 .LVL37: + 739 .L65: + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 740 .loc 1 437 1 view .LVU177 + 741 007a 02B0 add sp, sp, #8 + 742 .LCFI12: + 743 .cfi_remember_state + 744 .cfi_def_cfa_offset 16 + 745 @ sp needed + 746 007c 70BD pop {r4, r5, r6, pc} + 747 .LVL38: + 748 .L72: + 749 .LCFI13: + 750 .cfi_restore_state + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 751 .loc 1 426 5 is_stmt 1 view .LVU178 + 752 .syntax unified + 753 @ 426 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c" 1 + 754 007e 30BF wfi + ARM GAS /tmp/cc97GYnP.s page 22 + + + 755 @ 0 "" 2 + 756 .thumb + 757 .syntax unified + 758 0080 F5E7 b .L68 + 759 .L74: + 760 0082 00BF .align 2 + 761 .L73: + 762 0084 00380240 .word 1073887232 + 763 0088 00700040 .word 1073770496 + 764 008c 00010C00 .word 786688 + 765 0090 FCF3FFFF .word -3076 + 766 0094 00ED00E0 .word -536810240 + 767 .cfi_endproc + 768 .LFE151: + 770 .section .text.HAL_PWREx_GetVoltageRange,"ax",%progbits + 771 .align 1 + 772 .global HAL_PWREx_GetVoltageRange + 773 .syntax unified + 774 .thumb + 775 .thumb_func + 776 .fpu fpv5-d16 + 778 HAL_PWREx_GetVoltageRange: + 779 .LFB152: + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Returns Voltage Scaling Range. + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval VOS bit field (PWR_REGULATOR_VOLTAGE_SCALE1, PWR_REGULATOR_VOLTAGE_SCALE2 or + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * PWR_REGULATOR_VOLTAGE_SCALE3)PWR_REGULATOR_VOLTAGE_SCALE1 + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** uint32_t HAL_PWREx_GetVoltageRange(void) + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 780 .loc 1 445 1 view -0 + 781 .cfi_startproc + 782 @ args = 0, pretend = 0, frame = 0 + 783 @ frame_needed = 0, uses_anonymous_args = 0 + 784 @ link register save eliminated. + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return (PWR->CR1 & PWR_CR1_VOS); + 785 .loc 1 446 3 view .LVU180 + 786 .loc 1 446 15 is_stmt 0 view .LVU181 + 787 0000 024B ldr r3, .L76 + 788 0002 1868 ldr r0, [r3] + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 789 .loc 1 447 1 view .LVU182 + 790 0004 00F44040 and r0, r0, #49152 + 791 0008 7047 bx lr + 792 .L77: + 793 000a 00BF .align 2 + 794 .L76: + 795 000c 00700040 .word 1073770496 + 796 .cfi_endproc + 797 .LFE152: + 799 .section .text.HAL_PWREx_ControlVoltageScaling,"ax",%progbits + 800 .align 1 + 801 .global HAL_PWREx_ControlVoltageScaling + 802 .syntax unified + 803 .thumb + 804 .thumb_func + ARM GAS /tmp/cc97GYnP.s page 23 + + + 805 .fpu fpv5-d16 + 807 HAL_PWREx_ControlVoltageScaling: + 808 .LVL39: + 809 .LFB153: + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /** + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @brief Configures the main internal regulator output voltage. + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @param VoltageScaling specifies the regulator output voltage to achieve + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * a tradeoff between performance and power consumption. + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * This parameter can be one of the following values: + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @arg PWR_REGULATOR_VOLTAGE_SCALE1: Regulator voltage output range 1 mode, + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * typical output voltage at 1.4 V, + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * system frequency up to 216 MHz. + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @arg PWR_REGULATOR_VOLTAGE_SCALE2: Regulator voltage output range 2 mode, + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * typical output voltage at 1.2 V, + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * system frequency up to 180 MHz. + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @arg PWR_REGULATOR_VOLTAGE_SCALE3: Regulator voltage output range 2 mode, + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * typical output voltage at 1.00 V, + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * system frequency up to 151 MHz. + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note To update the system clock frequency(SYSCLK): + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * - Set the HSI or HSE as system clock frequency using the HAL_RCC_ClockConfig(). + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * - Call the HAL_RCC_OscConfig() to configure the PLL. + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * - Call HAL_PWREx_ConfigVoltageScaling() API to adjust the voltage scale. + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * - Set the new system clock frequency using the HAL_RCC_ClockConfig(). + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note The scale can be modified only when the HSI or HSE clock source is selected + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * as system clock source, otherwise the API returns HAL_ERROR. + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note When the PLL is OFF, the voltage scale 3 is automatically selected and the VOS bits + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * value in the PWR_CR1 register are not taken in account. + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note This API forces the PLL state ON to allow the possibility to configure the voltage scale + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @note The new voltage scale is active only when the PLL is ON. + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** * @retval HAL Status + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** */ + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** HAL_StatusTypeDef HAL_PWREx_ControlVoltageScaling(uint32_t VoltageScaling) + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 810 .loc 1 477 1 is_stmt 1 view -0 + 811 .cfi_startproc + 812 @ args = 0, pretend = 0, frame = 8 + 813 @ frame_needed = 0, uses_anonymous_args = 0 + 814 .loc 1 477 1 is_stmt 0 view .LVU184 + 815 0000 30B5 push {r4, r5, lr} + 816 .LCFI14: + 817 .cfi_def_cfa_offset 12 + 818 .cfi_offset 4, -12 + 819 .cfi_offset 5, -8 + 820 .cfi_offset 14, -4 + 821 0002 83B0 sub sp, sp, #12 + 822 .LCFI15: + 823 .cfi_def_cfa_offset 24 + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** uint32_t tickstart = 0; + 824 .loc 1 478 3 is_stmt 1 view .LVU185 + 825 .LVL40: + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** assert_param(IS_PWR_REGULATOR_VOLTAGE(VoltageScaling)); + 826 .loc 1 480 3 view .LVU186 + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable Power ctrl clock */ + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_RCC_PWR_CLK_ENABLE(); + ARM GAS /tmp/cc97GYnP.s page 24 + + + 827 .loc 1 483 3 view .LVU187 + 828 .LBB5: + 829 .loc 1 483 3 view .LVU188 + 830 .loc 1 483 3 view .LVU189 + 831 0004 2C4B ldr r3, .L94 + 832 0006 1A6C ldr r2, [r3, #64] + 833 0008 42F08052 orr r2, r2, #268435456 + 834 000c 1A64 str r2, [r3, #64] + 835 .loc 1 483 3 view .LVU190 + 836 000e 1A6C ldr r2, [r3, #64] + 837 0010 02F08052 and r2, r2, #268435456 + 838 0014 0092 str r2, [sp] + 839 .loc 1 483 3 view .LVU191 + 840 0016 009A ldr r2, [sp] + 841 .LBE5: + 842 .loc 1 483 3 view .LVU192 + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Check if the PLL is used as system clock or not */ + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL) + 843 .loc 1 486 3 view .LVU193 + 844 .loc 1 486 6 is_stmt 0 view .LVU194 + 845 0018 9B68 ldr r3, [r3, #8] + 846 001a 03F00C03 and r3, r3, #12 + 847 .loc 1 486 5 view .LVU195 + 848 001e 082B cmp r3, #8 + 849 0020 46D0 beq .L86 + 850 0022 0546 mov r5, r0 + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Disable the main PLL */ + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_RCC_PLL_DISABLE(); + 851 .loc 1 489 5 is_stmt 1 view .LVU196 + 852 0024 244A ldr r2, .L94 + 853 0026 1368 ldr r3, [r2] + 854 0028 23F08073 bic r3, r3, #16777216 + 855 002c 1360 str r3, [r2] + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Get Start Tick */ + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tickstart = HAL_GetTick(); + 856 .loc 1 492 5 view .LVU197 + 857 .loc 1 492 17 is_stmt 0 view .LVU198 + 858 002e FFF7FEFF bl HAL_GetTick + 859 .LVL41: + 860 .loc 1 492 17 view .LVU199 + 861 0032 0446 mov r4, r0 + 862 .LVL42: + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Wait till PLL is disabled */ + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 863 .loc 1 494 5 is_stmt 1 view .LVU200 + 864 .L80: + 865 .loc 1 494 10 view .LVU201 + 866 .loc 1 494 11 is_stmt 0 view .LVU202 + 867 0034 204B ldr r3, .L94 + 868 0036 1B68 ldr r3, [r3] + 869 .loc 1 494 10 view .LVU203 + 870 0038 13F0007F tst r3, #33554432 + 871 003c 06D0 beq .L91 + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + ARM GAS /tmp/cc97GYnP.s page 25 + + + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 872 .loc 1 496 7 is_stmt 1 view .LVU204 + 873 .loc 1 496 11 is_stmt 0 view .LVU205 + 874 003e FFF7FEFF bl HAL_GetTick + 875 .LVL43: + 876 .loc 1 496 25 view .LVU206 + 877 0042 031B subs r3, r0, r4 + 878 .loc 1 496 9 view .LVU207 + 879 0044 022B cmp r3, #2 + 880 0046 F5D9 bls .L80 + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_TIMEOUT; + 881 .loc 1 498 16 view .LVU208 + 882 0048 0320 movs r0, #3 + 883 004a 32E0 b .L79 + 884 .L91: + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Set Range */ + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_PWR_VOLTAGESCALING_CONFIG(VoltageScaling); + 885 .loc 1 503 5 is_stmt 1 view .LVU209 + 886 .LBB6: + 887 .loc 1 503 5 view .LVU210 + 888 .loc 1 503 5 view .LVU211 + 889 004c 1B4A ldr r2, .L94+4 + 890 004e 1368 ldr r3, [r2] + 891 0050 23F44043 bic r3, r3, #49152 + 892 0054 1D43 orrs r5, r5, r3 + 893 .LVL44: + 894 .loc 1 503 5 is_stmt 0 view .LVU212 + 895 0056 1560 str r5, [r2] + 896 .loc 1 503 5 is_stmt 1 view .LVU213 + 897 0058 1368 ldr r3, [r2] + 898 005a 03F44043 and r3, r3, #49152 + 899 005e 0193 str r3, [sp, #4] + 900 .loc 1 503 5 view .LVU214 + 901 0060 019B ldr r3, [sp, #4] + 902 .LBE6: + 903 .loc 1 503 5 view .LVU215 + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Enable the main PLL */ + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** __HAL_RCC_PLL_ENABLE(); + 904 .loc 1 506 5 view .LVU216 + 905 0062 02F5E432 add r2, r2, #116736 + 906 0066 1368 ldr r3, [r2] + 907 0068 43F08073 orr r3, r3, #16777216 + 908 006c 1360 str r3, [r2] + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Get Start Tick */ + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tickstart = HAL_GetTick(); + 909 .loc 1 509 5 view .LVU217 + 910 .loc 1 509 17 is_stmt 0 view .LVU218 + 911 006e FFF7FEFF bl HAL_GetTick + 912 .LVL45: + 913 0072 0446 mov r4, r0 + 914 .LVL46: + ARM GAS /tmp/cc97GYnP.s page 26 + + + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Wait till PLL is ready */ + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + 915 .loc 1 511 5 is_stmt 1 view .LVU219 + 916 .L82: + 917 .loc 1 511 10 view .LVU220 + 918 .loc 1 511 11 is_stmt 0 view .LVU221 + 919 0074 104B ldr r3, .L94 + 920 0076 1B68 ldr r3, [r3] + 921 .loc 1 511 10 view .LVU222 + 922 0078 13F0007F tst r3, #33554432 + 923 007c 06D1 bne .L92 + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) + 924 .loc 1 513 7 is_stmt 1 view .LVU223 + 925 .loc 1 513 11 is_stmt 0 view .LVU224 + 926 007e FFF7FEFF bl HAL_GetTick + 927 .LVL47: + 928 .loc 1 513 25 view .LVU225 + 929 0082 001B subs r0, r0, r4 + 930 .loc 1 513 9 view .LVU226 + 931 0084 0228 cmp r0, #2 + 932 0086 F5D9 bls .L82 + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_TIMEOUT; + 933 .loc 1 515 16 view .LVU227 + 934 0088 0320 movs r0, #3 + 935 008a 12E0 b .L79 + 936 .L92: + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** /* Get Start Tick */ + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** tickstart = HAL_GetTick(); + 937 .loc 1 520 5 is_stmt 1 view .LVU228 + 938 .loc 1 520 17 is_stmt 0 view .LVU229 + 939 008c FFF7FEFF bl HAL_GetTick + 940 .LVL48: + 941 0090 0446 mov r4, r0 + 942 .LVL49: + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** while((__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY) == RESET)) + 943 .loc 1 521 5 is_stmt 1 view .LVU230 + 944 .L84: + 945 .loc 1 521 10 view .LVU231 + 946 .loc 1 521 12 is_stmt 0 view .LVU232 + 947 0092 0A4B ldr r3, .L94+4 + 948 0094 5B68 ldr r3, [r3, #4] + 949 .loc 1 521 10 view .LVU233 + 950 0096 13F4804F tst r3, #16384 + 951 009a 07D1 bne .L93 + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** if((HAL_GetTick() - tickstart ) > PWR_VOSRDY_TIMEOUT_VALUE) + 952 .loc 1 523 7 is_stmt 1 view .LVU234 + 953 .loc 1 523 11 is_stmt 0 view .LVU235 + 954 009c FFF7FEFF bl HAL_GetTick + 955 .LVL50: + 956 .loc 1 523 25 view .LVU236 + 957 00a0 001B subs r0, r0, r4 + ARM GAS /tmp/cc97GYnP.s page 27 + + + 958 .loc 1 523 9 view .LVU237 + 959 00a2 B0F57A7F cmp r0, #1000 + 960 00a6 F4D9 bls .L84 + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_TIMEOUT; + 961 .loc 1 525 16 view .LVU238 + 962 00a8 0320 movs r0, #3 + 963 00aa 02E0 b .L79 + 964 .L93: + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** else + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** { + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_ERROR; + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** return HAL_OK; + 965 .loc 1 533 10 view .LVU239 + 966 00ac 0020 movs r0, #0 + 967 00ae 00E0 b .L79 + 968 .LVL51: + 969 .L86: + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 970 .loc 1 531 12 view .LVU240 + 971 00b0 0120 movs r0, #1 + 972 .LVL52: + 973 .L79: + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c **** } + 974 .loc 1 534 1 view .LVU241 + 975 00b2 03B0 add sp, sp, #12 + 976 .LCFI16: + 977 .cfi_def_cfa_offset 12 + 978 @ sp needed + 979 00b4 30BD pop {r4, r5, pc} + 980 .L95: + 981 00b6 00BF .align 2 + 982 .L94: + 983 00b8 00380240 .word 1073887232 + 984 00bc 00700040 .word 1073770496 + 985 .cfi_endproc + 986 .LFE153: + 988 .text + 989 .Letext0: + 990 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 991 .file 3 "Drivers/CMSIS/Include/core_cm7.h" + 992 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 993 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 994 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 995 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + ARM GAS /tmp/cc97GYnP.s page 28 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_pwr_ex.c + /tmp/cc97GYnP.s:17 .text.HAL_PWREx_EnableBkUpReg:0000000000000000 $t + /tmp/cc97GYnP.s:25 .text.HAL_PWREx_EnableBkUpReg:0000000000000000 HAL_PWREx_EnableBkUpReg + /tmp/cc97GYnP.s:88 .text.HAL_PWREx_EnableBkUpReg:0000000000000038 $d + /tmp/cc97GYnP.s:93 .text.HAL_PWREx_DisableBkUpReg:0000000000000000 $t + /tmp/cc97GYnP.s:100 .text.HAL_PWREx_DisableBkUpReg:0000000000000000 HAL_PWREx_DisableBkUpReg + /tmp/cc97GYnP.s:162 .text.HAL_PWREx_DisableBkUpReg:0000000000000038 $d + /tmp/cc97GYnP.s:167 .text.HAL_PWREx_EnableFlashPowerDown:0000000000000000 $t + /tmp/cc97GYnP.s:174 .text.HAL_PWREx_EnableFlashPowerDown:0000000000000000 HAL_PWREx_EnableFlashPowerDown + /tmp/cc97GYnP.s:192 .text.HAL_PWREx_EnableFlashPowerDown:000000000000000c $d + /tmp/cc97GYnP.s:197 .text.HAL_PWREx_DisableFlashPowerDown:0000000000000000 $t + /tmp/cc97GYnP.s:204 .text.HAL_PWREx_DisableFlashPowerDown:0000000000000000 HAL_PWREx_DisableFlashPowerDown + /tmp/cc97GYnP.s:222 .text.HAL_PWREx_DisableFlashPowerDown:000000000000000c $d + /tmp/cc97GYnP.s:227 .text.HAL_PWREx_EnableMainRegulatorLowVoltage:0000000000000000 $t + /tmp/cc97GYnP.s:234 .text.HAL_PWREx_EnableMainRegulatorLowVoltage:0000000000000000 HAL_PWREx_EnableMainRegulatorLowVoltage + /tmp/cc97GYnP.s:252 .text.HAL_PWREx_EnableMainRegulatorLowVoltage:000000000000000c $d + /tmp/cc97GYnP.s:257 .text.HAL_PWREx_DisableMainRegulatorLowVoltage:0000000000000000 $t + /tmp/cc97GYnP.s:264 .text.HAL_PWREx_DisableMainRegulatorLowVoltage:0000000000000000 HAL_PWREx_DisableMainRegulatorLowVoltage + /tmp/cc97GYnP.s:282 .text.HAL_PWREx_DisableMainRegulatorLowVoltage:000000000000000c $d + /tmp/cc97GYnP.s:287 .text.HAL_PWREx_EnableLowRegulatorLowVoltage:0000000000000000 $t + /tmp/cc97GYnP.s:294 .text.HAL_PWREx_EnableLowRegulatorLowVoltage:0000000000000000 HAL_PWREx_EnableLowRegulatorLowVoltage + /tmp/cc97GYnP.s:312 .text.HAL_PWREx_EnableLowRegulatorLowVoltage:000000000000000c $d + /tmp/cc97GYnP.s:317 .text.HAL_PWREx_DisableLowRegulatorLowVoltage:0000000000000000 $t + /tmp/cc97GYnP.s:324 .text.HAL_PWREx_DisableLowRegulatorLowVoltage:0000000000000000 HAL_PWREx_DisableLowRegulatorLowVoltage + /tmp/cc97GYnP.s:342 .text.HAL_PWREx_DisableLowRegulatorLowVoltage:000000000000000c $d + /tmp/cc97GYnP.s:347 .text.HAL_PWREx_EnableOverDrive:0000000000000000 $t + /tmp/cc97GYnP.s:354 .text.HAL_PWREx_EnableOverDrive:0000000000000000 HAL_PWREx_EnableOverDrive + /tmp/cc97GYnP.s:468 .text.HAL_PWREx_EnableOverDrive:0000000000000074 $d + /tmp/cc97GYnP.s:474 .text.HAL_PWREx_DisableOverDrive:0000000000000000 $t + /tmp/cc97GYnP.s:481 .text.HAL_PWREx_DisableOverDrive:0000000000000000 HAL_PWREx_DisableOverDrive + /tmp/cc97GYnP.s:595 .text.HAL_PWREx_DisableOverDrive:0000000000000074 $d + /tmp/cc97GYnP.s:601 .text.HAL_PWREx_EnterUnderDriveSTOPMode:0000000000000000 $t + /tmp/cc97GYnP.s:608 .text.HAL_PWREx_EnterUnderDriveSTOPMode:0000000000000000 HAL_PWREx_EnterUnderDriveSTOPMode + /tmp/cc97GYnP.s:762 .text.HAL_PWREx_EnterUnderDriveSTOPMode:0000000000000084 $d + /tmp/cc97GYnP.s:771 .text.HAL_PWREx_GetVoltageRange:0000000000000000 $t + /tmp/cc97GYnP.s:778 .text.HAL_PWREx_GetVoltageRange:0000000000000000 HAL_PWREx_GetVoltageRange + /tmp/cc97GYnP.s:795 .text.HAL_PWREx_GetVoltageRange:000000000000000c $d + /tmp/cc97GYnP.s:800 .text.HAL_PWREx_ControlVoltageScaling:0000000000000000 $t + /tmp/cc97GYnP.s:807 .text.HAL_PWREx_ControlVoltageScaling:0000000000000000 HAL_PWREx_ControlVoltageScaling + /tmp/cc97GYnP.s:983 .text.HAL_PWREx_ControlVoltageScaling:00000000000000b8 $d + +UNDEFINED SYMBOLS +HAL_GetTick diff --git a/build/stm32f7xx_hal_pwr_ex.o b/build/stm32f7xx_hal_pwr_ex.o new file mode 100644 index 0000000..4dec45c Binary files /dev/null and b/build/stm32f7xx_hal_pwr_ex.o differ diff --git a/build/stm32f7xx_hal_rcc.d b/build/stm32f7xx_hal_rcc.d new file mode 100644 index 0000000..26ab7e4 --- /dev/null +++ b/build/stm32f7xx_hal_rcc.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_rcc.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_rcc.lst b/build/stm32f7xx_hal_rcc.lst new file mode 100644 index 0000000..0b57b10 --- /dev/null +++ b/build/stm32f7xx_hal_rcc.lst @@ -0,0 +1,5256 @@ +ARM GAS /tmp/ccgleihc.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_rcc.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.HAL_RCC_DeInit,"ax",%progbits + 17 .align 1 + 18 .global HAL_RCC_DeInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 HAL_RCC_DeInit: + 26 .LFB141: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @file stm32f7xx_hal_rcc.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief RCC HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * functionalities of the Reset and Clock Control (RCC) peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + Initialization and de-initialization functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + Peripheral Control functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** @verbatim + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** ============================================================================== + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** ##### RCC specific features ##### + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** ============================================================================== + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** [..] + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** After reset the device is running from Internal High Speed oscillator + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (HSI 16MHz) with Flash 0 wait state, Flash prefetch buffer, D-Cache + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** and I-Cache are disabled, and all peripherals are off except internal + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** SRAM, Flash and JTAG. + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) There is no prescaler on High speed (AHB) and Low speed (APB) buses; + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** all peripherals mapped on these buses are running at HSI speed. + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) The clock for all peripherals is switched off, except the SRAM and FLASH. + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) All GPIOs are in input floating state, except the JTAG pins which + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** are assigned to be used for debug purpose. + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** [..] + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** Once the device started from reset, the user application has to: + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) Configure the clock source to be used to drive the System clock + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (if the application needs higher frequency/performance) + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) Configure the System clock frequency and Flash settings + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) Configure the AHB and APB buses prescalers + ARM GAS /tmp/ccgleihc.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) Enable the clock for the peripheral(s) to be used + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) Configure the clock source(s) for peripherals which clocks are not + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** derived from the System clock (I2S, RTC, ADC, USB OTG FS/SDIO/RNG) + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** ##### RCC Limitations ##### + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** ============================================================================== + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** [..] + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** A delay between an RCC peripheral clock enable and the effective peripheral + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** enabling should be taken into account in order to manage the peripheral read/write + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** from/to registers. + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) This delay depends on the peripheral mapping. + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) If peripheral is mapped on AHB: the delay is 2 AHB clock cycle + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** after the clock enable bit is set on the hardware register + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) If peripheral is mapped on APB: the delay is 2 APB clock cycle + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** after the clock enable bit is set on the hardware register + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** [..] + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** Implemented Workaround: + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+) For AHB & APB peripherals, a dummy read to the peripheral register has been + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** inserted in each __HAL_RCC_PPP_CLK_ENABLE() macro. + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** @endverbatim + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** ****************************************************************************** + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @attention + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * Copyright (c) 2017 STMicroelectronics. + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * All rights reserved. + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * This software is licensed under terms that can be found in the LICENSE file in + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * the root directory of this software component. + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** ****************************************************************************** + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Includes ------------------------------------------------------------------*/ + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #include "stm32f7xx_hal.h" + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** @addtogroup STM32F7xx_HAL_Driver + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @{ + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** @defgroup RCC RCC + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief RCC HAL module driver + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @{ + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #ifdef HAL_RCC_MODULE_ENABLED + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Private typedef -----------------------------------------------------------*/ + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Private define ------------------------------------------------------------*/ + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Private macro -------------------------------------------------------------*/ + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** @defgroup RCC_Private_Macros RCC Private Macros + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @{ + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #define MCO1_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE() + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #define MCO1_GPIO_PORT GPIOA + ARM GAS /tmp/ccgleihc.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #define MCO1_PIN GPIO_PIN_8 + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #define MCO2_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #define MCO2_GPIO_PORT GPIOC + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #define MCO2_PIN GPIO_PIN_9 + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @} + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Private variables ---------------------------------------------------------*/ + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** @defgroup RCC_Private_Variables RCC Private Variables + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @{ + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @} + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Private function prototypes -----------------------------------------------*/ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Exported functions ---------------------------------------------------------*/ + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** @defgroup RCC_Exported_Functions RCC Exported Functions + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @{ + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** @defgroup RCC_Exported_Functions_Group1 Initialization and de-initialization functions + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Initialization and Configuration functions + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** @verbatim + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** =============================================================================== + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** ##### Initialization and de-initialization functions ##### + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** =============================================================================== + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** [..] + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** This section provides functions allowing to configure the internal/external oscillators + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (HSE, HSI, LSE, LSI, PLL, CSS and MCO) and the System buses clocks (SYSCLK, AHB, APB1 + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** and APB2). + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** [..] Internal/external clock and PLL configuration + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (#) HSI (high-speed internal), 16 MHz factory-trimmed RC used directly or through + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** the PLL as System clock source. + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (#) LSI (low-speed internal), 32 KHz low consumption RC used as IWDG and/or RTC + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** clock source. + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (#) HSE (high-speed external), 4 to 26 MHz crystal oscillator used directly or + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** through the PLL as System clock source. Can be used also as RTC clock source. + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (#) LSE (low-speed external), 32 KHz oscillator used as RTC clock source. + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (#) PLL (clocked by HSI or HSE), featuring two different output clocks: + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (++) The first output is used to generate the high speed system clock (up to 216 MHz) + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (++) The second output is used to generate the clock for the USB OTG FS (48 MHz), + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** the random analog generator (<=48 MHz) and the SDIO (<= 48 MHz). + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (#) CSS (Clock security system), once enable using the function HAL_RCC_EnableCSS() + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** and if a HSE clock failure occurs(HSE used directly or through PLL as System + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** clock source), the System clock is automatically switched to HSI and an interrupt + ARM GAS /tmp/ccgleihc.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** is generated if enabled. The interrupt is linked to the Cortex-M7 NMI + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (Non-Maskable Interrupt) exception vector. + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (#) MCO1 (microcontroller clock output), used to output HSI, LSE, HSE or PLL + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** clock (through a configurable prescaler) on PA8 pin. + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (#) MCO2 (microcontroller clock output), used to output HSE, PLL, SYSCLK or PLLI2S + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** clock (through a configurable prescaler) on PC9 pin. + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** [..] System, AHB and APB buses clocks configuration + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (#) Several clock sources can be used to drive the System clock (SYSCLK): HSI, + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** HSE and PLL. + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** The AHB clock (HCLK) is derived from System clock through configurable + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** prescaler and used to clock the CPU, memory and peripherals mapped + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** on AHB bus (DMA, GPIO...). APB1 (PCLK1) and APB2 (PCLK2) clocks are derived + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** from AHB clock through configurable prescalers and used to clock + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** the peripherals mapped on these buses. You can use + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** "HAL_RCC_GetSysClockFreq()" function to retrieve the frequencies of these clocks. + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** -@- All the peripheral clocks are derived from the System clock (SYSCLK) except: + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+@) I2S: the I2S clock can be derived either from a specific PLL (PLLI2S) or + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** from an external clock mapped on the I2S_CKIN pin. + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** You have to use __HAL_RCC_PLLI2S_CONFIG() macro to configure this clock. + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+@) SAI: the SAI clock can be derived either from a specific PLL (PLLI2S) or (PLLSAI) o + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** from an external clock mapped on the I2S_CKIN pin. + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** You have to use __HAL_RCC_PLLI2S_CONFIG() macro to configure this clock. + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+@) RTC: the RTC clock can be derived either from the LSI, LSE or HSE clock + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** divided by 2 to 31. You have to use __HAL_RCC_RTC_CONFIG() and __HAL_RCC_RTC_ENABLE() + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** macros to configure this clock. + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+@) USB OTG FS, SDIO and RTC: USB OTG FS require a frequency equal to 48 MHz + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** to work correctly, while the SDIO require a frequency equal or lower than + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** to 48. This clock is derived of the main PLL through PLLQ divider. + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (+@) IWDG clock which is always the LSI clock. + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** @endverbatim + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @{ + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Resets the RCC clock configuration to the default reset state. + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note The default reset state of the clock configuration is given below: + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * - HSI ON and used as system clock source + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * - HSE, PLL, PLLI2S and PLLSAI OFF + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * - AHB, APB1 and APB2 prescaler set to 1. + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * - CSS, MCO1 and MCO2 OFF + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * - All interrupts disabled + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note This function doesn't modify the configuration of the + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * - Peripheral clocks + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * - LSI, LSE and RTC clocks + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval None + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** HAL_StatusTypeDef HAL_RCC_DeInit(void) + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 28 .loc 1 197 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 0000 38B5 push {r3, r4, r5, lr} + ARM GAS /tmp/ccgleihc.s page 5 + + + 33 .LCFI0: + 34 .cfi_def_cfa_offset 16 + 35 .cfi_offset 3, -16 + 36 .cfi_offset 4, -12 + 37 .cfi_offset 5, -8 + 38 .cfi_offset 14, -4 + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t tickstart; + 39 .loc 1 198 3 view .LVU1 + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick */ + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 40 .loc 1 201 3 view .LVU2 + 41 .loc 1 201 15 is_stmt 0 view .LVU3 + 42 0002 FFF7FEFF bl HAL_GetTick + 43 .LVL0: + 44 0006 0446 mov r4, r0 + 45 .LVL1: + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Set HSION bit to the reset value */ + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** SET_BIT(RCC->CR, RCC_CR_HSION); + 46 .loc 1 204 3 is_stmt 1 view .LVU4 + 47 0008 4E4A ldr r2, .L28 + 48 000a 1368 ldr r3, [r2] + 49 000c 43F00103 orr r3, r3, #1 + 50 0010 1360 str r3, [r2] + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till HSI is ready */ + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == RESET) + 51 .loc 1 207 3 view .LVU5 + 52 .LVL2: + 53 .L2: + 54 .loc 1 207 9 view .LVU6 + 55 .loc 1 207 10 is_stmt 0 view .LVU7 + 56 0012 4C4B ldr r3, .L28 + 57 0014 1B68 ldr r3, [r3] + 58 .loc 1 207 9 view .LVU8 + 59 0016 13F0020F tst r3, #2 + 60 001a 06D1 bne .L22 + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + 61 .loc 1 209 5 is_stmt 1 view .LVU9 + 62 .loc 1 209 10 is_stmt 0 view .LVU10 + 63 001c FFF7FEFF bl HAL_GetTick + 64 .LVL3: + 65 .loc 1 209 24 view .LVU11 + 66 0020 001B subs r0, r0, r4 + 67 .loc 1 209 8 view .LVU12 + 68 0022 0228 cmp r0, #2 + 69 0024 F5D9 bls .L2 + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 70 .loc 1 211 14 view .LVU13 + 71 0026 0320 movs r0, #3 + 72 .L3: + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + ARM GAS /tmp/ccgleihc.s page 6 + + + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Set HSITRIM[4:0] bits to the reset value */ + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** SET_BIT(RCC->CR, RCC_CR_HSITRIM_4); + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick */ + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Reset CFGR register */ + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** CLEAR_REG(RCC->CFGR); + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till clock switch is ready */ + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (READ_BIT(RCC->CFGR, RCC_CFGR_SWS) != RESET) + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick */ + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Clear HSEON, HSEBYP and CSSON bits */ + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** CLEAR_BIT(RCC->CR, RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_CSSON); + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till HSE is disabled */ + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (READ_BIT(RCC->CR, RCC_CR_HSERDY) != RESET) + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick */ + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Clear PLLON bit */ + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** CLEAR_BIT(RCC->CR, RCC_CR_PLLON); + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till PLL is disabled */ + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (READ_BIT(RCC->CR, RCC_CR_PLLRDY) != RESET) + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick */ + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Reset PLLI2SON bit */ + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** CLEAR_BIT(RCC->CR, RCC_CR_PLLI2SON); + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till PLLI2S is disabled */ + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) != RESET) + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + ARM GAS /tmp/ccgleihc.s page 7 + + + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick */ + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Reset PLLSAI bit */ + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** CLEAR_BIT(RCC->CR, RCC_CR_PLLSAION); + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till PLLSAI is disabled */ + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (READ_BIT(RCC->CR, RCC_CR_PLLSAIRDY) != RESET) + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Once PLL, PLLI2S and PLLSAI are OFF, reset PLLCFGR register to default value */ + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC->PLLCFGR = RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLN_6 | RCC_PLLCFGR_PLLN_7 | RCC_PLLCFGR_PLLQ_2 + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Reset PLLI2SCFGR register to default value */ + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC->PLLI2SCFGR = RCC_PLLI2SCFGR_PLLI2SN_6 | RCC_PLLI2SCFGR_PLLI2SN_7 | RCC_PLLI2SCFGR_PLLI2SQ_2 + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Reset PLLSAICFGR register to default value */ + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC->PLLSAICFGR = RCC_PLLSAICFGR_PLLSAIN_6 | RCC_PLLSAICFGR_PLLSAIN_7 | RCC_PLLSAICFGR_PLLSAIQ_2 + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Disable all interrupts */ + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** CLEAR_BIT(RCC->CIR, RCC_CIR_LSIRDYIE | RCC_CIR_LSERDYIE | RCC_CIR_HSIRDYIE | RCC_CIR_HSERDYIE | R + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Clear all interrupt flags */ + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** SET_BIT(RCC->CIR, RCC_CIR_LSIRDYC | RCC_CIR_LSERDYC | RCC_CIR_HSIRDYC | RCC_CIR_HSERDYC | RCC_CIR + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Clear LSION bit */ + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Reset all CSR flags */ + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** SET_BIT(RCC->CSR, RCC_CSR_RMVF); + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Update the SystemCoreClock global variable */ + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** SystemCoreClock = HSI_VALUE; + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Adapt Systick interrupt period */ + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (HAL_InitTick(uwTickPrio) != HAL_OK) + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_OK; + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 73 .loc 1 326 1 view .LVU14 + 74 0028 38BD pop {r3, r4, r5, pc} + ARM GAS /tmp/ccgleihc.s page 8 + + + 75 .LVL4: + 76 .L22: + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 77 .loc 1 216 3 is_stmt 1 view .LVU15 + 78 002a 464D ldr r5, .L28 + 79 002c 2B68 ldr r3, [r5] + 80 002e 43F08003 orr r3, r3, #128 + 81 0032 2B60 str r3, [r5] + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 82 .loc 1 219 3 view .LVU16 + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 83 .loc 1 219 15 is_stmt 0 view .LVU17 + 84 0034 FFF7FEFF bl HAL_GetTick + 85 .LVL5: + 86 0038 0446 mov r4, r0 + 87 .LVL6: + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 88 .loc 1 222 3 is_stmt 1 view .LVU18 + 89 003a 0023 movs r3, #0 + 90 003c AB60 str r3, [r5, #8] + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 91 .loc 1 225 3 view .LVU19 + 92 .LVL7: + 93 .L5: + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 94 .loc 1 225 9 view .LVU20 + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 95 .loc 1 225 10 is_stmt 0 view .LVU21 + 96 003e 414B ldr r3, .L28 + 97 0040 9B68 ldr r3, [r3, #8] + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 98 .loc 1 225 9 view .LVU22 + 99 0042 13F00C0F tst r3, #12 + 100 0046 08D0 beq .L23 + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 101 .loc 1 227 5 is_stmt 1 view .LVU23 + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 102 .loc 1 227 10 is_stmt 0 view .LVU24 + 103 0048 FFF7FEFF bl HAL_GetTick + 104 .LVL8: + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 105 .loc 1 227 24 view .LVU25 + 106 004c 001B subs r0, r0, r4 + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 107 .loc 1 227 8 view .LVU26 + 108 004e 41F28833 movw r3, #5000 + 109 0052 9842 cmp r0, r3 + 110 0054 F3D9 bls .L5 + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 111 .loc 1 229 14 view .LVU27 + 112 0056 0320 movs r0, #3 + 113 0058 E6E7 b .L3 + 114 .L23: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 115 .loc 1 234 3 is_stmt 1 view .LVU28 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 116 .loc 1 234 15 is_stmt 0 view .LVU29 + ARM GAS /tmp/ccgleihc.s page 9 + + + 117 005a FFF7FEFF bl HAL_GetTick + 118 .LVL9: + 119 005e 0446 mov r4, r0 + 120 .LVL10: + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 121 .loc 1 237 3 is_stmt 1 view .LVU30 + 122 0060 384A ldr r2, .L28 + 123 0062 1368 ldr r3, [r2] + 124 0064 23F45023 bic r3, r3, #851968 + 125 0068 1360 str r3, [r2] + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 126 .loc 1 240 3 view .LVU31 + 127 .LVL11: + 128 .L7: + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 129 .loc 1 240 9 view .LVU32 + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 130 .loc 1 240 10 is_stmt 0 view .LVU33 + 131 006a 364B ldr r3, .L28 + 132 006c 1B68 ldr r3, [r3] + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 133 .loc 1 240 9 view .LVU34 + 134 006e 13F4003F tst r3, #131072 + 135 0072 06D0 beq .L24 + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 136 .loc 1 242 5 is_stmt 1 view .LVU35 + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 137 .loc 1 242 10 is_stmt 0 view .LVU36 + 138 0074 FFF7FEFF bl HAL_GetTick + 139 .LVL12: + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 140 .loc 1 242 24 view .LVU37 + 141 0078 001B subs r0, r0, r4 + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 142 .loc 1 242 8 view .LVU38 + 143 007a 6428 cmp r0, #100 + 144 007c F5D9 bls .L7 + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 145 .loc 1 244 14 view .LVU39 + 146 007e 0320 movs r0, #3 + 147 0080 D2E7 b .L3 + 148 .L24: + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 149 .loc 1 249 3 is_stmt 1 view .LVU40 + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 150 .loc 1 249 15 is_stmt 0 view .LVU41 + 151 0082 FFF7FEFF bl HAL_GetTick + 152 .LVL13: + 153 0086 0446 mov r4, r0 + 154 .LVL14: + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 155 .loc 1 252 3 is_stmt 1 view .LVU42 + 156 0088 2E4A ldr r2, .L28 + 157 008a 1368 ldr r3, [r2] + 158 008c 23F08073 bic r3, r3, #16777216 + 159 0090 1360 str r3, [r2] + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + ARM GAS /tmp/ccgleihc.s page 10 + + + 160 .loc 1 255 3 view .LVU43 + 161 .LVL15: + 162 .L9: + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 163 .loc 1 255 9 view .LVU44 + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 164 .loc 1 255 10 is_stmt 0 view .LVU45 + 165 0092 2C4B ldr r3, .L28 + 166 0094 1B68 ldr r3, [r3] + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 167 .loc 1 255 9 view .LVU46 + 168 0096 13F0007F tst r3, #33554432 + 169 009a 06D0 beq .L25 + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 170 .loc 1 257 5 is_stmt 1 view .LVU47 + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 171 .loc 1 257 10 is_stmt 0 view .LVU48 + 172 009c FFF7FEFF bl HAL_GetTick + 173 .LVL16: + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 174 .loc 1 257 24 view .LVU49 + 175 00a0 001B subs r0, r0, r4 + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 176 .loc 1 257 8 view .LVU50 + 177 00a2 0228 cmp r0, #2 + 178 00a4 F5D9 bls .L9 + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 179 .loc 1 259 14 view .LVU51 + 180 00a6 0320 movs r0, #3 + 181 00a8 BEE7 b .L3 + 182 .L25: + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 183 .loc 1 264 3 is_stmt 1 view .LVU52 + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 184 .loc 1 264 15 is_stmt 0 view .LVU53 + 185 00aa FFF7FEFF bl HAL_GetTick + 186 .LVL17: + 187 00ae 0446 mov r4, r0 + 188 .LVL18: + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 189 .loc 1 267 3 is_stmt 1 view .LVU54 + 190 00b0 244A ldr r2, .L28 + 191 00b2 1368 ldr r3, [r2] + 192 00b4 23F08063 bic r3, r3, #67108864 + 193 00b8 1360 str r3, [r2] + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 194 .loc 1 270 3 view .LVU55 + 195 .LVL19: + 196 .L11: + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 197 .loc 1 270 9 view .LVU56 + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 198 .loc 1 270 10 is_stmt 0 view .LVU57 + 199 00ba 224B ldr r3, .L28 + 200 00bc 1B68 ldr r3, [r3] + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 201 .loc 1 270 9 view .LVU58 + ARM GAS /tmp/ccgleihc.s page 11 + + + 202 00be 13F0006F tst r3, #134217728 + 203 00c2 06D0 beq .L26 + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 204 .loc 1 272 5 is_stmt 1 view .LVU59 + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 205 .loc 1 272 10 is_stmt 0 view .LVU60 + 206 00c4 FFF7FEFF bl HAL_GetTick + 207 .LVL20: + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 208 .loc 1 272 24 view .LVU61 + 209 00c8 001B subs r0, r0, r4 + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 210 .loc 1 272 8 view .LVU62 + 211 00ca 6428 cmp r0, #100 + 212 00cc F5D9 bls .L11 + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 213 .loc 1 274 14 view .LVU63 + 214 00ce 0320 movs r0, #3 + 215 00d0 AAE7 b .L3 + 216 .L26: + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 217 .loc 1 279 3 is_stmt 1 view .LVU64 + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 218 .loc 1 279 15 is_stmt 0 view .LVU65 + 219 00d2 FFF7FEFF bl HAL_GetTick + 220 .LVL21: + 221 00d6 0446 mov r4, r0 + 222 .LVL22: + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 223 .loc 1 282 3 is_stmt 1 view .LVU66 + 224 00d8 1A4A ldr r2, .L28 + 225 00da 1368 ldr r3, [r2] + 226 00dc 23F08053 bic r3, r3, #268435456 + 227 00e0 1360 str r3, [r2] + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 228 .loc 1 285 3 view .LVU67 + 229 .LVL23: + 230 .L13: + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 231 .loc 1 285 9 view .LVU68 + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 232 .loc 1 285 10 is_stmt 0 view .LVU69 + 233 00e2 184B ldr r3, .L28 + 234 00e4 1B68 ldr r3, [r3] + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 235 .loc 1 285 9 view .LVU70 + 236 00e6 13F0005F tst r3, #536870912 + 237 00ea 06D0 beq .L27 + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 238 .loc 1 287 5 is_stmt 1 view .LVU71 + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 239 .loc 1 287 10 is_stmt 0 view .LVU72 + 240 00ec FFF7FEFF bl HAL_GetTick + 241 .LVL24: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 242 .loc 1 287 24 view .LVU73 + 243 00f0 001B subs r0, r0, r4 + ARM GAS /tmp/ccgleihc.s page 12 + + + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 244 .loc 1 287 8 view .LVU74 + 245 00f2 6428 cmp r0, #100 + 246 00f4 F5D9 bls .L13 + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 247 .loc 1 289 14 view .LVU75 + 248 00f6 0320 movs r0, #3 + 249 00f8 96E7 b .L3 + 250 .L27: + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 251 .loc 1 294 3 is_stmt 1 view .LVU76 + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 252 .loc 1 294 16 is_stmt 0 view .LVU77 + 253 00fa 124B ldr r3, .L28 + 254 00fc 124A ldr r2, .L28+4 + 255 00fe 5A60 str r2, [r3, #4] + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 256 .loc 1 297 3 is_stmt 1 view .LVU78 + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 257 .loc 1 297 19 is_stmt 0 view .LVU79 + 258 0100 103A subs r2, r2, #16 + 259 0102 C3F88420 str r2, [r3, #132] + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 260 .loc 1 300 3 is_stmt 1 view .LVU80 + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 261 .loc 1 300 19 is_stmt 0 view .LVU81 + 262 0106 C3F88820 str r2, [r3, #136] + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 263 .loc 1 303 3 is_stmt 1 view .LVU82 + 264 010a DA68 ldr r2, [r3, #12] + 265 010c 22F4FE42 bic r2, r2, #32512 + 266 0110 DA60 str r2, [r3, #12] + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 267 .loc 1 306 3 view .LVU83 + 268 0112 DA68 ldr r2, [r3, #12] + 269 0114 42F47F02 orr r2, r2, #16711680 + 270 0118 DA60 str r2, [r3, #12] + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 271 .loc 1 309 3 view .LVU84 + 272 011a 5A6F ldr r2, [r3, #116] + 273 011c 22F00102 bic r2, r2, #1 + 274 0120 5A67 str r2, [r3, #116] + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 275 .loc 1 312 3 view .LVU85 + 276 0122 5A6F ldr r2, [r3, #116] + 277 0124 42F08072 orr r2, r2, #16777216 + 278 0128 5A67 str r2, [r3, #116] + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 279 .loc 1 315 3 view .LVU86 + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 280 .loc 1 315 19 is_stmt 0 view .LVU87 + 281 012a 084B ldr r3, .L28+8 + 282 012c 084A ldr r2, .L28+12 + 283 012e 1A60 str r2, [r3] + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 284 .loc 1 318 3 is_stmt 1 view .LVU88 + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + ARM GAS /tmp/ccgleihc.s page 13 + + + 285 .loc 1 318 7 is_stmt 0 view .LVU89 + 286 0130 084B ldr r3, .L28+16 + 287 0132 1868 ldr r0, [r3] + 288 0134 FFF7FEFF bl HAL_InitTick + 289 .LVL25: + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 290 .loc 1 318 6 view .LVU90 + 291 0138 0028 cmp r0, #0 + 292 013a 3FF475AF beq .L3 + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 293 .loc 1 320 12 view .LVU91 + 294 013e 0120 movs r0, #1 + 295 0140 72E7 b .L3 + 296 .L29: + 297 0142 00BF .align 2 + 298 .L28: + 299 0144 00380240 .word 1073887232 + 300 0148 10300024 .word 603992080 + 301 014c 00000000 .word SystemCoreClock + 302 0150 0024F400 .word 16000000 + 303 0154 00000000 .word uwTickPrio + 304 .cfi_endproc + 305 .LFE141: + 307 .section .text.HAL_RCC_OscConfig,"ax",%progbits + 308 .align 1 + 309 .global HAL_RCC_OscConfig + 310 .syntax unified + 311 .thumb + 312 .thumb_func + 313 .fpu fpv5-d16 + 315 HAL_RCC_OscConfig: + 316 .LVL26: + 317 .LFB142: + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Initializes the RCC Oscillators according to the specified parameters in the + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * RCC_OscInitTypeDef. + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @param RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * contains the configuration information for the RCC Oscillators. + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note The PLL is not disabled when used as system clock. + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note Transitions LSE Bypass to LSE On and LSE On to LSE Bypass are not + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * supported by this function. User should request a transition to LSE Off + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * first and then LSE On or LSE Bypass. + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note Transition HSE Bypass to HSE On and HSE On to HSE Bypass are not + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * supported by this function. User should request a transition to HSE Off + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * first and then HSE On or HSE Bypass. + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval HAL status + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 318 .loc 1 343 1 is_stmt 1 view -0 + 319 .cfi_startproc + 320 @ args = 0, pretend = 0, frame = 8 + 321 @ frame_needed = 0, uses_anonymous_args = 0 + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t tickstart; + 322 .loc 1 344 3 view .LVU93 + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t pll_config; + ARM GAS /tmp/ccgleihc.s page 14 + + + 323 .loc 1 345 3 view .LVU94 + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** FlagStatus pwrclkchanged = RESET; + 324 .loc 1 346 3 view .LVU95 + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check Null pointer */ + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (RCC_OscInitStruct == NULL) + 325 .loc 1 349 3 view .LVU96 + 326 .loc 1 349 6 is_stmt 0 view .LVU97 + 327 0000 0028 cmp r0, #0 + 328 0002 00F00682 beq .L82 + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t tickstart; + 329 .loc 1 343 1 view .LVU98 + 330 0006 70B5 push {r4, r5, r6, lr} + 331 .LCFI1: + 332 .cfi_def_cfa_offset 16 + 333 .cfi_offset 4, -16 + 334 .cfi_offset 5, -12 + 335 .cfi_offset 6, -8 + 336 .cfi_offset 14, -4 + 337 0008 82B0 sub sp, sp, #8 + 338 .LCFI2: + 339 .cfi_def_cfa_offset 24 + 340 000a 0446 mov r4, r0 + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the parameters */ + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); + 341 .loc 1 355 3 is_stmt 1 view .LVU99 + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /*------------------------------- HSE Configuration ------------------------*/ + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) + 342 .loc 1 358 3 view .LVU100 + 343 .loc 1 358 26 is_stmt 0 view .LVU101 + 344 000c 0368 ldr r3, [r0] + 345 .loc 1 358 6 view .LVU102 + 346 000e 13F0010F tst r3, #1 + 347 0012 29D0 beq .L32 + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the parameters */ + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); + 348 .loc 1 361 5 is_stmt 1 view .LVU103 + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* When the HSE is used as system clock or clock source for PLL, It can not be disabled */ + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) + 349 .loc 1 363 5 view .LVU104 + 350 .loc 1 363 10 is_stmt 0 view .LVU105 + 351 0014 954B ldr r3, .L124 + 352 0016 9B68 ldr r3, [r3, #8] + 353 0018 03F00C03 and r3, r3, #12 + 354 .loc 1 363 8 view .LVU106 + 355 001c 042B cmp r3, #4 + 356 001e 1AD0 beq .L33 + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & R + 357 .loc 1 364 14 view .LVU107 + 358 0020 924B ldr r3, .L124 + 359 0022 9B68 ldr r3, [r3, #8] + ARM GAS /tmp/ccgleihc.s page 15 + + + 360 0024 03F00C03 and r3, r3, #12 + 361 .loc 1 364 9 view .LVU108 + 362 0028 082B cmp r3, #8 + 363 002a 0FD0 beq .L110 + 364 .L34: + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Set the new HSE configuration ---------------------------------------*/ + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); + 365 .loc 1 374 7 is_stmt 1 view .LVU109 + 366 .loc 1 374 7 view .LVU110 + 367 002c 6368 ldr r3, [r4, #4] + 368 002e B3F5803F cmp r3, #65536 + 369 0032 40D0 beq .L111 + 370 .loc 1 374 7 discriminator 2 view .LVU111 + 371 0034 002B cmp r3, #0 + 372 0036 54D1 bne .L37 + 373 .loc 1 374 7 discriminator 4 view .LVU112 + 374 0038 8C4B ldr r3, .L124 + 375 003a 1A68 ldr r2, [r3] + 376 003c 22F48032 bic r2, r2, #65536 + 377 0040 1A60 str r2, [r3] + 378 .loc 1 374 7 discriminator 4 view .LVU113 + 379 0042 1A68 ldr r2, [r3] + 380 0044 22F48022 bic r2, r2, #262144 + 381 0048 1A60 str r2, [r3] + 382 004a 39E0 b .L36 + 383 .L110: + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & R + 384 .loc 1 364 87 is_stmt 0 discriminator 1 view .LVU114 + 385 004c 874B ldr r3, .L124 + 386 004e 5B68 ldr r3, [r3, #4] + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & R + 387 .loc 1 364 79 discriminator 1 view .LVU115 + 388 0050 13F4800F tst r3, #4194304 + 389 0054 EAD0 beq .L34 + 390 .L33: + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 391 .loc 1 366 7 is_stmt 1 view .LVU116 + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 392 .loc 1 366 12 is_stmt 0 view .LVU117 + 393 0056 854B ldr r3, .L124 + 394 0058 1B68 ldr r3, [r3] + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 395 .loc 1 366 10 view .LVU118 + 396 005a 13F4003F tst r3, #131072 + 397 005e 03D0 beq .L32 + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 398 .loc 1 366 79 discriminator 1 view .LVU119 + 399 0060 6368 ldr r3, [r4, #4] + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + ARM GAS /tmp/ccgleihc.s page 16 + + + 400 .loc 1 366 58 discriminator 1 view .LVU120 + 401 0062 002B cmp r3, #0 + 402 0064 00F0D781 beq .L112 + 403 .LVL27: + 404 .L32: + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the HSE State */ + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF) + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till HSE is ready */ + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till HSE is bypassed or disabled */ + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE) + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /*----------------------------- HSI Configuration --------------------------*/ + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) + 405 .loc 1 408 3 is_stmt 1 view .LVU121 + 406 .loc 1 408 26 is_stmt 0 view .LVU122 + 407 0068 2368 ldr r3, [r4] + 408 .loc 1 408 6 view .LVU123 + 409 006a 13F0020F tst r3, #2 + 410 006e 74D0 beq .L44 + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the parameters */ + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); + 411 .loc 1 411 5 is_stmt 1 view .LVU124 + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); + 412 .loc 1 412 5 view .LVU125 + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock * + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) + 413 .loc 1 415 5 view .LVU126 + 414 .loc 1 415 10 is_stmt 0 view .LVU127 + 415 0070 7E4B ldr r3, .L124 + ARM GAS /tmp/ccgleihc.s page 17 + + + 416 0072 9B68 ldr r3, [r3, #8] + 417 .loc 1 415 8 view .LVU128 + 418 0074 13F00C0F tst r3, #12 + 419 0078 5ED0 beq .L45 + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** || ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & R + 420 .loc 1 416 14 view .LVU129 + 421 007a 7C4B ldr r3, .L124 + 422 007c 9B68 ldr r3, [r3, #8] + 423 007e 03F00C03 and r3, r3, #12 + 424 .loc 1 416 9 view .LVU130 + 425 0082 082B cmp r3, #8 + 426 0084 53D0 beq .L113 + 427 .L46: + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* When HSI is used as system clock it will not disabled */ + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Otherwise, just the calibration is allowed */ + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the HSI State */ + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((RCC_OscInitStruct->HSIState) != RCC_HSI_OFF) + 428 .loc 1 433 7 is_stmt 1 view .LVU131 + 429 .loc 1 433 29 is_stmt 0 view .LVU132 + 430 0086 E368 ldr r3, [r4, #12] + 431 .loc 1 433 10 view .LVU133 + 432 0088 002B cmp r3, #0 + 433 008a 00F08980 beq .L48 + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Enable the Internal High Speed oscillator (HSI). */ + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_HSI_ENABLE(); + 434 .loc 1 436 9 is_stmt 1 view .LVU134 + 435 008e 774A ldr r2, .L124 + 436 0090 1368 ldr r3, [r2] + 437 0092 43F00103 orr r3, r3, #1 + 438 0096 1360 str r3, [r2] + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 439 .loc 1 439 9 view .LVU135 + 440 .loc 1 439 21 is_stmt 0 view .LVU136 + 441 0098 FFF7FEFF bl HAL_GetTick + 442 .LVL28: + 443 009c 0546 mov r5, r0 + 444 .LVL29: + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till HSI is ready */ + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) + 445 .loc 1 442 9 is_stmt 1 view .LVU137 + ARM GAS /tmp/ccgleihc.s page 18 + + + 446 .L49: + 447 .loc 1 442 15 view .LVU138 + 448 .loc 1 442 16 is_stmt 0 view .LVU139 + 449 009e 734B ldr r3, .L124 + 450 00a0 1B68 ldr r3, [r3] + 451 .loc 1 442 15 view .LVU140 + 452 00a2 13F0020F tst r3, #2 + 453 00a6 72D1 bne .L114 + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + 454 .loc 1 444 11 is_stmt 1 view .LVU141 + 455 .loc 1 444 16 is_stmt 0 view .LVU142 + 456 00a8 FFF7FEFF bl HAL_GetTick + 457 .LVL30: + 458 .loc 1 444 30 view .LVU143 + 459 00ac 401B subs r0, r0, r5 + 460 .loc 1 444 14 view .LVU144 + 461 00ae 0228 cmp r0, #2 + 462 00b0 F5D9 bls .L49 + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 463 .loc 1 446 20 view .LVU145 + 464 00b2 0320 movs r0, #3 + 465 00b4 B4E1 b .L31 + 466 .LVL31: + 467 .L111: + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 468 .loc 1 374 7 is_stmt 1 discriminator 1 view .LVU146 + 469 00b6 6D4A ldr r2, .L124 + 470 00b8 1368 ldr r3, [r2] + 471 00ba 43F48033 orr r3, r3, #65536 + 472 00be 1360 str r3, [r2] + 473 .L36: + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 474 .loc 1 374 7 discriminator 10 view .LVU147 + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 475 .loc 1 377 7 discriminator 10 view .LVU148 + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 476 .loc 1 377 28 is_stmt 0 discriminator 10 view .LVU149 + 477 00c0 6368 ldr r3, [r4, #4] + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 478 .loc 1 377 10 discriminator 10 view .LVU150 + 479 00c2 2BB3 cbz r3, .L39 + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 480 .loc 1 380 9 is_stmt 1 view .LVU151 + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 481 .loc 1 380 21 is_stmt 0 view .LVU152 + 482 00c4 FFF7FEFF bl HAL_GetTick + 483 .LVL32: + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 484 .loc 1 380 21 view .LVU153 + 485 00c8 0546 mov r5, r0 + 486 .LVL33: + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 487 .loc 1 383 9 is_stmt 1 view .LVU154 + 488 .L40: + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + ARM GAS /tmp/ccgleihc.s page 19 + + + 489 .loc 1 383 15 view .LVU155 + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 490 .loc 1 383 16 is_stmt 0 view .LVU156 + 491 00ca 684B ldr r3, .L124 + 492 00cc 1B68 ldr r3, [r3] + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 493 .loc 1 383 15 view .LVU157 + 494 00ce 13F4003F tst r3, #131072 + 495 00d2 C9D1 bne .L32 + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 496 .loc 1 385 11 is_stmt 1 view .LVU158 + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 497 .loc 1 385 16 is_stmt 0 view .LVU159 + 498 00d4 FFF7FEFF bl HAL_GetTick + 499 .LVL34: + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 500 .loc 1 385 30 view .LVU160 + 501 00d8 401B subs r0, r0, r5 + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 502 .loc 1 385 14 view .LVU161 + 503 00da 6428 cmp r0, #100 + 504 00dc F5D9 bls .L40 + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 505 .loc 1 387 20 view .LVU162 + 506 00de 0320 movs r0, #3 + 507 00e0 9EE1 b .L31 + 508 .LVL35: + 509 .L37: + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 510 .loc 1 374 7 is_stmt 1 discriminator 5 view .LVU163 + 511 00e2 B3F5A02F cmp r3, #327680 + 512 00e6 09D0 beq .L115 + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 513 .loc 1 374 7 discriminator 8 view .LVU164 + 514 00e8 604B ldr r3, .L124 + 515 00ea 1A68 ldr r2, [r3] + 516 00ec 22F48032 bic r2, r2, #65536 + 517 00f0 1A60 str r2, [r3] + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 518 .loc 1 374 7 discriminator 8 view .LVU165 + 519 00f2 1A68 ldr r2, [r3] + 520 00f4 22F48022 bic r2, r2, #262144 + 521 00f8 1A60 str r2, [r3] + 522 00fa E1E7 b .L36 + 523 .L115: + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 524 .loc 1 374 7 discriminator 7 view .LVU166 + 525 00fc 5B4B ldr r3, .L124 + 526 00fe 1A68 ldr r2, [r3] + 527 0100 42F48022 orr r2, r2, #262144 + 528 0104 1A60 str r2, [r3] + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 529 .loc 1 374 7 discriminator 7 view .LVU167 + 530 0106 1A68 ldr r2, [r3] + 531 0108 42F48032 orr r2, r2, #65536 + 532 010c 1A60 str r2, [r3] + 533 010e D7E7 b .L36 + ARM GAS /tmp/ccgleihc.s page 20 + + + 534 .L39: + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 535 .loc 1 394 9 view .LVU168 + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 536 .loc 1 394 21 is_stmt 0 view .LVU169 + 537 0110 FFF7FEFF bl HAL_GetTick + 538 .LVL36: + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 539 .loc 1 394 21 view .LVU170 + 540 0114 0546 mov r5, r0 + 541 .LVL37: + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 542 .loc 1 397 9 is_stmt 1 view .LVU171 + 543 .L42: + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 544 .loc 1 397 15 view .LVU172 + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 545 .loc 1 397 16 is_stmt 0 view .LVU173 + 546 0116 554B ldr r3, .L124 + 547 0118 1B68 ldr r3, [r3] + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 548 .loc 1 397 15 view .LVU174 + 549 011a 13F4003F tst r3, #131072 + 550 011e A3D0 beq .L32 + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 551 .loc 1 399 11 is_stmt 1 view .LVU175 + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 552 .loc 1 399 16 is_stmt 0 view .LVU176 + 553 0120 FFF7FEFF bl HAL_GetTick + 554 .LVL38: + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 555 .loc 1 399 30 view .LVU177 + 556 0124 401B subs r0, r0, r5 + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 557 .loc 1 399 14 view .LVU178 + 558 0126 6428 cmp r0, #100 + 559 0128 F5D9 bls .L42 + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 560 .loc 1 401 20 view .LVU179 + 561 012a 0320 movs r0, #3 + 562 012c 78E1 b .L31 + 563 .LVL39: + 564 .L113: + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 565 .loc 1 416 87 discriminator 1 view .LVU180 + 566 012e 4F4B ldr r3, .L124 + 567 0130 5B68 ldr r3, [r3, #4] + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 568 .loc 1 416 79 discriminator 1 view .LVU181 + 569 0132 13F4800F tst r3, #4194304 + 570 0136 A6D1 bne .L46 + 571 .L45: + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 572 .loc 1 419 7 is_stmt 1 view .LVU182 + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 573 .loc 1 419 12 is_stmt 0 view .LVU183 + 574 0138 4C4B ldr r3, .L124 + ARM GAS /tmp/ccgleihc.s page 21 + + + 575 013a 1B68 ldr r3, [r3] + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 576 .loc 1 419 10 view .LVU184 + 577 013c 13F0020F tst r3, #2 + 578 0140 03D0 beq .L47 + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 579 .loc 1 419 79 discriminator 1 view .LVU185 + 580 0142 E368 ldr r3, [r4, #12] + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 581 .loc 1 419 58 discriminator 1 view .LVU186 + 582 0144 012B cmp r3, #1 + 583 0146 40F06881 bne .L86 + 584 .L47: + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 585 .loc 1 427 9 is_stmt 1 view .LVU187 + 586 014a 484A ldr r2, .L124 + 587 014c 1368 ldr r3, [r2] + 588 014e 23F0F803 bic r3, r3, #248 + 589 0152 2169 ldr r1, [r4, #16] + 590 0154 43EAC103 orr r3, r3, r1, lsl #3 + 591 0158 1360 str r3, [r2] + 592 .L44: + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Disable the Internal High Speed oscillator (HSI). */ + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_HSI_DISABLE(); + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till HSI is ready */ + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE) + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /*------------------------------ LSI Configuration -------------------------*/ + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) + 593 .loc 1 473 3 view .LVU188 + 594 .loc 1 473 26 is_stmt 0 view .LVU189 + 595 015a 2368 ldr r3, [r4] + 596 .loc 1 473 6 view .LVU190 + 597 015c 13F0080F tst r3, #8 + 598 0160 46D0 beq .L53 + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the parameters */ + ARM GAS /tmp/ccgleihc.s page 22 + + + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); + 599 .loc 1 476 5 is_stmt 1 view .LVU191 + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the LSI State */ + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((RCC_OscInitStruct->LSIState) != RCC_LSI_OFF) + 600 .loc 1 479 5 view .LVU192 + 601 .loc 1 479 27 is_stmt 0 view .LVU193 + 602 0162 6369 ldr r3, [r4, #20] + 603 .loc 1 479 8 view .LVU194 + 604 0164 83B3 cbz r3, .L54 + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Enable the Internal Low Speed oscillator (LSI). */ + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_LSI_ENABLE(); + 605 .loc 1 482 7 is_stmt 1 view .LVU195 + 606 0166 414A ldr r2, .L124 + 607 0168 536F ldr r3, [r2, #116] + 608 016a 43F00103 orr r3, r3, #1 + 609 016e 5367 str r3, [r2, #116] + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 610 .loc 1 485 7 view .LVU196 + 611 .loc 1 485 19 is_stmt 0 view .LVU197 + 612 0170 FFF7FEFF bl HAL_GetTick + 613 .LVL40: + 614 0174 0546 mov r5, r0 + 615 .LVL41: + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till LSI is ready */ + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET) + 616 .loc 1 488 7 is_stmt 1 view .LVU198 + 617 .L55: + 618 .loc 1 488 13 view .LVU199 + 619 .loc 1 488 14 is_stmt 0 view .LVU200 + 620 0176 3D4B ldr r3, .L124 + 621 0178 5B6F ldr r3, [r3, #116] + 622 .loc 1 488 13 view .LVU201 + 623 017a 13F0020F tst r3, #2 + 624 017e 37D1 bne .L53 + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + 625 .loc 1 490 9 is_stmt 1 view .LVU202 + 626 .loc 1 490 14 is_stmt 0 view .LVU203 + 627 0180 FFF7FEFF bl HAL_GetTick + 628 .LVL42: + 629 .loc 1 490 28 view .LVU204 + 630 0184 401B subs r0, r0, r5 + 631 .loc 1 490 12 view .LVU205 + 632 0186 0228 cmp r0, #2 + 633 0188 F5D9 bls .L55 + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 634 .loc 1 492 18 view .LVU206 + 635 018a 0320 movs r0, #3 + 636 018c 48E1 b .L31 + 637 .L114: + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + ARM GAS /tmp/ccgleihc.s page 23 + + + 638 .loc 1 451 9 is_stmt 1 view .LVU207 + 639 018e 374A ldr r2, .L124 + 640 0190 1368 ldr r3, [r2] + 641 0192 23F0F803 bic r3, r3, #248 + 642 0196 2169 ldr r1, [r4, #16] + 643 0198 43EAC103 orr r3, r3, r1, lsl #3 + 644 019c 1360 str r3, [r2] + 645 019e DCE7 b .L44 + 646 .LVL43: + 647 .L48: + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 648 .loc 1 456 9 view .LVU208 + 649 01a0 324A ldr r2, .L124 + 650 01a2 1368 ldr r3, [r2] + 651 01a4 23F00103 bic r3, r3, #1 + 652 01a8 1360 str r3, [r2] + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 653 .loc 1 459 9 view .LVU209 + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 654 .loc 1 459 21 is_stmt 0 view .LVU210 + 655 01aa FFF7FEFF bl HAL_GetTick + 656 .LVL44: + 657 01ae 0546 mov r5, r0 + 658 .LVL45: + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 659 .loc 1 462 9 is_stmt 1 view .LVU211 + 660 .L51: + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 661 .loc 1 462 15 view .LVU212 + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 662 .loc 1 462 16 is_stmt 0 view .LVU213 + 663 01b0 2E4B ldr r3, .L124 + 664 01b2 1B68 ldr r3, [r3] + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 665 .loc 1 462 15 view .LVU214 + 666 01b4 13F0020F tst r3, #2 + 667 01b8 CFD0 beq .L44 + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 668 .loc 1 464 11 is_stmt 1 view .LVU215 + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 669 .loc 1 464 16 is_stmt 0 view .LVU216 + 670 01ba FFF7FEFF bl HAL_GetTick + 671 .LVL46: + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 672 .loc 1 464 30 view .LVU217 + 673 01be 401B subs r0, r0, r5 + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 674 .loc 1 464 14 view .LVU218 + 675 01c0 0228 cmp r0, #2 + 676 01c2 F5D9 bls .L51 + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 677 .loc 1 466 20 view .LVU219 + 678 01c4 0320 movs r0, #3 + 679 01c6 2BE1 b .L31 + 680 .LVL47: + 681 .L54: + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + ARM GAS /tmp/ccgleihc.s page 24 + + + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Disable the Internal Low Speed oscillator (LSI). */ + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_LSI_DISABLE(); + 682 .loc 1 499 7 is_stmt 1 view .LVU220 + 683 01c8 284A ldr r2, .L124 + 684 01ca 536F ldr r3, [r2, #116] + 685 01cc 23F00103 bic r3, r3, #1 + 686 01d0 5367 str r3, [r2, #116] + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 687 .loc 1 502 7 view .LVU221 + 688 .loc 1 502 19 is_stmt 0 view .LVU222 + 689 01d2 FFF7FEFF bl HAL_GetTick + 690 .LVL48: + 691 01d6 0546 mov r5, r0 + 692 .LVL49: + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till LSI is ready */ + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET) + 693 .loc 1 505 7 is_stmt 1 view .LVU223 + 694 .L57: + 695 .loc 1 505 13 view .LVU224 + 696 .loc 1 505 14 is_stmt 0 view .LVU225 + 697 01d8 244B ldr r3, .L124 + 698 01da 5B6F ldr r3, [r3, #116] + 699 .loc 1 505 13 view .LVU226 + 700 01dc 13F0020F tst r3, #2 + 701 01e0 06D0 beq .L53 + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE) + 702 .loc 1 507 9 is_stmt 1 view .LVU227 + 703 .loc 1 507 14 is_stmt 0 view .LVU228 + 704 01e2 FFF7FEFF bl HAL_GetTick + 705 .LVL50: + 706 .loc 1 507 28 view .LVU229 + 707 01e6 401B subs r0, r0, r5 + 708 .loc 1 507 12 view .LVU230 + 709 01e8 0228 cmp r0, #2 + 710 01ea F5D9 bls .L57 + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 711 .loc 1 509 18 view .LVU231 + 712 01ec 0320 movs r0, #3 + 713 01ee 17E1 b .L31 + 714 .LVL51: + 715 .L53: + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /*------------------------------ LSE Configuration -------------------------*/ + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) + 716 .loc 1 515 3 is_stmt 1 view .LVU232 + ARM GAS /tmp/ccgleihc.s page 25 + + + 717 .loc 1 515 26 is_stmt 0 view .LVU233 + 718 01f0 2368 ldr r3, [r4] + 719 .loc 1 515 6 view .LVU234 + 720 01f2 13F0040F tst r3, #4 + 721 01f6 7DD0 beq .L59 + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the parameters */ + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); + 722 .loc 1 518 5 is_stmt 1 view .LVU235 + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Update LSE configuration in Backup Domain control register */ + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Requires to enable write access to Backup Domain of necessary */ + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (__HAL_RCC_PWR_IS_CLK_DISABLED()) + 723 .loc 1 522 5 view .LVU236 + 724 .loc 1 522 9 is_stmt 0 view .LVU237 + 725 01f8 1C4B ldr r3, .L124 + 726 01fa 1B6C ldr r3, [r3, #64] + 727 .loc 1 522 8 view .LVU238 + 728 01fc 13F0805F tst r3, #268435456 + 729 0200 1ED1 bne .L91 + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Enable Power Clock*/ + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_PWR_CLK_ENABLE(); + 730 .loc 1 525 7 is_stmt 1 view .LVU239 + 731 .LBB4: + 732 .loc 1 525 7 view .LVU240 + 733 .loc 1 525 7 view .LVU241 + 734 0202 1A4B ldr r3, .L124 + 735 0204 1A6C ldr r2, [r3, #64] + 736 0206 42F08052 orr r2, r2, #268435456 + 737 020a 1A64 str r2, [r3, #64] + 738 .loc 1 525 7 view .LVU242 + 739 020c 1B6C ldr r3, [r3, #64] + 740 020e 03F08053 and r3, r3, #268435456 + 741 0212 0193 str r3, [sp, #4] + 742 .loc 1 525 7 view .LVU243 + 743 0214 019B ldr r3, [sp, #4] + 744 .LBE4: + 745 .loc 1 525 7 view .LVU244 + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** pwrclkchanged = SET; + 746 .loc 1 526 7 view .LVU245 + 747 .LVL52: + 748 .loc 1 526 21 is_stmt 0 view .LVU246 + 749 0216 0125 movs r5, #1 + 750 .LVL53: + 751 .L60: + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) + 752 .loc 1 529 5 is_stmt 1 view .LVU247 + 753 .loc 1 529 9 is_stmt 0 view .LVU248 + 754 0218 154B ldr r3, .L124+4 + 755 021a 1B68 ldr r3, [r3] + 756 .loc 1 529 8 view .LVU249 + 757 021c 13F4807F tst r3, #256 + 758 0220 10D0 beq .L116 + 759 .L61: + ARM GAS /tmp/ccgleihc.s page 26 + + + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Enable write access to Backup domain */ + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** PWR->CR1 |= PWR_CR1_DBP; + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait for Backup domain Write protection disable */ + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP)) + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Set the new LSE configuration -----------------------------------------*/ + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); + 760 .loc 1 547 5 is_stmt 1 view .LVU250 + 761 .loc 1 547 5 view .LVU251 + 762 0222 A368 ldr r3, [r4, #8] + 763 0224 012B cmp r3, #1 + 764 0226 25D0 beq .L117 + 765 .loc 1 547 5 discriminator 2 view .LVU252 + 766 0228 002B cmp r3, #0 + 767 022a 3BD1 bne .L66 + 768 .loc 1 547 5 discriminator 4 view .LVU253 + 769 022c 0F4B ldr r3, .L124 + 770 022e 1A6F ldr r2, [r3, #112] + 771 0230 22F00102 bic r2, r2, #1 + 772 0234 1A67 str r2, [r3, #112] + 773 .loc 1 547 5 discriminator 4 view .LVU254 + 774 0236 1A6F ldr r2, [r3, #112] + 775 0238 22F00402 bic r2, r2, #4 + 776 023c 1A67 str r2, [r3, #112] + 777 023e 1EE0 b .L65 + 778 .LVL54: + 779 .L91: + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 780 .loc 1 346 14 is_stmt 0 view .LVU255 + 781 0240 0025 movs r5, #0 + 782 0242 E9E7 b .L60 + 783 .LVL55: + 784 .L116: + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 785 .loc 1 532 7 is_stmt 1 view .LVU256 + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 786 .loc 1 532 16 is_stmt 0 view .LVU257 + 787 0244 0A4A ldr r2, .L124+4 + 788 0246 1368 ldr r3, [r2] + 789 0248 43F48073 orr r3, r3, #256 + 790 024c 1360 str r3, [r2] + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 791 .loc 1 535 7 is_stmt 1 view .LVU258 + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 792 .loc 1 535 19 is_stmt 0 view .LVU259 + 793 024e FFF7FEFF bl HAL_GetTick + ARM GAS /tmp/ccgleihc.s page 27 + + + 794 .LVL56: + 795 0252 0646 mov r6, r0 + 796 .LVL57: + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 797 .loc 1 537 7 is_stmt 1 view .LVU260 + 798 .L62: + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 799 .loc 1 537 13 view .LVU261 + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 800 .loc 1 537 14 is_stmt 0 view .LVU262 + 801 0254 064B ldr r3, .L124+4 + 802 0256 1B68 ldr r3, [r3] + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 803 .loc 1 537 13 view .LVU263 + 804 0258 13F4807F tst r3, #256 + 805 025c E1D1 bne .L61 + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 806 .loc 1 539 9 is_stmt 1 view .LVU264 + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 807 .loc 1 539 14 is_stmt 0 view .LVU265 + 808 025e FFF7FEFF bl HAL_GetTick + 809 .LVL58: + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 810 .loc 1 539 28 view .LVU266 + 811 0262 801B subs r0, r0, r6 + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 812 .loc 1 539 12 view .LVU267 + 813 0264 6428 cmp r0, #100 + 814 0266 F5D9 bls .L62 + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 815 .loc 1 541 18 view .LVU268 + 816 0268 0320 movs r0, #3 + 817 026a D9E0 b .L31 + 818 .L125: + 819 .align 2 + 820 .L124: + 821 026c 00380240 .word 1073887232 + 822 0270 00700040 .word 1073770496 + 823 .LVL59: + 824 .L117: + 825 .loc 1 547 5 is_stmt 1 discriminator 1 view .LVU269 + 826 0274 724A ldr r2, .L126 + 827 0276 136F ldr r3, [r2, #112] + 828 0278 43F00103 orr r3, r3, #1 + 829 027c 1367 str r3, [r2, #112] + 830 .L65: + 831 .loc 1 547 5 discriminator 10 view .LVU270 + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the LSE State */ + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF) + 832 .loc 1 549 5 discriminator 10 view .LVU271 + 833 .loc 1 549 27 is_stmt 0 discriminator 10 view .LVU272 + 834 027e A368 ldr r3, [r4, #8] + 835 .loc 1 549 8 discriminator 10 view .LVU273 + 836 0280 33B3 cbz r3, .L68 + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + ARM GAS /tmp/ccgleihc.s page 28 + + + 837 .loc 1 552 7 is_stmt 1 view .LVU274 + 838 .loc 1 552 19 is_stmt 0 view .LVU275 + 839 0282 FFF7FEFF bl HAL_GetTick + 840 .LVL60: + 841 0286 0646 mov r6, r0 + 842 .LVL61: + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till LSE is ready */ + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 843 .loc 1 555 7 is_stmt 1 view .LVU276 + 844 .L69: + 845 .loc 1 555 13 view .LVU277 + 846 .loc 1 555 14 is_stmt 0 view .LVU278 + 847 0288 6D4B ldr r3, .L126 + 848 028a 1B6F ldr r3, [r3, #112] + 849 .loc 1 555 13 view .LVU279 + 850 028c 13F0020F tst r3, #2 + 851 0290 2FD1 bne .L71 + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 852 .loc 1 557 9 is_stmt 1 view .LVU280 + 853 .loc 1 557 14 is_stmt 0 view .LVU281 + 854 0292 FFF7FEFF bl HAL_GetTick + 855 .LVL62: + 856 .loc 1 557 28 view .LVU282 + 857 0296 801B subs r0, r0, r6 + 858 .loc 1 557 12 view .LVU283 + 859 0298 41F28833 movw r3, #5000 + 860 029c 9842 cmp r0, r3 + 861 029e F3D9 bls .L69 + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 862 .loc 1 559 18 view .LVU284 + 863 02a0 0320 movs r0, #3 + 864 02a2 BDE0 b .L31 + 865 .LVL63: + 866 .L66: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the LSE State */ + 867 .loc 1 547 5 is_stmt 1 discriminator 5 view .LVU285 + 868 02a4 052B cmp r3, #5 + 869 02a6 09D0 beq .L118 + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the LSE State */ + 870 .loc 1 547 5 discriminator 8 view .LVU286 + 871 02a8 654B ldr r3, .L126 + 872 02aa 1A6F ldr r2, [r3, #112] + 873 02ac 22F00102 bic r2, r2, #1 + 874 02b0 1A67 str r2, [r3, #112] + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the LSE State */ + 875 .loc 1 547 5 discriminator 8 view .LVU287 + 876 02b2 1A6F ldr r2, [r3, #112] + 877 02b4 22F00402 bic r2, r2, #4 + 878 02b8 1A67 str r2, [r3, #112] + 879 02ba E0E7 b .L65 + 880 .L118: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the LSE State */ + 881 .loc 1 547 5 discriminator 7 view .LVU288 + 882 02bc 604B ldr r3, .L126 + ARM GAS /tmp/ccgleihc.s page 29 + + + 883 02be 1A6F ldr r2, [r3, #112] + 884 02c0 42F00402 orr r2, r2, #4 + 885 02c4 1A67 str r2, [r3, #112] + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the LSE State */ + 886 .loc 1 547 5 discriminator 7 view .LVU289 + 887 02c6 1A6F ldr r2, [r3, #112] + 888 02c8 42F00102 orr r2, r2, #1 + 889 02cc 1A67 str r2, [r3, #112] + 890 02ce D6E7 b .L65 + 891 .L68: + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 892 .loc 1 566 7 view .LVU290 + 893 .loc 1 566 19 is_stmt 0 view .LVU291 + 894 02d0 FFF7FEFF bl HAL_GetTick + 895 .LVL64: + 896 02d4 0646 mov r6, r0 + 897 .LVL65: + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till LSE is ready */ + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET) + 898 .loc 1 569 7 is_stmt 1 view .LVU292 + 899 .L72: + 900 .loc 1 569 13 view .LVU293 + 901 .loc 1 569 14 is_stmt 0 view .LVU294 + 902 02d6 5A4B ldr r3, .L126 + 903 02d8 1B6F ldr r3, [r3, #112] + 904 .loc 1 569 13 view .LVU295 + 905 02da 13F0020F tst r3, #2 + 906 02de 08D0 beq .L71 + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) + 907 .loc 1 571 9 is_stmt 1 view .LVU296 + 908 .loc 1 571 14 is_stmt 0 view .LVU297 + 909 02e0 FFF7FEFF bl HAL_GetTick + 910 .LVL66: + 911 .loc 1 571 28 view .LVU298 + 912 02e4 801B subs r0, r0, r6 + 913 .loc 1 571 12 view .LVU299 + 914 02e6 41F28833 movw r3, #5000 + 915 02ea 9842 cmp r0, r3 + 916 02ec F3D9 bls .L72 + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 917 .loc 1 573 18 view .LVU300 + 918 02ee 0320 movs r0, #3 + 919 02f0 96E0 b .L31 + 920 .L71: + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + ARM GAS /tmp/ccgleihc.s page 30 + + + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Restore clock configuration if changed */ + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (pwrclkchanged == SET) + 921 .loc 1 579 5 is_stmt 1 view .LVU301 + 922 .loc 1 579 8 is_stmt 0 view .LVU302 + 923 02f2 FDB9 cbnz r5, .L119 + 924 .LVL67: + 925 .L59: + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_PWR_CLK_DISABLE(); + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /*-------------------------------- PLL Configuration -----------------------*/ + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the parameters */ + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); + 926 .loc 1 586 3 is_stmt 1 view .LVU303 + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) + 927 .loc 1 587 3 view .LVU304 + 928 .loc 1 587 30 is_stmt 0 view .LVU305 + 929 02f4 A369 ldr r3, [r4, #24] + 930 .loc 1 587 6 view .LVU306 + 931 02f6 002B cmp r3, #0 + 932 02f8 00F09180 beq .L95 + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check if the PLL is used as system clock or not */ + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK) + 933 .loc 1 590 5 is_stmt 1 view .LVU307 + 934 .loc 1 590 9 is_stmt 0 view .LVU308 + 935 02fc 504A ldr r2, .L126 + 936 02fe 9268 ldr r2, [r2, #8] + 937 0300 02F00C02 and r2, r2, #12 + 938 .loc 1 590 8 view .LVU309 + 939 0304 082A cmp r2, #8 + 940 0306 59D0 beq .L74 + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) + 941 .loc 1 592 7 is_stmt 1 view .LVU310 + 942 .loc 1 592 10 is_stmt 0 view .LVU311 + 943 0308 022B cmp r3, #2 + 944 030a 19D0 beq .L120 + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the parameters */ + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource)); + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLLM_VALUE(RCC_OscInitStruct->PLL.PLLM)); + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN)); + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP)); + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #if defined (RCC_PLLCFGR_PLLR) + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR)); + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #endif + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Disable the main PLL. */ + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_PLL_DISABLE(); + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till PLL is ready */ + ARM GAS /tmp/ccgleihc.s page 31 + + + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Configure the main PLL clock source, multiplication and division factors. */ + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #if defined (RCC_PLLCFGR_PLLR) + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLM, + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLN, + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLP, + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLQ, + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLR); + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #else + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLM, + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLN, + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLP, + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLQ); + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #endif + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Enable the main PLL. */ + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_PLL_ENABLE(); + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till PLL is ready */ + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Disable the main PLL. */ + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_PLL_DISABLE(); + 945 .loc 1 653 9 is_stmt 1 view .LVU312 + 946 030c 4C4A ldr r2, .L126 + 947 030e 1368 ldr r3, [r2] + 948 0310 23F08073 bic r3, r3, #16777216 + 949 0314 1360 str r3, [r2] + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 950 .loc 1 656 9 view .LVU313 + 951 .loc 1 656 21 is_stmt 0 view .LVU314 + 952 0316 FFF7FEFF bl HAL_GetTick + 953 .LVL68: + 954 031a 0446 mov r4, r0 + 955 .LVL69: + ARM GAS /tmp/ccgleihc.s page 32 + + + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Wait till PLL is ready */ + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET) + 956 .loc 1 659 9 is_stmt 1 view .LVU315 + 957 .L80: + 958 .loc 1 659 15 view .LVU316 + 959 .loc 1 659 16 is_stmt 0 view .LVU317 + 960 031c 484B ldr r3, .L126 + 961 031e 1B68 ldr r3, [r3] + 962 .loc 1 659 15 view .LVU318 + 963 0320 13F0007F tst r3, #33554432 + 964 0324 48D0 beq .L121 + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE) + 965 .loc 1 661 11 is_stmt 1 view .LVU319 + 966 .loc 1 661 16 is_stmt 0 view .LVU320 + 967 0326 FFF7FEFF bl HAL_GetTick + 968 .LVL70: + 969 .loc 1 661 30 view .LVU321 + 970 032a 001B subs r0, r0, r4 + 971 .loc 1 661 14 view .LVU322 + 972 032c 0228 cmp r0, #2 + 973 032e F5D9 bls .L80 + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 974 .loc 1 663 20 view .LVU323 + 975 0330 0320 movs r0, #3 + 976 0332 75E0 b .L31 + 977 .LVL71: + 978 .L119: + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 979 .loc 1 581 7 is_stmt 1 view .LVU324 + 980 0334 424A ldr r2, .L126 + 981 0336 136C ldr r3, [r2, #64] + 982 0338 23F08053 bic r3, r3, #268435456 + 983 033c 1364 str r3, [r2, #64] + 984 033e D9E7 b .L59 + 985 .LVL72: + 986 .L120: + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLLM_VALUE(RCC_OscInitStruct->PLL.PLLM)); + 987 .loc 1 595 9 view .LVU325 + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLLN_VALUE(RCC_OscInitStruct->PLL.PLLN)); + 988 .loc 1 596 9 view .LVU326 + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLLP_VALUE(RCC_OscInitStruct->PLL.PLLP)); + 989 .loc 1 597 9 view .LVU327 + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); + 990 .loc 1 598 9 view .LVU328 + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #if defined (RCC_PLLCFGR_PLLR) + 991 .loc 1 599 9 view .LVU329 + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #endif + 992 .loc 1 601 9 view .LVU330 + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 993 .loc 1 605 9 view .LVU331 + 994 0340 3F4A ldr r2, .L126 + 995 0342 1368 ldr r3, [r2] + 996 0344 23F08073 bic r3, r3, #16777216 + 997 0348 1360 str r3, [r2] + ARM GAS /tmp/ccgleihc.s page 33 + + + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 998 .loc 1 608 9 view .LVU332 + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 999 .loc 1 608 21 is_stmt 0 view .LVU333 + 1000 034a FFF7FEFF bl HAL_GetTick + 1001 .LVL73: + 1002 034e 0546 mov r5, r0 + 1003 .LVL74: + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1004 .loc 1 611 9 is_stmt 1 view .LVU334 + 1005 .L76: + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1006 .loc 1 611 15 view .LVU335 + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1007 .loc 1 611 16 is_stmt 0 view .LVU336 + 1008 0350 3B4B ldr r3, .L126 + 1009 0352 1B68 ldr r3, [r3] + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1010 .loc 1 611 15 view .LVU337 + 1011 0354 13F0007F tst r3, #33554432 + 1012 0358 06D0 beq .L122 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1013 .loc 1 613 11 is_stmt 1 view .LVU338 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1014 .loc 1 613 16 is_stmt 0 view .LVU339 + 1015 035a FFF7FEFF bl HAL_GetTick + 1016 .LVL75: + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1017 .loc 1 613 30 view .LVU340 + 1018 035e 401B subs r0, r0, r5 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1019 .loc 1 613 14 view .LVU341 + 1020 0360 0228 cmp r0, #2 + 1021 0362 F5D9 bls .L76 + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1022 .loc 1 615 20 view .LVU342 + 1023 0364 0320 movs r0, #3 + 1024 0366 5BE0 b .L31 + 1025 .L122: + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLM, + 1026 .loc 1 621 9 is_stmt 1 view .LVU343 + 1027 0368 E369 ldr r3, [r4, #28] + 1028 036a 226A ldr r2, [r4, #32] + 1029 036c 1343 orrs r3, r3, r2 + 1030 036e 626A ldr r2, [r4, #36] + 1031 0370 43EA8213 orr r3, r3, r2, lsl #6 + 1032 0374 A26A ldr r2, [r4, #40] + 1033 0376 5208 lsrs r2, r2, #1 + 1034 0378 013A subs r2, r2, #1 + 1035 037a 43EA0243 orr r3, r3, r2, lsl #16 + 1036 037e E26A ldr r2, [r4, #44] + 1037 0380 43EA0263 orr r3, r3, r2, lsl #24 + 1038 0384 226B ldr r2, [r4, #48] + 1039 0386 43EA0273 orr r3, r3, r2, lsl #28 + 1040 038a 2D4A ldr r2, .L126 + 1041 038c 5360 str r3, [r2, #4] + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + ARM GAS /tmp/ccgleihc.s page 34 + + + 1042 .loc 1 636 9 view .LVU344 + 1043 038e 1368 ldr r3, [r2] + 1044 0390 43F08073 orr r3, r3, #16777216 + 1045 0394 1360 str r3, [r2] + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1046 .loc 1 639 9 view .LVU345 + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1047 .loc 1 639 21 is_stmt 0 view .LVU346 + 1048 0396 FFF7FEFF bl HAL_GetTick + 1049 .LVL76: + 1050 039a 0446 mov r4, r0 + 1051 .LVL77: + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1052 .loc 1 642 9 is_stmt 1 view .LVU347 + 1053 .L78: + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1054 .loc 1 642 15 view .LVU348 + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1055 .loc 1 642 16 is_stmt 0 view .LVU349 + 1056 039c 284B ldr r3, .L126 + 1057 039e 1B68 ldr r3, [r3] + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1058 .loc 1 642 15 view .LVU350 + 1059 03a0 13F0007F tst r3, #33554432 + 1060 03a4 06D1 bne .L123 + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1061 .loc 1 644 11 is_stmt 1 view .LVU351 + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1062 .loc 1 644 16 is_stmt 0 view .LVU352 + 1063 03a6 FFF7FEFF bl HAL_GetTick + 1064 .LVL78: + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1065 .loc 1 644 30 view .LVU353 + 1066 03aa 001B subs r0, r0, r4 + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1067 .loc 1 644 14 view .LVU354 + 1068 03ac 0228 cmp r0, #2 + 1069 03ae F5D9 bls .L78 + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1070 .loc 1 646 20 view .LVU355 + 1071 03b0 0320 movs r0, #3 + 1072 03b2 35E0 b .L31 + 1073 .L123: + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Do not return HAL_ERROR if request repeats the current configuration */ + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** pll_config = RCC->PLLCFGR; + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #if defined (RCC_PLLCFGR_PLLR) + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PL + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) + ARM GAS /tmp/ccgleihc.s page 35 + + + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PL + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PL + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #else + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PL + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PL + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #endif + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_OK; + 1074 .loc 1 693 10 view .LVU356 + 1075 03b4 0020 movs r0, #0 + 1076 03b6 33E0 b .L31 + 1077 .L121: + 1078 .loc 1 693 10 view .LVU357 + 1079 03b8 0020 movs r0, #0 + 1080 03ba 31E0 b .L31 + 1081 .LVL79: + 1082 .L74: + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #if defined (RCC_PLLCFGR_PLLR) + 1083 .loc 1 671 7 is_stmt 1 view .LVU358 + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #if defined (RCC_PLLCFGR_PLLR) + 1084 .loc 1 671 18 is_stmt 0 view .LVU359 + 1085 03bc 204A ldr r2, .L126 + 1086 03be 5268 ldr r2, [r2, #4] + 1087 .LVL80: + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 1088 .loc 1 673 7 is_stmt 1 view .LVU360 + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 1089 .loc 1 673 10 is_stmt 0 view .LVU361 + 1090 03c0 012B cmp r3, #1 + 1091 03c2 2FD0 beq .L99 + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || + 1092 .loc 1 674 12 discriminator 1 view .LVU362 + 1093 03c4 02F48003 and r3, r2, #4194304 + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || + 1094 .loc 1 674 78 discriminator 1 view .LVU363 + 1095 03c8 E169 ldr r1, [r4, #28] + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || + 1096 .loc 1 673 62 discriminator 1 view .LVU364 + 1097 03ca 8B42 cmp r3, r1 + 1098 03cc 2CD1 bne .L100 + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PL + 1099 .loc 1 675 12 view .LVU365 + 1100 03ce 02F03F03 and r3, r2, #63 + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PL + 1101 .loc 1 675 76 view .LVU366 + 1102 03d2 216A ldr r1, [r4, #32] + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) || + 1103 .loc 1 674 90 view .LVU367 + 1104 03d4 8B42 cmp r3, r1 + ARM GAS /tmp/ccgleihc.s page 36 + + + 1105 03d6 29D1 bne .L101 + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) + 1106 .loc 1 676 77 view .LVU368 + 1107 03d8 616A ldr r1, [r4, #36] + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PL + 1108 .loc 1 675 83 view .LVU369 + 1109 03da 47F6C073 movw r3, #32704 + 1110 03de 1340 ands r3, r3, r2 + 1111 03e0 B3EB811F cmp r3, r1, lsl #6 + 1112 03e4 24D1 bne .L102 + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PL + 1113 .loc 1 677 12 view .LVU370 + 1114 03e6 02F44031 and r1, r2, #196608 + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PL + 1115 .loc 1 677 80 view .LVU371 + 1116 03ea A36A ldr r3, [r4, #40] + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PL + 1117 .loc 1 677 87 view .LVU372 + 1118 03ec 5B08 lsrs r3, r3, #1 + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PL + 1119 .loc 1 677 94 view .LVU373 + 1120 03ee 013B subs r3, r3, #1 + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) + 1121 .loc 1 676 109 view .LVU374 + 1122 03f0 B1EB034F cmp r1, r3, lsl #16 + 1123 03f4 1ED1 bne .L103 + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PL + 1124 .loc 1 678 12 view .LVU375 + 1125 03f6 02F07063 and r3, r2, #251658240 + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PL + 1126 .loc 1 678 77 view .LVU376 + 1127 03fa E16A ldr r1, [r4, #44] + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PL + 1128 .loc 1 677 126 view .LVU377 + 1129 03fc B3EB016F cmp r3, r1, lsl #24 + 1130 0400 1AD1 bne .L104 + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #else + 1131 .loc 1 679 12 view .LVU378 + 1132 0402 02F0E042 and r2, r2, #1879048192 + 1133 .LVL81: + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #else + 1134 .loc 1 679 77 view .LVU379 + 1135 0406 236B ldr r3, [r4, #48] + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PL + 1136 .loc 1 678 109 view .LVU380 + 1137 0408 B2EB037F cmp r2, r3, lsl #28 + 1138 040c 16D1 bne .L105 + 1139 .loc 1 693 10 view .LVU381 + 1140 040e 0020 movs r0, #0 + 1141 0410 06E0 b .L31 + 1142 .LVL82: + 1143 .L82: + 1144 .LCFI3: + 1145 .cfi_def_cfa_offset 0 + 1146 .cfi_restore 4 + 1147 .cfi_restore 5 + 1148 .cfi_restore 6 + ARM GAS /tmp/ccgleihc.s page 37 + + + 1149 .cfi_restore 14 + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1150 .loc 1 351 12 view .LVU382 + 1151 0412 0120 movs r0, #1 + 1152 .LVL83: + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1153 .loc 1 694 1 view .LVU383 + 1154 0414 7047 bx lr + 1155 .LVL84: + 1156 .L112: + 1157 .LCFI4: + 1158 .cfi_def_cfa_offset 24 + 1159 .cfi_offset 4, -16 + 1160 .cfi_offset 5, -12 + 1161 .cfi_offset 6, -8 + 1162 .cfi_offset 14, -4 + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1163 .loc 1 368 16 view .LVU384 + 1164 0416 0120 movs r0, #1 + 1165 .LVL85: + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1166 .loc 1 368 16 view .LVU385 + 1167 0418 02E0 b .L31 + 1168 .L86: + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1169 .loc 1 421 16 view .LVU386 + 1170 041a 0120 movs r0, #1 + 1171 041c 00E0 b .L31 + 1172 .LVL86: + 1173 .L95: + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1174 .loc 1 693 10 view .LVU387 + 1175 041e 0020 movs r0, #0 + 1176 .LVL87: + 1177 .L31: + 1178 .loc 1 694 1 view .LVU388 + 1179 0420 02B0 add sp, sp, #8 + 1180 .LCFI5: + 1181 .cfi_remember_state + 1182 .cfi_def_cfa_offset 16 + 1183 @ sp needed + 1184 0422 70BD pop {r4, r5, r6, pc} + 1185 .LVL88: + 1186 .L99: + 1187 .LCFI6: + 1188 .cfi_restore_state + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1189 .loc 1 689 16 view .LVU389 + 1190 0424 0120 movs r0, #1 + 1191 0426 FBE7 b .L31 + 1192 .L100: + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1193 .loc 1 689 16 view .LVU390 + 1194 0428 0120 movs r0, #1 + 1195 042a F9E7 b .L31 + 1196 .L101: + 1197 042c 0120 movs r0, #1 + ARM GAS /tmp/ccgleihc.s page 38 + + + 1198 042e F7E7 b .L31 + 1199 .L102: + 1200 0430 0120 movs r0, #1 + 1201 0432 F5E7 b .L31 + 1202 .L103: + 1203 0434 0120 movs r0, #1 + 1204 0436 F3E7 b .L31 + 1205 .L104: + 1206 0438 0120 movs r0, #1 + 1207 043a F1E7 b .L31 + 1208 .LVL89: + 1209 .L105: + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1210 .loc 1 689 16 view .LVU391 + 1211 043c 0120 movs r0, #1 + 1212 043e EFE7 b .L31 + 1213 .L127: + 1214 .align 2 + 1215 .L126: + 1216 0440 00380240 .word 1073887232 + 1217 .cfi_endproc + 1218 .LFE142: + 1220 .section .text.HAL_RCC_MCOConfig,"ax",%progbits + 1221 .align 1 + 1222 .global HAL_RCC_MCOConfig + 1223 .syntax unified + 1224 .thumb + 1225 .thumb_func + 1226 .fpu fpv5-d16 + 1228 HAL_RCC_MCOConfig: + 1229 .LVL90: + 1230 .LFB144: + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Initializes the CPU, AHB and APB buses clocks according to the specified + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * parameters in the RCC_ClkInitStruct. + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @param RCC_ClkInitStruct pointer to an RCC_OscInitTypeDef structure that + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * contains the configuration information for the RCC peripheral. + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @param FLatency FLASH Latency, this parameter depend on device selected + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * and updated by HAL_RCC_GetHCLKFreq() function called within this function + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note The HSI is used (enabled by hardware) as system clock source after + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * startup from Reset, wake-up from STOP and STANDBY mode, or in case + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * of failure of the HSE used directly or indirectly as system clock + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * (if the Clock Security System CSS is enabled). + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note A switch from one clock source to another occurs only if the target + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * clock source is ready (clock stable after startup delay or PLL locked). + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * If a clock source which is not yet ready is selected, the switch will + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * occur when the clock source will be ready. + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * You can use HAL_RCC_GetClockConfig() function to know which clock is + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * currently used as system clock source. + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note Depending on the device voltage range, the software has to set correctly + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * HPRE[3:0] bits to ensure that HCLK not exceed the maximum allowed frequency + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * (for more details refer to section above "Initialization/de-initialization functions") + ARM GAS /tmp/ccgleihc.s page 39 + + + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval None + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t tickstart = 0; + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check Null pointer */ + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (RCC_ClkInitStruct == NULL) + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the parameters */ + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_CLOCKTYPE(RCC_ClkInitStruct->ClockType)); + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_FLASH_LATENCY(FLatency)); + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* To correctly read data from FLASH memory, the number of wait states (LATENCY) + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** must be correctly programmed according to the frequency of the CPU clock + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** (HCLK) and the supply voltage of the device. */ + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Increasing the CPU frequency */ + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (FLatency > __HAL_FLASH_GET_LATENCY()) + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_FLASH_SET_LATENCY(FLatency); + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check that the new number of wait states is taken into account to access the Flash + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** memory by reading the FLASH_ACR register */ + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (__HAL_FLASH_GET_LATENCY() != FLatency) + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /*-------------------------- HCLK Configuration --------------------------*/ + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Set the highest APBx dividers in order to ensure that we do not go through + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** a non-spec phase whatever we decrease or increase HCLK. */ + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16); + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3)); + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Set the new HCLK clock divider */ + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /*------------------------- SYSCLK Configuration ---------------------------*/ + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + ARM GAS /tmp/ccgleihc.s page 40 + + + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* HSE is selected as System Clock Source */ + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the HSE ready flag */ + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET) + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* PLL is selected as System Clock Source */ + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the PLL ready flag */ + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET) + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* HSI is selected as System Clock Source */ + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the HSI ready flag */ + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET) + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_SYSCLK_CONFIG(RCC_ClkInitStruct->SYSCLKSource); + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get Start Tick*/ + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** tickstart = HAL_GetTick(); + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((HAL_GetTick() - tickstart) > CLOCKSWITCH_TIMEOUT_VALUE) + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_TIMEOUT; + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Decreasing the number of wait states because of lower CPU frequency */ + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (FLatency < __HAL_FLASH_GET_LATENCY()) + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_FLASH_SET_LATENCY(FLatency); + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check that the new number of wait states is taken into account to access the Flash + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** memory by reading the FLASH_ACR register */ + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (__HAL_FLASH_GET_LATENCY() != FLatency) + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_ERROR; + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + ARM GAS /tmp/ccgleihc.s page 41 + + + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /*-------------------------- PCLK1 Configuration ---------------------------*/ + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider)); + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /*-------------------------- PCLK2 Configuration ---------------------------*/ + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider)); + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Update the SystemCoreClock global variable */ + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_C + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Configure the source of time base considering new system clocks settings*/ + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** HAL_InitTick(uwTickPrio); + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return HAL_OK; + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @} + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** @defgroup RCC_Exported_Functions_Group2 Peripheral Control functions + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief RCC clocks control functions + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** @verbatim + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** =============================================================================== + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** ##### Peripheral Control functions ##### + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** =============================================================================== + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** [..] + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** This subsection provides a set of functions allowing to control the RCC Clocks + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** frequencies. + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** @endverbatim + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @{ + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Selects the clock source to output on MCO1 pin(PA8) or on MCO2 pin(PC9). + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note PA8/PC9 should be configured in alternate function mode. + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @param RCC_MCOx specifies the output direction for the clock source. + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * This parameter can be one of the following values: + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCO1: Clock source to output on MCO1 pin(PA8). + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCO2: Clock source to output on MCO2 pin(PC9). + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @param RCC_MCOSource specifies the clock source to output. + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * This parameter can be one of the following values: + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCO1SOURCE_HSI: HSI clock selected as MCO1 source + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCO1SOURCE_LSE: LSE clock selected as MCO1 source + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCO1SOURCE_HSE: HSE clock selected as MCO1 source + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCO1SOURCE_PLLCLK: main PLL clock selected as MCO1 source + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCO2SOURCE_SYSCLK: System clock (SYSCLK) selected as MCO2 source + ARM GAS /tmp/ccgleihc.s page 42 + + + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCO2SOURCE_PLLI2SCLK: PLLI2S clock selected as MCO2 source + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCO2SOURCE_HSE: HSE clock selected as MCO2 source + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCO2SOURCE_PLLCLK: main PLL clock selected as MCO2 source + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @param RCC_MCODiv specifies the MCOx prescaler. + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * This parameter can be one of the following values: + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCODIV_1: no division applied to MCOx clock + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCODIV_2: division by 2 applied to MCOx clock + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCODIV_3: division by 3 applied to MCOx clock + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCODIV_4: division by 4 applied to MCOx clock + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @arg RCC_MCODIV_5: division by 5 applied to MCOx clock + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval None + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_MCODiv) + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1231 .loc 1 904 1 is_stmt 1 view -0 + 1232 .cfi_startproc + 1233 @ args = 0, pretend = 0, frame = 32 + 1234 @ frame_needed = 0, uses_anonymous_args = 0 + 1235 .loc 1 904 1 is_stmt 0 view .LVU393 + 1236 0000 70B5 push {r4, r5, r6, lr} + 1237 .LCFI7: + 1238 .cfi_def_cfa_offset 16 + 1239 .cfi_offset 4, -16 + 1240 .cfi_offset 5, -12 + 1241 .cfi_offset 6, -8 + 1242 .cfi_offset 14, -4 + 1243 0002 88B0 sub sp, sp, #32 + 1244 .LCFI8: + 1245 .cfi_def_cfa_offset 48 + 1246 0004 0C46 mov r4, r1 + 1247 0006 1546 mov r5, r2 + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitTypeDef GPIO_InitStruct; + 1248 .loc 1 905 3 is_stmt 1 view .LVU394 + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check the parameters */ + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_MCO(RCC_MCOx)); + 1249 .loc 1 907 3 view .LVU395 + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_MCODIV(RCC_MCODiv)); + 1250 .loc 1 908 3 view .LVU396 + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* RCC_MCO1 */ + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (RCC_MCOx == RCC_MCO1) + 1251 .loc 1 910 3 view .LVU397 + 1252 .loc 1 910 6 is_stmt 0 view .LVU398 + 1253 0008 F8B9 cbnz r0, .L129 + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource)); + 1254 .loc 1 912 5 is_stmt 1 view .LVU399 + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* MCO1 Clock Enable */ + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MCO1_CLK_ENABLE(); + 1255 .loc 1 915 5 view .LVU400 + 1256 .LBB5: + 1257 .loc 1 915 5 view .LVU401 + 1258 .loc 1 915 5 view .LVU402 + 1259 000a 204E ldr r6, .L132 + 1260 000c 336B ldr r3, [r6, #48] + 1261 000e 43F00103 orr r3, r3, #1 + 1262 0012 3363 str r3, [r6, #48] + ARM GAS /tmp/ccgleihc.s page 43 + + + 1263 .loc 1 915 5 view .LVU403 + 1264 0014 336B ldr r3, [r6, #48] + 1265 0016 03F00103 and r3, r3, #1 + 1266 001a 0193 str r3, [sp, #4] + 1267 .loc 1 915 5 view .LVU404 + 1268 001c 019B ldr r3, [sp, #4] + 1269 .LBE5: + 1270 .loc 1 915 5 view .LVU405 + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Configure the MCO1 pin in alternate function mode */ + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Pin = MCO1_PIN; + 1271 .loc 1 918 5 view .LVU406 + 1272 .loc 1 918 25 is_stmt 0 view .LVU407 + 1273 001e 4FF48073 mov r3, #256 + 1274 0022 0393 str r3, [sp, #12] + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 1275 .loc 1 919 5 is_stmt 1 view .LVU408 + 1276 .loc 1 919 26 is_stmt 0 view .LVU409 + 1277 0024 0223 movs r3, #2 + 1278 0026 0493 str r3, [sp, #16] + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; + 1279 .loc 1 920 5 is_stmt 1 view .LVU410 + 1280 .loc 1 920 27 is_stmt 0 view .LVU411 + 1281 0028 0323 movs r3, #3 + 1282 002a 0693 str r3, [sp, #24] + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 1283 .loc 1 921 5 is_stmt 1 view .LVU412 + 1284 .loc 1 921 26 is_stmt 0 view .LVU413 + 1285 002c 0023 movs r3, #0 + 1286 002e 0593 str r3, [sp, #20] + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Alternate = GPIO_AF0_MCO; + 1287 .loc 1 922 5 is_stmt 1 view .LVU414 + 1288 .loc 1 922 31 is_stmt 0 view .LVU415 + 1289 0030 0793 str r3, [sp, #28] + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** HAL_GPIO_Init(MCO1_GPIO_PORT, &GPIO_InitStruct); + 1290 .loc 1 923 5 is_stmt 1 view .LVU416 + 1291 0032 03A9 add r1, sp, #12 + 1292 .LVL91: + 1293 .loc 1 923 5 is_stmt 0 view .LVU417 + 1294 0034 1648 ldr r0, .L132+4 + 1295 .LVL92: + 1296 .loc 1 923 5 view .LVU418 + 1297 0036 FFF7FEFF bl HAL_GPIO_Init + 1298 .LVL93: + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Mask MCO1 and MCO1PRE[2:0] bits then Select MCO1 clock source and prescaler */ + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO1 | RCC_CFGR_MCO1PRE), (RCC_MCOSource | RCC_MCODiv)); + 1299 .loc 1 926 5 is_stmt 1 view .LVU419 + 1300 003a B368 ldr r3, [r6, #8] + 1301 003c 23F0EC63 bic r3, r3, #123731968 + 1302 0040 2543 orrs r5, r5, r4 + 1303 .LVL94: + 1304 .loc 1 926 5 is_stmt 0 view .LVU420 + 1305 0042 1D43 orrs r5, r5, r3 + 1306 0044 B560 str r5, [r6, #8] + 1307 .LVL95: + 1308 .L128: + ARM GAS /tmp/ccgleihc.s page 44 + + + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_RCC_MCO2SOURCE(RCC_MCOSource)); + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* MCO2 Clock Enable */ + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MCO2_CLK_ENABLE(); + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Configure the MCO2 pin in alternate function mode */ + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Pin = MCO2_PIN; + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Alternate = GPIO_AF0_MCO; + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** HAL_GPIO_Init(MCO2_GPIO_PORT, &GPIO_InitStruct); + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Mask MCO2 and MCO2PRE[2:0] bits then Select MCO2 clock source and prescaler */ + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MODIFY_REG(RCC->CFGR, (RCC_CFGR_MCO2 | RCC_CFGR_MCO2PRE), (RCC_MCOSource | (RCC_MCODiv << 3))); + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1309 .loc 1 946 1 view .LVU421 + 1310 0046 08B0 add sp, sp, #32 + 1311 .LCFI9: + 1312 .cfi_remember_state + 1313 .cfi_def_cfa_offset 16 + 1314 @ sp needed + 1315 0048 70BD pop {r4, r5, r6, pc} + 1316 .LVL96: + 1317 .L129: + 1318 .LCFI10: + 1319 .cfi_restore_state + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1320 .loc 1 930 5 is_stmt 1 view .LVU422 + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1321 .loc 1 933 5 view .LVU423 + 1322 .LBB6: + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1323 .loc 1 933 5 view .LVU424 + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1324 .loc 1 933 5 view .LVU425 + 1325 004a 104E ldr r6, .L132 + 1326 004c 336B ldr r3, [r6, #48] + 1327 004e 43F00403 orr r3, r3, #4 + 1328 0052 3363 str r3, [r6, #48] + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1329 .loc 1 933 5 view .LVU426 + 1330 0054 336B ldr r3, [r6, #48] + 1331 0056 03F00403 and r3, r3, #4 + 1332 005a 0293 str r3, [sp, #8] + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1333 .loc 1 933 5 view .LVU427 + 1334 005c 029B ldr r3, [sp, #8] + 1335 .LBE6: + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1336 .loc 1 933 5 view .LVU428 + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 1337 .loc 1 936 5 view .LVU429 + ARM GAS /tmp/ccgleihc.s page 45 + + + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + 1338 .loc 1 936 25 is_stmt 0 view .LVU430 + 1339 005e 4FF40073 mov r3, #512 + 1340 0062 0393 str r3, [sp, #12] + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; + 1341 .loc 1 937 5 is_stmt 1 view .LVU431 + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; + 1342 .loc 1 937 26 is_stmt 0 view .LVU432 + 1343 0064 0223 movs r3, #2 + 1344 0066 0493 str r3, [sp, #16] + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 1345 .loc 1 938 5 is_stmt 1 view .LVU433 + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Pull = GPIO_NOPULL; + 1346 .loc 1 938 27 is_stmt 0 view .LVU434 + 1347 0068 0323 movs r3, #3 + 1348 006a 0693 str r3, [sp, #24] + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Alternate = GPIO_AF0_MCO; + 1349 .loc 1 939 5 is_stmt 1 view .LVU435 + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** GPIO_InitStruct.Alternate = GPIO_AF0_MCO; + 1350 .loc 1 939 26 is_stmt 0 view .LVU436 + 1351 006c 0023 movs r3, #0 + 1352 006e 0593 str r3, [sp, #20] + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** HAL_GPIO_Init(MCO2_GPIO_PORT, &GPIO_InitStruct); + 1353 .loc 1 940 5 is_stmt 1 view .LVU437 + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** HAL_GPIO_Init(MCO2_GPIO_PORT, &GPIO_InitStruct); + 1354 .loc 1 940 31 is_stmt 0 view .LVU438 + 1355 0070 0793 str r3, [sp, #28] + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1356 .loc 1 941 5 is_stmt 1 view .LVU439 + 1357 0072 03A9 add r1, sp, #12 + 1358 .LVL97: + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1359 .loc 1 941 5 is_stmt 0 view .LVU440 + 1360 0074 0748 ldr r0, .L132+8 + 1361 .LVL98: + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1362 .loc 1 941 5 view .LVU441 + 1363 0076 FFF7FEFF bl HAL_GPIO_Init + 1364 .LVL99: + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1365 .loc 1 944 5 is_stmt 1 view .LVU442 + 1366 007a B368 ldr r3, [r6, #8] + 1367 007c 23F07843 bic r3, r3, #-134217728 + 1368 0080 44EAC504 orr r4, r4, r5, lsl #3 + 1369 .LVL100: + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1370 .loc 1 944 5 is_stmt 0 view .LVU443 + 1371 0084 1C43 orrs r4, r4, r3 + 1372 0086 B460 str r4, [r6, #8] + 1373 .loc 1 946 1 view .LVU444 + 1374 0088 DDE7 b .L128 + 1375 .L133: + 1376 008a 00BF .align 2 + 1377 .L132: + 1378 008c 00380240 .word 1073887232 + 1379 0090 00000240 .word 1073872896 + 1380 0094 00080240 .word 1073874944 + ARM GAS /tmp/ccgleihc.s page 46 + + + 1381 .cfi_endproc + 1382 .LFE144: + 1384 .section .text.HAL_RCC_EnableCSS,"ax",%progbits + 1385 .align 1 + 1386 .global HAL_RCC_EnableCSS + 1387 .syntax unified + 1388 .thumb + 1389 .thumb_func + 1390 .fpu fpv5-d16 + 1392 HAL_RCC_EnableCSS: + 1393 .LFB145: + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Enables the Clock Security System. + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note If a failure is detected on the HSE oscillator clock, this oscillator + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * is automatically disabled and an interrupt is generated to inform the + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * software about the failure (Clock Security System Interrupt, CSSI), + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * allowing the MCU to perform rescue operations. The CSSI is linked to + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * the Cortex-M7 NMI (Non-Maskable Interrupt) exception vector. + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval None + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** void HAL_RCC_EnableCSS(void) + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1394 .loc 1 958 1 is_stmt 1 view -0 + 1395 .cfi_startproc + 1396 @ args = 0, pretend = 0, frame = 0 + 1397 @ frame_needed = 0, uses_anonymous_args = 0 + 1398 @ link register save eliminated. + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** SET_BIT(RCC->CR, RCC_CR_CSSON); + 1399 .loc 1 959 3 view .LVU446 + 1400 0000 024A ldr r2, .L135 + 1401 0002 1368 ldr r3, [r2] + 1402 0004 43F40023 orr r3, r3, #524288 + 1403 0008 1360 str r3, [r2] + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1404 .loc 1 960 1 is_stmt 0 view .LVU447 + 1405 000a 7047 bx lr + 1406 .L136: + 1407 .align 2 + 1408 .L135: + 1409 000c 00380240 .word 1073887232 + 1410 .cfi_endproc + 1411 .LFE145: + 1413 .section .text.HAL_RCC_DisableCSS,"ax",%progbits + 1414 .align 1 + 1415 .global HAL_RCC_DisableCSS + 1416 .syntax unified + 1417 .thumb + 1418 .thumb_func + 1419 .fpu fpv5-d16 + 1421 HAL_RCC_DisableCSS: + 1422 .LFB146: + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Disables the Clock Security System. + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval None + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ + ARM GAS /tmp/ccgleihc.s page 47 + + + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** void HAL_RCC_DisableCSS(void) + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1423 .loc 1 967 1 is_stmt 1 view -0 + 1424 .cfi_startproc + 1425 @ args = 0, pretend = 0, frame = 0 + 1426 @ frame_needed = 0, uses_anonymous_args = 0 + 1427 @ link register save eliminated. + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** CLEAR_BIT(RCC->CR, RCC_CR_CSSON); + 1428 .loc 1 968 3 view .LVU449 + 1429 0000 024A ldr r2, .L138 + 1430 0002 1368 ldr r3, [r2] + 1431 0004 23F40023 bic r3, r3, #524288 + 1432 0008 1360 str r3, [r2] + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1433 .loc 1 969 1 is_stmt 0 view .LVU450 + 1434 000a 7047 bx lr + 1435 .L139: + 1436 .align 2 + 1437 .L138: + 1438 000c 00380240 .word 1073887232 + 1439 .cfi_endproc + 1440 .LFE146: + 1442 .global __aeabi_uldivmod + 1443 .section .text.HAL_RCC_GetSysClockFreq,"ax",%progbits + 1444 .align 1 + 1445 .global HAL_RCC_GetSysClockFreq + 1446 .syntax unified + 1447 .thumb + 1448 .thumb_func + 1449 .fpu fpv5-d16 + 1451 HAL_RCC_GetSysClockFreq: + 1452 .LFB147: + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Returns the SYSCLK frequency + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note The system frequency computed by this function is not the real + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * frequency in the chip. It is calculated based on the predefined + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * constant and the selected clock source: + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note If SYSCLK source is HSI, function returns values based on HSI_VALUE(*) + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note If SYSCLK source is HSE, function returns values based on HSE_VALUE(**) + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note If SYSCLK source is PLL, function returns values based on HSE_VALUE(**) + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * or HSI_VALUE(*) multiplied/divided by the PLL factors. + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * 16 MHz) but the real value may vary depending on the variations + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * in voltage and temperature. + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * 25 MHz), user has to ensure that HSE_VALUE is same as the real + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * frequency of the crystal used. Otherwise, this function may + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * have wrong result. + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note The result of this function could be not correct when using fractional + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * value for HSE crystal. + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note This function can be used by the user application to compute the + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * baudrate for the communication peripherals or configure other parameters. + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + ARM GAS /tmp/ccgleihc.s page 48 + + + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note Each time SYSCLK changes, this function must be called to update the + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * right SYSCLK value. Otherwise, any configuration based on this function will be incorre + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval SYSCLK frequency +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t HAL_RCC_GetSysClockFreq(void) +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1453 .loc 1 1002 1 is_stmt 1 view -0 + 1454 .cfi_startproc + 1455 @ args = 0, pretend = 0, frame = 0 + 1456 @ frame_needed = 0, uses_anonymous_args = 0 + 1457 0000 08B5 push {r3, lr} + 1458 .LCFI11: + 1459 .cfi_def_cfa_offset 8 + 1460 .cfi_offset 3, -8 + 1461 .cfi_offset 14, -4 +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t pllm = 0, pllvco = 0, pllp = 0; + 1462 .loc 1 1003 3 view .LVU452 + 1463 .LVL101: +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t sysclockfreq = 0; + 1464 .loc 1 1004 3 view .LVU453 +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get SYSCLK source -------------------------------------------------------*/ +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** switch (RCC->CFGR & RCC_CFGR_SWS) + 1465 .loc 1 1007 3 view .LVU454 + 1466 .loc 1 1007 14 is_stmt 0 view .LVU455 + 1467 0002 254B ldr r3, .L147 + 1468 0004 9B68 ldr r3, [r3, #8] + 1469 .loc 1 1007 21 view .LVU456 + 1470 0006 03F00C03 and r3, r3, #12 + 1471 .loc 1 1007 3 view .LVU457 + 1472 000a 042B cmp r3, #4 + 1473 000c 3FD0 beq .L144 + 1474 000e 082B cmp r3, #8 + 1475 0010 3FD1 bne .L145 +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** sysclockfreq = HSI_VALUE; +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** break; +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */ +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** sysclockfreq = HSE_VALUE; +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** break; +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock source */ +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** SYSCLK = PLL_VCO / PLLP */ +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; + 1476 .loc 1 1023 7 is_stmt 1 view .LVU458 + 1477 .loc 1 1023 17 is_stmt 0 view .LVU459 + 1478 0012 214B ldr r3, .L147 + 1479 0014 5A68 ldr r2, [r3, #4] + 1480 .loc 1 1023 12 view .LVU460 + ARM GAS /tmp/ccgleihc.s page 49 + + + 1481 0016 02F03F02 and r2, r2, #63 + 1482 .LVL102: +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI) + 1483 .loc 1 1024 7 is_stmt 1 view .LVU461 + 1484 .loc 1 1024 11 is_stmt 0 view .LVU462 + 1485 001a 5B68 ldr r3, [r3, #4] + 1486 .loc 1 1024 10 view .LVU463 + 1487 001c 13F4800F tst r3, #4194304 + 1488 0020 12D0 beq .L142 +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* HSE used as PLL clock source */ +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** pllvco = (uint32_t)((((uint64_t) HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) + 1489 .loc 1 1027 9 is_stmt 1 view .LVU464 + 1490 .loc 1 1027 70 is_stmt 0 view .LVU465 + 1491 0022 1D4B ldr r3, .L147 + 1492 0024 5968 ldr r1, [r3, #4] + 1493 .loc 1 1027 55 view .LVU466 + 1494 0026 C1F38811 ubfx r1, r1, #6, #9 + 1495 .loc 1 1027 52 view .LVU467 + 1496 002a 1C48 ldr r0, .L147+4 + 1497 .loc 1 1027 128 view .LVU468 + 1498 002c 0023 movs r3, #0 + 1499 002e A1FB0001 umull r0, r1, r1, r0 + 1500 0032 FFF7FEFF bl __aeabi_uldivmod + 1501 .LVL103: + 1502 .L143: +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* HSI used as PLL clock source */ +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** pllvco = (uint32_t)((((uint64_t) HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1) * 2); + 1503 .loc 1 1034 7 is_stmt 1 view .LVU469 + 1504 .loc 1 1034 21 is_stmt 0 view .LVU470 + 1505 0036 184B ldr r3, .L147 + 1506 0038 5B68 ldr r3, [r3, #4] + 1507 .loc 1 1034 51 view .LVU471 + 1508 003a C3F30143 ubfx r3, r3, #16, #2 + 1509 .loc 1 1034 76 view .LVU472 + 1510 003e 0133 adds r3, r3, #1 + 1511 .loc 1 1034 12 view .LVU473 + 1512 0040 5B00 lsls r3, r3, #1 + 1513 .LVL104: +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** sysclockfreq = pllvco / pllp; + 1514 .loc 1 1036 7 is_stmt 1 view .LVU474 + 1515 .loc 1 1036 20 is_stmt 0 view .LVU475 + 1516 0042 B0FBF3F0 udiv r0, r0, r3 + 1517 .LVL105: +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** break; + 1518 .loc 1 1037 7 is_stmt 1 view .LVU476 + 1519 0046 25E0 b .L140 + 1520 .LVL106: + 1521 .L142: +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1522 .loc 1 1032 9 view .LVU477 + ARM GAS /tmp/ccgleihc.s page 50 + + +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1523 .loc 1 1032 70 is_stmt 0 view .LVU478 + 1524 0048 134B ldr r3, .L147 + 1525 004a 5968 ldr r1, [r3, #4] +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1526 .loc 1 1032 55 view .LVU479 + 1527 004c C1F3881C ubfx ip, r1, #6, #9 +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1528 .loc 1 1032 52 view .LVU480 + 1529 0050 4FEA4C11 lsl r1, ip, #5 + 1530 0054 B1EB0C00 subs r0, r1, ip + 1531 0058 6EEB0E0E sbc lr, lr, lr + 1532 005c 4FEA8E13 lsl r3, lr, #6 + 1533 0060 43EA9063 orr r3, r3, r0, lsr #26 + 1534 0064 8101 lsls r1, r0, #6 + 1535 0066 091A subs r1, r1, r0 + 1536 0068 63EB0E03 sbc r3, r3, lr + 1537 006c DB00 lsls r3, r3, #3 + 1538 006e 43EA5173 orr r3, r3, r1, lsr #29 + 1539 0072 C900 lsls r1, r1, #3 + 1540 0074 11EB0C0C adds ip, r1, ip + 1541 0078 43F10003 adc r3, r3, #0 + 1542 007c 9902 lsls r1, r3, #10 +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1543 .loc 1 1032 128 view .LVU481 + 1544 007e 0023 movs r3, #0 + 1545 0080 4FEA8C20 lsl r0, ip, #10 + 1546 0084 41EA9C51 orr r1, r1, ip, lsr #22 + 1547 0088 FFF7FEFF bl __aeabi_uldivmod + 1548 .LVL107: +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1549 .loc 1 1032 128 view .LVU482 + 1550 008c D3E7 b .L143 + 1551 .LVL108: + 1552 .L144: +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** break; + 1553 .loc 1 1016 20 view .LVU483 + 1554 008e 0348 ldr r0, .L147+4 + 1555 0090 00E0 b .L140 + 1556 .L145: +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1557 .loc 1 1007 3 view .LVU484 + 1558 0092 0348 ldr r0, .L147+8 + 1559 .LVL109: +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** default: +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** sysclockfreq = HSI_VALUE; +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** break; +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return sysclockfreq; + 1560 .loc 1 1045 3 is_stmt 1 view .LVU485 + 1561 .L140: +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1562 .loc 1 1046 1 is_stmt 0 view .LVU486 + 1563 0094 08BD pop {r3, pc} + ARM GAS /tmp/ccgleihc.s page 51 + + + 1564 .L148: + 1565 0096 00BF .align 2 + 1566 .L147: + 1567 0098 00380240 .word 1073887232 + 1568 009c 40787D01 .word 25000000 + 1569 00a0 0024F400 .word 16000000 + 1570 .cfi_endproc + 1571 .LFE147: + 1573 .section .text.HAL_RCC_ClockConfig,"ax",%progbits + 1574 .align 1 + 1575 .global HAL_RCC_ClockConfig + 1576 .syntax unified + 1577 .thumb + 1578 .thumb_func + 1579 .fpu fpv5-d16 + 1581 HAL_RCC_ClockConfig: + 1582 .LVL110: + 1583 .LFB143: + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t tickstart = 0; + 1584 .loc 1 723 1 is_stmt 1 view -0 + 1585 .cfi_startproc + 1586 @ args = 0, pretend = 0, frame = 0 + 1587 @ frame_needed = 0, uses_anonymous_args = 0 + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1588 .loc 1 724 3 view .LVU488 + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1589 .loc 1 727 3 view .LVU489 + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1590 .loc 1 727 6 is_stmt 0 view .LVU490 + 1591 0000 0028 cmp r0, #0 + 1592 0002 00F0A080 beq .L164 + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t tickstart = 0; + 1593 .loc 1 723 1 view .LVU491 + 1594 0006 70B5 push {r4, r5, r6, lr} + 1595 .LCFI12: + 1596 .cfi_def_cfa_offset 16 + 1597 .cfi_offset 4, -16 + 1598 .cfi_offset 5, -12 + 1599 .cfi_offset 6, -8 + 1600 .cfi_offset 14, -4 + 1601 0008 0D46 mov r5, r1 + 1602 000a 0446 mov r4, r0 + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** assert_param(IS_FLASH_LATENCY(FLatency)); + 1603 .loc 1 733 3 is_stmt 1 view .LVU492 + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1604 .loc 1 734 3 view .LVU493 + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1605 .loc 1 741 3 view .LVU494 + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1606 .loc 1 741 18 is_stmt 0 view .LVU495 + 1607 000c 524B ldr r3, .L177 + 1608 000e 1B68 ldr r3, [r3] + 1609 0010 03F00F03 and r3, r3, #15 + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1610 .loc 1 741 6 view .LVU496 + 1611 0014 8B42 cmp r3, r1 + 1612 0016 0BD2 bcs .L151 + ARM GAS /tmp/ccgleihc.s page 52 + + + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1613 .loc 1 744 5 is_stmt 1 view .LVU497 + 1614 0018 4F4A ldr r2, .L177 + 1615 001a 1368 ldr r3, [r2] + 1616 001c 23F00F03 bic r3, r3, #15 + 1617 0020 0B43 orrs r3, r3, r1 + 1618 0022 1360 str r3, [r2] + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1619 .loc 1 748 5 view .LVU498 + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1620 .loc 1 748 9 is_stmt 0 view .LVU499 + 1621 0024 1368 ldr r3, [r2] + 1622 0026 03F00F03 and r3, r3, #15 + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1623 .loc 1 748 8 view .LVU500 + 1624 002a 8B42 cmp r3, r1 + 1625 002c 40F08D80 bne .L165 + 1626 .L151: + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1627 .loc 1 755 3 is_stmt 1 view .LVU501 + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1628 .loc 1 755 26 is_stmt 0 view .LVU502 + 1629 0030 2368 ldr r3, [r4] + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1630 .loc 1 755 6 view .LVU503 + 1631 0032 13F0020F tst r3, #2 + 1632 0036 17D0 beq .L152 + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1633 .loc 1 759 5 is_stmt 1 view .LVU504 + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1634 .loc 1 759 8 is_stmt 0 view .LVU505 + 1635 0038 13F0040F tst r3, #4 + 1636 003c 04D0 beq .L153 + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1637 .loc 1 761 7 is_stmt 1 view .LVU506 + 1638 003e 474A ldr r2, .L177+4 + 1639 0040 9368 ldr r3, [r2, #8] + 1640 0042 43F4E053 orr r3, r3, #7168 + 1641 0046 9360 str r3, [r2, #8] + 1642 .L153: + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1643 .loc 1 764 5 view .LVU507 + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1644 .loc 1 764 28 is_stmt 0 view .LVU508 + 1645 0048 2368 ldr r3, [r4] + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1646 .loc 1 764 8 view .LVU509 + 1647 004a 13F0080F tst r3, #8 + 1648 004e 04D0 beq .L154 + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1649 .loc 1 766 7 is_stmt 1 view .LVU510 + 1650 0050 424A ldr r2, .L177+4 + 1651 0052 9368 ldr r3, [r2, #8] + 1652 0054 43F46043 orr r3, r3, #57344 + 1653 0058 9360 str r3, [r2, #8] + 1654 .L154: + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); + ARM GAS /tmp/ccgleihc.s page 53 + + + 1655 .loc 1 770 5 view .LVU511 + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1656 .loc 1 771 5 view .LVU512 + 1657 005a 404A ldr r2, .L177+4 + 1658 005c 9368 ldr r3, [r2, #8] + 1659 005e 23F0F003 bic r3, r3, #240 + 1660 0062 A168 ldr r1, [r4, #8] + 1661 .LVL111: + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1662 .loc 1 771 5 is_stmt 0 view .LVU513 + 1663 0064 0B43 orrs r3, r3, r1 + 1664 0066 9360 str r3, [r2, #8] + 1665 .L152: + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1666 .loc 1 775 3 is_stmt 1 view .LVU514 + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1667 .loc 1 775 26 is_stmt 0 view .LVU515 + 1668 0068 2368 ldr r3, [r4] + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1669 .loc 1 775 6 view .LVU516 + 1670 006a 13F0010F tst r3, #1 + 1671 006e 31D0 beq .L155 + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1672 .loc 1 777 5 is_stmt 1 view .LVU517 + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1673 .loc 1 780 5 view .LVU518 + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1674 .loc 1 780 26 is_stmt 0 view .LVU519 + 1675 0070 6368 ldr r3, [r4, #4] + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1676 .loc 1 780 8 view .LVU520 + 1677 0072 012B cmp r3, #1 + 1678 0074 20D0 beq .L175 + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1679 .loc 1 789 10 is_stmt 1 view .LVU521 + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1680 .loc 1 789 13 is_stmt 0 view .LVU522 + 1681 0076 022B cmp r3, #2 + 1682 0078 25D0 beq .L176 + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1683 .loc 1 801 7 is_stmt 1 view .LVU523 + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1684 .loc 1 801 11 is_stmt 0 view .LVU524 + 1685 007a 384A ldr r2, .L177+4 + 1686 007c 1268 ldr r2, [r2] + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1687 .loc 1 801 10 view .LVU525 + 1688 007e 12F0020F tst r2, #2 + 1689 0082 64D0 beq .L168 + 1690 .L157: + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1691 .loc 1 807 5 is_stmt 1 view .LVU526 + 1692 0084 3549 ldr r1, .L177+4 + 1693 0086 8A68 ldr r2, [r1, #8] + 1694 0088 22F00302 bic r2, r2, #3 + 1695 008c 1343 orrs r3, r3, r2 + 1696 008e 8B60 str r3, [r1, #8] + ARM GAS /tmp/ccgleihc.s page 54 + + + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1697 .loc 1 810 5 view .LVU527 + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1698 .loc 1 810 17 is_stmt 0 view .LVU528 + 1699 0090 FFF7FEFF bl HAL_GetTick + 1700 .LVL112: + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1701 .loc 1 810 17 view .LVU529 + 1702 0094 0646 mov r6, r0 + 1703 .LVL113: + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1704 .loc 1 812 5 is_stmt 1 view .LVU530 + 1705 .L159: + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1706 .loc 1 812 11 view .LVU531 + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1707 .loc 1 812 12 is_stmt 0 view .LVU532 + 1708 0096 314B ldr r3, .L177+4 + 1709 0098 9B68 ldr r3, [r3, #8] + 1710 009a 03F00C03 and r3, r3, #12 + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1711 .loc 1 812 63 view .LVU533 + 1712 009e 6268 ldr r2, [r4, #4] + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1713 .loc 1 812 11 view .LVU534 + 1714 00a0 B3EB820F cmp r3, r2, lsl #2 + 1715 00a4 16D0 beq .L155 + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1716 .loc 1 814 7 is_stmt 1 view .LVU535 + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1717 .loc 1 814 12 is_stmt 0 view .LVU536 + 1718 00a6 FFF7FEFF bl HAL_GetTick + 1719 .LVL114: + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1720 .loc 1 814 26 view .LVU537 + 1721 00aa 801B subs r0, r0, r6 + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1722 .loc 1 814 10 view .LVU538 + 1723 00ac 41F28833 movw r3, #5000 + 1724 00b0 9842 cmp r0, r3 + 1725 00b2 F0D9 bls .L159 + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1726 .loc 1 816 16 view .LVU539 + 1727 00b4 0320 movs r0, #3 + 1728 00b6 45E0 b .L150 + 1729 .LVL115: + 1730 .L175: + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1731 .loc 1 783 7 is_stmt 1 view .LVU540 + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1732 .loc 1 783 11 is_stmt 0 view .LVU541 + 1733 00b8 284A ldr r2, .L177+4 + 1734 00ba 1268 ldr r2, [r2] + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1735 .loc 1 783 10 view .LVU542 + 1736 00bc 12F4003F tst r2, #131072 + 1737 00c0 E0D1 bne .L157 + ARM GAS /tmp/ccgleihc.s page 55 + + + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1738 .loc 1 785 16 view .LVU543 + 1739 00c2 0120 movs r0, #1 + 1740 .LVL116: + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1741 .loc 1 785 16 view .LVU544 + 1742 00c4 3EE0 b .L150 + 1743 .LVL117: + 1744 .L176: + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1745 .loc 1 792 7 is_stmt 1 view .LVU545 + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1746 .loc 1 792 11 is_stmt 0 view .LVU546 + 1747 00c6 254A ldr r2, .L177+4 + 1748 00c8 1268 ldr r2, [r2] + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1749 .loc 1 792 10 view .LVU547 + 1750 00ca 12F0007F tst r2, #33554432 + 1751 00ce D9D1 bne .L157 + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1752 .loc 1 794 16 view .LVU548 + 1753 00d0 0120 movs r0, #1 + 1754 .LVL118: + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1755 .loc 1 794 16 view .LVU549 + 1756 00d2 37E0 b .L150 + 1757 .LVL119: + 1758 .L155: + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1759 .loc 1 822 3 is_stmt 1 view .LVU550 + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1760 .loc 1 822 18 is_stmt 0 view .LVU551 + 1761 00d4 204B ldr r3, .L177 + 1762 00d6 1B68 ldr r3, [r3] + 1763 00d8 03F00F03 and r3, r3, #15 + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1764 .loc 1 822 6 view .LVU552 + 1765 00dc AB42 cmp r3, r5 + 1766 00de 0AD9 bls .L161 + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1767 .loc 1 825 5 is_stmt 1 view .LVU553 + 1768 00e0 1D4A ldr r2, .L177 + 1769 00e2 1368 ldr r3, [r2] + 1770 00e4 23F00F03 bic r3, r3, #15 + 1771 00e8 2B43 orrs r3, r3, r5 + 1772 00ea 1360 str r3, [r2] + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1773 .loc 1 829 5 view .LVU554 + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1774 .loc 1 829 9 is_stmt 0 view .LVU555 + 1775 00ec 1368 ldr r3, [r2] + 1776 00ee 03F00F03 and r3, r3, #15 + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1777 .loc 1 829 8 view .LVU556 + 1778 00f2 AB42 cmp r3, r5 + 1779 00f4 2DD1 bne .L170 + 1780 .L161: + ARM GAS /tmp/ccgleihc.s page 56 + + + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1781 .loc 1 836 3 is_stmt 1 view .LVU557 + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1782 .loc 1 836 26 is_stmt 0 view .LVU558 + 1783 00f6 2368 ldr r3, [r4] + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1784 .loc 1 836 6 view .LVU559 + 1785 00f8 13F0040F tst r3, #4 + 1786 00fc 06D0 beq .L162 + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider); + 1787 .loc 1 838 5 is_stmt 1 view .LVU560 + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1788 .loc 1 839 5 view .LVU561 + 1789 00fe 174A ldr r2, .L177+4 + 1790 0100 9368 ldr r3, [r2, #8] + 1791 0102 23F4E053 bic r3, r3, #7168 + 1792 0106 E168 ldr r1, [r4, #12] + 1793 0108 0B43 orrs r3, r3, r1 + 1794 010a 9360 str r3, [r2, #8] + 1795 .L162: + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1796 .loc 1 843 3 view .LVU562 + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1797 .loc 1 843 26 is_stmt 0 view .LVU563 + 1798 010c 2368 ldr r3, [r4] + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1799 .loc 1 843 6 view .LVU564 + 1800 010e 13F0080F tst r3, #8 + 1801 0112 07D0 beq .L163 + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3)); + 1802 .loc 1 845 5 is_stmt 1 view .LVU565 + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1803 .loc 1 846 5 view .LVU566 + 1804 0114 114A ldr r2, .L177+4 + 1805 0116 9368 ldr r3, [r2, #8] + 1806 0118 23F46043 bic r3, r3, #57344 + 1807 011c 2169 ldr r1, [r4, #16] + 1808 011e 43EAC103 orr r3, r3, r1, lsl #3 + 1809 0122 9360 str r3, [r2, #8] + 1810 .L163: + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1811 .loc 1 850 3 view .LVU567 + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1812 .loc 1 850 21 is_stmt 0 view .LVU568 + 1813 0124 FFF7FEFF bl HAL_RCC_GetSysClockFreq + 1814 .LVL120: + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1815 .loc 1 850 68 view .LVU569 + 1816 0128 0C4B ldr r3, .L177+4 + 1817 012a 9B68 ldr r3, [r3, #8] + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1818 .loc 1 850 92 view .LVU570 + 1819 012c C3F30313 ubfx r3, r3, #4, #4 + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1820 .loc 1 850 63 view .LVU571 + 1821 0130 0B4A ldr r2, .L177+8 + 1822 0132 D35C ldrb r3, [r2, r3] @ zero_extendqisi2 + ARM GAS /tmp/ccgleihc.s page 57 + + + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1823 .loc 1 850 47 view .LVU572 + 1824 0134 D840 lsrs r0, r0, r3 + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1825 .loc 1 850 19 view .LVU573 + 1826 0136 0B4B ldr r3, .L177+12 + 1827 0138 1860 str r0, [r3] + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1828 .loc 1 853 3 is_stmt 1 view .LVU574 + 1829 013a 0B4B ldr r3, .L177+16 + 1830 013c 1868 ldr r0, [r3] + 1831 013e FFF7FEFF bl HAL_InitTick + 1832 .LVL121: + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1833 .loc 1 855 3 view .LVU575 + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1834 .loc 1 855 10 is_stmt 0 view .LVU576 + 1835 0142 0020 movs r0, #0 + 1836 .L150: + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1837 .loc 1 856 1 view .LVU577 + 1838 0144 70BD pop {r4, r5, r6, pc} + 1839 .LVL122: + 1840 .L164: + 1841 .LCFI13: + 1842 .cfi_def_cfa_offset 0 + 1843 .cfi_restore 4 + 1844 .cfi_restore 5 + 1845 .cfi_restore 6 + 1846 .cfi_restore 14 + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1847 .loc 1 729 12 view .LVU578 + 1848 0146 0120 movs r0, #1 + 1849 .LVL123: + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 1850 .loc 1 856 1 view .LVU579 + 1851 0148 7047 bx lr + 1852 .LVL124: + 1853 .L165: + 1854 .LCFI14: + 1855 .cfi_def_cfa_offset 16 + 1856 .cfi_offset 4, -16 + 1857 .cfi_offset 5, -12 + 1858 .cfi_offset 6, -8 + 1859 .cfi_offset 14, -4 + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1860 .loc 1 750 14 view .LVU580 + 1861 014a 0120 movs r0, #1 + 1862 .LVL125: + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1863 .loc 1 750 14 view .LVU581 + 1864 014c FAE7 b .L150 + 1865 .LVL126: + 1866 .L168: + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1867 .loc 1 803 16 view .LVU582 + 1868 014e 0120 movs r0, #1 + ARM GAS /tmp/ccgleihc.s page 58 + + + 1869 .LVL127: + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1870 .loc 1 803 16 view .LVU583 + 1871 0150 F8E7 b .L150 + 1872 .LVL128: + 1873 .L170: + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1874 .loc 1 831 14 view .LVU584 + 1875 0152 0120 movs r0, #1 + 1876 0154 F6E7 b .L150 + 1877 .L178: + 1878 0156 00BF .align 2 + 1879 .L177: + 1880 0158 003C0240 .word 1073888256 + 1881 015c 00380240 .word 1073887232 + 1882 0160 00000000 .word AHBPrescTable + 1883 0164 00000000 .word SystemCoreClock + 1884 0168 00000000 .word uwTickPrio + 1885 .cfi_endproc + 1886 .LFE143: + 1888 .section .text.HAL_RCC_GetHCLKFreq,"ax",%progbits + 1889 .align 1 + 1890 .global HAL_RCC_GetHCLKFreq + 1891 .syntax unified + 1892 .thumb + 1893 .thumb_func + 1894 .fpu fpv5-d16 + 1896 HAL_RCC_GetHCLKFreq: + 1897 .LFB148: +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Returns the HCLK frequency +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note Each time HCLK changes, this function must be called to update the +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * right HCLK value. Otherwise, any configuration based on this function will be incorrect +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note The SystemCoreClock CMSIS variable is used to store System Clock Frequency. +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval HCLK frequency +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t HAL_RCC_GetHCLKFreq(void) +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1898 .loc 1 1056 1 is_stmt 1 view -0 + 1899 .cfi_startproc + 1900 @ args = 0, pretend = 0, frame = 0 + 1901 @ frame_needed = 0, uses_anonymous_args = 0 + 1902 @ link register save eliminated. +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return SystemCoreClock; + 1903 .loc 1 1057 3 view .LVU586 +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1904 .loc 1 1058 1 is_stmt 0 view .LVU587 + 1905 0000 014B ldr r3, .L180 + 1906 0002 1868 ldr r0, [r3] + 1907 0004 7047 bx lr + 1908 .L181: + 1909 0006 00BF .align 2 + 1910 .L180: + 1911 0008 00000000 .word SystemCoreClock + 1912 .cfi_endproc + 1913 .LFE148: + ARM GAS /tmp/ccgleihc.s page 59 + + + 1915 .section .text.HAL_RCC_GetPCLK1Freq,"ax",%progbits + 1916 .align 1 + 1917 .global HAL_RCC_GetPCLK1Freq + 1918 .syntax unified + 1919 .thumb + 1920 .thumb_func + 1921 .fpu fpv5-d16 + 1923 HAL_RCC_GetPCLK1Freq: + 1924 .LFB149: +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Returns the PCLK1 frequency +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note Each time PCLK1 changes, this function must be called to update the +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * right PCLK1 value. Otherwise, any configuration based on this function will be incorrec +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval PCLK1 frequency +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t HAL_RCC_GetPCLK1Freq(void) +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1925 .loc 1 1067 1 is_stmt 1 view -0 + 1926 .cfi_startproc + 1927 @ args = 0, pretend = 0, frame = 0 + 1928 @ frame_needed = 0, uses_anonymous_args = 0 + 1929 0000 08B5 push {r3, lr} + 1930 .LCFI15: + 1931 .cfi_def_cfa_offset 8 + 1932 .cfi_offset 3, -8 + 1933 .cfi_offset 14, -4 +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos + 1934 .loc 1 1069 3 view .LVU589 + 1935 .loc 1 1069 11 is_stmt 0 view .LVU590 + 1936 0002 FFF7FEFF bl HAL_RCC_GetHCLKFreq + 1937 .LVL129: + 1938 .loc 1 1069 54 view .LVU591 + 1939 0006 044B ldr r3, .L184 + 1940 0008 9B68 ldr r3, [r3, #8] + 1941 .loc 1 1069 79 view .LVU592 + 1942 000a C3F38223 ubfx r3, r3, #10, #3 + 1943 .loc 1 1069 49 view .LVU593 + 1944 000e 034A ldr r2, .L184+4 + 1945 0010 D35C ldrb r3, [r2, r3] @ zero_extendqisi2 +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1946 .loc 1 1070 1 view .LVU594 + 1947 0012 D840 lsrs r0, r0, r3 + 1948 0014 08BD pop {r3, pc} + 1949 .L185: + 1950 0016 00BF .align 2 + 1951 .L184: + 1952 0018 00380240 .word 1073887232 + 1953 001c 00000000 .word APBPrescTable + 1954 .cfi_endproc + 1955 .LFE149: + 1957 .section .text.HAL_RCC_GetPCLK2Freq,"ax",%progbits + 1958 .align 1 + 1959 .global HAL_RCC_GetPCLK2Freq + 1960 .syntax unified + 1961 .thumb + ARM GAS /tmp/ccgleihc.s page 60 + + + 1962 .thumb_func + 1963 .fpu fpv5-d16 + 1965 HAL_RCC_GetPCLK2Freq: + 1966 .LFB150: +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Returns the PCLK2 frequency +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note Each time PCLK2 changes, this function must be called to update the +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * right PCLK2 value. Otherwise, any configuration based on this function will be incorrec +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval PCLK2 frequency +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** uint32_t HAL_RCC_GetPCLK2Freq(void) +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 1967 .loc 1 1079 1 is_stmt 1 view -0 + 1968 .cfi_startproc + 1969 @ args = 0, pretend = 0, frame = 0 + 1970 @ frame_needed = 0, uses_anonymous_args = 0 + 1971 0000 08B5 push {r3, lr} + 1972 .LCFI16: + 1973 .cfi_def_cfa_offset 8 + 1974 .cfi_offset 3, -8 + 1975 .cfi_offset 14, -4 +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get HCLK source and Compute PCLK2 frequency ---------------------------*/ +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos + 1976 .loc 1 1081 3 view .LVU596 + 1977 .loc 1 1081 11 is_stmt 0 view .LVU597 + 1978 0002 FFF7FEFF bl HAL_RCC_GetHCLKFreq + 1979 .LVL130: + 1980 .loc 1 1081 54 view .LVU598 + 1981 0006 044B ldr r3, .L188 + 1982 0008 9B68 ldr r3, [r3, #8] + 1983 .loc 1 1081 79 view .LVU599 + 1984 000a C3F34233 ubfx r3, r3, #13, #3 + 1985 .loc 1 1081 49 view .LVU600 + 1986 000e 034A ldr r2, .L188+4 + 1987 0010 D35C ldrb r3, [r2, r3] @ zero_extendqisi2 +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 1988 .loc 1 1082 1 view .LVU601 + 1989 0012 D840 lsrs r0, r0, r3 + 1990 0014 08BD pop {r3, pc} + 1991 .L189: + 1992 0016 00BF .align 2 + 1993 .L188: + 1994 0018 00380240 .word 1073887232 + 1995 001c 00000000 .word APBPrescTable + 1996 .cfi_endproc + 1997 .LFE150: + 1999 .section .text.HAL_RCC_GetOscConfig,"ax",%progbits + 2000 .align 1 + 2001 .global HAL_RCC_GetOscConfig + 2002 .syntax unified + 2003 .thumb + 2004 .thumb_func + 2005 .fpu fpv5-d16 + 2007 HAL_RCC_GetOscConfig: + 2008 .LVL131: + 2009 .LFB151: + ARM GAS /tmp/ccgleihc.s page 61 + + +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Configures the RCC_OscInitStruct according to the internal +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * RCC configuration registers. +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @param RCC_OscInitStruct pointer to an RCC_OscInitTypeDef structure that +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * will be configured. +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval None +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2010 .loc 1 1092 1 is_stmt 1 view -0 + 2011 .cfi_startproc + 2012 @ args = 0, pretend = 0, frame = 0 + 2013 @ frame_needed = 0, uses_anonymous_args = 0 + 2014 @ link register save eliminated. +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Set all possible values for the Oscillator type parameter ---------------*/ +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLA + 2015 .loc 1 1094 3 view .LVU603 + 2016 .loc 1 1094 37 is_stmt 0 view .LVU604 + 2017 0000 0F23 movs r3, #15 + 2018 0002 0360 str r3, [r0] +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get the HSE configuration -----------------------------------------------*/ +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((RCC->CR & RCC_CR_HSEBYP) == RCC_CR_HSEBYP) + 2019 .loc 1 1097 3 is_stmt 1 view .LVU605 + 2020 .loc 1 1097 11 is_stmt 0 view .LVU606 + 2021 0004 354B ldr r3, .L203 + 2022 0006 1B68 ldr r3, [r3] + 2023 .loc 1 1097 6 view .LVU607 + 2024 0008 13F4802F tst r3, #262144 + 2025 000c 46D0 beq .L191 +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS; + 2026 .loc 1 1099 5 is_stmt 1 view .LVU608 + 2027 .loc 1 1099 33 is_stmt 0 view .LVU609 + 2028 000e 4FF4A023 mov r3, #327680 + 2029 0012 4360 str r3, [r0, #4] + 2030 .L192: +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else if ((RCC->CR & RCC_CR_HSEON) == RCC_CR_HSEON) +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->HSEState = RCC_HSE_ON; +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->HSEState = RCC_HSE_OFF; +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get the HSI configuration -----------------------------------------------*/ +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((RCC->CR & RCC_CR_HSION) == RCC_CR_HSION) + 2031 .loc 1 1111 3 is_stmt 1 view .LVU610 + 2032 .loc 1 1111 11 is_stmt 0 view .LVU611 + 2033 0014 314B ldr r3, .L203 + 2034 0016 1B68 ldr r3, [r3] + 2035 .loc 1 1111 6 view .LVU612 + 2036 0018 13F0010F tst r3, #1 + 2037 001c 4AD0 beq .L194 + ARM GAS /tmp/ccgleihc.s page 62 + + +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->HSIState = RCC_HSI_ON; + 2038 .loc 1 1113 5 is_stmt 1 view .LVU613 + 2039 .loc 1 1113 33 is_stmt 0 view .LVU614 + 2040 001e 0123 movs r3, #1 + 2041 0020 C360 str r3, [r0, #12] + 2042 .L195: +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->HSIState = RCC_HSI_OFF; +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR & RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_ + 2043 .loc 1 1120 3 is_stmt 1 view .LVU615 + 2044 .loc 1 1120 59 is_stmt 0 view .LVU616 + 2045 0022 2E4A ldr r2, .L203 + 2046 0024 1368 ldr r3, [r2] + 2047 .loc 1 1120 44 view .LVU617 + 2048 0026 C3F3C403 ubfx r3, r3, #3, #5 + 2049 .loc 1 1120 42 view .LVU618 + 2050 002a 0361 str r3, [r0, #16] +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get the LSE configuration -----------------------------------------------*/ +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((RCC->BDCR & RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP) + 2051 .loc 1 1123 3 is_stmt 1 view .LVU619 + 2052 .loc 1 1123 11 is_stmt 0 view .LVU620 + 2053 002c 136F ldr r3, [r2, #112] + 2054 .loc 1 1123 6 view .LVU621 + 2055 002e 13F0040F tst r3, #4 + 2056 0032 42D0 beq .L196 +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS; + 2057 .loc 1 1125 5 is_stmt 1 view .LVU622 + 2058 .loc 1 1125 33 is_stmt 0 view .LVU623 + 2059 0034 0523 movs r3, #5 + 2060 0036 8360 str r3, [r0, #8] + 2061 .L197: +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else if ((RCC->BDCR & RCC_BDCR_LSEON) == RCC_BDCR_LSEON) +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->LSEState = RCC_LSE_ON; +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->LSEState = RCC_LSE_OFF; +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get the LSI configuration -----------------------------------------------*/ +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((RCC->CSR & RCC_CSR_LSION) == RCC_CSR_LSION) + 2062 .loc 1 1137 3 is_stmt 1 view .LVU624 + 2063 .loc 1 1137 11 is_stmt 0 view .LVU625 + 2064 0038 284B ldr r3, .L203 + 2065 003a 5B6F ldr r3, [r3, #116] + 2066 .loc 1 1137 6 view .LVU626 + 2067 003c 13F0010F tst r3, #1 + 2068 0040 46D0 beq .L199 + ARM GAS /tmp/ccgleihc.s page 63 + + +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->LSIState = RCC_LSI_ON; + 2069 .loc 1 1139 5 is_stmt 1 view .LVU627 + 2070 .loc 1 1139 33 is_stmt 0 view .LVU628 + 2071 0042 0123 movs r3, #1 + 2072 0044 4361 str r3, [r0, #20] + 2073 .L200: +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->LSIState = RCC_LSI_OFF; +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get the PLL configuration -----------------------------------------------*/ +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if ((RCC->CR & RCC_CR_PLLON) == RCC_CR_PLLON) + 2074 .loc 1 1147 3 is_stmt 1 view .LVU629 + 2075 .loc 1 1147 11 is_stmt 0 view .LVU630 + 2076 0046 254B ldr r3, .L203 + 2077 0048 1B68 ldr r3, [r3] + 2078 .loc 1 1147 6 view .LVU631 + 2079 004a 13F0807F tst r3, #16777216 + 2080 004e 42D0 beq .L201 +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON; + 2081 .loc 1 1149 5 is_stmt 1 view .LVU632 + 2082 .loc 1 1149 37 is_stmt 0 view .LVU633 + 2083 0050 0223 movs r3, #2 + 2084 0052 8361 str r3, [r0, #24] + 2085 .L202: +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** else +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLState = RCC_PLL_OFF; +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLSource = (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + 2086 .loc 1 1155 3 is_stmt 1 view .LVU634 + 2087 .loc 1 1155 52 is_stmt 0 view .LVU635 + 2088 0054 214A ldr r2, .L203 + 2089 0056 5368 ldr r3, [r2, #4] + 2090 .loc 1 1155 38 view .LVU636 + 2091 0058 03F48003 and r3, r3, #4194304 + 2092 .loc 1 1155 36 view .LVU637 + 2093 005c C361 str r3, [r0, #28] +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLM = (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM); + 2094 .loc 1 1156 3 is_stmt 1 view .LVU638 + 2095 .loc 1 1156 47 is_stmt 0 view .LVU639 + 2096 005e 5368 ldr r3, [r2, #4] + 2097 .loc 1 1156 33 view .LVU640 + 2098 0060 03F03F03 and r3, r3, #63 + 2099 .loc 1 1156 31 view .LVU641 + 2100 0064 0362 str r3, [r0, #32] +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLN = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Po + 2101 .loc 1 1157 3 is_stmt 1 view .LVU642 + 2102 .loc 1 1157 48 is_stmt 0 view .LVU643 + 2103 0066 5368 ldr r3, [r2, #4] + 2104 .loc 1 1157 33 view .LVU644 + 2105 0068 C3F38813 ubfx r3, r3, #6, #9 + ARM GAS /tmp/ccgleihc.s page 64 + + + 2106 .loc 1 1157 31 view .LVU645 + 2107 006c 4362 str r3, [r0, #36] +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLP = (uint32_t)((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) + RCC_PLLCFGR_PLLP_0 + 2108 .loc 1 1158 3 is_stmt 1 view .LVU646 + 2109 .loc 1 1158 50 is_stmt 0 view .LVU647 + 2110 006e 5368 ldr r3, [r2, #4] + 2111 .loc 1 1158 60 view .LVU648 + 2112 0070 03F44033 and r3, r3, #196608 + 2113 .loc 1 1158 80 view .LVU649 + 2114 0074 03F58033 add r3, r3, #65536 + 2115 .loc 1 1158 33 view .LVU650 + 2116 0078 DB0B lsrs r3, r3, #15 + 2117 .loc 1 1158 31 view .LVU651 + 2118 007a 8362 str r3, [r0, #40] +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLQ = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLQ) >> RCC_PLLCFGR_PLLQ_Po + 2119 .loc 1 1159 3 is_stmt 1 view .LVU652 + 2120 .loc 1 1159 48 is_stmt 0 view .LVU653 + 2121 007c 5368 ldr r3, [r2, #4] + 2122 .loc 1 1159 33 view .LVU654 + 2123 007e C3F30363 ubfx r3, r3, #24, #4 + 2124 .loc 1 1159 31 view .LVU655 + 2125 0082 C362 str r3, [r0, #44] +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #if defined (RCC_PLLCFGR_PLLR) +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_OscInitStruct->PLL.PLLR = (uint32_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> POSITION_VAL(RCC_PL + 2126 .loc 1 1161 3 is_stmt 1 view .LVU656 + 2127 .loc 1 1161 48 is_stmt 0 view .LVU657 + 2128 0084 5368 ldr r3, [r2, #4] + 2129 .loc 1 1161 58 view .LVU658 + 2130 0086 03F0E043 and r3, r3, #1879048192 + 2131 .LVL132: + 2132 .LBB7: + 2133 .LBI7: + 2134 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h" + 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** + 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h + 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file + 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.0.4 + 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018 + 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ + 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* + 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 + 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may + 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. + 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at + 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 + 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software + 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT + 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and + 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. + 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 24:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccgleihc.s page 65 + + + 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H + 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H + 27:Drivers/CMSIS/Include/cmsis_gcc.h **** + 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ + 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" + 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" + 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" + 33:Drivers/CMSIS/Include/cmsis_gcc.h **** + 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ + 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin + 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) + 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 38:Drivers/CMSIS/Include/cmsis_gcc.h **** + 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ + 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM + 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm + 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE + 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline + 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE + 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline + 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE + 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline + 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN + 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) + 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED + 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) + 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK + 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) + 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED + 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) + 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT + 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION + 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) + 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ + 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE + 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + ARM GAS /tmp/ccgleihc.s page 66 + + + 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- + 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ + 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add + 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE + 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- + 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ + 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add + 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED + 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) + 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT + 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict + 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 116:Drivers/CMSIS/Include/cmsis_gcc.h **** + 117:Drivers/CMSIS/Include/cmsis_gcc.h **** + 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ + 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface + 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 123:Drivers/CMSIS/Include/cmsis_gcc.h **** + 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts + 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void) + 130:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); + 132:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 133:Drivers/CMSIS/Include/cmsis_gcc.h **** + 134:Drivers/CMSIS/Include/cmsis_gcc.h **** + 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts + 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. + 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + ARM GAS /tmp/ccgleihc.s page 67 + + + 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) + 141:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); + 143:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 144:Drivers/CMSIS/Include/cmsis_gcc.h **** + 145:Drivers/CMSIS/Include/cmsis_gcc.h **** + 146:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register + 148:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register. + 149:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value + 150:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 151:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) + 152:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 153:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 154:Drivers/CMSIS/Include/cmsis_gcc.h **** + 155:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) ); + 156:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 157:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 158:Drivers/CMSIS/Include/cmsis_gcc.h **** + 159:Drivers/CMSIS/Include/cmsis_gcc.h **** + 160:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 161:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 162:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure) + 163:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode. + 164:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value + 165:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 166:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) + 167:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 168:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 169:Drivers/CMSIS/Include/cmsis_gcc.h **** + 170:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + 171:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 172:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 174:Drivers/CMSIS/Include/cmsis_gcc.h **** + 175:Drivers/CMSIS/Include/cmsis_gcc.h **** + 176:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 177:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register + 178:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register. + 179:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 180:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 181:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) + 182:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 183:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + 184:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 185:Drivers/CMSIS/Include/cmsis_gcc.h **** + 186:Drivers/CMSIS/Include/cmsis_gcc.h **** + 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 188:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure) + 190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state. + 191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 192:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) + 194:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + ARM GAS /tmp/ccgleihc.s page 68 + + + 196:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 197:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 198:Drivers/CMSIS/Include/cmsis_gcc.h **** + 199:Drivers/CMSIS/Include/cmsis_gcc.h **** + 200:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 201:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register + 202:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register. + 203:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value + 204:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 205:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void) + 206:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 207:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 208:Drivers/CMSIS/Include/cmsis_gcc.h **** + 209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + 210:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 211:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 212:Drivers/CMSIS/Include/cmsis_gcc.h **** + 213:Drivers/CMSIS/Include/cmsis_gcc.h **** + 214:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 215:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register + 216:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register. + 217:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value + 218:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 219:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void) + 220:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 221:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 222:Drivers/CMSIS/Include/cmsis_gcc.h **** + 223:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + 224:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 225:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 226:Drivers/CMSIS/Include/cmsis_gcc.h **** + 227:Drivers/CMSIS/Include/cmsis_gcc.h **** + 228:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register + 230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register. + 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value + 232:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(void) + 234:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 235:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 236:Drivers/CMSIS/Include/cmsis_gcc.h **** + 237:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + 238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 239:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 240:Drivers/CMSIS/Include/cmsis_gcc.h **** + 241:Drivers/CMSIS/Include/cmsis_gcc.h **** + 242:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer + 244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP). + 245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 246:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void) + 248:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 250:Drivers/CMSIS/Include/cmsis_gcc.h **** + 251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) ); + 252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + ARM GAS /tmp/ccgleihc.s page 69 + + + 253:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 254:Drivers/CMSIS/Include/cmsis_gcc.h **** + 255:Drivers/CMSIS/Include/cmsis_gcc.h **** + 256:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 257:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure) + 259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s + 260:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 261:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 262:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) + 263:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 264:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 265:Drivers/CMSIS/Include/cmsis_gcc.h **** + 266:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + 267:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 268:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 269:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 270:Drivers/CMSIS/Include/cmsis_gcc.h **** + 271:Drivers/CMSIS/Include/cmsis_gcc.h **** + 272:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 273:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer + 274:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP). + 275:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 276:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 277:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) + 278:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 279:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); + 280:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 281:Drivers/CMSIS/Include/cmsis_gcc.h **** + 282:Drivers/CMSIS/Include/cmsis_gcc.h **** + 283:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 284:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 285:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 286:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta + 287:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 288:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 289:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) + 290:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 291:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); + 292:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 293:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 294:Drivers/CMSIS/Include/cmsis_gcc.h **** + 295:Drivers/CMSIS/Include/cmsis_gcc.h **** + 296:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 297:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer + 298:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP). + 299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 300:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void) + 302:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 304:Drivers/CMSIS/Include/cmsis_gcc.h **** + 305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) ); + 306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 307:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 308:Drivers/CMSIS/Include/cmsis_gcc.h **** + 309:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccgleihc.s page 70 + + + 310:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 311:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 312:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure) + 313:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat + 314:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 315:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 316:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) + 317:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 319:Drivers/CMSIS/Include/cmsis_gcc.h **** + 320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + 321:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 322:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 323:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 324:Drivers/CMSIS/Include/cmsis_gcc.h **** + 325:Drivers/CMSIS/Include/cmsis_gcc.h **** + 326:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 327:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer + 328:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP). + 329:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 330:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 331:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) + 332:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); + 334:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 335:Drivers/CMSIS/Include/cmsis_gcc.h **** + 336:Drivers/CMSIS/Include/cmsis_gcc.h **** + 337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 338:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 339:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure) + 340:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + 341:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 342:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 343:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) + 344:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 345:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); + 346:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 347:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 348:Drivers/CMSIS/Include/cmsis_gcc.h **** + 349:Drivers/CMSIS/Include/cmsis_gcc.h **** + 350:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 351:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 352:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Stack Pointer (non-secure) + 353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + 354:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value + 355:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) + 357:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 359:Drivers/CMSIS/Include/cmsis_gcc.h **** + 360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + 361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 362:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 363:Drivers/CMSIS/Include/cmsis_gcc.h **** + 364:Drivers/CMSIS/Include/cmsis_gcc.h **** + 365:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure) + ARM GAS /tmp/ccgleihc.s page 71 + + + 367:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + 368:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set + 369:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 370:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) + 371:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); + 373:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 374:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 375:Drivers/CMSIS/Include/cmsis_gcc.h **** + 376:Drivers/CMSIS/Include/cmsis_gcc.h **** + 377:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 378:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask + 379:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register. + 380:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 381:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 382:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) + 383:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 384:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 385:Drivers/CMSIS/Include/cmsis_gcc.h **** + 386:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 387:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 388:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 389:Drivers/CMSIS/Include/cmsis_gcc.h **** + 390:Drivers/CMSIS/Include/cmsis_gcc.h **** + 391:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 392:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 393:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure) + 394:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg + 395:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 396:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 397:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) + 398:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 399:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 400:Drivers/CMSIS/Include/cmsis_gcc.h **** + 401:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + 402:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 403:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 404:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 405:Drivers/CMSIS/Include/cmsis_gcc.h **** + 406:Drivers/CMSIS/Include/cmsis_gcc.h **** + 407:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 408:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask + 409:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register. + 410:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 411:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 412:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) + 413:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 415:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 416:Drivers/CMSIS/Include/cmsis_gcc.h **** + 417:Drivers/CMSIS/Include/cmsis_gcc.h **** + 418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 419:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure) + 421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + 422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 423:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + ARM GAS /tmp/ccgleihc.s page 72 + + + 424:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) + 425:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 426:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); + 427:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 428:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 429:Drivers/CMSIS/Include/cmsis_gcc.h **** + 430:Drivers/CMSIS/Include/cmsis_gcc.h **** + 431:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 433:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 434:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 435:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ + 436:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + 437:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 438:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 439:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void) + 440:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 441:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory"); + 442:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 443:Drivers/CMSIS/Include/cmsis_gcc.h **** + 444:Drivers/CMSIS/Include/cmsis_gcc.h **** + 445:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 446:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ + 447:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR. + 448:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 449:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 450:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void) + 451:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 452:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory"); + 453:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 454:Drivers/CMSIS/Include/cmsis_gcc.h **** + 455:Drivers/CMSIS/Include/cmsis_gcc.h **** + 456:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 457:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority + 458:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register. + 459:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 460:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 461:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) + 462:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 463:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 464:Drivers/CMSIS/Include/cmsis_gcc.h **** + 465:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + 466:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 467:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 468:Drivers/CMSIS/Include/cmsis_gcc.h **** + 469:Drivers/CMSIS/Include/cmsis_gcc.h **** + 470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 471:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure) + 473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state. + 474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 475:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) + 477:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 479:Drivers/CMSIS/Include/cmsis_gcc.h **** + 480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + ARM GAS /tmp/ccgleihc.s page 73 + + + 481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 482:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 483:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 484:Drivers/CMSIS/Include/cmsis_gcc.h **** + 485:Drivers/CMSIS/Include/cmsis_gcc.h **** + 486:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority + 488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register. + 489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 490:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) + 492:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); + 494:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 495:Drivers/CMSIS/Include/cmsis_gcc.h **** + 496:Drivers/CMSIS/Include/cmsis_gcc.h **** + 497:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 498:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 499:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure) + 500:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state. + 501:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 502:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 503:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) + 504:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 505:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); + 506:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 507:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 508:Drivers/CMSIS/Include/cmsis_gcc.h **** + 509:Drivers/CMSIS/Include/cmsis_gcc.h **** + 510:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 511:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition + 512:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable + 513:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level. + 514:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 515:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 516:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) + 517:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 518:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); + 519:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 520:Drivers/CMSIS/Include/cmsis_gcc.h **** + 521:Drivers/CMSIS/Include/cmsis_gcc.h **** + 522:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 523:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask + 524:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register. + 525:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 526:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) + 528:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 530:Drivers/CMSIS/Include/cmsis_gcc.h **** + 531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + 532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 533:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 534:Drivers/CMSIS/Include/cmsis_gcc.h **** + 535:Drivers/CMSIS/Include/cmsis_gcc.h **** + 536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 537:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + ARM GAS /tmp/ccgleihc.s page 74 + + + 538:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure) + 539:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state. + 540:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 541:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 542:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) + 543:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 544:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 545:Drivers/CMSIS/Include/cmsis_gcc.h **** + 546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + 547:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 548:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 549:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 550:Drivers/CMSIS/Include/cmsis_gcc.h **** + 551:Drivers/CMSIS/Include/cmsis_gcc.h **** + 552:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 553:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask + 554:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register. + 555:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 556:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 557:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) + 558:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 559:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); + 560:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 561:Drivers/CMSIS/Include/cmsis_gcc.h **** + 562:Drivers/CMSIS/Include/cmsis_gcc.h **** + 563:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 564:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 565:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure) + 566:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state. + 567:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 568:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 569:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) + 570:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 571:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); + 572:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 573:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 574:Drivers/CMSIS/Include/cmsis_gcc.h **** + 575:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 576:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 577:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + 578:Drivers/CMSIS/Include/cmsis_gcc.h **** + 579:Drivers/CMSIS/Include/cmsis_gcc.h **** + 580:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 581:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + 582:Drivers/CMSIS/Include/cmsis_gcc.h **** + 583:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit + 585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 588:Drivers/CMSIS/Include/cmsis_gcc.h **** + 589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + 590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 591:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) + 593:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + ARM GAS /tmp/ccgleihc.s page 75 + + + 595:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 596:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 597:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 598:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 599:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 600:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + 601:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 602:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 603:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 604:Drivers/CMSIS/Include/cmsis_gcc.h **** + 605:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + 606:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 607:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure) + 608:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 609:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 610:Drivers/CMSIS/Include/cmsis_gcc.h **** + 611:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in + 612:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 613:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 614:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) + 615:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 616:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 617:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 618:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 619:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 620:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 621:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + 622:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 623:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 624:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 625:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 626:Drivers/CMSIS/Include/cmsis_gcc.h **** + 627:Drivers/CMSIS/Include/cmsis_gcc.h **** + 628:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 629:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit + 630:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 631:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 632:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 633:Drivers/CMSIS/Include/cmsis_gcc.h **** + 634:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + 635:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 636:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 637:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) + 638:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 639:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 640:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); + 645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 646:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 647:Drivers/CMSIS/Include/cmsis_gcc.h **** + 648:Drivers/CMSIS/Include/cmsis_gcc.h **** + 649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 650:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + ARM GAS /tmp/ccgleihc.s page 76 + + + 652:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 653:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 654:Drivers/CMSIS/Include/cmsis_gcc.h **** + 655:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s + 656:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 657:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 658:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) + 659:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 661:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 662:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 663:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 664:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); + 665:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 666:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 667:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 668:Drivers/CMSIS/Include/cmsis_gcc.h **** + 669:Drivers/CMSIS/Include/cmsis_gcc.h **** + 670:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 671:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit + 672:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 673:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 674:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 675:Drivers/CMSIS/Include/cmsis_gcc.h **** + 676:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + 677:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 678:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 679:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) + 680:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 681:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 682:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 683:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 684:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 685:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 686:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 687:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + 688:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 689:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 690:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 691:Drivers/CMSIS/Include/cmsis_gcc.h **** + 692:Drivers/CMSIS/Include/cmsis_gcc.h **** + 693:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 694:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 695:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure) + 696:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 697:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 698:Drivers/CMSIS/Include/cmsis_gcc.h **** + 699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec + 700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 701:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) + 703:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + ARM GAS /tmp/ccgleihc.s page 77 + + + 709:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + 710:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 711:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 712:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 713:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 714:Drivers/CMSIS/Include/cmsis_gcc.h **** + 715:Drivers/CMSIS/Include/cmsis_gcc.h **** + 716:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit + 718:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 719:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 720:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 721:Drivers/CMSIS/Include/cmsis_gcc.h **** + 722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + 723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + 724:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) + 726:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 727:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 728:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 729:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 730:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 731:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 732:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); + 733:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 734:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 735:Drivers/CMSIS/Include/cmsis_gcc.h **** + 736:Drivers/CMSIS/Include/cmsis_gcc.h **** + 737:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 738:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 739:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure) + 740:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 741:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 742:Drivers/CMSIS/Include/cmsis_gcc.h **** + 743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu + 744:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set + 745:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) + 747:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 748:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 749:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 750:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 751:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 752:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); + 753:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 754:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 756:Drivers/CMSIS/Include/cmsis_gcc.h **** + 757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + 759:Drivers/CMSIS/Include/cmsis_gcc.h **** + 760:Drivers/CMSIS/Include/cmsis_gcc.h **** + 761:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR + 763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register. + 764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value + 765:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + ARM GAS /tmp/ccgleihc.s page 78 + + + 766:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void) + 767:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 768:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 769:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 770:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr) + 771:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 772:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 773:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr(); + 775:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 776:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 777:Drivers/CMSIS/Include/cmsis_gcc.h **** + 778:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + 779:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 781:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 782:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U); + 783:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 784:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 785:Drivers/CMSIS/Include/cmsis_gcc.h **** + 786:Drivers/CMSIS/Include/cmsis_gcc.h **** + 787:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 788:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR + 789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register. + 790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set + 791:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) + 793:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 795:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 796:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr) + 797:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 798:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 799:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 800:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr); + 801:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 802:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); + 803:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 804:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 805:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr; + 806:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 807:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 808:Drivers/CMSIS/Include/cmsis_gcc.h **** + 809:Drivers/CMSIS/Include/cmsis_gcc.h **** + 810:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */ + 811:Drivers/CMSIS/Include/cmsis_gcc.h **** + 812:Drivers/CMSIS/Include/cmsis_gcc.h **** + 813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ + 814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + 815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions + 816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 817:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 818:Drivers/CMSIS/Include/cmsis_gcc.h **** + 819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. + 820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" + 821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ + 822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) + ARM GAS /tmp/ccgleihc.s page 79 + + + 823:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) + 824:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) + 825:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) + 826:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 827:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) + 828:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) + 829:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) + 830:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 831:Drivers/CMSIS/Include/cmsis_gcc.h **** + 832:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 833:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation + 834:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. + 835:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 836:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") + 837:Drivers/CMSIS/Include/cmsis_gcc.h **** + 838:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 839:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt + 840:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o + 841:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 842:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi") + 843:Drivers/CMSIS/Include/cmsis_gcc.h **** + 844:Drivers/CMSIS/Include/cmsis_gcc.h **** + 845:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 846:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event + 847:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter + 848:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. + 849:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 850:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe") + 851:Drivers/CMSIS/Include/cmsis_gcc.h **** + 852:Drivers/CMSIS/Include/cmsis_gcc.h **** + 853:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 854:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event + 855:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + 856:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 857:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") + 858:Drivers/CMSIS/Include/cmsis_gcc.h **** + 859:Drivers/CMSIS/Include/cmsis_gcc.h **** + 860:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 861:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier + 862:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, + 863:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, + 864:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. + 865:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) + 867:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); + 869:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 870:Drivers/CMSIS/Include/cmsis_gcc.h **** + 871:Drivers/CMSIS/Include/cmsis_gcc.h **** + 872:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 873:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Synchronization Barrier + 874:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Acts as a special kind of Data Memory Barrier. + 875:Drivers/CMSIS/Include/cmsis_gcc.h **** It completes when all explicit memory accesses before this instruction complete. + 876:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DSB(void) + 878:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory"); + ARM GAS /tmp/ccgleihc.s page 80 + + + 880:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 881:Drivers/CMSIS/Include/cmsis_gcc.h **** + 882:Drivers/CMSIS/Include/cmsis_gcc.h **** + 883:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 884:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Memory Barrier + 885:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Ensures the apparent order of the explicit memory operations before + 886:Drivers/CMSIS/Include/cmsis_gcc.h **** and after the instruction, without ensuring their completion. + 887:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 888:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DMB(void) + 889:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 890:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dmb 0xF":::"memory"); + 891:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 892:Drivers/CMSIS/Include/cmsis_gcc.h **** + 893:Drivers/CMSIS/Include/cmsis_gcc.h **** + 894:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 895:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (32 bit) + 896:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x785 + 897:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 898:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 899:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 900:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV(uint32_t value) + 901:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 902:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + 903:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_bswap32(value); + 904:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 905:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 906:Drivers/CMSIS/Include/cmsis_gcc.h **** + 907:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 908:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 909:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 910:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 911:Drivers/CMSIS/Include/cmsis_gcc.h **** + 912:Drivers/CMSIS/Include/cmsis_gcc.h **** + 913:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 914:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (16 bit) + 915:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes + 916:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 917:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 918:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 919:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) + 920:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 921:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 922:Drivers/CMSIS/Include/cmsis_gcc.h **** + 923:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 924:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 925:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 926:Drivers/CMSIS/Include/cmsis_gcc.h **** + 927:Drivers/CMSIS/Include/cmsis_gcc.h **** + 928:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 929:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (16 bit) + 930:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For exam + 931:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 932:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 933:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 934:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE int16_t __REVSH(int16_t value) + 935:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 936:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + ARM GAS /tmp/ccgleihc.s page 81 + + + 937:Drivers/CMSIS/Include/cmsis_gcc.h **** return (int16_t)__builtin_bswap16(value); + 938:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 939:Drivers/CMSIS/Include/cmsis_gcc.h **** int16_t result; + 940:Drivers/CMSIS/Include/cmsis_gcc.h **** + 941:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 942:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 943:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 944:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 945:Drivers/CMSIS/Include/cmsis_gcc.h **** + 946:Drivers/CMSIS/Include/cmsis_gcc.h **** + 947:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 948:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Rotate Right in unsigned value (32 bit) + 949:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Rotate Right (immediate) provides the value of the contents of a register rotated by a v + 950:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] op1 Value to rotate + 951:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] op2 Number of Bits to rotate + 952:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Rotated value + 953:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 954:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) + 955:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 956:Drivers/CMSIS/Include/cmsis_gcc.h **** op2 %= 32U; + 957:Drivers/CMSIS/Include/cmsis_gcc.h **** if (op2 == 0U) + 958:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 959:Drivers/CMSIS/Include/cmsis_gcc.h **** return op1; + 960:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 961:Drivers/CMSIS/Include/cmsis_gcc.h **** return (op1 >> op2) | (op1 << (32U - op2)); + 962:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 963:Drivers/CMSIS/Include/cmsis_gcc.h **** + 964:Drivers/CMSIS/Include/cmsis_gcc.h **** + 965:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 966:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Breakpoint + 967:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Causes the processor to enter Debug state. + 968:Drivers/CMSIS/Include/cmsis_gcc.h **** Debug tools can use this to investigate system state when the instruction at a particula + 969:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value is ignored by the processor. + 970:Drivers/CMSIS/Include/cmsis_gcc.h **** If required, a debugger can use it to store additional information about the break + 971:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 972:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __BKPT(value) __ASM volatile ("bkpt "#value) + 973:Drivers/CMSIS/Include/cmsis_gcc.h **** + 974:Drivers/CMSIS/Include/cmsis_gcc.h **** + 975:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 976:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse bit order of value + 977:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the bit order of the given value. + 978:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 979:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 980:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) + 2135 .loc 2 981 31 is_stmt 1 view .LVU659 + 2136 .LBB8: + 982:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 2137 .loc 2 983 3 view .LVU660 + 984:Drivers/CMSIS/Include/cmsis_gcc.h **** + 985:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 986:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 987:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + 2138 .loc 2 988 4 view .LVU661 + 2139 008a 4FF0E042 mov r2, #1879048192 + ARM GAS /tmp/ccgleihc.s page 82 + + + 2140 .syntax unified + 2141 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 2142 008e 92FAA2F2 rbit r2, r2 + 2143 @ 0 "" 2 + 2144 .LVL133: + 989:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 990:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + 991:Drivers/CMSIS/Include/cmsis_gcc.h **** + 992:Drivers/CMSIS/Include/cmsis_gcc.h **** result = value; /* r will be reversed bits of v; first get LSB of v */ + 993:Drivers/CMSIS/Include/cmsis_gcc.h **** for (value >>= 1U; value != 0U; value >>= 1U) + 994:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 995:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= 1U; + 996:Drivers/CMSIS/Include/cmsis_gcc.h **** result |= value & 1U; + 997:Drivers/CMSIS/Include/cmsis_gcc.h **** s--; + 998:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 999:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= s; /* shift when v's highest bits are zero */ +1000:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif +1001:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 2145 .loc 2 1001 3 view .LVU662 + 2146 .loc 2 1001 3 is_stmt 0 view .LVU663 + 2147 .thumb + 2148 .syntax unified + 2149 .LBE8: + 2150 .LBE7: + 2151 .loc 1 1161 33 view .LVU664 + 2152 0092 B2FA82F2 clz r2, r2 + 2153 0096 D340 lsrs r3, r3, r2 + 2154 .loc 1 1161 31 view .LVU665 + 2155 0098 0363 str r3, [r0, #48] +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** #endif +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2156 .loc 1 1163 1 view .LVU666 + 2157 009a 7047 bx lr + 2158 .L191: +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2159 .loc 1 1101 8 is_stmt 1 view .LVU667 +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2160 .loc 1 1101 16 is_stmt 0 view .LVU668 + 2161 009c 0F4B ldr r3, .L203 + 2162 009e 1B68 ldr r3, [r3] +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2163 .loc 1 1101 11 view .LVU669 + 2164 00a0 13F4803F tst r3, #65536 + 2165 00a4 03D0 beq .L193 +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2166 .loc 1 1103 5 is_stmt 1 view .LVU670 +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2167 .loc 1 1103 33 is_stmt 0 view .LVU671 + 2168 00a6 4FF48033 mov r3, #65536 + 2169 00aa 4360 str r3, [r0, #4] + 2170 00ac B2E7 b .L192 + 2171 .L193: +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2172 .loc 1 1107 5 is_stmt 1 view .LVU672 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2173 .loc 1 1107 33 is_stmt 0 view .LVU673 + 2174 00ae 0023 movs r3, #0 + ARM GAS /tmp/ccgleihc.s page 83 + + + 2175 00b0 4360 str r3, [r0, #4] + 2176 00b2 AFE7 b .L192 + 2177 .L194: +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2178 .loc 1 1117 5 is_stmt 1 view .LVU674 +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2179 .loc 1 1117 33 is_stmt 0 view .LVU675 + 2180 00b4 0023 movs r3, #0 + 2181 00b6 C360 str r3, [r0, #12] + 2182 00b8 B3E7 b .L195 + 2183 .L196: +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2184 .loc 1 1127 8 is_stmt 1 view .LVU676 +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2185 .loc 1 1127 16 is_stmt 0 view .LVU677 + 2186 00ba 084B ldr r3, .L203 + 2187 00bc 1B6F ldr r3, [r3, #112] +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2188 .loc 1 1127 11 view .LVU678 + 2189 00be 13F0010F tst r3, #1 + 2190 00c2 02D0 beq .L198 +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2191 .loc 1 1129 5 is_stmt 1 view .LVU679 +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2192 .loc 1 1129 33 is_stmt 0 view .LVU680 + 2193 00c4 0123 movs r3, #1 + 2194 00c6 8360 str r3, [r0, #8] + 2195 00c8 B6E7 b .L197 + 2196 .L198: +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2197 .loc 1 1133 5 is_stmt 1 view .LVU681 +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2198 .loc 1 1133 33 is_stmt 0 view .LVU682 + 2199 00ca 0023 movs r3, #0 + 2200 00cc 8360 str r3, [r0, #8] + 2201 00ce B3E7 b .L197 + 2202 .L199: +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2203 .loc 1 1143 5 is_stmt 1 view .LVU683 +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2204 .loc 1 1143 33 is_stmt 0 view .LVU684 + 2205 00d0 0023 movs r3, #0 + 2206 00d2 4361 str r3, [r0, #20] + 2207 00d4 B7E7 b .L200 + 2208 .L201: +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2209 .loc 1 1153 5 is_stmt 1 view .LVU685 +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2210 .loc 1 1153 37 is_stmt 0 view .LVU686 + 2211 00d6 0123 movs r3, #1 + 2212 00d8 8361 str r3, [r0, #24] + 2213 00da BBE7 b .L202 + 2214 .L204: + 2215 .align 2 + 2216 .L203: + 2217 00dc 00380240 .word 1073887232 + 2218 .cfi_endproc + ARM GAS /tmp/ccgleihc.s page 84 + + + 2219 .LFE151: + 2221 .section .text.HAL_RCC_GetClockConfig,"ax",%progbits + 2222 .align 1 + 2223 .global HAL_RCC_GetClockConfig + 2224 .syntax unified + 2225 .thumb + 2226 .thumb_func + 2227 .fpu fpv5-d16 + 2229 HAL_RCC_GetClockConfig: + 2230 .LVL134: + 2231 .LFB152: +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief Configures the RCC_ClkInitStruct according to the internal +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * RCC configuration registers. +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @param RCC_ClkInitStruct pointer to an RCC_ClkInitTypeDef structure that +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * will be configured. +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @param pFLatency Pointer on the Flash Latency. +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval None +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pFLatency) +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2232 .loc 1 1174 1 is_stmt 1 view -0 + 2233 .cfi_startproc + 2234 @ args = 0, pretend = 0, frame = 0 + 2235 @ frame_needed = 0, uses_anonymous_args = 0 + 2236 @ link register save eliminated. +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Set all possible values for the Clock type parameter --------------------*/ +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_ClkInitStruct->ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | + 2237 .loc 1 1176 3 view .LVU688 + 2238 .loc 1 1176 32 is_stmt 0 view .LVU689 + 2239 0000 0F23 movs r3, #15 + 2240 0002 0360 str r3, [r0] +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get the SYSCLK configuration --------------------------------------------*/ +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_ClkInitStruct->SYSCLKSource = (uint32_t)(RCC->CFGR & RCC_CFGR_SW); + 2241 .loc 1 1179 3 is_stmt 1 view .LVU690 + 2242 .loc 1 1179 51 is_stmt 0 view .LVU691 + 2243 0004 0B4B ldr r3, .L206 + 2244 0006 9A68 ldr r2, [r3, #8] + 2245 .loc 1 1179 37 view .LVU692 + 2246 0008 02F00302 and r2, r2, #3 + 2247 .loc 1 1179 35 view .LVU693 + 2248 000c 4260 str r2, [r0, #4] +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get the HCLK configuration ----------------------------------------------*/ +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_ClkInitStruct->AHBCLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_HPRE); + 2249 .loc 1 1182 3 is_stmt 1 view .LVU694 + 2250 .loc 1 1182 52 is_stmt 0 view .LVU695 + 2251 000e 9A68 ldr r2, [r3, #8] + 2252 .loc 1 1182 38 view .LVU696 + 2253 0010 02F0F002 and r2, r2, #240 + 2254 .loc 1 1182 36 view .LVU697 + 2255 0014 8260 str r2, [r0, #8] +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get the APB1 configuration ----------------------------------------------*/ +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_ClkInitStruct->APB1CLKDivider = (uint32_t)(RCC->CFGR & RCC_CFGR_PPRE1); + ARM GAS /tmp/ccgleihc.s page 85 + + + 2256 .loc 1 1185 3 is_stmt 1 view .LVU698 + 2257 .loc 1 1185 53 is_stmt 0 view .LVU699 + 2258 0016 9A68 ldr r2, [r3, #8] + 2259 .loc 1 1185 39 view .LVU700 + 2260 0018 02F4E052 and r2, r2, #7168 + 2261 .loc 1 1185 37 view .LVU701 + 2262 001c C260 str r2, [r0, #12] +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get the APB2 configuration ----------------------------------------------*/ +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** RCC_ClkInitStruct->APB2CLKDivider = (uint32_t)((RCC->CFGR & RCC_CFGR_PPRE2) >> 3); + 2263 .loc 1 1188 3 is_stmt 1 view .LVU702 + 2264 .loc 1 1188 54 is_stmt 0 view .LVU703 + 2265 001e 9B68 ldr r3, [r3, #8] + 2266 .loc 1 1188 39 view .LVU704 + 2267 0020 DB08 lsrs r3, r3, #3 + 2268 0022 03F4E053 and r3, r3, #7168 + 2269 .loc 1 1188 37 view .LVU705 + 2270 0026 0361 str r3, [r0, #16] +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Get the Flash Wait State (Latency) configuration ------------------------*/ +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** *pFLatency = (uint32_t)(FLASH->ACR & FLASH_ACR_LATENCY); + 2271 .loc 1 1191 3 is_stmt 1 view .LVU706 + 2272 .loc 1 1191 32 is_stmt 0 view .LVU707 + 2273 0028 034B ldr r3, .L206+4 + 2274 002a 1B68 ldr r3, [r3] + 2275 .loc 1 1191 16 view .LVU708 + 2276 002c 03F00F03 and r3, r3, #15 + 2277 .loc 1 1191 14 view .LVU709 + 2278 0030 0B60 str r3, [r1] +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2279 .loc 1 1192 1 view .LVU710 + 2280 0032 7047 bx lr + 2281 .L207: + 2282 .align 2 + 2283 .L206: + 2284 0034 00380240 .word 1073887232 + 2285 0038 003C0240 .word 1073888256 + 2286 .cfi_endproc + 2287 .LFE152: + 2289 .section .text.HAL_RCC_CSSCallback,"ax",%progbits + 2290 .align 1 + 2291 .weak HAL_RCC_CSSCallback + 2292 .syntax unified + 2293 .thumb + 2294 .thumb_func + 2295 .fpu fpv5-d16 + 2297 HAL_RCC_CSSCallback: + 2298 .LFB154: +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief This function handles the RCC CSS interrupt request. +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @note This API should be called under the NMI_Handler(). +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval None +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** void HAL_RCC_NMI_IRQHandler(void) +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check RCC CSSF flag */ + ARM GAS /tmp/ccgleihc.s page 86 + + +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** if (__HAL_RCC_GET_IT(RCC_IT_CSS)) +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* RCC Clock Security System interrupt user callback */ +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** HAL_RCC_CSSCallback(); +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Clear RCC CSS pending bit */ +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __HAL_RCC_CLEAR_IT(RCC_IT_CSS); +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /** +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @brief RCC Clock Security System interrupt callback +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** * @retval None +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** __weak void HAL_RCC_CSSCallback(void) +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2299 .loc 1 1217 1 is_stmt 1 view -0 + 2300 .cfi_startproc + 2301 @ args = 0, pretend = 0, frame = 0 + 2302 @ frame_needed = 0, uses_anonymous_args = 0 + 2303 @ link register save eliminated. +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* NOTE : This function Should not be modified, when the callback is needed, +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** the HAL_RCC_CSSCallback could be implemented in the user file +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** */ +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2304 .loc 1 1221 1 view .LVU712 + 2305 0000 7047 bx lr + 2306 .cfi_endproc + 2307 .LFE154: + 2309 .section .text.HAL_RCC_NMI_IRQHandler,"ax",%progbits + 2310 .align 1 + 2311 .global HAL_RCC_NMI_IRQHandler + 2312 .syntax unified + 2313 .thumb + 2314 .thumb_func + 2315 .fpu fpv5-d16 + 2317 HAL_RCC_NMI_IRQHandler: + 2318 .LFB153: +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** /* Check RCC CSSF flag */ + 2319 .loc 1 1200 1 view -0 + 2320 .cfi_startproc + 2321 @ args = 0, pretend = 0, frame = 0 + 2322 @ frame_needed = 0, uses_anonymous_args = 0 + 2323 0000 08B5 push {r3, lr} + 2324 .LCFI17: + 2325 .cfi_def_cfa_offset 8 + 2326 .cfi_offset 3, -8 + 2327 .cfi_offset 14, -4 +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2328 .loc 1 1202 3 view .LVU714 +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2329 .loc 1 1202 7 is_stmt 0 view .LVU715 + 2330 0002 064B ldr r3, .L213 + 2331 0004 DB68 ldr r3, [r3, #12] +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** { + 2332 .loc 1 1202 6 view .LVU716 + 2333 0006 13F0800F tst r3, #128 + ARM GAS /tmp/ccgleihc.s page 87 + + + 2334 000a 00D1 bne .L212 + 2335 .L209: +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 2336 .loc 1 1210 1 view .LVU717 + 2337 000c 08BD pop {r3, pc} + 2338 .L212: +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 2339 .loc 1 1205 5 is_stmt 1 view .LVU718 + 2340 000e FFF7FEFF bl HAL_RCC_CSSCallback + 2341 .LVL135: +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** } + 2342 .loc 1 1208 5 view .LVU719 + 2343 0012 024B ldr r3, .L213 + 2344 0014 8022 movs r2, #128 + 2345 0016 9A73 strb r2, [r3, #14] +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c **** + 2346 .loc 1 1210 1 is_stmt 0 view .LVU720 + 2347 0018 F8E7 b .L209 + 2348 .L214: + 2349 001a 00BF .align 2 + 2350 .L213: + 2351 001c 00380240 .word 1073887232 + 2352 .cfi_endproc + 2353 .LFE153: + 2355 .text + 2356 .Letext0: + 2357 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 2358 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h" + 2359 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 2360 .file 6 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 2361 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 2362 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h" + 2363 .file 9 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h" + 2364 .file 10 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h" + 2365 .file 11 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + ARM GAS /tmp/ccgleihc.s page 88 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_rcc.c + /tmp/ccgleihc.s:17 .text.HAL_RCC_DeInit:0000000000000000 $t + /tmp/ccgleihc.s:25 .text.HAL_RCC_DeInit:0000000000000000 HAL_RCC_DeInit + /tmp/ccgleihc.s:299 .text.HAL_RCC_DeInit:0000000000000144 $d + /tmp/ccgleihc.s:308 .text.HAL_RCC_OscConfig:0000000000000000 $t + /tmp/ccgleihc.s:315 .text.HAL_RCC_OscConfig:0000000000000000 HAL_RCC_OscConfig + /tmp/ccgleihc.s:821 .text.HAL_RCC_OscConfig:000000000000026c $d + /tmp/ccgleihc.s:826 .text.HAL_RCC_OscConfig:0000000000000274 $t + /tmp/ccgleihc.s:1216 .text.HAL_RCC_OscConfig:0000000000000440 $d + /tmp/ccgleihc.s:1221 .text.HAL_RCC_MCOConfig:0000000000000000 $t + /tmp/ccgleihc.s:1228 .text.HAL_RCC_MCOConfig:0000000000000000 HAL_RCC_MCOConfig + /tmp/ccgleihc.s:1378 .text.HAL_RCC_MCOConfig:000000000000008c $d + /tmp/ccgleihc.s:1385 .text.HAL_RCC_EnableCSS:0000000000000000 $t + /tmp/ccgleihc.s:1392 .text.HAL_RCC_EnableCSS:0000000000000000 HAL_RCC_EnableCSS + /tmp/ccgleihc.s:1409 .text.HAL_RCC_EnableCSS:000000000000000c $d + /tmp/ccgleihc.s:1414 .text.HAL_RCC_DisableCSS:0000000000000000 $t + /tmp/ccgleihc.s:1421 .text.HAL_RCC_DisableCSS:0000000000000000 HAL_RCC_DisableCSS + /tmp/ccgleihc.s:1438 .text.HAL_RCC_DisableCSS:000000000000000c $d + /tmp/ccgleihc.s:1444 .text.HAL_RCC_GetSysClockFreq:0000000000000000 $t + /tmp/ccgleihc.s:1451 .text.HAL_RCC_GetSysClockFreq:0000000000000000 HAL_RCC_GetSysClockFreq + /tmp/ccgleihc.s:1567 .text.HAL_RCC_GetSysClockFreq:0000000000000098 $d + /tmp/ccgleihc.s:1574 .text.HAL_RCC_ClockConfig:0000000000000000 $t + /tmp/ccgleihc.s:1581 .text.HAL_RCC_ClockConfig:0000000000000000 HAL_RCC_ClockConfig + /tmp/ccgleihc.s:1880 .text.HAL_RCC_ClockConfig:0000000000000158 $d + /tmp/ccgleihc.s:1889 .text.HAL_RCC_GetHCLKFreq:0000000000000000 $t + /tmp/ccgleihc.s:1896 .text.HAL_RCC_GetHCLKFreq:0000000000000000 HAL_RCC_GetHCLKFreq + /tmp/ccgleihc.s:1911 .text.HAL_RCC_GetHCLKFreq:0000000000000008 $d + /tmp/ccgleihc.s:1916 .text.HAL_RCC_GetPCLK1Freq:0000000000000000 $t + /tmp/ccgleihc.s:1923 .text.HAL_RCC_GetPCLK1Freq:0000000000000000 HAL_RCC_GetPCLK1Freq + /tmp/ccgleihc.s:1952 .text.HAL_RCC_GetPCLK1Freq:0000000000000018 $d + /tmp/ccgleihc.s:1958 .text.HAL_RCC_GetPCLK2Freq:0000000000000000 $t + /tmp/ccgleihc.s:1965 .text.HAL_RCC_GetPCLK2Freq:0000000000000000 HAL_RCC_GetPCLK2Freq + /tmp/ccgleihc.s:1994 .text.HAL_RCC_GetPCLK2Freq:0000000000000018 $d + /tmp/ccgleihc.s:2000 .text.HAL_RCC_GetOscConfig:0000000000000000 $t + /tmp/ccgleihc.s:2007 .text.HAL_RCC_GetOscConfig:0000000000000000 HAL_RCC_GetOscConfig + /tmp/ccgleihc.s:2217 .text.HAL_RCC_GetOscConfig:00000000000000dc $d + /tmp/ccgleihc.s:2222 .text.HAL_RCC_GetClockConfig:0000000000000000 $t + /tmp/ccgleihc.s:2229 .text.HAL_RCC_GetClockConfig:0000000000000000 HAL_RCC_GetClockConfig + /tmp/ccgleihc.s:2284 .text.HAL_RCC_GetClockConfig:0000000000000034 $d + /tmp/ccgleihc.s:2290 .text.HAL_RCC_CSSCallback:0000000000000000 $t + /tmp/ccgleihc.s:2297 .text.HAL_RCC_CSSCallback:0000000000000000 HAL_RCC_CSSCallback + /tmp/ccgleihc.s:2310 .text.HAL_RCC_NMI_IRQHandler:0000000000000000 $t + /tmp/ccgleihc.s:2317 .text.HAL_RCC_NMI_IRQHandler:0000000000000000 HAL_RCC_NMI_IRQHandler + /tmp/ccgleihc.s:2351 .text.HAL_RCC_NMI_IRQHandler:000000000000001c $d + +UNDEFINED SYMBOLS +HAL_GetTick +HAL_InitTick +SystemCoreClock +uwTickPrio +HAL_GPIO_Init +__aeabi_uldivmod +AHBPrescTable +APBPrescTable diff --git a/build/stm32f7xx_hal_rcc.o b/build/stm32f7xx_hal_rcc.o new file mode 100644 index 0000000..b6cb205 Binary files /dev/null and b/build/stm32f7xx_hal_rcc.o differ diff --git a/build/stm32f7xx_hal_rcc_ex.d b/build/stm32f7xx_hal_rcc_ex.d new file mode 100644 index 0000000..5d04415 --- /dev/null +++ b/build/stm32f7xx_hal_rcc_ex.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_rcc_ex.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_rcc_ex.lst b/build/stm32f7xx_hal_rcc_ex.lst new file mode 100644 index 0000000..e8b779c --- /dev/null +++ b/build/stm32f7xx_hal_rcc_ex.lst @@ -0,0 +1,4554 @@ +ARM GAS /tmp/cc41FM7T.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_rcc_ex.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.HAL_RCCEx_PeriphCLKConfig,"ax",%progbits + 17 .align 1 + 18 .global HAL_RCCEx_PeriphCLKConfig + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 HAL_RCCEx_PeriphCLKConfig: + 26 .LVL0: + 27 .LFB141: + 28 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @file stm32f7xx_hal_rcc_ex.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Extension RCC HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * functionalities RCC extension peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * + Extended Peripheral Control functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ****************************************************************************** + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @attention + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * Copyright (c) 2017 STMicroelectronics. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * All rights reserved. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * This software is licensed under terms that can be found in the LICENSE file in + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * the root directory of this software component. + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ****************************************************************************** + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Includes ------------------------------------------------------------------*/ + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #include "stm32f7xx_hal.h" + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** @addtogroup STM32F7xx_HAL_Driver + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @{ + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** @defgroup RCCEx RCCEx + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief RCCEx HAL module driver + ARM GAS /tmp/cc41FM7T.s page 2 + + + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #ifdef HAL_RCC_MODULE_ENABLED + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Private typedef -----------------------------------------------------------*/ + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Private define ------------------------------------------------------------*/ + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** @defgroup RCCEx_Private_Defines RCCEx Private Defines + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @{ + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @} + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Private macro -------------------------------------------------------------*/ + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** @defgroup RCCEx_Private_Macros RCCEx Private Macros + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @{ + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @} + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** @defgroup RCCEx_Private_Macros RCCEx Private Macros + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @{ + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @} + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Private variables ---------------------------------------------------------*/ + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Private function prototypes -----------------------------------------------*/ + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Private functions ---------------------------------------------------------*/ + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** @defgroup RCCEx_Exported_Functions RCCEx Exported Functions + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @{ + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** @defgroup RCCEx_Exported_Functions_Group1 Extended Peripheral Control functions + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Extended Peripheral Control functions + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** @verbatim + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** =============================================================================== + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ##### Extended Peripheral Control functions ##### + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** =============================================================================== + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** [..] + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** This subsection provides a set of functions allowing to control the RCC Clocks + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequencies. + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** [..] + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** (@) Important note: Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** select the RTC clock source; in this case the Backup domain will be reset in + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** order to modify the RTC Clock source, as consequence RTC registers (including + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** the backup registers) and RCC_BDCR register will be set to their reset values. + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** @endverbatim + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @{ + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + ARM GAS /tmp/cc41FM7T.s page 3 + + + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined (STM32F745xx) || defined (STM32F746xx) || defined (STM32F756xx) || defined (STM32F765xx + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx) || defined (STM32F779xx + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** defined (STM32F750xx) + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Initializes the RCC extended peripherals clocks according to the specified + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * parameters in the RCC_PeriphCLKInitTypeDef. + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @param PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * contains the configuration information for the Extended Peripherals + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * clocks(I2S, SAI, LTDC, RTC, TIM, UARTs, USARTs, LTPIM, SDMMC...). + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @note Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to select + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * the RTC clock source; in this case the Backup domain will be reset in + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * order to modify the RTC Clock source, as consequence RTC registers (including + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * the backup registers) are set to their reset values. + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @retval HAL status + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 29 .loc 1 106 1 view -0 + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 8 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 33 .loc 1 106 1 is_stmt 0 view .LVU1 + 34 0000 F0B5 push {r4, r5, r6, r7, lr} + 35 .LCFI0: + 36 .cfi_def_cfa_offset 20 + 37 .cfi_offset 4, -20 + 38 .cfi_offset 5, -16 + 39 .cfi_offset 6, -12 + 40 .cfi_offset 7, -8 + 41 .cfi_offset 14, -4 + 42 0002 83B0 sub sp, sp, #12 + 43 .LCFI1: + 44 .cfi_def_cfa_offset 32 + 45 0004 0446 mov r4, r0 + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tickstart = 0; + 46 .loc 1 107 3 is_stmt 1 view .LVU2 + 47 .LVL1: + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tmpreg0 = 0; + 48 .loc 1 108 3 view .LVU3 + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tmpreg1 = 0; + 49 .loc 1 109 3 view .LVU4 + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t plli2sused = 0; + 50 .loc 1 110 3 view .LVU5 + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t pllsaiused = 0; + 51 .loc 1 111 3 view .LVU6 + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); + 52 .loc 1 114 3 view .LVU7 + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------------------------- I2S configuration ----------------------------------*/ + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == (RCC_PERIPHCLK_I2S)) + 53 .loc 1 117 3 view .LVU8 + 54 .loc 1 117 21 is_stmt 0 view .LVU9 + 55 0006 0668 ldr r6, [r0] + ARM GAS /tmp/cc41FM7T.s page 4 + + + 56 .loc 1 117 5 view .LVU10 + 57 0008 16F00106 ands r6, r6, #1 + 58 000c 0DD0 beq .L2 + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection)); + 59 .loc 1 120 5 is_stmt 1 view .LVU11 + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure I2S Clock source */ + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection); + 60 .loc 1 123 5 view .LVU12 + 61 .loc 1 123 5 view .LVU13 + 62 000e B54B ldr r3, .L87 + 63 0010 9A68 ldr r2, [r3, #8] + 64 0012 22F40002 bic r2, r2, #8388608 + 65 0016 9A60 str r2, [r3, #8] + 66 .loc 1 123 5 view .LVU14 + 67 0018 9A68 ldr r2, [r3, #8] + 68 001a 416B ldr r1, [r0, #52] + 69 001c 0A43 orrs r2, r2, r1 + 70 001e 9A60 str r2, [r3, #8] + 71 .loc 1 123 5 view .LVU15 + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLI2S when it's used as clock source for I2S */ + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S) + 72 .loc 1 126 5 view .LVU16 + 73 .loc 1 126 21 is_stmt 0 view .LVU17 + 74 0020 436B ldr r3, [r0, #52] + 75 .loc 1 126 7 view .LVU18 + 76 0022 002B cmp r3, #0 + 77 0024 00F06781 beq .L59 + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t pllsaiused = 0; + 78 .loc 1 110 12 view .LVU19 + 79 0028 0026 movs r6, #0 + 80 .L2: + 81 .LVL2: + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** plli2sused = 1; + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------ SAI1 configuration --------------------------------------* + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == (RCC_PERIPHCLK_SAI1)) + 82 .loc 1 133 3 is_stmt 1 view .LVU20 + 83 .loc 1 133 21 is_stmt 0 view .LVU21 + 84 002a 2568 ldr r5, [r4] + 85 .loc 1 133 5 view .LVU22 + 86 002c 15F40025 ands r5, r5, #524288 + 87 0030 11D0 beq .L3 + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_SAI1CLKSOURCE(PeriphClkInit->Sai1ClockSelection)); + 88 .loc 1 136 5 is_stmt 1 view .LVU23 + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure SAI1 Clock source */ + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection); + 89 .loc 1 139 5 view .LVU24 + ARM GAS /tmp/cc41FM7T.s page 5 + + + 90 0032 AC4A ldr r2, .L87 + 91 0034 D2F88C30 ldr r3, [r2, #140] + 92 0038 23F44013 bic r3, r3, #3145728 + 93 003c E16B ldr r1, [r4, #60] + 94 003e 0B43 orrs r3, r3, r1 + 95 0040 C2F88C30 str r3, [r2, #140] + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLI2S when it's used as clock source for SAI */ + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S) + 96 .loc 1 141 5 view .LVU25 + 97 .loc 1 141 21 is_stmt 0 view .LVU26 + 98 0044 E36B ldr r3, [r4, #60] + 99 .loc 1 141 7 view .LVU27 + 100 0046 B3F5801F cmp r3, #1048576 + 101 004a 00F05681 beq .L75 + 102 .LVL3: + 103 .L4: + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** plli2sused = 1; + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLSAI when it's used as clock source for SAI */ + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI) + 104 .loc 1 146 5 is_stmt 1 view .LVU28 + 105 .loc 1 146 7 is_stmt 0 view .LVU29 + 106 004e 002B cmp r3, #0 + 107 0050 00F05581 beq .L61 + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 108 .loc 1 111 12 view .LVU30 + 109 0054 0025 movs r5, #0 + 110 .L3: + 111 .LVL4: + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** pllsaiused = 1; + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------ SAI2 configuration --------------------------------------* + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == (RCC_PERIPHCLK_SAI2)) + 112 .loc 1 153 3 is_stmt 1 view .LVU31 + 113 .loc 1 153 21 is_stmt 0 view .LVU32 + 114 0056 2368 ldr r3, [r4] + 115 .loc 1 153 5 view .LVU33 + 116 0058 13F4801F tst r3, #1048576 + 117 005c 0FD0 beq .L5 + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_SAI2CLKSOURCE(PeriphClkInit->Sai2ClockSelection)); + 118 .loc 1 156 5 is_stmt 1 view .LVU34 + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure SAI2 Clock source */ + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_SAI2_CONFIG(PeriphClkInit->Sai2ClockSelection); + 119 .loc 1 159 5 view .LVU35 + 120 005e A14A ldr r2, .L87 + 121 0060 D2F88C30 ldr r3, [r2, #140] + 122 0064 23F44003 bic r3, r3, #12582912 + 123 0068 216C ldr r1, [r4, #64] + 124 006a 0B43 orrs r3, r3, r1 + 125 006c C2F88C30 str r3, [r2, #140] + ARM GAS /tmp/cc41FM7T.s page 6 + + + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLI2S when it's used as clock source for SAI */ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S) + 126 .loc 1 162 5 view .LVU36 + 127 .loc 1 162 21 is_stmt 0 view .LVU37 + 128 0070 236C ldr r3, [r4, #64] + 129 .loc 1 162 7 view .LVU38 + 130 0072 B3F5800F cmp r3, #4194304 + 131 0076 00F04481 beq .L76 + 132 .LVL5: + 133 .L6: + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** plli2sused = 1; + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLSAI when it's used as clock source for SAI */ + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI) + 134 .loc 1 167 5 is_stmt 1 view .LVU39 + 135 .loc 1 167 7 is_stmt 0 view .LVU40 + 136 007a 03B9 cbnz r3, .L5 + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** pllsaiused = 1; + 137 .loc 1 169 18 view .LVU41 + 138 007c 0125 movs r5, #1 + 139 .LVL6: + 140 .L5: + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- SPDIF-RX Configuration --------------------------------- + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) + 141 .loc 1 174 3 is_stmt 1 view .LVU42 + 142 .loc 1 174 21 is_stmt 0 view .LVU43 + 143 007e 2368 ldr r3, [r4] + 144 .loc 1 174 5 view .LVU44 + 145 0080 13F0807F tst r3, #16777216 + 146 0084 00D0 beq .L7 + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** plli2sused = 1; + 147 .loc 1 176 18 view .LVU45 + 148 0086 0126 movs r6, #1 + 149 .LVL7: + 150 .L7: + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------ RTC configuration --------------------------------------*/ + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC)) + 151 .loc 1 180 3 is_stmt 1 view .LVU46 + 152 .loc 1 180 5 is_stmt 0 view .LVU47 + 153 0088 13F0200F tst r3, #32 + 154 008c 40F03B81 bne .L77 + 155 .LVL8: + 156 .L8: + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check for RTC Parameters used to output RTCCLK */ + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable Power Clock*/ + ARM GAS /tmp/cc41FM7T.s page 7 + + + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PWR_CLK_ENABLE(); + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable write access to Backup domain */ + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PWR->CR1 |= PWR_CR1_DBP; + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait for Backup domain Write protection disable */ + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while((PWR->CR1 & PWR_CR1_DBP) == RESET) + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Reset the Backup domain only if the RTC Clock source selection is modified */ + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = (RCC->BDCR & RCC_BDCR_RTCSEL); + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((tmpreg0 != 0x00000000U) && (tmpreg0 != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL) + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Store the content of BDCR register before the reset of Backup Domain */ + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* RTC Clock selection can be changed only if the Backup Domain is reset */ + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_BACKUPRESET_FORCE(); + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_BACKUPRESET_RELEASE(); + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Restore the Content of BDCR register */ + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC->BDCR = tmpreg0; + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON)) + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till LSE is ready */ + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + 157 .loc 1 234 5 is_stmt 1 discriminator 5 view .LVU48 + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------ TIM configuration --------------------------------------*/ + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM)) + 158 .loc 1 238 3 discriminator 5 view .LVU49 + 159 .loc 1 238 21 is_stmt 0 discriminator 5 view .LVU50 + 160 0090 2368 ldr r3, [r4] + ARM GAS /tmp/cc41FM7T.s page 8 + + + 161 .loc 1 238 5 discriminator 5 view .LVU51 + 162 0092 13F0100F tst r3, #16 + 163 0096 0CD0 beq .L17 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection)); + 164 .loc 1 241 5 is_stmt 1 view .LVU52 + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure Timer Prescaler */ + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection); + 165 .loc 1 244 5 view .LVU53 + 166 .loc 1 244 5 view .LVU54 + 167 0098 924B ldr r3, .L87 + 168 009a D3F88C20 ldr r2, [r3, #140] + 169 009e 22F08072 bic r2, r2, #16777216 + 170 00a2 C3F88C20 str r2, [r3, #140] + 171 .loc 1 244 5 view .LVU55 + 172 00a6 D3F88C20 ldr r2, [r3, #140] + 173 00aa A16B ldr r1, [r4, #56] + 174 00ac 0A43 orrs r2, r2, r1 + 175 00ae C3F88C20 str r2, [r3, #140] + 176 .L17: + 177 .loc 1 244 5 discriminator 1 view .LVU56 + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- I2C1 Configuration -----------------------------------*/ + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) + 178 .loc 1 248 3 discriminator 1 view .LVU57 + 179 .loc 1 248 21 is_stmt 0 discriminator 1 view .LVU58 + 180 00b2 2368 ldr r3, [r4] + 181 .loc 1 248 5 discriminator 1 view .LVU59 + 182 00b4 13F4804F tst r3, #16384 + 183 00b8 08D0 beq .L18 + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); + 184 .loc 1 251 5 is_stmt 1 view .LVU60 + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the I2C1 clock source */ + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); + 185 .loc 1 254 5 view .LVU61 + 186 00ba 8A4A ldr r2, .L87 + 187 00bc D2F89030 ldr r3, [r2, #144] + 188 00c0 23F44033 bic r3, r3, #196608 + 189 00c4 616E ldr r1, [r4, #100] + 190 00c6 0B43 orrs r3, r3, r1 + 191 00c8 C2F89030 str r3, [r2, #144] + 192 .L18: + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- I2C2 Configuration -----------------------------------*/ + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) + 193 .loc 1 258 3 view .LVU62 + 194 .loc 1 258 21 is_stmt 0 view .LVU63 + 195 00cc 2368 ldr r3, [r4] + 196 .loc 1 258 5 view .LVU64 + 197 00ce 13F4004F tst r3, #32768 + ARM GAS /tmp/cc41FM7T.s page 9 + + + 198 00d2 08D0 beq .L19 + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection)); + 199 .loc 1 261 5 is_stmt 1 view .LVU65 + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the I2C2 clock source */ + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection); + 200 .loc 1 264 5 view .LVU66 + 201 00d4 834A ldr r2, .L87 + 202 00d6 D2F89030 ldr r3, [r2, #144] + 203 00da 23F44023 bic r3, r3, #786432 + 204 00de A16E ldr r1, [r4, #104] + 205 00e0 0B43 orrs r3, r3, r1 + 206 00e2 C2F89030 str r3, [r2, #144] + 207 .L19: + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- I2C3 Configuration -----------------------------------*/ + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) + 208 .loc 1 268 3 view .LVU67 + 209 .loc 1 268 21 is_stmt 0 view .LVU68 + 210 00e6 2368 ldr r3, [r4] + 211 .loc 1 268 5 view .LVU69 + 212 00e8 13F4803F tst r3, #65536 + 213 00ec 08D0 beq .L20 + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection)); + 214 .loc 1 271 5 is_stmt 1 view .LVU70 + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the I2C3 clock source */ + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection); + 215 .loc 1 274 5 view .LVU71 + 216 00ee 7D4A ldr r2, .L87 + 217 00f0 D2F89030 ldr r3, [r2, #144] + 218 00f4 23F44013 bic r3, r3, #3145728 + 219 00f8 E16E ldr r1, [r4, #108] + 220 00fa 0B43 orrs r3, r3, r1 + 221 00fc C2F89030 str r3, [r2, #144] + 222 .L20: + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- I2C4 Configuration -----------------------------------*/ + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) + 223 .loc 1 278 3 view .LVU72 + 224 .loc 1 278 21 is_stmt 0 view .LVU73 + 225 0100 2368 ldr r3, [r4] + 226 .loc 1 278 5 view .LVU74 + 227 0102 13F4003F tst r3, #131072 + 228 0106 08D0 beq .L21 + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_I2C4CLKSOURCE(PeriphClkInit->I2c4ClockSelection)); + 229 .loc 1 281 5 is_stmt 1 view .LVU75 + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the I2C4 clock source */ + ARM GAS /tmp/cc41FM7T.s page 10 + + + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_I2C4_CONFIG(PeriphClkInit->I2c4ClockSelection); + 230 .loc 1 284 5 view .LVU76 + 231 0108 764A ldr r2, .L87 + 232 010a D2F89030 ldr r3, [r2, #144] + 233 010e 23F44003 bic r3, r3, #12582912 + 234 0112 216F ldr r1, [r4, #112] + 235 0114 0B43 orrs r3, r3, r1 + 236 0116 C2F89030 str r3, [r2, #144] + 237 .L21: + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- USART1 Configuration ----------------------------------- + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) + 238 .loc 1 288 3 view .LVU77 + 239 .loc 1 288 21 is_stmt 0 view .LVU78 + 240 011a 2368 ldr r3, [r4] + 241 .loc 1 288 5 view .LVU79 + 242 011c 13F0400F tst r3, #64 + 243 0120 08D0 beq .L22 + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); + 244 .loc 1 291 5 is_stmt 1 view .LVU80 + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the USART1 clock source */ + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); + 245 .loc 1 294 5 view .LVU81 + 246 0122 704A ldr r2, .L87 + 247 0124 D2F89030 ldr r3, [r2, #144] + 248 0128 23F00303 bic r3, r3, #3 + 249 012c 616C ldr r1, [r4, #68] + 250 012e 0B43 orrs r3, r3, r1 + 251 0130 C2F89030 str r3, [r2, #144] + 252 .L22: + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- USART2 Configuration ----------------------------------- + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) + 253 .loc 1 298 3 view .LVU82 + 254 .loc 1 298 21 is_stmt 0 view .LVU83 + 255 0134 2368 ldr r3, [r4] + 256 .loc 1 298 5 view .LVU84 + 257 0136 13F0800F tst r3, #128 + 258 013a 08D0 beq .L23 + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); + 259 .loc 1 301 5 is_stmt 1 view .LVU85 + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the USART2 clock source */ + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); + 260 .loc 1 304 5 view .LVU86 + 261 013c 694A ldr r2, .L87 + 262 013e D2F89030 ldr r3, [r2, #144] + 263 0142 23F00C03 bic r3, r3, #12 + 264 0146 A16C ldr r1, [r4, #72] + 265 0148 0B43 orrs r3, r3, r1 + ARM GAS /tmp/cc41FM7T.s page 11 + + + 266 014a C2F89030 str r3, [r2, #144] + 267 .L23: + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- USART3 Configuration ----------------------------------- + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) + 268 .loc 1 308 3 view .LVU87 + 269 .loc 1 308 21 is_stmt 0 view .LVU88 + 270 014e 2368 ldr r3, [r4] + 271 .loc 1 308 5 view .LVU89 + 272 0150 13F4807F tst r3, #256 + 273 0154 08D0 beq .L24 + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection)); + 274 .loc 1 311 5 is_stmt 1 view .LVU90 + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the USART3 clock source */ + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection); + 275 .loc 1 314 5 view .LVU91 + 276 0156 634A ldr r2, .L87 + 277 0158 D2F89030 ldr r3, [r2, #144] + 278 015c 23F03003 bic r3, r3, #48 + 279 0160 E16C ldr r1, [r4, #76] + 280 0162 0B43 orrs r3, r3, r1 + 281 0164 C2F89030 str r3, [r2, #144] + 282 .L24: + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- UART4 Configuration -----------------------------------* + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) + 283 .loc 1 318 3 view .LVU92 + 284 .loc 1 318 21 is_stmt 0 view .LVU93 + 285 0168 2368 ldr r3, [r4] + 286 .loc 1 318 5 view .LVU94 + 287 016a 13F4007F tst r3, #512 + 288 016e 08D0 beq .L25 + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection)); + 289 .loc 1 321 5 is_stmt 1 view .LVU95 + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the UART4 clock source */ + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection); + 290 .loc 1 324 5 view .LVU96 + 291 0170 5C4A ldr r2, .L87 + 292 0172 D2F89030 ldr r3, [r2, #144] + 293 0176 23F0C003 bic r3, r3, #192 + 294 017a 216D ldr r1, [r4, #80] + 295 017c 0B43 orrs r3, r3, r1 + 296 017e C2F89030 str r3, [r2, #144] + 297 .L25: + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- UART5 Configuration -----------------------------------* + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) + 298 .loc 1 328 3 view .LVU97 + ARM GAS /tmp/cc41FM7T.s page 12 + + + 299 .loc 1 328 21 is_stmt 0 view .LVU98 + 300 0182 2368 ldr r3, [r4] + 301 .loc 1 328 5 view .LVU99 + 302 0184 13F4806F tst r3, #1024 + 303 0188 08D0 beq .L26 + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_UART5CLKSOURCE(PeriphClkInit->Uart5ClockSelection)); + 304 .loc 1 331 5 is_stmt 1 view .LVU100 + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the UART5 clock source */ + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_UART5_CONFIG(PeriphClkInit->Uart5ClockSelection); + 305 .loc 1 334 5 view .LVU101 + 306 018a 564A ldr r2, .L87 + 307 018c D2F89030 ldr r3, [r2, #144] + 308 0190 23F44073 bic r3, r3, #768 + 309 0194 616D ldr r1, [r4, #84] + 310 0196 0B43 orrs r3, r3, r1 + 311 0198 C2F89030 str r3, [r2, #144] + 312 .L26: + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- USART6 Configuration ----------------------------------- + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) + 313 .loc 1 338 3 view .LVU102 + 314 .loc 1 338 21 is_stmt 0 view .LVU103 + 315 019c 2368 ldr r3, [r4] + 316 .loc 1 338 5 view .LVU104 + 317 019e 13F4006F tst r3, #2048 + 318 01a2 08D0 beq .L27 + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_USART6CLKSOURCE(PeriphClkInit->Usart6ClockSelection)); + 319 .loc 1 341 5 is_stmt 1 view .LVU105 + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the USART6 clock source */ + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_USART6_CONFIG(PeriphClkInit->Usart6ClockSelection); + 320 .loc 1 344 5 view .LVU106 + 321 01a4 4F4A ldr r2, .L87 + 322 01a6 D2F89030 ldr r3, [r2, #144] + 323 01aa 23F44063 bic r3, r3, #3072 + 324 01ae A16D ldr r1, [r4, #88] + 325 01b0 0B43 orrs r3, r3, r1 + 326 01b2 C2F89030 str r3, [r2, #144] + 327 .L27: + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- UART7 Configuration -----------------------------------* + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) + 328 .loc 1 348 3 view .LVU107 + 329 .loc 1 348 21 is_stmt 0 view .LVU108 + 330 01b6 2368 ldr r3, [r4] + 331 .loc 1 348 5 view .LVU109 + 332 01b8 13F4805F tst r3, #4096 + 333 01bc 08D0 beq .L28 + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + ARM GAS /tmp/cc41FM7T.s page 13 + + + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_UART7CLKSOURCE(PeriphClkInit->Uart7ClockSelection)); + 334 .loc 1 351 5 is_stmt 1 view .LVU110 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the UART7 clock source */ + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_UART7_CONFIG(PeriphClkInit->Uart7ClockSelection); + 335 .loc 1 354 5 view .LVU111 + 336 01be 494A ldr r2, .L87 + 337 01c0 D2F89030 ldr r3, [r2, #144] + 338 01c4 23F44053 bic r3, r3, #12288 + 339 01c8 E16D ldr r1, [r4, #92] + 340 01ca 0B43 orrs r3, r3, r1 + 341 01cc C2F89030 str r3, [r2, #144] + 342 .L28: + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- UART8 Configuration -----------------------------------* + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) + 343 .loc 1 358 3 view .LVU112 + 344 .loc 1 358 21 is_stmt 0 view .LVU113 + 345 01d0 2368 ldr r3, [r4] + 346 .loc 1 358 5 view .LVU114 + 347 01d2 13F4005F tst r3, #8192 + 348 01d6 08D0 beq .L29 + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_UART8CLKSOURCE(PeriphClkInit->Uart8ClockSelection)); + 349 .loc 1 361 5 is_stmt 1 view .LVU115 + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the UART8 clock source */ + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_UART8_CONFIG(PeriphClkInit->Uart8ClockSelection); + 350 .loc 1 364 5 view .LVU116 + 351 01d8 424A ldr r2, .L87 + 352 01da D2F89030 ldr r3, [r2, #144] + 353 01de 23F44043 bic r3, r3, #49152 + 354 01e2 216E ldr r1, [r4, #96] + 355 01e4 0B43 orrs r3, r3, r1 + 356 01e6 C2F89030 str r3, [r2, #144] + 357 .L29: + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*--------------------------------------- CEC Configuration -----------------------------------*/ + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) + 358 .loc 1 368 3 view .LVU117 + 359 .loc 1 368 21 is_stmt 0 view .LVU118 + 360 01ea 2368 ldr r3, [r4] + 361 .loc 1 368 5 view .LVU119 + 362 01ec 13F4800F tst r3, #4194304 + 363 01f0 08D0 beq .L30 + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_CECCLKSOURCE(PeriphClkInit->CecClockSelection)); + 364 .loc 1 371 5 is_stmt 1 view .LVU120 + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the CEC clock source */ + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_CEC_CONFIG(PeriphClkInit->CecClockSelection); + 365 .loc 1 374 5 view .LVU121 + 366 01f2 3C4A ldr r2, .L87 + ARM GAS /tmp/cc41FM7T.s page 14 + + + 367 01f4 D2F89030 ldr r3, [r2, #144] + 368 01f8 23F08063 bic r3, r3, #67108864 + 369 01fc A16F ldr r1, [r4, #120] + 370 01fe 0B43 orrs r3, r3, r1 + 371 0200 C2F89030 str r3, [r2, #144] + 372 .L30: + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- CK48 Configuration -----------------------------------*/ + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) + 373 .loc 1 378 3 view .LVU122 + 374 .loc 1 378 21 is_stmt 0 view .LVU123 + 375 0204 2368 ldr r3, [r4] + 376 .loc 1 378 5 view .LVU124 + 377 0206 13F4001F tst r3, #2097152 + 378 020a 0DD0 beq .L31 + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_CLK48SOURCE(PeriphClkInit->Clk48ClockSelection)); + 379 .loc 1 381 5 is_stmt 1 view .LVU125 + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the CLK48 source */ + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_CLK48_CONFIG(PeriphClkInit->Clk48ClockSelection); + 380 .loc 1 384 5 view .LVU126 + 381 020c 354A ldr r2, .L87 + 382 020e D2F89030 ldr r3, [r2, #144] + 383 0212 23F00063 bic r3, r3, #134217728 + 384 0216 E16F ldr r1, [r4, #124] + 385 0218 0B43 orrs r3, r3, r1 + 386 021a C2F89030 str r3, [r2, #144] + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLSAI when it's used as clock source for CK48 */ + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP) + 387 .loc 1 387 5 view .LVU127 + 388 .loc 1 387 21 is_stmt 0 view .LVU128 + 389 021e E36F ldr r3, [r4, #124] + 390 .loc 1 387 7 view .LVU129 + 391 0220 B3F1006F cmp r3, #134217728 + 392 0224 00F0D580 beq .L78 + 393 .LVL9: + 394 .L31: + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** pllsaiused = 1; + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- LTDC Configuration -----------------------------------*/ + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC) + 395 .loc 1 395 3 is_stmt 1 view .LVU130 + 396 .loc 1 395 21 is_stmt 0 view .LVU131 + 397 0228 2368 ldr r3, [r4] + 398 .loc 1 395 5 view .LVU132 + 399 022a 13F0080F tst r3, #8 + 400 022e 00D0 beq .L32 + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** pllsaiused = 1; + ARM GAS /tmp/cc41FM7T.s page 15 + + + 401 .loc 1 397 16 view .LVU133 + 402 0230 0125 movs r5, #1 + 403 .LVL10: + 404 .L32: + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- LPTIM1 Configuration ----------------------------------- + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) + 405 .loc 1 402 3 is_stmt 1 view .LVU134 + 406 .loc 1 402 5 is_stmt 0 view .LVU135 + 407 0232 13F4802F tst r3, #262144 + 408 0236 08D0 beq .L33 + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_LPTIM1CLK(PeriphClkInit->Lptim1ClockSelection)); + 409 .loc 1 405 5 is_stmt 1 view .LVU136 + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the LTPIM1 clock source */ + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection); + 410 .loc 1 408 5 view .LVU137 + 411 0238 2A4A ldr r2, .L87 + 412 023a D2F89030 ldr r3, [r2, #144] + 413 023e 23F04073 bic r3, r3, #50331648 + 414 0242 616F ldr r1, [r4, #116] + 415 0244 0B43 orrs r3, r3, r1 + 416 0246 C2F89030 str r3, [r2, #144] + 417 .L33: + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------- SDMMC1 Configuration ------------------------------------ + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) + 418 .loc 1 412 3 view .LVU138 + 419 .loc 1 412 21 is_stmt 0 view .LVU139 + 420 024a 2368 ldr r3, [r4] + 421 .loc 1 412 5 view .LVU140 + 422 024c 13F4000F tst r3, #8388608 + 423 0250 09D0 beq .L34 + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_SDMMC1CLKSOURCE(PeriphClkInit->Sdmmc1ClockSelection)); + 424 .loc 1 415 5 is_stmt 1 view .LVU141 + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the SDMMC1 clock source */ + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_SDMMC1_CONFIG(PeriphClkInit->Sdmmc1ClockSelection); + 425 .loc 1 418 5 view .LVU142 + 426 0252 244A ldr r2, .L87 + 427 0254 D2F89030 ldr r3, [r2, #144] + 428 0258 23F08053 bic r3, r3, #268435456 + 429 025c D4F88010 ldr r1, [r4, #128] + 430 0260 0B43 orrs r3, r3, r1 + 431 0262 C2F89030 str r3, [r2, #144] + 432 .L34: + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------- SDMMC2 Configuration ------------------------------------ + ARM GAS /tmp/cc41FM7T.s page 16 + + + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2) + 433 .loc 1 423 3 view .LVU143 + 434 .loc 1 423 21 is_stmt 0 view .LVU144 + 435 0266 2368 ldr r3, [r4] + 436 .loc 1 423 5 view .LVU145 + 437 0268 13F0806F tst r3, #67108864 + 438 026c 09D0 beq .L35 + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_SDMMC2CLKSOURCE(PeriphClkInit->Sdmmc2ClockSelection)); + 439 .loc 1 426 5 is_stmt 1 view .LVU146 + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the SDMMC2 clock source */ + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_SDMMC2_CONFIG(PeriphClkInit->Sdmmc2ClockSelection); + 440 .loc 1 429 5 view .LVU147 + 441 026e 1D4A ldr r2, .L87 + 442 0270 D2F89030 ldr r3, [r2, #144] + 443 0274 23F00053 bic r3, r3, #536870912 + 444 0278 D4F88410 ldr r1, [r4, #132] + 445 027c 0B43 orrs r3, r3, r1 + 446 027e C2F89030 str r3, [r2, #144] + 447 .L35: + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------- DFSDM1 Configuration ------------------------------------ + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1) + 448 .loc 1 433 3 view .LVU148 + 449 .loc 1 433 21 is_stmt 0 view .LVU149 + 450 0282 2368 ldr r3, [r4] + 451 .loc 1 433 5 view .LVU150 + 452 0284 13F0006F tst r3, #134217728 + 453 0288 09D0 beq .L36 + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_DFSDM1CLKSOURCE(PeriphClkInit->Dfsdm1ClockSelection)); + 454 .loc 1 436 5 is_stmt 1 view .LVU151 + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the DFSDM1 interface clock source */ + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_DFSDM1_CONFIG(PeriphClkInit->Dfsdm1ClockSelection); + 455 .loc 1 439 5 view .LVU152 + 456 028a 164A ldr r2, .L87 + 457 028c D2F88C30 ldr r3, [r2, #140] + 458 0290 23F00073 bic r3, r3, #33554432 + 459 0294 D4F88810 ldr r1, [r4, #136] + 460 0298 0B43 orrs r3, r3, r1 + 461 029a C2F88C30 str r3, [r2, #140] + 462 .L36: + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------- DFSDM AUDIO Configuration ------------------------------- + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1_AUDIO) == RCC_PERIPHCLK_DFSDM1_A + 463 .loc 1 443 3 view .LVU153 + 464 .loc 1 443 21 is_stmt 0 view .LVU154 + 465 029e 2368 ldr r3, [r4] + 466 .loc 1 443 5 view .LVU155 + 467 02a0 13F0805F tst r3, #268435456 + 468 02a4 09D0 beq .L37 + ARM GAS /tmp/cc41FM7T.s page 17 + + + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_DFSDM1AUDIOCLKSOURCE(PeriphClkInit->Dfsdm1AudioClockSelection)); + 469 .loc 1 446 5 is_stmt 1 view .LVU156 + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the DFSDM interface clock source */ + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_DFSDM1AUDIO_CONFIG(PeriphClkInit->Dfsdm1AudioClockSelection); + 470 .loc 1 449 5 view .LVU157 + 471 02a6 0F4A ldr r2, .L87 + 472 02a8 D2F88C30 ldr r3, [r2, #140] + 473 02ac 23F08063 bic r3, r3, #67108864 + 474 02b0 D4F88C10 ldr r1, [r4, #140] + 475 02b4 0B43 orrs r3, r3, r1 + 476 02b6 C2F88C30 str r3, [r2, #140] + 477 .L37: + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- PLLI2S Configuration ---------------------------------*/ + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S is configured when a peripheral will use it as source clock : SAI1, SAI2, I2S or SPDIF- + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((plli2sused == 1) || ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERI + 478 .loc 1 455 3 view .LVU158 + 479 .loc 1 455 5 is_stmt 0 view .LVU159 + 480 02ba 26B9 cbnz r6, .L38 + 481 .loc 1 455 42 discriminator 1 view .LVU160 + 482 02bc 2368 ldr r3, [r4] + 483 .loc 1 455 24 discriminator 1 view .LVU161 + 484 02be 13F0007F tst r3, #33554432 + 485 02c2 00F00681 beq .L39 + 486 .L38: + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Disable the PLLI2S */ + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_DISABLE(); + 487 .loc 1 458 5 is_stmt 1 view .LVU162 + 488 02c6 074A ldr r2, .L87 + 489 02c8 1368 ldr r3, [r2] + 490 02ca 23F08063 bic r3, r3, #67108864 + 491 02ce 1360 str r3, [r2] + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 492 .loc 1 461 5 view .LVU163 + 493 .loc 1 461 17 is_stmt 0 view .LVU164 + 494 02d0 FFF7FEFF bl HAL_GetTick + 495 .LVL11: + 496 02d4 0646 mov r6, r0 + 497 .LVL12: + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLI2S is disabled */ + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET) + 498 .loc 1 464 5 is_stmt 1 view .LVU165 + 499 .L40: + 500 .loc 1 464 10 view .LVU166 + 501 .loc 1 464 11 is_stmt 0 view .LVU167 + 502 02d6 034B ldr r3, .L87 + 503 02d8 1B68 ldr r3, [r3] + 504 .loc 1 464 10 view .LVU168 + ARM GAS /tmp/cc41FM7T.s page 18 + + + 505 02da 13F0006F tst r3, #134217728 + 506 02de 7AD0 beq .L79 + 507 02e0 02E0 b .L88 + 508 .L89: + 509 02e2 00BF .align 2 + 510 .L87: + 511 02e4 00380240 .word 1073887232 + 512 .L88: + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) + 513 .loc 1 466 7 is_stmt 1 view .LVU169 + 514 .loc 1 466 11 is_stmt 0 view .LVU170 + 515 02e8 FFF7FEFF bl HAL_GetTick + 516 .LVL13: + 517 .loc 1 466 25 view .LVU171 + 518 02ec 801B subs r0, r0, r6 + 519 .loc 1 466 9 view .LVU172 + 520 02ee 6428 cmp r0, #100 + 521 02f0 F1D9 bls .L40 + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 522 .loc 1 469 16 view .LVU173 + 523 02f2 0320 movs r0, #3 + 524 02f4 F0E0 b .L10 + 525 .LVL14: + 526 .L59: + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 527 .loc 1 128 18 view .LVU174 + 528 02f6 0126 movs r6, #1 + 529 02f8 97E6 b .L2 + 530 .LVL15: + 531 .L75: + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 532 .loc 1 143 18 view .LVU175 + 533 02fa 0126 movs r6, #1 + 534 .LVL16: + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 535 .loc 1 143 18 view .LVU176 + 536 02fc A7E6 b .L4 + 537 .LVL17: + 538 .L61: + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 539 .loc 1 148 18 view .LVU177 + 540 02fe 0125 movs r5, #1 + 541 0300 A9E6 b .L3 + 542 .LVL18: + 543 .L76: + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 544 .loc 1 164 18 view .LVU178 + 545 0302 0126 movs r6, #1 + 546 .LVL19: + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 547 .loc 1 164 18 view .LVU179 + 548 0304 B9E6 b .L6 + 549 .LVL20: + 550 .L77: + ARM GAS /tmp/cc41FM7T.s page 19 + + + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 551 .loc 1 183 5 is_stmt 1 view .LVU180 + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 552 .loc 1 186 5 view .LVU181 + 553 .LBB2: + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 554 .loc 1 186 5 view .LVU182 + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 555 .loc 1 186 5 view .LVU183 + 556 0306 7F4B ldr r3, .L90 + 557 0308 1A6C ldr r2, [r3, #64] + 558 030a 42F08052 orr r2, r2, #268435456 + 559 030e 1A64 str r2, [r3, #64] + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 560 .loc 1 186 5 view .LVU184 + 561 0310 1B6C ldr r3, [r3, #64] + 562 0312 03F08053 and r3, r3, #268435456 + 563 0316 0193 str r3, [sp, #4] + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 564 .loc 1 186 5 view .LVU185 + 565 0318 019B ldr r3, [sp, #4] + 566 .LBE2: + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 567 .loc 1 186 5 view .LVU186 + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 568 .loc 1 189 5 view .LVU187 + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 569 .loc 1 189 14 is_stmt 0 view .LVU188 + 570 031a 7B4A ldr r2, .L90+4 + 571 031c 1368 ldr r3, [r2] + 572 031e 43F48073 orr r3, r3, #256 + 573 0322 1360 str r3, [r2] + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 574 .loc 1 192 5 is_stmt 1 view .LVU189 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 575 .loc 1 192 17 is_stmt 0 view .LVU190 + 576 0324 FFF7FEFF bl HAL_GetTick + 577 .LVL21: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 578 .loc 1 192 17 view .LVU191 + 579 0328 0746 mov r7, r0 + 580 .LVL22: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 581 .loc 1 195 5 is_stmt 1 view .LVU192 + 582 .L9: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 583 .loc 1 195 10 view .LVU193 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 584 .loc 1 195 15 is_stmt 0 view .LVU194 + 585 032a 774B ldr r3, .L90+4 + 586 032c 1B68 ldr r3, [r3] + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 587 .loc 1 195 10 view .LVU195 + 588 032e 13F4807F tst r3, #256 + 589 0332 06D1 bne .L80 + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 590 .loc 1 197 7 is_stmt 1 view .LVU196 + ARM GAS /tmp/cc41FM7T.s page 20 + + + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 591 .loc 1 197 11 is_stmt 0 view .LVU197 + 592 0334 FFF7FEFF bl HAL_GetTick + 593 .LVL23: + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 594 .loc 1 197 25 view .LVU198 + 595 0338 C01B subs r0, r0, r7 + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 596 .loc 1 197 9 view .LVU199 + 597 033a 6428 cmp r0, #100 + 598 033c F5D9 bls .L9 + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 599 .loc 1 199 16 view .LVU200 + 600 033e 0320 movs r0, #3 + 601 0340 CAE0 b .L10 + 602 .L80: + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 603 .loc 1 204 5 is_stmt 1 view .LVU201 + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 604 .loc 1 204 19 is_stmt 0 view .LVU202 + 605 0342 704B ldr r3, .L90 + 606 0344 1B6F ldr r3, [r3, #112] + 607 .LVL24: + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 608 .loc 1 206 5 is_stmt 1 view .LVU203 + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 609 .loc 1 206 7 is_stmt 0 view .LVU204 + 610 0346 13F44073 ands r3, r3, #768 + 611 .LVL25: + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 612 .loc 1 206 7 view .LVU205 + 613 034a 15D0 beq .L12 + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 614 .loc 1 206 62 discriminator 1 view .LVU206 + 615 034c 226B ldr r2, [r4, #48] + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 616 .loc 1 206 82 discriminator 1 view .LVU207 + 617 034e 02F44072 and r2, r2, #768 + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 618 .loc 1 206 33 discriminator 1 view .LVU208 + 619 0352 9A42 cmp r2, r3 + 620 0354 10D0 beq .L12 + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 621 .loc 1 209 7 is_stmt 1 view .LVU209 + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 622 .loc 1 209 21 is_stmt 0 view .LVU210 + 623 0356 6B4B ldr r3, .L90 + 624 .LVL26: + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 625 .loc 1 209 21 view .LVU211 + 626 0358 1A6F ldr r2, [r3, #112] + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 627 .loc 1 209 15 view .LVU212 + 628 035a 22F44072 bic r2, r2, #768 + 629 .LVL27: + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_BACKUPRESET_RELEASE(); + 630 .loc 1 212 7 is_stmt 1 view .LVU213 + ARM GAS /tmp/cc41FM7T.s page 21 + + + 631 035e 196F ldr r1, [r3, #112] + 632 0360 41F48031 orr r1, r1, #65536 + 633 0364 1967 str r1, [r3, #112] + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 634 .loc 1 213 7 view .LVU214 + 635 0366 196F ldr r1, [r3, #112] + 636 0368 21F48031 bic r1, r1, #65536 + 637 036c 1967 str r1, [r3, #112] + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 638 .loc 1 216 7 view .LVU215 + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 639 .loc 1 216 17 is_stmt 0 view .LVU216 + 640 036e 1A67 str r2, [r3, #112] + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 641 .loc 1 219 7 is_stmt 1 view .LVU217 + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 642 .loc 1 219 11 is_stmt 0 view .LVU218 + 643 0370 1B6F ldr r3, [r3, #112] + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 644 .loc 1 219 10 view .LVU219 + 645 0372 13F0010F tst r3, #1 + 646 0376 12D1 bne .L81 + 647 .LVL28: + 648 .L12: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 649 .loc 1 234 5 is_stmt 1 view .LVU220 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 650 .loc 1 234 5 view .LVU221 + 651 0378 236B ldr r3, [r4, #48] + 652 037a 03F44072 and r2, r3, #768 + 653 037e B2F5407F cmp r2, #768 + 654 0382 1DD0 beq .L82 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 655 .loc 1 234 5 is_stmt 0 discriminator 2 view .LVU222 + 656 0384 5F4A ldr r2, .L90 + 657 0386 9368 ldr r3, [r2, #8] + 658 0388 23F4F813 bic r3, r3, #2031616 + 659 038c 9360 str r3, [r2, #8] + 660 .L16: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 661 .loc 1 234 5 is_stmt 1 discriminator 4 view .LVU223 + 662 038e 5D49 ldr r1, .L90 + 663 0390 0B6F ldr r3, [r1, #112] + 664 0392 226B ldr r2, [r4, #48] + 665 0394 C2F30B02 ubfx r2, r2, #0, #12 + 666 0398 1343 orrs r3, r3, r2 + 667 039a 0B67 str r3, [r1, #112] + 668 039c 78E6 b .L8 + 669 .LVL29: + 670 .L81: + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 671 .loc 1 222 9 view .LVU224 + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 672 .loc 1 222 21 is_stmt 0 view .LVU225 + 673 039e FFF7FEFF bl HAL_GetTick + 674 .LVL30: + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + ARM GAS /tmp/cc41FM7T.s page 22 + + + 675 .loc 1 222 21 view .LVU226 + 676 03a2 0746 mov r7, r0 + 677 .LVL31: + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 678 .loc 1 225 9 is_stmt 1 view .LVU227 + 679 .L13: + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 680 .loc 1 225 14 view .LVU228 + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 681 .loc 1 225 15 is_stmt 0 view .LVU229 + 682 03a4 574B ldr r3, .L90 + 683 03a6 1B6F ldr r3, [r3, #112] + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 684 .loc 1 225 14 view .LVU230 + 685 03a8 13F0020F tst r3, #2 + 686 03ac E4D1 bne .L12 + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 687 .loc 1 227 11 is_stmt 1 view .LVU231 + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 688 .loc 1 227 15 is_stmt 0 view .LVU232 + 689 03ae FFF7FEFF bl HAL_GetTick + 690 .LVL32: + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 691 .loc 1 227 29 view .LVU233 + 692 03b2 C01B subs r0, r0, r7 + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 693 .loc 1 227 13 view .LVU234 + 694 03b4 41F28833 movw r3, #5000 + 695 03b8 9842 cmp r0, r3 + 696 03ba F3D9 bls .L13 + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 697 .loc 1 229 20 view .LVU235 + 698 03bc 0320 movs r0, #3 + 699 03be 8BE0 b .L10 + 700 .L82: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 701 .loc 1 234 5 discriminator 1 view .LVU236 + 702 03c0 5048 ldr r0, .L90 + 703 03c2 8268 ldr r2, [r0, #8] + 704 03c4 22F4F812 bic r2, r2, #2031616 + 705 03c8 5049 ldr r1, .L90+8 + 706 03ca 1940 ands r1, r1, r3 + 707 03cc 0A43 orrs r2, r2, r1 + 708 03ce 8260 str r2, [r0, #8] + 709 03d0 DDE7 b .L16 + 710 .LVL33: + 711 .L78: + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 712 .loc 1 389 18 view .LVU237 + 713 03d2 0125 movs r5, #1 + 714 .LVL34: + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 715 .loc 1 389 18 view .LVU238 + 716 03d4 28E7 b .L31 + 717 .LVL35: + 718 .L79: + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + ARM GAS /tmp/cc41FM7T.s page 23 + + + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for common PLLI2S Parameters */ + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN)); + 719 .loc 1 474 5 is_stmt 1 view .LVU239 + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLI2S is selected as source clock for I2S -------------------*/ + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) && (Peri + 720 .loc 1 477 5 view .LVU240 + 721 .loc 1 477 25 is_stmt 0 view .LVU241 + 722 03d6 2368 ldr r3, [r4] + 723 .loc 1 477 7 view .LVU242 + 724 03d8 13F0010F tst r3, #1 + 725 03dc 13D0 beq .L42 + 726 .loc 1 477 109 discriminator 1 view .LVU243 + 727 03de 636B ldr r3, [r4, #52] + 728 .loc 1 477 92 discriminator 1 view .LVU244 + 729 03e0 8BB9 cbnz r3, .L42 + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for Parameters */ + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR)); + 730 .loc 1 480 7 is_stmt 1 view .LVU245 + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLI2SP and PLLI2SQ value from PLLI2SCFGR register (this value is not needed for I2S + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos); + 731 .loc 1 483 7 view .LVU246 + 732 .loc 1 483 22 is_stmt 0 view .LVU247 + 733 03e2 484A ldr r2, .L90 + 734 03e4 D2F88430 ldr r3, [r2, #132] + 735 .LVL36: + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos); + 736 .loc 1 484 7 is_stmt 1 view .LVU248 + 737 .loc 1 484 22 is_stmt 0 view .LVU249 + 738 03e8 D2F88410 ldr r1, [r2, #132] + 739 .LVL37: + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLI2S division factors */ + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */ + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */ + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , tmpreg0, tmpreg1, PeriphClkInit->PLLI + 740 .loc 1 488 7 is_stmt 1 view .LVU250 + 741 03ec 6068 ldr r0, [r4, #4] + 742 03ee 03F44033 and r3, r3, #196608 + 743 .LVL38: + 744 .loc 1 488 7 is_stmt 0 view .LVU251 + 745 03f2 43EA8013 orr r3, r3, r0, lsl #6 + 746 03f6 01F07061 and r1, r1, #251658240 + 747 .LVL39: + 748 .loc 1 488 7 view .LVU252 + 749 03fa 0B43 orrs r3, r3, r1 + 750 03fc A168 ldr r1, [r4, #8] + 751 03fe 43EA0173 orr r3, r3, r1, lsl #28 + 752 0402 C2F88430 str r3, [r2, #132] + 753 .L42: + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLI2S is selected as source clock for SAI -------------------*/ + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (Pe + ARM GAS /tmp/cc41FM7T.s page 24 + + + 754 .loc 1 492 5 is_stmt 1 view .LVU253 + 755 .loc 1 492 25 is_stmt 0 view .LVU254 + 756 0406 2368 ldr r3, [r4] + 757 .loc 1 492 7 view .LVU255 + 758 0408 13F4002F tst r3, #524288 + 759 040c 03D0 beq .L43 + 760 .loc 1 492 111 discriminator 1 view .LVU256 + 761 040e E26B ldr r2, [r4, #60] + 762 .loc 1 492 94 discriminator 1 view .LVU257 + 763 0410 B2F5801F cmp r2, #1048576 + 764 0414 06D0 beq .L44 + 765 .L43: + 766 .loc 1 492 162 discriminator 3 view .LVU258 + 767 0416 13F4801F tst r3, #1048576 + 768 041a 1ED0 beq .L45 + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (Pe + 769 .loc 1 493 111 view .LVU259 + 770 041c 236C ldr r3, [r4, #64] + 771 .loc 1 493 94 view .LVU260 + 772 041e B3F5800F cmp r3, #4194304 + 773 0422 1AD1 bne .L45 + 774 .L44: + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check for PLLI2S Parameters */ + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ)); + 775 .loc 1 496 7 is_stmt 1 view .LVU261 + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check for PLLI2S/DIVQ parameters */ + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->PLLI2SDivQ)); + 776 .loc 1 498 7 view .LVU262 + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLI2SP and PLLI2SR values from PLLI2SCFGR register (this value is not needed for SAI + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI2SCFGR_PLLI2SP_Pos); + 777 .loc 1 501 7 view .LVU263 + 778 .loc 1 501 22 is_stmt 0 view .LVU264 + 779 0424 374A ldr r2, .L90 + 780 0426 D2F88430 ldr r3, [r2, #132] + 781 .LVL40: + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos); + 782 .loc 1 502 7 is_stmt 1 view .LVU265 + 783 .loc 1 502 22 is_stmt 0 view .LVU266 + 784 042a D2F88410 ldr r1, [r2, #132] + 785 .LVL41: + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLI2S division factors */ + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */ + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */ + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */ + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, tmpreg0, PeriphClkInit->PLLI2S.PLLI2SQ + 786 .loc 1 507 7 is_stmt 1 view .LVU267 + 787 042e 6068 ldr r0, [r4, #4] + 788 0430 03F44033 and r3, r3, #196608 + 789 .LVL42: + 790 .loc 1 507 7 is_stmt 0 view .LVU268 + 791 0434 43EA8013 orr r3, r3, r0, lsl #6 + 792 0438 E068 ldr r0, [r4, #12] + 793 043a 43EA0063 orr r3, r3, r0, lsl #24 + 794 043e 01F0E041 and r1, r1, #1879048192 + 795 .LVL43: + ARM GAS /tmp/cc41FM7T.s page 25 + + + 796 .loc 1 507 7 view .LVU269 + 797 0442 0B43 orrs r3, r3, r1 + 798 0444 C2F88430 str r3, [r2, #132] + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */ + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLI2SDivQ); + 799 .loc 1 510 7 is_stmt 1 view .LVU270 + 800 0448 D2F88C30 ldr r3, [r2, #140] + 801 044c 23F01F03 bic r3, r3, #31 + 802 0450 616A ldr r1, [r4, #36] + 803 0452 0139 subs r1, r1, #1 + 804 0454 0B43 orrs r3, r3, r1 + 805 0456 C2F88C30 str r3, [r2, #140] + 806 .L45: + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLI2S is selected as source clock for SPDIF-RX ---------------- + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) + 807 .loc 1 514 5 view .LVU271 + 808 .loc 1 514 23 is_stmt 0 view .LVU272 + 809 045a 2368 ldr r3, [r4] + 810 .loc 1 514 7 view .LVU273 + 811 045c 13F0807F tst r3, #16777216 + 812 0460 11D0 beq .L46 + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for Parameters */ + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->PLLI2S.PLLI2SP)); + 813 .loc 1 517 7 is_stmt 1 view .LVU274 + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLI2SR value from PLLI2SCFGR register (this value is not needed for SPDIF-RX configur + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos); + 814 .loc 1 520 7 view .LVU275 + 815 .loc 1 520 22 is_stmt 0 view .LVU276 + 816 0462 284A ldr r2, .L90 + 817 0464 D2F88400 ldr r0, [r2, #132] + 818 .LVL44: + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos); + 819 .loc 1 521 7 is_stmt 1 view .LVU277 + 820 .loc 1 521 22 is_stmt 0 view .LVU278 + 821 0468 D2F88410 ldr r1, [r2, #132] + 822 .LVL45: + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLI2S division factors */ + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */ + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SPDIFCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */ + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, tmpreg + 823 .loc 1 525 7 is_stmt 1 view .LVU279 + 824 046c 6668 ldr r6, [r4, #4] + 825 .LVL46: + 826 .loc 1 525 7 is_stmt 0 view .LVU280 + 827 046e 2369 ldr r3, [r4, #16] + 828 0470 1B04 lsls r3, r3, #16 + 829 0472 43EA8613 orr r3, r3, r6, lsl #6 + 830 0476 00F07060 and r0, r0, #251658240 + 831 .LVL47: + 832 .loc 1 525 7 view .LVU281 + 833 047a 0343 orrs r3, r3, r0 + 834 047c 01F0E041 and r1, r1, #1879048192 + ARM GAS /tmp/cc41FM7T.s page 26 + + + 835 .LVL48: + 836 .loc 1 525 7 view .LVU282 + 837 0480 0B43 orrs r3, r3, r1 + 838 0482 C2F88430 str r3, [r2, #132] + 839 .L46: + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLI2S is just selected -----------------*/ + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S) + 840 .loc 1 529 5 is_stmt 1 view .LVU283 + 841 .loc 1 529 22 is_stmt 0 view .LVU284 + 842 0486 2368 ldr r3, [r4] + 843 .loc 1 529 7 view .LVU285 + 844 0488 13F0007F tst r3, #33554432 + 845 048c 0DD0 beq .L47 + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check for Parameters */ + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SP_VALUE(PeriphClkInit->PLLI2S.PLLI2SP)); + 846 .loc 1 532 7 is_stmt 1 view .LVU286 + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR)); + 847 .loc 1 533 7 view .LVU287 + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ)); + 848 .loc 1 534 7 view .LVU288 + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLI2S division factors */ + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLI2SM) */ + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SPDIFRXCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SP */ + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SP, Periph + 849 .loc 1 539 7 view .LVU289 + 850 048e 6268 ldr r2, [r4, #4] + 851 0490 2369 ldr r3, [r4, #16] + 852 0492 1B04 lsls r3, r3, #16 + 853 0494 43EA8213 orr r3, r3, r2, lsl #6 + 854 0498 E268 ldr r2, [r4, #12] + 855 049a 43EA0263 orr r3, r3, r2, lsl #24 + 856 049e A268 ldr r2, [r4, #8] + 857 04a0 43EA0273 orr r3, r3, r2, lsl #28 + 858 04a4 174A ldr r2, .L90 + 859 04a6 C2F88430 str r3, [r2, #132] + 860 .L47: + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLI2S */ + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_ENABLE(); + 861 .loc 1 543 5 view .LVU290 + 862 04aa 164A ldr r2, .L90 + 863 04ac 1368 ldr r3, [r2] + 864 04ae 43F08063 orr r3, r3, #67108864 + 865 04b2 1360 str r3, [r2] + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 866 .loc 1 546 5 view .LVU291 + 867 .loc 1 546 17 is_stmt 0 view .LVU292 + 868 04b4 FFF7FEFF bl HAL_GetTick + 869 .LVL49: + 870 04b8 0646 mov r6, r0 + ARM GAS /tmp/cc41FM7T.s page 27 + + + 871 .LVL50: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLI2S is ready */ + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) + 872 .loc 1 549 5 is_stmt 1 view .LVU293 + 873 .L48: + 874 .loc 1 549 10 view .LVU294 + 875 .loc 1 549 11 is_stmt 0 view .LVU295 + 876 04ba 124B ldr r3, .L90 + 877 04bc 1B68 ldr r3, [r3] + 878 .loc 1 549 10 view .LVU296 + 879 04be 13F0006F tst r3, #134217728 + 880 04c2 06D1 bne .L39 + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) + 881 .loc 1 551 7 is_stmt 1 view .LVU297 + 882 .loc 1 551 11 is_stmt 0 view .LVU298 + 883 04c4 FFF7FEFF bl HAL_GetTick + 884 .LVL51: + 885 .loc 1 551 25 view .LVU299 + 886 04c8 801B subs r0, r0, r6 + 887 .loc 1 551 9 view .LVU300 + 888 04ca 6428 cmp r0, #100 + 889 04cc F5D9 bls .L48 + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 890 .loc 1 554 16 view .LVU301 + 891 04ce 0320 movs r0, #3 + 892 04d0 02E0 b .L10 + 893 .LVL52: + 894 .L39: + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- PLLSAI Configuration ---------------------------------*/ + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI is configured when a peripheral will use it as source clock : SAI1, SAI2, LTDC or CK48 + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(pllsaiused == 1) + 895 .loc 1 561 3 is_stmt 1 view .LVU302 + 896 .loc 1 561 5 is_stmt 0 view .LVU303 + 897 04d2 012D cmp r5, #1 + 898 04d4 02D0 beq .L83 + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Disable PLLSAI Clock */ + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_DISABLE(); + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLSAI is disabled */ + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET) + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + ARM GAS /tmp/cc41FM7T.s page 28 + + + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the PLLSAI division factors */ + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->PLLSAI.PLLSAIN)); + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLSAI is selected as source clock for SAI -------------------*/ + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (Pe + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (Pe + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for PLLSAIQ Parameter */ + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->PLLSAI.PLLSAIQ)); + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for PLLSAI/DIVQ Parameter */ + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->PLLSAIDivQ)); + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLSAIP value from PLLSAICFGR register (this value is not needed for SAI configuratio + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos); + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLSAICFGR_PLLSAIR_Pos); + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */ + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg0, PeriphClkInit->PLLSAI.PLLSAI + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */ + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLSAIDivQ); + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLSAI is selected as source clock for CLK48 ------------------- + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case of PLLI2S is selected as source clock for CK48 */ + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) && (P + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for Parameters */ + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->PLLSAI.PLLSAIP)); + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLSAIQ and PLLSAIR value from PLLSAICFGR register (this value is not needed for CK48 + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos); + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos); + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLSAI division factors */ + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) x (PLLI2SN/PLLM) */ + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* 48CLK = f(PLLSAI clock output) = f(VCO clock) / PLLSAIP */ + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , PeriphClkInit->PLLSAI.PLLSAIP, tmpreg + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined(STM32F746xx) || defined(STM32F756xx) || defined (STM32F767xx) || defined (STM32F769xx) + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*---------------------------- LTDC configuration -------------------------------*/ + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == (RCC_PERIPHCLK_LTDC)) + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIR_VALUE(PeriphClkInit->PLLSAI.PLLSAIR)); + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAI_DIVR_VALUE(PeriphClkInit->PLLSAIDivR)); + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLSAIP and PLLSAIQ value from PLLSAICFGR register (these value are not needed for LT + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos); + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos); + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* LTDC_CLK(first level) = PLLSAI_VCO Output/PLLSAIR */ + ARM GAS /tmp/cc41FM7T.s page 29 + + + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg1, tmpreg0, PeriphClkInit->PLLS + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* LTDC_CLK = LTDC_CLK(first level)/PLLSAIDIVR */ + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_PLLSAICLKDIVR_CONFIG(PeriphClkInit->PLLSAIDivR); + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F746xx || STM32F756xx || STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx || + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable PLLSAI Clock */ + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_ENABLE(); + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLSAI is ready */ + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_OK; + 899 .loc 1 656 10 view .LVU304 + 900 04d6 0020 movs r0, #0 + 901 .LVL53: + 902 .L10: + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 903 .loc 1 657 1 view .LVU305 + 904 04d8 03B0 add sp, sp, #12 + 905 .LCFI2: + 906 .cfi_remember_state + 907 .cfi_def_cfa_offset 20 + 908 @ sp needed + 909 04da F0BD pop {r4, r5, r6, r7, pc} + 910 .LVL54: + 911 .L83: + 912 .LCFI3: + 913 .cfi_restore_state + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 914 .loc 1 564 5 is_stmt 1 view .LVU306 + 915 04dc 094A ldr r2, .L90 + 916 04de 1368 ldr r3, [r2] + 917 04e0 23F08053 bic r3, r3, #268435456 + 918 04e4 1360 str r3, [r2] + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 919 .loc 1 567 5 view .LVU307 + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 920 .loc 1 567 17 is_stmt 0 view .LVU308 + 921 04e6 FFF7FEFF bl HAL_GetTick + 922 .LVL55: + 923 04ea 0546 mov r5, r0 + 924 .LVL56: + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 925 .loc 1 570 5 is_stmt 1 view .LVU309 + 926 .L50: + ARM GAS /tmp/cc41FM7T.s page 30 + + + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 927 .loc 1 570 10 view .LVU310 + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 928 .loc 1 570 11 is_stmt 0 view .LVU311 + 929 04ec 054B ldr r3, .L90 + 930 04ee 1B68 ldr r3, [r3] + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 931 .loc 1 570 10 view .LVU312 + 932 04f0 13F0005F tst r3, #536870912 + 933 04f4 0CD0 beq .L84 + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 934 .loc 1 572 7 is_stmt 1 view .LVU313 + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 935 .loc 1 572 11 is_stmt 0 view .LVU314 + 936 04f6 FFF7FEFF bl HAL_GetTick + 937 .LVL57: + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 938 .loc 1 572 25 view .LVU315 + 939 04fa 401B subs r0, r0, r5 + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 940 .loc 1 572 9 view .LVU316 + 941 04fc 6428 cmp r0, #100 + 942 04fe F5D9 bls .L50 + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 943 .loc 1 575 16 view .LVU317 + 944 0500 0320 movs r0, #3 + 945 0502 E9E7 b .L10 + 946 .L91: + 947 .align 2 + 948 .L90: + 949 0504 00380240 .word 1073887232 + 950 0508 00700040 .word 1073770496 + 951 050c FFFCFF0F .word 268434687 + 952 .L84: + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 953 .loc 1 580 5 is_stmt 1 view .LVU318 + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (Pe + 954 .loc 1 583 5 view .LVU319 + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (Pe + 955 .loc 1 583 25 is_stmt 0 view .LVU320 + 956 0510 2368 ldr r3, [r4] + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (Pe + 957 .loc 1 583 7 view .LVU321 + 958 0512 13F4002F tst r3, #524288 + 959 0516 01D0 beq .L52 + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (Pe + 960 .loc 1 583 111 discriminator 1 view .LVU322 + 961 0518 E26B ldr r2, [r4, #60] + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (Pe + 962 .loc 1 583 94 discriminator 1 view .LVU323 + 963 051a 22B1 cbz r2, .L53 + 964 .L52: + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (Pe + 965 .loc 1 583 162 discriminator 3 view .LVU324 + 966 051c 13F4801F tst r3, #1048576 + 967 0520 1DD0 beq .L54 + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + ARM GAS /tmp/cc41FM7T.s page 31 + + + 968 .loc 1 584 111 view .LVU325 + 969 0522 236C ldr r3, [r4, #64] + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 970 .loc 1 584 94 view .LVU326 + 971 0524 DBB9 cbnz r3, .L54 + 972 .L53: + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for PLLSAI/DIVQ Parameter */ + 973 .loc 1 587 7 is_stmt 1 view .LVU327 + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 974 .loc 1 589 7 view .LVU328 + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLSAICFGR_PLLSAIR_Pos); + 975 .loc 1 592 7 view .LVU329 + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLSAICFGR_PLLSAIR_Pos); + 976 .loc 1 592 22 is_stmt 0 view .LVU330 + 977 0526 354A ldr r2, .L92 + 978 0528 D2F88830 ldr r3, [r2, #136] + 979 .LVL58: + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ + 980 .loc 1 593 7 is_stmt 1 view .LVU331 + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ + 981 .loc 1 593 22 is_stmt 0 view .LVU332 + 982 052c D2F88810 ldr r1, [r2, #136] + 983 .LVL59: + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 984 .loc 1 597 7 is_stmt 1 view .LVU333 + 985 0530 6069 ldr r0, [r4, #20] + 986 0532 03F44033 and r3, r3, #196608 + 987 .LVL60: + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 988 .loc 1 597 7 is_stmt 0 view .LVU334 + 989 0536 43EA8013 orr r3, r3, r0, lsl #6 + 990 053a A069 ldr r0, [r4, #24] + 991 053c 43EA0063 orr r3, r3, r0, lsl #24 + 992 0540 01F0E041 and r1, r1, #1879048192 + 993 .LVL61: + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 994 .loc 1 597 7 view .LVU335 + 995 0544 0B43 orrs r3, r3, r1 + 996 0546 C2F88830 str r3, [r2, #136] + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 997 .loc 1 600 7 is_stmt 1 view .LVU336 + 998 054a D2F88C30 ldr r3, [r2, #140] + 999 054e 23F4F853 bic r3, r3, #7936 + 1000 0552 A16A ldr r1, [r4, #40] + 1001 0554 0139 subs r1, r1, #1 + 1002 0556 43EA0123 orr r3, r3, r1, lsl #8 + 1003 055a C2F88C30 str r3, [r2, #140] + 1004 .L54: + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1005 .loc 1 605 5 view .LVU337 + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1006 .loc 1 605 24 is_stmt 0 view .LVU338 + 1007 055e 2368 ldr r3, [r4] + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1008 .loc 1 605 7 view .LVU339 + 1009 0560 13F4001F tst r3, #2097152 + 1010 0564 03D0 beq .L55 + ARM GAS /tmp/cc41FM7T.s page 32 + + + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1011 .loc 1 605 112 discriminator 1 view .LVU340 + 1012 0566 E36F ldr r3, [r4, #124] + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1013 .loc 1 605 95 discriminator 1 view .LVU341 + 1014 0568 B3F1006F cmp r3, #134217728 + 1015 056c 31D0 beq .L85 + 1016 .LVL62: + 1017 .L55: + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1018 .loc 1 621 5 is_stmt 1 view .LVU342 + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1019 .loc 1 621 23 is_stmt 0 view .LVU343 + 1020 056e 2368 ldr r3, [r4] + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1021 .loc 1 621 7 view .LVU344 + 1022 0570 13F0080F tst r3, #8 + 1023 0574 19D0 beq .L56 + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAI_DIVR_VALUE(PeriphClkInit->PLLSAIDivR)); + 1024 .loc 1 623 7 is_stmt 1 view .LVU345 + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1025 .loc 1 624 7 view .LVU346 + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos); + 1026 .loc 1 627 7 view .LVU347 + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos); + 1027 .loc 1 627 22 is_stmt 0 view .LVU348 + 1028 0576 214A ldr r2, .L92 + 1029 0578 D2F88810 ldr r1, [r2, #136] + 1030 .LVL63: + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1031 .loc 1 628 7 is_stmt 1 view .LVU349 + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1032 .loc 1 628 22 is_stmt 0 view .LVU350 + 1033 057c D2F88830 ldr r3, [r2, #136] + 1034 .LVL64: + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1035 .loc 1 633 7 is_stmt 1 view .LVU351 + 1036 0580 6069 ldr r0, [r4, #20] + 1037 0582 03F44033 and r3, r3, #196608 + 1038 .LVL65: + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1039 .loc 1 633 7 is_stmt 0 view .LVU352 + 1040 0586 43EA8013 orr r3, r3, r0, lsl #6 + 1041 058a 01F07061 and r1, r1, #251658240 + 1042 .LVL66: + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1043 .loc 1 633 7 view .LVU353 + 1044 058e 0B43 orrs r3, r3, r1 + 1045 0590 E169 ldr r1, [r4, #28] + 1046 0592 43EA0173 orr r3, r3, r1, lsl #28 + 1047 0596 C2F88830 str r3, [r2, #136] + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1048 .loc 1 636 7 is_stmt 1 view .LVU354 + 1049 059a D2F88C30 ldr r3, [r2, #140] + 1050 059e 23F44033 bic r3, r3, #196608 + 1051 05a2 E16A ldr r1, [r4, #44] + 1052 05a4 0B43 orrs r3, r3, r1 + ARM GAS /tmp/cc41FM7T.s page 33 + + + 1053 05a6 C2F88C30 str r3, [r2, #140] + 1054 .L56: + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1055 .loc 1 641 5 view .LVU355 + 1056 05aa 144A ldr r2, .L92 + 1057 05ac 1368 ldr r3, [r2] + 1058 05ae 43F08053 orr r3, r3, #268435456 + 1059 05b2 1360 str r3, [r2] + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1060 .loc 1 644 5 view .LVU356 + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1061 .loc 1 644 17 is_stmt 0 view .LVU357 + 1062 05b4 FFF7FEFF bl HAL_GetTick + 1063 .LVL67: + 1064 05b8 0446 mov r4, r0 + 1065 .LVL68: + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1066 .loc 1 647 5 is_stmt 1 view .LVU358 + 1067 .L57: + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1068 .loc 1 647 10 view .LVU359 + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1069 .loc 1 647 11 is_stmt 0 view .LVU360 + 1070 05ba 104B ldr r3, .L92 + 1071 05bc 1B68 ldr r3, [r3] + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1072 .loc 1 647 10 view .LVU361 + 1073 05be 13F0005F tst r3, #536870912 + 1074 05c2 19D1 bne .L86 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1075 .loc 1 649 7 is_stmt 1 view .LVU362 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1076 .loc 1 649 11 is_stmt 0 view .LVU363 + 1077 05c4 FFF7FEFF bl HAL_GetTick + 1078 .LVL69: + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1079 .loc 1 649 25 view .LVU364 + 1080 05c8 001B subs r0, r0, r4 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1081 .loc 1 649 9 view .LVU365 + 1082 05ca 6428 cmp r0, #100 + 1083 05cc F5D9 bls .L57 + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1084 .loc 1 652 16 view .LVU366 + 1085 05ce 0320 movs r0, #3 + 1086 05d0 82E7 b .L10 + 1087 .LVL70: + 1088 .L85: + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLSAIQ and PLLSAIR value from PLLSAICFGR register (this value is not needed for CK48 + 1089 .loc 1 608 7 is_stmt 1 view .LVU367 + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos); + 1090 .loc 1 610 7 view .LVU368 + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg1 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLSAICFGR_PLLSAIR_Pos); + 1091 .loc 1 610 22 is_stmt 0 view .LVU369 + 1092 05d2 0A4A ldr r2, .L92 + 1093 05d4 D2F88800 ldr r0, [r2, #136] + 1094 .LVL71: + ARM GAS /tmp/cc41FM7T.s page 34 + + + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1095 .loc 1 611 7 is_stmt 1 view .LVU370 + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1096 .loc 1 611 22 is_stmt 0 view .LVU371 + 1097 05d8 D2F88810 ldr r1, [r2, #136] + 1098 .LVL72: + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1099 .loc 1 616 7 is_stmt 1 view .LVU372 + 1100 05dc 6569 ldr r5, [r4, #20] + 1101 .LVL73: + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1102 .loc 1 616 7 is_stmt 0 view .LVU373 + 1103 05de 236A ldr r3, [r4, #32] + 1104 05e0 1B04 lsls r3, r3, #16 + 1105 05e2 43EA8513 orr r3, r3, r5, lsl #6 + 1106 05e6 00F07060 and r0, r0, #251658240 + 1107 .LVL74: + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1108 .loc 1 616 7 view .LVU374 + 1109 05ea 0343 orrs r3, r3, r0 + 1110 05ec 01F0E041 and r1, r1, #1879048192 + 1111 .LVL75: + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1112 .loc 1 616 7 view .LVU375 + 1113 05f0 0B43 orrs r3, r3, r1 + 1114 05f2 C2F88830 str r3, [r2, #136] + 1115 05f6 BAE7 b .L55 + 1116 .LVL76: + 1117 .L86: + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1118 .loc 1 656 10 view .LVU376 + 1119 05f8 0020 movs r0, #0 + 1120 05fa 6DE7 b .L10 + 1121 .L93: + 1122 .align 2 + 1123 .L92: + 1124 05fc 00380240 .word 1073887232 + 1125 .cfi_endproc + 1126 .LFE141: + 1128 .section .text.HAL_RCCEx_GetPeriphCLKConfig,"ax",%progbits + 1129 .align 1 + 1130 .global HAL_RCCEx_GetPeriphCLKConfig + 1131 .syntax unified + 1132 .thumb + 1133 .thumb_func + 1134 .fpu fpv5-d16 + 1136 HAL_RCCEx_GetPeriphCLKConfig: + 1137 .LVL77: + 1138 .LFB142: + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Get the RCC_PeriphCLKInitTypeDef according to the internal + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * RCC configuration registers. + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @param PeriphClkInit pointer to the configured RCC_PeriphCLKInitTypeDef structure + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @retval None + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) + ARM GAS /tmp/cc41FM7T.s page 35 + + + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1139 .loc 1 666 1 is_stmt 1 view -0 + 1140 .cfi_startproc + 1141 @ args = 0, pretend = 0, frame = 0 + 1142 @ frame_needed = 0, uses_anonymous_args = 0 + 1143 @ link register save eliminated. + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tempreg = 0; + 1144 .loc 1 667 3 view .LVU378 + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Set all possible values for the extended clock type parameter------------*/ + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_I2S | RCC_PERIPHCLK_LPTIM1 |\ + 1145 .loc 1 671 3 view .LVU379 + 1146 .loc 1 671 39 is_stmt 0 view .LVU380 + 1147 0000 5F4B ldr r3, .L97 + 1148 0002 0360 str r3, [r0] + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 |\ + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC |\ + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_CEC | RCC_PERIPHCLK_I2C4 |\ + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 |\ + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_USART1 |\ + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 |\ + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |\ + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_USART6 | RCC_PERIPHCLK_UART7 |\ + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_UART8 | RCC_PERIPHCLK_SDMMC1 |\ + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_CLK48 | RCC_PERIPHCLK_SDMMC2 |\ + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_DFSDM1 | RCC_PERIPHCLK_DFSDM1_AUDIO; + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #else + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_I2S | RCC_PERIPHCLK_LPTIM1 |\ + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 |\ + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC |\ + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_CEC | RCC_PERIPHCLK_I2C4 |\ + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 |\ + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_USART1 |\ + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 |\ + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |\ + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_USART6 | RCC_PERIPHCLK_UART7 |\ + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_UART8 | RCC_PERIPHCLK_SDMMC1 |\ + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_CLK48; + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the PLLI2S Clock configuration -----------------------------------------------*/ + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLI2S.PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI + 1149 .loc 1 698 3 is_stmt 1 view .LVU381 + 1150 .loc 1 698 50 is_stmt 0 view .LVU382 + 1151 0004 5F4B ldr r3, .L97+4 + 1152 0006 D3F88420 ldr r2, [r3, #132] + 1153 .loc 1 698 35 view .LVU383 + 1154 000a C2F38812 ubfx r2, r2, #6, #9 + 1155 .loc 1 698 33 view .LVU384 + 1156 000e 4260 str r2, [r0, #4] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLI2S.PLLI2SP = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SP) >> RCC_PLLI + 1157 .loc 1 699 3 is_stmt 1 view .LVU385 + 1158 .loc 1 699 50 is_stmt 0 view .LVU386 + 1159 0010 D3F88420 ldr r2, [r3, #132] + 1160 .loc 1 699 35 view .LVU387 + 1161 0014 C2F30142 ubfx r2, r2, #16, #2 + ARM GAS /tmp/cc41FM7T.s page 36 + + + 1162 .loc 1 699 33 view .LVU388 + 1163 0018 0261 str r2, [r0, #16] + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLI2S.PLLI2SQ = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI + 1164 .loc 1 700 3 is_stmt 1 view .LVU389 + 1165 .loc 1 700 50 is_stmt 0 view .LVU390 + 1166 001a D3F88420 ldr r2, [r3, #132] + 1167 .loc 1 700 35 view .LVU391 + 1168 001e C2F30362 ubfx r2, r2, #24, #4 + 1169 .loc 1 700 33 view .LVU392 + 1170 0022 C260 str r2, [r0, #12] + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLI2S.PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI + 1171 .loc 1 701 3 is_stmt 1 view .LVU393 + 1172 .loc 1 701 50 is_stmt 0 view .LVU394 + 1173 0024 D3F88420 ldr r2, [r3, #132] + 1174 .loc 1 701 35 view .LVU395 + 1175 0028 C2F30272 ubfx r2, r2, #28, #3 + 1176 .loc 1 701 33 view .LVU396 + 1177 002c 8260 str r2, [r0, #8] + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the PLLSAI Clock configuration -----------------------------------------------*/ + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLSAI.PLLSAIN = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLS + 1178 .loc 1 704 3 is_stmt 1 view .LVU397 + 1179 .loc 1 704 50 is_stmt 0 view .LVU398 + 1180 002e D3F88820 ldr r2, [r3, #136] + 1181 .loc 1 704 35 view .LVU399 + 1182 0032 C2F38812 ubfx r2, r2, #6, #9 + 1183 .loc 1 704 33 view .LVU400 + 1184 0036 4261 str r2, [r0, #20] + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLSAI.PLLSAIP = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLS + 1185 .loc 1 705 3 is_stmt 1 view .LVU401 + 1186 .loc 1 705 50 is_stmt 0 view .LVU402 + 1187 0038 D3F88820 ldr r2, [r3, #136] + 1188 .loc 1 705 35 view .LVU403 + 1189 003c C2F30142 ubfx r2, r2, #16, #2 + 1190 .loc 1 705 33 view .LVU404 + 1191 0040 0262 str r2, [r0, #32] + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLSAI.PLLSAIQ = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLS + 1192 .loc 1 706 3 is_stmt 1 view .LVU405 + 1193 .loc 1 706 50 is_stmt 0 view .LVU406 + 1194 0042 D3F88820 ldr r2, [r3, #136] + 1195 .loc 1 706 35 view .LVU407 + 1196 0046 C2F30362 ubfx r2, r2, #24, #4 + 1197 .loc 1 706 33 view .LVU408 + 1198 004a 8261 str r2, [r0, #24] + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLSAI.PLLSAIR = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIR) >> RCC_PLLS + 1199 .loc 1 707 3 is_stmt 1 view .LVU409 + 1200 .loc 1 707 50 is_stmt 0 view .LVU410 + 1201 004c D3F88820 ldr r2, [r3, #136] + 1202 .loc 1 707 35 view .LVU411 + 1203 0050 C2F30272 ubfx r2, r2, #28, #3 + 1204 .loc 1 707 33 view .LVU412 + 1205 0054 C261 str r2, [r0, #28] + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the PLLSAI/PLLI2S division factors -------------------------------------------*/ + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLI2SDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) >> RCC_DCKCFGR1_ + 1206 .loc 1 710 3 is_stmt 1 view .LVU413 + 1207 .loc 1 710 46 is_stmt 0 view .LVU414 + ARM GAS /tmp/cc41FM7T.s page 37 + + + 1208 0056 D3F88C20 ldr r2, [r3, #140] + 1209 .loc 1 710 31 view .LVU415 + 1210 005a 02F01F02 and r2, r2, #31 + 1211 .loc 1 710 29 view .LVU416 + 1212 005e 4262 str r2, [r0, #36] + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLSAIDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> RCC_DCKCFGR1_ + 1213 .loc 1 711 3 is_stmt 1 view .LVU417 + 1214 .loc 1 711 46 is_stmt 0 view .LVU418 + 1215 0060 D3F88C20 ldr r2, [r3, #140] + 1216 .loc 1 711 31 view .LVU419 + 1217 0064 C2F30422 ubfx r2, r2, #8, #5 + 1218 .loc 1 711 29 view .LVU420 + 1219 0068 8262 str r2, [r0, #40] + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLSAIDivR = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVR) >> RCC_DCKCFGR1_ + 1220 .loc 1 712 3 is_stmt 1 view .LVU421 + 1221 .loc 1 712 46 is_stmt 0 view .LVU422 + 1222 006a D3F88C20 ldr r2, [r3, #140] + 1223 .loc 1 712 31 view .LVU423 + 1224 006e C2F30142 ubfx r2, r2, #16, #2 + 1225 .loc 1 712 29 view .LVU424 + 1226 0072 C262 str r2, [r0, #44] + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the SAI1 clock configuration ----------------------------------------------*/ + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Sai1ClockSelection = __HAL_RCC_GET_SAI1_SOURCE(); + 1227 .loc 1 715 3 is_stmt 1 view .LVU425 + 1228 .loc 1 715 39 is_stmt 0 view .LVU426 + 1229 0074 D3F88C20 ldr r2, [r3, #140] + 1230 0078 02F44012 and r2, r2, #3145728 + 1231 .loc 1 715 37 view .LVU427 + 1232 007c C263 str r2, [r0, #60] + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the SAI2 clock configuration ----------------------------------------------*/ + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Sai2ClockSelection = __HAL_RCC_GET_SAI2_SOURCE(); + 1233 .loc 1 718 3 is_stmt 1 view .LVU428 + 1234 .loc 1 718 39 is_stmt 0 view .LVU429 + 1235 007e D3F88C20 ldr r2, [r3, #140] + 1236 0082 02F44002 and r2, r2, #12582912 + 1237 .loc 1 718 37 view .LVU430 + 1238 0086 0264 str r2, [r0, #64] + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the I2S clock configuration ------------------------------------------*/ + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->I2sClockSelection = __HAL_RCC_GET_I2SCLKSOURCE(); + 1239 .loc 1 721 3 is_stmt 1 view .LVU431 + 1240 .loc 1 721 38 is_stmt 0 view .LVU432 + 1241 0088 9A68 ldr r2, [r3, #8] + 1242 008a 02F40002 and r2, r2, #8388608 + 1243 .loc 1 721 36 view .LVU433 + 1244 008e 4263 str r2, [r0, #52] + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the I2C1 clock configuration ------------------------------------------*/ + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->I2c1ClockSelection = __HAL_RCC_GET_I2C1_SOURCE(); + 1245 .loc 1 724 3 is_stmt 1 view .LVU434 + 1246 .loc 1 724 39 is_stmt 0 view .LVU435 + 1247 0090 D3F89020 ldr r2, [r3, #144] + 1248 0094 02F44032 and r2, r2, #196608 + 1249 .loc 1 724 37 view .LVU436 + 1250 0098 4266 str r2, [r0, #100] + ARM GAS /tmp/cc41FM7T.s page 38 + + + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the I2C2 clock configuration ------------------------------------------*/ + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->I2c2ClockSelection = __HAL_RCC_GET_I2C2_SOURCE(); + 1251 .loc 1 727 3 is_stmt 1 view .LVU437 + 1252 .loc 1 727 39 is_stmt 0 view .LVU438 + 1253 009a D3F89020 ldr r2, [r3, #144] + 1254 009e 02F44022 and r2, r2, #786432 + 1255 .loc 1 727 37 view .LVU439 + 1256 00a2 8266 str r2, [r0, #104] + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the I2C3 clock configuration ------------------------------------------*/ + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->I2c3ClockSelection = __HAL_RCC_GET_I2C3_SOURCE(); + 1257 .loc 1 730 3 is_stmt 1 view .LVU440 + 1258 .loc 1 730 39 is_stmt 0 view .LVU441 + 1259 00a4 D3F89020 ldr r2, [r3, #144] + 1260 00a8 02F44012 and r2, r2, #3145728 + 1261 .loc 1 730 37 view .LVU442 + 1262 00ac C266 str r2, [r0, #108] + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the I2C4 clock configuration ------------------------------------------*/ + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->I2c4ClockSelection = __HAL_RCC_GET_I2C4_SOURCE(); + 1263 .loc 1 733 3 is_stmt 1 view .LVU443 + 1264 .loc 1 733 39 is_stmt 0 view .LVU444 + 1265 00ae D3F89020 ldr r2, [r3, #144] + 1266 00b2 02F44002 and r2, r2, #12582912 + 1267 .loc 1 733 37 view .LVU445 + 1268 00b6 0267 str r2, [r0, #112] + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the USART1 clock configuration ------------------------------------------*/ + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Usart1ClockSelection = __HAL_RCC_GET_USART1_SOURCE(); + 1269 .loc 1 736 3 is_stmt 1 view .LVU446 + 1270 .loc 1 736 41 is_stmt 0 view .LVU447 + 1271 00b8 D3F89020 ldr r2, [r3, #144] + 1272 00bc 02F00302 and r2, r2, #3 + 1273 .loc 1 736 39 view .LVU448 + 1274 00c0 4264 str r2, [r0, #68] + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the USART2 clock configuration ------------------------------------------*/ + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Usart2ClockSelection = __HAL_RCC_GET_USART2_SOURCE(); + 1275 .loc 1 739 3 is_stmt 1 view .LVU449 + 1276 .loc 1 739 41 is_stmt 0 view .LVU450 + 1277 00c2 D3F89020 ldr r2, [r3, #144] + 1278 00c6 02F00C02 and r2, r2, #12 + 1279 .loc 1 739 39 view .LVU451 + 1280 00ca 8264 str r2, [r0, #72] + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the USART3 clock configuration ------------------------------------------*/ + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Usart3ClockSelection = __HAL_RCC_GET_USART3_SOURCE(); + 1281 .loc 1 742 3 is_stmt 1 view .LVU452 + 1282 .loc 1 742 41 is_stmt 0 view .LVU453 + 1283 00cc D3F89020 ldr r2, [r3, #144] + 1284 00d0 02F03002 and r2, r2, #48 + 1285 .loc 1 742 39 view .LVU454 + 1286 00d4 C264 str r2, [r0, #76] + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the UART4 clock configuration ------------------------------------------*/ + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Uart4ClockSelection = __HAL_RCC_GET_UART4_SOURCE(); + ARM GAS /tmp/cc41FM7T.s page 39 + + + 1287 .loc 1 745 3 is_stmt 1 view .LVU455 + 1288 .loc 1 745 40 is_stmt 0 view .LVU456 + 1289 00d6 D3F89020 ldr r2, [r3, #144] + 1290 00da 02F0C002 and r2, r2, #192 + 1291 .loc 1 745 38 view .LVU457 + 1292 00de 0265 str r2, [r0, #80] + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the UART5 clock configuration ------------------------------------------*/ + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Uart5ClockSelection = __HAL_RCC_GET_UART5_SOURCE(); + 1293 .loc 1 748 3 is_stmt 1 view .LVU458 + 1294 .loc 1 748 40 is_stmt 0 view .LVU459 + 1295 00e0 D3F89020 ldr r2, [r3, #144] + 1296 00e4 02F44072 and r2, r2, #768 + 1297 .loc 1 748 38 view .LVU460 + 1298 00e8 4265 str r2, [r0, #84] + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the USART6 clock configuration ------------------------------------------*/ + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Usart6ClockSelection = __HAL_RCC_GET_USART6_SOURCE(); + 1299 .loc 1 751 3 is_stmt 1 view .LVU461 + 1300 .loc 1 751 41 is_stmt 0 view .LVU462 + 1301 00ea D3F89020 ldr r2, [r3, #144] + 1302 00ee 02F44062 and r2, r2, #3072 + 1303 .loc 1 751 39 view .LVU463 + 1304 00f2 8265 str r2, [r0, #88] + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the UART7 clock configuration ------------------------------------------*/ + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Uart7ClockSelection = __HAL_RCC_GET_UART7_SOURCE(); + 1305 .loc 1 754 3 is_stmt 1 view .LVU464 + 1306 .loc 1 754 40 is_stmt 0 view .LVU465 + 1307 00f4 D3F89020 ldr r2, [r3, #144] + 1308 00f8 02F44052 and r2, r2, #12288 + 1309 .loc 1 754 38 view .LVU466 + 1310 00fc C265 str r2, [r0, #92] + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the UART8 clock configuration ------------------------------------------*/ + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Uart8ClockSelection = __HAL_RCC_GET_UART8_SOURCE(); + 1311 .loc 1 757 3 is_stmt 1 view .LVU467 + 1312 .loc 1 757 40 is_stmt 0 view .LVU468 + 1313 00fe D3F89020 ldr r2, [r3, #144] + 1314 0102 02F44042 and r2, r2, #49152 + 1315 .loc 1 757 38 view .LVU469 + 1316 0106 0266 str r2, [r0, #96] + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the LPTIM1 clock configuration ------------------------------------------*/ + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Lptim1ClockSelection = __HAL_RCC_GET_LPTIM1_SOURCE(); + 1317 .loc 1 760 3 is_stmt 1 view .LVU470 + 1318 .loc 1 760 41 is_stmt 0 view .LVU471 + 1319 0108 D3F89020 ldr r2, [r3, #144] + 1320 010c 02F04072 and r2, r2, #50331648 + 1321 .loc 1 760 39 view .LVU472 + 1322 0110 4267 str r2, [r0, #116] + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the CEC clock configuration -----------------------------------------------*/ + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->CecClockSelection = __HAL_RCC_GET_CEC_SOURCE(); + 1323 .loc 1 763 3 is_stmt 1 view .LVU473 + 1324 .loc 1 763 38 is_stmt 0 view .LVU474 + 1325 0112 D3F89020 ldr r2, [r3, #144] + ARM GAS /tmp/cc41FM7T.s page 40 + + + 1326 0116 02F08062 and r2, r2, #67108864 + 1327 .loc 1 763 36 view .LVU475 + 1328 011a 8267 str r2, [r0, #120] + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the CK48 clock configuration -----------------------------------------------*/ + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Clk48ClockSelection = __HAL_RCC_GET_CLK48_SOURCE(); + 1329 .loc 1 766 3 is_stmt 1 view .LVU476 + 1330 .loc 1 766 40 is_stmt 0 view .LVU477 + 1331 011c D3F89020 ldr r2, [r3, #144] + 1332 0120 02F00062 and r2, r2, #134217728 + 1333 .loc 1 766 38 view .LVU478 + 1334 0124 C267 str r2, [r0, #124] + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the SDMMC1 clock configuration -----------------------------------------------*/ + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Sdmmc1ClockSelection = __HAL_RCC_GET_SDMMC1_SOURCE(); + 1335 .loc 1 769 3 is_stmt 1 view .LVU479 + 1336 .loc 1 769 41 is_stmt 0 view .LVU480 + 1337 0126 D3F89020 ldr r2, [r3, #144] + 1338 012a 02F08052 and r2, r2, #268435456 + 1339 .loc 1 769 39 view .LVU481 + 1340 012e C0F88020 str r2, [r0, #128] + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the SDMMC2 clock configuration -----------------------------------------------*/ + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Sdmmc2ClockSelection = __HAL_RCC_GET_SDMMC2_SOURCE(); + 1341 .loc 1 773 3 is_stmt 1 view .LVU482 + 1342 .loc 1 773 41 is_stmt 0 view .LVU483 + 1343 0132 D3F89020 ldr r2, [r3, #144] + 1344 0136 02F00052 and r2, r2, #536870912 + 1345 .loc 1 773 39 view .LVU484 + 1346 013a C0F88420 str r2, [r0, #132] + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the DFSDM clock configuration -----------------------------------------------*/ + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Dfsdm1ClockSelection = __HAL_RCC_GET_DFSDM1_SOURCE(); + 1347 .loc 1 776 3 is_stmt 1 view .LVU485 + 1348 .loc 1 776 41 is_stmt 0 view .LVU486 + 1349 013e D3F88C20 ldr r2, [r3, #140] + 1350 0142 02F00072 and r2, r2, #33554432 + 1351 .loc 1 776 39 view .LVU487 + 1352 0146 C0F88820 str r2, [r0, #136] + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the DFSDM AUDIO clock configuration -----------------------------------------------*/ + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Dfsdm1AudioClockSelection = __HAL_RCC_GET_DFSDM1AUDIO_SOURCE(); + 1353 .loc 1 779 3 is_stmt 1 view .LVU488 + 1354 .loc 1 779 46 is_stmt 0 view .LVU489 + 1355 014a D3F88C20 ldr r2, [r3, #140] + 1356 014e 02F08062 and r2, r2, #67108864 + 1357 .loc 1 779 44 view .LVU490 + 1358 0152 C0F88C20 str r2, [r0, #140] + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the RTC Clock configuration -----------------------------------------------*/ + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE); + 1359 .loc 1 783 3 is_stmt 1 view .LVU491 + 1360 .loc 1 783 17 is_stmt 0 view .LVU492 + 1361 0156 9968 ldr r1, [r3, #8] + 1362 .loc 1 783 11 view .LVU493 + ARM GAS /tmp/cc41FM7T.s page 41 + + + 1363 0158 01F4F811 and r1, r1, #2031616 + 1364 .LVL78: + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL)); + 1365 .loc 1 784 3 is_stmt 1 view .LVU494 + 1366 .loc 1 784 65 is_stmt 0 view .LVU495 + 1367 015c 1A6F ldr r2, [r3, #112] + 1368 .loc 1 784 72 view .LVU496 + 1369 015e 02F44072 and r2, r2, #768 + 1370 .loc 1 784 38 view .LVU497 + 1371 0162 0A43 orrs r2, r2, r1 + 1372 .loc 1 784 36 view .LVU498 + 1373 0164 0263 str r2, [r0, #48] + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the TIM Prescaler configuration --------------------------------------------*/ + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if ((RCC->DCKCFGR1 & RCC_DCKCFGR1_TIMPRE) == RESET) + 1374 .loc 1 787 3 is_stmt 1 view .LVU499 + 1375 .loc 1 787 11 is_stmt 0 view .LVU500 + 1376 0166 D3F88C30 ldr r3, [r3, #140] + 1377 .loc 1 787 6 view .LVU501 + 1378 016a 13F0807F tst r3, #16777216 + 1379 016e 02D1 bne .L95 + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->TIMPresSelection = RCC_TIMPRES_DESACTIVATED; + 1380 .loc 1 789 5 is_stmt 1 view .LVU502 + 1381 .loc 1 789 37 is_stmt 0 view .LVU503 + 1382 0170 0023 movs r3, #0 + 1383 0172 8363 str r3, [r0, #56] + 1384 0174 7047 bx lr + 1385 .L95: + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** else + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->TIMPresSelection = RCC_TIMPRES_ACTIVATED; + 1386 .loc 1 793 5 is_stmt 1 view .LVU504 + 1387 .loc 1 793 37 is_stmt 0 view .LVU505 + 1388 0176 4FF08073 mov r3, #16777216 + 1389 017a 8363 str r3, [r0, #56] + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1390 .loc 1 795 1 view .LVU506 + 1391 017c 7047 bx lr + 1392 .L98: + 1393 017e 00BF .align 2 + 1394 .L97: + 1395 0180 F1FFFF1C .word 486539249 + 1396 0184 00380240 .word 1073887232 + 1397 .cfi_endproc + 1398 .LFE142: + 1400 .section .text.HAL_RCCEx_GetPeriphCLKFreq,"ax",%progbits + 1401 .align 1 + 1402 .global HAL_RCCEx_GetPeriphCLKFreq + 1403 .syntax unified + 1404 .thumb + 1405 .thumb_func + 1406 .fpu fpv5-d16 + 1408 HAL_RCCEx_GetPeriphCLKFreq: + 1409 .LVL79: + ARM GAS /tmp/cc41FM7T.s page 42 + + + 1410 .LFB143: + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F745xx || STM32F746xx || STM32F756xx || STM32F765xx || STM32F767xx || STM32F769xx || + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Initializes the RCC extended peripherals clocks according to the specified + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * parameters in the RCC_PeriphCLKInitTypeDef. + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @param PeriphClkInit pointer to an RCC_PeriphCLKInitTypeDef structure that + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * contains the configuration information for the Extended Peripherals + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * clocks(I2S, SAI, RTC, TIM, UARTs, USARTs, LTPIM, SDMMC...). + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @note Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to select + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * the RTC clock source; in this case the Backup domain will be reset in + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * order to modify the RTC Clock source, as consequence RTC registers (including + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * the backup registers) are set to their reset values. + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @retval HAL status + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tickstart = 0; + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tmpreg0 = 0; + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t plli2sused = 0; + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t pllsaiused = 0; + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PERIPHCLOCK(PeriphClkInit->PeriphClockSelection)); + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------------------------- I2S configuration ----------------------------------*/ + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == (RCC_PERIPHCLK_I2S)) + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection)); + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure I2S Clock source */ + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection); + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLI2S when it's used as clock source for I2S */ + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->I2sClockSelection == RCC_I2SCLKSOURCE_PLLI2S) + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** plli2sused = 1; + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------ SAI1 configuration --------------------------------------* + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == (RCC_PERIPHCLK_SAI1)) + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_SAI1CLKSOURCE(PeriphClkInit->Sai1ClockSelection)); + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure SAI1 Clock source */ + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection); + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLI2S when it's used as clock source for SAI */ + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLI2S) + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** plli2sused = 1; + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + ARM GAS /tmp/cc41FM7T.s page 43 + + + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLSAI when it's used as clock source for SAI */ + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->Sai1ClockSelection == RCC_SAI1CLKSOURCE_PLLSAI) + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** pllsaiused = 1; + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------ SAI2 configuration --------------------------------------* + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == (RCC_PERIPHCLK_SAI2)) + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_SAI2CLKSOURCE(PeriphClkInit->Sai2ClockSelection)); + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure SAI2 Clock source */ + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_SAI2_CONFIG(PeriphClkInit->Sai2ClockSelection); + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLI2S when it's used as clock source for SAI */ + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLI2S) + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** plli2sused = 1; + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLSAI when it's used as clock source for SAI */ + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->Sai2ClockSelection == RCC_SAI2CLKSOURCE_PLLSAI) + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** pllsaiused = 1; + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------ RTC configuration --------------------------------------*/ + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC)) + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check for RTC Parameters used to output RTCCLK */ + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable Power Clock*/ + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PWR_CLK_ENABLE(); + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable write access to Backup domain */ + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PWR->CR1 |= PWR_CR1_DBP; + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait for Backup domain Write protection disable */ + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while((PWR->CR1 & PWR_CR1_DBP) == RESET) + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Reset the Backup domain only if the RTC Clock source selection is modified */ + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = (RCC->BDCR & RCC_BDCR_RTCSEL); + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((tmpreg0 != 0x00000000U) && (tmpreg0 != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL) + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + ARM GAS /tmp/cc41FM7T.s page 44 + + + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Store the content of BDCR register before the reset of Backup Domain */ + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* RTC Clock selection can be changed only if the Backup Domain is reset */ + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_BACKUPRESET_FORCE(); + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_BACKUPRESET_RELEASE(); + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Restore the Content of BDCR register */ + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC->BDCR = tmpreg0; + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait for LSE reactivation if LSE was enable prior to Backup Domain reset */ + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if (HAL_IS_BIT_SET(RCC->BDCR, RCC_BDCR_LSEON)) + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till LSE is ready */ + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------ TIM configuration --------------------------------------*/ + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == (RCC_PERIPHCLK_TIM)) + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection)); + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure Timer Prescaler */ + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection); + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- I2C1 Configuration -----------------------------------*/ + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1) + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection)); + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the I2C1 clock source */ + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection); + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- I2C2 Configuration -----------------------------------*/ + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2) + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection)); + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the I2C2 clock source */ + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection); + ARM GAS /tmp/cc41FM7T.s page 45 + + + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- I2C3 Configuration -----------------------------------*/ + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3) + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection)); + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the I2C3 clock source */ + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection); + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- USART1 Configuration ----------------------------------- + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1) + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection)); + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the USART1 clock source */ + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection); + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- USART2 Configuration ----------------------------------- + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2) + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection)); + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the USART2 clock source */ + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection); + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- USART3 Configuration ----------------------------------- + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3) +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection)); +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the USART3 clock source */ +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection); +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- UART4 Configuration -----------------------------------* +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4) +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection)); +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the UART4 clock source */ +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection); +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- UART5 Configuration -----------------------------------* +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5) +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_UART5CLKSOURCE(PeriphClkInit->Uart5ClockSelection)); + ARM GAS /tmp/cc41FM7T.s page 46 + + +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the UART5 clock source */ +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_UART5_CONFIG(PeriphClkInit->Uart5ClockSelection); +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- USART6 Configuration ----------------------------------- +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART6) == RCC_PERIPHCLK_USART6) +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_USART6CLKSOURCE(PeriphClkInit->Usart6ClockSelection)); +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the USART6 clock source */ +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_USART6_CONFIG(PeriphClkInit->Usart6ClockSelection); +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- UART7 Configuration -----------------------------------* +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART7) == RCC_PERIPHCLK_UART7) +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_UART7CLKSOURCE(PeriphClkInit->Uart7ClockSelection)); +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the UART7 clock source */ +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_UART7_CONFIG(PeriphClkInit->Uart7ClockSelection); +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- UART8 Configuration -----------------------------------* +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART8) == RCC_PERIPHCLK_UART8) +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_UART8CLKSOURCE(PeriphClkInit->Uart8ClockSelection)); +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the UART8 clock source */ +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_UART8_CONFIG(PeriphClkInit->Uart8ClockSelection); +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- CK48 Configuration -----------------------------------*/ +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_CLK48SOURCE(PeriphClkInit->Clk48ClockSelection)); +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the CLK48 source */ +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_CLK48_CONFIG(PeriphClkInit->Clk48ClockSelection); +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLSAI when it's used as clock source for CK48 */ +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(PeriphClkInit->Clk48ClockSelection == RCC_CLK48SOURCE_PLLSAIP) +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** pllsaiused = 1; +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- LPTIM1 Configuration ----------------------------------- +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_LPTIM1CLK(PeriphClkInit->Lptim1ClockSelection)); +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + ARM GAS /tmp/cc41FM7T.s page 47 + + +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the LTPIM1 clock source */ +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection); +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------- SDMMC1 Configuration ------------------------------------ +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC1) == RCC_PERIPHCLK_SDMMC1) +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_SDMMC1CLKSOURCE(PeriphClkInit->Sdmmc1ClockSelection)); +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the SDMMC1 clock source */ +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_SDMMC1_CONFIG(PeriphClkInit->Sdmmc1ClockSelection); +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*------------------------------------- SDMMC2 Configuration ------------------------------------ +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC2) == RCC_PERIPHCLK_SDMMC2) +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the parameters */ +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_SDMMC2CLKSOURCE(PeriphClkInit->Sdmmc2ClockSelection)); +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the SDMMC2 clock source */ +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_SDMMC2_CONFIG(PeriphClkInit->Sdmmc2ClockSelection); +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- PLLI2S Configuration ---------------------------------*/ +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S is configured when a peripheral will use it as source clock : SAI1, SAI2 or I2S */ +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((plli2sused == 1) || ((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERI +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Disable the PLLI2S */ +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_DISABLE(); +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLI2S is disabled */ +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET) +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for common PLLI2S Parameters */ +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SN_VALUE(PeriphClkInit->PLLI2S.PLLI2SN)); +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLI2S is selected as source clock for I2S -------------------*/ +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S) && (Peri +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for Parameters */ +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR)); +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLI2SQ value from PLLI2SCFGR register (this value is not needed for I2S configuratio +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos); +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLI2S division factors */ +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLM) */ + ARM GAS /tmp/cc41FM7T.s page 48 + + +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* I2SCLK = f(PLLI2S clock output) = f(VCO clock) / PLLI2SR */ +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , tmpreg0, PeriphClkInit->PLLI2S.PLLI2S +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLI2S is selected as source clock for SAI -------------------*/ +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (Pe +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (Pe +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check for PLLI2S Parameters */ +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ)); +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check for PLLI2S/DIVQ parameters */ +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2S_DIVQ_VALUE(PeriphClkInit->PLLI2SDivQ)); +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLI2SP and PLLI2SR values from PLLI2SCFGR register (this value is not needed for SAI +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI2SCFGR_PLLI2SR_Pos); +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLI2S division factors */ +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */ +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */ +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */ +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN, PeriphClkInit->PLLI2S.PLLI2SQ, tmpreg0 +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */ +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLI2SDivQ); +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLI2S is just selected -----------------*/ +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((PeriphClkInit->PeriphClockSelection & RCC_PERIPHCLK_PLLI2S) == RCC_PERIPHCLK_PLLI2S) +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check for Parameters */ +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SR_VALUE(PeriphClkInit->PLLI2S.PLLI2SR)); +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SQ_VALUE(PeriphClkInit->PLLI2S.PLLI2SQ)); +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLI2S division factors */ +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) x (PLLI2SN/PLLI2SM) */ +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_CONFIG(PeriphClkInit->PLLI2S.PLLI2SN , PeriphClkInit->PLLI2S.PLLI2SQ, Periph +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLI2S */ +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_ENABLE(); +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLI2S is ready */ +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*-------------------------------------- PLLSAI Configuration ---------------------------------*/ +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI is configured when a peripheral will use it as source clock : SAI1, SAI2, LTDC or CK48 +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(pllsaiused == 1) + ARM GAS /tmp/cc41FM7T.s page 49 + + +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Disable PLLSAI Clock */ +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_DISABLE(); +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLSAI is disabled */ +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET) +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check the PLLSAI division factors */ +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIN_VALUE(PeriphClkInit->PLLSAI.PLLSAIN)); +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLSAI is selected as source clock for SAI -------------------*/ +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if(((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) && (Pe +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI2) == RCC_PERIPHCLK_SAI2) && (Pe +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for PLLSAIQ Parameter */ +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIQ_VALUE(PeriphClkInit->PLLSAI.PLLSAIQ)); +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for PLLSAI/DIVQ Parameter */ +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAI_DIVQ_VALUE(PeriphClkInit->PLLSAIDivQ)); +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLSAIP value from PLLSAICFGR register (this value is not needed for SAI configuratio +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLSAICFGR_PLLSAIP_Pos); +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ +1227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */ +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , tmpreg0, PeriphClkInit->PLLSAI.PLLSAI +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */ +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_PLLSAICLKDIVQ_CONFIG(PeriphClkInit->PLLSAIDivQ); +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /*----------------- In Case of PLLSAI is selected as source clock for CLK48 ------------------- +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case of PLLI2S is selected as source clock for CK48 */ +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CLK48) == RCC_PERIPHCLK_CLK48) && (P +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* check for Parameters */ +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIP_VALUE(PeriphClkInit->PLLSAI.PLLSAIP)); +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Read PLLSAIQ and PLLSAIR value from PLLSAICFGR register (this value is not needed for CK48 +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg0 = ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLSAICFGR_PLLSAIQ_Pos); +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLSAI division factors */ +1244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) x (PLLI2SN/PLLM) */ +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* 48CLK = f(PLLSAI clock output) = f(VCO clock) / PLLSAIP */ +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_CONFIG(PeriphClkInit->PLLSAI.PLLSAIN , PeriphClkInit->PLLSAI.PLLSAIP, tmpreg +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable PLLSAI Clock */ +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_ENABLE(); + ARM GAS /tmp/cc41FM7T.s page 50 + + +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get Start Tick*/ +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLSAI is ready */ +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_OK; +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Get the RCC_PeriphCLKInitTypeDef according to the internal +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * RCC configuration registers. +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @param PeriphClkInit pointer to the configured RCC_PeriphCLKInitTypeDef structure +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @retval None +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tempreg = 0; +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Set all possible values for the extended clock type parameter------------*/ +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_I2S | RCC_PERIPHCLK_LPTIM1 |\ +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_SAI1 | RCC_PERIPHCLK_SAI2 |\ +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_TIM | RCC_PERIPHCLK_RTC |\ +1282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_I2C2 |\ +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_I2C3 | RCC_PERIPHCLK_USART1 |\ +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 |\ +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5 |\ +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_USART6 | RCC_PERIPHCLK_UART7 |\ +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_UART8 | RCC_PERIPHCLK_SDMMC1 |\ +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** RCC_PERIPHCLK_CLK48 | RCC_PERIPHCLK_SDMMC2; +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the PLLI2S Clock configuration -----------------------------------------------*/ +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLI2S.PLLI2SN = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLI2S.PLLI2SQ = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> RCC_PLLI +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLI2S.PLLI2SR = (uint32_t)((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SR) >> RCC_PLLI +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the PLLSAI Clock configuration -----------------------------------------------*/ +1296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLSAI.PLLSAIN = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLS +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLSAI.PLLSAIP = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIP) >> RCC_PLLS +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLSAI.PLLSAIQ = (uint32_t)((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> RCC_PLLS +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the PLLSAI/PLLI2S division factors -------------------------------------------*/ +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLI2SDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) >> RCC_DCKCFGR1_ +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->PLLSAIDivQ = (uint32_t)((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> RCC_DCKCFGR1_ +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the SAI1 clock configuration ----------------------------------------------*/ +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Sai1ClockSelection = __HAL_RCC_GET_SAI1_SOURCE(); +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the SAI2 clock configuration ----------------------------------------------*/ + ARM GAS /tmp/cc41FM7T.s page 51 + + +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Sai2ClockSelection = __HAL_RCC_GET_SAI2_SOURCE(); +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the I2S clock configuration ------------------------------------------*/ +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->I2sClockSelection = __HAL_RCC_GET_I2SCLKSOURCE(); +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the I2C1 clock configuration ------------------------------------------*/ +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->I2c1ClockSelection = __HAL_RCC_GET_I2C1_SOURCE(); +1315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the I2C2 clock configuration ------------------------------------------*/ +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->I2c2ClockSelection = __HAL_RCC_GET_I2C2_SOURCE(); +1318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the I2C3 clock configuration ------------------------------------------*/ +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->I2c3ClockSelection = __HAL_RCC_GET_I2C3_SOURCE(); +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the USART1 clock configuration ------------------------------------------*/ +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Usart1ClockSelection = __HAL_RCC_GET_USART1_SOURCE(); +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the USART2 clock configuration ------------------------------------------*/ +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Usart2ClockSelection = __HAL_RCC_GET_USART2_SOURCE(); +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the USART3 clock configuration ------------------------------------------*/ +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Usart3ClockSelection = __HAL_RCC_GET_USART3_SOURCE(); +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the UART4 clock configuration ------------------------------------------*/ +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Uart4ClockSelection = __HAL_RCC_GET_UART4_SOURCE(); +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the UART5 clock configuration ------------------------------------------*/ +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Uart5ClockSelection = __HAL_RCC_GET_UART5_SOURCE(); +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the USART6 clock configuration ------------------------------------------*/ +1338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Usart6ClockSelection = __HAL_RCC_GET_USART6_SOURCE(); +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the UART7 clock configuration ------------------------------------------*/ +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Uart7ClockSelection = __HAL_RCC_GET_UART7_SOURCE(); +1342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the UART8 clock configuration ------------------------------------------*/ +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Uart8ClockSelection = __HAL_RCC_GET_UART8_SOURCE(); +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the LPTIM1 clock configuration ------------------------------------------*/ +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Lptim1ClockSelection = __HAL_RCC_GET_LPTIM1_SOURCE(); +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the CK48 clock configuration -----------------------------------------------*/ +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Clk48ClockSelection = __HAL_RCC_GET_CLK48_SOURCE(); +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the SDMMC1 clock configuration -----------------------------------------------*/ +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Sdmmc1ClockSelection = __HAL_RCC_GET_SDMMC1_SOURCE(); +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the SDMMC2 clock configuration -----------------------------------------------*/ +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->Sdmmc2ClockSelection = __HAL_RCC_GET_SDMMC2_SOURCE(); +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the RTC Clock configuration -----------------------------------------------*/ +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tempreg = (RCC->CFGR & RCC_CFGR_RTCPRE); +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->RTCClockSelection = (uint32_t)((tempreg) | (RCC->BDCR & RCC_BDCR_RTCSEL)); +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Get the TIM Prescaler configuration --------------------------------------------*/ +1363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if ((RCC->DCKCFGR1 & RCC_DCKCFGR1_TIMPRE) == RESET) +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + ARM GAS /tmp/cc41FM7T.s page 52 + + +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->TIMPresSelection = RCC_TIMPRES_DESACTIVATED; +1366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** else +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PeriphClkInit->TIMPresSelection = RCC_TIMPRES_ACTIVATED; +1370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */ +1373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Return the peripheral clock frequency for a given peripheral(SAI..) +1376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @note Return 0 if peripheral clock identifier not managed by this API +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @param PeriphClk Peripheral clock identifier +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * This parameter can be one of the following values: +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @arg RCC_PERIPHCLK_SAI1: SAI1 peripheral clock +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @arg RCC_PERIPHCLK_SAI2: SAI2 peripheral clock +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @retval Frequency in KHz +1382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk) +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1411 .loc 1 1384 1 is_stmt 1 view -0 + 1412 .cfi_startproc + 1413 @ args = 0, pretend = 0, frame = 0 + 1414 @ frame_needed = 0, uses_anonymous_args = 0 + 1415 @ link register save eliminated. + 1416 .loc 1 1384 1 is_stmt 0 view .LVU508 + 1417 0000 0346 mov r3, r0 +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tmpreg = 0; + 1418 .loc 1 1385 3 is_stmt 1 view .LVU509 + 1419 .LVL80: +1386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* This variable is used to store the SAI clock frequency (value in Hz) */ +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t frequency = 0; + 1420 .loc 1 1387 3 view .LVU510 +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* This variable is used to store the VCO Input (value in Hz) */ +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t vcoinput = 0; + 1421 .loc 1 1389 3 view .LVU511 +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* This variable is used to store the SAI clock source */ +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t saiclocksource = 0; + 1422 .loc 1 1391 3 view .LVU512 +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if (PeriphClk == RCC_PERIPHCLK_SAI1) + 1423 .loc 1 1393 3 view .LVU513 + 1424 .loc 1 1393 6 is_stmt 0 view .LVU514 + 1425 0002 B0F5002F cmp r0, #524288 + 1426 0006 04D0 beq .L123 +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* This variable is used to store the VCO Input (value in Hz) */ + 1427 .loc 1 1387 12 view .LVU515 + 1428 0008 0020 movs r0, #0 + 1429 .LVL81: + 1430 .L100: +1394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** saiclocksource = RCC->DCKCFGR1; +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** saiclocksource &= RCC_DCKCFGR1_SAI1SEL; +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** switch (saiclocksource) +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** case 0: /* PLLSAI is the clock source for SAI1 */ +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + ARM GAS /tmp/cc41FM7T.s page 53 + + +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLSAI division factor */ +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the PLL Source is HSI (Internal Clock) */ +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)); +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** else +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the PLL Source is HSE (External Clock) */ +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM))); +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ +1414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */ +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg = (RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> 24; +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg); +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */ +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg = (((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> 8) + 1); +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; +1422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** case RCC_DCKCFGR1_SAI1SEL_0: /* PLLI2S is the clock source for SAI1 */ +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLI2S division factor */ +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */ +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the PLL Source is HSI (Internal Clock) */ +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)); +1431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** else +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the PLL Source is HSE (External Clock) */ +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM))); +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */ +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */ +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg = (RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> 24; +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg); +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */ +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg = ((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) + 1); +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); +1446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** case RCC_DCKCFGR1_SAI1SEL_1: /* External clock is the clock source for SAI1 */ +1449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = EXTERNAL_CLOCK_VALUE; +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** case RCC_DCKCFGR1_SAI1SEL: /* HSI or HSE is the clock source for SAI*/ +1455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) +1457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + ARM GAS /tmp/cc41FM7T.s page 54 + + +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the main PLL Source is HSI */ +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = HSI_VALUE; +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** else +1462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the main PLL Source is HSE */ +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = HSE_VALUE; +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** default : +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if (PeriphClk == RCC_PERIPHCLK_SAI2) + 1431 .loc 1 1476 3 is_stmt 1 view .LVU516 + 1432 .loc 1 1476 6 is_stmt 0 view .LVU517 + 1433 000a B3F5801F cmp r3, #1048576 + 1434 000e 71D0 beq .L124 + 1435 .LVL82: + 1436 .L99: +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** saiclocksource = RCC->DCKCFGR1; +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** saiclocksource &= RCC_DCKCFGR1_SAI2SEL; +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** switch (saiclocksource) +1481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** case 0: /* PLLSAI is the clock source for SAI*/ +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLSAI division factor */ +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Input = PLL_SOURCE/PLLM */ +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the PLL Source is HSI (Internal Clock) */ +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)); +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** else +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the PLL Source is HSE (External Clock) */ +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM))); +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO Output = PLLSAI_VCO Input * PLLSAIN */ +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK(first level) = PLLSAI_VCO Output/PLLSAIQ */ +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg = (RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIQ) >> 24; +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg); +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK_x = SAI_CLK(first level)/PLLSAIDIVQ */ +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg = (((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLSAIDIVQ) >> 8) + 1); +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** case RCC_DCKCFGR1_SAI2SEL_0: /* PLLI2S is the clock source for SAI2 */ +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLI2S division factor */ + ARM GAS /tmp/cc41FM7T.s page 55 + + +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO Input = PLL_SOURCE/PLLM */ +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) +1511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the PLL Source is HSI (Internal Clock) */ +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** vcoinput = (HSI_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM)); +1514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** else +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the PLL Source is HSE (External Clock) */ +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** vcoinput = ((HSE_VALUE / (uint32_t)(RCC->PLLCFGR & RCC_PLLCFGR_PLLM))); +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO Output = PLLI2S_VCO Input * PLLI2SN */ +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK(first level) = PLLI2S_VCO Output/PLLI2SQ */ +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg = (RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SQ) >> 24; +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg); +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAI_CLK_x = SAI_CLK(first level)/PLLI2SDIVQ */ +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tmpreg = ((RCC->DCKCFGR1 & RCC_DCKCFGR1_PLLI2SDIVQ) + 1); +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** case RCC_DCKCFGR1_SAI2SEL_1: /* External clock is the clock source for SAI2 */ +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = EXTERNAL_CLOCK_VALUE; +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined (STM32F765xx) || defined (STM32F767xx) || defined (STM32F769xx) || defined (STM32F777xx +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** case RCC_DCKCFGR1_SAI2SEL: /* HSI or HSE is the clock source for SAI2 */ +1538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLSOURCE_HSI) +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the main PLL Source is HSI */ +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = HSI_VALUE; +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** else +1545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* In Case the main PLL Source is HSE */ +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = HSE_VALUE; +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; +1550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F767xx || STM32F769xx || STM32F777xx || STM32F779xx */ +1552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** default : +1553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; +1555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return frequency; +1560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1437 .loc 1 1560 1 view .LVU518 + 1438 0010 7047 bx lr + 1439 .LVL83: + 1440 .L123: +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** saiclocksource &= RCC_DCKCFGR1_SAI1SEL; + ARM GAS /tmp/cc41FM7T.s page 56 + + + 1441 .loc 1 1395 5 is_stmt 1 view .LVU519 +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** saiclocksource &= RCC_DCKCFGR1_SAI1SEL; + 1442 .loc 1 1395 20 is_stmt 0 view .LVU520 + 1443 0012 704A ldr r2, .L129 + 1444 0014 D2F88C20 ldr r2, [r2, #140] + 1445 .LVL84: +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** switch (saiclocksource) + 1446 .loc 1 1396 5 is_stmt 1 view .LVU521 +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** switch (saiclocksource) + 1447 .loc 1 1396 20 is_stmt 0 view .LVU522 + 1448 0018 02F44012 and r2, r2, #3145728 + 1449 .LVL85: +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1450 .loc 1 1397 5 is_stmt 1 view .LVU523 + 1451 001c B2F5001F cmp r2, #2097152 + 1452 0020 64D0 beq .L119 + 1453 0022 26D8 bhi .L101 + 1454 0024 8AB3 cbz r2, .L102 + 1455 0026 B2F5801F cmp r2, #1048576 + 1456 002a 20D1 bne .L125 +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1457 .loc 1 1427 9 view .LVU524 +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1458 .loc 1 1427 16 is_stmt 0 view .LVU525 + 1459 002c 694A ldr r2, .L129 + 1460 .LVL86: +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1461 .loc 1 1427 16 view .LVU526 + 1462 002e 5268 ldr r2, [r2, #4] +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1463 .loc 1 1427 11 view .LVU527 + 1464 0030 12F4800F tst r2, #4194304 + 1465 0034 52D1 bne .L107 +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1466 .loc 1 1430 11 is_stmt 1 view .LVU528 +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1467 .loc 1 1430 49 is_stmt 0 view .LVU529 + 1468 0036 674A ldr r2, .L129 + 1469 0038 5068 ldr r0, [r2, #4] + 1470 .LVL87: +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1471 .loc 1 1430 35 view .LVU530 + 1472 003a 00F03F0C and ip, r0, #63 +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1473 .loc 1 1430 20 view .LVU531 + 1474 003e 6648 ldr r0, .L129+4 + 1475 0040 B0FBFCFC udiv ip, r0, ip + 1476 .LVL88: + 1477 .L108: +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg); + 1478 .loc 1 1440 9 is_stmt 1 view .LVU532 +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg); + 1479 .loc 1 1440 22 is_stmt 0 view .LVU533 + 1480 0044 634A ldr r2, .L129 + 1481 0046 D2F88410 ldr r1, [r2, #132] +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg); + 1482 .loc 1 1440 16 view .LVU534 + ARM GAS /tmp/cc41FM7T.s page 57 + + + 1483 004a C1F30361 ubfx r1, r1, #24, #4 + 1484 .LVL89: +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1485 .loc 1 1441 9 is_stmt 1 view .LVU535 +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1486 .loc 1 1441 38 is_stmt 0 view .LVU536 + 1487 004e D2F88400 ldr r0, [r2, #132] +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1488 .loc 1 1441 77 view .LVU537 + 1489 0052 C0F38810 ubfx r0, r0, #6, #9 +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1490 .loc 1 1441 31 view .LVU538 + 1491 0056 0CFB00F0 mul r0, ip, r0 +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1492 .loc 1 1441 19 view .LVU539 + 1493 005a B0FBF1F0 udiv r0, r0, r1 + 1494 .LVL90: +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1495 .loc 1 1444 9 is_stmt 1 view .LVU540 +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1496 .loc 1 1444 23 is_stmt 0 view .LVU541 + 1497 005e D2F88C20 ldr r2, [r2, #140] +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1498 .loc 1 1444 34 view .LVU542 + 1499 0062 02F01F02 and r2, r2, #31 +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1500 .loc 1 1444 16 view .LVU543 + 1501 0066 0132 adds r2, r2, #1 + 1502 .LVL91: +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1503 .loc 1 1445 9 is_stmt 1 view .LVU544 +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1504 .loc 1 1445 19 is_stmt 0 view .LVU545 + 1505 0068 B0FBF2F0 udiv r0, r0, r2 + 1506 .LVL92: +1446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1507 .loc 1 1446 9 is_stmt 1 view .LVU546 + 1508 006c CDE7 b .L100 + 1509 .LVL93: + 1510 .L125: +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1511 .loc 1 1397 5 is_stmt 0 view .LVU547 + 1512 006e 0020 movs r0, #0 + 1513 .LVL94: +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1514 .loc 1 1397 5 view .LVU548 + 1515 0070 CBE7 b .L100 + 1516 .LVL95: + 1517 .L101: +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1518 .loc 1 1397 5 view .LVU549 + 1519 0072 B2F5401F cmp r2, #3145728 + 1520 0076 06D1 bne .L126 +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1521 .loc 1 1456 9 is_stmt 1 view .LVU550 +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1522 .loc 1 1456 16 is_stmt 0 view .LVU551 + ARM GAS /tmp/cc41FM7T.s page 58 + + + 1523 0078 564A ldr r2, .L129 + 1524 .LVL96: +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1525 .loc 1 1456 16 view .LVU552 + 1526 007a 5268 ldr r2, [r2, #4] +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1527 .loc 1 1456 11 view .LVU553 + 1528 007c 12F4800F tst r2, #4194304 + 1529 0080 36D1 bne .L120 +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1530 .loc 1 1459 21 view .LVU554 + 1531 0082 5548 ldr r0, .L129+4 + 1532 .LVL97: +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1533 .loc 1 1459 21 view .LVU555 + 1534 0084 C1E7 b .L100 + 1535 .LVL98: + 1536 .L126: +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1537 .loc 1 1397 5 view .LVU556 + 1538 0086 0020 movs r0, #0 + 1539 .LVL99: +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1540 .loc 1 1397 5 view .LVU557 + 1541 0088 BFE7 b .L100 + 1542 .LVL100: + 1543 .L102: +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1544 .loc 1 1403 9 is_stmt 1 view .LVU558 +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1545 .loc 1 1403 16 is_stmt 0 view .LVU559 + 1546 008a 524A ldr r2, .L129 + 1547 .LVL101: +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1548 .loc 1 1403 16 view .LVU560 + 1549 008c 5268 ldr r2, [r2, #4] +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1550 .loc 1 1403 11 view .LVU561 + 1551 008e 12F4800F tst r2, #4194304 + 1552 0092 1BD1 bne .L105 +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1553 .loc 1 1406 11 is_stmt 1 view .LVU562 +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1554 .loc 1 1406 49 is_stmt 0 view .LVU563 + 1555 0094 4F4A ldr r2, .L129 + 1556 0096 5068 ldr r0, [r2, #4] + 1557 .LVL102: +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1558 .loc 1 1406 35 view .LVU564 + 1559 0098 00F03F0C and ip, r0, #63 +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1560 .loc 1 1406 20 view .LVU565 + 1561 009c 4E48 ldr r0, .L129+4 + 1562 009e B0FBFCFC udiv ip, r0, ip + 1563 .LVL103: + 1564 .L106: +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg); + ARM GAS /tmp/cc41FM7T.s page 59 + + + 1565 .loc 1 1415 9 is_stmt 1 view .LVU566 +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg); + 1566 .loc 1 1415 22 is_stmt 0 view .LVU567 + 1567 00a2 4C4A ldr r2, .L129 + 1568 00a4 D2F88810 ldr r1, [r2, #136] +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg); + 1569 .loc 1 1415 16 view .LVU568 + 1570 00a8 C1F30361 ubfx r1, r1, #24, #4 + 1571 .LVL104: +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1572 .loc 1 1416 9 is_stmt 1 view .LVU569 +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1573 .loc 1 1416 38 is_stmt 0 view .LVU570 + 1574 00ac D2F88800 ldr r0, [r2, #136] +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1575 .loc 1 1416 77 view .LVU571 + 1576 00b0 C0F38810 ubfx r0, r0, #6, #9 +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1577 .loc 1 1416 31 view .LVU572 + 1578 00b4 0CFB00F0 mul r0, ip, r0 +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1579 .loc 1 1416 19 view .LVU573 + 1580 00b8 B0FBF1F0 udiv r0, r0, r1 + 1581 .LVL105: +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1582 .loc 1 1419 9 is_stmt 1 view .LVU574 +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1583 .loc 1 1419 24 is_stmt 0 view .LVU575 + 1584 00bc D2F88C20 ldr r2, [r2, #140] +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1585 .loc 1 1419 62 view .LVU576 + 1586 00c0 C2F30422 ubfx r2, r2, #8, #5 +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1587 .loc 1 1419 16 view .LVU577 + 1588 00c4 0132 adds r2, r2, #1 + 1589 .LVL106: +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1590 .loc 1 1420 9 is_stmt 1 view .LVU578 +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1591 .loc 1 1420 19 is_stmt 0 view .LVU579 + 1592 00c6 B0FBF2F0 udiv r0, r0, r2 + 1593 .LVL107: +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1594 .loc 1 1421 9 is_stmt 1 view .LVU580 + 1595 00ca 9EE7 b .L100 + 1596 .LVL108: + 1597 .L105: +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1598 .loc 1 1411 11 view .LVU581 +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1599 .loc 1 1411 50 is_stmt 0 view .LVU582 + 1600 00cc 414A ldr r2, .L129 + 1601 00ce 5068 ldr r0, [r2, #4] + 1602 .LVL109: +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1603 .loc 1 1411 36 view .LVU583 + 1604 00d0 00F03F0C and ip, r0, #63 + ARM GAS /tmp/cc41FM7T.s page 60 + + +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1605 .loc 1 1411 20 view .LVU584 + 1606 00d4 4148 ldr r0, .L129+8 + 1607 00d6 B0FBFCFC udiv ip, r0, ip + 1608 .LVL110: +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1609 .loc 1 1411 20 view .LVU585 + 1610 00da E2E7 b .L106 + 1611 .LVL111: + 1612 .L107: +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1613 .loc 1 1435 11 is_stmt 1 view .LVU586 +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1614 .loc 1 1435 50 is_stmt 0 view .LVU587 + 1615 00dc 3D4A ldr r2, .L129 + 1616 00de 5068 ldr r0, [r2, #4] + 1617 .LVL112: +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1618 .loc 1 1435 36 view .LVU588 + 1619 00e0 00F03F0C and ip, r0, #63 +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1620 .loc 1 1435 20 view .LVU589 + 1621 00e4 3D48 ldr r0, .L129+8 + 1622 00e6 B0FBFCFC udiv ip, r0, ip + 1623 .LVL113: +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1624 .loc 1 1435 20 view .LVU590 + 1625 00ea ABE7 b .L108 + 1626 .LVL114: + 1627 .L119: +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1628 .loc 1 1450 19 view .LVU591 + 1629 00ec 3C48 ldr r0, .L129+12 + 1630 .LVL115: +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1631 .loc 1 1450 19 view .LVU592 + 1632 00ee 8CE7 b .L100 + 1633 .LVL116: + 1634 .L120: +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1635 .loc 1 1464 21 view .LVU593 + 1636 00f0 3A48 ldr r0, .L129+8 + 1637 .LVL117: +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1638 .loc 1 1464 21 view .LVU594 + 1639 00f2 8AE7 b .L100 + 1640 .LVL118: + 1641 .L124: +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** saiclocksource &= RCC_DCKCFGR1_SAI2SEL; + 1642 .loc 1 1478 5 is_stmt 1 view .LVU595 +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** saiclocksource &= RCC_DCKCFGR1_SAI2SEL; + 1643 .loc 1 1478 20 is_stmt 0 view .LVU596 + 1644 00f4 374B ldr r3, .L129 + 1645 .LVL119: +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** saiclocksource &= RCC_DCKCFGR1_SAI2SEL; + 1646 .loc 1 1478 20 view .LVU597 + 1647 00f6 D3F88C30 ldr r3, [r3, #140] + ARM GAS /tmp/cc41FM7T.s page 61 + + + 1648 .LVL120: +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** switch (saiclocksource) + 1649 .loc 1 1479 5 is_stmt 1 view .LVU598 +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** switch (saiclocksource) + 1650 .loc 1 1479 20 is_stmt 0 view .LVU599 + 1651 00fa 03F44003 and r3, r3, #12582912 + 1652 .LVL121: +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1653 .loc 1 1480 5 is_stmt 1 view .LVU600 + 1654 00fe B3F5000F cmp r3, #8388608 + 1655 0102 62D0 beq .L121 + 1656 0104 25D8 bhi .L110 + 1657 0106 7BB3 cbz r3, .L111 + 1658 0108 B3F5800F cmp r3, #4194304 + 1659 010c 20D1 bne .L127 +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1660 .loc 1 1510 9 view .LVU601 +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1661 .loc 1 1510 16 is_stmt 0 view .LVU602 + 1662 010e 314B ldr r3, .L129 + 1663 .LVL122: +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1664 .loc 1 1510 16 view .LVU603 + 1665 0110 5B68 ldr r3, [r3, #4] +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1666 .loc 1 1510 11 view .LVU604 + 1667 0112 13F4800F tst r3, #4194304 + 1668 0116 50D1 bne .L116 +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1669 .loc 1 1513 11 is_stmt 1 view .LVU605 +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1670 .loc 1 1513 49 is_stmt 0 view .LVU606 + 1671 0118 2E4B ldr r3, .L129 + 1672 011a 5968 ldr r1, [r3, #4] +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1673 .loc 1 1513 35 view .LVU607 + 1674 011c 01F03F01 and r1, r1, #63 +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1675 .loc 1 1513 20 view .LVU608 + 1676 0120 2D48 ldr r0, .L129+4 + 1677 .LVL123: +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1678 .loc 1 1513 20 view .LVU609 + 1679 0122 B0FBF1F1 udiv r1, r0, r1 + 1680 .LVL124: + 1681 .L117: +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg); + 1682 .loc 1 1523 9 is_stmt 1 view .LVU610 +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg); + 1683 .loc 1 1523 22 is_stmt 0 view .LVU611 + 1684 0126 2B4B ldr r3, .L129 + 1685 0128 D3F88420 ldr r2, [r3, #132] +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLI2SCFGR & RCC_PLLI2SCFGR_PLLI2SN) >> 6))/(tmpreg); + 1686 .loc 1 1523 16 view .LVU612 + 1687 012c C2F30362 ubfx r2, r2, #24, #4 + 1688 .LVL125: +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + ARM GAS /tmp/cc41FM7T.s page 62 + + + 1689 .loc 1 1524 9 is_stmt 1 view .LVU613 +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1690 .loc 1 1524 38 is_stmt 0 view .LVU614 + 1691 0130 D3F88400 ldr r0, [r3, #132] +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1692 .loc 1 1524 77 view .LVU615 + 1693 0134 C0F38810 ubfx r0, r0, #6, #9 +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1694 .loc 1 1524 31 view .LVU616 + 1695 0138 01FB00F0 mul r0, r1, r0 +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1696 .loc 1 1524 19 view .LVU617 + 1697 013c B0FBF2F0 udiv r0, r0, r2 + 1698 .LVL126: +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1699 .loc 1 1527 9 is_stmt 1 view .LVU618 +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1700 .loc 1 1527 23 is_stmt 0 view .LVU619 + 1701 0140 D3F88C30 ldr r3, [r3, #140] +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1702 .loc 1 1527 34 view .LVU620 + 1703 0144 03F01F03 and r3, r3, #31 +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1704 .loc 1 1527 16 view .LVU621 + 1705 0148 0133 adds r3, r3, #1 + 1706 .LVL127: +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1707 .loc 1 1528 9 is_stmt 1 view .LVU622 +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1708 .loc 1 1528 19 is_stmt 0 view .LVU623 + 1709 014a B0FBF3F0 udiv r0, r0, r3 + 1710 .LVL128: +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1711 .loc 1 1529 9 is_stmt 1 view .LVU624 + 1712 014e 7047 bx lr + 1713 .LVL129: + 1714 .L127: +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1715 .loc 1 1529 9 is_stmt 0 view .LVU625 + 1716 0150 7047 bx lr + 1717 .L110: +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1718 .loc 1 1480 5 view .LVU626 + 1719 0152 B3F5400F cmp r3, #12582912 + 1720 0156 06D1 bne .L128 +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1721 .loc 1 1539 9 is_stmt 1 view .LVU627 +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1722 .loc 1 1539 16 is_stmt 0 view .LVU628 + 1723 0158 1E4B ldr r3, .L129 + 1724 .LVL130: +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1725 .loc 1 1539 16 view .LVU629 + 1726 015a 5B68 ldr r3, [r3, #4] +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1727 .loc 1 1539 11 view .LVU630 + 1728 015c 13F4800F tst r3, #4194304 + ARM GAS /tmp/cc41FM7T.s page 63 + + + 1729 0160 35D1 bne .L122 +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1730 .loc 1 1542 21 view .LVU631 + 1731 0162 1D48 ldr r0, .L129+4 + 1732 .LVL131: +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1733 .loc 1 1542 21 view .LVU632 + 1734 0164 7047 bx lr + 1735 .LVL132: + 1736 .L128: +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1737 .loc 1 1542 21 view .LVU633 + 1738 0166 7047 bx lr + 1739 .L111: +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1740 .loc 1 1486 9 is_stmt 1 view .LVU634 +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1741 .loc 1 1486 16 is_stmt 0 view .LVU635 + 1742 0168 1A4B ldr r3, .L129 + 1743 .LVL133: +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1744 .loc 1 1486 16 view .LVU636 + 1745 016a 5B68 ldr r3, [r3, #4] +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1746 .loc 1 1486 11 view .LVU637 + 1747 016c 13F4800F tst r3, #4194304 + 1748 0170 1BD1 bne .L114 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1749 .loc 1 1489 11 is_stmt 1 view .LVU638 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1750 .loc 1 1489 49 is_stmt 0 view .LVU639 + 1751 0172 184B ldr r3, .L129 + 1752 0174 5968 ldr r1, [r3, #4] +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1753 .loc 1 1489 35 view .LVU640 + 1754 0176 01F03F01 and r1, r1, #63 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1755 .loc 1 1489 20 view .LVU641 + 1756 017a 1748 ldr r0, .L129+4 + 1757 .LVL134: +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1758 .loc 1 1489 20 view .LVU642 + 1759 017c B0FBF1F1 udiv r1, r0, r1 + 1760 .LVL135: + 1761 .L115: +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg); + 1762 .loc 1 1498 9 is_stmt 1 view .LVU643 +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg); + 1763 .loc 1 1498 22 is_stmt 0 view .LVU644 + 1764 0180 144B ldr r3, .L129 + 1765 0182 D3F88820 ldr r2, [r3, #136] +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = (vcoinput * ((RCC->PLLSAICFGR & RCC_PLLSAICFGR_PLLSAIN) >> 6))/(tmpreg); + 1766 .loc 1 1498 16 view .LVU645 + 1767 0186 C2F30362 ubfx r2, r2, #24, #4 + 1768 .LVL136: +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1769 .loc 1 1499 9 is_stmt 1 view .LVU646 + ARM GAS /tmp/cc41FM7T.s page 64 + + +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1770 .loc 1 1499 38 is_stmt 0 view .LVU647 + 1771 018a D3F88800 ldr r0, [r3, #136] +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1772 .loc 1 1499 77 view .LVU648 + 1773 018e C0F38810 ubfx r0, r0, #6, #9 +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1774 .loc 1 1499 31 view .LVU649 + 1775 0192 01FB00F0 mul r0, r1, r0 +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1776 .loc 1 1499 19 view .LVU650 + 1777 0196 B0FBF2F0 udiv r0, r0, r2 + 1778 .LVL137: +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1779 .loc 1 1502 9 is_stmt 1 view .LVU651 +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1780 .loc 1 1502 24 is_stmt 0 view .LVU652 + 1781 019a D3F88C30 ldr r3, [r3, #140] +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1782 .loc 1 1502 62 view .LVU653 + 1783 019e C3F30423 ubfx r3, r3, #8, #5 +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** frequency = frequency/(tmpreg); + 1784 .loc 1 1502 16 view .LVU654 + 1785 01a2 0133 adds r3, r3, #1 + 1786 .LVL138: +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1787 .loc 1 1503 9 is_stmt 1 view .LVU655 +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1788 .loc 1 1503 19 is_stmt 0 view .LVU656 + 1789 01a4 B0FBF3F0 udiv r0, r0, r3 + 1790 .LVL139: +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1791 .loc 1 1504 9 is_stmt 1 view .LVU657 + 1792 01a8 7047 bx lr + 1793 .LVL140: + 1794 .L114: +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1795 .loc 1 1494 11 view .LVU658 +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1796 .loc 1 1494 50 is_stmt 0 view .LVU659 + 1797 01aa 0A4B ldr r3, .L129 + 1798 01ac 5968 ldr r1, [r3, #4] +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1799 .loc 1 1494 36 view .LVU660 + 1800 01ae 01F03F01 and r1, r1, #63 +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1801 .loc 1 1494 20 view .LVU661 + 1802 01b2 0A48 ldr r0, .L129+8 + 1803 .LVL141: +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1804 .loc 1 1494 20 view .LVU662 + 1805 01b4 B0FBF1F1 udiv r1, r0, r1 + 1806 .LVL142: +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1807 .loc 1 1494 20 view .LVU663 + 1808 01b8 E2E7 b .L115 + 1809 .LVL143: + ARM GAS /tmp/cc41FM7T.s page 65 + + + 1810 .L116: +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1811 .loc 1 1518 11 is_stmt 1 view .LVU664 +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1812 .loc 1 1518 50 is_stmt 0 view .LVU665 + 1813 01ba 064B ldr r3, .L129 + 1814 01bc 5968 ldr r1, [r3, #4] +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1815 .loc 1 1518 36 view .LVU666 + 1816 01be 01F03F01 and r1, r1, #63 +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1817 .loc 1 1518 20 view .LVU667 + 1818 01c2 0648 ldr r0, .L129+8 + 1819 .LVL144: +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1820 .loc 1 1518 20 view .LVU668 + 1821 01c4 B0FBF1F1 udiv r1, r0, r1 + 1822 .LVL145: +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1823 .loc 1 1518 20 view .LVU669 + 1824 01c8 ADE7 b .L117 + 1825 .LVL146: + 1826 .L121: +1533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1827 .loc 1 1533 19 view .LVU670 + 1828 01ca 0548 ldr r0, .L129+12 + 1829 .LVL147: +1533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** break; + 1830 .loc 1 1533 19 view .LVU671 + 1831 01cc 7047 bx lr + 1832 .LVL148: + 1833 .L122: +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1834 .loc 1 1547 21 view .LVU672 + 1835 01ce 0348 ldr r0, .L129+8 + 1836 .LVL149: +1559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1837 .loc 1 1559 3 is_stmt 1 view .LVU673 +1559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1838 .loc 1 1559 10 is_stmt 0 view .LVU674 + 1839 01d0 1EE7 b .L99 + 1840 .L130: + 1841 01d2 00BF .align 2 + 1842 .L129: + 1843 01d4 00380240 .word 1073887232 + 1844 01d8 0024F400 .word 16000000 + 1845 01dc 40787D01 .word 25000000 + 1846 01e0 0080BB00 .word 12288000 + 1847 .cfi_endproc + 1848 .LFE143: + 1850 .section .text.HAL_RCCEx_EnablePLLI2S,"ax",%progbits + 1851 .align 1 + 1852 .global HAL_RCCEx_EnablePLLI2S + 1853 .syntax unified + 1854 .thumb + 1855 .thumb_func + 1856 .fpu fpv5-d16 + ARM GAS /tmp/cc41FM7T.s page 66 + + + 1858 HAL_RCCEx_EnablePLLI2S: + 1859 .LVL150: + 1860 .LFB144: +1561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @} +1564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ +1565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** @defgroup RCCEx_Exported_Functions_Group2 Extended Clock management functions +1567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Extended Clock management functions +1568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** @verbatim +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** =============================================================================== +1571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** ##### Extended clock management functions ##### +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** =============================================================================== +1573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** [..] +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** This subsection provides a set of functions allowing to control the +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** activation or deactivation of PLLI2S, PLLSAI. +1576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** @endverbatim +1577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @{ +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ +1579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Enable PLLI2S. +1582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @param PLLI2SInit pointer to an RCC_PLLI2SInitTypeDef structure that +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * contains the configuration information for the PLLI2S +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @retval HAL status +1585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ +1586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** HAL_StatusTypeDef HAL_RCCEx_EnablePLLI2S(RCC_PLLI2SInitTypeDef *PLLI2SInit) +1587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1861 .loc 1 1587 1 is_stmt 1 view -0 + 1862 .cfi_startproc + 1863 @ args = 0, pretend = 0, frame = 0 + 1864 @ frame_needed = 0, uses_anonymous_args = 0 + 1865 .loc 1 1587 1 is_stmt 0 view .LVU676 + 1866 0000 38B5 push {r3, r4, r5, lr} + 1867 .LCFI4: + 1868 .cfi_def_cfa_offset 16 + 1869 .cfi_offset 3, -16 + 1870 .cfi_offset 4, -12 + 1871 .cfi_offset 5, -8 + 1872 .cfi_offset 14, -4 + 1873 0002 0546 mov r5, r0 +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tickstart; + 1874 .loc 1 1588 3 is_stmt 1 view .LVU677 +1589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check for parameters */ +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SN_VALUE(PLLI2SInit->PLLI2SN)); + 1875 .loc 1 1591 3 view .LVU678 +1592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SR_VALUE(PLLI2SInit->PLLI2SR)); + 1876 .loc 1 1592 3 view .LVU679 +1593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SQ_VALUE(PLLI2SInit->PLLI2SQ)); + 1877 .loc 1 1593 3 view .LVU680 +1594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined(RCC_PLLI2SCFGR_PLLI2SP) +1595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLI2SP_VALUE(PLLI2SInit->PLLI2SP)); + 1878 .loc 1 1595 3 view .LVU681 +1596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* RCC_PLLI2SCFGR_PLLI2SP */ + ARM GAS /tmp/cc41FM7T.s page 67 + + +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Disable the PLLI2S */ +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_DISABLE(); + 1879 .loc 1 1599 3 view .LVU682 + 1880 0004 1B4A ldr r2, .L142 + 1881 0006 1368 ldr r3, [r2] + 1882 0008 23F08063 bic r3, r3, #67108864 + 1883 000c 1360 str r3, [r2] +1600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLI2S is disabled */ +1602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 1884 .loc 1 1602 3 view .LVU683 + 1885 .loc 1 1602 15 is_stmt 0 view .LVU684 + 1886 000e FFF7FEFF bl HAL_GetTick + 1887 .LVL151: + 1888 .loc 1 1602 15 view .LVU685 + 1889 0012 0446 mov r4, r0 + 1890 .LVL152: +1603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) != RESET) + 1891 .loc 1 1603 3 is_stmt 1 view .LVU686 + 1892 .L132: + 1893 .loc 1 1603 8 view .LVU687 + 1894 .loc 1 1603 9 is_stmt 0 view .LVU688 + 1895 0014 174B ldr r3, .L142 + 1896 0016 1B68 ldr r3, [r3] + 1897 .loc 1 1603 8 view .LVU689 + 1898 0018 13F0006F tst r3, #134217728 + 1899 001c 06D0 beq .L140 +1604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE) + 1900 .loc 1 1605 5 is_stmt 1 view .LVU690 + 1901 .loc 1 1605 9 is_stmt 0 view .LVU691 + 1902 001e FFF7FEFF bl HAL_GetTick + 1903 .LVL153: + 1904 .loc 1 1605 23 view .LVU692 + 1905 0022 001B subs r0, r0, r4 + 1906 .loc 1 1605 7 view .LVU693 + 1907 0024 6428 cmp r0, #100 + 1908 0026 F5D9 bls .L132 +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ +1608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 1909 .loc 1 1608 14 view .LVU694 + 1910 0028 0320 movs r0, #3 + 1911 .L133: +1609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLI2S division factors */ +1613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx +1614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) * PLLI2SN */ +1615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* I2SQCLK = PLLI2S_VCO / PLLI2SQ */ +1616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* I2SRCLK = PLLI2S_VCO / PLLI2SR */ +1617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->PLLI2SN, PLLI2SInit->PLLI2SQ, PLLI2SInit->PLLI2SR); +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #else +1619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLI2S_VCO = f(VCO clock) = f(PLLI2S clock input) * PLLI2SN */ +1620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* I2SPCLK = PLLI2S_VCO / PLLI2SP */ + ARM GAS /tmp/cc41FM7T.s page 68 + + +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* I2SQCLK = PLLI2S_VCO / PLLI2SQ */ +1622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* I2SRCLK = PLLI2S_VCO / PLLI2SR */ +1623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_CONFIG(PLLI2SInit->PLLI2SN, PLLI2SInit->PLLI2SP, PLLI2SInit->PLLI2SQ, PLLI2SInit +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */ +1625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLI2S */ +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_ENABLE(); +1628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLI2S is ready */ +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); +1631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart ) > PLLI2S_TIMEOUT_VALUE) +1634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ +1636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; +1637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_OK; +1641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1912 .loc 1 1641 1 view .LVU695 + 1913 002a 38BD pop {r3, r4, r5, pc} + 1914 .LVL154: + 1915 .L140: +1623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */ + 1916 .loc 1 1623 3 is_stmt 1 view .LVU696 + 1917 002c 2A68 ldr r2, [r5] + 1918 002e EB68 ldr r3, [r5, #12] + 1919 0030 1B04 lsls r3, r3, #16 + 1920 0032 43EA8213 orr r3, r3, r2, lsl #6 + 1921 0036 AA68 ldr r2, [r5, #8] + 1922 0038 43EA0263 orr r3, r3, r2, lsl #24 + 1923 003c 6A68 ldr r2, [r5, #4] + 1924 003e 43EA0273 orr r3, r3, r2, lsl #28 + 1925 0042 0C4A ldr r2, .L142 + 1926 0044 C2F88430 str r3, [r2, #132] +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 1927 .loc 1 1627 3 view .LVU697 + 1928 0048 1368 ldr r3, [r2] + 1929 004a 43F08063 orr r3, r3, #67108864 + 1930 004e 1360 str r3, [r2] +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) + 1931 .loc 1 1630 3 view .LVU698 +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLI2SRDY) == RESET) + 1932 .loc 1 1630 15 is_stmt 0 view .LVU699 + 1933 0050 FFF7FEFF bl HAL_GetTick + 1934 .LVL155: + 1935 0054 0446 mov r4, r0 + 1936 .LVL156: +1631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1937 .loc 1 1631 3 is_stmt 1 view .LVU700 + 1938 .L135: +1631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1939 .loc 1 1631 8 view .LVU701 +1631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1940 .loc 1 1631 9 is_stmt 0 view .LVU702 + ARM GAS /tmp/cc41FM7T.s page 69 + + + 1941 0056 074B ldr r3, .L142 + 1942 0058 1B68 ldr r3, [r3] +1631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1943 .loc 1 1631 8 view .LVU703 + 1944 005a 13F0006F tst r3, #134217728 + 1945 005e 06D1 bne .L141 +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1946 .loc 1 1633 5 is_stmt 1 view .LVU704 +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1947 .loc 1 1633 9 is_stmt 0 view .LVU705 + 1948 0060 FFF7FEFF bl HAL_GetTick + 1949 .LVL157: +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1950 .loc 1 1633 23 view .LVU706 + 1951 0064 001B subs r0, r0, r4 +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1952 .loc 1 1633 7 view .LVU707 + 1953 0066 6428 cmp r0, #100 + 1954 0068 F5D9 bls .L135 +1636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1955 .loc 1 1636 14 view .LVU708 + 1956 006a 0320 movs r0, #3 + 1957 006c DDE7 b .L133 + 1958 .L141: +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 1959 .loc 1 1640 9 view .LVU709 + 1960 006e 0020 movs r0, #0 + 1961 0070 DBE7 b .L133 + 1962 .L143: + 1963 0072 00BF .align 2 + 1964 .L142: + 1965 0074 00380240 .word 1073887232 + 1966 .cfi_endproc + 1967 .LFE144: + 1969 .section .text.HAL_RCCEx_DisablePLLI2S,"ax",%progbits + 1970 .align 1 + 1971 .global HAL_RCCEx_DisablePLLI2S + 1972 .syntax unified + 1973 .thumb + 1974 .thumb_func + 1975 .fpu fpv5-d16 + 1977 HAL_RCCEx_DisablePLLI2S: + 1978 .LFB145: +1642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** +1644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Disable PLLI2S. +1645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @retval HAL status +1646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ +1647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** HAL_StatusTypeDef HAL_RCCEx_DisablePLLI2S(void) +1648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 1979 .loc 1 1648 1 is_stmt 1 view -0 + 1980 .cfi_startproc + 1981 @ args = 0, pretend = 0, frame = 0 + 1982 @ frame_needed = 0, uses_anonymous_args = 0 + 1983 0000 10B5 push {r4, lr} + 1984 .LCFI5: + 1985 .cfi_def_cfa_offset 8 + ARM GAS /tmp/cc41FM7T.s page 70 + + + 1986 .cfi_offset 4, -8 + 1987 .cfi_offset 14, -4 +1649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tickstart; + 1988 .loc 1 1649 3 view .LVU711 +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Disable the PLLI2S */ +1652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLI2S_DISABLE(); + 1989 .loc 1 1652 3 view .LVU712 + 1990 0002 0B4A ldr r2, .L151 + 1991 0004 1368 ldr r3, [r2] + 1992 0006 23F08063 bic r3, r3, #67108864 + 1993 000a 1360 str r3, [r2] +1653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLI2S is disabled */ +1655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 1994 .loc 1 1655 3 view .LVU713 + 1995 .loc 1 1655 15 is_stmt 0 view .LVU714 + 1996 000c FFF7FEFF bl HAL_GetTick + 1997 .LVL158: + 1998 0010 0446 mov r4, r0 + 1999 .LVL159: +1656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) != RESET) + 2000 .loc 1 1656 3 is_stmt 1 view .LVU715 + 2001 .L145: + 2002 .loc 1 1656 8 view .LVU716 + 2003 .loc 1 1656 9 is_stmt 0 view .LVU717 + 2004 0012 074B ldr r3, .L151 + 2005 0014 1B68 ldr r3, [r3] + 2006 .loc 1 1656 8 view .LVU718 + 2007 0016 13F0006F tst r3, #134217728 + 2008 001a 06D0 beq .L150 +1657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > PLLI2S_TIMEOUT_VALUE) + 2009 .loc 1 1658 5 is_stmt 1 view .LVU719 + 2010 .loc 1 1658 9 is_stmt 0 view .LVU720 + 2011 001c FFF7FEFF bl HAL_GetTick + 2012 .LVL160: + 2013 .loc 1 1658 23 view .LVU721 + 2014 0020 001B subs r0, r0, r4 + 2015 .loc 1 1658 7 view .LVU722 + 2016 0022 6428 cmp r0, #100 + 2017 0024 F5D9 bls .L145 +1659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 2018 .loc 1 1661 14 view .LVU723 + 2019 0026 0320 movs r0, #3 + 2020 0028 00E0 b .L146 + 2021 .L150: +1662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_OK; + 2022 .loc 1 1665 10 view .LVU724 + 2023 002a 0020 movs r0, #0 + 2024 .L146: +1666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + ARM GAS /tmp/cc41FM7T.s page 71 + + + 2025 .loc 1 1666 1 view .LVU725 + 2026 002c 10BD pop {r4, pc} + 2027 .LVL161: + 2028 .L152: + 2029 .loc 1 1666 1 view .LVU726 + 2030 002e 00BF .align 2 + 2031 .L151: + 2032 0030 00380240 .word 1073887232 + 2033 .cfi_endproc + 2034 .LFE145: + 2036 .section .text.HAL_RCCEx_EnablePLLSAI,"ax",%progbits + 2037 .align 1 + 2038 .global HAL_RCCEx_EnablePLLSAI + 2039 .syntax unified + 2040 .thumb + 2041 .thumb_func + 2042 .fpu fpv5-d16 + 2044 HAL_RCCEx_EnablePLLSAI: + 2045 .LVL162: + 2046 .LFB146: +1667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** +1669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Enable PLLSAI. +1670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @param PLLSAIInit pointer to an RCC_PLLSAIInitTypeDef structure that +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * contains the configuration information for the PLLSAI +1672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @retval HAL status +1673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ +1674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** HAL_StatusTypeDef HAL_RCCEx_EnablePLLSAI(RCC_PLLSAIInitTypeDef *PLLSAIInit) +1675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 2047 .loc 1 1675 1 is_stmt 1 view -0 + 2048 .cfi_startproc + 2049 @ args = 0, pretend = 0, frame = 0 + 2050 @ frame_needed = 0, uses_anonymous_args = 0 + 2051 .loc 1 1675 1 is_stmt 0 view .LVU728 + 2052 0000 38B5 push {r3, r4, r5, lr} + 2053 .LCFI6: + 2054 .cfi_def_cfa_offset 16 + 2055 .cfi_offset 3, -16 + 2056 .cfi_offset 4, -12 + 2057 .cfi_offset 5, -8 + 2058 .cfi_offset 14, -4 + 2059 0002 0546 mov r5, r0 +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tickstart; + 2060 .loc 1 1676 3 is_stmt 1 view .LVU729 +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Check for parameters */ +1679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIN_VALUE(PLLSAIInit->PLLSAIN)); + 2061 .loc 1 1679 3 view .LVU730 +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIQ_VALUE(PLLSAIInit->PLLSAIQ)); + 2062 .loc 1 1680 3 view .LVU731 +1681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIP_VALUE(PLLSAIInit->PLLSAIP)); + 2063 .loc 1 1681 3 view .LVU732 +1682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined(RCC_PLLSAICFGR_PLLSAIR) +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** assert_param(IS_RCC_PLLSAIR_VALUE(PLLSAIInit->PLLSAIR)); + 2064 .loc 1 1683 3 view .LVU733 +1684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* RCC_PLLSAICFGR_PLLSAIR */ +1685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + ARM GAS /tmp/cc41FM7T.s page 72 + + +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Disable the PLLSAI */ +1687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_DISABLE(); + 2065 .loc 1 1687 3 view .LVU734 + 2066 0004 1B4A ldr r2, .L164 + 2067 0006 1368 ldr r3, [r2] + 2068 0008 23F08053 bic r3, r3, #268435456 + 2069 000c 1360 str r3, [r2] +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLSAI is disabled */ +1690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 2070 .loc 1 1690 3 view .LVU735 + 2071 .loc 1 1690 15 is_stmt 0 view .LVU736 + 2072 000e FFF7FEFF bl HAL_GetTick + 2073 .LVL163: + 2074 .loc 1 1690 15 view .LVU737 + 2075 0012 0446 mov r4, r0 + 2076 .LVL164: +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET) + 2077 .loc 1 1691 3 is_stmt 1 view .LVU738 + 2078 .L154: + 2079 .loc 1 1691 8 view .LVU739 + 2080 .loc 1 1691 9 is_stmt 0 view .LVU740 + 2081 0014 174B ldr r3, .L164 + 2082 0016 1B68 ldr r3, [r3] + 2083 .loc 1 1691 8 view .LVU741 + 2084 0018 13F0005F tst r3, #536870912 + 2085 001c 06D0 beq .L162 +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart ) > PLLSAI_TIMEOUT_VALUE) + 2086 .loc 1 1693 5 is_stmt 1 view .LVU742 + 2087 .loc 1 1693 9 is_stmt 0 view .LVU743 + 2088 001e FFF7FEFF bl HAL_GetTick + 2089 .LVL165: + 2090 .loc 1 1693 23 view .LVU744 + 2091 0022 001B subs r0, r0, r4 + 2092 .loc 1 1693 7 view .LVU745 + 2093 0024 6428 cmp r0, #100 + 2094 0026 F5D9 bls .L154 +1694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 2095 .loc 1 1696 14 view .LVU746 + 2096 0028 0320 movs r0, #3 + 2097 .L155: +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Configure the PLLSAI division factors */ +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #if defined (STM32F722xx) || defined (STM32F723xx) || defined (STM32F732xx) || defined (STM32F733xx +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) * PLLSAIN */ +1703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAIPCLK = PLLSAI_VCO / PLLSAIP */ +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAIQCLK = PLLSAI_VCO / PLLSAIQ */ +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_CONFIG(PLLSAIInit->PLLSAIN, PLLSAIInit->PLLSAIP, PLLSAIInit->PLLSAIQ); +1706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #else +1707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* PLLSAI_VCO = f(VCO clock) = f(PLLSAI clock input) * PLLSAIN */ +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAIPCLK = PLLSAI_VCO / PLLSAIP */ +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAIQCLK = PLLSAI_VCO / PLLSAIQ */ + ARM GAS /tmp/cc41FM7T.s page 73 + + +1710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* SAIRCLK = PLLSAI_VCO / PLLSAIR */ +1711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_CONFIG(PLLSAIInit->PLLSAIN, PLLSAIInit->PLLSAIP, \ +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PLLSAIInit->PLLSAIQ, PLLSAIInit->PLLSAIR); +1713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** #endif /* STM32F722xx || STM32F723xx || STM32F732xx || STM32F733xx || STM32F730xx */ +1714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Enable the PLLSAI */ +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_ENABLE(); +1717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLSAI is ready */ +1719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart ) > PLLSAI_TIMEOUT_VALUE) +1723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ +1725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; +1726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_OK; +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 2098 .loc 1 1730 1 view .LVU747 + 2099 002a 38BD pop {r3, r4, r5, pc} + 2100 .LVL166: + 2101 .L162: +1711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** PLLSAIInit->PLLSAIQ, PLLSAIInit->PLLSAIR); + 2102 .loc 1 1711 3 is_stmt 1 view .LVU748 + 2103 002c 2A68 ldr r2, [r5] + 2104 002e EB68 ldr r3, [r5, #12] + 2105 0030 1B04 lsls r3, r3, #16 + 2106 0032 43EA8213 orr r3, r3, r2, lsl #6 + 2107 0036 6A68 ldr r2, [r5, #4] + 2108 0038 43EA0263 orr r3, r3, r2, lsl #24 + 2109 003c AA68 ldr r2, [r5, #8] + 2110 003e 43EA0273 orr r3, r3, r2, lsl #28 + 2111 0042 0C4A ldr r2, .L164 + 2112 0044 C2F88830 str r3, [r2, #136] +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** + 2113 .loc 1 1716 3 view .LVU749 + 2114 0048 1368 ldr r3, [r2] + 2115 004a 43F08053 orr r3, r3, #268435456 + 2116 004e 1360 str r3, [r2] +1719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) + 2117 .loc 1 1719 3 view .LVU750 +1719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_PLLSAI_GET_FLAG() == RESET) + 2118 .loc 1 1719 15 is_stmt 0 view .LVU751 + 2119 0050 FFF7FEFF bl HAL_GetTick + 2120 .LVL167: + 2121 0054 0446 mov r4, r0 + 2122 .LVL168: +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 2123 .loc 1 1720 3 is_stmt 1 view .LVU752 + 2124 .L157: +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 2125 .loc 1 1720 8 view .LVU753 +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 2126 .loc 1 1720 9 is_stmt 0 view .LVU754 + ARM GAS /tmp/cc41FM7T.s page 74 + + + 2127 0056 074B ldr r3, .L164 + 2128 0058 1B68 ldr r3, [r3] +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 2129 .loc 1 1720 8 view .LVU755 + 2130 005a 13F0005F tst r3, #536870912 + 2131 005e 06D1 bne .L163 +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 2132 .loc 1 1722 5 is_stmt 1 view .LVU756 +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 2133 .loc 1 1722 9 is_stmt 0 view .LVU757 + 2134 0060 FFF7FEFF bl HAL_GetTick + 2135 .LVL169: +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 2136 .loc 1 1722 23 view .LVU758 + 2137 0064 001B subs r0, r0, r4 +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 2138 .loc 1 1722 7 view .LVU759 + 2139 0066 6428 cmp r0, #100 + 2140 0068 F5D9 bls .L157 +1725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 2141 .loc 1 1725 14 view .LVU760 + 2142 006a 0320 movs r0, #3 + 2143 006c DDE7 b .L155 + 2144 .L163: +1729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + 2145 .loc 1 1729 9 view .LVU761 + 2146 006e 0020 movs r0, #0 + 2147 0070 DBE7 b .L155 + 2148 .L165: + 2149 0072 00BF .align 2 + 2150 .L164: + 2151 0074 00380240 .word 1073887232 + 2152 .cfi_endproc + 2153 .LFE146: + 2155 .section .text.HAL_RCCEx_DisablePLLSAI,"ax",%progbits + 2156 .align 1 + 2157 .global HAL_RCCEx_DisablePLLSAI + 2158 .syntax unified + 2159 .thumb + 2160 .thumb_func + 2161 .fpu fpv5-d16 + 2163 HAL_RCCEx_DisablePLLSAI: + 2164 .LFB147: +1731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /** +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @brief Disable PLLSAI. +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** * @retval HAL status +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** */ +1736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** HAL_StatusTypeDef HAL_RCCEx_DisablePLLSAI(void) +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { + 2165 .loc 1 1737 1 is_stmt 1 view -0 + 2166 .cfi_startproc + 2167 @ args = 0, pretend = 0, frame = 0 + 2168 @ frame_needed = 0, uses_anonymous_args = 0 + 2169 0000 10B5 push {r4, lr} + 2170 .LCFI7: + 2171 .cfi_def_cfa_offset 8 + ARM GAS /tmp/cc41FM7T.s page 75 + + + 2172 .cfi_offset 4, -8 + 2173 .cfi_offset 14, -4 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** uint32_t tickstart; + 2174 .loc 1 1738 3 view .LVU763 +1739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Disable the PLLSAI */ +1741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** __HAL_RCC_PLLSAI_DISABLE(); + 2175 .loc 1 1741 3 view .LVU764 + 2176 0002 0B4A ldr r2, .L173 + 2177 0004 1368 ldr r3, [r2] + 2178 0006 23F08053 bic r3, r3, #268435456 + 2179 000a 1360 str r3, [r2] +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* Wait till PLLSAI is disabled */ +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** tickstart = HAL_GetTick(); + 2180 .loc 1 1744 3 view .LVU765 + 2181 .loc 1 1744 15 is_stmt 0 view .LVU766 + 2182 000c FFF7FEFF bl HAL_GetTick + 2183 .LVL170: + 2184 0010 0446 mov r4, r0 + 2185 .LVL171: +1745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** while(__HAL_RCC_PLLSAI_GET_FLAG() != RESET) + 2186 .loc 1 1745 3 is_stmt 1 view .LVU767 + 2187 .L167: + 2188 .loc 1 1745 8 view .LVU768 + 2189 .loc 1 1745 9 is_stmt 0 view .LVU769 + 2190 0012 074B ldr r3, .L173 + 2191 0014 1B68 ldr r3, [r3] + 2192 .loc 1 1745 8 view .LVU770 + 2193 0016 13F0005F tst r3, #536870912 + 2194 001a 06D0 beq .L172 +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** if((HAL_GetTick() - tickstart) > PLLSAI_TIMEOUT_VALUE) + 2195 .loc 1 1747 5 is_stmt 1 view .LVU771 + 2196 .loc 1 1747 9 is_stmt 0 view .LVU772 + 2197 001c FFF7FEFF bl HAL_GetTick + 2198 .LVL172: + 2199 .loc 1 1747 23 view .LVU773 + 2200 0020 001B subs r0, r0, r4 + 2201 .loc 1 1747 7 view .LVU774 + 2202 0022 6428 cmp r0, #100 + 2203 0024 F5D9 bls .L167 +1748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** { +1749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** /* return in case of Timeout detected */ +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_TIMEOUT; + 2204 .loc 1 1750 14 view .LVU775 + 2205 0026 0320 movs r0, #3 + 2206 0028 00E0 b .L168 + 2207 .L172: +1751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } +1753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** return HAL_OK; + 2208 .loc 1 1754 10 view .LVU776 + 2209 002a 0020 movs r0, #0 + 2210 .L168: +1755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c **** } + ARM GAS /tmp/cc41FM7T.s page 76 + + + 2211 .loc 1 1755 1 view .LVU777 + 2212 002c 10BD pop {r4, pc} + 2213 .LVL173: + 2214 .L174: + 2215 .loc 1 1755 1 view .LVU778 + 2216 002e 00BF .align 2 + 2217 .L173: + 2218 0030 00380240 .word 1073887232 + 2219 .cfi_endproc + 2220 .LFE147: + 2222 .text + 2223 .Letext0: + 2224 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 2225 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 2226 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 2227 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 2228 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h" + 2229 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + ARM GAS /tmp/cc41FM7T.s page 77 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_rcc_ex.c + /tmp/cc41FM7T.s:17 .text.HAL_RCCEx_PeriphCLKConfig:0000000000000000 $t + /tmp/cc41FM7T.s:25 .text.HAL_RCCEx_PeriphCLKConfig:0000000000000000 HAL_RCCEx_PeriphCLKConfig + /tmp/cc41FM7T.s:511 .text.HAL_RCCEx_PeriphCLKConfig:00000000000002e4 $d + /tmp/cc41FM7T.s:515 .text.HAL_RCCEx_PeriphCLKConfig:00000000000002e8 $t + /tmp/cc41FM7T.s:949 .text.HAL_RCCEx_PeriphCLKConfig:0000000000000504 $d + /tmp/cc41FM7T.s:956 .text.HAL_RCCEx_PeriphCLKConfig:0000000000000510 $t + /tmp/cc41FM7T.s:1124 .text.HAL_RCCEx_PeriphCLKConfig:00000000000005fc $d + /tmp/cc41FM7T.s:1129 .text.HAL_RCCEx_GetPeriphCLKConfig:0000000000000000 $t + /tmp/cc41FM7T.s:1136 .text.HAL_RCCEx_GetPeriphCLKConfig:0000000000000000 HAL_RCCEx_GetPeriphCLKConfig + /tmp/cc41FM7T.s:1395 .text.HAL_RCCEx_GetPeriphCLKConfig:0000000000000180 $d + /tmp/cc41FM7T.s:1401 .text.HAL_RCCEx_GetPeriphCLKFreq:0000000000000000 $t + /tmp/cc41FM7T.s:1408 .text.HAL_RCCEx_GetPeriphCLKFreq:0000000000000000 HAL_RCCEx_GetPeriphCLKFreq + /tmp/cc41FM7T.s:1843 .text.HAL_RCCEx_GetPeriphCLKFreq:00000000000001d4 $d + /tmp/cc41FM7T.s:1851 .text.HAL_RCCEx_EnablePLLI2S:0000000000000000 $t + /tmp/cc41FM7T.s:1858 .text.HAL_RCCEx_EnablePLLI2S:0000000000000000 HAL_RCCEx_EnablePLLI2S + /tmp/cc41FM7T.s:1965 .text.HAL_RCCEx_EnablePLLI2S:0000000000000074 $d + /tmp/cc41FM7T.s:1970 .text.HAL_RCCEx_DisablePLLI2S:0000000000000000 $t + /tmp/cc41FM7T.s:1977 .text.HAL_RCCEx_DisablePLLI2S:0000000000000000 HAL_RCCEx_DisablePLLI2S + /tmp/cc41FM7T.s:2032 .text.HAL_RCCEx_DisablePLLI2S:0000000000000030 $d + /tmp/cc41FM7T.s:2037 .text.HAL_RCCEx_EnablePLLSAI:0000000000000000 $t + /tmp/cc41FM7T.s:2044 .text.HAL_RCCEx_EnablePLLSAI:0000000000000000 HAL_RCCEx_EnablePLLSAI + /tmp/cc41FM7T.s:2151 .text.HAL_RCCEx_EnablePLLSAI:0000000000000074 $d + /tmp/cc41FM7T.s:2156 .text.HAL_RCCEx_DisablePLLSAI:0000000000000000 $t + /tmp/cc41FM7T.s:2163 .text.HAL_RCCEx_DisablePLLSAI:0000000000000000 HAL_RCCEx_DisablePLLSAI + /tmp/cc41FM7T.s:2218 .text.HAL_RCCEx_DisablePLLSAI:0000000000000030 $d + +UNDEFINED SYMBOLS +HAL_GetTick diff --git a/build/stm32f7xx_hal_rcc_ex.o b/build/stm32f7xx_hal_rcc_ex.o new file mode 100644 index 0000000..412c7fb Binary files /dev/null and b/build/stm32f7xx_hal_rcc_ex.o differ diff --git a/build/stm32f7xx_hal_sd.d b/build/stm32f7xx_hal_sd.d new file mode 100644 index 0000000..5f5c956 --- /dev/null +++ b/build/stm32f7xx_hal_sd.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_sd.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_sd.lst b/build/stm32f7xx_hal_sd.lst new file mode 100644 index 0000000..8feeae6 --- /dev/null +++ b/build/stm32f7xx_hal_sd.lst @@ -0,0 +1,12877 @@ +ARM GAS /tmp/ccQEYyKb.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_sd.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.SD_DMATransmitCplt,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 SD_DMATransmitCplt: + 25 .LVL0: + 26 .LFB168: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @file stm32f7xx_hal_sd.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief SD card HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * functionalities of the Secure Digital (SD) peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * + Initialization and de-initialization functions + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * + IO operation functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * + Peripheral Control functions + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * + Peripheral State functions + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ****************************************************************************** + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @attention + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * Copyright (c) 2017 STMicroelectronics. + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * All rights reserved. + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * This software is licensed under terms that can be found in the LICENSE file + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * in the root directory of this software component. + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ****************************************************************************** + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** @verbatim + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================================================================== + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ##### How to use this driver ##### + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================================================================== + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This driver implements a high level communication layer for read and write from/to + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** this memory. The needed STM32 hardware resources (SDMMC and GPIO) are performed by + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** the user in HAL_SD_MspInit() function (MSP layer). + ARM GAS /tmp/ccQEYyKb.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Basically, the MSP layer configuration should be the same as we provide in the + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** examples. + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You can easily tailor this configuration according to hardware resources. + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This driver is a generic layered driver for SDMMC memories which uses the HAL + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC driver functions to interface with SD and uSD cards devices. + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** It is used as follows: + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (#)Initialize the SDMMC low level resources by implementing the HAL_SD_MspInit() API: + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (##) Enable the SDMMC interface clock using __HAL_RCC_SDMMC_CLK_ENABLE(); + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (##) SDMMC pins configuration for SD card + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) Enable the clock for the SDMMC GPIOs using the functions __HAL_RCC_GPIOx_CLK_ENAB + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) Configure these SDMMC pins as alternate function pull-up using HAL_GPIO_Init() + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and according to your pin assignment; + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (##) DMA configuration if you need to use DMA process (HAL_SD_ReadBlocks_DMA() + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and HAL_SD_WriteBlocks_DMA() APIs). + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) Enable the DMAx interface clock using __HAL_RCC_DMAx_CLK_ENABLE(); + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) Configure the DMA using the function HAL_DMA_Init() with predeclared and filled. + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (##) NVIC configuration if you need to use interrupt process when using DMA transfer. + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) Configure the SDMMC and DMA interrupt priorities using functions + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_NVIC_SetPriority(); DMA priority is superior to SDMMC's priority + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) Enable the NVIC DMA and SDMMC IRQs using function HAL_NVIC_EnableIRQ() + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) SDMMC interrupts are managed using the macros __HAL_SD_ENABLE_IT() + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and __HAL_SD_DISABLE_IT() inside the communication process. + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) SDMMC interrupts pending bits are managed using the macros __HAL_SD_GET_IT() + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and __HAL_SD_CLEAR_IT() + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (##) NVIC configuration if you need to use interrupt process (HAL_SD_ReadBlocks_IT() + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and HAL_SD_WriteBlocks_IT() APIs). + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) Configure the SDMMC interrupt priorities using function HAL_NVIC_SetPriority(); + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) Enable the NVIC SDMMC IRQs using function HAL_NVIC_EnableIRQ() + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) SDMMC interrupts are managed using the macros __HAL_SD_ENABLE_IT() + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and __HAL_SD_DISABLE_IT() inside the communication process. + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+++) SDMMC interrupts pending bits are managed using the macros __HAL_SD_GET_IT() + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and __HAL_SD_CLEAR_IT() + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (#) At this stage, you can perform SD read/write/erase operations after SD card initialization + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *** SD Card Initialization and configuration *** + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ================================================ + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** To initialize the SD Card, use the HAL_SD_Init() function. It Initializes + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC Peripheral(STM32 side) and the SD Card, and put it into StandBy State (Ready for data tra + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This function provide the following operations: + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (#) Apply the SD Card initialization process at 400KHz and check the SD Card + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** type (Standard Capacity or High Capacity). You can change or adapt this + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** frequency by adjusting the "ClockDiv" field. + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** The SD Card frequency (SDMMC_CK) is computed as follows: + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_CK = SDMMCCLK / (ClockDiv + 2) + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** In initialization mode and according to the SD Card standard, + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** make sure that the SDMMC_CK frequency doesn't exceed 400KHz. + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This phase of initialization is done through SDMMC_Init() and + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_PowerState_ON() SDMMC low level APIs. + ARM GAS /tmp/ccQEYyKb.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (#) Initialize the SD card. The API used is HAL_SD_InitCard(). + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This phase allows the card initialization and identification + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and check the SD Card type (Standard Capacity or High Capacity) + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** The initialization flow is compatible with SD standard. + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This API (HAL_SD_InitCard()) could be used also to reinitialize the card in case + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** of plug-off plug-in. + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (#) Configure the SD Card Data transfer frequency. You can change or adapt this + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** frequency by adjusting the "ClockDiv" field. + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** In transfer mode and according to the SD Card standard, make sure that the + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_CK frequency doesn't exceed 25MHz and 50MHz in High-speed mode switch. + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** To be able to use a frequency higher than 24MHz, you should use the SDMMC + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** peripheral in bypass mode. Refer to the corresponding reference manual + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** for more details. + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (#) Select the corresponding SD Card according to the address read with the step 2. + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (#) Configure the SD Card in wide bus mode: 4-bits data. + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *** SD Card Read operation *** + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================== + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) You can read from SD card in polling mode by using function HAL_SD_ReadBlocks(). + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This function support only 512-bytes block length (the block size should be + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** chosen as 512 bytes). + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You can choose either one block read operation or multiple block read operation + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** by adjusting the "NumberOfBlocks" parameter. + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** After this, you have to ensure that the transfer is done correctly. The check is done + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** through HAL_SD_GetCardState() function for SD card state. + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) You can read from SD card in DMA mode by using function HAL_SD_ReadBlocks_DMA(). + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This function support only 512-bytes block length (the block size should be + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** chosen as 512 bytes). + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You can choose either one block read operation or multiple block read operation + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** by adjusting the "NumberOfBlocks" parameter. + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** After this, you have to ensure that the transfer is done correctly. The check is done + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** through HAL_SD_GetCardState() function for SD card state. + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You could also check the DMA transfer process through the SD Rx interrupt event. + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) You can read from SD card in Interrupt mode by using function HAL_SD_ReadBlocks_IT(). + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This function support only 512-bytes block length (the block size should be + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** chosen as 512 bytes). + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You can choose either one block read operation or multiple block read operation + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** by adjusting the "NumberOfBlocks" parameter. + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** After this, you have to ensure that the transfer is done correctly. The check is done + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** through HAL_SD_GetCardState() function for SD card state. + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You could also check the IT transfer process through the SD Rx interrupt event. + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *** SD Card Write operation *** + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** =============================== + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) You can write to SD card in polling mode by using function HAL_SD_WriteBlocks(). + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This function support only 512-bytes block length (the block size should be + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** chosen as 512 bytes). + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You can choose either one block read operation or multiple block read operation + ARM GAS /tmp/ccQEYyKb.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** by adjusting the "NumberOfBlocks" parameter. + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** After this, you have to ensure that the transfer is done correctly. The check is done + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** through HAL_SD_GetCardState() function for SD card state. + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) You can write to SD card in DMA mode by using function HAL_SD_WriteBlocks_DMA(). + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This function support only 512-bytes block length (the block size should be + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** chosen as 512 bytes). + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You can choose either one block read operation or multiple block read operation + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** by adjusting the "NumberOfBlocks" parameter. + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** After this, you have to ensure that the transfer is done correctly. The check is done + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** through HAL_SD_GetCardState() function for SD card state. + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You could also check the DMA transfer process through the SD Tx interrupt event. + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) You can write to SD card in Interrupt mode by using function HAL_SD_WriteBlocks_IT(). + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This function support only 512-bytes block length (the block size should be + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** chosen as 512 bytes). + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You can choose either one block read operation or multiple block read operation + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** by adjusting the "NumberOfBlocks" parameter. + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** After this, you have to ensure that the transfer is done correctly. The check is done + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** through HAL_SD_GetCardState() function for SD card state. + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** You could also check the IT transfer process through the SD Tx interrupt event. + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *** SD card status *** + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ====================== + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) The SD Status contains status bits that are related to the SD Memory + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Card proprietary features. To get SD card status use the HAL_SD_GetCardStatus(). + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *** SD card information *** + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** =========================== + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) To get SD card information, you can use the function HAL_SD_GetCardInfo(). + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** It returns useful information about the SD card such as block size, card type, + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** block number ... + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *** SD card CSD register *** + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================ + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) The HAL_SD_GetCardCSD() API allows to get the parameters of the CSD register. + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Some of the CSD parameters are useful for card initialization and identification. + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *** SD card CID register *** + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================ + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) The HAL_SD_GetCardCID() API allows to get the parameters of the CID register. + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Some of the CSD parameters are useful for card initialization and identification. + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *** SD HAL driver macros list *** + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ================================== + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Below the list of most used macros in SD HAL driver. + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) __HAL_SD_ENABLE : Enable the SD device + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) __HAL_SD_DISABLE : Disable the SD device + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) __HAL_SD_DMA_ENABLE: Enable the SDMMC DMA transfer + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) __HAL_SD_DMA_DISABLE: Disable the SDMMC DMA transfer + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) __HAL_SD_ENABLE_IT: Enable the SD device interrupt + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) __HAL_SD_DISABLE_IT: Disable the SD device interrupt + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) __HAL_SD_GET_FLAG:Check whether the specified SD flag is set or not + ARM GAS /tmp/ccQEYyKb.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) __HAL_SD_CLEAR_FLAG: Clear the SD's pending flags + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (@) You can refer to the SD HAL driver header file for more useful macros + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *** Callback registration *** + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================================= + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** The compilation define USE_HAL_SD_REGISTER_CALLBACKS when set to 1 + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** allows the user to configure dynamically the driver callbacks. + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Use Functions HAL_SD_RegisterCallback() to register a user callback, + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** it allows to register following callbacks: + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) TxCpltCallback : callback when a transmission transfer is completed. + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) RxCpltCallback : callback when a reception transfer is completed. + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) ErrorCallback : callback when error occurs. + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) AbortCpltCallback : callback when abort is completed. + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) MspInitCallback : SD MspInit. + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) MspDeInitCallback : SD MspDeInit. + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This function takes as parameters the HAL peripheral handle, the Callback ID + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and a pointer to the user callback function. + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Use function HAL_SD_UnRegisterCallback() to reset a callback to the default + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** weak (surcharged) function. It allows to reset following callbacks: + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) TxCpltCallback : callback when a transmission transfer is completed. + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) RxCpltCallback : callback when a reception transfer is completed. + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) ErrorCallback : callback when error occurs. + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) AbortCpltCallback : callback when abort is completed. + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) MspInitCallback : SD MspInit. + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (+) MspDeInitCallback : SD MspDeInit. + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This function) takes as parameters the HAL peripheral handle and the Callback ID. + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** By default, after the HAL_SD_Init and if the state is HAL_SD_STATE_RESET + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** all callbacks are reset to the corresponding legacy weak (surcharged) functions. + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Exception done for MspInit and MspDeInit callbacks that are respectively + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** reset to the legacy weak (surcharged) functions in the HAL_SD_Init + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and HAL_SD_DeInit only when these callbacks are null (not registered beforehand). + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** If not, MspInit or MspDeInit are not null, the HAL_SD_Init and HAL_SD_DeInit + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** keep and use the user MspInit/MspDeInit callbacks (registered beforehand) + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Callbacks can be registered/unregistered in READY state only. + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Exception done for MspInit/MspDeInit callbacks that can be registered/unregistered + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** in READY or RESET state, thus registered (user) MspInit/DeInit callbacks can be used + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** during the Init/DeInit. + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** In that case first register the MspInit/MspDeInit user callbacks + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** using HAL_SD_RegisterCallback before calling HAL_SD_DeInit + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** or HAL_SD_Init function. + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** When The compilation define USE_HAL_SD_REGISTER_CALLBACKS is set to 0 or + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** not defined, the callback registering feature is not available + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** and weak (surcharged) callbacks are used. + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** @endverbatim + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ****************************************************************************** + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Includes ------------------------------------------------------------------*/ + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #include "stm32f7xx_hal.h" + ARM GAS /tmp/ccQEYyKb.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined(SDMMC1) + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** @addtogroup STM32F7xx_HAL_Driver + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @{ + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** @addtogroup SD + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @{ + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #ifdef HAL_SD_MODULE_ENABLED + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Private typedef -----------------------------------------------------------*/ + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Private define ------------------------------------------------------------*/ + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** @addtogroup SD_Private_Defines + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @{ + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @} + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Private macro -------------------------------------------------------------*/ + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Private variables ---------------------------------------------------------*/ + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Private function prototypes -----------------------------------------------*/ + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Private functions ---------------------------------------------------------*/ + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** @defgroup SD_Private_Functions SD Private Functions + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @{ + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_InitCard(SD_HandleTypeDef *hsd); + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_PowerON(SD_HandleTypeDef *hsd); + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_SendSDStatus(SD_HandleTypeDef *hsd, uint32_t *pSDstatus); + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_SendStatus(SD_HandleTypeDef *hsd, uint32_t *pCardStatus); + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_WideBus_Enable(SD_HandleTypeDef *hsd); + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_WideBus_Disable(SD_HandleTypeDef *hsd); + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_FindSCR(SD_HandleTypeDef *hsd, uint32_t *pSCR); + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_PowerOFF(SD_HandleTypeDef *hsd); + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_Write_IT(SD_HandleTypeDef *hsd); + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_Read_IT(SD_HandleTypeDef *hsd); + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_DMATransmitCplt(DMA_HandleTypeDef *hdma); + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_DMAReceiveCplt(DMA_HandleTypeDef *hdma); + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_DMAError(DMA_HandleTypeDef *hdma); + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_DMATxAbort(DMA_HandleTypeDef *hdma); + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_DMARxAbort(DMA_HandleTypeDef *hdma); + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @} + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Exported functions --------------------------------------------------------*/ + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** @addtogroup SD_Exported_Functions + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @{ + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** @addtogroup SD_Exported_Functions_Group1 + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Initialization and de-initialization functions + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * + ARM GAS /tmp/ccQEYyKb.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** @verbatim + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================================================================== + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ##### Initialization and de-initialization functions ##### + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================================================================== + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This section provides functions allowing to initialize/de-initialize the SD + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** card device to be ready for use. + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** @endverbatim + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @{ + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Initializes the SD according to the specified parameters in the + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef and create the associated handle. + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to the SD handle + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_Init(SD_HandleTypeDef *hsd) + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check the SD handle allocation */ + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd == NULL) + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check the parameters */ + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_ALL_INSTANCE(hsd->Instance)); + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_CLOCK_EDGE(hsd->Init.ClockEdge)); + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_CLOCK_BYPASS(hsd->Init.ClockBypass)); + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_CLOCK_POWER_SAVE(hsd->Init.ClockPowerSave)); + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_BUS_WIDE(hsd->Init.BusWide)); + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(hsd->Init.HardwareFlowControl)); + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_CLKDIV(hsd->Init.ClockDiv)); + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->State == HAL_SD_STATE_RESET) + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Allocate lock resource and initialize it */ + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Lock = HAL_UNLOCKED; + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Reset Callback pointers in HAL_SD_STATE_RESET only */ + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxCpltCallback = HAL_SD_TxCpltCallback; + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxCpltCallback = HAL_SD_RxCpltCallback; + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCallback = HAL_SD_ErrorCallback; + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->AbortCpltCallback = HAL_SD_AbortCallback; + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->MspInitCallback == NULL) + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspInitCallback = HAL_SD_MspInit; + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Init the low level hardware */ + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspInitCallback(hsd); + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_MspInit(hsd); + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + ARM GAS /tmp/ccQEYyKb.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_BUSY; + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize the Card parameters */ + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if (HAL_SD_InitCard(hsd) != HAL_OK) + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize the error code */ + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = HAL_SD_ERROR_NONE; + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize the SD operation */ + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize the SD state */ + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Initializes the SD Card. + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note This function initializes the SD card. It could be used when a card + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** re-initialization is needed. + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_InitCard(SD_HandleTypeDef *hsd) + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef status; + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_InitTypeDef Init; + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Default SDMMC peripheral configuration for SD card initialization */ + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockEdge = SDMMC_CLOCK_EDGE_RISING; + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockBypass = SDMMC_CLOCK_BYPASS_DISABLE; + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE; + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.BusWide = SDMMC_BUS_WIDE_1B; + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE; + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockDiv = SDMMC_INIT_CLK_DIV; + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize SDMMC peripheral interface with default configuration */ + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = SDMMC_Init(hsd->Instance, Init); + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(status != HAL_OK) + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Disable SDMMC Clock */ + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_DISABLE(hsd); + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set Power State to ON */ + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_PowerState_ON(hsd->Instance); + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Enable SDMMC Clock */ + ARM GAS /tmp/ccQEYyKb.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_ENABLE(hsd); + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Required power up waiting time before starting the SD initialization sequence */ + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_Delay(2); + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Identify card operating voltage */ + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SD_PowerON(hsd); + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Card initialization */ + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SD_InitCard(hsd); + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set Block Size for Card */ + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE); + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief De-Initializes the SD card. + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_DeInit(SD_HandleTypeDef *hsd) + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check the SD handle allocation */ + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd == NULL) + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check the parameters */ + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_ALL_INSTANCE(hsd->Instance)); + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_BUSY; + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set SD power state to off */ + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_PowerOFF(hsd); + ARM GAS /tmp/ccQEYyKb.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->MspDeInitCallback == NULL) + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspDeInitCallback = HAL_SD_MspDeInit; + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* DeInit the low level hardware */ + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspDeInitCallback(hsd); + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* De-Initialize the MSP layer */ + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_MspDeInit(hsd); + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = HAL_SD_ERROR_NONE; + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_RESET; + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Initializes the SD MSP. + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __weak void HAL_SD_MspInit(SD_HandleTypeDef *hsd) + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** UNUSED(hsd); + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* NOTE : This function should not be modified, when the callback is needed, + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** the HAL_SD_MspInit could be implemented in the user file + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief De-Initialize SD MSP. + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __weak void HAL_SD_MspDeInit(SD_HandleTypeDef *hsd) + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** UNUSED(hsd); + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* NOTE : This function should not be modified, when the callback is needed, + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** the HAL_SD_MspDeInit could be implemented in the user file + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @} + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** @addtogroup SD_Exported_Functions_Group2 + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Data transfer functions + ARM GAS /tmp/ccQEYyKb.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** @verbatim + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================================================================== + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ##### IO operation functions ##### + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================================================================== + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This subsection provides a set of functions allowing to manage the data + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** transfer from/to SD card. + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** @endverbatim + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @{ + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Reads block(s) from a specified address in a card. The Data transfer + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * is managed by polling mode. + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note This API should be followed by a check on the card state through + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * HAL_SD_GetCardState(). + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pData: pointer to the buffer that will contain the received data + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param BlockAdd: Block Address from where data is to be read + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param NumberOfBlocks: Number of SD blocks to read + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param Timeout: Specify timeout value + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint3 + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t tickstart = HAL_GetTick(); + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count, data, dataremaining; + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint8_t *tempbuff = pData; + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NULL == pData) + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->State == HAL_SD_STATE_READY) + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = HAL_SD_ERROR_NONE; + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_BUSY; + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize data control register */ + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL = 0U; + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** add *= 512U; + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Configure the SD DPSM (Data Path State Machine) */ + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataTimeOut = SDMMC_DATATIMEOUT; + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = NumberOfBlocks * BLOCKSIZE; + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read block(s) in polling mode */ + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NumberOfBlocks > 1U) + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_READ_MULTIPLE_BLOCK; + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read Multi Block command */ + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdReadMultiBlock(hsd->Instance, add); + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_READ_SINGLE_BLOCK; + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read Single Block command */ + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdReadSingleBlock(hsd->Instance, add); + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Poll on SDMMC flags */ + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining = config.DataLength; + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXFIFOHF) && (dataremaining > 0U)) + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read data from SDMMC Rx FIFO */ + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** for(count = 0U; count < 8U; count++) + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data = SDMMC_ReadFIFO(hsd->Instance); + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)(data & 0xFFU); + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 8U) & 0xFFU); + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 16U) & 0xFFU); + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 24U) & 0xFFU); + ARM GAS /tmp/ccQEYyKb.s page 13 + + + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(((HAL_GetTick()-tickstart) >= Timeout) || (Timeout == 0U)) + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_TIMEOUT; + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State= HAL_SD_STATE_READY; + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_TIMEOUT; + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send stop transmission command in case of multiblock read */ + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SECURED) + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send stop transmission command */ + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdStopTransfer(hsd->Instance); + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get error state */ + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DTIMEOUT)) + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DATA_TIMEOUT; + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL)) + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DATA_CRC_FAIL; + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR)) + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + ARM GAS /tmp/ccQEYyKb.s page 14 + + + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_RX_OVERRUN; + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Nothing to do */ + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Empty FIFO if there is still any data */ + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while ((__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXDAVL)) && (dataremaining > 0U)) + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data = SDMMC_ReadFIFO(hsd->Instance); + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)(data & 0xFFU); + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 8U) & 0xFFU); + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 16U) & 0xFFU); + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 24U) & 0xFFU); + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(((HAL_GetTick()-tickstart) >= Timeout) || (Timeout == 0U)) + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_TIMEOUT; + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State= HAL_SD_STATE_READY; + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_BUSY; + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Allows to write block(s) to a specified address in a card. The Data + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * transfer is managed by polling mode. + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note This API should be followed by a check on the card state through + ARM GAS /tmp/ccQEYyKb.s page 15 + + + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * HAL_SD_GetCardState(). + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pData: pointer to the buffer that will contain the data to transmit + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param BlockAdd: Block Address where data will be written + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param NumberOfBlocks: Number of SD blocks to write + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param Timeout: Specify timeout value + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, uint + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t tickstart = HAL_GetTick(); + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count, data, dataremaining; + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint8_t *tempbuff = pData; + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NULL == pData) + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->State == HAL_SD_STATE_READY) + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = HAL_SD_ERROR_NONE; + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_BUSY; + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize data control register */ + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL = 0U; + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** add *= 512U; + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Configure the SD DPSM (Data Path State Machine) */ + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataTimeOut = SDMMC_DATATIMEOUT; + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = NumberOfBlocks * BLOCKSIZE; + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write Blocks in Polling mode */ + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NumberOfBlocks > 1U) + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_WRITE_MULTIPLE_BLOCK; + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 16 + + + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write Multi Block command */ + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdWriteMultiBlock(hsd->Instance, add); + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_WRITE_SINGLE_BLOCK; + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write Single Block command */ + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdWriteSingleBlock(hsd->Instance, add); + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write block(s) in polling mode */ + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining = config.DataLength; + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXUNDERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXFIFOHE) && (dataremaining > 0U)) + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write data to SDMMC Tx FIFO */ + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** for(count = 0U; count < 8U; count++) + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data = (uint32_t)(*tempbuff); + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tempbuff) << 8U); + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tempbuff) << 16U); + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tempbuff) << 24U); + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_WriteFIFO(hsd->Instance, &data); + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(((HAL_GetTick()-tickstart) >= Timeout) || (Timeout == 0U)) + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_TIMEOUT; + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send stop transmission command in case of multiblock write */ + ARM GAS /tmp/ccQEYyKb.s page 17 + + + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DATAEND) && (NumberOfBlocks > 1U)) + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SECURED) + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send stop transmission command */ + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdStopTransfer(hsd->Instance); + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get error state */ + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DTIMEOUT)) + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DATA_TIMEOUT; + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL)) + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DATA_CRC_FAIL; + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXUNDERR)) + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_TX_UNDERRUN; + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Nothing to do */ + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; + ARM GAS /tmp/ccQEYyKb.s page 18 + + + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_BUSY; + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Reads block(s) from a specified address in a card. The Data transfer + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * is managed in interrupt mode. + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note This API should be followed by a check on the card state through + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * HAL_SD_GetCardState(). + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note You could also check the IT transfer process through the SD Rx + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * interrupt event. + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pData: Pointer to the buffer that will contain the received data + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param BlockAdd: Block Address from where data is to be read + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param NumberOfBlocks: Number of blocks to read. + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_ReadBlocks_IT(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, ui + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NULL == pData) + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_PARAM; + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->State == HAL_SD_STATE_READY) + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = HAL_SD_ERROR_NONE; + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_BUSY; + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize data control register */ + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL = 0U; + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->pRxBuffPtr = pData; + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxXferSize = BLOCKSIZE * NumberOfBlocks; + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_ENABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DA + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SDHC_SDXC) + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** add *= 512U; +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + ARM GAS /tmp/ccQEYyKb.s page 19 + + +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Configure the SD DPSM (Data Path State Machine) */ +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataTimeOut = SDMMC_DATATIMEOUT; +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read Blocks in IT mode */ +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NumberOfBlocks > 1U) +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = (SD_CONTEXT_READ_MULTIPLE_BLOCK | SD_CONTEXT_IT); +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read Multi Block command */ +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdReadMultiBlock(hsd->Instance, add); +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = (SD_CONTEXT_READ_SINGLE_BLOCK | SD_CONTEXT_IT); +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read Single Block command */ +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdReadSingleBlock(hsd->Instance, add); +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_BUSY; +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Writes block(s) to a specified address in a card. The Data transfer +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * is managed in interrupt mode. +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note This API should be followed by a check on the card state through +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * HAL_SD_GetCardState(). +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note You could also check the IT transfer process through the SD Tx +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * interrupt event. +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pData: Pointer to the buffer that will contain the data to transmit +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param BlockAdd: Block Address where data will be written +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param NumberOfBlocks: Number of blocks to write +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_WriteBlocks_IT(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, u + ARM GAS /tmp/ccQEYyKb.s page 20 + + +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NULL == pData) +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_PARAM; +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->State == HAL_SD_STATE_READY) +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = HAL_SD_ERROR_NONE; +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_BUSY; +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize data control register */ +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL = 0U; +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->pTxBuffPtr = pData; +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxXferSize = BLOCKSIZE * NumberOfBlocks; +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Enable transfer interrupts */ +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_ENABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR | SDMMC_IT_D +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SDHC_SDXC) +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** add *= 512U; +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write Blocks in Polling mode */ +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NumberOfBlocks > 1U) +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = (SD_CONTEXT_WRITE_MULTIPLE_BLOCK| SD_CONTEXT_IT); +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write Multi Block command */ +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdWriteMultiBlock(hsd->Instance, add); +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = (SD_CONTEXT_WRITE_SINGLE_BLOCK | SD_CONTEXT_IT); +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write Single Block command */ +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdWriteSingleBlock(hsd->Instance, add); +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + ARM GAS /tmp/ccQEYyKb.s page 21 + + +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Configure the SD DPSM (Data Path State Machine) */ +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataTimeOut = SDMMC_DATATIMEOUT; +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_BUSY; +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Reads block(s) from a specified address in a card. The Data transfer +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * is managed by DMA mode. +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note This API should be followed by a check on the card state through +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * HAL_SD_GetCardState(). +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note You could also check the DMA transfer process through the SD Rx +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * interrupt event. +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer SD handle +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pData: Pointer to the buffer that will contain the received data +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param BlockAdd: Block Address from where data is to be read +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param NumberOfBlocks: Number of blocks to read. +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, u +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NULL == pData) +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_PARAM; +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->State == HAL_SD_STATE_READY) +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = HAL_SD_ERROR_NONE; +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 22 + + +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_BUSY; +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize data control register */ +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL = 0U; +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_ENABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT_DA +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set the DMA transfer complete callback */ +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmarx->XferCpltCallback = SD_DMAReceiveCplt; +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set the DMA error callback */ +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmarx->XferErrorCallback = SD_DMAError; +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set the DMA Abort callback */ +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmarx->XferAbortCallback = NULL; +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Force DMA Direction */ +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmarx->Init.Direction = DMA_PERIPH_TO_MEMORY; +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** MODIFY_REG(hsd->hdmarx->Instance->CR, DMA_SxCR_DIR, hsd->hdmarx->Init.Direction); +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Enable the DMA Channel */ +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Start_IT(hsd->hdmarx, (uint32_t)&hsd->Instance->FIFO, (uint32_t)pData, (uint32_t)(BL +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_DISABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_RXOVERR | SDMMC_IT +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DMA; +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Enable SD DMA transfer */ +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_DMA_ENABLE(hsd); +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SDHC_SDXC) +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** add *= 512U; +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Configure the SD DPSM (Data Path State Machine) */ +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataTimeOut = SDMMC_DATATIMEOUT; +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read Blocks in DMA mode */ +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NumberOfBlocks > 1U) +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = (SD_CONTEXT_READ_MULTIPLE_BLOCK | SD_CONTEXT_DMA); +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read Multi Block command */ +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdReadMultiBlock(hsd->Instance, add); +1227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else + ARM GAS /tmp/ccQEYyKb.s page 23 + + +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = (SD_CONTEXT_READ_SINGLE_BLOCK | SD_CONTEXT_DMA); +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read Single Block command */ +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdReadSingleBlock(hsd->Instance, add); +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_BUSY; +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Writes block(s) to a specified address in a card. The Data transfer +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * is managed by DMA mode. +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note This API should be followed by a check on the card state through +1258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * HAL_SD_GetCardState(). +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note You could also check the DMA transfer process through the SD Tx +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * interrupt event. +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pData: Pointer to the buffer that will contain the data to transmit +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param BlockAdd: Block Address where data will be written +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param NumberOfBlocks: Number of blocks to write +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint8_t *pData, uint32_t BlockAdd, +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NULL == pData) +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_PARAM; +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->State == HAL_SD_STATE_READY) +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = HAL_SD_ERROR_NONE; +1282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((add + NumberOfBlocks) > (hsd->SdCard.LogBlockNbr)) +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; + ARM GAS /tmp/ccQEYyKb.s page 24 + + +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_BUSY; +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize data control register */ +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL = 0U; +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Enable SD Error interrupts */ +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_ENABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR)); +1296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set the DMA transfer complete callback */ +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmatx->XferCpltCallback = SD_DMATransmitCplt; +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set the DMA error callback */ +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmatx->XferErrorCallback = SD_DMAError; +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set the DMA Abort callback */ +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmatx->XferAbortCallback = NULL; +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SDHC_SDXC) +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** add *= 512U; +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write Blocks in Polling mode */ +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(NumberOfBlocks > 1U) +1313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = (SD_CONTEXT_WRITE_MULTIPLE_BLOCK | SD_CONTEXT_DMA); +1315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write Multi Block command */ +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdWriteMultiBlock(hsd->Instance, add); +1318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = (SD_CONTEXT_WRITE_SINGLE_BLOCK | SD_CONTEXT_DMA); +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write Single Block command */ +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdWriteSingleBlock(hsd->Instance, add); +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Enable SDMMC DMA transfer */ +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_DMA_ENABLE(hsd); +1338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Force DMA Direction */ +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmatx->Init.Direction = DMA_MEMORY_TO_PERIPH; +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** MODIFY_REG(hsd->hdmatx->Instance->CR, DMA_SxCR_DIR, hsd->hdmatx->Init.Direction); +1342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 25 + + +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Enable the DMA Channel */ +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Start_IT(hsd->hdmatx, (uint32_t)pData, (uint32_t)&hsd->Instance->FIFO, (uint32_t)(BL +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_DISABLE_IT(hsd, (SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT | SDMMC_IT_TXUNDERR)); +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DMA; +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Configure the SD DPSM (Data Path State Machine) */ +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataTimeOut = SDMMC_DATATIMEOUT; +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); +1363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_BUSY; +1370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Erases the specified memory area of the given SD card. +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @note This API should be followed by a check on the card state through +1376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * HAL_SD_GetCardState(). +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param BlockStartAdd: Start Block address +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param BlockEndAdd: End Block address +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_Erase(SD_HandleTypeDef *hsd, uint32_t BlockStartAdd, uint32_t BlockEndAdd) +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t start_add = BlockStartAdd; +1386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t end_add = BlockEndAdd; +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->State == HAL_SD_STATE_READY) +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = HAL_SD_ERROR_NONE; +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(end_add < start_add) +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_PARAM; +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(end_add > (hsd->SdCard.LogBlockNbr)) +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 26 + + +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_ADDR_OUT_OF_RANGE; +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_BUSY; +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check if the card command class supports erase command */ +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(((hsd->SdCard.Class) & SDMMC_CCCC_ERASE) == 0U) +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +1410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_REQUEST_NOT_APPLICABLE; +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_LOCK_UNLOCK_FAILED; +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get start and end block for high capacity cards */ +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SDHC_SDXC) +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** start_add *= 512U; +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** end_add *= 512U; +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* According to sd-card spec 1.0 ERASE_GROUP_START (CMD32) and erase_group_end(CMD33) */ +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SECURED) +1434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD32 SD_ERASE_GRP_START with argument as addr */ +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdSDEraseStartAdd(hsd->Instance, start_add); +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD33 SD_ERASE_GRP_END with argument as addr */ +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdSDEraseEndAdd(hsd->Instance, end_add); +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +1449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + ARM GAS /tmp/ccQEYyKb.s page 27 + + +1457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD38 ERASE */ +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdErase(hsd->Instance); +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +1463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_BUSY; +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief This function handles SD card interrupt request. +1481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** void HAL_SD_IRQHandler(SD_HandleTypeDef *hsd) +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t context = hsd->Context; +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check for SDMMC interrupt flags */ +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXFIFOHF) != RESET) && ((context & SD_CONTEXT_IT) != 0U)) +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_Read_IT(hsd); +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DATAEND) != RESET) +1496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_FLAG_DATAEND); +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_DISABLE_IT(hsd, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_TXUNDERR | SDMMC_IT_RXOVERR | SDMMC_IT_TXFIFOHE |\ +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_RXFIFOHF); +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL &= ~(SDMMC_DCTRL_DTEN); +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((context & SD_CONTEXT_IT) != 0U) +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(((context & SD_CONTEXT_READ_MULTIPLE_BLOCK) != 0U) || ((context & SD_CONTEXT_WRITE_MULTIPL +1508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdStopTransfer(hsd->Instance); +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +1511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + ARM GAS /tmp/ccQEYyKb.s page 28 + + +1514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCallback(hsd); +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_ErrorCallback(hsd); +1517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +1526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(((context & SD_CONTEXT_READ_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_READ_MULTIPLE_B +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxCpltCallback(hsd); +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_RxCpltCallback(hsd); +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +1533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxCpltCallback(hsd); +1538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_TxCpltCallback(hsd); +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +1541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if((context & SD_CONTEXT_DMA) != 0U) +1544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((context & SD_CONTEXT_WRITE_MULTIPLE_BLOCK) != 0U) +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdStopTransfer(hsd->Instance); +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +1549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +1551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +1552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCallback(hsd); +1553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_ErrorCallback(hsd); +1555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +1556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(((context & SD_CONTEXT_READ_SINGLE_BLOCK) == 0U) && ((context & SD_CONTEXT_READ_MULTIPLE_B +1559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Disable the DMA transfer for transmit request by setting the DMAEN bit +1561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** in the SD DCTRL register */ +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +1567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxCpltCallback(hsd); +1568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_TxCpltCallback(hsd); +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + ARM GAS /tmp/ccQEYyKb.s page 29 + + +1571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Nothing to do */ +1576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if((__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXFIFOHE) != RESET) && ((context & SD_CONTEXT_IT) != 0 +1580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_Write_IT(hsd); +1582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_RXOVERR | S +1585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set Error code */ +1587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL) != RESET) +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DATA_CRC_FAIL; +1590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DTIMEOUT) != RESET) +1592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DATA_TIMEOUT; +1594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR) != RESET) +1596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_RX_OVERRUN; +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXUNDERR) != RESET) +1600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_TX_UNDERRUN; +1602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear All flags */ +1605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Disable all interrupts */ +1608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_DISABLE_IT(hsd, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ +1609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); +1610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= SDMMC_CmdStopTransfer(hsd->Instance); +1612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((context & SD_CONTEXT_IT) != 0U) +1614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set the SD state to ready to be able to start again the process */ +1616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +1619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCallback(hsd); +1620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_ErrorCallback(hsd); +1622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +1623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if((context & SD_CONTEXT_DMA) != 0U) +1625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort the SD DMA channel */ +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(((context & SD_CONTEXT_WRITE_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_WRITE_MULTIPLE + ARM GAS /tmp/ccQEYyKb.s page 30 + + +1628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set the DMA Tx abort callback */ +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmatx->XferAbortCallback = SD_DMATxAbort; +1631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort DMA in IT mode */ +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmatx) != HAL_OK) +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_DMATxAbort(hsd->hdmatx); +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(((context & SD_CONTEXT_READ_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_READ_MULTI +1638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set the DMA Rx abort callback */ +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmarx->XferAbortCallback = SD_DMARxAbort; +1641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort DMA in IT mode */ +1642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmarx) != HAL_OK) +1643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_DMARxAbort(hsd->hdmarx); +1645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = HAL_SD_ERROR_NONE; +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +1651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +1652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +1653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->AbortCpltCallback(hsd); +1654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +1655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_AbortCallback(hsd); +1656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +1657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Nothing to do */ +1662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Nothing to do */ +1667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief return the SD state +1672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to sd handle +1673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL state +1674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_StateTypeDef HAL_SD_GetState(SD_HandleTypeDef *hsd) +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return hsd->State; +1678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Return the SD error code +1682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd : Pointer to a SD_HandleTypeDef structure that contains +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * the configuration information. +1684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval SD Error Code + ARM GAS /tmp/ccQEYyKb.s page 31 + + +1685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t HAL_SD_GetError(SD_HandleTypeDef *hsd) +1687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return hsd->ErrorCode; +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Tx Transfer completed callbacks +1693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +1694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +1695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __weak void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd) +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ +1699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** UNUSED(hsd); +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* NOTE : This function should not be modified, when the callback is needed, +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** the HAL_SD_TxCpltCallback can be implemented in the user file +1703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Rx Transfer completed callbacks +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer SD handle +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +1710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __weak void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd) +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ +1714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** UNUSED(hsd); +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* NOTE : This function should not be modified, when the callback is needed, +1717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** the HAL_SD_RxCpltCallback can be implemented in the user file +1718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief SD error callbacks +1723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer SD handle +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +1725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __weak void HAL_SD_ErrorCallback(SD_HandleTypeDef *hsd) +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ +1729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** UNUSED(hsd); +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* NOTE : This function should not be modified, when the callback is needed, +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** the HAL_SD_ErrorCallback can be implemented in the user file +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief SD Abort callbacks +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer SD handle +1739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __weak void HAL_SD_AbortCallback(SD_HandleTypeDef *hsd) + ARM GAS /tmp/ccQEYyKb.s page 32 + + +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** UNUSED(hsd); +1745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* NOTE : This function should not be modified, when the callback is needed, +1747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** the HAL_SD_AbortCallback can be implemented in the user file +1748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +1752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Register a User SD Callback +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * To be used instead of the weak (surcharged) predefined callback +1755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd : SD handle +1756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param CallbackID : ID of the callback to be registered +1757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * This parameter can be one of the following values: +1758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_TX_CPLT_CB_ID SD Tx Complete Callback ID +1759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_RX_CPLT_CB_ID SD Rx Complete Callback ID +1760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_ERROR_CB_ID SD Error Callback ID +1761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_ABORT_CB_ID SD Abort Callback ID +1762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_MSP_INIT_CB_ID SD MspInit Callback ID +1763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_MSP_DEINIT_CB_ID SD MspDeInit Callback ID +1764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pCallback : pointer to the Callback function +1765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval status +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_RegisterCallback(SD_HandleTypeDef *hsd, HAL_SD_CallbackIDTypeDef CallbackI +1768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef status = HAL_OK; +1770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(pCallback == NULL) +1772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Update the error code */ +1774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; +1775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +1776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Process locked */ +1779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_LOCK(hsd); +1780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->State == HAL_SD_STATE_READY) +1782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** switch (CallbackID) +1784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_TX_CPLT_CB_ID : +1786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxCpltCallback = pCallback; +1787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_RX_CPLT_CB_ID : +1789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxCpltCallback = pCallback; +1790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_ERROR_CB_ID : +1792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCallback = pCallback; +1793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_ABORT_CB_ID : +1795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->AbortCpltCallback = pCallback; +1796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_MSP_INIT_CB_ID : +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspInitCallback = pCallback; + ARM GAS /tmp/ccQEYyKb.s page 33 + + +1799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_MSP_DEINIT_CB_ID : +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspDeInitCallback = pCallback; +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** default : +1804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Update the error code */ +1805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* update return status */ +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if (hsd->State == HAL_SD_STATE_RESET) +1812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** switch (CallbackID) +1814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_MSP_INIT_CB_ID : +1816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspInitCallback = pCallback; +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_MSP_DEINIT_CB_ID : +1819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspDeInitCallback = pCallback; +1820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** default : +1822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Update the error code */ +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; +1824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* update return status */ +1825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; +1826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Update the error code */ +1832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; +1833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* update return status */ +1834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; +1835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Release Lock */ +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_UNLOCK(hsd); +1839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return status; +1840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Unregister a User SD Callback +1844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * SD Callback is redirected to the weak (surcharged) predefined callback +1845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd : SD handle +1846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param CallbackID : ID of the callback to be unregistered +1847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * This parameter can be one of the following values: +1848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_TX_CPLT_CB_ID SD Tx Complete Callback ID +1849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_RX_CPLT_CB_ID SD Rx Complete Callback ID +1850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_ERROR_CB_ID SD Error Callback ID +1851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_ABORT_CB_ID SD Abort Callback ID +1852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_MSP_INIT_CB_ID SD MspInit Callback ID +1853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg @ref HAL_SD_MSP_DEINIT_CB_ID SD MspDeInit Callback ID +1854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval status +1855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + ARM GAS /tmp/ccQEYyKb.s page 34 + + +1856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_UnRegisterCallback(SD_HandleTypeDef *hsd, HAL_SD_CallbackIDTypeDef Callbac +1857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef status = HAL_OK; +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Process locked */ +1861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_LOCK(hsd); +1862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->State == HAL_SD_STATE_READY) +1864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** switch (CallbackID) +1866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_TX_CPLT_CB_ID : +1868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxCpltCallback = HAL_SD_TxCpltCallback; +1869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_RX_CPLT_CB_ID : +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxCpltCallback = HAL_SD_RxCpltCallback; +1872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_ERROR_CB_ID : +1874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCallback = HAL_SD_ErrorCallback; +1875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_ABORT_CB_ID : +1877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->AbortCpltCallback = HAL_SD_AbortCallback; +1878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_MSP_INIT_CB_ID : +1880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspInitCallback = HAL_SD_MspInit; +1881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_MSP_DEINIT_CB_ID : +1883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspDeInitCallback = HAL_SD_MspDeInit; +1884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** default : +1886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Update the error code */ +1887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; +1888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* update return status */ +1889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; +1890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if (hsd->State == HAL_SD_STATE_RESET) +1894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** switch (CallbackID) +1896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_MSP_INIT_CB_ID : +1898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspInitCallback = HAL_SD_MspInit; +1899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** case HAL_SD_MSP_DEINIT_CB_ID : +1901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->MspDeInitCallback = HAL_SD_MspDeInit; +1902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** default : +1904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Update the error code */ +1905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; +1906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* update return status */ +1907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; +1908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +1909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +1912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 35 + + +1913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Update the error code */ +1914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_INVALID_CALLBACK; +1915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* update return status */ +1916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; +1917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Release Lock */ +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_UNLOCK(hsd); +1921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return status; +1922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +1924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @} +1927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** @addtogroup SD_Exported_Functions_Group3 +1930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief management functions +1931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * +1932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** @verbatim +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================================================================== +1934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ##### Peripheral Control functions ##### +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ============================================================================== +1936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** [..] +1937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** This subsection provides a set of functions allowing to control the SD card +1938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** operations and get the related information +1939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** @endverbatim +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @{ +1942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Returns information the information of the card which are stored on +1946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * the CID register. +1947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pCID: Pointer to a HAL_SD_CardCIDTypeDef structure that +1949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * contains all CID register parameters +1950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +1951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_GetCardCID(SD_HandleTypeDef *hsd, HAL_SD_CardCIDTypeDef *pCID) +1953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->ManufacturerID = (uint8_t)((hsd->CID[0] & 0xFF000000U) >> 24U); +1955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->OEM_AppliID = (uint16_t)((hsd->CID[0] & 0x00FFFF00U) >> 8U); +1957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->ProdName1 = (((hsd->CID[0] & 0x000000FFU) << 24U) | ((hsd->CID[1] & 0xFFFFFF00U) >> 8U)); +1959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->ProdName2 = (uint8_t)(hsd->CID[1] & 0x000000FFU); +1961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->ProdRev = (uint8_t)((hsd->CID[2] & 0xFF000000U) >> 24U); +1963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->ProdSN = (((hsd->CID[2] & 0x00FFFFFFU) << 8U) | ((hsd->CID[3] & 0xFF000000U) >> 24U)); +1965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->Reserved1 = (uint8_t)((hsd->CID[3] & 0x00F00000U) >> 20U); +1967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->ManufactDate = (uint16_t)((hsd->CID[3] & 0x000FFF00U) >> 8U); +1969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 36 + + +1970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->CID_CRC = (uint8_t)((hsd->CID[3] & 0x000000FEU) >> 1U); +1971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->Reserved2 = 1U; +1973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; +1975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +1976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +1978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Returns information the information of the card which are stored on +1979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * the CSD register. +1980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +1981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pCSD: Pointer to a HAL_SD_CardCSDTypeDef structure that +1982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * contains all CSD register parameters +1983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +1984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +1985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_GetCardCSD(SD_HandleTypeDef *hsd, HAL_SD_CardCSDTypeDef *pCSD) +1986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->CSDStruct = (uint8_t)((hsd->CSD[0] & 0xC0000000U) >> 30U); +1988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->SysSpecVersion = (uint8_t)((hsd->CSD[0] & 0x3C000000U) >> 26U); +1990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->Reserved1 = (uint8_t)((hsd->CSD[0] & 0x03000000U) >> 24U); +1992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->TAAC = (uint8_t)((hsd->CSD[0] & 0x00FF0000U) >> 16U); +1994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->NSAC = (uint8_t)((hsd->CSD[0] & 0x0000FF00U) >> 8U); +1996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->MaxBusClkFrec = (uint8_t)(hsd->CSD[0] & 0x000000FFU); +1998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->CardComdClasses = (uint16_t)((hsd->CSD[1] & 0xFFF00000U) >> 20U); +2000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->RdBlockLen = (uint8_t)((hsd->CSD[1] & 0x000F0000U) >> 16U); +2002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->PartBlockRead = (uint8_t)((hsd->CSD[1] & 0x00008000U) >> 15U); +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->WrBlockMisalign = (uint8_t)((hsd->CSD[1] & 0x00004000U) >> 14U); +2006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->RdBlockMisalign = (uint8_t)((hsd->CSD[1] & 0x00002000U) >> 13U); +2008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->DSRImpl = (uint8_t)((hsd->CSD[1] & 0x00001000U) >> 12U); +2010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->Reserved2 = 0U; /*!< Reserved */ +2012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType == CARD_SDSC) +2014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->DeviceSize = (((hsd->CSD[1] & 0x000003FFU) << 2U) | ((hsd->CSD[2] & 0xC0000000U) >> 30U)) +2016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->MaxRdCurrentVDDMin = (uint8_t)((hsd->CSD[2] & 0x38000000U) >> 27U); +2018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->MaxRdCurrentVDDMax = (uint8_t)((hsd->CSD[2] & 0x07000000U) >> 24U); +2020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->MaxWrCurrentVDDMin = (uint8_t)((hsd->CSD[2] & 0x00E00000U) >> 21U); +2022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->MaxWrCurrentVDDMax = (uint8_t)((hsd->CSD[2] & 0x001C0000U) >> 18U); +2024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->DeviceSizeMul = (uint8_t)((hsd->CSD[2] & 0x00038000U) >> 15U); +2026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 37 + + +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockNbr = (pCSD->DeviceSize + 1U) ; +2028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockNbr = (hsd->SdCard.BlockNbr) * ((hsd->SdCard.BlockSize) / 512U); +2032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockSize = 512U; +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(hsd->SdCard.CardType == CARD_SDHC_SDXC) +2035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Byte 7 */ +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->DeviceSize = (((hsd->CSD[1] & 0x0000003FU) << 16U) | ((hsd->CSD[2] & 0xFFFF0000U) >> 16U) +2038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockNbr = ((pCSD->DeviceSize + 1U) * 1024U); +2040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockNbr = hsd->SdCard.BlockNbr; +2041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockSize = 512U; +2042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockSize = hsd->SdCard.BlockSize; +2043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +2048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_UNSUPPORTED_FEATURE; +2049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +2051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->EraseGrSize = (uint8_t)((hsd->CSD[2] & 0x00004000U) >> 14U); +2054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->EraseGrMul = (uint8_t)((hsd->CSD[2] & 0x00003F80U) >> 7U); +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->WrProtectGrSize = (uint8_t)(hsd->CSD[2] & 0x0000007FU); +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->WrProtectGrEnable = (uint8_t)((hsd->CSD[3] & 0x80000000U) >> 31U); +2060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->ManDeflECC = (uint8_t)((hsd->CSD[3] & 0x60000000U) >> 29U); +2062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->WrSpeedFact = (uint8_t)((hsd->CSD[3] & 0x1C000000U) >> 26U); +2064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->MaxWrBlockLen= (uint8_t)((hsd->CSD[3] & 0x03C00000U) >> 22U); +2066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->WriteBlockPaPartial = (uint8_t)((hsd->CSD[3] & 0x00200000U) >> 21U); +2068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->Reserved3 = 0; +2070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->ContentProtectAppli = (uint8_t)((hsd->CSD[3] & 0x00010000U) >> 16U); +2072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->FileFormatGroup = (uint8_t)((hsd->CSD[3] & 0x00008000U) >> 15U); +2074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->CopyFlag = (uint8_t)((hsd->CSD[3] & 0x00004000U) >> 14U); +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->PermWrProtect = (uint8_t)((hsd->CSD[3] & 0x00002000U) >> 13U); +2078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->TempWrProtect = (uint8_t)((hsd->CSD[3] & 0x00001000U) >> 12U); +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->FileFormat = (uint8_t)((hsd->CSD[3] & 0x00000C00U) >> 10U); +2082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->ECC= (uint8_t)((hsd->CSD[3] & 0x00000300U) >> 8U); + ARM GAS /tmp/ccQEYyKb.s page 38 + + +2084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->CSD_CRC = (uint8_t)((hsd->CSD[3] & 0x000000FEU) >> 1U); +2086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->Reserved4 = 1; +2088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; +2090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Gets the SD status info. +2094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +2095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pStatus: Pointer to the HAL_SD_CardStatusTypeDef structure that +2096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * will contain the SD card status information +2097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +2098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypeDef *pStatus) +2100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t sd_status[16]; +2102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef status = HAL_OK; +2104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SD_SendSDStatus(hsd, sd_status); +2106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +2109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +2110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +2111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +2112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; +2113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pStatus->DataBusWidth = (uint8_t)((sd_status[0] & 0xC0U) >> 6U); +2117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pStatus->SecuredMode = (uint8_t)((sd_status[0] & 0x20U) >> 5U); +2119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pStatus->CardType = (uint16_t)(((sd_status[0] & 0x00FF0000U) >> 8U) | ((sd_status[0] & 0xFF0000 +2121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pStatus->ProtectedAreaSize = (((sd_status[1] & 0xFFU) << 24U) | ((sd_status[1] & 0xFF00U) << +2123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((sd_status[1] & 0xFF0000U) >> 8U) | ((sd_status[1] & 0xFF000000U +2124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pStatus->SpeedClass = (uint8_t)(sd_status[2] & 0xFFU); +2126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pStatus->PerformanceMove = (uint8_t)((sd_status[2] & 0xFF00U) >> 8U); +2128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pStatus->AllocationUnitSize = (uint8_t)((sd_status[2] & 0xF00000U) >> 20U); +2130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pStatus->EraseSize = (uint16_t)(((sd_status[2] & 0xFF000000U) >> 16U) | (sd_status[3] & 0xFFU)) +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pStatus->EraseTimeout = (uint8_t)((sd_status[3] & 0xFC00U) >> 10U); +2134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pStatus->EraseOffset = (uint8_t)((sd_status[3] & 0x0300U) >> 8U); +2136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set Block Size for Card */ +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE); +2140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + ARM GAS /tmp/ccQEYyKb.s page 39 + + +2141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +2143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +2144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = errorstate; +2145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return status; +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Gets the SD card info. +2154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +2155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pCardInfo: Pointer to the HAL_SD_CardInfoTypeDef structure that +2156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * will contain the SD card status information +2157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +2158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_GetCardInfo(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypeDef *pCardInfo) +2160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->CardType = (uint32_t)(hsd->SdCard.CardType); +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->CardVersion = (uint32_t)(hsd->SdCard.CardVersion); +2163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->Class = (uint32_t)(hsd->SdCard.Class); +2164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->RelCardAdd = (uint32_t)(hsd->SdCard.RelCardAdd); +2165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->BlockNbr = (uint32_t)(hsd->SdCard.BlockNbr); +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->BlockSize = (uint32_t)(hsd->SdCard.BlockSize); +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->LogBlockNbr = (uint32_t)(hsd->SdCard.LogBlockNbr); +2168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->LogBlockSize = (uint32_t)(hsd->SdCard.LogBlockSize); +2169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; +2171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Enables wide bus operation for the requested card if supported by +2175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * card. +2176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +2177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param WideMode: Specifies the SD card wide bus mode +2178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * This parameter can be one of the following values: +2179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg SDMMC_BUS_WIDE_8B: 8-bit data transfer +2180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg SDMMC_BUS_WIDE_4B: 4-bit data transfer +2181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @arg SDMMC_BUS_WIDE_1B: 1-bit data transfer +2182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +2183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_ConfigWideBusOperation(SD_HandleTypeDef *hsd, uint32_t WideMode) +2185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_InitTypeDef Init; +2187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +2188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef status = HAL_OK; +2189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check the parameters */ +2191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_BUS_WIDE(WideMode)); +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Change State */ +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_BUSY; +2195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SECURED) +2197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 40 + + +2198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(WideMode == SDMMC_BUS_WIDE_8B) +2199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_UNSUPPORTED_FEATURE; +2201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(WideMode == SDMMC_BUS_WIDE_4B) +2203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SD_WideBus_Enable(hsd); +2205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +2207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(WideMode == SDMMC_BUS_WIDE_1B) +2209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SD_WideBus_Disable(hsd); +2211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +2213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* WideMode is not a valid argument*/ +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_PARAM; +2218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* MMC Card does not support this feature */ +2223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_UNSUPPORTED_FEATURE; +2224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->ErrorCode != HAL_SD_ERROR_NONE) +2227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +2229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; +2232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Configure the SDMMC peripheral */ +2236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockEdge = hsd->Init.ClockEdge; +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockBypass = hsd->Init.ClockBypass; +2238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockPowerSave = hsd->Init.ClockPowerSave; +2239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.BusWide = WideMode; +2240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.HardwareFlowControl = hsd->Init.HardwareFlowControl; +2241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockDiv = hsd->Init.ClockDiv; +2242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_Init(hsd->Instance, Init); +2243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set Block Size for Card */ +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdBlockLength(hsd->Instance, BLOCKSIZE); +2247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +2250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); +2251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +2252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; +2253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 41 + + +2255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Change State */ +2256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +2257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return status; +2259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Gets the current sd card data state. +2263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: pointer to SD handle +2264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval Card state +2265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef HAL_SD_GetCardState(SD_HandleTypeDef *hsd) +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t cardstate; +2269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +2270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t resp1 = 0; +2271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SD_SendStatus(hsd, &resp1); +2273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +2276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** cardstate = ((resp1 >> 9U) & 0x0FU); +2279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return (HAL_SD_CardStateTypeDef)cardstate; +2281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Abort the current transfer and disable the SD. +2285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: pointer to a SD_HandleTypeDef structure that contains +2286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * the configuration information for SD module. +2287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +2288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_Abort(SD_HandleTypeDef *hsd) +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; +2292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t context = hsd->Context; +2293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* DIsable All interrupts */ +2295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_DISABLE_IT(hsd, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ +2296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); +2297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear All flags */ +2299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); +2300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** CLEAR_BIT(hsd->Instance->DCTRL, SDMMC_DCTRL_DTEN); +2302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if ((context & SD_CONTEXT_DMA) != 0U) +2304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Disable the SD DMA request */ +2306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); +2307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort the SD DMA Tx channel */ +2309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if (((context & SD_CONTEXT_WRITE_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_WRITE_MULTIPLE_ +2310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort(hsd->hdmatx) != HAL_OK) + ARM GAS /tmp/ccQEYyKb.s page 42 + + +2312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DMA; +2314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort the SD DMA Rx channel */ +2317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if (((context & SD_CONTEXT_READ_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_READ_MULTIP +2318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort(hsd->hdmarx) != HAL_OK) +2320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DMA; +2322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Nothing to do */ +2327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +2331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Initialize the SD operation */ +2333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +2334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** CardState = HAL_SD_GetCardState(hsd); +2336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) +2337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = SDMMC_CmdStopTransfer(hsd->Instance); +2339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->ErrorCode != HAL_SD_ERROR_NONE) +2341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +2343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; +2345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Abort the current transfer and disable the SD (IT mode). +2349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: pointer to a SD_HandleTypeDef structure that contains +2350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * the configuration information for SD module. +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval HAL status +2352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef HAL_SD_Abort_IT(SD_HandleTypeDef *hsd) +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; +2356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t context = hsd->Context; +2357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Disable All interrupts */ +2359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_DISABLE_IT(hsd, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ +2360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); +2361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** CLEAR_BIT(hsd->Instance->DCTRL, SDMMC_DCTRL_DTEN); +2363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if ((context & SD_CONTEXT_DMA) != 0U) +2365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Disable the SD DMA request */ +2367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); +2368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 43 + + +2369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort the SD DMA Tx channel */ +2370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if (((context & SD_CONTEXT_WRITE_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_WRITE_MULTIPLE_ +2371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmatx->XferAbortCallback = SD_DMATxAbort; +2373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmatx) != HAL_OK) +2374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmatx = NULL; +2376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort the SD DMA Rx channel */ +2379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if (((context & SD_CONTEXT_READ_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_READ_MULTIP +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmarx->XferAbortCallback = SD_DMARxAbort; +2382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmarx) != HAL_OK) +2383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->hdmarx = NULL; +2385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Nothing to do */ +2390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* No transfer ongoing on both DMA channels*/ +2393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear All flags */ +2396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); +2397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** CardState = HAL_SD_GetCardState(hsd); +2399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +2400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +2401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = SDMMC_CmdStopTransfer(hsd->Instance); +2404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->ErrorCode != HAL_SD_ERROR_NONE) +2406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; +2408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) +2412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->AbortCpltCallback(hsd); +2413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +2414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_AbortCallback(hsd); +2415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ +2416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_OK; +2420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @} +2424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 44 + + +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @} +2428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Private function ----------------------------------------------------------*/ +2431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** @addtogroup SD_Private_Functions +2432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @{ +2433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief DMA SD transmit process complete callback +2437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hdma: DMA handle +2438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +2439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_DMATransmitCplt(DMA_HandleTypeDef *hdma) +2441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 28 .loc 1 2441 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. +2442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + 33 .loc 1 2442 3 view .LVU1 + 34 .loc 1 2442 21 is_stmt 0 view .LVU2 + 35 0000 836B ldr r3, [r0, #56] + 36 .LVL1: +2443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Enable DATAEND Interrupt */ +2445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_ENABLE_IT(hsd, (SDMMC_IT_DATAEND)); + 37 .loc 1 2445 3 is_stmt 1 view .LVU3 + 38 0002 1A68 ldr r2, [r3] + 39 0004 D36B ldr r3, [r2, #60] + 40 .LVL2: + 41 .loc 1 2445 3 is_stmt 0 view .LVU4 + 42 0006 43F48073 orr r3, r3, #256 + 43 000a D363 str r3, [r2, #60] + 44 .LVL3: +2446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 45 .loc 1 2446 1 view .LVU5 + 46 000c 7047 bx lr + 47 .cfi_endproc + 48 .LFE168: + 50 .section .text.SD_PowerON,"ax",%progbits + 51 .align 1 + 52 .syntax unified + 53 .thumb + 54 .thumb_func + 55 .fpu fpv5-d16 + 57 SD_PowerON: + 58 .LVL4: + 59 .LFB174: +2447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief DMA SD receive process complete callback +2450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hdma: DMA handle +2451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +2452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ + ARM GAS /tmp/ccQEYyKb.s page 45 + + +2453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_DMAReceiveCplt(DMA_HandleTypeDef *hdma) +2454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); +2456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +2457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send stop command in multiblock write */ +2459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->Context == (SD_CONTEXT_READ_MULTIPLE_BLOCK | SD_CONTEXT_DMA)) +2460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdStopTransfer(hsd->Instance); +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; +2465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if (USE_HAL_SD_REGISTER_CALLBACKS == 1) +2466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCallback(hsd); +2467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +2468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_ErrorCallback(hsd); +2469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif +2470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Disable the DMA transfer for transmit request by setting the DMAEN bit +2474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** in the SD DCTRL register */ +2475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Instance->DCTRL &= (uint32_t)~((uint32_t)SDMMC_DCTRL_DMAEN); +2476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +2478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); +2479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +2481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +2482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if (USE_HAL_SD_REGISTER_CALLBACKS == 1) +2484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxCpltCallback(hsd); +2485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +2486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_RxCpltCallback(hsd); +2487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif +2488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief DMA SD communication error callback +2492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hdma: DMA handle +2493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +2494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_DMAError(DMA_HandleTypeDef *hdma) +2496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); +2498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; +2499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t RxErrorCode, TxErrorCode; +2500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* if DMA error is FIFO error ignore it */ +2502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_GetError(hdma) != HAL_DMA_ERROR_FE) +2503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** RxErrorCode = hsd->hdmarx->ErrorCode; +2505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** TxErrorCode = hsd->hdmatx->ErrorCode; +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((RxErrorCode == HAL_DMA_ERROR_TE) || (TxErrorCode == HAL_DMA_ERROR_TE)) +2507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear All flags */ +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + ARM GAS /tmp/ccQEYyKb.s page 46 + + +2510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Disable All interrupts */ +2512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_DISABLE_IT(hsd, SDMMC_IT_DATAEND | SDMMC_IT_DCRCFAIL | SDMMC_IT_DTIMEOUT|\ +2513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); +2514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DMA; +2516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** CardState = HAL_SD_GetCardState(hsd); +2517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) +2518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= SDMMC_CmdStopTransfer(hsd->Instance); +2520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State= HAL_SD_STATE_READY; +2523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +2524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if (USE_HAL_SD_REGISTER_CALLBACKS == 1) +2527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCallback(hsd); +2528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +2529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_ErrorCallback(hsd); +2530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif +2531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief DMA SD Tx Abort callback +2536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hdma: DMA handle +2537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +2538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_DMATxAbort(DMA_HandleTypeDef *hdma) +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); +2542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; +2543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear All flags */ +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); +2546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** CardState = HAL_SD_GetCardState(hsd); +2548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +2549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) +2551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= SDMMC_CmdStopTransfer(hsd->Instance); +2553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->ErrorCode == HAL_SD_ERROR_NONE) +2556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if (USE_HAL_SD_REGISTER_CALLBACKS == 1) +2558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->AbortCpltCallback(hsd); +2559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +2560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_AbortCallback(hsd); +2561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif +2562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if (USE_HAL_SD_REGISTER_CALLBACKS == 1) +2566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCallback(hsd); + ARM GAS /tmp/ccQEYyKb.s page 47 + + +2567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +2568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_ErrorCallback(hsd); +2569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif +2570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief DMA SD Rx Abort callback +2575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hdma: DMA handle +2576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +2577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_DMARxAbort(DMA_HandleTypeDef *hdma) +2579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); +2581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; +2582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear All flags */ +2584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); +2585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** CardState = HAL_SD_GetCardState(hsd); +2587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; +2588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; +2589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= SDMMC_CmdStopTransfer(hsd->Instance); +2592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->ErrorCode == HAL_SD_ERROR_NONE) +2595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if (USE_HAL_SD_REGISTER_CALLBACKS == 1) +2597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->AbortCpltCallback(hsd); +2598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +2599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_AbortCallback(hsd); +2600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif +2601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if (USE_HAL_SD_REGISTER_CALLBACKS == 1) +2605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCallback(hsd); +2606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #else +2607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_ErrorCallback(hsd); +2608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif +2609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Initializes the sd card. +2614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +2615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval SD Card error state +2616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_InitCard(SD_HandleTypeDef *hsd) +2618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardCSDTypeDef CSD; +2620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +2621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint16_t sd_rca = 1U; +2622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check the power State */ + ARM GAS /tmp/ccQEYyKb.s page 48 + + +2624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(SDMMC_GetPowerState(hsd->Instance) == 0U) +2625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Power off */ +2627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_REQUEST_NOT_APPLICABLE; +2628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SECURED) +2631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD2 ALL_SEND_CID */ +2633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdSendCID(hsd->Instance); +2634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get Card identification number data */ +2641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[0U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1); +2642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); +2643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[2U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP3); +2644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[3U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP4); +2645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SECURED) +2649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD3 SET_REL_ADDR with argument 0 */ +2651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* SD Card publishes its RCA. */ +2652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdSetRelAdd(hsd->Instance, &sd_rca); +2653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(hsd->SdCard.CardType != CARD_SECURED) +2659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get the SD card RCA */ +2661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.RelCardAdd = sd_rca; +2662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD9 SEND_CSD with argument as card's RCA */ +2664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdSendCSD(hsd->Instance, (uint32_t)(hsd->SdCard.RelCardAdd << 16U)); +2665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get Card Specific Data */ +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[0U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1); +2673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); +2674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[2U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP3); +2675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[3U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP4); +2676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get the Card Class */ +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.Class = (SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2) >> 20U); + ARM GAS /tmp/ccQEYyKb.s page 49 + + +2681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get CSD parameters */ +2683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if (HAL_SD_GetCardCSD(hsd, &CSD) != HAL_OK) +2684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_UNSUPPORTED_FEATURE; +2686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Select the Card */ +2689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdSelDesel(hsd->Instance, (uint32_t)(((uint32_t)hsd->SdCard.RelCardAdd) << 16 +2690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Configure SDMMC peripheral interface */ +2696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_Init(hsd->Instance, hsd->Init); +2697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* All cards are initialized */ +2699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_NONE; +2700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Enquires cards about their operating voltage and configures clock +2704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * controls and stores SD information that will be needed in future +2705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * in the SD handle. +2706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +2707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval error state +2708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_PowerON(SD_HandleTypeDef *hsd) +2710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 60 .loc 1 2710 1 is_stmt 1 view -0 + 61 .cfi_startproc + 62 @ args = 0, pretend = 0, frame = 8 + 63 @ frame_needed = 0, uses_anonymous_args = 0 + 64 .loc 1 2710 1 is_stmt 0 view .LVU7 + 65 0000 70B5 push {r4, r5, r6, lr} + 66 .LCFI0: + 67 .cfi_def_cfa_offset 16 + 68 .cfi_offset 4, -16 + 69 .cfi_offset 5, -12 + 70 .cfi_offset 6, -8 + 71 .cfi_offset 14, -4 + 72 0002 82B0 sub sp, sp, #8 + 73 .LCFI1: + 74 .cfi_def_cfa_offset 24 + 75 0004 0446 mov r4, r0 +2711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __IO uint32_t count = 0U; + 76 .loc 1 2711 3 is_stmt 1 view .LVU8 + 77 .loc 1 2711 17 is_stmt 0 view .LVU9 + 78 0006 0023 movs r3, #0 + 79 0008 0193 str r3, [sp, #4] +2712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t response = 0U, validvoltage = 0U; + 80 .loc 1 2712 3 is_stmt 1 view .LVU10 + 81 .LVL5: +2713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 82 .loc 1 2713 3 view .LVU11 +2714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 50 + + +2715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* CMD0: GO_IDLE_STATE */ +2716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdGoIdleState(hsd->Instance); + 83 .loc 1 2716 3 view .LVU12 + 84 .loc 1 2716 16 is_stmt 0 view .LVU13 + 85 000a 0068 ldr r0, [r0] + 86 .LVL6: + 87 .loc 1 2716 16 view .LVU14 + 88 000c FFF7FEFF bl SDMMC_CmdGoIdleState + 89 .LVL7: +2717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 90 .loc 1 2717 3 is_stmt 1 view .LVU15 + 91 .loc 1 2717 5 is_stmt 0 view .LVU16 + 92 0010 0546 mov r5, r0 + 93 0012 10B1 cbz r0, .L19 + 94 .LVL8: + 95 .L2: +2718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* CMD8: SEND_IF_COND: Command available only on V2.0 cards */ +2723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdOperCond(hsd->Instance); +2724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.CardVersion = CARD_V1_X; +2727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* CMD0: GO_IDLE_STATE */ +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdGoIdleState(hsd->Instance); +2729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.CardVersion = CARD_V2_X; +2738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if( hsd->SdCard.CardVersion == CARD_V2_X) +2741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* SEND CMD55 APP_CMD with RCA as 0 */ +2743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0); +2744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_UNSUPPORTED_FEATURE; +2747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* SD CARD */ +2750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send ACMD41 SD_APP_OP_COND with Argument 0x80100000 */ +2751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while((count < SDMMC_MAX_VOLT_TRIAL) && (validvoltage == 0U)) +2752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* SEND CMD55 APP_CMD with RCA as 0 */ +2754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0); +2755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + ARM GAS /tmp/ccQEYyKb.s page 51 + + +2759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD41 */ +2761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdAppOperCommand(hsd->Instance, SDMMC_VOLTAGE_WINDOW_SD | SDMMC_HIGH_CAPACI +2762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_UNSUPPORTED_FEATURE; +2765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get command response */ +2768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** response = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1); +2769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get operating voltage*/ +2771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** validvoltage = (((response >> 31U) == 1U) ? 1U : 0U); +2772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** count++; +2774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(count >= SDMMC_MAX_VOLT_TRIAL) +2777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_INVALID_VOLTRANGE; +2779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((response & SDMMC_HIGH_CAPACITY) == SDMMC_HIGH_CAPACITY) /* (response &= SD_HIGH_CAPACITY) */ +2782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.CardType = CARD_SDHC_SDXC; +2784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.CardType = CARD_SDSC; +2788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_NONE; +2792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 96 .loc 1 2792 1 view .LVU17 + 97 0014 2846 mov r0, r5 + 98 0016 02B0 add sp, sp, #8 + 99 .LCFI2: + 100 .cfi_remember_state + 101 .cfi_def_cfa_offset 16 + 102 @ sp needed + 103 0018 70BD pop {r4, r5, r6, pc} + 104 .LVL9: + 105 .L19: + 106 .LCFI3: + 107 .cfi_restore_state +2723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 108 .loc 1 2723 3 is_stmt 1 view .LVU18 +2723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 109 .loc 1 2723 16 is_stmt 0 view .LVU19 + 110 001a 2068 ldr r0, [r4] + 111 .LVL10: +2723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 112 .loc 1 2723 16 view .LVU20 + 113 001c FFF7FEFF bl SDMMC_CmdOperCond + 114 .LVL11: +2724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 52 + + + 115 .loc 1 2724 3 is_stmt 1 view .LVU21 +2724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 116 .loc 1 2724 5 is_stmt 0 view .LVU22 + 117 0020 38B9 cbnz r0, .L20 +2737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 118 .loc 1 2737 5 is_stmt 1 view .LVU23 +2737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 119 .loc 1 2737 29 is_stmt 0 view .LVU24 + 120 0022 0123 movs r3, #1 + 121 0024 A364 str r3, [r4, #72] + 122 .L5: +2740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 123 .loc 1 2740 3 is_stmt 1 view .LVU25 +2740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 124 .loc 1 2740 18 is_stmt 0 view .LVU26 + 125 0026 A36C ldr r3, [r4, #72] +2740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 126 .loc 1 2740 5 view .LVU27 + 127 0028 012B cmp r3, #1 + 128 002a 0BD0 beq .L6 + 129 .L8: +2771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 130 .loc 1 2771 52 view .LVU28 + 131 002c 2E46 mov r6, r5 + 132 002e 2846 mov r0, r5 + 133 .LVL12: +2771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 134 .loc 1 2771 52 view .LVU29 + 135 0030 14E0 b .L7 + 136 .LVL13: + 137 .L20: +2726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* CMD0: GO_IDLE_STATE */ + 138 .loc 1 2726 5 is_stmt 1 view .LVU30 +2726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* CMD0: GO_IDLE_STATE */ + 139 .loc 1 2726 29 is_stmt 0 view .LVU31 + 140 0032 0023 movs r3, #0 + 141 0034 A364 str r3, [r4, #72] +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 142 .loc 1 2728 5 is_stmt 1 view .LVU32 +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 143 .loc 1 2728 18 is_stmt 0 view .LVU33 + 144 0036 2068 ldr r0, [r4] + 145 .LVL14: +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 146 .loc 1 2728 18 view .LVU34 + 147 0038 FFF7FEFF bl SDMMC_CmdGoIdleState + 148 .LVL15: +2729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 149 .loc 1 2729 5 is_stmt 1 view .LVU35 +2729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 150 .loc 1 2729 7 is_stmt 0 view .LVU36 + 151 003c 0028 cmp r0, #0 + 152 003e F2D0 beq .L5 +2731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 153 .loc 1 2731 14 view .LVU37 + 154 0040 0546 mov r5, r0 + 155 0042 E7E7 b .L2 + ARM GAS /tmp/ccQEYyKb.s page 53 + + + 156 .L6: +2743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 157 .loc 1 2743 5 is_stmt 1 view .LVU38 +2743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 158 .loc 1 2743 18 is_stmt 0 view .LVU39 + 159 0044 0021 movs r1, #0 + 160 0046 2068 ldr r0, [r4] + 161 .LVL16: +2743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 162 .loc 1 2743 18 view .LVU40 + 163 0048 FFF7FEFF bl SDMMC_CmdAppCommand + 164 .LVL17: +2744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 165 .loc 1 2744 5 is_stmt 1 view .LVU41 +2744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 166 .loc 1 2744 7 is_stmt 0 view .LVU42 + 167 004c 0028 cmp r0, #0 + 168 004e EDD0 beq .L8 +2746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 169 .loc 1 2746 14 view .LVU43 + 170 0050 4FF08055 mov r5, #268435456 + 171 0054 DEE7 b .L2 + 172 .LVL18: + 173 .L9: +2773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 174 .loc 1 2773 5 is_stmt 1 discriminator 4 view .LVU44 +2773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 175 .loc 1 2773 10 is_stmt 0 discriminator 4 view .LVU45 + 176 0056 019B ldr r3, [sp, #4] + 177 0058 0133 adds r3, r3, #1 + 178 005a 0193 str r3, [sp, #4] + 179 .LVL19: + 180 .L7: +2751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 181 .loc 1 2751 8 is_stmt 1 view .LVU46 +2751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 182 .loc 1 2751 16 is_stmt 0 view .LVU47 + 183 005c 019A ldr r2, [sp, #4] +2751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 184 .loc 1 2751 8 view .LVU48 + 185 005e 4FF6FE73 movw r3, #65534 + 186 0062 9A42 cmp r2, r3 + 187 0064 13D8 bhi .L10 +2751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 188 .loc 1 2751 40 discriminator 1 view .LVU49 + 189 0066 96B9 cbnz r6, .L10 +2754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 190 .loc 1 2754 5 is_stmt 1 view .LVU50 +2754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 191 .loc 1 2754 18 is_stmt 0 view .LVU51 + 192 0068 0021 movs r1, #0 + 193 006a 2068 ldr r0, [r4] + 194 .LVL20: +2754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 195 .loc 1 2754 18 view .LVU52 + 196 006c FFF7FEFF bl SDMMC_CmdAppCommand + 197 .LVL21: + ARM GAS /tmp/ccQEYyKb.s page 54 + + +2755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 198 .loc 1 2755 5 is_stmt 1 view .LVU53 +2755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 199 .loc 1 2755 7 is_stmt 0 view .LVU54 + 200 0070 E0B9 cbnz r0, .L15 +2761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 201 .loc 1 2761 5 is_stmt 1 view .LVU55 +2761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 202 .loc 1 2761 18 is_stmt 0 view .LVU56 + 203 0072 1249 ldr r1, .L21 + 204 0074 2068 ldr r0, [r4] + 205 .LVL22: +2761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 206 .loc 1 2761 18 view .LVU57 + 207 0076 FFF7FEFF bl SDMMC_CmdAppOperCommand + 208 .LVL23: +2762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 209 .loc 1 2762 5 is_stmt 1 view .LVU58 +2762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 210 .loc 1 2762 7 is_stmt 0 view .LVU59 + 211 007a 0646 mov r6, r0 + 212 .LVL24: +2762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 213 .loc 1 2762 7 view .LVU60 + 214 007c C0B9 cbnz r0, .L16 +2768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 215 .loc 1 2768 5 is_stmt 1 view .LVU61 +2768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 216 .loc 1 2768 16 is_stmt 0 view .LVU62 + 217 007e 0021 movs r1, #0 + 218 0080 2068 ldr r0, [r4] + 219 .LVL25: +2768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 220 .loc 1 2768 16 view .LVU63 + 221 0082 FFF7FEFF bl SDMMC_GetResponse + 222 .LVL26: +2771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 223 .loc 1 2771 5 is_stmt 1 view .LVU64 +2771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 224 .loc 1 2771 52 is_stmt 0 view .LVU65 + 225 0086 C30F lsrs r3, r0, #31 + 226 0088 E5D0 beq .L9 + 227 008a 1E46 mov r6, r3 + 228 .LVL27: +2771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 229 .loc 1 2771 52 view .LVU66 + 230 008c E3E7 b .L9 + 231 .LVL28: + 232 .L10: +2776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 233 .loc 1 2776 3 is_stmt 1 view .LVU67 +2776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 234 .loc 1 2776 12 is_stmt 0 view .LVU68 + 235 008e 019A ldr r2, [sp, #4] +2776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 236 .loc 1 2776 5 view .LVU69 + 237 0090 4FF6FE73 movw r3, #65534 + ARM GAS /tmp/ccQEYyKb.s page 55 + + + 238 0094 9A42 cmp r2, r3 + 239 0096 0ED8 bhi .L17 +2781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 240 .loc 1 2781 3 is_stmt 1 view .LVU70 +2781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 241 .loc 1 2781 5 is_stmt 0 view .LVU71 + 242 0098 10F08043 ands r3, r0, #1073741824 + 243 009c 02D0 beq .L12 +2783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 244 .loc 1 2783 5 is_stmt 1 view .LVU72 +2783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 245 .loc 1 2783 26 is_stmt 0 view .LVU73 + 246 009e 0123 movs r3, #1 + 247 00a0 6364 str r3, [r4, #68] + 248 00a2 B7E7 b .L2 + 249 .L12: +2787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 250 .loc 1 2787 5 is_stmt 1 view .LVU74 +2787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 251 .loc 1 2787 26 is_stmt 0 view .LVU75 + 252 00a4 0022 movs r2, #0 + 253 00a6 6264 str r2, [r4, #68] +2791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 254 .loc 1 2791 10 view .LVU76 + 255 00a8 1D46 mov r5, r3 + 256 00aa B3E7 b .L2 + 257 .LVL29: + 258 .L15: +2757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 259 .loc 1 2757 14 view .LVU77 + 260 00ac 0546 mov r5, r0 + 261 00ae B1E7 b .L2 + 262 .LVL30: + 263 .L16: +2764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 264 .loc 1 2764 14 view .LVU78 + 265 00b0 4FF08055 mov r5, #268435456 + 266 00b4 AEE7 b .L2 + 267 .LVL31: + 268 .L17: +2778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 269 .loc 1 2778 12 view .LVU79 + 270 00b6 4FF08075 mov r5, #16777216 + 271 00ba ABE7 b .L2 + 272 .L22: + 273 .align 2 + 274 .L21: + 275 00bc 000010C1 .word -1055916032 + 276 .cfi_endproc + 277 .LFE174: + 279 .section .text.SD_PowerOFF,"ax",%progbits + 280 .align 1 + 281 .syntax unified + 282 .thumb + 283 .thumb_func + 284 .fpu fpv5-d16 + 286 SD_PowerOFF: + ARM GAS /tmp/ccQEYyKb.s page 56 + + + 287 .LVL32: + 288 .LFB175: +2793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Turns the SDMMC output signals off. +2796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +2797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +2798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_PowerOFF(SD_HandleTypeDef *hsd) +2800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 289 .loc 1 2800 1 is_stmt 1 view -0 + 290 .cfi_startproc + 291 @ args = 0, pretend = 0, frame = 0 + 292 @ frame_needed = 0, uses_anonymous_args = 0 + 293 .loc 1 2800 1 is_stmt 0 view .LVU81 + 294 0000 08B5 push {r3, lr} + 295 .LCFI4: + 296 .cfi_def_cfa_offset 8 + 297 .cfi_offset 3, -8 + 298 .cfi_offset 14, -4 +2801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set Power State to OFF */ +2802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_PowerState_OFF(hsd->Instance); + 299 .loc 1 2802 3 is_stmt 1 view .LVU82 + 300 .loc 1 2802 9 is_stmt 0 view .LVU83 + 301 0002 0068 ldr r0, [r0] + 302 .LVL33: + 303 .loc 1 2802 9 view .LVU84 + 304 0004 FFF7FEFF bl SDMMC_PowerState_OFF + 305 .LVL34: +2803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 306 .loc 1 2803 1 view .LVU85 + 307 0008 08BD pop {r3, pc} + 308 .cfi_endproc + 309 .LFE175: + 311 .section .text.SD_Read_IT,"ax",%progbits + 312 .align 1 + 313 .syntax unified + 314 .thumb + 315 .thumb_func + 316 .fpu fpv5-d16 + 318 SD_Read_IT: + 319 .LVL35: + 320 .LFB181: +2804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Send Status info command. +2807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: pointer to SD handle +2808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pSDstatus: Pointer to the buffer that will contain the SD card status +2809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * SD Status register) +2810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval error state +2811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_SendSDStatus(SD_HandleTypeDef *hsd, uint32_t *pSDstatus) +2813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; +2815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +2816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t tickstart = HAL_GetTick(); +2817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count; + ARM GAS /tmp/ccQEYyKb.s page 57 + + +2818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t *pData = pSDstatus; +2819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check SD response */ +2821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) +2822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_LOCK_UNLOCK_FAILED; +2824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set block size for card if it is not equal to current block size for card */ +2827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdBlockLength(hsd->Instance, 64U); +2828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_NONE; +2831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD55 */ +2835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdAppCommand(hsd->Instance, (uint32_t)(hsd->SdCard.RelCardAdd << 16U)); +2836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_NONE; +2839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Configure the SD DPSM (Data Path State Machine) */ +2843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataTimeOut = SDMMC_DATATIMEOUT; +2844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = 64U; +2845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_64B; +2846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; +2847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; +2848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; +2849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); +2850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send ACMD13 (SD_APP_STAUS) with argument as card's RCA */ +2852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdStatusRegister(hsd->Instance); +2853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_NONE; +2856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get status data */ +2860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SD +2861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXFIFOHF)) +2863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** for(count = 0U; count < 8U; count++) +2865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *pData = SDMMC_ReadFIFO(hsd->Instance); +2867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pData++; +2868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((HAL_GetTick() - tickstart) >= SDMMC_DATATIMEOUT) +2872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_TIMEOUT; +2874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + ARM GAS /tmp/ccQEYyKb.s page 58 + + +2875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DTIMEOUT)) +2878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_DATA_TIMEOUT; +2880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL)) +2882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_DATA_CRC_FAIL; +2884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR)) +2886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_RX_OVERRUN; +2888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Nothing to do */ +2892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while ((__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXDAVL))) +2895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *pData = SDMMC_ReadFIFO(hsd->Instance); +2897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pData++; +2898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((HAL_GetTick() - tickstart) >= SDMMC_DATATIMEOUT) +2900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_TIMEOUT; +2902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static status flags*/ +2906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); +2907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_NONE; +2909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Returns the current card's status. +2913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +2914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pCardStatus: pointer to the buffer that will contain the SD card +2915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * status (Card Status register) +2916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval error state +2917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_SendStatus(SD_HandleTypeDef *hsd, uint32_t *pCardStatus) +2919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +2921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(pCardStatus == NULL) +2923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_PARAM; +2925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send Status command */ +2928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdSendStatus(hsd->Instance, (uint32_t)(hsd->SdCard.RelCardAdd << 16U)); +2929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; + ARM GAS /tmp/ccQEYyKb.s page 59 + + +2932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get SD card status */ +2935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *pCardStatus = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1); +2936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_NONE; +2938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Enables the SDMMC wide bus mode. +2942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: pointer to SD handle +2943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval error state +2944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_WideBus_Enable(SD_HandleTypeDef *hsd) +2946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t scr[2U] = {0U, 0U}; +2948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +2949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) +2951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_LOCK_UNLOCK_FAILED; +2953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get SCR Register */ +2956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SD_FindSCR(hsd, scr); +2957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* If requested card supports wide bus operation */ +2963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((scr[1U] & SDMMC_WIDE_BUS_SUPPORT) != SDMMC_ALLZERO) +2964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD55 APP_CMD with argument as card's RCA.*/ +2966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdAppCommand(hsd->Instance, (uint32_t)(hsd->SdCard.RelCardAdd << 16U)); +2967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send ACMD6 APP_CMD with argument as 2 for wide bus mode */ +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdBusWidth(hsd->Instance, 2U); +2974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +2975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +2977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_NONE; +2980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +2982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_REQUEST_NOT_APPLICABLE; +2984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +2986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +2988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Disables the SDMMC wide bus mode. + ARM GAS /tmp/ccQEYyKb.s page 60 + + +2989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +2990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval error state +2991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +2992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_WideBus_Disable(SD_HandleTypeDef *hsd) +2993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t scr[2U] = {0U, 0U}; +2995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +2996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +2997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((SDMMC_GetResponse(hsd->Instance, SDMMC_RESP1) & SDMMC_CARD_LOCKED) == SDMMC_CARD_LOCKED) +2998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +2999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_LOCK_UNLOCK_FAILED; +3000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Get SCR Register */ +3003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SD_FindSCR(hsd, scr); +3004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +3005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +3007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* If requested card supports 1 bit mode operation */ +3010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((scr[1U] & SDMMC_SINGLE_BUS_SUPPORT) != SDMMC_ALLZERO) +3011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD55 APP_CMD with argument as card's RCA */ +3013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdAppCommand(hsd->Instance, (uint32_t)(hsd->SdCard.RelCardAdd << 16U)); +3014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +3015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +3017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send ACMD6 APP_CMD with argument as 0 for single bus mode */ +3020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdBusWidth(hsd->Instance, 0U); +3021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +3022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +3024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_NONE; +3027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +3029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_REQUEST_NOT_APPLICABLE; +3031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +3036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Finds the SD card SCR register value. +3037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: Pointer to SD handle +3038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param pSCR: pointer to the buffer that will contain the SCR value +3039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval error state +3040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +3041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static uint32_t SD_FindSCR(SD_HandleTypeDef *hsd, uint32_t *pSCR) +3042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; +3044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; +3045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t tickstart = HAL_GetTick(); + ARM GAS /tmp/ccQEYyKb.s page 61 + + +3046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t index = 0U; +3047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t tempscr[2U] = {0U, 0U}; +3048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t *scr = pSCR; +3049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Set Block Size To 8 Bytes */ +3051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdBlockLength(hsd->Instance, 8U); +3052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +3053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +3055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send CMD55 APP_CMD with argument as card's RCA */ +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdAppCommand(hsd->Instance, (uint32_t)((hsd->SdCard.RelCardAdd) << 16U)); +3059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +3060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +3062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataTimeOut = SDMMC_DATATIMEOUT; +3065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = 8U; +3066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_8B; +3067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; +3068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; +3069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; +3070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); +3071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Send ACMD51 SD_APP_SEND_SCR with argument as 0 */ +3073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** errorstate = SDMMC_CmdSendSCR(hsd->Instance); +3074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) +3075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; +3077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT)) +3080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXDAVL)) +3082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *(tempscr + index) = SDMMC_ReadFIFO(hsd->Instance); +3084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** index++; +3085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXACT)) +3087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** break; +3089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((HAL_GetTick() - tickstart) >= SDMMC_DATATIMEOUT) +3092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_TIMEOUT; +3094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DTIMEOUT)) +3098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_FLAG_DTIMEOUT); +3100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_DATA_TIMEOUT; +3102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + ARM GAS /tmp/ccQEYyKb.s page 62 + + +3103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL)) +3104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_FLAG_DCRCFAIL); +3106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_DATA_CRC_FAIL; +3108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else if(__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR)) +3110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_FLAG_RXOVERR); +3112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_RX_OVERRUN; +3114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** else +3116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* No error flag set */ +3118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Clear all the static flags */ +3119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_DATA_FLAGS); +3120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *scr = (((tempscr[1] & SDMMC_0TO7BITS) << 24) | ((tempscr[1] & SDMMC_8TO15BITS) << 8) |\ +3122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[1] & SDMMC_16TO23BITS) >> 8) | ((tempscr[1] & SDMMC_24TO31BITS) >> 24)); +3123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** scr++; +3124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *scr = (((tempscr[0] & SDMMC_0TO7BITS) << 24) | ((tempscr[0] & SDMMC_8TO15BITS) << 8) |\ +3125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[0] & SDMMC_16TO23BITS) >> 8) | ((tempscr[0] & SDMMC_24TO31BITS) >> 24)); +3126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_SD_ERROR_NONE; +3130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +3133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Wrap up reading in non-blocking mode. +3134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: pointer to a SD_HandleTypeDef structure that contains +3135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * the configuration information. +3136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +3137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +3138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_Read_IT(SD_HandleTypeDef *hsd) +3139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 321 .loc 1 3139 1 is_stmt 1 view -0 + 322 .cfi_startproc + 323 @ args = 0, pretend = 0, frame = 0 + 324 @ frame_needed = 0, uses_anonymous_args = 0 + 325 .loc 1 3139 1 is_stmt 0 view .LVU87 + 326 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 327 .LCFI5: + 328 .cfi_def_cfa_offset 24 + 329 .cfi_offset 3, -24 + 330 .cfi_offset 4, -20 + 331 .cfi_offset 5, -16 + 332 .cfi_offset 6, -12 + 333 .cfi_offset 7, -8 + 334 .cfi_offset 14, -4 +3140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count, data, dataremaining; + 335 .loc 1 3140 3 is_stmt 1 view .LVU88 +3141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint8_t* tmp; + 336 .loc 1 3141 3 view .LVU89 +3142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp = hsd->pRxBuffPtr; + ARM GAS /tmp/ccQEYyKb.s page 63 + + + 337 .loc 1 3143 3 view .LVU90 + 338 .loc 1 3143 7 is_stmt 0 view .LVU91 + 339 0002 846A ldr r4, [r0, #40] + 340 .LVL36: +3144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining = hsd->RxXferSize; + 341 .loc 1 3144 3 is_stmt 1 view .LVU92 + 342 .loc 1 3144 17 is_stmt 0 view .LVU93 + 343 0004 C66A ldr r6, [r0, #44] + 344 .LVL37: +3145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if (dataremaining > 0U) + 345 .loc 1 3146 3 is_stmt 1 view .LVU94 + 346 .loc 1 3146 6 is_stmt 0 view .LVU95 + 347 0006 A6B9 cbnz r6, .L29 + 348 .LVL38: + 349 .L25: +3147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Read data from SDMMC Rx FIFO */ +3149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** for(count = 0U; count < 8U; count++) +3150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data = SDMMC_ReadFIFO(hsd->Instance); +3152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tmp = (uint8_t)(data & 0xFFU); +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; +3154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; +3155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tmp = (uint8_t)((data >> 8U) & 0xFFU); +3156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; +3157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; +3158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tmp = (uint8_t)((data >> 16U) & 0xFFU); +3159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; +3160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; +3161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tmp = (uint8_t)((data >> 24U) & 0xFFU); +3162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; +3163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; +3164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->pRxBuffPtr = tmp; +3167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxXferSize = dataremaining; +3168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 350 .loc 1 3169 1 view .LVU96 + 351 0008 F8BD pop {r3, r4, r5, r6, r7, pc} + 352 .LVL39: + 353 .L28: +3151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tmp = (uint8_t)(data & 0xFFU); + 354 .loc 1 3151 7 is_stmt 1 discriminator 3 view .LVU97 +3151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tmp = (uint8_t)(data & 0xFFU); + 355 .loc 1 3151 14 is_stmt 0 discriminator 3 view .LVU98 + 356 000a 3868 ldr r0, [r7] + 357 000c FFF7FEFF bl SDMMC_ReadFIFO + 358 .LVL40: +3152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 359 .loc 1 3152 7 is_stmt 1 discriminator 3 view .LVU99 +3152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 360 .loc 1 3152 12 is_stmt 0 discriminator 3 view .LVU100 + 361 0010 2070 strb r0, [r4] +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 362 .loc 1 3153 7 is_stmt 1 discriminator 3 view .LVU101 + ARM GAS /tmp/ccQEYyKb.s page 64 + + + 363 .LVL41: +3154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tmp = (uint8_t)((data >> 8U) & 0xFFU); + 364 .loc 1 3154 7 discriminator 3 view .LVU102 +3155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 365 .loc 1 3155 7 discriminator 3 view .LVU103 +3155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 366 .loc 1 3155 14 is_stmt 0 discriminator 3 view .LVU104 + 367 0012 C0F30723 ubfx r3, r0, #8, #8 +3155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 368 .loc 1 3155 12 discriminator 3 view .LVU105 + 369 0016 6370 strb r3, [r4, #1] +3156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 370 .loc 1 3156 7 is_stmt 1 discriminator 3 view .LVU106 + 371 .LVL42: +3157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tmp = (uint8_t)((data >> 16U) & 0xFFU); + 372 .loc 1 3157 7 discriminator 3 view .LVU107 +3158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 373 .loc 1 3158 7 discriminator 3 view .LVU108 +3158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 374 .loc 1 3158 14 is_stmt 0 discriminator 3 view .LVU109 + 375 0018 C0F30743 ubfx r3, r0, #16, #8 +3158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 376 .loc 1 3158 12 discriminator 3 view .LVU110 + 377 001c A370 strb r3, [r4, #2] +3159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 378 .loc 1 3159 7 is_stmt 1 discriminator 3 view .LVU111 + 379 .LVL43: +3160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tmp = (uint8_t)((data >> 24U) & 0xFFU); + 380 .loc 1 3160 7 discriminator 3 view .LVU112 +3161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 381 .loc 1 3161 7 discriminator 3 view .LVU113 +3161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 382 .loc 1 3161 14 is_stmt 0 discriminator 3 view .LVU114 + 383 001e 000E lsrs r0, r0, #24 + 384 .LVL44: +3161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 385 .loc 1 3161 12 discriminator 3 view .LVU115 + 386 0020 E070 strb r0, [r4, #3] +3162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 387 .loc 1 3162 7 is_stmt 1 discriminator 3 view .LVU116 +3162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 388 .loc 1 3162 10 is_stmt 0 discriminator 3 view .LVU117 + 389 0022 0434 adds r4, r4, #4 + 390 .LVL45: +3163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 391 .loc 1 3163 7 is_stmt 1 discriminator 3 view .LVU118 +3163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 392 .loc 1 3163 20 is_stmt 0 discriminator 3 view .LVU119 + 393 0024 043E subs r6, r6, #4 + 394 .LVL46: +3149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 395 .loc 1 3149 33 is_stmt 1 discriminator 3 view .LVU120 +3149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 396 .loc 1 3149 38 is_stmt 0 discriminator 3 view .LVU121 + 397 0026 0135 adds r5, r5, #1 + 398 .LVL47: + 399 .L26: + ARM GAS /tmp/ccQEYyKb.s page 65 + + +3149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 400 .loc 1 3149 21 is_stmt 1 discriminator 1 view .LVU122 +3149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 401 .loc 1 3149 5 is_stmt 0 discriminator 1 view .LVU123 + 402 0028 072D cmp r5, #7 + 403 002a EED9 bls .L28 +3166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxXferSize = dataremaining; + 404 .loc 1 3166 5 is_stmt 1 view .LVU124 +3166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxXferSize = dataremaining; + 405 .loc 1 3166 21 is_stmt 0 view .LVU125 + 406 002c BC62 str r4, [r7, #40] +3167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 407 .loc 1 3167 5 is_stmt 1 view .LVU126 +3167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 408 .loc 1 3167 21 is_stmt 0 view .LVU127 + 409 002e FE62 str r6, [r7, #44] + 410 .loc 1 3169 1 view .LVU128 + 411 0030 EAE7 b .L25 + 412 .LVL48: + 413 .L29: + 414 .loc 1 3169 1 view .LVU129 + 415 0032 0746 mov r7, r0 +3149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 416 .loc 1 3149 15 view .LVU130 + 417 0034 0025 movs r5, #0 + 418 0036 F7E7 b .L26 + 419 .cfi_endproc + 420 .LFE181: + 422 .section .text.SD_Write_IT,"ax",%progbits + 423 .align 1 + 424 .syntax unified + 425 .thumb + 426 .thumb_func + 427 .fpu fpv5-d16 + 429 SD_Write_IT: + 430 .LVL49: + 431 .LFB182: +3170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /** +3172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @brief Wrap up writing in non-blocking mode. +3173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @param hsd: pointer to a SD_HandleTypeDef structure that contains +3174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * the configuration information. +3175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** * @retval None +3176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** */ +3177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** static void SD_Write_IT(SD_HandleTypeDef *hsd) +3178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 432 .loc 1 3178 1 is_stmt 1 view -0 + 433 .cfi_startproc + 434 @ args = 0, pretend = 0, frame = 8 + 435 @ frame_needed = 0, uses_anonymous_args = 0 + 436 .loc 1 3178 1 is_stmt 0 view .LVU132 + 437 0000 F0B5 push {r4, r5, r6, r7, lr} + 438 .LCFI6: + 439 .cfi_def_cfa_offset 20 + 440 .cfi_offset 4, -20 + 441 .cfi_offset 5, -16 + 442 .cfi_offset 6, -12 + ARM GAS /tmp/ccQEYyKb.s page 66 + + + 443 .cfi_offset 7, -8 + 444 .cfi_offset 14, -4 + 445 0002 83B0 sub sp, sp, #12 + 446 .LCFI7: + 447 .cfi_def_cfa_offset 32 +3179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count, data, dataremaining; + 448 .loc 1 3179 3 is_stmt 1 view .LVU133 +3180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint8_t* tmp; + 449 .loc 1 3180 3 view .LVU134 +3181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp = hsd->pTxBuffPtr; + 450 .loc 1 3182 3 view .LVU135 + 451 .loc 1 3182 7 is_stmt 0 view .LVU136 + 452 0004 046A ldr r4, [r0, #32] + 453 .LVL50: +3183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining = hsd->TxXferSize; + 454 .loc 1 3183 3 is_stmt 1 view .LVU137 + 455 .loc 1 3183 17 is_stmt 0 view .LVU138 + 456 0006 466A ldr r6, [r0, #36] + 457 .LVL51: +3184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if (dataremaining > 0U) + 458 .loc 1 3185 3 is_stmt 1 view .LVU139 + 459 .loc 1 3185 6 is_stmt 0 view .LVU140 + 460 0008 DEB9 cbnz r6, .L35 + 461 .LVL52: + 462 .L31: +3186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Write data to SDMMC Tx FIFO */ +3188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** for(count = 0U; count < 8U; count++) +3189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { +3190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data = (uint32_t)(*tmp); +3191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; +3192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; +3193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tmp) << 8U); +3194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; +3195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; +3196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tmp) << 16U); +3197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; +3198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; +3199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tmp) << 24U); +3200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; +3201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; +3202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_WriteFIFO(hsd->Instance, &data); +3203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** +3205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->pTxBuffPtr = tmp; +3206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxXferSize = dataremaining; +3207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } +3208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 463 .loc 1 3208 1 view .LVU141 + 464 000a 03B0 add sp, sp, #12 + 465 .LCFI8: + 466 .cfi_remember_state + 467 .cfi_def_cfa_offset 20 + 468 @ sp needed + 469 000c F0BD pop {r4, r5, r6, r7, pc} + ARM GAS /tmp/ccQEYyKb.s page 67 + + + 470 .LVL53: + 471 .L34: + 472 .LCFI9: + 473 .cfi_restore_state +3190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 474 .loc 1 3190 7 is_stmt 1 discriminator 3 view .LVU142 +3190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 475 .loc 1 3190 25 is_stmt 0 discriminator 3 view .LVU143 + 476 000e 2378 ldrb r3, [r4] @ zero_extendqisi2 +3190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 477 .loc 1 3190 12 discriminator 3 view .LVU144 + 478 0010 0193 str r3, [sp, #4] +3191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 479 .loc 1 3191 7 is_stmt 1 discriminator 3 view .LVU145 + 480 .LVL54: +3192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tmp) << 8U); + 481 .loc 1 3192 7 discriminator 3 view .LVU146 +3193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 482 .loc 1 3193 7 discriminator 3 view .LVU147 +3193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 483 .loc 1 3193 27 is_stmt 0 discriminator 3 view .LVU148 + 484 0012 6278 ldrb r2, [r4, #1] @ zero_extendqisi2 +3193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 485 .loc 1 3193 12 discriminator 3 view .LVU149 + 486 0014 43EA0223 orr r3, r3, r2, lsl #8 + 487 0018 0193 str r3, [sp, #4] +3194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 488 .loc 1 3194 7 is_stmt 1 discriminator 3 view .LVU150 + 489 .LVL55: +3195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tmp) << 16U); + 490 .loc 1 3195 7 discriminator 3 view .LVU151 +3196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 491 .loc 1 3196 7 discriminator 3 view .LVU152 +3196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 492 .loc 1 3196 27 is_stmt 0 discriminator 3 view .LVU153 + 493 001a A278 ldrb r2, [r4, #2] @ zero_extendqisi2 +3196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 494 .loc 1 3196 12 discriminator 3 view .LVU154 + 495 001c 43EA0243 orr r3, r3, r2, lsl #16 + 496 0020 0193 str r3, [sp, #4] +3197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 497 .loc 1 3197 7 is_stmt 1 discriminator 3 view .LVU155 + 498 .LVL56: +3198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tmp) << 24U); + 499 .loc 1 3198 7 discriminator 3 view .LVU156 +3199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 500 .loc 1 3199 7 discriminator 3 view .LVU157 +3199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 501 .loc 1 3199 27 is_stmt 0 discriminator 3 view .LVU158 + 502 0022 E278 ldrb r2, [r4, #3] @ zero_extendqisi2 +3199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tmp++; + 503 .loc 1 3199 12 discriminator 3 view .LVU159 + 504 0024 43EA0263 orr r3, r3, r2, lsl #24 + 505 0028 0193 str r3, [sp, #4] +3200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 506 .loc 1 3200 7 is_stmt 1 discriminator 3 view .LVU160 +3200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + ARM GAS /tmp/ccQEYyKb.s page 68 + + + 507 .loc 1 3200 10 is_stmt 0 discriminator 3 view .LVU161 + 508 002a 0434 adds r4, r4, #4 + 509 .LVL57: +3201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_WriteFIFO(hsd->Instance, &data); + 510 .loc 1 3201 7 is_stmt 1 discriminator 3 view .LVU162 +3201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_WriteFIFO(hsd->Instance, &data); + 511 .loc 1 3201 20 is_stmt 0 discriminator 3 view .LVU163 + 512 002c 043E subs r6, r6, #4 + 513 .LVL58: +3202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 514 .loc 1 3202 7 is_stmt 1 discriminator 3 view .LVU164 +3202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 515 .loc 1 3202 13 is_stmt 0 discriminator 3 view .LVU165 + 516 002e 01A9 add r1, sp, #4 + 517 0030 3868 ldr r0, [r7] + 518 0032 FFF7FEFF bl SDMMC_WriteFIFO + 519 .LVL59: +3188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 520 .loc 1 3188 33 is_stmt 1 discriminator 3 view .LVU166 +3188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 521 .loc 1 3188 38 is_stmt 0 discriminator 3 view .LVU167 + 522 0036 0135 adds r5, r5, #1 + 523 .LVL60: + 524 .L32: +3188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 525 .loc 1 3188 21 is_stmt 1 discriminator 1 view .LVU168 +3188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 526 .loc 1 3188 5 is_stmt 0 discriminator 1 view .LVU169 + 527 0038 072D cmp r5, #7 + 528 003a E8D9 bls .L34 +3205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxXferSize = dataremaining; + 529 .loc 1 3205 5 is_stmt 1 view .LVU170 +3205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxXferSize = dataremaining; + 530 .loc 1 3205 21 is_stmt 0 view .LVU171 + 531 003c 3C62 str r4, [r7, #32] +3206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 532 .loc 1 3206 5 is_stmt 1 view .LVU172 +3206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 533 .loc 1 3206 21 is_stmt 0 view .LVU173 + 534 003e 7E62 str r6, [r7, #36] + 535 .loc 1 3208 1 view .LVU174 + 536 0040 E3E7 b .L31 + 537 .LVL61: + 538 .L35: + 539 .loc 1 3208 1 view .LVU175 + 540 0042 0746 mov r7, r0 +3188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 541 .loc 1 3188 15 view .LVU176 + 542 0044 0025 movs r5, #0 + 543 0046 F7E7 b .L32 + 544 .cfi_endproc + 545 .LFE182: + 547 .section .text.SD_SendSDStatus,"ax",%progbits + 548 .align 1 + 549 .syntax unified + 550 .thumb + 551 .thumb_func + ARM GAS /tmp/ccQEYyKb.s page 69 + + + 552 .fpu fpv5-d16 + 554 SD_SendSDStatus: + 555 .LVL62: + 556 .LFB176: +2813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 557 .loc 1 2813 1 is_stmt 1 view -0 + 558 .cfi_startproc + 559 @ args = 0, pretend = 0, frame = 24 + 560 @ frame_needed = 0, uses_anonymous_args = 0 +2813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 561 .loc 1 2813 1 is_stmt 0 view .LVU178 + 562 0000 F0B5 push {r4, r5, r6, r7, lr} + 563 .LCFI10: + 564 .cfi_def_cfa_offset 20 + 565 .cfi_offset 4, -20 + 566 .cfi_offset 5, -16 + 567 .cfi_offset 6, -12 + 568 .cfi_offset 7, -8 + 569 .cfi_offset 14, -4 + 570 0002 87B0 sub sp, sp, #28 + 571 .LCFI11: + 572 .cfi_def_cfa_offset 48 + 573 0004 0546 mov r5, r0 + 574 0006 0E46 mov r6, r1 +2814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 575 .loc 1 2814 3 is_stmt 1 view .LVU179 +2815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t tickstart = HAL_GetTick(); + 576 .loc 1 2815 3 view .LVU180 +2816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count; + 577 .loc 1 2816 3 view .LVU181 +2816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count; + 578 .loc 1 2816 24 is_stmt 0 view .LVU182 + 579 0008 FFF7FEFF bl HAL_GetTick + 580 .LVL63: +2816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count; + 581 .loc 1 2816 24 view .LVU183 + 582 000c 0746 mov r7, r0 + 583 .LVL64: +2817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t *pData = pSDstatus; + 584 .loc 1 2817 3 is_stmt 1 view .LVU184 +2818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 585 .loc 1 2818 3 view .LVU185 +2821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 586 .loc 1 2821 3 view .LVU186 +2821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 587 .loc 1 2821 7 is_stmt 0 view .LVU187 + 588 000e 0021 movs r1, #0 + 589 0010 2868 ldr r0, [r5] + 590 .LVL65: +2821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 591 .loc 1 2821 7 view .LVU188 + 592 0012 FFF7FEFF bl SDMMC_GetResponse + 593 .LVL66: +2821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 594 .loc 1 2821 5 view .LVU189 + 595 0016 10F0007F tst r0, #33554432 + 596 001a 66D1 bne .L48 + ARM GAS /tmp/ccQEYyKb.s page 70 + + +2827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 597 .loc 1 2827 3 is_stmt 1 view .LVU190 +2827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 598 .loc 1 2827 16 is_stmt 0 view .LVU191 + 599 001c 4021 movs r1, #64 + 600 001e 2868 ldr r0, [r5] + 601 0020 FFF7FEFF bl SDMMC_CmdBlockLength + 602 .LVL67: +2828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 603 .loc 1 2828 3 is_stmt 1 view .LVU192 +2828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 604 .loc 1 2828 5 is_stmt 0 view .LVU193 + 605 0024 0346 mov r3, r0 + 606 0026 10B1 cbz r0, .L39 +2830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; + 607 .loc 1 2830 5 is_stmt 1 view .LVU194 +2830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; + 608 .loc 1 2830 20 is_stmt 0 view .LVU195 + 609 0028 AA6B ldr r2, [r5, #56] + 610 002a AA63 str r2, [r5, #56] +2831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 611 .loc 1 2831 5 is_stmt 1 view .LVU196 +2831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 612 .loc 1 2831 12 is_stmt 0 view .LVU197 + 613 002c 5FE0 b .L37 + 614 .L39: +2835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 615 .loc 1 2835 3 is_stmt 1 view .LVU198 +2835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 616 .loc 1 2835 73 is_stmt 0 view .LVU199 + 617 002e 296D ldr r1, [r5, #80] +2835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 618 .loc 1 2835 16 view .LVU200 + 619 0030 0904 lsls r1, r1, #16 + 620 0032 2868 ldr r0, [r5] + 621 .LVL68: +2835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 622 .loc 1 2835 16 view .LVU201 + 623 0034 FFF7FEFF bl SDMMC_CmdAppCommand + 624 .LVL69: +2836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 625 .loc 1 2836 3 is_stmt 1 view .LVU202 +2836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 626 .loc 1 2836 5 is_stmt 0 view .LVU203 + 627 0038 0346 mov r3, r0 + 628 003a 10B1 cbz r0, .L40 +2838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; + 629 .loc 1 2838 5 is_stmt 1 view .LVU204 +2838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; + 630 .loc 1 2838 20 is_stmt 0 view .LVU205 + 631 003c AA6B ldr r2, [r5, #56] + 632 003e AA63 str r2, [r5, #56] +2839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 633 .loc 1 2839 5 is_stmt 1 view .LVU206 +2839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 634 .loc 1 2839 12 is_stmt 0 view .LVU207 + 635 0040 55E0 b .L37 + ARM GAS /tmp/ccQEYyKb.s page 71 + + + 636 .L40: +2843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = 64U; + 637 .loc 1 2843 3 is_stmt 1 view .LVU208 +2843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = 64U; + 638 .loc 1 2843 24 is_stmt 0 view .LVU209 + 639 0042 4FF0FF33 mov r3, #-1 + 640 0046 0093 str r3, [sp] +2844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_64B; + 641 .loc 1 2844 3 is_stmt 1 view .LVU210 +2844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_64B; + 642 .loc 1 2844 24 is_stmt 0 view .LVU211 + 643 0048 4023 movs r3, #64 + 644 004a 0193 str r3, [sp, #4] +2845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 645 .loc 1 2845 3 is_stmt 1 view .LVU212 +2845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 646 .loc 1 2845 24 is_stmt 0 view .LVU213 + 647 004c 6023 movs r3, #96 + 648 004e 0293 str r3, [sp, #8] +2846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 649 .loc 1 2846 3 is_stmt 1 view .LVU214 +2846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 650 .loc 1 2846 24 is_stmt 0 view .LVU215 + 651 0050 0223 movs r3, #2 + 652 0052 0393 str r3, [sp, #12] +2847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 653 .loc 1 2847 3 is_stmt 1 view .LVU216 +2847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 654 .loc 1 2847 24 is_stmt 0 view .LVU217 + 655 0054 0023 movs r3, #0 + 656 0056 0493 str r3, [sp, #16] +2848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 657 .loc 1 2848 3 is_stmt 1 view .LVU218 +2848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 658 .loc 1 2848 24 is_stmt 0 view .LVU219 + 659 0058 0123 movs r3, #1 + 660 005a 0593 str r3, [sp, #20] +2849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 661 .loc 1 2849 3 is_stmt 1 view .LVU220 +2849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 662 .loc 1 2849 9 is_stmt 0 view .LVU221 + 663 005c 6946 mov r1, sp + 664 005e 2868 ldr r0, [r5] + 665 .LVL70: +2849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 666 .loc 1 2849 9 view .LVU222 + 667 0060 FFF7FEFF bl SDMMC_ConfigData + 668 .LVL71: +2852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 669 .loc 1 2852 3 is_stmt 1 view .LVU223 +2852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 670 .loc 1 2852 16 is_stmt 0 view .LVU224 + 671 0064 2868 ldr r0, [r5] + 672 0066 FFF7FEFF bl SDMMC_CmdStatusRegister + 673 .LVL72: +2853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 674 .loc 1 2853 3 is_stmt 1 view .LVU225 + ARM GAS /tmp/ccQEYyKb.s page 72 + + +2853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 675 .loc 1 2853 5 is_stmt 0 view .LVU226 + 676 006a 0346 mov r3, r0 + 677 006c 80B1 cbz r0, .L41 +2855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; + 678 .loc 1 2855 5 is_stmt 1 view .LVU227 +2855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return errorstate; + 679 .loc 1 2855 20 is_stmt 0 view .LVU228 + 680 006e AA6B ldr r2, [r5, #56] + 681 0070 AA63 str r2, [r5, #56] +2856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 682 .loc 1 2856 5 is_stmt 1 view .LVU229 +2856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 683 .loc 1 2856 12 is_stmt 0 view .LVU230 + 684 0072 3CE0 b .L37 + 685 .LVL73: + 686 .L44: +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pData++; + 687 .loc 1 2866 9 is_stmt 1 discriminator 3 view .LVU231 +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pData++; + 688 .loc 1 2866 18 is_stmt 0 discriminator 3 view .LVU232 + 689 0074 2868 ldr r0, [r5] + 690 0076 FFF7FEFF bl SDMMC_ReadFIFO + 691 .LVL74: +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pData++; + 692 .loc 1 2866 16 discriminator 3 view .LVU233 + 693 007a 46F8040B str r0, [r6], #4 + 694 .LVL75: +2867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 695 .loc 1 2867 9 is_stmt 1 discriminator 3 view .LVU234 +2864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 696 .loc 1 2864 35 discriminator 3 view .LVU235 +2864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 697 .loc 1 2864 40 is_stmt 0 discriminator 3 view .LVU236 + 698 007e 0134 adds r4, r4, #1 + 699 .LVL76: + 700 .L42: +2864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 701 .loc 1 2864 23 is_stmt 1 discriminator 1 view .LVU237 +2864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 702 .loc 1 2864 7 is_stmt 0 discriminator 1 view .LVU238 + 703 0080 072C cmp r4, #7 + 704 0082 F7D9 bls .L44 + 705 .LVL77: + 706 .L43: +2871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 707 .loc 1 2871 5 is_stmt 1 view .LVU239 +2871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 708 .loc 1 2871 9 is_stmt 0 view .LVU240 + 709 0084 FFF7FEFF bl HAL_GetTick + 710 .LVL78: +2871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 711 .loc 1 2871 23 view .LVU241 + 712 0088 C01B subs r0, r0, r7 +2871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 713 .loc 1 2871 7 view .LVU242 + 714 008a B0F1FF3F cmp r0, #-1 + ARM GAS /tmp/ccQEYyKb.s page 73 + + + 715 008e 31D0 beq .L49 + 716 .L41: +2860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 717 .loc 1 2860 8 is_stmt 1 view .LVU243 +2860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 718 .loc 1 2860 10 is_stmt 0 view .LVU244 + 719 0090 2B68 ldr r3, [r5] + 720 0092 5C6B ldr r4, [r3, #52] + 721 0094 40F22A42 movw r2, #1066 +2860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 722 .loc 1 2860 8 view .LVU245 + 723 0098 1440 ands r4, r4, r2 + 724 009a 04D1 bne .L55 +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 725 .loc 1 2862 5 is_stmt 1 view .LVU246 +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 726 .loc 1 2862 8 is_stmt 0 view .LVU247 + 727 009c 5B6B ldr r3, [r3, #52] +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 728 .loc 1 2862 7 view .LVU248 + 729 009e 13F4004F tst r3, #32768 + 730 00a2 EFD0 beq .L43 + 731 00a4 ECE7 b .L42 + 732 .L55: +2877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 733 .loc 1 2877 3 is_stmt 1 view .LVU249 +2877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 734 .loc 1 2877 6 is_stmt 0 view .LVU250 + 735 00a6 5A6B ldr r2, [r3, #52] +2877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 736 .loc 1 2877 5 view .LVU251 + 737 00a8 12F0080F tst r2, #8 + 738 00ac 25D1 bne .L50 +2881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 739 .loc 1 2881 8 is_stmt 1 view .LVU252 +2881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 740 .loc 1 2881 11 is_stmt 0 view .LVU253 + 741 00ae 5A6B ldr r2, [r3, #52] +2881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 742 .loc 1 2881 10 view .LVU254 + 743 00b0 12F0020F tst r2, #2 + 744 00b4 23D1 bne .L51 +2885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 745 .loc 1 2885 8 is_stmt 1 view .LVU255 +2885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 746 .loc 1 2885 11 is_stmt 0 view .LVU256 + 747 00b6 5B6B ldr r3, [r3, #52] +2885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 748 .loc 1 2885 10 view .LVU257 + 749 00b8 13F0200F tst r3, #32 + 750 00bc 21D1 bne .L56 + 751 .L46: +2894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 752 .loc 1 2894 9 is_stmt 1 view .LVU258 +2894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 753 .loc 1 2894 11 is_stmt 0 view .LVU259 + 754 00be 2868 ldr r0, [r5] + ARM GAS /tmp/ccQEYyKb.s page 74 + + + 755 00c0 436B ldr r3, [r0, #52] +2894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 756 .loc 1 2894 9 view .LVU260 + 757 00c2 13F40013 ands r3, r3, #2097152 + 758 00c6 0CD0 beq .L57 +2896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pData++; + 759 .loc 1 2896 5 is_stmt 1 view .LVU261 +2896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pData++; + 760 .loc 1 2896 14 is_stmt 0 view .LVU262 + 761 00c8 FFF7FEFF bl SDMMC_ReadFIFO + 762 .LVL79: +2896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pData++; + 763 .loc 1 2896 12 view .LVU263 + 764 00cc 46F8040B str r0, [r6], #4 + 765 .LVL80: +2897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 766 .loc 1 2897 5 is_stmt 1 view .LVU264 +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 767 .loc 1 2899 5 view .LVU265 +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 768 .loc 1 2899 9 is_stmt 0 view .LVU266 + 769 00d0 FFF7FEFF bl HAL_GetTick + 770 .LVL81: +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 771 .loc 1 2899 23 view .LVU267 + 772 00d4 C01B subs r0, r0, r7 +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 773 .loc 1 2899 7 view .LVU268 + 774 00d6 B0F1FF3F cmp r0, #-1 + 775 00da F0D1 bne .L46 +2901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 776 .loc 1 2901 14 view .LVU269 + 777 00dc 4FF00043 mov r3, #-2147483648 + 778 00e0 05E0 b .L37 + 779 .L57: +2906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 780 .loc 1 2906 3 is_stmt 1 view .LVU270 + 781 00e2 40F23A52 movw r2, #1338 + 782 00e6 8263 str r2, [r0, #56] +2908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 783 .loc 1 2908 3 view .LVU271 +2908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 784 .loc 1 2908 10 is_stmt 0 view .LVU272 + 785 00e8 01E0 b .L37 + 786 .LVL82: + 787 .L48: +2823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 788 .loc 1 2823 12 view .LVU273 + 789 00ea 4FF40063 mov r3, #2048 + 790 .LVL83: + 791 .L37: +2909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 792 .loc 1 2909 1 view .LVU274 + 793 00ee 1846 mov r0, r3 + 794 00f0 07B0 add sp, sp, #28 + 795 .LCFI12: + 796 .cfi_remember_state + ARM GAS /tmp/ccQEYyKb.s page 75 + + + 797 .cfi_def_cfa_offset 20 + 798 @ sp needed + 799 00f2 F0BD pop {r4, r5, r6, r7, pc} + 800 .LVL84: + 801 .L49: + 802 .LCFI13: + 803 .cfi_restore_state +2873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 804 .loc 1 2873 14 view .LVU275 + 805 00f4 4FF00043 mov r3, #-2147483648 + 806 00f8 F9E7 b .L37 + 807 .L50: +2879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 808 .loc 1 2879 12 view .LVU276 + 809 00fa 0823 movs r3, #8 + 810 00fc F7E7 b .L37 + 811 .L51: +2883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 812 .loc 1 2883 12 view .LVU277 + 813 00fe 0223 movs r3, #2 + 814 0100 F5E7 b .L37 + 815 .L56: +2887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 816 .loc 1 2887 12 view .LVU278 + 817 0102 2023 movs r3, #32 + 818 0104 F3E7 b .L37 + 819 .cfi_endproc + 820 .LFE176: + 822 .section .text.SD_FindSCR,"ax",%progbits + 823 .align 1 + 824 .syntax unified + 825 .thumb + 826 .thumb_func + 827 .fpu fpv5-d16 + 829 SD_FindSCR: + 830 .LVL85: + 831 .LFB180: +3042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 832 .loc 1 3042 1 is_stmt 1 view -0 + 833 .cfi_startproc + 834 @ args = 0, pretend = 0, frame = 32 + 835 @ frame_needed = 0, uses_anonymous_args = 0 +3042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 836 .loc 1 3042 1 is_stmt 0 view .LVU280 + 837 0000 F0B5 push {r4, r5, r6, r7, lr} + 838 .LCFI14: + 839 .cfi_def_cfa_offset 20 + 840 .cfi_offset 4, -20 + 841 .cfi_offset 5, -16 + 842 .cfi_offset 6, -12 + 843 .cfi_offset 7, -8 + 844 .cfi_offset 14, -4 + 845 0002 89B0 sub sp, sp, #36 + 846 .LCFI15: + 847 .cfi_def_cfa_offset 56 + 848 0004 0446 mov r4, r0 + 849 0006 0F46 mov r7, r1 + ARM GAS /tmp/ccQEYyKb.s page 76 + + +3043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 850 .loc 1 3043 3 is_stmt 1 view .LVU281 +3044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t tickstart = HAL_GetTick(); + 851 .loc 1 3044 3 view .LVU282 +3045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t index = 0U; + 852 .loc 1 3045 3 view .LVU283 +3045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t index = 0U; + 853 .loc 1 3045 24 is_stmt 0 view .LVU284 + 854 0008 FFF7FEFF bl HAL_GetTick + 855 .LVL86: +3045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t index = 0U; + 856 .loc 1 3045 24 view .LVU285 + 857 000c 0646 mov r6, r0 + 858 .LVL87: +3046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t tempscr[2U] = {0U, 0U}; + 859 .loc 1 3046 3 is_stmt 1 view .LVU286 +3047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t *scr = pSCR; + 860 .loc 1 3047 3 view .LVU287 +3047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t *scr = pSCR; + 861 .loc 1 3047 12 is_stmt 0 view .LVU288 + 862 000e 0023 movs r3, #0 + 863 0010 0093 str r3, [sp] + 864 0012 0193 str r3, [sp, #4] +3048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 865 .loc 1 3048 3 is_stmt 1 view .LVU289 + 866 .LVL88: +3051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 867 .loc 1 3051 3 view .LVU290 +3051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 868 .loc 1 3051 16 is_stmt 0 view .LVU291 + 869 0014 0821 movs r1, #8 + 870 0016 2068 ldr r0, [r4] + 871 .LVL89: +3051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 872 .loc 1 3051 16 view .LVU292 + 873 0018 FFF7FEFF bl SDMMC_CmdBlockLength + 874 .LVL90: +3052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 875 .loc 1 3052 3 is_stmt 1 view .LVU293 +3052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 876 .loc 1 3052 5 is_stmt 0 view .LVU294 + 877 001c 0546 mov r5, r0 + 878 001e 10B1 cbz r0, .L70 + 879 .LVL91: + 880 .L58: +3130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 881 .loc 1 3130 1 view .LVU295 + 882 0020 2846 mov r0, r5 + 883 0022 09B0 add sp, sp, #36 + 884 .LCFI16: + 885 .cfi_remember_state + 886 .cfi_def_cfa_offset 20 + 887 @ sp needed + 888 0024 F0BD pop {r4, r5, r6, r7, pc} + 889 .LVL92: + 890 .L70: + 891 .LCFI17: + ARM GAS /tmp/ccQEYyKb.s page 77 + + + 892 .cfi_restore_state +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 893 .loc 1 3058 3 is_stmt 1 view .LVU296 +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 894 .loc 1 3058 74 is_stmt 0 view .LVU297 + 895 0026 216D ldr r1, [r4, #80] +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 896 .loc 1 3058 16 view .LVU298 + 897 0028 0904 lsls r1, r1, #16 + 898 002a 2068 ldr r0, [r4] + 899 .LVL93: +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 900 .loc 1 3058 16 view .LVU299 + 901 002c FFF7FEFF bl SDMMC_CmdAppCommand + 902 .LVL94: +3059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 903 .loc 1 3059 3 is_stmt 1 view .LVU300 +3059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 904 .loc 1 3059 5 is_stmt 0 view .LVU301 + 905 0030 0546 mov r5, r0 + 906 0032 0028 cmp r0, #0 + 907 0034 F4D1 bne .L58 +3064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = 8U; + 908 .loc 1 3064 3 is_stmt 1 view .LVU302 +3064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = 8U; + 909 .loc 1 3064 24 is_stmt 0 view .LVU303 + 910 0036 4FF0FF33 mov r3, #-1 + 911 003a 0293 str r3, [sp, #8] +3065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_8B; + 912 .loc 1 3065 3 is_stmt 1 view .LVU304 +3065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_8B; + 913 .loc 1 3065 24 is_stmt 0 view .LVU305 + 914 003c 0823 movs r3, #8 + 915 003e 0393 str r3, [sp, #12] +3066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 916 .loc 1 3066 3 is_stmt 1 view .LVU306 +3066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 917 .loc 1 3066 24 is_stmt 0 view .LVU307 + 918 0040 3023 movs r3, #48 + 919 0042 0493 str r3, [sp, #16] +3067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 920 .loc 1 3067 3 is_stmt 1 view .LVU308 +3067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 921 .loc 1 3067 24 is_stmt 0 view .LVU309 + 922 0044 0223 movs r3, #2 + 923 0046 0593 str r3, [sp, #20] +3068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 924 .loc 1 3068 3 is_stmt 1 view .LVU310 +3068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 925 .loc 1 3068 24 is_stmt 0 view .LVU311 + 926 0048 0023 movs r3, #0 + 927 004a 0693 str r3, [sp, #24] +3069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 928 .loc 1 3069 3 is_stmt 1 view .LVU312 +3069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 929 .loc 1 3069 24 is_stmt 0 view .LVU313 + 930 004c 0123 movs r3, #1 + ARM GAS /tmp/ccQEYyKb.s page 78 + + + 931 004e 0793 str r3, [sp, #28] +3070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 932 .loc 1 3070 3 is_stmt 1 view .LVU314 +3070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 933 .loc 1 3070 9 is_stmt 0 view .LVU315 + 934 0050 02A9 add r1, sp, #8 + 935 0052 2068 ldr r0, [r4] + 936 .LVL95: +3070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 937 .loc 1 3070 9 view .LVU316 + 938 0054 FFF7FEFF bl SDMMC_ConfigData + 939 .LVL96: +3073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 940 .loc 1 3073 3 is_stmt 1 view .LVU317 +3073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 941 .loc 1 3073 16 is_stmt 0 view .LVU318 + 942 0058 2068 ldr r0, [r4] + 943 005a FFF7FEFF bl SDMMC_CmdSendSCR + 944 .LVL97: +3074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 945 .loc 1 3074 3 is_stmt 1 view .LVU319 +3074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 946 .loc 1 3074 5 is_stmt 0 view .LVU320 + 947 005e 0546 mov r5, r0 + 948 0060 58B1 cbz r0, .L60 + 949 0062 DDE7 b .L58 + 950 .LVL98: + 951 .L71: +3083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** index++; + 952 .loc 1 3083 7 is_stmt 1 view .LVU321 +3083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** index++; + 953 .loc 1 3083 28 is_stmt 0 view .LVU322 + 954 0064 FFF7FEFF bl SDMMC_ReadFIFO + 955 .LVL99: +3083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** index++; + 956 .loc 1 3083 26 view .LVU323 + 957 0068 4DF82500 str r0, [sp, r5, lsl #2] +3084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 958 .loc 1 3084 7 is_stmt 1 view .LVU324 +3084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 959 .loc 1 3084 12 is_stmt 0 view .LVU325 + 960 006c 0135 adds r5, r5, #1 + 961 .LVL100: + 962 .L62: +3091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 963 .loc 1 3091 5 is_stmt 1 view .LVU326 +3091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 964 .loc 1 3091 9 is_stmt 0 view .LVU327 + 965 006e FFF7FEFF bl HAL_GetTick + 966 .LVL101: +3091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 967 .loc 1 3091 23 view .LVU328 + 968 0072 831B subs r3, r0, r6 +3091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 969 .loc 1 3091 7 view .LVU329 + 970 0074 B3F1FF3F cmp r3, #-1 + 971 0078 3FD0 beq .L68 + ARM GAS /tmp/ccQEYyKb.s page 79 + + + 972 .LVL102: + 973 .L60: +3079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 974 .loc 1 3079 8 is_stmt 1 view .LVU330 +3079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 975 .loc 1 3079 10 is_stmt 0 view .LVU331 + 976 007a 2068 ldr r0, [r4] + 977 007c 436B ldr r3, [r0, #52] +3079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 978 .loc 1 3079 8 view .LVU332 + 979 007e 13F02A0F tst r3, #42 + 980 0082 07D1 bne .L63 +3081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 981 .loc 1 3081 5 is_stmt 1 view .LVU333 +3081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 982 .loc 1 3081 8 is_stmt 0 view .LVU334 + 983 0084 436B ldr r3, [r0, #52] +3081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 984 .loc 1 3081 7 view .LVU335 + 985 0086 13F4001F tst r3, #2097152 + 986 008a EBD1 bne .L71 +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 987 .loc 1 3086 10 is_stmt 1 view .LVU336 +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 988 .loc 1 3086 14 is_stmt 0 view .LVU337 + 989 008c 436B ldr r3, [r0, #52] +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 990 .loc 1 3086 12 view .LVU338 + 991 008e 13F4005F tst r3, #8192 + 992 0092 ECD1 bne .L62 + 993 .L63: +3097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 994 .loc 1 3097 3 is_stmt 1 view .LVU339 +3097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 995 .loc 1 3097 6 is_stmt 0 view .LVU340 + 996 0094 436B ldr r3, [r0, #52] +3097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 997 .loc 1 3097 5 view .LVU341 + 998 0096 13F0080F tst r3, #8 + 999 009a 25D1 bne .L72 +3103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1000 .loc 1 3103 8 is_stmt 1 view .LVU342 +3103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1001 .loc 1 3103 11 is_stmt 0 view .LVU343 + 1002 009c 436B ldr r3, [r0, #52] +3103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1003 .loc 1 3103 10 view .LVU344 + 1004 009e 13F0020F tst r3, #2 + 1005 00a2 24D1 bne .L73 +3109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1006 .loc 1 3109 8 is_stmt 1 view .LVU345 +3109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1007 .loc 1 3109 11 is_stmt 0 view .LVU346 + 1008 00a4 456B ldr r5, [r0, #52] + 1009 .LVL103: +3109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1010 .loc 1 3109 10 view .LVU347 + ARM GAS /tmp/ccQEYyKb.s page 80 + + + 1011 00a6 15F02005 ands r5, r5, #32 + 1012 00aa 23D1 bne .L74 +3119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1013 .loc 1 3119 5 is_stmt 1 view .LVU348 + 1014 00ac 40F23A53 movw r3, #1338 + 1015 00b0 8363 str r3, [r0, #56] +3121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[1] & SDMMC_16TO23BITS) >> 8) | ((tempscr[1] & SDMMC_24TO31BITS) >> 24)); + 1016 .loc 1 3121 5 view .LVU349 +3121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[1] & SDMMC_16TO23BITS) >> 8) | ((tempscr[1] & SDMMC_24TO31BITS) >> 24)); + 1017 .loc 1 3121 22 is_stmt 0 view .LVU350 + 1018 00b2 019A ldr r2, [sp, #4] +3121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[1] & SDMMC_16TO23BITS) >> 8) | ((tempscr[1] & SDMMC_24TO31BITS) >> 24)); + 1019 .loc 1 3121 86 view .LVU351 + 1020 00b4 1302 lsls r3, r2, #8 + 1021 00b6 03F47F03 and r3, r3, #16711680 +3121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[1] & SDMMC_16TO23BITS) >> 8) | ((tempscr[1] & SDMMC_24TO31BITS) >> 24)); + 1022 .loc 1 3121 52 view .LVU352 + 1023 00ba 43EA0263 orr r3, r3, r2, lsl #24 +3122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** scr++; + 1024 .loc 1 3122 46 view .LVU353 + 1025 00be 110A lsrs r1, r2, #8 + 1026 00c0 01F47F41 and r1, r1, #65280 +3121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[1] & SDMMC_16TO23BITS) >> 8) | ((tempscr[1] & SDMMC_24TO31BITS) >> 24)); + 1027 .loc 1 3121 92 view .LVU354 + 1028 00c4 0B43 orrs r3, r3, r1 +3122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** scr++; + 1029 .loc 1 3122 52 view .LVU355 + 1030 00c6 43EA1263 orr r3, r3, r2, lsr #24 +3121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[1] & SDMMC_16TO23BITS) >> 8) | ((tempscr[1] & SDMMC_24TO31BITS) >> 24)); + 1031 .loc 1 3121 10 view .LVU356 + 1032 00ca 3B60 str r3, [r7] +3123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *scr = (((tempscr[0] & SDMMC_0TO7BITS) << 24) | ((tempscr[0] & SDMMC_8TO15BITS) << 8) |\ + 1033 .loc 1 3123 5 is_stmt 1 view .LVU357 + 1034 .LVL104: +3124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[0] & SDMMC_16TO23BITS) >> 8) | ((tempscr[0] & SDMMC_24TO31BITS) >> 24)); + 1035 .loc 1 3124 5 view .LVU358 +3124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[0] & SDMMC_16TO23BITS) >> 8) | ((tempscr[0] & SDMMC_24TO31BITS) >> 24)); + 1036 .loc 1 3124 22 is_stmt 0 view .LVU359 + 1037 00cc 009A ldr r2, [sp] +3124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[0] & SDMMC_16TO23BITS) >> 8) | ((tempscr[0] & SDMMC_24TO31BITS) >> 24)); + 1038 .loc 1 3124 86 view .LVU360 + 1039 00ce 1302 lsls r3, r2, #8 + 1040 00d0 03F47F03 and r3, r3, #16711680 +3124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[0] & SDMMC_16TO23BITS) >> 8) | ((tempscr[0] & SDMMC_24TO31BITS) >> 24)); + 1041 .loc 1 3124 52 view .LVU361 + 1042 00d4 43EA0263 orr r3, r3, r2, lsl #24 +3125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1043 .loc 1 3125 46 view .LVU362 + 1044 00d8 110A lsrs r1, r2, #8 + 1045 00da 01F47F41 and r1, r1, #65280 +3124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[0] & SDMMC_16TO23BITS) >> 8) | ((tempscr[0] & SDMMC_24TO31BITS) >> 24)); + 1046 .loc 1 3124 92 view .LVU363 + 1047 00de 0B43 orrs r3, r3, r1 +3125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1048 .loc 1 3125 52 view .LVU364 + 1049 00e0 43EA1263 orr r3, r3, r2, lsr #24 +3124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((tempscr[0] & SDMMC_16TO23BITS) >> 8) | ((tempscr[0] & SDMMC_24TO31BITS) >> 24)); + ARM GAS /tmp/ccQEYyKb.s page 81 + + + 1050 .loc 1 3124 10 view .LVU365 + 1051 00e4 7B60 str r3, [r7, #4] +3129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1052 .loc 1 3129 3 is_stmt 1 view .LVU366 +3129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1053 .loc 1 3129 10 is_stmt 0 view .LVU367 + 1054 00e6 9BE7 b .L58 + 1055 .LVL105: + 1056 .L72: +3099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1057 .loc 1 3099 5 is_stmt 1 view .LVU368 + 1058 00e8 0825 movs r5, #8 + 1059 .LVL106: +3099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1060 .loc 1 3099 5 is_stmt 0 view .LVU369 + 1061 00ea 8563 str r5, [r0, #56] +3101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1062 .loc 1 3101 5 is_stmt 1 view .LVU370 +3101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1063 .loc 1 3101 12 is_stmt 0 view .LVU371 + 1064 00ec 98E7 b .L58 + 1065 .LVL107: + 1066 .L73: +3105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1067 .loc 1 3105 5 is_stmt 1 view .LVU372 + 1068 00ee 0225 movs r5, #2 + 1069 .LVL108: +3105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1070 .loc 1 3105 5 is_stmt 0 view .LVU373 + 1071 00f0 8563 str r5, [r0, #56] +3107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1072 .loc 1 3107 5 is_stmt 1 view .LVU374 +3107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1073 .loc 1 3107 12 is_stmt 0 view .LVU375 + 1074 00f2 95E7 b .L58 + 1075 .L74: +3111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1076 .loc 1 3111 5 is_stmt 1 view .LVU376 + 1077 00f4 2025 movs r5, #32 + 1078 00f6 8563 str r5, [r0, #56] +3113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1079 .loc 1 3113 5 view .LVU377 +3113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1080 .loc 1 3113 12 is_stmt 0 view .LVU378 + 1081 00f8 92E7 b .L58 + 1082 .LVL109: + 1083 .L68: +3093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1084 .loc 1 3093 14 view .LVU379 + 1085 00fa 4FF00045 mov r5, #-2147483648 + 1086 .LVL110: +3093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1087 .loc 1 3093 14 view .LVU380 + 1088 00fe 8FE7 b .L58 + 1089 .cfi_endproc + 1090 .LFE180: + 1092 .section .text.SD_WideBus_Enable,"ax",%progbits + ARM GAS /tmp/ccQEYyKb.s page 82 + + + 1093 .align 1 + 1094 .syntax unified + 1095 .thumb + 1096 .thumb_func + 1097 .fpu fpv5-d16 + 1099 SD_WideBus_Enable: + 1100 .LVL111: + 1101 .LFB178: +2946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t scr[2U] = {0U, 0U}; + 1102 .loc 1 2946 1 is_stmt 1 view -0 + 1103 .cfi_startproc + 1104 @ args = 0, pretend = 0, frame = 8 + 1105 @ frame_needed = 0, uses_anonymous_args = 0 +2946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t scr[2U] = {0U, 0U}; + 1106 .loc 1 2946 1 is_stmt 0 view .LVU382 + 1107 0000 10B5 push {r4, lr} + 1108 .LCFI18: + 1109 .cfi_def_cfa_offset 8 + 1110 .cfi_offset 4, -8 + 1111 .cfi_offset 14, -4 + 1112 0002 82B0 sub sp, sp, #8 + 1113 .LCFI19: + 1114 .cfi_def_cfa_offset 16 + 1115 0004 0446 mov r4, r0 +2947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 1116 .loc 1 2947 3 is_stmt 1 view .LVU383 +2947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 1117 .loc 1 2947 12 is_stmt 0 view .LVU384 + 1118 0006 0021 movs r1, #0 + 1119 0008 0091 str r1, [sp] + 1120 000a 0191 str r1, [sp, #4] +2948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1121 .loc 1 2948 3 is_stmt 1 view .LVU385 +2950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1122 .loc 1 2950 3 view .LVU386 +2950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1123 .loc 1 2950 7 is_stmt 0 view .LVU387 + 1124 000c 0068 ldr r0, [r0] + 1125 .LVL112: +2950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1126 .loc 1 2950 7 view .LVU388 + 1127 000e FFF7FEFF bl SDMMC_GetResponse + 1128 .LVL113: +2950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1129 .loc 1 2950 5 view .LVU389 + 1130 0012 10F0007F tst r0, #33554432 + 1131 0016 13D1 bne .L77 +2956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1132 .loc 1 2956 3 is_stmt 1 view .LVU390 +2956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1133 .loc 1 2956 16 is_stmt 0 view .LVU391 + 1134 0018 6946 mov r1, sp + 1135 001a 2046 mov r0, r4 + 1136 001c FFF7FEFF bl SD_FindSCR + 1137 .LVL114: +2957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1138 .loc 1 2957 3 is_stmt 1 view .LVU392 + ARM GAS /tmp/ccQEYyKb.s page 83 + + +2957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1139 .loc 1 2957 5 is_stmt 0 view .LVU393 + 1140 0020 80B9 cbnz r0, .L75 +2963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1141 .loc 1 2963 3 is_stmt 1 view .LVU394 +2963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1142 .loc 1 2963 5 is_stmt 0 view .LVU395 + 1143 0022 019B ldr r3, [sp, #4] + 1144 0024 13F4802F tst r3, #262144 + 1145 0028 0ED0 beq .L78 +2966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1146 .loc 1 2966 5 is_stmt 1 view .LVU396 +2966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1147 .loc 1 2966 75 is_stmt 0 view .LVU397 + 1148 002a 216D ldr r1, [r4, #80] +2966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1149 .loc 1 2966 18 view .LVU398 + 1150 002c 0904 lsls r1, r1, #16 + 1151 002e 2068 ldr r0, [r4] + 1152 .LVL115: +2966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1153 .loc 1 2966 18 view .LVU399 + 1154 0030 FFF7FEFF bl SDMMC_CmdAppCommand + 1155 .LVL116: +2967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1156 .loc 1 2967 5 is_stmt 1 view .LVU400 +2967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1157 .loc 1 2967 7 is_stmt 0 view .LVU401 + 1158 0034 30B9 cbnz r0, .L75 +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1159 .loc 1 2973 5 is_stmt 1 view .LVU402 +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1160 .loc 1 2973 18 is_stmt 0 view .LVU403 + 1161 0036 0221 movs r1, #2 + 1162 0038 2068 ldr r0, [r4] + 1163 .LVL117: +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1164 .loc 1 2973 18 view .LVU404 + 1165 003a FFF7FEFF bl SDMMC_CmdBusWidth + 1166 .LVL118: +2974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1167 .loc 1 2974 5 is_stmt 1 view .LVU405 + 1168 003e 01E0 b .L75 + 1169 .LVL119: + 1170 .L77: +2952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1171 .loc 1 2952 12 is_stmt 0 view .LVU406 + 1172 0040 4FF40060 mov r0, #2048 + 1173 .L75: +2985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1174 .loc 1 2985 1 view .LVU407 + 1175 0044 02B0 add sp, sp, #8 + 1176 .LCFI20: + 1177 .cfi_remember_state + 1178 .cfi_def_cfa_offset 8 + 1179 @ sp needed + 1180 0046 10BD pop {r4, pc} + ARM GAS /tmp/ccQEYyKb.s page 84 + + + 1181 .LVL120: + 1182 .L78: + 1183 .LCFI21: + 1184 .cfi_restore_state +2983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1185 .loc 1 2983 12 view .LVU408 + 1186 0048 4FF08060 mov r0, #67108864 + 1187 .LVL121: +2983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1188 .loc 1 2983 12 view .LVU409 + 1189 004c FAE7 b .L75 + 1190 .cfi_endproc + 1191 .LFE178: + 1193 .section .text.SD_WideBus_Disable,"ax",%progbits + 1194 .align 1 + 1195 .syntax unified + 1196 .thumb + 1197 .thumb_func + 1198 .fpu fpv5-d16 + 1200 SD_WideBus_Disable: + 1201 .LVL122: + 1202 .LFB179: +2993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t scr[2U] = {0U, 0U}; + 1203 .loc 1 2993 1 is_stmt 1 view -0 + 1204 .cfi_startproc + 1205 @ args = 0, pretend = 0, frame = 8 + 1206 @ frame_needed = 0, uses_anonymous_args = 0 +2993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t scr[2U] = {0U, 0U}; + 1207 .loc 1 2993 1 is_stmt 0 view .LVU411 + 1208 0000 10B5 push {r4, lr} + 1209 .LCFI22: + 1210 .cfi_def_cfa_offset 8 + 1211 .cfi_offset 4, -8 + 1212 .cfi_offset 14, -4 + 1213 0002 82B0 sub sp, sp, #8 + 1214 .LCFI23: + 1215 .cfi_def_cfa_offset 16 + 1216 0004 0446 mov r4, r0 +2994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 1217 .loc 1 2994 3 is_stmt 1 view .LVU412 +2994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 1218 .loc 1 2994 12 is_stmt 0 view .LVU413 + 1219 0006 0021 movs r1, #0 + 1220 0008 0091 str r1, [sp] + 1221 000a 0191 str r1, [sp, #4] +2995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1222 .loc 1 2995 3 is_stmt 1 view .LVU414 +2997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1223 .loc 1 2997 3 view .LVU415 +2997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1224 .loc 1 2997 7 is_stmt 0 view .LVU416 + 1225 000c 0068 ldr r0, [r0] + 1226 .LVL123: +2997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1227 .loc 1 2997 7 view .LVU417 + 1228 000e FFF7FEFF bl SDMMC_GetResponse + 1229 .LVL124: + ARM GAS /tmp/ccQEYyKb.s page 85 + + +2997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1230 .loc 1 2997 5 view .LVU418 + 1231 0012 10F0007F tst r0, #33554432 + 1232 0016 13D1 bne .L82 +3003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1233 .loc 1 3003 3 is_stmt 1 view .LVU419 +3003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1234 .loc 1 3003 16 is_stmt 0 view .LVU420 + 1235 0018 6946 mov r1, sp + 1236 001a 2046 mov r0, r4 + 1237 001c FFF7FEFF bl SD_FindSCR + 1238 .LVL125: +3004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1239 .loc 1 3004 3 is_stmt 1 view .LVU421 +3004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1240 .loc 1 3004 5 is_stmt 0 view .LVU422 + 1241 0020 80B9 cbnz r0, .L80 +3010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1242 .loc 1 3010 3 is_stmt 1 view .LVU423 +3010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1243 .loc 1 3010 5 is_stmt 0 view .LVU424 + 1244 0022 019B ldr r3, [sp, #4] + 1245 0024 13F4803F tst r3, #65536 + 1246 0028 0ED0 beq .L83 +3013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1247 .loc 1 3013 5 is_stmt 1 view .LVU425 +3013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1248 .loc 1 3013 75 is_stmt 0 view .LVU426 + 1249 002a 216D ldr r1, [r4, #80] +3013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1250 .loc 1 3013 18 view .LVU427 + 1251 002c 0904 lsls r1, r1, #16 + 1252 002e 2068 ldr r0, [r4] + 1253 .LVL126: +3013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1254 .loc 1 3013 18 view .LVU428 + 1255 0030 FFF7FEFF bl SDMMC_CmdAppCommand + 1256 .LVL127: +3014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1257 .loc 1 3014 5 is_stmt 1 view .LVU429 +3014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1258 .loc 1 3014 7 is_stmt 0 view .LVU430 + 1259 0034 30B9 cbnz r0, .L80 +3020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1260 .loc 1 3020 5 is_stmt 1 view .LVU431 +3020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1261 .loc 1 3020 18 is_stmt 0 view .LVU432 + 1262 0036 0021 movs r1, #0 + 1263 0038 2068 ldr r0, [r4] + 1264 .LVL128: +3020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1265 .loc 1 3020 18 view .LVU433 + 1266 003a FFF7FEFF bl SDMMC_CmdBusWidth + 1267 .LVL129: +3021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1268 .loc 1 3021 5 is_stmt 1 view .LVU434 + 1269 003e 01E0 b .L80 + ARM GAS /tmp/ccQEYyKb.s page 86 + + + 1270 .LVL130: + 1271 .L82: +2999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1272 .loc 1 2999 12 is_stmt 0 view .LVU435 + 1273 0040 4FF40060 mov r0, #2048 + 1274 .L80: +3032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1275 .loc 1 3032 1 view .LVU436 + 1276 0044 02B0 add sp, sp, #8 + 1277 .LCFI24: + 1278 .cfi_remember_state + 1279 .cfi_def_cfa_offset 8 + 1280 @ sp needed + 1281 0046 10BD pop {r4, pc} + 1282 .LVL131: + 1283 .L83: + 1284 .LCFI25: + 1285 .cfi_restore_state +3030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1286 .loc 1 3030 12 view .LVU437 + 1287 0048 4FF08060 mov r0, #67108864 + 1288 .LVL132: +3030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1289 .loc 1 3030 12 view .LVU438 + 1290 004c FAE7 b .L80 + 1291 .cfi_endproc + 1292 .LFE179: + 1294 .section .text.SD_SendStatus,"ax",%progbits + 1295 .align 1 + 1296 .syntax unified + 1297 .thumb + 1298 .thumb_func + 1299 .fpu fpv5-d16 + 1301 SD_SendStatus: + 1302 .LVL133: + 1303 .LFB177: +2919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 1304 .loc 1 2919 1 is_stmt 1 view -0 + 1305 .cfi_startproc + 1306 @ args = 0, pretend = 0, frame = 0 + 1307 @ frame_needed = 0, uses_anonymous_args = 0 +2919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 1308 .loc 1 2919 1 is_stmt 0 view .LVU440 + 1309 0000 70B5 push {r4, r5, r6, lr} + 1310 .LCFI26: + 1311 .cfi_def_cfa_offset 16 + 1312 .cfi_offset 4, -16 + 1313 .cfi_offset 5, -12 + 1314 .cfi_offset 6, -8 + 1315 .cfi_offset 14, -4 +2920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1316 .loc 1 2920 3 is_stmt 1 view .LVU441 +2922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1317 .loc 1 2922 3 view .LVU442 +2922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1318 .loc 1 2922 5 is_stmt 0 view .LVU443 + 1319 0002 81B1 cbz r1, .L87 + ARM GAS /tmp/ccQEYyKb.s page 87 + + + 1320 0004 0446 mov r4, r0 + 1321 0006 0E46 mov r6, r1 +2928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1322 .loc 1 2928 3 is_stmt 1 view .LVU444 +2928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1323 .loc 1 2928 73 is_stmt 0 view .LVU445 + 1324 0008 016D ldr r1, [r0, #80] + 1325 .LVL134: +2928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1326 .loc 1 2928 16 view .LVU446 + 1327 000a 0904 lsls r1, r1, #16 + 1328 000c 0068 ldr r0, [r0] + 1329 .LVL135: +2928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1330 .loc 1 2928 16 view .LVU447 + 1331 000e FFF7FEFF bl SDMMC_CmdSendStatus + 1332 .LVL136: +2929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1333 .loc 1 2929 3 is_stmt 1 view .LVU448 +2929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1334 .loc 1 2929 5 is_stmt 0 view .LVU449 + 1335 0012 0546 mov r5, r0 + 1336 0014 08B1 cbz r0, .L89 + 1337 .LVL137: + 1338 .L85: +2938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1339 .loc 1 2938 1 view .LVU450 + 1340 0016 2846 mov r0, r5 + 1341 0018 70BD pop {r4, r5, r6, pc} + 1342 .LVL138: + 1343 .L89: +2935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1344 .loc 1 2935 3 is_stmt 1 view .LVU451 +2935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1345 .loc 1 2935 18 is_stmt 0 view .LVU452 + 1346 001a 0021 movs r1, #0 + 1347 001c 2068 ldr r0, [r4] + 1348 .LVL139: +2935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1349 .loc 1 2935 18 view .LVU453 + 1350 001e FFF7FEFF bl SDMMC_GetResponse + 1351 .LVL140: +2935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1352 .loc 1 2935 16 view .LVU454 + 1353 0022 3060 str r0, [r6] +2937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1354 .loc 1 2937 3 is_stmt 1 view .LVU455 +2937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1355 .loc 1 2937 10 is_stmt 0 view .LVU456 + 1356 0024 F7E7 b .L85 + 1357 .LVL141: + 1358 .L87: +2924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1359 .loc 1 2924 12 view .LVU457 + 1360 0026 4FF00065 mov r5, #134217728 + 1361 002a F4E7 b .L85 + 1362 .cfi_endproc + ARM GAS /tmp/ccQEYyKb.s page 88 + + + 1363 .LFE177: + 1365 .section .text.HAL_SD_MspInit,"ax",%progbits + 1366 .align 1 + 1367 .weak HAL_SD_MspInit + 1368 .syntax unified + 1369 .thumb + 1370 .thumb_func + 1371 .fpu fpv5-d16 + 1373 HAL_SD_MspInit: + 1374 .LVL142: + 1375 .LFB144: + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ + 1376 .loc 1 515 1 is_stmt 1 view -0 + 1377 .cfi_startproc + 1378 @ args = 0, pretend = 0, frame = 0 + 1379 @ frame_needed = 0, uses_anonymous_args = 0 + 1380 @ link register save eliminated. + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1381 .loc 1 517 3 view .LVU459 + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1382 .loc 1 522 1 is_stmt 0 view .LVU460 + 1383 0000 7047 bx lr + 1384 .cfi_endproc + 1385 .LFE144: + 1387 .section .text.HAL_SD_MspDeInit,"ax",%progbits + 1388 .align 1 + 1389 .weak HAL_SD_MspDeInit + 1390 .syntax unified + 1391 .thumb + 1392 .thumb_func + 1393 .fpu fpv5-d16 + 1395 HAL_SD_MspDeInit: + 1396 .LVL143: + 1397 .LFB145: + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ + 1398 .loc 1 530 1 is_stmt 1 view -0 + 1399 .cfi_startproc + 1400 @ args = 0, pretend = 0, frame = 0 + 1401 @ frame_needed = 0, uses_anonymous_args = 0 + 1402 @ link register save eliminated. + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1403 .loc 1 532 3 view .LVU462 + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1404 .loc 1 537 1 is_stmt 0 view .LVU463 + 1405 0000 7047 bx lr + 1406 .cfi_endproc + 1407 .LFE145: + 1409 .section .text.HAL_SD_DeInit,"ax",%progbits + 1410 .align 1 + 1411 .global HAL_SD_DeInit + 1412 .syntax unified + 1413 .thumb + 1414 .thumb_func + 1415 .fpu fpv5-d16 + 1417 HAL_SD_DeInit: + 1418 .LVL144: + 1419 .LFB143: + ARM GAS /tmp/ccQEYyKb.s page 89 + + + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check the SD handle allocation */ + 1420 .loc 1 474 1 is_stmt 1 view -0 + 1421 .cfi_startproc + 1422 @ args = 0, pretend = 0, frame = 0 + 1423 @ frame_needed = 0, uses_anonymous_args = 0 + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1424 .loc 1 476 3 view .LVU465 + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1425 .loc 1 476 5 is_stmt 0 view .LVU466 + 1426 0000 70B1 cbz r0, .L94 + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check the SD handle allocation */ + 1427 .loc 1 474 1 view .LVU467 + 1428 0002 10B5 push {r4, lr} + 1429 .LCFI27: + 1430 .cfi_def_cfa_offset 8 + 1431 .cfi_offset 4, -8 + 1432 .cfi_offset 14, -4 + 1433 0004 0446 mov r4, r0 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1434 .loc 1 482 3 is_stmt 1 view .LVU468 + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1435 .loc 1 484 3 view .LVU469 + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1436 .loc 1 484 14 is_stmt 0 view .LVU470 + 1437 0006 0323 movs r3, #3 + 1438 0008 80F83430 strb r3, [r0, #52] + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1439 .loc 1 487 3 is_stmt 1 view .LVU471 + 1440 000c FFF7FEFF bl SD_PowerOFF + 1441 .LVL145: + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 1442 .loc 1 499 3 view .LVU472 + 1443 0010 2046 mov r0, r4 + 1444 0012 FFF7FEFF bl HAL_SD_MspDeInit + 1445 .LVL146: + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_RESET; + 1446 .loc 1 502 3 view .LVU473 + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_RESET; + 1447 .loc 1 502 18 is_stmt 0 view .LVU474 + 1448 0016 0020 movs r0, #0 + 1449 0018 A063 str r0, [r4, #56] + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1450 .loc 1 503 3 is_stmt 1 view .LVU475 + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1451 .loc 1 503 14 is_stmt 0 view .LVU476 + 1452 001a 84F83400 strb r0, [r4, #52] + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1453 .loc 1 505 3 is_stmt 1 view .LVU477 + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1454 .loc 1 506 1 is_stmt 0 view .LVU478 + 1455 001e 10BD pop {r4, pc} + 1456 .LVL147: + 1457 .L94: + 1458 .LCFI28: + 1459 .cfi_def_cfa_offset 0 + 1460 .cfi_restore 4 + 1461 .cfi_restore 14 + ARM GAS /tmp/ccQEYyKb.s page 90 + + + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1462 .loc 1 478 12 view .LVU479 + 1463 0020 0120 movs r0, #1 + 1464 .LVL148: + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1465 .loc 1 506 1 view .LVU480 + 1466 0022 7047 bx lr + 1467 .cfi_endproc + 1468 .LFE143: + 1470 .section .text.HAL_SD_ReadBlocks,"ax",%progbits + 1471 .align 1 + 1472 .global HAL_SD_ReadBlocks + 1473 .syntax unified + 1474 .thumb + 1475 .thumb_func + 1476 .fpu fpv5-d16 + 1478 HAL_SD_ReadBlocks: + 1479 .LVL149: + 1480 .LFB146: + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 1481 .loc 1 571 1 is_stmt 1 view -0 + 1482 .cfi_startproc + 1483 @ args = 4, pretend = 0, frame = 24 + 1484 @ frame_needed = 0, uses_anonymous_args = 0 + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 1485 .loc 1 571 1 is_stmt 0 view .LVU482 + 1486 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 1487 .LCFI29: + 1488 .cfi_def_cfa_offset 36 + 1489 .cfi_offset 4, -36 + 1490 .cfi_offset 5, -32 + 1491 .cfi_offset 6, -28 + 1492 .cfi_offset 7, -24 + 1493 .cfi_offset 8, -20 + 1494 .cfi_offset 9, -16 + 1495 .cfi_offset 10, -12 + 1496 .cfi_offset 11, -8 + 1497 .cfi_offset 14, -4 + 1498 0004 87B0 sub sp, sp, #28 + 1499 .LCFI30: + 1500 .cfi_def_cfa_offset 64 + 1501 0006 0546 mov r5, r0 + 1502 0008 0C46 mov r4, r1 + 1503 000a 1646 mov r6, r2 + 1504 000c 9B46 mov fp, r3 + 1505 000e DDF840A0 ldr r10, [sp, #64] + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 1506 .loc 1 572 3 is_stmt 1 view .LVU483 + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t tickstart = HAL_GetTick(); + 1507 .loc 1 573 3 view .LVU484 + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count, data, dataremaining; + 1508 .loc 1 574 3 view .LVU485 + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count, data, dataremaining; + 1509 .loc 1 574 24 is_stmt 0 view .LVU486 + 1510 0012 FFF7FEFF bl HAL_GetTick + 1511 .LVL150: + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; + ARM GAS /tmp/ccQEYyKb.s page 91 + + + 1512 .loc 1 575 3 is_stmt 1 view .LVU487 + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint8_t *tempbuff = pData; + 1513 .loc 1 576 3 view .LVU488 + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1514 .loc 1 577 3 view .LVU489 + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1515 .loc 1 579 3 view .LVU490 + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1516 .loc 1 579 5 is_stmt 0 view .LVU491 + 1517 0016 002C cmp r4, #0 + 1518 0018 36D0 beq .L122 + 1519 001a 8146 mov r9, r0 + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1520 .loc 1 585 3 is_stmt 1 view .LVU492 + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1521 .loc 1 585 9 is_stmt 0 view .LVU493 + 1522 001c 95F83470 ldrb r7, [r5, #52] @ zero_extendqisi2 + 1523 0020 FFB2 uxtb r7, r7 + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1524 .loc 1 585 5 view .LVU494 + 1525 0022 012F cmp r7, #1 + 1526 0024 40F00481 bne .L102 + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1527 .loc 1 587 5 is_stmt 1 view .LVU495 + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1528 .loc 1 587 20 is_stmt 0 view .LVU496 + 1529 0028 0023 movs r3, #0 + 1530 002a AB63 str r3, [r5, #56] + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1531 .loc 1 589 5 is_stmt 1 view .LVU497 + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1532 .loc 1 589 13 is_stmt 0 view .LVU498 + 1533 002c 06EB0B03 add r3, r6, fp + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1534 .loc 1 589 45 view .LVU499 + 1535 0030 EA6D ldr r2, [r5, #92] + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1536 .loc 1 589 7 view .LVU500 + 1537 0032 9342 cmp r3, r2 + 1538 0034 2ED8 bhi .L123 + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1539 .loc 1 595 5 is_stmt 1 view .LVU501 + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1540 .loc 1 595 16 is_stmt 0 view .LVU502 + 1541 0036 0323 movs r3, #3 + 1542 0038 85F83430 strb r3, [r5, #52] + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1543 .loc 1 598 5 is_stmt 1 view .LVU503 + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1544 .loc 1 598 8 is_stmt 0 view .LVU504 + 1545 003c 2B68 ldr r3, [r5] + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1546 .loc 1 598 26 view .LVU505 + 1547 003e 0022 movs r2, #0 + 1548 0040 DA62 str r2, [r3, #44] + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1549 .loc 1 600 5 is_stmt 1 view .LVU506 + ARM GAS /tmp/ccQEYyKb.s page 92 + + + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1550 .loc 1 600 19 is_stmt 0 view .LVU507 + 1551 0042 6B6C ldr r3, [r5, #68] + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1552 .loc 1 600 7 view .LVU508 + 1553 0044 012B cmp r3, #1 + 1554 0046 00D0 beq .L104 + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1555 .loc 1 602 7 is_stmt 1 view .LVU509 + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1556 .loc 1 602 11 is_stmt 0 view .LVU510 + 1557 0048 7602 lsls r6, r6, #9 + 1558 .LVL151: + 1559 .L104: + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = NumberOfBlocks * BLOCKSIZE; + 1560 .loc 1 606 5 is_stmt 1 view .LVU511 + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = NumberOfBlocks * BLOCKSIZE; + 1561 .loc 1 606 26 is_stmt 0 view .LVU512 + 1562 004a 4FF0FF33 mov r3, #-1 + 1563 004e 0093 str r3, [sp] + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 1564 .loc 1 607 5 is_stmt 1 view .LVU513 + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 1565 .loc 1 607 43 is_stmt 0 view .LVU514 + 1566 0050 4FEA4B23 lsl r3, fp, #9 + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 1567 .loc 1 607 26 view .LVU515 + 1568 0054 0193 str r3, [sp, #4] + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 1569 .loc 1 608 5 is_stmt 1 view .LVU516 + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 1570 .loc 1 608 26 is_stmt 0 view .LVU517 + 1571 0056 9023 movs r3, #144 + 1572 0058 0293 str r3, [sp, #8] + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 1573 .loc 1 609 5 is_stmt 1 view .LVU518 + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 1574 .loc 1 609 26 is_stmt 0 view .LVU519 + 1575 005a 0223 movs r3, #2 + 1576 005c 0393 str r3, [sp, #12] + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 1577 .loc 1 610 5 is_stmt 1 view .LVU520 + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 1578 .loc 1 610 26 is_stmt 0 view .LVU521 + 1579 005e 0023 movs r3, #0 + 1580 0060 0493 str r3, [sp, #16] + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 1581 .loc 1 611 5 is_stmt 1 view .LVU522 + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 1582 .loc 1 611 26 is_stmt 0 view .LVU523 + 1583 0062 0123 movs r3, #1 + 1584 0064 0593 str r3, [sp, #20] + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1585 .loc 1 612 5 is_stmt 1 view .LVU524 + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1586 .loc 1 612 11 is_stmt 0 view .LVU525 + 1587 0066 6946 mov r1, sp + ARM GAS /tmp/ccQEYyKb.s page 93 + + + 1588 0068 2868 ldr r0, [r5] + 1589 .LVL152: + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1590 .loc 1 612 11 view .LVU526 + 1591 006a FFF7FEFF bl SDMMC_ConfigData + 1592 .LVL153: + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1593 .loc 1 615 5 is_stmt 1 view .LVU527 + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1594 .loc 1 615 7 is_stmt 0 view .LVU528 + 1595 006e BBF1010F cmp fp, #1 + 1596 0072 14D9 bls .L105 + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1597 .loc 1 617 7 is_stmt 1 view .LVU529 + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1598 .loc 1 617 20 is_stmt 0 view .LVU530 + 1599 0074 0223 movs r3, #2 + 1600 0076 2B63 str r3, [r5, #48] + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1601 .loc 1 620 7 is_stmt 1 view .LVU531 + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1602 .loc 1 620 20 is_stmt 0 view .LVU532 + 1603 0078 3146 mov r1, r6 + 1604 007a 2868 ldr r0, [r5] + 1605 007c FFF7FEFF bl SDMMC_CmdReadMultiBlock + 1606 .LVL154: + 1607 .L106: + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1608 .loc 1 629 5 is_stmt 1 view .LVU533 + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1609 .loc 1 629 7 is_stmt 0 view .LVU534 + 1610 0080 A0B9 cbnz r0, .L124 + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | + 1611 .loc 1 640 5 is_stmt 1 view .LVU535 + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | + 1612 .loc 1 640 19 is_stmt 0 view .LVU536 + 1613 0082 DDF80480 ldr r8, [sp, #4] + 1614 .LVL155: + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1615 .loc 1 641 5 is_stmt 1 view .LVU537 + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1616 .loc 1 641 10 is_stmt 0 view .LVU538 + 1617 0086 38E0 b .L108 + 1618 .LVL156: + 1619 .L122: + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1620 .loc 1 581 5 is_stmt 1 view .LVU539 + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1621 .loc 1 581 20 is_stmt 0 view .LVU540 + 1622 0088 AB6B ldr r3, [r5, #56] + 1623 008a 43F00063 orr r3, r3, #134217728 + 1624 008e AB63 str r3, [r5, #56] + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1625 .loc 1 582 5 is_stmt 1 view .LVU541 + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1626 .loc 1 582 12 is_stmt 0 view .LVU542 + 1627 0090 0127 movs r7, #1 + ARM GAS /tmp/ccQEYyKb.s page 94 + + + 1628 0092 D2E0 b .L101 + 1629 .L123: + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1630 .loc 1 591 7 is_stmt 1 view .LVU543 + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1631 .loc 1 591 22 is_stmt 0 view .LVU544 + 1632 0094 AB6B ldr r3, [r5, #56] + 1633 0096 43F00073 orr r3, r3, #33554432 + 1634 009a AB63 str r3, [r5, #56] + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1635 .loc 1 592 7 is_stmt 1 view .LVU545 + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1636 .loc 1 592 14 is_stmt 0 view .LVU546 + 1637 009c CDE0 b .L101 + 1638 .LVL157: + 1639 .L105: + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1640 .loc 1 624 7 is_stmt 1 view .LVU547 + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1641 .loc 1 624 20 is_stmt 0 view .LVU548 + 1642 009e 0123 movs r3, #1 + 1643 00a0 2B63 str r3, [r5, #48] + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1644 .loc 1 627 7 is_stmt 1 view .LVU549 + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1645 .loc 1 627 20 is_stmt 0 view .LVU550 + 1646 00a2 3146 mov r1, r6 + 1647 00a4 2868 ldr r0, [r5] + 1648 00a6 FFF7FEFF bl SDMMC_CmdReadSingleBlock + 1649 .LVL158: + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1650 .loc 1 627 20 view .LVU551 + 1651 00aa E9E7 b .L106 + 1652 .L124: + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 1653 .loc 1 632 7 is_stmt 1 view .LVU552 + 1654 00ac 2B68 ldr r3, [r5] + 1655 00ae 654A ldr r2, .L130 + 1656 00b0 9A63 str r2, [r3, #56] + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1657 .loc 1 633 7 view .LVU553 + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1658 .loc 1 633 22 is_stmt 0 view .LVU554 + 1659 00b2 AB6B ldr r3, [r5, #56] + 1660 00b4 1843 orrs r0, r0, r3 + 1661 .LVL159: + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1662 .loc 1 633 22 view .LVU555 + 1663 00b6 A863 str r0, [r5, #56] + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1664 .loc 1 634 7 is_stmt 1 view .LVU556 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1665 .loc 1 634 18 is_stmt 0 view .LVU557 + 1666 00b8 0123 movs r3, #1 + 1667 00ba 85F83430 strb r3, [r5, #52] + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1668 .loc 1 635 7 is_stmt 1 view .LVU558 + ARM GAS /tmp/ccQEYyKb.s page 95 + + + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1669 .loc 1 635 20 is_stmt 0 view .LVU559 + 1670 00be 0023 movs r3, #0 + 1671 00c0 2B63 str r3, [r5, #48] + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1672 .loc 1 636 7 is_stmt 1 view .LVU560 + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1673 .loc 1 636 14 is_stmt 0 view .LVU561 + 1674 00c2 BAE0 b .L101 + 1675 .LVL160: + 1676 .L111: + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)(data & 0xFFU); + 1677 .loc 1 648 11 is_stmt 1 discriminator 3 view .LVU562 + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)(data & 0xFFU); + 1678 .loc 1 648 18 is_stmt 0 discriminator 3 view .LVU563 + 1679 00c4 2868 ldr r0, [r5] + 1680 00c6 FFF7FEFF bl SDMMC_ReadFIFO + 1681 .LVL161: + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1682 .loc 1 649 11 is_stmt 1 discriminator 3 view .LVU564 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1683 .loc 1 649 21 is_stmt 0 discriminator 3 view .LVU565 + 1684 00ca 2070 strb r0, [r4] + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 1685 .loc 1 650 11 is_stmt 1 discriminator 3 view .LVU566 + 1686 .LVL162: + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 8U) & 0xFFU); + 1687 .loc 1 651 11 discriminator 3 view .LVU567 + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1688 .loc 1 652 11 discriminator 3 view .LVU568 + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1689 .loc 1 652 23 is_stmt 0 discriminator 3 view .LVU569 + 1690 00cc C0F30723 ubfx r3, r0, #8, #8 + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1691 .loc 1 652 21 discriminator 3 view .LVU570 + 1692 00d0 6370 strb r3, [r4, #1] + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 1693 .loc 1 653 11 is_stmt 1 discriminator 3 view .LVU571 + 1694 .LVL163: + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 16U) & 0xFFU); + 1695 .loc 1 654 11 discriminator 3 view .LVU572 + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1696 .loc 1 655 11 discriminator 3 view .LVU573 + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1697 .loc 1 655 23 is_stmt 0 discriminator 3 view .LVU574 + 1698 00d2 C0F30743 ubfx r3, r0, #16, #8 + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1699 .loc 1 655 21 discriminator 3 view .LVU575 + 1700 00d6 A370 strb r3, [r4, #2] + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 1701 .loc 1 656 11 is_stmt 1 discriminator 3 view .LVU576 + 1702 .LVL164: + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 24U) & 0xFFU); + 1703 .loc 1 657 11 discriminator 3 view .LVU577 + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1704 .loc 1 658 11 discriminator 3 view .LVU578 + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + ARM GAS /tmp/ccQEYyKb.s page 96 + + + 1705 .loc 1 658 23 is_stmt 0 discriminator 3 view .LVU579 + 1706 00d8 000E lsrs r0, r0, #24 + 1707 .LVL165: + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1708 .loc 1 658 21 discriminator 3 view .LVU580 + 1709 00da E070 strb r0, [r4, #3] + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 1710 .loc 1 659 11 is_stmt 1 discriminator 3 view .LVU581 + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 1711 .loc 1 659 19 is_stmt 0 discriminator 3 view .LVU582 + 1712 00dc 0434 adds r4, r4, #4 + 1713 .LVL166: + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1714 .loc 1 660 11 is_stmt 1 discriminator 3 view .LVU583 + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1715 .loc 1 660 24 is_stmt 0 discriminator 3 view .LVU584 + 1716 00de A8F10408 sub r8, r8, #4 + 1717 .LVL167: + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1718 .loc 1 646 37 is_stmt 1 discriminator 3 view .LVU585 + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1719 .loc 1 646 42 is_stmt 0 discriminator 3 view .LVU586 + 1720 00e2 0136 adds r6, r6, #1 + 1721 .LVL168: + 1722 .L110: + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1723 .loc 1 646 25 is_stmt 1 discriminator 1 view .LVU587 + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1724 .loc 1 646 9 is_stmt 0 discriminator 1 view .LVU588 + 1725 00e4 072E cmp r6, #7 + 1726 00e6 EDD9 bls .L111 + 1727 .LVL169: + 1728 .L109: + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1729 .loc 1 664 7 is_stmt 1 view .LVU589 + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1730 .loc 1 664 12 is_stmt 0 view .LVU590 + 1731 00e8 FFF7FEFF bl HAL_GetTick + 1732 .LVL170: + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1733 .loc 1 664 25 view .LVU591 + 1734 00ec A0EB0900 sub r0, r0, r9 + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1735 .loc 1 664 9 view .LVU592 + 1736 00f0 5045 cmp r0, r10 + 1737 00f2 0FD2 bcs .L112 + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1738 .loc 1 664 50 discriminator 1 view .LVU593 + 1739 00f4 BAF1000F cmp r10, #0 + 1740 00f8 0CD0 beq .L112 + 1741 .L108: + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1742 .loc 1 641 10 is_stmt 1 view .LVU594 + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1743 .loc 1 641 12 is_stmt 0 view .LVU595 + 1744 00fa 2868 ldr r0, [r5] + 1745 00fc 466B ldr r6, [r0, #52] + ARM GAS /tmp/ccQEYyKb.s page 97 + + + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1746 .loc 1 641 10 view .LVU596 + 1747 00fe 16F49576 ands r6, r6, #298 + 1748 0102 15D1 bne .L125 + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1749 .loc 1 643 7 is_stmt 1 view .LVU597 + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1750 .loc 1 643 10 is_stmt 0 view .LVU598 + 1751 0104 436B ldr r3, [r0, #52] + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1752 .loc 1 643 9 view .LVU599 + 1753 0106 13F4004F tst r3, #32768 + 1754 010a EDD0 beq .L109 + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1755 .loc 1 643 54 discriminator 1 view .LVU600 + 1756 010c B8F1000F cmp r8, #0 + 1757 0110 EAD0 beq .L109 + 1758 0112 E7E7 b .L110 + 1759 .L112: + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_TIMEOUT; + 1760 .loc 1 667 9 is_stmt 1 view .LVU601 + 1761 0114 2B68 ldr r3, [r5] + 1762 0116 4B4A ldr r2, .L130 + 1763 0118 9A63 str r2, [r3, #56] + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State= HAL_SD_STATE_READY; + 1764 .loc 1 668 9 view .LVU602 + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State= HAL_SD_STATE_READY; + 1765 .loc 1 668 24 is_stmt 0 view .LVU603 + 1766 011a AB6B ldr r3, [r5, #56] + 1767 011c 43F00043 orr r3, r3, #-2147483648 + 1768 0120 AB63 str r3, [r5, #56] + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1769 .loc 1 669 9 is_stmt 1 view .LVU604 + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1770 .loc 1 669 19 is_stmt 0 view .LVU605 + 1771 0122 0123 movs r3, #1 + 1772 0124 85F83430 strb r3, [r5, #52] + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_TIMEOUT; + 1773 .loc 1 670 9 is_stmt 1 view .LVU606 + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_TIMEOUT; + 1774 .loc 1 670 22 is_stmt 0 view .LVU607 + 1775 0128 0023 movs r3, #0 + 1776 012a 2B63 str r3, [r5, #48] + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1777 .loc 1 671 9 is_stmt 1 view .LVU608 + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1778 .loc 1 671 16 is_stmt 0 view .LVU609 + 1779 012c 0327 movs r7, #3 + 1780 012e 84E0 b .L101 + 1781 .L125: + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1782 .loc 1 676 5 is_stmt 1 view .LVU610 + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1783 .loc 1 676 8 is_stmt 0 view .LVU611 + 1784 0130 436B ldr r3, [r0, #52] + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1785 .loc 1 676 7 view .LVU612 + ARM GAS /tmp/ccQEYyKb.s page 98 + + + 1786 0132 13F4807F tst r3, #256 + 1787 0136 05D0 beq .L114 + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1788 .loc 1 676 51 discriminator 1 view .LVU613 + 1789 0138 BBF1010F cmp fp, #1 + 1790 013c 02D9 bls .L114 + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1791 .loc 1 678 7 is_stmt 1 view .LVU614 + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1792 .loc 1 678 21 is_stmt 0 view .LVU615 + 1793 013e 6B6C ldr r3, [r5, #68] + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1794 .loc 1 678 9 view .LVU616 + 1795 0140 032B cmp r3, #3 + 1796 0142 38D1 bne .L126 + 1797 .L114: + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1798 .loc 1 695 5 is_stmt 1 view .LVU617 + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1799 .loc 1 695 8 is_stmt 0 view .LVU618 + 1800 0144 2B68 ldr r3, [r5] + 1801 0146 5A6B ldr r2, [r3, #52] + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1802 .loc 1 695 7 view .LVU619 + 1803 0148 12F0080F tst r2, #8 + 1804 014c 44D1 bne .L127 + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1805 .loc 1 704 10 is_stmt 1 view .LVU620 + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1806 .loc 1 704 13 is_stmt 0 view .LVU621 + 1807 014e 5A6B ldr r2, [r3, #52] + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1808 .loc 1 704 12 view .LVU622 + 1809 0150 12F0020F tst r2, #2 + 1810 0154 4CD1 bne .L128 + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1811 .loc 1 713 10 is_stmt 1 view .LVU623 + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1812 .loc 1 713 13 is_stmt 0 view .LVU624 + 1813 0156 5A6B ldr r2, [r3, #52] + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1814 .loc 1 713 12 view .LVU625 + 1815 0158 12F0200F tst r2, #32 + 1816 015c 54D1 bne .L129 + 1817 .L117: + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1818 .loc 1 728 11 is_stmt 1 view .LVU626 + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1819 .loc 1 728 13 is_stmt 0 view .LVU627 + 1820 015e 2868 ldr r0, [r5] + 1821 0160 436B ldr r3, [r0, #52] + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1822 .loc 1 728 11 view .LVU628 + 1823 0162 13F4001F tst r3, #2097152 + 1824 0166 5BD0 beq .L119 + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1825 .loc 1 728 56 discriminator 1 view .LVU629 + ARM GAS /tmp/ccQEYyKb.s page 99 + + + 1826 0168 B8F1000F cmp r8, #0 + 1827 016c 58D0 beq .L119 + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)(data & 0xFFU); + 1828 .loc 1 730 7 is_stmt 1 view .LVU630 + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)(data & 0xFFU); + 1829 .loc 1 730 14 is_stmt 0 view .LVU631 + 1830 016e FFF7FEFF bl SDMMC_ReadFIFO + 1831 .LVL171: + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1832 .loc 1 731 7 is_stmt 1 view .LVU632 + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1833 .loc 1 731 17 is_stmt 0 view .LVU633 + 1834 0172 2070 strb r0, [r4] + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 1835 .loc 1 732 7 is_stmt 1 view .LVU634 + 1836 .LVL172: + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 8U) & 0xFFU); + 1837 .loc 1 733 7 view .LVU635 + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1838 .loc 1 734 7 view .LVU636 + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1839 .loc 1 734 19 is_stmt 0 view .LVU637 + 1840 0174 C0F30723 ubfx r3, r0, #8, #8 + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1841 .loc 1 734 17 view .LVU638 + 1842 0178 6370 strb r3, [r4, #1] + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 1843 .loc 1 735 7 is_stmt 1 view .LVU639 + 1844 .LVL173: + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 16U) & 0xFFU); + 1845 .loc 1 736 7 view .LVU640 + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1846 .loc 1 737 7 view .LVU641 + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1847 .loc 1 737 19 is_stmt 0 view .LVU642 + 1848 017a C0F30743 ubfx r3, r0, #16, #8 + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1849 .loc 1 737 17 view .LVU643 + 1850 017e A370 strb r3, [r4, #2] + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 1851 .loc 1 738 7 is_stmt 1 view .LVU644 + 1852 .LVL174: + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** *tempbuff = (uint8_t)((data >> 24U) & 0xFFU); + 1853 .loc 1 739 7 view .LVU645 + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1854 .loc 1 740 7 view .LVU646 + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1855 .loc 1 740 19 is_stmt 0 view .LVU647 + 1856 0180 000E lsrs r0, r0, #24 + 1857 .LVL175: + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 1858 .loc 1 740 17 view .LVU648 + 1859 0182 E070 strb r0, [r4, #3] + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 1860 .loc 1 741 7 is_stmt 1 view .LVU649 + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 1861 .loc 1 741 15 is_stmt 0 view .LVU650 + ARM GAS /tmp/ccQEYyKb.s page 100 + + + 1862 0184 0434 adds r4, r4, #4 + 1863 .LVL176: + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1864 .loc 1 742 7 is_stmt 1 view .LVU651 + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1865 .loc 1 742 20 is_stmt 0 view .LVU652 + 1866 0186 A8F10408 sub r8, r8, #4 + 1867 .LVL177: + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1868 .loc 1 744 7 is_stmt 1 view .LVU653 + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1869 .loc 1 744 12 is_stmt 0 view .LVU654 + 1870 018a FFF7FEFF bl HAL_GetTick + 1871 .LVL178: + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1872 .loc 1 744 25 view .LVU655 + 1873 018e A0EB0900 sub r0, r0, r9 + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1874 .loc 1 744 9 view .LVU656 + 1875 0192 5045 cmp r0, r10 + 1876 0194 02D2 bcs .L118 + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1877 .loc 1 744 50 discriminator 1 view .LVU657 + 1878 0196 BAF1000F cmp r10, #0 + 1879 019a E0D1 bne .L117 + 1880 .L118: + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_TIMEOUT; + 1881 .loc 1 747 9 is_stmt 1 view .LVU658 + 1882 019c 2B68 ldr r3, [r5] + 1883 019e 294A ldr r2, .L130 + 1884 01a0 9A63 str r2, [r3, #56] + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State= HAL_SD_STATE_READY; + 1885 .loc 1 748 9 view .LVU659 + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State= HAL_SD_STATE_READY; + 1886 .loc 1 748 24 is_stmt 0 view .LVU660 + 1887 01a2 AB6B ldr r3, [r5, #56] + 1888 01a4 43F00043 orr r3, r3, #-2147483648 + 1889 01a8 AB63 str r3, [r5, #56] + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1890 .loc 1 749 9 is_stmt 1 view .LVU661 + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1891 .loc 1 749 19 is_stmt 0 view .LVU662 + 1892 01aa 0123 movs r3, #1 + 1893 01ac 85F83430 strb r3, [r5, #52] + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1894 .loc 1 750 9 is_stmt 1 view .LVU663 + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1895 .loc 1 750 22 is_stmt 0 view .LVU664 + 1896 01b0 0023 movs r3, #0 + 1897 01b2 2B63 str r3, [r5, #48] + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1898 .loc 1 751 9 is_stmt 1 view .LVU665 + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1899 .loc 1 751 16 is_stmt 0 view .LVU666 + 1900 01b4 41E0 b .L101 + 1901 .L126: + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + ARM GAS /tmp/ccQEYyKb.s page 101 + + + 1902 .loc 1 681 9 is_stmt 1 view .LVU667 + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 1903 .loc 1 681 22 is_stmt 0 view .LVU668 + 1904 01b6 FFF7FEFF bl SDMMC_CmdStopTransfer + 1905 .LVL179: + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1906 .loc 1 682 9 is_stmt 1 view .LVU669 + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 1907 .loc 1 682 11 is_stmt 0 view .LVU670 + 1908 01ba 0346 mov r3, r0 + 1909 01bc 0028 cmp r0, #0 + 1910 01be C1D0 beq .L114 + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 1911 .loc 1 685 11 is_stmt 1 view .LVU671 + 1912 01c0 2A68 ldr r2, [r5] + 1913 01c2 2049 ldr r1, .L130 + 1914 01c4 9163 str r1, [r2, #56] + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1915 .loc 1 686 11 view .LVU672 + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1916 .loc 1 686 26 is_stmt 0 view .LVU673 + 1917 01c6 AA6B ldr r2, [r5, #56] + 1918 01c8 1343 orrs r3, r3, r2 + 1919 01ca AB63 str r3, [r5, #56] + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1920 .loc 1 687 11 is_stmt 1 view .LVU674 + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1921 .loc 1 687 22 is_stmt 0 view .LVU675 + 1922 01cc 0123 movs r3, #1 + 1923 01ce 85F83430 strb r3, [r5, #52] + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1924 .loc 1 688 11 is_stmt 1 view .LVU676 + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1925 .loc 1 688 24 is_stmt 0 view .LVU677 + 1926 01d2 0023 movs r3, #0 + 1927 01d4 2B63 str r3, [r5, #48] + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1928 .loc 1 689 11 is_stmt 1 view .LVU678 + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1929 .loc 1 689 18 is_stmt 0 view .LVU679 + 1930 01d6 30E0 b .L101 + 1931 .LVL180: + 1932 .L127: + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DATA_TIMEOUT; + 1933 .loc 1 698 7 is_stmt 1 view .LVU680 + 1934 01d8 1A4A ldr r2, .L130 + 1935 01da 9A63 str r2, [r3, #56] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1936 .loc 1 699 7 view .LVU681 + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1937 .loc 1 699 22 is_stmt 0 view .LVU682 + 1938 01dc AB6B ldr r3, [r5, #56] + 1939 01de 43F00803 orr r3, r3, #8 + 1940 01e2 AB63 str r3, [r5, #56] + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1941 .loc 1 700 7 is_stmt 1 view .LVU683 + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + ARM GAS /tmp/ccQEYyKb.s page 102 + + + 1942 .loc 1 700 18 is_stmt 0 view .LVU684 + 1943 01e4 0123 movs r3, #1 + 1944 01e6 85F83430 strb r3, [r5, #52] + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1945 .loc 1 701 7 is_stmt 1 view .LVU685 + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1946 .loc 1 701 20 is_stmt 0 view .LVU686 + 1947 01ea 0023 movs r3, #0 + 1948 01ec 2B63 str r3, [r5, #48] + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1949 .loc 1 702 7 is_stmt 1 view .LVU687 + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1950 .loc 1 702 14 is_stmt 0 view .LVU688 + 1951 01ee 24E0 b .L101 + 1952 .L128: + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DATA_CRC_FAIL; + 1953 .loc 1 707 7 is_stmt 1 view .LVU689 + 1954 01f0 144A ldr r2, .L130 + 1955 01f2 9A63 str r2, [r3, #56] + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1956 .loc 1 708 7 view .LVU690 + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1957 .loc 1 708 22 is_stmt 0 view .LVU691 + 1958 01f4 AB6B ldr r3, [r5, #56] + 1959 01f6 43F00203 orr r3, r3, #2 + 1960 01fa AB63 str r3, [r5, #56] + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1961 .loc 1 709 7 is_stmt 1 view .LVU692 + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1962 .loc 1 709 18 is_stmt 0 view .LVU693 + 1963 01fc 0123 movs r3, #1 + 1964 01fe 85F83430 strb r3, [r5, #52] + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1965 .loc 1 710 7 is_stmt 1 view .LVU694 + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1966 .loc 1 710 20 is_stmt 0 view .LVU695 + 1967 0202 0023 movs r3, #0 + 1968 0204 2B63 str r3, [r5, #48] + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1969 .loc 1 711 7 is_stmt 1 view .LVU696 + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1970 .loc 1 711 14 is_stmt 0 view .LVU697 + 1971 0206 18E0 b .L101 + 1972 .L129: + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_RX_OVERRUN; + 1973 .loc 1 716 7 is_stmt 1 view .LVU698 + 1974 0208 0E4A ldr r2, .L130 + 1975 020a 9A63 str r2, [r3, #56] + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1976 .loc 1 717 7 view .LVU699 + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 1977 .loc 1 717 22 is_stmt 0 view .LVU700 + 1978 020c AB6B ldr r3, [r5, #56] + 1979 020e 43F02003 orr r3, r3, #32 + 1980 0212 AB63 str r3, [r5, #56] + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1981 .loc 1 718 7 is_stmt 1 view .LVU701 + ARM GAS /tmp/ccQEYyKb.s page 103 + + + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 1982 .loc 1 718 18 is_stmt 0 view .LVU702 + 1983 0214 0123 movs r3, #1 + 1984 0216 85F83430 strb r3, [r5, #52] + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1985 .loc 1 719 7 is_stmt 1 view .LVU703 + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 1986 .loc 1 719 20 is_stmt 0 view .LVU704 + 1987 021a 0023 movs r3, #0 + 1988 021c 2B63 str r3, [r5, #48] + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1989 .loc 1 720 7 is_stmt 1 view .LVU705 + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 1990 .loc 1 720 14 is_stmt 0 view .LVU706 + 1991 021e 0CE0 b .L101 + 1992 .L119: + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1993 .loc 1 756 5 is_stmt 1 view .LVU707 + 1994 0220 40F23A53 movw r3, #1338 + 1995 0224 8363 str r3, [r0, #56] + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1996 .loc 1 758 5 view .LVU708 + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 1997 .loc 1 758 16 is_stmt 0 view .LVU709 + 1998 0226 0123 movs r3, #1 + 1999 0228 85F83430 strb r3, [r5, #52] + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2000 .loc 1 760 5 is_stmt 1 view .LVU710 + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2001 .loc 1 760 12 is_stmt 0 view .LVU711 + 2002 022c 0027 movs r7, #0 + 2003 022e 04E0 b .L101 + 2004 .LVL181: + 2005 .L102: + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2006 .loc 1 764 5 is_stmt 1 view .LVU712 + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2007 .loc 1 764 20 is_stmt 0 view .LVU713 + 2008 0230 AB6B ldr r3, [r5, #56] + 2009 0232 43F00053 orr r3, r3, #536870912 + 2010 0236 AB63 str r3, [r5, #56] + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2011 .loc 1 765 5 is_stmt 1 view .LVU714 + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2012 .loc 1 765 12 is_stmt 0 view .LVU715 + 2013 0238 0127 movs r7, #1 + 2014 .LVL182: + 2015 .L101: + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2016 .loc 1 767 1 view .LVU716 + 2017 023a 3846 mov r0, r7 + 2018 023c 07B0 add sp, sp, #28 + 2019 .LCFI31: + 2020 .cfi_def_cfa_offset 36 + 2021 @ sp needed + 2022 023e BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 2023 .LVL183: + ARM GAS /tmp/ccQEYyKb.s page 104 + + + 2024 .L131: + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2025 .loc 1 767 1 view .LVU717 + 2026 0242 00BF .align 2 + 2027 .L130: + 2028 0244 FF054000 .word 4195839 + 2029 .cfi_endproc + 2030 .LFE146: + 2032 .section .text.HAL_SD_WriteBlocks,"ax",%progbits + 2033 .align 1 + 2034 .global HAL_SD_WriteBlocks + 2035 .syntax unified + 2036 .thumb + 2037 .thumb_func + 2038 .fpu fpv5-d16 + 2040 HAL_SD_WriteBlocks: + 2041 .LVL184: + 2042 .LFB147: + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 2043 .loc 1 782 1 is_stmt 1 view -0 + 2044 .cfi_startproc + 2045 @ args = 4, pretend = 0, frame = 40 + 2046 @ frame_needed = 0, uses_anonymous_args = 0 + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 2047 .loc 1 782 1 is_stmt 0 view .LVU719 + 2048 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr} + 2049 .LCFI32: + 2050 .cfi_def_cfa_offset 36 + 2051 .cfi_offset 4, -36 + 2052 .cfi_offset 5, -32 + 2053 .cfi_offset 6, -28 + 2054 .cfi_offset 7, -24 + 2055 .cfi_offset 8, -20 + 2056 .cfi_offset 9, -16 + 2057 .cfi_offset 10, -12 + 2058 .cfi_offset 11, -8 + 2059 .cfi_offset 14, -4 + 2060 0004 8BB0 sub sp, sp, #44 + 2061 .LCFI33: + 2062 .cfi_def_cfa_offset 80 + 2063 0006 0546 mov r5, r0 + 2064 0008 0C46 mov r4, r1 + 2065 000a 1646 mov r6, r2 + 2066 000c 9B46 mov fp, r3 + 2067 000e DDF850A0 ldr r10, [sp, #80] + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 2068 .loc 1 783 3 is_stmt 1 view .LVU720 + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t tickstart = HAL_GetTick(); + 2069 .loc 1 784 3 view .LVU721 + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count, data, dataremaining; + 2070 .loc 1 785 3 view .LVU722 + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t count, data, dataremaining; + 2071 .loc 1 785 24 is_stmt 0 view .LVU723 + 2072 0012 FFF7FEFF bl HAL_GetTick + 2073 .LVL185: + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; + 2074 .loc 1 786 3 is_stmt 1 view .LVU724 + ARM GAS /tmp/ccQEYyKb.s page 105 + + + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint8_t *tempbuff = pData; + 2075 .loc 1 787 3 view .LVU725 + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2076 .loc 1 788 3 view .LVU726 + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2077 .loc 1 790 3 view .LVU727 + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2078 .loc 1 790 5 is_stmt 0 view .LVU728 + 2079 0016 002C cmp r4, #0 + 2080 0018 37D0 beq .L152 + 2081 001a 8046 mov r8, r0 + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2082 .loc 1 796 3 is_stmt 1 view .LVU729 + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2083 .loc 1 796 9 is_stmt 0 view .LVU730 + 2084 001c 95F83470 ldrb r7, [r5, #52] @ zero_extendqisi2 + 2085 0020 FFB2 uxtb r7, r7 + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2086 .loc 1 796 5 view .LVU731 + 2087 0022 012F cmp r7, #1 + 2088 0024 40F0E180 bne .L135 + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2089 .loc 1 798 5 is_stmt 1 view .LVU732 + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2090 .loc 1 798 20 is_stmt 0 view .LVU733 + 2091 0028 0023 movs r3, #0 + 2092 002a AB63 str r3, [r5, #56] + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2093 .loc 1 800 5 is_stmt 1 view .LVU734 + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2094 .loc 1 800 13 is_stmt 0 view .LVU735 + 2095 002c 06EB0B03 add r3, r6, fp + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2096 .loc 1 800 45 view .LVU736 + 2097 0030 EA6D ldr r2, [r5, #92] + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2098 .loc 1 800 7 view .LVU737 + 2099 0032 9342 cmp r3, r2 + 2100 0034 2FD8 bhi .L153 + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2101 .loc 1 806 5 is_stmt 1 view .LVU738 + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2102 .loc 1 806 16 is_stmt 0 view .LVU739 + 2103 0036 0323 movs r3, #3 + 2104 0038 85F83430 strb r3, [r5, #52] + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2105 .loc 1 809 5 is_stmt 1 view .LVU740 + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2106 .loc 1 809 8 is_stmt 0 view .LVU741 + 2107 003c 2B68 ldr r3, [r5] + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2108 .loc 1 809 26 view .LVU742 + 2109 003e 0022 movs r2, #0 + 2110 0040 DA62 str r2, [r3, #44] + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2111 .loc 1 811 5 is_stmt 1 view .LVU743 + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 106 + + + 2112 .loc 1 811 19 is_stmt 0 view .LVU744 + 2113 0042 6B6C ldr r3, [r5, #68] + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2114 .loc 1 811 7 view .LVU745 + 2115 0044 012B cmp r3, #1 + 2116 0046 00D0 beq .L137 + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2117 .loc 1 813 7 is_stmt 1 view .LVU746 + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2118 .loc 1 813 11 is_stmt 0 view .LVU747 + 2119 0048 7602 lsls r6, r6, #9 + 2120 .LVL186: + 2121 .L137: + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = NumberOfBlocks * BLOCKSIZE; + 2122 .loc 1 817 5 is_stmt 1 view .LVU748 + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = NumberOfBlocks * BLOCKSIZE; + 2123 .loc 1 817 26 is_stmt 0 view .LVU749 + 2124 004a 4FF0FF33 mov r3, #-1 + 2125 004e 0493 str r3, [sp, #16] + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 2126 .loc 1 818 5 is_stmt 1 view .LVU750 + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 2127 .loc 1 818 43 is_stmt 0 view .LVU751 + 2128 0050 4FEA4B23 lsl r3, fp, #9 + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 2129 .loc 1 818 26 view .LVU752 + 2130 0054 0593 str r3, [sp, #20] + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; + 2131 .loc 1 819 5 is_stmt 1 view .LVU753 + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; + 2132 .loc 1 819 26 is_stmt 0 view .LVU754 + 2133 0056 9023 movs r3, #144 + 2134 0058 0693 str r3, [sp, #24] + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 2135 .loc 1 820 5 is_stmt 1 view .LVU755 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 2136 .loc 1 820 26 is_stmt 0 view .LVU756 + 2137 005a 0023 movs r3, #0 + 2138 005c 0793 str r3, [sp, #28] + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 2139 .loc 1 821 5 is_stmt 1 view .LVU757 + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 2140 .loc 1 821 26 is_stmt 0 view .LVU758 + 2141 005e 0893 str r3, [sp, #32] + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 2142 .loc 1 822 5 is_stmt 1 view .LVU759 + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 2143 .loc 1 822 26 is_stmt 0 view .LVU760 + 2144 0060 0123 movs r3, #1 + 2145 0062 0993 str r3, [sp, #36] + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2146 .loc 1 823 5 is_stmt 1 view .LVU761 + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2147 .loc 1 823 11 is_stmt 0 view .LVU762 + 2148 0064 04A9 add r1, sp, #16 + 2149 0066 2868 ldr r0, [r5] + 2150 .LVL187: + ARM GAS /tmp/ccQEYyKb.s page 107 + + + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2151 .loc 1 823 11 view .LVU763 + 2152 0068 FFF7FEFF bl SDMMC_ConfigData + 2153 .LVL188: + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2154 .loc 1 826 5 is_stmt 1 view .LVU764 + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2155 .loc 1 826 7 is_stmt 0 view .LVU765 + 2156 006c BBF1010F cmp fp, #1 + 2157 0070 16D9 bls .L138 + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2158 .loc 1 828 7 is_stmt 1 view .LVU766 + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2159 .loc 1 828 20 is_stmt 0 view .LVU767 + 2160 0072 2023 movs r3, #32 + 2161 0074 2B63 str r3, [r5, #48] + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2162 .loc 1 831 7 is_stmt 1 view .LVU768 + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2163 .loc 1 831 20 is_stmt 0 view .LVU769 + 2164 0076 3146 mov r1, r6 + 2165 0078 2868 ldr r0, [r5] + 2166 007a FFF7FEFF bl SDMMC_CmdWriteMultiBlock + 2167 .LVL189: + 2168 007e 0190 str r0, [sp, #4] + 2169 .LVL190: + 2170 .L139: + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2171 .loc 1 840 5 is_stmt 1 view .LVU770 + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2172 .loc 1 840 7 is_stmt 0 view .LVU771 + 2173 0080 019B ldr r3, [sp, #4] + 2174 0082 ABB9 cbnz r3, .L154 + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXUNDERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | + 2175 .loc 1 851 5 is_stmt 1 view .LVU772 + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** while(!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_TXUNDERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | + 2176 .loc 1 851 19 is_stmt 0 view .LVU773 + 2177 0084 DDF81490 ldr r9, [sp, #20] + 2178 .LVL191: + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2179 .loc 1 852 5 is_stmt 1 view .LVU774 + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2180 .loc 1 852 10 is_stmt 0 view .LVU775 + 2181 0088 40E0 b .L141 + 2182 .LVL192: + 2183 .L152: + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2184 .loc 1 792 5 is_stmt 1 view .LVU776 + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2185 .loc 1 792 20 is_stmt 0 view .LVU777 + 2186 008a AB6B ldr r3, [r5, #56] + 2187 008c 43F00063 orr r3, r3, #134217728 + 2188 0090 AB63 str r3, [r5, #56] + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2189 .loc 1 793 5 is_stmt 1 view .LVU778 + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2190 .loc 1 793 12 is_stmt 0 view .LVU779 + ARM GAS /tmp/ccQEYyKb.s page 108 + + + 2191 0092 0127 movs r7, #1 + 2192 0094 AEE0 b .L134 + 2193 .L153: + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2194 .loc 1 802 7 is_stmt 1 view .LVU780 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2195 .loc 1 802 22 is_stmt 0 view .LVU781 + 2196 0096 AB6B ldr r3, [r5, #56] + 2197 0098 43F00073 orr r3, r3, #33554432 + 2198 009c AB63 str r3, [r5, #56] + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2199 .loc 1 803 7 is_stmt 1 view .LVU782 + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2200 .loc 1 803 14 is_stmt 0 view .LVU783 + 2201 009e A9E0 b .L134 + 2202 .LVL193: + 2203 .L138: + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2204 .loc 1 835 7 is_stmt 1 view .LVU784 + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2205 .loc 1 835 20 is_stmt 0 view .LVU785 + 2206 00a0 1023 movs r3, #16 + 2207 00a2 2B63 str r3, [r5, #48] + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2208 .loc 1 838 7 is_stmt 1 view .LVU786 + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2209 .loc 1 838 20 is_stmt 0 view .LVU787 + 2210 00a4 3146 mov r1, r6 + 2211 00a6 2868 ldr r0, [r5] + 2212 00a8 FFF7FEFF bl SDMMC_CmdWriteSingleBlock + 2213 .LVL194: + 2214 00ac 0190 str r0, [sp, #4] + 2215 .LVL195: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2216 .loc 1 838 20 view .LVU788 + 2217 00ae E7E7 b .L139 + 2218 .LVL196: + 2219 .L154: + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 2220 .loc 1 843 7 is_stmt 1 view .LVU789 + 2221 00b0 2B68 ldr r3, [r5] + 2222 .LVL197: + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 2223 .loc 1 843 7 is_stmt 0 view .LVU790 + 2224 00b2 524A ldr r2, .L159 + 2225 00b4 9A63 str r2, [r3, #56] + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2226 .loc 1 844 7 is_stmt 1 view .LVU791 + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2227 .loc 1 844 22 is_stmt 0 view .LVU792 + 2228 00b6 A86B ldr r0, [r5, #56] + 2229 00b8 019B ldr r3, [sp, #4] + 2230 00ba 1843 orrs r0, r0, r3 + 2231 00bc A863 str r0, [r5, #56] + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2232 .loc 1 845 7 is_stmt 1 view .LVU793 + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + ARM GAS /tmp/ccQEYyKb.s page 109 + + + 2233 .loc 1 845 18 is_stmt 0 view .LVU794 + 2234 00be 0123 movs r3, #1 + 2235 00c0 85F83430 strb r3, [r5, #52] + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2236 .loc 1 846 7 is_stmt 1 view .LVU795 + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2237 .loc 1 846 20 is_stmt 0 view .LVU796 + 2238 00c4 0023 movs r3, #0 + 2239 00c6 2B63 str r3, [r5, #48] + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2240 .loc 1 847 7 is_stmt 1 view .LVU797 + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2241 .loc 1 847 14 is_stmt 0 view .LVU798 + 2242 00c8 94E0 b .L134 + 2243 .LVL198: + 2244 .L144: + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2245 .loc 1 859 11 is_stmt 1 discriminator 3 view .LVU799 + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2246 .loc 1 859 29 is_stmt 0 discriminator 3 view .LVU800 + 2247 00ca 2378 ldrb r3, [r4] @ zero_extendqisi2 + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2248 .loc 1 859 16 discriminator 3 view .LVU801 + 2249 00cc 0393 str r3, [sp, #12] + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 2250 .loc 1 860 11 is_stmt 1 discriminator 3 view .LVU802 + 2251 .LVL199: + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tempbuff) << 8U); + 2252 .loc 1 861 11 discriminator 3 view .LVU803 + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2253 .loc 1 862 11 discriminator 3 view .LVU804 + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2254 .loc 1 862 31 is_stmt 0 discriminator 3 view .LVU805 + 2255 00ce 6278 ldrb r2, [r4, #1] @ zero_extendqisi2 + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2256 .loc 1 862 16 discriminator 3 view .LVU806 + 2257 00d0 43EA0223 orr r3, r3, r2, lsl #8 + 2258 00d4 0393 str r3, [sp, #12] + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 2259 .loc 1 863 11 is_stmt 1 discriminator 3 view .LVU807 + 2260 .LVL200: + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tempbuff) << 16U); + 2261 .loc 1 864 11 discriminator 3 view .LVU808 + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2262 .loc 1 865 11 discriminator 3 view .LVU809 + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2263 .loc 1 865 31 is_stmt 0 discriminator 3 view .LVU810 + 2264 00d6 A278 ldrb r2, [r4, #2] @ zero_extendqisi2 + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2265 .loc 1 865 16 discriminator 3 view .LVU811 + 2266 00d8 43EA0243 orr r3, r3, r2, lsl #16 + 2267 00dc 0393 str r3, [sp, #12] + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 2268 .loc 1 866 11 is_stmt 1 discriminator 3 view .LVU812 + 2269 .LVL201: + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** data |= ((uint32_t)(*tempbuff) << 24U); + 2270 .loc 1 867 11 discriminator 3 view .LVU813 + ARM GAS /tmp/ccQEYyKb.s page 110 + + + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2271 .loc 1 868 11 discriminator 3 view .LVU814 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2272 .loc 1 868 31 is_stmt 0 discriminator 3 view .LVU815 + 2273 00de E278 ldrb r2, [r4, #3] @ zero_extendqisi2 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** tempbuff++; + 2274 .loc 1 868 16 discriminator 3 view .LVU816 + 2275 00e0 43EA0263 orr r3, r3, r2, lsl #24 + 2276 00e4 0393 str r3, [sp, #12] + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 2277 .loc 1 869 11 is_stmt 1 discriminator 3 view .LVU817 + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** dataremaining--; + 2278 .loc 1 869 19 is_stmt 0 discriminator 3 view .LVU818 + 2279 00e6 0434 adds r4, r4, #4 + 2280 .LVL202: + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_WriteFIFO(hsd->Instance, &data); + 2281 .loc 1 870 11 is_stmt 1 discriminator 3 view .LVU819 + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_WriteFIFO(hsd->Instance, &data); + 2282 .loc 1 870 24 is_stmt 0 discriminator 3 view .LVU820 + 2283 00e8 A9F10409 sub r9, r9, #4 + 2284 .LVL203: + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2285 .loc 1 871 11 is_stmt 1 discriminator 3 view .LVU821 + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2286 .loc 1 871 17 is_stmt 0 discriminator 3 view .LVU822 + 2287 00ec 03A9 add r1, sp, #12 + 2288 00ee 2868 ldr r0, [r5] + 2289 00f0 FFF7FEFF bl SDMMC_WriteFIFO + 2290 .LVL204: + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2291 .loc 1 857 37 is_stmt 1 discriminator 3 view .LVU823 + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2292 .loc 1 857 42 is_stmt 0 discriminator 3 view .LVU824 + 2293 00f4 0136 adds r6, r6, #1 + 2294 .LVL205: + 2295 .L143: + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2296 .loc 1 857 25 is_stmt 1 discriminator 1 view .LVU825 + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2297 .loc 1 857 9 is_stmt 0 discriminator 1 view .LVU826 + 2298 00f6 072E cmp r6, #7 + 2299 00f8 E7D9 bls .L144 + 2300 .LVL206: + 2301 .L142: + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2302 .loc 1 875 7 is_stmt 1 view .LVU827 + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2303 .loc 1 875 12 is_stmt 0 view .LVU828 + 2304 00fa FFF7FEFF bl HAL_GetTick + 2305 .LVL207: + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2306 .loc 1 875 25 view .LVU829 + 2307 00fe A0EB0800 sub r0, r0, r8 + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2308 .loc 1 875 9 view .LVU830 + 2309 0102 5045 cmp r0, r10 + 2310 0104 0FD2 bcs .L145 + ARM GAS /tmp/ccQEYyKb.s page 111 + + + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2311 .loc 1 875 50 discriminator 1 view .LVU831 + 2312 0106 BAF1000F cmp r10, #0 + 2313 010a 0CD0 beq .L145 + 2314 .L141: + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2315 .loc 1 852 10 is_stmt 1 view .LVU832 + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2316 .loc 1 852 12 is_stmt 0 view .LVU833 + 2317 010c 2868 ldr r0, [r5] + 2318 010e 466B ldr r6, [r0, #52] + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2319 .loc 1 852 10 view .LVU834 + 2320 0110 16F48D76 ands r6, r6, #282 + 2321 0114 15D1 bne .L155 + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2322 .loc 1 854 7 is_stmt 1 view .LVU835 + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2323 .loc 1 854 10 is_stmt 0 view .LVU836 + 2324 0116 436B ldr r3, [r0, #52] + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2325 .loc 1 854 9 view .LVU837 + 2326 0118 13F4804F tst r3, #16384 + 2327 011c EDD0 beq .L142 + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2328 .loc 1 854 54 discriminator 1 view .LVU838 + 2329 011e B9F1000F cmp r9, #0 + 2330 0122 EAD0 beq .L142 + 2331 0124 E7E7 b .L143 + 2332 .L145: + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 2333 .loc 1 878 9 is_stmt 1 view .LVU839 + 2334 0126 2B68 ldr r3, [r5] + 2335 0128 344A ldr r2, .L159 + 2336 012a 9A63 str r2, [r3, #56] + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2337 .loc 1 879 9 view .LVU840 + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2338 .loc 1 879 24 is_stmt 0 view .LVU841 + 2339 012c A86B ldr r0, [r5, #56] + 2340 012e 019B ldr r3, [sp, #4] + 2341 0130 1843 orrs r0, r0, r3 + 2342 0132 A863 str r0, [r5, #56] + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2343 .loc 1 880 9 is_stmt 1 view .LVU842 + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2344 .loc 1 880 20 is_stmt 0 view .LVU843 + 2345 0134 0123 movs r3, #1 + 2346 0136 85F83430 strb r3, [r5, #52] + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_TIMEOUT; + 2347 .loc 1 881 9 is_stmt 1 view .LVU844 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_TIMEOUT; + 2348 .loc 1 881 22 is_stmt 0 view .LVU845 + 2349 013a 0023 movs r3, #0 + 2350 013c 2B63 str r3, [r5, #48] + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2351 .loc 1 882 9 is_stmt 1 view .LVU846 + ARM GAS /tmp/ccQEYyKb.s page 112 + + + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2352 .loc 1 882 16 is_stmt 0 view .LVU847 + 2353 013e 0327 movs r7, #3 + 2354 0140 58E0 b .L134 + 2355 .L155: + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2356 .loc 1 887 5 is_stmt 1 view .LVU848 + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2357 .loc 1 887 8 is_stmt 0 view .LVU849 + 2358 0142 436B ldr r3, [r0, #52] + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2359 .loc 1 887 7 view .LVU850 + 2360 0144 13F4807F tst r3, #256 + 2361 0148 05D0 beq .L147 + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2362 .loc 1 887 51 discriminator 1 view .LVU851 + 2363 014a BBF1010F cmp fp, #1 + 2364 014e 02D9 bls .L147 + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2365 .loc 1 889 7 is_stmt 1 view .LVU852 + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2366 .loc 1 889 21 is_stmt 0 view .LVU853 + 2367 0150 6B6C ldr r3, [r5, #68] + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2368 .loc 1 889 9 view .LVU854 + 2369 0152 032B cmp r3, #3 + 2370 0154 18D1 bne .L156 + 2371 .LVL208: + 2372 .L147: + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2373 .loc 1 906 5 is_stmt 1 view .LVU855 + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2374 .loc 1 906 8 is_stmt 0 view .LVU856 + 2375 0156 2B68 ldr r3, [r5] + 2376 0158 5A6B ldr r2, [r3, #52] + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2377 .loc 1 906 7 view .LVU857 + 2378 015a 12F0080F tst r2, #8 + 2379 015e 24D1 bne .L157 + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2380 .loc 1 915 10 is_stmt 1 view .LVU858 + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2381 .loc 1 915 13 is_stmt 0 view .LVU859 + 2382 0160 5A6B ldr r2, [r3, #52] + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2383 .loc 1 915 12 view .LVU860 + 2384 0162 12F0020F tst r2, #2 + 2385 0166 2CD1 bne .L158 + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2386 .loc 1 924 10 is_stmt 1 view .LVU861 + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2387 .loc 1 924 13 is_stmt 0 view .LVU862 + 2388 0168 5A6B ldr r2, [r3, #52] + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2389 .loc 1 924 12 view .LVU863 + 2390 016a 12F0100F tst r2, #16 + 2391 016e 34D0 beq .L150 + ARM GAS /tmp/ccQEYyKb.s page 113 + + + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_TX_UNDERRUN; + 2392 .loc 1 927 7 is_stmt 1 view .LVU864 + 2393 0170 224A ldr r2, .L159 + 2394 0172 9A63 str r2, [r3, #56] + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2395 .loc 1 928 7 view .LVU865 + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2396 .loc 1 928 22 is_stmt 0 view .LVU866 + 2397 0174 AB6B ldr r3, [r5, #56] + 2398 0176 43F01003 orr r3, r3, #16 + 2399 017a AB63 str r3, [r5, #56] + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2400 .loc 1 929 7 is_stmt 1 view .LVU867 + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2401 .loc 1 929 18 is_stmt 0 view .LVU868 + 2402 017c 0123 movs r3, #1 + 2403 017e 85F83430 strb r3, [r5, #52] + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2404 .loc 1 930 7 is_stmt 1 view .LVU869 + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2405 .loc 1 930 20 is_stmt 0 view .LVU870 + 2406 0182 0023 movs r3, #0 + 2407 0184 2B63 str r3, [r5, #48] + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2408 .loc 1 931 7 is_stmt 1 view .LVU871 + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2409 .loc 1 931 14 is_stmt 0 view .LVU872 + 2410 0186 35E0 b .L134 + 2411 .LVL209: + 2412 .L156: + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 2413 .loc 1 892 9 is_stmt 1 view .LVU873 + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 2414 .loc 1 892 22 is_stmt 0 view .LVU874 + 2415 0188 FFF7FEFF bl SDMMC_CmdStopTransfer + 2416 .LVL210: + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2417 .loc 1 893 9 is_stmt 1 view .LVU875 + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2418 .loc 1 893 11 is_stmt 0 view .LVU876 + 2419 018c 0346 mov r3, r0 + 2420 018e 0028 cmp r0, #0 + 2421 0190 E1D0 beq .L147 + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 2422 .loc 1 896 11 is_stmt 1 view .LVU877 + 2423 0192 2A68 ldr r2, [r5] + 2424 0194 1949 ldr r1, .L159 + 2425 0196 9163 str r1, [r2, #56] + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2426 .loc 1 897 11 view .LVU878 + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2427 .loc 1 897 26 is_stmt 0 view .LVU879 + 2428 0198 AA6B ldr r2, [r5, #56] + 2429 019a 1343 orrs r3, r3, r2 + 2430 019c AB63 str r3, [r5, #56] + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2431 .loc 1 898 11 is_stmt 1 view .LVU880 + ARM GAS /tmp/ccQEYyKb.s page 114 + + + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2432 .loc 1 898 22 is_stmt 0 view .LVU881 + 2433 019e 0123 movs r3, #1 + 2434 01a0 85F83430 strb r3, [r5, #52] + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2435 .loc 1 899 11 is_stmt 1 view .LVU882 + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2436 .loc 1 899 24 is_stmt 0 view .LVU883 + 2437 01a4 0023 movs r3, #0 + 2438 01a6 2B63 str r3, [r5, #48] + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2439 .loc 1 900 11 is_stmt 1 view .LVU884 + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2440 .loc 1 900 18 is_stmt 0 view .LVU885 + 2441 01a8 24E0 b .L134 + 2442 .LVL211: + 2443 .L157: + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DATA_TIMEOUT; + 2444 .loc 1 909 7 is_stmt 1 view .LVU886 + 2445 01aa 144A ldr r2, .L159 + 2446 01ac 9A63 str r2, [r3, #56] + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2447 .loc 1 910 7 view .LVU887 + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2448 .loc 1 910 22 is_stmt 0 view .LVU888 + 2449 01ae AB6B ldr r3, [r5, #56] + 2450 01b0 43F00803 orr r3, r3, #8 + 2451 01b4 AB63 str r3, [r5, #56] + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2452 .loc 1 911 7 is_stmt 1 view .LVU889 + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2453 .loc 1 911 18 is_stmt 0 view .LVU890 + 2454 01b6 0123 movs r3, #1 + 2455 01b8 85F83430 strb r3, [r5, #52] + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2456 .loc 1 912 7 is_stmt 1 view .LVU891 + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2457 .loc 1 912 20 is_stmt 0 view .LVU892 + 2458 01bc 0023 movs r3, #0 + 2459 01be 2B63 str r3, [r5, #48] + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2460 .loc 1 913 7 is_stmt 1 view .LVU893 + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2461 .loc 1 913 14 is_stmt 0 view .LVU894 + 2462 01c0 18E0 b .L134 + 2463 .L158: + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DATA_CRC_FAIL; + 2464 .loc 1 918 7 is_stmt 1 view .LVU895 + 2465 01c2 0E4A ldr r2, .L159 + 2466 01c4 9A63 str r2, [r3, #56] + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2467 .loc 1 919 7 view .LVU896 + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2468 .loc 1 919 22 is_stmt 0 view .LVU897 + 2469 01c6 AB6B ldr r3, [r5, #56] + 2470 01c8 43F00203 orr r3, r3, #2 + 2471 01cc AB63 str r3, [r5, #56] + ARM GAS /tmp/ccQEYyKb.s page 115 + + + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2472 .loc 1 920 7 is_stmt 1 view .LVU898 + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2473 .loc 1 920 18 is_stmt 0 view .LVU899 + 2474 01ce 0123 movs r3, #1 + 2475 01d0 85F83430 strb r3, [r5, #52] + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2476 .loc 1 921 7 is_stmt 1 view .LVU900 + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2477 .loc 1 921 20 is_stmt 0 view .LVU901 + 2478 01d4 0023 movs r3, #0 + 2479 01d6 2B63 str r3, [r5, #48] + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2480 .loc 1 922 7 is_stmt 1 view .LVU902 + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2481 .loc 1 922 14 is_stmt 0 view .LVU903 + 2482 01d8 0CE0 b .L134 + 2483 .L150: + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2484 .loc 1 936 5 is_stmt 1 view .LVU904 + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2485 .loc 1 939 5 view .LVU905 + 2486 01da 40F23A52 movw r2, #1338 + 2487 01de 9A63 str r2, [r3, #56] + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2488 .loc 1 941 5 view .LVU906 + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2489 .loc 1 941 16 is_stmt 0 view .LVU907 + 2490 01e0 0123 movs r3, #1 + 2491 01e2 85F83430 strb r3, [r5, #52] + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2492 .loc 1 943 5 is_stmt 1 view .LVU908 + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2493 .loc 1 943 12 is_stmt 0 view .LVU909 + 2494 01e6 0027 movs r7, #0 + 2495 01e8 04E0 b .L134 + 2496 .LVL212: + 2497 .L135: + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2498 .loc 1 947 5 is_stmt 1 view .LVU910 + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2499 .loc 1 947 20 is_stmt 0 view .LVU911 + 2500 01ea AB6B ldr r3, [r5, #56] + 2501 01ec 43F00053 orr r3, r3, #536870912 + 2502 01f0 AB63 str r3, [r5, #56] + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2503 .loc 1 948 5 is_stmt 1 view .LVU912 + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2504 .loc 1 948 12 is_stmt 0 view .LVU913 + 2505 01f2 0127 movs r7, #1 + 2506 .LVL213: + 2507 .L134: + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2508 .loc 1 950 1 view .LVU914 + 2509 01f4 3846 mov r0, r7 + 2510 01f6 0BB0 add sp, sp, #44 + 2511 .LCFI34: + ARM GAS /tmp/ccQEYyKb.s page 116 + + + 2512 .cfi_def_cfa_offset 36 + 2513 @ sp needed + 2514 01f8 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc} + 2515 .LVL214: + 2516 .L160: + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2517 .loc 1 950 1 view .LVU915 + 2518 .align 2 + 2519 .L159: + 2520 01fc FF054000 .word 4195839 + 2521 .cfi_endproc + 2522 .LFE147: + 2524 .section .text.HAL_SD_ReadBlocks_IT,"ax",%progbits + 2525 .align 1 + 2526 .global HAL_SD_ReadBlocks_IT + 2527 .syntax unified + 2528 .thumb + 2529 .thumb_func + 2530 .fpu fpv5-d16 + 2532 HAL_SD_ReadBlocks_IT: + 2533 .LVL215: + 2534 .LFB148: + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 2535 .loc 1 966 1 is_stmt 1 view -0 + 2536 .cfi_startproc + 2537 @ args = 0, pretend = 0, frame = 24 + 2538 @ frame_needed = 0, uses_anonymous_args = 0 + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 2539 .loc 1 966 1 is_stmt 0 view .LVU917 + 2540 0000 F0B5 push {r4, r5, r6, r7, lr} + 2541 .LCFI35: + 2542 .cfi_def_cfa_offset 20 + 2543 .cfi_offset 4, -20 + 2544 .cfi_offset 5, -16 + 2545 .cfi_offset 6, -12 + 2546 .cfi_offset 7, -8 + 2547 .cfi_offset 14, -4 + 2548 0002 87B0 sub sp, sp, #28 + 2549 .LCFI36: + 2550 .cfi_def_cfa_offset 48 + 2551 0004 0446 mov r4, r0 + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 2552 .loc 1 967 3 is_stmt 1 view .LVU918 + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; + 2553 .loc 1 968 3 view .LVU919 + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2554 .loc 1 969 3 view .LVU920 + 2555 .LVL216: + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2556 .loc 1 971 3 view .LVU921 + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2557 .loc 1 971 5 is_stmt 0 view .LVU922 + 2558 0006 0029 cmp r1, #0 + 2559 0008 45D0 beq .L171 + 2560 000a 1646 mov r6, r2 + 2561 000c 1F46 mov r7, r3 + 2562 000e 0A46 mov r2, r1 + ARM GAS /tmp/ccQEYyKb.s page 117 + + + 2563 .LVL217: + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2564 .loc 1 977 3 is_stmt 1 view .LVU923 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2565 .loc 1 977 9 is_stmt 0 view .LVU924 + 2566 0010 90F83450 ldrb r5, [r0, #52] @ zero_extendqisi2 + 2567 0014 EDB2 uxtb r5, r5 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2568 .loc 1 977 5 view .LVU925 + 2569 0016 012D cmp r5, #1 + 2570 0018 4FD1 bne .L168 + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2571 .loc 1 979 5 is_stmt 1 view .LVU926 + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2572 .loc 1 979 20 is_stmt 0 view .LVU927 + 2573 001a 0023 movs r3, #0 + 2574 .LVL218: + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2575 .loc 1 979 20 view .LVU928 + 2576 001c 8363 str r3, [r0, #56] + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2577 .loc 1 981 5 is_stmt 1 view .LVU929 + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2578 .loc 1 981 13 is_stmt 0 view .LVU930 + 2579 001e F319 adds r3, r6, r7 + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2580 .loc 1 981 45 view .LVU931 + 2581 0020 C16D ldr r1, [r0, #92] + 2582 .LVL219: + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2583 .loc 1 981 7 view .LVU932 + 2584 0022 8B42 cmp r3, r1 + 2585 0024 3DD8 bhi .L172 + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2586 .loc 1 987 5 is_stmt 1 view .LVU933 + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2587 .loc 1 987 16 is_stmt 0 view .LVU934 + 2588 0026 0323 movs r3, #3 + 2589 0028 80F83430 strb r3, [r0, #52] + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2590 .loc 1 990 5 is_stmt 1 view .LVU935 + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2591 .loc 1 990 8 is_stmt 0 view .LVU936 + 2592 002c 0368 ldr r3, [r0] + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2593 .loc 1 990 26 view .LVU937 + 2594 002e 0021 movs r1, #0 + 2595 0030 D962 str r1, [r3, #44] + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxXferSize = BLOCKSIZE * NumberOfBlocks; + 2596 .loc 1 992 5 is_stmt 1 view .LVU938 + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->RxXferSize = BLOCKSIZE * NumberOfBlocks; + 2597 .loc 1 992 21 is_stmt 0 view .LVU939 + 2598 0032 8262 str r2, [r0, #40] + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2599 .loc 1 993 5 is_stmt 1 view .LVU940 + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2600 .loc 1 993 33 is_stmt 0 view .LVU941 + ARM GAS /tmp/ccQEYyKb.s page 118 + + + 2601 0034 7A02 lsls r2, r7, #9 + 2602 .LVL220: + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2603 .loc 1 993 21 view .LVU942 + 2604 0036 C262 str r2, [r0, #44] + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2605 .loc 1 995 5 is_stmt 1 view .LVU943 + 2606 0038 0168 ldr r1, [r0] + 2607 003a C86B ldr r0, [r1, #60] + 2608 .LVL221: + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2609 .loc 1 995 5 is_stmt 0 view .LVU944 + 2610 003c 48F22A13 movw r3, #33066 + 2611 0040 0343 orrs r3, r3, r0 + 2612 0042 CB63 str r3, [r1, #60] + 2613 .LVL222: + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2614 .loc 1 997 5 is_stmt 1 view .LVU945 + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2615 .loc 1 997 19 is_stmt 0 view .LVU946 + 2616 0044 636C ldr r3, [r4, #68] + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2617 .loc 1 997 7 view .LVU947 + 2618 0046 012B cmp r3, #1 + 2619 0048 00D0 beq .L165 + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2620 .loc 1 999 7 is_stmt 1 view .LVU948 + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2621 .loc 1 999 11 is_stmt 0 view .LVU949 + 2622 004a 7602 lsls r6, r6, #9 + 2623 .LVL223: + 2624 .L165: +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; + 2625 .loc 1 1003 5 is_stmt 1 view .LVU950 +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; + 2626 .loc 1 1003 26 is_stmt 0 view .LVU951 + 2627 004c 4FF0FF33 mov r3, #-1 + 2628 0050 0093 str r3, [sp] +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 2629 .loc 1 1004 5 is_stmt 1 view .LVU952 +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 2630 .loc 1 1004 26 is_stmt 0 view .LVU953 + 2631 0052 0192 str r2, [sp, #4] +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 2632 .loc 1 1005 5 is_stmt 1 view .LVU954 +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 2633 .loc 1 1005 26 is_stmt 0 view .LVU955 + 2634 0054 9023 movs r3, #144 + 2635 0056 0293 str r3, [sp, #8] +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 2636 .loc 1 1006 5 is_stmt 1 view .LVU956 +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 2637 .loc 1 1006 26 is_stmt 0 view .LVU957 + 2638 0058 0223 movs r3, #2 + 2639 005a 0393 str r3, [sp, #12] +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 2640 .loc 1 1007 5 is_stmt 1 view .LVU958 + ARM GAS /tmp/ccQEYyKb.s page 119 + + +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 2641 .loc 1 1007 26 is_stmt 0 view .LVU959 + 2642 005c 0023 movs r3, #0 + 2643 005e 0493 str r3, [sp, #16] +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 2644 .loc 1 1008 5 is_stmt 1 view .LVU960 +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 2645 .loc 1 1008 26 is_stmt 0 view .LVU961 + 2646 0060 0123 movs r3, #1 + 2647 0062 0593 str r3, [sp, #20] +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2648 .loc 1 1009 5 is_stmt 1 view .LVU962 +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2649 .loc 1 1009 11 is_stmt 0 view .LVU963 + 2650 0064 6946 mov r1, sp + 2651 0066 2068 ldr r0, [r4] + 2652 0068 FFF7FEFF bl SDMMC_ConfigData + 2653 .LVL224: +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2654 .loc 1 1012 5 is_stmt 1 view .LVU964 +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2655 .loc 1 1012 7 is_stmt 0 view .LVU965 + 2656 006c 012F cmp r7, #1 + 2657 006e 1DD9 bls .L166 +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2658 .loc 1 1014 7 is_stmt 1 view .LVU966 +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2659 .loc 1 1014 20 is_stmt 0 view .LVU967 + 2660 0070 0A23 movs r3, #10 + 2661 0072 2363 str r3, [r4, #48] +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2662 .loc 1 1017 7 is_stmt 1 view .LVU968 +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2663 .loc 1 1017 20 is_stmt 0 view .LVU969 + 2664 0074 3146 mov r1, r6 + 2665 0076 2068 ldr r0, [r4] + 2666 0078 FFF7FEFF bl SDMMC_CmdReadMultiBlock + 2667 .LVL225: + 2668 .L167: +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2669 .loc 1 1026 5 is_stmt 1 view .LVU970 +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2670 .loc 1 1026 7 is_stmt 0 view .LVU971 + 2671 007c 08B3 cbz r0, .L169 +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 2672 .loc 1 1029 7 is_stmt 1 view .LVU972 + 2673 007e 2368 ldr r3, [r4] + 2674 0080 114A ldr r2, .L173 + 2675 0082 9A63 str r2, [r3, #56] +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2676 .loc 1 1030 7 view .LVU973 +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2677 .loc 1 1030 22 is_stmt 0 view .LVU974 + 2678 0084 A36B ldr r3, [r4, #56] + 2679 0086 1843 orrs r0, r0, r3 + 2680 .LVL226: +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + ARM GAS /tmp/ccQEYyKb.s page 120 + + + 2681 .loc 1 1030 22 view .LVU975 + 2682 0088 A063 str r0, [r4, #56] +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2683 .loc 1 1031 7 is_stmt 1 view .LVU976 +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2684 .loc 1 1031 18 is_stmt 0 view .LVU977 + 2685 008a 0123 movs r3, #1 + 2686 008c 84F83430 strb r3, [r4, #52] +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2687 .loc 1 1032 7 is_stmt 1 view .LVU978 +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2688 .loc 1 1032 20 is_stmt 0 view .LVU979 + 2689 0090 0023 movs r3, #0 + 2690 0092 2363 str r3, [r4, #48] +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2691 .loc 1 1033 7 is_stmt 1 view .LVU980 +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2692 .loc 1 1033 14 is_stmt 0 view .LVU981 + 2693 0094 12E0 b .L163 + 2694 .LVL227: + 2695 .L171: + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2696 .loc 1 973 5 is_stmt 1 view .LVU982 + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2697 .loc 1 973 20 is_stmt 0 view .LVU983 + 2698 0096 836B ldr r3, [r0, #56] + 2699 .LVL228: + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2700 .loc 1 973 20 view .LVU984 + 2701 0098 43F00063 orr r3, r3, #134217728 + 2702 009c 8363 str r3, [r0, #56] + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2703 .loc 1 974 5 is_stmt 1 view .LVU985 + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2704 .loc 1 974 12 is_stmt 0 view .LVU986 + 2705 009e 0125 movs r5, #1 + 2706 00a0 0CE0 b .L163 + 2707 .LVL229: + 2708 .L172: + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2709 .loc 1 983 7 is_stmt 1 view .LVU987 + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2710 .loc 1 983 22 is_stmt 0 view .LVU988 + 2711 00a2 836B ldr r3, [r0, #56] + 2712 00a4 43F00073 orr r3, r3, #33554432 + 2713 00a8 8363 str r3, [r0, #56] + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2714 .loc 1 984 7 is_stmt 1 view .LVU989 + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2715 .loc 1 984 14 is_stmt 0 view .LVU990 + 2716 00aa 07E0 b .L163 + 2717 .LVL230: + 2718 .L166: +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2719 .loc 1 1021 7 is_stmt 1 view .LVU991 +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2720 .loc 1 1021 20 is_stmt 0 view .LVU992 + ARM GAS /tmp/ccQEYyKb.s page 121 + + + 2721 00ac 0923 movs r3, #9 + 2722 00ae 2363 str r3, [r4, #48] +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2723 .loc 1 1024 7 is_stmt 1 view .LVU993 +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2724 .loc 1 1024 20 is_stmt 0 view .LVU994 + 2725 00b0 3146 mov r1, r6 + 2726 00b2 2068 ldr r0, [r4] + 2727 00b4 FFF7FEFF bl SDMMC_CmdReadSingleBlock + 2728 .LVL231: +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2729 .loc 1 1024 20 view .LVU995 + 2730 00b8 E0E7 b .L167 + 2731 .LVL232: + 2732 .L168: +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2733 .loc 1 1040 12 view .LVU996 + 2734 00ba 0225 movs r5, #2 + 2735 .LVL233: + 2736 .L163: +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2737 .loc 1 1042 1 view .LVU997 + 2738 00bc 2846 mov r0, r5 + 2739 00be 07B0 add sp, sp, #28 + 2740 .LCFI37: + 2741 .cfi_remember_state + 2742 .cfi_def_cfa_offset 20 + 2743 @ sp needed + 2744 00c0 F0BD pop {r4, r5, r6, r7, pc} + 2745 .LVL234: + 2746 .L169: + 2747 .LCFI38: + 2748 .cfi_restore_state +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2749 .loc 1 1036 12 view .LVU998 + 2750 00c2 0025 movs r5, #0 + 2751 00c4 FAE7 b .L163 + 2752 .L174: + 2753 00c6 00BF .align 2 + 2754 .L173: + 2755 00c8 FF054000 .word 4195839 + 2756 .cfi_endproc + 2757 .LFE148: + 2759 .section .text.HAL_SD_WriteBlocks_IT,"ax",%progbits + 2760 .align 1 + 2761 .global HAL_SD_WriteBlocks_IT + 2762 .syntax unified + 2763 .thumb + 2764 .thumb_func + 2765 .fpu fpv5-d16 + 2767 HAL_SD_WriteBlocks_IT: + 2768 .LVL235: + 2769 .LFB149: +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 2770 .loc 1 1058 1 is_stmt 1 view -0 + 2771 .cfi_startproc + 2772 @ args = 0, pretend = 0, frame = 24 + ARM GAS /tmp/ccQEYyKb.s page 122 + + + 2773 @ frame_needed = 0, uses_anonymous_args = 0 +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 2774 .loc 1 1058 1 is_stmt 0 view .LVU1000 + 2775 0000 F0B5 push {r4, r5, r6, r7, lr} + 2776 .LCFI39: + 2777 .cfi_def_cfa_offset 20 + 2778 .cfi_offset 4, -20 + 2779 .cfi_offset 5, -16 + 2780 .cfi_offset 6, -12 + 2781 .cfi_offset 7, -8 + 2782 .cfi_offset 14, -4 + 2783 0002 87B0 sub sp, sp, #28 + 2784 .LCFI40: + 2785 .cfi_def_cfa_offset 48 + 2786 0004 0446 mov r4, r0 +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 2787 .loc 1 1059 3 is_stmt 1 view .LVU1001 +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; + 2788 .loc 1 1060 3 view .LVU1002 +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2789 .loc 1 1061 3 view .LVU1003 + 2790 .LVL236: +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2791 .loc 1 1063 3 view .LVU1004 +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2792 .loc 1 1063 5 is_stmt 0 view .LVU1005 + 2793 0006 0029 cmp r1, #0 + 2794 0008 33D0 beq .L185 + 2795 000a 0846 mov r0, r1 + 2796 .LVL237: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2797 .loc 1 1069 3 is_stmt 1 view .LVU1006 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2798 .loc 1 1069 9 is_stmt 0 view .LVU1007 + 2799 000c 94F83450 ldrb r5, [r4, #52] @ zero_extendqisi2 + 2800 0010 EDB2 uxtb r5, r5 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2801 .loc 1 1069 5 view .LVU1008 + 2802 0012 012D cmp r5, #1 + 2803 0014 4FD1 bne .L183 +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2804 .loc 1 1071 5 is_stmt 1 view .LVU1009 +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2805 .loc 1 1071 20 is_stmt 0 view .LVU1010 + 2806 0016 0021 movs r1, #0 + 2807 .LVL238: +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2808 .loc 1 1071 20 view .LVU1011 + 2809 0018 A163 str r1, [r4, #56] +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2810 .loc 1 1073 5 is_stmt 1 view .LVU1012 +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2811 .loc 1 1073 13 is_stmt 0 view .LVU1013 + 2812 001a D118 adds r1, r2, r3 +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2813 .loc 1 1073 45 view .LVU1014 + 2814 001c E66D ldr r6, [r4, #92] + ARM GAS /tmp/ccQEYyKb.s page 123 + + +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2815 .loc 1 1073 7 view .LVU1015 + 2816 001e B142 cmp r1, r6 + 2817 0020 2DD8 bhi .L186 +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2818 .loc 1 1079 5 is_stmt 1 view .LVU1016 +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2819 .loc 1 1079 16 is_stmt 0 view .LVU1017 + 2820 0022 0321 movs r1, #3 + 2821 0024 84F83410 strb r1, [r4, #52] +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2822 .loc 1 1082 5 is_stmt 1 view .LVU1018 +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2823 .loc 1 1082 8 is_stmt 0 view .LVU1019 + 2824 0028 2168 ldr r1, [r4] +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2825 .loc 1 1082 26 view .LVU1020 + 2826 002a 0026 movs r6, #0 + 2827 002c CE62 str r6, [r1, #44] +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxXferSize = BLOCKSIZE * NumberOfBlocks; + 2828 .loc 1 1084 5 is_stmt 1 view .LVU1021 +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->TxXferSize = BLOCKSIZE * NumberOfBlocks; + 2829 .loc 1 1084 21 is_stmt 0 view .LVU1022 + 2830 002e 2062 str r0, [r4, #32] +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2831 .loc 1 1085 5 is_stmt 1 view .LVU1023 +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2832 .loc 1 1085 33 is_stmt 0 view .LVU1024 + 2833 0030 5E02 lsls r6, r3, #9 +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2834 .loc 1 1085 21 view .LVU1025 + 2835 0032 6662 str r6, [r4, #36] +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2836 .loc 1 1088 5 is_stmt 1 view .LVU1026 + 2837 0034 2068 ldr r0, [r4] + 2838 .LVL239: +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2839 .loc 1 1088 5 is_stmt 0 view .LVU1027 + 2840 0036 C76B ldr r7, [r0, #60] + 2841 0038 44F21A11 movw r1, #16666 + 2842 003c 3943 orrs r1, r1, r7 + 2843 003e C163 str r1, [r0, #60] + 2844 .LVL240: +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2845 .loc 1 1090 5 is_stmt 1 view .LVU1028 +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2846 .loc 1 1090 19 is_stmt 0 view .LVU1029 + 2847 0040 616C ldr r1, [r4, #68] +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2848 .loc 1 1090 7 view .LVU1030 + 2849 0042 0129 cmp r1, #1 + 2850 0044 00D0 beq .L179 +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2851 .loc 1 1092 7 is_stmt 1 view .LVU1031 +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2852 .loc 1 1092 11 is_stmt 0 view .LVU1032 + 2853 0046 5202 lsls r2, r2, #9 + ARM GAS /tmp/ccQEYyKb.s page 124 + + + 2854 .LVL241: + 2855 .L179: +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2856 .loc 1 1096 5 is_stmt 1 view .LVU1033 +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2857 .loc 1 1096 7 is_stmt 0 view .LVU1034 + 2858 0048 012B cmp r3, #1 + 2859 004a 1DD9 bls .L180 +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2860 .loc 1 1098 7 is_stmt 1 view .LVU1035 +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2861 .loc 1 1098 20 is_stmt 0 view .LVU1036 + 2862 004c 2823 movs r3, #40 + 2863 .LVL242: +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2864 .loc 1 1098 20 view .LVU1037 + 2865 004e 2363 str r3, [r4, #48] +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2866 .loc 1 1101 7 is_stmt 1 view .LVU1038 +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2867 .loc 1 1101 20 is_stmt 0 view .LVU1039 + 2868 0050 1146 mov r1, r2 + 2869 0052 2068 ldr r0, [r4] + 2870 0054 FFF7FEFF bl SDMMC_CmdWriteMultiBlock + 2871 .LVL243: + 2872 .L181: +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2873 .loc 1 1110 5 is_stmt 1 view .LVU1040 +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 2874 .loc 1 1110 7 is_stmt 0 view .LVU1041 + 2875 0058 E8B1 cbz r0, .L182 +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 2876 .loc 1 1113 7 is_stmt 1 view .LVU1042 + 2877 005a 2368 ldr r3, [r4] + 2878 005c 184A ldr r2, .L187 + 2879 005e 9A63 str r2, [r3, #56] +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2880 .loc 1 1114 7 view .LVU1043 +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2881 .loc 1 1114 22 is_stmt 0 view .LVU1044 + 2882 0060 A36B ldr r3, [r4, #56] + 2883 0062 1843 orrs r0, r0, r3 + 2884 .LVL244: +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 2885 .loc 1 1114 22 view .LVU1045 + 2886 0064 A063 str r0, [r4, #56] +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2887 .loc 1 1115 7 is_stmt 1 view .LVU1046 +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 2888 .loc 1 1115 18 is_stmt 0 view .LVU1047 + 2889 0066 0123 movs r3, #1 + 2890 0068 84F83430 strb r3, [r4, #52] +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2891 .loc 1 1116 7 is_stmt 1 view .LVU1048 +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2892 .loc 1 1116 20 is_stmt 0 view .LVU1049 + 2893 006c 0023 movs r3, #0 + ARM GAS /tmp/ccQEYyKb.s page 125 + + + 2894 006e 2363 str r3, [r4, #48] +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2895 .loc 1 1117 7 is_stmt 1 view .LVU1050 +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2896 .loc 1 1117 14 is_stmt 0 view .LVU1051 + 2897 0070 22E0 b .L177 + 2898 .LVL245: + 2899 .L185: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2900 .loc 1 1065 5 is_stmt 1 view .LVU1052 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2901 .loc 1 1065 20 is_stmt 0 view .LVU1053 + 2902 0072 836B ldr r3, [r0, #56] + 2903 .LVL246: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2904 .loc 1 1065 20 view .LVU1054 + 2905 0074 43F00063 orr r3, r3, #134217728 + 2906 0078 8363 str r3, [r0, #56] +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2907 .loc 1 1066 5 is_stmt 1 view .LVU1055 +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2908 .loc 1 1066 12 is_stmt 0 view .LVU1056 + 2909 007a 0125 movs r5, #1 + 2910 007c 1CE0 b .L177 + 2911 .LVL247: + 2912 .L186: +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2913 .loc 1 1075 7 is_stmt 1 view .LVU1057 +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2914 .loc 1 1075 22 is_stmt 0 view .LVU1058 + 2915 007e A36B ldr r3, [r4, #56] + 2916 .LVL248: +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 2917 .loc 1 1075 22 view .LVU1059 + 2918 0080 43F00073 orr r3, r3, #33554432 + 2919 0084 A363 str r3, [r4, #56] +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2920 .loc 1 1076 7 is_stmt 1 view .LVU1060 +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2921 .loc 1 1076 14 is_stmt 0 view .LVU1061 + 2922 0086 17E0 b .L177 + 2923 .LVL249: + 2924 .L180: +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2925 .loc 1 1105 7 is_stmt 1 view .LVU1062 +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2926 .loc 1 1105 20 is_stmt 0 view .LVU1063 + 2927 0088 1823 movs r3, #24 + 2928 .LVL250: +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2929 .loc 1 1105 20 view .LVU1064 + 2930 008a 2363 str r3, [r4, #48] +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2931 .loc 1 1108 7 is_stmt 1 view .LVU1065 +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2932 .loc 1 1108 20 is_stmt 0 view .LVU1066 + 2933 008c 1146 mov r1, r2 + ARM GAS /tmp/ccQEYyKb.s page 126 + + + 2934 008e 2068 ldr r0, [r4] + 2935 0090 FFF7FEFF bl SDMMC_CmdWriteSingleBlock + 2936 .LVL251: +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2937 .loc 1 1108 20 view .LVU1067 + 2938 0094 E0E7 b .L181 + 2939 .L182: +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; + 2940 .loc 1 1121 5 is_stmt 1 view .LVU1068 +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; + 2941 .loc 1 1121 26 is_stmt 0 view .LVU1069 + 2942 0096 4FF0FF33 mov r3, #-1 + 2943 009a 0093 str r3, [sp] +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 2944 .loc 1 1122 5 is_stmt 1 view .LVU1070 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 2945 .loc 1 1122 26 is_stmt 0 view .LVU1071 + 2946 009c 0196 str r6, [sp, #4] +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; + 2947 .loc 1 1123 5 is_stmt 1 view .LVU1072 +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; + 2948 .loc 1 1123 26 is_stmt 0 view .LVU1073 + 2949 009e 9023 movs r3, #144 + 2950 00a0 0293 str r3, [sp, #8] +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 2951 .loc 1 1124 5 is_stmt 1 view .LVU1074 +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 2952 .loc 1 1124 26 is_stmt 0 view .LVU1075 + 2953 00a2 0025 movs r5, #0 + 2954 00a4 0395 str r5, [sp, #12] +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 2955 .loc 1 1125 5 is_stmt 1 view .LVU1076 +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 2956 .loc 1 1125 26 is_stmt 0 view .LVU1077 + 2957 00a6 0495 str r5, [sp, #16] +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 2958 .loc 1 1126 5 is_stmt 1 view .LVU1078 +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 2959 .loc 1 1126 26 is_stmt 0 view .LVU1079 + 2960 00a8 0123 movs r3, #1 + 2961 00aa 0593 str r3, [sp, #20] +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2962 .loc 1 1127 5 is_stmt 1 view .LVU1080 +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2963 .loc 1 1127 11 is_stmt 0 view .LVU1081 + 2964 00ac 6946 mov r1, sp + 2965 00ae 2068 ldr r0, [r4] + 2966 .LVL252: +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2967 .loc 1 1127 11 view .LVU1082 + 2968 00b0 FFF7FEFF bl SDMMC_ConfigData + 2969 .LVL253: +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2970 .loc 1 1129 5 is_stmt 1 view .LVU1083 +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2971 .loc 1 1129 12 is_stmt 0 view .LVU1084 + 2972 00b4 00E0 b .L177 + ARM GAS /tmp/ccQEYyKb.s page 127 + + + 2973 .LVL254: + 2974 .L183: +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 2975 .loc 1 1133 12 view .LVU1085 + 2976 00b6 0225 movs r5, #2 + 2977 .LVL255: + 2978 .L177: +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2979 .loc 1 1135 1 view .LVU1086 + 2980 00b8 2846 mov r0, r5 + 2981 00ba 07B0 add sp, sp, #28 + 2982 .LCFI41: + 2983 .cfi_def_cfa_offset 20 + 2984 @ sp needed + 2985 00bc F0BD pop {r4, r5, r6, r7, pc} + 2986 .LVL256: + 2987 .L188: +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 2988 .loc 1 1135 1 view .LVU1087 + 2989 00be 00BF .align 2 + 2990 .L187: + 2991 00c0 FF054000 .word 4195839 + 2992 .cfi_endproc + 2993 .LFE149: + 2995 .section .text.HAL_SD_ReadBlocks_DMA,"ax",%progbits + 2996 .align 1 + 2997 .global HAL_SD_ReadBlocks_DMA + 2998 .syntax unified + 2999 .thumb + 3000 .thumb_func + 3001 .fpu fpv5-d16 + 3003 HAL_SD_ReadBlocks_DMA: + 3004 .LVL257: + 3005 .LFB150: +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 3006 .loc 1 1151 1 is_stmt 1 view -0 + 3007 .cfi_startproc + 3008 @ args = 0, pretend = 0, frame = 24 + 3009 @ frame_needed = 0, uses_anonymous_args = 0 +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 3010 .loc 1 1151 1 is_stmt 0 view .LVU1089 + 3011 0000 2DE9F043 push {r4, r5, r6, r7, r8, r9, lr} + 3012 .LCFI42: + 3013 .cfi_def_cfa_offset 28 + 3014 .cfi_offset 4, -28 + 3015 .cfi_offset 5, -24 + 3016 .cfi_offset 6, -20 + 3017 .cfi_offset 7, -16 + 3018 .cfi_offset 8, -12 + 3019 .cfi_offset 9, -8 + 3020 .cfi_offset 14, -4 + 3021 0004 87B0 sub sp, sp, #28 + 3022 .LCFI43: + 3023 .cfi_def_cfa_offset 56 + 3024 0006 0446 mov r4, r0 +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 3025 .loc 1 1152 3 is_stmt 1 view .LVU1090 + ARM GAS /tmp/ccQEYyKb.s page 128 + + +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; + 3026 .loc 1 1153 3 view .LVU1091 +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3027 .loc 1 1154 3 view .LVU1092 + 3028 .LVL258: +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3029 .loc 1 1156 3 view .LVU1093 +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3030 .loc 1 1156 5 is_stmt 0 view .LVU1094 + 3031 0008 91B1 cbz r1, .L200 + 3032 000a 1646 mov r6, r2 + 3033 000c 1F46 mov r7, r3 + 3034 000e 0A46 mov r2, r1 + 3035 .LVL259: +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3036 .loc 1 1162 3 is_stmt 1 view .LVU1095 +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3037 .loc 1 1162 9 is_stmt 0 view .LVU1096 + 3038 0010 90F83450 ldrb r5, [r0, #52] @ zero_extendqisi2 + 3039 0014 EDB2 uxtb r5, r5 +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3040 .loc 1 1162 5 view .LVU1097 + 3041 0016 012D cmp r5, #1 + 3042 0018 7FD1 bne .L197 +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3043 .loc 1 1164 5 is_stmt 1 view .LVU1098 +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3044 .loc 1 1164 20 is_stmt 0 view .LVU1099 + 3045 001a 0023 movs r3, #0 + 3046 .LVL260: +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3047 .loc 1 1164 20 view .LVU1100 + 3048 001c 8363 str r3, [r0, #56] +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3049 .loc 1 1166 5 is_stmt 1 view .LVU1101 +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3050 .loc 1 1166 13 is_stmt 0 view .LVU1102 + 3051 001e F019 adds r0, r6, r7 + 3052 .LVL261: +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3053 .loc 1 1166 45 view .LVU1103 + 3054 0020 E36D ldr r3, [r4, #92] +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3055 .loc 1 1166 7 view .LVU1104 + 3056 0022 9842 cmp r0, r3 + 3057 0024 0AD9 bls .L192 +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3058 .loc 1 1168 7 is_stmt 1 view .LVU1105 +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3059 .loc 1 1168 22 is_stmt 0 view .LVU1106 + 3060 0026 A36B ldr r3, [r4, #56] + 3061 0028 43F00073 orr r3, r3, #33554432 + 3062 002c A363 str r3, [r4, #56] +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3063 .loc 1 1169 7 is_stmt 1 view .LVU1107 +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3064 .loc 1 1169 14 is_stmt 0 view .LVU1108 + ARM GAS /tmp/ccQEYyKb.s page 129 + + + 3065 002e 75E0 b .L191 + 3066 .LVL262: + 3067 .L200: +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3068 .loc 1 1158 5 is_stmt 1 view .LVU1109 +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3069 .loc 1 1158 20 is_stmt 0 view .LVU1110 + 3070 0030 836B ldr r3, [r0, #56] + 3071 .LVL263: +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3072 .loc 1 1158 20 view .LVU1111 + 3073 0032 43F00063 orr r3, r3, #134217728 + 3074 0036 8363 str r3, [r0, #56] +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3075 .loc 1 1159 5 is_stmt 1 view .LVU1112 +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3076 .loc 1 1159 12 is_stmt 0 view .LVU1113 + 3077 0038 0125 movs r5, #1 + 3078 003a 6FE0 b .L191 + 3079 .LVL264: + 3080 .L192: +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3081 .loc 1 1172 5 is_stmt 1 view .LVU1114 +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3082 .loc 1 1172 16 is_stmt 0 view .LVU1115 + 3083 003c 0323 movs r3, #3 + 3084 003e 84F83430 strb r3, [r4, #52] +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3085 .loc 1 1175 5 is_stmt 1 view .LVU1116 +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3086 .loc 1 1175 8 is_stmt 0 view .LVU1117 + 3087 0042 2168 ldr r1, [r4] + 3088 .LVL265: +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3089 .loc 1 1175 26 view .LVU1118 + 3090 0044 0023 movs r3, #0 + 3091 0046 CB62 str r3, [r1, #44] +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3092 .loc 1 1177 5 is_stmt 1 view .LVU1119 + 3093 0048 2068 ldr r0, [r4] + 3094 004a C16B ldr r1, [r0, #60] + 3095 004c 41F49571 orr r1, r1, #298 + 3096 0050 C163 str r1, [r0, #60] +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3097 .loc 1 1180 5 view .LVU1120 +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3098 .loc 1 1180 8 is_stmt 0 view .LVU1121 + 3099 0052 216C ldr r1, [r4, #64] +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3100 .loc 1 1180 35 view .LVU1122 + 3101 0054 3448 ldr r0, .L202 + 3102 0056 C863 str r0, [r1, #60] +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3103 .loc 1 1183 5 is_stmt 1 view .LVU1123 +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3104 .loc 1 1183 8 is_stmt 0 view .LVU1124 + 3105 0058 216C ldr r1, [r4, #64] + ARM GAS /tmp/ccQEYyKb.s page 130 + + +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3106 .loc 1 1183 36 view .LVU1125 + 3107 005a 3448 ldr r0, .L202+4 + 3108 005c C864 str r0, [r1, #76] +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3109 .loc 1 1186 5 is_stmt 1 view .LVU1126 +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3110 .loc 1 1186 8 is_stmt 0 view .LVU1127 + 3111 005e 216C ldr r1, [r4, #64] +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3112 .loc 1 1186 36 view .LVU1128 + 3113 0060 0B65 str r3, [r1, #80] +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** MODIFY_REG(hsd->hdmarx->Instance->CR, DMA_SxCR_DIR, hsd->hdmarx->Init.Direction); + 3114 .loc 1 1189 5 is_stmt 1 view .LVU1129 +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** MODIFY_REG(hsd->hdmarx->Instance->CR, DMA_SxCR_DIR, hsd->hdmarx->Init.Direction); + 3115 .loc 1 1189 8 is_stmt 0 view .LVU1130 + 3116 0062 216C ldr r1, [r4, #64] +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** MODIFY_REG(hsd->hdmarx->Instance->CR, DMA_SxCR_DIR, hsd->hdmarx->Init.Direction); + 3117 .loc 1 1189 33 view .LVU1131 + 3118 0064 8B60 str r3, [r1, #8] +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3119 .loc 1 1190 5 is_stmt 1 view .LVU1132 + 3120 0066 206C ldr r0, [r4, #64] + 3121 0068 0168 ldr r1, [r0] + 3122 006a 0B68 ldr r3, [r1] + 3123 006c 23F0C003 bic r3, r3, #192 + 3124 0070 8068 ldr r0, [r0, #8] + 3125 0072 0343 orrs r3, r3, r0 + 3126 0074 0B60 str r3, [r1] +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3127 .loc 1 1193 5 view .LVU1133 +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3128 .loc 1 1193 52 is_stmt 0 view .LVU1134 + 3129 0076 2168 ldr r1, [r4] +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3130 .loc 1 1193 87 view .LVU1135 + 3131 0078 4FEA4729 lsl r9, r7, #9 +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3132 .loc 1 1193 8 view .LVU1136 + 3133 007c 4FEA9903 lsr r3, r9, #2 + 3134 0080 8031 adds r1, r1, #128 + 3135 0082 206C ldr r0, [r4, #64] + 3136 0084 FFF7FEFF bl HAL_DMA_Start_IT + 3137 .LVL266: +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3138 .loc 1 1193 7 view .LVU1137 + 3139 0088 8046 mov r8, r0 + 3140 008a 0028 cmp r0, #0 + 3141 008c 2ED1 bne .L201 +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3142 .loc 1 1204 7 is_stmt 1 view .LVU1138 + 3143 008e 2268 ldr r2, [r4] + 3144 0090 D36A ldr r3, [r2, #44] + 3145 0092 43F00803 orr r3, r3, #8 + 3146 0096 D362 str r3, [r2, #44] +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3147 .loc 1 1206 7 view .LVU1139 + ARM GAS /tmp/ccQEYyKb.s page 131 + + +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3148 .loc 1 1206 21 is_stmt 0 view .LVU1140 + 3149 0098 636C ldr r3, [r4, #68] +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3150 .loc 1 1206 9 view .LVU1141 + 3151 009a 012B cmp r3, #1 + 3152 009c 00D0 beq .L194 +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3153 .loc 1 1208 9 is_stmt 1 view .LVU1142 +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3154 .loc 1 1208 13 is_stmt 0 view .LVU1143 + 3155 009e 7602 lsls r6, r6, #9 + 3156 .LVL267: + 3157 .L194: +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; + 3158 .loc 1 1212 7 is_stmt 1 view .LVU1144 +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; + 3159 .loc 1 1212 28 is_stmt 0 view .LVU1145 + 3160 00a0 4FF0FF33 mov r3, #-1 + 3161 00a4 0093 str r3, [sp] +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 3162 .loc 1 1213 7 is_stmt 1 view .LVU1146 +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 3163 .loc 1 1213 28 is_stmt 0 view .LVU1147 + 3164 00a6 CDF80490 str r9, [sp, #4] +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 3165 .loc 1 1214 7 is_stmt 1 view .LVU1148 +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_SDMMC; + 3166 .loc 1 1214 28 is_stmt 0 view .LVU1149 + 3167 00aa 9023 movs r3, #144 + 3168 00ac 0293 str r3, [sp, #8] +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 3169 .loc 1 1215 7 is_stmt 1 view .LVU1150 +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 3170 .loc 1 1215 28 is_stmt 0 view .LVU1151 + 3171 00ae 0223 movs r3, #2 + 3172 00b0 0393 str r3, [sp, #12] +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 3173 .loc 1 1216 7 is_stmt 1 view .LVU1152 +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 3174 .loc 1 1216 28 is_stmt 0 view .LVU1153 + 3175 00b2 0023 movs r3, #0 + 3176 00b4 0493 str r3, [sp, #16] +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 3177 .loc 1 1217 7 is_stmt 1 view .LVU1154 +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 3178 .loc 1 1217 28 is_stmt 0 view .LVU1155 + 3179 00b6 0123 movs r3, #1 + 3180 00b8 0593 str r3, [sp, #20] +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3181 .loc 1 1218 7 is_stmt 1 view .LVU1156 +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3182 .loc 1 1218 13 is_stmt 0 view .LVU1157 + 3183 00ba 6946 mov r1, sp + 3184 00bc 2068 ldr r0, [r4] + 3185 00be FFF7FEFF bl SDMMC_ConfigData + 3186 .LVL268: + ARM GAS /tmp/ccQEYyKb.s page 132 + + +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3187 .loc 1 1221 7 is_stmt 1 view .LVU1158 +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3188 .loc 1 1221 9 is_stmt 0 view .LVU1159 + 3189 00c2 012F cmp r7, #1 + 3190 00c4 22D9 bls .L195 +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3191 .loc 1 1223 9 is_stmt 1 view .LVU1160 +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3192 .loc 1 1223 22 is_stmt 0 view .LVU1161 + 3193 00c6 8223 movs r3, #130 + 3194 00c8 2363 str r3, [r4, #48] +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3195 .loc 1 1226 9 is_stmt 1 view .LVU1162 +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3196 .loc 1 1226 22 is_stmt 0 view .LVU1163 + 3197 00ca 3146 mov r1, r6 + 3198 00cc 2068 ldr r0, [r4] + 3199 00ce FFF7FEFF bl SDMMC_CmdReadMultiBlock + 3200 .LVL269: + 3201 .L196: +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3202 .loc 1 1235 7 is_stmt 1 view .LVU1164 +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3203 .loc 1 1235 9 is_stmt 0 view .LVU1165 + 3204 00d2 38B3 cbz r0, .L198 +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 3205 .loc 1 1238 9 is_stmt 1 view .LVU1166 + 3206 00d4 2368 ldr r3, [r4] + 3207 00d6 164A ldr r2, .L202+8 + 3208 00d8 9A63 str r2, [r3, #56] +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3209 .loc 1 1239 9 view .LVU1167 +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3210 .loc 1 1239 24 is_stmt 0 view .LVU1168 + 3211 00da A36B ldr r3, [r4, #56] + 3212 00dc 1843 orrs r0, r0, r3 + 3213 .LVL270: +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3214 .loc 1 1239 24 view .LVU1169 + 3215 00de A063 str r0, [r4, #56] +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 3216 .loc 1 1240 9 is_stmt 1 view .LVU1170 +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 3217 .loc 1 1240 20 is_stmt 0 view .LVU1171 + 3218 00e0 0123 movs r3, #1 + 3219 00e2 84F83430 strb r3, [r4, #52] +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3220 .loc 1 1241 9 is_stmt 1 view .LVU1172 +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3221 .loc 1 1241 22 is_stmt 0 view .LVU1173 + 3222 00e6 0023 movs r3, #0 + 3223 00e8 2363 str r3, [r4, #48] +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3224 .loc 1 1242 9 is_stmt 1 view .LVU1174 +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3225 .loc 1 1242 16 is_stmt 0 view .LVU1175 + ARM GAS /tmp/ccQEYyKb.s page 133 + + + 3226 00ea 17E0 b .L191 + 3227 .LVL271: + 3228 .L201: +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 3229 .loc 1 1195 7 is_stmt 1 view .LVU1176 + 3230 00ec 2268 ldr r2, [r4] + 3231 00ee D36B ldr r3, [r2, #60] + 3232 00f0 23F49573 bic r3, r3, #298 + 3233 00f4 D363 str r3, [r2, #60] +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DMA; + 3234 .loc 1 1196 7 view .LVU1177 + 3235 00f6 2368 ldr r3, [r4] + 3236 00f8 0D4A ldr r2, .L202+8 + 3237 00fa 9A63 str r2, [r3, #56] +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3238 .loc 1 1197 7 view .LVU1178 +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3239 .loc 1 1197 22 is_stmt 0 view .LVU1179 + 3240 00fc A36B ldr r3, [r4, #56] + 3241 00fe 43F08043 orr r3, r3, #1073741824 + 3242 0102 A363 str r3, [r4, #56] +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3243 .loc 1 1198 7 is_stmt 1 view .LVU1180 +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3244 .loc 1 1198 18 is_stmt 0 view .LVU1181 + 3245 0104 0123 movs r3, #1 + 3246 0106 84F83430 strb r3, [r4, #52] +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3247 .loc 1 1199 7 is_stmt 1 view .LVU1182 +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3248 .loc 1 1199 14 is_stmt 0 view .LVU1183 + 3249 010a 07E0 b .L191 + 3250 .LVL272: + 3251 .L195: +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3252 .loc 1 1230 9 is_stmt 1 view .LVU1184 +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3253 .loc 1 1230 22 is_stmt 0 view .LVU1185 + 3254 010c 8123 movs r3, #129 + 3255 010e 2363 str r3, [r4, #48] +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3256 .loc 1 1233 9 is_stmt 1 view .LVU1186 +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3257 .loc 1 1233 22 is_stmt 0 view .LVU1187 + 3258 0110 3146 mov r1, r6 + 3259 0112 2068 ldr r0, [r4] + 3260 0114 FFF7FEFF bl SDMMC_CmdReadSingleBlock + 3261 .LVL273: +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3262 .loc 1 1233 22 view .LVU1188 + 3263 0118 DBE7 b .L196 + 3264 .LVL274: + 3265 .L197: +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3266 .loc 1 1250 12 view .LVU1189 + 3267 011a 0225 movs r5, #2 + 3268 .LVL275: + ARM GAS /tmp/ccQEYyKb.s page 134 + + + 3269 .L191: +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3270 .loc 1 1252 1 view .LVU1190 + 3271 011c 2846 mov r0, r5 + 3272 011e 07B0 add sp, sp, #28 + 3273 .LCFI44: + 3274 .cfi_remember_state + 3275 .cfi_def_cfa_offset 28 + 3276 @ sp needed + 3277 0120 BDE8F083 pop {r4, r5, r6, r7, r8, r9, pc} + 3278 .LVL276: + 3279 .L198: + 3280 .LCFI45: + 3281 .cfi_restore_state +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3282 .loc 1 1245 14 view .LVU1191 + 3283 0124 4546 mov r5, r8 + 3284 0126 F9E7 b .L191 + 3285 .L203: + 3286 .align 2 + 3287 .L202: + 3288 0128 00000000 .word SD_DMAReceiveCplt + 3289 012c 00000000 .word SD_DMAError + 3290 0130 FF054000 .word 4195839 + 3291 .cfi_endproc + 3292 .LFE150: + 3294 .section .text.HAL_SD_WriteBlocks_DMA,"ax",%progbits + 3295 .align 1 + 3296 .global HAL_SD_WriteBlocks_DMA + 3297 .syntax unified + 3298 .thumb + 3299 .thumb_func + 3300 .fpu fpv5-d16 + 3302 HAL_SD_WriteBlocks_DMA: + 3303 .LVL277: + 3304 .LFB151: +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 3305 .loc 1 1268 1 is_stmt 1 view -0 + 3306 .cfi_startproc + 3307 @ args = 0, pretend = 0, frame = 24 + 3308 @ frame_needed = 0, uses_anonymous_args = 0 +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_DataInitTypeDef config; + 3309 .loc 1 1268 1 is_stmt 0 view .LVU1193 + 3310 0000 F0B5 push {r4, r5, r6, r7, lr} + 3311 .LCFI46: + 3312 .cfi_def_cfa_offset 20 + 3313 .cfi_offset 4, -20 + 3314 .cfi_offset 5, -16 + 3315 .cfi_offset 6, -12 + 3316 .cfi_offset 7, -8 + 3317 .cfi_offset 14, -4 + 3318 0002 87B0 sub sp, sp, #28 + 3319 .LCFI47: + 3320 .cfi_def_cfa_offset 48 + 3321 0004 0446 mov r4, r0 +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 3322 .loc 1 1269 3 is_stmt 1 view .LVU1194 + ARM GAS /tmp/ccQEYyKb.s page 135 + + +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t add = BlockAdd; + 3323 .loc 1 1270 3 view .LVU1195 +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3324 .loc 1 1271 3 view .LVU1196 + 3325 .LVL278: +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3326 .loc 1 1273 3 view .LVU1197 +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3327 .loc 1 1273 5 is_stmt 0 view .LVU1198 + 3328 0006 0029 cmp r1, #0 + 3329 0008 39D0 beq .L215 + 3330 000a 1E46 mov r6, r3 + 3331 000c 0F46 mov r7, r1 +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3332 .loc 1 1279 3 is_stmt 1 view .LVU1199 +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3333 .loc 1 1279 9 is_stmt 0 view .LVU1200 + 3334 000e 90F83450 ldrb r5, [r0, #52] @ zero_extendqisi2 + 3335 0012 EDB2 uxtb r5, r5 +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3336 .loc 1 1279 5 view .LVU1201 + 3337 0014 012D cmp r5, #1 + 3338 0016 40F08180 bne .L213 +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3339 .loc 1 1281 5 is_stmt 1 view .LVU1202 +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3340 .loc 1 1281 20 is_stmt 0 view .LVU1203 + 3341 001a 0023 movs r3, #0 + 3342 .LVL279: +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3343 .loc 1 1281 20 view .LVU1204 + 3344 001c 8363 str r3, [r0, #56] +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3345 .loc 1 1283 5 is_stmt 1 view .LVU1205 +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3346 .loc 1 1283 13 is_stmt 0 view .LVU1206 + 3347 001e 9319 adds r3, r2, r6 +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3348 .loc 1 1283 45 view .LVU1207 + 3349 0020 C16D ldr r1, [r0, #92] + 3350 .LVL280: +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3351 .loc 1 1283 7 view .LVU1208 + 3352 0022 8B42 cmp r3, r1 + 3353 0024 31D8 bhi .L216 +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3354 .loc 1 1289 5 is_stmt 1 view .LVU1209 +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3355 .loc 1 1289 16 is_stmt 0 view .LVU1210 + 3356 0026 0323 movs r3, #3 + 3357 0028 80F83430 strb r3, [r0, #52] +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3358 .loc 1 1292 5 is_stmt 1 view .LVU1211 +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3359 .loc 1 1292 8 is_stmt 0 view .LVU1212 + 3360 002c 0368 ldr r3, [r0] +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 136 + + + 3361 .loc 1 1292 26 view .LVU1213 + 3362 002e 0021 movs r1, #0 + 3363 0030 D962 str r1, [r3, #44] +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3364 .loc 1 1295 5 is_stmt 1 view .LVU1214 + 3365 0032 0068 ldr r0, [r0] + 3366 .LVL281: +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3367 .loc 1 1295 5 is_stmt 0 view .LVU1215 + 3368 0034 C36B ldr r3, [r0, #60] + 3369 0036 43F01A03 orr r3, r3, #26 + 3370 003a C363 str r3, [r0, #60] +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3371 .loc 1 1298 5 is_stmt 1 view .LVU1216 +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3372 .loc 1 1298 8 is_stmt 0 view .LVU1217 + 3373 003c E36B ldr r3, [r4, #60] +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3374 .loc 1 1298 35 view .LVU1218 + 3375 003e 3948 ldr r0, .L217 + 3376 0040 D863 str r0, [r3, #60] +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3377 .loc 1 1301 5 is_stmt 1 view .LVU1219 +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3378 .loc 1 1301 8 is_stmt 0 view .LVU1220 + 3379 0042 E36B ldr r3, [r4, #60] +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3380 .loc 1 1301 36 view .LVU1221 + 3381 0044 3848 ldr r0, .L217+4 + 3382 0046 D864 str r0, [r3, #76] +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3383 .loc 1 1304 5 is_stmt 1 view .LVU1222 +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3384 .loc 1 1304 8 is_stmt 0 view .LVU1223 + 3385 0048 E36B ldr r3, [r4, #60] +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3386 .loc 1 1304 36 view .LVU1224 + 3387 004a 1965 str r1, [r3, #80] +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3388 .loc 1 1306 5 is_stmt 1 view .LVU1225 +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3389 .loc 1 1306 19 is_stmt 0 view .LVU1226 + 3390 004c 636C ldr r3, [r4, #68] +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3391 .loc 1 1306 7 view .LVU1227 + 3392 004e 012B cmp r3, #1 + 3393 0050 00D0 beq .L208 +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3394 .loc 1 1308 7 is_stmt 1 view .LVU1228 +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3395 .loc 1 1308 11 is_stmt 0 view .LVU1229 + 3396 0052 5202 lsls r2, r2, #9 + 3397 .LVL282: + 3398 .L208: +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3399 .loc 1 1312 5 is_stmt 1 view .LVU1230 +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 137 + + + 3400 .loc 1 1312 7 is_stmt 0 view .LVU1231 + 3401 0054 012E cmp r6, #1 + 3402 0056 1DD9 bls .L209 +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3403 .loc 1 1314 7 is_stmt 1 view .LVU1232 +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3404 .loc 1 1314 20 is_stmt 0 view .LVU1233 + 3405 0058 A023 movs r3, #160 + 3406 005a 2363 str r3, [r4, #48] +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3407 .loc 1 1317 7 is_stmt 1 view .LVU1234 +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3408 .loc 1 1317 20 is_stmt 0 view .LVU1235 + 3409 005c 1146 mov r1, r2 + 3410 005e 2068 ldr r0, [r4] + 3411 0060 FFF7FEFF bl SDMMC_CmdWriteMultiBlock + 3412 .LVL283: + 3413 .L210: +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3414 .loc 1 1326 5 is_stmt 1 view .LVU1236 +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3415 .loc 1 1326 7 is_stmt 0 view .LVU1237 + 3416 0064 E8B1 cbz r0, .L211 +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 3417 .loc 1 1329 7 is_stmt 1 view .LVU1238 + 3418 0066 2368 ldr r3, [r4] + 3419 0068 304A ldr r2, .L217+8 + 3420 006a 9A63 str r2, [r3, #56] +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3421 .loc 1 1330 7 view .LVU1239 +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3422 .loc 1 1330 22 is_stmt 0 view .LVU1240 + 3423 006c A36B ldr r3, [r4, #56] + 3424 006e 1843 orrs r0, r0, r3 + 3425 .LVL284: +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3426 .loc 1 1330 22 view .LVU1241 + 3427 0070 A063 str r0, [r4, #56] +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 3428 .loc 1 1331 7 is_stmt 1 view .LVU1242 +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 3429 .loc 1 1331 18 is_stmt 0 view .LVU1243 + 3430 0072 0123 movs r3, #1 + 3431 0074 84F83430 strb r3, [r4, #52] +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3432 .loc 1 1332 7 is_stmt 1 view .LVU1244 +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3433 .loc 1 1332 20 is_stmt 0 view .LVU1245 + 3434 0078 0023 movs r3, #0 + 3435 007a 2363 str r3, [r4, #48] +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3436 .loc 1 1333 7 is_stmt 1 view .LVU1246 +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3437 .loc 1 1333 14 is_stmt 0 view .LVU1247 + 3438 007c 4FE0 b .L206 + 3439 .LVL285: + 3440 .L215: + ARM GAS /tmp/ccQEYyKb.s page 138 + + +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3441 .loc 1 1275 5 is_stmt 1 view .LVU1248 +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3442 .loc 1 1275 20 is_stmt 0 view .LVU1249 + 3443 007e 836B ldr r3, [r0, #56] + 3444 .LVL286: +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3445 .loc 1 1275 20 view .LVU1250 + 3446 0080 43F00063 orr r3, r3, #134217728 + 3447 0084 8363 str r3, [r0, #56] +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3448 .loc 1 1276 5 is_stmt 1 view .LVU1251 +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3449 .loc 1 1276 12 is_stmt 0 view .LVU1252 + 3450 0086 0125 movs r5, #1 + 3451 0088 49E0 b .L206 + 3452 .LVL287: + 3453 .L216: +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3454 .loc 1 1285 7 is_stmt 1 view .LVU1253 +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3455 .loc 1 1285 22 is_stmt 0 view .LVU1254 + 3456 008a 836B ldr r3, [r0, #56] + 3457 008c 43F00073 orr r3, r3, #33554432 + 3458 0090 8363 str r3, [r0, #56] +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3459 .loc 1 1286 7 is_stmt 1 view .LVU1255 +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3460 .loc 1 1286 14 is_stmt 0 view .LVU1256 + 3461 0092 44E0 b .L206 + 3462 .LVL288: + 3463 .L209: +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3464 .loc 1 1321 7 is_stmt 1 view .LVU1257 +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3465 .loc 1 1321 20 is_stmt 0 view .LVU1258 + 3466 0094 9023 movs r3, #144 + 3467 0096 2363 str r3, [r4, #48] +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3468 .loc 1 1324 7 is_stmt 1 view .LVU1259 +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3469 .loc 1 1324 20 is_stmt 0 view .LVU1260 + 3470 0098 1146 mov r1, r2 + 3471 009a 2068 ldr r0, [r4] + 3472 009c FFF7FEFF bl SDMMC_CmdWriteSingleBlock + 3473 .LVL289: +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3474 .loc 1 1324 20 view .LVU1261 + 3475 00a0 E0E7 b .L210 + 3476 .L211: +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3477 .loc 1 1337 5 is_stmt 1 view .LVU1262 + 3478 00a2 2268 ldr r2, [r4] + 3479 00a4 D36A ldr r3, [r2, #44] + 3480 00a6 43F00803 orr r3, r3, #8 + 3481 00aa D362 str r3, [r2, #44] +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** MODIFY_REG(hsd->hdmatx->Instance->CR, DMA_SxCR_DIR, hsd->hdmatx->Init.Direction); + ARM GAS /tmp/ccQEYyKb.s page 139 + + + 3482 .loc 1 1340 5 view .LVU1263 +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** MODIFY_REG(hsd->hdmatx->Instance->CR, DMA_SxCR_DIR, hsd->hdmatx->Init.Direction); + 3483 .loc 1 1340 8 is_stmt 0 view .LVU1264 + 3484 00ac E36B ldr r3, [r4, #60] +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** MODIFY_REG(hsd->hdmatx->Instance->CR, DMA_SxCR_DIR, hsd->hdmatx->Init.Direction); + 3485 .loc 1 1340 33 view .LVU1265 + 3486 00ae 4022 movs r2, #64 + 3487 00b0 9A60 str r2, [r3, #8] +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3488 .loc 1 1341 5 is_stmt 1 view .LVU1266 + 3489 00b2 E16B ldr r1, [r4, #60] + 3490 00b4 0A68 ldr r2, [r1] + 3491 00b6 1368 ldr r3, [r2] + 3492 00b8 23F0C003 bic r3, r3, #192 + 3493 00bc 8968 ldr r1, [r1, #8] + 3494 00be 0B43 orrs r3, r3, r1 + 3495 00c0 1360 str r3, [r2] +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3496 .loc 1 1344 5 view .LVU1267 +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3497 .loc 1 1344 69 is_stmt 0 view .LVU1268 + 3498 00c2 2268 ldr r2, [r4] +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3499 .loc 1 1344 87 view .LVU1269 + 3500 00c4 7602 lsls r6, r6, #9 + 3501 .LVL290: +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3502 .loc 1 1344 8 view .LVU1270 + 3503 00c6 B308 lsrs r3, r6, #2 + 3504 00c8 8032 adds r2, r2, #128 + 3505 00ca 3946 mov r1, r7 + 3506 00cc E06B ldr r0, [r4, #60] + 3507 .LVL291: +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3508 .loc 1 1344 8 view .LVU1271 + 3509 00ce FFF7FEFF bl HAL_DMA_Start_IT + 3510 .LVL292: +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3511 .loc 1 1344 7 view .LVU1272 + 3512 00d2 0746 mov r7, r0 + 3513 .LVL293: +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3514 .loc 1 1344 7 view .LVU1273 + 3515 00d4 88B1 cbz r0, .L212 +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** __HAL_SD_CLEAR_FLAG(hsd, SDMMC_STATIC_FLAGS); + 3516 .loc 1 1346 7 is_stmt 1 view .LVU1274 + 3517 00d6 2268 ldr r2, [r4] + 3518 00d8 D36B ldr r3, [r2, #60] + 3519 00da 23F01A03 bic r3, r3, #26 + 3520 00de D363 str r3, [r2, #60] +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_DMA; + 3521 .loc 1 1347 7 view .LVU1275 + 3522 00e0 2368 ldr r3, [r4] + 3523 00e2 124A ldr r2, .L217+8 + 3524 00e4 9A63 str r2, [r3, #56] +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3525 .loc 1 1348 7 view .LVU1276 + ARM GAS /tmp/ccQEYyKb.s page 140 + + +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3526 .loc 1 1348 22 is_stmt 0 view .LVU1277 + 3527 00e6 A36B ldr r3, [r4, #56] + 3528 00e8 43F08043 orr r3, r3, #1073741824 + 3529 00ec A363 str r3, [r4, #56] +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 3530 .loc 1 1349 7 is_stmt 1 view .LVU1278 +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 3531 .loc 1 1349 18 is_stmt 0 view .LVU1279 + 3532 00ee 0123 movs r3, #1 + 3533 00f0 84F83430 strb r3, [r4, #52] +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3534 .loc 1 1350 7 is_stmt 1 view .LVU1280 +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3535 .loc 1 1350 20 is_stmt 0 view .LVU1281 + 3536 00f4 0023 movs r3, #0 + 3537 00f6 2363 str r3, [r4, #48] +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3538 .loc 1 1351 7 is_stmt 1 view .LVU1282 +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3539 .loc 1 1351 14 is_stmt 0 view .LVU1283 + 3540 00f8 11E0 b .L206 + 3541 .L212: +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; + 3542 .loc 1 1356 7 is_stmt 1 view .LVU1284 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataLength = BLOCKSIZE * NumberOfBlocks; + 3543 .loc 1 1356 28 is_stmt 0 view .LVU1285 + 3544 00fa 4FF0FF33 mov r3, #-1 + 3545 00fe 0093 str r3, [sp] +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 3546 .loc 1 1357 7 is_stmt 1 view .LVU1286 +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DataBlockSize = SDMMC_DATABLOCK_SIZE_512B; + 3547 .loc 1 1357 28 is_stmt 0 view .LVU1287 + 3548 0100 0196 str r6, [sp, #4] +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; + 3549 .loc 1 1358 7 is_stmt 1 view .LVU1288 +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferDir = SDMMC_TRANSFER_DIR_TO_CARD; + 3550 .loc 1 1358 28 is_stmt 0 view .LVU1289 + 3551 0102 9023 movs r3, #144 + 3552 0104 0293 str r3, [sp, #8] +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 3553 .loc 1 1359 7 is_stmt 1 view .LVU1290 +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.TransferMode = SDMMC_TRANSFER_MODE_BLOCK; + 3554 .loc 1 1359 28 is_stmt 0 view .LVU1291 + 3555 0106 0023 movs r3, #0 + 3556 0108 0393 str r3, [sp, #12] +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 3557 .loc 1 1360 7 is_stmt 1 view .LVU1292 +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** config.DPSM = SDMMC_DPSM_ENABLE; + 3558 .loc 1 1360 28 is_stmt 0 view .LVU1293 + 3559 010a 0493 str r3, [sp, #16] +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 3560 .loc 1 1361 7 is_stmt 1 view .LVU1294 +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_ConfigData(hsd->Instance, &config); + 3561 .loc 1 1361 28 is_stmt 0 view .LVU1295 + 3562 010c 0123 movs r3, #1 + 3563 010e 0593 str r3, [sp, #20] + ARM GAS /tmp/ccQEYyKb.s page 141 + + +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3564 .loc 1 1362 7 is_stmt 1 view .LVU1296 +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3565 .loc 1 1362 13 is_stmt 0 view .LVU1297 + 3566 0110 6946 mov r1, sp + 3567 0112 2068 ldr r0, [r4] + 3568 0114 FFF7FEFF bl SDMMC_ConfigData + 3569 .LVL294: +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3570 .loc 1 1364 7 is_stmt 1 view .LVU1298 +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3571 .loc 1 1364 14 is_stmt 0 view .LVU1299 + 3572 0118 3D46 mov r5, r7 + 3573 011a 00E0 b .L206 + 3574 .LVL295: + 3575 .L213: +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3576 .loc 1 1369 12 view .LVU1300 + 3577 011c 0225 movs r5, #2 + 3578 .LVL296: + 3579 .L206: +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3580 .loc 1 1371 1 view .LVU1301 + 3581 011e 2846 mov r0, r5 + 3582 0120 07B0 add sp, sp, #28 + 3583 .LCFI48: + 3584 .cfi_def_cfa_offset 20 + 3585 @ sp needed + 3586 0122 F0BD pop {r4, r5, r6, r7, pc} + 3587 .LVL297: + 3588 .L218: +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3589 .loc 1 1371 1 view .LVU1302 + 3590 .align 2 + 3591 .L217: + 3592 0124 00000000 .word SD_DMATransmitCplt + 3593 0128 00000000 .word SD_DMAError + 3594 012c FF054000 .word 4195839 + 3595 .cfi_endproc + 3596 .LFE151: + 3598 .section .text.HAL_SD_Erase,"ax",%progbits + 3599 .align 1 + 3600 .global HAL_SD_Erase + 3601 .syntax unified + 3602 .thumb + 3603 .thumb_func + 3604 .fpu fpv5-d16 + 3606 HAL_SD_Erase: + 3607 .LVL298: + 3608 .LFB152: +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 3609 .loc 1 1383 1 is_stmt 1 view -0 + 3610 .cfi_startproc + 3611 @ args = 0, pretend = 0, frame = 0 + 3612 @ frame_needed = 0, uses_anonymous_args = 0 +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 3613 .loc 1 1383 1 is_stmt 0 view .LVU1304 + ARM GAS /tmp/ccQEYyKb.s page 142 + + + 3614 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 3615 .LCFI49: + 3616 .cfi_def_cfa_offset 24 + 3617 .cfi_offset 3, -24 + 3618 .cfi_offset 4, -20 + 3619 .cfi_offset 5, -16 + 3620 .cfi_offset 6, -12 + 3621 .cfi_offset 7, -8 + 3622 .cfi_offset 14, -4 +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t start_add = BlockStartAdd; + 3623 .loc 1 1384 3 is_stmt 1 view .LVU1305 +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t end_add = BlockEndAdd; + 3624 .loc 1 1385 3 view .LVU1306 + 3625 .LVL299: +1386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3626 .loc 1 1386 3 view .LVU1307 +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3627 .loc 1 1388 3 view .LVU1308 +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3628 .loc 1 1388 9 is_stmt 0 view .LVU1309 + 3629 0002 90F83450 ldrb r5, [r0, #52] @ zero_extendqisi2 + 3630 0006 EDB2 uxtb r5, r5 +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3631 .loc 1 1388 5 view .LVU1310 + 3632 0008 012D cmp r5, #1 + 3633 000a 6FD1 bne .L229 + 3634 000c 0446 mov r4, r0 + 3635 000e 0F46 mov r7, r1 + 3636 0010 1646 mov r6, r2 +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3637 .loc 1 1390 5 is_stmt 1 view .LVU1311 +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3638 .loc 1 1390 20 is_stmt 0 view .LVU1312 + 3639 0012 0023 movs r3, #0 + 3640 0014 8363 str r3, [r0, #56] +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3641 .loc 1 1392 5 is_stmt 1 view .LVU1313 +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3642 .loc 1 1392 7 is_stmt 0 view .LVU1314 + 3643 0016 9142 cmp r1, r2 + 3644 0018 14D8 bhi .L231 +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3645 .loc 1 1398 5 is_stmt 1 view .LVU1315 +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3646 .loc 1 1398 30 is_stmt 0 view .LVU1316 + 3647 001a C36D ldr r3, [r0, #92] +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3648 .loc 1 1398 7 view .LVU1317 + 3649 001c 9342 cmp r3, r2 + 3650 001e 16D3 bcc .L232 +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3651 .loc 1 1404 5 is_stmt 1 view .LVU1318 +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3652 .loc 1 1404 16 is_stmt 0 view .LVU1319 + 3653 0020 0323 movs r3, #3 + 3654 0022 80F83430 strb r3, [r0, #52] +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 143 + + + 3655 .loc 1 1407 5 is_stmt 1 view .LVU1320 +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3656 .loc 1 1407 21 is_stmt 0 view .LVU1321 + 3657 0026 C36C ldr r3, [r0, #76] +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3658 .loc 1 1407 7 view .LVU1322 + 3659 0028 13F0200F tst r3, #32 + 3660 002c 14D1 bne .L223 +1410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_REQUEST_NOT_APPLICABLE; + 3661 .loc 1 1410 7 is_stmt 1 view .LVU1323 + 3662 002e 0368 ldr r3, [r0] + 3663 0030 304A ldr r2, .L235 + 3664 .LVL300: +1410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_REQUEST_NOT_APPLICABLE; + 3665 .loc 1 1410 7 is_stmt 0 view .LVU1324 + 3666 0032 9A63 str r2, [r3, #56] +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3667 .loc 1 1411 7 is_stmt 1 view .LVU1325 +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3668 .loc 1 1411 22 is_stmt 0 view .LVU1326 + 3669 0034 836B ldr r3, [r0, #56] + 3670 0036 43F08063 orr r3, r3, #67108864 + 3671 003a 8363 str r3, [r0, #56] +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3672 .loc 1 1412 7 is_stmt 1 view .LVU1327 +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3673 .loc 1 1412 18 is_stmt 0 view .LVU1328 + 3674 003c 0123 movs r3, #1 + 3675 003e 80F83430 strb r3, [r0, #52] +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3676 .loc 1 1413 7 is_stmt 1 view .LVU1329 +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3677 .loc 1 1413 14 is_stmt 0 view .LVU1330 + 3678 0042 54E0 b .L220 + 3679 .LVL301: + 3680 .L231: +1394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3681 .loc 1 1394 7 is_stmt 1 view .LVU1331 +1394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3682 .loc 1 1394 22 is_stmt 0 view .LVU1332 + 3683 0044 836B ldr r3, [r0, #56] + 3684 0046 43F00063 orr r3, r3, #134217728 + 3685 004a 8363 str r3, [r0, #56] +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3686 .loc 1 1395 7 is_stmt 1 view .LVU1333 +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3687 .loc 1 1395 14 is_stmt 0 view .LVU1334 + 3688 004c 4FE0 b .L220 + 3689 .L232: +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3690 .loc 1 1400 7 is_stmt 1 view .LVU1335 +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3691 .loc 1 1400 22 is_stmt 0 view .LVU1336 + 3692 004e 836B ldr r3, [r0, #56] + 3693 0050 43F00073 orr r3, r3, #33554432 + 3694 0054 8363 str r3, [r0, #56] +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + ARM GAS /tmp/ccQEYyKb.s page 144 + + + 3695 .loc 1 1401 7 is_stmt 1 view .LVU1337 +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3696 .loc 1 1401 14 is_stmt 0 view .LVU1338 + 3697 0056 4AE0 b .L220 + 3698 .L223: +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3699 .loc 1 1416 5 is_stmt 1 view .LVU1339 +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3700 .loc 1 1416 9 is_stmt 0 view .LVU1340 + 3701 0058 0021 movs r1, #0 + 3702 .LVL302: +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3703 .loc 1 1416 9 view .LVU1341 + 3704 005a 0068 ldr r0, [r0] + 3705 .LVL303: +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3706 .loc 1 1416 9 view .LVU1342 + 3707 005c FFF7FEFF bl SDMMC_GetResponse + 3708 .LVL304: +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3709 .loc 1 1416 7 view .LVU1343 + 3710 0060 10F0007F tst r0, #33554432 + 3711 0064 15D1 bne .L233 +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3712 .loc 1 1426 5 is_stmt 1 view .LVU1344 +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3713 .loc 1 1426 19 is_stmt 0 view .LVU1345 + 3714 0066 636C ldr r3, [r4, #68] +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3715 .loc 1 1426 7 view .LVU1346 + 3716 0068 012B cmp r3, #1 + 3717 006a 01D0 beq .L225 +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** end_add *= 512U; + 3718 .loc 1 1428 7 is_stmt 1 view .LVU1347 +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** end_add *= 512U; + 3719 .loc 1 1428 17 is_stmt 0 view .LVU1348 + 3720 006c 7F02 lsls r7, r7, #9 + 3721 .LVL305: +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3722 .loc 1 1429 7 is_stmt 1 view .LVU1349 +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3723 .loc 1 1429 17 is_stmt 0 view .LVU1350 + 3724 006e 7602 lsls r6, r6, #9 + 3725 .LVL306: + 3726 .L225: +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3727 .loc 1 1433 5 is_stmt 1 view .LVU1351 +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3728 .loc 1 1433 7 is_stmt 0 view .LVU1352 + 3729 0070 032B cmp r3, #3 + 3730 0072 1ED0 beq .L226 +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 3731 .loc 1 1436 7 is_stmt 1 view .LVU1353 +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 3732 .loc 1 1436 20 is_stmt 0 view .LVU1354 + 3733 0074 3946 mov r1, r7 + 3734 0076 2068 ldr r0, [r4] + ARM GAS /tmp/ccQEYyKb.s page 145 + + + 3735 0078 FFF7FEFF bl SDMMC_CmdSDEraseStartAdd + 3736 .LVL307: +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3737 .loc 1 1437 7 is_stmt 1 view .LVU1355 +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3738 .loc 1 1437 9 is_stmt 0 view .LVU1356 + 3739 007c A0B1 cbz r0, .L227 +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 3740 .loc 1 1440 9 is_stmt 1 view .LVU1357 + 3741 007e 2368 ldr r3, [r4] + 3742 0080 1C49 ldr r1, .L235 + 3743 0082 9963 str r1, [r3, #56] +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3744 .loc 1 1441 9 view .LVU1358 +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3745 .loc 1 1441 24 is_stmt 0 view .LVU1359 + 3746 0084 A36B ldr r3, [r4, #56] + 3747 0086 0343 orrs r3, r3, r0 + 3748 0088 A363 str r3, [r4, #56] +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3749 .loc 1 1442 9 is_stmt 1 view .LVU1360 +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3750 .loc 1 1442 20 is_stmt 0 view .LVU1361 + 3751 008a 0123 movs r3, #1 + 3752 008c 84F83430 strb r3, [r4, #52] +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3753 .loc 1 1443 9 is_stmt 1 view .LVU1362 +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3754 .loc 1 1443 16 is_stmt 0 view .LVU1363 + 3755 0090 2DE0 b .L220 + 3756 .LVL308: + 3757 .L233: +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_LOCK_UNLOCK_FAILED; + 3758 .loc 1 1419 7 is_stmt 1 view .LVU1364 + 3759 0092 2368 ldr r3, [r4] + 3760 0094 174A ldr r2, .L235 + 3761 0096 9A63 str r2, [r3, #56] +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3762 .loc 1 1420 7 view .LVU1365 +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3763 .loc 1 1420 22 is_stmt 0 view .LVU1366 + 3764 0098 A36B ldr r3, [r4, #56] + 3765 009a 43F40063 orr r3, r3, #2048 + 3766 009e A363 str r3, [r4, #56] +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3767 .loc 1 1421 7 is_stmt 1 view .LVU1367 +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3768 .loc 1 1421 18 is_stmt 0 view .LVU1368 + 3769 00a0 0123 movs r3, #1 + 3770 00a2 84F83430 strb r3, [r4, #52] +1422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3771 .loc 1 1422 7 is_stmt 1 view .LVU1369 +1422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3772 .loc 1 1422 14 is_stmt 0 view .LVU1370 + 3773 00a6 22E0 b .L220 + 3774 .LVL309: + 3775 .L227: + ARM GAS /tmp/ccQEYyKb.s page 146 + + +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 3776 .loc 1 1447 7 is_stmt 1 view .LVU1371 +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 3777 .loc 1 1447 20 is_stmt 0 view .LVU1372 + 3778 00a8 3146 mov r1, r6 + 3779 00aa 2068 ldr r0, [r4] + 3780 .LVL310: +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 3781 .loc 1 1447 20 view .LVU1373 + 3782 00ac FFF7FEFF bl SDMMC_CmdSDEraseEndAdd + 3783 .LVL311: +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3784 .loc 1 1448 7 is_stmt 1 view .LVU1374 +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3785 .loc 1 1448 9 is_stmt 0 view .LVU1375 + 3786 00b0 68B9 cbnz r0, .L234 + 3787 .LVL312: + 3788 .L226: +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 3789 .loc 1 1459 5 is_stmt 1 view .LVU1376 +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 3790 .loc 1 1459 18 is_stmt 0 view .LVU1377 + 3791 00b2 2068 ldr r0, [r4] + 3792 00b4 FFF7FEFF bl SDMMC_CmdErase + 3793 .LVL313: +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3794 .loc 1 1460 5 is_stmt 1 view .LVU1378 +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3795 .loc 1 1460 7 is_stmt 0 view .LVU1379 + 3796 00b8 98B1 cbz r0, .L228 +1463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 3797 .loc 1 1463 7 is_stmt 1 view .LVU1380 + 3798 00ba 2368 ldr r3, [r4] + 3799 00bc 0D49 ldr r1, .L235 + 3800 00be 9963 str r1, [r3, #56] +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3801 .loc 1 1464 7 view .LVU1381 +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3802 .loc 1 1464 22 is_stmt 0 view .LVU1382 + 3803 00c0 A36B ldr r3, [r4, #56] + 3804 00c2 0343 orrs r3, r3, r0 + 3805 00c4 A363 str r3, [r4, #56] +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3806 .loc 1 1465 7 is_stmt 1 view .LVU1383 +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3807 .loc 1 1465 18 is_stmt 0 view .LVU1384 + 3808 00c6 0123 movs r3, #1 + 3809 00c8 84F83430 strb r3, [r4, #52] +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3810 .loc 1 1466 7 is_stmt 1 view .LVU1385 +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3811 .loc 1 1466 14 is_stmt 0 view .LVU1386 + 3812 00cc 0FE0 b .L220 + 3813 .L234: +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 3814 .loc 1 1451 9 is_stmt 1 view .LVU1387 + 3815 00ce 2368 ldr r3, [r4] + ARM GAS /tmp/ccQEYyKb.s page 147 + + + 3816 00d0 0849 ldr r1, .L235 + 3817 00d2 9963 str r1, [r3, #56] +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3818 .loc 1 1452 9 view .LVU1388 +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 3819 .loc 1 1452 24 is_stmt 0 view .LVU1389 + 3820 00d4 A36B ldr r3, [r4, #56] + 3821 00d6 0343 orrs r3, r3, r0 + 3822 00d8 A363 str r3, [r4, #56] +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3823 .loc 1 1453 9 is_stmt 1 view .LVU1390 +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 3824 .loc 1 1453 20 is_stmt 0 view .LVU1391 + 3825 00da 0123 movs r3, #1 + 3826 00dc 84F83430 strb r3, [r4, #52] +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3827 .loc 1 1454 9 is_stmt 1 view .LVU1392 +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3828 .loc 1 1454 16 is_stmt 0 view .LVU1393 + 3829 00e0 05E0 b .L220 + 3830 .L228: +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3831 .loc 1 1469 5 is_stmt 1 view .LVU1394 +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3832 .loc 1 1469 16 is_stmt 0 view .LVU1395 + 3833 00e2 0123 movs r3, #1 + 3834 00e4 84F83430 strb r3, [r4, #52] +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3835 .loc 1 1471 5 is_stmt 1 view .LVU1396 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3836 .loc 1 1471 12 is_stmt 0 view .LVU1397 + 3837 00e8 0025 movs r5, #0 + 3838 00ea 00E0 b .L220 + 3839 .LVL314: + 3840 .L229: +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3841 .loc 1 1475 12 view .LVU1398 + 3842 00ec 0225 movs r5, #2 + 3843 .LVL315: + 3844 .L220: +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3845 .loc 1 1477 1 view .LVU1399 + 3846 00ee 2846 mov r0, r5 + 3847 00f0 F8BD pop {r3, r4, r5, r6, r7, pc} + 3848 .L236: + 3849 00f2 00BF .align 2 + 3850 .L235: + 3851 00f4 FF054000 .word 4195839 + 3852 .cfi_endproc + 3853 .LFE152: + 3855 .section .text.HAL_SD_GetState,"ax",%progbits + 3856 .align 1 + 3857 .global HAL_SD_GetState + 3858 .syntax unified + 3859 .thumb + 3860 .thumb_func + 3861 .fpu fpv5-d16 + ARM GAS /tmp/ccQEYyKb.s page 148 + + + 3863 HAL_SD_GetState: + 3864 .LVL316: + 3865 .LFB154: +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return hsd->State; + 3866 .loc 1 1676 1 is_stmt 1 view -0 + 3867 .cfi_startproc + 3868 @ args = 0, pretend = 0, frame = 0 + 3869 @ frame_needed = 0, uses_anonymous_args = 0 + 3870 @ link register save eliminated. +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3871 .loc 1 1677 3 view .LVU1401 +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3872 .loc 1 1677 13 is_stmt 0 view .LVU1402 + 3873 0000 90F83400 ldrb r0, [r0, #52] @ zero_extendqisi2 + 3874 .LVL317: +1678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3875 .loc 1 1678 1 view .LVU1403 + 3876 0004 7047 bx lr + 3877 .cfi_endproc + 3878 .LFE154: + 3880 .section .text.HAL_SD_GetError,"ax",%progbits + 3881 .align 1 + 3882 .global HAL_SD_GetError + 3883 .syntax unified + 3884 .thumb + 3885 .thumb_func + 3886 .fpu fpv5-d16 + 3888 HAL_SD_GetError: + 3889 .LVL318: + 3890 .LFB155: +1687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return hsd->ErrorCode; + 3891 .loc 1 1687 1 is_stmt 1 view -0 + 3892 .cfi_startproc + 3893 @ args = 0, pretend = 0, frame = 0 + 3894 @ frame_needed = 0, uses_anonymous_args = 0 + 3895 @ link register save eliminated. +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3896 .loc 1 1688 3 view .LVU1405 +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 3897 .loc 1 1688 13 is_stmt 0 view .LVU1406 + 3898 0000 806B ldr r0, [r0, #56] + 3899 .LVL319: +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3900 .loc 1 1689 1 view .LVU1407 + 3901 0002 7047 bx lr + 3902 .cfi_endproc + 3903 .LFE155: + 3905 .section .text.HAL_SD_TxCpltCallback,"ax",%progbits + 3906 .align 1 + 3907 .weak HAL_SD_TxCpltCallback + 3908 .syntax unified + 3909 .thumb + 3910 .thumb_func + 3911 .fpu fpv5-d16 + 3913 HAL_SD_TxCpltCallback: + 3914 .LVL320: + 3915 .LFB156: + ARM GAS /tmp/ccQEYyKb.s page 149 + + +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ + 3916 .loc 1 1697 1 is_stmt 1 view -0 + 3917 .cfi_startproc + 3918 @ args = 0, pretend = 0, frame = 0 + 3919 @ frame_needed = 0, uses_anonymous_args = 0 + 3920 @ link register save eliminated. +1699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3921 .loc 1 1699 3 view .LVU1409 +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3922 .loc 1 1704 1 is_stmt 0 view .LVU1410 + 3923 0000 7047 bx lr + 3924 .cfi_endproc + 3925 .LFE156: + 3927 .section .text.HAL_SD_RxCpltCallback,"ax",%progbits + 3928 .align 1 + 3929 .weak HAL_SD_RxCpltCallback + 3930 .syntax unified + 3931 .thumb + 3932 .thumb_func + 3933 .fpu fpv5-d16 + 3935 HAL_SD_RxCpltCallback: + 3936 .LVL321: + 3937 .LFB157: +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ + 3938 .loc 1 1712 1 is_stmt 1 view -0 + 3939 .cfi_startproc + 3940 @ args = 0, pretend = 0, frame = 0 + 3941 @ frame_needed = 0, uses_anonymous_args = 0 + 3942 @ link register save eliminated. +1714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3943 .loc 1 1714 3 view .LVU1412 +1719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3944 .loc 1 1719 1 is_stmt 0 view .LVU1413 + 3945 0000 7047 bx lr + 3946 .cfi_endproc + 3947 .LFE157: + 3949 .section .text.HAL_SD_ErrorCallback,"ax",%progbits + 3950 .align 1 + 3951 .weak HAL_SD_ErrorCallback + 3952 .syntax unified + 3953 .thumb + 3954 .thumb_func + 3955 .fpu fpv5-d16 + 3957 HAL_SD_ErrorCallback: + 3958 .LVL322: + 3959 .LFB158: +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ + 3960 .loc 1 1727 1 is_stmt 1 view -0 + 3961 .cfi_startproc + 3962 @ args = 0, pretend = 0, frame = 0 + 3963 @ frame_needed = 0, uses_anonymous_args = 0 + 3964 @ link register save eliminated. +1729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3965 .loc 1 1729 3 view .LVU1415 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3966 .loc 1 1734 1 is_stmt 0 view .LVU1416 + 3967 0000 7047 bx lr + ARM GAS /tmp/ccQEYyKb.s page 150 + + + 3968 .cfi_endproc + 3969 .LFE158: + 3971 .section .text.SD_DMAReceiveCplt,"ax",%progbits + 3972 .align 1 + 3973 .syntax unified + 3974 .thumb + 3975 .thumb_func + 3976 .fpu fpv5-d16 + 3978 SD_DMAReceiveCplt: + 3979 .LVL323: + 3980 .LFB169: +2454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + 3981 .loc 1 2454 1 is_stmt 1 view -0 + 3982 .cfi_startproc + 3983 @ args = 0, pretend = 0, frame = 0 + 3984 @ frame_needed = 0, uses_anonymous_args = 0 +2454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + 3985 .loc 1 2454 1 is_stmt 0 view .LVU1418 + 3986 0000 10B5 push {r4, lr} + 3987 .LCFI50: + 3988 .cfi_def_cfa_offset 8 + 3989 .cfi_offset 4, -8 + 3990 .cfi_offset 14, -4 +2455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 3991 .loc 1 2455 3 is_stmt 1 view .LVU1419 +2455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 3992 .loc 1 2455 21 is_stmt 0 view .LVU1420 + 3993 0002 846B ldr r4, [r0, #56] + 3994 .LVL324: +2456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 3995 .loc 1 2456 3 is_stmt 1 view .LVU1421 +2459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3996 .loc 1 2459 3 view .LVU1422 +2459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3997 .loc 1 2459 9 is_stmt 0 view .LVU1423 + 3998 0004 236B ldr r3, [r4, #48] +2459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 3999 .loc 1 2459 5 view .LVU1424 + 4000 0006 822B cmp r3, #130 + 4001 0008 11D0 beq .L245 + 4002 .LVL325: + 4003 .L243: +2475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4004 .loc 1 2475 3 is_stmt 1 view .LVU1425 +2475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4005 .loc 1 2475 6 is_stmt 0 view .LVU1426 + 4006 000a 2268 ldr r2, [r4] +2475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4007 .loc 1 2475 24 view .LVU1427 + 4008 000c D36A ldr r3, [r2, #44] + 4009 000e 23F00803 bic r3, r3, #8 + 4010 0012 D362 str r3, [r2, #44] +2478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4011 .loc 1 2478 3 is_stmt 1 view .LVU1428 + 4012 0014 2368 ldr r3, [r4] + 4013 0016 40F23A52 movw r2, #1338 + 4014 001a 9A63 str r2, [r3, #56] + ARM GAS /tmp/ccQEYyKb.s page 151 + + +2480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 4015 .loc 1 2480 3 view .LVU1429 +2480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 4016 .loc 1 2480 14 is_stmt 0 view .LVU1430 + 4017 001c 0123 movs r3, #1 + 4018 001e 84F83430 strb r3, [r4, #52] +2481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4019 .loc 1 2481 3 is_stmt 1 view .LVU1431 +2481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4020 .loc 1 2481 16 is_stmt 0 view .LVU1432 + 4021 0022 0023 movs r3, #0 + 4022 0024 2363 str r3, [r4, #48] +2486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif + 4023 .loc 1 2486 3 is_stmt 1 view .LVU1433 + 4024 0026 2046 mov r0, r4 + 4025 0028 FFF7FEFF bl HAL_SD_RxCpltCallback + 4026 .LVL326: +2488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4027 .loc 1 2488 1 is_stmt 0 view .LVU1434 + 4028 002c 10BD pop {r4, pc} + 4029 .LVL327: + 4030 .L245: +2461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4031 .loc 1 2461 5 is_stmt 1 view .LVU1435 +2461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4032 .loc 1 2461 18 is_stmt 0 view .LVU1436 + 4033 002e 2068 ldr r0, [r4] + 4034 .LVL328: +2461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4035 .loc 1 2461 18 view .LVU1437 + 4036 0030 FFF7FEFF bl SDMMC_CmdStopTransfer + 4037 .LVL329: +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4038 .loc 1 2462 5 is_stmt 1 view .LVU1438 +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4039 .loc 1 2462 7 is_stmt 0 view .LVU1439 + 4040 0034 0346 mov r3, r0 + 4041 0036 0028 cmp r0, #0 + 4042 0038 E7D0 beq .L243 +2464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if (USE_HAL_SD_REGISTER_CALLBACKS == 1) + 4043 .loc 1 2464 7 is_stmt 1 view .LVU1440 +2464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if (USE_HAL_SD_REGISTER_CALLBACKS == 1) + 4044 .loc 1 2464 22 is_stmt 0 view .LVU1441 + 4045 003a A26B ldr r2, [r4, #56] + 4046 003c 1343 orrs r3, r3, r2 + 4047 003e A363 str r3, [r4, #56] +2468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif + 4048 .loc 1 2468 7 is_stmt 1 view .LVU1442 + 4049 0040 2046 mov r0, r4 + 4050 .LVL330: +2468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif + 4051 .loc 1 2468 7 is_stmt 0 view .LVU1443 + 4052 0042 FFF7FEFF bl HAL_SD_ErrorCallback + 4053 .LVL331: + 4054 0046 E0E7 b .L243 + 4055 .cfi_endproc + 4056 .LFE169: + ARM GAS /tmp/ccQEYyKb.s page 152 + + + 4058 .section .text.HAL_SD_AbortCallback,"ax",%progbits + 4059 .align 1 + 4060 .weak HAL_SD_AbortCallback + 4061 .syntax unified + 4062 .thumb + 4063 .thumb_func + 4064 .fpu fpv5-d16 + 4066 HAL_SD_AbortCallback: + 4067 .LVL332: + 4068 .LFB159: +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Prevent unused argument(s) compilation warning */ + 4069 .loc 1 1742 1 is_stmt 1 view -0 + 4070 .cfi_startproc + 4071 @ args = 0, pretend = 0, frame = 0 + 4072 @ frame_needed = 0, uses_anonymous_args = 0 + 4073 @ link register save eliminated. +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4074 .loc 1 1744 3 view .LVU1445 +1749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4075 .loc 1 1749 1 is_stmt 0 view .LVU1446 + 4076 0000 7047 bx lr + 4077 .cfi_endproc + 4078 .LFE159: + 4080 .section .text.HAL_SD_GetCardCID,"ax",%progbits + 4081 .align 1 + 4082 .global HAL_SD_GetCardCID + 4083 .syntax unified + 4084 .thumb + 4085 .thumb_func + 4086 .fpu fpv5-d16 + 4088 HAL_SD_GetCardCID: + 4089 .LVL333: + 4090 .LFB160: +1953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCID->ManufacturerID = (uint8_t)((hsd->CID[0] & 0xFF000000U) >> 24U); + 4091 .loc 1 1953 1 is_stmt 1 view -0 + 4092 .cfi_startproc + 4093 @ args = 0, pretend = 0, frame = 0 + 4094 @ frame_needed = 0, uses_anonymous_args = 0 + 4095 @ link register save eliminated. +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4096 .loc 1 1954 3 view .LVU1448 +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4097 .loc 1 1954 26 is_stmt 0 view .LVU1449 + 4098 0000 90F87730 ldrb r3, [r0, #119] @ zero_extendqisi2 +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4099 .loc 1 1954 24 view .LVU1450 + 4100 0004 0B70 strb r3, [r1] +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4101 .loc 1 1956 3 is_stmt 1 view .LVU1451 +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4102 .loc 1 1956 43 is_stmt 0 view .LVU1452 + 4103 0006 436F ldr r3, [r0, #116] +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4104 .loc 1 1956 23 view .LVU1453 + 4105 0008 C3F30F23 ubfx r3, r3, #8, #16 +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4106 .loc 1 1956 21 view .LVU1454 + ARM GAS /tmp/ccQEYyKb.s page 153 + + + 4107 000c 4B80 strh r3, [r1, #2] @ movhi +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4108 .loc 1 1958 3 is_stmt 1 view .LVU1455 +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4109 .loc 1 1958 32 is_stmt 0 view .LVU1456 + 4110 000e 426F ldr r2, [r0, #116] +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4111 .loc 1 1958 71 view .LVU1457 + 4112 0010 836F ldr r3, [r0, #120] +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4113 .loc 1 1958 90 view .LVU1458 + 4114 0012 1B0A lsrs r3, r3, #8 +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4115 .loc 1 1958 59 view .LVU1459 + 4116 0014 43EA0263 orr r3, r3, r2, lsl #24 +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4117 .loc 1 1958 19 view .LVU1460 + 4118 0018 4B60 str r3, [r1, #4] +1960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4119 .loc 1 1960 3 is_stmt 1 view .LVU1461 +1960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4120 .loc 1 1960 21 is_stmt 0 view .LVU1462 + 4121 001a 90F87830 ldrb r3, [r0, #120] @ zero_extendqisi2 +1960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4122 .loc 1 1960 19 view .LVU1463 + 4123 001e 0B72 strb r3, [r1, #8] +1962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4124 .loc 1 1962 3 is_stmt 1 view .LVU1464 +1962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4125 .loc 1 1962 19 is_stmt 0 view .LVU1465 + 4126 0020 90F87F30 ldrb r3, [r0, #127] @ zero_extendqisi2 +1962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4127 .loc 1 1962 17 view .LVU1466 + 4128 0024 4B72 strb r3, [r1, #9] +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4129 .loc 1 1964 3 is_stmt 1 view .LVU1467 +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4130 .loc 1 1964 29 is_stmt 0 view .LVU1468 + 4131 0026 C26F ldr r2, [r0, #124] +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4132 .loc 1 1964 86 view .LVU1469 + 4133 0028 90F88330 ldrb r3, [r0, #131] @ zero_extendqisi2 +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4134 .loc 1 1964 55 view .LVU1470 + 4135 002c 43EA0223 orr r3, r3, r2, lsl #8 +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4136 .loc 1 1964 16 view .LVU1471 + 4137 0030 CB60 str r3, [r1, #12] +1966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4138 .loc 1 1966 3 is_stmt 1 view .LVU1472 +1966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4139 .loc 1 1966 40 is_stmt 0 view .LVU1473 + 4140 0032 D0F88030 ldr r3, [r0, #128] +1966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4141 .loc 1 1966 21 view .LVU1474 + 4142 0036 C3F30353 ubfx r3, r3, #20, #4 +1966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 154 + + + 4143 .loc 1 1966 19 view .LVU1475 + 4144 003a 0B74 strb r3, [r1, #16] +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4145 .loc 1 1968 3 is_stmt 1 view .LVU1476 +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4146 .loc 1 1968 44 is_stmt 0 view .LVU1477 + 4147 003c D0F88030 ldr r3, [r0, #128] +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4148 .loc 1 1968 24 view .LVU1478 + 4149 0040 C3F30B23 ubfx r3, r3, #8, #12 +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4150 .loc 1 1968 22 view .LVU1479 + 4151 0044 4B82 strh r3, [r1, #18] @ movhi +1970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4152 .loc 1 1970 3 is_stmt 1 view .LVU1480 +1970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4153 .loc 1 1970 38 is_stmt 0 view .LVU1481 + 4154 0046 D0F88030 ldr r3, [r0, #128] +1970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4155 .loc 1 1970 19 view .LVU1482 + 4156 004a C3F34603 ubfx r3, r3, #1, #7 +1970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4157 .loc 1 1970 17 view .LVU1483 + 4158 004e 0B75 strb r3, [r1, #20] +1972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4159 .loc 1 1972 3 is_stmt 1 view .LVU1484 +1972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4160 .loc 1 1972 19 is_stmt 0 view .LVU1485 + 4161 0050 0123 movs r3, #1 + 4162 0052 4B75 strb r3, [r1, #21] +1974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4163 .loc 1 1974 3 is_stmt 1 view .LVU1486 +1975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4164 .loc 1 1975 1 is_stmt 0 view .LVU1487 + 4165 0054 0020 movs r0, #0 + 4166 .LVL334: +1975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4167 .loc 1 1975 1 view .LVU1488 + 4168 0056 7047 bx lr + 4169 .cfi_endproc + 4170 .LFE160: + 4172 .section .text.HAL_SD_GetCardCSD,"ax",%progbits + 4173 .align 1 + 4174 .global HAL_SD_GetCardCSD + 4175 .syntax unified + 4176 .thumb + 4177 .thumb_func + 4178 .fpu fpv5-d16 + 4180 HAL_SD_GetCardCSD: + 4181 .LVL335: + 4182 .LFB161: +1986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCSD->CSDStruct = (uint8_t)((hsd->CSD[0] & 0xC0000000U) >> 30U); + 4183 .loc 1 1986 1 is_stmt 1 view -0 + 4184 .cfi_startproc + 4185 @ args = 0, pretend = 0, frame = 0 + 4186 @ frame_needed = 0, uses_anonymous_args = 0 + 4187 @ link register save eliminated. + ARM GAS /tmp/ccQEYyKb.s page 155 + + +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4188 .loc 1 1987 3 view .LVU1490 +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4189 .loc 1 1987 40 is_stmt 0 view .LVU1491 + 4190 0000 436E ldr r3, [r0, #100] +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4191 .loc 1 1987 21 view .LVU1492 + 4192 0002 9B0F lsrs r3, r3, #30 +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4193 .loc 1 1987 19 view .LVU1493 + 4194 0004 0B70 strb r3, [r1] +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4195 .loc 1 1989 3 is_stmt 1 view .LVU1494 +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4196 .loc 1 1989 45 is_stmt 0 view .LVU1495 + 4197 0006 436E ldr r3, [r0, #100] +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4198 .loc 1 1989 26 view .LVU1496 + 4199 0008 C3F38363 ubfx r3, r3, #26, #4 +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4200 .loc 1 1989 24 view .LVU1497 + 4201 000c 4B70 strb r3, [r1, #1] +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4202 .loc 1 1991 3 is_stmt 1 view .LVU1498 +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4203 .loc 1 1991 59 is_stmt 0 view .LVU1499 + 4204 000e 90F86730 ldrb r3, [r0, #103] @ zero_extendqisi2 +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4205 .loc 1 1991 21 view .LVU1500 + 4206 0012 03F00303 and r3, r3, #3 +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4207 .loc 1 1991 19 view .LVU1501 + 4208 0016 8B70 strb r3, [r1, #2] +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4209 .loc 1 1993 3 is_stmt 1 view .LVU1502 +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4210 .loc 1 1993 16 is_stmt 0 view .LVU1503 + 4211 0018 90F86630 ldrb r3, [r0, #102] @ zero_extendqisi2 +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4212 .loc 1 1993 14 view .LVU1504 + 4213 001c CB70 strb r3, [r1, #3] +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4214 .loc 1 1995 3 is_stmt 1 view .LVU1505 +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4215 .loc 1 1995 16 is_stmt 0 view .LVU1506 + 4216 001e 90F86530 ldrb r3, [r0, #101] @ zero_extendqisi2 +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4217 .loc 1 1995 14 view .LVU1507 + 4218 0022 0B71 strb r3, [r1, #4] +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4219 .loc 1 1997 3 is_stmt 1 view .LVU1508 +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4220 .loc 1 1997 25 is_stmt 0 view .LVU1509 + 4221 0024 90F86430 ldrb r3, [r0, #100] @ zero_extendqisi2 +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4222 .loc 1 1997 23 view .LVU1510 + 4223 0028 4B71 strb r3, [r1, #5] + ARM GAS /tmp/ccQEYyKb.s page 156 + + +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4224 .loc 1 1999 3 is_stmt 1 view .LVU1511 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4225 .loc 1 1999 47 is_stmt 0 view .LVU1512 + 4226 002a 836E ldr r3, [r0, #104] +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4227 .loc 1 1999 27 view .LVU1513 + 4228 002c 1B0D lsrs r3, r3, #20 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4229 .loc 1 1999 25 view .LVU1514 + 4230 002e CB80 strh r3, [r1, #6] @ movhi +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4231 .loc 1 2001 3 is_stmt 1 view .LVU1515 +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4232 .loc 1 2001 60 is_stmt 0 view .LVU1516 + 4233 0030 B0F86A30 ldrh r3, [r0, #106] +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4234 .loc 1 2001 22 view .LVU1517 + 4235 0034 03F00F03 and r3, r3, #15 +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4236 .loc 1 2001 20 view .LVU1518 + 4237 0038 0B72 strb r3, [r1, #8] +2003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4238 .loc 1 2003 3 is_stmt 1 view .LVU1519 +2003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4239 .loc 1 2003 46 is_stmt 0 view .LVU1520 + 4240 003a 836E ldr r3, [r0, #104] +2003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4241 .loc 1 2003 27 view .LVU1521 + 4242 003c C3F3C033 ubfx r3, r3, #15, #1 +2003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4243 .loc 1 2003 25 view .LVU1522 + 4244 0040 4B72 strb r3, [r1, #9] +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4245 .loc 1 2005 3 is_stmt 1 view .LVU1523 +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4246 .loc 1 2005 46 is_stmt 0 view .LVU1524 + 4247 0042 836E ldr r3, [r0, #104] +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4248 .loc 1 2005 27 view .LVU1525 + 4249 0044 C3F38033 ubfx r3, r3, #14, #1 +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4250 .loc 1 2005 25 view .LVU1526 + 4251 0048 8B72 strb r3, [r1, #10] +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4252 .loc 1 2007 3 is_stmt 1 view .LVU1527 +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4253 .loc 1 2007 46 is_stmt 0 view .LVU1528 + 4254 004a 836E ldr r3, [r0, #104] +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4255 .loc 1 2007 27 view .LVU1529 + 4256 004c C3F34033 ubfx r3, r3, #13, #1 +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4257 .loc 1 2007 25 view .LVU1530 + 4258 0050 CB72 strb r3, [r1, #11] +2009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4259 .loc 1 2009 3 is_stmt 1 view .LVU1531 + ARM GAS /tmp/ccQEYyKb.s page 157 + + +2009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4260 .loc 1 2009 38 is_stmt 0 view .LVU1532 + 4261 0052 836E ldr r3, [r0, #104] +2009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4262 .loc 1 2009 19 view .LVU1533 + 4263 0054 C3F30033 ubfx r3, r3, #12, #1 +2009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4264 .loc 1 2009 17 view .LVU1534 + 4265 0058 0B73 strb r3, [r1, #12] +2011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4266 .loc 1 2011 3 is_stmt 1 view .LVU1535 +2011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4267 .loc 1 2011 19 is_stmt 0 view .LVU1536 + 4268 005a 0023 movs r3, #0 + 4269 005c 4B73 strb r3, [r1, #13] +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4270 .loc 1 2013 3 is_stmt 1 view .LVU1537 +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4271 .loc 1 2013 17 is_stmt 0 view .LVU1538 + 4272 005e 436C ldr r3, [r0, #68] +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4273 .loc 1 2013 5 view .LVU1539 + 4274 0060 002B cmp r3, #0 + 4275 0062 40F08680 bne .L249 +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4276 .loc 1 2015 5 is_stmt 1 view .LVU1540 +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4277 .loc 1 2015 35 is_stmt 0 view .LVU1541 + 4278 0066 826E ldr r2, [r0, #104] +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4279 .loc 1 2015 54 view .LVU1542 + 4280 0068 40F6FC73 movw r3, #4092 + 4281 006c 03EA8203 and r3, r3, r2, lsl #2 +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4282 .loc 1 2015 73 view .LVU1543 + 4283 0070 C26E ldr r2, [r0, #108] +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4284 .loc 1 2015 61 view .LVU1544 + 4285 0072 43EA9273 orr r3, r3, r2, lsr #30 +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4286 .loc 1 2015 22 view .LVU1545 + 4287 0076 0B61 str r3, [r1, #16] +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4288 .loc 1 2017 5 is_stmt 1 view .LVU1546 +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4289 .loc 1 2017 51 is_stmt 0 view .LVU1547 + 4290 0078 C36E ldr r3, [r0, #108] +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4291 .loc 1 2017 32 view .LVU1548 + 4292 007a C3F3C263 ubfx r3, r3, #27, #3 +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4293 .loc 1 2017 30 view .LVU1549 + 4294 007e 0B75 strb r3, [r1, #20] +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4295 .loc 1 2019 5 is_stmt 1 view .LVU1550 +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4296 .loc 1 2019 70 is_stmt 0 view .LVU1551 + ARM GAS /tmp/ccQEYyKb.s page 158 + + + 4297 0080 90F86F30 ldrb r3, [r0, #111] @ zero_extendqisi2 +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4298 .loc 1 2019 32 view .LVU1552 + 4299 0084 03F00703 and r3, r3, #7 +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4300 .loc 1 2019 30 view .LVU1553 + 4301 0088 4B75 strb r3, [r1, #21] +2021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4302 .loc 1 2021 5 is_stmt 1 view .LVU1554 +2021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4303 .loc 1 2021 51 is_stmt 0 view .LVU1555 + 4304 008a C36E ldr r3, [r0, #108] +2021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4305 .loc 1 2021 32 view .LVU1556 + 4306 008c C3F34253 ubfx r3, r3, #21, #3 +2021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4307 .loc 1 2021 30 view .LVU1557 + 4308 0090 8B75 strb r3, [r1, #22] +2023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4309 .loc 1 2023 5 is_stmt 1 view .LVU1558 +2023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4310 .loc 1 2023 51 is_stmt 0 view .LVU1559 + 4311 0092 C36E ldr r3, [r0, #108] +2023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4312 .loc 1 2023 32 view .LVU1560 + 4313 0094 C3F38243 ubfx r3, r3, #18, #3 +2023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4314 .loc 1 2023 30 view .LVU1561 + 4315 0098 CB75 strb r3, [r1, #23] +2025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4316 .loc 1 2025 5 is_stmt 1 view .LVU1562 +2025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4317 .loc 1 2025 46 is_stmt 0 view .LVU1563 + 4318 009a C36E ldr r3, [r0, #108] +2025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4319 .loc 1 2025 27 view .LVU1564 + 4320 009c C3F3C233 ubfx r3, r3, #15, #3 +2025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4321 .loc 1 2025 25 view .LVU1565 + 4322 00a0 0B76 strb r3, [r1, #24] +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); + 4323 .loc 1 2027 5 is_stmt 1 view .LVU1566 +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); + 4324 .loc 1 2027 34 is_stmt 0 view .LVU1567 + 4325 00a2 0B69 ldr r3, [r1, #16] +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); + 4326 .loc 1 2027 47 view .LVU1568 + 4327 00a4 0133 adds r3, r3, #1 +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockNbr *= (1UL << ((pCSD->DeviceSizeMul & 0x07U) + 2U)); + 4328 .loc 1 2027 27 view .LVU1569 + 4329 00a6 4365 str r3, [r0, #84] +2028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); + 4330 .loc 1 2028 5 is_stmt 1 view .LVU1570 +2028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); + 4331 .loc 1 2028 43 is_stmt 0 view .LVU1571 + 4332 00a8 0A7E ldrb r2, [r1, #24] @ zero_extendqisi2 +2028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); + ARM GAS /tmp/ccQEYyKb.s page 159 + + + 4333 .loc 1 2028 59 view .LVU1572 + 4334 00aa 02F00702 and r2, r2, #7 +2028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); + 4335 .loc 1 2028 68 view .LVU1573 + 4336 00ae 0232 adds r2, r2, #2 +2028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockSize = (1UL << (pCSD->RdBlockLen & 0x0FU)); + 4337 .loc 1 2028 26 view .LVU1574 + 4338 00b0 9340 lsls r3, r3, r2 + 4339 00b2 4365 str r3, [r0, #84] +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4340 .loc 1 2029 5 is_stmt 1 view .LVU1575 +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4341 .loc 1 2029 42 is_stmt 0 view .LVU1576 + 4342 00b4 0A7A ldrb r2, [r1, #8] @ zero_extendqisi2 +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4343 .loc 1 2029 55 view .LVU1577 + 4344 00b6 02F00F0C and ip, r2, #15 +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4345 .loc 1 2029 34 view .LVU1578 + 4346 00ba 0122 movs r2, #1 + 4347 00bc 02FA0CF2 lsl r2, r2, ip +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4348 .loc 1 2029 27 view .LVU1579 + 4349 00c0 8265 str r2, [r0, #88] +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockSize = 512U; + 4350 .loc 1 2031 5 is_stmt 1 view .LVU1580 +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockSize = 512U; + 4351 .loc 1 2031 82 is_stmt 0 view .LVU1581 + 4352 00c2 520A lsrs r2, r2, #9 +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockSize = 512U; + 4353 .loc 1 2031 55 view .LVU1582 + 4354 00c4 02FB03F3 mul r3, r2, r3 +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockSize = 512U; + 4355 .loc 1 2031 29 view .LVU1583 + 4356 00c8 C365 str r3, [r0, #92] +2032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4357 .loc 1 2032 5 is_stmt 1 view .LVU1584 +2032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4358 .loc 1 2032 30 is_stmt 0 view .LVU1585 + 4359 00ca 4FF40073 mov r3, #512 + 4360 00ce 0366 str r3, [r0, #96] + 4361 .L250: +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4362 .loc 1 2053 3 is_stmt 1 view .LVU1586 +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4363 .loc 1 2053 42 is_stmt 0 view .LVU1587 + 4364 00d0 C36E ldr r3, [r0, #108] +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4365 .loc 1 2053 23 view .LVU1588 + 4366 00d2 C3F38033 ubfx r3, r3, #14, #1 +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4367 .loc 1 2053 21 view .LVU1589 + 4368 00d6 4B76 strb r3, [r1, #25] +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4369 .loc 1 2055 3 is_stmt 1 view .LVU1590 +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4370 .loc 1 2055 41 is_stmt 0 view .LVU1591 + ARM GAS /tmp/ccQEYyKb.s page 160 + + + 4371 00d8 C36E ldr r3, [r0, #108] +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4372 .loc 1 2055 22 view .LVU1592 + 4373 00da C3F3C613 ubfx r3, r3, #7, #7 +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4374 .loc 1 2055 20 view .LVU1593 + 4375 00de 8B76 strb r3, [r1, #26] +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4376 .loc 1 2057 3 is_stmt 1 view .LVU1594 +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4377 .loc 1 2057 45 is_stmt 0 view .LVU1595 + 4378 00e0 C36E ldr r3, [r0, #108] +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4379 .loc 1 2057 27 view .LVU1596 + 4380 00e2 03F07F03 and r3, r3, #127 +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4381 .loc 1 2057 25 view .LVU1597 + 4382 00e6 CB76 strb r3, [r1, #27] +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4383 .loc 1 2059 3 is_stmt 1 view .LVU1598 +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4384 .loc 1 2059 48 is_stmt 0 view .LVU1599 + 4385 00e8 036F ldr r3, [r0, #112] +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4386 .loc 1 2059 29 view .LVU1600 + 4387 00ea DB0F lsrs r3, r3, #31 +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4388 .loc 1 2059 27 view .LVU1601 + 4389 00ec 0B77 strb r3, [r1, #28] +2061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4390 .loc 1 2061 3 is_stmt 1 view .LVU1602 +2061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4391 .loc 1 2061 41 is_stmt 0 view .LVU1603 + 4392 00ee 036F ldr r3, [r0, #112] +2061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4393 .loc 1 2061 22 view .LVU1604 + 4394 00f0 C3F34173 ubfx r3, r3, #29, #2 +2061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4395 .loc 1 2061 20 view .LVU1605 + 4396 00f4 4B77 strb r3, [r1, #29] +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4397 .loc 1 2063 3 is_stmt 1 view .LVU1606 +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4398 .loc 1 2063 42 is_stmt 0 view .LVU1607 + 4399 00f6 036F ldr r3, [r0, #112] +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4400 .loc 1 2063 23 view .LVU1608 + 4401 00f8 C3F38263 ubfx r3, r3, #26, #3 +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4402 .loc 1 2063 21 view .LVU1609 + 4403 00fc 8B77 strb r3, [r1, #30] +2065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4404 .loc 1 2065 3 is_stmt 1 view .LVU1610 +2065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4405 .loc 1 2065 43 is_stmt 0 view .LVU1611 + 4406 00fe 036F ldr r3, [r0, #112] +2065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 161 + + + 4407 .loc 1 2065 24 view .LVU1612 + 4408 0100 C3F38353 ubfx r3, r3, #22, #4 +2065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4409 .loc 1 2065 22 view .LVU1613 + 4410 0104 CB77 strb r3, [r1, #31] +2067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4411 .loc 1 2067 3 is_stmt 1 view .LVU1614 +2067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4412 .loc 1 2067 50 is_stmt 0 view .LVU1615 + 4413 0106 036F ldr r3, [r0, #112] +2067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4414 .loc 1 2067 31 view .LVU1616 + 4415 0108 C3F34053 ubfx r3, r3, #21, #1 +2067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4416 .loc 1 2067 29 view .LVU1617 + 4417 010c 81F82030 strb r3, [r1, #32] +2069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4418 .loc 1 2069 3 is_stmt 1 view .LVU1618 +2069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4419 .loc 1 2069 19 is_stmt 0 view .LVU1619 + 4420 0110 0023 movs r3, #0 + 4421 0112 81F82130 strb r3, [r1, #33] +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4422 .loc 1 2071 3 is_stmt 1 view .LVU1620 +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4423 .loc 1 2071 69 is_stmt 0 view .LVU1621 + 4424 0116 B0F87220 ldrh r2, [r0, #114] +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4425 .loc 1 2071 31 view .LVU1622 + 4426 011a 02F00102 and r2, r2, #1 +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4427 .loc 1 2071 29 view .LVU1623 + 4428 011e 81F82220 strb r2, [r1, #34] +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4429 .loc 1 2073 3 is_stmt 1 view .LVU1624 +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4430 .loc 1 2073 46 is_stmt 0 view .LVU1625 + 4431 0122 026F ldr r2, [r0, #112] +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4432 .loc 1 2073 27 view .LVU1626 + 4433 0124 C2F3C032 ubfx r2, r2, #15, #1 +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4434 .loc 1 2073 25 view .LVU1627 + 4435 0128 81F82320 strb r2, [r1, #35] +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4436 .loc 1 2075 3 is_stmt 1 view .LVU1628 +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4437 .loc 1 2075 39 is_stmt 0 view .LVU1629 + 4438 012c 026F ldr r2, [r0, #112] +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4439 .loc 1 2075 20 view .LVU1630 + 4440 012e C2F38032 ubfx r2, r2, #14, #1 +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4441 .loc 1 2075 18 view .LVU1631 + 4442 0132 81F82420 strb r2, [r1, #36] +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4443 .loc 1 2077 3 is_stmt 1 view .LVU1632 + ARM GAS /tmp/ccQEYyKb.s page 162 + + +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4444 .loc 1 2077 44 is_stmt 0 view .LVU1633 + 4445 0136 026F ldr r2, [r0, #112] +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4446 .loc 1 2077 25 view .LVU1634 + 4447 0138 C2F34032 ubfx r2, r2, #13, #1 +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4448 .loc 1 2077 23 view .LVU1635 + 4449 013c 81F82520 strb r2, [r1, #37] +2079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4450 .loc 1 2079 3 is_stmt 1 view .LVU1636 +2079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4451 .loc 1 2079 44 is_stmt 0 view .LVU1637 + 4452 0140 026F ldr r2, [r0, #112] +2079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4453 .loc 1 2079 25 view .LVU1638 + 4454 0142 C2F30032 ubfx r2, r2, #12, #1 +2079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4455 .loc 1 2079 23 view .LVU1639 + 4456 0146 81F82620 strb r2, [r1, #38] +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4457 .loc 1 2081 3 is_stmt 1 view .LVU1640 +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4458 .loc 1 2081 41 is_stmt 0 view .LVU1641 + 4459 014a 026F ldr r2, [r0, #112] +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4460 .loc 1 2081 22 view .LVU1642 + 4461 014c C2F38122 ubfx r2, r2, #10, #2 +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4462 .loc 1 2081 20 view .LVU1643 + 4463 0150 81F82720 strb r2, [r1, #39] +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4464 .loc 1 2083 3 is_stmt 1 view .LVU1644 +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4465 .loc 1 2083 33 is_stmt 0 view .LVU1645 + 4466 0154 026F ldr r2, [r0, #112] +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4467 .loc 1 2083 14 view .LVU1646 + 4468 0156 C2F30122 ubfx r2, r2, #8, #2 +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4469 .loc 1 2083 12 view .LVU1647 + 4470 015a 81F82820 strb r2, [r1, #40] +2085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4471 .loc 1 2085 3 is_stmt 1 view .LVU1648 +2085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4472 .loc 1 2085 38 is_stmt 0 view .LVU1649 + 4473 015e 026F ldr r2, [r0, #112] +2085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4474 .loc 1 2085 19 view .LVU1650 + 4475 0160 C2F34602 ubfx r2, r2, #1, #7 +2085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4476 .loc 1 2085 17 view .LVU1651 + 4477 0164 81F82920 strb r2, [r1, #41] +2087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4478 .loc 1 2087 3 is_stmt 1 view .LVU1652 +2087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4479 .loc 1 2087 19 is_stmt 0 view .LVU1653 + ARM GAS /tmp/ccQEYyKb.s page 163 + + + 4480 0168 0122 movs r2, #1 + 4481 016a 81F82A20 strb r2, [r1, #42] +2089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4482 .loc 1 2089 3 is_stmt 1 view .LVU1654 +2089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4483 .loc 1 2089 10 is_stmt 0 view .LVU1655 + 4484 016e 1846 mov r0, r3 + 4485 .LVL336: +2090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4486 .loc 1 2090 1 view .LVU1656 + 4487 0170 7047 bx lr + 4488 .LVL337: + 4489 .L249: +2034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4490 .loc 1 2034 8 is_stmt 1 view .LVU1657 +2034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4491 .loc 1 2034 10 is_stmt 0 view .LVU1658 + 4492 0172 012B cmp r3, #1 + 4493 0174 11D1 bne .L251 +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4494 .loc 1 2037 5 is_stmt 1 view .LVU1659 +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4495 .loc 1 2037 35 is_stmt 0 view .LVU1660 + 4496 0176 836E ldr r3, [r0, #104] +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4497 .loc 1 2037 54 view .LVU1661 + 4498 0178 1B04 lsls r3, r3, #16 + 4499 017a 03F47C13 and r3, r3, #4128768 +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4500 .loc 1 2037 93 view .LVU1662 + 4501 017e B0F86E20 ldrh r2, [r0, #110] +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4502 .loc 1 2037 62 view .LVU1663 + 4503 0182 1343 orrs r3, r3, r2 +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4504 .loc 1 2037 22 view .LVU1664 + 4505 0184 0B61 str r3, [r1, #16] +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockNbr = hsd->SdCard.BlockNbr; + 4506 .loc 1 2039 5 is_stmt 1 view .LVU1665 +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockNbr = hsd->SdCard.BlockNbr; + 4507 .loc 1 2039 34 is_stmt 0 view .LVU1666 + 4508 0186 0B69 ldr r3, [r1, #16] +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockNbr = hsd->SdCard.BlockNbr; + 4509 .loc 1 2039 47 view .LVU1667 + 4510 0188 0133 adds r3, r3, #1 +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockNbr = hsd->SdCard.BlockNbr; + 4511 .loc 1 2039 53 view .LVU1668 + 4512 018a 9B02 lsls r3, r3, #10 +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockNbr = hsd->SdCard.BlockNbr; + 4513 .loc 1 2039 26 view .LVU1669 + 4514 018c 4365 str r3, [r0, #84] +2040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockSize = 512U; + 4515 .loc 1 2040 5 is_stmt 1 view .LVU1670 +2040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.BlockSize = 512U; + 4516 .loc 1 2040 29 is_stmt 0 view .LVU1671 + 4517 018e C365 str r3, [r0, #92] +2041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockSize = hsd->SdCard.BlockSize; + ARM GAS /tmp/ccQEYyKb.s page 164 + + + 4518 .loc 1 2041 5 is_stmt 1 view .LVU1672 +2041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->SdCard.LogBlockSize = hsd->SdCard.BlockSize; + 4519 .loc 1 2041 27 is_stmt 0 view .LVU1673 + 4520 0190 4FF40073 mov r3, #512 + 4521 0194 8365 str r3, [r0, #88] +2042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4522 .loc 1 2042 5 is_stmt 1 view .LVU1674 +2042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4523 .loc 1 2042 30 is_stmt 0 view .LVU1675 + 4524 0196 0366 str r3, [r0, #96] + 4525 0198 9AE7 b .L250 + 4526 .L251: +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= HAL_SD_ERROR_UNSUPPORTED_FEATURE; + 4527 .loc 1 2047 5 is_stmt 1 view .LVU1676 + 4528 019a 0368 ldr r3, [r0] + 4529 019c 054A ldr r2, .L253 + 4530 019e 9A63 str r2, [r3, #56] +2048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 4531 .loc 1 2048 5 view .LVU1677 +2048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 4532 .loc 1 2048 20 is_stmt 0 view .LVU1678 + 4533 01a0 836B ldr r3, [r0, #56] + 4534 01a2 43F08053 orr r3, r3, #268435456 + 4535 01a6 8363 str r3, [r0, #56] +2049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 4536 .loc 1 2049 5 is_stmt 1 view .LVU1679 +2049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 4537 .loc 1 2049 16 is_stmt 0 view .LVU1680 + 4538 01a8 0123 movs r3, #1 + 4539 01aa 80F83430 strb r3, [r0, #52] +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4540 .loc 1 2050 5 is_stmt 1 view .LVU1681 +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4541 .loc 1 2050 12 is_stmt 0 view .LVU1682 + 4542 01ae 1846 mov r0, r3 + 4543 .LVL338: +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4544 .loc 1 2050 12 view .LVU1683 + 4545 01b0 7047 bx lr + 4546 .L254: + 4547 01b2 00BF .align 2 + 4548 .L253: + 4549 01b4 FF054000 .word 4195839 + 4550 .cfi_endproc + 4551 .LFE161: + 4553 .section .text.SD_InitCard,"ax",%progbits + 4554 .align 1 + 4555 .syntax unified + 4556 .thumb + 4557 .thumb_func + 4558 .fpu fpv5-d16 + 4560 SD_InitCard: + 4561 .LVL339: + 4562 .LFB173: +2618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardCSDTypeDef CSD; + 4563 .loc 1 2618 1 is_stmt 1 view -0 + 4564 .cfi_startproc + ARM GAS /tmp/ccQEYyKb.s page 165 + + + 4565 @ args = 0, pretend = 0, frame = 48 + 4566 @ frame_needed = 0, uses_anonymous_args = 0 +2618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardCSDTypeDef CSD; + 4567 .loc 1 2618 1 is_stmt 0 view .LVU1685 + 4568 0000 70B5 push {r4, r5, r6, lr} + 4569 .LCFI51: + 4570 .cfi_def_cfa_offset 16 + 4571 .cfi_offset 4, -16 + 4572 .cfi_offset 5, -12 + 4573 .cfi_offset 6, -8 + 4574 .cfi_offset 14, -4 + 4575 0002 90B0 sub sp, sp, #64 + 4576 .LCFI52: + 4577 .cfi_def_cfa_offset 80 + 4578 0004 0446 mov r4, r0 +2619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 4579 .loc 1 2619 3 is_stmt 1 view .LVU1686 +2620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint16_t sd_rca = 1U; + 4580 .loc 1 2620 3 view .LVU1687 +2621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4581 .loc 1 2621 3 view .LVU1688 +2621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4582 .loc 1 2621 12 is_stmt 0 view .LVU1689 + 4583 0006 0123 movs r3, #1 + 4584 0008 ADF81230 strh r3, [sp, #18] @ movhi +2624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4585 .loc 1 2624 3 is_stmt 1 view .LVU1690 +2624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4586 .loc 1 2624 6 is_stmt 0 view .LVU1691 + 4587 000c 0068 ldr r0, [r0] + 4588 .LVL340: +2624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4589 .loc 1 2624 6 view .LVU1692 + 4590 000e FFF7FEFF bl SDMMC_GetPowerState + 4591 .LVL341: +2624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4592 .loc 1 2624 5 view .LVU1693 + 4593 0012 0028 cmp r0, #0 + 4594 0014 6CD0 beq .L260 +2630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4595 .loc 1 2630 3 is_stmt 1 view .LVU1694 +2630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4596 .loc 1 2630 17 is_stmt 0 view .LVU1695 + 4597 0016 636C ldr r3, [r4, #68] +2630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4598 .loc 1 2630 5 view .LVU1696 + 4599 0018 032B cmp r3, #3 + 4600 001a 45D1 bne .L263 + 4601 .L257: +2648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4602 .loc 1 2648 3 is_stmt 1 view .LVU1697 +2648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4603 .loc 1 2648 17 is_stmt 0 view .LVU1698 + 4604 001c 636C ldr r3, [r4, #68] +2648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4605 .loc 1 2648 5 view .LVU1699 + 4606 001e 032B cmp r3, #3 + ARM GAS /tmp/ccQEYyKb.s page 166 + + + 4607 0020 5DD1 bne .L264 + 4608 .L258: +2658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4609 .loc 1 2658 3 is_stmt 1 view .LVU1700 +2658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4610 .loc 1 2658 17 is_stmt 0 view .LVU1701 + 4611 0022 636C ldr r3, [r4, #68] +2658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4612 .loc 1 2658 5 view .LVU1702 + 4613 0024 032B cmp r3, #3 + 4614 0026 1DD0 beq .L259 +2661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4615 .loc 1 2661 5 is_stmt 1 view .LVU1703 +2661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4616 .loc 1 2661 28 is_stmt 0 view .LVU1704 + 4617 0028 BDF81210 ldrh r1, [sp, #18] + 4618 002c 2165 str r1, [r4, #80] +2664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4619 .loc 1 2664 5 is_stmt 1 view .LVU1705 +2664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4620 .loc 1 2664 18 is_stmt 0 view .LVU1706 + 4621 002e 0904 lsls r1, r1, #16 + 4622 0030 2068 ldr r0, [r4] + 4623 0032 FFF7FEFF bl SDMMC_CmdSendCSD + 4624 .LVL342: +2665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4625 .loc 1 2665 5 is_stmt 1 view .LVU1707 +2665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4626 .loc 1 2665 7 is_stmt 0 view .LVU1708 + 4627 0036 0546 mov r5, r0 + 4628 0038 0028 cmp r0, #0 + 4629 003a 5BD1 bne .L255 +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); + 4630 .loc 1 2672 7 is_stmt 1 view .LVU1709 +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); + 4631 .loc 1 2672 22 is_stmt 0 view .LVU1710 + 4632 003c 0021 movs r1, #0 + 4633 003e 2068 ldr r0, [r4] + 4634 .LVL343: +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); + 4635 .loc 1 2672 22 view .LVU1711 + 4636 0040 FFF7FEFF bl SDMMC_GetResponse + 4637 .LVL344: +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); + 4638 .loc 1 2672 20 view .LVU1712 + 4639 0044 6066 str r0, [r4, #100] +2673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[2U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP3); + 4640 .loc 1 2673 7 is_stmt 1 view .LVU1713 +2673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[2U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP3); + 4641 .loc 1 2673 22 is_stmt 0 view .LVU1714 + 4642 0046 0421 movs r1, #4 + 4643 0048 2068 ldr r0, [r4] + 4644 004a FFF7FEFF bl SDMMC_GetResponse + 4645 .LVL345: +2673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[2U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP3); + 4646 .loc 1 2673 20 view .LVU1715 + 4647 004e A066 str r0, [r4, #104] + ARM GAS /tmp/ccQEYyKb.s page 167 + + +2674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[3U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP4); + 4648 .loc 1 2674 7 is_stmt 1 view .LVU1716 +2674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[3U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP4); + 4649 .loc 1 2674 22 is_stmt 0 view .LVU1717 + 4650 0050 0821 movs r1, #8 + 4651 0052 2068 ldr r0, [r4] + 4652 0054 FFF7FEFF bl SDMMC_GetResponse + 4653 .LVL346: +2674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CSD[3U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP4); + 4654 .loc 1 2674 20 view .LVU1718 + 4655 0058 E066 str r0, [r4, #108] +2675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4656 .loc 1 2675 7 is_stmt 1 view .LVU1719 +2675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4657 .loc 1 2675 22 is_stmt 0 view .LVU1720 + 4658 005a 0C21 movs r1, #12 + 4659 005c 2068 ldr r0, [r4] + 4660 005e FFF7FEFF bl SDMMC_GetResponse + 4661 .LVL347: +2675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4662 .loc 1 2675 20 view .LVU1721 + 4663 0062 2067 str r0, [r4, #112] + 4664 .LVL348: + 4665 .L259: +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4666 .loc 1 2680 3 is_stmt 1 view .LVU1722 +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4667 .loc 1 2680 24 is_stmt 0 view .LVU1723 + 4668 0064 0421 movs r1, #4 + 4669 0066 2068 ldr r0, [r4] + 4670 0068 FFF7FEFF bl SDMMC_GetResponse + 4671 .LVL349: +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4672 .loc 1 2680 70 view .LVU1724 + 4673 006c 000D lsrs r0, r0, #20 +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4674 .loc 1 2680 21 view .LVU1725 + 4675 006e E064 str r0, [r4, #76] +2683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4676 .loc 1 2683 3 is_stmt 1 view .LVU1726 +2683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4677 .loc 1 2683 7 is_stmt 0 view .LVU1727 + 4678 0070 05A9 add r1, sp, #20 + 4679 0072 2046 mov r0, r4 + 4680 0074 FFF7FEFF bl HAL_SD_GetCardCSD + 4681 .LVL350: +2683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4682 .loc 1 2683 6 view .LVU1728 + 4683 0078 0028 cmp r0, #0 + 4684 007a 3ED1 bne .L261 +2689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4685 .loc 1 2689 3 is_stmt 1 view .LVU1729 +2689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4686 .loc 1 2689 82 is_stmt 0 view .LVU1730 + 4687 007c 226D ldr r2, [r4, #80] +2689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4688 .loc 1 2689 16 view .LVU1731 + ARM GAS /tmp/ccQEYyKb.s page 168 + + + 4689 007e 1204 lsls r2, r2, #16 + 4690 0080 0023 movs r3, #0 + 4691 0082 2068 ldr r0, [r4] + 4692 0084 FFF7FEFF bl SDMMC_CmdSelDesel + 4693 .LVL351: +2690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4694 .loc 1 2690 3 is_stmt 1 view .LVU1732 +2690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4695 .loc 1 2690 5 is_stmt 0 view .LVU1733 + 4696 0088 0546 mov r5, r0 + 4697 008a 98BB cbnz r0, .L255 +2696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4698 .loc 1 2696 3 is_stmt 1 view .LVU1734 +2696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4699 .loc 1 2696 9 is_stmt 0 view .LVU1735 + 4700 008c 2346 mov r3, r4 + 4701 008e 53F8106B ldr r6, [r3], #16 + 4702 0092 93E80700 ldm r3, {r0, r1, r2} + 4703 .LVL352: +2696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4704 .loc 1 2696 9 view .LVU1736 + 4705 0096 8DE80700 stm sp, {r0, r1, r2} + 4706 009a 0434 adds r4, r4, #4 + 4707 .LVL353: +2696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4708 .loc 1 2696 9 view .LVU1737 + 4709 009c 94E80E00 ldm r4, {r1, r2, r3} + 4710 00a0 3046 mov r0, r6 + 4711 00a2 FFF7FEFF bl SDMMC_Init + 4712 .LVL354: +2699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4713 .loc 1 2699 3 is_stmt 1 view .LVU1738 +2699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4714 .loc 1 2699 10 is_stmt 0 view .LVU1739 + 4715 00a6 25E0 b .L255 + 4716 .LVL355: + 4717 .L263: +2633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4718 .loc 1 2633 5 is_stmt 1 view .LVU1740 +2633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4719 .loc 1 2633 18 is_stmt 0 view .LVU1741 + 4720 00a8 2068 ldr r0, [r4] + 4721 00aa FFF7FEFF bl SDMMC_CmdSendCID + 4722 .LVL356: +2634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4723 .loc 1 2634 5 is_stmt 1 view .LVU1742 +2634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4724 .loc 1 2634 7 is_stmt 0 view .LVU1743 + 4725 00ae 0546 mov r5, r0 + 4726 00b0 00BB cbnz r0, .L255 +2641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); + 4727 .loc 1 2641 7 is_stmt 1 view .LVU1744 +2641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); + 4728 .loc 1 2641 22 is_stmt 0 view .LVU1745 + 4729 00b2 0021 movs r1, #0 + 4730 00b4 2068 ldr r0, [r4] + 4731 .LVL357: + ARM GAS /tmp/ccQEYyKb.s page 169 + + +2641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); + 4732 .loc 1 2641 22 view .LVU1746 + 4733 00b6 FFF7FEFF bl SDMMC_GetResponse + 4734 .LVL358: +2641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[1U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP2); + 4735 .loc 1 2641 20 view .LVU1747 + 4736 00ba 6067 str r0, [r4, #116] +2642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[2U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP3); + 4737 .loc 1 2642 7 is_stmt 1 view .LVU1748 +2642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[2U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP3); + 4738 .loc 1 2642 22 is_stmt 0 view .LVU1749 + 4739 00bc 0421 movs r1, #4 + 4740 00be 2068 ldr r0, [r4] + 4741 00c0 FFF7FEFF bl SDMMC_GetResponse + 4742 .LVL359: +2642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[2U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP3); + 4743 .loc 1 2642 20 view .LVU1750 + 4744 00c4 A067 str r0, [r4, #120] +2643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[3U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP4); + 4745 .loc 1 2643 7 is_stmt 1 view .LVU1751 +2643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[3U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP4); + 4746 .loc 1 2643 22 is_stmt 0 view .LVU1752 + 4747 00c6 0821 movs r1, #8 + 4748 00c8 2068 ldr r0, [r4] + 4749 00ca FFF7FEFF bl SDMMC_GetResponse + 4750 .LVL360: +2643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->CID[3U] = SDMMC_GetResponse(hsd->Instance, SDMMC_RESP4); + 4751 .loc 1 2643 20 view .LVU1753 + 4752 00ce E067 str r0, [r4, #124] +2644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4753 .loc 1 2644 7 is_stmt 1 view .LVU1754 +2644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4754 .loc 1 2644 22 is_stmt 0 view .LVU1755 + 4755 00d0 0C21 movs r1, #12 + 4756 00d2 2068 ldr r0, [r4] + 4757 00d4 FFF7FEFF bl SDMMC_GetResponse + 4758 .LVL361: +2644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4759 .loc 1 2644 20 view .LVU1756 + 4760 00d8 C4F88000 str r0, [r4, #128] + 4761 00dc 9EE7 b .L257 + 4762 .LVL362: + 4763 .L264: +2652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4764 .loc 1 2652 5 is_stmt 1 view .LVU1757 +2652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4765 .loc 1 2652 18 is_stmt 0 view .LVU1758 + 4766 00de 0DF11201 add r1, sp, #18 + 4767 00e2 2068 ldr r0, [r4] + 4768 00e4 FFF7FEFF bl SDMMC_CmdSetRelAdd + 4769 .LVL363: +2653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4770 .loc 1 2653 5 is_stmt 1 view .LVU1759 +2653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4771 .loc 1 2653 7 is_stmt 0 view .LVU1760 + 4772 00e8 0546 mov r5, r0 + 4773 00ea 0028 cmp r0, #0 + ARM GAS /tmp/ccQEYyKb.s page 170 + + + 4774 00ec 99D0 beq .L258 + 4775 00ee 01E0 b .L255 + 4776 .LVL364: + 4777 .L260: +2627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4778 .loc 1 2627 12 view .LVU1761 + 4779 00f0 4FF08065 mov r5, #67108864 + 4780 .LVL365: + 4781 .L255: +2700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4782 .loc 1 2700 1 view .LVU1762 + 4783 00f4 2846 mov r0, r5 + 4784 00f6 10B0 add sp, sp, #64 + 4785 .LCFI53: + 4786 .cfi_remember_state + 4787 .cfi_def_cfa_offset 16 + 4788 @ sp needed + 4789 00f8 70BD pop {r4, r5, r6, pc} + 4790 .LVL366: + 4791 .L261: + 4792 .LCFI54: + 4793 .cfi_restore_state +2685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4794 .loc 1 2685 12 view .LVU1763 + 4795 00fa 4FF08055 mov r5, #268435456 + 4796 00fe F9E7 b .L255 + 4797 .cfi_endproc + 4798 .LFE173: + 4800 .section .text.HAL_SD_InitCard,"ax",%progbits + 4801 .align 1 + 4802 .global HAL_SD_InitCard + 4803 .syntax unified + 4804 .thumb + 4805 .thumb_func + 4806 .fpu fpv5-d16 + 4808 HAL_SD_InitCard: + 4809 .LVL367: + 4810 .LFB142: + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 4811 .loc 1 404 1 is_stmt 1 view -0 + 4812 .cfi_startproc + 4813 @ args = 0, pretend = 0, frame = 24 + 4814 @ frame_needed = 0, uses_anonymous_args = 0 + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 4815 .loc 1 404 1 is_stmt 0 view .LVU1765 + 4816 0000 30B5 push {r4, r5, lr} + 4817 .LCFI55: + 4818 .cfi_def_cfa_offset 12 + 4819 .cfi_offset 4, -12 + 4820 .cfi_offset 5, -8 + 4821 .cfi_offset 14, -4 + 4822 0002 8BB0 sub sp, sp, #44 + 4823 .LCFI56: + 4824 .cfi_def_cfa_offset 56 + 4825 0004 0446 mov r4, r0 + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef status; + 4826 .loc 1 405 3 is_stmt 1 view .LVU1766 + ARM GAS /tmp/ccQEYyKb.s page 171 + + + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_InitTypeDef Init; + 4827 .loc 1 406 3 view .LVU1767 + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4828 .loc 1 407 3 view .LVU1768 + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockBypass = SDMMC_CLOCK_BYPASS_DISABLE; + 4829 .loc 1 410 3 view .LVU1769 + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockBypass = SDMMC_CLOCK_BYPASS_DISABLE; + 4830 .loc 1 410 28 is_stmt 0 view .LVU1770 + 4831 0006 0023 movs r3, #0 + 4832 0008 0493 str r3, [sp, #16] + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE; + 4833 .loc 1 411 3 is_stmt 1 view .LVU1771 + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE; + 4834 .loc 1 411 28 is_stmt 0 view .LVU1772 + 4835 000a 0593 str r3, [sp, #20] + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.BusWide = SDMMC_BUS_WIDE_1B; + 4836 .loc 1 412 3 is_stmt 1 view .LVU1773 + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.BusWide = SDMMC_BUS_WIDE_1B; + 4837 .loc 1 412 28 is_stmt 0 view .LVU1774 + 4838 000c 0693 str r3, [sp, #24] + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE; + 4839 .loc 1 413 3 is_stmt 1 view .LVU1775 + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE; + 4840 .loc 1 413 28 is_stmt 0 view .LVU1776 + 4841 000e 0793 str r3, [sp, #28] + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockDiv = SDMMC_INIT_CLK_DIV; + 4842 .loc 1 414 3 is_stmt 1 view .LVU1777 + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockDiv = SDMMC_INIT_CLK_DIV; + 4843 .loc 1 414 28 is_stmt 0 view .LVU1778 + 4844 0010 0893 str r3, [sp, #32] + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4845 .loc 1 415 3 is_stmt 1 view .LVU1779 + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4846 .loc 1 415 28 is_stmt 0 view .LVU1780 + 4847 0012 7623 movs r3, #118 + 4848 0014 0993 str r3, [sp, #36] + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(status != HAL_OK) + 4849 .loc 1 418 3 is_stmt 1 view .LVU1781 + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(status != HAL_OK) + 4850 .loc 1 418 12 is_stmt 0 view .LVU1782 + 4851 0016 0AAB add r3, sp, #40 + 4852 0018 13E90700 ldmdb r3, {r0, r1, r2} + 4853 .LVL368: + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(status != HAL_OK) + 4854 .loc 1 418 12 view .LVU1783 + 4855 001c 8DE80700 stm sp, {r0, r1, r2} + 4856 0020 04AB add r3, sp, #16 + 4857 0022 0ECB ldm r3, {r1, r2, r3} + 4858 0024 2068 ldr r0, [r4] + 4859 0026 FFF7FEFF bl SDMMC_Init + 4860 .LVL369: + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4861 .loc 1 419 3 is_stmt 1 view .LVU1784 + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4862 .loc 1 419 5 is_stmt 0 view .LVU1785 + 4863 002a 18B1 cbz r0, .L271 + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + ARM GAS /tmp/ccQEYyKb.s page 172 + + + 4864 .loc 1 421 12 view .LVU1786 + 4865 002c 0125 movs r5, #1 + 4866 .LVL370: + 4867 .L266: + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4868 .loc 1 466 1 view .LVU1787 + 4869 002e 2846 mov r0, r5 + 4870 0030 0BB0 add sp, sp, #44 + 4871 .LCFI57: + 4872 .cfi_remember_state + 4873 .cfi_def_cfa_offset 12 + 4874 @ sp needed + 4875 0032 30BD pop {r4, r5, pc} + 4876 .LVL371: + 4877 .L271: + 4878 .LCFI58: + 4879 .cfi_restore_state + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4880 .loc 1 466 1 view .LVU1788 + 4881 0034 0546 mov r5, r0 + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4882 .loc 1 425 3 is_stmt 1 view .LVU1789 + 4883 0036 2268 ldr r2, [r4] + 4884 0038 5368 ldr r3, [r2, #4] + 4885 003a 23F48073 bic r3, r3, #256 + 4886 003e 5360 str r3, [r2, #4] + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4887 .loc 1 428 3 view .LVU1790 + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4888 .loc 1 428 9 is_stmt 0 view .LVU1791 + 4889 0040 2068 ldr r0, [r4] + 4890 .LVL372: + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4891 .loc 1 428 9 view .LVU1792 + 4892 0042 FFF7FEFF bl SDMMC_PowerState_ON + 4893 .LVL373: + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4894 .loc 1 431 3 is_stmt 1 view .LVU1793 + 4895 0046 2268 ldr r2, [r4] + 4896 0048 5368 ldr r3, [r2, #4] + 4897 004a 43F48073 orr r3, r3, #256 + 4898 004e 5360 str r3, [r2, #4] + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 4899 .loc 1 434 3 view .LVU1794 + 4900 0050 0220 movs r0, #2 + 4901 0052 FFF7FEFF bl HAL_Delay + 4902 .LVL374: + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4903 .loc 1 437 3 view .LVU1795 + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4904 .loc 1 437 16 is_stmt 0 view .LVU1796 + 4905 0056 2046 mov r0, r4 + 4906 0058 FFF7FEFF bl SD_PowerON + 4907 .LVL375: + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4908 .loc 1 438 3 is_stmt 1 view .LVU1797 + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 173 + + + 4909 .loc 1 438 5 is_stmt 0 view .LVU1798 + 4910 005c 30B1 cbz r0, .L267 + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 4911 .loc 1 440 5 is_stmt 1 view .LVU1799 + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 4912 .loc 1 440 16 is_stmt 0 view .LVU1800 + 4913 005e 0125 movs r5, #1 + 4914 0060 84F83450 strb r5, [r4, #52] + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 4915 .loc 1 441 5 is_stmt 1 view .LVU1801 + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 4916 .loc 1 441 20 is_stmt 0 view .LVU1802 + 4917 0064 A36B ldr r3, [r4, #56] + 4918 0066 0343 orrs r3, r3, r0 + 4919 0068 A363 str r3, [r4, #56] + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4920 .loc 1 442 5 is_stmt 1 view .LVU1803 + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4921 .loc 1 442 12 is_stmt 0 view .LVU1804 + 4922 006a E0E7 b .L266 + 4923 .L267: + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4924 .loc 1 446 3 is_stmt 1 view .LVU1805 + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4925 .loc 1 446 16 is_stmt 0 view .LVU1806 + 4926 006c 2046 mov r0, r4 + 4927 .LVL376: + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4928 .loc 1 446 16 view .LVU1807 + 4929 006e FFF7FEFF bl SD_InitCard + 4930 .LVL377: + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4931 .loc 1 447 3 is_stmt 1 view .LVU1808 + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4932 .loc 1 447 5 is_stmt 0 view .LVU1809 + 4933 0072 30B1 cbz r0, .L268 + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 4934 .loc 1 449 5 is_stmt 1 view .LVU1810 + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 4935 .loc 1 449 16 is_stmt 0 view .LVU1811 + 4936 0074 0125 movs r5, #1 + 4937 0076 84F83450 strb r5, [r4, #52] + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 4938 .loc 1 450 5 is_stmt 1 view .LVU1812 + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 4939 .loc 1 450 20 is_stmt 0 view .LVU1813 + 4940 007a A36B ldr r3, [r4, #56] + 4941 007c 0343 orrs r3, r3, r0 + 4942 007e A363 str r3, [r4, #56] + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4943 .loc 1 451 5 is_stmt 1 view .LVU1814 + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4944 .loc 1 451 12 is_stmt 0 view .LVU1815 + 4945 0080 D5E7 b .L266 + 4946 .L268: + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4947 .loc 1 455 3 is_stmt 1 view .LVU1816 + ARM GAS /tmp/ccQEYyKb.s page 174 + + + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4948 .loc 1 455 16 is_stmt 0 view .LVU1817 + 4949 0082 4FF40071 mov r1, #512 + 4950 0086 2068 ldr r0, [r4] + 4951 .LVL378: + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 4952 .loc 1 455 16 view .LVU1818 + 4953 0088 FFF7FEFF bl SDMMC_CmdBlockLength + 4954 .LVL379: + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4955 .loc 1 456 3 is_stmt 1 view .LVU1819 + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4956 .loc 1 456 5 is_stmt 0 view .LVU1820 + 4957 008c 0028 cmp r0, #0 + 4958 008e CED0 beq .L266 + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 4959 .loc 1 459 5 is_stmt 1 view .LVU1821 + 4960 0090 2368 ldr r3, [r4] + 4961 0092 0449 ldr r1, .L272 + 4962 0094 9963 str r1, [r3, #56] + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 4963 .loc 1 460 5 view .LVU1822 + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 4964 .loc 1 460 20 is_stmt 0 view .LVU1823 + 4965 0096 A36B ldr r3, [r4, #56] + 4966 0098 0343 orrs r3, r3, r0 + 4967 009a A363 str r3, [r4, #56] + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 4968 .loc 1 461 5 is_stmt 1 view .LVU1824 + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** return HAL_ERROR; + 4969 .loc 1 461 16 is_stmt 0 view .LVU1825 + 4970 009c 0125 movs r5, #1 + 4971 009e 84F83450 strb r5, [r4, #52] + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4972 .loc 1 462 5 is_stmt 1 view .LVU1826 + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 4973 .loc 1 462 12 is_stmt 0 view .LVU1827 + 4974 00a2 C4E7 b .L266 + 4975 .L273: + 4976 .align 2 + 4977 .L272: + 4978 00a4 FF054000 .word 4195839 + 4979 .cfi_endproc + 4980 .LFE142: + 4982 .section .text.HAL_SD_Init,"ax",%progbits + 4983 .align 1 + 4984 .global HAL_SD_Init + 4985 .syntax unified + 4986 .thumb + 4987 .thumb_func + 4988 .fpu fpv5-d16 + 4990 HAL_SD_Init: + 4991 .LVL380: + 4992 .LFB141: + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check the SD handle allocation */ + 4993 .loc 1 336 1 is_stmt 1 view -0 + 4994 .cfi_startproc + ARM GAS /tmp/ccQEYyKb.s page 175 + + + 4995 @ args = 0, pretend = 0, frame = 0 + 4996 @ frame_needed = 0, uses_anonymous_args = 0 + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4997 .loc 1 338 3 view .LVU1829 + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 4998 .loc 1 338 5 is_stmt 0 view .LVU1830 + 4999 0000 A8B1 cbz r0, .L277 + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Check the SD handle allocation */ + 5000 .loc 1 336 1 view .LVU1831 + 5001 0002 10B5 push {r4, lr} + 5002 .LCFI59: + 5003 .cfi_def_cfa_offset 8 + 5004 .cfi_offset 4, -8 + 5005 .cfi_offset 14, -4 + 5006 0004 0446 mov r4, r0 + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_CLOCK_EDGE(hsd->Init.ClockEdge)); + 5007 .loc 1 344 3 is_stmt 1 view .LVU1832 + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_CLOCK_BYPASS(hsd->Init.ClockBypass)); + 5008 .loc 1 345 3 view .LVU1833 + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_CLOCK_POWER_SAVE(hsd->Init.ClockPowerSave)); + 5009 .loc 1 346 3 view .LVU1834 + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_BUS_WIDE(hsd->Init.BusWide)); + 5010 .loc 1 347 3 view .LVU1835 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(hsd->Init.HardwareFlowControl)); + 5011 .loc 1 348 3 view .LVU1836 + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** assert_param(IS_SDMMC_CLKDIV(hsd->Init.ClockDiv)); + 5012 .loc 1 349 3 view .LVU1837 + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5013 .loc 1 350 3 view .LVU1838 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5014 .loc 1 352 3 view .LVU1839 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5015 .loc 1 352 9 is_stmt 0 view .LVU1840 + 5016 0006 90F83430 ldrb r3, [r0, #52] @ zero_extendqisi2 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5017 .loc 1 352 5 view .LVU1841 + 5018 000a 63B1 cbz r3, .L283 + 5019 .LVL381: + 5020 .L276: + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5021 .loc 1 376 3 is_stmt 1 view .LVU1842 + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5022 .loc 1 376 14 is_stmt 0 view .LVU1843 + 5023 000c 0323 movs r3, #3 + 5024 000e 84F83430 strb r3, [r4, #52] + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5025 .loc 1 379 3 is_stmt 1 view .LVU1844 + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5026 .loc 1 379 7 is_stmt 0 view .LVU1845 + 5027 0012 2046 mov r0, r4 + 5028 0014 FFF7FEFF bl HAL_SD_InitCard + 5029 .LVL382: + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5030 .loc 1 379 6 view .LVU1846 + 5031 0018 58B9 cbnz r0, .L278 + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5032 .loc 1 385 3 is_stmt 1 view .LVU1847 + ARM GAS /tmp/ccQEYyKb.s page 176 + + + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5033 .loc 1 385 18 is_stmt 0 view .LVU1848 + 5034 001a A063 str r0, [r4, #56] + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5035 .loc 1 388 3 is_stmt 1 view .LVU1849 + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5036 .loc 1 388 16 is_stmt 0 view .LVU1850 + 5037 001c 2063 str r0, [r4, #48] + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5038 .loc 1 391 3 is_stmt 1 view .LVU1851 + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5039 .loc 1 391 14 is_stmt 0 view .LVU1852 + 5040 001e 0123 movs r3, #1 + 5041 0020 84F83430 strb r3, [r4, #52] + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5042 .loc 1 393 3 is_stmt 1 view .LVU1853 + 5043 .L275: + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5044 .loc 1 394 1 is_stmt 0 view .LVU1854 + 5045 0024 10BD pop {r4, pc} + 5046 .LVL383: + 5047 .L283: + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 5048 .loc 1 355 5 is_stmt 1 view .LVU1855 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 5049 .loc 1 355 15 is_stmt 0 view .LVU1856 + 5050 0026 0377 strb r3, [r0, #28] + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 5051 .loc 1 372 5 is_stmt 1 view .LVU1857 + 5052 0028 FFF7FEFF bl HAL_SD_MspInit + 5053 .LVL384: + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 5054 .loc 1 372 5 is_stmt 0 view .LVU1858 + 5055 002c EEE7 b .L276 + 5056 .LVL385: + 5057 .L277: + 5058 .LCFI60: + 5059 .cfi_def_cfa_offset 0 + 5060 .cfi_restore 4 + 5061 .cfi_restore 14 + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5062 .loc 1 340 12 view .LVU1859 + 5063 002e 0120 movs r0, #1 + 5064 .LVL386: + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5065 .loc 1 394 1 view .LVU1860 + 5066 0030 7047 bx lr + 5067 .LVL387: + 5068 .L278: + 5069 .LCFI61: + 5070 .cfi_def_cfa_offset 8 + 5071 .cfi_offset 4, -8 + 5072 .cfi_offset 14, -4 + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5073 .loc 1 381 12 view .LVU1861 + 5074 0032 0120 movs r0, #1 + 5075 0034 F6E7 b .L275 + ARM GAS /tmp/ccQEYyKb.s page 177 + + + 5076 .cfi_endproc + 5077 .LFE141: + 5079 .section .text.HAL_SD_GetCardStatus,"ax",%progbits + 5080 .align 1 + 5081 .global HAL_SD_GetCardStatus + 5082 .syntax unified + 5083 .thumb + 5084 .thumb_func + 5085 .fpu fpv5-d16 + 5087 HAL_SD_GetCardStatus: + 5088 .LVL388: + 5089 .LFB162: +2100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t sd_status[16]; + 5090 .loc 1 2100 1 is_stmt 1 view -0 + 5091 .cfi_startproc + 5092 @ args = 0, pretend = 0, frame = 64 + 5093 @ frame_needed = 0, uses_anonymous_args = 0 +2100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t sd_status[16]; + 5094 .loc 1 2100 1 is_stmt 0 view .LVU1863 + 5095 0000 30B5 push {r4, r5, lr} + 5096 .LCFI62: + 5097 .cfi_def_cfa_offset 12 + 5098 .cfi_offset 4, -12 + 5099 .cfi_offset 5, -8 + 5100 .cfi_offset 14, -4 + 5101 0002 91B0 sub sp, sp, #68 + 5102 .LCFI63: + 5103 .cfi_def_cfa_offset 80 + 5104 0004 0546 mov r5, r0 + 5105 0006 0C46 mov r4, r1 +2101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 5106 .loc 1 2101 3 is_stmt 1 view .LVU1864 +2102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef status = HAL_OK; + 5107 .loc 1 2102 3 view .LVU1865 +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5108 .loc 1 2103 3 view .LVU1866 + 5109 .LVL389: +2105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 5110 .loc 1 2105 3 view .LVU1867 +2105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 5111 .loc 1 2105 16 is_stmt 0 view .LVU1868 + 5112 0008 6946 mov r1, sp + 5113 .LVL390: +2105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 5114 .loc 1 2105 16 view .LVU1869 + 5115 000a FFF7FEFF bl SD_SendSDStatus + 5116 .LVL391: +2106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5117 .loc 1 2106 3 is_stmt 1 view .LVU1870 +2106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5118 .loc 1 2106 5 is_stmt 0 view .LVU1871 + 5119 000e C0B1 cbz r0, .L285 +2109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 5120 .loc 1 2109 5 is_stmt 1 view .LVU1872 + 5121 0010 2B68 ldr r3, [r5] + 5122 0012 2549 ldr r1, .L289 + 5123 0014 9963 str r1, [r3, #56] + ARM GAS /tmp/ccQEYyKb.s page 178 + + +2110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 5124 .loc 1 2110 5 view .LVU1873 +2110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 5125 .loc 1 2110 20 is_stmt 0 view .LVU1874 + 5126 0016 AB6B ldr r3, [r5, #56] + 5127 0018 0343 orrs r3, r3, r0 + 5128 001a AB63 str r3, [r5, #56] +2111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5129 .loc 1 2111 5 is_stmt 1 view .LVU1875 +2111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5130 .loc 1 2111 16 is_stmt 0 view .LVU1876 + 5131 001c 0124 movs r4, #1 + 5132 .LVL392: +2111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5133 .loc 1 2111 16 view .LVU1877 + 5134 001e 85F83440 strb r4, [r5, #52] +2112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5135 .loc 1 2112 5 is_stmt 1 view .LVU1878 + 5136 .LVL393: + 5137 .L286: +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 5138 .loc 1 2139 3 view .LVU1879 +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 5139 .loc 1 2139 16 is_stmt 0 view .LVU1880 + 5140 0022 4FF40071 mov r1, #512 + 5141 0026 2868 ldr r0, [r5] + 5142 .LVL394: +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 5143 .loc 1 2139 16 view .LVU1881 + 5144 0028 FFF7FEFF bl SDMMC_CmdBlockLength + 5145 .LVL395: +2140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5146 .loc 1 2140 3 is_stmt 1 view .LVU1882 +2140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5147 .loc 1 2140 5 is_stmt 0 view .LVU1883 + 5148 002c 30B1 cbz r0, .L287 +2143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode = errorstate; + 5149 .loc 1 2143 5 is_stmt 1 view .LVU1884 + 5150 002e 2A68 ldr r2, [r5] + 5151 0030 1D49 ldr r1, .L289 + 5152 0032 9163 str r1, [r2, #56] +2144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 5153 .loc 1 2144 5 view .LVU1885 +2144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 5154 .loc 1 2144 20 is_stmt 0 view .LVU1886 + 5155 0034 A863 str r0, [r5, #56] +2145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5156 .loc 1 2145 5 is_stmt 1 view .LVU1887 +2145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5157 .loc 1 2145 16 is_stmt 0 view .LVU1888 + 5158 0036 0124 movs r4, #1 + 5159 .LVL396: +2145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5160 .loc 1 2145 16 view .LVU1889 + 5161 0038 85F83440 strb r4, [r5, #52] +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5162 .loc 1 2146 5 is_stmt 1 view .LVU1890 + ARM GAS /tmp/ccQEYyKb.s page 179 + + + 5163 .LVL397: + 5164 .L287: +2149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5165 .loc 1 2149 3 view .LVU1891 +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5166 .loc 1 2150 1 is_stmt 0 view .LVU1892 + 5167 003c 2046 mov r0, r4 + 5168 .LVL398: +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5169 .loc 1 2150 1 view .LVU1893 + 5170 003e 11B0 add sp, sp, #68 + 5171 .LCFI64: + 5172 .cfi_remember_state + 5173 .cfi_def_cfa_offset 12 + 5174 @ sp needed + 5175 0040 30BD pop {r4, r5, pc} + 5176 .LVL399: + 5177 .L285: + 5178 .LCFI65: + 5179 .cfi_restore_state +2116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5180 .loc 1 2116 5 is_stmt 1 view .LVU1894 +2116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5181 .loc 1 2116 49 is_stmt 0 view .LVU1895 + 5182 0042 009A ldr r2, [sp] +2116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5183 .loc 1 2116 29 view .LVU1896 + 5184 0044 C2F38113 ubfx r3, r2, #6, #2 +2116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5185 .loc 1 2116 27 view .LVU1897 + 5186 0048 2370 strb r3, [r4] +2118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5187 .loc 1 2118 5 is_stmt 1 view .LVU1898 +2118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5188 .loc 1 2118 28 is_stmt 0 view .LVU1899 + 5189 004a C2F34013 ubfx r3, r2, #5, #1 +2118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5190 .loc 1 2118 26 view .LVU1900 + 5191 004e 6370 strb r3, [r4, #1] +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5192 .loc 1 2120 5 is_stmt 1 view .LVU1901 +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5193 .loc 1 2120 66 is_stmt 0 view .LVU1902 + 5194 0050 130A lsrs r3, r2, #8 +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5195 .loc 1 2120 25 view .LVU1903 + 5196 0052 23F0FF03 bic r3, r3, #255 + 5197 0056 43EA1263 orr r3, r3, r2, lsr #24 + 5198 005a 9BB2 uxth r3, r3 +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5199 .loc 1 2120 23 view .LVU1904 + 5200 005c 6380 strh r3, [r4, #2] @ movhi +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((sd_status[1] & 0xFF0000U) >> 8U) | ((sd_status[1] & 0xFF000000U + 5201 .loc 1 2122 5 is_stmt 1 view .LVU1905 +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((sd_status[1] & 0xFF0000U) >> 8U) | ((sd_status[1] & 0xFF000000U + 5202 .loc 1 2122 46 is_stmt 0 view .LVU1906 + 5203 005e 019A ldr r2, [sp, #4] + ARM GAS /tmp/ccQEYyKb.s page 180 + + +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((sd_status[1] & 0xFF0000U) >> 8U) | ((sd_status[1] & 0xFF000000U + 5204 .loc 1 2122 98 view .LVU1907 + 5205 0060 1302 lsls r3, r2, #8 + 5206 0062 03F47F03 and r3, r3, #16711680 +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((sd_status[1] & 0xFF0000U) >> 8U) | ((sd_status[1] & 0xFF000000U + 5207 .loc 1 2122 70 view .LVU1908 + 5208 0066 43EA0263 orr r3, r3, r2, lsl #24 +2123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5209 .loc 1 2123 63 view .LVU1909 + 5210 006a 110A lsrs r1, r2, #8 + 5211 006c 01F47F41 and r1, r1, #65280 +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((sd_status[1] & 0xFF0000U) >> 8U) | ((sd_status[1] & 0xFF000000U + 5212 .loc 1 2122 105 view .LVU1910 + 5213 0070 0B43 orrs r3, r3, r1 +2123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5214 .loc 1 2123 70 view .LVU1911 + 5215 0072 43EA1263 orr r3, r3, r2, lsr #24 +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** ((sd_status[1] & 0xFF0000U) >> 8U) | ((sd_status[1] & 0xFF000000U + 5216 .loc 1 2122 32 view .LVU1912 + 5217 0076 6360 str r3, [r4, #4] +2125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5218 .loc 1 2125 5 is_stmt 1 view .LVU1913 +2125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5219 .loc 1 2125 46 is_stmt 0 view .LVU1914 + 5220 0078 029B ldr r3, [sp, #8] +2125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5221 .loc 1 2125 27 view .LVU1915 + 5222 007a DAB2 uxtb r2, r3 +2125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5223 .loc 1 2125 25 view .LVU1916 + 5224 007c 2272 strb r2, [r4, #8] +2127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5225 .loc 1 2127 5 is_stmt 1 view .LVU1917 +2127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5226 .loc 1 2127 32 is_stmt 0 view .LVU1918 + 5227 007e C3F30722 ubfx r2, r3, #8, #8 +2127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5228 .loc 1 2127 30 view .LVU1919 + 5229 0082 6272 strb r2, [r4, #9] +2129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5230 .loc 1 2129 5 is_stmt 1 view .LVU1920 +2129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5231 .loc 1 2129 35 is_stmt 0 view .LVU1921 + 5232 0084 C3F30352 ubfx r2, r3, #20, #4 +2129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5233 .loc 1 2129 33 view .LVU1922 + 5234 0088 A272 strb r2, [r4, #10] +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5235 .loc 1 2131 5 is_stmt 1 view .LVU1923 +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5236 .loc 1 2131 67 is_stmt 0 view .LVU1924 + 5237 008a 1B0C lsrs r3, r3, #16 +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5238 .loc 1 2131 87 view .LVU1925 + 5239 008c 039A ldr r2, [sp, #12] +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5240 .loc 1 2131 91 view .LVU1926 + ARM GAS /tmp/ccQEYyKb.s page 181 + + + 5241 008e D1B2 uxtb r1, r2 +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5242 .loc 1 2131 26 view .LVU1927 + 5243 0090 23F0FF03 bic r3, r3, #255 + 5244 0094 0B43 orrs r3, r3, r1 +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5245 .loc 1 2131 24 view .LVU1928 + 5246 0096 A381 strh r3, [r4, #12] @ movhi +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5247 .loc 1 2133 5 is_stmt 1 view .LVU1929 +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5248 .loc 1 2133 29 is_stmt 0 view .LVU1930 + 5249 0098 C2F38523 ubfx r3, r2, #10, #6 +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5250 .loc 1 2133 27 view .LVU1931 + 5251 009c A373 strb r3, [r4, #14] +2135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5252 .loc 1 2135 5 is_stmt 1 view .LVU1932 +2135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5253 .loc 1 2135 28 is_stmt 0 view .LVU1933 + 5254 009e C2F30122 ubfx r2, r2, #8, #2 +2135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5255 .loc 1 2135 26 view .LVU1934 + 5256 00a2 E273 strb r2, [r4, #15] +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5257 .loc 1 2103 21 view .LVU1935 + 5258 00a4 0024 movs r4, #0 + 5259 .LVL400: +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5260 .loc 1 2103 21 view .LVU1936 + 5261 00a6 BCE7 b .L286 + 5262 .L290: + 5263 .align 2 + 5264 .L289: + 5265 00a8 FF054000 .word 4195839 + 5266 .cfi_endproc + 5267 .LFE162: + 5269 .section .text.HAL_SD_GetCardInfo,"ax",%progbits + 5270 .align 1 + 5271 .global HAL_SD_GetCardInfo + 5272 .syntax unified + 5273 .thumb + 5274 .thumb_func + 5275 .fpu fpv5-d16 + 5277 HAL_SD_GetCardInfo: + 5278 .LVL401: + 5279 .LFB163: +2160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->CardType = (uint32_t)(hsd->SdCard.CardType); + 5280 .loc 1 2160 1 is_stmt 1 view -0 + 5281 .cfi_startproc + 5282 @ args = 0, pretend = 0, frame = 0 + 5283 @ frame_needed = 0, uses_anonymous_args = 0 + 5284 @ link register save eliminated. +2161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->CardVersion = (uint32_t)(hsd->SdCard.CardVersion); + 5285 .loc 1 2161 3 view .LVU1938 +2161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->CardVersion = (uint32_t)(hsd->SdCard.CardVersion); + 5286 .loc 1 2161 51 is_stmt 0 view .LVU1939 + ARM GAS /tmp/ccQEYyKb.s page 182 + + + 5287 0000 436C ldr r3, [r0, #68] +2161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->CardVersion = (uint32_t)(hsd->SdCard.CardVersion); + 5288 .loc 1 2161 27 view .LVU1940 + 5289 0002 0B60 str r3, [r1] +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->Class = (uint32_t)(hsd->SdCard.Class); + 5290 .loc 1 2162 3 is_stmt 1 view .LVU1941 +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->Class = (uint32_t)(hsd->SdCard.Class); + 5291 .loc 1 2162 51 is_stmt 0 view .LVU1942 + 5292 0004 836C ldr r3, [r0, #72] +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->Class = (uint32_t)(hsd->SdCard.Class); + 5293 .loc 1 2162 27 view .LVU1943 + 5294 0006 4B60 str r3, [r1, #4] +2163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->RelCardAdd = (uint32_t)(hsd->SdCard.RelCardAdd); + 5295 .loc 1 2163 3 is_stmt 1 view .LVU1944 +2163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->RelCardAdd = (uint32_t)(hsd->SdCard.RelCardAdd); + 5296 .loc 1 2163 51 is_stmt 0 view .LVU1945 + 5297 0008 C36C ldr r3, [r0, #76] +2163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->RelCardAdd = (uint32_t)(hsd->SdCard.RelCardAdd); + 5298 .loc 1 2163 27 view .LVU1946 + 5299 000a 8B60 str r3, [r1, #8] +2164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->BlockNbr = (uint32_t)(hsd->SdCard.BlockNbr); + 5300 .loc 1 2164 3 is_stmt 1 view .LVU1947 +2164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->BlockNbr = (uint32_t)(hsd->SdCard.BlockNbr); + 5301 .loc 1 2164 51 is_stmt 0 view .LVU1948 + 5302 000c 036D ldr r3, [r0, #80] +2164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->BlockNbr = (uint32_t)(hsd->SdCard.BlockNbr); + 5303 .loc 1 2164 27 view .LVU1949 + 5304 000e CB60 str r3, [r1, #12] +2165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->BlockSize = (uint32_t)(hsd->SdCard.BlockSize); + 5305 .loc 1 2165 3 is_stmt 1 view .LVU1950 +2165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->BlockSize = (uint32_t)(hsd->SdCard.BlockSize); + 5306 .loc 1 2165 51 is_stmt 0 view .LVU1951 + 5307 0010 436D ldr r3, [r0, #84] +2165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->BlockSize = (uint32_t)(hsd->SdCard.BlockSize); + 5308 .loc 1 2165 27 view .LVU1952 + 5309 0012 0B61 str r3, [r1, #16] +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->LogBlockNbr = (uint32_t)(hsd->SdCard.LogBlockNbr); + 5310 .loc 1 2166 3 is_stmt 1 view .LVU1953 +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->LogBlockNbr = (uint32_t)(hsd->SdCard.LogBlockNbr); + 5311 .loc 1 2166 51 is_stmt 0 view .LVU1954 + 5312 0014 836D ldr r3, [r0, #88] +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->LogBlockNbr = (uint32_t)(hsd->SdCard.LogBlockNbr); + 5313 .loc 1 2166 27 view .LVU1955 + 5314 0016 4B61 str r3, [r1, #20] +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->LogBlockSize = (uint32_t)(hsd->SdCard.LogBlockSize); + 5315 .loc 1 2167 3 is_stmt 1 view .LVU1956 +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->LogBlockSize = (uint32_t)(hsd->SdCard.LogBlockSize); + 5316 .loc 1 2167 51 is_stmt 0 view .LVU1957 + 5317 0018 C36D ldr r3, [r0, #92] +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** pCardInfo->LogBlockSize = (uint32_t)(hsd->SdCard.LogBlockSize); + 5318 .loc 1 2167 27 view .LVU1958 + 5319 001a 8B61 str r3, [r1, #24] +2168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5320 .loc 1 2168 3 is_stmt 1 view .LVU1959 +2168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5321 .loc 1 2168 51 is_stmt 0 view .LVU1960 + 5322 001c 036E ldr r3, [r0, #96] + ARM GAS /tmp/ccQEYyKb.s page 183 + + +2168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5323 .loc 1 2168 27 view .LVU1961 + 5324 001e CB61 str r3, [r1, #28] +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5325 .loc 1 2170 3 is_stmt 1 view .LVU1962 +2171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5326 .loc 1 2171 1 is_stmt 0 view .LVU1963 + 5327 0020 0020 movs r0, #0 + 5328 .LVL402: +2171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5329 .loc 1 2171 1 view .LVU1964 + 5330 0022 7047 bx lr + 5331 .cfi_endproc + 5332 .LFE163: + 5334 .section .text.HAL_SD_ConfigWideBusOperation,"ax",%progbits + 5335 .align 1 + 5336 .global HAL_SD_ConfigWideBusOperation + 5337 .syntax unified + 5338 .thumb + 5339 .thumb_func + 5340 .fpu fpv5-d16 + 5342 HAL_SD_ConfigWideBusOperation: + 5343 .LVL403: + 5344 .LFB164: +2185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_InitTypeDef Init; + 5345 .loc 1 2185 1 is_stmt 1 view -0 + 5346 .cfi_startproc + 5347 @ args = 0, pretend = 0, frame = 24 + 5348 @ frame_needed = 0, uses_anonymous_args = 0 +2185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_InitTypeDef Init; + 5349 .loc 1 2185 1 is_stmt 0 view .LVU1966 + 5350 0000 30B5 push {r4, r5, lr} + 5351 .LCFI66: + 5352 .cfi_def_cfa_offset 12 + 5353 .cfi_offset 4, -12 + 5354 .cfi_offset 5, -8 + 5355 .cfi_offset 14, -4 + 5356 0002 8BB0 sub sp, sp, #44 + 5357 .LCFI67: + 5358 .cfi_def_cfa_offset 56 + 5359 0004 0446 mov r4, r0 + 5360 0006 0D46 mov r5, r1 +2186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 5361 .loc 1 2186 3 is_stmt 1 view .LVU1967 +2187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_StatusTypeDef status = HAL_OK; + 5362 .loc 1 2187 3 view .LVU1968 +2188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5363 .loc 1 2188 3 view .LVU1969 + 5364 .LVL404: +2191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5365 .loc 1 2191 3 view .LVU1970 +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5366 .loc 1 2194 3 view .LVU1971 +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5367 .loc 1 2194 14 is_stmt 0 view .LVU1972 + 5368 0008 0323 movs r3, #3 + 5369 000a 80F83430 strb r3, [r0, #52] + ARM GAS /tmp/ccQEYyKb.s page 184 + + +2196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5370 .loc 1 2196 3 is_stmt 1 view .LVU1973 +2196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5371 .loc 1 2196 17 is_stmt 0 view .LVU1974 + 5372 000e 436C ldr r3, [r0, #68] +2196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5373 .loc 1 2196 5 view .LVU1975 + 5374 0010 032B cmp r3, #3 + 5375 0012 1CD0 beq .L293 +2198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5376 .loc 1 2198 5 is_stmt 1 view .LVU1976 +2198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5377 .loc 1 2198 7 is_stmt 0 view .LVU1977 + 5378 0014 B1F5805F cmp r1, #4096 + 5379 0018 08D0 beq .L302 +2202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5380 .loc 1 2202 10 is_stmt 1 view .LVU1978 +2202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5381 .loc 1 2202 12 is_stmt 0 view .LVU1979 + 5382 001a B1F5006F cmp r1, #2048 + 5383 001e 0AD0 beq .L303 +2208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5384 .loc 1 2208 10 is_stmt 1 view .LVU1980 +2208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5385 .loc 1 2208 12 is_stmt 0 view .LVU1981 + 5386 0020 79B1 cbz r1, .L304 +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5387 .loc 1 2217 7 is_stmt 1 view .LVU1982 +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5388 .loc 1 2217 22 is_stmt 0 view .LVU1983 + 5389 0022 836B ldr r3, [r0, #56] + 5390 0024 43F00063 orr r3, r3, #134217728 + 5391 0028 8363 str r3, [r0, #56] + 5392 002a 14E0 b .L295 + 5393 .L302: +2200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5394 .loc 1 2200 7 is_stmt 1 view .LVU1984 +2200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5395 .loc 1 2200 22 is_stmt 0 view .LVU1985 + 5396 002c 836B ldr r3, [r0, #56] + 5397 002e 43F08053 orr r3, r3, #268435456 + 5398 0032 8363 str r3, [r0, #56] + 5399 0034 0FE0 b .L295 + 5400 .L303: +2204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5401 .loc 1 2204 7 is_stmt 1 view .LVU1986 +2204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5402 .loc 1 2204 20 is_stmt 0 view .LVU1987 + 5403 0036 FFF7FEFF bl SD_WideBus_Enable + 5404 .LVL405: +2206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5405 .loc 1 2206 7 is_stmt 1 view .LVU1988 +2206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5406 .loc 1 2206 22 is_stmt 0 view .LVU1989 + 5407 003a A36B ldr r3, [r4, #56] + 5408 003c 0343 orrs r3, r3, r0 + 5409 003e A363 str r3, [r4, #56] + ARM GAS /tmp/ccQEYyKb.s page 185 + + + 5410 0040 09E0 b .L295 + 5411 .LVL406: + 5412 .L304: +2210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5413 .loc 1 2210 7 is_stmt 1 view .LVU1990 +2210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5414 .loc 1 2210 20 is_stmt 0 view .LVU1991 + 5415 0042 FFF7FEFF bl SD_WideBus_Disable + 5416 .LVL407: +2212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5417 .loc 1 2212 7 is_stmt 1 view .LVU1992 +2212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5418 .loc 1 2212 22 is_stmt 0 view .LVU1993 + 5419 0046 A36B ldr r3, [r4, #56] + 5420 0048 0343 orrs r3, r3, r0 + 5421 004a A363 str r3, [r4, #56] + 5422 004c 03E0 b .L295 + 5423 .LVL408: + 5424 .L293: +2223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5425 .loc 1 2223 5 is_stmt 1 view .LVU1994 +2223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5426 .loc 1 2223 20 is_stmt 0 view .LVU1995 + 5427 004e 836B ldr r3, [r0, #56] + 5428 0050 43F08053 orr r3, r3, #268435456 + 5429 0054 8363 str r3, [r0, #56] + 5430 .LVL409: + 5431 .L295: +2226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5432 .loc 1 2226 3 is_stmt 1 view .LVU1996 +2226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5433 .loc 1 2226 9 is_stmt 0 view .LVU1997 + 5434 0056 A36B ldr r3, [r4, #56] +2226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5435 .loc 1 2226 5 view .LVU1998 + 5436 0058 C3B1 cbz r3, .L298 +2229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 5437 .loc 1 2229 5 is_stmt 1 view .LVU1999 + 5438 005a 2368 ldr r3, [r4] + 5439 005c 174A ldr r2, .L305 + 5440 005e 9A63 str r2, [r3, #56] +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5441 .loc 1 2230 5 view .LVU2000 +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5442 .loc 1 2230 16 is_stmt 0 view .LVU2001 + 5443 0060 0125 movs r5, #1 + 5444 .LVL410: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5445 .loc 1 2230 16 view .LVU2002 + 5446 0062 84F83450 strb r5, [r4, #52] +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5447 .loc 1 2231 5 is_stmt 1 view .LVU2003 + 5448 .LVL411: + 5449 .L299: +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 5450 .loc 1 2246 3 view .LVU2004 +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + ARM GAS /tmp/ccQEYyKb.s page 186 + + + 5451 .loc 1 2246 16 is_stmt 0 view .LVU2005 + 5452 0066 4FF40071 mov r1, #512 + 5453 006a 2068 ldr r0, [r4] + 5454 006c FFF7FEFF bl SDMMC_CmdBlockLength + 5455 .LVL412: +2247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5456 .loc 1 2247 3 is_stmt 1 view .LVU2006 +2247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5457 .loc 1 2247 5 is_stmt 0 view .LVU2007 + 5458 0070 30B1 cbz r0, .L300 +2250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->ErrorCode |= errorstate; + 5459 .loc 1 2250 5 is_stmt 1 view .LVU2008 + 5460 0072 2368 ldr r3, [r4] + 5461 0074 1149 ldr r1, .L305 + 5462 0076 9963 str r1, [r3, #56] +2251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5463 .loc 1 2251 5 view .LVU2009 +2251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** status = HAL_ERROR; + 5464 .loc 1 2251 20 is_stmt 0 view .LVU2010 + 5465 0078 A36B ldr r3, [r4, #56] + 5466 007a 0343 orrs r3, r3, r0 + 5467 007c A363 str r3, [r4, #56] +2252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5468 .loc 1 2252 5 is_stmt 1 view .LVU2011 + 5469 .LVL413: +2252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5470 .loc 1 2252 12 is_stmt 0 view .LVU2012 + 5471 007e 0125 movs r5, #1 + 5472 .LVL414: + 5473 .L300: +2256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5474 .loc 1 2256 3 is_stmt 1 view .LVU2013 +2256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5475 .loc 1 2256 14 is_stmt 0 view .LVU2014 + 5476 0080 0123 movs r3, #1 + 5477 0082 84F83430 strb r3, [r4, #52] +2258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5478 .loc 1 2258 3 is_stmt 1 view .LVU2015 +2259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5479 .loc 1 2259 1 is_stmt 0 view .LVU2016 + 5480 0086 2846 mov r0, r5 + 5481 .LVL415: +2259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5482 .loc 1 2259 1 view .LVU2017 + 5483 0088 0BB0 add sp, sp, #44 + 5484 .LCFI68: + 5485 .cfi_remember_state + 5486 .cfi_def_cfa_offset 12 + 5487 @ sp needed + 5488 008a 30BD pop {r4, r5, pc} + 5489 .LVL416: + 5490 .L298: + 5491 .LCFI69: + 5492 .cfi_restore_state +2236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockBypass = hsd->Init.ClockBypass; + 5493 .loc 1 2236 5 is_stmt 1 view .LVU2018 +2236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockBypass = hsd->Init.ClockBypass; + ARM GAS /tmp/ccQEYyKb.s page 187 + + + 5494 .loc 1 2236 41 is_stmt 0 view .LVU2019 + 5495 008c 6368 ldr r3, [r4, #4] +2236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockBypass = hsd->Init.ClockBypass; + 5496 .loc 1 2236 30 view .LVU2020 + 5497 008e 0493 str r3, [sp, #16] +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockPowerSave = hsd->Init.ClockPowerSave; + 5498 .loc 1 2237 5 is_stmt 1 view .LVU2021 +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockPowerSave = hsd->Init.ClockPowerSave; + 5499 .loc 1 2237 41 is_stmt 0 view .LVU2022 + 5500 0090 A368 ldr r3, [r4, #8] +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockPowerSave = hsd->Init.ClockPowerSave; + 5501 .loc 1 2237 30 view .LVU2023 + 5502 0092 0593 str r3, [sp, #20] +2238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.BusWide = WideMode; + 5503 .loc 1 2238 5 is_stmt 1 view .LVU2024 +2238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.BusWide = WideMode; + 5504 .loc 1 2238 41 is_stmt 0 view .LVU2025 + 5505 0094 E368 ldr r3, [r4, #12] +2238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.BusWide = WideMode; + 5506 .loc 1 2238 30 view .LVU2026 + 5507 0096 0693 str r3, [sp, #24] +2239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.HardwareFlowControl = hsd->Init.HardwareFlowControl; + 5508 .loc 1 2239 5 is_stmt 1 view .LVU2027 +2239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.HardwareFlowControl = hsd->Init.HardwareFlowControl; + 5509 .loc 1 2239 30 is_stmt 0 view .LVU2028 + 5510 0098 0795 str r5, [sp, #28] +2240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockDiv = hsd->Init.ClockDiv; + 5511 .loc 1 2240 5 is_stmt 1 view .LVU2029 +2240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockDiv = hsd->Init.ClockDiv; + 5512 .loc 1 2240 41 is_stmt 0 view .LVU2030 + 5513 009a 6369 ldr r3, [r4, #20] +2240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** Init.ClockDiv = hsd->Init.ClockDiv; + 5514 .loc 1 2240 30 view .LVU2031 + 5515 009c 0893 str r3, [sp, #32] +2241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_Init(hsd->Instance, Init); + 5516 .loc 1 2241 5 is_stmt 1 view .LVU2032 +2241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_Init(hsd->Instance, Init); + 5517 .loc 1 2241 41 is_stmt 0 view .LVU2033 + 5518 009e A369 ldr r3, [r4, #24] +2241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** (void)SDMMC_Init(hsd->Instance, Init); + 5519 .loc 1 2241 30 view .LVU2034 + 5520 00a0 0993 str r3, [sp, #36] +2242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5521 .loc 1 2242 5 is_stmt 1 view .LVU2035 +2242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5522 .loc 1 2242 11 is_stmt 0 view .LVU2036 + 5523 00a2 0AAB add r3, sp, #40 + 5524 00a4 13E90700 ldmdb r3, {r0, r1, r2} + 5525 00a8 8DE80700 stm sp, {r0, r1, r2} + 5526 00ac 04AB add r3, sp, #16 + 5527 00ae 0ECB ldm r3, {r1, r2, r3} + 5528 00b0 2068 ldr r0, [r4] + 5529 00b2 FFF7FEFF bl SDMMC_Init + 5530 .LVL417: +2188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5531 .loc 1 2188 21 view .LVU2037 + 5532 00b6 0025 movs r5, #0 + ARM GAS /tmp/ccQEYyKb.s page 188 + + + 5533 .LVL418: +2188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5534 .loc 1 2188 21 view .LVU2038 + 5535 00b8 D5E7 b .L299 + 5536 .L306: + 5537 00ba 00BF .align 2 + 5538 .L305: + 5539 00bc FF054000 .word 4195839 + 5540 .cfi_endproc + 5541 .LFE164: + 5543 .section .text.HAL_SD_GetCardState,"ax",%progbits + 5544 .align 1 + 5545 .global HAL_SD_GetCardState + 5546 .syntax unified + 5547 .thumb + 5548 .thumb_func + 5549 .fpu fpv5-d16 + 5551 HAL_SD_GetCardState: + 5552 .LVL419: + 5553 .LFB165: +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t cardstate; + 5554 .loc 1 2267 1 is_stmt 1 view -0 + 5555 .cfi_startproc + 5556 @ args = 0, pretend = 0, frame = 8 + 5557 @ frame_needed = 0, uses_anonymous_args = 0 +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t cardstate; + 5558 .loc 1 2267 1 is_stmt 0 view .LVU2040 + 5559 0000 10B5 push {r4, lr} + 5560 .LCFI70: + 5561 .cfi_def_cfa_offset 8 + 5562 .cfi_offset 4, -8 + 5563 .cfi_offset 14, -4 + 5564 0002 82B0 sub sp, sp, #8 + 5565 .LCFI71: + 5566 .cfi_def_cfa_offset 16 + 5567 0004 0446 mov r4, r0 +2268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 5568 .loc 1 2268 3 is_stmt 1 view .LVU2041 +2269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t resp1 = 0; + 5569 .loc 1 2269 3 view .LVU2042 +2270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5570 .loc 1 2270 3 view .LVU2043 +2270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5571 .loc 1 2270 12 is_stmt 0 view .LVU2044 + 5572 0006 0023 movs r3, #0 + 5573 0008 0193 str r3, [sp, #4] +2272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 5574 .loc 1 2272 3 is_stmt 1 view .LVU2045 +2272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 5575 .loc 1 2272 16 is_stmt 0 view .LVU2046 + 5576 000a 01A9 add r1, sp, #4 + 5577 000c FFF7FEFF bl SD_SendStatus + 5578 .LVL420: +2273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5579 .loc 1 2273 3 is_stmt 1 view .LVU2047 +2273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5580 .loc 1 2273 5 is_stmt 0 view .LVU2048 + ARM GAS /tmp/ccQEYyKb.s page 189 + + + 5581 0010 10B1 cbz r0, .L308 +2275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5582 .loc 1 2275 5 is_stmt 1 view .LVU2049 +2275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5583 .loc 1 2275 20 is_stmt 0 view .LVU2050 + 5584 0012 A36B ldr r3, [r4, #56] + 5585 0014 0343 orrs r3, r3, r0 + 5586 0016 A363 str r3, [r4, #56] + 5587 .L308: +2278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5588 .loc 1 2278 3 is_stmt 1 view .LVU2051 + 5589 .LVL421: +2280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5590 .loc 1 2280 3 view .LVU2052 +2281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5591 .loc 1 2281 1 is_stmt 0 view .LVU2053 + 5592 0018 0198 ldr r0, [sp, #4] + 5593 .LVL422: +2281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5594 .loc 1 2281 1 view .LVU2054 + 5595 001a C0F34320 ubfx r0, r0, #9, #4 + 5596 .LVL423: +2281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5597 .loc 1 2281 1 view .LVU2055 + 5598 001e 02B0 add sp, sp, #8 + 5599 .LCFI72: + 5600 .cfi_def_cfa_offset 8 + 5601 @ sp needed + 5602 0020 10BD pop {r4, pc} +2281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5603 .loc 1 2281 1 view .LVU2056 + 5604 .cfi_endproc + 5605 .LFE165: + 5607 .section .text.SD_DMAError,"ax",%progbits + 5608 .align 1 + 5609 .syntax unified + 5610 .thumb + 5611 .thumb_func + 5612 .fpu fpv5-d16 + 5614 SD_DMAError: + 5615 .LVL424: + 5616 .LFB170: +2496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + 5617 .loc 1 2496 1 is_stmt 1 view -0 + 5618 .cfi_startproc + 5619 @ args = 0, pretend = 0, frame = 0 + 5620 @ frame_needed = 0, uses_anonymous_args = 0 +2496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + 5621 .loc 1 2496 1 is_stmt 0 view .LVU2058 + 5622 0000 10B5 push {r4, lr} + 5623 .LCFI73: + 5624 .cfi_def_cfa_offset 8 + 5625 .cfi_offset 4, -8 + 5626 .cfi_offset 14, -4 +2497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; + 5627 .loc 1 2497 3 is_stmt 1 view .LVU2059 +2497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; + ARM GAS /tmp/ccQEYyKb.s page 190 + + + 5628 .loc 1 2497 21 is_stmt 0 view .LVU2060 + 5629 0002 846B ldr r4, [r0, #56] + 5630 .LVL425: +2498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t RxErrorCode, TxErrorCode; + 5631 .loc 1 2498 3 is_stmt 1 view .LVU2061 +2499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5632 .loc 1 2499 3 view .LVU2062 +2502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5633 .loc 1 2502 3 view .LVU2063 +2502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5634 .loc 1 2502 6 is_stmt 0 view .LVU2064 + 5635 0004 FFF7FEFF bl HAL_DMA_GetError + 5636 .LVL426: +2502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5637 .loc 1 2502 5 view .LVU2065 + 5638 0008 0228 cmp r0, #2 + 5639 000a 0AD0 beq .L310 +2504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** TxErrorCode = hsd->hdmatx->ErrorCode; + 5640 .loc 1 2504 5 is_stmt 1 view .LVU2066 +2504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** TxErrorCode = hsd->hdmatx->ErrorCode; + 5641 .loc 1 2504 22 is_stmt 0 view .LVU2067 + 5642 000c 236C ldr r3, [r4, #64] +2504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** TxErrorCode = hsd->hdmatx->ErrorCode; + 5643 .loc 1 2504 17 view .LVU2068 + 5644 000e 5A6D ldr r2, [r3, #84] + 5645 .LVL427: +2505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((RxErrorCode == HAL_DMA_ERROR_TE) || (TxErrorCode == HAL_DMA_ERROR_TE)) + 5646 .loc 1 2505 5 is_stmt 1 view .LVU2069 +2505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((RxErrorCode == HAL_DMA_ERROR_TE) || (TxErrorCode == HAL_DMA_ERROR_TE)) + 5647 .loc 1 2505 22 is_stmt 0 view .LVU2070 + 5648 0010 E36B ldr r3, [r4, #60] +2505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((RxErrorCode == HAL_DMA_ERROR_TE) || (TxErrorCode == HAL_DMA_ERROR_TE)) + 5649 .loc 1 2505 17 view .LVU2071 + 5650 0012 5B6D ldr r3, [r3, #84] + 5651 .LVL428: +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5652 .loc 1 2506 5 is_stmt 1 view .LVU2072 +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5653 .loc 1 2506 7 is_stmt 0 view .LVU2073 + 5654 0014 012B cmp r3, #1 + 5655 0016 18BF it ne + 5656 0018 012A cmpne r2, #1 + 5657 001a 03D0 beq .L315 + 5658 .LVL429: + 5659 .L312: +2529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif + 5660 .loc 1 2529 5 is_stmt 1 view .LVU2074 + 5661 001c 2046 mov r0, r4 + 5662 001e FFF7FEFF bl HAL_SD_ErrorCallback + 5663 .LVL430: + 5664 .L310: +2532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5665 .loc 1 2532 1 is_stmt 0 view .LVU2075 + 5666 0022 10BD pop {r4, pc} + 5667 .LVL431: + 5668 .L315: +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 191 + + + 5669 .loc 1 2509 7 is_stmt 1 view .LVU2076 + 5670 0024 2368 ldr r3, [r4] + 5671 .LVL432: +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5672 .loc 1 2509 7 is_stmt 0 view .LVU2077 + 5673 0026 0F4A ldr r2, .L317 + 5674 .LVL433: +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5675 .loc 1 2509 7 view .LVU2078 + 5676 0028 9A63 str r2, [r3, #56] +2512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); + 5677 .loc 1 2512 7 is_stmt 1 view .LVU2079 + 5678 002a 2268 ldr r2, [r4] + 5679 002c D36B ldr r3, [r2, #60] + 5680 002e 23F49D73 bic r3, r3, #314 + 5681 0032 D363 str r3, [r2, #60] +2515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** CardState = HAL_SD_GetCardState(hsd); + 5682 .loc 1 2515 7 view .LVU2080 +2515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** CardState = HAL_SD_GetCardState(hsd); + 5683 .loc 1 2515 22 is_stmt 0 view .LVU2081 + 5684 0034 A36B ldr r3, [r4, #56] + 5685 0036 43F08043 orr r3, r3, #1073741824 + 5686 003a A363 str r3, [r4, #56] +2516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + 5687 .loc 1 2516 7 is_stmt 1 view .LVU2082 +2516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + 5688 .loc 1 2516 19 is_stmt 0 view .LVU2083 + 5689 003c 2046 mov r0, r4 + 5690 003e FFF7FEFF bl HAL_SD_GetCardState + 5691 .LVL434: +2517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5692 .loc 1 2517 7 is_stmt 1 view .LVU2084 +2517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5693 .loc 1 2517 47 is_stmt 0 view .LVU2085 + 5694 0042 0538 subs r0, r0, #5 + 5695 .LVL435: +2517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5696 .loc 1 2517 9 view .LVU2086 + 5697 0044 0128 cmp r0, #1 + 5698 0046 05D9 bls .L316 + 5699 .LVL436: + 5700 .L313: +2522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 5701 .loc 1 2522 7 is_stmt 1 view .LVU2087 +2522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 5702 .loc 1 2522 17 is_stmt 0 view .LVU2088 + 5703 0048 0123 movs r3, #1 + 5704 004a 84F83430 strb r3, [r4, #52] +2523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5705 .loc 1 2523 7 is_stmt 1 view .LVU2089 +2523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5706 .loc 1 2523 20 is_stmt 0 view .LVU2090 + 5707 004e 0023 movs r3, #0 + 5708 0050 2363 str r3, [r4, #48] + 5709 0052 E3E7 b .L312 + 5710 .LVL437: + 5711 .L316: + ARM GAS /tmp/ccQEYyKb.s page 192 + + +2519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5712 .loc 1 2519 9 is_stmt 1 view .LVU2091 +2519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5713 .loc 1 2519 27 is_stmt 0 view .LVU2092 + 5714 0054 2068 ldr r0, [r4] + 5715 .LVL438: +2519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5716 .loc 1 2519 27 view .LVU2093 + 5717 0056 FFF7FEFF bl SDMMC_CmdStopTransfer + 5718 .LVL439: +2519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5719 .loc 1 2519 24 view .LVU2094 + 5720 005a A36B ldr r3, [r4, #56] + 5721 005c 0343 orrs r3, r3, r0 + 5722 005e A363 str r3, [r4, #56] + 5723 0060 F2E7 b .L313 + 5724 .L318: + 5725 0062 00BF .align 2 + 5726 .L317: + 5727 0064 FF054000 .word 4195839 + 5728 .cfi_endproc + 5729 .LFE170: + 5731 .section .text.SD_DMATxAbort,"ax",%progbits + 5732 .align 1 + 5733 .syntax unified + 5734 .thumb + 5735 .thumb_func + 5736 .fpu fpv5-d16 + 5738 SD_DMATxAbort: + 5739 .LVL440: + 5740 .LFB171: +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + 5741 .loc 1 2540 1 is_stmt 1 view -0 + 5742 .cfi_startproc + 5743 @ args = 0, pretend = 0, frame = 0 + 5744 @ frame_needed = 0, uses_anonymous_args = 0 +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + 5745 .loc 1 2540 1 is_stmt 0 view .LVU2096 + 5746 0000 10B5 push {r4, lr} + 5747 .LCFI74: + 5748 .cfi_def_cfa_offset 8 + 5749 .cfi_offset 4, -8 + 5750 .cfi_offset 14, -4 +2541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; + 5751 .loc 1 2541 3 is_stmt 1 view .LVU2097 +2541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; + 5752 .loc 1 2541 21 is_stmt 0 view .LVU2098 + 5753 0002 846B ldr r4, [r0, #56] + 5754 .LVL441: +2542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5755 .loc 1 2542 3 is_stmt 1 view .LVU2099 +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5756 .loc 1 2545 3 view .LVU2100 + 5757 0004 2368 ldr r3, [r4] + 5758 0006 40F23A52 movw r2, #1338 + 5759 000a 9A63 str r2, [r3, #56] +2547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + ARM GAS /tmp/ccQEYyKb.s page 193 + + + 5760 .loc 1 2547 3 view .LVU2101 +2547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 5761 .loc 1 2547 15 is_stmt 0 view .LVU2102 + 5762 000c 2046 mov r0, r4 + 5763 .LVL442: +2547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 5764 .loc 1 2547 15 view .LVU2103 + 5765 000e FFF7FEFF bl HAL_SD_GetCardState + 5766 .LVL443: +2548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 5767 .loc 1 2548 3 is_stmt 1 view .LVU2104 +2548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 5768 .loc 1 2548 14 is_stmt 0 view .LVU2105 + 5769 0012 0123 movs r3, #1 + 5770 0014 84F83430 strb r3, [r4, #52] +2549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + 5771 .loc 1 2549 3 is_stmt 1 view .LVU2106 +2549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + 5772 .loc 1 2549 16 is_stmt 0 view .LVU2107 + 5773 0018 0023 movs r3, #0 + 5774 001a 2363 str r3, [r4, #48] +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5775 .loc 1 2550 3 is_stmt 1 view .LVU2108 +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5776 .loc 1 2550 43 is_stmt 0 view .LVU2109 + 5777 001c 0538 subs r0, r0, #5 + 5778 .LVL444: +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5779 .loc 1 2550 5 view .LVU2110 + 5780 001e 0128 cmp r0, #1 + 5781 0020 05D9 bls .L324 + 5782 .LVL445: + 5783 .L320: +2555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5784 .loc 1 2555 3 is_stmt 1 view .LVU2111 +2555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5785 .loc 1 2555 9 is_stmt 0 view .LVU2112 + 5786 0022 A36B ldr r3, [r4, #56] +2555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5787 .loc 1 2555 5 view .LVU2113 + 5788 0024 53B9 cbnz r3, .L321 +2560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif + 5789 .loc 1 2560 5 is_stmt 1 view .LVU2114 + 5790 0026 2046 mov r0, r4 + 5791 0028 FFF7FEFF bl HAL_SD_AbortCallback + 5792 .LVL446: + 5793 .L319: +2571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5794 .loc 1 2571 1 is_stmt 0 view .LVU2115 + 5795 002c 10BD pop {r4, pc} + 5796 .LVL447: + 5797 .L324: +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5798 .loc 1 2552 5 is_stmt 1 view .LVU2116 +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5799 .loc 1 2552 23 is_stmt 0 view .LVU2117 + 5800 002e 2068 ldr r0, [r4] + ARM GAS /tmp/ccQEYyKb.s page 194 + + + 5801 .LVL448: +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5802 .loc 1 2552 23 view .LVU2118 + 5803 0030 FFF7FEFF bl SDMMC_CmdStopTransfer + 5804 .LVL449: +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5805 .loc 1 2552 20 view .LVU2119 + 5806 0034 A36B ldr r3, [r4, #56] + 5807 0036 0343 orrs r3, r3, r0 + 5808 0038 A363 str r3, [r4, #56] + 5809 003a F2E7 b .L320 + 5810 .L321: +2568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif + 5811 .loc 1 2568 5 is_stmt 1 view .LVU2120 + 5812 003c 2046 mov r0, r4 + 5813 003e FFF7FEFF bl HAL_SD_ErrorCallback + 5814 .LVL450: +2571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5815 .loc 1 2571 1 is_stmt 0 view .LVU2121 + 5816 0042 F3E7 b .L319 + 5817 .cfi_endproc + 5818 .LFE171: + 5820 .section .text.SD_DMARxAbort,"ax",%progbits + 5821 .align 1 + 5822 .syntax unified + 5823 .thumb + 5824 .thumb_func + 5825 .fpu fpv5-d16 + 5827 SD_DMARxAbort: + 5828 .LVL451: + 5829 .LFB172: +2579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + 5830 .loc 1 2579 1 is_stmt 1 view -0 + 5831 .cfi_startproc + 5832 @ args = 0, pretend = 0, frame = 0 + 5833 @ frame_needed = 0, uses_anonymous_args = 0 +2579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SD_HandleTypeDef* hsd = (SD_HandleTypeDef* )(hdma->Parent); + 5834 .loc 1 2579 1 is_stmt 0 view .LVU2123 + 5835 0000 10B5 push {r4, lr} + 5836 .LCFI75: + 5837 .cfi_def_cfa_offset 8 + 5838 .cfi_offset 4, -8 + 5839 .cfi_offset 14, -4 +2580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; + 5840 .loc 1 2580 3 is_stmt 1 view .LVU2124 +2580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; + 5841 .loc 1 2580 21 is_stmt 0 view .LVU2125 + 5842 0002 846B ldr r4, [r0, #56] + 5843 .LVL452: +2581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5844 .loc 1 2581 3 is_stmt 1 view .LVU2126 +2584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5845 .loc 1 2584 3 view .LVU2127 + 5846 0004 2368 ldr r3, [r4] + 5847 0006 40F23A52 movw r2, #1338 + 5848 000a 9A63 str r2, [r3, #56] +2586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + ARM GAS /tmp/ccQEYyKb.s page 195 + + + 5849 .loc 1 2586 3 view .LVU2128 +2586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 5850 .loc 1 2586 15 is_stmt 0 view .LVU2129 + 5851 000c 2046 mov r0, r4 + 5852 .LVL453: +2586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 5853 .loc 1 2586 15 view .LVU2130 + 5854 000e FFF7FEFF bl HAL_SD_GetCardState + 5855 .LVL454: +2587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 5856 .loc 1 2587 3 is_stmt 1 view .LVU2131 +2587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 5857 .loc 1 2587 14 is_stmt 0 view .LVU2132 + 5858 0012 0123 movs r3, #1 + 5859 0014 84F83430 strb r3, [r4, #52] +2588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + 5860 .loc 1 2588 3 is_stmt 1 view .LVU2133 +2588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + 5861 .loc 1 2588 16 is_stmt 0 view .LVU2134 + 5862 0018 0023 movs r3, #0 + 5863 001a 2363 str r3, [r4, #48] +2589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5864 .loc 1 2589 3 is_stmt 1 view .LVU2135 +2589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5865 .loc 1 2589 43 is_stmt 0 view .LVU2136 + 5866 001c 0538 subs r0, r0, #5 + 5867 .LVL455: +2589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5868 .loc 1 2589 5 view .LVU2137 + 5869 001e 0128 cmp r0, #1 + 5870 0020 05D9 bls .L330 + 5871 .LVL456: + 5872 .L326: +2594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5873 .loc 1 2594 3 is_stmt 1 view .LVU2138 +2594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5874 .loc 1 2594 9 is_stmt 0 view .LVU2139 + 5875 0022 A36B ldr r3, [r4, #56] +2594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5876 .loc 1 2594 5 view .LVU2140 + 5877 0024 53B9 cbnz r3, .L327 +2599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif + 5878 .loc 1 2599 5 is_stmt 1 view .LVU2141 + 5879 0026 2046 mov r0, r4 + 5880 0028 FFF7FEFF bl HAL_SD_AbortCallback + 5881 .LVL457: + 5882 .L325: +2610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5883 .loc 1 2610 1 is_stmt 0 view .LVU2142 + 5884 002c 10BD pop {r4, pc} + 5885 .LVL458: + 5886 .L330: +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5887 .loc 1 2591 5 is_stmt 1 view .LVU2143 +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5888 .loc 1 2591 23 is_stmt 0 view .LVU2144 + 5889 002e 2068 ldr r0, [r4] + ARM GAS /tmp/ccQEYyKb.s page 196 + + + 5890 .LVL459: +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5891 .loc 1 2591 23 view .LVU2145 + 5892 0030 FFF7FEFF bl SDMMC_CmdStopTransfer + 5893 .LVL460: +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 5894 .loc 1 2591 20 view .LVU2146 + 5895 0034 A36B ldr r3, [r4, #56] + 5896 0036 0343 orrs r3, r3, r0 + 5897 0038 A363 str r3, [r4, #56] + 5898 003a F2E7 b .L326 + 5899 .L327: +2607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif + 5900 .loc 1 2607 5 is_stmt 1 view .LVU2147 + 5901 003c 2046 mov r0, r4 + 5902 003e FFF7FEFF bl HAL_SD_ErrorCallback + 5903 .LVL461: +2610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5904 .loc 1 2610 1 is_stmt 0 view .LVU2148 + 5905 0042 F3E7 b .L325 + 5906 .cfi_endproc + 5907 .LFE172: + 5909 .section .text.HAL_SD_IRQHandler,"ax",%progbits + 5910 .align 1 + 5911 .global HAL_SD_IRQHandler + 5912 .syntax unified + 5913 .thumb + 5914 .thumb_func + 5915 .fpu fpv5-d16 + 5917 HAL_SD_IRQHandler: + 5918 .LVL462: + 5919 .LFB153: +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 5920 .loc 1 1485 1 is_stmt 1 view -0 + 5921 .cfi_startproc + 5922 @ args = 0, pretend = 0, frame = 0 + 5923 @ frame_needed = 0, uses_anonymous_args = 0 +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t errorstate; + 5924 .loc 1 1485 1 is_stmt 0 view .LVU2150 + 5925 0000 38B5 push {r3, r4, r5, lr} + 5926 .LCFI76: + 5927 .cfi_def_cfa_offset 16 + 5928 .cfi_offset 3, -16 + 5929 .cfi_offset 4, -12 + 5930 .cfi_offset 5, -8 + 5931 .cfi_offset 14, -4 + 5932 0002 0446 mov r4, r0 +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t context = hsd->Context; + 5933 .loc 1 1486 3 is_stmt 1 view .LVU2151 +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5934 .loc 1 1487 3 view .LVU2152 +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5935 .loc 1 1487 12 is_stmt 0 view .LVU2153 + 5936 0004 056B ldr r5, [r0, #48] + 5937 .LVL463: +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5938 .loc 1 1490 3 is_stmt 1 view .LVU2154 + ARM GAS /tmp/ccQEYyKb.s page 197 + + +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5939 .loc 1 1490 7 is_stmt 0 view .LVU2155 + 5940 0006 0368 ldr r3, [r0] + 5941 0008 5A6B ldr r2, [r3, #52] +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5942 .loc 1 1490 5 view .LVU2156 + 5943 000a 12F4004F tst r2, #32768 + 5944 000e 02D0 beq .L332 +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5945 .loc 1 1490 61 discriminator 1 view .LVU2157 + 5946 0010 15F0080F tst r5, #8 + 5947 0014 26D1 bne .L348 + 5948 .L332: +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5949 .loc 1 1495 8 is_stmt 1 view .LVU2158 +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5950 .loc 1 1495 11 is_stmt 0 view .LVU2159 + 5951 0016 5A6B ldr r2, [r3, #52] +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5952 .loc 1 1495 10 view .LVU2160 + 5953 0018 12F4807F tst r2, #256 + 5954 001c 58D0 beq .L334 +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5955 .loc 1 1497 5 is_stmt 1 view .LVU2161 + 5956 001e 4FF48072 mov r2, #256 + 5957 0022 9A63 str r2, [r3, #56] +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_TXUNDERR | SDMMC_IT_RXOVERR | SDMMC_IT_TXFIFOHE |\ + 5958 .loc 1 1499 5 view .LVU2162 + 5959 0024 2268 ldr r2, [r4] + 5960 0026 D16B ldr r1, [r2, #60] + 5961 0028 644B ldr r3, .L354 + 5962 002a 0B40 ands r3, r3, r1 + 5963 002c D363 str r3, [r2, #60] +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5964 .loc 1 1503 5 view .LVU2163 +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5965 .loc 1 1503 8 is_stmt 0 view .LVU2164 + 5966 002e 2268 ldr r2, [r4] +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5967 .loc 1 1503 26 view .LVU2165 + 5968 0030 D36A ldr r3, [r2, #44] + 5969 0032 23F00103 bic r3, r3, #1 + 5970 0036 D362 str r3, [r2, #44] +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5971 .loc 1 1505 5 is_stmt 1 view .LVU2166 +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5972 .loc 1 1505 7 is_stmt 0 view .LVU2167 + 5973 0038 15F0080F tst r5, #8 + 5974 003c 26D0 beq .L335 +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5975 .loc 1 1507 7 is_stmt 1 view .LVU2168 +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5976 .loc 1 1507 9 is_stmt 0 view .LVU2169 + 5977 003e 15F0220F tst r5, #34 + 5978 0042 12D1 bne .L349 + 5979 .LVL464: + 5980 .L336: + ARM GAS /tmp/ccQEYyKb.s page 198 + + +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 5981 .loc 1 1522 7 is_stmt 1 view .LVU2170 + 5982 0044 2368 ldr r3, [r4] + 5983 0046 40F23A52 movw r2, #1338 + 5984 004a 9A63 str r2, [r3, #56] +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 5985 .loc 1 1524 7 view .LVU2171 +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 5986 .loc 1 1524 18 is_stmt 0 view .LVU2172 + 5987 004c 0123 movs r3, #1 + 5988 004e 84F83430 strb r3, [r4, #52] +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(((context & SD_CONTEXT_READ_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_READ_MULTIPLE_B + 5989 .loc 1 1525 7 is_stmt 1 view .LVU2173 +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(((context & SD_CONTEXT_READ_SINGLE_BLOCK) != 0U) || ((context & SD_CONTEXT_READ_MULTIPLE_B + 5990 .loc 1 1525 20 is_stmt 0 view .LVU2174 + 5991 0052 0023 movs r3, #0 + 5992 0054 2363 str r3, [r4, #48] +1526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5993 .loc 1 1526 7 is_stmt 1 view .LVU2175 +1526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 5994 .loc 1 1526 9 is_stmt 0 view .LVU2176 + 5995 0056 15F0030F tst r5, #3 + 5996 005a 13D0 beq .L337 +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 5997 .loc 1 1531 9 is_stmt 1 view .LVU2177 + 5998 005c 2046 mov r0, r4 + 5999 005e FFF7FEFF bl HAL_SD_RxCpltCallback + 6000 .LVL465: + 6001 0062 01E0 b .L331 + 6002 .LVL466: + 6003 .L348: +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6004 .loc 1 1492 5 view .LVU2178 + 6005 0064 FFF7FEFF bl SD_Read_IT + 6006 .LVL467: + 6007 .L331: +1668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6008 .loc 1 1668 1 is_stmt 0 view .LVU2179 + 6009 0068 38BD pop {r3, r4, r5, pc} + 6010 .LVL468: + 6011 .L349: +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 6012 .loc 1 1509 9 is_stmt 1 view .LVU2180 +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 6013 .loc 1 1509 22 is_stmt 0 view .LVU2181 + 6014 006a 2068 ldr r0, [r4] + 6015 .LVL469: +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 6016 .loc 1 1509 22 view .LVU2182 + 6017 006c FFF7FEFF bl SDMMC_CmdStopTransfer + 6018 .LVL470: +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6019 .loc 1 1510 9 is_stmt 1 view .LVU2183 +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6020 .loc 1 1510 11 is_stmt 0 view .LVU2184 + 6021 0070 0346 mov r3, r0 + 6022 0072 0028 cmp r0, #0 + ARM GAS /tmp/ccQEYyKb.s page 199 + + + 6023 0074 E6D0 beq .L336 +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 6024 .loc 1 1512 11 is_stmt 1 view .LVU2185 +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 6025 .loc 1 1512 26 is_stmt 0 view .LVU2186 + 6026 0076 A26B ldr r2, [r4, #56] + 6027 0078 1343 orrs r3, r3, r2 + 6028 007a A363 str r3, [r4, #56] +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 6029 .loc 1 1516 11 is_stmt 1 view .LVU2187 + 6030 007c 2046 mov r0, r4 + 6031 .LVL471: +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 6032 .loc 1 1516 11 is_stmt 0 view .LVU2188 + 6033 007e FFF7FEFF bl HAL_SD_ErrorCallback + 6034 .LVL472: + 6035 0082 DFE7 b .L336 + 6036 .L337: +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 6037 .loc 1 1539 9 is_stmt 1 view .LVU2189 + 6038 0084 2046 mov r0, r4 + 6039 0086 FFF7FEFF bl HAL_SD_TxCpltCallback + 6040 .LVL473: + 6041 008a EDE7 b .L331 + 6042 .LVL474: + 6043 .L335: +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6044 .loc 1 1543 10 view .LVU2190 +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6045 .loc 1 1543 12 is_stmt 0 view .LVU2191 + 6046 008c 15F0800F tst r5, #128 + 6047 0090 EAD0 beq .L331 +1545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6048 .loc 1 1545 7 is_stmt 1 view .LVU2192 +1545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6049 .loc 1 1545 9 is_stmt 0 view .LVU2193 + 6050 0092 15F0200F tst r5, #32 + 6051 0096 0ED1 bne .L350 + 6052 .LVL475: + 6053 .L338: +1558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6054 .loc 1 1558 7 is_stmt 1 view .LVU2194 +1558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6055 .loc 1 1558 9 is_stmt 0 view .LVU2195 + 6056 0098 15F0030F tst r5, #3 + 6057 009c E4D1 bne .L331 +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6058 .loc 1 1562 9 is_stmt 1 view .LVU2196 +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6059 .loc 1 1562 12 is_stmt 0 view .LVU2197 + 6060 009e 2268 ldr r2, [r4] +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6061 .loc 1 1562 30 view .LVU2198 + 6062 00a0 D36A ldr r3, [r2, #44] + 6063 00a2 23F00803 bic r3, r3, #8 + 6064 00a6 D362 str r3, [r2, #44] +1564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + ARM GAS /tmp/ccQEYyKb.s page 200 + + + 6065 .loc 1 1564 9 is_stmt 1 view .LVU2199 +1564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6066 .loc 1 1564 20 is_stmt 0 view .LVU2200 + 6067 00a8 0123 movs r3, #1 + 6068 00aa 84F83430 strb r3, [r4, #52] +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 6069 .loc 1 1569 9 is_stmt 1 view .LVU2201 + 6070 00ae 2046 mov r0, r4 + 6071 00b0 FFF7FEFF bl HAL_SD_TxCpltCallback + 6072 .LVL476: + 6073 00b4 D8E7 b .L331 + 6074 .LVL477: + 6075 .L350: +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 6076 .loc 1 1547 9 view .LVU2202 +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 6077 .loc 1 1547 22 is_stmt 0 view .LVU2203 + 6078 00b6 2068 ldr r0, [r4] + 6079 .LVL478: +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(errorstate != HAL_SD_ERROR_NONE) + 6080 .loc 1 1547 22 view .LVU2204 + 6081 00b8 FFF7FEFF bl SDMMC_CmdStopTransfer + 6082 .LVL479: +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6083 .loc 1 1548 9 is_stmt 1 view .LVU2205 +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6084 .loc 1 1548 11 is_stmt 0 view .LVU2206 + 6085 00bc 0346 mov r3, r0 + 6086 00be 0028 cmp r0, #0 + 6087 00c0 EAD0 beq .L338 +1550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 6088 .loc 1 1550 11 is_stmt 1 view .LVU2207 +1550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 6089 .loc 1 1550 26 is_stmt 0 view .LVU2208 + 6090 00c2 A26B ldr r2, [r4, #56] + 6091 00c4 1343 orrs r3, r3, r2 + 6092 00c6 A363 str r3, [r4, #56] +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 6093 .loc 1 1554 11 is_stmt 1 view .LVU2209 + 6094 00c8 2046 mov r0, r4 + 6095 .LVL480: +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 6096 .loc 1 1554 11 is_stmt 0 view .LVU2210 + 6097 00ca FFF7FEFF bl HAL_SD_ErrorCallback + 6098 .LVL481: + 6099 00ce E3E7 b .L338 + 6100 .LVL482: + 6101 .L334: +1579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6102 .loc 1 1579 8 is_stmt 1 view .LVU2211 +1579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6103 .loc 1 1579 12 is_stmt 0 view .LVU2212 + 6104 00d0 5A6B ldr r2, [r3, #52] +1579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6105 .loc 1 1579 10 view .LVU2213 + 6106 00d2 12F4804F tst r2, #16384 + 6107 00d6 02D0 beq .L339 + ARM GAS /tmp/ccQEYyKb.s page 201 + + +1579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6108 .loc 1 1579 66 discriminator 1 view .LVU2214 + 6109 00d8 15F0080F tst r5, #8 + 6110 00dc 4AD1 bne .L351 + 6111 .L339: +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6112 .loc 1 1584 8 is_stmt 1 view .LVU2215 +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6113 .loc 1 1584 11 is_stmt 0 view .LVU2216 + 6114 00de 5A6B ldr r2, [r3, #52] +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6115 .loc 1 1584 10 view .LVU2217 + 6116 00e0 12F03A0F tst r2, #58 + 6117 00e4 C0D0 beq .L331 +1587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6118 .loc 1 1587 5 is_stmt 1 view .LVU2218 +1587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6119 .loc 1 1587 8 is_stmt 0 view .LVU2219 + 6120 00e6 5A6B ldr r2, [r3, #52] +1587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6121 .loc 1 1587 7 view .LVU2220 + 6122 00e8 12F0020F tst r2, #2 + 6123 00ec 03D0 beq .L340 +1589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6124 .loc 1 1589 7 is_stmt 1 view .LVU2221 +1589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6125 .loc 1 1589 22 is_stmt 0 view .LVU2222 + 6126 00ee A26B ldr r2, [r4, #56] + 6127 00f0 42F00202 orr r2, r2, #2 + 6128 00f4 A263 str r2, [r4, #56] + 6129 .L340: +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6130 .loc 1 1591 5 is_stmt 1 view .LVU2223 +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6131 .loc 1 1591 8 is_stmt 0 view .LVU2224 + 6132 00f6 5A6B ldr r2, [r3, #52] +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6133 .loc 1 1591 7 view .LVU2225 + 6134 00f8 12F0080F tst r2, #8 + 6135 00fc 03D0 beq .L341 +1593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6136 .loc 1 1593 7 is_stmt 1 view .LVU2226 +1593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6137 .loc 1 1593 22 is_stmt 0 view .LVU2227 + 6138 00fe A26B ldr r2, [r4, #56] + 6139 0100 42F00802 orr r2, r2, #8 + 6140 0104 A263 str r2, [r4, #56] + 6141 .L341: +1595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6142 .loc 1 1595 5 is_stmt 1 view .LVU2228 +1595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6143 .loc 1 1595 8 is_stmt 0 view .LVU2229 + 6144 0106 5A6B ldr r2, [r3, #52] +1595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6145 .loc 1 1595 7 view .LVU2230 + 6146 0108 12F0200F tst r2, #32 + 6147 010c 03D0 beq .L342 + ARM GAS /tmp/ccQEYyKb.s page 202 + + +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6148 .loc 1 1597 7 is_stmt 1 view .LVU2231 +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6149 .loc 1 1597 22 is_stmt 0 view .LVU2232 + 6150 010e A26B ldr r2, [r4, #56] + 6151 0110 42F02002 orr r2, r2, #32 + 6152 0114 A263 str r2, [r4, #56] + 6153 .L342: +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6154 .loc 1 1599 5 is_stmt 1 view .LVU2233 +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6155 .loc 1 1599 8 is_stmt 0 view .LVU2234 + 6156 0116 5A6B ldr r2, [r3, #52] +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6157 .loc 1 1599 7 view .LVU2235 + 6158 0118 12F0100F tst r2, #16 + 6159 011c 03D0 beq .L343 +1601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6160 .loc 1 1601 7 is_stmt 1 view .LVU2236 +1601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6161 .loc 1 1601 22 is_stmt 0 view .LVU2237 + 6162 011e A26B ldr r2, [r4, #56] + 6163 0120 42F01002 orr r2, r2, #16 + 6164 0124 A263 str r2, [r4, #56] + 6165 .L343: +1605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6166 .loc 1 1605 5 is_stmt 1 view .LVU2238 + 6167 0126 40F23A52 movw r2, #1338 + 6168 012a 9A63 str r2, [r3, #56] +1608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); + 6169 .loc 1 1608 5 view .LVU2239 + 6170 012c 2268 ldr r2, [r4] + 6171 012e D36B ldr r3, [r2, #60] + 6172 0130 23F49D73 bic r3, r3, #314 + 6173 0134 D363 str r3, [r2, #60] +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6174 .loc 1 1611 5 view .LVU2240 +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6175 .loc 1 1611 23 is_stmt 0 view .LVU2241 + 6176 0136 2068 ldr r0, [r4] + 6177 .LVL483: +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6178 .loc 1 1611 23 view .LVU2242 + 6179 0138 FFF7FEFF bl SDMMC_CmdStopTransfer + 6180 .LVL484: +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6181 .loc 1 1611 20 view .LVU2243 + 6182 013c A36B ldr r3, [r4, #56] + 6183 013e 0343 orrs r3, r3, r0 + 6184 0140 A363 str r3, [r4, #56] +1613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6185 .loc 1 1613 5 is_stmt 1 view .LVU2244 +1613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6186 .loc 1 1613 7 is_stmt 0 view .LVU2245 + 6187 0142 15F0080F tst r5, #8 + 6188 0146 19D1 bne .L352 +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 203 + + + 6189 .loc 1 1624 10 is_stmt 1 view .LVU2246 +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6190 .loc 1 1624 12 is_stmt 0 view .LVU2247 + 6191 0148 15F0800F tst r5, #128 + 6192 014c 8CD0 beq .L331 +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6193 .loc 1 1627 7 is_stmt 1 view .LVU2248 +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6194 .loc 1 1627 9 is_stmt 0 view .LVU2249 + 6195 014e 15F0300F tst r5, #48 + 6196 0152 1CD1 bne .L353 +1637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6197 .loc 1 1637 12 is_stmt 1 view .LVU2250 +1637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6198 .loc 1 1637 14 is_stmt 0 view .LVU2251 + 6199 0154 15F0030F tst r5, #3 + 6200 0158 26D0 beq .L346 +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort DMA in IT mode */ + 6201 .loc 1 1640 9 is_stmt 1 view .LVU2252 +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort DMA in IT mode */ + 6202 .loc 1 1640 12 is_stmt 0 view .LVU2253 + 6203 015a 236C ldr r3, [r4, #64] +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort DMA in IT mode */ + 6204 .loc 1 1640 40 view .LVU2254 + 6205 015c 184A ldr r2, .L354+4 + 6206 015e 1A65 str r2, [r3, #80] +1642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6207 .loc 1 1642 9 is_stmt 1 view .LVU2255 +1642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6208 .loc 1 1642 12 is_stmt 0 view .LVU2256 + 6209 0160 206C ldr r0, [r4, #64] + 6210 0162 FFF7FEFF bl HAL_DMA_Abort_IT + 6211 .LVL485: +1642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6212 .loc 1 1642 11 view .LVU2257 + 6213 0166 0028 cmp r0, #0 + 6214 0168 3FF47EAF beq .L331 +1644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6215 .loc 1 1644 11 is_stmt 1 view .LVU2258 + 6216 016c 206C ldr r0, [r4, #64] + 6217 016e FFF7FEFF bl SD_DMARxAbort + 6218 .LVL486: + 6219 0172 79E7 b .L331 + 6220 .LVL487: + 6221 .L351: +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6222 .loc 1 1581 5 view .LVU2259 + 6223 0174 2046 mov r0, r4 + 6224 .LVL488: +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6225 .loc 1 1581 5 is_stmt 0 view .LVU2260 + 6226 0176 FFF7FEFF bl SD_Write_IT + 6227 .LVL489: + 6228 017a 75E7 b .L331 + 6229 .L352: +1616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 6230 .loc 1 1616 7 is_stmt 1 view .LVU2261 + ARM GAS /tmp/ccQEYyKb.s page 204 + + +1616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 6231 .loc 1 1616 18 is_stmt 0 view .LVU2262 + 6232 017c 0123 movs r3, #1 + 6233 017e 84F83430 strb r3, [r4, #52] +1617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 6234 .loc 1 1617 7 is_stmt 1 view .LVU2263 +1617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 6235 .loc 1 1617 20 is_stmt 0 view .LVU2264 + 6236 0182 0023 movs r3, #0 + 6237 0184 2363 str r3, [r4, #48] +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 6238 .loc 1 1621 7 is_stmt 1 view .LVU2265 + 6239 0186 2046 mov r0, r4 + 6240 0188 FFF7FEFF bl HAL_SD_ErrorCallback + 6241 .LVL490: + 6242 018c 6CE7 b .L331 + 6243 .L353: +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort DMA in IT mode */ + 6244 .loc 1 1630 9 view .LVU2266 +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort DMA in IT mode */ + 6245 .loc 1 1630 12 is_stmt 0 view .LVU2267 + 6246 018e E36B ldr r3, [r4, #60] +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** /* Abort DMA in IT mode */ + 6247 .loc 1 1630 40 view .LVU2268 + 6248 0190 0C4A ldr r2, .L354+8 + 6249 0192 1A65 str r2, [r3, #80] +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6250 .loc 1 1632 9 is_stmt 1 view .LVU2269 +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6251 .loc 1 1632 12 is_stmt 0 view .LVU2270 + 6252 0194 E06B ldr r0, [r4, #60] + 6253 0196 FFF7FEFF bl HAL_DMA_Abort_IT + 6254 .LVL491: +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6255 .loc 1 1632 11 view .LVU2271 + 6256 019a 0028 cmp r0, #0 + 6257 019c 3FF464AF beq .L331 +1634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6258 .loc 1 1634 11 is_stmt 1 view .LVU2272 + 6259 01a0 E06B ldr r0, [r4, #60] + 6260 01a2 FFF7FEFF bl SD_DMATxAbort + 6261 .LVL492: + 6262 01a6 5FE7 b .L331 + 6263 .L346: +1649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 6264 .loc 1 1649 9 view .LVU2273 +1649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 6265 .loc 1 1649 24 is_stmt 0 view .LVU2274 + 6266 01a8 0023 movs r3, #0 + 6267 01aa A363 str r3, [r4, #56] +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 6268 .loc 1 1650 9 is_stmt 1 view .LVU2275 +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 6269 .loc 1 1650 20 is_stmt 0 view .LVU2276 + 6270 01ac 0122 movs r2, #1 + 6271 01ae 84F83420 strb r2, [r4, #52] +1651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + ARM GAS /tmp/ccQEYyKb.s page 205 + + + 6272 .loc 1 1651 9 is_stmt 1 view .LVU2277 +1651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #if defined (USE_HAL_SD_REGISTER_CALLBACKS) && (USE_HAL_SD_REGISTER_CALLBACKS == 1U) + 6273 .loc 1 1651 22 is_stmt 0 view .LVU2278 + 6274 01b2 2363 str r3, [r4, #48] +1655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 6275 .loc 1 1655 9 is_stmt 1 view .LVU2279 + 6276 01b4 2046 mov r0, r4 + 6277 01b6 FFF7FEFF bl HAL_SD_AbortCallback + 6278 .LVL493: +1667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6279 .loc 1 1667 3 view .LVU2280 +1668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6280 .loc 1 1668 1 is_stmt 0 view .LVU2281 + 6281 01ba 55E7 b .L331 + 6282 .L355: + 6283 .align 2 + 6284 .L354: + 6285 01bc C53EFFFF .word -49467 + 6286 01c0 00000000 .word SD_DMARxAbort + 6287 01c4 00000000 .word SD_DMATxAbort + 6288 .cfi_endproc + 6289 .LFE153: + 6291 .section .text.HAL_SD_Abort,"ax",%progbits + 6292 .align 1 + 6293 .global HAL_SD_Abort + 6294 .syntax unified + 6295 .thumb + 6296 .thumb_func + 6297 .fpu fpv5-d16 + 6299 HAL_SD_Abort: + 6300 .LVL494: + 6301 .LFB166: +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; + 6302 .loc 1 2290 1 is_stmt 1 view -0 + 6303 .cfi_startproc + 6304 @ args = 0, pretend = 0, frame = 0 + 6305 @ frame_needed = 0, uses_anonymous_args = 0 +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; + 6306 .loc 1 2290 1 is_stmt 0 view .LVU2283 + 6307 0000 10B5 push {r4, lr} + 6308 .LCFI77: + 6309 .cfi_def_cfa_offset 8 + 6310 .cfi_offset 4, -8 + 6311 .cfi_offset 14, -4 + 6312 0002 0446 mov r4, r0 +2291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t context = hsd->Context; + 6313 .loc 1 2291 3 is_stmt 1 view .LVU2284 +2292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6314 .loc 1 2292 3 view .LVU2285 +2292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6315 .loc 1 2292 12 is_stmt 0 view .LVU2286 + 6316 0004 016B ldr r1, [r0, #48] + 6317 .LVL495: +2295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); + 6318 .loc 1 2295 3 is_stmt 1 view .LVU2287 + 6319 0006 0268 ldr r2, [r0] + 6320 0008 D36B ldr r3, [r2, #60] + ARM GAS /tmp/ccQEYyKb.s page 206 + + + 6321 000a 23F49D73 bic r3, r3, #314 + 6322 000e D363 str r3, [r2, #60] +2299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6323 .loc 1 2299 3 view .LVU2288 + 6324 0010 0368 ldr r3, [r0] + 6325 0012 40F23A52 movw r2, #1338 + 6326 0016 9A63 str r2, [r3, #56] +2301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6327 .loc 1 2301 3 view .LVU2289 + 6328 0018 0268 ldr r2, [r0] + 6329 001a D36A ldr r3, [r2, #44] + 6330 001c 23F00103 bic r3, r3, #1 + 6331 0020 D362 str r3, [r2, #44] +2303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6332 .loc 1 2303 3 view .LVU2290 +2303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6333 .loc 1 2303 6 is_stmt 0 view .LVU2291 + 6334 0022 11F0800F tst r1, #128 + 6335 0026 0AD0 beq .L357 +2306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6336 .loc 1 2306 5 is_stmt 1 view .LVU2292 +2306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6337 .loc 1 2306 8 is_stmt 0 view .LVU2293 + 6338 0028 0268 ldr r2, [r0] +2306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6339 .loc 1 2306 26 view .LVU2294 + 6340 002a D36A ldr r3, [r2, #44] + 6341 002c 23F00803 bic r3, r3, #8 + 6342 0030 D362 str r3, [r2, #44] +2309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6343 .loc 1 2309 5 is_stmt 1 view .LVU2295 +2309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6344 .loc 1 2309 8 is_stmt 0 view .LVU2296 + 6345 0032 11F0300F tst r1, #48 + 6346 0036 11D1 bne .L363 +2317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6347 .loc 1 2317 10 is_stmt 1 view .LVU2297 +2317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6348 .loc 1 2317 13 is_stmt 0 view .LVU2298 + 6349 0038 11F0030F tst r1, #3 + 6350 003c 18D1 bne .L364 + 6351 .LVL496: + 6352 .L357: +2327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6353 .loc 1 2327 5 is_stmt 1 view .LVU2299 +2330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6354 .loc 1 2330 3 view .LVU2300 +2330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6355 .loc 1 2330 14 is_stmt 0 view .LVU2301 + 6356 003e 0123 movs r3, #1 + 6357 0040 84F83430 strb r3, [r4, #52] +2333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6358 .loc 1 2333 3 is_stmt 1 view .LVU2302 +2333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6359 .loc 1 2333 16 is_stmt 0 view .LVU2303 + 6360 0044 0023 movs r3, #0 + 6361 0046 2363 str r3, [r4, #48] + ARM GAS /tmp/ccQEYyKb.s page 207 + + +2335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + 6362 .loc 1 2335 3 is_stmt 1 view .LVU2304 +2335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + 6363 .loc 1 2335 15 is_stmt 0 view .LVU2305 + 6364 0048 2046 mov r0, r4 + 6365 004a FFF7FEFF bl HAL_SD_GetCardState + 6366 .LVL497: +2336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6367 .loc 1 2336 3 is_stmt 1 view .LVU2306 +2336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6368 .loc 1 2336 43 is_stmt 0 view .LVU2307 + 6369 004e 0538 subs r0, r0, #5 + 6370 .LVL498: +2336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6371 .loc 1 2336 5 view .LVU2308 + 6372 0050 0128 cmp r0, #1 + 6373 0052 17D9 bls .L365 + 6374 .LVL499: + 6375 .L359: +2340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6376 .loc 1 2340 3 is_stmt 1 view .LVU2309 +2340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6377 .loc 1 2340 9 is_stmt 0 view .LVU2310 + 6378 0054 A36B ldr r3, [r4, #56] +2340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6379 .loc 1 2340 5 view .LVU2311 + 6380 0056 D3B9 cbnz r3, .L361 +2344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6381 .loc 1 2344 10 view .LVU2312 + 6382 0058 0020 movs r0, #0 + 6383 .L360: +2345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6384 .loc 1 2345 1 view .LVU2313 + 6385 005a 10BD pop {r4, pc} + 6386 .LVL500: + 6387 .L363: +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6388 .loc 1 2311 7 is_stmt 1 view .LVU2314 +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6389 .loc 1 2311 10 is_stmt 0 view .LVU2315 + 6390 005c C06B ldr r0, [r0, #60] + 6391 .LVL501: +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6392 .loc 1 2311 10 view .LVU2316 + 6393 005e FFF7FEFF bl HAL_DMA_Abort + 6394 .LVL502: +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6395 .loc 1 2311 9 view .LVU2317 + 6396 0062 0028 cmp r0, #0 + 6397 0064 EBD0 beq .L357 +2313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6398 .loc 1 2313 9 is_stmt 1 view .LVU2318 +2313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6399 .loc 1 2313 24 is_stmt 0 view .LVU2319 + 6400 0066 A36B ldr r3, [r4, #56] + 6401 0068 43F08043 orr r3, r3, #1073741824 + 6402 006c A363 str r3, [r4, #56] + ARM GAS /tmp/ccQEYyKb.s page 208 + + + 6403 006e E6E7 b .L357 + 6404 .LVL503: + 6405 .L364: +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6406 .loc 1 2319 7 is_stmt 1 view .LVU2320 +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6407 .loc 1 2319 10 is_stmt 0 view .LVU2321 + 6408 0070 006C ldr r0, [r0, #64] + 6409 .LVL504: +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6410 .loc 1 2319 10 view .LVU2322 + 6411 0072 FFF7FEFF bl HAL_DMA_Abort + 6412 .LVL505: +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6413 .loc 1 2319 9 view .LVU2323 + 6414 0076 0028 cmp r0, #0 + 6415 0078 E1D0 beq .L357 +2321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6416 .loc 1 2321 9 is_stmt 1 view .LVU2324 +2321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6417 .loc 1 2321 24 is_stmt 0 view .LVU2325 + 6418 007a A36B ldr r3, [r4, #56] + 6419 007c 43F08043 orr r3, r3, #1073741824 + 6420 0080 A363 str r3, [r4, #56] + 6421 0082 DCE7 b .L357 + 6422 .LVL506: + 6423 .L365: +2338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6424 .loc 1 2338 5 is_stmt 1 view .LVU2326 +2338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6425 .loc 1 2338 22 is_stmt 0 view .LVU2327 + 6426 0084 2068 ldr r0, [r4] + 6427 .LVL507: +2338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6428 .loc 1 2338 22 view .LVU2328 + 6429 0086 FFF7FEFF bl SDMMC_CmdStopTransfer + 6430 .LVL508: +2338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6431 .loc 1 2338 20 view .LVU2329 + 6432 008a A063 str r0, [r4, #56] + 6433 008c E2E7 b .L359 + 6434 .L361: +2342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6435 .loc 1 2342 12 view .LVU2330 + 6436 008e 0120 movs r0, #1 + 6437 0090 E3E7 b .L360 + 6438 .cfi_endproc + 6439 .LFE166: + 6441 .section .text.HAL_SD_Abort_IT,"ax",%progbits + 6442 .align 1 + 6443 .global HAL_SD_Abort_IT + 6444 .syntax unified + 6445 .thumb + 6446 .thumb_func + 6447 .fpu fpv5-d16 + 6449 HAL_SD_Abort_IT: + 6450 .LVL509: + ARM GAS /tmp/ccQEYyKb.s page 209 + + + 6451 .LFB167: +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; + 6452 .loc 1 2354 1 is_stmt 1 view -0 + 6453 .cfi_startproc + 6454 @ args = 0, pretend = 0, frame = 0 + 6455 @ frame_needed = 0, uses_anonymous_args = 0 +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** HAL_SD_CardStateTypeDef CardState; + 6456 .loc 1 2354 1 is_stmt 0 view .LVU2332 + 6457 0000 10B5 push {r4, lr} + 6458 .LCFI78: + 6459 .cfi_def_cfa_offset 8 + 6460 .cfi_offset 4, -8 + 6461 .cfi_offset 14, -4 + 6462 0002 0446 mov r4, r0 +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** uint32_t context = hsd->Context; + 6463 .loc 1 2355 3 is_stmt 1 view .LVU2333 +2356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6464 .loc 1 2356 3 view .LVU2334 +2356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6465 .loc 1 2356 12 is_stmt 0 view .LVU2335 + 6466 0004 026B ldr r2, [r0, #48] + 6467 .LVL510: +2359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** SDMMC_IT_TXUNDERR| SDMMC_IT_RXOVERR); + 6468 .loc 1 2359 3 is_stmt 1 view .LVU2336 + 6469 0006 0168 ldr r1, [r0] + 6470 0008 CB6B ldr r3, [r1, #60] + 6471 000a 23F49D73 bic r3, r3, #314 + 6472 000e CB63 str r3, [r1, #60] +2362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6473 .loc 1 2362 3 view .LVU2337 + 6474 0010 0168 ldr r1, [r0] + 6475 0012 CB6A ldr r3, [r1, #44] + 6476 0014 23F00103 bic r3, r3, #1 + 6477 0018 CB62 str r3, [r1, #44] +2364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6478 .loc 1 2364 3 view .LVU2338 +2364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6479 .loc 1 2364 6 is_stmt 0 view .LVU2339 + 6480 001a 12F0800F tst r2, #128 + 6481 001e 22D0 beq .L367 +2367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6482 .loc 1 2367 5 is_stmt 1 view .LVU2340 +2367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6483 .loc 1 2367 8 is_stmt 0 view .LVU2341 + 6484 0020 0168 ldr r1, [r0] +2367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6485 .loc 1 2367 26 view .LVU2342 + 6486 0022 CB6A ldr r3, [r1, #44] + 6487 0024 23F00803 bic r3, r3, #8 + 6488 0028 CB62 str r3, [r1, #44] +2370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6489 .loc 1 2370 5 is_stmt 1 view .LVU2343 +2370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6490 .loc 1 2370 8 is_stmt 0 view .LVU2344 + 6491 002a 12F0300F tst r2, #48 + 6492 002e 04D1 bne .L374 +2379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 210 + + + 6493 .loc 1 2379 10 is_stmt 1 view .LVU2345 +2379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6494 .loc 1 2379 13 is_stmt 0 view .LVU2346 + 6495 0030 12F0030F tst r2, #3 + 6496 0034 0CD1 bne .L375 +2419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6497 .loc 1 2419 10 view .LVU2347 + 6498 0036 0020 movs r0, #0 + 6499 .LVL511: + 6500 .L369: +2420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6501 .loc 1 2420 1 view .LVU2348 + 6502 0038 10BD pop {r4, pc} + 6503 .LVL512: + 6504 .L374: +2372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmatx) != HAL_OK) + 6505 .loc 1 2372 7 is_stmt 1 view .LVU2349 +2372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmatx) != HAL_OK) + 6506 .loc 1 2372 10 is_stmt 0 view .LVU2350 + 6507 003a C36B ldr r3, [r0, #60] +2372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmatx) != HAL_OK) + 6508 .loc 1 2372 38 view .LVU2351 + 6509 003c 184A ldr r2, .L378 + 6510 .LVL513: +2372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmatx) != HAL_OK) + 6511 .loc 1 2372 38 view .LVU2352 + 6512 003e 1A65 str r2, [r3, #80] +2373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6513 .loc 1 2373 7 is_stmt 1 view .LVU2353 +2373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6514 .loc 1 2373 10 is_stmt 0 view .LVU2354 + 6515 0040 C06B ldr r0, [r0, #60] + 6516 .LVL514: +2373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6517 .loc 1 2373 10 view .LVU2355 + 6518 0042 FFF7FEFF bl HAL_DMA_Abort_IT + 6519 .LVL515: +2373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6520 .loc 1 2373 9 view .LVU2356 + 6521 0046 0028 cmp r0, #0 + 6522 0048 F6D0 beq .L369 +2375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6523 .loc 1 2375 9 is_stmt 1 view .LVU2357 +2375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6524 .loc 1 2375 21 is_stmt 0 view .LVU2358 + 6525 004a 0020 movs r0, #0 + 6526 004c E063 str r0, [r4, #60] + 6527 004e F3E7 b .L369 + 6528 .LVL516: + 6529 .L375: +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmarx) != HAL_OK) + 6530 .loc 1 2381 7 is_stmt 1 view .LVU2359 +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmarx) != HAL_OK) + 6531 .loc 1 2381 10 is_stmt 0 view .LVU2360 + 6532 0050 036C ldr r3, [r0, #64] +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmarx) != HAL_OK) + 6533 .loc 1 2381 38 view .LVU2361 + ARM GAS /tmp/ccQEYyKb.s page 211 + + + 6534 0052 144A ldr r2, .L378+4 + 6535 .LVL517: +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if(HAL_DMA_Abort_IT(hsd->hdmarx) != HAL_OK) + 6536 .loc 1 2381 38 view .LVU2362 + 6537 0054 1A65 str r2, [r3, #80] +2382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6538 .loc 1 2382 7 is_stmt 1 view .LVU2363 +2382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6539 .loc 1 2382 10 is_stmt 0 view .LVU2364 + 6540 0056 006C ldr r0, [r0, #64] + 6541 .LVL518: +2382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6542 .loc 1 2382 10 view .LVU2365 + 6543 0058 FFF7FEFF bl HAL_DMA_Abort_IT + 6544 .LVL519: +2382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6545 .loc 1 2382 9 view .LVU2366 + 6546 005c 0028 cmp r0, #0 + 6547 005e EBD0 beq .L369 +2384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6548 .loc 1 2384 9 is_stmt 1 view .LVU2367 +2384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6549 .loc 1 2384 21 is_stmt 0 view .LVU2368 + 6550 0060 0020 movs r0, #0 + 6551 0062 2064 str r0, [r4, #64] + 6552 0064 E8E7 b .L369 + 6553 .LVL520: + 6554 .L367: +2396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6555 .loc 1 2396 5 is_stmt 1 view .LVU2369 + 6556 0066 0368 ldr r3, [r0] + 6557 0068 40F23A52 movw r2, #1338 + 6558 .LVL521: +2396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** + 6559 .loc 1 2396 5 is_stmt 0 view .LVU2370 + 6560 006c 9A63 str r2, [r3, #56] +2398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 6561 .loc 1 2398 5 is_stmt 1 view .LVU2371 +2398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->State = HAL_SD_STATE_READY; + 6562 .loc 1 2398 17 is_stmt 0 view .LVU2372 + 6563 006e FFF7FEFF bl HAL_SD_GetCardState + 6564 .LVL522: +2399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 6565 .loc 1 2399 5 is_stmt 1 view .LVU2373 +2399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** hsd->Context = SD_CONTEXT_NONE; + 6566 .loc 1 2399 16 is_stmt 0 view .LVU2374 + 6567 0072 0123 movs r3, #1 + 6568 0074 84F83430 strb r3, [r4, #52] +2400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + 6569 .loc 1 2400 5 is_stmt 1 view .LVU2375 +2400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** if((CardState == HAL_SD_CARD_RECEIVING) || (CardState == HAL_SD_CARD_SENDING)) + 6570 .loc 1 2400 18 is_stmt 0 view .LVU2376 + 6571 0078 0023 movs r3, #0 + 6572 007a 2363 str r3, [r4, #48] +2401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6573 .loc 1 2401 5 is_stmt 1 view .LVU2377 +2401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + ARM GAS /tmp/ccQEYyKb.s page 212 + + + 6574 .loc 1 2401 45 is_stmt 0 view .LVU2378 + 6575 007c 0538 subs r0, r0, #5 + 6576 .LVL523: +2401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6577 .loc 1 2401 7 view .LVU2379 + 6578 007e 0128 cmp r0, #1 + 6579 0080 03D9 bls .L376 + 6580 .LVL524: + 6581 .L370: +2405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6582 .loc 1 2405 5 is_stmt 1 view .LVU2380 +2405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6583 .loc 1 2405 11 is_stmt 0 view .LVU2381 + 6584 0082 A36B ldr r3, [r4, #56] +2405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** { + 6585 .loc 1 2405 7 view .LVU2382 + 6586 0084 33B1 cbz r3, .L377 +2407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6587 .loc 1 2407 14 view .LVU2383 + 6588 0086 0120 movs r0, #1 + 6589 0088 D6E7 b .L369 + 6590 .LVL525: + 6591 .L376: +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6592 .loc 1 2403 7 is_stmt 1 view .LVU2384 +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6593 .loc 1 2403 24 is_stmt 0 view .LVU2385 + 6594 008a 2068 ldr r0, [r4] + 6595 .LVL526: +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6596 .loc 1 2403 24 view .LVU2386 + 6597 008c FFF7FEFF bl SDMMC_CmdStopTransfer + 6598 .LVL527: +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6599 .loc 1 2403 22 view .LVU2387 + 6600 0090 A063 str r0, [r4, #56] + 6601 0092 F6E7 b .L370 + 6602 .L377: +2414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** #endif /* USE_HAL_SD_REGISTER_CALLBACKS */ + 6603 .loc 1 2414 7 is_stmt 1 view .LVU2388 + 6604 0094 2046 mov r0, r4 + 6605 0096 FFF7FEFF bl HAL_SD_AbortCallback + 6606 .LVL528: +2419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.c **** } + 6607 .loc 1 2419 10 is_stmt 0 view .LVU2389 + 6608 009a 0020 movs r0, #0 + 6609 009c CCE7 b .L369 + 6610 .L379: + 6611 009e 00BF .align 2 + 6612 .L378: + 6613 00a0 00000000 .word SD_DMATxAbort + 6614 00a4 00000000 .word SD_DMARxAbort + 6615 .cfi_endproc + 6616 .LFE167: + 6618 .text + 6619 .Letext0: + 6620 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + ARM GAS /tmp/ccQEYyKb.s page 213 + + + 6621 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 6622 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 6623 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 6624 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 6625 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h" + 6626 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h" + 6627 .file 9 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + ARM GAS /tmp/ccQEYyKb.s page 214 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_sd.c + /tmp/ccQEYyKb.s:17 .text.SD_DMATransmitCplt:0000000000000000 $t + /tmp/ccQEYyKb.s:24 .text.SD_DMATransmitCplt:0000000000000000 SD_DMATransmitCplt + /tmp/ccQEYyKb.s:51 .text.SD_PowerON:0000000000000000 $t + /tmp/ccQEYyKb.s:57 .text.SD_PowerON:0000000000000000 SD_PowerON + /tmp/ccQEYyKb.s:275 .text.SD_PowerON:00000000000000bc $d + /tmp/ccQEYyKb.s:280 .text.SD_PowerOFF:0000000000000000 $t + /tmp/ccQEYyKb.s:286 .text.SD_PowerOFF:0000000000000000 SD_PowerOFF + /tmp/ccQEYyKb.s:312 .text.SD_Read_IT:0000000000000000 $t + /tmp/ccQEYyKb.s:318 .text.SD_Read_IT:0000000000000000 SD_Read_IT + /tmp/ccQEYyKb.s:423 .text.SD_Write_IT:0000000000000000 $t + /tmp/ccQEYyKb.s:429 .text.SD_Write_IT:0000000000000000 SD_Write_IT + /tmp/ccQEYyKb.s:548 .text.SD_SendSDStatus:0000000000000000 $t + /tmp/ccQEYyKb.s:554 .text.SD_SendSDStatus:0000000000000000 SD_SendSDStatus + /tmp/ccQEYyKb.s:823 .text.SD_FindSCR:0000000000000000 $t + /tmp/ccQEYyKb.s:829 .text.SD_FindSCR:0000000000000000 SD_FindSCR + /tmp/ccQEYyKb.s:1093 .text.SD_WideBus_Enable:0000000000000000 $t + /tmp/ccQEYyKb.s:1099 .text.SD_WideBus_Enable:0000000000000000 SD_WideBus_Enable + /tmp/ccQEYyKb.s:1194 .text.SD_WideBus_Disable:0000000000000000 $t + /tmp/ccQEYyKb.s:1200 .text.SD_WideBus_Disable:0000000000000000 SD_WideBus_Disable + /tmp/ccQEYyKb.s:1295 .text.SD_SendStatus:0000000000000000 $t + /tmp/ccQEYyKb.s:1301 .text.SD_SendStatus:0000000000000000 SD_SendStatus + /tmp/ccQEYyKb.s:1366 .text.HAL_SD_MspInit:0000000000000000 $t + /tmp/ccQEYyKb.s:1373 .text.HAL_SD_MspInit:0000000000000000 HAL_SD_MspInit + /tmp/ccQEYyKb.s:1388 .text.HAL_SD_MspDeInit:0000000000000000 $t + /tmp/ccQEYyKb.s:1395 .text.HAL_SD_MspDeInit:0000000000000000 HAL_SD_MspDeInit + /tmp/ccQEYyKb.s:1410 .text.HAL_SD_DeInit:0000000000000000 $t + /tmp/ccQEYyKb.s:1417 .text.HAL_SD_DeInit:0000000000000000 HAL_SD_DeInit + /tmp/ccQEYyKb.s:1471 .text.HAL_SD_ReadBlocks:0000000000000000 $t + /tmp/ccQEYyKb.s:1478 .text.HAL_SD_ReadBlocks:0000000000000000 HAL_SD_ReadBlocks + /tmp/ccQEYyKb.s:2028 .text.HAL_SD_ReadBlocks:0000000000000244 $d + /tmp/ccQEYyKb.s:2033 .text.HAL_SD_WriteBlocks:0000000000000000 $t + /tmp/ccQEYyKb.s:2040 .text.HAL_SD_WriteBlocks:0000000000000000 HAL_SD_WriteBlocks + /tmp/ccQEYyKb.s:2520 .text.HAL_SD_WriteBlocks:00000000000001fc $d + /tmp/ccQEYyKb.s:2525 .text.HAL_SD_ReadBlocks_IT:0000000000000000 $t + /tmp/ccQEYyKb.s:2532 .text.HAL_SD_ReadBlocks_IT:0000000000000000 HAL_SD_ReadBlocks_IT + /tmp/ccQEYyKb.s:2755 .text.HAL_SD_ReadBlocks_IT:00000000000000c8 $d + /tmp/ccQEYyKb.s:2760 .text.HAL_SD_WriteBlocks_IT:0000000000000000 $t + /tmp/ccQEYyKb.s:2767 .text.HAL_SD_WriteBlocks_IT:0000000000000000 HAL_SD_WriteBlocks_IT + /tmp/ccQEYyKb.s:2991 .text.HAL_SD_WriteBlocks_IT:00000000000000c0 $d + /tmp/ccQEYyKb.s:2996 .text.HAL_SD_ReadBlocks_DMA:0000000000000000 $t + /tmp/ccQEYyKb.s:3003 .text.HAL_SD_ReadBlocks_DMA:0000000000000000 HAL_SD_ReadBlocks_DMA + /tmp/ccQEYyKb.s:3288 .text.HAL_SD_ReadBlocks_DMA:0000000000000128 $d + /tmp/ccQEYyKb.s:3978 .text.SD_DMAReceiveCplt:0000000000000000 SD_DMAReceiveCplt + /tmp/ccQEYyKb.s:5614 .text.SD_DMAError:0000000000000000 SD_DMAError + /tmp/ccQEYyKb.s:3295 .text.HAL_SD_WriteBlocks_DMA:0000000000000000 $t + /tmp/ccQEYyKb.s:3302 .text.HAL_SD_WriteBlocks_DMA:0000000000000000 HAL_SD_WriteBlocks_DMA + /tmp/ccQEYyKb.s:3592 .text.HAL_SD_WriteBlocks_DMA:0000000000000124 $d + /tmp/ccQEYyKb.s:3599 .text.HAL_SD_Erase:0000000000000000 $t + /tmp/ccQEYyKb.s:3606 .text.HAL_SD_Erase:0000000000000000 HAL_SD_Erase + /tmp/ccQEYyKb.s:3851 .text.HAL_SD_Erase:00000000000000f4 $d + /tmp/ccQEYyKb.s:3856 .text.HAL_SD_GetState:0000000000000000 $t + /tmp/ccQEYyKb.s:3863 .text.HAL_SD_GetState:0000000000000000 HAL_SD_GetState + /tmp/ccQEYyKb.s:3881 .text.HAL_SD_GetError:0000000000000000 $t + /tmp/ccQEYyKb.s:3888 .text.HAL_SD_GetError:0000000000000000 HAL_SD_GetError + /tmp/ccQEYyKb.s:3906 .text.HAL_SD_TxCpltCallback:0000000000000000 $t + ARM GAS /tmp/ccQEYyKb.s page 215 + + + /tmp/ccQEYyKb.s:3913 .text.HAL_SD_TxCpltCallback:0000000000000000 HAL_SD_TxCpltCallback + /tmp/ccQEYyKb.s:3928 .text.HAL_SD_RxCpltCallback:0000000000000000 $t + /tmp/ccQEYyKb.s:3935 .text.HAL_SD_RxCpltCallback:0000000000000000 HAL_SD_RxCpltCallback + /tmp/ccQEYyKb.s:3950 .text.HAL_SD_ErrorCallback:0000000000000000 $t + /tmp/ccQEYyKb.s:3957 .text.HAL_SD_ErrorCallback:0000000000000000 HAL_SD_ErrorCallback + /tmp/ccQEYyKb.s:3972 .text.SD_DMAReceiveCplt:0000000000000000 $t + /tmp/ccQEYyKb.s:4059 .text.HAL_SD_AbortCallback:0000000000000000 $t + /tmp/ccQEYyKb.s:4066 .text.HAL_SD_AbortCallback:0000000000000000 HAL_SD_AbortCallback + /tmp/ccQEYyKb.s:4081 .text.HAL_SD_GetCardCID:0000000000000000 $t + /tmp/ccQEYyKb.s:4088 .text.HAL_SD_GetCardCID:0000000000000000 HAL_SD_GetCardCID + /tmp/ccQEYyKb.s:4173 .text.HAL_SD_GetCardCSD:0000000000000000 $t + /tmp/ccQEYyKb.s:4180 .text.HAL_SD_GetCardCSD:0000000000000000 HAL_SD_GetCardCSD + /tmp/ccQEYyKb.s:4549 .text.HAL_SD_GetCardCSD:00000000000001b4 $d + /tmp/ccQEYyKb.s:4554 .text.SD_InitCard:0000000000000000 $t + /tmp/ccQEYyKb.s:4560 .text.SD_InitCard:0000000000000000 SD_InitCard + /tmp/ccQEYyKb.s:4801 .text.HAL_SD_InitCard:0000000000000000 $t + /tmp/ccQEYyKb.s:4808 .text.HAL_SD_InitCard:0000000000000000 HAL_SD_InitCard + /tmp/ccQEYyKb.s:4978 .text.HAL_SD_InitCard:00000000000000a4 $d + /tmp/ccQEYyKb.s:4983 .text.HAL_SD_Init:0000000000000000 $t + /tmp/ccQEYyKb.s:4990 .text.HAL_SD_Init:0000000000000000 HAL_SD_Init + /tmp/ccQEYyKb.s:5080 .text.HAL_SD_GetCardStatus:0000000000000000 $t + /tmp/ccQEYyKb.s:5087 .text.HAL_SD_GetCardStatus:0000000000000000 HAL_SD_GetCardStatus + /tmp/ccQEYyKb.s:5265 .text.HAL_SD_GetCardStatus:00000000000000a8 $d + /tmp/ccQEYyKb.s:5270 .text.HAL_SD_GetCardInfo:0000000000000000 $t + /tmp/ccQEYyKb.s:5277 .text.HAL_SD_GetCardInfo:0000000000000000 HAL_SD_GetCardInfo + /tmp/ccQEYyKb.s:5335 .text.HAL_SD_ConfigWideBusOperation:0000000000000000 $t + /tmp/ccQEYyKb.s:5342 .text.HAL_SD_ConfigWideBusOperation:0000000000000000 HAL_SD_ConfigWideBusOperation + /tmp/ccQEYyKb.s:5539 .text.HAL_SD_ConfigWideBusOperation:00000000000000bc $d + /tmp/ccQEYyKb.s:5544 .text.HAL_SD_GetCardState:0000000000000000 $t + /tmp/ccQEYyKb.s:5551 .text.HAL_SD_GetCardState:0000000000000000 HAL_SD_GetCardState + /tmp/ccQEYyKb.s:5608 .text.SD_DMAError:0000000000000000 $t + /tmp/ccQEYyKb.s:5727 .text.SD_DMAError:0000000000000064 $d + /tmp/ccQEYyKb.s:5732 .text.SD_DMATxAbort:0000000000000000 $t + /tmp/ccQEYyKb.s:5738 .text.SD_DMATxAbort:0000000000000000 SD_DMATxAbort + /tmp/ccQEYyKb.s:5821 .text.SD_DMARxAbort:0000000000000000 $t + /tmp/ccQEYyKb.s:5827 .text.SD_DMARxAbort:0000000000000000 SD_DMARxAbort + /tmp/ccQEYyKb.s:5910 .text.HAL_SD_IRQHandler:0000000000000000 $t + /tmp/ccQEYyKb.s:5917 .text.HAL_SD_IRQHandler:0000000000000000 HAL_SD_IRQHandler + /tmp/ccQEYyKb.s:6285 .text.HAL_SD_IRQHandler:00000000000001bc $d + /tmp/ccQEYyKb.s:6292 .text.HAL_SD_Abort:0000000000000000 $t + /tmp/ccQEYyKb.s:6299 .text.HAL_SD_Abort:0000000000000000 HAL_SD_Abort + /tmp/ccQEYyKb.s:6442 .text.HAL_SD_Abort_IT:0000000000000000 $t + /tmp/ccQEYyKb.s:6449 .text.HAL_SD_Abort_IT:0000000000000000 HAL_SD_Abort_IT + /tmp/ccQEYyKb.s:6613 .text.HAL_SD_Abort_IT:00000000000000a0 $d + +UNDEFINED SYMBOLS +SDMMC_CmdGoIdleState +SDMMC_CmdOperCond +SDMMC_CmdAppCommand +SDMMC_CmdAppOperCommand +SDMMC_GetResponse +SDMMC_PowerState_OFF +SDMMC_ReadFIFO +SDMMC_WriteFIFO +HAL_GetTick +SDMMC_CmdBlockLength +SDMMC_ConfigData + ARM GAS /tmp/ccQEYyKb.s page 216 + + +SDMMC_CmdStatusRegister +SDMMC_CmdSendSCR +SDMMC_CmdBusWidth +SDMMC_CmdSendStatus +SDMMC_CmdReadMultiBlock +SDMMC_CmdReadSingleBlock +SDMMC_CmdStopTransfer +SDMMC_CmdWriteMultiBlock +SDMMC_CmdWriteSingleBlock +HAL_DMA_Start_IT +SDMMC_CmdSDEraseStartAdd +SDMMC_CmdSDEraseEndAdd +SDMMC_CmdErase +SDMMC_GetPowerState +SDMMC_CmdSendCSD +SDMMC_CmdSelDesel +SDMMC_Init +SDMMC_CmdSendCID +SDMMC_CmdSetRelAdd +SDMMC_PowerState_ON +HAL_Delay +HAL_DMA_GetError +HAL_DMA_Abort_IT +HAL_DMA_Abort diff --git a/build/stm32f7xx_hal_sd.o b/build/stm32f7xx_hal_sd.o new file mode 100644 index 0000000..1b2c461 Binary files /dev/null and b/build/stm32f7xx_hal_sd.o differ diff --git a/build/stm32f7xx_hal_tim.d b/build/stm32f7xx_hal_tim.d new file mode 100644 index 0000000..45e46e6 --- /dev/null +++ b/build/stm32f7xx_hal_tim.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_tim.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_tim.lst b/build/stm32f7xx_hal_tim.lst new file mode 100644 index 0000000..7a80865 --- /dev/null +++ b/build/stm32f7xx_hal_tim.lst @@ -0,0 +1,29906 @@ +ARM GAS /tmp/ccPLZXyC.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_tim.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.TIM_OC1_SetConfig,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 TIM_OC1_SetConfig: + 25 .LVL0: + 26 .LFB246: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @file stm32f7xx_hal_tim.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * functionalities of the Timer (TIM) peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Time Base Initialization + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Time Base Start + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Time Base Start Interruption + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Time Base Start DMA + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Output Compare/PWM Initialization + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Output Compare/PWM Channel Configuration + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Output Compare/PWM Start + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Output Compare/PWM Start Interruption + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Output Compare/PWM Start DMA + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Input Capture Initialization + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Input Capture Channel Configuration + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Input Capture Start + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Input Capture Start Interruption + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Input Capture Start DMA + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM One Pulse Initialization + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM One Pulse Channel Configuration + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM One Pulse Start + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Encoder Interface Initialization + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Encoder Interface Start + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Encoder Interface Start Interruption + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM Encoder Interface Start DMA + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + Commutation Event configuration with Interruption and DMA + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM OCRef clear configuration + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + TIM External Clock configuration + ARM GAS /tmp/ccPLZXyC.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ****************************************************************************** + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @attention + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * Copyright (c) 2017 STMicroelectronics. + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * All rights reserved. + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This software is licensed under terms that can be found in the LICENSE file + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * in the root directory of this software component. + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ****************************************************************************** + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### TIMER Generic features ##### + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] The Timer features include: + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) 16-bit up, down, up/down auto-reload counter. + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) 16-bit programmable prescaler allowing dividing (also on the fly) the + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** counter clock frequency either by any factor between 1 and 65536. + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) Up to 4 independent channels for: + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) Input Capture + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) Output Compare + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) PWM generation (Edge and Center-aligned Mode) + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) One-pulse mode output + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) Synchronization circuit to control the timer with external signals and to interconnect + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** several timers together. + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) Supports incremental encoder for positioning purposes + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### How to use this driver ##### + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) Initialize the TIM low level resources by implementing the following functions + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** depending on the selected feature: + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) Time Base : HAL_TIM_Base_MspInit() + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) Input Capture : HAL_TIM_IC_MspInit() + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) Output Compare : HAL_TIM_OC_MspInit() + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) PWM generation : HAL_TIM_PWM_MspInit() + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) One-pulse mode output : HAL_TIM_OnePulse_MspInit() + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) Encoder mode output : HAL_TIM_Encoder_MspInit() + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) Initialize the TIM low level resources : + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE(); + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (##) TIM pins configuration + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+++) Enable the clock for the TIM GPIOs using the following function: + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_RCC_GPIOx_CLK_ENABLE(); + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init(); + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) The external Clock can be configured, if needed (the default clock is the + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** internal clock from the APBx), using the following function: + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ConfigClockSource, the clock configuration should be done before + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** any start function. + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) Configure the TIM in the desired functioning mode using one of the + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Initialization function of this driver: + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) HAL_TIM_Base_Init: to use the Timer to generate a simple time base + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) HAL_TIM_OC_Init and HAL_TIM_OC_ConfigChannel: to use the Timer to generate an + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Output Compare signal. + ARM GAS /tmp/ccPLZXyC.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) HAL_TIM_PWM_Init and HAL_TIM_PWM_ConfigChannel: to use the Timer to generate a + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** PWM signal. + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) HAL_TIM_IC_Init and HAL_TIM_IC_ConfigChannel: to use the Timer to measure an + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** external signal. + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) HAL_TIM_OnePulse_Init and HAL_TIM_OnePulse_ConfigChannel: to use the Timer + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** in One Pulse Mode. + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) HAL_TIM_Encoder_Init: to use the Timer Encoder Interface. + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) Activate the TIM peripheral using one of the start functions depending from the feature us + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) Time Base : HAL_TIM_Base_Start(), HAL_TIM_Base_Start_DMA(), HAL_TIM_Base_Start_IT() + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) Input Capture : HAL_TIM_IC_Start(), HAL_TIM_IC_Start_DMA(), HAL_TIM_IC_Start_IT() + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) Output Compare : HAL_TIM_OC_Start(), HAL_TIM_OC_Start_DMA(), HAL_TIM_OC_Start_IT() + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) PWM generation : HAL_TIM_PWM_Start(), HAL_TIM_PWM_Start_DMA(), HAL_TIM_PWM_Start_IT + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) One-pulse mode output : HAL_TIM_OnePulse_Start(), HAL_TIM_OnePulse_Start_IT() + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (++) Encoder mode output : HAL_TIM_Encoder_Start(), HAL_TIM_Encoder_Start_DMA(), HAL_TIM + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (#) The DMA Burst is managed with the two following functions: + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_DMABurst_WriteStart() + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_DMABurst_ReadStart() + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** *** Callback registration *** + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================= + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1 + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** allows the user to configure dynamically the driver callbacks. + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Use Function HAL_TIM_RegisterCallback() to register a callback. + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle, + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the Callback ID and a pointer to the user callback function. + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Use function HAL_TIM_UnRegisterCallback() to reset a callback to the default + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** weak function. + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle, + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** and the Callback ID. + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** These functions allow to register/unregister following callbacks: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Base_MspInitCallback : TIM Base Msp Init Callback. + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback. + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) IC_MspInitCallback : TIM IC Msp Init Callback. + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) IC_MspDeInitCallback : TIM IC Msp DeInit Callback. + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) OC_MspInitCallback : TIM OC Msp Init Callback. + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) OC_MspDeInitCallback : TIM OC Msp DeInit Callback. + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) PWM_MspInitCallback : TIM PWM Msp Init Callback. + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) PWM_MspDeInitCallback : TIM PWM Msp DeInit Callback. + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) OnePulse_MspInitCallback : TIM One Pulse Msp Init Callback. + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) OnePulse_MspDeInitCallback : TIM One Pulse Msp DeInit Callback. + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Encoder_MspInitCallback : TIM Encoder Msp Init Callback. + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Encoder_MspDeInitCallback : TIM Encoder Msp DeInit Callback. + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) HallSensor_MspInitCallback : TIM Hall Sensor Msp Init Callback. + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) HallSensor_MspDeInitCallback : TIM Hall Sensor Msp DeInit Callback. + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) PeriodElapsedCallback : TIM Period Elapsed Callback. + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) PeriodElapsedHalfCpltCallback : TIM Period Elapsed half complete Callback. + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) TriggerCallback : TIM Trigger Callback. + ARM GAS /tmp/ccPLZXyC.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) TriggerHalfCpltCallback : TIM Trigger half complete Callback. + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) IC_CaptureCallback : TIM Input Capture Callback. + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) IC_CaptureHalfCpltCallback : TIM Input Capture half complete Callback. + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) OC_DelayElapsedCallback : TIM Output Compare Delay Elapsed Callback. + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) PWM_PulseFinishedCallback : TIM PWM Pulse Finished Callback. + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) PWM_PulseFinishedHalfCpltCallback : TIM PWM Pulse Finished half complete Callback. + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) ErrorCallback : TIM Error Callback. + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) CommutationCallback : TIM Commutation Callback. + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) CommutationHalfCpltCallback : TIM Commutation half complete Callback. + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) BreakCallback : TIM Break Callback. + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Break2Callback : TIM Break2 Callback. + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** By default, after the Init and when the state is HAL_TIM_STATE_RESET + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** all interrupt callbacks are set to the corresponding weak functions: + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** examples HAL_TIM_TriggerCallback(), HAL_TIM_ErrorCallback(). + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Exception done for MspInit and MspDeInit functions that are reset to the legacy weak + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** functionalities in the Init / DeInit only when these callbacks are null + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** keep and use the user MspInit / MspDeInit callbacks(registered beforehand) + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only. + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Exception done MspInit / MspDeInit that can be registered / unregistered + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state, + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** thus registered(user) MspInit / DeInit callbacks can be used during the Init / DeInit. + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** In that case first register the MspInit/MspDeInit user callbacks + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** using HAL_TIM_RegisterCallback() before calling DeInit or Init function. + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** not defined, the callback registration feature is not available and all callbacks + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** are set to the corresponding weak functions. + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ****************************************************************************** + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Includes ------------------------------------------------------------------*/ + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #include "stm32f7xx_hal.h" + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @addtogroup STM32F7xx_HAL_Driver + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM TIM + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM HAL module driver + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #ifdef HAL_TIM_MODULE_ENABLED + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Private typedef -----------------------------------------------------------*/ + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Private define ------------------------------------------------------------*/ + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Private macros ------------------------------------------------------------*/ + ARM GAS /tmp/ccPLZXyC.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Private variables ---------------------------------------------------------*/ + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Private function prototypes -----------------------------------------------*/ + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @addtogroup TIM_Private_Functions + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config); + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFil + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t TIM_ICFilter); + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFil + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t TIM_ICFilter); + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t TIM_ICFilter); + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource); + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma); + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma); + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma); + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma); + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma); + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim, + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** const TIM_SlaveConfigTypeDef *sSlaveConfig); + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Exported functions --------------------------------------------------------*/ + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions TIM Exported Functions + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Time Base functions + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### Time Base functions ##### + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** This section provides functions allowing to: + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Initialize and configure the TIM base. + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) De-initialize the TIM base. + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the Time Base. + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the Time Base. + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the Time Base and enable interrupt. + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the Time Base and disable interrupt. + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the Time Base and enable DMA transfer. + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the Time Base and disable DMA transfer. + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + ARM GAS /tmp/ccPLZXyC.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM Time base Unit according to the specified + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * parameters in the TIM_HandleTypeDef and initialize the associated handle. + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * requires a timer reset to avoid unexpected direction + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * due to DIR bit readonly in center aligned mode. + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim == NULL) + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State == HAL_TIM_STATE_RESET) + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Allocate lock resource and initialize it */ + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Lock = HAL_UNLOCKED; + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset interrupt callbacks to legacy weak callbacks */ + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ResetCallback(htim); + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->Base_MspInitCallback == NULL) + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC */ + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspInitCallback(htim); + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC */ + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_Base_MspInit(htim); + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Time Base configuration */ + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_Base_SetConfig(htim->Instance, &htim->Init); + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the DMA burst operation state */ + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM channels state */ + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + ARM GAS /tmp/ccPLZXyC.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM state*/ + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes the TIM Base peripheral + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Base_DeInit(TIM_HandleTypeDef *htim) + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Peripheral Clock */ + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->Base_MspDeInitCallback == NULL) + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware */ + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspDeInitCallback(htim); + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_Base_MspDeInit(htim); + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the DMA burst operation state */ + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the TIM channels state */ + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change TIM state */ + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_RESET; + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Release Lock */ + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM Base MSP. + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim) + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_Base_MspInit could be implemented in the user file + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes TIM Base MSP. + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef *htim) + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_Base_MspDeInit could be implemented in the user file + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Base generation. + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim) + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM state */ + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State != HAL_TIM_STATE_READY) + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); + ARM GAS /tmp/ccPLZXyC.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Base generation. + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim) + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Base generation in interrupt mode. + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM state */ + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State != HAL_TIM_STATE_READY) + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Update interrupt */ + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); + ARM GAS /tmp/ccPLZXyC.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Base generation in interrupt mode. + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim) + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Update interrupt */ + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_UPDATE); + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Base generation in DMA mode. + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param pData The source Buffer address. + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Length The length of data to be transferred from memory to peripheral. + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, const uint32_t *pData, uint16_t L + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_INSTANCE(htim->Instance)); + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State == HAL_TIM_STATE_BUSY) + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_BUSY; + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (htim->State == HAL_TIM_STATE_READY) + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((pData == NULL) || (Length == 0U)) + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA Period elapsed callbacks */ + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)pData, (uint32_t)&htim->Instance->A + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Update DMA request */ + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_UPDATE); + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Base generation in DMA mode. + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim) + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_INSTANCE(htim->Instance)); + ARM GAS /tmp/ccPLZXyC.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Update DMA request */ + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_UPDATE); + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM Output Compare functions + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### TIM Output Compare functions ##### + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** This section provides functions allowing to: + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Initialize and configure the TIM Output Compare. + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) De-initialize the TIM Output Compare. + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM Output Compare. + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM Output Compare. + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM Output Compare and enable interrupt. + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM Output Compare and disable interrupt. + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM Output Compare and enable DMA transfer. + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM Output Compare and disable DMA transfer. + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM Output Compare according to the specified + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * parameters in the TIM_HandleTypeDef and initializes the associated handle. + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * requires a timer reset to avoid unexpected direction + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * due to DIR bit readonly in center aligned mode. + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * Ex: call @ref HAL_TIM_OC_DeInit() before HAL_TIM_OC_Init() + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim) + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim == NULL) + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + ARM GAS /tmp/ccPLZXyC.s page 13 + + + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State == HAL_TIM_STATE_RESET) + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Allocate lock resource and initialize it */ + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Lock = HAL_UNLOCKED; + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset interrupt callbacks to legacy weak callbacks */ + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ResetCallback(htim); + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->OC_MspInitCallback == NULL) + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC */ + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspInitCallback(htim); + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_OC_MspInit(htim); + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the base time for the Output Compare */ + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_Base_SetConfig(htim->Instance, &htim->Init); + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the DMA burst operation state */ + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM channels state */ + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM state*/ + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes the TIM peripheral + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OC_DeInit(TIM_HandleTypeDef *htim) + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + ARM GAS /tmp/ccPLZXyC.s page 14 + + + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Peripheral Clock */ + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->OC_MspDeInitCallback == NULL) + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware */ + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspDeInitCallback(htim); + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_OC_MspDeInit(htim); + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the DMA burst operation state */ + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the TIM channels state */ + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change TIM state */ + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_RESET; + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Release Lock */ + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM Output Compare MSP. + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim) + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_OC_MspInit could be implemented in the user file + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes TIM Output Compare MSP. + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef *htim) + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 15 + + + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_OC_MspDeInit could be implemented in the user file + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Output Compare signal generation. + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channel to be enabled + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_5: TIM Channel 5 selected + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_6: TIM Channel 6 selected + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel) + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM channel state */ + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Output compare channel */ + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the main output */ + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_ENABLE(htim); + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 16 + + + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Output Compare signal generation. + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channel to be disabled + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_5: TIM Channel 5 selected + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_6: TIM Channel 6 selected + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Output compare channel */ + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Main Output */ + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_DISABLE(htim); + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Output Compare signal generation in interrupt mode. + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channel to be enabled + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 17 + + + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM channel state */ + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 1 interrupt */ + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 2 interrupt */ + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 3 interrupt */ + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 4 interrupt */ + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Output compare channel */ + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 18 + + + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the main output */ + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_ENABLE(htim); + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigge + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Output Compare signal generation in interrupt mode. + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channel to be disabled + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 1 interrupt */ + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 2 interrupt */ + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 19 + + +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 3 interrupt */ +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 4 interrupt */ +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Output compare channel */ +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Main Output */ +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_DISABLE(htim); +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Output Compare signal generation in DMA mode. +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channel to be enabled +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param pData The source Buffer address. +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Length The length of data to be transferred from memory to TIM peripheral +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t *p +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint16_t Length) +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 20 + + +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_BUSY; +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((pData == NULL) || (Length == 0U)) +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance-> +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 1 DMA request */ +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 21 + + +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance-> +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 2 DMA request */ +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance-> +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 3 DMA request */ +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance-> +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 4 DMA request */ +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 22 + + +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Output compare channel */ +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the main output */ +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_ENABLE(htim); +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigge +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Output Compare signal generation in DMA mode. +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channel to be disabled +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +1227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: + ARM GAS /tmp/ccPLZXyC.s page 23 + + +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 1 DMA request */ +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 2 DMA request */ +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 3 DMA request */ +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 4 interrupt */ +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Output compare channel */ +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Main Output */ +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_DISABLE(htim); +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 24 + + +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM PWM functions +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +1296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### TIM PWM functions ##### +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** This section provides functions allowing to: +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Initialize and configure the TIM PWM. +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) De-initialize the TIM PWM. +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM PWM. +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM PWM. +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM PWM and enable interrupt. +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM PWM and disable interrupt. +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM PWM and enable DMA transfer. +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM PWM and disable DMA transfer. +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM PWM Time Base according to the specified +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * parameters in the TIM_HandleTypeDef and initializes the associated handle. +1315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * requires a timer reset to avoid unexpected direction +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * due to DIR bit readonly in center aligned mode. +1318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM PWM handle +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim == NULL) +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); +1334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State == HAL_TIM_STATE_RESET) +1338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Allocate lock resource and initialize it */ +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Lock = HAL_UNLOCKED; +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + ARM GAS /tmp/ccPLZXyC.s page 25 + + +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset interrupt callbacks to legacy weak callbacks */ +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ResetCallback(htim); +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->PWM_MspInitCallback == NULL) +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC */ +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspInitCallback(htim); +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_MspInit(htim); +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the base time for the PWM */ +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_Base_SetConfig(htim->Instance, &htim->Init); +1363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the DMA burst operation state */ +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_READY; +1366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM channels state */ +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); +1370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM state*/ +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +1373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes the TIM peripheral +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM PWM handle +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_PWM_DeInit(TIM_HandleTypeDef *htim) +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); +1386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Peripheral Clock */ +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->PWM_MspDeInitCallback == NULL) +1394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware */ +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspDeInitCallback(htim); +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else + ARM GAS /tmp/ccPLZXyC.s page 26 + + +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_MspDeInit(htim); +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the DMA burst operation state */ +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the TIM channels state */ +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); +1410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change TIM state */ +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_RESET; +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Release Lock */ +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM PWM MSP. +1422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM PWM handle +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +1431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_PWM_MspInit could be implemented in the user file +1432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes TIM PWM MSP. +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM PWM handle +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef *htim) +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +1446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_PWM_MspDeInit could be implemented in the user file +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the PWM signal generation. +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be enabled +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +1455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + ARM GAS /tmp/ccPLZXyC.s page 27 + + +1457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_5: TIM Channel 5 selected +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_6: TIM Channel 6 selected +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM channel state */ +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Capture compare channel */ +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); +1481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the main output */ +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_ENABLE(htim); +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the PWM signal generation. +1508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM PWM handle +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be disabled +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +1511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected + ARM GAS /tmp/ccPLZXyC.s page 28 + + +1514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_5: TIM Channel 5 selected +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_6: TIM Channel 6 selected +1517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +1520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Capture compare channel */ +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); +1526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Main Output */ +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_DISABLE(htim); +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +1538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +1541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the PWM signal generation in interrupt mode. +1545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM PWM handle +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channel to be enabled +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +1552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_PWM_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +1555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; +1558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +1561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM channel state */ +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) +1564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 29 + + +1571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 1 interrupt */ +1576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); +1577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 2 interrupt */ +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 3 interrupt */ +1590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +1595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 4 interrupt */ +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +1602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +1603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +1607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Capture compare channel */ +1609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); +1610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +1612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the main output */ +1614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_ENABLE(htim); +1615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigge +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +1619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) +1622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 30 + + +1628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +1629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +1634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the PWM signal generation in interrupt mode. +1638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM PWM handle +1639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be disabled +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +1641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +1645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_PWM_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +1648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +1653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +1655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +1657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 1 interrupt */ +1659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); +1660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 2 interrupt */ +1666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); +1667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 3 interrupt */ +1673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); +1674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +1678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 4 interrupt */ +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); +1681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: + ARM GAS /tmp/ccPLZXyC.s page 31 + + +1685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +1690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Capture compare channel */ +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); +1693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +1695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Main Output */ +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_DISABLE(htim); +1698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM PWM signal generation in DMA mode. +1713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM PWM handle +1714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be enabled +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param pData The source Buffer address. +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Length The length of data to be transferred from memory to TIM peripheral +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t * +1725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint16_t Length) +1726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; +1729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_BUSY; +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (TIM_CHANNEL_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) +1739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((pData == NULL) || (Length == 0U)) +1741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 32 + + +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +1745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +1747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +1755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +1757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +1759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; +1760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +1761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +1763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; +1764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance-> +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +1768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +1770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 1 DMA request */ +1774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); +1775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +1779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +1781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; +1782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +1783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +1785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; +1786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +1788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance-> +1789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +1790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +1792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 2 DMA request */ +1795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); +1796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 33 + + +1799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +1800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; +1803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +1804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +1809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance-> +1810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +1811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +1813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Output Capture/Compare 3 request */ +1816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +1821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; +1824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +1825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +1827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; +1828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +1830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)pData, (uint32_t)&htim->Instance-> +1831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +1832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +1834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 4 DMA request */ +1837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +1842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +1843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +1847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Capture compare channel */ +1849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); +1850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +1852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the main output */ +1854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_ENABLE(htim); +1855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 34 + + +1856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigge +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; +1861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) +1862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +1864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +1867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +1869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +1873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +1874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM PWM signal generation in DMA mode. +1878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM PWM handle +1879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be disabled +1880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +1881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +1885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +1888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +1890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +1893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +1895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +1897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 1 DMA request */ +1899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); +1900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); +1901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +1905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 2 DMA request */ +1907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); +1908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); +1909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: + ARM GAS /tmp/ccPLZXyC.s page 35 + + +1913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 3 DMA request */ +1915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); +1916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); +1917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +1921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 4 interrupt */ +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); +1924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +1929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +1930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +1931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +1934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Capture compare channel */ +1936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); +1937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +1939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Main Output */ +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_DISABLE(htim); +1942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +1946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +1949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +1952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +1953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} +1957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions +1960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM Input Capture functions +1961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * +1962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim +1963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### TIM Input Capture functions ##### +1965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +1966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] +1967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** This section provides functions allowing to: +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Initialize and configure the TIM Input Capture. +1969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) De-initialize the TIM Input Capture. + ARM GAS /tmp/ccPLZXyC.s page 36 + + +1970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM Input Capture. +1971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM Input Capture. +1972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM Input Capture and enable interrupt. +1973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM Input Capture and disable interrupt. +1974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM Input Capture and enable DMA transfer. +1975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM Input Capture and disable DMA transfer. +1976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim +1978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ +1979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +1981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM Input Capture Time base according to the specified +1982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * parameters in the TIM_HandleTypeDef and initializes the associated handle. +1983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) +1984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * requires a timer reset to avoid unexpected direction +1985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * due to DIR bit readonly in center aligned mode. +1986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * Ex: call @ref HAL_TIM_IC_DeInit() before HAL_TIM_IC_Init() +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Input Capture handle +1988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +1990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_IC_Init(TIM_HandleTypeDef *htim) +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim == NULL) +1994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +1996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +1998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); +2000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); +2002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); +2003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State == HAL_TIM_STATE_RESET) +2006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Allocate lock resource and initialize it */ +2008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Lock = HAL_UNLOCKED; +2009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +2011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset interrupt callbacks to legacy weak callbacks */ +2012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ResetCallback(htim); +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->IC_MspInitCallback == NULL) +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC */ +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspInitCallback(htim); +2020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +2021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ +2022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_IC_MspInit(htim); +2023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +2024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ + ARM GAS /tmp/ccPLZXyC.s page 37 + + +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +2028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the base time for the input capture */ +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_Base_SetConfig(htim->Instance, &htim->Init); +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the DMA burst operation state */ +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_READY; +2034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM channels state */ +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); +2038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM state*/ +2040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +2041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +2043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes the TIM peripheral +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Input Capture handle +2048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_IC_DeInit(TIM_HandleTypeDef *htim) +2051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); +2054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Peripheral Clock */ +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +2061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->IC_MspDeInitCallback == NULL) +2062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; +2064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware */ +2066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspDeInitCallback(htim); +2067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +2068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC and DMA */ +2069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_IC_MspDeInit(htim); +2070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the DMA burst operation state */ +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; +2074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the TIM channels state */ +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); +2078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change TIM state */ +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_RESET; +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Release Lock */ +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); + ARM GAS /tmp/ccPLZXyC.s page 38 + + +2084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +2086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM Input Capture MSP. +2090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Input Capture handle +2091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +2092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim) +2094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +2096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +2097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +2099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_IC_MspInit could be implemented in the user file +2100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes TIM Input Capture MSP. +2105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +2106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +2107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef *htim) +2109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +2111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +2112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +2114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_IC_MspDeInit could be implemented in the user file +2115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Input Capture measurement. +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Input Capture handle +2121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be enabled +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +2123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +2124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +2125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +2126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +2127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_IC_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +2130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); +2134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +2136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +2137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM channel state */ +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_state != HAL_TIM_CHANNEL_STATE_READY) +2140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY)) + ARM GAS /tmp/ccPLZXyC.s page 39 + + +2141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +2148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Input Capture channel */ +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); +2151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +2154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; +2156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) +2157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +2159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +2164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +2168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Input Capture measurement. +2172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Input Capture handle +2173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be disabled +2174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +2175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +2176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +2177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +2178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +2179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_IC_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +2182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +2184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +2185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Input Capture channel */ +2187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); +2188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +2190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +2191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +2195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +2197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + ARM GAS /tmp/ccPLZXyC.s page 40 + + +2198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Input Capture measurement in interrupt mode. +2202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Input Capture handle +2203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be enabled +2204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +2205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +2206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +2207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +2208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +2209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +2212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +2214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; +2215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); +2218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +2220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +2221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM channel state */ +2223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_state != HAL_TIM_CHANNEL_STATE_READY) +2224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY)) +2225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +2232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +2234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +2236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 1 interrupt */ +2238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); +2239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +2243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 2 interrupt */ +2245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +2250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 3 interrupt */ +2252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); +2253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 41 + + +2255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +2257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 4 interrupt */ +2259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC4); +2260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +2264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +2265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +2269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Input Capture channel */ +2271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); +2272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigge +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +2275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; +2277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) +2278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +2280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +2283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +2285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +2289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Input Capture measurement in interrupt mode. +2294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Input Capture handle +2295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be disabled +2296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +2297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +2298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +2299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +2300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +2301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_IC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +2304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +2306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +2308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +2309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 42 + + +2312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +2313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 1 interrupt */ +2315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); +2316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +2320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 2 interrupt */ +2322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); +2323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +2327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 3 interrupt */ +2329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); +2330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +2334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 4 interrupt */ +2336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC4); +2337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +2341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +2342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +2346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Input Capture channel */ +2348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); +2349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +2352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +2356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +2359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +2360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Input Capture measurement in DMA mode. +2364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Input Capture handle +2365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be enabled +2366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +2367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +2368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + ARM GAS /tmp/ccPLZXyC.s page 43 + + +2369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +2370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +2371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param pData The destination Buffer address. +2372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Length The length of data to be transferred from TIM peripheral to memory. +2373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, +2376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +2378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; +2379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); +2382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +2384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); +2385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance)); +2386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +2388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_state == HAL_TIM_CHANNEL_STATE_BUSY) +2389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_state == HAL_TIM_CHANNEL_STATE_BUSY)) +2390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_BUSY; +2392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if ((channel_state == HAL_TIM_CHANNEL_STATE_READY) +2394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_state == HAL_TIM_CHANNEL_STATE_READY)) +2395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((pData == NULL) || (Length == 0U)) +2397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +2401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +2404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +2407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Input Capture channel */ +2412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); +2413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +2415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +2417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +2419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; +2420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +2421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +2423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; +2424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ + ARM GAS /tmp/ccPLZXyC.s page 44 + + +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)p +2427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +2428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +2430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 1 DMA request */ +2433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); +2434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +2438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +2440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; +2441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +2442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +2444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; +2445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +2447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)p +2448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +2449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +2451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 2 DMA request */ +2454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); +2455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +2459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +2461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt; +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +2463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +2465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; +2466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +2468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->CCR3, (uint32_t)p +2469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +2470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +2472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 3 DMA request */ +2475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); +2476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +2480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +2482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt; + ARM GAS /tmp/ccPLZXyC.s page 45 + + +2483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +2484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +2486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; +2487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +2489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->CCR4, (uint32_t)p +2490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +2491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +2493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 4 DMA request */ +2496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC4); +2497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +2501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +2502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +2507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) +2510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +2512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +2515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +2517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +2520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +2521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Input Capture measurement in DMA mode. +2525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Input Capture handle +2526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be disabled +2527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +2528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +2529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +2530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +2531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +2532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +2535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +2537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +2539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_CHANNEL(htim->Instance, Channel)); + ARM GAS /tmp/ccPLZXyC.s page 46 + + +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance)); +2541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Input Capture channel */ +2543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_DISABLE); +2544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +2546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +2548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 1 DMA request */ +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); +2551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +2556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 2 DMA request */ +2558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); +2559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); +2560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +2564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 3 DMA request */ +2566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); +2567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); +2568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +2572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 4 DMA request */ +2574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC4); +2575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); +2576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +2580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +2581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +2582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +2585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +2587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +2588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +2592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +2595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +2596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 47 + + +2597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} +2599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions +2602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM One Pulse functions +2603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * +2604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim +2605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +2606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### TIM One Pulse functions ##### +2607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +2608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] +2609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** This section provides functions allowing to: +2610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Initialize and configure the TIM One Pulse. +2611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) De-initialize the TIM One Pulse. +2612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM One Pulse. +2613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM One Pulse. +2614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM One Pulse and enable interrupt. +2615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM One Pulse and disable interrupt. +2616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM One Pulse and enable DMA transfer. +2617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM One Pulse and disable DMA transfer. +2618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim +2620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ +2621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM One Pulse Time Base according to the specified +2624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * parameters in the TIM_HandleTypeDef and initializes the associated handle. +2625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) +2626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * requires a timer reset to avoid unexpected direction +2627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * due to DIR bit readonly in center aligned mode. +2628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * Ex: call @ref HAL_TIM_OnePulse_DeInit() before HAL_TIM_OnePulse_Init() +2629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note When the timer instance is initialized in One Pulse mode, timer +2630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * channels 1 and channel 2 are reserved and cannot be used for other +2631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * purpose. +2632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM One Pulse handle +2633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OnePulseMode Select the One pulse mode. +2634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +2635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_OPMODE_SINGLE: Only one pulse will be generated. +2636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_OPMODE_REPETITIVE: Repetitive pulses will be generated. +2637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OnePulse_Init(TIM_HandleTypeDef *htim, uint32_t OnePulseMode) +2640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ +2642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim == NULL) +2643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +2648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); +2649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); +2650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); +2651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OPM_MODE(OnePulseMode)); +2652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); +2653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + ARM GAS /tmp/ccPLZXyC.s page 48 + + +2654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State == HAL_TIM_STATE_RESET) +2656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Allocate lock resource and initialize it */ +2658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Lock = HAL_UNLOCKED; +2659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +2661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset interrupt callbacks to legacy weak callbacks */ +2662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ResetCallback(htim); +2663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->OnePulse_MspInitCallback == NULL) +2665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; +2667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC */ +2669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspInitCallback(htim); +2670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +2671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_OnePulse_MspInit(htim); +2673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +2674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +2678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Time base in the One Pulse Mode */ +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_Base_SetConfig(htim->Instance, &htim->Init); +2681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the OPM Bit */ +2683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CR1 &= ~TIM_CR1_OPM; +2684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the OPM Mode */ +2686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CR1 |= OnePulseMode; +2687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the DMA burst operation state */ +2689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_READY; +2690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM channels state */ +2692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +2693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +2694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +2695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +2696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM state*/ +2698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +2699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +2701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes the TIM One Pulse +2705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM One Pulse handle +2706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OnePulse_DeInit(TIM_HandleTypeDef *htim) +2709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + ARM GAS /tmp/ccPLZXyC.s page 49 + + +2711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); +2712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +2714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Peripheral Clock */ +2716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +2717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +2719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->OnePulse_MspDeInitCallback == NULL) +2720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; +2722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware */ +2724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspDeInitCallback(htim); +2725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +2726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ +2727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_OnePulse_MspDeInit(htim); +2728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +2729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the DMA burst operation state */ +2731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; +2732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel state */ +2734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); +2735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); +2736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); +2737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); +2738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change TIM state */ +2740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_RESET; +2741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Release Lock */ +2743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +2744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +2746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM One Pulse MSP. +2750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM One Pulse handle +2751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +2752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_OnePulse_MspInit(TIM_HandleTypeDef *htim) +2754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +2756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +2757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +2759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_OnePulse_MspInit could be implemented in the user file +2760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes TIM One Pulse MSP. +2765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM One Pulse handle +2766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +2767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + ARM GAS /tmp/ccPLZXyC.s page 50 + + +2768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_OnePulse_MspDeInit(TIM_HandleTypeDef *htim) +2769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +2771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +2772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +2774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_OnePulse_MspDeInit could be implemented in the user file +2775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM One Pulse signal generation. +2780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Though OutputChannel parameter is deprecated and ignored by the function +2781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * it has been kept to avoid HAL_TIM API compatibility break. +2782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note The pulse output channel is determined when calling +2783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @ref HAL_TIM_OnePulse_ConfigChannel(). +2784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM One Pulse handle +2785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OutputChannel See note above +2786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OnePulse_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +2789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); +2791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); +2792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +2793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +2794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +2796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(OutputChannel); +2797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM channels state */ +2799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +2800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) +2801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +2802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) +2803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channels state */ +2808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +2809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +2810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +2811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +2812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Capture compare and the Input Capture channels +2814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2 +2815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and +2816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output +2817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together +2818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** No need to enable the counter, it's enabled automatically by hardware +2820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (the counter starts in response to a stimulus and generate a pulse */ +2821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); +2823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); +2824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 51 + + +2825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +2826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the main output */ +2828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_ENABLE(htim); +2829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +2832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +2833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM One Pulse signal generation. +2837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Though OutputChannel parameter is deprecated and ignored by the function +2838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * it has been kept to avoid HAL_TIM API compatibility break. +2839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note The pulse output channel is determined when calling +2840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @ref HAL_TIM_OnePulse_ConfigChannel(). +2841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM One Pulse handle +2842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OutputChannel See note above +2843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OnePulse_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +2846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +2848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(OutputChannel); +2849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Capture compare and the Input Capture channels +2851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) +2852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and +2853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output +2854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */ +2855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); +2857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); +2858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +2860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Main Output */ +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_DISABLE(htim); +2863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +2867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channels state */ +2869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +2870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +2871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +2872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +2873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +2875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +2876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM One Pulse signal generation in interrupt mode. +2880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Though OutputChannel parameter is deprecated and ignored by the function +2881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * it has been kept to avoid HAL_TIM API compatibility break. + ARM GAS /tmp/ccPLZXyC.s page 52 + + +2882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note The pulse output channel is determined when calling +2883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @ref HAL_TIM_OnePulse_ConfigChannel(). +2884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM One Pulse handle +2885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OutputChannel See note above +2886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OnePulse_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +2889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); +2891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); +2892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +2893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +2894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +2896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(OutputChannel); +2897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM channels state */ +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +2900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) +2901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +2902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) +2903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +2905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channels state */ +2908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +2909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +2910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +2911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +2912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Capture compare and the Input Capture channels +2914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2 +2915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and +2916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output +2917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be enabled together +2918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** No need to enable the counter, it's enabled automatically by hardware +2920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (the counter starts in response to a stimulus and generate a pulse */ +2921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 1 interrupt */ +2923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); +2924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Capture/Compare 2 interrupt */ +2926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); +2927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); +2929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); +2930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +2932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the main output */ +2934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_ENABLE(htim); +2935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +2938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; + ARM GAS /tmp/ccPLZXyC.s page 53 + + +2939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM One Pulse signal generation in interrupt mode. +2943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Though OutputChannel parameter is deprecated and ignored by the function +2944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * it has been kept to avoid HAL_TIM API compatibility break. +2945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note The pulse output channel is determined when calling +2946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @ref HAL_TIM_OnePulse_ConfigChannel(). +2947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM One Pulse handle +2948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OutputChannel See note above +2949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +2950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +2952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +2954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(OutputChannel); +2955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 1 interrupt */ +2957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); +2958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Capture/Compare 2 interrupt */ +2960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); +2961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Capture compare and the Input Capture channels +2963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (in the OPM Mode the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) +2964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if TIM_CHANNEL_1 is used as output, the TIM_CHANNEL_2 will be used as input and +2965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if TIM_CHANNEL_1 is used as input, the TIM_CHANNEL_2 will be used as output +2966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** whatever the combination, the TIM_CHANNEL_1 and TIM_CHANNEL_2 should be disabled together */ +2967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); +2968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); +2969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) +2971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +2972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Main Output */ +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_MOE_DISABLE(htim); +2974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +2977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +2978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channels state */ +2980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +2981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +2982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +2983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +2984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +2986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +2987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +2988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +2990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} +2991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +2992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +2993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions +2994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM Encoder functions +2995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * + ARM GAS /tmp/ccPLZXyC.s page 54 + + +2996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim +2997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +2998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### TIM Encoder functions ##### +2999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +3000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] +3001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** This section provides functions allowing to: +3002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Initialize and configure the TIM Encoder. +3003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) De-initialize the TIM Encoder. +3004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM Encoder. +3005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM Encoder. +3006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM Encoder and enable interrupt. +3007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM Encoder and disable interrupt. +3008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Start the TIM Encoder and enable DMA transfer. +3009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Stop the TIM Encoder and disable DMA transfer. +3010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim +3012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ +3013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM Encoder Interface and initialize the associated handle. +3016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) +3017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * requires a timer reset to avoid unexpected direction +3018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * due to DIR bit readonly in center aligned mode. +3019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * Ex: call @ref HAL_TIM_Encoder_DeInit() before HAL_TIM_Encoder_Init() +3020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Encoder mode and External clock mode 2 are not compatible and must not be selected toge +3021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * Ex: A call for @ref HAL_TIM_Encoder_Init will erase the settings of @ref HAL_TIM_Config +3022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * using TIM_CLOCKSOURCE_ETRMODE2 and vice versa +3023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note When the timer instance is initialized in Encoder mode, timer +3024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * channels 1 and channel 2 are reserved and cannot be used for other +3025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * purpose. +3026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +3027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param sConfig TIM Encoder Interface configuration structure +3028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +3029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, const TIM_Encoder_InitTypeDef *sCon +3031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; +3033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr1; +3034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; +3035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ +3037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim == NULL) +3038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +3043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); +3044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); +3045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); +3046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); +3047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode)); +3048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection)); +3049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection)); +3050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC1Polarity)); +3051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC2Polarity)); +3052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler)); + ARM GAS /tmp/ccPLZXyC.s page 55 + + +3053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler)); +3054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter)); +3055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter)); +3056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); +3057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State == HAL_TIM_STATE_RESET) +3059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Allocate lock resource and initialize it */ +3061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Lock = HAL_UNLOCKED; +3062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset interrupt callbacks to legacy weak callbacks */ +3065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ResetCallback(htim); +3066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->Encoder_MspInitCallback == NULL) +3068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; +3070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC */ +3072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspInitCallback(htim); +3073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ +3075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_Encoder_MspInit(htim); +3076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM state */ +3080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +3081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the SMS and ECE bits */ +3083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR &= ~(TIM_SMCR_SMS | TIM_SMCR_ECE); +3084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Time base in the Encoder Mode */ +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_Base_SetConfig(htim->Instance, &htim->Init); +3087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx SMCR register value */ +3089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR; +3090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCMR1 register value */ +3092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 = htim->Instance->CCMR1; +3093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCER register value */ +3095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = htim->Instance->CCER; +3096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the encoder Mode */ +3098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr |= sConfig->EncoderMode; +3099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Capture Compare 1 and the Capture Compare 2 as input */ +3101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~(TIM_CCMR1_CC1S | TIM_CCMR1_CC2S); +3102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8U)); +3103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Capture Compare 1 and the Capture Compare 2 prescalers and filters */ +3105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~(TIM_CCMR1_IC1PSC | TIM_CCMR1_IC2PSC); +3106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F); +3107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8U); +3108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U); +3109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 56 + + +3110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TI1 and the TI2 Polarities */ +3111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P); +3112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP); +3113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4U); +3114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx SMCR */ +3116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR = tmpsmcr; +3117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR1 */ +3119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 = tmpccmr1; +3120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCER */ +3122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCER = tmpccer; +3123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the DMA burst operation state */ +3125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_READY; +3126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channels state */ +3128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +3129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +3130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +3131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +3132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Initialize the TIM state*/ +3134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +3135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +3137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes the TIM Encoder interface +3142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +3143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +3144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Encoder_DeInit(TIM_HandleTypeDef *htim) +3146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +3148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); +3149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +3151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Peripheral Clock */ +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +3154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->Encoder_MspDeInitCallback == NULL) +3157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; +3159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware */ +3161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspDeInitCallback(htim); +3162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ +3164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_Encoder_MspDeInit(htim); +3165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 57 + + +3167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the DMA burst operation state */ +3168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; +3169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channels state */ +3171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); +3172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); +3173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); +3174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); +3175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change TIM state */ +3177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_RESET; +3178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Release Lock */ +3180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +3181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +3183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM Encoder Interface MSP. +3187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +3188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +3189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim) +3191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +3193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +3194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +3196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_Encoder_MspInit could be implemented in the user file +3197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief DeInitializes TIM Encoder Interface MSP. +3202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +3203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +3204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim) +3206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +3208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +3209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +3211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_Encoder_MspDeInit could be implemented in the user file +3212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Encoder Interface. +3217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +3218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be enabled +3219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +3220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +3221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +3222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected +3223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status + ARM GAS /tmp/ccPLZXyC.s page 58 + + +3224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +3226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); +3228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); +3229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +3230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +3231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +3233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); +3234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel(s) state */ +3236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (Channel == TIM_CHANNEL_1) +3237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +3239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)) +3240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (Channel == TIM_CHANNEL_2) +3250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_2_state != HAL_TIM_CHANNEL_STATE_READY) +3252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) +3253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +3265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) +3266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +3267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) +3268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the encoder interface channels */ + ARM GAS /tmp/ccPLZXyC.s page 59 + + +3281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +3282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +3284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); +3286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +3290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); +3292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default : +3296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); +3298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); +3299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral */ +3303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +3304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +3306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +3307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Encoder Interface. +3311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +3312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be disabled +3313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +3314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +3315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +3316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected +3317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +3318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +3320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +3322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); +3323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Input Capture channels 1 and 2 +3325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_C +3326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +3327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +3329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); +3331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +3335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); +3337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + ARM GAS /tmp/ccPLZXyC.s page 60 + + +3338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default : +3341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); +3343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); +3344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +3349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +3350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel(s) state */ +3352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) +3353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +3355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +3356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +3360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +3361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +3362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +3363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +3366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +3367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Encoder Interface in interrupt mode. +3371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +3372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be enabled +3373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +3374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +3375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +3376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected +3377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +3378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +3380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); +3382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); +3383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +3384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +3385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +3387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); +3388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel(s) state */ +3390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (Channel == TIM_CHANNEL_1) +3391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +3393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)) +3394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 61 + + +3395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (Channel == TIM_CHANNEL_2) +3404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_2_state != HAL_TIM_CHANNEL_STATE_READY) +3406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) +3407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +3419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) +3420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +3421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) +3422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the encoder interface channels */ +3435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the capture compare Interrupts 1 and/or 2 */ +3436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +3437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +3439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); +3441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); +3442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +3446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); +3448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); +3449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 62 + + +3452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default : +3453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); +3455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); +3456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); +3457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); +3458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral */ +3463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +3464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +3466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +3467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Encoder Interface in interrupt mode. +3471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +3472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be disabled +3473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +3474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +3475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +3476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected +3477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +3478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +3480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +3482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); +3483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Input Capture channels 1 and 2 +3485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_C +3486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (Channel == TIM_CHANNEL_1) +3487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); +3489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the capture compare Interrupts 1 */ +3491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); +3492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (Channel == TIM_CHANNEL_2) +3494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); +3496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the capture compare Interrupts 2 */ +3498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); +3499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); +3503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); +3504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the capture compare Interrupts 1 and 2 */ +3506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); +3507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); +3508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 63 + + +3509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +3511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); +3512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel(s) state */ +3514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) +3515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +3518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +3522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +3523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +3524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +3525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +3528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +3529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Starts the TIM Encoder Interface in DMA mode. +3533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +3534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be enabled +3535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +3536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +3537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +3538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected +3539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param pData1 The destination Buffer address for IC1. +3540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param pData2 The destination Buffer address for IC2. +3541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Length The length of data to be transferred from TIM peripheral to memory. +3542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +3543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pD +3545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t *pData2, uint16_t Length) +3546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); +3548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); +3549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +3550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +3551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +3553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); +3554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel(s) state */ +3556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (Channel == TIM_CHANNEL_1) +3557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) +3559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)) +3560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_BUSY; +3562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY) +3564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)) +3565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 64 + + +3566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((pData1 == NULL) || (Length == 0U)) +3567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (Channel == TIM_CHANNEL_2) +3582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY) +3584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)) +3585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_BUSY; +3587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if ((channel_2_state == HAL_TIM_CHANNEL_STATE_READY) +3589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY)) +3590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((pData2 == NULL) || (Length == 0U)) +3592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) +3609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY) +3610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) +3611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)) +3612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_BUSY; +3614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY) +3616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (channel_2_state == HAL_TIM_CHANNEL_STATE_READY) +3617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY) +3618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY)) +3619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((((pData1 == NULL) || (pData2 == NULL))) || (Length == 0U)) +3621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + ARM GAS /tmp/ccPLZXyC.s page 65 + + +3623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +3629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +3630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +3639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +3641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +3643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; +3644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +3645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +3647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; +3648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +3650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)p +3651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +3652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +3654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Input Capture DMA request */ +3657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); +3658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Capture compare channel */ +3660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); +3661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral */ +3663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +3664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +3669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +3671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; +3672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +3673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +3675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError; +3676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +3677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)p +3678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +3679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 66 + + +3680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +3681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Input Capture DMA request */ +3684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); +3685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Capture compare channel */ +3687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); +3688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral */ +3690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +3691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +3696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +3698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; +3699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +3700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +3702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; +3703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +3705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)p +3706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +3707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +3709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +3713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; +3714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +3715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +3717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; +3718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +3720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->CCR2, (uint32_t)p +3721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) +3722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +3724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +3725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Input Capture DMA request */ +3728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); +3729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Input Capture DMA request */ +3730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); +3731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Capture compare channel */ +3733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); +3734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); +3735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the Peripheral */ + ARM GAS /tmp/ccPLZXyC.s page 67 + + +3737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE(htim); +3738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +3740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +3744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +3745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM Encoder Interface in DMA mode. +3749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +3750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be enabled +3751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +3752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +3753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +3754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_ALL: TIM Channel 1 and TIM Channel 2 are selected +3755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +3756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +3758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +3760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance)); +3761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Input Capture channels 1 and 2 +3763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_C +3764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (Channel == TIM_CHANNEL_1) +3765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); +3767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the capture compare DMA Request 1 */ +3769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); +3770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); +3771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (Channel == TIM_CHANNEL_2) +3773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); +3775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the capture compare DMA Request 2 */ +3777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); +3778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); +3779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); +3783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); +3784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the capture compare DMA Request 1 and 2 */ +3786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); +3787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); +3788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); +3789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); +3790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Peripheral */ +3793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE(htim); + ARM GAS /tmp/ccPLZXyC.s page 68 + + +3794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TIM channel(s) state */ +3796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((Channel == TIM_CHANNEL_1) || (Channel == TIM_CHANNEL_2)) +3797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +3799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +3800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +3804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +3805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +3806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +3807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +3810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +3811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} +3815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management +3817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM IRQ handler management +3818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * +3819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim +3820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +3821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### IRQ handler management ##### +3822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +3823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] +3824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** This section provides Timer IRQ handler function. +3825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim +3827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ +3828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +3830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief This function handles TIM interrupts requests. +3831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +3832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +3833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +3834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) +3835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t itsource = htim->Instance->DIER; +3837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t itflag = htim->Instance->SR; +3838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Capture compare 1 event */ +3840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itflag & (TIM_FLAG_CC1)) == (TIM_FLAG_CC1)) +3841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itsource & (TIM_IT_CC1)) == (TIM_IT_CC1)) +3843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC1); +3846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; +3847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +3848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Input capture event */ +3849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) +3850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 69 + + +3851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_CaptureCallback(htim); +3853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_IC_CaptureCallback(htim); +3855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Output compare event */ +3858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_DelayElapsedCallback(htim); +3862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_PulseFinishedCallback(htim); +3863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_OC_DelayElapsedCallback(htim); +3865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_PulseFinishedCallback(htim); +3866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +3869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Capture compare 2 event */ +3873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itflag & (TIM_FLAG_CC2)) == (TIM_FLAG_CC2)) +3874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itsource & (TIM_IT_CC2)) == (TIM_IT_CC2)) +3876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC2); +3878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; +3879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Input capture event */ +3880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) +3881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_CaptureCallback(htim); +3884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_IC_CaptureCallback(htim); +3886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Output compare event */ +3889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_DelayElapsedCallback(htim); +3893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_PulseFinishedCallback(htim); +3894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_OC_DelayElapsedCallback(htim); +3896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_PulseFinishedCallback(htim); +3897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +3900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Capture compare 3 event */ +3903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itflag & (TIM_FLAG_CC3)) == (TIM_FLAG_CC3)) +3904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itsource & (TIM_IT_CC3)) == (TIM_IT_CC3)) +3906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC3); + ARM GAS /tmp/ccPLZXyC.s page 70 + + +3908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; +3909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Input capture event */ +3910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) +3911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_CaptureCallback(htim); +3914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_IC_CaptureCallback(htim); +3916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Output compare event */ +3919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_DelayElapsedCallback(htim); +3923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_PulseFinishedCallback(htim); +3924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_OC_DelayElapsedCallback(htim); +3926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_PulseFinishedCallback(htim); +3927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +3930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Capture compare 4 event */ +3933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itflag & (TIM_FLAG_CC4)) == (TIM_FLAG_CC4)) +3934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itsource & (TIM_IT_CC4)) == (TIM_IT_CC4)) +3936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_CC4); +3938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; +3939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Input capture event */ +3940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) +3941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_CaptureCallback(htim); +3944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_IC_CaptureCallback(htim); +3946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Output compare event */ +3949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +3950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_DelayElapsedCallback(htim); +3953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_PulseFinishedCallback(htim); +3954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_OC_DelayElapsedCallback(htim); +3956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_PulseFinishedCallback(htim); +3957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +3960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* TIM Update event */ +3963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itflag & (TIM_FLAG_UPDATE)) == (TIM_FLAG_UPDATE)) +3964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 71 + + +3965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itsource & (TIM_IT_UPDATE)) == (TIM_IT_UPDATE)) +3966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_UPDATE); +3968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PeriodElapsedCallback(htim); +3970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PeriodElapsedCallback(htim); +3972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* TIM Break input event */ +3976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (((itflag & (TIM_FLAG_BREAK)) == (TIM_FLAG_BREAK)) || \ +3977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ((itflag & (TIM_FLAG_SYSTEM_BREAK)) == (TIM_FLAG_SYSTEM_BREAK))) +3978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK)) +3980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK | TIM_FLAG_SYSTEM_BREAK); +3982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->BreakCallback(htim); +3984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIMEx_BreakCallback(htim); +3986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +3987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +3989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* TIM Break2 input event */ +3990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itflag & (TIM_FLAG_BREAK2)) == (TIM_FLAG_BREAK2)) +3991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itsource & (TIM_IT_BREAK)) == (TIM_IT_BREAK)) +3993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +3994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2); +3995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +3996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Break2Callback(htim); +3997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +3998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIMEx_Break2Callback(htim); +3999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +4000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* TIM Trigger detection event */ +4003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itflag & (TIM_FLAG_TRIGGER)) == (TIM_FLAG_TRIGGER)) +4004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itsource & (TIM_IT_TRIGGER)) == (TIM_IT_TRIGGER)) +4006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_TRIGGER); +4008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +4009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->TriggerCallback(htim); +4010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +4011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_TriggerCallback(htim); +4012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +4013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* TIM commutation event */ +4016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itflag & (TIM_FLAG_COM)) == (TIM_FLAG_COM)) +4017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((itsource & (TIM_IT_COM)) == (TIM_IT_COM)) +4019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_COM); +4021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + ARM GAS /tmp/ccPLZXyC.s page 72 + + +4022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->CommutationCallback(htim); +4023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +4024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIMEx_CommutCallback(htim); +4025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +4026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +4031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} +4032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions +4035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM Peripheral Control functions +4036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * +4037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim +4038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +4039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### Peripheral Control functions ##### +4040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +4041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] +4042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** This section provides functions allowing to: +4043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Configure The Input Output channels for OC, PWM, IC or One Pulse mode. +4044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Configure External Clock source. +4045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Configure Complementary channels, break features and dead time. +4046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Configure Master and the Slave synchronization. +4047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) Configure the DMA Burst Mode. +4048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim +4050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ +4051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +4054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM Output Compare Channels according to the specified +4055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * parameters in the TIM_OC_InitTypeDef. +4056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle +4057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param sConfig TIM Output Compare configuration structure +4058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to configure +4059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +4061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +4062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +4063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +4064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_5: TIM Channel 5 selected +4065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_6: TIM Channel 6 selected +4066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +4067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, +4069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** const TIM_OC_InitTypeDef *sConfig, +4070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t Channel) +4071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +4073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CHANNELS(Channel)); +4076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OC_MODE(sConfig->OCMode)); +4077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); +4078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 73 + + +4079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Process Locked */ +4080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_LOCK(htim); +4081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +4083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +4085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); +4088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the TIM Channel 1 in Output Compare */ +4090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC1_SetConfig(htim->Instance, sConfig); +4091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +4095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); +4098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the TIM Channel 2 in Output Compare */ +4100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC2_SetConfig(htim->Instance, sConfig); +4101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +4105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); +4108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the TIM Channel 3 in Output Compare */ +4110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC3_SetConfig(htim->Instance, sConfig); +4111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +4115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); +4118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the TIM Channel 4 in Output Compare */ +4120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC4_SetConfig(htim->Instance, sConfig); +4121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_5: +4125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC5_INSTANCE(htim->Instance)); +4128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the TIM Channel 5 in Output Compare */ +4130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC5_SetConfig(htim->Instance, sConfig); +4131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_6: +4135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 74 + + +4136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC6_INSTANCE(htim->Instance)); +4138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the TIM Channel 6 in Output Compare */ +4140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC6_SetConfig(htim->Instance, sConfig); +4141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +4145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +4146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +4150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +4152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +4155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM Input Capture Channels according to the specified +4156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * parameters in the TIM_IC_InitTypeDef. +4157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM IC handle +4158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param sConfig TIM Input Capture configuration structure +4159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channel to configure +4160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +4162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +4163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +4164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +4165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +4166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, const TIM_IC_InitTypeDef *sConf +4168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +4170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); +4173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_POLARITY(sConfig->ICPolarity)); +4174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_SELECTION(sConfig->ICSelection)); +4175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_PRESCALER(sConfig->ICPrescaler)); +4176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_FILTER(sConfig->ICFilter)); +4177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Process Locked */ +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_LOCK(htim); +4180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (Channel == TIM_CHANNEL_1) +4182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* TI1 Configuration */ +4184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI1_SetConfig(htim->Instance, +4185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, +4186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICSelection, +4187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICFilter); +4188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the IC1PSC Bits */ +4190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; +4191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the IC1PSC value */ + ARM GAS /tmp/ccPLZXyC.s page 75 + + +4193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= sConfig->ICPrescaler; +4194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (Channel == TIM_CHANNEL_2) +4196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* TI2 Configuration */ +4198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); +4199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI2_SetConfig(htim->Instance, +4201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, +4202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICSelection, +4203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICFilter); +4204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the IC2PSC Bits */ +4206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC; +4207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the IC2PSC value */ +4209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= (sConfig->ICPrescaler << 8U); +4210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (Channel == TIM_CHANNEL_3) +4212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* TI3 Configuration */ +4214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); +4215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI3_SetConfig(htim->Instance, +4217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, +4218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICSelection, +4219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICFilter); +4220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the IC3PSC Bits */ +4222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC; +4223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the IC3PSC value */ +4225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= sConfig->ICPrescaler; +4226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (Channel == TIM_CHANNEL_4) +4228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* TI4 Configuration */ +4230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); +4231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI4_SetConfig(htim->Instance, +4233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, +4234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICSelection, +4235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICFilter); +4236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the IC4PSC Bits */ +4238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC; +4239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the IC4PSC value */ +4241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= (sConfig->ICPrescaler << 8U); +4242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +4244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +4246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +4249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 76 + + +4250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +4251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +4254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM PWM channels according to the specified +4255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * parameters in the TIM_OC_InitTypeDef. +4256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM PWM handle +4257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param sConfig TIM PWM configuration structure +4258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be configured +4259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +4261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +4262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +4263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +4264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_5: TIM Channel 5 selected +4265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_6: TIM Channel 6 selected +4266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +4267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, +4269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** const TIM_OC_InitTypeDef *sConfig, +4270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t Channel) +4271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +4273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CHANNELS(Channel)); +4276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); +4277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); +4278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); +4279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Process Locked */ +4281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_LOCK(htim); +4282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +4284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +4286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); +4289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Channel 1 in PWM mode */ +4291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC1_SetConfig(htim->Instance, sConfig); +4292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Preload enable bit for channel1 */ +4294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; +4295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Output Fast mode */ +4297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; +4298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= sConfig->OCFastMode; +4299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +4303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); +4306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 77 + + +4307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Channel 2 in PWM mode */ +4308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC2_SetConfig(htim->Instance, sConfig); +4309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Preload enable bit for channel2 */ +4311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; +4312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Output Fast mode */ +4314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; +4315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; +4316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +4320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); +4323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Channel 3 in PWM mode */ +4325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC3_SetConfig(htim->Instance, sConfig); +4326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Preload enable bit for channel3 */ +4328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; +4329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Output Fast mode */ +4331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; +4332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= sConfig->OCFastMode; +4333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +4337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); +4340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Channel 4 in PWM mode */ +4342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC4_SetConfig(htim->Instance, sConfig); +4343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Preload enable bit for channel4 */ +4345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; +4346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Output Fast mode */ +4348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; +4349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; +4350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_5: +4354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC5_INSTANCE(htim->Instance)); +4357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Channel 5 in PWM mode */ +4359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC5_SetConfig(htim->Instance, sConfig); +4360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Preload enable bit for channel5*/ +4362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE; +4363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 78 + + +4364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Output Fast mode */ +4365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE; +4366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 |= sConfig->OCFastMode; +4367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_6: +4371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC6_INSTANCE(htim->Instance)); +4374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Channel 6 in PWM mode */ +4376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC6_SetConfig(htim->Instance, sConfig); +4377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Preload enable bit for channel6 */ +4379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE; +4380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the Output Fast mode */ +4382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE; +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U; +4384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +4388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +4389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +4393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +4395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +4398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Initializes the TIM One Pulse Channels according to the specified +4399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * parameters in the TIM_OnePulse_InitTypeDef. +4400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM One Pulse handle +4401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param sConfig TIM One Pulse configuration structure +4402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OutputChannel TIM output channel to configure +4403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +4405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +4406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param InputChannel TIM input Channel to configure +4407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +4409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +4410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note To output a waveform with a minimum delay user can enable the fast +4411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * mode by calling the @ref __HAL_TIM_ENABLE_OCxFAST macro. Then CCx +4412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * output is forced in response to the edge detection on TIx input, +4413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * without taking in account the comparison. +4414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +4415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef +4417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t OutputChannel, uint32_t InputChannel) +4418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +4420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC_InitTypeDef temp1; + ARM GAS /tmp/ccPLZXyC.s page 79 + + +4421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OPM_CHANNELS(OutputChannel)); +4424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OPM_CHANNELS(InputChannel)); +4425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (OutputChannel != InputChannel) +4427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Process Locked */ +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_LOCK(htim); +4430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +4432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Extract the Output compare configuration from sConfig structure */ +4434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCMode = sConfig->OCMode; +4435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.Pulse = sConfig->Pulse; +4436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCPolarity = sConfig->OCPolarity; +4437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCNPolarity = sConfig->OCNPolarity; +4438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCIdleState = sConfig->OCIdleState; +4439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCNIdleState = sConfig->OCNIdleState; +4440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (OutputChannel) +4442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +4444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); +4446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC1_SetConfig(htim->Instance, &temp1); +4448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +4452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); +4454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC2_SetConfig(htim->Instance, &temp1); +4456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +4460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +4461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +4465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (InputChannel) +4467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +4469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); +4471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI1_SetConfig(htim->Instance, sConfig->ICPolarity, +4473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICSelection, sConfig->ICFilter); +4474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the IC1PSC Bits */ +4476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; +4477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 80 + + +4478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Trigger source */ +4479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR &= ~TIM_SMCR_TS; +4480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_TS_TI1FP1; +4481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Slave Mode */ +4483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR &= ~TIM_SMCR_SMS; +4484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; +4485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +4489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); +4491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI2_SetConfig(htim->Instance, sConfig->ICPolarity, +4493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICSelection, sConfig->ICFilter); +4494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the IC2PSC Bits */ +4496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC; +4497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Trigger source */ +4499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR &= ~TIM_SMCR_TS; +4500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_TS_TI2FP2; +4501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Slave Mode */ +4503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR &= ~TIM_SMCR_SMS; +4504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; +4505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +4509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +4510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +4515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +4517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +4519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +4521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +4523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +4527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configure the DMA Burst to transfer Data from the memory to the TIM peripheral +4528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +4529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstBaseAddress TIM Base address from where the DMA will start the Data write +4530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CR1 +4532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CR2 +4533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_SMCR +4534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_DIER + ARM GAS /tmp/ccPLZXyC.s page 81 + + +4535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_SR +4536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_EGR +4537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR1 +4538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR2 +4539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCER +4540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CNT +4541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_PSC +4542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_ARR +4543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_RCR +4544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR1 +4545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR2 +4546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR3 +4547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR4 +4548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_BDTR +4549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_OR +4550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR3 +4551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR5 +4552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR6 +4553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_AF1 (*) +4554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_AF2 (*) +4555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * (*) value not defined in all devices +4556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstRequestSrc TIM DMA Request sources +4557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_UPDATE: TIM update Interrupt source +4559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source +4560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source +4561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source +4562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source +4563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_COM: TIM Commutation DMA source +4564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source +4565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstBuffer The Buffer address. +4566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstLength DMA Burst length. This parameter can be one value +4567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. +4568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note This function should be used only when BurstLength is equal to DMA data transfer length +4569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +4570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, +4572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t BurstRequestSrc, const uint32_t *BurstBuffer +4573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t BurstLength) +4574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status; +4576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_TIM_DMABurst_MultiWriteStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, B +4578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ((BurstLength) >> 8U) + 1U); +4579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +4583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +4586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configure the DMA Burst to transfer multiple Data from the memory to the TIM peripheral +4587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +4588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstBaseAddress TIM Base address from where the DMA will start the Data write +4589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CR1 +4591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CR2 + ARM GAS /tmp/ccPLZXyC.s page 82 + + +4592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_SMCR +4593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_DIER +4594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_SR +4595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_EGR +4596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR1 +4597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR2 +4598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCER +4599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CNT +4600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_PSC +4601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_ARR +4602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_RCR +4603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR1 +4604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR2 +4605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR3 +4606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR4 +4607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_BDTR +4608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_OR +4609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR3 +4610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR5 +4611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR6 +4612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_AF1 (*) +4613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_AF2 (*) +4614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * (*) value not defined in all devices +4615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstRequestSrc TIM DMA Request sources +4616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_UPDATE: TIM update Interrupt source +4618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source +4619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source +4620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source +4621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source +4622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_COM: TIM Commutation DMA source +4623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source +4624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstBuffer The Buffer address. +4625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstLength DMA Burst length. This parameter can be one value +4626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. +4627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param DataLength Data length. This parameter can be one value +4628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * between 1 and 0xFFFF. +4629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +4630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_DMABurst_MultiWriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddre +4632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t BurstRequestSrc, const uint32_t *BurstB +4633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t BurstLength, uint32_t DataLength) +4634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +4636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); +4639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_BASE(BurstBaseAddress)); +4640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); +4641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_LENGTH(BurstLength)); +4642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength)); +4643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->DMABurstState == HAL_DMA_BURST_STATE_BUSY) +4645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_BUSY; +4647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (htim->DMABurstState == HAL_DMA_BURST_STATE_READY) + ARM GAS /tmp/ccPLZXyC.s page 83 + + +4649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((BurstBuffer == NULL) && (BurstLength > 0U)) +4651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +4653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +4655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_BUSY; +4657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +4660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* nothing to do */ +4662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (BurstRequestSrc) +4665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_UPDATE: +4667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA Period elapsed callbacks */ +4669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; +4670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; +4671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +4673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; +4674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +4676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)BurstBuffer, +4677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) +4678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +4680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +4681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC1: +4685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +4687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseCplt; +4688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +4689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +4691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; +4692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +4694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer, +4695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) +4696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +4698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +4699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC2: +4703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +4705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseCplt; + ARM GAS /tmp/ccPLZXyC.s page 84 + + +4706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +4707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +4709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; +4710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +4712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer, +4713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) +4714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +4716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +4717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC3: +4721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +4723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseCplt; +4724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +4725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +4727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; +4728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +4730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer, +4731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) +4732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +4734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +4735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC4: +4739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA compare callbacks */ +4741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMADelayPulseCplt; +4742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +4743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +4745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; +4746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +4748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer, +4749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) +4750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +4752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +4753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_COM: +4757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA commutation callbacks */ +4759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt; +4760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; +4761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ + ARM GAS /tmp/ccPLZXyC.s page 85 + + +4763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ; +4764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +4766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer, +4767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) +4768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +4770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +4771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_TRIGGER: +4775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA trigger callbacks */ +4777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt; +4778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; +4779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +4781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ; +4782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +4784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer, +4785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) +4786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +4788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +4789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +4793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +4794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +4798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the DMA Burst Mode */ +4800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->DCR = (BurstBaseAddress | BurstLength); +4801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM DMA Request */ +4802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc); +4803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +4806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +4807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +4810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stops the TIM DMA Burst mode +4811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +4812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstRequestSrc TIM DMA Request sources to disable +4813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +4814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc) +4816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +4818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + ARM GAS /tmp/ccPLZXyC.s page 86 + + +4820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); +4821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Abort the DMA transfer (at least disable the DMA stream) */ +4823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (BurstRequestSrc) +4824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_UPDATE: +4826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); +4828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC1: +4831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); +4833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC2: +4836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); +4838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC3: +4841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); +4843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC4: +4846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); +4848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_COM: +4851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_COMMUTATION]); +4853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_TRIGGER: +4856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]); +4858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +4861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +4862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +4863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +4866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Update DMA request */ +4868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc); +4869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the DMA burst operation state */ +4871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_READY; +4872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +4875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +4876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 87 + + +4877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +4879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configure the DMA Burst to transfer Data from the TIM peripheral to the memory +4880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +4881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstBaseAddress TIM Base address from where the DMA will start the Data read +4882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CR1 +4884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CR2 +4885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_SMCR +4886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_DIER +4887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_SR +4888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_EGR +4889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR1 +4890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR2 +4891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCER +4892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CNT +4893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_PSC +4894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_ARR +4895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_RCR +4896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR1 +4897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR2 +4898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR3 +4899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR4 +4900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_BDTR +4901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_OR +4902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR3 +4903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR5 +4904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR6 +4905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_AF1 (*) +4906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_AF2 (*) +4907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * (*) value not defined in all devices +4908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstRequestSrc TIM DMA Request sources +4909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_UPDATE: TIM update Interrupt source +4911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source +4912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source +4913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source +4914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source +4915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_COM: TIM Commutation DMA source +4916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source +4917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstBuffer The Buffer address. +4918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstLength DMA Burst length. This parameter can be one value +4919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. +4920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note This function should be used only when BurstLength is equal to DMA data transfer length +4921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +4922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, +4924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint +4925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status; +4927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_TIM_DMABurst_MultiReadStart(htim, BurstBaseAddress, BurstRequestSrc, BurstBuffer, Bu +4929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ((BurstLength) >> 8U) + 1U); +4930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +4933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 88 + + +4934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +4936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configure the DMA Burst to transfer Data from the TIM peripheral to the memory +4937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +4938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstBaseAddress TIM Base address from where the DMA will start the Data read +4939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CR1 +4941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CR2 +4942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_SMCR +4943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_DIER +4944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_SR +4945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_EGR +4946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR1 +4947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR2 +4948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCER +4949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CNT +4950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_PSC +4951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_ARR +4952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_RCR +4953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR1 +4954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR2 +4955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR3 +4956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR4 +4957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_BDTR +4958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_OR +4959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCMR3 +4960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR5 +4961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_CCR6 +4962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_AF1 (*) +4963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMABASE_AF2 (*) +4964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * (*) value not defined in all devices +4965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstRequestSrc TIM DMA Request sources +4966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +4967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_UPDATE: TIM update Interrupt source +4968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC1: TIM Capture Compare 1 DMA source +4969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC2: TIM Capture Compare 2 DMA source +4970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC3: TIM Capture Compare 3 DMA source +4971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_CC4: TIM Capture Compare 4 DMA source +4972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_COM: TIM Commutation DMA source +4973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_DMA_TRIGGER: TIM Trigger DMA source +4974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstBuffer The Buffer address. +4975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstLength DMA Burst length. This parameter can be one value +4976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * between: TIM_DMABURSTLENGTH_1TRANSFER and TIM_DMABURSTLENGTH_18TRANSFERS. +4977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param DataLength Data length. This parameter can be one value +4978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * between 1 and 0xFFFF. +4979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +4980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +4981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_DMABurst_MultiReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddres +4982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t BurstRequestSrc, uint32_t *BurstBuffer, +4983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t BurstLength, uint32_t DataLength) +4984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +4986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +4988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); +4989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_BASE(BurstBaseAddress)); +4990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + ARM GAS /tmp/ccPLZXyC.s page 89 + + +4991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_LENGTH(BurstLength)); +4992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength)); +4993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +4994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->DMABurstState == HAL_DMA_BURST_STATE_BUSY) +4995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +4996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_BUSY; +4997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +4998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (htim->DMABurstState == HAL_DMA_BURST_STATE_READY) +4999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if ((BurstBuffer == NULL) && (BurstLength > 0U)) +5001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +5005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_BUSY; +5007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +5010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* nothing to do */ +5012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (BurstRequestSrc) +5014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_UPDATE: +5016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA Period elapsed callbacks */ +5018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferCpltCallback = TIM_DMAPeriodElapsedCplt; +5019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; +5020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +5022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferErrorCallback = TIM_DMAError ; +5023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +5025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_UPDATE], (uint32_t)&htim->Instance->DMAR, (uint32_ +5026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) +5027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +5029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC1: +5034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +5036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; +5037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +5038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +5040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; +5041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +5043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->DMAR, (uint32_t)B +5044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) +5045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +5047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + ARM GAS /tmp/ccPLZXyC.s page 90 + + +5048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC2: +5052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +5054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMACaptureCplt; +5055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +5056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +5058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ; +5059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +5061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)&htim->Instance->DMAR, (uint32_t)B +5062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) +5063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +5065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC3: +5070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +5072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMACaptureCplt; +5073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +5074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +5076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ; +5077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +5079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)&htim->Instance->DMAR, (uint32_t)B +5080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) +5081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +5083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC4: +5088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA capture callbacks */ +5090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferCpltCallback = TIM_DMACaptureCplt; +5091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; +5092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +5094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ; +5095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +5097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)&htim->Instance->DMAR, (uint32_t)B +5098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) +5099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +5101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 91 + + +5105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_COM: +5106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA commutation callbacks */ +5108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt; +5109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; +5110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +5112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ; +5113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +5115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)&htim->Instance->DMAR, (ui +5116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) +5117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +5119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_TRIGGER: +5124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA trigger callbacks */ +5126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferCpltCallback = TIM_DMATriggerCplt; +5127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; +5128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the DMA error callback */ +5130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ; +5131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ +5133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)&htim->Instance->DMAR, (uint32 +5134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) +5135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +5137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +5142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +5143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +5147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the DMA Burst Mode */ +5149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->DCR = (BurstBaseAddress | BurstLength); +5150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM DMA Request */ +5152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_DMA(htim, BurstRequestSrc); +5153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +5156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +5157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Stop the DMA burst reading +5161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle + ARM GAS /tmp/ccPLZXyC.s page 92 + + +5162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param BurstRequestSrc TIM DMA Request sources to disable. +5163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +5164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc) +5166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +5168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); +5171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Abort the DMA transfer (at least disable the DMA stream) */ +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (BurstRequestSrc) +5174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_UPDATE: +5176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_UPDATE]); +5178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC1: +5181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); +5183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC2: +5186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); +5188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC3: +5191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); +5193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_CC4: +5196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); +5198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_COM: +5201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_COMMUTATION]); +5203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_DMA_TRIGGER: +5206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_TRIGGER]); +5208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +5211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +5212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +5216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the TIM Update DMA request */ +5218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, BurstRequestSrc); + ARM GAS /tmp/ccPLZXyC.s page 93 + + +5219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the DMA burst operation state */ +5221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_READY; +5222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +5225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +5226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Generate a software event +5230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +5231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param EventSource specifies the event source. +5232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +5233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_EVENTSOURCE_UPDATE: Timer update Event source +5234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_EVENTSOURCE_CC1: Timer Capture Compare 1 Event source +5235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_EVENTSOURCE_CC2: Timer Capture Compare 2 Event source +5236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_EVENTSOURCE_CC3: Timer Capture Compare 3 Event source +5237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_EVENTSOURCE_CC4: Timer Capture Compare 4 Event source +5238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_EVENTSOURCE_COM: Timer COM event source +5239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_EVENTSOURCE_TRIGGER: Timer Trigger Event source +5240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_EVENTSOURCE_BREAK: Timer Break event source +5241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_EVENTSOURCE_BREAK2: Timer Break2 event source +5242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note Basic timers can only generate an update event. +5243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note TIM_EVENTSOURCE_COM is relevant only with advanced timer instances. +5244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note TIM_EVENTSOURCE_BREAK and TIM_EVENTSOURCE_BREAK2 are relevant +5245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * only for timer instances supporting break input(s). +5246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +5247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource) +5250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); +5253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_EVENT_SOURCE(EventSource)); +5254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Process Locked */ +5256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_LOCK(htim); +5257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the TIM state */ +5259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +5260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the event sources */ +5262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->EGR = EventSource; +5263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Change the TIM state */ +5265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +5266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +5268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return function status */ +5270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +5271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configures the OCRef clear feature +5275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle + ARM GAS /tmp/ccPLZXyC.s page 94 + + +5276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param sClearInputConfig pointer to a TIM_ClearInputConfigTypeDef structure that +5277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * contains the OCREF clear feature and parameters for the TIM peripheral. +5278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel specifies the TIM Channel +5279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +5280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 +5281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 +5282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 +5283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 +5284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_5: TIM Channel 5 +5285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_6: TIM Channel 6 +5286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +5287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, +5289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** const TIM_ClearInputConfigTypeDef *sClearInputConfig, +5290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t Channel) +5291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +5293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCXREF_CLEAR_INSTANCE(htim->Instance)); +5296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource)); +5297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Process Locked */ +5299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_LOCK(htim); +5300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +5302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (sClearInputConfig->ClearInputSource) +5304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLEARINPUTSOURCE_NONE: +5306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Clear the OCREF clear selection bit and the the ETR Bits */ +5308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** CLEAR_BIT(htim->Instance->SMCR, (TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP)) +5309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLEARINPUTSOURCE_ETR: +5313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLEARINPUT_POLARITY(sClearInputConfig->ClearInputPolarity)); +5316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLEARINPUT_PRESCALER(sClearInputConfig->ClearInputPrescaler)); +5317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLEARINPUT_FILTER(sClearInputConfig->ClearInputFilter)); +5318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* When OCRef clear feature is used with ETR source, ETR prescaler must be off */ +5320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1) +5321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +5323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +5324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ETR_SetConfig(htim->Instance, +5328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClearInputConfig->ClearInputPrescaler, +5329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClearInputConfig->ClearInputPolarity, +5330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClearInputConfig->ClearInputFilter); +5331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 95 + + +5333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +5335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +5336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (status == HAL_OK) +5340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +5342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +5344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) +5346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the OCREF clear feature for Channel 1 */ +5348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE); +5349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +5351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the OCREF clear feature for Channel 1 */ +5353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC1CE); +5354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: +5358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) +5360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the OCREF clear feature for Channel 2 */ +5362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** SET_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE); +5363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +5365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the OCREF clear feature for Channel 2 */ +5367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** CLEAR_BIT(htim->Instance->CCMR1, TIM_CCMR1_OC2CE); +5368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +5372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) +5374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the OCREF clear feature for Channel 3 */ +5376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE); +5377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +5379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the OCREF clear feature for Channel 3 */ +5381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC3CE); +5382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +5386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) +5388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the OCREF clear feature for Channel 4 */ + ARM GAS /tmp/ccPLZXyC.s page 96 + + +5390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** SET_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE); +5391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +5393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the OCREF clear feature for Channel 4 */ +5395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** CLEAR_BIT(htim->Instance->CCMR2, TIM_CCMR2_OC4CE); +5396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_5: +5400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) +5402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the OCREF clear feature for Channel 5 */ +5404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE); +5405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +5407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the OCREF clear feature for Channel 5 */ +5409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC5CE); +5410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_6: +5414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (sClearInputConfig->ClearInputState != (uint32_t)DISABLE) +5416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the OCREF clear feature for Channel 6 */ +5418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** SET_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE); +5419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +5421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the OCREF clear feature for Channel 6 */ +5423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** CLEAR_BIT(htim->Instance->CCMR3, TIM_CCMR3_OC6CE); +5424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +5428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +5433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +5435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +5437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configures the clock source to be used +5441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +5442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that +5443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * contains the clock source information for the TIM peripheral. +5444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +5445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, const TIM_ClockConfigTypeDef * + ARM GAS /tmp/ccPLZXyC.s page 97 + + +5447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +5449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; +5450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Process Locked */ +5452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_LOCK(htim); +5453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +5455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); +5458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ +5460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR; +5461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); +5462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); +5463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR = tmpsmcr; +5464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (sClockSourceConfig->ClockSource) +5466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLOCKSOURCE_INTERNAL: +5468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); +5470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLOCKSOURCE_ETRMODE1: +5474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check whether or not the timer instance supports external trigger input mode 1 (ETRF)*/ +5476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance)); +5477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check ETR input conditioning related parameters */ +5479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); +5480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); +5481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); +5482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the ETR Clock source */ +5484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ETR_SetConfig(htim->Instance, +5485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPrescaler, +5486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, +5487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockFilter); +5488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the External clock mode1 and the ETRF trigger */ +5490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR; +5491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); +5492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx SMCR */ +5493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR = tmpsmcr; +5494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLOCKSOURCE_ETRMODE2: +5498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check whether or not the timer instance supports external trigger input mode 2 (ETRF)*/ +5500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(htim->Instance)); +5501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check ETR input conditioning related parameters */ +5503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); + ARM GAS /tmp/ccPLZXyC.s page 98 + + +5504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); +5505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); +5506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the ETR Clock source */ +5508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ETR_SetConfig(htim->Instance, +5509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPrescaler, +5510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, +5511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockFilter); +5512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the External clock mode2 */ +5513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_SMCR_ECE; +5514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLOCKSOURCE_TI1: +5518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check whether or not the timer instance supports external clock mode 1 */ +5520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); +5521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check TI1 input conditioning related parameters */ +5523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); +5524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); +5525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI1_ConfigInputStage(htim->Instance, +5527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, +5528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockFilter); +5529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); +5530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLOCKSOURCE_TI2: +5534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check whether or not the timer instance supports external clock mode 1 (ETRF)*/ +5536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); +5537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check TI2 input conditioning related parameters */ +5539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); +5540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); +5541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI2_ConfigInputStage(htim->Instance, +5543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, +5544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockFilter); +5545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); +5546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLOCKSOURCE_TI1ED: +5550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check whether or not the timer instance supports external clock mode 1 */ +5552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKSOURCE_TIX_INSTANCE(htim->Instance)); +5553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check TI1 input conditioning related parameters */ +5555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); +5556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); +5557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI1_ConfigInputStage(htim->Instance, +5559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, +5560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockFilter); + ARM GAS /tmp/ccPLZXyC.s page 99 + + +5561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); +5562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLOCKSOURCE_ITR0: +5566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLOCKSOURCE_ITR1: +5567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLOCKSOURCE_ITR2: +5568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CLOCKSOURCE_ITR3: +5569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check whether or not the timer instance supports internal trigger input */ +5571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); +5572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); +5574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +5578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +5579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +5582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +5584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +5586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Selects the signal connected to the TI1 input: direct from CH1_input +5590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * or a XOR combination between CH1_input, CH2_input & CH3_input +5591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle. +5592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TI1_Selection Indicate whether or not channel 1 is connected to the +5593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * output of a XOR gate. +5594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +5595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_TI1SELECTION_CH1: The TIMx_CH1 pin is connected to TI1 input +5596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_TI1SELECTION_XORCOMBINATION: The TIMx_CH1, CH2 and CH3 +5597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * pins are connected to the TI1 input (XOR combination) +5598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +5599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection) +5601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr2; +5603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_XOR_INSTANCE(htim->Instance)); +5606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TI1SELECTION(TI1_Selection)); +5607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CR2 register value */ +5609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 = htim->Instance->CR2; +5610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the TI1 selection */ +5612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_TI1S; +5613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the TI1 selection */ +5615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 |= TI1_Selection; +5616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMxCR2 */ + ARM GAS /tmp/ccPLZXyC.s page 100 + + +5618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CR2 = tmpcr2; +5619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +5621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configures the TIM in Slave mode +5625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle. +5626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that +5627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * contains the selected trigger (internal trigger input, filtered +5628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * timer input or external trigger input) and the Slave mode +5629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * (Disable, Reset, Gated, Trigger, External clock mode 1). +5630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +5631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, const TIM_SlaveConfigTypeDef +5633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance)); +5636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode)); +5637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger)); +5638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_LOCK(htim); +5640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +5642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK) +5644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +5646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +5647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable Trigger Interrupt */ +5651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_TRIGGER); +5652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable Trigger DMA request */ +5654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER); +5655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +5657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +5659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +5661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configures the TIM in Slave mode in interrupt mode +5665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle. +5666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param sSlaveConfig pointer to a TIM_SlaveConfigTypeDef structure that +5667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * contains the selected trigger (internal trigger input, filtered +5668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * timer input or external trigger input) and the Slave mode +5669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * (Disable, Reset, Gated, Trigger, External clock mode 1). +5670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL status +5671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, +5673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** const TIM_SlaveConfigTypeDef *sSlaveConfig) +5674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 101 + + +5675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance)); +5677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode)); +5678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger)); +5679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_LOCK(htim); +5681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_BUSY; +5683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK) +5685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +5687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +5688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable Trigger Interrupt */ +5692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_TRIGGER); +5693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable Trigger DMA request */ +5695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_TRIGGER); +5696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +5698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); +5700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_OK; +5702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Read the captured value from Capture Compare unit +5706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle. +5707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channels to be enabled +5708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +5709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +5710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +5711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +5712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 selected +5713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval Captured value +5714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t HAL_TIM_ReadCapturedValue(const TIM_HandleTypeDef *htim, uint32_t Channel) +5716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpreg = 0U; +5718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (Channel) +5720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_1: +5722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); +5725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return the capture 1 value */ +5727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpreg = htim->Instance->CCR1; +5728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_2: + ARM GAS /tmp/ccPLZXyC.s page 102 + + +5732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); +5735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return the capture 2 value */ +5737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpreg = htim->Instance->CCR2; +5738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_3: +5743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); +5746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return the capture 3 value */ +5748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpreg = htim->Instance->CCR3; +5749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_CHANNEL_4: +5754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +5756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); +5757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return the capture 4 value */ +5759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpreg = htim->Instance->CCR4; +5760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +5765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return tmpreg; +5769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} +5773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions +5776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM Callbacks functions +5777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * +5778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim +5779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +5780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### TIM Callbacks functions ##### +5781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +5782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] +5783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** This section provides TIM callback functions: +5784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) TIM Period elapsed callback +5785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) TIM Output Compare callback +5786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) TIM Input capture callback +5787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) TIM Trigger callback +5788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (+) TIM Error callback + ARM GAS /tmp/ccPLZXyC.s page 103 + + +5789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim +5791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ +5792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Period elapsed callback in non-blocking mode +5796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +5797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +5798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) +5800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +5802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +5803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +5805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_PeriodElapsedCallback could be implemented in the user file +5806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Period elapsed half complete callback in non-blocking mode +5811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +5812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +5813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim) +5815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +5817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +5818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +5820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_PeriodElapsedHalfCpltCallback could be implemented in the user file +5821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Output Compare callback in non-blocking mode +5826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM OC handle +5827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +5828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) +5830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +5832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +5833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +5835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file +5836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Input Capture callback in non-blocking mode +5841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM IC handle +5842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +5843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) +5845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 104 + + +5846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +5847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +5848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +5850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_IC_CaptureCallback could be implemented in the user file +5851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Input Capture half complete callback in non-blocking mode +5856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM IC handle +5857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +5858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim) +5860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +5862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +5863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +5865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_IC_CaptureHalfCpltCallback could be implemented in the user file +5866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief PWM Pulse finished callback in non-blocking mode +5871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +5872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +5873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) +5875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +5877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +5878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +5880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file +5881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief PWM Pulse finished half complete callback in non-blocking mode +5886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +5887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +5888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim) +5890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +5892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +5893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +5895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_PWM_PulseFinishedHalfCpltCallback could be implemented in the user file +5896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Hall Trigger detection callback in non-blocking mode +5901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +5902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None + ARM GAS /tmp/ccPLZXyC.s page 105 + + +5903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) +5905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +5907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +5908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +5910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_TriggerCallback could be implemented in the user file +5911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Hall Trigger detection half complete callback in non-blocking mode +5916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +5917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +5918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim) +5920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +5922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +5923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +5925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_TriggerHalfCpltCallback could be implemented in the user file +5926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Timer error callback in non-blocking mode +5931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +5932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +5933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim) +5935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ +5937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** UNUSED(htim); +5938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* NOTE : This function should not be modified, when the callback is needed, +5940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** the HAL_TIM_ErrorCallback could be implemented in the user file +5941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +5945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +5946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Register a User TIM callback to be used instead of the weak predefined callback +5947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim tim handle +5948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param CallbackID ID of the callback to be registered +5949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +5950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID +5951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID +5952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID +5953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID +5954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID +5955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID +5956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID +5957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID +5958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID +5959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID + ARM GAS /tmp/ccPLZXyC.s page 106 + + +5960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID +5961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID +5962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID Hall Sensor MspInit Callback ID +5963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID Hall Sensor MspDeInit Callback ID +5964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID +5965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID +5966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID +5967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID +5968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID +5969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID +5970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID +5971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID +5972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callb +5973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID +5974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_COMMUTATION_CB_ID Commutation Callback ID +5975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_COMMUTATION_HALF_CB_ID Commutation half complete Callback ID +5976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_BREAK_CB_ID Break Callback ID +5977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_BREAK2_CB_ID Break2 Callback ID +5978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param pCallback pointer to the callback function +5979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval status +5980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +5981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef Callb +5982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** pTIM_CallbackTypeDef pCallback) +5983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +5985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (pCallback == NULL) +5987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +5989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +5990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State == HAL_TIM_STATE_READY) +5992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (CallbackID) +5994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +5995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BASE_MSPINIT_CB_ID : +5996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspInitCallback = pCallback; +5997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +5998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +5999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BASE_MSPDEINIT_CB_ID : +6000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspDeInitCallback = pCallback; +6001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_MSPINIT_CB_ID : +6004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspInitCallback = pCallback; +6005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_MSPDEINIT_CB_ID : +6008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspDeInitCallback = pCallback; +6009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_OC_MSPINIT_CB_ID : +6012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspInitCallback = pCallback; +6013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_OC_MSPDEINIT_CB_ID : +6016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspDeInitCallback = pCallback; + ARM GAS /tmp/ccPLZXyC.s page 107 + + +6017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_MSPINIT_CB_ID : +6020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspInitCallback = pCallback; +6021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_MSPDEINIT_CB_ID : +6024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspDeInitCallback = pCallback; +6025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : +6028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspInitCallback = pCallback; +6029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : +6032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspDeInitCallback = pCallback; +6033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ENCODER_MSPINIT_CB_ID : +6036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspInitCallback = pCallback; +6037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : +6040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspDeInitCallback = pCallback; +6041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : +6044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->HallSensor_MspInitCallback = pCallback; +6045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : +6048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->HallSensor_MspDeInitCallback = pCallback; +6049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PERIOD_ELAPSED_CB_ID : +6052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PeriodElapsedCallback = pCallback; +6053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID : +6056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PeriodElapsedHalfCpltCallback = pCallback; +6057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_TRIGGER_CB_ID : +6060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->TriggerCallback = pCallback; +6061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_TRIGGER_HALF_CB_ID : +6064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->TriggerHalfCpltCallback = pCallback; +6065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_CAPTURE_CB_ID : +6068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_CaptureCallback = pCallback; +6069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_CAPTURE_HALF_CB_ID : +6072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_CaptureHalfCpltCallback = pCallback; +6073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + ARM GAS /tmp/ccPLZXyC.s page 108 + + +6074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_OC_DELAY_ELAPSED_CB_ID : +6076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_DelayElapsedCallback = pCallback; +6077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_PULSE_FINISHED_CB_ID : +6080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_PulseFinishedCallback = pCallback; +6081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID : +6084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_PulseFinishedHalfCpltCallback = pCallback; +6085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ERROR_CB_ID : +6088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->ErrorCallback = pCallback; +6089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_COMMUTATION_CB_ID : +6092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->CommutationCallback = pCallback; +6093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_COMMUTATION_HALF_CB_ID : +6096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->CommutationHalfCpltCallback = pCallback; +6097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BREAK_CB_ID : +6100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->BreakCallback = pCallback; +6101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BREAK2_CB_ID : +6104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Break2Callback = pCallback; +6105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default : +6108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +6109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +6110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (htim->State == HAL_TIM_STATE_RESET) +6114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (CallbackID) +6116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BASE_MSPINIT_CB_ID : +6118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspInitCallback = pCallback; +6119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BASE_MSPDEINIT_CB_ID : +6122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspDeInitCallback = pCallback; +6123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_MSPINIT_CB_ID : +6126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspInitCallback = pCallback; +6127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_MSPDEINIT_CB_ID : +6130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspDeInitCallback = pCallback; + ARM GAS /tmp/ccPLZXyC.s page 109 + + +6131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_OC_MSPINIT_CB_ID : +6134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspInitCallback = pCallback; +6135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_OC_MSPDEINIT_CB_ID : +6138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspDeInitCallback = pCallback; +6139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_MSPINIT_CB_ID : +6142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspInitCallback = pCallback; +6143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_MSPDEINIT_CB_ID : +6146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspDeInitCallback = pCallback; +6147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : +6150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspInitCallback = pCallback; +6151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : +6154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspDeInitCallback = pCallback; +6155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ENCODER_MSPINIT_CB_ID : +6158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspInitCallback = pCallback; +6159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : +6162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspDeInitCallback = pCallback; +6163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : +6166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->HallSensor_MspInitCallback = pCallback; +6167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : +6170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->HallSensor_MspDeInitCallback = pCallback; +6171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default : +6174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +6175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +6176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +6180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +6182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +6183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +6186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 110 + + +6188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Unregister a TIM callback +6190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * TIM callback is redirected to the weak predefined callback +6191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim tim handle +6192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param CallbackID ID of the callback to be unregistered +6193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +6194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_BASE_MSPINIT_CB_ID Base MspInit Callback ID +6195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_BASE_MSPDEINIT_CB_ID Base MspDeInit Callback ID +6196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_IC_MSPINIT_CB_ID IC MspInit Callback ID +6197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_IC_MSPDEINIT_CB_ID IC MspDeInit Callback ID +6198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_OC_MSPINIT_CB_ID OC MspInit Callback ID +6199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_OC_MSPDEINIT_CB_ID OC MspDeInit Callback ID +6200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PWM_MSPINIT_CB_ID PWM MspInit Callback ID +6201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PWM_MSPDEINIT_CB_ID PWM MspDeInit Callback ID +6202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_ONE_PULSE_MSPINIT_CB_ID One Pulse MspInit Callback ID +6203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID One Pulse MspDeInit Callback ID +6204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_ENCODER_MSPINIT_CB_ID Encoder MspInit Callback ID +6205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_ENCODER_MSPDEINIT_CB_ID Encoder MspDeInit Callback ID +6206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID Hall Sensor MspInit Callback ID +6207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID Hall Sensor MspDeInit Callback ID +6208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PERIOD_ELAPSED_CB_ID Period Elapsed Callback ID +6209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID Period Elapsed half complete Callback ID +6210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_TRIGGER_CB_ID Trigger Callback ID +6211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_TRIGGER_HALF_CB_ID Trigger half complete Callback ID +6212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_IC_CAPTURE_CB_ID Input Capture Callback ID +6213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_IC_CAPTURE_HALF_CB_ID Input Capture half complete Callback ID +6214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_OC_DELAY_ELAPSED_CB_ID Output Compare Delay Elapsed Callback ID +6215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_CB_ID PWM Pulse Finished Callback ID +6216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID PWM Pulse Finished half complete Callb +6217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_ERROR_CB_ID Error Callback ID +6218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_COMMUTATION_CB_ID Commutation Callback ID +6219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_COMMUTATION_HALF_CB_ID Commutation half complete Callback ID +6220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_BREAK_CB_ID Break Callback ID +6221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg @ref HAL_TIM_BREAK2_CB_ID Break2 Callback ID +6222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval status +6223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef Cal +6225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +6227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->State == HAL_TIM_STATE_READY) +6229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (CallbackID) +6231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BASE_MSPINIT_CB_ID : +6233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Base MspInit Callback */ +6234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; +6235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BASE_MSPDEINIT_CB_ID : +6238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Base Msp DeInit Callback */ +6239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; +6240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_MSPINIT_CB_ID : +6243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak IC Msp Init Callback */ +6244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; + ARM GAS /tmp/ccPLZXyC.s page 111 + + +6245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_MSPDEINIT_CB_ID : +6248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak IC Msp DeInit Callback */ +6249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; +6250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_OC_MSPINIT_CB_ID : +6253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak OC Msp Init Callback */ +6254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; +6255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_OC_MSPDEINIT_CB_ID : +6258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak OC Msp DeInit Callback */ +6259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; +6260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_MSPINIT_CB_ID : +6263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak PWM Msp Init Callback */ +6264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; +6265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_MSPDEINIT_CB_ID : +6268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak PWM Msp DeInit Callback */ +6269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; +6270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : +6273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak One Pulse Msp Init Callback */ +6274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; +6275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : +6278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak One Pulse Msp DeInit Callback */ +6279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; +6280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ENCODER_MSPINIT_CB_ID : +6283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Encoder Msp Init Callback */ +6284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; +6285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : +6288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Encoder Msp DeInit Callback */ +6289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; +6290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : +6293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Hall Sensor Msp Init Callback */ +6294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; +6295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : +6298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Hall Sensor Msp DeInit Callback */ +6299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; +6300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 112 + + +6302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PERIOD_ELAPSED_CB_ID : +6303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Period Elapsed Callback */ +6304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PeriodElapsedCallback = HAL_TIM_PeriodElapsedCallback; +6305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PERIOD_ELAPSED_HALF_CB_ID : +6308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Period Elapsed half complete Callback */ +6309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PeriodElapsedHalfCpltCallback = HAL_TIM_PeriodElapsedHalfCpltCallback; +6310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_TRIGGER_CB_ID : +6313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Trigger Callback */ +6314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->TriggerCallback = HAL_TIM_TriggerCallback; +6315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_TRIGGER_HALF_CB_ID : +6318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Trigger half complete Callback */ +6319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->TriggerHalfCpltCallback = HAL_TIM_TriggerHalfCpltCallback; +6320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_CAPTURE_CB_ID : +6323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak IC Capture Callback */ +6324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_CaptureCallback = HAL_TIM_IC_CaptureCallback; +6325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_CAPTURE_HALF_CB_ID : +6328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak IC Capture half complete Callback */ +6329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_CaptureHalfCpltCallback = HAL_TIM_IC_CaptureHalfCpltCallback; +6330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_OC_DELAY_ELAPSED_CB_ID : +6333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak OC Delay Elapsed Callback */ +6334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_DelayElapsedCallback = HAL_TIM_OC_DelayElapsedCallback; +6335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_PULSE_FINISHED_CB_ID : +6338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak PWM Pulse Finished Callback */ +6339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_PulseFinishedCallback = HAL_TIM_PWM_PulseFinishedCallback; +6340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_PULSE_FINISHED_HALF_CB_ID : +6343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak PWM Pulse Finished half complete Callback */ +6344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_PulseFinishedHalfCpltCallback = HAL_TIM_PWM_PulseFinishedHalfCpltCallback; +6345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ERROR_CB_ID : +6348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Error Callback */ +6349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->ErrorCallback = HAL_TIM_ErrorCallback; +6350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_COMMUTATION_CB_ID : +6353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Commutation Callback */ +6354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->CommutationCallback = HAL_TIMEx_CommutCallback; +6355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_COMMUTATION_HALF_CB_ID : +6358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Commutation half complete Callback */ + ARM GAS /tmp/ccPLZXyC.s page 113 + + +6359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->CommutationHalfCpltCallback = HAL_TIMEx_CommutHalfCpltCallback; +6360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BREAK_CB_ID : +6363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Break Callback */ +6364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->BreakCallback = HAL_TIMEx_BreakCallback; +6365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BREAK2_CB_ID : +6368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Break2 Callback */ +6369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Break2Callback = HAL_TIMEx_Break2Callback; +6370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default : +6373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +6374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +6375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (htim->State == HAL_TIM_STATE_RESET) +6379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (CallbackID) +6381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BASE_MSPINIT_CB_ID : +6383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Base MspInit Callback */ +6384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspInitCallback = HAL_TIM_Base_MspInit; +6385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_BASE_MSPDEINIT_CB_ID : +6388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Base Msp DeInit Callback */ +6389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Base_MspDeInitCallback = HAL_TIM_Base_MspDeInit; +6390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_MSPINIT_CB_ID : +6393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak IC Msp Init Callback */ +6394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspInitCallback = HAL_TIM_IC_MspInit; +6395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_IC_MSPDEINIT_CB_ID : +6398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak IC Msp DeInit Callback */ +6399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_MspDeInitCallback = HAL_TIM_IC_MspDeInit; +6400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_OC_MSPINIT_CB_ID : +6403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak OC Msp Init Callback */ +6404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspInitCallback = HAL_TIM_OC_MspInit; +6405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_OC_MSPDEINIT_CB_ID : +6408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak OC Msp DeInit Callback */ +6409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OC_MspDeInitCallback = HAL_TIM_OC_MspDeInit; +6410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_MSPINIT_CB_ID : +6413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak PWM Msp Init Callback */ +6414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspInitCallback = HAL_TIM_PWM_MspInit; +6415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + ARM GAS /tmp/ccPLZXyC.s page 114 + + +6416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_PWM_MSPDEINIT_CB_ID : +6418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak PWM Msp DeInit Callback */ +6419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_MspDeInitCallback = HAL_TIM_PWM_MspDeInit; +6420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ONE_PULSE_MSPINIT_CB_ID : +6423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak One Pulse Msp Init Callback */ +6424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspInitCallback = HAL_TIM_OnePulse_MspInit; +6425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ONE_PULSE_MSPDEINIT_CB_ID : +6428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak One Pulse Msp DeInit Callback */ +6429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->OnePulse_MspDeInitCallback = HAL_TIM_OnePulse_MspDeInit; +6430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ENCODER_MSPINIT_CB_ID : +6433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Encoder Msp Init Callback */ +6434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspInitCallback = HAL_TIM_Encoder_MspInit; +6435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_ENCODER_MSPDEINIT_CB_ID : +6438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Encoder Msp DeInit Callback */ +6439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Encoder_MspDeInitCallback = HAL_TIM_Encoder_MspDeInit; +6440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_HALL_SENSOR_MSPINIT_CB_ID : +6443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Hall Sensor Msp Init Callback */ +6444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; +6445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case HAL_TIM_HALL_SENSOR_MSPDEINIT_CB_ID : +6448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Legacy weak Hall Sensor Msp DeInit Callback */ +6449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; +6450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default : +6453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +6454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +6455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +6456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +6459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Return error status */ +6461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +6462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +6465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +6467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} +6470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions + ARM GAS /tmp/ccPLZXyC.s page 115 + + +6473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM Peripheral State functions +6474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * +6475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @verbatim +6476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +6477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ##### Peripheral State functions ##### +6478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ============================================================================== +6479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** [..] +6480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** This subsection permits to get in run-time the status of the peripheral +6481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** and the data flow. +6482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** @endverbatim +6484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ +6485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Return the TIM Base handle state. +6489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Base handle +6490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL state +6491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_StateTypeDef HAL_TIM_Base_GetState(const TIM_HandleTypeDef *htim) +6493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; +6495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Return the TIM OC handle state. +6499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Output Compare handle +6500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL state +6501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_StateTypeDef HAL_TIM_OC_GetState(const TIM_HandleTypeDef *htim) +6503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; +6505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Return the TIM PWM handle state. +6509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +6510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL state +6511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_StateTypeDef HAL_TIM_PWM_GetState(const TIM_HandleTypeDef *htim) +6513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; +6515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Return the TIM Input Capture handle state. +6519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM IC handle +6520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL state +6521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_StateTypeDef HAL_TIM_IC_GetState(const TIM_HandleTypeDef *htim) +6523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; +6525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Return the TIM One Pulse Mode handle state. +6529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM OPM handle + ARM GAS /tmp/ccPLZXyC.s page 116 + + +6530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL state +6531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_StateTypeDef HAL_TIM_OnePulse_GetState(const TIM_HandleTypeDef *htim) +6533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; +6535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Return the TIM Encoder Mode handle state. +6539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM Encoder Interface handle +6540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval HAL state +6541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(const TIM_HandleTypeDef *htim) +6543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; +6545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Return the TIM Encoder Mode handle state. +6549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +6550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval Active channel +6551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ActiveChannel HAL_TIM_GetActiveChannel(const TIM_HandleTypeDef *htim) +6553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->Channel; +6555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Return actual state of the TIM channel. +6559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +6560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel TIM Channel +6561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +6562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 +6563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 +6564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 +6565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 +6566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_5: TIM Channel 5 +6567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_6: TIM Channel 6 +6568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval TIM Channel state +6569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef HAL_TIM_GetChannelState(const TIM_HandleTypeDef *htim, uint32_t Channe +6571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_state; +6573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +6575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); +6576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); +6578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return channel_state; +6580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Return actual state of a DMA burst operation. +6584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +6585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval DMA burst state +6586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ + ARM GAS /tmp/ccPLZXyC.s page 117 + + +6587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_DMABurstStateTypeDef HAL_TIM_DMABurstState(const TIM_HandleTypeDef *htim) +6588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +6590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance)); +6591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->DMABurstState; +6593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} +6597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @} +6601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** @defgroup TIM_Private_Functions TIM Private Functions +6604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @{ +6605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM DMA error callback +6609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param hdma pointer to DMA handle. +6610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +6611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** void TIM_DMAError(DMA_HandleTypeDef *hdma) +6613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +6615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma == htim->hdma[TIM_DMA_ID_CC1]) +6617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; +6619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +6620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) +6622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; +6624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +6625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) +6627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; +6629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); +6630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) +6632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; +6634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); +6635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +6637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +6639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +6642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->ErrorCallback(htim); +6643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else + ARM GAS /tmp/ccPLZXyC.s page 118 + + +6644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ErrorCallback(htim); +6645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +6646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +6648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM DMA Delay Pulse complete callback. +6652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param hdma pointer to DMA handle. +6653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +6654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_DMADelayPulseCplt(DMA_HandleTypeDef *hdma) +6656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +6658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma == htim->hdma[TIM_DMA_ID_CC1]) +6660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; +6662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma->Init.Mode == DMA_NORMAL) +6664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +6666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) +6669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; +6671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma->Init.Mode == DMA_NORMAL) +6673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +6675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) +6678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; +6680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma->Init.Mode == DMA_NORMAL) +6682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); +6684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) +6687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; +6689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma->Init.Mode == DMA_NORMAL) +6691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); +6693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +6696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* nothing to do */ +6698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + ARM GAS /tmp/ccPLZXyC.s page 119 + + +6701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_PulseFinishedCallback(htim); +6702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +6703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_PulseFinishedCallback(htim); +6704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +6705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +6707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM DMA Delay Pulse half complete callback. +6711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param hdma pointer to DMA handle. +6712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +6713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** void TIM_DMADelayPulseHalfCplt(DMA_HandleTypeDef *hdma) +6715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +6717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma == htim->hdma[TIM_DMA_ID_CC1]) +6719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; +6721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) +6723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; +6725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) +6727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; +6729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) +6731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; +6733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +6735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* nothing to do */ +6737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +6740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PWM_PulseFinishedHalfCpltCallback(htim); +6741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +6742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_PulseFinishedHalfCpltCallback(htim); +6743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +6744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +6746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM DMA Capture complete callback. +6750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param hdma pointer to DMA handle. +6751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +6752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** void TIM_DMACaptureCplt(DMA_HandleTypeDef *hdma) +6754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +6756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma == htim->hdma[TIM_DMA_ID_CC1]) + ARM GAS /tmp/ccPLZXyC.s page 120 + + +6758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; +6760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma->Init.Mode == DMA_NORMAL) +6762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +6764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +6765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) +6768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; +6770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma->Init.Mode == DMA_NORMAL) +6772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +6774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +6775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) +6778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; +6780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma->Init.Mode == DMA_NORMAL) +6782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); +6784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); +6785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) +6788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; +6790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma->Init.Mode == DMA_NORMAL) +6792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); +6794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); +6795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +6798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* nothing to do */ +6800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +6803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_CaptureCallback(htim); +6804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +6805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_IC_CaptureCallback(htim); +6806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +6807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +6809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM DMA Capture half complete callback. +6813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param hdma pointer to DMA handle. +6814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None + ARM GAS /tmp/ccPLZXyC.s page 121 + + +6815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** void TIM_DMACaptureHalfCplt(DMA_HandleTypeDef *hdma) +6817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +6819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (hdma == htim->hdma[TIM_DMA_ID_CC1]) +6821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; +6823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) +6825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; +6827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) +6829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; +6831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC4]) +6833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; +6835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +6837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* nothing to do */ +6839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +6842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->IC_CaptureHalfCpltCallback(htim); +6843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +6844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_IC_CaptureHalfCpltCallback(htim); +6845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +6846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +6848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM DMA Period Elapse complete callback. +6852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param hdma pointer to DMA handle. +6853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +6854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_DMAPeriodElapsedCplt(DMA_HandleTypeDef *hdma) +6856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +6858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->hdma[TIM_DMA_ID_UPDATE]->Init.Mode == DMA_NORMAL) +6860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +6862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +6865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PeriodElapsedCallback(htim); +6866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +6867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PeriodElapsedCallback(htim); +6868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +6869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + ARM GAS /tmp/ccPLZXyC.s page 122 + + +6872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM DMA Period Elapse half complete callback. +6873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param hdma pointer to DMA handle. +6874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +6875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma) +6877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +6879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +6881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->PeriodElapsedHalfCpltCallback(htim); +6882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +6883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PeriodElapsedHalfCpltCallback(htim); +6884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +6885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM DMA Trigger callback. +6889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param hdma pointer to DMA handle. +6890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +6891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma) +6893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +6895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (htim->hdma[TIM_DMA_ID_TRIGGER]->Init.Mode == DMA_NORMAL) +6897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->State = HAL_TIM_STATE_READY; +6899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +6902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->TriggerCallback(htim); +6903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +6904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_TriggerCallback(htim); +6905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +6906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief TIM DMA Trigger half complete callback. +6910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param hdma pointer to DMA handle. +6911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +6912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma) +6914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +6916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +6918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->TriggerHalfCpltCallback(htim); +6919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #else +6920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_TriggerHalfCpltCallback(htim); +6921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +6922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Time Base configuration +6926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx TIM peripheral +6927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Structure TIM Base configuration structure +6928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None + ARM GAS /tmp/ccPLZXyC.s page 123 + + +6929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure) +6931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr1; +6933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr1 = TIMx->CR1; +6934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set TIM Time Base Unit parameters ---------------------------------------*/ +6936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) +6937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Counter Mode */ +6939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); +6940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr1 |= Structure->CounterMode; +6941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) +6944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the clock division */ +6946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr1 &= ~TIM_CR1_CKD; +6947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr1 |= (uint32_t)Structure->ClockDivision; +6948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the auto-reload preload */ +6951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); +6952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CR1 = tmpcr1; +6954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Autoreload value */ +6956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->ARR = (uint32_t)Structure->Period ; +6957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Prescaler value */ +6959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->PSC = Structure->Prescaler; +6960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) +6962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Repetition Counter value */ +6964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->RCR = Structure->RepetitionCounter; +6965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Generate an update event to reload the Prescaler +6968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** and the repetition counter (only for advanced timer) value immediately */ +6969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->EGR = TIM_EGR_UG; +6970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check if the update flag is set after the Update Generation, if so clear the UIF flag */ +6972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (HAL_IS_BIT_SET(TIMx->SR, TIM_FLAG_UPDATE)) +6973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +6974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Clear the update flag */ +6975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** CLEAR_BIT(TIMx->SR, TIM_FLAG_UPDATE); +6976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +6978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +6980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Timer Output Compare 1 configuration +6981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +6982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OC_Config The output configuration structure +6983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +6984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +6985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) + ARM GAS /tmp/ccPLZXyC.s page 124 + + +6986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 28 .loc 1 6986 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 33 .loc 1 6986 1 is_stmt 0 view .LVU1 + 34 0000 70B4 push {r4, r5, r6} + 35 .LCFI0: + 36 .cfi_def_cfa_offset 12 + 37 .cfi_offset 4, -12 + 38 .cfi_offset 5, -8 + 39 .cfi_offset 6, -4 +6987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmrx; + 40 .loc 1 6987 3 is_stmt 1 view .LVU2 +6988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 41 .loc 1 6988 3 view .LVU3 +6989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr2; + 42 .loc 1 6989 3 view .LVU4 +6990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCER register value */ +6992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; + 43 .loc 1 6992 3 view .LVU5 + 44 .loc 1 6992 11 is_stmt 0 view .LVU6 + 45 0002 036A ldr r3, [r0, #32] + 46 .LVL1: +6993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 1: Reset the CC1E Bit */ +6995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC1E; + 47 .loc 1 6995 3 is_stmt 1 view .LVU7 + 48 .loc 1 6995 14 is_stmt 0 view .LVU8 + 49 0004 026A ldr r2, [r0, #32] + 50 0006 22F00102 bic r2, r2, #1 + 51 000a 0262 str r2, [r0, #32] +6996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +6997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CR2 register value */ +6998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 = TIMx->CR2; + 52 .loc 1 6998 3 is_stmt 1 view .LVU9 + 53 .loc 1 6998 10 is_stmt 0 view .LVU10 + 54 000c 4268 ldr r2, [r0, #4] + 55 .LVL2: +6999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCMR1 register value */ +7001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx = TIMx->CCMR1; + 56 .loc 1 7001 3 is_stmt 1 view .LVU11 + 57 .loc 1 7001 12 is_stmt 0 view .LVU12 + 58 000e 8569 ldr r5, [r0, #24] + 59 .LVL3: +7002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare Mode Bits */ +7004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~TIM_CCMR1_OC1M; + 60 .loc 1 7004 3 is_stmt 1 view .LVU13 +7005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~TIM_CCMR1_CC1S; + 61 .loc 1 7005 3 view .LVU14 + 62 .loc 1 7005 12 is_stmt 0 view .LVU15 + 63 0010 124C ldr r4, .L5 + 64 0012 2C40 ands r4, r4, r5 + ARM GAS /tmp/ccPLZXyC.s page 125 + + + 65 .LVL4: +7006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Output Compare Mode */ +7007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx |= OC_Config->OCMode; + 66 .loc 1 7007 3 is_stmt 1 view .LVU16 + 67 .loc 1 7007 24 is_stmt 0 view .LVU17 + 68 0014 0D68 ldr r5, [r1] + 69 .loc 1 7007 12 view .LVU18 + 70 0016 2543 orrs r5, r5, r4 + 71 .LVL5: +7008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Polarity level */ +7010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC1P; + 72 .loc 1 7010 3 is_stmt 1 view .LVU19 + 73 .loc 1 7010 11 is_stmt 0 view .LVU20 + 74 0018 23F00204 bic r4, r3, #2 + 75 .LVL6: +7011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Compare Polarity */ +7012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= OC_Config->OCPolarity; + 76 .loc 1 7012 3 is_stmt 1 view .LVU21 + 77 .loc 1 7012 23 is_stmt 0 view .LVU22 + 78 001c 8B68 ldr r3, [r1, #8] + 79 .loc 1 7012 11 view .LVU23 + 80 001e 2343 orrs r3, r3, r4 + 81 .LVL7: +7013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) + 82 .loc 1 7014 3 is_stmt 1 view .LVU24 + 83 .loc 1 7014 7 is_stmt 0 view .LVU25 + 84 0020 0F4C ldr r4, .L5+4 + 85 0022 104E ldr r6, .L5+8 + 86 .loc 1 7014 6 view .LVU26 + 87 0024 B042 cmp r0, r6 + 88 0026 18BF it ne + 89 0028 A042 cmpne r0, r4 + 90 002a 0CBF ite eq + 91 002c 0124 moveq r4, #1 + 92 002e 0024 movne r4, #0 + 93 0030 05D1 bne .L2 +7015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check parameters */ +7017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + 94 .loc 1 7017 5 is_stmt 1 view .LVU27 +7018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output N Polarity level */ +7020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC1NP; + 95 .loc 1 7020 5 view .LVU28 + 96 .loc 1 7020 13 is_stmt 0 view .LVU29 + 97 0032 23F00803 bic r3, r3, #8 + 98 .LVL8: +7021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Polarity */ +7022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= OC_Config->OCNPolarity; + 99 .loc 1 7022 5 is_stmt 1 view .LVU30 + 100 .loc 1 7022 25 is_stmt 0 view .LVU31 + 101 0036 CE68 ldr r6, [r1, #12] + 102 .loc 1 7022 13 view .LVU32 + 103 0038 3343 orrs r3, r3, r6 + 104 .LVL9: + ARM GAS /tmp/ccPLZXyC.s page 126 + + +7023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output N State */ +7024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC1NE; + 105 .loc 1 7024 5 is_stmt 1 view .LVU33 + 106 .loc 1 7024 13 is_stmt 0 view .LVU34 + 107 003a 23F00403 bic r3, r3, #4 + 108 .LVL10: + 109 .L2: +7025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 110 .loc 1 7027 3 is_stmt 1 view .LVU35 + 111 .loc 1 7027 6 is_stmt 0 view .LVU36 + 112 003e 2CB1 cbz r4, .L3 +7028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check parameters */ +7030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + 113 .loc 1 7030 5 is_stmt 1 view .LVU37 +7031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + 114 .loc 1 7031 5 view .LVU38 +7032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare and Output Compare N IDLE State */ +7034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_OIS1; + 115 .loc 1 7034 5 view .LVU39 + 116 .LVL11: +7035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_OIS1N; + 117 .loc 1 7035 5 view .LVU40 + 118 .loc 1 7035 12 is_stmt 0 view .LVU41 + 119 0040 22F44072 bic r2, r2, #768 + 120 .LVL12: +7036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Idle state */ +7037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 |= OC_Config->OCIdleState; + 121 .loc 1 7037 5 is_stmt 1 view .LVU42 + 122 .loc 1 7037 24 is_stmt 0 view .LVU43 + 123 0044 4C69 ldr r4, [r1, #20] + 124 .loc 1 7037 12 view .LVU44 + 125 0046 1443 orrs r4, r4, r2 + 126 .LVL13: +7038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Idle state */ +7039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 |= OC_Config->OCNIdleState; + 127 .loc 1 7039 5 is_stmt 1 view .LVU45 + 128 .loc 1 7039 24 is_stmt 0 view .LVU46 + 129 0048 8A69 ldr r2, [r1, #24] + 130 .loc 1 7039 12 view .LVU47 + 131 004a 2243 orrs r2, r2, r4 + 132 .LVL14: + 133 .L3: +7040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CR2 */ +7043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CR2 = tmpcr2; + 134 .loc 1 7043 3 is_stmt 1 view .LVU48 + 135 .loc 1 7043 13 is_stmt 0 view .LVU49 + 136 004c 4260 str r2, [r0, #4] +7044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR1 */ +7046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR1 = tmpccmrx; + 137 .loc 1 7046 3 is_stmt 1 view .LVU50 + ARM GAS /tmp/ccPLZXyC.s page 127 + + + 138 .loc 1 7046 15 is_stmt 0 view .LVU51 + 139 004e 8561 str r5, [r0, #24] +7047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Capture Compare Register value */ +7049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCR1 = OC_Config->Pulse; + 140 .loc 1 7049 3 is_stmt 1 view .LVU52 + 141 .loc 1 7049 25 is_stmt 0 view .LVU53 + 142 0050 4A68 ldr r2, [r1, #4] + 143 .LVL15: + 144 .loc 1 7049 14 view .LVU54 + 145 0052 4263 str r2, [r0, #52] +7050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCER */ +7052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 146 .loc 1 7052 3 is_stmt 1 view .LVU55 + 147 .loc 1 7052 14 is_stmt 0 view .LVU56 + 148 0054 0362 str r3, [r0, #32] +7053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 149 .loc 1 7053 1 view .LVU57 + 150 0056 70BC pop {r4, r5, r6} + 151 .LCFI1: + 152 .cfi_restore 6 + 153 .cfi_restore 5 + 154 .cfi_restore 4 + 155 .cfi_def_cfa_offset 0 + 156 .LVL16: + 157 .loc 1 7053 1 view .LVU58 + 158 0058 7047 bx lr + 159 .L6: + 160 005a 00BF .align 2 + 161 .L5: + 162 005c 8CFFFEFF .word -65652 + 163 0060 00000140 .word 1073807360 + 164 0064 00040140 .word 1073808384 + 165 .cfi_endproc + 166 .LFE246: + 168 .section .text.TIM_OC3_SetConfig,"ax",%progbits + 169 .align 1 + 170 .syntax unified + 171 .thumb + 172 .thumb_func + 173 .fpu fpv5-d16 + 175 TIM_OC3_SetConfig: + 176 .LVL17: + 177 .LFB248: +7054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Timer Output Compare 2 configuration +7057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OC_Config The output configuration structure +7059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +7062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmrx; +7064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; +7065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr2; + ARM GAS /tmp/ccPLZXyC.s page 128 + + +7066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCER register value */ +7068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; +7069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 2: Reset the CC2E Bit */ +7071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC2E; +7072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CR2 register value */ +7074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 = TIMx->CR2; +7075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCMR1 register value */ +7077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx = TIMx->CCMR1; +7078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare mode and Capture/Compare selection Bits */ +7080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~TIM_CCMR1_OC2M; +7081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~TIM_CCMR1_CC2S; +7082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Output Compare Mode */ +7084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx |= (OC_Config->OCMode << 8U); +7085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Polarity level */ +7087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC2P; +7088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Compare Polarity */ +7089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (OC_Config->OCPolarity << 4U); +7090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) +7092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); +7094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output N Polarity level */ +7096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC2NP; +7097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Polarity */ +7098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (OC_Config->OCNPolarity << 4U); +7099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output N State */ +7100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC2NE; +7101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) +7104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check parameters */ +7106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); +7107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); +7108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare and Output Compare N IDLE State */ +7110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_OIS2; +7111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_OIS2N; +7112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Idle state */ +7113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 |= (OC_Config->OCIdleState << 2U); +7114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Idle state */ +7115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 |= (OC_Config->OCNIdleState << 2U); +7116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CR2 */ +7119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CR2 = tmpcr2; +7120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR1 */ +7122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR1 = tmpccmrx; + ARM GAS /tmp/ccPLZXyC.s page 129 + + +7123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Capture Compare Register value */ +7125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCR2 = OC_Config->Pulse; +7126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCER */ +7128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; +7129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Timer Output Compare 3 configuration +7133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OC_Config The output configuration structure +7135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +7138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 178 .loc 1 7138 1 is_stmt 1 view -0 + 179 .cfi_startproc + 180 @ args = 0, pretend = 0, frame = 0 + 181 @ frame_needed = 0, uses_anonymous_args = 0 + 182 @ link register save eliminated. + 183 .loc 1 7138 1 is_stmt 0 view .LVU60 + 184 0000 70B4 push {r4, r5, r6} + 185 .LCFI2: + 186 .cfi_def_cfa_offset 12 + 187 .cfi_offset 4, -12 + 188 .cfi_offset 5, -8 + 189 .cfi_offset 6, -4 +7139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmrx; + 190 .loc 1 7139 3 is_stmt 1 view .LVU61 +7140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 191 .loc 1 7140 3 view .LVU62 +7141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr2; + 192 .loc 1 7141 3 view .LVU63 +7142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCER register value */ +7144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; + 193 .loc 1 7144 3 view .LVU64 + 194 .loc 1 7144 11 is_stmt 0 view .LVU65 + 195 0002 036A ldr r3, [r0, #32] + 196 .LVL18: +7145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 3: Reset the CC2E Bit */ +7147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC3E; + 197 .loc 1 7147 3 is_stmt 1 view .LVU66 + 198 .loc 1 7147 14 is_stmt 0 view .LVU67 + 199 0004 026A ldr r2, [r0, #32] + 200 0006 22F48072 bic r2, r2, #256 + 201 000a 0262 str r2, [r0, #32] +7148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CR2 register value */ +7150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 = TIMx->CR2; + 202 .loc 1 7150 3 is_stmt 1 view .LVU68 + 203 .loc 1 7150 10 is_stmt 0 view .LVU69 + 204 000c 4268 ldr r2, [r0, #4] + 205 .LVL19: +7151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 130 + + +7152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCMR2 register value */ +7153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx = TIMx->CCMR2; + 206 .loc 1 7153 3 is_stmt 1 view .LVU70 + 207 .loc 1 7153 12 is_stmt 0 view .LVU71 + 208 000e C569 ldr r5, [r0, #28] + 209 .LVL20: +7154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare mode and Capture/Compare selection Bits */ +7156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~TIM_CCMR2_OC3M; + 210 .loc 1 7156 3 is_stmt 1 view .LVU72 +7157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~TIM_CCMR2_CC3S; + 211 .loc 1 7157 3 view .LVU73 + 212 .loc 1 7157 12 is_stmt 0 view .LVU74 + 213 0010 144C ldr r4, .L11 + 214 0012 2C40 ands r4, r4, r5 + 215 .LVL21: +7158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Output Compare Mode */ +7159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx |= OC_Config->OCMode; + 216 .loc 1 7159 3 is_stmt 1 view .LVU75 + 217 .loc 1 7159 24 is_stmt 0 view .LVU76 + 218 0014 0E68 ldr r6, [r1] + 219 .loc 1 7159 12 view .LVU77 + 220 0016 2643 orrs r6, r6, r4 + 221 .LVL22: +7160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Polarity level */ +7162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC3P; + 222 .loc 1 7162 3 is_stmt 1 view .LVU78 + 223 .loc 1 7162 11 is_stmt 0 view .LVU79 + 224 0018 23F40073 bic r3, r3, #512 + 225 .LVL23: +7163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Compare Polarity */ +7164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (OC_Config->OCPolarity << 8U); + 226 .loc 1 7164 3 is_stmt 1 view .LVU80 + 227 .loc 1 7164 24 is_stmt 0 view .LVU81 + 228 001c 8C68 ldr r4, [r1, #8] + 229 .loc 1 7164 11 view .LVU82 + 230 001e 43EA0423 orr r3, r3, r4, lsl #8 + 231 .LVL24: +7165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) + 232 .loc 1 7166 3 is_stmt 1 view .LVU83 + 233 .loc 1 7166 7 is_stmt 0 view .LVU84 + 234 0022 114C ldr r4, .L11+4 + 235 0024 114D ldr r5, .L11+8 + 236 .loc 1 7166 6 view .LVU85 + 237 0026 A842 cmp r0, r5 + 238 0028 18BF it ne + 239 002a A042 cmpne r0, r4 + 240 002c 0CBF ite eq + 241 002e 0124 moveq r4, #1 + 242 0030 0024 movne r4, #0 + 243 0032 06D1 bne .L8 +7167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); + 244 .loc 1 7168 5 is_stmt 1 view .LVU86 +7169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 131 + + +7170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output N Polarity level */ +7171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC3NP; + 245 .loc 1 7171 5 view .LVU87 + 246 .loc 1 7171 13 is_stmt 0 view .LVU88 + 247 0034 23F40063 bic r3, r3, #2048 + 248 .LVL25: +7172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Polarity */ +7173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (OC_Config->OCNPolarity << 8U); + 249 .loc 1 7173 5 is_stmt 1 view .LVU89 + 250 .loc 1 7173 26 is_stmt 0 view .LVU90 + 251 0038 CD68 ldr r5, [r1, #12] + 252 .loc 1 7173 13 view .LVU91 + 253 003a 43EA0523 orr r3, r3, r5, lsl #8 + 254 .LVL26: +7174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output N State */ +7175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC3NE; + 255 .loc 1 7175 5 is_stmt 1 view .LVU92 + 256 .loc 1 7175 13 is_stmt 0 view .LVU93 + 257 003e 23F48063 bic r3, r3, #1024 + 258 .LVL27: + 259 .L8: +7176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 260 .loc 1 7178 3 is_stmt 1 view .LVU94 + 261 .loc 1 7178 6 is_stmt 0 view .LVU95 + 262 0042 3CB1 cbz r4, .L9 +7179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check parameters */ +7181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); + 263 .loc 1 7181 5 is_stmt 1 view .LVU96 +7182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + 264 .loc 1 7182 5 view .LVU97 +7183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare and Output Compare N IDLE State */ +7185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_OIS3; + 265 .loc 1 7185 5 view .LVU98 + 266 .LVL28: +7186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_OIS3N; + 267 .loc 1 7186 5 view .LVU99 + 268 .loc 1 7186 12 is_stmt 0 view .LVU100 + 269 0044 22F44052 bic r2, r2, #12288 + 270 .LVL29: +7187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Idle state */ +7188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 |= (OC_Config->OCIdleState << 4U); + 271 .loc 1 7188 5 is_stmt 1 view .LVU101 + 272 .loc 1 7188 25 is_stmt 0 view .LVU102 + 273 0048 4C69 ldr r4, [r1, #20] + 274 .loc 1 7188 12 view .LVU103 + 275 004a 42EA0412 orr r2, r2, r4, lsl #4 + 276 .LVL30: +7189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Idle state */ +7190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 |= (OC_Config->OCNIdleState << 4U); + 277 .loc 1 7190 5 is_stmt 1 view .LVU104 + 278 .loc 1 7190 25 is_stmt 0 view .LVU105 + 279 004e 8C69 ldr r4, [r1, #24] + 280 .loc 1 7190 12 view .LVU106 + ARM GAS /tmp/ccPLZXyC.s page 132 + + + 281 0050 42EA0412 orr r2, r2, r4, lsl #4 + 282 .LVL31: + 283 .L9: +7191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CR2 */ +7194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CR2 = tmpcr2; + 284 .loc 1 7194 3 is_stmt 1 view .LVU107 + 285 .loc 1 7194 13 is_stmt 0 view .LVU108 + 286 0054 4260 str r2, [r0, #4] +7195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR2 */ +7197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR2 = tmpccmrx; + 287 .loc 1 7197 3 is_stmt 1 view .LVU109 + 288 .loc 1 7197 15 is_stmt 0 view .LVU110 + 289 0056 C661 str r6, [r0, #28] +7198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Capture Compare Register value */ +7200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCR3 = OC_Config->Pulse; + 290 .loc 1 7200 3 is_stmt 1 view .LVU111 + 291 .loc 1 7200 25 is_stmt 0 view .LVU112 + 292 0058 4A68 ldr r2, [r1, #4] + 293 .LVL32: + 294 .loc 1 7200 14 view .LVU113 + 295 005a C263 str r2, [r0, #60] +7201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCER */ +7203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 296 .loc 1 7203 3 is_stmt 1 view .LVU114 + 297 .loc 1 7203 14 is_stmt 0 view .LVU115 + 298 005c 0362 str r3, [r0, #32] +7204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 299 .loc 1 7204 1 view .LVU116 + 300 005e 70BC pop {r4, r5, r6} + 301 .LCFI3: + 302 .cfi_restore 6 + 303 .cfi_restore 5 + 304 .cfi_restore 4 + 305 .cfi_def_cfa_offset 0 + 306 .LVL33: + 307 .loc 1 7204 1 view .LVU117 + 308 0060 7047 bx lr + 309 .L12: + 310 0062 00BF .align 2 + 311 .L11: + 312 0064 8CFFFEFF .word -65652 + 313 0068 00000140 .word 1073807360 + 314 006c 00040140 .word 1073808384 + 315 .cfi_endproc + 316 .LFE248: + 318 .section .text.TIM_OC4_SetConfig,"ax",%progbits + 319 .align 1 + 320 .syntax unified + 321 .thumb + 322 .thumb_func + 323 .fpu fpv5-d16 + 325 TIM_OC4_SetConfig: + ARM GAS /tmp/ccPLZXyC.s page 133 + + + 326 .LVL34: + 327 .LFB249: +7205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Timer Output Compare 4 configuration +7208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OC_Config The output configuration structure +7210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, const TIM_OC_InitTypeDef *OC_Config) +7213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 328 .loc 1 7213 1 is_stmt 1 view -0 + 329 .cfi_startproc + 330 @ args = 0, pretend = 0, frame = 0 + 331 @ frame_needed = 0, uses_anonymous_args = 0 + 332 @ link register save eliminated. + 333 .loc 1 7213 1 is_stmt 0 view .LVU119 + 334 0000 70B4 push {r4, r5, r6} + 335 .LCFI4: + 336 .cfi_def_cfa_offset 12 + 337 .cfi_offset 4, -12 + 338 .cfi_offset 5, -8 + 339 .cfi_offset 6, -4 +7214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmrx; + 340 .loc 1 7214 3 is_stmt 1 view .LVU120 +7215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 341 .loc 1 7215 3 view .LVU121 +7216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr2; + 342 .loc 1 7216 3 view .LVU122 +7217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCER register value */ +7219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; + 343 .loc 1 7219 3 view .LVU123 + 344 .loc 1 7219 11 is_stmt 0 view .LVU124 + 345 0002 036A ldr r3, [r0, #32] + 346 .LVL35: +7220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 4: Reset the CC4E Bit */ +7222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC4E; + 347 .loc 1 7222 3 is_stmt 1 view .LVU125 + 348 .loc 1 7222 14 is_stmt 0 view .LVU126 + 349 0004 026A ldr r2, [r0, #32] + 350 0006 22F48052 bic r2, r2, #4096 + 351 000a 0262 str r2, [r0, #32] +7223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CR2 register value */ +7225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 = TIMx->CR2; + 352 .loc 1 7225 3 is_stmt 1 view .LVU127 + 353 .loc 1 7225 10 is_stmt 0 view .LVU128 + 354 000c 4468 ldr r4, [r0, #4] + 355 .LVL36: +7226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCMR2 register value */ +7228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx = TIMx->CCMR2; + 356 .loc 1 7228 3 is_stmt 1 view .LVU129 + 357 .loc 1 7228 12 is_stmt 0 view .LVU130 + 358 000e C569 ldr r5, [r0, #28] + ARM GAS /tmp/ccPLZXyC.s page 134 + + + 359 .LVL37: +7229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare mode and Capture/Compare selection Bits */ +7231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~TIM_CCMR2_OC4M; + 360 .loc 1 7231 3 is_stmt 1 view .LVU131 +7232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~TIM_CCMR2_CC4S; + 361 .loc 1 7232 3 view .LVU132 + 362 .loc 1 7232 12 is_stmt 0 view .LVU133 + 363 0010 0D4A ldr r2, .L16 + 364 0012 2A40 ands r2, r2, r5 + 365 .LVL38: +7233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Output Compare Mode */ +7235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx |= (OC_Config->OCMode << 8U); + 366 .loc 1 7235 3 is_stmt 1 view .LVU134 + 367 .loc 1 7235 25 is_stmt 0 view .LVU135 + 368 0014 0D68 ldr r5, [r1] + 369 .loc 1 7235 12 view .LVU136 + 370 0016 42EA0522 orr r2, r2, r5, lsl #8 + 371 .LVL39: +7236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Polarity level */ +7238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC4P; + 372 .loc 1 7238 3 is_stmt 1 view .LVU137 + 373 .loc 1 7238 11 is_stmt 0 view .LVU138 + 374 001a 23F40053 bic r3, r3, #8192 + 375 .LVL40: +7239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Compare Polarity */ +7240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (OC_Config->OCPolarity << 12U); + 376 .loc 1 7240 3 is_stmt 1 view .LVU139 + 377 .loc 1 7240 24 is_stmt 0 view .LVU140 + 378 001e 8D68 ldr r5, [r1, #8] + 379 .loc 1 7240 11 view .LVU141 + 380 0020 43EA0533 orr r3, r3, r5, lsl #12 + 381 .LVL41: +7241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 382 .loc 1 7242 3 is_stmt 1 view .LVU142 + 383 .loc 1 7242 6 is_stmt 0 view .LVU143 + 384 0024 094E ldr r6, .L16+4 + 385 0026 0A4D ldr r5, .L16+8 + 386 0028 A842 cmp r0, r5 + 387 002a 18BF it ne + 388 002c B042 cmpne r0, r6 + 389 002e 04D1 bne .L14 +7243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check parameters */ +7245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + 390 .loc 1 7245 5 is_stmt 1 view .LVU144 +7246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare IDLE State */ +7248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_OIS4; + 391 .loc 1 7248 5 view .LVU145 + 392 .loc 1 7248 12 is_stmt 0 view .LVU146 + 393 0030 24F48044 bic r4, r4, #16384 + 394 .LVL42: +7249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 135 + + +7250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Idle state */ +7251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 |= (OC_Config->OCIdleState << 6U); + 395 .loc 1 7251 5 is_stmt 1 view .LVU147 + 396 .loc 1 7251 25 is_stmt 0 view .LVU148 + 397 0034 4D69 ldr r5, [r1, #20] + 398 .loc 1 7251 12 view .LVU149 + 399 0036 44EA8514 orr r4, r4, r5, lsl #6 + 400 .LVL43: + 401 .L14: +7252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CR2 */ +7255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CR2 = tmpcr2; + 402 .loc 1 7255 3 is_stmt 1 view .LVU150 + 403 .loc 1 7255 13 is_stmt 0 view .LVU151 + 404 003a 4460 str r4, [r0, #4] +7256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR2 */ +7258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR2 = tmpccmrx; + 405 .loc 1 7258 3 is_stmt 1 view .LVU152 + 406 .loc 1 7258 15 is_stmt 0 view .LVU153 + 407 003c C261 str r2, [r0, #28] +7259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Capture Compare Register value */ +7261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCR4 = OC_Config->Pulse; + 408 .loc 1 7261 3 is_stmt 1 view .LVU154 + 409 .loc 1 7261 25 is_stmt 0 view .LVU155 + 410 003e 4A68 ldr r2, [r1, #4] + 411 .LVL44: + 412 .loc 1 7261 14 view .LVU156 + 413 0040 0264 str r2, [r0, #64] + 414 .LVL45: +7262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCER */ +7264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 415 .loc 1 7264 3 is_stmt 1 view .LVU157 + 416 .loc 1 7264 14 is_stmt 0 view .LVU158 + 417 0042 0362 str r3, [r0, #32] +7265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 418 .loc 1 7265 1 view .LVU159 + 419 0044 70BC pop {r4, r5, r6} + 420 .LCFI5: + 421 .cfi_restore 6 + 422 .cfi_restore 5 + 423 .cfi_restore 4 + 424 .cfi_def_cfa_offset 0 + 425 .LVL46: + 426 .loc 1 7265 1 view .LVU160 + 427 0046 7047 bx lr + 428 .L17: + 429 .align 2 + 430 .L16: + 431 0048 FF8CFFFE .word -16806657 + 432 004c 00000140 .word 1073807360 + 433 0050 00040140 .word 1073808384 + 434 .cfi_endproc + 435 .LFE249: + ARM GAS /tmp/ccPLZXyC.s page 136 + + + 437 .section .text.TIM_OC5_SetConfig,"ax",%progbits + 438 .align 1 + 439 .syntax unified + 440 .thumb + 441 .thumb_func + 442 .fpu fpv5-d16 + 444 TIM_OC5_SetConfig: + 445 .LVL47: + 446 .LFB250: +7266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Timer Output Compare 5 configuration +7269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OC_Config The output configuration structure +7271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, +7274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** const TIM_OC_InitTypeDef *OC_Config) +7275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 447 .loc 1 7275 1 is_stmt 1 view -0 + 448 .cfi_startproc + 449 @ args = 0, pretend = 0, frame = 0 + 450 @ frame_needed = 0, uses_anonymous_args = 0 + 451 @ link register save eliminated. + 452 .loc 1 7275 1 is_stmt 0 view .LVU162 + 453 0000 70B4 push {r4, r5, r6} + 454 .LCFI6: + 455 .cfi_def_cfa_offset 12 + 456 .cfi_offset 4, -12 + 457 .cfi_offset 5, -8 + 458 .cfi_offset 6, -4 +7276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmrx; + 459 .loc 1 7276 3 is_stmt 1 view .LVU163 +7277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 460 .loc 1 7277 3 view .LVU164 +7278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr2; + 461 .loc 1 7278 3 view .LVU165 +7279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCER register value */ +7281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; + 462 .loc 1 7281 3 view .LVU166 + 463 .loc 1 7281 11 is_stmt 0 view .LVU167 + 464 0002 036A ldr r3, [r0, #32] + 465 .LVL48: +7282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the output: Reset the CCxE Bit */ +7284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC5E; + 466 .loc 1 7284 3 is_stmt 1 view .LVU168 + 467 .loc 1 7284 14 is_stmt 0 view .LVU169 + 468 0004 026A ldr r2, [r0, #32] + 469 0006 22F48032 bic r2, r2, #65536 + 470 000a 0262 str r2, [r0, #32] +7285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CR2 register value */ +7287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 = TIMx->CR2; + 471 .loc 1 7287 3 is_stmt 1 view .LVU170 + 472 .loc 1 7287 10 is_stmt 0 view .LVU171 + ARM GAS /tmp/ccPLZXyC.s page 137 + + + 473 000c 4468 ldr r4, [r0, #4] + 474 .LVL49: +7288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCMR1 register value */ +7289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx = TIMx->CCMR3; + 475 .loc 1 7289 3 is_stmt 1 view .LVU172 + 476 .loc 1 7289 12 is_stmt 0 view .LVU173 + 477 000e 426D ldr r2, [r0, #84] + 478 .LVL50: +7290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare Mode Bits */ +7292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~(TIM_CCMR3_OC5M); + 479 .loc 1 7292 3 is_stmt 1 view .LVU174 + 480 .loc 1 7292 12 is_stmt 0 view .LVU175 + 481 0010 0D4D ldr r5, .L21 + 482 0012 1540 ands r5, r5, r2 + 483 .LVL51: +7293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Output Compare Mode */ +7294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx |= OC_Config->OCMode; + 484 .loc 1 7294 3 is_stmt 1 view .LVU176 + 485 .loc 1 7294 24 is_stmt 0 view .LVU177 + 486 0014 0A68 ldr r2, [r1] + 487 .loc 1 7294 12 view .LVU178 + 488 0016 2A43 orrs r2, r2, r5 + 489 .LVL52: +7295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Polarity level */ +7297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~TIM_CCER_CC5P; + 490 .loc 1 7297 3 is_stmt 1 view .LVU179 + 491 .loc 1 7297 11 is_stmt 0 view .LVU180 + 492 0018 23F40033 bic r3, r3, #131072 + 493 .LVL53: +7298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Compare Polarity */ +7299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (OC_Config->OCPolarity << 16U); + 494 .loc 1 7299 3 is_stmt 1 view .LVU181 + 495 .loc 1 7299 24 is_stmt 0 view .LVU182 + 496 001c 8D68 ldr r5, [r1, #8] + 497 .loc 1 7299 11 view .LVU183 + 498 001e 43EA0543 orr r3, r3, r5, lsl #16 + 499 .LVL54: +7300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 500 .loc 1 7301 3 is_stmt 1 view .LVU184 + 501 .loc 1 7301 6 is_stmt 0 view .LVU185 + 502 0022 0A4E ldr r6, .L21+4 + 503 0024 0A4D ldr r5, .L21+8 + 504 0026 A842 cmp r0, r5 + 505 0028 18BF it ne + 506 002a B042 cmpne r0, r6 + 507 002c 04D1 bne .L19 +7302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare IDLE State */ +7304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_OIS5; + 508 .loc 1 7304 5 is_stmt 1 view .LVU186 + 509 .loc 1 7304 12 is_stmt 0 view .LVU187 + 510 002e 24F48034 bic r4, r4, #65536 + 511 .LVL55: +7305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Idle state */ + ARM GAS /tmp/ccPLZXyC.s page 138 + + +7306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 |= (OC_Config->OCIdleState << 8U); + 512 .loc 1 7306 5 is_stmt 1 view .LVU188 + 513 .loc 1 7306 25 is_stmt 0 view .LVU189 + 514 0032 4D69 ldr r5, [r1, #20] + 515 .loc 1 7306 12 view .LVU190 + 516 0034 44EA0524 orr r4, r4, r5, lsl #8 + 517 .LVL56: + 518 .L19: +7307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CR2 */ +7309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CR2 = tmpcr2; + 519 .loc 1 7309 3 is_stmt 1 view .LVU191 + 520 .loc 1 7309 13 is_stmt 0 view .LVU192 + 521 0038 4460 str r4, [r0, #4] +7310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR3 */ +7312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR3 = tmpccmrx; + 522 .loc 1 7312 3 is_stmt 1 view .LVU193 + 523 .loc 1 7312 15 is_stmt 0 view .LVU194 + 524 003a 4265 str r2, [r0, #84] +7313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Capture Compare Register value */ +7315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCR5 = OC_Config->Pulse; + 525 .loc 1 7315 3 is_stmt 1 view .LVU195 + 526 .loc 1 7315 25 is_stmt 0 view .LVU196 + 527 003c 4A68 ldr r2, [r1, #4] + 528 .LVL57: + 529 .loc 1 7315 14 view .LVU197 + 530 003e 8265 str r2, [r0, #88] + 531 .LVL58: +7316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCER */ +7318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 532 .loc 1 7318 3 is_stmt 1 view .LVU198 + 533 .loc 1 7318 14 is_stmt 0 view .LVU199 + 534 0040 0362 str r3, [r0, #32] +7319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 535 .loc 1 7319 1 view .LVU200 + 536 0042 70BC pop {r4, r5, r6} + 537 .LCFI7: + 538 .cfi_restore 6 + 539 .cfi_restore 5 + 540 .cfi_restore 4 + 541 .cfi_def_cfa_offset 0 + 542 .LVL59: + 543 .loc 1 7319 1 view .LVU201 + 544 0044 7047 bx lr + 545 .L22: + 546 0046 00BF .align 2 + 547 .L21: + 548 0048 8FFFFEFF .word -65649 + 549 004c 00000140 .word 1073807360 + 550 0050 00040140 .word 1073808384 + 551 .cfi_endproc + 552 .LFE250: + 554 .section .text.TIM_OC6_SetConfig,"ax",%progbits + 555 .align 1 + ARM GAS /tmp/ccPLZXyC.s page 139 + + + 556 .syntax unified + 557 .thumb + 558 .thumb_func + 559 .fpu fpv5-d16 + 561 TIM_OC6_SetConfig: + 562 .LVL60: + 563 .LFB251: +7320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Timer Output Compare 6 configuration +7323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param OC_Config The output configuration structure +7325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, +7328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** const TIM_OC_InitTypeDef *OC_Config) +7329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 564 .loc 1 7329 1 is_stmt 1 view -0 + 565 .cfi_startproc + 566 @ args = 0, pretend = 0, frame = 0 + 567 @ frame_needed = 0, uses_anonymous_args = 0 + 568 @ link register save eliminated. + 569 .loc 1 7329 1 is_stmt 0 view .LVU203 + 570 0000 70B4 push {r4, r5, r6} + 571 .LCFI8: + 572 .cfi_def_cfa_offset 12 + 573 .cfi_offset 4, -12 + 574 .cfi_offset 5, -8 + 575 .cfi_offset 6, -4 +7330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmrx; + 576 .loc 1 7330 3 is_stmt 1 view .LVU204 +7331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 577 .loc 1 7331 3 view .LVU205 +7332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr2; + 578 .loc 1 7332 3 view .LVU206 +7333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCER register value */ +7335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; + 579 .loc 1 7335 3 view .LVU207 + 580 .loc 1 7335 11 is_stmt 0 view .LVU208 + 581 0002 036A ldr r3, [r0, #32] + 582 .LVL61: +7336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the output: Reset the CCxE Bit */ +7338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC6E; + 583 .loc 1 7338 3 is_stmt 1 view .LVU209 + 584 .loc 1 7338 14 is_stmt 0 view .LVU210 + 585 0004 026A ldr r2, [r0, #32] + 586 0006 22F48012 bic r2, r2, #1048576 + 587 000a 0262 str r2, [r0, #32] +7339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CR2 register value */ +7341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 = TIMx->CR2; + 588 .loc 1 7341 3 is_stmt 1 view .LVU211 + 589 .loc 1 7341 10 is_stmt 0 view .LVU212 + 590 000c 4468 ldr r4, [r0, #4] + 591 .LVL62: + ARM GAS /tmp/ccPLZXyC.s page 140 + + +7342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx CCMR1 register value */ +7343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx = TIMx->CCMR3; + 592 .loc 1 7343 3 is_stmt 1 view .LVU213 + 593 .loc 1 7343 12 is_stmt 0 view .LVU214 + 594 000e 456D ldr r5, [r0, #84] + 595 .LVL63: +7344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare Mode Bits */ +7346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~(TIM_CCMR3_OC6M); + 596 .loc 1 7346 3 is_stmt 1 view .LVU215 + 597 .loc 1 7346 12 is_stmt 0 view .LVU216 + 598 0010 0D4A ldr r2, .L26 + 599 0012 2A40 ands r2, r2, r5 + 600 .LVL64: +7347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Output Compare Mode */ +7348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx |= (OC_Config->OCMode << 8U); + 601 .loc 1 7348 3 is_stmt 1 view .LVU217 + 602 .loc 1 7348 25 is_stmt 0 view .LVU218 + 603 0014 0D68 ldr r5, [r1] + 604 .loc 1 7348 12 view .LVU219 + 605 0016 42EA0522 orr r2, r2, r5, lsl #8 + 606 .LVL65: +7349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Polarity level */ +7351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= (uint32_t)~TIM_CCER_CC6P; + 607 .loc 1 7351 3 is_stmt 1 view .LVU220 + 608 .loc 1 7351 11 is_stmt 0 view .LVU221 + 609 001a 23F40013 bic r3, r3, #2097152 + 610 .LVL66: +7352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Compare Polarity */ +7353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (OC_Config->OCPolarity << 20U); + 611 .loc 1 7353 3 is_stmt 1 view .LVU222 + 612 .loc 1 7353 24 is_stmt 0 view .LVU223 + 613 001e 8D68 ldr r5, [r1, #8] + 614 .loc 1 7353 11 view .LVU224 + 615 0020 43EA0553 orr r3, r3, r5, lsl #20 + 616 .LVL67: +7354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 617 .loc 1 7355 3 is_stmt 1 view .LVU225 + 618 .loc 1 7355 6 is_stmt 0 view .LVU226 + 619 0024 094E ldr r6, .L26+4 + 620 0026 0A4D ldr r5, .L26+8 + 621 0028 A842 cmp r0, r5 + 622 002a 18BF it ne + 623 002c B042 cmpne r0, r6 + 624 002e 04D1 bne .L24 +7356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output Compare IDLE State */ +7358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_OIS6; + 625 .loc 1 7358 5 is_stmt 1 view .LVU227 + 626 .loc 1 7358 12 is_stmt 0 view .LVU228 + 627 0030 24F48024 bic r4, r4, #262144 + 628 .LVL68: +7359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Idle state */ +7360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 |= (OC_Config->OCIdleState << 10U); + 629 .loc 1 7360 5 is_stmt 1 view .LVU229 + ARM GAS /tmp/ccPLZXyC.s page 141 + + + 630 .loc 1 7360 25 is_stmt 0 view .LVU230 + 631 0034 4D69 ldr r5, [r1, #20] + 632 .loc 1 7360 12 view .LVU231 + 633 0036 44EA8524 orr r4, r4, r5, lsl #10 + 634 .LVL69: + 635 .L24: +7361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CR2 */ +7364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CR2 = tmpcr2; + 636 .loc 1 7364 3 is_stmt 1 view .LVU232 + 637 .loc 1 7364 13 is_stmt 0 view .LVU233 + 638 003a 4460 str r4, [r0, #4] +7365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR3 */ +7367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR3 = tmpccmrx; + 639 .loc 1 7367 3 is_stmt 1 view .LVU234 + 640 .loc 1 7367 15 is_stmt 0 view .LVU235 + 641 003c 4265 str r2, [r0, #84] +7368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Capture Compare Register value */ +7370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCR6 = OC_Config->Pulse; + 642 .loc 1 7370 3 is_stmt 1 view .LVU236 + 643 .loc 1 7370 25 is_stmt 0 view .LVU237 + 644 003e 4A68 ldr r2, [r1, #4] + 645 .LVL70: + 646 .loc 1 7370 14 view .LVU238 + 647 0040 C265 str r2, [r0, #92] + 648 .LVL71: +7371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCER */ +7373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 649 .loc 1 7373 3 is_stmt 1 view .LVU239 + 650 .loc 1 7373 14 is_stmt 0 view .LVU240 + 651 0042 0362 str r3, [r0, #32] +7374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 652 .loc 1 7374 1 view .LVU241 + 653 0044 70BC pop {r4, r5, r6} + 654 .LCFI9: + 655 .cfi_restore 6 + 656 .cfi_restore 5 + 657 .cfi_restore 4 + 658 .cfi_def_cfa_offset 0 + 659 .LVL72: + 660 .loc 1 7374 1 view .LVU242 + 661 0046 7047 bx lr + 662 .L27: + 663 .align 2 + 664 .L26: + 665 0048 FF8FFFFE .word -16805889 + 666 004c 00000140 .word 1073807360 + 667 0050 00040140 .word 1073808384 + 668 .cfi_endproc + 669 .LFE251: + 671 .section .text.TIM_TI1_ConfigInputStage,"ax",%progbits + 672 .align 1 + 673 .syntax unified + ARM GAS /tmp/ccPLZXyC.s page 142 + + + 674 .thumb + 675 .thumb_func + 676 .fpu fpv5-d16 + 678 TIM_TI1_ConfigInputStage: + 679 .LVL73: + 680 .LFB254: +7375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Slave Timer configuration function +7378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param htim TIM handle +7379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param sSlaveConfig Slave timer configuration +7380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim, +7383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** const TIM_SlaveConfigTypeDef *sSlaveConfig) +7384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; +7386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; +7387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr1; +7388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; +7389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx SMCR register value */ +7391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = htim->Instance->SMCR; +7392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Trigger Selection Bits */ +7394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr &= ~TIM_SMCR_TS; +7395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Input Trigger source */ +7396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr |= sSlaveConfig->InputTrigger; +7397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the slave mode Bits */ +7399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr &= ~TIM_SMCR_SMS; +7400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the slave mode */ +7401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr |= sSlaveConfig->SlaveMode; +7402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx SMCR */ +7404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR = tmpsmcr; +7405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the trigger prescaler, filter, and polarity */ +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (sSlaveConfig->InputTrigger) +7408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_TS_ETRF: +7410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +7412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(htim->Instance)); +7413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERPRESCALER(sSlaveConfig->TriggerPrescaler)); +7414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); +7415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); +7416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the ETR Trigger source */ +7417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_ETR_SetConfig(htim->Instance, +7418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPrescaler, +7419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPolarity, +7420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerFilter); +7421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +7422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_TS_TI1F_ED: +7425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 143 + + +7426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +7427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); +7428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); +7429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (sSlaveConfig->SlaveMode == TIM_SLAVEMODE_GATED) +7431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; +7433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 1: Reset the CC1E Bit */ +7436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = htim->Instance->CCER; +7437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCER &= ~TIM_CCER_CC1E; +7438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 = htim->Instance->CCMR1; +7439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the filter */ +7441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~TIM_CCMR1_IC1F; +7442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4U); +7443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR1 and CCER registers */ +7445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 = tmpccmr1; +7446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCER = tmpccer; +7447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +7448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_TS_TI1FP1: +7451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +7453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); +7454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); +7455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); +7456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure TI1 Filter and Polarity */ +7458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI1_ConfigInputStage(htim->Instance, +7459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPolarity, +7460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerFilter); +7461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +7462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_TS_TI2FP2: +7465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +7467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); +7468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); +7469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); +7470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure TI2 Filter and Polarity */ +7472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_TI2_ConfigInputStage(htim->Instance, +7473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPolarity, +7474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerFilter); +7475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +7476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_TS_ITR0: +7479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_TS_ITR1: +7480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_TS_ITR2: +7481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** case TIM_TS_ITR3: +7482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 144 + + +7483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameter */ +7484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); +7485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +7486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** default: +7489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** status = HAL_ERROR; +7490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; +7491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return status; +7494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configure the TI1 as Input. +7498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral. +7499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICPolarity The Input Polarity. +7500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_RISING +7502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_FALLING +7503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_BOTHEDGE +7504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICSelection specifies the input to be used. +7505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 1 is selected to be connected to IC1. +7507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 1 is selected to be connected to IC2. +7508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_TRC: TIM Input 1 is selected to be connected to TRC. +7509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICFilter Specifies the Input Capture Filter. +7510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter must be a value between 0x00 and 0x0F. +7511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI2FP1 +7513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * (on channel2 path) is used as the input signal. Therefore CCMR1 must be +7514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * protected against un-initialized filter and polarity values. +7515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, +7517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t TIM_ICFilter) +7518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr1; +7520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; +7521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 1: Reset the CC1E Bit */ +7523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; +7524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC1E; +7525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 = TIMx->CCMR1; +7526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Input */ +7528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (IS_TIM_CC2_INSTANCE(TIMx) != RESET) +7529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~TIM_CCMR1_CC1S; +7531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= TIM_ICSelection; +7532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** else +7534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { +7535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= TIM_CCMR1_CC1S_0; +7536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the filter */ +7539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~TIM_CCMR1_IC1F; + ARM GAS /tmp/ccPLZXyC.s page 145 + + +7540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= ((TIM_ICFilter << 4U) & TIM_CCMR1_IC1F); +7541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Polarity and set the CC1E Bit */ +7543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); +7544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP)); +7545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR1 and CCER registers */ +7547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR1 = tmpccmr1; +7548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; +7549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } +7550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configure the Polarity and Filter for TI1. +7553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral. +7554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICPolarity The Input Polarity. +7555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_RISING +7557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_FALLING +7558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_BOTHEDGE +7559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICFilter Specifies the Input Capture Filter. +7560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter must be a value between 0x00 and 0x0F. +7561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFil +7564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 681 .loc 1 7564 1 is_stmt 1 view -0 + 682 .cfi_startproc + 683 @ args = 0, pretend = 0, frame = 0 + 684 @ frame_needed = 0, uses_anonymous_args = 0 + 685 @ link register save eliminated. + 686 .loc 1 7564 1 is_stmt 0 view .LVU244 + 687 0000 10B4 push {r4} + 688 .LCFI10: + 689 .cfi_def_cfa_offset 4 + 690 .cfi_offset 4, -4 +7565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr1; + 691 .loc 1 7565 3 is_stmt 1 view .LVU245 +7566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 692 .loc 1 7566 3 view .LVU246 +7567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 1: Reset the CC1E Bit */ +7569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; + 693 .loc 1 7569 3 view .LVU247 + 694 .loc 1 7569 11 is_stmt 0 view .LVU248 + 695 0002 036A ldr r3, [r0, #32] + 696 .LVL74: +7570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC1E; + 697 .loc 1 7570 3 is_stmt 1 view .LVU249 + 698 .loc 1 7570 14 is_stmt 0 view .LVU250 + 699 0004 046A ldr r4, [r0, #32] + 700 0006 24F00104 bic r4, r4, #1 + 701 000a 0462 str r4, [r0, #32] +7571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 = TIMx->CCMR1; + 702 .loc 1 7571 3 is_stmt 1 view .LVU251 + 703 .loc 1 7571 12 is_stmt 0 view .LVU252 + 704 000c 8469 ldr r4, [r0, #24] + 705 .LVL75: + ARM GAS /tmp/ccPLZXyC.s page 146 + + +7572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the filter */ +7574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~TIM_CCMR1_IC1F; + 706 .loc 1 7574 3 is_stmt 1 view .LVU253 + 707 .loc 1 7574 12 is_stmt 0 view .LVU254 + 708 000e 24F0F00C bic ip, r4, #240 + 709 .LVL76: +7575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (TIM_ICFilter << 4U); + 710 .loc 1 7575 3 is_stmt 1 view .LVU255 + 711 .loc 1 7575 12 is_stmt 0 view .LVU256 + 712 0012 4CEA0212 orr r2, ip, r2, lsl #4 + 713 .LVL77: +7576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Polarity and set the CC1E Bit */ +7578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); + 714 .loc 1 7578 3 is_stmt 1 view .LVU257 + 715 .loc 1 7578 11 is_stmt 0 view .LVU258 + 716 0016 23F00A03 bic r3, r3, #10 + 717 .LVL78: +7579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= TIM_ICPolarity; + 718 .loc 1 7579 3 is_stmt 1 view .LVU259 + 719 .loc 1 7579 11 is_stmt 0 view .LVU260 + 720 001a 0B43 orrs r3, r3, r1 + 721 .LVL79: +7580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR1 and CCER registers */ +7582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR1 = tmpccmr1; + 722 .loc 1 7582 3 is_stmt 1 view .LVU261 + 723 .loc 1 7582 15 is_stmt 0 view .LVU262 + 724 001c 8261 str r2, [r0, #24] +7583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 725 .loc 1 7583 3 is_stmt 1 view .LVU263 + 726 .loc 1 7583 14 is_stmt 0 view .LVU264 + 727 001e 0362 str r3, [r0, #32] +7584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 728 .loc 1 7584 1 view .LVU265 + 729 0020 5DF8044B ldr r4, [sp], #4 + 730 .LCFI11: + 731 .cfi_restore 4 + 732 .cfi_def_cfa_offset 0 + 733 0024 7047 bx lr + 734 .cfi_endproc + 735 .LFE254: + 737 .section .text.TIM_TI2_SetConfig,"ax",%progbits + 738 .align 1 + 739 .syntax unified + 740 .thumb + 741 .thumb_func + 742 .fpu fpv5-d16 + 744 TIM_TI2_SetConfig: + 745 .LVL80: + 746 .LFB255: +7585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configure the TI2 as Input. +7588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICPolarity The Input Polarity. + ARM GAS /tmp/ccPLZXyC.s page 147 + + +7590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_RISING +7592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_FALLING +7593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_BOTHEDGE +7594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICSelection specifies the input to be used. +7595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 2 is selected to be connected to IC2. +7597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 2 is selected to be connected to IC1. +7598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_TRC: TIM Input 2 is selected to be connected to TRC. +7599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICFilter Specifies the Input Capture Filter. +7600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter must be a value between 0x00 and 0x0F. +7601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI1FP2 +7603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * (on channel1 path) is used as the input signal. Therefore CCMR1 must be +7604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * protected against un-initialized filter and polarity values. +7605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_TI2_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, +7607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t TIM_ICFilter) +7608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 747 .loc 1 7608 1 is_stmt 1 view -0 + 748 .cfi_startproc + 749 @ args = 0, pretend = 0, frame = 0 + 750 @ frame_needed = 0, uses_anonymous_args = 0 + 751 @ link register save eliminated. + 752 .loc 1 7608 1 is_stmt 0 view .LVU267 + 753 0000 30B4 push {r4, r5} + 754 .LCFI12: + 755 .cfi_def_cfa_offset 8 + 756 .cfi_offset 4, -8 + 757 .cfi_offset 5, -4 +7609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr1; + 758 .loc 1 7609 3 is_stmt 1 view .LVU268 +7610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 759 .loc 1 7610 3 view .LVU269 +7611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 2: Reset the CC2E Bit */ +7613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; + 760 .loc 1 7613 3 view .LVU270 + 761 .loc 1 7613 11 is_stmt 0 view .LVU271 + 762 0002 056A ldr r5, [r0, #32] + 763 .LVL81: +7614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC2E; + 764 .loc 1 7614 3 is_stmt 1 view .LVU272 + 765 .loc 1 7614 14 is_stmt 0 view .LVU273 + 766 0004 046A ldr r4, [r0, #32] + 767 0006 24F01004 bic r4, r4, #16 + 768 000a 0462 str r4, [r0, #32] +7615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 = TIMx->CCMR1; + 769 .loc 1 7615 3 is_stmt 1 view .LVU274 + 770 .loc 1 7615 12 is_stmt 0 view .LVU275 + 771 000c 8469 ldr r4, [r0, #24] + 772 .LVL82: +7616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Input */ +7618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~TIM_CCMR1_CC2S; + 773 .loc 1 7618 3 is_stmt 1 view .LVU276 + 774 .loc 1 7618 12 is_stmt 0 view .LVU277 + ARM GAS /tmp/ccPLZXyC.s page 148 + + + 775 000e 24F4407C bic ip, r4, #768 + 776 .LVL83: +7619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (TIM_ICSelection << 8U); + 777 .loc 1 7619 3 is_stmt 1 view .LVU278 + 778 .loc 1 7619 12 is_stmt 0 view .LVU279 + 779 0012 4CEA022C orr ip, ip, r2, lsl #8 + 780 .LVL84: +7620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the filter */ +7622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~TIM_CCMR1_IC2F; + 781 .loc 1 7622 3 is_stmt 1 view .LVU280 + 782 .loc 1 7622 12 is_stmt 0 view .LVU281 + 783 0016 2CF4704C bic ip, ip, #61440 + 784 .LVL85: +7623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= ((TIM_ICFilter << 12U) & TIM_CCMR1_IC2F); + 785 .loc 1 7623 3 is_stmt 1 view .LVU282 + 786 .loc 1 7623 30 is_stmt 0 view .LVU283 + 787 001a 1B03 lsls r3, r3, #12 + 788 .LVL86: + 789 .loc 1 7623 38 view .LVU284 + 790 001c 9BB2 uxth r3, r3 + 791 .loc 1 7623 12 view .LVU285 + 792 001e 43EA0C03 orr r3, r3, ip + 793 .LVL87: +7624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Polarity and set the CC2E Bit */ +7626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 794 .loc 1 7626 3 is_stmt 1 view .LVU286 + 795 .loc 1 7626 11 is_stmt 0 view .LVU287 + 796 0022 25F0A005 bic r5, r5, #160 + 797 .LVL88: +7627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= ((TIM_ICPolarity << 4U) & (TIM_CCER_CC2P | TIM_CCER_CC2NP)); + 798 .loc 1 7627 3 is_stmt 1 view .LVU288 + 799 .loc 1 7627 31 is_stmt 0 view .LVU289 + 800 0026 0901 lsls r1, r1, #4 + 801 .LVL89: + 802 .loc 1 7627 38 view .LVU290 + 803 0028 01F0A001 and r1, r1, #160 + 804 .loc 1 7627 11 view .LVU291 + 805 002c 2943 orrs r1, r1, r5 + 806 .LVL90: +7628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR1 and CCER registers */ +7630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR1 = tmpccmr1 ; + 807 .loc 1 7630 3 is_stmt 1 view .LVU292 + 808 .loc 1 7630 15 is_stmt 0 view .LVU293 + 809 002e 8361 str r3, [r0, #24] +7631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 810 .loc 1 7631 3 is_stmt 1 view .LVU294 + 811 .loc 1 7631 14 is_stmt 0 view .LVU295 + 812 0030 0162 str r1, [r0, #32] +7632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 813 .loc 1 7632 1 view .LVU296 + 814 0032 30BC pop {r4, r5} + 815 .LCFI13: + 816 .cfi_restore 5 + 817 .cfi_restore 4 + ARM GAS /tmp/ccPLZXyC.s page 149 + + + 818 .cfi_def_cfa_offset 0 + 819 0034 7047 bx lr + 820 .cfi_endproc + 821 .LFE255: + 823 .section .text.TIM_TI2_ConfigInputStage,"ax",%progbits + 824 .align 1 + 825 .syntax unified + 826 .thumb + 827 .thumb_func + 828 .fpu fpv5-d16 + 830 TIM_TI2_ConfigInputStage: + 831 .LVL91: + 832 .LFB256: +7633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configure the Polarity and Filter for TI2. +7636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral. +7637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICPolarity The Input Polarity. +7638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_RISING +7640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_FALLING +7641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_BOTHEDGE +7642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICFilter Specifies the Input Capture Filter. +7643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter must be a value between 0x00 and 0x0F. +7644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFil +7647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 833 .loc 1 7647 1 is_stmt 1 view -0 + 834 .cfi_startproc + 835 @ args = 0, pretend = 0, frame = 0 + 836 @ frame_needed = 0, uses_anonymous_args = 0 + 837 @ link register save eliminated. + 838 .loc 1 7647 1 is_stmt 0 view .LVU298 + 839 0000 10B4 push {r4} + 840 .LCFI14: + 841 .cfi_def_cfa_offset 4 + 842 .cfi_offset 4, -4 +7648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr1; + 843 .loc 1 7648 3 is_stmt 1 view .LVU299 +7649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 844 .loc 1 7649 3 view .LVU300 +7650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 2: Reset the CC2E Bit */ +7652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; + 845 .loc 1 7652 3 view .LVU301 + 846 .loc 1 7652 11 is_stmt 0 view .LVU302 + 847 0002 036A ldr r3, [r0, #32] + 848 .LVL92: +7653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC2E; + 849 .loc 1 7653 3 is_stmt 1 view .LVU303 + 850 .loc 1 7653 14 is_stmt 0 view .LVU304 + 851 0004 046A ldr r4, [r0, #32] + 852 0006 24F01004 bic r4, r4, #16 + 853 000a 0462 str r4, [r0, #32] +7654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 = TIMx->CCMR1; + 854 .loc 1 7654 3 is_stmt 1 view .LVU305 + ARM GAS /tmp/ccPLZXyC.s page 150 + + + 855 .loc 1 7654 12 is_stmt 0 view .LVU306 + 856 000c 8469 ldr r4, [r0, #24] + 857 .LVL93: +7655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the filter */ +7657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~TIM_CCMR1_IC2F; + 858 .loc 1 7657 3 is_stmt 1 view .LVU307 + 859 .loc 1 7657 12 is_stmt 0 view .LVU308 + 860 000e 24F4704C bic ip, r4, #61440 + 861 .LVL94: +7658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (TIM_ICFilter << 12U); + 862 .loc 1 7658 3 is_stmt 1 view .LVU309 + 863 .loc 1 7658 12 is_stmt 0 view .LVU310 + 864 0012 4CEA0232 orr r2, ip, r2, lsl #12 + 865 .LVL95: +7659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Polarity and set the CC2E Bit */ +7661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); + 866 .loc 1 7661 3 is_stmt 1 view .LVU311 + 867 .loc 1 7661 11 is_stmt 0 view .LVU312 + 868 0016 23F0A003 bic r3, r3, #160 + 869 .LVL96: +7662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (TIM_ICPolarity << 4U); + 870 .loc 1 7662 3 is_stmt 1 view .LVU313 + 871 .loc 1 7662 11 is_stmt 0 view .LVU314 + 872 001a 43EA0113 orr r3, r3, r1, lsl #4 + 873 .LVL97: +7663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR1 and CCER registers */ +7665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR1 = tmpccmr1 ; + 874 .loc 1 7665 3 is_stmt 1 view .LVU315 + 875 .loc 1 7665 15 is_stmt 0 view .LVU316 + 876 001e 8261 str r2, [r0, #24] +7666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 877 .loc 1 7666 3 is_stmt 1 view .LVU317 + 878 .loc 1 7666 14 is_stmt 0 view .LVU318 + 879 0020 0362 str r3, [r0, #32] +7667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 880 .loc 1 7667 1 view .LVU319 + 881 0022 5DF8044B ldr r4, [sp], #4 + 882 .LCFI15: + 883 .cfi_restore 4 + 884 .cfi_def_cfa_offset 0 + 885 0026 7047 bx lr + 886 .cfi_endproc + 887 .LFE256: + 889 .section .text.TIM_TI3_SetConfig,"ax",%progbits + 890 .align 1 + 891 .syntax unified + 892 .thumb + 893 .thumb_func + 894 .fpu fpv5-d16 + 896 TIM_TI3_SetConfig: + 897 .LVL98: + 898 .LFB257: +7668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + ARM GAS /tmp/ccPLZXyC.s page 151 + + +7670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configure the TI3 as Input. +7671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICPolarity The Input Polarity. +7673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_RISING +7675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_FALLING +7676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_BOTHEDGE +7677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICSelection specifies the input to be used. +7678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 3 is selected to be connected to IC3. +7680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 3 is selected to be connected to IC4. +7681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_TRC: TIM Input 3 is selected to be connected to TRC. +7682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICFilter Specifies the Input Capture Filter. +7683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter must be a value between 0x00 and 0x0F. +7684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI3FP4 +7686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * (on channel1 path) is used as the input signal. Therefore CCMR2 must be +7687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * protected against un-initialized filter and polarity values. +7688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_TI3_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, +7690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t TIM_ICFilter) +7691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 899 .loc 1 7691 1 is_stmt 1 view -0 + 900 .cfi_startproc + 901 @ args = 0, pretend = 0, frame = 0 + 902 @ frame_needed = 0, uses_anonymous_args = 0 + 903 @ link register save eliminated. + 904 .loc 1 7691 1 is_stmt 0 view .LVU321 + 905 0000 30B4 push {r4, r5} + 906 .LCFI16: + 907 .cfi_def_cfa_offset 8 + 908 .cfi_offset 4, -8 + 909 .cfi_offset 5, -4 +7692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr2; + 910 .loc 1 7692 3 is_stmt 1 view .LVU322 +7693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 911 .loc 1 7693 3 view .LVU323 +7694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 3: Reset the CC3E Bit */ +7696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; + 912 .loc 1 7696 3 view .LVU324 + 913 .loc 1 7696 11 is_stmt 0 view .LVU325 + 914 0002 056A ldr r5, [r0, #32] + 915 .LVL99: +7697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC3E; + 916 .loc 1 7697 3 is_stmt 1 view .LVU326 + 917 .loc 1 7697 14 is_stmt 0 view .LVU327 + 918 0004 046A ldr r4, [r0, #32] + 919 0006 24F48074 bic r4, r4, #256 + 920 000a 0462 str r4, [r0, #32] +7698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr2 = TIMx->CCMR2; + 921 .loc 1 7698 3 is_stmt 1 view .LVU328 + 922 .loc 1 7698 12 is_stmt 0 view .LVU329 + 923 000c C469 ldr r4, [r0, #28] + 924 .LVL100: +7699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Input */ + ARM GAS /tmp/ccPLZXyC.s page 152 + + +7701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr2 &= ~TIM_CCMR2_CC3S; + 925 .loc 1 7701 3 is_stmt 1 view .LVU330 + 926 .loc 1 7701 12 is_stmt 0 view .LVU331 + 927 000e 24F0030C bic ip, r4, #3 + 928 .LVL101: +7702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr2 |= TIM_ICSelection; + 929 .loc 1 7702 3 is_stmt 1 view .LVU332 + 930 .loc 1 7702 12 is_stmt 0 view .LVU333 + 931 0012 4CEA020C orr ip, ip, r2 + 932 .LVL102: +7703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the filter */ +7705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr2 &= ~TIM_CCMR2_IC3F; + 933 .loc 1 7705 3 is_stmt 1 view .LVU334 + 934 .loc 1 7705 12 is_stmt 0 view .LVU335 + 935 0016 2CF0F00C bic ip, ip, #240 + 936 .LVL103: +7706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr2 |= ((TIM_ICFilter << 4U) & TIM_CCMR2_IC3F); + 937 .loc 1 7706 3 is_stmt 1 view .LVU336 + 938 .loc 1 7706 30 is_stmt 0 view .LVU337 + 939 001a 1B01 lsls r3, r3, #4 + 940 .LVL104: + 941 .loc 1 7706 37 view .LVU338 + 942 001c DBB2 uxtb r3, r3 + 943 .loc 1 7706 12 view .LVU339 + 944 001e 43EA0C03 orr r3, r3, ip + 945 .LVL105: +7707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Polarity and set the CC3E Bit */ +7709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP); + 946 .loc 1 7709 3 is_stmt 1 view .LVU340 + 947 .loc 1 7709 11 is_stmt 0 view .LVU341 + 948 0022 25F42065 bic r5, r5, #2560 + 949 .LVL106: +7710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= ((TIM_ICPolarity << 8U) & (TIM_CCER_CC3P | TIM_CCER_CC3NP)); + 950 .loc 1 7710 3 is_stmt 1 view .LVU342 + 951 .loc 1 7710 31 is_stmt 0 view .LVU343 + 952 0026 0902 lsls r1, r1, #8 + 953 .LVL107: + 954 .loc 1 7710 38 view .LVU344 + 955 0028 01F42061 and r1, r1, #2560 + 956 .loc 1 7710 11 view .LVU345 + 957 002c 2943 orrs r1, r1, r5 + 958 .LVL108: +7711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR2 and CCER registers */ +7713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR2 = tmpccmr2; + 959 .loc 1 7713 3 is_stmt 1 view .LVU346 + 960 .loc 1 7713 15 is_stmt 0 view .LVU347 + 961 002e C361 str r3, [r0, #28] +7714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 962 .loc 1 7714 3 is_stmt 1 view .LVU348 + 963 .loc 1 7714 14 is_stmt 0 view .LVU349 + 964 0030 0162 str r1, [r0, #32] +7715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 965 .loc 1 7715 1 view .LVU350 + 966 0032 30BC pop {r4, r5} + ARM GAS /tmp/ccPLZXyC.s page 153 + + + 967 .LCFI17: + 968 .cfi_restore 5 + 969 .cfi_restore 4 + 970 .cfi_def_cfa_offset 0 + 971 0034 7047 bx lr + 972 .cfi_endproc + 973 .LFE257: + 975 .section .text.TIM_TI4_SetConfig,"ax",%progbits + 976 .align 1 + 977 .syntax unified + 978 .thumb + 979 .thumb_func + 980 .fpu fpv5-d16 + 982 TIM_TI4_SetConfig: + 983 .LVL109: + 984 .LFB258: +7716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configure the TI4 as Input. +7719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICPolarity The Input Polarity. +7721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_RISING +7723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_FALLING +7724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICPOLARITY_BOTHEDGE +7725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICSelection specifies the input to be used. +7726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_DIRECTTI: TIM Input 4 is selected to be connected to IC4. +7728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_INDIRECTTI: TIM Input 4 is selected to be connected to IC3. +7729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ICSELECTION_TRC: TIM Input 4 is selected to be connected to TRC. +7730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ICFilter Specifies the Input Capture Filter. +7731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter must be a value between 0x00 and 0x0F. +7732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @note TIM_ICFilter and TIM_ICPolarity are not used in INDIRECT mode as TI4FP3 +7733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * (on channel1 path) is used as the input signal. Therefore CCMR2 must be +7734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * protected against un-initialized filter and polarity values. +7735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_TI4_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, +7738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t TIM_ICFilter) +7739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 985 .loc 1 7739 1 is_stmt 1 view -0 + 986 .cfi_startproc + 987 @ args = 0, pretend = 0, frame = 0 + 988 @ frame_needed = 0, uses_anonymous_args = 0 + 989 @ link register save eliminated. + 990 .loc 1 7739 1 is_stmt 0 view .LVU352 + 991 0000 30B4 push {r4, r5} + 992 .LCFI18: + 993 .cfi_def_cfa_offset 8 + 994 .cfi_offset 4, -8 + 995 .cfi_offset 5, -4 +7740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr2; + 996 .loc 1 7740 3 is_stmt 1 view .LVU353 +7741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 997 .loc 1 7741 3 view .LVU354 +7742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Disable the Channel 4: Reset the CC4E Bit */ + ARM GAS /tmp/ccPLZXyC.s page 154 + + +7744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer = TIMx->CCER; + 998 .loc 1 7744 3 view .LVU355 + 999 .loc 1 7744 11 is_stmt 0 view .LVU356 + 1000 0002 056A ldr r5, [r0, #32] + 1001 .LVL110: +7745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC4E; + 1002 .loc 1 7745 3 is_stmt 1 view .LVU357 + 1003 .loc 1 7745 14 is_stmt 0 view .LVU358 + 1004 0004 046A ldr r4, [r0, #32] + 1005 0006 24F48054 bic r4, r4, #4096 + 1006 000a 0462 str r4, [r0, #32] +7746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr2 = TIMx->CCMR2; + 1007 .loc 1 7746 3 is_stmt 1 view .LVU359 + 1008 .loc 1 7746 12 is_stmt 0 view .LVU360 + 1009 000c C469 ldr r4, [r0, #28] + 1010 .LVL111: +7747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Input */ +7749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr2 &= ~TIM_CCMR2_CC4S; + 1011 .loc 1 7749 3 is_stmt 1 view .LVU361 + 1012 .loc 1 7749 12 is_stmt 0 view .LVU362 + 1013 000e 24F4407C bic ip, r4, #768 + 1014 .LVL112: +7750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr2 |= (TIM_ICSelection << 8U); + 1015 .loc 1 7750 3 is_stmt 1 view .LVU363 + 1016 .loc 1 7750 12 is_stmt 0 view .LVU364 + 1017 0012 4CEA022C orr ip, ip, r2, lsl #8 + 1018 .LVL113: +7751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the filter */ +7753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr2 &= ~TIM_CCMR2_IC4F; + 1019 .loc 1 7753 3 is_stmt 1 view .LVU365 + 1020 .loc 1 7753 12 is_stmt 0 view .LVU366 + 1021 0016 2CF4704C bic ip, ip, #61440 + 1022 .LVL114: +7754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr2 |= ((TIM_ICFilter << 12U) & TIM_CCMR2_IC4F); + 1023 .loc 1 7754 3 is_stmt 1 view .LVU367 + 1024 .loc 1 7754 30 is_stmt 0 view .LVU368 + 1025 001a 1B03 lsls r3, r3, #12 + 1026 .LVL115: + 1027 .loc 1 7754 38 view .LVU369 + 1028 001c 9BB2 uxth r3, r3 + 1029 .loc 1 7754 12 view .LVU370 + 1030 001e 43EA0C03 orr r3, r3, ip + 1031 .LVL116: +7755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Select the Polarity and set the CC4E Bit */ +7757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP); + 1032 .loc 1 7757 3 is_stmt 1 view .LVU371 + 1033 .loc 1 7757 11 is_stmt 0 view .LVU372 + 1034 0022 25F42045 bic r5, r5, #40960 + 1035 .LVL117: +7758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= ((TIM_ICPolarity << 12U) & (TIM_CCER_CC4P | TIM_CCER_CC4NP)); + 1036 .loc 1 7758 3 is_stmt 1 view .LVU373 + 1037 .loc 1 7758 31 is_stmt 0 view .LVU374 + 1038 0026 0903 lsls r1, r1, #12 + 1039 .LVL118: + ARM GAS /tmp/ccPLZXyC.s page 155 + + + 1040 .loc 1 7758 39 view .LVU375 + 1041 0028 01F42041 and r1, r1, #40960 + 1042 .loc 1 7758 11 view .LVU376 + 1043 002c 2943 orrs r1, r1, r5 + 1044 .LVL119: +7759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx CCMR2 and CCER registers */ +7761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCMR2 = tmpccmr2; + 1045 .loc 1 7761 3 is_stmt 1 view .LVU377 + 1046 .loc 1 7761 15 is_stmt 0 view .LVU378 + 1047 002e C361 str r3, [r0, #28] +7762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer ; + 1048 .loc 1 7762 3 is_stmt 1 view .LVU379 + 1049 .loc 1 7762 14 is_stmt 0 view .LVU380 + 1050 0030 0162 str r1, [r0, #32] +7763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1051 .loc 1 7763 1 view .LVU381 + 1052 0032 30BC pop {r4, r5} + 1053 .LCFI19: + 1054 .cfi_restore 5 + 1055 .cfi_restore 4 + 1056 .cfi_def_cfa_offset 0 + 1057 0034 7047 bx lr + 1058 .cfi_endproc + 1059 .LFE258: + 1061 .section .text.TIM_ITRx_SetConfig,"ax",%progbits + 1062 .align 1 + 1063 .syntax unified + 1064 .thumb + 1065 .thumb_func + 1066 .fpu fpv5-d16 + 1068 TIM_ITRx_SetConfig: + 1069 .LVL120: + 1070 .LFB259: +7764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Selects the Input Trigger source +7767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param InputTriggerSource The Input Trigger source. +7769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_TS_ITR0: Internal Trigger 0 +7771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_TS_ITR1: Internal Trigger 1 +7772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_TS_ITR2: Internal Trigger 2 +7773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_TS_ITR3: Internal Trigger 3 +7774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_TS_TI1F_ED: TI1 Edge Detector +7775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_TS_TI1FP1: Filtered Timer Input 1 +7776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_TS_TI2FP2: Filtered Timer Input 2 +7777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_TS_ETRF: External Trigger input +7778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) +7781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1071 .loc 1 7781 1 is_stmt 1 view -0 + 1072 .cfi_startproc + 1073 @ args = 0, pretend = 0, frame = 0 + 1074 @ frame_needed = 0, uses_anonymous_args = 0 + 1075 @ link register save eliminated. + ARM GAS /tmp/ccPLZXyC.s page 156 + + +7782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 1076 .loc 1 7782 3 view .LVU383 +7783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Get the TIMx SMCR register value */ +7785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = TIMx->SMCR; + 1077 .loc 1 7785 3 view .LVU384 + 1078 .loc 1 7785 11 is_stmt 0 view .LVU385 + 1079 0000 8368 ldr r3, [r0, #8] + 1080 .LVL121: +7786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the TS Bits */ +7787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr &= ~TIM_SMCR_TS; + 1081 .loc 1 7787 3 is_stmt 1 view .LVU386 + 1082 .loc 1 7787 11 is_stmt 0 view .LVU387 + 1083 0002 23F07003 bic r3, r3, #112 + 1084 .LVL122: +7788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Input Trigger source and the slave mode*/ +7789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); + 1085 .loc 1 7789 3 is_stmt 1 view .LVU388 + 1086 .loc 1 7789 11 is_stmt 0 view .LVU389 + 1087 0006 0B43 orrs r3, r3, r1 + 1088 .LVL123: + 1089 .loc 1 7789 11 view .LVU390 + 1090 0008 43F00703 orr r3, r3, #7 + 1091 .LVL124: +7790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx SMCR */ +7791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->SMCR = tmpsmcr; + 1092 .loc 1 7791 3 is_stmt 1 view .LVU391 + 1093 .loc 1 7791 14 is_stmt 0 view .LVU392 + 1094 000c 8360 str r3, [r0, #8] +7792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1095 .loc 1 7792 1 view .LVU393 + 1096 000e 7047 bx lr + 1097 .cfi_endproc + 1098 .LFE259: + 1100 .section .text.HAL_TIM_Base_MspInit,"ax",%progbits + 1101 .align 1 + 1102 .weak HAL_TIM_Base_MspInit + 1103 .syntax unified + 1104 .thumb + 1105 .thumb_func + 1106 .fpu fpv5-d16 + 1108 HAL_TIM_Base_MspInit: + 1109 .LVL125: + 1110 .LFB143: + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 1111 .loc 1 373 1 is_stmt 1 view -0 + 1112 .cfi_startproc + 1113 @ args = 0, pretend = 0, frame = 0 + 1114 @ frame_needed = 0, uses_anonymous_args = 0 + 1115 @ link register save eliminated. + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1116 .loc 1 375 3 view .LVU395 + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1117 .loc 1 380 1 is_stmt 0 view .LVU396 + 1118 0000 7047 bx lr + 1119 .cfi_endproc + 1120 .LFE143: + ARM GAS /tmp/ccPLZXyC.s page 157 + + + 1122 .section .text.HAL_TIM_Base_MspDeInit,"ax",%progbits + 1123 .align 1 + 1124 .weak HAL_TIM_Base_MspDeInit + 1125 .syntax unified + 1126 .thumb + 1127 .thumb_func + 1128 .fpu fpv5-d16 + 1130 HAL_TIM_Base_MspDeInit: + 1131 .LVL126: + 1132 .LFB144: + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 1133 .loc 1 388 1 is_stmt 1 view -0 + 1134 .cfi_startproc + 1135 @ args = 0, pretend = 0, frame = 0 + 1136 @ frame_needed = 0, uses_anonymous_args = 0 + 1137 @ link register save eliminated. + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1138 .loc 1 390 3 view .LVU398 + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1139 .loc 1 395 1 is_stmt 0 view .LVU399 + 1140 0000 7047 bx lr + 1141 .cfi_endproc + 1142 .LFE144: + 1144 .section .text.HAL_TIM_Base_DeInit,"ax",%progbits + 1145 .align 1 + 1146 .global HAL_TIM_Base_DeInit + 1147 .syntax unified + 1148 .thumb + 1149 .thumb_func + 1150 .fpu fpv5-d16 + 1152 HAL_TIM_Base_DeInit: + 1153 .LVL127: + 1154 .LFB142: + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 1155 .loc 1 330 1 is_stmt 1 view -0 + 1156 .cfi_startproc + 1157 @ args = 0, pretend = 0, frame = 0 + 1158 @ frame_needed = 0, uses_anonymous_args = 0 + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 1159 .loc 1 330 1 is_stmt 0 view .LVU401 + 1160 0000 10B5 push {r4, lr} + 1161 .LCFI20: + 1162 .cfi_def_cfa_offset 8 + 1163 .cfi_offset 4, -8 + 1164 .cfi_offset 14, -4 + 1165 0002 0446 mov r4, r0 + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1166 .loc 1 332 3 is_stmt 1 view .LVU402 + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1167 .loc 1 334 3 view .LVU403 + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1168 .loc 1 334 15 is_stmt 0 view .LVU404 + 1169 0004 0223 movs r3, #2 + 1170 0006 80F83D30 strb r3, [r0, #61] + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1171 .loc 1 337 3 is_stmt 1 view .LVU405 + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 158 + + + 1172 .loc 1 337 3 view .LVU406 + 1173 000a 0368 ldr r3, [r0] + 1174 000c 196A ldr r1, [r3, #32] + 1175 000e 41F21112 movw r2, #4369 + 1176 0012 1142 tst r1, r2 + 1177 0014 08D1 bne .L42 + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1178 .loc 1 337 3 discriminator 1 view .LVU407 + 1179 0016 196A ldr r1, [r3, #32] + 1180 0018 40F24442 movw r2, #1092 + 1181 001c 1142 tst r1, r2 + 1182 001e 03D1 bne .L42 + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1183 .loc 1 337 3 discriminator 3 view .LVU408 + 1184 0020 1A68 ldr r2, [r3] + 1185 0022 22F00102 bic r2, r2, #1 + 1186 0026 1A60 str r2, [r3] + 1187 .L42: + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1188 .loc 1 337 3 discriminator 5 view .LVU409 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 1189 .loc 1 348 3 discriminator 5 view .LVU410 + 1190 0028 2046 mov r0, r4 + 1191 .LVL128: + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 1192 .loc 1 348 3 is_stmt 0 discriminator 5 view .LVU411 + 1193 002a FFF7FEFF bl HAL_TIM_Base_MspDeInit + 1194 .LVL129: + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1195 .loc 1 352 3 is_stmt 1 discriminator 5 view .LVU412 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1196 .loc 1 352 23 is_stmt 0 discriminator 5 view .LVU413 + 1197 002e 0020 movs r0, #0 + 1198 0030 84F84800 strb r0, [r4, #72] + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1199 .loc 1 355 3 is_stmt 1 discriminator 5 view .LVU414 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1200 .loc 1 355 3 discriminator 5 view .LVU415 + 1201 0034 84F83E00 strb r0, [r4, #62] + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1202 .loc 1 355 3 discriminator 5 view .LVU416 + 1203 0038 84F83F00 strb r0, [r4, #63] + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1204 .loc 1 355 3 discriminator 5 view .LVU417 + 1205 003c 84F84000 strb r0, [r4, #64] + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1206 .loc 1 355 3 discriminator 5 view .LVU418 + 1207 0040 84F84100 strb r0, [r4, #65] + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1208 .loc 1 355 3 discriminator 5 view .LVU419 + 1209 0044 84F84200 strb r0, [r4, #66] + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1210 .loc 1 355 3 discriminator 5 view .LVU420 + 1211 0048 84F84300 strb r0, [r4, #67] + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1212 .loc 1 355 3 discriminator 5 view .LVU421 + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 159 + + + 1213 .loc 1 356 3 discriminator 5 view .LVU422 + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1214 .loc 1 356 3 discriminator 5 view .LVU423 + 1215 004c 84F84400 strb r0, [r4, #68] + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1216 .loc 1 356 3 discriminator 5 view .LVU424 + 1217 0050 84F84500 strb r0, [r4, #69] + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1218 .loc 1 356 3 discriminator 5 view .LVU425 + 1219 0054 84F84600 strb r0, [r4, #70] + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1220 .loc 1 356 3 discriminator 5 view .LVU426 + 1221 0058 84F84700 strb r0, [r4, #71] + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1222 .loc 1 356 3 discriminator 5 view .LVU427 + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1223 .loc 1 359 3 discriminator 5 view .LVU428 + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1224 .loc 1 359 15 is_stmt 0 discriminator 5 view .LVU429 + 1225 005c 84F83D00 strb r0, [r4, #61] + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1226 .loc 1 362 3 is_stmt 1 discriminator 5 view .LVU430 + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1227 .loc 1 362 3 discriminator 5 view .LVU431 + 1228 0060 84F83C00 strb r0, [r4, #60] + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1229 .loc 1 362 3 discriminator 5 view .LVU432 + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1230 .loc 1 364 3 discriminator 5 view .LVU433 + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1231 .loc 1 365 1 is_stmt 0 discriminator 5 view .LVU434 + 1232 0064 10BD pop {r4, pc} + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1233 .loc 1 365 1 discriminator 5 view .LVU435 + 1234 .cfi_endproc + 1235 .LFE142: + 1237 .section .text.HAL_TIM_Base_Start,"ax",%progbits + 1238 .align 1 + 1239 .global HAL_TIM_Base_Start + 1240 .syntax unified + 1241 .thumb + 1242 .thumb_func + 1243 .fpu fpv5-d16 + 1245 HAL_TIM_Base_Start: + 1246 .LVL130: + 1247 .LFB145: + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 1248 .loc 1 404 1 is_stmt 1 view -0 + 1249 .cfi_startproc + 1250 @ args = 0, pretend = 0, frame = 0 + 1251 @ frame_needed = 0, uses_anonymous_args = 0 + 1252 @ link register save eliminated. + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1253 .loc 1 405 3 view .LVU437 + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1254 .loc 1 408 3 view .LVU438 + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 160 + + + 1255 .loc 1 411 3 view .LVU439 + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1256 .loc 1 411 11 is_stmt 0 view .LVU440 + 1257 0000 90F83D30 ldrb r3, [r0, #61] @ zero_extendqisi2 + 1258 0004 DBB2 uxtb r3, r3 + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1259 .loc 1 411 6 view .LVU441 + 1260 0006 012B cmp r3, #1 + 1261 0008 35D1 bne .L48 + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1262 .loc 1 417 3 is_stmt 1 view .LVU442 + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1263 .loc 1 417 15 is_stmt 0 view .LVU443 + 1264 000a 0223 movs r3, #2 + 1265 000c 80F83D30 strb r3, [r0, #61] + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1266 .loc 1 420 3 is_stmt 1 view .LVU444 + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1267 .loc 1 420 7 is_stmt 0 view .LVU445 + 1268 0010 0368 ldr r3, [r0] + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1269 .loc 1 420 6 view .LVU446 + 1270 0012 1B4A ldr r2, .L50 + 1271 0014 B3F1804F cmp r3, #1073741824 + 1272 0018 18BF it ne + 1273 001a 9342 cmpne r3, r2 + 1274 001c 1DD0 beq .L46 + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1275 .loc 1 420 7 discriminator 1 view .LVU447 + 1276 001e A2F57C42 sub r2, r2, #64512 + 1277 0022 9342 cmp r3, r2 + 1278 0024 19D0 beq .L46 + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1279 .loc 1 420 7 discriminator 2 view .LVU448 + 1280 0026 02F58062 add r2, r2, #1024 + 1281 002a 9342 cmp r3, r2 + 1282 002c 15D0 beq .L46 + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1283 .loc 1 420 7 discriminator 3 view .LVU449 + 1284 002e 02F58062 add r2, r2, #1024 + 1285 0032 9342 cmp r3, r2 + 1286 0034 11D0 beq .L46 + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1287 .loc 1 420 7 discriminator 4 view .LVU450 + 1288 0036 02F57842 add r2, r2, #63488 + 1289 003a 9342 cmp r3, r2 + 1290 003c 0DD0 beq .L46 + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1291 .loc 1 420 7 discriminator 5 view .LVU451 + 1292 003e 02F57052 add r2, r2, #15360 + 1293 0042 9342 cmp r3, r2 + 1294 0044 09D0 beq .L46 + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1295 .loc 1 420 7 discriminator 6 view .LVU452 + 1296 0046 A2F59432 sub r2, r2, #75776 + 1297 004a 9342 cmp r3, r2 + 1298 004c 05D0 beq .L46 + ARM GAS /tmp/ccPLZXyC.s page 161 + + + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1299 .loc 1 430 5 is_stmt 1 view .LVU453 + 1300 004e 1A68 ldr r2, [r3] + 1301 0050 42F00102 orr r2, r2, #1 + 1302 0054 1A60 str r2, [r3] + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1303 .loc 1 434 10 is_stmt 0 view .LVU454 + 1304 0056 0020 movs r0, #0 + 1305 .LVL131: + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1306 .loc 1 434 10 view .LVU455 + 1307 0058 7047 bx lr + 1308 .LVL132: + 1309 .L46: + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1310 .loc 1 422 5 is_stmt 1 view .LVU456 + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1311 .loc 1 422 29 is_stmt 0 view .LVU457 + 1312 005a 9968 ldr r1, [r3, #8] + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1313 .loc 1 422 13 view .LVU458 + 1314 005c 094A ldr r2, .L50+4 + 1315 005e 0A40 ands r2, r2, r1 + 1316 .LVL133: + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1317 .loc 1 423 5 is_stmt 1 view .LVU459 + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1318 .loc 1 423 8 is_stmt 0 view .LVU460 + 1319 0060 062A cmp r2, #6 + 1320 0062 18BF it ne + 1321 0064 B2F5803F cmpne r2, #65536 + 1322 0068 07D0 beq .L49 + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1323 .loc 1 425 7 is_stmt 1 view .LVU461 + 1324 006a 1A68 ldr r2, [r3] + 1325 .LVL134: + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1326 .loc 1 425 7 is_stmt 0 view .LVU462 + 1327 006c 42F00102 orr r2, r2, #1 + 1328 0070 1A60 str r2, [r3] + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1329 .loc 1 434 10 view .LVU463 + 1330 0072 0020 movs r0, #0 + 1331 .LVL135: + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1332 .loc 1 434 10 view .LVU464 + 1333 0074 7047 bx lr + 1334 .LVL136: + 1335 .L48: + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1336 .loc 1 413 12 view .LVU465 + 1337 0076 0120 movs r0, #1 + 1338 .LVL137: + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1339 .loc 1 413 12 view .LVU466 + 1340 0078 7047 bx lr + 1341 .LVL138: + ARM GAS /tmp/ccPLZXyC.s page 162 + + + 1342 .L49: + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1343 .loc 1 434 10 view .LVU467 + 1344 007a 0020 movs r0, #0 + 1345 .LVL139: + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1346 .loc 1 435 1 view .LVU468 + 1347 007c 7047 bx lr + 1348 .L51: + 1349 007e 00BF .align 2 + 1350 .L50: + 1351 0080 00000140 .word 1073807360 + 1352 0084 07000100 .word 65543 + 1353 .cfi_endproc + 1354 .LFE145: + 1356 .section .text.HAL_TIM_Base_Stop,"ax",%progbits + 1357 .align 1 + 1358 .global HAL_TIM_Base_Stop + 1359 .syntax unified + 1360 .thumb + 1361 .thumb_func + 1362 .fpu fpv5-d16 + 1364 HAL_TIM_Base_Stop: + 1365 .LVL140: + 1366 .LFB146: + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 1367 .loc 1 443 1 is_stmt 1 view -0 + 1368 .cfi_startproc + 1369 @ args = 0, pretend = 0, frame = 0 + 1370 @ frame_needed = 0, uses_anonymous_args = 0 + 1371 @ link register save eliminated. + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1372 .loc 1 445 3 view .LVU470 + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1373 .loc 1 448 3 view .LVU471 + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1374 .loc 1 448 3 view .LVU472 + 1375 0000 0368 ldr r3, [r0] + 1376 0002 196A ldr r1, [r3, #32] + 1377 0004 41F21112 movw r2, #4369 + 1378 0008 1142 tst r1, r2 + 1379 000a 08D1 bne .L53 + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1380 .loc 1 448 3 discriminator 1 view .LVU473 + 1381 000c 196A ldr r1, [r3, #32] + 1382 000e 40F24442 movw r2, #1092 + 1383 0012 1142 tst r1, r2 + 1384 0014 03D1 bne .L53 + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1385 .loc 1 448 3 discriminator 3 view .LVU474 + 1386 0016 1A68 ldr r2, [r3] + 1387 0018 22F00102 bic r2, r2, #1 + 1388 001c 1A60 str r2, [r3] + 1389 .L53: + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1390 .loc 1 448 3 discriminator 5 view .LVU475 + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 163 + + + 1391 .loc 1 451 3 discriminator 5 view .LVU476 + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1392 .loc 1 451 15 is_stmt 0 discriminator 5 view .LVU477 + 1393 001e 0123 movs r3, #1 + 1394 0020 80F83D30 strb r3, [r0, #61] + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1395 .loc 1 454 3 is_stmt 1 discriminator 5 view .LVU478 + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1396 .loc 1 455 1 is_stmt 0 discriminator 5 view .LVU479 + 1397 0024 0020 movs r0, #0 + 1398 .LVL141: + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1399 .loc 1 455 1 discriminator 5 view .LVU480 + 1400 0026 7047 bx lr + 1401 .cfi_endproc + 1402 .LFE146: + 1404 .section .text.HAL_TIM_Base_Start_IT,"ax",%progbits + 1405 .align 1 + 1406 .global HAL_TIM_Base_Start_IT + 1407 .syntax unified + 1408 .thumb + 1409 .thumb_func + 1410 .fpu fpv5-d16 + 1412 HAL_TIM_Base_Start_IT: + 1413 .LVL142: + 1414 .LFB147: + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 1415 .loc 1 463 1 is_stmt 1 view -0 + 1416 .cfi_startproc + 1417 @ args = 0, pretend = 0, frame = 0 + 1418 @ frame_needed = 0, uses_anonymous_args = 0 + 1419 @ link register save eliminated. + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1420 .loc 1 464 3 view .LVU482 + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1421 .loc 1 467 3 view .LVU483 + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1422 .loc 1 470 3 view .LVU484 + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1423 .loc 1 470 11 is_stmt 0 view .LVU485 + 1424 0000 90F83D30 ldrb r3, [r0, #61] @ zero_extendqisi2 + 1425 0004 DBB2 uxtb r3, r3 + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1426 .loc 1 470 6 view .LVU486 + 1427 0006 012B cmp r3, #1 + 1428 0008 3AD1 bne .L58 + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1429 .loc 1 476 3 is_stmt 1 view .LVU487 + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1430 .loc 1 476 15 is_stmt 0 view .LVU488 + 1431 000a 0223 movs r3, #2 + 1432 000c 80F83D30 strb r3, [r0, #61] + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1433 .loc 1 479 3 is_stmt 1 view .LVU489 + 1434 0010 0268 ldr r2, [r0] + 1435 0012 D368 ldr r3, [r2, #12] + 1436 0014 43F00103 orr r3, r3, #1 + ARM GAS /tmp/ccPLZXyC.s page 164 + + + 1437 0018 D360 str r3, [r2, #12] + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1438 .loc 1 482 3 view .LVU490 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1439 .loc 1 482 7 is_stmt 0 view .LVU491 + 1440 001a 0368 ldr r3, [r0] + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1441 .loc 1 482 6 view .LVU492 + 1442 001c 1A4A ldr r2, .L60 + 1443 001e B3F1804F cmp r3, #1073741824 + 1444 0022 18BF it ne + 1445 0024 9342 cmpne r3, r2 + 1446 0026 1DD0 beq .L56 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1447 .loc 1 482 7 discriminator 1 view .LVU493 + 1448 0028 A2F57C42 sub r2, r2, #64512 + 1449 002c 9342 cmp r3, r2 + 1450 002e 19D0 beq .L56 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1451 .loc 1 482 7 discriminator 2 view .LVU494 + 1452 0030 02F58062 add r2, r2, #1024 + 1453 0034 9342 cmp r3, r2 + 1454 0036 15D0 beq .L56 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1455 .loc 1 482 7 discriminator 3 view .LVU495 + 1456 0038 02F58062 add r2, r2, #1024 + 1457 003c 9342 cmp r3, r2 + 1458 003e 11D0 beq .L56 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1459 .loc 1 482 7 discriminator 4 view .LVU496 + 1460 0040 02F57842 add r2, r2, #63488 + 1461 0044 9342 cmp r3, r2 + 1462 0046 0DD0 beq .L56 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1463 .loc 1 482 7 discriminator 5 view .LVU497 + 1464 0048 02F57052 add r2, r2, #15360 + 1465 004c 9342 cmp r3, r2 + 1466 004e 09D0 beq .L56 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1467 .loc 1 482 7 discriminator 6 view .LVU498 + 1468 0050 A2F59432 sub r2, r2, #75776 + 1469 0054 9342 cmp r3, r2 + 1470 0056 05D0 beq .L56 + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1471 .loc 1 492 5 is_stmt 1 view .LVU499 + 1472 0058 1A68 ldr r2, [r3] + 1473 005a 42F00102 orr r2, r2, #1 + 1474 005e 1A60 str r2, [r3] + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1475 .loc 1 496 10 is_stmt 0 view .LVU500 + 1476 0060 0020 movs r0, #0 + 1477 .LVL143: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1478 .loc 1 496 10 view .LVU501 + 1479 0062 7047 bx lr + 1480 .LVL144: + 1481 .L56: + ARM GAS /tmp/ccPLZXyC.s page 165 + + + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1482 .loc 1 484 5 is_stmt 1 view .LVU502 + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1483 .loc 1 484 29 is_stmt 0 view .LVU503 + 1484 0064 9968 ldr r1, [r3, #8] + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1485 .loc 1 484 13 view .LVU504 + 1486 0066 094A ldr r2, .L60+4 + 1487 0068 0A40 ands r2, r2, r1 + 1488 .LVL145: + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1489 .loc 1 485 5 is_stmt 1 view .LVU505 + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1490 .loc 1 485 8 is_stmt 0 view .LVU506 + 1491 006a 062A cmp r2, #6 + 1492 006c 18BF it ne + 1493 006e B2F5803F cmpne r2, #65536 + 1494 0072 07D0 beq .L59 + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1495 .loc 1 487 7 is_stmt 1 view .LVU507 + 1496 0074 1A68 ldr r2, [r3] + 1497 .LVL146: + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1498 .loc 1 487 7 is_stmt 0 view .LVU508 + 1499 0076 42F00102 orr r2, r2, #1 + 1500 007a 1A60 str r2, [r3] + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1501 .loc 1 496 10 view .LVU509 + 1502 007c 0020 movs r0, #0 + 1503 .LVL147: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1504 .loc 1 496 10 view .LVU510 + 1505 007e 7047 bx lr + 1506 .LVL148: + 1507 .L58: + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1508 .loc 1 472 12 view .LVU511 + 1509 0080 0120 movs r0, #1 + 1510 .LVL149: + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1511 .loc 1 472 12 view .LVU512 + 1512 0082 7047 bx lr + 1513 .LVL150: + 1514 .L59: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1515 .loc 1 496 10 view .LVU513 + 1516 0084 0020 movs r0, #0 + 1517 .LVL151: + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1518 .loc 1 497 1 view .LVU514 + 1519 0086 7047 bx lr + 1520 .L61: + 1521 .align 2 + 1522 .L60: + 1523 0088 00000140 .word 1073807360 + 1524 008c 07000100 .word 65543 + 1525 .cfi_endproc + ARM GAS /tmp/ccPLZXyC.s page 166 + + + 1526 .LFE147: + 1528 .section .text.HAL_TIM_Base_Stop_IT,"ax",%progbits + 1529 .align 1 + 1530 .global HAL_TIM_Base_Stop_IT + 1531 .syntax unified + 1532 .thumb + 1533 .thumb_func + 1534 .fpu fpv5-d16 + 1536 HAL_TIM_Base_Stop_IT: + 1537 .LVL152: + 1538 .LFB148: + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 1539 .loc 1 505 1 is_stmt 1 view -0 + 1540 .cfi_startproc + 1541 @ args = 0, pretend = 0, frame = 0 + 1542 @ frame_needed = 0, uses_anonymous_args = 0 + 1543 @ link register save eliminated. + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1544 .loc 1 507 3 view .LVU516 + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1545 .loc 1 510 3 view .LVU517 + 1546 0000 0268 ldr r2, [r0] + 1547 0002 D368 ldr r3, [r2, #12] + 1548 0004 23F00103 bic r3, r3, #1 + 1549 0008 D360 str r3, [r2, #12] + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1550 .loc 1 513 3 view .LVU518 + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1551 .loc 1 513 3 view .LVU519 + 1552 000a 0368 ldr r3, [r0] + 1553 000c 196A ldr r1, [r3, #32] + 1554 000e 41F21112 movw r2, #4369 + 1555 0012 1142 tst r1, r2 + 1556 0014 08D1 bne .L63 + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1557 .loc 1 513 3 discriminator 1 view .LVU520 + 1558 0016 196A ldr r1, [r3, #32] + 1559 0018 40F24442 movw r2, #1092 + 1560 001c 1142 tst r1, r2 + 1561 001e 03D1 bne .L63 + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1562 .loc 1 513 3 discriminator 3 view .LVU521 + 1563 0020 1A68 ldr r2, [r3] + 1564 0022 22F00102 bic r2, r2, #1 + 1565 0026 1A60 str r2, [r3] + 1566 .L63: + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1567 .loc 1 513 3 discriminator 5 view .LVU522 + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1568 .loc 1 516 3 discriminator 5 view .LVU523 + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1569 .loc 1 516 15 is_stmt 0 discriminator 5 view .LVU524 + 1570 0028 0123 movs r3, #1 + 1571 002a 80F83D30 strb r3, [r0, #61] + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1572 .loc 1 519 3 is_stmt 1 discriminator 5 view .LVU525 + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 167 + + + 1573 .loc 1 520 1 is_stmt 0 discriminator 5 view .LVU526 + 1574 002e 0020 movs r0, #0 + 1575 .LVL153: + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1576 .loc 1 520 1 discriminator 5 view .LVU527 + 1577 0030 7047 bx lr + 1578 .cfi_endproc + 1579 .LFE148: + 1581 .section .text.HAL_TIM_Base_Start_DMA,"ax",%progbits + 1582 .align 1 + 1583 .global HAL_TIM_Base_Start_DMA + 1584 .syntax unified + 1585 .thumb + 1586 .thumb_func + 1587 .fpu fpv5-d16 + 1589 HAL_TIM_Base_Start_DMA: + 1590 .LVL154: + 1591 .LFB149: + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 1592 .loc 1 530 1 is_stmt 1 view -0 + 1593 .cfi_startproc + 1594 @ args = 0, pretend = 0, frame = 0 + 1595 @ frame_needed = 0, uses_anonymous_args = 0 + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 1596 .loc 1 530 1 is_stmt 0 view .LVU529 + 1597 0000 38B5 push {r3, r4, r5, lr} + 1598 .LCFI21: + 1599 .cfi_def_cfa_offset 16 + 1600 .cfi_offset 3, -16 + 1601 .cfi_offset 4, -12 + 1602 .cfi_offset 5, -8 + 1603 .cfi_offset 14, -4 + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1604 .loc 1 531 3 is_stmt 1 view .LVU530 + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1605 .loc 1 534 3 view .LVU531 + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1606 .loc 1 537 3 view .LVU532 + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1607 .loc 1 537 11 is_stmt 0 view .LVU533 + 1608 0002 90F83D40 ldrb r4, [r0, #61] @ zero_extendqisi2 + 1609 0006 E4B2 uxtb r4, r4 + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1610 .loc 1 537 6 view .LVU534 + 1611 0008 022C cmp r4, #2 + 1612 000a 58D0 beq .L65 + 1613 000c 0546 mov r5, r0 + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1614 .loc 1 541 8 is_stmt 1 view .LVU535 + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1615 .loc 1 541 16 is_stmt 0 view .LVU536 + 1616 000e 90F83D40 ldrb r4, [r0, #61] @ zero_extendqisi2 + 1617 0012 E4B2 uxtb r4, r4 + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1618 .loc 1 541 11 view .LVU537 + 1619 0014 012C cmp r4, #1 + 1620 0016 51D1 bne .L68 + ARM GAS /tmp/ccPLZXyC.s page 168 + + + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1621 .loc 1 543 5 is_stmt 1 view .LVU538 + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1622 .loc 1 543 8 is_stmt 0 view .LVU539 + 1623 0018 002A cmp r2, #0 + 1624 001a 18BF it ne + 1625 001c 0029 cmpne r1, #0 + 1626 001e 4ED0 beq .L65 + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1627 .loc 1 549 7 is_stmt 1 view .LVU540 + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1628 .loc 1 549 19 is_stmt 0 view .LVU541 + 1629 0020 0223 movs r3, #2 + 1630 0022 80F83D30 strb r3, [r0, #61] + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 1631 .loc 1 558 3 is_stmt 1 view .LVU542 + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 1632 .loc 1 558 13 is_stmt 0 view .LVU543 + 1633 0026 036A ldr r3, [r0, #32] + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 1634 .loc 1 558 51 view .LVU544 + 1635 0028 2748 ldr r0, .L71 + 1636 .LVL155: + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 1637 .loc 1 558 51 view .LVU545 + 1638 002a D863 str r0, [r3, #60] + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1639 .loc 1 559 3 is_stmt 1 view .LVU546 + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1640 .loc 1 559 13 is_stmt 0 view .LVU547 + 1641 002c 2B6A ldr r3, [r5, #32] + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1642 .loc 1 559 55 view .LVU548 + 1643 002e 2748 ldr r0, .L71+4 + 1644 0030 1864 str r0, [r3, #64] + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1645 .loc 1 562 3 is_stmt 1 view .LVU549 + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1646 .loc 1 562 13 is_stmt 0 view .LVU550 + 1647 0032 2B6A ldr r3, [r5, #32] + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1648 .loc 1 562 52 view .LVU551 + 1649 0034 2648 ldr r0, .L71+8 + 1650 0036 D864 str r0, [r3, #76] + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 1651 .loc 1 565 3 is_stmt 1 view .LVU552 + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 1652 .loc 1 565 87 is_stmt 0 view .LVU553 + 1653 0038 2868 ldr r0, [r5] + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 1654 .loc 1 565 7 view .LVU554 + 1655 003a 1346 mov r3, r2 + 1656 003c 00F12C02 add r2, r0, #44 + 1657 .LVL156: + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 1658 .loc 1 565 7 view .LVU555 + 1659 0040 286A ldr r0, [r5, #32] + ARM GAS /tmp/ccPLZXyC.s page 169 + + + 1660 0042 FFF7FEFF bl HAL_DMA_Start_IT + 1661 .LVL157: + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 1662 .loc 1 565 6 view .LVU556 + 1663 0046 0146 mov r1, r0 + 1664 0048 0028 cmp r0, #0 + 1665 004a 38D1 bne .L65 + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1666 .loc 1 573 3 is_stmt 1 view .LVU557 + 1667 004c 2A68 ldr r2, [r5] + 1668 004e D368 ldr r3, [r2, #12] + 1669 0050 43F48073 orr r3, r3, #256 + 1670 0054 D360 str r3, [r2, #12] + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1671 .loc 1 576 3 view .LVU558 + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1672 .loc 1 576 7 is_stmt 0 view .LVU559 + 1673 0056 2B68 ldr r3, [r5] + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1674 .loc 1 576 6 view .LVU560 + 1675 0058 1E4A ldr r2, .L71+12 + 1676 005a B3F1804F cmp r3, #1073741824 + 1677 005e 18BF it ne + 1678 0060 9342 cmpne r3, r2 + 1679 0062 1DD0 beq .L66 + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1680 .loc 1 576 7 discriminator 1 view .LVU561 + 1681 0064 A2F57C42 sub r2, r2, #64512 + 1682 0068 9342 cmp r3, r2 + 1683 006a 19D0 beq .L66 + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1684 .loc 1 576 7 discriminator 2 view .LVU562 + 1685 006c 02F58062 add r2, r2, #1024 + 1686 0070 9342 cmp r3, r2 + 1687 0072 15D0 beq .L66 + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1688 .loc 1 576 7 discriminator 3 view .LVU563 + 1689 0074 02F58062 add r2, r2, #1024 + 1690 0078 9342 cmp r3, r2 + 1691 007a 11D0 beq .L66 + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1692 .loc 1 576 7 discriminator 4 view .LVU564 + 1693 007c 02F57842 add r2, r2, #63488 + 1694 0080 9342 cmp r3, r2 + 1695 0082 0DD0 beq .L66 + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1696 .loc 1 576 7 discriminator 5 view .LVU565 + 1697 0084 02F57052 add r2, r2, #15360 + 1698 0088 9342 cmp r3, r2 + 1699 008a 09D0 beq .L66 + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1700 .loc 1 576 7 discriminator 6 view .LVU566 + 1701 008c A2F59432 sub r2, r2, #75776 + 1702 0090 9342 cmp r3, r2 + 1703 0092 05D0 beq .L66 + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1704 .loc 1 586 5 is_stmt 1 view .LVU567 + ARM GAS /tmp/ccPLZXyC.s page 170 + + + 1705 0094 1A68 ldr r2, [r3] + 1706 0096 42F00102 orr r2, r2, #1 + 1707 009a 1A60 str r2, [r3] + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1708 .loc 1 590 10 is_stmt 0 view .LVU568 + 1709 009c 0446 mov r4, r0 + 1710 009e 0EE0 b .L65 + 1711 .L66: + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1712 .loc 1 578 5 is_stmt 1 view .LVU569 + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1713 .loc 1 578 29 is_stmt 0 view .LVU570 + 1714 00a0 9868 ldr r0, [r3, #8] + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1715 .loc 1 578 13 view .LVU571 + 1716 00a2 0D4A ldr r2, .L71+16 + 1717 00a4 0240 ands r2, r2, r0 + 1718 .LVL158: + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1719 .loc 1 579 5 is_stmt 1 view .LVU572 + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 1720 .loc 1 579 8 is_stmt 0 view .LVU573 + 1721 00a6 062A cmp r2, #6 + 1722 00a8 18BF it ne + 1723 00aa B2F5803F cmpne r2, #65536 + 1724 00ae 08D0 beq .L69 + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1725 .loc 1 581 7 is_stmt 1 view .LVU574 + 1726 00b0 1A68 ldr r2, [r3] + 1727 .LVL159: + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1728 .loc 1 581 7 is_stmt 0 view .LVU575 + 1729 00b2 42F00102 orr r2, r2, #1 + 1730 00b6 1A60 str r2, [r3] + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1731 .loc 1 590 10 view .LVU576 + 1732 00b8 0C46 mov r4, r1 + 1733 00ba 00E0 b .L65 + 1734 .LVL160: + 1735 .L68: + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1736 .loc 1 554 12 view .LVU577 + 1737 00bc 0124 movs r4, #1 + 1738 .LVL161: + 1739 .L65: + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1740 .loc 1 591 1 view .LVU578 + 1741 00be 2046 mov r0, r4 + 1742 00c0 38BD pop {r3, r4, r5, pc} + 1743 .LVL162: + 1744 .L69: + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1745 .loc 1 590 10 view .LVU579 + 1746 00c2 0C46 mov r4, r1 + 1747 00c4 FBE7 b .L65 + 1748 .L72: + 1749 00c6 00BF .align 2 + ARM GAS /tmp/ccPLZXyC.s page 171 + + + 1750 .L71: + 1751 00c8 00000000 .word TIM_DMAPeriodElapsedCplt + 1752 00cc 00000000 .word TIM_DMAPeriodElapsedHalfCplt + 1753 00d0 00000000 .word TIM_DMAError + 1754 00d4 00000140 .word 1073807360 + 1755 00d8 07000100 .word 65543 + 1756 .cfi_endproc + 1757 .LFE149: + 1759 .section .text.HAL_TIM_Base_Stop_DMA,"ax",%progbits + 1760 .align 1 + 1761 .global HAL_TIM_Base_Stop_DMA + 1762 .syntax unified + 1763 .thumb + 1764 .thumb_func + 1765 .fpu fpv5-d16 + 1767 HAL_TIM_Base_Stop_DMA: + 1768 .LVL163: + 1769 .LFB150: + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 1770 .loc 1 599 1 is_stmt 1 view -0 + 1771 .cfi_startproc + 1772 @ args = 0, pretend = 0, frame = 0 + 1773 @ frame_needed = 0, uses_anonymous_args = 0 + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 1774 .loc 1 599 1 is_stmt 0 view .LVU581 + 1775 0000 10B5 push {r4, lr} + 1776 .LCFI22: + 1777 .cfi_def_cfa_offset 8 + 1778 .cfi_offset 4, -8 + 1779 .cfi_offset 14, -4 + 1780 0002 0446 mov r4, r0 + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1781 .loc 1 601 3 is_stmt 1 view .LVU582 + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1782 .loc 1 604 3 view .LVU583 + 1783 0004 0268 ldr r2, [r0] + 1784 0006 D368 ldr r3, [r2, #12] + 1785 0008 23F48073 bic r3, r3, #256 + 1786 000c D360 str r3, [r2, #12] + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1787 .loc 1 606 3 view .LVU584 + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1788 .loc 1 606 9 is_stmt 0 view .LVU585 + 1789 000e 006A ldr r0, [r0, #32] + 1790 .LVL164: + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1791 .loc 1 606 9 view .LVU586 + 1792 0010 FFF7FEFF bl HAL_DMA_Abort_IT + 1793 .LVL165: + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1794 .loc 1 609 3 is_stmt 1 view .LVU587 + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1795 .loc 1 609 3 view .LVU588 + 1796 0014 2368 ldr r3, [r4] + 1797 0016 196A ldr r1, [r3, #32] + 1798 0018 41F21112 movw r2, #4369 + 1799 001c 1142 tst r1, r2 + ARM GAS /tmp/ccPLZXyC.s page 172 + + + 1800 001e 08D1 bne .L74 + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1801 .loc 1 609 3 discriminator 1 view .LVU589 + 1802 0020 196A ldr r1, [r3, #32] + 1803 0022 40F24442 movw r2, #1092 + 1804 0026 1142 tst r1, r2 + 1805 0028 03D1 bne .L74 + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1806 .loc 1 609 3 discriminator 3 view .LVU590 + 1807 002a 1A68 ldr r2, [r3] + 1808 002c 22F00102 bic r2, r2, #1 + 1809 0030 1A60 str r2, [r3] + 1810 .L74: + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1811 .loc 1 609 3 discriminator 5 view .LVU591 + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1812 .loc 1 612 3 discriminator 5 view .LVU592 + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1813 .loc 1 612 15 is_stmt 0 discriminator 5 view .LVU593 + 1814 0032 0123 movs r3, #1 + 1815 0034 84F83D30 strb r3, [r4, #61] + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1816 .loc 1 615 3 is_stmt 1 discriminator 5 view .LVU594 + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1817 .loc 1 616 1 is_stmt 0 discriminator 5 view .LVU595 + 1818 0038 0020 movs r0, #0 + 1819 003a 10BD pop {r4, pc} + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1820 .loc 1 616 1 discriminator 5 view .LVU596 + 1821 .cfi_endproc + 1822 .LFE150: + 1824 .section .text.HAL_TIM_OC_MspInit,"ax",%progbits + 1825 .align 1 + 1826 .weak HAL_TIM_OC_MspInit + 1827 .syntax unified + 1828 .thumb + 1829 .thumb_func + 1830 .fpu fpv5-d16 + 1832 HAL_TIM_OC_MspInit: + 1833 .LVL166: + 1834 .LFB153: + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 1835 .loc 1 757 1 is_stmt 1 view -0 + 1836 .cfi_startproc + 1837 @ args = 0, pretend = 0, frame = 0 + 1838 @ frame_needed = 0, uses_anonymous_args = 0 + 1839 @ link register save eliminated. + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1840 .loc 1 759 3 view .LVU598 + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1841 .loc 1 764 1 is_stmt 0 view .LVU599 + 1842 0000 7047 bx lr + 1843 .cfi_endproc + 1844 .LFE153: + 1846 .section .text.HAL_TIM_OC_MspDeInit,"ax",%progbits + 1847 .align 1 + 1848 .weak HAL_TIM_OC_MspDeInit + ARM GAS /tmp/ccPLZXyC.s page 173 + + + 1849 .syntax unified + 1850 .thumb + 1851 .thumb_func + 1852 .fpu fpv5-d16 + 1854 HAL_TIM_OC_MspDeInit: + 1855 .LVL167: + 1856 .LFB154: + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 1857 .loc 1 772 1 is_stmt 1 view -0 + 1858 .cfi_startproc + 1859 @ args = 0, pretend = 0, frame = 0 + 1860 @ frame_needed = 0, uses_anonymous_args = 0 + 1861 @ link register save eliminated. + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1862 .loc 1 774 3 view .LVU601 + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1863 .loc 1 779 1 is_stmt 0 view .LVU602 + 1864 0000 7047 bx lr + 1865 .cfi_endproc + 1866 .LFE154: + 1868 .section .text.HAL_TIM_OC_DeInit,"ax",%progbits + 1869 .align 1 + 1870 .global HAL_TIM_OC_DeInit + 1871 .syntax unified + 1872 .thumb + 1873 .thumb_func + 1874 .fpu fpv5-d16 + 1876 HAL_TIM_OC_DeInit: + 1877 .LVL168: + 1878 .LFB152: + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 1879 .loc 1 714 1 is_stmt 1 view -0 + 1880 .cfi_startproc + 1881 @ args = 0, pretend = 0, frame = 0 + 1882 @ frame_needed = 0, uses_anonymous_args = 0 + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 1883 .loc 1 714 1 is_stmt 0 view .LVU604 + 1884 0000 10B5 push {r4, lr} + 1885 .LCFI23: + 1886 .cfi_def_cfa_offset 8 + 1887 .cfi_offset 4, -8 + 1888 .cfi_offset 14, -4 + 1889 0002 0446 mov r4, r0 + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1890 .loc 1 716 3 is_stmt 1 view .LVU605 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1891 .loc 1 718 3 view .LVU606 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1892 .loc 1 718 15 is_stmt 0 view .LVU607 + 1893 0004 0223 movs r3, #2 + 1894 0006 80F83D30 strb r3, [r0, #61] + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1895 .loc 1 721 3 is_stmt 1 view .LVU608 + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1896 .loc 1 721 3 view .LVU609 + 1897 000a 0368 ldr r3, [r0] + 1898 000c 196A ldr r1, [r3, #32] + ARM GAS /tmp/ccPLZXyC.s page 174 + + + 1899 000e 41F21112 movw r2, #4369 + 1900 0012 1142 tst r1, r2 + 1901 0014 08D1 bne .L79 + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1902 .loc 1 721 3 discriminator 1 view .LVU610 + 1903 0016 196A ldr r1, [r3, #32] + 1904 0018 40F24442 movw r2, #1092 + 1905 001c 1142 tst r1, r2 + 1906 001e 03D1 bne .L79 + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1907 .loc 1 721 3 discriminator 3 view .LVU611 + 1908 0020 1A68 ldr r2, [r3] + 1909 0022 22F00102 bic r2, r2, #1 + 1910 0026 1A60 str r2, [r3] + 1911 .L79: + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1912 .loc 1 721 3 discriminator 5 view .LVU612 + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 1913 .loc 1 732 3 discriminator 5 view .LVU613 + 1914 0028 2046 mov r0, r4 + 1915 .LVL169: + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 1916 .loc 1 732 3 is_stmt 0 discriminator 5 view .LVU614 + 1917 002a FFF7FEFF bl HAL_TIM_OC_MspDeInit + 1918 .LVL170: + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1919 .loc 1 736 3 is_stmt 1 discriminator 5 view .LVU615 + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1920 .loc 1 736 23 is_stmt 0 discriminator 5 view .LVU616 + 1921 002e 0020 movs r0, #0 + 1922 0030 84F84800 strb r0, [r4, #72] + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1923 .loc 1 739 3 is_stmt 1 discriminator 5 view .LVU617 + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1924 .loc 1 739 3 discriminator 5 view .LVU618 + 1925 0034 84F83E00 strb r0, [r4, #62] + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1926 .loc 1 739 3 discriminator 5 view .LVU619 + 1927 0038 84F83F00 strb r0, [r4, #63] + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1928 .loc 1 739 3 discriminator 5 view .LVU620 + 1929 003c 84F84000 strb r0, [r4, #64] + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1930 .loc 1 739 3 discriminator 5 view .LVU621 + 1931 0040 84F84100 strb r0, [r4, #65] + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1932 .loc 1 739 3 discriminator 5 view .LVU622 + 1933 0044 84F84200 strb r0, [r4, #66] + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1934 .loc 1 739 3 discriminator 5 view .LVU623 + 1935 0048 84F84300 strb r0, [r4, #67] + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 1936 .loc 1 739 3 discriminator 5 view .LVU624 + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1937 .loc 1 740 3 discriminator 5 view .LVU625 + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1938 .loc 1 740 3 discriminator 5 view .LVU626 + ARM GAS /tmp/ccPLZXyC.s page 175 + + + 1939 004c 84F84400 strb r0, [r4, #68] + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1940 .loc 1 740 3 discriminator 5 view .LVU627 + 1941 0050 84F84500 strb r0, [r4, #69] + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1942 .loc 1 740 3 discriminator 5 view .LVU628 + 1943 0054 84F84600 strb r0, [r4, #70] + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1944 .loc 1 740 3 discriminator 5 view .LVU629 + 1945 0058 84F84700 strb r0, [r4, #71] + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1946 .loc 1 740 3 discriminator 5 view .LVU630 + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1947 .loc 1 743 3 discriminator 5 view .LVU631 + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1948 .loc 1 743 15 is_stmt 0 discriminator 5 view .LVU632 + 1949 005c 84F83D00 strb r0, [r4, #61] + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1950 .loc 1 746 3 is_stmt 1 discriminator 5 view .LVU633 + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1951 .loc 1 746 3 discriminator 5 view .LVU634 + 1952 0060 84F83C00 strb r0, [r4, #60] + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1953 .loc 1 746 3 discriminator 5 view .LVU635 + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 1954 .loc 1 748 3 discriminator 5 view .LVU636 + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1955 .loc 1 749 1 is_stmt 0 discriminator 5 view .LVU637 + 1956 0064 10BD pop {r4, pc} + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1957 .loc 1 749 1 discriminator 5 view .LVU638 + 1958 .cfi_endproc + 1959 .LFE152: + 1961 .section .text.HAL_TIM_PWM_MspInit,"ax",%progbits + 1962 .align 1 + 1963 .weak HAL_TIM_PWM_MspInit + 1964 .syntax unified + 1965 .thumb + 1966 .thumb_func + 1967 .fpu fpv5-d16 + 1969 HAL_TIM_PWM_MspInit: + 1970 .LVL171: + 1971 .LFB163: +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 1972 .loc 1 1426 1 is_stmt 1 view -0 + 1973 .cfi_startproc + 1974 @ args = 0, pretend = 0, frame = 0 + 1975 @ frame_needed = 0, uses_anonymous_args = 0 + 1976 @ link register save eliminated. +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1977 .loc 1 1428 3 view .LVU640 +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1978 .loc 1 1433 1 is_stmt 0 view .LVU641 + 1979 0000 7047 bx lr + 1980 .cfi_endproc + 1981 .LFE163: + 1983 .section .text.HAL_TIM_PWM_MspDeInit,"ax",%progbits + ARM GAS /tmp/ccPLZXyC.s page 176 + + + 1984 .align 1 + 1985 .weak HAL_TIM_PWM_MspDeInit + 1986 .syntax unified + 1987 .thumb + 1988 .thumb_func + 1989 .fpu fpv5-d16 + 1991 HAL_TIM_PWM_MspDeInit: + 1992 .LVL172: + 1993 .LFB164: +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 1994 .loc 1 1441 1 is_stmt 1 view -0 + 1995 .cfi_startproc + 1996 @ args = 0, pretend = 0, frame = 0 + 1997 @ frame_needed = 0, uses_anonymous_args = 0 + 1998 @ link register save eliminated. +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 1999 .loc 1 1443 3 view .LVU643 +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2000 .loc 1 1448 1 is_stmt 0 view .LVU644 + 2001 0000 7047 bx lr + 2002 .cfi_endproc + 2003 .LFE164: + 2005 .section .text.HAL_TIM_PWM_DeInit,"ax",%progbits + 2006 .align 1 + 2007 .global HAL_TIM_PWM_DeInit + 2008 .syntax unified + 2009 .thumb + 2010 .thumb_func + 2011 .fpu fpv5-d16 + 2013 HAL_TIM_PWM_DeInit: + 2014 .LVL173: + 2015 .LFB162: +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 2016 .loc 1 1383 1 is_stmt 1 view -0 + 2017 .cfi_startproc + 2018 @ args = 0, pretend = 0, frame = 0 + 2019 @ frame_needed = 0, uses_anonymous_args = 0 +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 2020 .loc 1 1383 1 is_stmt 0 view .LVU646 + 2021 0000 10B5 push {r4, lr} + 2022 .LCFI24: + 2023 .cfi_def_cfa_offset 8 + 2024 .cfi_offset 4, -8 + 2025 .cfi_offset 14, -4 + 2026 0002 0446 mov r4, r0 +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2027 .loc 1 1385 3 is_stmt 1 view .LVU647 +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2028 .loc 1 1387 3 view .LVU648 +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2029 .loc 1 1387 15 is_stmt 0 view .LVU649 + 2030 0004 0223 movs r3, #2 + 2031 0006 80F83D30 strb r3, [r0, #61] +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2032 .loc 1 1390 3 is_stmt 1 view .LVU650 +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2033 .loc 1 1390 3 view .LVU651 + ARM GAS /tmp/ccPLZXyC.s page 177 + + + 2034 000a 0368 ldr r3, [r0] + 2035 000c 196A ldr r1, [r3, #32] + 2036 000e 41F21112 movw r2, #4369 + 2037 0012 1142 tst r1, r2 + 2038 0014 08D1 bne .L84 +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2039 .loc 1 1390 3 discriminator 1 view .LVU652 + 2040 0016 196A ldr r1, [r3, #32] + 2041 0018 40F24442 movw r2, #1092 + 2042 001c 1142 tst r1, r2 + 2043 001e 03D1 bne .L84 +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2044 .loc 1 1390 3 discriminator 3 view .LVU653 + 2045 0020 1A68 ldr r2, [r3] + 2046 0022 22F00102 bic r2, r2, #1 + 2047 0026 1A60 str r2, [r3] + 2048 .L84: +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2049 .loc 1 1390 3 discriminator 5 view .LVU654 +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 2050 .loc 1 1401 3 discriminator 5 view .LVU655 + 2051 0028 2046 mov r0, r4 + 2052 .LVL174: +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 2053 .loc 1 1401 3 is_stmt 0 discriminator 5 view .LVU656 + 2054 002a FFF7FEFF bl HAL_TIM_PWM_MspDeInit + 2055 .LVL175: +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2056 .loc 1 1405 3 is_stmt 1 discriminator 5 view .LVU657 +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2057 .loc 1 1405 23 is_stmt 0 discriminator 5 view .LVU658 + 2058 002e 0020 movs r0, #0 + 2059 0030 84F84800 strb r0, [r4, #72] +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2060 .loc 1 1408 3 is_stmt 1 discriminator 5 view .LVU659 +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2061 .loc 1 1408 3 discriminator 5 view .LVU660 + 2062 0034 84F83E00 strb r0, [r4, #62] +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2063 .loc 1 1408 3 discriminator 5 view .LVU661 + 2064 0038 84F83F00 strb r0, [r4, #63] +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2065 .loc 1 1408 3 discriminator 5 view .LVU662 + 2066 003c 84F84000 strb r0, [r4, #64] +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2067 .loc 1 1408 3 discriminator 5 view .LVU663 + 2068 0040 84F84100 strb r0, [r4, #65] +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2069 .loc 1 1408 3 discriminator 5 view .LVU664 + 2070 0044 84F84200 strb r0, [r4, #66] +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2071 .loc 1 1408 3 discriminator 5 view .LVU665 + 2072 0048 84F84300 strb r0, [r4, #67] +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2073 .loc 1 1408 3 discriminator 5 view .LVU666 +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2074 .loc 1 1409 3 discriminator 5 view .LVU667 + ARM GAS /tmp/ccPLZXyC.s page 178 + + +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2075 .loc 1 1409 3 discriminator 5 view .LVU668 + 2076 004c 84F84400 strb r0, [r4, #68] +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2077 .loc 1 1409 3 discriminator 5 view .LVU669 + 2078 0050 84F84500 strb r0, [r4, #69] +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2079 .loc 1 1409 3 discriminator 5 view .LVU670 + 2080 0054 84F84600 strb r0, [r4, #70] +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2081 .loc 1 1409 3 discriminator 5 view .LVU671 + 2082 0058 84F84700 strb r0, [r4, #71] +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2083 .loc 1 1409 3 discriminator 5 view .LVU672 +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2084 .loc 1 1412 3 discriminator 5 view .LVU673 +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2085 .loc 1 1412 15 is_stmt 0 discriminator 5 view .LVU674 + 2086 005c 84F83D00 strb r0, [r4, #61] +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2087 .loc 1 1415 3 is_stmt 1 discriminator 5 view .LVU675 +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2088 .loc 1 1415 3 discriminator 5 view .LVU676 + 2089 0060 84F83C00 strb r0, [r4, #60] +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2090 .loc 1 1415 3 discriminator 5 view .LVU677 +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2091 .loc 1 1417 3 discriminator 5 view .LVU678 +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2092 .loc 1 1418 1 is_stmt 0 discriminator 5 view .LVU679 + 2093 0064 10BD pop {r4, pc} +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2094 .loc 1 1418 1 discriminator 5 view .LVU680 + 2095 .cfi_endproc + 2096 .LFE162: + 2098 .section .text.HAL_TIM_IC_MspInit,"ax",%progbits + 2099 .align 1 + 2100 .weak HAL_TIM_IC_MspInit + 2101 .syntax unified + 2102 .thumb + 2103 .thumb_func + 2104 .fpu fpv5-d16 + 2106 HAL_TIM_IC_MspInit: + 2107 .LVL176: + 2108 .LFB173: +2094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 2109 .loc 1 2094 1 is_stmt 1 view -0 + 2110 .cfi_startproc + 2111 @ args = 0, pretend = 0, frame = 0 + 2112 @ frame_needed = 0, uses_anonymous_args = 0 + 2113 @ link register save eliminated. +2096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2114 .loc 1 2096 3 view .LVU682 +2101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2115 .loc 1 2101 1 is_stmt 0 view .LVU683 + 2116 0000 7047 bx lr + 2117 .cfi_endproc + ARM GAS /tmp/ccPLZXyC.s page 179 + + + 2118 .LFE173: + 2120 .section .text.HAL_TIM_IC_MspDeInit,"ax",%progbits + 2121 .align 1 + 2122 .weak HAL_TIM_IC_MspDeInit + 2123 .syntax unified + 2124 .thumb + 2125 .thumb_func + 2126 .fpu fpv5-d16 + 2128 HAL_TIM_IC_MspDeInit: + 2129 .LVL177: + 2130 .LFB174: +2109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 2131 .loc 1 2109 1 is_stmt 1 view -0 + 2132 .cfi_startproc + 2133 @ args = 0, pretend = 0, frame = 0 + 2134 @ frame_needed = 0, uses_anonymous_args = 0 + 2135 @ link register save eliminated. +2111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2136 .loc 1 2111 3 view .LVU685 +2116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2137 .loc 1 2116 1 is_stmt 0 view .LVU686 + 2138 0000 7047 bx lr + 2139 .cfi_endproc + 2140 .LFE174: + 2142 .section .text.HAL_TIM_IC_DeInit,"ax",%progbits + 2143 .align 1 + 2144 .global HAL_TIM_IC_DeInit + 2145 .syntax unified + 2146 .thumb + 2147 .thumb_func + 2148 .fpu fpv5-d16 + 2150 HAL_TIM_IC_DeInit: + 2151 .LVL178: + 2152 .LFB172: +2051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 2153 .loc 1 2051 1 is_stmt 1 view -0 + 2154 .cfi_startproc + 2155 @ args = 0, pretend = 0, frame = 0 + 2156 @ frame_needed = 0, uses_anonymous_args = 0 +2051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 2157 .loc 1 2051 1 is_stmt 0 view .LVU688 + 2158 0000 10B5 push {r4, lr} + 2159 .LCFI25: + 2160 .cfi_def_cfa_offset 8 + 2161 .cfi_offset 4, -8 + 2162 .cfi_offset 14, -4 + 2163 0002 0446 mov r4, r0 +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2164 .loc 1 2053 3 is_stmt 1 view .LVU689 +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2165 .loc 1 2055 3 view .LVU690 +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2166 .loc 1 2055 15 is_stmt 0 view .LVU691 + 2167 0004 0223 movs r3, #2 + 2168 0006 80F83D30 strb r3, [r0, #61] +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2169 .loc 1 2058 3 is_stmt 1 view .LVU692 + ARM GAS /tmp/ccPLZXyC.s page 180 + + +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2170 .loc 1 2058 3 view .LVU693 + 2171 000a 0368 ldr r3, [r0] + 2172 000c 196A ldr r1, [r3, #32] + 2173 000e 41F21112 movw r2, #4369 + 2174 0012 1142 tst r1, r2 + 2175 0014 08D1 bne .L89 +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2176 .loc 1 2058 3 discriminator 1 view .LVU694 + 2177 0016 196A ldr r1, [r3, #32] + 2178 0018 40F24442 movw r2, #1092 + 2179 001c 1142 tst r1, r2 + 2180 001e 03D1 bne .L89 +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2181 .loc 1 2058 3 discriminator 3 view .LVU695 + 2182 0020 1A68 ldr r2, [r3] + 2183 0022 22F00102 bic r2, r2, #1 + 2184 0026 1A60 str r2, [r3] + 2185 .L89: +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2186 .loc 1 2058 3 discriminator 5 view .LVU696 +2069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 2187 .loc 1 2069 3 discriminator 5 view .LVU697 + 2188 0028 2046 mov r0, r4 + 2189 .LVL179: +2069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 2190 .loc 1 2069 3 is_stmt 0 discriminator 5 view .LVU698 + 2191 002a FFF7FEFF bl HAL_TIM_IC_MspDeInit + 2192 .LVL180: +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2193 .loc 1 2073 3 is_stmt 1 discriminator 5 view .LVU699 +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2194 .loc 1 2073 23 is_stmt 0 discriminator 5 view .LVU700 + 2195 002e 0020 movs r0, #0 + 2196 0030 84F84800 strb r0, [r4, #72] +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2197 .loc 1 2076 3 is_stmt 1 discriminator 5 view .LVU701 +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2198 .loc 1 2076 3 discriminator 5 view .LVU702 + 2199 0034 84F83E00 strb r0, [r4, #62] +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2200 .loc 1 2076 3 discriminator 5 view .LVU703 + 2201 0038 84F83F00 strb r0, [r4, #63] +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2202 .loc 1 2076 3 discriminator 5 view .LVU704 + 2203 003c 84F84000 strb r0, [r4, #64] +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2204 .loc 1 2076 3 discriminator 5 view .LVU705 + 2205 0040 84F84100 strb r0, [r4, #65] +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2206 .loc 1 2076 3 discriminator 5 view .LVU706 + 2207 0044 84F84200 strb r0, [r4, #66] +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2208 .loc 1 2076 3 discriminator 5 view .LVU707 + 2209 0048 84F84300 strb r0, [r4, #67] +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_RESET); + 2210 .loc 1 2076 3 discriminator 5 view .LVU708 + ARM GAS /tmp/ccPLZXyC.s page 181 + + +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2211 .loc 1 2077 3 discriminator 5 view .LVU709 +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2212 .loc 1 2077 3 discriminator 5 view .LVU710 + 2213 004c 84F84400 strb r0, [r4, #68] +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2214 .loc 1 2077 3 discriminator 5 view .LVU711 + 2215 0050 84F84500 strb r0, [r4, #69] +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2216 .loc 1 2077 3 discriminator 5 view .LVU712 + 2217 0054 84F84600 strb r0, [r4, #70] +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2218 .loc 1 2077 3 discriminator 5 view .LVU713 + 2219 0058 84F84700 strb r0, [r4, #71] +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2220 .loc 1 2077 3 discriminator 5 view .LVU714 +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2221 .loc 1 2080 3 discriminator 5 view .LVU715 +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2222 .loc 1 2080 15 is_stmt 0 discriminator 5 view .LVU716 + 2223 005c 84F83D00 strb r0, [r4, #61] +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2224 .loc 1 2083 3 is_stmt 1 discriminator 5 view .LVU717 +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2225 .loc 1 2083 3 discriminator 5 view .LVU718 + 2226 0060 84F83C00 strb r0, [r4, #60] +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2227 .loc 1 2083 3 discriminator 5 view .LVU719 +2085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2228 .loc 1 2085 3 discriminator 5 view .LVU720 +2086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2229 .loc 1 2086 1 is_stmt 0 discriminator 5 view .LVU721 + 2230 0064 10BD pop {r4, pc} +2086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2231 .loc 1 2086 1 discriminator 5 view .LVU722 + 2232 .cfi_endproc + 2233 .LFE172: + 2235 .section .text.HAL_TIM_OnePulse_MspInit,"ax",%progbits + 2236 .align 1 + 2237 .weak HAL_TIM_OnePulse_MspInit + 2238 .syntax unified + 2239 .thumb + 2240 .thumb_func + 2241 .fpu fpv5-d16 + 2243 HAL_TIM_OnePulse_MspInit: + 2244 .LVL181: + 2245 .LFB183: +2754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 2246 .loc 1 2754 1 is_stmt 1 view -0 + 2247 .cfi_startproc + 2248 @ args = 0, pretend = 0, frame = 0 + 2249 @ frame_needed = 0, uses_anonymous_args = 0 + 2250 @ link register save eliminated. +2756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2251 .loc 1 2756 3 view .LVU724 +2761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2252 .loc 1 2761 1 is_stmt 0 view .LVU725 + ARM GAS /tmp/ccPLZXyC.s page 182 + + + 2253 0000 7047 bx lr + 2254 .cfi_endproc + 2255 .LFE183: + 2257 .section .text.HAL_TIM_OnePulse_MspDeInit,"ax",%progbits + 2258 .align 1 + 2259 .weak HAL_TIM_OnePulse_MspDeInit + 2260 .syntax unified + 2261 .thumb + 2262 .thumb_func + 2263 .fpu fpv5-d16 + 2265 HAL_TIM_OnePulse_MspDeInit: + 2266 .LVL182: + 2267 .LFB184: +2769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 2268 .loc 1 2769 1 is_stmt 1 view -0 + 2269 .cfi_startproc + 2270 @ args = 0, pretend = 0, frame = 0 + 2271 @ frame_needed = 0, uses_anonymous_args = 0 + 2272 @ link register save eliminated. +2771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2273 .loc 1 2771 3 view .LVU727 +2776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2274 .loc 1 2776 1 is_stmt 0 view .LVU728 + 2275 0000 7047 bx lr + 2276 .cfi_endproc + 2277 .LFE184: + 2279 .section .text.HAL_TIM_OnePulse_DeInit,"ax",%progbits + 2280 .align 1 + 2281 .global HAL_TIM_OnePulse_DeInit + 2282 .syntax unified + 2283 .thumb + 2284 .thumb_func + 2285 .fpu fpv5-d16 + 2287 HAL_TIM_OnePulse_DeInit: + 2288 .LVL183: + 2289 .LFB182: +2709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 2290 .loc 1 2709 1 is_stmt 1 view -0 + 2291 .cfi_startproc + 2292 @ args = 0, pretend = 0, frame = 0 + 2293 @ frame_needed = 0, uses_anonymous_args = 0 +2709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 2294 .loc 1 2709 1 is_stmt 0 view .LVU730 + 2295 0000 10B5 push {r4, lr} + 2296 .LCFI26: + 2297 .cfi_def_cfa_offset 8 + 2298 .cfi_offset 4, -8 + 2299 .cfi_offset 14, -4 + 2300 0002 0446 mov r4, r0 +2711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2301 .loc 1 2711 3 is_stmt 1 view .LVU731 +2713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2302 .loc 1 2713 3 view .LVU732 +2713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2303 .loc 1 2713 15 is_stmt 0 view .LVU733 + 2304 0004 0223 movs r3, #2 + 2305 0006 80F83D30 strb r3, [r0, #61] + ARM GAS /tmp/ccPLZXyC.s page 183 + + +2716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2306 .loc 1 2716 3 is_stmt 1 view .LVU734 +2716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2307 .loc 1 2716 3 view .LVU735 + 2308 000a 0368 ldr r3, [r0] + 2309 000c 196A ldr r1, [r3, #32] + 2310 000e 41F21112 movw r2, #4369 + 2311 0012 1142 tst r1, r2 + 2312 0014 08D1 bne .L94 +2716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2313 .loc 1 2716 3 discriminator 1 view .LVU736 + 2314 0016 196A ldr r1, [r3, #32] + 2315 0018 40F24442 movw r2, #1092 + 2316 001c 1142 tst r1, r2 + 2317 001e 03D1 bne .L94 +2716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2318 .loc 1 2716 3 discriminator 3 view .LVU737 + 2319 0020 1A68 ldr r2, [r3] + 2320 0022 22F00102 bic r2, r2, #1 + 2321 0026 1A60 str r2, [r3] + 2322 .L94: +2716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2323 .loc 1 2716 3 discriminator 5 view .LVU738 +2727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 2324 .loc 1 2727 3 discriminator 5 view .LVU739 + 2325 0028 2046 mov r0, r4 + 2326 .LVL184: +2727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 2327 .loc 1 2727 3 is_stmt 0 discriminator 5 view .LVU740 + 2328 002a FFF7FEFF bl HAL_TIM_OnePulse_MspDeInit + 2329 .LVL185: +2731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2330 .loc 1 2731 3 is_stmt 1 discriminator 5 view .LVU741 +2731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2331 .loc 1 2731 23 is_stmt 0 discriminator 5 view .LVU742 + 2332 002e 0020 movs r0, #0 + 2333 0030 84F84800 strb r0, [r4, #72] +2734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + 2334 .loc 1 2734 3 is_stmt 1 discriminator 5 view .LVU743 + 2335 0034 84F83E00 strb r0, [r4, #62] +2735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + 2336 .loc 1 2735 3 discriminator 5 view .LVU744 + 2337 0038 84F83F00 strb r0, [r4, #63] +2736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + 2338 .loc 1 2736 3 discriminator 5 view .LVU745 + 2339 003c 84F84400 strb r0, [r4, #68] +2737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2340 .loc 1 2737 3 discriminator 5 view .LVU746 + 2341 0040 84F84500 strb r0, [r4, #69] +2740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2342 .loc 1 2740 3 discriminator 5 view .LVU747 +2740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2343 .loc 1 2740 15 is_stmt 0 discriminator 5 view .LVU748 + 2344 0044 84F83D00 strb r0, [r4, #61] +2743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2345 .loc 1 2743 3 is_stmt 1 discriminator 5 view .LVU749 +2743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 184 + + + 2346 .loc 1 2743 3 discriminator 5 view .LVU750 + 2347 0048 84F83C00 strb r0, [r4, #60] +2743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2348 .loc 1 2743 3 discriminator 5 view .LVU751 +2745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2349 .loc 1 2745 3 discriminator 5 view .LVU752 +2746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2350 .loc 1 2746 1 is_stmt 0 discriminator 5 view .LVU753 + 2351 004c 10BD pop {r4, pc} +2746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2352 .loc 1 2746 1 discriminator 5 view .LVU754 + 2353 .cfi_endproc + 2354 .LFE182: + 2356 .section .text.HAL_TIM_Encoder_MspInit,"ax",%progbits + 2357 .align 1 + 2358 .weak HAL_TIM_Encoder_MspInit + 2359 .syntax unified + 2360 .thumb + 2361 .thumb_func + 2362 .fpu fpv5-d16 + 2364 HAL_TIM_Encoder_MspInit: + 2365 .LVL186: + 2366 .LFB191: +3191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 2367 .loc 1 3191 1 is_stmt 1 view -0 + 2368 .cfi_startproc + 2369 @ args = 0, pretend = 0, frame = 0 + 2370 @ frame_needed = 0, uses_anonymous_args = 0 + 2371 @ link register save eliminated. +3193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2372 .loc 1 3193 3 view .LVU756 +3198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2373 .loc 1 3198 1 is_stmt 0 view .LVU757 + 2374 0000 7047 bx lr + 2375 .cfi_endproc + 2376 .LFE191: + 2378 .section .text.HAL_TIM_Encoder_MspDeInit,"ax",%progbits + 2379 .align 1 + 2380 .weak HAL_TIM_Encoder_MspDeInit + 2381 .syntax unified + 2382 .thumb + 2383 .thumb_func + 2384 .fpu fpv5-d16 + 2386 HAL_TIM_Encoder_MspDeInit: + 2387 .LVL187: + 2388 .LFB192: +3206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 2389 .loc 1 3206 1 is_stmt 1 view -0 + 2390 .cfi_startproc + 2391 @ args = 0, pretend = 0, frame = 0 + 2392 @ frame_needed = 0, uses_anonymous_args = 0 + 2393 @ link register save eliminated. +3208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2394 .loc 1 3208 3 view .LVU759 +3213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2395 .loc 1 3213 1 is_stmt 0 view .LVU760 + 2396 0000 7047 bx lr + ARM GAS /tmp/ccPLZXyC.s page 185 + + + 2397 .cfi_endproc + 2398 .LFE192: + 2400 .section .text.HAL_TIM_Encoder_DeInit,"ax",%progbits + 2401 .align 1 + 2402 .global HAL_TIM_Encoder_DeInit + 2403 .syntax unified + 2404 .thumb + 2405 .thumb_func + 2406 .fpu fpv5-d16 + 2408 HAL_TIM_Encoder_DeInit: + 2409 .LVL188: + 2410 .LFB190: +3146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 2411 .loc 1 3146 1 is_stmt 1 view -0 + 2412 .cfi_startproc + 2413 @ args = 0, pretend = 0, frame = 0 + 2414 @ frame_needed = 0, uses_anonymous_args = 0 +3146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 2415 .loc 1 3146 1 is_stmt 0 view .LVU762 + 2416 0000 10B5 push {r4, lr} + 2417 .LCFI27: + 2418 .cfi_def_cfa_offset 8 + 2419 .cfi_offset 4, -8 + 2420 .cfi_offset 14, -4 + 2421 0002 0446 mov r4, r0 +3148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2422 .loc 1 3148 3 is_stmt 1 view .LVU763 +3150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2423 .loc 1 3150 3 view .LVU764 +3150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2424 .loc 1 3150 15 is_stmt 0 view .LVU765 + 2425 0004 0223 movs r3, #2 + 2426 0006 80F83D30 strb r3, [r0, #61] +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2427 .loc 1 3153 3 is_stmt 1 view .LVU766 +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2428 .loc 1 3153 3 view .LVU767 + 2429 000a 0368 ldr r3, [r0] + 2430 000c 196A ldr r1, [r3, #32] + 2431 000e 41F21112 movw r2, #4369 + 2432 0012 1142 tst r1, r2 + 2433 0014 08D1 bne .L99 +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2434 .loc 1 3153 3 discriminator 1 view .LVU768 + 2435 0016 196A ldr r1, [r3, #32] + 2436 0018 40F24442 movw r2, #1092 + 2437 001c 1142 tst r1, r2 + 2438 001e 03D1 bne .L99 +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2439 .loc 1 3153 3 discriminator 3 view .LVU769 + 2440 0020 1A68 ldr r2, [r3] + 2441 0022 22F00102 bic r2, r2, #1 + 2442 0026 1A60 str r2, [r3] + 2443 .L99: +3153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2444 .loc 1 3153 3 discriminator 5 view .LVU770 +3164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + ARM GAS /tmp/ccPLZXyC.s page 186 + + + 2445 .loc 1 3164 3 discriminator 5 view .LVU771 + 2446 0028 2046 mov r0, r4 + 2447 .LVL189: +3164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 2448 .loc 1 3164 3 is_stmt 0 discriminator 5 view .LVU772 + 2449 002a FFF7FEFF bl HAL_TIM_Encoder_MspDeInit + 2450 .LVL190: +3168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2451 .loc 1 3168 3 is_stmt 1 discriminator 5 view .LVU773 +3168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2452 .loc 1 3168 23 is_stmt 0 discriminator 5 view .LVU774 + 2453 002e 0020 movs r0, #0 + 2454 0030 84F84800 strb r0, [r4, #72] +3171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + 2455 .loc 1 3171 3 is_stmt 1 discriminator 5 view .LVU775 + 2456 0034 84F83E00 strb r0, [r4, #62] +3172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + 2457 .loc 1 3172 3 discriminator 5 view .LVU776 + 2458 0038 84F83F00 strb r0, [r4, #63] +3173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + 2459 .loc 1 3173 3 discriminator 5 view .LVU777 + 2460 003c 84F84400 strb r0, [r4, #68] +3174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2461 .loc 1 3174 3 discriminator 5 view .LVU778 + 2462 0040 84F84500 strb r0, [r4, #69] +3177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2463 .loc 1 3177 3 discriminator 5 view .LVU779 +3177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2464 .loc 1 3177 15 is_stmt 0 discriminator 5 view .LVU780 + 2465 0044 84F83D00 strb r0, [r4, #61] +3180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2466 .loc 1 3180 3 is_stmt 1 discriminator 5 view .LVU781 +3180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2467 .loc 1 3180 3 discriminator 5 view .LVU782 + 2468 0048 84F83C00 strb r0, [r4, #60] +3180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2469 .loc 1 3180 3 discriminator 5 view .LVU783 +3182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2470 .loc 1 3182 3 discriminator 5 view .LVU784 +3183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2471 .loc 1 3183 1 is_stmt 0 discriminator 5 view .LVU785 + 2472 004c 10BD pop {r4, pc} +3183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2473 .loc 1 3183 1 discriminator 5 view .LVU786 + 2474 .cfi_endproc + 2475 .LFE190: + 2477 .section .text.HAL_TIM_DMABurst_MultiWriteStart,"ax",%progbits + 2478 .align 1 + 2479 .global HAL_TIM_DMABurst_MultiWriteStart + 2480 .syntax unified + 2481 .thumb + 2482 .thumb_func + 2483 .fpu fpv5-d16 + 2485 HAL_TIM_DMABurst_MultiWriteStart: + 2486 .LVL191: + 2487 .LFB205: +4634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + ARM GAS /tmp/ccPLZXyC.s page 187 + + + 2488 .loc 1 4634 1 is_stmt 1 view -0 + 2489 .cfi_startproc + 2490 @ args = 8, pretend = 0, frame = 0 + 2491 @ frame_needed = 0, uses_anonymous_args = 0 +4634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 2492 .loc 1 4634 1 is_stmt 0 view .LVU788 + 2493 0000 70B5 push {r4, r5, r6, lr} + 2494 .LCFI28: + 2495 .cfi_def_cfa_offset 16 + 2496 .cfi_offset 4, -16 + 2497 .cfi_offset 5, -12 + 2498 .cfi_offset 6, -8 + 2499 .cfi_offset 14, -4 + 2500 0002 0546 mov r5, r0 + 2501 0004 1446 mov r4, r2 +4635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2502 .loc 1 4635 3 is_stmt 1 view .LVU789 + 2503 .LVL192: +4638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_BASE(BurstBaseAddress)); + 2504 .loc 1 4638 3 view .LVU790 +4639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + 2505 .loc 1 4639 3 view .LVU791 +4640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_LENGTH(BurstLength)); + 2506 .loc 1 4640 3 view .LVU792 +4641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength)); + 2507 .loc 1 4641 3 view .LVU793 +4642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2508 .loc 1 4642 3 view .LVU794 +4644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2509 .loc 1 4644 3 view .LVU795 +4644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2510 .loc 1 4644 11 is_stmt 0 view .LVU796 + 2511 0006 90F84820 ldrb r2, [r0, #72] @ zero_extendqisi2 + 2512 .LVL193: +4644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2513 .loc 1 4644 11 view .LVU797 + 2514 000a D0B2 uxtb r0, r2 + 2515 .LVL194: +4644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2516 .loc 1 4644 6 view .LVU798 + 2517 000c 0228 cmp r0, #2 + 2518 000e 4CD0 beq .L102 + 2519 0010 0E46 mov r6, r1 + 2520 0012 1946 mov r1, r3 + 2521 .LVL195: +4648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2522 .loc 1 4648 8 is_stmt 1 view .LVU799 +4648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2523 .loc 1 4648 16 is_stmt 0 view .LVU800 + 2524 0014 95F84820 ldrb r2, [r5, #72] @ zero_extendqisi2 + 2525 0018 D0B2 uxtb r0, r2 +4648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2526 .loc 1 4648 11 view .LVU801 + 2527 001a 0128 cmp r0, #1 + 2528 001c 1CD0 beq .L121 + 2529 .LVL196: + 2530 .L103: + ARM GAS /tmp/ccPLZXyC.s page 188 + + +4662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2531 .loc 1 4662 3 is_stmt 1 view .LVU802 +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2532 .loc 1 4664 3 view .LVU803 + 2533 001e B4F5006F cmp r4, #2048 + 2534 0022 00F08980 beq .L104 + 2535 0026 43D8 bhi .L105 + 2536 0028 B4F5007F cmp r4, #512 + 2537 002c 71D0 beq .L106 + 2538 002e B4F5806F cmp r4, #1024 + 2539 0032 1DD1 bne .L122 +4705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2540 .loc 1 4705 7 view .LVU804 +4705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2541 .loc 1 4705 17 is_stmt 0 view .LVU805 + 2542 0034 AB6A ldr r3, [r5, #40] +4705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2543 .loc 1 4705 52 view .LVU806 + 2544 0036 544A ldr r2, .L127 + 2545 0038 DA63 str r2, [r3, #60] +4706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2546 .loc 1 4706 7 is_stmt 1 view .LVU807 +4706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2547 .loc 1 4706 17 is_stmt 0 view .LVU808 + 2548 003a AB6A ldr r3, [r5, #40] +4706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2549 .loc 1 4706 56 view .LVU809 + 2550 003c 534A ldr r2, .L127+4 + 2551 003e 1A64 str r2, [r3, #64] +4709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2552 .loc 1 4709 7 is_stmt 1 view .LVU810 +4709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2553 .loc 1 4709 17 is_stmt 0 view .LVU811 + 2554 0040 AB6A ldr r3, [r5, #40] +4709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2555 .loc 1 4709 53 view .LVU812 + 2556 0042 534A ldr r2, .L127+8 + 2557 0044 DA64 str r2, [r3, #76] +4712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2558 .loc 1 4712 7 is_stmt 1 view .LVU813 +4713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2559 .loc 1 4713 43 is_stmt 0 view .LVU814 + 2560 0046 2A68 ldr r2, [r5] +4712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2561 .loc 1 4712 11 view .LVU815 + 2562 0048 059B ldr r3, [sp, #20] + 2563 004a 4C32 adds r2, r2, #76 + 2564 004c A86A ldr r0, [r5, #40] + 2565 004e FFF7FEFF bl HAL_DMA_Start_IT + 2566 .LVL197: +4712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2567 .loc 1 4712 10 view .LVU816 + 2568 0052 08B3 cbz r0, .L112 +4716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2569 .loc 1 4716 16 view .LVU817 + 2570 0054 0120 movs r0, #1 + 2571 0056 28E0 b .L102 + ARM GAS /tmp/ccPLZXyC.s page 189 + + + 2572 .LVL198: + 2573 .L121: +4650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2574 .loc 1 4650 5 is_stmt 1 view .LVU818 +4650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2575 .loc 1 4650 31 is_stmt 0 view .LVU819 + 2576 0058 049A ldr r2, [sp, #16] + 2577 005a B3FA83F3 clz r3, r3 + 2578 005e 5B09 lsrs r3, r3, #5 + 2579 0060 002A cmp r2, #0 + 2580 0062 08BF it eq + 2581 0064 0023 moveq r3, #0 +4650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2582 .loc 1 4650 8 view .LVU820 + 2583 0066 03BB cbnz r3, .L102 +4656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2584 .loc 1 4656 7 is_stmt 1 view .LVU821 +4656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2585 .loc 1 4656 27 is_stmt 0 view .LVU822 + 2586 0068 0223 movs r3, #2 + 2587 006a 85F84830 strb r3, [r5, #72] + 2588 006e D6E7 b .L103 + 2589 .L122: +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2590 .loc 1 4664 3 view .LVU823 + 2591 0070 B4F5807F cmp r4, #256 + 2592 0074 1AD1 bne .L123 +4669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 2593 .loc 1 4669 7 is_stmt 1 view .LVU824 +4669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 2594 .loc 1 4669 17 is_stmt 0 view .LVU825 + 2595 0076 2B6A ldr r3, [r5, #32] +4669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 2596 .loc 1 4669 55 view .LVU826 + 2597 0078 464A ldr r2, .L127+12 + 2598 007a DA63 str r2, [r3, #60] +4670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2599 .loc 1 4670 7 is_stmt 1 view .LVU827 +4670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2600 .loc 1 4670 17 is_stmt 0 view .LVU828 + 2601 007c 2B6A ldr r3, [r5, #32] +4670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2602 .loc 1 4670 59 view .LVU829 + 2603 007e 464A ldr r2, .L127+16 + 2604 0080 1A64 str r2, [r3, #64] +4673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2605 .loc 1 4673 7 is_stmt 1 view .LVU830 +4673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2606 .loc 1 4673 17 is_stmt 0 view .LVU831 + 2607 0082 2B6A ldr r3, [r5, #32] +4673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2608 .loc 1 4673 56 view .LVU832 + 2609 0084 424A ldr r2, .L127+8 + 2610 0086 DA64 str r2, [r3, #76] +4676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2611 .loc 1 4676 7 is_stmt 1 view .LVU833 +4677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 190 + + + 2612 .loc 1 4677 43 is_stmt 0 view .LVU834 + 2613 0088 2A68 ldr r2, [r5] +4676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2614 .loc 1 4676 11 view .LVU835 + 2615 008a 059B ldr r3, [sp, #20] + 2616 008c 4C32 adds r2, r2, #76 + 2617 008e 286A ldr r0, [r5, #32] + 2618 0090 FFF7FEFF bl HAL_DMA_Start_IT + 2619 .LVL199: +4676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2620 .loc 1 4676 10 view .LVU836 + 2621 0094 0028 cmp r0, #0 + 2622 0096 75D1 bne .L124 + 2623 .L112: + 2624 .LVL200: +4800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM DMA Request */ + 2625 .loc 1 4800 5 is_stmt 1 view .LVU837 +4800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM DMA Request */ + 2626 .loc 1 4800 9 is_stmt 0 view .LVU838 + 2627 0098 2B68 ldr r3, [r5] +4800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM DMA Request */ + 2628 .loc 1 4800 45 view .LVU839 + 2629 009a 049A ldr r2, [sp, #16] + 2630 009c 1643 orrs r6, r6, r2 + 2631 .LVL201: +4800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM DMA Request */ + 2632 .loc 1 4800 25 view .LVU840 + 2633 009e 9E64 str r6, [r3, #72] +4802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2634 .loc 1 4802 5 is_stmt 1 view .LVU841 + 2635 00a0 2B68 ldr r3, [r5] + 2636 00a2 DA68 ldr r2, [r3, #12] + 2637 00a4 1443 orrs r4, r4, r2 + 2638 .LVL202: +4802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2639 .loc 1 4802 5 is_stmt 0 view .LVU842 + 2640 00a6 DC60 str r4, [r3, #12] + 2641 00a8 0020 movs r0, #0 + 2642 .L102: +4807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2643 .loc 1 4807 1 view .LVU843 + 2644 00aa 70BD pop {r4, r5, r6, pc} + 2645 .LVL203: + 2646 .L123: +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2647 .loc 1 4664 3 view .LVU844 + 2648 00ac 0120 movs r0, #1 + 2649 00ae FCE7 b .L102 + 2650 .L105: +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2651 .loc 1 4664 3 view .LVU845 + 2652 00b0 B4F5005F cmp r4, #8192 + 2653 00b4 53D0 beq .L109 + 2654 00b6 B4F5804F cmp r4, #16384 + 2655 00ba 12D1 bne .L125 +4777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + 2656 .loc 1 4777 7 is_stmt 1 view .LVU846 + ARM GAS /tmp/ccPLZXyC.s page 191 + + +4777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + 2657 .loc 1 4777 17 is_stmt 0 view .LVU847 + 2658 00bc AB6B ldr r3, [r5, #56] +4777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + 2659 .loc 1 4777 56 view .LVU848 + 2660 00be 374A ldr r2, .L127+20 + 2661 00c0 DA63 str r2, [r3, #60] +4778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2662 .loc 1 4778 7 is_stmt 1 view .LVU849 +4778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2663 .loc 1 4778 17 is_stmt 0 view .LVU850 + 2664 00c2 AB6B ldr r3, [r5, #56] +4778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2665 .loc 1 4778 60 view .LVU851 + 2666 00c4 364A ldr r2, .L127+24 + 2667 00c6 1A64 str r2, [r3, #64] +4781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2668 .loc 1 4781 7 is_stmt 1 view .LVU852 +4781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2669 .loc 1 4781 17 is_stmt 0 view .LVU853 + 2670 00c8 AB6B ldr r3, [r5, #56] +4781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2671 .loc 1 4781 57 view .LVU854 + 2672 00ca 314A ldr r2, .L127+8 + 2673 00cc DA64 str r2, [r3, #76] +4784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2674 .loc 1 4784 7 is_stmt 1 view .LVU855 +4785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2675 .loc 1 4785 43 is_stmt 0 view .LVU856 + 2676 00ce 2A68 ldr r2, [r5] +4784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2677 .loc 1 4784 11 view .LVU857 + 2678 00d0 059B ldr r3, [sp, #20] + 2679 00d2 4C32 adds r2, r2, #76 + 2680 00d4 A86B ldr r0, [r5, #56] + 2681 00d6 FFF7FEFF bl HAL_DMA_Start_IT + 2682 .LVL204: +4784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2683 .loc 1 4784 10 view .LVU858 + 2684 00da 0028 cmp r0, #0 + 2685 00dc DCD0 beq .L112 +4788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2686 .loc 1 4788 16 view .LVU859 + 2687 00de 0120 movs r0, #1 + 2688 00e0 E3E7 b .L102 + 2689 .LVL205: + 2690 .L125: +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2691 .loc 1 4664 3 view .LVU860 + 2692 00e2 B4F5805F cmp r4, #4096 + 2693 00e6 12D1 bne .L126 +4741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2694 .loc 1 4741 7 is_stmt 1 view .LVU861 +4741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2695 .loc 1 4741 17 is_stmt 0 view .LVU862 + 2696 00e8 2B6B ldr r3, [r5, #48] +4741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + ARM GAS /tmp/ccPLZXyC.s page 192 + + + 2697 .loc 1 4741 52 view .LVU863 + 2698 00ea 274A ldr r2, .L127 + 2699 00ec DA63 str r2, [r3, #60] +4742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2700 .loc 1 4742 7 is_stmt 1 view .LVU864 +4742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2701 .loc 1 4742 17 is_stmt 0 view .LVU865 + 2702 00ee 2B6B ldr r3, [r5, #48] +4742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2703 .loc 1 4742 56 view .LVU866 + 2704 00f0 264A ldr r2, .L127+4 + 2705 00f2 1A64 str r2, [r3, #64] +4745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2706 .loc 1 4745 7 is_stmt 1 view .LVU867 +4745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2707 .loc 1 4745 17 is_stmt 0 view .LVU868 + 2708 00f4 2B6B ldr r3, [r5, #48] +4745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2709 .loc 1 4745 53 view .LVU869 + 2710 00f6 264A ldr r2, .L127+8 + 2711 00f8 DA64 str r2, [r3, #76] +4748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2712 .loc 1 4748 7 is_stmt 1 view .LVU870 +4749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2713 .loc 1 4749 43 is_stmt 0 view .LVU871 + 2714 00fa 2A68 ldr r2, [r5] +4748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2715 .loc 1 4748 11 view .LVU872 + 2716 00fc 059B ldr r3, [sp, #20] + 2717 00fe 4C32 adds r2, r2, #76 + 2718 0100 286B ldr r0, [r5, #48] + 2719 0102 FFF7FEFF bl HAL_DMA_Start_IT + 2720 .LVL206: +4748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2721 .loc 1 4748 10 view .LVU873 + 2722 0106 0028 cmp r0, #0 + 2723 0108 C6D0 beq .L112 +4752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2724 .loc 1 4752 16 view .LVU874 + 2725 010a 0120 movs r0, #1 + 2726 010c CDE7 b .L102 + 2727 .LVL207: + 2728 .L126: +4664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2729 .loc 1 4664 3 view .LVU875 + 2730 010e 0120 movs r0, #1 + 2731 0110 CBE7 b .L102 + 2732 .L106: +4687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2733 .loc 1 4687 7 is_stmt 1 view .LVU876 +4687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2734 .loc 1 4687 17 is_stmt 0 view .LVU877 + 2735 0112 6B6A ldr r3, [r5, #36] +4687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2736 .loc 1 4687 52 view .LVU878 + 2737 0114 1C4A ldr r2, .L127 + 2738 0116 DA63 str r2, [r3, #60] + ARM GAS /tmp/ccPLZXyC.s page 193 + + +4688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2739 .loc 1 4688 7 is_stmt 1 view .LVU879 +4688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2740 .loc 1 4688 17 is_stmt 0 view .LVU880 + 2741 0118 6B6A ldr r3, [r5, #36] +4688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2742 .loc 1 4688 56 view .LVU881 + 2743 011a 1C4A ldr r2, .L127+4 + 2744 011c 1A64 str r2, [r3, #64] +4691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2745 .loc 1 4691 7 is_stmt 1 view .LVU882 +4691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2746 .loc 1 4691 17 is_stmt 0 view .LVU883 + 2747 011e 6B6A ldr r3, [r5, #36] +4691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2748 .loc 1 4691 53 view .LVU884 + 2749 0120 1B4A ldr r2, .L127+8 + 2750 0122 DA64 str r2, [r3, #76] +4694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2751 .loc 1 4694 7 is_stmt 1 view .LVU885 +4695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2752 .loc 1 4695 43 is_stmt 0 view .LVU886 + 2753 0124 2A68 ldr r2, [r5] +4694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2754 .loc 1 4694 11 view .LVU887 + 2755 0126 059B ldr r3, [sp, #20] + 2756 0128 4C32 adds r2, r2, #76 + 2757 012a 686A ldr r0, [r5, #36] + 2758 012c FFF7FEFF bl HAL_DMA_Start_IT + 2759 .LVL208: +4694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2760 .loc 1 4694 10 view .LVU888 + 2761 0130 0028 cmp r0, #0 + 2762 0132 B1D0 beq .L112 +4698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2763 .loc 1 4698 16 view .LVU889 + 2764 0134 0120 movs r0, #1 + 2765 0136 B8E7 b .L102 + 2766 .LVL209: + 2767 .L104: +4723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2768 .loc 1 4723 7 is_stmt 1 view .LVU890 +4723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2769 .loc 1 4723 17 is_stmt 0 view .LVU891 + 2770 0138 EB6A ldr r3, [r5, #44] +4723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2771 .loc 1 4723 52 view .LVU892 + 2772 013a 134A ldr r2, .L127 + 2773 013c DA63 str r2, [r3, #60] +4724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2774 .loc 1 4724 7 is_stmt 1 view .LVU893 +4724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2775 .loc 1 4724 17 is_stmt 0 view .LVU894 + 2776 013e EB6A ldr r3, [r5, #44] +4724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2777 .loc 1 4724 56 view .LVU895 + 2778 0140 124A ldr r2, .L127+4 + ARM GAS /tmp/ccPLZXyC.s page 194 + + + 2779 0142 1A64 str r2, [r3, #64] +4727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2780 .loc 1 4727 7 is_stmt 1 view .LVU896 +4727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2781 .loc 1 4727 17 is_stmt 0 view .LVU897 + 2782 0144 EB6A ldr r3, [r5, #44] +4727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2783 .loc 1 4727 53 view .LVU898 + 2784 0146 124A ldr r2, .L127+8 + 2785 0148 DA64 str r2, [r3, #76] +4730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2786 .loc 1 4730 7 is_stmt 1 view .LVU899 +4731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2787 .loc 1 4731 43 is_stmt 0 view .LVU900 + 2788 014a 2A68 ldr r2, [r5] +4730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2789 .loc 1 4730 11 view .LVU901 + 2790 014c 059B ldr r3, [sp, #20] + 2791 014e 4C32 adds r2, r2, #76 + 2792 0150 E86A ldr r0, [r5, #44] + 2793 0152 FFF7FEFF bl HAL_DMA_Start_IT + 2794 .LVL210: +4730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2795 .loc 1 4730 10 view .LVU902 + 2796 0156 0028 cmp r0, #0 + 2797 0158 9ED0 beq .L112 +4734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2798 .loc 1 4734 16 view .LVU903 + 2799 015a 0120 movs r0, #1 + 2800 015c A5E7 b .L102 + 2801 .LVL211: + 2802 .L109: +4759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + 2803 .loc 1 4759 7 is_stmt 1 view .LVU904 +4759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + 2804 .loc 1 4759 17 is_stmt 0 view .LVU905 + 2805 015e 6B6B ldr r3, [r5, #52] +4759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + 2806 .loc 1 4759 60 view .LVU906 + 2807 0160 104A ldr r2, .L127+28 + 2808 0162 DA63 str r2, [r3, #60] +4760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2809 .loc 1 4760 7 is_stmt 1 view .LVU907 +4760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2810 .loc 1 4760 17 is_stmt 0 view .LVU908 + 2811 0164 6B6B ldr r3, [r5, #52] +4760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2812 .loc 1 4760 64 view .LVU909 + 2813 0166 104A ldr r2, .L127+32 + 2814 0168 1A64 str r2, [r3, #64] +4763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2815 .loc 1 4763 7 is_stmt 1 view .LVU910 +4763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2816 .loc 1 4763 17 is_stmt 0 view .LVU911 + 2817 016a 6B6B ldr r3, [r5, #52] +4763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2818 .loc 1 4763 61 view .LVU912 + ARM GAS /tmp/ccPLZXyC.s page 195 + + + 2819 016c 084A ldr r2, .L127+8 + 2820 016e DA64 str r2, [r3, #76] +4766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2821 .loc 1 4766 7 is_stmt 1 view .LVU913 +4767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2822 .loc 1 4767 43 is_stmt 0 view .LVU914 + 2823 0170 2A68 ldr r2, [r5] +4766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2824 .loc 1 4766 11 view .LVU915 + 2825 0172 059B ldr r3, [sp, #20] + 2826 0174 4C32 adds r2, r2, #76 + 2827 0176 686B ldr r0, [r5, #52] + 2828 0178 FFF7FEFF bl HAL_DMA_Start_IT + 2829 .LVL212: +4766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (uint32_t)&htim->Instance->DMAR, DataLength) != HAL_OK) + 2830 .loc 1 4766 10 view .LVU916 + 2831 017c 0028 cmp r0, #0 + 2832 017e 8BD0 beq .L112 +4770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2833 .loc 1 4770 16 view .LVU917 + 2834 0180 0120 movs r0, #1 + 2835 0182 92E7 b .L102 + 2836 .L124: +4680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2837 .loc 1 4680 16 view .LVU918 + 2838 0184 0120 movs r0, #1 + 2839 0186 90E7 b .L102 + 2840 .L128: + 2841 .align 2 + 2842 .L127: + 2843 0188 00000000 .word TIM_DMADelayPulseCplt + 2844 018c 00000000 .word TIM_DMADelayPulseHalfCplt + 2845 0190 00000000 .word TIM_DMAError + 2846 0194 00000000 .word TIM_DMAPeriodElapsedCplt + 2847 0198 00000000 .word TIM_DMAPeriodElapsedHalfCplt + 2848 019c 00000000 .word TIM_DMATriggerCplt + 2849 01a0 00000000 .word TIM_DMATriggerHalfCplt + 2850 01a4 00000000 .word TIMEx_DMACommutationCplt + 2851 01a8 00000000 .word TIMEx_DMACommutationHalfCplt + 2852 .cfi_endproc + 2853 .LFE205: + 2855 .section .text.HAL_TIM_DMABurst_WriteStart,"ax",%progbits + 2856 .align 1 + 2857 .global HAL_TIM_DMABurst_WriteStart + 2858 .syntax unified + 2859 .thumb + 2860 .thumb_func + 2861 .fpu fpv5-d16 + 2863 HAL_TIM_DMABurst_WriteStart: + 2864 .LVL213: + 2865 .LFB204: +4574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status; + 2866 .loc 1 4574 1 is_stmt 1 view -0 + 2867 .cfi_startproc + 2868 @ args = 4, pretend = 0, frame = 0 + 2869 @ frame_needed = 0, uses_anonymous_args = 0 +4574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status; + ARM GAS /tmp/ccPLZXyC.s page 196 + + + 2870 .loc 1 4574 1 is_stmt 0 view .LVU920 + 2871 0000 30B5 push {r4, r5, lr} + 2872 .LCFI29: + 2873 .cfi_def_cfa_offset 12 + 2874 .cfi_offset 4, -12 + 2875 .cfi_offset 5, -8 + 2876 .cfi_offset 14, -4 + 2877 0002 83B0 sub sp, sp, #12 + 2878 .LCFI30: + 2879 .cfi_def_cfa_offset 24 + 2880 0004 069D ldr r5, [sp, #24] +4575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2881 .loc 1 4575 3 is_stmt 1 view .LVU921 +4577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ((BurstLength) >> 8U) + 1U); + 2882 .loc 1 4577 3 view .LVU922 +4578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2883 .loc 1 4578 60 is_stmt 0 view .LVU923 + 2884 0006 2C0A lsrs r4, r5, #8 +4577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ((BurstLength) >> 8U) + 1U); + 2885 .loc 1 4577 12 view .LVU924 + 2886 0008 0134 adds r4, r4, #1 + 2887 000a 0194 str r4, [sp, #4] + 2888 000c 0095 str r5, [sp] + 2889 000e FFF7FEFF bl HAL_TIM_DMABurst_MultiWriteStart + 2890 .LVL214: +4582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2891 .loc 1 4582 3 is_stmt 1 view .LVU925 +4583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2892 .loc 1 4583 1 is_stmt 0 view .LVU926 + 2893 0012 03B0 add sp, sp, #12 + 2894 .LCFI31: + 2895 .cfi_def_cfa_offset 12 + 2896 @ sp needed + 2897 0014 30BD pop {r4, r5, pc} +4583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2898 .loc 1 4583 1 view .LVU927 + 2899 .cfi_endproc + 2900 .LFE204: + 2902 .section .text.HAL_TIM_DMABurst_WriteStop,"ax",%progbits + 2903 .align 1 + 2904 .global HAL_TIM_DMABurst_WriteStop + 2905 .syntax unified + 2906 .thumb + 2907 .thumb_func + 2908 .fpu fpv5-d16 + 2910 HAL_TIM_DMABurst_WriteStop: + 2911 .LVL215: + 2912 .LFB206: +4816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 2913 .loc 1 4816 1 is_stmt 1 view -0 + 2914 .cfi_startproc + 2915 @ args = 0, pretend = 0, frame = 0 + 2916 @ frame_needed = 0, uses_anonymous_args = 0 +4816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 2917 .loc 1 4816 1 is_stmt 0 view .LVU929 + 2918 0000 38B5 push {r3, r4, r5, lr} + 2919 .LCFI32: + ARM GAS /tmp/ccPLZXyC.s page 197 + + + 2920 .cfi_def_cfa_offset 16 + 2921 .cfi_offset 3, -16 + 2922 .cfi_offset 4, -12 + 2923 .cfi_offset 5, -8 + 2924 .cfi_offset 14, -4 + 2925 0002 0546 mov r5, r0 + 2926 0004 0C46 mov r4, r1 +4817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2927 .loc 1 4817 3 is_stmt 1 view .LVU930 + 2928 .LVL216: +4820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2929 .loc 1 4820 3 view .LVU931 +4823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2930 .loc 1 4823 3 view .LVU932 + 2931 0006 B1F5006F cmp r1, #2048 + 2932 000a 33D0 beq .L132 + 2933 000c 1BD8 bhi .L133 + 2934 000e B1F5007F cmp r1, #512 + 2935 0012 2BD0 beq .L134 + 2936 0014 B1F5806F cmp r1, #1024 + 2937 0018 03D1 bne .L143 +4837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 2938 .loc 1 4837 7 view .LVU933 +4837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 2939 .loc 1 4837 13 is_stmt 0 view .LVU934 + 2940 001a 806A ldr r0, [r0, #40] + 2941 .LVL217: +4837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 2942 .loc 1 4837 13 view .LVU935 + 2943 001c FFF7FEFF bl HAL_DMA_Abort_IT + 2944 .LVL218: +4838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2945 .loc 1 4838 7 is_stmt 1 view .LVU936 +4865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2946 .loc 1 4865 3 view .LVU937 + 2947 0020 05E0 b .L141 + 2948 .LVL219: + 2949 .L143: +4823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2950 .loc 1 4823 3 is_stmt 0 view .LVU938 + 2951 0022 B1F5807F cmp r1, #256 + 2952 0026 0CD1 bne .L144 +4827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 2953 .loc 1 4827 7 is_stmt 1 view .LVU939 +4827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 2954 .loc 1 4827 13 is_stmt 0 view .LVU940 + 2955 0028 006A ldr r0, [r0, #32] + 2956 .LVL220: +4827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 2957 .loc 1 4827 13 view .LVU941 + 2958 002a FFF7FEFF bl HAL_DMA_Abort_IT + 2959 .LVL221: +4828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2960 .loc 1 4828 7 is_stmt 1 view .LVU942 +4865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2961 .loc 1 4865 3 view .LVU943 + 2962 .L141: + ARM GAS /tmp/ccPLZXyC.s page 198 + + +4868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2963 .loc 1 4868 5 view .LVU944 + 2964 002e 2B68 ldr r3, [r5] + 2965 0030 D968 ldr r1, [r3, #12] + 2966 0032 21EA0404 bic r4, r1, r4 + 2967 .LVL222: +4868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2968 .loc 1 4868 5 is_stmt 0 view .LVU945 + 2969 0036 DC60 str r4, [r3, #12] +4871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2970 .loc 1 4871 5 is_stmt 1 view .LVU946 +4871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2971 .loc 1 4871 25 is_stmt 0 view .LVU947 + 2972 0038 0123 movs r3, #1 + 2973 003a 85F84830 strb r3, [r5, #72] + 2974 003e 0020 movs r0, #0 + 2975 .L137: + 2976 .LVL223: +4875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 2977 .loc 1 4875 3 is_stmt 1 view .LVU948 +4876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 2978 .loc 1 4876 1 is_stmt 0 view .LVU949 + 2979 0040 38BD pop {r3, r4, r5, pc} + 2980 .LVL224: + 2981 .L144: +4823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2982 .loc 1 4823 3 view .LVU950 + 2983 0042 0120 movs r0, #1 + 2984 .LVL225: +4823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2985 .loc 1 4823 3 view .LVU951 + 2986 0044 FCE7 b .L137 + 2987 .LVL226: + 2988 .L133: +4823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 2989 .loc 1 4823 3 view .LVU952 + 2990 0046 B1F5005F cmp r1, #8192 + 2991 004a 17D0 beq .L138 + 2992 004c B1F5804F cmp r1, #16384 + 2993 0050 03D1 bne .L145 +4857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 2994 .loc 1 4857 7 is_stmt 1 view .LVU953 +4857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 2995 .loc 1 4857 13 is_stmt 0 view .LVU954 + 2996 0052 806B ldr r0, [r0, #56] + 2997 .LVL227: +4857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 2998 .loc 1 4857 13 view .LVU955 + 2999 0054 FFF7FEFF bl HAL_DMA_Abort_IT + 3000 .LVL228: +4858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3001 .loc 1 4858 7 is_stmt 1 view .LVU956 +4865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3002 .loc 1 4865 3 view .LVU957 + 3003 0058 E9E7 b .L141 + 3004 .LVL229: + 3005 .L145: + ARM GAS /tmp/ccPLZXyC.s page 199 + + +4823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3006 .loc 1 4823 3 is_stmt 0 view .LVU958 + 3007 005a B1F5805F cmp r1, #4096 + 3008 005e 03D1 bne .L146 +4847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3009 .loc 1 4847 7 is_stmt 1 view .LVU959 +4847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3010 .loc 1 4847 13 is_stmt 0 view .LVU960 + 3011 0060 006B ldr r0, [r0, #48] + 3012 .LVL230: +4847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3013 .loc 1 4847 13 view .LVU961 + 3014 0062 FFF7FEFF bl HAL_DMA_Abort_IT + 3015 .LVL231: +4848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3016 .loc 1 4848 7 is_stmt 1 view .LVU962 +4865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3017 .loc 1 4865 3 view .LVU963 + 3018 0066 E2E7 b .L141 + 3019 .LVL232: + 3020 .L146: +4823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3021 .loc 1 4823 3 is_stmt 0 view .LVU964 + 3022 0068 0120 movs r0, #1 + 3023 .LVL233: +4823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3024 .loc 1 4823 3 view .LVU965 + 3025 006a E9E7 b .L137 + 3026 .LVL234: + 3027 .L134: +4832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3028 .loc 1 4832 7 is_stmt 1 view .LVU966 +4832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3029 .loc 1 4832 13 is_stmt 0 view .LVU967 + 3030 006c 406A ldr r0, [r0, #36] + 3031 .LVL235: +4832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3032 .loc 1 4832 13 view .LVU968 + 3033 006e FFF7FEFF bl HAL_DMA_Abort_IT + 3034 .LVL236: +4833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3035 .loc 1 4833 7 is_stmt 1 view .LVU969 +4865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3036 .loc 1 4865 3 view .LVU970 + 3037 0072 DCE7 b .L141 + 3038 .LVL237: + 3039 .L132: +4842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3040 .loc 1 4842 7 view .LVU971 +4842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3041 .loc 1 4842 13 is_stmt 0 view .LVU972 + 3042 0074 C06A ldr r0, [r0, #44] + 3043 .LVL238: +4842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3044 .loc 1 4842 13 view .LVU973 + 3045 0076 FFF7FEFF bl HAL_DMA_Abort_IT + 3046 .LVL239: + ARM GAS /tmp/ccPLZXyC.s page 200 + + +4843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3047 .loc 1 4843 7 is_stmt 1 view .LVU974 +4865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3048 .loc 1 4865 3 view .LVU975 + 3049 007a D8E7 b .L141 + 3050 .LVL240: + 3051 .L138: +4852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3052 .loc 1 4852 7 view .LVU976 +4852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3053 .loc 1 4852 13 is_stmt 0 view .LVU977 + 3054 007c 406B ldr r0, [r0, #52] + 3055 .LVL241: +4852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3056 .loc 1 4852 13 view .LVU978 + 3057 007e FFF7FEFF bl HAL_DMA_Abort_IT + 3058 .LVL242: +4853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3059 .loc 1 4853 7 is_stmt 1 view .LVU979 +4865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3060 .loc 1 4865 3 view .LVU980 + 3061 0082 D4E7 b .L141 + 3062 .cfi_endproc + 3063 .LFE206: + 3065 .section .text.HAL_TIM_DMABurst_MultiReadStart,"ax",%progbits + 3066 .align 1 + 3067 .global HAL_TIM_DMABurst_MultiReadStart + 3068 .syntax unified + 3069 .thumb + 3070 .thumb_func + 3071 .fpu fpv5-d16 + 3073 HAL_TIM_DMABurst_MultiReadStart: + 3074 .LVL243: + 3075 .LFB208: +4984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 3076 .loc 1 4984 1 view -0 + 3077 .cfi_startproc + 3078 @ args = 8, pretend = 0, frame = 0 + 3079 @ frame_needed = 0, uses_anonymous_args = 0 +4984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 3080 .loc 1 4984 1 is_stmt 0 view .LVU982 + 3081 0000 70B5 push {r4, r5, r6, lr} + 3082 .LCFI33: + 3083 .cfi_def_cfa_offset 16 + 3084 .cfi_offset 4, -16 + 3085 .cfi_offset 5, -12 + 3086 .cfi_offset 6, -8 + 3087 .cfi_offset 14, -4 + 3088 0002 0546 mov r5, r0 +4985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3089 .loc 1 4985 3 is_stmt 1 view .LVU983 + 3090 .LVL244: +4988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_BASE(BurstBaseAddress)); + 3091 .loc 1 4988 3 view .LVU984 +4989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc)); + 3092 .loc 1 4989 3 view .LVU985 +4990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_LENGTH(BurstLength)); + ARM GAS /tmp/ccPLZXyC.s page 201 + + + 3093 .loc 1 4990 3 view .LVU986 +4991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_DATA_LENGTH(DataLength)); + 3094 .loc 1 4991 3 view .LVU987 +4992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3095 .loc 1 4992 3 view .LVU988 +4994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3096 .loc 1 4994 3 view .LVU989 +4994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3097 .loc 1 4994 11 is_stmt 0 view .LVU990 + 3098 0004 90F848C0 ldrb ip, [r0, #72] @ zero_extendqisi2 + 3099 0008 5FFA8CF0 uxtb r0, ip + 3100 .LVL245: +4994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3101 .loc 1 4994 6 view .LVU991 + 3102 000c 0228 cmp r0, #2 + 3103 000e 4ED0 beq .L148 + 3104 0010 0E46 mov r6, r1 + 3105 0012 1446 mov r4, r2 + 3106 0014 1A46 mov r2, r3 + 3107 .LVL246: +4998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3108 .loc 1 4998 8 is_stmt 1 view .LVU992 +4998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3109 .loc 1 4998 16 is_stmt 0 view .LVU993 + 3110 0016 95F848C0 ldrb ip, [r5, #72] @ zero_extendqisi2 + 3111 001a 5FFA8CF0 uxtb r0, ip +4998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3112 .loc 1 4998 11 view .LVU994 + 3113 001e 0128 cmp r0, #1 + 3114 0020 1CD0 beq .L167 + 3115 .LVL247: + 3116 .L149: +5012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** switch (BurstRequestSrc) + 3117 .loc 1 5012 3 is_stmt 1 view .LVU995 +5013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3118 .loc 1 5013 3 view .LVU996 + 3119 0022 B4F5006F cmp r4, #2048 + 3120 0026 00F08980 beq .L150 + 3121 002a 43D8 bhi .L151 + 3122 002c B4F5007F cmp r4, #512 + 3123 0030 71D0 beq .L152 + 3124 0032 B4F5806F cmp r4, #1024 + 3125 0036 1DD1 bne .L168 +5054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3126 .loc 1 5054 7 view .LVU997 +5054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3127 .loc 1 5054 17 is_stmt 0 view .LVU998 + 3128 0038 AB6A ldr r3, [r5, #40] +5054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3129 .loc 1 5054 52 view .LVU999 + 3130 003a 5449 ldr r1, .L173 + 3131 003c D963 str r1, [r3, #60] +5055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3132 .loc 1 5055 7 is_stmt 1 view .LVU1000 +5055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3133 .loc 1 5055 17 is_stmt 0 view .LVU1001 + 3134 003e AB6A ldr r3, [r5, #40] + ARM GAS /tmp/ccPLZXyC.s page 202 + + +5055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3135 .loc 1 5055 56 view .LVU1002 + 3136 0040 5349 ldr r1, .L173+4 + 3137 0042 1964 str r1, [r3, #64] +5058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3138 .loc 1 5058 7 is_stmt 1 view .LVU1003 +5058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3139 .loc 1 5058 17 is_stmt 0 view .LVU1004 + 3140 0044 AB6A ldr r3, [r5, #40] +5058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3141 .loc 1 5058 53 view .LVU1005 + 3142 0046 5349 ldr r1, .L173+8 + 3143 0048 D964 str r1, [r3, #76] +5061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3144 .loc 1 5061 7 is_stmt 1 view .LVU1006 +5061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3145 .loc 1 5061 71 is_stmt 0 view .LVU1007 + 3146 004a 2968 ldr r1, [r5] +5061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3147 .loc 1 5061 11 view .LVU1008 + 3148 004c 059B ldr r3, [sp, #20] + 3149 004e 4C31 adds r1, r1, #76 + 3150 0050 A86A ldr r0, [r5, #40] + 3151 0052 FFF7FEFF bl HAL_DMA_Start_IT + 3152 .LVL248: +5061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3153 .loc 1 5061 10 view .LVU1009 + 3154 0056 08B3 cbz r0, .L158 +5065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3155 .loc 1 5065 16 view .LVU1010 + 3156 0058 0120 movs r0, #1 + 3157 005a 28E0 b .L148 + 3158 .LVL249: + 3159 .L167: +5000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3160 .loc 1 5000 5 is_stmt 1 view .LVU1011 +5000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3161 .loc 1 5000 31 is_stmt 0 view .LVU1012 + 3162 005c 0499 ldr r1, [sp, #16] + 3163 .LVL250: +5000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3164 .loc 1 5000 31 view .LVU1013 + 3165 005e B3FA83F3 clz r3, r3 + 3166 0062 5B09 lsrs r3, r3, #5 + 3167 0064 0029 cmp r1, #0 + 3168 0066 08BF it eq + 3169 0068 0023 moveq r3, #0 +5000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3170 .loc 1 5000 8 view .LVU1014 + 3171 006a 03BB cbnz r3, .L148 +5006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3172 .loc 1 5006 7 is_stmt 1 view .LVU1015 +5006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3173 .loc 1 5006 27 is_stmt 0 view .LVU1016 + 3174 006c 0223 movs r3, #2 + 3175 006e 85F84830 strb r3, [r5, #72] + 3176 0072 D6E7 b .L149 + ARM GAS /tmp/ccPLZXyC.s page 203 + + + 3177 .L168: +5013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3178 .loc 1 5013 3 view .LVU1017 + 3179 0074 B4F5807F cmp r4, #256 + 3180 0078 1AD1 bne .L169 +5018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 3181 .loc 1 5018 7 is_stmt 1 view .LVU1018 +5018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 3182 .loc 1 5018 17 is_stmt 0 view .LVU1019 + 3183 007a 2B6A ldr r3, [r5, #32] +5018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_UPDATE]->XferHalfCpltCallback = TIM_DMAPeriodElapsedHalfCplt; + 3184 .loc 1 5018 55 view .LVU1020 + 3185 007c 4649 ldr r1, .L173+12 + 3186 007e D963 str r1, [r3, #60] +5019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3187 .loc 1 5019 7 is_stmt 1 view .LVU1021 +5019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3188 .loc 1 5019 17 is_stmt 0 view .LVU1022 + 3189 0080 2B6A ldr r3, [r5, #32] +5019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3190 .loc 1 5019 59 view .LVU1023 + 3191 0082 4649 ldr r1, .L173+16 + 3192 0084 1964 str r1, [r3, #64] +5022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3193 .loc 1 5022 7 is_stmt 1 view .LVU1024 +5022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3194 .loc 1 5022 17 is_stmt 0 view .LVU1025 + 3195 0086 2B6A ldr r3, [r5, #32] +5022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3196 .loc 1 5022 56 view .LVU1026 + 3197 0088 4249 ldr r1, .L173+8 + 3198 008a D964 str r1, [r3, #76] +5025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3199 .loc 1 5025 7 is_stmt 1 view .LVU1027 +5025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3200 .loc 1 5025 74 is_stmt 0 view .LVU1028 + 3201 008c 2968 ldr r1, [r5] +5025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3202 .loc 1 5025 11 view .LVU1029 + 3203 008e 059B ldr r3, [sp, #20] + 3204 0090 4C31 adds r1, r1, #76 + 3205 0092 286A ldr r0, [r5, #32] + 3206 0094 FFF7FEFF bl HAL_DMA_Start_IT + 3207 .LVL251: +5025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3208 .loc 1 5025 10 view .LVU1030 + 3209 0098 0028 cmp r0, #0 + 3210 009a 75D1 bne .L170 + 3211 .L158: + 3212 .LVL252: +5149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3213 .loc 1 5149 5 is_stmt 1 view .LVU1031 +5149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3214 .loc 1 5149 9 is_stmt 0 view .LVU1032 + 3215 009c 2B68 ldr r3, [r5] +5149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3216 .loc 1 5149 45 view .LVU1033 + ARM GAS /tmp/ccPLZXyC.s page 204 + + + 3217 009e 049A ldr r2, [sp, #16] + 3218 00a0 1643 orrs r6, r6, r2 + 3219 .LVL253: +5149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3220 .loc 1 5149 25 view .LVU1034 + 3221 00a2 9E64 str r6, [r3, #72] +5152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3222 .loc 1 5152 5 is_stmt 1 view .LVU1035 + 3223 00a4 2B68 ldr r3, [r5] + 3224 00a6 DA68 ldr r2, [r3, #12] + 3225 00a8 1443 orrs r4, r4, r2 + 3226 .LVL254: +5152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3227 .loc 1 5152 5 is_stmt 0 view .LVU1036 + 3228 00aa DC60 str r4, [r3, #12] + 3229 00ac 0020 movs r0, #0 + 3230 .L148: +5157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3231 .loc 1 5157 1 view .LVU1037 + 3232 00ae 70BD pop {r4, r5, r6, pc} + 3233 .LVL255: + 3234 .L169: +5013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3235 .loc 1 5013 3 view .LVU1038 + 3236 00b0 0120 movs r0, #1 + 3237 00b2 FCE7 b .L148 + 3238 .L151: +5013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3239 .loc 1 5013 3 view .LVU1039 + 3240 00b4 B4F5005F cmp r4, #8192 + 3241 00b8 53D0 beq .L155 + 3242 00ba B4F5804F cmp r4, #16384 + 3243 00be 12D1 bne .L171 +5126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + 3244 .loc 1 5126 7 is_stmt 1 view .LVU1040 +5126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + 3245 .loc 1 5126 17 is_stmt 0 view .LVU1041 + 3246 00c0 AB6B ldr r3, [r5, #56] +5126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_TRIGGER]->XferHalfCpltCallback = TIM_DMATriggerHalfCplt; + 3247 .loc 1 5126 56 view .LVU1042 + 3248 00c2 3749 ldr r1, .L173+20 + 3249 00c4 D963 str r1, [r3, #60] +5127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3250 .loc 1 5127 7 is_stmt 1 view .LVU1043 +5127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3251 .loc 1 5127 17 is_stmt 0 view .LVU1044 + 3252 00c6 AB6B ldr r3, [r5, #56] +5127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3253 .loc 1 5127 60 view .LVU1045 + 3254 00c8 3649 ldr r1, .L173+24 + 3255 00ca 1964 str r1, [r3, #64] +5130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3256 .loc 1 5130 7 is_stmt 1 view .LVU1046 +5130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3257 .loc 1 5130 17 is_stmt 0 view .LVU1047 + 3258 00cc AB6B ldr r3, [r5, #56] +5130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 205 + + + 3259 .loc 1 5130 57 view .LVU1048 + 3260 00ce 3149 ldr r1, .L173+8 + 3261 00d0 D964 str r1, [r3, #76] +5133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3262 .loc 1 5133 7 is_stmt 1 view .LVU1049 +5133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3263 .loc 1 5133 75 is_stmt 0 view .LVU1050 + 3264 00d2 2968 ldr r1, [r5] +5133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3265 .loc 1 5133 11 view .LVU1051 + 3266 00d4 059B ldr r3, [sp, #20] + 3267 00d6 4C31 adds r1, r1, #76 + 3268 00d8 A86B ldr r0, [r5, #56] + 3269 00da FFF7FEFF bl HAL_DMA_Start_IT + 3270 .LVL256: +5133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3271 .loc 1 5133 10 view .LVU1052 + 3272 00de 0028 cmp r0, #0 + 3273 00e0 DCD0 beq .L158 +5137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3274 .loc 1 5137 16 view .LVU1053 + 3275 00e2 0120 movs r0, #1 + 3276 00e4 E3E7 b .L148 + 3277 .LVL257: + 3278 .L171: +5013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3279 .loc 1 5013 3 view .LVU1054 + 3280 00e6 B4F5805F cmp r4, #4096 + 3281 00ea 12D1 bne .L172 +5090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3282 .loc 1 5090 7 is_stmt 1 view .LVU1055 +5090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3283 .loc 1 5090 17 is_stmt 0 view .LVU1056 + 3284 00ec 2B6B ldr r3, [r5, #48] +5090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3285 .loc 1 5090 52 view .LVU1057 + 3286 00ee 2749 ldr r1, .L173 + 3287 00f0 D963 str r1, [r3, #60] +5091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3288 .loc 1 5091 7 is_stmt 1 view .LVU1058 +5091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3289 .loc 1 5091 17 is_stmt 0 view .LVU1059 + 3290 00f2 2B6B ldr r3, [r5, #48] +5091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3291 .loc 1 5091 56 view .LVU1060 + 3292 00f4 2649 ldr r1, .L173+4 + 3293 00f6 1964 str r1, [r3, #64] +5094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3294 .loc 1 5094 7 is_stmt 1 view .LVU1061 +5094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3295 .loc 1 5094 17 is_stmt 0 view .LVU1062 + 3296 00f8 2B6B ldr r3, [r5, #48] +5094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3297 .loc 1 5094 53 view .LVU1063 + 3298 00fa 2649 ldr r1, .L173+8 + 3299 00fc D964 str r1, [r3, #76] +5097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + ARM GAS /tmp/ccPLZXyC.s page 206 + + + 3300 .loc 1 5097 7 is_stmt 1 view .LVU1064 +5097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3301 .loc 1 5097 71 is_stmt 0 view .LVU1065 + 3302 00fe 2968 ldr r1, [r5] +5097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3303 .loc 1 5097 11 view .LVU1066 + 3304 0100 059B ldr r3, [sp, #20] + 3305 0102 4C31 adds r1, r1, #76 + 3306 0104 286B ldr r0, [r5, #48] + 3307 0106 FFF7FEFF bl HAL_DMA_Start_IT + 3308 .LVL258: +5097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3309 .loc 1 5097 10 view .LVU1067 + 3310 010a 0028 cmp r0, #0 + 3311 010c C6D0 beq .L158 +5101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3312 .loc 1 5101 16 view .LVU1068 + 3313 010e 0120 movs r0, #1 + 3314 0110 CDE7 b .L148 + 3315 .LVL259: + 3316 .L172: +5013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3317 .loc 1 5013 3 view .LVU1069 + 3318 0112 0120 movs r0, #1 + 3319 0114 CBE7 b .L148 + 3320 .L152: +5036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3321 .loc 1 5036 7 is_stmt 1 view .LVU1070 +5036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3322 .loc 1 5036 17 is_stmt 0 view .LVU1071 + 3323 0116 6B6A ldr r3, [r5, #36] +5036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3324 .loc 1 5036 52 view .LVU1072 + 3325 0118 1C49 ldr r1, .L173 + 3326 011a D963 str r1, [r3, #60] +5037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3327 .loc 1 5037 7 is_stmt 1 view .LVU1073 +5037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3328 .loc 1 5037 17 is_stmt 0 view .LVU1074 + 3329 011c 6B6A ldr r3, [r5, #36] +5037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3330 .loc 1 5037 56 view .LVU1075 + 3331 011e 1C49 ldr r1, .L173+4 + 3332 0120 1964 str r1, [r3, #64] +5040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3333 .loc 1 5040 7 is_stmt 1 view .LVU1076 +5040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3334 .loc 1 5040 17 is_stmt 0 view .LVU1077 + 3335 0122 6B6A ldr r3, [r5, #36] +5040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3336 .loc 1 5040 53 view .LVU1078 + 3337 0124 1B49 ldr r1, .L173+8 + 3338 0126 D964 str r1, [r3, #76] +5043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3339 .loc 1 5043 7 is_stmt 1 view .LVU1079 +5043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3340 .loc 1 5043 71 is_stmt 0 view .LVU1080 + ARM GAS /tmp/ccPLZXyC.s page 207 + + + 3341 0128 2968 ldr r1, [r5] +5043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3342 .loc 1 5043 11 view .LVU1081 + 3343 012a 059B ldr r3, [sp, #20] + 3344 012c 4C31 adds r1, r1, #76 + 3345 012e 686A ldr r0, [r5, #36] + 3346 0130 FFF7FEFF bl HAL_DMA_Start_IT + 3347 .LVL260: +5043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3348 .loc 1 5043 10 view .LVU1082 + 3349 0134 0028 cmp r0, #0 + 3350 0136 B1D0 beq .L158 +5047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3351 .loc 1 5047 16 view .LVU1083 + 3352 0138 0120 movs r0, #1 + 3353 013a B8E7 b .L148 + 3354 .LVL261: + 3355 .L150: +5072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3356 .loc 1 5072 7 is_stmt 1 view .LVU1084 +5072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3357 .loc 1 5072 17 is_stmt 0 view .LVU1085 + 3358 013c EB6A ldr r3, [r5, #44] +5072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 3359 .loc 1 5072 52 view .LVU1086 + 3360 013e 1349 ldr r1, .L173 + 3361 0140 D963 str r1, [r3, #60] +5073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3362 .loc 1 5073 7 is_stmt 1 view .LVU1087 +5073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3363 .loc 1 5073 17 is_stmt 0 view .LVU1088 + 3364 0142 EB6A ldr r3, [r5, #44] +5073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3365 .loc 1 5073 56 view .LVU1089 + 3366 0144 1249 ldr r1, .L173+4 + 3367 0146 1964 str r1, [r3, #64] +5076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3368 .loc 1 5076 7 is_stmt 1 view .LVU1090 +5076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3369 .loc 1 5076 17 is_stmt 0 view .LVU1091 + 3370 0148 EB6A ldr r3, [r5, #44] +5076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3371 .loc 1 5076 53 view .LVU1092 + 3372 014a 1249 ldr r1, .L173+8 + 3373 014c D964 str r1, [r3, #76] +5079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3374 .loc 1 5079 7 is_stmt 1 view .LVU1093 +5079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3375 .loc 1 5079 71 is_stmt 0 view .LVU1094 + 3376 014e 2968 ldr r1, [r5] +5079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3377 .loc 1 5079 11 view .LVU1095 + 3378 0150 059B ldr r3, [sp, #20] + 3379 0152 4C31 adds r1, r1, #76 + 3380 0154 E86A ldr r0, [r5, #44] + 3381 0156 FFF7FEFF bl HAL_DMA_Start_IT + 3382 .LVL262: + ARM GAS /tmp/ccPLZXyC.s page 208 + + +5079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3383 .loc 1 5079 10 view .LVU1096 + 3384 015a 0028 cmp r0, #0 + 3385 015c 9ED0 beq .L158 +5083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3386 .loc 1 5083 16 view .LVU1097 + 3387 015e 0120 movs r0, #1 + 3388 0160 A5E7 b .L148 + 3389 .LVL263: + 3390 .L155: +5108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + 3391 .loc 1 5108 7 is_stmt 1 view .LVU1098 +5108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + 3392 .loc 1 5108 17 is_stmt 0 view .LVU1099 + 3393 0162 6B6B ldr r3, [r5, #52] +5108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + 3394 .loc 1 5108 60 view .LVU1100 + 3395 0164 1049 ldr r1, .L173+28 + 3396 0166 D963 str r1, [r3, #60] +5109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3397 .loc 1 5109 7 is_stmt 1 view .LVU1101 +5109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3398 .loc 1 5109 17 is_stmt 0 view .LVU1102 + 3399 0168 6B6B ldr r3, [r5, #52] +5109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3400 .loc 1 5109 64 view .LVU1103 + 3401 016a 1049 ldr r1, .L173+32 + 3402 016c 1964 str r1, [r3, #64] +5112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3403 .loc 1 5112 7 is_stmt 1 view .LVU1104 +5112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3404 .loc 1 5112 17 is_stmt 0 view .LVU1105 + 3405 016e 6B6B ldr r3, [r5, #52] +5112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3406 .loc 1 5112 61 view .LVU1106 + 3407 0170 0849 ldr r1, .L173+8 + 3408 0172 D964 str r1, [r3, #76] +5115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3409 .loc 1 5115 7 is_stmt 1 view .LVU1107 +5115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3410 .loc 1 5115 79 is_stmt 0 view .LVU1108 + 3411 0174 2968 ldr r1, [r5] +5115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3412 .loc 1 5115 11 view .LVU1109 + 3413 0176 059B ldr r3, [sp, #20] + 3414 0178 4C31 adds r1, r1, #76 + 3415 017a 686B ldr r0, [r5, #52] + 3416 017c FFF7FEFF bl HAL_DMA_Start_IT + 3417 .LVL264: +5115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** DataLength) != HAL_OK) + 3418 .loc 1 5115 10 view .LVU1110 + 3419 0180 0028 cmp r0, #0 + 3420 0182 8BD0 beq .L158 +5119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3421 .loc 1 5119 16 view .LVU1111 + 3422 0184 0120 movs r0, #1 + 3423 0186 92E7 b .L148 + ARM GAS /tmp/ccPLZXyC.s page 209 + + + 3424 .L170: +5029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3425 .loc 1 5029 16 view .LVU1112 + 3426 0188 0120 movs r0, #1 + 3427 018a 90E7 b .L148 + 3428 .L174: + 3429 .align 2 + 3430 .L173: + 3431 018c 00000000 .word TIM_DMACaptureCplt + 3432 0190 00000000 .word TIM_DMACaptureHalfCplt + 3433 0194 00000000 .word TIM_DMAError + 3434 0198 00000000 .word TIM_DMAPeriodElapsedCplt + 3435 019c 00000000 .word TIM_DMAPeriodElapsedHalfCplt + 3436 01a0 00000000 .word TIM_DMATriggerCplt + 3437 01a4 00000000 .word TIM_DMATriggerHalfCplt + 3438 01a8 00000000 .word TIMEx_DMACommutationCplt + 3439 01ac 00000000 .word TIMEx_DMACommutationHalfCplt + 3440 .cfi_endproc + 3441 .LFE208: + 3443 .section .text.HAL_TIM_DMABurst_ReadStart,"ax",%progbits + 3444 .align 1 + 3445 .global HAL_TIM_DMABurst_ReadStart + 3446 .syntax unified + 3447 .thumb + 3448 .thumb_func + 3449 .fpu fpv5-d16 + 3451 HAL_TIM_DMABurst_ReadStart: + 3452 .LVL265: + 3453 .LFB207: +4925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status; + 3454 .loc 1 4925 1 is_stmt 1 view -0 + 3455 .cfi_startproc + 3456 @ args = 4, pretend = 0, frame = 0 + 3457 @ frame_needed = 0, uses_anonymous_args = 0 +4925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status; + 3458 .loc 1 4925 1 is_stmt 0 view .LVU1114 + 3459 0000 30B5 push {r4, r5, lr} + 3460 .LCFI34: + 3461 .cfi_def_cfa_offset 12 + 3462 .cfi_offset 4, -12 + 3463 .cfi_offset 5, -8 + 3464 .cfi_offset 14, -4 + 3465 0002 83B0 sub sp, sp, #12 + 3466 .LCFI35: + 3467 .cfi_def_cfa_offset 24 + 3468 0004 069D ldr r5, [sp, #24] +4926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3469 .loc 1 4926 3 is_stmt 1 view .LVU1115 +4928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ((BurstLength) >> 8U) + 1U); + 3470 .loc 1 4928 3 view .LVU1116 +4929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3471 .loc 1 4929 59 is_stmt 0 view .LVU1117 + 3472 0006 2C0A lsrs r4, r5, #8 +4928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ((BurstLength) >> 8U) + 1U); + 3473 .loc 1 4928 12 view .LVU1118 + 3474 0008 0134 adds r4, r4, #1 + 3475 000a 0194 str r4, [sp, #4] + ARM GAS /tmp/ccPLZXyC.s page 210 + + + 3476 000c 0095 str r5, [sp] + 3477 000e FFF7FEFF bl HAL_TIM_DMABurst_MultiReadStart + 3478 .LVL266: +4932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3479 .loc 1 4932 3 is_stmt 1 view .LVU1119 +4933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3480 .loc 1 4933 1 is_stmt 0 view .LVU1120 + 3481 0012 03B0 add sp, sp, #12 + 3482 .LCFI36: + 3483 .cfi_def_cfa_offset 12 + 3484 @ sp needed + 3485 0014 30BD pop {r4, r5, pc} +4933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3486 .loc 1 4933 1 view .LVU1121 + 3487 .cfi_endproc + 3488 .LFE207: + 3490 .section .text.HAL_TIM_DMABurst_ReadStop,"ax",%progbits + 3491 .align 1 + 3492 .global HAL_TIM_DMABurst_ReadStop + 3493 .syntax unified + 3494 .thumb + 3495 .thumb_func + 3496 .fpu fpv5-d16 + 3498 HAL_TIM_DMABurst_ReadStop: + 3499 .LVL267: + 3500 .LFB209: +5166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 3501 .loc 1 5166 1 is_stmt 1 view -0 + 3502 .cfi_startproc + 3503 @ args = 0, pretend = 0, frame = 0 + 3504 @ frame_needed = 0, uses_anonymous_args = 0 +5166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 3505 .loc 1 5166 1 is_stmt 0 view .LVU1123 + 3506 0000 38B5 push {r3, r4, r5, lr} + 3507 .LCFI37: + 3508 .cfi_def_cfa_offset 16 + 3509 .cfi_offset 3, -16 + 3510 .cfi_offset 4, -12 + 3511 .cfi_offset 5, -8 + 3512 .cfi_offset 14, -4 + 3513 0002 0546 mov r5, r0 + 3514 0004 0C46 mov r4, r1 +5167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3515 .loc 1 5167 3 is_stmt 1 view .LVU1124 + 3516 .LVL268: +5170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3517 .loc 1 5170 3 view .LVU1125 +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3518 .loc 1 5173 3 view .LVU1126 + 3519 0006 B1F5006F cmp r1, #2048 + 3520 000a 33D0 beq .L178 + 3521 000c 1BD8 bhi .L179 + 3522 000e B1F5007F cmp r1, #512 + 3523 0012 2BD0 beq .L180 + 3524 0014 B1F5806F cmp r1, #1024 + 3525 0018 03D1 bne .L189 +5187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + ARM GAS /tmp/ccPLZXyC.s page 211 + + + 3526 .loc 1 5187 7 view .LVU1127 +5187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3527 .loc 1 5187 13 is_stmt 0 view .LVU1128 + 3528 001a 806A ldr r0, [r0, #40] + 3529 .LVL269: +5187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3530 .loc 1 5187 13 view .LVU1129 + 3531 001c FFF7FEFF bl HAL_DMA_Abort_IT + 3532 .LVL270: +5188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3533 .loc 1 5188 7 is_stmt 1 view .LVU1130 +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3534 .loc 1 5215 3 view .LVU1131 + 3535 0020 05E0 b .L187 + 3536 .LVL271: + 3537 .L189: +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3538 .loc 1 5173 3 is_stmt 0 view .LVU1132 + 3539 0022 B1F5807F cmp r1, #256 + 3540 0026 0CD1 bne .L190 +5177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3541 .loc 1 5177 7 is_stmt 1 view .LVU1133 +5177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3542 .loc 1 5177 13 is_stmt 0 view .LVU1134 + 3543 0028 006A ldr r0, [r0, #32] + 3544 .LVL272: +5177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3545 .loc 1 5177 13 view .LVU1135 + 3546 002a FFF7FEFF bl HAL_DMA_Abort_IT + 3547 .LVL273: +5178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3548 .loc 1 5178 7 is_stmt 1 view .LVU1136 +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3549 .loc 1 5215 3 view .LVU1137 + 3550 .L187: +5218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3551 .loc 1 5218 5 view .LVU1138 + 3552 002e 2B68 ldr r3, [r5] + 3553 0030 D968 ldr r1, [r3, #12] + 3554 0032 21EA0404 bic r4, r1, r4 + 3555 .LVL274: +5218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3556 .loc 1 5218 5 is_stmt 0 view .LVU1139 + 3557 0036 DC60 str r4, [r3, #12] +5221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3558 .loc 1 5221 5 is_stmt 1 view .LVU1140 +5221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3559 .loc 1 5221 25 is_stmt 0 view .LVU1141 + 3560 0038 0123 movs r3, #1 + 3561 003a 85F84830 strb r3, [r5, #72] + 3562 003e 0020 movs r0, #0 + 3563 .L183: + 3564 .LVL275: +5225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3565 .loc 1 5225 3 is_stmt 1 view .LVU1142 +5226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3566 .loc 1 5226 1 is_stmt 0 view .LVU1143 + ARM GAS /tmp/ccPLZXyC.s page 212 + + + 3567 0040 38BD pop {r3, r4, r5, pc} + 3568 .LVL276: + 3569 .L190: +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3570 .loc 1 5173 3 view .LVU1144 + 3571 0042 0120 movs r0, #1 + 3572 .LVL277: +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3573 .loc 1 5173 3 view .LVU1145 + 3574 0044 FCE7 b .L183 + 3575 .LVL278: + 3576 .L179: +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3577 .loc 1 5173 3 view .LVU1146 + 3578 0046 B1F5005F cmp r1, #8192 + 3579 004a 17D0 beq .L184 + 3580 004c B1F5804F cmp r1, #16384 + 3581 0050 03D1 bne .L191 +5207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3582 .loc 1 5207 7 is_stmt 1 view .LVU1147 +5207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3583 .loc 1 5207 13 is_stmt 0 view .LVU1148 + 3584 0052 806B ldr r0, [r0, #56] + 3585 .LVL279: +5207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3586 .loc 1 5207 13 view .LVU1149 + 3587 0054 FFF7FEFF bl HAL_DMA_Abort_IT + 3588 .LVL280: +5208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3589 .loc 1 5208 7 is_stmt 1 view .LVU1150 +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3590 .loc 1 5215 3 view .LVU1151 + 3591 0058 E9E7 b .L187 + 3592 .LVL281: + 3593 .L191: +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3594 .loc 1 5173 3 is_stmt 0 view .LVU1152 + 3595 005a B1F5805F cmp r1, #4096 + 3596 005e 03D1 bne .L192 +5197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3597 .loc 1 5197 7 is_stmt 1 view .LVU1153 +5197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3598 .loc 1 5197 13 is_stmt 0 view .LVU1154 + 3599 0060 006B ldr r0, [r0, #48] + 3600 .LVL282: +5197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3601 .loc 1 5197 13 view .LVU1155 + 3602 0062 FFF7FEFF bl HAL_DMA_Abort_IT + 3603 .LVL283: +5198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3604 .loc 1 5198 7 is_stmt 1 view .LVU1156 +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3605 .loc 1 5215 3 view .LVU1157 + 3606 0066 E2E7 b .L187 + 3607 .LVL284: + 3608 .L192: +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 213 + + + 3609 .loc 1 5173 3 is_stmt 0 view .LVU1158 + 3610 0068 0120 movs r0, #1 + 3611 .LVL285: +5173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3612 .loc 1 5173 3 view .LVU1159 + 3613 006a E9E7 b .L183 + 3614 .LVL286: + 3615 .L180: +5182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3616 .loc 1 5182 7 is_stmt 1 view .LVU1160 +5182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3617 .loc 1 5182 13 is_stmt 0 view .LVU1161 + 3618 006c 406A ldr r0, [r0, #36] + 3619 .LVL287: +5182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3620 .loc 1 5182 13 view .LVU1162 + 3621 006e FFF7FEFF bl HAL_DMA_Abort_IT + 3622 .LVL288: +5183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3623 .loc 1 5183 7 is_stmt 1 view .LVU1163 +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3624 .loc 1 5215 3 view .LVU1164 + 3625 0072 DCE7 b .L187 + 3626 .LVL289: + 3627 .L178: +5192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3628 .loc 1 5192 7 view .LVU1165 +5192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3629 .loc 1 5192 13 is_stmt 0 view .LVU1166 + 3630 0074 C06A ldr r0, [r0, #44] + 3631 .LVL290: +5192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3632 .loc 1 5192 13 view .LVU1167 + 3633 0076 FFF7FEFF bl HAL_DMA_Abort_IT + 3634 .LVL291: +5193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3635 .loc 1 5193 7 is_stmt 1 view .LVU1168 +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3636 .loc 1 5215 3 view .LVU1169 + 3637 007a D8E7 b .L187 + 3638 .LVL292: + 3639 .L184: +5202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3640 .loc 1 5202 7 view .LVU1170 +5202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3641 .loc 1 5202 13 is_stmt 0 view .LVU1171 + 3642 007c 406B ldr r0, [r0, #52] + 3643 .LVL293: +5202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 3644 .loc 1 5202 13 view .LVU1172 + 3645 007e FFF7FEFF bl HAL_DMA_Abort_IT + 3646 .LVL294: +5203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3647 .loc 1 5203 7 is_stmt 1 view .LVU1173 +5215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3648 .loc 1 5215 3 view .LVU1174 + 3649 0082 D4E7 b .L187 + ARM GAS /tmp/ccPLZXyC.s page 214 + + + 3650 .cfi_endproc + 3651 .LFE209: + 3653 .section .text.HAL_TIM_GenerateEvent,"ax",%progbits + 3654 .align 1 + 3655 .global HAL_TIM_GenerateEvent + 3656 .syntax unified + 3657 .thumb + 3658 .thumb_func + 3659 .fpu fpv5-d16 + 3661 HAL_TIM_GenerateEvent: + 3662 .LVL295: + 3663 .LFB210: +5250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 3664 .loc 1 5250 1 view -0 + 3665 .cfi_startproc + 3666 @ args = 0, pretend = 0, frame = 0 + 3667 @ frame_needed = 0, uses_anonymous_args = 0 + 3668 @ link register save eliminated. +5252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_EVENT_SOURCE(EventSource)); + 3669 .loc 1 5252 3 view .LVU1176 +5253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3670 .loc 1 5253 3 view .LVU1177 +5256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3671 .loc 1 5256 3 view .LVU1178 +5256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3672 .loc 1 5256 3 view .LVU1179 + 3673 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 3674 0004 012B cmp r3, #1 + 3675 0006 0ED0 beq .L195 +5256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3676 .loc 1 5256 3 discriminator 2 view .LVU1180 + 3677 0008 0123 movs r3, #1 + 3678 000a 80F83C30 strb r3, [r0, #60] +5256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3679 .loc 1 5256 3 discriminator 2 view .LVU1181 +5259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3680 .loc 1 5259 3 discriminator 2 view .LVU1182 +5259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3681 .loc 1 5259 15 is_stmt 0 discriminator 2 view .LVU1183 + 3682 000e 0222 movs r2, #2 + 3683 0010 80F83D20 strb r2, [r0, #61] +5262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3684 .loc 1 5262 3 is_stmt 1 discriminator 2 view .LVU1184 +5262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3685 .loc 1 5262 7 is_stmt 0 discriminator 2 view .LVU1185 + 3686 0014 0268 ldr r2, [r0] +5262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3687 .loc 1 5262 23 discriminator 2 view .LVU1186 + 3688 0016 5161 str r1, [r2, #20] +5265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3689 .loc 1 5265 3 is_stmt 1 discriminator 2 view .LVU1187 +5265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3690 .loc 1 5265 15 is_stmt 0 discriminator 2 view .LVU1188 + 3691 0018 80F83D30 strb r3, [r0, #61] +5267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3692 .loc 1 5267 3 is_stmt 1 discriminator 2 view .LVU1189 +5267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 215 + + + 3693 .loc 1 5267 3 discriminator 2 view .LVU1190 + 3694 001c 0023 movs r3, #0 + 3695 001e 80F83C30 strb r3, [r0, #60] +5267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3696 .loc 1 5267 3 discriminator 2 view .LVU1191 +5270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3697 .loc 1 5270 3 discriminator 2 view .LVU1192 +5270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3698 .loc 1 5270 10 is_stmt 0 discriminator 2 view .LVU1193 + 3699 0022 1846 mov r0, r3 + 3700 .LVL296: +5270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3701 .loc 1 5270 10 discriminator 2 view .LVU1194 + 3702 0024 7047 bx lr + 3703 .LVL297: + 3704 .L195: +5256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3705 .loc 1 5256 3 view .LVU1195 + 3706 0026 0220 movs r0, #2 + 3707 .LVL298: +5271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3708 .loc 1 5271 1 view .LVU1196 + 3709 0028 7047 bx lr + 3710 .cfi_endproc + 3711 .LFE210: + 3713 .section .text.HAL_TIM_ConfigTI1Input,"ax",%progbits + 3714 .align 1 + 3715 .global HAL_TIM_ConfigTI1Input + 3716 .syntax unified + 3717 .thumb + 3718 .thumb_func + 3719 .fpu fpv5-d16 + 3721 HAL_TIM_ConfigTI1Input: + 3722 .LVL299: + 3723 .LFB213: +5601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr2; + 3724 .loc 1 5601 1 is_stmt 1 view -0 + 3725 .cfi_startproc + 3726 @ args = 0, pretend = 0, frame = 0 + 3727 @ frame_needed = 0, uses_anonymous_args = 0 + 3728 @ link register save eliminated. +5602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3729 .loc 1 5602 3 view .LVU1198 +5605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TI1SELECTION(TI1_Selection)); + 3730 .loc 1 5605 3 view .LVU1199 +5606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3731 .loc 1 5606 3 view .LVU1200 +5609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3732 .loc 1 5609 3 view .LVU1201 +5609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3733 .loc 1 5609 16 is_stmt 0 view .LVU1202 + 3734 0000 0268 ldr r2, [r0] +5609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3735 .loc 1 5609 10 view .LVU1203 + 3736 0002 5368 ldr r3, [r2, #4] + 3737 .LVL300: +5612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 216 + + + 3738 .loc 1 5612 3 is_stmt 1 view .LVU1204 +5612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3739 .loc 1 5612 10 is_stmt 0 view .LVU1205 + 3740 0004 23F08003 bic r3, r3, #128 + 3741 .LVL301: +5615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3742 .loc 1 5615 3 is_stmt 1 view .LVU1206 +5615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3743 .loc 1 5615 10 is_stmt 0 view .LVU1207 + 3744 0008 0B43 orrs r3, r3, r1 + 3745 .LVL302: +5618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3746 .loc 1 5618 3 is_stmt 1 view .LVU1208 +5618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3747 .loc 1 5618 23 is_stmt 0 view .LVU1209 + 3748 000a 5360 str r3, [r2, #4] +5620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3749 .loc 1 5620 3 is_stmt 1 view .LVU1210 +5621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3750 .loc 1 5621 1 is_stmt 0 view .LVU1211 + 3751 000c 0020 movs r0, #0 + 3752 .LVL303: +5621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3753 .loc 1 5621 1 view .LVU1212 + 3754 000e 7047 bx lr + 3755 .cfi_endproc + 3756 .LFE213: + 3758 .section .text.HAL_TIM_ReadCapturedValue,"ax",%progbits + 3759 .align 1 + 3760 .global HAL_TIM_ReadCapturedValue + 3761 .syntax unified + 3762 .thumb + 3763 .thumb_func + 3764 .fpu fpv5-d16 + 3766 HAL_TIM_ReadCapturedValue: + 3767 .LVL304: + 3768 .LFB216: +5716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpreg = 0U; + 3769 .loc 1 5716 1 is_stmt 1 view -0 + 3770 .cfi_startproc + 3771 @ args = 0, pretend = 0, frame = 0 + 3772 @ frame_needed = 0, uses_anonymous_args = 0 + 3773 @ link register save eliminated. +5717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3774 .loc 1 5717 3 view .LVU1214 +5719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3775 .loc 1 5719 3 view .LVU1215 + 3776 0000 0C29 cmp r1, #12 + 3777 0002 14D8 bhi .L204 + 3778 0004 DFE801F0 tbb [pc, r1] + 3779 .L200: + 3780 0008 07 .byte (.L203-.L200)/2 + 3781 0009 13 .byte (.L204-.L200)/2 + 3782 000a 13 .byte (.L204-.L200)/2 + 3783 000b 13 .byte (.L204-.L200)/2 + 3784 000c 0A .byte (.L202-.L200)/2 + 3785 000d 13 .byte (.L204-.L200)/2 + ARM GAS /tmp/ccPLZXyC.s page 217 + + + 3786 000e 13 .byte (.L204-.L200)/2 + 3787 000f 13 .byte (.L204-.L200)/2 + 3788 0010 0D .byte (.L201-.L200)/2 + 3789 0011 13 .byte (.L204-.L200)/2 + 3790 0012 13 .byte (.L204-.L200)/2 + 3791 0013 13 .byte (.L204-.L200)/2 + 3792 0014 10 .byte (.L199-.L200)/2 + 3793 0015 00 .p2align 1 + 3794 .L203: +5724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3795 .loc 1 5724 7 view .LVU1216 +5727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3796 .loc 1 5727 7 view .LVU1217 +5727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3797 .loc 1 5727 21 is_stmt 0 view .LVU1218 + 3798 0016 0368 ldr r3, [r0] +5727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3799 .loc 1 5727 14 view .LVU1219 + 3800 0018 586B ldr r0, [r3, #52] + 3801 .LVL305: +5729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3802 .loc 1 5729 7 is_stmt 1 view .LVU1220 + 3803 001a 7047 bx lr + 3804 .LVL306: + 3805 .L202: +5734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3806 .loc 1 5734 7 view .LVU1221 +5737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3807 .loc 1 5737 7 view .LVU1222 +5737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3808 .loc 1 5737 22 is_stmt 0 view .LVU1223 + 3809 001c 0368 ldr r3, [r0] +5737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3810 .loc 1 5737 14 view .LVU1224 + 3811 001e 986B ldr r0, [r3, #56] + 3812 .LVL307: +5739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3813 .loc 1 5739 7 is_stmt 1 view .LVU1225 + 3814 0020 7047 bx lr + 3815 .LVL308: + 3816 .L201: +5745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3817 .loc 1 5745 7 view .LVU1226 +5748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3818 .loc 1 5748 7 view .LVU1227 +5748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3819 .loc 1 5748 22 is_stmt 0 view .LVU1228 + 3820 0022 0368 ldr r3, [r0] +5748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3821 .loc 1 5748 14 view .LVU1229 + 3822 0024 D86B ldr r0, [r3, #60] + 3823 .LVL309: +5750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3824 .loc 1 5750 7 is_stmt 1 view .LVU1230 + 3825 0026 7047 bx lr + 3826 .LVL310: + 3827 .L199: + ARM GAS /tmp/ccPLZXyC.s page 218 + + +5756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3828 .loc 1 5756 7 view .LVU1231 +5759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3829 .loc 1 5759 7 view .LVU1232 +5759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3830 .loc 1 5759 22 is_stmt 0 view .LVU1233 + 3831 0028 0368 ldr r3, [r0] +5759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3832 .loc 1 5759 14 view .LVU1234 + 3833 002a 186C ldr r0, [r3, #64] + 3834 .LVL311: +5761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3835 .loc 1 5761 7 is_stmt 1 view .LVU1235 + 3836 002c 7047 bx lr + 3837 .LVL312: + 3838 .L204: +5719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3839 .loc 1 5719 3 is_stmt 0 view .LVU1236 + 3840 002e 0020 movs r0, #0 + 3841 .LVL313: +5768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3842 .loc 1 5768 3 is_stmt 1 view .LVU1237 +5769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3843 .loc 1 5769 1 is_stmt 0 view .LVU1238 + 3844 0030 7047 bx lr + 3845 .cfi_endproc + 3846 .LFE216: + 3848 .section .text.HAL_TIM_PeriodElapsedCallback,"ax",%progbits + 3849 .align 1 + 3850 .weak HAL_TIM_PeriodElapsedCallback + 3851 .syntax unified + 3852 .thumb + 3853 .thumb_func + 3854 .fpu fpv5-d16 + 3856 HAL_TIM_PeriodElapsedCallback: + 3857 .LVL314: + 3858 .LFB217: +5800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 3859 .loc 1 5800 1 is_stmt 1 view -0 + 3860 .cfi_startproc + 3861 @ args = 0, pretend = 0, frame = 0 + 3862 @ frame_needed = 0, uses_anonymous_args = 0 + 3863 @ link register save eliminated. +5802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3864 .loc 1 5802 3 view .LVU1240 +5807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3865 .loc 1 5807 1 is_stmt 0 view .LVU1241 + 3866 0000 7047 bx lr + 3867 .cfi_endproc + 3868 .LFE217: + 3870 .section .text.TIM_DMAPeriodElapsedCplt,"ax",%progbits + 3871 .align 1 + 3872 .syntax unified + 3873 .thumb + 3874 .thumb_func + 3875 .fpu fpv5-d16 + 3877 TIM_DMAPeriodElapsedCplt: + ARM GAS /tmp/ccPLZXyC.s page 219 + + + 3878 .LVL315: + 3879 .LFB241: +6856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 3880 .loc 1 6856 1 is_stmt 1 view -0 + 3881 .cfi_startproc + 3882 @ args = 0, pretend = 0, frame = 0 + 3883 @ frame_needed = 0, uses_anonymous_args = 0 +6856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 3884 .loc 1 6856 1 is_stmt 0 view .LVU1243 + 3885 0000 08B5 push {r3, lr} + 3886 .LCFI38: + 3887 .cfi_def_cfa_offset 8 + 3888 .cfi_offset 3, -8 + 3889 .cfi_offset 14, -4 +6857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3890 .loc 1 6857 3 is_stmt 1 view .LVU1244 +6857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3891 .loc 1 6857 22 is_stmt 0 view .LVU1245 + 3892 0002 806B ldr r0, [r0, #56] + 3893 .LVL316: +6859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3894 .loc 1 6859 3 is_stmt 1 view .LVU1246 +6859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3895 .loc 1 6859 17 is_stmt 0 view .LVU1247 + 3896 0004 036A ldr r3, [r0, #32] +6859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3897 .loc 1 6859 42 view .LVU1248 + 3898 0006 DB69 ldr r3, [r3, #28] +6859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 3899 .loc 1 6859 6 view .LVU1249 + 3900 0008 13B9 cbnz r3, .L207 +6861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3901 .loc 1 6861 5 is_stmt 1 view .LVU1250 +6861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 3902 .loc 1 6861 17 is_stmt 0 view .LVU1251 + 3903 000a 0123 movs r3, #1 + 3904 000c 80F83D30 strb r3, [r0, #61] + 3905 .L207: +6867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 3906 .loc 1 6867 3 is_stmt 1 view .LVU1252 + 3907 0010 FFF7FEFF bl HAL_TIM_PeriodElapsedCallback + 3908 .LVL317: +6869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3909 .loc 1 6869 1 is_stmt 0 view .LVU1253 + 3910 0014 08BD pop {r3, pc} + 3911 .cfi_endproc + 3912 .LFE241: + 3914 .section .text.HAL_TIM_PeriodElapsedHalfCpltCallback,"ax",%progbits + 3915 .align 1 + 3916 .weak HAL_TIM_PeriodElapsedHalfCpltCallback + 3917 .syntax unified + 3918 .thumb + 3919 .thumb_func + 3920 .fpu fpv5-d16 + 3922 HAL_TIM_PeriodElapsedHalfCpltCallback: + 3923 .LVL318: + 3924 .LFB218: + ARM GAS /tmp/ccPLZXyC.s page 220 + + +5815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 3925 .loc 1 5815 1 is_stmt 1 view -0 + 3926 .cfi_startproc + 3927 @ args = 0, pretend = 0, frame = 0 + 3928 @ frame_needed = 0, uses_anonymous_args = 0 + 3929 @ link register save eliminated. +5817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3930 .loc 1 5817 3 view .LVU1255 +5822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3931 .loc 1 5822 1 is_stmt 0 view .LVU1256 + 3932 0000 7047 bx lr + 3933 .cfi_endproc + 3934 .LFE218: + 3936 .section .text.TIM_DMAPeriodElapsedHalfCplt,"ax",%progbits + 3937 .align 1 + 3938 .syntax unified + 3939 .thumb + 3940 .thumb_func + 3941 .fpu fpv5-d16 + 3943 TIM_DMAPeriodElapsedHalfCplt: + 3944 .LVL319: + 3945 .LFB242: +6877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 3946 .loc 1 6877 1 is_stmt 1 view -0 + 3947 .cfi_startproc + 3948 @ args = 0, pretend = 0, frame = 0 + 3949 @ frame_needed = 0, uses_anonymous_args = 0 +6877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 3950 .loc 1 6877 1 is_stmt 0 view .LVU1258 + 3951 0000 08B5 push {r3, lr} + 3952 .LCFI39: + 3953 .cfi_def_cfa_offset 8 + 3954 .cfi_offset 3, -8 + 3955 .cfi_offset 14, -4 +6878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3956 .loc 1 6878 3 is_stmt 1 view .LVU1259 + 3957 .LVL320: +6883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 3958 .loc 1 6883 3 view .LVU1260 + 3959 0002 806B ldr r0, [r0, #56] + 3960 .LVL321: +6883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 3961 .loc 1 6883 3 is_stmt 0 view .LVU1261 + 3962 0004 FFF7FEFF bl HAL_TIM_PeriodElapsedHalfCpltCallback + 3963 .LVL322: +6885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3964 .loc 1 6885 1 view .LVU1262 + 3965 0008 08BD pop {r3, pc} + 3966 .cfi_endproc + 3967 .LFE242: + 3969 .section .text.HAL_TIM_OC_DelayElapsedCallback,"ax",%progbits + 3970 .align 1 + 3971 .weak HAL_TIM_OC_DelayElapsedCallback + 3972 .syntax unified + 3973 .thumb + 3974 .thumb_func + 3975 .fpu fpv5-d16 + ARM GAS /tmp/ccPLZXyC.s page 221 + + + 3977 HAL_TIM_OC_DelayElapsedCallback: + 3978 .LVL323: + 3979 .LFB219: +5830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 3980 .loc 1 5830 1 is_stmt 1 view -0 + 3981 .cfi_startproc + 3982 @ args = 0, pretend = 0, frame = 0 + 3983 @ frame_needed = 0, uses_anonymous_args = 0 + 3984 @ link register save eliminated. +5832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3985 .loc 1 5832 3 view .LVU1264 +5837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 3986 .loc 1 5837 1 is_stmt 0 view .LVU1265 + 3987 0000 7047 bx lr + 3988 .cfi_endproc + 3989 .LFE219: + 3991 .section .text.HAL_TIM_IC_CaptureCallback,"ax",%progbits + 3992 .align 1 + 3993 .weak HAL_TIM_IC_CaptureCallback + 3994 .syntax unified + 3995 .thumb + 3996 .thumb_func + 3997 .fpu fpv5-d16 + 3999 HAL_TIM_IC_CaptureCallback: + 4000 .LVL324: + 4001 .LFB220: +5845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 4002 .loc 1 5845 1 is_stmt 1 view -0 + 4003 .cfi_startproc + 4004 @ args = 0, pretend = 0, frame = 0 + 4005 @ frame_needed = 0, uses_anonymous_args = 0 + 4006 @ link register save eliminated. +5847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4007 .loc 1 5847 3 view .LVU1267 +5852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4008 .loc 1 5852 1 is_stmt 0 view .LVU1268 + 4009 0000 7047 bx lr + 4010 .cfi_endproc + 4011 .LFE220: + 4013 .section .text.TIM_DMACaptureCplt,"ax",%progbits + 4014 .align 1 + 4015 .global TIM_DMACaptureCplt + 4016 .syntax unified + 4017 .thumb + 4018 .thumb_func + 4019 .fpu fpv5-d16 + 4021 TIM_DMACaptureCplt: + 4022 .LVL325: + 4023 .LFB239: +6754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4024 .loc 1 6754 1 is_stmt 1 view -0 + 4025 .cfi_startproc + 4026 @ args = 0, pretend = 0, frame = 0 + 4027 @ frame_needed = 0, uses_anonymous_args = 0 +6754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4028 .loc 1 6754 1 is_stmt 0 view .LVU1270 + 4029 0000 10B5 push {r4, lr} + ARM GAS /tmp/ccPLZXyC.s page 222 + + + 4030 .LCFI40: + 4031 .cfi_def_cfa_offset 8 + 4032 .cfi_offset 4, -8 + 4033 .cfi_offset 14, -4 +6755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4034 .loc 1 6755 3 is_stmt 1 view .LVU1271 +6755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4035 .loc 1 6755 22 is_stmt 0 view .LVU1272 + 4036 0002 846B ldr r4, [r0, #56] + 4037 .LVL326: +6757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4038 .loc 1 6757 3 is_stmt 1 view .LVU1273 +6757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4039 .loc 1 6757 25 is_stmt 0 view .LVU1274 + 4040 0004 636A ldr r3, [r4, #36] +6757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4041 .loc 1 6757 6 view .LVU1275 + 4042 0006 8342 cmp r3, r0 + 4043 0008 0ED0 beq .L220 +6767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4044 .loc 1 6767 8 is_stmt 1 view .LVU1276 +6767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4045 .loc 1 6767 30 is_stmt 0 view .LVU1277 + 4046 000a A36A ldr r3, [r4, #40] +6767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4047 .loc 1 6767 11 view .LVU1278 + 4048 000c 8342 cmp r3, r0 + 4049 000e 16D0 beq .L221 +6777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4050 .loc 1 6777 8 is_stmt 1 view .LVU1279 +6777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4051 .loc 1 6777 30 is_stmt 0 view .LVU1280 + 4052 0010 E36A ldr r3, [r4, #44] +6777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4053 .loc 1 6777 11 view .LVU1281 + 4054 0012 8342 cmp r3, r0 + 4055 0014 1ED0 beq .L222 +6787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4056 .loc 1 6787 8 is_stmt 1 view .LVU1282 +6787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4057 .loc 1 6787 30 is_stmt 0 view .LVU1283 + 4058 0016 236B ldr r3, [r4, #48] +6787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4059 .loc 1 6787 11 view .LVU1284 + 4060 0018 8342 cmp r3, r0 + 4061 001a 26D0 beq .L223 + 4062 .L216: +6800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4063 .loc 1 6800 3 is_stmt 1 view .LVU1285 +6805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4064 .loc 1 6805 3 view .LVU1286 + 4065 001c 2046 mov r0, r4 + 4066 .LVL327: +6805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4067 .loc 1 6805 3 is_stmt 0 view .LVU1287 + 4068 001e FFF7FEFF bl HAL_TIM_IC_CaptureCallback + 4069 .LVL328: + ARM GAS /tmp/ccPLZXyC.s page 223 + + +6808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4070 .loc 1 6808 3 is_stmt 1 view .LVU1288 +6808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4071 .loc 1 6808 17 is_stmt 0 view .LVU1289 + 4072 0022 0023 movs r3, #0 + 4073 0024 2377 strb r3, [r4, #28] +6809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4074 .loc 1 6809 1 view .LVU1290 + 4075 0026 10BD pop {r4, pc} + 4076 .LVL329: + 4077 .L220: +6759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4078 .loc 1 6759 5 is_stmt 1 view .LVU1291 +6759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4079 .loc 1 6759 19 is_stmt 0 view .LVU1292 + 4080 0028 0123 movs r3, #1 + 4081 002a 2377 strb r3, [r4, #28] +6761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4082 .loc 1 6761 5 is_stmt 1 view .LVU1293 +6761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4083 .loc 1 6761 19 is_stmt 0 view .LVU1294 + 4084 002c C369 ldr r3, [r0, #28] +6761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4085 .loc 1 6761 8 view .LVU1295 + 4086 002e 002B cmp r3, #0 + 4087 0030 F4D1 bne .L216 +6763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 4088 .loc 1 6763 7 is_stmt 1 view .LVU1296 + 4089 0032 0123 movs r3, #1 + 4090 0034 84F83E30 strb r3, [r4, #62] +6764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4091 .loc 1 6764 7 view .LVU1297 + 4092 0038 84F84430 strb r3, [r4, #68] + 4093 003c EEE7 b .L216 + 4094 .L221: +6769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4095 .loc 1 6769 5 view .LVU1298 +6769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4096 .loc 1 6769 19 is_stmt 0 view .LVU1299 + 4097 003e 0223 movs r3, #2 + 4098 0040 2377 strb r3, [r4, #28] +6771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4099 .loc 1 6771 5 is_stmt 1 view .LVU1300 +6771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4100 .loc 1 6771 19 is_stmt 0 view .LVU1301 + 4101 0042 C369 ldr r3, [r0, #28] +6771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4102 .loc 1 6771 8 view .LVU1302 + 4103 0044 002B cmp r3, #0 + 4104 0046 E9D1 bne .L216 +6773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 4105 .loc 1 6773 7 is_stmt 1 view .LVU1303 + 4106 0048 0123 movs r3, #1 + 4107 004a 84F83F30 strb r3, [r4, #63] +6774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4108 .loc 1 6774 7 view .LVU1304 + 4109 004e 84F84530 strb r3, [r4, #69] + ARM GAS /tmp/ccPLZXyC.s page 224 + + + 4110 0052 E3E7 b .L216 + 4111 .L222: +6779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4112 .loc 1 6779 5 view .LVU1305 +6779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4113 .loc 1 6779 19 is_stmt 0 view .LVU1306 + 4114 0054 0423 movs r3, #4 + 4115 0056 2377 strb r3, [r4, #28] +6781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4116 .loc 1 6781 5 is_stmt 1 view .LVU1307 +6781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4117 .loc 1 6781 19 is_stmt 0 view .LVU1308 + 4118 0058 C369 ldr r3, [r0, #28] +6781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4119 .loc 1 6781 8 view .LVU1309 + 4120 005a 002B cmp r3, #0 + 4121 005c DED1 bne .L216 +6783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + 4122 .loc 1 6783 7 is_stmt 1 view .LVU1310 + 4123 005e 0123 movs r3, #1 + 4124 0060 84F84030 strb r3, [r4, #64] +6784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4125 .loc 1 6784 7 view .LVU1311 + 4126 0064 84F84630 strb r3, [r4, #70] + 4127 0068 D8E7 b .L216 + 4128 .L223: +6789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4129 .loc 1 6789 5 view .LVU1312 +6789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4130 .loc 1 6789 19 is_stmt 0 view .LVU1313 + 4131 006a 0823 movs r3, #8 + 4132 006c 2377 strb r3, [r4, #28] +6791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4133 .loc 1 6791 5 is_stmt 1 view .LVU1314 +6791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4134 .loc 1 6791 19 is_stmt 0 view .LVU1315 + 4135 006e C369 ldr r3, [r0, #28] +6791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4136 .loc 1 6791 8 view .LVU1316 + 4137 0070 002B cmp r3, #0 + 4138 0072 D3D1 bne .L216 +6793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + 4139 .loc 1 6793 7 is_stmt 1 view .LVU1317 + 4140 0074 0123 movs r3, #1 + 4141 0076 84F84130 strb r3, [r4, #65] +6794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4142 .loc 1 6794 7 view .LVU1318 + 4143 007a 84F84730 strb r3, [r4, #71] + 4144 007e CDE7 b .L216 + 4145 .cfi_endproc + 4146 .LFE239: + 4148 .section .text.HAL_TIM_IC_CaptureHalfCpltCallback,"ax",%progbits + 4149 .align 1 + 4150 .weak HAL_TIM_IC_CaptureHalfCpltCallback + 4151 .syntax unified + 4152 .thumb + 4153 .thumb_func + ARM GAS /tmp/ccPLZXyC.s page 225 + + + 4154 .fpu fpv5-d16 + 4156 HAL_TIM_IC_CaptureHalfCpltCallback: + 4157 .LVL330: + 4158 .LFB221: +5860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 4159 .loc 1 5860 1 view -0 + 4160 .cfi_startproc + 4161 @ args = 0, pretend = 0, frame = 0 + 4162 @ frame_needed = 0, uses_anonymous_args = 0 + 4163 @ link register save eliminated. +5862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4164 .loc 1 5862 3 view .LVU1320 +5867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4165 .loc 1 5867 1 is_stmt 0 view .LVU1321 + 4166 0000 7047 bx lr + 4167 .cfi_endproc + 4168 .LFE221: + 4170 .section .text.TIM_DMACaptureHalfCplt,"ax",%progbits + 4171 .align 1 + 4172 .global TIM_DMACaptureHalfCplt + 4173 .syntax unified + 4174 .thumb + 4175 .thumb_func + 4176 .fpu fpv5-d16 + 4178 TIM_DMACaptureHalfCplt: + 4179 .LVL331: + 4180 .LFB240: +6817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4181 .loc 1 6817 1 is_stmt 1 view -0 + 4182 .cfi_startproc + 4183 @ args = 0, pretend = 0, frame = 0 + 4184 @ frame_needed = 0, uses_anonymous_args = 0 +6817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4185 .loc 1 6817 1 is_stmt 0 view .LVU1323 + 4186 0000 10B5 push {r4, lr} + 4187 .LCFI41: + 4188 .cfi_def_cfa_offset 8 + 4189 .cfi_offset 4, -8 + 4190 .cfi_offset 14, -4 +6818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4191 .loc 1 6818 3 is_stmt 1 view .LVU1324 +6818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4192 .loc 1 6818 22 is_stmt 0 view .LVU1325 + 4193 0002 846B ldr r4, [r0, #56] + 4194 .LVL332: +6820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4195 .loc 1 6820 3 is_stmt 1 view .LVU1326 +6820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4196 .loc 1 6820 25 is_stmt 0 view .LVU1327 + 4197 0004 636A ldr r3, [r4, #36] +6820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4198 .loc 1 6820 6 view .LVU1328 + 4199 0006 8342 cmp r3, r0 + 4200 0008 0BD0 beq .L231 +6824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4201 .loc 1 6824 8 is_stmt 1 view .LVU1329 +6824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 226 + + + 4202 .loc 1 6824 30 is_stmt 0 view .LVU1330 + 4203 000a A36A ldr r3, [r4, #40] +6824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4204 .loc 1 6824 11 view .LVU1331 + 4205 000c 8342 cmp r3, r0 + 4206 000e 10D0 beq .L232 +6828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4207 .loc 1 6828 8 is_stmt 1 view .LVU1332 +6828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4208 .loc 1 6828 30 is_stmt 0 view .LVU1333 + 4209 0010 E36A ldr r3, [r4, #44] +6828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4210 .loc 1 6828 11 view .LVU1334 + 4211 0012 8342 cmp r3, r0 + 4212 0014 10D0 beq .L233 +6832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4213 .loc 1 6832 8 is_stmt 1 view .LVU1335 +6832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4214 .loc 1 6832 30 is_stmt 0 view .LVU1336 + 4215 0016 236B ldr r3, [r4, #48] +6832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4216 .loc 1 6832 11 view .LVU1337 + 4217 0018 8342 cmp r3, r0 + 4218 001a 04D1 bne .L227 +6834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4219 .loc 1 6834 5 is_stmt 1 view .LVU1338 +6834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4220 .loc 1 6834 19 is_stmt 0 view .LVU1339 + 4221 001c 0823 movs r3, #8 + 4222 001e 2377 strb r3, [r4, #28] + 4223 0020 01E0 b .L227 + 4224 .L231: +6822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4225 .loc 1 6822 5 is_stmt 1 view .LVU1340 +6822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4226 .loc 1 6822 19 is_stmt 0 view .LVU1341 + 4227 0022 0123 movs r3, #1 + 4228 0024 2377 strb r3, [r4, #28] + 4229 .L227: +6839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4230 .loc 1 6839 3 is_stmt 1 view .LVU1342 +6844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4231 .loc 1 6844 3 view .LVU1343 + 4232 0026 2046 mov r0, r4 + 4233 .LVL333: +6844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4234 .loc 1 6844 3 is_stmt 0 view .LVU1344 + 4235 0028 FFF7FEFF bl HAL_TIM_IC_CaptureHalfCpltCallback + 4236 .LVL334: +6847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4237 .loc 1 6847 3 is_stmt 1 view .LVU1345 +6847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4238 .loc 1 6847 17 is_stmt 0 view .LVU1346 + 4239 002c 0023 movs r3, #0 + 4240 002e 2377 strb r3, [r4, #28] +6848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4241 .loc 1 6848 1 view .LVU1347 + ARM GAS /tmp/ccPLZXyC.s page 227 + + + 4242 0030 10BD pop {r4, pc} + 4243 .LVL335: + 4244 .L232: +6826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4245 .loc 1 6826 5 is_stmt 1 view .LVU1348 +6826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4246 .loc 1 6826 19 is_stmt 0 view .LVU1349 + 4247 0032 0223 movs r3, #2 + 4248 0034 2377 strb r3, [r4, #28] + 4249 0036 F6E7 b .L227 + 4250 .L233: +6830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4251 .loc 1 6830 5 is_stmt 1 view .LVU1350 +6830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4252 .loc 1 6830 19 is_stmt 0 view .LVU1351 + 4253 0038 0423 movs r3, #4 + 4254 003a 2377 strb r3, [r4, #28] + 4255 003c F3E7 b .L227 + 4256 .cfi_endproc + 4257 .LFE240: + 4259 .section .text.HAL_TIM_PWM_PulseFinishedCallback,"ax",%progbits + 4260 .align 1 + 4261 .weak HAL_TIM_PWM_PulseFinishedCallback + 4262 .syntax unified + 4263 .thumb + 4264 .thumb_func + 4265 .fpu fpv5-d16 + 4267 HAL_TIM_PWM_PulseFinishedCallback: + 4268 .LVL336: + 4269 .LFB222: +5875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 4270 .loc 1 5875 1 is_stmt 1 view -0 + 4271 .cfi_startproc + 4272 @ args = 0, pretend = 0, frame = 0 + 4273 @ frame_needed = 0, uses_anonymous_args = 0 + 4274 @ link register save eliminated. +5877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4275 .loc 1 5877 3 view .LVU1353 +5882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4276 .loc 1 5882 1 is_stmt 0 view .LVU1354 + 4277 0000 7047 bx lr + 4278 .cfi_endproc + 4279 .LFE222: + 4281 .section .text.TIM_DMADelayPulseCplt,"ax",%progbits + 4282 .align 1 + 4283 .syntax unified + 4284 .thumb + 4285 .thumb_func + 4286 .fpu fpv5-d16 + 4288 TIM_DMADelayPulseCplt: + 4289 .LVL337: + 4290 .LFB237: +6656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4291 .loc 1 6656 1 is_stmt 1 view -0 + 4292 .cfi_startproc + 4293 @ args = 0, pretend = 0, frame = 0 + 4294 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccPLZXyC.s page 228 + + +6656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4295 .loc 1 6656 1 is_stmt 0 view .LVU1356 + 4296 0000 10B5 push {r4, lr} + 4297 .LCFI42: + 4298 .cfi_def_cfa_offset 8 + 4299 .cfi_offset 4, -8 + 4300 .cfi_offset 14, -4 +6657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4301 .loc 1 6657 3 is_stmt 1 view .LVU1357 +6657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4302 .loc 1 6657 22 is_stmt 0 view .LVU1358 + 4303 0002 846B ldr r4, [r0, #56] + 4304 .LVL338: +6659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4305 .loc 1 6659 3 is_stmt 1 view .LVU1359 +6659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4306 .loc 1 6659 25 is_stmt 0 view .LVU1360 + 4307 0004 636A ldr r3, [r4, #36] +6659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4308 .loc 1 6659 6 view .LVU1361 + 4309 0006 8342 cmp r3, r0 + 4310 0008 0ED0 beq .L241 +6668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4311 .loc 1 6668 8 is_stmt 1 view .LVU1362 +6668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4312 .loc 1 6668 30 is_stmt 0 view .LVU1363 + 4313 000a A36A ldr r3, [r4, #40] +6668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4314 .loc 1 6668 11 view .LVU1364 + 4315 000c 8342 cmp r3, r0 + 4316 000e 14D0 beq .L242 +6677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4317 .loc 1 6677 8 is_stmt 1 view .LVU1365 +6677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4318 .loc 1 6677 30 is_stmt 0 view .LVU1366 + 4319 0010 E36A ldr r3, [r4, #44] +6677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4320 .loc 1 6677 11 view .LVU1367 + 4321 0012 8342 cmp r3, r0 + 4322 0014 1AD0 beq .L243 +6686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4323 .loc 1 6686 8 is_stmt 1 view .LVU1368 +6686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4324 .loc 1 6686 30 is_stmt 0 view .LVU1369 + 4325 0016 236B ldr r3, [r4, #48] +6686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4326 .loc 1 6686 11 view .LVU1370 + 4327 0018 8342 cmp r3, r0 + 4328 001a 20D0 beq .L244 + 4329 .L237: +6698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4330 .loc 1 6698 3 is_stmt 1 view .LVU1371 +6703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4331 .loc 1 6703 3 view .LVU1372 + 4332 001c 2046 mov r0, r4 + 4333 .LVL339: +6703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + ARM GAS /tmp/ccPLZXyC.s page 229 + + + 4334 .loc 1 6703 3 is_stmt 0 view .LVU1373 + 4335 001e FFF7FEFF bl HAL_TIM_PWM_PulseFinishedCallback + 4336 .LVL340: +6706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4337 .loc 1 6706 3 is_stmt 1 view .LVU1374 +6706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4338 .loc 1 6706 17 is_stmt 0 view .LVU1375 + 4339 0022 0023 movs r3, #0 + 4340 0024 2377 strb r3, [r4, #28] +6707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4341 .loc 1 6707 1 view .LVU1376 + 4342 0026 10BD pop {r4, pc} + 4343 .LVL341: + 4344 .L241: +6661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4345 .loc 1 6661 5 is_stmt 1 view .LVU1377 +6661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4346 .loc 1 6661 19 is_stmt 0 view .LVU1378 + 4347 0028 0123 movs r3, #1 + 4348 002a 2377 strb r3, [r4, #28] +6663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4349 .loc 1 6663 5 is_stmt 1 view .LVU1379 +6663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4350 .loc 1 6663 19 is_stmt 0 view .LVU1380 + 4351 002c C369 ldr r3, [r0, #28] +6663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4352 .loc 1 6663 8 view .LVU1381 + 4353 002e 002B cmp r3, #0 + 4354 0030 F4D1 bne .L237 +6665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4355 .loc 1 6665 7 is_stmt 1 view .LVU1382 + 4356 0032 0123 movs r3, #1 + 4357 0034 84F83E30 strb r3, [r4, #62] + 4358 0038 F0E7 b .L237 + 4359 .L242: +6670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4360 .loc 1 6670 5 view .LVU1383 +6670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4361 .loc 1 6670 19 is_stmt 0 view .LVU1384 + 4362 003a 0223 movs r3, #2 + 4363 003c 2377 strb r3, [r4, #28] +6672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4364 .loc 1 6672 5 is_stmt 1 view .LVU1385 +6672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4365 .loc 1 6672 19 is_stmt 0 view .LVU1386 + 4366 003e C369 ldr r3, [r0, #28] +6672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4367 .loc 1 6672 8 view .LVU1387 + 4368 0040 002B cmp r3, #0 + 4369 0042 EBD1 bne .L237 +6674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4370 .loc 1 6674 7 is_stmt 1 view .LVU1388 + 4371 0044 0123 movs r3, #1 + 4372 0046 84F83F30 strb r3, [r4, #63] + 4373 004a E7E7 b .L237 + 4374 .L243: +6679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 230 + + + 4375 .loc 1 6679 5 view .LVU1389 +6679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4376 .loc 1 6679 19 is_stmt 0 view .LVU1390 + 4377 004c 0423 movs r3, #4 + 4378 004e 2377 strb r3, [r4, #28] +6681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4379 .loc 1 6681 5 is_stmt 1 view .LVU1391 +6681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4380 .loc 1 6681 19 is_stmt 0 view .LVU1392 + 4381 0050 C369 ldr r3, [r0, #28] +6681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4382 .loc 1 6681 8 view .LVU1393 + 4383 0052 002B cmp r3, #0 + 4384 0054 E2D1 bne .L237 +6683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4385 .loc 1 6683 7 is_stmt 1 view .LVU1394 + 4386 0056 0123 movs r3, #1 + 4387 0058 84F84030 strb r3, [r4, #64] + 4388 005c DEE7 b .L237 + 4389 .L244: +6688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4390 .loc 1 6688 5 view .LVU1395 +6688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4391 .loc 1 6688 19 is_stmt 0 view .LVU1396 + 4392 005e 0823 movs r3, #8 + 4393 0060 2377 strb r3, [r4, #28] +6690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4394 .loc 1 6690 5 is_stmt 1 view .LVU1397 +6690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4395 .loc 1 6690 19 is_stmt 0 view .LVU1398 + 4396 0062 C369 ldr r3, [r0, #28] +6690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4397 .loc 1 6690 8 view .LVU1399 + 4398 0064 002B cmp r3, #0 + 4399 0066 D9D1 bne .L237 +6692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4400 .loc 1 6692 7 is_stmt 1 view .LVU1400 + 4401 0068 0123 movs r3, #1 + 4402 006a 84F84130 strb r3, [r4, #65] + 4403 006e D5E7 b .L237 + 4404 .cfi_endproc + 4405 .LFE237: + 4407 .section .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback,"ax",%progbits + 4408 .align 1 + 4409 .weak HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 4410 .syntax unified + 4411 .thumb + 4412 .thumb_func + 4413 .fpu fpv5-d16 + 4415 HAL_TIM_PWM_PulseFinishedHalfCpltCallback: + 4416 .LVL342: + 4417 .LFB223: +5890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 4418 .loc 1 5890 1 view -0 + 4419 .cfi_startproc + 4420 @ args = 0, pretend = 0, frame = 0 + 4421 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccPLZXyC.s page 231 + + + 4422 @ link register save eliminated. +5892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4423 .loc 1 5892 3 view .LVU1402 +5897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4424 .loc 1 5897 1 is_stmt 0 view .LVU1403 + 4425 0000 7047 bx lr + 4426 .cfi_endproc + 4427 .LFE223: + 4429 .section .text.TIM_DMADelayPulseHalfCplt,"ax",%progbits + 4430 .align 1 + 4431 .global TIM_DMADelayPulseHalfCplt + 4432 .syntax unified + 4433 .thumb + 4434 .thumb_func + 4435 .fpu fpv5-d16 + 4437 TIM_DMADelayPulseHalfCplt: + 4438 .LVL343: + 4439 .LFB238: +6715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4440 .loc 1 6715 1 is_stmt 1 view -0 + 4441 .cfi_startproc + 4442 @ args = 0, pretend = 0, frame = 0 + 4443 @ frame_needed = 0, uses_anonymous_args = 0 +6715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4444 .loc 1 6715 1 is_stmt 0 view .LVU1405 + 4445 0000 10B5 push {r4, lr} + 4446 .LCFI43: + 4447 .cfi_def_cfa_offset 8 + 4448 .cfi_offset 4, -8 + 4449 .cfi_offset 14, -4 +6716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4450 .loc 1 6716 3 is_stmt 1 view .LVU1406 +6716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4451 .loc 1 6716 22 is_stmt 0 view .LVU1407 + 4452 0002 846B ldr r4, [r0, #56] + 4453 .LVL344: +6718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4454 .loc 1 6718 3 is_stmt 1 view .LVU1408 +6718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4455 .loc 1 6718 25 is_stmt 0 view .LVU1409 + 4456 0004 636A ldr r3, [r4, #36] +6718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4457 .loc 1 6718 6 view .LVU1410 + 4458 0006 8342 cmp r3, r0 + 4459 0008 0BD0 beq .L252 +6722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4460 .loc 1 6722 8 is_stmt 1 view .LVU1411 +6722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4461 .loc 1 6722 30 is_stmt 0 view .LVU1412 + 4462 000a A36A ldr r3, [r4, #40] +6722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4463 .loc 1 6722 11 view .LVU1413 + 4464 000c 8342 cmp r3, r0 + 4465 000e 10D0 beq .L253 +6726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4466 .loc 1 6726 8 is_stmt 1 view .LVU1414 +6726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 232 + + + 4467 .loc 1 6726 30 is_stmt 0 view .LVU1415 + 4468 0010 E36A ldr r3, [r4, #44] +6726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4469 .loc 1 6726 11 view .LVU1416 + 4470 0012 8342 cmp r3, r0 + 4471 0014 10D0 beq .L254 +6730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4472 .loc 1 6730 8 is_stmt 1 view .LVU1417 +6730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4473 .loc 1 6730 30 is_stmt 0 view .LVU1418 + 4474 0016 236B ldr r3, [r4, #48] +6730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4475 .loc 1 6730 11 view .LVU1419 + 4476 0018 8342 cmp r3, r0 + 4477 001a 04D1 bne .L248 +6732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4478 .loc 1 6732 5 is_stmt 1 view .LVU1420 +6732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4479 .loc 1 6732 19 is_stmt 0 view .LVU1421 + 4480 001c 0823 movs r3, #8 + 4481 001e 2377 strb r3, [r4, #28] + 4482 0020 01E0 b .L248 + 4483 .L252: +6720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4484 .loc 1 6720 5 is_stmt 1 view .LVU1422 +6720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4485 .loc 1 6720 19 is_stmt 0 view .LVU1423 + 4486 0022 0123 movs r3, #1 + 4487 0024 2377 strb r3, [r4, #28] + 4488 .L248: +6737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4489 .loc 1 6737 3 is_stmt 1 view .LVU1424 +6742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4490 .loc 1 6742 3 view .LVU1425 + 4491 0026 2046 mov r0, r4 + 4492 .LVL345: +6742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4493 .loc 1 6742 3 is_stmt 0 view .LVU1426 + 4494 0028 FFF7FEFF bl HAL_TIM_PWM_PulseFinishedHalfCpltCallback + 4495 .LVL346: +6745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4496 .loc 1 6745 3 is_stmt 1 view .LVU1427 +6745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4497 .loc 1 6745 17 is_stmt 0 view .LVU1428 + 4498 002c 0023 movs r3, #0 + 4499 002e 2377 strb r3, [r4, #28] +6746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4500 .loc 1 6746 1 view .LVU1429 + 4501 0030 10BD pop {r4, pc} + 4502 .LVL347: + 4503 .L253: +6724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4504 .loc 1 6724 5 is_stmt 1 view .LVU1430 +6724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4505 .loc 1 6724 19 is_stmt 0 view .LVU1431 + 4506 0032 0223 movs r3, #2 + 4507 0034 2377 strb r3, [r4, #28] + ARM GAS /tmp/ccPLZXyC.s page 233 + + + 4508 0036 F6E7 b .L248 + 4509 .L254: +6728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4510 .loc 1 6728 5 is_stmt 1 view .LVU1432 +6728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4511 .loc 1 6728 19 is_stmt 0 view .LVU1433 + 4512 0038 0423 movs r3, #4 + 4513 003a 2377 strb r3, [r4, #28] + 4514 003c F3E7 b .L248 + 4515 .cfi_endproc + 4516 .LFE238: + 4518 .section .text.HAL_TIM_TriggerCallback,"ax",%progbits + 4519 .align 1 + 4520 .weak HAL_TIM_TriggerCallback + 4521 .syntax unified + 4522 .thumb + 4523 .thumb_func + 4524 .fpu fpv5-d16 + 4526 HAL_TIM_TriggerCallback: + 4527 .LVL348: + 4528 .LFB224: +5905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 4529 .loc 1 5905 1 is_stmt 1 view -0 + 4530 .cfi_startproc + 4531 @ args = 0, pretend = 0, frame = 0 + 4532 @ frame_needed = 0, uses_anonymous_args = 0 + 4533 @ link register save eliminated. +5907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4534 .loc 1 5907 3 view .LVU1435 +5912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4535 .loc 1 5912 1 is_stmt 0 view .LVU1436 + 4536 0000 7047 bx lr + 4537 .cfi_endproc + 4538 .LFE224: + 4540 .section .text.HAL_TIM_IRQHandler,"ax",%progbits + 4541 .align 1 + 4542 .global HAL_TIM_IRQHandler + 4543 .syntax unified + 4544 .thumb + 4545 .thumb_func + 4546 .fpu fpv5-d16 + 4548 HAL_TIM_IRQHandler: + 4549 .LVL349: + 4550 .LFB199: +3835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t itsource = htim->Instance->DIER; + 4551 .loc 1 3835 1 is_stmt 1 view -0 + 4552 .cfi_startproc + 4553 @ args = 0, pretend = 0, frame = 0 + 4554 @ frame_needed = 0, uses_anonymous_args = 0 +3835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t itsource = htim->Instance->DIER; + 4555 .loc 1 3835 1 is_stmt 0 view .LVU1438 + 4556 0000 70B5 push {r4, r5, r6, lr} + 4557 .LCFI44: + 4558 .cfi_def_cfa_offset 16 + 4559 .cfi_offset 4, -16 + 4560 .cfi_offset 5, -12 + 4561 .cfi_offset 6, -8 + ARM GAS /tmp/ccPLZXyC.s page 234 + + + 4562 .cfi_offset 14, -4 + 4563 0002 0446 mov r4, r0 +3836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t itflag = htim->Instance->SR; + 4564 .loc 1 3836 3 is_stmt 1 view .LVU1439 +3836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t itflag = htim->Instance->SR; + 4565 .loc 1 3836 27 is_stmt 0 view .LVU1440 + 4566 0004 0368 ldr r3, [r0] +3836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t itflag = htim->Instance->SR; + 4567 .loc 1 3836 12 view .LVU1441 + 4568 0006 DE68 ldr r6, [r3, #12] + 4569 .LVL350: +3837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4570 .loc 1 3837 3 is_stmt 1 view .LVU1442 +3837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4571 .loc 1 3837 12 is_stmt 0 view .LVU1443 + 4572 0008 1D69 ldr r5, [r3, #16] + 4573 .LVL351: +3840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4574 .loc 1 3840 3 is_stmt 1 view .LVU1444 +3840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4575 .loc 1 3840 6 is_stmt 0 view .LVU1445 + 4576 000a 15F0020F tst r5, #2 + 4577 000e 10D0 beq .L257 +3842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4578 .loc 1 3842 5 is_stmt 1 view .LVU1446 +3842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4579 .loc 1 3842 8 is_stmt 0 view .LVU1447 + 4580 0010 16F0020F tst r6, #2 + 4581 0014 0DD0 beq .L257 +3845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; + 4582 .loc 1 3845 9 is_stmt 1 view .LVU1448 + 4583 0016 6FF00202 mvn r2, #2 + 4584 001a 1A61 str r2, [r3, #16] +3846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4585 .loc 1 3846 9 view .LVU1449 +3846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4586 .loc 1 3846 23 is_stmt 0 view .LVU1450 + 4587 001c 0123 movs r3, #1 + 4588 001e 0377 strb r3, [r0, #28] +3849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4589 .loc 1 3849 9 is_stmt 1 view .LVU1451 +3849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4590 .loc 1 3849 18 is_stmt 0 view .LVU1452 + 4591 0020 0368 ldr r3, [r0] +3849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4592 .loc 1 3849 28 view .LVU1453 + 4593 0022 9B69 ldr r3, [r3, #24] +3849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4594 .loc 1 3849 12 view .LVU1454 + 4595 0024 13F0030F tst r3, #3 + 4596 0028 64D0 beq .L258 +3854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4597 .loc 1 3854 11 is_stmt 1 view .LVU1455 + 4598 002a FFF7FEFF bl HAL_TIM_IC_CaptureCallback + 4599 .LVL352: + 4600 .L259: +3868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 235 + + + 4601 .loc 1 3868 9 view .LVU1456 +3868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4602 .loc 1 3868 23 is_stmt 0 view .LVU1457 + 4603 002e 0023 movs r3, #0 + 4604 0030 2377 strb r3, [r4, #28] + 4605 .L257: +3873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4606 .loc 1 3873 3 is_stmt 1 view .LVU1458 +3873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4607 .loc 1 3873 6 is_stmt 0 view .LVU1459 + 4608 0032 15F0040F tst r5, #4 + 4609 0036 12D0 beq .L260 +3875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4610 .loc 1 3875 5 is_stmt 1 view .LVU1460 +3875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4611 .loc 1 3875 8 is_stmt 0 view .LVU1461 + 4612 0038 16F0040F tst r6, #4 + 4613 003c 0FD0 beq .L260 +3877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; + 4614 .loc 1 3877 7 is_stmt 1 view .LVU1462 + 4615 003e 2368 ldr r3, [r4] + 4616 0040 6FF00402 mvn r2, #4 + 4617 0044 1A61 str r2, [r3, #16] +3878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Input capture event */ + 4618 .loc 1 3878 7 view .LVU1463 +3878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Input capture event */ + 4619 .loc 1 3878 21 is_stmt 0 view .LVU1464 + 4620 0046 0223 movs r3, #2 + 4621 0048 2377 strb r3, [r4, #28] +3880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4622 .loc 1 3880 7 is_stmt 1 view .LVU1465 +3880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4623 .loc 1 3880 16 is_stmt 0 view .LVU1466 + 4624 004a 2368 ldr r3, [r4] +3880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4625 .loc 1 3880 26 view .LVU1467 + 4626 004c 9B69 ldr r3, [r3, #24] +3880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4627 .loc 1 3880 10 view .LVU1468 + 4628 004e 13F4407F tst r3, #768 + 4629 0052 55D0 beq .L261 +3885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4630 .loc 1 3885 9 is_stmt 1 view .LVU1469 + 4631 0054 2046 mov r0, r4 + 4632 0056 FFF7FEFF bl HAL_TIM_IC_CaptureCallback + 4633 .LVL353: + 4634 .L262: +3899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4635 .loc 1 3899 7 view .LVU1470 +3899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4636 .loc 1 3899 21 is_stmt 0 view .LVU1471 + 4637 005a 0023 movs r3, #0 + 4638 005c 2377 strb r3, [r4, #28] + 4639 .L260: +3903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4640 .loc 1 3903 3 is_stmt 1 view .LVU1472 +3903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 236 + + + 4641 .loc 1 3903 6 is_stmt 0 view .LVU1473 + 4642 005e 15F0080F tst r5, #8 + 4643 0062 12D0 beq .L263 +3905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4644 .loc 1 3905 5 is_stmt 1 view .LVU1474 +3905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4645 .loc 1 3905 8 is_stmt 0 view .LVU1475 + 4646 0064 16F0080F tst r6, #8 + 4647 0068 0FD0 beq .L263 +3907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; + 4648 .loc 1 3907 7 is_stmt 1 view .LVU1476 + 4649 006a 2368 ldr r3, [r4] + 4650 006c 6FF00802 mvn r2, #8 + 4651 0070 1A61 str r2, [r3, #16] +3908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Input capture event */ + 4652 .loc 1 3908 7 view .LVU1477 +3908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Input capture event */ + 4653 .loc 1 3908 21 is_stmt 0 view .LVU1478 + 4654 0072 0423 movs r3, #4 + 4655 0074 2377 strb r3, [r4, #28] +3910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4656 .loc 1 3910 7 is_stmt 1 view .LVU1479 +3910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4657 .loc 1 3910 16 is_stmt 0 view .LVU1480 + 4658 0076 2368 ldr r3, [r4] +3910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4659 .loc 1 3910 26 view .LVU1481 + 4660 0078 DB69 ldr r3, [r3, #28] +3910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4661 .loc 1 3910 10 view .LVU1482 + 4662 007a 13F0030F tst r3, #3 + 4663 007e 46D0 beq .L264 +3915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4664 .loc 1 3915 9 is_stmt 1 view .LVU1483 + 4665 0080 2046 mov r0, r4 + 4666 0082 FFF7FEFF bl HAL_TIM_IC_CaptureCallback + 4667 .LVL354: + 4668 .L265: +3929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4669 .loc 1 3929 7 view .LVU1484 +3929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4670 .loc 1 3929 21 is_stmt 0 view .LVU1485 + 4671 0086 0023 movs r3, #0 + 4672 0088 2377 strb r3, [r4, #28] + 4673 .L263: +3933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4674 .loc 1 3933 3 is_stmt 1 view .LVU1486 +3933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4675 .loc 1 3933 6 is_stmt 0 view .LVU1487 + 4676 008a 15F0100F tst r5, #16 + 4677 008e 12D0 beq .L266 +3935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4678 .loc 1 3935 5 is_stmt 1 view .LVU1488 +3935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4679 .loc 1 3935 8 is_stmt 0 view .LVU1489 + 4680 0090 16F0100F tst r6, #16 + 4681 0094 0FD0 beq .L266 + ARM GAS /tmp/ccPLZXyC.s page 237 + + +3937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; + 4682 .loc 1 3937 7 is_stmt 1 view .LVU1490 + 4683 0096 2368 ldr r3, [r4] + 4684 0098 6FF01002 mvn r2, #16 + 4685 009c 1A61 str r2, [r3, #16] +3938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Input capture event */ + 4686 .loc 1 3938 7 view .LVU1491 +3938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Input capture event */ + 4687 .loc 1 3938 21 is_stmt 0 view .LVU1492 + 4688 009e 0823 movs r3, #8 + 4689 00a0 2377 strb r3, [r4, #28] +3940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4690 .loc 1 3940 7 is_stmt 1 view .LVU1493 +3940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4691 .loc 1 3940 16 is_stmt 0 view .LVU1494 + 4692 00a2 2368 ldr r3, [r4] +3940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4693 .loc 1 3940 26 view .LVU1495 + 4694 00a4 DB69 ldr r3, [r3, #28] +3940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4695 .loc 1 3940 10 view .LVU1496 + 4696 00a6 13F4407F tst r3, #768 + 4697 00aa 37D0 beq .L267 +3945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4698 .loc 1 3945 9 is_stmt 1 view .LVU1497 + 4699 00ac 2046 mov r0, r4 + 4700 00ae FFF7FEFF bl HAL_TIM_IC_CaptureCallback + 4701 .LVL355: + 4702 .L268: +3959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4703 .loc 1 3959 7 view .LVU1498 +3959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4704 .loc 1 3959 21 is_stmt 0 view .LVU1499 + 4705 00b2 0023 movs r3, #0 + 4706 00b4 2377 strb r3, [r4, #28] + 4707 .L266: +3963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4708 .loc 1 3963 3 is_stmt 1 view .LVU1500 +3963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4709 .loc 1 3963 6 is_stmt 0 view .LVU1501 + 4710 00b6 15F0010F tst r5, #1 + 4711 00ba 02D0 beq .L269 +3965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4712 .loc 1 3965 5 is_stmt 1 view .LVU1502 +3965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4713 .loc 1 3965 8 is_stmt 0 view .LVU1503 + 4714 00bc 16F0010F tst r6, #1 + 4715 00c0 33D1 bne .L275 + 4716 .L269: +3976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ((itflag & (TIM_FLAG_SYSTEM_BREAK)) == (TIM_FLAG_SYSTEM_BREAK))) + 4717 .loc 1 3976 3 is_stmt 1 view .LVU1504 +3976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** ((itflag & (TIM_FLAG_SYSTEM_BREAK)) == (TIM_FLAG_SYSTEM_BREAK))) + 4718 .loc 1 3976 6 is_stmt 0 view .LVU1505 + 4719 00c2 15F4025F tst r5, #8320 + 4720 00c6 02D0 beq .L270 +3979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4721 .loc 1 3979 5 is_stmt 1 view .LVU1506 + ARM GAS /tmp/ccPLZXyC.s page 238 + + +3979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4722 .loc 1 3979 8 is_stmt 0 view .LVU1507 + 4723 00c8 16F0800F tst r6, #128 + 4724 00cc 35D1 bne .L276 + 4725 .L270: +3990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4726 .loc 1 3990 3 is_stmt 1 view .LVU1508 +3990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4727 .loc 1 3990 6 is_stmt 0 view .LVU1509 + 4728 00ce 15F4807F tst r5, #256 + 4729 00d2 02D0 beq .L271 +3992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4730 .loc 1 3992 5 is_stmt 1 view .LVU1510 +3992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4731 .loc 1 3992 8 is_stmt 0 view .LVU1511 + 4732 00d4 16F0800F tst r6, #128 + 4733 00d8 37D1 bne .L277 + 4734 .L271: +4003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4735 .loc 1 4003 3 is_stmt 1 view .LVU1512 +4003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4736 .loc 1 4003 6 is_stmt 0 view .LVU1513 + 4737 00da 15F0400F tst r5, #64 + 4738 00de 02D0 beq .L272 +4005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4739 .loc 1 4005 5 is_stmt 1 view .LVU1514 +4005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4740 .loc 1 4005 8 is_stmt 0 view .LVU1515 + 4741 00e0 16F0400F tst r6, #64 + 4742 00e4 39D1 bne .L278 + 4743 .L272: +4016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4744 .loc 1 4016 3 is_stmt 1 view .LVU1516 +4016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4745 .loc 1 4016 6 is_stmt 0 view .LVU1517 + 4746 00e6 15F0200F tst r5, #32 + 4747 00ea 02D0 beq .L256 +4018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4748 .loc 1 4018 5 is_stmt 1 view .LVU1518 +4018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4749 .loc 1 4018 8 is_stmt 0 view .LVU1519 + 4750 00ec 16F0200F tst r6, #32 + 4751 00f0 3BD1 bne .L279 + 4752 .L256: +4028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4753 .loc 1 4028 1 view .LVU1520 + 4754 00f2 70BD pop {r4, r5, r6, pc} + 4755 .LVL356: + 4756 .L258: +3864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_PulseFinishedCallback(htim); + 4757 .loc 1 3864 11 is_stmt 1 view .LVU1521 + 4758 00f4 FFF7FEFF bl HAL_TIM_OC_DelayElapsedCallback + 4759 .LVL357: +3865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4760 .loc 1 3865 11 view .LVU1522 + 4761 00f8 2046 mov r0, r4 + 4762 00fa FFF7FEFF bl HAL_TIM_PWM_PulseFinishedCallback + ARM GAS /tmp/ccPLZXyC.s page 239 + + + 4763 .LVL358: + 4764 00fe 96E7 b .L259 + 4765 .L261: +3895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_PulseFinishedCallback(htim); + 4766 .loc 1 3895 9 view .LVU1523 + 4767 0100 2046 mov r0, r4 + 4768 0102 FFF7FEFF bl HAL_TIM_OC_DelayElapsedCallback + 4769 .LVL359: +3896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4770 .loc 1 3896 9 view .LVU1524 + 4771 0106 2046 mov r0, r4 + 4772 0108 FFF7FEFF bl HAL_TIM_PWM_PulseFinishedCallback + 4773 .LVL360: + 4774 010c A5E7 b .L262 + 4775 .L264: +3925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_PulseFinishedCallback(htim); + 4776 .loc 1 3925 9 view .LVU1525 + 4777 010e 2046 mov r0, r4 + 4778 0110 FFF7FEFF bl HAL_TIM_OC_DelayElapsedCallback + 4779 .LVL361: +3926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4780 .loc 1 3926 9 view .LVU1526 + 4781 0114 2046 mov r0, r4 + 4782 0116 FFF7FEFF bl HAL_TIM_PWM_PulseFinishedCallback + 4783 .LVL362: + 4784 011a B4E7 b .L265 + 4785 .L267: +3955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_PWM_PulseFinishedCallback(htim); + 4786 .loc 1 3955 9 view .LVU1527 + 4787 011c 2046 mov r0, r4 + 4788 011e FFF7FEFF bl HAL_TIM_OC_DelayElapsedCallback + 4789 .LVL363: +3956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4790 .loc 1 3956 9 view .LVU1528 + 4791 0122 2046 mov r0, r4 + 4792 0124 FFF7FEFF bl HAL_TIM_PWM_PulseFinishedCallback + 4793 .LVL364: + 4794 0128 C3E7 b .L268 + 4795 .L275: +3967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 4796 .loc 1 3967 7 view .LVU1529 + 4797 012a 2368 ldr r3, [r4] + 4798 012c 6FF00102 mvn r2, #1 + 4799 0130 1A61 str r2, [r3, #16] +3971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4800 .loc 1 3971 7 view .LVU1530 + 4801 0132 2046 mov r0, r4 + 4802 0134 FFF7FEFF bl HAL_TIM_PeriodElapsedCallback + 4803 .LVL365: + 4804 0138 C3E7 b .L269 + 4805 .L276: +3981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 4806 .loc 1 3981 7 view .LVU1531 + 4807 013a 2368 ldr r3, [r4] + 4808 013c 6FF40252 mvn r2, #8320 + 4809 0140 1A61 str r2, [r3, #16] +3985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + ARM GAS /tmp/ccPLZXyC.s page 240 + + + 4810 .loc 1 3985 7 view .LVU1532 + 4811 0142 2046 mov r0, r4 + 4812 0144 FFF7FEFF bl HAL_TIMEx_BreakCallback + 4813 .LVL366: + 4814 0148 C1E7 b .L270 + 4815 .L277: +3994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 4816 .loc 1 3994 7 view .LVU1533 + 4817 014a 2368 ldr r3, [r4] + 4818 014c 6FF48072 mvn r2, #256 + 4819 0150 1A61 str r2, [r3, #16] +3998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4820 .loc 1 3998 7 view .LVU1534 + 4821 0152 2046 mov r0, r4 + 4822 0154 FFF7FEFF bl HAL_TIMEx_Break2Callback + 4823 .LVL367: + 4824 0158 BFE7 b .L271 + 4825 .L278: +4007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 4826 .loc 1 4007 7 view .LVU1535 + 4827 015a 2368 ldr r3, [r4] + 4828 015c 6FF04002 mvn r2, #64 + 4829 0160 1A61 str r2, [r3, #16] +4011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4830 .loc 1 4011 7 view .LVU1536 + 4831 0162 2046 mov r0, r4 + 4832 0164 FFF7FEFF bl HAL_TIM_TriggerCallback + 4833 .LVL368: + 4834 0168 BDE7 b .L272 + 4835 .L279: +4020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 4836 .loc 1 4020 7 view .LVU1537 + 4837 016a 2368 ldr r3, [r4] + 4838 016c 6FF02002 mvn r2, #32 + 4839 0170 1A61 str r2, [r3, #16] +4024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4840 .loc 1 4024 7 view .LVU1538 + 4841 0172 2046 mov r0, r4 + 4842 0174 FFF7FEFF bl HAL_TIMEx_CommutCallback + 4843 .LVL369: +4028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4844 .loc 1 4028 1 is_stmt 0 view .LVU1539 + 4845 0178 BBE7 b .L256 + 4846 .cfi_endproc + 4847 .LFE199: + 4849 .section .text.TIM_DMATriggerCplt,"ax",%progbits + 4850 .align 1 + 4851 .syntax unified + 4852 .thumb + 4853 .thumb_func + 4854 .fpu fpv5-d16 + 4856 TIM_DMATriggerCplt: + 4857 .LVL370: + 4858 .LFB243: +6893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4859 .loc 1 6893 1 is_stmt 1 view -0 + 4860 .cfi_startproc + ARM GAS /tmp/ccPLZXyC.s page 241 + + + 4861 @ args = 0, pretend = 0, frame = 0 + 4862 @ frame_needed = 0, uses_anonymous_args = 0 +6893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4863 .loc 1 6893 1 is_stmt 0 view .LVU1541 + 4864 0000 08B5 push {r3, lr} + 4865 .LCFI45: + 4866 .cfi_def_cfa_offset 8 + 4867 .cfi_offset 3, -8 + 4868 .cfi_offset 14, -4 +6894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4869 .loc 1 6894 3 is_stmt 1 view .LVU1542 +6894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4870 .loc 1 6894 22 is_stmt 0 view .LVU1543 + 4871 0002 806B ldr r0, [r0, #56] + 4872 .LVL371: +6896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4873 .loc 1 6896 3 is_stmt 1 view .LVU1544 +6896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4874 .loc 1 6896 17 is_stmt 0 view .LVU1545 + 4875 0004 836B ldr r3, [r0, #56] +6896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4876 .loc 1 6896 43 view .LVU1546 + 4877 0006 DB69 ldr r3, [r3, #28] +6896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4878 .loc 1 6896 6 view .LVU1547 + 4879 0008 13B9 cbnz r3, .L281 +6898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4880 .loc 1 6898 5 is_stmt 1 view .LVU1548 +6898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 4881 .loc 1 6898 17 is_stmt 0 view .LVU1549 + 4882 000a 0123 movs r3, #1 + 4883 000c 80F83D30 strb r3, [r0, #61] + 4884 .L281: +6904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4885 .loc 1 6904 3 is_stmt 1 view .LVU1550 + 4886 0010 FFF7FEFF bl HAL_TIM_TriggerCallback + 4887 .LVL372: +6906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4888 .loc 1 6906 1 is_stmt 0 view .LVU1551 + 4889 0014 08BD pop {r3, pc} + 4890 .cfi_endproc + 4891 .LFE243: + 4893 .section .text.HAL_TIM_TriggerHalfCpltCallback,"ax",%progbits + 4894 .align 1 + 4895 .weak HAL_TIM_TriggerHalfCpltCallback + 4896 .syntax unified + 4897 .thumb + 4898 .thumb_func + 4899 .fpu fpv5-d16 + 4901 HAL_TIM_TriggerHalfCpltCallback: + 4902 .LVL373: + 4903 .LFB225: +5920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 4904 .loc 1 5920 1 is_stmt 1 view -0 + 4905 .cfi_startproc + 4906 @ args = 0, pretend = 0, frame = 0 + 4907 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccPLZXyC.s page 242 + + + 4908 @ link register save eliminated. +5922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4909 .loc 1 5922 3 view .LVU1553 +5927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4910 .loc 1 5927 1 is_stmt 0 view .LVU1554 + 4911 0000 7047 bx lr + 4912 .cfi_endproc + 4913 .LFE225: + 4915 .section .text.TIM_DMATriggerHalfCplt,"ax",%progbits + 4916 .align 1 + 4917 .syntax unified + 4918 .thumb + 4919 .thumb_func + 4920 .fpu fpv5-d16 + 4922 TIM_DMATriggerHalfCplt: + 4923 .LVL374: + 4924 .LFB244: +6914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4925 .loc 1 6914 1 is_stmt 1 view -0 + 4926 .cfi_startproc + 4927 @ args = 0, pretend = 0, frame = 0 + 4928 @ frame_needed = 0, uses_anonymous_args = 0 +6914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4929 .loc 1 6914 1 is_stmt 0 view .LVU1556 + 4930 0000 08B5 push {r3, lr} + 4931 .LCFI46: + 4932 .cfi_def_cfa_offset 8 + 4933 .cfi_offset 3, -8 + 4934 .cfi_offset 14, -4 +6915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4935 .loc 1 6915 3 is_stmt 1 view .LVU1557 + 4936 .LVL375: +6920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4937 .loc 1 6920 3 view .LVU1558 + 4938 0002 806B ldr r0, [r0, #56] + 4939 .LVL376: +6920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 4940 .loc 1 6920 3 is_stmt 0 view .LVU1559 + 4941 0004 FFF7FEFF bl HAL_TIM_TriggerHalfCpltCallback + 4942 .LVL377: +6922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4943 .loc 1 6922 1 view .LVU1560 + 4944 0008 08BD pop {r3, pc} + 4945 .cfi_endproc + 4946 .LFE244: + 4948 .section .text.HAL_TIM_ErrorCallback,"ax",%progbits + 4949 .align 1 + 4950 .weak HAL_TIM_ErrorCallback + 4951 .syntax unified + 4952 .thumb + 4953 .thumb_func + 4954 .fpu fpv5-d16 + 4956 HAL_TIM_ErrorCallback: + 4957 .LVL378: + 4958 .LFB226: +5935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 4959 .loc 1 5935 1 is_stmt 1 view -0 + ARM GAS /tmp/ccPLZXyC.s page 243 + + + 4960 .cfi_startproc + 4961 @ args = 0, pretend = 0, frame = 0 + 4962 @ frame_needed = 0, uses_anonymous_args = 0 + 4963 @ link register save eliminated. +5937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4964 .loc 1 5937 3 view .LVU1562 +5942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4965 .loc 1 5942 1 is_stmt 0 view .LVU1563 + 4966 0000 7047 bx lr + 4967 .cfi_endproc + 4968 .LFE226: + 4970 .section .text.TIM_DMAError,"ax",%progbits + 4971 .align 1 + 4972 .global TIM_DMAError + 4973 .syntax unified + 4974 .thumb + 4975 .thumb_func + 4976 .fpu fpv5-d16 + 4978 TIM_DMAError: + 4979 .LVL379: + 4980 .LFB236: +6613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4981 .loc 1 6613 1 is_stmt 1 view -0 + 4982 .cfi_startproc + 4983 @ args = 0, pretend = 0, frame = 0 + 4984 @ frame_needed = 0, uses_anonymous_args = 0 +6613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 4985 .loc 1 6613 1 is_stmt 0 view .LVU1565 + 4986 0000 10B5 push {r4, lr} + 4987 .LCFI47: + 4988 .cfi_def_cfa_offset 8 + 4989 .cfi_offset 4, -8 + 4990 .cfi_offset 14, -4 +6614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4991 .loc 1 6614 3 is_stmt 1 view .LVU1566 +6614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 4992 .loc 1 6614 22 is_stmt 0 view .LVU1567 + 4993 0002 846B ldr r4, [r0, #56] + 4994 .LVL380: +6616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4995 .loc 1 6616 3 is_stmt 1 view .LVU1568 +6616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4996 .loc 1 6616 25 is_stmt 0 view .LVU1569 + 4997 0004 636A ldr r3, [r4, #36] +6616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 4998 .loc 1 6616 6 view .LVU1570 + 4999 0006 8342 cmp r3, r0 + 5000 0008 0CD0 beq .L294 +6621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5001 .loc 1 6621 8 is_stmt 1 view .LVU1571 +6621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5002 .loc 1 6621 30 is_stmt 0 view .LVU1572 + 5003 000a A36A ldr r3, [r4, #40] +6621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5004 .loc 1 6621 11 view .LVU1573 + 5005 000c 8342 cmp r3, r0 + 5006 000e 13D0 beq .L295 + ARM GAS /tmp/ccPLZXyC.s page 244 + + +6626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5007 .loc 1 6626 8 is_stmt 1 view .LVU1574 +6626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5008 .loc 1 6626 30 is_stmt 0 view .LVU1575 + 5009 0010 E36A ldr r3, [r4, #44] +6626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5010 .loc 1 6626 11 view .LVU1576 + 5011 0012 8342 cmp r3, r0 + 5012 0014 16D0 beq .L296 +6631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5013 .loc 1 6631 8 is_stmt 1 view .LVU1577 +6631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5014 .loc 1 6631 30 is_stmt 0 view .LVU1578 + 5015 0016 236B ldr r3, [r4, #48] +6631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5016 .loc 1 6631 11 view .LVU1579 + 5017 0018 8342 cmp r3, r0 + 5018 001a 19D0 beq .L297 +6638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5019 .loc 1 6638 5 is_stmt 1 view .LVU1580 +6638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5020 .loc 1 6638 17 is_stmt 0 view .LVU1581 + 5021 001c 0123 movs r3, #1 + 5022 001e 84F83D30 strb r3, [r4, #61] + 5023 0022 03E0 b .L289 + 5024 .L294: +6618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 5025 .loc 1 6618 5 is_stmt 1 view .LVU1582 +6618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 5026 .loc 1 6618 19 is_stmt 0 view .LVU1583 + 5027 0024 0123 movs r3, #1 + 5028 0026 2377 strb r3, [r4, #28] +6619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5029 .loc 1 6619 5 is_stmt 1 view .LVU1584 + 5030 0028 84F83E30 strb r3, [r4, #62] + 5031 .L289: +6644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5032 .loc 1 6644 3 view .LVU1585 + 5033 002c 2046 mov r0, r4 + 5034 .LVL381: +6644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5035 .loc 1 6644 3 is_stmt 0 view .LVU1586 + 5036 002e FFF7FEFF bl HAL_TIM_ErrorCallback + 5037 .LVL382: +6647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5038 .loc 1 6647 3 is_stmt 1 view .LVU1587 +6647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5039 .loc 1 6647 17 is_stmt 0 view .LVU1588 + 5040 0032 0023 movs r3, #0 + 5041 0034 2377 strb r3, [r4, #28] +6648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5042 .loc 1 6648 1 view .LVU1589 + 5043 0036 10BD pop {r4, pc} + 5044 .LVL383: + 5045 .L295: +6623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 5046 .loc 1 6623 5 is_stmt 1 view .LVU1590 + ARM GAS /tmp/ccPLZXyC.s page 245 + + +6623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 5047 .loc 1 6623 19 is_stmt 0 view .LVU1591 + 5048 0038 0223 movs r3, #2 + 5049 003a 2377 strb r3, [r4, #28] +6624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5050 .loc 1 6624 5 is_stmt 1 view .LVU1592 + 5051 003c 0123 movs r3, #1 + 5052 003e 84F83F30 strb r3, [r4, #63] + 5053 0042 F3E7 b .L289 + 5054 .L296: +6628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + 5055 .loc 1 6628 5 view .LVU1593 +6628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + 5056 .loc 1 6628 19 is_stmt 0 view .LVU1594 + 5057 0044 0423 movs r3, #4 + 5058 0046 2377 strb r3, [r4, #28] +6629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5059 .loc 1 6629 5 is_stmt 1 view .LVU1595 + 5060 0048 0123 movs r3, #1 + 5061 004a 84F84030 strb r3, [r4, #64] + 5062 004e EDE7 b .L289 + 5063 .L297: +6633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + 5064 .loc 1 6633 5 view .LVU1596 +6633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_4, HAL_TIM_CHANNEL_STATE_READY); + 5065 .loc 1 6633 19 is_stmt 0 view .LVU1597 + 5066 0050 0823 movs r3, #8 + 5067 0052 2377 strb r3, [r4, #28] +6634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5068 .loc 1 6634 5 is_stmt 1 view .LVU1598 + 5069 0054 0123 movs r3, #1 + 5070 0056 84F84130 strb r3, [r4, #65] + 5071 005a E7E7 b .L289 + 5072 .cfi_endproc + 5073 .LFE236: + 5075 .section .text.HAL_TIM_Base_GetState,"ax",%progbits + 5076 .align 1 + 5077 .global HAL_TIM_Base_GetState + 5078 .syntax unified + 5079 .thumb + 5080 .thumb_func + 5081 .fpu fpv5-d16 + 5083 HAL_TIM_Base_GetState: + 5084 .LVL384: + 5085 .LFB227: +6493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; + 5086 .loc 1 6493 1 view -0 + 5087 .cfi_startproc + 5088 @ args = 0, pretend = 0, frame = 0 + 5089 @ frame_needed = 0, uses_anonymous_args = 0 + 5090 @ link register save eliminated. +6494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5091 .loc 1 6494 3 view .LVU1600 +6494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5092 .loc 1 6494 14 is_stmt 0 view .LVU1601 + 5093 0000 90F83D00 ldrb r0, [r0, #61] @ zero_extendqisi2 + 5094 .LVL385: + ARM GAS /tmp/ccPLZXyC.s page 246 + + +6495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5095 .loc 1 6495 1 view .LVU1602 + 5096 0004 7047 bx lr + 5097 .cfi_endproc + 5098 .LFE227: + 5100 .section .text.HAL_TIM_OC_GetState,"ax",%progbits + 5101 .align 1 + 5102 .global HAL_TIM_OC_GetState + 5103 .syntax unified + 5104 .thumb + 5105 .thumb_func + 5106 .fpu fpv5-d16 + 5108 HAL_TIM_OC_GetState: + 5109 .LVL386: + 5110 .LFB228: +6503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; + 5111 .loc 1 6503 1 is_stmt 1 view -0 + 5112 .cfi_startproc + 5113 @ args = 0, pretend = 0, frame = 0 + 5114 @ frame_needed = 0, uses_anonymous_args = 0 + 5115 @ link register save eliminated. +6504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5116 .loc 1 6504 3 view .LVU1604 +6504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5117 .loc 1 6504 14 is_stmt 0 view .LVU1605 + 5118 0000 90F83D00 ldrb r0, [r0, #61] @ zero_extendqisi2 + 5119 .LVL387: +6505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5120 .loc 1 6505 1 view .LVU1606 + 5121 0004 7047 bx lr + 5122 .cfi_endproc + 5123 .LFE228: + 5125 .section .text.HAL_TIM_PWM_GetState,"ax",%progbits + 5126 .align 1 + 5127 .global HAL_TIM_PWM_GetState + 5128 .syntax unified + 5129 .thumb + 5130 .thumb_func + 5131 .fpu fpv5-d16 + 5133 HAL_TIM_PWM_GetState: + 5134 .LVL388: + 5135 .LFB229: +6513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; + 5136 .loc 1 6513 1 is_stmt 1 view -0 + 5137 .cfi_startproc + 5138 @ args = 0, pretend = 0, frame = 0 + 5139 @ frame_needed = 0, uses_anonymous_args = 0 + 5140 @ link register save eliminated. +6514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5141 .loc 1 6514 3 view .LVU1608 +6514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5142 .loc 1 6514 14 is_stmt 0 view .LVU1609 + 5143 0000 90F83D00 ldrb r0, [r0, #61] @ zero_extendqisi2 + 5144 .LVL389: +6515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5145 .loc 1 6515 1 view .LVU1610 + 5146 0004 7047 bx lr + ARM GAS /tmp/ccPLZXyC.s page 247 + + + 5147 .cfi_endproc + 5148 .LFE229: + 5150 .section .text.HAL_TIM_IC_GetState,"ax",%progbits + 5151 .align 1 + 5152 .global HAL_TIM_IC_GetState + 5153 .syntax unified + 5154 .thumb + 5155 .thumb_func + 5156 .fpu fpv5-d16 + 5158 HAL_TIM_IC_GetState: + 5159 .LVL390: + 5160 .LFB230: +6523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; + 5161 .loc 1 6523 1 is_stmt 1 view -0 + 5162 .cfi_startproc + 5163 @ args = 0, pretend = 0, frame = 0 + 5164 @ frame_needed = 0, uses_anonymous_args = 0 + 5165 @ link register save eliminated. +6524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5166 .loc 1 6524 3 view .LVU1612 +6524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5167 .loc 1 6524 14 is_stmt 0 view .LVU1613 + 5168 0000 90F83D00 ldrb r0, [r0, #61] @ zero_extendqisi2 + 5169 .LVL391: +6525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5170 .loc 1 6525 1 view .LVU1614 + 5171 0004 7047 bx lr + 5172 .cfi_endproc + 5173 .LFE230: + 5175 .section .text.HAL_TIM_OnePulse_GetState,"ax",%progbits + 5176 .align 1 + 5177 .global HAL_TIM_OnePulse_GetState + 5178 .syntax unified + 5179 .thumb + 5180 .thumb_func + 5181 .fpu fpv5-d16 + 5183 HAL_TIM_OnePulse_GetState: + 5184 .LVL392: + 5185 .LFB231: +6533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; + 5186 .loc 1 6533 1 is_stmt 1 view -0 + 5187 .cfi_startproc + 5188 @ args = 0, pretend = 0, frame = 0 + 5189 @ frame_needed = 0, uses_anonymous_args = 0 + 5190 @ link register save eliminated. +6534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5191 .loc 1 6534 3 view .LVU1616 +6534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5192 .loc 1 6534 14 is_stmt 0 view .LVU1617 + 5193 0000 90F83D00 ldrb r0, [r0, #61] @ zero_extendqisi2 + 5194 .LVL393: +6535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5195 .loc 1 6535 1 view .LVU1618 + 5196 0004 7047 bx lr + 5197 .cfi_endproc + 5198 .LFE231: + 5200 .section .text.HAL_TIM_Encoder_GetState,"ax",%progbits + ARM GAS /tmp/ccPLZXyC.s page 248 + + + 5201 .align 1 + 5202 .global HAL_TIM_Encoder_GetState + 5203 .syntax unified + 5204 .thumb + 5205 .thumb_func + 5206 .fpu fpv5-d16 + 5208 HAL_TIM_Encoder_GetState: + 5209 .LVL394: + 5210 .LFB232: +6543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->State; + 5211 .loc 1 6543 1 is_stmt 1 view -0 + 5212 .cfi_startproc + 5213 @ args = 0, pretend = 0, frame = 0 + 5214 @ frame_needed = 0, uses_anonymous_args = 0 + 5215 @ link register save eliminated. +6544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5216 .loc 1 6544 3 view .LVU1620 +6544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5217 .loc 1 6544 14 is_stmt 0 view .LVU1621 + 5218 0000 90F83D00 ldrb r0, [r0, #61] @ zero_extendqisi2 + 5219 .LVL395: +6545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5220 .loc 1 6545 1 view .LVU1622 + 5221 0004 7047 bx lr + 5222 .cfi_endproc + 5223 .LFE232: + 5225 .section .text.HAL_TIM_GetActiveChannel,"ax",%progbits + 5226 .align 1 + 5227 .global HAL_TIM_GetActiveChannel + 5228 .syntax unified + 5229 .thumb + 5230 .thumb_func + 5231 .fpu fpv5-d16 + 5233 HAL_TIM_GetActiveChannel: + 5234 .LVL396: + 5235 .LFB233: +6553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return htim->Channel; + 5236 .loc 1 6553 1 is_stmt 1 view -0 + 5237 .cfi_startproc + 5238 @ args = 0, pretend = 0, frame = 0 + 5239 @ frame_needed = 0, uses_anonymous_args = 0 + 5240 @ link register save eliminated. +6554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5241 .loc 1 6554 3 view .LVU1624 +6555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5242 .loc 1 6555 1 is_stmt 0 view .LVU1625 + 5243 0000 007F ldrb r0, [r0, #28] @ zero_extendqisi2 + 5244 .LVL397: +6555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5245 .loc 1 6555 1 view .LVU1626 + 5246 0002 7047 bx lr + 5247 .cfi_endproc + 5248 .LFE233: + 5250 .section .text.HAL_TIM_GetChannelState,"ax",%progbits + 5251 .align 1 + 5252 .global HAL_TIM_GetChannelState + 5253 .syntax unified + ARM GAS /tmp/ccPLZXyC.s page 249 + + + 5254 .thumb + 5255 .thumb_func + 5256 .fpu fpv5-d16 + 5258 HAL_TIM_GetChannelState: + 5259 .LVL398: + 5260 .LFB234: +6571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_state; + 5261 .loc 1 6571 1 is_stmt 1 view -0 + 5262 .cfi_startproc + 5263 @ args = 0, pretend = 0, frame = 0 + 5264 @ frame_needed = 0, uses_anonymous_args = 0 + 5265 @ link register save eliminated. +6572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5266 .loc 1 6572 3 view .LVU1628 +6575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5267 .loc 1 6575 3 view .LVU1629 +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5268 .loc 1 6577 3 view .LVU1630 +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5269 .loc 1 6577 19 is_stmt 0 view .LVU1631 + 5270 0000 19B9 cbnz r1, .L306 +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5271 .loc 1 6577 19 discriminator 1 view .LVU1632 + 5272 0002 90F83E00 ldrb r0, [r0, #62] @ zero_extendqisi2 + 5273 .LVL399: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5274 .loc 1 6577 19 discriminator 1 view .LVU1633 + 5275 0006 C0B2 uxtb r0, r0 + 5276 0008 7047 bx lr + 5277 .LVL400: + 5278 .L306: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5279 .loc 1 6577 19 discriminator 2 view .LVU1634 + 5280 000a 0429 cmp r1, #4 + 5281 000c 09D0 beq .L312 +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5282 .loc 1 6577 19 discriminator 5 view .LVU1635 + 5283 000e 0829 cmp r1, #8 + 5284 0010 0BD0 beq .L313 +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5285 .loc 1 6577 19 discriminator 8 view .LVU1636 + 5286 0012 0C29 cmp r1, #12 + 5287 0014 0DD0 beq .L314 +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5288 .loc 1 6577 19 discriminator 11 view .LVU1637 + 5289 0016 1029 cmp r1, #16 + 5290 0018 0FD0 beq .L315 +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5291 .loc 1 6577 19 discriminator 14 view .LVU1638 + 5292 001a 90F84300 ldrb r0, [r0, #67] @ zero_extendqisi2 + 5293 .LVL401: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5294 .loc 1 6577 19 discriminator 14 view .LVU1639 + 5295 001e C0B2 uxtb r0, r0 + 5296 .LVL402: +6579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5297 .loc 1 6579 3 is_stmt 1 discriminator 14 view .LVU1640 + ARM GAS /tmp/ccPLZXyC.s page 250 + + +6580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5298 .loc 1 6580 1 is_stmt 0 discriminator 14 view .LVU1641 + 5299 0020 7047 bx lr + 5300 .LVL403: + 5301 .L312: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5302 .loc 1 6577 19 discriminator 4 view .LVU1642 + 5303 0022 90F83F00 ldrb r0, [r0, #63] @ zero_extendqisi2 + 5304 .LVL404: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5305 .loc 1 6577 19 discriminator 4 view .LVU1643 + 5306 0026 C0B2 uxtb r0, r0 + 5307 0028 7047 bx lr + 5308 .LVL405: + 5309 .L313: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5310 .loc 1 6577 19 discriminator 7 view .LVU1644 + 5311 002a 90F84000 ldrb r0, [r0, #64] @ zero_extendqisi2 + 5312 .LVL406: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5313 .loc 1 6577 19 discriminator 7 view .LVU1645 + 5314 002e C0B2 uxtb r0, r0 + 5315 0030 7047 bx lr + 5316 .LVL407: + 5317 .L314: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5318 .loc 1 6577 19 discriminator 10 view .LVU1646 + 5319 0032 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 5320 .LVL408: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5321 .loc 1 6577 19 discriminator 10 view .LVU1647 + 5322 0036 C0B2 uxtb r0, r0 + 5323 0038 7047 bx lr + 5324 .LVL409: + 5325 .L315: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5326 .loc 1 6577 19 discriminator 13 view .LVU1648 + 5327 003a 90F84200 ldrb r0, [r0, #66] @ zero_extendqisi2 + 5328 .LVL410: +6577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5329 .loc 1 6577 19 discriminator 13 view .LVU1649 + 5330 003e C0B2 uxtb r0, r0 + 5331 0040 7047 bx lr + 5332 .cfi_endproc + 5333 .LFE234: + 5335 .section .text.HAL_TIM_DMABurstState,"ax",%progbits + 5336 .align 1 + 5337 .global HAL_TIM_DMABurstState + 5338 .syntax unified + 5339 .thumb + 5340 .thumb_func + 5341 .fpu fpv5-d16 + 5343 HAL_TIM_DMABurstState: + 5344 .LVL411: + 5345 .LFB235: +6588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 5346 .loc 1 6588 1 is_stmt 1 view -0 + ARM GAS /tmp/ccPLZXyC.s page 251 + + + 5347 .cfi_startproc + 5348 @ args = 0, pretend = 0, frame = 0 + 5349 @ frame_needed = 0, uses_anonymous_args = 0 + 5350 @ link register save eliminated. +6590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5351 .loc 1 6590 3 view .LVU1651 +6592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5352 .loc 1 6592 3 view .LVU1652 +6592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5353 .loc 1 6592 14 is_stmt 0 view .LVU1653 + 5354 0000 90F84800 ldrb r0, [r0, #72] @ zero_extendqisi2 + 5355 .LVL412: +6593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5356 .loc 1 6593 1 view .LVU1654 + 5357 0004 7047 bx lr + 5358 .cfi_endproc + 5359 .LFE235: + 5361 .section .text.TIM_Base_SetConfig,"ax",%progbits + 5362 .align 1 + 5363 .global TIM_Base_SetConfig + 5364 .syntax unified + 5365 .thumb + 5366 .thumb_func + 5367 .fpu fpv5-d16 + 5369 TIM_Base_SetConfig: + 5370 .LVL413: + 5371 .LFB245: +6931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr1; + 5372 .loc 1 6931 1 is_stmt 1 view -0 + 5373 .cfi_startproc + 5374 @ args = 0, pretend = 0, frame = 0 + 5375 @ frame_needed = 0, uses_anonymous_args = 0 +6931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr1; + 5376 .loc 1 6931 1 is_stmt 0 view .LVU1656 + 5377 0000 30B5 push {r4, r5, lr} + 5378 .LCFI48: + 5379 .cfi_def_cfa_offset 12 + 5380 .cfi_offset 4, -12 + 5381 .cfi_offset 5, -8 + 5382 .cfi_offset 14, -4 +6932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr1 = TIMx->CR1; + 5383 .loc 1 6932 3 is_stmt 1 view .LVU1657 +6933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5384 .loc 1 6933 3 view .LVU1658 +6933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5385 .loc 1 6933 10 is_stmt 0 view .LVU1659 + 5386 0002 0368 ldr r3, [r0] + 5387 .LVL414: +6936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5388 .loc 1 6936 3 is_stmt 1 view .LVU1660 +6936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5389 .loc 1 6936 7 is_stmt 0 view .LVU1661 + 5390 0004 3F4A ldr r2, .L327 + 5391 0006 9042 cmp r0, r2 + 5392 0008 14BF ite ne + 5393 000a 4FF0000E movne lr, #0 + 5394 000e 4FF0010E moveq lr, #1 + ARM GAS /tmp/ccPLZXyC.s page 252 + + + 5395 0012 B0F1804F cmp r0, #1073741824 + 5396 0016 14BF ite ne + 5397 0018 7246 movne r2, lr + 5398 001a 4EF00102 orreq r2, lr, #1 +6936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5399 .loc 1 6936 6 view .LVU1662 + 5400 001e AAB9 cbnz r2, .L318 +6936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5401 .loc 1 6936 7 discriminator 1 view .LVU1663 + 5402 0020 394C ldr r4, .L327+4 + 5403 0022 A042 cmp r0, r4 + 5404 0024 14BF ite ne + 5405 0026 0024 movne r4, #0 + 5406 0028 0124 moveq r4, #1 + 5407 002a 384D ldr r5, .L327+8 + 5408 002c A842 cmp r0, r5 + 5409 002e 0DD0 beq .L318 + 5410 0030 64B9 cbnz r4, .L318 +6936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5411 .loc 1 6936 7 discriminator 2 view .LVU1664 + 5412 0032 04F18044 add r4, r4, #1073741824 + 5413 0036 04F58234 add r4, r4, #66560 + 5414 003a A042 cmp r0, r4 + 5415 003c 14BF ite ne + 5416 003e 0024 movne r4, #0 + 5417 0040 0124 moveq r4, #1 + 5418 0042 05F50065 add r5, r5, #2048 + 5419 0046 A842 cmp r0, r5 + 5420 0048 00D0 beq .L318 + 5421 004a 1CB1 cbz r4, .L319 + 5422 .L318: +6939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr1 |= Structure->CounterMode; + 5423 .loc 1 6939 5 is_stmt 1 view .LVU1665 +6939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr1 |= Structure->CounterMode; + 5424 .loc 1 6939 12 is_stmt 0 view .LVU1666 + 5425 004c 23F07003 bic r3, r3, #112 + 5426 .LVL415: +6940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5427 .loc 1 6940 5 is_stmt 1 view .LVU1667 +6940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5428 .loc 1 6940 24 is_stmt 0 view .LVU1668 + 5429 0050 4C68 ldr r4, [r1, #4] +6940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5430 .loc 1 6940 12 view .LVU1669 + 5431 0052 2343 orrs r3, r3, r4 + 5432 .LVL416: + 5433 .L319: +6943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5434 .loc 1 6943 3 is_stmt 1 view .LVU1670 +6943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5435 .loc 1 6943 6 is_stmt 0 view .LVU1671 + 5436 0054 002A cmp r2, #0 + 5437 0056 33D1 bne .L321 +6943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5438 .loc 1 6943 7 discriminator 1 view .LVU1672 + 5439 0058 2B4A ldr r2, .L327+4 + 5440 005a 9042 cmp r0, r2 + ARM GAS /tmp/ccPLZXyC.s page 253 + + + 5441 005c 14BF ite ne + 5442 005e 0022 movne r2, #0 + 5443 0060 0122 moveq r2, #1 + 5444 0062 2A4C ldr r4, .L327+8 + 5445 0064 A042 cmp r0, r4 + 5446 0066 2BD0 beq .L321 + 5447 0068 52BB cbnz r2, .L321 +6943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5448 .loc 1 6943 7 discriminator 2 view .LVU1673 + 5449 006a 02F18042 add r2, r2, #1073741824 + 5450 006e 02F58232 add r2, r2, #66560 + 5451 0072 9042 cmp r0, r2 + 5452 0074 14BF ite ne + 5453 0076 0022 movne r2, #0 + 5454 0078 0122 moveq r2, #1 + 5455 007a 04F50064 add r4, r4, #2048 + 5456 007e A042 cmp r0, r4 + 5457 0080 1ED0 beq .L321 + 5458 0082 EAB9 cbnz r2, .L321 +6943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5459 .loc 1 6943 7 discriminator 3 view .LVU1674 + 5460 0084 224A ldr r2, .L327+12 + 5461 0086 9042 cmp r0, r2 + 5462 0088 14BF ite ne + 5463 008a 0022 movne r2, #0 + 5464 008c 0122 moveq r2, #1 + 5465 008e 04F59A34 add r4, r4, #78848 + 5466 0092 A042 cmp r0, r4 + 5467 0094 14D0 beq .L321 + 5468 0096 9AB9 cbnz r2, .L321 +6943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5469 .loc 1 6943 7 discriminator 4 view .LVU1675 + 5470 0098 1E4A ldr r2, .L327+16 + 5471 009a 9042 cmp r0, r2 + 5472 009c 14BF ite ne + 5473 009e 0022 movne r2, #0 + 5474 00a0 0122 moveq r2, #1 + 5475 00a2 04F50064 add r4, r4, #2048 + 5476 00a6 A042 cmp r0, r4 + 5477 00a8 0AD0 beq .L321 + 5478 00aa 4AB9 cbnz r2, .L321 +6943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5479 .loc 1 6943 7 discriminator 5 view .LVU1676 + 5480 00ac 1A4A ldr r2, .L327+20 + 5481 00ae 9042 cmp r0, r2 + 5482 00b0 14BF ite ne + 5483 00b2 0022 movne r2, #0 + 5484 00b4 0122 moveq r2, #1 + 5485 00b6 A4F59634 sub r4, r4, #76800 + 5486 00ba A042 cmp r0, r4 + 5487 00bc 00D0 beq .L321 + 5488 00be 22B1 cbz r2, .L322 + 5489 .L321: +6946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr1 |= (uint32_t)Structure->ClockDivision; + 5490 .loc 1 6946 5 is_stmt 1 view .LVU1677 +6946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr1 |= (uint32_t)Structure->ClockDivision; + 5491 .loc 1 6946 12 is_stmt 0 view .LVU1678 + ARM GAS /tmp/ccPLZXyC.s page 254 + + + 5492 00c0 23F4407C bic ip, r3, #768 + 5493 .LVL417: +6947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5494 .loc 1 6947 5 is_stmt 1 view .LVU1679 +6947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5495 .loc 1 6947 34 is_stmt 0 view .LVU1680 + 5496 00c4 CB68 ldr r3, [r1, #12] +6947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5497 .loc 1 6947 12 view .LVU1681 + 5498 00c6 43EA0C03 orr r3, r3, ip + 5499 .LVL418: + 5500 .L322: +6951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5501 .loc 1 6951 3 is_stmt 1 view .LVU1682 + 5502 00ca 23F08003 bic r3, r3, #128 + 5503 .LVL419: +6951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5504 .loc 1 6951 3 is_stmt 0 view .LVU1683 + 5505 00ce 4A69 ldr r2, [r1, #20] + 5506 00d0 1343 orrs r3, r3, r2 + 5507 .LVL420: +6953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5508 .loc 1 6953 3 is_stmt 1 view .LVU1684 +6953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5509 .loc 1 6953 13 is_stmt 0 view .LVU1685 + 5510 00d2 0360 str r3, [r0] +6956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5511 .loc 1 6956 3 is_stmt 1 view .LVU1686 +6956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5512 .loc 1 6956 34 is_stmt 0 view .LVU1687 + 5513 00d4 8A68 ldr r2, [r1, #8] +6956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5514 .loc 1 6956 13 view .LVU1688 + 5515 00d6 C262 str r2, [r0, #44] +6959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5516 .loc 1 6959 3 is_stmt 1 view .LVU1689 +6959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5517 .loc 1 6959 24 is_stmt 0 view .LVU1690 + 5518 00d8 0A68 ldr r2, [r1] +6959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5519 .loc 1 6959 13 view .LVU1691 + 5520 00da 8262 str r2, [r0, #40] +6961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5521 .loc 1 6961 3 is_stmt 1 view .LVU1692 +6961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5522 .loc 1 6961 7 is_stmt 0 view .LVU1693 + 5523 00dc 0F4A ldr r2, .L327+24 + 5524 00de 9042 cmp r0, r2 + 5525 00e0 14BF ite ne + 5526 00e2 7346 movne r3, lr + 5527 00e4 4EF00103 orreq r3, lr, #1 + 5528 .LVL421: +6961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5529 .loc 1 6961 6 view .LVU1694 + 5530 00e8 0BB1 cbz r3, .L324 +6964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5531 .loc 1 6964 5 is_stmt 1 view .LVU1695 + ARM GAS /tmp/ccPLZXyC.s page 255 + + +6964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5532 .loc 1 6964 26 is_stmt 0 view .LVU1696 + 5533 00ea 0B69 ldr r3, [r1, #16] +6964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5534 .loc 1 6964 15 view .LVU1697 + 5535 00ec 0363 str r3, [r0, #48] + 5536 .L324: +6969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5537 .loc 1 6969 3 is_stmt 1 view .LVU1698 +6969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5538 .loc 1 6969 13 is_stmt 0 view .LVU1699 + 5539 00ee 0123 movs r3, #1 + 5540 00f0 4361 str r3, [r0, #20] +6972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5541 .loc 1 6972 3 is_stmt 1 view .LVU1700 +6972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5542 .loc 1 6972 7 is_stmt 0 view .LVU1701 + 5543 00f2 0369 ldr r3, [r0, #16] +6972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5544 .loc 1 6972 6 view .LVU1702 + 5545 00f4 13F0010F tst r3, #1 + 5546 00f8 03D0 beq .L317 +6975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5547 .loc 1 6975 5 is_stmt 1 view .LVU1703 + 5548 00fa 0369 ldr r3, [r0, #16] + 5549 00fc 23F00103 bic r3, r3, #1 + 5550 0100 0361 str r3, [r0, #16] + 5551 .L317: +6977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5552 .loc 1 6977 1 is_stmt 0 view .LVU1704 + 5553 0102 30BD pop {r4, r5, pc} + 5554 .L328: + 5555 .align 2 + 5556 .L327: + 5557 0104 00000140 .word 1073807360 + 5558 0108 00080040 .word 1073743872 + 5559 010c 00040040 .word 1073742848 + 5560 0110 00440140 .word 1073824768 + 5561 0114 00180040 .word 1073747968 + 5562 0118 00200040 .word 1073750016 + 5563 011c 00040140 .word 1073808384 + 5564 .cfi_endproc + 5565 .LFE245: + 5567 .section .text.HAL_TIM_Base_Init,"ax",%progbits + 5568 .align 1 + 5569 .global HAL_TIM_Base_Init + 5570 .syntax unified + 5571 .thumb + 5572 .thumb_func + 5573 .fpu fpv5-d16 + 5575 HAL_TIM_Base_Init: + 5576 .LVL422: + 5577 .LFB141: + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 5578 .loc 1 270 1 is_stmt 1 view -0 + 5579 .cfi_startproc + 5580 @ args = 0, pretend = 0, frame = 0 + ARM GAS /tmp/ccPLZXyC.s page 256 + + + 5581 @ frame_needed = 0, uses_anonymous_args = 0 + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5582 .loc 1 272 3 view .LVU1706 + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5583 .loc 1 272 6 is_stmt 0 view .LVU1707 + 5584 0000 60B3 cbz r0, .L332 + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 5585 .loc 1 270 1 view .LVU1708 + 5586 0002 10B5 push {r4, lr} + 5587 .LCFI49: + 5588 .cfi_def_cfa_offset 8 + 5589 .cfi_offset 4, -8 + 5590 .cfi_offset 14, -4 + 5591 0004 0446 mov r4, r0 + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 5592 .loc 1 278 3 is_stmt 1 view .LVU1709 + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 5593 .loc 1 279 3 view .LVU1710 + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 5594 .loc 1 280 3 view .LVU1711 + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + 5595 .loc 1 281 3 view .LVU1712 + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5596 .loc 1 282 3 view .LVU1713 + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5597 .loc 1 284 3 view .LVU1714 + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5598 .loc 1 284 11 is_stmt 0 view .LVU1715 + 5599 0006 90F83D30 ldrb r3, [r0, #61] @ zero_extendqisi2 + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5600 .loc 1 284 6 view .LVU1716 + 5601 000a 13B3 cbz r3, .L337 + 5602 .LVL423: + 5603 .L331: + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5604 .loc 1 306 3 is_stmt 1 view .LVU1717 + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5605 .loc 1 306 15 is_stmt 0 view .LVU1718 + 5606 000c 0223 movs r3, #2 + 5607 000e 84F83D30 strb r3, [r4, #61] + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5608 .loc 1 309 3 is_stmt 1 view .LVU1719 + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5609 .loc 1 309 38 is_stmt 0 view .LVU1720 + 5610 0012 2146 mov r1, r4 + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5611 .loc 1 309 3 view .LVU1721 + 5612 0014 51F8040B ldr r0, [r1], #4 + 5613 0018 FFF7FEFF bl TIM_Base_SetConfig + 5614 .LVL424: + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5615 .loc 1 312 3 is_stmt 1 view .LVU1722 + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5616 .loc 1 312 23 is_stmt 0 view .LVU1723 + 5617 001c 0123 movs r3, #1 + 5618 001e 84F84830 strb r3, [r4, #72] + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + ARM GAS /tmp/ccPLZXyC.s page 257 + + + 5619 .loc 1 315 3 is_stmt 1 view .LVU1724 + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5620 .loc 1 315 3 view .LVU1725 + 5621 0022 84F83E30 strb r3, [r4, #62] + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5622 .loc 1 315 3 view .LVU1726 + 5623 0026 84F83F30 strb r3, [r4, #63] + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5624 .loc 1 315 3 view .LVU1727 + 5625 002a 84F84030 strb r3, [r4, #64] + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5626 .loc 1 315 3 view .LVU1728 + 5627 002e 84F84130 strb r3, [r4, #65] + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5628 .loc 1 315 3 view .LVU1729 + 5629 0032 84F84230 strb r3, [r4, #66] + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5630 .loc 1 315 3 view .LVU1730 + 5631 0036 84F84330 strb r3, [r4, #67] + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5632 .loc 1 315 3 view .LVU1731 + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5633 .loc 1 316 3 view .LVU1732 + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5634 .loc 1 316 3 view .LVU1733 + 5635 003a 84F84430 strb r3, [r4, #68] + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5636 .loc 1 316 3 view .LVU1734 + 5637 003e 84F84530 strb r3, [r4, #69] + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5638 .loc 1 316 3 view .LVU1735 + 5639 0042 84F84630 strb r3, [r4, #70] + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5640 .loc 1 316 3 view .LVU1736 + 5641 0046 84F84730 strb r3, [r4, #71] + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5642 .loc 1 316 3 view .LVU1737 + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5643 .loc 1 319 3 view .LVU1738 + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5644 .loc 1 319 15 is_stmt 0 view .LVU1739 + 5645 004a 84F83D30 strb r3, [r4, #61] + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5646 .loc 1 321 3 is_stmt 1 view .LVU1740 + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5647 .loc 1 321 10 is_stmt 0 view .LVU1741 + 5648 004e 0020 movs r0, #0 + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5649 .loc 1 322 1 view .LVU1742 + 5650 0050 10BD pop {r4, pc} + 5651 .LVL425: + 5652 .L337: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5653 .loc 1 287 5 is_stmt 1 view .LVU1743 + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5654 .loc 1 287 16 is_stmt 0 view .LVU1744 + 5655 0052 80F83C30 strb r3, [r0, #60] + ARM GAS /tmp/ccPLZXyC.s page 258 + + + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5656 .loc 1 301 5 is_stmt 1 view .LVU1745 + 5657 0056 FFF7FEFF bl HAL_TIM_Base_MspInit + 5658 .LVL426: + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5659 .loc 1 301 5 is_stmt 0 view .LVU1746 + 5660 005a D7E7 b .L331 + 5661 .LVL427: + 5662 .L332: + 5663 .LCFI50: + 5664 .cfi_def_cfa_offset 0 + 5665 .cfi_restore 4 + 5666 .cfi_restore 14 + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5667 .loc 1 274 12 view .LVU1747 + 5668 005c 0120 movs r0, #1 + 5669 .LVL428: + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5670 .loc 1 322 1 view .LVU1748 + 5671 005e 7047 bx lr + 5672 .cfi_endproc + 5673 .LFE141: + 5675 .section .text.HAL_TIM_OC_Init,"ax",%progbits + 5676 .align 1 + 5677 .global HAL_TIM_OC_Init + 5678 .syntax unified + 5679 .thumb + 5680 .thumb_func + 5681 .fpu fpv5-d16 + 5683 HAL_TIM_OC_Init: + 5684 .LVL429: + 5685 .LFB151: + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 5686 .loc 1 654 1 is_stmt 1 view -0 + 5687 .cfi_startproc + 5688 @ args = 0, pretend = 0, frame = 0 + 5689 @ frame_needed = 0, uses_anonymous_args = 0 + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5690 .loc 1 656 3 view .LVU1750 + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5691 .loc 1 656 6 is_stmt 0 view .LVU1751 + 5692 0000 60B3 cbz r0, .L341 + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 5693 .loc 1 654 1 view .LVU1752 + 5694 0002 10B5 push {r4, lr} + 5695 .LCFI51: + 5696 .cfi_def_cfa_offset 8 + 5697 .cfi_offset 4, -8 + 5698 .cfi_offset 14, -4 + 5699 0004 0446 mov r4, r0 + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 5700 .loc 1 662 3 is_stmt 1 view .LVU1753 + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 5701 .loc 1 663 3 view .LVU1754 + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 5702 .loc 1 664 3 view .LVU1755 + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + ARM GAS /tmp/ccPLZXyC.s page 259 + + + 5703 .loc 1 665 3 view .LVU1756 + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5704 .loc 1 666 3 view .LVU1757 + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5705 .loc 1 668 3 view .LVU1758 + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5706 .loc 1 668 11 is_stmt 0 view .LVU1759 + 5707 0006 90F83D30 ldrb r3, [r0, #61] @ zero_extendqisi2 + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5708 .loc 1 668 6 view .LVU1760 + 5709 000a 13B3 cbz r3, .L346 + 5710 .LVL430: + 5711 .L340: + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5712 .loc 1 690 3 is_stmt 1 view .LVU1761 + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5713 .loc 1 690 15 is_stmt 0 view .LVU1762 + 5714 000c 0223 movs r3, #2 + 5715 000e 84F83D30 strb r3, [r4, #61] + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5716 .loc 1 693 3 is_stmt 1 view .LVU1763 + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5717 .loc 1 693 39 is_stmt 0 view .LVU1764 + 5718 0012 2146 mov r1, r4 + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5719 .loc 1 693 3 view .LVU1765 + 5720 0014 51F8040B ldr r0, [r1], #4 + 5721 0018 FFF7FEFF bl TIM_Base_SetConfig + 5722 .LVL431: + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5723 .loc 1 696 3 is_stmt 1 view .LVU1766 + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5724 .loc 1 696 23 is_stmt 0 view .LVU1767 + 5725 001c 0123 movs r3, #1 + 5726 001e 84F84830 strb r3, [r4, #72] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5727 .loc 1 699 3 is_stmt 1 view .LVU1768 + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5728 .loc 1 699 3 view .LVU1769 + 5729 0022 84F83E30 strb r3, [r4, #62] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5730 .loc 1 699 3 view .LVU1770 + 5731 0026 84F83F30 strb r3, [r4, #63] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5732 .loc 1 699 3 view .LVU1771 + 5733 002a 84F84030 strb r3, [r4, #64] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5734 .loc 1 699 3 view .LVU1772 + 5735 002e 84F84130 strb r3, [r4, #65] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5736 .loc 1 699 3 view .LVU1773 + 5737 0032 84F84230 strb r3, [r4, #66] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5738 .loc 1 699 3 view .LVU1774 + 5739 0036 84F84330 strb r3, [r4, #67] + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5740 .loc 1 699 3 view .LVU1775 + ARM GAS /tmp/ccPLZXyC.s page 260 + + + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5741 .loc 1 700 3 view .LVU1776 + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5742 .loc 1 700 3 view .LVU1777 + 5743 003a 84F84430 strb r3, [r4, #68] + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5744 .loc 1 700 3 view .LVU1778 + 5745 003e 84F84530 strb r3, [r4, #69] + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5746 .loc 1 700 3 view .LVU1779 + 5747 0042 84F84630 strb r3, [r4, #70] + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5748 .loc 1 700 3 view .LVU1780 + 5749 0046 84F84730 strb r3, [r4, #71] + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5750 .loc 1 700 3 view .LVU1781 + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5751 .loc 1 703 3 view .LVU1782 + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5752 .loc 1 703 15 is_stmt 0 view .LVU1783 + 5753 004a 84F83D30 strb r3, [r4, #61] + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5754 .loc 1 705 3 is_stmt 1 view .LVU1784 + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5755 .loc 1 705 10 is_stmt 0 view .LVU1785 + 5756 004e 0020 movs r0, #0 + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5757 .loc 1 706 1 view .LVU1786 + 5758 0050 10BD pop {r4, pc} + 5759 .LVL432: + 5760 .L346: + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5761 .loc 1 671 5 is_stmt 1 view .LVU1787 + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5762 .loc 1 671 16 is_stmt 0 view .LVU1788 + 5763 0052 80F83C30 strb r3, [r0, #60] + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5764 .loc 1 685 5 is_stmt 1 view .LVU1789 + 5765 0056 FFF7FEFF bl HAL_TIM_OC_MspInit + 5766 .LVL433: + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5767 .loc 1 685 5 is_stmt 0 view .LVU1790 + 5768 005a D7E7 b .L340 + 5769 .LVL434: + 5770 .L341: + 5771 .LCFI52: + 5772 .cfi_def_cfa_offset 0 + 5773 .cfi_restore 4 + 5774 .cfi_restore 14 + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5775 .loc 1 658 12 view .LVU1791 + 5776 005c 0120 movs r0, #1 + 5777 .LVL435: + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5778 .loc 1 706 1 view .LVU1792 + 5779 005e 7047 bx lr + 5780 .cfi_endproc + ARM GAS /tmp/ccPLZXyC.s page 261 + + + 5781 .LFE151: + 5783 .section .text.HAL_TIM_PWM_Init,"ax",%progbits + 5784 .align 1 + 5785 .global HAL_TIM_PWM_Init + 5786 .syntax unified + 5787 .thumb + 5788 .thumb_func + 5789 .fpu fpv5-d16 + 5791 HAL_TIM_PWM_Init: + 5792 .LVL436: + 5793 .LFB161: +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 5794 .loc 1 1323 1 is_stmt 1 view -0 + 5795 .cfi_startproc + 5796 @ args = 0, pretend = 0, frame = 0 + 5797 @ frame_needed = 0, uses_anonymous_args = 0 +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5798 .loc 1 1325 3 view .LVU1794 +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5799 .loc 1 1325 6 is_stmt 0 view .LVU1795 + 5800 0000 60B3 cbz r0, .L350 +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 5801 .loc 1 1323 1 view .LVU1796 + 5802 0002 10B5 push {r4, lr} + 5803 .LCFI53: + 5804 .cfi_def_cfa_offset 8 + 5805 .cfi_offset 4, -8 + 5806 .cfi_offset 14, -4 + 5807 0004 0446 mov r4, r0 +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 5808 .loc 1 1331 3 is_stmt 1 view .LVU1797 +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 5809 .loc 1 1332 3 view .LVU1798 +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 5810 .loc 1 1333 3 view .LVU1799 +1334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + 5811 .loc 1 1334 3 view .LVU1800 +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5812 .loc 1 1335 3 view .LVU1801 +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5813 .loc 1 1337 3 view .LVU1802 +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5814 .loc 1 1337 11 is_stmt 0 view .LVU1803 + 5815 0006 90F83D30 ldrb r3, [r0, #61] @ zero_extendqisi2 +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5816 .loc 1 1337 6 view .LVU1804 + 5817 000a 13B3 cbz r3, .L355 + 5818 .LVL437: + 5819 .L349: +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5820 .loc 1 1359 3 is_stmt 1 view .LVU1805 +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5821 .loc 1 1359 15 is_stmt 0 view .LVU1806 + 5822 000c 0223 movs r3, #2 + 5823 000e 84F83D30 strb r3, [r4, #61] +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5824 .loc 1 1362 3 is_stmt 1 view .LVU1807 + ARM GAS /tmp/ccPLZXyC.s page 262 + + +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5825 .loc 1 1362 38 is_stmt 0 view .LVU1808 + 5826 0012 2146 mov r1, r4 +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5827 .loc 1 1362 3 view .LVU1809 + 5828 0014 51F8040B ldr r0, [r1], #4 + 5829 0018 FFF7FEFF bl TIM_Base_SetConfig + 5830 .LVL438: +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5831 .loc 1 1365 3 is_stmt 1 view .LVU1810 +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5832 .loc 1 1365 23 is_stmt 0 view .LVU1811 + 5833 001c 0123 movs r3, #1 + 5834 001e 84F84830 strb r3, [r4, #72] +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5835 .loc 1 1368 3 is_stmt 1 view .LVU1812 +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5836 .loc 1 1368 3 view .LVU1813 + 5837 0022 84F83E30 strb r3, [r4, #62] +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5838 .loc 1 1368 3 view .LVU1814 + 5839 0026 84F83F30 strb r3, [r4, #63] +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5840 .loc 1 1368 3 view .LVU1815 + 5841 002a 84F84030 strb r3, [r4, #64] +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5842 .loc 1 1368 3 view .LVU1816 + 5843 002e 84F84130 strb r3, [r4, #65] +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5844 .loc 1 1368 3 view .LVU1817 + 5845 0032 84F84230 strb r3, [r4, #66] +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5846 .loc 1 1368 3 view .LVU1818 + 5847 0036 84F84330 strb r3, [r4, #67] +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5848 .loc 1 1368 3 view .LVU1819 +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5849 .loc 1 1369 3 view .LVU1820 +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5850 .loc 1 1369 3 view .LVU1821 + 5851 003a 84F84430 strb r3, [r4, #68] +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5852 .loc 1 1369 3 view .LVU1822 + 5853 003e 84F84530 strb r3, [r4, #69] +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5854 .loc 1 1369 3 view .LVU1823 + 5855 0042 84F84630 strb r3, [r4, #70] +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5856 .loc 1 1369 3 view .LVU1824 + 5857 0046 84F84730 strb r3, [r4, #71] +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5858 .loc 1 1369 3 view .LVU1825 +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5859 .loc 1 1372 3 view .LVU1826 +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5860 .loc 1 1372 15 is_stmt 0 view .LVU1827 + 5861 004a 84F83D30 strb r3, [r4, #61] + ARM GAS /tmp/ccPLZXyC.s page 263 + + +1374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5862 .loc 1 1374 3 is_stmt 1 view .LVU1828 +1374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5863 .loc 1 1374 10 is_stmt 0 view .LVU1829 + 5864 004e 0020 movs r0, #0 +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5865 .loc 1 1375 1 view .LVU1830 + 5866 0050 10BD pop {r4, pc} + 5867 .LVL439: + 5868 .L355: +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5869 .loc 1 1340 5 is_stmt 1 view .LVU1831 +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5870 .loc 1 1340 16 is_stmt 0 view .LVU1832 + 5871 0052 80F83C30 strb r3, [r0, #60] +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5872 .loc 1 1354 5 is_stmt 1 view .LVU1833 + 5873 0056 FFF7FEFF bl HAL_TIM_PWM_MspInit + 5874 .LVL440: +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5875 .loc 1 1354 5 is_stmt 0 view .LVU1834 + 5876 005a D7E7 b .L349 + 5877 .LVL441: + 5878 .L350: + 5879 .LCFI54: + 5880 .cfi_def_cfa_offset 0 + 5881 .cfi_restore 4 + 5882 .cfi_restore 14 +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5883 .loc 1 1327 12 view .LVU1835 + 5884 005c 0120 movs r0, #1 + 5885 .LVL442: +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5886 .loc 1 1375 1 view .LVU1836 + 5887 005e 7047 bx lr + 5888 .cfi_endproc + 5889 .LFE161: + 5891 .section .text.HAL_TIM_IC_Init,"ax",%progbits + 5892 .align 1 + 5893 .global HAL_TIM_IC_Init + 5894 .syntax unified + 5895 .thumb + 5896 .thumb_func + 5897 .fpu fpv5-d16 + 5899 HAL_TIM_IC_Init: + 5900 .LVL443: + 5901 .LFB171: +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 5902 .loc 1 1991 1 is_stmt 1 view -0 + 5903 .cfi_startproc + 5904 @ args = 0, pretend = 0, frame = 0 + 5905 @ frame_needed = 0, uses_anonymous_args = 0 +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5906 .loc 1 1993 3 view .LVU1838 +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5907 .loc 1 1993 6 is_stmt 0 view .LVU1839 + 5908 0000 60B3 cbz r0, .L359 + ARM GAS /tmp/ccPLZXyC.s page 264 + + +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 5909 .loc 1 1991 1 view .LVU1840 + 5910 0002 10B5 push {r4, lr} + 5911 .LCFI55: + 5912 .cfi_def_cfa_offset 8 + 5913 .cfi_offset 4, -8 + 5914 .cfi_offset 14, -4 + 5915 0004 0446 mov r4, r0 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 5916 .loc 1 1999 3 is_stmt 1 view .LVU1841 +2000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 5917 .loc 1 2000 3 view .LVU1842 +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 5918 .loc 1 2001 3 view .LVU1843 +2002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + 5919 .loc 1 2002 3 view .LVU1844 +2003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5920 .loc 1 2003 3 view .LVU1845 +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5921 .loc 1 2005 3 view .LVU1846 +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5922 .loc 1 2005 11 is_stmt 0 view .LVU1847 + 5923 0006 90F83D30 ldrb r3, [r0, #61] @ zero_extendqisi2 +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 5924 .loc 1 2005 6 view .LVU1848 + 5925 000a 13B3 cbz r3, .L364 + 5926 .LVL444: + 5927 .L358: +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5928 .loc 1 2027 3 is_stmt 1 view .LVU1849 +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5929 .loc 1 2027 15 is_stmt 0 view .LVU1850 + 5930 000c 0223 movs r3, #2 + 5931 000e 84F83D30 strb r3, [r4, #61] +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5932 .loc 1 2030 3 is_stmt 1 view .LVU1851 +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5933 .loc 1 2030 38 is_stmt 0 view .LVU1852 + 5934 0012 2146 mov r1, r4 +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5935 .loc 1 2030 3 view .LVU1853 + 5936 0014 51F8040B ldr r0, [r1], #4 + 5937 0018 FFF7FEFF bl TIM_Base_SetConfig + 5938 .LVL445: +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5939 .loc 1 2033 3 is_stmt 1 view .LVU1854 +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5940 .loc 1 2033 23 is_stmt 0 view .LVU1855 + 5941 001c 0123 movs r3, #1 + 5942 001e 84F84830 strb r3, [r4, #72] +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5943 .loc 1 2036 3 is_stmt 1 view .LVU1856 +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5944 .loc 1 2036 3 view .LVU1857 + 5945 0022 84F83E30 strb r3, [r4, #62] +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5946 .loc 1 2036 3 view .LVU1858 + ARM GAS /tmp/ccPLZXyC.s page 265 + + + 5947 0026 84F83F30 strb r3, [r4, #63] +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5948 .loc 1 2036 3 view .LVU1859 + 5949 002a 84F84030 strb r3, [r4, #64] +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5950 .loc 1 2036 3 view .LVU1860 + 5951 002e 84F84130 strb r3, [r4, #65] +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5952 .loc 1 2036 3 view .LVU1861 + 5953 0032 84F84230 strb r3, [r4, #66] +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5954 .loc 1 2036 3 view .LVU1862 + 5955 0036 84F84330 strb r3, [r4, #67] +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 5956 .loc 1 2036 3 view .LVU1863 +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5957 .loc 1 2037 3 view .LVU1864 +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5958 .loc 1 2037 3 view .LVU1865 + 5959 003a 84F84430 strb r3, [r4, #68] +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5960 .loc 1 2037 3 view .LVU1866 + 5961 003e 84F84530 strb r3, [r4, #69] +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5962 .loc 1 2037 3 view .LVU1867 + 5963 0042 84F84630 strb r3, [r4, #70] +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5964 .loc 1 2037 3 view .LVU1868 + 5965 0046 84F84730 strb r3, [r4, #71] +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5966 .loc 1 2037 3 view .LVU1869 +2040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5967 .loc 1 2040 3 view .LVU1870 +2040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5968 .loc 1 2040 15 is_stmt 0 view .LVU1871 + 5969 004a 84F83D30 strb r3, [r4, #61] +2042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5970 .loc 1 2042 3 is_stmt 1 view .LVU1872 +2042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5971 .loc 1 2042 10 is_stmt 0 view .LVU1873 + 5972 004e 0020 movs r0, #0 +2043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5973 .loc 1 2043 1 view .LVU1874 + 5974 0050 10BD pop {r4, pc} + 5975 .LVL446: + 5976 .L364: +2008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5977 .loc 1 2008 5 is_stmt 1 view .LVU1875 +2008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5978 .loc 1 2008 16 is_stmt 0 view .LVU1876 + 5979 0052 80F83C30 strb r3, [r0, #60] +2022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5980 .loc 1 2022 5 is_stmt 1 view .LVU1877 + 5981 0056 FFF7FEFF bl HAL_TIM_IC_MspInit + 5982 .LVL447: +2022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5983 .loc 1 2022 5 is_stmt 0 view .LVU1878 + ARM GAS /tmp/ccPLZXyC.s page 266 + + + 5984 005a D7E7 b .L358 + 5985 .LVL448: + 5986 .L359: + 5987 .LCFI56: + 5988 .cfi_def_cfa_offset 0 + 5989 .cfi_restore 4 + 5990 .cfi_restore 14 +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 5991 .loc 1 1995 12 view .LVU1879 + 5992 005c 0120 movs r0, #1 + 5993 .LVL449: +2043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 5994 .loc 1 2043 1 view .LVU1880 + 5995 005e 7047 bx lr + 5996 .cfi_endproc + 5997 .LFE171: + 5999 .section .text.HAL_TIM_OnePulse_Init,"ax",%progbits + 6000 .align 1 + 6001 .global HAL_TIM_OnePulse_Init + 6002 .syntax unified + 6003 .thumb + 6004 .thumb_func + 6005 .fpu fpv5-d16 + 6007 HAL_TIM_OnePulse_Init: + 6008 .LVL450: + 6009 .LFB181: +2640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 6010 .loc 1 2640 1 is_stmt 1 view -0 + 6011 .cfi_startproc + 6012 @ args = 0, pretend = 0, frame = 0 + 6013 @ frame_needed = 0, uses_anonymous_args = 0 +2642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6014 .loc 1 2642 3 view .LVU1882 +2642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6015 .loc 1 2642 6 is_stmt 0 view .LVU1883 + 6016 0000 50B3 cbz r0, .L368 +2640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the TIM handle allocation */ + 6017 .loc 1 2640 1 view .LVU1884 + 6018 0002 38B5 push {r3, r4, r5, lr} + 6019 .LCFI57: + 6020 .cfi_def_cfa_offset 16 + 6021 .cfi_offset 3, -16 + 6022 .cfi_offset 4, -12 + 6023 .cfi_offset 5, -8 + 6024 .cfi_offset 14, -4 + 6025 0004 0D46 mov r5, r1 + 6026 0006 0446 mov r4, r0 +2648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 6027 .loc 1 2648 3 is_stmt 1 view .LVU1885 +2649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 6028 .loc 1 2649 3 view .LVU1886 +2650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OPM_MODE(OnePulseMode)); + 6029 .loc 1 2650 3 view .LVU1887 +2651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 6030 .loc 1 2651 3 view .LVU1888 +2652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + 6031 .loc 1 2652 3 view .LVU1889 + ARM GAS /tmp/ccPLZXyC.s page 267 + + +2653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6032 .loc 1 2653 3 view .LVU1890 +2655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6033 .loc 1 2655 3 view .LVU1891 +2655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6034 .loc 1 2655 11 is_stmt 0 view .LVU1892 + 6035 0008 90F83D30 ldrb r3, [r0, #61] @ zero_extendqisi2 +2655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6036 .loc 1 2655 6 view .LVU1893 + 6037 000c FBB1 cbz r3, .L373 + 6038 .LVL451: + 6039 .L367: +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6040 .loc 1 2677 3 is_stmt 1 view .LVU1894 +2677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6041 .loc 1 2677 15 is_stmt 0 view .LVU1895 + 6042 000e 0223 movs r3, #2 + 6043 0010 84F83D30 strb r3, [r4, #61] +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6044 .loc 1 2680 3 is_stmt 1 view .LVU1896 +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6045 .loc 1 2680 38 is_stmt 0 view .LVU1897 + 6046 0014 2146 mov r1, r4 +2680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6047 .loc 1 2680 3 view .LVU1898 + 6048 0016 51F8040B ldr r0, [r1], #4 + 6049 001a FFF7FEFF bl TIM_Base_SetConfig + 6050 .LVL452: +2683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6051 .loc 1 2683 3 is_stmt 1 view .LVU1899 +2683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6052 .loc 1 2683 7 is_stmt 0 view .LVU1900 + 6053 001e 2268 ldr r2, [r4] +2683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6054 .loc 1 2683 23 view .LVU1901 + 6055 0020 1368 ldr r3, [r2] + 6056 0022 23F00803 bic r3, r3, #8 + 6057 0026 1360 str r3, [r2] +2686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6058 .loc 1 2686 3 is_stmt 1 view .LVU1902 +2686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6059 .loc 1 2686 7 is_stmt 0 view .LVU1903 + 6060 0028 2368 ldr r3, [r4] +2686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6061 .loc 1 2686 23 view .LVU1904 + 6062 002a 1968 ldr r1, [r3] + 6063 002c 0D43 orrs r5, r5, r1 + 6064 .LVL453: +2686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6065 .loc 1 2686 23 view .LVU1905 + 6066 002e 1D60 str r5, [r3] +2689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6067 .loc 1 2689 3 is_stmt 1 view .LVU1906 +2689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6068 .loc 1 2689 23 is_stmt 0 view .LVU1907 + 6069 0030 0123 movs r3, #1 + 6070 0032 84F84830 strb r3, [r4, #72] + ARM GAS /tmp/ccPLZXyC.s page 268 + + +2692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 6071 .loc 1 2692 3 is_stmt 1 view .LVU1908 + 6072 0036 84F83E30 strb r3, [r4, #62] +2693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 6073 .loc 1 2693 3 view .LVU1909 + 6074 003a 84F83F30 strb r3, [r4, #63] +2694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 6075 .loc 1 2694 3 view .LVU1910 + 6076 003e 84F84430 strb r3, [r4, #68] +2695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6077 .loc 1 2695 3 view .LVU1911 + 6078 0042 84F84530 strb r3, [r4, #69] +2698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6079 .loc 1 2698 3 view .LVU1912 +2698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6080 .loc 1 2698 15 is_stmt 0 view .LVU1913 + 6081 0046 84F83D30 strb r3, [r4, #61] +2700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6082 .loc 1 2700 3 is_stmt 1 view .LVU1914 +2700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6083 .loc 1 2700 10 is_stmt 0 view .LVU1915 + 6084 004a 0020 movs r0, #0 +2701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6085 .loc 1 2701 1 view .LVU1916 + 6086 004c 38BD pop {r3, r4, r5, pc} + 6087 .LVL454: + 6088 .L373: +2658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6089 .loc 1 2658 5 is_stmt 1 view .LVU1917 +2658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6090 .loc 1 2658 16 is_stmt 0 view .LVU1918 + 6091 004e 80F83C30 strb r3, [r0, #60] +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 6092 .loc 1 2672 5 is_stmt 1 view .LVU1919 + 6093 0052 FFF7FEFF bl HAL_TIM_OnePulse_MspInit + 6094 .LVL455: +2672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 6095 .loc 1 2672 5 is_stmt 0 view .LVU1920 + 6096 0056 DAE7 b .L367 + 6097 .LVL456: + 6098 .L368: + 6099 .LCFI58: + 6100 .cfi_def_cfa_offset 0 + 6101 .cfi_restore 3 + 6102 .cfi_restore 4 + 6103 .cfi_restore 5 + 6104 .cfi_restore 14 +2644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6105 .loc 1 2644 12 view .LVU1921 + 6106 0058 0120 movs r0, #1 + 6107 .LVL457: +2701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6108 .loc 1 2701 1 view .LVU1922 + 6109 005a 7047 bx lr + 6110 .cfi_endproc + 6111 .LFE181: + 6113 .section .text.HAL_TIM_Encoder_Init,"ax",%progbits + ARM GAS /tmp/ccPLZXyC.s page 269 + + + 6114 .align 1 + 6115 .global HAL_TIM_Encoder_Init + 6116 .syntax unified + 6117 .thumb + 6118 .thumb_func + 6119 .fpu fpv5-d16 + 6121 HAL_TIM_Encoder_Init: + 6122 .LVL458: + 6123 .LFB189: +3031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 6124 .loc 1 3031 1 is_stmt 1 view -0 + 6125 .cfi_startproc + 6126 @ args = 0, pretend = 0, frame = 0 + 6127 @ frame_needed = 0, uses_anonymous_args = 0 +3032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr1; + 6128 .loc 1 3032 3 view .LVU1924 +3033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 6129 .loc 1 3033 3 view .LVU1925 +3034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6130 .loc 1 3034 3 view .LVU1926 +3037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6131 .loc 1 3037 3 view .LVU1927 +3037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6132 .loc 1 3037 6 is_stmt 0 view .LVU1928 + 6133 0000 0028 cmp r0, #0 + 6134 0002 4FD0 beq .L377 +3031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 6135 .loc 1 3031 1 view .LVU1929 + 6136 0004 F8B5 push {r3, r4, r5, r6, r7, lr} + 6137 .LCFI59: + 6138 .cfi_def_cfa_offset 24 + 6139 .cfi_offset 3, -24 + 6140 .cfi_offset 4, -20 + 6141 .cfi_offset 5, -16 + 6142 .cfi_offset 6, -12 + 6143 .cfi_offset 7, -8 + 6144 .cfi_offset 14, -4 + 6145 0006 0D46 mov r5, r1 + 6146 0008 0446 mov r4, r0 +3043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 6147 .loc 1 3043 3 is_stmt 1 view .LVU1930 +3044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 6148 .loc 1 3044 3 view .LVU1931 +3045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + 6149 .loc 1 3045 3 view .LVU1932 +3046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode)); + 6150 .loc 1 3046 3 view .LVU1933 +3047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection)); + 6151 .loc 1 3047 3 view .LVU1934 +3048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection)); + 6152 .loc 1 3048 3 view .LVU1935 +3049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC1Polarity)); + 6153 .loc 1 3049 3 view .LVU1936 +3050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC2Polarity)); + 6154 .loc 1 3050 3 view .LVU1937 +3051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler)); + 6155 .loc 1 3051 3 view .LVU1938 + ARM GAS /tmp/ccPLZXyC.s page 270 + + +3052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler)); + 6156 .loc 1 3052 3 view .LVU1939 +3053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter)); + 6157 .loc 1 3053 3 view .LVU1940 +3054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter)); + 6158 .loc 1 3054 3 view .LVU1941 +3055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 6159 .loc 1 3055 3 view .LVU1942 +3056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6160 .loc 1 3056 3 view .LVU1943 +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6161 .loc 1 3058 3 view .LVU1944 +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6162 .loc 1 3058 11 is_stmt 0 view .LVU1945 + 6163 000a 90F83D30 ldrb r3, [r0, #61] @ zero_extendqisi2 +3058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6164 .loc 1 3058 6 view .LVU1946 + 6165 000e 002B cmp r3, #0 + 6166 0010 43D0 beq .L382 + 6167 .LVL459: + 6168 .L376: +3080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6169 .loc 1 3080 3 is_stmt 1 view .LVU1947 +3080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6170 .loc 1 3080 15 is_stmt 0 view .LVU1948 + 6171 0012 0223 movs r3, #2 + 6172 0014 84F83D30 strb r3, [r4, #61] +3083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6173 .loc 1 3083 3 is_stmt 1 view .LVU1949 +3083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6174 .loc 1 3083 7 is_stmt 0 view .LVU1950 + 6175 0018 2268 ldr r2, [r4] +3083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6176 .loc 1 3083 24 view .LVU1951 + 6177 001a 9168 ldr r1, [r2, #8] + 6178 001c 224B ldr r3, .L383 + 6179 001e 0B40 ands r3, r3, r1 + 6180 0020 9360 str r3, [r2, #8] +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6181 .loc 1 3086 3 is_stmt 1 view .LVU1952 +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6182 .loc 1 3086 38 is_stmt 0 view .LVU1953 + 6183 0022 2146 mov r1, r4 +3086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6184 .loc 1 3086 3 view .LVU1954 + 6185 0024 51F8040B ldr r0, [r1], #4 + 6186 0028 FFF7FEFF bl TIM_Base_SetConfig + 6187 .LVL460: +3089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6188 .loc 1 3089 3 is_stmt 1 view .LVU1955 +3089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6189 .loc 1 3089 17 is_stmt 0 view .LVU1956 + 6190 002c 2068 ldr r0, [r4] +3089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6191 .loc 1 3089 11 view .LVU1957 + 6192 002e 8168 ldr r1, [r0, #8] + 6193 .LVL461: + ARM GAS /tmp/ccPLZXyC.s page 271 + + +3092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6194 .loc 1 3092 3 is_stmt 1 view .LVU1958 +3092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6195 .loc 1 3092 12 is_stmt 0 view .LVU1959 + 6196 0030 8369 ldr r3, [r0, #24] + 6197 .LVL462: +3095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6198 .loc 1 3095 3 is_stmt 1 view .LVU1960 +3095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6199 .loc 1 3095 11 is_stmt 0 view .LVU1961 + 6200 0032 026A ldr r2, [r0, #32] + 6201 .LVL463: +3098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6202 .loc 1 3098 3 is_stmt 1 view .LVU1962 +3098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6203 .loc 1 3098 21 is_stmt 0 view .LVU1963 + 6204 0034 2E68 ldr r6, [r5] +3098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6205 .loc 1 3098 11 view .LVU1964 + 6206 0036 0E43 orrs r6, r6, r1 + 6207 .LVL464: +3101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8U)); + 6208 .loc 1 3101 3 is_stmt 1 view .LVU1965 +3101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8U)); + 6209 .loc 1 3101 12 is_stmt 0 view .LVU1966 + 6210 0038 1C49 ldr r1, .L383+4 + 6211 003a 1940 ands r1, r1, r3 + 6212 .LVL465: +3102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6213 .loc 1 3102 3 is_stmt 1 view .LVU1967 +3102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6214 .loc 1 3102 23 is_stmt 0 view .LVU1968 + 6215 003c AB68 ldr r3, [r5, #8] +3102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6216 .loc 1 3102 38 view .LVU1969 + 6217 003e AF69 ldr r7, [r5, #24] + 6218 0040 43EA0723 orr r3, r3, r7, lsl #8 +3102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6219 .loc 1 3102 12 view .LVU1970 + 6220 0044 43EA010C orr ip, r3, r1 + 6221 .LVL466: +3105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F); + 6222 .loc 1 3105 3 is_stmt 1 view .LVU1971 +3106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8U); + 6223 .loc 1 3106 3 view .LVU1972 +3106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8U); + 6224 .loc 1 3106 12 is_stmt 0 view .LVU1973 + 6225 0048 194B ldr r3, .L383+8 + 6226 004a 0CEA0303 and r3, ip, r3 + 6227 .LVL467: +3107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U); + 6228 .loc 1 3107 3 is_stmt 1 view .LVU1974 +3107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U); + 6229 .loc 1 3107 22 is_stmt 0 view .LVU1975 + 6230 004e E968 ldr r1, [r5, #12] +3107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U); + 6231 .loc 1 3107 37 view .LVU1976 + ARM GAS /tmp/ccPLZXyC.s page 272 + + + 6232 0050 EF69 ldr r7, [r5, #28] + 6233 0052 41EA0721 orr r1, r1, r7, lsl #8 +3107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U); + 6234 .loc 1 3107 12 view .LVU1977 + 6235 0056 1943 orrs r1, r1, r3 + 6236 .LVL468: +3108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6237 .loc 1 3108 3 is_stmt 1 view .LVU1978 +3108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6238 .loc 1 3108 52 is_stmt 0 view .LVU1979 + 6239 0058 2B6A ldr r3, [r5, #32] +3108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6240 .loc 1 3108 64 view .LVU1980 + 6241 005a 1B03 lsls r3, r3, #12 +3108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6242 .loc 1 3108 42 view .LVU1981 + 6243 005c 2F69 ldr r7, [r5, #16] + 6244 005e 43EA0713 orr r3, r3, r7, lsl #4 +3108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6245 .loc 1 3108 12 view .LVU1982 + 6246 0062 0B43 orrs r3, r3, r1 + 6247 .LVL469: +3111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP); + 6248 .loc 1 3111 3 is_stmt 1 view .LVU1983 +3112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4U); + 6249 .loc 1 3112 3 view .LVU1984 +3112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4U); + 6250 .loc 1 3112 11 is_stmt 0 view .LVU1985 + 6251 0064 22F0AA01 bic r1, r2, #170 + 6252 .LVL470: +3113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6253 .loc 1 3113 3 is_stmt 1 view .LVU1986 +3113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6254 .loc 1 3113 21 is_stmt 0 view .LVU1987 + 6255 0068 6A68 ldr r2, [r5, #4] +3113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6256 .loc 1 3113 45 view .LVU1988 + 6257 006a 6D69 ldr r5, [r5, #20] + 6258 .LVL471: +3113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6259 .loc 1 3113 35 view .LVU1989 + 6260 006c 42EA0512 orr r2, r2, r5, lsl #4 +3113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6261 .loc 1 3113 11 view .LVU1990 + 6262 0070 0A43 orrs r2, r2, r1 + 6263 .LVL472: +3116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6264 .loc 1 3116 3 is_stmt 1 view .LVU1991 +3116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6265 .loc 1 3116 24 is_stmt 0 view .LVU1992 + 6266 0072 8660 str r6, [r0, #8] +3119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6267 .loc 1 3119 3 is_stmt 1 view .LVU1993 +3119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6268 .loc 1 3119 7 is_stmt 0 view .LVU1994 + 6269 0074 2168 ldr r1, [r4] +3119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 273 + + + 6270 .loc 1 3119 25 view .LVU1995 + 6271 0076 8B61 str r3, [r1, #24] +3122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6272 .loc 1 3122 3 is_stmt 1 view .LVU1996 +3122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6273 .loc 1 3122 7 is_stmt 0 view .LVU1997 + 6274 0078 2368 ldr r3, [r4] + 6275 .LVL473: +3122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6276 .loc 1 3122 24 view .LVU1998 + 6277 007a 1A62 str r2, [r3, #32] + 6278 .LVL474: +3125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6279 .loc 1 3125 3 is_stmt 1 view .LVU1999 +3125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6280 .loc 1 3125 23 is_stmt 0 view .LVU2000 + 6281 007c 0123 movs r3, #1 + 6282 007e 84F84830 strb r3, [r4, #72] +3128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 6283 .loc 1 3128 3 is_stmt 1 view .LVU2001 + 6284 0082 84F83E30 strb r3, [r4, #62] +3129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 6285 .loc 1 3129 3 view .LVU2002 + 6286 0086 84F83F30 strb r3, [r4, #63] +3130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 6287 .loc 1 3130 3 view .LVU2003 + 6288 008a 84F84430 strb r3, [r4, #68] +3131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6289 .loc 1 3131 3 view .LVU2004 + 6290 008e 84F84530 strb r3, [r4, #69] +3134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6291 .loc 1 3134 3 view .LVU2005 +3134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6292 .loc 1 3134 15 is_stmt 0 view .LVU2006 + 6293 0092 84F83D30 strb r3, [r4, #61] +3136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6294 .loc 1 3136 3 is_stmt 1 view .LVU2007 +3136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6295 .loc 1 3136 10 is_stmt 0 view .LVU2008 + 6296 0096 0020 movs r0, #0 +3137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6297 .loc 1 3137 1 view .LVU2009 + 6298 0098 F8BD pop {r3, r4, r5, r6, r7, pc} + 6299 .LVL475: + 6300 .L382: +3061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6301 .loc 1 3061 5 is_stmt 1 view .LVU2010 +3061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6302 .loc 1 3061 16 is_stmt 0 view .LVU2011 + 6303 009a 80F83C30 strb r3, [r0, #60] +3075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 6304 .loc 1 3075 5 is_stmt 1 view .LVU2012 + 6305 009e FFF7FEFF bl HAL_TIM_Encoder_MspInit + 6306 .LVL476: +3075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 6307 .loc 1 3075 5 is_stmt 0 view .LVU2013 + 6308 00a2 B6E7 b .L376 + ARM GAS /tmp/ccPLZXyC.s page 274 + + + 6309 .LVL477: + 6310 .L377: + 6311 .LCFI60: + 6312 .cfi_def_cfa_offset 0 + 6313 .cfi_restore 3 + 6314 .cfi_restore 4 + 6315 .cfi_restore 5 + 6316 .cfi_restore 6 + 6317 .cfi_restore 7 + 6318 .cfi_restore 14 +3039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6319 .loc 1 3039 12 view .LVU2014 + 6320 00a4 0120 movs r0, #1 + 6321 .LVL478: +3137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6322 .loc 1 3137 1 view .LVU2015 + 6323 00a6 7047 bx lr + 6324 .L384: + 6325 .align 2 + 6326 .L383: + 6327 00a8 F8BFFEFF .word -81928 + 6328 00ac FCFCFFFF .word -772 + 6329 00b0 0303FFFF .word -64765 + 6330 .cfi_endproc + 6331 .LFE189: + 6333 .section .text.TIM_OC2_SetConfig,"ax",%progbits + 6334 .align 1 + 6335 .global TIM_OC2_SetConfig + 6336 .syntax unified + 6337 .thumb + 6338 .thumb_func + 6339 .fpu fpv5-d16 + 6341 TIM_OC2_SetConfig: + 6342 .LVL479: + 6343 .LFB247: +7062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmrx; + 6344 .loc 1 7062 1 is_stmt 1 view -0 + 6345 .cfi_startproc + 6346 @ args = 0, pretend = 0, frame = 0 + 6347 @ frame_needed = 0, uses_anonymous_args = 0 + 6348 @ link register save eliminated. +7062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmrx; + 6349 .loc 1 7062 1 is_stmt 0 view .LVU2017 + 6350 0000 70B4 push {r4, r5, r6} + 6351 .LCFI61: + 6352 .cfi_def_cfa_offset 12 + 6353 .cfi_offset 4, -12 + 6354 .cfi_offset 5, -8 + 6355 .cfi_offset 6, -4 +7063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 6356 .loc 1 7063 3 is_stmt 1 view .LVU2018 +7064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpcr2; + 6357 .loc 1 7064 3 view .LVU2019 +7065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6358 .loc 1 7065 3 view .LVU2020 +7068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6359 .loc 1 7068 3 view .LVU2021 + ARM GAS /tmp/ccPLZXyC.s page 275 + + +7068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6360 .loc 1 7068 11 is_stmt 0 view .LVU2022 + 6361 0002 036A ldr r3, [r0, #32] + 6362 .LVL480: +7071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6363 .loc 1 7071 3 is_stmt 1 view .LVU2023 +7071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6364 .loc 1 7071 14 is_stmt 0 view .LVU2024 + 6365 0004 026A ldr r2, [r0, #32] + 6366 0006 22F01002 bic r2, r2, #16 + 6367 000a 0262 str r2, [r0, #32] +7074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6368 .loc 1 7074 3 is_stmt 1 view .LVU2025 +7074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6369 .loc 1 7074 10 is_stmt 0 view .LVU2026 + 6370 000c 4268 ldr r2, [r0, #4] + 6371 .LVL481: +7077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6372 .loc 1 7077 3 is_stmt 1 view .LVU2027 +7077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6373 .loc 1 7077 12 is_stmt 0 view .LVU2028 + 6374 000e 8569 ldr r5, [r0, #24] + 6375 .LVL482: +7080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmrx &= ~TIM_CCMR1_CC2S; + 6376 .loc 1 7080 3 is_stmt 1 view .LVU2029 +7081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6377 .loc 1 7081 3 view .LVU2030 +7081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6378 .loc 1 7081 12 is_stmt 0 view .LVU2031 + 6379 0010 144C ldr r4, .L389 + 6380 0012 2C40 ands r4, r4, r5 + 6381 .LVL483: +7084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6382 .loc 1 7084 3 is_stmt 1 view .LVU2032 +7084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6383 .loc 1 7084 25 is_stmt 0 view .LVU2033 + 6384 0014 0D68 ldr r5, [r1] +7084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6385 .loc 1 7084 12 view .LVU2034 + 6386 0016 44EA0525 orr r5, r4, r5, lsl #8 + 6387 .LVL484: +7087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Compare Polarity */ + 6388 .loc 1 7087 3 is_stmt 1 view .LVU2035 +7087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Compare Polarity */ + 6389 .loc 1 7087 11 is_stmt 0 view .LVU2036 + 6390 001a 23F02003 bic r3, r3, #32 + 6391 .LVL485: +7089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6392 .loc 1 7089 3 is_stmt 1 view .LVU2037 +7089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6393 .loc 1 7089 24 is_stmt 0 view .LVU2038 + 6394 001e 8C68 ldr r4, [r1, #8] +7089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6395 .loc 1 7089 11 view .LVU2039 + 6396 0020 43EA0413 orr r3, r3, r4, lsl #4 + 6397 .LVL486: +7091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 276 + + + 6398 .loc 1 7091 3 is_stmt 1 view .LVU2040 +7091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6399 .loc 1 7091 7 is_stmt 0 view .LVU2041 + 6400 0024 104C ldr r4, .L389+4 + 6401 0026 114E ldr r6, .L389+8 +7091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6402 .loc 1 7091 6 view .LVU2042 + 6403 0028 B042 cmp r0, r6 + 6404 002a 18BF it ne + 6405 002c A042 cmpne r0, r4 + 6406 002e 0CBF ite eq + 6407 0030 0124 moveq r4, #1 + 6408 0032 0024 movne r4, #0 + 6409 0034 06D1 bne .L386 +7093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6410 .loc 1 7093 5 is_stmt 1 view .LVU2043 +7096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Polarity */ + 6411 .loc 1 7096 5 view .LVU2044 +7096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Polarity */ + 6412 .loc 1 7096 13 is_stmt 0 view .LVU2045 + 6413 0036 23F08003 bic r3, r3, #128 + 6414 .LVL487: +7098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output N State */ + 6415 .loc 1 7098 5 is_stmt 1 view .LVU2046 +7098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output N State */ + 6416 .loc 1 7098 26 is_stmt 0 view .LVU2047 + 6417 003a CE68 ldr r6, [r1, #12] +7098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the Output N State */ + 6418 .loc 1 7098 13 view .LVU2048 + 6419 003c 43EA0613 orr r3, r3, r6, lsl #4 + 6420 .LVL488: +7100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6421 .loc 1 7100 5 is_stmt 1 view .LVU2049 +7100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6422 .loc 1 7100 13 is_stmt 0 view .LVU2050 + 6423 0040 23F04003 bic r3, r3, #64 + 6424 .LVL489: + 6425 .L386: +7103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6426 .loc 1 7103 3 is_stmt 1 view .LVU2051 +7103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6427 .loc 1 7103 6 is_stmt 0 view .LVU2052 + 6428 0044 3CB1 cbz r4, .L387 +7106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); + 6429 .loc 1 7106 5 is_stmt 1 view .LVU2053 +7107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6430 .loc 1 7107 5 view .LVU2054 +7110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpcr2 &= ~TIM_CR2_OIS2N; + 6431 .loc 1 7110 5 view .LVU2055 + 6432 .LVL490: +7111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Idle state */ + 6433 .loc 1 7111 5 view .LVU2056 +7111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output Idle state */ + 6434 .loc 1 7111 12 is_stmt 0 view .LVU2057 + 6435 0046 22F44062 bic r2, r2, #3072 + 6436 .LVL491: +7113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Idle state */ + ARM GAS /tmp/ccPLZXyC.s page 277 + + + 6437 .loc 1 7113 5 is_stmt 1 view .LVU2058 +7113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Idle state */ + 6438 .loc 1 7113 25 is_stmt 0 view .LVU2059 + 6439 004a 4C69 ldr r4, [r1, #20] +7113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Output N Idle state */ + 6440 .loc 1 7113 12 view .LVU2060 + 6441 004c 42EA8402 orr r2, r2, r4, lsl #2 + 6442 .LVL492: +7115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6443 .loc 1 7115 5 is_stmt 1 view .LVU2061 +7115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6444 .loc 1 7115 25 is_stmt 0 view .LVU2062 + 6445 0050 8C69 ldr r4, [r1, #24] +7115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6446 .loc 1 7115 12 view .LVU2063 + 6447 0052 42EA8402 orr r2, r2, r4, lsl #2 + 6448 .LVL493: + 6449 .L387: +7119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6450 .loc 1 7119 3 is_stmt 1 view .LVU2064 +7119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6451 .loc 1 7119 13 is_stmt 0 view .LVU2065 + 6452 0056 4260 str r2, [r0, #4] +7122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6453 .loc 1 7122 3 is_stmt 1 view .LVU2066 +7122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6454 .loc 1 7122 15 is_stmt 0 view .LVU2067 + 6455 0058 8561 str r5, [r0, #24] +7125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6456 .loc 1 7125 3 is_stmt 1 view .LVU2068 +7125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6457 .loc 1 7125 25 is_stmt 0 view .LVU2069 + 6458 005a 4A68 ldr r2, [r1, #4] + 6459 .LVL494: +7125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6460 .loc 1 7125 14 view .LVU2070 + 6461 005c 8263 str r2, [r0, #56] +7128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6462 .loc 1 7128 3 is_stmt 1 view .LVU2071 +7128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6463 .loc 1 7128 14 is_stmt 0 view .LVU2072 + 6464 005e 0362 str r3, [r0, #32] +7129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6465 .loc 1 7129 1 view .LVU2073 + 6466 0060 70BC pop {r4, r5, r6} + 6467 .LCFI62: + 6468 .cfi_restore 6 + 6469 .cfi_restore 5 + 6470 .cfi_restore 4 + 6471 .cfi_def_cfa_offset 0 + 6472 .LVL495: +7129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6473 .loc 1 7129 1 view .LVU2074 + 6474 0062 7047 bx lr + 6475 .L390: + 6476 .align 2 + 6477 .L389: + ARM GAS /tmp/ccPLZXyC.s page 278 + + + 6478 0064 FF8CFFFE .word -16806657 + 6479 0068 00000140 .word 1073807360 + 6480 006c 00040140 .word 1073808384 + 6481 .cfi_endproc + 6482 .LFE247: + 6484 .section .text.HAL_TIM_OC_ConfigChannel,"ax",%progbits + 6485 .align 1 + 6486 .global HAL_TIM_OC_ConfigChannel + 6487 .syntax unified + 6488 .thumb + 6489 .thumb_func + 6490 .fpu fpv5-d16 + 6492 HAL_TIM_OC_ConfigChannel: + 6493 .LVL496: + 6494 .LFB200: +4071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 6495 .loc 1 4071 1 is_stmt 1 view -0 + 6496 .cfi_startproc + 6497 @ args = 0, pretend = 0, frame = 0 + 6498 @ frame_needed = 0, uses_anonymous_args = 0 +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6499 .loc 1 4072 3 view .LVU2076 +4075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OC_MODE(sConfig->OCMode)); + 6500 .loc 1 4075 3 view .LVU2077 +4076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + 6501 .loc 1 4076 3 view .LVU2078 +4077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6502 .loc 1 4077 3 view .LVU2079 +4080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6503 .loc 1 4080 3 view .LVU2080 +4080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6504 .loc 1 4080 3 view .LVU2081 + 6505 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 6506 0004 012B cmp r3, #1 + 6507 0006 36D0 beq .L401 +4071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 6508 .loc 1 4071 1 is_stmt 0 discriminator 2 view .LVU2082 + 6509 0008 10B5 push {r4, lr} + 6510 .LCFI63: + 6511 .cfi_def_cfa_offset 8 + 6512 .cfi_offset 4, -8 + 6513 .cfi_offset 14, -4 + 6514 000a 0446 mov r4, r0 +4080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6515 .loc 1 4080 3 is_stmt 1 discriminator 2 view .LVU2083 + 6516 000c 0123 movs r3, #1 + 6517 000e 80F83C30 strb r3, [r0, #60] +4080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6518 .loc 1 4080 3 discriminator 2 view .LVU2084 +4082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6519 .loc 1 4082 3 discriminator 2 view .LVU2085 + 6520 0012 142A cmp r2, #20 + 6521 0014 2AD8 bhi .L402 + 6522 0016 DFE802F0 tbb [pc, r2] + 6523 .L395: + 6524 001a 0B .byte (.L400-.L395)/2 + 6525 001b 29 .byte (.L402-.L395)/2 + ARM GAS /tmp/ccPLZXyC.s page 279 + + + 6526 001c 29 .byte (.L402-.L395)/2 + 6527 001d 29 .byte (.L402-.L395)/2 + 6528 001e 10 .byte (.L399-.L395)/2 + 6529 001f 29 .byte (.L402-.L395)/2 + 6530 0020 29 .byte (.L402-.L395)/2 + 6531 0021 29 .byte (.L402-.L395)/2 + 6532 0022 15 .byte (.L398-.L395)/2 + 6533 0023 29 .byte (.L402-.L395)/2 + 6534 0024 29 .byte (.L402-.L395)/2 + 6535 0025 29 .byte (.L402-.L395)/2 + 6536 0026 1A .byte (.L397-.L395)/2 + 6537 0027 29 .byte (.L402-.L395)/2 + 6538 0028 29 .byte (.L402-.L395)/2 + 6539 0029 29 .byte (.L402-.L395)/2 + 6540 002a 1F .byte (.L396-.L395)/2 + 6541 002b 29 .byte (.L402-.L395)/2 + 6542 002c 29 .byte (.L402-.L395)/2 + 6543 002d 29 .byte (.L402-.L395)/2 + 6544 002e 24 .byte (.L394-.L395)/2 + 6545 002f 00 .p2align 1 + 6546 .L400: +4087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6547 .loc 1 4087 7 view .LVU2086 +4090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6548 .loc 1 4090 7 view .LVU2087 + 6549 0030 0068 ldr r0, [r0] + 6550 .LVL497: +4090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6551 .loc 1 4090 7 is_stmt 0 view .LVU2088 + 6552 0032 FFF7FEFF bl TIM_OC1_SetConfig + 6553 .LVL498: +4091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6554 .loc 1 4091 7 is_stmt 1 view .LVU2089 +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6555 .loc 1 4072 21 is_stmt 0 view .LVU2090 + 6556 0036 0020 movs r0, #0 +4091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6557 .loc 1 4091 7 view .LVU2091 + 6558 0038 19E0 b .L393 + 6559 .LVL499: + 6560 .L399: +4097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6561 .loc 1 4097 7 is_stmt 1 view .LVU2092 +4100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6562 .loc 1 4100 7 view .LVU2093 + 6563 003a 0068 ldr r0, [r0] + 6564 .LVL500: +4100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6565 .loc 1 4100 7 is_stmt 0 view .LVU2094 + 6566 003c FFF7FEFF bl TIM_OC2_SetConfig + 6567 .LVL501: +4101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6568 .loc 1 4101 7 is_stmt 1 view .LVU2095 +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6569 .loc 1 4072 21 is_stmt 0 view .LVU2096 + 6570 0040 0020 movs r0, #0 +4101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 280 + + + 6571 .loc 1 4101 7 view .LVU2097 + 6572 0042 14E0 b .L393 + 6573 .LVL502: + 6574 .L398: +4107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6575 .loc 1 4107 7 is_stmt 1 view .LVU2098 +4110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6576 .loc 1 4110 7 view .LVU2099 + 6577 0044 0068 ldr r0, [r0] + 6578 .LVL503: +4110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6579 .loc 1 4110 7 is_stmt 0 view .LVU2100 + 6580 0046 FFF7FEFF bl TIM_OC3_SetConfig + 6581 .LVL504: +4111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6582 .loc 1 4111 7 is_stmt 1 view .LVU2101 +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6583 .loc 1 4072 21 is_stmt 0 view .LVU2102 + 6584 004a 0020 movs r0, #0 +4111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6585 .loc 1 4111 7 view .LVU2103 + 6586 004c 0FE0 b .L393 + 6587 .LVL505: + 6588 .L397: +4117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6589 .loc 1 4117 7 is_stmt 1 view .LVU2104 +4120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6590 .loc 1 4120 7 view .LVU2105 + 6591 004e 0068 ldr r0, [r0] + 6592 .LVL506: +4120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6593 .loc 1 4120 7 is_stmt 0 view .LVU2106 + 6594 0050 FFF7FEFF bl TIM_OC4_SetConfig + 6595 .LVL507: +4121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6596 .loc 1 4121 7 is_stmt 1 view .LVU2107 +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6597 .loc 1 4072 21 is_stmt 0 view .LVU2108 + 6598 0054 0020 movs r0, #0 +4121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6599 .loc 1 4121 7 view .LVU2109 + 6600 0056 0AE0 b .L393 + 6601 .LVL508: + 6602 .L396: +4127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6603 .loc 1 4127 7 is_stmt 1 view .LVU2110 +4130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6604 .loc 1 4130 7 view .LVU2111 + 6605 0058 0068 ldr r0, [r0] + 6606 .LVL509: +4130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6607 .loc 1 4130 7 is_stmt 0 view .LVU2112 + 6608 005a FFF7FEFF bl TIM_OC5_SetConfig + 6609 .LVL510: +4131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6610 .loc 1 4131 7 is_stmt 1 view .LVU2113 +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 281 + + + 6611 .loc 1 4072 21 is_stmt 0 view .LVU2114 + 6612 005e 0020 movs r0, #0 +4131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6613 .loc 1 4131 7 view .LVU2115 + 6614 0060 05E0 b .L393 + 6615 .LVL511: + 6616 .L394: +4137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6617 .loc 1 4137 7 is_stmt 1 view .LVU2116 +4140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6618 .loc 1 4140 7 view .LVU2117 + 6619 0062 0068 ldr r0, [r0] + 6620 .LVL512: +4140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6621 .loc 1 4140 7 is_stmt 0 view .LVU2118 + 6622 0064 FFF7FEFF bl TIM_OC6_SetConfig + 6623 .LVL513: +4141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6624 .loc 1 4141 7 is_stmt 1 view .LVU2119 +4072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6625 .loc 1 4072 21 is_stmt 0 view .LVU2120 + 6626 0068 0020 movs r0, #0 +4141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6627 .loc 1 4141 7 view .LVU2121 + 6628 006a 00E0 b .L393 + 6629 .LVL514: + 6630 .L402: +4082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6631 .loc 1 4082 3 view .LVU2122 + 6632 006c 0120 movs r0, #1 + 6633 .LVL515: + 6634 .L393: +4149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6635 .loc 1 4149 3 is_stmt 1 view .LVU2123 +4149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6636 .loc 1 4149 3 view .LVU2124 + 6637 006e 0023 movs r3, #0 + 6638 0070 84F83C30 strb r3, [r4, #60] +4149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6639 .loc 1 4149 3 view .LVU2125 +4151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6640 .loc 1 4151 3 view .LVU2126 +4152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6641 .loc 1 4152 1 is_stmt 0 view .LVU2127 + 6642 0074 10BD pop {r4, pc} + 6643 .LVL516: + 6644 .L401: + 6645 .LCFI64: + 6646 .cfi_def_cfa_offset 0 + 6647 .cfi_restore 4 + 6648 .cfi_restore 14 +4080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6649 .loc 1 4080 3 view .LVU2128 + 6650 0076 0220 movs r0, #2 + 6651 .LVL517: +4152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6652 .loc 1 4152 1 view .LVU2129 + ARM GAS /tmp/ccPLZXyC.s page 282 + + + 6653 0078 7047 bx lr + 6654 .cfi_endproc + 6655 .LFE200: + 6657 .section .text.HAL_TIM_PWM_ConfigChannel,"ax",%progbits + 6658 .align 1 + 6659 .global HAL_TIM_PWM_ConfigChannel + 6660 .syntax unified + 6661 .thumb + 6662 .thumb_func + 6663 .fpu fpv5-d16 + 6665 HAL_TIM_PWM_ConfigChannel: + 6666 .LVL518: + 6667 .LFB202: +4271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 6668 .loc 1 4271 1 is_stmt 1 view -0 + 6669 .cfi_startproc + 6670 @ args = 0, pretend = 0, frame = 0 + 6671 @ frame_needed = 0, uses_anonymous_args = 0 +4271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 6672 .loc 1 4271 1 is_stmt 0 view .LVU2131 + 6673 0000 38B5 push {r3, r4, r5, lr} + 6674 .LCFI65: + 6675 .cfi_def_cfa_offset 16 + 6676 .cfi_offset 3, -16 + 6677 .cfi_offset 4, -12 + 6678 .cfi_offset 5, -8 + 6679 .cfi_offset 14, -4 +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6680 .loc 1 4272 3 is_stmt 1 view .LVU2132 + 6681 .LVL519: +4275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); + 6682 .loc 1 4275 3 view .LVU2133 +4276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); + 6683 .loc 1 4276 3 view .LVU2134 +4277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); + 6684 .loc 1 4277 3 view .LVU2135 +4278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6685 .loc 1 4278 3 view .LVU2136 +4281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6686 .loc 1 4281 3 view .LVU2137 +4281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6687 .loc 1 4281 3 view .LVU2138 + 6688 0002 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 6689 0006 012B cmp r3, #1 + 6690 0008 00F09580 beq .L417 + 6691 000c 0446 mov r4, r0 + 6692 000e 0D46 mov r5, r1 +4281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6693 .loc 1 4281 3 discriminator 2 view .LVU2139 + 6694 0010 0123 movs r3, #1 + 6695 0012 80F83C30 strb r3, [r0, #60] +4281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6696 .loc 1 4281 3 discriminator 2 view .LVU2140 +4283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6697 .loc 1 4283 3 discriminator 2 view .LVU2141 + 6698 0016 142A cmp r2, #20 + 6699 0018 00F28880 bhi .L418 + ARM GAS /tmp/ccPLZXyC.s page 283 + + + 6700 001c DFE802F0 tbb [pc, r2] + 6701 .L411: + 6702 0020 0B .byte (.L416-.L411)/2 + 6703 0021 86 .byte (.L418-.L411)/2 + 6704 0022 86 .byte (.L418-.L411)/2 + 6705 0023 86 .byte (.L418-.L411)/2 + 6706 0024 1F .byte (.L415-.L411)/2 + 6707 0025 86 .byte (.L418-.L411)/2 + 6708 0026 86 .byte (.L418-.L411)/2 + 6709 0027 86 .byte (.L418-.L411)/2 + 6710 0028 34 .byte (.L414-.L411)/2 + 6711 0029 86 .byte (.L418-.L411)/2 + 6712 002a 86 .byte (.L418-.L411)/2 + 6713 002b 86 .byte (.L418-.L411)/2 + 6714 002c 48 .byte (.L413-.L411)/2 + 6715 002d 86 .byte (.L418-.L411)/2 + 6716 002e 86 .byte (.L418-.L411)/2 + 6717 002f 86 .byte (.L418-.L411)/2 + 6718 0030 5D .byte (.L412-.L411)/2 + 6719 0031 86 .byte (.L418-.L411)/2 + 6720 0032 86 .byte (.L418-.L411)/2 + 6721 0033 86 .byte (.L418-.L411)/2 + 6722 0034 71 .byte (.L410-.L411)/2 + 6723 0035 00 .p2align 1 + 6724 .L416: +4288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6725 .loc 1 4288 7 view .LVU2142 +4291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6726 .loc 1 4291 7 view .LVU2143 + 6727 0036 0068 ldr r0, [r0] + 6728 .LVL520: +4291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6729 .loc 1 4291 7 is_stmt 0 view .LVU2144 + 6730 0038 FFF7FEFF bl TIM_OC1_SetConfig + 6731 .LVL521: +4294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6732 .loc 1 4294 7 is_stmt 1 view .LVU2145 +4294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6733 .loc 1 4294 11 is_stmt 0 view .LVU2146 + 6734 003c 2268 ldr r2, [r4] +4294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6735 .loc 1 4294 29 view .LVU2147 + 6736 003e 9369 ldr r3, [r2, #24] + 6737 0040 43F00803 orr r3, r3, #8 + 6738 0044 9361 str r3, [r2, #24] +4297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= sConfig->OCFastMode; + 6739 .loc 1 4297 7 is_stmt 1 view .LVU2148 +4297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= sConfig->OCFastMode; + 6740 .loc 1 4297 11 is_stmt 0 view .LVU2149 + 6741 0046 2268 ldr r2, [r4] +4297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= sConfig->OCFastMode; + 6742 .loc 1 4297 29 view .LVU2150 + 6743 0048 9369 ldr r3, [r2, #24] + 6744 004a 23F00403 bic r3, r3, #4 + 6745 004e 9361 str r3, [r2, #24] +4298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6746 .loc 1 4298 7 is_stmt 1 view .LVU2151 + ARM GAS /tmp/ccPLZXyC.s page 284 + + +4298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6747 .loc 1 4298 11 is_stmt 0 view .LVU2152 + 6748 0050 2268 ldr r2, [r4] +4298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6749 .loc 1 4298 29 view .LVU2153 + 6750 0052 9369 ldr r3, [r2, #24] +4298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6751 .loc 1 4298 39 view .LVU2154 + 6752 0054 2969 ldr r1, [r5, #16] +4298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6753 .loc 1 4298 29 view .LVU2155 + 6754 0056 0B43 orrs r3, r3, r1 + 6755 0058 9361 str r3, [r2, #24] +4299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6756 .loc 1 4299 7 is_stmt 1 view .LVU2156 +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6757 .loc 1 4272 21 is_stmt 0 view .LVU2157 + 6758 005a 0020 movs r0, #0 +4299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6759 .loc 1 4299 7 view .LVU2158 + 6760 005c 67E0 b .L409 + 6761 .LVL522: + 6762 .L415: +4305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6763 .loc 1 4305 7 is_stmt 1 view .LVU2159 +4308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6764 .loc 1 4308 7 view .LVU2160 + 6765 005e 0068 ldr r0, [r0] + 6766 .LVL523: +4308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6767 .loc 1 4308 7 is_stmt 0 view .LVU2161 + 6768 0060 FFF7FEFF bl TIM_OC2_SetConfig + 6769 .LVL524: +4311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6770 .loc 1 4311 7 is_stmt 1 view .LVU2162 +4311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6771 .loc 1 4311 11 is_stmt 0 view .LVU2163 + 6772 0064 2268 ldr r2, [r4] +4311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6773 .loc 1 4311 29 view .LVU2164 + 6774 0066 9369 ldr r3, [r2, #24] + 6775 0068 43F40063 orr r3, r3, #2048 + 6776 006c 9361 str r3, [r2, #24] +4314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 6777 .loc 1 4314 7 is_stmt 1 view .LVU2165 +4314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 6778 .loc 1 4314 11 is_stmt 0 view .LVU2166 + 6779 006e 2268 ldr r2, [r4] +4314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 6780 .loc 1 4314 29 view .LVU2167 + 6781 0070 9369 ldr r3, [r2, #24] + 6782 0072 23F48063 bic r3, r3, #1024 + 6783 0076 9361 str r3, [r2, #24] +4315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6784 .loc 1 4315 7 is_stmt 1 view .LVU2168 +4315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6785 .loc 1 4315 11 is_stmt 0 view .LVU2169 + ARM GAS /tmp/ccPLZXyC.s page 285 + + + 6786 0078 2268 ldr r2, [r4] +4315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6787 .loc 1 4315 29 view .LVU2170 + 6788 007a 9369 ldr r3, [r2, #24] +4315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6789 .loc 1 4315 39 view .LVU2171 + 6790 007c 2969 ldr r1, [r5, #16] +4315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6791 .loc 1 4315 29 view .LVU2172 + 6792 007e 43EA0123 orr r3, r3, r1, lsl #8 + 6793 0082 9361 str r3, [r2, #24] +4316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6794 .loc 1 4316 7 is_stmt 1 view .LVU2173 +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6795 .loc 1 4272 21 is_stmt 0 view .LVU2174 + 6796 0084 0020 movs r0, #0 +4316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6797 .loc 1 4316 7 view .LVU2175 + 6798 0086 52E0 b .L409 + 6799 .LVL525: + 6800 .L414: +4322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6801 .loc 1 4322 7 is_stmt 1 view .LVU2176 +4325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6802 .loc 1 4325 7 view .LVU2177 + 6803 0088 0068 ldr r0, [r0] + 6804 .LVL526: +4325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6805 .loc 1 4325 7 is_stmt 0 view .LVU2178 + 6806 008a FFF7FEFF bl TIM_OC3_SetConfig + 6807 .LVL527: +4328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6808 .loc 1 4328 7 is_stmt 1 view .LVU2179 +4328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6809 .loc 1 4328 11 is_stmt 0 view .LVU2180 + 6810 008e 2268 ldr r2, [r4] +4328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6811 .loc 1 4328 29 view .LVU2181 + 6812 0090 D369 ldr r3, [r2, #28] + 6813 0092 43F00803 orr r3, r3, #8 + 6814 0096 D361 str r3, [r2, #28] +4331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= sConfig->OCFastMode; + 6815 .loc 1 4331 7 is_stmt 1 view .LVU2182 +4331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= sConfig->OCFastMode; + 6816 .loc 1 4331 11 is_stmt 0 view .LVU2183 + 6817 0098 2268 ldr r2, [r4] +4331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= sConfig->OCFastMode; + 6818 .loc 1 4331 29 view .LVU2184 + 6819 009a D369 ldr r3, [r2, #28] + 6820 009c 23F00403 bic r3, r3, #4 + 6821 00a0 D361 str r3, [r2, #28] +4332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6822 .loc 1 4332 7 is_stmt 1 view .LVU2185 +4332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6823 .loc 1 4332 11 is_stmt 0 view .LVU2186 + 6824 00a2 2268 ldr r2, [r4] +4332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + ARM GAS /tmp/ccPLZXyC.s page 286 + + + 6825 .loc 1 4332 29 view .LVU2187 + 6826 00a4 D369 ldr r3, [r2, #28] +4332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6827 .loc 1 4332 39 view .LVU2188 + 6828 00a6 2969 ldr r1, [r5, #16] +4332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6829 .loc 1 4332 29 view .LVU2189 + 6830 00a8 0B43 orrs r3, r3, r1 + 6831 00aa D361 str r3, [r2, #28] +4333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6832 .loc 1 4333 7 is_stmt 1 view .LVU2190 +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6833 .loc 1 4272 21 is_stmt 0 view .LVU2191 + 6834 00ac 0020 movs r0, #0 +4333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6835 .loc 1 4333 7 view .LVU2192 + 6836 00ae 3EE0 b .L409 + 6837 .LVL528: + 6838 .L413: +4339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6839 .loc 1 4339 7 is_stmt 1 view .LVU2193 +4342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6840 .loc 1 4342 7 view .LVU2194 + 6841 00b0 0068 ldr r0, [r0] + 6842 .LVL529: +4342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6843 .loc 1 4342 7 is_stmt 0 view .LVU2195 + 6844 00b2 FFF7FEFF bl TIM_OC4_SetConfig + 6845 .LVL530: +4345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6846 .loc 1 4345 7 is_stmt 1 view .LVU2196 +4345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6847 .loc 1 4345 11 is_stmt 0 view .LVU2197 + 6848 00b6 2268 ldr r2, [r4] +4345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6849 .loc 1 4345 29 view .LVU2198 + 6850 00b8 D369 ldr r3, [r2, #28] + 6851 00ba 43F40063 orr r3, r3, #2048 + 6852 00be D361 str r3, [r2, #28] +4348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 6853 .loc 1 4348 7 is_stmt 1 view .LVU2199 +4348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 6854 .loc 1 4348 11 is_stmt 0 view .LVU2200 + 6855 00c0 2268 ldr r2, [r4] +4348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 6856 .loc 1 4348 29 view .LVU2201 + 6857 00c2 D369 ldr r3, [r2, #28] + 6858 00c4 23F48063 bic r3, r3, #1024 + 6859 00c8 D361 str r3, [r2, #28] +4349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6860 .loc 1 4349 7 is_stmt 1 view .LVU2202 +4349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6861 .loc 1 4349 11 is_stmt 0 view .LVU2203 + 6862 00ca 2268 ldr r2, [r4] +4349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6863 .loc 1 4349 29 view .LVU2204 + 6864 00cc D369 ldr r3, [r2, #28] + ARM GAS /tmp/ccPLZXyC.s page 287 + + +4349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6865 .loc 1 4349 39 view .LVU2205 + 6866 00ce 2969 ldr r1, [r5, #16] +4349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6867 .loc 1 4349 29 view .LVU2206 + 6868 00d0 43EA0123 orr r3, r3, r1, lsl #8 + 6869 00d4 D361 str r3, [r2, #28] +4350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6870 .loc 1 4350 7 is_stmt 1 view .LVU2207 +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6871 .loc 1 4272 21 is_stmt 0 view .LVU2208 + 6872 00d6 0020 movs r0, #0 +4350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6873 .loc 1 4350 7 view .LVU2209 + 6874 00d8 29E0 b .L409 + 6875 .LVL531: + 6876 .L412: +4356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6877 .loc 1 4356 7 is_stmt 1 view .LVU2210 +4359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6878 .loc 1 4359 7 view .LVU2211 + 6879 00da 0068 ldr r0, [r0] + 6880 .LVL532: +4359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6881 .loc 1 4359 7 is_stmt 0 view .LVU2212 + 6882 00dc FFF7FEFF bl TIM_OC5_SetConfig + 6883 .LVL533: +4362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6884 .loc 1 4362 7 is_stmt 1 view .LVU2213 +4362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6885 .loc 1 4362 11 is_stmt 0 view .LVU2214 + 6886 00e0 2268 ldr r2, [r4] +4362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6887 .loc 1 4362 29 view .LVU2215 + 6888 00e2 536D ldr r3, [r2, #84] + 6889 00e4 43F00803 orr r3, r3, #8 + 6890 00e8 5365 str r3, [r2, #84] +4365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 |= sConfig->OCFastMode; + 6891 .loc 1 4365 7 is_stmt 1 view .LVU2216 +4365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 |= sConfig->OCFastMode; + 6892 .loc 1 4365 11 is_stmt 0 view .LVU2217 + 6893 00ea 2268 ldr r2, [r4] +4365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 |= sConfig->OCFastMode; + 6894 .loc 1 4365 29 view .LVU2218 + 6895 00ec 536D ldr r3, [r2, #84] + 6896 00ee 23F00403 bic r3, r3, #4 + 6897 00f2 5365 str r3, [r2, #84] +4366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6898 .loc 1 4366 7 is_stmt 1 view .LVU2219 +4366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6899 .loc 1 4366 11 is_stmt 0 view .LVU2220 + 6900 00f4 2268 ldr r2, [r4] +4366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6901 .loc 1 4366 29 view .LVU2221 + 6902 00f6 536D ldr r3, [r2, #84] +4366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6903 .loc 1 4366 39 view .LVU2222 + ARM GAS /tmp/ccPLZXyC.s page 288 + + + 6904 00f8 2969 ldr r1, [r5, #16] +4366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6905 .loc 1 4366 29 view .LVU2223 + 6906 00fa 0B43 orrs r3, r3, r1 + 6907 00fc 5365 str r3, [r2, #84] +4367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6908 .loc 1 4367 7 is_stmt 1 view .LVU2224 +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6909 .loc 1 4272 21 is_stmt 0 view .LVU2225 + 6910 00fe 0020 movs r0, #0 +4367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6911 .loc 1 4367 7 view .LVU2226 + 6912 0100 15E0 b .L409 + 6913 .LVL534: + 6914 .L410: +4373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6915 .loc 1 4373 7 is_stmt 1 view .LVU2227 +4376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6916 .loc 1 4376 7 view .LVU2228 + 6917 0102 0068 ldr r0, [r0] + 6918 .LVL535: +4376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6919 .loc 1 4376 7 is_stmt 0 view .LVU2229 + 6920 0104 FFF7FEFF bl TIM_OC6_SetConfig + 6921 .LVL536: +4379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6922 .loc 1 4379 7 is_stmt 1 view .LVU2230 +4379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6923 .loc 1 4379 11 is_stmt 0 view .LVU2231 + 6924 0108 2268 ldr r2, [r4] +4379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6925 .loc 1 4379 29 view .LVU2232 + 6926 010a 536D ldr r3, [r2, #84] + 6927 010c 43F40063 orr r3, r3, #2048 + 6928 0110 5365 str r3, [r2, #84] +4382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U; + 6929 .loc 1 4382 7 is_stmt 1 view .LVU2233 +4382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U; + 6930 .loc 1 4382 11 is_stmt 0 view .LVU2234 + 6931 0112 2268 ldr r2, [r4] +4382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U; + 6932 .loc 1 4382 29 view .LVU2235 + 6933 0114 536D ldr r3, [r2, #84] + 6934 0116 23F48063 bic r3, r3, #1024 + 6935 011a 5365 str r3, [r2, #84] +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6936 .loc 1 4383 7 is_stmt 1 view .LVU2236 +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6937 .loc 1 4383 11 is_stmt 0 view .LVU2237 + 6938 011c 2268 ldr r2, [r4] +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6939 .loc 1 4383 29 view .LVU2238 + 6940 011e 536D ldr r3, [r2, #84] +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 6941 .loc 1 4383 39 view .LVU2239 + 6942 0120 2969 ldr r1, [r5, #16] +4383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + ARM GAS /tmp/ccPLZXyC.s page 289 + + + 6943 .loc 1 4383 29 view .LVU2240 + 6944 0122 43EA0123 orr r3, r3, r1, lsl #8 + 6945 0126 5365 str r3, [r2, #84] +4384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6946 .loc 1 4384 7 is_stmt 1 view .LVU2241 +4272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6947 .loc 1 4272 21 is_stmt 0 view .LVU2242 + 6948 0128 0020 movs r0, #0 +4384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6949 .loc 1 4384 7 view .LVU2243 + 6950 012a 00E0 b .L409 + 6951 .LVL537: + 6952 .L418: +4283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 6953 .loc 1 4283 3 view .LVU2244 + 6954 012c 0120 movs r0, #1 + 6955 .LVL538: + 6956 .L409: +4392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6957 .loc 1 4392 3 is_stmt 1 view .LVU2245 +4392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6958 .loc 1 4392 3 view .LVU2246 + 6959 012e 0023 movs r3, #0 + 6960 0130 84F83C30 strb r3, [r4, #60] +4392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6961 .loc 1 4392 3 view .LVU2247 +4394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 6962 .loc 1 4394 3 view .LVU2248 + 6963 .LVL539: + 6964 .L408: +4395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6965 .loc 1 4395 1 is_stmt 0 view .LVU2249 + 6966 0134 38BD pop {r3, r4, r5, pc} + 6967 .LVL540: + 6968 .L417: +4281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6969 .loc 1 4281 3 view .LVU2250 + 6970 0136 0220 movs r0, #2 + 6971 .LVL541: +4281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 6972 .loc 1 4281 3 view .LVU2251 + 6973 0138 FCE7 b .L408 + 6974 .cfi_endproc + 6975 .LFE202: + 6977 .section .text.TIM_TI1_SetConfig,"ax",%progbits + 6978 .align 1 + 6979 .global TIM_TI1_SetConfig + 6980 .syntax unified + 6981 .thumb + 6982 .thumb_func + 6983 .fpu fpv5-d16 + 6985 TIM_TI1_SetConfig: + 6986 .LVL542: + 6987 .LFB253: +7518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr1; + 6988 .loc 1 7518 1 is_stmt 1 view -0 + 6989 .cfi_startproc + ARM GAS /tmp/ccPLZXyC.s page 290 + + + 6990 @ args = 0, pretend = 0, frame = 0 + 6991 @ frame_needed = 0, uses_anonymous_args = 0 + 6992 @ link register save eliminated. +7518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr1; + 6993 .loc 1 7518 1 is_stmt 0 view .LVU2253 + 6994 0000 70B4 push {r4, r5, r6} + 6995 .LCFI66: + 6996 .cfi_def_cfa_offset 12 + 6997 .cfi_offset 4, -12 + 6998 .cfi_offset 5, -8 + 6999 .cfi_offset 6, -4 + 7000 0002 9446 mov ip, r2 +7519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 7001 .loc 1 7519 3 is_stmt 1 view .LVU2254 +7520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7002 .loc 1 7520 3 view .LVU2255 +7523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC1E; + 7003 .loc 1 7523 3 view .LVU2256 +7523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~TIM_CCER_CC1E; + 7004 .loc 1 7523 11 is_stmt 0 view .LVU2257 + 7005 0004 066A ldr r6, [r0, #32] + 7006 .LVL543: +7524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 = TIMx->CCMR1; + 7007 .loc 1 7524 3 is_stmt 1 view .LVU2258 +7524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 = TIMx->CCMR1; + 7008 .loc 1 7524 14 is_stmt 0 view .LVU2259 + 7009 0006 046A ldr r4, [r0, #32] + 7010 0008 24F00104 bic r4, r4, #1 + 7011 000c 0462 str r4, [r0, #32] +7525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7012 .loc 1 7525 3 is_stmt 1 view .LVU2260 +7525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7013 .loc 1 7525 12 is_stmt 0 view .LVU2261 + 7014 000e 8469 ldr r4, [r0, #24] + 7015 .LVL544: +7528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7016 .loc 1 7528 3 is_stmt 1 view .LVU2262 +7528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7017 .loc 1 7528 7 is_stmt 0 view .LVU2263 + 7018 0010 1D4D ldr r5, .L424 + 7019 0012 B0F1804F cmp r0, #1073741824 + 7020 0016 18BF it ne + 7021 0018 A842 cmpne r0, r5 + 7022 001a 23D0 beq .L421 +7528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7023 .loc 1 7528 7 discriminator 2 view .LVU2264 + 7024 001c 1B4A ldr r2, .L424+4 + 7025 .LVL545: +7528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7026 .loc 1 7528 7 discriminator 2 view .LVU2265 + 7027 001e 9042 cmp r0, r2 + 7028 0020 14BF ite ne + 7029 0022 0022 movne r2, #0 + 7030 0024 0122 moveq r2, #1 + 7031 0026 A5F57C45 sub r5, r5, #64512 + 7032 002a A842 cmp r0, r5 + 7033 002c 1AD0 beq .L421 + ARM GAS /tmp/ccPLZXyC.s page 291 + + + 7034 002e CAB9 cbnz r2, .L421 +7528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7035 .loc 1 7528 7 discriminator 4 view .LVU2266 + 7036 0030 02F18042 add r2, r2, #1073741824 + 7037 0034 02F58232 add r2, r2, #66560 + 7038 0038 9042 cmp r0, r2 + 7039 003a 14BF ite ne + 7040 003c 0022 movne r2, #0 + 7041 003e 0122 moveq r2, #1 + 7042 0040 05F50065 add r5, r5, #2048 + 7043 0044 A842 cmp r0, r5 + 7044 0046 0DD0 beq .L421 + 7045 0048 62B9 cbnz r2, .L421 +7528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7046 .loc 1 7528 7 discriminator 6 view .LVU2267 + 7047 004a 114A ldr r2, .L424+8 + 7048 004c 9042 cmp r0, r2 + 7049 004e 14BF ite ne + 7050 0050 0022 movne r2, #0 + 7051 0052 0122 moveq r2, #1 + 7052 0054 05F59A35 add r5, r5, #78848 + 7053 0058 A842 cmp r0, r5 + 7054 005a 03D0 beq .L421 + 7055 005c 12B9 cbnz r2, .L421 +7535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7056 .loc 1 7535 5 is_stmt 1 view .LVU2268 +7535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7057 .loc 1 7535 14 is_stmt 0 view .LVU2269 + 7058 005e 44F00102 orr r2, r4, #1 + 7059 .LVL546: +7535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7060 .loc 1 7535 14 view .LVU2270 + 7061 0062 03E0 b .L422 + 7062 .LVL547: + 7063 .L421: +7530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= TIM_ICSelection; + 7064 .loc 1 7530 5 is_stmt 1 view .LVU2271 +7530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= TIM_ICSelection; + 7065 .loc 1 7530 14 is_stmt 0 view .LVU2272 + 7066 0064 24F00302 bic r2, r4, #3 + 7067 .LVL548: +7531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7068 .loc 1 7531 5 is_stmt 1 view .LVU2273 +7531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7069 .loc 1 7531 14 is_stmt 0 view .LVU2274 + 7070 0068 42EA0C02 orr r2, r2, ip + 7071 .LVL549: + 7072 .L422: +7539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= ((TIM_ICFilter << 4U) & TIM_CCMR1_IC1F); + 7073 .loc 1 7539 3 is_stmt 1 view .LVU2275 +7539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= ((TIM_ICFilter << 4U) & TIM_CCMR1_IC1F); + 7074 .loc 1 7539 12 is_stmt 0 view .LVU2276 + 7075 006c 22F0F002 bic r2, r2, #240 + 7076 .LVL550: +7540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7077 .loc 1 7540 3 is_stmt 1 view .LVU2277 +7540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 292 + + + 7078 .loc 1 7540 30 is_stmt 0 view .LVU2278 + 7079 0070 1B01 lsls r3, r3, #4 + 7080 .LVL551: +7540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7081 .loc 1 7540 37 view .LVU2279 + 7082 0072 DBB2 uxtb r3, r3 +7540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7083 .loc 1 7540 12 view .LVU2280 + 7084 0074 1343 orrs r3, r3, r2 + 7085 .LVL552: +7543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP)); + 7086 .loc 1 7543 3 is_stmt 1 view .LVU2281 +7543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccer |= (TIM_ICPolarity & (TIM_CCER_CC1P | TIM_CCER_CC1NP)); + 7087 .loc 1 7543 11 is_stmt 0 view .LVU2282 + 7088 0076 26F00A02 bic r2, r6, #10 + 7089 .LVL553: +7544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7090 .loc 1 7544 3 is_stmt 1 view .LVU2283 +7544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7091 .loc 1 7544 30 is_stmt 0 view .LVU2284 + 7092 007a 01F00A01 and r1, r1, #10 + 7093 .LVL554: +7544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7094 .loc 1 7544 11 view .LVU2285 + 7095 007e 1143 orrs r1, r1, r2 + 7096 .LVL555: +7547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 7097 .loc 1 7547 3 is_stmt 1 view .LVU2286 +7547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER = tmpccer; + 7098 .loc 1 7547 15 is_stmt 0 view .LVU2287 + 7099 0080 8361 str r3, [r0, #24] +7548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7100 .loc 1 7548 3 is_stmt 1 view .LVU2288 +7548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7101 .loc 1 7548 14 is_stmt 0 view .LVU2289 + 7102 0082 0162 str r1, [r0, #32] +7549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7103 .loc 1 7549 1 view .LVU2290 + 7104 0084 70BC pop {r4, r5, r6} + 7105 .LCFI67: + 7106 .cfi_restore 6 + 7107 .cfi_restore 5 + 7108 .cfi_restore 4 + 7109 .cfi_def_cfa_offset 0 + 7110 0086 7047 bx lr + 7111 .L425: + 7112 .align 2 + 7113 .L424: + 7114 0088 00000140 .word 1073807360 + 7115 008c 00080040 .word 1073743872 + 7116 0090 00180040 .word 1073747968 + 7117 .cfi_endproc + 7118 .LFE253: + 7120 .section .text.HAL_TIM_IC_ConfigChannel,"ax",%progbits + 7121 .align 1 + 7122 .global HAL_TIM_IC_ConfigChannel + 7123 .syntax unified + ARM GAS /tmp/ccPLZXyC.s page 293 + + + 7124 .thumb + 7125 .thumb_func + 7126 .fpu fpv5-d16 + 7128 HAL_TIM_IC_ConfigChannel: + 7129 .LVL556: + 7130 .LFB201: +4168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 7131 .loc 1 4168 1 is_stmt 1 view -0 + 7132 .cfi_startproc + 7133 @ args = 0, pretend = 0, frame = 0 + 7134 @ frame_needed = 0, uses_anonymous_args = 0 +4168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 7135 .loc 1 4168 1 is_stmt 0 view .LVU2292 + 7136 0000 38B5 push {r3, r4, r5, lr} + 7137 .LCFI68: + 7138 .cfi_def_cfa_offset 16 + 7139 .cfi_offset 3, -16 + 7140 .cfi_offset 4, -12 + 7141 .cfi_offset 5, -8 + 7142 .cfi_offset 14, -4 +4169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7143 .loc 1 4169 3 is_stmt 1 view .LVU2293 + 7144 .LVL557: +4172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_POLARITY(sConfig->ICPolarity)); + 7145 .loc 1 4172 3 view .LVU2294 +4173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_SELECTION(sConfig->ICSelection)); + 7146 .loc 1 4173 3 view .LVU2295 +4174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_PRESCALER(sConfig->ICPrescaler)); + 7147 .loc 1 4174 3 view .LVU2296 +4175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_IC_FILTER(sConfig->ICFilter)); + 7148 .loc 1 4175 3 view .LVU2297 +4176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7149 .loc 1 4176 3 view .LVU2298 +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7150 .loc 1 4179 3 view .LVU2299 +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7151 .loc 1 4179 3 view .LVU2300 + 7152 0002 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 7153 0006 012B cmp r3, #1 + 7154 0008 5AD0 beq .L432 + 7155 000a 0446 mov r4, r0 + 7156 000c 0D46 mov r5, r1 +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7157 .loc 1 4179 3 discriminator 2 view .LVU2301 + 7158 000e 0123 movs r3, #1 + 7159 0010 80F83C30 strb r3, [r0, #60] +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7160 .loc 1 4179 3 discriminator 2 view .LVU2302 +4181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7161 .loc 1 4181 3 discriminator 2 view .LVU2303 +4181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7162 .loc 1 4181 6 is_stmt 0 discriminator 2 view .LVU2304 + 7163 0014 52B1 cbz r2, .L435 +4195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7164 .loc 1 4195 8 is_stmt 1 view .LVU2305 +4195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7165 .loc 1 4195 11 is_stmt 0 view .LVU2306 + ARM GAS /tmp/ccPLZXyC.s page 294 + + + 7166 0016 042A cmp r2, #4 + 7167 0018 1AD0 beq .L436 +4211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7168 .loc 1 4211 8 is_stmt 1 view .LVU2307 +4211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7169 .loc 1 4211 11 is_stmt 0 view .LVU2308 + 7170 001a 082A cmp r2, #8 + 7171 001c 2BD0 beq .L437 +4227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7172 .loc 1 4227 8 is_stmt 1 view .LVU2309 +4227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7173 .loc 1 4227 11 is_stmt 0 view .LVU2310 + 7174 001e 0C2A cmp r2, #12 + 7175 0020 3BD0 beq .L438 +4245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7176 .loc 1 4245 12 view .LVU2311 + 7177 0022 0120 movs r0, #1 + 7178 .LVL558: + 7179 .L429: +4248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7180 .loc 1 4248 3 is_stmt 1 view .LVU2312 +4248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7181 .loc 1 4248 3 view .LVU2313 + 7182 0024 0023 movs r3, #0 + 7183 0026 84F83C30 strb r3, [r4, #60] +4248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7184 .loc 1 4248 3 view .LVU2314 +4250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7185 .loc 1 4250 3 view .LVU2315 + 7186 .LVL559: + 7187 .L427: +4251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7188 .loc 1 4251 1 is_stmt 0 view .LVU2316 + 7189 002a 38BD pop {r3, r4, r5, pc} + 7190 .LVL560: + 7191 .L435: +4184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7192 .loc 1 4184 5 is_stmt 1 view .LVU2317 + 7193 002c CB68 ldr r3, [r1, #12] + 7194 002e 4A68 ldr r2, [r1, #4] + 7195 .LVL561: +4184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7196 .loc 1 4184 5 is_stmt 0 view .LVU2318 + 7197 0030 0968 ldr r1, [r1] + 7198 .LVL562: +4184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7199 .loc 1 4184 5 view .LVU2319 + 7200 0032 0068 ldr r0, [r0] + 7201 .LVL563: +4184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7202 .loc 1 4184 5 view .LVU2320 + 7203 0034 FFF7FEFF bl TIM_TI1_SetConfig + 7204 .LVL564: +4190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7205 .loc 1 4190 5 is_stmt 1 view .LVU2321 +4190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7206 .loc 1 4190 9 is_stmt 0 view .LVU2322 + ARM GAS /tmp/ccPLZXyC.s page 295 + + + 7207 0038 2268 ldr r2, [r4] +4190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7208 .loc 1 4190 27 view .LVU2323 + 7209 003a 9369 ldr r3, [r2, #24] + 7210 003c 23F00C03 bic r3, r3, #12 + 7211 0040 9361 str r3, [r2, #24] +4193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7212 .loc 1 4193 5 is_stmt 1 view .LVU2324 +4193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7213 .loc 1 4193 9 is_stmt 0 view .LVU2325 + 7214 0042 2268 ldr r2, [r4] +4193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7215 .loc 1 4193 27 view .LVU2326 + 7216 0044 9369 ldr r3, [r2, #24] +4193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7217 .loc 1 4193 37 view .LVU2327 + 7218 0046 A968 ldr r1, [r5, #8] +4193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7219 .loc 1 4193 27 view .LVU2328 + 7220 0048 0B43 orrs r3, r3, r1 + 7221 004a 9361 str r3, [r2, #24] +4169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7222 .loc 1 4169 21 view .LVU2329 + 7223 004c 0020 movs r0, #0 + 7224 004e E9E7 b .L429 + 7225 .LVL565: + 7226 .L436: +4198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7227 .loc 1 4198 5 is_stmt 1 view .LVU2330 +4200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7228 .loc 1 4200 5 view .LVU2331 + 7229 0050 CB68 ldr r3, [r1, #12] + 7230 0052 4A68 ldr r2, [r1, #4] + 7231 .LVL566: +4200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7232 .loc 1 4200 5 is_stmt 0 view .LVU2332 + 7233 0054 0968 ldr r1, [r1] + 7234 .LVL567: +4200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7235 .loc 1 4200 5 view .LVU2333 + 7236 0056 0068 ldr r0, [r0] + 7237 .LVL568: +4200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7238 .loc 1 4200 5 view .LVU2334 + 7239 0058 FFF7FEFF bl TIM_TI2_SetConfig + 7240 .LVL569: +4206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7241 .loc 1 4206 5 is_stmt 1 view .LVU2335 +4206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7242 .loc 1 4206 9 is_stmt 0 view .LVU2336 + 7243 005c 2268 ldr r2, [r4] +4206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7244 .loc 1 4206 27 view .LVU2337 + 7245 005e 9369 ldr r3, [r2, #24] + 7246 0060 23F44063 bic r3, r3, #3072 + 7247 0064 9361 str r3, [r2, #24] +4209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 296 + + + 7248 .loc 1 4209 5 is_stmt 1 view .LVU2338 +4209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7249 .loc 1 4209 9 is_stmt 0 view .LVU2339 + 7250 0066 2268 ldr r2, [r4] +4209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7251 .loc 1 4209 27 view .LVU2340 + 7252 0068 9369 ldr r3, [r2, #24] +4209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7253 .loc 1 4209 38 view .LVU2341 + 7254 006a A968 ldr r1, [r5, #8] +4209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7255 .loc 1 4209 27 view .LVU2342 + 7256 006c 43EA0123 orr r3, r3, r1, lsl #8 + 7257 0070 9361 str r3, [r2, #24] +4169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7258 .loc 1 4169 21 view .LVU2343 + 7259 0072 0020 movs r0, #0 + 7260 0074 D6E7 b .L429 + 7261 .LVL570: + 7262 .L437: +4214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7263 .loc 1 4214 5 is_stmt 1 view .LVU2344 +4216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7264 .loc 1 4216 5 view .LVU2345 + 7265 0076 CB68 ldr r3, [r1, #12] + 7266 0078 4A68 ldr r2, [r1, #4] + 7267 .LVL571: +4216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7268 .loc 1 4216 5 is_stmt 0 view .LVU2346 + 7269 007a 0968 ldr r1, [r1] + 7270 .LVL572: +4216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7271 .loc 1 4216 5 view .LVU2347 + 7272 007c 0068 ldr r0, [r0] + 7273 .LVL573: +4216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7274 .loc 1 4216 5 view .LVU2348 + 7275 007e FFF7FEFF bl TIM_TI3_SetConfig + 7276 .LVL574: +4222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7277 .loc 1 4222 5 is_stmt 1 view .LVU2349 +4222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7278 .loc 1 4222 9 is_stmt 0 view .LVU2350 + 7279 0082 2268 ldr r2, [r4] +4222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7280 .loc 1 4222 27 view .LVU2351 + 7281 0084 D369 ldr r3, [r2, #28] + 7282 0086 23F00C03 bic r3, r3, #12 + 7283 008a D361 str r3, [r2, #28] +4225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7284 .loc 1 4225 5 is_stmt 1 view .LVU2352 +4225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7285 .loc 1 4225 9 is_stmt 0 view .LVU2353 + 7286 008c 2268 ldr r2, [r4] +4225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7287 .loc 1 4225 27 view .LVU2354 + 7288 008e D369 ldr r3, [r2, #28] + ARM GAS /tmp/ccPLZXyC.s page 297 + + +4225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7289 .loc 1 4225 37 view .LVU2355 + 7290 0090 A968 ldr r1, [r5, #8] +4225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7291 .loc 1 4225 27 view .LVU2356 + 7292 0092 0B43 orrs r3, r3, r1 + 7293 0094 D361 str r3, [r2, #28] +4169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7294 .loc 1 4169 21 view .LVU2357 + 7295 0096 0020 movs r0, #0 + 7296 0098 C4E7 b .L429 + 7297 .LVL575: + 7298 .L438: +4230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7299 .loc 1 4230 5 is_stmt 1 view .LVU2358 +4232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7300 .loc 1 4232 5 view .LVU2359 + 7301 009a CB68 ldr r3, [r1, #12] + 7302 009c 4A68 ldr r2, [r1, #4] + 7303 .LVL576: +4232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7304 .loc 1 4232 5 is_stmt 0 view .LVU2360 + 7305 009e 0968 ldr r1, [r1] + 7306 .LVL577: +4232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7307 .loc 1 4232 5 view .LVU2361 + 7308 00a0 0068 ldr r0, [r0] + 7309 .LVL578: +4232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICPolarity, + 7310 .loc 1 4232 5 view .LVU2362 + 7311 00a2 FFF7FEFF bl TIM_TI4_SetConfig + 7312 .LVL579: +4238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7313 .loc 1 4238 5 is_stmt 1 view .LVU2363 +4238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7314 .loc 1 4238 9 is_stmt 0 view .LVU2364 + 7315 00a6 2268 ldr r2, [r4] +4238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7316 .loc 1 4238 27 view .LVU2365 + 7317 00a8 D369 ldr r3, [r2, #28] + 7318 00aa 23F44063 bic r3, r3, #3072 + 7319 00ae D361 str r3, [r2, #28] +4241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7320 .loc 1 4241 5 is_stmt 1 view .LVU2366 +4241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7321 .loc 1 4241 9 is_stmt 0 view .LVU2367 + 7322 00b0 2268 ldr r2, [r4] +4241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7323 .loc 1 4241 27 view .LVU2368 + 7324 00b2 D369 ldr r3, [r2, #28] +4241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7325 .loc 1 4241 38 view .LVU2369 + 7326 00b4 A968 ldr r1, [r5, #8] +4241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7327 .loc 1 4241 27 view .LVU2370 + 7328 00b6 43EA0123 orr r3, r3, r1, lsl #8 + 7329 00ba D361 str r3, [r2, #28] + ARM GAS /tmp/ccPLZXyC.s page 298 + + +4169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7330 .loc 1 4169 21 view .LVU2371 + 7331 00bc 0020 movs r0, #0 + 7332 00be B1E7 b .L429 + 7333 .LVL580: + 7334 .L432: +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7335 .loc 1 4179 3 view .LVU2372 + 7336 00c0 0220 movs r0, #2 + 7337 .LVL581: +4179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7338 .loc 1 4179 3 view .LVU2373 + 7339 00c2 B2E7 b .L427 + 7340 .cfi_endproc + 7341 .LFE201: + 7343 .section .text.HAL_TIM_OnePulse_ConfigChannel,"ax",%progbits + 7344 .align 1 + 7345 .global HAL_TIM_OnePulse_ConfigChannel + 7346 .syntax unified + 7347 .thumb + 7348 .thumb_func + 7349 .fpu fpv5-d16 + 7351 HAL_TIM_OnePulse_ConfigChannel: + 7352 .LVL582: + 7353 .LFB203: +4418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 7354 .loc 1 4418 1 is_stmt 1 view -0 + 7355 .cfi_startproc + 7356 @ args = 0, pretend = 0, frame = 32 + 7357 @ frame_needed = 0, uses_anonymous_args = 0 +4419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_OC_InitTypeDef temp1; + 7358 .loc 1 4419 3 view .LVU2375 +4420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7359 .loc 1 4420 3 view .LVU2376 +4423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_OPM_CHANNELS(InputChannel)); + 7360 .loc 1 4423 3 view .LVU2377 +4424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7361 .loc 1 4424 3 view .LVU2378 +4426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7362 .loc 1 4426 3 view .LVU2379 +4426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7363 .loc 1 4426 6 is_stmt 0 view .LVU2380 + 7364 0000 9A42 cmp r2, r3 + 7365 0002 76D0 beq .L447 +4418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 7366 .loc 1 4418 1 view .LVU2381 + 7367 0004 70B5 push {r4, r5, r6, lr} + 7368 .LCFI69: + 7369 .cfi_def_cfa_offset 16 + 7370 .cfi_offset 4, -16 + 7371 .cfi_offset 5, -12 + 7372 .cfi_offset 6, -8 + 7373 .cfi_offset 14, -4 + 7374 0006 88B0 sub sp, sp, #32 + 7375 .LCFI70: + 7376 .cfi_def_cfa_offset 48 + 7377 0008 0446 mov r4, r0 + ARM GAS /tmp/ccPLZXyC.s page 299 + + + 7378 000a 0D46 mov r5, r1 + 7379 000c 1E46 mov r6, r3 +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7380 .loc 1 4429 5 is_stmt 1 view .LVU2382 +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7381 .loc 1 4429 5 view .LVU2383 + 7382 000e 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 7383 .LVL583: +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7384 .loc 1 4429 5 is_stmt 0 view .LVU2384 + 7385 0012 012B cmp r3, #1 + 7386 0014 6FD0 beq .L448 +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7387 .loc 1 4429 5 is_stmt 1 discriminator 2 view .LVU2385 + 7388 0016 0123 movs r3, #1 + 7389 0018 80F83C30 strb r3, [r0, #60] +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7390 .loc 1 4429 5 discriminator 2 view .LVU2386 +4431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7391 .loc 1 4431 5 discriminator 2 view .LVU2387 +4431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7392 .loc 1 4431 17 is_stmt 0 discriminator 2 view .LVU2388 + 7393 001c 0223 movs r3, #2 + 7394 001e 80F83D30 strb r3, [r0, #61] +4434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.Pulse = sConfig->Pulse; + 7395 .loc 1 4434 5 is_stmt 1 discriminator 2 view .LVU2389 +4434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.Pulse = sConfig->Pulse; + 7396 .loc 1 4434 27 is_stmt 0 discriminator 2 view .LVU2390 + 7397 0022 0B68 ldr r3, [r1] +4434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.Pulse = sConfig->Pulse; + 7398 .loc 1 4434 18 discriminator 2 view .LVU2391 + 7399 0024 0193 str r3, [sp, #4] +4435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCPolarity = sConfig->OCPolarity; + 7400 .loc 1 4435 5 is_stmt 1 discriminator 2 view .LVU2392 +4435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCPolarity = sConfig->OCPolarity; + 7401 .loc 1 4435 26 is_stmt 0 discriminator 2 view .LVU2393 + 7402 0026 4B68 ldr r3, [r1, #4] +4435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCPolarity = sConfig->OCPolarity; + 7403 .loc 1 4435 17 discriminator 2 view .LVU2394 + 7404 0028 0293 str r3, [sp, #8] +4436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCNPolarity = sConfig->OCNPolarity; + 7405 .loc 1 4436 5 is_stmt 1 discriminator 2 view .LVU2395 +4436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCNPolarity = sConfig->OCNPolarity; + 7406 .loc 1 4436 31 is_stmt 0 discriminator 2 view .LVU2396 + 7407 002a 8B68 ldr r3, [r1, #8] +4436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCNPolarity = sConfig->OCNPolarity; + 7408 .loc 1 4436 22 discriminator 2 view .LVU2397 + 7409 002c 0393 str r3, [sp, #12] +4437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCIdleState = sConfig->OCIdleState; + 7410 .loc 1 4437 5 is_stmt 1 discriminator 2 view .LVU2398 +4437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCIdleState = sConfig->OCIdleState; + 7411 .loc 1 4437 32 is_stmt 0 discriminator 2 view .LVU2399 + 7412 002e CB68 ldr r3, [r1, #12] +4437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCIdleState = sConfig->OCIdleState; + 7413 .loc 1 4437 23 discriminator 2 view .LVU2400 + 7414 0030 0493 str r3, [sp, #16] +4438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCNIdleState = sConfig->OCNIdleState; + ARM GAS /tmp/ccPLZXyC.s page 300 + + + 7415 .loc 1 4438 5 is_stmt 1 discriminator 2 view .LVU2401 +4438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCNIdleState = sConfig->OCNIdleState; + 7416 .loc 1 4438 32 is_stmt 0 discriminator 2 view .LVU2402 + 7417 0032 0B69 ldr r3, [r1, #16] +4438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** temp1.OCNIdleState = sConfig->OCNIdleState; + 7418 .loc 1 4438 23 discriminator 2 view .LVU2403 + 7419 0034 0693 str r3, [sp, #24] +4439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7420 .loc 1 4439 5 is_stmt 1 discriminator 2 view .LVU2404 +4439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7421 .loc 1 4439 33 is_stmt 0 discriminator 2 view .LVU2405 + 7422 0036 4B69 ldr r3, [r1, #20] +4439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7423 .loc 1 4439 24 discriminator 2 view .LVU2406 + 7424 0038 0793 str r3, [sp, #28] +4441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7425 .loc 1 4441 5 is_stmt 1 discriminator 2 view .LVU2407 + 7426 003a 52B1 cbz r2, .L441 +4441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7427 .loc 1 4441 5 is_stmt 0 view .LVU2408 + 7428 003c 042A cmp r2, #4 + 7429 003e 11D0 beq .L442 + 7430 0040 0120 movs r0, #1 + 7431 .LVL584: + 7432 .L443: +4514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7433 .loc 1 4514 5 is_stmt 1 view .LVU2409 +4514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7434 .loc 1 4514 17 is_stmt 0 view .LVU2410 + 7435 0042 0123 movs r3, #1 + 7436 0044 84F83D30 strb r3, [r4, #61] +4516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7437 .loc 1 4516 5 is_stmt 1 view .LVU2411 +4516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7438 .loc 1 4516 5 view .LVU2412 + 7439 0048 0023 movs r3, #0 + 7440 004a 84F83C30 strb r3, [r4, #60] +4516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7441 .loc 1 4516 5 view .LVU2413 +4518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7442 .loc 1 4518 5 view .LVU2414 + 7443 .LVL585: + 7444 .L440: +4524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7445 .loc 1 4524 1 is_stmt 0 view .LVU2415 + 7446 004e 08B0 add sp, sp, #32 + 7447 .LCFI71: + 7448 .cfi_remember_state + 7449 .cfi_def_cfa_offset 16 + 7450 @ sp needed + 7451 0050 70BD pop {r4, r5, r6, pc} + 7452 .LVL586: + 7453 .L441: + 7454 .LCFI72: + 7455 .cfi_restore_state +4445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7456 .loc 1 4445 9 is_stmt 1 view .LVU2416 + ARM GAS /tmp/ccPLZXyC.s page 301 + + +4447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7457 .loc 1 4447 9 view .LVU2417 + 7458 0052 01A9 add r1, sp, #4 + 7459 .LVL587: +4447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7460 .loc 1 4447 9 is_stmt 0 view .LVU2418 + 7461 0054 0068 ldr r0, [r0] + 7462 .LVL588: +4447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7463 .loc 1 4447 9 view .LVU2419 + 7464 0056 FFF7FEFF bl TIM_OC1_SetConfig + 7465 .LVL589: +4448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7466 .loc 1 4448 9 is_stmt 1 view .LVU2420 +4464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7467 .loc 1 4464 5 view .LVU2421 + 7468 .L444: +4466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7469 .loc 1 4466 7 view .LVU2422 + 7470 005a 46B1 cbz r6, .L445 + 7471 005c 042E cmp r6, #4 + 7472 005e 27D0 beq .L446 + 7473 0060 0120 movs r0, #1 + 7474 0062 EEE7 b .L443 + 7475 .LVL590: + 7476 .L442: +4453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7477 .loc 1 4453 9 view .LVU2423 +4455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7478 .loc 1 4455 9 view .LVU2424 + 7479 0064 01A9 add r1, sp, #4 + 7480 .LVL591: +4455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7481 .loc 1 4455 9 is_stmt 0 view .LVU2425 + 7482 0066 0068 ldr r0, [r0] + 7483 .LVL592: +4455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7484 .loc 1 4455 9 view .LVU2426 + 7485 0068 FFF7FEFF bl TIM_OC2_SetConfig + 7486 .LVL593: +4456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7487 .loc 1 4456 9 is_stmt 1 view .LVU2427 +4464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7488 .loc 1 4464 5 view .LVU2428 + 7489 006c F5E7 b .L444 + 7490 .L445: +4470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7491 .loc 1 4470 11 view .LVU2429 +4472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICSelection, sConfig->ICFilter); + 7492 .loc 1 4472 11 view .LVU2430 + 7493 006e 2B6A ldr r3, [r5, #32] + 7494 0070 EA69 ldr r2, [r5, #28] + 7495 0072 A969 ldr r1, [r5, #24] + 7496 0074 2068 ldr r0, [r4] + 7497 0076 FFF7FEFF bl TIM_TI1_SetConfig + 7498 .LVL594: +4476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 302 + + + 7499 .loc 1 4476 11 view .LVU2431 +4476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7500 .loc 1 4476 15 is_stmt 0 view .LVU2432 + 7501 007a 2268 ldr r2, [r4] +4476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7502 .loc 1 4476 33 view .LVU2433 + 7503 007c 9369 ldr r3, [r2, #24] + 7504 007e 23F00C03 bic r3, r3, #12 + 7505 0082 9361 str r3, [r2, #24] +4479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_TS_TI1FP1; + 7506 .loc 1 4479 11 is_stmt 1 view .LVU2434 +4479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_TS_TI1FP1; + 7507 .loc 1 4479 15 is_stmt 0 view .LVU2435 + 7508 0084 2268 ldr r2, [r4] +4479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_TS_TI1FP1; + 7509 .loc 1 4479 32 view .LVU2436 + 7510 0086 9368 ldr r3, [r2, #8] + 7511 0088 23F07003 bic r3, r3, #112 + 7512 008c 9360 str r3, [r2, #8] +4480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7513 .loc 1 4480 11 is_stmt 1 view .LVU2437 +4480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7514 .loc 1 4480 15 is_stmt 0 view .LVU2438 + 7515 008e 2268 ldr r2, [r4] +4480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7516 .loc 1 4480 32 view .LVU2439 + 7517 0090 9368 ldr r3, [r2, #8] + 7518 0092 43F05003 orr r3, r3, #80 + 7519 0096 9360 str r3, [r2, #8] +4483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + 7520 .loc 1 4483 11 is_stmt 1 view .LVU2440 +4483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + 7521 .loc 1 4483 15 is_stmt 0 view .LVU2441 + 7522 0098 2268 ldr r2, [r4] +4483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + 7523 .loc 1 4483 32 view .LVU2442 + 7524 009a 9168 ldr r1, [r2, #8] + 7525 009c 174B ldr r3, .L453 + 7526 009e 0B40 ands r3, r3, r1 + 7527 00a0 9360 str r3, [r2, #8] +4484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7528 .loc 1 4484 11 is_stmt 1 view .LVU2443 +4484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7529 .loc 1 4484 15 is_stmt 0 view .LVU2444 + 7530 00a2 2268 ldr r2, [r4] +4484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7531 .loc 1 4484 32 view .LVU2445 + 7532 00a4 9368 ldr r3, [r2, #8] + 7533 00a6 43F00603 orr r3, r3, #6 + 7534 00aa 9360 str r3, [r2, #8] +4485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7535 .loc 1 4485 11 is_stmt 1 view .LVU2446 + 7536 00ac 0020 movs r0, #0 + 7537 00ae C8E7 b .L443 + 7538 .L446: +4490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7539 .loc 1 4490 11 view .LVU2447 + ARM GAS /tmp/ccPLZXyC.s page 303 + + +4492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sConfig->ICSelection, sConfig->ICFilter); + 7540 .loc 1 4492 11 view .LVU2448 + 7541 00b0 2B6A ldr r3, [r5, #32] + 7542 00b2 EA69 ldr r2, [r5, #28] + 7543 00b4 A969 ldr r1, [r5, #24] + 7544 00b6 2068 ldr r0, [r4] + 7545 00b8 FFF7FEFF bl TIM_TI2_SetConfig + 7546 .LVL595: +4496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7547 .loc 1 4496 11 view .LVU2449 +4496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7548 .loc 1 4496 15 is_stmt 0 view .LVU2450 + 7549 00bc 2268 ldr r2, [r4] +4496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7550 .loc 1 4496 33 view .LVU2451 + 7551 00be 9369 ldr r3, [r2, #24] + 7552 00c0 23F44063 bic r3, r3, #3072 + 7553 00c4 9361 str r3, [r2, #24] +4499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_TS_TI2FP2; + 7554 .loc 1 4499 11 is_stmt 1 view .LVU2452 +4499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_TS_TI2FP2; + 7555 .loc 1 4499 15 is_stmt 0 view .LVU2453 + 7556 00c6 2268 ldr r2, [r4] +4499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_TS_TI2FP2; + 7557 .loc 1 4499 32 view .LVU2454 + 7558 00c8 9368 ldr r3, [r2, #8] + 7559 00ca 23F07003 bic r3, r3, #112 + 7560 00ce 9360 str r3, [r2, #8] +4500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7561 .loc 1 4500 11 is_stmt 1 view .LVU2455 +4500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7562 .loc 1 4500 15 is_stmt 0 view .LVU2456 + 7563 00d0 2268 ldr r2, [r4] +4500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7564 .loc 1 4500 32 view .LVU2457 + 7565 00d2 9368 ldr r3, [r2, #8] + 7566 00d4 43F06003 orr r3, r3, #96 + 7567 00d8 9360 str r3, [r2, #8] +4503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + 7568 .loc 1 4503 11 is_stmt 1 view .LVU2458 +4503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + 7569 .loc 1 4503 15 is_stmt 0 view .LVU2459 + 7570 00da 2268 ldr r2, [r4] +4503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_TRIGGER; + 7571 .loc 1 4503 32 view .LVU2460 + 7572 00dc 9168 ldr r1, [r2, #8] + 7573 00de 074B ldr r3, .L453 + 7574 00e0 0B40 ands r3, r3, r1 + 7575 00e2 9360 str r3, [r2, #8] +4504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7576 .loc 1 4504 11 is_stmt 1 view .LVU2461 +4504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7577 .loc 1 4504 15 is_stmt 0 view .LVU2462 + 7578 00e4 2268 ldr r2, [r4] +4504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7579 .loc 1 4504 32 view .LVU2463 + 7580 00e6 9368 ldr r3, [r2, #8] + ARM GAS /tmp/ccPLZXyC.s page 304 + + + 7581 00e8 43F00603 orr r3, r3, #6 + 7582 00ec 9360 str r3, [r2, #8] +4505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7583 .loc 1 4505 11 is_stmt 1 view .LVU2464 + 7584 00ee 0020 movs r0, #0 + 7585 00f0 A7E7 b .L443 + 7586 .LVL596: + 7587 .L447: + 7588 .LCFI73: + 7589 .cfi_def_cfa_offset 0 + 7590 .cfi_restore 4 + 7591 .cfi_restore 5 + 7592 .cfi_restore 6 + 7593 .cfi_restore 14 +4522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7594 .loc 1 4522 12 is_stmt 0 view .LVU2465 + 7595 00f2 0120 movs r0, #1 + 7596 .LVL597: +4524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7597 .loc 1 4524 1 view .LVU2466 + 7598 00f4 7047 bx lr + 7599 .LVL598: + 7600 .L448: + 7601 .LCFI74: + 7602 .cfi_def_cfa_offset 48 + 7603 .cfi_offset 4, -16 + 7604 .cfi_offset 5, -12 + 7605 .cfi_offset 6, -8 + 7606 .cfi_offset 14, -4 +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7607 .loc 1 4429 5 view .LVU2467 + 7608 00f6 0220 movs r0, #2 + 7609 .LVL599: +4429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7610 .loc 1 4429 5 view .LVU2468 + 7611 00f8 A9E7 b .L440 + 7612 .L454: + 7613 00fa 00BF .align 2 + 7614 .L453: + 7615 00fc F8FFFEFF .word -65544 + 7616 .cfi_endproc + 7617 .LFE203: + 7619 .section .text.TIM_ETR_SetConfig,"ax",%progbits + 7620 .align 1 + 7621 .global TIM_ETR_SetConfig + 7622 .syntax unified + 7623 .thumb + 7624 .thumb_func + 7625 .fpu fpv5-d16 + 7627 TIM_ETR_SetConfig: + 7628 .LVL600: + 7629 .LFB260: +7793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Configures the TIMx External Trigger (ETR). +7795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ExtTRGPrescaler The external Trigger Prescaler. +7797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: + ARM GAS /tmp/ccPLZXyC.s page 305 + + +7798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ETRPRESCALER_DIV1: ETRP Prescaler OFF. +7799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ETRPRESCALER_DIV2: ETRP frequency divided by 2. +7800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ETRPRESCALER_DIV4: ETRP frequency divided by 4. +7801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ETRPRESCALER_DIV8: ETRP frequency divided by 8. +7802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIM_ExtTRGPolarity The external Trigger Polarity. +7803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ETRPOLARITY_INVERTED: active low or falling edge active. +7805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_ETRPOLARITY_NONINVERTED: active high or rising edge active. +7806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param ExtTRGFilter External Trigger Filter. +7807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter must be a value between 0x00 and 0x0F +7808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, +7811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) +7812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7630 .loc 1 7812 1 is_stmt 1 view -0 + 7631 .cfi_startproc + 7632 @ args = 0, pretend = 0, frame = 0 + 7633 @ frame_needed = 0, uses_anonymous_args = 0 + 7634 @ link register save eliminated. + 7635 .loc 1 7812 1 is_stmt 0 view .LVU2470 + 7636 0000 10B4 push {r4} + 7637 .LCFI75: + 7638 .cfi_def_cfa_offset 4 + 7639 .cfi_offset 4, -4 +7813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 7640 .loc 1 7813 3 is_stmt 1 view .LVU2471 +7814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr = TIMx->SMCR; + 7641 .loc 1 7815 3 view .LVU2472 + 7642 .loc 1 7815 11 is_stmt 0 view .LVU2473 + 7643 0002 8468 ldr r4, [r0, #8] + 7644 .LVL601: +7816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the ETR Bits */ +7818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 7645 .loc 1 7818 3 is_stmt 1 view .LVU2474 + 7646 .loc 1 7818 11 is_stmt 0 view .LVU2475 + 7647 0004 24F47F4C bic ip, r4, #65280 + 7648 .LVL602: +7819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Prescaler, the Filter value and the Polarity */ +7821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); + 7649 .loc 1 7821 3 is_stmt 1 view .LVU2476 + 7650 .loc 1 7821 67 is_stmt 0 view .LVU2477 + 7651 0008 42EA0322 orr r2, r2, r3, lsl #8 + 7652 .LVL603: + 7653 .loc 1 7821 45 view .LVU2478 + 7654 000c 0A43 orrs r2, r2, r1 + 7655 .loc 1 7821 11 view .LVU2479 + 7656 000e 42EA0C02 orr r2, r2, ip + 7657 .LVL604: +7822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx SMCR */ +7824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->SMCR = tmpsmcr; + 7658 .loc 1 7824 3 is_stmt 1 view .LVU2480 + 7659 .loc 1 7824 14 is_stmt 0 view .LVU2481 + ARM GAS /tmp/ccPLZXyC.s page 306 + + + 7660 0012 8260 str r2, [r0, #8] +7825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7661 .loc 1 7825 1 view .LVU2482 + 7662 0014 5DF8044B ldr r4, [sp], #4 + 7663 .LCFI76: + 7664 .cfi_restore 4 + 7665 .cfi_def_cfa_offset 0 + 7666 0018 7047 bx lr + 7667 .cfi_endproc + 7668 .LFE260: + 7670 .section .text.HAL_TIM_ConfigOCrefClear,"ax",%progbits + 7671 .align 1 + 7672 .global HAL_TIM_ConfigOCrefClear + 7673 .syntax unified + 7674 .thumb + 7675 .thumb_func + 7676 .fpu fpv5-d16 + 7678 HAL_TIM_ConfigOCrefClear: + 7679 .LVL605: + 7680 .LFB211: +5291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 7681 .loc 1 5291 1 is_stmt 1 view -0 + 7682 .cfi_startproc + 7683 @ args = 0, pretend = 0, frame = 0 + 7684 @ frame_needed = 0, uses_anonymous_args = 0 +5292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7685 .loc 1 5292 3 view .LVU2484 +5295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLEARINPUT_SOURCE(sClearInputConfig->ClearInputSource)); + 7686 .loc 1 5295 3 view .LVU2485 +5296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7687 .loc 1 5296 3 view .LVU2486 +5299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7688 .loc 1 5299 3 view .LVU2487 +5299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7689 .loc 1 5299 3 view .LVU2488 + 7690 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 7691 0004 012B cmp r3, #1 + 7692 0006 00F09B80 beq .L477 +5291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 7693 .loc 1 5291 1 is_stmt 0 discriminator 2 view .LVU2489 + 7694 000a 70B5 push {r4, r5, r6, lr} + 7695 .LCFI77: + 7696 .cfi_def_cfa_offset 16 + 7697 .cfi_offset 4, -16 + 7698 .cfi_offset 5, -12 + 7699 .cfi_offset 6, -8 + 7700 .cfi_offset 14, -4 + 7701 000c 0446 mov r4, r0 + 7702 000e 0D46 mov r5, r1 + 7703 0010 1646 mov r6, r2 +5299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7704 .loc 1 5299 3 is_stmt 1 discriminator 2 view .LVU2490 + 7705 0012 0123 movs r3, #1 + 7706 0014 80F83C30 strb r3, [r0, #60] +5299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7707 .loc 1 5299 3 discriminator 2 view .LVU2491 +5301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 307 + + + 7708 .loc 1 5301 3 discriminator 2 view .LVU2492 +5301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7709 .loc 1 5301 15 is_stmt 0 discriminator 2 view .LVU2493 + 7710 0018 0223 movs r3, #2 + 7711 001a 80F83D30 strb r3, [r0, #61] +5303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7712 .loc 1 5303 3 is_stmt 1 discriminator 2 view .LVU2494 +5303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7713 .loc 1 5303 28 is_stmt 0 discriminator 2 view .LVU2495 + 7714 001e 4B68 ldr r3, [r1, #4] +5303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7715 .loc 1 5303 3 discriminator 2 view .LVU2496 + 7716 0020 4BB1 cbz r3, .L459 +5303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7717 .loc 1 5303 3 view .LVU2497 + 7718 0022 012B cmp r3, #1 + 7719 0024 1BD0 beq .L460 + 7720 0026 0120 movs r0, #1 + 7721 .LVL606: + 7722 .L461: +5432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7723 .loc 1 5432 3 is_stmt 1 view .LVU2498 +5432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7724 .loc 1 5432 15 is_stmt 0 view .LVU2499 + 7725 0028 0123 movs r3, #1 + 7726 002a 84F83D30 strb r3, [r4, #61] +5434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7727 .loc 1 5434 3 is_stmt 1 view .LVU2500 +5434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7728 .loc 1 5434 3 view .LVU2501 + 7729 002e 0023 movs r3, #0 + 7730 0030 84F83C30 strb r3, [r4, #60] +5434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7731 .loc 1 5434 3 view .LVU2502 +5436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7732 .loc 1 5436 3 view .LVU2503 + 7733 .L458: +5437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7734 .loc 1 5437 1 is_stmt 0 view .LVU2504 + 7735 0034 70BD pop {r4, r5, r6, pc} + 7736 .LVL607: + 7737 .L459: +5308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7738 .loc 1 5308 7 is_stmt 1 view .LVU2505 + 7739 0036 0268 ldr r2, [r0] + 7740 .LVL608: +5308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 7741 .loc 1 5308 7 is_stmt 0 view .LVU2506 + 7742 0038 9368 ldr r3, [r2, #8] + 7743 003a 23F47F43 bic r3, r3, #65280 + 7744 003e 9360 str r3, [r2, #8] +5309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7745 .loc 1 5309 7 is_stmt 1 view .LVU2507 +5339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7746 .loc 1 5339 3 view .LVU2508 + 7747 .LVL609: + 7748 .L462: + ARM GAS /tmp/ccPLZXyC.s page 308 + + +5341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7749 .loc 1 5341 5 view .LVU2509 + 7750 0040 142E cmp r6, #20 + 7751 0042 7BD8 bhi .L478 + 7752 0044 DFE806F0 tbb [pc, r6] + 7753 .L465: + 7754 0048 1A .byte (.L470-.L465)/2 + 7755 0049 7A .byte (.L478-.L465)/2 + 7756 004a 7A .byte (.L478-.L465)/2 + 7757 004b 7A .byte (.L478-.L465)/2 + 7758 004c 2A .byte (.L469-.L465)/2 + 7759 004d 7A .byte (.L478-.L465)/2 + 7760 004e 7A .byte (.L478-.L465)/2 + 7761 004f 7A .byte (.L478-.L465)/2 + 7762 0050 3A .byte (.L468-.L465)/2 + 7763 0051 7A .byte (.L478-.L465)/2 + 7764 0052 7A .byte (.L478-.L465)/2 + 7765 0053 7A .byte (.L478-.L465)/2 + 7766 0054 4A .byte (.L467-.L465)/2 + 7767 0055 7A .byte (.L478-.L465)/2 + 7768 0056 7A .byte (.L478-.L465)/2 + 7769 0057 7A .byte (.L478-.L465)/2 + 7770 0058 5A .byte (.L466-.L465)/2 + 7771 0059 7A .byte (.L478-.L465)/2 + 7772 005a 7A .byte (.L478-.L465)/2 + 7773 005b 7A .byte (.L478-.L465)/2 + 7774 005c 6A .byte (.L464-.L465)/2 + 7775 .LVL610: + 7776 005d 00 .p2align 1 + 7777 .L460: +5315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLEARINPUT_PRESCALER(sClearInputConfig->ClearInputPrescaler)); + 7778 .loc 1 5315 7 view .LVU2510 +5316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLEARINPUT_FILTER(sClearInputConfig->ClearInputFilter)); + 7779 .loc 1 5316 7 view .LVU2511 +5317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7780 .loc 1 5317 7 view .LVU2512 +5320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7781 .loc 1 5320 7 view .LVU2513 +5320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7782 .loc 1 5320 28 is_stmt 0 view .LVU2514 + 7783 005e C968 ldr r1, [r1, #12] + 7784 .LVL611: +5320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7785 .loc 1 5320 10 view .LVU2515 + 7786 0060 31B1 cbz r1, .L463 +5322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); + 7787 .loc 1 5322 9 is_stmt 1 view .LVU2516 +5322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); + 7788 .loc 1 5322 21 is_stmt 0 view .LVU2517 + 7789 0062 0120 movs r0, #1 + 7790 .LVL612: +5322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); + 7791 .loc 1 5322 21 view .LVU2518 + 7792 0064 84F83D00 strb r0, [r4, #61] +5323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 7793 .loc 1 5323 9 is_stmt 1 view .LVU2519 +5323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + ARM GAS /tmp/ccPLZXyC.s page 309 + + + 7794 .loc 1 5323 9 view .LVU2520 + 7795 0068 0023 movs r3, #0 + 7796 006a 84F83C30 strb r3, [r4, #60] +5323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 7797 .loc 1 5323 9 view .LVU2521 +5324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7798 .loc 1 5324 9 view .LVU2522 +5324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7799 .loc 1 5324 16 is_stmt 0 view .LVU2523 + 7800 006e E1E7 b .L458 + 7801 .LVL613: + 7802 .L463: +5327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClearInputConfig->ClearInputPrescaler, + 7803 .loc 1 5327 7 is_stmt 1 view .LVU2524 + 7804 0070 2B69 ldr r3, [r5, #16] + 7805 0072 AA68 ldr r2, [r5, #8] + 7806 .LVL614: +5327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClearInputConfig->ClearInputPrescaler, + 7807 .loc 1 5327 7 is_stmt 0 view .LVU2525 + 7808 0074 0068 ldr r0, [r0] + 7809 .LVL615: +5327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClearInputConfig->ClearInputPrescaler, + 7810 .loc 1 5327 7 view .LVU2526 + 7811 0076 FFF7FEFF bl TIM_ETR_SetConfig + 7812 .LVL616: +5331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7813 .loc 1 5331 7 is_stmt 1 view .LVU2527 +5339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7814 .loc 1 5339 3 view .LVU2528 + 7815 007a E1E7 b .L462 + 7816 .L470: +5345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7817 .loc 1 5345 9 view .LVU2529 +5345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7818 .loc 1 5345 30 is_stmt 0 view .LVU2530 + 7819 007c 2B68 ldr r3, [r5] +5345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7820 .loc 1 5345 12 view .LVU2531 + 7821 007e 33B1 cbz r3, .L471 +5348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7822 .loc 1 5348 11 is_stmt 1 view .LVU2532 + 7823 0080 2268 ldr r2, [r4] + 7824 0082 9369 ldr r3, [r2, #24] + 7825 0084 43F08003 orr r3, r3, #128 + 7826 0088 9361 str r3, [r2, #24] + 7827 008a 0020 movs r0, #0 + 7828 008c CCE7 b .L461 + 7829 .L471: +5353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7830 .loc 1 5353 11 view .LVU2533 + 7831 008e 2268 ldr r2, [r4] + 7832 0090 9369 ldr r3, [r2, #24] + 7833 0092 23F08003 bic r3, r3, #128 + 7834 0096 9361 str r3, [r2, #24] + 7835 0098 0020 movs r0, #0 + 7836 009a C5E7 b .L461 + 7837 .L469: + ARM GAS /tmp/ccPLZXyC.s page 310 + + +5359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7838 .loc 1 5359 9 view .LVU2534 +5359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7839 .loc 1 5359 30 is_stmt 0 view .LVU2535 + 7840 009c 2B68 ldr r3, [r5] +5359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7841 .loc 1 5359 12 view .LVU2536 + 7842 009e 33B1 cbz r3, .L472 +5362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7843 .loc 1 5362 11 is_stmt 1 view .LVU2537 + 7844 00a0 2268 ldr r2, [r4] + 7845 00a2 9369 ldr r3, [r2, #24] + 7846 00a4 43F40043 orr r3, r3, #32768 + 7847 00a8 9361 str r3, [r2, #24] + 7848 00aa 0020 movs r0, #0 + 7849 00ac BCE7 b .L461 + 7850 .L472: +5367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7851 .loc 1 5367 11 view .LVU2538 + 7852 00ae 2268 ldr r2, [r4] + 7853 00b0 9369 ldr r3, [r2, #24] + 7854 00b2 23F40043 bic r3, r3, #32768 + 7855 00b6 9361 str r3, [r2, #24] + 7856 00b8 0020 movs r0, #0 + 7857 00ba B5E7 b .L461 + 7858 .L468: +5373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7859 .loc 1 5373 9 view .LVU2539 +5373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7860 .loc 1 5373 30 is_stmt 0 view .LVU2540 + 7861 00bc 2B68 ldr r3, [r5] +5373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7862 .loc 1 5373 12 view .LVU2541 + 7863 00be 33B1 cbz r3, .L473 +5376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7864 .loc 1 5376 11 is_stmt 1 view .LVU2542 + 7865 00c0 2268 ldr r2, [r4] + 7866 00c2 D369 ldr r3, [r2, #28] + 7867 00c4 43F08003 orr r3, r3, #128 + 7868 00c8 D361 str r3, [r2, #28] + 7869 00ca 0020 movs r0, #0 + 7870 00cc ACE7 b .L461 + 7871 .L473: +5381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7872 .loc 1 5381 11 view .LVU2543 + 7873 00ce 2268 ldr r2, [r4] + 7874 00d0 D369 ldr r3, [r2, #28] + 7875 00d2 23F08003 bic r3, r3, #128 + 7876 00d6 D361 str r3, [r2, #28] + 7877 00d8 0020 movs r0, #0 + 7878 00da A5E7 b .L461 + 7879 .L467: +5387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7880 .loc 1 5387 9 view .LVU2544 +5387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7881 .loc 1 5387 30 is_stmt 0 view .LVU2545 + 7882 00dc 2B68 ldr r3, [r5] + ARM GAS /tmp/ccPLZXyC.s page 311 + + +5387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7883 .loc 1 5387 12 view .LVU2546 + 7884 00de 33B1 cbz r3, .L474 +5390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7885 .loc 1 5390 11 is_stmt 1 view .LVU2547 + 7886 00e0 2268 ldr r2, [r4] + 7887 00e2 D369 ldr r3, [r2, #28] + 7888 00e4 43F40043 orr r3, r3, #32768 + 7889 00e8 D361 str r3, [r2, #28] + 7890 00ea 0020 movs r0, #0 + 7891 00ec 9CE7 b .L461 + 7892 .L474: +5395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7893 .loc 1 5395 11 view .LVU2548 + 7894 00ee 2268 ldr r2, [r4] + 7895 00f0 D369 ldr r3, [r2, #28] + 7896 00f2 23F40043 bic r3, r3, #32768 + 7897 00f6 D361 str r3, [r2, #28] + 7898 00f8 0020 movs r0, #0 + 7899 00fa 95E7 b .L461 + 7900 .L466: +5401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7901 .loc 1 5401 9 view .LVU2549 +5401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7902 .loc 1 5401 30 is_stmt 0 view .LVU2550 + 7903 00fc 2B68 ldr r3, [r5] +5401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7904 .loc 1 5401 12 view .LVU2551 + 7905 00fe 33B1 cbz r3, .L475 +5404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7906 .loc 1 5404 11 is_stmt 1 view .LVU2552 + 7907 0100 2268 ldr r2, [r4] + 7908 0102 536D ldr r3, [r2, #84] + 7909 0104 43F08003 orr r3, r3, #128 + 7910 0108 5365 str r3, [r2, #84] + 7911 010a 0020 movs r0, #0 + 7912 010c 8CE7 b .L461 + 7913 .L475: +5409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7914 .loc 1 5409 11 view .LVU2553 + 7915 010e 2268 ldr r2, [r4] + 7916 0110 536D ldr r3, [r2, #84] + 7917 0112 23F08003 bic r3, r3, #128 + 7918 0116 5365 str r3, [r2, #84] + 7919 0118 0020 movs r0, #0 + 7920 011a 85E7 b .L461 + 7921 .L464: +5415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7922 .loc 1 5415 9 view .LVU2554 +5415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7923 .loc 1 5415 30 is_stmt 0 view .LVU2555 + 7924 011c 2B68 ldr r3, [r5] +5415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7925 .loc 1 5415 12 view .LVU2556 + 7926 011e 33B1 cbz r3, .L476 +5418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7927 .loc 1 5418 11 is_stmt 1 view .LVU2557 + ARM GAS /tmp/ccPLZXyC.s page 312 + + + 7928 0120 2268 ldr r2, [r4] + 7929 0122 536D ldr r3, [r2, #84] + 7930 0124 43F40043 orr r3, r3, #32768 + 7931 0128 5365 str r3, [r2, #84] + 7932 012a 0020 movs r0, #0 + 7933 012c 7CE7 b .L461 + 7934 .L476: +5423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 7935 .loc 1 5423 11 view .LVU2558 + 7936 012e 2268 ldr r2, [r4] + 7937 0130 536D ldr r3, [r2, #84] + 7938 0132 23F40043 bic r3, r3, #32768 + 7939 0136 5365 str r3, [r2, #84] + 7940 0138 0020 movs r0, #0 + 7941 013a 75E7 b .L461 + 7942 .L478: +5341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 7943 .loc 1 5341 5 is_stmt 0 view .LVU2559 + 7944 013c 0020 movs r0, #0 + 7945 013e 73E7 b .L461 + 7946 .LVL617: + 7947 .L477: + 7948 .LCFI78: + 7949 .cfi_def_cfa_offset 0 + 7950 .cfi_restore 4 + 7951 .cfi_restore 5 + 7952 .cfi_restore 6 + 7953 .cfi_restore 14 +5299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7954 .loc 1 5299 3 view .LVU2560 + 7955 0140 0220 movs r0, #2 + 7956 .LVL618: +5437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7957 .loc 1 5437 1 view .LVU2561 + 7958 0142 7047 bx lr + 7959 .cfi_endproc + 7960 .LFE211: + 7962 .section .text.HAL_TIM_ConfigClockSource,"ax",%progbits + 7963 .align 1 + 7964 .global HAL_TIM_ConfigClockSource + 7965 .syntax unified + 7966 .thumb + 7967 .thumb_func + 7968 .fpu fpv5-d16 + 7970 HAL_TIM_ConfigClockSource: + 7971 .LVL619: + 7972 .LFB212: +5447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 7973 .loc 1 5447 1 is_stmt 1 view -0 + 7974 .cfi_startproc + 7975 @ args = 0, pretend = 0, frame = 0 + 7976 @ frame_needed = 0, uses_anonymous_args = 0 +5448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 7977 .loc 1 5448 3 view .LVU2563 +5449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7978 .loc 1 5449 3 view .LVU2564 +5452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 313 + + + 7979 .loc 1 5452 3 view .LVU2565 +5452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7980 .loc 1 5452 3 view .LVU2566 + 7981 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 7982 0004 012B cmp r3, #1 + 7983 0006 76D0 beq .L494 +5447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 7984 .loc 1 5447 1 is_stmt 0 discriminator 2 view .LVU2567 + 7985 0008 10B5 push {r4, lr} + 7986 .LCFI79: + 7987 .cfi_def_cfa_offset 8 + 7988 .cfi_offset 4, -8 + 7989 .cfi_offset 14, -4 + 7990 000a 0446 mov r4, r0 +5452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7991 .loc 1 5452 3 is_stmt 1 discriminator 2 view .LVU2568 + 7992 000c 0123 movs r3, #1 + 7993 000e 80F83C30 strb r3, [r0, #60] +5452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7994 .loc 1 5452 3 discriminator 2 view .LVU2569 +5454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7995 .loc 1 5454 3 discriminator 2 view .LVU2570 +5454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7996 .loc 1 5454 15 is_stmt 0 discriminator 2 view .LVU2571 + 7997 0012 0223 movs r3, #2 + 7998 0014 80F83D30 strb r3, [r0, #61] +5457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 7999 .loc 1 5457 3 is_stmt 1 discriminator 2 view .LVU2572 +5460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 8000 .loc 1 5460 3 discriminator 2 view .LVU2573 +5460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 8001 .loc 1 5460 17 is_stmt 0 discriminator 2 view .LVU2574 + 8002 0018 0268 ldr r2, [r0] +5460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); + 8003 .loc 1 5460 11 discriminator 2 view .LVU2575 + 8004 001a 9068 ldr r0, [r2, #8] + 8005 .LVL620: +5461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); + 8006 .loc 1 5461 3 is_stmt 1 discriminator 2 view .LVU2576 +5462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR = tmpsmcr; + 8007 .loc 1 5462 3 discriminator 2 view .LVU2577 +5462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->SMCR = tmpsmcr; + 8008 .loc 1 5462 11 is_stmt 0 discriminator 2 view .LVU2578 + 8009 001c 374B ldr r3, .L506 + 8010 001e 0340 ands r3, r3, r0 + 8011 .LVL621: +5463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8012 .loc 1 5463 3 is_stmt 1 discriminator 2 view .LVU2579 +5463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8013 .loc 1 5463 24 is_stmt 0 discriminator 2 view .LVU2580 + 8014 0020 9360 str r3, [r2, #8] +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8015 .loc 1 5465 3 is_stmt 1 discriminator 2 view .LVU2581 +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8016 .loc 1 5465 29 is_stmt 0 discriminator 2 view .LVU2582 + 8017 0022 0B68 ldr r3, [r1] + 8018 .LVL622: + ARM GAS /tmp/ccPLZXyC.s page 314 + + +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8019 .loc 1 5465 3 discriminator 2 view .LVU2583 + 8020 0024 602B cmp r3, #96 + 8021 0026 4CD0 beq .L485 +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8022 .loc 1 5465 3 view .LVU2584 + 8023 0028 29D8 bhi .L486 + 8024 002a 402B cmp r3, #64 + 8025 002c 54D0 beq .L487 + 8026 002e 0CD9 bls .L501 + 8027 0030 502B cmp r3, #80 + 8028 0032 22D1 bne .L502 +5520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8029 .loc 1 5520 7 is_stmt 1 view .LVU2585 +5523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + 8030 .loc 1 5523 7 view .LVU2586 +5524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8031 .loc 1 5524 7 view .LVU2587 +5526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8032 .loc 1 5526 7 view .LVU2588 + 8033 0034 CA68 ldr r2, [r1, #12] + 8034 .LVL623: +5526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8035 .loc 1 5526 7 is_stmt 0 view .LVU2589 + 8036 0036 4968 ldr r1, [r1, #4] + 8037 .LVL624: +5526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8038 .loc 1 5526 7 view .LVU2590 + 8039 0038 2068 ldr r0, [r4] + 8040 .LVL625: +5526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8041 .loc 1 5526 7 view .LVU2591 + 8042 003a FFF7FEFF bl TIM_TI1_ConfigInputStage + 8043 .LVL626: +5529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8044 .loc 1 5529 7 is_stmt 1 view .LVU2592 + 8045 003e 5021 movs r1, #80 + 8046 0040 2068 ldr r0, [r4] + 8047 0042 FFF7FEFF bl TIM_ITRx_SetConfig + 8048 .LVL627: +5530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8049 .loc 1 5530 7 view .LVU2593 +5448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8050 .loc 1 5448 21 is_stmt 0 view .LVU2594 + 8051 0046 0020 movs r0, #0 +5530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8052 .loc 1 5530 7 view .LVU2595 + 8053 0048 05E0 b .L491 + 8054 .LVL628: + 8055 .L501: +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8056 .loc 1 5465 3 view .LVU2596 + 8057 004a 202B cmp r3, #32 + 8058 004c 0DD0 beq .L489 + 8059 004e 09D9 bls .L503 + 8060 0050 302B cmp r3, #48 + 8061 0052 0AD0 beq .L489 + ARM GAS /tmp/ccPLZXyC.s page 315 + + +5578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8062 .loc 1 5578 14 view .LVU2597 + 8063 0054 0120 movs r0, #1 + 8064 .LVL629: + 8065 .L491: +5581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8066 .loc 1 5581 3 is_stmt 1 view .LVU2598 +5581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8067 .loc 1 5581 15 is_stmt 0 view .LVU2599 + 8068 0056 0123 movs r3, #1 + 8069 0058 84F83D30 strb r3, [r4, #61] +5583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8070 .loc 1 5583 3 is_stmt 1 view .LVU2600 +5583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8071 .loc 1 5583 3 view .LVU2601 + 8072 005c 0023 movs r3, #0 + 8073 005e 84F83C30 strb r3, [r4, #60] +5583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8074 .loc 1 5583 3 view .LVU2602 +5585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8075 .loc 1 5585 3 view .LVU2603 +5586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8076 .loc 1 5586 1 is_stmt 0 view .LVU2604 + 8077 0062 10BD pop {r4, pc} + 8078 .LVL630: + 8079 .L503: +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8080 .loc 1 5465 3 view .LVU2605 + 8081 0064 0BB1 cbz r3, .L489 + 8082 0066 102B cmp r3, #16 + 8083 0068 05D1 bne .L504 + 8084 .L489: +5571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8085 .loc 1 5571 7 is_stmt 1 view .LVU2606 +5573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8086 .loc 1 5573 7 view .LVU2607 + 8087 006a 1946 mov r1, r3 + 8088 .LVL631: +5573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8089 .loc 1 5573 7 is_stmt 0 view .LVU2608 + 8090 006c 2068 ldr r0, [r4] + 8091 006e FFF7FEFF bl TIM_ITRx_SetConfig + 8092 .LVL632: +5574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8093 .loc 1 5574 7 is_stmt 1 view .LVU2609 +5448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8094 .loc 1 5448 21 is_stmt 0 view .LVU2610 + 8095 0072 0020 movs r0, #0 +5574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8096 .loc 1 5574 7 view .LVU2611 + 8097 0074 EFE7 b .L491 + 8098 .LVL633: + 8099 .L504: +5578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8100 .loc 1 5578 14 view .LVU2612 + 8101 0076 0120 movs r0, #1 + 8102 0078 EDE7 b .L491 + ARM GAS /tmp/ccPLZXyC.s page 316 + + + 8103 .L502: + 8104 007a 0120 movs r0, #1 + 8105 007c EBE7 b .L491 + 8106 .L486: +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8107 .loc 1 5465 3 view .LVU2613 + 8108 007e B3F5805F cmp r3, #4096 + 8109 0082 34D0 beq .L495 + 8110 0084 B3F5005F cmp r3, #8192 + 8111 0088 0CD1 bne .L505 +5500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8112 .loc 1 5500 7 is_stmt 1 view .LVU2614 +5503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + 8113 .loc 1 5503 7 view .LVU2615 +5504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + 8114 .loc 1 5504 7 view .LVU2616 +5505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8115 .loc 1 5505 7 view .LVU2617 +5508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPrescaler, + 8116 .loc 1 5508 7 view .LVU2618 + 8117 008a CB68 ldr r3, [r1, #12] + 8118 008c 4A68 ldr r2, [r1, #4] + 8119 .LVL634: +5508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPrescaler, + 8120 .loc 1 5508 7 is_stmt 0 view .LVU2619 + 8121 008e 8968 ldr r1, [r1, #8] + 8122 .LVL635: +5508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPrescaler, + 8123 .loc 1 5508 7 view .LVU2620 + 8124 0090 2068 ldr r0, [r4] + 8125 .LVL636: +5508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPrescaler, + 8126 .loc 1 5508 7 view .LVU2621 + 8127 0092 FFF7FEFF bl TIM_ETR_SetConfig + 8128 .LVL637: +5513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8129 .loc 1 5513 7 is_stmt 1 view .LVU2622 +5513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8130 .loc 1 5513 11 is_stmt 0 view .LVU2623 + 8131 0096 2268 ldr r2, [r4] +5513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8132 .loc 1 5513 28 view .LVU2624 + 8133 0098 9368 ldr r3, [r2, #8] + 8134 009a 43F48043 orr r3, r3, #16384 + 8135 009e 9360 str r3, [r2, #8] +5514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8136 .loc 1 5514 7 is_stmt 1 view .LVU2625 +5448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8137 .loc 1 5448 21 is_stmt 0 view .LVU2626 + 8138 00a0 0020 movs r0, #0 +5514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8139 .loc 1 5514 7 view .LVU2627 + 8140 00a2 D8E7 b .L491 + 8141 .LVL638: + 8142 .L505: +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8143 .loc 1 5465 3 view .LVU2628 + ARM GAS /tmp/ccPLZXyC.s page 317 + + + 8144 00a4 702B cmp r3, #112 + 8145 00a6 24D1 bne .L496 +5476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8146 .loc 1 5476 7 is_stmt 1 view .LVU2629 +5479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); + 8147 .loc 1 5479 7 view .LVU2630 +5480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + 8148 .loc 1 5480 7 view .LVU2631 +5481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8149 .loc 1 5481 7 view .LVU2632 +5484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPrescaler, + 8150 .loc 1 5484 7 view .LVU2633 + 8151 00a8 CB68 ldr r3, [r1, #12] + 8152 00aa 4A68 ldr r2, [r1, #4] + 8153 .LVL639: +5484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPrescaler, + 8154 .loc 1 5484 7 is_stmt 0 view .LVU2634 + 8155 00ac 8968 ldr r1, [r1, #8] + 8156 .LVL640: +5484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPrescaler, + 8157 .loc 1 5484 7 view .LVU2635 + 8158 00ae 2068 ldr r0, [r4] + 8159 .LVL641: +5484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPrescaler, + 8160 .loc 1 5484 7 view .LVU2636 + 8161 00b0 FFF7FEFF bl TIM_ETR_SetConfig + 8162 .LVL642: +5490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 8163 .loc 1 5490 7 is_stmt 1 view .LVU2637 +5490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 8164 .loc 1 5490 21 is_stmt 0 view .LVU2638 + 8165 00b4 2268 ldr r2, [r4] +5490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); + 8166 .loc 1 5490 15 view .LVU2639 + 8167 00b6 9368 ldr r3, [r2, #8] + 8168 .LVL643: +5491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx SMCR */ + 8169 .loc 1 5491 7 is_stmt 1 view .LVU2640 +5491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Write to TIMx SMCR */ + 8170 .loc 1 5491 15 is_stmt 0 view .LVU2641 + 8171 00b8 43F07703 orr r3, r3, #119 + 8172 .LVL644: +5493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8173 .loc 1 5493 7 is_stmt 1 view .LVU2642 +5493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8174 .loc 1 5493 28 is_stmt 0 view .LVU2643 + 8175 00bc 9360 str r3, [r2, #8] +5494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8176 .loc 1 5494 7 is_stmt 1 view .LVU2644 +5448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8177 .loc 1 5448 21 is_stmt 0 view .LVU2645 + 8178 00be 0020 movs r0, #0 +5494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8179 .loc 1 5494 7 view .LVU2646 + 8180 00c0 C9E7 b .L491 + 8181 .LVL645: + 8182 .L485: + ARM GAS /tmp/ccPLZXyC.s page 318 + + +5536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8183 .loc 1 5536 7 is_stmt 1 view .LVU2647 +5539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + 8184 .loc 1 5539 7 view .LVU2648 +5540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8185 .loc 1 5540 7 view .LVU2649 +5542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8186 .loc 1 5542 7 view .LVU2650 + 8187 00c2 CA68 ldr r2, [r1, #12] + 8188 .LVL646: +5542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8189 .loc 1 5542 7 is_stmt 0 view .LVU2651 + 8190 00c4 4968 ldr r1, [r1, #4] + 8191 .LVL647: +5542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8192 .loc 1 5542 7 view .LVU2652 + 8193 00c6 2068 ldr r0, [r4] + 8194 .LVL648: +5542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8195 .loc 1 5542 7 view .LVU2653 + 8196 00c8 FFF7FEFF bl TIM_TI2_ConfigInputStage + 8197 .LVL649: +5545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8198 .loc 1 5545 7 is_stmt 1 view .LVU2654 + 8199 00cc 6021 movs r1, #96 + 8200 00ce 2068 ldr r0, [r4] + 8201 00d0 FFF7FEFF bl TIM_ITRx_SetConfig + 8202 .LVL650: +5546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8203 .loc 1 5546 7 view .LVU2655 +5448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8204 .loc 1 5448 21 is_stmt 0 view .LVU2656 + 8205 00d4 0020 movs r0, #0 +5546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8206 .loc 1 5546 7 view .LVU2657 + 8207 00d6 BEE7 b .L491 + 8208 .LVL651: + 8209 .L487: +5552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8210 .loc 1 5552 7 is_stmt 1 view .LVU2658 +5555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); + 8211 .loc 1 5555 7 view .LVU2659 +5556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8212 .loc 1 5556 7 view .LVU2660 +5558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8213 .loc 1 5558 7 view .LVU2661 + 8214 00d8 CA68 ldr r2, [r1, #12] + 8215 .LVL652: +5558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8216 .loc 1 5558 7 is_stmt 0 view .LVU2662 + 8217 00da 4968 ldr r1, [r1, #4] + 8218 .LVL653: +5558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + 8219 .loc 1 5558 7 view .LVU2663 + 8220 00dc 2068 ldr r0, [r4] + 8221 .LVL654: +5558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sClockSourceConfig->ClockPolarity, + ARM GAS /tmp/ccPLZXyC.s page 319 + + + 8222 .loc 1 5558 7 view .LVU2664 + 8223 00de FFF7FEFF bl TIM_TI1_ConfigInputStage + 8224 .LVL655: +5561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8225 .loc 1 5561 7 is_stmt 1 view .LVU2665 + 8226 00e2 4021 movs r1, #64 + 8227 00e4 2068 ldr r0, [r4] + 8228 00e6 FFF7FEFF bl TIM_ITRx_SetConfig + 8229 .LVL656: +5562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8230 .loc 1 5562 7 view .LVU2666 +5448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8231 .loc 1 5448 21 is_stmt 0 view .LVU2667 + 8232 00ea 0020 movs r0, #0 +5562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8233 .loc 1 5562 7 view .LVU2668 + 8234 00ec B3E7 b .L491 + 8235 .LVL657: + 8236 .L495: +5465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8237 .loc 1 5465 3 view .LVU2669 + 8238 00ee 0020 movs r0, #0 + 8239 00f0 B1E7 b .L491 + 8240 .L496: +5578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8241 .loc 1 5578 14 view .LVU2670 + 8242 00f2 0120 movs r0, #1 + 8243 00f4 AFE7 b .L491 + 8244 .LVL658: + 8245 .L494: + 8246 .LCFI80: + 8247 .cfi_def_cfa_offset 0 + 8248 .cfi_restore 4 + 8249 .cfi_restore 14 +5452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8250 .loc 1 5452 3 view .LVU2671 + 8251 00f6 0220 movs r0, #2 + 8252 .LVL659: +5586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8253 .loc 1 5586 1 view .LVU2672 + 8254 00f8 7047 bx lr + 8255 .L507: + 8256 00fa 00BF .align 2 + 8257 .L506: + 8258 00fc 8800FEFF .word -130936 + 8259 .cfi_endproc + 8260 .LFE212: + 8262 .section .text.TIM_SlaveTimer_SetConfig,"ax",%progbits + 8263 .align 1 + 8264 .syntax unified + 8265 .thumb + 8266 .thumb_func + 8267 .fpu fpv5-d16 + 8269 TIM_SlaveTimer_SetConfig: + 8270 .LVL660: + 8271 .LFB252: +7384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + ARM GAS /tmp/ccPLZXyC.s page 320 + + + 8272 .loc 1 7384 1 is_stmt 1 view -0 + 8273 .cfi_startproc + 8274 @ args = 0, pretend = 0, frame = 0 + 8275 @ frame_needed = 0, uses_anonymous_args = 0 +7384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 8276 .loc 1 7384 1 is_stmt 0 view .LVU2674 + 8277 0000 10B5 push {r4, lr} + 8278 .LCFI81: + 8279 .cfi_def_cfa_offset 8 + 8280 .cfi_offset 4, -8 + 8281 .cfi_offset 14, -4 +7385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8282 .loc 1 7385 3 is_stmt 1 view .LVU2675 + 8283 .LVL661: +7386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccmr1; + 8284 .loc 1 7386 3 view .LVU2676 +7387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpccer; + 8285 .loc 1 7387 3 view .LVU2677 +7388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8286 .loc 1 7388 3 view .LVU2678 +7391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8287 .loc 1 7391 3 view .LVU2679 +7391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8288 .loc 1 7391 17 is_stmt 0 view .LVU2680 + 8289 0002 0468 ldr r4, [r0] +7391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8290 .loc 1 7391 11 view .LVU2681 + 8291 0004 A268 ldr r2, [r4, #8] + 8292 .LVL662: +7394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Input Trigger source */ + 8293 .loc 1 7394 3 is_stmt 1 view .LVU2682 +7394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the Input Trigger source */ + 8294 .loc 1 7394 11 is_stmt 0 view .LVU2683 + 8295 0006 22F07002 bic r2, r2, #112 + 8296 .LVL663: +7396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8297 .loc 1 7396 3 is_stmt 1 view .LVU2684 +7396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8298 .loc 1 7396 26 is_stmt 0 view .LVU2685 + 8299 000a 4B68 ldr r3, [r1, #4] +7396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8300 .loc 1 7396 11 view .LVU2686 + 8301 000c 1343 orrs r3, r3, r2 + 8302 .LVL664: +7399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the slave mode */ + 8303 .loc 1 7399 3 is_stmt 1 view .LVU2687 +7399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set the slave mode */ + 8304 .loc 1 7399 11 is_stmt 0 view .LVU2688 + 8305 000e 2A4A ldr r2, .L526 + 8306 0010 1A40 ands r2, r2, r3 + 8307 .LVL665: +7401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8308 .loc 1 7401 3 is_stmt 1 view .LVU2689 +7401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8309 .loc 1 7401 26 is_stmt 0 view .LVU2690 + 8310 0012 0B68 ldr r3, [r1] +7401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 321 + + + 8311 .loc 1 7401 11 view .LVU2691 + 8312 0014 1343 orrs r3, r3, r2 + 8313 .LVL666: +7404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8314 .loc 1 7404 3 is_stmt 1 view .LVU2692 +7404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8315 .loc 1 7404 24 is_stmt 0 view .LVU2693 + 8316 0016 A360 str r3, [r4, #8] +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8317 .loc 1 7407 3 is_stmt 1 view .LVU2694 +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8318 .loc 1 7407 23 is_stmt 0 view .LVU2695 + 8319 0018 4B68 ldr r3, [r1, #4] + 8320 .LVL667: +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8321 .loc 1 7407 3 view .LVU2696 + 8322 001a 502B cmp r3, #80 + 8323 001c 32D0 beq .L509 + 8324 001e 0BD9 bls .L523 + 8325 0020 602B cmp r3, #96 + 8326 0022 36D0 beq .L514 + 8327 0024 702B cmp r3, #112 + 8328 0026 43D1 bne .L520 +7412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERPRESCALER(sSlaveConfig->TriggerPrescaler)); + 8329 .loc 1 7412 7 is_stmt 1 view .LVU2697 +7413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); + 8330 .loc 1 7413 7 view .LVU2698 +7414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + 8331 .loc 1 7414 7 view .LVU2699 +7415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Configure the ETR Trigger source */ + 8332 .loc 1 7415 7 view .LVU2700 +7417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPrescaler, + 8333 .loc 1 7417 7 view .LVU2701 + 8334 0028 0B69 ldr r3, [r1, #16] + 8335 002a 8A68 ldr r2, [r1, #8] + 8336 002c C968 ldr r1, [r1, #12] + 8337 .LVL668: +7417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPrescaler, + 8338 .loc 1 7417 7 is_stmt 0 view .LVU2702 + 8339 002e 0068 ldr r0, [r0] + 8340 .LVL669: +7417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPrescaler, + 8341 .loc 1 7417 7 view .LVU2703 + 8342 0030 FFF7FEFF bl TIM_ETR_SetConfig + 8343 .LVL670: +7421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8344 .loc 1 7421 7 is_stmt 1 view .LVU2704 +7385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8345 .loc 1 7385 21 is_stmt 0 view .LVU2705 + 8346 0034 0020 movs r0, #0 +7421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8347 .loc 1 7421 7 view .LVU2706 + 8348 0036 0FE0 b .L512 + 8349 .LVL671: + 8350 .L523: +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8351 .loc 1 7407 3 view .LVU2707 + ARM GAS /tmp/ccPLZXyC.s page 322 + + + 8352 0038 402B cmp r3, #64 + 8353 003a 0ED0 beq .L511 + 8354 003c 01D9 bls .L524 +7489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8355 .loc 1 7489 14 view .LVU2708 + 8356 003e 0120 movs r0, #1 + 8357 .LVL672: +7489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8358 .loc 1 7489 14 view .LVU2709 + 8359 0040 0AE0 b .L512 + 8360 .LVL673: + 8361 .L524: +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8362 .loc 1 7407 3 view .LVU2710 + 8363 0042 202B cmp r3, #32 + 8364 0044 2CD0 beq .L516 + 8365 0046 03D9 bls .L525 + 8366 0048 302B cmp r3, #48 + 8367 004a 2FD1 bne .L519 + 8368 004c 0020 movs r0, #0 + 8369 .LVL674: +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8370 .loc 1 7407 3 view .LVU2711 + 8371 004e 03E0 b .L512 + 8372 .LVL675: + 8373 .L525: +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8374 .loc 1 7407 3 view .LVU2712 + 8375 0050 43B3 cbz r3, .L517 + 8376 0052 102B cmp r3, #16 + 8377 0054 28D1 bne .L518 + 8378 0056 0020 movs r0, #0 + 8379 .LVL676: + 8380 .L512: +7494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8381 .loc 1 7494 1 view .LVU2713 + 8382 0058 10BD pop {r4, pc} + 8383 .LVL677: + 8384 .L511: +7427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + 8385 .loc 1 7427 7 is_stmt 1 view .LVU2714 +7428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8386 .loc 1 7428 7 view .LVU2715 +7430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8387 .loc 1 7430 7 view .LVU2716 +7430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8388 .loc 1 7430 23 is_stmt 0 view .LVU2717 + 8389 005a 0B68 ldr r3, [r1] +7430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8390 .loc 1 7430 10 view .LVU2718 + 8391 005c 052B cmp r3, #5 + 8392 005e 29D0 beq .L521 +7436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCER &= ~TIM_CCER_CC1E; + 8393 .loc 1 7436 7 is_stmt 1 view .LVU2719 +7436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCER &= ~TIM_CCER_CC1E; + 8394 .loc 1 7436 21 is_stmt 0 view .LVU2720 + 8395 0060 0368 ldr r3, [r0] + ARM GAS /tmp/ccPLZXyC.s page 323 + + +7436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCER &= ~TIM_CCER_CC1E; + 8396 .loc 1 7436 15 view .LVU2721 + 8397 0062 1C6A ldr r4, [r3, #32] + 8398 .LVL678: +7437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 = htim->Instance->CCMR1; + 8399 .loc 1 7437 7 is_stmt 1 view .LVU2722 +7437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 = htim->Instance->CCMR1; + 8400 .loc 1 7437 28 is_stmt 0 view .LVU2723 + 8401 0064 1A6A ldr r2, [r3, #32] + 8402 0066 22F00102 bic r2, r2, #1 + 8403 006a 1A62 str r2, [r3, #32] +7438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8404 .loc 1 7438 7 is_stmt 1 view .LVU2724 +7438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8405 .loc 1 7438 22 is_stmt 0 view .LVU2725 + 8406 006c 0268 ldr r2, [r0] +7438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8407 .loc 1 7438 16 view .LVU2726 + 8408 006e 9369 ldr r3, [r2, #24] + 8409 .LVL679: +7441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4U); + 8410 .loc 1 7441 7 is_stmt 1 view .LVU2727 +7441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmpccmr1 |= ((sSlaveConfig->TriggerFilter) << 4U); + 8411 .loc 1 7441 16 is_stmt 0 view .LVU2728 + 8412 0070 23F0F003 bic r3, r3, #240 + 8413 .LVL680: +7442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8414 .loc 1 7442 7 is_stmt 1 view .LVU2729 +7442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8415 .loc 1 7442 33 is_stmt 0 view .LVU2730 + 8416 0074 0969 ldr r1, [r1, #16] + 8417 .LVL681: +7442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8418 .loc 1 7442 16 view .LVU2731 + 8419 0076 43EA0113 orr r3, r3, r1, lsl #4 + 8420 .LVL682: +7445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCER = tmpccer; + 8421 .loc 1 7445 7 is_stmt 1 view .LVU2732 +7445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->Instance->CCER = tmpccer; + 8422 .loc 1 7445 29 is_stmt 0 view .LVU2733 + 8423 007a 9361 str r3, [r2, #24] +7446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8424 .loc 1 7446 7 is_stmt 1 view .LVU2734 +7446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8425 .loc 1 7446 11 is_stmt 0 view .LVU2735 + 8426 007c 0368 ldr r3, [r0] + 8427 .LVL683: +7446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8428 .loc 1 7446 28 view .LVU2736 + 8429 007e 1C62 str r4, [r3, #32] + 8430 .LVL684: +7447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8431 .loc 1 7447 7 is_stmt 1 view .LVU2737 +7385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8432 .loc 1 7385 21 is_stmt 0 view .LVU2738 + 8433 0080 0020 movs r0, #0 + 8434 .LVL685: + ARM GAS /tmp/ccPLZXyC.s page 324 + + +7447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8435 .loc 1 7447 7 view .LVU2739 + 8436 0082 E9E7 b .L512 + 8437 .LVL686: + 8438 .L509: +7453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); + 8439 .loc 1 7453 7 is_stmt 1 view .LVU2740 +7454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + 8440 .loc 1 7454 7 view .LVU2741 +7455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8441 .loc 1 7455 7 view .LVU2742 +7458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPolarity, + 8442 .loc 1 7458 7 view .LVU2743 + 8443 0084 0A69 ldr r2, [r1, #16] + 8444 0086 8968 ldr r1, [r1, #8] + 8445 .LVL687: +7458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPolarity, + 8446 .loc 1 7458 7 is_stmt 0 view .LVU2744 + 8447 0088 0068 ldr r0, [r0] + 8448 .LVL688: +7458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPolarity, + 8449 .loc 1 7458 7 view .LVU2745 + 8450 008a FFF7FEFF bl TIM_TI1_ConfigInputStage + 8451 .LVL689: +7461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8452 .loc 1 7461 7 is_stmt 1 view .LVU2746 +7385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8453 .loc 1 7385 21 is_stmt 0 view .LVU2747 + 8454 008e 0020 movs r0, #0 +7461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8455 .loc 1 7461 7 view .LVU2748 + 8456 0090 E2E7 b .L512 + 8457 .LVL690: + 8458 .L514: +7467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERPOLARITY(sSlaveConfig->TriggerPolarity)); + 8459 .loc 1 7467 7 is_stmt 1 view .LVU2749 +7468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGERFILTER(sSlaveConfig->TriggerFilter)); + 8460 .loc 1 7468 7 view .LVU2750 +7469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8461 .loc 1 7469 7 view .LVU2751 +7472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPolarity, + 8462 .loc 1 7472 7 view .LVU2752 + 8463 0092 0A69 ldr r2, [r1, #16] + 8464 0094 8968 ldr r1, [r1, #8] + 8465 .LVL691: +7472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPolarity, + 8466 .loc 1 7472 7 is_stmt 0 view .LVU2753 + 8467 0096 0068 ldr r0, [r0] + 8468 .LVL692: +7472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** sSlaveConfig->TriggerPolarity, + 8469 .loc 1 7472 7 view .LVU2754 + 8470 0098 FFF7FEFF bl TIM_TI2_ConfigInputStage + 8471 .LVL693: +7475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8472 .loc 1 7475 7 is_stmt 1 view .LVU2755 +7385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8473 .loc 1 7385 21 is_stmt 0 view .LVU2756 + ARM GAS /tmp/ccPLZXyC.s page 325 + + + 8474 009c 0020 movs r0, #0 +7475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8475 .loc 1 7475 7 view .LVU2757 + 8476 009e DBE7 b .L512 + 8477 .LVL694: + 8478 .L516: +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8479 .loc 1 7407 3 view .LVU2758 + 8480 00a0 0020 movs r0, #0 + 8481 .LVL695: +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8482 .loc 1 7407 3 view .LVU2759 + 8483 00a2 D9E7 b .L512 + 8484 .LVL696: + 8485 .L517: +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8486 .loc 1 7407 3 view .LVU2760 + 8487 00a4 0020 movs r0, #0 + 8488 .LVL697: +7407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8489 .loc 1 7407 3 view .LVU2761 + 8490 00a6 D7E7 b .L512 + 8491 .LVL698: + 8492 .L518: +7489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8493 .loc 1 7489 14 view .LVU2762 + 8494 00a8 0120 movs r0, #1 + 8495 .LVL699: +7489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8496 .loc 1 7489 14 view .LVU2763 + 8497 00aa D5E7 b .L512 + 8498 .LVL700: + 8499 .L519: +7489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8500 .loc 1 7489 14 view .LVU2764 + 8501 00ac 0120 movs r0, #1 + 8502 .LVL701: +7489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8503 .loc 1 7489 14 view .LVU2765 + 8504 00ae D3E7 b .L512 + 8505 .LVL702: + 8506 .L520: +7489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8507 .loc 1 7489 14 view .LVU2766 + 8508 00b0 0120 movs r0, #1 + 8509 .LVL703: +7489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 8510 .loc 1 7489 14 view .LVU2767 + 8511 00b2 D1E7 b .L512 + 8512 .LVL704: + 8513 .L521: +7432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8514 .loc 1 7432 16 view .LVU2768 + 8515 00b4 0120 movs r0, #1 + 8516 .LVL705: +7432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8517 .loc 1 7432 16 view .LVU2769 + ARM GAS /tmp/ccPLZXyC.s page 326 + + + 8518 00b6 CFE7 b .L512 + 8519 .L527: + 8520 .align 2 + 8521 .L526: + 8522 00b8 F8FFFEFF .word -65544 + 8523 .cfi_endproc + 8524 .LFE252: + 8526 .section .text.HAL_TIM_SlaveConfigSynchro,"ax",%progbits + 8527 .align 1 + 8528 .global HAL_TIM_SlaveConfigSynchro + 8529 .syntax unified + 8530 .thumb + 8531 .thumb_func + 8532 .fpu fpv5-d16 + 8534 HAL_TIM_SlaveConfigSynchro: + 8535 .LVL706: + 8536 .LFB214: +5633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 8537 .loc 1 5633 1 is_stmt 1 view -0 + 8538 .cfi_startproc + 8539 @ args = 0, pretend = 0, frame = 0 + 8540 @ frame_needed = 0, uses_anonymous_args = 0 +5635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode)); + 8541 .loc 1 5635 3 view .LVU2771 +5636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger)); + 8542 .loc 1 5636 3 view .LVU2772 +5637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8543 .loc 1 5637 3 view .LVU2773 +5639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8544 .loc 1 5639 3 view .LVU2774 +5639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8545 .loc 1 5639 3 view .LVU2775 + 8546 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 8547 0004 012B cmp r3, #1 + 8548 0006 22D0 beq .L531 +5633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 8549 .loc 1 5633 1 is_stmt 0 discriminator 2 view .LVU2776 + 8550 0008 10B5 push {r4, lr} + 8551 .LCFI82: + 8552 .cfi_def_cfa_offset 8 + 8553 .cfi_offset 4, -8 + 8554 .cfi_offset 14, -4 + 8555 000a 0446 mov r4, r0 +5639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8556 .loc 1 5639 3 is_stmt 1 discriminator 2 view .LVU2777 + 8557 000c 0123 movs r3, #1 + 8558 000e 80F83C30 strb r3, [r0, #60] +5639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8559 .loc 1 5639 3 discriminator 2 view .LVU2778 +5641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8560 .loc 1 5641 3 discriminator 2 view .LVU2779 +5641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8561 .loc 1 5641 15 is_stmt 0 discriminator 2 view .LVU2780 + 8562 0012 0223 movs r3, #2 + 8563 0014 80F83D30 strb r3, [r0, #61] +5643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8564 .loc 1 5643 3 is_stmt 1 discriminator 2 view .LVU2781 + ARM GAS /tmp/ccPLZXyC.s page 327 + + +5643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8565 .loc 1 5643 7 is_stmt 0 discriminator 2 view .LVU2782 + 8566 0018 FFF7FEFF bl TIM_SlaveTimer_SetConfig + 8567 .LVL707: +5643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8568 .loc 1 5643 6 discriminator 2 view .LVU2783 + 8569 001c 80B9 cbnz r0, .L536 +5651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8570 .loc 1 5651 3 is_stmt 1 view .LVU2784 + 8571 001e 2268 ldr r2, [r4] + 8572 0020 D368 ldr r3, [r2, #12] + 8573 0022 23F04003 bic r3, r3, #64 + 8574 0026 D360 str r3, [r2, #12] +5654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8575 .loc 1 5654 3 view .LVU2785 + 8576 0028 2268 ldr r2, [r4] + 8577 002a D368 ldr r3, [r2, #12] + 8578 002c 23F48043 bic r3, r3, #16384 + 8579 0030 D360 str r3, [r2, #12] +5656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8580 .loc 1 5656 3 view .LVU2786 +5656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8581 .loc 1 5656 15 is_stmt 0 view .LVU2787 + 8582 0032 0123 movs r3, #1 + 8583 0034 84F83D30 strb r3, [r4, #61] +5658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8584 .loc 1 5658 3 is_stmt 1 view .LVU2788 +5658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8585 .loc 1 5658 3 view .LVU2789 + 8586 0038 0023 movs r3, #0 + 8587 003a 84F83C30 strb r3, [r4, #60] +5658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8588 .loc 1 5658 3 view .LVU2790 +5660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8589 .loc 1 5660 3 view .LVU2791 + 8590 .L529: +5661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8591 .loc 1 5661 1 is_stmt 0 view .LVU2792 + 8592 003e 10BD pop {r4, pc} + 8593 .LVL708: + 8594 .L536: +5645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); + 8595 .loc 1 5645 5 is_stmt 1 view .LVU2793 +5645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); + 8596 .loc 1 5645 17 is_stmt 0 view .LVU2794 + 8597 0040 0120 movs r0, #1 + 8598 0042 84F83D00 strb r0, [r4, #61] +5646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 8599 .loc 1 5646 5 is_stmt 1 view .LVU2795 +5646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 8600 .loc 1 5646 5 view .LVU2796 + 8601 0046 0023 movs r3, #0 + 8602 0048 84F83C30 strb r3, [r4, #60] +5646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 8603 .loc 1 5646 5 view .LVU2797 +5647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8604 .loc 1 5647 5 view .LVU2798 + ARM GAS /tmp/ccPLZXyC.s page 328 + + +5647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8605 .loc 1 5647 12 is_stmt 0 view .LVU2799 + 8606 004c F7E7 b .L529 + 8607 .LVL709: + 8608 .L531: + 8609 .LCFI83: + 8610 .cfi_def_cfa_offset 0 + 8611 .cfi_restore 4 + 8612 .cfi_restore 14 +5639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8613 .loc 1 5639 3 view .LVU2800 + 8614 004e 0220 movs r0, #2 + 8615 .LVL710: +5661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8616 .loc 1 5661 1 view .LVU2801 + 8617 0050 7047 bx lr + 8618 .cfi_endproc + 8619 .LFE214: + 8621 .section .text.HAL_TIM_SlaveConfigSynchro_IT,"ax",%progbits + 8622 .align 1 + 8623 .global HAL_TIM_SlaveConfigSynchro_IT + 8624 .syntax unified + 8625 .thumb + 8626 .thumb_func + 8627 .fpu fpv5-d16 + 8629 HAL_TIM_SlaveConfigSynchro_IT: + 8630 .LVL711: + 8631 .LFB215: +5674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 8632 .loc 1 5674 1 is_stmt 1 view -0 + 8633 .cfi_startproc + 8634 @ args = 0, pretend = 0, frame = 0 + 8635 @ frame_needed = 0, uses_anonymous_args = 0 +5676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_SLAVE_MODE(sSlaveConfig->SlaveMode)); + 8636 .loc 1 5676 3 view .LVU2803 +5677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_TRIGGER_SELECTION(sSlaveConfig->InputTrigger)); + 8637 .loc 1 5677 3 view .LVU2804 +5678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8638 .loc 1 5678 3 view .LVU2805 +5680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8639 .loc 1 5680 3 view .LVU2806 +5680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8640 .loc 1 5680 3 view .LVU2807 + 8641 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 8642 0004 012B cmp r3, #1 + 8643 0006 22D0 beq .L540 +5674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 8644 .loc 1 5674 1 is_stmt 0 discriminator 2 view .LVU2808 + 8645 0008 10B5 push {r4, lr} + 8646 .LCFI84: + 8647 .cfi_def_cfa_offset 8 + 8648 .cfi_offset 4, -8 + 8649 .cfi_offset 14, -4 + 8650 000a 0446 mov r4, r0 +5680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8651 .loc 1 5680 3 is_stmt 1 discriminator 2 view .LVU2809 + 8652 000c 0123 movs r3, #1 + ARM GAS /tmp/ccPLZXyC.s page 329 + + + 8653 000e 80F83C30 strb r3, [r0, #60] +5680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8654 .loc 1 5680 3 discriminator 2 view .LVU2810 +5682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8655 .loc 1 5682 3 discriminator 2 view .LVU2811 +5682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8656 .loc 1 5682 15 is_stmt 0 discriminator 2 view .LVU2812 + 8657 0012 0223 movs r3, #2 + 8658 0014 80F83D30 strb r3, [r0, #61] +5684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8659 .loc 1 5684 3 is_stmt 1 discriminator 2 view .LVU2813 +5684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8660 .loc 1 5684 7 is_stmt 0 discriminator 2 view .LVU2814 + 8661 0018 FFF7FEFF bl TIM_SlaveTimer_SetConfig + 8662 .LVL712: +5684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8663 .loc 1 5684 6 discriminator 2 view .LVU2815 + 8664 001c 80B9 cbnz r0, .L545 +5692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8665 .loc 1 5692 3 is_stmt 1 view .LVU2816 + 8666 001e 2268 ldr r2, [r4] + 8667 0020 D368 ldr r3, [r2, #12] + 8668 0022 43F04003 orr r3, r3, #64 + 8669 0026 D360 str r3, [r2, #12] +5695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8670 .loc 1 5695 3 view .LVU2817 + 8671 0028 2268 ldr r2, [r4] + 8672 002a D368 ldr r3, [r2, #12] + 8673 002c 23F48043 bic r3, r3, #16384 + 8674 0030 D360 str r3, [r2, #12] +5697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8675 .loc 1 5697 3 view .LVU2818 +5697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8676 .loc 1 5697 15 is_stmt 0 view .LVU2819 + 8677 0032 0123 movs r3, #1 + 8678 0034 84F83D30 strb r3, [r4, #61] +5699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8679 .loc 1 5699 3 is_stmt 1 view .LVU2820 +5699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8680 .loc 1 5699 3 view .LVU2821 + 8681 0038 0023 movs r3, #0 + 8682 003a 84F83C30 strb r3, [r4, #60] +5699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8683 .loc 1 5699 3 view .LVU2822 +5701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8684 .loc 1 5701 3 view .LVU2823 + 8685 .L538: +5702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8686 .loc 1 5702 1 is_stmt 0 view .LVU2824 + 8687 003e 10BD pop {r4, pc} + 8688 .LVL713: + 8689 .L545: +5686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); + 8690 .loc 1 5686 5 is_stmt 1 view .LVU2825 +5686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_UNLOCK(htim); + 8691 .loc 1 5686 17 is_stmt 0 view .LVU2826 + 8692 0040 0120 movs r0, #1 + ARM GAS /tmp/ccPLZXyC.s page 330 + + + 8693 0042 84F83D00 strb r0, [r4, #61] +5687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 8694 .loc 1 5687 5 is_stmt 1 view .LVU2827 +5687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 8695 .loc 1 5687 5 view .LVU2828 + 8696 0046 0023 movs r3, #0 + 8697 0048 84F83C30 strb r3, [r4, #60] +5687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** return HAL_ERROR; + 8698 .loc 1 5687 5 view .LVU2829 +5688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8699 .loc 1 5688 5 view .LVU2830 +5688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8700 .loc 1 5688 12 is_stmt 0 view .LVU2831 + 8701 004c F7E7 b .L538 + 8702 .LVL714: + 8703 .L540: + 8704 .LCFI85: + 8705 .cfi_def_cfa_offset 0 + 8706 .cfi_restore 4 + 8707 .cfi_restore 14 +5680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8708 .loc 1 5680 3 view .LVU2832 + 8709 004e 0220 movs r0, #2 + 8710 .LVL715: +5702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8711 .loc 1 5702 1 view .LVU2833 + 8712 0050 7047 bx lr + 8713 .cfi_endproc + 8714 .LFE215: + 8716 .section .text.TIM_CCxChannelCmd,"ax",%progbits + 8717 .align 1 + 8718 .global TIM_CCxChannelCmd + 8719 .syntax unified + 8720 .thumb + 8721 .thumb_func + 8722 .fpu fpv5-d16 + 8724 TIM_CCxChannelCmd: + 8725 .LVL716: + 8726 .LFB261: +7826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** +7828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @brief Enables or disables the TIM Capture Compare Channel x. +7829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param TIMx to select the TIM peripheral +7830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param Channel specifies the TIM Channel +7831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be one of the following values: +7832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 +7833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 +7834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 +7835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_4: TIM Channel 4 +7836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_5: TIM Channel 5 selected +7837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @arg TIM_CHANNEL_6: TIM Channel 6 selected +7838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @param ChannelState specifies the TIM Channel CCxE bit new state. +7839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. +7840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** * @retval None +7841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** */ +7842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) +7843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 331 + + + 8727 .loc 1 7843 1 is_stmt 1 view -0 + 8728 .cfi_startproc + 8729 @ args = 0, pretend = 0, frame = 0 + 8730 @ frame_needed = 0, uses_anonymous_args = 0 + 8731 @ link register save eliminated. +7844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmp; + 8732 .loc 1 7844 3 view .LVU2835 +7845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ +7847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + 8733 .loc 1 7847 3 view .LVU2836 +7848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_CHANNELS(Channel)); + 8734 .loc 1 7848 3 view .LVU2837 +7849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ + 8735 .loc 1 7850 3 view .LVU2838 + 8736 .loc 1 7850 35 is_stmt 0 view .LVU2839 + 8737 0000 01F01F01 and r1, r1, #31 + 8738 .LVL717: + 8739 .loc 1 7850 7 view .LVU2840 + 8740 0004 0123 movs r3, #1 + 8741 0006 03FA01FC lsl ip, r3, r1 + 8742 .LVL718: +7851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Reset the CCxE Bit */ +7853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER &= ~tmp; + 8743 .loc 1 7853 3 is_stmt 1 view .LVU2841 + 8744 .loc 1 7853 14 is_stmt 0 view .LVU2842 + 8745 000a 036A ldr r3, [r0, #32] + 8746 000c 23EA0C03 bic r3, r3, ip + 8747 0010 0362 str r3, [r0, #32] +7854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** +7855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Set or reset the CCxE Bit */ +7856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ + 8748 .loc 1 7856 3 is_stmt 1 view .LVU2843 + 8749 .loc 1 7856 14 is_stmt 0 view .LVU2844 + 8750 0012 036A ldr r3, [r0, #32] + 8751 .loc 1 7856 41 view .LVU2845 + 8752 0014 02FA01F1 lsl r1, r2, r1 + 8753 .loc 1 7856 14 view .LVU2846 + 8754 0018 0B43 orrs r3, r3, r1 + 8755 001a 0362 str r3, [r0, #32] +7857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8756 .loc 1 7857 1 view .LVU2847 + 8757 001c 7047 bx lr + 8758 .cfi_endproc + 8759 .LFE261: + 8761 .section .text.HAL_TIM_OC_Start,"ax",%progbits + 8762 .align 1 + 8763 .global HAL_TIM_OC_Start + 8764 .syntax unified + 8765 .thumb + 8766 .thumb_func + 8767 .fpu fpv5-d16 + 8769 HAL_TIM_OC_Start: + 8770 .LVL719: + 8771 .LFB155: + ARM GAS /tmp/ccPLZXyC.s page 332 + + + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8772 .loc 1 795 1 is_stmt 1 view -0 + 8773 .cfi_startproc + 8774 @ args = 0, pretend = 0, frame = 0 + 8775 @ frame_needed = 0, uses_anonymous_args = 0 + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 8776 .loc 1 795 1 is_stmt 0 view .LVU2849 + 8777 0000 10B5 push {r4, lr} + 8778 .LCFI86: + 8779 .cfi_def_cfa_offset 8 + 8780 .cfi_offset 4, -8 + 8781 .cfi_offset 14, -4 + 8782 0002 0446 mov r4, r0 + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8783 .loc 1 796 3 is_stmt 1 view .LVU2850 + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8784 .loc 1 799 3 view .LVU2851 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8785 .loc 1 802 3 view .LVU2852 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8786 .loc 1 802 44 is_stmt 0 view .LVU2853 + 8787 0004 0846 mov r0, r1 + 8788 .LVL720: + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8789 .loc 1 802 44 view .LVU2854 + 8790 0006 0029 cmp r1, #0 + 8791 0008 42D1 bne .L548 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8792 .loc 1 802 7 discriminator 1 view .LVU2855 + 8793 000a 94F83E30 ldrb r3, [r4, #62] @ zero_extendqisi2 + 8794 000e DBB2 uxtb r3, r3 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8795 .loc 1 802 44 discriminator 1 view .LVU2856 + 8796 0010 013B subs r3, r3, #1 + 8797 0012 18BF it ne + 8798 0014 0123 movne r3, #1 + 8799 .L549: + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8800 .loc 1 802 6 discriminator 20 view .LVU2857 + 8801 0016 002B cmp r3, #0 + 8802 0018 40F08F80 bne .L564 + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8803 .loc 1 808 3 is_stmt 1 view .LVU2858 + 8804 001c 0028 cmp r0, #0 + 8805 001e 62D1 bne .L555 + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8806 .loc 1 808 3 is_stmt 0 discriminator 1 view .LVU2859 + 8807 0020 0223 movs r3, #2 + 8808 0022 84F83E30 strb r3, [r4, #62] + 8809 .L556: + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8810 .loc 1 811 3 is_stmt 1 view .LVU2860 + 8811 0026 0122 movs r2, #1 + 8812 0028 0146 mov r1, r0 + 8813 .LVL721: + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8814 .loc 1 811 3 is_stmt 0 view .LVU2861 + ARM GAS /tmp/ccPLZXyC.s page 333 + + + 8815 002a 2068 ldr r0, [r4] + 8816 .LVL722: + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8817 .loc 1 811 3 view .LVU2862 + 8818 002c FFF7FEFF bl TIM_CCxChannelCmd + 8819 .LVL723: + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8820 .loc 1 813 3 is_stmt 1 view .LVU2863 + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8821 .loc 1 813 7 is_stmt 0 view .LVU2864 + 8822 0030 2368 ldr r3, [r4] + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8823 .loc 1 813 6 view .LVU2865 + 8824 0032 4449 ldr r1, .L575 + 8825 0034 444A ldr r2, .L575+4 + 8826 0036 9342 cmp r3, r2 + 8827 0038 18BF it ne + 8828 003a 8B42 cmpne r3, r1 + 8829 003c 03D1 bne .L561 + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8830 .loc 1 816 5 is_stmt 1 view .LVU2866 + 8831 003e 5A6C ldr r2, [r3, #68] + 8832 0040 42F40042 orr r2, r2, #32768 + 8833 0044 5A64 str r2, [r3, #68] + 8834 .L561: + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8835 .loc 1 820 3 view .LVU2867 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8836 .loc 1 820 7 is_stmt 0 view .LVU2868 + 8837 0046 2368 ldr r3, [r4] + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8838 .loc 1 820 6 view .LVU2869 + 8839 0048 3E4A ldr r2, .L575 + 8840 004a B3F1804F cmp r3, #1073741824 + 8841 004e 18BF it ne + 8842 0050 9342 cmpne r3, r2 + 8843 0052 64D0 beq .L562 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8844 .loc 1 820 7 discriminator 1 view .LVU2870 + 8845 0054 A2F57C42 sub r2, r2, #64512 + 8846 0058 9342 cmp r3, r2 + 8847 005a 60D0 beq .L562 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8848 .loc 1 820 7 discriminator 2 view .LVU2871 + 8849 005c 02F58062 add r2, r2, #1024 + 8850 0060 9342 cmp r3, r2 + 8851 0062 5CD0 beq .L562 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8852 .loc 1 820 7 discriminator 3 view .LVU2872 + 8853 0064 02F58062 add r2, r2, #1024 + 8854 0068 9342 cmp r3, r2 + 8855 006a 58D0 beq .L562 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8856 .loc 1 820 7 discriminator 4 view .LVU2873 + 8857 006c 02F57842 add r2, r2, #63488 + 8858 0070 9342 cmp r3, r2 + 8859 0072 54D0 beq .L562 + ARM GAS /tmp/ccPLZXyC.s page 334 + + + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8860 .loc 1 820 7 discriminator 5 view .LVU2874 + 8861 0074 02F57052 add r2, r2, #15360 + 8862 0078 9342 cmp r3, r2 + 8863 007a 50D0 beq .L562 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8864 .loc 1 820 7 discriminator 6 view .LVU2875 + 8865 007c A2F59432 sub r2, r2, #75776 + 8866 0080 9342 cmp r3, r2 + 8867 0082 4CD0 beq .L562 + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8868 .loc 1 830 5 is_stmt 1 view .LVU2876 + 8869 0084 1A68 ldr r2, [r3] + 8870 0086 42F00102 orr r2, r2, #1 + 8871 008a 1A60 str r2, [r3] + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8872 .loc 1 834 10 is_stmt 0 view .LVU2877 + 8873 008c 0020 movs r0, #0 + 8874 008e 55E0 b .L554 + 8875 .LVL724: + 8876 .L548: + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8877 .loc 1 802 44 discriminator 2 view .LVU2878 + 8878 0090 0429 cmp r1, #4 + 8879 0092 0CD0 beq .L567 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8880 .loc 1 802 44 discriminator 5 view .LVU2879 + 8881 0094 0829 cmp r1, #8 + 8882 0096 11D0 beq .L568 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8883 .loc 1 802 44 discriminator 8 view .LVU2880 + 8884 0098 0C29 cmp r1, #12 + 8885 009a 16D0 beq .L569 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8886 .loc 1 802 44 discriminator 11 view .LVU2881 + 8887 009c 1029 cmp r1, #16 + 8888 009e 1BD0 beq .L570 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8889 .loc 1 802 7 discriminator 14 view .LVU2882 + 8890 00a0 94F84330 ldrb r3, [r4, #67] @ zero_extendqisi2 + 8891 00a4 DBB2 uxtb r3, r3 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8892 .loc 1 802 44 discriminator 14 view .LVU2883 + 8893 00a6 013B subs r3, r3, #1 + 8894 00a8 18BF it ne + 8895 00aa 0123 movne r3, #1 + 8896 00ac B3E7 b .L549 + 8897 .L567: + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8898 .loc 1 802 7 discriminator 4 view .LVU2884 + 8899 00ae 94F83F30 ldrb r3, [r4, #63] @ zero_extendqisi2 + 8900 00b2 DBB2 uxtb r3, r3 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8901 .loc 1 802 44 discriminator 4 view .LVU2885 + 8902 00b4 013B subs r3, r3, #1 + 8903 00b6 18BF it ne + 8904 00b8 0123 movne r3, #1 + ARM GAS /tmp/ccPLZXyC.s page 335 + + + 8905 00ba ACE7 b .L549 + 8906 .L568: + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8907 .loc 1 802 7 discriminator 7 view .LVU2886 + 8908 00bc 94F84030 ldrb r3, [r4, #64] @ zero_extendqisi2 + 8909 00c0 DBB2 uxtb r3, r3 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8910 .loc 1 802 44 discriminator 7 view .LVU2887 + 8911 00c2 013B subs r3, r3, #1 + 8912 00c4 18BF it ne + 8913 00c6 0123 movne r3, #1 + 8914 00c8 A5E7 b .L549 + 8915 .L569: + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8916 .loc 1 802 7 discriminator 10 view .LVU2888 + 8917 00ca 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 8918 00ce DBB2 uxtb r3, r3 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8919 .loc 1 802 44 discriminator 10 view .LVU2889 + 8920 00d0 013B subs r3, r3, #1 + 8921 00d2 18BF it ne + 8922 00d4 0123 movne r3, #1 + 8923 00d6 9EE7 b .L549 + 8924 .L570: + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8925 .loc 1 802 7 discriminator 13 view .LVU2890 + 8926 00d8 94F84230 ldrb r3, [r4, #66] @ zero_extendqisi2 + 8927 00dc DBB2 uxtb r3, r3 + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8928 .loc 1 802 44 discriminator 13 view .LVU2891 + 8929 00de 013B subs r3, r3, #1 + 8930 00e0 18BF it ne + 8931 00e2 0123 movne r3, #1 + 8932 00e4 97E7 b .L549 + 8933 .L555: + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8934 .loc 1 808 3 discriminator 2 view .LVU2892 + 8935 00e6 0428 cmp r0, #4 + 8936 00e8 09D0 beq .L571 + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8937 .loc 1 808 3 discriminator 4 view .LVU2893 + 8938 00ea 0828 cmp r0, #8 + 8939 00ec 0BD0 beq .L572 + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8940 .loc 1 808 3 discriminator 7 view .LVU2894 + 8941 00ee 0C28 cmp r0, #12 + 8942 00f0 0DD0 beq .L573 + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8943 .loc 1 808 3 discriminator 10 view .LVU2895 + 8944 00f2 1028 cmp r0, #16 + 8945 00f4 0FD0 beq .L574 + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8946 .loc 1 808 3 discriminator 13 view .LVU2896 + 8947 00f6 0223 movs r3, #2 + 8948 00f8 84F84330 strb r3, [r4, #67] + 8949 00fc 93E7 b .L556 + 8950 .L571: + ARM GAS /tmp/ccPLZXyC.s page 336 + + + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8951 .loc 1 808 3 discriminator 3 view .LVU2897 + 8952 00fe 0223 movs r3, #2 + 8953 0100 84F83F30 strb r3, [r4, #63] + 8954 0104 8FE7 b .L556 + 8955 .L572: + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8956 .loc 1 808 3 discriminator 6 view .LVU2898 + 8957 0106 0223 movs r3, #2 + 8958 0108 84F84030 strb r3, [r4, #64] + 8959 010c 8BE7 b .L556 + 8960 .L573: + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8961 .loc 1 808 3 discriminator 9 view .LVU2899 + 8962 010e 0223 movs r3, #2 + 8963 0110 84F84130 strb r3, [r4, #65] + 8964 0114 87E7 b .L556 + 8965 .L574: + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 8966 .loc 1 808 3 discriminator 12 view .LVU2900 + 8967 0116 0223 movs r3, #2 + 8968 0118 84F84230 strb r3, [r4, #66] + 8969 011c 83E7 b .L556 + 8970 .LVL725: + 8971 .L562: + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8972 .loc 1 822 5 is_stmt 1 view .LVU2901 + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8973 .loc 1 822 29 is_stmt 0 view .LVU2902 + 8974 011e 9968 ldr r1, [r3, #8] + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 8975 .loc 1 822 13 view .LVU2903 + 8976 0120 0A4A ldr r2, .L575+8 + 8977 0122 0A40 ands r2, r2, r1 + 8978 .LVL726: + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8979 .loc 1 823 5 is_stmt 1 view .LVU2904 + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 8980 .loc 1 823 8 is_stmt 0 view .LVU2905 + 8981 0124 062A cmp r2, #6 + 8982 0126 18BF it ne + 8983 0128 B2F5803F cmpne r2, #65536 + 8984 012c 07D0 beq .L565 + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8985 .loc 1 825 7 is_stmt 1 view .LVU2906 + 8986 012e 1A68 ldr r2, [r3] + 8987 .LVL727: + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8988 .loc 1 825 7 is_stmt 0 view .LVU2907 + 8989 0130 42F00102 orr r2, r2, #1 + 8990 0134 1A60 str r2, [r3] + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8991 .loc 1 834 10 view .LVU2908 + 8992 0136 0020 movs r0, #0 + 8993 0138 00E0 b .L554 + 8994 .LVL728: + 8995 .L564: + ARM GAS /tmp/ccPLZXyC.s page 337 + + + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 8996 .loc 1 804 12 view .LVU2909 + 8997 013a 0120 movs r0, #1 + 8998 .LVL729: + 8999 .L554: + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9000 .loc 1 835 1 view .LVU2910 + 9001 013c 10BD pop {r4, pc} + 9002 .LVL730: + 9003 .L565: + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9004 .loc 1 834 10 view .LVU2911 + 9005 013e 0020 movs r0, #0 + 9006 0140 FCE7 b .L554 + 9007 .L576: + 9008 0142 00BF .align 2 + 9009 .L575: + 9010 0144 00000140 .word 1073807360 + 9011 0148 00040140 .word 1073808384 + 9012 014c 07000100 .word 65543 + 9013 .cfi_endproc + 9014 .LFE155: + 9016 .section .text.HAL_TIM_OC_Stop,"ax",%progbits + 9017 .align 1 + 9018 .global HAL_TIM_OC_Stop + 9019 .syntax unified + 9020 .thumb + 9021 .thumb_func + 9022 .fpu fpv5-d16 + 9024 HAL_TIM_OC_Stop: + 9025 .LVL731: + 9026 .LFB156: + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 9027 .loc 1 851 1 is_stmt 1 view -0 + 9028 .cfi_startproc + 9029 @ args = 0, pretend = 0, frame = 0 + 9030 @ frame_needed = 0, uses_anonymous_args = 0 + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 9031 .loc 1 851 1 is_stmt 0 view .LVU2913 + 9032 0000 38B5 push {r3, r4, r5, lr} + 9033 .LCFI87: + 9034 .cfi_def_cfa_offset 16 + 9035 .cfi_offset 3, -16 + 9036 .cfi_offset 4, -12 + 9037 .cfi_offset 5, -8 + 9038 .cfi_offset 14, -4 + 9039 0002 0446 mov r4, r0 + 9040 0004 0D46 mov r5, r1 + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9041 .loc 1 853 3 is_stmt 1 view .LVU2914 + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9042 .loc 1 856 3 view .LVU2915 + 9043 0006 0022 movs r2, #0 + 9044 0008 0068 ldr r0, [r0] + 9045 .LVL732: + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9046 .loc 1 856 3 is_stmt 0 view .LVU2916 + ARM GAS /tmp/ccPLZXyC.s page 338 + + + 9047 000a FFF7FEFF bl TIM_CCxChannelCmd + 9048 .LVL733: + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9049 .loc 1 858 3 is_stmt 1 view .LVU2917 + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9050 .loc 1 858 7 is_stmt 0 view .LVU2918 + 9051 000e 2368 ldr r3, [r4] + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9052 .loc 1 858 6 view .LVU2919 + 9053 0010 2249 ldr r1, .L591 + 9054 0012 234A ldr r2, .L591+4 + 9055 0014 9342 cmp r3, r2 + 9056 0016 18BF it ne + 9057 0018 8B42 cmpne r3, r1 + 9058 001a 0DD1 bne .L578 + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9059 .loc 1 861 5 is_stmt 1 view .LVU2920 + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9060 .loc 1 861 5 view .LVU2921 + 9061 001c 196A ldr r1, [r3, #32] + 9062 001e 41F21112 movw r2, #4369 + 9063 0022 1142 tst r1, r2 + 9064 0024 08D1 bne .L578 + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9065 .loc 1 861 5 discriminator 1 view .LVU2922 + 9066 0026 196A ldr r1, [r3, #32] + 9067 0028 40F24442 movw r2, #1092 + 9068 002c 1142 tst r1, r2 + 9069 002e 03D1 bne .L578 + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9070 .loc 1 861 5 discriminator 3 view .LVU2923 + 9071 0030 5A6C ldr r2, [r3, #68] + 9072 0032 22F40042 bic r2, r2, #32768 + 9073 0036 5A64 str r2, [r3, #68] + 9074 .L578: + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9075 .loc 1 861 5 discriminator 5 view .LVU2924 + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9076 .loc 1 865 3 discriminator 5 view .LVU2925 + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9077 .loc 1 865 3 discriminator 5 view .LVU2926 + 9078 0038 2368 ldr r3, [r4] + 9079 003a 196A ldr r1, [r3, #32] + 9080 003c 41F21112 movw r2, #4369 + 9081 0040 1142 tst r1, r2 + 9082 0042 08D1 bne .L579 + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9083 .loc 1 865 3 discriminator 1 view .LVU2927 + 9084 0044 196A ldr r1, [r3, #32] + 9085 0046 40F24442 movw r2, #1092 + 9086 004a 1142 tst r1, r2 + 9087 004c 03D1 bne .L579 + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9088 .loc 1 865 3 discriminator 3 view .LVU2928 + 9089 004e 1A68 ldr r2, [r3] + 9090 0050 22F00102 bic r2, r2, #1 + 9091 0054 1A60 str r2, [r3] + ARM GAS /tmp/ccPLZXyC.s page 339 + + + 9092 .L579: + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9093 .loc 1 865 3 discriminator 5 view .LVU2929 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9094 .loc 1 868 3 discriminator 5 view .LVU2930 + 9095 0056 25B9 cbnz r5, .L580 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9096 .loc 1 868 3 is_stmt 0 discriminator 1 view .LVU2931 + 9097 0058 0123 movs r3, #1 + 9098 005a 84F83E30 strb r3, [r4, #62] + 9099 .L581: + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9100 .loc 1 871 3 is_stmt 1 view .LVU2932 + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9101 .loc 1 872 1 is_stmt 0 view .LVU2933 + 9102 005e 0020 movs r0, #0 + 9103 0060 38BD pop {r3, r4, r5, pc} + 9104 .LVL734: + 9105 .L580: + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9106 .loc 1 868 3 discriminator 2 view .LVU2934 + 9107 0062 042D cmp r5, #4 + 9108 0064 09D0 beq .L587 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9109 .loc 1 868 3 discriminator 4 view .LVU2935 + 9110 0066 082D cmp r5, #8 + 9111 0068 0BD0 beq .L588 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9112 .loc 1 868 3 discriminator 7 view .LVU2936 + 9113 006a 0C2D cmp r5, #12 + 9114 006c 0DD0 beq .L589 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9115 .loc 1 868 3 discriminator 10 view .LVU2937 + 9116 006e 102D cmp r5, #16 + 9117 0070 0FD0 beq .L590 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9118 .loc 1 868 3 discriminator 13 view .LVU2938 + 9119 0072 0123 movs r3, #1 + 9120 0074 84F84330 strb r3, [r4, #67] + 9121 0078 F1E7 b .L581 + 9122 .L587: + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9123 .loc 1 868 3 discriminator 3 view .LVU2939 + 9124 007a 0123 movs r3, #1 + 9125 007c 84F83F30 strb r3, [r4, #63] + 9126 0080 EDE7 b .L581 + 9127 .L588: + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9128 .loc 1 868 3 discriminator 6 view .LVU2940 + 9129 0082 0123 movs r3, #1 + 9130 0084 84F84030 strb r3, [r4, #64] + 9131 0088 E9E7 b .L581 + 9132 .L589: + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9133 .loc 1 868 3 discriminator 9 view .LVU2941 + 9134 008a 0123 movs r3, #1 + 9135 008c 84F84130 strb r3, [r4, #65] + ARM GAS /tmp/ccPLZXyC.s page 340 + + + 9136 0090 E5E7 b .L581 + 9137 .L590: + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9138 .loc 1 868 3 discriminator 12 view .LVU2942 + 9139 0092 0123 movs r3, #1 + 9140 0094 84F84230 strb r3, [r4, #66] + 9141 0098 E1E7 b .L581 + 9142 .L592: + 9143 009a 00BF .align 2 + 9144 .L591: + 9145 009c 00000140 .word 1073807360 + 9146 00a0 00040140 .word 1073808384 + 9147 .cfi_endproc + 9148 .LFE156: + 9150 .section .text.HAL_TIM_OC_Start_IT,"ax",%progbits + 9151 .align 1 + 9152 .global HAL_TIM_OC_Start_IT + 9153 .syntax unified + 9154 .thumb + 9155 .thumb_func + 9156 .fpu fpv5-d16 + 9158 HAL_TIM_OC_Start_IT: + 9159 .LVL735: + 9160 .LFB157: + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 9161 .loc 1 886 1 is_stmt 1 view -0 + 9162 .cfi_startproc + 9163 @ args = 0, pretend = 0, frame = 0 + 9164 @ frame_needed = 0, uses_anonymous_args = 0 + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 9165 .loc 1 886 1 is_stmt 0 view .LVU2944 + 9166 0000 10B5 push {r4, lr} + 9167 .LCFI88: + 9168 .cfi_def_cfa_offset 8 + 9169 .cfi_offset 4, -8 + 9170 .cfi_offset 14, -4 + 9171 0002 0446 mov r4, r0 + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 9172 .loc 1 887 3 is_stmt 1 view .LVU2945 + 9173 .LVL736: + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9174 .loc 1 888 3 view .LVU2946 + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9175 .loc 1 891 3 view .LVU2947 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9176 .loc 1 894 3 view .LVU2948 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9177 .loc 1 894 44 is_stmt 0 view .LVU2949 + 9178 0004 0846 mov r0, r1 + 9179 .LVL737: + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9180 .loc 1 894 44 view .LVU2950 + 9181 0006 C9B9 cbnz r1, .L594 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9182 .loc 1 894 7 discriminator 1 view .LVU2951 + 9183 0008 94F83E30 ldrb r3, [r4, #62] @ zero_extendqisi2 + 9184 000c DBB2 uxtb r3, r3 + ARM GAS /tmp/ccPLZXyC.s page 341 + + + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9185 .loc 1 894 44 discriminator 1 view .LVU2952 + 9186 000e 013B subs r3, r3, #1 + 9187 0010 18BF it ne + 9188 0012 0123 movne r3, #1 + 9189 .L595: + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9190 .loc 1 894 6 discriminator 20 view .LVU2953 + 9191 0014 002B cmp r3, #0 + 9192 0016 40F0B280 bne .L616 + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9193 .loc 1 900 3 is_stmt 1 view .LVU2954 + 9194 001a 0028 cmp r0, #0 + 9195 001c 39D1 bne .L601 + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9196 .loc 1 900 3 is_stmt 0 discriminator 1 view .LVU2955 + 9197 001e 0223 movs r3, #2 + 9198 0020 84F83E30 strb r3, [r4, #62] + 9199 .L602: + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9200 .loc 1 902 3 is_stmt 1 view .LVU2956 + 9201 0024 0C28 cmp r0, #12 + 9202 0026 00F2AC80 bhi .L617 + 9203 002a DFE800F0 tbb [pc, r0] + 9204 .L608: + 9205 002e 4E .byte (.L611-.L608)/2 + 9206 002f AA .byte (.L617-.L608)/2 + 9207 0030 AA .byte (.L617-.L608)/2 + 9208 0031 AA .byte (.L617-.L608)/2 + 9209 0032 88 .byte (.L610-.L608)/2 + 9210 0033 AA .byte (.L617-.L608)/2 + 9211 0034 AA .byte (.L617-.L608)/2 + 9212 0035 AA .byte (.L617-.L608)/2 + 9213 0036 8E .byte (.L609-.L608)/2 + 9214 0037 AA .byte (.L617-.L608)/2 + 9215 0038 AA .byte (.L617-.L608)/2 + 9216 0039 AA .byte (.L617-.L608)/2 + 9217 003a 94 .byte (.L607-.L608)/2 + 9218 003b 00 .p2align 1 + 9219 .L594: + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9220 .loc 1 894 44 is_stmt 0 discriminator 2 view .LVU2957 + 9221 003c 0429 cmp r1, #4 + 9222 003e 0CD0 beq .L620 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9223 .loc 1 894 44 discriminator 5 view .LVU2958 + 9224 0040 0829 cmp r1, #8 + 9225 0042 11D0 beq .L621 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9226 .loc 1 894 44 discriminator 8 view .LVU2959 + 9227 0044 0C29 cmp r1, #12 + 9228 0046 16D0 beq .L622 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9229 .loc 1 894 44 discriminator 11 view .LVU2960 + 9230 0048 1029 cmp r1, #16 + 9231 004a 1BD0 beq .L623 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 342 + + + 9232 .loc 1 894 7 discriminator 14 view .LVU2961 + 9233 004c 94F84330 ldrb r3, [r4, #67] @ zero_extendqisi2 + 9234 0050 DBB2 uxtb r3, r3 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9235 .loc 1 894 44 discriminator 14 view .LVU2962 + 9236 0052 013B subs r3, r3, #1 + 9237 0054 18BF it ne + 9238 0056 0123 movne r3, #1 + 9239 0058 DCE7 b .L595 + 9240 .L620: + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9241 .loc 1 894 7 discriminator 4 view .LVU2963 + 9242 005a 94F83F30 ldrb r3, [r4, #63] @ zero_extendqisi2 + 9243 005e DBB2 uxtb r3, r3 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9244 .loc 1 894 44 discriminator 4 view .LVU2964 + 9245 0060 013B subs r3, r3, #1 + 9246 0062 18BF it ne + 9247 0064 0123 movne r3, #1 + 9248 0066 D5E7 b .L595 + 9249 .L621: + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9250 .loc 1 894 7 discriminator 7 view .LVU2965 + 9251 0068 94F84030 ldrb r3, [r4, #64] @ zero_extendqisi2 + 9252 006c DBB2 uxtb r3, r3 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9253 .loc 1 894 44 discriminator 7 view .LVU2966 + 9254 006e 013B subs r3, r3, #1 + 9255 0070 18BF it ne + 9256 0072 0123 movne r3, #1 + 9257 0074 CEE7 b .L595 + 9258 .L622: + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9259 .loc 1 894 7 discriminator 10 view .LVU2967 + 9260 0076 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 9261 007a DBB2 uxtb r3, r3 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9262 .loc 1 894 44 discriminator 10 view .LVU2968 + 9263 007c 013B subs r3, r3, #1 + 9264 007e 18BF it ne + 9265 0080 0123 movne r3, #1 + 9266 0082 C7E7 b .L595 + 9267 .L623: + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9268 .loc 1 894 7 discriminator 13 view .LVU2969 + 9269 0084 94F84230 ldrb r3, [r4, #66] @ zero_extendqisi2 + 9270 0088 DBB2 uxtb r3, r3 + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9271 .loc 1 894 44 discriminator 13 view .LVU2970 + 9272 008a 013B subs r3, r3, #1 + 9273 008c 18BF it ne + 9274 008e 0123 movne r3, #1 + 9275 0090 C0E7 b .L595 + 9276 .LVL738: + 9277 .L601: + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9278 .loc 1 900 3 discriminator 2 view .LVU2971 + ARM GAS /tmp/ccPLZXyC.s page 343 + + + 9279 0092 0428 cmp r0, #4 + 9280 0094 09D0 beq .L624 + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9281 .loc 1 900 3 discriminator 4 view .LVU2972 + 9282 0096 0828 cmp r0, #8 + 9283 0098 0BD0 beq .L625 + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9284 .loc 1 900 3 discriminator 7 view .LVU2973 + 9285 009a 0C28 cmp r0, #12 + 9286 009c 0DD0 beq .L626 + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9287 .loc 1 900 3 discriminator 10 view .LVU2974 + 9288 009e 1028 cmp r0, #16 + 9289 00a0 0FD0 beq .L627 + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9290 .loc 1 900 3 discriminator 13 view .LVU2975 + 9291 00a2 0223 movs r3, #2 + 9292 00a4 84F84330 strb r3, [r4, #67] + 9293 00a8 BCE7 b .L602 + 9294 .L624: + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9295 .loc 1 900 3 discriminator 3 view .LVU2976 + 9296 00aa 0223 movs r3, #2 + 9297 00ac 84F83F30 strb r3, [r4, #63] + 9298 00b0 B8E7 b .L602 + 9299 .L625: + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9300 .loc 1 900 3 discriminator 6 view .LVU2977 + 9301 00b2 0223 movs r3, #2 + 9302 00b4 84F84030 strb r3, [r4, #64] + 9303 00b8 B4E7 b .L602 + 9304 .L626: + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9305 .loc 1 900 3 discriminator 9 view .LVU2978 + 9306 00ba 0223 movs r3, #2 + 9307 00bc 84F84130 strb r3, [r4, #65] + 9308 00c0 B0E7 b .L602 + 9309 .L627: + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9310 .loc 1 900 3 discriminator 12 view .LVU2979 + 9311 00c2 0223 movs r3, #2 + 9312 00c4 84F84230 strb r3, [r4, #66] + 9313 00c8 ACE7 b .L602 + 9314 .L611: + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 9315 .loc 1 907 7 is_stmt 1 view .LVU2980 + 9316 00ca 2268 ldr r2, [r4] + 9317 00cc D368 ldr r3, [r2, #12] + 9318 00ce 43F00203 orr r3, r3, #2 + 9319 00d2 D360 str r3, [r2, #12] + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9320 .loc 1 908 7 view .LVU2981 + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9321 .loc 1 937 3 view .LVU2982 + 9322 .L612: + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9323 .loc 1 940 5 view .LVU2983 + ARM GAS /tmp/ccPLZXyC.s page 344 + + + 9324 00d4 0122 movs r2, #1 + 9325 00d6 0146 mov r1, r0 + 9326 00d8 2068 ldr r0, [r4] + 9327 .LVL739: + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9328 .loc 1 940 5 is_stmt 0 view .LVU2984 + 9329 00da FFF7FEFF bl TIM_CCxChannelCmd + 9330 .LVL740: + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9331 .loc 1 942 5 is_stmt 1 view .LVU2985 + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9332 .loc 1 942 9 is_stmt 0 view .LVU2986 + 9333 00de 2368 ldr r3, [r4] + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9334 .loc 1 942 8 view .LVU2987 + 9335 00e0 2A49 ldr r1, .L628 + 9336 00e2 2B4A ldr r2, .L628+4 + 9337 00e4 9342 cmp r3, r2 + 9338 00e6 18BF it ne + 9339 00e8 8B42 cmpne r3, r1 + 9340 00ea 03D1 bne .L613 + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9341 .loc 1 945 7 is_stmt 1 view .LVU2988 + 9342 00ec 5A6C ldr r2, [r3, #68] + 9343 00ee 42F40042 orr r2, r2, #32768 + 9344 00f2 5A64 str r2, [r3, #68] + 9345 .L613: + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9346 .loc 1 949 5 view .LVU2989 + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9347 .loc 1 949 9 is_stmt 0 view .LVU2990 + 9348 00f4 2368 ldr r3, [r4] + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9349 .loc 1 949 8 view .LVU2991 + 9350 00f6 254A ldr r2, .L628 + 9351 00f8 B3F1804F cmp r3, #1073741824 + 9352 00fc 18BF it ne + 9353 00fe 9342 cmpne r3, r2 + 9354 0100 2FD0 beq .L614 + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9355 .loc 1 949 9 discriminator 1 view .LVU2992 + 9356 0102 A2F57C42 sub r2, r2, #64512 + 9357 0106 9342 cmp r3, r2 + 9358 0108 2BD0 beq .L614 + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9359 .loc 1 949 9 discriminator 2 view .LVU2993 + 9360 010a 02F58062 add r2, r2, #1024 + 9361 010e 9342 cmp r3, r2 + 9362 0110 27D0 beq .L614 + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9363 .loc 1 949 9 discriminator 3 view .LVU2994 + 9364 0112 02F58062 add r2, r2, #1024 + 9365 0116 9342 cmp r3, r2 + 9366 0118 23D0 beq .L614 + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9367 .loc 1 949 9 discriminator 4 view .LVU2995 + 9368 011a 02F57842 add r2, r2, #63488 + ARM GAS /tmp/ccPLZXyC.s page 345 + + + 9369 011e 9342 cmp r3, r2 + 9370 0120 1FD0 beq .L614 + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9371 .loc 1 949 9 discriminator 5 view .LVU2996 + 9372 0122 02F57052 add r2, r2, #15360 + 9373 0126 9342 cmp r3, r2 + 9374 0128 1BD0 beq .L614 + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9375 .loc 1 949 9 discriminator 6 view .LVU2997 + 9376 012a A2F59432 sub r2, r2, #75776 + 9377 012e 9342 cmp r3, r2 + 9378 0130 17D0 beq .L614 + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9379 .loc 1 959 7 is_stmt 1 view .LVU2998 + 9380 0132 1A68 ldr r2, [r3] + 9381 0134 42F00102 orr r2, r2, #1 + 9382 0138 1A60 str r2, [r3] + 9383 013a 0020 movs r0, #0 + 9384 013c 22E0 b .L600 + 9385 .LVL741: + 9386 .L610: + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 9387 .loc 1 914 7 view .LVU2999 + 9388 013e 2268 ldr r2, [r4] + 9389 0140 D368 ldr r3, [r2, #12] + 9390 0142 43F00403 orr r3, r3, #4 + 9391 0146 D360 str r3, [r2, #12] + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9392 .loc 1 915 7 view .LVU3000 + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9393 .loc 1 937 3 view .LVU3001 + 9394 0148 C4E7 b .L612 + 9395 .L609: + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 9396 .loc 1 921 7 view .LVU3002 + 9397 014a 2268 ldr r2, [r4] + 9398 014c D368 ldr r3, [r2, #12] + 9399 014e 43F00803 orr r3, r3, #8 + 9400 0152 D360 str r3, [r2, #12] + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9401 .loc 1 922 7 view .LVU3003 + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9402 .loc 1 937 3 view .LVU3004 + 9403 0154 BEE7 b .L612 + 9404 .L607: + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 9405 .loc 1 928 7 view .LVU3005 + 9406 0156 2268 ldr r2, [r4] + 9407 0158 D368 ldr r3, [r2, #12] + 9408 015a 43F01003 orr r3, r3, #16 + 9409 015e D360 str r3, [r2, #12] + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9410 .loc 1 929 7 view .LVU3006 + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9411 .loc 1 937 3 view .LVU3007 + 9412 0160 B8E7 b .L612 + 9413 .LVL742: + ARM GAS /tmp/ccPLZXyC.s page 346 + + + 9414 .L614: + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 9415 .loc 1 951 7 view .LVU3008 + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 9416 .loc 1 951 31 is_stmt 0 view .LVU3009 + 9417 0162 9968 ldr r1, [r3, #8] + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 9418 .loc 1 951 15 view .LVU3010 + 9419 0164 0B4A ldr r2, .L628+8 + 9420 0166 0A40 ands r2, r2, r1 + 9421 .LVL743: + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9422 .loc 1 952 7 is_stmt 1 view .LVU3011 + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9423 .loc 1 952 10 is_stmt 0 view .LVU3012 + 9424 0168 062A cmp r2, #6 + 9425 016a 18BF it ne + 9426 016c B2F5803F cmpne r2, #65536 + 9427 0170 09D0 beq .L618 + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9428 .loc 1 954 9 is_stmt 1 view .LVU3013 + 9429 0172 1A68 ldr r2, [r3] + 9430 .LVL744: + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9431 .loc 1 954 9 is_stmt 0 view .LVU3014 + 9432 0174 42F00102 orr r2, r2, #1 + 9433 0178 1A60 str r2, [r3] + 9434 017a 0020 movs r0, #0 + 9435 017c 02E0 b .L600 + 9436 .LVL745: + 9437 .L616: + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9438 .loc 1 896 12 view .LVU3015 + 9439 017e 0120 movs r0, #1 + 9440 .LVL746: + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9441 .loc 1 896 12 view .LVU3016 + 9442 0180 00E0 b .L600 + 9443 .LVL747: + 9444 .L617: + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9445 .loc 1 902 3 view .LVU3017 + 9446 0182 0120 movs r0, #1 + 9447 .LVL748: + 9448 .L600: + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9449 .loc 1 965 1 view .LVU3018 + 9450 0184 10BD pop {r4, pc} + 9451 .LVL749: + 9452 .L618: + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9453 .loc 1 965 1 view .LVU3019 + 9454 0186 0020 movs r0, #0 + 9455 0188 FCE7 b .L600 + 9456 .L629: + 9457 018a 00BF .align 2 + 9458 .L628: + ARM GAS /tmp/ccPLZXyC.s page 347 + + + 9459 018c 00000140 .word 1073807360 + 9460 0190 00040140 .word 1073808384 + 9461 0194 07000100 .word 65543 + 9462 .cfi_endproc + 9463 .LFE157: + 9465 .section .text.HAL_TIM_OC_Stop_IT,"ax",%progbits + 9466 .align 1 + 9467 .global HAL_TIM_OC_Stop_IT + 9468 .syntax unified + 9469 .thumb + 9470 .thumb_func + 9471 .fpu fpv5-d16 + 9473 HAL_TIM_OC_Stop_IT: + 9474 .LVL750: + 9475 .LFB158: + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 9476 .loc 1 979 1 is_stmt 1 view -0 + 9477 .cfi_startproc + 9478 @ args = 0, pretend = 0, frame = 0 + 9479 @ frame_needed = 0, uses_anonymous_args = 0 + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 9480 .loc 1 979 1 is_stmt 0 view .LVU3021 + 9481 0000 38B5 push {r3, r4, r5, lr} + 9482 .LCFI89: + 9483 .cfi_def_cfa_offset 16 + 9484 .cfi_offset 3, -16 + 9485 .cfi_offset 4, -12 + 9486 .cfi_offset 5, -8 + 9487 .cfi_offset 14, -4 + 9488 0002 0546 mov r5, r0 + 9489 0004 0C46 mov r4, r1 + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9490 .loc 1 980 3 is_stmt 1 view .LVU3022 + 9491 .LVL751: + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9492 .loc 1 983 3 view .LVU3023 + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9493 .loc 1 985 3 view .LVU3024 + 9494 0006 0C29 cmp r1, #12 + 9495 0008 6FD8 bhi .L645 + 9496 000a DFE801F0 tbb [pc, r1] + 9497 .L633: + 9498 000e 07 .byte (.L636-.L633)/2 + 9499 000f 6E .byte (.L645-.L633)/2 + 9500 0010 6E .byte (.L645-.L633)/2 + 9501 0011 6E .byte (.L645-.L633)/2 + 9502 0012 3B .byte (.L635-.L633)/2 + 9503 0013 6E .byte (.L645-.L633)/2 + 9504 0014 6E .byte (.L645-.L633)/2 + 9505 0015 6E .byte (.L645-.L633)/2 + 9506 0016 41 .byte (.L634-.L633)/2 + 9507 0017 6E .byte (.L645-.L633)/2 + 9508 0018 6E .byte (.L645-.L633)/2 + 9509 0019 6E .byte (.L645-.L633)/2 + 9510 001a 47 .byte (.L632-.L633)/2 + 9511 001b 00 .p2align 1 + 9512 .L636: + ARM GAS /tmp/ccPLZXyC.s page 348 + + + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 9513 .loc 1 990 7 view .LVU3025 + 9514 001c 0268 ldr r2, [r0] + 9515 001e D368 ldr r3, [r2, #12] + 9516 0020 23F00203 bic r3, r3, #2 + 9517 0024 D360 str r3, [r2, #12] + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9518 .loc 1 991 7 view .LVU3026 +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9519 .loc 1 1020 3 view .LVU3027 + 9520 .L637: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9521 .loc 1 1023 5 view .LVU3028 + 9522 0026 0022 movs r2, #0 + 9523 0028 2146 mov r1, r4 + 9524 .LVL752: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9525 .loc 1 1023 5 is_stmt 0 view .LVU3029 + 9526 002a 2868 ldr r0, [r5] + 9527 .LVL753: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9528 .loc 1 1023 5 view .LVU3030 + 9529 002c FFF7FEFF bl TIM_CCxChannelCmd + 9530 .LVL754: +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9531 .loc 1 1025 5 is_stmt 1 view .LVU3031 +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9532 .loc 1 1025 9 is_stmt 0 view .LVU3032 + 9533 0030 2B68 ldr r3, [r5] +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9534 .loc 1 1025 8 view .LVU3033 + 9535 0032 2F49 ldr r1, .L651 + 9536 0034 2F4A ldr r2, .L651+4 + 9537 0036 9342 cmp r3, r2 + 9538 0038 18BF it ne + 9539 003a 8B42 cmpne r3, r1 + 9540 003c 0DD1 bne .L638 +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9541 .loc 1 1028 7 is_stmt 1 view .LVU3034 +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9542 .loc 1 1028 7 view .LVU3035 + 9543 003e 196A ldr r1, [r3, #32] + 9544 0040 41F21112 movw r2, #4369 + 9545 0044 1142 tst r1, r2 + 9546 0046 08D1 bne .L638 +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9547 .loc 1 1028 7 discriminator 1 view .LVU3036 + 9548 0048 196A ldr r1, [r3, #32] + 9549 004a 40F24442 movw r2, #1092 + 9550 004e 1142 tst r1, r2 + 9551 0050 03D1 bne .L638 +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9552 .loc 1 1028 7 discriminator 3 view .LVU3037 + 9553 0052 5A6C ldr r2, [r3, #68] + 9554 0054 22F40042 bic r2, r2, #32768 + 9555 0058 5A64 str r2, [r3, #68] + 9556 .L638: + ARM GAS /tmp/ccPLZXyC.s page 349 + + +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9557 .loc 1 1028 7 discriminator 5 view .LVU3038 +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9558 .loc 1 1032 5 discriminator 5 view .LVU3039 +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9559 .loc 1 1032 5 discriminator 5 view .LVU3040 + 9560 005a 2B68 ldr r3, [r5] + 9561 005c 196A ldr r1, [r3, #32] + 9562 005e 41F21112 movw r2, #4369 + 9563 0062 1142 tst r1, r2 + 9564 0064 08D1 bne .L639 +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9565 .loc 1 1032 5 discriminator 1 view .LVU3041 + 9566 0066 196A ldr r1, [r3, #32] + 9567 0068 40F24442 movw r2, #1092 + 9568 006c 1142 tst r1, r2 + 9569 006e 03D1 bne .L639 +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9570 .loc 1 1032 5 discriminator 3 view .LVU3042 + 9571 0070 1A68 ldr r2, [r3] + 9572 0072 22F00102 bic r2, r2, #1 + 9573 0076 1A60 str r2, [r3] + 9574 .L639: +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9575 .loc 1 1032 5 discriminator 5 view .LVU3043 +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9576 .loc 1 1035 5 discriminator 5 view .LVU3044 + 9577 0078 B4B9 cbnz r4, .L640 +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9578 .loc 1 1035 5 is_stmt 0 discriminator 1 view .LVU3045 + 9579 007a 0123 movs r3, #1 + 9580 007c 85F83E30 strb r3, [r5, #62] + 9581 0080 0020 movs r0, #0 + 9582 0082 33E0 b .L631 + 9583 .LVL755: + 9584 .L635: + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 9585 .loc 1 997 7 is_stmt 1 view .LVU3046 + 9586 0084 0268 ldr r2, [r0] + 9587 0086 D368 ldr r3, [r2, #12] + 9588 0088 23F00403 bic r3, r3, #4 + 9589 008c D360 str r3, [r2, #12] + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9590 .loc 1 998 7 view .LVU3047 +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9591 .loc 1 1020 3 view .LVU3048 + 9592 008e CAE7 b .L637 + 9593 .L634: +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 9594 .loc 1 1004 7 view .LVU3049 + 9595 0090 0268 ldr r2, [r0] + 9596 0092 D368 ldr r3, [r2, #12] + 9597 0094 23F00803 bic r3, r3, #8 + 9598 0098 D360 str r3, [r2, #12] +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9599 .loc 1 1005 7 view .LVU3050 +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 350 + + + 9600 .loc 1 1020 3 view .LVU3051 + 9601 009a C4E7 b .L637 + 9602 .L632: +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 9603 .loc 1 1011 7 view .LVU3052 + 9604 009c 0268 ldr r2, [r0] + 9605 009e D368 ldr r3, [r2, #12] + 9606 00a0 23F01003 bic r3, r3, #16 + 9607 00a4 D360 str r3, [r2, #12] +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9608 .loc 1 1012 7 view .LVU3053 +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9609 .loc 1 1020 3 view .LVU3054 + 9610 00a6 BEE7 b .L637 + 9611 .LVL756: + 9612 .L640: +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9613 .loc 1 1035 5 is_stmt 0 discriminator 2 view .LVU3055 + 9614 00a8 042C cmp r4, #4 + 9615 00aa 0AD0 beq .L647 +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9616 .loc 1 1035 5 discriminator 4 view .LVU3056 + 9617 00ac 082C cmp r4, #8 + 9618 00ae 0DD0 beq .L648 +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9619 .loc 1 1035 5 discriminator 7 view .LVU3057 + 9620 00b0 0C2C cmp r4, #12 + 9621 00b2 10D0 beq .L649 +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9622 .loc 1 1035 5 discriminator 10 view .LVU3058 + 9623 00b4 102C cmp r4, #16 + 9624 00b6 13D0 beq .L650 +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9625 .loc 1 1035 5 discriminator 13 view .LVU3059 + 9626 00b8 0123 movs r3, #1 + 9627 00ba 85F84330 strb r3, [r5, #67] + 9628 00be 0020 movs r0, #0 + 9629 00c0 14E0 b .L631 + 9630 .L647: +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9631 .loc 1 1035 5 discriminator 3 view .LVU3060 + 9632 00c2 0123 movs r3, #1 + 9633 00c4 85F83F30 strb r3, [r5, #63] + 9634 00c8 0020 movs r0, #0 + 9635 00ca 0FE0 b .L631 + 9636 .L648: +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9637 .loc 1 1035 5 discriminator 6 view .LVU3061 + 9638 00cc 0123 movs r3, #1 + 9639 00ce 85F84030 strb r3, [r5, #64] + 9640 00d2 0020 movs r0, #0 + 9641 00d4 0AE0 b .L631 + 9642 .L649: +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9643 .loc 1 1035 5 discriminator 9 view .LVU3062 + 9644 00d6 0123 movs r3, #1 + 9645 00d8 85F84130 strb r3, [r5, #65] + ARM GAS /tmp/ccPLZXyC.s page 351 + + + 9646 00dc 0020 movs r0, #0 + 9647 00de 05E0 b .L631 + 9648 .L650: +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9649 .loc 1 1035 5 discriminator 12 view .LVU3063 + 9650 00e0 0123 movs r3, #1 + 9651 00e2 85F84230 strb r3, [r5, #66] + 9652 00e6 0020 movs r0, #0 + 9653 00e8 00E0 b .L631 + 9654 .LVL757: + 9655 .L645: + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9656 .loc 1 985 3 view .LVU3064 + 9657 00ea 0120 movs r0, #1 + 9658 .LVL758: + 9659 .L631: +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9660 .loc 1 1039 3 is_stmt 1 view .LVU3065 +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9661 .loc 1 1040 1 is_stmt 0 view .LVU3066 + 9662 00ec 38BD pop {r3, r4, r5, pc} + 9663 .LVL759: + 9664 .L652: +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9665 .loc 1 1040 1 view .LVU3067 + 9666 00ee 00BF .align 2 + 9667 .L651: + 9668 00f0 00000140 .word 1073807360 + 9669 00f4 00040140 .word 1073808384 + 9670 .cfi_endproc + 9671 .LFE158: + 9673 .section .text.HAL_TIM_OC_Start_DMA,"ax",%progbits + 9674 .align 1 + 9675 .global HAL_TIM_OC_Start_DMA + 9676 .syntax unified + 9677 .thumb + 9678 .thumb_func + 9679 .fpu fpv5-d16 + 9681 HAL_TIM_OC_Start_DMA: + 9682 .LVL760: + 9683 .LFB159: +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 9684 .loc 1 1057 1 is_stmt 1 view -0 + 9685 .cfi_startproc + 9686 @ args = 0, pretend = 0, frame = 0 + 9687 @ frame_needed = 0, uses_anonymous_args = 0 +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 9688 .loc 1 1057 1 is_stmt 0 view .LVU3069 + 9689 0000 38B5 push {r3, r4, r5, lr} + 9690 .LCFI90: + 9691 .cfi_def_cfa_offset 16 + 9692 .cfi_offset 3, -16 + 9693 .cfi_offset 4, -12 + 9694 .cfi_offset 5, -8 + 9695 .cfi_offset 14, -4 + 9696 0002 0446 mov r4, r0 + 9697 0004 9446 mov ip, r2 + ARM GAS /tmp/ccPLZXyC.s page 352 + + +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 9698 .loc 1 1058 3 is_stmt 1 view .LVU3070 + 9699 .LVL761: +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9700 .loc 1 1059 3 view .LVU3071 +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9701 .loc 1 1062 3 view .LVU3072 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9702 .loc 1 1065 3 view .LVU3073 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9703 .loc 1 1065 44 is_stmt 0 view .LVU3074 + 9704 0006 0D46 mov r5, r1 + 9705 0008 0029 cmp r1, #0 + 9706 000a 32D1 bne .L654 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9707 .loc 1 1065 7 discriminator 1 view .LVU3075 + 9708 000c 90F83E00 ldrb r0, [r0, #62] @ zero_extendqisi2 + 9709 .LVL762: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9710 .loc 1 1065 7 discriminator 1 view .LVU3076 + 9711 0010 C0B2 uxtb r0, r0 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9712 .loc 1 1065 44 discriminator 1 view .LVU3077 + 9713 0012 0228 cmp r0, #2 + 9714 0014 14BF ite ne + 9715 0016 0020 movne r0, #0 + 9716 0018 0120 moveq r0, #1 + 9717 .L655: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9718 .loc 1 1065 6 discriminator 20 view .LVU3078 + 9719 001a 0028 cmp r0, #0 + 9720 001c 40F04381 bne .L682 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9721 .loc 1 1069 8 is_stmt 1 view .LVU3079 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9722 .loc 1 1069 49 is_stmt 0 view .LVU3080 + 9723 0020 002D cmp r5, #0 + 9724 0022 56D1 bne .L661 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9725 .loc 1 1069 12 discriminator 1 view .LVU3081 + 9726 0024 94F83E20 ldrb r2, [r4, #62] @ zero_extendqisi2 + 9727 .LVL763: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9728 .loc 1 1069 12 discriminator 1 view .LVU3082 + 9729 0028 D2B2 uxtb r2, r2 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9730 .loc 1 1069 49 discriminator 1 view .LVU3083 + 9731 002a 012A cmp r2, #1 + 9732 002c 14BF ite ne + 9733 002e 0022 movne r2, #0 + 9734 0030 0122 moveq r2, #1 + 9735 .L662: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9736 .loc 1 1069 11 discriminator 20 view .LVU3084 + 9737 0032 002A cmp r2, #0 + 9738 0034 00F03981 beq .L683 +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 353 + + + 9739 .loc 1 1071 5 is_stmt 1 view .LVU3085 +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9740 .loc 1 1071 8 is_stmt 0 view .LVU3086 + 9741 0038 002B cmp r3, #0 + 9742 003a 18BF it ne + 9743 003c BCF1000F cmpne ip, #0 + 9744 0040 00F03581 beq .L684 +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9745 .loc 1 1077 7 is_stmt 1 view .LVU3087 + 9746 0044 002D cmp r5, #0 + 9747 0046 74D1 bne .L667 +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9748 .loc 1 1077 7 is_stmt 0 discriminator 1 view .LVU3088 + 9749 0048 0222 movs r2, #2 + 9750 004a 84F83E20 strb r2, [r4, #62] + 9751 .L668: +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9752 .loc 1 1085 3 is_stmt 1 view .LVU3089 + 9753 004e 0C2D cmp r5, #12 + 9754 0050 00F22F81 bhi .L685 + 9755 0054 DFE815F0 tbh [pc, r5, lsl #1] + 9756 .L674: + 9757 0058 8900 .2byte (.L677-.L674)/2 + 9758 005a 2D01 .2byte (.L685-.L674)/2 + 9759 005c 2D01 .2byte (.L685-.L674)/2 + 9760 005e 2D01 .2byte (.L685-.L674)/2 + 9761 0060 D500 .2byte (.L676-.L674)/2 + 9762 0062 2D01 .2byte (.L685-.L674)/2 + 9763 0064 2D01 .2byte (.L685-.L674)/2 + 9764 0066 2D01 .2byte (.L685-.L674)/2 + 9765 0068 EC00 .2byte (.L675-.L674)/2 + 9766 006a 2D01 .2byte (.L685-.L674)/2 + 9767 006c 2D01 .2byte (.L685-.L674)/2 + 9768 006e 2D01 .2byte (.L685-.L674)/2 + 9769 0070 0301 .2byte (.L673-.L674)/2 + 9770 .LVL764: + 9771 .p2align 1 + 9772 .L654: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9773 .loc 1 1065 44 is_stmt 0 discriminator 2 view .LVU3090 + 9774 0072 0429 cmp r1, #4 + 9775 0074 0DD0 beq .L692 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9776 .loc 1 1065 44 discriminator 5 view .LVU3091 + 9777 0076 0829 cmp r1, #8 + 9778 0078 13D0 beq .L693 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9779 .loc 1 1065 44 discriminator 8 view .LVU3092 + 9780 007a 0C29 cmp r1, #12 + 9781 007c 19D0 beq .L694 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9782 .loc 1 1065 44 discriminator 11 view .LVU3093 + 9783 007e 1029 cmp r1, #16 + 9784 0080 1FD0 beq .L695 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9785 .loc 1 1065 7 discriminator 14 view .LVU3094 + 9786 0082 90F84300 ldrb r0, [r0, #67] @ zero_extendqisi2 + ARM GAS /tmp/ccPLZXyC.s page 354 + + + 9787 .LVL765: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9788 .loc 1 1065 7 discriminator 14 view .LVU3095 + 9789 0086 C0B2 uxtb r0, r0 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9790 .loc 1 1065 44 discriminator 14 view .LVU3096 + 9791 0088 0228 cmp r0, #2 + 9792 008a 14BF ite ne + 9793 008c 0020 movne r0, #0 + 9794 008e 0120 moveq r0, #1 + 9795 0090 C3E7 b .L655 + 9796 .LVL766: + 9797 .L692: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9798 .loc 1 1065 7 discriminator 4 view .LVU3097 + 9799 0092 90F83F00 ldrb r0, [r0, #63] @ zero_extendqisi2 + 9800 .LVL767: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9801 .loc 1 1065 7 discriminator 4 view .LVU3098 + 9802 0096 C0B2 uxtb r0, r0 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9803 .loc 1 1065 44 discriminator 4 view .LVU3099 + 9804 0098 0228 cmp r0, #2 + 9805 009a 14BF ite ne + 9806 009c 0020 movne r0, #0 + 9807 009e 0120 moveq r0, #1 + 9808 00a0 BBE7 b .L655 + 9809 .LVL768: + 9810 .L693: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9811 .loc 1 1065 7 discriminator 7 view .LVU3100 + 9812 00a2 90F84000 ldrb r0, [r0, #64] @ zero_extendqisi2 + 9813 .LVL769: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9814 .loc 1 1065 7 discriminator 7 view .LVU3101 + 9815 00a6 C0B2 uxtb r0, r0 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9816 .loc 1 1065 44 discriminator 7 view .LVU3102 + 9817 00a8 0228 cmp r0, #2 + 9818 00aa 14BF ite ne + 9819 00ac 0020 movne r0, #0 + 9820 00ae 0120 moveq r0, #1 + 9821 00b0 B3E7 b .L655 + 9822 .LVL770: + 9823 .L694: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9824 .loc 1 1065 7 discriminator 10 view .LVU3103 + 9825 00b2 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 9826 .LVL771: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9827 .loc 1 1065 7 discriminator 10 view .LVU3104 + 9828 00b6 C0B2 uxtb r0, r0 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9829 .loc 1 1065 44 discriminator 10 view .LVU3105 + 9830 00b8 0228 cmp r0, #2 + 9831 00ba 14BF ite ne + 9832 00bc 0020 movne r0, #0 + ARM GAS /tmp/ccPLZXyC.s page 355 + + + 9833 00be 0120 moveq r0, #1 + 9834 00c0 ABE7 b .L655 + 9835 .LVL772: + 9836 .L695: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9837 .loc 1 1065 7 discriminator 13 view .LVU3106 + 9838 00c2 90F84200 ldrb r0, [r0, #66] @ zero_extendqisi2 + 9839 .LVL773: +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9840 .loc 1 1065 7 discriminator 13 view .LVU3107 + 9841 00c6 C0B2 uxtb r0, r0 +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9842 .loc 1 1065 44 discriminator 13 view .LVU3108 + 9843 00c8 0228 cmp r0, #2 + 9844 00ca 14BF ite ne + 9845 00cc 0020 movne r0, #0 + 9846 00ce 0120 moveq r0, #1 + 9847 00d0 A3E7 b .L655 + 9848 .L661: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9849 .loc 1 1069 49 discriminator 2 view .LVU3109 + 9850 00d2 042D cmp r5, #4 + 9851 00d4 0DD0 beq .L696 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9852 .loc 1 1069 49 discriminator 5 view .LVU3110 + 9853 00d6 082D cmp r5, #8 + 9854 00d8 13D0 beq .L697 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9855 .loc 1 1069 49 discriminator 8 view .LVU3111 + 9856 00da 0C2D cmp r5, #12 + 9857 00dc 19D0 beq .L698 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9858 .loc 1 1069 49 discriminator 11 view .LVU3112 + 9859 00de 102D cmp r5, #16 + 9860 00e0 1FD0 beq .L699 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9861 .loc 1 1069 12 discriminator 14 view .LVU3113 + 9862 00e2 94F84320 ldrb r2, [r4, #67] @ zero_extendqisi2 + 9863 .LVL774: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9864 .loc 1 1069 12 discriminator 14 view .LVU3114 + 9865 00e6 D2B2 uxtb r2, r2 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9866 .loc 1 1069 49 discriminator 14 view .LVU3115 + 9867 00e8 012A cmp r2, #1 + 9868 00ea 14BF ite ne + 9869 00ec 0022 movne r2, #0 + 9870 00ee 0122 moveq r2, #1 + 9871 00f0 9FE7 b .L662 + 9872 .LVL775: + 9873 .L696: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9874 .loc 1 1069 12 discriminator 4 view .LVU3116 + 9875 00f2 94F83F20 ldrb r2, [r4, #63] @ zero_extendqisi2 + 9876 .LVL776: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9877 .loc 1 1069 12 discriminator 4 view .LVU3117 + ARM GAS /tmp/ccPLZXyC.s page 356 + + + 9878 00f6 D2B2 uxtb r2, r2 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9879 .loc 1 1069 49 discriminator 4 view .LVU3118 + 9880 00f8 012A cmp r2, #1 + 9881 00fa 14BF ite ne + 9882 00fc 0022 movne r2, #0 + 9883 00fe 0122 moveq r2, #1 + 9884 0100 97E7 b .L662 + 9885 .LVL777: + 9886 .L697: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9887 .loc 1 1069 12 discriminator 7 view .LVU3119 + 9888 0102 94F84020 ldrb r2, [r4, #64] @ zero_extendqisi2 + 9889 .LVL778: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9890 .loc 1 1069 12 discriminator 7 view .LVU3120 + 9891 0106 D2B2 uxtb r2, r2 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9892 .loc 1 1069 49 discriminator 7 view .LVU3121 + 9893 0108 012A cmp r2, #1 + 9894 010a 14BF ite ne + 9895 010c 0022 movne r2, #0 + 9896 010e 0122 moveq r2, #1 + 9897 0110 8FE7 b .L662 + 9898 .LVL779: + 9899 .L698: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9900 .loc 1 1069 12 discriminator 10 view .LVU3122 + 9901 0112 94F84120 ldrb r2, [r4, #65] @ zero_extendqisi2 + 9902 .LVL780: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9903 .loc 1 1069 12 discriminator 10 view .LVU3123 + 9904 0116 D2B2 uxtb r2, r2 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9905 .loc 1 1069 49 discriminator 10 view .LVU3124 + 9906 0118 012A cmp r2, #1 + 9907 011a 14BF ite ne + 9908 011c 0022 movne r2, #0 + 9909 011e 0122 moveq r2, #1 + 9910 0120 87E7 b .L662 + 9911 .LVL781: + 9912 .L699: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9913 .loc 1 1069 12 discriminator 13 view .LVU3125 + 9914 0122 94F84220 ldrb r2, [r4, #66] @ zero_extendqisi2 + 9915 .LVL782: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9916 .loc 1 1069 12 discriminator 13 view .LVU3126 + 9917 0126 D2B2 uxtb r2, r2 +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 9918 .loc 1 1069 49 discriminator 13 view .LVU3127 + 9919 0128 012A cmp r2, #1 + 9920 012a 14BF ite ne + 9921 012c 0022 movne r2, #0 + 9922 012e 0122 moveq r2, #1 + 9923 0130 7FE7 b .L662 + 9924 .L667: + ARM GAS /tmp/ccPLZXyC.s page 357 + + +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9925 .loc 1 1077 7 discriminator 2 view .LVU3128 + 9926 0132 042D cmp r5, #4 + 9927 0134 09D0 beq .L700 +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9928 .loc 1 1077 7 discriminator 4 view .LVU3129 + 9929 0136 082D cmp r5, #8 + 9930 0138 0BD0 beq .L701 +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9931 .loc 1 1077 7 discriminator 7 view .LVU3130 + 9932 013a 0C2D cmp r5, #12 + 9933 013c 0DD0 beq .L702 +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9934 .loc 1 1077 7 discriminator 10 view .LVU3131 + 9935 013e 102D cmp r5, #16 + 9936 0140 0FD0 beq .L703 +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9937 .loc 1 1077 7 discriminator 13 view .LVU3132 + 9938 0142 0222 movs r2, #2 + 9939 0144 84F84320 strb r2, [r4, #67] + 9940 0148 81E7 b .L668 + 9941 .L700: +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9942 .loc 1 1077 7 discriminator 3 view .LVU3133 + 9943 014a 0222 movs r2, #2 + 9944 014c 84F83F20 strb r2, [r4, #63] + 9945 0150 7DE7 b .L668 + 9946 .L701: +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9947 .loc 1 1077 7 discriminator 6 view .LVU3134 + 9948 0152 0222 movs r2, #2 + 9949 0154 84F84020 strb r2, [r4, #64] + 9950 0158 79E7 b .L668 + 9951 .L702: +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9952 .loc 1 1077 7 discriminator 9 view .LVU3135 + 9953 015a 0222 movs r2, #2 + 9954 015c 84F84120 strb r2, [r4, #65] + 9955 0160 75E7 b .L668 + 9956 .L703: +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9957 .loc 1 1077 7 discriminator 12 view .LVU3136 + 9958 0162 0222 movs r2, #2 + 9959 0164 84F84220 strb r2, [r4, #66] + 9960 0168 71E7 b .L668 + 9961 .L677: +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 9962 .loc 1 1090 7 is_stmt 1 view .LVU3137 +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 9963 .loc 1 1090 17 is_stmt 0 view .LVU3138 + 9964 016a 626A ldr r2, [r4, #36] +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 9965 .loc 1 1090 52 view .LVU3139 + 9966 016c 5749 ldr r1, .L704 + 9967 .LVL783: +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 9968 .loc 1 1090 52 view .LVU3140 + ARM GAS /tmp/ccPLZXyC.s page 358 + + + 9969 016e D163 str r1, [r2, #60] +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9970 .loc 1 1091 7 is_stmt 1 view .LVU3141 +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9971 .loc 1 1091 17 is_stmt 0 view .LVU3142 + 9972 0170 626A ldr r2, [r4, #36] +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9973 .loc 1 1091 56 view .LVU3143 + 9974 0172 5749 ldr r1, .L704+4 + 9975 0174 1164 str r1, [r2, #64] +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9976 .loc 1 1094 7 is_stmt 1 view .LVU3144 +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9977 .loc 1 1094 17 is_stmt 0 view .LVU3145 + 9978 0176 626A ldr r2, [r4, #36] +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 9979 .loc 1 1094 53 view .LVU3146 + 9980 0178 5649 ldr r1, .L704+8 + 9981 017a D164 str r1, [r2, #76] +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 9982 .loc 1 1097 7 is_stmt 1 view .LVU3147 +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 9983 .loc 1 1097 88 is_stmt 0 view .LVU3148 + 9984 017c 2268 ldr r2, [r4] +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 9985 .loc 1 1097 11 view .LVU3149 + 9986 017e 3432 adds r2, r2, #52 + 9987 0180 6146 mov r1, ip + 9988 0182 606A ldr r0, [r4, #36] + 9989 0184 FFF7FEFF bl HAL_DMA_Start_IT + 9990 .LVL784: +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 9991 .loc 1 1097 10 view .LVU3150 + 9992 0188 0028 cmp r0, #0 + 9993 018a 40F09480 bne .L686 +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 9994 .loc 1 1105 7 is_stmt 1 view .LVU3151 + 9995 018e 2268 ldr r2, [r4] + 9996 0190 D368 ldr r3, [r2, #12] + 9997 0192 43F40073 orr r3, r3, #512 + 9998 0196 D360 str r3, [r2, #12] +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 9999 .loc 1 1106 7 view .LVU3152 +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10000 .loc 1 1178 3 view .LVU3153 + 10001 .L678: +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10002 .loc 1 1181 5 view .LVU3154 + 10003 0198 0122 movs r2, #1 + 10004 019a 2946 mov r1, r5 + 10005 019c 2068 ldr r0, [r4] + 10006 019e FFF7FEFF bl TIM_CCxChannelCmd + 10007 .LVL785: +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10008 .loc 1 1183 5 view .LVU3155 +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10009 .loc 1 1183 9 is_stmt 0 view .LVU3156 + ARM GAS /tmp/ccPLZXyC.s page 359 + + + 10010 01a2 2368 ldr r3, [r4] +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10011 .loc 1 1183 8 view .LVU3157 + 10012 01a4 4C49 ldr r1, .L704+12 + 10013 01a6 4D4A ldr r2, .L704+16 + 10014 01a8 9342 cmp r3, r2 + 10015 01aa 18BF it ne + 10016 01ac 8B42 cmpne r3, r1 + 10017 01ae 03D1 bne .L679 +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10018 .loc 1 1186 7 is_stmt 1 view .LVU3158 + 10019 01b0 5A6C ldr r2, [r3, #68] + 10020 01b2 42F40042 orr r2, r2, #32768 + 10021 01b6 5A64 str r2, [r3, #68] + 10022 .L679: +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10023 .loc 1 1190 5 view .LVU3159 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10024 .loc 1 1190 9 is_stmt 0 view .LVU3160 + 10025 01b8 2368 ldr r3, [r4] +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10026 .loc 1 1190 8 view .LVU3161 + 10027 01ba 474A ldr r2, .L704+12 + 10028 01bc B3F1804F cmp r3, #1073741824 + 10029 01c0 18BF it ne + 10030 01c2 9342 cmpne r3, r2 + 10031 01c4 61D0 beq .L680 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10032 .loc 1 1190 9 discriminator 1 view .LVU3162 + 10033 01c6 A2F57C42 sub r2, r2, #64512 + 10034 01ca 9342 cmp r3, r2 + 10035 01cc 5DD0 beq .L680 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10036 .loc 1 1190 9 discriminator 2 view .LVU3163 + 10037 01ce 02F58062 add r2, r2, #1024 + 10038 01d2 9342 cmp r3, r2 + 10039 01d4 59D0 beq .L680 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10040 .loc 1 1190 9 discriminator 3 view .LVU3164 + 10041 01d6 02F58062 add r2, r2, #1024 + 10042 01da 9342 cmp r3, r2 + 10043 01dc 55D0 beq .L680 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10044 .loc 1 1190 9 discriminator 4 view .LVU3165 + 10045 01de 02F57842 add r2, r2, #63488 + 10046 01e2 9342 cmp r3, r2 + 10047 01e4 51D0 beq .L680 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10048 .loc 1 1190 9 discriminator 5 view .LVU3166 + 10049 01e6 02F57052 add r2, r2, #15360 + 10050 01ea 9342 cmp r3, r2 + 10051 01ec 4DD0 beq .L680 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10052 .loc 1 1190 9 discriminator 6 view .LVU3167 + 10053 01ee A2F59432 sub r2, r2, #75776 + 10054 01f2 9342 cmp r3, r2 + 10055 01f4 49D0 beq .L680 + ARM GAS /tmp/ccPLZXyC.s page 360 + + +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10056 .loc 1 1200 7 is_stmt 1 view .LVU3168 + 10057 01f6 1A68 ldr r2, [r3] + 10058 01f8 42F00102 orr r2, r2, #1 + 10059 01fc 1A60 str r2, [r3] + 10060 01fe 0020 movs r0, #0 + 10061 0200 54E0 b .L660 + 10062 .LVL786: + 10063 .L676: +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10064 .loc 1 1112 7 view .LVU3169 +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10065 .loc 1 1112 17 is_stmt 0 view .LVU3170 + 10066 0202 A26A ldr r2, [r4, #40] +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10067 .loc 1 1112 52 view .LVU3171 + 10068 0204 3149 ldr r1, .L704 + 10069 .LVL787: +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10070 .loc 1 1112 52 view .LVU3172 + 10071 0206 D163 str r1, [r2, #60] +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10072 .loc 1 1113 7 is_stmt 1 view .LVU3173 +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10073 .loc 1 1113 17 is_stmt 0 view .LVU3174 + 10074 0208 A26A ldr r2, [r4, #40] +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10075 .loc 1 1113 56 view .LVU3175 + 10076 020a 3149 ldr r1, .L704+4 + 10077 020c 1164 str r1, [r2, #64] +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10078 .loc 1 1116 7 is_stmt 1 view .LVU3176 +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10079 .loc 1 1116 17 is_stmt 0 view .LVU3177 + 10080 020e A26A ldr r2, [r4, #40] +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10081 .loc 1 1116 53 view .LVU3178 + 10082 0210 3049 ldr r1, .L704+8 + 10083 0212 D164 str r1, [r2, #76] +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10084 .loc 1 1119 7 is_stmt 1 view .LVU3179 +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10085 .loc 1 1119 88 is_stmt 0 view .LVU3180 + 10086 0214 2268 ldr r2, [r4] +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10087 .loc 1 1119 11 view .LVU3181 + 10088 0216 3832 adds r2, r2, #56 + 10089 0218 6146 mov r1, ip + 10090 021a A06A ldr r0, [r4, #40] + 10091 021c FFF7FEFF bl HAL_DMA_Start_IT + 10092 .LVL788: +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10093 .loc 1 1119 10 view .LVU3182 + 10094 0220 0028 cmp r0, #0 + 10095 0222 4AD1 bne .L687 +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10096 .loc 1 1127 7 is_stmt 1 view .LVU3183 + ARM GAS /tmp/ccPLZXyC.s page 361 + + + 10097 0224 2268 ldr r2, [r4] + 10098 0226 D368 ldr r3, [r2, #12] + 10099 0228 43F48063 orr r3, r3, #1024 + 10100 022c D360 str r3, [r2, #12] +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10101 .loc 1 1128 7 view .LVU3184 +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10102 .loc 1 1178 3 view .LVU3185 + 10103 022e B3E7 b .L678 + 10104 .LVL789: + 10105 .L675: +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10106 .loc 1 1134 7 view .LVU3186 +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10107 .loc 1 1134 17 is_stmt 0 view .LVU3187 + 10108 0230 E26A ldr r2, [r4, #44] +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10109 .loc 1 1134 52 view .LVU3188 + 10110 0232 2649 ldr r1, .L704 + 10111 .LVL790: +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10112 .loc 1 1134 52 view .LVU3189 + 10113 0234 D163 str r1, [r2, #60] +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10114 .loc 1 1135 7 is_stmt 1 view .LVU3190 +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10115 .loc 1 1135 17 is_stmt 0 view .LVU3191 + 10116 0236 E26A ldr r2, [r4, #44] +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10117 .loc 1 1135 56 view .LVU3192 + 10118 0238 2549 ldr r1, .L704+4 + 10119 023a 1164 str r1, [r2, #64] +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10120 .loc 1 1138 7 is_stmt 1 view .LVU3193 +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10121 .loc 1 1138 17 is_stmt 0 view .LVU3194 + 10122 023c E26A ldr r2, [r4, #44] +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10123 .loc 1 1138 53 view .LVU3195 + 10124 023e 2549 ldr r1, .L704+8 + 10125 0240 D164 str r1, [r2, #76] +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10126 .loc 1 1141 7 is_stmt 1 view .LVU3196 +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10127 .loc 1 1141 88 is_stmt 0 view .LVU3197 + 10128 0242 2268 ldr r2, [r4] +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10129 .loc 1 1141 11 view .LVU3198 + 10130 0244 3C32 adds r2, r2, #60 + 10131 0246 6146 mov r1, ip + 10132 0248 E06A ldr r0, [r4, #44] + 10133 024a FFF7FEFF bl HAL_DMA_Start_IT + 10134 .LVL791: +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10135 .loc 1 1141 10 view .LVU3199 + 10136 024e 0028 cmp r0, #0 + 10137 0250 35D1 bne .L688 + ARM GAS /tmp/ccPLZXyC.s page 362 + + +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10138 .loc 1 1148 7 is_stmt 1 view .LVU3200 + 10139 0252 2268 ldr r2, [r4] + 10140 0254 D368 ldr r3, [r2, #12] + 10141 0256 43F40063 orr r3, r3, #2048 + 10142 025a D360 str r3, [r2, #12] +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10143 .loc 1 1149 7 view .LVU3201 +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10144 .loc 1 1178 3 view .LVU3202 + 10145 025c 9CE7 b .L678 + 10146 .LVL792: + 10147 .L673: +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10148 .loc 1 1155 7 view .LVU3203 +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10149 .loc 1 1155 17 is_stmt 0 view .LVU3204 + 10150 025e 226B ldr r2, [r4, #48] +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10151 .loc 1 1155 52 view .LVU3205 + 10152 0260 1A49 ldr r1, .L704 + 10153 .LVL793: +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 10154 .loc 1 1155 52 view .LVU3206 + 10155 0262 D163 str r1, [r2, #60] +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10156 .loc 1 1156 7 is_stmt 1 view .LVU3207 +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10157 .loc 1 1156 17 is_stmt 0 view .LVU3208 + 10158 0264 226B ldr r2, [r4, #48] +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10159 .loc 1 1156 56 view .LVU3209 + 10160 0266 1A49 ldr r1, .L704+4 + 10161 0268 1164 str r1, [r2, #64] +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10162 .loc 1 1159 7 is_stmt 1 view .LVU3210 +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10163 .loc 1 1159 17 is_stmt 0 view .LVU3211 + 10164 026a 226B ldr r2, [r4, #48] +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10165 .loc 1 1159 53 view .LVU3212 + 10166 026c 1949 ldr r1, .L704+8 + 10167 026e D164 str r1, [r2, #76] +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10168 .loc 1 1162 7 is_stmt 1 view .LVU3213 +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10169 .loc 1 1162 88 is_stmt 0 view .LVU3214 + 10170 0270 2268 ldr r2, [r4] +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10171 .loc 1 1162 11 view .LVU3215 + 10172 0272 4032 adds r2, r2, #64 + 10173 0274 6146 mov r1, ip + 10174 0276 206B ldr r0, [r4, #48] + 10175 0278 FFF7FEFF bl HAL_DMA_Start_IT + 10176 .LVL794: +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 10177 .loc 1 1162 10 view .LVU3216 + ARM GAS /tmp/ccPLZXyC.s page 363 + + + 10178 027c 08BB cbnz r0, .L689 +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10179 .loc 1 1169 7 is_stmt 1 view .LVU3217 + 10180 027e 2268 ldr r2, [r4] + 10181 0280 D368 ldr r3, [r2, #12] + 10182 0282 43F48053 orr r3, r3, #4096 + 10183 0286 D360 str r3, [r2, #12] +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10184 .loc 1 1170 7 view .LVU3218 +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10185 .loc 1 1178 3 view .LVU3219 + 10186 0288 86E7 b .L678 + 10187 .L680: +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 10188 .loc 1 1192 7 view .LVU3220 +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 10189 .loc 1 1192 31 is_stmt 0 view .LVU3221 + 10190 028a 9968 ldr r1, [r3, #8] +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 10191 .loc 1 1192 15 view .LVU3222 + 10192 028c 144A ldr r2, .L704+20 + 10193 028e 0A40 ands r2, r2, r1 + 10194 .LVL795: +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10195 .loc 1 1193 7 is_stmt 1 view .LVU3223 +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10196 .loc 1 1193 10 is_stmt 0 view .LVU3224 + 10197 0290 062A cmp r2, #6 + 10198 0292 18BF it ne + 10199 0294 B2F5803F cmpne r2, #65536 + 10200 0298 15D0 beq .L690 +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10201 .loc 1 1195 9 is_stmt 1 view .LVU3225 + 10202 029a 1A68 ldr r2, [r3] + 10203 .LVL796: +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10204 .loc 1 1195 9 is_stmt 0 view .LVU3226 + 10205 029c 42F00102 orr r2, r2, #1 + 10206 02a0 1A60 str r2, [r3] + 10207 02a2 0020 movs r0, #0 + 10208 02a4 02E0 b .L660 + 10209 .LVL797: + 10210 .L682: +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10211 .loc 1 1067 12 view .LVU3227 + 10212 02a6 0220 movs r0, #2 + 10213 02a8 00E0 b .L660 + 10214 .LVL798: + 10215 .L683: +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10216 .loc 1 1082 12 view .LVU3228 + 10217 02aa 0120 movs r0, #1 + 10218 .LVL799: + 10219 .L660: +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10220 .loc 1 1206 1 view .LVU3229 + 10221 02ac 38BD pop {r3, r4, r5, pc} + ARM GAS /tmp/ccPLZXyC.s page 364 + + + 10222 .LVL800: + 10223 .L684: +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10224 .loc 1 1073 14 view .LVU3230 + 10225 02ae 0120 movs r0, #1 + 10226 02b0 FCE7 b .L660 + 10227 .L685: +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10228 .loc 1 1085 3 view .LVU3231 + 10229 02b2 0120 movs r0, #1 + 10230 02b4 FAE7 b .L660 + 10231 .LVL801: + 10232 .L686: +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10233 .loc 1 1101 16 view .LVU3232 + 10234 02b6 0120 movs r0, #1 + 10235 02b8 F8E7 b .L660 + 10236 .L687: +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10237 .loc 1 1123 16 view .LVU3233 + 10238 02ba 0120 movs r0, #1 + 10239 02bc F6E7 b .L660 + 10240 .L688: +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10241 .loc 1 1145 16 view .LVU3234 + 10242 02be 0120 movs r0, #1 + 10243 02c0 F4E7 b .L660 + 10244 .L689: +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10245 .loc 1 1166 16 view .LVU3235 + 10246 02c2 0120 movs r0, #1 + 10247 02c4 F2E7 b .L660 + 10248 .LVL802: + 10249 .L690: +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10250 .loc 1 1166 16 view .LVU3236 + 10251 02c6 0020 movs r0, #0 + 10252 02c8 F0E7 b .L660 + 10253 .L705: + 10254 02ca 00BF .align 2 + 10255 .L704: + 10256 02cc 00000000 .word TIM_DMADelayPulseCplt + 10257 02d0 00000000 .word TIM_DMADelayPulseHalfCplt + 10258 02d4 00000000 .word TIM_DMAError + 10259 02d8 00000140 .word 1073807360 + 10260 02dc 00040140 .word 1073808384 + 10261 02e0 07000100 .word 65543 + 10262 .cfi_endproc + 10263 .LFE159: + 10265 .section .text.HAL_TIM_OC_Stop_DMA,"ax",%progbits + 10266 .align 1 + 10267 .global HAL_TIM_OC_Stop_DMA + 10268 .syntax unified + 10269 .thumb + 10270 .thumb_func + 10271 .fpu fpv5-d16 + 10273 HAL_TIM_OC_Stop_DMA: + ARM GAS /tmp/ccPLZXyC.s page 365 + + + 10274 .LVL803: + 10275 .LFB160: +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 10276 .loc 1 1220 1 is_stmt 1 view -0 + 10277 .cfi_startproc + 10278 @ args = 0, pretend = 0, frame = 0 + 10279 @ frame_needed = 0, uses_anonymous_args = 0 +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 10280 .loc 1 1220 1 is_stmt 0 view .LVU3238 + 10281 0000 38B5 push {r3, r4, r5, lr} + 10282 .LCFI91: + 10283 .cfi_def_cfa_offset 16 + 10284 .cfi_offset 3, -16 + 10285 .cfi_offset 4, -12 + 10286 .cfi_offset 5, -8 + 10287 .cfi_offset 14, -4 + 10288 0002 0446 mov r4, r0 + 10289 0004 0D46 mov r5, r1 +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10290 .loc 1 1221 3 is_stmt 1 view .LVU3239 + 10291 .LVL804: +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10292 .loc 1 1224 3 view .LVU3240 +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10293 .loc 1 1226 3 view .LVU3241 + 10294 0006 0C29 cmp r1, #12 + 10295 0008 7BD8 bhi .L721 + 10296 000a DFE801F0 tbb [pc, r1] + 10297 .L709: + 10298 000e 07 .byte (.L712-.L709)/2 + 10299 000f 7A .byte (.L721-.L709)/2 + 10300 0010 7A .byte (.L721-.L709)/2 + 10301 0011 7A .byte (.L721-.L709)/2 + 10302 0012 3E .byte (.L711-.L709)/2 + 10303 0013 7A .byte (.L721-.L709)/2 + 10304 0014 7A .byte (.L721-.L709)/2 + 10305 0015 7A .byte (.L721-.L709)/2 + 10306 0016 47 .byte (.L710-.L709)/2 + 10307 0017 7A .byte (.L721-.L709)/2 + 10308 0018 7A .byte (.L721-.L709)/2 + 10309 0019 7A .byte (.L721-.L709)/2 + 10310 001a 50 .byte (.L708-.L709)/2 + 10311 001b 00 .p2align 1 + 10312 .L712: +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + 10313 .loc 1 1231 7 view .LVU3242 + 10314 001c 0268 ldr r2, [r0] + 10315 001e D368 ldr r3, [r2, #12] + 10316 0020 23F40073 bic r3, r3, #512 + 10317 0024 D360 str r3, [r2, #12] +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10318 .loc 1 1232 7 view .LVU3243 +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10319 .loc 1 1232 13 is_stmt 0 view .LVU3244 + 10320 0026 406A ldr r0, [r0, #36] + 10321 .LVL805: +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + ARM GAS /tmp/ccPLZXyC.s page 366 + + + 10322 .loc 1 1232 13 view .LVU3245 + 10323 0028 FFF7FEFF bl HAL_DMA_Abort_IT + 10324 .LVL806: +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10325 .loc 1 1233 7 is_stmt 1 view .LVU3246 +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10326 .loc 1 1265 3 view .LVU3247 + 10327 .L713: +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10328 .loc 1 1268 5 view .LVU3248 + 10329 002c 0022 movs r2, #0 + 10330 002e 2946 mov r1, r5 + 10331 0030 2068 ldr r0, [r4] + 10332 0032 FFF7FEFF bl TIM_CCxChannelCmd + 10333 .LVL807: +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10334 .loc 1 1270 5 view .LVU3249 +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10335 .loc 1 1270 9 is_stmt 0 view .LVU3250 + 10336 0036 2368 ldr r3, [r4] +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10337 .loc 1 1270 8 view .LVU3251 + 10338 0038 3349 ldr r1, .L727 + 10339 003a 344A ldr r2, .L727+4 + 10340 003c 9342 cmp r3, r2 + 10341 003e 18BF it ne + 10342 0040 8B42 cmpne r3, r1 + 10343 0042 0DD1 bne .L714 +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10344 .loc 1 1273 7 is_stmt 1 view .LVU3252 +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10345 .loc 1 1273 7 view .LVU3253 + 10346 0044 196A ldr r1, [r3, #32] + 10347 0046 41F21112 movw r2, #4369 + 10348 004a 1142 tst r1, r2 + 10349 004c 08D1 bne .L714 +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10350 .loc 1 1273 7 discriminator 1 view .LVU3254 + 10351 004e 196A ldr r1, [r3, #32] + 10352 0050 40F24442 movw r2, #1092 + 10353 0054 1142 tst r1, r2 + 10354 0056 03D1 bne .L714 +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10355 .loc 1 1273 7 discriminator 3 view .LVU3255 + 10356 0058 5A6C ldr r2, [r3, #68] + 10357 005a 22F40042 bic r2, r2, #32768 + 10358 005e 5A64 str r2, [r3, #68] + 10359 .L714: +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10360 .loc 1 1273 7 discriminator 5 view .LVU3256 +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10361 .loc 1 1277 5 discriminator 5 view .LVU3257 +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10362 .loc 1 1277 5 discriminator 5 view .LVU3258 + 10363 0060 2368 ldr r3, [r4] + 10364 0062 196A ldr r1, [r3, #32] + 10365 0064 41F21112 movw r2, #4369 + ARM GAS /tmp/ccPLZXyC.s page 367 + + + 10366 0068 1142 tst r1, r2 + 10367 006a 08D1 bne .L715 +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10368 .loc 1 1277 5 discriminator 1 view .LVU3259 + 10369 006c 196A ldr r1, [r3, #32] + 10370 006e 40F24442 movw r2, #1092 + 10371 0072 1142 tst r1, r2 + 10372 0074 03D1 bne .L715 +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10373 .loc 1 1277 5 discriminator 3 view .LVU3260 + 10374 0076 1A68 ldr r2, [r3] + 10375 0078 22F00102 bic r2, r2, #1 + 10376 007c 1A60 str r2, [r3] + 10377 .L715: +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10378 .loc 1 1277 5 discriminator 5 view .LVU3261 +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10379 .loc 1 1280 5 discriminator 5 view .LVU3262 + 10380 007e FDB9 cbnz r5, .L716 +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10381 .loc 1 1280 5 is_stmt 0 discriminator 1 view .LVU3263 + 10382 0080 0123 movs r3, #1 + 10383 0082 84F83E30 strb r3, [r4, #62] + 10384 0086 0020 movs r0, #0 + 10385 0088 3CE0 b .L707 + 10386 .LVL808: + 10387 .L711: +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + 10388 .loc 1 1239 7 is_stmt 1 view .LVU3264 + 10389 008a 0268 ldr r2, [r0] + 10390 008c D368 ldr r3, [r2, #12] + 10391 008e 23F48063 bic r3, r3, #1024 + 10392 0092 D360 str r3, [r2, #12] +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10393 .loc 1 1240 7 view .LVU3265 +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10394 .loc 1 1240 13 is_stmt 0 view .LVU3266 + 10395 0094 806A ldr r0, [r0, #40] + 10396 .LVL809: +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10397 .loc 1 1240 13 view .LVU3267 + 10398 0096 FFF7FEFF bl HAL_DMA_Abort_IT + 10399 .LVL810: +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10400 .loc 1 1241 7 is_stmt 1 view .LVU3268 +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10401 .loc 1 1265 3 view .LVU3269 + 10402 009a C7E7 b .L713 + 10403 .LVL811: + 10404 .L710: +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + 10405 .loc 1 1247 7 view .LVU3270 + 10406 009c 0268 ldr r2, [r0] + 10407 009e D368 ldr r3, [r2, #12] + 10408 00a0 23F40063 bic r3, r3, #2048 + 10409 00a4 D360 str r3, [r2, #12] +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + ARM GAS /tmp/ccPLZXyC.s page 368 + + + 10410 .loc 1 1248 7 view .LVU3271 +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10411 .loc 1 1248 13 is_stmt 0 view .LVU3272 + 10412 00a6 C06A ldr r0, [r0, #44] + 10413 .LVL812: +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10414 .loc 1 1248 13 view .LVU3273 + 10415 00a8 FFF7FEFF bl HAL_DMA_Abort_IT + 10416 .LVL813: +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10417 .loc 1 1249 7 is_stmt 1 view .LVU3274 +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10418 .loc 1 1265 3 view .LVU3275 + 10419 00ac BEE7 b .L713 + 10420 .LVL814: + 10421 .L708: +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + 10422 .loc 1 1255 7 view .LVU3276 + 10423 00ae 0268 ldr r2, [r0] + 10424 00b0 D368 ldr r3, [r2, #12] + 10425 00b2 23F48053 bic r3, r3, #4096 + 10426 00b6 D360 str r3, [r2, #12] +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10427 .loc 1 1256 7 view .LVU3277 +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10428 .loc 1 1256 13 is_stmt 0 view .LVU3278 + 10429 00b8 006B ldr r0, [r0, #48] + 10430 .LVL815: +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 10431 .loc 1 1256 13 view .LVU3279 + 10432 00ba FFF7FEFF bl HAL_DMA_Abort_IT + 10433 .LVL816: +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10434 .loc 1 1257 7 is_stmt 1 view .LVU3280 +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10435 .loc 1 1265 3 view .LVU3281 + 10436 00be B5E7 b .L713 + 10437 .L716: +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10438 .loc 1 1280 5 is_stmt 0 discriminator 2 view .LVU3282 + 10439 00c0 042D cmp r5, #4 + 10440 00c2 0AD0 beq .L723 +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10441 .loc 1 1280 5 discriminator 4 view .LVU3283 + 10442 00c4 082D cmp r5, #8 + 10443 00c6 0DD0 beq .L724 +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10444 .loc 1 1280 5 discriminator 7 view .LVU3284 + 10445 00c8 0C2D cmp r5, #12 + 10446 00ca 10D0 beq .L725 +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10447 .loc 1 1280 5 discriminator 10 view .LVU3285 + 10448 00cc 102D cmp r5, #16 + 10449 00ce 13D0 beq .L726 +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10450 .loc 1 1280 5 discriminator 13 view .LVU3286 + 10451 00d0 0123 movs r3, #1 + ARM GAS /tmp/ccPLZXyC.s page 369 + + + 10452 00d2 84F84330 strb r3, [r4, #67] + 10453 00d6 0020 movs r0, #0 + 10454 00d8 14E0 b .L707 + 10455 .L723: +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10456 .loc 1 1280 5 discriminator 3 view .LVU3287 + 10457 00da 0123 movs r3, #1 + 10458 00dc 84F83F30 strb r3, [r4, #63] + 10459 00e0 0020 movs r0, #0 + 10460 00e2 0FE0 b .L707 + 10461 .L724: +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10462 .loc 1 1280 5 discriminator 6 view .LVU3288 + 10463 00e4 0123 movs r3, #1 + 10464 00e6 84F84030 strb r3, [r4, #64] + 10465 00ea 0020 movs r0, #0 + 10466 00ec 0AE0 b .L707 + 10467 .L725: +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10468 .loc 1 1280 5 discriminator 9 view .LVU3289 + 10469 00ee 0123 movs r3, #1 + 10470 00f0 84F84130 strb r3, [r4, #65] + 10471 00f4 0020 movs r0, #0 + 10472 00f6 05E0 b .L707 + 10473 .L726: +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10474 .loc 1 1280 5 discriminator 12 view .LVU3290 + 10475 00f8 0123 movs r3, #1 + 10476 00fa 84F84230 strb r3, [r4, #66] + 10477 00fe 0020 movs r0, #0 + 10478 0100 00E0 b .L707 + 10479 .LVL817: + 10480 .L721: +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10481 .loc 1 1226 3 view .LVU3291 + 10482 0102 0120 movs r0, #1 + 10483 .LVL818: + 10484 .L707: +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10485 .loc 1 1284 3 is_stmt 1 view .LVU3292 +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10486 .loc 1 1285 1 is_stmt 0 view .LVU3293 + 10487 0104 38BD pop {r3, r4, r5, pc} + 10488 .LVL819: + 10489 .L728: +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10490 .loc 1 1285 1 view .LVU3294 + 10491 0106 00BF .align 2 + 10492 .L727: + 10493 0108 00000140 .word 1073807360 + 10494 010c 00040140 .word 1073808384 + 10495 .cfi_endproc + 10496 .LFE160: + 10498 .section .text.HAL_TIM_PWM_Start,"ax",%progbits + 10499 .align 1 + 10500 .global HAL_TIM_PWM_Start + 10501 .syntax unified + ARM GAS /tmp/ccPLZXyC.s page 370 + + + 10502 .thumb + 10503 .thumb_func + 10504 .fpu fpv5-d16 + 10506 HAL_TIM_PWM_Start: + 10507 .LVL820: + 10508 .LFB165: +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 10509 .loc 1 1464 1 is_stmt 1 view -0 + 10510 .cfi_startproc + 10511 @ args = 0, pretend = 0, frame = 0 + 10512 @ frame_needed = 0, uses_anonymous_args = 0 +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 10513 .loc 1 1464 1 is_stmt 0 view .LVU3296 + 10514 0000 10B5 push {r4, lr} + 10515 .LCFI92: + 10516 .cfi_def_cfa_offset 8 + 10517 .cfi_offset 4, -8 + 10518 .cfi_offset 14, -4 + 10519 0002 0446 mov r4, r0 +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10520 .loc 1 1465 3 is_stmt 1 view .LVU3297 +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10521 .loc 1 1468 3 view .LVU3298 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10522 .loc 1 1471 3 view .LVU3299 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10523 .loc 1 1471 44 is_stmt 0 view .LVU3300 + 10524 0004 0846 mov r0, r1 + 10525 .LVL821: +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10526 .loc 1 1471 44 view .LVU3301 + 10527 0006 0029 cmp r1, #0 + 10528 0008 42D1 bne .L730 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10529 .loc 1 1471 7 discriminator 1 view .LVU3302 + 10530 000a 94F83E30 ldrb r3, [r4, #62] @ zero_extendqisi2 + 10531 000e DBB2 uxtb r3, r3 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10532 .loc 1 1471 44 discriminator 1 view .LVU3303 + 10533 0010 013B subs r3, r3, #1 + 10534 0012 18BF it ne + 10535 0014 0123 movne r3, #1 + 10536 .L731: +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10537 .loc 1 1471 6 discriminator 20 view .LVU3304 + 10538 0016 002B cmp r3, #0 + 10539 0018 40F08F80 bne .L746 +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10540 .loc 1 1477 3 is_stmt 1 view .LVU3305 + 10541 001c 0028 cmp r0, #0 + 10542 001e 62D1 bne .L737 +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10543 .loc 1 1477 3 is_stmt 0 discriminator 1 view .LVU3306 + 10544 0020 0223 movs r3, #2 + 10545 0022 84F83E30 strb r3, [r4, #62] + 10546 .L738: +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 371 + + + 10547 .loc 1 1480 3 is_stmt 1 view .LVU3307 + 10548 0026 0122 movs r2, #1 + 10549 0028 0146 mov r1, r0 + 10550 .LVL822: +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10551 .loc 1 1480 3 is_stmt 0 view .LVU3308 + 10552 002a 2068 ldr r0, [r4] + 10553 .LVL823: +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10554 .loc 1 1480 3 view .LVU3309 + 10555 002c FFF7FEFF bl TIM_CCxChannelCmd + 10556 .LVL824: +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10557 .loc 1 1482 3 is_stmt 1 view .LVU3310 +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10558 .loc 1 1482 7 is_stmt 0 view .LVU3311 + 10559 0030 2368 ldr r3, [r4] +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10560 .loc 1 1482 6 view .LVU3312 + 10561 0032 4449 ldr r1, .L757 + 10562 0034 444A ldr r2, .L757+4 + 10563 0036 9342 cmp r3, r2 + 10564 0038 18BF it ne + 10565 003a 8B42 cmpne r3, r1 + 10566 003c 03D1 bne .L743 +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10567 .loc 1 1485 5 is_stmt 1 view .LVU3313 + 10568 003e 5A6C ldr r2, [r3, #68] + 10569 0040 42F40042 orr r2, r2, #32768 + 10570 0044 5A64 str r2, [r3, #68] + 10571 .L743: +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10572 .loc 1 1489 3 view .LVU3314 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10573 .loc 1 1489 7 is_stmt 0 view .LVU3315 + 10574 0046 2368 ldr r3, [r4] +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10575 .loc 1 1489 6 view .LVU3316 + 10576 0048 3E4A ldr r2, .L757 + 10577 004a B3F1804F cmp r3, #1073741824 + 10578 004e 18BF it ne + 10579 0050 9342 cmpne r3, r2 + 10580 0052 64D0 beq .L744 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10581 .loc 1 1489 7 discriminator 1 view .LVU3317 + 10582 0054 A2F57C42 sub r2, r2, #64512 + 10583 0058 9342 cmp r3, r2 + 10584 005a 60D0 beq .L744 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10585 .loc 1 1489 7 discriminator 2 view .LVU3318 + 10586 005c 02F58062 add r2, r2, #1024 + 10587 0060 9342 cmp r3, r2 + 10588 0062 5CD0 beq .L744 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10589 .loc 1 1489 7 discriminator 3 view .LVU3319 + 10590 0064 02F58062 add r2, r2, #1024 + 10591 0068 9342 cmp r3, r2 + ARM GAS /tmp/ccPLZXyC.s page 372 + + + 10592 006a 58D0 beq .L744 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10593 .loc 1 1489 7 discriminator 4 view .LVU3320 + 10594 006c 02F57842 add r2, r2, #63488 + 10595 0070 9342 cmp r3, r2 + 10596 0072 54D0 beq .L744 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10597 .loc 1 1489 7 discriminator 5 view .LVU3321 + 10598 0074 02F57052 add r2, r2, #15360 + 10599 0078 9342 cmp r3, r2 + 10600 007a 50D0 beq .L744 +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10601 .loc 1 1489 7 discriminator 6 view .LVU3322 + 10602 007c A2F59432 sub r2, r2, #75776 + 10603 0080 9342 cmp r3, r2 + 10604 0082 4CD0 beq .L744 +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10605 .loc 1 1499 5 is_stmt 1 view .LVU3323 + 10606 0084 1A68 ldr r2, [r3] + 10607 0086 42F00102 orr r2, r2, #1 + 10608 008a 1A60 str r2, [r3] +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10609 .loc 1 1503 10 is_stmt 0 view .LVU3324 + 10610 008c 0020 movs r0, #0 + 10611 008e 55E0 b .L736 + 10612 .LVL825: + 10613 .L730: +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10614 .loc 1 1471 44 discriminator 2 view .LVU3325 + 10615 0090 0429 cmp r1, #4 + 10616 0092 0CD0 beq .L749 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10617 .loc 1 1471 44 discriminator 5 view .LVU3326 + 10618 0094 0829 cmp r1, #8 + 10619 0096 11D0 beq .L750 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10620 .loc 1 1471 44 discriminator 8 view .LVU3327 + 10621 0098 0C29 cmp r1, #12 + 10622 009a 16D0 beq .L751 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10623 .loc 1 1471 44 discriminator 11 view .LVU3328 + 10624 009c 1029 cmp r1, #16 + 10625 009e 1BD0 beq .L752 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10626 .loc 1 1471 7 discriminator 14 view .LVU3329 + 10627 00a0 94F84330 ldrb r3, [r4, #67] @ zero_extendqisi2 + 10628 00a4 DBB2 uxtb r3, r3 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10629 .loc 1 1471 44 discriminator 14 view .LVU3330 + 10630 00a6 013B subs r3, r3, #1 + 10631 00a8 18BF it ne + 10632 00aa 0123 movne r3, #1 + 10633 00ac B3E7 b .L731 + 10634 .L749: +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10635 .loc 1 1471 7 discriminator 4 view .LVU3331 + 10636 00ae 94F83F30 ldrb r3, [r4, #63] @ zero_extendqisi2 + ARM GAS /tmp/ccPLZXyC.s page 373 + + + 10637 00b2 DBB2 uxtb r3, r3 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10638 .loc 1 1471 44 discriminator 4 view .LVU3332 + 10639 00b4 013B subs r3, r3, #1 + 10640 00b6 18BF it ne + 10641 00b8 0123 movne r3, #1 + 10642 00ba ACE7 b .L731 + 10643 .L750: +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10644 .loc 1 1471 7 discriminator 7 view .LVU3333 + 10645 00bc 94F84030 ldrb r3, [r4, #64] @ zero_extendqisi2 + 10646 00c0 DBB2 uxtb r3, r3 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10647 .loc 1 1471 44 discriminator 7 view .LVU3334 + 10648 00c2 013B subs r3, r3, #1 + 10649 00c4 18BF it ne + 10650 00c6 0123 movne r3, #1 + 10651 00c8 A5E7 b .L731 + 10652 .L751: +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10653 .loc 1 1471 7 discriminator 10 view .LVU3335 + 10654 00ca 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 10655 00ce DBB2 uxtb r3, r3 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10656 .loc 1 1471 44 discriminator 10 view .LVU3336 + 10657 00d0 013B subs r3, r3, #1 + 10658 00d2 18BF it ne + 10659 00d4 0123 movne r3, #1 + 10660 00d6 9EE7 b .L731 + 10661 .L752: +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10662 .loc 1 1471 7 discriminator 13 view .LVU3337 + 10663 00d8 94F84230 ldrb r3, [r4, #66] @ zero_extendqisi2 + 10664 00dc DBB2 uxtb r3, r3 +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10665 .loc 1 1471 44 discriminator 13 view .LVU3338 + 10666 00de 013B subs r3, r3, #1 + 10667 00e0 18BF it ne + 10668 00e2 0123 movne r3, #1 + 10669 00e4 97E7 b .L731 + 10670 .L737: +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10671 .loc 1 1477 3 discriminator 2 view .LVU3339 + 10672 00e6 0428 cmp r0, #4 + 10673 00e8 09D0 beq .L753 +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10674 .loc 1 1477 3 discriminator 4 view .LVU3340 + 10675 00ea 0828 cmp r0, #8 + 10676 00ec 0BD0 beq .L754 +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10677 .loc 1 1477 3 discriminator 7 view .LVU3341 + 10678 00ee 0C28 cmp r0, #12 + 10679 00f0 0DD0 beq .L755 +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10680 .loc 1 1477 3 discriminator 10 view .LVU3342 + 10681 00f2 1028 cmp r0, #16 + 10682 00f4 0FD0 beq .L756 + ARM GAS /tmp/ccPLZXyC.s page 374 + + +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10683 .loc 1 1477 3 discriminator 13 view .LVU3343 + 10684 00f6 0223 movs r3, #2 + 10685 00f8 84F84330 strb r3, [r4, #67] + 10686 00fc 93E7 b .L738 + 10687 .L753: +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10688 .loc 1 1477 3 discriminator 3 view .LVU3344 + 10689 00fe 0223 movs r3, #2 + 10690 0100 84F83F30 strb r3, [r4, #63] + 10691 0104 8FE7 b .L738 + 10692 .L754: +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10693 .loc 1 1477 3 discriminator 6 view .LVU3345 + 10694 0106 0223 movs r3, #2 + 10695 0108 84F84030 strb r3, [r4, #64] + 10696 010c 8BE7 b .L738 + 10697 .L755: +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10698 .loc 1 1477 3 discriminator 9 view .LVU3346 + 10699 010e 0223 movs r3, #2 + 10700 0110 84F84130 strb r3, [r4, #65] + 10701 0114 87E7 b .L738 + 10702 .L756: +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10703 .loc 1 1477 3 discriminator 12 view .LVU3347 + 10704 0116 0223 movs r3, #2 + 10705 0118 84F84230 strb r3, [r4, #66] + 10706 011c 83E7 b .L738 + 10707 .LVL826: + 10708 .L744: +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 10709 .loc 1 1491 5 is_stmt 1 view .LVU3348 +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 10710 .loc 1 1491 29 is_stmt 0 view .LVU3349 + 10711 011e 9968 ldr r1, [r3, #8] +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 10712 .loc 1 1491 13 view .LVU3350 + 10713 0120 0A4A ldr r2, .L757+8 + 10714 0122 0A40 ands r2, r2, r1 + 10715 .LVL827: +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10716 .loc 1 1492 5 is_stmt 1 view .LVU3351 +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10717 .loc 1 1492 8 is_stmt 0 view .LVU3352 + 10718 0124 062A cmp r2, #6 + 10719 0126 18BF it ne + 10720 0128 B2F5803F cmpne r2, #65536 + 10721 012c 07D0 beq .L747 +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10722 .loc 1 1494 7 is_stmt 1 view .LVU3353 + 10723 012e 1A68 ldr r2, [r3] + 10724 .LVL828: +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10725 .loc 1 1494 7 is_stmt 0 view .LVU3354 + 10726 0130 42F00102 orr r2, r2, #1 + 10727 0134 1A60 str r2, [r3] + ARM GAS /tmp/ccPLZXyC.s page 375 + + +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10728 .loc 1 1503 10 view .LVU3355 + 10729 0136 0020 movs r0, #0 + 10730 0138 00E0 b .L736 + 10731 .LVL829: + 10732 .L746: +1473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10733 .loc 1 1473 12 view .LVU3356 + 10734 013a 0120 movs r0, #1 + 10735 .LVL830: + 10736 .L736: +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10737 .loc 1 1504 1 view .LVU3357 + 10738 013c 10BD pop {r4, pc} + 10739 .LVL831: + 10740 .L747: +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10741 .loc 1 1503 10 view .LVU3358 + 10742 013e 0020 movs r0, #0 + 10743 0140 FCE7 b .L736 + 10744 .L758: + 10745 0142 00BF .align 2 + 10746 .L757: + 10747 0144 00000140 .word 1073807360 + 10748 0148 00040140 .word 1073808384 + 10749 014c 07000100 .word 65543 + 10750 .cfi_endproc + 10751 .LFE165: + 10753 .section .text.HAL_TIM_PWM_Stop,"ax",%progbits + 10754 .align 1 + 10755 .global HAL_TIM_PWM_Stop + 10756 .syntax unified + 10757 .thumb + 10758 .thumb_func + 10759 .fpu fpv5-d16 + 10761 HAL_TIM_PWM_Stop: + 10762 .LVL832: + 10763 .LFB166: +1520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 10764 .loc 1 1520 1 is_stmt 1 view -0 + 10765 .cfi_startproc + 10766 @ args = 0, pretend = 0, frame = 0 + 10767 @ frame_needed = 0, uses_anonymous_args = 0 +1520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 10768 .loc 1 1520 1 is_stmt 0 view .LVU3360 + 10769 0000 38B5 push {r3, r4, r5, lr} + 10770 .LCFI93: + 10771 .cfi_def_cfa_offset 16 + 10772 .cfi_offset 3, -16 + 10773 .cfi_offset 4, -12 + 10774 .cfi_offset 5, -8 + 10775 .cfi_offset 14, -4 + 10776 0002 0446 mov r4, r0 + 10777 0004 0D46 mov r5, r1 +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10778 .loc 1 1522 3 is_stmt 1 view .LVU3361 +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 376 + + + 10779 .loc 1 1525 3 view .LVU3362 + 10780 0006 0022 movs r2, #0 + 10781 0008 0068 ldr r0, [r0] + 10782 .LVL833: +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10783 .loc 1 1525 3 is_stmt 0 view .LVU3363 + 10784 000a FFF7FEFF bl TIM_CCxChannelCmd + 10785 .LVL834: +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10786 .loc 1 1527 3 is_stmt 1 view .LVU3364 +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10787 .loc 1 1527 7 is_stmt 0 view .LVU3365 + 10788 000e 2368 ldr r3, [r4] +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10789 .loc 1 1527 6 view .LVU3366 + 10790 0010 2249 ldr r1, .L773 + 10791 0012 234A ldr r2, .L773+4 + 10792 0014 9342 cmp r3, r2 + 10793 0016 18BF it ne + 10794 0018 8B42 cmpne r3, r1 + 10795 001a 0DD1 bne .L760 +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10796 .loc 1 1530 5 is_stmt 1 view .LVU3367 +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10797 .loc 1 1530 5 view .LVU3368 + 10798 001c 196A ldr r1, [r3, #32] + 10799 001e 41F21112 movw r2, #4369 + 10800 0022 1142 tst r1, r2 + 10801 0024 08D1 bne .L760 +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10802 .loc 1 1530 5 discriminator 1 view .LVU3369 + 10803 0026 196A ldr r1, [r3, #32] + 10804 0028 40F24442 movw r2, #1092 + 10805 002c 1142 tst r1, r2 + 10806 002e 03D1 bne .L760 +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10807 .loc 1 1530 5 discriminator 3 view .LVU3370 + 10808 0030 5A6C ldr r2, [r3, #68] + 10809 0032 22F40042 bic r2, r2, #32768 + 10810 0036 5A64 str r2, [r3, #68] + 10811 .L760: +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10812 .loc 1 1530 5 discriminator 5 view .LVU3371 +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10813 .loc 1 1534 3 discriminator 5 view .LVU3372 +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10814 .loc 1 1534 3 discriminator 5 view .LVU3373 + 10815 0038 2368 ldr r3, [r4] + 10816 003a 196A ldr r1, [r3, #32] + 10817 003c 41F21112 movw r2, #4369 + 10818 0040 1142 tst r1, r2 + 10819 0042 08D1 bne .L761 +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10820 .loc 1 1534 3 discriminator 1 view .LVU3374 + 10821 0044 196A ldr r1, [r3, #32] + 10822 0046 40F24442 movw r2, #1092 + 10823 004a 1142 tst r1, r2 + ARM GAS /tmp/ccPLZXyC.s page 377 + + + 10824 004c 03D1 bne .L761 +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10825 .loc 1 1534 3 discriminator 3 view .LVU3375 + 10826 004e 1A68 ldr r2, [r3] + 10827 0050 22F00102 bic r2, r2, #1 + 10828 0054 1A60 str r2, [r3] + 10829 .L761: +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10830 .loc 1 1534 3 discriminator 5 view .LVU3376 +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10831 .loc 1 1537 3 discriminator 5 view .LVU3377 + 10832 0056 25B9 cbnz r5, .L762 +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10833 .loc 1 1537 3 is_stmt 0 discriminator 1 view .LVU3378 + 10834 0058 0123 movs r3, #1 + 10835 005a 84F83E30 strb r3, [r4, #62] + 10836 .L763: +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 10837 .loc 1 1540 3 is_stmt 1 view .LVU3379 +1541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10838 .loc 1 1541 1 is_stmt 0 view .LVU3380 + 10839 005e 0020 movs r0, #0 + 10840 0060 38BD pop {r3, r4, r5, pc} + 10841 .LVL835: + 10842 .L762: +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10843 .loc 1 1537 3 discriminator 2 view .LVU3381 + 10844 0062 042D cmp r5, #4 + 10845 0064 09D0 beq .L769 +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10846 .loc 1 1537 3 discriminator 4 view .LVU3382 + 10847 0066 082D cmp r5, #8 + 10848 0068 0BD0 beq .L770 +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10849 .loc 1 1537 3 discriminator 7 view .LVU3383 + 10850 006a 0C2D cmp r5, #12 + 10851 006c 0DD0 beq .L771 +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10852 .loc 1 1537 3 discriminator 10 view .LVU3384 + 10853 006e 102D cmp r5, #16 + 10854 0070 0FD0 beq .L772 +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10855 .loc 1 1537 3 discriminator 13 view .LVU3385 + 10856 0072 0123 movs r3, #1 + 10857 0074 84F84330 strb r3, [r4, #67] + 10858 0078 F1E7 b .L763 + 10859 .L769: +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10860 .loc 1 1537 3 discriminator 3 view .LVU3386 + 10861 007a 0123 movs r3, #1 + 10862 007c 84F83F30 strb r3, [r4, #63] + 10863 0080 EDE7 b .L763 + 10864 .L770: +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10865 .loc 1 1537 3 discriminator 6 view .LVU3387 + 10866 0082 0123 movs r3, #1 + 10867 0084 84F84030 strb r3, [r4, #64] + ARM GAS /tmp/ccPLZXyC.s page 378 + + + 10868 0088 E9E7 b .L763 + 10869 .L771: +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10870 .loc 1 1537 3 discriminator 9 view .LVU3388 + 10871 008a 0123 movs r3, #1 + 10872 008c 84F84130 strb r3, [r4, #65] + 10873 0090 E5E7 b .L763 + 10874 .L772: +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10875 .loc 1 1537 3 discriminator 12 view .LVU3389 + 10876 0092 0123 movs r3, #1 + 10877 0094 84F84230 strb r3, [r4, #66] + 10878 0098 E1E7 b .L763 + 10879 .L774: + 10880 009a 00BF .align 2 + 10881 .L773: + 10882 009c 00000140 .word 1073807360 + 10883 00a0 00040140 .word 1073808384 + 10884 .cfi_endproc + 10885 .LFE166: + 10887 .section .text.HAL_TIM_PWM_Start_IT,"ax",%progbits + 10888 .align 1 + 10889 .global HAL_TIM_PWM_Start_IT + 10890 .syntax unified + 10891 .thumb + 10892 .thumb_func + 10893 .fpu fpv5-d16 + 10895 HAL_TIM_PWM_Start_IT: + 10896 .LVL836: + 10897 .LFB167: +1555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 10898 .loc 1 1555 1 is_stmt 1 view -0 + 10899 .cfi_startproc + 10900 @ args = 0, pretend = 0, frame = 0 + 10901 @ frame_needed = 0, uses_anonymous_args = 0 +1555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 10902 .loc 1 1555 1 is_stmt 0 view .LVU3391 + 10903 0000 10B5 push {r4, lr} + 10904 .LCFI94: + 10905 .cfi_def_cfa_offset 8 + 10906 .cfi_offset 4, -8 + 10907 .cfi_offset 14, -4 + 10908 0002 0446 mov r4, r0 +1556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 10909 .loc 1 1556 3 is_stmt 1 view .LVU3392 + 10910 .LVL837: +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10911 .loc 1 1557 3 view .LVU3393 +1560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10912 .loc 1 1560 3 view .LVU3394 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10913 .loc 1 1563 3 view .LVU3395 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10914 .loc 1 1563 44 is_stmt 0 view .LVU3396 + 10915 0004 0846 mov r0, r1 + 10916 .LVL838: +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 379 + + + 10917 .loc 1 1563 44 view .LVU3397 + 10918 0006 C9B9 cbnz r1, .L776 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10919 .loc 1 1563 7 discriminator 1 view .LVU3398 + 10920 0008 94F83E30 ldrb r3, [r4, #62] @ zero_extendqisi2 + 10921 000c DBB2 uxtb r3, r3 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10922 .loc 1 1563 44 discriminator 1 view .LVU3399 + 10923 000e 013B subs r3, r3, #1 + 10924 0010 18BF it ne + 10925 0012 0123 movne r3, #1 + 10926 .L777: +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10927 .loc 1 1563 6 discriminator 20 view .LVU3400 + 10928 0014 002B cmp r3, #0 + 10929 0016 40F0B280 bne .L798 +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10930 .loc 1 1569 3 is_stmt 1 view .LVU3401 + 10931 001a 0028 cmp r0, #0 + 10932 001c 39D1 bne .L783 +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 10933 .loc 1 1569 3 is_stmt 0 discriminator 1 view .LVU3402 + 10934 001e 0223 movs r3, #2 + 10935 0020 84F83E30 strb r3, [r4, #62] + 10936 .L784: +1571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10937 .loc 1 1571 3 is_stmt 1 view .LVU3403 + 10938 0024 0C28 cmp r0, #12 + 10939 0026 00F2AC80 bhi .L799 + 10940 002a DFE800F0 tbb [pc, r0] + 10941 .L790: + 10942 002e 4E .byte (.L793-.L790)/2 + 10943 002f AA .byte (.L799-.L790)/2 + 10944 0030 AA .byte (.L799-.L790)/2 + 10945 0031 AA .byte (.L799-.L790)/2 + 10946 0032 88 .byte (.L792-.L790)/2 + 10947 0033 AA .byte (.L799-.L790)/2 + 10948 0034 AA .byte (.L799-.L790)/2 + 10949 0035 AA .byte (.L799-.L790)/2 + 10950 0036 8E .byte (.L791-.L790)/2 + 10951 0037 AA .byte (.L799-.L790)/2 + 10952 0038 AA .byte (.L799-.L790)/2 + 10953 0039 AA .byte (.L799-.L790)/2 + 10954 003a 94 .byte (.L789-.L790)/2 + 10955 003b 00 .p2align 1 + 10956 .L776: +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10957 .loc 1 1563 44 is_stmt 0 discriminator 2 view .LVU3404 + 10958 003c 0429 cmp r1, #4 + 10959 003e 0CD0 beq .L802 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10960 .loc 1 1563 44 discriminator 5 view .LVU3405 + 10961 0040 0829 cmp r1, #8 + 10962 0042 11D0 beq .L803 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10963 .loc 1 1563 44 discriminator 8 view .LVU3406 + 10964 0044 0C29 cmp r1, #12 + ARM GAS /tmp/ccPLZXyC.s page 380 + + + 10965 0046 16D0 beq .L804 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10966 .loc 1 1563 44 discriminator 11 view .LVU3407 + 10967 0048 1029 cmp r1, #16 + 10968 004a 1BD0 beq .L805 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10969 .loc 1 1563 7 discriminator 14 view .LVU3408 + 10970 004c 94F84330 ldrb r3, [r4, #67] @ zero_extendqisi2 + 10971 0050 DBB2 uxtb r3, r3 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10972 .loc 1 1563 44 discriminator 14 view .LVU3409 + 10973 0052 013B subs r3, r3, #1 + 10974 0054 18BF it ne + 10975 0056 0123 movne r3, #1 + 10976 0058 DCE7 b .L777 + 10977 .L802: +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10978 .loc 1 1563 7 discriminator 4 view .LVU3410 + 10979 005a 94F83F30 ldrb r3, [r4, #63] @ zero_extendqisi2 + 10980 005e DBB2 uxtb r3, r3 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10981 .loc 1 1563 44 discriminator 4 view .LVU3411 + 10982 0060 013B subs r3, r3, #1 + 10983 0062 18BF it ne + 10984 0064 0123 movne r3, #1 + 10985 0066 D5E7 b .L777 + 10986 .L803: +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10987 .loc 1 1563 7 discriminator 7 view .LVU3412 + 10988 0068 94F84030 ldrb r3, [r4, #64] @ zero_extendqisi2 + 10989 006c DBB2 uxtb r3, r3 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10990 .loc 1 1563 44 discriminator 7 view .LVU3413 + 10991 006e 013B subs r3, r3, #1 + 10992 0070 18BF it ne + 10993 0072 0123 movne r3, #1 + 10994 0074 CEE7 b .L777 + 10995 .L804: +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10996 .loc 1 1563 7 discriminator 10 view .LVU3414 + 10997 0076 94F84130 ldrb r3, [r4, #65] @ zero_extendqisi2 + 10998 007a DBB2 uxtb r3, r3 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 10999 .loc 1 1563 44 discriminator 10 view .LVU3415 + 11000 007c 013B subs r3, r3, #1 + 11001 007e 18BF it ne + 11002 0080 0123 movne r3, #1 + 11003 0082 C7E7 b .L777 + 11004 .L805: +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11005 .loc 1 1563 7 discriminator 13 view .LVU3416 + 11006 0084 94F84230 ldrb r3, [r4, #66] @ zero_extendqisi2 + 11007 0088 DBB2 uxtb r3, r3 +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11008 .loc 1 1563 44 discriminator 13 view .LVU3417 + 11009 008a 013B subs r3, r3, #1 + 11010 008c 18BF it ne + ARM GAS /tmp/ccPLZXyC.s page 381 + + + 11011 008e 0123 movne r3, #1 + 11012 0090 C0E7 b .L777 + 11013 .LVL839: + 11014 .L783: +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11015 .loc 1 1569 3 discriminator 2 view .LVU3418 + 11016 0092 0428 cmp r0, #4 + 11017 0094 09D0 beq .L806 +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11018 .loc 1 1569 3 discriminator 4 view .LVU3419 + 11019 0096 0828 cmp r0, #8 + 11020 0098 0BD0 beq .L807 +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11021 .loc 1 1569 3 discriminator 7 view .LVU3420 + 11022 009a 0C28 cmp r0, #12 + 11023 009c 0DD0 beq .L808 +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11024 .loc 1 1569 3 discriminator 10 view .LVU3421 + 11025 009e 1028 cmp r0, #16 + 11026 00a0 0FD0 beq .L809 +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11027 .loc 1 1569 3 discriminator 13 view .LVU3422 + 11028 00a2 0223 movs r3, #2 + 11029 00a4 84F84330 strb r3, [r4, #67] + 11030 00a8 BCE7 b .L784 + 11031 .L806: +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11032 .loc 1 1569 3 discriminator 3 view .LVU3423 + 11033 00aa 0223 movs r3, #2 + 11034 00ac 84F83F30 strb r3, [r4, #63] + 11035 00b0 B8E7 b .L784 + 11036 .L807: +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11037 .loc 1 1569 3 discriminator 6 view .LVU3424 + 11038 00b2 0223 movs r3, #2 + 11039 00b4 84F84030 strb r3, [r4, #64] + 11040 00b8 B4E7 b .L784 + 11041 .L808: +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11042 .loc 1 1569 3 discriminator 9 view .LVU3425 + 11043 00ba 0223 movs r3, #2 + 11044 00bc 84F84130 strb r3, [r4, #65] + 11045 00c0 B0E7 b .L784 + 11046 .L809: +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11047 .loc 1 1569 3 discriminator 12 view .LVU3426 + 11048 00c2 0223 movs r3, #2 + 11049 00c4 84F84230 strb r3, [r4, #66] + 11050 00c8 ACE7 b .L784 + 11051 .L793: +1576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11052 .loc 1 1576 7 is_stmt 1 view .LVU3427 + 11053 00ca 2268 ldr r2, [r4] + 11054 00cc D368 ldr r3, [r2, #12] + 11055 00ce 43F00203 orr r3, r3, #2 + 11056 00d2 D360 str r3, [r2, #12] +1577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 382 + + + 11057 .loc 1 1577 7 view .LVU3428 +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11058 .loc 1 1606 3 view .LVU3429 + 11059 .L794: +1609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11060 .loc 1 1609 5 view .LVU3430 + 11061 00d4 0122 movs r2, #1 + 11062 00d6 0146 mov r1, r0 + 11063 00d8 2068 ldr r0, [r4] + 11064 .LVL840: +1609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11065 .loc 1 1609 5 is_stmt 0 view .LVU3431 + 11066 00da FFF7FEFF bl TIM_CCxChannelCmd + 11067 .LVL841: +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11068 .loc 1 1611 5 is_stmt 1 view .LVU3432 +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11069 .loc 1 1611 9 is_stmt 0 view .LVU3433 + 11070 00de 2368 ldr r3, [r4] +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11071 .loc 1 1611 8 view .LVU3434 + 11072 00e0 2A49 ldr r1, .L810 + 11073 00e2 2B4A ldr r2, .L810+4 + 11074 00e4 9342 cmp r3, r2 + 11075 00e6 18BF it ne + 11076 00e8 8B42 cmpne r3, r1 + 11077 00ea 03D1 bne .L795 +1614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11078 .loc 1 1614 7 is_stmt 1 view .LVU3435 + 11079 00ec 5A6C ldr r2, [r3, #68] + 11080 00ee 42F40042 orr r2, r2, #32768 + 11081 00f2 5A64 str r2, [r3, #68] + 11082 .L795: +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11083 .loc 1 1618 5 view .LVU3436 +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11084 .loc 1 1618 9 is_stmt 0 view .LVU3437 + 11085 00f4 2368 ldr r3, [r4] +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11086 .loc 1 1618 8 view .LVU3438 + 11087 00f6 254A ldr r2, .L810 + 11088 00f8 B3F1804F cmp r3, #1073741824 + 11089 00fc 18BF it ne + 11090 00fe 9342 cmpne r3, r2 + 11091 0100 2FD0 beq .L796 +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11092 .loc 1 1618 9 discriminator 1 view .LVU3439 + 11093 0102 A2F57C42 sub r2, r2, #64512 + 11094 0106 9342 cmp r3, r2 + 11095 0108 2BD0 beq .L796 +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11096 .loc 1 1618 9 discriminator 2 view .LVU3440 + 11097 010a 02F58062 add r2, r2, #1024 + 11098 010e 9342 cmp r3, r2 + 11099 0110 27D0 beq .L796 +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11100 .loc 1 1618 9 discriminator 3 view .LVU3441 + ARM GAS /tmp/ccPLZXyC.s page 383 + + + 11101 0112 02F58062 add r2, r2, #1024 + 11102 0116 9342 cmp r3, r2 + 11103 0118 23D0 beq .L796 +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11104 .loc 1 1618 9 discriminator 4 view .LVU3442 + 11105 011a 02F57842 add r2, r2, #63488 + 11106 011e 9342 cmp r3, r2 + 11107 0120 1FD0 beq .L796 +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11108 .loc 1 1618 9 discriminator 5 view .LVU3443 + 11109 0122 02F57052 add r2, r2, #15360 + 11110 0126 9342 cmp r3, r2 + 11111 0128 1BD0 beq .L796 +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11112 .loc 1 1618 9 discriminator 6 view .LVU3444 + 11113 012a A2F59432 sub r2, r2, #75776 + 11114 012e 9342 cmp r3, r2 + 11115 0130 17D0 beq .L796 +1628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11116 .loc 1 1628 7 is_stmt 1 view .LVU3445 + 11117 0132 1A68 ldr r2, [r3] + 11118 0134 42F00102 orr r2, r2, #1 + 11119 0138 1A60 str r2, [r3] + 11120 013a 0020 movs r0, #0 + 11121 013c 22E0 b .L782 + 11122 .LVL842: + 11123 .L792: +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11124 .loc 1 1583 7 view .LVU3446 + 11125 013e 2268 ldr r2, [r4] + 11126 0140 D368 ldr r3, [r2, #12] + 11127 0142 43F00403 orr r3, r3, #4 + 11128 0146 D360 str r3, [r2, #12] +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11129 .loc 1 1584 7 view .LVU3447 +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11130 .loc 1 1606 3 view .LVU3448 + 11131 0148 C4E7 b .L794 + 11132 .L791: +1590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11133 .loc 1 1590 7 view .LVU3449 + 11134 014a 2268 ldr r2, [r4] + 11135 014c D368 ldr r3, [r2, #12] + 11136 014e 43F00803 orr r3, r3, #8 + 11137 0152 D360 str r3, [r2, #12] +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11138 .loc 1 1591 7 view .LVU3450 +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11139 .loc 1 1606 3 view .LVU3451 + 11140 0154 BEE7 b .L794 + 11141 .L789: +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11142 .loc 1 1597 7 view .LVU3452 + 11143 0156 2268 ldr r2, [r4] + 11144 0158 D368 ldr r3, [r2, #12] + 11145 015a 43F01003 orr r3, r3, #16 + 11146 015e D360 str r3, [r2, #12] + ARM GAS /tmp/ccPLZXyC.s page 384 + + +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11147 .loc 1 1598 7 view .LVU3453 +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11148 .loc 1 1606 3 view .LVU3454 + 11149 0160 B8E7 b .L794 + 11150 .LVL843: + 11151 .L796: +1620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 11152 .loc 1 1620 7 view .LVU3455 +1620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 11153 .loc 1 1620 31 is_stmt 0 view .LVU3456 + 11154 0162 9968 ldr r1, [r3, #8] +1620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 11155 .loc 1 1620 15 view .LVU3457 + 11156 0164 0B4A ldr r2, .L810+8 + 11157 0166 0A40 ands r2, r2, r1 + 11158 .LVL844: +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11159 .loc 1 1621 7 is_stmt 1 view .LVU3458 +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11160 .loc 1 1621 10 is_stmt 0 view .LVU3459 + 11161 0168 062A cmp r2, #6 + 11162 016a 18BF it ne + 11163 016c B2F5803F cmpne r2, #65536 + 11164 0170 09D0 beq .L800 +1623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11165 .loc 1 1623 9 is_stmt 1 view .LVU3460 + 11166 0172 1A68 ldr r2, [r3] + 11167 .LVL845: +1623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11168 .loc 1 1623 9 is_stmt 0 view .LVU3461 + 11169 0174 42F00102 orr r2, r2, #1 + 11170 0178 1A60 str r2, [r3] + 11171 017a 0020 movs r0, #0 + 11172 017c 02E0 b .L782 + 11173 .LVL846: + 11174 .L798: +1565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11175 .loc 1 1565 12 view .LVU3462 + 11176 017e 0120 movs r0, #1 + 11177 .LVL847: +1565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11178 .loc 1 1565 12 view .LVU3463 + 11179 0180 00E0 b .L782 + 11180 .LVL848: + 11181 .L799: +1571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11182 .loc 1 1571 3 view .LVU3464 + 11183 0182 0120 movs r0, #1 + 11184 .LVL849: + 11185 .L782: +1634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11186 .loc 1 1634 1 view .LVU3465 + 11187 0184 10BD pop {r4, pc} + 11188 .LVL850: + 11189 .L800: +1634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 385 + + + 11190 .loc 1 1634 1 view .LVU3466 + 11191 0186 0020 movs r0, #0 + 11192 0188 FCE7 b .L782 + 11193 .L811: + 11194 018a 00BF .align 2 + 11195 .L810: + 11196 018c 00000140 .word 1073807360 + 11197 0190 00040140 .word 1073808384 + 11198 0194 07000100 .word 65543 + 11199 .cfi_endproc + 11200 .LFE167: + 11202 .section .text.HAL_TIM_PWM_Stop_IT,"ax",%progbits + 11203 .align 1 + 11204 .global HAL_TIM_PWM_Stop_IT + 11205 .syntax unified + 11206 .thumb + 11207 .thumb_func + 11208 .fpu fpv5-d16 + 11210 HAL_TIM_PWM_Stop_IT: + 11211 .LVL851: + 11212 .LFB168: +1648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 11213 .loc 1 1648 1 is_stmt 1 view -0 + 11214 .cfi_startproc + 11215 @ args = 0, pretend = 0, frame = 0 + 11216 @ frame_needed = 0, uses_anonymous_args = 0 +1648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 11217 .loc 1 1648 1 is_stmt 0 view .LVU3468 + 11218 0000 38B5 push {r3, r4, r5, lr} + 11219 .LCFI95: + 11220 .cfi_def_cfa_offset 16 + 11221 .cfi_offset 3, -16 + 11222 .cfi_offset 4, -12 + 11223 .cfi_offset 5, -8 + 11224 .cfi_offset 14, -4 + 11225 0002 0546 mov r5, r0 + 11226 0004 0C46 mov r4, r1 +1649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11227 .loc 1 1649 3 is_stmt 1 view .LVU3469 + 11228 .LVL852: +1652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11229 .loc 1 1652 3 view .LVU3470 +1654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11230 .loc 1 1654 3 view .LVU3471 + 11231 0006 0C29 cmp r1, #12 + 11232 0008 6FD8 bhi .L827 + 11233 000a DFE801F0 tbb [pc, r1] + 11234 .L815: + 11235 000e 07 .byte (.L818-.L815)/2 + 11236 000f 6E .byte (.L827-.L815)/2 + 11237 0010 6E .byte (.L827-.L815)/2 + 11238 0011 6E .byte (.L827-.L815)/2 + 11239 0012 3B .byte (.L817-.L815)/2 + 11240 0013 6E .byte (.L827-.L815)/2 + 11241 0014 6E .byte (.L827-.L815)/2 + 11242 0015 6E .byte (.L827-.L815)/2 + 11243 0016 41 .byte (.L816-.L815)/2 + ARM GAS /tmp/ccPLZXyC.s page 386 + + + 11244 0017 6E .byte (.L827-.L815)/2 + 11245 0018 6E .byte (.L827-.L815)/2 + 11246 0019 6E .byte (.L827-.L815)/2 + 11247 001a 47 .byte (.L814-.L815)/2 + 11248 001b 00 .p2align 1 + 11249 .L818: +1659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11250 .loc 1 1659 7 view .LVU3472 + 11251 001c 0268 ldr r2, [r0] + 11252 001e D368 ldr r3, [r2, #12] + 11253 0020 23F00203 bic r3, r3, #2 + 11254 0024 D360 str r3, [r2, #12] +1660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11255 .loc 1 1660 7 view .LVU3473 +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11256 .loc 1 1689 3 view .LVU3474 + 11257 .L819: +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11258 .loc 1 1692 5 view .LVU3475 + 11259 0026 0022 movs r2, #0 + 11260 0028 2146 mov r1, r4 + 11261 .LVL853: +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11262 .loc 1 1692 5 is_stmt 0 view .LVU3476 + 11263 002a 2868 ldr r0, [r5] + 11264 .LVL854: +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11265 .loc 1 1692 5 view .LVU3477 + 11266 002c FFF7FEFF bl TIM_CCxChannelCmd + 11267 .LVL855: +1694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11268 .loc 1 1694 5 is_stmt 1 view .LVU3478 +1694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11269 .loc 1 1694 9 is_stmt 0 view .LVU3479 + 11270 0030 2B68 ldr r3, [r5] +1694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11271 .loc 1 1694 8 view .LVU3480 + 11272 0032 2F49 ldr r1, .L833 + 11273 0034 2F4A ldr r2, .L833+4 + 11274 0036 9342 cmp r3, r2 + 11275 0038 18BF it ne + 11276 003a 8B42 cmpne r3, r1 + 11277 003c 0DD1 bne .L820 +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11278 .loc 1 1697 7 is_stmt 1 view .LVU3481 +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11279 .loc 1 1697 7 view .LVU3482 + 11280 003e 196A ldr r1, [r3, #32] + 11281 0040 41F21112 movw r2, #4369 + 11282 0044 1142 tst r1, r2 + 11283 0046 08D1 bne .L820 +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11284 .loc 1 1697 7 discriminator 1 view .LVU3483 + 11285 0048 196A ldr r1, [r3, #32] + 11286 004a 40F24442 movw r2, #1092 + 11287 004e 1142 tst r1, r2 + 11288 0050 03D1 bne .L820 + ARM GAS /tmp/ccPLZXyC.s page 387 + + +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11289 .loc 1 1697 7 discriminator 3 view .LVU3484 + 11290 0052 5A6C ldr r2, [r3, #68] + 11291 0054 22F40042 bic r2, r2, #32768 + 11292 0058 5A64 str r2, [r3, #68] + 11293 .L820: +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11294 .loc 1 1697 7 discriminator 5 view .LVU3485 +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11295 .loc 1 1701 5 discriminator 5 view .LVU3486 +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11296 .loc 1 1701 5 discriminator 5 view .LVU3487 + 11297 005a 2B68 ldr r3, [r5] + 11298 005c 196A ldr r1, [r3, #32] + 11299 005e 41F21112 movw r2, #4369 + 11300 0062 1142 tst r1, r2 + 11301 0064 08D1 bne .L821 +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11302 .loc 1 1701 5 discriminator 1 view .LVU3488 + 11303 0066 196A ldr r1, [r3, #32] + 11304 0068 40F24442 movw r2, #1092 + 11305 006c 1142 tst r1, r2 + 11306 006e 03D1 bne .L821 +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11307 .loc 1 1701 5 discriminator 3 view .LVU3489 + 11308 0070 1A68 ldr r2, [r3] + 11309 0072 22F00102 bic r2, r2, #1 + 11310 0076 1A60 str r2, [r3] + 11311 .L821: +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11312 .loc 1 1701 5 discriminator 5 view .LVU3490 +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11313 .loc 1 1704 5 discriminator 5 view .LVU3491 + 11314 0078 B4B9 cbnz r4, .L822 +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11315 .loc 1 1704 5 is_stmt 0 discriminator 1 view .LVU3492 + 11316 007a 0123 movs r3, #1 + 11317 007c 85F83E30 strb r3, [r5, #62] + 11318 0080 0020 movs r0, #0 + 11319 0082 33E0 b .L813 + 11320 .LVL856: + 11321 .L817: +1666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11322 .loc 1 1666 7 is_stmt 1 view .LVU3493 + 11323 0084 0268 ldr r2, [r0] + 11324 0086 D368 ldr r3, [r2, #12] + 11325 0088 23F00403 bic r3, r3, #4 + 11326 008c D360 str r3, [r2, #12] +1667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11327 .loc 1 1667 7 view .LVU3494 +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11328 .loc 1 1689 3 view .LVU3495 + 11329 008e CAE7 b .L819 + 11330 .L816: +1673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11331 .loc 1 1673 7 view .LVU3496 + 11332 0090 0268 ldr r2, [r0] + ARM GAS /tmp/ccPLZXyC.s page 388 + + + 11333 0092 D368 ldr r3, [r2, #12] + 11334 0094 23F00803 bic r3, r3, #8 + 11335 0098 D360 str r3, [r2, #12] +1674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11336 .loc 1 1674 7 view .LVU3497 +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11337 .loc 1 1689 3 view .LVU3498 + 11338 009a C4E7 b .L819 + 11339 .L814: +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11340 .loc 1 1680 7 view .LVU3499 + 11341 009c 0268 ldr r2, [r0] + 11342 009e D368 ldr r3, [r2, #12] + 11343 00a0 23F01003 bic r3, r3, #16 + 11344 00a4 D360 str r3, [r2, #12] +1681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11345 .loc 1 1681 7 view .LVU3500 +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11346 .loc 1 1689 3 view .LVU3501 + 11347 00a6 BEE7 b .L819 + 11348 .LVL857: + 11349 .L822: +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11350 .loc 1 1704 5 is_stmt 0 discriminator 2 view .LVU3502 + 11351 00a8 042C cmp r4, #4 + 11352 00aa 0AD0 beq .L829 +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11353 .loc 1 1704 5 discriminator 4 view .LVU3503 + 11354 00ac 082C cmp r4, #8 + 11355 00ae 0DD0 beq .L830 +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11356 .loc 1 1704 5 discriminator 7 view .LVU3504 + 11357 00b0 0C2C cmp r4, #12 + 11358 00b2 10D0 beq .L831 +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11359 .loc 1 1704 5 discriminator 10 view .LVU3505 + 11360 00b4 102C cmp r4, #16 + 11361 00b6 13D0 beq .L832 +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11362 .loc 1 1704 5 discriminator 13 view .LVU3506 + 11363 00b8 0123 movs r3, #1 + 11364 00ba 85F84330 strb r3, [r5, #67] + 11365 00be 0020 movs r0, #0 + 11366 00c0 14E0 b .L813 + 11367 .L829: +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11368 .loc 1 1704 5 discriminator 3 view .LVU3507 + 11369 00c2 0123 movs r3, #1 + 11370 00c4 85F83F30 strb r3, [r5, #63] + 11371 00c8 0020 movs r0, #0 + 11372 00ca 0FE0 b .L813 + 11373 .L830: +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11374 .loc 1 1704 5 discriminator 6 view .LVU3508 + 11375 00cc 0123 movs r3, #1 + 11376 00ce 85F84030 strb r3, [r5, #64] + 11377 00d2 0020 movs r0, #0 + ARM GAS /tmp/ccPLZXyC.s page 389 + + + 11378 00d4 0AE0 b .L813 + 11379 .L831: +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11380 .loc 1 1704 5 discriminator 9 view .LVU3509 + 11381 00d6 0123 movs r3, #1 + 11382 00d8 85F84130 strb r3, [r5, #65] + 11383 00dc 0020 movs r0, #0 + 11384 00de 05E0 b .L813 + 11385 .L832: +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11386 .loc 1 1704 5 discriminator 12 view .LVU3510 + 11387 00e0 0123 movs r3, #1 + 11388 00e2 85F84230 strb r3, [r5, #66] + 11389 00e6 0020 movs r0, #0 + 11390 00e8 00E0 b .L813 + 11391 .LVL858: + 11392 .L827: +1654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11393 .loc 1 1654 3 view .LVU3511 + 11394 00ea 0120 movs r0, #1 + 11395 .LVL859: + 11396 .L813: +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11397 .loc 1 1708 3 is_stmt 1 view .LVU3512 +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11398 .loc 1 1709 1 is_stmt 0 view .LVU3513 + 11399 00ec 38BD pop {r3, r4, r5, pc} + 11400 .LVL860: + 11401 .L834: +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11402 .loc 1 1709 1 view .LVU3514 + 11403 00ee 00BF .align 2 + 11404 .L833: + 11405 00f0 00000140 .word 1073807360 + 11406 00f4 00040140 .word 1073808384 + 11407 .cfi_endproc + 11408 .LFE168: + 11410 .section .text.HAL_TIM_PWM_Start_DMA,"ax",%progbits + 11411 .align 1 + 11412 .global HAL_TIM_PWM_Start_DMA + 11413 .syntax unified + 11414 .thumb + 11415 .thumb_func + 11416 .fpu fpv5-d16 + 11418 HAL_TIM_PWM_Start_DMA: + 11419 .LVL861: + 11420 .LFB169: +1726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 11421 .loc 1 1726 1 is_stmt 1 view -0 + 11422 .cfi_startproc + 11423 @ args = 0, pretend = 0, frame = 0 + 11424 @ frame_needed = 0, uses_anonymous_args = 0 +1726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 11425 .loc 1 1726 1 is_stmt 0 view .LVU3516 + 11426 0000 38B5 push {r3, r4, r5, lr} + 11427 .LCFI96: + 11428 .cfi_def_cfa_offset 16 + ARM GAS /tmp/ccPLZXyC.s page 390 + + + 11429 .cfi_offset 3, -16 + 11430 .cfi_offset 4, -12 + 11431 .cfi_offset 5, -8 + 11432 .cfi_offset 14, -4 + 11433 0002 0446 mov r4, r0 + 11434 0004 9446 mov ip, r2 +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 11435 .loc 1 1727 3 is_stmt 1 view .LVU3517 + 11436 .LVL862: +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11437 .loc 1 1728 3 view .LVU3518 +1731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11438 .loc 1 1731 3 view .LVU3519 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11439 .loc 1 1734 3 view .LVU3520 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11440 .loc 1 1734 44 is_stmt 0 view .LVU3521 + 11441 0006 0D46 mov r5, r1 + 11442 0008 0029 cmp r1, #0 + 11443 000a 32D1 bne .L836 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11444 .loc 1 1734 7 discriminator 1 view .LVU3522 + 11445 000c 90F83E00 ldrb r0, [r0, #62] @ zero_extendqisi2 + 11446 .LVL863: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11447 .loc 1 1734 7 discriminator 1 view .LVU3523 + 11448 0010 C0B2 uxtb r0, r0 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11449 .loc 1 1734 44 discriminator 1 view .LVU3524 + 11450 0012 0228 cmp r0, #2 + 11451 0014 14BF ite ne + 11452 0016 0020 movne r0, #0 + 11453 0018 0120 moveq r0, #1 + 11454 .L837: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11455 .loc 1 1734 6 discriminator 20 view .LVU3525 + 11456 001a 0028 cmp r0, #0 + 11457 001c 40F04381 bne .L864 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11458 .loc 1 1738 8 is_stmt 1 view .LVU3526 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11459 .loc 1 1738 49 is_stmt 0 view .LVU3527 + 11460 0020 002D cmp r5, #0 + 11461 0022 56D1 bne .L843 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11462 .loc 1 1738 12 discriminator 1 view .LVU3528 + 11463 0024 94F83E20 ldrb r2, [r4, #62] @ zero_extendqisi2 + 11464 .LVL864: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11465 .loc 1 1738 12 discriminator 1 view .LVU3529 + 11466 0028 D2B2 uxtb r2, r2 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11467 .loc 1 1738 49 discriminator 1 view .LVU3530 + 11468 002a 012A cmp r2, #1 + 11469 002c 14BF ite ne + 11470 002e 0022 movne r2, #0 + 11471 0030 0122 moveq r2, #1 + ARM GAS /tmp/ccPLZXyC.s page 391 + + + 11472 .L844: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11473 .loc 1 1738 11 discriminator 20 view .LVU3531 + 11474 0032 002A cmp r2, #0 + 11475 0034 00F03981 beq .L865 +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11476 .loc 1 1740 5 is_stmt 1 view .LVU3532 +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11477 .loc 1 1740 8 is_stmt 0 view .LVU3533 + 11478 0038 002B cmp r3, #0 + 11479 003a 18BF it ne + 11480 003c BCF1000F cmpne ip, #0 + 11481 0040 00F03581 beq .L866 +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11482 .loc 1 1746 7 is_stmt 1 view .LVU3534 + 11483 0044 002D cmp r5, #0 + 11484 0046 74D1 bne .L849 +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11485 .loc 1 1746 7 is_stmt 0 discriminator 1 view .LVU3535 + 11486 0048 0222 movs r2, #2 + 11487 004a 84F83E20 strb r2, [r4, #62] + 11488 .L850: +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11489 .loc 1 1754 3 is_stmt 1 view .LVU3536 + 11490 004e 0C2D cmp r5, #12 + 11491 0050 00F22F81 bhi .L867 + 11492 0054 DFE815F0 tbh [pc, r5, lsl #1] + 11493 .L856: + 11494 0058 8900 .2byte (.L859-.L856)/2 + 11495 005a 2D01 .2byte (.L867-.L856)/2 + 11496 005c 2D01 .2byte (.L867-.L856)/2 + 11497 005e 2D01 .2byte (.L867-.L856)/2 + 11498 0060 D500 .2byte (.L858-.L856)/2 + 11499 0062 2D01 .2byte (.L867-.L856)/2 + 11500 0064 2D01 .2byte (.L867-.L856)/2 + 11501 0066 2D01 .2byte (.L867-.L856)/2 + 11502 0068 EC00 .2byte (.L857-.L856)/2 + 11503 006a 2D01 .2byte (.L867-.L856)/2 + 11504 006c 2D01 .2byte (.L867-.L856)/2 + 11505 006e 2D01 .2byte (.L867-.L856)/2 + 11506 0070 0301 .2byte (.L855-.L856)/2 + 11507 .LVL865: + 11508 .p2align 1 + 11509 .L836: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11510 .loc 1 1734 44 is_stmt 0 discriminator 2 view .LVU3537 + 11511 0072 0429 cmp r1, #4 + 11512 0074 0DD0 beq .L874 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11513 .loc 1 1734 44 discriminator 5 view .LVU3538 + 11514 0076 0829 cmp r1, #8 + 11515 0078 13D0 beq .L875 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11516 .loc 1 1734 44 discriminator 8 view .LVU3539 + 11517 007a 0C29 cmp r1, #12 + 11518 007c 19D0 beq .L876 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 392 + + + 11519 .loc 1 1734 44 discriminator 11 view .LVU3540 + 11520 007e 1029 cmp r1, #16 + 11521 0080 1FD0 beq .L877 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11522 .loc 1 1734 7 discriminator 14 view .LVU3541 + 11523 0082 90F84300 ldrb r0, [r0, #67] @ zero_extendqisi2 + 11524 .LVL866: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11525 .loc 1 1734 7 discriminator 14 view .LVU3542 + 11526 0086 C0B2 uxtb r0, r0 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11527 .loc 1 1734 44 discriminator 14 view .LVU3543 + 11528 0088 0228 cmp r0, #2 + 11529 008a 14BF ite ne + 11530 008c 0020 movne r0, #0 + 11531 008e 0120 moveq r0, #1 + 11532 0090 C3E7 b .L837 + 11533 .LVL867: + 11534 .L874: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11535 .loc 1 1734 7 discriminator 4 view .LVU3544 + 11536 0092 90F83F00 ldrb r0, [r0, #63] @ zero_extendqisi2 + 11537 .LVL868: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11538 .loc 1 1734 7 discriminator 4 view .LVU3545 + 11539 0096 C0B2 uxtb r0, r0 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11540 .loc 1 1734 44 discriminator 4 view .LVU3546 + 11541 0098 0228 cmp r0, #2 + 11542 009a 14BF ite ne + 11543 009c 0020 movne r0, #0 + 11544 009e 0120 moveq r0, #1 + 11545 00a0 BBE7 b .L837 + 11546 .LVL869: + 11547 .L875: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11548 .loc 1 1734 7 discriminator 7 view .LVU3547 + 11549 00a2 90F84000 ldrb r0, [r0, #64] @ zero_extendqisi2 + 11550 .LVL870: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11551 .loc 1 1734 7 discriminator 7 view .LVU3548 + 11552 00a6 C0B2 uxtb r0, r0 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11553 .loc 1 1734 44 discriminator 7 view .LVU3549 + 11554 00a8 0228 cmp r0, #2 + 11555 00aa 14BF ite ne + 11556 00ac 0020 movne r0, #0 + 11557 00ae 0120 moveq r0, #1 + 11558 00b0 B3E7 b .L837 + 11559 .LVL871: + 11560 .L876: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11561 .loc 1 1734 7 discriminator 10 view .LVU3550 + 11562 00b2 90F84100 ldrb r0, [r0, #65] @ zero_extendqisi2 + 11563 .LVL872: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11564 .loc 1 1734 7 discriminator 10 view .LVU3551 + ARM GAS /tmp/ccPLZXyC.s page 393 + + + 11565 00b6 C0B2 uxtb r0, r0 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11566 .loc 1 1734 44 discriminator 10 view .LVU3552 + 11567 00b8 0228 cmp r0, #2 + 11568 00ba 14BF ite ne + 11569 00bc 0020 movne r0, #0 + 11570 00be 0120 moveq r0, #1 + 11571 00c0 ABE7 b .L837 + 11572 .LVL873: + 11573 .L877: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11574 .loc 1 1734 7 discriminator 13 view .LVU3553 + 11575 00c2 90F84200 ldrb r0, [r0, #66] @ zero_extendqisi2 + 11576 .LVL874: +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11577 .loc 1 1734 7 discriminator 13 view .LVU3554 + 11578 00c6 C0B2 uxtb r0, r0 +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11579 .loc 1 1734 44 discriminator 13 view .LVU3555 + 11580 00c8 0228 cmp r0, #2 + 11581 00ca 14BF ite ne + 11582 00cc 0020 movne r0, #0 + 11583 00ce 0120 moveq r0, #1 + 11584 00d0 A3E7 b .L837 + 11585 .L843: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11586 .loc 1 1738 49 discriminator 2 view .LVU3556 + 11587 00d2 042D cmp r5, #4 + 11588 00d4 0DD0 beq .L878 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11589 .loc 1 1738 49 discriminator 5 view .LVU3557 + 11590 00d6 082D cmp r5, #8 + 11591 00d8 13D0 beq .L879 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11592 .loc 1 1738 49 discriminator 8 view .LVU3558 + 11593 00da 0C2D cmp r5, #12 + 11594 00dc 19D0 beq .L880 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11595 .loc 1 1738 49 discriminator 11 view .LVU3559 + 11596 00de 102D cmp r5, #16 + 11597 00e0 1FD0 beq .L881 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11598 .loc 1 1738 12 discriminator 14 view .LVU3560 + 11599 00e2 94F84320 ldrb r2, [r4, #67] @ zero_extendqisi2 + 11600 .LVL875: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11601 .loc 1 1738 12 discriminator 14 view .LVU3561 + 11602 00e6 D2B2 uxtb r2, r2 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11603 .loc 1 1738 49 discriminator 14 view .LVU3562 + 11604 00e8 012A cmp r2, #1 + 11605 00ea 14BF ite ne + 11606 00ec 0022 movne r2, #0 + 11607 00ee 0122 moveq r2, #1 + 11608 00f0 9FE7 b .L844 + 11609 .LVL876: + 11610 .L878: + ARM GAS /tmp/ccPLZXyC.s page 394 + + +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11611 .loc 1 1738 12 discriminator 4 view .LVU3563 + 11612 00f2 94F83F20 ldrb r2, [r4, #63] @ zero_extendqisi2 + 11613 .LVL877: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11614 .loc 1 1738 12 discriminator 4 view .LVU3564 + 11615 00f6 D2B2 uxtb r2, r2 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11616 .loc 1 1738 49 discriminator 4 view .LVU3565 + 11617 00f8 012A cmp r2, #1 + 11618 00fa 14BF ite ne + 11619 00fc 0022 movne r2, #0 + 11620 00fe 0122 moveq r2, #1 + 11621 0100 97E7 b .L844 + 11622 .LVL878: + 11623 .L879: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11624 .loc 1 1738 12 discriminator 7 view .LVU3566 + 11625 0102 94F84020 ldrb r2, [r4, #64] @ zero_extendqisi2 + 11626 .LVL879: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11627 .loc 1 1738 12 discriminator 7 view .LVU3567 + 11628 0106 D2B2 uxtb r2, r2 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11629 .loc 1 1738 49 discriminator 7 view .LVU3568 + 11630 0108 012A cmp r2, #1 + 11631 010a 14BF ite ne + 11632 010c 0022 movne r2, #0 + 11633 010e 0122 moveq r2, #1 + 11634 0110 8FE7 b .L844 + 11635 .LVL880: + 11636 .L880: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11637 .loc 1 1738 12 discriminator 10 view .LVU3569 + 11638 0112 94F84120 ldrb r2, [r4, #65] @ zero_extendqisi2 + 11639 .LVL881: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11640 .loc 1 1738 12 discriminator 10 view .LVU3570 + 11641 0116 D2B2 uxtb r2, r2 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11642 .loc 1 1738 49 discriminator 10 view .LVU3571 + 11643 0118 012A cmp r2, #1 + 11644 011a 14BF ite ne + 11645 011c 0022 movne r2, #0 + 11646 011e 0122 moveq r2, #1 + 11647 0120 87E7 b .L844 + 11648 .LVL882: + 11649 .L881: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11650 .loc 1 1738 12 discriminator 13 view .LVU3572 + 11651 0122 94F84220 ldrb r2, [r4, #66] @ zero_extendqisi2 + 11652 .LVL883: +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11653 .loc 1 1738 12 discriminator 13 view .LVU3573 + 11654 0126 D2B2 uxtb r2, r2 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11655 .loc 1 1738 49 discriminator 13 view .LVU3574 + ARM GAS /tmp/ccPLZXyC.s page 395 + + + 11656 0128 012A cmp r2, #1 + 11657 012a 14BF ite ne + 11658 012c 0022 movne r2, #0 + 11659 012e 0122 moveq r2, #1 + 11660 0130 7FE7 b .L844 + 11661 .L849: +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11662 .loc 1 1746 7 discriminator 2 view .LVU3575 + 11663 0132 042D cmp r5, #4 + 11664 0134 09D0 beq .L882 +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11665 .loc 1 1746 7 discriminator 4 view .LVU3576 + 11666 0136 082D cmp r5, #8 + 11667 0138 0BD0 beq .L883 +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11668 .loc 1 1746 7 discriminator 7 view .LVU3577 + 11669 013a 0C2D cmp r5, #12 + 11670 013c 0DD0 beq .L884 +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11671 .loc 1 1746 7 discriminator 10 view .LVU3578 + 11672 013e 102D cmp r5, #16 + 11673 0140 0FD0 beq .L885 +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11674 .loc 1 1746 7 discriminator 13 view .LVU3579 + 11675 0142 0222 movs r2, #2 + 11676 0144 84F84320 strb r2, [r4, #67] + 11677 0148 81E7 b .L850 + 11678 .L882: +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11679 .loc 1 1746 7 discriminator 3 view .LVU3580 + 11680 014a 0222 movs r2, #2 + 11681 014c 84F83F20 strb r2, [r4, #63] + 11682 0150 7DE7 b .L850 + 11683 .L883: +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11684 .loc 1 1746 7 discriminator 6 view .LVU3581 + 11685 0152 0222 movs r2, #2 + 11686 0154 84F84020 strb r2, [r4, #64] + 11687 0158 79E7 b .L850 + 11688 .L884: +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11689 .loc 1 1746 7 discriminator 9 view .LVU3582 + 11690 015a 0222 movs r2, #2 + 11691 015c 84F84120 strb r2, [r4, #65] + 11692 0160 75E7 b .L850 + 11693 .L885: +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11694 .loc 1 1746 7 discriminator 12 view .LVU3583 + 11695 0162 0222 movs r2, #2 + 11696 0164 84F84220 strb r2, [r4, #66] + 11697 0168 71E7 b .L850 + 11698 .L859: +1759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11699 .loc 1 1759 7 is_stmt 1 view .LVU3584 +1759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11700 .loc 1 1759 17 is_stmt 0 view .LVU3585 + 11701 016a 626A ldr r2, [r4, #36] + ARM GAS /tmp/ccPLZXyC.s page 396 + + +1759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11702 .loc 1 1759 52 view .LVU3586 + 11703 016c 5749 ldr r1, .L886 + 11704 .LVL884: +1759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11705 .loc 1 1759 52 view .LVU3587 + 11706 016e D163 str r1, [r2, #60] +1760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11707 .loc 1 1760 7 is_stmt 1 view .LVU3588 +1760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11708 .loc 1 1760 17 is_stmt 0 view .LVU3589 + 11709 0170 626A ldr r2, [r4, #36] +1760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11710 .loc 1 1760 56 view .LVU3590 + 11711 0172 5749 ldr r1, .L886+4 + 11712 0174 1164 str r1, [r2, #64] +1763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11713 .loc 1 1763 7 is_stmt 1 view .LVU3591 +1763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11714 .loc 1 1763 17 is_stmt 0 view .LVU3592 + 11715 0176 626A ldr r2, [r4, #36] +1763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11716 .loc 1 1763 53 view .LVU3593 + 11717 0178 5649 ldr r1, .L886+8 + 11718 017a D164 str r1, [r2, #76] +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11719 .loc 1 1766 7 is_stmt 1 view .LVU3594 +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11720 .loc 1 1766 88 is_stmt 0 view .LVU3595 + 11721 017c 2268 ldr r2, [r4] +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11722 .loc 1 1766 11 view .LVU3596 + 11723 017e 3432 adds r2, r2, #52 + 11724 0180 6146 mov r1, ip + 11725 0182 606A ldr r0, [r4, #36] + 11726 0184 FFF7FEFF bl HAL_DMA_Start_IT + 11727 .LVL885: +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11728 .loc 1 1766 10 view .LVU3597 + 11729 0188 0028 cmp r0, #0 + 11730 018a 40F09480 bne .L868 +1774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11731 .loc 1 1774 7 is_stmt 1 view .LVU3598 + 11732 018e 2268 ldr r2, [r4] + 11733 0190 D368 ldr r3, [r2, #12] + 11734 0192 43F40073 orr r3, r3, #512 + 11735 0196 D360 str r3, [r2, #12] +1775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11736 .loc 1 1775 7 view .LVU3599 +1846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11737 .loc 1 1846 3 view .LVU3600 + 11738 .L860: +1849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11739 .loc 1 1849 5 view .LVU3601 + 11740 0198 0122 movs r2, #1 + 11741 019a 2946 mov r1, r5 + 11742 019c 2068 ldr r0, [r4] + ARM GAS /tmp/ccPLZXyC.s page 397 + + + 11743 019e FFF7FEFF bl TIM_CCxChannelCmd + 11744 .LVL886: +1851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11745 .loc 1 1851 5 view .LVU3602 +1851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11746 .loc 1 1851 9 is_stmt 0 view .LVU3603 + 11747 01a2 2368 ldr r3, [r4] +1851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11748 .loc 1 1851 8 view .LVU3604 + 11749 01a4 4C49 ldr r1, .L886+12 + 11750 01a6 4D4A ldr r2, .L886+16 + 11751 01a8 9342 cmp r3, r2 + 11752 01aa 18BF it ne + 11753 01ac 8B42 cmpne r3, r1 + 11754 01ae 03D1 bne .L861 +1854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11755 .loc 1 1854 7 is_stmt 1 view .LVU3605 + 11756 01b0 5A6C ldr r2, [r3, #68] + 11757 01b2 42F40042 orr r2, r2, #32768 + 11758 01b6 5A64 str r2, [r3, #68] + 11759 .L861: +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11760 .loc 1 1858 5 view .LVU3606 +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11761 .loc 1 1858 9 is_stmt 0 view .LVU3607 + 11762 01b8 2368 ldr r3, [r4] +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11763 .loc 1 1858 8 view .LVU3608 + 11764 01ba 474A ldr r2, .L886+12 + 11765 01bc B3F1804F cmp r3, #1073741824 + 11766 01c0 18BF it ne + 11767 01c2 9342 cmpne r3, r2 + 11768 01c4 61D0 beq .L862 +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11769 .loc 1 1858 9 discriminator 1 view .LVU3609 + 11770 01c6 A2F57C42 sub r2, r2, #64512 + 11771 01ca 9342 cmp r3, r2 + 11772 01cc 5DD0 beq .L862 +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11773 .loc 1 1858 9 discriminator 2 view .LVU3610 + 11774 01ce 02F58062 add r2, r2, #1024 + 11775 01d2 9342 cmp r3, r2 + 11776 01d4 59D0 beq .L862 +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11777 .loc 1 1858 9 discriminator 3 view .LVU3611 + 11778 01d6 02F58062 add r2, r2, #1024 + 11779 01da 9342 cmp r3, r2 + 11780 01dc 55D0 beq .L862 +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11781 .loc 1 1858 9 discriminator 4 view .LVU3612 + 11782 01de 02F57842 add r2, r2, #63488 + 11783 01e2 9342 cmp r3, r2 + 11784 01e4 51D0 beq .L862 +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11785 .loc 1 1858 9 discriminator 5 view .LVU3613 + 11786 01e6 02F57052 add r2, r2, #15360 + 11787 01ea 9342 cmp r3, r2 + ARM GAS /tmp/ccPLZXyC.s page 398 + + + 11788 01ec 4DD0 beq .L862 +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11789 .loc 1 1858 9 discriminator 6 view .LVU3614 + 11790 01ee A2F59432 sub r2, r2, #75776 + 11791 01f2 9342 cmp r3, r2 + 11792 01f4 49D0 beq .L862 +1868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11793 .loc 1 1868 7 is_stmt 1 view .LVU3615 + 11794 01f6 1A68 ldr r2, [r3] + 11795 01f8 42F00102 orr r2, r2, #1 + 11796 01fc 1A60 str r2, [r3] + 11797 01fe 0020 movs r0, #0 + 11798 0200 54E0 b .L842 + 11799 .LVL887: + 11800 .L858: +1781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11801 .loc 1 1781 7 view .LVU3616 +1781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11802 .loc 1 1781 17 is_stmt 0 view .LVU3617 + 11803 0202 A26A ldr r2, [r4, #40] +1781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11804 .loc 1 1781 52 view .LVU3618 + 11805 0204 3149 ldr r1, .L886 + 11806 .LVL888: +1781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11807 .loc 1 1781 52 view .LVU3619 + 11808 0206 D163 str r1, [r2, #60] +1782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11809 .loc 1 1782 7 is_stmt 1 view .LVU3620 +1782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11810 .loc 1 1782 17 is_stmt 0 view .LVU3621 + 11811 0208 A26A ldr r2, [r4, #40] +1782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11812 .loc 1 1782 56 view .LVU3622 + 11813 020a 3149 ldr r1, .L886+4 + 11814 020c 1164 str r1, [r2, #64] +1785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11815 .loc 1 1785 7 is_stmt 1 view .LVU3623 +1785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11816 .loc 1 1785 17 is_stmt 0 view .LVU3624 + 11817 020e A26A ldr r2, [r4, #40] +1785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11818 .loc 1 1785 53 view .LVU3625 + 11819 0210 3049 ldr r1, .L886+8 + 11820 0212 D164 str r1, [r2, #76] +1788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11821 .loc 1 1788 7 is_stmt 1 view .LVU3626 +1788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11822 .loc 1 1788 88 is_stmt 0 view .LVU3627 + 11823 0214 2268 ldr r2, [r4] +1788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11824 .loc 1 1788 11 view .LVU3628 + 11825 0216 3832 adds r2, r2, #56 + 11826 0218 6146 mov r1, ip + 11827 021a A06A ldr r0, [r4, #40] + 11828 021c FFF7FEFF bl HAL_DMA_Start_IT + 11829 .LVL889: + ARM GAS /tmp/ccPLZXyC.s page 399 + + +1788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11830 .loc 1 1788 10 view .LVU3629 + 11831 0220 0028 cmp r0, #0 + 11832 0222 4AD1 bne .L869 +1795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11833 .loc 1 1795 7 is_stmt 1 view .LVU3630 + 11834 0224 2268 ldr r2, [r4] + 11835 0226 D368 ldr r3, [r2, #12] + 11836 0228 43F48063 orr r3, r3, #1024 + 11837 022c D360 str r3, [r2, #12] +1796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11838 .loc 1 1796 7 view .LVU3631 +1846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11839 .loc 1 1846 3 view .LVU3632 + 11840 022e B3E7 b .L860 + 11841 .LVL890: + 11842 .L857: +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11843 .loc 1 1802 7 view .LVU3633 +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11844 .loc 1 1802 17 is_stmt 0 view .LVU3634 + 11845 0230 E26A ldr r2, [r4, #44] +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11846 .loc 1 1802 52 view .LVU3635 + 11847 0232 2649 ldr r1, .L886 + 11848 .LVL891: +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11849 .loc 1 1802 52 view .LVU3636 + 11850 0234 D163 str r1, [r2, #60] +1803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11851 .loc 1 1803 7 is_stmt 1 view .LVU3637 +1803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11852 .loc 1 1803 17 is_stmt 0 view .LVU3638 + 11853 0236 E26A ldr r2, [r4, #44] +1803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11854 .loc 1 1803 56 view .LVU3639 + 11855 0238 2549 ldr r1, .L886+4 + 11856 023a 1164 str r1, [r2, #64] +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11857 .loc 1 1806 7 is_stmt 1 view .LVU3640 +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11858 .loc 1 1806 17 is_stmt 0 view .LVU3641 + 11859 023c E26A ldr r2, [r4, #44] +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11860 .loc 1 1806 53 view .LVU3642 + 11861 023e 2549 ldr r1, .L886+8 + 11862 0240 D164 str r1, [r2, #76] +1809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11863 .loc 1 1809 7 is_stmt 1 view .LVU3643 +1809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11864 .loc 1 1809 88 is_stmt 0 view .LVU3644 + 11865 0242 2268 ldr r2, [r4] +1809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11866 .loc 1 1809 11 view .LVU3645 + 11867 0244 3C32 adds r2, r2, #60 + 11868 0246 6146 mov r1, ip + 11869 0248 E06A ldr r0, [r4, #44] + ARM GAS /tmp/ccPLZXyC.s page 400 + + + 11870 024a FFF7FEFF bl HAL_DMA_Start_IT + 11871 .LVL892: +1809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11872 .loc 1 1809 10 view .LVU3646 + 11873 024e 0028 cmp r0, #0 + 11874 0250 35D1 bne .L870 +1816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11875 .loc 1 1816 7 is_stmt 1 view .LVU3647 + 11876 0252 2268 ldr r2, [r4] + 11877 0254 D368 ldr r3, [r2, #12] + 11878 0256 43F40063 orr r3, r3, #2048 + 11879 025a D360 str r3, [r2, #12] +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11880 .loc 1 1817 7 view .LVU3648 +1846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11881 .loc 1 1846 3 view .LVU3649 + 11882 025c 9CE7 b .L860 + 11883 .LVL893: + 11884 .L855: +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11885 .loc 1 1823 7 view .LVU3650 +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11886 .loc 1 1823 17 is_stmt 0 view .LVU3651 + 11887 025e 226B ldr r2, [r4, #48] +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11888 .loc 1 1823 52 view .LVU3652 + 11889 0260 1A49 ldr r1, .L886 + 11890 .LVL894: +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 11891 .loc 1 1823 52 view .LVU3653 + 11892 0262 D163 str r1, [r2, #60] +1824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11893 .loc 1 1824 7 is_stmt 1 view .LVU3654 +1824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11894 .loc 1 1824 17 is_stmt 0 view .LVU3655 + 11895 0264 226B ldr r2, [r4, #48] +1824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11896 .loc 1 1824 56 view .LVU3656 + 11897 0266 1A49 ldr r1, .L886+4 + 11898 0268 1164 str r1, [r2, #64] +1827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11899 .loc 1 1827 7 is_stmt 1 view .LVU3657 +1827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11900 .loc 1 1827 17 is_stmt 0 view .LVU3658 + 11901 026a 226B ldr r2, [r4, #48] +1827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11902 .loc 1 1827 53 view .LVU3659 + 11903 026c 1949 ldr r1, .L886+8 + 11904 026e D164 str r1, [r2, #76] +1830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11905 .loc 1 1830 7 is_stmt 1 view .LVU3660 +1830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11906 .loc 1 1830 88 is_stmt 0 view .LVU3661 + 11907 0270 2268 ldr r2, [r4] +1830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11908 .loc 1 1830 11 view .LVU3662 + 11909 0272 4032 adds r2, r2, #64 + ARM GAS /tmp/ccPLZXyC.s page 401 + + + 11910 0274 6146 mov r1, ip + 11911 0276 206B ldr r0, [r4, #48] + 11912 0278 FFF7FEFF bl HAL_DMA_Start_IT + 11913 .LVL895: +1830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 11914 .loc 1 1830 10 view .LVU3663 + 11915 027c 08BB cbnz r0, .L871 +1837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 11916 .loc 1 1837 7 is_stmt 1 view .LVU3664 + 11917 027e 2268 ldr r2, [r4] + 11918 0280 D368 ldr r3, [r2, #12] + 11919 0282 43F48053 orr r3, r3, #4096 + 11920 0286 D360 str r3, [r2, #12] +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11921 .loc 1 1838 7 view .LVU3665 +1846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11922 .loc 1 1846 3 view .LVU3666 + 11923 0288 86E7 b .L860 + 11924 .L862: +1860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 11925 .loc 1 1860 7 view .LVU3667 +1860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 11926 .loc 1 1860 31 is_stmt 0 view .LVU3668 + 11927 028a 9968 ldr r1, [r3, #8] +1860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 11928 .loc 1 1860 15 view .LVU3669 + 11929 028c 144A ldr r2, .L886+20 + 11930 028e 0A40 ands r2, r2, r1 + 11931 .LVL896: +1861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11932 .loc 1 1861 7 is_stmt 1 view .LVU3670 +1861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11933 .loc 1 1861 10 is_stmt 0 view .LVU3671 + 11934 0290 062A cmp r2, #6 + 11935 0292 18BF it ne + 11936 0294 B2F5803F cmpne r2, #65536 + 11937 0298 15D0 beq .L872 +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11938 .loc 1 1863 9 is_stmt 1 view .LVU3672 + 11939 029a 1A68 ldr r2, [r3] + 11940 .LVL897: +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11941 .loc 1 1863 9 is_stmt 0 view .LVU3673 + 11942 029c 42F00102 orr r2, r2, #1 + 11943 02a0 1A60 str r2, [r3] + 11944 02a2 0020 movs r0, #0 + 11945 02a4 02E0 b .L842 + 11946 .LVL898: + 11947 .L864: +1736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11948 .loc 1 1736 12 view .LVU3674 + 11949 02a6 0220 movs r0, #2 + 11950 02a8 00E0 b .L842 + 11951 .LVL899: + 11952 .L865: +1751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11953 .loc 1 1751 12 view .LVU3675 + ARM GAS /tmp/ccPLZXyC.s page 402 + + + 11954 02aa 0120 movs r0, #1 + 11955 .LVL900: + 11956 .L842: +1874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 11957 .loc 1 1874 1 view .LVU3676 + 11958 02ac 38BD pop {r3, r4, r5, pc} + 11959 .LVL901: + 11960 .L866: +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11961 .loc 1 1742 14 view .LVU3677 + 11962 02ae 0120 movs r0, #1 + 11963 02b0 FCE7 b .L842 + 11964 .L867: +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 11965 .loc 1 1754 3 view .LVU3678 + 11966 02b2 0120 movs r0, #1 + 11967 02b4 FAE7 b .L842 + 11968 .LVL902: + 11969 .L868: +1770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11970 .loc 1 1770 16 view .LVU3679 + 11971 02b6 0120 movs r0, #1 + 11972 02b8 F8E7 b .L842 + 11973 .L869: +1792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11974 .loc 1 1792 16 view .LVU3680 + 11975 02ba 0120 movs r0, #1 + 11976 02bc F6E7 b .L842 + 11977 .L870: +1813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11978 .loc 1 1813 16 view .LVU3681 + 11979 02be 0120 movs r0, #1 + 11980 02c0 F4E7 b .L842 + 11981 .L871: +1834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11982 .loc 1 1834 16 view .LVU3682 + 11983 02c2 0120 movs r0, #1 + 11984 02c4 F2E7 b .L842 + 11985 .LVL903: + 11986 .L872: +1834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 11987 .loc 1 1834 16 view .LVU3683 + 11988 02c6 0020 movs r0, #0 + 11989 02c8 F0E7 b .L842 + 11990 .L887: + 11991 02ca 00BF .align 2 + 11992 .L886: + 11993 02cc 00000000 .word TIM_DMADelayPulseCplt + 11994 02d0 00000000 .word TIM_DMADelayPulseHalfCplt + 11995 02d4 00000000 .word TIM_DMAError + 11996 02d8 00000140 .word 1073807360 + 11997 02dc 00040140 .word 1073808384 + 11998 02e0 07000100 .word 65543 + 11999 .cfi_endproc + 12000 .LFE169: + 12002 .section .text.HAL_TIM_PWM_Stop_DMA,"ax",%progbits + 12003 .align 1 + ARM GAS /tmp/ccPLZXyC.s page 403 + + + 12004 .global HAL_TIM_PWM_Stop_DMA + 12005 .syntax unified + 12006 .thumb + 12007 .thumb_func + 12008 .fpu fpv5-d16 + 12010 HAL_TIM_PWM_Stop_DMA: + 12011 .LVL904: + 12012 .LFB170: +1888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 12013 .loc 1 1888 1 is_stmt 1 view -0 + 12014 .cfi_startproc + 12015 @ args = 0, pretend = 0, frame = 0 + 12016 @ frame_needed = 0, uses_anonymous_args = 0 +1888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 12017 .loc 1 1888 1 is_stmt 0 view .LVU3685 + 12018 0000 38B5 push {r3, r4, r5, lr} + 12019 .LCFI97: + 12020 .cfi_def_cfa_offset 16 + 12021 .cfi_offset 3, -16 + 12022 .cfi_offset 4, -12 + 12023 .cfi_offset 5, -8 + 12024 .cfi_offset 14, -4 + 12025 0002 0446 mov r4, r0 + 12026 0004 0D46 mov r5, r1 +1889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12027 .loc 1 1889 3 is_stmt 1 view .LVU3686 + 12028 .LVL905: +1892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12029 .loc 1 1892 3 view .LVU3687 +1894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12030 .loc 1 1894 3 view .LVU3688 + 12031 0006 0C29 cmp r1, #12 + 12032 0008 7BD8 bhi .L903 + 12033 000a DFE801F0 tbb [pc, r1] + 12034 .L891: + 12035 000e 07 .byte (.L894-.L891)/2 + 12036 000f 7A .byte (.L903-.L891)/2 + 12037 0010 7A .byte (.L903-.L891)/2 + 12038 0011 7A .byte (.L903-.L891)/2 + 12039 0012 3E .byte (.L893-.L891)/2 + 12040 0013 7A .byte (.L903-.L891)/2 + 12041 0014 7A .byte (.L903-.L891)/2 + 12042 0015 7A .byte (.L903-.L891)/2 + 12043 0016 47 .byte (.L892-.L891)/2 + 12044 0017 7A .byte (.L903-.L891)/2 + 12045 0018 7A .byte (.L903-.L891)/2 + 12046 0019 7A .byte (.L903-.L891)/2 + 12047 001a 50 .byte (.L890-.L891)/2 + 12048 001b 00 .p2align 1 + 12049 .L894: +1899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + 12050 .loc 1 1899 7 view .LVU3689 + 12051 001c 0268 ldr r2, [r0] + 12052 001e D368 ldr r3, [r2, #12] + 12053 0020 23F40073 bic r3, r3, #512 + 12054 0024 D360 str r3, [r2, #12] +1900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + ARM GAS /tmp/ccPLZXyC.s page 404 + + + 12055 .loc 1 1900 7 view .LVU3690 +1900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12056 .loc 1 1900 13 is_stmt 0 view .LVU3691 + 12057 0026 406A ldr r0, [r0, #36] + 12058 .LVL906: +1900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12059 .loc 1 1900 13 view .LVU3692 + 12060 0028 FFF7FEFF bl HAL_DMA_Abort_IT + 12061 .LVL907: +1901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12062 .loc 1 1901 7 is_stmt 1 view .LVU3693 +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12063 .loc 1 1933 3 view .LVU3694 + 12064 .L895: +1936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12065 .loc 1 1936 5 view .LVU3695 + 12066 002c 0022 movs r2, #0 + 12067 002e 2946 mov r1, r5 + 12068 0030 2068 ldr r0, [r4] + 12069 0032 FFF7FEFF bl TIM_CCxChannelCmd + 12070 .LVL908: +1938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12071 .loc 1 1938 5 view .LVU3696 +1938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12072 .loc 1 1938 9 is_stmt 0 view .LVU3697 + 12073 0036 2368 ldr r3, [r4] +1938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12074 .loc 1 1938 8 view .LVU3698 + 12075 0038 3349 ldr r1, .L909 + 12076 003a 344A ldr r2, .L909+4 + 12077 003c 9342 cmp r3, r2 + 12078 003e 18BF it ne + 12079 0040 8B42 cmpne r3, r1 + 12080 0042 0DD1 bne .L896 +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12081 .loc 1 1941 7 is_stmt 1 view .LVU3699 +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12082 .loc 1 1941 7 view .LVU3700 + 12083 0044 196A ldr r1, [r3, #32] + 12084 0046 41F21112 movw r2, #4369 + 12085 004a 1142 tst r1, r2 + 12086 004c 08D1 bne .L896 +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12087 .loc 1 1941 7 discriminator 1 view .LVU3701 + 12088 004e 196A ldr r1, [r3, #32] + 12089 0050 40F24442 movw r2, #1092 + 12090 0054 1142 tst r1, r2 + 12091 0056 03D1 bne .L896 +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12092 .loc 1 1941 7 discriminator 3 view .LVU3702 + 12093 0058 5A6C ldr r2, [r3, #68] + 12094 005a 22F40042 bic r2, r2, #32768 + 12095 005e 5A64 str r2, [r3, #68] + 12096 .L896: +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12097 .loc 1 1941 7 discriminator 5 view .LVU3703 +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + ARM GAS /tmp/ccPLZXyC.s page 405 + + + 12098 .loc 1 1945 5 discriminator 5 view .LVU3704 +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12099 .loc 1 1945 5 discriminator 5 view .LVU3705 + 12100 0060 2368 ldr r3, [r4] + 12101 0062 196A ldr r1, [r3, #32] + 12102 0064 41F21112 movw r2, #4369 + 12103 0068 1142 tst r1, r2 + 12104 006a 08D1 bne .L897 +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12105 .loc 1 1945 5 discriminator 1 view .LVU3706 + 12106 006c 196A ldr r1, [r3, #32] + 12107 006e 40F24442 movw r2, #1092 + 12108 0072 1142 tst r1, r2 + 12109 0074 03D1 bne .L897 +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12110 .loc 1 1945 5 discriminator 3 view .LVU3707 + 12111 0076 1A68 ldr r2, [r3] + 12112 0078 22F00102 bic r2, r2, #1 + 12113 007c 1A60 str r2, [r3] + 12114 .L897: +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12115 .loc 1 1945 5 discriminator 5 view .LVU3708 +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12116 .loc 1 1948 5 discriminator 5 view .LVU3709 + 12117 007e FDB9 cbnz r5, .L898 +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12118 .loc 1 1948 5 is_stmt 0 discriminator 1 view .LVU3710 + 12119 0080 0123 movs r3, #1 + 12120 0082 84F83E30 strb r3, [r4, #62] + 12121 0086 0020 movs r0, #0 + 12122 0088 3CE0 b .L889 + 12123 .LVL909: + 12124 .L893: +1907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + 12125 .loc 1 1907 7 is_stmt 1 view .LVU3711 + 12126 008a 0268 ldr r2, [r0] + 12127 008c D368 ldr r3, [r2, #12] + 12128 008e 23F48063 bic r3, r3, #1024 + 12129 0092 D360 str r3, [r2, #12] +1908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12130 .loc 1 1908 7 view .LVU3712 +1908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12131 .loc 1 1908 13 is_stmt 0 view .LVU3713 + 12132 0094 806A ldr r0, [r0, #40] + 12133 .LVL910: +1908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12134 .loc 1 1908 13 view .LVU3714 + 12135 0096 FFF7FEFF bl HAL_DMA_Abort_IT + 12136 .LVL911: +1909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12137 .loc 1 1909 7 is_stmt 1 view .LVU3715 +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12138 .loc 1 1933 3 view .LVU3716 + 12139 009a C7E7 b .L895 + 12140 .LVL912: + 12141 .L892: +1915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + ARM GAS /tmp/ccPLZXyC.s page 406 + + + 12142 .loc 1 1915 7 view .LVU3717 + 12143 009c 0268 ldr r2, [r0] + 12144 009e D368 ldr r3, [r2, #12] + 12145 00a0 23F40063 bic r3, r3, #2048 + 12146 00a4 D360 str r3, [r2, #12] +1916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12147 .loc 1 1916 7 view .LVU3718 +1916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12148 .loc 1 1916 13 is_stmt 0 view .LVU3719 + 12149 00a6 C06A ldr r0, [r0, #44] + 12150 .LVL913: +1916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12151 .loc 1 1916 13 view .LVU3720 + 12152 00a8 FFF7FEFF bl HAL_DMA_Abort_IT + 12153 .LVL914: +1917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12154 .loc 1 1917 7 is_stmt 1 view .LVU3721 +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12155 .loc 1 1933 3 view .LVU3722 + 12156 00ac BEE7 b .L895 + 12157 .LVL915: + 12158 .L890: +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + 12159 .loc 1 1923 7 view .LVU3723 + 12160 00ae 0268 ldr r2, [r0] + 12161 00b0 D368 ldr r3, [r2, #12] + 12162 00b2 23F48053 bic r3, r3, #4096 + 12163 00b6 D360 str r3, [r2, #12] +1924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12164 .loc 1 1924 7 view .LVU3724 +1924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12165 .loc 1 1924 13 is_stmt 0 view .LVU3725 + 12166 00b8 006B ldr r0, [r0, #48] + 12167 .LVL916: +1924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12168 .loc 1 1924 13 view .LVU3726 + 12169 00ba FFF7FEFF bl HAL_DMA_Abort_IT + 12170 .LVL917: +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12171 .loc 1 1925 7 is_stmt 1 view .LVU3727 +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12172 .loc 1 1933 3 view .LVU3728 + 12173 00be B5E7 b .L895 + 12174 .L898: +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12175 .loc 1 1948 5 is_stmt 0 discriminator 2 view .LVU3729 + 12176 00c0 042D cmp r5, #4 + 12177 00c2 0AD0 beq .L905 +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12178 .loc 1 1948 5 discriminator 4 view .LVU3730 + 12179 00c4 082D cmp r5, #8 + 12180 00c6 0DD0 beq .L906 +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12181 .loc 1 1948 5 discriminator 7 view .LVU3731 + 12182 00c8 0C2D cmp r5, #12 + 12183 00ca 10D0 beq .L907 +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 407 + + + 12184 .loc 1 1948 5 discriminator 10 view .LVU3732 + 12185 00cc 102D cmp r5, #16 + 12186 00ce 13D0 beq .L908 +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12187 .loc 1 1948 5 discriminator 13 view .LVU3733 + 12188 00d0 0123 movs r3, #1 + 12189 00d2 84F84330 strb r3, [r4, #67] + 12190 00d6 0020 movs r0, #0 + 12191 00d8 14E0 b .L889 + 12192 .L905: +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12193 .loc 1 1948 5 discriminator 3 view .LVU3734 + 12194 00da 0123 movs r3, #1 + 12195 00dc 84F83F30 strb r3, [r4, #63] + 12196 00e0 0020 movs r0, #0 + 12197 00e2 0FE0 b .L889 + 12198 .L906: +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12199 .loc 1 1948 5 discriminator 6 view .LVU3735 + 12200 00e4 0123 movs r3, #1 + 12201 00e6 84F84030 strb r3, [r4, #64] + 12202 00ea 0020 movs r0, #0 + 12203 00ec 0AE0 b .L889 + 12204 .L907: +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12205 .loc 1 1948 5 discriminator 9 view .LVU3736 + 12206 00ee 0123 movs r3, #1 + 12207 00f0 84F84130 strb r3, [r4, #65] + 12208 00f4 0020 movs r0, #0 + 12209 00f6 05E0 b .L889 + 12210 .L908: +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12211 .loc 1 1948 5 discriminator 12 view .LVU3737 + 12212 00f8 0123 movs r3, #1 + 12213 00fa 84F84230 strb r3, [r4, #66] + 12214 00fe 0020 movs r0, #0 + 12215 0100 00E0 b .L889 + 12216 .LVL918: + 12217 .L903: +1894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12218 .loc 1 1894 3 view .LVU3738 + 12219 0102 0120 movs r0, #1 + 12220 .LVL919: + 12221 .L889: +1952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12222 .loc 1 1952 3 is_stmt 1 view .LVU3739 +1953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12223 .loc 1 1953 1 is_stmt 0 view .LVU3740 + 12224 0104 38BD pop {r3, r4, r5, pc} + 12225 .LVL920: + 12226 .L910: +1953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12227 .loc 1 1953 1 view .LVU3741 + 12228 0106 00BF .align 2 + 12229 .L909: + 12230 0108 00000140 .word 1073807360 + 12231 010c 00040140 .word 1073808384 + ARM GAS /tmp/ccPLZXyC.s page 408 + + + 12232 .cfi_endproc + 12233 .LFE170: + 12235 .section .text.HAL_TIM_IC_Start,"ax",%progbits + 12236 .align 1 + 12237 .global HAL_TIM_IC_Start + 12238 .syntax unified + 12239 .thumb + 12240 .thumb_func + 12241 .fpu fpv5-d16 + 12243 HAL_TIM_IC_Start: + 12244 .LVL921: + 12245 .LFB175: +2130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 12246 .loc 1 2130 1 is_stmt 1 view -0 + 12247 .cfi_startproc + 12248 @ args = 0, pretend = 0, frame = 0 + 12249 @ frame_needed = 0, uses_anonymous_args = 0 +2130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 12250 .loc 1 2130 1 is_stmt 0 view .LVU3743 + 12251 0000 10B5 push {r4, lr} + 12252 .LCFI98: + 12253 .cfi_def_cfa_offset 8 + 12254 .cfi_offset 4, -8 + 12255 .cfi_offset 14, -4 + 12256 0002 0446 mov r4, r0 +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_state = TIM_CHANNEL_STATE_GET(htim, Channel); + 12257 .loc 1 2131 3 is_stmt 1 view .LVU3744 +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12258 .loc 1 2132 3 view .LVU3745 +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12259 .loc 1 2132 47 is_stmt 0 view .LVU3746 + 12260 0004 0B46 mov r3, r1 + 12261 0006 0029 cmp r1, #0 + 12262 0008 40D1 bne .L912 +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12263 .loc 1 2132 47 discriminator 1 view .LVU3747 + 12264 000a 90F83E10 ldrb r1, [r0, #62] @ zero_extendqisi2 + 12265 .LVL922: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12266 .loc 1 2132 47 discriminator 1 view .LVU3748 + 12267 000e C9B2 uxtb r1, r1 + 12268 .L913: + 12269 .LVL923: +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12270 .loc 1 2133 3 is_stmt 1 discriminator 20 view .LVU3749 +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12271 .loc 1 2133 61 is_stmt 0 discriminator 20 view .LVU3750 + 12272 0010 002B cmp r3, #0 + 12273 0012 57D1 bne .L918 +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12274 .loc 1 2133 61 discriminator 1 view .LVU3751 + 12275 0014 94F84420 ldrb r2, [r4, #68] @ zero_extendqisi2 + 12276 0018 D2B2 uxtb r2, r2 + 12277 .L919: + 12278 .LVL924: +2136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12279 .loc 1 2136 3 is_stmt 1 discriminator 12 view .LVU3752 + ARM GAS /tmp/ccPLZXyC.s page 409 + + +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY)) + 12280 .loc 1 2139 3 discriminator 12 view .LVU3753 +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY)) + 12281 .loc 1 2139 6 is_stmt 0 discriminator 12 view .LVU3754 + 12282 001a 012A cmp r2, #1 + 12283 001c 08BF it eq + 12284 001e 0129 cmpeq r1, #1 + 12285 0020 40F09A80 bne .L935 +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12286 .loc 1 2146 3 is_stmt 1 view .LVU3755 + 12287 0024 002B cmp r3, #0 + 12288 0026 5DD1 bne .L923 +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12289 .loc 1 2146 3 is_stmt 0 discriminator 1 view .LVU3756 + 12290 0028 0222 movs r2, #2 + 12291 .LVL925: +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12292 .loc 1 2146 3 discriminator 1 view .LVU3757 + 12293 002a 84F83E20 strb r2, [r4, #62] + 12294 .L924: +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12295 .loc 1 2147 3 is_stmt 1 view .LVU3758 + 12296 002e 002B cmp r3, #0 + 12297 0030 74D1 bne .L929 +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12298 .loc 1 2147 3 is_stmt 0 discriminator 1 view .LVU3759 + 12299 0032 0222 movs r2, #2 + 12300 0034 84F84420 strb r2, [r4, #68] + 12301 .L930: +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12302 .loc 1 2150 3 is_stmt 1 view .LVU3760 + 12303 0038 0122 movs r2, #1 + 12304 003a 1946 mov r1, r3 + 12305 .LVL926: +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12306 .loc 1 2150 3 is_stmt 0 view .LVU3761 + 12307 003c 2068 ldr r0, [r4] + 12308 .LVL927: +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12309 .loc 1 2150 3 view .LVU3762 + 12310 003e FFF7FEFF bl TIM_CCxChannelCmd + 12311 .LVL928: +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12312 .loc 1 2153 3 is_stmt 1 view .LVU3763 +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12313 .loc 1 2153 7 is_stmt 0 view .LVU3764 + 12314 0042 2368 ldr r3, [r4] +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12315 .loc 1 2153 6 view .LVU3765 + 12316 0044 464A ldr r2, .L950 + 12317 0046 B3F1804F cmp r3, #1073741824 + 12318 004a 18BF it ne + 12319 004c 9342 cmpne r3, r2 + 12320 004e 75D0 beq .L933 +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12321 .loc 1 2153 7 discriminator 1 view .LVU3766 + 12322 0050 A2F57C42 sub r2, r2, #64512 + ARM GAS /tmp/ccPLZXyC.s page 410 + + + 12323 0054 9342 cmp r3, r2 + 12324 0056 71D0 beq .L933 +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12325 .loc 1 2153 7 discriminator 2 view .LVU3767 + 12326 0058 02F58062 add r2, r2, #1024 + 12327 005c 9342 cmp r3, r2 + 12328 005e 6DD0 beq .L933 +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12329 .loc 1 2153 7 discriminator 3 view .LVU3768 + 12330 0060 02F58062 add r2, r2, #1024 + 12331 0064 9342 cmp r3, r2 + 12332 0066 69D0 beq .L933 +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12333 .loc 1 2153 7 discriminator 4 view .LVU3769 + 12334 0068 02F57842 add r2, r2, #63488 + 12335 006c 9342 cmp r3, r2 + 12336 006e 65D0 beq .L933 +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12337 .loc 1 2153 7 discriminator 5 view .LVU3770 + 12338 0070 02F57052 add r2, r2, #15360 + 12339 0074 9342 cmp r3, r2 + 12340 0076 61D0 beq .L933 +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12341 .loc 1 2153 7 discriminator 6 view .LVU3771 + 12342 0078 A2F59432 sub r2, r2, #75776 + 12343 007c 9342 cmp r3, r2 + 12344 007e 5DD0 beq .L933 +2163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12345 .loc 1 2163 5 is_stmt 1 view .LVU3772 + 12346 0080 1A68 ldr r2, [r3] + 12347 0082 42F00102 orr r2, r2, #1 + 12348 0086 1A60 str r2, [r3] +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12349 .loc 1 2167 10 is_stmt 0 view .LVU3773 + 12350 0088 0020 movs r0, #0 + 12351 008a 66E0 b .L922 + 12352 .LVL929: + 12353 .L912: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12354 .loc 1 2132 47 discriminator 2 view .LVU3774 + 12355 008c 0429 cmp r1, #4 + 12356 008e 09D0 beq .L938 +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12357 .loc 1 2132 47 discriminator 5 view .LVU3775 + 12358 0090 0829 cmp r1, #8 + 12359 0092 0BD0 beq .L939 +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12360 .loc 1 2132 47 discriminator 8 view .LVU3776 + 12361 0094 0C29 cmp r1, #12 + 12362 0096 0DD0 beq .L940 +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12363 .loc 1 2132 47 discriminator 11 view .LVU3777 + 12364 0098 1029 cmp r1, #16 + 12365 009a 0FD0 beq .L941 +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12366 .loc 1 2132 47 discriminator 14 view .LVU3778 + 12367 009c 90F84310 ldrb r1, [r0, #67] @ zero_extendqisi2 + ARM GAS /tmp/ccPLZXyC.s page 411 + + + 12368 .LVL930: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12369 .loc 1 2132 47 discriminator 14 view .LVU3779 + 12370 00a0 C9B2 uxtb r1, r1 + 12371 00a2 B5E7 b .L913 + 12372 .LVL931: + 12373 .L938: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12374 .loc 1 2132 47 discriminator 4 view .LVU3780 + 12375 00a4 90F83F10 ldrb r1, [r0, #63] @ zero_extendqisi2 + 12376 .LVL932: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12377 .loc 1 2132 47 discriminator 4 view .LVU3781 + 12378 00a8 C9B2 uxtb r1, r1 + 12379 00aa B1E7 b .L913 + 12380 .LVL933: + 12381 .L939: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12382 .loc 1 2132 47 discriminator 7 view .LVU3782 + 12383 00ac 90F84010 ldrb r1, [r0, #64] @ zero_extendqisi2 + 12384 .LVL934: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12385 .loc 1 2132 47 discriminator 7 view .LVU3783 + 12386 00b0 C9B2 uxtb r1, r1 + 12387 00b2 ADE7 b .L913 + 12388 .LVL935: + 12389 .L940: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12390 .loc 1 2132 47 discriminator 10 view .LVU3784 + 12391 00b4 90F84110 ldrb r1, [r0, #65] @ zero_extendqisi2 + 12392 .LVL936: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12393 .loc 1 2132 47 discriminator 10 view .LVU3785 + 12394 00b8 C9B2 uxtb r1, r1 + 12395 00ba A9E7 b .L913 + 12396 .LVL937: + 12397 .L941: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12398 .loc 1 2132 47 discriminator 13 view .LVU3786 + 12399 00bc 90F84210 ldrb r1, [r0, #66] @ zero_extendqisi2 + 12400 .LVL938: +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12401 .loc 1 2132 47 discriminator 13 view .LVU3787 + 12402 00c0 C9B2 uxtb r1, r1 + 12403 00c2 A5E7 b .L913 + 12404 .LVL939: + 12405 .L918: +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12406 .loc 1 2133 61 discriminator 2 view .LVU3788 + 12407 00c4 042B cmp r3, #4 + 12408 00c6 05D0 beq .L942 +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12409 .loc 1 2133 61 discriminator 5 view .LVU3789 + 12410 00c8 082B cmp r3, #8 + 12411 00ca 07D0 beq .L943 +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12412 .loc 1 2133 61 discriminator 8 view .LVU3790 + ARM GAS /tmp/ccPLZXyC.s page 412 + + + 12413 00cc 94F84720 ldrb r2, [r4, #71] @ zero_extendqisi2 + 12414 00d0 D2B2 uxtb r2, r2 + 12415 00d2 A2E7 b .L919 + 12416 .L942: +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12417 .loc 1 2133 61 discriminator 4 view .LVU3791 + 12418 00d4 94F84520 ldrb r2, [r4, #69] @ zero_extendqisi2 + 12419 00d8 D2B2 uxtb r2, r2 + 12420 00da 9EE7 b .L919 + 12421 .L943: +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12422 .loc 1 2133 61 discriminator 7 view .LVU3792 + 12423 00dc 94F84620 ldrb r2, [r4, #70] @ zero_extendqisi2 + 12424 00e0 D2B2 uxtb r2, r2 + 12425 00e2 9AE7 b .L919 + 12426 .LVL940: + 12427 .L923: +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12428 .loc 1 2146 3 discriminator 2 view .LVU3793 + 12429 00e4 042B cmp r3, #4 + 12430 00e6 09D0 beq .L944 +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12431 .loc 1 2146 3 discriminator 4 view .LVU3794 + 12432 00e8 082B cmp r3, #8 + 12433 00ea 0BD0 beq .L945 +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12434 .loc 1 2146 3 discriminator 7 view .LVU3795 + 12435 00ec 0C2B cmp r3, #12 + 12436 00ee 0DD0 beq .L946 +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12437 .loc 1 2146 3 discriminator 10 view .LVU3796 + 12438 00f0 102B cmp r3, #16 + 12439 00f2 0FD0 beq .L947 +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12440 .loc 1 2146 3 discriminator 13 view .LVU3797 + 12441 00f4 0222 movs r2, #2 + 12442 .LVL941: +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12443 .loc 1 2146 3 discriminator 13 view .LVU3798 + 12444 00f6 84F84320 strb r2, [r4, #67] + 12445 00fa 98E7 b .L924 + 12446 .LVL942: + 12447 .L944: +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12448 .loc 1 2146 3 discriminator 3 view .LVU3799 + 12449 00fc 0222 movs r2, #2 + 12450 .LVL943: +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12451 .loc 1 2146 3 discriminator 3 view .LVU3800 + 12452 00fe 84F83F20 strb r2, [r4, #63] + 12453 0102 94E7 b .L924 + 12454 .LVL944: + 12455 .L945: +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12456 .loc 1 2146 3 discriminator 6 view .LVU3801 + 12457 0104 0222 movs r2, #2 + 12458 .LVL945: + ARM GAS /tmp/ccPLZXyC.s page 413 + + +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12459 .loc 1 2146 3 discriminator 6 view .LVU3802 + 12460 0106 84F84020 strb r2, [r4, #64] + 12461 010a 90E7 b .L924 + 12462 .LVL946: + 12463 .L946: +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12464 .loc 1 2146 3 discriminator 9 view .LVU3803 + 12465 010c 0222 movs r2, #2 + 12466 .LVL947: +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12467 .loc 1 2146 3 discriminator 9 view .LVU3804 + 12468 010e 84F84120 strb r2, [r4, #65] + 12469 0112 8CE7 b .L924 + 12470 .LVL948: + 12471 .L947: +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12472 .loc 1 2146 3 discriminator 12 view .LVU3805 + 12473 0114 0222 movs r2, #2 + 12474 .LVL949: +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12475 .loc 1 2146 3 discriminator 12 view .LVU3806 + 12476 0116 84F84220 strb r2, [r4, #66] + 12477 011a 88E7 b .L924 + 12478 .L929: +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12479 .loc 1 2147 3 discriminator 2 view .LVU3807 + 12480 011c 042B cmp r3, #4 + 12481 011e 05D0 beq .L948 +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12482 .loc 1 2147 3 discriminator 4 view .LVU3808 + 12483 0120 082B cmp r3, #8 + 12484 0122 07D0 beq .L949 +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12485 .loc 1 2147 3 discriminator 7 view .LVU3809 + 12486 0124 0222 movs r2, #2 + 12487 0126 84F84720 strb r2, [r4, #71] + 12488 012a 85E7 b .L930 + 12489 .L948: +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12490 .loc 1 2147 3 discriminator 3 view .LVU3810 + 12491 012c 0222 movs r2, #2 + 12492 012e 84F84520 strb r2, [r4, #69] + 12493 0132 81E7 b .L930 + 12494 .L949: +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12495 .loc 1 2147 3 discriminator 6 view .LVU3811 + 12496 0134 0222 movs r2, #2 + 12497 0136 84F84620 strb r2, [r4, #70] + 12498 013a 7DE7 b .L930 + 12499 .LVL950: + 12500 .L933: +2155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 12501 .loc 1 2155 5 is_stmt 1 view .LVU3812 +2155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 12502 .loc 1 2155 29 is_stmt 0 view .LVU3813 + 12503 013c 9968 ldr r1, [r3, #8] + ARM GAS /tmp/ccPLZXyC.s page 414 + + +2155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 12504 .loc 1 2155 13 view .LVU3814 + 12505 013e 094A ldr r2, .L950+4 + 12506 0140 0A40 ands r2, r2, r1 + 12507 .LVL951: +2156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12508 .loc 1 2156 5 is_stmt 1 view .LVU3815 +2156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12509 .loc 1 2156 8 is_stmt 0 view .LVU3816 + 12510 0142 062A cmp r2, #6 + 12511 0144 18BF it ne + 12512 0146 B2F5803F cmpne r2, #65536 + 12513 014a 07D0 beq .L936 +2158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12514 .loc 1 2158 7 is_stmt 1 view .LVU3817 + 12515 014c 1A68 ldr r2, [r3] + 12516 .LVL952: +2158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12517 .loc 1 2158 7 is_stmt 0 view .LVU3818 + 12518 014e 42F00102 orr r2, r2, #1 + 12519 0152 1A60 str r2, [r3] +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12520 .loc 1 2167 10 view .LVU3819 + 12521 0154 0020 movs r0, #0 + 12522 0156 00E0 b .L922 + 12523 .LVL953: + 12524 .L935: +2142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12525 .loc 1 2142 12 view .LVU3820 + 12526 0158 0120 movs r0, #1 + 12527 .LVL954: + 12528 .L922: +2168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12529 .loc 1 2168 1 view .LVU3821 + 12530 015a 10BD pop {r4, pc} + 12531 .LVL955: + 12532 .L936: +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12533 .loc 1 2167 10 view .LVU3822 + 12534 015c 0020 movs r0, #0 + 12535 015e FCE7 b .L922 + 12536 .L951: + 12537 .align 2 + 12538 .L950: + 12539 0160 00000140 .word 1073807360 + 12540 0164 07000100 .word 65543 + 12541 .cfi_endproc + 12542 .LFE175: + 12544 .section .text.HAL_TIM_IC_Stop,"ax",%progbits + 12545 .align 1 + 12546 .global HAL_TIM_IC_Stop + 12547 .syntax unified + 12548 .thumb + 12549 .thumb_func + 12550 .fpu fpv5-d16 + 12552 HAL_TIM_IC_Stop: + 12553 .LVL956: + ARM GAS /tmp/ccPLZXyC.s page 415 + + + 12554 .LFB176: +2182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 12555 .loc 1 2182 1 is_stmt 1 view -0 + 12556 .cfi_startproc + 12557 @ args = 0, pretend = 0, frame = 0 + 12558 @ frame_needed = 0, uses_anonymous_args = 0 +2182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 12559 .loc 1 2182 1 is_stmt 0 view .LVU3824 + 12560 0000 38B5 push {r3, r4, r5, lr} + 12561 .LCFI99: + 12562 .cfi_def_cfa_offset 16 + 12563 .cfi_offset 3, -16 + 12564 .cfi_offset 4, -12 + 12565 .cfi_offset 5, -8 + 12566 .cfi_offset 14, -4 + 12567 0002 0546 mov r5, r0 + 12568 0004 0C46 mov r4, r1 +2184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12569 .loc 1 2184 3 is_stmt 1 view .LVU3825 +2187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12570 .loc 1 2187 3 view .LVU3826 + 12571 0006 0022 movs r2, #0 + 12572 0008 0068 ldr r0, [r0] + 12573 .LVL957: +2187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12574 .loc 1 2187 3 is_stmt 0 view .LVU3827 + 12575 000a FFF7FEFF bl TIM_CCxChannelCmd + 12576 .LVL958: +2190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12577 .loc 1 2190 3 is_stmt 1 view .LVU3828 +2190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12578 .loc 1 2190 3 view .LVU3829 + 12579 000e 2B68 ldr r3, [r5] + 12580 0010 196A ldr r1, [r3, #32] + 12581 0012 41F21112 movw r2, #4369 + 12582 0016 1142 tst r1, r2 + 12583 0018 08D1 bne .L953 +2190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12584 .loc 1 2190 3 discriminator 1 view .LVU3830 + 12585 001a 196A ldr r1, [r3, #32] + 12586 001c 40F24442 movw r2, #1092 + 12587 0020 1142 tst r1, r2 + 12588 0022 03D1 bne .L953 +2190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12589 .loc 1 2190 3 discriminator 3 view .LVU3831 + 12590 0024 1A68 ldr r2, [r3] + 12591 0026 22F00102 bic r2, r2, #1 + 12592 002a 1A60 str r2, [r3] + 12593 .L953: +2190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12594 .loc 1 2190 3 discriminator 5 view .LVU3832 +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12595 .loc 1 2193 3 discriminator 5 view .LVU3833 + 12596 002c 44B9 cbnz r4, .L954 +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12597 .loc 1 2193 3 is_stmt 0 discriminator 1 view .LVU3834 + 12598 002e 0123 movs r3, #1 + ARM GAS /tmp/ccPLZXyC.s page 416 + + + 12599 0030 85F83E30 strb r3, [r5, #62] + 12600 .L955: +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12601 .loc 1 2194 3 is_stmt 1 view .LVU3835 + 12602 0034 04BB cbnz r4, .L960 +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12603 .loc 1 2194 3 is_stmt 0 discriminator 1 view .LVU3836 + 12604 0036 0123 movs r3, #1 + 12605 0038 85F84430 strb r3, [r5, #68] + 12606 .L961: +2197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12607 .loc 1 2197 3 is_stmt 1 view .LVU3837 +2198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12608 .loc 1 2198 1 is_stmt 0 view .LVU3838 + 12609 003c 0020 movs r0, #0 + 12610 003e 38BD pop {r3, r4, r5, pc} + 12611 .LVL959: + 12612 .L954: +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12613 .loc 1 2193 3 discriminator 2 view .LVU3839 + 12614 0040 042C cmp r4, #4 + 12615 0042 09D0 beq .L965 +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12616 .loc 1 2193 3 discriminator 4 view .LVU3840 + 12617 0044 082C cmp r4, #8 + 12618 0046 0BD0 beq .L966 +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12619 .loc 1 2193 3 discriminator 7 view .LVU3841 + 12620 0048 0C2C cmp r4, #12 + 12621 004a 0DD0 beq .L967 +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12622 .loc 1 2193 3 discriminator 10 view .LVU3842 + 12623 004c 102C cmp r4, #16 + 12624 004e 0FD0 beq .L968 +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12625 .loc 1 2193 3 discriminator 13 view .LVU3843 + 12626 0050 0123 movs r3, #1 + 12627 0052 85F84330 strb r3, [r5, #67] + 12628 0056 EDE7 b .L955 + 12629 .L965: +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12630 .loc 1 2193 3 discriminator 3 view .LVU3844 + 12631 0058 0123 movs r3, #1 + 12632 005a 85F83F30 strb r3, [r5, #63] + 12633 005e E9E7 b .L955 + 12634 .L966: +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12635 .loc 1 2193 3 discriminator 6 view .LVU3845 + 12636 0060 0123 movs r3, #1 + 12637 0062 85F84030 strb r3, [r5, #64] + 12638 0066 E5E7 b .L955 + 12639 .L967: +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12640 .loc 1 2193 3 discriminator 9 view .LVU3846 + 12641 0068 0123 movs r3, #1 + 12642 006a 85F84130 strb r3, [r5, #65] + 12643 006e E1E7 b .L955 + ARM GAS /tmp/ccPLZXyC.s page 417 + + + 12644 .L968: +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 12645 .loc 1 2193 3 discriminator 12 view .LVU3847 + 12646 0070 0123 movs r3, #1 + 12647 0072 85F84230 strb r3, [r5, #66] + 12648 0076 DDE7 b .L955 + 12649 .L960: +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12650 .loc 1 2194 3 discriminator 2 view .LVU3848 + 12651 0078 042C cmp r4, #4 + 12652 007a 05D0 beq .L969 +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12653 .loc 1 2194 3 discriminator 4 view .LVU3849 + 12654 007c 082C cmp r4, #8 + 12655 007e 07D0 beq .L970 +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12656 .loc 1 2194 3 discriminator 7 view .LVU3850 + 12657 0080 0123 movs r3, #1 + 12658 0082 85F84730 strb r3, [r5, #71] + 12659 0086 D9E7 b .L961 + 12660 .L969: +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12661 .loc 1 2194 3 discriminator 3 view .LVU3851 + 12662 0088 0123 movs r3, #1 + 12663 008a 85F84530 strb r3, [r5, #69] + 12664 008e D5E7 b .L961 + 12665 .L970: +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12666 .loc 1 2194 3 discriminator 6 view .LVU3852 + 12667 0090 0123 movs r3, #1 + 12668 0092 85F84630 strb r3, [r5, #70] + 12669 0096 D1E7 b .L961 + 12670 .cfi_endproc + 12671 .LFE176: + 12673 .section .text.HAL_TIM_IC_Start_IT,"ax",%progbits + 12674 .align 1 + 12675 .global HAL_TIM_IC_Start_IT + 12676 .syntax unified + 12677 .thumb + 12678 .thumb_func + 12679 .fpu fpv5-d16 + 12681 HAL_TIM_IC_Start_IT: + 12682 .LVL960: + 12683 .LFB177: +2212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 12684 .loc 1 2212 1 is_stmt 1 view -0 + 12685 .cfi_startproc + 12686 @ args = 0, pretend = 0, frame = 0 + 12687 @ frame_needed = 0, uses_anonymous_args = 0 +2212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 12688 .loc 1 2212 1 is_stmt 0 view .LVU3854 + 12689 0000 10B5 push {r4, lr} + 12690 .LCFI100: + 12691 .cfi_def_cfa_offset 8 + 12692 .cfi_offset 4, -8 + 12693 .cfi_offset 14, -4 + 12694 0002 0446 mov r4, r0 + ARM GAS /tmp/ccPLZXyC.s page 418 + + +2213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 12695 .loc 1 2213 3 is_stmt 1 view .LVU3855 + 12696 .LVL961: +2214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12697 .loc 1 2214 3 view .LVU3856 +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12698 .loc 1 2216 3 view .LVU3857 +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12699 .loc 1 2216 47 is_stmt 0 view .LVU3858 + 12700 0004 0B46 mov r3, r1 + 12701 0006 11BB cbnz r1, .L972 +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12702 .loc 1 2216 47 discriminator 1 view .LVU3859 + 12703 0008 90F83E10 ldrb r1, [r0, #62] @ zero_extendqisi2 + 12704 .LVL962: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12705 .loc 1 2216 47 discriminator 1 view .LVU3860 + 12706 000c C9B2 uxtb r1, r1 + 12707 .L973: + 12708 .LVL963: +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12709 .loc 1 2217 3 is_stmt 1 discriminator 20 view .LVU3861 +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12710 .loc 1 2217 61 is_stmt 0 discriminator 20 view .LVU3862 + 12711 000e 002B cmp r3, #0 + 12712 0010 39D1 bne .L978 +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12713 .loc 1 2217 61 discriminator 1 view .LVU3863 + 12714 0012 94F84420 ldrb r2, [r4, #68] @ zero_extendqisi2 + 12715 0016 D2B2 uxtb r2, r2 + 12716 .L979: + 12717 .LVL964: +2220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12718 .loc 1 2220 3 is_stmt 1 discriminator 12 view .LVU3864 +2223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY)) + 12719 .loc 1 2223 3 discriminator 12 view .LVU3865 +2223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_state != HAL_TIM_CHANNEL_STATE_READY)) + 12720 .loc 1 2223 6 is_stmt 0 discriminator 12 view .LVU3866 + 12721 0018 012A cmp r2, #1 + 12722 001a 08BF it eq + 12723 001c 0129 cmpeq r1, #1 + 12724 001e 40F0BD80 bne .L1001 +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12725 .loc 1 2230 3 is_stmt 1 view .LVU3867 + 12726 0022 002B cmp r3, #0 + 12727 0024 3FD1 bne .L983 +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12728 .loc 1 2230 3 is_stmt 0 discriminator 1 view .LVU3868 + 12729 0026 0222 movs r2, #2 + 12730 .LVL965: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12731 .loc 1 2230 3 discriminator 1 view .LVU3869 + 12732 0028 84F83E20 strb r2, [r4, #62] + 12733 .L984: +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12734 .loc 1 2231 3 is_stmt 1 view .LVU3870 + 12735 002c 002B cmp r3, #0 + ARM GAS /tmp/ccPLZXyC.s page 419 + + + 12736 002e 56D1 bne .L989 +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12737 .loc 1 2231 3 is_stmt 0 discriminator 1 view .LVU3871 + 12738 0030 0222 movs r2, #2 + 12739 0032 84F84420 strb r2, [r4, #68] + 12740 .L990: +2233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12741 .loc 1 2233 3 is_stmt 1 view .LVU3872 + 12742 0036 0C2B cmp r3, #12 + 12743 0038 00F2B280 bhi .L1002 + 12744 003c DFE803F0 tbb [pc, r3] + 12745 .L994: + 12746 0040 5F .byte (.L997-.L994)/2 + 12747 0041 B0 .byte (.L1002-.L994)/2 + 12748 0042 B0 .byte (.L1002-.L994)/2 + 12749 0043 B0 .byte (.L1002-.L994)/2 + 12750 0044 8E .byte (.L996-.L994)/2 + 12751 0045 B0 .byte (.L1002-.L994)/2 + 12752 0046 B0 .byte (.L1002-.L994)/2 + 12753 0047 B0 .byte (.L1002-.L994)/2 + 12754 0048 94 .byte (.L995-.L994)/2 + 12755 0049 B0 .byte (.L1002-.L994)/2 + 12756 004a B0 .byte (.L1002-.L994)/2 + 12757 004b B0 .byte (.L1002-.L994)/2 + 12758 004c 9A .byte (.L993-.L994)/2 + 12759 .LVL966: + 12760 004d 00 .p2align 1 + 12761 .L972: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12762 .loc 1 2216 47 is_stmt 0 discriminator 2 view .LVU3873 + 12763 004e 0429 cmp r1, #4 + 12764 0050 09D0 beq .L1005 +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12765 .loc 1 2216 47 discriminator 5 view .LVU3874 + 12766 0052 0829 cmp r1, #8 + 12767 0054 0BD0 beq .L1006 +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12768 .loc 1 2216 47 discriminator 8 view .LVU3875 + 12769 0056 0C29 cmp r1, #12 + 12770 0058 0DD0 beq .L1007 +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12771 .loc 1 2216 47 discriminator 11 view .LVU3876 + 12772 005a 1029 cmp r1, #16 + 12773 005c 0FD0 beq .L1008 +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12774 .loc 1 2216 47 discriminator 14 view .LVU3877 + 12775 005e 90F84310 ldrb r1, [r0, #67] @ zero_extendqisi2 + 12776 .LVL967: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12777 .loc 1 2216 47 discriminator 14 view .LVU3878 + 12778 0062 C9B2 uxtb r1, r1 + 12779 0064 D3E7 b .L973 + 12780 .LVL968: + 12781 .L1005: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12782 .loc 1 2216 47 discriminator 4 view .LVU3879 + 12783 0066 90F83F10 ldrb r1, [r0, #63] @ zero_extendqisi2 + ARM GAS /tmp/ccPLZXyC.s page 420 + + + 12784 .LVL969: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12785 .loc 1 2216 47 discriminator 4 view .LVU3880 + 12786 006a C9B2 uxtb r1, r1 + 12787 006c CFE7 b .L973 + 12788 .LVL970: + 12789 .L1006: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12790 .loc 1 2216 47 discriminator 7 view .LVU3881 + 12791 006e 90F84010 ldrb r1, [r0, #64] @ zero_extendqisi2 + 12792 .LVL971: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12793 .loc 1 2216 47 discriminator 7 view .LVU3882 + 12794 0072 C9B2 uxtb r1, r1 + 12795 0074 CBE7 b .L973 + 12796 .LVL972: + 12797 .L1007: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12798 .loc 1 2216 47 discriminator 10 view .LVU3883 + 12799 0076 90F84110 ldrb r1, [r0, #65] @ zero_extendqisi2 + 12800 .LVL973: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12801 .loc 1 2216 47 discriminator 10 view .LVU3884 + 12802 007a C9B2 uxtb r1, r1 + 12803 007c C7E7 b .L973 + 12804 .LVL974: + 12805 .L1008: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12806 .loc 1 2216 47 discriminator 13 view .LVU3885 + 12807 007e 90F84210 ldrb r1, [r0, #66] @ zero_extendqisi2 + 12808 .LVL975: +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 12809 .loc 1 2216 47 discriminator 13 view .LVU3886 + 12810 0082 C9B2 uxtb r1, r1 + 12811 0084 C3E7 b .L973 + 12812 .LVL976: + 12813 .L978: +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12814 .loc 1 2217 61 discriminator 2 view .LVU3887 + 12815 0086 042B cmp r3, #4 + 12816 0088 05D0 beq .L1009 +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12817 .loc 1 2217 61 discriminator 5 view .LVU3888 + 12818 008a 082B cmp r3, #8 + 12819 008c 07D0 beq .L1010 +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12820 .loc 1 2217 61 discriminator 8 view .LVU3889 + 12821 008e 94F84720 ldrb r2, [r4, #71] @ zero_extendqisi2 + 12822 0092 D2B2 uxtb r2, r2 + 12823 0094 C0E7 b .L979 + 12824 .L1009: +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12825 .loc 1 2217 61 discriminator 4 view .LVU3890 + 12826 0096 94F84520 ldrb r2, [r4, #69] @ zero_extendqisi2 + 12827 009a D2B2 uxtb r2, r2 + 12828 009c BCE7 b .L979 + 12829 .L1010: + ARM GAS /tmp/ccPLZXyC.s page 421 + + +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12830 .loc 1 2217 61 discriminator 7 view .LVU3891 + 12831 009e 94F84620 ldrb r2, [r4, #70] @ zero_extendqisi2 + 12832 00a2 D2B2 uxtb r2, r2 + 12833 00a4 B8E7 b .L979 + 12834 .LVL977: + 12835 .L983: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12836 .loc 1 2230 3 discriminator 2 view .LVU3892 + 12837 00a6 042B cmp r3, #4 + 12838 00a8 09D0 beq .L1011 +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12839 .loc 1 2230 3 discriminator 4 view .LVU3893 + 12840 00aa 082B cmp r3, #8 + 12841 00ac 0BD0 beq .L1012 +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12842 .loc 1 2230 3 discriminator 7 view .LVU3894 + 12843 00ae 0C2B cmp r3, #12 + 12844 00b0 0DD0 beq .L1013 +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12845 .loc 1 2230 3 discriminator 10 view .LVU3895 + 12846 00b2 102B cmp r3, #16 + 12847 00b4 0FD0 beq .L1014 +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12848 .loc 1 2230 3 discriminator 13 view .LVU3896 + 12849 00b6 0222 movs r2, #2 + 12850 .LVL978: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12851 .loc 1 2230 3 discriminator 13 view .LVU3897 + 12852 00b8 84F84320 strb r2, [r4, #67] + 12853 00bc B6E7 b .L984 + 12854 .LVL979: + 12855 .L1011: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12856 .loc 1 2230 3 discriminator 3 view .LVU3898 + 12857 00be 0222 movs r2, #2 + 12858 .LVL980: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12859 .loc 1 2230 3 discriminator 3 view .LVU3899 + 12860 00c0 84F83F20 strb r2, [r4, #63] + 12861 00c4 B2E7 b .L984 + 12862 .LVL981: + 12863 .L1012: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12864 .loc 1 2230 3 discriminator 6 view .LVU3900 + 12865 00c6 0222 movs r2, #2 + 12866 .LVL982: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12867 .loc 1 2230 3 discriminator 6 view .LVU3901 + 12868 00c8 84F84020 strb r2, [r4, #64] + 12869 00cc AEE7 b .L984 + 12870 .LVL983: + 12871 .L1013: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12872 .loc 1 2230 3 discriminator 9 view .LVU3902 + 12873 00ce 0222 movs r2, #2 + 12874 .LVL984: + ARM GAS /tmp/ccPLZXyC.s page 422 + + +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12875 .loc 1 2230 3 discriminator 9 view .LVU3903 + 12876 00d0 84F84120 strb r2, [r4, #65] + 12877 00d4 AAE7 b .L984 + 12878 .LVL985: + 12879 .L1014: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12880 .loc 1 2230 3 discriminator 12 view .LVU3904 + 12881 00d6 0222 movs r2, #2 + 12882 .LVL986: +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 12883 .loc 1 2230 3 discriminator 12 view .LVU3905 + 12884 00d8 84F84220 strb r2, [r4, #66] + 12885 00dc A6E7 b .L984 + 12886 .L989: +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12887 .loc 1 2231 3 discriminator 2 view .LVU3906 + 12888 00de 042B cmp r3, #4 + 12889 00e0 05D0 beq .L1015 +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12890 .loc 1 2231 3 discriminator 4 view .LVU3907 + 12891 00e2 082B cmp r3, #8 + 12892 00e4 07D0 beq .L1016 +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12893 .loc 1 2231 3 discriminator 7 view .LVU3908 + 12894 00e6 0222 movs r2, #2 + 12895 00e8 84F84720 strb r2, [r4, #71] + 12896 00ec A3E7 b .L990 + 12897 .L1015: +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12898 .loc 1 2231 3 discriminator 3 view .LVU3909 + 12899 00ee 0222 movs r2, #2 + 12900 00f0 84F84520 strb r2, [r4, #69] + 12901 00f4 9FE7 b .L990 + 12902 .L1016: +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12903 .loc 1 2231 3 discriminator 6 view .LVU3910 + 12904 00f6 0222 movs r2, #2 + 12905 00f8 84F84620 strb r2, [r4, #70] + 12906 00fc 9BE7 b .L990 + 12907 .L997: +2238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12908 .loc 1 2238 7 is_stmt 1 view .LVU3911 + 12909 00fe 2168 ldr r1, [r4] + 12910 .LVL987: +2238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12911 .loc 1 2238 7 is_stmt 0 view .LVU3912 + 12912 0100 CA68 ldr r2, [r1, #12] + 12913 0102 42F00202 orr r2, r2, #2 + 12914 0106 CA60 str r2, [r1, #12] +2239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12915 .loc 1 2239 7 is_stmt 1 view .LVU3913 +2268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12916 .loc 1 2268 3 view .LVU3914 + 12917 .L998: +2271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12918 .loc 1 2271 5 view .LVU3915 + ARM GAS /tmp/ccPLZXyC.s page 423 + + + 12919 0108 0122 movs r2, #1 + 12920 010a 1946 mov r1, r3 + 12921 010c 2068 ldr r0, [r4] + 12922 .LVL988: +2271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 12923 .loc 1 2271 5 is_stmt 0 view .LVU3916 + 12924 010e FFF7FEFF bl TIM_CCxChannelCmd + 12925 .LVL989: +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12926 .loc 1 2274 5 is_stmt 1 view .LVU3917 +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12927 .loc 1 2274 9 is_stmt 0 view .LVU3918 + 12928 0112 2368 ldr r3, [r4] +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12929 .loc 1 2274 8 view .LVU3919 + 12930 0114 244A ldr r2, .L1017 + 12931 0116 B3F1804F cmp r3, #1073741824 + 12932 011a 18BF it ne + 12933 011c 9342 cmpne r3, r2 + 12934 011e 2FD0 beq .L999 +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12935 .loc 1 2274 9 discriminator 1 view .LVU3920 + 12936 0120 A2F57C42 sub r2, r2, #64512 + 12937 0124 9342 cmp r3, r2 + 12938 0126 2BD0 beq .L999 +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12939 .loc 1 2274 9 discriminator 2 view .LVU3921 + 12940 0128 02F58062 add r2, r2, #1024 + 12941 012c 9342 cmp r3, r2 + 12942 012e 27D0 beq .L999 +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12943 .loc 1 2274 9 discriminator 3 view .LVU3922 + 12944 0130 02F58062 add r2, r2, #1024 + 12945 0134 9342 cmp r3, r2 + 12946 0136 23D0 beq .L999 +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12947 .loc 1 2274 9 discriminator 4 view .LVU3923 + 12948 0138 02F57842 add r2, r2, #63488 + 12949 013c 9342 cmp r3, r2 + 12950 013e 1FD0 beq .L999 +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12951 .loc 1 2274 9 discriminator 5 view .LVU3924 + 12952 0140 02F57052 add r2, r2, #15360 + 12953 0144 9342 cmp r3, r2 + 12954 0146 1BD0 beq .L999 +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12955 .loc 1 2274 9 discriminator 6 view .LVU3925 + 12956 0148 A2F59432 sub r2, r2, #75776 + 12957 014c 9342 cmp r3, r2 + 12958 014e 17D0 beq .L999 +2284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12959 .loc 1 2284 7 is_stmt 1 view .LVU3926 + 12960 0150 1A68 ldr r2, [r3] + 12961 0152 42F00102 orr r2, r2, #1 + 12962 0156 1A60 str r2, [r3] + 12963 0158 0020 movs r0, #0 + 12964 015a 22E0 b .L982 + ARM GAS /tmp/ccPLZXyC.s page 424 + + + 12965 .LVL990: + 12966 .L996: +2245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12967 .loc 1 2245 7 view .LVU3927 + 12968 015c 2168 ldr r1, [r4] + 12969 .LVL991: +2245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12970 .loc 1 2245 7 is_stmt 0 view .LVU3928 + 12971 015e CA68 ldr r2, [r1, #12] + 12972 0160 42F00402 orr r2, r2, #4 + 12973 0164 CA60 str r2, [r1, #12] +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12974 .loc 1 2246 7 is_stmt 1 view .LVU3929 +2268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12975 .loc 1 2268 3 view .LVU3930 + 12976 0166 CFE7 b .L998 + 12977 .LVL992: + 12978 .L995: +2252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12979 .loc 1 2252 7 view .LVU3931 + 12980 0168 2168 ldr r1, [r4] + 12981 .LVL993: +2252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12982 .loc 1 2252 7 is_stmt 0 view .LVU3932 + 12983 016a CA68 ldr r2, [r1, #12] + 12984 016c 42F00802 orr r2, r2, #8 + 12985 0170 CA60 str r2, [r1, #12] +2253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12986 .loc 1 2253 7 is_stmt 1 view .LVU3933 +2268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12987 .loc 1 2268 3 view .LVU3934 + 12988 0172 C9E7 b .L998 + 12989 .LVL994: + 12990 .L993: +2259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12991 .loc 1 2259 7 view .LVU3935 + 12992 0174 2168 ldr r1, [r4] + 12993 .LVL995: +2259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 12994 .loc 1 2259 7 is_stmt 0 view .LVU3936 + 12995 0176 CA68 ldr r2, [r1, #12] + 12996 0178 42F01002 orr r2, r2, #16 + 12997 017c CA60 str r2, [r1, #12] +2260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 12998 .loc 1 2260 7 is_stmt 1 view .LVU3937 +2268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 12999 .loc 1 2268 3 view .LVU3938 + 13000 017e C3E7 b .L998 + 13001 .LVL996: + 13002 .L999: +2276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 13003 .loc 1 2276 7 view .LVU3939 +2276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 13004 .loc 1 2276 31 is_stmt 0 view .LVU3940 + 13005 0180 9968 ldr r1, [r3, #8] +2276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 13006 .loc 1 2276 15 view .LVU3941 + ARM GAS /tmp/ccPLZXyC.s page 425 + + + 13007 0182 0A4A ldr r2, .L1017+4 + 13008 0184 0A40 ands r2, r2, r1 + 13009 .LVL997: +2277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13010 .loc 1 2277 7 is_stmt 1 view .LVU3942 +2277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13011 .loc 1 2277 10 is_stmt 0 view .LVU3943 + 13012 0186 062A cmp r2, #6 + 13013 0188 18BF it ne + 13014 018a B2F5803F cmpne r2, #65536 + 13015 018e 09D0 beq .L1003 +2279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13016 .loc 1 2279 9 is_stmt 1 view .LVU3944 + 13017 0190 1A68 ldr r2, [r3] + 13018 .LVL998: +2279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13019 .loc 1 2279 9 is_stmt 0 view .LVU3945 + 13020 0192 42F00102 orr r2, r2, #1 + 13021 0196 1A60 str r2, [r3] + 13022 0198 0020 movs r0, #0 + 13023 019a 02E0 b .L982 + 13024 .LVL999: + 13025 .L1001: +2226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13026 .loc 1 2226 12 view .LVU3946 + 13027 019c 0120 movs r0, #1 + 13028 .LVL1000: +2226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13029 .loc 1 2226 12 view .LVU3947 + 13030 019e 00E0 b .L982 + 13031 .LVL1001: + 13032 .L1002: +2233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13033 .loc 1 2233 3 view .LVU3948 + 13034 01a0 0120 movs r0, #1 + 13035 .LVL1002: + 13036 .L982: +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13037 .loc 1 2290 1 view .LVU3949 + 13038 01a2 10BD pop {r4, pc} + 13039 .LVL1003: + 13040 .L1003: +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13041 .loc 1 2290 1 view .LVU3950 + 13042 01a4 0020 movs r0, #0 + 13043 01a6 FCE7 b .L982 + 13044 .L1018: + 13045 .align 2 + 13046 .L1017: + 13047 01a8 00000140 .word 1073807360 + 13048 01ac 07000100 .word 65543 + 13049 .cfi_endproc + 13050 .LFE177: + 13052 .section .text.HAL_TIM_IC_Stop_IT,"ax",%progbits + 13053 .align 1 + 13054 .global HAL_TIM_IC_Stop_IT + 13055 .syntax unified + ARM GAS /tmp/ccPLZXyC.s page 426 + + + 13056 .thumb + 13057 .thumb_func + 13058 .fpu fpv5-d16 + 13060 HAL_TIM_IC_Stop_IT: + 13061 .LVL1004: + 13062 .LFB178: +2304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 13063 .loc 1 2304 1 is_stmt 1 view -0 + 13064 .cfi_startproc + 13065 @ args = 0, pretend = 0, frame = 0 + 13066 @ frame_needed = 0, uses_anonymous_args = 0 +2304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 13067 .loc 1 2304 1 is_stmt 0 view .LVU3952 + 13068 0000 38B5 push {r3, r4, r5, lr} + 13069 .LCFI101: + 13070 .cfi_def_cfa_offset 16 + 13071 .cfi_offset 3, -16 + 13072 .cfi_offset 4, -12 + 13073 .cfi_offset 5, -8 + 13074 .cfi_offset 14, -4 + 13075 0002 0546 mov r5, r0 + 13076 0004 0C46 mov r4, r1 +2305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13077 .loc 1 2305 3 is_stmt 1 view .LVU3953 + 13078 .LVL1005: +2308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13079 .loc 1 2308 3 view .LVU3954 +2310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13080 .loc 1 2310 3 view .LVU3955 + 13081 0006 0C29 cmp r1, #12 + 13082 0008 6CD8 bhi .L1037 + 13083 000a DFE801F0 tbb [pc, r1] + 13084 .L1022: + 13085 000e 07 .byte (.L1025-.L1022)/2 + 13086 000f 6B .byte (.L1037-.L1022)/2 + 13087 0010 6B .byte (.L1037-.L1022)/2 + 13088 0011 6B .byte (.L1037-.L1022)/2 + 13089 0012 2A .byte (.L1024-.L1022)/2 + 13090 0013 6B .byte (.L1037-.L1022)/2 + 13091 0014 6B .byte (.L1037-.L1022)/2 + 13092 0015 6B .byte (.L1037-.L1022)/2 + 13093 0016 30 .byte (.L1023-.L1022)/2 + 13094 0017 6B .byte (.L1037-.L1022)/2 + 13095 0018 6B .byte (.L1037-.L1022)/2 + 13096 0019 6B .byte (.L1037-.L1022)/2 + 13097 001a 36 .byte (.L1021-.L1022)/2 + 13098 001b 00 .p2align 1 + 13099 .L1025: +2315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13100 .loc 1 2315 7 view .LVU3956 + 13101 001c 0268 ldr r2, [r0] + 13102 001e D368 ldr r3, [r2, #12] + 13103 0020 23F00203 bic r3, r3, #2 + 13104 0024 D360 str r3, [r2, #12] +2316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13105 .loc 1 2316 7 view .LVU3957 +2345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 427 + + + 13106 .loc 1 2345 3 view .LVU3958 + 13107 .L1026: +2348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13108 .loc 1 2348 5 view .LVU3959 + 13109 0026 0022 movs r2, #0 + 13110 0028 2146 mov r1, r4 + 13111 .LVL1006: +2348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13112 .loc 1 2348 5 is_stmt 0 view .LVU3960 + 13113 002a 2868 ldr r0, [r5] + 13114 .LVL1007: +2348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13115 .loc 1 2348 5 view .LVU3961 + 13116 002c FFF7FEFF bl TIM_CCxChannelCmd + 13117 .LVL1008: +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13118 .loc 1 2351 5 is_stmt 1 view .LVU3962 +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13119 .loc 1 2351 5 view .LVU3963 + 13120 0030 2B68 ldr r3, [r5] + 13121 0032 196A ldr r1, [r3, #32] + 13122 0034 41F21112 movw r2, #4369 + 13123 0038 1142 tst r1, r2 + 13124 003a 08D1 bne .L1027 +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13125 .loc 1 2351 5 discriminator 1 view .LVU3964 + 13126 003c 196A ldr r1, [r3, #32] + 13127 003e 40F24442 movw r2, #1092 + 13128 0042 1142 tst r1, r2 + 13129 0044 03D1 bne .L1027 +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13130 .loc 1 2351 5 discriminator 3 view .LVU3965 + 13131 0046 1A68 ldr r2, [r3] + 13132 0048 22F00102 bic r2, r2, #1 + 13133 004c 1A60 str r2, [r3] + 13134 .L1027: +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13135 .loc 1 2351 5 discriminator 5 view .LVU3966 +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13136 .loc 1 2354 5 discriminator 5 view .LVU3967 + 13137 004e D4B9 cbnz r4, .L1028 +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13138 .loc 1 2354 5 is_stmt 0 discriminator 1 view .LVU3968 + 13139 0050 0123 movs r3, #1 + 13140 0052 85F83E30 strb r3, [r5, #62] + 13141 .L1029: +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13142 .loc 1 2355 5 is_stmt 1 view .LVU3969 + 13143 0056 94BB cbnz r4, .L1034 +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13144 .loc 1 2355 5 is_stmt 0 discriminator 1 view .LVU3970 + 13145 0058 0123 movs r3, #1 + 13146 005a 85F84430 strb r3, [r5, #68] + 13147 005e 0020 movs r0, #0 + 13148 0060 41E0 b .L1020 + 13149 .LVL1009: + 13150 .L1024: + ARM GAS /tmp/ccPLZXyC.s page 428 + + +2322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13151 .loc 1 2322 7 is_stmt 1 view .LVU3971 + 13152 0062 0268 ldr r2, [r0] + 13153 0064 D368 ldr r3, [r2, #12] + 13154 0066 23F00403 bic r3, r3, #4 + 13155 006a D360 str r3, [r2, #12] +2323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13156 .loc 1 2323 7 view .LVU3972 +2345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13157 .loc 1 2345 3 view .LVU3973 + 13158 006c DBE7 b .L1026 + 13159 .L1023: +2329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13160 .loc 1 2329 7 view .LVU3974 + 13161 006e 0268 ldr r2, [r0] + 13162 0070 D368 ldr r3, [r2, #12] + 13163 0072 23F00803 bic r3, r3, #8 + 13164 0076 D360 str r3, [r2, #12] +2330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13165 .loc 1 2330 7 view .LVU3975 +2345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13166 .loc 1 2345 3 view .LVU3976 + 13167 0078 D5E7 b .L1026 + 13168 .L1021: +2336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13169 .loc 1 2336 7 view .LVU3977 + 13170 007a 0268 ldr r2, [r0] + 13171 007c D368 ldr r3, [r2, #12] + 13172 007e 23F01003 bic r3, r3, #16 + 13173 0082 D360 str r3, [r2, #12] +2337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13174 .loc 1 2337 7 view .LVU3978 +2345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13175 .loc 1 2345 3 view .LVU3979 + 13176 0084 CFE7 b .L1026 + 13177 .LVL1010: + 13178 .L1028: +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13179 .loc 1 2354 5 is_stmt 0 discriminator 2 view .LVU3980 + 13180 0086 042C cmp r4, #4 + 13181 0088 09D0 beq .L1039 +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13182 .loc 1 2354 5 discriminator 4 view .LVU3981 + 13183 008a 082C cmp r4, #8 + 13184 008c 0BD0 beq .L1040 +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13185 .loc 1 2354 5 discriminator 7 view .LVU3982 + 13186 008e 0C2C cmp r4, #12 + 13187 0090 0DD0 beq .L1041 +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13188 .loc 1 2354 5 discriminator 10 view .LVU3983 + 13189 0092 102C cmp r4, #16 + 13190 0094 0FD0 beq .L1042 +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13191 .loc 1 2354 5 discriminator 13 view .LVU3984 + 13192 0096 0123 movs r3, #1 + 13193 0098 85F84330 strb r3, [r5, #67] + ARM GAS /tmp/ccPLZXyC.s page 429 + + + 13194 009c DBE7 b .L1029 + 13195 .L1039: +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13196 .loc 1 2354 5 discriminator 3 view .LVU3985 + 13197 009e 0123 movs r3, #1 + 13198 00a0 85F83F30 strb r3, [r5, #63] + 13199 00a4 D7E7 b .L1029 + 13200 .L1040: +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13201 .loc 1 2354 5 discriminator 6 view .LVU3986 + 13202 00a6 0123 movs r3, #1 + 13203 00a8 85F84030 strb r3, [r5, #64] + 13204 00ac D3E7 b .L1029 + 13205 .L1041: +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13206 .loc 1 2354 5 discriminator 9 view .LVU3987 + 13207 00ae 0123 movs r3, #1 + 13208 00b0 85F84130 strb r3, [r5, #65] + 13209 00b4 CFE7 b .L1029 + 13210 .L1042: +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13211 .loc 1 2354 5 discriminator 12 view .LVU3988 + 13212 00b6 0123 movs r3, #1 + 13213 00b8 85F84230 strb r3, [r5, #66] + 13214 00bc CBE7 b .L1029 + 13215 .L1034: +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13216 .loc 1 2355 5 discriminator 2 view .LVU3989 + 13217 00be 042C cmp r4, #4 + 13218 00c0 06D0 beq .L1043 +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13219 .loc 1 2355 5 discriminator 4 view .LVU3990 + 13220 00c2 082C cmp r4, #8 + 13221 00c4 09D0 beq .L1044 +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13222 .loc 1 2355 5 discriminator 7 view .LVU3991 + 13223 00c6 0123 movs r3, #1 + 13224 00c8 85F84730 strb r3, [r5, #71] + 13225 00cc 0020 movs r0, #0 + 13226 00ce 0AE0 b .L1020 + 13227 .L1043: +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13228 .loc 1 2355 5 discriminator 3 view .LVU3992 + 13229 00d0 0123 movs r3, #1 + 13230 00d2 85F84530 strb r3, [r5, #69] + 13231 00d6 0020 movs r0, #0 + 13232 00d8 05E0 b .L1020 + 13233 .L1044: +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13234 .loc 1 2355 5 discriminator 6 view .LVU3993 + 13235 00da 0123 movs r3, #1 + 13236 00dc 85F84630 strb r3, [r5, #70] + 13237 00e0 0020 movs r0, #0 + 13238 00e2 00E0 b .L1020 + 13239 .LVL1011: + 13240 .L1037: +2310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + ARM GAS /tmp/ccPLZXyC.s page 430 + + + 13241 .loc 1 2310 3 view .LVU3994 + 13242 00e4 0120 movs r0, #1 + 13243 .LVL1012: + 13244 .L1020: +2359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13245 .loc 1 2359 3 is_stmt 1 view .LVU3995 +2360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13246 .loc 1 2360 1 is_stmt 0 view .LVU3996 + 13247 00e6 38BD pop {r3, r4, r5, pc} +2360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13248 .loc 1 2360 1 view .LVU3997 + 13249 .cfi_endproc + 13250 .LFE178: + 13252 .section .text.HAL_TIM_IC_Start_DMA,"ax",%progbits + 13253 .align 1 + 13254 .global HAL_TIM_IC_Start_DMA + 13255 .syntax unified + 13256 .thumb + 13257 .thumb_func + 13258 .fpu fpv5-d16 + 13260 HAL_TIM_IC_Start_DMA: + 13261 .LVL1013: + 13262 .LFB179: +2376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 13263 .loc 1 2376 1 is_stmt 1 view -0 + 13264 .cfi_startproc + 13265 @ args = 0, pretend = 0, frame = 0 + 13266 @ frame_needed = 0, uses_anonymous_args = 0 +2376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 13267 .loc 1 2376 1 is_stmt 0 view .LVU3999 + 13268 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 13269 .LCFI102: + 13270 .cfi_def_cfa_offset 24 + 13271 .cfi_offset 3, -24 + 13272 .cfi_offset 4, -20 + 13273 .cfi_offset 5, -16 + 13274 .cfi_offset 6, -12 + 13275 .cfi_offset 7, -8 + 13276 .cfi_offset 14, -4 + 13277 0002 0446 mov r4, r0 + 13278 0004 1646 mov r6, r2 + 13279 0006 1F46 mov r7, r3 +2377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** uint32_t tmpsmcr; + 13280 .loc 1 2377 3 is_stmt 1 view .LVU4000 + 13281 .LVL1014: +2378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13282 .loc 1 2378 3 view .LVU4001 +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13283 .loc 1 2380 3 view .LVU4002 +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13284 .loc 1 2380 47 is_stmt 0 view .LVU4003 + 13285 0008 0D46 mov r5, r1 + 13286 000a 0029 cmp r1, #0 + 13287 000c 37D1 bne .L1046 +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13288 .loc 1 2380 47 discriminator 1 view .LVU4004 + 13289 000e 90F83E30 ldrb r3, [r0, #62] @ zero_extendqisi2 + ARM GAS /tmp/ccPLZXyC.s page 431 + + + 13290 .LVL1015: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13291 .loc 1 2380 47 discriminator 1 view .LVU4005 + 13292 0012 DBB2 uxtb r3, r3 + 13293 .L1047: + 13294 .LVL1016: +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13295 .loc 1 2381 3 is_stmt 1 discriminator 20 view .LVU4006 +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13296 .loc 1 2381 61 is_stmt 0 discriminator 20 view .LVU4007 + 13297 0014 002D cmp r5, #0 + 13298 0016 4ED1 bne .L1052 +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13299 .loc 1 2381 61 discriminator 1 view .LVU4008 + 13300 0018 94F84410 ldrb r1, [r4, #68] @ zero_extendqisi2 + 13301 .LVL1017: +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13302 .loc 1 2381 61 discriminator 1 view .LVU4009 + 13303 001c C9B2 uxtb r1, r1 + 13304 .L1053: + 13305 .LVL1018: +2384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance)); + 13306 .loc 1 2384 3 is_stmt 1 discriminator 12 view .LVU4010 +2385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13307 .loc 1 2385 3 discriminator 12 view .LVU4011 +2388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_state == HAL_TIM_CHANNEL_STATE_BUSY)) + 13308 .loc 1 2388 3 discriminator 12 view .LVU4012 +2388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_state == HAL_TIM_CHANNEL_STATE_BUSY)) + 13309 .loc 1 2388 6 is_stmt 0 discriminator 12 view .LVU4013 + 13310 001e 0229 cmp r1, #2 + 13311 0020 18BF it ne + 13312 0022 022B cmpne r3, #2 + 13313 0024 00F01681 beq .L1075 +2393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_state == HAL_TIM_CHANNEL_STATE_READY)) + 13314 .loc 1 2393 8 is_stmt 1 view .LVU4014 +2393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_state == HAL_TIM_CHANNEL_STATE_READY)) + 13315 .loc 1 2393 11 is_stmt 0 view .LVU4015 + 13316 0028 012B cmp r3, #1 + 13317 002a 08BF it eq + 13318 002c 0129 cmpeq r1, #1 + 13319 002e 40F01381 bne .L1076 +2396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13320 .loc 1 2396 5 is_stmt 1 view .LVU4016 +2396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13321 .loc 1 2396 8 is_stmt 0 view .LVU4017 + 13322 0032 002F cmp r7, #0 + 13323 0034 18BF it ne + 13324 0036 002E cmpne r6, #0 + 13325 0038 00F01081 beq .L1077 +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13326 .loc 1 2402 7 is_stmt 1 view .LVU4018 + 13327 003c 002D cmp r5, #0 + 13328 003e 4AD1 bne .L1057 +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13329 .loc 1 2402 7 is_stmt 0 discriminator 1 view .LVU4019 + 13330 0040 0223 movs r3, #2 + 13331 .LVL1019: + ARM GAS /tmp/ccPLZXyC.s page 432 + + +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13332 .loc 1 2402 7 discriminator 1 view .LVU4020 + 13333 0042 84F83E30 strb r3, [r4, #62] + 13334 .L1058: +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13335 .loc 1 2403 7 is_stmt 1 view .LVU4021 + 13336 0046 002D cmp r5, #0 + 13337 0048 61D1 bne .L1063 +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13338 .loc 1 2403 7 is_stmt 0 discriminator 1 view .LVU4022 + 13339 004a 0223 movs r3, #2 + 13340 004c 84F84430 strb r3, [r4, #68] + 13341 .L1064: +2412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13342 .loc 1 2412 3 is_stmt 1 view .LVU4023 + 13343 0050 0122 movs r2, #1 + 13344 .LVL1020: +2412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13345 .loc 1 2412 3 is_stmt 0 view .LVU4024 + 13346 0052 2946 mov r1, r5 + 13347 .LVL1021: +2412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13348 .loc 1 2412 3 view .LVU4025 + 13349 0054 2068 ldr r0, [r4] + 13350 .LVL1022: +2412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13351 .loc 1 2412 3 view .LVU4026 + 13352 0056 FFF7FEFF bl TIM_CCxChannelCmd + 13353 .LVL1023: +2414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13354 .loc 1 2414 3 is_stmt 1 view .LVU4027 + 13355 005a 0C2D cmp r5, #12 + 13356 005c 00F2C880 bhi .L1078 + 13357 0060 DFE815F0 tbh [pc, r5, lsl #1] + 13358 .L1069: + 13359 0064 6500 .2byte (.L1072-.L1069)/2 + 13360 0066 C600 .2byte (.L1078-.L1069)/2 + 13361 0068 C600 .2byte (.L1078-.L1069)/2 + 13362 006a C600 .2byte (.L1078-.L1069)/2 + 13363 006c 7E00 .2byte (.L1071-.L1069)/2 + 13364 006e C600 .2byte (.L1078-.L1069)/2 + 13365 0070 C600 .2byte (.L1078-.L1069)/2 + 13366 0072 C600 .2byte (.L1078-.L1069)/2 + 13367 0074 9600 .2byte (.L1070-.L1069)/2 + 13368 0076 C600 .2byte (.L1078-.L1069)/2 + 13369 0078 C600 .2byte (.L1078-.L1069)/2 + 13370 007a C600 .2byte (.L1078-.L1069)/2 + 13371 007c AE00 .2byte (.L1068-.L1069)/2 + 13372 .LVL1024: + 13373 .p2align 1 + 13374 .L1046: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13375 .loc 1 2380 47 is_stmt 0 discriminator 2 view .LVU4028 + 13376 007e 0429 cmp r1, #4 + 13377 0080 09D0 beq .L1084 +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13378 .loc 1 2380 47 discriminator 5 view .LVU4029 + ARM GAS /tmp/ccPLZXyC.s page 433 + + + 13379 0082 0829 cmp r1, #8 + 13380 0084 0BD0 beq .L1085 +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13381 .loc 1 2380 47 discriminator 8 view .LVU4030 + 13382 0086 0C29 cmp r1, #12 + 13383 0088 0DD0 beq .L1086 +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13384 .loc 1 2380 47 discriminator 11 view .LVU4031 + 13385 008a 1029 cmp r1, #16 + 13386 008c 0FD0 beq .L1087 +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13387 .loc 1 2380 47 discriminator 14 view .LVU4032 + 13388 008e 90F84330 ldrb r3, [r0, #67] @ zero_extendqisi2 + 13389 .LVL1025: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13390 .loc 1 2380 47 discriminator 14 view .LVU4033 + 13391 0092 DBB2 uxtb r3, r3 + 13392 0094 BEE7 b .L1047 + 13393 .LVL1026: + 13394 .L1084: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13395 .loc 1 2380 47 discriminator 4 view .LVU4034 + 13396 0096 90F83F30 ldrb r3, [r0, #63] @ zero_extendqisi2 + 13397 .LVL1027: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13398 .loc 1 2380 47 discriminator 4 view .LVU4035 + 13399 009a DBB2 uxtb r3, r3 + 13400 009c BAE7 b .L1047 + 13401 .LVL1028: + 13402 .L1085: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13403 .loc 1 2380 47 discriminator 7 view .LVU4036 + 13404 009e 90F84030 ldrb r3, [r0, #64] @ zero_extendqisi2 + 13405 .LVL1029: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13406 .loc 1 2380 47 discriminator 7 view .LVU4037 + 13407 00a2 DBB2 uxtb r3, r3 + 13408 00a4 B6E7 b .L1047 + 13409 .LVL1030: + 13410 .L1086: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13411 .loc 1 2380 47 discriminator 10 view .LVU4038 + 13412 00a6 90F84130 ldrb r3, [r0, #65] @ zero_extendqisi2 + 13413 .LVL1031: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13414 .loc 1 2380 47 discriminator 10 view .LVU4039 + 13415 00aa DBB2 uxtb r3, r3 + 13416 00ac B2E7 b .L1047 + 13417 .LVL1032: + 13418 .L1087: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13419 .loc 1 2380 47 discriminator 13 view .LVU4040 + 13420 00ae 90F84230 ldrb r3, [r0, #66] @ zero_extendqisi2 + 13421 .LVL1033: +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_state = TIM_CHANNEL_N_STATE_GET(htim, Channel); + 13422 .loc 1 2380 47 discriminator 13 view .LVU4041 + 13423 00b2 DBB2 uxtb r3, r3 + ARM GAS /tmp/ccPLZXyC.s page 434 + + + 13424 00b4 AEE7 b .L1047 + 13425 .LVL1034: + 13426 .L1052: +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13427 .loc 1 2381 61 discriminator 2 view .LVU4042 + 13428 00b6 042D cmp r5, #4 + 13429 00b8 05D0 beq .L1088 +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13430 .loc 1 2381 61 discriminator 5 view .LVU4043 + 13431 00ba 082D cmp r5, #8 + 13432 00bc 07D0 beq .L1089 +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13433 .loc 1 2381 61 discriminator 8 view .LVU4044 + 13434 00be 94F84710 ldrb r1, [r4, #71] @ zero_extendqisi2 + 13435 .LVL1035: +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13436 .loc 1 2381 61 discriminator 8 view .LVU4045 + 13437 00c2 C9B2 uxtb r1, r1 + 13438 00c4 ABE7 b .L1053 + 13439 .LVL1036: + 13440 .L1088: +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13441 .loc 1 2381 61 discriminator 4 view .LVU4046 + 13442 00c6 94F84510 ldrb r1, [r4, #69] @ zero_extendqisi2 + 13443 .LVL1037: +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13444 .loc 1 2381 61 discriminator 4 view .LVU4047 + 13445 00ca C9B2 uxtb r1, r1 + 13446 00cc A7E7 b .L1053 + 13447 .LVL1038: + 13448 .L1089: +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13449 .loc 1 2381 61 discriminator 7 view .LVU4048 + 13450 00ce 94F84610 ldrb r1, [r4, #70] @ zero_extendqisi2 + 13451 .LVL1039: +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13452 .loc 1 2381 61 discriminator 7 view .LVU4049 + 13453 00d2 C9B2 uxtb r1, r1 + 13454 00d4 A3E7 b .L1053 + 13455 .LVL1040: + 13456 .L1057: +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13457 .loc 1 2402 7 discriminator 2 view .LVU4050 + 13458 00d6 042D cmp r5, #4 + 13459 00d8 09D0 beq .L1090 +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13460 .loc 1 2402 7 discriminator 4 view .LVU4051 + 13461 00da 082D cmp r5, #8 + 13462 00dc 0BD0 beq .L1091 +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13463 .loc 1 2402 7 discriminator 7 view .LVU4052 + 13464 00de 0C2D cmp r5, #12 + 13465 00e0 0DD0 beq .L1092 +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13466 .loc 1 2402 7 discriminator 10 view .LVU4053 + 13467 00e2 102D cmp r5, #16 + 13468 00e4 0FD0 beq .L1093 + ARM GAS /tmp/ccPLZXyC.s page 435 + + +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13469 .loc 1 2402 7 discriminator 13 view .LVU4054 + 13470 00e6 0223 movs r3, #2 + 13471 .LVL1041: +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13472 .loc 1 2402 7 discriminator 13 view .LVU4055 + 13473 00e8 84F84330 strb r3, [r4, #67] + 13474 00ec ABE7 b .L1058 + 13475 .LVL1042: + 13476 .L1090: +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13477 .loc 1 2402 7 discriminator 3 view .LVU4056 + 13478 00ee 0223 movs r3, #2 + 13479 .LVL1043: +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13480 .loc 1 2402 7 discriminator 3 view .LVU4057 + 13481 00f0 84F83F30 strb r3, [r4, #63] + 13482 00f4 A7E7 b .L1058 + 13483 .LVL1044: + 13484 .L1091: +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13485 .loc 1 2402 7 discriminator 6 view .LVU4058 + 13486 00f6 0223 movs r3, #2 + 13487 .LVL1045: +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13488 .loc 1 2402 7 discriminator 6 view .LVU4059 + 13489 00f8 84F84030 strb r3, [r4, #64] + 13490 00fc A3E7 b .L1058 + 13491 .LVL1046: + 13492 .L1092: +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13493 .loc 1 2402 7 discriminator 9 view .LVU4060 + 13494 00fe 0223 movs r3, #2 + 13495 .LVL1047: +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13496 .loc 1 2402 7 discriminator 9 view .LVU4061 + 13497 0100 84F84130 strb r3, [r4, #65] + 13498 0104 9FE7 b .L1058 + 13499 .LVL1048: + 13500 .L1093: +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13501 .loc 1 2402 7 discriminator 12 view .LVU4062 + 13502 0106 0223 movs r3, #2 + 13503 .LVL1049: +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 13504 .loc 1 2402 7 discriminator 12 view .LVU4063 + 13505 0108 84F84230 strb r3, [r4, #66] + 13506 010c 9BE7 b .L1058 + 13507 .L1063: +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13508 .loc 1 2403 7 discriminator 2 view .LVU4064 + 13509 010e 042D cmp r5, #4 + 13510 0110 05D0 beq .L1094 +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13511 .loc 1 2403 7 discriminator 4 view .LVU4065 + 13512 0112 082D cmp r5, #8 + 13513 0114 07D0 beq .L1095 + ARM GAS /tmp/ccPLZXyC.s page 436 + + +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13514 .loc 1 2403 7 discriminator 7 view .LVU4066 + 13515 0116 0223 movs r3, #2 + 13516 0118 84F84730 strb r3, [r4, #71] + 13517 011c 98E7 b .L1064 + 13518 .L1094: +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13519 .loc 1 2403 7 discriminator 3 view .LVU4067 + 13520 011e 0223 movs r3, #2 + 13521 0120 84F84530 strb r3, [r4, #69] + 13522 0124 94E7 b .L1064 + 13523 .L1095: +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13524 .loc 1 2403 7 discriminator 6 view .LVU4068 + 13525 0126 0223 movs r3, #2 + 13526 0128 84F84630 strb r3, [r4, #70] + 13527 012c 90E7 b .L1064 + 13528 .LVL1050: + 13529 .L1072: +2419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13530 .loc 1 2419 7 is_stmt 1 view .LVU4069 +2419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13531 .loc 1 2419 17 is_stmt 0 view .LVU4070 + 13532 012e 636A ldr r3, [r4, #36] +2419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13533 .loc 1 2419 52 view .LVU4071 + 13534 0130 4F4A ldr r2, .L1096 + 13535 0132 DA63 str r2, [r3, #60] +2420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13536 .loc 1 2420 7 is_stmt 1 view .LVU4072 +2420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13537 .loc 1 2420 17 is_stmt 0 view .LVU4073 + 13538 0134 636A ldr r3, [r4, #36] +2420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13539 .loc 1 2420 56 view .LVU4074 + 13540 0136 4F4A ldr r2, .L1096+4 + 13541 0138 1A64 str r2, [r3, #64] +2423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13542 .loc 1 2423 7 is_stmt 1 view .LVU4075 +2423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13543 .loc 1 2423 17 is_stmt 0 view .LVU4076 + 13544 013a 636A ldr r3, [r4, #36] +2423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13545 .loc 1 2423 53 view .LVU4077 + 13546 013c 4E4A ldr r2, .L1096+8 + 13547 013e DA64 str r2, [r3, #76] +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13548 .loc 1 2426 7 is_stmt 1 view .LVU4078 +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13549 .loc 1 2426 71 is_stmt 0 view .LVU4079 + 13550 0140 2168 ldr r1, [r4] +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13551 .loc 1 2426 11 view .LVU4080 + 13552 0142 3B46 mov r3, r7 + 13553 0144 3246 mov r2, r6 + 13554 0146 3431 adds r1, r1, #52 + 13555 0148 606A ldr r0, [r4, #36] + ARM GAS /tmp/ccPLZXyC.s page 437 + + + 13556 014a FFF7FEFF bl HAL_DMA_Start_IT + 13557 .LVL1051: +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13558 .loc 1 2426 10 view .LVU4081 + 13559 014e 0028 cmp r0, #0 + 13560 0150 40F08680 bne .L1079 +2433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13561 .loc 1 2433 7 is_stmt 1 view .LVU4082 + 13562 0154 2268 ldr r2, [r4] + 13563 0156 D368 ldr r3, [r2, #12] + 13564 0158 43F40073 orr r3, r3, #512 + 13565 015c D360 str r3, [r2, #12] +2434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13566 .loc 1 2434 7 view .LVU4083 + 13567 015e 48E0 b .L1067 + 13568 .L1071: +2440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13569 .loc 1 2440 7 view .LVU4084 +2440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13570 .loc 1 2440 17 is_stmt 0 view .LVU4085 + 13571 0160 A36A ldr r3, [r4, #40] +2440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13572 .loc 1 2440 52 view .LVU4086 + 13573 0162 434A ldr r2, .L1096 + 13574 0164 DA63 str r2, [r3, #60] +2441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13575 .loc 1 2441 7 is_stmt 1 view .LVU4087 +2441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13576 .loc 1 2441 17 is_stmt 0 view .LVU4088 + 13577 0166 A36A ldr r3, [r4, #40] +2441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13578 .loc 1 2441 56 view .LVU4089 + 13579 0168 424A ldr r2, .L1096+4 + 13580 016a 1A64 str r2, [r3, #64] +2444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13581 .loc 1 2444 7 is_stmt 1 view .LVU4090 +2444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13582 .loc 1 2444 17 is_stmt 0 view .LVU4091 + 13583 016c A36A ldr r3, [r4, #40] +2444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13584 .loc 1 2444 53 view .LVU4092 + 13585 016e 424A ldr r2, .L1096+8 + 13586 0170 DA64 str r2, [r3, #76] +2447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13587 .loc 1 2447 7 is_stmt 1 view .LVU4093 +2447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13588 .loc 1 2447 71 is_stmt 0 view .LVU4094 + 13589 0172 2168 ldr r1, [r4] +2447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13590 .loc 1 2447 11 view .LVU4095 + 13591 0174 3B46 mov r3, r7 + 13592 0176 3246 mov r2, r6 + 13593 0178 3831 adds r1, r1, #56 + 13594 017a A06A ldr r0, [r4, #40] + 13595 017c FFF7FEFF bl HAL_DMA_Start_IT + 13596 .LVL1052: +2447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + ARM GAS /tmp/ccPLZXyC.s page 438 + + + 13597 .loc 1 2447 10 view .LVU4096 + 13598 0180 0028 cmp r0, #0 + 13599 0182 6FD1 bne .L1080 +2454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13600 .loc 1 2454 7 is_stmt 1 view .LVU4097 + 13601 0184 2268 ldr r2, [r4] + 13602 0186 D368 ldr r3, [r2, #12] + 13603 0188 43F48063 orr r3, r3, #1024 + 13604 018c D360 str r3, [r2, #12] +2455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13605 .loc 1 2455 7 view .LVU4098 + 13606 018e 30E0 b .L1067 + 13607 .L1070: +2461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13608 .loc 1 2461 7 view .LVU4099 +2461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13609 .loc 1 2461 17 is_stmt 0 view .LVU4100 + 13610 0190 E36A ldr r3, [r4, #44] +2461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13611 .loc 1 2461 52 view .LVU4101 + 13612 0192 374A ldr r2, .L1096 + 13613 0194 DA63 str r2, [r3, #60] +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13614 .loc 1 2462 7 is_stmt 1 view .LVU4102 +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13615 .loc 1 2462 17 is_stmt 0 view .LVU4103 + 13616 0196 E36A ldr r3, [r4, #44] +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13617 .loc 1 2462 56 view .LVU4104 + 13618 0198 364A ldr r2, .L1096+4 + 13619 019a 1A64 str r2, [r3, #64] +2465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13620 .loc 1 2465 7 is_stmt 1 view .LVU4105 +2465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13621 .loc 1 2465 17 is_stmt 0 view .LVU4106 + 13622 019c E36A ldr r3, [r4, #44] +2465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13623 .loc 1 2465 53 view .LVU4107 + 13624 019e 364A ldr r2, .L1096+8 + 13625 01a0 DA64 str r2, [r3, #76] +2468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13626 .loc 1 2468 7 is_stmt 1 view .LVU4108 +2468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13627 .loc 1 2468 71 is_stmt 0 view .LVU4109 + 13628 01a2 2168 ldr r1, [r4] +2468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13629 .loc 1 2468 11 view .LVU4110 + 13630 01a4 3B46 mov r3, r7 + 13631 01a6 3246 mov r2, r6 + 13632 01a8 3C31 adds r1, r1, #60 + 13633 01aa E06A ldr r0, [r4, #44] + 13634 01ac FFF7FEFF bl HAL_DMA_Start_IT + 13635 .LVL1053: +2468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13636 .loc 1 2468 10 view .LVU4111 + 13637 01b0 0028 cmp r0, #0 + 13638 01b2 59D1 bne .L1081 + ARM GAS /tmp/ccPLZXyC.s page 439 + + +2475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13639 .loc 1 2475 7 is_stmt 1 view .LVU4112 + 13640 01b4 2268 ldr r2, [r4] + 13641 01b6 D368 ldr r3, [r2, #12] + 13642 01b8 43F40063 orr r3, r3, #2048 + 13643 01bc D360 str r3, [r2, #12] +2476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13644 .loc 1 2476 7 view .LVU4113 + 13645 01be 18E0 b .L1067 + 13646 .L1068: +2482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13647 .loc 1 2482 7 view .LVU4114 +2482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13648 .loc 1 2482 17 is_stmt 0 view .LVU4115 + 13649 01c0 236B ldr r3, [r4, #48] +2482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC4]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 13650 .loc 1 2482 52 view .LVU4116 + 13651 01c2 2B4A ldr r2, .L1096 + 13652 01c4 DA63 str r2, [r3, #60] +2483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13653 .loc 1 2483 7 is_stmt 1 view .LVU4117 +2483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13654 .loc 1 2483 17 is_stmt 0 view .LVU4118 + 13655 01c6 236B ldr r3, [r4, #48] +2483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13656 .loc 1 2483 56 view .LVU4119 + 13657 01c8 2A4A ldr r2, .L1096+4 + 13658 01ca 1A64 str r2, [r3, #64] +2486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13659 .loc 1 2486 7 is_stmt 1 view .LVU4120 +2486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13660 .loc 1 2486 17 is_stmt 0 view .LVU4121 + 13661 01cc 236B ldr r3, [r4, #48] +2486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13662 .loc 1 2486 53 view .LVU4122 + 13663 01ce 2A4A ldr r2, .L1096+8 + 13664 01d0 DA64 str r2, [r3, #76] +2489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13665 .loc 1 2489 7 is_stmt 1 view .LVU4123 +2489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13666 .loc 1 2489 71 is_stmt 0 view .LVU4124 + 13667 01d2 2168 ldr r1, [r4] +2489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13668 .loc 1 2489 11 view .LVU4125 + 13669 01d4 3B46 mov r3, r7 + 13670 01d6 3246 mov r2, r6 + 13671 01d8 4031 adds r1, r1, #64 + 13672 01da 206B ldr r0, [r4, #48] + 13673 01dc FFF7FEFF bl HAL_DMA_Start_IT + 13674 .LVL1054: +2489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 13675 .loc 1 2489 10 view .LVU4126 + 13676 01e0 0028 cmp r0, #0 + 13677 01e2 43D1 bne .L1082 +2496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13678 .loc 1 2496 7 is_stmt 1 view .LVU4127 + 13679 01e4 2268 ldr r2, [r4] + ARM GAS /tmp/ccPLZXyC.s page 440 + + + 13680 01e6 D368 ldr r3, [r2, #12] + 13681 01e8 43F48053 orr r3, r3, #4096 + 13682 01ec D360 str r3, [r2, #12] +2497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13683 .loc 1 2497 7 view .LVU4128 + 13684 01ee 00E0 b .L1067 + 13685 .L1078: +2414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13686 .loc 1 2414 3 is_stmt 0 view .LVU4129 + 13687 01f0 0120 movs r0, #1 + 13688 .L1067: + 13689 .LVL1055: +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13690 .loc 1 2506 3 is_stmt 1 view .LVU4130 +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13691 .loc 1 2506 7 is_stmt 0 view .LVU4131 + 13692 01f2 2368 ldr r3, [r4] +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13693 .loc 1 2506 6 view .LVU4132 + 13694 01f4 214A ldr r2, .L1096+12 + 13695 01f6 B3F1804F cmp r3, #1073741824 + 13696 01fa 18BF it ne + 13697 01fc 9342 cmpne r3, r2 + 13698 01fe 1CD0 beq .L1073 +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13699 .loc 1 2506 7 discriminator 1 view .LVU4133 + 13700 0200 A2F57C42 sub r2, r2, #64512 + 13701 0204 9342 cmp r3, r2 + 13702 0206 18D0 beq .L1073 +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13703 .loc 1 2506 7 discriminator 2 view .LVU4134 + 13704 0208 02F58062 add r2, r2, #1024 + 13705 020c 9342 cmp r3, r2 + 13706 020e 14D0 beq .L1073 +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13707 .loc 1 2506 7 discriminator 3 view .LVU4135 + 13708 0210 02F58062 add r2, r2, #1024 + 13709 0214 9342 cmp r3, r2 + 13710 0216 10D0 beq .L1073 +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13711 .loc 1 2506 7 discriminator 4 view .LVU4136 + 13712 0218 02F57842 add r2, r2, #63488 + 13713 021c 9342 cmp r3, r2 + 13714 021e 0CD0 beq .L1073 +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13715 .loc 1 2506 7 discriminator 5 view .LVU4137 + 13716 0220 02F57052 add r2, r2, #15360 + 13717 0224 9342 cmp r3, r2 + 13718 0226 08D0 beq .L1073 +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13719 .loc 1 2506 7 discriminator 6 view .LVU4138 + 13720 0228 A2F59432 sub r2, r2, #75776 + 13721 022c 9342 cmp r3, r2 + 13722 022e 04D0 beq .L1073 +2516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13723 .loc 1 2516 5 is_stmt 1 view .LVU4139 + 13724 0230 1A68 ldr r2, [r3] + ARM GAS /tmp/ccPLZXyC.s page 441 + + + 13725 0232 42F00102 orr r2, r2, #1 + 13726 0236 1A60 str r2, [r3] + 13727 0238 0FE0 b .L1056 + 13728 .L1073: +2508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 13729 .loc 1 2508 5 view .LVU4140 +2508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 13730 .loc 1 2508 29 is_stmt 0 view .LVU4141 + 13731 023a 9968 ldr r1, [r3, #8] +2508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 13732 .loc 1 2508 13 view .LVU4142 + 13733 023c 104A ldr r2, .L1096+16 + 13734 023e 0A40 ands r2, r2, r1 + 13735 .LVL1056: +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13736 .loc 1 2509 5 is_stmt 1 view .LVU4143 +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13737 .loc 1 2509 8 is_stmt 0 view .LVU4144 + 13738 0240 062A cmp r2, #6 + 13739 0242 18BF it ne + 13740 0244 B2F5803F cmpne r2, #65536 + 13741 0248 07D0 beq .L1056 +2511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13742 .loc 1 2511 7 is_stmt 1 view .LVU4145 + 13743 024a 1A68 ldr r2, [r3] + 13744 .LVL1057: +2511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13745 .loc 1 2511 7 is_stmt 0 view .LVU4146 + 13746 024c 42F00102 orr r2, r2, #1 + 13747 0250 1A60 str r2, [r3] + 13748 0252 02E0 b .L1056 + 13749 .LVL1058: + 13750 .L1075: +2391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13751 .loc 1 2391 12 view .LVU4147 + 13752 0254 0220 movs r0, #2 + 13753 .LVL1059: +2391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13754 .loc 1 2391 12 view .LVU4148 + 13755 0256 00E0 b .L1056 + 13756 .LVL1060: + 13757 .L1076: +2408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13758 .loc 1 2408 12 view .LVU4149 + 13759 0258 0120 movs r0, #1 + 13760 .LVL1061: + 13761 .L1056: +2521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13762 .loc 1 2521 1 view .LVU4150 + 13763 025a F8BD pop {r3, r4, r5, r6, r7, pc} + 13764 .LVL1062: + 13765 .L1077: +2398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13766 .loc 1 2398 14 view .LVU4151 + 13767 025c 0120 movs r0, #1 + 13768 .LVL1063: +2398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 442 + + + 13769 .loc 1 2398 14 view .LVU4152 + 13770 025e FCE7 b .L1056 + 13771 .LVL1064: + 13772 .L1079: +2430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13773 .loc 1 2430 16 view .LVU4153 + 13774 0260 0120 movs r0, #1 + 13775 0262 FAE7 b .L1056 + 13776 .L1080: +2451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13777 .loc 1 2451 16 view .LVU4154 + 13778 0264 0120 movs r0, #1 + 13779 0266 F8E7 b .L1056 + 13780 .L1081: +2472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13781 .loc 1 2472 16 view .LVU4155 + 13782 0268 0120 movs r0, #1 + 13783 026a F6E7 b .L1056 + 13784 .L1082: +2493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13785 .loc 1 2493 16 view .LVU4156 + 13786 026c 0120 movs r0, #1 + 13787 026e F4E7 b .L1056 + 13788 .L1097: + 13789 .align 2 + 13790 .L1096: + 13791 0270 00000000 .word TIM_DMACaptureCplt + 13792 0274 00000000 .word TIM_DMACaptureHalfCplt + 13793 0278 00000000 .word TIM_DMAError + 13794 027c 00000140 .word 1073807360 + 13795 0280 07000100 .word 65543 + 13796 .cfi_endproc + 13797 .LFE179: + 13799 .section .text.HAL_TIM_IC_Stop_DMA,"ax",%progbits + 13800 .align 1 + 13801 .global HAL_TIM_IC_Stop_DMA + 13802 .syntax unified + 13803 .thumb + 13804 .thumb_func + 13805 .fpu fpv5-d16 + 13807 HAL_TIM_IC_Stop_DMA: + 13808 .LVL1065: + 13809 .LFB180: +2535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 13810 .loc 1 2535 1 is_stmt 1 view -0 + 13811 .cfi_startproc + 13812 @ args = 0, pretend = 0, frame = 0 + 13813 @ frame_needed = 0, uses_anonymous_args = 0 +2535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_StatusTypeDef status = HAL_OK; + 13814 .loc 1 2535 1 is_stmt 0 view .LVU4158 + 13815 0000 38B5 push {r3, r4, r5, lr} + 13816 .LCFI103: + 13817 .cfi_def_cfa_offset 16 + 13818 .cfi_offset 3, -16 + 13819 .cfi_offset 4, -12 + 13820 .cfi_offset 5, -8 + 13821 .cfi_offset 14, -4 + ARM GAS /tmp/ccPLZXyC.s page 443 + + + 13822 0002 0546 mov r5, r0 + 13823 0004 0C46 mov r4, r1 +2536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13824 .loc 1 2536 3 is_stmt 1 view .LVU4159 + 13825 .LVL1066: +2539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance)); + 13826 .loc 1 2539 3 view .LVU4160 +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13827 .loc 1 2540 3 view .LVU4161 +2543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13828 .loc 1 2543 3 view .LVU4162 + 13829 0006 0022 movs r2, #0 + 13830 0008 0068 ldr r0, [r0] + 13831 .LVL1067: +2543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13832 .loc 1 2543 3 is_stmt 0 view .LVU4163 + 13833 000a FFF7FEFF bl TIM_CCxChannelCmd + 13834 .LVL1068: +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13835 .loc 1 2545 3 is_stmt 1 view .LVU4164 + 13836 000e 0C2C cmp r4, #12 + 13837 0010 74D8 bhi .L1116 + 13838 0012 DFE804F0 tbb [pc, r4] + 13839 .L1101: + 13840 0016 07 .byte (.L1104-.L1101)/2 + 13841 0017 73 .byte (.L1116-.L1101)/2 + 13842 0018 73 .byte (.L1116-.L1101)/2 + 13843 0019 73 .byte (.L1116-.L1101)/2 + 13844 001a 29 .byte (.L1103-.L1101)/2 + 13845 001b 73 .byte (.L1116-.L1101)/2 + 13846 001c 73 .byte (.L1116-.L1101)/2 + 13847 001d 73 .byte (.L1116-.L1101)/2 + 13848 001e 32 .byte (.L1102-.L1101)/2 + 13849 001f 73 .byte (.L1116-.L1101)/2 + 13850 0020 73 .byte (.L1116-.L1101)/2 + 13851 0021 73 .byte (.L1116-.L1101)/2 + 13852 0022 3B .byte (.L1100-.L1101)/2 + 13853 0023 00 .p2align 1 + 13854 .L1104: +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + 13855 .loc 1 2550 7 view .LVU4165 + 13856 0024 2A68 ldr r2, [r5] + 13857 0026 D368 ldr r3, [r2, #12] + 13858 0028 23F40073 bic r3, r3, #512 + 13859 002c D360 str r3, [r2, #12] +2551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13860 .loc 1 2551 7 view .LVU4166 +2551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13861 .loc 1 2551 13 is_stmt 0 view .LVU4167 + 13862 002e 686A ldr r0, [r5, #36] + 13863 0030 FFF7FEFF bl HAL_DMA_Abort_IT + 13864 .LVL1069: +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13865 .loc 1 2552 7 is_stmt 1 view .LVU4168 +2584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13866 .loc 1 2584 3 view .LVU4169 + 13867 .L1105: + ARM GAS /tmp/ccPLZXyC.s page 444 + + +2587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13868 .loc 1 2587 5 view .LVU4170 +2587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13869 .loc 1 2587 5 view .LVU4171 + 13870 0034 2B68 ldr r3, [r5] + 13871 0036 196A ldr r1, [r3, #32] + 13872 0038 41F21112 movw r2, #4369 + 13873 003c 1142 tst r1, r2 + 13874 003e 08D1 bne .L1106 +2587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13875 .loc 1 2587 5 discriminator 1 view .LVU4172 + 13876 0040 196A ldr r1, [r3, #32] + 13877 0042 40F24442 movw r2, #1092 + 13878 0046 1142 tst r1, r2 + 13879 0048 03D1 bne .L1106 +2587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13880 .loc 1 2587 5 discriminator 3 view .LVU4173 + 13881 004a 1A68 ldr r2, [r3] + 13882 004c 22F00102 bic r2, r2, #1 + 13883 0050 1A60 str r2, [r3] + 13884 .L1106: +2587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 13885 .loc 1 2587 5 discriminator 5 view .LVU4174 +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13886 .loc 1 2590 5 discriminator 5 view .LVU4175 + 13887 0052 24BB cbnz r4, .L1107 +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13888 .loc 1 2590 5 is_stmt 0 discriminator 1 view .LVU4176 + 13889 0054 0123 movs r3, #1 + 13890 0056 85F83E30 strb r3, [r5, #62] + 13891 .L1108: +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13892 .loc 1 2591 5 is_stmt 1 view .LVU4177 + 13893 005a 002C cmp r4, #0 + 13894 005c 3BD1 bne .L1113 +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13895 .loc 1 2591 5 is_stmt 0 discriminator 1 view .LVU4178 + 13896 005e 0123 movs r3, #1 + 13897 0060 85F84430 strb r3, [r5, #68] + 13898 0064 0020 movs r0, #0 + 13899 0066 4AE0 b .L1099 + 13900 .L1103: +2558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + 13901 .loc 1 2558 7 is_stmt 1 view .LVU4179 + 13902 0068 2A68 ldr r2, [r5] + 13903 006a D368 ldr r3, [r2, #12] + 13904 006c 23F48063 bic r3, r3, #1024 + 13905 0070 D360 str r3, [r2, #12] +2559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13906 .loc 1 2559 7 view .LVU4180 +2559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13907 .loc 1 2559 13 is_stmt 0 view .LVU4181 + 13908 0072 A86A ldr r0, [r5, #40] + 13909 0074 FFF7FEFF bl HAL_DMA_Abort_IT + 13910 .LVL1070: +2560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13911 .loc 1 2560 7 is_stmt 1 view .LVU4182 + ARM GAS /tmp/ccPLZXyC.s page 445 + + +2584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13912 .loc 1 2584 3 view .LVU4183 + 13913 0078 DCE7 b .L1105 + 13914 .L1102: +2566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + 13915 .loc 1 2566 7 view .LVU4184 + 13916 007a 2A68 ldr r2, [r5] + 13917 007c D368 ldr r3, [r2, #12] + 13918 007e 23F40063 bic r3, r3, #2048 + 13919 0082 D360 str r3, [r2, #12] +2567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13920 .loc 1 2567 7 view .LVU4185 +2567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13921 .loc 1 2567 13 is_stmt 0 view .LVU4186 + 13922 0084 E86A ldr r0, [r5, #44] + 13923 0086 FFF7FEFF bl HAL_DMA_Abort_IT + 13924 .LVL1071: +2568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13925 .loc 1 2568 7 is_stmt 1 view .LVU4187 +2584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13926 .loc 1 2584 3 view .LVU4188 + 13927 008a D3E7 b .L1105 + 13928 .L1100: +2574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC4]); + 13929 .loc 1 2574 7 view .LVU4189 + 13930 008c 2A68 ldr r2, [r5] + 13931 008e D368 ldr r3, [r2, #12] + 13932 0090 23F48053 bic r3, r3, #4096 + 13933 0094 D360 str r3, [r2, #12] +2575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13934 .loc 1 2575 7 view .LVU4190 +2575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 13935 .loc 1 2575 13 is_stmt 0 view .LVU4191 + 13936 0096 286B ldr r0, [r5, #48] + 13937 0098 FFF7FEFF bl HAL_DMA_Abort_IT + 13938 .LVL1072: +2576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13939 .loc 1 2576 7 is_stmt 1 view .LVU4192 +2584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 13940 .loc 1 2584 3 view .LVU4193 + 13941 009c CAE7 b .L1105 + 13942 .L1107: +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13943 .loc 1 2590 5 is_stmt 0 discriminator 2 view .LVU4194 + 13944 009e 042C cmp r4, #4 + 13945 00a0 09D0 beq .L1118 +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13946 .loc 1 2590 5 discriminator 4 view .LVU4195 + 13947 00a2 082C cmp r4, #8 + 13948 00a4 0BD0 beq .L1119 +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13949 .loc 1 2590 5 discriminator 7 view .LVU4196 + 13950 00a6 0C2C cmp r4, #12 + 13951 00a8 0DD0 beq .L1120 +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13952 .loc 1 2590 5 discriminator 10 view .LVU4197 + 13953 00aa 102C cmp r4, #16 + ARM GAS /tmp/ccPLZXyC.s page 446 + + + 13954 00ac 0FD0 beq .L1121 +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13955 .loc 1 2590 5 discriminator 13 view .LVU4198 + 13956 00ae 0123 movs r3, #1 + 13957 00b0 85F84330 strb r3, [r5, #67] + 13958 00b4 D1E7 b .L1108 + 13959 .L1118: +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13960 .loc 1 2590 5 discriminator 3 view .LVU4199 + 13961 00b6 0123 movs r3, #1 + 13962 00b8 85F83F30 strb r3, [r5, #63] + 13963 00bc CDE7 b .L1108 + 13964 .L1119: +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13965 .loc 1 2590 5 discriminator 6 view .LVU4200 + 13966 00be 0123 movs r3, #1 + 13967 00c0 85F84030 strb r3, [r5, #64] + 13968 00c4 C9E7 b .L1108 + 13969 .L1120: +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13970 .loc 1 2590 5 discriminator 9 view .LVU4201 + 13971 00c6 0123 movs r3, #1 + 13972 00c8 85F84130 strb r3, [r5, #65] + 13973 00cc C5E7 b .L1108 + 13974 .L1121: +2590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 13975 .loc 1 2590 5 discriminator 12 view .LVU4202 + 13976 00ce 0123 movs r3, #1 + 13977 00d0 85F84230 strb r3, [r5, #66] + 13978 00d4 C1E7 b .L1108 + 13979 .L1113: +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13980 .loc 1 2591 5 discriminator 2 view .LVU4203 + 13981 00d6 042C cmp r4, #4 + 13982 00d8 06D0 beq .L1122 +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13983 .loc 1 2591 5 discriminator 4 view .LVU4204 + 13984 00da 082C cmp r4, #8 + 13985 00dc 09D0 beq .L1123 +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13986 .loc 1 2591 5 discriminator 7 view .LVU4205 + 13987 00de 0123 movs r3, #1 + 13988 00e0 85F84730 strb r3, [r5, #71] + 13989 00e4 0020 movs r0, #0 + 13990 00e6 0AE0 b .L1099 + 13991 .L1122: +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13992 .loc 1 2591 5 discriminator 3 view .LVU4206 + 13993 00e8 0123 movs r3, #1 + 13994 00ea 85F84530 strb r3, [r5, #69] + 13995 00ee 0020 movs r0, #0 + 13996 00f0 05E0 b .L1099 + 13997 .L1123: +2591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 13998 .loc 1 2591 5 discriminator 6 view .LVU4207 + 13999 00f2 0123 movs r3, #1 + 14000 00f4 85F84630 strb r3, [r5, #70] + ARM GAS /tmp/ccPLZXyC.s page 447 + + + 14001 00f8 0020 movs r0, #0 + 14002 00fa 00E0 b .L1099 + 14003 .L1116: +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14004 .loc 1 2545 3 view .LVU4208 + 14005 00fc 0120 movs r0, #1 + 14006 .L1099: + 14007 .LVL1073: +2595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14008 .loc 1 2595 3 is_stmt 1 view .LVU4209 +2596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 14009 .loc 1 2596 1 is_stmt 0 view .LVU4210 + 14010 00fe 38BD pop {r3, r4, r5, pc} +2596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /** + 14011 .loc 1 2596 1 view .LVU4211 + 14012 .cfi_endproc + 14013 .LFE180: + 14015 .section .text.HAL_TIM_OnePulse_Start,"ax",%progbits + 14016 .align 1 + 14017 .global HAL_TIM_OnePulse_Start + 14018 .syntax unified + 14019 .thumb + 14020 .thumb_func + 14021 .fpu fpv5-d16 + 14023 HAL_TIM_OnePulse_Start: + 14024 .LVL1074: + 14025 .LFB185: +2789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 14026 .loc 1 2789 1 is_stmt 1 view -0 + 14027 .cfi_startproc + 14028 @ args = 0, pretend = 0, frame = 0 + 14029 @ frame_needed = 0, uses_anonymous_args = 0 +2789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 14030 .loc 1 2789 1 is_stmt 0 view .LVU4213 + 14031 0000 10B5 push {r4, lr} + 14032 .LCFI104: + 14033 .cfi_def_cfa_offset 8 + 14034 .cfi_offset 4, -8 + 14035 .cfi_offset 14, -4 + 14036 0002 0446 mov r4, r0 +2790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 14037 .loc 1 2790 3 is_stmt 1 view .LVU4214 +2790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 14038 .loc 1 2790 31 is_stmt 0 view .LVU4215 + 14039 0004 90F83E10 ldrb r1, [r0, #62] @ zero_extendqisi2 + 14040 .LVL1075: +2790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 14041 .loc 1 2790 31 view .LVU4216 + 14042 0008 C9B2 uxtb r1, r1 + 14043 .LVL1076: +2791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14044 .loc 1 2791 3 is_stmt 1 view .LVU4217 +2791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14045 .loc 1 2791 31 is_stmt 0 view .LVU4218 + 14046 000a 90F83F20 ldrb r2, [r0, #63] @ zero_extendqisi2 + 14047 000e D2B2 uxtb r2, r2 + 14048 .LVL1077: + ARM GAS /tmp/ccPLZXyC.s page 448 + + +2792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14049 .loc 1 2792 3 is_stmt 1 view .LVU4219 +2792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14050 .loc 1 2792 31 is_stmt 0 view .LVU4220 + 14051 0010 90F84430 ldrb r3, [r0, #68] @ zero_extendqisi2 + 14052 0014 D8B2 uxtb r0, r3 + 14053 .LVL1078: +2793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14054 .loc 1 2793 3 is_stmt 1 view .LVU4221 +2793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14055 .loc 1 2793 31 is_stmt 0 view .LVU4222 + 14056 0016 94F84530 ldrb r3, [r4, #69] @ zero_extendqisi2 + 14057 .LVL1079: +2796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14058 .loc 1 2796 3 is_stmt 1 view .LVU4223 +2799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 14059 .loc 1 2799 3 view .LVU4224 +2799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 14060 .loc 1 2799 6 is_stmt 0 view .LVU4225 + 14061 001a 012A cmp r2, #1 + 14062 001c 08BF it eq + 14063 001e 0129 cmpeq r1, #1 + 14064 0020 26D1 bne .L1126 + 14065 0022 DBB2 uxtb r3, r3 +2802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14066 .loc 1 2802 41 view .LVU4226 + 14067 0024 013B subs r3, r3, #1 + 14068 .LVL1080: +2802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14069 .loc 1 2802 41 view .LVU4227 + 14070 0026 18BF it ne + 14071 0028 0123 movne r3, #1 + 14072 .LVL1081: +2802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14073 .loc 1 2802 7 view .LVU4228 + 14074 002a 0128 cmp r0, #1 + 14075 002c 22D1 bne .L1127 + 14076 002e 0BBB cbnz r3, .L1127 +2808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 14077 .loc 1 2808 3 is_stmt 1 view .LVU4229 + 14078 0030 0223 movs r3, #2 + 14079 0032 84F83E30 strb r3, [r4, #62] +2809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 14080 .loc 1 2809 3 view .LVU4230 + 14081 0036 84F83F30 strb r3, [r4, #63] +2810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 14082 .loc 1 2810 3 view .LVU4231 + 14083 003a 84F84430 strb r3, [r4, #68] +2811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14084 .loc 1 2811 3 view .LVU4232 + 14085 003e 84F84530 strb r3, [r4, #69] +2822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14086 .loc 1 2822 3 view .LVU4233 + 14087 0042 0122 movs r2, #1 + 14088 .LVL1082: +2822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14089 .loc 1 2822 3 is_stmt 0 view .LVU4234 + ARM GAS /tmp/ccPLZXyC.s page 449 + + + 14090 0044 0021 movs r1, #0 + 14091 .LVL1083: +2822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14092 .loc 1 2822 3 view .LVU4235 + 14093 0046 2068 ldr r0, [r4] + 14094 .LVL1084: +2822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14095 .loc 1 2822 3 view .LVU4236 + 14096 0048 FFF7FEFF bl TIM_CCxChannelCmd + 14097 .LVL1085: +2823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14098 .loc 1 2823 3 is_stmt 1 view .LVU4237 + 14099 004c 0122 movs r2, #1 + 14100 004e 0421 movs r1, #4 + 14101 0050 2068 ldr r0, [r4] + 14102 0052 FFF7FEFF bl TIM_CCxChannelCmd + 14103 .LVL1086: +2825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14104 .loc 1 2825 3 view .LVU4238 +2825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14105 .loc 1 2825 7 is_stmt 0 view .LVU4239 + 14106 0056 2368 ldr r3, [r4] +2825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14107 .loc 1 2825 6 view .LVU4240 + 14108 0058 0849 ldr r1, .L1130 + 14109 005a 094A ldr r2, .L1130+4 + 14110 005c 9342 cmp r3, r2 + 14111 005e 18BF it ne + 14112 0060 8B42 cmpne r3, r1 + 14113 0062 09D1 bne .L1128 +2828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14114 .loc 1 2828 5 is_stmt 1 view .LVU4241 + 14115 0064 5A6C ldr r2, [r3, #68] + 14116 0066 42F40042 orr r2, r2, #32768 + 14117 006a 5A64 str r2, [r3, #68] +2832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14118 .loc 1 2832 10 is_stmt 0 view .LVU4242 + 14119 006c 0020 movs r0, #0 + 14120 006e 00E0 b .L1125 + 14121 .LVL1087: + 14122 .L1126: +2804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14123 .loc 1 2804 12 view .LVU4243 + 14124 0070 0120 movs r0, #1 + 14125 .LVL1088: + 14126 .L1125: +2833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14127 .loc 1 2833 1 view .LVU4244 + 14128 0072 10BD pop {r4, pc} + 14129 .LVL1089: + 14130 .L1127: +2804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14131 .loc 1 2804 12 view .LVU4245 + 14132 0074 0120 movs r0, #1 + 14133 .LVL1090: +2804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14134 .loc 1 2804 12 view .LVU4246 + ARM GAS /tmp/ccPLZXyC.s page 450 + + + 14135 0076 FCE7 b .L1125 + 14136 .LVL1091: + 14137 .L1128: +2832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14138 .loc 1 2832 10 view .LVU4247 + 14139 0078 0020 movs r0, #0 + 14140 007a FAE7 b .L1125 + 14141 .L1131: + 14142 .align 2 + 14143 .L1130: + 14144 007c 00000140 .word 1073807360 + 14145 0080 00040140 .word 1073808384 + 14146 .cfi_endproc + 14147 .LFE185: + 14149 .section .text.HAL_TIM_OnePulse_Stop,"ax",%progbits + 14150 .align 1 + 14151 .global HAL_TIM_OnePulse_Stop + 14152 .syntax unified + 14153 .thumb + 14154 .thumb_func + 14155 .fpu fpv5-d16 + 14157 HAL_TIM_OnePulse_Stop: + 14158 .LVL1092: + 14159 .LFB186: +2846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 14160 .loc 1 2846 1 is_stmt 1 view -0 + 14161 .cfi_startproc + 14162 @ args = 0, pretend = 0, frame = 0 + 14163 @ frame_needed = 0, uses_anonymous_args = 0 +2846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 14164 .loc 1 2846 1 is_stmt 0 view .LVU4249 + 14165 0000 10B5 push {r4, lr} + 14166 .LCFI105: + 14167 .cfi_def_cfa_offset 8 + 14168 .cfi_offset 4, -8 + 14169 .cfi_offset 14, -4 + 14170 0002 0446 mov r4, r0 +2848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14171 .loc 1 2848 3 is_stmt 1 view .LVU4250 +2856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 14172 .loc 1 2856 3 view .LVU4251 + 14173 0004 0022 movs r2, #0 + 14174 0006 1146 mov r1, r2 + 14175 .LVL1093: +2856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 14176 .loc 1 2856 3 is_stmt 0 view .LVU4252 + 14177 0008 0068 ldr r0, [r0] + 14178 .LVL1094: +2856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 14179 .loc 1 2856 3 view .LVU4253 + 14180 000a FFF7FEFF bl TIM_CCxChannelCmd + 14181 .LVL1095: +2857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14182 .loc 1 2857 3 is_stmt 1 view .LVU4254 + 14183 000e 0022 movs r2, #0 + 14184 0010 0421 movs r1, #4 + 14185 0012 2068 ldr r0, [r4] + ARM GAS /tmp/ccPLZXyC.s page 451 + + + 14186 0014 FFF7FEFF bl TIM_CCxChannelCmd + 14187 .LVL1096: +2859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14188 .loc 1 2859 3 view .LVU4255 +2859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14189 .loc 1 2859 7 is_stmt 0 view .LVU4256 + 14190 0018 2368 ldr r3, [r4] +2859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14191 .loc 1 2859 6 view .LVU4257 + 14192 001a 1749 ldr r1, .L1136 + 14193 001c 174A ldr r2, .L1136+4 + 14194 001e 9342 cmp r3, r2 + 14195 0020 18BF it ne + 14196 0022 8B42 cmpne r3, r1 + 14197 0024 0DD1 bne .L1133 +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14198 .loc 1 2862 5 is_stmt 1 view .LVU4258 +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14199 .loc 1 2862 5 view .LVU4259 + 14200 0026 196A ldr r1, [r3, #32] + 14201 0028 41F21112 movw r2, #4369 + 14202 002c 1142 tst r1, r2 + 14203 002e 08D1 bne .L1133 +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14204 .loc 1 2862 5 discriminator 1 view .LVU4260 + 14205 0030 196A ldr r1, [r3, #32] + 14206 0032 40F24442 movw r2, #1092 + 14207 0036 1142 tst r1, r2 + 14208 0038 03D1 bne .L1133 +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14209 .loc 1 2862 5 discriminator 3 view .LVU4261 + 14210 003a 5A6C ldr r2, [r3, #68] + 14211 003c 22F40042 bic r2, r2, #32768 + 14212 0040 5A64 str r2, [r3, #68] + 14213 .L1133: +2862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14214 .loc 1 2862 5 discriminator 5 view .LVU4262 +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14215 .loc 1 2866 3 discriminator 5 view .LVU4263 +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14216 .loc 1 2866 3 discriminator 5 view .LVU4264 + 14217 0042 2368 ldr r3, [r4] + 14218 0044 196A ldr r1, [r3, #32] + 14219 0046 41F21112 movw r2, #4369 + 14220 004a 1142 tst r1, r2 + 14221 004c 08D1 bne .L1134 +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14222 .loc 1 2866 3 discriminator 1 view .LVU4265 + 14223 004e 196A ldr r1, [r3, #32] + 14224 0050 40F24442 movw r2, #1092 + 14225 0054 1142 tst r1, r2 + 14226 0056 03D1 bne .L1134 +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14227 .loc 1 2866 3 discriminator 3 view .LVU4266 + 14228 0058 1A68 ldr r2, [r3] + 14229 005a 22F00102 bic r2, r2, #1 + 14230 005e 1A60 str r2, [r3] + ARM GAS /tmp/ccPLZXyC.s page 452 + + + 14231 .L1134: +2866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14232 .loc 1 2866 3 discriminator 5 view .LVU4267 +2869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 14233 .loc 1 2869 3 discriminator 5 view .LVU4268 + 14234 0060 0123 movs r3, #1 + 14235 0062 84F83E30 strb r3, [r4, #62] +2870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 14236 .loc 1 2870 3 discriminator 5 view .LVU4269 + 14237 0066 84F83F30 strb r3, [r4, #63] +2871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 14238 .loc 1 2871 3 discriminator 5 view .LVU4270 + 14239 006a 84F84430 strb r3, [r4, #68] +2872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14240 .loc 1 2872 3 discriminator 5 view .LVU4271 + 14241 006e 84F84530 strb r3, [r4, #69] +2875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14242 .loc 1 2875 3 discriminator 5 view .LVU4272 +2876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14243 .loc 1 2876 1 is_stmt 0 discriminator 5 view .LVU4273 + 14244 0072 0020 movs r0, #0 + 14245 0074 10BD pop {r4, pc} + 14246 .LVL1097: + 14247 .L1137: +2876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14248 .loc 1 2876 1 discriminator 5 view .LVU4274 + 14249 0076 00BF .align 2 + 14250 .L1136: + 14251 0078 00000140 .word 1073807360 + 14252 007c 00040140 .word 1073808384 + 14253 .cfi_endproc + 14254 .LFE186: + 14256 .section .text.HAL_TIM_OnePulse_Start_IT,"ax",%progbits + 14257 .align 1 + 14258 .global HAL_TIM_OnePulse_Start_IT + 14259 .syntax unified + 14260 .thumb + 14261 .thumb_func + 14262 .fpu fpv5-d16 + 14264 HAL_TIM_OnePulse_Start_IT: + 14265 .LVL1098: + 14266 .LFB187: +2889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 14267 .loc 1 2889 1 is_stmt 1 view -0 + 14268 .cfi_startproc + 14269 @ args = 0, pretend = 0, frame = 0 + 14270 @ frame_needed = 0, uses_anonymous_args = 0 +2889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 14271 .loc 1 2889 1 is_stmt 0 view .LVU4276 + 14272 0000 10B5 push {r4, lr} + 14273 .LCFI106: + 14274 .cfi_def_cfa_offset 8 + 14275 .cfi_offset 4, -8 + 14276 .cfi_offset 14, -4 + 14277 0002 0446 mov r4, r0 +2890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 14278 .loc 1 2890 3 is_stmt 1 view .LVU4277 + ARM GAS /tmp/ccPLZXyC.s page 453 + + +2890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 14279 .loc 1 2890 31 is_stmt 0 view .LVU4278 + 14280 0004 90F83E10 ldrb r1, [r0, #62] @ zero_extendqisi2 + 14281 .LVL1099: +2890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 14282 .loc 1 2890 31 view .LVU4279 + 14283 0008 C9B2 uxtb r1, r1 + 14284 .LVL1100: +2891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14285 .loc 1 2891 3 is_stmt 1 view .LVU4280 +2891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14286 .loc 1 2891 31 is_stmt 0 view .LVU4281 + 14287 000a 90F83F20 ldrb r2, [r0, #63] @ zero_extendqisi2 + 14288 000e D2B2 uxtb r2, r2 + 14289 .LVL1101: +2892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14290 .loc 1 2892 3 is_stmt 1 view .LVU4282 +2892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14291 .loc 1 2892 31 is_stmt 0 view .LVU4283 + 14292 0010 90F84430 ldrb r3, [r0, #68] @ zero_extendqisi2 + 14293 0014 D8B2 uxtb r0, r3 + 14294 .LVL1102: +2893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14295 .loc 1 2893 3 is_stmt 1 view .LVU4284 +2893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14296 .loc 1 2893 31 is_stmt 0 view .LVU4285 + 14297 0016 94F84530 ldrb r3, [r4, #69] @ zero_extendqisi2 + 14298 .LVL1103: +2896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14299 .loc 1 2896 3 is_stmt 1 view .LVU4286 +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 14300 .loc 1 2899 3 view .LVU4287 +2899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 14301 .loc 1 2899 6 is_stmt 0 view .LVU4288 + 14302 001a 012A cmp r2, #1 + 14303 001c 08BF it eq + 14304 001e 0129 cmpeq r1, #1 + 14305 0020 30D1 bne .L1140 + 14306 0022 DBB2 uxtb r3, r3 +2902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14307 .loc 1 2902 41 view .LVU4289 + 14308 0024 013B subs r3, r3, #1 + 14309 .LVL1104: +2902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14310 .loc 1 2902 41 view .LVU4290 + 14311 0026 18BF it ne + 14312 0028 0123 movne r3, #1 + 14313 .LVL1105: +2902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14314 .loc 1 2902 7 view .LVU4291 + 14315 002a 0128 cmp r0, #1 + 14316 002c 2CD1 bne .L1141 + 14317 002e 5BBB cbnz r3, .L1141 +2908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 14318 .loc 1 2908 3 is_stmt 1 view .LVU4292 + 14319 0030 0223 movs r3, #2 + 14320 0032 84F83E30 strb r3, [r4, #62] + ARM GAS /tmp/ccPLZXyC.s page 454 + + +2909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 14321 .loc 1 2909 3 view .LVU4293 + 14322 0036 84F83F30 strb r3, [r4, #63] +2910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 14323 .loc 1 2910 3 view .LVU4294 + 14324 003a 84F84430 strb r3, [r4, #68] +2911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14325 .loc 1 2911 3 view .LVU4295 + 14326 003e 84F84530 strb r3, [r4, #69] +2923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14327 .loc 1 2923 3 view .LVU4296 + 14328 0042 2268 ldr r2, [r4] + 14329 .LVL1106: +2923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14330 .loc 1 2923 3 is_stmt 0 view .LVU4297 + 14331 0044 D368 ldr r3, [r2, #12] + 14332 0046 43F00203 orr r3, r3, #2 + 14333 004a D360 str r3, [r2, #12] +2926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14334 .loc 1 2926 3 is_stmt 1 view .LVU4298 + 14335 004c 2268 ldr r2, [r4] + 14336 004e D368 ldr r3, [r2, #12] + 14337 0050 43F00403 orr r3, r3, #4 + 14338 0054 D360 str r3, [r2, #12] +2928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14339 .loc 1 2928 3 view .LVU4299 + 14340 0056 0122 movs r2, #1 + 14341 0058 0021 movs r1, #0 + 14342 .LVL1107: +2928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14343 .loc 1 2928 3 is_stmt 0 view .LVU4300 + 14344 005a 2068 ldr r0, [r4] + 14345 .LVL1108: +2928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14346 .loc 1 2928 3 view .LVU4301 + 14347 005c FFF7FEFF bl TIM_CCxChannelCmd + 14348 .LVL1109: +2929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14349 .loc 1 2929 3 is_stmt 1 view .LVU4302 + 14350 0060 0122 movs r2, #1 + 14351 0062 0421 movs r1, #4 + 14352 0064 2068 ldr r0, [r4] + 14353 0066 FFF7FEFF bl TIM_CCxChannelCmd + 14354 .LVL1110: +2931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14355 .loc 1 2931 3 view .LVU4303 +2931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14356 .loc 1 2931 7 is_stmt 0 view .LVU4304 + 14357 006a 2368 ldr r3, [r4] +2931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14358 .loc 1 2931 6 view .LVU4305 + 14359 006c 0849 ldr r1, .L1144 + 14360 006e 094A ldr r2, .L1144+4 + 14361 0070 9342 cmp r3, r2 + 14362 0072 18BF it ne + 14363 0074 8B42 cmpne r3, r1 + 14364 0076 09D1 bne .L1142 + ARM GAS /tmp/ccPLZXyC.s page 455 + + +2934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14365 .loc 1 2934 5 is_stmt 1 view .LVU4306 + 14366 0078 5A6C ldr r2, [r3, #68] + 14367 007a 42F40042 orr r2, r2, #32768 + 14368 007e 5A64 str r2, [r3, #68] +2938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14369 .loc 1 2938 10 is_stmt 0 view .LVU4307 + 14370 0080 0020 movs r0, #0 + 14371 0082 00E0 b .L1139 + 14372 .LVL1111: + 14373 .L1140: +2904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14374 .loc 1 2904 12 view .LVU4308 + 14375 0084 0120 movs r0, #1 + 14376 .LVL1112: + 14377 .L1139: +2939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14378 .loc 1 2939 1 view .LVU4309 + 14379 0086 10BD pop {r4, pc} + 14380 .LVL1113: + 14381 .L1141: +2904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14382 .loc 1 2904 12 view .LVU4310 + 14383 0088 0120 movs r0, #1 + 14384 .LVL1114: +2904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14385 .loc 1 2904 12 view .LVU4311 + 14386 008a FCE7 b .L1139 + 14387 .LVL1115: + 14388 .L1142: +2938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14389 .loc 1 2938 10 view .LVU4312 + 14390 008c 0020 movs r0, #0 + 14391 008e FAE7 b .L1139 + 14392 .L1145: + 14393 .align 2 + 14394 .L1144: + 14395 0090 00000140 .word 1073807360 + 14396 0094 00040140 .word 1073808384 + 14397 .cfi_endproc + 14398 .LFE187: + 14400 .section .text.HAL_TIM_OnePulse_Stop_IT,"ax",%progbits + 14401 .align 1 + 14402 .global HAL_TIM_OnePulse_Stop_IT + 14403 .syntax unified + 14404 .thumb + 14405 .thumb_func + 14406 .fpu fpv5-d16 + 14408 HAL_TIM_OnePulse_Stop_IT: + 14409 .LVL1116: + 14410 .LFB188: +2952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + 14411 .loc 1 2952 1 is_stmt 1 view -0 + 14412 .cfi_startproc + 14413 @ args = 0, pretend = 0, frame = 0 + 14414 @ frame_needed = 0, uses_anonymous_args = 0 +2952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Prevent unused argument(s) compilation warning */ + ARM GAS /tmp/ccPLZXyC.s page 456 + + + 14415 .loc 1 2952 1 is_stmt 0 view .LVU4314 + 14416 0000 10B5 push {r4, lr} + 14417 .LCFI107: + 14418 .cfi_def_cfa_offset 8 + 14419 .cfi_offset 4, -8 + 14420 .cfi_offset 14, -4 + 14421 0002 0446 mov r4, r0 +2954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14422 .loc 1 2954 3 is_stmt 1 view .LVU4315 +2957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14423 .loc 1 2957 3 view .LVU4316 + 14424 0004 0268 ldr r2, [r0] + 14425 0006 D368 ldr r3, [r2, #12] + 14426 0008 23F00203 bic r3, r3, #2 + 14427 000c D360 str r3, [r2, #12] +2960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14428 .loc 1 2960 3 view .LVU4317 + 14429 000e 0268 ldr r2, [r0] + 14430 0010 D368 ldr r3, [r2, #12] + 14431 0012 23F00403 bic r3, r3, #4 + 14432 0016 D360 str r3, [r2, #12] +2967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 14433 .loc 1 2967 3 view .LVU4318 + 14434 0018 0022 movs r2, #0 + 14435 001a 1146 mov r1, r2 + 14436 .LVL1117: +2967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 14437 .loc 1 2967 3 is_stmt 0 view .LVU4319 + 14438 001c 0068 ldr r0, [r0] + 14439 .LVL1118: +2967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 14440 .loc 1 2967 3 view .LVU4320 + 14441 001e FFF7FEFF bl TIM_CCxChannelCmd + 14442 .LVL1119: +2968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14443 .loc 1 2968 3 is_stmt 1 view .LVU4321 + 14444 0022 0022 movs r2, #0 + 14445 0024 0421 movs r1, #4 + 14446 0026 2068 ldr r0, [r4] + 14447 0028 FFF7FEFF bl TIM_CCxChannelCmd + 14448 .LVL1120: +2970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14449 .loc 1 2970 3 view .LVU4322 +2970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14450 .loc 1 2970 7 is_stmt 0 view .LVU4323 + 14451 002c 2368 ldr r3, [r4] +2970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14452 .loc 1 2970 6 view .LVU4324 + 14453 002e 1749 ldr r1, .L1150 + 14454 0030 174A ldr r2, .L1150+4 + 14455 0032 9342 cmp r3, r2 + 14456 0034 18BF it ne + 14457 0036 8B42 cmpne r3, r1 + 14458 0038 0DD1 bne .L1147 +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14459 .loc 1 2973 5 is_stmt 1 view .LVU4325 +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 457 + + + 14460 .loc 1 2973 5 view .LVU4326 + 14461 003a 196A ldr r1, [r3, #32] + 14462 003c 41F21112 movw r2, #4369 + 14463 0040 1142 tst r1, r2 + 14464 0042 08D1 bne .L1147 +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14465 .loc 1 2973 5 discriminator 1 view .LVU4327 + 14466 0044 196A ldr r1, [r3, #32] + 14467 0046 40F24442 movw r2, #1092 + 14468 004a 1142 tst r1, r2 + 14469 004c 03D1 bne .L1147 +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14470 .loc 1 2973 5 discriminator 3 view .LVU4328 + 14471 004e 5A6C ldr r2, [r3, #68] + 14472 0050 22F40042 bic r2, r2, #32768 + 14473 0054 5A64 str r2, [r3, #68] + 14474 .L1147: +2973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14475 .loc 1 2973 5 discriminator 5 view .LVU4329 +2977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14476 .loc 1 2977 3 discriminator 5 view .LVU4330 +2977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14477 .loc 1 2977 3 discriminator 5 view .LVU4331 + 14478 0056 2368 ldr r3, [r4] + 14479 0058 196A ldr r1, [r3, #32] + 14480 005a 41F21112 movw r2, #4369 + 14481 005e 1142 tst r1, r2 + 14482 0060 08D1 bne .L1148 +2977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14483 .loc 1 2977 3 discriminator 1 view .LVU4332 + 14484 0062 196A ldr r1, [r3, #32] + 14485 0064 40F24442 movw r2, #1092 + 14486 0068 1142 tst r1, r2 + 14487 006a 03D1 bne .L1148 +2977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14488 .loc 1 2977 3 discriminator 3 view .LVU4333 + 14489 006c 1A68 ldr r2, [r3] + 14490 006e 22F00102 bic r2, r2, #1 + 14491 0072 1A60 str r2, [r3] + 14492 .L1148: +2977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14493 .loc 1 2977 3 discriminator 5 view .LVU4334 +2980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 14494 .loc 1 2980 3 discriminator 5 view .LVU4335 + 14495 0074 0123 movs r3, #1 + 14496 0076 84F83E30 strb r3, [r4, #62] +2981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 14497 .loc 1 2981 3 discriminator 5 view .LVU4336 + 14498 007a 84F83F30 strb r3, [r4, #63] +2982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 14499 .loc 1 2982 3 discriminator 5 view .LVU4337 + 14500 007e 84F84430 strb r3, [r4, #68] +2983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14501 .loc 1 2983 3 discriminator 5 view .LVU4338 + 14502 0082 84F84530 strb r3, [r4, #69] +2986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14503 .loc 1 2986 3 discriminator 5 view .LVU4339 + ARM GAS /tmp/ccPLZXyC.s page 458 + + +2987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14504 .loc 1 2987 1 is_stmt 0 discriminator 5 view .LVU4340 + 14505 0086 0020 movs r0, #0 + 14506 0088 10BD pop {r4, pc} + 14507 .LVL1121: + 14508 .L1151: +2987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14509 .loc 1 2987 1 discriminator 5 view .LVU4341 + 14510 008a 00BF .align 2 + 14511 .L1150: + 14512 008c 00000140 .word 1073807360 + 14513 0090 00040140 .word 1073808384 + 14514 .cfi_endproc + 14515 .LFE188: + 14517 .section .text.HAL_TIM_Encoder_Start,"ax",%progbits + 14518 .align 1 + 14519 .global HAL_TIM_Encoder_Start + 14520 .syntax unified + 14521 .thumb + 14522 .thumb_func + 14523 .fpu fpv5-d16 + 14525 HAL_TIM_Encoder_Start: + 14526 .LVL1122: + 14527 .LFB193: +3226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 14528 .loc 1 3226 1 is_stmt 1 view -0 + 14529 .cfi_startproc + 14530 @ args = 0, pretend = 0, frame = 0 + 14531 @ frame_needed = 0, uses_anonymous_args = 0 +3226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 14532 .loc 1 3226 1 is_stmt 0 view .LVU4343 + 14533 0000 38B5 push {r3, r4, r5, lr} + 14534 .LCFI108: + 14535 .cfi_def_cfa_offset 16 + 14536 .cfi_offset 3, -16 + 14537 .cfi_offset 4, -12 + 14538 .cfi_offset 5, -8 + 14539 .cfi_offset 14, -4 + 14540 0002 0446 mov r4, r0 +3227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 14541 .loc 1 3227 3 is_stmt 1 view .LVU4344 +3227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 14542 .loc 1 3227 31 is_stmt 0 view .LVU4345 + 14543 0004 90F83E30 ldrb r3, [r0, #62] @ zero_extendqisi2 + 14544 0008 DBB2 uxtb r3, r3 + 14545 .LVL1123: +3228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14546 .loc 1 3228 3 is_stmt 1 view .LVU4346 +3228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14547 .loc 1 3228 31 is_stmt 0 view .LVU4347 + 14548 000a 90F83F20 ldrb r2, [r0, #63] @ zero_extendqisi2 + 14549 000e 5FFA82FC uxtb ip, r2 + 14550 .LVL1124: +3229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14551 .loc 1 3229 3 is_stmt 1 view .LVU4348 +3229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14552 .loc 1 3229 31 is_stmt 0 view .LVU4349 + ARM GAS /tmp/ccPLZXyC.s page 459 + + + 14553 0012 90F84420 ldrb r2, [r0, #68] @ zero_extendqisi2 + 14554 0016 D0B2 uxtb r0, r2 + 14555 .LVL1125: +3230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14556 .loc 1 3230 3 is_stmt 1 view .LVU4350 +3230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14557 .loc 1 3230 31 is_stmt 0 view .LVU4351 + 14558 0018 94F84520 ldrb r2, [r4, #69] @ zero_extendqisi2 + 14559 .LVL1126: +3233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14560 .loc 1 3233 3 is_stmt 1 view .LVU4352 +3236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14561 .loc 1 3236 3 view .LVU4353 +3236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14562 .loc 1 3236 6 is_stmt 0 view .LVU4354 + 14563 001c 0D46 mov r5, r1 + 14564 001e B1B9 cbnz r1, .L1153 +3238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)) + 14565 .loc 1 3238 5 is_stmt 1 view .LVU4355 +3238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)) + 14566 .loc 1 3238 8 is_stmt 0 view .LVU4356 + 14567 0020 0128 cmp r0, #1 + 14568 0022 08BF it eq + 14569 0024 012B cmpeq r3, #1 + 14570 0026 47D1 bne .L1161 +3245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 14571 .loc 1 3245 7 is_stmt 1 view .LVU4357 + 14572 0028 0223 movs r3, #2 + 14573 .LVL1127: +3245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 14574 .loc 1 3245 7 is_stmt 0 view .LVU4358 + 14575 002a 84F83E30 strb r3, [r4, #62] +3246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14576 .loc 1 3246 7 is_stmt 1 view .LVU4359 + 14577 002e 84F84430 strb r3, [r4, #68] + 14578 .LVL1128: + 14579 .L1155: +3281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14580 .loc 1 3281 3 view .LVU4360 + 14581 0032 7DB3 cbz r5, .L1157 + 14582 0034 042D cmp r5, #4 + 14583 0036 39D0 beq .L1158 +3297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14584 .loc 1 3297 7 view .LVU4361 + 14585 0038 0122 movs r2, #1 + 14586 003a 0021 movs r1, #0 + 14587 .LVL1129: +3297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14588 .loc 1 3297 7 is_stmt 0 view .LVU4362 + 14589 003c 2068 ldr r0, [r4] + 14590 .LVL1130: +3297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14591 .loc 1 3297 7 view .LVU4363 + 14592 003e FFF7FEFF bl TIM_CCxChannelCmd + 14593 .LVL1131: +3298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14594 .loc 1 3298 7 is_stmt 1 view .LVU4364 + ARM GAS /tmp/ccPLZXyC.s page 460 + + + 14595 0042 0122 movs r2, #1 + 14596 0044 0421 movs r1, #4 + 14597 0046 2068 ldr r0, [r4] + 14598 0048 FFF7FEFF bl TIM_CCxChannelCmd + 14599 .LVL1132: +3299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14600 .loc 1 3299 7 view .LVU4365 + 14601 004c 27E0 b .L1160 + 14602 .LVL1133: + 14603 .L1153: +3299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14604 .loc 1 3299 7 is_stmt 0 view .LVU4366 + 14605 004e D2B2 uxtb r2, r2 +3249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14606 .loc 1 3249 8 is_stmt 1 view .LVU4367 +3249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14607 .loc 1 3249 11 is_stmt 0 view .LVU4368 + 14608 0050 0429 cmp r1, #4 + 14609 0052 14D0 beq .L1167 +3264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 14610 .loc 1 3264 5 is_stmt 1 view .LVU4369 +3264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 14611 .loc 1 3264 8 is_stmt 0 view .LVU4370 + 14612 0054 BCF1010F cmp ip, #1 + 14613 0058 08BF it eq + 14614 005a 012B cmpeq r3, #1 + 14615 005c 30D1 bne .L1163 +3267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14616 .loc 1 3267 43 view .LVU4371 + 14617 005e 013A subs r2, r2, #1 + 14618 .LVL1134: +3267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14619 .loc 1 3267 43 view .LVU4372 + 14620 0060 18BF it ne + 14621 0062 0122 movne r2, #1 + 14622 .LVL1135: +3267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14623 .loc 1 3267 9 view .LVU4373 + 14624 0064 0128 cmp r0, #1 + 14625 0066 2DD1 bne .L1164 + 14626 0068 62BB cbnz r2, .L1164 +3273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 14627 .loc 1 3273 7 is_stmt 1 view .LVU4374 + 14628 006a 0223 movs r3, #2 + 14629 .LVL1136: +3273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 14630 .loc 1 3273 7 is_stmt 0 view .LVU4375 + 14631 006c 84F83E30 strb r3, [r4, #62] +3274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 14632 .loc 1 3274 7 is_stmt 1 view .LVU4376 + 14633 0070 84F83F30 strb r3, [r4, #63] +3275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 14634 .loc 1 3275 7 view .LVU4377 + 14635 0074 84F84430 strb r3, [r4, #68] +3276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14636 .loc 1 3276 7 view .LVU4378 + 14637 0078 84F84530 strb r3, [r4, #69] + ARM GAS /tmp/ccPLZXyC.s page 461 + + + 14638 007c D9E7 b .L1155 + 14639 .LVL1137: + 14640 .L1167: +3251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + 14641 .loc 1 3251 5 view .LVU4379 +3251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + 14642 .loc 1 3251 8 is_stmt 0 view .LVU4380 + 14643 007e 012A cmp r2, #1 + 14644 0080 08BF it eq + 14645 0082 BCF1010F cmpeq ip, #1 + 14646 0086 19D1 bne .L1162 +3258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 14647 .loc 1 3258 7 is_stmt 1 view .LVU4381 + 14648 0088 0223 movs r3, #2 + 14649 .LVL1138: +3258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 14650 .loc 1 3258 7 is_stmt 0 view .LVU4382 + 14651 008a 84F83F30 strb r3, [r4, #63] +3259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14652 .loc 1 3259 7 is_stmt 1 view .LVU4383 + 14653 008e 84F84530 strb r3, [r4, #69] + 14654 0092 CEE7 b .L1155 + 14655 .LVL1139: + 14656 .L1157: +3285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14657 .loc 1 3285 7 view .LVU4384 + 14658 0094 0122 movs r2, #1 + 14659 0096 0021 movs r1, #0 + 14660 .LVL1140: +3285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14661 .loc 1 3285 7 is_stmt 0 view .LVU4385 + 14662 0098 2068 ldr r0, [r4] + 14663 .LVL1141: +3285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14664 .loc 1 3285 7 view .LVU4386 + 14665 009a FFF7FEFF bl TIM_CCxChannelCmd + 14666 .LVL1142: +3286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14667 .loc 1 3286 7 is_stmt 1 view .LVU4387 + 14668 .L1160: +3303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14669 .loc 1 3303 3 view .LVU4388 + 14670 009e 2268 ldr r2, [r4] + 14671 00a0 1368 ldr r3, [r2] + 14672 00a2 43F00103 orr r3, r3, #1 + 14673 00a6 1360 str r3, [r2] +3306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14674 .loc 1 3306 3 view .LVU4389 +3306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14675 .loc 1 3306 10 is_stmt 0 view .LVU4390 + 14676 00a8 0020 movs r0, #0 + 14677 .L1154: +3307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14678 .loc 1 3307 1 view .LVU4391 + 14679 00aa 38BD pop {r3, r4, r5, pc} + 14680 .LVL1143: + 14681 .L1158: + ARM GAS /tmp/ccPLZXyC.s page 462 + + +3291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14682 .loc 1 3291 7 is_stmt 1 view .LVU4392 + 14683 00ac 0122 movs r2, #1 + 14684 00ae 0421 movs r1, #4 + 14685 .LVL1144: +3291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14686 .loc 1 3291 7 is_stmt 0 view .LVU4393 + 14687 00b0 2068 ldr r0, [r4] + 14688 .LVL1145: +3291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14689 .loc 1 3291 7 view .LVU4394 + 14690 00b2 FFF7FEFF bl TIM_CCxChannelCmd + 14691 .LVL1146: +3292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14692 .loc 1 3292 7 is_stmt 1 view .LVU4395 + 14693 00b6 F2E7 b .L1160 + 14694 .LVL1147: + 14695 .L1161: +3241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14696 .loc 1 3241 14 is_stmt 0 view .LVU4396 + 14697 00b8 0120 movs r0, #1 + 14698 .LVL1148: +3241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14699 .loc 1 3241 14 view .LVU4397 + 14700 00ba F6E7 b .L1154 + 14701 .LVL1149: + 14702 .L1162: +3254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14703 .loc 1 3254 14 view .LVU4398 + 14704 00bc 0120 movs r0, #1 + 14705 .LVL1150: +3254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14706 .loc 1 3254 14 view .LVU4399 + 14707 00be F4E7 b .L1154 + 14708 .LVL1151: + 14709 .L1163: +3269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14710 .loc 1 3269 14 view .LVU4400 + 14711 00c0 0120 movs r0, #1 + 14712 .LVL1152: +3269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14713 .loc 1 3269 14 view .LVU4401 + 14714 00c2 F2E7 b .L1154 + 14715 .LVL1153: + 14716 .L1164: +3269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14717 .loc 1 3269 14 view .LVU4402 + 14718 00c4 0120 movs r0, #1 + 14719 .LVL1154: +3269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14720 .loc 1 3269 14 view .LVU4403 + 14721 00c6 F0E7 b .L1154 + 14722 .cfi_endproc + 14723 .LFE193: + 14725 .section .text.HAL_TIM_Encoder_Stop,"ax",%progbits + 14726 .align 1 + 14727 .global HAL_TIM_Encoder_Stop + ARM GAS /tmp/ccPLZXyC.s page 463 + + + 14728 .syntax unified + 14729 .thumb + 14730 .thumb_func + 14731 .fpu fpv5-d16 + 14733 HAL_TIM_Encoder_Stop: + 14734 .LVL1155: + 14735 .LFB194: +3320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 14736 .loc 1 3320 1 is_stmt 1 view -0 + 14737 .cfi_startproc + 14738 @ args = 0, pretend = 0, frame = 0 + 14739 @ frame_needed = 0, uses_anonymous_args = 0 +3320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 14740 .loc 1 3320 1 is_stmt 0 view .LVU4405 + 14741 0000 38B5 push {r3, r4, r5, lr} + 14742 .LCFI109: + 14743 .cfi_def_cfa_offset 16 + 14744 .cfi_offset 3, -16 + 14745 .cfi_offset 4, -12 + 14746 .cfi_offset 5, -8 + 14747 .cfi_offset 14, -4 + 14748 0002 0446 mov r4, r0 +3322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14749 .loc 1 3322 3 is_stmt 1 view .LVU4406 +3326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14750 .loc 1 3326 3 view .LVU4407 + 14751 0004 0D46 mov r5, r1 + 14752 0006 61B1 cbz r1, .L1169 + 14753 0008 0429 cmp r1, #4 + 14754 000a 2BD0 beq .L1170 +3342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 14755 .loc 1 3342 7 view .LVU4408 + 14756 000c 0022 movs r2, #0 + 14757 000e 1146 mov r1, r2 + 14758 .LVL1156: +3342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 14759 .loc 1 3342 7 is_stmt 0 view .LVU4409 + 14760 0010 0068 ldr r0, [r0] + 14761 .LVL1157: +3342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 14762 .loc 1 3342 7 view .LVU4410 + 14763 0012 FFF7FEFF bl TIM_CCxChannelCmd + 14764 .LVL1158: +3343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14765 .loc 1 3343 7 is_stmt 1 view .LVU4411 + 14766 0016 0022 movs r2, #0 + 14767 0018 0421 movs r1, #4 + 14768 001a 2068 ldr r0, [r4] + 14769 001c FFF7FEFF bl TIM_CCxChannelCmd + 14770 .LVL1159: +3344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14771 .loc 1 3344 7 view .LVU4412 + 14772 0020 04E0 b .L1172 + 14773 .LVL1160: + 14774 .L1169: +3330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14775 .loc 1 3330 7 view .LVU4413 + ARM GAS /tmp/ccPLZXyC.s page 464 + + + 14776 0022 0022 movs r2, #0 + 14777 0024 1146 mov r1, r2 + 14778 .LVL1161: +3330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14779 .loc 1 3330 7 is_stmt 0 view .LVU4414 + 14780 0026 0068 ldr r0, [r0] + 14781 .LVL1162: +3330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14782 .loc 1 3330 7 view .LVU4415 + 14783 0028 FFF7FEFF bl TIM_CCxChannelCmd + 14784 .LVL1163: +3331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14785 .loc 1 3331 7 is_stmt 1 view .LVU4416 + 14786 .L1172: +3349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14787 .loc 1 3349 3 view .LVU4417 +3349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14788 .loc 1 3349 3 view .LVU4418 + 14789 002c 2368 ldr r3, [r4] + 14790 002e 196A ldr r1, [r3, #32] + 14791 0030 41F21112 movw r2, #4369 + 14792 0034 1142 tst r1, r2 + 14793 0036 08D1 bne .L1173 +3349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14794 .loc 1 3349 3 discriminator 1 view .LVU4419 + 14795 0038 196A ldr r1, [r3, #32] + 14796 003a 40F24442 movw r2, #1092 + 14797 003e 1142 tst r1, r2 + 14798 0040 03D1 bne .L1173 +3349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14799 .loc 1 3349 3 discriminator 3 view .LVU4420 + 14800 0042 1A68 ldr r2, [r3] + 14801 0044 22F00102 bic r2, r2, #1 + 14802 0048 1A60 str r2, [r3] + 14803 .L1173: +3349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14804 .loc 1 3349 3 discriminator 5 view .LVU4421 +3352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14805 .loc 1 3352 3 discriminator 5 view .LVU4422 +3352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14806 .loc 1 3352 6 is_stmt 0 discriminator 5 view .LVU4423 + 14807 004a 042D cmp r5, #4 + 14808 004c 18BF it ne + 14809 004e 002D cmpne r5, #0 + 14810 0050 3AD1 bne .L1174 +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14811 .loc 1 3354 5 is_stmt 1 view .LVU4424 + 14812 0052 6DB9 cbnz r5, .L1175 +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14813 .loc 1 3354 5 is_stmt 0 discriminator 1 view .LVU4425 + 14814 0054 0123 movs r3, #1 + 14815 0056 84F83E30 strb r3, [r4, #62] + 14816 .L1176: +3355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14817 .loc 1 3355 5 is_stmt 1 view .LVU4426 + 14818 005a 2DBB cbnz r5, .L1181 +3355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 465 + + + 14819 .loc 1 3355 5 is_stmt 0 discriminator 1 view .LVU4427 + 14820 005c 0123 movs r3, #1 + 14821 005e 84F84430 strb r3, [r4, #68] + 14822 0062 3AE0 b .L1182 + 14823 .LVL1164: + 14824 .L1170: +3336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14825 .loc 1 3336 7 is_stmt 1 view .LVU4428 + 14826 0064 0022 movs r2, #0 + 14827 0066 0421 movs r1, #4 + 14828 .LVL1165: +3336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14829 .loc 1 3336 7 is_stmt 0 view .LVU4429 + 14830 0068 0068 ldr r0, [r0] + 14831 .LVL1166: +3336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 14832 .loc 1 3336 7 view .LVU4430 + 14833 006a FFF7FEFF bl TIM_CCxChannelCmd + 14834 .LVL1167: +3337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14835 .loc 1 3337 7 is_stmt 1 view .LVU4431 + 14836 006e DDE7 b .L1172 + 14837 .L1175: +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14838 .loc 1 3354 5 is_stmt 0 discriminator 2 view .LVU4432 + 14839 0070 042D cmp r5, #4 + 14840 0072 09D0 beq .L1187 +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14841 .loc 1 3354 5 discriminator 4 view .LVU4433 + 14842 0074 082D cmp r5, #8 + 14843 0076 0BD0 beq .L1188 +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14844 .loc 1 3354 5 discriminator 7 view .LVU4434 + 14845 0078 0C2D cmp r5, #12 + 14846 007a 0DD0 beq .L1189 +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14847 .loc 1 3354 5 discriminator 10 view .LVU4435 + 14848 007c 102D cmp r5, #16 + 14849 007e 0FD0 beq .L1190 +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14850 .loc 1 3354 5 discriminator 13 view .LVU4436 + 14851 0080 0123 movs r3, #1 + 14852 0082 84F84330 strb r3, [r4, #67] + 14853 0086 E8E7 b .L1176 + 14854 .L1187: +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14855 .loc 1 3354 5 discriminator 3 view .LVU4437 + 14856 0088 0123 movs r3, #1 + 14857 008a 84F83F30 strb r3, [r4, #63] + 14858 008e E4E7 b .L1176 + 14859 .L1188: +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14860 .loc 1 3354 5 discriminator 6 view .LVU4438 + 14861 0090 0123 movs r3, #1 + 14862 0092 84F84030 strb r3, [r4, #64] + 14863 0096 E0E7 b .L1176 + 14864 .L1189: + ARM GAS /tmp/ccPLZXyC.s page 466 + + +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14865 .loc 1 3354 5 discriminator 9 view .LVU4439 + 14866 0098 0123 movs r3, #1 + 14867 009a 84F84130 strb r3, [r4, #65] + 14868 009e DCE7 b .L1176 + 14869 .L1190: +3354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 14870 .loc 1 3354 5 discriminator 12 view .LVU4440 + 14871 00a0 0123 movs r3, #1 + 14872 00a2 84F84230 strb r3, [r4, #66] + 14873 00a6 D8E7 b .L1176 + 14874 .L1181: +3355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14875 .loc 1 3355 5 discriminator 2 view .LVU4441 + 14876 00a8 042D cmp r5, #4 + 14877 00aa 05D0 beq .L1191 +3355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14878 .loc 1 3355 5 discriminator 4 view .LVU4442 + 14879 00ac 082D cmp r5, #8 + 14880 00ae 07D0 beq .L1192 +3355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14881 .loc 1 3355 5 discriminator 7 view .LVU4443 + 14882 00b0 0123 movs r3, #1 + 14883 00b2 84F84730 strb r3, [r4, #71] + 14884 00b6 10E0 b .L1182 + 14885 .L1191: +3355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14886 .loc 1 3355 5 discriminator 3 view .LVU4444 + 14887 00b8 0123 movs r3, #1 + 14888 00ba 84F84530 strb r3, [r4, #69] + 14889 00be 0CE0 b .L1182 + 14890 .L1192: +3355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14891 .loc 1 3355 5 discriminator 6 view .LVU4445 + 14892 00c0 0123 movs r3, #1 + 14893 00c2 84F84630 strb r3, [r4, #70] + 14894 00c6 08E0 b .L1182 + 14895 .L1174: +3359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 14896 .loc 1 3359 5 is_stmt 1 view .LVU4446 + 14897 00c8 0123 movs r3, #1 + 14898 00ca 84F83E30 strb r3, [r4, #62] +3360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 14899 .loc 1 3360 5 view .LVU4447 + 14900 00ce 84F83F30 strb r3, [r4, #63] +3361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 14901 .loc 1 3361 5 view .LVU4448 + 14902 00d2 84F84430 strb r3, [r4, #68] +3362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14903 .loc 1 3362 5 view .LVU4449 + 14904 00d6 84F84530 strb r3, [r4, #69] + 14905 .L1182: +3366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14906 .loc 1 3366 3 view .LVU4450 +3367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14907 .loc 1 3367 1 is_stmt 0 view .LVU4451 + 14908 00da 0020 movs r0, #0 + ARM GAS /tmp/ccPLZXyC.s page 467 + + + 14909 00dc 38BD pop {r3, r4, r5, pc} +3367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14910 .loc 1 3367 1 view .LVU4452 + 14911 .cfi_endproc + 14912 .LFE194: + 14914 .section .text.HAL_TIM_Encoder_Start_IT,"ax",%progbits + 14915 .align 1 + 14916 .global HAL_TIM_Encoder_Start_IT + 14917 .syntax unified + 14918 .thumb + 14919 .thumb_func + 14920 .fpu fpv5-d16 + 14922 HAL_TIM_Encoder_Start_IT: + 14923 .LVL1168: + 14924 .LFB195: +3380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 14925 .loc 1 3380 1 is_stmt 1 view -0 + 14926 .cfi_startproc + 14927 @ args = 0, pretend = 0, frame = 0 + 14928 @ frame_needed = 0, uses_anonymous_args = 0 +3380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 14929 .loc 1 3380 1 is_stmt 0 view .LVU4454 + 14930 0000 38B5 push {r3, r4, r5, lr} + 14931 .LCFI110: + 14932 .cfi_def_cfa_offset 16 + 14933 .cfi_offset 3, -16 + 14934 .cfi_offset 4, -12 + 14935 .cfi_offset 5, -8 + 14936 .cfi_offset 14, -4 + 14937 0002 0446 mov r4, r0 +3381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 14938 .loc 1 3381 3 is_stmt 1 view .LVU4455 +3381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 14939 .loc 1 3381 31 is_stmt 0 view .LVU4456 + 14940 0004 90F83E30 ldrb r3, [r0, #62] @ zero_extendqisi2 + 14941 0008 DBB2 uxtb r3, r3 + 14942 .LVL1169: +3382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14943 .loc 1 3382 3 is_stmt 1 view .LVU4457 +3382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14944 .loc 1 3382 31 is_stmt 0 view .LVU4458 + 14945 000a 90F83F20 ldrb r2, [r0, #63] @ zero_extendqisi2 + 14946 000e 5FFA82FC uxtb ip, r2 + 14947 .LVL1170: +3383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14948 .loc 1 3383 3 is_stmt 1 view .LVU4459 +3383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 14949 .loc 1 3383 31 is_stmt 0 view .LVU4460 + 14950 0012 90F84420 ldrb r2, [r0, #68] @ zero_extendqisi2 + 14951 0016 D0B2 uxtb r0, r2 + 14952 .LVL1171: +3384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14953 .loc 1 3384 3 is_stmt 1 view .LVU4461 +3384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14954 .loc 1 3384 31 is_stmt 0 view .LVU4462 + 14955 0018 94F84520 ldrb r2, [r4, #69] @ zero_extendqisi2 + 14956 .LVL1172: + ARM GAS /tmp/ccPLZXyC.s page 468 + + +3387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 14957 .loc 1 3387 3 is_stmt 1 view .LVU4463 +3390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14958 .loc 1 3390 3 view .LVU4464 +3390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14959 .loc 1 3390 6 is_stmt 0 view .LVU4465 + 14960 001c 0D46 mov r5, r1 + 14961 001e 09BB cbnz r1, .L1194 +3392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)) + 14962 .loc 1 3392 5 is_stmt 1 view .LVU4466 +3392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY)) + 14963 .loc 1 3392 8 is_stmt 0 view .LVU4467 + 14964 0020 0128 cmp r0, #1 + 14965 0022 08BF it eq + 14966 0024 012B cmpeq r3, #1 + 14967 0026 5DD1 bne .L1202 +3399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 14968 .loc 1 3399 7 is_stmt 1 view .LVU4468 + 14969 0028 0223 movs r3, #2 + 14970 .LVL1173: +3399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 14971 .loc 1 3399 7 is_stmt 0 view .LVU4469 + 14972 002a 84F83E30 strb r3, [r4, #62] +3400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 14973 .loc 1 3400 7 is_stmt 1 view .LVU4470 + 14974 002e 84F84430 strb r3, [r4, #68] + 14975 .LVL1174: + 14976 .L1196: +3436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 14977 .loc 1 3436 3 view .LVU4471 + 14978 0032 002D cmp r5, #0 + 14979 0034 3AD0 beq .L1198 + 14980 0036 042D cmp r5, #4 + 14981 0038 49D0 beq .L1199 +3454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14982 .loc 1 3454 7 view .LVU4472 + 14983 003a 0122 movs r2, #1 + 14984 003c 0021 movs r1, #0 + 14985 .LVL1175: +3454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14986 .loc 1 3454 7 is_stmt 0 view .LVU4473 + 14987 003e 2068 ldr r0, [r4] + 14988 .LVL1176: +3454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 14989 .loc 1 3454 7 view .LVU4474 + 14990 0040 FFF7FEFF bl TIM_CCxChannelCmd + 14991 .LVL1177: +3455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + 14992 .loc 1 3455 7 is_stmt 1 view .LVU4475 + 14993 0044 0122 movs r2, #1 + 14994 0046 0421 movs r1, #4 + 14995 0048 2068 ldr r0, [r4] + 14996 004a FFF7FEFF bl TIM_CCxChannelCmd + 14997 .LVL1178: +3456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + 14998 .loc 1 3456 7 view .LVU4476 + 14999 004e 2268 ldr r2, [r4] + ARM GAS /tmp/ccPLZXyC.s page 469 + + + 15000 0050 D368 ldr r3, [r2, #12] + 15001 0052 43F00203 orr r3, r3, #2 + 15002 0056 D360 str r3, [r2, #12] +3457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 15003 .loc 1 3457 7 view .LVU4477 + 15004 0058 2268 ldr r2, [r4] + 15005 005a D368 ldr r3, [r2, #12] + 15006 005c 43F00403 orr r3, r3, #4 + 15007 0060 D360 str r3, [r2, #12] +3458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15008 .loc 1 3458 7 view .LVU4478 + 15009 0062 2DE0 b .L1201 + 15010 .LVL1179: + 15011 .L1194: +3458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15012 .loc 1 3458 7 is_stmt 0 view .LVU4479 + 15013 0064 D2B2 uxtb r2, r2 +3403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15014 .loc 1 3403 8 is_stmt 1 view .LVU4480 +3403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15015 .loc 1 3403 11 is_stmt 0 view .LVU4481 + 15016 0066 0429 cmp r1, #4 + 15017 0068 15D0 beq .L1208 +3418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 15018 .loc 1 3418 5 is_stmt 1 view .LVU4482 +3418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 15019 .loc 1 3418 8 is_stmt 0 view .LVU4483 + 15020 006a BCF1010F cmp ip, #1 + 15021 006e 08BF it eq + 15022 0070 012B cmpeq r3, #1 + 15023 0072 3BD1 bne .L1204 +3421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15024 .loc 1 3421 43 view .LVU4484 + 15025 0074 013A subs r2, r2, #1 + 15026 .LVL1180: +3421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15027 .loc 1 3421 43 view .LVU4485 + 15028 0076 18BF it ne + 15029 0078 0122 movne r2, #1 + 15030 .LVL1181: +3421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15031 .loc 1 3421 9 view .LVU4486 + 15032 007a 0128 cmp r0, #1 + 15033 007c 38D1 bne .L1205 + 15034 007e 002A cmp r2, #0 + 15035 0080 36D1 bne .L1205 +3427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 15036 .loc 1 3427 7 is_stmt 1 view .LVU4487 + 15037 0082 0223 movs r3, #2 + 15038 .LVL1182: +3427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 15039 .loc 1 3427 7 is_stmt 0 view .LVU4488 + 15040 0084 84F83E30 strb r3, [r4, #62] +3428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 15041 .loc 1 3428 7 is_stmt 1 view .LVU4489 + 15042 0088 84F83F30 strb r3, [r4, #63] +3429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + ARM GAS /tmp/ccPLZXyC.s page 470 + + + 15043 .loc 1 3429 7 view .LVU4490 + 15044 008c 84F84430 strb r3, [r4, #68] +3430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15045 .loc 1 3430 7 view .LVU4491 + 15046 0090 84F84530 strb r3, [r4, #69] + 15047 0094 CDE7 b .L1196 + 15048 .LVL1183: + 15049 .L1208: +3405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + 15050 .loc 1 3405 5 view .LVU4492 +3405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + 15051 .loc 1 3405 8 is_stmt 0 view .LVU4493 + 15052 0096 012A cmp r2, #1 + 15053 0098 08BF it eq + 15054 009a BCF1010F cmpeq ip, #1 + 15055 009e 23D1 bne .L1203 +3412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 15056 .loc 1 3412 7 is_stmt 1 view .LVU4494 + 15057 00a0 0223 movs r3, #2 + 15058 .LVL1184: +3412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 15059 .loc 1 3412 7 is_stmt 0 view .LVU4495 + 15060 00a2 84F83F30 strb r3, [r4, #63] +3413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15061 .loc 1 3413 7 is_stmt 1 view .LVU4496 + 15062 00a6 84F84530 strb r3, [r4, #69] + 15063 00aa C2E7 b .L1196 + 15064 .LVL1185: + 15065 .L1198: +3440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + 15066 .loc 1 3440 7 view .LVU4497 + 15067 00ac 0122 movs r2, #1 + 15068 00ae 0021 movs r1, #0 + 15069 .LVL1186: +3440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + 15070 .loc 1 3440 7 is_stmt 0 view .LVU4498 + 15071 00b0 2068 ldr r0, [r4] + 15072 .LVL1187: +3440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + 15073 .loc 1 3440 7 view .LVU4499 + 15074 00b2 FFF7FEFF bl TIM_CCxChannelCmd + 15075 .LVL1188: +3441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 15076 .loc 1 3441 7 is_stmt 1 view .LVU4500 + 15077 00b6 2268 ldr r2, [r4] + 15078 00b8 D368 ldr r3, [r2, #12] + 15079 00ba 43F00203 orr r3, r3, #2 + 15080 00be D360 str r3, [r2, #12] +3442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15081 .loc 1 3442 7 view .LVU4501 + 15082 .L1201: +3463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15083 .loc 1 3463 3 view .LVU4502 + 15084 00c0 2268 ldr r2, [r4] + 15085 00c2 1368 ldr r3, [r2] + 15086 00c4 43F00103 orr r3, r3, #1 + 15087 00c8 1360 str r3, [r2] + ARM GAS /tmp/ccPLZXyC.s page 471 + + +3466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15088 .loc 1 3466 3 view .LVU4503 +3466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15089 .loc 1 3466 10 is_stmt 0 view .LVU4504 + 15090 00ca 0020 movs r0, #0 + 15091 .L1195: +3467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15092 .loc 1 3467 1 view .LVU4505 + 15093 00cc 38BD pop {r3, r4, r5, pc} + 15094 .LVL1189: + 15095 .L1199: +3447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + 15096 .loc 1 3447 7 is_stmt 1 view .LVU4506 + 15097 00ce 0122 movs r2, #1 + 15098 00d0 0421 movs r1, #4 + 15099 .LVL1190: +3447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + 15100 .loc 1 3447 7 is_stmt 0 view .LVU4507 + 15101 00d2 2068 ldr r0, [r4] + 15102 .LVL1191: +3447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + 15103 .loc 1 3447 7 view .LVU4508 + 15104 00d4 FFF7FEFF bl TIM_CCxChannelCmd + 15105 .LVL1192: +3448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** break; + 15106 .loc 1 3448 7 is_stmt 1 view .LVU4509 + 15107 00d8 2268 ldr r2, [r4] + 15108 00da D368 ldr r3, [r2, #12] + 15109 00dc 43F00403 orr r3, r3, #4 + 15110 00e0 D360 str r3, [r2, #12] +3449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15111 .loc 1 3449 7 view .LVU4510 + 15112 00e2 EDE7 b .L1201 + 15113 .LVL1193: + 15114 .L1202: +3395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15115 .loc 1 3395 14 is_stmt 0 view .LVU4511 + 15116 00e4 0120 movs r0, #1 + 15117 .LVL1194: +3395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15118 .loc 1 3395 14 view .LVU4512 + 15119 00e6 F1E7 b .L1195 + 15120 .LVL1195: + 15121 .L1203: +3408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15122 .loc 1 3408 14 view .LVU4513 + 15123 00e8 0120 movs r0, #1 + 15124 .LVL1196: +3408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15125 .loc 1 3408 14 view .LVU4514 + 15126 00ea EFE7 b .L1195 + 15127 .LVL1197: + 15128 .L1204: +3423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15129 .loc 1 3423 14 view .LVU4515 + 15130 00ec 0120 movs r0, #1 + 15131 .LVL1198: + ARM GAS /tmp/ccPLZXyC.s page 472 + + +3423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15132 .loc 1 3423 14 view .LVU4516 + 15133 00ee EDE7 b .L1195 + 15134 .LVL1199: + 15135 .L1205: +3423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15136 .loc 1 3423 14 view .LVU4517 + 15137 00f0 0120 movs r0, #1 + 15138 .LVL1200: +3423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15139 .loc 1 3423 14 view .LVU4518 + 15140 00f2 EBE7 b .L1195 + 15141 .cfi_endproc + 15142 .LFE195: + 15144 .section .text.HAL_TIM_Encoder_Stop_IT,"ax",%progbits + 15145 .align 1 + 15146 .global HAL_TIM_Encoder_Stop_IT + 15147 .syntax unified + 15148 .thumb + 15149 .thumb_func + 15150 .fpu fpv5-d16 + 15152 HAL_TIM_Encoder_Stop_IT: + 15153 .LVL1201: + 15154 .LFB196: +3480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 15155 .loc 1 3480 1 is_stmt 1 view -0 + 15156 .cfi_startproc + 15157 @ args = 0, pretend = 0, frame = 0 + 15158 @ frame_needed = 0, uses_anonymous_args = 0 +3480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 15159 .loc 1 3480 1 is_stmt 0 view .LVU4520 + 15160 0000 38B5 push {r3, r4, r5, lr} + 15161 .LCFI111: + 15162 .cfi_def_cfa_offset 16 + 15163 .cfi_offset 3, -16 + 15164 .cfi_offset 4, -12 + 15165 .cfi_offset 5, -8 + 15166 .cfi_offset 14, -4 + 15167 0002 0446 mov r4, r0 +3482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15168 .loc 1 3482 3 is_stmt 1 view .LVU4521 +3486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15169 .loc 1 3486 3 view .LVU4522 +3486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15170 .loc 1 3486 6 is_stmt 0 view .LVU4523 + 15171 0004 0D46 mov r5, r1 + 15172 0006 0029 cmp r1, #0 + 15173 0008 31D0 beq .L1226 +3493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15174 .loc 1 3493 8 is_stmt 1 view .LVU4524 +3493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15175 .loc 1 3493 11 is_stmt 0 view .LVU4525 + 15176 000a 0429 cmp r1, #4 + 15177 000c 3AD0 beq .L1227 +3502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 15178 .loc 1 3502 5 is_stmt 1 view .LVU4526 + 15179 000e 0022 movs r2, #0 + ARM GAS /tmp/ccPLZXyC.s page 473 + + + 15180 0010 1146 mov r1, r2 + 15181 .LVL1202: +3502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 15182 .loc 1 3502 5 is_stmt 0 view .LVU4527 + 15183 0012 0068 ldr r0, [r0] + 15184 .LVL1203: +3502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 15185 .loc 1 3502 5 view .LVU4528 + 15186 0014 FFF7FEFF bl TIM_CCxChannelCmd + 15187 .LVL1204: +3503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15188 .loc 1 3503 5 is_stmt 1 view .LVU4529 + 15189 0018 0022 movs r2, #0 + 15190 001a 0421 movs r1, #4 + 15191 001c 2068 ldr r0, [r4] + 15192 001e FFF7FEFF bl TIM_CCxChannelCmd + 15193 .LVL1205: +3506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + 15194 .loc 1 3506 5 view .LVU4530 + 15195 0022 2268 ldr r2, [r4] + 15196 0024 D368 ldr r3, [r2, #12] + 15197 0026 23F00203 bic r3, r3, #2 + 15198 002a D360 str r3, [r2, #12] +3507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15199 .loc 1 3507 5 view .LVU4531 + 15200 002c 2268 ldr r2, [r4] + 15201 002e D368 ldr r3, [r2, #12] + 15202 0030 23F00403 bic r3, r3, #4 + 15203 0034 D360 str r3, [r2, #12] + 15204 .L1211: +3511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15205 .loc 1 3511 3 view .LVU4532 +3511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15206 .loc 1 3511 3 view .LVU4533 + 15207 0036 2368 ldr r3, [r4] + 15208 0038 196A ldr r1, [r3, #32] + 15209 003a 41F21112 movw r2, #4369 + 15210 003e 1142 tst r1, r2 + 15211 0040 08D1 bne .L1213 +3511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15212 .loc 1 3511 3 discriminator 1 view .LVU4534 + 15213 0042 196A ldr r1, [r3, #32] + 15214 0044 40F24442 movw r2, #1092 + 15215 0048 1142 tst r1, r2 + 15216 004a 03D1 bne .L1213 +3511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15217 .loc 1 3511 3 discriminator 3 view .LVU4535 + 15218 004c 1A68 ldr r2, [r3] + 15219 004e 22F00102 bic r2, r2, #1 + 15220 0052 1A60 str r2, [r3] + 15221 .L1213: +3511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15222 .loc 1 3511 3 discriminator 5 view .LVU4536 +3514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15223 .loc 1 3514 3 discriminator 5 view .LVU4537 +3514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15224 .loc 1 3514 6 is_stmt 0 discriminator 5 view .LVU4538 + ARM GAS /tmp/ccPLZXyC.s page 474 + + + 15225 0054 042D cmp r5, #4 + 15226 0056 18BF it ne + 15227 0058 002D cmpne r5, #0 + 15228 005a 4AD1 bne .L1214 +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15229 .loc 1 3516 5 is_stmt 1 view .LVU4539 + 15230 005c EDB9 cbnz r5, .L1215 +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15231 .loc 1 3516 5 is_stmt 0 discriminator 1 view .LVU4540 + 15232 005e 0123 movs r3, #1 + 15233 0060 84F83E30 strb r3, [r4, #62] + 15234 .L1216: +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15235 .loc 1 3517 5 is_stmt 1 view .LVU4541 + 15236 0064 ADBB cbnz r5, .L1221 +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15237 .loc 1 3517 5 is_stmt 0 discriminator 1 view .LVU4542 + 15238 0066 0123 movs r3, #1 + 15239 0068 84F84430 strb r3, [r4, #68] + 15240 006c 4AE0 b .L1222 + 15241 .LVL1206: + 15242 .L1226: +3488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15243 .loc 1 3488 5 is_stmt 1 view .LVU4543 + 15244 006e 0022 movs r2, #0 + 15245 0070 1146 mov r1, r2 + 15246 .LVL1207: +3488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15247 .loc 1 3488 5 is_stmt 0 view .LVU4544 + 15248 0072 0068 ldr r0, [r0] + 15249 .LVL1208: +3488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15250 .loc 1 3488 5 view .LVU4545 + 15251 0074 FFF7FEFF bl TIM_CCxChannelCmd + 15252 .LVL1209: +3491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15253 .loc 1 3491 5 is_stmt 1 view .LVU4546 + 15254 0078 2268 ldr r2, [r4] + 15255 007a D368 ldr r3, [r2, #12] + 15256 007c 23F00203 bic r3, r3, #2 + 15257 0080 D360 str r3, [r2, #12] + 15258 0082 D8E7 b .L1211 + 15259 .LVL1210: + 15260 .L1227: +3495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15261 .loc 1 3495 5 view .LVU4547 + 15262 0084 0022 movs r2, #0 + 15263 0086 0421 movs r1, #4 + 15264 .LVL1211: +3495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15265 .loc 1 3495 5 is_stmt 0 view .LVU4548 + 15266 0088 0068 ldr r0, [r0] + 15267 .LVL1212: +3495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15268 .loc 1 3495 5 view .LVU4549 + 15269 008a FFF7FEFF bl TIM_CCxChannelCmd + 15270 .LVL1213: + ARM GAS /tmp/ccPLZXyC.s page 475 + + +3498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15271 .loc 1 3498 5 is_stmt 1 view .LVU4550 + 15272 008e 2268 ldr r2, [r4] + 15273 0090 D368 ldr r3, [r2, #12] + 15274 0092 23F00403 bic r3, r3, #4 + 15275 0096 D360 str r3, [r2, #12] + 15276 0098 CDE7 b .L1211 + 15277 .L1215: +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15278 .loc 1 3516 5 is_stmt 0 discriminator 2 view .LVU4551 + 15279 009a 042D cmp r5, #4 + 15280 009c 09D0 beq .L1228 +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15281 .loc 1 3516 5 discriminator 4 view .LVU4552 + 15282 009e 082D cmp r5, #8 + 15283 00a0 0BD0 beq .L1229 +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15284 .loc 1 3516 5 discriminator 7 view .LVU4553 + 15285 00a2 0C2D cmp r5, #12 + 15286 00a4 0DD0 beq .L1230 +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15287 .loc 1 3516 5 discriminator 10 view .LVU4554 + 15288 00a6 102D cmp r5, #16 + 15289 00a8 0FD0 beq .L1231 +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15290 .loc 1 3516 5 discriminator 13 view .LVU4555 + 15291 00aa 0123 movs r3, #1 + 15292 00ac 84F84330 strb r3, [r4, #67] + 15293 00b0 D8E7 b .L1216 + 15294 .L1228: +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15295 .loc 1 3516 5 discriminator 3 view .LVU4556 + 15296 00b2 0123 movs r3, #1 + 15297 00b4 84F83F30 strb r3, [r4, #63] + 15298 00b8 D4E7 b .L1216 + 15299 .L1229: +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15300 .loc 1 3516 5 discriminator 6 view .LVU4557 + 15301 00ba 0123 movs r3, #1 + 15302 00bc 84F84030 strb r3, [r4, #64] + 15303 00c0 D0E7 b .L1216 + 15304 .L1230: +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15305 .loc 1 3516 5 discriminator 9 view .LVU4558 + 15306 00c2 0123 movs r3, #1 + 15307 00c4 84F84130 strb r3, [r4, #65] + 15308 00c8 CCE7 b .L1216 + 15309 .L1231: +3516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15310 .loc 1 3516 5 discriminator 12 view .LVU4559 + 15311 00ca 0123 movs r3, #1 + 15312 00cc 84F84230 strb r3, [r4, #66] + 15313 00d0 C8E7 b .L1216 + 15314 .L1221: +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15315 .loc 1 3517 5 discriminator 2 view .LVU4560 + 15316 00d2 042D cmp r5, #4 + ARM GAS /tmp/ccPLZXyC.s page 476 + + + 15317 00d4 05D0 beq .L1232 +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15318 .loc 1 3517 5 discriminator 4 view .LVU4561 + 15319 00d6 082D cmp r5, #8 + 15320 00d8 07D0 beq .L1233 +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15321 .loc 1 3517 5 discriminator 7 view .LVU4562 + 15322 00da 0123 movs r3, #1 + 15323 00dc 84F84730 strb r3, [r4, #71] + 15324 00e0 10E0 b .L1222 + 15325 .L1232: +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15326 .loc 1 3517 5 discriminator 3 view .LVU4563 + 15327 00e2 0123 movs r3, #1 + 15328 00e4 84F84530 strb r3, [r4, #69] + 15329 00e8 0CE0 b .L1222 + 15330 .L1233: +3517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15331 .loc 1 3517 5 discriminator 6 view .LVU4564 + 15332 00ea 0123 movs r3, #1 + 15333 00ec 84F84630 strb r3, [r4, #70] + 15334 00f0 08E0 b .L1222 + 15335 .L1214: +3521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 15336 .loc 1 3521 5 is_stmt 1 view .LVU4565 + 15337 00f2 0123 movs r3, #1 + 15338 00f4 84F83E30 strb r3, [r4, #62] +3522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 15339 .loc 1 3522 5 view .LVU4566 + 15340 00f8 84F83F30 strb r3, [r4, #63] +3523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 15341 .loc 1 3523 5 view .LVU4567 + 15342 00fc 84F84430 strb r3, [r4, #68] +3524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15343 .loc 1 3524 5 view .LVU4568 + 15344 0100 84F84530 strb r3, [r4, #69] + 15345 .L1222: +3528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15346 .loc 1 3528 3 view .LVU4569 +3529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15347 .loc 1 3529 1 is_stmt 0 view .LVU4570 + 15348 0104 0020 movs r0, #0 + 15349 0106 38BD pop {r3, r4, r5, pc} +3529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15350 .loc 1 3529 1 view .LVU4571 + 15351 .cfi_endproc + 15352 .LFE196: + 15354 .section .text.HAL_TIM_Encoder_Start_DMA,"ax",%progbits + 15355 .align 1 + 15356 .global HAL_TIM_Encoder_Start_DMA + 15357 .syntax unified + 15358 .thumb + 15359 .thumb_func + 15360 .fpu fpv5-d16 + 15362 HAL_TIM_Encoder_Start_DMA: + 15363 .LVL1214: + 15364 .LFB197: + ARM GAS /tmp/ccPLZXyC.s page 477 + + +3546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 15365 .loc 1 3546 1 is_stmt 1 view -0 + 15366 .cfi_startproc + 15367 @ args = 4, pretend = 0, frame = 0 + 15368 @ frame_needed = 0, uses_anonymous_args = 0 +3546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 15369 .loc 1 3546 1 is_stmt 0 view .LVU4573 + 15370 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 15371 .LCFI112: + 15372 .cfi_def_cfa_offset 24 + 15373 .cfi_offset 3, -24 + 15374 .cfi_offset 4, -20 + 15375 .cfi_offset 5, -16 + 15376 .cfi_offset 6, -12 + 15377 .cfi_offset 7, -8 + 15378 .cfi_offset 14, -4 + 15379 0002 0446 mov r4, r0 + 15380 0004 1D46 mov r5, r3 + 15381 0006 BDF81860 ldrh r6, [sp, #24] +3547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 15382 .loc 1 3547 3 is_stmt 1 view .LVU4574 +3547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 15383 .loc 1 3547 31 is_stmt 0 view .LVU4575 + 15384 000a 90F83E00 ldrb r0, [r0, #62] @ zero_extendqisi2 + 15385 .LVL1215: +3547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 15386 .loc 1 3547 31 view .LVU4576 + 15387 000e C0B2 uxtb r0, r0 + 15388 .LVL1216: +3548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 15389 .loc 1 3548 3 is_stmt 1 view .LVU4577 +3548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 15390 .loc 1 3548 31 is_stmt 0 view .LVU4578 + 15391 0010 94F83F30 ldrb r3, [r4, #63] @ zero_extendqisi2 + 15392 .LVL1217: +3549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 15393 .loc 1 3549 3 is_stmt 1 view .LVU4579 +3549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 15394 .loc 1 3549 31 is_stmt 0 view .LVU4580 + 15395 0014 94F844C0 ldrb ip, [r4, #68] @ zero_extendqisi2 + 15396 0018 5FFA8CFC uxtb ip, ip + 15397 .LVL1218: +3550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15398 .loc 1 3550 3 is_stmt 1 view .LVU4581 +3550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15399 .loc 1 3550 31 is_stmt 0 view .LVU4582 + 15400 001c 94F845E0 ldrb lr, [r4, #69] @ zero_extendqisi2 + 15401 .LVL1219: +3553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15402 .loc 1 3553 3 is_stmt 1 view .LVU4583 +3556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15403 .loc 1 3556 3 view .LVU4584 +3556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15404 .loc 1 3556 6 is_stmt 0 view .LVU4585 + 15405 0020 0F46 mov r7, r1 + 15406 0022 71BB cbnz r1, .L1235 +3558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)) + ARM GAS /tmp/ccPLZXyC.s page 478 + + + 15407 .loc 1 3558 5 is_stmt 1 view .LVU4586 +3558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)) + 15408 .loc 1 3558 8 is_stmt 0 view .LVU4587 + 15409 0024 BCF1020F cmp ip, #2 + 15410 0028 18BF it ne + 15411 002a 0228 cmpne r0, #2 + 15412 002c 00F0EE80 beq .L1242 +3563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)) + 15413 .loc 1 3563 10 is_stmt 1 view .LVU4588 +3563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)) + 15414 .loc 1 3563 13 is_stmt 0 view .LVU4589 + 15415 0030 0128 cmp r0, #1 + 15416 0032 08BF it eq + 15417 0034 BCF1010F cmpeq ip, #1 + 15418 0038 40F0EA80 bne .L1243 +3566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15419 .loc 1 3566 7 is_stmt 1 view .LVU4590 +3566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15420 .loc 1 3566 10 is_stmt 0 view .LVU4591 + 15421 003c 002E cmp r6, #0 + 15422 003e 18BF it ne + 15423 0040 002A cmpne r2, #0 + 15424 0042 00F0E880 beq .L1244 +3572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 15425 .loc 1 3572 9 is_stmt 1 view .LVU4592 + 15426 0046 0223 movs r3, #2 + 15427 .LVL1220: +3572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 15428 .loc 1 3572 9 is_stmt 0 view .LVU4593 + 15429 0048 84F83E30 strb r3, [r4, #62] +3573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15430 .loc 1 3573 9 is_stmt 1 view .LVU4594 + 15431 004c 84F84430 strb r3, [r4, #68] + 15432 .LVL1221: + 15433 .L1237: +3638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15434 .loc 1 3638 3 view .LVU4595 + 15435 0050 002F cmp r7, #0 + 15436 0052 66D0 beq .L1239 + 15437 0054 042F cmp r7, #4 + 15438 0056 00F08780 beq .L1240 +3698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15439 .loc 1 3698 7 view .LVU4596 +3698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15440 .loc 1 3698 17 is_stmt 0 view .LVU4597 + 15441 005a 636A ldr r3, [r4, #36] +3698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15442 .loc 1 3698 52 view .LVU4598 + 15443 005c 7849 ldr r1, .L1265 + 15444 005e D963 str r1, [r3, #60] +3699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15445 .loc 1 3699 7 is_stmt 1 view .LVU4599 +3699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15446 .loc 1 3699 17 is_stmt 0 view .LVU4600 + 15447 0060 636A ldr r3, [r4, #36] +3699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15448 .loc 1 3699 56 view .LVU4601 + ARM GAS /tmp/ccPLZXyC.s page 479 + + + 15449 0062 7849 ldr r1, .L1265+4 + 15450 0064 1964 str r1, [r3, #64] +3702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15451 .loc 1 3702 7 is_stmt 1 view .LVU4602 +3702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15452 .loc 1 3702 17 is_stmt 0 view .LVU4603 + 15453 0066 636A ldr r3, [r4, #36] +3702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15454 .loc 1 3702 53 view .LVU4604 + 15455 0068 7749 ldr r1, .L1265+8 + 15456 006a D964 str r1, [r3, #76] +3705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15457 .loc 1 3705 7 is_stmt 1 view .LVU4605 +3705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15458 .loc 1 3705 71 is_stmt 0 view .LVU4606 + 15459 006c 2168 ldr r1, [r4] +3705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15460 .loc 1 3705 11 view .LVU4607 + 15461 006e 3346 mov r3, r6 + 15462 0070 3431 adds r1, r1, #52 + 15463 0072 606A ldr r0, [r4, #36] + 15464 .LVL1222: +3705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15465 .loc 1 3705 11 view .LVU4608 + 15466 0074 FFF7FEFF bl HAL_DMA_Start_IT + 15467 .LVL1223: +3705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15468 .loc 1 3705 10 view .LVU4609 + 15469 0078 0028 cmp r0, #0 + 15470 007a 00F09980 beq .L1260 +3709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15471 .loc 1 3709 16 view .LVU4610 + 15472 007e 0125 movs r5, #1 + 15473 .LVL1224: +3709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15474 .loc 1 3709 16 view .LVU4611 + 15475 0080 C7E0 b .L1236 + 15476 .LVL1225: + 15477 .L1235: +3709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15478 .loc 1 3709 16 view .LVU4612 + 15479 0082 DBB2 uxtb r3, r3 +3709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15480 .loc 1 3709 16 view .LVU4613 + 15481 0084 5FFA8EFE uxtb lr, lr +3581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15482 .loc 1 3581 8 is_stmt 1 view .LVU4614 +3581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15483 .loc 1 3581 11 is_stmt 0 view .LVU4615 + 15484 0088 0429 cmp r1, #4 + 15485 008a 33D0 beq .L1261 +3608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY) + 15486 .loc 1 3608 5 is_stmt 1 view .LVU4616 +3608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY) + 15487 .loc 1 3608 8 is_stmt 0 view .LVU4617 + 15488 008c 022B cmp r3, #2 + 15489 008e 18BF it ne + ARM GAS /tmp/ccPLZXyC.s page 480 + + + 15490 0090 0228 cmpne r0, #2 + 15491 0092 00F0C880 beq .L1248 +3611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15492 .loc 1 3611 43 view .LVU4618 + 15493 0096 BEF1020F cmp lr, #2 + 15494 009a 14BF ite ne + 15495 009c 0021 movne r1, #0 + 15496 .LVL1226: +3611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15497 .loc 1 3611 43 view .LVU4619 + 15498 009e 0121 moveq r1, #1 +3611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15499 .loc 1 3611 9 view .LVU4620 + 15500 00a0 BCF1020F cmp ip, #2 + 15501 00a4 00F0C180 beq .L1249 + 15502 00a8 0029 cmp r1, #0 + 15503 00aa 40F0BE80 bne .L1249 +3615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (channel_2_state == HAL_TIM_CHANNEL_STATE_READY) + 15504 .loc 1 3615 10 is_stmt 1 view .LVU4621 +3615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (channel_2_state == HAL_TIM_CHANNEL_STATE_READY) + 15505 .loc 1 3615 13 is_stmt 0 view .LVU4622 + 15506 00ae 0128 cmp r0, #1 + 15507 00b0 08BF it eq + 15508 00b2 012B cmpeq r3, #1 + 15509 00b4 40F0BB80 bne .L1250 +3618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15510 .loc 1 3618 48 view .LVU4623 + 15511 00b8 BEF1010F cmp lr, #1 + 15512 00bc 14BF ite ne + 15513 00be 0023 movne r3, #0 + 15514 .LVL1227: +3618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15515 .loc 1 3618 48 view .LVU4624 + 15516 00c0 0123 moveq r3, #1 +3618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15517 .loc 1 3618 14 view .LVU4625 + 15518 00c2 BCF1010F cmp ip, #1 + 15519 00c6 40F0B480 bne .L1251 + 15520 00ca 002B cmp r3, #0 + 15521 00cc 00F0B180 beq .L1251 +3620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15522 .loc 1 3620 7 is_stmt 1 view .LVU4626 +3620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15523 .loc 1 3620 10 is_stmt 0 view .LVU4627 + 15524 00d0 002D cmp r5, #0 + 15525 00d2 18BF it ne + 15526 00d4 002A cmpne r2, #0 + 15527 00d6 00F0AE80 beq .L1252 +3620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15528 .loc 1 3620 52 discriminator 1 view .LVU4628 + 15529 00da 002E cmp r6, #0 + 15530 00dc 00F0AD80 beq .L1253 +3626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 15531 .loc 1 3626 9 is_stmt 1 view .LVU4629 + 15532 00e0 0223 movs r3, #2 + 15533 00e2 84F83E30 strb r3, [r4, #62] +3627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + ARM GAS /tmp/ccPLZXyC.s page 481 + + + 15534 .loc 1 3627 9 view .LVU4630 + 15535 00e6 84F83F30 strb r3, [r4, #63] +3628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 15536 .loc 1 3628 9 view .LVU4631 + 15537 00ea 84F84430 strb r3, [r4, #68] +3629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15538 .loc 1 3629 9 view .LVU4632 + 15539 00ee 84F84530 strb r3, [r4, #69] +3620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15540 .loc 1 3620 10 is_stmt 0 view .LVU4633 + 15541 00f2 ADE7 b .L1237 + 15542 .LVL1228: + 15543 .L1261: +3583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)) + 15544 .loc 1 3583 5 is_stmt 1 view .LVU4634 +3583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** || (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_BUSY)) + 15545 .loc 1 3583 8 is_stmt 0 view .LVU4635 + 15546 00f4 BEF1020F cmp lr, #2 + 15547 00f8 18BF it ne + 15548 00fa 022B cmpne r3, #2 + 15549 00fc 00F08D80 beq .L1245 +3588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY)) + 15550 .loc 1 3588 10 is_stmt 1 view .LVU4636 +3588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** && (complementary_channel_2_state == HAL_TIM_CHANNEL_STATE_READY)) + 15551 .loc 1 3588 13 is_stmt 0 view .LVU4637 + 15552 0100 012B cmp r3, #1 + 15553 0102 08BF it eq + 15554 0104 BEF1010F cmpeq lr, #1 + 15555 0108 40F08980 bne .L1246 +3591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15556 .loc 1 3591 7 is_stmt 1 view .LVU4638 +3591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15557 .loc 1 3591 10 is_stmt 0 view .LVU4639 + 15558 010c 002E cmp r6, #0 + 15559 010e 18BF it ne + 15560 0110 002D cmpne r5, #0 + 15561 0112 00F08680 beq .L1247 +3597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 15562 .loc 1 3597 9 is_stmt 1 view .LVU4640 + 15563 0116 0223 movs r3, #2 + 15564 .LVL1229: +3597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 15565 .loc 1 3597 9 is_stmt 0 view .LVU4641 + 15566 0118 84F83F30 strb r3, [r4, #63] +3598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15567 .loc 1 3598 9 is_stmt 1 view .LVU4642 + 15568 011c 84F84530 strb r3, [r4, #69] + 15569 0120 96E7 b .L1237 + 15570 .LVL1230: + 15571 .L1239: +3643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15572 .loc 1 3643 7 view .LVU4643 +3643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15573 .loc 1 3643 17 is_stmt 0 view .LVU4644 + 15574 0122 636A ldr r3, [r4, #36] +3643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15575 .loc 1 3643 52 view .LVU4645 + ARM GAS /tmp/ccPLZXyC.s page 482 + + + 15576 0124 4649 ldr r1, .L1265 + 15577 0126 D963 str r1, [r3, #60] +3644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15578 .loc 1 3644 7 is_stmt 1 view .LVU4646 +3644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15579 .loc 1 3644 17 is_stmt 0 view .LVU4647 + 15580 0128 636A ldr r3, [r4, #36] +3644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15581 .loc 1 3644 56 view .LVU4648 + 15582 012a 4649 ldr r1, .L1265+4 + 15583 012c 1964 str r1, [r3, #64] +3647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15584 .loc 1 3647 7 is_stmt 1 view .LVU4649 +3647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15585 .loc 1 3647 17 is_stmt 0 view .LVU4650 + 15586 012e 636A ldr r3, [r4, #36] +3647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15587 .loc 1 3647 53 view .LVU4651 + 15588 0130 4549 ldr r1, .L1265+8 + 15589 0132 D964 str r1, [r3, #76] +3650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15590 .loc 1 3650 7 is_stmt 1 view .LVU4652 +3650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15591 .loc 1 3650 71 is_stmt 0 view .LVU4653 + 15592 0134 2168 ldr r1, [r4] +3650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15593 .loc 1 3650 11 view .LVU4654 + 15594 0136 3346 mov r3, r6 + 15595 0138 3431 adds r1, r1, #52 + 15596 013a 606A ldr r0, [r4, #36] + 15597 .LVL1231: +3650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15598 .loc 1 3650 11 view .LVU4655 + 15599 013c FFF7FEFF bl HAL_DMA_Start_IT + 15600 .LVL1232: +3650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15601 .loc 1 3650 10 view .LVU4656 + 15602 0140 0546 mov r5, r0 + 15603 .LVL1233: +3650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15604 .loc 1 3650 10 view .LVU4657 + 15605 0142 08B1 cbz r0, .L1262 +3654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15606 .loc 1 3654 16 view .LVU4658 + 15607 0144 0125 movs r5, #1 + 15608 0146 64E0 b .L1236 + 15609 .L1262: +3657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15610 .loc 1 3657 7 is_stmt 1 view .LVU4659 + 15611 0148 2268 ldr r2, [r4] + 15612 014a D368 ldr r3, [r2, #12] + 15613 014c 43F40073 orr r3, r3, #512 + 15614 0150 D360 str r3, [r2, #12] +3660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15615 .loc 1 3660 7 view .LVU4660 + 15616 0152 0122 movs r2, #1 + 15617 0154 0021 movs r1, #0 + ARM GAS /tmp/ccPLZXyC.s page 483 + + + 15618 0156 2068 ldr r0, [r4] + 15619 0158 FFF7FEFF bl TIM_CCxChannelCmd + 15620 .LVL1234: +3663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15621 .loc 1 3663 7 view .LVU4661 + 15622 015c 2268 ldr r2, [r4] + 15623 015e 1368 ldr r3, [r2] + 15624 0160 43F00103 orr r3, r3, #1 + 15625 0164 1360 str r3, [r2] +3665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15626 .loc 1 3665 7 view .LVU4662 + 15627 0166 54E0 b .L1236 + 15628 .LVL1235: + 15629 .L1240: +3671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15630 .loc 1 3671 7 view .LVU4663 +3671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15631 .loc 1 3671 17 is_stmt 0 view .LVU4664 + 15632 0168 A36A ldr r3, [r4, #40] +3671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15633 .loc 1 3671 52 view .LVU4665 + 15634 016a 354A ldr r2, .L1265 + 15635 .LVL1236: +3671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15636 .loc 1 3671 52 view .LVU4666 + 15637 016c DA63 str r2, [r3, #60] +3672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15638 .loc 1 3672 7 is_stmt 1 view .LVU4667 +3672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15639 .loc 1 3672 17 is_stmt 0 view .LVU4668 + 15640 016e A36A ldr r3, [r4, #40] +3672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15641 .loc 1 3672 56 view .LVU4669 + 15642 0170 344A ldr r2, .L1265+4 + 15643 0172 1A64 str r2, [r3, #64] +3675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ + 15644 .loc 1 3675 7 is_stmt 1 view .LVU4670 +3675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ + 15645 .loc 1 3675 17 is_stmt 0 view .LVU4671 + 15646 0174 A36A ldr r3, [r4, #40] +3675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the DMA stream */ + 15647 .loc 1 3675 53 view .LVU4672 + 15648 0176 344A ldr r2, .L1265+8 + 15649 0178 DA64 str r2, [r3, #76] +3677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15650 .loc 1 3677 7 is_stmt 1 view .LVU4673 +3677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15651 .loc 1 3677 71 is_stmt 0 view .LVU4674 + 15652 017a 2168 ldr r1, [r4] +3677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15653 .loc 1 3677 11 view .LVU4675 + 15654 017c 3346 mov r3, r6 + 15655 017e 2A46 mov r2, r5 + 15656 0180 3831 adds r1, r1, #56 + 15657 0182 A06A ldr r0, [r4, #40] + 15658 .LVL1237: +3677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + ARM GAS /tmp/ccPLZXyC.s page 484 + + + 15659 .loc 1 3677 11 view .LVU4676 + 15660 0184 FFF7FEFF bl HAL_DMA_Start_IT + 15661 .LVL1238: +3677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15662 .loc 1 3677 10 view .LVU4677 + 15663 0188 0546 mov r5, r0 + 15664 .LVL1239: +3677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15665 .loc 1 3677 10 view .LVU4678 + 15666 018a 08B1 cbz r0, .L1263 +3681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15667 .loc 1 3681 16 view .LVU4679 + 15668 018c 0125 movs r5, #1 + 15669 018e 40E0 b .L1236 + 15670 .L1263: +3684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15671 .loc 1 3684 7 is_stmt 1 view .LVU4680 + 15672 0190 2268 ldr r2, [r4] + 15673 0192 D368 ldr r3, [r2, #12] + 15674 0194 43F48063 orr r3, r3, #1024 + 15675 0198 D360 str r3, [r2, #12] +3687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15676 .loc 1 3687 7 view .LVU4681 + 15677 019a 0122 movs r2, #1 + 15678 019c 0421 movs r1, #4 + 15679 019e 2068 ldr r0, [r4] + 15680 01a0 FFF7FEFF bl TIM_CCxChannelCmd + 15681 .LVL1240: +3690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15682 .loc 1 3690 7 view .LVU4682 + 15683 01a4 2268 ldr r2, [r4] + 15684 01a6 1368 ldr r3, [r2] + 15685 01a8 43F00103 orr r3, r3, #1 + 15686 01ac 1360 str r3, [r2] +3692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15687 .loc 1 3692 7 view .LVU4683 + 15688 01ae 30E0 b .L1236 + 15689 .LVL1241: + 15690 .L1260: +3713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15691 .loc 1 3713 7 view .LVU4684 +3713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15692 .loc 1 3713 17 is_stmt 0 view .LVU4685 + 15693 01b0 A36A ldr r3, [r4, #40] +3713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 15694 .loc 1 3713 52 view .LVU4686 + 15695 01b2 234A ldr r2, .L1265 + 15696 01b4 DA63 str r2, [r3, #60] +3714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15697 .loc 1 3714 7 is_stmt 1 view .LVU4687 +3714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15698 .loc 1 3714 17 is_stmt 0 view .LVU4688 + 15699 01b6 A36A ldr r3, [r4, #40] +3714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15700 .loc 1 3714 56 view .LVU4689 + 15701 01b8 224A ldr r2, .L1265+4 + 15702 01ba 1A64 str r2, [r3, #64] + ARM GAS /tmp/ccPLZXyC.s page 485 + + +3717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15703 .loc 1 3717 7 is_stmt 1 view .LVU4690 +3717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15704 .loc 1 3717 17 is_stmt 0 view .LVU4691 + 15705 01bc A36A ldr r3, [r4, #40] +3717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15706 .loc 1 3717 53 view .LVU4692 + 15707 01be 224A ldr r2, .L1265+8 + 15708 01c0 DA64 str r2, [r3, #76] +3720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15709 .loc 1 3720 7 is_stmt 1 view .LVU4693 +3720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15710 .loc 1 3720 71 is_stmt 0 view .LVU4694 + 15711 01c2 2168 ldr r1, [r4] +3720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15712 .loc 1 3720 11 view .LVU4695 + 15713 01c4 3346 mov r3, r6 + 15714 01c6 2A46 mov r2, r5 + 15715 01c8 3831 adds r1, r1, #56 + 15716 01ca A06A ldr r0, [r4, #40] + 15717 01cc FFF7FEFF bl HAL_DMA_Start_IT + 15718 .LVL1242: +3720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15719 .loc 1 3720 10 view .LVU4696 + 15720 01d0 0546 mov r5, r0 + 15721 .LVL1243: +3720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** Length) != HAL_OK) + 15722 .loc 1 3720 10 view .LVU4697 + 15723 01d2 08B1 cbz r0, .L1264 +3724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15724 .loc 1 3724 16 view .LVU4698 + 15725 01d4 0125 movs r5, #1 + 15726 01d6 1CE0 b .L1236 + 15727 .L1264: +3728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Enable the TIM Input Capture DMA request */ + 15728 .loc 1 3728 7 is_stmt 1 view .LVU4699 + 15729 01d8 2268 ldr r2, [r4] + 15730 01da D368 ldr r3, [r2, #12] + 15731 01dc 43F40073 orr r3, r3, #512 + 15732 01e0 D360 str r3, [r2, #12] +3730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15733 .loc 1 3730 7 view .LVU4700 + 15734 01e2 2268 ldr r2, [r4] + 15735 01e4 D368 ldr r3, [r2, #12] + 15736 01e6 43F48063 orr r3, r3, #1024 + 15737 01ea D360 str r3, [r2, #12] +3733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_ENABLE); + 15738 .loc 1 3733 7 view .LVU4701 + 15739 01ec 0122 movs r2, #1 + 15740 01ee 0021 movs r1, #0 + 15741 01f0 2068 ldr r0, [r4] + 15742 01f2 FFF7FEFF bl TIM_CCxChannelCmd + 15743 .LVL1244: +3734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15744 .loc 1 3734 7 view .LVU4702 + 15745 01f6 0122 movs r2, #1 + 15746 01f8 0421 movs r1, #4 + ARM GAS /tmp/ccPLZXyC.s page 486 + + + 15747 01fa 2068 ldr r0, [r4] + 15748 01fc FFF7FEFF bl TIM_CCxChannelCmd + 15749 .LVL1245: +3737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15750 .loc 1 3737 7 view .LVU4703 + 15751 0200 2268 ldr r2, [r4] + 15752 0202 1368 ldr r3, [r2] + 15753 0204 43F00103 orr r3, r3, #1 + 15754 0208 1360 str r3, [r2] +3739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15755 .loc 1 3739 7 view .LVU4704 + 15756 020a 02E0 b .L1236 + 15757 .LVL1246: + 15758 .L1242: +3561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15759 .loc 1 3561 14 is_stmt 0 view .LVU4705 + 15760 020c 0225 movs r5, #2 + 15761 .LVL1247: +3561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15762 .loc 1 3561 14 view .LVU4706 + 15763 020e 00E0 b .L1236 + 15764 .LVL1248: + 15765 .L1243: +3578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15766 .loc 1 3578 14 view .LVU4707 + 15767 0210 0125 movs r5, #1 + 15768 .LVL1249: + 15769 .L1236: +3745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15770 .loc 1 3745 1 view .LVU4708 + 15771 0212 2846 mov r0, r5 + 15772 0214 F8BD pop {r3, r4, r5, r6, r7, pc} + 15773 .LVL1250: + 15774 .L1244: +3568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15775 .loc 1 3568 16 view .LVU4709 + 15776 0216 0125 movs r5, #1 + 15777 .LVL1251: +3568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15778 .loc 1 3568 16 view .LVU4710 + 15779 0218 FBE7 b .L1236 + 15780 .LVL1252: + 15781 .L1245: +3586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15782 .loc 1 3586 14 view .LVU4711 + 15783 021a 0225 movs r5, #2 + 15784 .LVL1253: +3586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15785 .loc 1 3586 14 view .LVU4712 + 15786 021c F9E7 b .L1236 + 15787 .LVL1254: + 15788 .L1246: +3603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15789 .loc 1 3603 14 view .LVU4713 + 15790 021e 0125 movs r5, #1 + 15791 .LVL1255: +3603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + ARM GAS /tmp/ccPLZXyC.s page 487 + + + 15792 .loc 1 3603 14 view .LVU4714 + 15793 0220 F7E7 b .L1236 + 15794 .LVL1256: + 15795 .L1247: +3593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15796 .loc 1 3593 16 view .LVU4715 + 15797 0222 0125 movs r5, #1 + 15798 .LVL1257: +3593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15799 .loc 1 3593 16 view .LVU4716 + 15800 0224 F5E7 b .L1236 + 15801 .LVL1258: + 15802 .L1248: +3613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15803 .loc 1 3613 14 view .LVU4717 + 15804 0226 0225 movs r5, #2 + 15805 .LVL1259: +3613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15806 .loc 1 3613 14 view .LVU4718 + 15807 0228 F3E7 b .L1236 + 15808 .LVL1260: + 15809 .L1249: +3613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15810 .loc 1 3613 14 view .LVU4719 + 15811 022a 0225 movs r5, #2 + 15812 .LVL1261: +3613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15813 .loc 1 3613 14 view .LVU4720 + 15814 022c F1E7 b .L1236 + 15815 .LVL1262: + 15816 .L1250: +3634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15817 .loc 1 3634 14 view .LVU4721 + 15818 022e 0125 movs r5, #1 + 15819 .LVL1263: +3634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15820 .loc 1 3634 14 view .LVU4722 + 15821 0230 EFE7 b .L1236 + 15822 .LVL1264: + 15823 .L1251: +3634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15824 .loc 1 3634 14 view .LVU4723 + 15825 0232 0125 movs r5, #1 + 15826 .LVL1265: +3634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15827 .loc 1 3634 14 view .LVU4724 + 15828 0234 EDE7 b .L1236 + 15829 .LVL1266: + 15830 .L1252: +3622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15831 .loc 1 3622 16 view .LVU4725 + 15832 0236 0125 movs r5, #1 + 15833 .LVL1267: +3622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15834 .loc 1 3622 16 view .LVU4726 + 15835 0238 EBE7 b .L1236 + 15836 .LVL1268: + ARM GAS /tmp/ccPLZXyC.s page 488 + + + 15837 .L1253: +3622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15838 .loc 1 3622 16 view .LVU4727 + 15839 023a 0125 movs r5, #1 + 15840 .LVL1269: +3622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15841 .loc 1 3622 16 view .LVU4728 + 15842 023c E9E7 b .L1236 + 15843 .L1266: + 15844 023e 00BF .align 2 + 15845 .L1265: + 15846 0240 00000000 .word TIM_DMACaptureCplt + 15847 0244 00000000 .word TIM_DMACaptureHalfCplt + 15848 0248 00000000 .word TIM_DMAError + 15849 .cfi_endproc + 15850 .LFE197: + 15852 .section .text.HAL_TIM_Encoder_Stop_DMA,"ax",%progbits + 15853 .align 1 + 15854 .global HAL_TIM_Encoder_Stop_DMA + 15855 .syntax unified + 15856 .thumb + 15857 .thumb_func + 15858 .fpu fpv5-d16 + 15860 HAL_TIM_Encoder_Stop_DMA: + 15861 .LVL1270: + 15862 .LFB198: +3758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 15863 .loc 1 3758 1 is_stmt 1 view -0 + 15864 .cfi_startproc + 15865 @ args = 0, pretend = 0, frame = 0 + 15866 @ frame_needed = 0, uses_anonymous_args = 0 +3758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** /* Check the parameters */ + 15867 .loc 1 3758 1 is_stmt 0 view .LVU4730 + 15868 0000 38B5 push {r3, r4, r5, lr} + 15869 .LCFI113: + 15870 .cfi_def_cfa_offset 16 + 15871 .cfi_offset 3, -16 + 15872 .cfi_offset 4, -12 + 15873 .cfi_offset 5, -8 + 15874 .cfi_offset 14, -4 + 15875 0002 0446 mov r4, r0 +3760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15876 .loc 1 3760 3 is_stmt 1 view .LVU4731 +3764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15877 .loc 1 3764 3 view .LVU4732 +3764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15878 .loc 1 3764 6 is_stmt 0 view .LVU4733 + 15879 0004 0D46 mov r5, r1 + 15880 0006 0029 cmp r1, #0 + 15881 0008 38D0 beq .L1284 +3772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15882 .loc 1 3772 8 is_stmt 1 view .LVU4734 +3772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15883 .loc 1 3772 11 is_stmt 0 view .LVU4735 + 15884 000a 0429 cmp r1, #4 + 15885 000c 44D0 beq .L1285 +3782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + ARM GAS /tmp/ccPLZXyC.s page 489 + + + 15886 .loc 1 3782 5 is_stmt 1 view .LVU4736 + 15887 000e 0022 movs r2, #0 + 15888 0010 1146 mov r1, r2 + 15889 .LVL1271: +3782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 15890 .loc 1 3782 5 is_stmt 0 view .LVU4737 + 15891 0012 0068 ldr r0, [r0] + 15892 .LVL1272: +3782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_2, TIM_CCx_DISABLE); + 15893 .loc 1 3782 5 view .LVU4738 + 15894 0014 FFF7FEFF bl TIM_CCxChannelCmd + 15895 .LVL1273: +3783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15896 .loc 1 3783 5 is_stmt 1 view .LVU4739 + 15897 0018 0022 movs r2, #0 + 15898 001a 0421 movs r1, #4 + 15899 001c 2068 ldr r0, [r4] + 15900 001e FFF7FEFF bl TIM_CCxChannelCmd + 15901 .LVL1274: +3786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); + 15902 .loc 1 3786 5 view .LVU4740 + 15903 0022 2268 ldr r2, [r4] + 15904 0024 D368 ldr r3, [r2, #12] + 15905 0026 23F40073 bic r3, r3, #512 + 15906 002a D360 str r3, [r2, #12] +3787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + 15907 .loc 1 3787 5 view .LVU4741 + 15908 002c 2268 ldr r2, [r4] + 15909 002e D368 ldr r3, [r2, #12] + 15910 0030 23F48063 bic r3, r3, #1024 + 15911 0034 D360 str r3, [r2, #12] +3788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + 15912 .loc 1 3788 5 view .LVU4742 +3788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + 15913 .loc 1 3788 11 is_stmt 0 view .LVU4743 + 15914 0036 606A ldr r0, [r4, #36] + 15915 0038 FFF7FEFF bl HAL_DMA_Abort_IT + 15916 .LVL1275: +3789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15917 .loc 1 3789 5 is_stmt 1 view .LVU4744 +3789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15918 .loc 1 3789 11 is_stmt 0 view .LVU4745 + 15919 003c A06A ldr r0, [r4, #40] + 15920 003e FFF7FEFF bl HAL_DMA_Abort_IT + 15921 .LVL1276: + 15922 .L1269: +3793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15923 .loc 1 3793 3 is_stmt 1 view .LVU4746 +3793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15924 .loc 1 3793 3 view .LVU4747 + 15925 0042 2368 ldr r3, [r4] + 15926 0044 196A ldr r1, [r3, #32] + 15927 0046 41F21112 movw r2, #4369 + 15928 004a 1142 tst r1, r2 + 15929 004c 08D1 bne .L1271 +3793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15930 .loc 1 3793 3 discriminator 1 view .LVU4748 + ARM GAS /tmp/ccPLZXyC.s page 490 + + + 15931 004e 196A ldr r1, [r3, #32] + 15932 0050 40F24442 movw r2, #1092 + 15933 0054 1142 tst r1, r2 + 15934 0056 03D1 bne .L1271 +3793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15935 .loc 1 3793 3 discriminator 3 view .LVU4749 + 15936 0058 1A68 ldr r2, [r3] + 15937 005a 22F00102 bic r2, r2, #1 + 15938 005e 1A60 str r2, [r3] + 15939 .L1271: +3793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15940 .loc 1 3793 3 discriminator 5 view .LVU4750 +3796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15941 .loc 1 3796 3 discriminator 5 view .LVU4751 +3796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** { + 15942 .loc 1 3796 6 is_stmt 0 discriminator 5 view .LVU4752 + 15943 0060 042D cmp r5, #4 + 15944 0062 18BF it ne + 15945 0064 002D cmpne r5, #0 + 15946 0066 51D1 bne .L1272 +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15947 .loc 1 3798 5 is_stmt 1 view .LVU4753 + 15948 0068 25BB cbnz r5, .L1273 +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 15949 .loc 1 3798 5 is_stmt 0 discriminator 1 view .LVU4754 + 15950 006a 0123 movs r3, #1 + 15951 006c 84F83E30 strb r3, [r4, #62] + 15952 .L1274: +3799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15953 .loc 1 3799 5 is_stmt 1 view .LVU4755 + 15954 0070 002D cmp r5, #0 + 15955 0072 3BD1 bne .L1279 +3799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15956 .loc 1 3799 5 is_stmt 0 discriminator 1 view .LVU4756 + 15957 0074 0123 movs r3, #1 + 15958 0076 84F84430 strb r3, [r4, #68] + 15959 007a 50E0 b .L1280 + 15960 .LVL1277: + 15961 .L1284: +3766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15962 .loc 1 3766 5 is_stmt 1 view .LVU4757 + 15963 007c 0022 movs r2, #0 + 15964 007e 1146 mov r1, r2 + 15965 .LVL1278: +3766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15966 .loc 1 3766 5 is_stmt 0 view .LVU4758 + 15967 0080 0068 ldr r0, [r0] + 15968 .LVL1279: +3766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15969 .loc 1 3766 5 view .LVU4759 + 15970 0082 FFF7FEFF bl TIM_CCxChannelCmd + 15971 .LVL1280: +3769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + 15972 .loc 1 3769 5 is_stmt 1 view .LVU4760 + 15973 0086 2268 ldr r2, [r4] + 15974 0088 D368 ldr r3, [r2, #12] + 15975 008a 23F40073 bic r3, r3, #512 + ARM GAS /tmp/ccPLZXyC.s page 491 + + + 15976 008e D360 str r3, [r2, #12] +3770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15977 .loc 1 3770 5 view .LVU4761 +3770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 15978 .loc 1 3770 11 is_stmt 0 view .LVU4762 + 15979 0090 606A ldr r0, [r4, #36] + 15980 0092 FFF7FEFF bl HAL_DMA_Abort_IT + 15981 .LVL1281: + 15982 0096 D4E7 b .L1269 + 15983 .LVL1282: + 15984 .L1285: +3774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15985 .loc 1 3774 5 is_stmt 1 view .LVU4763 + 15986 0098 0022 movs r2, #0 + 15987 009a 0421 movs r1, #4 + 15988 .LVL1283: +3774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15989 .loc 1 3774 5 is_stmt 0 view .LVU4764 + 15990 009c 0068 ldr r0, [r0] + 15991 .LVL1284: +3774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 15992 .loc 1 3774 5 view .LVU4765 + 15993 009e FFF7FEFF bl TIM_CCxChannelCmd + 15994 .LVL1285: +3777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + 15995 .loc 1 3777 5 is_stmt 1 view .LVU4766 + 15996 00a2 2268 ldr r2, [r4] + 15997 00a4 D368 ldr r3, [r2, #12] + 15998 00a6 23F48063 bic r3, r3, #1024 + 15999 00aa D360 str r3, [r2, #12] +3778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 16000 .loc 1 3778 5 view .LVU4767 +3778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 16001 .loc 1 3778 11 is_stmt 0 view .LVU4768 + 16002 00ac A06A ldr r0, [r4, #40] + 16003 00ae FFF7FEFF bl HAL_DMA_Abort_IT + 16004 .LVL1286: + 16005 00b2 C6E7 b .L1269 + 16006 .L1273: +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 16007 .loc 1 3798 5 discriminator 2 view .LVU4769 + 16008 00b4 042D cmp r5, #4 + 16009 00b6 09D0 beq .L1286 +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 16010 .loc 1 3798 5 discriminator 4 view .LVU4770 + 16011 00b8 082D cmp r5, #8 + 16012 00ba 0BD0 beq .L1287 +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 16013 .loc 1 3798 5 discriminator 7 view .LVU4771 + 16014 00bc 0C2D cmp r5, #12 + 16015 00be 0DD0 beq .L1288 +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 16016 .loc 1 3798 5 discriminator 10 view .LVU4772 + 16017 00c0 102D cmp r5, #16 + 16018 00c2 0FD0 beq .L1289 +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 16019 .loc 1 3798 5 discriminator 13 view .LVU4773 + ARM GAS /tmp/ccPLZXyC.s page 492 + + + 16020 00c4 0123 movs r3, #1 + 16021 00c6 84F84330 strb r3, [r4, #67] + 16022 00ca D1E7 b .L1274 + 16023 .L1286: +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 16024 .loc 1 3798 5 discriminator 3 view .LVU4774 + 16025 00cc 0123 movs r3, #1 + 16026 00ce 84F83F30 strb r3, [r4, #63] + 16027 00d2 CDE7 b .L1274 + 16028 .L1287: +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 16029 .loc 1 3798 5 discriminator 6 view .LVU4775 + 16030 00d4 0123 movs r3, #1 + 16031 00d6 84F84030 strb r3, [r4, #64] + 16032 00da C9E7 b .L1274 + 16033 .L1288: +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 16034 .loc 1 3798 5 discriminator 9 view .LVU4776 + 16035 00dc 0123 movs r3, #1 + 16036 00de 84F84130 strb r3, [r4, #65] + 16037 00e2 C5E7 b .L1274 + 16038 .L1289: +3798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 16039 .loc 1 3798 5 discriminator 12 view .LVU4777 + 16040 00e4 0123 movs r3, #1 + 16041 00e6 84F84230 strb r3, [r4, #66] + 16042 00ea C1E7 b .L1274 + 16043 .L1279: +3799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 16044 .loc 1 3799 5 discriminator 2 view .LVU4778 + 16045 00ec 042D cmp r5, #4 + 16046 00ee 05D0 beq .L1290 +3799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 16047 .loc 1 3799 5 discriminator 4 view .LVU4779 + 16048 00f0 082D cmp r5, #8 + 16049 00f2 07D0 beq .L1291 +3799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 16050 .loc 1 3799 5 discriminator 7 view .LVU4780 + 16051 00f4 0123 movs r3, #1 + 16052 00f6 84F84730 strb r3, [r4, #71] + 16053 00fa 10E0 b .L1280 + 16054 .L1290: +3799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 16055 .loc 1 3799 5 discriminator 3 view .LVU4781 + 16056 00fc 0123 movs r3, #1 + 16057 00fe 84F84530 strb r3, [r4, #69] + 16058 0102 0CE0 b .L1280 + 16059 .L1291: +3799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 16060 .loc 1 3799 5 discriminator 6 view .LVU4782 + 16061 0104 0123 movs r3, #1 + 16062 0106 84F84630 strb r3, [r4, #70] + 16063 010a 08E0 b .L1280 + 16064 .L1272: +3803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 16065 .loc 1 3803 5 is_stmt 1 view .LVU4783 + 16066 010c 0123 movs r3, #1 + ARM GAS /tmp/ccPLZXyC.s page 493 + + + 16067 010e 84F83E30 strb r3, [r4, #62] +3804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 16068 .loc 1 3804 5 view .LVU4784 + 16069 0112 84F83F30 strb r3, [r4, #63] +3805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 16070 .loc 1 3805 5 view .LVU4785 + 16071 0116 84F84430 strb r3, [r4, #68] +3806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 16072 .loc 1 3806 5 view .LVU4786 + 16073 011a 84F84530 strb r3, [r4, #69] + 16074 .L1280: +3810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** } + 16075 .loc 1 3810 3 view .LVU4787 +3811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 16076 .loc 1 3811 1 is_stmt 0 view .LVU4788 + 16077 011e 0020 movs r0, #0 + 16078 0120 38BD pop {r3, r4, r5, pc} +3811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c **** + 16079 .loc 1 3811 1 view .LVU4789 + 16080 .cfi_endproc + 16081 .LFE198: + 16083 .text + 16084 .Letext0: + 16085 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 16086 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 16087 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 16088 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 16089 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 16090 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h" + 16091 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h" + ARM GAS /tmp/ccPLZXyC.s page 494 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_tim.c + /tmp/ccPLZXyC.s:17 .text.TIM_OC1_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:24 .text.TIM_OC1_SetConfig:0000000000000000 TIM_OC1_SetConfig + /tmp/ccPLZXyC.s:162 .text.TIM_OC1_SetConfig:000000000000005c $d + /tmp/ccPLZXyC.s:169 .text.TIM_OC3_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:175 .text.TIM_OC3_SetConfig:0000000000000000 TIM_OC3_SetConfig + /tmp/ccPLZXyC.s:312 .text.TIM_OC3_SetConfig:0000000000000064 $d + /tmp/ccPLZXyC.s:319 .text.TIM_OC4_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:325 .text.TIM_OC4_SetConfig:0000000000000000 TIM_OC4_SetConfig + /tmp/ccPLZXyC.s:431 .text.TIM_OC4_SetConfig:0000000000000048 $d + /tmp/ccPLZXyC.s:438 .text.TIM_OC5_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:444 .text.TIM_OC5_SetConfig:0000000000000000 TIM_OC5_SetConfig + /tmp/ccPLZXyC.s:548 .text.TIM_OC5_SetConfig:0000000000000048 $d + /tmp/ccPLZXyC.s:555 .text.TIM_OC6_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:561 .text.TIM_OC6_SetConfig:0000000000000000 TIM_OC6_SetConfig + /tmp/ccPLZXyC.s:665 .text.TIM_OC6_SetConfig:0000000000000048 $d + /tmp/ccPLZXyC.s:672 .text.TIM_TI1_ConfigInputStage:0000000000000000 $t + /tmp/ccPLZXyC.s:678 .text.TIM_TI1_ConfigInputStage:0000000000000000 TIM_TI1_ConfigInputStage + /tmp/ccPLZXyC.s:738 .text.TIM_TI2_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:744 .text.TIM_TI2_SetConfig:0000000000000000 TIM_TI2_SetConfig + /tmp/ccPLZXyC.s:824 .text.TIM_TI2_ConfigInputStage:0000000000000000 $t + /tmp/ccPLZXyC.s:830 .text.TIM_TI2_ConfigInputStage:0000000000000000 TIM_TI2_ConfigInputStage + /tmp/ccPLZXyC.s:890 .text.TIM_TI3_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:896 .text.TIM_TI3_SetConfig:0000000000000000 TIM_TI3_SetConfig + /tmp/ccPLZXyC.s:976 .text.TIM_TI4_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:982 .text.TIM_TI4_SetConfig:0000000000000000 TIM_TI4_SetConfig + /tmp/ccPLZXyC.s:1062 .text.TIM_ITRx_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:1068 .text.TIM_ITRx_SetConfig:0000000000000000 TIM_ITRx_SetConfig + /tmp/ccPLZXyC.s:1101 .text.HAL_TIM_Base_MspInit:0000000000000000 $t + /tmp/ccPLZXyC.s:1108 .text.HAL_TIM_Base_MspInit:0000000000000000 HAL_TIM_Base_MspInit + /tmp/ccPLZXyC.s:1123 .text.HAL_TIM_Base_MspDeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:1130 .text.HAL_TIM_Base_MspDeInit:0000000000000000 HAL_TIM_Base_MspDeInit + /tmp/ccPLZXyC.s:1145 .text.HAL_TIM_Base_DeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:1152 .text.HAL_TIM_Base_DeInit:0000000000000000 HAL_TIM_Base_DeInit + /tmp/ccPLZXyC.s:1238 .text.HAL_TIM_Base_Start:0000000000000000 $t + /tmp/ccPLZXyC.s:1245 .text.HAL_TIM_Base_Start:0000000000000000 HAL_TIM_Base_Start + /tmp/ccPLZXyC.s:1351 .text.HAL_TIM_Base_Start:0000000000000080 $d + /tmp/ccPLZXyC.s:1357 .text.HAL_TIM_Base_Stop:0000000000000000 $t + /tmp/ccPLZXyC.s:1364 .text.HAL_TIM_Base_Stop:0000000000000000 HAL_TIM_Base_Stop + /tmp/ccPLZXyC.s:1405 .text.HAL_TIM_Base_Start_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:1412 .text.HAL_TIM_Base_Start_IT:0000000000000000 HAL_TIM_Base_Start_IT + /tmp/ccPLZXyC.s:1523 .text.HAL_TIM_Base_Start_IT:0000000000000088 $d + /tmp/ccPLZXyC.s:1529 .text.HAL_TIM_Base_Stop_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:1536 .text.HAL_TIM_Base_Stop_IT:0000000000000000 HAL_TIM_Base_Stop_IT + /tmp/ccPLZXyC.s:1582 .text.HAL_TIM_Base_Start_DMA:0000000000000000 $t + /tmp/ccPLZXyC.s:1589 .text.HAL_TIM_Base_Start_DMA:0000000000000000 HAL_TIM_Base_Start_DMA + /tmp/ccPLZXyC.s:1751 .text.HAL_TIM_Base_Start_DMA:00000000000000c8 $d + /tmp/ccPLZXyC.s:3877 .text.TIM_DMAPeriodElapsedCplt:0000000000000000 TIM_DMAPeriodElapsedCplt + /tmp/ccPLZXyC.s:3943 .text.TIM_DMAPeriodElapsedHalfCplt:0000000000000000 TIM_DMAPeriodElapsedHalfCplt + /tmp/ccPLZXyC.s:4978 .text.TIM_DMAError:0000000000000000 TIM_DMAError + /tmp/ccPLZXyC.s:1760 .text.HAL_TIM_Base_Stop_DMA:0000000000000000 $t + /tmp/ccPLZXyC.s:1767 .text.HAL_TIM_Base_Stop_DMA:0000000000000000 HAL_TIM_Base_Stop_DMA + /tmp/ccPLZXyC.s:1825 .text.HAL_TIM_OC_MspInit:0000000000000000 $t + /tmp/ccPLZXyC.s:1832 .text.HAL_TIM_OC_MspInit:0000000000000000 HAL_TIM_OC_MspInit + /tmp/ccPLZXyC.s:1847 .text.HAL_TIM_OC_MspDeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:1854 .text.HAL_TIM_OC_MspDeInit:0000000000000000 HAL_TIM_OC_MspDeInit + ARM GAS /tmp/ccPLZXyC.s page 495 + + + /tmp/ccPLZXyC.s:1869 .text.HAL_TIM_OC_DeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:1876 .text.HAL_TIM_OC_DeInit:0000000000000000 HAL_TIM_OC_DeInit + /tmp/ccPLZXyC.s:1962 .text.HAL_TIM_PWM_MspInit:0000000000000000 $t + /tmp/ccPLZXyC.s:1969 .text.HAL_TIM_PWM_MspInit:0000000000000000 HAL_TIM_PWM_MspInit + /tmp/ccPLZXyC.s:1984 .text.HAL_TIM_PWM_MspDeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:1991 .text.HAL_TIM_PWM_MspDeInit:0000000000000000 HAL_TIM_PWM_MspDeInit + /tmp/ccPLZXyC.s:2006 .text.HAL_TIM_PWM_DeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:2013 .text.HAL_TIM_PWM_DeInit:0000000000000000 HAL_TIM_PWM_DeInit + /tmp/ccPLZXyC.s:2099 .text.HAL_TIM_IC_MspInit:0000000000000000 $t + /tmp/ccPLZXyC.s:2106 .text.HAL_TIM_IC_MspInit:0000000000000000 HAL_TIM_IC_MspInit + /tmp/ccPLZXyC.s:2121 .text.HAL_TIM_IC_MspDeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:2128 .text.HAL_TIM_IC_MspDeInit:0000000000000000 HAL_TIM_IC_MspDeInit + /tmp/ccPLZXyC.s:2143 .text.HAL_TIM_IC_DeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:2150 .text.HAL_TIM_IC_DeInit:0000000000000000 HAL_TIM_IC_DeInit + /tmp/ccPLZXyC.s:2236 .text.HAL_TIM_OnePulse_MspInit:0000000000000000 $t + /tmp/ccPLZXyC.s:2243 .text.HAL_TIM_OnePulse_MspInit:0000000000000000 HAL_TIM_OnePulse_MspInit + /tmp/ccPLZXyC.s:2258 .text.HAL_TIM_OnePulse_MspDeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:2265 .text.HAL_TIM_OnePulse_MspDeInit:0000000000000000 HAL_TIM_OnePulse_MspDeInit + /tmp/ccPLZXyC.s:2280 .text.HAL_TIM_OnePulse_DeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:2287 .text.HAL_TIM_OnePulse_DeInit:0000000000000000 HAL_TIM_OnePulse_DeInit + /tmp/ccPLZXyC.s:2357 .text.HAL_TIM_Encoder_MspInit:0000000000000000 $t + /tmp/ccPLZXyC.s:2364 .text.HAL_TIM_Encoder_MspInit:0000000000000000 HAL_TIM_Encoder_MspInit + /tmp/ccPLZXyC.s:2379 .text.HAL_TIM_Encoder_MspDeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:2386 .text.HAL_TIM_Encoder_MspDeInit:0000000000000000 HAL_TIM_Encoder_MspDeInit + /tmp/ccPLZXyC.s:2401 .text.HAL_TIM_Encoder_DeInit:0000000000000000 $t + /tmp/ccPLZXyC.s:2408 .text.HAL_TIM_Encoder_DeInit:0000000000000000 HAL_TIM_Encoder_DeInit + /tmp/ccPLZXyC.s:2478 .text.HAL_TIM_DMABurst_MultiWriteStart:0000000000000000 $t + /tmp/ccPLZXyC.s:2485 .text.HAL_TIM_DMABurst_MultiWriteStart:0000000000000000 HAL_TIM_DMABurst_MultiWriteStart + /tmp/ccPLZXyC.s:2843 .text.HAL_TIM_DMABurst_MultiWriteStart:0000000000000188 $d + /tmp/ccPLZXyC.s:4288 .text.TIM_DMADelayPulseCplt:0000000000000000 TIM_DMADelayPulseCplt + /tmp/ccPLZXyC.s:4437 .text.TIM_DMADelayPulseHalfCplt:0000000000000000 TIM_DMADelayPulseHalfCplt + /tmp/ccPLZXyC.s:4856 .text.TIM_DMATriggerCplt:0000000000000000 TIM_DMATriggerCplt + /tmp/ccPLZXyC.s:4922 .text.TIM_DMATriggerHalfCplt:0000000000000000 TIM_DMATriggerHalfCplt + /tmp/ccPLZXyC.s:2856 .text.HAL_TIM_DMABurst_WriteStart:0000000000000000 $t + /tmp/ccPLZXyC.s:2863 .text.HAL_TIM_DMABurst_WriteStart:0000000000000000 HAL_TIM_DMABurst_WriteStart + /tmp/ccPLZXyC.s:2903 .text.HAL_TIM_DMABurst_WriteStop:0000000000000000 $t + /tmp/ccPLZXyC.s:2910 .text.HAL_TIM_DMABurst_WriteStop:0000000000000000 HAL_TIM_DMABurst_WriteStop + /tmp/ccPLZXyC.s:3066 .text.HAL_TIM_DMABurst_MultiReadStart:0000000000000000 $t + /tmp/ccPLZXyC.s:3073 .text.HAL_TIM_DMABurst_MultiReadStart:0000000000000000 HAL_TIM_DMABurst_MultiReadStart + /tmp/ccPLZXyC.s:3431 .text.HAL_TIM_DMABurst_MultiReadStart:000000000000018c $d + /tmp/ccPLZXyC.s:4021 .text.TIM_DMACaptureCplt:0000000000000000 TIM_DMACaptureCplt + /tmp/ccPLZXyC.s:4178 .text.TIM_DMACaptureHalfCplt:0000000000000000 TIM_DMACaptureHalfCplt + /tmp/ccPLZXyC.s:3444 .text.HAL_TIM_DMABurst_ReadStart:0000000000000000 $t + /tmp/ccPLZXyC.s:3451 .text.HAL_TIM_DMABurst_ReadStart:0000000000000000 HAL_TIM_DMABurst_ReadStart + /tmp/ccPLZXyC.s:3491 .text.HAL_TIM_DMABurst_ReadStop:0000000000000000 $t + /tmp/ccPLZXyC.s:3498 .text.HAL_TIM_DMABurst_ReadStop:0000000000000000 HAL_TIM_DMABurst_ReadStop + /tmp/ccPLZXyC.s:3654 .text.HAL_TIM_GenerateEvent:0000000000000000 $t + /tmp/ccPLZXyC.s:3661 .text.HAL_TIM_GenerateEvent:0000000000000000 HAL_TIM_GenerateEvent + /tmp/ccPLZXyC.s:3714 .text.HAL_TIM_ConfigTI1Input:0000000000000000 $t + /tmp/ccPLZXyC.s:3721 .text.HAL_TIM_ConfigTI1Input:0000000000000000 HAL_TIM_ConfigTI1Input + /tmp/ccPLZXyC.s:3759 .text.HAL_TIM_ReadCapturedValue:0000000000000000 $t + /tmp/ccPLZXyC.s:3766 .text.HAL_TIM_ReadCapturedValue:0000000000000000 HAL_TIM_ReadCapturedValue + /tmp/ccPLZXyC.s:3780 .text.HAL_TIM_ReadCapturedValue:0000000000000008 $d + /tmp/ccPLZXyC.s:3849 .text.HAL_TIM_PeriodElapsedCallback:0000000000000000 $t + /tmp/ccPLZXyC.s:3856 .text.HAL_TIM_PeriodElapsedCallback:0000000000000000 HAL_TIM_PeriodElapsedCallback + /tmp/ccPLZXyC.s:3871 .text.TIM_DMAPeriodElapsedCplt:0000000000000000 $t + /tmp/ccPLZXyC.s:3915 .text.HAL_TIM_PeriodElapsedHalfCpltCallback:0000000000000000 $t + ARM GAS /tmp/ccPLZXyC.s page 496 + + + /tmp/ccPLZXyC.s:3922 .text.HAL_TIM_PeriodElapsedHalfCpltCallback:0000000000000000 HAL_TIM_PeriodElapsedHalfCpltCallback + /tmp/ccPLZXyC.s:3937 .text.TIM_DMAPeriodElapsedHalfCplt:0000000000000000 $t + /tmp/ccPLZXyC.s:3970 .text.HAL_TIM_OC_DelayElapsedCallback:0000000000000000 $t + /tmp/ccPLZXyC.s:3977 .text.HAL_TIM_OC_DelayElapsedCallback:0000000000000000 HAL_TIM_OC_DelayElapsedCallback + /tmp/ccPLZXyC.s:3992 .text.HAL_TIM_IC_CaptureCallback:0000000000000000 $t + /tmp/ccPLZXyC.s:3999 .text.HAL_TIM_IC_CaptureCallback:0000000000000000 HAL_TIM_IC_CaptureCallback + /tmp/ccPLZXyC.s:4014 .text.TIM_DMACaptureCplt:0000000000000000 $t + /tmp/ccPLZXyC.s:4149 .text.HAL_TIM_IC_CaptureHalfCpltCallback:0000000000000000 $t + /tmp/ccPLZXyC.s:4156 .text.HAL_TIM_IC_CaptureHalfCpltCallback:0000000000000000 HAL_TIM_IC_CaptureHalfCpltCallback + /tmp/ccPLZXyC.s:4171 .text.TIM_DMACaptureHalfCplt:0000000000000000 $t + /tmp/ccPLZXyC.s:4260 .text.HAL_TIM_PWM_PulseFinishedCallback:0000000000000000 $t + /tmp/ccPLZXyC.s:4267 .text.HAL_TIM_PWM_PulseFinishedCallback:0000000000000000 HAL_TIM_PWM_PulseFinishedCallback + /tmp/ccPLZXyC.s:4282 .text.TIM_DMADelayPulseCplt:0000000000000000 $t + /tmp/ccPLZXyC.s:4408 .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback:0000000000000000 $t + /tmp/ccPLZXyC.s:4415 .text.HAL_TIM_PWM_PulseFinishedHalfCpltCallback:0000000000000000 HAL_TIM_PWM_PulseFinishedHalfCpltCallback + /tmp/ccPLZXyC.s:4430 .text.TIM_DMADelayPulseHalfCplt:0000000000000000 $t + /tmp/ccPLZXyC.s:4519 .text.HAL_TIM_TriggerCallback:0000000000000000 $t + /tmp/ccPLZXyC.s:4526 .text.HAL_TIM_TriggerCallback:0000000000000000 HAL_TIM_TriggerCallback + /tmp/ccPLZXyC.s:4541 .text.HAL_TIM_IRQHandler:0000000000000000 $t + /tmp/ccPLZXyC.s:4548 .text.HAL_TIM_IRQHandler:0000000000000000 HAL_TIM_IRQHandler + /tmp/ccPLZXyC.s:4850 .text.TIM_DMATriggerCplt:0000000000000000 $t + /tmp/ccPLZXyC.s:4894 .text.HAL_TIM_TriggerHalfCpltCallback:0000000000000000 $t + /tmp/ccPLZXyC.s:4901 .text.HAL_TIM_TriggerHalfCpltCallback:0000000000000000 HAL_TIM_TriggerHalfCpltCallback + /tmp/ccPLZXyC.s:4916 .text.TIM_DMATriggerHalfCplt:0000000000000000 $t + /tmp/ccPLZXyC.s:4949 .text.HAL_TIM_ErrorCallback:0000000000000000 $t + /tmp/ccPLZXyC.s:4956 .text.HAL_TIM_ErrorCallback:0000000000000000 HAL_TIM_ErrorCallback + /tmp/ccPLZXyC.s:4971 .text.TIM_DMAError:0000000000000000 $t + /tmp/ccPLZXyC.s:5076 .text.HAL_TIM_Base_GetState:0000000000000000 $t + /tmp/ccPLZXyC.s:5083 .text.HAL_TIM_Base_GetState:0000000000000000 HAL_TIM_Base_GetState + /tmp/ccPLZXyC.s:5101 .text.HAL_TIM_OC_GetState:0000000000000000 $t + /tmp/ccPLZXyC.s:5108 .text.HAL_TIM_OC_GetState:0000000000000000 HAL_TIM_OC_GetState + /tmp/ccPLZXyC.s:5126 .text.HAL_TIM_PWM_GetState:0000000000000000 $t + /tmp/ccPLZXyC.s:5133 .text.HAL_TIM_PWM_GetState:0000000000000000 HAL_TIM_PWM_GetState + /tmp/ccPLZXyC.s:5151 .text.HAL_TIM_IC_GetState:0000000000000000 $t + /tmp/ccPLZXyC.s:5158 .text.HAL_TIM_IC_GetState:0000000000000000 HAL_TIM_IC_GetState + /tmp/ccPLZXyC.s:5176 .text.HAL_TIM_OnePulse_GetState:0000000000000000 $t + /tmp/ccPLZXyC.s:5183 .text.HAL_TIM_OnePulse_GetState:0000000000000000 HAL_TIM_OnePulse_GetState + /tmp/ccPLZXyC.s:5201 .text.HAL_TIM_Encoder_GetState:0000000000000000 $t + /tmp/ccPLZXyC.s:5208 .text.HAL_TIM_Encoder_GetState:0000000000000000 HAL_TIM_Encoder_GetState + /tmp/ccPLZXyC.s:5226 .text.HAL_TIM_GetActiveChannel:0000000000000000 $t + /tmp/ccPLZXyC.s:5233 .text.HAL_TIM_GetActiveChannel:0000000000000000 HAL_TIM_GetActiveChannel + /tmp/ccPLZXyC.s:5251 .text.HAL_TIM_GetChannelState:0000000000000000 $t + /tmp/ccPLZXyC.s:5258 .text.HAL_TIM_GetChannelState:0000000000000000 HAL_TIM_GetChannelState + /tmp/ccPLZXyC.s:5336 .text.HAL_TIM_DMABurstState:0000000000000000 $t + /tmp/ccPLZXyC.s:5343 .text.HAL_TIM_DMABurstState:0000000000000000 HAL_TIM_DMABurstState + /tmp/ccPLZXyC.s:5362 .text.TIM_Base_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:5369 .text.TIM_Base_SetConfig:0000000000000000 TIM_Base_SetConfig + /tmp/ccPLZXyC.s:5557 .text.TIM_Base_SetConfig:0000000000000104 $d + /tmp/ccPLZXyC.s:5568 .text.HAL_TIM_Base_Init:0000000000000000 $t + /tmp/ccPLZXyC.s:5575 .text.HAL_TIM_Base_Init:0000000000000000 HAL_TIM_Base_Init + /tmp/ccPLZXyC.s:5676 .text.HAL_TIM_OC_Init:0000000000000000 $t + /tmp/ccPLZXyC.s:5683 .text.HAL_TIM_OC_Init:0000000000000000 HAL_TIM_OC_Init + /tmp/ccPLZXyC.s:5784 .text.HAL_TIM_PWM_Init:0000000000000000 $t + /tmp/ccPLZXyC.s:5791 .text.HAL_TIM_PWM_Init:0000000000000000 HAL_TIM_PWM_Init + /tmp/ccPLZXyC.s:5892 .text.HAL_TIM_IC_Init:0000000000000000 $t + /tmp/ccPLZXyC.s:5899 .text.HAL_TIM_IC_Init:0000000000000000 HAL_TIM_IC_Init + /tmp/ccPLZXyC.s:6000 .text.HAL_TIM_OnePulse_Init:0000000000000000 $t + ARM GAS /tmp/ccPLZXyC.s page 497 + + + /tmp/ccPLZXyC.s:6007 .text.HAL_TIM_OnePulse_Init:0000000000000000 HAL_TIM_OnePulse_Init + /tmp/ccPLZXyC.s:6114 .text.HAL_TIM_Encoder_Init:0000000000000000 $t + /tmp/ccPLZXyC.s:6121 .text.HAL_TIM_Encoder_Init:0000000000000000 HAL_TIM_Encoder_Init + /tmp/ccPLZXyC.s:6327 .text.HAL_TIM_Encoder_Init:00000000000000a8 $d + /tmp/ccPLZXyC.s:6334 .text.TIM_OC2_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:6341 .text.TIM_OC2_SetConfig:0000000000000000 TIM_OC2_SetConfig + /tmp/ccPLZXyC.s:6478 .text.TIM_OC2_SetConfig:0000000000000064 $d + /tmp/ccPLZXyC.s:6485 .text.HAL_TIM_OC_ConfigChannel:0000000000000000 $t + /tmp/ccPLZXyC.s:6492 .text.HAL_TIM_OC_ConfigChannel:0000000000000000 HAL_TIM_OC_ConfigChannel + /tmp/ccPLZXyC.s:6524 .text.HAL_TIM_OC_ConfigChannel:000000000000001a $d + /tmp/ccPLZXyC.s:6658 .text.HAL_TIM_PWM_ConfigChannel:0000000000000000 $t + /tmp/ccPLZXyC.s:6665 .text.HAL_TIM_PWM_ConfigChannel:0000000000000000 HAL_TIM_PWM_ConfigChannel + /tmp/ccPLZXyC.s:6702 .text.HAL_TIM_PWM_ConfigChannel:0000000000000020 $d + /tmp/ccPLZXyC.s:6978 .text.TIM_TI1_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:6985 .text.TIM_TI1_SetConfig:0000000000000000 TIM_TI1_SetConfig + /tmp/ccPLZXyC.s:7114 .text.TIM_TI1_SetConfig:0000000000000088 $d + /tmp/ccPLZXyC.s:7121 .text.HAL_TIM_IC_ConfigChannel:0000000000000000 $t + /tmp/ccPLZXyC.s:7128 .text.HAL_TIM_IC_ConfigChannel:0000000000000000 HAL_TIM_IC_ConfigChannel + /tmp/ccPLZXyC.s:7344 .text.HAL_TIM_OnePulse_ConfigChannel:0000000000000000 $t + /tmp/ccPLZXyC.s:7351 .text.HAL_TIM_OnePulse_ConfigChannel:0000000000000000 HAL_TIM_OnePulse_ConfigChannel + /tmp/ccPLZXyC.s:7615 .text.HAL_TIM_OnePulse_ConfigChannel:00000000000000fc $d + /tmp/ccPLZXyC.s:7620 .text.TIM_ETR_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:7627 .text.TIM_ETR_SetConfig:0000000000000000 TIM_ETR_SetConfig + /tmp/ccPLZXyC.s:7671 .text.HAL_TIM_ConfigOCrefClear:0000000000000000 $t + /tmp/ccPLZXyC.s:7678 .text.HAL_TIM_ConfigOCrefClear:0000000000000000 HAL_TIM_ConfigOCrefClear + /tmp/ccPLZXyC.s:7754 .text.HAL_TIM_ConfigOCrefClear:0000000000000048 $d + /tmp/ccPLZXyC.s:7963 .text.HAL_TIM_ConfigClockSource:0000000000000000 $t + /tmp/ccPLZXyC.s:7970 .text.HAL_TIM_ConfigClockSource:0000000000000000 HAL_TIM_ConfigClockSource + /tmp/ccPLZXyC.s:8258 .text.HAL_TIM_ConfigClockSource:00000000000000fc $d + /tmp/ccPLZXyC.s:8263 .text.TIM_SlaveTimer_SetConfig:0000000000000000 $t + /tmp/ccPLZXyC.s:8269 .text.TIM_SlaveTimer_SetConfig:0000000000000000 TIM_SlaveTimer_SetConfig + /tmp/ccPLZXyC.s:8522 .text.TIM_SlaveTimer_SetConfig:00000000000000b8 $d + /tmp/ccPLZXyC.s:8527 .text.HAL_TIM_SlaveConfigSynchro:0000000000000000 $t + /tmp/ccPLZXyC.s:8534 .text.HAL_TIM_SlaveConfigSynchro:0000000000000000 HAL_TIM_SlaveConfigSynchro + /tmp/ccPLZXyC.s:8622 .text.HAL_TIM_SlaveConfigSynchro_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:8629 .text.HAL_TIM_SlaveConfigSynchro_IT:0000000000000000 HAL_TIM_SlaveConfigSynchro_IT + /tmp/ccPLZXyC.s:8717 .text.TIM_CCxChannelCmd:0000000000000000 $t + /tmp/ccPLZXyC.s:8724 .text.TIM_CCxChannelCmd:0000000000000000 TIM_CCxChannelCmd + /tmp/ccPLZXyC.s:8762 .text.HAL_TIM_OC_Start:0000000000000000 $t + /tmp/ccPLZXyC.s:8769 .text.HAL_TIM_OC_Start:0000000000000000 HAL_TIM_OC_Start + /tmp/ccPLZXyC.s:9010 .text.HAL_TIM_OC_Start:0000000000000144 $d + /tmp/ccPLZXyC.s:9017 .text.HAL_TIM_OC_Stop:0000000000000000 $t + /tmp/ccPLZXyC.s:9024 .text.HAL_TIM_OC_Stop:0000000000000000 HAL_TIM_OC_Stop + /tmp/ccPLZXyC.s:9145 .text.HAL_TIM_OC_Stop:000000000000009c $d + /tmp/ccPLZXyC.s:9151 .text.HAL_TIM_OC_Start_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:9158 .text.HAL_TIM_OC_Start_IT:0000000000000000 HAL_TIM_OC_Start_IT + /tmp/ccPLZXyC.s:9205 .text.HAL_TIM_OC_Start_IT:000000000000002e $d + /tmp/ccPLZXyC.s:9459 .text.HAL_TIM_OC_Start_IT:000000000000018c $d + /tmp/ccPLZXyC.s:9466 .text.HAL_TIM_OC_Stop_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:9473 .text.HAL_TIM_OC_Stop_IT:0000000000000000 HAL_TIM_OC_Stop_IT + /tmp/ccPLZXyC.s:9498 .text.HAL_TIM_OC_Stop_IT:000000000000000e $d + /tmp/ccPLZXyC.s:9668 .text.HAL_TIM_OC_Stop_IT:00000000000000f0 $d + /tmp/ccPLZXyC.s:9674 .text.HAL_TIM_OC_Start_DMA:0000000000000000 $t + /tmp/ccPLZXyC.s:9681 .text.HAL_TIM_OC_Start_DMA:0000000000000000 HAL_TIM_OC_Start_DMA + /tmp/ccPLZXyC.s:9757 .text.HAL_TIM_OC_Start_DMA:0000000000000058 $d + /tmp/ccPLZXyC.s:9771 .text.HAL_TIM_OC_Start_DMA:0000000000000072 $t + /tmp/ccPLZXyC.s:10256 .text.HAL_TIM_OC_Start_DMA:00000000000002cc $d + ARM GAS /tmp/ccPLZXyC.s page 498 + + + /tmp/ccPLZXyC.s:10266 .text.HAL_TIM_OC_Stop_DMA:0000000000000000 $t + /tmp/ccPLZXyC.s:10273 .text.HAL_TIM_OC_Stop_DMA:0000000000000000 HAL_TIM_OC_Stop_DMA + /tmp/ccPLZXyC.s:10298 .text.HAL_TIM_OC_Stop_DMA:000000000000000e $d + /tmp/ccPLZXyC.s:10493 .text.HAL_TIM_OC_Stop_DMA:0000000000000108 $d + /tmp/ccPLZXyC.s:10499 .text.HAL_TIM_PWM_Start:0000000000000000 $t + /tmp/ccPLZXyC.s:10506 .text.HAL_TIM_PWM_Start:0000000000000000 HAL_TIM_PWM_Start + /tmp/ccPLZXyC.s:10747 .text.HAL_TIM_PWM_Start:0000000000000144 $d + /tmp/ccPLZXyC.s:10754 .text.HAL_TIM_PWM_Stop:0000000000000000 $t + /tmp/ccPLZXyC.s:10761 .text.HAL_TIM_PWM_Stop:0000000000000000 HAL_TIM_PWM_Stop + /tmp/ccPLZXyC.s:10882 .text.HAL_TIM_PWM_Stop:000000000000009c $d + /tmp/ccPLZXyC.s:10888 .text.HAL_TIM_PWM_Start_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:10895 .text.HAL_TIM_PWM_Start_IT:0000000000000000 HAL_TIM_PWM_Start_IT + /tmp/ccPLZXyC.s:10942 .text.HAL_TIM_PWM_Start_IT:000000000000002e $d + /tmp/ccPLZXyC.s:11196 .text.HAL_TIM_PWM_Start_IT:000000000000018c $d + /tmp/ccPLZXyC.s:11203 .text.HAL_TIM_PWM_Stop_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:11210 .text.HAL_TIM_PWM_Stop_IT:0000000000000000 HAL_TIM_PWM_Stop_IT + /tmp/ccPLZXyC.s:11235 .text.HAL_TIM_PWM_Stop_IT:000000000000000e $d + /tmp/ccPLZXyC.s:11405 .text.HAL_TIM_PWM_Stop_IT:00000000000000f0 $d + /tmp/ccPLZXyC.s:11411 .text.HAL_TIM_PWM_Start_DMA:0000000000000000 $t + /tmp/ccPLZXyC.s:11418 .text.HAL_TIM_PWM_Start_DMA:0000000000000000 HAL_TIM_PWM_Start_DMA + /tmp/ccPLZXyC.s:11494 .text.HAL_TIM_PWM_Start_DMA:0000000000000058 $d + /tmp/ccPLZXyC.s:11508 .text.HAL_TIM_PWM_Start_DMA:0000000000000072 $t + /tmp/ccPLZXyC.s:11993 .text.HAL_TIM_PWM_Start_DMA:00000000000002cc $d + /tmp/ccPLZXyC.s:12003 .text.HAL_TIM_PWM_Stop_DMA:0000000000000000 $t + /tmp/ccPLZXyC.s:12010 .text.HAL_TIM_PWM_Stop_DMA:0000000000000000 HAL_TIM_PWM_Stop_DMA + /tmp/ccPLZXyC.s:12035 .text.HAL_TIM_PWM_Stop_DMA:000000000000000e $d + /tmp/ccPLZXyC.s:12230 .text.HAL_TIM_PWM_Stop_DMA:0000000000000108 $d + /tmp/ccPLZXyC.s:12236 .text.HAL_TIM_IC_Start:0000000000000000 $t + /tmp/ccPLZXyC.s:12243 .text.HAL_TIM_IC_Start:0000000000000000 HAL_TIM_IC_Start + /tmp/ccPLZXyC.s:12539 .text.HAL_TIM_IC_Start:0000000000000160 $d + /tmp/ccPLZXyC.s:12545 .text.HAL_TIM_IC_Stop:0000000000000000 $t + /tmp/ccPLZXyC.s:12552 .text.HAL_TIM_IC_Stop:0000000000000000 HAL_TIM_IC_Stop + /tmp/ccPLZXyC.s:12674 .text.HAL_TIM_IC_Start_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:12681 .text.HAL_TIM_IC_Start_IT:0000000000000000 HAL_TIM_IC_Start_IT + /tmp/ccPLZXyC.s:12746 .text.HAL_TIM_IC_Start_IT:0000000000000040 $d + /tmp/ccPLZXyC.s:13047 .text.HAL_TIM_IC_Start_IT:00000000000001a8 $d + /tmp/ccPLZXyC.s:13053 .text.HAL_TIM_IC_Stop_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:13060 .text.HAL_TIM_IC_Stop_IT:0000000000000000 HAL_TIM_IC_Stop_IT + /tmp/ccPLZXyC.s:13085 .text.HAL_TIM_IC_Stop_IT:000000000000000e $d + /tmp/ccPLZXyC.s:13253 .text.HAL_TIM_IC_Start_DMA:0000000000000000 $t + /tmp/ccPLZXyC.s:13260 .text.HAL_TIM_IC_Start_DMA:0000000000000000 HAL_TIM_IC_Start_DMA + /tmp/ccPLZXyC.s:13359 .text.HAL_TIM_IC_Start_DMA:0000000000000064 $d + /tmp/ccPLZXyC.s:13373 .text.HAL_TIM_IC_Start_DMA:000000000000007e $t + /tmp/ccPLZXyC.s:13791 .text.HAL_TIM_IC_Start_DMA:0000000000000270 $d + /tmp/ccPLZXyC.s:13800 .text.HAL_TIM_IC_Stop_DMA:0000000000000000 $t + /tmp/ccPLZXyC.s:13807 .text.HAL_TIM_IC_Stop_DMA:0000000000000000 HAL_TIM_IC_Stop_DMA + /tmp/ccPLZXyC.s:13840 .text.HAL_TIM_IC_Stop_DMA:0000000000000016 $d + /tmp/ccPLZXyC.s:14016 .text.HAL_TIM_OnePulse_Start:0000000000000000 $t + /tmp/ccPLZXyC.s:14023 .text.HAL_TIM_OnePulse_Start:0000000000000000 HAL_TIM_OnePulse_Start + /tmp/ccPLZXyC.s:14144 .text.HAL_TIM_OnePulse_Start:000000000000007c $d + /tmp/ccPLZXyC.s:14150 .text.HAL_TIM_OnePulse_Stop:0000000000000000 $t + /tmp/ccPLZXyC.s:14157 .text.HAL_TIM_OnePulse_Stop:0000000000000000 HAL_TIM_OnePulse_Stop + /tmp/ccPLZXyC.s:14251 .text.HAL_TIM_OnePulse_Stop:0000000000000078 $d + /tmp/ccPLZXyC.s:14257 .text.HAL_TIM_OnePulse_Start_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:14264 .text.HAL_TIM_OnePulse_Start_IT:0000000000000000 HAL_TIM_OnePulse_Start_IT + /tmp/ccPLZXyC.s:14395 .text.HAL_TIM_OnePulse_Start_IT:0000000000000090 $d + /tmp/ccPLZXyC.s:14401 .text.HAL_TIM_OnePulse_Stop_IT:0000000000000000 $t + ARM GAS /tmp/ccPLZXyC.s page 499 + + + /tmp/ccPLZXyC.s:14408 .text.HAL_TIM_OnePulse_Stop_IT:0000000000000000 HAL_TIM_OnePulse_Stop_IT + /tmp/ccPLZXyC.s:14512 .text.HAL_TIM_OnePulse_Stop_IT:000000000000008c $d + /tmp/ccPLZXyC.s:14518 .text.HAL_TIM_Encoder_Start:0000000000000000 $t + /tmp/ccPLZXyC.s:14525 .text.HAL_TIM_Encoder_Start:0000000000000000 HAL_TIM_Encoder_Start + /tmp/ccPLZXyC.s:14726 .text.HAL_TIM_Encoder_Stop:0000000000000000 $t + /tmp/ccPLZXyC.s:14733 .text.HAL_TIM_Encoder_Stop:0000000000000000 HAL_TIM_Encoder_Stop + /tmp/ccPLZXyC.s:14915 .text.HAL_TIM_Encoder_Start_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:14922 .text.HAL_TIM_Encoder_Start_IT:0000000000000000 HAL_TIM_Encoder_Start_IT + /tmp/ccPLZXyC.s:15145 .text.HAL_TIM_Encoder_Stop_IT:0000000000000000 $t + /tmp/ccPLZXyC.s:15152 .text.HAL_TIM_Encoder_Stop_IT:0000000000000000 HAL_TIM_Encoder_Stop_IT + /tmp/ccPLZXyC.s:15355 .text.HAL_TIM_Encoder_Start_DMA:0000000000000000 $t + /tmp/ccPLZXyC.s:15362 .text.HAL_TIM_Encoder_Start_DMA:0000000000000000 HAL_TIM_Encoder_Start_DMA + /tmp/ccPLZXyC.s:15846 .text.HAL_TIM_Encoder_Start_DMA:0000000000000240 $d + /tmp/ccPLZXyC.s:15853 .text.HAL_TIM_Encoder_Stop_DMA:0000000000000000 $t + /tmp/ccPLZXyC.s:15860 .text.HAL_TIM_Encoder_Stop_DMA:0000000000000000 HAL_TIM_Encoder_Stop_DMA + /tmp/ccPLZXyC.s:3793 .text.HAL_TIM_ReadCapturedValue:0000000000000015 $d + /tmp/ccPLZXyC.s:3793 .text.HAL_TIM_ReadCapturedValue:0000000000000016 $t + /tmp/ccPLZXyC.s:6545 .text.HAL_TIM_OC_ConfigChannel:000000000000002f $d + /tmp/ccPLZXyC.s:6545 .text.HAL_TIM_OC_ConfigChannel:0000000000000030 $t + /tmp/ccPLZXyC.s:6723 .text.HAL_TIM_PWM_ConfigChannel:0000000000000035 $d + /tmp/ccPLZXyC.s:6723 .text.HAL_TIM_PWM_ConfigChannel:0000000000000036 $t + /tmp/ccPLZXyC.s:7776 .text.HAL_TIM_ConfigOCrefClear:000000000000005d $d + /tmp/ccPLZXyC.s:7776 .text.HAL_TIM_ConfigOCrefClear:000000000000005e $t + /tmp/ccPLZXyC.s:9218 .text.HAL_TIM_OC_Start_IT:000000000000003b $d + /tmp/ccPLZXyC.s:9218 .text.HAL_TIM_OC_Start_IT:000000000000003c $t + /tmp/ccPLZXyC.s:9511 .text.HAL_TIM_OC_Stop_IT:000000000000001b $d + /tmp/ccPLZXyC.s:9511 .text.HAL_TIM_OC_Stop_IT:000000000000001c $t + /tmp/ccPLZXyC.s:10311 .text.HAL_TIM_OC_Stop_DMA:000000000000001b $d + /tmp/ccPLZXyC.s:10311 .text.HAL_TIM_OC_Stop_DMA:000000000000001c $t + /tmp/ccPLZXyC.s:10955 .text.HAL_TIM_PWM_Start_IT:000000000000003b $d + /tmp/ccPLZXyC.s:10955 .text.HAL_TIM_PWM_Start_IT:000000000000003c $t + /tmp/ccPLZXyC.s:11248 .text.HAL_TIM_PWM_Stop_IT:000000000000001b $d + /tmp/ccPLZXyC.s:11248 .text.HAL_TIM_PWM_Stop_IT:000000000000001c $t + /tmp/ccPLZXyC.s:12048 .text.HAL_TIM_PWM_Stop_DMA:000000000000001b $d + /tmp/ccPLZXyC.s:12048 .text.HAL_TIM_PWM_Stop_DMA:000000000000001c $t + /tmp/ccPLZXyC.s:12760 .text.HAL_TIM_IC_Start_IT:000000000000004d $d + /tmp/ccPLZXyC.s:12760 .text.HAL_TIM_IC_Start_IT:000000000000004e $t + /tmp/ccPLZXyC.s:13098 .text.HAL_TIM_IC_Stop_IT:000000000000001b $d + /tmp/ccPLZXyC.s:13098 .text.HAL_TIM_IC_Stop_IT:000000000000001c $t + /tmp/ccPLZXyC.s:13853 .text.HAL_TIM_IC_Stop_DMA:0000000000000023 $d + /tmp/ccPLZXyC.s:13853 .text.HAL_TIM_IC_Stop_DMA:0000000000000024 $t + +UNDEFINED SYMBOLS +HAL_DMA_Start_IT +HAL_DMA_Abort_IT +TIMEx_DMACommutationCplt +TIMEx_DMACommutationHalfCplt +HAL_TIMEx_BreakCallback +HAL_TIMEx_Break2Callback +HAL_TIMEx_CommutCallback diff --git a/build/stm32f7xx_hal_tim.o b/build/stm32f7xx_hal_tim.o new file mode 100644 index 0000000..4ae249e Binary files /dev/null and b/build/stm32f7xx_hal_tim.o differ diff --git a/build/stm32f7xx_hal_tim_ex.d b/build/stm32f7xx_hal_tim_ex.d new file mode 100644 index 0000000..2480e32 --- /dev/null +++ b/build/stm32f7xx_hal_tim_ex.d @@ -0,0 +1,64 @@ +build/stm32f7xx_hal_tim_ex.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_hal_tim_ex.lst b/build/stm32f7xx_hal_tim_ex.lst new file mode 100644 index 0000000..4bc7280 --- /dev/null +++ b/build/stm32f7xx_hal_tim_ex.lst @@ -0,0 +1,10645 @@ +ARM GAS /tmp/cc7KL1Mv.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_hal_tim_ex.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.TIM_CCxNChannelCmd,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 TIM_CCxNChannelCmd: + 25 .LVL0: + 26 .LFB185: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @file stm32f7xx_hal_tim_ex.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief TIM HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This file provides firmware functions to manage the following + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * functionalities of the Timer Extended peripheral: + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + Time Hall Sensor Interface Initialization + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + Time Hall Sensor Interface Start + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + Time Complementary signal break and dead time configuration + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + Time Master and Slave synchronization configuration + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + Time Output Compare/PWM Channel Configuration (for channels 5 and 6) + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + Timer remapping capabilities configuration + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ****************************************************************************** + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @attention + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * Copyright (c) 2017 STMicroelectronics. + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * All rights reserved. + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This software is licensed under terms that can be found in the LICENSE file + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * in the root directory of this software component. + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ****************************************************************************** + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @verbatim + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ##### TIMER Extended features ##### + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** [..] + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** The Timer Extended features include: + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (#) Complementary outputs with programmable dead-time for : + ARM GAS /tmp/cc7KL1Mv.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (++) Output Compare + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (++) PWM generation (Edge and Center-aligned Mode) + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (++) One-pulse mode output + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (#) Synchronization circuit to control the timer with external signals and to + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** interconnect several timers together. + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (#) Break input to put the timer output signals in reset state or in a known state. + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (#) Supports incremental (quadrature) encoder and hall-sensor circuitry for + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** positioning purposes + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ##### How to use this driver ##### + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** [..] + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (#) Initialize the TIM low level resources by implementing the following functions + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** depending on the selected feature: + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (++) Hall Sensor output : HAL_TIMEx_HallSensor_MspInit() + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (#) Initialize the TIM low level resources : + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (##) Enable the TIM interface clock using __HAL_RCC_TIMx_CLK_ENABLE(); + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (##) TIM pins configuration + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+++) Enable the clock for the TIM GPIOs using the following function: + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_RCC_GPIOx_CLK_ENABLE(); + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+++) Configure these TIM pins in Alternate function mode using HAL_GPIO_Init(); + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (#) The external Clock can be configured, if needed (the default clock is the + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** internal clock from the APBx), using the following function: + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ConfigClockSource, the clock configuration should be done before + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** any start function. + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (#) Configure the TIM in the desired functioning mode using one of the + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** initialization function of this driver: + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (++) HAL_TIMEx_HallSensor_Init() and HAL_TIMEx_ConfigCommutEvent(): to use the + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Timer Hall Sensor Interface and the commutation event with the corresponding + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Interrupt and DMA request if needed (Note that One Timer is used to interface + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** with the Hall sensor Interface and another Timer should be used to use + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** the commutation event). + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (#) Activate the TIM peripheral using one of the start functions: + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (++) Complementary Output Compare : HAL_TIMEx_OCN_Start(), HAL_TIMEx_OCN_Start_DMA(), + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIMEx_OCN_Start_IT() + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (++) Complementary PWM generation : HAL_TIMEx_PWMN_Start(), HAL_TIMEx_PWMN_Start_DMA(), + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIMEx_PWMN_Start_IT() + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (++) Complementary One-pulse mode output : HAL_TIMEx_OnePulseN_Start(), HAL_TIMEx_OnePul + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (++) Hall Sensor output : HAL_TIMEx_HallSensor_Start(), HAL_TIMEx_HallSensor_Start_DMA() + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIMEx_HallSensor_Start_IT(). + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @endverbatim + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ****************************************************************************** + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Includes ------------------------------------------------------------------*/ + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #include "stm32f7xx_hal.h" + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @addtogroup STM32F7xx_HAL_Driver + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @defgroup TIMEx TIMEx + ARM GAS /tmp/cc7KL1Mv.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief TIM Extended HAL module driver + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #ifdef HAL_TIM_MODULE_ENABLED + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Private typedef -----------------------------------------------------------*/ + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Private define ------------------------------------------------------------*/ + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Private macros ------------------------------------------------------------*/ + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Private variables ---------------------------------------------------------*/ + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Private function prototypes -----------------------------------------------*/ + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** static void TIM_DMADelayPulseNCplt(DMA_HandleTypeDef *hdma); + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** static void TIM_DMAErrorCCxN(DMA_HandleTypeDef *hdma); + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** static void TIM_CCxNChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelNState); + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Exported functions --------------------------------------------------------*/ + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @defgroup TIMEx_Exported_Functions TIM Extended Exported Functions + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @defgroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Timer Hall Sensor functions + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @verbatim + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ##### Timer Hall Sensor functions ##### + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** [..] + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** This section provides functions allowing to: + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Initialize and configure TIM HAL Sensor. + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) De-initialize TIM HAL Sensor. + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Hall Sensor Interface. + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Hall Sensor Interface. + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Hall Sensor Interface and enable interrupts. + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Hall Sensor Interface and disable interrupts. + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Hall Sensor Interface and enable DMA transfers. + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Hall Sensor Interface and disable DMA transfers. + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @endverbatim + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Initializes the TIM Hall Sensor Interface and initialize the associated handle. + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @note When the timer instance is initialized in Hall Sensor Interface mode, + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * timer channels 1 and channel 2 are reserved and cannot be used for + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * other purpose. + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor Interface handle + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param sConfig TIM Hall Sensor configuration structure + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, const TIM_HallSensor_InitTypeD + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_OC_InitTypeDef OC_Config; + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the TIM handle allocation */ + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (htim == NULL) + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity)); + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler)); + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter)); + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (htim->State == HAL_TIM_STATE_RESET) + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Allocate lock resource and initialize it */ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Lock = HAL_UNLOCKED; + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Reset interrupt callbacks to legacy week callbacks */ + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_ResetCallback(htim); + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (htim->HallSensor_MspInitCallback == NULL) + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->HallSensor_MspInitCallback = HAL_TIMEx_HallSensor_MspInit; + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC */ + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->HallSensor_MspInitCallback(htim); + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #else + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIMEx_HallSensor_MspInit(htim); + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM state */ + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_BUSY; + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Configure the Time base in the Encoder Mode */ + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_Base_SetConfig(htim->Instance, &htim->Init); + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Configure the Channel 1 as Input Channel to interface with the three Outputs of the Hall sens + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_TI1_SetConfig(htim->Instance, sConfig->IC1Polarity, TIM_ICSELECTION_TRC, sConfig->IC1Filter); + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Reset the IC1PSC Bits */ + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC; + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the IC1PSC value */ + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CCMR1 |= sConfig->IC1Prescaler; + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Hall sensor interface (XOR function of the three inputs) */ + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= TIM_CR2_TI1S; + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the TIM_TS_TI1F_ED signal as Input trigger for the TIM */ + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR &= ~TIM_SMCR_TS; + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= TIM_TS_TI1F_ED; + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Use the TIM_TS_TI1F_ED signal to reset the TIM counter each edge detection */ + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR &= ~TIM_SMCR_SMS; + ARM GAS /tmp/cc7KL1Mv.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_RESET; + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Program channel 2 in PWM 2 mode with the desired Commutation_Delay*/ + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCFastMode = TIM_OCFAST_DISABLE; + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCIdleState = TIM_OCIDLESTATE_RESET; + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCMode = TIM_OCMODE_PWM2; + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCNIdleState = TIM_OCNIDLESTATE_RESET; + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCNPolarity = TIM_OCNPOLARITY_HIGH; + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCPolarity = TIM_OCPOLARITY_HIGH; + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.Pulse = sConfig->Commutation_Delay; + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_OC2_SetConfig(htim->Instance, &OC_Config); + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select OC2REF as trigger output on TRGO: write the MMS bits in the TIMx_CR2 + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** register to 101 */ + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 &= ~TIM_CR2_MMS; + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= TIM_TRGO_OC2REF; + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Initialize the DMA burst operation state */ + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_READY; + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Initialize the TIM channels state */ + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Initialize the TIM state*/ + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_READY; + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief DeInitializes the TIM Hall Sensor interface + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor Interface handle + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim) + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_INSTANCE(htim->Instance)); + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_BUSY; + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Peripheral Clock */ + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (htim->HallSensor_MspDeInitCallback == NULL) + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->HallSensor_MspDeInitCallback = HAL_TIMEx_HallSensor_MspDeInit; + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* DeInit the low level hardware */ + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->HallSensor_MspDeInitCallback(htim); + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #else + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* DeInit the low level hardware: GPIO, CLOCK, NVIC */ + ARM GAS /tmp/cc7KL1Mv.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIMEx_HallSensor_MspDeInit(htim); + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Change the DMA burst operation state */ + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->DMABurstState = HAL_DMA_BURST_STATE_RESET; + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Change the TIM channels state */ + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Change TIM state */ + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_RESET; + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Release Lock */ + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_UNLOCK(htim); + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Initializes the TIM Hall Sensor MSP. + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor Interface handle + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __weak void HAL_TIMEx_HallSensor_MspInit(TIM_HandleTypeDef *htim) + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** UNUSED(htim); + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* NOTE : This function should not be modified, when the callback is needed, + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** the HAL_TIMEx_HallSensor_MspInit could be implemented in the user file + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief DeInitializes TIM Hall Sensor MSP. + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor Interface handle + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __weak void HAL_TIMEx_HallSensor_MspDeInit(TIM_HandleTypeDef *htim) + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** UNUSED(htim); + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* NOTE : This function should not be modified, when the callback is needed, + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** the HAL_TIMEx_HallSensor_MspDeInit could be implemented in the user file + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the TIM Hall Sensor Interface. + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor Interface handle + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start(TIM_HandleTypeDef *htim) + ARM GAS /tmp/cc7KL1Mv.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the TIM channels state */ + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM channels state */ + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Input Capture channel 1 + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the TIM Hall sensor Interface. + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor Interface handle + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop(TIM_HandleTypeDef *htim) + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + ARM GAS /tmp/cc7KL1Mv.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Input Capture channels 1, 2 and 3 + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM channels state */ + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the TIM Hall Sensor Interface in interrupt mode. + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor Interface handle + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_IT(TIM_HandleTypeDef *htim) + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the TIM channels state */ + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM channels state */ + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the capture compare Interrupts 1 event */ + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Input Capture channel 1 + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + ARM GAS /tmp/cc7KL1Mv.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the TIM Hall Sensor Interface in interrupt mode. + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor Interface handle + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_IT(TIM_HandleTypeDef *htim) + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Input Capture channel 1 + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the capture compare Interrupts event */ + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM channels state */ + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the TIM Hall Sensor Interface in DMA mode. + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor Interface handle + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param pData The destination Buffer address. + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Length The length of data to be transferred from TIM peripheral to memory. + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + ARM GAS /tmp/cc7KL1Mv.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pData, uint16_t + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM channel state */ + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY) + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)) + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_BUSY; + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else if ((channel_1_state == HAL_TIM_CHANNEL_STATE_READY) + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)) + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((pData == NULL) || (Length == 0U)) + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Input Capture channel 1 + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE); + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA Input Capture 1 Callbacks */ + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMACaptureCplt; + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ; + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the DMA stream for Capture 1*/ + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)&htim->Instance->CCR1, (uint32_t)pData + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return error status */ + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the capture compare 1 Interrupt */ + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + ARM GAS /tmp/cc7KL1Mv.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the TIM Hall Sensor Interface in DMA mode. + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor Interface handle + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim) + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance)); + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Input Capture channel 1 + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (in the Hall Sensor Interface the three possible channels that can be used are TIM_CHANNEL_1, + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_2 and TIM_CHANNEL_3) */ + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, TIM_CHANNEL_1, TIM_CCx_DISABLE); + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the capture compare Interrupts 1 event */ + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM channel state */ + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @} + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @defgroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Timer Complementary Output Compare functions + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @verbatim + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ##### Timer Complementary Output Compare functions ##### + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== + ARM GAS /tmp/cc7KL1Mv.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** [..] + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** This section provides functions allowing to: + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Complementary Output Compare/PWM. + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Complementary Output Compare/PWM. + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Complementary Output Compare/PWM and enable interrupts. + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Complementary Output Compare/PWM and disable interrupts. + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Complementary Output Compare/PWM and enable DMA transfers. + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Complementary Output Compare/PWM and disable DMA transfers. + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @endverbatim + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the TIM Output Compare signal generation on the complementary + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * output. + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Output Compare handle + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be enabled + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel) + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the TIM complementary channel state */ + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Capture compare channel N */ + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Main Output */ + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_ENABLE(htim); + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 13 + + + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the TIM Output Compare signal generation on the complementary + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * output. + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be disabled + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_OCN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Capture compare channel N */ + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Main Output */ + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_DISABLE(htim); + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the TIM Output Compare signal generation in interrupt mode + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * on the complementary output. + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM OC handle + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be enabled + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_OCN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + ARM GAS /tmp/cc7KL1Mv.s page 14 + + + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the TIM complementary channel state */ + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** switch (Channel) + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_1: + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Output Compare interrupt */ + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_2: + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Output Compare interrupt */ + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_3: + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Output Compare interrupt */ + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** default: + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** status = HAL_ERROR; + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (status == HAL_OK) + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Break interrupt */ + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK); + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Capture compare channel N */ + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Main Output */ + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_ENABLE(htim); + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigge + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + ARM GAS /tmp/cc7KL1Mv.s page 15 + + + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return status; + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the TIM Output Compare signal generation in interrupt mode + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * on the complementary output. + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Output Compare handle + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be disabled + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpccer; + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** switch (Channel) + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_1: + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Output Compare interrupt */ + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_2: + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Output Compare interrupt */ + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_3: + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Output Compare interrupt */ + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** default: + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** status = HAL_ERROR; + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + ARM GAS /tmp/cc7KL1Mv.s page 16 + + + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (status == HAL_OK) + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Capture compare channel N */ + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Break interrupt (only if no more channel is active) */ + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpccer = htim->Instance->CCER; + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET) + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK); + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Main Output */ + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_DISABLE(htim); + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return status; + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the TIM Output Compare signal generation in DMA mode + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * on the complementary output. + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Output Compare handle + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be enabled + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param pData The source Buffer address. + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Length The length of data to be transferred from memory to TIM peripheral + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_t + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint16_t Length) + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_BUSY; + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 17 + + + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((pData == NULL) || (Length == 0U)) + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** switch (Channel) + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_1: + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA compare callbacks */ + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseNCplt; + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAErrorCCxN ; + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the DMA stream */ + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance-> + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return error status */ + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Output Compare DMA request */ + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_2: + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA compare callbacks */ + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseNCplt; + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAErrorCCxN ; + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the DMA stream */ + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance-> + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return error status */ + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Output Compare DMA request */ + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + ARM GAS /tmp/cc7KL1Mv.s page 18 + + + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_3: + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA compare callbacks */ + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseNCplt; + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAErrorCCxN ; + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the DMA stream */ + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance-> + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return error status */ + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Output Compare DMA request */ + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** default: + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** status = HAL_ERROR; + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (status == HAL_OK) + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Capture compare channel N */ + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Main Output */ + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_ENABLE(htim); + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigge + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return status; + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the TIM Output Compare signal generation in DMA mode +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * on the complementary output. + ARM GAS /tmp/cc7KL1Mv.s page 19 + + +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Output Compare handle +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be disabled +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** switch (Channel) +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_1: +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Output Compare DMA request */ +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_2: +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Output Compare DMA request */ +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_3: +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Output Compare DMA request */ +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** default: +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** status = HAL_ERROR; +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (status == HAL_OK) +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Capture compare channel N */ +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Main Output */ +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_DISABLE(htim); +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 20 + + +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return status; +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @} +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @defgroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Timer Complementary PWM functions +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @verbatim +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ##### Timer Complementary PWM functions ##### +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** [..] +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** This section provides functions allowing to: +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Complementary PWM. +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Complementary PWM. +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Complementary PWM and enable interrupts. +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Complementary PWM and disable interrupts. +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Complementary PWM and enable DMA transfers. +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Complementary PWM and disable DMA transfers. +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @endverbatim +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the PWM signal generation on the complementary output. +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be enabled +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel) +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the TIM complementary channel state */ +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 21 + + +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the complementary PWM output */ +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Main Output */ +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_ENABLE(htim); +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the PWM signal generation on the complementary output. +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be disabled +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop(TIM_HandleTypeDef *htim, uint32_t Channel) +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the complementary PWM output */ +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Main Output */ +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_DISABLE(htim); +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the PWM signal generation in interrupt mode on the + ARM GAS /tmp/cc7KL1Mv.s page 22 + + +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * complementary output. +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be disabled +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the TIM complementary channel state */ +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (TIM_CHANNEL_N_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** switch (Channel) +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_1: +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Capture/Compare 1 interrupt */ +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_2: +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Capture/Compare 2 interrupt */ +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_3: +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Capture/Compare 3 interrupt */ +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC3); +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** default: +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** status = HAL_ERROR; +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (status == HAL_OK) +1227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Break interrupt */ + ARM GAS /tmp/cc7KL1Mv.s page 23 + + +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_BREAK); +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the complementary PWM output */ +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Main Output */ +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_ENABLE(htim); +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigge +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); +1244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return status; +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the PWM signal generation in interrupt mode on the +1258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * complementary output. +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be disabled +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel) +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpccer; +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** switch (Channel) +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_1: +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Capture/Compare 1 interrupt */ +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_2: +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 24 + + +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Capture/Compare 2 interrupt */ +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_3: +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Capture/Compare 3 interrupt */ +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC3); +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** default: +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** status = HAL_ERROR; +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (status == HAL_OK) +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the complementary PWM output */ +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Break interrupt (only if no more channel is active) */ +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpccer = htim->Instance->CCER; +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET) +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_BREAK); +1313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Main Output */ +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_DISABLE(htim); +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return status; +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the TIM PWM signal generation in DMA mode on the +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * complementary output +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be enabled +1334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param pData The source Buffer address. +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Length The length of data to be transferred from memory to TIM peripheral +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, const uint32_ + ARM GAS /tmp/cc7KL1Mv.s page 25 + + +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint16_t Length) +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_BUSY) +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_BUSY; +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else if (TIM_CHANNEL_N_STATE_GET(htim, Channel) == HAL_TIM_CHANNEL_STATE_READY) +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((pData == NULL) || (Length == 0U)) +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else +1363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; +1370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** switch (Channel) +1373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_1: +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA compare callbacks */ +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferCpltCallback = TIM_DMADelayPulseNCplt; +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAErrorCCxN ; +1382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the DMA stream */ +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)pData, (uint32_t)&htim->Instance-> +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) +1386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return error status */ +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Capture/Compare 1 DMA request */ +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC1); +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_2: +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA compare callbacks */ +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferCpltCallback = TIM_DMADelayPulseNCplt; +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + ARM GAS /tmp/cc7KL1Mv.s page 26 + + +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAErrorCCxN ; +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the DMA stream */ +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)pData, (uint32_t)&htim->Instance-> +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return error status */ +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; +1410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Capture/Compare 2 DMA request */ +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC2); +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_3: +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA compare callbacks */ +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferCpltCallback = TIM_DMADelayPulseNCplt; +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAErrorCCxN ; +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the DMA stream */ +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)pData, (uint32_t)&htim->Instance-> +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return error status */ +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; +1431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Capture/Compare 3 DMA request */ +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_CC3); +1434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** default: +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** status = HAL_ERROR; +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (status == HAL_OK) +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the complementary PWM output */ +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_ENABLE); +1446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Main Output */ +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_ENABLE(htim); +1449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigge +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) +1455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); + ARM GAS /tmp/cc7KL1Mv.s page 27 + + +1457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE(htim); +1462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return status; +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the TIM PWM signal generation in DMA mode on the complementary +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * output +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +1473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel TIM Channel to be disabled +1474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 selected +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel) +1481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel)); +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** switch (Channel) +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_1: +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Capture/Compare 1 DMA request */ +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC1); +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_2: +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Capture/Compare 2 DMA request */ +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC2); +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_CHANNEL_3: +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Capture/Compare 3 DMA request */ +1508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_CC3); +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** default: + ARM GAS /tmp/cc7KL1Mv.s page 28 + + +1514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** status = HAL_ERROR; +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (status == HAL_OK) +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the complementary PWM output */ +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, Channel, TIM_CCxN_DISABLE); +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Main Output */ +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_DISABLE(htim); +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM complementary channel state */ +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_READY); +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return status; +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @} +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @defgroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Timer Complementary One Pulse functions +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * +1544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @verbatim +1545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ##### Timer Complementary One Pulse functions ##### +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** [..] +1549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** This section provides functions allowing to: +1550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Complementary One Pulse generation. +1551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Complementary One Pulse. +1552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Start the Complementary One Pulse and enable interrupts. +1553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Stop the Complementary One Pulse and disable interrupts. +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @endverbatim +1556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the TIM One Pulse signal generation on the complementary +1561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * output. +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @note OutputChannel must match the pulse output channel chosen when calling +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @ref HAL_TIM_OnePulse_ConfigChannel(). +1564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM One Pulse handle +1565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param OutputChannel pulse output channel to enable +1566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ + ARM GAS /tmp/cc7KL1Mv.s page 29 + + +1571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); +1576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +1577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +1578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); +1581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the TIM channels state */ +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +1584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) +1585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +1586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) +1587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; +1589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM channels state */ +1592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +1593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +1594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +1595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +1596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the complementary One Pulse output channel and the Input Capture channel */ +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE); +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); +1600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Main Output */ +1602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_ENABLE(htim); +1603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the TIM One Pulse signal generation on the complementary +1610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * output. +1611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @note OutputChannel must match the pulse output channel chosen when calling +1612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @ref HAL_TIM_OnePulse_ConfigChannel(). +1613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM One Pulse handle +1614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param OutputChannel pulse output channel to disable +1615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; +1623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); +1626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the complementary One Pulse output channel and the Input Capture channel */ + ARM GAS /tmp/cc7KL1Mv.s page 30 + + +1628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE); +1629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE); +1630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Main Output */ +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_DISABLE(htim); +1633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); +1636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM channels state */ +1638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +1639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +1641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +1642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +1645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Starts the TIM One Pulse signal generation in interrupt mode on the +1649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * complementary channel. +1650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @note OutputChannel must match the pulse output channel chosen when calling +1651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @ref HAL_TIM_OnePulse_ConfigChannel(). +1652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM One Pulse handle +1653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param OutputChannel pulse output channel to enable +1654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +1660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; +1662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); +1663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +1665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA +1666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); +1669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the TIM channels state */ +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +1672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) +1673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_1_state != HAL_TIM_CHANNEL_STATE_READY) +1674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_2_state != HAL_TIM_CHANNEL_STATE_READY)) +1675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_ERROR; +1677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM channels state */ +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +1681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +1682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); +1684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 31 + + +1685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Capture/Compare 1 interrupt */ +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC1); +1687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the TIM Capture/Compare 2 interrupt */ +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_CC2); +1690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the complementary One Pulse output channel and the Input Capture channel */ +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_ENABLE); +1693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); +1694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Main Output */ +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_ENABLE(htim); +1697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Stops the TIM One Pulse signal generation in interrupt mode on the +1704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * complementary channel. +1705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @note OutputChannel must match the pulse output channel chosen when calling +1706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @ref HAL_TIM_OnePulse_ConfigChannel(). +1707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM One Pulse handle +1708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param OutputChannel pulse output channel to disable +1709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 selected +1711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 selected +1712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t OutputChannel) +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; +1717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, OutputChannel)); +1720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Capture/Compare 1 interrupt */ +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC1); +1723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the TIM Capture/Compare 2 interrupt */ +1725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_CC2); +1726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the complementary One Pulse output channel and the Input Capture channel */ +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxNChannelCmd(htim->Instance, OutputChannel, TIM_CCxN_DISABLE); +1729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE); +1730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Main Output */ +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_MOE_DISABLE(htim); +1733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable the Peripheral */ +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE(htim); +1736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the TIM channels state */ +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +1739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +1741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + ARM GAS /tmp/cc7KL1Mv.s page 32 + + +1742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Return function status */ +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +1745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @} +1749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @defgroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions +1752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Peripheral Control functions +1753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * +1754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @verbatim +1755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== +1756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ##### Peripheral Control functions ##### +1757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== +1758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** [..] +1759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** This section provides functions allowing to: +1760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Configure the commutation event in case of use of the Hall sensor interface. +1761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Configure Output channels for OC and PWM mode. +1762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Configure Complementary channels, break features and dead time. +1764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Configure Master synchronization. +1765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Configure timer remapping capabilities. +1766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Enable or disable channel grouping. +1767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @endverbatim +1769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ +1770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Configure the TIM commutation event sequence. +1774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @note This function is mandatory to use the commutation event in order to +1775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * update the configuration at each commutation detection on the TRGI input of the Timer, +1776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * the typical use of this feature is with the use of another Timer(interface Timer) +1777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * configured in Hall sensor interface, this interface Timer will generate the +1778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * commutation at its TRGO output (connected to Timer used in this function) each time +1779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * the TI1 of the Interface Timer detect a commutation at its input TI1. +1780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +1781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall +1782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR0: Internal trigger 0 selected +1784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR1: Internal trigger 1 selected +1785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR2: Internal trigger 2 selected +1786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR3: Internal trigger 3 selected +1787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_NONE: No trigger is needed +1788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param CommutationSource the Commutation Event source +1789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer +1791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG +1792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, +1795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t CommutationSource) +1796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance)); + ARM GAS /tmp/cc7KL1Mv.s page 33 + + +1799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); +1800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_LOCK(htim); +1802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) || +1804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) +1805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Input trigger */ +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR &= ~TIM_SMCR_TS; +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; +1809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Capture Compare preload feature */ +1812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= TIM_CR2_CCPC; +1813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ +1814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 &= ~TIM_CR2_CCUS; +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; +1816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable Commutation Interrupt */ +1818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_COM); +1819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable Commutation DMA request */ +1821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_COM); +1822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_UNLOCK(htim); +1824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +1826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Configure the TIM commutation event sequence with interrupt. +1830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @note This function is mandatory to use the commutation event in order to +1831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * update the configuration at each commutation detection on the TRGI input of the Timer, +1832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * the typical use of this feature is with the use of another Timer(interface Timer) +1833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * configured in Hall sensor interface, this interface Timer will generate the +1834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * commutation at its TRGO output (connected to Timer used in this function) each time +1835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * the TI1 of the Interface Timer detect a commutation at its input TI1. +1836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +1837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall +1838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR0: Internal trigger 0 selected +1840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR1: Internal trigger 1 selected +1841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR2: Internal trigger 2 selected +1842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR3: Internal trigger 3 selected +1843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_NONE: No trigger is needed +1844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param CommutationSource the Commutation Event source +1845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer +1847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG +1848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, +1851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t CommutationSource) +1852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance)); +1855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + ARM GAS /tmp/cc7KL1Mv.s page 34 + + +1856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_LOCK(htim); +1858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) || +1860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) +1861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Input trigger */ +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR &= ~TIM_SMCR_TS; +1864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; +1865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Capture Compare preload feature */ +1868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= TIM_CR2_CCPC; +1869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ +1870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 &= ~TIM_CR2_CCUS; +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; +1872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable Commutation DMA request */ +1874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_DMA(htim, TIM_DMA_COM); +1875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Commutation Interrupt */ +1877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_IT(htim, TIM_IT_COM); +1878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_UNLOCK(htim); +1880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +1882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Configure the TIM commutation event sequence with DMA. +1886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @note This function is mandatory to use the commutation event in order to +1887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * update the configuration at each commutation detection on the TRGI input of the Timer, +1888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * the typical use of this feature is with the use of another Timer(interface Timer) +1889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * configured in Hall sensor interface, this interface Timer will generate the +1890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * commutation at its TRGO output (connected to Timer used in this function) each time +1891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * the TI1 of the Interface Timer detect a commutation at its input TI1. +1892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @note The user should configure the DMA in his own software, in This function only the COMDE b +1893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +1894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param InputTrigger the Internal trigger corresponding to the Timer Interfacing with the Hall +1895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR0: Internal trigger 0 selected +1897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR1: Internal trigger 1 selected +1898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR2: Internal trigger 2 selected +1899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_ITR3: Internal trigger 3 selected +1900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TS_NONE: No trigger is needed +1901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param CommutationSource the Commutation Event source +1902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +1903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_COMMUTATION_TRGI: Commutation source is the TRGI of the Interface Timer +1904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG +1905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, +1908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t CommutationSource) +1909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance)); +1912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + ARM GAS /tmp/cc7KL1Mv.s page 35 + + +1913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_LOCK(htim); +1915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((InputTrigger == TIM_TS_ITR0) || (InputTrigger == TIM_TS_ITR1) || +1917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) +1918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Input trigger */ +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR &= ~TIM_SMCR_TS; +1921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; +1922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Capture Compare preload feature */ +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= TIM_CR2_CCPC; +1926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ +1927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 &= ~TIM_CR2_CCUS; +1928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; +1929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Commutation DMA Request */ +1931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA Commutation Callback */ +1932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferCpltCallback = TIMEx_DMACommutationCplt; +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; +1934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError; +1936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Disable Commutation Interrupt */ +1938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_DISABLE_IT(htim, TIM_IT_COM); +1939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the Commutation DMA Request */ +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_TIM_ENABLE_DMA(htim, TIM_DMA_COM); +1942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_UNLOCK(htim); +1944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +1946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +1949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Configures the TIM in master mode. +1950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle. +1951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param sMasterConfig pointer to a TIM_MasterConfigTypeDef structure that +1952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * contains the selected trigger output (TRGO) and the Master/Slave +1953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * mode. +1954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +1955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +1956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, +1957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** const TIM_MasterConfigTypeDef *sMasterConfi +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpcr2; +1960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; +1961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); +1965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); +1966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check input state */ +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_LOCK(htim); +1969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 36 + + +1970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Change the handler state */ +1971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_BUSY; +1972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Get the TIMx CR2 register value */ +1974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpcr2 = htim->Instance->CR2; +1975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Get the TIMx SMCR register value */ +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr = htim->Instance->SMCR; +1978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */ +1980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_TRGO2_INSTANCE(htim->Instance)) +1981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +1982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +1983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2)); +1984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Clear the MMS2 bits */ +1986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpcr2 &= ~TIM_CR2_MMS2; +1987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the TRGO2 source*/ +1988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpcr2 |= sMasterConfig->MasterOutputTrigger2; +1989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +1990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Reset the MMS Bits */ +1992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpcr2 &= ~TIM_CR2_MMS; +1993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the TRGO source */ +1994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpcr2 |= sMasterConfig->MasterOutputTrigger; +1995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Update TIMx CR2 */ +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 = tmpcr2; +1998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) +2000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Reset the MSM Bit */ +2002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr &= ~TIM_SMCR_MSM; +2003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set master mode */ +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmpsmcr |= sMasterConfig->MasterSlaveMode; +2005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Update TIMx SMCR */ +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR = tmpsmcr; +2008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Change the htim state */ +2011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_READY; +2012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_UNLOCK(htim); +2014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +2016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Configures the Break feature, dead time, Lock level, OSSI/OSSR State +2020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * and the AOE(automatic output enable). +2021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +2022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that +2023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * contains the BDTR Register configuration information for the TIM peripheral. +2024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @note Interrupts can be generated when an active level is detected on the +2025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * break input, the break 2 input or the system break input. Break +2026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * interrupt can be enabled by calling the @ref __HAL_TIM_ENABLE_IT macro. + ARM GAS /tmp/cc7KL1Mv.s page 37 + + +2027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +2028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, +2030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** const TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTim +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Keep this variable initialized to 0 as it is used to configure BDTR register */ +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpbdtr = 0U; +2034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance)); +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_OSSR_STATE(sBreakDeadTimeConfig->OffStateRunMode)); +2038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_OSSI_STATE(sBreakDeadTimeConfig->OffStateIDLEMode)); +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_LOCK_LEVEL(sBreakDeadTimeConfig->LockLevel)); +2040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_DEADTIME(sBreakDeadTimeConfig->DeadTime)); +2041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState)); +2042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity)); +2043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->BreakFilter)); +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput)); +2045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check input state */ +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_LOCK(htim); +2048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State, +2050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** the OSSI State, the dead time value and the Automatic Output Enable Bit */ +2051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the BDTR bits */ +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, sBreakDeadTimeConfig->DeadTime); +2054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, sBreakDeadTimeConfig->LockLevel); +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode); +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode); +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState); +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity); +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput); +2060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, (sBreakDeadTimeConfig->BreakFilter << TIM_BDTR_BKF_Pos)); +2061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (IS_TIM_BKIN2_INSTANCE(htim->Instance)) +2063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +2065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK2_STATE(sBreakDeadTimeConfig->Break2State)); +2066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK2_POLARITY(sBreakDeadTimeConfig->Break2Polarity)); +2067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->Break2Filter)); +2068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the BREAK2 input related BDTR bits */ +2070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2F, (sBreakDeadTimeConfig->Break2Filter << TIM_BDTR_BK2F_Pos)); +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, sBreakDeadTimeConfig->Break2State); +2072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, sBreakDeadTimeConfig->Break2Polarity); +2073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set TIMx_BDTR */ +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->BDTR = tmpbdtr; +2077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_UNLOCK(htim); +2079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if defined(TIM_BREAK_INPUT_SUPPORT) +2083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 38 + + +2084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Configures the break input source. +2086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle. +2087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param BreakInput Break input to configure +2088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +2089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_BREAKINPUT_BRK: Timer break input +2090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_BREAKINPUT_BRK2: Timer break 2 input +2091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param sBreakInputConfig Break input source configuration +2092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +2093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, +2095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t BreakInput, +2096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** const TIMEx_BreakInputConfigTypeDef *sBreakInputConfig +2097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; +2099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmporx; +2100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t bkin_enable_mask; +2101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t bkin_polarity_mask; +2102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t bkin_enable_bitpos; +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t bkin_polarity_bitpos; +2104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +2106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance)); +2107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAKINPUT(BreakInput)); +2108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAKINPUTSOURCE(sBreakInputConfig->Source)); +2109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAKINPUTSOURCE_STATE(sBreakInputConfig->Enable)); +2110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if defined(DFSDM1_Channel0) +2111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1) +2112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAKINPUTSOURCE_POLARITY(sBreakInputConfig->Polarity)); +2114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #else +2116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAKINPUTSOURCE_POLARITY(sBreakInputConfig->Polarity)); +2117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* DFSDM1_Channel0 */ +2118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check input state */ +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_LOCK(htim); +2121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** switch (sBreakInputConfig->Source) +2123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_BREAKINPUTSOURCE_BKIN: +2125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_enable_mask = TIM1_AF1_BKINE; +2127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_enable_bitpos = TIM1_AF1_BKINE_Pos; +2128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_polarity_mask = TIM1_AF1_BKINP; +2129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_polarity_bitpos = TIM1_AF1_BKINP_Pos; +2130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +2131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if defined(DFSDM1_Channel0) +2133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_BREAKINPUTSOURCE_DFSDM1: +2134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_enable_mask = TIM1_AF1_BKDF1BKE; +2136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_enable_bitpos = TIM1_AF1_BKDF1BKE_Pos; +2137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_polarity_mask = 0U; +2138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_polarity_bitpos = 0U; +2139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +2140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + ARM GAS /tmp/cc7KL1Mv.s page 39 + + +2141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* DFSDM1_Channel0 */ +2142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** default: +2144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_enable_mask = 0U; +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_polarity_mask = 0U; +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_enable_bitpos = 0U; +2148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_polarity_bitpos = 0U; +2149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +2150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** switch (BreakInput) +2154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_BREAKINPUT_BRK: +2156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Get the TIMx_AF1 register value */ +2158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx = htim->Instance->AF1; +2159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the break input */ +2161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx &= ~bkin_enable_mask; +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask; +2163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the break input polarity */ +2165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if defined(DFSDM1_Channel0) +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1) +2167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* DFSDM1_Channel0 */ +2168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx &= ~bkin_polarity_mask; +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask; +2171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set TIMx_AF1 */ +2174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->AF1 = tmporx; +2175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +2176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** case TIM_BREAKINPUT_BRK2: +2178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Get the TIMx_AF2 register value */ +2180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx = htim->Instance->AF2; +2181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Enable the break input */ +2183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx &= ~bkin_enable_mask; +2184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask; +2185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the break input polarity */ +2187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if defined(DFSDM1_Channel0) +2188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (sBreakInputConfig->Source != TIM_BREAKINPUTSOURCE_DFSDM1) +2189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* DFSDM1_Channel0 */ +2190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx &= ~bkin_polarity_mask; +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask; +2193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set TIMx_AF2 */ +2196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->AF2 = tmporx; +2197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + ARM GAS /tmp/cc7KL1Mv.s page 40 + + +2198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** default: +2200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** status = HAL_ERROR; +2201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; +2202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_UNLOCK(htim); +2205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return status; +2207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /*TIM_BREAK_INPUT_SUPPORT */ +2209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Configures the TIMx Remapping input capabilities. +2212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle. +2213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Remap specifies the TIM remapping source. +2214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +2215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM2_TIM8_TRGO: TIM2 ITR1 input is connected to TIM8 Trigger output(default +2216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM2_ETH_PTP: TIM2 ITR1 input is connected to ETH PTP trigger output. +2217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM2_USBFS_SOF: TIM2 ITR1 input is connected to USB FS SOF. +2218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM2_USBHS_SOF: TIM2 ITR1 input is connected to USB HS SOF. +2219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM5_GPIO: TIM5 CH4 input is connected to dedicated Timer pin(default) +2220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM5_LSI: TIM5 CH4 input is connected to LSI clock. +2221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM5_LSE: TIM5 CH4 input is connected to LSE clock. +2222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM5_RTC: TIM5 CH4 input is connected to RTC Output event. +2223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM11_GPIO: TIM11 CH4 input is connected to dedicated Timer pin(default +2224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM11_SPDIF: SPDIF Frame synchronous +2225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM11_HSE: TIM11 CH4 input is connected to HSE_RTC clock +2226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * (HSE divided by a programmable prescaler) +2227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_TIM11_MCO1: TIM11 CH1 input is connected to MCO1 +2228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * +2229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +2230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap) +2232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check parameters */ +2234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_REMAP_INSTANCE(htim->Instance)); +2235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_REMAP(Remap)); +2236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_LOCK(htim); +2238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the Timer remapping configuration */ +2240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->OR = Remap; +2241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_READY; +2243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_UNLOCK(htim); +2245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +2247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Group channel 5 and channel 1, 2 or 3 +2251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle. +2252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channels specifies the reference signal(s) the OC5REF is combined with. +2253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be any combination of the following values: +2254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * TIM_GROUPCH5_NONE: No effect of OC5REF on OC1REFC, OC2REFC and OC3REFC + ARM GAS /tmp/cc7KL1Mv.s page 41 + + +2255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * TIM_GROUPCH5_OC1REFC: OC1REFC is the logical AND of OC1REFC and OC5REF +2256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * TIM_GROUPCH5_OC2REFC: OC2REFC is the logical AND of OC2REFC and OC5REF +2257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * TIM_GROUPCH5_OC3REFC: OC3REFC is the logical AND of OC3REFC and OC5REF +2258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL status +2259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels) +2261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check parameters */ +2263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_COMBINED3PHASEPWM_INSTANCE(htim->Instance)); +2264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_GROUPCH5(Channels)); +2265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Process Locked */ +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_LOCK(htim); +2268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_BUSY; +2270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Clear GC5Cx bit fields */ +2272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CCR5 &= ~(TIM_CCR5_GC5C3 | TIM_CCR5_GC5C2 | TIM_CCR5_GC5C1); +2273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set GC5Cx bit fields */ +2275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CCR5 |= Channels; +2276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Change the htim state */ +2278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_READY; +2279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __HAL_UNLOCK(htim); +2281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return HAL_OK; +2283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @} +2287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @defgroup TIMEx_Exported_Functions_Group6 Extended Callbacks functions +2290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Extended Callbacks functions +2291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * +2292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @verbatim +2293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== +2294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ##### Extended Callbacks functions ##### +2295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== +2296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** [..] +2297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** This section provides Extended TIM callback functions: +2298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Timer Commutation callback +2299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (+) Timer Break callback +2300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @endverbatim +2302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ +2303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Commutation callback in non-blocking mode +2307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +2308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None +2309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 42 + + +2312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ +2313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** UNUSED(htim); +2314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* NOTE : This function should not be modified, when the callback is needed, +2316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** the HAL_TIMEx_CommutCallback could be implemented in the user file +2317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Commutation half complete callback in non-blocking mode +2321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +2322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None +2323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __weak void HAL_TIMEx_CommutHalfCpltCallback(TIM_HandleTypeDef *htim) +2325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ +2327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** UNUSED(htim); +2328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* NOTE : This function should not be modified, when the callback is needed, +2330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** the HAL_TIMEx_CommutHalfCpltCallback could be implemented in the user file +2331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Break detection callback in non-blocking mode +2336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +2337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None +2338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) +2340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ +2342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** UNUSED(htim); +2343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* NOTE : This function should not be modified, when the callback is needed, +2345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** the HAL_TIMEx_BreakCallback could be implemented in the user file +2346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Break2 detection callback in non blocking mode +2351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim: TIM handle +2352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None +2353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** __weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim) +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ +2357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** UNUSED(htim); +2358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* NOTE : This function Should not be modified, when the callback is needed, +2360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** the HAL_TIMEx_Break2Callback could be implemented in the user file +2361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @} +2365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @defgroup TIMEx_Exported_Functions_Group7 Extended Peripheral State functions +2368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Extended Peripheral State functions + ARM GAS /tmp/cc7KL1Mv.s page 43 + + +2369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * +2370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @verbatim +2371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== +2372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ##### Extended Peripheral State functions ##### +2373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** ============================================================================== +2374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** [..] +2375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** This subsection permits to get in run-time the status of the peripheral +2376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** and the data flow. +2377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** @endverbatim +2379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ +2380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Return the TIM Hall Sensor interface handle state. +2384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM Hall Sensor handle +2385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval HAL state +2386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(const TIM_HandleTypeDef *htim) +2388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return htim->State; +2390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Return actual state of the TIM complementary channel. +2394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param htim TIM handle +2395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param ChannelN TIM Complementary channel +2396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +2397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 +2398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 +2399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 +2400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval TIM Complementary channel state +2401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef HAL_TIMEx_GetChannelNState(const TIM_HandleTypeDef *htim, uint32_t Cha +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_state; +2405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ +2407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, ChannelN)); +2408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** channel_state = TIM_CHANNEL_N_STATE_GET(htim, ChannelN); +2410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return channel_state; +2412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @} +2415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @} +2419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Private functions ---------------------------------------------------------*/ +2422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** @defgroup TIMEx_Private_Functions TIM Extended Private Functions +2423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @{ +2424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 44 + + +2426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief TIM DMA Commutation callback. +2428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param hdma pointer to DMA handle. +2429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None +2430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma) +2432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +2434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Change the htim state */ +2436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_READY; +2437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +2439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->CommutationCallback(htim); +2440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #else +2441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIMEx_CommutCallback(htim); +2442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +2443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief TIM DMA Commutation half complete callback. +2447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param hdma pointer to DMA handle. +2448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None +2449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** void TIMEx_DMACommutationHalfCplt(DMA_HandleTypeDef *hdma) +2451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +2453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Change the htim state */ +2455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->State = HAL_TIM_STATE_READY; +2456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +2458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->CommutationHalfCpltCallback(htim); +2459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #else +2460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIMEx_CommutHalfCpltCallback(htim); +2461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief TIM DMA Delay Pulse complete callback (complementary channel). +2467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param hdma pointer to DMA handle. +2468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None +2469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** static void TIM_DMADelayPulseNCplt(DMA_HandleTypeDef *hdma) +2471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +2473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (hdma == htim->hdma[TIM_DMA_ID_CC1]) +2475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; +2477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (hdma->Init.Mode == DMA_NORMAL) +2479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +2481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + ARM GAS /tmp/cc7KL1Mv.s page 45 + + +2483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) +2484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; +2486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (hdma->Init.Mode == DMA_NORMAL) +2488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +2490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) +2493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; +2495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (hdma->Init.Mode == DMA_NORMAL) +2497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); +2499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else +2502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* nothing to do */ +2504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +2507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->PWM_PulseFinishedCallback(htim); +2508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #else +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_PWM_PulseFinishedCallback(htim); +2510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +2511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +2513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief TIM DMA error callback (complementary channel) +2517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param hdma pointer to DMA handle. +2518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None +2519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** static void TIM_DMAErrorCCxN(DMA_HandleTypeDef *hdma) +2521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; +2523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (hdma == htim->hdma[TIM_DMA_ID_CC1]) +2525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; +2527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); +2528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC2]) +2530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; +2532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); +2533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else if (hdma == htim->hdma[TIM_DMA_ID_CC3]) +2535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; +2537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); +2538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** else + ARM GAS /tmp/cc7KL1Mv.s page 46 + + +2540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { +2541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* nothing to do */ +2542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) +2545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->ErrorCallback(htim); +2546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #else +2547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ErrorCallback(htim); +2548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ +2549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; +2551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } +2552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** +2554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @brief Enables or disables the TIM Capture Compare Channel xN. +2555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param TIMx to select the TIM peripheral +2556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param Channel specifies the TIM Channel +2557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be one of the following values: +2558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_1: TIM Channel 1 +2559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_2: TIM Channel 2 +2560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @arg TIM_CHANNEL_3: TIM Channel 3 +2561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @param ChannelNState specifies the TIM Channel CCxNE bit new state. +2562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * This parameter can be: TIM_CCxN_ENABLE or TIM_CCxN_Disable. +2563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** * @retval None +2564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** */ +2565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** static void TIM_CCxNChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelNState) +2566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 28 .loc 1 2566 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. +2567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmp; + 33 .loc 1 2567 3 view .LVU1 +2568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmp = TIM_CCER_CC1NE << (Channel & 0xFU); /* 0xFU = 15 bits max shift */ + 34 .loc 1 2569 3 view .LVU2 + 35 .loc 1 2569 36 is_stmt 0 view .LVU3 + 36 0000 01F00F01 and r1, r1, #15 + 37 .LVL1: + 38 .loc 1 2569 7 view .LVU4 + 39 0004 0423 movs r3, #4 + 40 0006 03FA01FC lsl ip, r3, r1 + 41 .LVL2: +2570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Reset the CCxNE Bit */ +2572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIMx->CCER &= ~tmp; + 42 .loc 1 2572 3 is_stmt 1 view .LVU5 + 43 .loc 1 2572 14 is_stmt 0 view .LVU6 + 44 000a 036A ldr r3, [r0, #32] + 45 000c 23EA0C03 bic r3, r3, ip + 46 0010 0362 str r3, [r0, #32] +2573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** +2574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set or reset the CCxNE Bit */ +2575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIMx->CCER |= (uint32_t)(ChannelNState << (Channel & 0xFU)); /* 0xFU = 15 bits max shift */ + 47 .loc 1 2575 3 is_stmt 1 view .LVU7 + 48 .loc 1 2575 14 is_stmt 0 view .LVU8 + ARM GAS /tmp/cc7KL1Mv.s page 47 + + + 49 0012 036A ldr r3, [r0, #32] + 50 .loc 1 2575 42 view .LVU9 + 51 0014 02FA01F1 lsl r1, r2, r1 + 52 .loc 1 2575 14 view .LVU10 + 53 0018 0B43 orrs r3, r3, r1 + 54 001a 0362 str r3, [r0, #32] +2576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 55 .loc 1 2576 1 view .LVU11 + 56 001c 7047 bx lr + 57 .cfi_endproc + 58 .LFE185: + 60 .section .text.TIM_DMAErrorCCxN,"ax",%progbits + 61 .align 1 + 62 .syntax unified + 63 .thumb + 64 .thumb_func + 65 .fpu fpv5-d16 + 67 TIM_DMAErrorCCxN: + 68 .LVL3: + 69 .LFB184: +2521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 70 .loc 1 2521 1 is_stmt 1 view -0 + 71 .cfi_startproc + 72 @ args = 0, pretend = 0, frame = 0 + 73 @ frame_needed = 0, uses_anonymous_args = 0 +2521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 74 .loc 1 2521 1 is_stmt 0 view .LVU13 + 75 0000 10B5 push {r4, lr} + 76 .LCFI0: + 77 .cfi_def_cfa_offset 8 + 78 .cfi_offset 4, -8 + 79 .cfi_offset 14, -4 +2522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 80 .loc 1 2522 3 is_stmt 1 view .LVU14 +2522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 81 .loc 1 2522 22 is_stmt 0 view .LVU15 + 82 0002 846B ldr r4, [r0, #56] + 83 .LVL4: +2524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 84 .loc 1 2524 3 is_stmt 1 view .LVU16 +2524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 85 .loc 1 2524 25 is_stmt 0 view .LVU17 + 86 0004 636A ldr r3, [r4, #36] +2524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 87 .loc 1 2524 6 view .LVU18 + 88 0006 8342 cmp r3, r0 + 89 0008 0BD0 beq .L7 +2529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 90 .loc 1 2529 8 is_stmt 1 view .LVU19 +2529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 91 .loc 1 2529 30 is_stmt 0 view .LVU20 + 92 000a A36A ldr r3, [r4, #40] +2529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 93 .loc 1 2529 11 view .LVU21 + 94 000c 8342 cmp r3, r0 + 95 000e 0DD0 beq .L8 +2534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 48 + + + 96 .loc 1 2534 8 is_stmt 1 view .LVU22 +2534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 97 .loc 1 2534 30 is_stmt 0 view .LVU23 + 98 0010 E36A ldr r3, [r4, #44] +2534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 99 .loc 1 2534 11 view .LVU24 + 100 0012 8342 cmp r3, r0 + 101 0014 10D0 beq .L9 + 102 .L4: +2542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 103 .loc 1 2542 3 is_stmt 1 view .LVU25 +2547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 104 .loc 1 2547 3 view .LVU26 + 105 0016 2046 mov r0, r4 + 106 .LVL5: +2547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 107 .loc 1 2547 3 is_stmt 0 view .LVU27 + 108 0018 FFF7FEFF bl HAL_TIM_ErrorCallback + 109 .LVL6: +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 110 .loc 1 2550 3 is_stmt 1 view .LVU28 +2550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 111 .loc 1 2550 17 is_stmt 0 view .LVU29 + 112 001c 0023 movs r3, #0 + 113 001e 2377 strb r3, [r4, #28] +2551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 114 .loc 1 2551 1 view .LVU30 + 115 0020 10BD pop {r4, pc} + 116 .LVL7: + 117 .L7: +2526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 118 .loc 1 2526 5 is_stmt 1 view .LVU31 +2526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 119 .loc 1 2526 19 is_stmt 0 view .LVU32 + 120 0022 0123 movs r3, #1 + 121 0024 2377 strb r3, [r4, #28] +2527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 122 .loc 1 2527 5 is_stmt 1 view .LVU33 + 123 0026 84F84430 strb r3, [r4, #68] + 124 002a F4E7 b .L4 + 125 .L8: +2531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 126 .loc 1 2531 5 view .LVU34 +2531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 127 .loc 1 2531 19 is_stmt 0 view .LVU35 + 128 002c 0223 movs r3, #2 + 129 002e 2377 strb r3, [r4, #28] +2532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 130 .loc 1 2532 5 is_stmt 1 view .LVU36 + 131 0030 0123 movs r3, #1 + 132 0032 84F84530 strb r3, [r4, #69] + 133 0036 EEE7 b .L4 + 134 .L9: +2536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + 135 .loc 1 2536 5 view .LVU37 +2536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_3, HAL_TIM_CHANNEL_STATE_READY); + 136 .loc 1 2536 19 is_stmt 0 view .LVU38 + ARM GAS /tmp/cc7KL1Mv.s page 49 + + + 137 0038 0423 movs r3, #4 + 138 003a 2377 strb r3, [r4, #28] +2537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 139 .loc 1 2537 5 is_stmt 1 view .LVU39 + 140 003c 0123 movs r3, #1 + 141 003e 84F84630 strb r3, [r4, #70] + 142 0042 E8E7 b .L4 + 143 .cfi_endproc + 144 .LFE184: + 146 .section .text.TIM_DMADelayPulseNCplt,"ax",%progbits + 147 .align 1 + 148 .syntax unified + 149 .thumb + 150 .thumb_func + 151 .fpu fpv5-d16 + 153 TIM_DMADelayPulseNCplt: + 154 .LVL8: + 155 .LFB183: +2471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 156 .loc 1 2471 1 view -0 + 157 .cfi_startproc + 158 @ args = 0, pretend = 0, frame = 0 + 159 @ frame_needed = 0, uses_anonymous_args = 0 +2471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 160 .loc 1 2471 1 is_stmt 0 view .LVU41 + 161 0000 10B5 push {r4, lr} + 162 .LCFI1: + 163 .cfi_def_cfa_offset 8 + 164 .cfi_offset 4, -8 + 165 .cfi_offset 14, -4 +2472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 166 .loc 1 2472 3 is_stmt 1 view .LVU42 +2472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 167 .loc 1 2472 22 is_stmt 0 view .LVU43 + 168 0002 846B ldr r4, [r0, #56] + 169 .LVL9: +2474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 170 .loc 1 2474 3 is_stmt 1 view .LVU44 +2474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 171 .loc 1 2474 25 is_stmt 0 view .LVU45 + 172 0004 636A ldr r3, [r4, #36] +2474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 173 .loc 1 2474 6 view .LVU46 + 174 0006 8342 cmp r3, r0 + 175 0008 0BD0 beq .L15 +2483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 176 .loc 1 2483 8 is_stmt 1 view .LVU47 +2483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 177 .loc 1 2483 30 is_stmt 0 view .LVU48 + 178 000a A36A ldr r3, [r4, #40] +2483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 179 .loc 1 2483 11 view .LVU49 + 180 000c 8342 cmp r3, r0 + 181 000e 11D0 beq .L16 +2492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 182 .loc 1 2492 8 is_stmt 1 view .LVU50 +2492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 50 + + + 183 .loc 1 2492 30 is_stmt 0 view .LVU51 + 184 0010 E36A ldr r3, [r4, #44] +2492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 185 .loc 1 2492 11 view .LVU52 + 186 0012 8342 cmp r3, r0 + 187 0014 17D0 beq .L17 + 188 .L12: +2504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 189 .loc 1 2504 3 is_stmt 1 view .LVU53 +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 190 .loc 1 2509 3 view .LVU54 + 191 0016 2046 mov r0, r4 + 192 .LVL10: +2509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 193 .loc 1 2509 3 is_stmt 0 view .LVU55 + 194 0018 FFF7FEFF bl HAL_TIM_PWM_PulseFinishedCallback + 195 .LVL11: +2512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 196 .loc 1 2512 3 is_stmt 1 view .LVU56 +2512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 197 .loc 1 2512 17 is_stmt 0 view .LVU57 + 198 001c 0023 movs r3, #0 + 199 001e 2377 strb r3, [r4, #28] +2513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 200 .loc 1 2513 1 view .LVU58 + 201 0020 10BD pop {r4, pc} + 202 .LVL12: + 203 .L15: +2476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 204 .loc 1 2476 5 is_stmt 1 view .LVU59 +2476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 205 .loc 1 2476 19 is_stmt 0 view .LVU60 + 206 0022 0123 movs r3, #1 + 207 0024 2377 strb r3, [r4, #28] +2478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 208 .loc 1 2478 5 is_stmt 1 view .LVU61 +2478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 209 .loc 1 2478 19 is_stmt 0 view .LVU62 + 210 0026 C369 ldr r3, [r0, #28] +2478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 211 .loc 1 2478 8 view .LVU63 + 212 0028 002B cmp r3, #0 + 213 002a F4D1 bne .L12 +2480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 214 .loc 1 2480 7 is_stmt 1 view .LVU64 + 215 002c 0123 movs r3, #1 + 216 002e 84F84430 strb r3, [r4, #68] + 217 0032 F0E7 b .L12 + 218 .L16: +2485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 219 .loc 1 2485 5 view .LVU65 +2485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 220 .loc 1 2485 19 is_stmt 0 view .LVU66 + 221 0034 0223 movs r3, #2 + 222 0036 2377 strb r3, [r4, #28] +2487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 223 .loc 1 2487 5 is_stmt 1 view .LVU67 + ARM GAS /tmp/cc7KL1Mv.s page 51 + + +2487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 224 .loc 1 2487 19 is_stmt 0 view .LVU68 + 225 0038 C369 ldr r3, [r0, #28] +2487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 226 .loc 1 2487 8 view .LVU69 + 227 003a 002B cmp r3, #0 + 228 003c EBD1 bne .L12 +2489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 229 .loc 1 2489 7 is_stmt 1 view .LVU70 + 230 003e 0123 movs r3, #1 + 231 0040 84F84530 strb r3, [r4, #69] + 232 0044 E7E7 b .L12 + 233 .L17: +2494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 234 .loc 1 2494 5 view .LVU71 +2494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 235 .loc 1 2494 19 is_stmt 0 view .LVU72 + 236 0046 0423 movs r3, #4 + 237 0048 2377 strb r3, [r4, #28] +2496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 238 .loc 1 2496 5 is_stmt 1 view .LVU73 +2496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 239 .loc 1 2496 19 is_stmt 0 view .LVU74 + 240 004a C369 ldr r3, [r0, #28] +2496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 241 .loc 1 2496 8 view .LVU75 + 242 004c 002B cmp r3, #0 + 243 004e E2D1 bne .L12 +2498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 244 .loc 1 2498 7 is_stmt 1 view .LVU76 + 245 0050 0123 movs r3, #1 + 246 0052 84F84630 strb r3, [r4, #70] + 247 0056 DEE7 b .L12 + 248 .cfi_endproc + 249 .LFE183: + 251 .section .text.HAL_TIMEx_HallSensor_MspInit,"ax",%progbits + 252 .align 1 + 253 .weak HAL_TIMEx_HallSensor_MspInit + 254 .syntax unified + 255 .thumb + 256 .thumb_func + 257 .fpu fpv5-d16 + 259 HAL_TIMEx_HallSensor_MspInit: + 260 .LVL13: + 261 .LFB143: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ + 262 .loc 1 287 1 view -0 + 263 .cfi_startproc + 264 @ args = 0, pretend = 0, frame = 0 + 265 @ frame_needed = 0, uses_anonymous_args = 0 + 266 @ link register save eliminated. + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 267 .loc 1 289 3 view .LVU78 + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 268 .loc 1 294 1 is_stmt 0 view .LVU79 + 269 0000 7047 bx lr + 270 .cfi_endproc + ARM GAS /tmp/cc7KL1Mv.s page 52 + + + 271 .LFE143: + 273 .section .text.HAL_TIMEx_HallSensor_Init,"ax",%progbits + 274 .align 1 + 275 .global HAL_TIMEx_HallSensor_Init + 276 .syntax unified + 277 .thumb + 278 .thumb_func + 279 .fpu fpv5-d16 + 281 HAL_TIMEx_HallSensor_Init: + 282 .LVL14: + 283 .LFB141: + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_OC_InitTypeDef OC_Config; + 284 .loc 1 140 1 is_stmt 1 view -0 + 285 .cfi_startproc + 286 @ args = 0, pretend = 0, frame = 32 + 287 @ frame_needed = 0, uses_anonymous_args = 0 + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 288 .loc 1 141 3 view .LVU81 + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 289 .loc 1 144 3 view .LVU82 + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 290 .loc 1 144 6 is_stmt 0 view .LVU83 + 291 0000 0028 cmp r0, #0 + 292 0002 65D0 beq .L22 + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_OC_InitTypeDef OC_Config; + 293 .loc 1 140 1 view .LVU84 + 294 0004 70B5 push {r4, r5, r6, lr} + 295 .LCFI2: + 296 .cfi_def_cfa_offset 16 + 297 .cfi_offset 4, -16 + 298 .cfi_offset 5, -12 + 299 .cfi_offset 6, -8 + 300 .cfi_offset 14, -4 + 301 0006 88B0 sub sp, sp, #32 + 302 .LCFI3: + 303 .cfi_def_cfa_offset 48 + 304 0008 0E46 mov r6, r1 + 305 000a 0446 mov r4, r0 + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); + 306 .loc 1 150 3 is_stmt 1 view .LVU85 + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); + 307 .loc 1 151 3 view .LVU86 + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); + 308 .loc 1 152 3 view .LVU87 + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity)); + 309 .loc 1 153 3 view .LVU88 + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_PERIOD(htim, htim->Init.Period)); + 310 .loc 1 154 3 view .LVU89 + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler)); + 311 .loc 1 155 3 view .LVU90 + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter)); + 312 .loc 1 156 3 view .LVU91 + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 313 .loc 1 157 3 view .LVU92 + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 314 .loc 1 159 3 view .LVU93 + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 53 + + + 315 .loc 1 159 11 is_stmt 0 view .LVU94 + 316 000c 90F83D30 ldrb r3, [r0, #61] @ zero_extendqisi2 + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 317 .loc 1 159 6 view .LVU95 + 318 0010 002B cmp r3, #0 + 319 0012 58D0 beq .L27 + 320 .LVL15: + 321 .L21: + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 322 .loc 1 181 3 is_stmt 1 view .LVU96 + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 323 .loc 1 181 15 is_stmt 0 view .LVU97 + 324 0014 0223 movs r3, #2 + 325 0016 84F83D30 strb r3, [r4, #61] + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 326 .loc 1 184 3 is_stmt 1 view .LVU98 + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 327 .loc 1 184 38 is_stmt 0 view .LVU99 + 328 001a 2146 mov r1, r4 + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 329 .loc 1 184 3 view .LVU100 + 330 001c 51F8040B ldr r0, [r1], #4 + 331 0020 FFF7FEFF bl TIM_Base_SetConfig + 332 .LVL16: + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 333 .loc 1 187 3 is_stmt 1 view .LVU101 + 334 0024 B368 ldr r3, [r6, #8] + 335 0026 0322 movs r2, #3 + 336 0028 3168 ldr r1, [r6] + 337 002a 2068 ldr r0, [r4] + 338 002c FFF7FEFF bl TIM_TI1_SetConfig + 339 .LVL17: + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the IC1PSC value */ + 340 .loc 1 190 3 view .LVU102 + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the IC1PSC value */ + 341 .loc 1 190 7 is_stmt 0 view .LVU103 + 342 0030 2268 ldr r2, [r4] + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the IC1PSC value */ + 343 .loc 1 190 25 view .LVU104 + 344 0032 9369 ldr r3, [r2, #24] + 345 0034 23F00C03 bic r3, r3, #12 + 346 0038 9361 str r3, [r2, #24] + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 347 .loc 1 192 3 is_stmt 1 view .LVU105 + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 348 .loc 1 192 7 is_stmt 0 view .LVU106 + 349 003a 2268 ldr r2, [r4] + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 350 .loc 1 192 25 view .LVU107 + 351 003c 9369 ldr r3, [r2, #24] + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 352 .loc 1 192 35 view .LVU108 + 353 003e 7168 ldr r1, [r6, #4] + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 354 .loc 1 192 25 view .LVU109 + 355 0040 0B43 orrs r3, r3, r1 + 356 0042 9361 str r3, [r2, #24] + ARM GAS /tmp/cc7KL1Mv.s page 54 + + + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 357 .loc 1 195 3 is_stmt 1 view .LVU110 + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 358 .loc 1 195 7 is_stmt 0 view .LVU111 + 359 0044 2268 ldr r2, [r4] + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 360 .loc 1 195 23 view .LVU112 + 361 0046 5368 ldr r3, [r2, #4] + 362 0048 43F08003 orr r3, r3, #128 + 363 004c 5360 str r3, [r2, #4] + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= TIM_TS_TI1F_ED; + 364 .loc 1 198 3 is_stmt 1 view .LVU113 + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= TIM_TS_TI1F_ED; + 365 .loc 1 198 7 is_stmt 0 view .LVU114 + 366 004e 2268 ldr r2, [r4] + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= TIM_TS_TI1F_ED; + 367 .loc 1 198 24 view .LVU115 + 368 0050 9368 ldr r3, [r2, #8] + 369 0052 23F07003 bic r3, r3, #112 + 370 0056 9360 str r3, [r2, #8] + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 371 .loc 1 199 3 is_stmt 1 view .LVU116 + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 372 .loc 1 199 7 is_stmt 0 view .LVU117 + 373 0058 2268 ldr r2, [r4] + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 374 .loc 1 199 24 view .LVU118 + 375 005a 9368 ldr r3, [r2, #8] + 376 005c 43F04003 orr r3, r3, #64 + 377 0060 9360 str r3, [r2, #8] + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_RESET; + 378 .loc 1 202 3 is_stmt 1 view .LVU119 + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_RESET; + 379 .loc 1 202 7 is_stmt 0 view .LVU120 + 380 0062 2268 ldr r2, [r4] + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= TIM_SLAVEMODE_RESET; + 381 .loc 1 202 24 view .LVU121 + 382 0064 9168 ldr r1, [r2, #8] + 383 0066 1B4B ldr r3, .L28 + 384 0068 0B40 ands r3, r3, r1 + 385 006a 9360 str r3, [r2, #8] + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 386 .loc 1 203 3 is_stmt 1 view .LVU122 + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 387 .loc 1 203 7 is_stmt 0 view .LVU123 + 388 006c 2268 ldr r2, [r4] + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 389 .loc 1 203 24 view .LVU124 + 390 006e 9368 ldr r3, [r2, #8] + 391 0070 43F00403 orr r3, r3, #4 + 392 0074 9360 str r3, [r2, #8] + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCIdleState = TIM_OCIDLESTATE_RESET; + 393 .loc 1 206 3 is_stmt 1 view .LVU125 + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCIdleState = TIM_OCIDLESTATE_RESET; + 394 .loc 1 206 24 is_stmt 0 view .LVU126 + 395 0076 0025 movs r5, #0 + 396 0078 0595 str r5, [sp, #20] + ARM GAS /tmp/cc7KL1Mv.s page 55 + + + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCMode = TIM_OCMODE_PWM2; + 397 .loc 1 207 3 is_stmt 1 view .LVU127 + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCMode = TIM_OCMODE_PWM2; + 398 .loc 1 207 25 is_stmt 0 view .LVU128 + 399 007a 0695 str r5, [sp, #24] + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCNIdleState = TIM_OCNIDLESTATE_RESET; + 400 .loc 1 208 3 is_stmt 1 view .LVU129 + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCNIdleState = TIM_OCNIDLESTATE_RESET; + 401 .loc 1 208 20 is_stmt 0 view .LVU130 + 402 007c 7023 movs r3, #112 + 403 007e 0193 str r3, [sp, #4] + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCNPolarity = TIM_OCNPOLARITY_HIGH; + 404 .loc 1 209 3 is_stmt 1 view .LVU131 + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCNPolarity = TIM_OCNPOLARITY_HIGH; + 405 .loc 1 209 26 is_stmt 0 view .LVU132 + 406 0080 0795 str r5, [sp, #28] + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCPolarity = TIM_OCPOLARITY_HIGH; + 407 .loc 1 210 3 is_stmt 1 view .LVU133 + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.OCPolarity = TIM_OCPOLARITY_HIGH; + 408 .loc 1 210 25 is_stmt 0 view .LVU134 + 409 0082 0495 str r5, [sp, #16] + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.Pulse = sConfig->Commutation_Delay; + 410 .loc 1 211 3 is_stmt 1 view .LVU135 + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** OC_Config.Pulse = sConfig->Commutation_Delay; + 411 .loc 1 211 24 is_stmt 0 view .LVU136 + 412 0084 0395 str r5, [sp, #12] + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 413 .loc 1 212 3 is_stmt 1 view .LVU137 + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 414 .loc 1 212 28 is_stmt 0 view .LVU138 + 415 0086 F368 ldr r3, [r6, #12] + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 416 .loc 1 212 19 view .LVU139 + 417 0088 0293 str r3, [sp, #8] + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 418 .loc 1 214 3 is_stmt 1 view .LVU140 + 419 008a 01A9 add r1, sp, #4 + 420 008c 2068 ldr r0, [r4] + 421 008e FFF7FEFF bl TIM_OC2_SetConfig + 422 .LVL18: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= TIM_TRGO_OC2REF; + 423 .loc 1 218 3 view .LVU141 + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= TIM_TRGO_OC2REF; + 424 .loc 1 218 7 is_stmt 0 view .LVU142 + 425 0092 2268 ldr r2, [r4] + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= TIM_TRGO_OC2REF; + 426 .loc 1 218 23 view .LVU143 + 427 0094 5368 ldr r3, [r2, #4] + 428 0096 23F07003 bic r3, r3, #112 + 429 009a 5360 str r3, [r2, #4] + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 430 .loc 1 219 3 is_stmt 1 view .LVU144 + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 431 .loc 1 219 7 is_stmt 0 view .LVU145 + 432 009c 2268 ldr r2, [r4] + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 433 .loc 1 219 23 view .LVU146 + ARM GAS /tmp/cc7KL1Mv.s page 56 + + + 434 009e 5368 ldr r3, [r2, #4] + 435 00a0 43F05003 orr r3, r3, #80 + 436 00a4 5360 str r3, [r2, #4] + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 437 .loc 1 222 3 is_stmt 1 view .LVU147 + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 438 .loc 1 222 23 is_stmt 0 view .LVU148 + 439 00a6 0123 movs r3, #1 + 440 00a8 84F84830 strb r3, [r4, #72] + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 441 .loc 1 225 3 is_stmt 1 view .LVU149 + 442 00ac 84F83E30 strb r3, [r4, #62] + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 443 .loc 1 226 3 view .LVU150 + 444 00b0 84F83F30 strb r3, [r4, #63] + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 445 .loc 1 227 3 view .LVU151 + 446 00b4 84F84430 strb r3, [r4, #68] + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 447 .loc 1 228 3 view .LVU152 + 448 00b8 84F84530 strb r3, [r4, #69] + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 449 .loc 1 231 3 view .LVU153 + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 450 .loc 1 231 15 is_stmt 0 view .LVU154 + 451 00bc 84F83D30 strb r3, [r4, #61] + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 452 .loc 1 233 3 is_stmt 1 view .LVU155 + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 453 .loc 1 233 10 is_stmt 0 view .LVU156 + 454 00c0 2846 mov r0, r5 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 455 .loc 1 234 1 view .LVU157 + 456 00c2 08B0 add sp, sp, #32 + 457 .LCFI4: + 458 .cfi_remember_state + 459 .cfi_def_cfa_offset 16 + 460 @ sp needed + 461 00c4 70BD pop {r4, r5, r6, pc} + 462 .LVL19: + 463 .L27: + 464 .LCFI5: + 465 .cfi_restore_state + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 466 .loc 1 162 5 is_stmt 1 view .LVU158 + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 467 .loc 1 162 16 is_stmt 0 view .LVU159 + 468 00c6 80F83C30 strb r3, [r0, #60] + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 469 .loc 1 176 5 is_stmt 1 view .LVU160 + 470 00ca FFF7FEFF bl HAL_TIMEx_HallSensor_MspInit + 471 .LVL20: + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 472 .loc 1 176 5 is_stmt 0 view .LVU161 + 473 00ce A1E7 b .L21 + 474 .LVL21: + 475 .L22: + ARM GAS /tmp/cc7KL1Mv.s page 57 + + + 476 .LCFI6: + 477 .cfi_def_cfa_offset 0 + 478 .cfi_restore 4 + 479 .cfi_restore 5 + 480 .cfi_restore 6 + 481 .cfi_restore 14 + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 482 .loc 1 146 12 view .LVU162 + 483 00d0 0120 movs r0, #1 + 484 .LVL22: + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 485 .loc 1 234 1 view .LVU163 + 486 00d2 7047 bx lr + 487 .L29: + 488 .align 2 + 489 .L28: + 490 00d4 F8FFFEFF .word -65544 + 491 .cfi_endproc + 492 .LFE141: + 494 .section .text.HAL_TIMEx_HallSensor_MspDeInit,"ax",%progbits + 495 .align 1 + 496 .weak HAL_TIMEx_HallSensor_MspDeInit + 497 .syntax unified + 498 .thumb + 499 .thumb_func + 500 .fpu fpv5-d16 + 502 HAL_TIMEx_HallSensor_MspDeInit: + 503 .LVL23: + 504 .LFB144: + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ + 505 .loc 1 302 1 is_stmt 1 view -0 + 506 .cfi_startproc + 507 @ args = 0, pretend = 0, frame = 0 + 508 @ frame_needed = 0, uses_anonymous_args = 0 + 509 @ link register save eliminated. + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 510 .loc 1 304 3 view .LVU165 + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 511 .loc 1 309 1 is_stmt 0 view .LVU166 + 512 0000 7047 bx lr + 513 .cfi_endproc + 514 .LFE144: + 516 .section .text.HAL_TIMEx_HallSensor_DeInit,"ax",%progbits + 517 .align 1 + 518 .global HAL_TIMEx_HallSensor_DeInit + 519 .syntax unified + 520 .thumb + 521 .thumb_func + 522 .fpu fpv5-d16 + 524 HAL_TIMEx_HallSensor_DeInit: + 525 .LVL24: + 526 .LFB142: + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 527 .loc 1 242 1 is_stmt 1 view -0 + 528 .cfi_startproc + 529 @ args = 0, pretend = 0, frame = 0 + 530 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/cc7KL1Mv.s page 58 + + + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 531 .loc 1 242 1 is_stmt 0 view .LVU168 + 532 0000 10B5 push {r4, lr} + 533 .LCFI7: + 534 .cfi_def_cfa_offset 8 + 535 .cfi_offset 4, -8 + 536 .cfi_offset 14, -4 + 537 0002 0446 mov r4, r0 + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 538 .loc 1 244 3 is_stmt 1 view .LVU169 + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 539 .loc 1 246 3 view .LVU170 + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 540 .loc 1 246 15 is_stmt 0 view .LVU171 + 541 0004 0223 movs r3, #2 + 542 0006 80F83D30 strb r3, [r0, #61] + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 543 .loc 1 249 3 is_stmt 1 view .LVU172 + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 544 .loc 1 249 3 view .LVU173 + 545 000a 0368 ldr r3, [r0] + 546 000c 196A ldr r1, [r3, #32] + 547 000e 41F21112 movw r2, #4369 + 548 0012 1142 tst r1, r2 + 549 0014 08D1 bne .L32 + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 550 .loc 1 249 3 discriminator 1 view .LVU174 + 551 0016 196A ldr r1, [r3, #32] + 552 0018 40F24442 movw r2, #1092 + 553 001c 1142 tst r1, r2 + 554 001e 03D1 bne .L32 + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 555 .loc 1 249 3 discriminator 3 view .LVU175 + 556 0020 1A68 ldr r2, [r3] + 557 0022 22F00102 bic r2, r2, #1 + 558 0026 1A60 str r2, [r3] + 559 .L32: + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 560 .loc 1 249 3 discriminator 5 view .LVU176 + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 561 .loc 1 260 3 discriminator 5 view .LVU177 + 562 0028 2046 mov r0, r4 + 563 .LVL25: + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 564 .loc 1 260 3 is_stmt 0 discriminator 5 view .LVU178 + 565 002a FFF7FEFF bl HAL_TIMEx_HallSensor_MspDeInit + 566 .LVL26: + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 567 .loc 1 264 3 is_stmt 1 discriminator 5 view .LVU179 + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 568 .loc 1 264 23 is_stmt 0 discriminator 5 view .LVU180 + 569 002e 0020 movs r0, #0 + 570 0030 84F84800 strb r0, [r4, #72] + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + 571 .loc 1 267 3 is_stmt 1 discriminator 5 view .LVU181 + 572 0034 84F83E00 strb r0, [r4, #62] + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_RESET); + ARM GAS /tmp/cc7KL1Mv.s page 59 + + + 573 .loc 1 268 3 discriminator 5 view .LVU182 + 574 0038 84F83F00 strb r0, [r4, #63] + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_RESET); + 575 .loc 1 269 3 discriminator 5 view .LVU183 + 576 003c 84F84400 strb r0, [r4, #68] + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 577 .loc 1 270 3 discriminator 5 view .LVU184 + 578 0040 84F84500 strb r0, [r4, #69] + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 579 .loc 1 273 3 discriminator 5 view .LVU185 + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 580 .loc 1 273 15 is_stmt 0 discriminator 5 view .LVU186 + 581 0044 84F83D00 strb r0, [r4, #61] + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 582 .loc 1 276 3 is_stmt 1 discriminator 5 view .LVU187 + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 583 .loc 1 276 3 discriminator 5 view .LVU188 + 584 0048 84F83C00 strb r0, [r4, #60] + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 585 .loc 1 276 3 discriminator 5 view .LVU189 + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 586 .loc 1 278 3 discriminator 5 view .LVU190 + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 587 .loc 1 279 1 is_stmt 0 discriminator 5 view .LVU191 + 588 004c 10BD pop {r4, pc} + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 589 .loc 1 279 1 discriminator 5 view .LVU192 + 590 .cfi_endproc + 591 .LFE142: + 593 .section .text.HAL_TIMEx_HallSensor_Start,"ax",%progbits + 594 .align 1 + 595 .global HAL_TIMEx_HallSensor_Start + 596 .syntax unified + 597 .thumb + 598 .thumb_func + 599 .fpu fpv5-d16 + 601 HAL_TIMEx_HallSensor_Start: + 602 .LVL27: + 603 .LFB145: + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 604 .loc 1 317 1 is_stmt 1 view -0 + 605 .cfi_startproc + 606 @ args = 0, pretend = 0, frame = 0 + 607 @ frame_needed = 0, uses_anonymous_args = 0 + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 608 .loc 1 317 1 is_stmt 0 view .LVU194 + 609 0000 10B5 push {r4, lr} + 610 .LCFI8: + 611 .cfi_def_cfa_offset 8 + 612 .cfi_offset 4, -8 + 613 .cfi_offset 14, -4 + 614 0002 0446 mov r4, r0 + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 615 .loc 1 318 3 is_stmt 1 view .LVU195 + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 616 .loc 1 319 3 view .LVU196 + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + ARM GAS /tmp/cc7KL1Mv.s page 60 + + + 617 .loc 1 319 31 is_stmt 0 view .LVU197 + 618 0004 90F83E10 ldrb r1, [r0, #62] @ zero_extendqisi2 + 619 0008 C9B2 uxtb r1, r1 + 620 .LVL28: + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 621 .loc 1 320 3 is_stmt 1 view .LVU198 + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 622 .loc 1 320 31 is_stmt 0 view .LVU199 + 623 000a 90F83F20 ldrb r2, [r0, #63] @ zero_extendqisi2 + 624 000e D2B2 uxtb r2, r2 + 625 .LVL29: + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 626 .loc 1 321 3 is_stmt 1 view .LVU200 + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 627 .loc 1 321 31 is_stmt 0 view .LVU201 + 628 0010 90F84430 ldrb r3, [r0, #68] @ zero_extendqisi2 + 629 0014 D8B2 uxtb r0, r3 + 630 .LVL30: + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 631 .loc 1 322 3 is_stmt 1 view .LVU202 + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 632 .loc 1 322 31 is_stmt 0 view .LVU203 + 633 0016 94F84530 ldrb r3, [r4, #69] @ zero_extendqisi2 + 634 .LVL31: + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 635 .loc 1 325 3 is_stmt 1 view .LVU204 + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 636 .loc 1 328 3 view .LVU205 + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 637 .loc 1 328 6 is_stmt 0 view .LVU206 + 638 001a 012A cmp r2, #1 + 639 001c 08BF it eq + 640 001e 0129 cmpeq r1, #1 + 641 0020 48D1 bne .L38 + 642 0022 DBB2 uxtb r3, r3 + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 643 .loc 1 331 41 view .LVU207 + 644 0024 013B subs r3, r3, #1 + 645 .LVL32: + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 646 .loc 1 331 41 view .LVU208 + 647 0026 18BF it ne + 648 0028 0123 movne r3, #1 + 649 .LVL33: + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 650 .loc 1 331 7 view .LVU209 + 651 002a 0128 cmp r0, #1 + 652 002c 44D1 bne .L39 + 653 002e 002B cmp r3, #0 + 654 0030 42D1 bne .L39 + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 655 .loc 1 337 3 is_stmt 1 view .LVU210 + 656 0032 0223 movs r3, #2 + 657 0034 84F83E30 strb r3, [r4, #62] + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 658 .loc 1 338 3 view .LVU211 + 659 0038 84F83F30 strb r3, [r4, #63] + ARM GAS /tmp/cc7KL1Mv.s page 61 + + + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 660 .loc 1 339 3 view .LVU212 + 661 003c 84F84430 strb r3, [r4, #68] + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 662 .loc 1 340 3 view .LVU213 + 663 0040 84F84530 strb r3, [r4, #69] + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 664 .loc 1 345 3 view .LVU214 + 665 0044 0122 movs r2, #1 + 666 .LVL34: + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 667 .loc 1 345 3 is_stmt 0 view .LVU215 + 668 0046 0021 movs r1, #0 + 669 .LVL35: + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 670 .loc 1 345 3 view .LVU216 + 671 0048 2068 ldr r0, [r4] + 672 .LVL36: + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 673 .loc 1 345 3 view .LVU217 + 674 004a FFF7FEFF bl TIM_CCxChannelCmd + 675 .LVL37: + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 676 .loc 1 348 3 is_stmt 1 view .LVU218 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 677 .loc 1 348 7 is_stmt 0 view .LVU219 + 678 004e 2368 ldr r3, [r4] + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 679 .loc 1 348 6 view .LVU220 + 680 0050 1B4A ldr r2, .L42 + 681 0052 B3F1804F cmp r3, #1073741824 + 682 0056 18BF it ne + 683 0058 9342 cmpne r3, r2 + 684 005a 1DD0 beq .L36 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 685 .loc 1 348 7 discriminator 1 view .LVU221 + 686 005c A2F57C42 sub r2, r2, #64512 + 687 0060 9342 cmp r3, r2 + 688 0062 19D0 beq .L36 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 689 .loc 1 348 7 discriminator 2 view .LVU222 + 690 0064 02F58062 add r2, r2, #1024 + 691 0068 9342 cmp r3, r2 + 692 006a 15D0 beq .L36 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 693 .loc 1 348 7 discriminator 3 view .LVU223 + 694 006c 02F58062 add r2, r2, #1024 + 695 0070 9342 cmp r3, r2 + 696 0072 11D0 beq .L36 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 697 .loc 1 348 7 discriminator 4 view .LVU224 + 698 0074 02F57842 add r2, r2, #63488 + 699 0078 9342 cmp r3, r2 + 700 007a 0DD0 beq .L36 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 701 .loc 1 348 7 discriminator 5 view .LVU225 + 702 007c 02F57052 add r2, r2, #15360 + ARM GAS /tmp/cc7KL1Mv.s page 62 + + + 703 0080 9342 cmp r3, r2 + 704 0082 09D0 beq .L36 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 705 .loc 1 348 7 discriminator 6 view .LVU226 + 706 0084 A2F59432 sub r2, r2, #75776 + 707 0088 9342 cmp r3, r2 + 708 008a 05D0 beq .L36 + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 709 .loc 1 358 5 is_stmt 1 view .LVU227 + 710 008c 1A68 ldr r2, [r3] + 711 008e 42F00102 orr r2, r2, #1 + 712 0092 1A60 str r2, [r3] + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 713 .loc 1 362 10 is_stmt 0 view .LVU228 + 714 0094 0020 movs r0, #0 + 715 0096 0EE0 b .L35 + 716 .L36: + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 717 .loc 1 350 5 is_stmt 1 view .LVU229 + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 718 .loc 1 350 29 is_stmt 0 view .LVU230 + 719 0098 9968 ldr r1, [r3, #8] + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 720 .loc 1 350 13 view .LVU231 + 721 009a 0A4A ldr r2, .L42+4 + 722 009c 0A40 ands r2, r2, r1 + 723 .LVL38: + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 724 .loc 1 351 5 is_stmt 1 view .LVU232 + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 725 .loc 1 351 8 is_stmt 0 view .LVU233 + 726 009e 062A cmp r2, #6 + 727 00a0 18BF it ne + 728 00a2 B2F5803F cmpne r2, #65536 + 729 00a6 09D0 beq .L40 + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 730 .loc 1 353 7 is_stmt 1 view .LVU234 + 731 00a8 1A68 ldr r2, [r3] + 732 .LVL39: + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 733 .loc 1 353 7 is_stmt 0 view .LVU235 + 734 00aa 42F00102 orr r2, r2, #1 + 735 00ae 1A60 str r2, [r3] + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 736 .loc 1 362 10 view .LVU236 + 737 00b0 0020 movs r0, #0 + 738 00b2 00E0 b .L35 + 739 .LVL40: + 740 .L38: + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 741 .loc 1 333 12 view .LVU237 + 742 00b4 0120 movs r0, #1 + 743 .LVL41: + 744 .L35: + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 745 .loc 1 363 1 view .LVU238 + 746 00b6 10BD pop {r4, pc} + ARM GAS /tmp/cc7KL1Mv.s page 63 + + + 747 .LVL42: + 748 .L39: + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 749 .loc 1 333 12 view .LVU239 + 750 00b8 0120 movs r0, #1 + 751 .LVL43: + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 752 .loc 1 333 12 view .LVU240 + 753 00ba FCE7 b .L35 + 754 .LVL44: + 755 .L40: + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 756 .loc 1 362 10 view .LVU241 + 757 00bc 0020 movs r0, #0 + 758 00be FAE7 b .L35 + 759 .L43: + 760 .align 2 + 761 .L42: + 762 00c0 00000140 .word 1073807360 + 763 00c4 07000100 .word 65543 + 764 .cfi_endproc + 765 .LFE145: + 767 .section .text.HAL_TIMEx_HallSensor_Stop,"ax",%progbits + 768 .align 1 + 769 .global HAL_TIMEx_HallSensor_Stop + 770 .syntax unified + 771 .thumb + 772 .thumb_func + 773 .fpu fpv5-d16 + 775 HAL_TIMEx_HallSensor_Stop: + 776 .LVL45: + 777 .LFB146: + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 778 .loc 1 371 1 is_stmt 1 view -0 + 779 .cfi_startproc + 780 @ args = 0, pretend = 0, frame = 0 + 781 @ frame_needed = 0, uses_anonymous_args = 0 + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 782 .loc 1 371 1 is_stmt 0 view .LVU243 + 783 0000 10B5 push {r4, lr} + 784 .LCFI9: + 785 .cfi_def_cfa_offset 8 + 786 .cfi_offset 4, -8 + 787 .cfi_offset 14, -4 + 788 0002 0446 mov r4, r0 + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 789 .loc 1 373 3 is_stmt 1 view .LVU244 + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 790 .loc 1 378 3 view .LVU245 + 791 0004 0022 movs r2, #0 + 792 0006 1146 mov r1, r2 + 793 0008 0068 ldr r0, [r0] + 794 .LVL46: + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 795 .loc 1 378 3 is_stmt 0 view .LVU246 + 796 000a FFF7FEFF bl TIM_CCxChannelCmd + 797 .LVL47: + ARM GAS /tmp/cc7KL1Mv.s page 64 + + + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 798 .loc 1 381 3 is_stmt 1 view .LVU247 + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 799 .loc 1 381 3 view .LVU248 + 800 000e 2368 ldr r3, [r4] + 801 0010 196A ldr r1, [r3, #32] + 802 0012 41F21112 movw r2, #4369 + 803 0016 1142 tst r1, r2 + 804 0018 08D1 bne .L45 + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 805 .loc 1 381 3 discriminator 1 view .LVU249 + 806 001a 196A ldr r1, [r3, #32] + 807 001c 40F24442 movw r2, #1092 + 808 0020 1142 tst r1, r2 + 809 0022 03D1 bne .L45 + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 810 .loc 1 381 3 discriminator 3 view .LVU250 + 811 0024 1A68 ldr r2, [r3] + 812 0026 22F00102 bic r2, r2, #1 + 813 002a 1A60 str r2, [r3] + 814 .L45: + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 815 .loc 1 381 3 discriminator 5 view .LVU251 + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 816 .loc 1 384 3 discriminator 5 view .LVU252 + 817 002c 0123 movs r3, #1 + 818 002e 84F83E30 strb r3, [r4, #62] + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 819 .loc 1 385 3 discriminator 5 view .LVU253 + 820 0032 84F83F30 strb r3, [r4, #63] + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 821 .loc 1 386 3 discriminator 5 view .LVU254 + 822 0036 84F84430 strb r3, [r4, #68] + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 823 .loc 1 387 3 discriminator 5 view .LVU255 + 824 003a 84F84530 strb r3, [r4, #69] + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 825 .loc 1 390 3 discriminator 5 view .LVU256 + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 826 .loc 1 391 1 is_stmt 0 discriminator 5 view .LVU257 + 827 003e 0020 movs r0, #0 + 828 0040 10BD pop {r4, pc} + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 829 .loc 1 391 1 discriminator 5 view .LVU258 + 830 .cfi_endproc + 831 .LFE146: + 833 .section .text.HAL_TIMEx_HallSensor_Start_IT,"ax",%progbits + 834 .align 1 + 835 .global HAL_TIMEx_HallSensor_Start_IT + 836 .syntax unified + 837 .thumb + 838 .thumb_func + 839 .fpu fpv5-d16 + 841 HAL_TIMEx_HallSensor_Start_IT: + 842 .LVL48: + 843 .LFB147: + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + ARM GAS /tmp/cc7KL1Mv.s page 65 + + + 844 .loc 1 399 1 is_stmt 1 view -0 + 845 .cfi_startproc + 846 @ args = 0, pretend = 0, frame = 0 + 847 @ frame_needed = 0, uses_anonymous_args = 0 + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 848 .loc 1 399 1 is_stmt 0 view .LVU260 + 849 0000 10B5 push {r4, lr} + 850 .LCFI10: + 851 .cfi_def_cfa_offset 8 + 852 .cfi_offset 4, -8 + 853 .cfi_offset 14, -4 + 854 0002 0446 mov r4, r0 + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 855 .loc 1 400 3 is_stmt 1 view .LVU261 + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 856 .loc 1 401 3 view .LVU262 + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 857 .loc 1 401 31 is_stmt 0 view .LVU263 + 858 0004 90F83E10 ldrb r1, [r0, #62] @ zero_extendqisi2 + 859 0008 C9B2 uxtb r1, r1 + 860 .LVL49: + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 861 .loc 1 402 3 is_stmt 1 view .LVU264 + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 862 .loc 1 402 31 is_stmt 0 view .LVU265 + 863 000a 90F83F20 ldrb r2, [r0, #63] @ zero_extendqisi2 + 864 000e D2B2 uxtb r2, r2 + 865 .LVL50: + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 866 .loc 1 403 3 is_stmt 1 view .LVU266 + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 867 .loc 1 403 31 is_stmt 0 view .LVU267 + 868 0010 90F84430 ldrb r3, [r0, #68] @ zero_extendqisi2 + 869 0014 D8B2 uxtb r0, r3 + 870 .LVL51: + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 871 .loc 1 404 3 is_stmt 1 view .LVU268 + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 872 .loc 1 404 31 is_stmt 0 view .LVU269 + 873 0016 94F84530 ldrb r3, [r4, #69] @ zero_extendqisi2 + 874 .LVL52: + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 875 .loc 1 407 3 is_stmt 1 view .LVU270 + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 876 .loc 1 410 3 view .LVU271 + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 877 .loc 1 410 6 is_stmt 0 view .LVU272 + 878 001a 012A cmp r2, #1 + 879 001c 08BF it eq + 880 001e 0129 cmpeq r1, #1 + 881 0020 4DD1 bne .L51 + 882 0022 DBB2 uxtb r3, r3 + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 883 .loc 1 413 41 view .LVU273 + 884 0024 013B subs r3, r3, #1 + 885 .LVL53: + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 66 + + + 886 .loc 1 413 41 view .LVU274 + 887 0026 18BF it ne + 888 0028 0123 movne r3, #1 + 889 .LVL54: + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 890 .loc 1 413 7 view .LVU275 + 891 002a 0128 cmp r0, #1 + 892 002c 49D1 bne .L52 + 893 002e 002B cmp r3, #0 + 894 0030 47D1 bne .L52 + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 895 .loc 1 419 3 is_stmt 1 view .LVU276 + 896 0032 0223 movs r3, #2 + 897 0034 84F83E30 strb r3, [r4, #62] + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 898 .loc 1 420 3 view .LVU277 + 899 0038 84F83F30 strb r3, [r4, #63] + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 900 .loc 1 421 3 view .LVU278 + 901 003c 84F84430 strb r3, [r4, #68] + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 902 .loc 1 422 3 view .LVU279 + 903 0040 84F84530 strb r3, [r4, #69] + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 904 .loc 1 425 3 view .LVU280 + 905 0044 2268 ldr r2, [r4] + 906 .LVL55: + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 907 .loc 1 425 3 is_stmt 0 view .LVU281 + 908 0046 D368 ldr r3, [r2, #12] + 909 0048 43F00203 orr r3, r3, #2 + 910 004c D360 str r3, [r2, #12] + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 911 .loc 1 430 3 is_stmt 1 view .LVU282 + 912 004e 0122 movs r2, #1 + 913 0050 0021 movs r1, #0 + 914 .LVL56: + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 915 .loc 1 430 3 is_stmt 0 view .LVU283 + 916 0052 2068 ldr r0, [r4] + 917 .LVL57: + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 918 .loc 1 430 3 view .LVU284 + 919 0054 FFF7FEFF bl TIM_CCxChannelCmd + 920 .LVL58: + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 921 .loc 1 433 3 is_stmt 1 view .LVU285 + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 922 .loc 1 433 7 is_stmt 0 view .LVU286 + 923 0058 2368 ldr r3, [r4] + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 924 .loc 1 433 6 view .LVU287 + 925 005a 1C4A ldr r2, .L55 + 926 005c B3F1804F cmp r3, #1073741824 + 927 0060 18BF it ne + 928 0062 9342 cmpne r3, r2 + 929 0064 1DD0 beq .L49 + ARM GAS /tmp/cc7KL1Mv.s page 67 + + + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 930 .loc 1 433 7 discriminator 1 view .LVU288 + 931 0066 A2F57C42 sub r2, r2, #64512 + 932 006a 9342 cmp r3, r2 + 933 006c 19D0 beq .L49 + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 934 .loc 1 433 7 discriminator 2 view .LVU289 + 935 006e 02F58062 add r2, r2, #1024 + 936 0072 9342 cmp r3, r2 + 937 0074 15D0 beq .L49 + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 938 .loc 1 433 7 discriminator 3 view .LVU290 + 939 0076 02F58062 add r2, r2, #1024 + 940 007a 9342 cmp r3, r2 + 941 007c 11D0 beq .L49 + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 942 .loc 1 433 7 discriminator 4 view .LVU291 + 943 007e 02F57842 add r2, r2, #63488 + 944 0082 9342 cmp r3, r2 + 945 0084 0DD0 beq .L49 + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 946 .loc 1 433 7 discriminator 5 view .LVU292 + 947 0086 02F57052 add r2, r2, #15360 + 948 008a 9342 cmp r3, r2 + 949 008c 09D0 beq .L49 + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 950 .loc 1 433 7 discriminator 6 view .LVU293 + 951 008e A2F59432 sub r2, r2, #75776 + 952 0092 9342 cmp r3, r2 + 953 0094 05D0 beq .L49 + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 954 .loc 1 443 5 is_stmt 1 view .LVU294 + 955 0096 1A68 ldr r2, [r3] + 956 0098 42F00102 orr r2, r2, #1 + 957 009c 1A60 str r2, [r3] + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 958 .loc 1 447 10 is_stmt 0 view .LVU295 + 959 009e 0020 movs r0, #0 + 960 00a0 0EE0 b .L48 + 961 .L49: + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 962 .loc 1 435 5 is_stmt 1 view .LVU296 + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 963 .loc 1 435 29 is_stmt 0 view .LVU297 + 964 00a2 9968 ldr r1, [r3, #8] + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 965 .loc 1 435 13 view .LVU298 + 966 00a4 0A4A ldr r2, .L55+4 + 967 00a6 0A40 ands r2, r2, r1 + 968 .LVL59: + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 969 .loc 1 436 5 is_stmt 1 view .LVU299 + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 970 .loc 1 436 8 is_stmt 0 view .LVU300 + 971 00a8 062A cmp r2, #6 + 972 00aa 18BF it ne + 973 00ac B2F5803F cmpne r2, #65536 + ARM GAS /tmp/cc7KL1Mv.s page 68 + + + 974 00b0 09D0 beq .L53 + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 975 .loc 1 438 7 is_stmt 1 view .LVU301 + 976 00b2 1A68 ldr r2, [r3] + 977 .LVL60: + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 978 .loc 1 438 7 is_stmt 0 view .LVU302 + 979 00b4 42F00102 orr r2, r2, #1 + 980 00b8 1A60 str r2, [r3] + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 981 .loc 1 447 10 view .LVU303 + 982 00ba 0020 movs r0, #0 + 983 00bc 00E0 b .L48 + 984 .LVL61: + 985 .L51: + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 986 .loc 1 415 12 view .LVU304 + 987 00be 0120 movs r0, #1 + 988 .LVL62: + 989 .L48: + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 990 .loc 1 448 1 view .LVU305 + 991 00c0 10BD pop {r4, pc} + 992 .LVL63: + 993 .L52: + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 994 .loc 1 415 12 view .LVU306 + 995 00c2 0120 movs r0, #1 + 996 .LVL64: + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 997 .loc 1 415 12 view .LVU307 + 998 00c4 FCE7 b .L48 + 999 .LVL65: + 1000 .L53: + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1001 .loc 1 447 10 view .LVU308 + 1002 00c6 0020 movs r0, #0 + 1003 00c8 FAE7 b .L48 + 1004 .L56: + 1005 00ca 00BF .align 2 + 1006 .L55: + 1007 00cc 00000140 .word 1073807360 + 1008 00d0 07000100 .word 65543 + 1009 .cfi_endproc + 1010 .LFE147: + 1012 .section .text.HAL_TIMEx_HallSensor_Stop_IT,"ax",%progbits + 1013 .align 1 + 1014 .global HAL_TIMEx_HallSensor_Stop_IT + 1015 .syntax unified + 1016 .thumb + 1017 .thumb_func + 1018 .fpu fpv5-d16 + 1020 HAL_TIMEx_HallSensor_Stop_IT: + 1021 .LVL66: + 1022 .LFB148: + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 1023 .loc 1 456 1 is_stmt 1 view -0 + ARM GAS /tmp/cc7KL1Mv.s page 69 + + + 1024 .cfi_startproc + 1025 @ args = 0, pretend = 0, frame = 0 + 1026 @ frame_needed = 0, uses_anonymous_args = 0 + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 1027 .loc 1 456 1 is_stmt 0 view .LVU310 + 1028 0000 10B5 push {r4, lr} + 1029 .LCFI11: + 1030 .cfi_def_cfa_offset 8 + 1031 .cfi_offset 4, -8 + 1032 .cfi_offset 14, -4 + 1033 0002 0446 mov r4, r0 + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1034 .loc 1 458 3 is_stmt 1 view .LVU311 + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1035 .loc 1 463 3 view .LVU312 + 1036 0004 0022 movs r2, #0 + 1037 0006 1146 mov r1, r2 + 1038 0008 0068 ldr r0, [r0] + 1039 .LVL67: + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1040 .loc 1 463 3 is_stmt 0 view .LVU313 + 1041 000a FFF7FEFF bl TIM_CCxChannelCmd + 1042 .LVL68: + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1043 .loc 1 466 3 is_stmt 1 view .LVU314 + 1044 000e 2268 ldr r2, [r4] + 1045 0010 D368 ldr r3, [r2, #12] + 1046 0012 23F00203 bic r3, r3, #2 + 1047 0016 D360 str r3, [r2, #12] + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1048 .loc 1 469 3 view .LVU315 + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1049 .loc 1 469 3 view .LVU316 + 1050 0018 2368 ldr r3, [r4] + 1051 001a 196A ldr r1, [r3, #32] + 1052 001c 41F21112 movw r2, #4369 + 1053 0020 1142 tst r1, r2 + 1054 0022 08D1 bne .L58 + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1055 .loc 1 469 3 discriminator 1 view .LVU317 + 1056 0024 196A ldr r1, [r3, #32] + 1057 0026 40F24442 movw r2, #1092 + 1058 002a 1142 tst r1, r2 + 1059 002c 03D1 bne .L58 + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1060 .loc 1 469 3 discriminator 3 view .LVU318 + 1061 002e 1A68 ldr r2, [r3] + 1062 0030 22F00102 bic r2, r2, #1 + 1063 0034 1A60 str r2, [r3] + 1064 .L58: + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1065 .loc 1 469 3 discriminator 5 view .LVU319 + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 1066 .loc 1 472 3 discriminator 5 view .LVU320 + 1067 0036 0123 movs r3, #1 + 1068 0038 84F83E30 strb r3, [r4, #62] + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + ARM GAS /tmp/cc7KL1Mv.s page 70 + + + 1069 .loc 1 473 3 discriminator 5 view .LVU321 + 1070 003c 84F83F30 strb r3, [r4, #63] + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 1071 .loc 1 474 3 discriminator 5 view .LVU322 + 1072 0040 84F84430 strb r3, [r4, #68] + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1073 .loc 1 475 3 discriminator 5 view .LVU323 + 1074 0044 84F84530 strb r3, [r4, #69] + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1075 .loc 1 478 3 discriminator 5 view .LVU324 + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1076 .loc 1 479 1 is_stmt 0 discriminator 5 view .LVU325 + 1077 0048 0020 movs r0, #0 + 1078 004a 10BD pop {r4, pc} + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1079 .loc 1 479 1 discriminator 5 view .LVU326 + 1080 .cfi_endproc + 1081 .LFE148: + 1083 .section .text.HAL_TIMEx_HallSensor_Start_DMA,"ax",%progbits + 1084 .align 1 + 1085 .global HAL_TIMEx_HallSensor_Start_DMA + 1086 .syntax unified + 1087 .thumb + 1088 .thumb_func + 1089 .fpu fpv5-d16 + 1091 HAL_TIMEx_HallSensor_Start_DMA: + 1092 .LVL69: + 1093 .LFB149: + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 1094 .loc 1 489 1 is_stmt 1 view -0 + 1095 .cfi_startproc + 1096 @ args = 0, pretend = 0, frame = 0 + 1097 @ frame_needed = 0, uses_anonymous_args = 0 + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 1098 .loc 1 489 1 is_stmt 0 view .LVU328 + 1099 0000 70B5 push {r4, r5, r6, lr} + 1100 .LCFI12: + 1101 .cfi_def_cfa_offset 16 + 1102 .cfi_offset 4, -16 + 1103 .cfi_offset 5, -12 + 1104 .cfi_offset 6, -8 + 1105 .cfi_offset 14, -4 + 1106 0002 0446 mov r4, r0 + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 1107 .loc 1 490 3 is_stmt 1 view .LVU329 + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 1108 .loc 1 491 3 view .LVU330 + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 1109 .loc 1 491 31 is_stmt 0 view .LVU331 + 1110 0004 90F83EC0 ldrb ip, [r0, #62] @ zero_extendqisi2 + 1111 0008 5FFA8CFC uxtb ip, ip + 1112 .LVL70: + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1113 .loc 1 492 3 is_stmt 1 view .LVU332 + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1114 .loc 1 492 31 is_stmt 0 view .LVU333 + 1115 000c 90F84400 ldrb r0, [r0, #68] @ zero_extendqisi2 + ARM GAS /tmp/cc7KL1Mv.s page 71 + + + 1116 .LVL71: + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1117 .loc 1 492 31 view .LVU334 + 1118 0010 C0B2 uxtb r0, r0 + 1119 .LVL72: + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1120 .loc 1 495 3 is_stmt 1 view .LVU335 + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)) + 1121 .loc 1 498 3 view .LVU336 + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_BUSY)) + 1122 .loc 1 498 6 is_stmt 0 view .LVU337 + 1123 0012 0228 cmp r0, #2 + 1124 0014 18BF it ne + 1125 0016 BCF1020F cmpne ip, #2 + 1126 001a 5ED0 beq .L64 + 1127 001c 0E46 mov r6, r1 + 1128 001e 1546 mov r5, r2 + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)) + 1129 .loc 1 503 8 is_stmt 1 view .LVU338 + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** && (complementary_channel_1_state == HAL_TIM_CHANNEL_STATE_READY)) + 1130 .loc 1 503 11 is_stmt 0 view .LVU339 + 1131 0020 BCF1010F cmp ip, #1 + 1132 0024 08BF it eq + 1133 0026 0128 cmpeq r0, #1 + 1134 0028 59D1 bne .L65 + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1135 .loc 1 506 5 is_stmt 1 view .LVU340 + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1136 .loc 1 506 8 is_stmt 0 view .LVU341 + 1137 002a 002A cmp r2, #0 + 1138 002c 18BF it ne + 1139 002e 0029 cmpne r1, #0 + 1140 0030 01D1 bne .L69 + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1141 .loc 1 508 14 view .LVU342 + 1142 0032 0120 movs r0, #1 + 1143 .LVL73: + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1144 .loc 1 508 14 view .LVU343 + 1145 0034 54E0 b .L61 + 1146 .LVL74: + 1147 .L69: + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 1148 .loc 1 512 7 is_stmt 1 view .LVU344 + 1149 0036 0223 movs r3, #2 + 1150 0038 84F83E30 strb r3, [r4, #62] + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1151 .loc 1 513 7 view .LVU345 + 1152 003c 84F84430 strb r3, [r4, #68] + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1153 .loc 1 524 3 view .LVU346 + 1154 0040 0122 movs r2, #1 + 1155 .LVL75: + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1156 .loc 1 524 3 is_stmt 0 view .LVU347 + 1157 0042 0021 movs r1, #0 + 1158 .LVL76: + ARM GAS /tmp/cc7KL1Mv.s page 72 + + + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1159 .loc 1 524 3 view .LVU348 + 1160 0044 2068 ldr r0, [r4] + 1161 .LVL77: + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1162 .loc 1 524 3 view .LVU349 + 1163 0046 FFF7FEFF bl TIM_CCxChannelCmd + 1164 .LVL78: + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 1165 .loc 1 527 3 is_stmt 1 view .LVU350 + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 1166 .loc 1 527 13 is_stmt 0 view .LVU351 + 1167 004a 636A ldr r3, [r4, #36] + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMACaptureHalfCplt; + 1168 .loc 1 527 48 view .LVU352 + 1169 004c 264A ldr r2, .L70 + 1170 004e DA63 str r2, [r3, #60] + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ + 1171 .loc 1 528 3 is_stmt 1 view .LVU353 + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ + 1172 .loc 1 528 13 is_stmt 0 view .LVU354 + 1173 0050 636A ldr r3, [r4, #36] + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ + 1174 .loc 1 528 52 view .LVU355 + 1175 0052 264A ldr r2, .L70+4 + 1176 0054 1A64 str r2, [r3, #64] + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1177 .loc 1 530 3 is_stmt 1 view .LVU356 + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1178 .loc 1 530 13 is_stmt 0 view .LVU357 + 1179 0056 636A ldr r3, [r4, #36] + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1180 .loc 1 530 49 view .LVU358 + 1181 0058 254A ldr r2, .L70+8 + 1182 005a DA64 str r2, [r3, #76] + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1183 .loc 1 533 3 is_stmt 1 view .LVU359 + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1184 .loc 1 533 67 is_stmt 0 view .LVU360 + 1185 005c 2168 ldr r1, [r4] + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1186 .loc 1 533 7 view .LVU361 + 1187 005e 2B46 mov r3, r5 + 1188 0060 3246 mov r2, r6 + 1189 0062 3431 adds r1, r1, #52 + 1190 0064 606A ldr r0, [r4, #36] + 1191 0066 FFF7FEFF bl HAL_DMA_Start_IT + 1192 .LVL79: + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1193 .loc 1 533 6 view .LVU362 + 1194 006a 0028 cmp r0, #0 + 1195 006c 39D1 bne .L67 + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1196 .loc 1 539 3 is_stmt 1 view .LVU363 + 1197 006e 2268 ldr r2, [r4] + 1198 0070 D368 ldr r3, [r2, #12] + 1199 0072 43F40073 orr r3, r3, #512 + ARM GAS /tmp/cc7KL1Mv.s page 73 + + + 1200 0076 D360 str r3, [r2, #12] + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1201 .loc 1 542 3 view .LVU364 + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1202 .loc 1 542 7 is_stmt 0 view .LVU365 + 1203 0078 2368 ldr r3, [r4] + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1204 .loc 1 542 6 view .LVU366 + 1205 007a 1E4A ldr r2, .L70+12 + 1206 007c B3F1804F cmp r3, #1073741824 + 1207 0080 18BF it ne + 1208 0082 9342 cmpne r3, r2 + 1209 0084 1CD0 beq .L62 + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1210 .loc 1 542 7 discriminator 1 view .LVU367 + 1211 0086 A2F57C42 sub r2, r2, #64512 + 1212 008a 9342 cmp r3, r2 + 1213 008c 18D0 beq .L62 + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1214 .loc 1 542 7 discriminator 2 view .LVU368 + 1215 008e 02F58062 add r2, r2, #1024 + 1216 0092 9342 cmp r3, r2 + 1217 0094 14D0 beq .L62 + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1218 .loc 1 542 7 discriminator 3 view .LVU369 + 1219 0096 02F58062 add r2, r2, #1024 + 1220 009a 9342 cmp r3, r2 + 1221 009c 10D0 beq .L62 + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1222 .loc 1 542 7 discriminator 4 view .LVU370 + 1223 009e 02F57842 add r2, r2, #63488 + 1224 00a2 9342 cmp r3, r2 + 1225 00a4 0CD0 beq .L62 + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1226 .loc 1 542 7 discriminator 5 view .LVU371 + 1227 00a6 02F57052 add r2, r2, #15360 + 1228 00aa 9342 cmp r3, r2 + 1229 00ac 08D0 beq .L62 + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1230 .loc 1 542 7 discriminator 6 view .LVU372 + 1231 00ae A2F59432 sub r2, r2, #75776 + 1232 00b2 9342 cmp r3, r2 + 1233 00b4 04D0 beq .L62 + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1234 .loc 1 552 5 is_stmt 1 view .LVU373 + 1235 00b6 1A68 ldr r2, [r3] + 1236 00b8 42F00102 orr r2, r2, #1 + 1237 00bc 1A60 str r2, [r3] + 1238 00be 0FE0 b .L61 + 1239 .L62: + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1240 .loc 1 544 5 view .LVU374 + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1241 .loc 1 544 29 is_stmt 0 view .LVU375 + 1242 00c0 9968 ldr r1, [r3, #8] + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1243 .loc 1 544 13 view .LVU376 + ARM GAS /tmp/cc7KL1Mv.s page 74 + + + 1244 00c2 0D4A ldr r2, .L70+16 + 1245 00c4 0A40 ands r2, r2, r1 + 1246 .LVL80: + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1247 .loc 1 545 5 is_stmt 1 view .LVU377 + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1248 .loc 1 545 8 is_stmt 0 view .LVU378 + 1249 00c6 062A cmp r2, #6 + 1250 00c8 18BF it ne + 1251 00ca B2F5803F cmpne r2, #65536 + 1252 00ce 07D0 beq .L61 + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1253 .loc 1 547 7 is_stmt 1 view .LVU379 + 1254 00d0 1A68 ldr r2, [r3] + 1255 .LVL81: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1256 .loc 1 547 7 is_stmt 0 view .LVU380 + 1257 00d2 42F00102 orr r2, r2, #1 + 1258 00d6 1A60 str r2, [r3] + 1259 00d8 02E0 b .L61 + 1260 .LVL82: + 1261 .L64: + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1262 .loc 1 501 12 view .LVU381 + 1263 00da 0220 movs r0, #2 + 1264 .LVL83: + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1265 .loc 1 501 12 view .LVU382 + 1266 00dc 00E0 b .L61 + 1267 .LVL84: + 1268 .L65: + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1269 .loc 1 518 12 view .LVU383 + 1270 00de 0120 movs r0, #1 + 1271 .LVL85: + 1272 .L61: + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1273 .loc 1 557 1 view .LVU384 + 1274 00e0 70BD pop {r4, r5, r6, pc} + 1275 .LVL86: + 1276 .L67: + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1277 .loc 1 536 12 view .LVU385 + 1278 00e2 0120 movs r0, #1 + 1279 00e4 FCE7 b .L61 + 1280 .L71: + 1281 00e6 00BF .align 2 + 1282 .L70: + 1283 00e8 00000000 .word TIM_DMACaptureCplt + 1284 00ec 00000000 .word TIM_DMACaptureHalfCplt + 1285 00f0 00000000 .word TIM_DMAError + 1286 00f4 00000140 .word 1073807360 + 1287 00f8 07000100 .word 65543 + 1288 .cfi_endproc + 1289 .LFE149: + 1291 .section .text.HAL_TIMEx_HallSensor_Stop_DMA,"ax",%progbits + 1292 .align 1 + ARM GAS /tmp/cc7KL1Mv.s page 75 + + + 1293 .global HAL_TIMEx_HallSensor_Stop_DMA + 1294 .syntax unified + 1295 .thumb + 1296 .thumb_func + 1297 .fpu fpv5-d16 + 1299 HAL_TIMEx_HallSensor_Stop_DMA: + 1300 .LVL87: + 1301 .LFB150: + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 1302 .loc 1 565 1 is_stmt 1 view -0 + 1303 .cfi_startproc + 1304 @ args = 0, pretend = 0, frame = 0 + 1305 @ frame_needed = 0, uses_anonymous_args = 0 + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 1306 .loc 1 565 1 is_stmt 0 view .LVU387 + 1307 0000 10B5 push {r4, lr} + 1308 .LCFI13: + 1309 .cfi_def_cfa_offset 8 + 1310 .cfi_offset 4, -8 + 1311 .cfi_offset 14, -4 + 1312 0002 0446 mov r4, r0 + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1313 .loc 1 567 3 is_stmt 1 view .LVU388 + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1314 .loc 1 572 3 view .LVU389 + 1315 0004 0022 movs r2, #0 + 1316 0006 1146 mov r1, r2 + 1317 0008 0068 ldr r0, [r0] + 1318 .LVL88: + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1319 .loc 1 572 3 is_stmt 0 view .LVU390 + 1320 000a FFF7FEFF bl TIM_CCxChannelCmd + 1321 .LVL89: + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1322 .loc 1 576 3 is_stmt 1 view .LVU391 + 1323 000e 2268 ldr r2, [r4] + 1324 0010 D368 ldr r3, [r2, #12] + 1325 0012 23F40073 bic r3, r3, #512 + 1326 0016 D360 str r3, [r2, #12] + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1327 .loc 1 578 3 view .LVU392 + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1328 .loc 1 578 9 is_stmt 0 view .LVU393 + 1329 0018 606A ldr r0, [r4, #36] + 1330 001a FFF7FEFF bl HAL_DMA_Abort_IT + 1331 .LVL90: + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1332 .loc 1 581 3 is_stmt 1 view .LVU394 + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1333 .loc 1 581 3 view .LVU395 + 1334 001e 2368 ldr r3, [r4] + 1335 0020 196A ldr r1, [r3, #32] + 1336 0022 41F21112 movw r2, #4369 + 1337 0026 1142 tst r1, r2 + 1338 0028 08D1 bne .L73 + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1339 .loc 1 581 3 discriminator 1 view .LVU396 + ARM GAS /tmp/cc7KL1Mv.s page 76 + + + 1340 002a 196A ldr r1, [r3, #32] + 1341 002c 40F24442 movw r2, #1092 + 1342 0030 1142 tst r1, r2 + 1343 0032 03D1 bne .L73 + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1344 .loc 1 581 3 discriminator 3 view .LVU397 + 1345 0034 1A68 ldr r2, [r3] + 1346 0036 22F00102 bic r2, r2, #1 + 1347 003a 1A60 str r2, [r3] + 1348 .L73: + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1349 .loc 1 581 3 discriminator 5 view .LVU398 + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 1350 .loc 1 584 3 discriminator 5 view .LVU399 + 1351 003c 0123 movs r3, #1 + 1352 003e 84F83E30 strb r3, [r4, #62] + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1353 .loc 1 585 3 discriminator 5 view .LVU400 + 1354 0042 84F84430 strb r3, [r4, #68] + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1355 .loc 1 588 3 discriminator 5 view .LVU401 + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1356 .loc 1 589 1 is_stmt 0 discriminator 5 view .LVU402 + 1357 0046 0020 movs r0, #0 + 1358 0048 10BD pop {r4, pc} + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1359 .loc 1 589 1 discriminator 5 view .LVU403 + 1360 .cfi_endproc + 1361 .LFE150: + 1363 .section .text.HAL_TIMEx_OCN_Start,"ax",%progbits + 1364 .align 1 + 1365 .global HAL_TIMEx_OCN_Start + 1366 .syntax unified + 1367 .thumb + 1368 .thumb_func + 1369 .fpu fpv5-d16 + 1371 HAL_TIMEx_OCN_Start: + 1372 .LVL91: + 1373 .LFB151: + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 1374 .loc 1 627 1 is_stmt 1 view -0 + 1375 .cfi_startproc + 1376 @ args = 0, pretend = 0, frame = 0 + 1377 @ frame_needed = 0, uses_anonymous_args = 0 + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 1378 .loc 1 627 1 is_stmt 0 view .LVU405 + 1379 0000 10B5 push {r4, lr} + 1380 .LCFI14: + 1381 .cfi_def_cfa_offset 8 + 1382 .cfi_offset 4, -8 + 1383 .cfi_offset 14, -4 + 1384 0002 0446 mov r4, r0 + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1385 .loc 1 628 3 is_stmt 1 view .LVU406 + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1386 .loc 1 631 3 view .LVU407 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 77 + + + 1387 .loc 1 634 3 view .LVU408 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1388 .loc 1 634 46 is_stmt 0 view .LVU409 + 1389 0004 0846 mov r0, r1 + 1390 .LVL92: + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1391 .loc 1 634 46 view .LVU410 + 1392 0006 0029 cmp r1, #0 + 1393 0008 3BD1 bne .L76 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1394 .loc 1 634 7 discriminator 1 view .LVU411 + 1395 000a 94F84430 ldrb r3, [r4, #68] @ zero_extendqisi2 + 1396 000e DBB2 uxtb r3, r3 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1397 .loc 1 634 46 discriminator 1 view .LVU412 + 1398 0010 013B subs r3, r3, #1 + 1399 0012 18BF it ne + 1400 0014 0123 movne r3, #1 + 1401 .L77: + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1402 .loc 1 634 6 discriminator 12 view .LVU413 + 1403 0016 002B cmp r3, #0 + 1404 0018 6AD1 bne .L87 + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1405 .loc 1 640 3 is_stmt 1 view .LVU414 + 1406 001a 0028 cmp r0, #0 + 1407 001c 4AD1 bne .L81 + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1408 .loc 1 640 3 is_stmt 0 discriminator 1 view .LVU415 + 1409 001e 0223 movs r3, #2 + 1410 0020 84F84430 strb r3, [r4, #68] + 1411 .L82: + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1412 .loc 1 643 3 is_stmt 1 view .LVU416 + 1413 0024 0422 movs r2, #4 + 1414 0026 0146 mov r1, r0 + 1415 .LVL93: + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1416 .loc 1 643 3 is_stmt 0 view .LVU417 + 1417 0028 2068 ldr r0, [r4] + 1418 .LVL94: + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1419 .loc 1 643 3 view .LVU418 + 1420 002a FFF7FEFF bl TIM_CCxNChannelCmd + 1421 .LVL95: + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1422 .loc 1 646 3 is_stmt 1 view .LVU419 + 1423 002e 2268 ldr r2, [r4] + 1424 0030 536C ldr r3, [r2, #68] + 1425 0032 43F40043 orr r3, r3, #32768 + 1426 0036 5364 str r3, [r2, #68] + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1427 .loc 1 649 3 view .LVU420 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1428 .loc 1 649 7 is_stmt 0 view .LVU421 + 1429 0038 2368 ldr r3, [r4] + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 78 + + + 1430 .loc 1 649 6 view .LVU422 + 1431 003a 2F4A ldr r2, .L94 + 1432 003c B3F1804F cmp r3, #1073741824 + 1433 0040 18BF it ne + 1434 0042 9342 cmpne r3, r2 + 1435 0044 46D0 beq .L85 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1436 .loc 1 649 7 discriminator 1 view .LVU423 + 1437 0046 A2F57C42 sub r2, r2, #64512 + 1438 004a 9342 cmp r3, r2 + 1439 004c 42D0 beq .L85 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1440 .loc 1 649 7 discriminator 2 view .LVU424 + 1441 004e 02F58062 add r2, r2, #1024 + 1442 0052 9342 cmp r3, r2 + 1443 0054 3ED0 beq .L85 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1444 .loc 1 649 7 discriminator 3 view .LVU425 + 1445 0056 02F58062 add r2, r2, #1024 + 1446 005a 9342 cmp r3, r2 + 1447 005c 3AD0 beq .L85 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1448 .loc 1 649 7 discriminator 4 view .LVU426 + 1449 005e 02F57842 add r2, r2, #63488 + 1450 0062 9342 cmp r3, r2 + 1451 0064 36D0 beq .L85 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1452 .loc 1 649 7 discriminator 5 view .LVU427 + 1453 0066 02F57052 add r2, r2, #15360 + 1454 006a 9342 cmp r3, r2 + 1455 006c 32D0 beq .L85 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1456 .loc 1 649 7 discriminator 6 view .LVU428 + 1457 006e A2F59432 sub r2, r2, #75776 + 1458 0072 9342 cmp r3, r2 + 1459 0074 2ED0 beq .L85 + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1460 .loc 1 659 5 is_stmt 1 view .LVU429 + 1461 0076 1A68 ldr r2, [r3] + 1462 0078 42F00102 orr r2, r2, #1 + 1463 007c 1A60 str r2, [r3] + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1464 .loc 1 663 10 is_stmt 0 view .LVU430 + 1465 007e 0020 movs r0, #0 + 1466 0080 37E0 b .L80 + 1467 .LVL96: + 1468 .L76: + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1469 .loc 1 634 46 discriminator 2 view .LVU431 + 1470 0082 0429 cmp r1, #4 + 1471 0084 08D0 beq .L90 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1472 .loc 1 634 46 discriminator 5 view .LVU432 + 1473 0086 0829 cmp r1, #8 + 1474 0088 0DD0 beq .L91 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1475 .loc 1 634 7 discriminator 8 view .LVU433 + ARM GAS /tmp/cc7KL1Mv.s page 79 + + + 1476 008a 94F84730 ldrb r3, [r4, #71] @ zero_extendqisi2 + 1477 008e DBB2 uxtb r3, r3 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1478 .loc 1 634 46 discriminator 8 view .LVU434 + 1479 0090 013B subs r3, r3, #1 + 1480 0092 18BF it ne + 1481 0094 0123 movne r3, #1 + 1482 0096 BEE7 b .L77 + 1483 .L90: + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1484 .loc 1 634 7 discriminator 4 view .LVU435 + 1485 0098 94F84530 ldrb r3, [r4, #69] @ zero_extendqisi2 + 1486 009c DBB2 uxtb r3, r3 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1487 .loc 1 634 46 discriminator 4 view .LVU436 + 1488 009e 013B subs r3, r3, #1 + 1489 00a0 18BF it ne + 1490 00a2 0123 movne r3, #1 + 1491 00a4 B7E7 b .L77 + 1492 .L91: + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1493 .loc 1 634 7 discriminator 7 view .LVU437 + 1494 00a6 94F84630 ldrb r3, [r4, #70] @ zero_extendqisi2 + 1495 00aa DBB2 uxtb r3, r3 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1496 .loc 1 634 46 discriminator 7 view .LVU438 + 1497 00ac 013B subs r3, r3, #1 + 1498 00ae 18BF it ne + 1499 00b0 0123 movne r3, #1 + 1500 00b2 B0E7 b .L77 + 1501 .L81: + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1502 .loc 1 640 3 discriminator 2 view .LVU439 + 1503 00b4 0428 cmp r0, #4 + 1504 00b6 05D0 beq .L92 + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1505 .loc 1 640 3 discriminator 4 view .LVU440 + 1506 00b8 0828 cmp r0, #8 + 1507 00ba 07D0 beq .L93 + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1508 .loc 1 640 3 discriminator 7 view .LVU441 + 1509 00bc 0223 movs r3, #2 + 1510 00be 84F84730 strb r3, [r4, #71] + 1511 00c2 AFE7 b .L82 + 1512 .L92: + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1513 .loc 1 640 3 discriminator 3 view .LVU442 + 1514 00c4 0223 movs r3, #2 + 1515 00c6 84F84530 strb r3, [r4, #69] + 1516 00ca ABE7 b .L82 + 1517 .L93: + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1518 .loc 1 640 3 discriminator 6 view .LVU443 + 1519 00cc 0223 movs r3, #2 + 1520 00ce 84F84630 strb r3, [r4, #70] + 1521 00d2 A7E7 b .L82 + 1522 .LVL97: + ARM GAS /tmp/cc7KL1Mv.s page 80 + + + 1523 .L85: + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1524 .loc 1 651 5 is_stmt 1 view .LVU444 + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1525 .loc 1 651 29 is_stmt 0 view .LVU445 + 1526 00d4 9968 ldr r1, [r3, #8] + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1527 .loc 1 651 13 view .LVU446 + 1528 00d6 094A ldr r2, .L94+4 + 1529 00d8 0A40 ands r2, r2, r1 + 1530 .LVL98: + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1531 .loc 1 652 5 is_stmt 1 view .LVU447 + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1532 .loc 1 652 8 is_stmt 0 view .LVU448 + 1533 00da 062A cmp r2, #6 + 1534 00dc 18BF it ne + 1535 00de B2F5803F cmpne r2, #65536 + 1536 00e2 07D0 beq .L88 + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1537 .loc 1 654 7 is_stmt 1 view .LVU449 + 1538 00e4 1A68 ldr r2, [r3] + 1539 .LVL99: + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1540 .loc 1 654 7 is_stmt 0 view .LVU450 + 1541 00e6 42F00102 orr r2, r2, #1 + 1542 00ea 1A60 str r2, [r3] + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1543 .loc 1 663 10 view .LVU451 + 1544 00ec 0020 movs r0, #0 + 1545 00ee 00E0 b .L80 + 1546 .LVL100: + 1547 .L87: + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1548 .loc 1 636 12 view .LVU452 + 1549 00f0 0120 movs r0, #1 + 1550 .LVL101: + 1551 .L80: + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1552 .loc 1 664 1 view .LVU453 + 1553 00f2 10BD pop {r4, pc} + 1554 .LVL102: + 1555 .L88: + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1556 .loc 1 663 10 view .LVU454 + 1557 00f4 0020 movs r0, #0 + 1558 00f6 FCE7 b .L80 + 1559 .L95: + 1560 .align 2 + 1561 .L94: + 1562 00f8 00000140 .word 1073807360 + 1563 00fc 07000100 .word 65543 + 1564 .cfi_endproc + 1565 .LFE151: + 1567 .section .text.HAL_TIMEx_OCN_Stop,"ax",%progbits + 1568 .align 1 + 1569 .global HAL_TIMEx_OCN_Stop + ARM GAS /tmp/cc7KL1Mv.s page 81 + + + 1570 .syntax unified + 1571 .thumb + 1572 .thumb_func + 1573 .fpu fpv5-d16 + 1575 HAL_TIMEx_OCN_Stop: + 1576 .LVL103: + 1577 .LFB152: + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 1578 .loc 1 678 1 is_stmt 1 view -0 + 1579 .cfi_startproc + 1580 @ args = 0, pretend = 0, frame = 0 + 1581 @ frame_needed = 0, uses_anonymous_args = 0 + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 1582 .loc 1 678 1 is_stmt 0 view .LVU456 + 1583 0000 38B5 push {r3, r4, r5, lr} + 1584 .LCFI15: + 1585 .cfi_def_cfa_offset 16 + 1586 .cfi_offset 3, -16 + 1587 .cfi_offset 4, -12 + 1588 .cfi_offset 5, -8 + 1589 .cfi_offset 14, -4 + 1590 0002 0446 mov r4, r0 + 1591 0004 0D46 mov r5, r1 + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1592 .loc 1 680 3 is_stmt 1 view .LVU457 + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1593 .loc 1 683 3 view .LVU458 + 1594 0006 0022 movs r2, #0 + 1595 0008 0068 ldr r0, [r0] + 1596 .LVL104: + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1597 .loc 1 683 3 is_stmt 0 view .LVU459 + 1598 000a FFF7FEFF bl TIM_CCxNChannelCmd + 1599 .LVL105: + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1600 .loc 1 686 3 is_stmt 1 view .LVU460 + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1601 .loc 1 686 3 view .LVU461 + 1602 000e 2368 ldr r3, [r4] + 1603 0010 196A ldr r1, [r3, #32] + 1604 0012 41F21112 movw r2, #4369 + 1605 0016 1142 tst r1, r2 + 1606 0018 08D1 bne .L97 + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1607 .loc 1 686 3 discriminator 1 view .LVU462 + 1608 001a 196A ldr r1, [r3, #32] + 1609 001c 40F24442 movw r2, #1092 + 1610 0020 1142 tst r1, r2 + 1611 0022 03D1 bne .L97 + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1612 .loc 1 686 3 discriminator 3 view .LVU463 + 1613 0024 5A6C ldr r2, [r3, #68] + 1614 0026 22F40042 bic r2, r2, #32768 + 1615 002a 5A64 str r2, [r3, #68] + 1616 .L97: + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1617 .loc 1 686 3 discriminator 5 view .LVU464 + ARM GAS /tmp/cc7KL1Mv.s page 82 + + + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1618 .loc 1 689 3 discriminator 5 view .LVU465 + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1619 .loc 1 689 3 discriminator 5 view .LVU466 + 1620 002c 2368 ldr r3, [r4] + 1621 002e 196A ldr r1, [r3, #32] + 1622 0030 41F21112 movw r2, #4369 + 1623 0034 1142 tst r1, r2 + 1624 0036 08D1 bne .L98 + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1625 .loc 1 689 3 discriminator 1 view .LVU467 + 1626 0038 196A ldr r1, [r3, #32] + 1627 003a 40F24442 movw r2, #1092 + 1628 003e 1142 tst r1, r2 + 1629 0040 03D1 bne .L98 + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1630 .loc 1 689 3 discriminator 3 view .LVU468 + 1631 0042 1A68 ldr r2, [r3] + 1632 0044 22F00102 bic r2, r2, #1 + 1633 0048 1A60 str r2, [r3] + 1634 .L98: + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1635 .loc 1 689 3 discriminator 5 view .LVU469 + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1636 .loc 1 692 3 discriminator 5 view .LVU470 + 1637 004a 25B9 cbnz r5, .L99 + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1638 .loc 1 692 3 is_stmt 0 discriminator 1 view .LVU471 + 1639 004c 0123 movs r3, #1 + 1640 004e 84F84430 strb r3, [r4, #68] + 1641 .L100: + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1642 .loc 1 695 3 is_stmt 1 view .LVU472 + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1643 .loc 1 696 1 is_stmt 0 view .LVU473 + 1644 0052 0020 movs r0, #0 + 1645 0054 38BD pop {r3, r4, r5, pc} + 1646 .LVL106: + 1647 .L99: + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1648 .loc 1 692 3 discriminator 2 view .LVU474 + 1649 0056 042D cmp r5, #4 + 1650 0058 05D0 beq .L104 + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1651 .loc 1 692 3 discriminator 4 view .LVU475 + 1652 005a 082D cmp r5, #8 + 1653 005c 07D0 beq .L105 + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1654 .loc 1 692 3 discriminator 7 view .LVU476 + 1655 005e 0123 movs r3, #1 + 1656 0060 84F84730 strb r3, [r4, #71] + 1657 0064 F5E7 b .L100 + 1658 .L104: + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1659 .loc 1 692 3 discriminator 3 view .LVU477 + 1660 0066 0123 movs r3, #1 + 1661 0068 84F84530 strb r3, [r4, #69] + ARM GAS /tmp/cc7KL1Mv.s page 83 + + + 1662 006c F1E7 b .L100 + 1663 .L105: + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1664 .loc 1 692 3 discriminator 6 view .LVU478 + 1665 006e 0123 movs r3, #1 + 1666 0070 84F84630 strb r3, [r4, #70] + 1667 0074 EDE7 b .L100 + 1668 .cfi_endproc + 1669 .LFE152: + 1671 .section .text.HAL_TIMEx_OCN_Start_IT,"ax",%progbits + 1672 .align 1 + 1673 .global HAL_TIMEx_OCN_Start_IT + 1674 .syntax unified + 1675 .thumb + 1676 .thumb_func + 1677 .fpu fpv5-d16 + 1679 HAL_TIMEx_OCN_Start_IT: + 1680 .LVL107: + 1681 .LFB153: + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 1682 .loc 1 710 1 is_stmt 1 view -0 + 1683 .cfi_startproc + 1684 @ args = 0, pretend = 0, frame = 0 + 1685 @ frame_needed = 0, uses_anonymous_args = 0 + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 1686 .loc 1 710 1 is_stmt 0 view .LVU480 + 1687 0000 10B5 push {r4, lr} + 1688 .LCFI16: + 1689 .cfi_def_cfa_offset 8 + 1690 .cfi_offset 4, -8 + 1691 .cfi_offset 14, -4 + 1692 0002 0446 mov r4, r0 + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 1693 .loc 1 711 3 is_stmt 1 view .LVU481 + 1694 .LVL108: + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1695 .loc 1 712 3 view .LVU482 + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1696 .loc 1 715 3 view .LVU483 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1697 .loc 1 718 3 view .LVU484 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1698 .loc 1 718 46 is_stmt 0 view .LVU485 + 1699 0004 0846 mov r0, r1 + 1700 .LVL109: + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1701 .loc 1 718 46 view .LVU486 + 1702 0006 99B9 cbnz r1, .L107 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1703 .loc 1 718 7 discriminator 1 view .LVU487 + 1704 0008 94F84430 ldrb r3, [r4, #68] @ zero_extendqisi2 + 1705 000c DBB2 uxtb r3, r3 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1706 .loc 1 718 46 discriminator 1 view .LVU488 + 1707 000e 013B subs r3, r3, #1 + 1708 0010 18BF it ne + 1709 0012 0123 movne r3, #1 + ARM GAS /tmp/cc7KL1Mv.s page 84 + + + 1710 .L108: + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1711 .loc 1 718 6 discriminator 12 view .LVU489 + 1712 0014 002B cmp r3, #0 + 1713 0016 40F08780 bne .L121 + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1714 .loc 1 724 3 is_stmt 1 view .LVU490 + 1715 001a 10BB cbnz r0, .L112 + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1716 .loc 1 724 3 is_stmt 0 discriminator 1 view .LVU491 + 1717 001c 0223 movs r3, #2 + 1718 001e 84F84430 strb r3, [r4, #68] + 1719 .L113: + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1720 .loc 1 726 3 is_stmt 1 view .LVU492 + 1721 0022 0428 cmp r0, #4 + 1722 0024 66D0 beq .L116 + 1723 0026 0828 cmp r0, #8 + 1724 0028 6AD0 beq .L117 + 1725 002a 50B3 cbz r0, .L125 + 1726 002c 0120 movs r0, #1 + 1727 .LVL110: + 1728 .L111: + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1729 .loc 1 783 1 is_stmt 0 view .LVU493 + 1730 002e 10BD pop {r4, pc} + 1731 .LVL111: + 1732 .L107: + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1733 .loc 1 718 46 discriminator 2 view .LVU494 + 1734 0030 0429 cmp r1, #4 + 1735 0032 08D0 beq .L126 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1736 .loc 1 718 46 discriminator 5 view .LVU495 + 1737 0034 0829 cmp r1, #8 + 1738 0036 0DD0 beq .L127 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1739 .loc 1 718 7 discriminator 8 view .LVU496 + 1740 0038 94F84730 ldrb r3, [r4, #71] @ zero_extendqisi2 + 1741 003c DBB2 uxtb r3, r3 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1742 .loc 1 718 46 discriminator 8 view .LVU497 + 1743 003e 013B subs r3, r3, #1 + 1744 0040 18BF it ne + 1745 0042 0123 movne r3, #1 + 1746 0044 E6E7 b .L108 + 1747 .L126: + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1748 .loc 1 718 7 discriminator 4 view .LVU498 + 1749 0046 94F84530 ldrb r3, [r4, #69] @ zero_extendqisi2 + 1750 004a DBB2 uxtb r3, r3 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1751 .loc 1 718 46 discriminator 4 view .LVU499 + 1752 004c 013B subs r3, r3, #1 + 1753 004e 18BF it ne + 1754 0050 0123 movne r3, #1 + 1755 0052 DFE7 b .L108 + ARM GAS /tmp/cc7KL1Mv.s page 85 + + + 1756 .L127: + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1757 .loc 1 718 7 discriminator 7 view .LVU500 + 1758 0054 94F84630 ldrb r3, [r4, #70] @ zero_extendqisi2 + 1759 0058 DBB2 uxtb r3, r3 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1760 .loc 1 718 46 discriminator 7 view .LVU501 + 1761 005a 013B subs r3, r3, #1 + 1762 005c 18BF it ne + 1763 005e 0123 movne r3, #1 + 1764 0060 D8E7 b .L108 + 1765 .L112: + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1766 .loc 1 724 3 discriminator 2 view .LVU502 + 1767 0062 0428 cmp r0, #4 + 1768 0064 05D0 beq .L128 + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1769 .loc 1 724 3 discriminator 4 view .LVU503 + 1770 0066 0828 cmp r0, #8 + 1771 0068 07D0 beq .L129 + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1772 .loc 1 724 3 discriminator 7 view .LVU504 + 1773 006a 0223 movs r3, #2 + 1774 006c 84F84730 strb r3, [r4, #71] + 1775 0070 D7E7 b .L113 + 1776 .L128: + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1777 .loc 1 724 3 discriminator 3 view .LVU505 + 1778 0072 0223 movs r3, #2 + 1779 0074 84F84530 strb r3, [r4, #69] + 1780 0078 D3E7 b .L113 + 1781 .L129: + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1782 .loc 1 724 3 discriminator 6 view .LVU506 + 1783 007a 0223 movs r3, #2 + 1784 007c 84F84630 strb r3, [r4, #70] + 1785 0080 CFE7 b .L113 + 1786 .L125: + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 1787 .loc 1 731 7 is_stmt 1 view .LVU507 + 1788 0082 2268 ldr r2, [r4] + 1789 0084 D368 ldr r3, [r2, #12] + 1790 0086 43F00203 orr r3, r3, #2 + 1791 008a D360 str r3, [r2, #12] + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1792 .loc 1 732 7 view .LVU508 + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1793 .loc 1 755 3 view .LVU509 + 1794 .L118: + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1795 .loc 1 758 5 view .LVU510 + 1796 008c 2268 ldr r2, [r4] + 1797 008e D368 ldr r3, [r2, #12] + 1798 0090 43F08003 orr r3, r3, #128 + 1799 0094 D360 str r3, [r2, #12] + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1800 .loc 1 761 5 view .LVU511 + ARM GAS /tmp/cc7KL1Mv.s page 86 + + + 1801 0096 0422 movs r2, #4 + 1802 0098 0146 mov r1, r0 + 1803 009a 2068 ldr r0, [r4] + 1804 .LVL112: + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1805 .loc 1 761 5 is_stmt 0 view .LVU512 + 1806 009c FFF7FEFF bl TIM_CCxNChannelCmd + 1807 .LVL113: + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1808 .loc 1 764 5 is_stmt 1 view .LVU513 + 1809 00a0 2268 ldr r2, [r4] + 1810 00a2 536C ldr r3, [r2, #68] + 1811 00a4 43F40043 orr r3, r3, #32768 + 1812 00a8 5364 str r3, [r2, #68] + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1813 .loc 1 767 5 view .LVU514 + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1814 .loc 1 767 9 is_stmt 0 view .LVU515 + 1815 00aa 2368 ldr r3, [r4] + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1816 .loc 1 767 8 view .LVU516 + 1817 00ac 204A ldr r2, .L130 + 1818 00ae B3F1804F cmp r3, #1073741824 + 1819 00b2 18BF it ne + 1820 00b4 9342 cmpne r3, r2 + 1821 00b6 29D0 beq .L119 + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1822 .loc 1 767 9 discriminator 1 view .LVU517 + 1823 00b8 A2F57C42 sub r2, r2, #64512 + 1824 00bc 9342 cmp r3, r2 + 1825 00be 25D0 beq .L119 + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1826 .loc 1 767 9 discriminator 2 view .LVU518 + 1827 00c0 02F58062 add r2, r2, #1024 + 1828 00c4 9342 cmp r3, r2 + 1829 00c6 21D0 beq .L119 + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1830 .loc 1 767 9 discriminator 3 view .LVU519 + 1831 00c8 02F58062 add r2, r2, #1024 + 1832 00cc 9342 cmp r3, r2 + 1833 00ce 1DD0 beq .L119 + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1834 .loc 1 767 9 discriminator 4 view .LVU520 + 1835 00d0 02F57842 add r2, r2, #63488 + 1836 00d4 9342 cmp r3, r2 + 1837 00d6 19D0 beq .L119 + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1838 .loc 1 767 9 discriminator 5 view .LVU521 + 1839 00d8 02F57052 add r2, r2, #15360 + 1840 00dc 9342 cmp r3, r2 + 1841 00de 15D0 beq .L119 + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1842 .loc 1 767 9 discriminator 6 view .LVU522 + 1843 00e0 A2F59432 sub r2, r2, #75776 + 1844 00e4 9342 cmp r3, r2 + 1845 00e6 11D0 beq .L119 + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + ARM GAS /tmp/cc7KL1Mv.s page 87 + + + 1846 .loc 1 777 7 is_stmt 1 view .LVU523 + 1847 00e8 1A68 ldr r2, [r3] + 1848 00ea 42F00102 orr r2, r2, #1 + 1849 00ee 1A60 str r2, [r3] + 1850 00f0 0020 movs r0, #0 + 1851 00f2 9CE7 b .L111 + 1852 .LVL114: + 1853 .L116: + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 1854 .loc 1 738 7 view .LVU524 + 1855 00f4 2268 ldr r2, [r4] + 1856 00f6 D368 ldr r3, [r2, #12] + 1857 00f8 43F00403 orr r3, r3, #4 + 1858 00fc D360 str r3, [r2, #12] + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1859 .loc 1 739 7 view .LVU525 + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1860 .loc 1 755 3 view .LVU526 + 1861 00fe C5E7 b .L118 + 1862 .L117: + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 1863 .loc 1 745 7 view .LVU527 + 1864 0100 2268 ldr r2, [r4] + 1865 0102 D368 ldr r3, [r2, #12] + 1866 0104 43F00803 orr r3, r3, #8 + 1867 0108 D360 str r3, [r2, #12] + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1868 .loc 1 746 7 view .LVU528 + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1869 .loc 1 755 3 view .LVU529 + 1870 010a BFE7 b .L118 + 1871 .LVL115: + 1872 .L119: + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1873 .loc 1 769 7 view .LVU530 + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1874 .loc 1 769 31 is_stmt 0 view .LVU531 + 1875 010c 9968 ldr r1, [r3, #8] + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 1876 .loc 1 769 15 view .LVU532 + 1877 010e 094A ldr r2, .L130+4 + 1878 0110 0A40 ands r2, r2, r1 + 1879 .LVL116: + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1880 .loc 1 770 7 is_stmt 1 view .LVU533 + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1881 .loc 1 770 10 is_stmt 0 view .LVU534 + 1882 0112 062A cmp r2, #6 + 1883 0114 18BF it ne + 1884 0116 B2F5803F cmpne r2, #65536 + 1885 011a 07D0 beq .L123 + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1886 .loc 1 772 9 is_stmt 1 view .LVU535 + 1887 011c 1A68 ldr r2, [r3] + 1888 .LVL117: + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1889 .loc 1 772 9 is_stmt 0 view .LVU536 + ARM GAS /tmp/cc7KL1Mv.s page 88 + + + 1890 011e 42F00102 orr r2, r2, #1 + 1891 0122 1A60 str r2, [r3] + 1892 0124 0020 movs r0, #0 + 1893 0126 82E7 b .L111 + 1894 .LVL118: + 1895 .L121: + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1896 .loc 1 720 12 view .LVU537 + 1897 0128 0120 movs r0, #1 + 1898 .LVL119: + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1899 .loc 1 720 12 view .LVU538 + 1900 012a 80E7 b .L111 + 1901 .LVL120: + 1902 .L123: + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1903 .loc 1 720 12 view .LVU539 + 1904 012c 0020 movs r0, #0 + 1905 012e 7EE7 b .L111 + 1906 .L131: + 1907 .align 2 + 1908 .L130: + 1909 0130 00000140 .word 1073807360 + 1910 0134 07000100 .word 65543 + 1911 .cfi_endproc + 1912 .LFE153: + 1914 .section .text.HAL_TIMEx_OCN_Stop_IT,"ax",%progbits + 1915 .align 1 + 1916 .global HAL_TIMEx_OCN_Stop_IT + 1917 .syntax unified + 1918 .thumb + 1919 .thumb_func + 1920 .fpu fpv5-d16 + 1922 HAL_TIMEx_OCN_Stop_IT: + 1923 .LVL121: + 1924 .LFB154: + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 1925 .loc 1 797 1 is_stmt 1 view -0 + 1926 .cfi_startproc + 1927 @ args = 0, pretend = 0, frame = 0 + 1928 @ frame_needed = 0, uses_anonymous_args = 0 + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 1929 .loc 1 797 1 is_stmt 0 view .LVU541 + 1930 0000 38B5 push {r3, r4, r5, lr} + 1931 .LCFI17: + 1932 .cfi_def_cfa_offset 16 + 1933 .cfi_offset 3, -16 + 1934 .cfi_offset 4, -12 + 1935 .cfi_offset 5, -8 + 1936 .cfi_offset 14, -4 + 1937 0002 0546 mov r5, r0 + 1938 0004 0C46 mov r4, r1 + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpccer; + 1939 .loc 1 798 3 is_stmt 1 view .LVU542 + 1940 .LVL122: + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1941 .loc 1 799 3 view .LVU543 + ARM GAS /tmp/cc7KL1Mv.s page 89 + + + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1942 .loc 1 802 3 view .LVU544 + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1943 .loc 1 804 3 view .LVU545 + 1944 0006 0429 cmp r1, #4 + 1945 0008 3CD0 beq .L133 + 1946 000a 0829 cmp r1, #8 + 1947 000c 40D0 beq .L134 + 1948 000e 09B1 cbz r1, .L145 + 1949 0010 0120 movs r0, #1 + 1950 .LVL123: + 1951 .L135: + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1952 .loc 1 855 3 view .LVU546 + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1953 .loc 1 856 1 is_stmt 0 view .LVU547 + 1954 0012 38BD pop {r3, r4, r5, pc} + 1955 .LVL124: + 1956 .L145: + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 1957 .loc 1 809 7 is_stmt 1 view .LVU548 + 1958 0014 0268 ldr r2, [r0] + 1959 0016 D368 ldr r3, [r2, #12] + 1960 0018 23F00203 bic r3, r3, #2 + 1961 001c D360 str r3, [r2, #12] + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1962 .loc 1 810 7 view .LVU549 + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1963 .loc 1 832 3 view .LVU550 + 1964 .L136: + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1965 .loc 1 835 5 view .LVU551 + 1966 001e 0022 movs r2, #0 + 1967 0020 2146 mov r1, r4 + 1968 .LVL125: + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1969 .loc 1 835 5 is_stmt 0 view .LVU552 + 1970 0022 2868 ldr r0, [r5] + 1971 .LVL126: + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1972 .loc 1 835 5 view .LVU553 + 1973 0024 FFF7FEFF bl TIM_CCxNChannelCmd + 1974 .LVL127: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET) + 1975 .loc 1 838 5 is_stmt 1 view .LVU554 + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET) + 1976 .loc 1 838 19 is_stmt 0 view .LVU555 + 1977 0028 2B68 ldr r3, [r5] + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET) + 1978 .loc 1 838 13 view .LVU556 + 1979 002a 196A ldr r1, [r3, #32] + 1980 .LVL128: + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1981 .loc 1 839 5 is_stmt 1 view .LVU557 + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 1982 .loc 1 839 8 is_stmt 0 view .LVU558 + 1983 002c 40F24442 movw r2, #1092 + ARM GAS /tmp/cc7KL1Mv.s page 90 + + + 1984 0030 1142 tst r1, r2 + 1985 0032 03D1 bne .L137 + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 1986 .loc 1 841 7 is_stmt 1 view .LVU559 + 1987 0034 DA68 ldr r2, [r3, #12] + 1988 0036 22F08002 bic r2, r2, #128 + 1989 003a DA60 str r2, [r3, #12] + 1990 .L137: + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1991 .loc 1 845 5 view .LVU560 + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1992 .loc 1 845 5 view .LVU561 + 1993 003c 2B68 ldr r3, [r5] + 1994 003e 196A ldr r1, [r3, #32] + 1995 .LVL129: + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 1996 .loc 1 845 5 is_stmt 0 view .LVU562 + 1997 0040 41F21112 movw r2, #4369 + 1998 0044 1142 tst r1, r2 + 1999 0046 08D1 bne .L138 + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2000 .loc 1 845 5 is_stmt 1 discriminator 1 view .LVU563 + 2001 0048 196A ldr r1, [r3, #32] + 2002 004a 40F24442 movw r2, #1092 + 2003 004e 1142 tst r1, r2 + 2004 0050 03D1 bne .L138 + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2005 .loc 1 845 5 discriminator 3 view .LVU564 + 2006 0052 5A6C ldr r2, [r3, #68] + 2007 0054 22F40042 bic r2, r2, #32768 + 2008 0058 5A64 str r2, [r3, #68] + 2009 .L138: + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2010 .loc 1 845 5 discriminator 5 view .LVU565 + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2011 .loc 1 848 5 discriminator 5 view .LVU566 + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2012 .loc 1 848 5 discriminator 5 view .LVU567 + 2013 005a 2B68 ldr r3, [r5] + 2014 005c 196A ldr r1, [r3, #32] + 2015 005e 41F21112 movw r2, #4369 + 2016 0062 1142 tst r1, r2 + 2017 0064 08D1 bne .L139 + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2018 .loc 1 848 5 discriminator 1 view .LVU568 + 2019 0066 196A ldr r1, [r3, #32] + 2020 0068 40F24442 movw r2, #1092 + 2021 006c 1142 tst r1, r2 + 2022 006e 03D1 bne .L139 + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2023 .loc 1 848 5 discriminator 3 view .LVU569 + 2024 0070 1A68 ldr r2, [r3] + 2025 0072 22F00102 bic r2, r2, #1 + 2026 0076 1A60 str r2, [r3] + 2027 .L139: + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2028 .loc 1 848 5 discriminator 5 view .LVU570 + ARM GAS /tmp/cc7KL1Mv.s page 91 + + + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2029 .loc 1 851 5 discriminator 5 view .LVU571 + 2030 0078 84B9 cbnz r4, .L140 + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2031 .loc 1 851 5 is_stmt 0 discriminator 1 view .LVU572 + 2032 007a 0123 movs r3, #1 + 2033 007c 85F84430 strb r3, [r5, #68] + 2034 0080 0020 movs r0, #0 + 2035 0082 C6E7 b .L135 + 2036 .LVL130: + 2037 .L133: + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2038 .loc 1 816 7 is_stmt 1 view .LVU573 + 2039 0084 0268 ldr r2, [r0] + 2040 0086 D368 ldr r3, [r2, #12] + 2041 0088 23F00403 bic r3, r3, #4 + 2042 008c D360 str r3, [r2, #12] + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2043 .loc 1 817 7 view .LVU574 + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2044 .loc 1 832 3 view .LVU575 + 2045 008e C6E7 b .L136 + 2046 .L134: + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2047 .loc 1 823 7 view .LVU576 + 2048 0090 0268 ldr r2, [r0] + 2049 0092 D368 ldr r3, [r2, #12] + 2050 0094 23F00803 bic r3, r3, #8 + 2051 0098 D360 str r3, [r2, #12] + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2052 .loc 1 824 7 view .LVU577 + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2053 .loc 1 832 3 view .LVU578 + 2054 009a C0E7 b .L136 + 2055 .LVL131: + 2056 .L140: + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2057 .loc 1 851 5 is_stmt 0 discriminator 2 view .LVU579 + 2058 009c 042C cmp r4, #4 + 2059 009e 06D0 beq .L146 + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2060 .loc 1 851 5 discriminator 4 view .LVU580 + 2061 00a0 082C cmp r4, #8 + 2062 00a2 09D0 beq .L147 + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2063 .loc 1 851 5 discriminator 7 view .LVU581 + 2064 00a4 0123 movs r3, #1 + 2065 00a6 85F84730 strb r3, [r5, #71] + 2066 00aa 0020 movs r0, #0 + 2067 00ac B1E7 b .L135 + 2068 .L146: + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2069 .loc 1 851 5 discriminator 3 view .LVU582 + 2070 00ae 0123 movs r3, #1 + 2071 00b0 85F84530 strb r3, [r5, #69] + 2072 00b4 0020 movs r0, #0 + 2073 00b6 ACE7 b .L135 + ARM GAS /tmp/cc7KL1Mv.s page 92 + + + 2074 .L147: + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2075 .loc 1 851 5 discriminator 6 view .LVU583 + 2076 00b8 0123 movs r3, #1 + 2077 00ba 85F84630 strb r3, [r5, #70] + 2078 00be 0020 movs r0, #0 + 2079 00c0 A7E7 b .L135 + 2080 .cfi_endproc + 2081 .LFE154: + 2083 .section .text.HAL_TIMEx_OCN_Start_DMA,"ax",%progbits + 2084 .align 1 + 2085 .global HAL_TIMEx_OCN_Start_DMA + 2086 .syntax unified + 2087 .thumb + 2088 .thumb_func + 2089 .fpu fpv5-d16 + 2091 HAL_TIMEx_OCN_Start_DMA: + 2092 .LVL132: + 2093 .LFB155: + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 2094 .loc 1 873 1 is_stmt 1 view -0 + 2095 .cfi_startproc + 2096 @ args = 0, pretend = 0, frame = 0 + 2097 @ frame_needed = 0, uses_anonymous_args = 0 + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 2098 .loc 1 873 1 is_stmt 0 view .LVU585 + 2099 0000 38B5 push {r3, r4, r5, lr} + 2100 .LCFI18: + 2101 .cfi_def_cfa_offset 16 + 2102 .cfi_offset 3, -16 + 2103 .cfi_offset 4, -12 + 2104 .cfi_offset 5, -8 + 2105 .cfi_offset 14, -4 + 2106 0002 0446 mov r4, r0 + 2107 0004 9446 mov ip, r2 + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 2108 .loc 1 874 3 is_stmt 1 view .LVU586 + 2109 .LVL133: + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2110 .loc 1 875 3 view .LVU587 + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2111 .loc 1 878 3 view .LVU588 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2112 .loc 1 881 3 view .LVU589 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2113 .loc 1 881 46 is_stmt 0 view .LVU590 + 2114 0006 0D46 mov r5, r1 + 2115 0008 51BB cbnz r1, .L149 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2116 .loc 1 881 7 discriminator 1 view .LVU591 + 2117 000a 90F84400 ldrb r0, [r0, #68] @ zero_extendqisi2 + 2118 .LVL134: + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2119 .loc 1 881 7 discriminator 1 view .LVU592 + 2120 000e C0B2 uxtb r0, r0 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2121 .loc 1 881 46 discriminator 1 view .LVU593 + ARM GAS /tmp/cc7KL1Mv.s page 93 + + + 2122 0010 0228 cmp r0, #2 + 2123 0012 14BF ite ne + 2124 0014 0020 movne r0, #0 + 2125 0016 0120 moveq r0, #1 + 2126 .L150: + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2127 .loc 1 881 6 discriminator 12 view .LVU594 + 2128 0018 0028 cmp r0, #0 + 2129 001a 40F0E980 bne .L167 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2130 .loc 1 885 8 is_stmt 1 view .LVU595 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2131 .loc 1 885 51 is_stmt 0 view .LVU596 + 2132 001e 002D cmp r5, #0 + 2133 0020 3AD1 bne .L154 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2134 .loc 1 885 12 discriminator 1 view .LVU597 + 2135 0022 94F84420 ldrb r2, [r4, #68] @ zero_extendqisi2 + 2136 .LVL135: + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2137 .loc 1 885 12 discriminator 1 view .LVU598 + 2138 0026 D2B2 uxtb r2, r2 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2139 .loc 1 885 51 discriminator 1 view .LVU599 + 2140 0028 012A cmp r2, #1 + 2141 002a 14BF ite ne + 2142 002c 0022 movne r2, #0 + 2143 002e 0122 moveq r2, #1 + 2144 .L155: + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2145 .loc 1 885 11 discriminator 12 view .LVU600 + 2146 0030 002A cmp r2, #0 + 2147 0032 00F0DF80 beq .L168 + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2148 .loc 1 887 5 is_stmt 1 view .LVU601 + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2149 .loc 1 887 8 is_stmt 0 view .LVU602 + 2150 0036 002B cmp r3, #0 + 2151 0038 18BF it ne + 2152 003a BCF1000F cmpne ip, #0 + 2153 003e 00F0DB80 beq .L169 + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2154 .loc 1 893 7 is_stmt 1 view .LVU603 + 2155 0042 002D cmp r5, #0 + 2156 0044 44D1 bne .L158 + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2157 .loc 1 893 7 is_stmt 0 discriminator 1 view .LVU604 + 2158 0046 0222 movs r2, #2 + 2159 0048 84F84420 strb r2, [r4, #68] + 2160 .L159: + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2161 .loc 1 901 3 is_stmt 1 view .LVU605 + 2162 004c 042D cmp r5, #4 + 2163 004e 00F09480 beq .L162 + 2164 0052 082D cmp r5, #8 + 2165 0054 00F0A880 beq .L163 + 2166 0058 002D cmp r5, #0 + ARM GAS /tmp/cc7KL1Mv.s page 94 + + + 2167 005a 49D0 beq .L176 + 2168 005c 0120 movs r0, #1 + 2169 005e CAE0 b .L153 + 2170 .LVL136: + 2171 .L149: + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2172 .loc 1 881 46 is_stmt 0 discriminator 2 view .LVU606 + 2173 0060 0429 cmp r1, #4 + 2174 0062 09D0 beq .L177 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2175 .loc 1 881 46 discriminator 5 view .LVU607 + 2176 0064 0829 cmp r1, #8 + 2177 0066 0FD0 beq .L178 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2178 .loc 1 881 7 discriminator 8 view .LVU608 + 2179 0068 90F84700 ldrb r0, [r0, #71] @ zero_extendqisi2 + 2180 .LVL137: + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2181 .loc 1 881 7 discriminator 8 view .LVU609 + 2182 006c C0B2 uxtb r0, r0 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2183 .loc 1 881 46 discriminator 8 view .LVU610 + 2184 006e 0228 cmp r0, #2 + 2185 0070 14BF ite ne + 2186 0072 0020 movne r0, #0 + 2187 0074 0120 moveq r0, #1 + 2188 0076 CFE7 b .L150 + 2189 .LVL138: + 2190 .L177: + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2191 .loc 1 881 7 discriminator 4 view .LVU611 + 2192 0078 90F84500 ldrb r0, [r0, #69] @ zero_extendqisi2 + 2193 .LVL139: + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2194 .loc 1 881 7 discriminator 4 view .LVU612 + 2195 007c C0B2 uxtb r0, r0 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2196 .loc 1 881 46 discriminator 4 view .LVU613 + 2197 007e 0228 cmp r0, #2 + 2198 0080 14BF ite ne + 2199 0082 0020 movne r0, #0 + 2200 0084 0120 moveq r0, #1 + 2201 0086 C7E7 b .L150 + 2202 .LVL140: + 2203 .L178: + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2204 .loc 1 881 7 discriminator 7 view .LVU614 + 2205 0088 90F84600 ldrb r0, [r0, #70] @ zero_extendqisi2 + 2206 .LVL141: + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2207 .loc 1 881 7 discriminator 7 view .LVU615 + 2208 008c C0B2 uxtb r0, r0 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2209 .loc 1 881 46 discriminator 7 view .LVU616 + 2210 008e 0228 cmp r0, #2 + 2211 0090 14BF ite ne + 2212 0092 0020 movne r0, #0 + ARM GAS /tmp/cc7KL1Mv.s page 95 + + + 2213 0094 0120 moveq r0, #1 + 2214 0096 BFE7 b .L150 + 2215 .L154: + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2216 .loc 1 885 51 discriminator 2 view .LVU617 + 2217 0098 042D cmp r5, #4 + 2218 009a 09D0 beq .L179 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2219 .loc 1 885 51 discriminator 5 view .LVU618 + 2220 009c 082D cmp r5, #8 + 2221 009e 0FD0 beq .L180 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2222 .loc 1 885 12 discriminator 8 view .LVU619 + 2223 00a0 94F84720 ldrb r2, [r4, #71] @ zero_extendqisi2 + 2224 .LVL142: + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2225 .loc 1 885 12 discriminator 8 view .LVU620 + 2226 00a4 D2B2 uxtb r2, r2 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2227 .loc 1 885 51 discriminator 8 view .LVU621 + 2228 00a6 012A cmp r2, #1 + 2229 00a8 14BF ite ne + 2230 00aa 0022 movne r2, #0 + 2231 00ac 0122 moveq r2, #1 + 2232 00ae BFE7 b .L155 + 2233 .LVL143: + 2234 .L179: + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2235 .loc 1 885 12 discriminator 4 view .LVU622 + 2236 00b0 94F84520 ldrb r2, [r4, #69] @ zero_extendqisi2 + 2237 .LVL144: + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2238 .loc 1 885 12 discriminator 4 view .LVU623 + 2239 00b4 D2B2 uxtb r2, r2 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2240 .loc 1 885 51 discriminator 4 view .LVU624 + 2241 00b6 012A cmp r2, #1 + 2242 00b8 14BF ite ne + 2243 00ba 0022 movne r2, #0 + 2244 00bc 0122 moveq r2, #1 + 2245 00be B7E7 b .L155 + 2246 .LVL145: + 2247 .L180: + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2248 .loc 1 885 12 discriminator 7 view .LVU625 + 2249 00c0 94F84620 ldrb r2, [r4, #70] @ zero_extendqisi2 + 2250 .LVL146: + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2251 .loc 1 885 12 discriminator 7 view .LVU626 + 2252 00c4 D2B2 uxtb r2, r2 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2253 .loc 1 885 51 discriminator 7 view .LVU627 + 2254 00c6 012A cmp r2, #1 + 2255 00c8 14BF ite ne + 2256 00ca 0022 movne r2, #0 + 2257 00cc 0122 moveq r2, #1 + 2258 00ce AFE7 b .L155 + ARM GAS /tmp/cc7KL1Mv.s page 96 + + + 2259 .L158: + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2260 .loc 1 893 7 discriminator 2 view .LVU628 + 2261 00d0 042D cmp r5, #4 + 2262 00d2 05D0 beq .L181 + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2263 .loc 1 893 7 discriminator 4 view .LVU629 + 2264 00d4 082D cmp r5, #8 + 2265 00d6 07D0 beq .L182 + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2266 .loc 1 893 7 discriminator 7 view .LVU630 + 2267 00d8 0222 movs r2, #2 + 2268 00da 84F84720 strb r2, [r4, #71] + 2269 00de B5E7 b .L159 + 2270 .L181: + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2271 .loc 1 893 7 discriminator 3 view .LVU631 + 2272 00e0 0222 movs r2, #2 + 2273 00e2 84F84520 strb r2, [r4, #69] + 2274 00e6 B1E7 b .L159 + 2275 .L182: + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2276 .loc 1 893 7 discriminator 6 view .LVU632 + 2277 00e8 0222 movs r2, #2 + 2278 00ea 84F84620 strb r2, [r4, #70] + 2279 00ee ADE7 b .L159 + 2280 .L176: + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2281 .loc 1 906 7 is_stmt 1 view .LVU633 + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2282 .loc 1 906 17 is_stmt 0 view .LVU634 + 2283 00f0 626A ldr r2, [r4, #36] + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2284 .loc 1 906 52 view .LVU635 + 2285 00f2 4649 ldr r1, .L183 + 2286 .LVL147: + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2287 .loc 1 906 52 view .LVU636 + 2288 00f4 D163 str r1, [r2, #60] + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2289 .loc 1 907 7 is_stmt 1 view .LVU637 + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2290 .loc 1 907 17 is_stmt 0 view .LVU638 + 2291 00f6 626A ldr r2, [r4, #36] + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2292 .loc 1 907 56 view .LVU639 + 2293 00f8 4549 ldr r1, .L183+4 + 2294 00fa 1164 str r1, [r2, #64] + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2295 .loc 1 910 7 is_stmt 1 view .LVU640 + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2296 .loc 1 910 17 is_stmt 0 view .LVU641 + 2297 00fc 626A ldr r2, [r4, #36] + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2298 .loc 1 910 53 view .LVU642 + 2299 00fe 4549 ldr r1, .L183+8 + 2300 0100 D164 str r1, [r2, #76] + ARM GAS /tmp/cc7KL1Mv.s page 97 + + + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2301 .loc 1 913 7 is_stmt 1 view .LVU643 + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2302 .loc 1 913 88 is_stmt 0 view .LVU644 + 2303 0102 2268 ldr r2, [r4] + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2304 .loc 1 913 11 view .LVU645 + 2305 0104 3432 adds r2, r2, #52 + 2306 0106 6146 mov r1, ip + 2307 0108 606A ldr r0, [r4, #36] + 2308 010a FFF7FEFF bl HAL_DMA_Start_IT + 2309 .LVL148: + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2310 .loc 1 913 10 view .LVU646 + 2311 010e 0028 cmp r0, #0 + 2312 0110 74D1 bne .L171 + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2313 .loc 1 920 7 is_stmt 1 view .LVU647 + 2314 0112 2268 ldr r2, [r4] + 2315 0114 D368 ldr r3, [r2, #12] + 2316 0116 43F40073 orr r3, r3, #512 + 2317 011a D360 str r3, [r2, #12] + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2318 .loc 1 921 7 view .LVU648 + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2319 .loc 1 971 3 view .LVU649 + 2320 .L164: + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2321 .loc 1 974 5 view .LVU650 + 2322 011c 0422 movs r2, #4 + 2323 011e 2946 mov r1, r5 + 2324 0120 2068 ldr r0, [r4] + 2325 0122 FFF7FEFF bl TIM_CCxNChannelCmd + 2326 .LVL149: + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2327 .loc 1 977 5 view .LVU651 + 2328 0126 2268 ldr r2, [r4] + 2329 0128 536C ldr r3, [r2, #68] + 2330 012a 43F40043 orr r3, r3, #32768 + 2331 012e 5364 str r3, [r2, #68] + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2332 .loc 1 980 5 view .LVU652 + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2333 .loc 1 980 9 is_stmt 0 view .LVU653 + 2334 0130 2368 ldr r3, [r4] + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2335 .loc 1 980 8 view .LVU654 + 2336 0132 394A ldr r2, .L183+12 + 2337 0134 B3F1804F cmp r3, #1073741824 + 2338 0138 18BF it ne + 2339 013a 9342 cmpne r3, r2 + 2340 013c 4AD0 beq .L165 + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2341 .loc 1 980 9 discriminator 1 view .LVU655 + 2342 013e A2F57C42 sub r2, r2, #64512 + 2343 0142 9342 cmp r3, r2 + 2344 0144 46D0 beq .L165 + ARM GAS /tmp/cc7KL1Mv.s page 98 + + + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2345 .loc 1 980 9 discriminator 2 view .LVU656 + 2346 0146 02F58062 add r2, r2, #1024 + 2347 014a 9342 cmp r3, r2 + 2348 014c 42D0 beq .L165 + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2349 .loc 1 980 9 discriminator 3 view .LVU657 + 2350 014e 02F58062 add r2, r2, #1024 + 2351 0152 9342 cmp r3, r2 + 2352 0154 3ED0 beq .L165 + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2353 .loc 1 980 9 discriminator 4 view .LVU658 + 2354 0156 02F57842 add r2, r2, #63488 + 2355 015a 9342 cmp r3, r2 + 2356 015c 3AD0 beq .L165 + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2357 .loc 1 980 9 discriminator 5 view .LVU659 + 2358 015e 02F57052 add r2, r2, #15360 + 2359 0162 9342 cmp r3, r2 + 2360 0164 36D0 beq .L165 + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2361 .loc 1 980 9 discriminator 6 view .LVU660 + 2362 0166 A2F59432 sub r2, r2, #75776 + 2363 016a 9342 cmp r3, r2 + 2364 016c 32D0 beq .L165 + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2365 .loc 1 990 7 is_stmt 1 view .LVU661 + 2366 016e 1A68 ldr r2, [r3] + 2367 0170 42F00102 orr r2, r2, #1 + 2368 0174 1A60 str r2, [r3] + 2369 0176 0020 movs r0, #0 + 2370 0178 3DE0 b .L153 + 2371 .LVL150: + 2372 .L162: + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2373 .loc 1 927 7 view .LVU662 + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2374 .loc 1 927 17 is_stmt 0 view .LVU663 + 2375 017a A26A ldr r2, [r4, #40] + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2376 .loc 1 927 52 view .LVU664 + 2377 017c 2349 ldr r1, .L183 + 2378 .LVL151: + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2379 .loc 1 927 52 view .LVU665 + 2380 017e D163 str r1, [r2, #60] + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2381 .loc 1 928 7 is_stmt 1 view .LVU666 + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2382 .loc 1 928 17 is_stmt 0 view .LVU667 + 2383 0180 A26A ldr r2, [r4, #40] + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2384 .loc 1 928 56 view .LVU668 + 2385 0182 2349 ldr r1, .L183+4 + 2386 0184 1164 str r1, [r2, #64] + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2387 .loc 1 931 7 is_stmt 1 view .LVU669 + ARM GAS /tmp/cc7KL1Mv.s page 99 + + + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2388 .loc 1 931 17 is_stmt 0 view .LVU670 + 2389 0186 A26A ldr r2, [r4, #40] + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2390 .loc 1 931 53 view .LVU671 + 2391 0188 2249 ldr r1, .L183+8 + 2392 018a D164 str r1, [r2, #76] + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2393 .loc 1 934 7 is_stmt 1 view .LVU672 + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2394 .loc 1 934 88 is_stmt 0 view .LVU673 + 2395 018c 2268 ldr r2, [r4] + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2396 .loc 1 934 11 view .LVU674 + 2397 018e 3832 adds r2, r2, #56 + 2398 0190 6146 mov r1, ip + 2399 0192 A06A ldr r0, [r4, #40] + 2400 0194 FFF7FEFF bl HAL_DMA_Start_IT + 2401 .LVL152: + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2402 .loc 1 934 10 view .LVU675 + 2403 0198 0028 cmp r0, #0 + 2404 019a 31D1 bne .L172 + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2405 .loc 1 941 7 is_stmt 1 view .LVU676 + 2406 019c 2268 ldr r2, [r4] + 2407 019e D368 ldr r3, [r2, #12] + 2408 01a0 43F48063 orr r3, r3, #1024 + 2409 01a4 D360 str r3, [r2, #12] + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2410 .loc 1 942 7 view .LVU677 + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2411 .loc 1 971 3 view .LVU678 + 2412 01a6 B9E7 b .L164 + 2413 .LVL153: + 2414 .L163: + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2415 .loc 1 948 7 view .LVU679 + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2416 .loc 1 948 17 is_stmt 0 view .LVU680 + 2417 01a8 E26A ldr r2, [r4, #44] + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2418 .loc 1 948 52 view .LVU681 + 2419 01aa 1849 ldr r1, .L183 + 2420 .LVL154: + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 2421 .loc 1 948 52 view .LVU682 + 2422 01ac D163 str r1, [r2, #60] + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2423 .loc 1 949 7 is_stmt 1 view .LVU683 + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2424 .loc 1 949 17 is_stmt 0 view .LVU684 + 2425 01ae E26A ldr r2, [r4, #44] + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2426 .loc 1 949 56 view .LVU685 + 2427 01b0 1749 ldr r1, .L183+4 + 2428 01b2 1164 str r1, [r2, #64] + ARM GAS /tmp/cc7KL1Mv.s page 100 + + + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2429 .loc 1 952 7 is_stmt 1 view .LVU686 + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2430 .loc 1 952 17 is_stmt 0 view .LVU687 + 2431 01b4 E26A ldr r2, [r4, #44] + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2432 .loc 1 952 53 view .LVU688 + 2433 01b6 1749 ldr r1, .L183+8 + 2434 01b8 D164 str r1, [r2, #76] + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2435 .loc 1 955 7 is_stmt 1 view .LVU689 + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2436 .loc 1 955 88 is_stmt 0 view .LVU690 + 2437 01ba 2268 ldr r2, [r4] + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2438 .loc 1 955 11 view .LVU691 + 2439 01bc 3C32 adds r2, r2, #60 + 2440 01be 6146 mov r1, ip + 2441 01c0 E06A ldr r0, [r4, #44] + 2442 01c2 FFF7FEFF bl HAL_DMA_Start_IT + 2443 .LVL155: + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 2444 .loc 1 955 10 view .LVU692 + 2445 01c6 E8B9 cbnz r0, .L173 + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2446 .loc 1 962 7 is_stmt 1 view .LVU693 + 2447 01c8 2268 ldr r2, [r4] + 2448 01ca D368 ldr r3, [r2, #12] + 2449 01cc 43F40063 orr r3, r3, #2048 + 2450 01d0 D360 str r3, [r2, #12] + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2451 .loc 1 963 7 view .LVU694 + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2452 .loc 1 971 3 view .LVU695 + 2453 01d2 A3E7 b .L164 + 2454 .L165: + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 2455 .loc 1 982 7 view .LVU696 + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 2456 .loc 1 982 31 is_stmt 0 view .LVU697 + 2457 01d4 9968 ldr r1, [r3, #8] + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 2458 .loc 1 982 15 view .LVU698 + 2459 01d6 114A ldr r2, .L183+16 + 2460 01d8 0A40 ands r2, r2, r1 + 2461 .LVL156: + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2462 .loc 1 983 7 is_stmt 1 view .LVU699 + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2463 .loc 1 983 10 is_stmt 0 view .LVU700 + 2464 01da 062A cmp r2, #6 + 2465 01dc 18BF it ne + 2466 01de B2F5803F cmpne r2, #65536 + 2467 01e2 11D0 beq .L174 + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2468 .loc 1 985 9 is_stmt 1 view .LVU701 + 2469 01e4 1A68 ldr r2, [r3] + ARM GAS /tmp/cc7KL1Mv.s page 101 + + + 2470 .LVL157: + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2471 .loc 1 985 9 is_stmt 0 view .LVU702 + 2472 01e6 42F00102 orr r2, r2, #1 + 2473 01ea 1A60 str r2, [r3] + 2474 01ec 0020 movs r0, #0 + 2475 01ee 02E0 b .L153 + 2476 .LVL158: + 2477 .L167: + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2478 .loc 1 883 12 view .LVU703 + 2479 01f0 0220 movs r0, #2 + 2480 01f2 00E0 b .L153 + 2481 .LVL159: + 2482 .L168: + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2483 .loc 1 898 12 view .LVU704 + 2484 01f4 0120 movs r0, #1 + 2485 .LVL160: + 2486 .L153: + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2487 .loc 1 996 1 view .LVU705 + 2488 01f6 38BD pop {r3, r4, r5, pc} + 2489 .LVL161: + 2490 .L169: + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2491 .loc 1 889 14 view .LVU706 + 2492 01f8 0120 movs r0, #1 + 2493 01fa FCE7 b .L153 + 2494 .LVL162: + 2495 .L171: + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2496 .loc 1 917 16 view .LVU707 + 2497 01fc 0120 movs r0, #1 + 2498 01fe FAE7 b .L153 + 2499 .L172: + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2500 .loc 1 938 16 view .LVU708 + 2501 0200 0120 movs r0, #1 + 2502 0202 F8E7 b .L153 + 2503 .L173: + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2504 .loc 1 959 16 view .LVU709 + 2505 0204 0120 movs r0, #1 + 2506 0206 F6E7 b .L153 + 2507 .LVL163: + 2508 .L174: + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2509 .loc 1 959 16 view .LVU710 + 2510 0208 0020 movs r0, #0 + 2511 020a F4E7 b .L153 + 2512 .L184: + 2513 .align 2 + 2514 .L183: + 2515 020c 00000000 .word TIM_DMADelayPulseNCplt + 2516 0210 00000000 .word TIM_DMADelayPulseHalfCplt + 2517 0214 00000000 .word TIM_DMAErrorCCxN + ARM GAS /tmp/cc7KL1Mv.s page 102 + + + 2518 0218 00000140 .word 1073807360 + 2519 021c 07000100 .word 65543 + 2520 .cfi_endproc + 2521 .LFE155: + 2523 .section .text.HAL_TIMEx_OCN_Stop_DMA,"ax",%progbits + 2524 .align 1 + 2525 .global HAL_TIMEx_OCN_Stop_DMA + 2526 .syntax unified + 2527 .thumb + 2528 .thumb_func + 2529 .fpu fpv5-d16 + 2531 HAL_TIMEx_OCN_Stop_DMA: + 2532 .LVL164: + 2533 .LFB156: +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 2534 .loc 1 1010 1 is_stmt 1 view -0 + 2535 .cfi_startproc + 2536 @ args = 0, pretend = 0, frame = 0 + 2537 @ frame_needed = 0, uses_anonymous_args = 0 +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 2538 .loc 1 1010 1 is_stmt 0 view .LVU712 + 2539 0000 38B5 push {r3, r4, r5, lr} + 2540 .LCFI19: + 2541 .cfi_def_cfa_offset 16 + 2542 .cfi_offset 3, -16 + 2543 .cfi_offset 4, -12 + 2544 .cfi_offset 5, -8 + 2545 .cfi_offset 14, -4 + 2546 0002 0546 mov r5, r0 + 2547 0004 0C46 mov r4, r1 +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2548 .loc 1 1011 3 is_stmt 1 view .LVU713 + 2549 .LVL165: +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2550 .loc 1 1014 3 view .LVU714 +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2551 .loc 1 1016 3 view .LVU715 + 2552 0006 0429 cmp r1, #4 + 2553 0008 35D0 beq .L186 + 2554 000a 0829 cmp r1, #8 + 2555 000c 3CD0 beq .L187 + 2556 000e 09B1 cbz r1, .L197 + 2557 0010 0120 movs r0, #1 + 2558 .LVL166: + 2559 .L188: +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2560 .loc 1 1063 3 view .LVU716 +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2561 .loc 1 1064 1 is_stmt 0 view .LVU717 + 2562 0012 38BD pop {r3, r4, r5, pc} + 2563 .LVL167: + 2564 .L197: +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + 2565 .loc 1 1021 7 is_stmt 1 view .LVU718 + 2566 0014 0268 ldr r2, [r0] + 2567 0016 D368 ldr r3, [r2, #12] + 2568 0018 23F40073 bic r3, r3, #512 + ARM GAS /tmp/cc7KL1Mv.s page 103 + + + 2569 001c D360 str r3, [r2, #12] +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2570 .loc 1 1022 7 view .LVU719 +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2571 .loc 1 1022 13 is_stmt 0 view .LVU720 + 2572 001e 406A ldr r0, [r0, #36] + 2573 .LVL168: +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2574 .loc 1 1022 13 view .LVU721 + 2575 0020 FFF7FEFF bl HAL_DMA_Abort_IT + 2576 .LVL169: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2577 .loc 1 1023 7 is_stmt 1 view .LVU722 +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2578 .loc 1 1047 3 view .LVU723 + 2579 .L189: +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2580 .loc 1 1050 5 view .LVU724 + 2581 0024 0022 movs r2, #0 + 2582 0026 2146 mov r1, r4 + 2583 0028 2868 ldr r0, [r5] + 2584 002a FFF7FEFF bl TIM_CCxNChannelCmd + 2585 .LVL170: +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2586 .loc 1 1053 5 view .LVU725 +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2587 .loc 1 1053 5 view .LVU726 + 2588 002e 2B68 ldr r3, [r5] + 2589 0030 196A ldr r1, [r3, #32] + 2590 0032 41F21112 movw r2, #4369 + 2591 0036 1142 tst r1, r2 + 2592 0038 08D1 bne .L190 +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2593 .loc 1 1053 5 discriminator 1 view .LVU727 + 2594 003a 196A ldr r1, [r3, #32] + 2595 003c 40F24442 movw r2, #1092 + 2596 0040 1142 tst r1, r2 + 2597 0042 03D1 bne .L190 +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2598 .loc 1 1053 5 discriminator 3 view .LVU728 + 2599 0044 5A6C ldr r2, [r3, #68] + 2600 0046 22F40042 bic r2, r2, #32768 + 2601 004a 5A64 str r2, [r3, #68] + 2602 .L190: +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2603 .loc 1 1053 5 discriminator 5 view .LVU729 +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2604 .loc 1 1056 5 discriminator 5 view .LVU730 +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2605 .loc 1 1056 5 discriminator 5 view .LVU731 + 2606 004c 2B68 ldr r3, [r5] + 2607 004e 196A ldr r1, [r3, #32] + 2608 0050 41F21112 movw r2, #4369 + 2609 0054 1142 tst r1, r2 + 2610 0056 08D1 bne .L191 +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2611 .loc 1 1056 5 discriminator 1 view .LVU732 + ARM GAS /tmp/cc7KL1Mv.s page 104 + + + 2612 0058 196A ldr r1, [r3, #32] + 2613 005a 40F24442 movw r2, #1092 + 2614 005e 1142 tst r1, r2 + 2615 0060 03D1 bne .L191 +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2616 .loc 1 1056 5 discriminator 3 view .LVU733 + 2617 0062 1A68 ldr r2, [r3] + 2618 0064 22F00102 bic r2, r2, #1 + 2619 0068 1A60 str r2, [r3] + 2620 .L191: +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2621 .loc 1 1056 5 discriminator 5 view .LVU734 +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2622 .loc 1 1059 5 discriminator 5 view .LVU735 + 2623 006a B4B9 cbnz r4, .L192 +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2624 .loc 1 1059 5 is_stmt 0 discriminator 1 view .LVU736 + 2625 006c 0123 movs r3, #1 + 2626 006e 85F84430 strb r3, [r5, #68] + 2627 0072 0020 movs r0, #0 + 2628 0074 CDE7 b .L188 + 2629 .LVL171: + 2630 .L186: +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + 2631 .loc 1 1029 7 is_stmt 1 view .LVU737 + 2632 0076 0268 ldr r2, [r0] + 2633 0078 D368 ldr r3, [r2, #12] + 2634 007a 23F48063 bic r3, r3, #1024 + 2635 007e D360 str r3, [r2, #12] +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2636 .loc 1 1030 7 view .LVU738 +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2637 .loc 1 1030 13 is_stmt 0 view .LVU739 + 2638 0080 806A ldr r0, [r0, #40] + 2639 .LVL172: +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2640 .loc 1 1030 13 view .LVU740 + 2641 0082 FFF7FEFF bl HAL_DMA_Abort_IT + 2642 .LVL173: +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2643 .loc 1 1031 7 is_stmt 1 view .LVU741 +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2644 .loc 1 1047 3 view .LVU742 + 2645 0086 CDE7 b .L189 + 2646 .LVL174: + 2647 .L187: +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + 2648 .loc 1 1037 7 view .LVU743 + 2649 0088 0268 ldr r2, [r0] + 2650 008a D368 ldr r3, [r2, #12] + 2651 008c 23F40063 bic r3, r3, #2048 + 2652 0090 D360 str r3, [r2, #12] +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2653 .loc 1 1038 7 view .LVU744 +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2654 .loc 1 1038 13 is_stmt 0 view .LVU745 + 2655 0092 C06A ldr r0, [r0, #44] + ARM GAS /tmp/cc7KL1Mv.s page 105 + + + 2656 .LVL175: +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 2657 .loc 1 1038 13 view .LVU746 + 2658 0094 FFF7FEFF bl HAL_DMA_Abort_IT + 2659 .LVL176: +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2660 .loc 1 1039 7 is_stmt 1 view .LVU747 +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2661 .loc 1 1047 3 view .LVU748 + 2662 0098 C4E7 b .L189 + 2663 .L192: +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2664 .loc 1 1059 5 is_stmt 0 discriminator 2 view .LVU749 + 2665 009a 042C cmp r4, #4 + 2666 009c 06D0 beq .L198 +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2667 .loc 1 1059 5 discriminator 4 view .LVU750 + 2668 009e 082C cmp r4, #8 + 2669 00a0 09D0 beq .L199 +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2670 .loc 1 1059 5 discriminator 7 view .LVU751 + 2671 00a2 0123 movs r3, #1 + 2672 00a4 85F84730 strb r3, [r5, #71] + 2673 00a8 0020 movs r0, #0 + 2674 00aa B2E7 b .L188 + 2675 .L198: +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2676 .loc 1 1059 5 discriminator 3 view .LVU752 + 2677 00ac 0123 movs r3, #1 + 2678 00ae 85F84530 strb r3, [r5, #69] + 2679 00b2 0020 movs r0, #0 + 2680 00b4 ADE7 b .L188 + 2681 .L199: +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2682 .loc 1 1059 5 discriminator 6 view .LVU753 + 2683 00b6 0123 movs r3, #1 + 2684 00b8 85F84630 strb r3, [r5, #70] + 2685 00bc 0020 movs r0, #0 + 2686 00be A8E7 b .L188 + 2687 .cfi_endproc + 2688 .LFE156: + 2690 .section .text.HAL_TIMEx_PWMN_Start,"ax",%progbits + 2691 .align 1 + 2692 .global HAL_TIMEx_PWMN_Start + 2693 .syntax unified + 2694 .thumb + 2695 .thumb_func + 2696 .fpu fpv5-d16 + 2698 HAL_TIMEx_PWMN_Start: + 2699 .LVL177: + 2700 .LFB157: +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 2701 .loc 1 1100 1 is_stmt 1 view -0 + 2702 .cfi_startproc + 2703 @ args = 0, pretend = 0, frame = 0 + 2704 @ frame_needed = 0, uses_anonymous_args = 0 +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + ARM GAS /tmp/cc7KL1Mv.s page 106 + + + 2705 .loc 1 1100 1 is_stmt 0 view .LVU755 + 2706 0000 10B5 push {r4, lr} + 2707 .LCFI20: + 2708 .cfi_def_cfa_offset 8 + 2709 .cfi_offset 4, -8 + 2710 .cfi_offset 14, -4 + 2711 0002 0446 mov r4, r0 +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2712 .loc 1 1101 3 is_stmt 1 view .LVU756 +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2713 .loc 1 1104 3 view .LVU757 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2714 .loc 1 1107 3 view .LVU758 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2715 .loc 1 1107 46 is_stmt 0 view .LVU759 + 2716 0004 0846 mov r0, r1 + 2717 .LVL178: +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2718 .loc 1 1107 46 view .LVU760 + 2719 0006 0029 cmp r1, #0 + 2720 0008 3BD1 bne .L201 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2721 .loc 1 1107 7 discriminator 1 view .LVU761 + 2722 000a 94F84430 ldrb r3, [r4, #68] @ zero_extendqisi2 + 2723 000e DBB2 uxtb r3, r3 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2724 .loc 1 1107 46 discriminator 1 view .LVU762 + 2725 0010 013B subs r3, r3, #1 + 2726 0012 18BF it ne + 2727 0014 0123 movne r3, #1 + 2728 .L202: +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2729 .loc 1 1107 6 discriminator 12 view .LVU763 + 2730 0016 002B cmp r3, #0 + 2731 0018 6AD1 bne .L212 +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2732 .loc 1 1113 3 is_stmt 1 view .LVU764 + 2733 001a 0028 cmp r0, #0 + 2734 001c 4AD1 bne .L206 +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2735 .loc 1 1113 3 is_stmt 0 discriminator 1 view .LVU765 + 2736 001e 0223 movs r3, #2 + 2737 0020 84F84430 strb r3, [r4, #68] + 2738 .L207: +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2739 .loc 1 1116 3 is_stmt 1 view .LVU766 + 2740 0024 0422 movs r2, #4 + 2741 0026 0146 mov r1, r0 + 2742 .LVL179: +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2743 .loc 1 1116 3 is_stmt 0 view .LVU767 + 2744 0028 2068 ldr r0, [r4] + 2745 .LVL180: +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2746 .loc 1 1116 3 view .LVU768 + 2747 002a FFF7FEFF bl TIM_CCxNChannelCmd + 2748 .LVL181: + ARM GAS /tmp/cc7KL1Mv.s page 107 + + +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2749 .loc 1 1119 3 is_stmt 1 view .LVU769 + 2750 002e 2268 ldr r2, [r4] + 2751 0030 536C ldr r3, [r2, #68] + 2752 0032 43F40043 orr r3, r3, #32768 + 2753 0036 5364 str r3, [r2, #68] +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2754 .loc 1 1122 3 view .LVU770 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2755 .loc 1 1122 7 is_stmt 0 view .LVU771 + 2756 0038 2368 ldr r3, [r4] +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2757 .loc 1 1122 6 view .LVU772 + 2758 003a 2F4A ldr r2, .L219 + 2759 003c B3F1804F cmp r3, #1073741824 + 2760 0040 18BF it ne + 2761 0042 9342 cmpne r3, r2 + 2762 0044 46D0 beq .L210 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2763 .loc 1 1122 7 discriminator 1 view .LVU773 + 2764 0046 A2F57C42 sub r2, r2, #64512 + 2765 004a 9342 cmp r3, r2 + 2766 004c 42D0 beq .L210 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2767 .loc 1 1122 7 discriminator 2 view .LVU774 + 2768 004e 02F58062 add r2, r2, #1024 + 2769 0052 9342 cmp r3, r2 + 2770 0054 3ED0 beq .L210 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2771 .loc 1 1122 7 discriminator 3 view .LVU775 + 2772 0056 02F58062 add r2, r2, #1024 + 2773 005a 9342 cmp r3, r2 + 2774 005c 3AD0 beq .L210 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2775 .loc 1 1122 7 discriminator 4 view .LVU776 + 2776 005e 02F57842 add r2, r2, #63488 + 2777 0062 9342 cmp r3, r2 + 2778 0064 36D0 beq .L210 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2779 .loc 1 1122 7 discriminator 5 view .LVU777 + 2780 0066 02F57052 add r2, r2, #15360 + 2781 006a 9342 cmp r3, r2 + 2782 006c 32D0 beq .L210 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2783 .loc 1 1122 7 discriminator 6 view .LVU778 + 2784 006e A2F59432 sub r2, r2, #75776 + 2785 0072 9342 cmp r3, r2 + 2786 0074 2ED0 beq .L210 +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2787 .loc 1 1132 5 is_stmt 1 view .LVU779 + 2788 0076 1A68 ldr r2, [r3] + 2789 0078 42F00102 orr r2, r2, #1 + 2790 007c 1A60 str r2, [r3] +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2791 .loc 1 1136 10 is_stmt 0 view .LVU780 + 2792 007e 0020 movs r0, #0 + 2793 0080 37E0 b .L205 + ARM GAS /tmp/cc7KL1Mv.s page 108 + + + 2794 .LVL182: + 2795 .L201: +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2796 .loc 1 1107 46 discriminator 2 view .LVU781 + 2797 0082 0429 cmp r1, #4 + 2798 0084 08D0 beq .L215 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2799 .loc 1 1107 46 discriminator 5 view .LVU782 + 2800 0086 0829 cmp r1, #8 + 2801 0088 0DD0 beq .L216 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2802 .loc 1 1107 7 discriminator 8 view .LVU783 + 2803 008a 94F84730 ldrb r3, [r4, #71] @ zero_extendqisi2 + 2804 008e DBB2 uxtb r3, r3 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2805 .loc 1 1107 46 discriminator 8 view .LVU784 + 2806 0090 013B subs r3, r3, #1 + 2807 0092 18BF it ne + 2808 0094 0123 movne r3, #1 + 2809 0096 BEE7 b .L202 + 2810 .L215: +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2811 .loc 1 1107 7 discriminator 4 view .LVU785 + 2812 0098 94F84530 ldrb r3, [r4, #69] @ zero_extendqisi2 + 2813 009c DBB2 uxtb r3, r3 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2814 .loc 1 1107 46 discriminator 4 view .LVU786 + 2815 009e 013B subs r3, r3, #1 + 2816 00a0 18BF it ne + 2817 00a2 0123 movne r3, #1 + 2818 00a4 B7E7 b .L202 + 2819 .L216: +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2820 .loc 1 1107 7 discriminator 7 view .LVU787 + 2821 00a6 94F84630 ldrb r3, [r4, #70] @ zero_extendqisi2 + 2822 00aa DBB2 uxtb r3, r3 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2823 .loc 1 1107 46 discriminator 7 view .LVU788 + 2824 00ac 013B subs r3, r3, #1 + 2825 00ae 18BF it ne + 2826 00b0 0123 movne r3, #1 + 2827 00b2 B0E7 b .L202 + 2828 .L206: +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2829 .loc 1 1113 3 discriminator 2 view .LVU789 + 2830 00b4 0428 cmp r0, #4 + 2831 00b6 05D0 beq .L217 +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2832 .loc 1 1113 3 discriminator 4 view .LVU790 + 2833 00b8 0828 cmp r0, #8 + 2834 00ba 07D0 beq .L218 +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2835 .loc 1 1113 3 discriminator 7 view .LVU791 + 2836 00bc 0223 movs r3, #2 + 2837 00be 84F84730 strb r3, [r4, #71] + 2838 00c2 AFE7 b .L207 + 2839 .L217: + ARM GAS /tmp/cc7KL1Mv.s page 109 + + +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2840 .loc 1 1113 3 discriminator 3 view .LVU792 + 2841 00c4 0223 movs r3, #2 + 2842 00c6 84F84530 strb r3, [r4, #69] + 2843 00ca ABE7 b .L207 + 2844 .L218: +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2845 .loc 1 1113 3 discriminator 6 view .LVU793 + 2846 00cc 0223 movs r3, #2 + 2847 00ce 84F84630 strb r3, [r4, #70] + 2848 00d2 A7E7 b .L207 + 2849 .LVL183: + 2850 .L210: +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 2851 .loc 1 1124 5 is_stmt 1 view .LVU794 +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 2852 .loc 1 1124 29 is_stmt 0 view .LVU795 + 2853 00d4 9968 ldr r1, [r3, #8] +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 2854 .loc 1 1124 13 view .LVU796 + 2855 00d6 094A ldr r2, .L219+4 + 2856 00d8 0A40 ands r2, r2, r1 + 2857 .LVL184: +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2858 .loc 1 1125 5 is_stmt 1 view .LVU797 +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 2859 .loc 1 1125 8 is_stmt 0 view .LVU798 + 2860 00da 062A cmp r2, #6 + 2861 00dc 18BF it ne + 2862 00de B2F5803F cmpne r2, #65536 + 2863 00e2 07D0 beq .L213 +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2864 .loc 1 1127 7 is_stmt 1 view .LVU799 + 2865 00e4 1A68 ldr r2, [r3] + 2866 .LVL185: +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2867 .loc 1 1127 7 is_stmt 0 view .LVU800 + 2868 00e6 42F00102 orr r2, r2, #1 + 2869 00ea 1A60 str r2, [r3] +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2870 .loc 1 1136 10 view .LVU801 + 2871 00ec 0020 movs r0, #0 + 2872 00ee 00E0 b .L205 + 2873 .LVL186: + 2874 .L212: +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2875 .loc 1 1109 12 view .LVU802 + 2876 00f0 0120 movs r0, #1 + 2877 .LVL187: + 2878 .L205: +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2879 .loc 1 1137 1 view .LVU803 + 2880 00f2 10BD pop {r4, pc} + 2881 .LVL188: + 2882 .L213: +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2883 .loc 1 1136 10 view .LVU804 + ARM GAS /tmp/cc7KL1Mv.s page 110 + + + 2884 00f4 0020 movs r0, #0 + 2885 00f6 FCE7 b .L205 + 2886 .L220: + 2887 .align 2 + 2888 .L219: + 2889 00f8 00000140 .word 1073807360 + 2890 00fc 07000100 .word 65543 + 2891 .cfi_endproc + 2892 .LFE157: + 2894 .section .text.HAL_TIMEx_PWMN_Stop,"ax",%progbits + 2895 .align 1 + 2896 .global HAL_TIMEx_PWMN_Stop + 2897 .syntax unified + 2898 .thumb + 2899 .thumb_func + 2900 .fpu fpv5-d16 + 2902 HAL_TIMEx_PWMN_Stop: + 2903 .LVL189: + 2904 .LFB158: +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 2905 .loc 1 1150 1 is_stmt 1 view -0 + 2906 .cfi_startproc + 2907 @ args = 0, pretend = 0, frame = 0 + 2908 @ frame_needed = 0, uses_anonymous_args = 0 +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 2909 .loc 1 1150 1 is_stmt 0 view .LVU806 + 2910 0000 38B5 push {r3, r4, r5, lr} + 2911 .LCFI21: + 2912 .cfi_def_cfa_offset 16 + 2913 .cfi_offset 3, -16 + 2914 .cfi_offset 4, -12 + 2915 .cfi_offset 5, -8 + 2916 .cfi_offset 14, -4 + 2917 0002 0446 mov r4, r0 + 2918 0004 0D46 mov r5, r1 +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2919 .loc 1 1152 3 is_stmt 1 view .LVU807 +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2920 .loc 1 1155 3 view .LVU808 + 2921 0006 0022 movs r2, #0 + 2922 0008 0068 ldr r0, [r0] + 2923 .LVL190: +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2924 .loc 1 1155 3 is_stmt 0 view .LVU809 + 2925 000a FFF7FEFF bl TIM_CCxNChannelCmd + 2926 .LVL191: +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2927 .loc 1 1158 3 is_stmt 1 view .LVU810 +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2928 .loc 1 1158 3 view .LVU811 + 2929 000e 2368 ldr r3, [r4] + 2930 0010 196A ldr r1, [r3, #32] + 2931 0012 41F21112 movw r2, #4369 + 2932 0016 1142 tst r1, r2 + 2933 0018 08D1 bne .L222 +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2934 .loc 1 1158 3 discriminator 1 view .LVU812 + ARM GAS /tmp/cc7KL1Mv.s page 111 + + + 2935 001a 196A ldr r1, [r3, #32] + 2936 001c 40F24442 movw r2, #1092 + 2937 0020 1142 tst r1, r2 + 2938 0022 03D1 bne .L222 +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2939 .loc 1 1158 3 discriminator 3 view .LVU813 + 2940 0024 5A6C ldr r2, [r3, #68] + 2941 0026 22F40042 bic r2, r2, #32768 + 2942 002a 5A64 str r2, [r3, #68] + 2943 .L222: +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2944 .loc 1 1158 3 discriminator 5 view .LVU814 +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2945 .loc 1 1161 3 discriminator 5 view .LVU815 +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2946 .loc 1 1161 3 discriminator 5 view .LVU816 + 2947 002c 2368 ldr r3, [r4] + 2948 002e 196A ldr r1, [r3, #32] + 2949 0030 41F21112 movw r2, #4369 + 2950 0034 1142 tst r1, r2 + 2951 0036 08D1 bne .L223 +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2952 .loc 1 1161 3 discriminator 1 view .LVU817 + 2953 0038 196A ldr r1, [r3, #32] + 2954 003a 40F24442 movw r2, #1092 + 2955 003e 1142 tst r1, r2 + 2956 0040 03D1 bne .L223 +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2957 .loc 1 1161 3 discriminator 3 view .LVU818 + 2958 0042 1A68 ldr r2, [r3] + 2959 0044 22F00102 bic r2, r2, #1 + 2960 0048 1A60 str r2, [r3] + 2961 .L223: +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2962 .loc 1 1161 3 discriminator 5 view .LVU819 +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2963 .loc 1 1164 3 discriminator 5 view .LVU820 + 2964 004a 25B9 cbnz r5, .L224 +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2965 .loc 1 1164 3 is_stmt 0 discriminator 1 view .LVU821 + 2966 004c 0123 movs r3, #1 + 2967 004e 84F84430 strb r3, [r4, #68] + 2968 .L225: +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 2969 .loc 1 1167 3 is_stmt 1 view .LVU822 +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2970 .loc 1 1168 1 is_stmt 0 view .LVU823 + 2971 0052 0020 movs r0, #0 + 2972 0054 38BD pop {r3, r4, r5, pc} + 2973 .LVL192: + 2974 .L224: +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2975 .loc 1 1164 3 discriminator 2 view .LVU824 + 2976 0056 042D cmp r5, #4 + 2977 0058 05D0 beq .L229 +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2978 .loc 1 1164 3 discriminator 4 view .LVU825 + ARM GAS /tmp/cc7KL1Mv.s page 112 + + + 2979 005a 082D cmp r5, #8 + 2980 005c 07D0 beq .L230 +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2981 .loc 1 1164 3 discriminator 7 view .LVU826 + 2982 005e 0123 movs r3, #1 + 2983 0060 84F84730 strb r3, [r4, #71] + 2984 0064 F5E7 b .L225 + 2985 .L229: +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2986 .loc 1 1164 3 discriminator 3 view .LVU827 + 2987 0066 0123 movs r3, #1 + 2988 0068 84F84530 strb r3, [r4, #69] + 2989 006c F1E7 b .L225 + 2990 .L230: +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 2991 .loc 1 1164 3 discriminator 6 view .LVU828 + 2992 006e 0123 movs r3, #1 + 2993 0070 84F84630 strb r3, [r4, #70] + 2994 0074 EDE7 b .L225 + 2995 .cfi_endproc + 2996 .LFE158: + 2998 .section .text.HAL_TIMEx_PWMN_Start_IT,"ax",%progbits + 2999 .align 1 + 3000 .global HAL_TIMEx_PWMN_Start_IT + 3001 .syntax unified + 3002 .thumb + 3003 .thumb_func + 3004 .fpu fpv5-d16 + 3006 HAL_TIMEx_PWMN_Start_IT: + 3007 .LVL193: + 3008 .LFB159: +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 3009 .loc 1 1182 1 is_stmt 1 view -0 + 3010 .cfi_startproc + 3011 @ args = 0, pretend = 0, frame = 0 + 3012 @ frame_needed = 0, uses_anonymous_args = 0 +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 3013 .loc 1 1182 1 is_stmt 0 view .LVU830 + 3014 0000 10B5 push {r4, lr} + 3015 .LCFI22: + 3016 .cfi_def_cfa_offset 8 + 3017 .cfi_offset 4, -8 + 3018 .cfi_offset 14, -4 + 3019 0002 0446 mov r4, r0 +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 3020 .loc 1 1183 3 is_stmt 1 view .LVU831 + 3021 .LVL194: +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3022 .loc 1 1184 3 view .LVU832 +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3023 .loc 1 1187 3 view .LVU833 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3024 .loc 1 1190 3 view .LVU834 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3025 .loc 1 1190 46 is_stmt 0 view .LVU835 + 3026 0004 0846 mov r0, r1 + 3027 .LVL195: + ARM GAS /tmp/cc7KL1Mv.s page 113 + + +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3028 .loc 1 1190 46 view .LVU836 + 3029 0006 99B9 cbnz r1, .L232 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3030 .loc 1 1190 7 discriminator 1 view .LVU837 + 3031 0008 94F84430 ldrb r3, [r4, #68] @ zero_extendqisi2 + 3032 000c DBB2 uxtb r3, r3 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3033 .loc 1 1190 46 discriminator 1 view .LVU838 + 3034 000e 013B subs r3, r3, #1 + 3035 0010 18BF it ne + 3036 0012 0123 movne r3, #1 + 3037 .L233: +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3038 .loc 1 1190 6 discriminator 12 view .LVU839 + 3039 0014 002B cmp r3, #0 + 3040 0016 40F08780 bne .L246 +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3041 .loc 1 1196 3 is_stmt 1 view .LVU840 + 3042 001a 10BB cbnz r0, .L237 +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3043 .loc 1 1196 3 is_stmt 0 discriminator 1 view .LVU841 + 3044 001c 0223 movs r3, #2 + 3045 001e 84F84430 strb r3, [r4, #68] + 3046 .L238: +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3047 .loc 1 1198 3 is_stmt 1 view .LVU842 + 3048 0022 0428 cmp r0, #4 + 3049 0024 66D0 beq .L241 + 3050 0026 0828 cmp r0, #8 + 3051 0028 6AD0 beq .L242 + 3052 002a 50B3 cbz r0, .L250 + 3053 002c 0120 movs r0, #1 + 3054 .LVL196: + 3055 .L236: +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3056 .loc 1 1254 1 is_stmt 0 view .LVU843 + 3057 002e 10BD pop {r4, pc} + 3058 .LVL197: + 3059 .L232: +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3060 .loc 1 1190 46 discriminator 2 view .LVU844 + 3061 0030 0429 cmp r1, #4 + 3062 0032 08D0 beq .L251 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3063 .loc 1 1190 46 discriminator 5 view .LVU845 + 3064 0034 0829 cmp r1, #8 + 3065 0036 0DD0 beq .L252 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3066 .loc 1 1190 7 discriminator 8 view .LVU846 + 3067 0038 94F84730 ldrb r3, [r4, #71] @ zero_extendqisi2 + 3068 003c DBB2 uxtb r3, r3 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3069 .loc 1 1190 46 discriminator 8 view .LVU847 + 3070 003e 013B subs r3, r3, #1 + 3071 0040 18BF it ne + 3072 0042 0123 movne r3, #1 + ARM GAS /tmp/cc7KL1Mv.s page 114 + + + 3073 0044 E6E7 b .L233 + 3074 .L251: +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3075 .loc 1 1190 7 discriminator 4 view .LVU848 + 3076 0046 94F84530 ldrb r3, [r4, #69] @ zero_extendqisi2 + 3077 004a DBB2 uxtb r3, r3 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3078 .loc 1 1190 46 discriminator 4 view .LVU849 + 3079 004c 013B subs r3, r3, #1 + 3080 004e 18BF it ne + 3081 0050 0123 movne r3, #1 + 3082 0052 DFE7 b .L233 + 3083 .L252: +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3084 .loc 1 1190 7 discriminator 7 view .LVU850 + 3085 0054 94F84630 ldrb r3, [r4, #70] @ zero_extendqisi2 + 3086 0058 DBB2 uxtb r3, r3 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3087 .loc 1 1190 46 discriminator 7 view .LVU851 + 3088 005a 013B subs r3, r3, #1 + 3089 005c 18BF it ne + 3090 005e 0123 movne r3, #1 + 3091 0060 D8E7 b .L233 + 3092 .L237: +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3093 .loc 1 1196 3 discriminator 2 view .LVU852 + 3094 0062 0428 cmp r0, #4 + 3095 0064 05D0 beq .L253 +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3096 .loc 1 1196 3 discriminator 4 view .LVU853 + 3097 0066 0828 cmp r0, #8 + 3098 0068 07D0 beq .L254 +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3099 .loc 1 1196 3 discriminator 7 view .LVU854 + 3100 006a 0223 movs r3, #2 + 3101 006c 84F84730 strb r3, [r4, #71] + 3102 0070 D7E7 b .L238 + 3103 .L253: +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3104 .loc 1 1196 3 discriminator 3 view .LVU855 + 3105 0072 0223 movs r3, #2 + 3106 0074 84F84530 strb r3, [r4, #69] + 3107 0078 D3E7 b .L238 + 3108 .L254: +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3109 .loc 1 1196 3 discriminator 6 view .LVU856 + 3110 007a 0223 movs r3, #2 + 3111 007c 84F84630 strb r3, [r4, #70] + 3112 0080 CFE7 b .L238 + 3113 .L250: +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3114 .loc 1 1203 7 is_stmt 1 view .LVU857 + 3115 0082 2268 ldr r2, [r4] + 3116 0084 D368 ldr r3, [r2, #12] + 3117 0086 43F00203 orr r3, r3, #2 + 3118 008a D360 str r3, [r2, #12] +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + ARM GAS /tmp/cc7KL1Mv.s page 115 + + + 3119 .loc 1 1204 7 view .LVU858 +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3120 .loc 1 1226 3 view .LVU859 + 3121 .L243: +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3122 .loc 1 1229 5 view .LVU860 + 3123 008c 2268 ldr r2, [r4] + 3124 008e D368 ldr r3, [r2, #12] + 3125 0090 43F08003 orr r3, r3, #128 + 3126 0094 D360 str r3, [r2, #12] +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3127 .loc 1 1232 5 view .LVU861 + 3128 0096 0422 movs r2, #4 + 3129 0098 0146 mov r1, r0 + 3130 009a 2068 ldr r0, [r4] + 3131 .LVL198: +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3132 .loc 1 1232 5 is_stmt 0 view .LVU862 + 3133 009c FFF7FEFF bl TIM_CCxNChannelCmd + 3134 .LVL199: +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3135 .loc 1 1235 5 is_stmt 1 view .LVU863 + 3136 00a0 2268 ldr r2, [r4] + 3137 00a2 536C ldr r3, [r2, #68] + 3138 00a4 43F40043 orr r3, r3, #32768 + 3139 00a8 5364 str r3, [r2, #68] +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3140 .loc 1 1238 5 view .LVU864 +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3141 .loc 1 1238 9 is_stmt 0 view .LVU865 + 3142 00aa 2368 ldr r3, [r4] +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3143 .loc 1 1238 8 view .LVU866 + 3144 00ac 204A ldr r2, .L255 + 3145 00ae B3F1804F cmp r3, #1073741824 + 3146 00b2 18BF it ne + 3147 00b4 9342 cmpne r3, r2 + 3148 00b6 29D0 beq .L244 +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3149 .loc 1 1238 9 discriminator 1 view .LVU867 + 3150 00b8 A2F57C42 sub r2, r2, #64512 + 3151 00bc 9342 cmp r3, r2 + 3152 00be 25D0 beq .L244 +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3153 .loc 1 1238 9 discriminator 2 view .LVU868 + 3154 00c0 02F58062 add r2, r2, #1024 + 3155 00c4 9342 cmp r3, r2 + 3156 00c6 21D0 beq .L244 +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3157 .loc 1 1238 9 discriminator 3 view .LVU869 + 3158 00c8 02F58062 add r2, r2, #1024 + 3159 00cc 9342 cmp r3, r2 + 3160 00ce 1DD0 beq .L244 +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3161 .loc 1 1238 9 discriminator 4 view .LVU870 + 3162 00d0 02F57842 add r2, r2, #63488 + 3163 00d4 9342 cmp r3, r2 + ARM GAS /tmp/cc7KL1Mv.s page 116 + + + 3164 00d6 19D0 beq .L244 +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3165 .loc 1 1238 9 discriminator 5 view .LVU871 + 3166 00d8 02F57052 add r2, r2, #15360 + 3167 00dc 9342 cmp r3, r2 + 3168 00de 15D0 beq .L244 +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3169 .loc 1 1238 9 discriminator 6 view .LVU872 + 3170 00e0 A2F59432 sub r2, r2, #75776 + 3171 00e4 9342 cmp r3, r2 + 3172 00e6 11D0 beq .L244 +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3173 .loc 1 1248 7 is_stmt 1 view .LVU873 + 3174 00e8 1A68 ldr r2, [r3] + 3175 00ea 42F00102 orr r2, r2, #1 + 3176 00ee 1A60 str r2, [r3] + 3177 00f0 0020 movs r0, #0 + 3178 00f2 9CE7 b .L236 + 3179 .LVL200: + 3180 .L241: +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3181 .loc 1 1210 7 view .LVU874 + 3182 00f4 2268 ldr r2, [r4] + 3183 00f6 D368 ldr r3, [r2, #12] + 3184 00f8 43F00403 orr r3, r3, #4 + 3185 00fc D360 str r3, [r2, #12] +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3186 .loc 1 1211 7 view .LVU875 +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3187 .loc 1 1226 3 view .LVU876 + 3188 00fe C5E7 b .L243 + 3189 .L242: +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3190 .loc 1 1217 7 view .LVU877 + 3191 0100 2268 ldr r2, [r4] + 3192 0102 D368 ldr r3, [r2, #12] + 3193 0104 43F00803 orr r3, r3, #8 + 3194 0108 D360 str r3, [r2, #12] +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3195 .loc 1 1218 7 view .LVU878 +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3196 .loc 1 1226 3 view .LVU879 + 3197 010a BFE7 b .L243 + 3198 .LVL201: + 3199 .L244: +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 3200 .loc 1 1240 7 view .LVU880 +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 3201 .loc 1 1240 31 is_stmt 0 view .LVU881 + 3202 010c 9968 ldr r1, [r3, #8] +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 3203 .loc 1 1240 15 view .LVU882 + 3204 010e 094A ldr r2, .L255+4 + 3205 0110 0A40 ands r2, r2, r1 + 3206 .LVL202: +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3207 .loc 1 1241 7 is_stmt 1 view .LVU883 + ARM GAS /tmp/cc7KL1Mv.s page 117 + + +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3208 .loc 1 1241 10 is_stmt 0 view .LVU884 + 3209 0112 062A cmp r2, #6 + 3210 0114 18BF it ne + 3211 0116 B2F5803F cmpne r2, #65536 + 3212 011a 07D0 beq .L248 +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3213 .loc 1 1243 9 is_stmt 1 view .LVU885 + 3214 011c 1A68 ldr r2, [r3] + 3215 .LVL203: +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3216 .loc 1 1243 9 is_stmt 0 view .LVU886 + 3217 011e 42F00102 orr r2, r2, #1 + 3218 0122 1A60 str r2, [r3] + 3219 0124 0020 movs r0, #0 + 3220 0126 82E7 b .L236 + 3221 .LVL204: + 3222 .L246: +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3223 .loc 1 1192 12 view .LVU887 + 3224 0128 0120 movs r0, #1 + 3225 .LVL205: +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3226 .loc 1 1192 12 view .LVU888 + 3227 012a 80E7 b .L236 + 3228 .LVL206: + 3229 .L248: +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3230 .loc 1 1192 12 view .LVU889 + 3231 012c 0020 movs r0, #0 + 3232 012e 7EE7 b .L236 + 3233 .L256: + 3234 .align 2 + 3235 .L255: + 3236 0130 00000140 .word 1073807360 + 3237 0134 07000100 .word 65543 + 3238 .cfi_endproc + 3239 .LFE159: + 3241 .section .text.HAL_TIMEx_PWMN_Stop_IT,"ax",%progbits + 3242 .align 1 + 3243 .global HAL_TIMEx_PWMN_Stop_IT + 3244 .syntax unified + 3245 .thumb + 3246 .thumb_func + 3247 .fpu fpv5-d16 + 3249 HAL_TIMEx_PWMN_Stop_IT: + 3250 .LVL207: + 3251 .LFB160: +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 3252 .loc 1 1268 1 is_stmt 1 view -0 + 3253 .cfi_startproc + 3254 @ args = 0, pretend = 0, frame = 0 + 3255 @ frame_needed = 0, uses_anonymous_args = 0 +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 3256 .loc 1 1268 1 is_stmt 0 view .LVU891 + 3257 0000 38B5 push {r3, r4, r5, lr} + 3258 .LCFI23: + ARM GAS /tmp/cc7KL1Mv.s page 118 + + + 3259 .cfi_def_cfa_offset 16 + 3260 .cfi_offset 3, -16 + 3261 .cfi_offset 4, -12 + 3262 .cfi_offset 5, -8 + 3263 .cfi_offset 14, -4 + 3264 0002 0546 mov r5, r0 + 3265 0004 0C46 mov r4, r1 +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpccer; + 3266 .loc 1 1269 3 is_stmt 1 view .LVU892 + 3267 .LVL208: +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3268 .loc 1 1270 3 view .LVU893 +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3269 .loc 1 1273 3 view .LVU894 +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3270 .loc 1 1275 3 view .LVU895 + 3271 0006 0429 cmp r1, #4 + 3272 0008 3CD0 beq .L258 + 3273 000a 0829 cmp r1, #8 + 3274 000c 40D0 beq .L259 + 3275 000e 09B1 cbz r1, .L270 + 3276 0010 0120 movs r0, #1 + 3277 .LVL209: + 3278 .L260: +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3279 .loc 1 1326 3 view .LVU896 +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3280 .loc 1 1327 1 is_stmt 0 view .LVU897 + 3281 0012 38BD pop {r3, r4, r5, pc} + 3282 .LVL210: + 3283 .L270: +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3284 .loc 1 1280 7 is_stmt 1 view .LVU898 + 3285 0014 0268 ldr r2, [r0] + 3286 0016 D368 ldr r3, [r2, #12] + 3287 0018 23F00203 bic r3, r3, #2 + 3288 001c D360 str r3, [r2, #12] +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3289 .loc 1 1281 7 view .LVU899 +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3290 .loc 1 1303 3 view .LVU900 + 3291 .L261: +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3292 .loc 1 1306 5 view .LVU901 + 3293 001e 0022 movs r2, #0 + 3294 0020 2146 mov r1, r4 + 3295 .LVL211: +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3296 .loc 1 1306 5 is_stmt 0 view .LVU902 + 3297 0022 2868 ldr r0, [r5] + 3298 .LVL212: +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3299 .loc 1 1306 5 view .LVU903 + 3300 0024 FFF7FEFF bl TIM_CCxNChannelCmd + 3301 .LVL213: +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET) + 3302 .loc 1 1309 5 is_stmt 1 view .LVU904 + ARM GAS /tmp/cc7KL1Mv.s page 119 + + +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET) + 3303 .loc 1 1309 19 is_stmt 0 view .LVU905 + 3304 0028 2B68 ldr r3, [r5] +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if ((tmpccer & TIM_CCER_CCxNE_MASK) == (uint32_t)RESET) + 3305 .loc 1 1309 13 view .LVU906 + 3306 002a 196A ldr r1, [r3, #32] + 3307 .LVL214: +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3308 .loc 1 1310 5 is_stmt 1 view .LVU907 +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3309 .loc 1 1310 8 is_stmt 0 view .LVU908 + 3310 002c 40F24442 movw r2, #1092 + 3311 0030 1142 tst r1, r2 + 3312 0032 03D1 bne .L262 +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3313 .loc 1 1312 7 is_stmt 1 view .LVU909 + 3314 0034 DA68 ldr r2, [r3, #12] + 3315 0036 22F08002 bic r2, r2, #128 + 3316 003a DA60 str r2, [r3, #12] + 3317 .L262: +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3318 .loc 1 1316 5 view .LVU910 +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3319 .loc 1 1316 5 view .LVU911 + 3320 003c 2B68 ldr r3, [r5] + 3321 003e 196A ldr r1, [r3, #32] + 3322 .LVL215: +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3323 .loc 1 1316 5 is_stmt 0 view .LVU912 + 3324 0040 41F21112 movw r2, #4369 + 3325 0044 1142 tst r1, r2 + 3326 0046 08D1 bne .L263 +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3327 .loc 1 1316 5 is_stmt 1 discriminator 1 view .LVU913 + 3328 0048 196A ldr r1, [r3, #32] + 3329 004a 40F24442 movw r2, #1092 + 3330 004e 1142 tst r1, r2 + 3331 0050 03D1 bne .L263 +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3332 .loc 1 1316 5 discriminator 3 view .LVU914 + 3333 0052 5A6C ldr r2, [r3, #68] + 3334 0054 22F40042 bic r2, r2, #32768 + 3335 0058 5A64 str r2, [r3, #68] + 3336 .L263: +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3337 .loc 1 1316 5 discriminator 5 view .LVU915 +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3338 .loc 1 1319 5 discriminator 5 view .LVU916 +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3339 .loc 1 1319 5 discriminator 5 view .LVU917 + 3340 005a 2B68 ldr r3, [r5] + 3341 005c 196A ldr r1, [r3, #32] + 3342 005e 41F21112 movw r2, #4369 + 3343 0062 1142 tst r1, r2 + 3344 0064 08D1 bne .L264 +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3345 .loc 1 1319 5 discriminator 1 view .LVU918 + ARM GAS /tmp/cc7KL1Mv.s page 120 + + + 3346 0066 196A ldr r1, [r3, #32] + 3347 0068 40F24442 movw r2, #1092 + 3348 006c 1142 tst r1, r2 + 3349 006e 03D1 bne .L264 +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3350 .loc 1 1319 5 discriminator 3 view .LVU919 + 3351 0070 1A68 ldr r2, [r3] + 3352 0072 22F00102 bic r2, r2, #1 + 3353 0076 1A60 str r2, [r3] + 3354 .L264: +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3355 .loc 1 1319 5 discriminator 5 view .LVU920 +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3356 .loc 1 1322 5 discriminator 5 view .LVU921 + 3357 0078 84B9 cbnz r4, .L265 +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3358 .loc 1 1322 5 is_stmt 0 discriminator 1 view .LVU922 + 3359 007a 0123 movs r3, #1 + 3360 007c 85F84430 strb r3, [r5, #68] + 3361 0080 0020 movs r0, #0 + 3362 0082 C6E7 b .L260 + 3363 .LVL216: + 3364 .L258: +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3365 .loc 1 1287 7 is_stmt 1 view .LVU923 + 3366 0084 0268 ldr r2, [r0] + 3367 0086 D368 ldr r3, [r2, #12] + 3368 0088 23F00403 bic r3, r3, #4 + 3369 008c D360 str r3, [r2, #12] +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3370 .loc 1 1288 7 view .LVU924 +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3371 .loc 1 1303 3 view .LVU925 + 3372 008e C6E7 b .L261 + 3373 .L259: +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3374 .loc 1 1294 7 view .LVU926 + 3375 0090 0268 ldr r2, [r0] + 3376 0092 D368 ldr r3, [r2, #12] + 3377 0094 23F00803 bic r3, r3, #8 + 3378 0098 D360 str r3, [r2, #12] +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3379 .loc 1 1295 7 view .LVU927 +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3380 .loc 1 1303 3 view .LVU928 + 3381 009a C0E7 b .L261 + 3382 .LVL217: + 3383 .L265: +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3384 .loc 1 1322 5 is_stmt 0 discriminator 2 view .LVU929 + 3385 009c 042C cmp r4, #4 + 3386 009e 06D0 beq .L271 +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3387 .loc 1 1322 5 discriminator 4 view .LVU930 + 3388 00a0 082C cmp r4, #8 + 3389 00a2 09D0 beq .L272 +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + ARM GAS /tmp/cc7KL1Mv.s page 121 + + + 3390 .loc 1 1322 5 discriminator 7 view .LVU931 + 3391 00a4 0123 movs r3, #1 + 3392 00a6 85F84730 strb r3, [r5, #71] + 3393 00aa 0020 movs r0, #0 + 3394 00ac B1E7 b .L260 + 3395 .L271: +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3396 .loc 1 1322 5 discriminator 3 view .LVU932 + 3397 00ae 0123 movs r3, #1 + 3398 00b0 85F84530 strb r3, [r5, #69] + 3399 00b4 0020 movs r0, #0 + 3400 00b6 ACE7 b .L260 + 3401 .L272: +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3402 .loc 1 1322 5 discriminator 6 view .LVU933 + 3403 00b8 0123 movs r3, #1 + 3404 00ba 85F84630 strb r3, [r5, #70] + 3405 00be 0020 movs r0, #0 + 3406 00c0 A7E7 b .L260 + 3407 .cfi_endproc + 3408 .LFE160: + 3410 .section .text.HAL_TIMEx_PWMN_Start_DMA,"ax",%progbits + 3411 .align 1 + 3412 .global HAL_TIMEx_PWMN_Start_DMA + 3413 .syntax unified + 3414 .thumb + 3415 .thumb_func + 3416 .fpu fpv5-d16 + 3418 HAL_TIMEx_PWMN_Start_DMA: + 3419 .LVL218: + 3420 .LFB161: +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 3421 .loc 1 1344 1 is_stmt 1 view -0 + 3422 .cfi_startproc + 3423 @ args = 0, pretend = 0, frame = 0 + 3424 @ frame_needed = 0, uses_anonymous_args = 0 +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 3425 .loc 1 1344 1 is_stmt 0 view .LVU935 + 3426 0000 38B5 push {r3, r4, r5, lr} + 3427 .LCFI24: + 3428 .cfi_def_cfa_offset 16 + 3429 .cfi_offset 3, -16 + 3430 .cfi_offset 4, -12 + 3431 .cfi_offset 5, -8 + 3432 .cfi_offset 14, -4 + 3433 0002 0446 mov r4, r0 + 3434 0004 9446 mov ip, r2 +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 3435 .loc 1 1345 3 is_stmt 1 view .LVU936 + 3436 .LVL219: +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3437 .loc 1 1346 3 view .LVU937 +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3438 .loc 1 1349 3 view .LVU938 +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3439 .loc 1 1352 3 view .LVU939 +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + ARM GAS /tmp/cc7KL1Mv.s page 122 + + + 3440 .loc 1 1352 46 is_stmt 0 view .LVU940 + 3441 0006 0D46 mov r5, r1 + 3442 0008 51BB cbnz r1, .L274 +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3443 .loc 1 1352 7 discriminator 1 view .LVU941 + 3444 000a 90F84400 ldrb r0, [r0, #68] @ zero_extendqisi2 + 3445 .LVL220: +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3446 .loc 1 1352 7 discriminator 1 view .LVU942 + 3447 000e C0B2 uxtb r0, r0 +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3448 .loc 1 1352 46 discriminator 1 view .LVU943 + 3449 0010 0228 cmp r0, #2 + 3450 0012 14BF ite ne + 3451 0014 0020 movne r0, #0 + 3452 0016 0120 moveq r0, #1 + 3453 .L275: +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3454 .loc 1 1352 6 discriminator 12 view .LVU944 + 3455 0018 0028 cmp r0, #0 + 3456 001a 40F0E980 bne .L292 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3457 .loc 1 1356 8 is_stmt 1 view .LVU945 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3458 .loc 1 1356 51 is_stmt 0 view .LVU946 + 3459 001e 002D cmp r5, #0 + 3460 0020 3AD1 bne .L279 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3461 .loc 1 1356 12 discriminator 1 view .LVU947 + 3462 0022 94F84420 ldrb r2, [r4, #68] @ zero_extendqisi2 + 3463 .LVL221: +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3464 .loc 1 1356 12 discriminator 1 view .LVU948 + 3465 0026 D2B2 uxtb r2, r2 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3466 .loc 1 1356 51 discriminator 1 view .LVU949 + 3467 0028 012A cmp r2, #1 + 3468 002a 14BF ite ne + 3469 002c 0022 movne r2, #0 + 3470 002e 0122 moveq r2, #1 + 3471 .L280: +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3472 .loc 1 1356 11 discriminator 12 view .LVU950 + 3473 0030 002A cmp r2, #0 + 3474 0032 00F0DF80 beq .L293 +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3475 .loc 1 1358 5 is_stmt 1 view .LVU951 +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3476 .loc 1 1358 8 is_stmt 0 view .LVU952 + 3477 0036 002B cmp r3, #0 + 3478 0038 18BF it ne + 3479 003a BCF1000F cmpne ip, #0 + 3480 003e 00F0DB80 beq .L294 +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3481 .loc 1 1364 7 is_stmt 1 view .LVU953 + 3482 0042 002D cmp r5, #0 + 3483 0044 44D1 bne .L283 + ARM GAS /tmp/cc7KL1Mv.s page 123 + + +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3484 .loc 1 1364 7 is_stmt 0 discriminator 1 view .LVU954 + 3485 0046 0222 movs r2, #2 + 3486 0048 84F84420 strb r2, [r4, #68] + 3487 .L284: +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3488 .loc 1 1372 3 is_stmt 1 view .LVU955 + 3489 004c 042D cmp r5, #4 + 3490 004e 00F09480 beq .L287 + 3491 0052 082D cmp r5, #8 + 3492 0054 00F0A880 beq .L288 + 3493 0058 002D cmp r5, #0 + 3494 005a 49D0 beq .L301 + 3495 005c 0120 movs r0, #1 + 3496 005e CAE0 b .L278 + 3497 .LVL222: + 3498 .L274: +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3499 .loc 1 1352 46 is_stmt 0 discriminator 2 view .LVU956 + 3500 0060 0429 cmp r1, #4 + 3501 0062 09D0 beq .L302 +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3502 .loc 1 1352 46 discriminator 5 view .LVU957 + 3503 0064 0829 cmp r1, #8 + 3504 0066 0FD0 beq .L303 +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3505 .loc 1 1352 7 discriminator 8 view .LVU958 + 3506 0068 90F84700 ldrb r0, [r0, #71] @ zero_extendqisi2 + 3507 .LVL223: +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3508 .loc 1 1352 7 discriminator 8 view .LVU959 + 3509 006c C0B2 uxtb r0, r0 +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3510 .loc 1 1352 46 discriminator 8 view .LVU960 + 3511 006e 0228 cmp r0, #2 + 3512 0070 14BF ite ne + 3513 0072 0020 movne r0, #0 + 3514 0074 0120 moveq r0, #1 + 3515 0076 CFE7 b .L275 + 3516 .LVL224: + 3517 .L302: +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3518 .loc 1 1352 7 discriminator 4 view .LVU961 + 3519 0078 90F84500 ldrb r0, [r0, #69] @ zero_extendqisi2 + 3520 .LVL225: +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3521 .loc 1 1352 7 discriminator 4 view .LVU962 + 3522 007c C0B2 uxtb r0, r0 +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3523 .loc 1 1352 46 discriminator 4 view .LVU963 + 3524 007e 0228 cmp r0, #2 + 3525 0080 14BF ite ne + 3526 0082 0020 movne r0, #0 + 3527 0084 0120 moveq r0, #1 + 3528 0086 C7E7 b .L275 + 3529 .LVL226: + 3530 .L303: + ARM GAS /tmp/cc7KL1Mv.s page 124 + + +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3531 .loc 1 1352 7 discriminator 7 view .LVU964 + 3532 0088 90F84600 ldrb r0, [r0, #70] @ zero_extendqisi2 + 3533 .LVL227: +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3534 .loc 1 1352 7 discriminator 7 view .LVU965 + 3535 008c C0B2 uxtb r0, r0 +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3536 .loc 1 1352 46 discriminator 7 view .LVU966 + 3537 008e 0228 cmp r0, #2 + 3538 0090 14BF ite ne + 3539 0092 0020 movne r0, #0 + 3540 0094 0120 moveq r0, #1 + 3541 0096 BFE7 b .L275 + 3542 .L279: +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3543 .loc 1 1356 51 discriminator 2 view .LVU967 + 3544 0098 042D cmp r5, #4 + 3545 009a 09D0 beq .L304 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3546 .loc 1 1356 51 discriminator 5 view .LVU968 + 3547 009c 082D cmp r5, #8 + 3548 009e 0FD0 beq .L305 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3549 .loc 1 1356 12 discriminator 8 view .LVU969 + 3550 00a0 94F84720 ldrb r2, [r4, #71] @ zero_extendqisi2 + 3551 .LVL228: +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3552 .loc 1 1356 12 discriminator 8 view .LVU970 + 3553 00a4 D2B2 uxtb r2, r2 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3554 .loc 1 1356 51 discriminator 8 view .LVU971 + 3555 00a6 012A cmp r2, #1 + 3556 00a8 14BF ite ne + 3557 00aa 0022 movne r2, #0 + 3558 00ac 0122 moveq r2, #1 + 3559 00ae BFE7 b .L280 + 3560 .LVL229: + 3561 .L304: +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3562 .loc 1 1356 12 discriminator 4 view .LVU972 + 3563 00b0 94F84520 ldrb r2, [r4, #69] @ zero_extendqisi2 + 3564 .LVL230: +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3565 .loc 1 1356 12 discriminator 4 view .LVU973 + 3566 00b4 D2B2 uxtb r2, r2 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3567 .loc 1 1356 51 discriminator 4 view .LVU974 + 3568 00b6 012A cmp r2, #1 + 3569 00b8 14BF ite ne + 3570 00ba 0022 movne r2, #0 + 3571 00bc 0122 moveq r2, #1 + 3572 00be B7E7 b .L280 + 3573 .LVL231: + 3574 .L305: +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3575 .loc 1 1356 12 discriminator 7 view .LVU975 + ARM GAS /tmp/cc7KL1Mv.s page 125 + + + 3576 00c0 94F84620 ldrb r2, [r4, #70] @ zero_extendqisi2 + 3577 .LVL232: +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3578 .loc 1 1356 12 discriminator 7 view .LVU976 + 3579 00c4 D2B2 uxtb r2, r2 +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3580 .loc 1 1356 51 discriminator 7 view .LVU977 + 3581 00c6 012A cmp r2, #1 + 3582 00c8 14BF ite ne + 3583 00ca 0022 movne r2, #0 + 3584 00cc 0122 moveq r2, #1 + 3585 00ce AFE7 b .L280 + 3586 .L283: +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3587 .loc 1 1364 7 discriminator 2 view .LVU978 + 3588 00d0 042D cmp r5, #4 + 3589 00d2 05D0 beq .L306 +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3590 .loc 1 1364 7 discriminator 4 view .LVU979 + 3591 00d4 082D cmp r5, #8 + 3592 00d6 07D0 beq .L307 +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3593 .loc 1 1364 7 discriminator 7 view .LVU980 + 3594 00d8 0222 movs r2, #2 + 3595 00da 84F84720 strb r2, [r4, #71] + 3596 00de B5E7 b .L284 + 3597 .L306: +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3598 .loc 1 1364 7 discriminator 3 view .LVU981 + 3599 00e0 0222 movs r2, #2 + 3600 00e2 84F84520 strb r2, [r4, #69] + 3601 00e6 B1E7 b .L284 + 3602 .L307: +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3603 .loc 1 1364 7 discriminator 6 view .LVU982 + 3604 00e8 0222 movs r2, #2 + 3605 00ea 84F84620 strb r2, [r4, #70] + 3606 00ee ADE7 b .L284 + 3607 .L301: +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3608 .loc 1 1377 7 is_stmt 1 view .LVU983 +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3609 .loc 1 1377 17 is_stmt 0 view .LVU984 + 3610 00f0 626A ldr r2, [r4, #36] +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3611 .loc 1 1377 52 view .LVU985 + 3612 00f2 4649 ldr r1, .L308 + 3613 .LVL233: +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC1]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3614 .loc 1 1377 52 view .LVU986 + 3615 00f4 D163 str r1, [r2, #60] +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3616 .loc 1 1378 7 is_stmt 1 view .LVU987 +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3617 .loc 1 1378 17 is_stmt 0 view .LVU988 + 3618 00f6 626A ldr r2, [r4, #36] +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 126 + + + 3619 .loc 1 1378 56 view .LVU989 + 3620 00f8 4549 ldr r1, .L308+4 + 3621 00fa 1164 str r1, [r2, #64] +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3622 .loc 1 1381 7 is_stmt 1 view .LVU990 +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3623 .loc 1 1381 17 is_stmt 0 view .LVU991 + 3624 00fc 626A ldr r2, [r4, #36] +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3625 .loc 1 1381 53 view .LVU992 + 3626 00fe 4549 ldr r1, .L308+8 + 3627 0100 D164 str r1, [r2, #76] +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3628 .loc 1 1384 7 is_stmt 1 view .LVU993 +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3629 .loc 1 1384 88 is_stmt 0 view .LVU994 + 3630 0102 2268 ldr r2, [r4] +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3631 .loc 1 1384 11 view .LVU995 + 3632 0104 3432 adds r2, r2, #52 + 3633 0106 6146 mov r1, ip + 3634 0108 606A ldr r0, [r4, #36] + 3635 010a FFF7FEFF bl HAL_DMA_Start_IT + 3636 .LVL234: +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3637 .loc 1 1384 10 view .LVU996 + 3638 010e 0028 cmp r0, #0 + 3639 0110 74D1 bne .L296 +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3640 .loc 1 1391 7 is_stmt 1 view .LVU997 + 3641 0112 2268 ldr r2, [r4] + 3642 0114 D368 ldr r3, [r2, #12] + 3643 0116 43F40073 orr r3, r3, #512 + 3644 011a D360 str r3, [r2, #12] +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3645 .loc 1 1392 7 view .LVU998 +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3646 .loc 1 1442 3 view .LVU999 + 3647 .L289: +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3648 .loc 1 1445 5 view .LVU1000 + 3649 011c 0422 movs r2, #4 + 3650 011e 2946 mov r1, r5 + 3651 0120 2068 ldr r0, [r4] + 3652 0122 FFF7FEFF bl TIM_CCxNChannelCmd + 3653 .LVL235: +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3654 .loc 1 1448 5 view .LVU1001 + 3655 0126 2268 ldr r2, [r4] + 3656 0128 536C ldr r3, [r2, #68] + 3657 012a 43F40043 orr r3, r3, #32768 + 3658 012e 5364 str r3, [r2, #68] +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3659 .loc 1 1451 5 view .LVU1002 +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3660 .loc 1 1451 9 is_stmt 0 view .LVU1003 + 3661 0130 2368 ldr r3, [r4] + ARM GAS /tmp/cc7KL1Mv.s page 127 + + +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3662 .loc 1 1451 8 view .LVU1004 + 3663 0132 394A ldr r2, .L308+12 + 3664 0134 B3F1804F cmp r3, #1073741824 + 3665 0138 18BF it ne + 3666 013a 9342 cmpne r3, r2 + 3667 013c 4AD0 beq .L290 +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3668 .loc 1 1451 9 discriminator 1 view .LVU1005 + 3669 013e A2F57C42 sub r2, r2, #64512 + 3670 0142 9342 cmp r3, r2 + 3671 0144 46D0 beq .L290 +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3672 .loc 1 1451 9 discriminator 2 view .LVU1006 + 3673 0146 02F58062 add r2, r2, #1024 + 3674 014a 9342 cmp r3, r2 + 3675 014c 42D0 beq .L290 +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3676 .loc 1 1451 9 discriminator 3 view .LVU1007 + 3677 014e 02F58062 add r2, r2, #1024 + 3678 0152 9342 cmp r3, r2 + 3679 0154 3ED0 beq .L290 +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3680 .loc 1 1451 9 discriminator 4 view .LVU1008 + 3681 0156 02F57842 add r2, r2, #63488 + 3682 015a 9342 cmp r3, r2 + 3683 015c 3AD0 beq .L290 +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3684 .loc 1 1451 9 discriminator 5 view .LVU1009 + 3685 015e 02F57052 add r2, r2, #15360 + 3686 0162 9342 cmp r3, r2 + 3687 0164 36D0 beq .L290 +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3688 .loc 1 1451 9 discriminator 6 view .LVU1010 + 3689 0166 A2F59432 sub r2, r2, #75776 + 3690 016a 9342 cmp r3, r2 + 3691 016c 32D0 beq .L290 +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3692 .loc 1 1461 7 is_stmt 1 view .LVU1011 + 3693 016e 1A68 ldr r2, [r3] + 3694 0170 42F00102 orr r2, r2, #1 + 3695 0174 1A60 str r2, [r3] + 3696 0176 0020 movs r0, #0 + 3697 0178 3DE0 b .L278 + 3698 .LVL236: + 3699 .L287: +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3700 .loc 1 1398 7 view .LVU1012 +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3701 .loc 1 1398 17 is_stmt 0 view .LVU1013 + 3702 017a A26A ldr r2, [r4, #40] +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3703 .loc 1 1398 52 view .LVU1014 + 3704 017c 2349 ldr r1, .L308 + 3705 .LVL237: +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC2]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3706 .loc 1 1398 52 view .LVU1015 + ARM GAS /tmp/cc7KL1Mv.s page 128 + + + 3707 017e D163 str r1, [r2, #60] +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3708 .loc 1 1399 7 is_stmt 1 view .LVU1016 +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3709 .loc 1 1399 17 is_stmt 0 view .LVU1017 + 3710 0180 A26A ldr r2, [r4, #40] +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3711 .loc 1 1399 56 view .LVU1018 + 3712 0182 2349 ldr r1, .L308+4 + 3713 0184 1164 str r1, [r2, #64] +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3714 .loc 1 1402 7 is_stmt 1 view .LVU1019 +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3715 .loc 1 1402 17 is_stmt 0 view .LVU1020 + 3716 0186 A26A ldr r2, [r4, #40] +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3717 .loc 1 1402 53 view .LVU1021 + 3718 0188 2249 ldr r1, .L308+8 + 3719 018a D164 str r1, [r2, #76] +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3720 .loc 1 1405 7 is_stmt 1 view .LVU1022 +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3721 .loc 1 1405 88 is_stmt 0 view .LVU1023 + 3722 018c 2268 ldr r2, [r4] +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3723 .loc 1 1405 11 view .LVU1024 + 3724 018e 3832 adds r2, r2, #56 + 3725 0190 6146 mov r1, ip + 3726 0192 A06A ldr r0, [r4, #40] + 3727 0194 FFF7FEFF bl HAL_DMA_Start_IT + 3728 .LVL238: +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3729 .loc 1 1405 10 view .LVU1025 + 3730 0198 0028 cmp r0, #0 + 3731 019a 31D1 bne .L297 +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3732 .loc 1 1412 7 is_stmt 1 view .LVU1026 + 3733 019c 2268 ldr r2, [r4] + 3734 019e D368 ldr r3, [r2, #12] + 3735 01a0 43F48063 orr r3, r3, #1024 + 3736 01a4 D360 str r3, [r2, #12] +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3737 .loc 1 1413 7 view .LVU1027 +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3738 .loc 1 1442 3 view .LVU1028 + 3739 01a6 B9E7 b .L289 + 3740 .LVL239: + 3741 .L288: +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3742 .loc 1 1419 7 view .LVU1029 +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3743 .loc 1 1419 17 is_stmt 0 view .LVU1030 + 3744 01a8 E26A ldr r2, [r4, #44] +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3745 .loc 1 1419 52 view .LVU1031 + 3746 01aa 1849 ldr r1, .L308 + 3747 .LVL240: + ARM GAS /tmp/cc7KL1Mv.s page 129 + + +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_CC3]->XferHalfCpltCallback = TIM_DMADelayPulseHalfCplt; + 3748 .loc 1 1419 52 view .LVU1032 + 3749 01ac D163 str r1, [r2, #60] +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3750 .loc 1 1420 7 is_stmt 1 view .LVU1033 +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3751 .loc 1 1420 17 is_stmt 0 view .LVU1034 + 3752 01ae E26A ldr r2, [r4, #44] +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3753 .loc 1 1420 56 view .LVU1035 + 3754 01b0 1749 ldr r1, .L308+4 + 3755 01b2 1164 str r1, [r2, #64] +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3756 .loc 1 1423 7 is_stmt 1 view .LVU1036 +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3757 .loc 1 1423 17 is_stmt 0 view .LVU1037 + 3758 01b4 E26A ldr r2, [r4, #44] +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3759 .loc 1 1423 53 view .LVU1038 + 3760 01b6 1749 ldr r1, .L308+8 + 3761 01b8 D164 str r1, [r2, #76] +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3762 .loc 1 1426 7 is_stmt 1 view .LVU1039 +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3763 .loc 1 1426 88 is_stmt 0 view .LVU1040 + 3764 01ba 2268 ldr r2, [r4] +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3765 .loc 1 1426 11 view .LVU1041 + 3766 01bc 3C32 adds r2, r2, #60 + 3767 01be 6146 mov r1, ip + 3768 01c0 E06A ldr r0, [r4, #44] + 3769 01c2 FFF7FEFF bl HAL_DMA_Start_IT + 3770 .LVL241: +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** Length) != HAL_OK) + 3771 .loc 1 1426 10 view .LVU1042 + 3772 01c6 E8B9 cbnz r0, .L298 +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3773 .loc 1 1433 7 is_stmt 1 view .LVU1043 + 3774 01c8 2268 ldr r2, [r4] + 3775 01ca D368 ldr r3, [r2, #12] + 3776 01cc 43F40063 orr r3, r3, #2048 + 3777 01d0 D360 str r3, [r2, #12] +1434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3778 .loc 1 1434 7 view .LVU1044 +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3779 .loc 1 1442 3 view .LVU1045 + 3780 01d2 A3E7 b .L289 + 3781 .L290: +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 3782 .loc 1 1453 7 view .LVU1046 +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 3783 .loc 1 1453 31 is_stmt 0 view .LVU1047 + 3784 01d4 9968 ldr r1, [r3, #8] +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) + 3785 .loc 1 1453 15 view .LVU1048 + 3786 01d6 114A ldr r2, .L308+16 + 3787 01d8 0A40 ands r2, r2, r1 + ARM GAS /tmp/cc7KL1Mv.s page 130 + + + 3788 .LVL242: +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3789 .loc 1 1454 7 is_stmt 1 view .LVU1049 +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3790 .loc 1 1454 10 is_stmt 0 view .LVU1050 + 3791 01da 062A cmp r2, #6 + 3792 01dc 18BF it ne + 3793 01de B2F5803F cmpne r2, #65536 + 3794 01e2 11D0 beq .L299 +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3795 .loc 1 1456 9 is_stmt 1 view .LVU1051 + 3796 01e4 1A68 ldr r2, [r3] + 3797 .LVL243: +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3798 .loc 1 1456 9 is_stmt 0 view .LVU1052 + 3799 01e6 42F00102 orr r2, r2, #1 + 3800 01ea 1A60 str r2, [r3] + 3801 01ec 0020 movs r0, #0 + 3802 01ee 02E0 b .L278 + 3803 .LVL244: + 3804 .L292: +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3805 .loc 1 1354 12 view .LVU1053 + 3806 01f0 0220 movs r0, #2 + 3807 01f2 00E0 b .L278 + 3808 .LVL245: + 3809 .L293: +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3810 .loc 1 1369 12 view .LVU1054 + 3811 01f4 0120 movs r0, #1 + 3812 .LVL246: + 3813 .L278: +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3814 .loc 1 1467 1 view .LVU1055 + 3815 01f6 38BD pop {r3, r4, r5, pc} + 3816 .LVL247: + 3817 .L294: +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3818 .loc 1 1360 14 view .LVU1056 + 3819 01f8 0120 movs r0, #1 + 3820 01fa FCE7 b .L278 + 3821 .LVL248: + 3822 .L296: +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3823 .loc 1 1388 16 view .LVU1057 + 3824 01fc 0120 movs r0, #1 + 3825 01fe FAE7 b .L278 + 3826 .L297: +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3827 .loc 1 1409 16 view .LVU1058 + 3828 0200 0120 movs r0, #1 + 3829 0202 F8E7 b .L278 + 3830 .L298: +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3831 .loc 1 1430 16 view .LVU1059 + 3832 0204 0120 movs r0, #1 + 3833 0206 F6E7 b .L278 + ARM GAS /tmp/cc7KL1Mv.s page 131 + + + 3834 .LVL249: + 3835 .L299: +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3836 .loc 1 1430 16 view .LVU1060 + 3837 0208 0020 movs r0, #0 + 3838 020a F4E7 b .L278 + 3839 .L309: + 3840 .align 2 + 3841 .L308: + 3842 020c 00000000 .word TIM_DMADelayPulseNCplt + 3843 0210 00000000 .word TIM_DMADelayPulseHalfCplt + 3844 0214 00000000 .word TIM_DMAErrorCCxN + 3845 0218 00000140 .word 1073807360 + 3846 021c 07000100 .word 65543 + 3847 .cfi_endproc + 3848 .LFE161: + 3850 .section .text.HAL_TIMEx_PWMN_Stop_DMA,"ax",%progbits + 3851 .align 1 + 3852 .global HAL_TIMEx_PWMN_Stop_DMA + 3853 .syntax unified + 3854 .thumb + 3855 .thumb_func + 3856 .fpu fpv5-d16 + 3858 HAL_TIMEx_PWMN_Stop_DMA: + 3859 .LVL250: + 3860 .LFB162: +1481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 3861 .loc 1 1481 1 is_stmt 1 view -0 + 3862 .cfi_startproc + 3863 @ args = 0, pretend = 0, frame = 0 + 3864 @ frame_needed = 0, uses_anonymous_args = 0 +1481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 3865 .loc 1 1481 1 is_stmt 0 view .LVU1062 + 3866 0000 38B5 push {r3, r4, r5, lr} + 3867 .LCFI25: + 3868 .cfi_def_cfa_offset 16 + 3869 .cfi_offset 3, -16 + 3870 .cfi_offset 4, -12 + 3871 .cfi_offset 5, -8 + 3872 .cfi_offset 14, -4 + 3873 0002 0546 mov r5, r0 + 3874 0004 0C46 mov r4, r1 +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3875 .loc 1 1482 3 is_stmt 1 view .LVU1063 + 3876 .LVL251: +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3877 .loc 1 1485 3 view .LVU1064 +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3878 .loc 1 1487 3 view .LVU1065 + 3879 0006 0429 cmp r1, #4 + 3880 0008 35D0 beq .L311 + 3881 000a 0829 cmp r1, #8 + 3882 000c 3CD0 beq .L312 + 3883 000e 09B1 cbz r1, .L322 + 3884 0010 0120 movs r0, #1 + 3885 .LVL252: + 3886 .L313: + ARM GAS /tmp/cc7KL1Mv.s page 132 + + +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3887 .loc 1 1534 3 view .LVU1066 +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3888 .loc 1 1535 1 is_stmt 0 view .LVU1067 + 3889 0012 38BD pop {r3, r4, r5, pc} + 3890 .LVL253: + 3891 .L322: +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC1]); + 3892 .loc 1 1492 7 is_stmt 1 view .LVU1068 + 3893 0014 0268 ldr r2, [r0] + 3894 0016 D368 ldr r3, [r2, #12] + 3895 0018 23F40073 bic r3, r3, #512 + 3896 001c D360 str r3, [r2, #12] +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3897 .loc 1 1493 7 view .LVU1069 +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3898 .loc 1 1493 13 is_stmt 0 view .LVU1070 + 3899 001e 406A ldr r0, [r0, #36] + 3900 .LVL254: +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3901 .loc 1 1493 13 view .LVU1071 + 3902 0020 FFF7FEFF bl HAL_DMA_Abort_IT + 3903 .LVL255: +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3904 .loc 1 1494 7 is_stmt 1 view .LVU1072 +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3905 .loc 1 1518 3 view .LVU1073 + 3906 .L314: +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3907 .loc 1 1521 5 view .LVU1074 + 3908 0024 0022 movs r2, #0 + 3909 0026 2146 mov r1, r4 + 3910 0028 2868 ldr r0, [r5] + 3911 002a FFF7FEFF bl TIM_CCxNChannelCmd + 3912 .LVL256: +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3913 .loc 1 1524 5 view .LVU1075 +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3914 .loc 1 1524 5 view .LVU1076 + 3915 002e 2B68 ldr r3, [r5] + 3916 0030 196A ldr r1, [r3, #32] + 3917 0032 41F21112 movw r2, #4369 + 3918 0036 1142 tst r1, r2 + 3919 0038 08D1 bne .L315 +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3920 .loc 1 1524 5 discriminator 1 view .LVU1077 + 3921 003a 196A ldr r1, [r3, #32] + 3922 003c 40F24442 movw r2, #1092 + 3923 0040 1142 tst r1, r2 + 3924 0042 03D1 bne .L315 +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3925 .loc 1 1524 5 discriminator 3 view .LVU1078 + 3926 0044 5A6C ldr r2, [r3, #68] + 3927 0046 22F40042 bic r2, r2, #32768 + 3928 004a 5A64 str r2, [r3, #68] + 3929 .L315: +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 133 + + + 3930 .loc 1 1524 5 discriminator 5 view .LVU1079 +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3931 .loc 1 1527 5 discriminator 5 view .LVU1080 +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3932 .loc 1 1527 5 discriminator 5 view .LVU1081 + 3933 004c 2B68 ldr r3, [r5] + 3934 004e 196A ldr r1, [r3, #32] + 3935 0050 41F21112 movw r2, #4369 + 3936 0054 1142 tst r1, r2 + 3937 0056 08D1 bne .L316 +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3938 .loc 1 1527 5 discriminator 1 view .LVU1082 + 3939 0058 196A ldr r1, [r3, #32] + 3940 005a 40F24442 movw r2, #1092 + 3941 005e 1142 tst r1, r2 + 3942 0060 03D1 bne .L316 +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3943 .loc 1 1527 5 discriminator 3 view .LVU1083 + 3944 0062 1A68 ldr r2, [r3] + 3945 0064 22F00102 bic r2, r2, #1 + 3946 0068 1A60 str r2, [r3] + 3947 .L316: +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 3948 .loc 1 1527 5 discriminator 5 view .LVU1084 +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3949 .loc 1 1530 5 discriminator 5 view .LVU1085 + 3950 006a B4B9 cbnz r4, .L317 +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3951 .loc 1 1530 5 is_stmt 0 discriminator 1 view .LVU1086 + 3952 006c 0123 movs r3, #1 + 3953 006e 85F84430 strb r3, [r5, #68] + 3954 0072 0020 movs r0, #0 + 3955 0074 CDE7 b .L313 + 3956 .LVL257: + 3957 .L311: +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC2]); + 3958 .loc 1 1500 7 is_stmt 1 view .LVU1087 + 3959 0076 0268 ldr r2, [r0] + 3960 0078 D368 ldr r3, [r2, #12] + 3961 007a 23F48063 bic r3, r3, #1024 + 3962 007e D360 str r3, [r2, #12] +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3963 .loc 1 1501 7 view .LVU1088 +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3964 .loc 1 1501 13 is_stmt 0 view .LVU1089 + 3965 0080 806A ldr r0, [r0, #40] + 3966 .LVL258: +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3967 .loc 1 1501 13 view .LVU1090 + 3968 0082 FFF7FEFF bl HAL_DMA_Abort_IT + 3969 .LVL259: +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3970 .loc 1 1502 7 is_stmt 1 view .LVU1091 +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3971 .loc 1 1518 3 view .LVU1092 + 3972 0086 CDE7 b .L314 + 3973 .LVL260: + ARM GAS /tmp/cc7KL1Mv.s page 134 + + + 3974 .L312: +1508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (void)HAL_DMA_Abort_IT(htim->hdma[TIM_DMA_ID_CC3]); + 3975 .loc 1 1508 7 view .LVU1093 + 3976 0088 0268 ldr r2, [r0] + 3977 008a D368 ldr r3, [r2, #12] + 3978 008c 23F40063 bic r3, r3, #2048 + 3979 0090 D360 str r3, [r2, #12] +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3980 .loc 1 1509 7 view .LVU1094 +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3981 .loc 1 1509 13 is_stmt 0 view .LVU1095 + 3982 0092 C06A ldr r0, [r0, #44] + 3983 .LVL261: +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 3984 .loc 1 1509 13 view .LVU1096 + 3985 0094 FFF7FEFF bl HAL_DMA_Abort_IT + 3986 .LVL262: +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3987 .loc 1 1510 7 is_stmt 1 view .LVU1097 +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 3988 .loc 1 1518 3 view .LVU1098 + 3989 0098 C4E7 b .L314 + 3990 .L317: +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3991 .loc 1 1530 5 is_stmt 0 discriminator 2 view .LVU1099 + 3992 009a 042C cmp r4, #4 + 3993 009c 06D0 beq .L323 +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3994 .loc 1 1530 5 discriminator 4 view .LVU1100 + 3995 009e 082C cmp r4, #8 + 3996 00a0 09D0 beq .L324 +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 3997 .loc 1 1530 5 discriminator 7 view .LVU1101 + 3998 00a2 0123 movs r3, #1 + 3999 00a4 85F84730 strb r3, [r5, #71] + 4000 00a8 0020 movs r0, #0 + 4001 00aa B2E7 b .L313 + 4002 .L323: +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4003 .loc 1 1530 5 discriminator 3 view .LVU1102 + 4004 00ac 0123 movs r3, #1 + 4005 00ae 85F84530 strb r3, [r5, #69] + 4006 00b2 0020 movs r0, #0 + 4007 00b4 ADE7 b .L313 + 4008 .L324: +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4009 .loc 1 1530 5 discriminator 6 view .LVU1103 + 4010 00b6 0123 movs r3, #1 + 4011 00b8 85F84630 strb r3, [r5, #70] + 4012 00bc 0020 movs r0, #0 + 4013 00be A8E7 b .L313 + 4014 .cfi_endproc + 4015 .LFE162: + 4017 .section .text.HAL_TIMEx_OnePulseN_Start,"ax",%progbits + 4018 .align 1 + 4019 .global HAL_TIMEx_OnePulseN_Start + 4020 .syntax unified + ARM GAS /tmp/cc7KL1Mv.s page 135 + + + 4021 .thumb + 4022 .thumb_func + 4023 .fpu fpv5-d16 + 4025 HAL_TIMEx_OnePulseN_Start: + 4026 .LVL263: + 4027 .LFB163: +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + 4028 .loc 1 1572 1 is_stmt 1 view -0 + 4029 .cfi_startproc + 4030 @ args = 0, pretend = 0, frame = 0 + 4031 @ frame_needed = 0, uses_anonymous_args = 0 +1572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + 4032 .loc 1 1572 1 is_stmt 0 view .LVU1105 + 4033 0000 38B5 push {r3, r4, r5, lr} + 4034 .LCFI26: + 4035 .cfi_def_cfa_offset 16 + 4036 .cfi_offset 3, -16 + 4037 .cfi_offset 4, -12 + 4038 .cfi_offset 5, -8 + 4039 .cfi_offset 14, -4 + 4040 0002 0446 mov r4, r0 +1573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 4041 .loc 1 1573 3 is_stmt 1 view .LVU1106 +1573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 4042 .loc 1 1573 77 is_stmt 0 view .LVU1107 + 4043 0004 8E46 mov lr, r1 + 4044 0006 91BB cbnz r1, .L328 + 4045 0008 0425 movs r5, #4 + 4046 .L326: + 4047 .LVL264: +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 4048 .loc 1 1574 3 is_stmt 1 discriminator 4 view .LVU1108 +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 4049 .loc 1 1574 31 is_stmt 0 discriminator 4 view .LVU1109 + 4050 000a 94F83E00 ldrb r0, [r4, #62] @ zero_extendqisi2 + 4051 .LVL265: +1574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 4052 .loc 1 1574 31 discriminator 4 view .LVU1110 + 4053 000e C0B2 uxtb r0, r0 + 4054 .LVL266: +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 4055 .loc 1 1575 3 is_stmt 1 discriminator 4 view .LVU1111 +1575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 4056 .loc 1 1575 31 is_stmt 0 discriminator 4 view .LVU1112 + 4057 0010 94F83F20 ldrb r2, [r4, #63] @ zero_extendqisi2 + 4058 0014 D2B2 uxtb r2, r2 + 4059 .LVL267: +1576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 4060 .loc 1 1576 3 is_stmt 1 discriminator 4 view .LVU1113 +1576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 4061 .loc 1 1576 31 is_stmt 0 discriminator 4 view .LVU1114 + 4062 0016 94F84430 ldrb r3, [r4, #68] @ zero_extendqisi2 + 4063 001a 5FFA83FC uxtb ip, r3 + 4064 .LVL268: +1577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4065 .loc 1 1577 3 is_stmt 1 discriminator 4 view .LVU1115 +1577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 136 + + + 4066 .loc 1 1577 31 is_stmt 0 discriminator 4 view .LVU1116 + 4067 001e 94F84530 ldrb r3, [r4, #69] @ zero_extendqisi2 + 4068 0022 DBB2 uxtb r3, r3 + 4069 .LVL269: +1580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4070 .loc 1 1580 3 is_stmt 1 discriminator 4 view .LVU1117 +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 4071 .loc 1 1583 3 discriminator 4 view .LVU1118 +1583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 4072 .loc 1 1583 6 is_stmt 0 discriminator 4 view .LVU1119 + 4073 0024 012A cmp r2, #1 + 4074 0026 08BF it eq + 4075 0028 0128 cmpeq r0, #1 + 4076 002a 22D1 bne .L329 +1586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4077 .loc 1 1586 41 view .LVU1120 + 4078 002c 013B subs r3, r3, #1 + 4079 .LVL270: +1586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4080 .loc 1 1586 41 view .LVU1121 + 4081 002e 18BF it ne + 4082 0030 0123 movne r3, #1 + 4083 .LVL271: +1586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4084 .loc 1 1586 7 view .LVU1122 + 4085 0032 BCF1010F cmp ip, #1 + 4086 0036 1ED1 bne .L330 + 4087 0038 EBB9 cbnz r3, .L330 +1592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 4088 .loc 1 1592 3 is_stmt 1 view .LVU1123 + 4089 003a 0223 movs r3, #2 + 4090 003c 84F83E30 strb r3, [r4, #62] +1593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 4091 .loc 1 1593 3 view .LVU1124 + 4092 0040 84F83F30 strb r3, [r4, #63] +1594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 4093 .loc 1 1594 3 view .LVU1125 + 4094 0044 84F84430 strb r3, [r4, #68] +1595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4095 .loc 1 1595 3 view .LVU1126 + 4096 0048 84F84530 strb r3, [r4, #69] +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + 4097 .loc 1 1598 3 view .LVU1127 + 4098 004c 0422 movs r2, #4 + 4099 .LVL272: +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + 4100 .loc 1 1598 3 is_stmt 0 view .LVU1128 + 4101 004e 7146 mov r1, lr + 4102 .LVL273: +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + 4103 .loc 1 1598 3 view .LVU1129 + 4104 0050 2068 ldr r0, [r4] + 4105 .LVL274: +1598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + 4106 .loc 1 1598 3 view .LVU1130 + 4107 0052 FFF7FEFF bl TIM_CCxNChannelCmd + 4108 .LVL275: + ARM GAS /tmp/cc7KL1Mv.s page 137 + + +1599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4109 .loc 1 1599 3 is_stmt 1 view .LVU1131 + 4110 0056 0122 movs r2, #1 + 4111 0058 2946 mov r1, r5 + 4112 005a 2068 ldr r0, [r4] + 4113 005c FFF7FEFF bl TIM_CCxChannelCmd + 4114 .LVL276: +1602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4115 .loc 1 1602 3 view .LVU1132 + 4116 0060 2268 ldr r2, [r4] + 4117 0062 536C ldr r3, [r2, #68] + 4118 0064 43F40043 orr r3, r3, #32768 + 4119 0068 5364 str r3, [r2, #68] +1605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4120 .loc 1 1605 3 view .LVU1133 +1605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4121 .loc 1 1605 10 is_stmt 0 view .LVU1134 + 4122 006a 0020 movs r0, #0 + 4123 006c 02E0 b .L327 + 4124 .LVL277: + 4125 .L328: +1573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 4126 .loc 1 1573 77 view .LVU1135 + 4127 006e 0025 movs r5, #0 + 4128 0070 CBE7 b .L326 + 4129 .LVL278: + 4130 .L329: +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4131 .loc 1 1588 12 view .LVU1136 + 4132 0072 0120 movs r0, #1 + 4133 .LVL279: + 4134 .L327: +1606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4135 .loc 1 1606 1 view .LVU1137 + 4136 0074 38BD pop {r3, r4, r5, pc} + 4137 .LVL280: + 4138 .L330: +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4139 .loc 1 1588 12 view .LVU1138 + 4140 0076 0120 movs r0, #1 + 4141 .LVL281: +1588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4142 .loc 1 1588 12 view .LVU1139 + 4143 0078 FCE7 b .L327 + 4144 .cfi_endproc + 4145 .LFE163: + 4147 .section .text.HAL_TIMEx_OnePulseN_Stop,"ax",%progbits + 4148 .align 1 + 4149 .global HAL_TIMEx_OnePulseN_Stop + 4150 .syntax unified + 4151 .thumb + 4152 .thumb_func + 4153 .fpu fpv5-d16 + 4155 HAL_TIMEx_OnePulseN_Stop: + 4156 .LVL282: + 4157 .LFB164: +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + ARM GAS /tmp/cc7KL1Mv.s page 138 + + + 4158 .loc 1 1621 1 is_stmt 1 view -0 + 4159 .cfi_startproc + 4160 @ args = 0, pretend = 0, frame = 0 + 4161 @ frame_needed = 0, uses_anonymous_args = 0 +1621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + 4162 .loc 1 1621 1 is_stmt 0 view .LVU1141 + 4163 0000 38B5 push {r3, r4, r5, lr} + 4164 .LCFI27: + 4165 .cfi_def_cfa_offset 16 + 4166 .cfi_offset 3, -16 + 4167 .cfi_offset 4, -12 + 4168 .cfi_offset 5, -8 + 4169 .cfi_offset 14, -4 + 4170 0002 0446 mov r4, r0 +1622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4171 .loc 1 1622 3 is_stmt 1 view .LVU1142 +1622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4172 .loc 1 1622 77 is_stmt 0 view .LVU1143 + 4173 0004 0029 cmp r1, #0 + 4174 0006 32D1 bne .L336 + 4175 0008 0425 movs r5, #4 + 4176 .L333: + 4177 .LVL283: +1625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4178 .loc 1 1625 3 is_stmt 1 discriminator 4 view .LVU1144 +1628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE); + 4179 .loc 1 1628 3 discriminator 4 view .LVU1145 + 4180 000a 0022 movs r2, #0 + 4181 000c 2068 ldr r0, [r4] + 4182 .LVL284: +1628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE); + 4183 .loc 1 1628 3 is_stmt 0 discriminator 4 view .LVU1146 + 4184 000e FFF7FEFF bl TIM_CCxNChannelCmd + 4185 .LVL285: +1629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4186 .loc 1 1629 3 is_stmt 1 discriminator 4 view .LVU1147 + 4187 0012 0022 movs r2, #0 + 4188 0014 2946 mov r1, r5 + 4189 0016 2068 ldr r0, [r4] + 4190 0018 FFF7FEFF bl TIM_CCxChannelCmd + 4191 .LVL286: +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4192 .loc 1 1632 3 discriminator 4 view .LVU1148 +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4193 .loc 1 1632 3 discriminator 4 view .LVU1149 + 4194 001c 2368 ldr r3, [r4] + 4195 001e 196A ldr r1, [r3, #32] + 4196 0020 41F21112 movw r2, #4369 + 4197 0024 1142 tst r1, r2 + 4198 0026 08D1 bne .L334 +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4199 .loc 1 1632 3 discriminator 1 view .LVU1150 + 4200 0028 196A ldr r1, [r3, #32] + 4201 002a 40F24442 movw r2, #1092 + 4202 002e 1142 tst r1, r2 + 4203 0030 03D1 bne .L334 +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 139 + + + 4204 .loc 1 1632 3 discriminator 3 view .LVU1151 + 4205 0032 5A6C ldr r2, [r3, #68] + 4206 0034 22F40042 bic r2, r2, #32768 + 4207 0038 5A64 str r2, [r3, #68] + 4208 .L334: +1632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4209 .loc 1 1632 3 discriminator 5 view .LVU1152 +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4210 .loc 1 1635 3 discriminator 5 view .LVU1153 +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4211 .loc 1 1635 3 discriminator 5 view .LVU1154 + 4212 003a 2368 ldr r3, [r4] + 4213 003c 196A ldr r1, [r3, #32] + 4214 003e 41F21112 movw r2, #4369 + 4215 0042 1142 tst r1, r2 + 4216 0044 08D1 bne .L335 +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4217 .loc 1 1635 3 discriminator 1 view .LVU1155 + 4218 0046 196A ldr r1, [r3, #32] + 4219 0048 40F24442 movw r2, #1092 + 4220 004c 1142 tst r1, r2 + 4221 004e 03D1 bne .L335 +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4222 .loc 1 1635 3 discriminator 3 view .LVU1156 + 4223 0050 1A68 ldr r2, [r3] + 4224 0052 22F00102 bic r2, r2, #1 + 4225 0056 1A60 str r2, [r3] + 4226 .L335: +1635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4227 .loc 1 1635 3 discriminator 5 view .LVU1157 +1638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 4228 .loc 1 1638 3 discriminator 5 view .LVU1158 + 4229 0058 0123 movs r3, #1 + 4230 005a 84F83E30 strb r3, [r4, #62] +1639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 4231 .loc 1 1639 3 discriminator 5 view .LVU1159 + 4232 005e 84F83F30 strb r3, [r4, #63] +1640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 4233 .loc 1 1640 3 discriminator 5 view .LVU1160 + 4234 0062 84F84430 strb r3, [r4, #68] +1641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4235 .loc 1 1641 3 discriminator 5 view .LVU1161 + 4236 0066 84F84530 strb r3, [r4, #69] +1644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4237 .loc 1 1644 3 discriminator 5 view .LVU1162 +1645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4238 .loc 1 1645 1 is_stmt 0 discriminator 5 view .LVU1163 + 4239 006a 0020 movs r0, #0 + 4240 006c 38BD pop {r3, r4, r5, pc} + 4241 .LVL287: + 4242 .L336: +1622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4243 .loc 1 1622 77 view .LVU1164 + 4244 006e 0025 movs r5, #0 + 4245 0070 CBE7 b .L333 + 4246 .cfi_endproc + 4247 .LFE164: + ARM GAS /tmp/cc7KL1Mv.s page 140 + + + 4249 .section .text.HAL_TIMEx_OnePulseN_Start_IT,"ax",%progbits + 4250 .align 1 + 4251 .global HAL_TIMEx_OnePulseN_Start_IT + 4252 .syntax unified + 4253 .thumb + 4254 .thumb_func + 4255 .fpu fpv5-d16 + 4257 HAL_TIMEx_OnePulseN_Start_IT: + 4258 .LVL288: + 4259 .LFB165: +1660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + 4260 .loc 1 1660 1 is_stmt 1 view -0 + 4261 .cfi_startproc + 4262 @ args = 0, pretend = 0, frame = 0 + 4263 @ frame_needed = 0, uses_anonymous_args = 0 +1660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + 4264 .loc 1 1660 1 is_stmt 0 view .LVU1166 + 4265 0000 38B5 push {r3, r4, r5, lr} + 4266 .LCFI28: + 4267 .cfi_def_cfa_offset 16 + 4268 .cfi_offset 3, -16 + 4269 .cfi_offset 4, -12 + 4270 .cfi_offset 5, -8 + 4271 .cfi_offset 14, -4 + 4272 0002 0446 mov r4, r0 +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 4273 .loc 1 1661 3 is_stmt 1 view .LVU1167 +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 4274 .loc 1 1661 77 is_stmt 0 view .LVU1168 + 4275 0004 8E46 mov lr, r1 + 4276 0006 0029 cmp r1, #0 + 4277 0008 3CD1 bne .L341 + 4278 000a 0425 movs r5, #4 + 4279 .L339: + 4280 .LVL289: +1662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 4281 .loc 1 1662 3 is_stmt 1 discriminator 4 view .LVU1169 +1662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 4282 .loc 1 1662 31 is_stmt 0 discriminator 4 view .LVU1170 + 4283 000c 94F83E00 ldrb r0, [r4, #62] @ zero_extendqisi2 + 4284 .LVL290: +1662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_2_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_2); + 4285 .loc 1 1662 31 discriminator 4 view .LVU1171 + 4286 0010 C0B2 uxtb r0, r0 + 4287 .LVL291: +1663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 4288 .loc 1 1663 3 is_stmt 1 discriminator 4 view .LVU1172 +1663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_1_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 4289 .loc 1 1663 31 is_stmt 0 discriminator 4 view .LVU1173 + 4290 0012 94F83F20 ldrb r2, [r4, #63] @ zero_extendqisi2 + 4291 0016 D2B2 uxtb r2, r2 + 4292 .LVL292: +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 4293 .loc 1 1664 3 is_stmt 1 discriminator 4 view .LVU1174 +1664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef complementary_channel_2_state = TIM_CHANNEL_N_STATE_GET(htim, TIM_CHA + 4294 .loc 1 1664 31 is_stmt 0 discriminator 4 view .LVU1175 + 4295 0018 94F84430 ldrb r3, [r4, #68] @ zero_extendqisi2 + ARM GAS /tmp/cc7KL1Mv.s page 141 + + + 4296 001c 5FFA83FC uxtb ip, r3 + 4297 .LVL293: +1665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4298 .loc 1 1665 3 is_stmt 1 discriminator 4 view .LVU1176 +1665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4299 .loc 1 1665 31 is_stmt 0 discriminator 4 view .LVU1177 + 4300 0020 94F84530 ldrb r3, [r4, #69] @ zero_extendqisi2 + 4301 0024 DBB2 uxtb r3, r3 + 4302 .LVL294: +1668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4303 .loc 1 1668 3 is_stmt 1 discriminator 4 view .LVU1178 +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 4304 .loc 1 1671 3 discriminator 4 view .LVU1179 +1671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** || (channel_2_state != HAL_TIM_CHANNEL_STATE_READY) + 4305 .loc 1 1671 6 is_stmt 0 discriminator 4 view .LVU1180 + 4306 0026 012A cmp r2, #1 + 4307 0028 08BF it eq + 4308 002a 0128 cmpeq r0, #1 + 4309 002c 2CD1 bne .L342 +1674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4310 .loc 1 1674 41 view .LVU1181 + 4311 002e 013B subs r3, r3, #1 + 4312 .LVL295: +1674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4313 .loc 1 1674 41 view .LVU1182 + 4314 0030 18BF it ne + 4315 0032 0123 movne r3, #1 + 4316 .LVL296: +1674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4317 .loc 1 1674 7 view .LVU1183 + 4318 0034 BCF1010F cmp ip, #1 + 4319 0038 28D1 bne .L343 + 4320 003a 3BBB cbnz r3, .L343 +1680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 4321 .loc 1 1680 3 is_stmt 1 view .LVU1184 + 4322 003c 0223 movs r3, #2 + 4323 003e 84F83E30 strb r3, [r4, #62] +1681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_BUSY); + 4324 .loc 1 1681 3 view .LVU1185 + 4325 0042 84F83F30 strb r3, [r4, #63] +1682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_BUSY); + 4326 .loc 1 1682 3 view .LVU1186 + 4327 0046 84F84430 strb r3, [r4, #68] +1683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4328 .loc 1 1683 3 view .LVU1187 + 4329 004a 84F84530 strb r3, [r4, #69] +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4330 .loc 1 1686 3 view .LVU1188 + 4331 004e 2268 ldr r2, [r4] + 4332 .LVL297: +1686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4333 .loc 1 1686 3 is_stmt 0 view .LVU1189 + 4334 0050 D368 ldr r3, [r2, #12] + 4335 0052 43F00203 orr r3, r3, #2 + 4336 0056 D360 str r3, [r2, #12] +1689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4337 .loc 1 1689 3 is_stmt 1 view .LVU1190 + ARM GAS /tmp/cc7KL1Mv.s page 142 + + + 4338 0058 2268 ldr r2, [r4] + 4339 005a D368 ldr r3, [r2, #12] + 4340 005c 43F00403 orr r3, r3, #4 + 4341 0060 D360 str r3, [r2, #12] +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + 4342 .loc 1 1692 3 view .LVU1191 + 4343 0062 0422 movs r2, #4 + 4344 0064 7146 mov r1, lr + 4345 .LVL298: +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + 4346 .loc 1 1692 3 is_stmt 0 view .LVU1192 + 4347 0066 2068 ldr r0, [r4] + 4348 .LVL299: +1692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_ENABLE); + 4349 .loc 1 1692 3 view .LVU1193 + 4350 0068 FFF7FEFF bl TIM_CCxNChannelCmd + 4351 .LVL300: +1693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4352 .loc 1 1693 3 is_stmt 1 view .LVU1194 + 4353 006c 0122 movs r2, #1 + 4354 006e 2946 mov r1, r5 + 4355 0070 2068 ldr r0, [r4] + 4356 0072 FFF7FEFF bl TIM_CCxChannelCmd + 4357 .LVL301: +1696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4358 .loc 1 1696 3 view .LVU1195 + 4359 0076 2268 ldr r2, [r4] + 4360 0078 536C ldr r3, [r2, #68] + 4361 007a 43F40043 orr r3, r3, #32768 + 4362 007e 5364 str r3, [r2, #68] +1699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4363 .loc 1 1699 3 view .LVU1196 +1699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4364 .loc 1 1699 10 is_stmt 0 view .LVU1197 + 4365 0080 0020 movs r0, #0 + 4366 0082 02E0 b .L340 + 4367 .LVL302: + 4368 .L341: +1661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_1_state = TIM_CHANNEL_STATE_GET(htim, TIM_CHANNEL_1); + 4369 .loc 1 1661 77 view .LVU1198 + 4370 0084 0025 movs r5, #0 + 4371 0086 C1E7 b .L339 + 4372 .LVL303: + 4373 .L342: +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4374 .loc 1 1676 12 view .LVU1199 + 4375 0088 0120 movs r0, #1 + 4376 .LVL304: + 4377 .L340: +1700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4378 .loc 1 1700 1 view .LVU1200 + 4379 008a 38BD pop {r3, r4, r5, pc} + 4380 .LVL305: + 4381 .L343: +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4382 .loc 1 1676 12 view .LVU1201 + 4383 008c 0120 movs r0, #1 + ARM GAS /tmp/cc7KL1Mv.s page 143 + + + 4384 .LVL306: +1676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4385 .loc 1 1676 12 view .LVU1202 + 4386 008e FCE7 b .L340 + 4387 .cfi_endproc + 4388 .LFE165: + 4390 .section .text.HAL_TIMEx_OnePulseN_Stop_IT,"ax",%progbits + 4391 .align 1 + 4392 .global HAL_TIMEx_OnePulseN_Stop_IT + 4393 .syntax unified + 4394 .thumb + 4395 .thumb_func + 4396 .fpu fpv5-d16 + 4398 HAL_TIMEx_OnePulseN_Stop_IT: + 4399 .LVL307: + 4400 .LFB166: +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + 4401 .loc 1 1715 1 is_stmt 1 view -0 + 4402 .cfi_startproc + 4403 @ args = 0, pretend = 0, frame = 0 + 4404 @ frame_needed = 0, uses_anonymous_args = 0 +1715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t input_channel = (OutputChannel == TIM_CHANNEL_1) ? TIM_CHANNEL_2 : TIM_CHANNEL_1; + 4405 .loc 1 1715 1 is_stmt 0 view .LVU1204 + 4406 0000 38B5 push {r3, r4, r5, lr} + 4407 .LCFI29: + 4408 .cfi_def_cfa_offset 16 + 4409 .cfi_offset 3, -16 + 4410 .cfi_offset 4, -12 + 4411 .cfi_offset 5, -8 + 4412 .cfi_offset 14, -4 + 4413 0002 0446 mov r4, r0 +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4414 .loc 1 1716 3 is_stmt 1 view .LVU1205 +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4415 .loc 1 1716 77 is_stmt 0 view .LVU1206 + 4416 0004 0029 cmp r1, #0 + 4417 0006 3CD1 bne .L349 + 4418 0008 0425 movs r5, #4 + 4419 .L346: + 4420 .LVL308: +1719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4421 .loc 1 1719 3 is_stmt 1 discriminator 4 view .LVU1207 +1722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4422 .loc 1 1722 3 discriminator 4 view .LVU1208 + 4423 000a 2268 ldr r2, [r4] + 4424 000c D368 ldr r3, [r2, #12] + 4425 000e 23F00203 bic r3, r3, #2 + 4426 0012 D360 str r3, [r2, #12] +1725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4427 .loc 1 1725 3 discriminator 4 view .LVU1209 + 4428 0014 2268 ldr r2, [r4] + 4429 0016 D368 ldr r3, [r2, #12] + 4430 0018 23F00403 bic r3, r3, #4 + 4431 001c D360 str r3, [r2, #12] +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE); + 4432 .loc 1 1728 3 discriminator 4 view .LVU1210 + 4433 001e 0022 movs r2, #0 + ARM GAS /tmp/cc7KL1Mv.s page 144 + + + 4434 0020 2068 ldr r0, [r4] + 4435 .LVL309: +1728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CCxChannelCmd(htim->Instance, input_channel, TIM_CCx_DISABLE); + 4436 .loc 1 1728 3 is_stmt 0 discriminator 4 view .LVU1211 + 4437 0022 FFF7FEFF bl TIM_CCxNChannelCmd + 4438 .LVL310: +1729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4439 .loc 1 1729 3 is_stmt 1 discriminator 4 view .LVU1212 + 4440 0026 0022 movs r2, #0 + 4441 0028 2946 mov r1, r5 + 4442 002a 2068 ldr r0, [r4] + 4443 002c FFF7FEFF bl TIM_CCxChannelCmd + 4444 .LVL311: +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4445 .loc 1 1732 3 discriminator 4 view .LVU1213 +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4446 .loc 1 1732 3 discriminator 4 view .LVU1214 + 4447 0030 2368 ldr r3, [r4] + 4448 0032 196A ldr r1, [r3, #32] + 4449 0034 41F21112 movw r2, #4369 + 4450 0038 1142 tst r1, r2 + 4451 003a 08D1 bne .L347 +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4452 .loc 1 1732 3 discriminator 1 view .LVU1215 + 4453 003c 196A ldr r1, [r3, #32] + 4454 003e 40F24442 movw r2, #1092 + 4455 0042 1142 tst r1, r2 + 4456 0044 03D1 bne .L347 +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4457 .loc 1 1732 3 discriminator 3 view .LVU1216 + 4458 0046 5A6C ldr r2, [r3, #68] + 4459 0048 22F40042 bic r2, r2, #32768 + 4460 004c 5A64 str r2, [r3, #68] + 4461 .L347: +1732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4462 .loc 1 1732 3 discriminator 5 view .LVU1217 +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4463 .loc 1 1735 3 discriminator 5 view .LVU1218 +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4464 .loc 1 1735 3 discriminator 5 view .LVU1219 + 4465 004e 2368 ldr r3, [r4] + 4466 0050 196A ldr r1, [r3, #32] + 4467 0052 41F21112 movw r2, #4369 + 4468 0056 1142 tst r1, r2 + 4469 0058 08D1 bne .L348 +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4470 .loc 1 1735 3 discriminator 1 view .LVU1220 + 4471 005a 196A ldr r1, [r3, #32] + 4472 005c 40F24442 movw r2, #1092 + 4473 0060 1142 tst r1, r2 + 4474 0062 03D1 bne .L348 +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4475 .loc 1 1735 3 discriminator 3 view .LVU1221 + 4476 0064 1A68 ldr r2, [r3] + 4477 0066 22F00102 bic r2, r2, #1 + 4478 006a 1A60 str r2, [r3] + 4479 .L348: + ARM GAS /tmp/cc7KL1Mv.s page 145 + + +1735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4480 .loc 1 1735 3 discriminator 5 view .LVU1222 +1738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 4481 .loc 1 1738 3 discriminator 5 view .LVU1223 + 4482 006c 0123 movs r3, #1 + 4483 006e 84F83E30 strb r3, [r4, #62] +1739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_1, HAL_TIM_CHANNEL_STATE_READY); + 4484 .loc 1 1739 3 discriminator 5 view .LVU1224 + 4485 0072 84F83F30 strb r3, [r4, #63] +1740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_CHANNEL_N_STATE_SET(htim, TIM_CHANNEL_2, HAL_TIM_CHANNEL_STATE_READY); + 4486 .loc 1 1740 3 discriminator 5 view .LVU1225 + 4487 0076 84F84430 strb r3, [r4, #68] +1741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4488 .loc 1 1741 3 discriminator 5 view .LVU1226 + 4489 007a 84F84530 strb r3, [r4, #69] +1744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4490 .loc 1 1744 3 discriminator 5 view .LVU1227 +1745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4491 .loc 1 1745 1 is_stmt 0 discriminator 5 view .LVU1228 + 4492 007e 0020 movs r0, #0 + 4493 0080 38BD pop {r3, r4, r5, pc} + 4494 .LVL312: + 4495 .L349: +1716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4496 .loc 1 1716 77 view .LVU1229 + 4497 0082 0025 movs r5, #0 + 4498 0084 C1E7 b .L346 + 4499 .cfi_endproc + 4500 .LFE166: + 4502 .section .text.HAL_TIMEx_ConfigCommutEvent,"ax",%progbits + 4503 .align 1 + 4504 .global HAL_TIMEx_ConfigCommutEvent + 4505 .syntax unified + 4506 .thumb + 4507 .thumb_func + 4508 .fpu fpv5-d16 + 4510 HAL_TIMEx_ConfigCommutEvent: + 4511 .LVL313: + 4512 .LFB167: +1796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 4513 .loc 1 1796 1 is_stmt 1 view -0 + 4514 .cfi_startproc + 4515 @ args = 0, pretend = 0, frame = 0 + 4516 @ frame_needed = 0, uses_anonymous_args = 0 + 4517 @ link register save eliminated. +1798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + 4518 .loc 1 1798 3 view .LVU1231 +1799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4519 .loc 1 1799 3 view .LVU1232 +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4520 .loc 1 1801 3 view .LVU1233 +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4521 .loc 1 1801 3 view .LVU1234 + 4522 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 4523 0004 012B cmp r3, #1 + 4524 0006 36D0 beq .L356 +1796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + ARM GAS /tmp/cc7KL1Mv.s page 146 + + + 4525 .loc 1 1796 1 is_stmt 0 discriminator 2 view .LVU1235 + 4526 0008 10B4 push {r4} + 4527 .LCFI30: + 4528 .cfi_def_cfa_offset 4 + 4529 .cfi_offset 4, -4 +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4530 .loc 1 1801 3 is_stmt 1 discriminator 2 view .LVU1236 + 4531 000a 0123 movs r3, #1 + 4532 000c 80F83C30 strb r3, [r0, #60] +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4533 .loc 1 1801 3 discriminator 2 view .LVU1237 +1803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + 4534 .loc 1 1803 3 discriminator 2 view .LVU1238 +1803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + 4535 .loc 1 1803 6 is_stmt 0 discriminator 2 view .LVU1239 + 4536 0010 1029 cmp r1, #16 + 4537 0012 18BF it ne + 4538 0014 0029 cmpne r1, #0 + 4539 0016 06D0 beq .L353 +1804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4540 .loc 1 1804 54 view .LVU1240 + 4541 0018 3029 cmp r1, #48 + 4542 001a 14BF ite ne + 4543 001c 0023 movne r3, #0 + 4544 001e 0123 moveq r3, #1 +1804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4545 .loc 1 1804 37 view .LVU1241 + 4546 0020 2029 cmp r1, #32 + 4547 0022 00D0 beq .L353 + 4548 0024 43B1 cbz r3, .L354 + 4549 .L353: +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; + 4550 .loc 1 1807 5 is_stmt 1 view .LVU1242 +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; + 4551 .loc 1 1807 9 is_stmt 0 view .LVU1243 + 4552 0026 0468 ldr r4, [r0] +1807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; + 4553 .loc 1 1807 26 view .LVU1244 + 4554 0028 A368 ldr r3, [r4, #8] + 4555 002a 23F07003 bic r3, r3, #112 + 4556 002e A360 str r3, [r4, #8] +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4557 .loc 1 1808 5 is_stmt 1 view .LVU1245 +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4558 .loc 1 1808 9 is_stmt 0 view .LVU1246 + 4559 0030 0468 ldr r4, [r0] +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4560 .loc 1 1808 26 view .LVU1247 + 4561 0032 A368 ldr r3, [r4, #8] + 4562 0034 1943 orrs r1, r1, r3 + 4563 .LVL314: +1808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4564 .loc 1 1808 26 view .LVU1248 + 4565 0036 A160 str r1, [r4, #8] + 4566 .L354: +1812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ + 4567 .loc 1 1812 3 is_stmt 1 view .LVU1249 + ARM GAS /tmp/cc7KL1Mv.s page 147 + + +1812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ + 4568 .loc 1 1812 7 is_stmt 0 view .LVU1250 + 4569 0038 0168 ldr r1, [r0] +1812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ + 4570 .loc 1 1812 23 view .LVU1251 + 4571 003a 4B68 ldr r3, [r1, #4] + 4572 003c 43F00103 orr r3, r3, #1 + 4573 0040 4B60 str r3, [r1, #4] +1814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; + 4574 .loc 1 1814 3 is_stmt 1 view .LVU1252 +1814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; + 4575 .loc 1 1814 7 is_stmt 0 view .LVU1253 + 4576 0042 0168 ldr r1, [r0] +1814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; + 4577 .loc 1 1814 23 view .LVU1254 + 4578 0044 4B68 ldr r3, [r1, #4] + 4579 0046 23F00403 bic r3, r3, #4 + 4580 004a 4B60 str r3, [r1, #4] +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4581 .loc 1 1815 3 is_stmt 1 view .LVU1255 +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4582 .loc 1 1815 7 is_stmt 0 view .LVU1256 + 4583 004c 0168 ldr r1, [r0] +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4584 .loc 1 1815 23 view .LVU1257 + 4585 004e 4B68 ldr r3, [r1, #4] + 4586 0050 1A43 orrs r2, r2, r3 + 4587 .LVL315: +1815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4588 .loc 1 1815 23 view .LVU1258 + 4589 0052 4A60 str r2, [r1, #4] +1818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4590 .loc 1 1818 3 is_stmt 1 view .LVU1259 + 4591 0054 0268 ldr r2, [r0] + 4592 0056 D368 ldr r3, [r2, #12] + 4593 0058 23F02003 bic r3, r3, #32 + 4594 005c D360 str r3, [r2, #12] +1821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4595 .loc 1 1821 3 view .LVU1260 + 4596 005e 0268 ldr r2, [r0] + 4597 0060 D368 ldr r3, [r2, #12] + 4598 0062 23F40053 bic r3, r3, #8192 + 4599 0066 D360 str r3, [r2, #12] +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4600 .loc 1 1823 3 view .LVU1261 +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4601 .loc 1 1823 3 view .LVU1262 + 4602 0068 0023 movs r3, #0 + 4603 006a 80F83C30 strb r3, [r0, #60] +1823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4604 .loc 1 1823 3 view .LVU1263 +1825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4605 .loc 1 1825 3 view .LVU1264 +1825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4606 .loc 1 1825 10 is_stmt 0 view .LVU1265 + 4607 006e 1846 mov r0, r3 + 4608 .LVL316: + ARM GAS /tmp/cc7KL1Mv.s page 148 + + +1826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4609 .loc 1 1826 1 view .LVU1266 + 4610 0070 5DF8044B ldr r4, [sp], #4 + 4611 .LCFI31: + 4612 .cfi_restore 4 + 4613 .cfi_def_cfa_offset 0 + 4614 0074 7047 bx lr + 4615 .LVL317: + 4616 .L356: +1801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4617 .loc 1 1801 3 view .LVU1267 + 4618 0076 0220 movs r0, #2 + 4619 .LVL318: +1826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4620 .loc 1 1826 1 view .LVU1268 + 4621 0078 7047 bx lr + 4622 .cfi_endproc + 4623 .LFE167: + 4625 .section .text.HAL_TIMEx_ConfigCommutEvent_IT,"ax",%progbits + 4626 .align 1 + 4627 .global HAL_TIMEx_ConfigCommutEvent_IT + 4628 .syntax unified + 4629 .thumb + 4630 .thumb_func + 4631 .fpu fpv5-d16 + 4633 HAL_TIMEx_ConfigCommutEvent_IT: + 4634 .LVL319: + 4635 .LFB168: +1852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 4636 .loc 1 1852 1 is_stmt 1 view -0 + 4637 .cfi_startproc + 4638 @ args = 0, pretend = 0, frame = 0 + 4639 @ frame_needed = 0, uses_anonymous_args = 0 + 4640 @ link register save eliminated. +1854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + 4641 .loc 1 1854 3 view .LVU1270 +1855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4642 .loc 1 1855 3 view .LVU1271 +1857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4643 .loc 1 1857 3 view .LVU1272 +1857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4644 .loc 1 1857 3 view .LVU1273 + 4645 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 4646 0004 012B cmp r3, #1 + 4647 0006 36D0 beq .L366 +1852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 4648 .loc 1 1852 1 is_stmt 0 discriminator 2 view .LVU1274 + 4649 0008 10B4 push {r4} + 4650 .LCFI32: + 4651 .cfi_def_cfa_offset 4 + 4652 .cfi_offset 4, -4 +1857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4653 .loc 1 1857 3 is_stmt 1 discriminator 2 view .LVU1275 + 4654 000a 0123 movs r3, #1 + 4655 000c 80F83C30 strb r3, [r0, #60] +1857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4656 .loc 1 1857 3 discriminator 2 view .LVU1276 + ARM GAS /tmp/cc7KL1Mv.s page 149 + + +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + 4657 .loc 1 1859 3 discriminator 2 view .LVU1277 +1859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + 4658 .loc 1 1859 6 is_stmt 0 discriminator 2 view .LVU1278 + 4659 0010 1029 cmp r1, #16 + 4660 0012 18BF it ne + 4661 0014 0029 cmpne r1, #0 + 4662 0016 06D0 beq .L363 +1860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4663 .loc 1 1860 54 view .LVU1279 + 4664 0018 3029 cmp r1, #48 + 4665 001a 14BF ite ne + 4666 001c 0023 movne r3, #0 + 4667 001e 0123 moveq r3, #1 +1860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4668 .loc 1 1860 37 view .LVU1280 + 4669 0020 2029 cmp r1, #32 + 4670 0022 00D0 beq .L363 + 4671 0024 43B1 cbz r3, .L364 + 4672 .L363: +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; + 4673 .loc 1 1863 5 is_stmt 1 view .LVU1281 +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; + 4674 .loc 1 1863 9 is_stmt 0 view .LVU1282 + 4675 0026 0468 ldr r4, [r0] +1863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; + 4676 .loc 1 1863 26 view .LVU1283 + 4677 0028 A368 ldr r3, [r4, #8] + 4678 002a 23F07003 bic r3, r3, #112 + 4679 002e A360 str r3, [r4, #8] +1864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4680 .loc 1 1864 5 is_stmt 1 view .LVU1284 +1864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4681 .loc 1 1864 9 is_stmt 0 view .LVU1285 + 4682 0030 0468 ldr r4, [r0] +1864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4683 .loc 1 1864 26 view .LVU1286 + 4684 0032 A368 ldr r3, [r4, #8] + 4685 0034 1943 orrs r1, r1, r3 + 4686 .LVL320: +1864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4687 .loc 1 1864 26 view .LVU1287 + 4688 0036 A160 str r1, [r4, #8] + 4689 .L364: +1868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ + 4690 .loc 1 1868 3 is_stmt 1 view .LVU1288 +1868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ + 4691 .loc 1 1868 7 is_stmt 0 view .LVU1289 + 4692 0038 0168 ldr r1, [r0] +1868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ + 4693 .loc 1 1868 23 view .LVU1290 + 4694 003a 4B68 ldr r3, [r1, #4] + 4695 003c 43F00103 orr r3, r3, #1 + 4696 0040 4B60 str r3, [r1, #4] +1870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; + 4697 .loc 1 1870 3 is_stmt 1 view .LVU1291 +1870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; + ARM GAS /tmp/cc7KL1Mv.s page 150 + + + 4698 .loc 1 1870 7 is_stmt 0 view .LVU1292 + 4699 0042 0168 ldr r1, [r0] +1870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; + 4700 .loc 1 1870 23 view .LVU1293 + 4701 0044 4B68 ldr r3, [r1, #4] + 4702 0046 23F00403 bic r3, r3, #4 + 4703 004a 4B60 str r3, [r1, #4] +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4704 .loc 1 1871 3 is_stmt 1 view .LVU1294 +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4705 .loc 1 1871 7 is_stmt 0 view .LVU1295 + 4706 004c 0168 ldr r1, [r0] +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4707 .loc 1 1871 23 view .LVU1296 + 4708 004e 4B68 ldr r3, [r1, #4] + 4709 0050 1A43 orrs r2, r2, r3 + 4710 .LVL321: +1871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4711 .loc 1 1871 23 view .LVU1297 + 4712 0052 4A60 str r2, [r1, #4] +1874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4713 .loc 1 1874 3 is_stmt 1 view .LVU1298 + 4714 0054 0268 ldr r2, [r0] + 4715 0056 D368 ldr r3, [r2, #12] + 4716 0058 23F40053 bic r3, r3, #8192 + 4717 005c D360 str r3, [r2, #12] +1877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4718 .loc 1 1877 3 view .LVU1299 + 4719 005e 0268 ldr r2, [r0] + 4720 0060 D368 ldr r3, [r2, #12] + 4721 0062 43F02003 orr r3, r3, #32 + 4722 0066 D360 str r3, [r2, #12] +1879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4723 .loc 1 1879 3 view .LVU1300 +1879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4724 .loc 1 1879 3 view .LVU1301 + 4725 0068 0023 movs r3, #0 + 4726 006a 80F83C30 strb r3, [r0, #60] +1879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4727 .loc 1 1879 3 view .LVU1302 +1881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4728 .loc 1 1881 3 view .LVU1303 +1881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4729 .loc 1 1881 10 is_stmt 0 view .LVU1304 + 4730 006e 1846 mov r0, r3 + 4731 .LVL322: +1882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4732 .loc 1 1882 1 view .LVU1305 + 4733 0070 5DF8044B ldr r4, [sp], #4 + 4734 .LCFI33: + 4735 .cfi_restore 4 + 4736 .cfi_def_cfa_offset 0 + 4737 0074 7047 bx lr + 4738 .LVL323: + 4739 .L366: +1857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4740 .loc 1 1857 3 view .LVU1306 + ARM GAS /tmp/cc7KL1Mv.s page 151 + + + 4741 0076 0220 movs r0, #2 + 4742 .LVL324: +1882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4743 .loc 1 1882 1 view .LVU1307 + 4744 0078 7047 bx lr + 4745 .cfi_endproc + 4746 .LFE168: + 4748 .section .text.HAL_TIMEx_ConfigCommutEvent_DMA,"ax",%progbits + 4749 .align 1 + 4750 .global HAL_TIMEx_ConfigCommutEvent_DMA + 4751 .syntax unified + 4752 .thumb + 4753 .thumb_func + 4754 .fpu fpv5-d16 + 4756 HAL_TIMEx_ConfigCommutEvent_DMA: + 4757 .LVL325: + 4758 .LFB169: +1909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 4759 .loc 1 1909 1 is_stmt 1 view -0 + 4760 .cfi_startproc + 4761 @ args = 0, pretend = 0, frame = 0 + 4762 @ frame_needed = 0, uses_anonymous_args = 0 + 4763 @ link register save eliminated. +1911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_INTERNAL_TRIGGEREVENT_SELECTION(InputTrigger)); + 4764 .loc 1 1911 3 view .LVU1309 +1912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4765 .loc 1 1912 3 view .LVU1310 +1914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4766 .loc 1 1914 3 view .LVU1311 +1914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4767 .loc 1 1914 3 view .LVU1312 + 4768 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 4769 0004 012B cmp r3, #1 + 4770 0006 3FD0 beq .L376 +1909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check the parameters */ + 4771 .loc 1 1909 1 is_stmt 0 discriminator 2 view .LVU1313 + 4772 0008 10B4 push {r4} + 4773 .LCFI34: + 4774 .cfi_def_cfa_offset 4 + 4775 .cfi_offset 4, -4 +1914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4776 .loc 1 1914 3 is_stmt 1 discriminator 2 view .LVU1314 + 4777 000a 0123 movs r3, #1 + 4778 000c 80F83C30 strb r3, [r0, #60] +1914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4779 .loc 1 1914 3 discriminator 2 view .LVU1315 +1916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + 4780 .loc 1 1916 3 discriminator 2 view .LVU1316 +1916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** (InputTrigger == TIM_TS_ITR2) || (InputTrigger == TIM_TS_ITR3)) + 4781 .loc 1 1916 6 is_stmt 0 discriminator 2 view .LVU1317 + 4782 0010 1029 cmp r1, #16 + 4783 0012 18BF it ne + 4784 0014 0029 cmpne r1, #0 + 4785 0016 06D0 beq .L373 +1917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4786 .loc 1 1917 54 view .LVU1318 + 4787 0018 3029 cmp r1, #48 + ARM GAS /tmp/cc7KL1Mv.s page 152 + + + 4788 001a 14BF ite ne + 4789 001c 0023 movne r3, #0 + 4790 001e 0123 moveq r3, #1 +1917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4791 .loc 1 1917 37 view .LVU1319 + 4792 0020 2029 cmp r1, #32 + 4793 0022 00D0 beq .L373 + 4794 0024 43B1 cbz r3, .L374 + 4795 .L373: +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; + 4796 .loc 1 1920 5 is_stmt 1 view .LVU1320 +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; + 4797 .loc 1 1920 9 is_stmt 0 view .LVU1321 + 4798 0026 0468 ldr r4, [r0] +1920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->SMCR |= InputTrigger; + 4799 .loc 1 1920 26 view .LVU1322 + 4800 0028 A368 ldr r3, [r4, #8] + 4801 002a 23F07003 bic r3, r3, #112 + 4802 002e A360 str r3, [r4, #8] +1921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4803 .loc 1 1921 5 is_stmt 1 view .LVU1323 +1921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4804 .loc 1 1921 9 is_stmt 0 view .LVU1324 + 4805 0030 0468 ldr r4, [r0] +1921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4806 .loc 1 1921 26 view .LVU1325 + 4807 0032 A368 ldr r3, [r4, #8] + 4808 0034 1943 orrs r1, r1, r3 + 4809 .LVL326: +1921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4810 .loc 1 1921 26 view .LVU1326 + 4811 0036 A160 str r1, [r4, #8] + 4812 .L374: +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ + 4813 .loc 1 1925 3 is_stmt 1 view .LVU1327 +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ + 4814 .loc 1 1925 7 is_stmt 0 view .LVU1328 + 4815 0038 0168 ldr r1, [r0] +1925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the Commutation event source */ + 4816 .loc 1 1925 23 view .LVU1329 + 4817 003a 4B68 ldr r3, [r1, #4] + 4818 003c 43F00103 orr r3, r3, #1 + 4819 0040 4B60 str r3, [r1, #4] +1927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; + 4820 .loc 1 1927 3 is_stmt 1 view .LVU1330 +1927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; + 4821 .loc 1 1927 7 is_stmt 0 view .LVU1331 + 4822 0042 0168 ldr r1, [r0] +1927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->Instance->CR2 |= CommutationSource; + 4823 .loc 1 1927 23 view .LVU1332 + 4824 0044 4B68 ldr r3, [r1, #4] + 4825 0046 23F00403 bic r3, r3, #4 + 4826 004a 4B60 str r3, [r1, #4] +1928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4827 .loc 1 1928 3 is_stmt 1 view .LVU1333 +1928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4828 .loc 1 1928 7 is_stmt 0 view .LVU1334 + ARM GAS /tmp/cc7KL1Mv.s page 153 + + + 4829 004c 0168 ldr r1, [r0] +1928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4830 .loc 1 1928 23 view .LVU1335 + 4831 004e 4B68 ldr r3, [r1, #4] + 4832 0050 1A43 orrs r2, r2, r3 + 4833 .LVL327: +1928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4834 .loc 1 1928 23 view .LVU1336 + 4835 0052 4A60 str r2, [r1, #4] +1932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + 4836 .loc 1 1932 3 is_stmt 1 view .LVU1337 +1932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + 4837 .loc 1 1932 13 is_stmt 0 view .LVU1338 + 4838 0054 436B ldr r3, [r0, #52] +1932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** htim->hdma[TIM_DMA_ID_COMMUTATION]->XferHalfCpltCallback = TIMEx_DMACommutationHalfCplt; + 4839 .loc 1 1932 56 view .LVU1339 + 4840 0056 0D4A ldr r2, .L381 + 4841 0058 DA63 str r2, [r3, #60] +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ + 4842 .loc 1 1933 3 is_stmt 1 view .LVU1340 +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ + 4843 .loc 1 1933 13 is_stmt 0 view .LVU1341 + 4844 005a 436B ldr r3, [r0, #52] +1933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set the DMA error callback */ + 4845 .loc 1 1933 60 view .LVU1342 + 4846 005c 0C4A ldr r2, .L381+4 + 4847 005e 1A64 str r2, [r3, #64] +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4848 .loc 1 1935 3 is_stmt 1 view .LVU1343 +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4849 .loc 1 1935 13 is_stmt 0 view .LVU1344 + 4850 0060 436B ldr r3, [r0, #52] +1935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4851 .loc 1 1935 57 view .LVU1345 + 4852 0062 0C4A ldr r2, .L381+8 + 4853 0064 DA64 str r2, [r3, #76] +1938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4854 .loc 1 1938 3 is_stmt 1 view .LVU1346 + 4855 0066 0268 ldr r2, [r0] + 4856 0068 D368 ldr r3, [r2, #12] + 4857 006a 23F02003 bic r3, r3, #32 + 4858 006e D360 str r3, [r2, #12] +1941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4859 .loc 1 1941 3 view .LVU1347 + 4860 0070 0268 ldr r2, [r0] + 4861 0072 D368 ldr r3, [r2, #12] + 4862 0074 43F40053 orr r3, r3, #8192 + 4863 0078 D360 str r3, [r2, #12] +1943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4864 .loc 1 1943 3 view .LVU1348 +1943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4865 .loc 1 1943 3 view .LVU1349 + 4866 007a 0023 movs r3, #0 + 4867 007c 80F83C30 strb r3, [r0, #60] +1943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4868 .loc 1 1943 3 view .LVU1350 +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + ARM GAS /tmp/cc7KL1Mv.s page 154 + + + 4869 .loc 1 1945 3 view .LVU1351 +1945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4870 .loc 1 1945 10 is_stmt 0 view .LVU1352 + 4871 0080 1846 mov r0, r3 + 4872 .LVL328: +1946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4873 .loc 1 1946 1 view .LVU1353 + 4874 0082 5DF8044B ldr r4, [sp], #4 + 4875 .LCFI35: + 4876 .cfi_restore 4 + 4877 .cfi_def_cfa_offset 0 + 4878 0086 7047 bx lr + 4879 .LVL329: + 4880 .L376: +1914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4881 .loc 1 1914 3 view .LVU1354 + 4882 0088 0220 movs r0, #2 + 4883 .LVL330: +1946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4884 .loc 1 1946 1 view .LVU1355 + 4885 008a 7047 bx lr + 4886 .L382: + 4887 .align 2 + 4888 .L381: + 4889 008c 00000000 .word TIMEx_DMACommutationCplt + 4890 0090 00000000 .word TIMEx_DMACommutationHalfCplt + 4891 0094 00000000 .word TIM_DMAError + 4892 .cfi_endproc + 4893 .LFE169: + 4895 .section .text.HAL_TIMEx_MasterConfigSynchronization,"ax",%progbits + 4896 .align 1 + 4897 .global HAL_TIMEx_MasterConfigSynchronization + 4898 .syntax unified + 4899 .thumb + 4900 .thumb_func + 4901 .fpu fpv5-d16 + 4903 HAL_TIMEx_MasterConfigSynchronization: + 4904 .LVL331: + 4905 .LFB170: +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpcr2; + 4906 .loc 1 1958 1 is_stmt 1 view -0 + 4907 .cfi_startproc + 4908 @ args = 0, pretend = 0, frame = 0 + 4909 @ frame_needed = 0, uses_anonymous_args = 0 + 4910 @ link register save eliminated. +1959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpsmcr; + 4911 .loc 1 1959 3 view .LVU1357 +1960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4912 .loc 1 1960 3 view .LVU1358 +1963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); + 4913 .loc 1 1963 3 view .LVU1359 +1964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); + 4914 .loc 1 1964 3 view .LVU1360 +1965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4915 .loc 1 1965 3 view .LVU1361 +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4916 .loc 1 1968 3 view .LVU1362 + ARM GAS /tmp/cc7KL1Mv.s page 155 + + +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4917 .loc 1 1968 3 view .LVU1363 + 4918 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 4919 0004 012B cmp r3, #1 + 4920 0006 45D0 beq .L388 +1958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmpcr2; + 4921 .loc 1 1958 1 is_stmt 0 discriminator 2 view .LVU1364 + 4922 0008 70B4 push {r4, r5, r6} + 4923 .LCFI36: + 4924 .cfi_def_cfa_offset 12 + 4925 .cfi_offset 4, -12 + 4926 .cfi_offset 5, -8 + 4927 .cfi_offset 6, -4 +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4928 .loc 1 1968 3 is_stmt 1 discriminator 2 view .LVU1365 + 4929 000a 0123 movs r3, #1 + 4930 000c 80F83C30 strb r3, [r0, #60] +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4931 .loc 1 1968 3 discriminator 2 view .LVU1366 +1971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4932 .loc 1 1971 3 discriminator 2 view .LVU1367 +1971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4933 .loc 1 1971 15 is_stmt 0 discriminator 2 view .LVU1368 + 4934 0010 0223 movs r3, #2 + 4935 0012 80F83D30 strb r3, [r0, #61] +1974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4936 .loc 1 1974 3 is_stmt 1 discriminator 2 view .LVU1369 +1974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4937 .loc 1 1974 16 is_stmt 0 discriminator 2 view .LVU1370 + 4938 0016 0368 ldr r3, [r0] +1974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4939 .loc 1 1974 10 discriminator 2 view .LVU1371 + 4940 0018 5A68 ldr r2, [r3, #4] + 4941 .LVL332: +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4942 .loc 1 1977 3 is_stmt 1 discriminator 2 view .LVU1372 +1977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4943 .loc 1 1977 11 is_stmt 0 discriminator 2 view .LVU1373 + 4944 001a 9C68 ldr r4, [r3, #8] + 4945 .LVL333: +1980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4946 .loc 1 1980 3 is_stmt 1 discriminator 2 view .LVU1374 +1980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4947 .loc 1 1980 6 is_stmt 0 discriminator 2 view .LVU1375 + 4948 001c 1E4E ldr r6, .L393 + 4949 001e 1F4D ldr r5, .L393+4 + 4950 0020 AB42 cmp r3, r5 + 4951 0022 18BF it ne + 4952 0024 B342 cmpne r3, r6 + 4953 0026 03D1 bne .L385 +1983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4954 .loc 1 1983 5 is_stmt 1 view .LVU1376 +1986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the TRGO2 source*/ + 4955 .loc 1 1986 5 view .LVU1377 +1986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the TRGO2 source*/ + 4956 .loc 1 1986 12 is_stmt 0 view .LVU1378 + 4957 0028 22F47002 bic r2, r2, #15728640 + ARM GAS /tmp/cc7KL1Mv.s page 156 + + + 4958 .LVL334: +1988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4959 .loc 1 1988 5 is_stmt 1 view .LVU1379 +1988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4960 .loc 1 1988 28 is_stmt 0 view .LVU1380 + 4961 002c 4D68 ldr r5, [r1, #4] +1988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 4962 .loc 1 1988 12 view .LVU1381 + 4963 002e 2A43 orrs r2, r2, r5 + 4964 .LVL335: + 4965 .L385: +1992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the TRGO source */ + 4966 .loc 1 1992 3 is_stmt 1 view .LVU1382 +1992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Select the TRGO source */ + 4967 .loc 1 1992 10 is_stmt 0 view .LVU1383 + 4968 0030 22F07002 bic r2, r2, #112 + 4969 .LVL336: +1994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4970 .loc 1 1994 3 is_stmt 1 view .LVU1384 +1994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4971 .loc 1 1994 10 is_stmt 0 view .LVU1385 + 4972 0034 0D68 ldr r5, [r1] + 4973 0036 2A43 orrs r2, r2, r5 + 4974 .LVL337: +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4975 .loc 1 1997 3 is_stmt 1 view .LVU1386 +1997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 4976 .loc 1 1997 23 is_stmt 0 view .LVU1387 + 4977 0038 5A60 str r2, [r3, #4] +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4978 .loc 1 1999 3 is_stmt 1 view .LVU1388 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4979 .loc 1 1999 7 is_stmt 0 view .LVU1389 + 4980 003a 0368 ldr r3, [r0] +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4981 .loc 1 1999 6 view .LVU1390 + 4982 003c 164A ldr r2, .L393 + 4983 .LVL338: +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4984 .loc 1 1999 6 view .LVU1391 + 4985 003e B3F1804F cmp r3, #1073741824 + 4986 0042 18BF it ne + 4987 0044 9342 cmpne r3, r2 + 4988 0046 17D0 beq .L386 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4989 .loc 1 1999 7 discriminator 1 view .LVU1392 + 4990 0048 A2F57C42 sub r2, r2, #64512 + 4991 004c 9342 cmp r3, r2 + 4992 004e 13D0 beq .L386 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4993 .loc 1 1999 7 discriminator 2 view .LVU1393 + 4994 0050 02F58062 add r2, r2, #1024 + 4995 0054 9342 cmp r3, r2 + 4996 0056 0FD0 beq .L386 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 4997 .loc 1 1999 7 discriminator 3 view .LVU1394 + 4998 0058 02F58062 add r2, r2, #1024 + ARM GAS /tmp/cc7KL1Mv.s page 157 + + + 4999 005c 9342 cmp r3, r2 + 5000 005e 0BD0 beq .L386 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5001 .loc 1 1999 7 discriminator 4 view .LVU1395 + 5002 0060 02F57842 add r2, r2, #63488 + 5003 0064 9342 cmp r3, r2 + 5004 0066 07D0 beq .L386 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5005 .loc 1 1999 7 discriminator 5 view .LVU1396 + 5006 0068 02F57052 add r2, r2, #15360 + 5007 006c 9342 cmp r3, r2 + 5008 006e 03D0 beq .L386 +1999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5009 .loc 1 1999 7 discriminator 6 view .LVU1397 + 5010 0070 A2F59432 sub r2, r2, #75776 + 5011 0074 9342 cmp r3, r2 + 5012 0076 04D1 bne .L387 + 5013 .L386: +2002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set master mode */ + 5014 .loc 1 2002 5 is_stmt 1 view .LVU1398 +2002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Set master mode */ + 5015 .loc 1 2002 13 is_stmt 0 view .LVU1399 + 5016 0078 24F08004 bic r4, r4, #128 + 5017 .LVL339: +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5018 .loc 1 2004 5 is_stmt 1 view .LVU1400 +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5019 .loc 1 2004 29 is_stmt 0 view .LVU1401 + 5020 007c 8A68 ldr r2, [r1, #8] +2004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5021 .loc 1 2004 13 view .LVU1402 + 5022 007e 1443 orrs r4, r4, r2 + 5023 .LVL340: +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5024 .loc 1 2007 5 is_stmt 1 view .LVU1403 +2007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5025 .loc 1 2007 26 is_stmt 0 view .LVU1404 + 5026 0080 9C60 str r4, [r3, #8] + 5027 .L387: +2011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5028 .loc 1 2011 3 is_stmt 1 view .LVU1405 +2011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5029 .loc 1 2011 15 is_stmt 0 view .LVU1406 + 5030 0082 0123 movs r3, #1 + 5031 0084 80F83D30 strb r3, [r0, #61] +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5032 .loc 1 2013 3 is_stmt 1 view .LVU1407 +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5033 .loc 1 2013 3 view .LVU1408 + 5034 0088 0023 movs r3, #0 + 5035 008a 80F83C30 strb r3, [r0, #60] +2013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5036 .loc 1 2013 3 view .LVU1409 +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5037 .loc 1 2015 3 view .LVU1410 +2015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5038 .loc 1 2015 10 is_stmt 0 view .LVU1411 + ARM GAS /tmp/cc7KL1Mv.s page 158 + + + 5039 008e 1846 mov r0, r3 + 5040 .LVL341: +2016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5041 .loc 1 2016 1 view .LVU1412 + 5042 0090 70BC pop {r4, r5, r6} + 5043 .LCFI37: + 5044 .cfi_restore 6 + 5045 .cfi_restore 5 + 5046 .cfi_restore 4 + 5047 .cfi_def_cfa_offset 0 + 5048 .LVL342: +2016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5049 .loc 1 2016 1 view .LVU1413 + 5050 0092 7047 bx lr + 5051 .LVL343: + 5052 .L388: +1968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5053 .loc 1 1968 3 view .LVU1414 + 5054 0094 0220 movs r0, #2 + 5055 .LVL344: +2016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5056 .loc 1 2016 1 view .LVU1415 + 5057 0096 7047 bx lr + 5058 .L394: + 5059 .align 2 + 5060 .L393: + 5061 0098 00000140 .word 1073807360 + 5062 009c 00040140 .word 1073808384 + 5063 .cfi_endproc + 5064 .LFE170: + 5066 .section .text.HAL_TIMEx_ConfigBreakDeadTime,"ax",%progbits + 5067 .align 1 + 5068 .global HAL_TIMEx_ConfigBreakDeadTime + 5069 .syntax unified + 5070 .thumb + 5071 .thumb_func + 5072 .fpu fpv5-d16 + 5074 HAL_TIMEx_ConfigBreakDeadTime: + 5075 .LVL345: + 5076 .LFB171: +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Keep this variable initialized to 0 as it is used to configure BDTR register */ + 5077 .loc 1 2031 1 is_stmt 1 view -0 + 5078 .cfi_startproc + 5079 @ args = 0, pretend = 0, frame = 0 + 5080 @ frame_needed = 0, uses_anonymous_args = 0 + 5081 @ link register save eliminated. +2033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5082 .loc 1 2033 3 view .LVU1417 +2036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_OSSR_STATE(sBreakDeadTimeConfig->OffStateRunMode)); + 5083 .loc 1 2036 3 view .LVU1418 +2037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_OSSI_STATE(sBreakDeadTimeConfig->OffStateIDLEMode)); + 5084 .loc 1 2037 3 view .LVU1419 +2038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_LOCK_LEVEL(sBreakDeadTimeConfig->LockLevel)); + 5085 .loc 1 2038 3 view .LVU1420 +2039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_DEADTIME(sBreakDeadTimeConfig->DeadTime)); + 5086 .loc 1 2039 3 view .LVU1421 +2040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK_STATE(sBreakDeadTimeConfig->BreakState)); + ARM GAS /tmp/cc7KL1Mv.s page 159 + + + 5087 .loc 1 2040 3 view .LVU1422 +2041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK_POLARITY(sBreakDeadTimeConfig->BreakPolarity)); + 5088 .loc 1 2041 3 view .LVU1423 +2042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->BreakFilter)); + 5089 .loc 1 2042 3 view .LVU1424 +2043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_AUTOMATIC_OUTPUT_STATE(sBreakDeadTimeConfig->AutomaticOutput)); + 5090 .loc 1 2043 3 view .LVU1425 +2044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5091 .loc 1 2044 3 view .LVU1426 +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5092 .loc 1 2047 3 view .LVU1427 +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5093 .loc 1 2047 3 view .LVU1428 + 5094 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 5095 0004 012B cmp r3, #1 + 5096 0006 3CD0 beq .L398 +2031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Keep this variable initialized to 0 as it is used to configure BDTR register */ + 5097 .loc 1 2031 1 is_stmt 0 discriminator 2 view .LVU1429 + 5098 0008 30B4 push {r4, r5} + 5099 .LCFI38: + 5100 .cfi_def_cfa_offset 8 + 5101 .cfi_offset 4, -8 + 5102 .cfi_offset 5, -4 +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5103 .loc 1 2047 3 is_stmt 1 discriminator 2 view .LVU1430 + 5104 000a 0123 movs r3, #1 + 5105 000c 80F83C30 strb r3, [r0, #60] +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5106 .loc 1 2047 3 discriminator 2 view .LVU1431 +2053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, sBreakDeadTimeConfig->LockLevel); + 5107 .loc 1 2053 3 discriminator 2 view .LVU1432 + 5108 0010 CB68 ldr r3, [r1, #12] + 5109 .LVL346: +2054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode); + 5110 .loc 1 2054 3 discriminator 2 view .LVU1433 + 5111 0012 23F44073 bic r3, r3, #768 + 5112 .LVL347: +2054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, sBreakDeadTimeConfig->OffStateIDLEMode); + 5113 .loc 1 2054 3 is_stmt 0 discriminator 2 view .LVU1434 + 5114 0016 8A68 ldr r2, [r1, #8] + 5115 0018 1343 orrs r3, r3, r2 + 5116 .LVL348: +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode); + 5117 .loc 1 2055 3 is_stmt 1 discriminator 2 view .LVU1435 + 5118 001a 23F48063 bic r3, r3, #1024 + 5119 .LVL349: +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode); + 5120 .loc 1 2055 3 is_stmt 0 discriminator 2 view .LVU1436 + 5121 001e 4A68 ldr r2, [r1, #4] + 5122 .LVL350: +2055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, sBreakDeadTimeConfig->OffStateRunMode); + 5123 .loc 1 2055 3 discriminator 2 view .LVU1437 + 5124 0020 1343 orrs r3, r3, r2 + 5125 .LVL351: +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState); + 5126 .loc 1 2056 3 is_stmt 1 discriminator 2 view .LVU1438 + 5127 0022 23F40063 bic r3, r3, #2048 + ARM GAS /tmp/cc7KL1Mv.s page 160 + + + 5128 .LVL352: +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState); + 5129 .loc 1 2056 3 is_stmt 0 discriminator 2 view .LVU1439 + 5130 0026 0A68 ldr r2, [r1] + 5131 .LVL353: +2056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, sBreakDeadTimeConfig->BreakState); + 5132 .loc 1 2056 3 discriminator 2 view .LVU1440 + 5133 0028 1343 orrs r3, r3, r2 + 5134 .LVL354: +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity); + 5135 .loc 1 2057 3 is_stmt 1 discriminator 2 view .LVU1441 + 5136 002a 23F48053 bic r3, r3, #4096 + 5137 .LVL355: +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity); + 5138 .loc 1 2057 3 is_stmt 0 discriminator 2 view .LVU1442 + 5139 002e 0A69 ldr r2, [r1, #16] + 5140 .LVL356: +2057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, sBreakDeadTimeConfig->BreakPolarity); + 5141 .loc 1 2057 3 discriminator 2 view .LVU1443 + 5142 0030 1343 orrs r3, r3, r2 + 5143 .LVL357: +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput); + 5144 .loc 1 2058 3 is_stmt 1 discriminator 2 view .LVU1444 + 5145 0032 23F40053 bic r3, r3, #8192 + 5146 .LVL358: +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput); + 5147 .loc 1 2058 3 is_stmt 0 discriminator 2 view .LVU1445 + 5148 0036 4A69 ldr r2, [r1, #20] + 5149 .LVL359: +2058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, sBreakDeadTimeConfig->AutomaticOutput); + 5150 .loc 1 2058 3 discriminator 2 view .LVU1446 + 5151 0038 1343 orrs r3, r3, r2 + 5152 .LVL360: +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, (sBreakDeadTimeConfig->BreakFilter << TIM_BDTR_BKF_Pos)); + 5153 .loc 1 2059 3 is_stmt 1 discriminator 2 view .LVU1447 + 5154 003a 23F48043 bic r3, r3, #16384 + 5155 .LVL361: +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, (sBreakDeadTimeConfig->BreakFilter << TIM_BDTR_BKF_Pos)); + 5156 .loc 1 2059 3 is_stmt 0 discriminator 2 view .LVU1448 + 5157 003e 8A6A ldr r2, [r1, #40] + 5158 .LVL362: +2059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, (sBreakDeadTimeConfig->BreakFilter << TIM_BDTR_BKF_Pos)); + 5159 .loc 1 2059 3 discriminator 2 view .LVU1449 + 5160 0040 1343 orrs r3, r3, r2 + 5161 .LVL363: +2060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5162 .loc 1 2060 3 is_stmt 1 discriminator 2 view .LVU1450 + 5163 0042 23F47023 bic r3, r3, #983040 + 5164 .LVL364: +2060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5165 .loc 1 2060 3 is_stmt 0 discriminator 2 view .LVU1451 + 5166 0046 8A69 ldr r2, [r1, #24] + 5167 .LVL365: +2060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5168 .loc 1 2060 3 discriminator 2 view .LVU1452 + 5169 0048 43EA0243 orr r3, r3, r2, lsl #16 + 5170 .LVL366: + ARM GAS /tmp/cc7KL1Mv.s page 161 + + +2062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5171 .loc 1 2062 3 is_stmt 1 discriminator 2 view .LVU1453 +2062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5172 .loc 1 2062 7 is_stmt 0 discriminator 2 view .LVU1454 + 5173 004c 0268 ldr r2, [r0] +2062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5174 .loc 1 2062 6 discriminator 2 view .LVU1455 + 5175 004e 0E4D ldr r5, .L403 + 5176 0050 0E4C ldr r4, .L403+4 + 5177 0052 A242 cmp r2, r4 + 5178 0054 18BF it ne + 5179 0056 AA42 cmpne r2, r5 + 5180 0058 0CD1 bne .L397 +2065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK2_POLARITY(sBreakDeadTimeConfig->Break2Polarity)); + 5181 .loc 1 2065 5 is_stmt 1 view .LVU1456 +2066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAK_FILTER(sBreakDeadTimeConfig->Break2Filter)); + 5182 .loc 1 2066 5 view .LVU1457 +2067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5183 .loc 1 2067 5 view .LVU1458 +2070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, sBreakDeadTimeConfig->Break2State); + 5184 .loc 1 2070 5 view .LVU1459 + 5185 005a 23F47003 bic r3, r3, #15728640 + 5186 .LVL367: +2070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, sBreakDeadTimeConfig->Break2State); + 5187 .loc 1 2070 5 is_stmt 0 view .LVU1460 + 5188 005e 4C6A ldr r4, [r1, #36] + 5189 0060 43EA0453 orr r3, r3, r4, lsl #20 + 5190 .LVL368: +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, sBreakDeadTimeConfig->Break2Polarity); + 5191 .loc 1 2071 5 is_stmt 1 view .LVU1461 + 5192 0064 23F08073 bic r3, r3, #16777216 + 5193 .LVL369: +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, sBreakDeadTimeConfig->Break2Polarity); + 5194 .loc 1 2071 5 is_stmt 0 view .LVU1462 + 5195 0068 CC69 ldr r4, [r1, #28] + 5196 .LVL370: +2071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, sBreakDeadTimeConfig->Break2Polarity); + 5197 .loc 1 2071 5 view .LVU1463 + 5198 006a 2343 orrs r3, r3, r4 + 5199 .LVL371: +2072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5200 .loc 1 2072 5 is_stmt 1 view .LVU1464 + 5201 006c 23F00073 bic r3, r3, #33554432 + 5202 .LVL372: +2072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5203 .loc 1 2072 5 is_stmt 0 view .LVU1465 + 5204 0070 096A ldr r1, [r1, #32] + 5205 .LVL373: +2072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5206 .loc 1 2072 5 view .LVU1466 + 5207 0072 0B43 orrs r3, r3, r1 + 5208 .LVL374: + 5209 .L397: +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5210 .loc 1 2076 3 is_stmt 1 view .LVU1467 +2076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5211 .loc 1 2076 24 is_stmt 0 view .LVU1468 + ARM GAS /tmp/cc7KL1Mv.s page 162 + + + 5212 0074 5364 str r3, [r2, #68] +2078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5213 .loc 1 2078 3 is_stmt 1 view .LVU1469 +2078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5214 .loc 1 2078 3 view .LVU1470 + 5215 0076 0023 movs r3, #0 + 5216 .LVL375: +2078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5217 .loc 1 2078 3 is_stmt 0 view .LVU1471 + 5218 0078 80F83C30 strb r3, [r0, #60] + 5219 .LVL376: +2078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5220 .loc 1 2078 3 is_stmt 1 view .LVU1472 +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5221 .loc 1 2080 3 view .LVU1473 +2080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5222 .loc 1 2080 10 is_stmt 0 view .LVU1474 + 5223 007c 1846 mov r0, r3 + 5224 .LVL377: +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if defined(TIM_BREAK_INPUT_SUPPORT) + 5225 .loc 1 2081 1 view .LVU1475 + 5226 007e 30BC pop {r4, r5} + 5227 .LCFI39: + 5228 .cfi_restore 5 + 5229 .cfi_restore 4 + 5230 .cfi_def_cfa_offset 0 + 5231 0080 7047 bx lr + 5232 .LVL378: + 5233 .L398: +2047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5234 .loc 1 2047 3 view .LVU1476 + 5235 0082 0220 movs r0, #2 + 5236 .LVL379: +2081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if defined(TIM_BREAK_INPUT_SUPPORT) + 5237 .loc 1 2081 1 view .LVU1477 + 5238 0084 7047 bx lr + 5239 .L404: + 5240 0086 00BF .align 2 + 5241 .L403: + 5242 0088 00000140 .word 1073807360 + 5243 008c 00040140 .word 1073808384 + 5244 .cfi_endproc + 5245 .LFE171: + 5247 .section .text.HAL_TIMEx_ConfigBreakInput,"ax",%progbits + 5248 .align 1 + 5249 .global HAL_TIMEx_ConfigBreakInput + 5250 .syntax unified + 5251 .thumb + 5252 .thumb_func + 5253 .fpu fpv5-d16 + 5255 HAL_TIMEx_ConfigBreakInput: + 5256 .LVL380: + 5257 .LFB172: +2097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 5258 .loc 1 2097 1 is_stmt 1 view -0 + 5259 .cfi_startproc + 5260 @ args = 0, pretend = 0, frame = 0 + ARM GAS /tmp/cc7KL1Mv.s page 163 + + + 5261 @ frame_needed = 0, uses_anonymous_args = 0 +2097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 5262 .loc 1 2097 1 is_stmt 0 view .LVU1479 + 5263 0000 0346 mov r3, r0 +2098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmporx; + 5264 .loc 1 2098 3 is_stmt 1 view .LVU1480 + 5265 .LVL381: +2099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t bkin_enable_mask; + 5266 .loc 1 2099 3 view .LVU1481 +2100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t bkin_polarity_mask; + 5267 .loc 1 2100 3 view .LVU1482 +2101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t bkin_enable_bitpos; + 5268 .loc 1 2101 3 view .LVU1483 +2102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t bkin_polarity_bitpos; + 5269 .loc 1 2102 3 view .LVU1484 +2103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5270 .loc 1 2103 3 view .LVU1485 +2106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAKINPUT(BreakInput)); + 5271 .loc 1 2106 3 view .LVU1486 +2107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAKINPUTSOURCE(sBreakInputConfig->Source)); + 5272 .loc 1 2107 3 view .LVU1487 +2108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_BREAKINPUTSOURCE_STATE(sBreakInputConfig->Enable)); + 5273 .loc 1 2108 3 view .LVU1488 +2109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #if defined(DFSDM1_Channel0) + 5274 .loc 1 2109 3 view .LVU1489 +2111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5275 .loc 1 2111 3 view .LVU1490 +2113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5276 .loc 1 2113 5 view .LVU1491 +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5277 .loc 1 2120 3 view .LVU1492 +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5278 .loc 1 2120 3 view .LVU1493 + 5279 0002 90F83C00 ldrb r0, [r0, #60] @ zero_extendqisi2 + 5280 .LVL382: +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5281 .loc 1 2120 3 is_stmt 0 view .LVU1494 + 5282 0006 0128 cmp r0, #1 + 5283 0008 4ED0 beq .L413 +2097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_StatusTypeDef status = HAL_OK; + 5284 .loc 1 2097 1 discriminator 2 view .LVU1495 + 5285 000a F0B5 push {r4, r5, r6, r7, lr} + 5286 .LCFI40: + 5287 .cfi_def_cfa_offset 20 + 5288 .cfi_offset 4, -20 + 5289 .cfi_offset 5, -16 + 5290 .cfi_offset 6, -12 + 5291 .cfi_offset 7, -8 + 5292 .cfi_offset 14, -4 +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5293 .loc 1 2120 3 is_stmt 1 discriminator 2 view .LVU1496 + 5294 000c 0120 movs r0, #1 + 5295 000e 83F83C00 strb r0, [r3, #60] +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5296 .loc 1 2120 3 discriminator 2 view .LVU1497 +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5297 .loc 1 2122 3 discriminator 2 view .LVU1498 + ARM GAS /tmp/cc7KL1Mv.s page 164 + + +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5298 .loc 1 2122 28 is_stmt 0 discriminator 2 view .LVU1499 + 5299 0012 1068 ldr r0, [r2] +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5300 .loc 1 2122 3 discriminator 2 view .LVU1500 + 5301 0014 0128 cmp r0, #1 + 5302 0016 10D0 beq .L414 +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5303 .loc 1 2122 3 view .LVU1501 + 5304 0018 0828 cmp r0, #8 + 5305 001a 15D1 bne .L415 +2136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_polarity_mask = 0U; + 5306 .loc 1 2136 26 view .LVU1502 + 5307 001c 0546 mov r5, r0 +2138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 5308 .loc 1 2138 28 view .LVU1503 + 5309 001e 4FF0000C mov ip, #0 +2137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_polarity_bitpos = 0U; + 5310 .loc 1 2137 26 view .LVU1504 + 5311 0022 E646 mov lr, ip +2135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_enable_bitpos = TIM1_AF1_BKDF1BKE_Pos; + 5312 .loc 1 2135 24 view .LVU1505 + 5313 0024 4FF48074 mov r4, #256 + 5314 .L407: + 5315 .LVL383: +2153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5316 .loc 1 2153 3 is_stmt 1 view .LVU1506 + 5317 0028 0129 cmp r1, #1 + 5318 002a 13D0 beq .L408 + 5319 002c 0229 cmp r1, #2 + 5320 002e 26D0 beq .L409 + 5321 0030 0120 movs r0, #1 + 5322 .LVL384: + 5323 .L410: +2204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5324 .loc 1 2204 3 view .LVU1507 +2204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5325 .loc 1 2204 3 view .LVU1508 + 5326 0032 0022 movs r2, #0 + 5327 0034 83F83C20 strb r2, [r3, #60] +2204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5328 .loc 1 2204 3 view .LVU1509 +2206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5329 .loc 1 2206 3 view .LVU1510 +2207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /*TIM_BREAK_INPUT_SUPPORT */ + 5330 .loc 1 2207 1 is_stmt 0 view .LVU1511 + 5331 0038 F0BD pop {r4, r5, r6, r7, pc} + 5332 .LVL385: + 5333 .L414: +2122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** { + 5334 .loc 1 2122 3 view .LVU1512 + 5335 003a 0446 mov r4, r0 + 5336 003c 4FF0090C mov ip, #9 + 5337 0040 0025 movs r5, #0 + 5338 0042 4FF4007E mov lr, #512 + 5339 0046 EFE7 b .L407 + 5340 .L415: + ARM GAS /tmp/cc7KL1Mv.s page 165 + + +2148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 5341 .loc 1 2148 28 view .LVU1513 + 5342 0048 4FF0000C mov ip, #0 +2147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_polarity_bitpos = 0U; + 5343 .loc 1 2147 26 view .LVU1514 + 5344 004c 6546 mov r5, ip +2146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_enable_bitpos = 0U; + 5345 .loc 1 2146 26 view .LVU1515 + 5346 004e E646 mov lr, ip +2145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** bkin_polarity_mask = 0U; + 5347 .loc 1 2145 24 view .LVU1516 + 5348 0050 6446 mov r4, ip + 5349 0052 E9E7 b .L407 + 5350 .LVL386: + 5351 .L408: +2158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5352 .loc 1 2158 7 is_stmt 1 view .LVU1517 +2158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5353 .loc 1 2158 20 is_stmt 0 view .LVU1518 + 5354 0054 1E68 ldr r6, [r3] +2158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5355 .loc 1 2158 14 view .LVU1519 + 5356 0056 376E ldr r7, [r6, #96] + 5357 .LVL387: +2161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask; + 5358 .loc 1 2161 7 is_stmt 1 view .LVU1520 +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5359 .loc 1 2162 7 view .LVU1521 +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5360 .loc 1 2162 35 is_stmt 0 view .LVU1522 + 5361 0058 5168 ldr r1, [r2, #4] + 5362 .LVL388: +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5363 .loc 1 2162 44 view .LVU1523 + 5364 005a A940 lsls r1, r1, r5 + 5365 005c 7940 eors r1, r1, r7 + 5366 005e 2140 ands r1, r1, r4 +2162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5367 .loc 1 2162 14 view .LVU1524 + 5368 0060 7940 eors r1, r1, r7 + 5369 .LVL389: +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* DFSDM1_Channel0 */ + 5370 .loc 1 2166 7 is_stmt 1 view .LVU1525 +2166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* DFSDM1_Channel0 */ + 5371 .loc 1 2166 10 is_stmt 0 view .LVU1526 + 5372 0062 0828 cmp r0, #8 + 5373 0064 08D0 beq .L411 +2169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask; + 5374 .loc 1 2169 9 is_stmt 1 view .LVU1527 + 5375 .LVL390: +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5376 .loc 1 2170 9 view .LVU1528 +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5377 .loc 1 2170 37 is_stmt 0 view .LVU1529 + 5378 0066 9268 ldr r2, [r2, #8] + 5379 .LVL391: +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + ARM GAS /tmp/cc7KL1Mv.s page 166 + + + 5380 .loc 1 2170 48 view .LVU1530 + 5381 0068 02FA0CFC lsl ip, r2, ip + 5382 .LVL392: +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5383 .loc 1 2170 48 view .LVU1531 + 5384 006c 8CEA010C eor ip, ip, r1 + 5385 0070 0CEA0E0E and lr, ip, lr + 5386 .LVL393: +2170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5387 .loc 1 2170 16 view .LVU1532 + 5388 0074 81EA0E01 eor r1, r1, lr + 5389 .LVL394: + 5390 .L411: +2174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 5391 .loc 1 2174 7 is_stmt 1 view .LVU1533 +2174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 5392 .loc 1 2174 27 is_stmt 0 view .LVU1534 + 5393 0078 3166 str r1, [r6, #96] +2175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5394 .loc 1 2175 7 is_stmt 1 view .LVU1535 +2098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmporx; + 5395 .loc 1 2098 21 is_stmt 0 view .LVU1536 + 5396 007a 0020 movs r0, #0 +2175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5397 .loc 1 2175 7 view .LVU1537 + 5398 007c D9E7 b .L410 + 5399 .LVL395: + 5400 .L409: +2180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5401 .loc 1 2180 7 is_stmt 1 view .LVU1538 +2180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5402 .loc 1 2180 20 is_stmt 0 view .LVU1539 + 5403 007e 1E68 ldr r6, [r3] +2180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5404 .loc 1 2180 14 view .LVU1540 + 5405 0080 776E ldr r7, [r6, #100] + 5406 .LVL396: +2183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx |= (sBreakInputConfig->Enable << bkin_enable_bitpos) & bkin_enable_mask; + 5407 .loc 1 2183 7 is_stmt 1 view .LVU1541 +2184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5408 .loc 1 2184 7 view .LVU1542 +2184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5409 .loc 1 2184 35 is_stmt 0 view .LVU1543 + 5410 0082 5168 ldr r1, [r2, #4] + 5411 .LVL397: +2184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5412 .loc 1 2184 44 view .LVU1544 + 5413 0084 A940 lsls r1, r1, r5 + 5414 0086 7940 eors r1, r1, r7 + 5415 0088 2140 ands r1, r1, r4 +2184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5416 .loc 1 2184 14 view .LVU1545 + 5417 008a 7940 eors r1, r1, r7 + 5418 .LVL398: +2188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* DFSDM1_Channel0 */ + 5419 .loc 1 2188 7 is_stmt 1 view .LVU1546 +2188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* DFSDM1_Channel0 */ + ARM GAS /tmp/cc7KL1Mv.s page 167 + + + 5420 .loc 1 2188 10 is_stmt 0 view .LVU1547 + 5421 008c 0828 cmp r0, #8 + 5422 008e 08D0 beq .L412 +2191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** tmporx |= (sBreakInputConfig->Polarity << bkin_polarity_bitpos) & bkin_polarity_mask; + 5423 .loc 1 2191 9 is_stmt 1 view .LVU1548 + 5424 .LVL399: +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5425 .loc 1 2192 9 view .LVU1549 +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5426 .loc 1 2192 37 is_stmt 0 view .LVU1550 + 5427 0090 9268 ldr r2, [r2, #8] + 5428 .LVL400: +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5429 .loc 1 2192 48 view .LVU1551 + 5430 0092 02FA0CFC lsl ip, r2, ip + 5431 .LVL401: +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5432 .loc 1 2192 48 view .LVU1552 + 5433 0096 8CEA010C eor ip, ip, r1 + 5434 009a 0CEA0E0E and lr, ip, lr + 5435 .LVL402: +2192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5436 .loc 1 2192 16 view .LVU1553 + 5437 009e 81EA0E01 eor r1, r1, lr + 5438 .LVL403: + 5439 .L412: +2196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 5440 .loc 1 2196 7 is_stmt 1 view .LVU1554 +2196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** break; + 5441 .loc 1 2196 27 is_stmt 0 view .LVU1555 + 5442 00a2 7166 str r1, [r6, #100] +2197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5443 .loc 1 2197 7 is_stmt 1 view .LVU1556 +2098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** uint32_t tmporx; + 5444 .loc 1 2098 21 is_stmt 0 view .LVU1557 + 5445 00a4 0020 movs r0, #0 +2197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5446 .loc 1 2197 7 view .LVU1558 + 5447 00a6 C4E7 b .L410 + 5448 .LVL404: + 5449 .L413: + 5450 .LCFI41: + 5451 .cfi_def_cfa_offset 0 + 5452 .cfi_restore 4 + 5453 .cfi_restore 5 + 5454 .cfi_restore 6 + 5455 .cfi_restore 7 + 5456 .cfi_restore 14 +2120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5457 .loc 1 2120 3 view .LVU1559 + 5458 00a8 0220 movs r0, #2 +2207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /*TIM_BREAK_INPUT_SUPPORT */ + 5459 .loc 1 2207 1 view .LVU1560 + 5460 00aa 7047 bx lr + 5461 .cfi_endproc + 5462 .LFE172: + 5464 .section .text.HAL_TIMEx_RemapConfig,"ax",%progbits + ARM GAS /tmp/cc7KL1Mv.s page 168 + + + 5465 .align 1 + 5466 .global HAL_TIMEx_RemapConfig + 5467 .syntax unified + 5468 .thumb + 5469 .thumb_func + 5470 .fpu fpv5-d16 + 5472 HAL_TIMEx_RemapConfig: + 5473 .LVL405: + 5474 .LFB173: +2232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check parameters */ + 5475 .loc 1 2232 1 is_stmt 1 view -0 + 5476 .cfi_startproc + 5477 @ args = 0, pretend = 0, frame = 0 + 5478 @ frame_needed = 0, uses_anonymous_args = 0 + 5479 @ link register save eliminated. +2234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_REMAP(Remap)); + 5480 .loc 1 2234 3 view .LVU1562 +2235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5481 .loc 1 2235 3 view .LVU1563 +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5482 .loc 1 2237 3 view .LVU1564 +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5483 .loc 1 2237 3 view .LVU1565 + 5484 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 5485 0004 012B cmp r3, #1 + 5486 0006 0BD0 beq .L422 +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5487 .loc 1 2237 3 discriminator 2 view .LVU1566 + 5488 0008 0123 movs r3, #1 + 5489 000a 80F83C30 strb r3, [r0, #60] +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5490 .loc 1 2237 3 discriminator 2 view .LVU1567 +2240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5491 .loc 1 2240 3 discriminator 2 view .LVU1568 +2240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5492 .loc 1 2240 7 is_stmt 0 discriminator 2 view .LVU1569 + 5493 000e 0268 ldr r2, [r0] +2240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5494 .loc 1 2240 22 discriminator 2 view .LVU1570 + 5495 0010 1165 str r1, [r2, #80] +2242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5496 .loc 1 2242 3 is_stmt 1 discriminator 2 view .LVU1571 +2242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5497 .loc 1 2242 15 is_stmt 0 discriminator 2 view .LVU1572 + 5498 0012 80F83D30 strb r3, [r0, #61] +2244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5499 .loc 1 2244 3 is_stmt 1 discriminator 2 view .LVU1573 +2244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5500 .loc 1 2244 3 discriminator 2 view .LVU1574 + 5501 0016 0023 movs r3, #0 + 5502 0018 80F83C30 strb r3, [r0, #60] +2244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5503 .loc 1 2244 3 discriminator 2 view .LVU1575 +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5504 .loc 1 2246 3 discriminator 2 view .LVU1576 +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5505 .loc 1 2246 10 is_stmt 0 discriminator 2 view .LVU1577 + ARM GAS /tmp/cc7KL1Mv.s page 169 + + + 5506 001c 1846 mov r0, r3 + 5507 .LVL406: +2246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5508 .loc 1 2246 10 discriminator 2 view .LVU1578 + 5509 001e 7047 bx lr + 5510 .LVL407: + 5511 .L422: +2237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5512 .loc 1 2237 3 view .LVU1579 + 5513 0020 0220 movs r0, #2 + 5514 .LVL408: +2247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5515 .loc 1 2247 1 view .LVU1580 + 5516 0022 7047 bx lr + 5517 .cfi_endproc + 5518 .LFE173: + 5520 .section .text.HAL_TIMEx_GroupChannel5,"ax",%progbits + 5521 .align 1 + 5522 .global HAL_TIMEx_GroupChannel5 + 5523 .syntax unified + 5524 .thumb + 5525 .thumb_func + 5526 .fpu fpv5-d16 + 5528 HAL_TIMEx_GroupChannel5: + 5529 .LVL409: + 5530 .LFB174: +2261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check parameters */ + 5531 .loc 1 2261 1 is_stmt 1 view -0 + 5532 .cfi_startproc + 5533 @ args = 0, pretend = 0, frame = 0 + 5534 @ frame_needed = 0, uses_anonymous_args = 0 + 5535 @ link register save eliminated. +2263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** assert_param(IS_TIM_GROUPCH5(Channels)); + 5536 .loc 1 2263 3 view .LVU1582 +2264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5537 .loc 1 2264 3 view .LVU1583 +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5538 .loc 1 2267 3 view .LVU1584 +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5539 .loc 1 2267 3 view .LVU1585 + 5540 0000 90F83C30 ldrb r3, [r0, #60] @ zero_extendqisi2 + 5541 0004 012B cmp r3, #1 + 5542 0006 18D0 beq .L425 +2261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Check parameters */ + 5543 .loc 1 2261 1 is_stmt 0 discriminator 2 view .LVU1586 + 5544 0008 10B4 push {r4} + 5545 .LCFI42: + 5546 .cfi_def_cfa_offset 4 + 5547 .cfi_offset 4, -4 +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5548 .loc 1 2267 3 is_stmt 1 discriminator 2 view .LVU1587 + 5549 000a 0122 movs r2, #1 + 5550 000c 80F83C20 strb r2, [r0, #60] +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5551 .loc 1 2267 3 discriminator 2 view .LVU1588 +2269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5552 .loc 1 2269 3 discriminator 2 view .LVU1589 + ARM GAS /tmp/cc7KL1Mv.s page 170 + + +2269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5553 .loc 1 2269 15 is_stmt 0 discriminator 2 view .LVU1590 + 5554 0010 0223 movs r3, #2 + 5555 0012 80F83D30 strb r3, [r0, #61] +2272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5556 .loc 1 2272 3 is_stmt 1 discriminator 2 view .LVU1591 +2272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5557 .loc 1 2272 7 is_stmt 0 discriminator 2 view .LVU1592 + 5558 0016 0468 ldr r4, [r0] +2272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5559 .loc 1 2272 24 discriminator 2 view .LVU1593 + 5560 0018 A36D ldr r3, [r4, #88] + 5561 001a 23F06043 bic r3, r3, #-536870912 + 5562 001e A365 str r3, [r4, #88] +2275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5563 .loc 1 2275 3 is_stmt 1 discriminator 2 view .LVU1594 +2275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5564 .loc 1 2275 7 is_stmt 0 discriminator 2 view .LVU1595 + 5565 0020 0468 ldr r4, [r0] +2275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5566 .loc 1 2275 24 discriminator 2 view .LVU1596 + 5567 0022 A36D ldr r3, [r4, #88] + 5568 0024 1943 orrs r1, r1, r3 + 5569 .LVL410: +2275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5570 .loc 1 2275 24 discriminator 2 view .LVU1597 + 5571 0026 A165 str r1, [r4, #88] +2278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5572 .loc 1 2278 3 is_stmt 1 discriminator 2 view .LVU1598 +2278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5573 .loc 1 2278 15 is_stmt 0 discriminator 2 view .LVU1599 + 5574 0028 80F83D20 strb r2, [r0, #61] +2280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5575 .loc 1 2280 3 is_stmt 1 discriminator 2 view .LVU1600 +2280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5576 .loc 1 2280 3 discriminator 2 view .LVU1601 + 5577 002c 0023 movs r3, #0 + 5578 002e 80F83C30 strb r3, [r0, #60] +2280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5579 .loc 1 2280 3 discriminator 2 view .LVU1602 +2282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5580 .loc 1 2282 3 discriminator 2 view .LVU1603 +2282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5581 .loc 1 2282 10 is_stmt 0 discriminator 2 view .LVU1604 + 5582 0032 1846 mov r0, r3 + 5583 .LVL411: +2283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5584 .loc 1 2283 1 discriminator 2 view .LVU1605 + 5585 0034 5DF8044B ldr r4, [sp], #4 + 5586 .LCFI43: + 5587 .cfi_restore 4 + 5588 .cfi_def_cfa_offset 0 + 5589 0038 7047 bx lr + 5590 .LVL412: + 5591 .L425: +2267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5592 .loc 1 2267 3 view .LVU1606 + ARM GAS /tmp/cc7KL1Mv.s page 171 + + + 5593 003a 0220 movs r0, #2 + 5594 .LVL413: +2283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5595 .loc 1 2283 1 view .LVU1607 + 5596 003c 7047 bx lr + 5597 .cfi_endproc + 5598 .LFE174: + 5600 .section .text.HAL_TIMEx_CommutCallback,"ax",%progbits + 5601 .align 1 + 5602 .weak HAL_TIMEx_CommutCallback + 5603 .syntax unified + 5604 .thumb + 5605 .thumb_func + 5606 .fpu fpv5-d16 + 5608 HAL_TIMEx_CommutCallback: + 5609 .LVL414: + 5610 .LFB175: +2311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ + 5611 .loc 1 2311 1 is_stmt 1 view -0 + 5612 .cfi_startproc + 5613 @ args = 0, pretend = 0, frame = 0 + 5614 @ frame_needed = 0, uses_anonymous_args = 0 + 5615 @ link register save eliminated. +2313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5616 .loc 1 2313 3 view .LVU1609 +2318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 5617 .loc 1 2318 1 is_stmt 0 view .LVU1610 + 5618 0000 7047 bx lr + 5619 .cfi_endproc + 5620 .LFE175: + 5622 .section .text.TIMEx_DMACommutationCplt,"ax",%progbits + 5623 .align 1 + 5624 .global TIMEx_DMACommutationCplt + 5625 .syntax unified + 5626 .thumb + 5627 .thumb_func + 5628 .fpu fpv5-d16 + 5630 TIMEx_DMACommutationCplt: + 5631 .LVL415: + 5632 .LFB181: +2432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 5633 .loc 1 2432 1 is_stmt 1 view -0 + 5634 .cfi_startproc + 5635 @ args = 0, pretend = 0, frame = 0 + 5636 @ frame_needed = 0, uses_anonymous_args = 0 +2432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 5637 .loc 1 2432 1 is_stmt 0 view .LVU1612 + 5638 0000 08B5 push {r3, lr} + 5639 .LCFI44: + 5640 .cfi_def_cfa_offset 8 + 5641 .cfi_offset 3, -8 + 5642 .cfi_offset 14, -4 +2433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5643 .loc 1 2433 3 is_stmt 1 view .LVU1613 +2433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5644 .loc 1 2433 22 is_stmt 0 view .LVU1614 + 5645 0002 806B ldr r0, [r0, #56] + ARM GAS /tmp/cc7KL1Mv.s page 172 + + + 5646 .LVL416: +2436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5647 .loc 1 2436 3 is_stmt 1 view .LVU1615 +2436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5648 .loc 1 2436 15 is_stmt 0 view .LVU1616 + 5649 0004 0123 movs r3, #1 + 5650 0006 80F83D30 strb r3, [r0, #61] +2441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5651 .loc 1 2441 3 is_stmt 1 view .LVU1617 + 5652 000a FFF7FEFF bl HAL_TIMEx_CommutCallback + 5653 .LVL417: +2443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5654 .loc 1 2443 1 is_stmt 0 view .LVU1618 + 5655 000e 08BD pop {r3, pc} + 5656 .cfi_endproc + 5657 .LFE181: + 5659 .section .text.HAL_TIMEx_CommutHalfCpltCallback,"ax",%progbits + 5660 .align 1 + 5661 .weak HAL_TIMEx_CommutHalfCpltCallback + 5662 .syntax unified + 5663 .thumb + 5664 .thumb_func + 5665 .fpu fpv5-d16 + 5667 HAL_TIMEx_CommutHalfCpltCallback: + 5668 .LVL418: + 5669 .LFB176: +2325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ + 5670 .loc 1 2325 1 is_stmt 1 view -0 + 5671 .cfi_startproc + 5672 @ args = 0, pretend = 0, frame = 0 + 5673 @ frame_needed = 0, uses_anonymous_args = 0 + 5674 @ link register save eliminated. +2327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5675 .loc 1 2327 3 view .LVU1620 +2332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5676 .loc 1 2332 1 is_stmt 0 view .LVU1621 + 5677 0000 7047 bx lr + 5678 .cfi_endproc + 5679 .LFE176: + 5681 .section .text.TIMEx_DMACommutationHalfCplt,"ax",%progbits + 5682 .align 1 + 5683 .global TIMEx_DMACommutationHalfCplt + 5684 .syntax unified + 5685 .thumb + 5686 .thumb_func + 5687 .fpu fpv5-d16 + 5689 TIMEx_DMACommutationHalfCplt: + 5690 .LVL419: + 5691 .LFB182: +2451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 5692 .loc 1 2451 1 is_stmt 1 view -0 + 5693 .cfi_startproc + 5694 @ args = 0, pretend = 0, frame = 0 + 5695 @ frame_needed = 0, uses_anonymous_args = 0 +2451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** TIM_HandleTypeDef *htim = (TIM_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; + 5696 .loc 1 2451 1 is_stmt 0 view .LVU1623 + 5697 0000 08B5 push {r3, lr} + ARM GAS /tmp/cc7KL1Mv.s page 173 + + + 5698 .LCFI45: + 5699 .cfi_def_cfa_offset 8 + 5700 .cfi_offset 3, -8 + 5701 .cfi_offset 14, -4 +2452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5702 .loc 1 2452 3 is_stmt 1 view .LVU1624 +2452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5703 .loc 1 2452 22 is_stmt 0 view .LVU1625 + 5704 0002 806B ldr r0, [r0, #56] + 5705 .LVL420: +2455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5706 .loc 1 2455 3 is_stmt 1 view .LVU1626 +2455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5707 .loc 1 2455 15 is_stmt 0 view .LVU1627 + 5708 0004 0123 movs r3, #1 + 5709 0006 80F83D30 strb r3, [r0, #61] +2460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ + 5710 .loc 1 2460 3 is_stmt 1 view .LVU1628 + 5711 000a FFF7FEFF bl HAL_TIMEx_CommutHalfCpltCallback + 5712 .LVL421: +2462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5713 .loc 1 2462 1 is_stmt 0 view .LVU1629 + 5714 000e 08BD pop {r3, pc} + 5715 .cfi_endproc + 5716 .LFE182: + 5718 .section .text.HAL_TIMEx_BreakCallback,"ax",%progbits + 5719 .align 1 + 5720 .weak HAL_TIMEx_BreakCallback + 5721 .syntax unified + 5722 .thumb + 5723 .thumb_func + 5724 .fpu fpv5-d16 + 5726 HAL_TIMEx_BreakCallback: + 5727 .LVL422: + 5728 .LFB177: +2340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ + 5729 .loc 1 2340 1 is_stmt 1 view -0 + 5730 .cfi_startproc + 5731 @ args = 0, pretend = 0, frame = 0 + 5732 @ frame_needed = 0, uses_anonymous_args = 0 + 5733 @ link register save eliminated. +2342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5734 .loc 1 2342 3 view .LVU1631 +2347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5735 .loc 1 2347 1 is_stmt 0 view .LVU1632 + 5736 0000 7047 bx lr + 5737 .cfi_endproc + 5738 .LFE177: + 5740 .section .text.HAL_TIMEx_Break2Callback,"ax",%progbits + 5741 .align 1 + 5742 .weak HAL_TIMEx_Break2Callback + 5743 .syntax unified + 5744 .thumb + 5745 .thumb_func + 5746 .fpu fpv5-d16 + 5748 HAL_TIMEx_Break2Callback: + 5749 .LVL423: + ARM GAS /tmp/cc7KL1Mv.s page 174 + + + 5750 .LFB178: +2355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /* Prevent unused argument(s) compilation warning */ + 5751 .loc 1 2355 1 is_stmt 1 view -0 + 5752 .cfi_startproc + 5753 @ args = 0, pretend = 0, frame = 0 + 5754 @ frame_needed = 0, uses_anonymous_args = 0 + 5755 @ link register save eliminated. +2357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5756 .loc 1 2357 3 view .LVU1634 +2362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 5757 .loc 1 2362 1 is_stmt 0 view .LVU1635 + 5758 0000 7047 bx lr + 5759 .cfi_endproc + 5760 .LFE178: + 5762 .section .text.HAL_TIMEx_HallSensor_GetState,"ax",%progbits + 5763 .align 1 + 5764 .global HAL_TIMEx_HallSensor_GetState + 5765 .syntax unified + 5766 .thumb + 5767 .thumb_func + 5768 .fpu fpv5-d16 + 5770 HAL_TIMEx_HallSensor_GetState: + 5771 .LVL424: + 5772 .LFB179: +2388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** return htim->State; + 5773 .loc 1 2388 1 is_stmt 1 view -0 + 5774 .cfi_startproc + 5775 @ args = 0, pretend = 0, frame = 0 + 5776 @ frame_needed = 0, uses_anonymous_args = 0 + 5777 @ link register save eliminated. +2389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5778 .loc 1 2389 3 view .LVU1637 +2389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5779 .loc 1 2389 14 is_stmt 0 view .LVU1638 + 5780 0000 90F83D00 ldrb r0, [r0, #61] @ zero_extendqisi2 + 5781 .LVL425: +2390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5782 .loc 1 2390 1 view .LVU1639 + 5783 0004 7047 bx lr + 5784 .cfi_endproc + 5785 .LFE179: + 5787 .section .text.HAL_TIMEx_GetChannelNState,"ax",%progbits + 5788 .align 1 + 5789 .global HAL_TIMEx_GetChannelNState + 5790 .syntax unified + 5791 .thumb + 5792 .thumb_func + 5793 .fpu fpv5-d16 + 5795 HAL_TIMEx_GetChannelNState: + 5796 .LVL426: + 5797 .LFB180: +2403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** HAL_TIM_ChannelStateTypeDef channel_state; + 5798 .loc 1 2403 1 is_stmt 1 view -0 + 5799 .cfi_startproc + 5800 @ args = 0, pretend = 0, frame = 0 + 5801 @ frame_needed = 0, uses_anonymous_args = 0 + 5802 @ link register save eliminated. + ARM GAS /tmp/cc7KL1Mv.s page 175 + + +2404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5803 .loc 1 2404 3 view .LVU1641 +2407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5804 .loc 1 2407 3 view .LVU1642 +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5805 .loc 1 2409 3 view .LVU1643 +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5806 .loc 1 2409 19 is_stmt 0 view .LVU1644 + 5807 0000 19B9 cbnz r1, .L440 +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5808 .loc 1 2409 19 discriminator 1 view .LVU1645 + 5809 0002 90F84400 ldrb r0, [r0, #68] @ zero_extendqisi2 + 5810 .LVL427: +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5811 .loc 1 2409 19 discriminator 1 view .LVU1646 + 5812 0006 C0B2 uxtb r0, r0 + 5813 0008 7047 bx lr + 5814 .LVL428: + 5815 .L440: +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5816 .loc 1 2409 19 discriminator 2 view .LVU1647 + 5817 000a 0429 cmp r1, #4 + 5818 000c 05D0 beq .L444 +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5819 .loc 1 2409 19 discriminator 5 view .LVU1648 + 5820 000e 0829 cmp r1, #8 + 5821 0010 07D0 beq .L445 +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5822 .loc 1 2409 19 discriminator 8 view .LVU1649 + 5823 0012 90F84700 ldrb r0, [r0, #71] @ zero_extendqisi2 + 5824 .LVL429: +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5825 .loc 1 2409 19 discriminator 8 view .LVU1650 + 5826 0016 C0B2 uxtb r0, r0 + 5827 .LVL430: +2411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** } + 5828 .loc 1 2411 3 is_stmt 1 discriminator 8 view .LVU1651 +2412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** /** + 5829 .loc 1 2412 1 is_stmt 0 discriminator 8 view .LVU1652 + 5830 0018 7047 bx lr + 5831 .LVL431: + 5832 .L444: +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5833 .loc 1 2409 19 discriminator 4 view .LVU1653 + 5834 001a 90F84500 ldrb r0, [r0, #69] @ zero_extendqisi2 + 5835 .LVL432: +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5836 .loc 1 2409 19 discriminator 4 view .LVU1654 + 5837 001e C0B2 uxtb r0, r0 + 5838 0020 7047 bx lr + 5839 .LVL433: + 5840 .L445: +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + 5841 .loc 1 2409 19 discriminator 7 view .LVU1655 + 5842 0022 90F84600 ldrb r0, [r0, #70] @ zero_extendqisi2 + 5843 .LVL434: +2409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c **** + ARM GAS /tmp/cc7KL1Mv.s page 176 + + + 5844 .loc 1 2409 19 discriminator 7 view .LVU1656 + 5845 0026 C0B2 uxtb r0, r0 + 5846 0028 7047 bx lr + 5847 .cfi_endproc + 5848 .LFE180: + 5850 .text + 5851 .Letext0: + 5852 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 5853 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 5854 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 5855 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 5856 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 5857 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h" + 5858 .file 8 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h" + ARM GAS /tmp/cc7KL1Mv.s page 177 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_hal_tim_ex.c + /tmp/cc7KL1Mv.s:17 .text.TIM_CCxNChannelCmd:0000000000000000 $t + /tmp/cc7KL1Mv.s:24 .text.TIM_CCxNChannelCmd:0000000000000000 TIM_CCxNChannelCmd + /tmp/cc7KL1Mv.s:61 .text.TIM_DMAErrorCCxN:0000000000000000 $t + /tmp/cc7KL1Mv.s:67 .text.TIM_DMAErrorCCxN:0000000000000000 TIM_DMAErrorCCxN + /tmp/cc7KL1Mv.s:147 .text.TIM_DMADelayPulseNCplt:0000000000000000 $t + /tmp/cc7KL1Mv.s:153 .text.TIM_DMADelayPulseNCplt:0000000000000000 TIM_DMADelayPulseNCplt + /tmp/cc7KL1Mv.s:252 .text.HAL_TIMEx_HallSensor_MspInit:0000000000000000 $t + /tmp/cc7KL1Mv.s:259 .text.HAL_TIMEx_HallSensor_MspInit:0000000000000000 HAL_TIMEx_HallSensor_MspInit + /tmp/cc7KL1Mv.s:274 .text.HAL_TIMEx_HallSensor_Init:0000000000000000 $t + /tmp/cc7KL1Mv.s:281 .text.HAL_TIMEx_HallSensor_Init:0000000000000000 HAL_TIMEx_HallSensor_Init + /tmp/cc7KL1Mv.s:490 .text.HAL_TIMEx_HallSensor_Init:00000000000000d4 $d + /tmp/cc7KL1Mv.s:495 .text.HAL_TIMEx_HallSensor_MspDeInit:0000000000000000 $t + /tmp/cc7KL1Mv.s:502 .text.HAL_TIMEx_HallSensor_MspDeInit:0000000000000000 HAL_TIMEx_HallSensor_MspDeInit + /tmp/cc7KL1Mv.s:517 .text.HAL_TIMEx_HallSensor_DeInit:0000000000000000 $t + /tmp/cc7KL1Mv.s:524 .text.HAL_TIMEx_HallSensor_DeInit:0000000000000000 HAL_TIMEx_HallSensor_DeInit + /tmp/cc7KL1Mv.s:594 .text.HAL_TIMEx_HallSensor_Start:0000000000000000 $t + /tmp/cc7KL1Mv.s:601 .text.HAL_TIMEx_HallSensor_Start:0000000000000000 HAL_TIMEx_HallSensor_Start + /tmp/cc7KL1Mv.s:762 .text.HAL_TIMEx_HallSensor_Start:00000000000000c0 $d + /tmp/cc7KL1Mv.s:768 .text.HAL_TIMEx_HallSensor_Stop:0000000000000000 $t + /tmp/cc7KL1Mv.s:775 .text.HAL_TIMEx_HallSensor_Stop:0000000000000000 HAL_TIMEx_HallSensor_Stop + /tmp/cc7KL1Mv.s:834 .text.HAL_TIMEx_HallSensor_Start_IT:0000000000000000 $t + /tmp/cc7KL1Mv.s:841 .text.HAL_TIMEx_HallSensor_Start_IT:0000000000000000 HAL_TIMEx_HallSensor_Start_IT + /tmp/cc7KL1Mv.s:1007 .text.HAL_TIMEx_HallSensor_Start_IT:00000000000000cc $d + /tmp/cc7KL1Mv.s:1013 .text.HAL_TIMEx_HallSensor_Stop_IT:0000000000000000 $t + /tmp/cc7KL1Mv.s:1020 .text.HAL_TIMEx_HallSensor_Stop_IT:0000000000000000 HAL_TIMEx_HallSensor_Stop_IT + /tmp/cc7KL1Mv.s:1084 .text.HAL_TIMEx_HallSensor_Start_DMA:0000000000000000 $t + /tmp/cc7KL1Mv.s:1091 .text.HAL_TIMEx_HallSensor_Start_DMA:0000000000000000 HAL_TIMEx_HallSensor_Start_DMA + /tmp/cc7KL1Mv.s:1283 .text.HAL_TIMEx_HallSensor_Start_DMA:00000000000000e8 $d + /tmp/cc7KL1Mv.s:1292 .text.HAL_TIMEx_HallSensor_Stop_DMA:0000000000000000 $t + /tmp/cc7KL1Mv.s:1299 .text.HAL_TIMEx_HallSensor_Stop_DMA:0000000000000000 HAL_TIMEx_HallSensor_Stop_DMA + /tmp/cc7KL1Mv.s:1364 .text.HAL_TIMEx_OCN_Start:0000000000000000 $t + /tmp/cc7KL1Mv.s:1371 .text.HAL_TIMEx_OCN_Start:0000000000000000 HAL_TIMEx_OCN_Start + /tmp/cc7KL1Mv.s:1562 .text.HAL_TIMEx_OCN_Start:00000000000000f8 $d + /tmp/cc7KL1Mv.s:1568 .text.HAL_TIMEx_OCN_Stop:0000000000000000 $t + /tmp/cc7KL1Mv.s:1575 .text.HAL_TIMEx_OCN_Stop:0000000000000000 HAL_TIMEx_OCN_Stop + /tmp/cc7KL1Mv.s:1672 .text.HAL_TIMEx_OCN_Start_IT:0000000000000000 $t + /tmp/cc7KL1Mv.s:1679 .text.HAL_TIMEx_OCN_Start_IT:0000000000000000 HAL_TIMEx_OCN_Start_IT + /tmp/cc7KL1Mv.s:1909 .text.HAL_TIMEx_OCN_Start_IT:0000000000000130 $d + /tmp/cc7KL1Mv.s:1915 .text.HAL_TIMEx_OCN_Stop_IT:0000000000000000 $t + /tmp/cc7KL1Mv.s:1922 .text.HAL_TIMEx_OCN_Stop_IT:0000000000000000 HAL_TIMEx_OCN_Stop_IT + /tmp/cc7KL1Mv.s:2084 .text.HAL_TIMEx_OCN_Start_DMA:0000000000000000 $t + /tmp/cc7KL1Mv.s:2091 .text.HAL_TIMEx_OCN_Start_DMA:0000000000000000 HAL_TIMEx_OCN_Start_DMA + /tmp/cc7KL1Mv.s:2515 .text.HAL_TIMEx_OCN_Start_DMA:000000000000020c $d + /tmp/cc7KL1Mv.s:2524 .text.HAL_TIMEx_OCN_Stop_DMA:0000000000000000 $t + /tmp/cc7KL1Mv.s:2531 .text.HAL_TIMEx_OCN_Stop_DMA:0000000000000000 HAL_TIMEx_OCN_Stop_DMA + /tmp/cc7KL1Mv.s:2691 .text.HAL_TIMEx_PWMN_Start:0000000000000000 $t + /tmp/cc7KL1Mv.s:2698 .text.HAL_TIMEx_PWMN_Start:0000000000000000 HAL_TIMEx_PWMN_Start + /tmp/cc7KL1Mv.s:2889 .text.HAL_TIMEx_PWMN_Start:00000000000000f8 $d + /tmp/cc7KL1Mv.s:2895 .text.HAL_TIMEx_PWMN_Stop:0000000000000000 $t + /tmp/cc7KL1Mv.s:2902 .text.HAL_TIMEx_PWMN_Stop:0000000000000000 HAL_TIMEx_PWMN_Stop + /tmp/cc7KL1Mv.s:2999 .text.HAL_TIMEx_PWMN_Start_IT:0000000000000000 $t + /tmp/cc7KL1Mv.s:3006 .text.HAL_TIMEx_PWMN_Start_IT:0000000000000000 HAL_TIMEx_PWMN_Start_IT + /tmp/cc7KL1Mv.s:3236 .text.HAL_TIMEx_PWMN_Start_IT:0000000000000130 $d + /tmp/cc7KL1Mv.s:3242 .text.HAL_TIMEx_PWMN_Stop_IT:0000000000000000 $t + /tmp/cc7KL1Mv.s:3249 .text.HAL_TIMEx_PWMN_Stop_IT:0000000000000000 HAL_TIMEx_PWMN_Stop_IT + ARM GAS /tmp/cc7KL1Mv.s page 178 + + + /tmp/cc7KL1Mv.s:3411 .text.HAL_TIMEx_PWMN_Start_DMA:0000000000000000 $t + /tmp/cc7KL1Mv.s:3418 .text.HAL_TIMEx_PWMN_Start_DMA:0000000000000000 HAL_TIMEx_PWMN_Start_DMA + /tmp/cc7KL1Mv.s:3842 .text.HAL_TIMEx_PWMN_Start_DMA:000000000000020c $d + /tmp/cc7KL1Mv.s:3851 .text.HAL_TIMEx_PWMN_Stop_DMA:0000000000000000 $t + /tmp/cc7KL1Mv.s:3858 .text.HAL_TIMEx_PWMN_Stop_DMA:0000000000000000 HAL_TIMEx_PWMN_Stop_DMA + /tmp/cc7KL1Mv.s:4018 .text.HAL_TIMEx_OnePulseN_Start:0000000000000000 $t + /tmp/cc7KL1Mv.s:4025 .text.HAL_TIMEx_OnePulseN_Start:0000000000000000 HAL_TIMEx_OnePulseN_Start + /tmp/cc7KL1Mv.s:4148 .text.HAL_TIMEx_OnePulseN_Stop:0000000000000000 $t + /tmp/cc7KL1Mv.s:4155 .text.HAL_TIMEx_OnePulseN_Stop:0000000000000000 HAL_TIMEx_OnePulseN_Stop + /tmp/cc7KL1Mv.s:4250 .text.HAL_TIMEx_OnePulseN_Start_IT:0000000000000000 $t + /tmp/cc7KL1Mv.s:4257 .text.HAL_TIMEx_OnePulseN_Start_IT:0000000000000000 HAL_TIMEx_OnePulseN_Start_IT + /tmp/cc7KL1Mv.s:4391 .text.HAL_TIMEx_OnePulseN_Stop_IT:0000000000000000 $t + /tmp/cc7KL1Mv.s:4398 .text.HAL_TIMEx_OnePulseN_Stop_IT:0000000000000000 HAL_TIMEx_OnePulseN_Stop_IT + /tmp/cc7KL1Mv.s:4503 .text.HAL_TIMEx_ConfigCommutEvent:0000000000000000 $t + /tmp/cc7KL1Mv.s:4510 .text.HAL_TIMEx_ConfigCommutEvent:0000000000000000 HAL_TIMEx_ConfigCommutEvent + /tmp/cc7KL1Mv.s:4626 .text.HAL_TIMEx_ConfigCommutEvent_IT:0000000000000000 $t + /tmp/cc7KL1Mv.s:4633 .text.HAL_TIMEx_ConfigCommutEvent_IT:0000000000000000 HAL_TIMEx_ConfigCommutEvent_IT + /tmp/cc7KL1Mv.s:4749 .text.HAL_TIMEx_ConfigCommutEvent_DMA:0000000000000000 $t + /tmp/cc7KL1Mv.s:4756 .text.HAL_TIMEx_ConfigCommutEvent_DMA:0000000000000000 HAL_TIMEx_ConfigCommutEvent_DMA + /tmp/cc7KL1Mv.s:4889 .text.HAL_TIMEx_ConfigCommutEvent_DMA:000000000000008c $d + /tmp/cc7KL1Mv.s:5630 .text.TIMEx_DMACommutationCplt:0000000000000000 TIMEx_DMACommutationCplt + /tmp/cc7KL1Mv.s:5689 .text.TIMEx_DMACommutationHalfCplt:0000000000000000 TIMEx_DMACommutationHalfCplt + /tmp/cc7KL1Mv.s:4896 .text.HAL_TIMEx_MasterConfigSynchronization:0000000000000000 $t + /tmp/cc7KL1Mv.s:4903 .text.HAL_TIMEx_MasterConfigSynchronization:0000000000000000 HAL_TIMEx_MasterConfigSynchronization + /tmp/cc7KL1Mv.s:5061 .text.HAL_TIMEx_MasterConfigSynchronization:0000000000000098 $d + /tmp/cc7KL1Mv.s:5067 .text.HAL_TIMEx_ConfigBreakDeadTime:0000000000000000 $t + /tmp/cc7KL1Mv.s:5074 .text.HAL_TIMEx_ConfigBreakDeadTime:0000000000000000 HAL_TIMEx_ConfigBreakDeadTime + /tmp/cc7KL1Mv.s:5242 .text.HAL_TIMEx_ConfigBreakDeadTime:0000000000000088 $d + /tmp/cc7KL1Mv.s:5248 .text.HAL_TIMEx_ConfigBreakInput:0000000000000000 $t + /tmp/cc7KL1Mv.s:5255 .text.HAL_TIMEx_ConfigBreakInput:0000000000000000 HAL_TIMEx_ConfigBreakInput + /tmp/cc7KL1Mv.s:5465 .text.HAL_TIMEx_RemapConfig:0000000000000000 $t + /tmp/cc7KL1Mv.s:5472 .text.HAL_TIMEx_RemapConfig:0000000000000000 HAL_TIMEx_RemapConfig + /tmp/cc7KL1Mv.s:5521 .text.HAL_TIMEx_GroupChannel5:0000000000000000 $t + /tmp/cc7KL1Mv.s:5528 .text.HAL_TIMEx_GroupChannel5:0000000000000000 HAL_TIMEx_GroupChannel5 + /tmp/cc7KL1Mv.s:5601 .text.HAL_TIMEx_CommutCallback:0000000000000000 $t + /tmp/cc7KL1Mv.s:5608 .text.HAL_TIMEx_CommutCallback:0000000000000000 HAL_TIMEx_CommutCallback + /tmp/cc7KL1Mv.s:5623 .text.TIMEx_DMACommutationCplt:0000000000000000 $t + /tmp/cc7KL1Mv.s:5660 .text.HAL_TIMEx_CommutHalfCpltCallback:0000000000000000 $t + /tmp/cc7KL1Mv.s:5667 .text.HAL_TIMEx_CommutHalfCpltCallback:0000000000000000 HAL_TIMEx_CommutHalfCpltCallback + /tmp/cc7KL1Mv.s:5682 .text.TIMEx_DMACommutationHalfCplt:0000000000000000 $t + /tmp/cc7KL1Mv.s:5719 .text.HAL_TIMEx_BreakCallback:0000000000000000 $t + /tmp/cc7KL1Mv.s:5726 .text.HAL_TIMEx_BreakCallback:0000000000000000 HAL_TIMEx_BreakCallback + /tmp/cc7KL1Mv.s:5741 .text.HAL_TIMEx_Break2Callback:0000000000000000 $t + /tmp/cc7KL1Mv.s:5748 .text.HAL_TIMEx_Break2Callback:0000000000000000 HAL_TIMEx_Break2Callback + /tmp/cc7KL1Mv.s:5763 .text.HAL_TIMEx_HallSensor_GetState:0000000000000000 $t + /tmp/cc7KL1Mv.s:5770 .text.HAL_TIMEx_HallSensor_GetState:0000000000000000 HAL_TIMEx_HallSensor_GetState + /tmp/cc7KL1Mv.s:5788 .text.HAL_TIMEx_GetChannelNState:0000000000000000 $t + /tmp/cc7KL1Mv.s:5795 .text.HAL_TIMEx_GetChannelNState:0000000000000000 HAL_TIMEx_GetChannelNState + +UNDEFINED SYMBOLS +HAL_TIM_ErrorCallback +HAL_TIM_PWM_PulseFinishedCallback +TIM_Base_SetConfig +TIM_TI1_SetConfig +TIM_OC2_SetConfig +TIM_CCxChannelCmd +HAL_DMA_Start_IT + ARM GAS /tmp/cc7KL1Mv.s page 179 + + +TIM_DMACaptureCplt +TIM_DMACaptureHalfCplt +TIM_DMAError +HAL_DMA_Abort_IT +TIM_DMADelayPulseHalfCplt diff --git a/build/stm32f7xx_hal_tim_ex.o b/build/stm32f7xx_hal_tim_ex.o new file mode 100644 index 0000000..76dbe1a Binary files /dev/null and b/build/stm32f7xx_hal_tim_ex.o differ diff --git a/build/stm32f7xx_it.d b/build/stm32f7xx_it.d new file mode 100644 index 0000000..cb943c5 --- /dev/null +++ b/build/stm32f7xx_it.d @@ -0,0 +1,89 @@ +build/stm32f7xx_it.o: Src/stm32f7xx_it.c Inc/main.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h Inc/stm32f7xx_it.h +Inc/main.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: +Inc/stm32f7xx_it.h: diff --git a/build/stm32f7xx_it.lst b/build/stm32f7xx_it.lst new file mode 100644 index 0000000..d6927c5 --- /dev/null +++ b/build/stm32f7xx_it.lst @@ -0,0 +1,13782 @@ +ARM GAS /tmp/cc8Pc1nf.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_it.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.NMI_Handler,"ax",%progbits + 17 .align 1 + 18 .global NMI_Handler + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 NMI_Handler: + 26 .LFB1183: + 27 .file 1 "Src/stm32f7xx_it.c" + 1:Src/stm32f7xx_it.c **** /* USER CODE BEGIN Header */ + 2:Src/stm32f7xx_it.c **** /** + 3:Src/stm32f7xx_it.c **** ****************************************************************************** + 4:Src/stm32f7xx_it.c **** * @file stm32f7xx_it.c + 5:Src/stm32f7xx_it.c **** * @brief Interrupt Service Routines. + 6:Src/stm32f7xx_it.c **** ****************************************************************************** + 7:Src/stm32f7xx_it.c **** * @attention + 8:Src/stm32f7xx_it.c **** * + 9:Src/stm32f7xx_it.c **** * Copyright (c) 2023 STMicroelectronics. + 10:Src/stm32f7xx_it.c **** * All rights reserved. + 11:Src/stm32f7xx_it.c **** * + 12:Src/stm32f7xx_it.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Src/stm32f7xx_it.c **** * in the root directory of this software component. + 14:Src/stm32f7xx_it.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Src/stm32f7xx_it.c **** * + 16:Src/stm32f7xx_it.c **** ****************************************************************************** + 17:Src/stm32f7xx_it.c **** */ + 18:Src/stm32f7xx_it.c **** /* USER CODE END Header */ + 19:Src/stm32f7xx_it.c **** + 20:Src/stm32f7xx_it.c **** /* Includes ------------------------------------------------------------------*/ + 21:Src/stm32f7xx_it.c **** #include "main.h" + 22:Src/stm32f7xx_it.c **** #include "stm32f7xx_it.h" + 23:Src/stm32f7xx_it.c **** /* Private includes ----------------------------------------------------------*/ + 24:Src/stm32f7xx_it.c **** /* USER CODE BEGIN Includes */ + 25:Src/stm32f7xx_it.c **** /* USER CODE END Includes */ + 26:Src/stm32f7xx_it.c **** + 27:Src/stm32f7xx_it.c **** /* Private typedef -----------------------------------------------------------*/ + 28:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TD */ + 29:Src/stm32f7xx_it.c **** + 30:Src/stm32f7xx_it.c **** /* USER CODE END TD */ + 31:Src/stm32f7xx_it.c **** + ARM GAS /tmp/cc8Pc1nf.s page 2 + + + 32:Src/stm32f7xx_it.c **** /* Private define ------------------------------------------------------------*/ + 33:Src/stm32f7xx_it.c **** /* USER CODE BEGIN PD */ + 34:Src/stm32f7xx_it.c **** + 35:Src/stm32f7xx_it.c **** /* USER CODE END PD */ + 36:Src/stm32f7xx_it.c **** + 37:Src/stm32f7xx_it.c **** /* Private macro -------------------------------------------------------------*/ + 38:Src/stm32f7xx_it.c **** /* USER CODE BEGIN PM */ + 39:Src/stm32f7xx_it.c **** + 40:Src/stm32f7xx_it.c **** /* USER CODE END PM */ + 41:Src/stm32f7xx_it.c **** + 42:Src/stm32f7xx_it.c **** /* Private variables ---------------------------------------------------------*/ + 43:Src/stm32f7xx_it.c **** /* USER CODE BEGIN PV */ + 44:Src/stm32f7xx_it.c **** extern uint32_t TO6, TO7, TO6_uart, TO10, TO10_counter; + 45:Src/stm32f7xx_it.c **** extern uint16_t UART_rec_incr, UART_header, COMMAND[CL_16]; + 46:Src/stm32f7xx_it.c **** extern uint8_t uart_buf, flg_tmt, CPU_state, State_Data[2], UART_transmission_request, u_tx_flg, T + 47:Src/stm32f7xx_it.c **** extern task_t task; + 48:Src/stm32f7xx_it.c **** /* USER CODE END PV */ + 49:Src/stm32f7xx_it.c **** + 50:Src/stm32f7xx_it.c **** /* Private function prototypes -----------------------------------------------*/ + 51:Src/stm32f7xx_it.c **** /* USER CODE BEGIN PFP */ + 52:Src/stm32f7xx_it.c **** void UART_RxCpltCallback(void); + 53:Src/stm32f7xx_it.c **** void DMA2_Stream7_TransferComplete(void); + 54:Src/stm32f7xx_it.c **** /* USER CODE END PFP */ + 55:Src/stm32f7xx_it.c **** + 56:Src/stm32f7xx_it.c **** /* Private user code ---------------------------------------------------------*/ + 57:Src/stm32f7xx_it.c **** /* USER CODE BEGIN 0 */ + 58:Src/stm32f7xx_it.c **** + 59:Src/stm32f7xx_it.c **** /* USER CODE END 0 */ + 60:Src/stm32f7xx_it.c **** + 61:Src/stm32f7xx_it.c **** /* External variables --------------------------------------------------------*/ + 62:Src/stm32f7xx_it.c **** extern ADC_HandleTypeDef hadc1; + 63:Src/stm32f7xx_it.c **** extern ADC_HandleTypeDef hadc3; + 64:Src/stm32f7xx_it.c **** extern TIM_HandleTypeDef htim10; + 65:Src/stm32f7xx_it.c **** /* USER CODE BEGIN EV */ + 66:Src/stm32f7xx_it.c **** + 67:Src/stm32f7xx_it.c **** /* USER CODE END EV */ + 68:Src/stm32f7xx_it.c **** + 69:Src/stm32f7xx_it.c **** /******************************************************************************/ + 70:Src/stm32f7xx_it.c **** /* Cortex-M7 Processor Interruption and Exception Handlers */ + 71:Src/stm32f7xx_it.c **** /******************************************************************************/ + 72:Src/stm32f7xx_it.c **** /** + 73:Src/stm32f7xx_it.c **** * @brief This function handles Non maskable interrupt. + 74:Src/stm32f7xx_it.c **** */ + 75:Src/stm32f7xx_it.c **** void NMI_Handler(void) + 76:Src/stm32f7xx_it.c **** { + 28 .loc 1 76 1 view -0 + 29 .cfi_startproc + 30 @ Volatile: function does not return. + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 33 @ link register save eliminated. + 34 .L2: + 77:Src/stm32f7xx_it.c **** /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + 78:Src/stm32f7xx_it.c **** + 79:Src/stm32f7xx_it.c **** /* USER CODE END NonMaskableInt_IRQn 0 */ + 80:Src/stm32f7xx_it.c **** /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + 81:Src/stm32f7xx_it.c **** while (1) + ARM GAS /tmp/cc8Pc1nf.s page 3 + + + 35 .loc 1 81 3 discriminator 1 view .LVU1 + 82:Src/stm32f7xx_it.c **** { + 83:Src/stm32f7xx_it.c **** } + 36 .loc 1 83 3 discriminator 1 view .LVU2 + 81:Src/stm32f7xx_it.c **** { + 37 .loc 1 81 9 discriminator 1 view .LVU3 + 38 0000 FEE7 b .L2 + 39 .cfi_endproc + 40 .LFE1183: + 42 .section .text.HardFault_Handler,"ax",%progbits + 43 .align 1 + 44 .global HardFault_Handler + 45 .syntax unified + 46 .thumb + 47 .thumb_func + 48 .fpu fpv5-d16 + 50 HardFault_Handler: + 51 .LFB1184: + 84:Src/stm32f7xx_it.c **** /* USER CODE END NonMaskableInt_IRQn 1 */ + 85:Src/stm32f7xx_it.c **** } + 86:Src/stm32f7xx_it.c **** + 87:Src/stm32f7xx_it.c **** /** + 88:Src/stm32f7xx_it.c **** * @brief This function handles Hard fault interrupt. + 89:Src/stm32f7xx_it.c **** */ + 90:Src/stm32f7xx_it.c **** void HardFault_Handler(void) + 91:Src/stm32f7xx_it.c **** { + 52 .loc 1 91 1 view -0 + 53 .cfi_startproc + 54 @ Volatile: function does not return. + 55 @ args = 0, pretend = 0, frame = 0 + 56 @ frame_needed = 0, uses_anonymous_args = 0 + 57 @ link register save eliminated. + 58 .L4: + 92:Src/stm32f7xx_it.c **** /* USER CODE BEGIN HardFault_IRQn 0 */ + 93:Src/stm32f7xx_it.c **** + 94:Src/stm32f7xx_it.c **** /* USER CODE END HardFault_IRQn 0 */ + 95:Src/stm32f7xx_it.c **** while (1) + 59 .loc 1 95 3 discriminator 1 view .LVU5 + 96:Src/stm32f7xx_it.c **** { + 97:Src/stm32f7xx_it.c **** /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + 98:Src/stm32f7xx_it.c **** /* USER CODE END W1_HardFault_IRQn 0 */ + 99:Src/stm32f7xx_it.c **** } + 60 .loc 1 99 3 discriminator 1 view .LVU6 + 95:Src/stm32f7xx_it.c **** { + 61 .loc 1 95 9 discriminator 1 view .LVU7 + 62 0000 FEE7 b .L4 + 63 .cfi_endproc + 64 .LFE1184: + 66 .section .text.MemManage_Handler,"ax",%progbits + 67 .align 1 + 68 .global MemManage_Handler + 69 .syntax unified + 70 .thumb + 71 .thumb_func + 72 .fpu fpv5-d16 + 74 MemManage_Handler: + 75 .LFB1185: + ARM GAS /tmp/cc8Pc1nf.s page 4 + + + 100:Src/stm32f7xx_it.c **** } + 101:Src/stm32f7xx_it.c **** + 102:Src/stm32f7xx_it.c **** /** + 103:Src/stm32f7xx_it.c **** * @brief This function handles Memory management fault. + 104:Src/stm32f7xx_it.c **** */ + 105:Src/stm32f7xx_it.c **** void MemManage_Handler(void) + 106:Src/stm32f7xx_it.c **** { + 76 .loc 1 106 1 view -0 + 77 .cfi_startproc + 78 @ Volatile: function does not return. + 79 @ args = 0, pretend = 0, frame = 0 + 80 @ frame_needed = 0, uses_anonymous_args = 0 + 81 @ link register save eliminated. + 82 .L6: + 107:Src/stm32f7xx_it.c **** /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + 108:Src/stm32f7xx_it.c **** + 109:Src/stm32f7xx_it.c **** /* USER CODE END MemoryManagement_IRQn 0 */ + 110:Src/stm32f7xx_it.c **** while (1) + 83 .loc 1 110 3 discriminator 1 view .LVU9 + 111:Src/stm32f7xx_it.c **** { + 112:Src/stm32f7xx_it.c **** /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + 113:Src/stm32f7xx_it.c **** /* USER CODE END W1_MemoryManagement_IRQn 0 */ + 114:Src/stm32f7xx_it.c **** } + 84 .loc 1 114 3 discriminator 1 view .LVU10 + 110:Src/stm32f7xx_it.c **** { + 85 .loc 1 110 9 discriminator 1 view .LVU11 + 86 0000 FEE7 b .L6 + 87 .cfi_endproc + 88 .LFE1185: + 90 .section .text.BusFault_Handler,"ax",%progbits + 91 .align 1 + 92 .global BusFault_Handler + 93 .syntax unified + 94 .thumb + 95 .thumb_func + 96 .fpu fpv5-d16 + 98 BusFault_Handler: + 99 .LFB1186: + 115:Src/stm32f7xx_it.c **** } + 116:Src/stm32f7xx_it.c **** + 117:Src/stm32f7xx_it.c **** /** + 118:Src/stm32f7xx_it.c **** * @brief This function handles Pre-fetch fault, memory access fault. + 119:Src/stm32f7xx_it.c **** */ + 120:Src/stm32f7xx_it.c **** void BusFault_Handler(void) + 121:Src/stm32f7xx_it.c **** { + 100 .loc 1 121 1 view -0 + 101 .cfi_startproc + 102 @ Volatile: function does not return. + 103 @ args = 0, pretend = 0, frame = 0 + 104 @ frame_needed = 0, uses_anonymous_args = 0 + 105 @ link register save eliminated. + 106 .L8: + 122:Src/stm32f7xx_it.c **** /* USER CODE BEGIN BusFault_IRQn 0 */ + 123:Src/stm32f7xx_it.c **** + 124:Src/stm32f7xx_it.c **** /* USER CODE END BusFault_IRQn 0 */ + 125:Src/stm32f7xx_it.c **** while (1) + 107 .loc 1 125 3 discriminator 1 view .LVU13 + ARM GAS /tmp/cc8Pc1nf.s page 5 + + + 126:Src/stm32f7xx_it.c **** { + 127:Src/stm32f7xx_it.c **** /* USER CODE BEGIN W1_BusFault_IRQn 0 */ + 128:Src/stm32f7xx_it.c **** /* USER CODE END W1_BusFault_IRQn 0 */ + 129:Src/stm32f7xx_it.c **** } + 108 .loc 1 129 3 discriminator 1 view .LVU14 + 125:Src/stm32f7xx_it.c **** { + 109 .loc 1 125 9 discriminator 1 view .LVU15 + 110 0000 FEE7 b .L8 + 111 .cfi_endproc + 112 .LFE1186: + 114 .section .text.UsageFault_Handler,"ax",%progbits + 115 .align 1 + 116 .global UsageFault_Handler + 117 .syntax unified + 118 .thumb + 119 .thumb_func + 120 .fpu fpv5-d16 + 122 UsageFault_Handler: + 123 .LFB1187: + 130:Src/stm32f7xx_it.c **** } + 131:Src/stm32f7xx_it.c **** + 132:Src/stm32f7xx_it.c **** /** + 133:Src/stm32f7xx_it.c **** * @brief This function handles Undefined instruction or illegal state. + 134:Src/stm32f7xx_it.c **** */ + 135:Src/stm32f7xx_it.c **** void UsageFault_Handler(void) + 136:Src/stm32f7xx_it.c **** { + 124 .loc 1 136 1 view -0 + 125 .cfi_startproc + 126 @ Volatile: function does not return. + 127 @ args = 0, pretend = 0, frame = 0 + 128 @ frame_needed = 0, uses_anonymous_args = 0 + 129 @ link register save eliminated. + 130 .L10: + 137:Src/stm32f7xx_it.c **** /* USER CODE BEGIN UsageFault_IRQn 0 */ + 138:Src/stm32f7xx_it.c **** + 139:Src/stm32f7xx_it.c **** /* USER CODE END UsageFault_IRQn 0 */ + 140:Src/stm32f7xx_it.c **** while (1) + 131 .loc 1 140 3 discriminator 1 view .LVU17 + 141:Src/stm32f7xx_it.c **** { + 142:Src/stm32f7xx_it.c **** /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ + 143:Src/stm32f7xx_it.c **** /* USER CODE END W1_UsageFault_IRQn 0 */ + 144:Src/stm32f7xx_it.c **** } + 132 .loc 1 144 3 discriminator 1 view .LVU18 + 140:Src/stm32f7xx_it.c **** { + 133 .loc 1 140 9 discriminator 1 view .LVU19 + 134 0000 FEE7 b .L10 + 135 .cfi_endproc + 136 .LFE1187: + 138 .section .text.SVC_Handler,"ax",%progbits + 139 .align 1 + 140 .global SVC_Handler + 141 .syntax unified + 142 .thumb + 143 .thumb_func + 144 .fpu fpv5-d16 + 146 SVC_Handler: + 147 .LFB1188: + ARM GAS /tmp/cc8Pc1nf.s page 6 + + + 145:Src/stm32f7xx_it.c **** } + 146:Src/stm32f7xx_it.c **** + 147:Src/stm32f7xx_it.c **** /** + 148:Src/stm32f7xx_it.c **** * @brief This function handles System service call via SWI instruction. + 149:Src/stm32f7xx_it.c **** */ + 150:Src/stm32f7xx_it.c **** void SVC_Handler(void) + 151:Src/stm32f7xx_it.c **** { + 148 .loc 1 151 1 view -0 + 149 .cfi_startproc + 150 @ args = 0, pretend = 0, frame = 0 + 151 @ frame_needed = 0, uses_anonymous_args = 0 + 152 @ link register save eliminated. + 152:Src/stm32f7xx_it.c **** /* USER CODE BEGIN SVCall_IRQn 0 */ + 153:Src/stm32f7xx_it.c **** + 154:Src/stm32f7xx_it.c **** /* USER CODE END SVCall_IRQn 0 */ + 155:Src/stm32f7xx_it.c **** /* USER CODE BEGIN SVCall_IRQn 1 */ + 156:Src/stm32f7xx_it.c **** + 157:Src/stm32f7xx_it.c **** /* USER CODE END SVCall_IRQn 1 */ + 158:Src/stm32f7xx_it.c **** } + 153 .loc 1 158 1 view .LVU21 + 154 0000 7047 bx lr + 155 .cfi_endproc + 156 .LFE1188: + 158 .section .text.DebugMon_Handler,"ax",%progbits + 159 .align 1 + 160 .global DebugMon_Handler + 161 .syntax unified + 162 .thumb + 163 .thumb_func + 164 .fpu fpv5-d16 + 166 DebugMon_Handler: + 167 .LFB1189: + 159:Src/stm32f7xx_it.c **** + 160:Src/stm32f7xx_it.c **** /** + 161:Src/stm32f7xx_it.c **** * @brief This function handles Debug monitor. + 162:Src/stm32f7xx_it.c **** */ + 163:Src/stm32f7xx_it.c **** void DebugMon_Handler(void) + 164:Src/stm32f7xx_it.c **** { + 168 .loc 1 164 1 view -0 + 169 .cfi_startproc + 170 @ args = 0, pretend = 0, frame = 0 + 171 @ frame_needed = 0, uses_anonymous_args = 0 + 172 @ link register save eliminated. + 165:Src/stm32f7xx_it.c **** /* USER CODE BEGIN DebugMonitor_IRQn 0 */ + 166:Src/stm32f7xx_it.c **** + 167:Src/stm32f7xx_it.c **** /* USER CODE END DebugMonitor_IRQn 0 */ + 168:Src/stm32f7xx_it.c **** /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + 169:Src/stm32f7xx_it.c **** + 170:Src/stm32f7xx_it.c **** /* USER CODE END DebugMonitor_IRQn 1 */ + 171:Src/stm32f7xx_it.c **** } + 173 .loc 1 171 1 view .LVU23 + 174 0000 7047 bx lr + 175 .cfi_endproc + 176 .LFE1189: + 178 .section .text.PendSV_Handler,"ax",%progbits + 179 .align 1 + 180 .global PendSV_Handler + ARM GAS /tmp/cc8Pc1nf.s page 7 + + + 181 .syntax unified + 182 .thumb + 183 .thumb_func + 184 .fpu fpv5-d16 + 186 PendSV_Handler: + 187 .LFB1190: + 172:Src/stm32f7xx_it.c **** + 173:Src/stm32f7xx_it.c **** /** + 174:Src/stm32f7xx_it.c **** * @brief This function handles Pendable request for system service. + 175:Src/stm32f7xx_it.c **** */ + 176:Src/stm32f7xx_it.c **** void PendSV_Handler(void) + 177:Src/stm32f7xx_it.c **** { + 188 .loc 1 177 1 view -0 + 189 .cfi_startproc + 190 @ args = 0, pretend = 0, frame = 0 + 191 @ frame_needed = 0, uses_anonymous_args = 0 + 192 @ link register save eliminated. + 178:Src/stm32f7xx_it.c **** /* USER CODE BEGIN PendSV_IRQn 0 */ + 179:Src/stm32f7xx_it.c **** + 180:Src/stm32f7xx_it.c **** /* USER CODE END PendSV_IRQn 0 */ + 181:Src/stm32f7xx_it.c **** /* USER CODE BEGIN PendSV_IRQn 1 */ + 182:Src/stm32f7xx_it.c **** + 183:Src/stm32f7xx_it.c **** /* USER CODE END PendSV_IRQn 1 */ + 184:Src/stm32f7xx_it.c **** } + 193 .loc 1 184 1 view .LVU25 + 194 0000 7047 bx lr + 195 .cfi_endproc + 196 .LFE1190: + 198 .section .text.SysTick_Handler,"ax",%progbits + 199 .align 1 + 200 .global SysTick_Handler + 201 .syntax unified + 202 .thumb + 203 .thumb_func + 204 .fpu fpv5-d16 + 206 SysTick_Handler: + 207 .LFB1191: + 185:Src/stm32f7xx_it.c **** + 186:Src/stm32f7xx_it.c **** /** + 187:Src/stm32f7xx_it.c **** * @brief This function handles System tick timer. + 188:Src/stm32f7xx_it.c **** */ + 189:Src/stm32f7xx_it.c **** void SysTick_Handler(void) + 190:Src/stm32f7xx_it.c **** { + 208 .loc 1 190 1 view -0 + 209 .cfi_startproc + 210 @ args = 0, pretend = 0, frame = 0 + 211 @ frame_needed = 0, uses_anonymous_args = 0 + 212 0000 08B5 push {r3, lr} + 213 .LCFI0: + 214 .cfi_def_cfa_offset 8 + 215 .cfi_offset 3, -8 + 216 .cfi_offset 14, -4 + 191:Src/stm32f7xx_it.c **** /* USER CODE BEGIN SysTick_IRQn 0 */ + 192:Src/stm32f7xx_it.c **** + 193:Src/stm32f7xx_it.c **** /* USER CODE END SysTick_IRQn 0 */ + 194:Src/stm32f7xx_it.c **** HAL_IncTick(); + 217 .loc 1 194 3 view .LVU27 + ARM GAS /tmp/cc8Pc1nf.s page 8 + + + 218 0002 FFF7FEFF bl HAL_IncTick + 219 .LVL0: + 195:Src/stm32f7xx_it.c **** /* USER CODE BEGIN SysTick_IRQn 1 */ + 196:Src/stm32f7xx_it.c **** + 197:Src/stm32f7xx_it.c **** /* USER CODE END SysTick_IRQn 1 */ + 198:Src/stm32f7xx_it.c **** } + 220 .loc 1 198 1 is_stmt 0 view .LVU28 + 221 0006 08BD pop {r3, pc} + 222 .cfi_endproc + 223 .LFE1191: + 225 .section .text.ADC_IRQHandler,"ax",%progbits + 226 .align 1 + 227 .global ADC_IRQHandler + 228 .syntax unified + 229 .thumb + 230 .thumb_func + 231 .fpu fpv5-d16 + 233 ADC_IRQHandler: + 234 .LFB1192: + 199:Src/stm32f7xx_it.c **** + 200:Src/stm32f7xx_it.c **** /******************************************************************************/ + 201:Src/stm32f7xx_it.c **** /* STM32F7xx Peripheral Interrupt Handlers */ + 202:Src/stm32f7xx_it.c **** /* Add here the Interrupt Handlers for the used peripherals. */ + 203:Src/stm32f7xx_it.c **** /* For the available peripheral interrupt handler names, */ + 204:Src/stm32f7xx_it.c **** /* please refer to the startup file (startup_stm32f7xx.s). */ + 205:Src/stm32f7xx_it.c **** /******************************************************************************/ + 206:Src/stm32f7xx_it.c **** + 207:Src/stm32f7xx_it.c **** /** + 208:Src/stm32f7xx_it.c **** * @brief This function handles ADC1, ADC2 and ADC3 global interrupts. + 209:Src/stm32f7xx_it.c **** */ + 210:Src/stm32f7xx_it.c **** void ADC_IRQHandler(void) + 211:Src/stm32f7xx_it.c **** { + 235 .loc 1 211 1 is_stmt 1 view -0 + 236 .cfi_startproc + 237 @ args = 0, pretend = 0, frame = 0 + 238 @ frame_needed = 0, uses_anonymous_args = 0 + 239 0000 08B5 push {r3, lr} + 240 .LCFI1: + 241 .cfi_def_cfa_offset 8 + 242 .cfi_offset 3, -8 + 243 .cfi_offset 14, -4 + 212:Src/stm32f7xx_it.c **** /* USER CODE BEGIN ADC_IRQn 0 */ + 213:Src/stm32f7xx_it.c **** + 214:Src/stm32f7xx_it.c **** /* USER CODE END ADC_IRQn 0 */ + 215:Src/stm32f7xx_it.c **** HAL_ADC_IRQHandler(&hadc1); + 244 .loc 1 215 3 view .LVU30 + 245 0002 0348 ldr r0, .L18 + 246 0004 FFF7FEFF bl HAL_ADC_IRQHandler + 247 .LVL1: + 216:Src/stm32f7xx_it.c **** HAL_ADC_IRQHandler(&hadc3); + 248 .loc 1 216 3 view .LVU31 + 249 0008 0248 ldr r0, .L18+4 + 250 000a FFF7FEFF bl HAL_ADC_IRQHandler + 251 .LVL2: + 217:Src/stm32f7xx_it.c **** /* USER CODE BEGIN ADC_IRQn 1 */ + 218:Src/stm32f7xx_it.c **** + 219:Src/stm32f7xx_it.c **** /* USER CODE END ADC_IRQn 1 */ + ARM GAS /tmp/cc8Pc1nf.s page 9 + + + 220:Src/stm32f7xx_it.c **** } + 252 .loc 1 220 1 is_stmt 0 view .LVU32 + 253 000e 08BD pop {r3, pc} + 254 .L19: + 255 .align 2 + 256 .L18: + 257 0010 00000000 .word hadc1 + 258 0014 00000000 .word hadc3 + 259 .cfi_endproc + 260 .LFE1192: + 262 .section .text.TIM1_UP_TIM10_IRQHandler,"ax",%progbits + 263 .align 1 + 264 .global TIM1_UP_TIM10_IRQHandler + 265 .syntax unified + 266 .thumb + 267 .thumb_func + 268 .fpu fpv5-d16 + 270 TIM1_UP_TIM10_IRQHandler: + 271 .LFB1193: + 221:Src/stm32f7xx_it.c **** + 222:Src/stm32f7xx_it.c **** /** + 223:Src/stm32f7xx_it.c **** * @brief This function handles TIM1 update interrupt and TIM10 global interrupt. + 224:Src/stm32f7xx_it.c **** */ + 225:Src/stm32f7xx_it.c **** void TIM1_UP_TIM10_IRQHandler(void) + 226:Src/stm32f7xx_it.c **** { + 272 .loc 1 226 1 is_stmt 1 view -0 + 273 .cfi_startproc + 274 @ args = 0, pretend = 0, frame = 0 + 275 @ frame_needed = 0, uses_anonymous_args = 0 + 276 0000 08B5 push {r3, lr} + 277 .LCFI2: + 278 .cfi_def_cfa_offset 8 + 279 .cfi_offset 3, -8 + 280 .cfi_offset 14, -4 + 227:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TIM1_UP_TIM10_IRQn 0 */ + 228:Src/stm32f7xx_it.c **** TO10++; + 281 .loc 1 228 2 view .LVU34 + 282 .loc 1 228 6 is_stmt 0 view .LVU35 + 283 0002 084A ldr r2, .L24 + 284 0004 1368 ldr r3, [r2] + 285 0006 0133 adds r3, r3, #1 + 286 0008 1360 str r3, [r2] + 229:Src/stm32f7xx_it.c **** if (TO10 == TO10_counter) + 287 .loc 1 229 2 is_stmt 1 view .LVU36 + 288 .loc 1 229 11 is_stmt 0 view .LVU37 + 289 000a 074A ldr r2, .L24+4 + 290 000c 1268 ldr r2, [r2] + 291 .loc 1 229 5 view .LVU38 + 292 000e 9342 cmp r3, r2 + 293 0010 03D0 beq .L23 + 294 .L21: + 230:Src/stm32f7xx_it.c **** TIM10_coflag = 1; + 231:Src/stm32f7xx_it.c **** /* USER CODE END TIM1_UP_TIM10_IRQn 0 */ + 232:Src/stm32f7xx_it.c **** HAL_TIM_IRQHandler(&htim10); + 295 .loc 1 232 3 is_stmt 1 view .LVU39 + 296 0012 0648 ldr r0, .L24+8 + 297 0014 FFF7FEFF bl HAL_TIM_IRQHandler + ARM GAS /tmp/cc8Pc1nf.s page 10 + + + 298 .LVL3: + 233:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TIM1_UP_TIM10_IRQn 1 */ + 234:Src/stm32f7xx_it.c **** + 235:Src/stm32f7xx_it.c **** /* USER CODE END TIM1_UP_TIM10_IRQn 1 */ + 236:Src/stm32f7xx_it.c **** } + 299 .loc 1 236 1 is_stmt 0 view .LVU40 + 300 0018 08BD pop {r3, pc} + 301 .L23: + 230:Src/stm32f7xx_it.c **** TIM10_coflag = 1; + 302 .loc 1 230 3 is_stmt 1 view .LVU41 + 230:Src/stm32f7xx_it.c **** TIM10_coflag = 1; + 303 .loc 1 230 16 is_stmt 0 view .LVU42 + 304 001a 054B ldr r3, .L24+12 + 305 001c 0122 movs r2, #1 + 306 001e 1A70 strb r2, [r3] + 307 0020 F7E7 b .L21 + 308 .L25: + 309 0022 00BF .align 2 + 310 .L24: + 311 0024 00000000 .word TO10 + 312 0028 00000000 .word TO10_counter + 313 002c 00000000 .word htim10 + 314 0030 00000000 .word TIM10_coflag + 315 .cfi_endproc + 316 .LFE1193: + 318 .section .text.TIM2_IRQHandler,"ax",%progbits + 319 .align 1 + 320 .global TIM2_IRQHandler + 321 .syntax unified + 322 .thumb + 323 .thumb_func + 324 .fpu fpv5-d16 + 326 TIM2_IRQHandler: + 327 .LFB1194: + 237:Src/stm32f7xx_it.c **** + 238:Src/stm32f7xx_it.c **** /** + 239:Src/stm32f7xx_it.c **** * @brief This function handles TIM2 global interrupt. + 240:Src/stm32f7xx_it.c **** */ + 241:Src/stm32f7xx_it.c **** void TIM2_IRQHandler(void) + 242:Src/stm32f7xx_it.c **** { + 328 .loc 1 242 1 is_stmt 1 view -0 + 329 .cfi_startproc + 330 @ args = 0, pretend = 0, frame = 0 + 331 @ frame_needed = 0, uses_anonymous_args = 0 + 332 @ link register save eliminated. + 243:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TIM2_IRQn 0 */ + 244:Src/stm32f7xx_it.c **** + 245:Src/stm32f7xx_it.c **** /* USER CODE END TIM2_IRQn 0 */ + 246:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TIM2_IRQn 1 */ + 247:Src/stm32f7xx_it.c **** + 248:Src/stm32f7xx_it.c **** /* USER CODE END TIM2_IRQn 1 */ + 249:Src/stm32f7xx_it.c **** } + 333 .loc 1 249 1 view .LVU44 + 334 0000 7047 bx lr + 335 .cfi_endproc + 336 .LFE1194: + 338 .section .text.TIM5_IRQHandler,"ax",%progbits + ARM GAS /tmp/cc8Pc1nf.s page 11 + + + 339 .align 1 + 340 .global TIM5_IRQHandler + 341 .syntax unified + 342 .thumb + 343 .thumb_func + 344 .fpu fpv5-d16 + 346 TIM5_IRQHandler: + 347 .LFB1196: + 250:Src/stm32f7xx_it.c **** + 251:Src/stm32f7xx_it.c **** /** + 252:Src/stm32f7xx_it.c **** * @brief This function handles USART1 global interrupt. + 253:Src/stm32f7xx_it.c **** */ + 254:Src/stm32f7xx_it.c **** void USART1_IRQHandler(void) + 255:Src/stm32f7xx_it.c **** { + 256:Src/stm32f7xx_it.c **** /* USER CODE BEGIN USART1_IRQn 0 */ + 257:Src/stm32f7xx_it.c **** volatile uint8_t temp; + 258:Src/stm32f7xx_it.c **** if(LL_USART_IsActiveFlag_RXNE(USART1) && LL_USART_IsEnabledIT_RXNE(USART1)) + 259:Src/stm32f7xx_it.c **** { + 260:Src/stm32f7xx_it.c **** UART_RxCpltCallback(); + 261:Src/stm32f7xx_it.c **** } + 262:Src/stm32f7xx_it.c **** else + 263:Src/stm32f7xx_it.c **** { + 264:Src/stm32f7xx_it.c **** if(LL_USART_IsActiveFlag_ORE(USART1)) + 265:Src/stm32f7xx_it.c **** { + 266:Src/stm32f7xx_it.c **** //temp = USART1->RDR; + 267:Src/stm32f7xx_it.c **** temp+= LL_USART_ReceiveData8(USART1); + 268:Src/stm32f7xx_it.c **** } + 269:Src/stm32f7xx_it.c **** else if(LL_USART_IsActiveFlag_FE(USART1)) + 270:Src/stm32f7xx_it.c **** { + 271:Src/stm32f7xx_it.c **** //(void) USART1->RDR; + 272:Src/stm32f7xx_it.c **** temp+= LL_USART_ReceiveData8(USART1); + 273:Src/stm32f7xx_it.c **** } + 274:Src/stm32f7xx_it.c **** else if(LL_USART_IsActiveFlag_NE(USART1)) + 275:Src/stm32f7xx_it.c **** { + 276:Src/stm32f7xx_it.c **** //(void) USART1->RDR; + 277:Src/stm32f7xx_it.c **** temp+= LL_USART_ReceiveData8(USART1); + 278:Src/stm32f7xx_it.c **** } + 279:Src/stm32f7xx_it.c **** else if(LL_USART_IsActiveFlag_PE(USART1)) + 280:Src/stm32f7xx_it.c **** { + 281:Src/stm32f7xx_it.c **** //(void) USART1->RDR; + 282:Src/stm32f7xx_it.c **** temp+= LL_USART_ReceiveData8(USART1); + 283:Src/stm32f7xx_it.c **** } + 284:Src/stm32f7xx_it.c **** else + 285:Src/stm32f7xx_it.c **** { + 286:Src/stm32f7xx_it.c **** if(LL_USART_IsActiveFlag_TC(USART6) && LL_USART_IsEnabledIT_TC(USART6)) + 287:Src/stm32f7xx_it.c **** { + 288:Src/stm32f7xx_it.c **** LL_USART_ClearFlag_TC(USART1); + 289:Src/stm32f7xx_it.c **** //test_counter += 1; + 290:Src/stm32f7xx_it.c **** //if(UART_transmission_busy == 1){ + 291:Src/stm32f7xx_it.c **** LL_USART_DisableIT_TC(USART1); + 292:Src/stm32f7xx_it.c **** //UART_transmission_busy = 0; + 293:Src/stm32f7xx_it.c **** } + 294:Src/stm32f7xx_it.c **** } + 295:Src/stm32f7xx_it.c **** } + 296:Src/stm32f7xx_it.c **** + 297:Src/stm32f7xx_it.c **** /* USER CODE END USART1_IRQn 0 */ + 298:Src/stm32f7xx_it.c **** /* USER CODE BEGIN USART1_IRQn 1 */ + ARM GAS /tmp/cc8Pc1nf.s page 12 + + + 299:Src/stm32f7xx_it.c **** + 300:Src/stm32f7xx_it.c **** /* USER CODE END USART1_IRQn 1 */ + 301:Src/stm32f7xx_it.c **** } + 302:Src/stm32f7xx_it.c **** + 303:Src/stm32f7xx_it.c **** /** + 304:Src/stm32f7xx_it.c **** * @brief This function handles TIM5 global interrupt. + 305:Src/stm32f7xx_it.c **** */ + 306:Src/stm32f7xx_it.c **** void TIM5_IRQHandler(void) + 307:Src/stm32f7xx_it.c **** { + 348 .loc 1 307 1 view -0 + 349 .cfi_startproc + 350 @ args = 0, pretend = 0, frame = 0 + 351 @ frame_needed = 0, uses_anonymous_args = 0 + 352 @ link register save eliminated. + 308:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TIM5_IRQn 0 */ + 309:Src/stm32f7xx_it.c **** + 310:Src/stm32f7xx_it.c **** /* USER CODE END TIM5_IRQn 0 */ + 311:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TIM5_IRQn 1 */ + 312:Src/stm32f7xx_it.c **** + 313:Src/stm32f7xx_it.c **** /* USER CODE END TIM5_IRQn 1 */ + 314:Src/stm32f7xx_it.c **** } + 353 .loc 1 314 1 view .LVU46 + 354 0000 7047 bx lr + 355 .cfi_endproc + 356 .LFE1196: + 358 .section .text.TIM6_DAC_IRQHandler,"ax",%progbits + 359 .align 1 + 360 .global TIM6_DAC_IRQHandler + 361 .syntax unified + 362 .thumb + 363 .thumb_func + 364 .fpu fpv5-d16 + 366 TIM6_DAC_IRQHandler: + 367 .LFB1197: + 315:Src/stm32f7xx_it.c **** + 316:Src/stm32f7xx_it.c **** /** + 317:Src/stm32f7xx_it.c **** * @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts. + 318:Src/stm32f7xx_it.c **** */ + 319:Src/stm32f7xx_it.c **** void TIM6_DAC_IRQHandler(void) + 320:Src/stm32f7xx_it.c **** { + 368 .loc 1 320 1 view -0 + 369 .cfi_startproc + 370 @ args = 0, pretend = 0, frame = 0 + 371 @ frame_needed = 0, uses_anonymous_args = 0 + 372 0000 08B5 push {r3, lr} + 373 .LCFI3: + 374 .cfi_def_cfa_offset 8 + 375 .cfi_offset 3, -8 + 376 .cfi_offset 14, -4 + 321:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ + 322:Src/stm32f7xx_it.c **** + 323:Src/stm32f7xx_it.c **** /* USER CODE END TIM6_DAC_IRQn 0 */ + 324:Src/stm32f7xx_it.c **** + 325:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ + 326:Src/stm32f7xx_it.c **** if(LL_TIM_IsActiveFlag_UPDATE(TIM6)) + 377 .loc 1 326 3 view .LVU48 + 378 .LVL4: + ARM GAS /tmp/cc8Pc1nf.s page 13 + + + 379 .LBB58: + 380 .LBI58: + 381 .file 2 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @file stm32f7xx_ll_tim.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Header file of TIM LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #ifndef __STM32F7xx_LL_TIM_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __STM32F7xx_LL_TIM_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined (TIM1) || defined (TIM8) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defi + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL TIM + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Private_Variables TIM Private Variables + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t OFFSET_TAB_CCMRx[] = + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 0: TIMx_CH1 */ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 1: TIMx_CH1N */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 2: TIMx_CH2 */ + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 3: TIMx_CH2N */ + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x04U, /* 4: TIMx_CH3 */ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x04U, /* 5: TIMx_CH3N */ + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x04U, /* 6: TIMx_CH4 */ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x3CU, /* 7: TIMx_CH5 */ + ARM GAS /tmp/cc8Pc1nf.s page 14 + + + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x3CU /* 8: TIMx_CH6 */ + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_OCxx[] = + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: OC1M, OC1FE, OC1PE */ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 1: - NA */ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 2: OC2M, OC2FE, OC2PE */ + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 3: - NA */ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 4: OC3M, OC3FE, OC3PE */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 5: - NA */ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 6: OC4M, OC4FE, OC4PE */ + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 7: OC5M, OC5FE, OC5PE */ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U /* 8: OC6M, OC6FE, OC6PE */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_ICxx[] = + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: CC1S, IC1PSC, IC1F */ + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 1: - NA */ + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 2: CC2S, IC2PSC, IC2F */ + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 3: - NA */ + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 4: CC3S, IC3PSC, IC3F */ + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 5: - NA */ + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 6: CC4S, IC4PSC, IC4F */ + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 7: - NA */ + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U /* 8: - NA */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_CCxP[] = + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: CC1P */ + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 2U, /* 1: CC1NP */ + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 4U, /* 2: CC2P */ + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 6U, /* 3: CC2NP */ + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 4: CC3P */ + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 10U, /* 5: CC3NP */ + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 12U, /* 6: CC4P */ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 16U, /* 7: CC5P */ + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 20U /* 8: CC6P */ + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_OISx[] = + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: OIS1 */ + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 1U, /* 1: OIS1N */ + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 2U, /* 2: OIS2 */ + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 3U, /* 3: OIS2N */ + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 4U, /* 4: OIS3 */ + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 5U, /* 5: OIS3N */ + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 6U, /* 6: OIS4 */ + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 7: OIS5 */ + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 10U /* 8: OIS6 */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 15 + + + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private constants ---------------------------------------------------------*/ + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Private_Constants TIM Private Constants + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(TIM_BREAK_INPUT_SUPPORT) + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Defines used for the bit position in the register and perform offsets */ + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM_POSITION_BRK_SOURCE (POSITION_VAL(Source) & 0x1FUL) + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Generic bit definitions for TIMx_AF1 register */ + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIMx_AF1_BKINP TIM1_AF1_BKINP /*!< BRK BKIN input polarity */ + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* TIM_BREAK_INPUT_SUPPORT */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Remap mask definitions */ + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIMx_OR_RMP_SHIFT 16U + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIMx_OR_RMP_MASK 0x0000FFFFU + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM2_OR_RMP_MASK (TIM2_OR_ITR1_RMP << TIMx_OR_RMP_SHIFT) + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM5_OR_RMP_MASK (TIM5_OR_TI4_RMP << TIMx_OR_RMP_SHIFT) + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM11_OR_RMP_MASK (TIM11_OR_TI1_RMP << TIMx_OR_RMP_SHIFT) + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */ + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_1 ((uint8_t)0x7F) + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_2 ((uint8_t)0x3F) + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_3 ((uint8_t)0x1F) + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_4 ((uint8_t)0x1F) + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */ + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_1 ((uint8_t)0x00) + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_2 ((uint8_t)0x80) + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_3 ((uint8_t)0xC0) + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_4 ((uint8_t)0xE0) + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private macros ------------------------------------------------------------*/ + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Private_Macros TIM Private Macros + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @brief Convert channel id into channel index. + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CHANNEL__ This parameter can be one of the following values: + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval none + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \ + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\ + ARM GAS /tmp/cc8Pc1nf.s page 16 + + + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\ + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\ + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\ + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\ + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U :\ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH4) ? 6U :\ + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH5) ? 7U : 8U) + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @brief Calculate the deadtime sampling period(in ps). + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz). + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CKD__ This parameter can be one of the following values: + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval none + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM_CALC_DTS(__TIMCLK__, __CKD__) \ + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__)) : \ + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \ + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U))) + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Exported types ------------------------------------------------------------*/ + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(USE_FULL_LL_DRIVER) + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_ES_INIT TIM Exported Init structure + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Time Base configuration structure definition. + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint16_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data=0x0000 and Max_D + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetPrescaler().*/ + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t CounterMode; /*!< Specifies the counter mode. + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE. + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetCounterMode().*/ + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Autoreload; /*!< Specifies the auto reload value to be loaded into the active + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Auto-Reload Register at the next update event. + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter must be a number between Min_Data=0x0000 and Max_ + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Some timer instances may support 32 bits counters. In that case + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** be a number between 0x0000 and 0xFFFFFFFF. + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetAutoReload().*/ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/cc8Pc1nf.s page 17 + + + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ClockDivision; /*!< Specifies the clock division. + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION. + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetClockDivision().*/ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downc + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** reaches zero, an update event is generated and counting restarts + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** from the RCR value (N). + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This means in PWM mode that (N+1) corresponds to: + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** - the number of PWM periods in edge-aligned mode + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** - the number of half PWM period in center-aligned mode + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** GP timers: this parameter must be a number between Min_Data = 0x + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Max_Data = 0xFF. + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Advanced timers: this parameter must be a number between Min_Dat + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Max_Data = 0xFFFF. + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetRepetitionCounter().*/ + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_InitTypeDef; + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Output Compare configuration structure definition. + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCMode; /*!< Specifies the output mode. + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCMODE. + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetMode().*/ + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCState; /*!< Specifies the TIM Output Compare state. + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functions + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCNState; /*!< Specifies the TIM complementary Output Compare state. + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functions + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t CompareValue; /*!< Specifies the Compare value to be loaded into the Capture Compare Re + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data=0x0000 and Max_Data= + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** LL_TIM_OC_SetCompareCHx (x=1..6).*/ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCPolarity; /*!< Specifies the output polarity. + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetPolarity().*/ + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + ARM GAS /tmp/cc8Pc1nf.s page 18 + + + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetPolarity().*/ + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetIdleState().*/ + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetIdleState().*/ + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_OC_InitTypeDef; + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Input Capture configuration structure definition. + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICActiveInput; /*!< Specifies the input. + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetActiveInput().*/ + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICFilter; /*!< Specifies the input capture filter. + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_IC_InitTypeDef; + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Encoder interface configuration structure definition. + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 19 + + + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t EncoderMode; /*!< Specifies the encoder resolution (x2 or x4). + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE. + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetEncoderMode().*/ + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1ActiveInput; /*!< Specifies the TI1 input source + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetActiveInput().*/ + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2Polarity; /*!< Specifies the active edge of TI2 input. + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2ActiveInput; /*!< Specifies the TI2 input source + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetActiveInput().*/ + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2Prescaler; /*!< Specifies the TI2 input prescaler value. + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2Filter; /*!< Specifies the TI2 input filter. + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_ENCODER_InitTypeDef; + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 20 + + + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Hall sensor interface configuration structure definition. + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Prescaler must be set to get a maximum counter period longer th + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** time interval between 2 consecutive changes on the Hall inputs. + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref TIM_LL_EC_IC_FILTER. + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t CommutationDelay; /*!< Specifies the compare value to be loaded into the Capture Compa + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** A positive pulse (TRGO event) is generated with a programmable + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** a change occurs on the Hall inputs. + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data = 0x0000 and Ma + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetCompareCH2().*/ + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_HALLSENSOR_InitTypeDef; + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief BDTR (Break and Dead Time) structure definition + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OSSRState; /*!< Specifies the Off-State selection used in Run mode. + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OSSR + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetOffStates() + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field cannot be modified as long as LOCK level + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OSSIState; /*!< Specifies the Off-State used in Idle state. + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OSSI + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetOffStates() + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field cannot be modified as long as LOCK level + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + ARM GAS /tmp/cc8Pc1nf.s page 21 + + + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t LockLevel; /*!< Specifies the LOCK level parameters. + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note The LOCK bits can be written only once after the reset. + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** register has been written, their content is frozen until the + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t DeadTime; /*!< Specifies the delay time between the switching-off and the + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** switching-on of the outputs. + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data = 0x00 and Ma + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetDeadTime() + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint16_t BreakState; /*!< Specifies whether the TIM Break input is enabled or not. + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK() + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARIT + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK() + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t BreakFilter; /*!< Specifies the TIM Break Filter. + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK_FILTER + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK() + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Break2State; /*!< Specifies whether the TIM Break2 input is enabled or not. + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK2_ENABLE + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_EnableBRK2() or @ref LL_TIM_DisableBRK2() + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Break2Polarity; /*!< Specifies the TIM Break2 Input pin polarity. + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK2_POLARI + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + ARM GAS /tmp/cc8Pc1nf.s page 22 + + + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK2() + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Break2Filter; /*!< Specifies the TIM Break2 Filter. + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK2_FILTER + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK2() + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTP + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAut + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_BDTR_InitTypeDef; + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* USE_FULL_LL_DRIVER */ + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Exported constants --------------------------------------------------------*/ + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Exported_Constants TIM Exported Constants + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Flags defines which can be used with LL_TIM_ReadReg function. + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_UIF TIM_SR_UIF /*!< Update interrupt flag */ + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC1IF TIM_SR_CC1IF /*!< Capture/compare 1 interrup + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC2IF TIM_SR_CC2IF /*!< Capture/compare 2 interrup + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC3IF TIM_SR_CC3IF /*!< Capture/compare 3 interrup + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC4IF TIM_SR_CC4IF /*!< Capture/compare 4 interrup + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC5IF TIM_SR_CC5IF /*!< Capture/compare 5 interrup + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC6IF TIM_SR_CC6IF /*!< Capture/compare 6 interrup + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_COMIF TIM_SR_COMIF /*!< COM interrupt flag */ + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_TIF TIM_SR_TIF /*!< Trigger interrupt flag */ + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_BIF TIM_SR_BIF /*!< Break interrupt flag */ + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_B2IF TIM_SR_B2IF /*!< Second break interrupt fla + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC1OF TIM_SR_CC1OF /*!< Capture/Compare 1 overcapt + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC2OF TIM_SR_CC2OF /*!< Capture/Compare 2 overcapt + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC3OF TIM_SR_CC3OF /*!< Capture/Compare 3 overcapt + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC4OF TIM_SR_CC4OF /*!< Capture/Compare 4 overcapt + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_SBIF TIM_SR_SBIF /*!< System Break interrupt fla + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 23 + + + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(USE_FULL_LL_DRIVER) + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_BREAK_ENABLE Break Enable + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK_DISABLE 0x00000000U /*!< Break function disabled */ + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break function enabled */ + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_BREAK2_ENABLE Break2 Enable + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK2_DISABLE 0x00000000U /*!< Break2 function disabled */ + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK2_ENABLE TIM_BDTR_BK2E /*!< Break2 function enabled */ + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_AUTOMATICOUTPUT_ENABLE Automatic output enable + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by softw + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* USE_FULL_LL_DRIVER */ + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_IT IT Defines + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief IT defines which can be used with LL_TIM_ReadReg and LL_TIM_WriteReg functions. + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_UIE TIM_DIER_UIE /*!< Update interrupt enable */ + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC1IE TIM_DIER_CC1IE /*!< Capture/compare 1 interrup + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC2IE TIM_DIER_CC2IE /*!< Capture/compare 2 interrup + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC3IE TIM_DIER_CC3IE /*!< Capture/compare 3 interrup + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC4IE TIM_DIER_CC4IE /*!< Capture/compare 4 interrup + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_COMIE TIM_DIER_COMIE /*!< COM interrupt enable */ + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_TIE TIM_DIER_TIE /*!< Trigger interrupt enable * + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_BIE TIM_DIER_BIE /*!< Break interrupt enable */ + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_UPDATESOURCE Update Source + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_UPDATESOURCE_REGULAR 0x00000000U /*!< Counter overflow/underflow + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_UPDATESOURCE_COUNTER TIM_CR1_URS /*!< Only counter overflow/unde + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + ARM GAS /tmp/cc8Pc1nf.s page 24 + + + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_ONEPULSEMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_ONEPULSEMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_UP 0x00000000U /*!< Counter used as upcounter + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as downcounte + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_CENTER_DOWN TIM_CR1_CMS_0 /*!< The counter counts up and + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_CENTER_UP TIM_CR1_CMS_1 /*!< The counter counts up and + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_CENTER_UP_DOWN TIM_CR1_CMS /*!< The counter counts up and + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CLOCKDIVISION Clock Division + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< tDTS=tCK_INT */ + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< tDTS=2*tCK_INT */ + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< tDTS=4*tCK_INT */ + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_COUNTERDIRECTION Counter Direction + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERDIRECTION_UP 0x00000000U /*!< Timer counter counts up */ + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERDIRECTION_DOWN TIM_CR1_DIR /*!< Timer counter counts down + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CCUPDATESOURCE Capture Compare Update Source + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCUPDATESOURCE_COMG_ONLY 0x00000000U /*!< Capture/compare control bi + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI TIM_CR2_CCUS /*!< Capture/compare control bi + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CCDMAREQUEST Capture Compare DMA Request + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCDMAREQUEST_CC 0x00000000U /*!< CCx DMA request sent when + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCDMAREQUEST_UPDATE TIM_CR2_CCDS /*!< CCx DMA requests sent when + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_LOCKLEVEL Lock Level + ARM GAS /tmp/cc8Pc1nf.s page 25 + + + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_OFF 0x00000000U /*!< LOCK OFF - No bit is write + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_1 TIM_BDTR_LOCK_0 /*!< LOCK Level 1 */ + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_2 TIM_BDTR_LOCK_1 /*!< LOCK Level 2 */ + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_3 TIM_BDTR_LOCK /*!< LOCK Level 3 */ + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CHANNEL Channel + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH1 TIM_CCER_CC1E /*!< Timer input/output channel 1 + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH1N TIM_CCER_CC1NE /*!< Timer complementary output ch + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH2 TIM_CCER_CC2E /*!< Timer input/output channel 2 + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH2N TIM_CCER_CC2NE /*!< Timer complementary output ch + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH3 TIM_CCER_CC3E /*!< Timer input/output channel 3 + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH3N TIM_CCER_CC3NE /*!< Timer complementary output ch + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH4 TIM_CCER_CC4E /*!< Timer input/output channel 4 + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH5 TIM_CCER_CC5E /*!< Timer output channel 5 */ + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH6 TIM_CCER_CC6E /*!< Timer output channel 6 */ + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(USE_FULL_LL_DRIVER) + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCSTATE Output Configuration State + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCSTATE_DISABLE 0x00000000U /*!< OCx is not active */ + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCSTATE_ENABLE TIM_CCER_CC1E /*!< OCx signal is output on + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* USE_FULL_LL_DRIVER */ + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** Legacy definitions for compatibility purpose + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @cond 0 + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASSYMETRIC_PWM1 LL_TIM_OCMODE_ASYMMETRIC_PWM1 + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASSYMETRIC_PWM2 LL_TIM_OCMODE_ASYMMETRIC_PWM2 + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @endcond + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCMODE Output Configuration Mode + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_FROZEN 0x00000000U + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1 + ARM GAS /tmp/cc8Pc1nf.s page 26 + + + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_RETRIG_OPM1 TIM_CCMR1_OC1M_3 + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_RETRIG_OPM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0) + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_COMBINED_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_2) + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_COMBINED_PWM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1 + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASYMMETRIC_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1 + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASYMMETRIC_PWM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M) + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCPOLARITY Output Configuration Polarity + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCPOLARITY_HIGH 0x00000000U /*!< OCxactive high*/ + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< OCxactive low*/ + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCIDLESTATE Output Configuration Idle State + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCIDLESTATE_LOW 0x00000000U /*!__REG__, (__VAL +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Read a value in TIM register. +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __INSTANCE__ TIM Instance +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __REG__ Register to be read +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Register value +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__) +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + ARM GAS /tmp/cc8Pc1nf.s page 34 + + +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro retrieving the UIFCPY flag from the counter value. +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_GETFLAG_UIFCPY (@ref LL_TIM_GetCounter ()); +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Relevant only if UIF flag remapping has been enabled (UIF status bit is copied +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * to TIMx_CNT register bit 31) +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CNT__ Counter value +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval UIF status bit +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_GETFLAG_UIFCPY(__CNT__) \ +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (READ_BIT((__CNT__), TIM_CNT_UIFCPY) >> TIM_CNT_UIFCPY_Pos) +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested de +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120); +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CKD__ This parameter can be one of the following values: +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __DT__ deadtime duration (in ns) +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval DTG[0:7] +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__) \ +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__))) & DT_DELAY_1) : +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__C +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMC +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__C +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMC +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__ +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMC +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U) +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the prescaler value to achieve the required counter clock freq +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000); +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CNTCLK__ counter clock frequency (in Hz) +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Prescaler value (between Min_Data=0 and Max_Data=65535) +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__) \ +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)((((__TIMCLK__) + (__CNTCLK__)/2U)/(__CNTCLK__)) - 1U +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the auto-reload value to achieve the required output signal fr +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000); +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PSC__ prescaler +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __FREQ__ output signal frequency (in Hz) +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \ + ARM GAS /tmp/cc8Pc1nf.s page 35 + + +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U)) +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the compare value required to achieve the required timer outpu +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * active/inactive delay. +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10); +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PSC__ prescaler +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __DELAY__ timer output compare active/inactive delay (in us) +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Compare value (between Min_Data=0 and Max_Data=65535) +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__) \ +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \ +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U)))) +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the auto-reload value to achieve the required pulse duration +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (when the timer operates in one pulse mode). +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20); +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PSC__ prescaler +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __DELAY__ timer output compare active/inactive delay (in us) +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PULSE__ pulse duration (in us) +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__) \ +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \ +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__)))) +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro retrieving the ratio of the input capture prescaler +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ()); +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __ICPSC__ This parameter can be one of the following values: +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV2 +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV4 +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV8 +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Input capture prescaler ratio (1, 2, 4 or 8) +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__) \ +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos))) +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Exported functions --------------------------------------------------------*/ +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Exported_Functions TIM Exported Functions +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Time_Base Time Base configuration +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable timer counter. + ARM GAS /tmp/cc8Pc1nf.s page 36 + + +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CEN LL_TIM_EnableCounter +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx) +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_CEN); +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable timer counter. +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CEN LL_TIM_DisableCounter +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx) +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN); +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the timer counter is enabled. +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CEN LL_TIM_IsEnabledCounter +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(const TIM_TypeDef *TIMx) +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL); +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable update event generation. +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UDIS LL_TIM_EnableUpdateEvent +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx) +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS); +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable update event generation. +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UDIS LL_TIM_DisableUpdateEvent +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx) +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_UDIS); +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether update event generation is enabled. +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UDIS LL_TIM_IsEnabledUpdateEvent +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance + ARM GAS /tmp/cc8Pc1nf.s page 37 + + +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Inverted state of bit (0 or 1). +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(const TIM_TypeDef *TIMx) +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL); +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set update event source +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * generate an update interrupt or DMA request if enabled: +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * - Counter overflow/underflow +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * - Setting the UG bit +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * - Update generation through the slave mode controller +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * overflow/underflow generates an update interrupt or DMA request if enabled. +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 URS LL_TIM_SetUpdateSource +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param UpdateSource This parameter can be one of the following values: +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_REGULAR +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_COUNTER +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource) +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource); +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual event update source +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 URS LL_TIM_GetUpdateSource +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_REGULAR +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_COUNTER +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(const TIM_TypeDef *TIMx) +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS)); +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set one pulse mode (one shot v.s. repetitive). +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 OPM LL_TIM_SetOnePulseMode +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param OnePulseMode This parameter can be one of the following values: +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode) +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode); +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual one pulse mode. + ARM GAS /tmp/cc8Pc1nf.s page 38 + + +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 OPM LL_TIM_GetOnePulseMode +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(const TIM_TypeDef *TIMx) +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM)); +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the timer counter counting mode. +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * check whether or not the counter mode selection feature is supported +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * by a timer instance. +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * requires a timer reset to avoid unexpected direction +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * due to DIR bit readonly in center aligned mode. +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 DIR LL_TIM_SetCounterMode\n +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR1 CMS LL_TIM_SetCounterMode +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CounterMode This parameter can be one of the following values: +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_UP +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_DOWN +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode) +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode); +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual counter mode. +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * check whether or not the counter mode selection feature is supported +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * by a timer instance. +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 DIR LL_TIM_GetCounterMode\n +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR1 CMS LL_TIM_GetCounterMode +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_UP +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_DOWN +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetCounterMode(const TIM_TypeDef *TIMx) +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t counter_mode; +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CMS)); +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** if (counter_mode == 0U) + ARM GAS /tmp/cc8Pc1nf.s page 39 + + +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return counter_mode; +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable auto-reload (ARR) preload. +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 ARPE LL_TIM_EnableARRPreload +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx) +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_ARPE); +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable auto-reload (ARR) preload. +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 ARPE LL_TIM_DisableARRPreload +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx) +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE); +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether auto-reload (ARR) preload is enabled. +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 ARPE LL_TIM_IsEnabledARRPreload +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(const TIM_TypeDef *TIMx) +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL); +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the division ratio between the timer clock and the sampling clock used by the dead +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (when supported) and the digital filters. +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not the clock division feature is supported by the timer +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * instance. +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CKD LL_TIM_SetClockDivision +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ClockDivision This parameter can be one of the following values: +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision) +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision); + ARM GAS /tmp/cc8Pc1nf.s page 40 + + +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the actual division ratio between the timer clock and the sampling clock used by t +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * generators (when supported) and the digital filters. +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not the clock division feature is supported by the timer +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * instance. +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CKD LL_TIM_GetClockDivision +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetClockDivision(const TIM_TypeDef *TIMx) +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD)); +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the counter value. +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CNT CNT LL_TIM_SetCounter +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF) +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter) +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CNT, Counter); +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the counter value. +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CNT CNT LL_TIM_GetCounter +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF) +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetCounter(const TIM_TypeDef *TIMx) +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CNT)); +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current direction of the counter +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 DIR LL_TIM_GetDirection +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERDIRECTION_UP +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERDIRECTION_DOWN +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetDirection(const TIM_TypeDef *TIMx) +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 41 + + +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the prescaler value. +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1). +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The prescaler can be changed on the fly as this control register is buffered. The new +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * prescaler ratio is taken into account at the next update event. +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll PSC PSC LL_TIM_SetPrescaler +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Prescaler between Min_Data=0 and Max_Data=65535 +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler) +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->PSC, Prescaler); +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the prescaler value. +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll PSC PSC LL_TIM_GetPrescaler +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Prescaler value between Min_Data=0 and Max_Data=65535 +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetPrescaler(const TIM_TypeDef *TIMx) +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->PSC)); +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the auto-reload value. +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The counter is blocked while the auto-reload value is null. +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll ARR ARR LL_TIM_SetAutoReload +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param AutoReload between Min_Data=0 and Max_Data=65535 +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload) +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->ARR, AutoReload); +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the auto-reload value. +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll ARR ARR LL_TIM_GetAutoReload +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Auto-reload value +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetAutoReload(const TIM_TypeDef *TIMx) +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->ARR)); + ARM GAS /tmp/cc8Pc1nf.s page 42 + + +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the repetition counter value. +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note For advanced timer instances RepetitionCounter can be up to 65535. +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a repetition counter. +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll RCR REP LL_TIM_SetRepetitionCounter +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param RepetitionCounter between Min_Data=0 and Max_Data=255 or 65535 for advanced timer. +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter) +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->RCR, RepetitionCounter); +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the repetition counter value. +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a repetition counter. +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll RCR REP LL_TIM_GetRepetitionCounter +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Repetition counter value +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(const TIM_TypeDef *TIMx) +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->RCR)); +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Force a continuous copy of the update interrupt flag (UIF) into the timer counter regis +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This allows both the counter value and a potential roll-over condition signalled by the U +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * in an atomic way. +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UIFREMAP LL_TIM_EnableUIFRemap +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableUIFRemap(TIM_TypeDef *TIMx) +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_UIFREMAP); +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable update interrupt flag (UIF) remapping. +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UIFREMAP LL_TIM_DisableUIFRemap +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableUIFRemap(TIM_TypeDef *TIMx) +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_UIFREMAP); +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether update interrupt flag (UIF) copy is set. +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Counter Counter value + ARM GAS /tmp/cc8Pc1nf.s page 43 + + +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveUIFCPY(const uint32_t Counter) +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (((Counter & TIM_CNT_UIFCPY) == (TIM_CNT_UIFCPY)) ? 1UL : 0UL); +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written, +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * they are updated only when a commutation event (COM) occurs. +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Only on channels that have a complementary output. +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance is able to generate a commutation event. +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCPC LL_TIM_CC_EnablePreload +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx) +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR2, TIM_CR2_CCPC); +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance is able to generate a commutation event. +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCPC LL_TIM_CC_DisablePreload +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx) +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC); +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare control bits (CCxE, CCxNE and OCxM) preload is en +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCPC LL_TIM_CC_IsEnabledPreload +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledPreload(const TIM_TypeDef *TIMx) +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR2, TIM_CR2_CCPC) == (TIM_CR2_CCPC)) ? 1UL : 0UL); +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM). +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + ARM GAS /tmp/cc8Pc1nf.s page 44 + + +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance is able to generate a commutation event. +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCUS LL_TIM_CC_SetUpdate +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CCUpdateSource This parameter can be one of the following values: +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource) +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource); +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the trigger of the capture/compare DMA request. +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCDS LL_TIM_CC_SetDMAReqTrigger +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DMAReqTrigger This parameter can be one of the following values: +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_CC +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger) +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger); +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual trigger of the capture/compare DMA request. +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCDS LL_TIM_CC_GetDMAReqTrigger +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_CC +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(const TIM_TypeDef *TIMx) +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS)); +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the lock level to freeze the +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * configuration of several capture/compare parameters. +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the lock mechanism is supported by a timer instance. +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR LOCK LL_TIM_CC_SetLockLevel +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param LockLevel This parameter can be one of the following values: +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_OFF +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_1 +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_2 +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_3 +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel) +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel); + ARM GAS /tmp/cc8Pc1nf.s page 45 + + +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare channels. +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1E LL_TIM_CC_EnableChannel\n +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NE LL_TIM_CC_EnableChannel\n +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2E LL_TIM_CC_EnableChannel\n +1829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NE LL_TIM_CC_EnableChannel\n +1830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3E LL_TIM_CC_EnableChannel\n +1831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NE LL_TIM_CC_EnableChannel\n +1832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4E LL_TIM_CC_EnableChannel\n +1833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5E LL_TIM_CC_EnableChannel\n +1834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6E LL_TIM_CC_EnableChannel +1835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channels This parameter can be a combination of the following values: +1837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +1841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +1843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +1849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CCER, Channels); +1851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare channels. +1855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1E LL_TIM_CC_DisableChannel\n +1856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NE LL_TIM_CC_DisableChannel\n +1857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2E LL_TIM_CC_DisableChannel\n +1858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NE LL_TIM_CC_DisableChannel\n +1859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3E LL_TIM_CC_DisableChannel\n +1860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NE LL_TIM_CC_DisableChannel\n +1861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4E LL_TIM_CC_DisableChannel\n +1862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5E LL_TIM_CC_DisableChannel\n +1863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6E LL_TIM_CC_DisableChannel +1864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channels This parameter can be a combination of the following values: +1866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +1868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +1870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +1872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +1878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 46 + + +1879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CCER, Channels); +1880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether channel(s) is(are) enabled. +1884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1E LL_TIM_CC_IsEnabledChannel\n +1885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NE LL_TIM_CC_IsEnabledChannel\n +1886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2E LL_TIM_CC_IsEnabledChannel\n +1887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NE LL_TIM_CC_IsEnabledChannel\n +1888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3E LL_TIM_CC_IsEnabledChannel\n +1889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NE LL_TIM_CC_IsEnabledChannel\n +1890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4E LL_TIM_CC_IsEnabledChannel\n +1891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5E LL_TIM_CC_IsEnabledChannel\n +1892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6E LL_TIM_CC_IsEnabledChannel +1893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channels This parameter can be a combination of the following values: +1895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +1897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +1899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +1901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(const TIM_TypeDef *TIMx, uint32_t Channels) +1907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL); +1909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Output_Channel Output channel configuration +1916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure an output channel. +1920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_OC_ConfigOutput\n +1921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_OC_ConfigOutput\n +1922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_OC_ConfigOutput\n +1923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_OC_ConfigOutput\n +1924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 CC5S LL_TIM_OC_ConfigOutput\n +1925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 CC6S LL_TIM_OC_ConfigOutput\n +1926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1P LL_TIM_OC_ConfigOutput\n +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_OC_ConfigOutput\n +1928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_OC_ConfigOutput\n +1929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_OC_ConfigOutput\n +1930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5P LL_TIM_OC_ConfigOutput\n +1931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6P LL_TIM_OC_ConfigOutput\n +1932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS1 LL_TIM_OC_ConfigOutput\n +1933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2 LL_TIM_OC_ConfigOutput\n +1934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3 LL_TIM_OC_ConfigOutput\n +1935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS4 LL_TIM_OC_ConfigOutput\n + ARM GAS /tmp/cc8Pc1nf.s page 47 + + +1936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS5 LL_TIM_OC_ConfigOutput\n +1937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS6 LL_TIM_OC_ConfigOutput +1938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +1940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Configuration This parameter must be a combination of all the following values: +1947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW +1948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH +1949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configura +1952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +1954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel])); +1956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), +1957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]); +1958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), +1959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]); +1960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Define the behavior of the output reference signal OCxREF from which +1964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * OCx and OCxN (when relevant) are derived. +1965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1M LL_TIM_OC_SetMode\n +1966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2M LL_TIM_OC_SetMode\n +1967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3M LL_TIM_OC_SetMode\n +1968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4M LL_TIM_OC_SetMode\n +1969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5M LL_TIM_OC_SetMode\n +1970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6M LL_TIM_OC_SetMode +1971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +1973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Mode This parameter can be one of the following values: +1980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FROZEN +1981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ACTIVE +1982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_INACTIVE +1983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_TOGGLE +1984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE +1985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE +1986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM1 +1987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM2 +1988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM1 +1989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM2 +1990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM1 +1991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM2 +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM1 + ARM GAS /tmp/cc8Pc1nf.s page 48 + + +1993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM2 +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode) +1997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +1999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT +2001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the output compare mode of an output channel. +2005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1M LL_TIM_OC_GetMode\n +2006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2M LL_TIM_OC_GetMode\n +2007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3M LL_TIM_OC_GetMode\n +2008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4M LL_TIM_OC_GetMode\n +2009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5M LL_TIM_OC_GetMode\n +2010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6M LL_TIM_OC_GetMode +2011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FROZEN +2021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ACTIVE +2022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_INACTIVE +2023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_TOGGLE +2024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE +2025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE +2026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM1 +2027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM2 +2028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM1 +2029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM2 +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM1 +2031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM2 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM1 +2033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM2 +2034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetMode(const TIM_TypeDef *TIMx, uint32_t Channel) +2036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT +2040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the polarity of an output channel. +2044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_OC_SetPolarity\n +2045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_OC_SetPolarity\n +2046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_OC_SetPolarity\n +2047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_OC_SetPolarity\n +2048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_OC_SetPolarity\n +2049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_OC_SetPolarity\n + ARM GAS /tmp/cc8Pc1nf.s page 49 + + +2050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_OC_SetPolarity\n +2051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5P LL_TIM_OC_SetPolarity\n +2052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6P LL_TIM_OC_SetPolarity +2053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Polarity This parameter can be one of the following values: +2065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_HIGH +2066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_LOW +2067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity) +2070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), Polarity << SHIFT_TAB_CCxP[i +2073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the polarity of an output channel. +2077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_OC_GetPolarity\n +2078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_OC_GetPolarity\n +2079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_OC_GetPolarity\n +2080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_OC_GetPolarity\n +2081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_OC_GetPolarity\n +2082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_OC_GetPolarity\n +2083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_OC_GetPolarity\n +2084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5P LL_TIM_OC_GetPolarity\n +2085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6P LL_TIM_OC_GetPolarity +2086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_HIGH +2099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_LOW +2100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +2102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChan +2105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/cc8Pc1nf.s page 50 + + +2107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the IDLE state of an output channel +2109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function is significant only for the timer instances +2110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * supporting the break feature. Macro IS_TIM_BREAK_INSTANCE(TIMx) +2111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * can be used to check whether or not a timer instance provides +2112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a break input. +2113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 OIS1 LL_TIM_OC_SetIdleState\n +2114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_SetIdleState\n +2115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2 LL_TIM_OC_SetIdleState\n +2116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_SetIdleState\n +2117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3 LL_TIM_OC_SetIdleState\n +2118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3N LL_TIM_OC_SetIdleState\n +2119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS4 LL_TIM_OC_SetIdleState\n +2120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS5 LL_TIM_OC_SetIdleState\n +2121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS6 LL_TIM_OC_SetIdleState +2122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param IdleState This parameter can be one of the following values: +2134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_LOW +2135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_HIGH +2136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState +2139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), IdleState << SHIFT_TAB_OISx[iC +2142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the IDLE state of an output channel +2146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 OIS1 LL_TIM_OC_GetIdleState\n +2147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_GetIdleState\n +2148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2 LL_TIM_OC_GetIdleState\n +2149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_GetIdleState\n +2150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3 LL_TIM_OC_GetIdleState\n +2151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3N LL_TIM_OC_GetIdleState\n +2152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS4 LL_TIM_OC_GetIdleState\n +2153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS5 LL_TIM_OC_GetIdleState\n +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS6 LL_TIM_OC_GetIdleState +2155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 + ARM GAS /tmp/cc8Pc1nf.s page 51 + + +2164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_LOW +2168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_HIGH +2169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(const TIM_TypeDef *TIMx, uint32_t Channel) +2171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChanne +2174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable fast mode for the output channel. +2178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Acts only if the channel is configured in PWM1 or PWM2 mode. +2179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1FE LL_TIM_OC_EnableFast\n +2180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2FE LL_TIM_OC_EnableFast\n +2181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3FE LL_TIM_OC_EnableFast\n +2182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4FE LL_TIM_OC_EnableFast\n +2183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5FE LL_TIM_OC_EnableFast\n +2184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6FE LL_TIM_OC_EnableFast +2185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel) +2196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); +2200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable fast mode for the output channel. +2205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1FE LL_TIM_OC_DisableFast\n +2206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2FE LL_TIM_OC_DisableFast\n +2207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3FE LL_TIM_OC_DisableFast\n +2208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4FE LL_TIM_OC_DisableFast\n +2209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5FE LL_TIM_OC_DisableFast\n +2210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6FE LL_TIM_OC_DisableFast +2211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 52 + + +2221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel) +2222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); +2226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether fast mode is enabled for the output channel. +2231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1FE LL_TIM_OC_IsEnabledFast\n +2232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2FE LL_TIM_OC_IsEnabledFast\n +2233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3FE LL_TIM_OC_IsEnabledFast\n +2234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4FE LL_TIM_OC_IsEnabledFast\n +2235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5FE LL_TIM_OC_IsEnabledFast\n +2236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6FE LL_TIM_OC_IsEnabledFast +2237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(const TIM_TypeDef *TIMx, uint32_t Channel) +2248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]; +2252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +2253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable compare register (TIMx_CCRx) preload for the output channel. +2257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1PE LL_TIM_OC_EnablePreload\n +2258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2PE LL_TIM_OC_EnablePreload\n +2259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3PE LL_TIM_OC_EnablePreload\n +2260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4PE LL_TIM_OC_EnablePreload\n +2261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5PE LL_TIM_OC_EnablePreload\n +2262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6PE LL_TIM_OC_EnablePreload +2263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +2274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); + ARM GAS /tmp/cc8Pc1nf.s page 53 + + +2278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable compare register (TIMx_CCRx) preload for the output channel. +2282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1PE LL_TIM_OC_DisablePreload\n +2283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2PE LL_TIM_OC_DisablePreload\n +2284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3PE LL_TIM_OC_DisablePreload\n +2285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4PE LL_TIM_OC_DisablePreload\n +2286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5PE LL_TIM_OC_DisablePreload\n +2287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6PE LL_TIM_OC_DisablePreload +2288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +2299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +2303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channe +2307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1PE LL_TIM_OC_IsEnabledPreload\n +2308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2PE LL_TIM_OC_IsEnabledPreload\n +2309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3PE LL_TIM_OC_IsEnabledPreload\n +2310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4PE LL_TIM_OC_IsEnabledPreload\n +2311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5PE LL_TIM_OC_IsEnabledPreload\n +2312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6PE LL_TIM_OC_IsEnabledPreload +2313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(const TIM_TypeDef *TIMx, uint32_t Channel) +2324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]; +2328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +2329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable clearing the output channel on an external event. +2333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function can only be used in Output compare and PWM modes. It does not work in Force +2334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + ARM GAS /tmp/cc8Pc1nf.s page 54 + + +2335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance can clear the OCxREF signal on an external event. +2336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1CE LL_TIM_OC_EnableClear\n +2337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2CE LL_TIM_OC_EnableClear\n +2338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3CE LL_TIM_OC_EnableClear\n +2339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4CE LL_TIM_OC_EnableClear\n +2340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5CE LL_TIM_OC_EnableClear\n +2341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6CE LL_TIM_OC_EnableClear +2342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel) +2353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +2357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable clearing the output channel on an external event. +2361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether +2362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance can clear the OCxREF signal on an external event. +2363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1CE LL_TIM_OC_DisableClear\n +2364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2CE LL_TIM_OC_DisableClear\n +2365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3CE LL_TIM_OC_DisableClear\n +2366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4CE LL_TIM_OC_DisableClear\n +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5CE LL_TIM_OC_DisableClear\n +2368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6CE LL_TIM_OC_DisableClear +2369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel) +2380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +2384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates clearing the output channel on an external event is enabled for the output ch +2388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function enables clearing the output channel on an external event. +2389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function can only be used in Output compare and PWM modes. It does not work in Force +2390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether +2391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance can clear the OCxREF signal on an external event. + ARM GAS /tmp/cc8Pc1nf.s page 55 + + +2392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1CE LL_TIM_OC_IsEnabledClear\n +2393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2CE LL_TIM_OC_IsEnabledClear\n +2394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3CE LL_TIM_OC_IsEnabledClear\n +2395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4CE LL_TIM_OC_IsEnabledClear\n +2396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5CE LL_TIM_OC_IsEnabledClear\n +2397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6CE LL_TIM_OC_IsEnabledClear +2398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(const TIM_TypeDef *TIMx, uint32_t Channel) +2409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]; +2413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +2414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal an +2418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the Ocx and OCxN signals). +2419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +2420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * dead-time insertion feature is supported by a timer instance. +2421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter +2422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR DTG LL_TIM_OC_SetDeadTime +2423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DeadTime between Min_Data=0 and Max_Data=255 +2425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime) +2428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime); +2430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 1 (TIMx_CCR1). +2434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not +2438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 1 is supported by a timer instance. +2439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR1 CCR1 LL_TIM_OC_SetCompareCH1 +2440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue) +2445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR1, CompareValue); +2447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/cc8Pc1nf.s page 56 + + +2449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 2 (TIMx_CCR2). +2451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not +2455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 2 is supported by a timer instance. +2456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR2 CCR2 LL_TIM_OC_SetCompareCH2 +2457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue) +2462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR2, CompareValue); +2464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 3 (TIMx_CCR3). +2468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not +2472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel is supported by a timer instance. +2473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR3 CCR3 LL_TIM_OC_SetCompareCH3 +2474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue) +2479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR3, CompareValue); +2481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 4 (TIMx_CCR4). +2485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not +2489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 4 is supported by a timer instance. +2490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR4 CCR4 LL_TIM_OC_SetCompareCH4 +2491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue) +2496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR4, CompareValue); +2498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 5 (TIMx_CCR5). +2502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC5_INSTANCE(TIMx) can be used to check whether or not +2503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 5 is supported by a timer instance. +2504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR5 CCR5 LL_TIM_OC_SetCompareCH5 +2505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance + ARM GAS /tmp/cc8Pc1nf.s page 57 + + +2506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH5(TIM_TypeDef *TIMx, uint32_t CompareValue) +2510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCR5, TIM_CCR5_CCR5, CompareValue); +2512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 6 (TIMx_CCR6). +2516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC6_INSTANCE(TIMx) can be used to check whether or not +2517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 6 is supported by a timer instance. +2518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR6 CCR6 LL_TIM_OC_SetCompareCH6 +2519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH6(TIM_TypeDef *TIMx, uint32_t CompareValue) +2524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR6, CompareValue); +2526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR1) set for output channel 1. +2530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not +2534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 1 is supported by a timer instance. +2535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR1 CCR1 LL_TIM_OC_GetCompareCH1 +2536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(const TIM_TypeDef *TIMx) +2540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR1)); +2542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR2) set for output channel 2. +2546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not +2550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 2 is supported by a timer instance. +2551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR2 CCR2 LL_TIM_OC_GetCompareCH2 +2552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(const TIM_TypeDef *TIMx) +2556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR2)); +2558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR3) set for output channel 3. +2562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF + ARM GAS /tmp/cc8Pc1nf.s page 58 + + +2563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not +2566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 3 is supported by a timer instance. +2567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR3 CCR3 LL_TIM_OC_GetCompareCH3 +2568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(const TIM_TypeDef *TIMx) +2572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR3)); +2574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR4) set for output channel 4. +2578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not +2582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 4 is supported by a timer instance. +2583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR4 CCR4 LL_TIM_OC_GetCompareCH4 +2584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(const TIM_TypeDef *TIMx) +2588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR4)); +2590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR5) set for output channel 5. +2594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC5_INSTANCE(TIMx) can be used to check whether or not +2595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 5 is supported by a timer instance. +2596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR5 CCR5 LL_TIM_OC_GetCompareCH5 +2597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH5(const TIM_TypeDef *TIMx) +2601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CCR5, TIM_CCR5_CCR5)); +2603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR6) set for output channel 6. +2607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC6_INSTANCE(TIMx) can be used to check whether or not +2608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 6 is supported by a timer instance. +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR6 CCR6 LL_TIM_OC_GetCompareCH6 +2610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH6(const TIM_TypeDef *TIMx) +2614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR6)); +2616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Select on which reference signal the OC5REF is combined to. + ARM GAS /tmp/cc8Pc1nf.s page 59 + + +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMBINED3PHASEPWM_INSTANCE(TIMx) can be used to check +2621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports the combined 3-phase PWM mode. +2622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR5 GC5C3 LL_TIM_SetCH5CombinedChannels\n +2623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCR5 GC5C2 LL_TIM_SetCH5CombinedChannels\n +2624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCR5 GC5C1 LL_TIM_SetCH5CombinedChannels +2625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param GroupCH5 This parameter can be a combination of the following values: +2627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_NONE +2628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_OC1REFC +2629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_OC2REFC +2630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_OC3REFC +2631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetCH5CombinedChannels(TIM_TypeDef *TIMx, uint32_t GroupCH5) +2634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCR5, (TIM_CCR5_GC5C3 | TIM_CCR5_GC5C2 | TIM_CCR5_GC5C1), GroupCH5); +2636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +2640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Input_Channel Input channel configuration +2643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +2644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure input channel. +2647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_IC_Config\n +2648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC1PSC LL_TIM_IC_Config\n +2649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC1F LL_TIM_IC_Config\n +2650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_IC_Config\n +2651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2PSC LL_TIM_IC_Config\n +2652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2F LL_TIM_IC_Config\n +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_IC_Config\n +2654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3PSC LL_TIM_IC_Config\n +2655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3F LL_TIM_IC_Config\n +2656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_IC_Config\n +2657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4PSC LL_TIM_IC_Config\n +2658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4F LL_TIM_IC_Config\n +2659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1P LL_TIM_IC_Config\n +2660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_IC_Config\n +2661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_IC_Config\n +2662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_IC_Config\n +2663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_IC_Config\n +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_IC_Config\n +2665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_IC_Config\n +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4NP LL_TIM_IC_Config +2667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Configuration This parameter must be a combination of all the following values: +2674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_ +2675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8 +2676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8 + ARM GAS /tmp/cc8Pc1nf.s page 60 + + +2677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING or @ref LL_TIM_I +2678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +2681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChanne +2685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S)) +2686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** << SHIFT_TAB_ICxx[iChannel]); +2687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), +2688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]); +2689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the active input. +2693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_IC_SetActiveInput\n +2694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_IC_SetActiveInput\n +2695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_IC_SetActiveInput\n +2696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_IC_SetActiveInput +2697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICActiveInput This parameter can be one of the following values: +2704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI +2705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI +2706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_TRC +2707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiv +2710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT +2714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current active input. +2718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_IC_GetActiveInput\n +2719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_IC_GetActiveInput\n +2720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_IC_GetActiveInput\n +2721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_IC_GetActiveInput +2722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI +2731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_TRC +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(const TIM_TypeDef *TIMx, uint32_t Channel) + ARM GAS /tmp/cc8Pc1nf.s page 61 + + +2734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChann +2738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the prescaler of input channel. +2742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1PSC LL_TIM_IC_SetPrescaler\n +2743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2PSC LL_TIM_IC_SetPrescaler\n +2744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3PSC LL_TIM_IC_SetPrescaler\n +2745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4PSC LL_TIM_IC_SetPrescaler +2746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICPrescaler This parameter can be one of the following values: +2753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 +2754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV2 +2755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV4 +2756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV8 +2757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescal +2760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT +2764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current prescaler value acting on an input channel. +2768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1PSC LL_TIM_IC_GetPrescaler\n +2769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2PSC LL_TIM_IC_GetPrescaler\n +2770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3PSC LL_TIM_IC_GetPrescaler\n +2771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4PSC LL_TIM_IC_GetPrescaler +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 +2780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV2 +2781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV4 +2782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV8 +2783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(const TIM_TypeDef *TIMx, uint32_t Channel) +2785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iCha +2789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/cc8Pc1nf.s page 62 + + +2791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the input filter duration. +2793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1F LL_TIM_IC_SetFilter\n +2794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2F LL_TIM_IC_SetFilter\n +2795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3F LL_TIM_IC_SetFilter\n +2796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4F LL_TIM_IC_SetFilter +2797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICFilter This parameter can be one of the following values: +2804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1 +2805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 +2807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 +2808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 +2809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 +2810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 +2811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 +2812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 +2813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 +2814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 +2815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 +2816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 +2817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 +2818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 +2819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 +2820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter) +2823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ +2827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the input filter duration. +2831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1F LL_TIM_IC_GetFilter\n +2832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2F LL_TIM_IC_GetFilter\n +2833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3F LL_TIM_IC_GetFilter\n +2834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4F LL_TIM_IC_GetFilter +2835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1 +2843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 +2844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 +2845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 +2846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 +2847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 + ARM GAS /tmp/cc8Pc1nf.s page 63 + + +2848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 +2849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 +2850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 +2851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 +2852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 +2853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 +2854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 +2855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 +2856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 +2857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 +2858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(const TIM_TypeDef *TIMx, uint32_t Channel) +2860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChann +2864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the input channel polarity. +2868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_IC_SetPolarity\n +2869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_IC_SetPolarity\n +2870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_IC_SetPolarity\n +2871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_IC_SetPolarity\n +2872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_IC_SetPolarity\n +2873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_IC_SetPolarity\n +2874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_IC_SetPolarity\n +2875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4NP LL_TIM_IC_SetPolarity +2876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICPolarity This parameter can be one of the following values: +2883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_RISING +2884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_FALLING +2885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE +2886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity +2889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), +2892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ICPolarity << SHIFT_TAB_CCxP[iChannel]); +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current input channel polarity. +2897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_IC_GetPolarity\n +2898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_IC_GetPolarity\n +2899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_IC_GetPolarity\n +2900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_IC_GetPolarity\n +2901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_IC_GetPolarity\n +2902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_IC_GetPolarity\n +2903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_IC_GetPolarity\n +2904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4NP LL_TIM_IC_GetPolarity + ARM GAS /tmp/cc8Pc1nf.s page 64 + + +2905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_RISING +2913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_FALLING +2914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE +2915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +2917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >> +2920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SHIFT_TAB_CCxP[iChannel]); +2921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Connect the TIMx_CH1, CH2 and CH3 pins to the TI1 input (XOR combination). +2925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not +2926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an XOR input. +2927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 TI1S LL_TIM_IC_EnableXORCombination +2928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx) +2932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR2, TIM_CR2_TI1S); +2934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disconnect the TIMx_CH1, CH2 and CH3 pins from the TI1 input. +2938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not +2939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an XOR input. +2940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 TI1S LL_TIM_IC_DisableXORCombination +2941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx) +2945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S); +2947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input. +2951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not +2952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an XOR input. +2953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 TI1S LL_TIM_IC_IsEnabledXORCombination +2954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(const TIM_TypeDef *TIMx) +2958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL); +2960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/cc8Pc1nf.s page 65 + + +2962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 1. +2964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +2965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not +2968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 1 is supported by a timer instance. +2969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR1 CCR1 LL_TIM_IC_GetCaptureCH1 +2970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +2972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(const TIM_TypeDef *TIMx) +2974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR1)); +2976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 2. +2980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +2981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not +2984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 2 is supported by a timer instance. +2985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR2 CCR2 LL_TIM_IC_GetCaptureCH2 +2986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +2988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(const TIM_TypeDef *TIMx) +2990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR2)); +2992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 3. +2996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +2997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not +3000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 3 is supported by a timer instance. +3001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR3 CCR3 LL_TIM_IC_GetCaptureCH3 +3002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +3004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(const TIM_TypeDef *TIMx) +3006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR3)); +3008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 4. +3012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +3013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +3014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +3015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not +3016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 4 is supported by a timer instance. +3017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR4 CCR4 LL_TIM_IC_GetCaptureCH4 +3018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance + ARM GAS /tmp/cc8Pc1nf.s page 66 + + +3019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +3020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(const TIM_TypeDef *TIMx) +3022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR4)); +3024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection +3031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable external clock mode 2. +3035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ET +3036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ECE LL_TIM_EnableExternalClock +3039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx) +3043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->SMCR, TIM_SMCR_ECE); +3045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable external clock mode 2. +3049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ECE LL_TIM_DisableExternalClock +3052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx) +3056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE); +3058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether external clock mode 2 is enabled. +3062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ECE LL_TIM_IsEnabledExternalClock +3065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(const TIM_TypeDef *TIMx) +3069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL); +3071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the clock source of the counter clock. +3075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note when selected clock source is external clock mode 1, the timer input + ARM GAS /tmp/cc8Pc1nf.s page 67 + + +3076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput() +3077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * function. This timer input must be configured by calling +3078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the @ref LL_TIM_IC_Config() function. +3079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check +3080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode1. +3081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR SMS LL_TIM_SetClockSource\n +3084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * SMCR ECE LL_TIM_SetClockSource +3085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ClockSource This parameter can be one of the following values: +3087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL +3088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1 +3089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2 +3090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource) +3093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource); +3095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the encoder interface mode. +3099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check +3100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports the encoder mode. +3101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR SMS LL_TIM_SetEncoderMode +3102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param EncoderMode This parameter can be one of the following values: +3104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ENCODERMODE_X2_TI1 +3105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ENCODERMODE_X2_TI2 +3106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ENCODERMODE_X4_TI12 +3107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode) +3110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode); +3112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration +3119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the trigger output (TRGO) used for timer synchronization . +3123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check +3124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance can operate as a master timer. +3125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 MMS LL_TIM_SetTriggerOutput +3126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TimerSynchronization This parameter can be one of the following values: +3128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_RESET +3129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_ENABLE +3130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_UPDATE +3131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_CC1IF +3132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC1REF + ARM GAS /tmp/cc8Pc1nf.s page 68 + + +3133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC2REF +3134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC3REF +3135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC4REF +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization) +3139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization); +3141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the trigger output 2 (TRGO2) used for ADC synchronization . +3145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_TRGO2_INSTANCE(TIMx) can be used to check +3146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance can be used for ADC synchronization. +3147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 MMS2 LL_TIM_SetTriggerOutput2 +3148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer Instance +3149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ADCSynchronization This parameter can be one of the following values: +3150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_RESET +3151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_ENABLE +3152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_UPDATE +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_CC1F +3154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC1 +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC2 +3156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC3 +3157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4 +3158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC5 +3159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC6 +3160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4_RISINGFALLING +3161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC6_RISINGFALLING +3162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4_RISING_OC6_RISING +3163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4_RISING_OC6_FALLING +3164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC5_RISING_OC6_RISING +3165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC5_RISING_OC6_FALLING +3166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetTriggerOutput2(TIM_TypeDef *TIMx, uint32_t ADCSynchronization) +3169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_MMS2, ADCSynchronization); +3171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the synchronization mode of a slave timer. +3175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR SMS LL_TIM_SetSlaveMode +3178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param SlaveMode This parameter can be one of the following values: +3180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_DISABLED +3181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_RESET +3182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_GATED +3183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_TRIGGER +3184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_COMBINED_RESETTRIGGER +3185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode) +3188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode); + ARM GAS /tmp/cc8Pc1nf.s page 69 + + +3190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the selects the trigger input to be used to synchronize the counter. +3194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR TS LL_TIM_SetTriggerInput +3197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TriggerInput This parameter can be one of the following values: +3199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR0 +3200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR1 +3201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR2 +3202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR3 +3203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_TI1F_ED +3204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_TI1FP1 +3205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_TI2FP2 +3206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ETRF +3207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput) +3210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput); +3212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the Master/Slave mode. +3216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR MSM LL_TIM_EnableMasterSlaveMode +3219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx) +3223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->SMCR, TIM_SMCR_MSM); +3225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the Master/Slave mode. +3229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR MSM LL_TIM_DisableMasterSlaveMode +3232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx) +3236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM); +3238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the Master/Slave mode is enabled. +3242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR MSM LL_TIM_IsEnabledMasterSlaveMode +3245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). + ARM GAS /tmp/cc8Pc1nf.s page 70 + + +3247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(const TIM_TypeDef *TIMx) +3249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL); +3251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure the external trigger (ETR) input. +3255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not +3256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an external trigger input. +3257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ETP LL_TIM_ConfigETR\n +3258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * SMCR ETPS LL_TIM_ConfigETR\n +3259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * SMCR ETF LL_TIM_ConfigETR +3260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ETRPolarity This parameter can be one of the following values: +3262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED +3263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_POLARITY_INVERTED +3264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ETRPrescaler This parameter can be one of the following values: +3265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV1 +3266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV2 +3267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV4 +3268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV8 +3269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ETRFilter This parameter can be one of the following values: +3270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1 +3271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2 +3272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4 +3273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8 +3274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6 +3275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8 +3276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6 +3277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8 +3278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6 +3279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8 +3280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5 +3281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6 +3282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8 +3283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5 +3284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6 +3285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8 +3286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescale +3289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ETRFilter) +3290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | +3292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Break_Function Break function configuration +3299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the break function. +3303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + ARM GAS /tmp/cc8Pc1nf.s page 71 + + +3304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BKE LL_TIM_EnableBRK +3306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx) +3310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_BKE); +3312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the break function. +3316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BKE LL_TIM_DisableBRK +3317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx) +3323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE); +3325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure the break input. +3329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BKP LL_TIM_ConfigBRK\n +3332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * BDTR BKF LL_TIM_ConfigBRK +3333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakPolarity This parameter can be one of the following values: +3335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_POLARITY_LOW +3336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_POLARITY_HIGH +3337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakFilter This parameter can be one of the following values: +3338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1 +3339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N2 +3340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N4 +3341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N8 +3342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV2_N6 +3343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV2_N8 +3344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV4_N6 +3345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV4_N8 +3346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV8_N6 +3347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV8_N8 +3348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N5 +3349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N6 +3350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N8 +3351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N5 +3352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N6 +3353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N8 +3354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity, +3357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t BreakFilter) +3358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP | TIM_BDTR_BKF, BreakPolarity | BreakFilter); +3360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + ARM GAS /tmp/cc8Pc1nf.s page 72 + + +3361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the break 2 function. +3364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not +3365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a second break input. +3366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BK2E LL_TIM_EnableBRK2 +3367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableBRK2(TIM_TypeDef *TIMx) +3371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_BK2E); +3373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the break 2 function. +3377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not +3378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a second break input. +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BK2E LL_TIM_DisableBRK2 +3380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableBRK2(TIM_TypeDef *TIMx) +3384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BK2E); +3386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure the break 2 input. +3390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not +3391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a second break input. +3392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BK2P LL_TIM_ConfigBRK2\n +3393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * BDTR BK2F LL_TIM_ConfigBRK2 +3394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Break2Polarity This parameter can be one of the following values: +3396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_POLARITY_LOW +3397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_POLARITY_HIGH +3398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Break2Filter This parameter can be one of the following values: +3399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1 +3400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N2 +3401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N4 +3402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N8 +3403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV2_N6 +3404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV2_N8 +3405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV4_N6 +3406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV4_N8 +3407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV8_N6 +3408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV8_N8 +3409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N5 +3410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N6 +3411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N8 +3412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N5 +3413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N6 +3414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N8 +3415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigBRK2(TIM_TypeDef *TIMx, uint32_t Break2Polarity, uint32_t Break2F + ARM GAS /tmp/cc8Pc1nf.s page 73 + + +3418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_BK2P | TIM_BDTR_BK2F, Break2Polarity | Break2Filter); +3420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Select the outputs off state (enabled v.s. disabled) in Idle and Run modes. +3424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR OSSI LL_TIM_SetOffStates\n +3427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * BDTR OSSR LL_TIM_SetOffStates +3428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param OffStateIdle This parameter can be one of the following values: +3430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSI_DISABLE +3431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSI_ENABLE +3432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param OffStateRun This parameter can be one of the following values: +3433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSR_DISABLE +3434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSR_ENABLE +3435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStat +3438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun); +3440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable automatic output (MOE can be set by software or automatically when a break input +3444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR AOE LL_TIM_EnableAutomaticOutput +3447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx) +3451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_AOE); +3453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable automatic output (MOE can be set only by software). +3457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR AOE LL_TIM_DisableAutomaticOutput +3460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx) +3464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE); +3466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether automatic output is enabled. +3470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR AOE LL_TIM_IsEnabledAutomaticOutput +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). + ARM GAS /tmp/cc8Pc1nf.s page 74 + + +3475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(const TIM_TypeDef *TIMx) +3477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL); +3479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the outputs (set the MOE bit in TIMx_BDTR register). +3483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by +3484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * software and is reset in case of break or break2 event +3485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR MOE LL_TIM_EnableAllOutputs +3488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx) +3492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_MOE); +3494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the outputs (reset the MOE bit in TIMx_BDTR register). +3498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by +3499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * software and is reset in case of break or break2 event. +3500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR MOE LL_TIM_DisableAllOutputs +3503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx) +3507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE); +3509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether outputs are enabled. +3513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR MOE LL_TIM_IsEnabledAllOutputs +3516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(const TIM_TypeDef *TIMx) +3520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL); +3522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(TIM_BREAK_INPUT_SUPPORT) +3525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the signals connected to the designated timer break input. +3527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether +3528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance allows for break input selection. +3529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll AF1 BKINE LL_TIM_EnableBreakInputSource\n +3530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF1 BKDFBKE LL_TIM_EnableBreakInputSource\n +3531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2INE LL_TIM_EnableBreakInputSource\n + ARM GAS /tmp/cc8Pc1nf.s page 75 + + +3532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2DFBKE LL_TIM_EnableBreakInputSource +3533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakInput This parameter can be one of the following values: +3535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN +3536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 +3537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Source This parameter can be one of the following values: +3538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_BKIN +3539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK +3540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableBreakInputSource(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_t +3543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); +3545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, Source); +3546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the signals connected to the designated timer break input. +3550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether +3551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance allows for break input selection. +3552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll AF1 BKINE LL_TIM_DisableBreakInputSource\n +3553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF1 BKDFBKE LL_TIM_DisableBreakInputSource\n +3554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2INE LL_TIM_DisableBreakInputSource\n +3555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2DFBKE LL_TIM_DisableBreakInputSource +3556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakInput This parameter can be one of the following values: +3558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN +3559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 +3560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Source This parameter can be one of the following values: +3561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_BKIN +3562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK +3563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableBreakInputSource(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_ +3566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); +3568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, Source); +3569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the polarity of the break signal for the timer break input. +3573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether +3574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance allows for break input selection. +3575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll AF1 BKINP LL_TIM_SetBreakInputSourcePolarity\n +3576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF1 BKDFBKP LL_TIM_SetBreakInputSourcePolarity\n +3577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2INP LL_TIM_SetBreakInputSourcePolarity\n +3578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2DFBKP LL_TIM_SetBreakInputSourcePolarity +3579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakInput This parameter can be one of the following values: +3581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN +3582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 +3583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Source This parameter can be one of the following values: +3584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_BKIN +3585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK +3586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Polarity This parameter can be one of the following values: +3587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_POLARITY_LOW +3588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_POLARITY_HIGH + ARM GAS /tmp/cc8Pc1nf.s page 76 + + +3589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetBreakInputSourcePolarity(TIM_TypeDef *TIMx, uint32_t BreakInput, uin +3592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Polarity) +3593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); +3595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, (TIMx_AF1_BKINP << TIM_POSITION_BRK_SOURCE), (Polarity << TIM_POSITION_BRK_SOUR +3596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* TIM_BREAK_INPUT_SUPPORT */ +3598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configures the timer DMA burst feature. +3607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or +3608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * not a timer instance supports the DMA burst mode. +3609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DCR DBL LL_TIM_ConfigDMABurst\n +3610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * DCR DBA LL_TIM_ConfigDMABurst +3611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DMABurstBaseAddress This parameter can be one of the following values: +3613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CR1 +3614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CR2 +3615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR +3616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_DIER +3617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_SR +3618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_EGR +3619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1 +3620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2 +3621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCER +3622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CNT +3623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_PSC +3624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_ARR +3625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_RCR +3626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1 +3627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2 +3628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3 +3629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4 +3630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR +3631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_OR +3632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR3 +3633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR5 +3634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR6 +3635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_AF1 (*) +3636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_AF2 (*) +3637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (*) value not defined in all devices +3638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DMABurstLength This parameter can be one of the following values: +3639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER +3640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS +3641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS +3642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS +3643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS +3644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS +3645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS + ARM GAS /tmp/cc8Pc1nf.s page 77 + + +3646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS +3647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS +3648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS +3649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS +3650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS +3651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS +3652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS +3653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS +3654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS +3655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS +3656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS +3657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_ +3660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength)); +3662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Timer_Inputs_Remapping Timer input remapping +3669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Remap TIM inputs (input channel, internal/external triggers). +3673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_REMAP_INSTANCE(TIMx) can be used to check whether or not +3674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a some timer inputs can be remapped. +3675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll TIM2_OR ITR1_RMP LL_TIM_SetRemap\n +3676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM5_OR TI4_RMP LL_TIM_SetRemap\n +3677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM11_OR TI1_RMP LL_TIM_SetRemap +3678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Remap Remap param depends on the TIMx. Description available only +3680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * in CHM version of the User Manual (not in .pdf). +3681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * Otherwise see Reference Manual description of OR registers. +3682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * Below description summarizes "Timer Instance" and "Remap" param combinations: +3684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM2: one of the following values +3686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * ITR1_RMP can be one of the following values +3688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_TIM8_TRGO +3689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_ETH_PTP +3690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_FS_SOF +3691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_HS_SOF +3692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM5: one of the following values +3694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_GPIO +3696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_LSI +3697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_LSE +3698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_RTC +3699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM11: one of the following values +3701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_GPIO + ARM GAS /tmp/cc8Pc1nf.s page 78 + + +3703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_SPDIFRX +3704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_HSE +3705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_MCO1 +3706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetRemap(TIM_TypeDef *TIMx, uint32_t Remap) +3710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->OR, (Remap >> TIMx_OR_RMP_SHIFT), (Remap & TIMx_OR_RMP_MASK)); +3712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management +3719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the update interrupt flag (UIF). +3723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR UIF LL_TIM_ClearFlag_UPDATE +3724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx) +3728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_UIF)); +3730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether update interrupt flag (UIF) is set (update interrupt is pending). +3734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR UIF LL_TIM_IsActiveFlag_UPDATE +3735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(const TIM_TypeDef *TIMx) + 382 .loc 2 3738 26 view .LVU49 + 383 .LBB59: +3739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL); + 384 .loc 2 3740 3 view .LVU50 + 385 .loc 2 3740 12 is_stmt 0 view .LVU51 + 386 0002 094B ldr r3, .L31 + 387 0004 1B69 ldr r3, [r3, #16] + 388 .loc 2 3740 66 view .LVU52 + 389 0006 13F0010F tst r3, #1 + 390 000a 0BD0 beq .L28 + 391 .LVL5: + 392 .loc 2 3740 66 view .LVU53 + 393 .LBE59: + 394 .LBE58: + 327:Src/stm32f7xx_it.c **** { + 328:Src/stm32f7xx_it.c **** LL_TIM_ClearFlag_UPDATE(TIM6); + 395 .loc 1 328 5 is_stmt 1 view .LVU54 + 396 .LBB60: + 397 .LBI60: +3727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 79 + + + 398 .loc 2 3727 22 view .LVU55 + 399 .LBB61: +3729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 400 .loc 2 3729 3 view .LVU56 + 401 000c 064B ldr r3, .L31 + 402 000e 6FF00102 mvn r2, #1 + 403 0012 1A61 str r2, [r3, #16] + 404 .LVL6: +3729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 405 .loc 2 3729 3 is_stmt 0 view .LVU57 + 406 .LBE61: + 407 .LBE60: + 329:Src/stm32f7xx_it.c **** TO6++;//increment tick + 408 .loc 1 329 5 is_stmt 1 view .LVU58 + 409 .loc 1 329 8 is_stmt 0 view .LVU59 + 410 0014 054A ldr r2, .L31+4 + 411 0016 1368 ldr r3, [r2] + 412 0018 0133 adds r3, r3, #1 + 413 001a 1360 str r3, [r2] + 330:Src/stm32f7xx_it.c **** //10 ms or 100 Hz + 331:Src/stm32f7xx_it.c **** HAL_GPIO_TogglePin(TEST_01_GPIO_Port, TEST_01_Pin); + 414 .loc 1 331 5 is_stmt 1 view .LVU60 + 415 001c 0221 movs r1, #2 + 416 001e 0448 ldr r0, .L31+8 + 417 0020 FFF7FEFF bl HAL_GPIO_TogglePin + 418 .LVL7: + 419 .L28: + 332:Src/stm32f7xx_it.c **** //HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12); + 333:Src/stm32f7xx_it.c **** } + 334:Src/stm32f7xx_it.c **** /* USER CODE END TIM6_DAC_IRQn 1 */ + 335:Src/stm32f7xx_it.c **** } + 420 .loc 1 335 1 is_stmt 0 view .LVU61 + 421 0024 08BD pop {r3, pc} + 422 .L32: + 423 0026 00BF .align 2 + 424 .L31: + 425 0028 00100040 .word 1073745920 + 426 002c 00000000 .word TO6 + 427 0030 000C0240 .word 1073875968 + 428 .cfi_endproc + 429 .LFE1197: + 431 .section .text.TIM7_IRQHandler,"ax",%progbits + 432 .align 1 + 433 .global TIM7_IRQHandler + 434 .syntax unified + 435 .thumb + 436 .thumb_func + 437 .fpu fpv5-d16 + 439 TIM7_IRQHandler: + 440 .LFB1198: + 336:Src/stm32f7xx_it.c **** + 337:Src/stm32f7xx_it.c **** /** + 338:Src/stm32f7xx_it.c **** * @brief This function handles TIM7 global interrupt. + 339:Src/stm32f7xx_it.c **** */ + 340:Src/stm32f7xx_it.c **** void TIM7_IRQHandler(void) + 341:Src/stm32f7xx_it.c **** { + 441 .loc 1 341 1 is_stmt 1 view -0 + ARM GAS /tmp/cc8Pc1nf.s page 80 + + + 442 .cfi_startproc + 443 @ args = 0, pretend = 0, frame = 0 + 444 @ frame_needed = 0, uses_anonymous_args = 0 + 445 @ link register save eliminated. + 342:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TIM7_IRQn 0 */ + 343:Src/stm32f7xx_it.c **** + 344:Src/stm32f7xx_it.c **** /* USER CODE END TIM7_IRQn 0 */ + 345:Src/stm32f7xx_it.c **** /* USER CODE BEGIN TIM7_IRQn 1 */ + 346:Src/stm32f7xx_it.c **** if(LL_TIM_IsActiveFlag_UPDATE(TIM7)) + 446 .loc 1 346 3 view .LVU63 + 447 .LVL8: + 448 .LBB62: + 449 .LBI62: +3738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 450 .loc 2 3738 26 view .LVU64 + 451 .LBB63: + 452 .loc 2 3740 3 view .LVU65 + 453 .loc 2 3740 12 is_stmt 0 view .LVU66 + 454 0000 064B ldr r3, .L35 + 455 0002 1B69 ldr r3, [r3, #16] + 456 .loc 2 3740 66 view .LVU67 + 457 0004 13F0010F tst r3, #1 + 458 0008 07D0 beq .L33 + 459 .LVL9: + 460 .loc 2 3740 66 view .LVU68 + 461 .LBE63: + 462 .LBE62: + 347:Src/stm32f7xx_it.c **** { + 348:Src/stm32f7xx_it.c **** LL_TIM_ClearFlag_UPDATE(TIM7); + 463 .loc 1 348 5 is_stmt 1 view .LVU69 + 464 .LBB64: + 465 .LBI64: +3727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 466 .loc 2 3727 22 view .LVU70 + 467 .LBB65: +3729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 468 .loc 2 3729 3 view .LVU71 + 469 000a 044B ldr r3, .L35 + 470 000c 6FF00102 mvn r2, #1 + 471 0010 1A61 str r2, [r3, #16] + 472 .LVL10: +3729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 473 .loc 2 3729 3 is_stmt 0 view .LVU72 + 474 .LBE65: + 475 .LBE64: + 349:Src/stm32f7xx_it.c **** TO7++; + 476 .loc 1 349 5 is_stmt 1 view .LVU73 + 477 .loc 1 349 8 is_stmt 0 view .LVU74 + 478 0012 034A ldr r2, .L35+4 + 479 0014 1368 ldr r3, [r2] + 480 0016 0133 adds r3, r3, #1 + 481 0018 1360 str r3, [r2] + 482 .L33: + 350:Src/stm32f7xx_it.c **** //1 ms or 1000 Hz + 351:Src/stm32f7xx_it.c **** //HAL_GPIO_TogglePin(TEST_01_GPIO_Port, TEST_01_Pin); + 352:Src/stm32f7xx_it.c **** } + 353:Src/stm32f7xx_it.c **** /* USER CODE END TIM7_IRQn 1 */ + ARM GAS /tmp/cc8Pc1nf.s page 81 + + + 354:Src/stm32f7xx_it.c **** } + 483 .loc 1 354 1 view .LVU75 + 484 001a 7047 bx lr + 485 .L36: + 486 .align 2 + 487 .L35: + 488 001c 00140040 .word 1073746944 + 489 0020 00000000 .word TO7 + 490 .cfi_endproc + 491 .LFE1198: + 493 .section .text.UART_RxCpltCallback,"ax",%progbits + 494 .align 1 + 495 .global UART_RxCpltCallback + 496 .syntax unified + 497 .thumb + 498 .thumb_func + 499 .fpu fpv5-d16 + 501 UART_RxCpltCallback: + 502 .LFB1200: + 355:Src/stm32f7xx_it.c **** + 356:Src/stm32f7xx_it.c **** /** + 357:Src/stm32f7xx_it.c **** * @brief This function handles DMA2 stream7 global interrupt. + 358:Src/stm32f7xx_it.c **** */ + 359:Src/stm32f7xx_it.c **** void DMA2_Stream7_IRQHandler(void) + 360:Src/stm32f7xx_it.c **** { + 361:Src/stm32f7xx_it.c **** /* USER CODE BEGIN DMA2_Stream7_IRQn 0 */ + 362:Src/stm32f7xx_it.c **** if(LL_DMA_IsActiveFlag_TC7(DMA2) == 1) + 363:Src/stm32f7xx_it.c **** { + 364:Src/stm32f7xx_it.c **** DMA2_Stream7_TransferComplete(); + 365:Src/stm32f7xx_it.c **** u_tx_flg = 0;//indicate that transfer compete + 366:Src/stm32f7xx_it.c **** } + 367:Src/stm32f7xx_it.c **** else if(LL_DMA_IsActiveFlag_TE7(DMA2) == 1) + 368:Src/stm32f7xx_it.c **** { + 369:Src/stm32f7xx_it.c **** LL_DMA_ClearFlag_TE7(DMA2); + 370:Src/stm32f7xx_it.c **** } + 371:Src/stm32f7xx_it.c **** /* USER CODE END DMA2_Stream7_IRQn 0 */ + 372:Src/stm32f7xx_it.c **** + 373:Src/stm32f7xx_it.c **** /* USER CODE BEGIN DMA2_Stream7_IRQn 1 */ + 374:Src/stm32f7xx_it.c **** + 375:Src/stm32f7xx_it.c **** /* USER CODE END DMA2_Stream7_IRQn 1 */ + 376:Src/stm32f7xx_it.c **** } + 377:Src/stm32f7xx_it.c **** + 378:Src/stm32f7xx_it.c **** /* USER CODE BEGIN 1 */ + 379:Src/stm32f7xx_it.c **** void UART_RxCpltCallback(void) + 380:Src/stm32f7xx_it.c **** { + 503 .loc 1 380 1 is_stmt 1 view -0 + 504 .cfi_startproc + 505 @ args = 0, pretend = 0, frame = 0 + 506 @ frame_needed = 0, uses_anonymous_args = 0 + 507 @ link register save eliminated. + 508 0000 10B4 push {r4} + 509 .LCFI4: + 510 .cfi_def_cfa_offset 4 + 511 .cfi_offset 4, -4 + 381:Src/stm32f7xx_it.c **** uart_buf = LL_USART_ReceiveData8(USART1); + 512 .loc 1 381 5 view .LVU77 + 513 .LVL11: + ARM GAS /tmp/cc8Pc1nf.s page 82 + + + 514 .LBB66: + 515 .LBI66: + 516 .file 3 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @file stm32f7xx_ll_usart.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Header file of USART LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #ifndef STM32F7xx_LL_USART_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define STM32F7xx_LL_USART_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART1) || defined(USART2) || defined(USART3) || defined(USART6) \ + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** || defined(UART4) || defined(UART5) || defined(UART7) || defined(UART8) + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL USART + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private types -------------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private variables ---------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private constants ---------------------------------------------------------*/ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Private_Constants USART Private Constants + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private macros ------------------------------------------------------------*/ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USE_FULL_LL_DRIVER) + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Private_Macros USART Private Macros + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + ARM GAS /tmp/cc8Pc1nf.s page 83 + + + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /*USE_FULL_LL_DRIVER*/ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported types ------------------------------------------------------------*/ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USE_FULL_LL_DRIVER) + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_ES_INIT USART Exported Init structures + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief LL USART Init Structure definition + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** typedef struct + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t BaudRate; /*!< This field defines expected Usart communication baud rat + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetBaudRate().*/ + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t DataWidth; /*!< Specifies the number of data bits transmitted or receive + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_DATAWI + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetDataWidth().*/ + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t StopBits; /*!< Specifies the number of stop bits transmitted. + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_STOPBI + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetStopBitsLength().*/ + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t Parity; /*!< Specifies the parity mode. + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_PARITY + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetParity().*/ + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t TransferDirection; /*!< Specifies whether the Receive and/or Transmit mode is en + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_DIRECT + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetTransferDirection().*/ + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t HardwareFlowControl; /*!< Specifies whether the hardware flow control mode is enab + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_HWCONT + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetHWFlowCtrl().*/ + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t OverSampling; /*!< Specifies whether USART oversampling mode is 16 or 8. + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_OVERSA + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + ARM GAS /tmp/cc8Pc1nf.s page 84 + + + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetOverSampling().*/ + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } LL_USART_InitTypeDef; + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief LL USART Clock Init Structure definition + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** typedef struct + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t ClockOutput; /*!< Specifies whether the USART clock is enabled or disabled + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_CLOCK. + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** @ref LL_USART_EnableSCLKOutput() or @ref LL_USART_Disabl + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t ClockPolarity; /*!< Specifies the steady state of the serial clock. + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_POLARI + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** functions @ref LL_USART_SetClockPolarity(). + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t ClockPhase; /*!< Specifies the clock transition on which the bit capture + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_PHASE. + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** functions @ref LL_USART_SetClockPhase(). + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t LastBitClockPulse; /*!< Specifies whether the clock pulse corresponding to the l + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** data bit (MSB) has to be output on the SCLK pin in synch + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_LASTCL + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** functions @ref LL_USART_SetLastClkPulseOutput(). + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } LL_USART_ClockInitTypeDef; + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USE_FULL_LL_DRIVER */ + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported constants --------------------------------------------------------*/ + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Exported_Constants USART Exported Constants + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_CLEAR_FLAG Clear Flags Defines + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Flags defines which can be used with LL_USART_WriteReg function + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_PECF USART_ICR_PECF /*!< Parity error cle + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_FECF USART_ICR_FECF /*!< Framing error cl + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_NCF USART_ICR_NCF /*!< Noise error dete + ARM GAS /tmp/cc8Pc1nf.s page 85 + + + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_ORECF USART_ICR_ORECF /*!< Overrun error cl + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_IDLECF USART_ICR_IDLECF /*!< Idle line detect + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_TCCF USART_ICR_TCCF /*!< Transmission com + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_TCBGTCF USART_ICR_TCBGTCF /*!< Transmission com + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_LBDCF USART_ICR_LBDCF /*!< LIN break detect + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_CTSCF USART_ICR_CTSCF /*!< CTS clear flag * + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_RTOCF USART_ICR_RTOCF /*!< Receiver timeout + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_EOBCF USART_ICR_EOBCF /*!< End of block cle + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_CMCF USART_ICR_CMCF /*!< Character match + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_WUCF USART_ICR_WUCF /*!< Wakeup from Stop + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_GET_FLAG Get Flags Defines + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Flags defines which can be used with LL_USART_ReadReg function + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_PE USART_ISR_PE /*!< Parity error fla + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_FE USART_ISR_FE /*!< Framing error fl + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_NE USART_ISR_NE /*!< Noise detected f + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_ORE USART_ISR_ORE /*!< Overrun error fl + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_IDLE USART_ISR_IDLE /*!< Idle line detect + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_RXNE USART_ISR_RXNE /*!< Read data regist + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TC USART_ISR_TC /*!< Transmission com + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TXE USART_ISR_TXE /*!< Transmit data re + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_LBDF USART_ISR_LBDF /*!< LIN break detect + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_CTSIF USART_ISR_CTSIF /*!< CTS interrupt fl + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_CTS USART_ISR_CTS /*!< CTS flag */ + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_RTOF USART_ISR_RTOF /*!< Receiver timeout + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_EOBF USART_ISR_EOBF /*!< End of block fla + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_ABRE USART_ISR_ABRE /*!< Auto baud rate e + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_ABRF USART_ISR_ABRF /*!< Auto baud rate f + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_BUSY USART_ISR_BUSY /*!< Busy flag */ + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_CMF USART_ISR_CMF /*!< Character match + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_SBKF USART_ISR_SBKF /*!< Send break flag + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_RWU USART_ISR_RWU /*!< Receiver wakeup + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_WUF USART_ISR_WUF /*!< Wakeup from Stop + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TEACK USART_ISR_TEACK /*!< Transmit enable + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_ISR_REACK) + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_REACK USART_ISR_REACK /*!< Receive enable a + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_ISR_REACK */ + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TCBGT USART_ISR_TCBGT /*!< Transmission com + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + ARM GAS /tmp/cc8Pc1nf.s page 86 + + + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_IT IT Defines + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief IT defines which can be used with LL_USART_ReadReg and LL_USART_WriteReg functions + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_IDLEIE USART_CR1_IDLEIE /*!< IDLE interrupt e + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_RXNEIE USART_CR1_RXNEIE /*!< Read data regist + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_TCIE USART_CR1_TCIE /*!< Transmission com + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_TXEIE USART_CR1_TXEIE /*!< Transmit data re + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_PEIE USART_CR1_PEIE /*!< Parity error */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_CMIE USART_CR1_CMIE /*!< Character match + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_RTOIE USART_CR1_RTOIE /*!< Receiver timeout + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_EOBIE USART_CR1_EOBIE /*!< End of Block int + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR2_LBDIE USART_CR2_LBDIE /*!< LIN break detect + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_EIE USART_CR3_EIE /*!< Error interrupt + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_CTSIE USART_CR3_CTSIE /*!< CTS interrupt en + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_WUFIE USART_CR3_WUFIE /*!< Wakeup from Stop + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_TCBGTIE USART_CR3_TCBGTIE /*!< Transmission com + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DIRECTION Communication Direction + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_NONE 0x00000000U /*!< Transmitter + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_RX USART_CR1_RE /*!< Transmitter + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_TX USART_CR1_TE /*!< Transmitter + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< Transmitter + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_PARITY Parity Control + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PARITY_NONE 0x00000000U /*!< Parity co + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PARITY_EVEN USART_CR1_PCE /*!< Parity co + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< Parity co + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_WAKEUP Wakeup + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_IDLELINE 0x00000000U /*!< USART wake up from Mute + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ADDRESSMARK USART_CR1_WAKE /*!< USART wake up from Mute + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + ARM GAS /tmp/cc8Pc1nf.s page 87 + + + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DATAWIDTH Datawidth + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DATAWIDTH_7B USART_CR1_M1 /*!< 7 bits word length : S + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DATAWIDTH_8B 0x00000000U /*!< 8 bits word length : S + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DATAWIDTH_9B USART_CR1_M0 /*!< 9 bits word length : S + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_OVERSAMPLING Oversampling + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_OVERSAMPLING_16 0x00000000U /*!< Oversampling by 16 */ + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_OVERSAMPLING_8 USART_CR1_OVER8 /*!< Oversampling by 8 */ + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USE_FULL_LL_DRIVER) + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_CLOCK Clock Signal + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CLOCK_DISABLE 0x00000000U /*!< Clock signal not provid + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CLOCK_ENABLE USART_CR2_CLKEN /*!< Clock signal provided * + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /*USE_FULL_LL_DRIVER*/ + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_LASTCLKPULSE Last Clock Pulse + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LASTCLKPULSE_NO_OUTPUT 0x00000000U /*!< The clock pulse of the l + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LASTCLKPULSE_OUTPUT USART_CR2_LBCL /*!< The clock pulse of the l + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_PHASE Clock Phase + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PHASE_1EDGE 0x00000000U /*!< The first clock transiti + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PHASE_2EDGE USART_CR2_CPHA /*!< The second clock transit + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_POLARITY Clock Polarity + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_POLARITY_LOW 0x00000000U /*!< Steady low value on SCLK + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_POLARITY_HIGH USART_CR2_CPOL /*!< Steady high value on SCL + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 88 + + + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_STOPBITS Stop Bits + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_0_5 USART_CR2_STOP_0 /*!< 0.5 + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_1 0x00000000U /*!< 1 s + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) /*!< 1.5 + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_2 USART_CR2_STOP_1 /*!< 2 s + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_TXRX TX RX Pins Swap + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXRX_STANDARD 0x00000000U /*!< TX/RX pins are used as d + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXRX_SWAPPED (USART_CR2_SWAP) /*!< TX and RX pins functions + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_RXPIN_LEVEL RX Pin Active Level Inversion + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_RXPIN_LEVEL_STANDARD 0x00000000U /*!< RX pin signal works usin + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_RXPIN_LEVEL_INVERTED (USART_CR2_RXINV) /*!< RX pin signal values are + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_TXPIN_LEVEL TX Pin Active Level Inversion + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXPIN_LEVEL_STANDARD 0x00000000U /*!< TX pin signal works usin + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXPIN_LEVEL_INVERTED (USART_CR2_TXINV) /*!< TX pin signal values are + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_BINARY_LOGIC Binary Data Inversion + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BINARY_LOGIC_POSITIVE 0x00000000U /*!< Logical data from the da + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BINARY_LOGIC_NEGATIVE USART_CR2_DATAINV /*!< Logical data from the da + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_BITORDER Bit Order + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BITORDER_LSBFIRST 0x00000000U /*!< data is transmitted/rece + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BITORDER_MSBFIRST USART_CR2_MSBFIRST /*!< data is transmitted/rece + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + ARM GAS /tmp/cc8Pc1nf.s page 89 + + + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_AUTOBAUD_DETECT_ON Autobaud Detection + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_STARTBIT 0x00000000U /*!< Me + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE USART_CR2_ABRMODE_0 /*!< Fa + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME USART_CR2_ABRMODE_1 /*!< 0x + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_55_FRAME (USART_CR2_ABRMODE_1 | USART_CR2_ABRMODE_0) /*!< 0x + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_ADDRESS_DETECT Address Length Detection + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ADDRESS_DETECT_4B 0x00000000U /*!< 4-bit address detection + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ADDRESS_DETECT_7B USART_CR2_ADDM7 /*!< 7-bit address detection + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_HWCONTROL Hardware Control + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_NONE 0x00000000U /*!< CTS and R + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_RTS USART_CR3_RTSE /*!< RTS outpu + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_CTS USART_CR3_CTSE /*!< CTS mode + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /*!< CTS and R + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUS) + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_WAKEUP_ON Wakeup Activation + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ON_ADDRESS 0x00000000U /*!< Wake u + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1 /*!< Wake u + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ON_RXNE (USART_CR3_WUS_0 | USART_CR3_WUS_1) /*!< Wake u + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUS */ + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_IRDA_POWER IrDA Power + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_IRDA_POWER_NORMAL 0x00000000U /*!< IrDA normal power mode * + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_IRDA_POWER_LOW USART_CR3_IRLP /*!< IrDA low power mode */ + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_LINBREAK_DETECT LIN Break Detection Length + ARM GAS /tmp/cc8Pc1nf.s page 90 + + + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LINBREAK_DETECT_10B 0x00000000U /*!< 10-bit break detection m + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LINBREAK_DETECT_11B USART_CR2_LBDL /*!< 11-bit break detection m + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DE_POLARITY Driver Enable Polarity + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DE_POLARITY_HIGH 0x00000000U /*!< DE signal is active high + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DE_POLARITY_LOW USART_CR3_DEP /*!< DE signal is active low + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DMA_REG_DATA DMA Register Data + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DMA_REG_DATA_TRANSMIT 0x00000000U /*!< Get address of data regis + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DMA_REG_DATA_RECEIVE 0x00000001U /*!< Get address of data regis + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported macro ------------------------------------------------------------*/ + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Exported_Macros USART Exported Macros + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EM_WRITE_READ Common Write and read registers Macros + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Write a value in USART register + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __INSTANCE__ USART Instance + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __REG__ Register to be written + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __VALUE__ Value to be written in the register + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VAL + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Read a value in USART register + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __INSTANCE__ USART Instance + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __REG__ Register to be read + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Register value + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + ARM GAS /tmp/cc8Pc1nf.s page 91 + + + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EM_Exported_Macros_Helper Exported_Macros_Helper + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Compute USARTDIV value according to Peripheral Clock and + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * expected Baud Rate in 8 bits sampling mode (32 bits value of USARTDIV is returned) + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __BAUDRATE__ Baud rate value to achieve + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval USARTDIV value to be used for BRR register filling in OverSampling_8 case + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) ((((__PERIPHCLK__)*2U)\ + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ((__BAUDRATE__)/2U))/(__BAUDRATE_ + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Compute USARTDIV value according to Peripheral Clock and + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * expected Baud Rate in 16 bits sampling mode (32 bits value of USARTDIV is returned) + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __BAUDRATE__ Baud rate value to achieve + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval USARTDIV value to be used for BRR register filling in OverSampling_16 case + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define __LL_USART_DIV_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (((__PERIPHCLK__) + ((__BAUDRATE__)/ + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported functions --------------------------------------------------------*/ + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Exported_Functions USART Exported Functions + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration Configuration functions + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART Enable + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UE LL_USART_Enable + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_Enable(USART_TypeDef *USARTx) + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR1, USART_CR1_UE); + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART Disable (all USART prescalers and outputs are disabled) + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When USART is disabled, USART prescalers and outputs are stopped immediately, + ARM GAS /tmp/cc8Pc1nf.s page 92 + + + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * and current operations are discarded. The configuration of the USART is kept, but all t + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * flags, in the USARTx_ISR are set to their default values. + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UE LL_USART_Disable + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_Disable(USART_TypeDef *USARTx) + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR1, USART_CR1_UE); + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if USART is enabled + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UE LL_USART_IsEnabled + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabled(const USART_TypeDef *USARTx) + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)) ? 1UL : 0UL); + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART enabled in STOP Mode. + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is enabled, USART is able to wake up the MCU from Stop mode, provide + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * USART clock selection is HSI or LSE in RCC. + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UESM LL_USART_EnableInStopMode + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableInStopMode(USART_TypeDef *USARTx) + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_UESM); + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART disabled in STOP Mode. + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is disabled, USART is not able to wake up the MCU from Stop mode + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UESM LL_USART_DisableInStopMode + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableInStopMode(USART_TypeDef *USARTx) + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_UESM); + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if USART is enabled in STOP Mode (able to wake up MCU from Stop mode or not) + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UESM LL_USART_IsEnabledInStopMode + ARM GAS /tmp/cc8Pc1nf.s page 93 + + + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledInStopMode(const USART_TypeDef *USARTx) + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_UESM) == (USART_CR1_UESM)) ? 1UL : 0UL); + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_UCESM) + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART Clock enabled in STOP Mode + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is called, USART Clock is enabled while in STOP mode + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 UCESM LL_USART_EnableClockInStopMode + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableClockInStopMode(USART_TypeDef *USARTx) + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_UCESM); + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART clock disabled in STOP Mode + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is called, USART Clock is disabled while in STOP mode + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 UCESM LL_USART_DisableClockInStopMode + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableClockInStopMode(USART_TypeDef *USARTx) + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_UCESM); + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if USART clock is enabled in STOP Mode + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 UCESM LL_USART_IsClockEnabledInStopMode + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsClockEnabledInStopMode(const USART_TypeDef *USARTx) + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (READ_BIT(USARTx->CR3, USART_CR3_UCESM) == (USART_CR3_UCESM)); + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_UCESM */ + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM*/ + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Receiver Enable (Receiver is enabled and begins searching for a start bit) + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_EnableDirectionRx + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDirectionRx(USART_TypeDef *USARTx) + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RE); + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/cc8Pc1nf.s page 94 + + + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Receiver Disable + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_DisableDirectionRx + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDirectionRx(USART_TypeDef *USARTx) + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RE); + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Transmitter Enable + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TE LL_USART_EnableDirectionTx + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDirectionTx(USART_TypeDef *USARTx) + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TE); + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Transmitter Disable + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TE LL_USART_DisableDirectionTx + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDirectionTx(USART_TypeDef *USARTx) + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TE); + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure simultaneously enabled/disabled states + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * of Transmitter and Receiver + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_SetTransferDirection\n + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 TE LL_USART_SetTransferDirection + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param TransferDirection This parameter can be one of the following values: + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_NONE + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_RX + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX_RX + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTransferDirection(USART_TypeDef *USARTx, uint32_t TransferDirectio + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_MODIFY_REG(USARTx->CR1, USART_CR1_RE | USART_CR1_TE, TransferDirection); + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return enabled/disabled states of Transmitter and Receiver + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_GetTransferDirection\n + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 TE LL_USART_GetTransferDirection + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + ARM GAS /tmp/cc8Pc1nf.s page 95 + + + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_NONE + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_RX + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX_RX + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTransferDirection(const USART_TypeDef *USARTx) + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_RE | USART_CR1_TE)); + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Parity (enabled/disabled and parity mode if enabled). + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note This function selects if hardware parity control (generation and detection) is enabled + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * When the parity control is enabled (Odd or Even), computed parity bit is inserted at th + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (9th or 8th bit depending on data width) and parity is checked on the received data. + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PS LL_USART_SetParity\n + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 PCE LL_USART_SetParity + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Parity This parameter can be one of the following values: + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_NONE + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_EVEN + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_ODD + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetParity(USART_TypeDef *USARTx, uint32_t Parity) + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE, Parity); + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Parity configuration (enabled/disabled and parity mode if enabled) + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PS LL_USART_GetParity\n + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 PCE LL_USART_GetParity + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_NONE + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_EVEN + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_ODD + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetParity(const USART_TypeDef *USARTx) + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE)); + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Receiver Wake Up method from Mute mode. + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 WAKE LL_USART_SetWakeUpMethod + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Method This parameter can be one of the following values: + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_IDLELINE + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetWakeUpMethod(USART_TypeDef *USARTx, uint32_t Method) + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_WAKE, Method); + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + ARM GAS /tmp/cc8Pc1nf.s page 96 + + + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Receiver Wake Up method from Mute mode + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 WAKE LL_USART_GetWakeUpMethod + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_IDLELINE + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetWakeUpMethod(const USART_TypeDef *USARTx) + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_WAKE)); + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Word length (i.e. nb of data bits, excluding start and stop bits) + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 M0 LL_USART_SetDataWidth\n + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M1 LL_USART_SetDataWidth + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param DataWidth This parameter can be one of the following values: + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_7B + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_8B + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_9B + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetDataWidth(USART_TypeDef *USARTx, uint32_t DataWidth) + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_M, DataWidth); + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Word length (i.e. nb of data bits, excluding start and stop bits) + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 M0 LL_USART_GetDataWidth\n + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M1 LL_USART_GetDataWidth + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_7B + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_8B + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_9B + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetDataWidth(const USART_TypeDef *USARTx) + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_M)); + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Allow switch between Mute Mode and Active mode + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 MME LL_USART_EnableMuteMode + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableMuteMode(USART_TypeDef *USARTx) + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_MME); + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 97 + + + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Prevent Mute Mode use. Set Receiver in active mode permanently. + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 MME LL_USART_DisableMuteMode + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableMuteMode(USART_TypeDef *USARTx) + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_MME); + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if switch between Mute Mode and Active mode is allowed + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 MME LL_USART_IsEnabledMuteMode + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledMuteMode(const USART_TypeDef *USARTx) + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_MME) == (USART_CR1_MME)) ? 1UL : 0UL); + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Oversampling to 8-bit or 16-bit mode + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 OVER8 LL_USART_SetOverSampling + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param OverSampling This parameter can be one of the following values: + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetOverSampling(USART_TypeDef *USARTx, uint32_t OverSampling) + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_OVER8, OverSampling); + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Oversampling mode + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 OVER8 LL_USART_GetOverSampling + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetOverSampling(const USART_TypeDef *USARTx) + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_OVER8)); + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure if Clock pulse of the last data bit is output to the SCLK pin or not + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBCL LL_USART_SetLastClkPulseOutput + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param LastBitClockPulse This parameter can be one of the following values: + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + ARM GAS /tmp/cc8Pc1nf.s page 98 + + + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetLastClkPulseOutput(USART_TypeDef *USARTx, uint32_t LastBitClockPul + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_LBCL, LastBitClockPulse); + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve Clock pulse of the last data bit output configuration + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (Last bit Clock pulse output to the SCLK pin or not) + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBCL LL_USART_GetLastClkPulseOutput + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetLastClkPulseOutput(const USART_TypeDef *USARTx) + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBCL)); + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select the phase of the clock output on the SCLK pin in synchronous mode + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPHA LL_USART_SetClockPhase + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param ClockPhase This parameter can be one of the following values: + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_1EDGE + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetClockPhase(USART_TypeDef *USARTx, uint32_t ClockPhase) + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_CPHA, ClockPhase); + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return phase of the clock output on the SCLK pin in synchronous mode + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPHA LL_USART_GetClockPhase + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_1EDGE + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetClockPhase(const USART_TypeDef *USARTx) + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPHA)); + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select the polarity of the clock output on the SCLK pin in synchronous mode + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + ARM GAS /tmp/cc8Pc1nf.s page 99 + + + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPOL LL_USART_SetClockPolarity + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param ClockPolarity This parameter can be one of the following values: + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_LOW + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_HIGH + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetClockPolarity(USART_TypeDef *USARTx, uint32_t ClockPolarity) + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_CPOL, ClockPolarity); + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return polarity of the clock output on the SCLK pin in synchronous mode + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPOL LL_USART_GetClockPolarity + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_LOW + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_HIGH + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetClockPolarity(const USART_TypeDef *USARTx) + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPOL)); + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Clock signal format (Phase Polarity and choice about output of last bit clock + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clock Phase configuration using @ref LL_USART_SetClockPhase() function +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clock Polarity configuration using @ref LL_USART_SetClockPolarity() function +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Output of Last bit Clock pulse configuration using @ref LL_USART_SetLastClkPulseOutpu +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPHA LL_USART_ConfigClock\n +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CPOL LL_USART_ConfigClock\n +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 LBCL LL_USART_ConfigClock +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Phase This parameter can be one of the following values: +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_1EDGE +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Polarity This parameter can be one of the following values: +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_LOW +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_HIGH +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param LBCPOutput This parameter can be one of the following values: +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigClock(USART_TypeDef *USARTx, uint32_t Phase, uint32_t Polarity, +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, Phase | Polarity | LBCP +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 100 + + +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Clock output on SCLK pin +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_EnableSCLKOutput +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableSCLKOutput(USART_TypeDef *USARTx) +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_CLKEN); +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Clock output on SCLK pin +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_DisableSCLKOutput +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableSCLKOutput(USART_TypeDef *USARTx) +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_CLKEN); +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Clock output on SCLK pin is enabled +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_IsEnabledSCLKOutput +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledSCLKOutput(const USART_TypeDef *USARTx) +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_CLKEN) == (USART_CR2_CLKEN)) ? 1UL : 0UL); +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set the length of the stop bits +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 STOP LL_USART_SetStopBitsLength +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param StopBits This parameter can be one of the following values: +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_0_5 +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1 +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1_5 +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_2 +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetStopBitsLength(USART_TypeDef *USARTx, uint32_t StopBits) +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve the length of the stop bits +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 STOP LL_USART_GetStopBitsLength + ARM GAS /tmp/cc8Pc1nf.s page 101 + + +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_0_5 +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1 +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1_5 +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_2 +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetStopBitsLength(const USART_TypeDef *USARTx) +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_STOP)); +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Character frame format (Datawidth, Parity control, Stop Bits) +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Data Width configuration using @ref LL_USART_SetDataWidth() function +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Parity Control and mode configuration using @ref LL_USART_SetParity() function +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Stop bits configuration using @ref LL_USART_SetStopBitsLength() function +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PS LL_USART_ConfigCharacter\n +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 PCE LL_USART_ConfigCharacter\n +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M0 LL_USART_ConfigCharacter\n +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M1 LL_USART_ConfigCharacter\n +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 STOP LL_USART_ConfigCharacter +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param DataWidth This parameter can be one of the following values: +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_7B +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_8B +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_9B +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Parity This parameter can be one of the following values: +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_NONE +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_EVEN +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_ODD +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param StopBits This parameter can be one of the following values: +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_0_5 +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1_5 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_2 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigCharacter(USART_TypeDef *USARTx, uint32_t DataWidth, uint32_t P +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t StopBits) +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE | USART_CR1_M, Parity | DataWidth); +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure TX/RX pins swapping setting. +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 SWAP LL_USART_SetTXRXSwap +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param SwapConfig This parameter can be one of the following values: +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_STANDARD +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_SWAPPED +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTXRXSwap(USART_TypeDef *USARTx, uint32_t SwapConfig) +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 102 + + +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_SWAP, SwapConfig); +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve TX/RX pins swapping configuration. +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 SWAP LL_USART_GetTXRXSwap +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_STANDARD +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_SWAPPED +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTXRXSwap(const USART_TypeDef *USARTx) +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_SWAP)); +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure RX pin active level logic +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RXINV LL_USART_SetRXPinLevel +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PinInvMethod This parameter can be one of the following values: +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_STANDARD +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_INVERTED +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetRXPinLevel(USART_TypeDef *USARTx, uint32_t PinInvMethod) +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_RXINV, PinInvMethod); +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve RX pin active level logic configuration +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RXINV LL_USART_GetRXPinLevel +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_STANDARD +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_INVERTED +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetRXPinLevel(const USART_TypeDef *USARTx) +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_RXINV)); +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure TX pin active level logic +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 TXINV LL_USART_SetTXPinLevel +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PinInvMethod This parameter can be one of the following values: +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_STANDARD +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_INVERTED +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTXPinLevel(USART_TypeDef *USARTx, uint32_t PinInvMethod) +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_TXINV, PinInvMethod); +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/cc8Pc1nf.s page 103 + + +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve TX pin active level logic configuration +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 TXINV LL_USART_GetTXPinLevel +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_STANDARD +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_INVERTED +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTXPinLevel(const USART_TypeDef *USARTx) +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_TXINV)); +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Binary data logic. +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Allow to define how Logical data from the data register are send/received : +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * either in positive/direct logic (1=H, 0=L) or in negative/inverse logic (1=L, 0=H) +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 DATAINV LL_USART_SetBinaryDataLogic +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param DataLogic This parameter can be one of the following values: +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_POSITIVE +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_NEGATIVE +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetBinaryDataLogic(USART_TypeDef *USARTx, uint32_t DataLogic) +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_DATAINV, DataLogic); +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve Binary data configuration +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 DATAINV LL_USART_GetBinaryDataLogic +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_POSITIVE +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_NEGATIVE +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetBinaryDataLogic(const USART_TypeDef *USARTx) +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_DATAINV)); +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure transfer bit order (either Less or Most Significant Bit First) +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note MSB First means data is transmitted/received with the MSB first, following the start bi +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LSB First means data is transmitted/received with data bit 0 first, following the start +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 MSBFIRST LL_USART_SetTransferBitOrder +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param BitOrder This parameter can be one of the following values: +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_LSBFIRST +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_MSBFIRST +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTransferBitOrder(USART_TypeDef *USARTx, uint32_t BitOrder) +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_MSBFIRST, BitOrder); +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + ARM GAS /tmp/cc8Pc1nf.s page 104 + + +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return transfer bit order (either Less or Most Significant Bit First) +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note MSB First means data is transmitted/received with the MSB first, following the start bi +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LSB First means data is transmitted/received with data bit 0 first, following the start +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 MSBFIRST LL_USART_GetTransferBitOrder +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_LSBFIRST +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_MSBFIRST +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTransferBitOrder(const USART_TypeDef *USARTx) +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_MSBFIRST)); +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Auto Baud-Rate Detection +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABREN LL_USART_EnableAutoBaudRate +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableAutoBaudRate(USART_TypeDef *USARTx) +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_ABREN); +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Auto Baud-Rate Detection +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABREN LL_USART_DisableAutoBaudRate +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableAutoBaudRate(USART_TypeDef *USARTx) +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_ABREN); +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Auto Baud-Rate Detection mechanism is enabled +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABREN LL_USART_IsEnabledAutoBaud +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledAutoBaud(const USART_TypeDef *USARTx) +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_ABREN) == (USART_CR2_ABREN)) ? 1UL : 0UL); +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Auto Baud-Rate mode bits + ARM GAS /tmp/cc8Pc1nf.s page 105 + + +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABRMODE LL_USART_SetAutoBaudRateMode +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param AutoBaudRateMode This parameter can be one of the following values: +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_STARTBIT +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_55_FRAME +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetAutoBaudRateMode(USART_TypeDef *USARTx, uint32_t AutoBaudRateMode) +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_ABRMODE, AutoBaudRateMode); +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Auto Baud-Rate mode +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABRMODE LL_USART_GetAutoBaudRateMode +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_STARTBIT +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_55_FRAME +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetAutoBaudRateMode(const USART_TypeDef *USARTx) +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ABRMODE)); +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Receiver Timeout +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RTOEN LL_USART_EnableRxTimeout +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableRxTimeout(USART_TypeDef *USARTx) +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_RTOEN); +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Receiver Timeout +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RTOEN LL_USART_DisableRxTimeout +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableRxTimeout(USART_TypeDef *USARTx) +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_RTOEN); +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Receiver Timeout feature is enabled + ARM GAS /tmp/cc8Pc1nf.s page 106 + + +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RTOEN LL_USART_IsEnabledRxTimeout +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledRxTimeout(const USART_TypeDef *USARTx) +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_RTOEN) == (USART_CR2_RTOEN)) ? 1UL : 0UL); +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Address of the USART node. +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note This is used in multiprocessor communication during Mute mode or Stop mode, +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * for wake up with address mark detection. +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note 4bits address node is used when 4-bit Address Detection is selected in ADDM7. +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (b7-b4 should be set to 0) +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 8bits address node is used when 7-bit Address Detection is selected in ADDM7. +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (This is used in multiprocessor communication during Mute mode or Stop mode, +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * for wake up with 7-bit address mark detection. +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * The MSB of the character sent by the transmitter should be equal to 1. +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * It may also be used for character detection during normal reception, +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Mute mode inactive (for example, end of block detection in ModBus protocol). +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * In this case, the whole received character (8-bit) is compared to the ADD[7:0] +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * value and CMF flag is set on match) +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ADD LL_USART_ConfigNodeAddress\n +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 ADDM7 LL_USART_ConfigNodeAddress +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param AddressLen This parameter can be one of the following values: +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_4B +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_7B +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param NodeAddress 4 or 7 bit Address of the USART node. +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigNodeAddress(USART_TypeDef *USARTx, uint32_t AddressLen, uint32_ +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_ADD | USART_CR2_ADDM7, +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** (uint32_t)(AddressLen | (NodeAddress << USART_CR2_ADD_Pos))); +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return 8 bit Address of the USART node as set in ADD field of CR2. +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note If 4-bit Address Detection is selected in ADDM7, +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * only 4bits (b3-b0) of returned value are relevant (b31-b4 are not relevant) +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * If 7-bit Address Detection is selected in ADDM7, +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * only 8bits (b7-b0) of returned value are relevant (b31-b8 are not relevant) +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ADD LL_USART_GetNodeAddress +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Address of the USART node (Value between Min_Data=0 and Max_Data=255) +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetNodeAddress(const USART_TypeDef *USARTx) +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADD) >> USART_CR2_ADD_Pos); +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Length of Node Address used in Address Detection mode (7-bit or 4-bit) +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ADDM7 LL_USART_GetNodeAddressLen +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + ARM GAS /tmp/cc8Pc1nf.s page 107 + + +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_4B +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_7B +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetNodeAddressLen(const USART_TypeDef *USARTx) +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADDM7)); +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable RTS HW Flow Control +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_EnableRTSHWFlowCtrl +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableRTSHWFlowCtrl(USART_TypeDef *USARTx) +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_RTSE); +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable RTS HW Flow Control +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_DisableRTSHWFlowCtrl +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableRTSHWFlowCtrl(USART_TypeDef *USARTx) +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_RTSE); +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable CTS HW Flow Control +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSE LL_USART_EnableCTSHWFlowCtrl +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableCTSHWFlowCtrl(USART_TypeDef *USARTx) +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_CTSE); +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable CTS HW Flow Control +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSE LL_USART_DisableCTSHWFlowCtrl +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableCTSHWFlowCtrl(USART_TypeDef *USARTx) + ARM GAS /tmp/cc8Pc1nf.s page 108 + + +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_CTSE); +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure HW Flow Control mode (both CTS and RTS) +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_SetHWFlowCtrl\n +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 CTSE LL_USART_SetHWFlowCtrl +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param HardwareFlowControl This parameter can be one of the following values: +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_NONE +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_CTS +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS_CTS +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetHWFlowCtrl(USART_TypeDef *USARTx, uint32_t HardwareFlowControl) +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE, HardwareFlowControl); +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return HW Flow Control configuration (both CTS and RTS) +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_GetHWFlowCtrl\n +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 CTSE LL_USART_GetHWFlowCtrl +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_NONE +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_CTS +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS_CTS +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetHWFlowCtrl(const USART_TypeDef *USARTx) +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE)); +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable One bit sampling method +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 ONEBIT LL_USART_EnableOneBitSamp +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableOneBitSamp(USART_TypeDef *USARTx) +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_ONEBIT); +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable One bit sampling method +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 ONEBIT LL_USART_DisableOneBitSamp +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + ARM GAS /tmp/cc8Pc1nf.s page 109 + + +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableOneBitSamp(USART_TypeDef *USARTx) +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_ONEBIT); +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if One bit sampling method is enabled +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 ONEBIT LL_USART_IsEnabledOneBitSamp +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledOneBitSamp(const USART_TypeDef *USARTx) +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_ONEBIT) == (USART_CR3_ONEBIT)) ? 1UL : 0UL); +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Overrun detection +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 OVRDIS LL_USART_EnableOverrunDetect +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableOverrunDetect(USART_TypeDef *USARTx) +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_OVRDIS); +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Overrun detection +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 OVRDIS LL_USART_DisableOverrunDetect +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableOverrunDetect(USART_TypeDef *USARTx) +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_OVRDIS); +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Overrun detection is enabled +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 OVRDIS LL_USART_IsEnabledOverrunDetect +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledOverrunDetect(const USART_TypeDef *USARTx) +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_OVRDIS) != USART_CR3_OVRDIS) ? 1UL : 0UL); +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUS) +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select event type for Wake UP Interrupt Flag (WUS[1:0] bits) +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUS LL_USART_SetWKUPType + ARM GAS /tmp/cc8Pc1nf.s page 110 + + +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Type This parameter can be one of the following values: +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_ADDRESS +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_STARTBIT +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_RXNE +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetWKUPType(USART_TypeDef *USARTx, uint32_t Type) +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_WUS, Type); +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return event type for Wake UP Interrupt Flag (WUS[1:0] bits) +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUS LL_USART_GetWKUPType +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_ADDRESS +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_STARTBIT +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_RXNE +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetWKUPType(const USART_TypeDef *USARTx) +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_WUS)); +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUS */ +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure USART BRR register for achieving expected Baud Rate value. +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Compute and set USARTDIV value in BRR Register (full BRR content) +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * according to used Peripheral Clock, Oversampling mode, and expected Baud Rate values +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Peripheral clock and Baud rate values provided as function parameters should be valid +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (Baud rate value != 0) +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll BRR BRR LL_USART_SetBaudRate +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PeriphClk Peripheral Clock +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param OverSampling This parameter can be one of the following values: +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param BaudRate Baud Rate +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverS +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t BaudRate) +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t usartdiv; +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t brrtemp; +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if (OverSampling == LL_USART_OVERSAMPLING_8) +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** usartdiv = (uint16_t)(__LL_USART_DIV_SAMPLING8(PeriphClk, BaudRate)); +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp = usartdiv & 0xFFF0U; +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); + ARM GAS /tmp/cc8Pc1nf.s page 111 + + +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USARTx->BRR = brrtemp; +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** else +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING16(PeriphClk, BaudRate)); +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return current Baud Rate value, according to USARTDIV present in BRR register +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (full BRR content), and to used Peripheral Clock and Oversampling mode values +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In case of non-initialized or invalid value stored in BRR register, value 0 will be ret +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll BRR BRR LL_USART_GetBaudRate +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PeriphClk Peripheral Clock +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param OverSampling This parameter can be one of the following values: +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Baud Rate +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetBaudRate(const USART_TypeDef *USARTx, uint32_t PeriphClk, uint +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t usartdiv; +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t brrresult = 0x0U; +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** usartdiv = USARTx->BRR; +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if (usartdiv == 0U) +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Do not perform a division by 0 */ +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** else if (OverSampling == LL_USART_OVERSAMPLING_8) +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** usartdiv = (uint16_t)((usartdiv & 0xFFF0U) | ((usartdiv & 0x0007U) << 1U)) ; +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if (usartdiv != 0U) +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrresult = (PeriphClk * 2U) / usartdiv; +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** else +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if ((usartdiv & 0xFFFFU) != 0U) +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrresult = PeriphClk / usartdiv; +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (brrresult); +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Receiver Time Out Value (expressed in nb of bits duration) +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RTOR RTO LL_USART_SetRxTimeout +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Timeout Value between Min_Data=0x00 and Max_Data=0x00FFFFFF +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 112 + + +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetRxTimeout(USART_TypeDef *USARTx, uint32_t Timeout) +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->RTOR, USART_RTOR_RTO, Timeout); +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Get Receiver Time Out Value (expressed in nb of bits duration) +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RTOR RTO LL_USART_GetRxTimeout +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Value between Min_Data=0x00 and Max_Data=0x00FFFFFF +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetRxTimeout(const USART_TypeDef *USARTx) +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->RTOR, USART_RTOR_RTO)); +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Block Length value in reception +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RTOR BLEN LL_USART_SetBlockLength +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param BlockLength Value between Min_Data=0x00 and Max_Data=0xFF +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetBlockLength(USART_TypeDef *USARTx, uint32_t BlockLength) +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->RTOR, USART_RTOR_BLEN, BlockLength << USART_RTOR_BLEN_Pos); +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Get Block Length value in reception +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RTOR BLEN LL_USART_GetBlockLength +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Value between Min_Data=0x00 and Max_Data=0xFF +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetBlockLength(const USART_TypeDef *USARTx) +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->RTOR, USART_RTOR_BLEN) >> USART_RTOR_BLEN_Pos); +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration_IRDA Configuration functions related to Irda feature +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable IrDA mode +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 IREN LL_USART_EnableIrda +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIrda(USART_TypeDef *USARTx) +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 113 + + +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_IREN); +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable IrDA mode +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 IREN LL_USART_DisableIrda +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIrda(USART_TypeDef *USARTx) +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_IREN); +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if IrDA mode is enabled +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 IREN LL_USART_IsEnabledIrda +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIrda(const USART_TypeDef *USARTx) +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_IREN) == (USART_CR3_IREN)) ? 1UL : 0UL); +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure IrDA Power Mode (Normal or Low Power) +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 IRLP LL_USART_SetIrdaPowerMode +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PowerMode This parameter can be one of the following values: +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_IRDA_POWER_NORMAL +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_IRDA_POWER_LOW +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetIrdaPowerMode(USART_TypeDef *USARTx, uint32_t PowerMode) +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_IRLP, PowerMode); +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve IrDA Power Mode configuration (Normal or Low Power) +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 IRLP LL_USART_GetIrdaPowerMode +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_IRDA_POWER_NORMAL +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetIrdaPowerMode(const USART_TypeDef *USARTx) +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 114 + + +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_IRLP)); +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Irda prescaler value, used for dividing the USART clock source +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * to achieve the Irda Low Power frequency (8 bits value) +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR PSC LL_USART_SetIrdaPrescaler +1831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PrescalerValue Value between Min_Data=0x00 and Max_Data=0xFF +1833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetIrdaPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue) +1836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, (uint16_t)PrescalerValue); +1838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Irda prescaler value, used for dividing the USART clock source +1842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * to achieve the Irda Low Power frequency (8 bits value) +1843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +1844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +1845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR PSC LL_USART_GetIrdaPrescaler +1846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Irda prescaler value (Value between Min_Data=0x00 and Max_Data=0xFF) +1848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetIrdaPrescaler(const USART_TypeDef *USARTx) +1850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC)); +1852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +1856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration_Smartcard Configuration functions related to Smartcard feat +1859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +1860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Smartcard NACK transmission +1864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 NACK LL_USART_EnableSmartcardNACK +1867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableSmartcardNACK(USART_TypeDef *USARTx) +1871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_NACK); +1873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Smartcard NACK transmission +1877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. + ARM GAS /tmp/cc8Pc1nf.s page 115 + + +1879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 NACK LL_USART_DisableSmartcardNACK +1880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableSmartcardNACK(USART_TypeDef *USARTx) +1884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_NACK); +1886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Smartcard NACK transmission is enabled +1890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 NACK LL_USART_IsEnabledSmartcardNACK +1893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcardNACK(const USART_TypeDef *USARTx) +1897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_NACK) == (USART_CR3_NACK)) ? 1UL : 0UL); +1899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Smartcard mode +1903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 SCEN LL_USART_EnableSmartcard +1906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableSmartcard(USART_TypeDef *USARTx) +1910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_SCEN); +1912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Smartcard mode +1916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 SCEN LL_USART_DisableSmartcard +1919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableSmartcard(USART_TypeDef *USARTx) +1923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_SCEN); +1925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Smartcard mode is enabled +1929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 SCEN LL_USART_IsEnabledSmartcard +1932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcard(const USART_TypeDef *USARTx) + ARM GAS /tmp/cc8Pc1nf.s page 116 + + +1936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_SCEN) == (USART_CR3_SCEN)) ? 1UL : 0UL); +1938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Smartcard Auto-Retry Count value (SCARCNT[2:0] bits) +1942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note This bit-field specifies the number of retries in transmit and receive, in Smartcard mo +1945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * In transmission mode, it specifies the number of automatic retransmission retries, befo +1946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * generating a transmission error (FE bit set). +1947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * In reception mode, it specifies the number or erroneous reception trials, before genera +1948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * reception error (RXNE and PE bits set) +1949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 SCARCNT LL_USART_SetSmartcardAutoRetryCount +1950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param AutoRetryCount Value between Min_Data=0 and Max_Data=7 +1952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetSmartcardAutoRetryCount(USART_TypeDef *USARTx, uint32_t AutoRetryC +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_SCARCNT, AutoRetryCount << USART_CR3_SCARCNT_Pos); +1957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Smartcard Auto-Retry Count value (SCARCNT[2:0] bits) +1961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 SCARCNT LL_USART_GetSmartcardAutoRetryCount +1964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Smartcard Auto-Retry Count value (Value between Min_Data=0 and Max_Data=7) +1966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetSmartcardAutoRetryCount(const USART_TypeDef *USARTx) +1968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_SCARCNT) >> USART_CR3_SCARCNT_Pos); +1970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Smartcard prescaler value, used for dividing the USART clock +1974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * source to provide the SMARTCARD Clock (5 bits value) +1975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR PSC LL_USART_SetSmartcardPrescaler +1978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PrescalerValue Value between Min_Data=0 and Max_Data=31 +1980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetSmartcardPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue) +1983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, (uint16_t)PrescalerValue); +1985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Smartcard prescaler value, used for dividing the USART clock +1989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * source to provide the SMARTCARD Clock (5 bits value) +1990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +1991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR PSC LL_USART_GetSmartcardPrescaler + ARM GAS /tmp/cc8Pc1nf.s page 117 + + +1993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Smartcard prescaler value (Value between Min_Data=0 and Max_Data=31) +1995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetSmartcardPrescaler(const USART_TypeDef *USARTx) +1997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC)); +1999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Smartcard Guard time value, expressed in nb of baud clocks periods +2003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (GT[7:0] bits : Guard time value) +2004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +2005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +2006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR GT LL_USART_SetSmartcardGuardTime +2007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param GuardTime Value between Min_Data=0x00 and Max_Data=0xFF +2009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetSmartcardGuardTime(USART_TypeDef *USARTx, uint32_t GuardTime) +2012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->GTPR, USART_GTPR_GT, (uint16_t)(GuardTime << USART_GTPR_GT_Pos)); +2014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Smartcard Guard time value, expressed in nb of baud clocks periods +2018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (GT[7:0] bits : Guard time value) +2019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +2020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +2021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll GTPR GT LL_USART_GetSmartcardGuardTime +2022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Smartcard Guard time value (Value between Min_Data=0x00 and Max_Data=0xFF) +2024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetSmartcardGuardTime(const USART_TypeDef *USARTx) +2026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_GT) >> USART_GTPR_GT_Pos); +2028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration_HalfDuplex Configuration functions related to Half Duplex f +2035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +2036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Single Wire Half-Duplex mode +2040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not +2041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Half-Duplex mode is supported by the USARTx instance. +2042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 HDSEL LL_USART_EnableHalfDuplex +2043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableHalfDuplex(USART_TypeDef *USARTx) +2047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_HDSEL); +2049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + ARM GAS /tmp/cc8Pc1nf.s page 118 + + +2050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Single Wire Half-Duplex mode +2053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not +2054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Half-Duplex mode is supported by the USARTx instance. +2055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 HDSEL LL_USART_DisableHalfDuplex +2056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableHalfDuplex(USART_TypeDef *USARTx) +2060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_HDSEL); +2062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Single Wire Half-Duplex mode is enabled +2066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not +2067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Half-Duplex mode is supported by the USARTx instance. +2068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 HDSEL LL_USART_IsEnabledHalfDuplex +2069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledHalfDuplex(const USART_TypeDef *USARTx) +2073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_HDSEL) == (USART_CR3_HDSEL)) ? 1UL : 0UL); +2075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +2079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration_LIN Configuration functions related to LIN feature +2082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +2083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set LIN Break Detection Length +2087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBDL LL_USART_SetLINBrkDetectionLen +2090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param LINBDLength This parameter can be one of the following values: +2092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LINBREAK_DETECT_10B +2093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LINBREAK_DETECT_11B +2094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetLINBrkDetectionLen(USART_TypeDef *USARTx, uint32_t LINBDLength) +2097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_LBDL, LINBDLength); +2099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return LIN Break Detection Length +2103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBDL LL_USART_GetLINBrkDetectionLen +2106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + ARM GAS /tmp/cc8Pc1nf.s page 119 + + +2107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +2108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LINBREAK_DETECT_10B +2109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LINBREAK_DETECT_11B +2110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetLINBrkDetectionLen(const USART_TypeDef *USARTx) +2112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBDL)); +2114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable LIN mode +2118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_EnableLIN +2121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableLIN(USART_TypeDef *USARTx) +2125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_LINEN); +2127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable LIN mode +2131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_DisableLIN +2134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableLIN(USART_TypeDef *USARTx) +2138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_LINEN); +2140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if LIN mode is enabled +2144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_IsEnabledLIN +2147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledLIN(const USART_TypeDef *USARTx) +2151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_LINEN) == (USART_CR2_LINEN)) ? 1UL : 0UL); +2153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +2157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration_DE Configuration functions related to Driver Enable feature +2160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +2161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 120 + + +2164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set DEDT (Driver Enable De-Assertion Time), Time value expressed on 5 bits ([4:0] bits) +2165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 DEDT LL_USART_SetDEDeassertionTime +2168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Time Value between Min_Data=0 and Max_Data=31 +2170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetDEDeassertionTime(USART_TypeDef *USARTx, uint32_t Time) +2173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_DEDT, Time << USART_CR1_DEDT_Pos); +2175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return DEDT (Driver Enable De-Assertion Time) +2179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 DEDT LL_USART_GetDEDeassertionTime +2182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Time value expressed on 5 bits ([4:0] bits) : Value between Min_Data=0 and Max_Data=31 +2184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetDEDeassertionTime(const USART_TypeDef *USARTx) +2186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_DEDT) >> USART_CR1_DEDT_Pos); +2188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set DEAT (Driver Enable Assertion Time), Time value expressed on 5 bits ([4:0] bits). +2192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 DEAT LL_USART_SetDEAssertionTime +2195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Time Value between Min_Data=0 and Max_Data=31 +2197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetDEAssertionTime(USART_TypeDef *USARTx, uint32_t Time) +2200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_DEAT, Time << USART_CR1_DEAT_Pos); +2202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return DEAT (Driver Enable Assertion Time) +2206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 DEAT LL_USART_GetDEAssertionTime +2209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Time value expressed on 5 bits ([4:0] bits) : Value between Min_Data=0 and Max_Data=31 +2211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetDEAssertionTime(const USART_TypeDef *USARTx) +2213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_DEAT) >> USART_CR1_DEAT_Pos); +2215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Driver Enable (DE) Mode +2219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. + ARM GAS /tmp/cc8Pc1nf.s page 121 + + +2221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DEM LL_USART_EnableDEMode +2222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDEMode(USART_TypeDef *USARTx) +2226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_DEM); +2228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Driver Enable (DE) Mode +2232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DEM LL_USART_DisableDEMode +2235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDEMode(USART_TypeDef *USARTx) +2239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_DEM); +2241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Driver Enable (DE) Mode is enabled +2245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DEM LL_USART_IsEnabledDEMode +2248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledDEMode(const USART_TypeDef *USARTx) +2252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_DEM) == (USART_CR3_DEM)) ? 1UL : 0UL); +2254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select Driver Enable Polarity +2258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DEP LL_USART_SetDESignalPolarity +2261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Polarity This parameter can be one of the following values: +2263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DE_POLARITY_HIGH +2264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DE_POLARITY_LOW +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetDESignalPolarity(USART_TypeDef *USARTx, uint32_t Polarity) +2268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_DEP, Polarity); +2270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Driver Enable Polarity +2274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_DRIVER_ENABLE_INSTANCE(USARTx) can be used to check whether or not +2275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Driver Enable feature is supported by the USARTx instance. +2276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DEP LL_USART_GetDESignalPolarity +2277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + ARM GAS /tmp/cc8Pc1nf.s page 122 + + +2278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DE_POLARITY_HIGH +2280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DE_POLARITY_LOW +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetDESignalPolarity(const USART_TypeDef *USARTx) +2283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_DEP)); +2285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +2289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_AdvancedConfiguration Advanced Configurations services +2292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +2293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Asynchronous Mode (UART) +2297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In UART mode, the following bits must be kept cleared: +2298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - CLKEN bit in the USART_CR2 register, +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, +2301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function +2306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Asynchronous Mode +2310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, Parity, ...) should be set using +2311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigAsyncMode\n +2313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigAsyncMode\n +2314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigAsyncMode\n +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigAsyncMode\n +2316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigAsyncMode +2317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigAsyncMode(USART_TypeDef *USARTx) +2321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In Asynchronous mode, the following bits must be kept cleared: +2323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN, CLKEN bits in the USART_CR2 register, +2324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - SCEN, IREN and HDSEL bits in the USART_CR3 register. +2325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); +2328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Synchronous Mode +2332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In Synchronous mode, the following bits must be kept cleared: +2333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, + ARM GAS /tmp/cc8Pc1nf.s page 123 + + +2335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This function also sets the USART in Synchronous mode. +2338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +2339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +2340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set CLKEN in CR2 using @ref LL_USART_EnableSCLKOutput() function +2346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Synchronous Mode +2347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, Parity, Clock Polarity, ...) should be set using +2348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigSyncMode\n +2350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigSyncMode\n +2351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigSyncMode\n +2352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigSyncMode\n +2353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigSyncMode +2354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigSyncMode(USART_TypeDef *USARTx) +2358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In Synchronous mode, the following bits must be kept cleared: +2360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN bit in the USART_CR2 register, +2361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - SCEN, IREN and HDSEL bits in the USART_CR3 register. +2362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN)); +2364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); +2365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* set the UART/USART in Synchronous mode */ +2366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_CLKEN); +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in LIN Mode +2371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In LIN mode, the following bits must be kept cleared: +2372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - STOP and CLKEN bits in the USART_CR2 register, +2373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, +2374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This function also set the UART/USART in LIN mode. +2377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function +2381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear STOP in CR2 using @ref LL_USART_SetStopBitsLength() function +2382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set LINEN in CR2 using @ref LL_USART_EnableLIN() function +2386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to LIN Mode +2387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, LIN Break Detection Length, ...) should be set using +2388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_ConfigLINMode\n +2390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 STOP LL_USART_ConfigLINMode\n +2391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 LINEN LL_USART_ConfigLINMode\n + ARM GAS /tmp/cc8Pc1nf.s page 124 + + +2392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigLINMode\n +2393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigLINMode\n +2394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigLINMode +2395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigLINMode(USART_TypeDef *USARTx) +2399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In LIN mode, the following bits must be kept cleared: +2401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - STOP and CLKEN bits in the USART_CR2 register, +2402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - IREN, SCEN and HDSEL bits in the USART_CR3 register. +2403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_CLKEN | USART_CR2_STOP)); +2405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_SCEN | USART_CR3_HDSEL)); +2406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Set the UART/USART in LIN mode */ +2407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_LINEN); +2408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Half Duplex Mode +2412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In Half Duplex mode, the following bits must be kept cleared: +2413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - CLKEN bit in the USART_CR2 register, +2415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, +2416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This function also sets the UART/USART in Half Duplex mode. +2418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not +2419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Half-Duplex mode is supported by the USARTx instance. +2420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function +2423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set HDSEL in CR3 using @ref LL_USART_EnableHalfDuplex() function +2426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Half Duplex Mode +2427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, Parity, ...) should be set using +2428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigHalfDuplexMode\n +2430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigHalfDuplexMode\n +2431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigHalfDuplexMode\n +2432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigHalfDuplexMode\n +2433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigHalfDuplexMode +2434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigHalfDuplexMode(USART_TypeDef *USARTx) +2438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In Half Duplex mode, the following bits must be kept cleared: +2440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN and CLKEN bits in the USART_CR2 register, +2441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - SCEN and IREN bits in the USART_CR3 register. +2442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); +2444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN)); +2445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* set the UART/USART in Half Duplex mode */ +2446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_HDSEL); +2447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/cc8Pc1nf.s page 125 + + +2449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Smartcard Mode +2451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In Smartcard mode, the following bits must be kept cleared: +2452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This function also configures Stop bits to 1.5 bits and +2456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * sets the USART in Smartcard mode (SCEN bit). +2457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Clock Output is also enabled (CLKEN). +2458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +2459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +2460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Configure STOP in CR2 using @ref LL_USART_SetStopBitsLength() function +2465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set CLKEN in CR2 using @ref LL_USART_EnableSCLKOutput() function +2466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set SCEN in CR3 using @ref LL_USART_EnableSmartcard() function +2467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Smartcard Mode +2468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, Parity, ...) should be set using +2469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigSmartcardMode\n +2471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 STOP LL_USART_ConfigSmartcardMode\n +2472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigSmartcardMode\n +2473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigSmartcardMode\n +2474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigSmartcardMode +2475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigSmartcardMode(USART_TypeDef *USARTx) +2479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In Smartcard mode, the following bits must be kept cleared: +2481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN bit in the USART_CR2 register, +2482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - IREN and HDSEL bits in the USART_CR3 register. +2483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN)); +2485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_HDSEL)); +2486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Configure Stop bits to 1.5 bits */ +2487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Synchronous mode is activated by default */ +2488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, (USART_CR2_STOP_0 | USART_CR2_STOP_1 | USART_CR2_CLKEN)); +2489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* set the UART/USART in Smartcard mode */ +2490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_SCEN); +2491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Irda Mode +2495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In IRDA mode, the following bits must be kept cleared: +2496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - STOP and CLKEN bits in the USART_CR2 register, +2498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, +2499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This function also sets the UART/USART in IRDA mode (IREN bit). +2501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_IRDA_INSTANCE(USARTx) can be used to check whether or not +2502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * IrDA feature is supported by the USARTx instance. +2503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + ARM GAS /tmp/cc8Pc1nf.s page 126 + + +2506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Configure STOP in CR2 using @ref LL_USART_SetStopBitsLength() function +2509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Set IREN in CR3 using @ref LL_USART_EnableIrda() function +2510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Irda Mode +2511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Word length, Power mode, ...) should be set using +2512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigIrdaMode\n +2514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigIrdaMode\n +2515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 STOP LL_USART_ConfigIrdaMode\n +2516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigIrdaMode\n +2517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigIrdaMode\n +2518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigIrdaMode +2519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigIrdaMode(USART_TypeDef *USARTx) +2523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In IRDA mode, the following bits must be kept cleared: +2525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN, STOP and CLKEN bits in the USART_CR2 register, +2526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - SCEN and HDSEL bits in the USART_CR3 register. +2527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); +2529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); +2530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* set the UART/USART in IRDA mode */ +2531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_IREN); +2532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Perform basic configuration of USART for enabling use in Multi processor Mode +2536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (several USARTs connected in a network, one of the USARTs can be the master, +2537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * its TX output connected to the RX inputs of the other slaves USARTs). +2538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In MultiProcessor mode, the following bits must be kept cleared: +2539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - LINEN bit in the USART_CR2 register, +2540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - CLKEN bit in the USART_CR2 register, +2541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - SCEN bit in the USART_CR3 register, +2542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - IREN bit in the USART_CR3 register, +2543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - HDSEL bit in the USART_CR3 register. +2544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +2545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function +2546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function +2547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function +2548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function +2549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function +2550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Other remaining configurations items related to Multi processor Mode +2551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (as Baud Rate, Wake Up Method, Node address, ...) should be set using +2552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * dedicated functions +2553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LINEN LL_USART_ConfigMultiProcessMode\n +2554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CLKEN LL_USART_ConfigMultiProcessMode\n +2555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 SCEN LL_USART_ConfigMultiProcessMode\n +2556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 HDSEL LL_USART_ConfigMultiProcessMode\n +2557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 IREN LL_USART_ConfigMultiProcessMode +2558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigMultiProcessMode(USART_TypeDef *USARTx) +2562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 127 + + +2563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* In Multi Processor mode, the following bits must be kept cleared: +2564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - LINEN and CLKEN bits in the USART_CR2 register, +2565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** - IREN, SCEN and HDSEL bits in the USART_CR3 register. +2566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); +2568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); +2569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +2573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_FLAG_Management FLAG_Management +2576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +2577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Parity Error Flag is set or not +2581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR PE LL_USART_IsActiveFlag_PE +2582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_PE(const USART_TypeDef *USARTx) +2586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_PE) == (USART_ISR_PE)) ? 1UL : 0UL); +2588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Framing Error Flag is set or not +2592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR FE LL_USART_IsActiveFlag_FE +2593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_FE(const USART_TypeDef *USARTx) +2597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_FE) == (USART_ISR_FE)) ? 1UL : 0UL); +2599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Noise error detected Flag is set or not +2603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR NE LL_USART_IsActiveFlag_NE +2604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_NE(const USART_TypeDef *USARTx) +2608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_NE) == (USART_ISR_NE)) ? 1UL : 0UL); +2610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART OverRun Error Flag is set or not +2614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR ORE LL_USART_IsActiveFlag_ORE +2615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ORE(const USART_TypeDef *USARTx) +2619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 128 + + +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_ORE) == (USART_ISR_ORE)) ? 1UL : 0UL); +2621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART IDLE line detected Flag is set or not +2625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR IDLE LL_USART_IsActiveFlag_IDLE +2626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_IDLE(const USART_TypeDef *USARTx) +2630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_IDLE) == (USART_ISR_IDLE)) ? 1UL : 0UL); +2632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Read Data Register Not Empty Flag is set or not +2636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR RXNE LL_USART_IsActiveFlag_RXNE +2637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RXNE(const USART_TypeDef *USARTx) +2641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_RXNE) == (USART_ISR_RXNE)) ? 1UL : 0UL); +2643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Transmission Complete Flag is set or not +2647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR TC LL_USART_IsActiveFlag_TC +2648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TC(const USART_TypeDef *USARTx) +2652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_TC) == (USART_ISR_TC)) ? 1UL : 0UL); +2654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Transmit Data Register Empty Flag is set or not +2658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR TXE LL_USART_IsActiveFlag_TXE +2659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TXE(const USART_TypeDef *USARTx) +2663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_TXE) == (USART_ISR_TXE)) ? 1UL : 0UL); +2665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART LIN Break Detection Flag is set or not +2669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR LBDF LL_USART_IsActiveFlag_LBD +2672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_LBD(const USART_TypeDef *USARTx) +2676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 129 + + +2677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_LBDF) == (USART_ISR_LBDF)) ? 1UL : 0UL); +2678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART CTS interrupt Flag is set or not +2682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +2683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +2684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR CTSIF LL_USART_IsActiveFlag_nCTS +2685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_nCTS(const USART_TypeDef *USARTx) +2689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_CTSIF) == (USART_ISR_CTSIF)) ? 1UL : 0UL); +2691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART CTS Flag is set or not +2695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +2696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +2697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR CTS LL_USART_IsActiveFlag_CTS +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_CTS(const USART_TypeDef *USARTx) +2702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_CTS) == (USART_ISR_CTS)) ? 1UL : 0UL); +2704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Receiver Time Out Flag is set or not +2708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR RTOF LL_USART_IsActiveFlag_RTO +2709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RTO(const USART_TypeDef *USARTx) +2713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_RTOF) == (USART_ISR_RTOF)) ? 1UL : 0UL); +2715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART End Of Block Flag is set or not +2719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +2720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +2721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR EOBF LL_USART_IsActiveFlag_EOB +2722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_EOB(const USART_TypeDef *USARTx) +2726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_EOBF) == (USART_ISR_EOBF)) ? 1UL : 0UL); +2728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Auto-Baud Rate Error Flag is set or not +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +2733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. + ARM GAS /tmp/cc8Pc1nf.s page 130 + + +2734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR ABRE LL_USART_IsActiveFlag_ABRE +2735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ABRE(const USART_TypeDef *USARTx) +2739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_ABRE) == (USART_ISR_ABRE)) ? 1UL : 0UL); +2741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Auto-Baud Rate Flag is set or not +2745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +2746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +2747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR ABRF LL_USART_IsActiveFlag_ABR +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ABR(const USART_TypeDef *USARTx) +2752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_ABRF) == (USART_ISR_ABRF)) ? 1UL : 0UL); +2754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Busy Flag is set or not +2758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR BUSY LL_USART_IsActiveFlag_BUSY +2759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_BUSY(const USART_TypeDef *USARTx) +2763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_BUSY) == (USART_ISR_BUSY)) ? 1UL : 0UL); +2765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Character Match Flag is set or not +2769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR CMF LL_USART_IsActiveFlag_CM +2770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_CM(const USART_TypeDef *USARTx) +2774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_CMF) == (USART_ISR_CMF)) ? 1UL : 0UL); +2776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Send Break Flag is set or not +2780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR SBKF LL_USART_IsActiveFlag_SBK +2781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_SBK(const USART_TypeDef *USARTx) +2785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_SBKF) == (USART_ISR_SBKF)) ? 1UL : 0UL); +2787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Receive Wake Up from mute mode Flag is set or not + ARM GAS /tmp/cc8Pc1nf.s page 131 + + +2791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR RWU LL_USART_IsActiveFlag_RWU +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RWU(const USART_TypeDef *USARTx) +2796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_RWU) == (USART_ISR_RWU)) ? 1UL : 0UL); +2798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +2801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) +2802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Wake Up from stop mode Flag is set or not +2804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +2805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR WUF LL_USART_IsActiveFlag_WKUP +2807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_WKUP(const USART_TypeDef *USARTx) +2811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_WUF) == (USART_ISR_WUF)) ? 1UL : 0UL); +2813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ +2816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +2817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Transmit Enable Acknowledge Flag is set or not +2819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR TEACK LL_USART_IsActiveFlag_TEACK +2820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TEACK(const USART_TypeDef *USARTx) +2824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_TEACK) == (USART_ISR_TEACK)) ? 1UL : 0UL); +2826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_ISR_REACK) +2829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Receive Enable Acknowledge Flag is set or not +2831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR REACK LL_USART_IsActiveFlag_REACK +2832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +2834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_REACK(const USART_TypeDef *USARTx) +2836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_REACK) == (USART_ISR_REACK)) ? 1UL : 0UL); +2838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_ISR_REACK */ +2841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) +2842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Function available only on devices supporting Transmit Complete before Guard Time feature */ +2843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the Smartcard Transmission Complete Before Guard Time Flag is set or not +2845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ISR TCBGT LL_USART_IsActiveFlag_TCBGT +2846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + ARM GAS /tmp/cc8Pc1nf.s page 132 + + +2848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TCBGT(const USART_TypeDef *USARTx) +2850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->ISR, USART_ISR_TCBGT) == (USART_ISR_TCBGT)) ? 1UL : 0UL); +2852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ +2855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Parity Error Flag +2857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR PECF LL_USART_ClearFlag_PE +2858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_PE(USART_TypeDef *USARTx) +2862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_PECF); +2864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Framing Error Flag +2868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR FECF LL_USART_ClearFlag_FE +2869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_FE(USART_TypeDef *USARTx) +2873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_FECF); +2875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Noise Error detected Flag +2879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR NCF LL_USART_ClearFlag_NE +2880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_NE(USART_TypeDef *USARTx) +2884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_NCF); +2886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear OverRun Error Flag +2890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR ORECF LL_USART_ClearFlag_ORE +2891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_ORE(USART_TypeDef *USARTx) +2895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_ORECF); +2897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear IDLE line detected Flag +2901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR IDLECF LL_USART_ClearFlag_IDLE +2902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 133 + + +2905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_IDLE(USART_TypeDef *USARTx) +2906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_IDLECF); +2908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Transmission Complete Flag +2912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR TCCF LL_USART_ClearFlag_TC +2913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_TC(USART_TypeDef *USARTx) +2917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_TCCF); +2919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) +2922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Function available only on devices supporting Transmit Complete before Guard Time feature */ +2923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Smartcard Transmission Complete Before Guard Time Flag +2925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR TCBGTCF LL_USART_ClearFlag_TCBGT +2926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_TCBGT(USART_TypeDef *USARTx) +2930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_TCBGTCF); +2932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ +2934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear LIN Break Detection Flag +2937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +2938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +2939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR LBDCF LL_USART_ClearFlag_LBD +2940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_LBD(USART_TypeDef *USARTx) +2944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_LBDCF); +2946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear CTS Interrupt Flag +2950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +2951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +2952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR CTSCF LL_USART_ClearFlag_nCTS +2953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_nCTS(USART_TypeDef *USARTx) +2957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_CTSCF); +2959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 134 + + +2962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Receiver Time Out Flag +2963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR RTOCF LL_USART_ClearFlag_RTO +2964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_RTO(USART_TypeDef *USARTx) +2968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_RTOCF); +2970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear End Of Block Flag +2974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +2975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +2976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR EOBCF LL_USART_ClearFlag_EOB +2977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_EOB(USART_TypeDef *USARTx) +2981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_EOBCF); +2983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Character Match Flag +2987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR CMCF LL_USART_ClearFlag_CM +2988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +2989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +2990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +2991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_CM(USART_TypeDef *USARTx) +2992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +2993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_CMCF); +2994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +2995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +2996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +2997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) +2998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +2999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Clear Wake Up from stop mode Flag +3000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +3001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +3002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll ICR WUCF LL_USART_ClearFlag_WKUP +3003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ClearFlag_WKUP(USART_TypeDef *USARTx) +3007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** WRITE_REG(USARTx->ICR, USART_ICR_WUCF); +3009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ +3012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +3013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +3015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_IT_Management IT_Management +3018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + ARM GAS /tmp/cc8Pc1nf.s page 135 + + +3019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable IDLE Interrupt +3023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 IDLEIE LL_USART_EnableIT_IDLE +3024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_IDLE(USART_TypeDef *USARTx) +3028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_IDLEIE); +3030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable RX Not Empty Interrupt +3034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RXNEIE LL_USART_EnableIT_RXNE +3035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_RXNE(USART_TypeDef *USARTx) +3039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RXNEIE); +3041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Transmission Complete Interrupt +3045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TCIE LL_USART_EnableIT_TC +3046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_TC(USART_TypeDef *USARTx) +3050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TCIE); +3052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable TX Empty Interrupt +3056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TXEIE LL_USART_EnableIT_TXE +3057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_TXE(USART_TypeDef *USARTx) +3061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TXEIE); +3063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Parity Error Interrupt +3067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PEIE LL_USART_EnableIT_PE +3068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_PE(USART_TypeDef *USARTx) +3072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_PEIE); +3074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/cc8Pc1nf.s page 136 + + +3076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Character Match Interrupt +3078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 CMIE LL_USART_EnableIT_CM +3079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_CM(USART_TypeDef *USARTx) +3083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_CMIE); +3085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Receiver Timeout Interrupt +3089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RTOIE LL_USART_EnableIT_RTO +3090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_RTO(USART_TypeDef *USARTx) +3094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RTOIE); +3096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable End Of Block Interrupt +3100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 EOBIE LL_USART_EnableIT_EOB +3103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_EOB(USART_TypeDef *USARTx) +3107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_EOBIE); +3109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable LIN Break Detection Interrupt +3113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +3114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +3115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBDIE LL_USART_EnableIT_LBD +3116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_LBD(USART_TypeDef *USARTx) +3120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_LBDIE); +3122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Error Interrupt +3126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When set, Error Interrupt Enable Bit is enabling interrupt generation in case of a fram +3127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USARTx_ISR register). +3128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 0: Interrupt is inhibited +3129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USARTx_ISR register. +3130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 EIE LL_USART_EnableIT_ERROR +3131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + ARM GAS /tmp/cc8Pc1nf.s page 137 + + +3133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_ERROR(USART_TypeDef *USARTx) +3135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_EIE); +3137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable CTS Interrupt +3141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +3142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +3143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSIE LL_USART_EnableIT_CTS +3144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_CTS(USART_TypeDef *USARTx) +3148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_CTSIE); +3150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) +3154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Wake Up from Stop Mode Interrupt +3156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +3157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +3158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUFIE LL_USART_EnableIT_WKUP +3159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_WKUP(USART_TypeDef *USARTx) +3163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_WUFIE); +3165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ +3168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +3169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) +3170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Function available only on devices supporting Transmit Complete before Guard Time feature */ +3171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Smartcard Transmission Complete Before Guard Time Interrupt +3173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 TCBGTIE LL_USART_EnableIT_TCBGT +3176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableIT_TCBGT(USART_TypeDef *USARTx) +3180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_TCBGTIE); +3182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ +3184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable IDLE Interrupt +3187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 IDLEIE LL_USART_DisableIT_IDLE +3188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + ARM GAS /tmp/cc8Pc1nf.s page 138 + + +3190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_IDLE(USART_TypeDef *USARTx) +3192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_IDLEIE); +3194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable RX Not Empty Interrupt +3198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RXNEIE LL_USART_DisableIT_RXNE +3199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_RXNE(USART_TypeDef *USARTx) +3203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RXNEIE); +3205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Transmission Complete Interrupt +3209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TCIE LL_USART_DisableIT_TC +3210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_TC(USART_TypeDef *USARTx) +3214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TCIE); +3216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable TX Empty Interrupt +3220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TXEIE LL_USART_DisableIT_TXE +3221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_TXE(USART_TypeDef *USARTx) +3225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TXEIE); +3227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Parity Error Interrupt +3231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PEIE LL_USART_DisableIT_PE +3232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_PE(USART_TypeDef *USARTx) +3236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_PEIE); +3238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Character Match Interrupt +3242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 CMIE LL_USART_DisableIT_CM +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_CM(USART_TypeDef *USARTx) + ARM GAS /tmp/cc8Pc1nf.s page 139 + + +3247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_CMIE); +3249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Receiver Timeout Interrupt +3253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RTOIE LL_USART_DisableIT_RTO +3254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_RTO(USART_TypeDef *USARTx) +3258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RTOIE); +3260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable End Of Block Interrupt +3264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 EOBIE LL_USART_DisableIT_EOB +3267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_EOB(USART_TypeDef *USARTx) +3271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_EOBIE); +3273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable LIN Break Detection Interrupt +3277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +3278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +3279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBDIE LL_USART_DisableIT_LBD +3280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_LBD(USART_TypeDef *USARTx) +3284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_LBDIE); +3286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Error Interrupt +3290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When set, Error Interrupt Enable Bit is enabling interrupt generation in case of a fram +3291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USARTx_ISR register). +3292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 0: Interrupt is inhibited +3293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USARTx_ISR register. +3294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 EIE LL_USART_DisableIT_ERROR +3295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_ERROR(USART_TypeDef *USARTx) +3299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_EIE); +3301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 140 + + +3304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable CTS Interrupt +3305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +3306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +3307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSIE LL_USART_DisableIT_CTS +3308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_CTS(USART_TypeDef *USARTx) +3312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE); +3314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +3317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) +3318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Wake Up from Stop Mode Interrupt +3320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +3321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +3322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUFIE LL_USART_DisableIT_WKUP +3323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_WKUP(USART_TypeDef *USARTx) +3327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_WUFIE); +3329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ +3332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +3333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) +3334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Function available only on devices supporting Transmit Complete before Guard Time feature */ +3335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Smartcard Transmission Complete Before Guard Time Interrupt +3337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 TCBGTIE LL_USART_DisableIT_TCBGT +3340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableIT_TCBGT(USART_TypeDef *USARTx) +3344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_TCBGTIE); +3346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ +3348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART IDLE Interrupt source is enabled or disabled. +3351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 IDLEIE LL_USART_IsEnabledIT_IDLE +3352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_IDLE(const USART_TypeDef *USARTx) +3356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_IDLEIE) == (USART_CR1_IDLEIE)) ? 1UL : 0UL); +3358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 141 + + +3361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART RX Not Empty Interrupt is enabled or disabled. +3362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RXNEIE LL_USART_IsEnabledIT_RXNE +3363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RXNE(const USART_TypeDef *USARTx) +3367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_RXNEIE) == (USART_CR1_RXNEIE)) ? 1U : 0U); +3369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Transmission Complete Interrupt is enabled or disabled. +3373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TCIE LL_USART_IsEnabledIT_TC +3374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TC(const USART_TypeDef *USARTx) +3378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_TCIE) == (USART_CR1_TCIE)) ? 1UL : 0UL); +3380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART TX Empty Interrupt is enabled or disabled. +3384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TXEIE LL_USART_IsEnabledIT_TXE +3385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TXE(const USART_TypeDef *USARTx) +3389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_TXEIE) == (USART_CR1_TXEIE)) ? 1U : 0U); +3391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Parity Error Interrupt is enabled or disabled. +3395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PEIE LL_USART_IsEnabledIT_PE +3396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_PE(const USART_TypeDef *USARTx) +3400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_PEIE) == (USART_CR1_PEIE)) ? 1UL : 0UL); +3402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Character Match Interrupt is enabled or disabled. +3406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 CMIE LL_USART_IsEnabledIT_CM +3407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CM(const USART_TypeDef *USARTx) +3411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_CMIE) == (USART_CR1_CMIE)) ? 1UL : 0UL); +3413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Receiver Timeout Interrupt is enabled or disabled. +3417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RTOIE LL_USART_IsEnabledIT_RTO + ARM GAS /tmp/cc8Pc1nf.s page 142 + + +3418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RTO(const USART_TypeDef *USARTx) +3422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_RTOIE) == (USART_CR1_RTOIE)) ? 1UL : 0UL); +3424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART End Of Block Interrupt is enabled or disabled. +3428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 EOBIE LL_USART_IsEnabledIT_EOB +3431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_EOB(const USART_TypeDef *USARTx) +3435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_EOBIE) == (USART_CR1_EOBIE)) ? 1UL : 0UL); +3437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART LIN Break Detection Interrupt is enabled or disabled. +3441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not +3442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LIN feature is supported by the USARTx instance. +3443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBDIE LL_USART_IsEnabledIT_LBD +3444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_LBD(const USART_TypeDef *USARTx) +3448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_LBDIE) == (USART_CR2_LBDIE)) ? 1UL : 0UL); +3450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Error Interrupt is enabled or disabled. +3454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 EIE LL_USART_IsEnabledIT_ERROR +3455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_ERROR(const USART_TypeDef *USARTx) +3459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_EIE) == (USART_CR3_EIE)) ? 1UL : 0UL); +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART CTS Interrupt is enabled or disabled. +3465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +3466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +3467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSIE LL_USART_IsEnabledIT_CTS +3468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CTS(const USART_TypeDef *USARTx) +3472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE)) ? 1UL : 0UL); +3474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + ARM GAS /tmp/cc8Pc1nf.s page 143 + + +3475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +3477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) +3478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the USART Wake Up from Stop Mode Interrupt is enabled or disabled. +3480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +3481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +3482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUFIE LL_USART_IsEnabledIT_WKUP +3483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_WKUP(const USART_TypeDef *USARTx) +3487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_WUFIE) == (USART_CR3_WUFIE)) ? 1UL : 0UL); +3489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ +3492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +3493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) +3494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Function available only on devices supporting Transmit Complete before Guard Time feature */ +3495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if the Smartcard Transmission Complete Before Guard Time Interrupt is enabled or +3497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not +3498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Smartcard feature is supported by the USARTx instance. +3499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 TCBGTIE LL_USART_IsEnabledIT_TCBGT +3500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TCBGT(const USART_TypeDef *USARTx) +3504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_TCBGTIE) == (USART_CR3_TCBGTIE)) ? 1UL : 0UL); +3506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ +3508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} +3511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_DMA_Management DMA_Management +3514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +3515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable DMA Mode for reception +3519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAR LL_USART_EnableDMAReq_RX +3520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDMAReq_RX(USART_TypeDef *USARTx) +3524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAR); +3526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable DMA Mode for reception +3530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAR LL_USART_DisableDMAReq_RX +3531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + ARM GAS /tmp/cc8Pc1nf.s page 144 + + +3532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDMAReq_RX(USART_TypeDef *USARTx) +3535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAR); +3537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if DMA Mode is enabled for reception +3541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAR LL_USART_IsEnabledDMAReq_RX +3542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_RX(const USART_TypeDef *USARTx) +3546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_DMAR) == (USART_CR3_DMAR)) ? 1UL : 0UL); +3548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable DMA Mode for transmission +3552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAT LL_USART_EnableDMAReq_TX +3553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDMAReq_TX(USART_TypeDef *USARTx) +3557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAT); +3559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable DMA Mode for transmission +3563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAT LL_USART_DisableDMAReq_TX +3564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDMAReq_TX(USART_TypeDef *USARTx) +3568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAT); +3570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Check if DMA Mode is enabled for transmission +3574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DMAT LL_USART_IsEnabledDMAReq_TX +3575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_TX(const USART_TypeDef *USARTx) +3579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_DMAT) == (USART_CR3_DMAT)) ? 1UL : 0UL); +3581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable DMA Disabling on Reception Error +3585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DDRE LL_USART_EnableDMADeactOnRxErr +3586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 145 + + +3589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDMADeactOnRxErr(USART_TypeDef *USARTx) +3590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_DDRE); +3592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable DMA Disabling on Reception Error +3596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DDRE LL_USART_DisableDMADeactOnRxErr +3597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +3599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDMADeactOnRxErr(USART_TypeDef *USARTx) +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_DDRE); +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if DMA Disabling on Reception Error is disabled +3607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 DDRE LL_USART_IsEnabledDMADeactOnRxErr +3608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +3610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledDMADeactOnRxErr(const USART_TypeDef *USARTx) +3612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_DDRE) == (USART_CR3_DDRE)) ? 1UL : 0UL); +3614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Get the data register address used for DMA transfer +3618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RDR RDR LL_USART_DMA_GetRegAddr\n +3619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll TDR TDR LL_USART_DMA_GetRegAddr +3620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Direction This parameter can be one of the following values: +3622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DMA_REG_DATA_TRANSMIT +3623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DMA_REG_DATA_RECEIVE +3624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Address of data register +3625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(const USART_TypeDef *USARTx, uint32_t Direction) +3627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t data_reg_addr; +3629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if (Direction == LL_USART_DMA_REG_DATA_TRANSMIT) +3631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* return address of TDR register */ +3633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** data_reg_addr = (uint32_t) &(USARTx->TDR); +3634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** else +3636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* return address of RDR register */ +3638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** data_reg_addr = (uint32_t) &(USARTx->RDR); +3639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return data_reg_addr; +3642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +3643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + ARM GAS /tmp/cc8Pc1nf.s page 146 + + +3646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Data_Management Data_Management +3649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ +3650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +3652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +3653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Read Receiver Data register (Receive Data value, 8 bits) +3654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll RDR RDR LL_USART_ReceiveData8 +3655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +3656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Value between Min_Data=0x00 and Max_Data=0xFF +3657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +3658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint8_t LL_USART_ReceiveData8(const USART_TypeDef *USARTx) + 517 .loc 3 3658 25 view .LVU78 + 518 .LBB67: +3659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +3660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint8_t)(READ_BIT(USARTx->RDR, USART_RDR_RDR) & 0xFFU); + 519 .loc 3 3660 3 view .LVU79 + 520 .loc 3 3660 20 is_stmt 0 view .LVU80 + 521 0002 974B ldr r3, .L71 + 522 0004 5A6A ldr r2, [r3, #36] + 523 .loc 3 3660 10 view .LVU81 + 524 0006 D2B2 uxtb r2, r2 + 525 .LVL12: + 526 .loc 3 3660 10 view .LVU82 + 527 .LBE67: + 528 .LBE66: + 529 .loc 1 381 14 view .LVU83 + 530 0008 964B ldr r3, .L71+4 + 531 000a 1A70 strb r2, [r3] + 382:Src/stm32f7xx_it.c **** switch (UART_rec_incr) + 532 .loc 1 382 5 is_stmt 1 view .LVU84 + 533 000c 964B ldr r3, .L71+8 + 534 000e 1B88 ldrh r3, [r3] + 535 0010 1F2B cmp r3, #31 + 536 0012 00F20B81 bhi .L38 + 537 0016 DFE813F0 tbh [pc, r3, lsl #1] + 538 .L40: + 539 001a 2000 .2byte (.L43-.L40)/2 + 540 001c 2F00 .2byte (.L42-.L40)/2 + 541 001e 0901 .2byte (.L38-.L40)/2 + 542 0020 0901 .2byte (.L38-.L40)/2 + 543 0022 0901 .2byte (.L38-.L40)/2 + 544 0024 0901 .2byte (.L38-.L40)/2 + 545 0026 0901 .2byte (.L38-.L40)/2 + 546 0028 0901 .2byte (.L38-.L40)/2 + 547 002a 0901 .2byte (.L38-.L40)/2 + 548 002c 0901 .2byte (.L38-.L40)/2 + 549 002e 0901 .2byte (.L38-.L40)/2 + 550 0030 0901 .2byte (.L38-.L40)/2 + 551 0032 0901 .2byte (.L38-.L40)/2 + 552 0034 0901 .2byte (.L38-.L40)/2 + 553 0036 0901 .2byte (.L38-.L40)/2 + 554 0038 0901 .2byte (.L38-.L40)/2 + 555 003a 0901 .2byte (.L38-.L40)/2 + 556 003c 0901 .2byte (.L38-.L40)/2 + 557 003e 0901 .2byte (.L38-.L40)/2 + ARM GAS /tmp/cc8Pc1nf.s page 147 + + + 558 0040 0901 .2byte (.L38-.L40)/2 + 559 0042 0901 .2byte (.L38-.L40)/2 + 560 0044 0901 .2byte (.L38-.L40)/2 + 561 0046 0901 .2byte (.L38-.L40)/2 + 562 0048 0901 .2byte (.L38-.L40)/2 + 563 004a 0901 .2byte (.L38-.L40)/2 + 564 004c 0901 .2byte (.L38-.L40)/2 + 565 004e 0901 .2byte (.L38-.L40)/2 + 566 0050 0901 .2byte (.L38-.L40)/2 + 567 0052 0901 .2byte (.L38-.L40)/2 + 568 0054 9500 .2byte (.L41-.L40)/2 + 569 0056 0901 .2byte (.L38-.L40)/2 + 570 0058 CF00 .2byte (.L39-.L40)/2 + 571 .p2align 1 + 572 .L43: + 383:Src/stm32f7xx_it.c **** { + 384:Src/stm32f7xx_it.c **** case 0: + 385:Src/stm32f7xx_it.c **** TO6_uart = TO6;//Save the time of start rec. command + 573 .loc 1 385 9 view .LVU85 + 574 .loc 1 385 18 is_stmt 0 view .LVU86 + 575 005a 8449 ldr r1, .L71+12 + 576 005c 0868 ldr r0, [r1] + 577 005e 8449 ldr r1, .L71+16 + 578 0060 0860 str r0, [r1] + 386:Src/stm32f7xx_it.c **** flg_tmt = 1;//Set the timeout flag + 579 .loc 1 386 9 is_stmt 1 view .LVU87 + 580 .loc 1 386 17 is_stmt 0 view .LVU88 + 581 0062 8449 ldr r1, .L71+20 + 582 0064 0120 movs r0, #1 + 583 0066 0870 strb r0, [r1] + 387:Src/stm32f7xx_it.c **** UART_header = uart_buf; + 584 .loc 1 387 9 is_stmt 1 view .LVU89 + 585 .loc 1 387 21 is_stmt 0 view .LVU90 + 586 0068 8349 ldr r1, .L71+24 + 587 006a 0A80 strh r2, [r1] @ movhi + 388:Src/stm32f7xx_it.c **** UART_rec_incr++; + 588 .loc 1 388 9 is_stmt 1 view .LVU91 + 589 .loc 1 388 22 is_stmt 0 view .LVU92 + 590 006c 0344 add r3, r3, r0 + 591 006e 7E4A ldr r2, .L71+8 + 592 0070 1380 strh r3, [r2] @ movhi + 389:Src/stm32f7xx_it.c **** break; + 593 .loc 1 389 5 is_stmt 1 view .LVU93 + 594 .L37: + 390:Src/stm32f7xx_it.c **** case 1: + 391:Src/stm32f7xx_it.c **** UART_header += ((uint16_t)uart_buf<<8); + 392:Src/stm32f7xx_it.c **** switch (UART_header) + 393:Src/stm32f7xx_it.c **** { + 394:Src/stm32f7xx_it.c **** case 0x1111: //received long packet + 395:Src/stm32f7xx_it.c **** UART_rec_incr = 2;//timeout flag is still setting! + 396:Src/stm32f7xx_it.c **** break; + 397:Src/stm32f7xx_it.c **** case 0x2222: //Back to default + 398:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 399:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 400:Src/stm32f7xx_it.c **** CPU_state = DEFAULT_ENABLE; + 401:Src/stm32f7xx_it.c **** break; + 402:Src/stm32f7xx_it.c **** case 0x3333: //Transmith saved DATA + ARM GAS /tmp/cc8Pc1nf.s page 148 + + + 403:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 404:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 405:Src/stm32f7xx_it.c **** CPU_state = TRANS_S_ENABLE; + 406:Src/stm32f7xx_it.c **** break; + 407:Src/stm32f7xx_it.c **** case 0x4444: //Received packet + 408:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 409:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 410:Src/stm32f7xx_it.c **** CPU_state = TRANS_ENABLE; + 411:Src/stm32f7xx_it.c **** break; + 412:Src/stm32f7xx_it.c **** case 0x5555: //Erase saved DATA + 413:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 414:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 415:Src/stm32f7xx_it.c **** CPU_state = REMOVE_FILE; + 416:Src/stm32f7xx_it.c **** break; + 417:Src/stm32f7xx_it.c **** case 0x6666: //Request state + 418:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 419:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 420:Src/stm32f7xx_it.c **** CPU_state = STATE; + 421:Src/stm32f7xx_it.c **** break; + 422:Src/stm32f7xx_it.c **** case 0x7777: + 423:Src/stm32f7xx_it.c **** UART_rec_incr = 2;//timeout flag is still setting! + 424:Src/stm32f7xx_it.c **** break; + 425:Src/stm32f7xx_it.c **** default: //error decoding header + 426:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 427:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 428:Src/stm32f7xx_it.c **** //UART_transmission_request = MESS_01; + 429:Src/stm32f7xx_it.c **** //CPU_state = HALT; + 430:Src/stm32f7xx_it.c **** State_Data[0] |= UART_ERR; + 431:Src/stm32f7xx_it.c **** CPU_state = DEFAULT_ENABLE;//Parking system and send error state! + 432:Src/stm32f7xx_it.c **** break; + 433:Src/stm32f7xx_it.c **** } + 434:Src/stm32f7xx_it.c **** break; + 435:Src/stm32f7xx_it.c **** + 436:Src/stm32f7xx_it.c **** case (CL_8 - 1): + 437:Src/stm32f7xx_it.c **** if (UART_header == 0x1111) + 438:Src/stm32f7xx_it.c **** { + 439:Src/stm32f7xx_it.c **** if ((UART_rec_incr & 0x0001) > 0) + 440:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr >> 1) - 1] += ((uint16_t)(uart_buf)) << 8; + 441:Src/stm32f7xx_it.c **** else + 442:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr >> 1) - 1] = (uint16_t)(uart_buf); + 443:Src/stm32f7xx_it.c **** CPU_state = DECODE_ENABLE; + 444:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 445:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 446:Src/stm32f7xx_it.c **** } + 447:Src/stm32f7xx_it.c **** else + 448:Src/stm32f7xx_it.c **** { + 449:Src/stm32f7xx_it.c **** if ((UART_rec_incr&0x0001)>0) + 450:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 451:Src/stm32f7xx_it.c **** else + 452:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] = (uint16_t)(uart_buf); + 453:Src/stm32f7xx_it.c **** UART_rec_incr++; + 454:Src/stm32f7xx_it.c **** UART_transmission_request = NO_MESS; + 455:Src/stm32f7xx_it.c **** } + 456:Src/stm32f7xx_it.c **** break; + 457:Src/stm32f7xx_it.c **** case (TSK_8 - 1): + 458:Src/stm32f7xx_it.c **** if (UART_header == 0x7777) + 459:Src/stm32f7xx_it.c **** { + ARM GAS /tmp/cc8Pc1nf.s page 149 + + + 460:Src/stm32f7xx_it.c **** if ((UART_rec_incr&0x0001)>0) + 461:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 462:Src/stm32f7xx_it.c **** else + 463:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] = (uint16_t)(uart_buf); + 464:Src/stm32f7xx_it.c **** CPU_state = DECODE_TASK; + 465:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 466:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 467:Src/stm32f7xx_it.c **** } + 468:Src/stm32f7xx_it.c **** else + 469:Src/stm32f7xx_it.c **** { + 470:Src/stm32f7xx_it.c **** if ((UART_rec_incr&0x0001)>0) + 471:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 472:Src/stm32f7xx_it.c **** else + 473:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] = (uint16_t)(uart_buf); + 474:Src/stm32f7xx_it.c **** UART_rec_incr++; + 475:Src/stm32f7xx_it.c **** UART_transmission_request = NO_MESS; + 476:Src/stm32f7xx_it.c **** } + 477:Src/stm32f7xx_it.c **** break; + 478:Src/stm32f7xx_it.c **** default: + 479:Src/stm32f7xx_it.c **** if ((UART_rec_incr&0x0001)>0) + 480:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 481:Src/stm32f7xx_it.c **** else + 482:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] = (uint16_t)(uart_buf); + 483:Src/stm32f7xx_it.c **** UART_rec_incr++; + 484:Src/stm32f7xx_it.c **** UART_transmission_request = NO_MESS; + 485:Src/stm32f7xx_it.c **** break; + 486:Src/stm32f7xx_it.c **** } + 487:Src/stm32f7xx_it.c **** // HAL_UART_Receive_IT(&huart1, &uart_buf, 1); + 488:Src/stm32f7xx_it.c **** } + 595 .loc 1 488 1 is_stmt 0 view .LVU94 + 596 0072 5DF8044B ldr r4, [sp], #4 + 597 .LCFI5: + 598 .cfi_remember_state + 599 .cfi_restore 4 + 600 .cfi_def_cfa_offset 0 + 601 0076 7047 bx lr + 602 .L42: + 603 .LCFI6: + 604 .cfi_restore_state + 391:Src/stm32f7xx_it.c **** switch (UART_header) + 605 .loc 1 391 9 is_stmt 1 view .LVU95 + 391:Src/stm32f7xx_it.c **** switch (UART_header) + 606 .loc 1 391 21 is_stmt 0 view .LVU96 + 607 0078 7F49 ldr r1, .L71+24 + 608 007a 0B88 ldrh r3, [r1] + 609 007c 03EB0222 add r2, r3, r2, lsl #8 + 610 0080 92B2 uxth r2, r2 + 611 0082 0A80 strh r2, [r1] @ movhi + 392:Src/stm32f7xx_it.c **** { + 612 .loc 1 392 9 is_stmt 1 view .LVU97 + 613 0084 44F24443 movw r3, #17476 + 614 0088 9A42 cmp r2, r3 + 615 008a 3BD0 beq .L45 + 616 008c 18D8 bhi .L46 + 617 008e 42F22223 movw r3, #8738 + 618 0092 9A42 cmp r2, r3 + 619 0094 2DD0 beq .L47 + ARM GAS /tmp/cc8Pc1nf.s page 150 + + + 620 0096 43F23333 movw r3, #13107 + 621 009a 9A42 cmp r2, r3 + 622 009c 08D1 bne .L67 + 403:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 623 .loc 1 403 13 view .LVU98 + 403:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 624 .loc 1 403 27 is_stmt 0 view .LVU99 + 625 009e 0023 movs r3, #0 + 626 00a0 714A ldr r2, .L71+8 + 627 00a2 1380 strh r3, [r2] @ movhi + 404:Src/stm32f7xx_it.c **** CPU_state = TRANS_S_ENABLE; + 628 .loc 1 404 13 is_stmt 1 view .LVU100 + 404:Src/stm32f7xx_it.c **** CPU_state = TRANS_S_ENABLE; + 629 .loc 1 404 21 is_stmt 0 view .LVU101 + 630 00a4 734A ldr r2, .L71+20 + 631 00a6 1370 strb r3, [r2] + 405:Src/stm32f7xx_it.c **** break; + 632 .loc 1 405 13 is_stmt 1 view .LVU102 + 405:Src/stm32f7xx_it.c **** break; + 633 .loc 1 405 23 is_stmt 0 view .LVU103 + 634 00a8 744B ldr r3, .L71+28 + 635 00aa 0322 movs r2, #3 + 636 00ac 1A70 strb r2, [r3] + 406:Src/stm32f7xx_it.c **** case 0x4444: //Received packet + 637 .loc 1 406 9 is_stmt 1 view .LVU104 + 638 00ae E0E7 b .L37 + 639 .L67: + 640 00b0 41F21113 movw r3, #4369 + 641 00b4 9A42 cmp r2, r3 + 642 00b6 37D1 bne .L50 + 395:Src/stm32f7xx_it.c **** break; + 643 .loc 1 395 13 view .LVU105 + 395:Src/stm32f7xx_it.c **** break; + 644 .loc 1 395 27 is_stmt 0 view .LVU106 + 645 00b8 6B4B ldr r3, .L71+8 + 646 00ba 0222 movs r2, #2 + 647 00bc 1A80 strh r2, [r3] @ movhi + 396:Src/stm32f7xx_it.c **** case 0x2222: //Back to default + 648 .loc 1 396 9 is_stmt 1 view .LVU107 + 649 00be D8E7 b .L37 + 650 .L46: + 651 00c0 46F26663 movw r3, #26214 + 652 00c4 9A42 cmp r2, r3 + 653 00c6 26D0 beq .L51 + 654 00c8 47F27773 movw r3, #30583 + 655 00cc 9A42 cmp r2, r3 + 656 00ce 03D1 bne .L68 + 423:Src/stm32f7xx_it.c **** break; + 657 .loc 1 423 13 view .LVU108 + 423:Src/stm32f7xx_it.c **** break; + 658 .loc 1 423 27 is_stmt 0 view .LVU109 + 659 00d0 654B ldr r3, .L71+8 + 660 00d2 0222 movs r2, #2 + 661 00d4 1A80 strh r2, [r3] @ movhi + 424:Src/stm32f7xx_it.c **** default: //error decoding header + 662 .loc 1 424 13 is_stmt 1 view .LVU110 + 663 00d6 CCE7 b .L37 + ARM GAS /tmp/cc8Pc1nf.s page 151 + + + 664 .L68: + 665 00d8 45F25553 movw r3, #21845 + 666 00dc 9A42 cmp r2, r3 + 667 00de 23D1 bne .L50 + 413:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 668 .loc 1 413 13 view .LVU111 + 413:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 669 .loc 1 413 27 is_stmt 0 view .LVU112 + 670 00e0 0023 movs r3, #0 + 671 00e2 614A ldr r2, .L71+8 + 672 00e4 1380 strh r3, [r2] @ movhi + 414:Src/stm32f7xx_it.c **** CPU_state = REMOVE_FILE; + 673 .loc 1 414 13 is_stmt 1 view .LVU113 + 414:Src/stm32f7xx_it.c **** CPU_state = REMOVE_FILE; + 674 .loc 1 414 21 is_stmt 0 view .LVU114 + 675 00e6 634A ldr r2, .L71+20 + 676 00e8 1370 strb r3, [r2] + 415:Src/stm32f7xx_it.c **** break; + 677 .loc 1 415 13 is_stmt 1 view .LVU115 + 415:Src/stm32f7xx_it.c **** break; + 678 .loc 1 415 23 is_stmt 0 view .LVU116 + 679 00ea 644B ldr r3, .L71+28 + 680 00ec 0522 movs r2, #5 + 681 00ee 1A70 strb r2, [r3] + 416:Src/stm32f7xx_it.c **** case 0x6666: //Request state + 682 .loc 1 416 9 is_stmt 1 view .LVU117 + 683 00f0 BFE7 b .L37 + 684 .L47: + 398:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 685 .loc 1 398 13 view .LVU118 + 398:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 686 .loc 1 398 27 is_stmt 0 view .LVU119 + 687 00f2 0023 movs r3, #0 + 688 00f4 5C4A ldr r2, .L71+8 + 689 00f6 1380 strh r3, [r2] @ movhi + 399:Src/stm32f7xx_it.c **** CPU_state = DEFAULT_ENABLE; + 690 .loc 1 399 13 is_stmt 1 view .LVU120 + 399:Src/stm32f7xx_it.c **** CPU_state = DEFAULT_ENABLE; + 691 .loc 1 399 21 is_stmt 0 view .LVU121 + 692 00f8 5E4A ldr r2, .L71+20 + 693 00fa 1370 strb r3, [r2] + 400:Src/stm32f7xx_it.c **** break; + 694 .loc 1 400 13 is_stmt 1 view .LVU122 + 400:Src/stm32f7xx_it.c **** break; + 695 .loc 1 400 23 is_stmt 0 view .LVU123 + 696 00fc 5F4B ldr r3, .L71+28 + 697 00fe 0222 movs r2, #2 + 698 0100 1A70 strb r2, [r3] + 401:Src/stm32f7xx_it.c **** case 0x3333: //Transmith saved DATA + 699 .loc 1 401 9 is_stmt 1 view .LVU124 + 700 0102 B6E7 b .L37 + 701 .L45: + 408:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 702 .loc 1 408 13 view .LVU125 + 408:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 703 .loc 1 408 27 is_stmt 0 view .LVU126 + 704 0104 0023 movs r3, #0 + ARM GAS /tmp/cc8Pc1nf.s page 152 + + + 705 0106 584A ldr r2, .L71+8 + 706 0108 1380 strh r3, [r2] @ movhi + 409:Src/stm32f7xx_it.c **** CPU_state = TRANS_ENABLE; + 707 .loc 1 409 13 is_stmt 1 view .LVU127 + 409:Src/stm32f7xx_it.c **** CPU_state = TRANS_ENABLE; + 708 .loc 1 409 21 is_stmt 0 view .LVU128 + 709 010a 5A4A ldr r2, .L71+20 + 710 010c 1370 strb r3, [r2] + 410:Src/stm32f7xx_it.c **** break; + 711 .loc 1 410 13 is_stmt 1 view .LVU129 + 410:Src/stm32f7xx_it.c **** break; + 712 .loc 1 410 23 is_stmt 0 view .LVU130 + 713 010e 5B4B ldr r3, .L71+28 + 714 0110 0422 movs r2, #4 + 715 0112 1A70 strb r2, [r3] + 411:Src/stm32f7xx_it.c **** case 0x5555: //Erase saved DATA + 716 .loc 1 411 9 is_stmt 1 view .LVU131 + 717 0114 ADE7 b .L37 + 718 .L51: + 418:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 719 .loc 1 418 13 view .LVU132 + 418:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 720 .loc 1 418 27 is_stmt 0 view .LVU133 + 721 0116 0023 movs r3, #0 + 722 0118 534A ldr r2, .L71+8 + 723 011a 1380 strh r3, [r2] @ movhi + 419:Src/stm32f7xx_it.c **** CPU_state = STATE; + 724 .loc 1 419 13 is_stmt 1 view .LVU134 + 419:Src/stm32f7xx_it.c **** CPU_state = STATE; + 725 .loc 1 419 21 is_stmt 0 view .LVU135 + 726 011c 554A ldr r2, .L71+20 + 727 011e 1370 strb r3, [r2] + 420:Src/stm32f7xx_it.c **** break; + 728 .loc 1 420 13 is_stmt 1 view .LVU136 + 420:Src/stm32f7xx_it.c **** break; + 729 .loc 1 420 23 is_stmt 0 view .LVU137 + 730 0120 564B ldr r3, .L71+28 + 731 0122 0622 movs r2, #6 + 732 0124 1A70 strb r2, [r3] + 421:Src/stm32f7xx_it.c **** case 0x7777: + 733 .loc 1 421 9 is_stmt 1 view .LVU138 + 734 0126 A4E7 b .L37 + 735 .L50: + 426:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 736 .loc 1 426 13 view .LVU139 + 426:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 737 .loc 1 426 27 is_stmt 0 view .LVU140 + 738 0128 0023 movs r3, #0 + 739 012a 4F4A ldr r2, .L71+8 + 740 012c 1380 strh r3, [r2] @ movhi + 427:Src/stm32f7xx_it.c **** //UART_transmission_request = MESS_01; + 741 .loc 1 427 13 is_stmt 1 view .LVU141 + 427:Src/stm32f7xx_it.c **** //UART_transmission_request = MESS_01; + 742 .loc 1 427 21 is_stmt 0 view .LVU142 + 743 012e 514A ldr r2, .L71+20 + 744 0130 1370 strb r3, [r2] + 430:Src/stm32f7xx_it.c **** CPU_state = DEFAULT_ENABLE;//Parking system and send error state! + ARM GAS /tmp/cc8Pc1nf.s page 153 + + + 745 .loc 1 430 13 is_stmt 1 view .LVU143 + 430:Src/stm32f7xx_it.c **** CPU_state = DEFAULT_ENABLE;//Parking system and send error state! + 746 .loc 1 430 27 is_stmt 0 view .LVU144 + 747 0132 534A ldr r2, .L71+32 + 748 0134 1378 ldrb r3, [r2] @ zero_extendqisi2 + 749 0136 43F00203 orr r3, r3, #2 + 750 013a 1370 strb r3, [r2] + 431:Src/stm32f7xx_it.c **** break; + 751 .loc 1 431 13 is_stmt 1 view .LVU145 + 431:Src/stm32f7xx_it.c **** break; + 752 .loc 1 431 23 is_stmt 0 view .LVU146 + 753 013c 4F4B ldr r3, .L71+28 + 754 013e 0222 movs r2, #2 + 755 0140 1A70 strb r2, [r3] + 432:Src/stm32f7xx_it.c **** } + 756 .loc 1 432 9 is_stmt 1 view .LVU147 + 757 0142 96E7 b .L37 + 758 .L41: + 437:Src/stm32f7xx_it.c **** { + 759 .loc 1 437 9 view .LVU148 + 437:Src/stm32f7xx_it.c **** { + 760 .loc 1 437 25 is_stmt 0 view .LVU149 + 761 0144 4C49 ldr r1, .L71+24 + 762 0146 0888 ldrh r0, [r1] + 437:Src/stm32f7xx_it.c **** { + 763 .loc 1 437 12 view .LVU150 + 764 0148 41F21111 movw r1, #4369 + 765 014c 8842 cmp r0, r1 + 766 014e 12D0 beq .L69 + 449:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 767 .loc 1 449 13 is_stmt 1 view .LVU151 + 449:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 768 .loc 1 449 16 is_stmt 0 view .LVU152 + 769 0150 13F0010F tst r3, #1 + 770 0154 2AD0 beq .L57 + 450:Src/stm32f7xx_it.c **** else + 771 .loc 1 450 17 is_stmt 1 view .LVU153 + 450:Src/stm32f7xx_it.c **** else + 772 .loc 1 450 47 is_stmt 0 view .LVU154 + 773 0156 5908 lsrs r1, r3, #1 + 774 0158 0139 subs r1, r1, #1 + 775 015a 4A4C ldr r4, .L71+36 + 776 015c 34F81100 ldrh r0, [r4, r1, lsl #1] + 777 0160 00EB0222 add r2, r0, r2, lsl #8 + 778 0164 24F81120 strh r2, [r4, r1, lsl #1] @ movhi + 779 .L58: + 453:Src/stm32f7xx_it.c **** UART_transmission_request = NO_MESS; + 780 .loc 1 453 12 is_stmt 1 view .LVU155 + 453:Src/stm32f7xx_it.c **** UART_transmission_request = NO_MESS; + 781 .loc 1 453 25 is_stmt 0 view .LVU156 + 782 0168 0133 adds r3, r3, #1 + 783 016a 3F4A ldr r2, .L71+8 + 784 016c 1380 strh r3, [r2] @ movhi + 454:Src/stm32f7xx_it.c **** } + 785 .loc 1 454 12 is_stmt 1 view .LVU157 + 454:Src/stm32f7xx_it.c **** } + 786 .loc 1 454 38 is_stmt 0 view .LVU158 + ARM GAS /tmp/cc8Pc1nf.s page 154 + + + 787 016e 464B ldr r3, .L71+40 + 788 0170 0022 movs r2, #0 + 789 0172 1A70 strb r2, [r3] + 790 0174 7DE7 b .L37 + 791 .L69: + 439:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr >> 1) - 1] += ((uint16_t)(uart_buf)) << 8; + 792 .loc 1 439 13 is_stmt 1 view .LVU159 + 439:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr >> 1) - 1] += ((uint16_t)(uart_buf)) << 8; + 793 .loc 1 439 16 is_stmt 0 view .LVU160 + 794 0176 13F0010F tst r3, #1 + 795 017a 11D0 beq .L55 + 440:Src/stm32f7xx_it.c **** else + 796 .loc 1 440 17 is_stmt 1 view .LVU161 + 440:Src/stm32f7xx_it.c **** else + 797 .loc 1 440 51 is_stmt 0 view .LVU162 + 798 017c 5B08 lsrs r3, r3, #1 + 799 017e 013B subs r3, r3, #1 + 800 0180 4048 ldr r0, .L71+36 + 801 0182 30F81310 ldrh r1, [r0, r3, lsl #1] + 802 0186 01EB0222 add r2, r1, r2, lsl #8 + 803 018a 20F81320 strh r2, [r0, r3, lsl #1] @ movhi + 804 .L56: + 443:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 805 .loc 1 443 13 is_stmt 1 view .LVU163 + 443:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 806 .loc 1 443 23 is_stmt 0 view .LVU164 + 807 018e 3B4B ldr r3, .L71+28 + 808 0190 0122 movs r2, #1 + 809 0192 1A70 strb r2, [r3] + 444:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 810 .loc 1 444 13 is_stmt 1 view .LVU165 + 444:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 811 .loc 1 444 27 is_stmt 0 view .LVU166 + 812 0194 0023 movs r3, #0 + 813 0196 344A ldr r2, .L71+8 + 814 0198 1380 strh r3, [r2] @ movhi + 445:Src/stm32f7xx_it.c **** } + 815 .loc 1 445 13 is_stmt 1 view .LVU167 + 445:Src/stm32f7xx_it.c **** } + 816 .loc 1 445 21 is_stmt 0 view .LVU168 + 817 019a 364A ldr r2, .L71+20 + 818 019c 1370 strb r3, [r2] + 819 019e 68E7 b .L37 + 820 .L55: + 442:Src/stm32f7xx_it.c **** CPU_state = DECODE_ENABLE; + 821 .loc 1 442 17 is_stmt 1 view .LVU169 + 442:Src/stm32f7xx_it.c **** CPU_state = DECODE_ENABLE; + 822 .loc 1 442 40 is_stmt 0 view .LVU170 + 823 01a0 5B08 lsrs r3, r3, #1 + 442:Src/stm32f7xx_it.c **** CPU_state = DECODE_ENABLE; + 824 .loc 1 442 46 view .LVU171 + 825 01a2 013B subs r3, r3, #1 + 442:Src/stm32f7xx_it.c **** CPU_state = DECODE_ENABLE; + 826 .loc 1 442 51 view .LVU172 + 827 01a4 3749 ldr r1, .L71+36 + 828 01a6 21F81320 strh r2, [r1, r3, lsl #1] @ movhi + 829 01aa F0E7 b .L56 + ARM GAS /tmp/cc8Pc1nf.s page 155 + + + 830 .L57: + 452:Src/stm32f7xx_it.c **** UART_rec_incr++; + 831 .loc 1 452 17 is_stmt 1 view .LVU173 + 452:Src/stm32f7xx_it.c **** UART_rec_incr++; + 832 .loc 1 452 39 is_stmt 0 view .LVU174 + 833 01ac 5908 lsrs r1, r3, #1 + 452:Src/stm32f7xx_it.c **** UART_rec_incr++; + 834 .loc 1 452 43 view .LVU175 + 835 01ae 0139 subs r1, r1, #1 + 452:Src/stm32f7xx_it.c **** UART_rec_incr++; + 836 .loc 1 452 47 view .LVU176 + 837 01b0 3448 ldr r0, .L71+36 + 838 01b2 20F81120 strh r2, [r0, r1, lsl #1] @ movhi + 839 01b6 D7E7 b .L58 + 840 .L39: + 458:Src/stm32f7xx_it.c **** { + 841 .loc 1 458 9 is_stmt 1 view .LVU177 + 458:Src/stm32f7xx_it.c **** { + 842 .loc 1 458 25 is_stmt 0 view .LVU178 + 843 01b8 2F49 ldr r1, .L71+24 + 844 01ba 0888 ldrh r0, [r1] + 458:Src/stm32f7xx_it.c **** { + 845 .loc 1 458 12 view .LVU179 + 846 01bc 47F27771 movw r1, #30583 + 847 01c0 8842 cmp r0, r1 + 848 01c2 12D0 beq .L70 + 470:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 849 .loc 1 470 13 is_stmt 1 view .LVU180 + 470:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 850 .loc 1 470 16 is_stmt 0 view .LVU181 + 851 01c4 13F0010F tst r3, #1 + 852 01c8 2AD0 beq .L62 + 471:Src/stm32f7xx_it.c **** else + 853 .loc 1 471 17 is_stmt 1 view .LVU182 + 471:Src/stm32f7xx_it.c **** else + 854 .loc 1 471 47 is_stmt 0 view .LVU183 + 855 01ca 5908 lsrs r1, r3, #1 + 856 01cc 0139 subs r1, r1, #1 + 857 01ce 2D4C ldr r4, .L71+36 + 858 01d0 34F81100 ldrh r0, [r4, r1, lsl #1] + 859 01d4 00EB0222 add r2, r0, r2, lsl #8 + 860 01d8 24F81120 strh r2, [r4, r1, lsl #1] @ movhi + 861 .L63: + 474:Src/stm32f7xx_it.c **** UART_transmission_request = NO_MESS; + 862 .loc 1 474 13 is_stmt 1 view .LVU184 + 474:Src/stm32f7xx_it.c **** UART_transmission_request = NO_MESS; + 863 .loc 1 474 26 is_stmt 0 view .LVU185 + 864 01dc 0133 adds r3, r3, #1 + 865 01de 224A ldr r2, .L71+8 + 866 01e0 1380 strh r3, [r2] @ movhi + 475:Src/stm32f7xx_it.c **** } + 867 .loc 1 475 13 is_stmt 1 view .LVU186 + 475:Src/stm32f7xx_it.c **** } + 868 .loc 1 475 39 is_stmt 0 view .LVU187 + 869 01e2 294B ldr r3, .L71+40 + 870 01e4 0022 movs r2, #0 + 871 01e6 1A70 strb r2, [r3] + ARM GAS /tmp/cc8Pc1nf.s page 156 + + + 872 01e8 43E7 b .L37 + 873 .L70: + 460:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 874 .loc 1 460 13 is_stmt 1 view .LVU188 + 460:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 875 .loc 1 460 16 is_stmt 0 view .LVU189 + 876 01ea 13F0010F tst r3, #1 + 877 01ee 11D0 beq .L60 + 461:Src/stm32f7xx_it.c **** else + 878 .loc 1 461 16 is_stmt 1 view .LVU190 + 461:Src/stm32f7xx_it.c **** else + 879 .loc 1 461 46 is_stmt 0 view .LVU191 + 880 01f0 5B08 lsrs r3, r3, #1 + 881 01f2 013B subs r3, r3, #1 + 882 01f4 2348 ldr r0, .L71+36 + 883 01f6 30F81310 ldrh r1, [r0, r3, lsl #1] + 884 01fa 01EB0222 add r2, r1, r2, lsl #8 + 885 01fe 20F81320 strh r2, [r0, r3, lsl #1] @ movhi + 886 .L61: + 464:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 887 .loc 1 464 13 is_stmt 1 view .LVU192 + 464:Src/stm32f7xx_it.c **** UART_rec_incr = 0; + 888 .loc 1 464 23 is_stmt 0 view .LVU193 + 889 0202 1E4B ldr r3, .L71+28 + 890 0204 0822 movs r2, #8 + 891 0206 1A70 strb r2, [r3] + 465:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 892 .loc 1 465 13 is_stmt 1 view .LVU194 + 465:Src/stm32f7xx_it.c **** flg_tmt = 0;//Reset the timeout flag + 893 .loc 1 465 27 is_stmt 0 view .LVU195 + 894 0208 0023 movs r3, #0 + 895 020a 174A ldr r2, .L71+8 + 896 020c 1380 strh r3, [r2] @ movhi + 466:Src/stm32f7xx_it.c **** } + 897 .loc 1 466 13 is_stmt 1 view .LVU196 + 466:Src/stm32f7xx_it.c **** } + 898 .loc 1 466 21 is_stmt 0 view .LVU197 + 899 020e 194A ldr r2, .L71+20 + 900 0210 1370 strb r3, [r2] + 901 0212 2EE7 b .L37 + 902 .L60: + 463:Src/stm32f7xx_it.c **** CPU_state = DECODE_TASK; + 903 .loc 1 463 17 is_stmt 1 view .LVU198 + 463:Src/stm32f7xx_it.c **** CPU_state = DECODE_TASK; + 904 .loc 1 463 39 is_stmt 0 view .LVU199 + 905 0214 5B08 lsrs r3, r3, #1 + 463:Src/stm32f7xx_it.c **** CPU_state = DECODE_TASK; + 906 .loc 1 463 43 view .LVU200 + 907 0216 013B subs r3, r3, #1 + 463:Src/stm32f7xx_it.c **** CPU_state = DECODE_TASK; + 908 .loc 1 463 47 view .LVU201 + 909 0218 1A49 ldr r1, .L71+36 + 910 021a 21F81320 strh r2, [r1, r3, lsl #1] @ movhi + 911 021e F0E7 b .L61 + 912 .L62: + 473:Src/stm32f7xx_it.c **** UART_rec_incr++; + 913 .loc 1 473 17 is_stmt 1 view .LVU202 + ARM GAS /tmp/cc8Pc1nf.s page 157 + + + 473:Src/stm32f7xx_it.c **** UART_rec_incr++; + 914 .loc 1 473 39 is_stmt 0 view .LVU203 + 915 0220 5908 lsrs r1, r3, #1 + 473:Src/stm32f7xx_it.c **** UART_rec_incr++; + 916 .loc 1 473 43 view .LVU204 + 917 0222 0139 subs r1, r1, #1 + 473:Src/stm32f7xx_it.c **** UART_rec_incr++; + 918 .loc 1 473 47 view .LVU205 + 919 0224 1748 ldr r0, .L71+36 + 920 0226 20F81120 strh r2, [r0, r1, lsl #1] @ movhi + 921 022a D7E7 b .L63 + 922 .L38: + 479:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 923 .loc 1 479 9 is_stmt 1 view .LVU206 + 479:Src/stm32f7xx_it.c **** COMMAND[(UART_rec_incr>>1)-1] += ((uint16_t)(uart_buf))<<8; + 924 .loc 1 479 12 is_stmt 0 view .LVU207 + 925 022c 13F0010F tst r3, #1 + 926 0230 0FD0 beq .L64 + 480:Src/stm32f7xx_it.c **** else + 927 .loc 1 480 13 is_stmt 1 view .LVU208 + 480:Src/stm32f7xx_it.c **** else + 928 .loc 1 480 43 is_stmt 0 view .LVU209 + 929 0232 5908 lsrs r1, r3, #1 + 930 0234 0139 subs r1, r1, #1 + 931 0236 134C ldr r4, .L71+36 + 932 0238 34F81100 ldrh r0, [r4, r1, lsl #1] + 933 023c 00EB0222 add r2, r0, r2, lsl #8 + 934 0240 24F81120 strh r2, [r4, r1, lsl #1] @ movhi + 935 .L65: + 483:Src/stm32f7xx_it.c **** UART_transmission_request = NO_MESS; + 936 .loc 1 483 9 is_stmt 1 view .LVU210 + 483:Src/stm32f7xx_it.c **** UART_transmission_request = NO_MESS; + 937 .loc 1 483 22 is_stmt 0 view .LVU211 + 938 0244 0133 adds r3, r3, #1 + 939 0246 084A ldr r2, .L71+8 + 940 0248 1380 strh r3, [r2] @ movhi + 484:Src/stm32f7xx_it.c **** break; + 941 .loc 1 484 9 is_stmt 1 view .LVU212 + 484:Src/stm32f7xx_it.c **** break; + 942 .loc 1 484 35 is_stmt 0 view .LVU213 + 943 024a 0F4B ldr r3, .L71+40 + 944 024c 0022 movs r2, #0 + 945 024e 1A70 strb r2, [r3] + 485:Src/stm32f7xx_it.c **** } + 946 .loc 1 485 5 is_stmt 1 view .LVU214 + 947 .loc 1 488 1 is_stmt 0 view .LVU215 + 948 0250 0FE7 b .L37 + 949 .L64: + 482:Src/stm32f7xx_it.c **** UART_rec_incr++; + 950 .loc 1 482 13 is_stmt 1 view .LVU216 + 482:Src/stm32f7xx_it.c **** UART_rec_incr++; + 951 .loc 1 482 35 is_stmt 0 view .LVU217 + 952 0252 5908 lsrs r1, r3, #1 + 482:Src/stm32f7xx_it.c **** UART_rec_incr++; + 953 .loc 1 482 39 view .LVU218 + 954 0254 0139 subs r1, r1, #1 + 482:Src/stm32f7xx_it.c **** UART_rec_incr++; + ARM GAS /tmp/cc8Pc1nf.s page 158 + + + 955 .loc 1 482 43 view .LVU219 + 956 0256 0B48 ldr r0, .L71+36 + 957 0258 20F81120 strh r2, [r0, r1, lsl #1] @ movhi + 958 025c F2E7 b .L65 + 959 .L72: + 960 025e 00BF .align 2 + 961 .L71: + 962 0260 00100140 .word 1073811456 + 963 0264 00000000 .word uart_buf + 964 0268 00000000 .word UART_rec_incr + 965 026c 00000000 .word TO6 + 966 0270 00000000 .word TO6_uart + 967 0274 00000000 .word flg_tmt + 968 0278 00000000 .word UART_header + 969 027c 00000000 .word CPU_state + 970 0280 00000000 .word State_Data + 971 0284 00000000 .word COMMAND + 972 0288 00000000 .word UART_transmission_request + 973 .cfi_endproc + 974 .LFE1200: + 976 .section .text.USART1_IRQHandler,"ax",%progbits + 977 .align 1 + 978 .global USART1_IRQHandler + 979 .syntax unified + 980 .thumb + 981 .thumb_func + 982 .fpu fpv5-d16 + 984 USART1_IRQHandler: + 985 .LFB1195: + 255:Src/stm32f7xx_it.c **** /* USER CODE BEGIN USART1_IRQn 0 */ + 986 .loc 1 255 1 is_stmt 1 view -0 + 987 .cfi_startproc + 988 @ args = 0, pretend = 0, frame = 8 + 989 @ frame_needed = 0, uses_anonymous_args = 0 + 990 0000 00B5 push {lr} + 991 .LCFI7: + 992 .cfi_def_cfa_offset 4 + 993 .cfi_offset 14, -4 + 994 0002 83B0 sub sp, sp, #12 + 995 .LCFI8: + 996 .cfi_def_cfa_offset 16 + 257:Src/stm32f7xx_it.c **** if(LL_USART_IsActiveFlag_RXNE(USART1) && LL_USART_IsEnabledIT_RXNE(USART1)) + 997 .loc 1 257 3 view .LVU221 + 258:Src/stm32f7xx_it.c **** { + 998 .loc 1 258 3 view .LVU222 + 999 .LVL13: + 1000 .LBB68: + 1001 .LBI68: +2640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1002 .loc 3 2640 26 view .LVU223 + 1003 .LBB69: +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1004 .loc 3 2642 3 view .LVU224 +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1005 .loc 3 2642 12 is_stmt 0 view .LVU225 + 1006 0004 304B ldr r3, .L89 + 1007 0006 DB69 ldr r3, [r3, #28] + ARM GAS /tmp/cc8Pc1nf.s page 159 + + +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1008 .loc 3 2642 77 view .LVU226 + 1009 0008 13F0200F tst r3, #32 + 1010 000c 07D0 beq .L74 + 1011 .LVL14: +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1012 .loc 3 2642 77 view .LVU227 + 1013 .LBE69: + 1014 .LBE68: + 1015 .LBB70: + 1016 .LBI70: +3366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1017 .loc 3 3366 26 is_stmt 1 view .LVU228 + 1018 .LBB71: +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1019 .loc 3 3368 3 view .LVU229 +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1020 .loc 3 3368 12 is_stmt 0 view .LVU230 + 1021 000e 2E4B ldr r3, .L89 + 1022 0010 1B68 ldr r3, [r3] +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1023 .loc 3 3368 80 view .LVU231 + 1024 0012 13F0200F tst r3, #32 + 1025 0016 02D0 beq .L74 + 1026 .LVL15: +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1027 .loc 3 3368 80 view .LVU232 + 1028 .LBE71: + 1029 .LBE70: + 260:Src/stm32f7xx_it.c **** } + 1030 .loc 1 260 5 is_stmt 1 view .LVU233 + 1031 0018 FFF7FEFF bl UART_RxCpltCallback + 1032 .LVL16: + 1033 001c 33E0 b .L73 + 1034 .L74: + 264:Src/stm32f7xx_it.c **** { + 1035 .loc 1 264 5 view .LVU234 + 1036 .LVL17: + 1037 .LBB72: + 1038 .LBI72: +2618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1039 .loc 3 2618 26 view .LVU235 + 1040 .LBB73: +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1041 .loc 3 2620 3 view .LVU236 +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1042 .loc 3 2620 12 is_stmt 0 view .LVU237 + 1043 001e 2A4B ldr r3, .L89 + 1044 0020 DB69 ldr r3, [r3, #28] +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1045 .loc 3 2620 75 view .LVU238 + 1046 0022 13F0080F tst r3, #8 + 1047 0026 25D1 bne .L76 + 1048 .LVL18: +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1049 .loc 3 2620 75 view .LVU239 + 1050 .LBE73: + ARM GAS /tmp/cc8Pc1nf.s page 160 + + + 1051 .LBE72: + 269:Src/stm32f7xx_it.c **** { + 1052 .loc 1 269 10 is_stmt 1 view .LVU240 + 1053 .LBB74: + 1054 .LBI74: +2596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1055 .loc 3 2596 26 view .LVU241 + 1056 .LBB75: +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1057 .loc 3 2598 3 view .LVU242 +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1058 .loc 3 2598 12 is_stmt 0 view .LVU243 + 1059 0028 274B ldr r3, .L89 + 1060 002a DB69 ldr r3, [r3, #28] +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1061 .loc 3 2598 73 view .LVU244 + 1062 002c 13F0020F tst r3, #2 + 1063 0030 2CD1 bne .L77 + 1064 .LVL19: +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1065 .loc 3 2598 73 view .LVU245 + 1066 .LBE75: + 1067 .LBE74: + 274:Src/stm32f7xx_it.c **** { + 1068 .loc 1 274 10 is_stmt 1 view .LVU246 + 1069 .LBB76: + 1070 .LBI76: +2607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1071 .loc 3 2607 26 view .LVU247 + 1072 .LBB77: +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1073 .loc 3 2609 3 view .LVU248 +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1074 .loc 3 2609 12 is_stmt 0 view .LVU249 + 1075 0032 254B ldr r3, .L89 + 1076 0034 DB69 ldr r3, [r3, #28] +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1077 .loc 3 2609 73 view .LVU250 + 1078 0036 13F0040F tst r3, #4 + 1079 003a 31D1 bne .L79 + 1080 .LVL20: +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1081 .loc 3 2609 73 view .LVU251 + 1082 .LBE77: + 1083 .LBE76: + 279:Src/stm32f7xx_it.c **** { + 1084 .loc 1 279 10 is_stmt 1 view .LVU252 + 1085 .LBB78: + 1086 .LBI78: +2585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1087 .loc 3 2585 26 view .LVU253 + 1088 .LBB79: +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1089 .loc 3 2587 3 view .LVU254 +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1090 .loc 3 2587 12 is_stmt 0 view .LVU255 + 1091 003c 224B ldr r3, .L89 + ARM GAS /tmp/cc8Pc1nf.s page 161 + + + 1092 003e DB69 ldr r3, [r3, #28] +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1093 .loc 3 2587 73 view .LVU256 + 1094 0040 13F0010F tst r3, #1 + 1095 0044 36D1 bne .L81 + 1096 .LVL21: +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1097 .loc 3 2587 73 view .LVU257 + 1098 .LBE79: + 1099 .LBE78: + 286:Src/stm32f7xx_it.c **** { + 1100 .loc 1 286 7 is_stmt 1 view .LVU258 + 1101 .LBB80: + 1102 .LBI80: +2651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1103 .loc 3 2651 26 view .LVU259 + 1104 .LBB81: +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1105 .loc 3 2653 3 view .LVU260 +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1106 .loc 3 2653 12 is_stmt 0 view .LVU261 + 1107 0046 214B ldr r3, .L89+4 + 1108 0048 DB69 ldr r3, [r3, #28] +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1109 .loc 3 2653 73 view .LVU262 + 1110 004a 13F0400F tst r3, #64 + 1111 004e 1AD0 beq .L73 + 1112 .LVL22: +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1113 .loc 3 2653 73 view .LVU263 + 1114 .LBE81: + 1115 .LBE80: + 1116 .LBB82: + 1117 .LBI82: +3377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1118 .loc 3 3377 26 is_stmt 1 view .LVU264 + 1119 .LBB83: +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1120 .loc 3 3379 3 view .LVU265 +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1121 .loc 3 3379 12 is_stmt 0 view .LVU266 + 1122 0050 1E4B ldr r3, .L89+4 + 1123 0052 1B68 ldr r3, [r3] +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1124 .loc 3 3379 77 view .LVU267 + 1125 0054 13F0400F tst r3, #64 + 1126 0058 15D0 beq .L73 + 1127 .LVL23: +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1128 .loc 3 3379 77 view .LVU268 + 1129 .LBE83: + 1130 .LBE82: + 288:Src/stm32f7xx_it.c **** //test_counter += 1; + 1131 .loc 1 288 9 is_stmt 1 view .LVU269 + 1132 .LBB84: + 1133 .LBI84: +2916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 162 + + + 1134 .loc 3 2916 22 view .LVU270 + 1135 .LBB85: +2918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1136 .loc 3 2918 3 view .LVU271 + 1137 005a 1B4B ldr r3, .L89 + 1138 005c 4022 movs r2, #64 + 1139 005e 1A62 str r2, [r3, #32] + 1140 .LVL24: + 1141 .L84: +2918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1142 .loc 3 2918 3 is_stmt 0 view .LVU272 + 1143 .LBE85: + 1144 .LBE84: +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1145 .loc 3 3215 3 is_stmt 1 view .LVU273 + 1146 .LBB86: + 1147 .LBB87: +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1148 .loc 3 3215 3 view .LVU274 +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1149 .loc 3 3215 3 view .LVU275 +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1150 .loc 3 3215 3 view .LVU276 + 1151 0060 194A ldr r2, .L89 + 1152 .LVL25: + 1153 .LBB88: + 1154 .LBI88: + 1155 .file 4 "Drivers/CMSIS/Include/cmsis_gcc.h" + 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** + 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h + 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file + 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.0.4 + 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018 + 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ + 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* + 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 + 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may + 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. + 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at + 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 + 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software + 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT + 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and + 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. + 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 24:Drivers/CMSIS/Include/cmsis_gcc.h **** + 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H + 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H + 27:Drivers/CMSIS/Include/cmsis_gcc.h **** + 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ + 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + ARM GAS /tmp/cc8Pc1nf.s page 163 + + + 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" + 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" + 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" + 33:Drivers/CMSIS/Include/cmsis_gcc.h **** + 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ + 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin + 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) + 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 38:Drivers/CMSIS/Include/cmsis_gcc.h **** + 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ + 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM + 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm + 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE + 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline + 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE + 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline + 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE + 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline + 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN + 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) + 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED + 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) + 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK + 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) + 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED + 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) + 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT + 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION + 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) + 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ + 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE + 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- + 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ + ARM GAS /tmp/cc8Pc1nf.s page 164 + + + 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add + 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE + 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- + 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ + 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add + 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED + 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) + 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT + 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict + 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 116:Drivers/CMSIS/Include/cmsis_gcc.h **** + 117:Drivers/CMSIS/Include/cmsis_gcc.h **** + 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ + 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface + 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 123:Drivers/CMSIS/Include/cmsis_gcc.h **** + 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts + 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void) + 130:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); + 132:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 133:Drivers/CMSIS/Include/cmsis_gcc.h **** + 134:Drivers/CMSIS/Include/cmsis_gcc.h **** + 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts + 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. + 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) + 141:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); + 143:Drivers/CMSIS/Include/cmsis_gcc.h **** } + ARM GAS /tmp/cc8Pc1nf.s page 165 + + + 144:Drivers/CMSIS/Include/cmsis_gcc.h **** + 145:Drivers/CMSIS/Include/cmsis_gcc.h **** + 146:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register + 148:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register. + 149:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value + 150:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 151:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) + 152:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 153:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 154:Drivers/CMSIS/Include/cmsis_gcc.h **** + 155:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) ); + 156:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 157:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 158:Drivers/CMSIS/Include/cmsis_gcc.h **** + 159:Drivers/CMSIS/Include/cmsis_gcc.h **** + 160:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 161:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 162:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure) + 163:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode. + 164:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value + 165:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 166:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) + 167:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 168:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 169:Drivers/CMSIS/Include/cmsis_gcc.h **** + 170:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + 171:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 172:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 174:Drivers/CMSIS/Include/cmsis_gcc.h **** + 175:Drivers/CMSIS/Include/cmsis_gcc.h **** + 176:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 177:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register + 178:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register. + 179:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 180:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 181:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) + 182:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 183:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + 184:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 185:Drivers/CMSIS/Include/cmsis_gcc.h **** + 186:Drivers/CMSIS/Include/cmsis_gcc.h **** + 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 188:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure) + 190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state. + 191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 192:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) + 194:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + 196:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 197:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 198:Drivers/CMSIS/Include/cmsis_gcc.h **** + 199:Drivers/CMSIS/Include/cmsis_gcc.h **** + 200:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 166 + + + 201:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register + 202:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register. + 203:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value + 204:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 205:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void) + 206:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 207:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 208:Drivers/CMSIS/Include/cmsis_gcc.h **** + 209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + 210:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 211:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 212:Drivers/CMSIS/Include/cmsis_gcc.h **** + 213:Drivers/CMSIS/Include/cmsis_gcc.h **** + 214:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 215:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register + 216:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register. + 217:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value + 218:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 219:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void) + 220:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 221:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 222:Drivers/CMSIS/Include/cmsis_gcc.h **** + 223:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + 224:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 225:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 226:Drivers/CMSIS/Include/cmsis_gcc.h **** + 227:Drivers/CMSIS/Include/cmsis_gcc.h **** + 228:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register + 230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register. + 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value + 232:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(void) + 234:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 235:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 236:Drivers/CMSIS/Include/cmsis_gcc.h **** + 237:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + 238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 239:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 240:Drivers/CMSIS/Include/cmsis_gcc.h **** + 241:Drivers/CMSIS/Include/cmsis_gcc.h **** + 242:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer + 244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP). + 245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 246:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void) + 248:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 250:Drivers/CMSIS/Include/cmsis_gcc.h **** + 251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) ); + 252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 253:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 254:Drivers/CMSIS/Include/cmsis_gcc.h **** + 255:Drivers/CMSIS/Include/cmsis_gcc.h **** + 256:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 257:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 167 + + + 258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure) + 259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s + 260:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 261:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 262:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) + 263:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 264:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 265:Drivers/CMSIS/Include/cmsis_gcc.h **** + 266:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + 267:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 268:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 269:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 270:Drivers/CMSIS/Include/cmsis_gcc.h **** + 271:Drivers/CMSIS/Include/cmsis_gcc.h **** + 272:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 273:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer + 274:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP). + 275:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 276:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 277:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) + 278:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 279:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); + 280:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 281:Drivers/CMSIS/Include/cmsis_gcc.h **** + 282:Drivers/CMSIS/Include/cmsis_gcc.h **** + 283:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 284:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 285:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 286:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta + 287:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 288:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 289:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) + 290:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 291:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); + 292:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 293:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 294:Drivers/CMSIS/Include/cmsis_gcc.h **** + 295:Drivers/CMSIS/Include/cmsis_gcc.h **** + 296:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 297:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer + 298:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP). + 299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 300:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void) + 302:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 304:Drivers/CMSIS/Include/cmsis_gcc.h **** + 305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) ); + 306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 307:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 308:Drivers/CMSIS/Include/cmsis_gcc.h **** + 309:Drivers/CMSIS/Include/cmsis_gcc.h **** + 310:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 311:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 312:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure) + 313:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat + 314:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + ARM GAS /tmp/cc8Pc1nf.s page 168 + + + 315:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 316:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) + 317:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 319:Drivers/CMSIS/Include/cmsis_gcc.h **** + 320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + 321:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 322:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 323:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 324:Drivers/CMSIS/Include/cmsis_gcc.h **** + 325:Drivers/CMSIS/Include/cmsis_gcc.h **** + 326:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 327:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer + 328:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP). + 329:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 330:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 331:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) + 332:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); + 334:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 335:Drivers/CMSIS/Include/cmsis_gcc.h **** + 336:Drivers/CMSIS/Include/cmsis_gcc.h **** + 337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 338:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 339:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure) + 340:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + 341:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 342:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 343:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) + 344:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 345:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); + 346:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 347:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 348:Drivers/CMSIS/Include/cmsis_gcc.h **** + 349:Drivers/CMSIS/Include/cmsis_gcc.h **** + 350:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 351:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 352:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Stack Pointer (non-secure) + 353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + 354:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value + 355:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) + 357:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 359:Drivers/CMSIS/Include/cmsis_gcc.h **** + 360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + 361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 362:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 363:Drivers/CMSIS/Include/cmsis_gcc.h **** + 364:Drivers/CMSIS/Include/cmsis_gcc.h **** + 365:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure) + 367:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + 368:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set + 369:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 370:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) + 371:Drivers/CMSIS/Include/cmsis_gcc.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 169 + + + 372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); + 373:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 374:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 375:Drivers/CMSIS/Include/cmsis_gcc.h **** + 376:Drivers/CMSIS/Include/cmsis_gcc.h **** + 377:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 378:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask + 379:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register. + 380:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 381:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 382:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) + 383:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 384:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 385:Drivers/CMSIS/Include/cmsis_gcc.h **** + 386:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 387:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 388:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 389:Drivers/CMSIS/Include/cmsis_gcc.h **** + 390:Drivers/CMSIS/Include/cmsis_gcc.h **** + 391:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 392:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 393:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure) + 394:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg + 395:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 396:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 397:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) + 398:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 399:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 400:Drivers/CMSIS/Include/cmsis_gcc.h **** + 401:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + 402:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 403:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 404:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 405:Drivers/CMSIS/Include/cmsis_gcc.h **** + 406:Drivers/CMSIS/Include/cmsis_gcc.h **** + 407:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 408:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask + 409:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register. + 410:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 411:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 412:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) + 413:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 415:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 416:Drivers/CMSIS/Include/cmsis_gcc.h **** + 417:Drivers/CMSIS/Include/cmsis_gcc.h **** + 418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 419:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure) + 421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + 422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 423:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 424:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) + 425:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 426:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); + 427:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 428:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + ARM GAS /tmp/cc8Pc1nf.s page 170 + + + 429:Drivers/CMSIS/Include/cmsis_gcc.h **** + 430:Drivers/CMSIS/Include/cmsis_gcc.h **** + 431:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 433:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 434:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 435:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ + 436:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + 437:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 438:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 439:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void) + 440:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 441:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory"); + 442:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 443:Drivers/CMSIS/Include/cmsis_gcc.h **** + 444:Drivers/CMSIS/Include/cmsis_gcc.h **** + 445:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 446:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ + 447:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR. + 448:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 449:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 450:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void) + 451:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 452:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory"); + 453:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 454:Drivers/CMSIS/Include/cmsis_gcc.h **** + 455:Drivers/CMSIS/Include/cmsis_gcc.h **** + 456:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 457:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority + 458:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register. + 459:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 460:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 461:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) + 462:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 463:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 464:Drivers/CMSIS/Include/cmsis_gcc.h **** + 465:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + 466:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 467:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 468:Drivers/CMSIS/Include/cmsis_gcc.h **** + 469:Drivers/CMSIS/Include/cmsis_gcc.h **** + 470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 471:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure) + 473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state. + 474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 475:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) + 477:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 479:Drivers/CMSIS/Include/cmsis_gcc.h **** + 480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + 481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 482:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 483:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 484:Drivers/CMSIS/Include/cmsis_gcc.h **** + 485:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/cc8Pc1nf.s page 171 + + + 486:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority + 488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register. + 489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 490:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) + 492:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); + 494:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 495:Drivers/CMSIS/Include/cmsis_gcc.h **** + 496:Drivers/CMSIS/Include/cmsis_gcc.h **** + 497:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 498:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 499:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure) + 500:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state. + 501:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 502:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 503:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) + 504:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 505:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); + 506:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 507:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 508:Drivers/CMSIS/Include/cmsis_gcc.h **** + 509:Drivers/CMSIS/Include/cmsis_gcc.h **** + 510:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 511:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition + 512:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable + 513:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level. + 514:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 515:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 516:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) + 517:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 518:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); + 519:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 520:Drivers/CMSIS/Include/cmsis_gcc.h **** + 521:Drivers/CMSIS/Include/cmsis_gcc.h **** + 522:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 523:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask + 524:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register. + 525:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 526:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) + 528:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 530:Drivers/CMSIS/Include/cmsis_gcc.h **** + 531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + 532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 533:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 534:Drivers/CMSIS/Include/cmsis_gcc.h **** + 535:Drivers/CMSIS/Include/cmsis_gcc.h **** + 536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 537:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 538:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure) + 539:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state. + 540:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 541:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 542:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) + ARM GAS /tmp/cc8Pc1nf.s page 172 + + + 543:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 544:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 545:Drivers/CMSIS/Include/cmsis_gcc.h **** + 546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + 547:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 548:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 549:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 550:Drivers/CMSIS/Include/cmsis_gcc.h **** + 551:Drivers/CMSIS/Include/cmsis_gcc.h **** + 552:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 553:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask + 554:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register. + 555:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 556:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 557:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) + 558:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 559:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); + 560:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 561:Drivers/CMSIS/Include/cmsis_gcc.h **** + 562:Drivers/CMSIS/Include/cmsis_gcc.h **** + 563:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 564:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 565:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure) + 566:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state. + 567:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 568:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 569:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) + 570:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 571:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); + 572:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 573:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 574:Drivers/CMSIS/Include/cmsis_gcc.h **** + 575:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 576:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 577:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + 578:Drivers/CMSIS/Include/cmsis_gcc.h **** + 579:Drivers/CMSIS/Include/cmsis_gcc.h **** + 580:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 581:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + 582:Drivers/CMSIS/Include/cmsis_gcc.h **** + 583:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit + 585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 588:Drivers/CMSIS/Include/cmsis_gcc.h **** + 589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + 590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 591:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) + 593:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 595:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 596:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 597:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 598:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 599:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + ARM GAS /tmp/cc8Pc1nf.s page 173 + + + 600:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + 601:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 602:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 603:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 604:Drivers/CMSIS/Include/cmsis_gcc.h **** + 605:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + 606:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 607:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure) + 608:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 609:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 610:Drivers/CMSIS/Include/cmsis_gcc.h **** + 611:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in + 612:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 613:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 614:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) + 615:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 616:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 617:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 618:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 619:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 620:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 621:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + 622:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 623:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 624:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 625:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 626:Drivers/CMSIS/Include/cmsis_gcc.h **** + 627:Drivers/CMSIS/Include/cmsis_gcc.h **** + 628:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 629:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit + 630:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 631:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 632:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 633:Drivers/CMSIS/Include/cmsis_gcc.h **** + 634:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + 635:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 636:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 637:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) + 638:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 639:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 640:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); + 645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 646:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 647:Drivers/CMSIS/Include/cmsis_gcc.h **** + 648:Drivers/CMSIS/Include/cmsis_gcc.h **** + 649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 650:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 652:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 653:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 654:Drivers/CMSIS/Include/cmsis_gcc.h **** + 655:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s + 656:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + ARM GAS /tmp/cc8Pc1nf.s page 174 + + + 657:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 658:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) + 659:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 661:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 662:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 663:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 664:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); + 665:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 666:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 667:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 668:Drivers/CMSIS/Include/cmsis_gcc.h **** + 669:Drivers/CMSIS/Include/cmsis_gcc.h **** + 670:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 671:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit + 672:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 673:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 674:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 675:Drivers/CMSIS/Include/cmsis_gcc.h **** + 676:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + 677:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 678:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 679:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) + 680:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 681:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 682:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 683:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 684:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 685:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 686:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 687:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + 688:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 689:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 690:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 691:Drivers/CMSIS/Include/cmsis_gcc.h **** + 692:Drivers/CMSIS/Include/cmsis_gcc.h **** + 693:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 694:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 695:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure) + 696:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 697:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 698:Drivers/CMSIS/Include/cmsis_gcc.h **** + 699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec + 700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 701:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) + 703:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 709:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + 710:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 711:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 712:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 713:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + ARM GAS /tmp/cc8Pc1nf.s page 175 + + + 714:Drivers/CMSIS/Include/cmsis_gcc.h **** + 715:Drivers/CMSIS/Include/cmsis_gcc.h **** + 716:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit + 718:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 719:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 720:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 721:Drivers/CMSIS/Include/cmsis_gcc.h **** + 722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + 723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + 724:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) + 726:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 727:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 728:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 729:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 730:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 731:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 732:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); + 733:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 734:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 735:Drivers/CMSIS/Include/cmsis_gcc.h **** + 736:Drivers/CMSIS/Include/cmsis_gcc.h **** + 737:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 738:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 739:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure) + 740:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 741:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 742:Drivers/CMSIS/Include/cmsis_gcc.h **** + 743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu + 744:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set + 745:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) + 747:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 748:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 749:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 750:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 751:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 752:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); + 753:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 754:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 756:Drivers/CMSIS/Include/cmsis_gcc.h **** + 757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + 759:Drivers/CMSIS/Include/cmsis_gcc.h **** + 760:Drivers/CMSIS/Include/cmsis_gcc.h **** + 761:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR + 763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register. + 764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value + 765:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 766:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void) + 767:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 768:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 769:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 770:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr) + ARM GAS /tmp/cc8Pc1nf.s page 176 + + + 771:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 772:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 773:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr(); + 775:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 776:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 777:Drivers/CMSIS/Include/cmsis_gcc.h **** + 778:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + 779:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 781:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 782:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U); + 783:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 784:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 785:Drivers/CMSIS/Include/cmsis_gcc.h **** + 786:Drivers/CMSIS/Include/cmsis_gcc.h **** + 787:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 788:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR + 789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register. + 790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set + 791:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) + 793:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 795:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 796:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr) + 797:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 798:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 799:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 800:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr); + 801:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 802:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); + 803:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 804:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 805:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr; + 806:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 807:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 808:Drivers/CMSIS/Include/cmsis_gcc.h **** + 809:Drivers/CMSIS/Include/cmsis_gcc.h **** + 810:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */ + 811:Drivers/CMSIS/Include/cmsis_gcc.h **** + 812:Drivers/CMSIS/Include/cmsis_gcc.h **** + 813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ + 814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + 815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions + 816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 817:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 818:Drivers/CMSIS/Include/cmsis_gcc.h **** + 819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. + 820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" + 821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ + 822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) + 823:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) + 824:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) + 825:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) + 826:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 827:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) + ARM GAS /tmp/cc8Pc1nf.s page 177 + + + 828:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) + 829:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) + 830:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 831:Drivers/CMSIS/Include/cmsis_gcc.h **** + 832:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 833:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation + 834:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. + 835:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 836:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") + 837:Drivers/CMSIS/Include/cmsis_gcc.h **** + 838:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 839:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt + 840:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o + 841:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 842:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi") + 843:Drivers/CMSIS/Include/cmsis_gcc.h **** + 844:Drivers/CMSIS/Include/cmsis_gcc.h **** + 845:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 846:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event + 847:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter + 848:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. + 849:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 850:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe") + 851:Drivers/CMSIS/Include/cmsis_gcc.h **** + 852:Drivers/CMSIS/Include/cmsis_gcc.h **** + 853:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 854:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event + 855:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + 856:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 857:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") + 858:Drivers/CMSIS/Include/cmsis_gcc.h **** + 859:Drivers/CMSIS/Include/cmsis_gcc.h **** + 860:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 861:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier + 862:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, + 863:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, + 864:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. + 865:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) + 867:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); + 869:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 870:Drivers/CMSIS/Include/cmsis_gcc.h **** + 871:Drivers/CMSIS/Include/cmsis_gcc.h **** + 872:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 873:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Synchronization Barrier + 874:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Acts as a special kind of Data Memory Barrier. + 875:Drivers/CMSIS/Include/cmsis_gcc.h **** It completes when all explicit memory accesses before this instruction complete. + 876:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DSB(void) + 878:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory"); + 880:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 881:Drivers/CMSIS/Include/cmsis_gcc.h **** + 882:Drivers/CMSIS/Include/cmsis_gcc.h **** + 883:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 884:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Memory Barrier + ARM GAS /tmp/cc8Pc1nf.s page 178 + + + 885:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Ensures the apparent order of the explicit memory operations before + 886:Drivers/CMSIS/Include/cmsis_gcc.h **** and after the instruction, without ensuring their completion. + 887:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 888:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DMB(void) + 889:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 890:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dmb 0xF":::"memory"); + 891:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 892:Drivers/CMSIS/Include/cmsis_gcc.h **** + 893:Drivers/CMSIS/Include/cmsis_gcc.h **** + 894:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 895:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (32 bit) + 896:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x785 + 897:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 898:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 899:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 900:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV(uint32_t value) + 901:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 902:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + 903:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_bswap32(value); + 904:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 905:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 906:Drivers/CMSIS/Include/cmsis_gcc.h **** + 907:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 908:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 909:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 910:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 911:Drivers/CMSIS/Include/cmsis_gcc.h **** + 912:Drivers/CMSIS/Include/cmsis_gcc.h **** + 913:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 914:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (16 bit) + 915:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes + 916:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 917:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 918:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 919:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) + 920:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 921:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 922:Drivers/CMSIS/Include/cmsis_gcc.h **** + 923:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 924:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 925:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 926:Drivers/CMSIS/Include/cmsis_gcc.h **** + 927:Drivers/CMSIS/Include/cmsis_gcc.h **** + 928:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 929:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (16 bit) + 930:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For exam + 931:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 932:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 933:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 934:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE int16_t __REVSH(int16_t value) + 935:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 936:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + 937:Drivers/CMSIS/Include/cmsis_gcc.h **** return (int16_t)__builtin_bswap16(value); + 938:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 939:Drivers/CMSIS/Include/cmsis_gcc.h **** int16_t result; + 940:Drivers/CMSIS/Include/cmsis_gcc.h **** + 941:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + ARM GAS /tmp/cc8Pc1nf.s page 179 + + + 942:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 943:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 944:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 945:Drivers/CMSIS/Include/cmsis_gcc.h **** + 946:Drivers/CMSIS/Include/cmsis_gcc.h **** + 947:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 948:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Rotate Right in unsigned value (32 bit) + 949:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Rotate Right (immediate) provides the value of the contents of a register rotated by a v + 950:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] op1 Value to rotate + 951:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] op2 Number of Bits to rotate + 952:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Rotated value + 953:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 954:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) + 955:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 956:Drivers/CMSIS/Include/cmsis_gcc.h **** op2 %= 32U; + 957:Drivers/CMSIS/Include/cmsis_gcc.h **** if (op2 == 0U) + 958:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 959:Drivers/CMSIS/Include/cmsis_gcc.h **** return op1; + 960:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 961:Drivers/CMSIS/Include/cmsis_gcc.h **** return (op1 >> op2) | (op1 << (32U - op2)); + 962:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 963:Drivers/CMSIS/Include/cmsis_gcc.h **** + 964:Drivers/CMSIS/Include/cmsis_gcc.h **** + 965:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 966:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Breakpoint + 967:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Causes the processor to enter Debug state. + 968:Drivers/CMSIS/Include/cmsis_gcc.h **** Debug tools can use this to investigate system state when the instruction at a particula + 969:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value is ignored by the processor. + 970:Drivers/CMSIS/Include/cmsis_gcc.h **** If required, a debugger can use it to store additional information about the break + 971:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 972:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __BKPT(value) __ASM volatile ("bkpt "#value) + 973:Drivers/CMSIS/Include/cmsis_gcc.h **** + 974:Drivers/CMSIS/Include/cmsis_gcc.h **** + 975:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 976:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse bit order of value + 977:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the bit order of the given value. + 978:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 979:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 980:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) + 982:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 984:Drivers/CMSIS/Include/cmsis_gcc.h **** + 985:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 986:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 987:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + 989:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 990:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + 991:Drivers/CMSIS/Include/cmsis_gcc.h **** + 992:Drivers/CMSIS/Include/cmsis_gcc.h **** result = value; /* r will be reversed bits of v; first get LSB of v */ + 993:Drivers/CMSIS/Include/cmsis_gcc.h **** for (value >>= 1U; value != 0U; value >>= 1U) + 994:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 995:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= 1U; + 996:Drivers/CMSIS/Include/cmsis_gcc.h **** result |= value & 1U; + 997:Drivers/CMSIS/Include/cmsis_gcc.h **** s--; + 998:Drivers/CMSIS/Include/cmsis_gcc.h **** } + ARM GAS /tmp/cc8Pc1nf.s page 180 + + + 999:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= s; /* shift when v's highest bits are zero */ +1000:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif +1001:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; +1002:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1003:Drivers/CMSIS/Include/cmsis_gcc.h **** +1004:Drivers/CMSIS/Include/cmsis_gcc.h **** +1005:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1006:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Count leading zeros +1007:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Counts the number of leading zeros of a data value. +1008:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to count the leading zeros +1009:Drivers/CMSIS/Include/cmsis_gcc.h **** \return number of leading zeros in value +1010:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1011:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CLZ (uint8_t)__builtin_clz +1012:Drivers/CMSIS/Include/cmsis_gcc.h **** +1013:Drivers/CMSIS/Include/cmsis_gcc.h **** +1014:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ +1015:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ +1016:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ +1017:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) +1018:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1019:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief LDR Exclusive (8 bit) +1020:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive LDR instruction for 8 bit value. +1021:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to data +1022:Drivers/CMSIS/Include/cmsis_gcc.h **** \return value of type uint8_t at (*ptr) +1023:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1024:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint8_t __LDREXB(volatile uint8_t *addr) +1025:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1026:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; +1027:Drivers/CMSIS/Include/cmsis_gcc.h **** +1028:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) +1029:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) ); +1030:Drivers/CMSIS/Include/cmsis_gcc.h **** #else +1031:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not +1032:Drivers/CMSIS/Include/cmsis_gcc.h **** accepted by assembler. So has to use following less efficient pattern. +1033:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1034:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +1035:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif +1036:Drivers/CMSIS/Include/cmsis_gcc.h **** return ((uint8_t) result); /* Add explicit type cast here */ +1037:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1038:Drivers/CMSIS/Include/cmsis_gcc.h **** +1039:Drivers/CMSIS/Include/cmsis_gcc.h **** +1040:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1041:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief LDR Exclusive (16 bit) +1042:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive LDR instruction for 16 bit values. +1043:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to data +1044:Drivers/CMSIS/Include/cmsis_gcc.h **** \return value of type uint16_t at (*ptr) +1045:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1046:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint16_t __LDREXH(volatile uint16_t *addr) +1047:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1048:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; +1049:Drivers/CMSIS/Include/cmsis_gcc.h **** +1050:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) +1051:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) ); +1052:Drivers/CMSIS/Include/cmsis_gcc.h **** #else +1053:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not +1054:Drivers/CMSIS/Include/cmsis_gcc.h **** accepted by assembler. So has to use following less efficient pattern. +1055:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 181 + + +1056:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" ); +1057:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif +1058:Drivers/CMSIS/Include/cmsis_gcc.h **** return ((uint16_t) result); /* Add explicit type cast here */ +1059:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1060:Drivers/CMSIS/Include/cmsis_gcc.h **** +1061:Drivers/CMSIS/Include/cmsis_gcc.h **** +1062:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1063:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief LDR Exclusive (32 bit) +1064:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive LDR instruction for 32 bit values. +1065:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to data +1066:Drivers/CMSIS/Include/cmsis_gcc.h **** \return value of type uint32_t at (*ptr) +1067:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1068:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) + 1156 .loc 4 1068 31 view .LVU277 + 1157 .LBB89: +1069:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1070:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 1158 .loc 4 1070 5 view .LVU278 +1071:Drivers/CMSIS/Include/cmsis_gcc.h **** +1072:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); + 1159 .loc 4 1072 4 view .LVU279 + 1160 .syntax unified + 1161 @ 1072 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 1162 0062 52E8003F ldrex r3, [r2] + 1163 @ 0 "" 2 + 1164 .LVL26: +1073:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 1165 .loc 4 1073 4 view .LVU280 + 1166 .loc 4 1073 4 is_stmt 0 view .LVU281 + 1167 .thumb + 1168 .syntax unified + 1169 .LBE89: + 1170 .LBE88: +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1171 .loc 3 3215 3 view .LVU282 + 1172 0066 23F04003 bic r3, r3, #64 + 1173 .LVL27: +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1174 .loc 3 3215 3 is_stmt 1 view .LVU283 + 1175 .LBB90: + 1176 .LBI90: +1074:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1075:Drivers/CMSIS/Include/cmsis_gcc.h **** +1076:Drivers/CMSIS/Include/cmsis_gcc.h **** +1077:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1078:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief STR Exclusive (8 bit) +1079:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive STR instruction for 8 bit values. +1080:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to store +1081:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to location +1082:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 0 Function succeeded +1083:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 1 Function failed +1084:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1085:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr) +1086:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1087:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; +1088:Drivers/CMSIS/Include/cmsis_gcc.h **** +1089:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); + ARM GAS /tmp/cc8Pc1nf.s page 182 + + +1090:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); +1091:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1092:Drivers/CMSIS/Include/cmsis_gcc.h **** +1093:Drivers/CMSIS/Include/cmsis_gcc.h **** +1094:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1095:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief STR Exclusive (16 bit) +1096:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive STR instruction for 16 bit values. +1097:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to store +1098:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to location +1099:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 0 Function succeeded +1100:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 1 Function failed +1101:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1102:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr) +1103:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1104:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; +1105:Drivers/CMSIS/Include/cmsis_gcc.h **** +1106:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) ); +1107:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); +1108:Drivers/CMSIS/Include/cmsis_gcc.h **** } +1109:Drivers/CMSIS/Include/cmsis_gcc.h **** +1110:Drivers/CMSIS/Include/cmsis_gcc.h **** +1111:Drivers/CMSIS/Include/cmsis_gcc.h **** /** +1112:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief STR Exclusive (32 bit) +1113:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Executes a exclusive STR instruction for 32 bit values. +1114:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to store +1115:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ptr Pointer to location +1116:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 0 Function succeeded +1117:Drivers/CMSIS/Include/cmsis_gcc.h **** \return 1 Function failed +1118:Drivers/CMSIS/Include/cmsis_gcc.h **** */ +1119:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) + 1177 .loc 4 1119 31 view .LVU284 + 1178 .LBB91: +1120:Drivers/CMSIS/Include/cmsis_gcc.h **** { +1121:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 1179 .loc 4 1121 4 view .LVU285 +1122:Drivers/CMSIS/Include/cmsis_gcc.h **** +1123:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); + 1180 .loc 4 1123 4 view .LVU286 + 1181 .syntax unified + 1182 @ 1123 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 1183 006a 42E80031 strex r1, r3, [r2] + 1184 @ 0 "" 2 + 1185 .LVL28: +1124:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 1186 .loc 4 1124 4 view .LVU287 + 1187 .loc 4 1124 4 is_stmt 0 view .LVU288 + 1188 .thumb + 1189 .syntax unified + 1190 .LBE91: + 1191 .LBE90: +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1192 .loc 3 3215 3 view .LVU289 + 1193 006e 0029 cmp r1, #0 + 1194 0070 F6D1 bne .L84 + 1195 0072 08E0 b .L73 + 1196 .LVL29: + 1197 .L76: + ARM GAS /tmp/cc8Pc1nf.s page 183 + + +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 1198 .loc 3 3215 3 view .LVU290 + 1199 .LBE87: + 1200 .LBE86: + 267:Src/stm32f7xx_it.c **** } + 1201 .loc 1 267 7 is_stmt 1 view .LVU291 + 1202 .LBB92: + 1203 .LBI92: +3658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1204 .loc 3 3658 25 view .LVU292 + 1205 .LBB93: + 1206 .loc 3 3660 3 view .LVU293 + 1207 .loc 3 3660 20 is_stmt 0 view .LVU294 + 1208 0074 144B ldr r3, .L89 + 1209 0076 5B6A ldr r3, [r3, #36] + 1210 .LVL30: + 1211 .loc 3 3660 20 view .LVU295 + 1212 .LBE93: + 1213 .LBE92: + 267:Src/stm32f7xx_it.c **** } + 1214 .loc 1 267 11 view .LVU296 + 1215 0078 9DF80720 ldrb r2, [sp, #7] @ zero_extendqisi2 + 1216 007c 52FA83F3 uxtab r3, r2, r3 + 1217 0080 DBB2 uxtb r3, r3 + 1218 0082 8DF80730 strb r3, [sp, #7] + 1219 .L73: + 301:Src/stm32f7xx_it.c **** + 1220 .loc 1 301 1 view .LVU297 + 1221 0086 03B0 add sp, sp, #12 + 1222 .LCFI9: + 1223 .cfi_remember_state + 1224 .cfi_def_cfa_offset 4 + 1225 @ sp needed + 1226 0088 5DF804FB ldr pc, [sp], #4 + 1227 .LVL31: + 1228 .L77: + 1229 .LCFI10: + 1230 .cfi_restore_state + 272:Src/stm32f7xx_it.c **** } + 1231 .loc 1 272 7 is_stmt 1 view .LVU298 + 1232 .LBB94: + 1233 .LBI94: +3658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1234 .loc 3 3658 25 view .LVU299 + 1235 .LBB95: + 1236 .loc 3 3660 3 view .LVU300 + 1237 .loc 3 3660 20 is_stmt 0 view .LVU301 + 1238 008c 0E4B ldr r3, .L89 + 1239 008e 5B6A ldr r3, [r3, #36] + 1240 .LVL32: + 1241 .loc 3 3660 20 view .LVU302 + 1242 .LBE95: + 1243 .LBE94: + 272:Src/stm32f7xx_it.c **** } + 1244 .loc 1 272 11 view .LVU303 + 1245 0090 9DF80720 ldrb r2, [sp, #7] @ zero_extendqisi2 + 1246 0094 52FA83F3 uxtab r3, r2, r3 + ARM GAS /tmp/cc8Pc1nf.s page 184 + + + 1247 0098 DBB2 uxtb r3, r3 + 1248 009a 8DF80730 strb r3, [sp, #7] + 1249 009e F2E7 b .L73 + 1250 .LVL33: + 1251 .L79: + 277:Src/stm32f7xx_it.c **** } + 1252 .loc 1 277 7 is_stmt 1 view .LVU304 + 1253 .LBB96: + 1254 .LBI96: +3658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1255 .loc 3 3658 25 view .LVU305 + 1256 .LBB97: + 1257 .loc 3 3660 3 view .LVU306 + 1258 .loc 3 3660 20 is_stmt 0 view .LVU307 + 1259 00a0 094B ldr r3, .L89 + 1260 00a2 5B6A ldr r3, [r3, #36] + 1261 .LVL34: + 1262 .loc 3 3660 20 view .LVU308 + 1263 .LBE97: + 1264 .LBE96: + 277:Src/stm32f7xx_it.c **** } + 1265 .loc 1 277 11 view .LVU309 + 1266 00a4 9DF80720 ldrb r2, [sp, #7] @ zero_extendqisi2 + 1267 00a8 52FA83F3 uxtab r3, r2, r3 + 1268 00ac DBB2 uxtb r3, r3 + 1269 00ae 8DF80730 strb r3, [sp, #7] + 1270 00b2 E8E7 b .L73 + 1271 .LVL35: + 1272 .L81: + 282:Src/stm32f7xx_it.c **** } + 1273 .loc 1 282 7 is_stmt 1 view .LVU310 + 1274 .LBB98: + 1275 .LBI98: +3658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 1276 .loc 3 3658 25 view .LVU311 + 1277 .LBB99: + 1278 .loc 3 3660 3 view .LVU312 + 1279 .loc 3 3660 20 is_stmt 0 view .LVU313 + 1280 00b4 044B ldr r3, .L89 + 1281 00b6 5B6A ldr r3, [r3, #36] + 1282 .LVL36: + 1283 .loc 3 3660 20 view .LVU314 + 1284 .LBE99: + 1285 .LBE98: + 282:Src/stm32f7xx_it.c **** } + 1286 .loc 1 282 11 view .LVU315 + 1287 00b8 9DF80720 ldrb r2, [sp, #7] @ zero_extendqisi2 + 1288 00bc 52FA83F3 uxtab r3, r2, r3 + 1289 00c0 DBB2 uxtb r3, r3 + 1290 00c2 8DF80730 strb r3, [sp, #7] + 1291 00c6 DEE7 b .L73 + 1292 .L90: + 1293 .align 2 + 1294 .L89: + 1295 00c8 00100140 .word 1073811456 + 1296 00cc 00140140 .word 1073812480 + 1297 .cfi_endproc + ARM GAS /tmp/cc8Pc1nf.s page 185 + + + 1298 .LFE1195: + 1300 .section .text.DMA2_Stream7_TransferComplete,"ax",%progbits + 1301 .align 1 + 1302 .global DMA2_Stream7_TransferComplete + 1303 .syntax unified + 1304 .thumb + 1305 .thumb_func + 1306 .fpu fpv5-d16 + 1308 DMA2_Stream7_TransferComplete: + 1309 .LFB1201: + 489:Src/stm32f7xx_it.c **** + 490:Src/stm32f7xx_it.c **** //----------------------------------------------- + 491:Src/stm32f7xx_it.c **** void DMA2_Stream7_TransferComplete(void) + 492:Src/stm32f7xx_it.c **** { + 1310 .loc 1 492 1 is_stmt 1 view -0 + 1311 .cfi_startproc + 1312 @ args = 0, pretend = 0, frame = 0 + 1313 @ frame_needed = 0, uses_anonymous_args = 0 + 1314 @ link register save eliminated. + 493:Src/stm32f7xx_it.c **** LL_DMA_ClearFlag_TC7(DMA2); + 1315 .loc 1 493 3 view .LVU317 + 1316 .LVL37: + 1317 .LBB100: + 1318 .LBI100: + 1319 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @file stm32f7xx_ll_dma.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Header file of DMA LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * This software is licensed under terms that can be found in the LICENSE file in + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #ifndef __STM32F7xx_LL_DMA_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __STM32F7xx_LL_DMA_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 186 + + + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined (DMA1) || defined (DMA2) + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL DMA + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Private_Variables DMA Private Variables + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Array used to get the DMA stream register offset versus stream index LL_DMA_STREAM_x */ + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** static const uint8_t STREAM_OFFSET_TAB[] = + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream0_BASE - DMA1_BASE), + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream1_BASE - DMA1_BASE), + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream2_BASE - DMA1_BASE), + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream3_BASE - DMA1_BASE), + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream4_BASE - DMA1_BASE), + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream5_BASE - DMA1_BASE), + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream6_BASE - DMA1_BASE), + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream7_BASE - DMA1_BASE) + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** }; + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private constants ---------------------------------------------------------*/ + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Private_Constants DMA Private Constants + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined(DMA_SxCR_CHSEL_3) + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define DMA_CHANNEL_SELECTION_8_15 + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif /* DMA_SxCR_CHSEL_3 */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private macros ------------------------------------------------------------*/ + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported types ------------------------------------------------------------*/ + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined(USE_FULL_LL_DRIVER) + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** typedef struct + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** or as Source base address in case of memory to memory trans + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter must be a value between Min_Data = 0 and Max + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** or as Destination base address in case of memory to memory + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + ARM GAS /tmp/cc8Pc1nf.s page 187 + + + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter must be a value between Min_Data = 0 and Max + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Direction; /*!< Specifies if the data will be transferred from memory to pe + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** from memory to memory or from peripheral to memory. + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_DIRECTION + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Mode; /*!< Specifies the normal or circular operation mode. + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MODE + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The circular buffer mode cannot be used if the memory + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** data transfer direction is configured on the selected + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** is incremented or not. + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PERIPH + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** is incremented or not. + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MEMORY + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** in case of memory to memory transfer direction. + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination dat + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** in case of memory to memory transfer direction. + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** The data unit is equal to the source buffer configuration s + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** or MemorySize parameters depending in the transfer directio + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter must be a value between Min_Data = 0 and Max + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Channel; /*!< Specifies the peripheral channel. + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_CHANNEL + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Priority; /*!< Specifies the channel priority level. + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PRIORITY + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t FIFOMode; /*!< Specifies if the FIFO mode or Direct mode will be used for + ARM GAS /tmp/cc8Pc1nf.s page 188 + + + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_FIFOMODE + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The Direct mode (FIFO mode disabled) cannot be used i + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** memory-to-memory data transfer is configured on the selecte + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t FIFOThreshold; /*!< Specifies the FIFO threshold level. + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_FIFOTHRESHO + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemBurst; /*!< Specifies the Burst transfer configuration for the memory t + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** It specifies the amount of data to be transferred in a sing + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** transaction. + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MBURST + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The burst mode is possible only if the address Increm + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphBurst; /*!< Specifies the Burst transfer configuration for the peripher + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** It specifies the amount of data to be transferred in a sing + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** transaction. + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PBURST + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The burst mode is possible only if the address Increm + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } LL_DMA_InitTypeDef; + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif /*USE_FULL_LL_DRIVER*/ + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported constants --------------------------------------------------------*/ + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_STREAM STREAM + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_0 0x00000000U + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_1 0x00000001U + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_2 0x00000002U + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_3 0x00000003U + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_4 0x00000004U + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_5 0x00000005U + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_6 0x00000006U + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_7 0x00000007U + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_ALL 0xFFFF0000U + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_DIRECTION DIRECTION + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direc + ARM GAS /tmp/cc8Pc1nf.s page 189 + + + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_SxCR_DIR_0 /*!< Memory to peripheral direc + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_SxCR_DIR_1 /*!< Memory to memory direction + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MODE MODE + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MODE_CIRCULAR DMA_SxCR_CIRC /*!< Circular Mode + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MODE_PFCTRL DMA_SxCR_PFCTRL /*!< Peripheral flow control mo + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_DOUBLEBUFFER_MODE DOUBLE BUFFER MODE + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DOUBLEBUFFER_MODE_DISABLE 0x00000000U /*!< Disable double buffering m + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DOUBLEBUFFER_MODE_ENABLE DMA_SxCR_DBM /*!< Enable double buffering mo + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PERIPH PERIPH + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PERIPH_INCREMENT DMA_SxCR_PINC /*!< Peripheral increment mode + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MEMORY MEMORY + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disa + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MEMORY_INCREMENT DMA_SxCR_MINC /*!< Memory increment mode Enab + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PDATAALIGN PDATAALIGN + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PDATAALIGN_HALFWORD DMA_SxCR_PSIZE_0 /*!< Peripheral data alignment + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PDATAALIGN_WORD DMA_SxCR_PSIZE_1 /*!< Peripheral data alignment + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MDATAALIGN MDATAALIGN + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : By + ARM GAS /tmp/cc8Pc1nf.s page 190 + + + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MDATAALIGN_HALFWORD DMA_SxCR_MSIZE_0 /*!< Memory data alignment : Ha + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MDATAALIGN_WORD DMA_SxCR_MSIZE_1 /*!< Memory data alignment : Wo + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_OFFSETSIZE OFFSETSIZE + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_OFFSETSIZE_PSIZE 0x00000000U /*!< Peripheral increment offse + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_OFFSETSIZE_FIXEDTO4 DMA_SxCR_PINCOS /*!< Peripheral increment offse + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PRIORITY PRIORITY + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_MEDIUM DMA_SxCR_PL_0 /*!< Priority level : Medium + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_HIGH DMA_SxCR_PL_1 /*!< Priority level : High + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_VERYHIGH DMA_SxCR_PL /*!< Priority level : Very_High + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_CHANNEL CHANNEL + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_0 0x00000000U + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_1 DMA_SxCR_CHSEL_0 + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_2 DMA_SxCR_CHSEL_1 + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_3 (DMA_SxCR_CHSEL_0 | DMA_SxCR_CHSEL_1) + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_4 DMA_SxCR_CHSEL_2 + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_5 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_0) + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_6 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1) + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_7 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0) + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined(DMA_CHANNEL_SELECTION_8_15) + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_8 DMA_SxCR_CHSEL_3 + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_9 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_0) + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_10 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_1) + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_11 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0) + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_12 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2) + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_13 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_0) + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_14 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1) + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_15 DMA_SxCR_CHSEL + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif /* DMA_CHANNEL_SELECTION_8_15 */ + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MBURST MBURST + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_SINGLE 0x00000000U /*!< Memory burst + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_INC4 DMA_SxCR_MBURST_0 /*!< Memory burst + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_INC8 DMA_SxCR_MBURST_1 /*!< Memory burst + ARM GAS /tmp/cc8Pc1nf.s page 191 + + + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_INC16 (DMA_SxCR_MBURST_0 | DMA_SxCR_MBURST_1) /*!< Memory burst + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PBURST PBURST + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_SINGLE 0x00000000U /*!< Peripheral b + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_INC4 DMA_SxCR_PBURST_0 /*!< Peripheral b + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_INC8 DMA_SxCR_PBURST_1 /*!< Peripheral b + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_INC16 (DMA_SxCR_PBURST_0 | DMA_SxCR_PBURST_1) /*!< Peripheral b + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_FIFOMODE DMA_LL_FIFOMODE + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode di + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOMODE_ENABLE DMA_SxFCR_DMDIS /*!< FIFO mode en + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_FIFOSTATUS_0 FIFOSTATUS 0 + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_0_25 0x00000000U /*!< 0 < fifo_lev + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_25_50 DMA_SxFCR_FS_0 /*!< 1/4 < fifo_l + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_50_75 DMA_SxFCR_FS_1 /*!< 1/2 < fifo_l + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_75_100 (DMA_SxFCR_FS_1 | DMA_SxFCR_FS_0) /*!< 3/4 < fifo_l + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_EMPTY DMA_SxFCR_FS_2 /*!< FIFO is empt + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_FULL (DMA_SxFCR_FS_2 | DMA_SxFCR_FS_0) /*!< FIFO is full + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_FIFOTHRESHOLD FIFOTHRESHOLD + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_1_4 0x00000000U /*!< FIFO thresho + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_1_2 DMA_SxFCR_FTH_0 /*!< FIFO thresho + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_3_4 DMA_SxFCR_FTH_1 /*!< FIFO thresho + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_FULL DMA_SxFCR_FTH /*!< FIFO thresho + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_CURRENTTARGETMEM CURRENTTARGETMEM + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CURRENTTARGETMEM0 0x00000000U /*!< Set CurrentT + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CURRENTTARGETMEM1 DMA_SxCR_CT /*!< Set CurrentT + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 192 + + + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported macro ------------------------------------------------------------*/ + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Write a value in DMA register + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __INSTANCE__ DMA Instance + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __REG__ Register to be written + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __VALUE__ Value to be written in the register + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Read a value in DMA register + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __INSTANCE__ DMA Instance + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __REG__ Register to be read + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Register value + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxStreamy + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Convert DMAx_Streamy into DMAx + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __STREAM_INSTANCE__ DMAx_Streamy + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval DMAx + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __LL_DMA_GET_INSTANCE(__STREAM_INSTANCE__) \ + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__STREAM_INSTANCE__) > ((uint32_t)DMA1_Stream7)) ? DMA2 : DMA1) + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Convert DMAx_Streamy into LL_DMA_STREAM_y + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __STREAM_INSTANCE__ DMAx_Streamy + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval LL_DMA_CHANNEL_y + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __LL_DMA_GET_STREAM(__STREAM_INSTANCE__) \ + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream0)) ? LL_DMA_STREAM_0 : \ + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream0)) ? LL_DMA_STREAM_0 : \ + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream1)) ? LL_DMA_STREAM_1 : \ + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream1)) ? LL_DMA_STREAM_1 : \ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream2)) ? LL_DMA_STREAM_2 : \ + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream2)) ? LL_DMA_STREAM_2 : \ + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream3)) ? LL_DMA_STREAM_3 : \ + ARM GAS /tmp/cc8Pc1nf.s page 193 + + + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream3)) ? LL_DMA_STREAM_3 : \ + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream4)) ? LL_DMA_STREAM_4 : \ + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream4)) ? LL_DMA_STREAM_4 : \ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream5)) ? LL_DMA_STREAM_5 : \ + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream5)) ? LL_DMA_STREAM_5 : \ + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream6)) ? LL_DMA_STREAM_6 : \ + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream6)) ? LL_DMA_STREAM_6 : \ + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** LL_DMA_STREAM_7) + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Convert DMA Instance DMAx and LL_DMA_STREAM_y into DMAx_Streamy + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __DMA_INSTANCE__ DMAx + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __STREAM__ LL_DMA_STREAM_y + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval DMAx_Streamy + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __LL_DMA_GET_STREAM_INSTANCE(__DMA_INSTANCE__, __STREAM__) \ + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** DMA2_Stream7) + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported functions --------------------------------------------------------*/ + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EF_Configuration Configuration + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable DMA stream. + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR EN LL_DMA_EnableStream + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + ARM GAS /tmp/cc8Pc1nf.s page 194 + + + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableStream(DMA_TypeDef *DMAx, uint32_t Stream) + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Disable DMA stream. + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR EN LL_DMA_DisableStream + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_DisableStream(DMA_TypeDef *DMAx, uint32_t Stream) + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Check if DMA stream is enabled or disabled. + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR EN LL_DMA_IsEnabledStream + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsEnabledStream(DMA_TypeDef *DMAx, uint32_t Stream) + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Configure all parameters linked to DMA transfer. + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DIR LL_DMA_ConfigTransfer\n + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR CIRC LL_DMA_ConfigTransfer\n + ARM GAS /tmp/cc8Pc1nf.s page 195 + + + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PINC LL_DMA_ConfigTransfer\n + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR MINC LL_DMA_ConfigTransfer\n + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PSIZE LL_DMA_ConfigTransfer\n + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR MSIZE LL_DMA_ConfigTransfer\n + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PL LL_DMA_ConfigTransfer\n + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PFCTRL LL_DMA_ConfigTransfer + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Configuration This parameter must be a combination of all the following values: + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH o + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR or @ref LL_DMA_MODE_PFCTRL + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDAT + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDAT + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HI + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** *@retval None + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Configurati + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_Sx + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** Configuration); + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Data transfer direction (read from peripheral or from memory). + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DIR LL_DMA_SetDataTransferDirection + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Direction This parameter can be one of the following values: + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + ARM GAS /tmp/cc8Pc1nf.s page 196 + + + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Data transfer direction (read from peripheral or from memory). + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DIR LL_DMA_GetDataTransferDirection + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream) + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set DMA mode normal, circular or peripheral flow control. + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CIRC LL_DMA_SetMode\n + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PFCTRL LL_DMA_SetMode + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Mode This parameter can be one of the following values: + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_NORMAL + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_CIRCULAR + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_PFCTRL + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mode) + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get DMA mode normal, circular or peripheral flow control. + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CIRC LL_DMA_GetMode\n + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PFCTRL LL_DMA_GetMode + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + ARM GAS /tmp/cc8Pc1nf.s page 197 + + + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_NORMAL + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_CIRCULAR + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_PFCTRL + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Stream) + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral increment mode. + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINC LL_DMA_SetPeriphIncMode + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param IncrementMode This parameter can be one of the following values: + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_NOINCREMENT + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_INCREMENT + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Increment + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral increment mode. + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINC LL_DMA_GetPeriphIncMode + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_NOINCREMENT + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_INCREMENT + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream) + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 198 + + + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory increment mode. + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MINC LL_DMA_SetMemoryIncMode + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param IncrementMode This parameter can be one of the following values: + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_NOINCREMENT + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_INCREMENT + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Increment + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory increment mode. + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MINC LL_DMA_GetMemoryIncMode + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_NOINCREMENT + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_INCREMENT + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream) + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral size. + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PSIZE LL_DMA_SetPeriphSize + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + ARM GAS /tmp/cc8Pc1nf.s page 199 + + + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Size This parameter can be one of the following values: + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_BYTE + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_WORD + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral size. + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PSIZE LL_DMA_GetPeriphSize + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_BYTE + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_WORD + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream) + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory size. + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MSIZE LL_DMA_SetMemorySize + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Size This parameter can be one of the following values: + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_BYTE + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_WORD + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 200 + + + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory size. + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MSIZE LL_DMA_GetMemorySize + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_BYTE + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_WORD + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream) + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral increment offset size. + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINCOS LL_DMA_SetIncOffsetSize + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param OffsetSize This parameter can be one of the following values: + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_PSIZE + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4 + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t OffsetSiz + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral increment offset size. + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINCOS LL_DMA_GetIncOffsetSize + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + ARM GAS /tmp/cc8Pc1nf.s page 201 + + + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_PSIZE + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4 + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream) + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Stream priority level. + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PL LL_DMA_SetStreamPriorityLevel + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Priority This parameter can be one of the following values: + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_LOW + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_MEDIUM + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_HIGH + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_VERYHIGH + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pr + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream priority level. + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PL LL_DMA_GetStreamPriorityLevel + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_LOW + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_MEDIUM + ARM GAS /tmp/cc8Pc1nf.s page 202 + + + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_HIGH + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_VERYHIGH + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream) + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Number of data to transfer. + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll NDTR NDT LL_DMA_SetDataLength + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This action has no effect if + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * stream is enabled. + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param NbData Between 0 to 0xFFFFFFFF + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t NbData) + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->NDTR, + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Number of data to transfer. + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll NDTR NDT LL_DMA_GetDataLength + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Once the stream is enabled, the return value indicate the + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * remaining bytes to be transmitted. + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef* DMAx, uint32_t Stream) + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Select Channel number associated to the Stream. +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CHSEL LL_DMA_SetChannelSelection +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + ARM GAS /tmp/cc8Pc1nf.s page 203 + + +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Channel This parameter can be one of the following values: +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_0 +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_1 +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_2 +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_3 +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_4 +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_5 +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_6 +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_7 +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_8 (*) +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_9 (*) +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_10 (*) +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_11 (*) +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_12 (*) +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_13 (*) +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_14 (*) +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_15 (*) +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * (*) value not defined in all devices. +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetChannelSelection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Channe +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Channel number associated to the Stream. +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CHSEL LL_DMA_GetChannelSelection +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_0 +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_1 +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_2 +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_3 +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_4 +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_5 +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_6 +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_7 + ARM GAS /tmp/cc8Pc1nf.s page 204 + + +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_8 (*) +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_9 (*) +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_10 (*) +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_11 (*) +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_12 (*) +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_13 (*) +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_14 (*) +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_15 (*) +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * (*) value not defined in all devices. +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetChannelSelection(DMA_TypeDef *DMAx, uint32_t Stream) +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory burst transfer configuration. +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MBURST LL_DMA_SetMemoryBurstxfer +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Mburst This parameter can be one of the following values: +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_SINGLE +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC4 +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC8 +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC16 +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mburst) +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory burst transfer configuration. +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MBURST LL_DMA_GetMemoryBurstxfer +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_SINGLE +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC4 + ARM GAS /tmp/cc8Pc1nf.s page 205 + + +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC8 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC16 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream) +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral burst transfer configuration. +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PBURST LL_DMA_SetPeriphBurstxfer +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Pburst This parameter can be one of the following values: +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_SINGLE +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC4 +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC8 +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC16 +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pburst) +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral burst transfer configuration. +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PBURST LL_DMA_GetPeriphBurstxfer +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_SINGLE +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC4 +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC8 +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC16 +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream) +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + ARM GAS /tmp/cc8Pc1nf.s page 206 + + +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0. +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CT LL_DMA_SetCurrentTargetMem +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param CurrentMemory This parameter can be one of the following values: +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM0 +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM1 +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Curren +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0. +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CT LL_DMA_GetCurrentTargetMem +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM0 +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM1 +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream) +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable the double buffer mode. +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DBM LL_DMA_EnableDoubleBufferMode +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + ARM GAS /tmp/cc8Pc1nf.s page 207 + + +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Disable the double buffer mode. +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DBM LL_DMA_DisableDoubleBufferMode +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get FIFO status. +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FS LL_DMA_GetFIFOStatus +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_0_25 +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_25_50 +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_50_75 +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_75_100 +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_EMPTY +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_FULL +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(DMA_TypeDef *DMAx, uint32_t Stream) +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Disable Fifo mode. +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR DMDIS LL_DMA_DisableFifoMode + ARM GAS /tmp/cc8Pc1nf.s page 208 + + +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_DisableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable Fifo mode. +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR DMDIS LL_DMA_EnableFifoMode +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DM +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Select FIFO threshold. +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FTH LL_DMA_SetFIFOThreshold +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Threshold This parameter can be one of the following values: +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 209 + + +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Threshold +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get FIFO threshold. +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FTH LL_DMA_GetFIFOThreshold +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream) +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Configure the FIFO . +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FTH LL_DMA_ConfigFifo\n +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * FCR DMDIS LL_DMA_ConfigFifo +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param FifoMode This parameter can be one of the following values: +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOMODE_ENABLE +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOMODE_DISABLE +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param FifoThreshold This parameter can be one of the following values: +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ConfigFifo(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t FifoMode, uint3 +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + ARM GAS /tmp/cc8Pc1nf.s page 210 + + +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Configure the Source and Destination addresses. +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA stream is enabled. +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_ConfigAddresses\n +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * PAR PA LL_DMA_ConfigAddresses +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param SrcAddress Between 0 to 0xFFFFFFFF +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DstAddress Between 0 to 0xFFFFFFFF +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Direction This parameter can be one of the following values: +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t SrcAddress +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Direction Memory to Periph */ +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Direction Periph to Memory and Memory to Memory */ +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** else +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set the Memory address. +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_SetMemoryAddress +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMO +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA channel is enabled. +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param MemoryAddress Between 0 to 0xFFFFFFFF +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + ARM GAS /tmp/cc8Pc1nf.s page 211 + + +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAdd +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR, +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set the Peripheral address. +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll PAR PA LL_DMA_SetPeriphAddress +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMO +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA channel is enabled. +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param PeriphAddress Between 0 to 0xFFFFFFFF +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t PeriphAdd +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, P +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Memory address. +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_GetMemoryAddress +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMO +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef* DMAx, uint32_t Stream) +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Peripheral address. +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll PAR PA LL_DMA_GetPeriphAddress +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMO +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + ARM GAS /tmp/cc8Pc1nf.s page 212 + + +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef* DMAx, uint32_t Stream) +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_REG(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream]))) +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set the Memory to Memory Source address. +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll PAR PA LL_DMA_SetM2MSrcAddress +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA channel is enabled. +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param MemoryAddress Between 0 to 0xFFFFFFFF +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAdd +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, M +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set the Memory to Memory Destination address. +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_SetM2MDstAddress +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA channel is enabled. +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param MemoryAddress Between 0 to 0xFFFFFFFF +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAdd +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 213 + + +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Memory to Memory Source address. +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll PAR PA LL_DMA_GetM2MSrcAddress +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef* DMAx, uint32_t Stream) +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_REG(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])) +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Memory to Memory Destination address. +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_GetM2MDstAddress +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef* DMAx, uint32_t Stream) +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))-> +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory 1 address (used in case of Double buffer mode). +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M1AR M1A LL_DMA_SetMemory1Address +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + ARM GAS /tmp/cc8Pc1nf.s page 214 + + +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Address Between 0 to 0xFFFFFFFF +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Address) +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M1AR, +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory 1 address (used in case of Double buffer mode). +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M1AR M1A LL_DMA_GetMemory1Address +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream) +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M1AR); +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 0 half transfer flag. +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR HTIF0 LL_DMA_IsActiveFlag_HT0 +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT0(DMA_TypeDef *DMAx) +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF0)==(DMA_LISR_HTIF0)); +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 1 half transfer flag. +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR HTIF1 LL_DMA_IsActiveFlag_HT1 +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF1)==(DMA_LISR_HTIF1)); + ARM GAS /tmp/cc8Pc1nf.s page 215 + + +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 2 half transfer flag. +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR HTIF2 LL_DMA_IsActiveFlag_HT2 +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF2)==(DMA_LISR_HTIF2)); +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 3 half transfer flag. +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR HTIF3 LL_DMA_IsActiveFlag_HT3 +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_HTIF3)==(DMA_LISR_HTIF3)); +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 4 half transfer flag. +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR HTIF4 LL_DMA_IsActiveFlag_HT4 +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF4)==(DMA_HISR_HTIF4)); +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 5 half transfer flag. +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR HTIF0 LL_DMA_IsActiveFlag_HT5 +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF5)==(DMA_HISR_HTIF5)); +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 6 half transfer flag. +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR HTIF6 LL_DMA_IsActiveFlag_HT6 +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF6)==(DMA_HISR_HTIF6)); +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + ARM GAS /tmp/cc8Pc1nf.s page 216 + + +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 7 half transfer flag. +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR HTIF7 LL_DMA_IsActiveFlag_HT7 +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_HTIF7)==(DMA_HISR_HTIF7)); +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 0 transfer complete flag. +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TCIF0 LL_DMA_IsActiveFlag_TC0 +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC0(DMA_TypeDef *DMAx) +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF0)==(DMA_LISR_TCIF0)); +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 1 transfer complete flag. +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TCIF1 LL_DMA_IsActiveFlag_TC1 +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF1)==(DMA_LISR_TCIF1)); +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 2 transfer complete flag. +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TCIF2 LL_DMA_IsActiveFlag_TC2 +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF2)==(DMA_LISR_TCIF2)); +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 3 transfer complete flag. +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TCIF3 LL_DMA_IsActiveFlag_TC3 +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TCIF3)==(DMA_LISR_TCIF3)); +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 4 transfer complete flag. + ARM GAS /tmp/cc8Pc1nf.s page 217 + + +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TCIF4 LL_DMA_IsActiveFlag_TC4 +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF4)==(DMA_HISR_TCIF4)); +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 5 transfer complete flag. +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TCIF0 LL_DMA_IsActiveFlag_TC5 +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF5)==(DMA_HISR_TCIF5)); +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 6 transfer complete flag. +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TCIF6 LL_DMA_IsActiveFlag_TC6 +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF6)==(DMA_HISR_TCIF6)); +1829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 7 transfer complete flag. +1833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TCIF7 LL_DMA_IsActiveFlag_TC7 +1834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) +1838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TCIF7)==(DMA_HISR_TCIF7)); +1840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 0 transfer error flag. +1844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TEIF0 LL_DMA_IsActiveFlag_TE0 +1845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE0(DMA_TypeDef *DMAx) +1849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF0)==(DMA_LISR_TEIF0)); +1851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 1 transfer error flag. +1855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TEIF1 LL_DMA_IsActiveFlag_TE1 +1856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + ARM GAS /tmp/cc8Pc1nf.s page 218 + + +1857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) +1860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF1)==(DMA_LISR_TEIF1)); +1862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 2 transfer error flag. +1866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TEIF2 LL_DMA_IsActiveFlag_TE2 +1867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) +1871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF2)==(DMA_LISR_TEIF2)); +1873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 3 transfer error flag. +1877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR TEIF3 LL_DMA_IsActiveFlag_TE3 +1878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) +1882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_TEIF3)==(DMA_LISR_TEIF3)); +1884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 4 transfer error flag. +1888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TEIF4 LL_DMA_IsActiveFlag_TE4 +1889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) +1893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF4)==(DMA_HISR_TEIF4)); +1895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 5 transfer error flag. +1899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TEIF0 LL_DMA_IsActiveFlag_TE5 +1900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) +1904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF5)==(DMA_HISR_TEIF5)); +1906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 6 transfer error flag. +1910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TEIF6 LL_DMA_IsActiveFlag_TE6 +1911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + ARM GAS /tmp/cc8Pc1nf.s page 219 + + +1914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) +1915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF6)==(DMA_HISR_TEIF6)); +1917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 7 transfer error flag. +1921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR TEIF7 LL_DMA_IsActiveFlag_TE7 +1922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) +1926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_TEIF7)==(DMA_HISR_TEIF7)); +1928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 0 direct mode error flag. +1932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR DMEIF0 LL_DMA_IsActiveFlag_DME0 +1933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME0(DMA_TypeDef *DMAx) +1937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF0)==(DMA_LISR_DMEIF0)); +1939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 1 direct mode error flag. +1943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR DMEIF1 LL_DMA_IsActiveFlag_DME1 +1944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME1(DMA_TypeDef *DMAx) +1948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF1)==(DMA_LISR_DMEIF1)); +1950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 2 direct mode error flag. +1954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR DMEIF2 LL_DMA_IsActiveFlag_DME2 +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME2(DMA_TypeDef *DMAx) +1959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF2)==(DMA_LISR_DMEIF2)); +1961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 3 direct mode error flag. +1965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR DMEIF3 LL_DMA_IsActiveFlag_DME3 +1966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME3(DMA_TypeDef *DMAx) +1970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + ARM GAS /tmp/cc8Pc1nf.s page 220 + + +1971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_DMEIF3)==(DMA_LISR_DMEIF3)); +1972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 4 direct mode error flag. +1976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR DMEIF4 LL_DMA_IsActiveFlag_DME4 +1977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME4(DMA_TypeDef *DMAx) +1981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF4)==(DMA_HISR_DMEIF4)); +1983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 5 direct mode error flag. +1987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR DMEIF0 LL_DMA_IsActiveFlag_DME5 +1988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +1990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME5(DMA_TypeDef *DMAx) +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF5)==(DMA_HISR_DMEIF5)); +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 6 direct mode error flag. +1998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR DMEIF6 LL_DMA_IsActiveFlag_DME6 +1999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME6(DMA_TypeDef *DMAx) +2003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF6)==(DMA_HISR_DMEIF6)); +2005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 7 direct mode error flag. +2009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR DMEIF7 LL_DMA_IsActiveFlag_DME7 +2010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME7(DMA_TypeDef *DMAx) +2014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_DMEIF7)==(DMA_HISR_DMEIF7)); +2016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 0 FIFO error flag. +2020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR FEIF0 LL_DMA_IsActiveFlag_FE0 +2021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE0(DMA_TypeDef *DMAx) +2025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF0)==(DMA_LISR_FEIF0)); +2027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + ARM GAS /tmp/cc8Pc1nf.s page 221 + + +2028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 1 FIFO error flag. +2031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR FEIF1 LL_DMA_IsActiveFlag_FE1 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE1(DMA_TypeDef *DMAx) +2036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF1)==(DMA_LISR_FEIF1)); +2038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 2 FIFO error flag. +2042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR FEIF2 LL_DMA_IsActiveFlag_FE2 +2043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE2(DMA_TypeDef *DMAx) +2047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF2)==(DMA_LISR_FEIF2)); +2049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 3 FIFO error flag. +2053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LISR FEIF3 LL_DMA_IsActiveFlag_FE3 +2054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE3(DMA_TypeDef *DMAx) +2058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->LISR ,DMA_LISR_FEIF3)==(DMA_LISR_FEIF3)); +2060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 4 FIFO error flag. +2064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR FEIF4 LL_DMA_IsActiveFlag_FE4 +2065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE4(DMA_TypeDef *DMAx) +2069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF4)==(DMA_HISR_FEIF4)); +2071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 5 FIFO error flag. +2075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR FEIF0 LL_DMA_IsActiveFlag_FE5 +2076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE5(DMA_TypeDef *DMAx) +2080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF5)==(DMA_HISR_FEIF5)); +2082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 222 + + +2085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 6 FIFO error flag. +2086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR FEIF6 LL_DMA_IsActiveFlag_FE6 +2087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE6(DMA_TypeDef *DMAx) +2091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF6)==(DMA_HISR_FEIF6)); +2093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream 7 FIFO error flag. +2097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HISR FEIF7 LL_DMA_IsActiveFlag_FE7 +2098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). +2100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE7(DMA_TypeDef *DMAx) +2102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(DMAx->HISR ,DMA_HISR_FEIF7)==(DMA_HISR_FEIF7)); +2104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 0 half transfer flag. +2108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CHTIF0 LL_DMA_ClearFlag_HT0 +2109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT0(DMA_TypeDef *DMAx) +2113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF0); +2115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 1 half transfer flag. +2119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CHTIF1 LL_DMA_ClearFlag_HT1 +2120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx) +2124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF1); +2126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 2 half transfer flag. +2130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CHTIF2 LL_DMA_ClearFlag_HT2 +2131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx) +2135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF2); +2137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 3 half transfer flag. +2141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CHTIF3 LL_DMA_ClearFlag_HT3 + ARM GAS /tmp/cc8Pc1nf.s page 223 + + +2142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx) +2146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CHTIF3); +2148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 4 half transfer flag. +2152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CHTIF4 LL_DMA_ClearFlag_HT4 +2153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx) +2157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF4); +2159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 5 half transfer flag. +2163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CHTIF5 LL_DMA_ClearFlag_HT5 +2164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx) +2168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF5); +2170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 6 half transfer flag. +2174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CHTIF6 LL_DMA_ClearFlag_HT6 +2175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx) +2179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF6); +2181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 7 half transfer flag. +2185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CHTIF7 LL_DMA_ClearFlag_HT7 +2186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx) +2190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CHTIF7); +2192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 0 transfer complete flag. +2196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTCIF0 LL_DMA_ClearFlag_TC0 +2197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + ARM GAS /tmp/cc8Pc1nf.s page 224 + + +2199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC0(DMA_TypeDef *DMAx) +2201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF0); +2203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 1 transfer complete flag. +2207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTCIF1 LL_DMA_ClearFlag_TC1 +2208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx) +2212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF1); +2214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 2 transfer complete flag. +2218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTCIF2 LL_DMA_ClearFlag_TC2 +2219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx) +2223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF2); +2225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 3 transfer complete flag. +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTCIF3 LL_DMA_ClearFlag_TC3 +2230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx) +2234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTCIF3); +2236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 4 transfer complete flag. +2240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTCIF4 LL_DMA_ClearFlag_TC4 +2241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx) +2245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF4); +2247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 5 transfer complete flag. +2251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTCIF5 LL_DMA_ClearFlag_TC5 +2252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx) + ARM GAS /tmp/cc8Pc1nf.s page 225 + + +2256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF5); +2258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 6 transfer complete flag. +2262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTCIF6 LL_DMA_ClearFlag_TC6 +2263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx) +2267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF6); +2269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 7 transfer complete flag. +2273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTCIF7 LL_DMA_ClearFlag_TC7 +2274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx) + 1320 .loc 5 2277 22 view .LVU318 + 1321 .LBB101: +2278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTCIF7); + 1322 .loc 5 2279 3 view .LVU319 + 1323 0000 024B ldr r3, .L92 + 1324 0002 4FF00062 mov r2, #134217728 + 1325 0006 DA60 str r2, [r3, #12] + 1326 .LVL38: + 1327 .loc 5 2279 3 is_stmt 0 view .LVU320 + 1328 .LBE101: + 1329 .LBE100: + 494:Src/stm32f7xx_it.c **** } + 1330 .loc 1 494 1 view .LVU321 + 1331 0008 7047 bx lr + 1332 .L93: + 1333 000a 00BF .align 2 + 1334 .L92: + 1335 000c 00640240 .word 1073898496 + 1336 .cfi_endproc + 1337 .LFE1201: + 1339 .section .text.DMA2_Stream7_IRQHandler,"ax",%progbits + 1340 .align 1 + 1341 .global DMA2_Stream7_IRQHandler + 1342 .syntax unified + 1343 .thumb + 1344 .thumb_func + 1345 .fpu fpv5-d16 + 1347 DMA2_Stream7_IRQHandler: + 1348 .LFB1199: + 360:Src/stm32f7xx_it.c **** /* USER CODE BEGIN DMA2_Stream7_IRQn 0 */ + 1349 .loc 1 360 1 is_stmt 1 view -0 + 1350 .cfi_startproc + 1351 @ args = 0, pretend = 0, frame = 0 + 1352 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/cc8Pc1nf.s page 226 + + + 1353 0000 08B5 push {r3, lr} + 1354 .LCFI11: + 1355 .cfi_def_cfa_offset 8 + 1356 .cfi_offset 3, -8 + 1357 .cfi_offset 14, -4 + 362:Src/stm32f7xx_it.c **** { + 1358 .loc 1 362 3 view .LVU323 + 1359 .LVL39: + 1360 .LBB102: + 1361 .LBI102: +1837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 1362 .loc 5 1837 26 view .LVU324 + 1363 .LBB103: +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 1364 .loc 5 1839 3 view .LVU325 +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 1365 .loc 5 1839 11 is_stmt 0 view .LVU326 + 1366 0002 0A4B ldr r3, .L99 + 1367 0004 5B68 ldr r3, [r3, #4] + 1368 .LVL40: +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 1369 .loc 5 1839 11 view .LVU327 + 1370 .LBE103: + 1371 .LBE102: + 362:Src/stm32f7xx_it.c **** { + 1372 .loc 1 362 5 view .LVU328 + 1373 0006 13F0006F tst r3, #134217728 + 1374 000a 09D1 bne .L98 + 367:Src/stm32f7xx_it.c **** { + 1375 .loc 1 367 8 is_stmt 1 view .LVU329 + 1376 .LVL41: + 1377 .LBB104: + 1378 .LBI104: +1925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 1379 .loc 5 1925 26 view .LVU330 + 1380 .LBB105: +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 1381 .loc 5 1927 3 view .LVU331 +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 1382 .loc 5 1927 11 is_stmt 0 view .LVU332 + 1383 000c 074B ldr r3, .L99 + 1384 000e 5B68 ldr r3, [r3, #4] + 1385 .LVL42: +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 1386 .loc 5 1927 11 view .LVU333 + 1387 .LBE105: + 1388 .LBE104: + 367:Src/stm32f7xx_it.c **** { + 1389 .loc 1 367 10 view .LVU334 + 1390 0010 13F0007F tst r3, #33554432 + 1391 0014 03D0 beq .L94 + 369:Src/stm32f7xx_it.c **** } + 1392 .loc 1 369 5 is_stmt 1 view .LVU335 + 1393 .LVL43: + 1394 .LBB106: + 1395 .LBI106: +2280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + ARM GAS /tmp/cc8Pc1nf.s page 227 + + +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 0 transfer error flag. +2284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTEIF0 LL_DMA_ClearFlag_TE0 +2285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE0(DMA_TypeDef *DMAx) +2289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF0); +2291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 1 transfer error flag. +2295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTEIF1 LL_DMA_ClearFlag_TE1 +2296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx) +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF1); +2302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 2 transfer error flag. +2306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTEIF2 LL_DMA_ClearFlag_TE2 +2307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx) +2311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF2); +2313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 3 transfer error flag. +2317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll LIFCR CTEIF3 LL_DMA_ClearFlag_TE3 +2318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx) +2322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->LIFCR , DMA_LIFCR_CTEIF3); +2324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 4 transfer error flag. +2328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTEIF4 LL_DMA_ClearFlag_TE4 +2329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx) +2333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF4); +2335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + ARM GAS /tmp/cc8Pc1nf.s page 228 + + +2338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 5 transfer error flag. +2339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTEIF5 LL_DMA_ClearFlag_TE5 +2340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx) +2344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF5); +2346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 6 transfer error flag. +2350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTEIF6 LL_DMA_ClearFlag_TE6 +2351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx) +2355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF6); +2357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +2358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +2359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +2360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Clear Stream 7 transfer error flag. +2361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll HIFCR CTEIF7 LL_DMA_ClearFlag_TE7 +2362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +2363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +2364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +2365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx) + 1396 .loc 5 2365 22 view .LVU336 + 1397 .LBB107: +2366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(DMAx->HIFCR , DMA_HIFCR_CTEIF7); + 1398 .loc 5 2367 3 view .LVU337 + 1399 0016 054B ldr r3, .L99 + 1400 0018 4FF00072 mov r2, #33554432 + 1401 001c DA60 str r2, [r3, #12] + 1402 .LVL44: + 1403 .L94: + 1404 .loc 5 2367 3 is_stmt 0 view .LVU338 + 1405 .LBE107: + 1406 .LBE106: + 376:Src/stm32f7xx_it.c **** + 1407 .loc 1 376 1 view .LVU339 + 1408 001e 08BD pop {r3, pc} + 1409 .L98: + 364:Src/stm32f7xx_it.c **** u_tx_flg = 0;//indicate that transfer compete + 1410 .loc 1 364 5 is_stmt 1 view .LVU340 + 1411 0020 FFF7FEFF bl DMA2_Stream7_TransferComplete + 1412 .LVL45: + 365:Src/stm32f7xx_it.c **** } + 1413 .loc 1 365 5 view .LVU341 + 365:Src/stm32f7xx_it.c **** } + 1414 .loc 1 365 14 is_stmt 0 view .LVU342 + 1415 0024 024B ldr r3, .L99+4 + 1416 0026 0022 movs r2, #0 + 1417 0028 1A70 strb r2, [r3] + 1418 002a F8E7 b .L94 + ARM GAS /tmp/cc8Pc1nf.s page 229 + + + 1419 .L100: + 1420 .align 2 + 1421 .L99: + 1422 002c 00640240 .word 1073898496 + 1423 0030 00000000 .word u_tx_flg + 1424 .cfi_endproc + 1425 .LFE1199: + 1427 .text + 1428 .Letext0: + 1429 .file 6 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 1430 .file 7 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 1431 .file 8 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 1432 .file 9 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 1433 .file 10 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h" + 1434 .file 11 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h" + 1435 .file 12 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h" + 1436 .file 13 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 1437 .file 14 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h" + 1438 .file 15 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h" + ARM GAS /tmp/cc8Pc1nf.s page 230 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_it.c + /tmp/cc8Pc1nf.s:17 .text.NMI_Handler:0000000000000000 $t + /tmp/cc8Pc1nf.s:25 .text.NMI_Handler:0000000000000000 NMI_Handler + /tmp/cc8Pc1nf.s:43 .text.HardFault_Handler:0000000000000000 $t + /tmp/cc8Pc1nf.s:50 .text.HardFault_Handler:0000000000000000 HardFault_Handler + /tmp/cc8Pc1nf.s:67 .text.MemManage_Handler:0000000000000000 $t + /tmp/cc8Pc1nf.s:74 .text.MemManage_Handler:0000000000000000 MemManage_Handler + /tmp/cc8Pc1nf.s:91 .text.BusFault_Handler:0000000000000000 $t + /tmp/cc8Pc1nf.s:98 .text.BusFault_Handler:0000000000000000 BusFault_Handler + /tmp/cc8Pc1nf.s:115 .text.UsageFault_Handler:0000000000000000 $t + /tmp/cc8Pc1nf.s:122 .text.UsageFault_Handler:0000000000000000 UsageFault_Handler + /tmp/cc8Pc1nf.s:139 .text.SVC_Handler:0000000000000000 $t + /tmp/cc8Pc1nf.s:146 .text.SVC_Handler:0000000000000000 SVC_Handler + /tmp/cc8Pc1nf.s:159 .text.DebugMon_Handler:0000000000000000 $t + /tmp/cc8Pc1nf.s:166 .text.DebugMon_Handler:0000000000000000 DebugMon_Handler + /tmp/cc8Pc1nf.s:179 .text.PendSV_Handler:0000000000000000 $t + /tmp/cc8Pc1nf.s:186 .text.PendSV_Handler:0000000000000000 PendSV_Handler + /tmp/cc8Pc1nf.s:199 .text.SysTick_Handler:0000000000000000 $t + /tmp/cc8Pc1nf.s:206 .text.SysTick_Handler:0000000000000000 SysTick_Handler + /tmp/cc8Pc1nf.s:226 .text.ADC_IRQHandler:0000000000000000 $t + /tmp/cc8Pc1nf.s:233 .text.ADC_IRQHandler:0000000000000000 ADC_IRQHandler + /tmp/cc8Pc1nf.s:257 .text.ADC_IRQHandler:0000000000000010 $d + /tmp/cc8Pc1nf.s:263 .text.TIM1_UP_TIM10_IRQHandler:0000000000000000 $t + /tmp/cc8Pc1nf.s:270 .text.TIM1_UP_TIM10_IRQHandler:0000000000000000 TIM1_UP_TIM10_IRQHandler + /tmp/cc8Pc1nf.s:311 .text.TIM1_UP_TIM10_IRQHandler:0000000000000024 $d + /tmp/cc8Pc1nf.s:319 .text.TIM2_IRQHandler:0000000000000000 $t + /tmp/cc8Pc1nf.s:326 .text.TIM2_IRQHandler:0000000000000000 TIM2_IRQHandler + /tmp/cc8Pc1nf.s:339 .text.TIM5_IRQHandler:0000000000000000 $t + /tmp/cc8Pc1nf.s:346 .text.TIM5_IRQHandler:0000000000000000 TIM5_IRQHandler + /tmp/cc8Pc1nf.s:359 .text.TIM6_DAC_IRQHandler:0000000000000000 $t + /tmp/cc8Pc1nf.s:366 .text.TIM6_DAC_IRQHandler:0000000000000000 TIM6_DAC_IRQHandler + /tmp/cc8Pc1nf.s:425 .text.TIM6_DAC_IRQHandler:0000000000000028 $d + /tmp/cc8Pc1nf.s:432 .text.TIM7_IRQHandler:0000000000000000 $t + /tmp/cc8Pc1nf.s:439 .text.TIM7_IRQHandler:0000000000000000 TIM7_IRQHandler + /tmp/cc8Pc1nf.s:488 .text.TIM7_IRQHandler:000000000000001c $d + /tmp/cc8Pc1nf.s:494 .text.UART_RxCpltCallback:0000000000000000 $t + /tmp/cc8Pc1nf.s:501 .text.UART_RxCpltCallback:0000000000000000 UART_RxCpltCallback + /tmp/cc8Pc1nf.s:539 .text.UART_RxCpltCallback:000000000000001a $d + /tmp/cc8Pc1nf.s:571 .text.UART_RxCpltCallback:000000000000005a $t + /tmp/cc8Pc1nf.s:962 .text.UART_RxCpltCallback:0000000000000260 $d + /tmp/cc8Pc1nf.s:977 .text.USART1_IRQHandler:0000000000000000 $t + /tmp/cc8Pc1nf.s:984 .text.USART1_IRQHandler:0000000000000000 USART1_IRQHandler + /tmp/cc8Pc1nf.s:1295 .text.USART1_IRQHandler:00000000000000c8 $d + /tmp/cc8Pc1nf.s:1301 .text.DMA2_Stream7_TransferComplete:0000000000000000 $t + /tmp/cc8Pc1nf.s:1308 .text.DMA2_Stream7_TransferComplete:0000000000000000 DMA2_Stream7_TransferComplete + /tmp/cc8Pc1nf.s:1335 .text.DMA2_Stream7_TransferComplete:000000000000000c $d + /tmp/cc8Pc1nf.s:1340 .text.DMA2_Stream7_IRQHandler:0000000000000000 $t + /tmp/cc8Pc1nf.s:1347 .text.DMA2_Stream7_IRQHandler:0000000000000000 DMA2_Stream7_IRQHandler + /tmp/cc8Pc1nf.s:1422 .text.DMA2_Stream7_IRQHandler:000000000000002c $d + +UNDEFINED SYMBOLS +HAL_IncTick +HAL_ADC_IRQHandler +hadc1 +hadc3 +HAL_TIM_IRQHandler + ARM GAS /tmp/cc8Pc1nf.s page 231 + + +TO10 +TO10_counter +htim10 +TIM10_coflag +HAL_GPIO_TogglePin +TO6 +TO7 +uart_buf +UART_rec_incr +TO6_uart +flg_tmt +UART_header +CPU_state +State_Data +COMMAND +UART_transmission_request +u_tx_flg diff --git a/build/stm32f7xx_it.o b/build/stm32f7xx_it.o new file mode 100644 index 0000000..f961b3c Binary files /dev/null and b/build/stm32f7xx_it.o differ diff --git a/build/stm32f7xx_ll_dma.d b/build/stm32f7xx_ll_dma.d new file mode 100644 index 0000000..49f232a --- /dev/null +++ b/build/stm32f7xx_ll_dma.d @@ -0,0 +1,68 @@ +build/stm32f7xx_ll_dma.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: diff --git a/build/stm32f7xx_ll_dma.lst b/build/stm32f7xx_ll_dma.lst new file mode 100644 index 0000000..643c2ca --- /dev/null +++ b/build/stm32f7xx_ll_dma.lst @@ -0,0 +1,3509 @@ +ARM GAS /tmp/ccmfsuWO.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_ll_dma.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.LL_DMA_DeInit,"ax",%progbits + 17 .align 1 + 18 .global LL_DMA_DeInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 LL_DMA_DeInit: + 26 .LVL0: + 27 .LFB320: + 28 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @file stm32f7xx_ll_dma.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @brief DMA LL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * This software is licensed under terms that can be found in the LICENSE file in + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #if defined(USE_FULL_LL_DRIVER) + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Includes ------------------------------------------------------------------*/ + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #include "stm32f7xx_ll_dma.h" + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #include "stm32f7xx_ll_bus.h" + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #ifdef USE_FULL_ASSERT + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #include "stm32_assert.h" + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #else + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define assert_param(expr) ((void)0U) + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #endif + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /** @addtogroup STM32F7xx_LL_Driver + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @{ + ARM GAS /tmp/ccmfsuWO.s page 2 + + + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #if defined (DMA1) || defined (DMA2) + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /** @defgroup DMA_LL DMA + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @{ + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Private types -------------------------------------------------------------*/ + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Private variables ---------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Private constants ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Private macros ------------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /** @addtogroup DMA_LL_Private_Macros + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @{ + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_DIRECTION(__VALUE__) (((__VALUE__) == LL_DMA_DIRECTION_PERIPH_TO_MEMORY) + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_MEMORY) + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_MODE(__VALUE__) (((__VALUE__) == LL_DMA_MODE_NORMAL) || \ + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_MODE_CIRCULAR) || \ + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_MODE_PFCTRL)) + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_PERIPHINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_PERIPH_INCREMENT) || \ + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_PERIPH_NOINCREMENT)) + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_MEMORYINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_MEMORY_INCREMENT) || \ + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_MEMORY_NOINCREMENT)) + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_PERIPHDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_PDATAALIGN_BYTE) || \ + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_PDATAALIGN_HALFWORD) || \ + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_PDATAALIGN_WORD)) + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_MEMORYDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_MDATAALIGN_BYTE) || \ + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_MDATAALIGN_HALFWORD) || \ + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_MDATAALIGN_WORD)) + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_NBDATA(__VALUE__) ((__VALUE__) <= 0x0000FFFFU) + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #if defined(DMA_CHANNEL_SELECTION_8_15) + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_CHANNEL(__VALUE__) (((__VALUE__) == LL_DMA_CHANNEL_0) || \ + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_1) || \ + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_2) || \ + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_3) || \ + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_4) || \ + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_5) || \ + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_6) || \ + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_7) || \ + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_8) || \ + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_9) || \ + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_10) || \ + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_11) || \ + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_12) || \ + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_13) || \ + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_14) || \ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_15)) + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + ARM GAS /tmp/ccmfsuWO.s page 3 + + + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #else + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_CHANNEL(__VALUE__) (((__VALUE__) == LL_DMA_CHANNEL_0) || \ + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_1) || \ + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_2) || \ + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_3) || \ + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_4) || \ + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_5) || \ + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_6) || \ + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_CHANNEL_7)) + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #endif /* DMA_CHANNEL_SELECTION_8_15 */ + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_PRIORITY(__VALUE__) (((__VALUE__) == LL_DMA_PRIORITY_LOW) || \ + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_PRIORITY_MEDIUM) || \ + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_PRIORITY_HIGH) || \ + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((__VALUE__) == LL_DMA_PRIORITY_VERYHIGH)) + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_ALL_STREAM_INSTANCE(INSTANCE, STREAM) ((((INSTANCE) == DMA1) && \ + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** (((STREAM) == LL_DMA_STREAM_0) || \ + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_1) || \ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_2) || \ + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_3) || \ + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_4) || \ + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_5) || \ + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_6) || \ + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_7) || \ + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_ALL))) ||\ + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** (((INSTANCE) == DMA2) && \ + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** (((STREAM) == LL_DMA_STREAM_0) || \ + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_1) || \ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_2) || \ + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_3) || \ + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_4) || \ + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_5) || \ + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_6) || \ + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_7) || \ + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STREAM) == LL_DMA_STREAM_ALL)))) + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_FIFO_MODE_STATE(STATE) (((STATE) == LL_DMA_FIFOMODE_DISABLE ) || \ + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((STATE) == LL_DMA_FIFOMODE_ENABLE)) + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == LL_DMA_FIFOTHRESHOLD_1_4) || \ + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((THRESHOLD) == LL_DMA_FIFOTHRESHOLD_1_2) || \ + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((THRESHOLD) == LL_DMA_FIFOTHRESHOLD_3_4) || \ + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((THRESHOLD) == LL_DMA_FIFOTHRESHOLD_FULL)) + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_MEMORY_BURST(BURST) (((BURST) == LL_DMA_MBURST_SINGLE) || \ + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((BURST) == LL_DMA_MBURST_INC4) || \ + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((BURST) == LL_DMA_MBURST_INC8) || \ + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((BURST) == LL_DMA_MBURST_INC16)) + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** #define IS_LL_DMA_PERIPHERAL_BURST(BURST) (((BURST) == LL_DMA_PBURST_SINGLE) || \ + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((BURST) == LL_DMA_PBURST_INC4) || \ + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((BURST) == LL_DMA_PBURST_INC8) || \ + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ((BURST) == LL_DMA_PBURST_INC16)) + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /** + ARM GAS /tmp/ccmfsuWO.s page 4 + + + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @} + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Private function prototypes -----------------------------------------------*/ + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Exported functions --------------------------------------------------------*/ + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /** @addtogroup DMA_LL_Exported_Functions + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @{ + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /** @addtogroup DMA_LL_EF_Init + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @{ + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /** + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @brief De-initialize the DMA registers to their default reset values. + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @param DMAx DMAx Instance + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @param Stream This parameter can be one of the following values: + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_0 + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_1 + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_2 + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_3 + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_4 + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_5 + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_6 + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_7 + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_ALL + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @retval An ErrorStatus enumeration value: + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - SUCCESS: DMA registers are de-initialized + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - ERROR: DMA registers are not de-initialized + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Stream) + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 29 .loc 1 177 1 view -0 + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_Stream_TypeDef *tmp = (DMA_Stream_TypeDef *)DMA1_Stream0; + 33 .loc 1 178 3 view .LVU1 + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ErrorStatus status = SUCCESS; + 34 .loc 1 179 3 view .LVU2 + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Check the DMA Instance DMAx and Stream parameters*/ + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_ALL_STREAM_INSTANCE(DMAx, Stream)); + 35 .loc 1 182 3 view .LVU3 + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** if (Stream == LL_DMA_STREAM_ALL) + 36 .loc 1 184 3 view .LVU4 + 37 .loc 1 184 6 is_stmt 0 view .LVU5 + 38 0000 11F5803F cmn r1, #65536 + 39 0004 58D0 beq .L33 + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_Stream_TypeDef *tmp = (DMA_Stream_TypeDef *)DMA1_Stream0; + 40 .loc 1 177 1 view .LVU6 + 41 0006 10B5 push {r4, lr} + 42 .LCFI0: + 43 .cfi_def_cfa_offset 8 + 44 .cfi_offset 4, -8 + ARM GAS /tmp/ccmfsuWO.s page 5 + + + 45 .cfi_offset 14, -4 + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** if (DMAx == DMA1) + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Force reset of DMA clock */ + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_DMA1); + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Release reset of DMA clock */ + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_DMA1); + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else if (DMAx == DMA2) + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Force reset of DMA clock */ + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_DMA2); + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Release reset of DMA clock */ + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_DMA2); + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** status = ERROR; + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Disable the selected Stream */ + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_DisableStream(DMAx,Stream); + 46 .loc 1 210 5 is_stmt 1 view .LVU7 + 47 .LVL1: + 48 .LBB30: + 49 .LBI30: + 50 .file 2 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @file stm32f7xx_ll_dma.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Header file of DMA LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * This software is licensed under terms that can be found in the LICENSE file in + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #ifndef __STM32F7xx_LL_DMA_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __STM32F7xx_LL_DMA_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif + ARM GAS /tmp/ccmfsuWO.s page 6 + + + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined (DMA1) || defined (DMA2) + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL DMA + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Private_Variables DMA Private Variables + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Array used to get the DMA stream register offset versus stream index LL_DMA_STREAM_x */ + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** static const uint8_t STREAM_OFFSET_TAB[] = + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream0_BASE - DMA1_BASE), + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream1_BASE - DMA1_BASE), + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream2_BASE - DMA1_BASE), + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream3_BASE - DMA1_BASE), + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream4_BASE - DMA1_BASE), + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream5_BASE - DMA1_BASE), + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream6_BASE - DMA1_BASE), + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (uint8_t)(DMA1_Stream7_BASE - DMA1_BASE) + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** }; + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private constants ---------------------------------------------------------*/ + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Private_Constants DMA Private Constants + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined(DMA_SxCR_CHSEL_3) + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define DMA_CHANNEL_SELECTION_8_15 + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif /* DMA_SxCR_CHSEL_3 */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Private macros ------------------------------------------------------------*/ + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported types ------------------------------------------------------------*/ + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined(USE_FULL_LL_DRIVER) + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** typedef struct + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer + ARM GAS /tmp/ccmfsuWO.s page 7 + + + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** or as Source base address in case of memory to memory trans + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter must be a value between Min_Data = 0 and Max + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** or as Destination base address in case of memory to memory + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter must be a value between Min_Data = 0 and Max + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Direction; /*!< Specifies if the data will be transferred from memory to pe + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** from memory to memory or from peripheral to memory. + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_DIRECTION + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Mode; /*!< Specifies the normal or circular operation mode. + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MODE + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The circular buffer mode cannot be used if the memory + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** data transfer direction is configured on the selected + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** is incremented or not. + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PERIPH + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** is incremented or not. + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MEMORY + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** in case of memory to memory transfer direction. + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination dat + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** in case of memory to memory transfer direction. + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** The data unit is equal to the source buffer configuration s + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** or MemorySize parameters depending in the transfer directio + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter must be a value between Min_Data = 0 and Max + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Channel; /*!< Specifies the peripheral channel. + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_CHANNEL + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + ARM GAS /tmp/ccmfsuWO.s page 8 + + + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t Priority; /*!< Specifies the channel priority level. + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PRIORITY + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t FIFOMode; /*!< Specifies if the FIFO mode or Direct mode will be used for + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_FIFOMODE + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The Direct mode (FIFO mode disabled) cannot be used i + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** memory-to-memory data transfer is configured on the selecte + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t FIFOThreshold; /*!< Specifies the FIFO threshold level. + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_FIFOTHRESHO + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t MemBurst; /*!< Specifies the Burst transfer configuration for the memory t + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** It specifies the amount of data to be transferred in a sing + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** transaction. + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_MBURST + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The burst mode is possible only if the address Increm + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** uint32_t PeriphBurst; /*!< Specifies the Burst transfer configuration for the peripher + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** It specifies the amount of data to be transferred in a sing + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** transaction. + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This parameter can be a value of @ref DMA_LL_EC_PBURST + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** @note The burst mode is possible only if the address Increm + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** This feature can be modified afterwards using unitary funct + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } LL_DMA_InitTypeDef; + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif /*USE_FULL_LL_DRIVER*/ + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported constants --------------------------------------------------------*/ + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_STREAM STREAM + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_0 0x00000000U + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_1 0x00000001U + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_2 0x00000002U + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_3 0x00000003U + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_4 0x00000004U + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_5 0x00000005U + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_6 0x00000006U + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_7 0x00000007U + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_STREAM_ALL 0xFFFF0000U + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + ARM GAS /tmp/ccmfsuWO.s page 9 + + + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_DIRECTION DIRECTION + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direc + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_SxCR_DIR_0 /*!< Memory to peripheral direc + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_SxCR_DIR_1 /*!< Memory to memory direction + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MODE MODE + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MODE_CIRCULAR DMA_SxCR_CIRC /*!< Circular Mode + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MODE_PFCTRL DMA_SxCR_PFCTRL /*!< Peripheral flow control mo + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_DOUBLEBUFFER_MODE DOUBLE BUFFER MODE + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DOUBLEBUFFER_MODE_DISABLE 0x00000000U /*!< Disable double buffering m + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_DOUBLEBUFFER_MODE_ENABLE DMA_SxCR_DBM /*!< Enable double buffering mo + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PERIPH PERIPH + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PERIPH_INCREMENT DMA_SxCR_PINC /*!< Peripheral increment mode + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MEMORY MEMORY + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disa + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MEMORY_INCREMENT DMA_SxCR_MINC /*!< Memory increment mode Enab + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PDATAALIGN PDATAALIGN + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PDATAALIGN_HALFWORD DMA_SxCR_PSIZE_0 /*!< Peripheral data alignment + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PDATAALIGN_WORD DMA_SxCR_PSIZE_1 /*!< Peripheral data alignment + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + ARM GAS /tmp/ccmfsuWO.s page 10 + + + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MDATAALIGN MDATAALIGN + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : By + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MDATAALIGN_HALFWORD DMA_SxCR_MSIZE_0 /*!< Memory data alignment : Ha + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MDATAALIGN_WORD DMA_SxCR_MSIZE_1 /*!< Memory data alignment : Wo + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_OFFSETSIZE OFFSETSIZE + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_OFFSETSIZE_PSIZE 0x00000000U /*!< Peripheral increment offse + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_OFFSETSIZE_FIXEDTO4 DMA_SxCR_PINCOS /*!< Peripheral increment offse + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PRIORITY PRIORITY + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_MEDIUM DMA_SxCR_PL_0 /*!< Priority level : Medium + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_HIGH DMA_SxCR_PL_1 /*!< Priority level : High + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PRIORITY_VERYHIGH DMA_SxCR_PL /*!< Priority level : Very_High + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_CHANNEL CHANNEL + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_0 0x00000000U + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_1 DMA_SxCR_CHSEL_0 + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_2 DMA_SxCR_CHSEL_1 + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_3 (DMA_SxCR_CHSEL_0 | DMA_SxCR_CHSEL_1) + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_4 DMA_SxCR_CHSEL_2 + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_5 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_0) + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_6 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1) + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_7 (DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0) + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #if defined(DMA_CHANNEL_SELECTION_8_15) + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_8 DMA_SxCR_CHSEL_3 + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_9 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_0) + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_10 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_1) + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_11 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_1 | DMA_SxCR_CHSEL_0) + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_12 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2) + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_13 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_0) + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_14 (DMA_SxCR_CHSEL_3 | DMA_SxCR_CHSEL_2 | DMA_SxCR_CHSEL_1) + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CHANNEL_15 DMA_SxCR_CHSEL + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #endif /* DMA_CHANNEL_SELECTION_8_15 */ + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + ARM GAS /tmp/ccmfsuWO.s page 11 + + + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_MBURST MBURST + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_SINGLE 0x00000000U /*!< Memory burst + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_INC4 DMA_SxCR_MBURST_0 /*!< Memory burst + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_INC8 DMA_SxCR_MBURST_1 /*!< Memory burst + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_MBURST_INC16 (DMA_SxCR_MBURST_0 | DMA_SxCR_MBURST_1) /*!< Memory burst + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_PBURST PBURST + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_SINGLE 0x00000000U /*!< Peripheral b + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_INC4 DMA_SxCR_PBURST_0 /*!< Peripheral b + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_INC8 DMA_SxCR_PBURST_1 /*!< Peripheral b + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_PBURST_INC16 (DMA_SxCR_PBURST_0 | DMA_SxCR_PBURST_1) /*!< Peripheral b + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_FIFOMODE DMA_LL_FIFOMODE + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode di + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOMODE_ENABLE DMA_SxFCR_DMDIS /*!< FIFO mode en + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_FIFOSTATUS_0 FIFOSTATUS 0 + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_0_25 0x00000000U /*!< 0 < fifo_lev + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_25_50 DMA_SxFCR_FS_0 /*!< 1/4 < fifo_l + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_50_75 DMA_SxFCR_FS_1 /*!< 1/2 < fifo_l + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_75_100 (DMA_SxFCR_FS_1 | DMA_SxFCR_FS_0) /*!< 3/4 < fifo_l + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_EMPTY DMA_SxFCR_FS_2 /*!< FIFO is empt + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOSTATUS_FULL (DMA_SxFCR_FS_2 | DMA_SxFCR_FS_0) /*!< FIFO is full + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_FIFOTHRESHOLD FIFOTHRESHOLD + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_1_4 0x00000000U /*!< FIFO thresho + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_1_2 DMA_SxFCR_FTH_0 /*!< FIFO thresho + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_3_4 DMA_SxFCR_FTH_1 /*!< FIFO thresho + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_FIFOTHRESHOLD_FULL DMA_SxFCR_FTH /*!< FIFO thresho + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EC_CURRENTTARGETMEM CURRENTTARGETMEM + ARM GAS /tmp/ccmfsuWO.s page 12 + + + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CURRENTTARGETMEM0 0x00000000U /*!< Set CurrentT + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_CURRENTTARGETMEM1 DMA_SxCR_CT /*!< Set CurrentT + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported macro ------------------------------------------------------------*/ + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Write a value in DMA register + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __INSTANCE__ DMA Instance + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __REG__ Register to be written + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __VALUE__ Value to be written in the register + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Read a value in DMA register + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __INSTANCE__ DMA Instance + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __REG__ Register to be read + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Register value + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxStreamy + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Convert DMAx_Streamy into DMAx + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __STREAM_INSTANCE__ DMAx_Streamy + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval DMAx + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __LL_DMA_GET_INSTANCE(__STREAM_INSTANCE__) \ + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__STREAM_INSTANCE__) > ((uint32_t)DMA1_Stream7)) ? DMA2 : DMA1) + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Convert DMAx_Streamy into LL_DMA_STREAM_y + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __STREAM_INSTANCE__ DMAx_Streamy + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval LL_DMA_CHANNEL_y + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __LL_DMA_GET_STREAM(__STREAM_INSTANCE__) \ + ARM GAS /tmp/ccmfsuWO.s page 13 + + + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream0)) ? LL_DMA_STREAM_0 : \ + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream0)) ? LL_DMA_STREAM_0 : \ + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream1)) ? LL_DMA_STREAM_1 : \ + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream1)) ? LL_DMA_STREAM_1 : \ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream2)) ? LL_DMA_STREAM_2 : \ + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream2)) ? LL_DMA_STREAM_2 : \ + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream3)) ? LL_DMA_STREAM_3 : \ + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream3)) ? LL_DMA_STREAM_3 : \ + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream4)) ? LL_DMA_STREAM_4 : \ + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream4)) ? LL_DMA_STREAM_4 : \ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream5)) ? LL_DMA_STREAM_5 : \ + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream5)) ? LL_DMA_STREAM_5 : \ + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream6)) ? LL_DMA_STREAM_6 : \ + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream6)) ? LL_DMA_STREAM_6 : \ + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** LL_DMA_STREAM_7) + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Convert DMA Instance DMAx and LL_DMA_STREAM_y into DMAx_Streamy + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __DMA_INSTANCE__ DMAx + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param __STREAM__ LL_DMA_STREAM_y + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval DMAx_Streamy + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** #define __LL_DMA_GET_STREAM_INSTANCE(__DMA_INSTANCE__, __STREAM__) \ + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DM + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** DMA2_Stream7) + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @} + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Exported functions --------------------------------------------------------*/ + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** @defgroup DMA_LL_EF_Configuration Configuration + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @{ + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + ARM GAS /tmp/ccmfsuWO.s page 14 + + + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable DMA stream. + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR EN LL_DMA_EnableStream + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableStream(DMA_TypeDef *DMAx, uint32_t Stream) + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Disable DMA stream. + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR EN LL_DMA_DisableStream + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_DisableStream(DMA_TypeDef *DMAx, uint32_t Stream) + 51 .loc 2 517 22 view .LVU8 + 52 .LBB31: + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 53 .loc 2 519 3 view .LVU9 + 54 0008 6C4B ldr r3, .L43 + 55 000a 13F801C0 ldrb ip, [r3, r1] @ zero_extendqisi2 + 56 000e 50F80C30 ldr r3, [r0, ip] + 57 0012 23F00103 bic r3, r3, #1 + 58 0016 40F80C30 str r3, [r0, ip] + 59 .LVL2: + 60 .loc 2 519 3 is_stmt 0 view .LVU10 + 61 .LBE31: + 62 .LBE30: + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Get the DMA Stream Instance */ + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** tmp = (DMA_Stream_TypeDef *)(__LL_DMA_GET_STREAM_INSTANCE(DMAx, Stream)); + 63 .loc 1 213 5 is_stmt 1 view .LVU11 + 64 .loc 1 213 34 is_stmt 0 view .LVU12 + 65 001a 694B ldr r3, .L43+4 + 66 001c C31A subs r3, r0, r3 + ARM GAS /tmp/ccmfsuWO.s page 15 + + + 67 001e 18BF it ne + 68 0020 0123 movne r3, #1 + 69 0022 0A1E subs r2, r1, #0 + 70 0024 18BF it ne + 71 0026 0122 movne r2, #1 + 72 .loc 1 213 11 view .LVU13 + 73 0028 53EA0204 orrs r4, r3, r2 + 74 002c 64D0 beq .L14 + 75 .loc 1 213 34 discriminator 1 view .LVU14 + 76 002e 654C ldr r4, .L43+8 + 77 0030 B0EB040E subs lr, r0, r4 + 78 0034 18BF it ne + 79 0036 4FF0010E movne lr, #1 + 80 003a 52EA0E02 orrs r2, r2, lr + 81 003e 6FD0 beq .L15 + 82 .loc 1 213 34 discriminator 3 view .LVU15 + 83 0040 4A1E subs r2, r1, #1 + 84 0042 18BF it ne + 85 0044 0122 movne r2, #1 + 86 0046 53EA0204 orrs r4, r3, r2 + 87 004a 6BD0 beq .L16 + 88 .loc 1 213 34 discriminator 5 view .LVU16 + 89 004c 5EEA0202 orrs r2, lr, r2 + 90 0050 6AD0 beq .L17 + 91 .loc 1 213 34 discriminator 7 view .LVU17 + 92 0052 8A1E subs r2, r1, #2 + 93 0054 18BF it ne + 94 0056 0122 movne r2, #1 + 95 0058 53EA0204 orrs r4, r3, r2 + 96 005c 66D0 beq .L18 + 97 .loc 1 213 34 discriminator 9 view .LVU18 + 98 005e 5EEA0202 orrs r2, lr, r2 + 99 0062 65D0 beq .L19 + 100 .loc 1 213 34 discriminator 11 view .LVU19 + 101 0064 CA1E subs r2, r1, #3 + 102 0066 18BF it ne + 103 0068 0122 movne r2, #1 + 104 006a 53EA0204 orrs r4, r3, r2 + 105 006e 61D0 beq .L20 + 106 .loc 1 213 34 discriminator 13 view .LVU20 + 107 0070 5EEA0202 orrs r2, lr, r2 + 108 0074 60D0 beq .L21 + 109 .loc 1 213 34 discriminator 15 view .LVU21 + 110 0076 0A1F subs r2, r1, #4 + 111 0078 18BF it ne + 112 007a 0122 movne r2, #1 + 113 007c 53EA0204 orrs r4, r3, r2 + 114 0080 5CD0 beq .L22 + 115 .loc 1 213 34 discriminator 17 view .LVU22 + 116 0082 5EEA0202 orrs r2, lr, r2 + 117 0086 5BD0 beq .L23 + 118 .loc 1 213 34 discriminator 19 view .LVU23 + 119 0088 4A1F subs r2, r1, #5 + 120 008a 18BF it ne + 121 008c 0122 movne r2, #1 + 122 008e 53EA0204 orrs r4, r3, r2 + 123 0092 57D0 beq .L24 + ARM GAS /tmp/ccmfsuWO.s page 16 + + + 124 .loc 1 213 34 discriminator 21 view .LVU24 + 125 0094 5EEA0202 orrs r2, lr, r2 + 126 0098 56D0 beq .L25 + 127 .loc 1 213 34 discriminator 23 view .LVU25 + 128 009a 8A1F subs r2, r1, #6 + 129 009c 18BF it ne + 130 009e 0122 movne r2, #1 + 131 00a0 1343 orrs r3, r3, r2 + 132 00a2 53D0 beq .L26 + 133 .loc 1 213 34 discriminator 25 view .LVU26 + 134 00a4 5EEA0203 orrs r3, lr, r2 + 135 00a8 52D0 beq .L27 + 136 .loc 1 213 34 discriminator 27 view .LVU27 + 137 00aa 454B ldr r3, .L43+4 + 138 00ac 9842 cmp r0, r3 + 139 00ae 08BF it eq + 140 00b0 0729 cmpeq r1, #7 + 141 00b2 4FD1 bne .L28 + 142 .loc 1 213 34 view .LVU28 + 143 00b4 B833 adds r3, r3, #184 + 144 00b6 20E0 b .L5 + 145 .L33: + 146 .LCFI1: + 147 .cfi_def_cfa_offset 0 + 148 .cfi_restore 4 + 149 .cfi_restore 14 + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 150 .loc 1 186 5 is_stmt 1 view .LVU29 + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 151 .loc 1 186 8 is_stmt 0 view .LVU30 + 152 00b8 414B ldr r3, .L43+4 + 153 00ba 9842 cmp r0, r3 + 154 00bc 04D0 beq .L34 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 155 .loc 1 194 10 is_stmt 1 view .LVU31 + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 156 .loc 1 194 13 is_stmt 0 view .LVU32 + 157 00be 414B ldr r3, .L43+8 + 158 00c0 9842 cmp r0, r3 + 159 00c2 0DD0 beq .L35 + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 160 .loc 1 204 14 view .LVU33 + 161 00c4 0120 movs r0, #1 + 162 .LVL3: + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset DMAx_Streamy configuration register */ + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_WriteReg(tmp, CR, 0U); + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset DMAx_Streamy remaining bytes register */ + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_WriteReg(tmp, NDTR, 0U); + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset DMAx_Streamy peripheral address register */ + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_WriteReg(tmp, PAR, 0U); + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset DMAx_Streamy memory address register */ + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_WriteReg(tmp, M0AR, 0U); + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + ARM GAS /tmp/ccmfsuWO.s page 17 + + + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset DMAx_Streamy memory address register */ + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_WriteReg(tmp, M1AR, 0U); + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset DMAx_Streamy FIFO control register */ + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_WriteReg(tmp, FCR, 0x00000021U); + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset Channel register field for DMAx Stream*/ + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_SetChannelSelection(DMAx, Stream, LL_DMA_CHANNEL_0); + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** if(Stream == LL_DMA_STREAM_0) + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset the Stream0 pending flags */ + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMAx->LIFCR = 0x0000003FU; + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else if(Stream == LL_DMA_STREAM_1) + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset the Stream1 pending flags */ + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMAx->LIFCR = 0x00000F40U; + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else if(Stream == LL_DMA_STREAM_2) + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset the Stream2 pending flags */ + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMAx->LIFCR = 0x003F0000U; + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else if(Stream == LL_DMA_STREAM_3) + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset the Stream3 pending flags */ + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMAx->LIFCR = 0x0F400000U; + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else if(Stream == LL_DMA_STREAM_4) + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset the Stream4 pending flags */ + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMAx->HIFCR = 0x0000003FU; + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else if(Stream == LL_DMA_STREAM_5) + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset the Stream5 pending flags */ + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMAx->HIFCR = 0x00000F40U; + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else if(Stream == LL_DMA_STREAM_6) + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset the Stream6 pending flags */ + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMAx->HIFCR = 0x003F0000U; + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else if(Stream == LL_DMA_STREAM_7) + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Reset the Stream7 pending flags */ + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMAx->HIFCR = 0x0F400000U; + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** else + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** status = ERROR; + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** return status; + 163 .loc 1 282 3 is_stmt 1 view .LVU34 + ARM GAS /tmp/ccmfsuWO.s page 18 + + + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 164 .loc 1 283 1 is_stmt 0 view .LVU35 + 165 00c6 7047 bx lr + 166 .LVL4: + 167 .L34: + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 168 .loc 1 189 7 is_stmt 1 view .LVU36 + 169 .LBB32: + 170 .LBI32: + 171 .file 3 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @file stm32f7xx_ll_bus.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Header file of BUS LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @verbatim + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ##### RCC Limitations ##### + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ============================================================================== + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** A delay between an RCC peripheral clock enable and the effective peripheral + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** enabling should be taken into account in order to manage the peripheral read/write + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** from/to registers. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (+) This delay depends on the peripheral mapping. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (++) AHB & APB peripherals, 1 dummy read is necessary + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** Workarounds: + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @endverbatim + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @attention + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * Copyright (c) 2017 STMicroelectronics. + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * All rights reserved. + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * This software is licensed under terms that can be found in the LICENSE file in + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * the root directory of this software component. + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifndef __STM32F7xx_LL_BUS_H + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define __STM32F7xx_LL_BUS_H + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifdef __cplusplus + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** extern "C" { + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Includes ------------------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #include "stm32f7xx.h" + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @addtogroup STM32F7xx_LL_Driver + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + ARM GAS /tmp/ccmfsuWO.s page 19 + + + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC) + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL BUS + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private types -------------------------------------------------------------*/ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private variables ---------------------------------------------------------*/ + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private constants ---------------------------------------------------------*/ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private macros ------------------------------------------------------------*/ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported types ------------------------------------------------------------*/ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported constants --------------------------------------------------------*/ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOA RCC_AHB1ENR_GPIOAEN + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOB RCC_AHB1ENR_GPIOBEN + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOC RCC_AHB1ENR_GPIOCEN + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOD RCC_AHB1ENR_GPIODEN + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOE RCC_AHB1ENR_GPIOEEN + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOF RCC_AHB1ENR_GPIOFEN + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOG RCC_AHB1ENR_GPIOGEN + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOH RCC_AHB1ENR_GPIOHEN + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOI RCC_AHB1ENR_GPIOIEN + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOJ) + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOJ RCC_AHB1ENR_GPIOJEN + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOJ */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOK) + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOK RCC_AHB1ENR_GPIOKEN + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOK */ + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_CRC RCC_AHB1ENR_CRCEN + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_BKPSRAM RCC_AHB1ENR_BKPSRAMEN + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DTCMRAM RCC_AHB1ENR_DTCMRAMEN + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHB1ENR_DMA1EN + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHB1ENR_DMA2EN + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DMA2D) + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2D RCC_AHB1ENR_DMA2DEN + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DMA2D */ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(ETH) + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMAC RCC_AHB1ENR_ETHMACEN + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACTX RCC_AHB1ENR_ETHMACTXEN + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACRX RCC_AHB1ENR_ETHMACRXEN + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACPTP RCC_AHB1ENR_ETHMACPTPEN + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* ETH */ + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHS RCC_AHB1ENR_OTGHSEN + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHSULPI RCC_AHB1ENR_OTGHSULPIEN + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_AXI RCC_AHB1LPENR_AXILPEN + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_FLITF RCC_AHB1LPENR_FLITFLPEN + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHB1LPENR_SRAM1LPEN + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM2 RCC_AHB1LPENR_SRAM2LPEN + ARM GAS /tmp/ccmfsuWO.s page 20 + + + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DCMI) + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_DCMI RCC_AHB2ENR_DCMIEN + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DCMI */ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(JPEG) + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_JPEG RCC_AHB2ENR_JPEGEN + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* JPEG */ + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CRYP) + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_CRYP RCC_AHB2ENR_CRYPEN + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CRYP */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(AES) + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_AES RCC_AHB2ENR_AESEN + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* AES */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(HASH) + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_HASH RCC_AHB2ENR_HASHEN + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* HASH */ + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_RNG RCC_AHB2ENR_RNGEN + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_OTGFS RCC_AHB2ENR_OTGFSEN + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB3_GRP1_PERIPH AHB3 GRP1 PERIPH + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_ALL 0xFFFFFFFFU + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_FMC RCC_AHB3ENR_FMCEN + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_QSPI RCC_AHB3ENR_QSPIEN + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM12 RCC_APB1ENR_TIM12EN + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM13 RCC_APB1ENR_TIM13EN + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM14 RCC_APB1ENR_TIM14EN + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APB1ENR_LPTIM1EN + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPDIFRX) + ARM GAS /tmp/ccmfsuWO.s page 21 + + + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPDIFRX RCC_APB1ENR_SPDIFRXEN + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPDIFRX */ + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C3 RCC_APB1ENR_I2C3EN + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(I2C4) + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C4 RCC_APB1ENR_I2C4EN + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* I2C4 */ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR_CAN1EN + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN2) + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR_CAN2EN + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN2 */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN3) + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN3 RCC_APB1ENR_CAN3EN + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN3 */ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CEC) + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CEC RCC_APB1ENR_CECEN + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CEC */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART7 RCC_APB1ENR_UART7EN + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART8 RCC_APB1ENR_UART8EN + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC_APB1ENR_RTCEN) + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APB1ENR_RTCEN + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* RCC_APB1ENR_RTCEN */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART6 RCC_APB2ENR_USART6EN + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC2 RCC_APB2ENR_ADC2EN + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC3 RCC_APB2ENR_ADC3EN + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC1 RCC_APB2ENR_SDMMC1EN + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SDMMC2) + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC2 RCC_APB2ENR_SDMMC2EN + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SDMMC2 */ + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI4 RCC_APB2ENR_SPI4EN + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI5 RCC_APB2ENR_SPI5EN + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPI6) + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI6 RCC_APB2ENR_SPI6EN + ARM GAS /tmp/ccmfsuWO.s page 22 + + + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPI6 */ + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI1 RCC_APB2ENR_SAI1EN + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI2 RCC_APB2ENR_SAI2EN + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(LTDC) + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_LTDC RCC_APB2ENR_LTDCEN + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* LTDC */ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DSI) + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DSI RCC_APB2ENR_DSIEN + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DSI */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DFSDM1_Channel0) + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DFSDM1 RCC_APB2ENR_DFSDM1EN + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DFSDM1_Channel0 */ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(MDIOS) + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_MDIO RCC_APB2ENR_MDIOEN + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* MDIOS */ + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(USB_HS_PHYC) + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_OTGPHYC RCC_APB2ENR_OTGPHYCEN + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* USB_HS_PHYC */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC RCC_APB2RSTR_ADCRST + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported macro ------------------------------------------------------------*/ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported functions --------------------------------------------------------*/ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB1 AHB1 + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB1 peripherals clock. + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_EnableClock\n + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_EnableClock\n + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_EnableClock\n + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_EnableClock\n + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_EnableClock\n + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_EnableClock\n + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_EnableClock\n + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_EnableClock\n + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_EnableClock\n + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_EnableClock\n + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_EnableClock\n + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_EnableClock\n + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_EnableClock\n + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_EnableClock\n + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_EnableClock\n + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_EnableClock\n + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_EnableClock\n + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_EnableClock\n + ARM GAS /tmp/ccmfsuWO.s page 23 + + + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_EnableClock\n + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_EnableClock\n + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_EnableClock\n + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_EnableClock\n + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIEN LL_AHB1_GRP1_EnableClock + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB1 peripheral clock is enabled or not + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_IsEnabledClock\n + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_IsEnabledClock\n + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_IsEnabledClock\n + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_IsEnabledClock\n + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_IsEnabledClock\n + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_IsEnabledClock\n + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_IsEnabledClock\n + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_IsEnabledClock\n + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_IsEnabledClock\n + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_IsEnabledClock\n + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_IsEnabledClock\n + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_IsEnabledClock\n + ARM GAS /tmp/ccmfsuWO.s page 24 + + + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_IsEnabledClock\n + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_IsEnabledClock\n + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_IsEnabledClock\n + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_IsEnabledClock\n + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_IsEnabledClock\n + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_IsEnabledClock\n + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_IsEnabledClock + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB1ENR, Periphs) == Periphs); + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB1 peripherals clock. + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_DisableClock\n + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_DisableClock\n + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_DisableClock\n + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_DisableClock\n + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_DisableClock\n + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_DisableClock\n + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_DisableClock\n + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_DisableClock\n + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_DisableClock\n + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_DisableClock\n + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_DisableClock\n + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_DisableClock\n + ARM GAS /tmp/ccmfsuWO.s page 25 + + + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_DisableClock\n + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_DisableClock\n + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_DisableClock\n + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_DisableClock\n + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_DisableClock\n + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_DisableClock\n + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_DisableClock\n + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_DisableClock\n + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_DisableClock\n + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_DisableClock\n + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_DisableClock + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1ENR, Periphs); + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB1 peripherals reset. + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ForceReset\n + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ForceReset\n + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ForceReset\n + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ForceReset\n + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ForceReset\n + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ForceReset\n + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ForceReset\n + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ForceReset\n + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ForceReset\n + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ForceReset\n + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ForceReset\n + ARM GAS /tmp/ccmfsuWO.s page 26 + + + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ForceReset\n + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset\n + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ForceReset\n + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ForceReset\n + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ForceReset\n + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ForceReset + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) + 172 .loc 3 476 22 view .LVU37 + 173 .LBB33: + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1RSTR, Periphs); + 174 .loc 3 478 3 view .LVU38 + 175 00c8 A3F52053 sub r3, r3, #10240 + 176 00cc 1A69 ldr r2, [r3, #16] + 177 00ce 42F40012 orr r2, r2, #2097152 + 178 00d2 1A61 str r2, [r3, #16] + 179 .LVL5: + 180 .loc 3 478 3 is_stmt 0 view .LVU39 + 181 .LBE33: + 182 .LBE32: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 183 .loc 1 192 7 is_stmt 1 view .LVU40 + 184 .LBB34: + 185 .LBI34: + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB1 peripherals reset. + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ReleaseReset\n + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ReleaseReset\n + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ReleaseReset\n + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ReleaseReset\n + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ReleaseReset\n + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ReleaseReset\n + ARM GAS /tmp/ccmfsuWO.s page 27 + + + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ReleaseReset\n + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ReleaseReset\n + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ReleaseReset\n + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ReleaseReset\n + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ReleaseReset\n + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ReleaseReset\n + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ReleaseReset\n + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ReleaseReset + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) + 186 .loc 3 523 22 view .LVU41 + 187 .LBB35: + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1RSTR, Periphs); + 188 .loc 3 525 3 view .LVU42 + 189 00d4 1A69 ldr r2, [r3, #16] + 190 00d6 22F40012 bic r2, r2, #2097152 + 191 00da 1A61 str r2, [r3, #16] + 192 .LBE35: + 193 .LBE34: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 194 .loc 1 179 15 is_stmt 0 view .LVU43 + 195 00dc 0020 movs r0, #0 + 196 .LVL6: + 197 .LBB37: + 198 .LBB36: + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 199 .loc 3 526 1 view .LVU44 + 200 00de 7047 bx lr + 201 .LVL7: + 202 .L35: + 203 .loc 3 526 1 view .LVU45 + ARM GAS /tmp/ccmfsuWO.s page 28 + + + 204 .LBE36: + 205 .LBE37: + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 206 .loc 1 197 7 is_stmt 1 view .LVU46 + 207 .LBB38: + 208 .LBI38: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 209 .loc 3 476 22 view .LVU47 + 210 .LBB39: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 211 .loc 3 478 3 view .LVU48 + 212 00e0 A3F53053 sub r3, r3, #11264 + 213 00e4 1A69 ldr r2, [r3, #16] + 214 00e6 42F48002 orr r2, r2, #4194304 + 215 00ea 1A61 str r2, [r3, #16] + 216 .LVL8: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 217 .loc 3 478 3 is_stmt 0 view .LVU49 + 218 .LBE39: + 219 .LBE38: + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 220 .loc 1 200 7 is_stmt 1 view .LVU50 + 221 .LBB40: + 222 .LBI40: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 223 .loc 3 523 22 view .LVU51 + 224 .LBB41: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 225 .loc 3 525 3 view .LVU52 + 226 00ec 1A69 ldr r2, [r3, #16] + 227 00ee 22F48002 bic r2, r2, #4194304 + 228 00f2 1A61 str r2, [r3, #16] + 229 .LBE41: + 230 .LBE40: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 231 .loc 1 179 15 is_stmt 0 view .LVU53 + 232 00f4 0020 movs r0, #0 + 233 .LVL9: + 234 .LBB43: + 235 .LBB42: + 236 .loc 3 526 1 view .LVU54 + 237 00f6 7047 bx lr + 238 .LVL10: + 239 .L14: + 240 .LCFI2: + 241 .cfi_def_cfa_offset 8 + 242 .cfi_offset 4, -8 + 243 .cfi_offset 14, -4 + 244 .loc 3 526 1 view .LVU55 + 245 .LBE42: + 246 .LBE43: + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 247 .loc 1 213 11 view .LVU56 + 248 00f8 334B ldr r3, .L43+12 + 249 .L5: + 250 .LVL11: + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + ARM GAS /tmp/ccmfsuWO.s page 29 + + + 251 .loc 1 216 5 is_stmt 1 discriminator 60 view .LVU57 + 252 00fa 0022 movs r2, #0 + 253 00fc 1A60 str r2, [r3] + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 254 .loc 1 219 5 discriminator 60 view .LVU58 + 255 00fe 5A60 str r2, [r3, #4] + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 256 .loc 1 222 5 discriminator 60 view .LVU59 + 257 0100 9A60 str r2, [r3, #8] + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 258 .loc 1 225 5 discriminator 60 view .LVU60 + 259 0102 DA60 str r2, [r3, #12] + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 260 .loc 1 228 5 discriminator 60 view .LVU61 + 261 0104 1A61 str r2, [r3, #16] + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 262 .loc 1 231 5 discriminator 60 view .LVU62 + 263 0106 2122 movs r2, #33 + 264 0108 5A61 str r2, [r3, #20] + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 265 .loc 1 234 5 discriminator 60 view .LVU63 + 266 .LVL12: + 267 .LBB44: + 268 .LBI44: + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Check if DMA stream is enabled or disabled. + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR EN LL_DMA_IsEnabledStream + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval State of bit (1 or 0). + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_IsEnabledStream(DMA_TypeDef *DMAx, uint32_t Stream) + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Configure all parameters linked to DMA transfer. + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DIR LL_DMA_ConfigTransfer\n + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR CIRC LL_DMA_ConfigTransfer\n + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PINC LL_DMA_ConfigTransfer\n + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR MINC LL_DMA_ConfigTransfer\n + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PSIZE LL_DMA_ConfigTransfer\n + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR MSIZE LL_DMA_ConfigTransfer\n + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PL LL_DMA_ConfigTransfer\n + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PFCTRL LL_DMA_ConfigTransfer + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + ARM GAS /tmp/ccmfsuWO.s page 30 + + + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Configuration This parameter must be a combination of all the following values: + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH o + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR or @ref LL_DMA_MODE_PFCTRL + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDAT + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDAT + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HI + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** *@retval None + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Configurati + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_Sx + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** Configuration); + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Data transfer direction (read from peripheral or from memory). + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DIR LL_DMA_SetDataTransferDirection + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Direction This parameter can be one of the following values: + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Data transfer direction (read from peripheral or from memory). + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DIR LL_DMA_GetDataTransferDirection + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + ARM GAS /tmp/ccmfsuWO.s page 31 + + + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream) + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set DMA mode normal, circular or peripheral flow control. + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CIRC LL_DMA_SetMode\n + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PFCTRL LL_DMA_SetMode + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Mode This parameter can be one of the following values: + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_NORMAL + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_CIRCULAR + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_PFCTRL + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mode) + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get DMA mode normal, circular or peripheral flow control. + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CIRC LL_DMA_GetMode\n + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * CR PFCTRL LL_DMA_GetMode + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_NORMAL + ARM GAS /tmp/ccmfsuWO.s page 32 + + + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_CIRCULAR + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MODE_PFCTRL + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Stream) + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral increment mode. + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINC LL_DMA_SetPeriphIncMode + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param IncrementMode This parameter can be one of the following values: + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_NOINCREMENT + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_INCREMENT + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Increment + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral increment mode. + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINC LL_DMA_GetPeriphIncMode + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_NOINCREMENT + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PERIPH_INCREMENT + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream) + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory increment mode. + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MINC LL_DMA_SetMemoryIncMode + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + ARM GAS /tmp/ccmfsuWO.s page 33 + + + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param IncrementMode This parameter can be one of the following values: + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_NOINCREMENT + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_INCREMENT + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Increment + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory increment mode. + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MINC LL_DMA_GetMemoryIncMode + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_NOINCREMENT + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MEMORY_INCREMENT + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream) + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral size. + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PSIZE LL_DMA_SetPeriphSize + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Size This parameter can be one of the following values: + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_BYTE + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + ARM GAS /tmp/ccmfsuWO.s page 34 + + + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_WORD + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral size. + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PSIZE LL_DMA_GetPeriphSize + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_BYTE + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PDATAALIGN_WORD + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream) + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory size. + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MSIZE LL_DMA_SetMemorySize + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Size This parameter can be one of the following values: + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_BYTE + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_WORD + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory size. + ARM GAS /tmp/ccmfsuWO.s page 35 + + + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MSIZE LL_DMA_GetMemorySize + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_BYTE + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MDATAALIGN_WORD + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream) + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral increment offset size. + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINCOS LL_DMA_SetIncOffsetSize + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param OffsetSize This parameter can be one of the following values: + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_PSIZE + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4 + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t OffsetSiz + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral increment offset size. + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PINCOS LL_DMA_GetIncOffsetSize + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + ARM GAS /tmp/ccmfsuWO.s page 36 + + + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_PSIZE + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4 + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream) + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Stream priority level. + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PL LL_DMA_SetStreamPriorityLevel + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Priority This parameter can be one of the following values: + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_LOW + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_MEDIUM + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_HIGH + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_VERYHIGH + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pr + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Stream priority level. + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PL LL_DMA_GetStreamPriorityLevel + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_LOW + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_MEDIUM + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_HIGH + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PRIORITY_VERYHIGH + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream) + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + ARM GAS /tmp/ccmfsuWO.s page 37 + + + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Number of data to transfer. + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll NDTR NDT LL_DMA_SetDataLength + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This action has no effect if + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * stream is enabled. + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param NbData Between 0 to 0xFFFFFFFF + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t NbData) + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->NDTR, + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Number of data to transfer. + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll NDTR NDT LL_DMA_GetDataLength + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Once the stream is enabled, the return value indicate the + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * remaining bytes to be transmitted. + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Between 0 to 0xFFFFFFFF + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef* DMAx, uint32_t Stream) + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Select Channel number associated to the Stream. +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CHSEL LL_DMA_SetChannelSelection +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 + ARM GAS /tmp/ccmfsuWO.s page 38 + + +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Channel This parameter can be one of the following values: +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_0 +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_1 +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_2 +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_3 +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_4 +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_5 +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_6 +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_7 +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_8 (*) +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_9 (*) +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_10 (*) +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_11 (*) +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_12 (*) +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_13 (*) +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_14 (*) +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_15 (*) +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * (*) value not defined in all devices. +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetChannelSelection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Channe + 269 .loc 2 1032 22 discriminator 60 view .LVU64 + 270 .LBB45: +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + 271 .loc 2 1034 3 discriminator 60 view .LVU65 + 272 010a 50F80C30 ldr r3, [r0, ip] + 273 .LVL13: + 274 .loc 2 1034 3 is_stmt 0 discriminator 60 view .LVU66 + 275 010e 23F0F053 bic r3, r3, #503316480 + 276 0112 40F80C30 str r3, [r0, ip] + 277 .LVL14: + 278 .loc 2 1034 3 discriminator 60 view .LVU67 + 279 .LBE45: + 280 .LBE44: + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 281 .loc 1 236 5 is_stmt 1 discriminator 60 view .LVU68 + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 282 .loc 1 236 7 is_stmt 0 discriminator 60 view .LVU69 + 283 0116 F9B9 cbnz r1, .L6 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 284 .loc 1 239 8 is_stmt 1 view .LVU70 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 285 .loc 1 239 20 is_stmt 0 view .LVU71 + 286 0118 3F23 movs r3, #63 + 287 011a 8360 str r3, [r0, #8] + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 288 .loc 1 179 15 view .LVU72 + 289 011c 0020 movs r0, #0 + 290 .LVL15: + 291 .L4: + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 292 .loc 1 282 3 is_stmt 1 view .LVU73 + 293 .loc 1 283 1 is_stmt 0 view .LVU74 + ARM GAS /tmp/ccmfsuWO.s page 39 + + + 294 011e 10BD pop {r4, pc} + 295 .LVL16: + 296 .L15: + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 297 .loc 1 213 34 view .LVU75 + 298 0120 2A4B ldr r3, .L43+16 + 299 0122 EAE7 b .L5 + 300 .L16: + 301 0124 2A4B ldr r3, .L43+20 + 302 0126 E8E7 b .L5 + 303 .L17: + 304 0128 2A4B ldr r3, .L43+24 + 305 012a E6E7 b .L5 + 306 .L18: + 307 012c 2A4B ldr r3, .L43+28 + 308 012e E4E7 b .L5 + 309 .L19: + 310 0130 2A4B ldr r3, .L43+32 + 311 0132 E2E7 b .L5 + 312 .L20: + 313 0134 2A4B ldr r3, .L43+36 + 314 0136 E0E7 b .L5 + 315 .L21: + 316 0138 2A4B ldr r3, .L43+40 + 317 013a DEE7 b .L5 + 318 .L22: + 319 013c 2A4B ldr r3, .L43+44 + 320 013e DCE7 b .L5 + 321 .L23: + 322 0140 2A4B ldr r3, .L43+48 + 323 0142 DAE7 b .L5 + 324 .L24: + 325 0144 2A4B ldr r3, .L43+52 + 326 0146 D8E7 b .L5 + 327 .L25: + 328 0148 2A4B ldr r3, .L43+56 + 329 014a D6E7 b .L5 + 330 .L26: + 331 014c 2A4B ldr r3, .L43+60 + 332 014e D4E7 b .L5 + 333 .L27: + 334 0150 2A4B ldr r3, .L43+64 + 335 0152 D2E7 b .L5 + 336 .L28: + 337 0154 2A4B ldr r3, .L43+68 + 338 0156 D0E7 b .L5 + 339 .LVL17: + 340 .L6: + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 341 .loc 1 241 10 is_stmt 1 view .LVU76 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 342 .loc 1 241 12 is_stmt 0 view .LVU77 + 343 0158 0129 cmp r1, #1 + 344 015a 0DD0 beq .L36 + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 345 .loc 1 246 10 is_stmt 1 view .LVU78 + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + ARM GAS /tmp/ccmfsuWO.s page 40 + + + 346 .loc 1 246 12 is_stmt 0 view .LVU79 + 347 015c 0229 cmp r1, #2 + 348 015e 10D0 beq .L37 + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 349 .loc 1 251 10 is_stmt 1 view .LVU80 + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 350 .loc 1 251 12 is_stmt 0 view .LVU81 + 351 0160 0329 cmp r1, #3 + 352 0162 13D0 beq .L38 + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 353 .loc 1 256 10 is_stmt 1 view .LVU82 + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 354 .loc 1 256 12 is_stmt 0 view .LVU83 + 355 0164 0429 cmp r1, #4 + 356 0166 16D0 beq .L39 + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 357 .loc 1 261 10 is_stmt 1 view .LVU84 + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 358 .loc 1 261 12 is_stmt 0 view .LVU85 + 359 0168 0529 cmp r1, #5 + 360 016a 18D0 beq .L40 + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 361 .loc 1 266 10 is_stmt 1 view .LVU86 + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 362 .loc 1 266 12 is_stmt 0 view .LVU87 + 363 016c 0629 cmp r1, #6 + 364 016e 1BD0 beq .L41 + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 365 .loc 1 271 10 is_stmt 1 view .LVU88 + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 366 .loc 1 271 12 is_stmt 0 view .LVU89 + 367 0170 0729 cmp r1, #7 + 368 0172 1ED0 beq .L42 + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 369 .loc 1 278 14 view .LVU90 + 370 0174 0120 movs r0, #1 + 371 .LVL18: + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 372 .loc 1 278 14 view .LVU91 + 373 0176 D2E7 b .L4 + 374 .LVL19: + 375 .L36: + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 376 .loc 1 244 8 is_stmt 1 view .LVU92 + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 377 .loc 1 244 20 is_stmt 0 view .LVU93 + 378 0178 4FF47463 mov r3, #3904 + 379 017c 8360 str r3, [r0, #8] + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 380 .loc 1 179 15 view .LVU94 + 381 017e 0020 movs r0, #0 + 382 .LVL20: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 383 .loc 1 179 15 view .LVU95 + 384 0180 CDE7 b .L4 + 385 .LVL21: + 386 .L37: + ARM GAS /tmp/ccmfsuWO.s page 41 + + + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 387 .loc 1 249 8 is_stmt 1 view .LVU96 + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 388 .loc 1 249 20 is_stmt 0 view .LVU97 + 389 0182 4FF47C13 mov r3, #4128768 + 390 0186 8360 str r3, [r0, #8] + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 391 .loc 1 179 15 view .LVU98 + 392 0188 0020 movs r0, #0 + 393 .LVL22: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 394 .loc 1 179 15 view .LVU99 + 395 018a C8E7 b .L4 + 396 .LVL23: + 397 .L38: + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 398 .loc 1 254 8 is_stmt 1 view .LVU100 + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 399 .loc 1 254 20 is_stmt 0 view .LVU101 + 400 018c 4FF07463 mov r3, #255852544 + 401 0190 8360 str r3, [r0, #8] + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 402 .loc 1 179 15 view .LVU102 + 403 0192 0020 movs r0, #0 + 404 .LVL24: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 405 .loc 1 179 15 view .LVU103 + 406 0194 C3E7 b .L4 + 407 .LVL25: + 408 .L39: + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 409 .loc 1 259 8 is_stmt 1 view .LVU104 + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 410 .loc 1 259 20 is_stmt 0 view .LVU105 + 411 0196 3F23 movs r3, #63 + 412 0198 C360 str r3, [r0, #12] + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 413 .loc 1 179 15 view .LVU106 + 414 019a 0020 movs r0, #0 + 415 .LVL26: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 416 .loc 1 179 15 view .LVU107 + 417 019c BFE7 b .L4 + 418 .LVL27: + 419 .L40: + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 420 .loc 1 264 8 is_stmt 1 view .LVU108 + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 421 .loc 1 264 20 is_stmt 0 view .LVU109 + 422 019e 4FF47463 mov r3, #3904 + 423 01a2 C360 str r3, [r0, #12] + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 424 .loc 1 179 15 view .LVU110 + 425 01a4 0020 movs r0, #0 + 426 .LVL28: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 427 .loc 1 179 15 view .LVU111 + ARM GAS /tmp/ccmfsuWO.s page 42 + + + 428 01a6 BAE7 b .L4 + 429 .LVL29: + 430 .L41: + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 431 .loc 1 269 8 is_stmt 1 view .LVU112 + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 432 .loc 1 269 20 is_stmt 0 view .LVU113 + 433 01a8 4FF47C13 mov r3, #4128768 + 434 01ac C360 str r3, [r0, #12] + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 435 .loc 1 179 15 view .LVU114 + 436 01ae 0020 movs r0, #0 + 437 .LVL30: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 438 .loc 1 179 15 view .LVU115 + 439 01b0 B5E7 b .L4 + 440 .LVL31: + 441 .L42: + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 442 .loc 1 274 8 is_stmt 1 view .LVU116 + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 443 .loc 1 274 20 is_stmt 0 view .LVU117 + 444 01b2 4FF07463 mov r3, #255852544 + 445 01b6 C360 str r3, [r0, #12] + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 446 .loc 1 179 15 view .LVU118 + 447 01b8 0020 movs r0, #0 + 448 .LVL32: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 449 .loc 1 179 15 view .LVU119 + 450 01ba B0E7 b .L4 + 451 .L44: + 452 .align 2 + 453 .L43: + 454 01bc 00000000 .word .LANCHOR0 + 455 01c0 00600240 .word 1073897472 + 456 01c4 00640240 .word 1073898496 + 457 01c8 10600240 .word 1073897488 + 458 01cc 10640240 .word 1073898512 + 459 01d0 28600240 .word 1073897512 + 460 01d4 28640240 .word 1073898536 + 461 01d8 40600240 .word 1073897536 + 462 01dc 40640240 .word 1073898560 + 463 01e0 58600240 .word 1073897560 + 464 01e4 58640240 .word 1073898584 + 465 01e8 70600240 .word 1073897584 + 466 01ec 70640240 .word 1073898608 + 467 01f0 88600240 .word 1073897608 + 468 01f4 88640240 .word 1073898632 + 469 01f8 A0600240 .word 1073897632 + 470 01fc A0640240 .word 1073898656 + 471 0200 B8640240 .word 1073898680 + 472 .cfi_endproc + 473 .LFE320: + 475 .section .text.LL_DMA_Init,"ax",%progbits + 476 .align 1 + 477 .global LL_DMA_Init + ARM GAS /tmp/ccmfsuWO.s page 43 + + + 478 .syntax unified + 479 .thumb + 480 .thumb_func + 481 .fpu fpv5-d16 + 483 LL_DMA_Init: + 484 .LVL33: + 485 .LFB321: + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /** + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @brief Initialize the DMA registers according to the specified parameters in DMA_InitStruct. + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @note To convert DMAx_Streamy Instance to DMAx Instance and Streamy, use helper macros : + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref __LL_DMA_GET_INSTANCE + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref __LL_DMA_GET_STREAM + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @param DMAx DMAx Instance + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @param Stream This parameter can be one of the following values: + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_0 + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_1 + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_2 + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_3 + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_4 + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_5 + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_6 + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @arg @ref LL_DMA_STREAM_7 + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @param DMA_InitStruct pointer to a @ref LL_DMA_InitTypeDef structure. + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @retval An ErrorStatus enumeration value: + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - SUCCESS: DMA registers are initialized + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - ERROR: Not applicable + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Stream, LL_DMA_InitTypeDef *DMA_InitStruct) + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 486 .loc 1 306 1 is_stmt 1 view -0 + 487 .cfi_startproc + 488 @ args = 0, pretend = 0, frame = 0 + 489 @ frame_needed = 0, uses_anonymous_args = 0 + 490 @ link register save eliminated. + 491 .loc 1 306 1 is_stmt 0 view .LVU121 + 492 0000 30B4 push {r4, r5} + 493 .LCFI3: + 494 .cfi_def_cfa_offset 8 + 495 .cfi_offset 4, -8 + 496 .cfi_offset 5, -4 + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Check the DMA Instance DMAx and Stream parameters*/ + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_ALL_STREAM_INSTANCE(DMAx, Stream)); + 497 .loc 1 308 3 is_stmt 1 view .LVU122 + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Check the DMA parameters from DMA_InitStruct */ + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_DIRECTION(DMA_InitStruct->Direction)); + 498 .loc 1 311 3 view .LVU123 + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_MODE(DMA_InitStruct->Mode)); + 499 .loc 1 312 3 view .LVU124 + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_PERIPHINCMODE(DMA_InitStruct->PeriphOrM2MSrcIncMode)); + 500 .loc 1 313 3 view .LVU125 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_MEMORYINCMODE(DMA_InitStruct->MemoryOrM2MDstIncMode)); + 501 .loc 1 314 3 view .LVU126 + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_PERIPHDATASIZE(DMA_InitStruct->PeriphOrM2MSrcDataSize)); + 502 .loc 1 315 3 view .LVU127 + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_MEMORYDATASIZE(DMA_InitStruct->MemoryOrM2MDstDataSize)); + ARM GAS /tmp/ccmfsuWO.s page 44 + + + 503 .loc 1 316 3 view .LVU128 + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_NBDATA(DMA_InitStruct->NbData)); + 504 .loc 1 317 3 view .LVU129 + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_CHANNEL(DMA_InitStruct->Channel)); + 505 .loc 1 318 3 view .LVU130 + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_PRIORITY(DMA_InitStruct->Priority)); + 506 .loc 1 319 3 view .LVU131 + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_FIFO_MODE_STATE(DMA_InitStruct->FIFOMode)); + 507 .loc 1 320 3 view .LVU132 + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Check the memory burst, peripheral burst and FIFO threshold parameters only + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** when FIFO mode is enabled */ + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** if(DMA_InitStruct->FIFOMode != LL_DMA_FIFOMODE_DISABLE) + 508 .loc 1 323 3 view .LVU133 + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_FIFO_THRESHOLD(DMA_InitStruct->FIFOThreshold)); + 509 .loc 1 325 5 view .LVU134 + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_MEMORY_BURST(DMA_InitStruct->MemBurst)); + 510 .loc 1 326 5 view .LVU135 + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** assert_param(IS_LL_DMA_PERIPHERAL_BURST(DMA_InitStruct->PeriphBurst)); + 511 .loc 1 327 5 view .LVU136 + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /*---------------------------- DMAx SxCR Configuration ------------------------ + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * Configure DMAx_Streamy: data transfer direction, data transfer mode, + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * peripheral and memory increment mode, + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * data size alignment and priority level with parameters : + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - Direction: DMA_SxCR_DIR[1:0] bits + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - Mode: DMA_SxCR_CIRC bit + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - PeriphOrM2MSrcIncMode: DMA_SxCR_PINC bit + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - MemoryOrM2MDstIncMode: DMA_SxCR_MINC bit + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - PeriphOrM2MSrcDataSize: DMA_SxCR_PSIZE[1:0] bits + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - MemoryOrM2MDstDataSize: DMA_SxCR_MSIZE[1:0] bits + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - Priority: DMA_SxCR_PL[1:0] bits + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_ConfigTransfer(DMAx, Stream, DMA_InitStruct->Direction | \ + 512 .loc 1 342 3 view .LVU137 + 513 .loc 1 342 53 is_stmt 0 view .LVU138 + 514 0002 9368 ldr r3, [r2, #8] + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->Mode | \ + 515 .loc 1 343 39 view .LVU139 + 516 0004 D468 ldr r4, [r2, #12] + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->Mode | \ + 517 .loc 1 342 65 view .LVU140 + 518 0006 2343 orrs r3, r3, r4 + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->PeriphOrM2MSrcIncMode | \ + 519 .loc 1 344 39 view .LVU141 + 520 0008 1469 ldr r4, [r2, #16] + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->Mode | \ + 521 .loc 1 343 65 view .LVU142 + 522 000a 2343 orrs r3, r3, r4 + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->MemoryOrM2MDstIncMode | \ + 523 .loc 1 345 39 view .LVU143 + 524 000c 5469 ldr r4, [r2, #20] + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->PeriphOrM2MSrcIncMode | \ + 525 .loc 1 344 65 view .LVU144 + 526 000e 2343 orrs r3, r3, r4 + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->PeriphOrM2MSrcDataSize | \ + ARM GAS /tmp/ccmfsuWO.s page 45 + + + 527 .loc 1 346 39 view .LVU145 + 528 0010 9469 ldr r4, [r2, #24] + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->MemoryOrM2MDstIncMode | \ + 529 .loc 1 345 65 view .LVU146 + 530 0012 2343 orrs r3, r3, r4 + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->MemoryOrM2MDstDataSize | \ + 531 .loc 1 347 39 view .LVU147 + 532 0014 D469 ldr r4, [r2, #28] + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->PeriphOrM2MSrcDataSize | \ + 533 .loc 1 346 65 view .LVU148 + 534 0016 2343 orrs r3, r3, r4 + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->Priority + 535 .loc 1 348 39 view .LVU149 + 536 0018 946A ldr r4, [r2, #40] + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->Mode | \ + 537 .loc 1 342 3 view .LVU150 + 538 001a 2343 orrs r3, r3, r4 + 539 .LVL34: + 540 .LBB46: + 541 .LBI46: + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 542 .loc 2 572 22 is_stmt 1 view .LVU151 + 543 .LBB47: + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_Sx + 544 .loc 2 574 3 view .LVU152 + 545 001c 1B4C ldr r4, .L48 + 546 001e 615C ldrb r1, [r4, r1] @ zero_extendqisi2 + 547 .LVL35: + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_Sx + 548 .loc 2 574 3 is_stmt 0 view .LVU153 + 549 0020 01EB000C add ip, r1, r0 + 550 0024 0D58 ldr r5, [r1, r0] + 551 0026 1A4C ldr r4, .L48+4 + 552 0028 2C40 ands r4, r4, r5 + 553 002a 2343 orrs r3, r3, r4 + 554 .LVL36: + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_Sx + 555 .loc 2 574 3 view .LVU154 + 556 002c 0B50 str r3, [r1, r0] + 557 .LVL37: + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_Sx + 558 .loc 2 574 3 view .LVU155 + 559 .LBE47: + 560 .LBE46: + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** ); + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** if(DMA_InitStruct->FIFOMode != LL_DMA_FIFOMODE_DISABLE) + 561 .loc 1 351 3 is_stmt 1 view .LVU156 + 562 .loc 1 351 20 is_stmt 0 view .LVU157 + 563 002e D36A ldr r3, [r2, #44] + 564 .loc 1 351 5 view .LVU158 + 565 0030 A3B1 cbz r3, .L46 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /*---------------------------- DMAx SxFCR Configuration ------------------------ + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * Configure DMAx_Streamy: fifo mode and fifo threshold with parameters : + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - FIFOMode: DMA_SxFCR_DMDIS bit + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - FIFOThreshold: DMA_SxFCR_FTH[1:0] bits + ARM GAS /tmp/ccmfsuWO.s page 46 + + + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_ConfigFifo(DMAx, Stream, DMA_InitStruct->FIFOMode, DMA_InitStruct->FIFOThreshold); + 566 .loc 1 358 5 is_stmt 1 view .LVU159 + 567 0032 156B ldr r5, [r2, #48] + 568 .LVL38: + 569 .LBB48: + 570 .LBI48: +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get the Channel number associated to the Stream. +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CHSEL LL_DMA_GetChannelSelection +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_0 +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_1 +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_2 +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_3 +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_4 +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_5 +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_6 +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_7 +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_8 (*) +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_9 (*) +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_10 (*) +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_11 (*) +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_12 (*) +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_13 (*) +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_14 (*) +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CHANNEL_15 (*) +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * (*) value not defined in all devices. +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetChannelSelection(DMA_TypeDef *DMAx, uint32_t Stream) +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Memory burst transfer configuration. +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MBURST LL_DMA_SetMemoryBurstxfer +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 + ARM GAS /tmp/ccmfsuWO.s page 47 + + +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Mburst This parameter can be one of the following values: +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_SINGLE +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC4 +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC8 +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC16 +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mburst) +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Memory burst transfer configuration. +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR MBURST LL_DMA_GetMemoryBurstxfer +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_SINGLE +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC4 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC8 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_MBURST_INC16 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream) +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Peripheral burst transfer configuration. +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PBURST LL_DMA_SetPeriphBurstxfer +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Pburst This parameter can be one of the following values: +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_SINGLE +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC4 +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC8 +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC16 + ARM GAS /tmp/ccmfsuWO.s page 48 + + +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pburst) +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get Peripheral burst transfer configuration. +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR PBURST LL_DMA_GetPeriphBurstxfer +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_SINGLE +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC4 +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC8 +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_PBURST_INC16 +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream) +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0. +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CT LL_DMA_SetCurrentTargetMem +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param CurrentMemory This parameter can be one of the following values: +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM0 +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM1 +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Curren +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0. +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR CT LL_DMA_GetCurrentTargetMem + ARM GAS /tmp/ccmfsuWO.s page 49 + + +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM0 +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_CURRENTTARGETMEM1 +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream) +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable the double buffer mode. +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DBM LL_DMA_EnableDoubleBufferMode +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, DMA +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Disable the double buffer mode. +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll CR DBM LL_DMA_DisableDoubleBufferMode +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->CR, D + ARM GAS /tmp/ccmfsuWO.s page 50 + + +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get FIFO status. +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FS LL_DMA_GetFIFOStatus +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_0_25 +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_25_50 +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_50_75 +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_75_100 +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_EMPTY +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOSTATUS_FULL +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(DMA_TypeDef *DMAx, uint32_t Stream) +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Disable Fifo mode. +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR DMDIS LL_DMA_DisableFifoMode +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_DisableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** CLEAR_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Enable Fifo mode. +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR DMDIS LL_DMA_EnableFifoMode +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 + ARM GAS /tmp/ccmfsuWO.s page 51 + + +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_EnableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** SET_BIT(((DMA_Stream_TypeDef *)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, DM +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Select FIFO threshold. +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FTH LL_DMA_SetFIFOThreshold +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Threshold This parameter can be one of the following values: +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Threshold +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Get FIFO threshold. +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FTH LL_DMA_GetFIFOThreshold +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval Returned value can be one of the following values: +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream) +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + ARM GAS /tmp/ccmfsuWO.s page 52 + + +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** return (READ_BIT(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))- +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Configure the FIFO . +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll FCR FTH LL_DMA_ConfigFifo\n +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * FCR DMDIS LL_DMA_ConfigFifo +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param FifoMode This parameter can be one of the following values: +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOMODE_ENABLE +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOMODE_DISABLE +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param FifoThreshold This parameter can be one of the following values: +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4 +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2 +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ConfigFifo(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t FifoMode, uint3 + 571 .loc 2 1397 22 view .LVU160 + 572 .LBB49: +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** MODIFY_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->FCR, + 573 .loc 2 1399 3 view .LVU161 + 574 0034 DCF81440 ldr r4, [ip, #20] + 575 0038 24F00704 bic r4, r4, #7 + 576 003c 2B43 orrs r3, r3, r5 + 577 .LVL39: + 578 .loc 2 1399 3 is_stmt 0 view .LVU162 + 579 003e 2343 orrs r3, r3, r4 + 580 0040 CCF81430 str r3, [ip, #20] + 581 .LVL40: + 582 .loc 2 1399 3 view .LVU163 + 583 .LBE49: + 584 .LBE48: + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /*---------------------------- DMAx SxCR Configuration -------------------------- + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * Configure DMAx_Streamy: memory burst transfer with parameters : + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - MemBurst: DMA_SxCR_MBURST[1:0] bits + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_SetMemoryBurstxfer(DMAx,Stream,DMA_InitStruct->MemBurst); + 585 .loc 1 364 5 is_stmt 1 view .LVU164 + 586 0044 536B ldr r3, [r2, #52] + 587 .LVL41: + 588 .LBB50: + 589 .LBI50: +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 590 .loc 2 1095 22 view .LVU165 + ARM GAS /tmp/ccmfsuWO.s page 53 + + + 591 .LBB51: +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 592 .loc 2 1097 3 view .LVU166 + 593 0046 0C58 ldr r4, [r1, r0] + 594 0048 24F0C074 bic r4, r4, #25165824 + 595 004c 2343 orrs r3, r3, r4 + 596 .LVL42: +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 597 .loc 2 1097 3 is_stmt 0 view .LVU167 + 598 004e 0B50 str r3, [r1, r0] + 599 .LVL43: +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 600 .loc 2 1097 3 view .LVU168 + 601 .LBE51: + 602 .LBE50: + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /*---------------------------- DMAx SxCR Configuration -------------------------- + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * Configure DMAx_Streamy: peripheral burst transfer with parameters : + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - PeriphBurst: DMA_SxCR_PBURST[1:0] bits + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_SetPeriphBurstxfer(DMAx,Stream,DMA_InitStruct->PeriphBurst); + 603 .loc 1 370 5 is_stmt 1 view .LVU169 + 604 0050 936B ldr r3, [r2, #56] + 605 .LVL44: + 606 .LBB52: + 607 .LBI52: +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 608 .loc 2 1144 22 view .LVU170 + 609 .LBB53: +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 610 .loc 2 1146 3 view .LVU171 + 611 0052 0C58 ldr r4, [r1, r0] + 612 0054 24F4C004 bic r4, r4, #6291456 + 613 0058 2343 orrs r3, r3, r4 + 614 .LVL45: +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 615 .loc 2 1146 3 is_stmt 0 view .LVU172 + 616 005a 0B50 str r3, [r1, r0] + 617 .LVL46: + 618 .L46: +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 619 .loc 2 1146 3 view .LVU173 + 620 .LBE53: + 621 .LBE52: + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /*-------------------------- DMAx SxM0AR Configuration -------------------------- + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * Configure the memory or destination base address with parameter : + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - MemoryOrM2MDstAddress: DMA_SxM0AR_M0A[31:0] bits + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_SetMemoryAddress(DMAx, Stream, DMA_InitStruct->MemoryOrM2MDstAddress); + 622 .loc 1 377 3 is_stmt 1 view .LVU174 + 623 005c 5368 ldr r3, [r2, #4] + 624 .LVL47: + 625 .LBB54: + 626 .LBI54: +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + ARM GAS /tmp/ccmfsuWO.s page 54 + + +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Configure the Source and Destination addresses. +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA stream is enabled. +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_ConfigAddresses\n +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * PAR PA LL_DMA_ConfigAddresses +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param SrcAddress Between 0 to 0xFFFFFFFF +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DstAddress Between 0 to 0xFFFFFFFF +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Direction This parameter can be one of the following values: +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t SrcAddress +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Direction Memory to Periph */ +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /* Direction Periph to Memory and Memory to Memory */ +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** else +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set the Memory address. +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll M0AR M0A LL_DMA_SetMemoryAddress +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMO +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA channel is enabled. +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param MemoryAddress Between 0 to 0xFFFFFFFF +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None + ARM GAS /tmp/ccmfsuWO.s page 55 + + +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t MemoryAdd + 627 .loc 2 1459 22 view .LVU175 + 628 .LBB55: +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->M0AR, + 629 .loc 2 1461 3 view .LVU176 + 630 005e CCF80C30 str r3, [ip, #12] + 631 .LVL48: + 632 .loc 2 1461 3 is_stmt 0 view .LVU177 + 633 .LBE55: + 634 .LBE54: + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /*-------------------------- DMAx SxPAR Configuration --------------------------- + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * Configure the peripheral or source base address with parameter : + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - PeriphOrM2MSrcAddress: DMA_SxPAR_PA[31:0] bits + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_SetPeriphAddress(DMAx, Stream, DMA_InitStruct->PeriphOrM2MSrcAddress); + 635 .loc 1 383 3 is_stmt 1 view .LVU178 + 636 0062 1368 ldr r3, [r2] + 637 .LVL49: + 638 .LBB56: + 639 .LBI56: +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** /** +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @brief Set the Peripheral address. +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @rmtoll PAR PA LL_DMA_SetPeriphAddress +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMO +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @note This API must not be called when the DMA channel is enabled. +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param DMAx DMAx Instance +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param Stream This parameter can be one of the following values: +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_0 +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_1 +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_2 +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_3 +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_4 +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_5 +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_6 +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @arg @ref LL_DMA_STREAM_7 +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @param PeriphAddress Between 0 to 0xFFFFFFFF +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** * @retval None +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** */ +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef* DMAx, uint32_t Stream, uint32_t PeriphAdd + 640 .loc 2 1482 22 view .LVU179 + 641 .LBB57: +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** WRITE_REG(((DMA_Stream_TypeDef*)((uint32_t)((uint32_t)DMAx + STREAM_OFFSET_TAB[Stream])))->PAR, P + 642 .loc 2 1484 3 view .LVU180 + 643 0064 CCF80830 str r3, [ip, #8] + 644 .LVL50: + 645 .loc 2 1484 3 is_stmt 0 view .LVU181 + 646 .LBE57: + 647 .LBE56: + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /*--------------------------- DMAx SxNDTR Configuration ------------------------- + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * Configure the peripheral base address with parameter : + ARM GAS /tmp/ccmfsuWO.s page 56 + + + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - NbData: DMA_SxNDT[15:0] bits + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_SetDataLength(DMAx, Stream, DMA_InitStruct->NbData); + 648 .loc 1 389 3 is_stmt 1 view .LVU182 + 649 0068 136A ldr r3, [r2, #32] + 650 .LVL51: + 651 .LBB58: + 652 .LBI58: + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 653 .loc 2 971 22 view .LVU183 + 654 .LBB59: + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 655 .loc 2 973 3 view .LVU184 + 656 006a DCF80450 ldr r5, [ip, #4] + 657 006e 094C ldr r4, .L48+8 + 658 0070 2C40 ands r4, r4, r5 + 659 0072 2343 orrs r3, r3, r4 + 660 .LVL52: + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 661 .loc 2 973 3 is_stmt 0 view .LVU185 + 662 0074 CCF80430 str r3, [ip, #4] + 663 .LVL53: + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 664 .loc 2 973 3 view .LVU186 + 665 .LBE59: + 666 .LBE58: + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /*--------------------------- DMA SxCR_CHSEL Configuration ---------------------- + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * Configure the peripheral base address with parameter : + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * - PeriphRequest: DMA_SxCR_CHSEL[3:0] bits + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** LL_DMA_SetChannelSelection(DMAx, Stream, DMA_InitStruct->Channel); + 667 .loc 1 395 3 is_stmt 1 view .LVU187 + 668 0078 536A ldr r3, [r2, #36] + 669 .LVL54: + 670 .LBB60: + 671 .LBI60: +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** { + 672 .loc 2 1032 22 view .LVU188 + 673 .LBB61: +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 674 .loc 2 1034 3 view .LVU189 + 675 007a 0A58 ldr r2, [r1, r0] + 676 .LVL55: +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 677 .loc 2 1034 3 is_stmt 0 view .LVU190 + 678 007c 22F0F052 bic r2, r2, #503316480 + 679 0080 1343 orrs r3, r3, r2 + 680 .LVL56: +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 681 .loc 2 1034 3 view .LVU191 + 682 0082 0B50 str r3, [r1, r0] + 683 .LVL57: +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h **** } + 684 .loc 2 1034 3 view .LVU192 + 685 .LBE61: + 686 .LBE60: + ARM GAS /tmp/ccmfsuWO.s page 57 + + + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** return SUCCESS; + 687 .loc 1 397 3 is_stmt 1 view .LVU193 + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 688 .loc 1 398 1 is_stmt 0 view .LVU194 + 689 0084 0020 movs r0, #0 + 690 .LVL58: + 691 .loc 1 398 1 view .LVU195 + 692 0086 30BC pop {r4, r5} + 693 .LCFI4: + 694 .cfi_restore 5 + 695 .cfi_restore 4 + 696 .cfi_def_cfa_offset 0 + 697 0088 7047 bx lr + 698 .L49: + 699 008a 00BF .align 2 + 700 .L48: + 701 008c 00000000 .word .LANCHOR0 + 702 0090 1F80FCFF .word -229345 + 703 0094 0000FFFF .word -65536 + 704 .cfi_endproc + 705 .LFE321: + 707 .section .text.LL_DMA_StructInit,"ax",%progbits + 708 .align 1 + 709 .global LL_DMA_StructInit + 710 .syntax unified + 711 .thumb + 712 .thumb_func + 713 .fpu fpv5-d16 + 715 LL_DMA_StructInit: + 716 .LVL59: + 717 .LFB322: + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /** + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @brief Set each @ref LL_DMA_InitTypeDef field to default value. + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @param DMA_InitStruct Pointer to a @ref LL_DMA_InitTypeDef structure. + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** * @retval None + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** */ + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct) + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** { + 718 .loc 1 406 1 is_stmt 1 view -0 + 719 .cfi_startproc + 720 @ args = 0, pretend = 0, frame = 0 + 721 @ frame_needed = 0, uses_anonymous_args = 0 + 722 @ link register save eliminated. + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** /* Set DMA_InitStruct fields to default values */ + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->PeriphOrM2MSrcAddress = 0x00000000U; + 723 .loc 1 408 3 view .LVU197 + 724 .loc 1 408 42 is_stmt 0 view .LVU198 + 725 0000 0023 movs r3, #0 + 726 0002 0360 str r3, [r0] + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->MemoryOrM2MDstAddress = 0x00000000U; + 727 .loc 1 409 3 is_stmt 1 view .LVU199 + 728 .loc 1 409 42 is_stmt 0 view .LVU200 + 729 0004 4360 str r3, [r0, #4] + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->Direction = LL_DMA_DIRECTION_PERIPH_TO_MEMORY; + 730 .loc 1 410 3 is_stmt 1 view .LVU201 + ARM GAS /tmp/ccmfsuWO.s page 58 + + + 731 .loc 1 410 42 is_stmt 0 view .LVU202 + 732 0006 8360 str r3, [r0, #8] + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->Mode = LL_DMA_MODE_NORMAL; + 733 .loc 1 411 3 is_stmt 1 view .LVU203 + 734 .loc 1 411 42 is_stmt 0 view .LVU204 + 735 0008 C360 str r3, [r0, #12] + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->PeriphOrM2MSrcIncMode = LL_DMA_PERIPH_NOINCREMENT; + 736 .loc 1 412 3 is_stmt 1 view .LVU205 + 737 .loc 1 412 42 is_stmt 0 view .LVU206 + 738 000a 0361 str r3, [r0, #16] + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->MemoryOrM2MDstIncMode = LL_DMA_MEMORY_NOINCREMENT; + 739 .loc 1 413 3 is_stmt 1 view .LVU207 + 740 .loc 1 413 42 is_stmt 0 view .LVU208 + 741 000c 4361 str r3, [r0, #20] + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->PeriphOrM2MSrcDataSize = LL_DMA_PDATAALIGN_BYTE; + 742 .loc 1 414 3 is_stmt 1 view .LVU209 + 743 .loc 1 414 42 is_stmt 0 view .LVU210 + 744 000e 8361 str r3, [r0, #24] + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->MemoryOrM2MDstDataSize = LL_DMA_MDATAALIGN_BYTE; + 745 .loc 1 415 3 is_stmt 1 view .LVU211 + 746 .loc 1 415 42 is_stmt 0 view .LVU212 + 747 0010 C361 str r3, [r0, #28] + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->NbData = 0x00000000U; + 748 .loc 1 416 3 is_stmt 1 view .LVU213 + 749 .loc 1 416 42 is_stmt 0 view .LVU214 + 750 0012 0362 str r3, [r0, #32] + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->Channel = LL_DMA_CHANNEL_0; + 751 .loc 1 417 3 is_stmt 1 view .LVU215 + 752 .loc 1 417 42 is_stmt 0 view .LVU216 + 753 0014 4362 str r3, [r0, #36] + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->Priority = LL_DMA_PRIORITY_LOW; + 754 .loc 1 418 3 is_stmt 1 view .LVU217 + 755 .loc 1 418 42 is_stmt 0 view .LVU218 + 756 0016 8362 str r3, [r0, #40] + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->FIFOMode = LL_DMA_FIFOMODE_DISABLE; + 757 .loc 1 419 3 is_stmt 1 view .LVU219 + 758 .loc 1 419 42 is_stmt 0 view .LVU220 + 759 0018 C362 str r3, [r0, #44] + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->FIFOThreshold = LL_DMA_FIFOTHRESHOLD_1_4; + 760 .loc 1 420 3 is_stmt 1 view .LVU221 + 761 .loc 1 420 42 is_stmt 0 view .LVU222 + 762 001a 0363 str r3, [r0, #48] + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->MemBurst = LL_DMA_MBURST_SINGLE; + 763 .loc 1 421 3 is_stmt 1 view .LVU223 + 764 .loc 1 421 42 is_stmt 0 view .LVU224 + 765 001c 4363 str r3, [r0, #52] + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** DMA_InitStruct->PeriphBurst = LL_DMA_PBURST_SINGLE; + 766 .loc 1 422 3 is_stmt 1 view .LVU225 + 767 .loc 1 422 42 is_stmt 0 view .LVU226 + 768 001e 8363 str r3, [r0, #56] + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_dma.c **** } + 769 .loc 1 423 1 view .LVU227 + 770 0020 7047 bx lr + 771 .cfi_endproc + 772 .LFE322: + 774 .section .rodata.STREAM_OFFSET_TAB,"a" + 775 .align 2 + ARM GAS /tmp/ccmfsuWO.s page 59 + + + 776 .set .LANCHOR0,. + 0 + 779 STREAM_OFFSET_TAB: + 780 0000 10284058 .ascii "\020(@Xp\210\240\270" + 780 7088A0B8 + 781 .text + 782 .Letext0: + 783 .file 4 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 784 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 785 .file 6 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + ARM GAS /tmp/ccmfsuWO.s page 60 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_ll_dma.c + /tmp/ccmfsuWO.s:17 .text.LL_DMA_DeInit:0000000000000000 $t + /tmp/ccmfsuWO.s:25 .text.LL_DMA_DeInit:0000000000000000 LL_DMA_DeInit + /tmp/ccmfsuWO.s:454 .text.LL_DMA_DeInit:00000000000001bc $d + /tmp/ccmfsuWO.s:476 .text.LL_DMA_Init:0000000000000000 $t + /tmp/ccmfsuWO.s:483 .text.LL_DMA_Init:0000000000000000 LL_DMA_Init + /tmp/ccmfsuWO.s:701 .text.LL_DMA_Init:000000000000008c $d + /tmp/ccmfsuWO.s:708 .text.LL_DMA_StructInit:0000000000000000 $t + /tmp/ccmfsuWO.s:715 .text.LL_DMA_StructInit:0000000000000000 LL_DMA_StructInit + /tmp/ccmfsuWO.s:775 .rodata.STREAM_OFFSET_TAB:0000000000000000 $d + /tmp/ccmfsuWO.s:779 .rodata.STREAM_OFFSET_TAB:0000000000000000 STREAM_OFFSET_TAB + +NO UNDEFINED SYMBOLS diff --git a/build/stm32f7xx_ll_dma.o b/build/stm32f7xx_ll_dma.o new file mode 100644 index 0000000..e29d593 Binary files /dev/null and b/build/stm32f7xx_ll_dma.o differ diff --git a/build/stm32f7xx_ll_exti.d b/build/stm32f7xx_ll_exti.d new file mode 100644 index 0000000..f77c5f5 --- /dev/null +++ b/build/stm32f7xx_ll_exti.d @@ -0,0 +1,66 @@ +build/stm32f7xx_ll_exti.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_ll_exti.lst b/build/stm32f7xx_ll_exti.lst new file mode 100644 index 0000000..ef7cfc1 --- /dev/null +++ b/build/stm32f7xx_ll_exti.lst @@ -0,0 +1,1505 @@ +ARM GAS /tmp/ccGZVeUT.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_ll_exti.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.LL_EXTI_DeInit,"ax",%progbits + 17 .align 1 + 18 .global LL_EXTI_DeInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 LL_EXTI_DeInit: + 26 .LFB157: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @file stm32f7xx_ll_exti.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @brief EXTI LL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #if defined(USE_FULL_LL_DRIVER) + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Includes ------------------------------------------------------------------*/ + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #include "stm32f7xx_ll_exti.h" + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #ifdef USE_FULL_ASSERT + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #include "stm32_assert.h" + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #else + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #define assert_param(expr) ((void)0U) + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #endif + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /** @addtogroup STM32F7xx_LL_Driver + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @{ + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** */ + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + ARM GAS /tmp/ccGZVeUT.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #if defined (EXTI) + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /** @defgroup EXTI_LL EXTI + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @{ + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** */ + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Private types -------------------------------------------------------------*/ + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Private variables ---------------------------------------------------------*/ + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Private constants ---------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Private macros ------------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /** @addtogroup EXTI_LL_Private_Macros + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @{ + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** */ + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #define IS_LL_EXTI_LINE_0_31(__VALUE__) (((__VALUE__) & ~LL_EXTI_LINE_ALL_0_31) == 0x0 + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #define IS_LL_EXTI_MODE(__VALUE__) (((__VALUE__) == LL_EXTI_MODE_IT) \ + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** || ((__VALUE__) == LL_EXTI_MODE_EVENT) \ + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** || ((__VALUE__) == LL_EXTI_MODE_IT_EVENT)) + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** #define IS_LL_EXTI_TRIGGER(__VALUE__) (((__VALUE__) == LL_EXTI_TRIGGER_NONE) \ + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** || ((__VALUE__) == LL_EXTI_TRIGGER_RISING) \ + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** || ((__VALUE__) == LL_EXTI_TRIGGER_FALLING) \ + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** || ((__VALUE__) == LL_EXTI_TRIGGER_RISING_FALLIN + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /** + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @} + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** */ + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Private function prototypes -----------------------------------------------*/ + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Exported functions --------------------------------------------------------*/ + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /** @addtogroup EXTI_LL_Exported_Functions + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @{ + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** */ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /** @addtogroup EXTI_LL_EF_Init + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @{ + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** */ + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /** + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @brief De-initialize the EXTI registers to their default reset values. + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @retval An ErrorStatus enumeration value: + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * - SUCCESS: EXTI registers are de-initialized + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * - ERROR: not applicable + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** */ + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** uint32_t LL_EXTI_DeInit(void) + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** { + 28 .loc 1 80 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Interrupt mask register set to default reset values */ + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_WriteReg(IMR, 0x00000000U); + 33 .loc 1 82 3 view .LVU1 + ARM GAS /tmp/ccGZVeUT.s page 3 + + + 34 0000 054B ldr r3, .L2 + 35 0002 0020 movs r0, #0 + 36 0004 1860 str r0, [r3] + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Event mask register set to default reset values */ + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_WriteReg(EMR, 0x00000000U); + 37 .loc 1 84 3 view .LVU2 + 38 0006 5860 str r0, [r3, #4] + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Rising Trigger selection register set to default reset values */ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_WriteReg(RTSR, 0x00000000U); + 39 .loc 1 86 3 view .LVU3 + 40 0008 9860 str r0, [r3, #8] + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Falling Trigger selection register set to default reset values */ + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_WriteReg(FTSR, 0x00000000U); + 41 .loc 1 88 3 view .LVU4 + 42 000a D860 str r0, [r3, #12] + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Software interrupt event register set to default reset values */ + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_WriteReg(SWIER, 0x00000000U); + 43 .loc 1 90 3 view .LVU5 + 44 000c 1861 str r0, [r3, #16] + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Pending register set to default reset values */ + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_WriteReg(PR, 0x01FFFFFFU); + 45 .loc 1 92 3 view .LVU6 + 46 000e 6FF07E42 mvn r2, #-33554432 + 47 0012 5A61 str r2, [r3, #20] + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** return SUCCESS; + 48 .loc 1 94 3 view .LVU7 + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** } + 49 .loc 1 95 1 is_stmt 0 view .LVU8 + 50 0014 7047 bx lr + 51 .L3: + 52 0016 00BF .align 2 + 53 .L2: + 54 0018 003C0140 .word 1073822720 + 55 .cfi_endproc + 56 .LFE157: + 58 .section .text.LL_EXTI_Init,"ax",%progbits + 59 .align 1 + 60 .global LL_EXTI_Init + 61 .syntax unified + 62 .thumb + 63 .thumb_func + 64 .fpu fpv5-d16 + 66 LL_EXTI_Init: + 67 .LVL0: + 68 .LFB158: + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /** + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @brief Initialize the EXTI registers according to the specified parameters in EXTI_InitStruct. + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @param EXTI_InitStruct pointer to a @ref LL_EXTI_InitTypeDef structure. + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @retval An ErrorStatus enumeration value: + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * - SUCCESS: EXTI registers are initialized + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * - ERROR: not applicable + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** */ + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct) + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** { + 69 .loc 1 105 1 is_stmt 1 view -0 + ARM GAS /tmp/ccGZVeUT.s page 4 + + + 70 .cfi_startproc + 71 @ args = 0, pretend = 0, frame = 0 + 72 @ frame_needed = 0, uses_anonymous_args = 0 + 73 @ link register save eliminated. + 74 .loc 1 105 1 is_stmt 0 view .LVU10 + 75 0000 10B4 push {r4} + 76 .LCFI0: + 77 .cfi_def_cfa_offset 4 + 78 .cfi_offset 4, -4 + 79 0002 0346 mov r3, r0 + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** ErrorStatus status = SUCCESS; + 80 .loc 1 106 3 is_stmt 1 view .LVU11 + 81 .LVL1: + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Check the parameters */ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** assert_param(IS_LL_EXTI_LINE_0_31(EXTI_InitStruct->Line_0_31)); + 82 .loc 1 108 3 view .LVU12 + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->LineCommand)); + 83 .loc 1 109 3 view .LVU13 + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** assert_param(IS_LL_EXTI_MODE(EXTI_InitStruct->Mode)); + 84 .loc 1 110 3 view .LVU14 + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* ENABLE LineCommand */ + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** if (EXTI_InitStruct->LineCommand != DISABLE) + 85 .loc 1 113 3 view .LVU15 + 86 .loc 1 113 22 is_stmt 0 view .LVU16 + 87 0004 0079 ldrb r0, [r0, #4] @ zero_extendqisi2 + 88 .LVL2: + 89 .loc 1 113 6 view .LVU17 + 90 0006 0028 cmp r0, #0 + 91 0008 53D0 beq .L5 + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** { + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** assert_param(IS_LL_EXTI_TRIGGER(EXTI_InitStruct->Trigger)); + 92 .loc 1 115 5 is_stmt 1 view .LVU18 + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Configure EXTI Lines in range from 0 to 31 */ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** if (EXTI_InitStruct->Line_0_31 != LL_EXTI_LINE_NONE) + 93 .loc 1 118 5 view .LVU19 + 94 .loc 1 118 24 is_stmt 0 view .LVU20 + 95 000a 1A68 ldr r2, [r3] + 96 .loc 1 118 8 view .LVU21 + 97 000c 002A cmp r2, #0 + 98 000e 5ED0 beq .L12 + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** { + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** switch (EXTI_InitStruct->Mode) + 99 .loc 1 120 7 is_stmt 1 view .LVU22 + 100 .loc 1 120 30 is_stmt 0 view .LVU23 + 101 0010 5879 ldrb r0, [r3, #5] @ zero_extendqisi2 + 102 .loc 1 120 7 view .LVU24 + 103 0012 0128 cmp r0, #1 + 104 0014 18D0 beq .L7 + 105 0016 0228 cmp r0, #2 + 106 0018 21D0 beq .L8 + 107 001a 58B1 cbz r0, .L16 + 108 001c 0120 movs r0, #1 + 109 .L9: + 110 .LVL3: + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** { + ARM GAS /tmp/ccGZVeUT.s page 5 + + + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** case LL_EXTI_MODE_IT: + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* First Disable Event on provided Lines */ + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31); + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Then Enable IT on provided Lines */ + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31); + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** case LL_EXTI_MODE_EVENT: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* First Disable IT on provided Lines */ + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31); + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Then Enable Event on provided Lines */ + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** case LL_EXTI_MODE_IT_EVENT: + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Directly Enable IT & Event on provided Lines */ + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31); + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** default: + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** status = ERROR; + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** } + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** if (EXTI_InitStruct->Trigger != LL_EXTI_TRIGGER_NONE) + 111 .loc 1 143 7 is_stmt 1 view .LVU25 + 112 .loc 1 143 26 is_stmt 0 view .LVU26 + 113 001e 9A79 ldrb r2, [r3, #6] @ zero_extendqisi2 + 114 .loc 1 143 10 view .LVU27 + 115 0020 002A cmp r2, #0 + 116 0022 51D0 beq .L6 + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** { + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** switch (EXTI_InitStruct->Trigger) + 117 .loc 1 145 9 is_stmt 1 view .LVU28 + 118 0024 022A cmp r2, #2 + 119 0026 2FD0 beq .L10 + 120 0028 032A cmp r2, #3 + 121 002a 38D0 beq .L11 + 122 002c 012A cmp r2, #1 + 123 002e 20D0 beq .L17 + 124 0030 0120 movs r0, #1 + 125 .LVL4: + 126 .loc 1 145 9 is_stmt 0 view .LVU29 + 127 0032 49E0 b .L6 + 128 .LVL5: + 129 .L16: + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Then Enable IT on provided Lines */ + 130 .loc 1 124 11 is_stmt 1 view .LVU30 + 131 .LBB30: + 132 .LBI30: + 133 .file 2 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @file stm32f7xx_ll_exti.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Header file of EXTI LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * Copyright (c) 2017 STMicroelectronics. + ARM GAS /tmp/ccGZVeUT.s page 6 + + + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #ifndef __STM32F7xx_LL_EXTI_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define __STM32F7xx_LL_EXTI_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined (EXTI) + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL EXTI + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /* Private constants ---------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /* Private Macros ------------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(USE_FULL_LL_DRIVER) + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_Private_Macros EXTI Private Macros + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif /*USE_FULL_LL_DRIVER*/ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /* Exported types ------------------------------------------------------------*/ + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(USE_FULL_LL_DRIVER) + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_ES_INIT EXTI Exported Init structure + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** typedef struct + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** uint32_t Line_0_31; /*!< Specifies the EXTI lines to be enabled or disabled for Lines i + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** This parameter can be any combination of @ref EXTI_LL_EC_LINE + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** FunctionalState LineCommand; /*!< Specifies the new state of the selected EXTI lines. + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** This parameter can be set either to ENABLE or DISABLE */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** uint8_t Mode; /*!< Specifies the mode for the EXTI lines. + ARM GAS /tmp/ccGZVeUT.s page 7 + + + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** This parameter can be a value of @ref EXTI_LL_EC_MODE. */ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** uint8_t Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** This parameter can be a value of @ref EXTI_LL_EC_TRIGGER. */ + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } LL_EXTI_InitTypeDef; + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif /*USE_FULL_LL_DRIVER*/ + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /* Exported constants --------------------------------------------------------*/ + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_Exported_Constants EXTI Exported Constants + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_EC_LINE LINE + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_0 EXTI_IMR_IM0 /*!< Extended line 0 */ + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_1 EXTI_IMR_IM1 /*!< Extended line 1 */ + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_2 EXTI_IMR_IM2 /*!< Extended line 2 */ + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_3 EXTI_IMR_IM3 /*!< Extended line 3 */ + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_4 EXTI_IMR_IM4 /*!< Extended line 4 */ + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_5 EXTI_IMR_IM5 /*!< Extended line 5 */ + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_6 EXTI_IMR_IM6 /*!< Extended line 6 */ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_7 EXTI_IMR_IM7 /*!< Extended line 7 */ + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_8 EXTI_IMR_IM8 /*!< Extended line 8 */ + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_9 EXTI_IMR_IM9 /*!< Extended line 9 */ + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_10 EXTI_IMR_IM10 /*!< Extended line 10 */ + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_11 EXTI_IMR_IM11 /*!< Extended line 11 */ + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_12 EXTI_IMR_IM12 /*!< Extended line 12 */ + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_13 EXTI_IMR_IM13 /*!< Extended line 13 */ + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_14 EXTI_IMR_IM14 /*!< Extended line 14 */ + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_15 EXTI_IMR_IM15 /*!< Extended line 15 */ + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM16) + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_16 EXTI_IMR_IM16 /*!< Extended line 16 */ + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_17 EXTI_IMR_IM17 /*!< Extended line 17 */ + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM18) + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_18 EXTI_IMR_IM18 /*!< Extended line 18 */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_19 EXTI_IMR_IM19 /*!< Extended line 19 */ + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM20) + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_20 EXTI_IMR_IM20 /*!< Extended line 20 */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM21) + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_21 EXTI_IMR_IM21 /*!< Extended line 21 */ + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM22) + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_22 EXTI_IMR_IM22 /*!< Extended line 22 */ + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_23 EXTI_IMR_IM23 /*!< Extended line 23 */ + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM24) + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_24 EXTI_IMR_IM24 /*!< Extended line 24 */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM25) + ARM GAS /tmp/ccGZVeUT.s page 8 + + + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_25 EXTI_IMR_IM25 /*!< Extended line 25 */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM26) + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_26 EXTI_IMR_IM26 /*!< Extended line 26 */ + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM27) + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_27 EXTI_IMR_IM27 /*!< Extended line 27 */ + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM28) + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_28 EXTI_IMR_IM28 /*!< Extended line 28 */ + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM29) + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_29 EXTI_IMR_IM29 /*!< Extended line 29 */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM30) + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_30 EXTI_IMR_IM30 /*!< Extended line 30 */ + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(EXTI_IMR_IM31) + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_31 EXTI_IMR_IM31 /*!< Extended line 31 */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_ALL_0_31 EXTI_IMR_IM /*!< All Extended line not reserved*/ + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_ALL (0xFFFFFFFFU) /*!< All Extended line */ + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(USE_FULL_LL_DRIVER) + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_LINE_NONE (0x00000000U) /*!< None Extended line */ + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif /*USE_FULL_LL_DRIVER*/ + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #if defined(USE_FULL_LL_DRIVER) + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_EC_MODE Mode + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_MODE_IT ((uint8_t)0x00U) /*!< Interrupt Mode */ + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_MODE_EVENT ((uint8_t)0x01U) /*!< Event Mode */ + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_MODE_IT_EVENT ((uint8_t)0x02U) /*!< Interrupt & Event Mode */ + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_EC_TRIGGER Edge Trigger + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_TRIGGER_NONE ((uint8_t)0x00U) /*!< No Trigger Mode */ + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_TRIGGER_RISING ((uint8_t)0x01U) /*!< Trigger Rising Mode */ + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_TRIGGER_FALLING ((uint8_t)0x02U) /*!< Trigger Falling Mode */ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_TRIGGER_RISING_FALLING ((uint8_t)0x03U) /*!< Trigger Rising & Falling Mode */ + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + ARM GAS /tmp/ccGZVeUT.s page 9 + + + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #endif /*USE_FULL_LL_DRIVER*/ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /* Exported macro ------------------------------------------------------------*/ + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_Exported_Macros EXTI Exported Macros + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_EM_WRITE_READ Common Write and read registers Macros + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Write a value in EXTI register + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param __REG__ Register to be written + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param __VALUE__ Value to be written in the register + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval None + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_WriteReg(__REG__, __VALUE__) WRITE_REG(EXTI->__REG__, (__VALUE__)) + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Read a value in EXTI register + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param __REG__ Register to be read + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval Register value + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** #define LL_EXTI_ReadReg(__REG__) READ_REG(EXTI->__REG__) + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /* Exported functions --------------------------------------------------------*/ + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_Exported_Functions EXTI Exported Functions + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_EF_IT_Management IT_Management + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Enable ExtiLine Interrupt request for Lines in range 0 to 31 + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note The reset value for the direct or internal lines (see RM) + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * is set to 1 in order to enable the interrupt by default. + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * Bits are set automatically at Power on. + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll IMR IMx LL_EXTI_EnableIT_0_31 + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be one of the following values: + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + ARM GAS /tmp/ccGZVeUT.s page 10 + + + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_17 + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_23 + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_24(*) + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_ALL_0_31 + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note (*): Available in some devices + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval None + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE void LL_EXTI_EnableIT_0_31(uint32_t ExtiLine) + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** SET_BIT(EXTI->IMR, ExtiLine); + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Disable ExtiLine Interrupt request for Lines in range 0 to 31 + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note The reset value for the direct or internal lines (see RM) + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * is set to 1 in order to enable the interrupt by default. + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * Bits are set automatically at Power on. + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll IMR IMx LL_EXTI_DisableIT_0_31 + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be one of the following values: + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + ARM GAS /tmp/ccGZVeUT.s page 11 + + + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_17 + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_23 + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_24(*) + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_ALL_0_31 + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note (*): Available in some devices + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval None + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE void LL_EXTI_DisableIT_0_31(uint32_t ExtiLine) + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** CLEAR_BIT(EXTI->IMR, ExtiLine); + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Indicate if ExtiLine Interrupt request is enabled for Lines in range 0 to 31 + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note The reset value for the direct or internal lines (see RM) + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * is set to 1 in order to enable the interrupt by default. + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * Bits are set automatically at Power on. + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll IMR IMx LL_EXTI_IsEnabledIT_0_31 + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be one of the following values: + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_17 + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_23 + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_24(*) + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_ALL_0_31 + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note (*): Available in some devices + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval State of bit (1 or 0). + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + ARM GAS /tmp/ccGZVeUT.s page 12 + + + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine) + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** return (READ_BIT(EXTI->IMR, ExtiLine) == (ExtiLine)); + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_EF_Event_Management Event_Management + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Enable ExtiLine Event request for Lines in range 0 to 31 + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll EMR EMx LL_EXTI_EnableEvent_0_31 + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be one of the following values: + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_17 + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_23 + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_24(*) + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_ALL_0_31 + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note (*): Available in some devices + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval None + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine) + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** SET_BIT(EXTI->EMR, ExtiLine); + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Disable ExtiLine Event request for Lines in range 0 to 31 + ARM GAS /tmp/ccGZVeUT.s page 13 + + + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll EMR EMx LL_EXTI_DisableEvent_0_31 + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be one of the following values: + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_17 + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_23 + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_24(*) + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_ALL_0_31 + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note (*): Available in some devices + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval None + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE void LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine) + 134 .loc 2 441 22 view .LVU31 + 135 .LBB31: + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** CLEAR_BIT(EXTI->EMR, ExtiLine); + 136 .loc 2 443 3 view .LVU32 + 137 0034 2749 ldr r1, .L18 + 138 0036 4C68 ldr r4, [r1, #4] + 139 0038 24EA0202 bic r2, r4, r2 + 140 .LVL6: + 141 .loc 2 443 3 is_stmt 0 view .LVU33 + 142 003c 4A60 str r2, [r1, #4] + 143 .LVL7: + 144 .loc 2 443 3 view .LVU34 + 145 .LBE31: + 146 .LBE30: + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 147 .loc 1 126 11 is_stmt 1 view .LVU35 + 148 003e 1A68 ldr r2, [r3] + 149 .LVL8: + 150 .LBB32: + 151 .LBI32: + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 152 .loc 2 267 22 view .LVU36 + 153 .LBB33: + ARM GAS /tmp/ccGZVeUT.s page 14 + + + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 154 .loc 2 269 3 view .LVU37 + 155 0040 0C68 ldr r4, [r1] + 156 0042 2243 orrs r2, r2, r4 + 157 .LVL9: + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 158 .loc 2 269 3 is_stmt 0 view .LVU38 + 159 0044 0A60 str r2, [r1] + 160 .LVL10: + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 161 .loc 2 270 1 view .LVU39 + 162 0046 EAE7 b .L9 + 163 .L7: + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 164 .loc 2 270 1 view .LVU40 + 165 .LBE33: + 166 .LBE32: + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Then Enable Event on provided Lines */ + 167 .loc 1 130 11 is_stmt 1 view .LVU41 + 168 .LVL11: + 169 .LBB34: + 170 .LBI34: + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 171 .loc 2 309 22 view .LVU42 + 172 .LBB35: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 173 .loc 2 311 3 view .LVU43 + 174 0048 2249 ldr r1, .L18 + 175 004a 0868 ldr r0, [r1] + 176 004c 20EA0202 bic r2, r0, r2 + 177 .LVL12: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 178 .loc 2 311 3 is_stmt 0 view .LVU44 + 179 0050 0A60 str r2, [r1] + 180 .LVL13: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 181 .loc 2 311 3 view .LVU45 + 182 .LBE35: + 183 .LBE34: + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 184 .loc 1 132 11 is_stmt 1 view .LVU46 + 185 0052 1A68 ldr r2, [r3] + 186 .LVL14: + 187 .LBB36: + 188 .LBI36: + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 189 .loc 2 400 22 view .LVU47 + 190 .LBB37: + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 191 .loc 2 402 3 view .LVU48 + 192 0054 4868 ldr r0, [r1, #4] + 193 0056 0243 orrs r2, r2, r0 + 194 .LVL15: + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 195 .loc 2 402 3 is_stmt 0 view .LVU49 + 196 0058 4A60 str r2, [r1, #4] + 197 .LVL16: + ARM GAS /tmp/ccGZVeUT.s page 15 + + + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 198 .loc 2 402 3 view .LVU50 + 199 .LBE37: + 200 .LBE36: + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Check the parameters */ + 201 .loc 1 106 15 view .LVU51 + 202 005a 0020 movs r0, #0 + 203 .LBB39: + 204 .LBB38: + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 205 .loc 2 404 1 view .LVU52 + 206 005c DFE7 b .L9 + 207 .L8: + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 208 .loc 2 404 1 view .LVU53 + 209 .LBE38: + 210 .LBE39: + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + 211 .loc 1 136 11 is_stmt 1 view .LVU54 + 212 .LVL17: + 213 .LBB40: + 214 .LBI40: + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 215 .loc 2 267 22 view .LVU55 + 216 .LBB41: + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 217 .loc 2 269 3 view .LVU56 + 218 005e 1D49 ldr r1, .L18 + 219 0060 0868 ldr r0, [r1] + 220 0062 0243 orrs r2, r2, r0 + 221 .LVL18: + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 222 .loc 2 269 3 is_stmt 0 view .LVU57 + 223 0064 0A60 str r2, [r1] + 224 .LVL19: + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 225 .loc 2 269 3 view .LVU58 + 226 .LBE41: + 227 .LBE40: + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 228 .loc 1 137 11 is_stmt 1 view .LVU59 + 229 0066 1A68 ldr r2, [r3] + 230 .LVL20: + 231 .LBB42: + 232 .LBI42: + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 233 .loc 2 400 22 view .LVU60 + 234 .LBB43: + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 235 .loc 2 402 3 view .LVU61 + 236 0068 4868 ldr r0, [r1, #4] + 237 006a 0243 orrs r2, r2, r0 + 238 .LVL21: + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 239 .loc 2 402 3 is_stmt 0 view .LVU62 + 240 006c 4A60 str r2, [r1, #4] + 241 .LVL22: + ARM GAS /tmp/ccGZVeUT.s page 16 + + + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 242 .loc 2 402 3 view .LVU63 + 243 .LBE43: + 244 .LBE42: + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Check the parameters */ + 245 .loc 1 106 15 view .LVU64 + 246 006e 0020 movs r0, #0 + 247 .LBB45: + 248 .LBB44: + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 249 .loc 2 404 1 view .LVU65 + 250 0070 D5E7 b .L9 + 251 .LVL23: + 252 .L17: + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 253 .loc 2 404 1 view .LVU66 + 254 .LBE44: + 255 .LBE45: + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** { + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** case LL_EXTI_TRIGGER_RISING: + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* First Disable Falling Trigger on provided Lines */ + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_DisableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + 256 .loc 1 149 13 is_stmt 1 view .LVU67 + 257 0072 1C68 ldr r4, [r3] + 258 .LVL24: + 259 .LBB46: + 260 .LBI46: + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Indicate if ExtiLine Event request is enabled for Lines in range 0 to 31 + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll EMR EMx LL_EXTI_IsEnabledEvent_0_31 + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be one of the following values: + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_17 + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + ARM GAS /tmp/ccGZVeUT.s page 17 + + + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_23 + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_24(*) + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_ALL_0_31 + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note (*): Available in some devices + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval State of bit (1 or 0). + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine) + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** return (READ_BIT(EXTI->EMR, ExtiLine) == (ExtiLine)); + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_EF_Rising_Trigger_Management Rising_Trigger_Management + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Enable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note The configurable wakeup lines are edge-triggered. No glitch must be + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * generated on these lines. If a rising edge on a configurable interrupt + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * line occurs during a write operation in the EXTI_RTSR register, the + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * pending bit is not set. + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * Rising and falling edge triggers can be set for + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * the same interrupt line. In this case, both generate a trigger + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * condition. + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll RTSR RTx LL_EXTI_EnableRisingTrig_0_31 + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be a combination of the following values: + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval None + ARM GAS /tmp/ccGZVeUT.s page 18 + + + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE void LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine) + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** SET_BIT(EXTI->RTSR, ExtiLine); + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Disable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note The configurable wakeup lines are edge-triggered. No glitch must be + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * generated on these lines. If a rising edge on a configurable interrupt + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * line occurs during a write operation in the EXTI_RTSR register, the + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * pending bit is not set. + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * Rising and falling edge triggers can be set for + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * the same interrupt line. In this case, both generate a trigger + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * condition. + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll RTSR RTx LL_EXTI_DisableRisingTrig_0_31 + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be a combination of the following values: + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval None + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE void LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine) + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** CLEAR_BIT(EXTI->RTSR, ExtiLine); + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Check if rising edge trigger is enabled for Lines in range 0 to 31 + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll RTSR RTx LL_EXTI_IsEnabledRisingTrig_0_31 + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be a combination of the following values: + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + ARM GAS /tmp/ccGZVeUT.s page 19 + + + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval State of bit (1 or 0). + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine) + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** return (READ_BIT(EXTI->RTSR, ExtiLine) == (ExtiLine)); + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @} + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** @defgroup EXTI_LL_EF_Falling_Trigger_Management Falling_Trigger_Management + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @{ + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Enable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note The configurable wakeup lines are edge-triggered. No glitch must be + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * generated on these lines. If a falling edge on a configurable interrupt + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * line occurs during a write operation in the EXTI_FTSR register, the + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * pending bit is not set. + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * Rising and falling edge triggers can be set for + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * the same interrupt line. In this case, both generate a trigger + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * condition. + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll FTSR FTx LL_EXTI_EnableFallingTrig_0_31 + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be a combination of the following values: + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + ARM GAS /tmp/ccGZVeUT.s page 20 + + + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval None + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE void LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine) + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** SET_BIT(EXTI->FTSR, ExtiLine); + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** /** + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @brief Disable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note The configurable wakeup lines are edge-triggered. No glitch must be + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * generated on these lines. If a Falling edge on a configurable interrupt + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * line occurs during a write operation in the EXTI_FTSR register, the + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * pending bit is not set. + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * Rising and falling edge triggers can be set for the same interrupt line. + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * In this case, both generate a trigger condition. + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @rmtoll FTSR FTx LL_EXTI_DisableFallingTrig_0_31 + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @param ExtiLine This parameter can be a combination of the following values: + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_0 + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_1 + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_2 + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_3 + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_4 + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_5 + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_6 + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_7 + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_8 + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_9 + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_10 + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_11 + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_12 + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_13 + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_14 + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_15 + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_16 + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_18 + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_19 + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_20 + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_21 + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @arg @ref LL_EXTI_LINE_22 + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @note Please check each device line mapping for EXTI Line availability + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** * @retval None + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** */ + ARM GAS /tmp/ccGZVeUT.s page 21 + + + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** __STATIC_INLINE void LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine) + 261 .loc 2 702 22 view .LVU68 + 262 .LBB47: + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** CLEAR_BIT(EXTI->FTSR, ExtiLine); + 263 .loc 2 704 3 view .LVU69 + 264 0074 174A ldr r2, .L18 + 265 0076 D168 ldr r1, [r2, #12] + 266 0078 21EA0401 bic r1, r1, r4 + 267 007c D160 str r1, [r2, #12] + 268 .LVL25: + 269 .loc 2 704 3 is_stmt 0 view .LVU70 + 270 .LBE47: + 271 .LBE46: + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Then Enable Rising Trigger on provided Lines */ + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + 272 .loc 1 151 13 is_stmt 1 view .LVU71 + 273 007e 1B68 ldr r3, [r3] + 274 .LVL26: + 275 .LBB48: + 276 .LBI48: + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 277 .loc 2 532 22 view .LVU72 + 278 .LBB49: + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 279 .loc 2 534 3 view .LVU73 + 280 0080 9168 ldr r1, [r2, #8] + 281 0082 0B43 orrs r3, r3, r1 + 282 .LVL27: + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 283 .loc 2 534 3 is_stmt 0 view .LVU74 + 284 0084 9360 str r3, [r2, #8] + 285 .LVL28: + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 286 .loc 2 536 1 view .LVU75 + 287 0086 1FE0 b .L6 + 288 .LVL29: + 289 .L10: + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 290 .loc 2 536 1 view .LVU76 + 291 .LBE49: + 292 .LBE48: + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** case LL_EXTI_TRIGGER_FALLING: + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* First Disable Rising Trigger on provided Lines */ + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_DisableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + 293 .loc 1 155 13 is_stmt 1 view .LVU77 + 294 0088 1C68 ldr r4, [r3] + 295 .LVL30: + 296 .LBB50: + 297 .LBI50: + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 298 .loc 2 575 22 view .LVU78 + 299 .LBB51: + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 300 .loc 2 577 3 view .LVU79 + 301 008a 124A ldr r2, .L18 + ARM GAS /tmp/ccGZVeUT.s page 22 + + + 302 008c 9168 ldr r1, [r2, #8] + 303 008e 21EA0401 bic r1, r1, r4 + 304 0092 9160 str r1, [r2, #8] + 305 .LVL31: + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 306 .loc 2 577 3 is_stmt 0 view .LVU80 + 307 .LBE51: + 308 .LBE50: + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Then Enable Falling Trigger on provided Lines */ + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + 309 .loc 1 157 13 is_stmt 1 view .LVU81 + 310 0094 1B68 ldr r3, [r3] + 311 .LVL32: + 312 .LBB52: + 313 .LBI52: + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 314 .loc 2 661 22 view .LVU82 + 315 .LBB53: + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 316 .loc 2 663 3 view .LVU83 + 317 0096 D168 ldr r1, [r2, #12] + 318 0098 0B43 orrs r3, r3, r1 + 319 .LVL33: + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 320 .loc 2 663 3 is_stmt 0 view .LVU84 + 321 009a D360 str r3, [r2, #12] + 322 .LVL34: + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 323 .loc 2 664 1 view .LVU85 + 324 009c 14E0 b .L6 + 325 .LVL35: + 326 .L11: + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 327 .loc 2 664 1 view .LVU86 + 328 .LBE53: + 329 .LBE52: + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** case LL_EXTI_TRIGGER_RISING_FALLING: + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + 330 .loc 1 160 13 is_stmt 1 view .LVU87 + 331 009e 1968 ldr r1, [r3] + 332 .LVL36: + 333 .LBB54: + 334 .LBI54: + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 335 .loc 2 532 22 view .LVU88 + 336 .LBB55: + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 337 .loc 2 534 3 view .LVU89 + 338 00a0 0C4A ldr r2, .L18 + 339 00a2 9468 ldr r4, [r2, #8] + 340 00a4 2143 orrs r1, r1, r4 + 341 .LVL37: + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 342 .loc 2 534 3 is_stmt 0 view .LVU90 + 343 00a6 9160 str r1, [r2, #8] + 344 .LVL38: + ARM GAS /tmp/ccGZVeUT.s page 23 + + + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 345 .loc 2 534 3 view .LVU91 + 346 .LBE55: + 347 .LBE54: + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + 348 .loc 1 161 13 is_stmt 1 view .LVU92 + 349 00a8 1B68 ldr r3, [r3] + 350 .LVL39: + 351 .LBB56: + 352 .LBI56: + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 353 .loc 2 661 22 view .LVU93 + 354 .LBB57: + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 355 .loc 2 663 3 view .LVU94 + 356 00aa D168 ldr r1, [r2, #12] + 357 00ac 0B43 orrs r3, r3, r1 + 358 .LVL40: + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 359 .loc 2 663 3 is_stmt 0 view .LVU95 + 360 00ae D360 str r3, [r2, #12] + 361 .LVL41: + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 362 .loc 2 664 1 view .LVU96 + 363 00b0 0AE0 b .L6 + 364 .LVL42: + 365 .L5: + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** + 366 .loc 2 664 1 view .LVU97 + 367 .LBE57: + 368 .LBE56: + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** default: + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** status = ERROR; + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** break; + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** } + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** } + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** } + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** } + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* DISABLE LineCommand */ + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** else + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** { + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* De-configure EXTI Lines in range from 0 to 31 */ + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31); + 369 .loc 1 174 5 is_stmt 1 view .LVU98 + 370 .LBB58: + 371 .LBI58: + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 372 .loc 2 309 22 view .LVU99 + 373 .LBB59: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 374 .loc 2 311 3 view .LVU100 + 375 00b2 084A ldr r2, .L18 + 376 00b4 1168 ldr r1, [r2] + 377 00b6 1C68 ldr r4, [r3] + 378 00b8 21EA0401 bic r1, r1, r4 + 379 00bc 1160 str r1, [r2] + ARM GAS /tmp/ccGZVeUT.s page 24 + + + 380 .LVL43: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 381 .loc 2 311 3 is_stmt 0 view .LVU101 + 382 .LBE59: + 383 .LBE58: + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31); + 384 .loc 1 175 5 is_stmt 1 view .LVU102 + 385 00be 1968 ldr r1, [r3] + 386 .LVL44: + 387 .LBB60: + 388 .LBI60: + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** { + 389 .loc 2 441 22 view .LVU103 + 390 .LBB61: + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 391 .loc 2 443 3 view .LVU104 + 392 00c0 5368 ldr r3, [r2, #4] + 393 .LVL45: + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 394 .loc 2 443 3 is_stmt 0 view .LVU105 + 395 00c2 23EA0103 bic r3, r3, r1 + 396 00c6 5360 str r3, [r2, #4] + 397 .LVL46: + 398 .L6: + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h **** } + 399 .loc 2 443 3 view .LVU106 + 400 .LBE61: + 401 .LBE60: + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** } + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** return status; + 402 .loc 1 177 3 is_stmt 1 view .LVU107 + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** } + 403 .loc 1 178 1 is_stmt 0 view .LVU108 + 404 00c8 5DF8044B ldr r4, [sp], #4 + 405 .LCFI1: + 406 .cfi_remember_state + 407 .cfi_restore 4 + 408 .cfi_def_cfa_offset 0 + 409 00cc 7047 bx lr + 410 .LVL47: + 411 .L12: + 412 .LCFI2: + 413 .cfi_restore_state + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /* Check the parameters */ + 414 .loc 1 106 15 view .LVU109 + 415 00ce 0020 movs r0, #0 + 416 00d0 FAE7 b .L6 + 417 .L19: + 418 00d2 00BF .align 2 + 419 .L18: + 420 00d4 003C0140 .word 1073822720 + 421 .cfi_endproc + 422 .LFE158: + 424 .section .text.LL_EXTI_StructInit,"ax",%progbits + 425 .align 1 + 426 .global LL_EXTI_StructInit + 427 .syntax unified + ARM GAS /tmp/ccGZVeUT.s page 25 + + + 428 .thumb + 429 .thumb_func + 430 .fpu fpv5-d16 + 432 LL_EXTI_StructInit: + 433 .LVL48: + 434 .LFB159: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** /** + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @brief Set each @ref LL_EXTI_InitTypeDef field to default value. + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @param EXTI_InitStruct Pointer to a @ref LL_EXTI_InitTypeDef structure. + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** * @retval None + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** */ + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct) + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** { + 435 .loc 1 186 1 is_stmt 1 view -0 + 436 .cfi_startproc + 437 @ args = 0, pretend = 0, frame = 0 + 438 @ frame_needed = 0, uses_anonymous_args = 0 + 439 @ link register save eliminated. + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** EXTI_InitStruct->Line_0_31 = LL_EXTI_LINE_NONE; + 440 .loc 1 187 3 view .LVU111 + 441 .loc 1 187 35 is_stmt 0 view .LVU112 + 442 0000 0023 movs r3, #0 + 443 0002 0360 str r3, [r0] + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** EXTI_InitStruct->LineCommand = DISABLE; + 444 .loc 1 188 3 is_stmt 1 view .LVU113 + 445 .loc 1 188 35 is_stmt 0 view .LVU114 + 446 0004 0371 strb r3, [r0, #4] + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** EXTI_InitStruct->Mode = LL_EXTI_MODE_IT; + 447 .loc 1 189 3 is_stmt 1 view .LVU115 + 448 .loc 1 189 35 is_stmt 0 view .LVU116 + 449 0006 4371 strb r3, [r0, #5] + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** EXTI_InitStruct->Trigger = LL_EXTI_TRIGGER_FALLING; + 450 .loc 1 190 3 is_stmt 1 view .LVU117 + 451 .loc 1 190 35 is_stmt 0 view .LVU118 + 452 0008 0223 movs r3, #2 + 453 000a 8371 strb r3, [r0, #6] + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_exti.c **** } + 454 .loc 1 191 1 view .LVU119 + 455 000c 7047 bx lr + 456 .cfi_endproc + 457 .LFE159: + 459 .text + 460 .Letext0: + 461 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 462 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 463 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + ARM GAS /tmp/ccGZVeUT.s page 26 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_ll_exti.c + /tmp/ccGZVeUT.s:17 .text.LL_EXTI_DeInit:0000000000000000 $t + /tmp/ccGZVeUT.s:25 .text.LL_EXTI_DeInit:0000000000000000 LL_EXTI_DeInit + /tmp/ccGZVeUT.s:54 .text.LL_EXTI_DeInit:0000000000000018 $d + /tmp/ccGZVeUT.s:59 .text.LL_EXTI_Init:0000000000000000 $t + /tmp/ccGZVeUT.s:66 .text.LL_EXTI_Init:0000000000000000 LL_EXTI_Init + /tmp/ccGZVeUT.s:420 .text.LL_EXTI_Init:00000000000000d4 $d + /tmp/ccGZVeUT.s:425 .text.LL_EXTI_StructInit:0000000000000000 $t + /tmp/ccGZVeUT.s:432 .text.LL_EXTI_StructInit:0000000000000000 LL_EXTI_StructInit + +NO UNDEFINED SYMBOLS diff --git a/build/stm32f7xx_ll_exti.o b/build/stm32f7xx_ll_exti.o new file mode 100644 index 0000000..c92f506 Binary files /dev/null and b/build/stm32f7xx_ll_exti.o differ diff --git a/build/stm32f7xx_ll_gpio.d b/build/stm32f7xx_ll_gpio.d new file mode 100644 index 0000000..a07a144 --- /dev/null +++ b/build/stm32f7xx_ll_gpio.d @@ -0,0 +1,68 @@ +build/stm32f7xx_ll_gpio.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: diff --git a/build/stm32f7xx_ll_gpio.lst b/build/stm32f7xx_ll_gpio.lst new file mode 100644 index 0000000..4159896 --- /dev/null +++ b/build/stm32f7xx_ll_gpio.lst @@ -0,0 +1,3896 @@ +ARM GAS /tmp/ccM5oG95.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_ll_gpio.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.LL_GPIO_DeInit,"ax",%progbits + 17 .align 1 + 18 .global LL_GPIO_DeInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 LL_GPIO_DeInit: + 26 .LVL0: + 27 .LFB199: + 28 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @file stm32f7xx_ll_gpio.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @brief GPIO LL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #if defined(USE_FULL_LL_DRIVER) + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Includes ------------------------------------------------------------------*/ + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #include "stm32f7xx_ll_gpio.h" + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #include "stm32f7xx_ll_bus.h" + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #ifdef USE_FULL_ASSERT + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #include "stm32_assert.h" + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #else + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #define assert_param(expr) ((void)0U) + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #endif + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /** @addtogroup STM32F7xx_LL_Driver + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @{ + ARM GAS /tmp/ccM5oG95.s page 2 + + + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** */ + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /** @addtogroup GPIO_LL + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @{ + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** */ + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Private types -------------------------------------------------------------*/ + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Private variables ---------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Private constants ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Private macros ------------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /** @addtogroup GPIO_LL_Private_Macros + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @{ + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** */ + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #define IS_LL_GPIO_PIN(__VALUE__) (((0x00000000U) < (__VALUE__)) && ((__VALUE__) <= (LL_GP + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #define IS_LL_GPIO_MODE(__VALUE__) (((__VALUE__) == LL_GPIO_MODE_INPUT) ||\ + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_MODE_OUTPUT) ||\ + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_MODE_ALTERNATE) ||\ + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_MODE_ANALOG)) + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #define IS_LL_GPIO_OUTPUT_TYPE(__VALUE__) (((__VALUE__) == LL_GPIO_OUTPUT_PUSHPULL) ||\ + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_OUTPUT_OPENDRAIN)) + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #define IS_LL_GPIO_SPEED(__VALUE__) (((__VALUE__) == LL_GPIO_SPEED_FREQ_LOW) ||\ + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_SPEED_FREQ_MEDIUM) ||\ + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_SPEED_FREQ_HIGH) ||\ + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_SPEED_FREQ_VERY_HIGH)) + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #define IS_LL_GPIO_PULL(__VALUE__) (((__VALUE__) == LL_GPIO_PULL_NO) ||\ + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_PULL_UP) ||\ + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_PULL_DOWN)) + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #define IS_LL_GPIO_ALTERNATE(__VALUE__) (((__VALUE__) == LL_GPIO_AF_0 ) ||\ + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_1 ) ||\ + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_2 ) ||\ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_3 ) ||\ + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_4 ) ||\ + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_5 ) ||\ + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_6 ) ||\ + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_7 ) ||\ + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_8 ) ||\ + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_9 ) ||\ + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_10 ) ||\ + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_11 ) ||\ + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_12 ) ||\ + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_13 ) ||\ + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_14 ) ||\ + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ((__VALUE__) == LL_GPIO_AF_15 )) + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /** + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @} + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** */ + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Private function prototypes -----------------------------------------------*/ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Exported functions --------------------------------------------------------*/ + ARM GAS /tmp/ccM5oG95.s page 3 + + + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /** @addtogroup GPIO_LL_Exported_Functions + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @{ + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** */ + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /** @addtogroup GPIO_LL_EF_Init + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @{ + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** */ + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /** + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @brief De-initialize GPIO registers (Registers restored to their default values). + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @param GPIOx GPIO Port + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @retval An ErrorStatus enumeration value: + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * - SUCCESS: GPIO registers are de-initialized + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * - ERROR: Wrong GPIO Port + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** */ + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx) + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 29 .loc 1 104 1 view -0 + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 33 @ link register save eliminated. + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ErrorStatus status = SUCCESS; + 34 .loc 1 105 3 view .LVU1 + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Check the parameters */ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + 35 .loc 1 108 3 view .LVU2 + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Force and Release reset on clock of GPIOx Port */ + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** if (GPIOx == GPIOA) + 36 .loc 1 111 3 view .LVU3 + 37 .loc 1 111 6 is_stmt 0 view .LVU4 + 38 0000 534B ldr r3, .L25 + 39 0002 9842 cmp r0, r3 + 40 0004 1FD0 beq .L14 + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOA); + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOA); + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else if (GPIOx == GPIOB) + 41 .loc 1 116 8 is_stmt 1 view .LVU5 + 42 .loc 1 116 11 is_stmt 0 view .LVU6 + 43 0006 534B ldr r3, .L25+4 + 44 0008 9842 cmp r0, r3 + 45 000a 28D0 beq .L15 + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOB); + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOB); + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else if (GPIOx == GPIOC) + 46 .loc 1 121 8 is_stmt 1 view .LVU7 + 47 .loc 1 121 11 is_stmt 0 view .LVU8 + 48 000c 524B ldr r3, .L25+8 + 49 000e 9842 cmp r0, r3 + 50 0010 31D0 beq .L16 + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + ARM GAS /tmp/ccM5oG95.s page 4 + + + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOC); + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOC); + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #if defined(GPIOD) + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else if (GPIOx == GPIOD) + 51 .loc 1 127 8 is_stmt 1 view .LVU9 + 52 .loc 1 127 11 is_stmt 0 view .LVU10 + 53 0012 524B ldr r3, .L25+12 + 54 0014 9842 cmp r0, r3 + 55 0016 3AD0 beq .L17 + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOD); + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOD); + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #endif /* GPIOD */ + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #if defined(GPIOE) + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else if (GPIOx == GPIOE) + 56 .loc 1 134 8 is_stmt 1 view .LVU11 + 57 .loc 1 134 11 is_stmt 0 view .LVU12 + 58 0018 514B ldr r3, .L25+16 + 59 001a 9842 cmp r0, r3 + 60 001c 43D0 beq .L18 + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOE); + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOE); + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #endif /* GPIOE */ + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #if defined(GPIOF) + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else if (GPIOx == GPIOF) + 61 .loc 1 141 8 is_stmt 1 view .LVU13 + 62 .loc 1 141 11 is_stmt 0 view .LVU14 + 63 001e 514B ldr r3, .L25+20 + 64 0020 9842 cmp r0, r3 + 65 0022 4CD0 beq .L19 + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOF); + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOF); + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #endif /* GPIOF */ + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #if defined(GPIOG) + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else if (GPIOx == GPIOG) + 66 .loc 1 148 8 is_stmt 1 view .LVU15 + 67 .loc 1 148 11 is_stmt 0 view .LVU16 + 68 0024 504B ldr r3, .L25+24 + 69 0026 9842 cmp r0, r3 + 70 0028 55D0 beq .L20 + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOG); + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOG); + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #endif /* GPIOG */ + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #if defined(GPIOH) + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else if (GPIOx == GPIOH) + 71 .loc 1 155 8 is_stmt 1 view .LVU17 + 72 .loc 1 155 11 is_stmt 0 view .LVU18 + 73 002a 504B ldr r3, .L25+28 + 74 002c 9842 cmp r0, r3 + ARM GAS /tmp/ccM5oG95.s page 5 + + + 75 002e 5ED0 beq .L21 + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOH); + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOH); + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #endif /* GPIOH */ + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #if defined(GPIOI) + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else if (GPIOx == GPIOI) + 76 .loc 1 162 8 is_stmt 1 view .LVU19 + 77 .loc 1 162 11 is_stmt 0 view .LVU20 + 78 0030 4F4B ldr r3, .L25+32 + 79 0032 9842 cmp r0, r3 + 80 0034 67D0 beq .L22 + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOI); + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOI); + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #endif /* GPIOI */ + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #if defined(GPIOJ) + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else if (GPIOx == GPIOJ) + 81 .loc 1 169 8 is_stmt 1 view .LVU21 + 82 .loc 1 169 11 is_stmt 0 view .LVU22 + 83 0036 4F4B ldr r3, .L25+36 + 84 0038 9842 cmp r0, r3 + 85 003a 70D0 beq .L23 + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOJ); + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOJ); + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #endif /* GPIOJ */ + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #if defined(GPIOK) + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else if (GPIOx == GPIOK) + 86 .loc 1 176 8 is_stmt 1 view .LVU23 + 87 .loc 1 176 11 is_stmt 0 view .LVU24 + 88 003c 4E4B ldr r3, .L25+40 + 89 003e 9842 cmp r0, r3 + 90 0040 79D0 beq .L24 + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ForceReset(LL_AHB1_GRP1_PERIPH_GPIOK); + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOK); + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** #endif /* GPIOK */ + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** status = ERROR; + 91 .loc 1 184 12 view .LVU25 + 92 0042 0120 movs r0, #1 + 93 .LVL1: + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** return (status); + 94 .loc 1 187 3 is_stmt 1 view .LVU26 + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 95 .loc 1 188 1 is_stmt 0 view .LVU27 + 96 0044 7047 bx lr + 97 .LVL2: + 98 .L14: + ARM GAS /tmp/ccM5oG95.s page 6 + + + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOA); + 99 .loc 1 113 5 is_stmt 1 view .LVU28 + 100 .LBB76: + 101 .LBI76: + 102 .file 2 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @file stm32f7xx_ll_bus.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Header file of BUS LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @verbatim + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ##### RCC Limitations ##### + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ============================================================================== + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** A delay between an RCC peripheral clock enable and the effective peripheral + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** enabling should be taken into account in order to manage the peripheral read/write + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** from/to registers. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (+) This delay depends on the peripheral mapping. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (++) AHB & APB peripherals, 1 dummy read is necessary + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** Workarounds: + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @endverbatim + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @attention + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * Copyright (c) 2017 STMicroelectronics. + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * All rights reserved. + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * This software is licensed under terms that can be found in the LICENSE file in + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * the root directory of this software component. + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifndef __STM32F7xx_LL_BUS_H + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define __STM32F7xx_LL_BUS_H + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifdef __cplusplus + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** extern "C" { + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Includes ------------------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #include "stm32f7xx.h" + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @addtogroup STM32F7xx_LL_Driver + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC) + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL BUS + ARM GAS /tmp/ccM5oG95.s page 7 + + + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private types -------------------------------------------------------------*/ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private variables ---------------------------------------------------------*/ + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private constants ---------------------------------------------------------*/ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private macros ------------------------------------------------------------*/ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported types ------------------------------------------------------------*/ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported constants --------------------------------------------------------*/ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOA RCC_AHB1ENR_GPIOAEN + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOB RCC_AHB1ENR_GPIOBEN + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOC RCC_AHB1ENR_GPIOCEN + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOD RCC_AHB1ENR_GPIODEN + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOE RCC_AHB1ENR_GPIOEEN + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOF RCC_AHB1ENR_GPIOFEN + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOG RCC_AHB1ENR_GPIOGEN + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOH RCC_AHB1ENR_GPIOHEN + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOI RCC_AHB1ENR_GPIOIEN + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOJ) + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOJ RCC_AHB1ENR_GPIOJEN + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOJ */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOK) + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOK RCC_AHB1ENR_GPIOKEN + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOK */ + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_CRC RCC_AHB1ENR_CRCEN + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_BKPSRAM RCC_AHB1ENR_BKPSRAMEN + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DTCMRAM RCC_AHB1ENR_DTCMRAMEN + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHB1ENR_DMA1EN + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHB1ENR_DMA2EN + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DMA2D) + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2D RCC_AHB1ENR_DMA2DEN + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DMA2D */ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(ETH) + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMAC RCC_AHB1ENR_ETHMACEN + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACTX RCC_AHB1ENR_ETHMACTXEN + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACRX RCC_AHB1ENR_ETHMACRXEN + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACPTP RCC_AHB1ENR_ETHMACPTPEN + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* ETH */ + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHS RCC_AHB1ENR_OTGHSEN + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHSULPI RCC_AHB1ENR_OTGHSULPIEN + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_AXI RCC_AHB1LPENR_AXILPEN + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_FLITF RCC_AHB1LPENR_FLITFLPEN + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHB1LPENR_SRAM1LPEN + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM2 RCC_AHB1LPENR_SRAM2LPEN + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH + ARM GAS /tmp/ccM5oG95.s page 8 + + + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DCMI) + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_DCMI RCC_AHB2ENR_DCMIEN + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DCMI */ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(JPEG) + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_JPEG RCC_AHB2ENR_JPEGEN + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* JPEG */ + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CRYP) + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_CRYP RCC_AHB2ENR_CRYPEN + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CRYP */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(AES) + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_AES RCC_AHB2ENR_AESEN + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* AES */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(HASH) + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_HASH RCC_AHB2ENR_HASHEN + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* HASH */ + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_RNG RCC_AHB2ENR_RNGEN + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_OTGFS RCC_AHB2ENR_OTGFSEN + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB3_GRP1_PERIPH AHB3 GRP1 PERIPH + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_ALL 0xFFFFFFFFU + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_FMC RCC_AHB3ENR_FMCEN + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_QSPI RCC_AHB3ENR_QSPIEN + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM12 RCC_APB1ENR_TIM12EN + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM13 RCC_APB1ENR_TIM13EN + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM14 RCC_APB1ENR_TIM14EN + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APB1ENR_LPTIM1EN + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPDIFRX) + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPDIFRX RCC_APB1ENR_SPDIFRXEN + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPDIFRX */ + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN + ARM GAS /tmp/ccM5oG95.s page 9 + + + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C3 RCC_APB1ENR_I2C3EN + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(I2C4) + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C4 RCC_APB1ENR_I2C4EN + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* I2C4 */ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR_CAN1EN + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN2) + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR_CAN2EN + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN2 */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN3) + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN3 RCC_APB1ENR_CAN3EN + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN3 */ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CEC) + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CEC RCC_APB1ENR_CECEN + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CEC */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART7 RCC_APB1ENR_UART7EN + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART8 RCC_APB1ENR_UART8EN + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC_APB1ENR_RTCEN) + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APB1ENR_RTCEN + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* RCC_APB1ENR_RTCEN */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART6 RCC_APB2ENR_USART6EN + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC2 RCC_APB2ENR_ADC2EN + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC3 RCC_APB2ENR_ADC3EN + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC1 RCC_APB2ENR_SDMMC1EN + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SDMMC2) + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC2 RCC_APB2ENR_SDMMC2EN + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SDMMC2 */ + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI4 RCC_APB2ENR_SPI4EN + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI5 RCC_APB2ENR_SPI5EN + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPI6) + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI6 RCC_APB2ENR_SPI6EN + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPI6 */ + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI1 RCC_APB2ENR_SAI1EN + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI2 RCC_APB2ENR_SAI2EN + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(LTDC) + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_LTDC RCC_APB2ENR_LTDCEN + ARM GAS /tmp/ccM5oG95.s page 10 + + + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* LTDC */ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DSI) + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DSI RCC_APB2ENR_DSIEN + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DSI */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DFSDM1_Channel0) + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DFSDM1 RCC_APB2ENR_DFSDM1EN + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DFSDM1_Channel0 */ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(MDIOS) + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_MDIO RCC_APB2ENR_MDIOEN + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* MDIOS */ + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(USB_HS_PHYC) + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_OTGPHYC RCC_APB2ENR_OTGPHYCEN + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* USB_HS_PHYC */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC RCC_APB2RSTR_ADCRST + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported macro ------------------------------------------------------------*/ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported functions --------------------------------------------------------*/ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB1 AHB1 + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB1 peripherals clock. + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_EnableClock\n + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_EnableClock\n + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_EnableClock\n + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_EnableClock\n + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_EnableClock\n + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_EnableClock\n + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_EnableClock\n + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_EnableClock\n + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_EnableClock\n + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_EnableClock\n + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_EnableClock\n + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_EnableClock\n + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_EnableClock\n + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_EnableClock\n + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_EnableClock\n + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_EnableClock\n + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_EnableClock\n + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_EnableClock\n + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_EnableClock\n + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_EnableClock\n + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_EnableClock\n + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_EnableClock\n + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIEN LL_AHB1_GRP1_EnableClock + ARM GAS /tmp/ccM5oG95.s page 11 + + + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB1 peripheral clock is enabled or not + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_IsEnabledClock\n + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_IsEnabledClock\n + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_IsEnabledClock\n + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_IsEnabledClock\n + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_IsEnabledClock\n + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_IsEnabledClock\n + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_IsEnabledClock\n + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_IsEnabledClock\n + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_IsEnabledClock\n + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_IsEnabledClock\n + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_IsEnabledClock\n + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_IsEnabledClock\n + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_IsEnabledClock\n + ARM GAS /tmp/ccM5oG95.s page 12 + + + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_IsEnabledClock\n + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_IsEnabledClock\n + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_IsEnabledClock\n + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_IsEnabledClock\n + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_IsEnabledClock + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB1ENR, Periphs) == Periphs); + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB1 peripherals clock. + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_DisableClock\n + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_DisableClock\n + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_DisableClock\n + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_DisableClock\n + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_DisableClock\n + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_DisableClock\n + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_DisableClock\n + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_DisableClock\n + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_DisableClock\n + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_DisableClock\n + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_DisableClock\n + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_DisableClock\n + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_DisableClock\n + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_DisableClock\n + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_DisableClock\n + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_DisableClock\n + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_DisableClock\n + ARM GAS /tmp/ccM5oG95.s page 13 + + + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_DisableClock\n + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_DisableClock\n + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_DisableClock\n + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_DisableClock\n + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_DisableClock\n + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_DisableClock + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1ENR, Periphs); + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB1 peripherals reset. + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ForceReset\n + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ForceReset\n + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ForceReset\n + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ForceReset\n + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ForceReset\n + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ForceReset\n + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ForceReset\n + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ForceReset\n + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ForceReset\n + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ForceReset\n + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ForceReset\n + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ForceReset\n + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset\n + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ForceReset\n + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ForceReset\n + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ForceReset\n + ARM GAS /tmp/ccM5oG95.s page 14 + + + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ForceReset + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) + 103 .loc 2 476 22 view .LVU29 + 104 .LBB77: + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1RSTR, Periphs); + 105 .loc 2 478 3 view .LVU30 + 106 0046 03F56053 add r3, r3, #14336 + 107 004a 1A69 ldr r2, [r3, #16] + 108 004c 42F00102 orr r2, r2, #1 + 109 0050 1A61 str r2, [r3, #16] + 110 .LVL3: + 111 .loc 2 478 3 is_stmt 0 view .LVU31 + 112 .LBE77: + 113 .LBE76: + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 114 .loc 1 114 5 is_stmt 1 view .LVU32 + 115 .LBB78: + 116 .LBI78: + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB1 peripherals reset. + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ReleaseReset\n + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ReleaseReset\n + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ReleaseReset\n + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ReleaseReset\n + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ReleaseReset\n + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ReleaseReset\n + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ReleaseReset\n + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ReleaseReset\n + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ReleaseReset\n + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ReleaseReset\n + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ReleaseReset\n + ARM GAS /tmp/ccM5oG95.s page 15 + + + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ReleaseReset\n + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ReleaseReset\n + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ReleaseReset + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) + 117 .loc 2 523 22 view .LVU33 + 118 .LBB79: + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1RSTR, Periphs); + 119 .loc 2 525 3 view .LVU34 + 120 0052 1A69 ldr r2, [r3, #16] + 121 0054 22F00102 bic r2, r2, #1 + 122 0058 1A61 str r2, [r3, #16] + 123 .LBE79: + 124 .LBE78: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 125 .loc 1 105 15 is_stmt 0 view .LVU35 + 126 005a 0020 movs r0, #0 + 127 .LVL4: + 128 .LBB81: + 129 .LBB80: + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 130 .loc 2 526 1 view .LVU36 + 131 005c 7047 bx lr + 132 .LVL5: + 133 .L15: + 134 .loc 2 526 1 view .LVU37 + 135 .LBE80: + 136 .LBE81: + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOB); + 137 .loc 1 118 5 is_stmt 1 view .LVU38 + 138 .LBB82: + ARM GAS /tmp/ccM5oG95.s page 16 + + + 139 .LBI82: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 140 .loc 2 476 22 view .LVU39 + 141 .LBB83: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 142 .loc 2 478 3 view .LVU40 + 143 005e 03F55053 add r3, r3, #13312 + 144 0062 1A69 ldr r2, [r3, #16] + 145 0064 42F00202 orr r2, r2, #2 + 146 0068 1A61 str r2, [r3, #16] + 147 .LVL6: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 148 .loc 2 478 3 is_stmt 0 view .LVU41 + 149 .LBE83: + 150 .LBE82: + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 151 .loc 1 119 5 is_stmt 1 view .LVU42 + 152 .LBB84: + 153 .LBI84: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 154 .loc 2 523 22 view .LVU43 + 155 .LBB85: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 156 .loc 2 525 3 view .LVU44 + 157 006a 1A69 ldr r2, [r3, #16] + 158 006c 22F00202 bic r2, r2, #2 + 159 0070 1A61 str r2, [r3, #16] + 160 .LBE85: + 161 .LBE84: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 162 .loc 1 105 15 is_stmt 0 view .LVU45 + 163 0072 0020 movs r0, #0 + 164 .LVL7: + 165 .LBB87: + 166 .LBB86: + 167 .loc 2 526 1 view .LVU46 + 168 0074 7047 bx lr + 169 .LVL8: + 170 .L16: + 171 .loc 2 526 1 view .LVU47 + 172 .LBE86: + 173 .LBE87: + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOC); + 174 .loc 1 123 5 is_stmt 1 view .LVU48 + 175 .LBB88: + 176 .LBI88: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 177 .loc 2 476 22 view .LVU49 + 178 .LBB89: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 179 .loc 2 478 3 view .LVU50 + 180 0076 03F54053 add r3, r3, #12288 + 181 007a 1A69 ldr r2, [r3, #16] + 182 007c 42F00402 orr r2, r2, #4 + 183 0080 1A61 str r2, [r3, #16] + 184 .LVL9: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + ARM GAS /tmp/ccM5oG95.s page 17 + + + 185 .loc 2 478 3 is_stmt 0 view .LVU51 + 186 .LBE89: + 187 .LBE88: + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 188 .loc 1 124 5 is_stmt 1 view .LVU52 + 189 .LBB90: + 190 .LBI90: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 191 .loc 2 523 22 view .LVU53 + 192 .LBB91: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 193 .loc 2 525 3 view .LVU54 + 194 0082 1A69 ldr r2, [r3, #16] + 195 0084 22F00402 bic r2, r2, #4 + 196 0088 1A61 str r2, [r3, #16] + 197 .LBE91: + 198 .LBE90: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 199 .loc 1 105 15 is_stmt 0 view .LVU55 + 200 008a 0020 movs r0, #0 + 201 .LVL10: + 202 .LBB93: + 203 .LBB92: + 204 .loc 2 526 1 view .LVU56 + 205 008c 7047 bx lr + 206 .LVL11: + 207 .L17: + 208 .loc 2 526 1 view .LVU57 + 209 .LBE92: + 210 .LBE93: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOD); + 211 .loc 1 129 5 is_stmt 1 view .LVU58 + 212 .LBB94: + 213 .LBI94: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 214 .loc 2 476 22 view .LVU59 + 215 .LBB95: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 216 .loc 2 478 3 view .LVU60 + 217 008e 03F53053 add r3, r3, #11264 + 218 0092 1A69 ldr r2, [r3, #16] + 219 0094 42F00802 orr r2, r2, #8 + 220 0098 1A61 str r2, [r3, #16] + 221 .LVL12: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 222 .loc 2 478 3 is_stmt 0 view .LVU61 + 223 .LBE95: + 224 .LBE94: + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 225 .loc 1 130 5 is_stmt 1 view .LVU62 + 226 .LBB96: + 227 .LBI96: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 228 .loc 2 523 22 view .LVU63 + 229 .LBB97: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 230 .loc 2 525 3 view .LVU64 + ARM GAS /tmp/ccM5oG95.s page 18 + + + 231 009a 1A69 ldr r2, [r3, #16] + 232 009c 22F00802 bic r2, r2, #8 + 233 00a0 1A61 str r2, [r3, #16] + 234 .LBE97: + 235 .LBE96: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 236 .loc 1 105 15 is_stmt 0 view .LVU65 + 237 00a2 0020 movs r0, #0 + 238 .LVL13: + 239 .LBB99: + 240 .LBB98: + 241 .loc 2 526 1 view .LVU66 + 242 00a4 7047 bx lr + 243 .LVL14: + 244 .L18: + 245 .loc 2 526 1 view .LVU67 + 246 .LBE98: + 247 .LBE99: + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOE); + 248 .loc 1 136 5 is_stmt 1 view .LVU68 + 249 .LBB100: + 250 .LBI100: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 251 .loc 2 476 22 view .LVU69 + 252 .LBB101: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 253 .loc 2 478 3 view .LVU70 + 254 00a6 03F52053 add r3, r3, #10240 + 255 00aa 1A69 ldr r2, [r3, #16] + 256 00ac 42F01002 orr r2, r2, #16 + 257 00b0 1A61 str r2, [r3, #16] + 258 .LVL15: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 259 .loc 2 478 3 is_stmt 0 view .LVU71 + 260 .LBE101: + 261 .LBE100: + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 262 .loc 1 137 5 is_stmt 1 view .LVU72 + 263 .LBB102: + 264 .LBI102: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 265 .loc 2 523 22 view .LVU73 + 266 .LBB103: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 267 .loc 2 525 3 view .LVU74 + 268 00b2 1A69 ldr r2, [r3, #16] + 269 00b4 22F01002 bic r2, r2, #16 + 270 00b8 1A61 str r2, [r3, #16] + 271 .LBE103: + 272 .LBE102: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 273 .loc 1 105 15 is_stmt 0 view .LVU75 + 274 00ba 0020 movs r0, #0 + 275 .LVL16: + 276 .LBB105: + 277 .LBB104: + 278 .loc 2 526 1 view .LVU76 + ARM GAS /tmp/ccM5oG95.s page 19 + + + 279 00bc 7047 bx lr + 280 .LVL17: + 281 .L19: + 282 .loc 2 526 1 view .LVU77 + 283 .LBE104: + 284 .LBE105: + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOF); + 285 .loc 1 143 5 is_stmt 1 view .LVU78 + 286 .LBB106: + 287 .LBI106: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 288 .loc 2 476 22 view .LVU79 + 289 .LBB107: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 290 .loc 2 478 3 view .LVU80 + 291 00be 03F51053 add r3, r3, #9216 + 292 00c2 1A69 ldr r2, [r3, #16] + 293 00c4 42F02002 orr r2, r2, #32 + 294 00c8 1A61 str r2, [r3, #16] + 295 .LVL18: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 296 .loc 2 478 3 is_stmt 0 view .LVU81 + 297 .LBE107: + 298 .LBE106: + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 299 .loc 1 144 5 is_stmt 1 view .LVU82 + 300 .LBB108: + 301 .LBI108: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 302 .loc 2 523 22 view .LVU83 + 303 .LBB109: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 304 .loc 2 525 3 view .LVU84 + 305 00ca 1A69 ldr r2, [r3, #16] + 306 00cc 22F02002 bic r2, r2, #32 + 307 00d0 1A61 str r2, [r3, #16] + 308 .LBE109: + 309 .LBE108: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 310 .loc 1 105 15 is_stmt 0 view .LVU85 + 311 00d2 0020 movs r0, #0 + 312 .LVL19: + 313 .LBB111: + 314 .LBB110: + 315 .loc 2 526 1 view .LVU86 + 316 00d4 7047 bx lr + 317 .LVL20: + 318 .L20: + 319 .loc 2 526 1 view .LVU87 + 320 .LBE110: + 321 .LBE111: + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOG); + 322 .loc 1 150 5 is_stmt 1 view .LVU88 + 323 .LBB112: + 324 .LBI112: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 325 .loc 2 476 22 view .LVU89 + ARM GAS /tmp/ccM5oG95.s page 20 + + + 326 .LBB113: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 327 .loc 2 478 3 view .LVU90 + 328 00d6 03F50053 add r3, r3, #8192 + 329 00da 1A69 ldr r2, [r3, #16] + 330 00dc 42F04002 orr r2, r2, #64 + 331 00e0 1A61 str r2, [r3, #16] + 332 .LVL21: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 333 .loc 2 478 3 is_stmt 0 view .LVU91 + 334 .LBE113: + 335 .LBE112: + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 336 .loc 1 151 5 is_stmt 1 view .LVU92 + 337 .LBB114: + 338 .LBI114: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 339 .loc 2 523 22 view .LVU93 + 340 .LBB115: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 341 .loc 2 525 3 view .LVU94 + 342 00e2 1A69 ldr r2, [r3, #16] + 343 00e4 22F04002 bic r2, r2, #64 + 344 00e8 1A61 str r2, [r3, #16] + 345 .LBE115: + 346 .LBE114: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 347 .loc 1 105 15 is_stmt 0 view .LVU95 + 348 00ea 0020 movs r0, #0 + 349 .LVL22: + 350 .LBB117: + 351 .LBB116: + 352 .loc 2 526 1 view .LVU96 + 353 00ec 7047 bx lr + 354 .LVL23: + 355 .L21: + 356 .loc 2 526 1 view .LVU97 + 357 .LBE116: + 358 .LBE117: + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOH); + 359 .loc 1 157 5 is_stmt 1 view .LVU98 + 360 .LBB118: + 361 .LBI118: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 362 .loc 2 476 22 view .LVU99 + 363 .LBB119: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 364 .loc 2 478 3 view .LVU100 + 365 00ee 03F5E053 add r3, r3, #7168 + 366 00f2 1A69 ldr r2, [r3, #16] + 367 00f4 42F08002 orr r2, r2, #128 + 368 00f8 1A61 str r2, [r3, #16] + 369 .LVL24: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 370 .loc 2 478 3 is_stmt 0 view .LVU101 + 371 .LBE119: + 372 .LBE118: + ARM GAS /tmp/ccM5oG95.s page 21 + + + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 373 .loc 1 158 5 is_stmt 1 view .LVU102 + 374 .LBB120: + 375 .LBI120: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 376 .loc 2 523 22 view .LVU103 + 377 .LBB121: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 378 .loc 2 525 3 view .LVU104 + 379 00fa 1A69 ldr r2, [r3, #16] + 380 00fc 22F08002 bic r2, r2, #128 + 381 0100 1A61 str r2, [r3, #16] + 382 .LBE121: + 383 .LBE120: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 384 .loc 1 105 15 is_stmt 0 view .LVU105 + 385 0102 0020 movs r0, #0 + 386 .LVL25: + 387 .LBB123: + 388 .LBB122: + 389 .loc 2 526 1 view .LVU106 + 390 0104 7047 bx lr + 391 .LVL26: + 392 .L22: + 393 .loc 2 526 1 view .LVU107 + 394 .LBE122: + 395 .LBE123: + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOI); + 396 .loc 1 164 5 is_stmt 1 view .LVU108 + 397 .LBB124: + 398 .LBI124: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 399 .loc 2 476 22 view .LVU109 + 400 .LBB125: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 401 .loc 2 478 3 view .LVU110 + 402 0106 03F5C053 add r3, r3, #6144 + 403 010a 1A69 ldr r2, [r3, #16] + 404 010c 42F48072 orr r2, r2, #256 + 405 0110 1A61 str r2, [r3, #16] + 406 .LVL27: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 407 .loc 2 478 3 is_stmt 0 view .LVU111 + 408 .LBE125: + 409 .LBE124: + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 410 .loc 1 165 5 is_stmt 1 view .LVU112 + 411 .LBB126: + 412 .LBI126: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 413 .loc 2 523 22 view .LVU113 + 414 .LBB127: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 415 .loc 2 525 3 view .LVU114 + 416 0112 1A69 ldr r2, [r3, #16] + 417 0114 22F48072 bic r2, r2, #256 + 418 0118 1A61 str r2, [r3, #16] + ARM GAS /tmp/ccM5oG95.s page 22 + + + 419 .LBE127: + 420 .LBE126: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 421 .loc 1 105 15 is_stmt 0 view .LVU115 + 422 011a 0020 movs r0, #0 + 423 .LVL28: + 424 .LBB129: + 425 .LBB128: + 426 .loc 2 526 1 view .LVU116 + 427 011c 7047 bx lr + 428 .LVL29: + 429 .L23: + 430 .loc 2 526 1 view .LVU117 + 431 .LBE128: + 432 .LBE129: + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOJ); + 433 .loc 1 171 5 is_stmt 1 view .LVU118 + 434 .LBB130: + 435 .LBI130: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 436 .loc 2 476 22 view .LVU119 + 437 .LBB131: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 438 .loc 2 478 3 view .LVU120 + 439 011e 03F5A053 add r3, r3, #5120 + 440 0122 1A69 ldr r2, [r3, #16] + 441 0124 42F40072 orr r2, r2, #512 + 442 0128 1A61 str r2, [r3, #16] + 443 .LVL30: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 444 .loc 2 478 3 is_stmt 0 view .LVU121 + 445 .LBE131: + 446 .LBE130: + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 447 .loc 1 172 5 is_stmt 1 view .LVU122 + 448 .LBB132: + 449 .LBI132: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 450 .loc 2 523 22 view .LVU123 + 451 .LBB133: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 452 .loc 2 525 3 view .LVU124 + 453 012a 1A69 ldr r2, [r3, #16] + 454 012c 22F40072 bic r2, r2, #512 + 455 0130 1A61 str r2, [r3, #16] + 456 .LBE133: + 457 .LBE132: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 458 .loc 1 105 15 is_stmt 0 view .LVU125 + 459 0132 0020 movs r0, #0 + 460 .LVL31: + 461 .LBB135: + 462 .LBB134: + 463 .loc 2 526 1 view .LVU126 + 464 0134 7047 bx lr + 465 .LVL32: + 466 .L24: + ARM GAS /tmp/ccM5oG95.s page 23 + + + 467 .loc 2 526 1 view .LVU127 + 468 .LBE134: + 469 .LBE135: + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_AHB1_GRP1_ReleaseReset(LL_AHB1_GRP1_PERIPH_GPIOK); + 470 .loc 1 178 5 is_stmt 1 view .LVU128 + 471 .LBB136: + 472 .LBI136: + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 473 .loc 2 476 22 view .LVU129 + 474 .LBB137: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 475 .loc 2 478 3 view .LVU130 + 476 0136 03F58053 add r3, r3, #4096 + 477 013a 1A69 ldr r2, [r3, #16] + 478 013c 42F48062 orr r2, r2, #1024 + 479 0140 1A61 str r2, [r3, #16] + 480 .LVL33: + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 481 .loc 2 478 3 is_stmt 0 view .LVU131 + 482 .LBE137: + 483 .LBE136: + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 484 .loc 1 179 5 is_stmt 1 view .LVU132 + 485 .LBB138: + 486 .LBI138: + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 487 .loc 2 523 22 view .LVU133 + 488 .LBB139: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 489 .loc 2 525 3 view .LVU134 + 490 0142 1A69 ldr r2, [r3, #16] + 491 0144 22F48062 bic r2, r2, #1024 + 492 0148 1A61 str r2, [r3, #16] + 493 .LBE139: + 494 .LBE138: + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 495 .loc 1 105 15 is_stmt 0 view .LVU135 + 496 014a 0020 movs r0, #0 + 497 .LVL34: + 498 .LBB141: + 499 .LBB140: + 500 .loc 2 526 1 view .LVU136 + 501 014c 7047 bx lr + 502 .L26: + 503 014e 00BF .align 2 + 504 .L25: + 505 0150 00000240 .word 1073872896 + 506 0154 00040240 .word 1073873920 + 507 0158 00080240 .word 1073874944 + 508 015c 000C0240 .word 1073875968 + 509 0160 00100240 .word 1073876992 + 510 0164 00140240 .word 1073878016 + 511 0168 00180240 .word 1073879040 + 512 016c 001C0240 .word 1073880064 + 513 0170 00200240 .word 1073881088 + 514 0174 00240240 .word 1073882112 + 515 0178 00280240 .word 1073883136 + ARM GAS /tmp/ccM5oG95.s page 24 + + + 516 .LBE140: + 517 .LBE141: + 518 .cfi_endproc + 519 .LFE199: + 521 .section .text.LL_GPIO_Init,"ax",%progbits + 522 .align 1 + 523 .global LL_GPIO_Init + 524 .syntax unified + 525 .thumb + 526 .thumb_func + 527 .fpu fpv5-d16 + 529 LL_GPIO_Init: + 530 .LVL35: + 531 .LFB200: + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /** + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @brief Initialize GPIO registers according to the specified parameters in GPIO_InitStruct. + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @param GPIOx GPIO Port + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @param GPIO_InitStruct pointer to a @ref LL_GPIO_InitTypeDef structure + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * that contains the configuration information for the specified GPIO peripheral. + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @retval An ErrorStatus enumeration value: + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * - SUCCESS: GPIO registers are initialized according to GPIO_InitStruct content + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * - ERROR: Not applicable + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** */ + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct) + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 532 .loc 1 200 1 is_stmt 1 view -0 + 533 .cfi_startproc + 534 @ args = 0, pretend = 0, frame = 0 + 535 @ frame_needed = 0, uses_anonymous_args = 0 + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** uint32_t pinpos = 0x00000000U; + 536 .loc 1 201 3 view .LVU138 + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** uint32_t currentpin = 0x00000000U; + 537 .loc 1 202 3 view .LVU139 + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Check the parameters */ + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + 538 .loc 1 205 3 view .LVU140 + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** assert_param(IS_LL_GPIO_PIN(GPIO_InitStruct->Pin)); + 539 .loc 1 206 3 view .LVU141 + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** assert_param(IS_LL_GPIO_MODE(GPIO_InitStruct->Mode)); + 540 .loc 1 207 3 view .LVU142 + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** assert_param(IS_LL_GPIO_PULL(GPIO_InitStruct->Pull)); + 541 .loc 1 208 3 view .LVU143 + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* ------------------------- Configure the port pins ---------------- */ + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Initialize pinpos on first pin set */ + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** pinpos = POSITION_VAL(GPIO_InitStruct->Pin); + 542 .loc 1 212 3 view .LVU144 + 543 .loc 1 212 12 is_stmt 0 view .LVU145 + 544 0000 0B68 ldr r3, [r1] + 545 .LVL36: + 546 .LBB178: + 547 .LBI178: + 548 .file 3 "Drivers/CMSIS/Include/cmsis_gcc.h" + 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** + 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h + ARM GAS /tmp/ccM5oG95.s page 25 + + + 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file + 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.0.4 + 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018 + 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ + 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* + 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. + 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 + 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may + 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. + 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at + 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 + 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * + 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software + 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT + 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and + 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. + 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 24:Drivers/CMSIS/Include/cmsis_gcc.h **** + 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H + 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H + 27:Drivers/CMSIS/Include/cmsis_gcc.h **** + 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ + 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" + 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" + 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" + 33:Drivers/CMSIS/Include/cmsis_gcc.h **** + 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ + 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin + 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) + 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 38:Drivers/CMSIS/Include/cmsis_gcc.h **** + 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ + 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM + 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm + 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE + 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline + 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE + 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline + 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE + 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline + 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN + 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) + 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED + 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) + 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK + 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) + ARM GAS /tmp/ccM5oG95.s page 26 + + + 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED + 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) + 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT + 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION + 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) + 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ + 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) + 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE + 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- + 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ + 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add + 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE + 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- + 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ + 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push + 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" + 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" + 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop + 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add + 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED + 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) + 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT + 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict + 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 116:Drivers/CMSIS/Include/cmsis_gcc.h **** + ARM GAS /tmp/ccM5oG95.s page 27 + + + 117:Drivers/CMSIS/Include/cmsis_gcc.h **** + 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ + 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface + 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions + 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 123:Drivers/CMSIS/Include/cmsis_gcc.h **** + 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts + 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. + 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void) + 130:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); + 132:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 133:Drivers/CMSIS/Include/cmsis_gcc.h **** + 134:Drivers/CMSIS/Include/cmsis_gcc.h **** + 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts + 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. + 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) + 141:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); + 143:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 144:Drivers/CMSIS/Include/cmsis_gcc.h **** + 145:Drivers/CMSIS/Include/cmsis_gcc.h **** + 146:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register + 148:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register. + 149:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value + 150:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 151:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) + 152:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 153:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 154:Drivers/CMSIS/Include/cmsis_gcc.h **** + 155:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) ); + 156:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 157:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 158:Drivers/CMSIS/Include/cmsis_gcc.h **** + 159:Drivers/CMSIS/Include/cmsis_gcc.h **** + 160:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 161:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 162:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure) + 163:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode. + 164:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value + 165:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 166:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) + 167:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 168:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 169:Drivers/CMSIS/Include/cmsis_gcc.h **** + 170:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); + 171:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 172:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + ARM GAS /tmp/ccM5oG95.s page 28 + + + 174:Drivers/CMSIS/Include/cmsis_gcc.h **** + 175:Drivers/CMSIS/Include/cmsis_gcc.h **** + 176:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 177:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register + 178:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register. + 179:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 180:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 181:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) + 182:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 183:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); + 184:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 185:Drivers/CMSIS/Include/cmsis_gcc.h **** + 186:Drivers/CMSIS/Include/cmsis_gcc.h **** + 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 188:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure) + 190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state. + 191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set + 192:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) + 194:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); + 196:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 197:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 198:Drivers/CMSIS/Include/cmsis_gcc.h **** + 199:Drivers/CMSIS/Include/cmsis_gcc.h **** + 200:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 201:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register + 202:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register. + 203:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value + 204:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 205:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void) + 206:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 207:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 208:Drivers/CMSIS/Include/cmsis_gcc.h **** + 209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); + 210:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 211:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 212:Drivers/CMSIS/Include/cmsis_gcc.h **** + 213:Drivers/CMSIS/Include/cmsis_gcc.h **** + 214:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 215:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register + 216:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register. + 217:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value + 218:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 219:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void) + 220:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 221:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 222:Drivers/CMSIS/Include/cmsis_gcc.h **** + 223:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) ); + 224:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 225:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 226:Drivers/CMSIS/Include/cmsis_gcc.h **** + 227:Drivers/CMSIS/Include/cmsis_gcc.h **** + 228:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register + 230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register. + ARM GAS /tmp/ccM5oG95.s page 29 + + + 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value + 232:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(void) + 234:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 235:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 236:Drivers/CMSIS/Include/cmsis_gcc.h **** + 237:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); + 238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 239:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 240:Drivers/CMSIS/Include/cmsis_gcc.h **** + 241:Drivers/CMSIS/Include/cmsis_gcc.h **** + 242:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer + 244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP). + 245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 246:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void) + 248:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 250:Drivers/CMSIS/Include/cmsis_gcc.h **** + 251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) ); + 252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 253:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 254:Drivers/CMSIS/Include/cmsis_gcc.h **** + 255:Drivers/CMSIS/Include/cmsis_gcc.h **** + 256:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 257:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure) + 259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s + 260:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value + 261:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 262:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) + 263:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 264:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 265:Drivers/CMSIS/Include/cmsis_gcc.h **** + 266:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); + 267:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 268:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 269:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 270:Drivers/CMSIS/Include/cmsis_gcc.h **** + 271:Drivers/CMSIS/Include/cmsis_gcc.h **** + 272:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 273:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer + 274:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP). + 275:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + 276:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 277:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) + 278:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 279:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); + 280:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 281:Drivers/CMSIS/Include/cmsis_gcc.h **** + 282:Drivers/CMSIS/Include/cmsis_gcc.h **** + 283:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 284:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 285:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 286:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta + 287:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set + ARM GAS /tmp/ccM5oG95.s page 30 + + + 288:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 289:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) + 290:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 291:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); + 292:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 293:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 294:Drivers/CMSIS/Include/cmsis_gcc.h **** + 295:Drivers/CMSIS/Include/cmsis_gcc.h **** + 296:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 297:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer + 298:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP). + 299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 300:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void) + 302:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 304:Drivers/CMSIS/Include/cmsis_gcc.h **** + 305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) ); + 306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 307:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 308:Drivers/CMSIS/Include/cmsis_gcc.h **** + 309:Drivers/CMSIS/Include/cmsis_gcc.h **** + 310:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 311:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 312:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure) + 313:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat + 314:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value + 315:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 316:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) + 317:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 319:Drivers/CMSIS/Include/cmsis_gcc.h **** + 320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); + 321:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 322:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 323:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 324:Drivers/CMSIS/Include/cmsis_gcc.h **** + 325:Drivers/CMSIS/Include/cmsis_gcc.h **** + 326:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 327:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer + 328:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP). + 329:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 330:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 331:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) + 332:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); + 334:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 335:Drivers/CMSIS/Include/cmsis_gcc.h **** + 336:Drivers/CMSIS/Include/cmsis_gcc.h **** + 337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 338:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 339:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure) + 340:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. + 341:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set + 342:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 343:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) + 344:Drivers/CMSIS/Include/cmsis_gcc.h **** { + ARM GAS /tmp/ccM5oG95.s page 31 + + + 345:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); + 346:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 347:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 348:Drivers/CMSIS/Include/cmsis_gcc.h **** + 349:Drivers/CMSIS/Include/cmsis_gcc.h **** + 350:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 351:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 352:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Stack Pointer (non-secure) + 353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. + 354:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value + 355:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) + 357:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 359:Drivers/CMSIS/Include/cmsis_gcc.h **** + 360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); + 361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 362:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 363:Drivers/CMSIS/Include/cmsis_gcc.h **** + 364:Drivers/CMSIS/Include/cmsis_gcc.h **** + 365:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure) + 367:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. + 368:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set + 369:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 370:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) + 371:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); + 373:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 374:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 375:Drivers/CMSIS/Include/cmsis_gcc.h **** + 376:Drivers/CMSIS/Include/cmsis_gcc.h **** + 377:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 378:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask + 379:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register. + 380:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 381:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 382:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) + 383:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 384:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 385:Drivers/CMSIS/Include/cmsis_gcc.h **** + 386:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); + 387:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 388:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 389:Drivers/CMSIS/Include/cmsis_gcc.h **** + 390:Drivers/CMSIS/Include/cmsis_gcc.h **** + 391:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 392:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 393:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure) + 394:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg + 395:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value + 396:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 397:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) + 398:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 399:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 400:Drivers/CMSIS/Include/cmsis_gcc.h **** + 401:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); + ARM GAS /tmp/ccM5oG95.s page 32 + + + 402:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 403:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 404:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 405:Drivers/CMSIS/Include/cmsis_gcc.h **** + 406:Drivers/CMSIS/Include/cmsis_gcc.h **** + 407:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 408:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask + 409:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register. + 410:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 411:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 412:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) + 413:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); + 415:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 416:Drivers/CMSIS/Include/cmsis_gcc.h **** + 417:Drivers/CMSIS/Include/cmsis_gcc.h **** + 418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 419:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure) + 421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state. + 422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask + 423:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 424:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) + 425:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 426:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); + 427:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 428:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 429:Drivers/CMSIS/Include/cmsis_gcc.h **** + 430:Drivers/CMSIS/Include/cmsis_gcc.h **** + 431:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 433:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 434:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 435:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ + 436:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + 437:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 438:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 439:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void) + 440:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 441:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory"); + 442:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 443:Drivers/CMSIS/Include/cmsis_gcc.h **** + 444:Drivers/CMSIS/Include/cmsis_gcc.h **** + 445:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 446:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ + 447:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR. + 448:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. + 449:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 450:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void) + 451:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 452:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory"); + 453:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 454:Drivers/CMSIS/Include/cmsis_gcc.h **** + 455:Drivers/CMSIS/Include/cmsis_gcc.h **** + 456:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 457:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority + 458:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register. + ARM GAS /tmp/ccM5oG95.s page 33 + + + 459:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 460:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 461:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) + 462:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 463:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 464:Drivers/CMSIS/Include/cmsis_gcc.h **** + 465:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) ); + 466:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 467:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 468:Drivers/CMSIS/Include/cmsis_gcc.h **** + 469:Drivers/CMSIS/Include/cmsis_gcc.h **** + 470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 471:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure) + 473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state. + 474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value + 475:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) + 477:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 479:Drivers/CMSIS/Include/cmsis_gcc.h **** + 480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); + 481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 482:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 483:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 484:Drivers/CMSIS/Include/cmsis_gcc.h **** + 485:Drivers/CMSIS/Include/cmsis_gcc.h **** + 486:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority + 488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register. + 489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 490:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) + 492:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); + 494:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 495:Drivers/CMSIS/Include/cmsis_gcc.h **** + 496:Drivers/CMSIS/Include/cmsis_gcc.h **** + 497:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 498:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 499:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure) + 500:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state. + 501:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 502:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 503:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) + 504:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 505:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); + 506:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 507:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 508:Drivers/CMSIS/Include/cmsis_gcc.h **** + 509:Drivers/CMSIS/Include/cmsis_gcc.h **** + 510:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 511:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition + 512:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable + 513:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level. + 514:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set + 515:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + ARM GAS /tmp/ccM5oG95.s page 34 + + + 516:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) + 517:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 518:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); + 519:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 520:Drivers/CMSIS/Include/cmsis_gcc.h **** + 521:Drivers/CMSIS/Include/cmsis_gcc.h **** + 522:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 523:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask + 524:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register. + 525:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 526:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) + 528:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 530:Drivers/CMSIS/Include/cmsis_gcc.h **** + 531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); + 532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 533:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 534:Drivers/CMSIS/Include/cmsis_gcc.h **** + 535:Drivers/CMSIS/Include/cmsis_gcc.h **** + 536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 537:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 538:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure) + 539:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state. + 540:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value + 541:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 542:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) + 543:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 544:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 545:Drivers/CMSIS/Include/cmsis_gcc.h **** + 546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); + 547:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 548:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 549:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 550:Drivers/CMSIS/Include/cmsis_gcc.h **** + 551:Drivers/CMSIS/Include/cmsis_gcc.h **** + 552:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 553:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask + 554:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register. + 555:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 556:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 557:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) + 558:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 559:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); + 560:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 561:Drivers/CMSIS/Include/cmsis_gcc.h **** + 562:Drivers/CMSIS/Include/cmsis_gcc.h **** + 563:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 564:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 565:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure) + 566:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state. + 567:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set + 568:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 569:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) + 570:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 571:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); + 572:Drivers/CMSIS/Include/cmsis_gcc.h **** } + ARM GAS /tmp/ccM5oG95.s page 35 + + + 573:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 574:Drivers/CMSIS/Include/cmsis_gcc.h **** + 575:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 576:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 577:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ + 578:Drivers/CMSIS/Include/cmsis_gcc.h **** + 579:Drivers/CMSIS/Include/cmsis_gcc.h **** + 580:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 581:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + 582:Drivers/CMSIS/Include/cmsis_gcc.h **** + 583:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit + 585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 588:Drivers/CMSIS/Include/cmsis_gcc.h **** + 589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). + 590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 591:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) + 593:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 595:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 596:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 597:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 598:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 599:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 600:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) ); + 601:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 602:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 603:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 604:Drivers/CMSIS/Include/cmsis_gcc.h **** + 605:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) + 606:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 607:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure) + 608:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 609:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 610:Drivers/CMSIS/Include/cmsis_gcc.h **** + 611:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in + 612:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value + 613:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 614:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) + 615:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 616:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 617:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 618:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 619:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 620:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 621:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); + 622:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 623:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 624:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 625:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 626:Drivers/CMSIS/Include/cmsis_gcc.h **** + 627:Drivers/CMSIS/Include/cmsis_gcc.h **** + 628:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 629:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit + ARM GAS /tmp/ccM5oG95.s page 36 + + + 630:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 631:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 632:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 633:Drivers/CMSIS/Include/cmsis_gcc.h **** + 634:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). + 635:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 636:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 637:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) + 638:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 639:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 640:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); + 645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 646:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 647:Drivers/CMSIS/Include/cmsis_gcc.h **** + 648:Drivers/CMSIS/Include/cmsis_gcc.h **** + 649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 650:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) + 652:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 653:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 654:Drivers/CMSIS/Include/cmsis_gcc.h **** + 655:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s + 656:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set + 657:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 658:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) + 659:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 661:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI + 662:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; + 663:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 664:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); + 665:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 666:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 667:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 668:Drivers/CMSIS/Include/cmsis_gcc.h **** + 669:Drivers/CMSIS/Include/cmsis_gcc.h **** + 670:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 671:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit + 672:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 673:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure + 674:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 675:Drivers/CMSIS/Include/cmsis_gcc.h **** + 676:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). + 677:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 678:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 679:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) + 680:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 681:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 682:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 683:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 684:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 685:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 686:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + ARM GAS /tmp/ccM5oG95.s page 37 + + + 687:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) ); + 688:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 689:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 690:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 691:Drivers/CMSIS/Include/cmsis_gcc.h **** + 692:Drivers/CMSIS/Include/cmsis_gcc.h **** + 693:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 694:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 695:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure) + 696:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 697:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. + 698:Drivers/CMSIS/Include/cmsis_gcc.h **** + 699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec + 700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value + 701:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) + 703:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; + 707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 709:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); + 710:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 711:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 712:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 713:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 714:Drivers/CMSIS/Include/cmsis_gcc.h **** + 715:Drivers/CMSIS/Include/cmsis_gcc.h **** + 716:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit + 718:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 719:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure + 720:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. + 721:Drivers/CMSIS/Include/cmsis_gcc.h **** + 722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). + 723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set + 724:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) + 726:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 727:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ + 728:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) + 729:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 730:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 731:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 732:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); + 733:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 734:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 735:Drivers/CMSIS/Include/cmsis_gcc.h **** + 736:Drivers/CMSIS/Include/cmsis_gcc.h **** + 737:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) + 738:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 739:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure) + 740:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure + 741:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. + 742:Drivers/CMSIS/Include/cmsis_gcc.h **** + 743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu + ARM GAS /tmp/ccM5oG95.s page 38 + + + 744:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set + 745:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) + 747:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 748:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) + 749:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI + 750:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; + 751:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 752:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); + 753:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 754:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 756:Drivers/CMSIS/Include/cmsis_gcc.h **** + 757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + 758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ + 759:Drivers/CMSIS/Include/cmsis_gcc.h **** + 760:Drivers/CMSIS/Include/cmsis_gcc.h **** + 761:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR + 763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register. + 764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value + 765:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 766:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void) + 767:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 768:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 769:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 770:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr) + 771:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 772:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 773:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr(); + 775:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 776:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 777:Drivers/CMSIS/Include/cmsis_gcc.h **** + 778:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); + 779:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); + 780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 781:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 782:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U); + 783:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 784:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 785:Drivers/CMSIS/Include/cmsis_gcc.h **** + 786:Drivers/CMSIS/Include/cmsis_gcc.h **** + 787:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 788:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR + 789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register. + 790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set + 791:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) + 793:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + 795:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + 796:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr) + 797:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed + 798:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) + 799:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ + 800:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr); + ARM GAS /tmp/ccM5oG95.s page 39 + + + 801:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 802:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); + 803:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 804:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 805:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr; + 806:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 807:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 808:Drivers/CMSIS/Include/cmsis_gcc.h **** + 809:Drivers/CMSIS/Include/cmsis_gcc.h **** + 810:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */ + 811:Drivers/CMSIS/Include/cmsis_gcc.h **** + 812:Drivers/CMSIS/Include/cmsis_gcc.h **** + 813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ + 814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + 815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions + 816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ + 817:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 818:Drivers/CMSIS/Include/cmsis_gcc.h **** + 819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. + 820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" + 821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ + 822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) + 823:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) + 824:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) + 825:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) + 826:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 827:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) + 828:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) + 829:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) + 830:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 831:Drivers/CMSIS/Include/cmsis_gcc.h **** + 832:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 833:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation + 834:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. + 835:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 836:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") + 837:Drivers/CMSIS/Include/cmsis_gcc.h **** + 838:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 839:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt + 840:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o + 841:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 842:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi") + 843:Drivers/CMSIS/Include/cmsis_gcc.h **** + 844:Drivers/CMSIS/Include/cmsis_gcc.h **** + 845:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 846:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event + 847:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter + 848:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. + 849:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 850:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe") + 851:Drivers/CMSIS/Include/cmsis_gcc.h **** + 852:Drivers/CMSIS/Include/cmsis_gcc.h **** + 853:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 854:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event + 855:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + 856:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 857:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") + ARM GAS /tmp/ccM5oG95.s page 40 + + + 858:Drivers/CMSIS/Include/cmsis_gcc.h **** + 859:Drivers/CMSIS/Include/cmsis_gcc.h **** + 860:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 861:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier + 862:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, + 863:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, + 864:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. + 865:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 866:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) + 867:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); + 869:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 870:Drivers/CMSIS/Include/cmsis_gcc.h **** + 871:Drivers/CMSIS/Include/cmsis_gcc.h **** + 872:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 873:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Synchronization Barrier + 874:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Acts as a special kind of Data Memory Barrier. + 875:Drivers/CMSIS/Include/cmsis_gcc.h **** It completes when all explicit memory accesses before this instruction complete. + 876:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 877:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DSB(void) + 878:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory"); + 880:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 881:Drivers/CMSIS/Include/cmsis_gcc.h **** + 882:Drivers/CMSIS/Include/cmsis_gcc.h **** + 883:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 884:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Memory Barrier + 885:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Ensures the apparent order of the explicit memory operations before + 886:Drivers/CMSIS/Include/cmsis_gcc.h **** and after the instruction, without ensuring their completion. + 887:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 888:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DMB(void) + 889:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 890:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dmb 0xF":::"memory"); + 891:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 892:Drivers/CMSIS/Include/cmsis_gcc.h **** + 893:Drivers/CMSIS/Include/cmsis_gcc.h **** + 894:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 895:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (32 bit) + 896:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x785 + 897:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 898:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 899:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 900:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV(uint32_t value) + 901:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 902:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) + 903:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_bswap32(value); + 904:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 905:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 906:Drivers/CMSIS/Include/cmsis_gcc.h **** + 907:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 908:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 909:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 910:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 911:Drivers/CMSIS/Include/cmsis_gcc.h **** + 912:Drivers/CMSIS/Include/cmsis_gcc.h **** + 913:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 914:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (16 bit) + ARM GAS /tmp/ccM5oG95.s page 41 + + + 915:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes + 916:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 917:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 918:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 919:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) + 920:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 921:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 922:Drivers/CMSIS/Include/cmsis_gcc.h **** + 923:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 924:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 925:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 926:Drivers/CMSIS/Include/cmsis_gcc.h **** + 927:Drivers/CMSIS/Include/cmsis_gcc.h **** + 928:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 929:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (16 bit) + 930:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For exam + 931:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 932:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 933:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 934:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE int16_t __REVSH(int16_t value) + 935:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 936:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + 937:Drivers/CMSIS/Include/cmsis_gcc.h **** return (int16_t)__builtin_bswap16(value); + 938:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 939:Drivers/CMSIS/Include/cmsis_gcc.h **** int16_t result; + 940:Drivers/CMSIS/Include/cmsis_gcc.h **** + 941:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); + 942:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 943:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif + 944:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 945:Drivers/CMSIS/Include/cmsis_gcc.h **** + 946:Drivers/CMSIS/Include/cmsis_gcc.h **** + 947:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 948:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Rotate Right in unsigned value (32 bit) + 949:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Rotate Right (immediate) provides the value of the contents of a register rotated by a v + 950:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] op1 Value to rotate + 951:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] op2 Number of Bits to rotate + 952:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Rotated value + 953:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 954:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) + 955:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 956:Drivers/CMSIS/Include/cmsis_gcc.h **** op2 %= 32U; + 957:Drivers/CMSIS/Include/cmsis_gcc.h **** if (op2 == 0U) + 958:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 959:Drivers/CMSIS/Include/cmsis_gcc.h **** return op1; + 960:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 961:Drivers/CMSIS/Include/cmsis_gcc.h **** return (op1 >> op2) | (op1 << (32U - op2)); + 962:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 963:Drivers/CMSIS/Include/cmsis_gcc.h **** + 964:Drivers/CMSIS/Include/cmsis_gcc.h **** + 965:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 966:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Breakpoint + 967:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Causes the processor to enter Debug state. + 968:Drivers/CMSIS/Include/cmsis_gcc.h **** Debug tools can use this to investigate system state when the instruction at a particula + 969:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value is ignored by the processor. + 970:Drivers/CMSIS/Include/cmsis_gcc.h **** If required, a debugger can use it to store additional information about the break + 971:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + ARM GAS /tmp/ccM5oG95.s page 42 + + + 972:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __BKPT(value) __ASM volatile ("bkpt "#value) + 973:Drivers/CMSIS/Include/cmsis_gcc.h **** + 974:Drivers/CMSIS/Include/cmsis_gcc.h **** + 975:Drivers/CMSIS/Include/cmsis_gcc.h **** /** + 976:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse bit order of value + 977:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the bit order of the given value. + 978:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse + 979:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value + 980:Drivers/CMSIS/Include/cmsis_gcc.h **** */ + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) + 549 .loc 3 981 31 is_stmt 1 view .LVU146 + 550 .LBB179: + 982:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; + 551 .loc 3 983 3 view .LVU147 + 984:Drivers/CMSIS/Include/cmsis_gcc.h **** + 985:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + 986:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ + 987:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + 552 .loc 3 988 4 view .LVU148 + 553 .syntax unified + 554 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 555 0002 93FAA3F3 rbit r3, r3 + 556 @ 0 "" 2 + 557 .LVL37: + 989:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 990:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ + 991:Drivers/CMSIS/Include/cmsis_gcc.h **** + 992:Drivers/CMSIS/Include/cmsis_gcc.h **** result = value; /* r will be reversed bits of v; first get LSB of v */ + 993:Drivers/CMSIS/Include/cmsis_gcc.h **** for (value >>= 1U; value != 0U; value >>= 1U) + 994:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 995:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= 1U; + 996:Drivers/CMSIS/Include/cmsis_gcc.h **** result |= value & 1U; + 997:Drivers/CMSIS/Include/cmsis_gcc.h **** s--; + 998:Drivers/CMSIS/Include/cmsis_gcc.h **** } + 999:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= s; /* shift when v's highest bits are zero */ +1000:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif +1001:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; + 558 .loc 3 1001 3 view .LVU149 + 559 .loc 3 1001 3 is_stmt 0 view .LVU150 + 560 .thumb + 561 .syntax unified + 562 .LBE179: + 563 .LBE178: + 564 .loc 1 212 10 view .LVU151 + 565 0006 B3FA83FC clz ip, r3 + 566 .LVL38: + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Configure the port pins */ + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** while (((GPIO_InitStruct->Pin) >> pinpos) != 0x00000000U) + 567 .loc 1 215 3 is_stmt 1 view .LVU152 + 568 .loc 1 215 9 is_stmt 0 view .LVU153 + 569 000a 57E0 b .L35 + 570 .LVL39: + 571 .L43: + 572 .LCFI0: + ARM GAS /tmp/ccM5oG95.s page 43 + + + 573 .cfi_def_cfa_offset 16 + 574 .cfi_offset 4, -16 + 575 .cfi_offset 5, -12 + 576 .cfi_offset 6, -8 + 577 .cfi_offset 14, -4 + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Get current io position */ + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** currentpin = (GPIO_InitStruct->Pin) & (0x00000001U << pinpos); + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** if (currentpin) + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Check Speed mode parameters */ + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** assert_param(IS_LL_GPIO_SPEED(GPIO_InitStruct->Speed)); + 578 .loc 1 225 9 is_stmt 1 view .LVU154 + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Speed mode configuration */ + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed); + 579 .loc 1 228 9 view .LVU155 + 580 000c 8D68 ldr r5, [r1, #8] + 581 .LVL40: + 582 .LBB180: + 583 .LBI180: + 584 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @file stm32f7xx_ll_gpio.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Header file of GPIO LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #ifndef __STM32F7xx_LL_GPIO_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define __STM32F7xx_LL_GPIO_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + ARM GAS /tmp/ccM5oG95.s page 44 + + + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL GPIO + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /* Private constants ---------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /* Private macros ------------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #if defined(USE_FULL_LL_DRIVER) + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_Private_Macros GPIO Private Macros + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #endif /*USE_FULL_LL_DRIVER*/ + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /* Exported types ------------------------------------------------------------*/ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #if defined(USE_FULL_LL_DRIVER) + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief LL GPIO Init Structure definition + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** typedef struct + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** This parameter can be any value of @ref GPIO_LL_EC_PIN */ + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** This parameter can be a value of @ref GPIO_LL_EC_MODE. + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** GPIO HW configuration can be modified afterwards using unitary functi + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** uint32_t Speed; /*!< Specifies the speed for the selected pins. + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** This parameter can be a value of @ref GPIO_LL_EC_SPEED. + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** GPIO HW configuration can be modified afterwards using unitary functi + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** uint32_t OutputType; /*!< Specifies the operating output type for the selected pins. + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** This parameter can be a value of @ref GPIO_LL_EC_OUTPUT. + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** GPIO HW configuration can be modified afterwards using unitary functi + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins. + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** This parameter can be a value of @ref GPIO_LL_EC_PULL. + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** GPIO HW configuration can be modified afterwards using unitary functi + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** uint32_t Alternate; /*!< Specifies the Peripheral to be connected to the selected pins. + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** This parameter can be a value of @ref GPIO_LL_EC_AF. + ARM GAS /tmp/ccM5oG95.s page 45 + + + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** GPIO HW configuration can be modified afterwards using unitary functi + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } LL_GPIO_InitTypeDef; + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #endif /* USE_FULL_LL_DRIVER */ + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /* Exported constants --------------------------------------------------------*/ + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_EC_PIN PIN + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_0 GPIO_BSRR_BS_0 /*!< Select pin 0 */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_1 GPIO_BSRR_BS_1 /*!< Select pin 1 */ + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_2 GPIO_BSRR_BS_2 /*!< Select pin 2 */ + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_3 GPIO_BSRR_BS_3 /*!< Select pin 3 */ + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_4 GPIO_BSRR_BS_4 /*!< Select pin 4 */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_5 GPIO_BSRR_BS_5 /*!< Select pin 5 */ + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_6 GPIO_BSRR_BS_6 /*!< Select pin 6 */ + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_7 GPIO_BSRR_BS_7 /*!< Select pin 7 */ + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_8 GPIO_BSRR_BS_8 /*!< Select pin 8 */ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_9 GPIO_BSRR_BS_9 /*!< Select pin 9 */ + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_10 GPIO_BSRR_BS_10 /*!< Select pin 10 */ + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_11 GPIO_BSRR_BS_11 /*!< Select pin 11 */ + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_12 GPIO_BSRR_BS_12 /*!< Select pin 12 */ + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_13 GPIO_BSRR_BS_13 /*!< Select pin 13 */ + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_14 GPIO_BSRR_BS_14 /*!< Select pin 14 */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_15 GPIO_BSRR_BS_15 /*!< Select pin 15 */ + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PIN_ALL (GPIO_BSRR_BS_0 | GPIO_BSRR_BS_1 | GPIO_BSRR_BS_2 | \ + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** GPIO_BSRR_BS_3 | GPIO_BSRR_BS_4 | GPIO_BSRR_BS_5 | \ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** GPIO_BSRR_BS_6 | GPIO_BSRR_BS_7 | GPIO_BSRR_BS_8 | \ + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** GPIO_BSRR_BS_9 | GPIO_BSRR_BS_10 | GPIO_BSRR_BS_11 | \ + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** GPIO_BSRR_BS_12 | GPIO_BSRR_BS_13 | GPIO_BSRR_BS_14 | \ + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** GPIO_BSRR_BS_15) /*!< Select all pins */ + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_EC_MODE Mode + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_MODE_INPUT (0x00000000U) /*!< Select input mode */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_MODE_OUTPUT GPIO_MODER_MODER0_0 /*!< Select output mode */ + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_MODE_ALTERNATE GPIO_MODER_MODER0_1 /*!< Select alternate function mode + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_MODE_ANALOG GPIO_MODER_MODER0 /*!< Select analog mode */ + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_EC_OUTPUT Output Type + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + ARM GAS /tmp/ccM5oG95.s page 46 + + + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_OUTPUT_PUSHPULL (0x00000000U) /*!< Select push-pull as output type */ + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_OUTPUT_OPENDRAIN GPIO_OTYPER_OT_0 /*!< Select open-drain as output type * + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_EC_SPEED Output Speed + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Select I/O low output speed */ + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDER_OSPEEDR0_0 /*!< Select I/O medium output s + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDER_OSPEEDR0_1 /*!< Select I/O fast output spe + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_SPEED_FREQ_VERY_HIGH GPIO_OSPEEDER_OSPEEDR0 /*!< Select I/O high output spe + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PULL_NO (0x00000000U) /*!< Select I/O no pull */ + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PULL_UP GPIO_PUPDR_PUPDR0_0 /*!< Select I/O pull up */ + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_PULL_DOWN GPIO_PUPDR_PUPDR0_1 /*!< Select I/O pull down */ + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_EC_AF Alternate Function + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_0 (0x0000000U) /*!< Select alternate function 0 */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_1 (0x0000001U) /*!< Select alternate function 1 */ + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_2 (0x0000002U) /*!< Select alternate function 2 */ + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_3 (0x0000003U) /*!< Select alternate function 3 */ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_4 (0x0000004U) /*!< Select alternate function 4 */ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_5 (0x0000005U) /*!< Select alternate function 5 */ + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_6 (0x0000006U) /*!< Select alternate function 6 */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_7 (0x0000007U) /*!< Select alternate function 7 */ + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_8 (0x0000008U) /*!< Select alternate function 8 */ + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_9 (0x0000009U) /*!< Select alternate function 9 */ + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_10 (0x000000AU) /*!< Select alternate function 10 */ + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_11 (0x000000BU) /*!< Select alternate function 11 */ + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_12 (0x000000CU) /*!< Select alternate function 12 */ + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_13 (0x000000DU) /*!< Select alternate function 13 */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_14 (0x000000EU) /*!< Select alternate function 14 */ + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_AF_15 (0x000000FU) /*!< Select alternate function 15 */ + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /* Exported macro ------------------------------------------------------------*/ + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + ARM GAS /tmp/ccM5oG95.s page 47 + + + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Write a value in GPIO register + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param __INSTANCE__ GPIO Instance + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param __REG__ Register to be written + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param __VALUE__ Value to be written in the register + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval None + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALU + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Read a value in GPIO register + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param __INSTANCE__ GPIO Instance + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param __REG__ Register to be read + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval Register value + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** #define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @} + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /* Exported functions --------------------------------------------------------*/ + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @{ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Configure gpio mode for a dedicated pin on dedicated port. + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Warning: only one pin can be passed as parameter. + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll MODER MODEy LL_GPIO_SetPinMode + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pin This parameter can be one of the following values: + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_0 + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_1 + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_2 + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_3 + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_4 + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_5 + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_6 + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_7 + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_8 + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_9 + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_10 + ARM GAS /tmp/ccM5oG95.s page 48 + + + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_11 + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_12 + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_13 + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_14 + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_15 + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Mode This parameter can be one of the following values: + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_MODE_INPUT + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_MODE_OUTPUT + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_MODE_ALTERNATE + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_MODE_ANALOG + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval None + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** MODIFY_REG(GPIOx->MODER, (GPIO_MODER_MODER0 << (POSITION_VAL(Pin) * 2U)), (Mode << (POSITION_VAL( + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Return gpio mode for a dedicated pin on dedicated port. + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Warning: only one pin can be passed as parameter. + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll MODER MODEy LL_GPIO_GetPinMode + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pin This parameter can be one of the following values: + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_0 + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_1 + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_2 + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_3 + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_4 + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_5 + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_6 + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_7 + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_8 + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_9 + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_10 + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_11 + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_12 + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_13 + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_14 + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_15 + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval Returned value can be one of the following values: + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_MODE_INPUT + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_MODE_OUTPUT + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_MODE_ALTERNATE + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_MODE_ANALOG + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** return (uint32_t)(READ_BIT(GPIOx->MODER, + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** (GPIO_MODER_MODER0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Configure gpio output type for several pins on dedicated port. + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Output type as to be set when gpio pin is in output or + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * alternate modes. Possible type are Push-pull or Open-drain. + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll OTYPER OTy LL_GPIO_SetPinOutputType + ARM GAS /tmp/ccM5oG95.s page 49 + + + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param PinMask This parameter can be a combination of the following values: + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_0 + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_1 + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_2 + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_3 + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_4 + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_5 + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_6 + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_7 + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_8 + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_9 + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_10 + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_11 + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_12 + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_13 + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_14 + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_15 + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_ALL + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param OutputType This parameter can be one of the following values: + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval None + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t Outpu + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType)); + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Return gpio output type for several pins on dedicated port. + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Output type as to be set when gpio pin is in output or + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * alternate modes. Possible type are Push-pull or Open-drain. + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Warning: only one pin can be passed as parameter. + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll OTYPER OTy LL_GPIO_GetPinOutputType + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pin This parameter can be one of the following values: + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_0 + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_1 + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_2 + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_3 + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_4 + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_5 + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_6 + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_7 + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_8 + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_9 + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_10 + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_11 + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_12 + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_13 + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_14 + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_15 + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_ALL + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval Returned value can be one of the following values: + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + ARM GAS /tmp/ccM5oG95.s page 50 + + + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) >> POSITION_VAL(Pin)); + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Configure gpio speed for a dedicated pin on dedicated port. + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note I/O speed can be Low, Medium, Fast or High speed. + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Warning: only one pin can be passed as parameter. + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Refer to datasheet for frequency specifications and the power + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * supply and load conditions for each speed. + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll OSPEEDR OSPEEDy LL_GPIO_SetPinSpeed + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pin This parameter can be one of the following values: + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_0 + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_1 + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_2 + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_3 + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_4 + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_5 + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_6 + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_7 + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_8 + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_9 + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_10 + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_11 + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_12 + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_13 + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_14 + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_15 + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Speed This parameter can be one of the following values: + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_SPEED_FREQ_LOW + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval None + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed) + 585 .loc 4 413 22 view .LVU156 + 586 .LBB181: + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** MODIFY_REG(GPIOx->OSPEEDR, (GPIO_OSPEEDER_OSPEEDR0 << (POSITION_VAL(Pin) * 2U)), + 587 .loc 4 415 3 view .LVU157 + 588 000e 8268 ldr r2, [r0, #8] + 589 .LVL41: + 590 .LBB182: + 591 .LBI182: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 592 .loc 3 981 31 view .LVU158 + 593 .LBB183: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 594 .loc 3 983 3 view .LVU159 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 595 .loc 3 988 4 view .LVU160 + 596 .syntax unified + 597 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + ARM GAS /tmp/ccM5oG95.s page 51 + + + 598 0010 93FAA3F4 rbit r4, r3 + 599 @ 0 "" 2 + 600 .LVL42: + 601 .loc 3 1001 3 view .LVU161 + 602 .loc 3 1001 3 is_stmt 0 view .LVU162 + 603 .thumb + 604 .syntax unified + 605 .LBE183: + 606 .LBE182: + 607 .loc 4 415 3 view .LVU163 + 608 0014 B4FA84F4 clz r4, r4 + 609 0018 6400 lsls r4, r4, #1 + 610 001a 4FF0030E mov lr, #3 + 611 001e 0EFA04F4 lsl r4, lr, r4 + 612 0022 22EA0402 bic r2, r2, r4 + 613 .LVL43: + 614 .LBB184: + 615 .LBI184: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 616 .loc 3 981 31 is_stmt 1 view .LVU164 + 617 .LBB185: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 618 .loc 3 983 3 view .LVU165 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 619 .loc 3 988 4 view .LVU166 + 620 .syntax unified + 621 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 622 0026 93FAA3F4 rbit r4, r3 + 623 @ 0 "" 2 + 624 .LVL44: + 625 .loc 3 1001 3 view .LVU167 + 626 .loc 3 1001 3 is_stmt 0 view .LVU168 + 627 .thumb + 628 .syntax unified + 629 .LBE185: + 630 .LBE184: + 631 .loc 4 415 3 view .LVU169 + 632 002a B4FA84F4 clz r4, r4 + 633 002e 6400 lsls r4, r4, #1 + 634 0030 05FA04F4 lsl r4, r5, r4 + 635 0034 2243 orrs r2, r2, r4 + 636 0036 8260 str r2, [r0, #8] + 637 .LVL45: + 638 .loc 4 415 3 view .LVU170 + 639 .LBE181: + 640 .LBE180: + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Check Output mode parameters */ + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType)); + 641 .loc 1 231 9 is_stmt 1 view .LVU171 + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Output mode configuration*/ + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_GPIO_SetPinOutputType(GPIOx, GPIO_InitStruct->Pin, GPIO_InitStruct->OutputType); + 642 .loc 1 234 9 view .LVU172 + 643 0038 0C68 ldr r4, [r1] + 644 003a CD68 ldr r5, [r1, #12] + 645 .LVL46: + ARM GAS /tmp/ccM5oG95.s page 52 + + + 646 .LBB186: + 647 .LBI186: + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 648 .loc 4 342 22 view .LVU173 + 649 .LBB187: + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 650 .loc 4 344 3 view .LVU174 + 651 003c 4268 ldr r2, [r0, #4] + 652 003e 22EA0402 bic r2, r2, r4 + 653 0042 05FB04F4 mul r4, r5, r4 + 654 .LVL47: + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 655 .loc 4 344 3 is_stmt 0 view .LVU175 + 656 0046 2243 orrs r2, r2, r4 + 657 0048 4260 str r2, [r0, #4] + 658 .LVL48: + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 659 .loc 4 345 1 view .LVU176 + 660 004a 45E0 b .L30 + 661 .LVL49: + 662 .L44: + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 663 .loc 4 345 1 view .LVU177 + 664 .LBE187: + 665 .LBE186: + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Pull-up Pull down resistor configuration*/ + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_GPIO_SetPinPull(GPIOx, currentpin, GPIO_InitStruct->Pull); + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** if (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE) + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Check Alternate parameter */ + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** assert_param(IS_LL_GPIO_ALTERNATE(GPIO_InitStruct->Alternate)); + 666 .loc 1 243 9 is_stmt 1 view .LVU178 + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Speed mode configuration */ + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** if (POSITION_VAL(currentpin) < 0x00000008U) + 667 .loc 1 246 9 view .LVU179 + 668 .LBB188: + 669 .LBI188: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 670 .loc 3 981 31 view .LVU180 + 671 .LBB189: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 672 .loc 3 983 3 view .LVU181 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 673 .loc 3 988 4 view .LVU182 + 674 .syntax unified + 675 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 676 004c 93FAA3F2 rbit r2, r3 + 677 @ 0 "" 2 + 678 .LVL50: + 679 .loc 3 1001 3 view .LVU183 + 680 .loc 3 1001 3 is_stmt 0 view .LVU184 + 681 .thumb + 682 .syntax unified + ARM GAS /tmp/ccM5oG95.s page 53 + + + 683 .LBE189: + 684 .LBE188: + 685 .loc 1 246 13 view .LVU185 + 686 0050 B2FA82F2 clz r2, r2 + 687 .loc 1 246 12 view .LVU186 + 688 0054 072A cmp r2, #7 + 689 0056 15D8 bhi .L32 + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_GPIO_SetAFPin_0_7(GPIOx, currentpin, GPIO_InitStruct->Alternate); + 690 .loc 1 248 11 is_stmt 1 view .LVU187 + 691 0058 4D69 ldr r5, [r1, #20] + 692 .LVL51: + 693 .LBB190: + 694 .LBI190: + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** (Speed << (POSITION_VAL(Pin) * 2U))); + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Return gpio speed for a dedicated pin on dedicated port. + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note I/O speed can be Low, Medium, Fast or High speed. + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Warning: only one pin can be passed as parameter. + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Refer to datasheet for frequency specifications and the power + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * supply and load conditions for each speed. + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll OSPEEDR OSPEEDy LL_GPIO_GetPinSpeed + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pin This parameter can be one of the following values: + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_0 + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_1 + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_2 + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_3 + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_4 + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_5 + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_6 + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_7 + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_8 + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_9 + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_10 + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_11 + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_12 + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_13 + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_14 + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_15 + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval Returned value can be one of the following values: + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_SPEED_FREQ_LOW + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** return (uint32_t)(READ_BIT(GPIOx->OSPEEDR, + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** (GPIO_OSPEEDER_OSPEEDR0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port. + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Warning: only one pin can be passed as parameter. + ARM GAS /tmp/ccM5oG95.s page 54 + + + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll PUPDR PUPDy LL_GPIO_SetPinPull + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pin This parameter can be one of the following values: + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_0 + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_1 + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_2 + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_3 + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_4 + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_5 + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_6 + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_7 + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_8 + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_9 + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_10 + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_11 + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_12 + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_13 + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_14 + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_15 + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pull This parameter can be one of the following values: + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PULL_NO + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PULL_UP + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PULL_DOWN + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval None + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull) + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** MODIFY_REG(GPIOx->PUPDR, (GPIO_PUPDR_PUPDR0 << (POSITION_VAL(Pin) * 2U)), (Pull << (POSITION_VAL( + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Warning: only one pin can be passed as parameter. + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll PUPDR PUPDy LL_GPIO_GetPinPull + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pin This parameter can be one of the following values: + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_0 + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_1 + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_2 + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_3 + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_4 + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_5 + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_6 + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_7 + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_8 + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_9 + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_10 + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_11 + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_12 + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_13 + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_14 + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_15 + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval Returned value can be one of the following values: + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PULL_NO + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PULL_UP + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PULL_DOWN + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + ARM GAS /tmp/ccM5oG95.s page 55 + + + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** return (uint32_t)(READ_BIT(GPIOx->PUPDR, + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** (GPIO_PUPDR_PUPDR0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Configure gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Possible values are from AF0 to AF15 depending on target. + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Warning: only one pin can be passed as parameter. + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll AFRL AFSELy LL_GPIO_SetAFPin_0_7 + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pin This parameter can be one of the following values: + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_0 + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_1 + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_2 + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_3 + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_4 + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_5 + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_6 + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_7 + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Alternate This parameter can be one of the following values: + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_0 + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_1 + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_2 + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_3 + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_4 + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_5 + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_6 + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_7 + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_8 + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_9 + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_10 + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_11 + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_12 + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_13 + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_14 + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_15 + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval None + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) + 695 .loc 4 556 22 view .LVU188 + 696 .LBB191: + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** MODIFY_REG(GPIOx->AFR[0], (GPIO_AFRL_AFRL0 << (POSITION_VAL(Pin) * 4U)), + 697 .loc 4 558 3 view .LVU189 + 698 005a 026A ldr r2, [r0, #32] + 699 .LVL52: + 700 .LBB192: + 701 .LBI192: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 702 .loc 3 981 31 view .LVU190 + 703 .LBB193: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 704 .loc 3 983 3 view .LVU191 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 705 .loc 3 988 4 view .LVU192 + ARM GAS /tmp/ccM5oG95.s page 56 + + + 706 .syntax unified + 707 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 708 005c 93FAA3F4 rbit r4, r3 + 709 @ 0 "" 2 + 710 .LVL53: + 711 .loc 3 1001 3 view .LVU193 + 712 .loc 3 1001 3 is_stmt 0 view .LVU194 + 713 .thumb + 714 .syntax unified + 715 .LBE193: + 716 .LBE192: + 717 .loc 4 558 3 view .LVU195 + 718 0060 B4FA84F4 clz r4, r4 + 719 0064 A400 lsls r4, r4, #2 + 720 0066 0F26 movs r6, #15 + 721 0068 06FA04F4 lsl r4, r6, r4 + 722 006c 22EA0402 bic r2, r2, r4 + 723 .LVL54: + 724 .LBB194: + 725 .LBI194: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 726 .loc 3 981 31 is_stmt 1 view .LVU196 + 727 .LBB195: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 728 .loc 3 983 3 view .LVU197 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 729 .loc 3 988 4 view .LVU198 + 730 .syntax unified + 731 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 732 0070 93FAA3F4 rbit r4, r3 + 733 @ 0 "" 2 + 734 .LVL55: + 735 .loc 3 1001 3 view .LVU199 + 736 .loc 3 1001 3 is_stmt 0 view .LVU200 + 737 .thumb + 738 .syntax unified + 739 .LBE195: + 740 .LBE194: + 741 .loc 4 558 3 view .LVU201 + 742 0074 B4FA84F4 clz r4, r4 + 743 0078 A400 lsls r4, r4, #2 + 744 007a 05FA04F4 lsl r4, r5, r4 + 745 007e 2243 orrs r2, r2, r4 + 746 0080 0262 str r2, [r0, #32] + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** (Alternate << (POSITION_VAL(Pin) * 4U))); + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 747 .loc 4 560 1 view .LVU202 + 748 0082 41E0 b .L31 + 749 .LVL56: + 750 .L32: + 751 .loc 4 560 1 view .LVU203 + 752 .LBE191: + 753 .LBE190: + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** else + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_GPIO_SetAFPin_8_15(GPIOx, currentpin, GPIO_InitStruct->Alternate); + ARM GAS /tmp/ccM5oG95.s page 57 + + + 754 .loc 1 252 11 is_stmt 1 view .LVU204 + 755 0084 4C69 ldr r4, [r1, #20] + 756 .LVL57: + 757 .LBB196: + 758 .LBI196: + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll AFRL AFSELy LL_GPIO_GetAFPin_0_7 + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pin This parameter can be one of the following values: + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_0 + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_1 + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_2 + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_3 + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_4 + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_5 + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_6 + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_7 + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval Returned value can be one of the following values: + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_0 + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_1 + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_2 + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_3 + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_4 + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_5 + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_6 + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_7 + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_8 + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_9 + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_10 + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_11 + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_12 + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_13 + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_14 + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_15 + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin) + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** return (uint32_t)(READ_BIT(GPIOx->AFR[0], + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** (GPIO_AFRL_AFRL0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** /** + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @brief Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Possible values are from AF0 to AF15 depending on target. + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @note Warning: only one pin can be passed as parameter. + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @rmtoll AFRH AFSELy LL_GPIO_SetAFPin_8_15 + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param GPIOx GPIO Port + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Pin This parameter can be one of the following values: + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_8 + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_9 + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_10 + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_11 + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_12 + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_13 + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_14 + ARM GAS /tmp/ccM5oG95.s page 58 + + + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_PIN_15 + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @param Alternate This parameter can be one of the following values: + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_0 + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_1 + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_2 + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_3 + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_4 + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_5 + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_6 + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_7 + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_8 + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_9 + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_10 + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_11 + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_12 + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_13 + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_14 + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @arg @ref LL_GPIO_AF_15 + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** * @retval None + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** */ + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** __STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) + 759 .loc 4 633 22 view .LVU205 + 760 .LBB197: + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** MODIFY_REG(GPIOx->AFR[1], (GPIO_AFRH_AFRH0 << (POSITION_VAL(Pin >> 8U) * 4U)), + 761 .loc 4 635 3 view .LVU206 + 762 0086 456A ldr r5, [r0, #36] + 763 0088 1A0A lsrs r2, r3, #8 + 764 .LVL58: + 765 .LBB198: + 766 .LBI198: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 767 .loc 3 981 31 view .LVU207 + 768 .LBB199: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 769 .loc 3 983 3 view .LVU208 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 770 .loc 3 988 4 view .LVU209 + 771 .syntax unified + 772 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 773 008a 92FAA2FE rbit lr, r2 + 774 @ 0 "" 2 + 775 .LVL59: + 776 .loc 3 1001 3 view .LVU210 + 777 .loc 3 1001 3 is_stmt 0 view .LVU211 + 778 .thumb + 779 .syntax unified + 780 .LBE199: + 781 .LBE198: + 782 .loc 4 635 3 view .LVU212 + 783 008e BEFA8EFE clz lr, lr + 784 0092 4FEA8E0E lsl lr, lr, #2 + 785 0096 0F26 movs r6, #15 + 786 0098 06FA0EFE lsl lr, r6, lr + 787 009c 25EA0E05 bic r5, r5, lr + 788 .LVL60: + 789 .LBB200: + ARM GAS /tmp/ccM5oG95.s page 59 + + + 790 .LBI200: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 791 .loc 3 981 31 is_stmt 1 view .LVU213 + 792 .LBB201: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 793 .loc 3 983 3 view .LVU214 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 794 .loc 3 988 4 view .LVU215 + 795 .syntax unified + 796 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 797 00a0 92FAA2F2 rbit r2, r2 + 798 @ 0 "" 2 + 799 .LVL61: + 800 .loc 3 1001 3 view .LVU216 + 801 .loc 3 1001 3 is_stmt 0 view .LVU217 + 802 .thumb + 803 .syntax unified + 804 .LBE201: + 805 .LBE200: + 806 .loc 4 635 3 view .LVU218 + 807 00a4 B2FA82F2 clz r2, r2 + 808 00a8 9200 lsls r2, r2, #2 + 809 00aa 04FA02F2 lsl r2, r4, r2 + 810 00ae 2A43 orrs r2, r2, r5 + 811 00b0 4262 str r2, [r0, #36] + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** (Alternate << (POSITION_VAL(Pin >> 8U) * 4U))); + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 812 .loc 4 637 1 view .LVU219 + 813 00b2 29E0 b .L31 + 814 .LVL62: + 815 .L45: + 816 .loc 4 637 1 view .LVU220 + 817 .LBE197: + 818 .LBE196: + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Pin Mode configuration */ + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode); + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** pinpos++; + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** return (SUCCESS); + 819 .loc 1 260 3 is_stmt 1 view .LVU221 + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 820 .loc 1 261 1 is_stmt 0 view .LVU222 + 821 00b4 0020 movs r0, #0 + 822 .LVL63: + 823 .loc 1 261 1 view .LVU223 + 824 00b6 70BD pop {r4, r5, r6, pc} + 825 .LVL64: + 826 .L42: + 827 .LCFI1: + 828 .cfi_def_cfa_offset 0 + 829 .cfi_restore 4 + 830 .cfi_restore 5 + 831 .cfi_restore 6 + 832 .cfi_restore 14 + ARM GAS /tmp/ccM5oG95.s page 60 + + + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 833 .loc 1 258 5 is_stmt 1 view .LVU224 + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 834 .loc 1 258 11 is_stmt 0 view .LVU225 + 835 00b8 0CF1010C add ip, ip, #1 + 836 .LVL65: + 837 .L35: + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 838 .loc 1 215 9 is_stmt 1 view .LVU226 + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 839 .loc 1 215 27 is_stmt 0 view .LVU227 + 840 00bc 0B68 ldr r3, [r1] + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 841 .loc 1 215 9 view .LVU228 + 842 00be 33FA0CF2 lsrs r2, r3, ip + 843 00c2 44D0 beq .L41 + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 844 .loc 1 218 5 is_stmt 1 view .LVU229 + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 845 .loc 1 218 56 is_stmt 0 view .LVU230 + 846 00c4 0122 movs r2, #1 + 847 00c6 02FA0CF2 lsl r2, r2, ip + 848 .LVL66: + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 849 .loc 1 220 5 is_stmt 1 view .LVU231 + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 850 .loc 1 220 8 is_stmt 0 view .LVU232 + 851 00ca 1340 ands r3, r2, r3 + 852 .LVL67: + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 853 .loc 1 220 8 view .LVU233 + 854 00cc F4D0 beq .L42 + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** uint32_t pinpos = 0x00000000U; + 855 .loc 1 200 1 view .LVU234 + 856 00ce 70B5 push {r4, r5, r6, lr} + 857 .LCFI2: + 858 .cfi_def_cfa_offset 16 + 859 .cfi_offset 4, -16 + 860 .cfi_offset 5, -12 + 861 .cfi_offset 6, -8 + 862 .cfi_offset 14, -4 + 863 .L36: + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 864 .loc 1 222 7 is_stmt 1 view .LVU235 + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 865 .loc 1 222 27 is_stmt 0 view .LVU236 + 866 00d0 4A68 ldr r2, [r1, #4] + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 867 .loc 1 222 58 view .LVU237 + 868 00d2 013A subs r2, r2, #1 + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 869 .loc 1 222 10 view .LVU238 + 870 00d4 012A cmp r2, #1 + 871 00d6 99D9 bls .L43 + 872 .L30: + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 873 .loc 1 238 7 is_stmt 1 view .LVU239 + ARM GAS /tmp/ccM5oG95.s page 61 + + + 874 .LVL68: + 875 .LBB202: + 876 .LBI202: + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 877 .loc 4 484 22 view .LVU240 + 878 .LBB203: + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 879 .loc 4 486 3 view .LVU241 + 880 00d8 C268 ldr r2, [r0, #12] + 881 .LVL69: + 882 .LBB204: + 883 .LBI204: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 884 .loc 3 981 31 view .LVU242 + 885 .LBB205: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 886 .loc 3 983 3 view .LVU243 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 887 .loc 3 988 4 view .LVU244 + 888 .syntax unified + 889 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 890 00da 93FAA3F4 rbit r4, r3 + 891 @ 0 "" 2 + 892 .LVL70: + 893 .loc 3 1001 3 view .LVU245 + 894 .loc 3 1001 3 is_stmt 0 view .LVU246 + 895 .thumb + 896 .syntax unified + 897 .LBE205: + 898 .LBE204: + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 899 .loc 4 486 3 view .LVU247 + 900 00de B4FA84F4 clz r4, r4 + 901 00e2 6400 lsls r4, r4, #1 + 902 00e4 0325 movs r5, #3 + 903 00e6 05FA04F4 lsl r4, r5, r4 + 904 00ea 22EA0402 bic r2, r2, r4 + 905 .LVL71: + 906 .LBB206: + 907 .LBI206: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 908 .loc 3 981 31 is_stmt 1 view .LVU248 + 909 .LBB207: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 910 .loc 3 983 3 view .LVU249 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 911 .loc 3 988 4 view .LVU250 + 912 .syntax unified + 913 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 914 00ee 93FAA3F4 rbit r4, r3 + 915 @ 0 "" 2 + 916 .LVL72: + 917 .loc 3 1001 3 view .LVU251 + 918 .loc 3 1001 3 is_stmt 0 view .LVU252 + 919 .thumb + 920 .syntax unified + 921 .LBE207: + ARM GAS /tmp/ccM5oG95.s page 62 + + + 922 .LBE206: + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 923 .loc 4 486 3 view .LVU253 + 924 00f2 B4FA84F4 clz r4, r4 + 925 00f6 6400 lsls r4, r4, #1 + 926 00f8 0D69 ldr r5, [r1, #16] + 927 00fa 05FA04F4 lsl r4, r5, r4 + 928 00fe 2243 orrs r2, r2, r4 + 929 0100 C260 str r2, [r0, #12] + 930 .LVL73: + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 931 .loc 4 486 3 view .LVU254 + 932 .LBE203: + 933 .LBE202: + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 934 .loc 1 240 7 is_stmt 1 view .LVU255 + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 935 .loc 1 240 26 is_stmt 0 view .LVU256 + 936 0102 4A68 ldr r2, [r1, #4] + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 937 .loc 1 240 10 view .LVU257 + 938 0104 022A cmp r2, #2 + 939 0106 A1D0 beq .L44 + 940 .L31: + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 941 .loc 1 256 7 is_stmt 1 view .LVU258 + 942 0108 4A68 ldr r2, [r1, #4] + 943 .LVL74: + 944 .LBB208: + 945 .LBI208: + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** { + 946 .loc 4 273 22 view .LVU259 + 947 .LBB209: + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 948 .loc 4 275 3 view .LVU260 + 949 010a 0468 ldr r4, [r0] + 950 .LVL75: + 951 .LBB210: + 952 .LBI210: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 953 .loc 3 981 31 view .LVU261 + 954 .LBB211: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 955 .loc 3 983 3 view .LVU262 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 956 .loc 3 988 4 view .LVU263 + 957 .syntax unified + 958 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 959 010c 93FAA3FE rbit lr, r3 + 960 @ 0 "" 2 + 961 .LVL76: + 962 .loc 3 1001 3 view .LVU264 + 963 .loc 3 1001 3 is_stmt 0 view .LVU265 + 964 .thumb + 965 .syntax unified + 966 .LBE211: + 967 .LBE210: + ARM GAS /tmp/ccM5oG95.s page 63 + + + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 968 .loc 4 275 3 view .LVU266 + 969 0110 BEFA8EFE clz lr, lr + 970 0114 4FEA4E0E lsl lr, lr, #1 + 971 0118 0325 movs r5, #3 + 972 011a 05FA0EFE lsl lr, r5, lr + 973 011e 24EA0E0E bic lr, r4, lr + 974 .LVL77: + 975 .LBB212: + 976 .LBI212: + 981:Drivers/CMSIS/Include/cmsis_gcc.h **** { + 977 .loc 3 981 31 is_stmt 1 view .LVU267 + 978 .LBB213: + 983:Drivers/CMSIS/Include/cmsis_gcc.h **** + 979 .loc 3 983 3 view .LVU268 + 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else + 980 .loc 3 988 4 view .LVU269 + 981 .syntax unified + 982 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 + 983 0122 93FAA3F3 rbit r3, r3 + 984 @ 0 "" 2 + 985 .LVL78: + 986 .loc 3 1001 3 view .LVU270 + 987 .loc 3 1001 3 is_stmt 0 view .LVU271 + 988 .thumb + 989 .syntax unified + 990 .LBE213: + 991 .LBE212: + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 992 .loc 4 275 3 view .LVU272 + 993 0126 B3FA83F3 clz r3, r3 + 994 012a 5B00 lsls r3, r3, #1 + 995 012c 02FA03F3 lsl r3, r2, r3 + 996 0130 4EEA0303 orr r3, lr, r3 + 997 0134 0360 str r3, [r0] + 998 .LVL79: + 999 .L29: + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h **** } + 1000 .loc 4 275 3 view .LVU273 + 1001 .LBE209: + 1002 .LBE208: + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 1003 .loc 1 258 5 is_stmt 1 view .LVU274 + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 1004 .loc 1 258 11 is_stmt 0 view .LVU275 + 1005 0136 0CF1010C add ip, ip, #1 + 1006 .LVL80: + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 1007 .loc 1 215 9 is_stmt 1 view .LVU276 + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 1008 .loc 1 215 27 is_stmt 0 view .LVU277 + 1009 013a 0B68 ldr r3, [r1] + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 1010 .loc 1 215 9 view .LVU278 + 1011 013c 33FA0CF2 lsrs r2, r3, ip + 1012 0140 B8D0 beq .L45 + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + ARM GAS /tmp/ccM5oG95.s page 64 + + + 1013 .loc 1 218 5 is_stmt 1 view .LVU279 + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 1014 .loc 1 218 56 is_stmt 0 view .LVU280 + 1015 0142 0122 movs r2, #1 + 1016 0144 02FA0CF2 lsl r2, r2, ip + 1017 .LVL81: + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 1018 .loc 1 220 5 is_stmt 1 view .LVU281 + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 1019 .loc 1 220 8 is_stmt 0 view .LVU282 + 1020 0148 1340 ands r3, r2, r3 + 1021 .LVL82: + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 1022 .loc 1 220 8 view .LVU283 + 1023 014a F4D0 beq .L29 + 1024 014c C0E7 b .L36 + 1025 .LVL83: + 1026 .L41: + 1027 .LCFI3: + 1028 .cfi_def_cfa_offset 0 + 1029 .cfi_restore 4 + 1030 .cfi_restore 5 + 1031 .cfi_restore 6 + 1032 .cfi_restore 14 + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 1033 .loc 1 260 3 is_stmt 1 view .LVU284 + 1034 .loc 1 261 1 is_stmt 0 view .LVU285 + 1035 014e 0020 movs r0, #0 + 1036 .LVL84: + 1037 .loc 1 261 1 view .LVU286 + 1038 0150 7047 bx lr + 1039 .cfi_endproc + 1040 .LFE200: + 1042 .section .text.LL_GPIO_StructInit,"ax",%progbits + 1043 .align 1 + 1044 .global LL_GPIO_StructInit + 1045 .syntax unified + 1046 .thumb + 1047 .thumb_func + 1048 .fpu fpv5-d16 + 1050 LL_GPIO_StructInit: + 1051 .LVL85: + 1052 .LFB201: + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /** + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @brief Set each @ref LL_GPIO_InitTypeDef field to default value. + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @param GPIO_InitStruct pointer to a @ref LL_GPIO_InitTypeDef structure + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * whose fields will be set to default values. + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** * @retval None + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** */ + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct) + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** { + 1053 .loc 1 271 1 is_stmt 1 view -0 + 1054 .cfi_startproc + 1055 @ args = 0, pretend = 0, frame = 0 + 1056 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccM5oG95.s page 65 + + + 1057 @ link register save eliminated. + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** /* Reset GPIO init structure parameters values */ + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** GPIO_InitStruct->Pin = LL_GPIO_PIN_ALL; + 1058 .loc 1 273 3 view .LVU288 + 1059 .loc 1 273 31 is_stmt 0 view .LVU289 + 1060 0000 4FF6FF73 movw r3, #65535 + 1061 0004 0360 str r3, [r0] + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** GPIO_InitStruct->Mode = LL_GPIO_MODE_ANALOG; + 1062 .loc 1 274 3 is_stmt 1 view .LVU290 + 1063 .loc 1 274 31 is_stmt 0 view .LVU291 + 1064 0006 0323 movs r3, #3 + 1065 0008 4360 str r3, [r0, #4] + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** GPIO_InitStruct->Speed = LL_GPIO_SPEED_FREQ_LOW; + 1066 .loc 1 275 3 is_stmt 1 view .LVU292 + 1067 .loc 1 275 31 is_stmt 0 view .LVU293 + 1068 000a 0023 movs r3, #0 + 1069 000c 8360 str r3, [r0, #8] + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** GPIO_InitStruct->OutputType = LL_GPIO_OUTPUT_PUSHPULL; + 1070 .loc 1 276 3 is_stmt 1 view .LVU294 + 1071 .loc 1 276 31 is_stmt 0 view .LVU295 + 1072 000e C360 str r3, [r0, #12] + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** GPIO_InitStruct->Pull = LL_GPIO_PULL_NO; + 1073 .loc 1 277 3 is_stmt 1 view .LVU296 + 1074 .loc 1 277 31 is_stmt 0 view .LVU297 + 1075 0010 0361 str r3, [r0, #16] + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** GPIO_InitStruct->Alternate = LL_GPIO_AF_0; + 1076 .loc 1 278 3 is_stmt 1 view .LVU298 + 1077 .loc 1 278 31 is_stmt 0 view .LVU299 + 1078 0012 4361 str r3, [r0, #20] + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_gpio.c **** } + 1079 .loc 1 279 1 view .LVU300 + 1080 0014 7047 bx lr + 1081 .cfi_endproc + 1082 .LFE201: + 1084 .text + 1085 .Letext0: + 1086 .file 5 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 1087 .file 6 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 1088 .file 7 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + ARM GAS /tmp/ccM5oG95.s page 66 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_ll_gpio.c + /tmp/ccM5oG95.s:17 .text.LL_GPIO_DeInit:0000000000000000 $t + /tmp/ccM5oG95.s:25 .text.LL_GPIO_DeInit:0000000000000000 LL_GPIO_DeInit + /tmp/ccM5oG95.s:505 .text.LL_GPIO_DeInit:0000000000000150 $d + /tmp/ccM5oG95.s:522 .text.LL_GPIO_Init:0000000000000000 $t + /tmp/ccM5oG95.s:529 .text.LL_GPIO_Init:0000000000000000 LL_GPIO_Init + /tmp/ccM5oG95.s:1043 .text.LL_GPIO_StructInit:0000000000000000 $t + /tmp/ccM5oG95.s:1050 .text.LL_GPIO_StructInit:0000000000000000 LL_GPIO_StructInit + +NO UNDEFINED SYMBOLS diff --git a/build/stm32f7xx_ll_gpio.o b/build/stm32f7xx_ll_gpio.o new file mode 100644 index 0000000..4737eea Binary files /dev/null and b/build/stm32f7xx_ll_gpio.o differ diff --git a/build/stm32f7xx_ll_rcc.d b/build/stm32f7xx_ll_rcc.d new file mode 100644 index 0000000..d72a6bc --- /dev/null +++ b/build/stm32f7xx_ll_rcc.d @@ -0,0 +1,66 @@ +build/stm32f7xx_ll_rcc.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_ll_rcc.lst b/build/stm32f7xx_ll_rcc.lst new file mode 100644 index 0000000..9ea0494 --- /dev/null +++ b/build/stm32f7xx_ll_rcc.lst @@ -0,0 +1,11380 @@ +ARM GAS /tmp/ccTMI75D.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_ll_rcc.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.LL_RCC_DeInit,"ax",%progbits + 17 .align 1 + 18 .global LL_RCC_DeInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 LL_RCC_DeInit: + 26 .LFB295: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @file stm32f7xx_ll_rcc.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief RCC LL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * This software is licensed under terms that can be found in the LICENSE file in + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** ****************************************************************************** + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(USE_FULL_LL_DRIVER) + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Includes ------------------------------------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #include "stm32f7xx_ll_rcc.h" + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #ifdef USE_FULL_ASSERT + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #include "stm32_assert.h" + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #else + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define assert_param(expr) ((void)0U) + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** @addtogroup STM32F7xx_LL_Driver + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @{ + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(RCC) + ARM GAS /tmp/ccTMI75D.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** @addtogroup RCC_LL + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @{ + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Private types -------------------------------------------------------------*/ + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Private variables ---------------------------------------------------------*/ + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Private constants ---------------------------------------------------------*/ + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Private macros ------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** @addtogroup RCC_LL_Private_Macros + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @{ + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_USART_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_USART1_CLKSOURCE) \ + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_USART2_CLKSOURCE) \ + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_USART3_CLKSOURCE) \ + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_USART6_CLKSOURCE)) + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_UART_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_UART4_CLKSOURCE) \ + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_UART5_CLKSOURCE) \ + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_UART7_CLKSOURCE) \ + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_UART8_CLKSOURCE)) + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(I2C4) + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_I2C_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2C1_CLKSOURCE) \ + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_I2C2_CLKSOURCE) \ + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_I2C3_CLKSOURCE) \ + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_I2C4_CLKSOURCE)) + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #else + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_I2C_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2C1_CLKSOURCE) \ + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_I2C2_CLKSOURCE) \ + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_I2C3_CLKSOURCE)) + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* I2C4 */ + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_LPTIM_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_LPTIM1_CLKSOURCE)) + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_SAI_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SAI1_CLKSOURCE) \ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_SAI2_CLKSOURCE)) + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(SDMMC2) + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_SDMMC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SDMMC1_CLKSOURCE) \ + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** || ((__VALUE__) == LL_RCC_SDMMC2_CLKSOURCE)) + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #else + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_SDMMC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SDMMC1_CLKSOURCE)) + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* SDMMC2 */ + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_RNG_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_RNG_CLKSOURCE)) + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_USB_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_USB_CLKSOURCE)) + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(DFSDM1_Channel0) + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_DFSDM_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DFSDM1_CLKSOURCE)) + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_DFSDM_AUDIO_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DFSDM1_AUDIO_CLKSOURC + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* DFSDM1_Channel0 */ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_I2S_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2S1_CLKSOURCE)) + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + ARM GAS /tmp/ccTMI75D.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(CEC) + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_CEC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_CEC_CLKSOURCE)) + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* CEC */ + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(DSI) + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_DSI_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_DSI_CLKSOURCE)) + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* DSI */ + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(LTDC) + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_LTDC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_LTDC_CLKSOURCE)) + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* LTDC */ + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(SPDIFRX) + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #define IS_LL_RCC_SPDIFRX_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_SPDIFRX1_CLKSOURCE)) + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* SPDIFRX */ + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @} + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Private function prototypes -----------------------------------------------*/ + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** @defgroup RCC_LL_Private_Functions RCC Private functions + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @{ + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_GetSystemClockFreq(void); + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_GetHCLKClockFreq(uint32_t SYSCLK_Frequency); + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_GetPCLK1ClockFreq(uint32_t HCLK_Frequency); + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_GetPCLK2ClockFreq(uint32_t HCLK_Frequency); + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLL_GetFreqDomain_SYS(void); + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLL_GetFreqDomain_SAI(void); + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLL_GetFreqDomain_48M(void); + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(DSI) + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLL_GetFreqDomain_DSI(void); + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* DSI */ + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLSAI_GetFreqDomain_SAI(void); + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLSAI_GetFreqDomain_48M(void); + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(LTDC) + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLSAI_GetFreqDomain_LTDC(void); + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* LTDC */ + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLI2S_GetFreqDomain_I2S(void); + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLI2S_GetFreqDomain_SAI(void); + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(SPDIFRX) + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLI2S_GetFreqDomain_SPDIFRX(void); + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* SPDIFRX */ + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @} + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Exported functions --------------------------------------------------------*/ + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** @addtogroup RCC_LL_Exported_Functions + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @{ + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** @addtogroup RCC_LL_EF_Init + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @{ + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + ARM GAS /tmp/ccTMI75D.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Reset the RCC clock configuration to the default reset state. + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @note The default reset state of the clock configuration is given below: + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - HSI ON and used as system clock source + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - HSE, PLL, PLLI2S, PLLSAI OFF + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - AHB, APB1 and APB2 prescaler set to 1. + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - CSS, MCO OFF + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - All interrupts disabled + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @note This function doesn't modify the configuration of the + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - Peripheral clocks + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - LSI, LSE and RTC clocks + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval An ErrorStatus enumeration value: + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - SUCCESS: RCC registers are de-initialized + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - ERROR: not applicable + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** ErrorStatus LL_RCC_DeInit(void) + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 28 .loc 1 163 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 8 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 33 0000 82B0 sub sp, sp, #8 + 34 .LCFI0: + 35 .cfi_def_cfa_offset 8 + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** __IO uint32_t vl_mask; + 36 .loc 1 164 3 view .LVU1 + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Set HSION bit */ + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_HSI_Enable(); + 37 .loc 1 167 3 view .LVU2 + 38 .LBB234: + 39 .LBI234: + 40 .file 2 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @file stm32f7xx_ll_rcc.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Header file of RCC LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * This software is licensed under terms that can be found in the LICENSE file in + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ****************************************************************************** + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #ifndef __STM32F7xx_LL_RCC_H + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __STM32F7xx_LL_RCC_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #ifdef __cplusplus + ARM GAS /tmp/ccTMI75D.s page 5 + + + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** extern "C" { + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Includes ------------------------------------------------------------------*/ + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #include "stm32f7xx.h" + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @addtogroup STM32F7xx_LL_Driver + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC) + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL RCC + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Private types -------------------------------------------------------------*/ + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Private variables ---------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Private_Variables RCC Private Variables + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_DCKCFGR1_PLLSAIDIVR) + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** static const uint8_t aRCC_PLLSAIDIVRPrescTable[4] = {2, 4, 8, 16}; + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_DCKCFGR1_PLLSAIDIVR */ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Private constants ---------------------------------------------------------*/ + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Private macros ------------------------------------------------------------*/ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(USE_FULL_LL_DRIVER) + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Private_Macros RCC Private Macros + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /*USE_FULL_LL_DRIVER*/ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Exported types ------------------------------------------------------------*/ + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(USE_FULL_LL_DRIVER) + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Exported_Types RCC Exported Types + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup LL_ES_CLOCK_FREQ Clocks Frequency Structure + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief RCC Clocks Frequency Structure + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** typedef struct + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** uint32_t SYSCLK_Frequency; /*!< SYSCLK clock frequency */ + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** uint32_t HCLK_Frequency; /*!< HCLK clock frequency */ + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** uint32_t PCLK1_Frequency; /*!< PCLK1 clock frequency */ + ARM GAS /tmp/ccTMI75D.s page 6 + + + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** uint32_t PCLK2_Frequency; /*!< PCLK2 clock frequency */ + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } LL_RCC_ClocksTypeDef; + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* USE_FULL_LL_DRIVER */ + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Exported constants --------------------------------------------------------*/ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Exported_Constants RCC Exported Constants + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_OSC_VALUES Oscillator Values adaptation + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Defines used to adapt values of different oscillators + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note These values could be modified in the user environment according to + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * HW set-up. + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (HSE_VALUE) + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define HSE_VALUE 25000000U /*!< Value of the HSE oscillator in Hz */ + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* HSE_VALUE */ + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (HSI_VALUE) + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define HSI_VALUE 16000000U /*!< Value of the HSI oscillator in Hz */ + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* HSI_VALUE */ + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (LSE_VALUE) + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LSE_VALUE 32768U /*!< Value of the LSE oscillator in Hz */ + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* LSE_VALUE */ + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (LSI_VALUE) + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LSI_VALUE 32000U /*!< Value of the LSI oscillator in Hz */ + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* LSI_VALUE */ + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (EXTERNAL_CLOCK_VALUE) + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the I2S_CKIN external oscillator in Hz */ + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* EXTERNAL_CLOCK_VALUE */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (EXTERNAL_SAI1_CLOCK_VALUE) + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define EXTERNAL_SAI1_CLOCK_VALUE 48000U /*!< Value of the SAI1_EXTCLK external oscillator in Hz + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* EXTERNAL_SAI1_CLOCK_VALUE */ + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (EXTERNAL_SAI2_CLOCK_VALUE) + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define EXTERNAL_SAI2_CLOCK_VALUE 48000U /*!< Value of the SAI2_EXTCLK external oscillator in Hz + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* EXTERNAL_SAI2_CLOCK_VALUE */ + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_CLEAR_FLAG Clear Flags Defines + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Flags defines which can be used with LL_RCC_WriteReg function + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + ARM GAS /tmp/ccTMI75D.s page 7 + + + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSIRDYC RCC_CIR_LSIRDYC /*!< LSI Ready Interrupt Clear */ + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSERDYC RCC_CIR_LSERDYC /*!< LSE Ready Interrupt Clear */ + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSIRDYC RCC_CIR_HSIRDYC /*!< HSI Ready Interrupt Clear */ + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSERDYC RCC_CIR_HSERDYC /*!< HSE Ready Interrupt Clear */ + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLRDYC RCC_CIR_PLLRDYC /*!< PLL Ready Interrupt Clear */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLI2SRDYC RCC_CIR_PLLI2SRDYC /*!< PLLI2S Ready Interrupt Clear */ + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLSAIRDYC RCC_CIR_PLLSAIRDYC /*!< PLLSAI Ready Interrupt Clear */ + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_CSSC RCC_CIR_CSSC /*!< Clock Security System Interrupt + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_GET_FLAG Get Flags Defines + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Flags defines which can be used with LL_RCC_ReadReg function + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSIRDYF RCC_CIR_LSIRDYF /*!< LSI Ready Interrupt flag */ + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSERDYF RCC_CIR_LSERDYF /*!< LSE Ready Interrupt flag */ + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSIRDYF RCC_CIR_HSIRDYF /*!< HSI Ready Interrupt flag */ + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSERDYF RCC_CIR_HSERDYF /*!< HSE Ready Interrupt flag */ + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLRDYF RCC_CIR_PLLRDYF /*!< PLL Ready Interrupt flag */ + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLI2SRDYF RCC_CIR_PLLI2SRDYF /*!< PLLI2S Ready Interrupt flag */ + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLSAIRDYF RCC_CIR_PLLSAIRDYF /*!< PLLSAI Ready Interrupt flag */ + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_CSSF RCC_CIR_CSSF /*!< Clock Security System Interrupt + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_LPWRRSTF RCC_CSR_LPWRRSTF /*!< Low-Power reset flag */ + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_PINRSTF RCC_CSR_PINRSTF /*!< PIN reset flag */ + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_PORRSTF RCC_CSR_PORRSTF /*!< POR/PDR reset flag */ + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_SFTRSTF RCC_CSR_SFTRSTF /*!< Software Reset flag */ + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_IWDGRSTF RCC_CSR_IWDGRSTF /*!< Independent Watchdog reset flag + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_WWDGRSTF RCC_CSR_WWDGRSTF /*!< Window watchdog reset flag */ + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_BORRSTF RCC_CSR_BORRSTF /*!< BOR reset flag */ + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_IT IT Defines + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief IT defines which can be used with LL_RCC_ReadReg and LL_RCC_WriteReg functions + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSIRDYIE RCC_CIR_LSIRDYIE /*!< LSI Ready Interrupt Enable */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSERDYIE RCC_CIR_LSERDYIE /*!< LSE Ready Interrupt Enable */ + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSIRDYIE RCC_CIR_HSIRDYIE /*!< HSI Ready Interrupt Enable */ + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSERDYIE RCC_CIR_HSERDYIE /*!< HSE Ready Interrupt Enable */ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLRDYIE RCC_CIR_PLLRDYIE /*!< PLL Ready Interrupt Enable */ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLI2SRDYIE RCC_CIR_PLLI2SRDYIE /*!< PLLI2S Ready Interrupt Enable + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLSAIRDYIE RCC_CIR_PLLSAIRDYIE /*!< PLLSAI Ready Interrupt Enable + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_LSEDRIVE LSE oscillator drive capability + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LSEDRIVE_LOW 0x00000000U /*!< Xtal mode lower driving cap + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_0 /*!< Xtal mode medium high drivi + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_1 /*!< Xtal mode medium low drivin + ARM GAS /tmp/ccTMI75D.s page 8 + + + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV /*!< Xtal mode higher driving ca + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SYS_CLKSOURCE System clock switch + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_HSI RCC_CFGR_SW_HSI /*!< HSI selection as system clock */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_HSE RCC_CFGR_SW_HSE /*!< HSE selection as system clock */ + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_PLL RCC_CFGR_SW_PLL /*!< PLL selection as system clock */ + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SYS_CLKSOURCE_STATUS System clock switch status + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */ + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */ + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_STATUS_PLL RCC_CFGR_SWS_PLL /*!< PLL used as system clock */ + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SYSCLK_DIV AHB prescaler + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_1 RCC_CFGR_HPRE_DIV1 /*!< SYSCLK not divided */ + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_2 RCC_CFGR_HPRE_DIV2 /*!< SYSCLK divided by 2 */ + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_4 RCC_CFGR_HPRE_DIV4 /*!< SYSCLK divided by 4 */ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_8 RCC_CFGR_HPRE_DIV8 /*!< SYSCLK divided by 8 */ + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_16 RCC_CFGR_HPRE_DIV16 /*!< SYSCLK divided by 16 */ + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_64 RCC_CFGR_HPRE_DIV64 /*!< SYSCLK divided by 64 */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_128 RCC_CFGR_HPRE_DIV128 /*!< SYSCLK divided by 128 */ + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_256 RCC_CFGR_HPRE_DIV256 /*!< SYSCLK divided by 256 */ + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_512 RCC_CFGR_HPRE_DIV512 /*!< SYSCLK divided by 512 */ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_APB1_DIV APB low-speed prescaler (APB1) + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB1_DIV_1 RCC_CFGR_PPRE1_DIV1 /*!< HCLK not divided */ + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB1_DIV_2 RCC_CFGR_PPRE1_DIV2 /*!< HCLK divided by 2 */ + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB1_DIV_4 RCC_CFGR_PPRE1_DIV4 /*!< HCLK divided by 4 */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB1_DIV_8 RCC_CFGR_PPRE1_DIV8 /*!< HCLK divided by 8 */ + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB1_DIV_16 RCC_CFGR_PPRE1_DIV16 /*!< HCLK divided by 16 */ + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_APB2_DIV APB high-speed prescaler (APB2) + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB2_DIV_1 RCC_CFGR_PPRE2_DIV1 /*!< HCLK not divided */ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB2_DIV_2 RCC_CFGR_PPRE2_DIV2 /*!< HCLK divided by 2 */ + ARM GAS /tmp/ccTMI75D.s page 9 + + + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB2_DIV_4 RCC_CFGR_PPRE2_DIV4 /*!< HCLK divided by 4 */ + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB2_DIV_8 RCC_CFGR_PPRE2_DIV8 /*!< HCLK divided by 8 */ + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB2_DIV_16 RCC_CFGR_PPRE2_DIV16 /*!< HCLK divided by 16 */ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_MCOxSOURCE MCO source selection + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1SOURCE_HSI (uint32_t)(RCC_CFGR_MCO1|0x00000000U) + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1SOURCE_LSE (uint32_t)(RCC_CFGR_MCO1|(RCC_CFGR_MCO1_0 >> 16U)) + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1SOURCE_HSE (uint32_t)(RCC_CFGR_MCO1|(RCC_CFGR_MCO1_1 >> 16U)) + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1SOURCE_PLLCLK (uint32_t)(RCC_CFGR_MCO1|((RCC_CFGR_MCO1_1|RCC_CFGR_MCO1 + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2SOURCE_SYSCLK (uint32_t)(RCC_CFGR_MCO2|0x00000000U) + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2SOURCE_PLLI2S (uint32_t)(RCC_CFGR_MCO2|(RCC_CFGR_MCO2_0 >> 16U)) + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2SOURCE_HSE (uint32_t)(RCC_CFGR_MCO2|(RCC_CFGR_MCO2_1 >> 16U)) + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2SOURCE_PLLCLK (uint32_t)(RCC_CFGR_MCO2|((RCC_CFGR_MCO2_1|RCC_CFGR_MCO2 + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_MCOx_DIV MCO prescaler + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1_DIV_1 (uint32_t)(RCC_CFGR_MCO1PRE|0x00000000U) + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1_DIV_2 (uint32_t)(RCC_CFGR_MCO1PRE|(RCC_CFGR_MCO1PRE_2 >> 16U)) + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1_DIV_3 (uint32_t)(RCC_CFGR_MCO1PRE|((RCC_CFGR_MCO1PRE_2|RCC_CFG + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1_DIV_4 (uint32_t)(RCC_CFGR_MCO1PRE|((RCC_CFGR_MCO1PRE_2|RCC_CFG + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1_DIV_5 (uint32_t)(RCC_CFGR_MCO1PRE|(RCC_CFGR_MCO1PRE >> 16U)) + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2_DIV_1 (uint32_t)(RCC_CFGR_MCO2PRE|0x00000000U) + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2_DIV_2 (uint32_t)(RCC_CFGR_MCO2PRE|(RCC_CFGR_MCO2PRE_2 >> 16U)) + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2_DIV_3 (uint32_t)(RCC_CFGR_MCO2PRE|((RCC_CFGR_MCO2PRE_2|RCC_CFG + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2_DIV_4 (uint32_t)(RCC_CFGR_MCO2PRE|((RCC_CFGR_MCO2PRE_2|RCC_CFG + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2_DIV_5 (uint32_t)(RCC_CFGR_MCO2PRE|(RCC_CFGR_MCO2PRE >> 16U)) + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_RTC_HSEDIV HSE prescaler for RTC clock + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_NOCLOCK 0x00000000U /*!< HSE not divided */ + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_2 RCC_CFGR_RTCPRE_1 /*!< HSE clock divided by 2 */ + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_3 (RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) /*!< HSE cl + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_4 RCC_CFGR_RTCPRE_2 /*!< HSE clock divided by 4 */ + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_5 (RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) /*!< HSE cl + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_6 (RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) /*!< HSE cl + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_7 (RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_8 RCC_CFGR_RTCPRE_3 /*!< HSE clock divided by 8 */ + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_9 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0) /*!< HSE cl + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_10 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1) /*!< HSE cl + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_11 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_12 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2) /*!< HSE cl + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_13 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_14 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_15 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1| + ARM GAS /tmp/ccTMI75D.s page 10 + + + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_16 RCC_CFGR_RTCPRE_4 /*!< HSE clock divided by 16 */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_17 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_0) /*!< HSE cl + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_18 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1) /*!< HSE cl + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_19 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_20 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2) /*!< HSE cl + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_21 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_22 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_23 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1| + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_24 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3) /*!< HSE cl + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_25 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0) + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_26 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1) + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_27 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1| + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_28 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2) + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_29 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2| + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_30 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2| + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_31 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2| + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(USE_FULL_LL_DRIVER) + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PERIPH_FREQUENCY Peripheral clock frequency + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PERIPH_FREQUENCY_NO 0x00000000U /*!< No clock enabled for th + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PERIPH_FREQUENCY_NA 0xFFFFFFFFU /*!< Frequency cannot be pro + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* USE_FULL_LL_DRIVER */ + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_USARTx_CLKSOURCE Peripheral USART clock source selection + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART1_CLKSOURCE_PCLK2 (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | 0x00000000U + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART1_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | RCC_DCKCFGR + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART1_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | RCC_DCKCFGR + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART1_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | RCC_DCKCFGR + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART2_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | 0x00000000U + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART2_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | RCC_DCKCFGR + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART2_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | RCC_DCKCFGR + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART2_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | RCC_DCKCFGR + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART3_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | 0x00000000U + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART3_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | RCC_DCKCFGR + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART3_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | RCC_DCKCFGR + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART3_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | RCC_DCKCFGR + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART6_CLKSOURCE_PCLK2 (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | 0x00000000U + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART6_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | RCC_DCKCFGR + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART6_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | RCC_DCKCFGR + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART6_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | RCC_DCKCFGR + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_UARTx_CLKSOURCE Peripheral UART clock source selection + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + ARM GAS /tmp/ccTMI75D.s page 11 + + + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART4_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | 0x00000000U) + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART4_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | RCC_DCKCFGR2_ + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART4_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | RCC_DCKCFGR2_ + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART4_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | RCC_DCKCFGR2_ + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART5_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | 0x00000000U) + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART5_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | RCC_DCKCFGR2_ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART5_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | RCC_DCKCFGR2_ + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART5_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | RCC_DCKCFGR2_ + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART7_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | 0x00000000U) + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART7_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | RCC_DCKCFGR2_ + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART7_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | RCC_DCKCFGR2_ + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART7_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | RCC_DCKCFGR2_ + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART8_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | 0x00000000U) + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART8_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | RCC_DCKCFGR2_ + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART8_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | RCC_DCKCFGR2_ + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART8_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | RCC_DCKCFGR2_ + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_I2Cx_CLKSOURCE Peripheral I2C clock source selection + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C1_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C1SEL|0x00000000U) /*!< PCLK1 + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C1_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C1SEL|(RCC_DCKCFGR2_I2C1SEL_0 + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C1_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C1SEL|(RCC_DCKCFGR2_I2C1SEL_1 + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C2_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C2SEL|0x00000000U) /*!< PCLK1 + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C2_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C2SEL|(RCC_DCKCFGR2_I2C2SEL_0 + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C2_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C2SEL|(RCC_DCKCFGR2_I2C2SEL_1 + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C3_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C3SEL|0x00000000U) /*!< PCLK1 + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C3_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C3SEL|(RCC_DCKCFGR2_I2C3SEL_0 + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C3_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C3SEL|(RCC_DCKCFGR2_I2C3SEL_1 + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(I2C4) + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C4_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C4SEL|0x00000000U) /*!< PCLK1 + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C4_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C4SEL|(RCC_DCKCFGR2_I2C4SEL_0 + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C4_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C4SEL|(RCC_DCKCFGR2_I2C4SEL_1 + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* I2C4 */ + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_LPTIM1_CLKSOURCE Peripheral LPTIM clock source selection + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LPTIM1_CLKSOURCE_PCLK1 0x00000000U /*!< PCLK1 clock used as LP + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LPTIM1_CLKSOURCE_LSI RCC_DCKCFGR2_LPTIM1SEL_0 /*!< LSI oscillator clock u + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LPTIM1_CLKSOURCE_HSI RCC_DCKCFGR2_LPTIM1SEL_1 /*!< HSI oscillator clock u + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LPTIM1_CLKSOURCE_LSE (uint32_t)(RCC_DCKCFGR2_LPTIM1SEL_1 | RCC_DCKCFGR2_LPTI + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SAIx_CLKSOURCE Peripheral SAI clock source selection + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI1_CLKSOURCE_PLLSAI (uint32_t)(RCC_DCKCFGR1_SAI1SEL | 0x00000000U) + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI1_CLKSOURCE_PLLI2S (uint32_t)(RCC_DCKCFGR1_SAI1SEL | (RCC_DCKCFGR1_SAI1SEL_ + ARM GAS /tmp/ccTMI75D.s page 12 + + + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI1_CLKSOURCE_PIN (uint32_t)(RCC_DCKCFGR1_SAI1SEL | (RCC_DCKCFGR1_SAI1SEL_ + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_SAI1SEL_PLLSRC_SUPPORT) + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI1_CLKSOURCE_PLLSRC (uint32_t)(RCC_DCKCFGR1_SAI1SEL | (RCC_DCKCFGR1_SAI1SEL + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_SAI1SEL_PLLSRC_SUPPORT */ + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI2_CLKSOURCE_PLLSAI (uint32_t)(RCC_DCKCFGR1_SAI2SEL | 0x00000000U) + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI2_CLKSOURCE_PLLI2S (uint32_t)(RCC_DCKCFGR1_SAI2SEL | (RCC_DCKCFGR1_SAI2SEL_ + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI2_CLKSOURCE_PIN (uint32_t)(RCC_DCKCFGR1_SAI2SEL | (RCC_DCKCFGR1_SAI2SEL_ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_SAI2SEL_PLLSRC_SUPPORT) + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI2_CLKSOURCE_PLLSRC (uint32_t)(RCC_DCKCFGR1_SAI2SEL | (RCC_DCKCFGR1_SAI2SEL + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_SAI2SEL_PLLSRC_SUPPORT */ + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SDMMCx_CLKSOURCE Peripheral SDMMC clock source selection + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK (uint32_t)(RCC_DCKCFGR2_SDMMC1SEL | 0x00000000U) + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC1_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_SDMMC1SEL | (RCC_DCKCFGR2_SD + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(SDMMC2) + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK (uint32_t)(RCC_DCKCFGR2_SDMMC2SEL | 0x00000000U) + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC2_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_SDMMC2SEL | (RCC_DCKCFGR2_SD + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* SDMMC2 */ + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_RNG_CLKSOURCE Peripheral RNG clock source selection + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RNG_CLKSOURCE_PLL 0x00000000U /*!< PLL clock used as RNG clock s + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RNG_CLKSOURCE_PLLSAI RCC_DCKCFGR2_CK48MSEL /*!< PLLSAI clock used as RNG cloc + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_USB_CLKSOURCE Peripheral USB clock source selection + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USB_CLKSOURCE_PLL 0x00000000U /*!< PLL clock used as USB clock s + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USB_CLKSOURCE_PLLSAI RCC_DCKCFGR2_CK48MSEL /*!< PLLSAI1 clock used as USB clo + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DSI_CLKSOURCE Peripheral DSI clock source selection + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DSI_CLKSOURCE_PHY 0x00000000U /*!< DSI-PHY clock used as DSI byte + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DSI_CLKSOURCE_PLL RCC_DCKCFGR2_DSISEL /*!< PLL clock used as DSI byte lan + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(CEC) + ARM GAS /tmp/ccTMI75D.s page 13 + + + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_CEC_CLKSOURCE Peripheral CEC clock source selection + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CEC_CLKSOURCE_LSE 0x00000000U /*!< LSE oscillator clock + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CEC_CLKSOURCE_HSI_DIV488 RCC_DCKCFGR2_CECSEL /*!< HSI oscillator clock + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* CEC */ + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_I2S1_CLKSOURCE Peripheral I2S clock source selection + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2S1_CLKSOURCE_PLLI2S 0x00000000U /*!< I2S oscillator clock + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2S1_CLKSOURCE_PIN RCC_CFGR_I2SSRC /*!< External pin clock u + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_CK48M_CLKSOURCE Peripheral 48Mhz domain clock source selection + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CK48M_CLKSOURCE_PLL 0x00000000U /*!< PLL oscillator clock + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CK48M_CLKSOURCE_PLLSAI RCC_DCKCFGR2_CK48MSEL /*!< PLLSAI oscillator cl + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DFSDM1_Channel0) + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DFSDM1_AUDIO_CLKSOURCE Peripheral DFSDM Audio clock source selection + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 0x00000000U /*!< SAI1 clock used as D + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2 RCC_DCKCFGR1_ADFSDM1SEL /*!< SAI2 clock used as D + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DFSDM1_CLKSOURCE Peripheral DFSDM clock source selection + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_CLKSOURCE_PCLK2 0x00000000U /*!< PCLK2 clock used as + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_CLKSOURCE_SYSCLK RCC_DCKCFGR1_DFSDM1SEL /*!< System clock used as + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DFSDM1_Channel0 */ + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_USARTx Peripheral USART get clock source + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART1_CLKSOURCE RCC_DCKCFGR2_USART1SEL /*!< USART1 Clock source selectio + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART2_CLKSOURCE RCC_DCKCFGR2_USART2SEL /*!< USART2 Clock source selectio + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART3_CLKSOURCE RCC_DCKCFGR2_USART3SEL /*!< USART3 Clock source selectio + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART6_CLKSOURCE RCC_DCKCFGR2_USART6SEL /*!< USART6 Clock source selectio + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + ARM GAS /tmp/ccTMI75D.s page 14 + + + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_UARTx Peripheral UART get clock source + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART4_CLKSOURCE RCC_DCKCFGR2_UART4SEL /*!< UART4 Clock source selection + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART5_CLKSOURCE RCC_DCKCFGR2_UART5SEL /*!< UART5 Clock source selection + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART7_CLKSOURCE RCC_DCKCFGR2_UART7SEL /*!< UART7 Clock source selection + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART8_CLKSOURCE RCC_DCKCFGR2_UART8SEL /*!< UART8 Clock source selection + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_I2Cx Peripheral I2C get clock source + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C1_CLKSOURCE RCC_DCKCFGR2_I2C1SEL /*!< I2C1 Clock source selection * + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C2_CLKSOURCE RCC_DCKCFGR2_I2C2SEL /*!< I2C2 Clock source selection * + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C3_CLKSOURCE RCC_DCKCFGR2_I2C3SEL /*!< I2C3 Clock source selection * + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(I2C4) + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C4_CLKSOURCE RCC_DCKCFGR2_I2C4SEL /*!< I2C4 Clock source selection * + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* I2C4 */ + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_LPTIM1 Peripheral LPTIM get clock source + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LPTIM1_CLKSOURCE RCC_DCKCFGR2_LPTIM1SEL /*!< LPTIM1 Clock source selectio + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SAIx Peripheral SAI get clock source + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI1_CLKSOURCE RCC_DCKCFGR1_SAI1SEL /*!< SAI1 Clock source selection */ + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI2_CLKSOURCE RCC_DCKCFGR1_SAI2SEL /*!< SAI2 Clock source selection */ + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SDMMCx Peripheral SDMMC get clock source + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC1_CLKSOURCE RCC_DCKCFGR2_SDMMC1SEL /*!< SDMMC1 Clock source selectio + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(SDMMC2) + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC2_CLKSOURCE RCC_DCKCFGR2_SDMMC2SEL /*!< SDMMC2 Clock source selectio + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* SDMMC2 */ + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_CK48M Peripheral CK48M get clock source + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + ARM GAS /tmp/ccTMI75D.s page 15 + + + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CK48M_CLKSOURCE RCC_DCKCFGR2_CK48MSEL /*!< CK48M Domain clock source sel + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_RNG Peripheral RNG get clock source + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RNG_CLKSOURCE RCC_DCKCFGR2_CK48MSEL /*!< RNG Clock source selection */ + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_USB Peripheral USB get clock source + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USB_CLKSOURCE RCC_DCKCFGR2_CK48MSEL /*!< USB Clock source selection */ + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(CEC) + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_CEC Peripheral CEC get clock source + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CEC_CLKSOURCE RCC_DCKCFGR2_CECSEL /*!< CEC Clock source selection */ + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* CEC */ + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_I2S1 Peripheral I2S get clock source + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2S1_CLKSOURCE RCC_CFGR_I2SSRC /*!< I2S Clock source selection */ + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DFSDM1_Channel0) + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DFSDM_AUDIO Peripheral DFSDM Audio get clock source + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_AUDIO_CLKSOURCE RCC_DCKCFGR1_ADFSDM1SEL /*!< DFSDM Audio Clock source se + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DFSDM Peripheral DFSDM get clock source + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_CLKSOURCE RCC_DCKCFGR1_DFSDM1SEL /*!< DFSDM Clock source selection + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DFSDM1_Channel0 */ + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) + ARM GAS /tmp/ccTMI75D.s page 16 + + + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DSI Peripheral DSI get clock source + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DSI_CLKSOURCE RCC_DCKCFGR2_DSISEL /*!< DSI Clock source selection */ + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(LTDC) + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_LTDC Peripheral LTDC get clock source + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LTDC_CLKSOURCE RCC_DCKCFGR1_PLLSAIDIVR /*!< LTDC Clock source selection + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* LTDC */ + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(SPDIFRX) + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SPDIFRX Peripheral SPDIFRX get clock source + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SPDIFRX1_CLKSOURCE RCC_PLLI2SCFGR_PLLI2SP /*!< SPDIFRX Clock source select + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* SPDIFRX */ + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_RTC_CLKSOURCE RTC clock source selection + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_CLKSOURCE_NONE 0x00000000U /*!< No clock used as RTC clock + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_CLKSOURCE_LSE RCC_BDCR_RTCSEL_0 /*!< LSE oscillator clock used a + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_CLKSOURCE_LSI RCC_BDCR_RTCSEL_1 /*!< LSI oscillator clock used a + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_CLKSOURCE_HSE RCC_BDCR_RTCSEL /*!< HSE oscillator clock divide + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_TIM_CLKPRESCALER Timers clocks prescalers selection + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_TIM_PRESCALER_TWICE 0x00000000U /*!< Timers clock to twice + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_TIM_PRESCALER_FOUR_TIMES RCC_DCKCFGR1_TIMPRE /*!< Timers clock to four + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSOURCE PLL, PLLI2S and PLLSAI entry clock source + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI /*!< HSI16 clock selected as PLL + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE /*!< HSE clock selected as PLL e + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + ARM GAS /tmp/ccTMI75D.s page 17 + + + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLM_DIV PLL, PLLI2S and PLLSAI division factor + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_2 (RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI divisio + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_3 (RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_4 (RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI2S and PLLSAI divisio + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_5 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_6 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_7 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_P + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_8 (RCC_PLLCFGR_PLLM_3) /*!< PLL, PLLI2S and PLLSAI divisio + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_9 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_10 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_11 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_P + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_12 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_13 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_14 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_15 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_16 (RCC_PLLCFGR_PLLM_4) /*!< PLL, PLLI2S and PLLSAI divisio + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_17 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_18 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_19 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_P + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_20 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_21 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_22 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_23 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_24 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3) /*!< PLL, PLLI + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_25 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_26 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_27 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_28 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_29 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_30 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_31 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_32 (RCC_PLLCFGR_PLLM_5) /*!< PLL, PLLI2S and PLLSAI divisio + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_33 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_34 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_35 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_P + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_36 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_37 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_38 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_39 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_40 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3) /*!< PLL, PLLI + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_41 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_42 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_43 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_44 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_45 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_46 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_47 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_48 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4) /*!< PLL, PLLI + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_49 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_50 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_51 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_52 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_53 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_54 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + ARM GAS /tmp/ccTMI75D.s page 18 + + + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_55 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_56 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_57 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_58 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_59 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_60 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_61 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_62 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_63 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLCFGR_PLLR) + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLR_DIV PLL division factor (PLLR) + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_2 (RCC_PLLCFGR_PLLR_1) /*!< Main PLL d + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_3 (RCC_PLLCFGR_PLLR_1|RCC_PLLCFGR_PLLR_0) /*!< Main PLL d + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_4 (RCC_PLLCFGR_PLLR_2) /*!< Main PLL d + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_5 (RCC_PLLCFGR_PLLR_2|RCC_PLLCFGR_PLLR_0) /*!< Main PLL d + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_6 (RCC_PLLCFGR_PLLR_2|RCC_PLLCFGR_PLLR_1) /*!< Main PLL d + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_7 (RCC_PLLCFGR_PLLR) /*!< Main PLL d + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLCFGR_PLLR */ + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLP_DIV PLL division factor (PLLP) + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLP_DIV_2 0x00000000U /*!< Main PLL division factor for + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLP_DIV_4 RCC_PLLCFGR_PLLP_0 /*!< Main PLL division factor for + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLP_DIV_6 RCC_PLLCFGR_PLLP_1 /*!< Main PLL division factor for + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLP_DIV_8 (RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< Main PL + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLQ_DIV PLL division factor (PLLQ) + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_2 RCC_PLLCFGR_PLLQ_1 /*!< Main PLL di + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_3 (RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL di + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_4 RCC_PLLCFGR_PLLQ_2 /*!< Main PLL di + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_5 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL di + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_6 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_1) /*!< Main PLL di + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_7 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_ + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_8 RCC_PLLCFGR_PLLQ_3 /*!< Main PLL di + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_9 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL di + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_10 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_1) /*!< Main PLL di + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_11 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_ + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_12 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2) /*!< Main PLL di + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_13 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_ + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_14 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_ + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_15 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_ + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + ARM GAS /tmp/ccTMI75D.s page 19 + + + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLL_SPRE_SEL PLL Spread Spectrum Selection + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SPREAD_SELECT_CENTER 0x00000000U /*!< PLL center spread spe + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SPREAD_SELECT_DOWN RCC_SSCGR_SPREADSEL /*!< PLL down spread spect + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLI2SQ PLLI2SQ division factor (PLLI2SQ) + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_2 RCC_PLLI2SCFGR_PLLI2SQ_1 /*!< PLLI2S division fact + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_3 (RCC_PLLI2SCFGR_PLLI2SQ_1 | RCC_PLLI2SCFGR_PLLI2SQ_0) + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_4 RCC_PLLI2SCFGR_PLLI2SQ_2 /*!< PLLI2S division fact + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_5 (RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_0) + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_6 (RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_1) + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_7 (RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_1 | RC + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_8 RCC_PLLI2SCFGR_PLLI2SQ_3 /*!< PLLI2S division fact + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_9 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_0) + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_10 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_1) + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_11 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_1 | RC + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_12 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2) + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_13 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RC + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_14 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RC + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_15 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RC + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLI2SDIVQ PLLI2SDIVQ division factor (PLLI2SDIVQ) + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_1 0x00000000U /*!< PLLI2S division f + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_2 RCC_DCKCFGR1_PLLI2SDIVQ_0 /*!< PLLI2S division f + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_3 RCC_DCKCFGR1_PLLI2SDIVQ_1 /*!< PLLI2S division f + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_4 (RCC_DCKCFGR1_PLLI2SDIVQ_1 | RCC_DCKCFGR1_PLLI2SDIVQ_0) + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_5 RCC_DCKCFGR1_PLLI2SDIVQ_2 /*!< PLLI2S division f + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_6 (RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_0) + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_7 (RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1) + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_8 (RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_9 RCC_DCKCFGR1_PLLI2SDIVQ_3 /*!< PLLI2S division f + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_10 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_0) + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_11 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_1) + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_12 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_13 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2) + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_14 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_15 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_16 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_17 RCC_DCKCFGR1_PLLI2SDIVQ_4 /*!< PLLI2S division f + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_18 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_0) + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_19 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_1) + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_20 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_21 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2) + ARM GAS /tmp/ccTMI75D.s page 20 + + + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_22 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_23 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_24 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_25 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3) + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_26 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_27 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_28 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_29 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_30 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_31 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_32 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLI2SR PLLI2SR division factor (PLLI2SR) + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_2 RCC_PLLI2SCFGR_PLLI2SR_1 + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_3 (RCC_PLLI2SCFGR_PLLI2SR_1 | RCC_PLLI2SCFGR_PLLI2SR_0) + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_4 RCC_PLLI2SCFGR_PLLI2SR_2 + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_5 (RCC_PLLI2SCFGR_PLLI2SR_2 | RCC_PLLI2SCFGR_PLLI2SR_0) + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_6 (RCC_PLLI2SCFGR_PLLI2SR_2 | RCC_PLLI2SCFGR_PLLI2SR_1) + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_7 (RCC_PLLI2SCFGR_PLLI2SR_2 | RCC_PLLI2SCFGR_PLLI2SR_1 | RC + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLI2SCFGR_PLLI2SP) + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLI2SP PLLI2SP division factor (PLLI2SP) + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SP_DIV_2 0x00000000U /*!< PLLI2S division factor for PL + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SP_DIV_4 RCC_PLLI2SCFGR_PLLI2SP_0 /*!< PLLI2S division fact + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SP_DIV_6 RCC_PLLI2SCFGR_PLLI2SP_1 /*!< PLLI2S division fact + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SP_DIV_8 (RCC_PLLI2SCFGR_PLLI2SP_1 | RCC_PLLI2SCFGR_PLLI2SP_0) + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLI2SCFGR_PLLI2SP */ + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSAIQ PLLSAIQ division factor (PLLSAIQ) + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_2 RCC_PLLSAICFGR_PLLSAIQ_1 /*!< PLLSAI division fact + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_3 (RCC_PLLSAICFGR_PLLSAIQ_1 | RCC_PLLSAICFGR_PLLSAIQ_0) + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_4 RCC_PLLSAICFGR_PLLSAIQ_2 /*!< PLLSAI division fact + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_5 (RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_0) + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_6 (RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_1) + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_7 (RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_1 | RC + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_8 RCC_PLLSAICFGR_PLLSAIQ_3 /*!< PLLSAI division fact + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_9 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_0) + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_10 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_1) + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_11 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_1 | RC + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_12 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2) + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_13 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2 | RC + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_14 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2 | RC + ARM GAS /tmp/ccTMI75D.s page 21 + + + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_15 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2 | RC + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSAIDIVQ PLLSAIDIVQ division factor (PLLSAIDIVQ) + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_1 0x00000000U /*!< PLLSAI division factor for + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_2 RCC_DCKCFGR1_PLLSAIDIVQ_0 /*!< PLLSAI division f + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_3 RCC_DCKCFGR1_PLLSAIDIVQ_1 /*!< PLLSAI division f + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_4 (RCC_DCKCFGR1_PLLSAIDIVQ_1 | RCC_DCKCFGR1_PLLSAIDIVQ_0) + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_5 RCC_DCKCFGR1_PLLSAIDIVQ_2 /*!< PLLSAI division f + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_6 (RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_0) + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_7 (RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1) + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_8 (RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_9 RCC_DCKCFGR1_PLLSAIDIVQ_3 /*!< PLLSAI division f + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_10 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_0) + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_11 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_1) + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_12 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_13 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2) + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_14 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_15 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_16 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_17 RCC_DCKCFGR1_PLLSAIDIVQ_4 /*!< PLLSAI division fa + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_18 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_0) + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_19 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_1) + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_20 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_21 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2) + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_22 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_23 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_24 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_25 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3) + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_26 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_27 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_28 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_29 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_30 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_31 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_32 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLSAICFGR_PLLSAIR) + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSAIR PLLSAIR division factor (PLLSAIR) + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_2 RCC_PLLSAICFGR_PLLSAIR_1 + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_3 (RCC_PLLSAICFGR_PLLSAIR_1 | RCC_PLLSAICFGR_PLLSAIR_0) + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_4 RCC_PLLSAICFGR_PLLSAIR_2 + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_5 (RCC_PLLSAICFGR_PLLSAIR_2 | RCC_PLLSAICFGR_PLLSAIR_0) + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_6 (RCC_PLLSAICFGR_PLLSAIR_2 | RCC_PLLSAICFGR_PLLSAIR_1) + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_7 (RCC_PLLSAICFGR_PLLSAIR_2 | RCC_PLLSAICFGR_PLLSAIR_1 | RC + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + ARM GAS /tmp/ccTMI75D.s page 22 + + + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLSAICFGR_PLLSAIR */ + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_DCKCFGR1_PLLSAIDIVR) + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSAIDIVR PLLSAIDIVR division factor (PLLSAIDIVR) + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVR_DIV_2 0x00000000U /*!< PLLSAI division factor for P + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVR_DIV_4 RCC_DCKCFGR1_PLLSAIDIVR_0 /*!< PLLSAI division fac +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVR_DIV_8 RCC_DCKCFGR1_PLLSAIDIVR_1 /*!< PLLSAI division fac +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVR_DIV_16 (RCC_DCKCFGR1_PLLSAIDIVR_1 | RCC_DCKCFGR1_PLLSAIDIVR_0) +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_DCKCFGR1_PLLSAIDIVR */ +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSAIP PLLSAIP division factor (PLLSAIP) +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIP_DIV_2 0x00000000U /*!< PLLSAI division factor for +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIP_DIV_4 RCC_PLLSAICFGR_PLLSAIP_0 /*!< PLLSAI division fact +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIP_DIV_6 RCC_PLLSAICFGR_PLLSAIP_1 /*!< PLLSAI division fact +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIP_DIV_8 (RCC_PLLSAICFGR_PLLSAIP_1 | RCC_PLLSAICFGR_PLLSAIP_0) +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Exported macro ------------------------------------------------------------*/ +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Exported_Macros RCC Exported Macros +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EM_WRITE_READ Common Write and read registers Macros +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Write a value in RCC register +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __REG__ Register to be written +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __VALUE__ Value to be written in the register +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_WriteReg(__REG__, __VALUE__) WRITE_REG(RCC->__REG__, (__VALUE__)) +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Read a value in RCC register +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __REG__ Register to be read +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Register value +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_ReadReg(__REG__) READ_REG(RCC->__REG__) +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + ARM GAS /tmp/ccTMI75D.s page 23 + + +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EM_CALC_FREQ Calculate frequencies +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLCLK frequency on system domain +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLCLK_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetP ()); +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 + ARM GAS /tmp/ccTMI75D.s page 24 + + +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLN__ Between 50 and 432 +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLP__ This parameter can be one of the following values: +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_2 +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_4 +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_6 +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_8 +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLL clock frequency (in Hz) +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLCLK_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLP__) ((__INPUTFREQ__) / ( +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((((__PLLP__) >> RCC_PLLCFGR_PLLP_Pos ) + 1U) * 2U)) +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLCLK frequency used on 48M domain +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLCLK_48M_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetQ ()); +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 + ARM GAS /tmp/ccTMI75D.s page 25 + + +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLN__ Between 50 and 432 +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLQ__ This parameter can be one of the following values: +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_2 +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_3 +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_4 +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_5 +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_6 +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_7 +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_8 +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_9 +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_10 +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_11 +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_12 +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_13 +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_14 +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_15 +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLL clock frequency (in Hz) +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLCLK_48M_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLQ__) ((__INPUTFREQ__) +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((__PLLQ__) >> RCC_PLLCFGR_PLLQ_Pos )) + ARM GAS /tmp/ccTMI75D.s page 26 + + +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLCLK frequency used on DSI +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLCLK_DSI_FREQ (HSE_VALUE, @ref LL_RCC_PLL_GetDivider (), +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetR ()); +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 + ARM GAS /tmp/ccTMI75D.s page 27 + + +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLN__ Between 50 and 432 +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLR__ This parameter can be one of the following values: +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_2 +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_3 +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_4 +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_5 +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_6 +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_7 +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLL clock frequency (in Hz) +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLCLK_DSI_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLR__) ((__INPUTFREQ__) +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((__PLLR__) >> RCC_PLLCFGR_PLLR_Pos )) +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLSAI frequency used for SAI1 and SAI2 domains +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLSAI_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLSAI_GetN (), @ref LL_RCC_PLLSAI_GetQ (), @ref LL_RCC_PLLSAI_GetDIVQ +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 + ARM GAS /tmp/ccTMI75D.s page 28 + + +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIN__ Between 50 and 432 +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIQ__ This parameter can be one of the following values: +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_2 +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_3 +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_4 +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_5 +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_6 +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_7 +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_8 +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_9 +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_10 +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_11 +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_12 +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_13 +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_14 +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_15 +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIDIVQ__ This parameter can be one of the following values: +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_1 +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_2 + ARM GAS /tmp/ccTMI75D.s page 29 + + +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_3 +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_4 +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_5 +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_6 +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_7 +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_8 +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_9 +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_10 +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_11 +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_12 +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_13 +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_14 +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_15 +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_16 +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_17 +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_18 +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_19 +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_20 +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_21 +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_22 +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_23 +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_24 +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_25 +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_26 +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_27 +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_28 +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_29 +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_30 +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_31 +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_32 +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLSAI clock frequency (in Hz) +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLSAI_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAIN__, __PLLSAIQ__, __PLLSAIDI +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** (((__PLLSAIQ__) >> RCC_PLLSAICFGR_PLLSAIQ_Pos) * (((__PLLSAIDIVQ__) >> RCC_DCKCF +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLSAI frequency used on 48Mhz domain +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLSAI_48M_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLSAI_GetN (), @ref LL_RCC_PLLSAI_GetP ()); +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 + ARM GAS /tmp/ccTMI75D.s page 30 + + +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIN__ Between 50 and 432 +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIP__ This parameter can be one of the following values: +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_2 +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_4 +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_6 +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_8 +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLSAI clock frequency (in Hz) +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLSAI_48M_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAIN__, __PLLSAIP__) (((__INPUT +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((((__PLLSAIP__) >> RCC_PLLSAICFGR_PLLSAIP_Pos) + 1U ) * 2U)) +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + ARM GAS /tmp/ccTMI75D.s page 31 + + +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(LTDC) +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLSAI frequency used for LTDC domain +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLSAI_LTDC_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLSAI_GetN (), @ref LL_RCC_PLLSAI_GetR (), @ref LL_RCC_PLLSAI_GetDIVR +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 + ARM GAS /tmp/ccTMI75D.s page 32 + + +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIN__ Between 50 and 432 +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIR__ This parameter can be one of the following values: +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_2 +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_3 +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_4 +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_5 +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_6 +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_7 +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIDIVR__ This parameter can be one of the following values: +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_2 +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_4 +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_8 +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_16 +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLSAI clock frequency (in Hz) +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLSAI_LTDC_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAIN__, __PLLSAIR__, __PLLSAID +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** (((__PLLSAIR__) >> RCC_PLLSAICFGR_PLLSAIR_Pos) * (aRCC_PLLSAIDIVRPrescTable[(__P +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* LTDC */ +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLI2S frequency used for SAI1 and SAI2 domains +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLI2S_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLI2S_GetN (), @ref LL_RCC_PLLI2S_GetQ (), @ref LL_RCC_PLLI2S_GetDIVQ +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 + ARM GAS /tmp/ccTMI75D.s page 33 + + +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SN__ Between 50 and 432 +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SQ__ This parameter can be one of the following values: +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_2 +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_3 +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_4 +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_5 +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_6 +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_7 +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_8 +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_9 +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_10 +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_11 +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_12 +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_13 +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_14 + ARM GAS /tmp/ccTMI75D.s page 34 + + +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_15 +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SDIVQ__ This parameter can be one of the following values: +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_1 +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_2 +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_3 +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_4 +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_5 +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_6 +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_7 +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_8 +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_9 +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_10 +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_11 +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_12 +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_13 +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_14 +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_15 +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_16 +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_17 +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_18 +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_19 +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_20 +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_21 +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_22 +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_23 +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_24 +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_25 +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_26 +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_27 +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_28 +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_29 +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_30 +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_31 +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_32 +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLI2S clock frequency (in Hz) +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLI2S_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLI2SN__, __PLLI2SQ__, __PLLI2SDI +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** (((__PLLI2SQ__) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos) * (((__PLLI2SDIVQ__) >> RCC_DCKCF +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(SPDIFRX) +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLI2S frequency used on SPDIFRX domain +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLI2S_SPDIFRX_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLI2S_GetN (), @ref LL_RCC_PLLI2S_GetP ()); +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 + ARM GAS /tmp/ccTMI75D.s page 35 + + +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SN__ Between 50 and 432 +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SP__ This parameter can be one of the following values: +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_2 +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_4 +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_6 +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_8 + ARM GAS /tmp/ccTMI75D.s page 36 + + +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLI2S clock frequency (in Hz) +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLI2S_SPDIFRX_FREQ(__INPUTFREQ__, __PLLM__, __PLLI2SN__, __PLLI2SP__) (((__I +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((((__PLLI2SP__) >> RCC_PLLI2SCFGR_PLLI2SP_Pos) + 1U) * 2U)) +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* SPDIFRX */ +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLI2S frequency used for I2S domain +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLI2S_I2S_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLI2S_GetN (), @ref LL_RCC_PLLI2S_GetR ()); +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 + ARM GAS /tmp/ccTMI75D.s page 37 + + +1847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SN__ Between 50 and 432 +1865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SR__ This parameter can be one of the following values: +1866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_2 +1867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_3 +1868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_4 +1869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_5 +1870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_6 +1871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_7 +1872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLI2S clock frequency (in Hz) +1873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLI2S_I2S_FREQ(__INPUTFREQ__, __PLLM__, __PLLI2SN__, __PLLI2SR__) (((__INPUT +1875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((__PLLI2SR__) >> RCC_PLLI2SCFGR_PLLI2SR_Pos)) +1876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the HCLK frequency +1879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __SYSCLKFREQ__ SYSCLK frequency (based on HSE/HSI/PLLCLK) +1880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __AHBPRESCALER__ This parameter can be one of the following values: +1881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_1 +1882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_2 +1883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_4 +1884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_8 +1885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_16 +1886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_64 +1887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_128 +1888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_256 +1889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_512 +1890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval HCLK clock frequency (in Hz) +1891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_HCLK_FREQ(__SYSCLKFREQ__, __AHBPRESCALER__) ((__SYSCLKFREQ__) >> AHBPrescTabl +1893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PCLK1 frequency (ABP1) +1896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __HCLKFREQ__ HCLK frequency +1897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __APB1PRESCALER__ This parameter can be one of the following values: +1898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_1 +1899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_2 +1900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_4 +1901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_8 +1902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_16 +1903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PCLK1 clock frequency (in Hz) + ARM GAS /tmp/ccTMI75D.s page 38 + + +1904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PCLK1_FREQ(__HCLKFREQ__, __APB1PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[ +1906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PCLK2 frequency (ABP2) +1909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __HCLKFREQ__ HCLK frequency +1910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __APB2PRESCALER__ This parameter can be one of the following values: +1911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_1 +1912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_2 +1913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_4 +1914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_8 +1915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_16 +1916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PCLK2 clock frequency (in Hz) +1917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PCLK2_FREQ(__HCLKFREQ__, __APB2PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[ +1919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Exported functions --------------------------------------------------------*/ +1929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Exported_Functions RCC Exported Functions +1930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_HSE HSE +1934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable the Clock Security System. +1939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR CSSON LL_RCC_HSE_EnableCSS +1940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSE_EnableCSS(void) +1943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_CSSON); +1945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable HSE external oscillator (HSE Bypass) +1949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSEBYP LL_RCC_HSE_EnableBypass +1950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSE_EnableBypass(void) +1953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_HSEBYP); +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable HSE external oscillator (HSE Bypass) +1959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSEBYP LL_RCC_HSE_DisableBypass +1960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None + ARM GAS /tmp/ccTMI75D.s page 39 + + +1961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSE_DisableBypass(void) +1963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); +1965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable HSE crystal oscillator (HSE ON) +1969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSEON LL_RCC_HSE_Enable +1970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSE_Enable(void) +1973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_HSEON); +1975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable HSE crystal oscillator (HSE ON) +1979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSEON LL_RCC_HSE_Disable +1980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSE_Disable(void) +1983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_HSEON); +1985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if HSE oscillator Ready +1989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSERDY LL_RCC_HSE_IsReady +1990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +1991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void) +1993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY)); +1995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_HSI HSI +2002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable HSI oscillator +2007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSION LL_RCC_HSI_Enable +2008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSI_Enable(void) + 41 .loc 2 2010 22 view .LVU3 + 42 .LBB235: +2011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_HSION); + 43 .loc 2 2012 3 view .LVU4 + 44 0002 224A ldr r2, .L7 + 45 0004 1368 ldr r3, [r2] + ARM GAS /tmp/ccTMI75D.s page 40 + + + 46 0006 43F00103 orr r3, r3, #1 + 47 000a 1360 str r3, [r2] + 48 .L2: + 49 .LBE235: + 50 .LBE234: + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Wait for HSI READY bit */ + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** while(LL_RCC_HSI_IsReady() != 1U) + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 51 .loc 1 171 4 discriminator 1 view .LVU5 + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 52 .loc 1 170 8 discriminator 1 view .LVU6 + 53 .LBB236: + 54 .LBI236: +2013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable HSI oscillator +2017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSION LL_RCC_HSI_Disable +2018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSI_Disable(void) +2021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_HSION); +2023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if HSI clock is ready +2027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSIRDY LL_RCC_HSI_IsReady +2028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +2029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void) + 55 .loc 2 2030 26 discriminator 1 view .LVU7 + 56 .LBB237: +2031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY)); + 57 .loc 2 2032 3 discriminator 1 view .LVU8 + 58 .loc 2 2032 11 is_stmt 0 discriminator 1 view .LVU9 + 59 000c 1F4B ldr r3, .L7 + 60 000e 1B68 ldr r3, [r3] + 61 .LBE237: + 62 .LBE236: + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 63 .loc 1 170 8 discriminator 1 view .LVU10 + 64 0010 13F0020F tst r3, #2 + 65 0014 FAD0 beq .L2 + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Reset CFGR register */ + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_WriteReg(CFGR, 0x00000000U); + 66 .loc 1 174 3 is_stmt 1 view .LVU11 + 67 0016 1D4B ldr r3, .L7 + 68 0018 0022 movs r2, #0 + 69 001a 9A60 str r2, [r3, #8] + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Read CR register */ + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** vl_mask = LL_RCC_ReadReg(CR); + 70 .loc 1 177 3 view .LVU12 + ARM GAS /tmp/ccTMI75D.s page 41 + + + 71 .loc 1 177 13 is_stmt 0 view .LVU13 + 72 001c 1A68 ldr r2, [r3] + 73 .loc 1 177 11 view .LVU14 + 74 001e 0192 str r2, [sp, #4] + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Reset HSEON, HSEBYP, PLLON, CSSON, PLLI2SON and PLLSAION bits */ + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** CLEAR_BIT(vl_mask, (RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_PLLON | RCC_CR_CSSON | RCC_CR_PLLSAION + 75 .loc 1 180 3 is_stmt 1 view .LVU15 + 76 0020 0199 ldr r1, [sp, #4] + 77 0022 1B4A ldr r2, .L7+4 + 78 0024 0A40 ands r2, r2, r1 + 79 0026 0192 str r2, [sp, #4] + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Write new value in CR register */ + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_WriteReg(CR, vl_mask); + 80 .loc 1 183 3 view .LVU16 + 81 0028 019A ldr r2, [sp, #4] + 82 002a 1A60 str r2, [r3] + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Set HSITRIM bits to the reset value*/ + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_HSI_SetCalibTrimming(0x10U); + 83 .loc 1 186 3 view .LVU17 + 84 .LVL0: + 85 .LBB238: + 86 .LBI238: +2033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get HSI Calibration value +2037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note When HSITRIM is written, HSICAL is updated with the sum of +2038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * HSITRIM and the factory trim value +2039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSICAL LL_RCC_HSI_GetCalibration +2040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between Min_Data = 0x00 and Max_Data = 0xFF +2041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibration(void) +2043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_HSICAL) >> RCC_CR_HSICAL_Pos); +2045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set HSI Calibration trimming +2049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note user-programmable trimming value that is added to the HSICAL +2050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note Default value is 16, which, when added to the HSICAL value, +2051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * should trim the HSI to 16 MHz +/- 1 % +2052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSITRIM LL_RCC_HSI_SetCalibTrimming +2053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Value Between Min_Data = 0 and Max_Data = 31 +2054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value) + 87 .loc 2 2056 22 view .LVU18 + 88 .LBB239: +2057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CR, RCC_CR_HSITRIM, Value << RCC_CR_HSITRIM_Pos); + 89 .loc 2 2058 3 view .LVU19 + 90 002c 1A68 ldr r2, [r3] + 91 002e 22F0F802 bic r2, r2, #248 + 92 0032 42F08002 orr r2, r2, #128 + ARM GAS /tmp/ccTMI75D.s page 42 + + + 93 0036 1A60 str r2, [r3] + 94 .LVL1: + 95 .L3: + 96 .loc 2 2058 3 is_stmt 0 view .LVU20 + 97 .LBE239: + 98 .LBE238: + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Wait for PLL READY bit to be reset */ + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** while(LL_RCC_PLL_IsReady() != 0U) + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 99 .loc 1 190 4 is_stmt 1 discriminator 1 view .LVU21 + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 100 .loc 1 189 8 discriminator 1 view .LVU22 + 101 .LBB240: + 102 .LBI240: +2059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get HSI Calibration trimming +2063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSITRIM LL_RCC_HSI_GetCalibTrimming +2064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between Min_Data = 0 and Max_Data = 31 +2065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibTrimming(void) +2067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos); +2069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_LSE LSE +2076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable Low Speed External (LSE) crystal. +2081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEON LL_RCC_LSE_Enable +2082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSE_Enable(void) +2085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); +2087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable Low Speed External (LSE) crystal. +2091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEON LL_RCC_LSE_Disable +2092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSE_Disable(void) +2095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); +2097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable external clock source (LSE bypass). + ARM GAS /tmp/ccTMI75D.s page 43 + + +2101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEBYP LL_RCC_LSE_EnableBypass +2102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSE_EnableBypass(void) +2105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +2107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable external clock source (LSE bypass). +2111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEBYP LL_RCC_LSE_DisableBypass +2112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSE_DisableBypass(void) +2115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +2117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set LSE oscillator drive capability +2121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note The oscillator is in Xtal mode when it is not in bypass mode. +2122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEDRV LL_RCC_LSE_SetDriveCapability +2123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param LSEDrive This parameter can be one of the following values: +2124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_LOW +2125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH +2126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW +2127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_HIGH +2128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSE_SetDriveCapability(uint32_t LSEDrive) +2131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, LSEDrive); +2133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get LSE oscillator drive capability +2137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEDRV LL_RCC_LSE_GetDriveCapability +2138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_LOW +2140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH +2141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW +2142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_HIGH +2143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_LSE_GetDriveCapability(void) +2145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_LSEDRV)); +2147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if LSE oscillator Ready +2151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSERDY LL_RCC_LSE_IsReady +2152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +2153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void) +2155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY)); +2157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + ARM GAS /tmp/ccTMI75D.s page 44 + + +2158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_LSI LSI +2164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable LSI Oscillator +2169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CSR LSION LL_RCC_LSI_Enable +2170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSI_Enable(void) +2173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CSR, RCC_CSR_LSION); +2175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable LSI Oscillator +2179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CSR LSION LL_RCC_LSI_Disable +2180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSI_Disable(void) +2183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); +2185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if LSI is Ready +2189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CSR LSIRDY LL_RCC_LSI_IsReady +2190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +2191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void) +2193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY)); +2195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_System System +2202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure the system clock source +2207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR SW LL_RCC_SetSysClkSource +2208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_HSI +2210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE +2211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL +2212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source) + ARM GAS /tmp/ccTMI75D.s page 45 + + +2215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); +2217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get the system clock source +2221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR SWS LL_RCC_GetSysClkSource +2222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI +2224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE +2225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL +2226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void) +2228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); +2230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set AHB prescaler +2234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR HPRE LL_RCC_SetAHBPrescaler +2235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Prescaler This parameter can be one of the following values: +2236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_1 +2237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_2 +2238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_4 +2239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_8 +2240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_16 +2241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_64 +2242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_128 +2243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_256 +2244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_512 +2245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler) +2248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, Prescaler); +2250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set APB1 prescaler +2254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR PPRE1 LL_RCC_SetAPB1Prescaler +2255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Prescaler This parameter can be one of the following values: +2256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_1 +2257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_2 +2258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_4 +2259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_8 +2260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_16 +2261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler) +2264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, Prescaler); +2266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set APB2 prescaler +2270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR PPRE2 LL_RCC_SetAPB2Prescaler +2271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Prescaler This parameter can be one of the following values: + ARM GAS /tmp/ccTMI75D.s page 46 + + +2272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_1 +2273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_2 +2274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_4 +2275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_8 +2276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_16 +2277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler) +2280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, Prescaler); +2282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get AHB prescaler +2286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR HPRE LL_RCC_GetAHBPrescaler +2287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_1 +2289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_2 +2290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_4 +2291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_8 +2292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_16 +2293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_64 +2294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_128 +2295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_256 +2296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_512 +2297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void) +2299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HPRE)); +2301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get APB1 prescaler +2305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR PPRE1 LL_RCC_GetAPB1Prescaler +2306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_1 +2308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_2 +2309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_4 +2310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_8 +2311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_16 +2312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void) +2314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1)); +2316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get APB2 prescaler +2320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR PPRE2 LL_RCC_GetAPB2Prescaler +2321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_1 +2323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_2 +2324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_4 +2325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_8 +2326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_16 +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetAPB2Prescaler(void) + ARM GAS /tmp/ccTMI75D.s page 47 + + +2329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2)); +2331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_MCO MCO +2338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure MCOx +2343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR MCO1 LL_RCC_ConfigMCO\n +2344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * CFGR MCO1PRE LL_RCC_ConfigMCO\n +2345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * CFGR MCO2 LL_RCC_ConfigMCO\n +2346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * CFGR MCO2PRE LL_RCC_ConfigMCO +2347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param MCOxSource This parameter can be one of the following values: +2348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1SOURCE_HSI +2349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1SOURCE_LSE +2350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1SOURCE_HSE +2351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1SOURCE_PLLCLK +2352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2SOURCE_SYSCLK +2353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2SOURCE_PLLI2S +2354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2SOURCE_HSE +2355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2SOURCE_PLLCLK +2356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param MCOxPrescaler This parameter can be one of the following values: +2357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1_DIV_1 +2358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1_DIV_2 +2359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1_DIV_3 +2360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1_DIV_4 +2361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1_DIV_5 +2362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2_DIV_1 +2363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2_DIV_2 +2364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2_DIV_3 +2365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2_DIV_4 +2366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2_DIV_5 +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_ConfigMCO(uint32_t MCOxSource, uint32_t MCOxPrescaler) +2370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, (MCOxSource & 0xFFFF0000U) | (MCOxPrescaler & 0xFFFF0000U), (MCOxSource << +2372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_Peripheral_Clock_Source Peripheral Clock Source +2379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure USARTx clock source +2384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 USART1SEL LL_RCC_SetUSARTClockSource\n +2385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART2SEL LL_RCC_SetUSARTClockSource\n + ARM GAS /tmp/ccTMI75D.s page 48 + + +2386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART3SEL LL_RCC_SetUSARTClockSource\n +2387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART6SEL LL_RCC_SetUSARTClockSource +2388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param USARTxSource This parameter can be one of the following values: +2389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_PCLK2 +2390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_SYSCLK +2391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_HSI +2392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_LSE +2393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_PCLK1 +2394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_SYSCLK +2395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_HSI +2396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_LSE +2397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_PCLK1 +2398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_SYSCLK +2399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_HSI +2400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_LSE +2401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_PCLK2 +2402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_SYSCLK +2403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_HSI +2404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_LSE +2405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetUSARTClockSource(uint32_t USARTxSource) +2408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, (USARTxSource >> 16U), (USARTxSource & 0x0000FFFFU)); +2410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure UARTx clock source +2414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 UART4SEL LL_RCC_SetUARTClockSource\n +2415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART5SEL LL_RCC_SetUARTClockSource\n +2416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART7SEL LL_RCC_SetUARTClockSource\n +2417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART8SEL LL_RCC_SetUARTClockSource +2418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param UARTxSource This parameter can be one of the following values: +2419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_PCLK1 +2420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_SYSCLK +2421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_HSI +2422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_LSE +2423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_PCLK1 +2424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_SYSCLK +2425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_HSI +2426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_LSE +2427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_PCLK1 +2428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_SYSCLK +2429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_HSI +2430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_LSE +2431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_PCLK1 +2432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_SYSCLK +2433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_HSI +2434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_LSE +2435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetUARTClockSource(uint32_t UARTxSource) +2438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, (UARTxSource >> 16U), (UARTxSource & 0x0000FFFFU)); +2440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + ARM GAS /tmp/ccTMI75D.s page 49 + + +2443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure I2Cx clock source +2444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 I2C1SEL LL_RCC_SetI2CClockSource\n +2445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C2SEL LL_RCC_SetI2CClockSource\n +2446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C3SEL LL_RCC_SetI2CClockSource\n +2447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C4SEL LL_RCC_SetI2CClockSource +2448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param I2CxSource This parameter can be one of the following values: +2449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_PCLK1 +2450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_SYSCLK +2451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_HSI +2452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_PCLK1 +2453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_SYSCLK +2454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_HSI +2455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_PCLK1 +2456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_SYSCLK +2457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_HSI +2458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK1 (*) +2459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_SYSCLK (*) +2460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI (*) +2461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetI2CClockSource(uint32_t I2CxSource) +2466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, (I2CxSource & 0xFFFF0000U), (I2CxSource << 16U)); +2468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure LPTIMx clock source +2472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 LPTIM1SEL LL_RCC_SetLPTIMClockSource +2473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param LPTIMxSource This parameter can be one of the following values: +2474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 +2475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI +2476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_HSI +2477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE +2478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetLPTIMClockSource(uint32_t LPTIMxSource) +2481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_LPTIM1SEL, LPTIMxSource); +2483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure SAIx clock source +2487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 SAI1SEL LL_RCC_SetSAIClockSource\n +2488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR1 SAI2SEL LL_RCC_SetSAIClockSource +2489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param SAIxSource This parameter can be one of the following values: +2490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSAI +2491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLI2S +2492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PIN +2493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSRC (*) +2494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSAI +2495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLI2S +2496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PIN +2497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSRC (*) +2498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. + ARM GAS /tmp/ccTMI75D.s page 50 + + +2500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetSAIClockSource(uint32_t SAIxSource) +2503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, (SAIxSource & 0xFFFF0000U), (SAIxSource << 16U)); +2505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure SDMMC clock source +2509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 SDMMC1SEL LL_RCC_SetSDMMCClockSource\n +2510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 SDMMC2SEL LL_RCC_SetSDMMCClockSource +2511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param SDMMCxSource This parameter can be one of the following values: +2512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK +2513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_SYSCLK +2514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK (*) +2515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_SYSCLK (*) +2516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetSDMMCClockSource(uint32_t SDMMCxSource) +2521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, (SDMMCxSource & 0xFFFF0000U), (SDMMCxSource << 16U)); +2523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure 48Mhz domain clock source +2527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_SetCK48MClockSource +2528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param CK48MxSource This parameter can be one of the following values: +2529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLL +2530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLLSAI +2531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetCK48MClockSource(uint32_t CK48MxSource) +2534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, CK48MxSource); +2536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure RNG clock source +2540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_SetRNGClockSource +2541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param RNGxSource This parameter can be one of the following values: +2542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL +2543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RNG_CLKSOURCE_PLLSAI +2544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetRNGClockSource(uint32_t RNGxSource) +2547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, RNGxSource); +2549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure USB clock source +2553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_SetUSBClockSource +2554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param USBxSource This parameter can be one of the following values: +2555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USB_CLKSOURCE_PLL +2556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USB_CLKSOURCE_PLLSAI + ARM GAS /tmp/ccTMI75D.s page 51 + + +2557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetUSBClockSource(uint32_t USBxSource) +2560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, USBxSource); +2562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(CEC) +2565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure CEC clock source +2567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CECSEL LL_RCC_SetCECClockSource +2568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE +2570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CEC_CLKSOURCE_HSI_DIV488 +2571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetCECClockSource(uint32_t Source) +2574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CECSEL, Source); +2576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* CEC */ +2578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure I2S clock source +2581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR I2SSRC LL_RCC_SetI2SClockSource +2582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2S1_CLKSOURCE_PLLI2S +2584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2S1_CLKSOURCE_PIN +2585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetI2SClockSource(uint32_t Source) +2588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_I2SSRC, Source); +2590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) +2593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure DSI clock source +2595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 DSISEL LL_RCC_SetDSIClockSource +2596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL +2599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetDSIClockSource(uint32_t Source) +2602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_DSISEL, Source); +2604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ +2606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DFSDM1_Channel0) +2608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure DFSDM Audio clock source +2610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 ADFSDM1SEL LL_RCC_SetDFSDMAudioClockSource +2611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 +2613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2 + ARM GAS /tmp/ccTMI75D.s page 52 + + +2614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetDFSDMAudioClockSource(uint32_t Source) +2617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_ADFSDM1SEL, Source); +2619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure DFSDM Kernel clock source +2623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 DFSDM1SEL LL_RCC_SetDFSDMClockSource +2624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2 +2626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK +2627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetDFSDMClockSource(uint32_t Source) +2630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_DFSDM1SEL, Source); +2632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DFSDM1_Channel0 */ +2634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get USARTx clock source +2637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 USART1SEL LL_RCC_GetUSARTClockSource\n +2638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART2SEL LL_RCC_GetUSARTClockSource\n +2639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART3SEL LL_RCC_GetUSARTClockSource\n +2640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART6SEL LL_RCC_GetUSARTClockSource +2641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param USARTx This parameter can be one of the following values: +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE +2643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE +2644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE +2645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE +2646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_PCLK2 +2648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_SYSCLK +2649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_HSI +2650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_LSE +2651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_PCLK1 +2652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_SYSCLK +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_HSI +2654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_LSE +2655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_PCLK1 +2656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_SYSCLK +2657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_HSI +2658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_LSE +2659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_PCLK2 +2660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_SYSCLK +2661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_HSI +2662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_LSE +2663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetUSARTClockSource(uint32_t USARTx) +2665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, USARTx) | (USARTx << 16U)); +2667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get UARTx clock source + ARM GAS /tmp/ccTMI75D.s page 53 + + +2671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 UART4SEL LL_RCC_GetUARTClockSource\n +2672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART5SEL LL_RCC_GetUARTClockSource\n +2673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART7SEL LL_RCC_GetUARTClockSource\n +2674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART8SEL LL_RCC_GetUARTClockSource +2675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param UARTx This parameter can be one of the following values: +2676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE +2677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE +2678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE +2679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE +2680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_PCLK1 +2682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_SYSCLK +2683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_HSI +2684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_LSE +2685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_PCLK1 +2686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_SYSCLK +2687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_HSI +2688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_LSE +2689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_PCLK1 +2690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_SYSCLK +2691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_HSI +2692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_LSE +2693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_PCLK1 +2694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_SYSCLK +2695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_HSI +2696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_LSE +2697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetUARTClockSource(uint32_t UARTx) +2699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, UARTx) | (UARTx << 16U)); +2701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2Cx clock source +2705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 I2C1SEL LL_RCC_GetI2CClockSource\n +2706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C2SEL LL_RCC_GetI2CClockSource\n +2707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C3SEL LL_RCC_GetI2CClockSource\n +2708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C4SEL LL_RCC_GetI2CClockSource +2709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param I2Cx This parameter can be one of the following values: +2710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE +2711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE +2712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE +2713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE (*) +2714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_PCLK1 +2716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_SYSCLK +2717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_HSI +2718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_PCLK1 +2719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_SYSCLK +2720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_HSI +2721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_PCLK1 +2722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_SYSCLK +2723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_HSI +2724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK1 (*) +2725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_SYSCLK (*) +2726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI (*) +2727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * + ARM GAS /tmp/ccTMI75D.s page 54 + + +2728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetI2CClockSource(uint32_t I2Cx) +2731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)((READ_BIT(RCC->DCKCFGR2, I2Cx) >> 16U) | I2Cx); +2733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get LPTIMx clock source +2737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 LPTIM1SEL LL_RCC_GetLPTIMClockSource +2738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param LPTIMx This parameter can be one of the following values: +2739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE +2740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 +2742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI +2743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_HSI +2744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE +2745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetLPTIMClockSource(uint32_t LPTIMx) +2747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_LPTIM1SEL)); +2749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get SAIx clock source +2753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 SAI1SEL LL_RCC_GetSAIClockSource\n +2754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR1 SAI2SEL LL_RCC_GetSAIClockSource +2755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param SAIx This parameter can be one of the following values: +2756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE +2757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE +2758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSAI +2760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLI2S +2761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PIN +2762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSRC (*) +2763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSAI +2764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLI2S +2765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PIN +2766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSRC (*) +2767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetSAIClockSource(uint32_t SAIx) +2771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, SAIx) >> 16U | SAIx); +2773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get SDMMCx clock source +2777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 SDMMC1SEL LL_RCC_GetSDMMCClockSource\n +2778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 SDMMC2SEL LL_RCC_GetSDMMCClockSource +2779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param SDMMCx This parameter can be one of the following values: +2780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE +2781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE (*) +2782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK +2784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_SYSCLK + ARM GAS /tmp/ccTMI75D.s page 55 + + +2785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK (*) +2786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_SYSCLK (*) +2787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetSDMMCClockSource(uint32_t SDMMCx) +2791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, SDMMCx) >> 16U | SDMMCx); +2793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get 48Mhz domain clock source +2797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_GetCK48MClockSource +2798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param CK48Mx This parameter can be one of the following values: +2799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CK48M_CLKSOURCE +2800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLL +2802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLLSAI +2803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetCK48MClockSource(uint32_t CK48Mx) +2805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, CK48Mx)); +2807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get RNGx clock source +2811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_GetRNGClockSource +2812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param RNGx This parameter can be one of the following values: +2813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RNG_CLKSOURCE +2814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL +2816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RNG_CLKSOURCE_PLLSAI +2817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetRNGClockSource(uint32_t RNGx) +2819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, RNGx)); +2821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get USBx clock source +2825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_GetUSBClockSource +2826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param USBx This parameter can be one of the following values: +2827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USB_CLKSOURCE +2828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USB_CLKSOURCE_PLL +2830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USB_CLKSOURCE_PLLSAI +2831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetUSBClockSource(uint32_t USBx) +2833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, USBx)); +2835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(CEC) +2838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get CEC Clock Source +2840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CECSEL LL_RCC_GetCECClockSource +2841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param CECx This parameter can be one of the following values: + ARM GAS /tmp/ccTMI75D.s page 56 + + +2842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CEC_CLKSOURCE +2843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE +2845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CEC_CLKSOURCE_HSI_DIV488 +2846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetCECClockSource(uint32_t CECx) +2848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, CECx)); +2850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* CEC */ +2852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2S Clock Source +2855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR I2SSRC LL_RCC_GetI2SClockSource +2856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param I2Sx This parameter can be one of the following values: +2857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2S1_CLKSOURCE +2858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2S1_CLKSOURCE_PLLI2S +2860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2S1_CLKSOURCE_PIN +2861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetI2SClockSource(uint32_t I2Sx) +2863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, I2Sx)); +2865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DFSDM1_Channel0) +2868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get DFSDM Audio Clock Source +2870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 ADFSDM1SEL LL_RCC_GetDFSDMAudioClockSource +2871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param DFSDMx This parameter can be one of the following values: +2872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE +2873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 +2875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2 +2876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetDFSDMAudioClockSource(uint32_t DFSDMx) +2878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, DFSDMx)); +2880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get DFSDM Audio Clock Source +2884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 DFSDM1SEL LL_RCC_GetDFSDMClockSource +2885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param DFSDMx This parameter can be one of the following values: +2886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE +2887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2 +2889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK +2890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetDFSDMClockSource(uint32_t DFSDMx) +2892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, DFSDMx)); +2894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DFSDM1_Channel0 */ +2896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) +2898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + ARM GAS /tmp/ccTMI75D.s page 57 + + +2899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get DSI Clock Source +2900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 DSISEL LL_RCC_GetDSIClockSource +2901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param DSIx This parameter can be one of the following values: +2902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DSI_CLKSOURCE +2903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY +2905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL +2906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetDSIClockSource(uint32_t DSIx) +2908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, DSIx)); +2910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ +2912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_RTC RTC +2918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set RTC Clock Source +2923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note Once the RTC clock source has been selected, it cannot be changed anymore unless +2924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * the Backup domain is reset, or unless a failure is detected on LSE (LSECSSD is +2925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * set). The BDRST bit can be used to reset them. +2926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR RTCSEL LL_RCC_SetRTCClockSource +2927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE +2929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE +2930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI +2931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE +2932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetRTCClockSource(uint32_t Source) +2935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, Source); +2937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get RTC Clock Source +2941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR RTCSEL LL_RCC_GetRTCClockSource +2942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE +2944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE +2945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI +2946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE +2947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetRTCClockSource(void) +2949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)); +2951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable RTC +2955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR RTCEN LL_RCC_EnableRTC + ARM GAS /tmp/ccTMI75D.s page 58 + + +2956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_EnableRTC(void) +2959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +2961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable RTC +2965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR RTCEN LL_RCC_DisableRTC +2966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_DisableRTC(void) +2969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +2971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if RTC has been enabled or not +2975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR RTCEN LL_RCC_IsEnabledRTC +2976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +2977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_IsEnabledRTC(void) +2979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->BDCR, RCC_BDCR_RTCEN) == (RCC_BDCR_RTCEN)); +2981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Force the Backup domain reset +2985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR BDRST LL_RCC_ForceBackupDomainReset +2986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_ForceBackupDomainReset(void) +2989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->BDCR, RCC_BDCR_BDRST); +2991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Release the Backup domain reset +2995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR BDRST LL_RCC_ReleaseBackupDomainReset +2996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_ReleaseBackupDomainReset(void) +2999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST); +3001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set HSE Prescalers for RTC Clock +3005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR RTCPRE LL_RCC_SetRTC_HSEPrescaler +3006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Prescaler This parameter can be one of the following values: +3007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_NOCLOCK +3008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_2 +3009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_3 +3010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_4 +3011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_5 +3012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_6 + ARM GAS /tmp/ccTMI75D.s page 59 + + +3013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_7 +3014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_8 +3015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_9 +3016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_10 +3017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_11 +3018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_12 +3019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_13 +3020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_14 +3021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_15 +3022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_16 +3023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_17 +3024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_18 +3025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_19 +3026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_20 +3027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_21 +3028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_22 +3029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_23 +3030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_24 +3031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_25 +3032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_26 +3033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_27 +3034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_28 +3035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_29 +3036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_30 +3037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_31 +3038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetRTC_HSEPrescaler(uint32_t Prescaler) +3041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_RTCPRE, Prescaler); +3043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get HSE Prescalers for RTC Clock +3047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR RTCPRE LL_RCC_GetRTC_HSEPrescaler +3048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_NOCLOCK +3050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_2 +3051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_3 +3052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_4 +3053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_5 +3054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_6 +3055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_7 +3056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_8 +3057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_9 +3058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_10 +3059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_11 +3060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_12 +3061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_13 +3062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_14 +3063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_15 +3064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_16 +3065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_17 +3066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_18 +3067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_19 +3068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_20 +3069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_21 + ARM GAS /tmp/ccTMI75D.s page 60 + + +3070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_22 +3071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_23 +3072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_24 +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_25 +3074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_26 +3075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_27 +3076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_28 +3077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_29 +3078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_30 +3079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_31 +3080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetRTC_HSEPrescaler(void) +3082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_RTCPRE)); +3084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +3088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_TIM_CLOCK_PRESCALER TIM +3091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +3092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set Timers Clock Prescalers +3096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 TIMPRE LL_RCC_SetTIMPrescaler +3097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Prescaler This parameter can be one of the following values: +3098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_TIM_PRESCALER_TWICE +3099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_TIM_PRESCALER_FOUR_TIMES +3100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetTIMPrescaler(uint32_t Prescaler) +3103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_TIMPRE, Prescaler); +3105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Timers Clock Prescalers +3109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 TIMPRE LL_RCC_GetTIMPrescaler +3110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_TIM_PRESCALER_TWICE +3112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_TIM_PRESCALER_FOUR_TIMES +3113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetTIMPrescaler(void) +3115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_TIMPRE)); +3117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +3121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_PLL PLL +3124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +3125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + ARM GAS /tmp/ccTMI75D.s page 61 + + +3127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable PLL +3129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLON LL_RCC_PLL_Enable +3130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_Enable(void) +3133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_PLLON); +3135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable PLL +3139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note Cannot be disabled if the PLL clock is used as the system clock +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLON LL_RCC_PLL_Disable +3141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_Disable(void) +3144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_PLLON); +3146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if PLL Ready +3150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLRDY LL_RCC_PLL_IsReady +3151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +3152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void) + 103 .loc 2 3153 26 discriminator 1 view .LVU23 + 104 .LBB241: +3154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == (RCC_CR_PLLRDY)); + 105 .loc 2 3155 3 discriminator 1 view .LVU24 + 106 .loc 2 3155 11 is_stmt 0 discriminator 1 view .LVU25 + 107 0038 144B ldr r3, .L7 + 108 003a 1B68 ldr r3, [r3] + 109 .LBE241: + 110 .LBE240: + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 111 .loc 1 189 8 discriminator 1 view .LVU26 + 112 003c 13F0007F tst r3, #33554432 + 113 0040 FAD1 bne .L3 + 114 .L4: + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Wait for PLLI2S READY bit to be reset */ + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** while(LL_RCC_PLLI2S_IsReady() != 0U) + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 115 .loc 1 194 4 is_stmt 1 discriminator 1 view .LVU27 + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 116 .loc 1 193 8 discriminator 1 view .LVU28 + 117 .LBB242: + 118 .LBI242: +3156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLL used for SYSCLK Domain +3160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled + ARM GAS /tmp/ccTMI75D.s page 62 + + +3162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLP can be written only when PLL is disabled +3163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_SYS\n +3164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_SYS\n +3165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_SYS\n +3166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLP LL_RCC_PLL_ConfigDomain_SYS +3167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 + ARM GAS /tmp/ccTMI75D.s page 63 + + +3219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +3234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLP This parameter can be one of the following values: +3235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_2 +3236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_4 +3237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_6 +3238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_8 +3239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SYS(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uin +3242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_P +3244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); +3245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLL used for 48Mhz domain clock +3249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLQ can be written only when PLL is disabled +3252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for USB, RNG, SDMMC1 +3253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_48M\n +3254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_48M\n +3255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_48M\n +3256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLQ LL_RCC_PLL_ConfigDomain_48M +3257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 + ARM GAS /tmp/ccTMI75D.s page 64 + + +3276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +3324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLQ This parameter can be one of the following values: +3325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_2 +3326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_3 +3327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_4 +3328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_5 +3329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_6 +3330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_7 +3331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_8 +3332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_9 + ARM GAS /tmp/ccTMI75D.s page 65 + + +3333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_10 +3334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_11 +3335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_12 +3336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_13 +3337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_14 +3338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_15 +3339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_ConfigDomain_48M(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uin +3342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_P +3344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLQ); +3345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) +3348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLL used for DSI clock +3350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLR can be written only when PLL is disabled +3353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for DSI +3354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_DSI\n +3355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_DSI\n +3356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_DSI\n +3357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLR LL_RCC_PLL_ConfigDomain_DSI +3358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 + ARM GAS /tmp/ccTMI75D.s page 66 + + +3390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +3425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLR This parameter can be one of the following values: +3426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_2 +3427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_3 +3428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_4 +3429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_5 +3430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_6 +3431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_7 +3432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_ConfigDomain_DSI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uin +3435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_P +3437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLR); +3438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ +3440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLL clock source +3443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_SetMainSource +3444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLSource This parameter can be one of the following values: +3445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE + ARM GAS /tmp/ccTMI75D.s page 67 + + +3447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_SetMainSource(uint32_t PLLSource) +3450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, PLLSource); +3452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get the oscillator used as PLL clock source. +3456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_GetMainSource +3457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetMainSource(void) +3462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC)); +3464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Main PLL multiplication factor for VCO +3468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLN LL_RCC_PLL_GetN +3469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between 50 and 432 +3470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetN(void) +3472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); +3474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Main PLL division factor for PLLP +3478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLP LL_RCC_PLL_GetP +3479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_2 +3481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_4 +3482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_6 +3483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_8 +3484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetP(void) +3486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP)); +3488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Main PLL division factor for PLLQ +3492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for PLL48MCLK selected for USB, RNG, SDMMC (48 MHz clock) +3493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLQ LL_RCC_PLL_GetQ +3494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_2 +3496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_3 +3497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_4 +3498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_5 +3499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_6 +3500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_7 +3501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_8 +3502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_9 +3503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_10 + ARM GAS /tmp/ccTMI75D.s page 68 + + +3504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_11 +3505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_12 +3506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_13 +3507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_14 +3508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_15 +3509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetQ(void) +3511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ)); +3513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLCFGR_PLLR) +3516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Main PLL division factor for PLLR +3518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for PLLCLK (system clock) +3519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLR LL_RCC_PLL_GetR +3520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_2 +3522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_3 +3523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_4 +3524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_5 +3525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_6 +3526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_7 +3527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetR(void) +3529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR)); +3531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLCFGR_PLLR */ +3533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Division factor for the main PLL and other PLL +3536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLM LL_RCC_PLL_GetDivider +3537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 + ARM GAS /tmp/ccTMI75D.s page 69 + + +3561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetDivider(void) +3602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM)); +3604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure Spread Spectrum used for PLL +3608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note These bits must be written before enabling PLL +3609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR MODPER LL_RCC_PLL_ConfigSpreadSpectrum\n +3610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * SSCGR INCSTEP LL_RCC_PLL_ConfigSpreadSpectrum\n +3611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * SSCGR SPREADSEL LL_RCC_PLL_ConfigSpreadSpectrum +3612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Mod Between Min_Data=0 and Max_Data=8191 +3613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Inc Between Min_Data=0 and Max_Data=32767 +3614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Sel This parameter can be one of the following values: +3615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SPREAD_SELECT_CENTER +3616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SPREAD_SELECT_DOWN +3617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None + ARM GAS /tmp/ccTMI75D.s page 70 + + +3618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_ConfigSpreadSpectrum(uint32_t Mod, uint32_t Inc, uint32_t Sel) +3620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->SSCGR, RCC_SSCGR_MODPER | RCC_SSCGR_INCSTEP | RCC_SSCGR_SPREADSEL, Mod | (Inc << +3622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Spread Spectrum Modulation Period for PLL +3626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR MODPER LL_RCC_PLL_GetPeriodModulation +3627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between Min_Data=0 and Max_Data=8191 +3628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetPeriodModulation(void) +3630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->SSCGR, RCC_SSCGR_MODPER)); +3632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Spread Spectrum Incrementation Step for PLL +3636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note Must be written before enabling PLL +3637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR INCSTEP LL_RCC_PLL_GetStepIncrementation +3638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between Min_Data=0 and Max_Data=32767 +3639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetStepIncrementation(void) +3641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->SSCGR, RCC_SSCGR_INCSTEP) >> RCC_SSCGR_INCSTEP_Pos); +3643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Spread Spectrum Selection for PLL +3647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note Must be written before enabling PLL +3648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR SPREADSEL LL_RCC_PLL_GetSpreadSelection +3649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SPREAD_SELECT_CENTER +3651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SPREAD_SELECT_DOWN +3652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetSpreadSelection(void) +3654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->SSCGR, RCC_SSCGR_SPREADSEL)); +3656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable Spread Spectrum for PLL. +3660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR SSCGEN LL_RCC_PLL_SpreadSpectrum_Enable +3661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_SpreadSpectrum_Enable(void) +3664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->SSCGR, RCC_SSCGR_SSCGEN); +3666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable Spread Spectrum for PLL. +3670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR SSCGEN LL_RCC_PLL_SpreadSpectrum_Disable +3671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_SpreadSpectrum_Disable(void) +3674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + ARM GAS /tmp/ccTMI75D.s page 71 + + +3675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->SSCGR, RCC_SSCGR_SSCGEN); +3676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +3680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_PLLI2S PLLI2S +3683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +3684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable PLLI2S +3688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLI2SON LL_RCC_PLLI2S_Enable +3689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLI2S_Enable(void) +3692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_PLLI2SON); +3694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable PLLI2S +3698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLI2SON LL_RCC_PLLI2S_Disable +3699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLI2S_Disable(void) +3702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_PLLI2SON); +3704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if PLLI2S Ready +3708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLI2SRDY LL_RCC_PLLI2S_IsReady +3709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +3710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_IsReady(void) + 119 .loc 2 3711 26 discriminator 1 view .LVU29 + 120 .LBB243: +3712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) == (RCC_CR_PLLI2SRDY)); + 121 .loc 2 3713 3 discriminator 1 view .LVU30 + 122 .loc 2 3713 11 is_stmt 0 discriminator 1 view .LVU31 + 123 0042 124B ldr r3, .L7 + 124 0044 1B68 ldr r3, [r3] + 125 .LBE243: + 126 .LBE242: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 127 .loc 1 193 8 discriminator 1 view .LVU32 + 128 0046 13F0006F tst r3, #134217728 + 129 004a FAD1 bne .L4 + 130 .L5: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Wait for PLLSAI READY bit to be reset */ + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** while(LL_RCC_PLLSAI_IsReady() != 0U) + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 131 .loc 1 198 4 is_stmt 1 discriminator 1 view .LVU33 + ARM GAS /tmp/ccTMI75D.s page 72 + + + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 132 .loc 1 197 8 discriminator 1 view .LVU34 + 133 .LBB244: + 134 .LBI244: +3714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLLI2S used for SAI1 and SAI2 domain clock +3718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLQ can be written only when PLLI2S is disabled +3721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for SAI1 and SAI2 +3722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLI2S_ConfigDomain_SAI\n +3723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLLI2S_ConfigDomain_SAI\n +3724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_ConfigDomain_SAI\n +3725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SQ LL_RCC_PLLI2S_ConfigDomain_SAI\n +3726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR1 PLLI2SDIVQ LL_RCC_PLLI2S_ConfigDomain_SAI +3727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 + ARM GAS /tmp/ccTMI75D.s page 73 + + +3767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +3794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLQ This parameter can be one of the following values: +3795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_2 +3796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_3 +3797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_4 +3798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_5 +3799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_6 +3800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_7 +3801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_8 +3802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_9 +3803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_10 +3804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_11 +3805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_12 +3806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_13 +3807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_14 +3808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_15 +3809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLDIVQ This parameter can be one of the following values: +3810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_1 +3811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_2 +3812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_3 +3813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_4 +3814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_5 +3815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_6 +3816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_7 +3817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_8 +3818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_9 +3819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_10 +3820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_11 +3821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_12 +3822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_13 +3823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_14 + ARM GAS /tmp/ccTMI75D.s page 74 + + +3824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_15 +3825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_16 +3826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_17 +3827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_18 +3828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_19 +3829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_20 +3830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_21 +3831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_22 +3832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_23 +3833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_24 +3834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_25 +3835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_26 +3836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_27 +3837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_28 +3838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_29 +3839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_30 +3840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_31 +3841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_32 +3842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLI2S_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, +3845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); +3847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN | RCC_PLLI2SCFGR_PLLI2SQ, PLLN << RCC_PLLI2SCF +3848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLI2SDIVQ, PLLDIVQ); +3849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(SPDIFRX) +3852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLLI2S used for SPDIFRX domain clock +3854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLP can be written only when PLLI2S is disabled +3857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for SPDIFRX +3858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLI2S_ConfigDomain_SPDIFRX\n +3859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLLI2S_ConfigDomain_SPDIFRX\n +3860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_ConfigDomain_SPDIFRX\n +3861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SP LL_RCC_PLLI2S_ConfigDomain_SPDIFRX +3862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 + ARM GAS /tmp/ccTMI75D.s page 75 + + +3881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +3929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLP This parameter can be one of the following values: +3930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_2 +3931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_4 +3932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_6 +3933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_8 +3934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLI2S_ConfigDomain_SPDIFRX(uint32_t Source, uint32_t PLLM, uint32_t PL +3937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + ARM GAS /tmp/ccTMI75D.s page 76 + + +3938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); +3939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN | RCC_PLLI2SCFGR_PLLI2SP, PLLN << RCC_PLLI2SCF +3940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* SPDIFRX */ +3942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLLI2S used for I2S1 domain clock +3945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLR can be written only when PLLI2S is disabled +3948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for I2S +3949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLI2S_ConfigDomain_I2S\n +3950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLLI2S_ConfigDomain_I2S\n +3951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_ConfigDomain_I2S\n +3952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SR LL_RCC_PLLI2S_ConfigDomain_I2S +3953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 + ARM GAS /tmp/ccTMI75D.s page 77 + + +3995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +4000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +4001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +4002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +4003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +4004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +4005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +4006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +4007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +4008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +4009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +4010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +4011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +4012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +4013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +4014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +4015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +4016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +4017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +4018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +4019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +4020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLR This parameter can be one of the following values: +4021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_2 +4022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_3 +4023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_4 +4024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_5 +4025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_6 +4026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_7 +4027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +4028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLI2S_ConfigDomain_I2S(uint32_t Source, uint32_t PLLM, uint32_t PLLN, +4030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); +4032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN | RCC_PLLI2SCFGR_PLLI2SR, PLLN << RCC_PLLI2SCF +4033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2SPLL multiplication factor for VCO +4037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_GetN +4038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between 50 and 432 +4039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetN(void) +4041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos +4043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2SPLL division factor for PLLI2SQ +4047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLI2SCFGR PLLI2SQ LL_RCC_PLLI2S_GetQ +4048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_2 +4050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_3 +4051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_4 + ARM GAS /tmp/ccTMI75D.s page 78 + + +4052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_5 +4053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_6 +4054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_7 +4055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_8 +4056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_9 +4057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_10 +4058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_11 +4059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_12 +4060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_13 +4061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_14 +4062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_15 +4063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetQ(void) +4065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SQ)); +4067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2SPLL division factor for PLLI2SR +4071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for PLLI2SCLK (I2S clock) +4072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLI2SCFGR PLLI2SR LL_RCC_PLLI2S_GetR +4073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_2 +4075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_3 +4076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_4 +4077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_5 +4078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_6 +4079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_7 +4080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetR(void) +4082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SR)); +4084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLI2SCFGR_PLLI2SP) +4087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2SPLL division factor for PLLI2SP +4089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for PLLSPDIFRXCLK (SPDIFRX clock) +4090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLI2SCFGR PLLI2SP LL_RCC_PLLI2S_GetP +4091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_2 +4093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_4 +4094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_6 +4095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_8 +4096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetP(void) +4098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SP)); +4100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLI2SCFGR_PLLI2SP */ +4102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2SPLL division factor for PLLI2SDIVQ +4105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used PLLSAI1CLK, PLLSAI2CLK selected (SAI1 and SAI2 clock) +4106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 PLLI2SDIVQ LL_RCC_PLLI2S_GetDIVQ +4107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_1 + ARM GAS /tmp/ccTMI75D.s page 79 + + +4109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_2 +4110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_3 +4111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_4 +4112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_5 +4113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_6 +4114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_7 +4115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_8 +4116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_9 +4117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_10 +4118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_11 +4119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_12 +4120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_13 +4121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_14 +4122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_15 +4123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_16 +4124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_17 +4125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_18 +4126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_19 +4127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_20 +4128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_21 +4129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_22 +4130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_23 +4131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_24 +4132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_25 +4133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_26 +4134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_27 +4135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_28 +4136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_29 +4137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_30 +4138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_31 +4139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_32 +4140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetDIVQ(void) +4142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLI2SDIVQ)); +4144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +4148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_PLLSAI PLLSAI +4151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +4152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable PLLSAI +4156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLSAION LL_RCC_PLLSAI_Enable +4157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +4158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLSAI_Enable(void) +4160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_PLLSAION); +4162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable PLLSAI + ARM GAS /tmp/ccTMI75D.s page 80 + + +4166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLSAION LL_RCC_PLLSAI_Disable +4167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +4168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLSAI_Disable(void) +4170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_PLLSAION); +4172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if PLLSAI Ready +4176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLSAIRDY LL_RCC_PLLSAI_IsReady +4177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +4178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLSAI_IsReady(void) + 135 .loc 2 4179 26 discriminator 1 view .LVU35 + 136 .LBB245: +4180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CR, RCC_CR_PLLSAIRDY) == (RCC_CR_PLLSAIRDY)); + 137 .loc 2 4181 3 discriminator 1 view .LVU36 + 138 .loc 2 4181 11 is_stmt 0 discriminator 1 view .LVU37 + 139 004c 0F4B ldr r3, .L7 + 140 004e 1B68 ldr r3, [r3] + 141 .LBE245: + 142 .LBE244: + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** {} + 143 .loc 1 197 8 discriminator 1 view .LVU38 + 144 0050 13F0005F tst r3, #536870912 + 145 0054 FAD1 bne .L5 + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Reset PLLCFGR register */ + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_WriteReg(PLLCFGR, 0x24003010U); + 146 .loc 1 201 3 is_stmt 1 view .LVU39 + 147 0056 0D4B ldr r3, .L7 + 148 0058 0E4A ldr r2, .L7+8 + 149 005a 5A60 str r2, [r3, #4] + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Reset PLLI2SCFGR register */ + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_WriteReg(PLLI2SCFGR, 0x24003000U); + 150 .loc 1 204 3 view .LVU40 + 151 005c 103A subs r2, r2, #16 + 152 005e C3F88420 str r2, [r3, #132] + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Reset PLLSAICFGR register */ + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_WriteReg(PLLSAICFGR, 0x24003000U); + 153 .loc 1 207 3 view .LVU41 + 154 0062 C3F88820 str r2, [r3, #136] + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Disable all interrupts */ + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** CLEAR_BIT(RCC->CIR, RCC_CIR_LSIRDYIE | RCC_CIR_LSERDYIE | RCC_CIR_HSIRDYIE | RCC_CIR_HSERDYIE | R + 155 .loc 1 210 3 view .LVU42 + 156 0066 DA68 ldr r2, [r3, #12] + 157 0068 22F4FE42 bic r2, r2, #32512 + 158 006c DA60 str r2, [r3, #12] + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Clear all interrupt flags */ + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** SET_BIT(RCC->CIR, RCC_CIR_LSIRDYC | RCC_CIR_LSERDYC | RCC_CIR_HSIRDYC | RCC_CIR_HSERDYC | RCC_CIR + 159 .loc 1 213 3 view .LVU43 + ARM GAS /tmp/ccTMI75D.s page 81 + + + 160 006e DA68 ldr r2, [r3, #12] + 161 0070 42F47F02 orr r2, r2, #16711680 + 162 0074 DA60 str r2, [r3, #12] + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Clear LSION bit */ + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); + 163 .loc 1 216 3 view .LVU44 + 164 0076 5A6F ldr r2, [r3, #116] + 165 0078 22F00102 bic r2, r2, #1 + 166 007c 5A67 str r2, [r3, #116] + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Reset all CSR flags */ + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** SET_BIT(RCC->CSR, RCC_CSR_RMVF); + 167 .loc 1 219 3 view .LVU45 + 168 007e 5A6F ldr r2, [r3, #116] + 169 0080 42F08072 orr r2, r2, #16777216 + 170 0084 5A67 str r2, [r3, #116] + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return SUCCESS; + 171 .loc 1 221 3 view .LVU46 + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 172 .loc 1 222 1 is_stmt 0 view .LVU47 + 173 0086 0020 movs r0, #0 + 174 0088 02B0 add sp, sp, #8 + 175 .LCFI1: + 176 .cfi_def_cfa_offset 0 + 177 @ sp needed + 178 008a 7047 bx lr + 179 .L8: + 180 .align 2 + 181 .L7: + 182 008c 00380240 .word 1073887232 + 183 0090 FFFFF2EA .word -353173505 + 184 0094 10300024 .word 603992080 + 185 .cfi_endproc + 186 .LFE295: + 188 .section .text.LL_RCC_GetCECClockFreq,"ax",%progbits + 189 .align 1 + 190 .global LL_RCC_GetCECClockFreq + 191 .syntax unified + 192 .thumb + 193 .thumb_func + 194 .fpu fpv5-d16 + 196 LL_RCC_GetCECClockFreq: + 197 .LVL2: + 198 .LFB305: + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @} + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** @addtogroup RCC_LL_EF_Get_Freq + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return the frequencies of different on chip clocks; System, AHB, APB1 and APB2 buses c + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * and different peripheral clocks available on the device. + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @note If SYSCLK source is HSI, function returns values based on HSI_VALUE(**) + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @note If SYSCLK source is HSE, function returns values based on HSE_VALUE(***) + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @note If SYSCLK source is PLL, function returns values based on HSE_VALUE(***) + ARM GAS /tmp/ccTMI75D.s page 82 + + + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * or HSI_VALUE(**) multiplied/divided by the PLL factors. + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @note (**) HSI_VALUE is a constant defined in this file (default value + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * 16 MHz) but the real value may vary depending on the variations + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * in voltage and temperature. + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @note (***) HSE_VALUE is a constant defined in this file (default value + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * 25 MHz), user has to ensure that HSE_VALUE is same as the real + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * frequency of the crystal used. Otherwise, this function may + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * have wrong result. + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @note The result of this function could be incorrect when using fractional + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * value for HSE crystal. + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @note This function can be used by the user application to compute the + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * baud-rate for the communication peripherals or configure other parameters. + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @{ + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return the frequencies of different on chip clocks; System, AHB, APB1 and APB2 buses c + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @note Each time SYSCLK, HCLK, PCLK1 and/or PCLK2 clock changes, this function + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * must be called to update structure fields. Otherwise, any + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * configuration based on this function will be incorrect. + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param RCC_Clocks pointer to a @ref LL_RCC_ClocksTypeDef structure which will hold the clocks + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval None + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks) + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Get SYSCLK frequency */ + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** RCC_Clocks->SYSCLK_Frequency = RCC_GetSystemClockFreq(); + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* HCLK clock frequency */ + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** RCC_Clocks->HCLK_Frequency = RCC_GetHCLKClockFreq(RCC_Clocks->SYSCLK_Frequency); + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PCLK1 clock frequency */ + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** RCC_Clocks->PCLK1_Frequency = RCC_GetPCLK1ClockFreq(RCC_Clocks->HCLK_Frequency); + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PCLK2 clock frequency */ + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** RCC_Clocks->PCLK2_Frequency = RCC_GetPCLK2ClockFreq(RCC_Clocks->HCLK_Frequency); + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return USARTx clock frequency + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param USARTxSource This parameter can be one of the following values: + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_USART1_CLKSOURCE + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_USART2_CLKSOURCE + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_USART3_CLKSOURCE + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_USART6_CLKSOURCE + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval USART clock frequency (in Hz) + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI or LSE) is not ready + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetUSARTClockFreq(uint32_t USARTxSource) + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t usart_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_USART_CLKSOURCE(USARTxSource)); + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (USARTxSource == LL_RCC_USART1_CLKSOURCE) + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + ARM GAS /tmp/ccTMI75D.s page 83 + + + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* USART1CLK clock frequency */ + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART1_CLKSOURCE_SYSCLK: /* USART1 Clock is System Clock */ + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = RCC_GetSystemClockFreq(); + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART1_CLKSOURCE_HSI: /* USART1 Clock is HSI Osc. */ + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = HSI_VALUE; + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART1_CLKSOURCE_LSE: /* USART1 Clock is LSE Osc. */ + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSE_IsReady()) + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = LSE_VALUE; + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART1_CLKSOURCE_PCLK2: /* USART1 Clock is PCLK2 */ + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = RCC_GetPCLK2ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else if (USARTxSource == LL_RCC_USART2_CLKSOURCE) + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* USART2CLK clock frequency */ + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART2_CLKSOURCE_SYSCLK: /* USART2 Clock is System Clock */ + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = RCC_GetSystemClockFreq(); + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART2_CLKSOURCE_HSI: /* USART2 Clock is HSI Osc. */ + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = HSI_VALUE; + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART2_CLKSOURCE_LSE: /* USART2 Clock is LSE Osc. */ + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSE_IsReady()) + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = LSE_VALUE; + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART2_CLKSOURCE_PCLK1: /* USART2 Clock is PCLK1 */ + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else if (USARTxSource == LL_RCC_USART6_CLKSOURCE) + ARM GAS /tmp/ccTMI75D.s page 84 + + + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* USART6CLK clock frequency */ + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART6_CLKSOURCE_SYSCLK: /* USART6 Clock is System Clock */ + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = RCC_GetSystemClockFreq(); + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART6_CLKSOURCE_HSI: /* USART6 Clock is HSI Osc. */ + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = HSI_VALUE; + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART6_CLKSOURCE_LSE: /* USART6 Clock is LSE Osc. */ + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSE_IsReady()) + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = LSE_VALUE; + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART6_CLKSOURCE_PCLK2: /* USART6 Clock is PCLK2 */ + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = RCC_GetPCLK2ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (USARTxSource == LL_RCC_USART3_CLKSOURCE) + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* USART3CLK clock frequency */ + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetUSARTClockSource(USARTxSource)) + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART3_CLKSOURCE_SYSCLK: /* USART3 Clock is System Clock */ + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = RCC_GetSystemClockFreq(); + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART3_CLKSOURCE_HSI: /* USART3 Clock is HSI Osc. */ + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = HSI_VALUE; + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART3_CLKSOURCE_LSE: /* USART3 Clock is LSE Osc. */ + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSE_IsReady()) + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = LSE_VALUE; + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USART3_CLKSOURCE_PCLK1: /* USART3 Clock is PCLK1 */ + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + ARM GAS /tmp/ccTMI75D.s page 85 + + + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return usart_frequency; + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return UARTx clock frequency + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param UARTxSource This parameter can be one of the following values: + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_UART4_CLKSOURCE + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_UART5_CLKSOURCE + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_UART7_CLKSOURCE + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_UART8_CLKSOURCE + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval UART clock frequency (in Hz) + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI or LSE) is not ready + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetUARTClockFreq(uint32_t UARTxSource) + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t uart_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_UART_CLKSOURCE(UARTxSource)); + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (UARTxSource == LL_RCC_UART4_CLKSOURCE) + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* UART4CLK clock frequency */ + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetUARTClockSource(UARTxSource)) + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART4_CLKSOURCE_SYSCLK: /* UART4 Clock is System Clock */ + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = RCC_GetSystemClockFreq(); + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART4_CLKSOURCE_HSI: /* UART4 Clock is HSI Osc. */ + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = HSI_VALUE; + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART4_CLKSOURCE_LSE: /* UART4 Clock is LSE Osc. */ + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSE_IsReady()) + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = LSE_VALUE; + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART4_CLKSOURCE_PCLK1: /* UART4 Clock is PCLK1 */ + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else if (UARTxSource == LL_RCC_UART5_CLKSOURCE) + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* UART5CLK clock frequency */ + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetUARTClockSource(UARTxSource)) + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + ARM GAS /tmp/ccTMI75D.s page 86 + + + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART5_CLKSOURCE_SYSCLK: /* UART5 Clock is System Clock */ + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = RCC_GetSystemClockFreq(); + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART5_CLKSOURCE_HSI: /* UART5 Clock is HSI Osc. */ + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = HSI_VALUE; + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART5_CLKSOURCE_LSE: /* UART5 Clock is LSE Osc. */ + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSE_IsReady()) + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = LSE_VALUE; + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART5_CLKSOURCE_PCLK1: /* UART5 Clock is PCLK1 */ + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else if (UARTxSource == LL_RCC_UART7_CLKSOURCE) + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* UART7CLK clock frequency */ + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetUARTClockSource(UARTxSource)) + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART7_CLKSOURCE_SYSCLK: /* UART7 Clock is System Clock */ + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = RCC_GetSystemClockFreq(); + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART7_CLKSOURCE_HSI: /* UART7 Clock is HSI Osc. */ + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = HSI_VALUE; + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART7_CLKSOURCE_LSE: /* UART7 Clock is LSE Osc. */ + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSE_IsReady()) + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = LSE_VALUE; + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART7_CLKSOURCE_PCLK1: /* UART7 Clock is PCLK1 */ + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (UARTxSource == LL_RCC_UART8_CLKSOURCE) + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + ARM GAS /tmp/ccTMI75D.s page 87 + + + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* UART8CLK clock frequency */ + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetUARTClockSource(UARTxSource)) + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART8_CLKSOURCE_SYSCLK: /* UART8 Clock is System Clock */ + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = RCC_GetSystemClockFreq(); + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART8_CLKSOURCE_HSI: /* UART8 Clock is HSI Osc. */ + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = HSI_VALUE; + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART8_CLKSOURCE_LSE: /* UART8 Clock is LSE Osc. */ + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSE_IsReady()) + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = LSE_VALUE; + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_UART8_CLKSOURCE_PCLK1: /* UART8 Clock is PCLK1 */ + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uart_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return uart_frequency; + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return I2Cx clock frequency + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param I2CxSource This parameter can be one of the following values: + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_I2C1_CLKSOURCE + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_I2C2_CLKSOURCE + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_I2C3_CLKSOURCE + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_I2C4_CLKSOURCE (*) + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * (*) value not defined in all devices. + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval I2C clock frequency (in Hz) + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that HSI oscillator is not ready + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetI2CClockFreq(uint32_t I2CxSource) + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t i2c_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_I2C_CLKSOURCE(I2CxSource)); + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (I2CxSource == LL_RCC_I2C1_CLKSOURCE) + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* I2C1 CLK clock frequency */ + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetI2CClockSource(I2CxSource)) + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C1_CLKSOURCE_SYSCLK: /* I2C1 Clock is System Clock */ + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = RCC_GetSystemClockFreq(); + ARM GAS /tmp/ccTMI75D.s page 88 + + + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C1_CLKSOURCE_HSI: /* I2C1 Clock is HSI Osc. */ + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = HSI_VALUE; + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C1_CLKSOURCE_PCLK1: /* I2C1 Clock is PCLK1 */ + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else if (I2CxSource == LL_RCC_I2C2_CLKSOURCE) + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* I2C2 CLK clock frequency */ + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetI2CClockSource(I2CxSource)) + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C2_CLKSOURCE_SYSCLK: /* I2C2 Clock is System Clock */ + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = RCC_GetSystemClockFreq(); + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C2_CLKSOURCE_HSI: /* I2C2 Clock is HSI Osc. */ + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = HSI_VALUE; + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C2_CLKSOURCE_PCLK1: /* I2C2 Clock is PCLK1 */ + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else if (I2CxSource == LL_RCC_I2C3_CLKSOURCE) + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* I2C3 CLK clock frequency */ + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetI2CClockSource(I2CxSource)) + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C3_CLKSOURCE_SYSCLK: /* I2C3 Clock is System Clock */ + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = RCC_GetSystemClockFreq(); + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C3_CLKSOURCE_HSI: /* I2C3 Clock is HSI Osc. */ + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = HSI_VALUE; + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C3_CLKSOURCE_PCLK1: /* I2C3 Clock is PCLK1 */ + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + ARM GAS /tmp/ccTMI75D.s page 89 + + + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(I2C4) + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (I2CxSource == LL_RCC_I2C4_CLKSOURCE) + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* I2C4 CLK clock frequency */ + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetI2CClockSource(I2CxSource)) + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C4_CLKSOURCE_SYSCLK: /* I2C4 Clock is System Clock */ + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = RCC_GetSystemClockFreq(); + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C4_CLKSOURCE_HSI: /* I2C4 Clock is HSI Osc. */ + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = HSI_VALUE; + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2C4_CLKSOURCE_PCLK1: /* I2C4 Clock is PCLK1 */ + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2c_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #else + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Nothing to do */ + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* I2C4 */ + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return i2c_frequency; + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return I2Sx clock frequency + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param I2SxSource This parameter can be one of the following values: + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_I2S1_CLKSOURCE + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval I2S clock frequency (in Hz) + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that PLLI2S oscillator is not ready + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetI2SClockFreq(uint32_t I2SxSource) + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t i2s_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_I2S_CLKSOURCE(I2SxSource)); + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (I2SxSource == LL_RCC_I2S1_CLKSOURCE) + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* I2S1 CLK clock frequency */ + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetI2SClockSource(I2SxSource)) + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + ARM GAS /tmp/ccTMI75D.s page 90 + + + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2S1_CLKSOURCE_PLLI2S: /* I2S1 Clock is PLLI2S */ + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLI2S_IsReady()) + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2s_frequency = RCC_PLLI2S_GetFreqDomain_I2S(); + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_I2S1_CLKSOURCE_PIN: /* I2S1 Clock is External clock */ + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** i2s_frequency = EXTERNAL_CLOCK_VALUE; + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return i2s_frequency; + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return LPTIMx clock frequency + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param LPTIMxSource This parameter can be one of the following values: + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval LPTIM clock frequency (in Hz) + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI, LSI or LSE) is not r + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetLPTIMClockFreq(uint32_t LPTIMxSource) + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t lptim_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_LPTIM_CLKSOURCE(LPTIMxSource)); + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LPTIMxSource == LL_RCC_LPTIM1_CLKSOURCE) + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* LPTIM1CLK clock frequency */ + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetLPTIMClockSource(LPTIMxSource)) + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_LPTIM1_CLKSOURCE_LSI: /* LPTIM1 Clock is LSI Osc. */ + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSI_IsReady()) + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** lptim_frequency = LSI_VALUE; + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_LPTIM1_CLKSOURCE_HSI: /* LPTIM1 Clock is HSI Osc. */ + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** lptim_frequency = HSI_VALUE; + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_LPTIM1_CLKSOURCE_LSE: /* LPTIM1 Clock is LSE Osc. */ + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSE_IsReady()) + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** lptim_frequency = LSE_VALUE; + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + ARM GAS /tmp/ccTMI75D.s page 91 + + + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_LPTIM1_CLKSOURCE_PCLK1: /* LPTIM1 Clock is PCLK1 */ + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** lptim_frequency = RCC_GetPCLK1ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return lptim_frequency; + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return SAIx clock frequency + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param SAIxSource This parameter can be one of the following values: + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_SAI1_CLKSOURCE + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_SAI2_CLKSOURCE + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval SAI clock frequency (in Hz) + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that PLL is not ready + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetSAIClockFreq(uint32_t SAIxSource) + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t sai_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_SAI_CLKSOURCE(SAIxSource)); + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (SAIxSource == LL_RCC_SAI1_CLKSOURCE) + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* SAI1CLK clock frequency */ + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetSAIClockSource(SAIxSource)) + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SAI1_CLKSOURCE_PLLSAI: /* PLLSAI clock used as SAI1 clock source */ + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLSAI_IsReady()) + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sai_frequency = RCC_PLLSAI_GetFreqDomain_SAI(); + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SAI1_CLKSOURCE_PLLI2S: /* PLLI2S clock used as SAI1 clock source */ + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLI2S_IsReady()) + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sai_frequency = RCC_PLLI2S_GetFreqDomain_SAI(); + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(RCC_SAI1SEL_PLLSRC_SUPPORT) + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SAI1_CLKSOURCE_PLLSRC: + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_PLL_GetMainSource()) + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE clock used as SAI1 clock source */ + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSE_IsReady()) + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sai_frequency = HSE_VALUE; + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI clock used as SAI1 clock source */ + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + ARM GAS /tmp/ccTMI75D.s page 92 + + + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sai_frequency = HSI_VALUE; + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* RCC_SAI1SEL_PLLSRC_SUPPORT */ + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SAI1_CLKSOURCE_PIN: /* External input clock used as SAI1 clock source */ + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sai_frequency = EXTERNAL_SAI1_CLOCK_VALUE; + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (SAIxSource == LL_RCC_SAI2_CLKSOURCE) + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* SAI2CLK clock frequency */ + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetSAIClockSource(SAIxSource)) + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SAI2_CLKSOURCE_PLLSAI: /* PLLSAI clock used as SAI2 clock source */ + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLSAI_IsReady()) + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sai_frequency = RCC_PLLSAI_GetFreqDomain_SAI(); + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SAI2_CLKSOURCE_PLLI2S: /* PLLI2S clock used as SAI2 clock source */ + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLI2S_IsReady()) + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sai_frequency = RCC_PLLI2S_GetFreqDomain_SAI(); + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(RCC_SAI2SEL_PLLSRC_SUPPORT) + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SAI2_CLKSOURCE_PLLSRC: + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_PLL_GetMainSource()) + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE clock used as SAI2 clock source */ + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSE_IsReady()) + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sai_frequency = HSE_VALUE; + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI clock used as SAI2 clock source */ + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sai_frequency = HSI_VALUE; + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + ARM GAS /tmp/ccTMI75D.s page 93 + + + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* RCC_SAI2SEL_PLLSRC_SUPPORT */ + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SAI2_CLKSOURCE_PIN: /* External input clock used as SAI2 clock source */ + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sai_frequency = EXTERNAL_SAI2_CLOCK_VALUE; + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return sai_frequency; + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return SDMMCx clock frequency + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param SDMMCxSource This parameter can be one of the following values: + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_SDMMC2_CLKSOURCE (*) + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * (*) value not defined in all devices. + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval SDMMC clock frequency (in Hz) + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator PLL is not ready + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetSDMMCClockFreq(uint32_t SDMMCxSource) + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t sdmmc_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_SDMMC_CLKSOURCE(SDMMCxSource)); + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (SDMMCxSource == LL_RCC_SDMMC1_CLKSOURCE) + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* SDMMC1CLK clock frequency */ + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetSDMMCClockSource(SDMMCxSource)) + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK: /* PLL48 clock used as SDMMC1 clock source */ + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetCK48MClockSource(LL_RCC_CK48M_CLKSOURCE)) + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_CK48M_CLKSOURCE_PLL: /* PLL clock used as 48Mhz domain clock */ + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLL_IsReady()) + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sdmmc_frequency = RCC_PLL_GetFreqDomain_48M(); + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_CK48M_CLKSOURCE_PLLSAI: /* PLLSAI clock used as 48Mhz domain clock */ + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLSAI_IsReady()) + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sdmmc_frequency = RCC_PLLSAI_GetFreqDomain_48M(); + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SDMMC1_CLKSOURCE_SYSCLK: /* PLL clock used as SDMMC1 clock source */ + ARM GAS /tmp/ccTMI75D.s page 94 + + + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sdmmc_frequency = RCC_GetSystemClockFreq(); + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(SDMMC2) + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** else + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* SDMMC2CLK clock frequency */ + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetSDMMCClockSource(SDMMCxSource)) + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK: /* PLL48 clock used as SDMMC2 clock source */ + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetCK48MClockSource(LL_RCC_CK48M_CLKSOURCE)) + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_CK48M_CLKSOURCE_PLL: /* PLL clock used as 48Mhz domain clock */ + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLL_IsReady()) + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sdmmc_frequency = RCC_PLL_GetFreqDomain_48M(); + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_CK48M_CLKSOURCE_PLLSAI: /* PLLSAI clock used as 48Mhz domain clock */ + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLSAI_IsReady()) + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sdmmc_frequency = RCC_PLLSAI_GetFreqDomain_48M(); + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SDMMC2_CLKSOURCE_SYSCLK: /* PLL clock used as SDMMC2 clock source */ + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** sdmmc_frequency = RCC_GetSystemClockFreq(); + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* SDMMC2 */ + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return sdmmc_frequency; + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return RNGx clock frequency + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param RNGxSource This parameter can be one of the following values: + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_RNG_CLKSOURCE + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval RNG clock frequency (in Hz) + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator is not ready + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetRNGClockFreq(uint32_t RNGxSource) + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t rng_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_RNG_CLKSOURCE(RNGxSource)); + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* RNGCLK clock frequency */ + ARM GAS /tmp/ccTMI75D.s page 95 + + + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetRNGClockSource(RNGxSource)) + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_RNG_CLKSOURCE_PLL: /* PLL clock used as RNG clock source */ + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLL_IsReady()) + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** rng_frequency = RCC_PLL_GetFreqDomain_48M(); + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_RNG_CLKSOURCE_PLLSAI: /* PLLSAI clock used as RNG clock source */ + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLSAI_IsReady()) + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** rng_frequency = RCC_PLLSAI_GetFreqDomain_48M(); + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return rng_frequency; + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(CEC) + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return CEC clock frequency + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param CECxSource This parameter can be one of the following values: +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_CEC_CLKSOURCE +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval CEC clock frequency (in Hz) +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI or LSE) is not ready +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetCECClockFreq(uint32_t CECxSource) +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 199 .loc 1 1005 1 is_stmt 1 view -0 + 200 .cfi_startproc + 201 @ args = 0, pretend = 0, frame = 0 + 202 @ frame_needed = 0, uses_anonymous_args = 0 + 203 @ link register save eliminated. +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t cec_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 204 .loc 1 1006 3 view .LVU49 +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_CEC_CLKSOURCE(CECxSource)); + 205 .loc 1 1009 3 view .LVU50 +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* CECCLK clock frequency */ +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetCECClockSource(CECxSource)) + 206 .loc 1 1012 3 view .LVU51 + 207 .LBB246: + 208 .LBI246: +2847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 209 .loc 2 2847 26 view .LVU52 + 210 .LBB247: +2849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 211 .loc 2 2849 3 view .LVU53 +2849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 212 .loc 2 2849 21 is_stmt 0 view .LVU54 + 213 0000 0A4B ldr r3, .L15 + 214 0002 D3F89030 ldr r3, [r3, #144] + ARM GAS /tmp/ccTMI75D.s page 96 + + + 215 .LVL3: +2849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 216 .loc 2 2849 21 view .LVU55 + 217 .LBE247: + 218 .LBE246: + 219 .loc 1 1012 3 view .LVU56 + 220 0006 1842 tst r0, r3 + 221 0008 05D1 bne .L10 +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_CEC_CLKSOURCE_LSE: /* CEC Clock is LSE Osc. */ +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_LSE_IsReady()) + 222 .loc 1 1015 7 is_stmt 1 view .LVU57 + 223 .LBB248: + 224 .LBI248: +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 225 .loc 2 2154 26 view .LVU58 + 226 .LBB249: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 227 .loc 2 2156 3 view .LVU59 +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 228 .loc 2 2156 11 is_stmt 0 view .LVU60 + 229 000a 084B ldr r3, .L15 + 230 000c 186F ldr r0, [r3, #112] + 231 .LVL4: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 232 .loc 2 2156 11 view .LVU61 + 233 .LBE249: + 234 .LBE248: + 235 .loc 1 1015 10 view .LVU62 + 236 000e 10F00200 ands r0, r0, #2 + 237 0012 08D1 bne .L14 + 238 .LVL5: + 239 .L9: +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** cec_frequency = LSE_VALUE; +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_CEC_CLKSOURCE_HSI_DIV488: /* CEC Clock is HSI Osc. */ +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_HSI_IsReady()) +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** cec_frequency = HSI_VALUE/488U; +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return cec_frequency; +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 240 .loc 1 1031 1 view .LVU63 + 241 0014 7047 bx lr + 242 .LVL6: + 243 .L10: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 244 .loc 1 1023 7 is_stmt 1 view .LVU64 + 245 .LBB250: + 246 .LBI250: + ARM GAS /tmp/ccTMI75D.s page 97 + + +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 247 .loc 2 2030 26 view .LVU65 + 248 .LBB251: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 249 .loc 2 2032 3 view .LVU66 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 250 .loc 2 2032 11 is_stmt 0 view .LVU67 + 251 0016 054B ldr r3, .L15 + 252 0018 1868 ldr r0, [r3] + 253 .LVL7: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 254 .loc 2 2032 11 view .LVU68 + 255 .LBE251: + 256 .LBE250: +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 257 .loc 1 1023 10 view .LVU69 + 258 001a 10F00200 ands r0, r0, #2 + 259 001e F9D0 beq .L9 +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 260 .loc 1 1025 23 view .LVU70 + 261 0020 48F21200 movw r0, #32786 + 262 .LVL8: +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 263 .loc 1 1030 3 is_stmt 1 view .LVU71 +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 264 .loc 1 1030 10 is_stmt 0 view .LVU72 + 265 0024 F6E7 b .L9 + 266 .LVL9: + 267 .L14: +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 268 .loc 1 1017 23 view .LVU73 + 269 0026 4FF40040 mov r0, #32768 + 270 002a 7047 bx lr + 271 .L16: + 272 .align 2 + 273 .L15: + 274 002c 00380240 .word 1073887232 + 275 .cfi_endproc + 276 .LFE305: + 278 .section .text.RCC_GetHCLKClockFreq,"ax",%progbits + 279 .align 1 + 280 .global RCC_GetHCLKClockFreq + 281 .syntax unified + 282 .thumb + 283 .thumb_func + 284 .fpu fpv5-d16 + 286 RCC_GetHCLKClockFreq: + 287 .LVL10: + 288 .LFB312: +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* CEC */ +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return USBx clock frequency +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param USBxSource This parameter can be one of the following values: +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_USB_CLKSOURCE +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval USB clock frequency (in Hz) +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ + ARM GAS /tmp/ccTMI75D.s page 98 + + +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource) +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t usb_frequency = LL_RCC_PERIPH_FREQUENCY_NO; +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_USB_CLKSOURCE(USBxSource)); +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* USBCLK clock frequency */ +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetUSBClockSource(USBxSource)) +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USB_CLKSOURCE_PLL: /* PLL clock used as USB clock source */ +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLL_IsReady()) +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usb_frequency = RCC_PLL_GetFreqDomain_48M(); +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_USB_CLKSOURCE_PLLSAI: /* PLLSAI clock used as USB clock source */ +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLSAI_IsReady()) +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** usb_frequency = RCC_PLLSAI_GetFreqDomain_48M(); +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return usb_frequency; +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(DFSDM1_Channel0) +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return DFSDMx clock frequency +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param DFSDMxSource This parameter can be one of the following values: +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval DFSDM clock frequency (in Hz) +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetDFSDMClockFreq(uint32_t DFSDMxSource) +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t dfsdm_frequency = LL_RCC_PERIPH_FREQUENCY_NO; +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_DFSDM_CLKSOURCE(DFSDMxSource)); +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* DFSDM1CLK clock frequency */ +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetDFSDMClockSource(DFSDMxSource)) +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_DFSDM1_CLKSOURCE_SYSCLK: /* DFSDM1 Clock is SYSCLK */ +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** dfsdm_frequency = RCC_GetSystemClockFreq(); +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_DFSDM1_CLKSOURCE_PCLK2: /* DFSDM1 Clock is PCLK2 */ +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** dfsdm_frequency = RCC_GetPCLK2ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())); +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return dfsdm_frequency; + ARM GAS /tmp/ccTMI75D.s page 99 + + +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return DFSDMx Audio clock frequency +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param DFSDMxSource This parameter can be one of the following values: +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval DFSDM clock frequency (in Hz) +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator is not ready +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetDFSDMAudioClockFreq(uint32_t DFSDMxSource) +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t dfsdm_frequency = LL_RCC_PERIPH_FREQUENCY_NO; +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_DFSDM_AUDIO_CLKSOURCE(DFSDMxSource)); +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* DFSDM1CLK clock frequency */ +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetDFSDMAudioClockSource(DFSDMxSource)) +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1: /* SAI1 clock used as DFSDM1 audio clock */ +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** dfsdm_frequency = LL_RCC_GetSAIClockFreq(LL_RCC_SAI1_CLKSOURCE); +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2: /* SAI2 clock used as DFSDM1 audio clock */ +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** dfsdm_frequency = LL_RCC_GetSAIClockFreq(LL_RCC_SAI2_CLKSOURCE); +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return dfsdm_frequency; +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* DFSDM1_Channel0 */ +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(DSI) +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return DSI clock frequency +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param DSIxSource This parameter can be one of the following values: +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_DSI_CLKSOURCE +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval DSI clock frequency (in Hz) +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator is not ready +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NA indicates that external clock is used +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetDSIClockFreq(uint32_t DSIxSource) +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t dsi_frequency = LL_RCC_PERIPH_FREQUENCY_NO; +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_DSI_CLKSOURCE(DSIxSource)); +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* DSICLK clock frequency */ +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetDSIClockSource(DSIxSource)) +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_DSI_CLKSOURCE_PLL: /* DSI Clock is PLL Osc. */ +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLL_IsReady()) +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** dsi_frequency = RCC_PLL_GetFreqDomain_DSI(); +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + ARM GAS /tmp/ccTMI75D.s page 100 + + +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_DSI_CLKSOURCE_PHY: /* DSI Clock is DSI physical clock. */ +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** dsi_frequency = LL_RCC_PERIPH_FREQUENCY_NA; +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return dsi_frequency; +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* DSI */ +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(LTDC) +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return LTDC clock frequency +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param LTDCxSource This parameter can be one of the following values: +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_LTDC_CLKSOURCE +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval LTDC clock frequency (in Hz) +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator PLLSAI is not ready +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetLTDCClockFreq(uint32_t LTDCxSource) +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t ltdc_frequency = LL_RCC_PERIPH_FREQUENCY_NO; +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_LTDC_CLKSOURCE(LTDCxSource)); +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLSAI_IsReady()) +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** ltdc_frequency = RCC_PLLSAI_GetFreqDomain_LTDC(); +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return ltdc_frequency; +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* LTDC */ +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(SPDIFRX) +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return SPDIFRX clock frequency +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param SPDIFRXxSource This parameter can be one of the following values: +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @arg @ref LL_RCC_SPDIFRX1_CLKSOURCE +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval SPDIFRX clock frequency (in Hz) +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * - @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator is not ready +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t LL_RCC_GetSPDIFRXClockFreq(uint32_t SPDIFRXxSource) +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t spdifrx_frequency = LL_RCC_PERIPH_FREQUENCY_NO; +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Check parameter */ +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** assert_param(IS_LL_RCC_SPDIFRX_CLKSOURCE(SPDIFRXxSource)); +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** if (LL_RCC_PLLI2S_IsReady()) +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** spdifrx_frequency = RCC_PLLI2S_GetFreqDomain_SPDIFRX(); +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return spdifrx_frequency; + ARM GAS /tmp/ccTMI75D.s page 101 + + +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* SPDIFRX */ +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @} +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @} +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** @addtogroup RCC_LL_Private_Functions +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @{ +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return SYSTEM clock frequency +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval SYSTEM clock frequency (in Hz) +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_GetSystemClockFreq(void) +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t frequency = 0U; +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Get SYSCLK source -------------------------------------------------------*/ +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (LL_RCC_GetSysClkSource()) +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SYS_CLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** frequency = HSI_VALUE; +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SYS_CLKSOURCE_STATUS_HSE: /* HSE used as system clock source */ +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** frequency = HSE_VALUE; +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_SYS_CLKSOURCE_STATUS_PLL: /* PLL used as system clock source */ +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** frequency = RCC_PLL_GetFreqDomain_SYS(); +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** frequency = HSI_VALUE; +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return frequency; +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return HCLK clock frequency +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param SYSCLK_Frequency SYSCLK clock frequency +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval HCLK clock frequency (in Hz) +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_GetHCLKClockFreq(uint32_t SYSCLK_Frequency) +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 289 .loc 1 1263 1 is_stmt 1 view -0 + 290 .cfi_startproc + 291 @ args = 0, pretend = 0, frame = 0 + 292 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccTMI75D.s page 102 + + + 293 @ link register save eliminated. +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* HCLK clock frequency */ +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_HCLK_FREQ(SYSCLK_Frequency, LL_RCC_GetAHBPrescaler()); + 294 .loc 1 1265 3 view .LVU75 + 295 .LBB252: + 296 .LBI252: +2298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 297 .loc 2 2298 26 view .LVU76 + 298 .LBB253: +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 299 .loc 2 2300 3 view .LVU77 +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 300 .loc 2 2300 21 is_stmt 0 view .LVU78 + 301 0000 034B ldr r3, .L18 + 302 0002 9B68 ldr r3, [r3, #8] + 303 .LBE253: + 304 .LBE252: + 305 .loc 1 1265 10 view .LVU79 + 306 0004 C3F30313 ubfx r3, r3, #4, #4 + 307 0008 024A ldr r2, .L18+4 + 308 000a D35C ldrb r3, [r2, r3] @ zero_extendqisi2 +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 309 .loc 1 1266 1 view .LVU80 + 310 000c D840 lsrs r0, r0, r3 + 311 .LVL11: + 312 .loc 1 1266 1 view .LVU81 + 313 000e 7047 bx lr + 314 .L19: + 315 .align 2 + 316 .L18: + 317 0010 00380240 .word 1073887232 + 318 0014 00000000 .word AHBPrescTable + 319 .cfi_endproc + 320 .LFE312: + 322 .section .text.RCC_GetPCLK1ClockFreq,"ax",%progbits + 323 .align 1 + 324 .global RCC_GetPCLK1ClockFreq + 325 .syntax unified + 326 .thumb + 327 .thumb_func + 328 .fpu fpv5-d16 + 330 RCC_GetPCLK1ClockFreq: + 331 .LVL12: + 332 .LFB313: +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PCLK1 clock frequency +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param HCLK_Frequency HCLK clock frequency +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PCLK1 clock frequency (in Hz) +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_GetPCLK1ClockFreq(uint32_t HCLK_Frequency) +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 333 .loc 1 1274 1 is_stmt 1 view -0 + 334 .cfi_startproc + 335 @ args = 0, pretend = 0, frame = 0 + 336 @ frame_needed = 0, uses_anonymous_args = 0 + 337 @ link register save eliminated. + ARM GAS /tmp/ccTMI75D.s page 103 + + +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PCLK1 clock frequency */ +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PCLK1_FREQ(HCLK_Frequency, LL_RCC_GetAPB1Prescaler()); + 338 .loc 1 1276 3 view .LVU83 + 339 .LBB254: + 340 .LBI254: +2313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 341 .loc 2 2313 26 view .LVU84 + 342 .LBB255: +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 343 .loc 2 2315 3 view .LVU85 +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 344 .loc 2 2315 21 is_stmt 0 view .LVU86 + 345 0000 034B ldr r3, .L21 + 346 0002 9B68 ldr r3, [r3, #8] + 347 .LBE255: + 348 .LBE254: + 349 .loc 1 1276 10 view .LVU87 + 350 0004 C3F38223 ubfx r3, r3, #10, #3 + 351 0008 024A ldr r2, .L21+4 + 352 000a D35C ldrb r3, [r2, r3] @ zero_extendqisi2 +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 353 .loc 1 1277 1 view .LVU88 + 354 000c D840 lsrs r0, r0, r3 + 355 .LVL13: + 356 .loc 1 1277 1 view .LVU89 + 357 000e 7047 bx lr + 358 .L22: + 359 .align 2 + 360 .L21: + 361 0010 00380240 .word 1073887232 + 362 0014 00000000 .word APBPrescTable + 363 .cfi_endproc + 364 .LFE313: + 366 .section .text.RCC_GetPCLK2ClockFreq,"ax",%progbits + 367 .align 1 + 368 .global RCC_GetPCLK2ClockFreq + 369 .syntax unified + 370 .thumb + 371 .thumb_func + 372 .fpu fpv5-d16 + 374 RCC_GetPCLK2ClockFreq: + 375 .LVL14: + 376 .LFB314: +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PCLK2 clock frequency +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @param HCLK_Frequency HCLK clock frequency +1282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PCLK2 clock frequency (in Hz) +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_GetPCLK2ClockFreq(uint32_t HCLK_Frequency) +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 377 .loc 1 1285 1 is_stmt 1 view -0 + 378 .cfi_startproc + 379 @ args = 0, pretend = 0, frame = 0 + 380 @ frame_needed = 0, uses_anonymous_args = 0 + 381 @ link register save eliminated. +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PCLK2 clock frequency */ + ARM GAS /tmp/ccTMI75D.s page 104 + + +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PCLK2_FREQ(HCLK_Frequency, LL_RCC_GetAPB2Prescaler()); + 382 .loc 1 1287 3 view .LVU91 + 383 .LBB256: + 384 .LBI256: +2328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 385 .loc 2 2328 26 view .LVU92 + 386 .LBB257: +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 387 .loc 2 2330 3 view .LVU93 +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 388 .loc 2 2330 21 is_stmt 0 view .LVU94 + 389 0000 034B ldr r3, .L24 + 390 0002 9B68 ldr r3, [r3, #8] + 391 .LBE257: + 392 .LBE256: + 393 .loc 1 1287 10 view .LVU95 + 394 0004 C3F34233 ubfx r3, r3, #13, #3 + 395 0008 024A ldr r2, .L24+4 + 396 000a D35C ldrb r3, [r2, r3] @ zero_extendqisi2 +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 397 .loc 1 1288 1 view .LVU96 + 398 000c D840 lsrs r0, r0, r3 + 399 .LVL15: + 400 .loc 1 1288 1 view .LVU97 + 401 000e 7047 bx lr + 402 .L25: + 403 .align 2 + 404 .L24: + 405 0010 00380240 .word 1073887232 + 406 0014 00000000 .word APBPrescTable + 407 .cfi_endproc + 408 .LFE314: + 410 .section .text.RCC_PLL_GetFreqDomain_SYS,"ax",%progbits + 411 .align 1 + 412 .global RCC_PLL_GetFreqDomain_SYS + 413 .syntax unified + 414 .thumb + 415 .thumb_func + 416 .fpu fpv5-d16 + 418 RCC_PLL_GetFreqDomain_SYS: + 419 .LFB315: +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PLL clock frequency used for system domain +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PLL clock frequency (in Hz) +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLL_GetFreqDomain_SYS(void) +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 420 .loc 1 1295 1 is_stmt 1 view -0 + 421 .cfi_startproc + 422 @ args = 0, pretend = 0, frame = 0 + 423 @ frame_needed = 0, uses_anonymous_args = 0 + 424 @ link register save eliminated. +1296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t pllinputfreq = 0U, pllsource = 0U; + 425 .loc 1 1296 3 view .LVU99 + 426 .LVL16: +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + ARM GAS /tmp/ccTMI75D.s page 105 + + +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** SYSCLK = PLL_VCO / PLLP +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllsource = LL_RCC_PLL_GetMainSource(); + 427 .loc 1 1301 3 view .LVU100 + 428 .LBB258: + 429 .LBI258: +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 430 .loc 2 3461 26 view .LVU101 + 431 .LBB259: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 432 .loc 2 3463 3 view .LVU102 +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 433 .loc 2 3463 21 is_stmt 0 view .LVU103 + 434 0000 0D4B ldr r3, .L29 + 435 0002 5B68 ldr r3, [r3, #4] +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 436 .loc 2 3463 10 view .LVU104 + 437 0004 03F48003 and r3, r3, #4194304 + 438 .LVL17: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 439 .loc 2 3463 10 view .LVU105 + 440 .LBE259: + 441 .LBE258: +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (pllsource) + 442 .loc 1 1303 3 is_stmt 1 view .LVU106 + 443 0008 9BB9 cbnz r3, .L28 +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; + 444 .loc 1 1306 20 is_stmt 0 view .LVU107 + 445 000a 0C48 ldr r0, .L29+4 + 446 .L27: + 447 .LVL18: +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSE_VALUE; +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; +1315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PLLCLK_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + 448 .loc 1 1317 3 is_stmt 1 view .LVU108 + 449 .LBB260: + 450 .LBI260: +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 451 .loc 2 3601 26 view .LVU109 + 452 .LBB261: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 453 .loc 2 3603 3 view .LVU110 +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 454 .loc 2 3603 21 is_stmt 0 view .LVU111 + 455 000c 0A4B ldr r3, .L29 + ARM GAS /tmp/ccTMI75D.s page 106 + + + 456 .LVL19: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 457 .loc 2 3603 21 view .LVU112 + 458 000e 5A68 ldr r2, [r3, #4] +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 459 .loc 2 3603 10 view .LVU113 + 460 0010 02F03F02 and r2, r2, #63 + 461 .LBE261: + 462 .LBE260: + 463 .loc 1 1317 10 view .LVU114 + 464 0014 B0FBF2F0 udiv r0, r0, r2 + 465 .LVL20: + 466 .LBB262: + 467 .LBI262: +3471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 468 .loc 2 3471 26 is_stmt 1 view .LVU115 + 469 .LBB263: +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 470 .loc 2 3473 3 view .LVU116 +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 471 .loc 2 3473 21 is_stmt 0 view .LVU117 + 472 0018 5A68 ldr r2, [r3, #4] +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 473 .loc 2 3473 10 view .LVU118 + 474 001a C2F38812 ubfx r2, r2, #6, #9 + 475 .LBE263: + 476 .LBE262: + 477 .loc 1 1317 10 view .LVU119 + 478 001e 02FB00F0 mul r0, r2, r0 + 479 .LBB264: + 480 .LBI264: +3485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 481 .loc 2 3485 26 is_stmt 1 view .LVU120 + 482 .LBB265: +3487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 483 .loc 2 3487 3 view .LVU121 +3487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 484 .loc 2 3487 21 is_stmt 0 view .LVU122 + 485 0022 5B68 ldr r3, [r3, #4] + 486 .LBE265: + 487 .LBE264: + 488 .loc 1 1317 10 view .LVU123 + 489 0024 C3F30143 ubfx r3, r3, #16, #2 + 490 0028 0133 adds r3, r3, #1 + 491 002a 5B00 lsls r3, r3, #1 +1318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_PLL_GetN(), LL_RCC_PLL_GetP()); +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 492 .loc 1 1319 1 view .LVU124 + 493 002c B0FBF3F0 udiv r0, r0, r3 + 494 0030 7047 bx lr + 495 .LVL21: + 496 .L28: +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 497 .loc 1 1310 20 view .LVU125 + 498 0032 0348 ldr r0, .L29+8 + 499 0034 EAE7 b .L27 + 500 .L30: + ARM GAS /tmp/ccTMI75D.s page 107 + + + 501 0036 00BF .align 2 + 502 .L29: + 503 0038 00380240 .word 1073887232 + 504 003c 0024F400 .word 16000000 + 505 0040 40787D01 .word 25000000 + 506 .cfi_endproc + 507 .LFE315: + 509 .section .text.RCC_GetSystemClockFreq,"ax",%progbits + 510 .align 1 + 511 .global RCC_GetSystemClockFreq + 512 .syntax unified + 513 .thumb + 514 .thumb_func + 515 .fpu fpv5-d16 + 517 RCC_GetSystemClockFreq: + 518 .LFB311: +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t frequency = 0U; + 519 .loc 1 1231 1 is_stmt 1 view -0 + 520 .cfi_startproc + 521 @ args = 0, pretend = 0, frame = 0 + 522 @ frame_needed = 0, uses_anonymous_args = 0 + 523 0000 08B5 push {r3, lr} + 524 .LCFI2: + 525 .cfi_def_cfa_offset 8 + 526 .cfi_offset 3, -8 + 527 .cfi_offset 14, -4 +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 528 .loc 1 1232 3 view .LVU127 + 529 .LVL22: +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 530 .loc 1 1235 3 view .LVU128 + 531 .LBB266: + 532 .LBI266: +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 533 .loc 2 2227 26 view .LVU129 + 534 .LBB267: +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 535 .loc 2 2229 3 view .LVU130 +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 536 .loc 2 2229 21 is_stmt 0 view .LVU131 + 537 0002 074B ldr r3, .L36 + 538 0004 9B68 ldr r3, [r3, #8] +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 539 .loc 2 2229 10 view .LVU132 + 540 0006 03F00C03 and r3, r3, #12 + 541 .LBE267: + 542 .LBE266: +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 543 .loc 1 1235 3 view .LVU133 + 544 000a 042B cmp r3, #4 + 545 000c 04D0 beq .L33 + 546 000e 082B cmp r3, #8 + 547 0010 04D1 bne .L34 +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 548 .loc 1 1246 7 is_stmt 1 view .LVU134 +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 549 .loc 1 1246 19 is_stmt 0 view .LVU135 + ARM GAS /tmp/ccTMI75D.s page 108 + + + 550 0012 FFF7FEFF bl RCC_PLL_GetFreqDomain_SYS + 551 .LVL23: +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 552 .loc 1 1247 7 is_stmt 1 view .LVU136 + 553 0016 02E0 b .L31 + 554 .LVL24: + 555 .L33: +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 556 .loc 1 1242 17 is_stmt 0 view .LVU137 + 557 0018 0248 ldr r0, .L36+4 + 558 001a 00E0 b .L31 + 559 .L34: +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 560 .loc 1 1235 3 view .LVU138 + 561 001c 0248 ldr r0, .L36+8 + 562 .LVL25: +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 563 .loc 1 1254 3 is_stmt 1 view .LVU139 + 564 .L31: +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 565 .loc 1 1255 1 is_stmt 0 view .LVU140 + 566 001e 08BD pop {r3, pc} + 567 .L37: + 568 .align 2 + 569 .L36: + 570 0020 00380240 .word 1073887232 + 571 0024 40787D01 .word 25000000 + 572 0028 0024F400 .word 16000000 + 573 .cfi_endproc + 574 .LFE311: + 576 .section .text.LL_RCC_GetSystemClocksFreq,"ax",%progbits + 577 .align 1 + 578 .global LL_RCC_GetSystemClocksFreq + 579 .syntax unified + 580 .thumb + 581 .thumb_func + 582 .fpu fpv5-d16 + 584 LL_RCC_GetSystemClocksFreq: + 585 .LVL26: + 586 .LFB296: + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Get SYSCLK frequency */ + 587 .loc 1 258 1 is_stmt 1 view -0 + 588 .cfi_startproc + 589 @ args = 0, pretend = 0, frame = 0 + 590 @ frame_needed = 0, uses_anonymous_args = 0 + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* Get SYSCLK frequency */ + 591 .loc 1 258 1 is_stmt 0 view .LVU142 + 592 0000 10B5 push {r4, lr} + 593 .LCFI3: + 594 .cfi_def_cfa_offset 8 + 595 .cfi_offset 4, -8 + 596 .cfi_offset 14, -4 + 597 0002 0446 mov r4, r0 + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 598 .loc 1 260 3 is_stmt 1 view .LVU143 + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 599 .loc 1 260 34 is_stmt 0 view .LVU144 + ARM GAS /tmp/ccTMI75D.s page 109 + + + 600 0004 FFF7FEFF bl RCC_GetSystemClockFreq + 601 .LVL27: + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 602 .loc 1 260 32 view .LVU145 + 603 0008 2060 str r0, [r4] + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 604 .loc 1 263 3 is_stmt 1 view .LVU146 + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 605 .loc 1 263 34 is_stmt 0 view .LVU147 + 606 000a FFF7FEFF bl RCC_GetHCLKClockFreq + 607 .LVL28: + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 608 .loc 1 263 32 view .LVU148 + 609 000e 6060 str r0, [r4, #4] + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 610 .loc 1 266 3 is_stmt 1 view .LVU149 + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 611 .loc 1 266 34 is_stmt 0 view .LVU150 + 612 0010 FFF7FEFF bl RCC_GetPCLK1ClockFreq + 613 .LVL29: + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 614 .loc 1 266 32 view .LVU151 + 615 0014 A060 str r0, [r4, #8] + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 616 .loc 1 269 3 is_stmt 1 view .LVU152 + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 617 .loc 1 269 34 is_stmt 0 view .LVU153 + 618 0016 6068 ldr r0, [r4, #4] + 619 0018 FFF7FEFF bl RCC_GetPCLK2ClockFreq + 620 .LVL30: + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 621 .loc 1 269 32 view .LVU154 + 622 001c E060 str r0, [r4, #12] + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 623 .loc 1 270 1 view .LVU155 + 624 001e 10BD pop {r4, pc} + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 625 .loc 1 270 1 view .LVU156 + 626 .cfi_endproc + 627 .LFE296: + 629 .section .text.LL_RCC_GetUSARTClockFreq,"ax",%progbits + 630 .align 1 + 631 .global LL_RCC_GetUSARTClockFreq + 632 .syntax unified + 633 .thumb + 634 .thumb_func + 635 .fpu fpv5-d16 + 637 LL_RCC_GetUSARTClockFreq: + 638 .LVL31: + 639 .LFB297: + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t usart_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 640 .loc 1 283 1 is_stmt 1 view -0 + 641 .cfi_startproc + 642 @ args = 0, pretend = 0, frame = 0 + 643 @ frame_needed = 0, uses_anonymous_args = 0 + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t usart_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 644 .loc 1 283 1 is_stmt 0 view .LVU158 + ARM GAS /tmp/ccTMI75D.s page 110 + + + 645 0000 08B5 push {r3, lr} + 646 .LCFI4: + 647 .cfi_def_cfa_offset 8 + 648 .cfi_offset 3, -8 + 649 .cfi_offset 14, -4 + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 650 .loc 1 284 3 is_stmt 1 view .LVU159 + 651 .LVL32: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 652 .loc 1 287 3 view .LVU160 + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 653 .loc 1 289 3 view .LVU161 + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 654 .loc 1 289 6 is_stmt 0 view .LVU162 + 655 0002 0328 cmp r0, #3 + 656 0004 08D0 beq .L67 + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 657 .loc 1 318 8 is_stmt 1 view .LVU163 + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 658 .loc 1 318 11 is_stmt 0 view .LVU164 + 659 0006 0C28 cmp r0, #12 + 660 0008 2ED0 beq .L68 + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 661 .loc 1 347 8 is_stmt 1 view .LVU165 + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 662 .loc 1 347 11 is_stmt 0 view .LVU166 + 663 000a B0F5406F cmp r0, #3072 + 664 000e 53D0 beq .L69 + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 665 .loc 1 378 5 is_stmt 1 view .LVU167 + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 666 .loc 1 378 8 is_stmt 0 view .LVU168 + 667 0010 3028 cmp r0, #48 + 668 0012 7AD0 beq .L70 + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 669 .loc 1 284 12 view .LVU169 + 670 0014 0020 movs r0, #0 + 671 .LVL33: + 672 .L40: + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 673 .loc 1 409 1 view .LVU170 + 674 0016 08BD pop {r3, pc} + 675 .LVL34: + 676 .L67: + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 677 .loc 1 292 5 is_stmt 1 view .LVU171 + 678 .LBB268: + 679 .LBI268: +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 680 .loc 2 2664 26 view .LVU172 + 681 .LBB269: +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 682 .loc 2 2666 3 view .LVU173 +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 683 .loc 2 2666 21 is_stmt 0 view .LVU174 + 684 0018 514B ldr r3, .L75 + 685 001a D3F89030 ldr r3, [r3, #144] + ARM GAS /tmp/ccTMI75D.s page 111 + + + 686 001e 0340 ands r3, r3, r0 +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 687 .loc 2 2666 10 view .LVU175 + 688 0020 43EA0040 orr r0, r3, r0, lsl #16 + 689 .LVL35: +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 690 .loc 2 2666 10 view .LVU176 + 691 .LBE269: + 692 .LBE268: + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 693 .loc 1 292 5 view .LVU177 + 694 0024 4F4B ldr r3, .L75+4 + 695 0026 9842 cmp r0, r3 + 696 0028 0FD0 beq .L42 + 697 002a B0F1031F cmp r0, #196611 + 698 002e 13D0 beq .L43 + 699 0030 013B subs r3, r3, #1 + 700 0032 9842 cmp r0, r3 + 701 0034 06D0 beq .L71 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 702 .loc 1 314 9 is_stmt 1 view .LVU178 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 703 .loc 1 314 27 is_stmt 0 view .LVU179 + 704 0036 FFF7FEFF bl RCC_GetSystemClockFreq + 705 .LVL36: + 706 003a FFF7FEFF bl RCC_GetHCLKClockFreq + 707 .LVL37: + 708 003e FFF7FEFF bl RCC_GetPCLK2ClockFreq + 709 .LVL38: + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 710 .loc 1 315 9 is_stmt 1 view .LVU180 + 711 0042 E8E7 b .L40 + 712 .LVL39: + 713 .L71: + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 714 .loc 1 295 9 view .LVU181 + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 715 .loc 1 295 27 is_stmt 0 view .LVU182 + 716 0044 FFF7FEFF bl RCC_GetSystemClockFreq + 717 .LVL40: + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 718 .loc 1 296 9 is_stmt 1 view .LVU183 + 719 0048 E5E7 b .L40 + 720 .LVL41: + 721 .L42: + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 722 .loc 1 299 9 view .LVU184 + 723 .LBB270: + 724 .LBI270: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 725 .loc 2 2030 26 view .LVU185 + 726 .LBB271: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 727 .loc 2 2032 3 view .LVU186 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 728 .loc 2 2032 11 is_stmt 0 view .LVU187 + 729 004a 454B ldr r3, .L75 + ARM GAS /tmp/ccTMI75D.s page 112 + + + 730 004c 1868 ldr r0, [r3] + 731 .LBE271: + 732 .LBE270: + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 733 .loc 1 299 12 view .LVU188 + 734 004e 10F00200 ands r0, r0, #2 + 735 0052 E0D0 beq .L40 + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 736 .loc 1 301 27 view .LVU189 + 737 0054 4448 ldr r0, .L75+8 + 738 0056 DEE7 b .L40 + 739 .L43: + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 740 .loc 1 306 9 is_stmt 1 view .LVU190 + 741 .LBB272: + 742 .LBI272: +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 743 .loc 2 2154 26 view .LVU191 + 744 .LBB273: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 745 .loc 2 2156 3 view .LVU192 +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 746 .loc 2 2156 11 is_stmt 0 view .LVU193 + 747 0058 414B ldr r3, .L75 + 748 005a 186F ldr r0, [r3, #112] + 749 .LBE273: + 750 .LBE272: + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 751 .loc 1 306 12 view .LVU194 + 752 005c 10F00200 ands r0, r0, #2 + 753 0060 D9D0 beq .L40 + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 754 .loc 1 308 27 view .LVU195 + 755 0062 4FF40040 mov r0, #32768 + 756 0066 D6E7 b .L40 + 757 .LVL42: + 758 .L68: + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 759 .loc 1 321 5 is_stmt 1 view .LVU196 + 760 .LBB274: + 761 .LBI274: +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 762 .loc 2 2664 26 view .LVU197 + 763 .LBB275: +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 764 .loc 2 2666 3 view .LVU198 +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 765 .loc 2 2666 21 is_stmt 0 view .LVU199 + 766 0068 3D4B ldr r3, .L75 + 767 006a D3F89030 ldr r3, [r3, #144] + 768 006e 0340 ands r3, r3, r0 +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 769 .loc 2 2666 10 view .LVU200 + 770 0070 43EA0040 orr r0, r3, r0, lsl #16 + 771 .LVL43: +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 772 .loc 2 2666 10 view .LVU201 + ARM GAS /tmp/ccTMI75D.s page 113 + + + 773 .LBE275: + 774 .LBE274: + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 775 .loc 1 321 5 view .LVU202 + 776 0074 3D4B ldr r3, .L75+12 + 777 0076 9842 cmp r0, r3 + 778 0078 0FD0 beq .L47 + 779 007a B0F10C1F cmp r0, #786444 + 780 007e 13D0 beq .L48 + 781 0080 043B subs r3, r3, #4 + 782 0082 9842 cmp r0, r3 + 783 0084 06D0 beq .L72 + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 784 .loc 1 343 9 is_stmt 1 view .LVU203 + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 785 .loc 1 343 27 is_stmt 0 view .LVU204 + 786 0086 FFF7FEFF bl RCC_GetSystemClockFreq + 787 .LVL44: + 788 008a FFF7FEFF bl RCC_GetHCLKClockFreq + 789 .LVL45: + 790 008e FFF7FEFF bl RCC_GetPCLK1ClockFreq + 791 .LVL46: + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 792 .loc 1 344 9 is_stmt 1 view .LVU205 + 793 0092 C0E7 b .L40 + 794 .LVL47: + 795 .L72: + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 796 .loc 1 324 9 view .LVU206 + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 797 .loc 1 324 27 is_stmt 0 view .LVU207 + 798 0094 FFF7FEFF bl RCC_GetSystemClockFreq + 799 .LVL48: + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 800 .loc 1 325 9 is_stmt 1 view .LVU208 + 801 0098 BDE7 b .L40 + 802 .LVL49: + 803 .L47: + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 804 .loc 1 328 9 view .LVU209 + 805 .LBB276: + 806 .LBI276: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 807 .loc 2 2030 26 view .LVU210 + 808 .LBB277: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 809 .loc 2 2032 3 view .LVU211 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 810 .loc 2 2032 11 is_stmt 0 view .LVU212 + 811 009a 314B ldr r3, .L75 + 812 009c 1868 ldr r0, [r3] + 813 .LBE277: + 814 .LBE276: + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 815 .loc 1 328 12 view .LVU213 + 816 009e 10F00200 ands r0, r0, #2 + 817 00a2 B8D0 beq .L40 + ARM GAS /tmp/ccTMI75D.s page 114 + + + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 818 .loc 1 330 27 view .LVU214 + 819 00a4 3048 ldr r0, .L75+8 + 820 00a6 B6E7 b .L40 + 821 .L48: + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 822 .loc 1 335 9 is_stmt 1 view .LVU215 + 823 .LBB278: + 824 .LBI278: +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 825 .loc 2 2154 26 view .LVU216 + 826 .LBB279: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 827 .loc 2 2156 3 view .LVU217 +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 828 .loc 2 2156 11 is_stmt 0 view .LVU218 + 829 00a8 2D4B ldr r3, .L75 + 830 00aa 186F ldr r0, [r3, #112] + 831 .LBE279: + 832 .LBE278: + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 833 .loc 1 335 12 view .LVU219 + 834 00ac 10F00200 ands r0, r0, #2 + 835 00b0 B1D0 beq .L40 + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 836 .loc 1 337 27 view .LVU220 + 837 00b2 4FF40040 mov r0, #32768 + 838 00b6 AEE7 b .L40 + 839 .LVL50: + 840 .L69: + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 841 .loc 1 350 5 is_stmt 1 view .LVU221 + 842 .LBB280: + 843 .LBI280: +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 844 .loc 2 2664 26 view .LVU222 + 845 .LBB281: +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 846 .loc 2 2666 3 view .LVU223 +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 847 .loc 2 2666 21 is_stmt 0 view .LVU224 + 848 00b8 294B ldr r3, .L75 + 849 00ba D3F89030 ldr r3, [r3, #144] + 850 00be 0340 ands r3, r3, r0 +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 851 .loc 2 2666 10 view .LVU225 + 852 00c0 43EA0040 orr r0, r3, r0, lsl #16 + 853 .LVL51: +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 854 .loc 2 2666 10 view .LVU226 + 855 .LBE281: + 856 .LBE280: + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 857 .loc 1 350 5 view .LVU227 + 858 00c4 2A4B ldr r3, .L75+16 + 859 00c6 9842 cmp r0, r3 + 860 00c8 10D0 beq .L51 + ARM GAS /tmp/ccTMI75D.s page 115 + + + 861 00ca B0F10C2F cmp r0, #201329664 + 862 00ce 14D0 beq .L52 + 863 00d0 A3F58063 sub r3, r3, #1024 + 864 00d4 9842 cmp r0, r3 + 865 00d6 06D0 beq .L73 + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 866 .loc 1 372 9 is_stmt 1 view .LVU228 + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 867 .loc 1 372 27 is_stmt 0 view .LVU229 + 868 00d8 FFF7FEFF bl RCC_GetSystemClockFreq + 869 .LVL52: + 870 00dc FFF7FEFF bl RCC_GetHCLKClockFreq + 871 .LVL53: + 872 00e0 FFF7FEFF bl RCC_GetPCLK2ClockFreq + 873 .LVL54: + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 874 .loc 1 373 9 is_stmt 1 view .LVU230 + 875 00e4 97E7 b .L40 + 876 .LVL55: + 877 .L73: + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 878 .loc 1 353 9 view .LVU231 + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 879 .loc 1 353 27 is_stmt 0 view .LVU232 + 880 00e6 FFF7FEFF bl RCC_GetSystemClockFreq + 881 .LVL56: + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 882 .loc 1 354 9 is_stmt 1 view .LVU233 + 883 00ea 94E7 b .L40 + 884 .LVL57: + 885 .L51: + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 886 .loc 1 357 9 view .LVU234 + 887 .LBB282: + 888 .LBI282: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 889 .loc 2 2030 26 view .LVU235 + 890 .LBB283: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 891 .loc 2 2032 3 view .LVU236 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 892 .loc 2 2032 11 is_stmt 0 view .LVU237 + 893 00ec 1C4B ldr r3, .L75 + 894 00ee 1868 ldr r0, [r3] + 895 .LBE283: + 896 .LBE282: + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 897 .loc 1 357 12 view .LVU238 + 898 00f0 10F00200 ands r0, r0, #2 + 899 00f4 8FD0 beq .L40 + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 900 .loc 1 359 27 view .LVU239 + 901 00f6 1C48 ldr r0, .L75+8 + 902 00f8 8DE7 b .L40 + 903 .L52: + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 904 .loc 1 364 9 is_stmt 1 view .LVU240 + ARM GAS /tmp/ccTMI75D.s page 116 + + + 905 .LBB284: + 906 .LBI284: +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 907 .loc 2 2154 26 view .LVU241 + 908 .LBB285: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 909 .loc 2 2156 3 view .LVU242 +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 910 .loc 2 2156 11 is_stmt 0 view .LVU243 + 911 00fa 194B ldr r3, .L75 + 912 00fc 186F ldr r0, [r3, #112] + 913 .LBE285: + 914 .LBE284: + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 915 .loc 1 364 12 view .LVU244 + 916 00fe 10F00200 ands r0, r0, #2 + 917 0102 88D0 beq .L40 + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 918 .loc 1 366 27 view .LVU245 + 919 0104 4FF40040 mov r0, #32768 + 920 0108 85E7 b .L40 + 921 .LVL58: + 922 .L70: + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 923 .loc 1 381 7 is_stmt 1 view .LVU246 + 924 .LBB286: + 925 .LBI286: +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 926 .loc 2 2664 26 view .LVU247 + 927 .LBB287: +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 928 .loc 2 2666 3 view .LVU248 +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 929 .loc 2 2666 21 is_stmt 0 view .LVU249 + 930 010a 154B ldr r3, .L75 + 931 010c D3F89030 ldr r3, [r3, #144] + 932 0110 0340 ands r3, r3, r0 +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 933 .loc 2 2666 10 view .LVU250 + 934 0112 43EA0040 orr r0, r3, r0, lsl #16 + 935 .LVL59: +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 936 .loc 2 2666 10 view .LVU251 + 937 .LBE287: + 938 .LBE286: + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 939 .loc 1 381 7 view .LVU252 + 940 0116 174B ldr r3, .L75+20 + 941 0118 9842 cmp r0, r3 + 942 011a 0FD0 beq .L54 + 943 011c B0F1301F cmp r0, #3145776 + 944 0120 14D0 beq .L55 + 945 0122 103B subs r3, r3, #16 + 946 0124 9842 cmp r0, r3 + 947 0126 06D0 beq .L74 + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 948 .loc 1 403 11 is_stmt 1 view .LVU253 + ARM GAS /tmp/ccTMI75D.s page 117 + + + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 949 .loc 1 403 29 is_stmt 0 view .LVU254 + 950 0128 FFF7FEFF bl RCC_GetSystemClockFreq + 951 .LVL60: + 952 012c FFF7FEFF bl RCC_GetHCLKClockFreq + 953 .LVL61: + 954 0130 FFF7FEFF bl RCC_GetPCLK1ClockFreq + 955 .LVL62: + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 956 .loc 1 404 11 is_stmt 1 view .LVU255 + 957 0134 6FE7 b .L40 + 958 .LVL63: + 959 .L74: + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 960 .loc 1 384 11 view .LVU256 + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 961 .loc 1 384 29 is_stmt 0 view .LVU257 + 962 0136 FFF7FEFF bl RCC_GetSystemClockFreq + 963 .LVL64: + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 964 .loc 1 385 11 is_stmt 1 view .LVU258 + 965 013a 6CE7 b .L40 + 966 .LVL65: + 967 .L54: + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 968 .loc 1 388 11 view .LVU259 + 969 .LBB288: + 970 .LBI288: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 971 .loc 2 2030 26 view .LVU260 + 972 .LBB289: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 973 .loc 2 2032 3 view .LVU261 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 974 .loc 2 2032 11 is_stmt 0 view .LVU262 + 975 013c 084B ldr r3, .L75 + 976 013e 1868 ldr r0, [r3] + 977 .LBE289: + 978 .LBE288: + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 979 .loc 1 388 14 view .LVU263 + 980 0140 10F00200 ands r0, r0, #2 + 981 0144 3FF467AF beq .L40 + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 982 .loc 1 390 29 view .LVU264 + 983 0148 0748 ldr r0, .L75+8 + 984 014a 64E7 b .L40 + 985 .L55: + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 986 .loc 1 395 11 is_stmt 1 view .LVU265 + 987 .LBB290: + 988 .LBI290: +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 989 .loc 2 2154 26 view .LVU266 + 990 .LBB291: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 991 .loc 2 2156 3 view .LVU267 + ARM GAS /tmp/ccTMI75D.s page 118 + + +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 992 .loc 2 2156 11 is_stmt 0 view .LVU268 + 993 014c 044B ldr r3, .L75 + 994 014e 186F ldr r0, [r3, #112] + 995 .LBE291: + 996 .LBE290: + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 997 .loc 1 395 14 view .LVU269 + 998 0150 10F00200 ands r0, r0, #2 + 999 0154 3FF45FAF beq .L40 + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1000 .loc 1 397 29 view .LVU270 + 1001 0158 4FF40040 mov r0, #32768 + 1002 .LVL66: + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1003 .loc 1 408 3 is_stmt 1 view .LVU271 + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1004 .loc 1 408 10 is_stmt 0 view .LVU272 + 1005 015c 5BE7 b .L40 + 1006 .L76: + 1007 015e 00BF .align 2 + 1008 .L75: + 1009 0160 00380240 .word 1073887232 + 1010 0164 02000300 .word 196610 + 1011 0168 0024F400 .word 16000000 + 1012 016c 08000C00 .word 786440 + 1013 0170 0008000C .word 201328640 + 1014 0174 20003000 .word 3145760 + 1015 .cfi_endproc + 1016 .LFE297: + 1018 .section .text.LL_RCC_GetUARTClockFreq,"ax",%progbits + 1019 .align 1 + 1020 .global LL_RCC_GetUARTClockFreq + 1021 .syntax unified + 1022 .thumb + 1023 .thumb_func + 1024 .fpu fpv5-d16 + 1026 LL_RCC_GetUARTClockFreq: + 1027 .LVL67: + 1028 .LFB298: + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t uart_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 1029 .loc 1 422 1 is_stmt 1 view -0 + 1030 .cfi_startproc + 1031 @ args = 0, pretend = 0, frame = 0 + 1032 @ frame_needed = 0, uses_anonymous_args = 0 + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t uart_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 1033 .loc 1 422 1 is_stmt 0 view .LVU274 + 1034 0000 08B5 push {r3, lr} + 1035 .LCFI5: + 1036 .cfi_def_cfa_offset 8 + 1037 .cfi_offset 3, -8 + 1038 .cfi_offset 14, -4 + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1039 .loc 1 423 3 is_stmt 1 view .LVU275 + 1040 .LVL68: + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1041 .loc 1 426 3 view .LVU276 + ARM GAS /tmp/ccTMI75D.s page 119 + + + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1042 .loc 1 428 3 view .LVU277 + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1043 .loc 1 428 6 is_stmt 0 view .LVU278 + 1044 0002 C028 cmp r0, #192 + 1045 0004 0AD0 beq .L104 + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1046 .loc 1 457 8 is_stmt 1 view .LVU279 + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1047 .loc 1 457 11 is_stmt 0 view .LVU280 + 1048 0006 B0F5407F cmp r0, #768 + 1049 000a 2FD0 beq .L105 + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1050 .loc 1 486 8 is_stmt 1 view .LVU281 + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1051 .loc 1 486 11 is_stmt 0 view .LVU282 + 1052 000c B0F5405F cmp r0, #12288 + 1053 0010 55D0 beq .L106 + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1054 .loc 1 517 5 is_stmt 1 view .LVU283 + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1055 .loc 1 517 8 is_stmt 0 view .LVU284 + 1056 0012 B0F5404F cmp r0, #49152 + 1057 0016 7BD0 beq .L107 + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1058 .loc 1 423 12 view .LVU285 + 1059 0018 0020 movs r0, #0 + 1060 .LVL69: + 1061 .L77: + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1062 .loc 1 548 1 view .LVU286 + 1063 001a 08BD pop {r3, pc} + 1064 .LVL70: + 1065 .L104: + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1066 .loc 1 431 5 is_stmt 1 view .LVU287 + 1067 .LBB292: + 1068 .LBI292: +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1069 .loc 2 2698 26 view .LVU288 + 1070 .LBB293: +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1071 .loc 2 2700 3 view .LVU289 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1072 .loc 2 2700 21 is_stmt 0 view .LVU290 + 1073 001c 524B ldr r3, .L112 + 1074 001e D3F89030 ldr r3, [r3, #144] + 1075 0022 0340 ands r3, r3, r0 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1076 .loc 2 2700 10 view .LVU291 + 1077 0024 43EA0040 orr r0, r3, r0, lsl #16 + 1078 .LVL71: +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1079 .loc 2 2700 10 view .LVU292 + 1080 .LBE293: + 1081 .LBE292: + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + ARM GAS /tmp/ccTMI75D.s page 120 + + + 1082 .loc 1 431 5 view .LVU293 + 1083 0028 504B ldr r3, .L112+4 + 1084 002a 9842 cmp r0, r3 + 1085 002c 0FD0 beq .L79 + 1086 002e B0F1C01F cmp r0, #12583104 + 1087 0032 13D0 beq .L80 + 1088 0034 403B subs r3, r3, #64 + 1089 0036 9842 cmp r0, r3 + 1090 0038 06D0 beq .L108 + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1091 .loc 1 453 9 is_stmt 1 view .LVU294 + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1092 .loc 1 453 26 is_stmt 0 view .LVU295 + 1093 003a FFF7FEFF bl RCC_GetSystemClockFreq + 1094 .LVL72: + 1095 003e FFF7FEFF bl RCC_GetHCLKClockFreq + 1096 .LVL73: + 1097 0042 FFF7FEFF bl RCC_GetPCLK1ClockFreq + 1098 .LVL74: + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1099 .loc 1 454 9 is_stmt 1 view .LVU296 + 1100 0046 E8E7 b .L77 + 1101 .LVL75: + 1102 .L108: + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1103 .loc 1 434 9 view .LVU297 + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1104 .loc 1 434 26 is_stmt 0 view .LVU298 + 1105 0048 FFF7FEFF bl RCC_GetSystemClockFreq + 1106 .LVL76: + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1107 .loc 1 435 9 is_stmt 1 view .LVU299 + 1108 004c E5E7 b .L77 + 1109 .LVL77: + 1110 .L79: + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1111 .loc 1 438 9 view .LVU300 + 1112 .LBB294: + 1113 .LBI294: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1114 .loc 2 2030 26 view .LVU301 + 1115 .LBB295: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1116 .loc 2 2032 3 view .LVU302 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1117 .loc 2 2032 11 is_stmt 0 view .LVU303 + 1118 004e 464B ldr r3, .L112 + 1119 0050 1868 ldr r0, [r3] + 1120 .LBE295: + 1121 .LBE294: + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1122 .loc 1 438 12 view .LVU304 + 1123 0052 10F00200 ands r0, r0, #2 + 1124 0056 E0D0 beq .L77 + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1125 .loc 1 440 26 view .LVU305 + 1126 0058 4548 ldr r0, .L112+8 + ARM GAS /tmp/ccTMI75D.s page 121 + + + 1127 005a DEE7 b .L77 + 1128 .L80: + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1129 .loc 1 445 9 is_stmt 1 view .LVU306 + 1130 .LBB296: + 1131 .LBI296: +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1132 .loc 2 2154 26 view .LVU307 + 1133 .LBB297: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1134 .loc 2 2156 3 view .LVU308 +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1135 .loc 2 2156 11 is_stmt 0 view .LVU309 + 1136 005c 424B ldr r3, .L112 + 1137 005e 186F ldr r0, [r3, #112] + 1138 .LBE297: + 1139 .LBE296: + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1140 .loc 1 445 12 view .LVU310 + 1141 0060 10F00200 ands r0, r0, #2 + 1142 0064 D9D0 beq .L77 + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1143 .loc 1 447 26 view .LVU311 + 1144 0066 4FF40040 mov r0, #32768 + 1145 006a D6E7 b .L77 + 1146 .LVL78: + 1147 .L105: + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1148 .loc 1 460 5 is_stmt 1 view .LVU312 + 1149 .LBB298: + 1150 .LBI298: +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1151 .loc 2 2698 26 view .LVU313 + 1152 .LBB299: +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1153 .loc 2 2700 3 view .LVU314 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1154 .loc 2 2700 21 is_stmt 0 view .LVU315 + 1155 006c 3E4B ldr r3, .L112 + 1156 006e D3F89030 ldr r3, [r3, #144] + 1157 0072 0340 ands r3, r3, r0 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1158 .loc 2 2700 10 view .LVU316 + 1159 0074 43EA0040 orr r0, r3, r0, lsl #16 + 1160 .LVL79: +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1161 .loc 2 2700 10 view .LVU317 + 1162 .LBE299: + 1163 .LBE298: + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1164 .loc 1 460 5 view .LVU318 + 1165 0078 3E4B ldr r3, .L112+12 + 1166 007a 9842 cmp r0, r3 + 1167 007c 10D0 beq .L84 + 1168 007e B0F1032F cmp r0, #50332416 + 1169 0082 14D0 beq .L85 + 1170 0084 A3F58073 sub r3, r3, #256 + ARM GAS /tmp/ccTMI75D.s page 122 + + + 1171 0088 9842 cmp r0, r3 + 1172 008a 06D0 beq .L109 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1173 .loc 1 482 9 is_stmt 1 view .LVU319 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1174 .loc 1 482 26 is_stmt 0 view .LVU320 + 1175 008c FFF7FEFF bl RCC_GetSystemClockFreq + 1176 .LVL80: + 1177 0090 FFF7FEFF bl RCC_GetHCLKClockFreq + 1178 .LVL81: + 1179 0094 FFF7FEFF bl RCC_GetPCLK1ClockFreq + 1180 .LVL82: + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1181 .loc 1 483 9 is_stmt 1 view .LVU321 + 1182 0098 BFE7 b .L77 + 1183 .LVL83: + 1184 .L109: + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1185 .loc 1 463 9 view .LVU322 + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1186 .loc 1 463 26 is_stmt 0 view .LVU323 + 1187 009a FFF7FEFF bl RCC_GetSystemClockFreq + 1188 .LVL84: + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1189 .loc 1 464 9 is_stmt 1 view .LVU324 + 1190 009e BCE7 b .L77 + 1191 .LVL85: + 1192 .L84: + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1193 .loc 1 467 9 view .LVU325 + 1194 .LBB300: + 1195 .LBI300: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1196 .loc 2 2030 26 view .LVU326 + 1197 .LBB301: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1198 .loc 2 2032 3 view .LVU327 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1199 .loc 2 2032 11 is_stmt 0 view .LVU328 + 1200 00a0 314B ldr r3, .L112 + 1201 00a2 1868 ldr r0, [r3] + 1202 .LBE301: + 1203 .LBE300: + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1204 .loc 1 467 12 view .LVU329 + 1205 00a4 10F00200 ands r0, r0, #2 + 1206 00a8 B7D0 beq .L77 + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1207 .loc 1 469 26 view .LVU330 + 1208 00aa 3148 ldr r0, .L112+8 + 1209 00ac B5E7 b .L77 + 1210 .L85: + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1211 .loc 1 474 9 is_stmt 1 view .LVU331 + 1212 .LBB302: + 1213 .LBI302: +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + ARM GAS /tmp/ccTMI75D.s page 123 + + + 1214 .loc 2 2154 26 view .LVU332 + 1215 .LBB303: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1216 .loc 2 2156 3 view .LVU333 +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1217 .loc 2 2156 11 is_stmt 0 view .LVU334 + 1218 00ae 2E4B ldr r3, .L112 + 1219 00b0 186F ldr r0, [r3, #112] + 1220 .LBE303: + 1221 .LBE302: + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1222 .loc 1 474 12 view .LVU335 + 1223 00b2 10F00200 ands r0, r0, #2 + 1224 00b6 B0D0 beq .L77 + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1225 .loc 1 476 26 view .LVU336 + 1226 00b8 4FF40040 mov r0, #32768 + 1227 00bc ADE7 b .L77 + 1228 .LVL86: + 1229 .L106: + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1230 .loc 1 489 5 is_stmt 1 view .LVU337 + 1231 .LBB304: + 1232 .LBI304: +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1233 .loc 2 2698 26 view .LVU338 + 1234 .LBB305: +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1235 .loc 2 2700 3 view .LVU339 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1236 .loc 2 2700 21 is_stmt 0 view .LVU340 + 1237 00be 2A4B ldr r3, .L112 + 1238 00c0 D3F89030 ldr r3, [r3, #144] + 1239 00c4 0340 ands r3, r3, r0 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1240 .loc 2 2700 10 view .LVU341 + 1241 00c6 43EA0040 orr r0, r3, r0, lsl #16 + 1242 .LVL87: +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1243 .loc 2 2700 10 view .LVU342 + 1244 .LBE305: + 1245 .LBE304: + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1246 .loc 1 489 5 view .LVU343 + 1247 00ca 2B4B ldr r3, .L112+16 + 1248 00cc 9842 cmp r0, r3 + 1249 00ce 10D0 beq .L88 + 1250 00d0 B0F1302F cmp r0, #805318656 + 1251 00d4 14D0 beq .L89 + 1252 00d6 A3F58053 sub r3, r3, #4096 + 1253 00da 9842 cmp r0, r3 + 1254 00dc 06D0 beq .L110 + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1255 .loc 1 511 9 is_stmt 1 view .LVU344 + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1256 .loc 1 511 26 is_stmt 0 view .LVU345 + 1257 00de FFF7FEFF bl RCC_GetSystemClockFreq + ARM GAS /tmp/ccTMI75D.s page 124 + + + 1258 .LVL88: + 1259 00e2 FFF7FEFF bl RCC_GetHCLKClockFreq + 1260 .LVL89: + 1261 00e6 FFF7FEFF bl RCC_GetPCLK1ClockFreq + 1262 .LVL90: + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1263 .loc 1 512 9 is_stmt 1 view .LVU346 + 1264 00ea 96E7 b .L77 + 1265 .LVL91: + 1266 .L110: + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1267 .loc 1 492 9 view .LVU347 + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1268 .loc 1 492 26 is_stmt 0 view .LVU348 + 1269 00ec FFF7FEFF bl RCC_GetSystemClockFreq + 1270 .LVL92: + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1271 .loc 1 493 9 is_stmt 1 view .LVU349 + 1272 00f0 93E7 b .L77 + 1273 .LVL93: + 1274 .L88: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1275 .loc 1 496 9 view .LVU350 + 1276 .LBB306: + 1277 .LBI306: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1278 .loc 2 2030 26 view .LVU351 + 1279 .LBB307: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1280 .loc 2 2032 3 view .LVU352 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1281 .loc 2 2032 11 is_stmt 0 view .LVU353 + 1282 00f2 1D4B ldr r3, .L112 + 1283 00f4 1868 ldr r0, [r3] + 1284 .LBE307: + 1285 .LBE306: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1286 .loc 1 496 12 view .LVU354 + 1287 00f6 10F00200 ands r0, r0, #2 + 1288 00fa 8ED0 beq .L77 + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1289 .loc 1 498 26 view .LVU355 + 1290 00fc 1C48 ldr r0, .L112+8 + 1291 00fe 8CE7 b .L77 + 1292 .L89: + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1293 .loc 1 503 9 is_stmt 1 view .LVU356 + 1294 .LBB308: + 1295 .LBI308: +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1296 .loc 2 2154 26 view .LVU357 + 1297 .LBB309: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1298 .loc 2 2156 3 view .LVU358 +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1299 .loc 2 2156 11 is_stmt 0 view .LVU359 + 1300 0100 194B ldr r3, .L112 + ARM GAS /tmp/ccTMI75D.s page 125 + + + 1301 0102 186F ldr r0, [r3, #112] + 1302 .LBE309: + 1303 .LBE308: + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1304 .loc 1 503 12 view .LVU360 + 1305 0104 10F00200 ands r0, r0, #2 + 1306 0108 87D0 beq .L77 + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1307 .loc 1 505 26 view .LVU361 + 1308 010a 4FF40040 mov r0, #32768 + 1309 010e 84E7 b .L77 + 1310 .LVL94: + 1311 .L107: + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1312 .loc 1 520 7 is_stmt 1 view .LVU362 + 1313 .LBB310: + 1314 .LBI310: +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1315 .loc 2 2698 26 view .LVU363 + 1316 .LBB311: +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1317 .loc 2 2700 3 view .LVU364 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1318 .loc 2 2700 21 is_stmt 0 view .LVU365 + 1319 0110 154B ldr r3, .L112 + 1320 0112 D3F89030 ldr r3, [r3, #144] + 1321 0116 0340 ands r3, r3, r0 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1322 .loc 2 2700 10 view .LVU366 + 1323 0118 43EA0040 orr r0, r3, r0, lsl #16 + 1324 .LVL95: +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1325 .loc 2 2700 10 view .LVU367 + 1326 .LBE311: + 1327 .LBE310: + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1328 .loc 1 520 7 view .LVU368 + 1329 011c 174B ldr r3, .L112+20 + 1330 011e 9842 cmp r0, r3 + 1331 0120 10D0 beq .L91 + 1332 0122 B0F1C02F cmp r0, #-1073692672 + 1333 0126 15D0 beq .L92 + 1334 0128 A3F58043 sub r3, r3, #16384 + 1335 012c 9842 cmp r0, r3 + 1336 012e 06D0 beq .L111 + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1337 .loc 1 542 11 is_stmt 1 view .LVU369 + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1338 .loc 1 542 28 is_stmt 0 view .LVU370 + 1339 0130 FFF7FEFF bl RCC_GetSystemClockFreq + 1340 .LVL96: + 1341 0134 FFF7FEFF bl RCC_GetHCLKClockFreq + 1342 .LVL97: + 1343 0138 FFF7FEFF bl RCC_GetPCLK1ClockFreq + 1344 .LVL98: + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1345 .loc 1 543 11 is_stmt 1 view .LVU371 + ARM GAS /tmp/ccTMI75D.s page 126 + + + 1346 013c 6DE7 b .L77 + 1347 .LVL99: + 1348 .L111: + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1349 .loc 1 523 11 view .LVU372 + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1350 .loc 1 523 28 is_stmt 0 view .LVU373 + 1351 013e FFF7FEFF bl RCC_GetSystemClockFreq + 1352 .LVL100: + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1353 .loc 1 524 11 is_stmt 1 view .LVU374 + 1354 0142 6AE7 b .L77 + 1355 .LVL101: + 1356 .L91: + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1357 .loc 1 527 11 view .LVU375 + 1358 .LBB312: + 1359 .LBI312: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1360 .loc 2 2030 26 view .LVU376 + 1361 .LBB313: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1362 .loc 2 2032 3 view .LVU377 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1363 .loc 2 2032 11 is_stmt 0 view .LVU378 + 1364 0144 084B ldr r3, .L112 + 1365 0146 1868 ldr r0, [r3] + 1366 .LBE313: + 1367 .LBE312: + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1368 .loc 1 527 14 view .LVU379 + 1369 0148 10F00200 ands r0, r0, #2 + 1370 014c 3FF465AF beq .L77 + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1371 .loc 1 529 28 view .LVU380 + 1372 0150 0748 ldr r0, .L112+8 + 1373 0152 62E7 b .L77 + 1374 .L92: + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1375 .loc 1 534 11 is_stmt 1 view .LVU381 + 1376 .LBB314: + 1377 .LBI314: +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1378 .loc 2 2154 26 view .LVU382 + 1379 .LBB315: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1380 .loc 2 2156 3 view .LVU383 +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1381 .loc 2 2156 11 is_stmt 0 view .LVU384 + 1382 0154 044B ldr r3, .L112 + 1383 0156 186F ldr r0, [r3, #112] + 1384 .LBE315: + 1385 .LBE314: + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1386 .loc 1 534 14 view .LVU385 + 1387 0158 10F00200 ands r0, r0, #2 + 1388 015c 3FF45DAF beq .L77 + ARM GAS /tmp/ccTMI75D.s page 127 + + + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1389 .loc 1 536 28 view .LVU386 + 1390 0160 4FF40040 mov r0, #32768 + 1391 .LVL102: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1392 .loc 1 547 3 is_stmt 1 view .LVU387 + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1393 .loc 1 547 10 is_stmt 0 view .LVU388 + 1394 0164 59E7 b .L77 + 1395 .L113: + 1396 0166 00BF .align 2 + 1397 .L112: + 1398 0168 00380240 .word 1073887232 + 1399 016c 8000C000 .word 12583040 + 1400 0170 0024F400 .word 16000000 + 1401 0174 00020003 .word 50332160 + 1402 0178 00200030 .word 805314560 + 1403 017c 008000C0 .word -1073709056 + 1404 .cfi_endproc + 1405 .LFE298: + 1407 .section .text.LL_RCC_GetI2CClockFreq,"ax",%progbits + 1408 .align 1 + 1409 .global LL_RCC_GetI2CClockFreq + 1410 .syntax unified + 1411 .thumb + 1412 .thumb_func + 1413 .fpu fpv5-d16 + 1415 LL_RCC_GetI2CClockFreq: + 1416 .LVL103: + 1417 .LFB299: + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t i2c_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 1418 .loc 1 563 1 is_stmt 1 view -0 + 1419 .cfi_startproc + 1420 @ args = 0, pretend = 0, frame = 0 + 1421 @ frame_needed = 0, uses_anonymous_args = 0 + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t i2c_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 1422 .loc 1 563 1 is_stmt 0 view .LVU390 + 1423 0000 08B5 push {r3, lr} + 1424 .LCFI6: + 1425 .cfi_def_cfa_offset 8 + 1426 .cfi_offset 3, -8 + 1427 .cfi_offset 14, -4 + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1428 .loc 1 564 3 is_stmt 1 view .LVU391 + 1429 .LVL104: + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1430 .loc 1 567 3 view .LVU392 + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1431 .loc 1 569 3 view .LVU393 + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1432 .loc 1 569 6 is_stmt 0 view .LVU394 + 1433 0002 B0F5403F cmp r0, #196608 + 1434 0006 0AD0 beq .L141 + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1435 .loc 1 591 8 is_stmt 1 view .LVU395 + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1436 .loc 1 591 11 is_stmt 0 view .LVU396 + ARM GAS /tmp/ccTMI75D.s page 128 + + + 1437 0008 B0F5402F cmp r0, #786432 + 1438 000c 24D0 beq .L142 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1439 .loc 1 613 8 is_stmt 1 view .LVU397 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1440 .loc 1 613 11 is_stmt 0 view .LVU398 + 1441 000e B0F5401F cmp r0, #3145728 + 1442 0012 3ED0 beq .L143 + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1443 .loc 1 638 5 is_stmt 1 view .LVU399 + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1444 .loc 1 638 8 is_stmt 0 view .LVU400 + 1445 0014 B0F5400F cmp r0, #12582912 + 1446 0018 58D0 beq .L144 + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1447 .loc 1 564 12 view .LVU401 + 1448 001a 0020 movs r0, #0 + 1449 .LVL105: + 1450 .L114: + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1451 .loc 1 669 1 view .LVU402 + 1452 001c 08BD pop {r3, pc} + 1453 .LVL106: + 1454 .L141: + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1455 .loc 1 572 5 is_stmt 1 view .LVU403 + 1456 .LBB316: + 1457 .LBI316: +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1458 .loc 2 2730 26 view .LVU404 + 1459 .LBB317: +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1460 .loc 2 2732 3 view .LVU405 +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1461 .loc 2 2732 22 is_stmt 0 view .LVU406 + 1462 001e 3A4B ldr r3, .L145 + 1463 0020 D3F89030 ldr r3, [r3, #144] + 1464 0024 0340 ands r3, r3, r0 +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1465 .loc 2 2732 10 view .LVU407 + 1466 0026 40EA1340 orr r0, r0, r3, lsr #16 + 1467 .LVL107: +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1468 .loc 2 2732 10 view .LVU408 + 1469 .LBE317: + 1470 .LBE316: + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1471 .loc 1 572 5 view .LVU409 + 1472 002a 384B ldr r3, .L145+4 + 1473 002c 9842 cmp r0, r3 + 1474 002e 09D0 beq .L116 + 1475 0030 0133 adds r3, r3, #1 + 1476 0032 9842 cmp r0, r3 + 1477 0034 09D0 beq .L117 + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1478 .loc 1 587 9 is_stmt 1 view .LVU410 + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + ARM GAS /tmp/ccTMI75D.s page 129 + + + 1479 .loc 1 587 25 is_stmt 0 view .LVU411 + 1480 0036 FFF7FEFF bl RCC_GetSystemClockFreq + 1481 .LVL108: + 1482 003a FFF7FEFF bl RCC_GetHCLKClockFreq + 1483 .LVL109: + 1484 003e FFF7FEFF bl RCC_GetPCLK1ClockFreq + 1485 .LVL110: + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1486 .loc 1 588 9 is_stmt 1 view .LVU412 + 1487 0042 EBE7 b .L114 + 1488 .LVL111: + 1489 .L116: + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1490 .loc 1 575 9 view .LVU413 + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1491 .loc 1 575 25 is_stmt 0 view .LVU414 + 1492 0044 FFF7FEFF bl RCC_GetSystemClockFreq + 1493 .LVL112: + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1494 .loc 1 576 9 is_stmt 1 view .LVU415 + 1495 0048 E8E7 b .L114 + 1496 .LVL113: + 1497 .L117: + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1498 .loc 1 579 9 view .LVU416 + 1499 .LBB318: + 1500 .LBI318: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1501 .loc 2 2030 26 view .LVU417 + 1502 .LBB319: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1503 .loc 2 2032 3 view .LVU418 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1504 .loc 2 2032 11 is_stmt 0 view .LVU419 + 1505 004a 2F4B ldr r3, .L145 + 1506 004c 1868 ldr r0, [r3] + 1507 .LBE319: + 1508 .LBE318: + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1509 .loc 1 579 12 view .LVU420 + 1510 004e 10F00200 ands r0, r0, #2 + 1511 0052 E3D0 beq .L114 + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1512 .loc 1 581 25 view .LVU421 + 1513 0054 2E48 ldr r0, .L145+8 + 1514 0056 E1E7 b .L114 + 1515 .LVL114: + 1516 .L142: + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1517 .loc 1 594 5 is_stmt 1 view .LVU422 + 1518 .LBB320: + 1519 .LBI320: +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1520 .loc 2 2730 26 view .LVU423 + 1521 .LBB321: +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1522 .loc 2 2732 3 view .LVU424 + ARM GAS /tmp/ccTMI75D.s page 130 + + +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1523 .loc 2 2732 22 is_stmt 0 view .LVU425 + 1524 0058 2B4B ldr r3, .L145 + 1525 005a D3F89030 ldr r3, [r3, #144] + 1526 005e 0340 ands r3, r3, r0 +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1527 .loc 2 2732 10 view .LVU426 + 1528 0060 40EA1340 orr r0, r0, r3, lsr #16 + 1529 .LVL115: +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1530 .loc 2 2732 10 view .LVU427 + 1531 .LBE321: + 1532 .LBE320: + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1533 .loc 1 594 5 view .LVU428 + 1534 0064 2B4B ldr r3, .L145+12 + 1535 0066 9842 cmp r0, r3 + 1536 0068 09D0 beq .L121 + 1537 006a 0433 adds r3, r3, #4 + 1538 006c 9842 cmp r0, r3 + 1539 006e 09D0 beq .L122 + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1540 .loc 1 609 9 is_stmt 1 view .LVU429 + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1541 .loc 1 609 25 is_stmt 0 view .LVU430 + 1542 0070 FFF7FEFF bl RCC_GetSystemClockFreq + 1543 .LVL116: + 1544 0074 FFF7FEFF bl RCC_GetHCLKClockFreq + 1545 .LVL117: + 1546 0078 FFF7FEFF bl RCC_GetPCLK1ClockFreq + 1547 .LVL118: + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1548 .loc 1 610 9 is_stmt 1 view .LVU431 + 1549 007c CEE7 b .L114 + 1550 .LVL119: + 1551 .L121: + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1552 .loc 1 597 9 view .LVU432 + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1553 .loc 1 597 25 is_stmt 0 view .LVU433 + 1554 007e FFF7FEFF bl RCC_GetSystemClockFreq + 1555 .LVL120: + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1556 .loc 1 598 9 is_stmt 1 view .LVU434 + 1557 0082 CBE7 b .L114 + 1558 .LVL121: + 1559 .L122: + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1560 .loc 1 601 9 view .LVU435 + 1561 .LBB322: + 1562 .LBI322: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1563 .loc 2 2030 26 view .LVU436 + 1564 .LBB323: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1565 .loc 2 2032 3 view .LVU437 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + ARM GAS /tmp/ccTMI75D.s page 131 + + + 1566 .loc 2 2032 11 is_stmt 0 view .LVU438 + 1567 0084 204B ldr r3, .L145 + 1568 0086 1868 ldr r0, [r3] + 1569 .LBE323: + 1570 .LBE322: + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1571 .loc 1 601 12 view .LVU439 + 1572 0088 10F00200 ands r0, r0, #2 + 1573 008c C6D0 beq .L114 + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1574 .loc 1 603 25 view .LVU440 + 1575 008e 2048 ldr r0, .L145+8 + 1576 0090 C4E7 b .L114 + 1577 .LVL122: + 1578 .L143: + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1579 .loc 1 616 5 is_stmt 1 view .LVU441 + 1580 .LBB324: + 1581 .LBI324: +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1582 .loc 2 2730 26 view .LVU442 + 1583 .LBB325: +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1584 .loc 2 2732 3 view .LVU443 +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1585 .loc 2 2732 22 is_stmt 0 view .LVU444 + 1586 0092 1D4B ldr r3, .L145 + 1587 0094 D3F89030 ldr r3, [r3, #144] + 1588 0098 0340 ands r3, r3, r0 +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1589 .loc 2 2732 10 view .LVU445 + 1590 009a 40EA1340 orr r0, r0, r3, lsr #16 + 1591 .LVL123: +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1592 .loc 2 2732 10 view .LVU446 + 1593 .LBE325: + 1594 .LBE324: + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1595 .loc 1 616 5 view .LVU447 + 1596 009e 1E4B ldr r3, .L145+16 + 1597 00a0 9842 cmp r0, r3 + 1598 00a2 09D0 beq .L125 + 1599 00a4 1033 adds r3, r3, #16 + 1600 00a6 9842 cmp r0, r3 + 1601 00a8 09D0 beq .L126 + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1602 .loc 1 631 9 is_stmt 1 view .LVU448 + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1603 .loc 1 631 25 is_stmt 0 view .LVU449 + 1604 00aa FFF7FEFF bl RCC_GetSystemClockFreq + 1605 .LVL124: + 1606 00ae FFF7FEFF bl RCC_GetHCLKClockFreq + 1607 .LVL125: + 1608 00b2 FFF7FEFF bl RCC_GetPCLK1ClockFreq + 1609 .LVL126: + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1610 .loc 1 632 9 is_stmt 1 view .LVU450 + ARM GAS /tmp/ccTMI75D.s page 132 + + + 1611 00b6 B1E7 b .L114 + 1612 .LVL127: + 1613 .L125: + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1614 .loc 1 619 9 view .LVU451 + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1615 .loc 1 619 25 is_stmt 0 view .LVU452 + 1616 00b8 FFF7FEFF bl RCC_GetSystemClockFreq + 1617 .LVL128: + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1618 .loc 1 620 9 is_stmt 1 view .LVU453 + 1619 00bc AEE7 b .L114 + 1620 .LVL129: + 1621 .L126: + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1622 .loc 1 623 9 view .LVU454 + 1623 .LBB326: + 1624 .LBI326: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1625 .loc 2 2030 26 view .LVU455 + 1626 .LBB327: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1627 .loc 2 2032 3 view .LVU456 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1628 .loc 2 2032 11 is_stmt 0 view .LVU457 + 1629 00be 124B ldr r3, .L145 + 1630 00c0 1868 ldr r0, [r3] + 1631 .LBE327: + 1632 .LBE326: + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1633 .loc 1 623 12 view .LVU458 + 1634 00c2 10F00200 ands r0, r0, #2 + 1635 00c6 A9D0 beq .L114 + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1636 .loc 1 625 25 view .LVU459 + 1637 00c8 1148 ldr r0, .L145+8 + 1638 00ca A7E7 b .L114 + 1639 .LVL130: + 1640 .L144: + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1641 .loc 1 641 7 is_stmt 1 view .LVU460 + 1642 .LBB328: + 1643 .LBI328: +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1644 .loc 2 2730 26 view .LVU461 + 1645 .LBB329: +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1646 .loc 2 2732 3 view .LVU462 +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1647 .loc 2 2732 22 is_stmt 0 view .LVU463 + 1648 00cc 0E4B ldr r3, .L145 + 1649 00ce D3F89030 ldr r3, [r3, #144] + 1650 00d2 0340 ands r3, r3, r0 +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1651 .loc 2 2732 10 view .LVU464 + 1652 00d4 40EA1340 orr r0, r0, r3, lsr #16 + 1653 .LVL131: + ARM GAS /tmp/ccTMI75D.s page 133 + + +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1654 .loc 2 2732 10 view .LVU465 + 1655 .LBE329: + 1656 .LBE328: + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1657 .loc 1 641 7 view .LVU466 + 1658 00d8 104B ldr r3, .L145+20 + 1659 00da 9842 cmp r0, r3 + 1660 00dc 09D0 beq .L128 + 1661 00de 4033 adds r3, r3, #64 + 1662 00e0 9842 cmp r0, r3 + 1663 00e2 09D0 beq .L129 + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1664 .loc 1 656 11 is_stmt 1 view .LVU467 + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1665 .loc 1 656 27 is_stmt 0 view .LVU468 + 1666 00e4 FFF7FEFF bl RCC_GetSystemClockFreq + 1667 .LVL132: + 1668 00e8 FFF7FEFF bl RCC_GetHCLKClockFreq + 1669 .LVL133: + 1670 00ec FFF7FEFF bl RCC_GetPCLK1ClockFreq + 1671 .LVL134: + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1672 .loc 1 657 11 is_stmt 1 view .LVU469 + 1673 00f0 94E7 b .L114 + 1674 .LVL135: + 1675 .L128: + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1676 .loc 1 644 11 view .LVU470 + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1677 .loc 1 644 27 is_stmt 0 view .LVU471 + 1678 00f2 FFF7FEFF bl RCC_GetSystemClockFreq + 1679 .LVL136: + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1680 .loc 1 645 11 is_stmt 1 view .LVU472 + 1681 00f6 91E7 b .L114 + 1682 .LVL137: + 1683 .L129: + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1684 .loc 1 648 11 view .LVU473 + 1685 .LBB330: + 1686 .LBI330: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1687 .loc 2 2030 26 view .LVU474 + 1688 .LBB331: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1689 .loc 2 2032 3 view .LVU475 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1690 .loc 2 2032 11 is_stmt 0 view .LVU476 + 1691 00f8 034B ldr r3, .L145 + 1692 00fa 1868 ldr r0, [r3] + 1693 .LBE331: + 1694 .LBE330: + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1695 .loc 1 648 14 view .LVU477 + 1696 00fc 10F00200 ands r0, r0, #2 + 1697 0100 8CD0 beq .L114 + ARM GAS /tmp/ccTMI75D.s page 134 + + + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1698 .loc 1 650 27 view .LVU478 + 1699 0102 0348 ldr r0, .L145+8 + 1700 .LVL138: + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1701 .loc 1 668 3 is_stmt 1 view .LVU479 + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1702 .loc 1 668 10 is_stmt 0 view .LVU480 + 1703 0104 8AE7 b .L114 + 1704 .L146: + 1705 0106 00BF .align 2 + 1706 .L145: + 1707 0108 00380240 .word 1073887232 + 1708 010c 01000300 .word 196609 + 1709 0110 0024F400 .word 16000000 + 1710 0114 04000C00 .word 786436 + 1711 0118 10003000 .word 3145744 + 1712 011c 4000C000 .word 12582976 + 1713 .cfi_endproc + 1714 .LFE299: + 1716 .section .text.LL_RCC_GetLPTIMClockFreq,"ax",%progbits + 1717 .align 1 + 1718 .global LL_RCC_GetLPTIMClockFreq + 1719 .syntax unified + 1720 .thumb + 1721 .thumb_func + 1722 .fpu fpv5-d16 + 1724 LL_RCC_GetLPTIMClockFreq: + 1725 .LVL139: + 1726 .LFB301: + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t lptim_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 1727 .loc 1 715 1 is_stmt 1 view -0 + 1728 .cfi_startproc + 1729 @ args = 0, pretend = 0, frame = 0 + 1730 @ frame_needed = 0, uses_anonymous_args = 0 + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1731 .loc 1 716 3 view .LVU482 + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1732 .loc 1 719 3 view .LVU483 + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1733 .loc 1 721 3 view .LVU484 + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1734 .loc 1 721 6 is_stmt 0 view .LVU485 + 1735 0000 B0F1407F cmp r0, #50331648 + 1736 0004 01D0 beq .L160 + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1737 .loc 1 716 12 view .LVU486 + 1738 0006 0020 movs r0, #0 + 1739 .LVL140: + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1740 .loc 1 755 1 view .LVU487 + 1741 0008 7047 bx lr + 1742 .LVL141: + 1743 .L160: + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t lptim_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 1744 .loc 1 715 1 view .LVU488 + 1745 000a 08B5 push {r3, lr} + ARM GAS /tmp/ccTMI75D.s page 135 + + + 1746 .LCFI7: + 1747 .cfi_def_cfa_offset 8 + 1748 .cfi_offset 3, -8 + 1749 .cfi_offset 14, -4 + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1750 .loc 1 724 5 is_stmt 1 view .LVU489 + 1751 .LVL142: + 1752 .LBB332: + 1753 .LBI332: +2746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1754 .loc 2 2746 26 view .LVU490 + 1755 .LBB333: +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1756 .loc 2 2748 3 view .LVU491 +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1757 .loc 2 2748 21 is_stmt 0 view .LVU492 + 1758 000c 154B ldr r3, .L162 + 1759 000e D3F89030 ldr r3, [r3, #144] +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1760 .loc 2 2748 10 view .LVU493 + 1761 0012 03F04073 and r3, r3, #50331648 + 1762 .LVL143: +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1763 .loc 2 2748 10 view .LVU494 + 1764 .LBE333: + 1765 .LBE332: + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1766 .loc 1 724 5 view .LVU495 + 1767 0016 B3F1007F cmp r3, #33554432 + 1768 001a 14D0 beq .L149 + 1769 001c B3F1407F cmp r3, #50331648 + 1770 0020 18D0 beq .L150 + 1771 0022 B3F1807F cmp r3, #16777216 + 1772 0026 06D0 beq .L161 + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1773 .loc 1 749 9 is_stmt 1 view .LVU496 + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1774 .loc 1 749 27 is_stmt 0 view .LVU497 + 1775 0028 FFF7FEFF bl RCC_GetSystemClockFreq + 1776 .LVL144: + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1777 .loc 1 749 27 view .LVU498 + 1778 002c FFF7FEFF bl RCC_GetHCLKClockFreq + 1779 .LVL145: + 1780 0030 FFF7FEFF bl RCC_GetPCLK1ClockFreq + 1781 .LVL146: + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1782 .loc 1 750 9 is_stmt 1 view .LVU499 + 1783 .L147: + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1784 .loc 1 755 1 is_stmt 0 view .LVU500 + 1785 0034 08BD pop {r3, pc} + 1786 .LVL147: + 1787 .L161: + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1788 .loc 1 727 9 is_stmt 1 view .LVU501 + 1789 .LBB334: + ARM GAS /tmp/ccTMI75D.s page 136 + + + 1790 .LBI334: +2192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1791 .loc 2 2192 26 view .LVU502 + 1792 .LBB335: +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1793 .loc 2 2194 3 view .LVU503 +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1794 .loc 2 2194 11 is_stmt 0 view .LVU504 + 1795 0036 0B4B ldr r3, .L162 + 1796 0038 586F ldr r0, [r3, #116] + 1797 .LVL148: +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1798 .loc 2 2194 11 view .LVU505 + 1799 .LBE335: + 1800 .LBE334: + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1801 .loc 1 727 12 view .LVU506 + 1802 003a 10F00200 ands r0, r0, #2 + 1803 003e F9D0 beq .L147 + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1804 .loc 1 729 27 view .LVU507 + 1805 0040 4FF4FA40 mov r0, #32000 + 1806 0044 F6E7 b .L147 + 1807 .LVL149: + 1808 .L149: + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1809 .loc 1 734 9 is_stmt 1 view .LVU508 + 1810 .LBB336: + 1811 .LBI336: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1812 .loc 2 2030 26 view .LVU509 + 1813 .LBB337: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1814 .loc 2 2032 3 view .LVU510 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1815 .loc 2 2032 11 is_stmt 0 view .LVU511 + 1816 0046 074B ldr r3, .L162 + 1817 0048 1868 ldr r0, [r3] + 1818 .LVL150: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1819 .loc 2 2032 11 view .LVU512 + 1820 .LBE337: + 1821 .LBE336: + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1822 .loc 1 734 12 view .LVU513 + 1823 004a 10F00200 ands r0, r0, #2 + 1824 004e F1D0 beq .L147 + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1825 .loc 1 736 27 view .LVU514 + 1826 0050 0548 ldr r0, .L162+4 + 1827 0052 EFE7 b .L147 + 1828 .LVL151: + 1829 .L150: + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1830 .loc 1 741 9 is_stmt 1 view .LVU515 + 1831 .LBB338: + 1832 .LBI338: + ARM GAS /tmp/ccTMI75D.s page 137 + + +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1833 .loc 2 2154 26 view .LVU516 + 1834 .LBB339: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1835 .loc 2 2156 3 view .LVU517 +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1836 .loc 2 2156 11 is_stmt 0 view .LVU518 + 1837 0054 034B ldr r3, .L162 + 1838 0056 186F ldr r0, [r3, #112] + 1839 .LVL152: +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1840 .loc 2 2156 11 view .LVU519 + 1841 .LBE339: + 1842 .LBE338: + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1843 .loc 1 741 12 view .LVU520 + 1844 0058 10F00200 ands r0, r0, #2 + 1845 005c EAD0 beq .L147 + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1846 .loc 1 743 27 view .LVU521 + 1847 005e 4FF40040 mov r0, #32768 + 1848 .LVL153: + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1849 .loc 1 754 3 is_stmt 1 view .LVU522 + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1850 .loc 1 754 10 is_stmt 0 view .LVU523 + 1851 0062 E7E7 b .L147 + 1852 .L163: + 1853 .align 2 + 1854 .L162: + 1855 0064 00380240 .word 1073887232 + 1856 0068 0024F400 .word 16000000 + 1857 .cfi_endproc + 1858 .LFE301: + 1860 .section .text.LL_RCC_GetDFSDMClockFreq,"ax",%progbits + 1861 .align 1 + 1862 .global LL_RCC_GetDFSDMClockFreq + 1863 .syntax unified + 1864 .thumb + 1865 .thumb_func + 1866 .fpu fpv5-d16 + 1868 LL_RCC_GetDFSDMClockFreq: + 1869 .LVL154: + 1870 .LFB307: +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t dfsdm_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 1871 .loc 1 1077 1 is_stmt 1 view -0 + 1872 .cfi_startproc + 1873 @ args = 0, pretend = 0, frame = 0 + 1874 @ frame_needed = 0, uses_anonymous_args = 0 +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t dfsdm_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 1875 .loc 1 1077 1 is_stmt 0 view .LVU525 + 1876 0000 08B5 push {r3, lr} + 1877 .LCFI8: + 1878 .cfi_def_cfa_offset 8 + 1879 .cfi_offset 3, -8 + 1880 .cfi_offset 14, -4 +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + ARM GAS /tmp/ccTMI75D.s page 138 + + + 1881 .loc 1 1078 3 is_stmt 1 view .LVU526 + 1882 .LVL155: +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1883 .loc 1 1081 3 view .LVU527 +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1884 .loc 1 1084 3 view .LVU528 + 1885 .LBB340: + 1886 .LBI340: +2891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1887 .loc 2 2891 26 view .LVU529 + 1888 .LBB341: +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1889 .loc 2 2893 3 view .LVU530 +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1890 .loc 2 2893 21 is_stmt 0 view .LVU531 + 1891 0002 084B ldr r3, .L169 + 1892 0004 D3F88C30 ldr r3, [r3, #140] +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1893 .loc 2 2893 10 view .LVU532 + 1894 0008 1840 ands r0, r0, r3 + 1895 .LVL156: +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1896 .loc 2 2893 10 view .LVU533 + 1897 .LBE341: + 1898 .LBE340: +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1899 .loc 1 1084 3 view .LVU534 + 1900 000a B0F1007F cmp r0, #33554432 + 1901 000e 06D0 beq .L168 +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1902 .loc 1 1092 7 is_stmt 1 view .LVU535 +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1903 .loc 1 1092 25 is_stmt 0 view .LVU536 + 1904 0010 FFF7FEFF bl RCC_GetSystemClockFreq + 1905 .LVL157: + 1906 0014 FFF7FEFF bl RCC_GetHCLKClockFreq + 1907 .LVL158: + 1908 0018 FFF7FEFF bl RCC_GetPCLK2ClockFreq + 1909 .LVL159: +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1910 .loc 1 1093 7 is_stmt 1 view .LVU537 +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 1911 .loc 1 1096 3 view .LVU538 + 1912 .L164: +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1913 .loc 1 1097 1 is_stmt 0 view .LVU539 + 1914 001c 08BD pop {r3, pc} + 1915 .LVL160: + 1916 .L168: +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1917 .loc 1 1087 7 is_stmt 1 view .LVU540 +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 1918 .loc 1 1087 25 is_stmt 0 view .LVU541 + 1919 001e FFF7FEFF bl RCC_GetSystemClockFreq + 1920 .LVL161: +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 1921 .loc 1 1088 7 is_stmt 1 view .LVU542 + ARM GAS /tmp/ccTMI75D.s page 139 + + + 1922 0022 FBE7 b .L164 + 1923 .L170: + 1924 .align 2 + 1925 .L169: + 1926 0024 00380240 .word 1073887232 + 1927 .cfi_endproc + 1928 .LFE307: + 1930 .section .text.RCC_PLL_GetFreqDomain_48M,"ax",%progbits + 1931 .align 1 + 1932 .global RCC_PLL_GetFreqDomain_48M + 1933 .syntax unified + 1934 .thumb + 1935 .thumb_func + 1936 .fpu fpv5-d16 + 1938 RCC_PLL_GetFreqDomain_48M: + 1939 .LFB316: +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PLL clock frequency used for 48 MHz domain +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PLL clock frequency (in Hz) +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLL_GetFreqDomain_48M(void) +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 1940 .loc 1 1326 1 view -0 + 1941 .cfi_startproc + 1942 @ args = 0, pretend = 0, frame = 0 + 1943 @ frame_needed = 0, uses_anonymous_args = 0 + 1944 @ link register save eliminated. +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t pllinputfreq = 0U, pllsource = 0U; + 1945 .loc 1 1327 3 view .LVU544 + 1946 .LVL162: +1328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM ) * PLLN +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** 48M Domain clock = PLL_VCO / PLLQ +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllsource = LL_RCC_PLL_GetMainSource(); + 1947 .loc 1 1332 3 view .LVU545 + 1948 .LBB342: + 1949 .LBI342: +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1950 .loc 2 3461 26 view .LVU546 + 1951 .LBB343: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1952 .loc 2 3463 3 view .LVU547 +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1953 .loc 2 3463 21 is_stmt 0 view .LVU548 + 1954 0000 0C4B ldr r3, .L174 + 1955 0002 5B68 ldr r3, [r3, #4] +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1956 .loc 2 3463 10 view .LVU549 + 1957 0004 03F48003 and r3, r3, #4194304 + 1958 .LVL163: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1959 .loc 2 3463 10 view .LVU550 + 1960 .LBE343: + 1961 .LBE342: +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + ARM GAS /tmp/ccTMI75D.s page 140 + + +1334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (pllsource) + 1962 .loc 1 1334 3 is_stmt 1 view .LVU551 + 1963 0008 8BB9 cbnz r3, .L173 +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; + 1964 .loc 1 1337 20 is_stmt 0 view .LVU552 + 1965 000a 0B4B ldr r3, .L174+4 + 1966 .LVL164: + 1967 .L172: +1338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSE_VALUE; +1342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PLLCLK_48M_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + 1968 .loc 1 1348 3 is_stmt 1 view .LVU553 + 1969 .LBB344: + 1970 .LBI344: +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1971 .loc 2 3601 26 view .LVU554 + 1972 .LBB345: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1973 .loc 2 3603 3 view .LVU555 +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1974 .loc 2 3603 21 is_stmt 0 view .LVU556 + 1975 000c 094A ldr r2, .L174 + 1976 000e 5068 ldr r0, [r2, #4] +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1977 .loc 2 3603 10 view .LVU557 + 1978 0010 00F03F00 and r0, r0, #63 + 1979 .LBE345: + 1980 .LBE344: + 1981 .loc 1 1348 10 view .LVU558 + 1982 0014 B3FBF0F3 udiv r3, r3, r0 + 1983 .LVL165: + 1984 .LBB346: + 1985 .LBI346: +3471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1986 .loc 2 3471 26 is_stmt 1 view .LVU559 + 1987 .LBB347: +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1988 .loc 2 3473 3 view .LVU560 +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1989 .loc 2 3473 21 is_stmt 0 view .LVU561 + 1990 0018 5068 ldr r0, [r2, #4] +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1991 .loc 2 3473 10 view .LVU562 + 1992 001a C0F38810 ubfx r0, r0, #6, #9 + 1993 .LBE347: + 1994 .LBE346: + 1995 .loc 1 1348 10 view .LVU563 + ARM GAS /tmp/ccTMI75D.s page 141 + + + 1996 001e 00FB03F3 mul r3, r0, r3 + 1997 .LBB348: + 1998 .LBI348: +3510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1999 .loc 2 3510 26 is_stmt 1 view .LVU564 + 2000 .LBB349: +3512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2001 .loc 2 3512 3 view .LVU565 +3512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2002 .loc 2 3512 21 is_stmt 0 view .LVU566 + 2003 0022 5068 ldr r0, [r2, #4] + 2004 .LBE349: + 2005 .LBE348: + 2006 .loc 1 1348 10 view .LVU567 + 2007 0024 C0F30360 ubfx r0, r0, #24, #4 +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_PLL_GetN(), LL_RCC_PLL_GetQ()); +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2008 .loc 1 1350 1 view .LVU568 + 2009 0028 B3FBF0F0 udiv r0, r3, r0 + 2010 002c 7047 bx lr + 2011 .LVL166: + 2012 .L173: +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 2013 .loc 1 1341 20 view .LVU569 + 2014 002e 034B ldr r3, .L174+8 + 2015 .LVL167: +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 2016 .loc 1 1341 20 view .LVU570 + 2017 0030 ECE7 b .L172 + 2018 .L175: + 2019 0032 00BF .align 2 + 2020 .L174: + 2021 0034 00380240 .word 1073887232 + 2022 0038 0024F400 .word 16000000 + 2023 003c 40787D01 .word 25000000 + 2024 .cfi_endproc + 2025 .LFE316: + 2027 .section .text.RCC_PLLSAI_GetFreqDomain_SAI,"ax",%progbits + 2028 .align 1 + 2029 .global RCC_PLLSAI_GetFreqDomain_SAI + 2030 .syntax unified + 2031 .thumb + 2032 .thumb_func + 2033 .fpu fpv5-d16 + 2035 RCC_PLLSAI_GetFreqDomain_SAI: + 2036 .LFB317: +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(DSI) +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PLL clock frequency used for DSI clock +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PLL clock frequency (in Hz) +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLL_GetFreqDomain_DSI(void) +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t pllinputfreq = 0U, pllsource = 0U; +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLN + ARM GAS /tmp/ccTMI75D.s page 142 + + +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** DSICLK = PLL_VCO / PLLR +1363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllsource = LL_RCC_PLL_GetMainSource(); +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (pllsource) +1367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSE_VALUE; +1370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ +1373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PLLCLK_DSI_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_PLL_GetN(), LL_RCC_PLL_GetR()); +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* DSI */ +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PLLSAI clock frequency used for SAI1 and SAI2 domains +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PLLSAI clock frequency (in Hz) +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLSAI_GetFreqDomain_SAI(void) +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2037 .loc 1 1387 1 is_stmt 1 view -0 + 2038 .cfi_startproc + 2039 @ args = 0, pretend = 0, frame = 0 + 2040 @ frame_needed = 0, uses_anonymous_args = 0 + 2041 @ link register save eliminated. +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t pllinputfreq = 0U, pllsource = 0U; + 2042 .loc 1 1388 3 view .LVU572 + 2043 .LVL168: +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PLLSAI_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLSAIN +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** SAI1 and SAI2 domains clock = (PLLSAI_VCO / PLLSAIQ) / PLLSAIDIVQ +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllsource = LL_RCC_PLL_GetMainSource(); + 2044 .loc 1 1393 3 view .LVU573 + 2045 .LBB350: + 2046 .LBI350: +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2047 .loc 2 3461 26 view .LVU574 + 2048 .LBB351: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2049 .loc 2 3463 3 view .LVU575 +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2050 .loc 2 3463 21 is_stmt 0 view .LVU576 + 2051 0000 104B ldr r3, .L179 + 2052 0002 5B68 ldr r3, [r3, #4] +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2053 .loc 2 3463 10 view .LVU577 + 2054 0004 03F48003 and r3, r3, #4194304 + 2055 .LVL169: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2056 .loc 2 3463 10 view .LVU578 + ARM GAS /tmp/ccTMI75D.s page 143 + + + 2057 .LBE351: + 2058 .LBE350: +1394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (pllsource) + 2059 .loc 1 1395 3 is_stmt 1 view .LVU579 + 2060 0008 CBB9 cbnz r3, .L178 +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLSAI clock source */ +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; + 2061 .loc 1 1398 20 is_stmt 0 view .LVU580 + 2062 000a 0F48 ldr r0, .L179+4 + 2063 .L177: + 2064 .LVL170: +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLSAI clock source */ +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSE_VALUE; +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PLLSAI_SAI_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + 2065 .loc 1 1409 3 is_stmt 1 view .LVU581 + 2066 .LBB352: + 2067 .LBI352: +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2068 .loc 2 3601 26 view .LVU582 + 2069 .LBB353: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2070 .loc 2 3603 3 view .LVU583 +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2071 .loc 2 3603 21 is_stmt 0 view .LVU584 + 2072 000c 0D4A ldr r2, .L179 + 2073 000e 5368 ldr r3, [r2, #4] + 2074 .LVL171: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2075 .loc 2 3603 10 view .LVU585 + 2076 0010 03F03F03 and r3, r3, #63 + 2077 .LBE353: + 2078 .LBE352: + 2079 .loc 1 1409 10 view .LVU586 + 2080 0014 B0FBF3F0 udiv r0, r0, r3 + 2081 .LVL172: + 2082 .LBB354: + 2083 .LBI354: +4182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLLSAI used for SAI1 and SAI2 domain clock +4186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +4187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +4188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLQ can be written only when PLLSAI is disabled +4189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for SAI1 and SAI2 +4190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI_ConfigDomain_SAI\n +4191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLLSAI_ConfigDomain_SAI\n + ARM GAS /tmp/ccTMI75D.s page 144 + + +4192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLSAICFGR PLLSAIN LL_RCC_PLLSAI_ConfigDomain_SAI\n +4193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLSAICFGR PLLSAIQ LL_RCC_PLLSAI_ConfigDomain_SAI\n +4194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR1 PLLSAIDIVQ LL_RCC_PLLSAI_ConfigDomain_SAI +4195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +4196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +4197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +4198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +4199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +4200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +4201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +4202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +4203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +4204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +4205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +4206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +4207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +4208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +4209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +4210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +4211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +4212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +4213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +4214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +4215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +4216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +4217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +4218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +4219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +4220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +4221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +4222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +4223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +4224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +4225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +4226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +4227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +4228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +4229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +4230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +4231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +4232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +4233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +4234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +4235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +4236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +4237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +4238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +4239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +4240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +4241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +4242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +4243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +4244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +4245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +4246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +4247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +4248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 + ARM GAS /tmp/ccTMI75D.s page 145 + + +4249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +4250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +4251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +4252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +4253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +4254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +4255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +4256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +4257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +4258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +4259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +4260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +4261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +4262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLQ This parameter can be one of the following values: +4263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_2 +4264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_3 +4265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_4 +4266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_5 +4267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_6 +4268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_7 +4269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_8 +4270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_9 +4271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_10 +4272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_11 +4273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_12 +4274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_13 +4275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_14 +4276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_15 +4277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLDIVQ This parameter can be one of the following values: +4278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_1 +4279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_2 +4280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_3 +4281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_4 +4282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_5 +4283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_6 +4284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_7 +4285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_8 +4286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_9 +4287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_10 +4288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_11 +4289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_12 +4290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_13 +4291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_14 +4292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_15 +4293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_16 +4294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_17 +4295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_18 +4296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_19 +4297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_20 +4298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_21 +4299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_22 +4300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_23 +4301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_24 +4302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_25 +4303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_26 +4304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_27 +4305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_28 + ARM GAS /tmp/ccTMI75D.s page 146 + + +4306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_29 +4307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_30 +4308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_31 +4309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_32 +4310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +4311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLSAI_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, +4313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); +4315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIN | RCC_PLLSAICFGR_PLLSAIQ, PLLN << RCC_PLLSAICF +4316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVQ, PLLDIVQ); +4317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLLSAI used for 48Mhz domain clock +4321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +4322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +4323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLP can be written only when PLLSAI is disabled +4324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for USB, RNG, SDMMC1 +4325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI_ConfigDomain_48M\n +4326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLLSAI_ConfigDomain_48M\n +4327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLSAICFGR PLLSAIN LL_RCC_PLLSAI_ConfigDomain_48M\n +4328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLSAICFGR PLLSAIP LL_RCC_PLLSAI_ConfigDomain_48M +4329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +4330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +4331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +4332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +4333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +4334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +4335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +4336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +4337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +4338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +4339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +4340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +4341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +4342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +4343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +4344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +4345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +4346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +4347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +4348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +4349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +4350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +4351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +4352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +4353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +4354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +4355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +4356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +4357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +4358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +4359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +4360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +4361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +4362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 + ARM GAS /tmp/ccTMI75D.s page 147 + + +4363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +4364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +4365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +4366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +4367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +4368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +4369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +4370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +4371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +4372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +4373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +4374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +4375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +4376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +4377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +4378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +4379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +4380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +4381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +4382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +4383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +4384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +4385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +4386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +4387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +4388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +4389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +4390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +4391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +4392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +4393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +4394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +4395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +4396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLP This parameter can be one of the following values: +4397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_2 +4398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_4 +4399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_6 +4400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_8 +4401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +4402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLSAI_ConfigDomain_48M(uint32_t Source, uint32_t PLLM, uint32_t PLLN, +4404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); +4406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIN | RCC_PLLSAICFGR_PLLSAIP, PLLN << RCC_PLLSAICF +4407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(LTDC) +4410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLLSAI used for LTDC domain clock +4412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +4413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +4414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLR can be written only when PLLSAI is disabled +4415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for LTDC +4416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI_ConfigDomain_LTDC\n +4417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLLSAI_ConfigDomain_LTDC\n +4418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLSAICFGR PLLSAIN LL_RCC_PLLSAI_ConfigDomain_LTDC\n +4419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLSAICFGR PLLSAIR LL_RCC_PLLSAI_ConfigDomain_LTDC\n + ARM GAS /tmp/ccTMI75D.s page 148 + + +4420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR1 PLLSAIDIVR LL_RCC_PLLSAI_ConfigDomain_LTDC +4421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +4422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +4423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +4424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +4425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +4426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +4427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +4428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +4429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +4430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +4431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +4432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +4433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +4434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +4435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +4436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +4437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +4438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +4439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +4440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +4441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +4442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +4443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +4444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +4445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +4446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +4447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +4448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +4449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +4450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +4451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +4452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +4453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +4454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +4455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +4456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +4457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +4458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +4459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +4460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +4461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +4462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +4463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +4464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +4465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +4466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +4467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +4468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +4469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +4470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +4471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +4472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +4473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +4474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +4475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +4476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 + ARM GAS /tmp/ccTMI75D.s page 149 + + +4477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +4478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +4479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +4480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +4481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +4482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +4483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +4484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +4485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +4486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +4487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +4488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLR This parameter can be one of the following values: +4489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_2 +4490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_3 +4491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_4 +4492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_5 +4493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_6 +4494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_7 +4495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLDIVR This parameter can be one of the following values: +4496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_2 +4497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_4 +4498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_8 +4499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_16 +4500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +4501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLSAI_ConfigDomain_LTDC(uint32_t Source, uint32_t PLLM, uint32_t PLLN, +4503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); +4505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIN | RCC_PLLSAICFGR_PLLSAIR, PLLN << RCC_PLLSAICF +4506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVR, PLLDIVR); +4507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* LTDC */ +4509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get SAIPLL multiplication factor for VCO +4512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLSAICFGR PLLSAIN LL_RCC_PLLSAI_GetN +4513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between 50 and 432 +4514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetN(void) + 2084 .loc 2 4515 26 is_stmt 1 view .LVU587 + 2085 .LBB355: +4516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIN) >> RCC_PLLSAICFGR_PLLSAIN_Pos + 2086 .loc 2 4517 3 view .LVU588 + 2087 .loc 2 4517 21 is_stmt 0 view .LVU589 + 2088 0018 D2F88830 ldr r3, [r2, #136] + 2089 .loc 2 4517 10 view .LVU590 + 2090 001c C3F38813 ubfx r3, r3, #6, #9 + 2091 .LBE355: + 2092 .LBE354: + 2093 .loc 1 1409 10 view .LVU591 + 2094 0020 03FB00F0 mul r0, r3, r0 + 2095 .LBB356: + 2096 .LBI356: +4518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + ARM GAS /tmp/ccTMI75D.s page 150 + + +4521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get SAIPLL division factor for PLLSAIQ +4522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLSAICFGR PLLSAIQ LL_RCC_PLLSAI_GetQ +4523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_2 +4525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_3 +4526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_4 +4527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_5 +4528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_6 +4529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_7 +4530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_8 +4531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_9 +4532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_10 +4533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_11 +4534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_12 +4535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_13 +4536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_14 +4537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_15 +4538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetQ(void) + 2097 .loc 2 4539 26 is_stmt 1 view .LVU592 + 2098 .LBB357: +4540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIQ)); + 2099 .loc 2 4541 3 view .LVU593 + 2100 .loc 2 4541 21 is_stmt 0 view .LVU594 + 2101 0024 D2F88830 ldr r3, [r2, #136] + 2102 .LBE357: + 2103 .LBE356: + 2104 .loc 1 1409 10 view .LVU595 + 2105 0028 C3F30363 ubfx r3, r3, #24, #4 + 2106 .LBB358: + 2107 .LBI358: +4542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLSAICFGR_PLLSAIR) +4545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get SAIPLL division factor for PLLSAIR +4547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for PLLSAICLK (SAI clock) +4548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLSAICFGR PLLSAIR LL_RCC_PLLSAI_GetR +4549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_2 +4551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_3 +4552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_4 +4553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_5 +4554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_6 +4555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_7 +4556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetR(void) +4558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIR)); +4560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLSAICFGR_PLLSAIR */ +4562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get SAIPLL division factor for PLLSAIP +4565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for PLL48MCLK (48M domain clock) +4566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLSAICFGR PLLSAIP LL_RCC_PLLSAI_GetP + ARM GAS /tmp/ccTMI75D.s page 151 + + +4567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_2 +4569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_4 +4570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_6 +4571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_8 +4572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetP(void) +4574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLSAICFGR, RCC_PLLSAICFGR_PLLSAIP)); +4576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get SAIPLL division factor for PLLSAIDIVQ +4580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used PLLSAI1CLK, PLLSAI2CLK selected (SAI1 and SAI2 clock) +4581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 PLLSAIDIVQ LL_RCC_PLLSAI_GetDIVQ +4582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_1 +4584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_2 +4585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_3 +4586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_4 +4587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_5 +4588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_6 +4589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_7 +4590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_8 +4591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_9 +4592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_10 +4593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_11 +4594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_12 +4595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_13 +4596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_14 +4597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_15 +4598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_16 +4599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_17 +4600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_18 +4601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_19 +4602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_20 +4603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_21 +4604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_22 +4605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_23 +4606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_24 +4607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_25 +4608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_26 +4609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_27 +4610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_28 +4611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_29 +4612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_30 +4613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_31 +4614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_32 +4615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetDIVQ(void) + 2108 .loc 2 4616 26 is_stmt 1 view .LVU596 + 2109 .LBB359: +4617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVQ)); + 2110 .loc 2 4618 3 view .LVU597 + 2111 .loc 2 4618 21 is_stmt 0 view .LVU598 + 2112 002c D2F88C20 ldr r2, [r2, #140] + ARM GAS /tmp/ccTMI75D.s page 152 + + + 2113 .LBE359: + 2114 .LBE358: + 2115 .loc 1 1409 10 view .LVU599 + 2116 0030 C2F30422 ubfx r2, r2, #8, #5 + 2117 0034 02FB0333 mla r3, r2, r3, r3 +1410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_PLLSAI_GetN(), LL_RCC_PLLSAI_GetQ(), LL_RCC_PLLSAI_G +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2118 .loc 1 1411 1 view .LVU600 + 2119 0038 B0FBF3F0 udiv r0, r0, r3 + 2120 003c 7047 bx lr + 2121 .LVL173: + 2122 .L178: +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 2123 .loc 1 1402 20 view .LVU601 + 2124 003e 0348 ldr r0, .L179+8 + 2125 0040 E4E7 b .L177 + 2126 .L180: + 2127 0042 00BF .align 2 + 2128 .L179: + 2129 0044 00380240 .word 1073887232 + 2130 0048 0024F400 .word 16000000 + 2131 004c 40787D01 .word 25000000 + 2132 .cfi_endproc + 2133 .LFE317: + 2135 .section .text.RCC_PLLSAI_GetFreqDomain_48M,"ax",%progbits + 2136 .align 1 + 2137 .global RCC_PLLSAI_GetFreqDomain_48M + 2138 .syntax unified + 2139 .thumb + 2140 .thumb_func + 2141 .fpu fpv5-d16 + 2143 RCC_PLLSAI_GetFreqDomain_48M: + 2144 .LFB318: +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PLLSAI clock frequency used for 48Mhz domain +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PLLSAI clock frequency (in Hz) +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLSAI_GetFreqDomain_48M(void) +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2145 .loc 1 1418 1 is_stmt 1 view -0 + 2146 .cfi_startproc + 2147 @ args = 0, pretend = 0, frame = 0 + 2148 @ frame_needed = 0, uses_anonymous_args = 0 + 2149 @ link register save eliminated. +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t pllinputfreq = 0U, pllsource = 0U; + 2150 .loc 1 1419 3 view .LVU603 + 2151 .LVL174: +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PLLSAI_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLSAIN +1422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** 48M Domain clock = PLLSAI_VCO / PLLSAIP +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllsource = LL_RCC_PLL_GetMainSource(); + 2152 .loc 1 1424 3 view .LVU604 + 2153 .LBB360: + 2154 .LBI360: +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + ARM GAS /tmp/ccTMI75D.s page 153 + + + 2155 .loc 2 3461 26 view .LVU605 + 2156 .LBB361: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2157 .loc 2 3463 3 view .LVU606 +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2158 .loc 2 3463 21 is_stmt 0 view .LVU607 + 2159 0000 0E4B ldr r3, .L184 + 2160 0002 5B68 ldr r3, [r3, #4] +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2161 .loc 2 3463 10 view .LVU608 + 2162 0004 03F48003 and r3, r3, #4194304 + 2163 .LVL175: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2164 .loc 2 3463 10 view .LVU609 + 2165 .LBE361: + 2166 .LBE360: +1425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (pllsource) + 2167 .loc 1 1426 3 is_stmt 1 view .LVU610 + 2168 0008 ABB9 cbnz r3, .L183 +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLSAI clock source */ +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; + 2169 .loc 1 1429 20 is_stmt 0 view .LVU611 + 2170 000a 0D48 ldr r0, .L184+4 + 2171 .L182: + 2172 .LVL176: +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLSAI clock source */ +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSE_VALUE; +1434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PLLSAI_48M_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + 2173 .loc 1 1440 3 is_stmt 1 view .LVU612 + 2174 .LBB362: + 2175 .LBI362: +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2176 .loc 2 3601 26 view .LVU613 + 2177 .LBB363: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2178 .loc 2 3603 3 view .LVU614 +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2179 .loc 2 3603 21 is_stmt 0 view .LVU615 + 2180 000c 0B4B ldr r3, .L184 + 2181 .LVL177: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2182 .loc 2 3603 21 view .LVU616 + 2183 000e 5A68 ldr r2, [r3, #4] +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2184 .loc 2 3603 10 view .LVU617 + 2185 0010 02F03F02 and r2, r2, #63 + 2186 .LBE363: + ARM GAS /tmp/ccTMI75D.s page 154 + + + 2187 .LBE362: + 2188 .loc 1 1440 10 view .LVU618 + 2189 0014 B0FBF2F0 udiv r0, r0, r2 + 2190 .LVL178: + 2191 .LBB364: + 2192 .LBI364: +4515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2193 .loc 2 4515 26 is_stmt 1 view .LVU619 + 2194 .LBB365: +4517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2195 .loc 2 4517 3 view .LVU620 +4517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2196 .loc 2 4517 21 is_stmt 0 view .LVU621 + 2197 0018 D3F88820 ldr r2, [r3, #136] +4517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2198 .loc 2 4517 10 view .LVU622 + 2199 001c C2F38812 ubfx r2, r2, #6, #9 + 2200 .LBE365: + 2201 .LBE364: + 2202 .loc 1 1440 10 view .LVU623 + 2203 0020 02FB00F0 mul r0, r2, r0 + 2204 .LBB366: + 2205 .LBI366: +4573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2206 .loc 2 4573 26 is_stmt 1 view .LVU624 + 2207 .LBB367: +4575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2208 .loc 2 4575 3 view .LVU625 +4575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2209 .loc 2 4575 21 is_stmt 0 view .LVU626 + 2210 0024 D3F88830 ldr r3, [r3, #136] + 2211 .LBE367: + 2212 .LBE366: + 2213 .loc 1 1440 10 view .LVU627 + 2214 0028 C3F30143 ubfx r3, r3, #16, #2 + 2215 002c 0133 adds r3, r3, #1 + 2216 002e 5B00 lsls r3, r3, #1 +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_PLLSAI_GetN(), LL_RCC_PLLSAI_GetP()); +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2217 .loc 1 1442 1 view .LVU628 + 2218 0030 B0FBF3F0 udiv r0, r0, r3 + 2219 0034 7047 bx lr + 2220 .LVL179: + 2221 .L183: +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 2222 .loc 1 1433 20 view .LVU629 + 2223 0036 0348 ldr r0, .L184+8 + 2224 0038 E8E7 b .L182 + 2225 .L185: + 2226 003a 00BF .align 2 + 2227 .L184: + 2228 003c 00380240 .word 1073887232 + 2229 0040 0024F400 .word 16000000 + 2230 0044 40787D01 .word 25000000 + 2231 .cfi_endproc + 2232 .LFE318: + 2234 .section .text.LL_RCC_GetSDMMCClockFreq,"ax",%progbits + ARM GAS /tmp/ccTMI75D.s page 155 + + + 2235 .align 1 + 2236 .global LL_RCC_GetSDMMCClockFreq + 2237 .syntax unified + 2238 .thumb + 2239 .thumb_func + 2240 .fpu fpv5-d16 + 2242 LL_RCC_GetSDMMCClockFreq: + 2243 .LVL180: + 2244 .LFB303: + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t sdmmc_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 2245 .loc 1 886 1 is_stmt 1 view -0 + 2246 .cfi_startproc + 2247 @ args = 0, pretend = 0, frame = 0 + 2248 @ frame_needed = 0, uses_anonymous_args = 0 + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t sdmmc_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 2249 .loc 1 886 1 is_stmt 0 view .LVU631 + 2250 0000 08B5 push {r3, lr} + 2251 .LCFI9: + 2252 .cfi_def_cfa_offset 8 + 2253 .cfi_offset 3, -8 + 2254 .cfi_offset 14, -4 + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2255 .loc 1 887 3 is_stmt 1 view .LVU632 + 2256 .LVL181: + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2257 .loc 1 890 3 view .LVU633 + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2258 .loc 1 892 3 view .LVU634 + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2259 .loc 1 892 6 is_stmt 0 view .LVU635 + 2260 0002 B0F1805F cmp r0, #268435456 + 2261 0006 16D0 beq .L194 + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2262 .loc 1 927 6 is_stmt 1 view .LVU636 + 2263 .LVL182: + 2264 .LBB368: + 2265 .LBI368: +2790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2266 .loc 2 2790 26 view .LVU637 + 2267 .LBB369: +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2268 .loc 2 2792 3 view .LVU638 +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2269 .loc 2 2792 21 is_stmt 0 view .LVU639 + 2270 0008 214B ldr r3, .L195 + 2271 000a D3F89030 ldr r3, [r3, #144] + 2272 000e 0340 ands r3, r3, r0 +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2273 .loc 2 2792 10 view .LVU640 + 2274 0010 40EA1340 orr r0, r0, r3, lsr #16 + 2275 .LVL183: +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2276 .loc 2 2792 10 view .LVU641 + 2277 .LBE369: + 2278 .LBE368: + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2279 .loc 1 927 6 view .LVU642 + ARM GAS /tmp/ccTMI75D.s page 156 + + + 2280 0014 B0F1005F cmp r0, #536870912 + 2281 0018 37D1 bne .L191 + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2282 .loc 1 930 10 is_stmt 1 view .LVU643 + 2283 .LVL184: + 2284 .LBB370: + 2285 .LBI370: +2804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2286 .loc 2 2804 26 view .LVU644 + 2287 .LBB371: +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2288 .loc 2 2806 3 view .LVU645 +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2289 .loc 2 2806 21 is_stmt 0 view .LVU646 + 2290 001a 1D4B ldr r3, .L195 + 2291 001c D3F89030 ldr r3, [r3, #144] + 2292 .LVL185: +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2293 .loc 2 2806 21 view .LVU647 + 2294 .LBE371: + 2295 .LBE370: + 2296 0020 13F0006F tst r3, #134217728 + 2297 0024 29D1 bne .L192 + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2298 .loc 1 933 14 is_stmt 1 view .LVU648 + 2299 .LBB372: + 2300 .LBI372: +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2301 .loc 2 3153 26 view .LVU649 + 2302 .LBB373: +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2303 .loc 2 3155 3 view .LVU650 +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2304 .loc 2 3155 11 is_stmt 0 view .LVU651 + 2305 0026 1A4B ldr r3, .L195 + 2306 0028 1868 ldr r0, [r3] + 2307 .LBE373: + 2308 .LBE372: + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2309 .loc 1 933 17 view .LVU652 + 2310 002a 10F00070 ands r0, r0, #33554432 + 2311 002e 2ED0 beq .L186 + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2312 .loc 1 935 16 is_stmt 1 view .LVU653 + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2313 .loc 1 935 34 is_stmt 0 view .LVU654 + 2314 0030 FFF7FEFF bl RCC_PLL_GetFreqDomain_48M + 2315 .LVL186: + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2316 .loc 1 935 34 view .LVU655 + 2317 0034 2BE0 b .L186 + 2318 .LVL187: + 2319 .L194: + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2320 .loc 1 895 5 is_stmt 1 view .LVU656 + 2321 .LBB374: + 2322 .LBI374: + ARM GAS /tmp/ccTMI75D.s page 157 + + +2790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2323 .loc 2 2790 26 view .LVU657 + 2324 .LBB375: +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2325 .loc 2 2792 3 view .LVU658 +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2326 .loc 2 2792 21 is_stmt 0 view .LVU659 + 2327 0036 164B ldr r3, .L195 + 2328 0038 D3F89030 ldr r3, [r3, #144] + 2329 003c 0340 ands r3, r3, r0 +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2330 .loc 2 2792 10 view .LVU660 + 2331 003e 40EA1340 orr r0, r0, r3, lsr #16 + 2332 .LVL188: +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2333 .loc 2 2792 10 view .LVU661 + 2334 .LBE375: + 2335 .LBE374: + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2336 .loc 1 895 5 view .LVU662 + 2337 0042 B0F1805F cmp r0, #268435456 + 2338 0046 15D1 bne .L188 + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2339 .loc 1 898 9 is_stmt 1 view .LVU663 + 2340 .LVL189: + 2341 .LBB376: + 2342 .LBI376: +2804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2343 .loc 2 2804 26 view .LVU664 + 2344 .LBB377: +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2345 .loc 2 2806 3 view .LVU665 +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2346 .loc 2 2806 21 is_stmt 0 view .LVU666 + 2347 0048 114B ldr r3, .L195 + 2348 004a D3F89030 ldr r3, [r3, #144] + 2349 .LVL190: +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2350 .loc 2 2806 21 view .LVU667 + 2351 .LBE377: + 2352 .LBE376: + 2353 004e 13F0006F tst r3, #134217728 + 2354 0052 07D1 bne .L189 + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2355 .loc 1 901 13 is_stmt 1 view .LVU668 + 2356 .LBB378: + 2357 .LBI378: +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2358 .loc 2 3153 26 view .LVU669 + 2359 .LBB379: +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2360 .loc 2 3155 3 view .LVU670 +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2361 .loc 2 3155 11 is_stmt 0 view .LVU671 + 2362 0054 0E4B ldr r3, .L195 + 2363 0056 1868 ldr r0, [r3] + 2364 .LBE379: + ARM GAS /tmp/ccTMI75D.s page 158 + + + 2365 .LBE378: + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2366 .loc 1 901 16 view .LVU672 + 2367 0058 10F00070 ands r0, r0, #33554432 + 2368 005c 17D0 beq .L186 + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2369 .loc 1 903 15 is_stmt 1 view .LVU673 + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2370 .loc 1 903 33 is_stmt 0 view .LVU674 + 2371 005e FFF7FEFF bl RCC_PLL_GetFreqDomain_48M + 2372 .LVL191: + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2373 .loc 1 903 33 view .LVU675 + 2374 0062 14E0 b .L186 + 2375 .LVL192: + 2376 .L189: + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2377 .loc 1 909 13 is_stmt 1 view .LVU676 + 2378 .LBB380: + 2379 .LBI380: +4179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2380 .loc 2 4179 26 view .LVU677 + 2381 .LBB381: +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2382 .loc 2 4181 3 view .LVU678 +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2383 .loc 2 4181 11 is_stmt 0 view .LVU679 + 2384 0064 0A4B ldr r3, .L195 + 2385 0066 1868 ldr r0, [r3] + 2386 .LBE381: + 2387 .LBE380: + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2388 .loc 1 909 16 view .LVU680 + 2389 0068 10F00050 ands r0, r0, #536870912 + 2390 006c 0FD0 beq .L186 + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2391 .loc 1 911 15 is_stmt 1 view .LVU681 + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2392 .loc 1 911 33 is_stmt 0 view .LVU682 + 2393 006e FFF7FEFF bl RCC_PLLSAI_GetFreqDomain_48M + 2394 .LVL193: + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2395 .loc 1 911 33 view .LVU683 + 2396 0072 0CE0 b .L186 + 2397 .LVL194: + 2398 .L188: + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 2399 .loc 1 919 7 is_stmt 1 view .LVU684 + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 2400 .loc 1 919 25 is_stmt 0 view .LVU685 + 2401 0074 FFF7FEFF bl RCC_GetSystemClockFreq + 2402 .LVL195: + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2403 .loc 1 920 7 is_stmt 1 view .LVU686 + 2404 0078 09E0 b .L186 + 2405 .LVL196: + 2406 .L192: + ARM GAS /tmp/ccTMI75D.s page 159 + + + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2407 .loc 1 941 14 view .LVU687 + 2408 .LBB382: + 2409 .LBI382: +4179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2410 .loc 2 4179 26 view .LVU688 + 2411 .LBB383: +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2412 .loc 2 4181 3 view .LVU689 +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2413 .loc 2 4181 11 is_stmt 0 view .LVU690 + 2414 007a 054B ldr r3, .L195 + 2415 007c 1868 ldr r0, [r3] + 2416 .LBE383: + 2417 .LBE382: + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2418 .loc 1 941 17 view .LVU691 + 2419 007e 10F00050 ands r0, r0, #536870912 + 2420 0082 04D0 beq .L186 + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2421 .loc 1 943 16 is_stmt 1 view .LVU692 + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2422 .loc 1 943 34 is_stmt 0 view .LVU693 + 2423 0084 FFF7FEFF bl RCC_PLLSAI_GetFreqDomain_48M + 2424 .LVL197: + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2425 .loc 1 943 34 view .LVU694 + 2426 0088 01E0 b .L186 + 2427 .LVL198: + 2428 .L191: + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 2429 .loc 1 951 8 is_stmt 1 view .LVU695 + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 2430 .loc 1 951 26 is_stmt 0 view .LVU696 + 2431 008a FFF7FEFF bl RCC_GetSystemClockFreq + 2432 .LVL199: + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2433 .loc 1 952 8 is_stmt 1 view .LVU697 + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2434 .loc 1 957 3 view .LVU698 + 2435 .L186: + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2436 .loc 1 958 1 is_stmt 0 view .LVU699 + 2437 008e 08BD pop {r3, pc} + 2438 .L196: + 2439 .align 2 + 2440 .L195: + 2441 0090 00380240 .word 1073887232 + 2442 .cfi_endproc + 2443 .LFE303: + 2445 .section .text.LL_RCC_GetRNGClockFreq,"ax",%progbits + 2446 .align 1 + 2447 .global LL_RCC_GetRNGClockFreq + 2448 .syntax unified + 2449 .thumb + 2450 .thumb_func + 2451 .fpu fpv5-d16 + ARM GAS /tmp/ccTMI75D.s page 160 + + + 2453 LL_RCC_GetRNGClockFreq: + 2454 .LVL200: + 2455 .LFB304: + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t rng_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 2456 .loc 1 968 1 is_stmt 1 view -0 + 2457 .cfi_startproc + 2458 @ args = 0, pretend = 0, frame = 0 + 2459 @ frame_needed = 0, uses_anonymous_args = 0 + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t rng_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 2460 .loc 1 968 1 is_stmt 0 view .LVU701 + 2461 0000 08B5 push {r3, lr} + 2462 .LCFI10: + 2463 .cfi_def_cfa_offset 8 + 2464 .cfi_offset 3, -8 + 2465 .cfi_offset 14, -4 + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2466 .loc 1 969 3 is_stmt 1 view .LVU702 + 2467 .LVL201: + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2468 .loc 1 972 3 view .LVU703 + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2469 .loc 1 975 3 view .LVU704 + 2470 .LBB384: + 2471 .LBI384: +2818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2472 .loc 2 2818 26 view .LVU705 + 2473 .LBB385: +2820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2474 .loc 2 2820 3 view .LVU706 +2820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2475 .loc 2 2820 21 is_stmt 0 view .LVU707 + 2476 0002 0B4B ldr r3, .L202 + 2477 0004 D3F89030 ldr r3, [r3, #144] + 2478 .LVL202: +2820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2479 .loc 2 2820 21 view .LVU708 + 2480 .LBE385: + 2481 .LBE384: + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2482 .loc 1 975 3 view .LVU709 + 2483 0008 1842 tst r0, r3 + 2484 000a 08D1 bne .L198 + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2485 .loc 1 978 7 is_stmt 1 view .LVU710 + 2486 .LBB386: + 2487 .LBI386: +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2488 .loc 2 3153 26 view .LVU711 + 2489 .LBB387: +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2490 .loc 2 3155 3 view .LVU712 +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2491 .loc 2 3155 11 is_stmt 0 view .LVU713 + 2492 000c 084B ldr r3, .L202 + 2493 000e 1868 ldr r0, [r3] + 2494 .LVL203: +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + ARM GAS /tmp/ccTMI75D.s page 161 + + + 2495 .loc 2 3155 11 view .LVU714 + 2496 .LBE387: + 2497 .LBE386: + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2498 .loc 1 978 10 view .LVU715 + 2499 0010 10F00070 ands r0, r0, #33554432 + 2500 0014 00D1 bne .L201 + 2501 .LVL204: + 2502 .L197: + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2503 .loc 1 994 1 view .LVU716 + 2504 0016 08BD pop {r3, pc} + 2505 .LVL205: + 2506 .L201: + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2507 .loc 1 980 9 is_stmt 1 view .LVU717 + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2508 .loc 1 980 25 is_stmt 0 view .LVU718 + 2509 0018 FFF7FEFF bl RCC_PLL_GetFreqDomain_48M + 2510 .LVL206: + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2511 .loc 1 980 25 view .LVU719 + 2512 001c FBE7 b .L197 + 2513 .LVL207: + 2514 .L198: + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2515 .loc 1 986 7 is_stmt 1 view .LVU720 + 2516 .LBB388: + 2517 .LBI388: +4179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2518 .loc 2 4179 26 view .LVU721 + 2519 .LBB389: +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2520 .loc 2 4181 3 view .LVU722 +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2521 .loc 2 4181 11 is_stmt 0 view .LVU723 + 2522 001e 044B ldr r3, .L202 + 2523 0020 1868 ldr r0, [r3] + 2524 .LVL208: +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2525 .loc 2 4181 11 view .LVU724 + 2526 .LBE389: + 2527 .LBE388: + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2528 .loc 1 986 10 view .LVU725 + 2529 0022 10F00050 ands r0, r0, #536870912 + 2530 0026 F6D0 beq .L197 + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2531 .loc 1 988 9 is_stmt 1 view .LVU726 + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2532 .loc 1 988 25 is_stmt 0 view .LVU727 + 2533 0028 FFF7FEFF bl RCC_PLLSAI_GetFreqDomain_48M + 2534 .LVL209: + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2535 .loc 1 993 3 is_stmt 1 view .LVU728 + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2536 .loc 1 993 10 is_stmt 0 view .LVU729 + ARM GAS /tmp/ccTMI75D.s page 162 + + + 2537 002c F3E7 b .L197 + 2538 .L203: + 2539 002e 00BF .align 2 + 2540 .L202: + 2541 0030 00380240 .word 1073887232 + 2542 .cfi_endproc + 2543 .LFE304: + 2545 .section .text.LL_RCC_GetUSBClockFreq,"ax",%progbits + 2546 .align 1 + 2547 .global LL_RCC_GetUSBClockFreq + 2548 .syntax unified + 2549 .thumb + 2550 .thumb_func + 2551 .fpu fpv5-d16 + 2553 LL_RCC_GetUSBClockFreq: + 2554 .LVL210: + 2555 .LFB306: +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t usb_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 2556 .loc 1 1041 1 is_stmt 1 view -0 + 2557 .cfi_startproc + 2558 @ args = 0, pretend = 0, frame = 0 + 2559 @ frame_needed = 0, uses_anonymous_args = 0 +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t usb_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 2560 .loc 1 1041 1 is_stmt 0 view .LVU731 + 2561 0000 08B5 push {r3, lr} + 2562 .LCFI11: + 2563 .cfi_def_cfa_offset 8 + 2564 .cfi_offset 3, -8 + 2565 .cfi_offset 14, -4 +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2566 .loc 1 1042 3 is_stmt 1 view .LVU732 + 2567 .LVL211: +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2568 .loc 1 1045 3 view .LVU733 +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2569 .loc 1 1048 3 view .LVU734 + 2570 .LBB390: + 2571 .LBI390: +2832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2572 .loc 2 2832 26 view .LVU735 + 2573 .LBB391: +2834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2574 .loc 2 2834 3 view .LVU736 +2834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2575 .loc 2 2834 21 is_stmt 0 view .LVU737 + 2576 0002 0B4B ldr r3, .L209 + 2577 0004 D3F89030 ldr r3, [r3, #144] + 2578 .LVL212: +2834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2579 .loc 2 2834 21 view .LVU738 + 2580 .LBE391: + 2581 .LBE390: +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2582 .loc 1 1048 3 view .LVU739 + 2583 0008 1842 tst r0, r3 + 2584 000a 08D1 bne .L205 +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + ARM GAS /tmp/ccTMI75D.s page 163 + + + 2585 .loc 1 1051 7 is_stmt 1 view .LVU740 + 2586 .LBB392: + 2587 .LBI392: +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2588 .loc 2 3153 26 view .LVU741 + 2589 .LBB393: +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2590 .loc 2 3155 3 view .LVU742 +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2591 .loc 2 3155 11 is_stmt 0 view .LVU743 + 2592 000c 084B ldr r3, .L209 + 2593 000e 1868 ldr r0, [r3] + 2594 .LVL213: +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2595 .loc 2 3155 11 view .LVU744 + 2596 .LBE393: + 2597 .LBE392: +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2598 .loc 1 1051 10 view .LVU745 + 2599 0010 10F00070 ands r0, r0, #33554432 + 2600 0014 00D1 bne .L208 + 2601 .LVL214: + 2602 .L204: +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2603 .loc 1 1067 1 view .LVU746 + 2604 0016 08BD pop {r3, pc} + 2605 .LVL215: + 2606 .L208: +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2607 .loc 1 1053 9 is_stmt 1 view .LVU747 +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2608 .loc 1 1053 25 is_stmt 0 view .LVU748 + 2609 0018 FFF7FEFF bl RCC_PLL_GetFreqDomain_48M + 2610 .LVL216: +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2611 .loc 1 1053 25 view .LVU749 + 2612 001c FBE7 b .L204 + 2613 .LVL217: + 2614 .L205: +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2615 .loc 1 1059 7 is_stmt 1 view .LVU750 + 2616 .LBB394: + 2617 .LBI394: +4179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2618 .loc 2 4179 26 view .LVU751 + 2619 .LBB395: +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2620 .loc 2 4181 3 view .LVU752 +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2621 .loc 2 4181 11 is_stmt 0 view .LVU753 + 2622 001e 044B ldr r3, .L209 + 2623 0020 1868 ldr r0, [r3] + 2624 .LVL218: +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2625 .loc 2 4181 11 view .LVU754 + 2626 .LBE395: + 2627 .LBE394: + ARM GAS /tmp/ccTMI75D.s page 164 + + +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2628 .loc 1 1059 10 view .LVU755 + 2629 0022 10F00050 ands r0, r0, #536870912 + 2630 0026 F6D0 beq .L204 +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2631 .loc 1 1061 9 is_stmt 1 view .LVU756 +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2632 .loc 1 1061 25 is_stmt 0 view .LVU757 + 2633 0028 FFF7FEFF bl RCC_PLLSAI_GetFreqDomain_48M + 2634 .LVL219: +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2635 .loc 1 1066 3 is_stmt 1 view .LVU758 +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2636 .loc 1 1066 10 is_stmt 0 view .LVU759 + 2637 002c F3E7 b .L204 + 2638 .L210: + 2639 002e 00BF .align 2 + 2640 .L209: + 2641 0030 00380240 .word 1073887232 + 2642 .cfi_endproc + 2643 .LFE306: + 2645 .section .text.RCC_PLLSAI_GetFreqDomain_LTDC,"ax",%progbits + 2646 .align 1 + 2647 .global RCC_PLLSAI_GetFreqDomain_LTDC + 2648 .syntax unified + 2649 .thumb + 2650 .thumb_func + 2651 .fpu fpv5-d16 + 2653 RCC_PLLSAI_GetFreqDomain_LTDC: + 2654 .LFB319: +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(LTDC) +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PLLSAI clock frequency used for LTDC domain +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PLLSAI clock frequency (in Hz) +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLSAI_GetFreqDomain_LTDC(void) +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2655 .loc 1 1450 1 is_stmt 1 view -0 + 2656 .cfi_startproc + 2657 @ args = 0, pretend = 0, frame = 0 + 2658 @ frame_needed = 0, uses_anonymous_args = 0 + 2659 @ link register save eliminated. +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t pllinputfreq = 0U, pllsource = 0U; + 2660 .loc 1 1451 3 view .LVU761 + 2661 .LVL220: +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PLLSAI_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLSAIN +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LTDC Domain clock = (PLLSAI_VCO / PLLSAIR) / PLLSAIDIVR +1455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllsource = LL_RCC_PLL_GetMainSource(); + 2662 .loc 1 1456 3 view .LVU762 + 2663 .LBB396: + 2664 .LBI396: +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2665 .loc 2 3461 26 view .LVU763 + 2666 .LBB397: + ARM GAS /tmp/ccTMI75D.s page 165 + + +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2667 .loc 2 3463 3 view .LVU764 +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2668 .loc 2 3463 21 is_stmt 0 view .LVU765 + 2669 0000 114B ldr r3, .L214 + 2670 0002 5B68 ldr r3, [r3, #4] +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2671 .loc 2 3463 10 view .LVU766 + 2672 0004 03F48003 and r3, r3, #4194304 + 2673 .LVL221: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2674 .loc 2 3463 10 view .LVU767 + 2675 .LBE397: + 2676 .LBE396: +1457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (pllsource) + 2677 .loc 1 1458 3 is_stmt 1 view .LVU768 + 2678 0008 DBB9 cbnz r3, .L213 +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLSAI clock source */ +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; + 2679 .loc 1 1461 20 is_stmt 0 view .LVU769 + 2680 000a 1048 ldr r0, .L214+4 + 2681 .L212: + 2682 .LVL222: +1462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLSAI clock source */ +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSE_VALUE; +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PLLSAI_LTDC_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + 2683 .loc 1 1472 3 is_stmt 1 view .LVU770 + 2684 .LBB398: + 2685 .LBI398: +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2686 .loc 2 3601 26 view .LVU771 + 2687 .LBB399: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2688 .loc 2 3603 3 view .LVU772 +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2689 .loc 2 3603 21 is_stmt 0 view .LVU773 + 2690 000c 0E4A ldr r2, .L214 + 2691 000e 5368 ldr r3, [r2, #4] + 2692 .LVL223: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2693 .loc 2 3603 10 view .LVU774 + 2694 0010 03F03F03 and r3, r3, #63 + 2695 .LBE399: + 2696 .LBE398: + 2697 .loc 1 1472 10 view .LVU775 + 2698 0014 B0FBF3F0 udiv r0, r0, r3 + 2699 .LVL224: + ARM GAS /tmp/ccTMI75D.s page 166 + + + 2700 .LBB400: + 2701 .LBI400: +4515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2702 .loc 2 4515 26 is_stmt 1 view .LVU776 + 2703 .LBB401: +4517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2704 .loc 2 4517 3 view .LVU777 +4517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2705 .loc 2 4517 21 is_stmt 0 view .LVU778 + 2706 0018 D2F88830 ldr r3, [r2, #136] +4517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2707 .loc 2 4517 10 view .LVU779 + 2708 001c C3F38813 ubfx r3, r3, #6, #9 + 2709 .LBE401: + 2710 .LBE400: + 2711 .loc 1 1472 10 view .LVU780 + 2712 0020 03FB00F0 mul r0, r3, r0 + 2713 .LBB402: + 2714 .LBI402: +4557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2715 .loc 2 4557 26 is_stmt 1 view .LVU781 + 2716 .LBB403: +4559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2717 .loc 2 4559 3 view .LVU782 +4559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2718 .loc 2 4559 21 is_stmt 0 view .LVU783 + 2719 0024 D2F88830 ldr r3, [r2, #136] + 2720 .LBE403: + 2721 .LBE402: + 2722 .loc 1 1472 10 view .LVU784 + 2723 0028 C3F30273 ubfx r3, r3, #28, #3 + 2724 .LBB404: + 2725 .LBI404: +4619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_DCKCFGR1_PLLSAIDIVR) +4622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get SAIPLL division factor for PLLSAIDIVR +4624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for LTDC domain clock +4625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 PLLSAIDIVR LL_RCC_PLLSAI_GetDIVR +4626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_2 +4628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_4 +4629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_8 +4630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_16 +4631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLSAI_GetDIVR(void) + 2726 .loc 2 4632 26 is_stmt 1 view .LVU785 + 2727 .LBB405: +4633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLSAIDIVR)); + 2728 .loc 2 4634 3 view .LVU786 + 2729 .loc 2 4634 21 is_stmt 0 view .LVU787 + 2730 002c D2F88C20 ldr r2, [r2, #140] + 2731 .LBE405: + 2732 .LBE404: + 2733 .loc 1 1472 10 view .LVU788 + ARM GAS /tmp/ccTMI75D.s page 167 + + + 2734 0030 C2F30142 ubfx r2, r2, #16, #2 + 2735 0034 0649 ldr r1, .L214+8 + 2736 0036 8A5C ldrb r2, [r1, r2] @ zero_extendqisi2 + 2737 0038 02FB03F3 mul r3, r2, r3 +1473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_PLLSAI_GetN(), LL_RCC_PLLSAI_GetR(), LL_RCC_PLLSAI_G +1474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2738 .loc 1 1474 1 view .LVU789 + 2739 003c B0FBF3F0 udiv r0, r0, r3 + 2740 0040 7047 bx lr + 2741 .LVL225: + 2742 .L213: +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 2743 .loc 1 1465 20 view .LVU790 + 2744 0042 0448 ldr r0, .L214+12 + 2745 0044 E2E7 b .L212 + 2746 .L215: + 2747 0046 00BF .align 2 + 2748 .L214: + 2749 0048 00380240 .word 1073887232 + 2750 004c 0024F400 .word 16000000 + 2751 0050 00000000 .word .LANCHOR0 + 2752 0054 40787D01 .word 25000000 + 2753 .cfi_endproc + 2754 .LFE319: + 2756 .section .text.LL_RCC_GetLTDCClockFreq,"ax",%progbits + 2757 .align 1 + 2758 .global LL_RCC_GetLTDCClockFreq + 2759 .syntax unified + 2760 .thumb + 2761 .thumb_func + 2762 .fpu fpv5-d16 + 2764 LL_RCC_GetLTDCClockFreq: + 2765 .LVL226: + 2766 .LFB309: +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t ltdc_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 2767 .loc 1 1175 1 is_stmt 1 view -0 + 2768 .cfi_startproc + 2769 @ args = 0, pretend = 0, frame = 0 + 2770 @ frame_needed = 0, uses_anonymous_args = 0 +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t ltdc_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 2771 .loc 1 1175 1 is_stmt 0 view .LVU792 + 2772 0000 08B5 push {r3, lr} + 2773 .LCFI12: + 2774 .cfi_def_cfa_offset 8 + 2775 .cfi_offset 3, -8 + 2776 .cfi_offset 14, -4 +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2777 .loc 1 1176 3 is_stmt 1 view .LVU793 + 2778 .LVL227: +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2779 .loc 1 1179 3 view .LVU794 +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2780 .loc 1 1181 3 view .LVU795 + 2781 .LBB406: + 2782 .LBI406: +4179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2783 .loc 2 4179 26 view .LVU796 + ARM GAS /tmp/ccTMI75D.s page 168 + + + 2784 .LBB407: +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2785 .loc 2 4181 3 view .LVU797 +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2786 .loc 2 4181 11 is_stmt 0 view .LVU798 + 2787 0002 044B ldr r3, .L220 + 2788 0004 1868 ldr r0, [r3] + 2789 .LVL228: +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2790 .loc 2 4181 11 view .LVU799 + 2791 .LBE407: + 2792 .LBE406: +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2793 .loc 1 1181 6 view .LVU800 + 2794 0006 10F00050 ands r0, r0, #536870912 + 2795 000a 00D1 bne .L219 + 2796 .LVL229: + 2797 .L216: +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* LTDC */ + 2798 .loc 1 1187 1 view .LVU801 + 2799 000c 08BD pop {r3, pc} + 2800 .LVL230: + 2801 .L219: +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2802 .loc 1 1183 6 is_stmt 1 view .LVU802 +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2803 .loc 1 1183 23 is_stmt 0 view .LVU803 + 2804 000e FFF7FEFF bl RCC_PLLSAI_GetFreqDomain_LTDC + 2805 .LVL231: +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2806 .loc 1 1186 3 is_stmt 1 view .LVU804 +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2807 .loc 1 1186 10 is_stmt 0 view .LVU805 + 2808 0012 FBE7 b .L216 + 2809 .L221: + 2810 .align 2 + 2811 .L220: + 2812 0014 00380240 .word 1073887232 + 2813 .cfi_endproc + 2814 .LFE309: + 2816 .section .text.RCC_PLLI2S_GetFreqDomain_SAI,"ax",%progbits + 2817 .align 1 + 2818 .global RCC_PLLI2S_GetFreqDomain_SAI + 2819 .syntax unified + 2820 .thumb + 2821 .thumb_func + 2822 .fpu fpv5-d16 + 2824 RCC_PLLI2S_GetFreqDomain_SAI: + 2825 .LFB320: +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* LTDC */ +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PLLI2S clock frequency used for SAI1 and SAI2 domains +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PLLI2S clock frequency (in Hz) +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLI2S_GetFreqDomain_SAI(void) +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + ARM GAS /tmp/ccTMI75D.s page 169 + + + 2826 .loc 1 1482 1 is_stmt 1 view -0 + 2827 .cfi_startproc + 2828 @ args = 0, pretend = 0, frame = 0 + 2829 @ frame_needed = 0, uses_anonymous_args = 0 + 2830 @ link register save eliminated. +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t pllinputfreq = 0U, pllsource = 0U; + 2831 .loc 1 1483 3 view .LVU807 + 2832 .LVL232: +1484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PLLI2S_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLI2SN +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** SAI1 and SAI2 domains clock = (PLLI2S_VCO / PLLI2SQ) / PLLI2SDIVQ +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllsource = LL_RCC_PLL_GetMainSource(); + 2833 .loc 1 1488 3 view .LVU808 + 2834 .LBB408: + 2835 .LBI408: +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2836 .loc 2 3461 26 view .LVU809 + 2837 .LBB409: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2838 .loc 2 3463 3 view .LVU810 +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2839 .loc 2 3463 21 is_stmt 0 view .LVU811 + 2840 0000 104B ldr r3, .L225 + 2841 0002 5B68 ldr r3, [r3, #4] +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2842 .loc 2 3463 10 view .LVU812 + 2843 0004 03F48003 and r3, r3, #4194304 + 2844 .LVL233: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2845 .loc 2 3463 10 view .LVU813 + 2846 .LBE409: + 2847 .LBE408: +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (pllsource) + 2848 .loc 1 1490 3 is_stmt 1 view .LVU814 + 2849 0008 CBB9 cbnz r3, .L224 +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLI2S clock source */ +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; + 2850 .loc 1 1493 20 is_stmt 0 view .LVU815 + 2851 000a 0F48 ldr r0, .L225+4 + 2852 .L223: + 2853 .LVL234: +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLI2S clock source */ +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSE_VALUE; +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PLLI2S_SAI_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + 2854 .loc 1 1504 3 is_stmt 1 view .LVU816 + 2855 .LBB410: + ARM GAS /tmp/ccTMI75D.s page 170 + + + 2856 .LBI410: +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2857 .loc 2 3601 26 view .LVU817 + 2858 .LBB411: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2859 .loc 2 3603 3 view .LVU818 +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2860 .loc 2 3603 21 is_stmt 0 view .LVU819 + 2861 000c 0D4A ldr r2, .L225 + 2862 000e 5368 ldr r3, [r2, #4] + 2863 .LVL235: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2864 .loc 2 3603 10 view .LVU820 + 2865 0010 03F03F03 and r3, r3, #63 + 2866 .LBE411: + 2867 .LBE410: + 2868 .loc 1 1504 10 view .LVU821 + 2869 0014 B0FBF3F0 udiv r0, r0, r3 + 2870 .LVL236: + 2871 .LBB412: + 2872 .LBI412: +4040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2873 .loc 2 4040 26 is_stmt 1 view .LVU822 + 2874 .LBB413: +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2875 .loc 2 4042 3 view .LVU823 +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2876 .loc 2 4042 21 is_stmt 0 view .LVU824 + 2877 0018 D2F88430 ldr r3, [r2, #132] +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2878 .loc 2 4042 10 view .LVU825 + 2879 001c C3F38813 ubfx r3, r3, #6, #9 + 2880 .LBE413: + 2881 .LBE412: + 2882 .loc 1 1504 10 view .LVU826 + 2883 0020 03FB00F0 mul r0, r3, r0 + 2884 .LBB414: + 2885 .LBI414: +4064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2886 .loc 2 4064 26 is_stmt 1 view .LVU827 + 2887 .LBB415: +4066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2888 .loc 2 4066 3 view .LVU828 +4066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2889 .loc 2 4066 21 is_stmt 0 view .LVU829 + 2890 0024 D2F88430 ldr r3, [r2, #132] + 2891 .LBE415: + 2892 .LBE414: + 2893 .loc 1 1504 10 view .LVU830 + 2894 0028 C3F30363 ubfx r3, r3, #24, #4 + 2895 .LBB416: + 2896 .LBI416: +4141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2897 .loc 2 4141 26 is_stmt 1 view .LVU831 + 2898 .LBB417: +4143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2899 .loc 2 4143 3 view .LVU832 + ARM GAS /tmp/ccTMI75D.s page 171 + + +4143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2900 .loc 2 4143 21 is_stmt 0 view .LVU833 + 2901 002c D2F88C20 ldr r2, [r2, #140] +4143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2902 .loc 2 4143 10 view .LVU834 + 2903 0030 02F01F02 and r2, r2, #31 + 2904 .LBE417: + 2905 .LBE416: + 2906 .loc 1 1504 10 view .LVU835 + 2907 0034 02FB0333 mla r3, r2, r3, r3 +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetQ(), LL_RCC_PLLI2S_G +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 2908 .loc 1 1506 1 view .LVU836 + 2909 0038 B0FBF3F0 udiv r0, r0, r3 + 2910 003c 7047 bx lr + 2911 .LVL237: + 2912 .L224: +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 2913 .loc 1 1497 20 view .LVU837 + 2914 003e 0348 ldr r0, .L225+8 + 2915 0040 E4E7 b .L223 + 2916 .L226: + 2917 0042 00BF .align 2 + 2918 .L225: + 2919 0044 00380240 .word 1073887232 + 2920 0048 0024F400 .word 16000000 + 2921 004c 40787D01 .word 25000000 + 2922 .cfi_endproc + 2923 .LFE320: + 2925 .section .text.LL_RCC_GetSAIClockFreq,"ax",%progbits + 2926 .align 1 + 2927 .global LL_RCC_GetSAIClockFreq + 2928 .syntax unified + 2929 .thumb + 2930 .thumb_func + 2931 .fpu fpv5-d16 + 2933 LL_RCC_GetSAIClockFreq: + 2934 .LVL238: + 2935 .LFB302: + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t sai_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 2936 .loc 1 766 1 is_stmt 1 view -0 + 2937 .cfi_startproc + 2938 @ args = 0, pretend = 0, frame = 0 + 2939 @ frame_needed = 0, uses_anonymous_args = 0 + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t sai_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 2940 .loc 1 766 1 is_stmt 0 view .LVU839 + 2941 0000 08B5 push {r3, lr} + 2942 .LCFI13: + 2943 .cfi_def_cfa_offset 8 + 2944 .cfi_offset 3, -8 + 2945 .cfi_offset 14, -4 + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2946 .loc 1 767 3 is_stmt 1 view .LVU840 + 2947 .LVL239: + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2948 .loc 1 770 3 view .LVU841 + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + ARM GAS /tmp/ccTMI75D.s page 172 + + + 2949 .loc 1 772 3 view .LVU842 + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2950 .loc 1 772 6 is_stmt 0 view .LVU843 + 2951 0002 B0F5401F cmp r0, #3145728 + 2952 0006 04D0 beq .L248 + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2953 .loc 1 822 5 is_stmt 1 view .LVU844 + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2954 .loc 1 822 8 is_stmt 0 view .LVU845 + 2955 0008 B0F5400F cmp r0, #12582912 + 2956 000c 3BD0 beq .L249 + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2957 .loc 1 767 12 view .LVU846 + 2958 000e 0020 movs r0, #0 + 2959 .LVL240: + 2960 .L227: + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 2961 .loc 1 873 1 view .LVU847 + 2962 0010 08BD pop {r3, pc} + 2963 .LVL241: + 2964 .L248: + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2965 .loc 1 775 5 is_stmt 1 view .LVU848 + 2966 .LBB418: + 2967 .LBI418: +2770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2968 .loc 2 2770 26 view .LVU849 + 2969 .LBB419: +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2970 .loc 2 2772 3 view .LVU850 +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2971 .loc 2 2772 21 is_stmt 0 view .LVU851 + 2972 0012 3D4B ldr r3, .L254 + 2973 0014 D3F88C30 ldr r3, [r3, #140] + 2974 0018 0340 ands r3, r3, r0 +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2975 .loc 2 2772 10 view .LVU852 + 2976 001a 40EA1340 orr r0, r0, r3, lsr #16 + 2977 .LVL242: +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2978 .loc 2 2772 10 view .LVU853 + 2979 .LBE419: + 2980 .LBE418: + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2981 .loc 1 775 5 view .LVU854 + 2982 001e 3B4B ldr r3, .L254+4 + 2983 0020 9842 cmp r0, r3 + 2984 0022 6AD0 beq .L240 + 2985 0024 0FD8 bhi .L230 + 2986 0026 B0F5401F cmp r0, #3145728 + 2987 002a 1DD0 beq .L231 + 2988 002c 103B subs r3, r3, #16 + 2989 002e 9842 cmp r0, r3 + 2990 0030 07D1 bne .L250 + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 2991 .loc 1 785 9 is_stmt 1 view .LVU855 + 2992 .LBB420: + ARM GAS /tmp/ccTMI75D.s page 173 + + + 2993 .LBI420: +3711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 2994 .loc 2 3711 26 view .LVU856 + 2995 .LBB421: +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2996 .loc 2 3713 3 view .LVU857 +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 2997 .loc 2 3713 11 is_stmt 0 view .LVU858 + 2998 0032 354B ldr r3, .L254 + 2999 0034 1868 ldr r0, [r3] + 3000 .LBE421: + 3001 .LBE420: + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3002 .loc 1 785 12 view .LVU859 + 3003 0036 10F00060 ands r0, r0, #134217728 + 3004 003a E9D0 beq .L227 + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3005 .loc 1 787 11 is_stmt 1 view .LVU860 + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3006 .loc 1 787 27 is_stmt 0 view .LVU861 + 3007 003c FFF7FEFF bl RCC_PLLI2S_GetFreqDomain_SAI + 3008 .LVL243: + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3009 .loc 1 787 27 view .LVU862 + 3010 0040 E6E7 b .L227 + 3011 .LVL244: + 3012 .L250: + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3013 .loc 1 775 5 view .LVU863 + 3014 0042 0020 movs r0, #0 + 3015 0044 E4E7 b .L227 + 3016 .L230: + 3017 0046 B0F1301F cmp r0, #3145776 + 3018 004a 0BD1 bne .L251 + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3019 .loc 1 793 9 is_stmt 1 view .LVU864 + 3020 .LBB422: + 3021 .LBI422: +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3022 .loc 2 3461 26 view .LVU865 + 3023 .LBB423: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3024 .loc 2 3463 3 view .LVU866 +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3025 .loc 2 3463 21 is_stmt 0 view .LVU867 + 3026 004c 2E4B ldr r3, .L254 + 3027 004e 5B68 ldr r3, [r3, #4] + 3028 .LBE423: + 3029 .LBE422: + 3030 0050 13F4800F tst r3, #4194304 + 3031 0054 10D0 beq .L234 + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3032 .loc 1 796 14 is_stmt 1 view .LVU868 + 3033 .LBB424: + 3034 .LBI424: +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3035 .loc 2 1992 26 view .LVU869 + ARM GAS /tmp/ccTMI75D.s page 174 + + + 3036 .LBB425: +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3037 .loc 2 1994 3 view .LVU870 +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3038 .loc 2 1994 11 is_stmt 0 view .LVU871 + 3039 0056 2C4B ldr r3, .L254 + 3040 0058 1868 ldr r0, [r3] + 3041 .LBE425: + 3042 .LBE424: + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3043 .loc 1 796 17 view .LVU872 + 3044 005a 10F40030 ands r0, r0, #131072 + 3045 005e D7D0 beq .L227 + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3046 .loc 1 798 30 view .LVU873 + 3047 0060 2B48 ldr r0, .L254+8 + 3048 0062 D5E7 b .L227 + 3049 .L251: + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3050 .loc 1 775 5 view .LVU874 + 3051 0064 0020 movs r0, #0 + 3052 0066 D3E7 b .L227 + 3053 .L231: + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3054 .loc 1 778 9 is_stmt 1 view .LVU875 + 3055 .LBB426: + 3056 .LBI426: +4179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3057 .loc 2 4179 26 view .LVU876 + 3058 .LBB427: +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3059 .loc 2 4181 3 view .LVU877 +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3060 .loc 2 4181 11 is_stmt 0 view .LVU878 + 3061 0068 274B ldr r3, .L254 + 3062 006a 1868 ldr r0, [r3] + 3063 .LBE427: + 3064 .LBE426: + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3065 .loc 1 778 12 view .LVU879 + 3066 006c 10F00050 ands r0, r0, #536870912 + 3067 0070 CED0 beq .L227 + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3068 .loc 1 780 11 is_stmt 1 view .LVU880 + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3069 .loc 1 780 27 is_stmt 0 view .LVU881 + 3070 0072 FFF7FEFF bl RCC_PLLSAI_GetFreqDomain_SAI + 3071 .LVL245: + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3072 .loc 1 780 27 view .LVU882 + 3073 0076 CBE7 b .L227 + 3074 .LVL246: + 3075 .L234: + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3076 .loc 1 804 14 is_stmt 1 view .LVU883 + 3077 .LBB428: + 3078 .LBI428: + ARM GAS /tmp/ccTMI75D.s page 175 + + +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3079 .loc 2 2030 26 view .LVU884 + 3080 .LBB429: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3081 .loc 2 2032 3 view .LVU885 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3082 .loc 2 2032 11 is_stmt 0 view .LVU886 + 3083 0078 234B ldr r3, .L254 + 3084 007a 1868 ldr r0, [r3] + 3085 .LBE429: + 3086 .LBE428: + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3087 .loc 1 804 17 view .LVU887 + 3088 007c 10F00200 ands r0, r0, #2 + 3089 0080 C6D0 beq .L227 + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3090 .loc 1 806 30 view .LVU888 + 3091 0082 2448 ldr r0, .L254+12 + 3092 0084 C4E7 b .L227 + 3093 .LVL247: + 3094 .L249: + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3095 .loc 1 825 7 is_stmt 1 view .LVU889 + 3096 .LBB430: + 3097 .LBI430: +2770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3098 .loc 2 2770 26 view .LVU890 + 3099 .LBB431: +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3100 .loc 2 2772 3 view .LVU891 +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3101 .loc 2 2772 21 is_stmt 0 view .LVU892 + 3102 0086 204B ldr r3, .L254 + 3103 0088 D3F88C30 ldr r3, [r3, #140] + 3104 008c 0340 ands r3, r3, r0 +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3105 .loc 2 2772 10 view .LVU893 + 3106 008e 40EA1340 orr r0, r0, r3, lsr #16 + 3107 .LVL248: +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3108 .loc 2 2772 10 view .LVU894 + 3109 .LBE431: + 3110 .LBE430: + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3111 .loc 1 825 7 view .LVU895 + 3112 0092 214B ldr r3, .L254+16 + 3113 0094 9842 cmp r0, r3 + 3114 0096 33D0 beq .L244 + 3115 0098 0FD8 bhi .L235 + 3116 009a B0F5400F cmp r0, #12582912 + 3117 009e 1DD0 beq .L236 + 3118 00a0 403B subs r3, r3, #64 + 3119 00a2 9842 cmp r0, r3 + 3120 00a4 07D1 bne .L252 + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3121 .loc 1 835 9 is_stmt 1 view .LVU896 + 3122 .LBB432: + ARM GAS /tmp/ccTMI75D.s page 176 + + + 3123 .LBI432: +3711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3124 .loc 2 3711 26 view .LVU897 + 3125 .LBB433: +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3126 .loc 2 3713 3 view .LVU898 +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3127 .loc 2 3713 11 is_stmt 0 view .LVU899 + 3128 00a6 184B ldr r3, .L254 + 3129 00a8 1868 ldr r0, [r3] + 3130 .LBE433: + 3131 .LBE432: + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3132 .loc 1 835 12 view .LVU900 + 3133 00aa 10F00060 ands r0, r0, #134217728 + 3134 00ae AFD0 beq .L227 + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3135 .loc 1 837 11 is_stmt 1 view .LVU901 + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3136 .loc 1 837 27 is_stmt 0 view .LVU902 + 3137 00b0 FFF7FEFF bl RCC_PLLI2S_GetFreqDomain_SAI + 3138 .LVL249: + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3139 .loc 1 837 27 view .LVU903 + 3140 00b4 ACE7 b .L227 + 3141 .LVL250: + 3142 .L252: + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3143 .loc 1 825 7 view .LVU904 + 3144 00b6 0020 movs r0, #0 + 3145 00b8 AAE7 b .L227 + 3146 .L235: + 3147 00ba B0F1C01F cmp r0, #12583104 + 3148 00be 0BD1 bne .L253 + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3149 .loc 1 843 9 is_stmt 1 view .LVU905 + 3150 .LBB434: + 3151 .LBI434: +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3152 .loc 2 3461 26 view .LVU906 + 3153 .LBB435: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3154 .loc 2 3463 3 view .LVU907 +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3155 .loc 2 3463 21 is_stmt 0 view .LVU908 + 3156 00c0 114B ldr r3, .L254 + 3157 00c2 5B68 ldr r3, [r3, #4] + 3158 .LBE435: + 3159 .LBE434: + 3160 00c4 13F4800F tst r3, #4194304 + 3161 00c8 10D0 beq .L239 + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3162 .loc 1 846 14 is_stmt 1 view .LVU909 + 3163 .LBB436: + 3164 .LBI436: +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3165 .loc 2 1992 26 view .LVU910 + ARM GAS /tmp/ccTMI75D.s page 177 + + + 3166 .LBB437: +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3167 .loc 2 1994 3 view .LVU911 +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3168 .loc 2 1994 11 is_stmt 0 view .LVU912 + 3169 00ca 0F4B ldr r3, .L254 + 3170 00cc 1868 ldr r0, [r3] + 3171 .LBE437: + 3172 .LBE436: + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3173 .loc 1 846 17 view .LVU913 + 3174 00ce 10F40030 ands r0, r0, #131072 + 3175 00d2 9DD0 beq .L227 + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3176 .loc 1 848 30 view .LVU914 + 3177 00d4 0E48 ldr r0, .L254+8 + 3178 00d6 9BE7 b .L227 + 3179 .L253: + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3180 .loc 1 825 7 view .LVU915 + 3181 00d8 0020 movs r0, #0 + 3182 00da 99E7 b .L227 + 3183 .L236: + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3184 .loc 1 828 9 is_stmt 1 view .LVU916 + 3185 .LBB438: + 3186 .LBI438: +4179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3187 .loc 2 4179 26 view .LVU917 + 3188 .LBB439: +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3189 .loc 2 4181 3 view .LVU918 +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3190 .loc 2 4181 11 is_stmt 0 view .LVU919 + 3191 00dc 0A4B ldr r3, .L254 + 3192 00de 1868 ldr r0, [r3] + 3193 .LBE439: + 3194 .LBE438: + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3195 .loc 1 828 12 view .LVU920 + 3196 00e0 10F00050 ands r0, r0, #536870912 + 3197 00e4 94D0 beq .L227 + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3198 .loc 1 830 11 is_stmt 1 view .LVU921 + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3199 .loc 1 830 27 is_stmt 0 view .LVU922 + 3200 00e6 FFF7FEFF bl RCC_PLLSAI_GetFreqDomain_SAI + 3201 .LVL251: + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3202 .loc 1 830 27 view .LVU923 + 3203 00ea 91E7 b .L227 + 3204 .LVL252: + 3205 .L239: + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3206 .loc 1 854 14 is_stmt 1 view .LVU924 + 3207 .LBB440: + 3208 .LBI440: + ARM GAS /tmp/ccTMI75D.s page 178 + + +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3209 .loc 2 2030 26 view .LVU925 + 3210 .LBB441: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3211 .loc 2 2032 3 view .LVU926 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3212 .loc 2 2032 11 is_stmt 0 view .LVU927 + 3213 00ec 064B ldr r3, .L254 + 3214 00ee 1868 ldr r0, [r3] + 3215 .LBE441: + 3216 .LBE440: + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3217 .loc 1 854 17 view .LVU928 + 3218 00f0 10F00200 ands r0, r0, #2 + 3219 00f4 8CD0 beq .L227 + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3220 .loc 1 856 30 view .LVU929 + 3221 00f6 0748 ldr r0, .L254+12 + 3222 .LVL253: + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3223 .loc 1 872 3 is_stmt 1 view .LVU930 + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3224 .loc 1 872 10 is_stmt 0 view .LVU931 + 3225 00f8 8AE7 b .L227 + 3226 .LVL254: + 3227 .L240: + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3228 .loc 1 813 23 view .LVU932 + 3229 00fa 4BF68030 movw r0, #48000 + 3230 00fe 87E7 b .L227 + 3231 .L244: + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3232 .loc 1 863 25 view .LVU933 + 3233 0100 4BF68030 movw r0, #48000 + 3234 0104 84E7 b .L227 + 3235 .L255: + 3236 0106 00BF .align 2 + 3237 .L254: + 3238 0108 00380240 .word 1073887232 + 3239 010c 20003000 .word 3145760 + 3240 0110 40787D01 .word 25000000 + 3241 0114 0024F400 .word 16000000 + 3242 0118 8000C000 .word 12583040 + 3243 .cfi_endproc + 3244 .LFE302: + 3246 .section .text.LL_RCC_GetDFSDMAudioClockFreq,"ax",%progbits + 3247 .align 1 + 3248 .global LL_RCC_GetDFSDMAudioClockFreq + 3249 .syntax unified + 3250 .thumb + 3251 .thumb_func + 3252 .fpu fpv5-d16 + 3254 LL_RCC_GetDFSDMAudioClockFreq: + 3255 .LVL255: + 3256 .LFB308: +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t dfsdm_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 3257 .loc 1 1107 1 is_stmt 1 view -0 + ARM GAS /tmp/ccTMI75D.s page 179 + + + 3258 .cfi_startproc + 3259 @ args = 0, pretend = 0, frame = 0 + 3260 @ frame_needed = 0, uses_anonymous_args = 0 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t dfsdm_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 3261 .loc 1 1107 1 is_stmt 0 view .LVU935 + 3262 0000 08B5 push {r3, lr} + 3263 .LCFI14: + 3264 .cfi_def_cfa_offset 8 + 3265 .cfi_offset 3, -8 + 3266 .cfi_offset 14, -4 +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 3267 .loc 1 1108 3 is_stmt 1 view .LVU936 + 3268 .LVL256: +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 3269 .loc 1 1111 3 view .LVU937 +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3270 .loc 1 1114 3 view .LVU938 + 3271 .LBB442: + 3272 .LBI442: +2877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3273 .loc 2 2877 26 view .LVU939 + 3274 .LBB443: +2879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3275 .loc 2 2879 3 view .LVU940 +2879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3276 .loc 2 2879 21 is_stmt 0 view .LVU941 + 3277 0002 074B ldr r3, .L260 + 3278 0004 D3F88C30 ldr r3, [r3, #140] + 3279 .LVL257: +2879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3280 .loc 2 2879 21 view .LVU942 + 3281 .LBE443: + 3282 .LBE442: +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3283 .loc 1 1114 3 view .LVU943 + 3284 0008 1842 tst r0, r3 + 3285 000a 04D1 bne .L257 +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3286 .loc 1 1117 7 is_stmt 1 view .LVU944 +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3287 .loc 1 1117 25 is_stmt 0 view .LVU945 + 3288 000c 4FF44010 mov r0, #3145728 + 3289 .LVL258: +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3290 .loc 1 1117 25 view .LVU946 + 3291 0010 FFF7FEFF bl LL_RCC_GetSAIClockFreq + 3292 .LVL259: +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 3293 .loc 1 1118 7 is_stmt 1 view .LVU947 + 3294 .L256: +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* DFSDM1_Channel0 */ + 3295 .loc 1 1127 1 is_stmt 0 view .LVU948 + 3296 0014 08BD pop {r3, pc} + 3297 .LVL260: + 3298 .L257: +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3299 .loc 1 1122 7 is_stmt 1 view .LVU949 + ARM GAS /tmp/ccTMI75D.s page 180 + + +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3300 .loc 1 1122 25 is_stmt 0 view .LVU950 + 3301 0016 4FF44000 mov r0, #12582912 + 3302 .LVL261: +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3303 .loc 1 1122 25 view .LVU951 + 3304 001a FFF7FEFF bl LL_RCC_GetSAIClockFreq + 3305 .LVL262: +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3306 .loc 1 1123 7 is_stmt 1 view .LVU952 +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3307 .loc 1 1126 3 view .LVU953 +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3308 .loc 1 1126 10 is_stmt 0 view .LVU954 + 3309 001e F9E7 b .L256 + 3310 .L261: + 3311 .align 2 + 3312 .L260: + 3313 0020 00380240 .word 1073887232 + 3314 .cfi_endproc + 3315 .LFE308: + 3317 .section .text.RCC_PLLI2S_GetFreqDomain_SPDIFRX,"ax",%progbits + 3318 .align 1 + 3319 .global RCC_PLLI2S_GetFreqDomain_SPDIFRX + 3320 .syntax unified + 3321 .thumb + 3322 .thumb_func + 3323 .fpu fpv5-d16 + 3325 RCC_PLLI2S_GetFreqDomain_SPDIFRX: + 3326 .LFB321: +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #if defined(SPDIFRX) +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PLLI2S clock frequency used for SPDIFRX domain +1511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PLLI2S clock frequency (in Hz) +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLI2S_GetFreqDomain_SPDIFRX(void) +1514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3327 .loc 1 1514 1 is_stmt 1 view -0 + 3328 .cfi_startproc + 3329 @ args = 0, pretend = 0, frame = 0 + 3330 @ frame_needed = 0, uses_anonymous_args = 0 + 3331 @ link register save eliminated. +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t pllinputfreq = 0U, pllsource = 0U; + 3332 .loc 1 1515 3 view .LVU956 + 3333 .LVL263: +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PLLI2S_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLI2SN +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** SPDIFRX Domain clock = PLLI2S_VCO / PLLI2SP +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllsource = LL_RCC_PLL_GetMainSource(); + 3334 .loc 1 1520 3 view .LVU957 + 3335 .LBB444: + 3336 .LBI444: +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3337 .loc 2 3461 26 view .LVU958 + 3338 .LBB445: + ARM GAS /tmp/ccTMI75D.s page 181 + + +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3339 .loc 2 3463 3 view .LVU959 +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3340 .loc 2 3463 21 is_stmt 0 view .LVU960 + 3341 0000 0E4B ldr r3, .L265 + 3342 0002 5B68 ldr r3, [r3, #4] +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3343 .loc 2 3463 10 view .LVU961 + 3344 0004 03F48003 and r3, r3, #4194304 + 3345 .LVL264: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3346 .loc 2 3463 10 view .LVU962 + 3347 .LBE445: + 3348 .LBE444: +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (pllsource) + 3349 .loc 1 1522 3 is_stmt 1 view .LVU963 + 3350 0008 ABB9 cbnz r3, .L264 +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLI2S clock source */ +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; + 3351 .loc 1 1525 20 is_stmt 0 view .LVU964 + 3352 000a 0D48 ldr r0, .L265+4 + 3353 .L263: + 3354 .LVL265: +1526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLI2S clock source */ +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSE_VALUE; +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PLLI2S_SPDIFRX_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + 3355 .loc 1 1537 3 is_stmt 1 view .LVU965 + 3356 .LBB446: + 3357 .LBI446: +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3358 .loc 2 3601 26 view .LVU966 + 3359 .LBB447: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3360 .loc 2 3603 3 view .LVU967 +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3361 .loc 2 3603 21 is_stmt 0 view .LVU968 + 3362 000c 0B4B ldr r3, .L265 + 3363 .LVL266: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3364 .loc 2 3603 21 view .LVU969 + 3365 000e 5A68 ldr r2, [r3, #4] +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3366 .loc 2 3603 10 view .LVU970 + 3367 0010 02F03F02 and r2, r2, #63 + 3368 .LBE447: + 3369 .LBE446: + ARM GAS /tmp/ccTMI75D.s page 182 + + + 3370 .loc 1 1537 10 view .LVU971 + 3371 0014 B0FBF2F0 udiv r0, r0, r2 + 3372 .LVL267: + 3373 .LBB448: + 3374 .LBI448: +4040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3375 .loc 2 4040 26 is_stmt 1 view .LVU972 + 3376 .LBB449: +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3377 .loc 2 4042 3 view .LVU973 +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3378 .loc 2 4042 21 is_stmt 0 view .LVU974 + 3379 0018 D3F88420 ldr r2, [r3, #132] +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3380 .loc 2 4042 10 view .LVU975 + 3381 001c C2F38812 ubfx r2, r2, #6, #9 + 3382 .LBE449: + 3383 .LBE448: + 3384 .loc 1 1537 10 view .LVU976 + 3385 0020 02FB00F0 mul r0, r2, r0 + 3386 .LBB450: + 3387 .LBI450: +4097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3388 .loc 2 4097 26 is_stmt 1 view .LVU977 + 3389 .LBB451: +4099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3390 .loc 2 4099 3 view .LVU978 +4099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3391 .loc 2 4099 21 is_stmt 0 view .LVU979 + 3392 0024 D3F88430 ldr r3, [r3, #132] + 3393 .LBE451: + 3394 .LBE450: + 3395 .loc 1 1537 10 view .LVU980 + 3396 0028 C3F30143 ubfx r3, r3, #16, #2 + 3397 002c 0133 adds r3, r3, #1 + 3398 002e 5B00 lsls r3, r3, #1 +1538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetP()); +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3399 .loc 1 1539 1 view .LVU981 + 3400 0030 B0FBF3F0 udiv r0, r0, r3 + 3401 0034 7047 bx lr + 3402 .LVL268: + 3403 .L264: +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3404 .loc 1 1529 20 view .LVU982 + 3405 0036 0348 ldr r0, .L265+8 + 3406 0038 E8E7 b .L263 + 3407 .L266: + 3408 003a 00BF .align 2 + 3409 .L265: + 3410 003c 00380240 .word 1073887232 + 3411 0040 0024F400 .word 16000000 + 3412 0044 40787D01 .word 25000000 + 3413 .cfi_endproc + 3414 .LFE321: + 3416 .section .text.LL_RCC_GetSPDIFRXClockFreq,"ax",%progbits + 3417 .align 1 + ARM GAS /tmp/ccTMI75D.s page 183 + + + 3418 .global LL_RCC_GetSPDIFRXClockFreq + 3419 .syntax unified + 3420 .thumb + 3421 .thumb_func + 3422 .fpu fpv5-d16 + 3424 LL_RCC_GetSPDIFRXClockFreq: + 3425 .LVL269: + 3426 .LFB310: +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t spdifrx_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 3427 .loc 1 1199 1 is_stmt 1 view -0 + 3428 .cfi_startproc + 3429 @ args = 0, pretend = 0, frame = 0 + 3430 @ frame_needed = 0, uses_anonymous_args = 0 +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t spdifrx_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 3431 .loc 1 1199 1 is_stmt 0 view .LVU984 + 3432 0000 08B5 push {r3, lr} + 3433 .LCFI15: + 3434 .cfi_def_cfa_offset 8 + 3435 .cfi_offset 3, -8 + 3436 .cfi_offset 14, -4 +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 3437 .loc 1 1200 3 is_stmt 1 view .LVU985 + 3438 .LVL270: +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 3439 .loc 1 1203 3 view .LVU986 +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3440 .loc 1 1205 3 view .LVU987 + 3441 .LBB452: + 3442 .LBI452: +3711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3443 .loc 2 3711 26 view .LVU988 + 3444 .LBB453: +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3445 .loc 2 3713 3 view .LVU989 +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3446 .loc 2 3713 11 is_stmt 0 view .LVU990 + 3447 0002 044B ldr r3, .L271 + 3448 0004 1868 ldr r0, [r3] + 3449 .LVL271: +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3450 .loc 2 3713 11 view .LVU991 + 3451 .LBE453: + 3452 .LBE452: +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3453 .loc 1 1205 6 view .LVU992 + 3454 0006 10F00060 ands r0, r0, #134217728 + 3455 000a 00D1 bne .L270 + 3456 .LVL272: + 3457 .L267: +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* SPDIFRX */ + 3458 .loc 1 1211 1 view .LVU993 + 3459 000c 08BD pop {r3, pc} + 3460 .LVL273: + 3461 .L270: +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3462 .loc 1 1207 6 is_stmt 1 view .LVU994 +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + ARM GAS /tmp/ccTMI75D.s page 184 + + + 3463 .loc 1 1207 26 is_stmt 0 view .LVU995 + 3464 000e FFF7FEFF bl RCC_PLLI2S_GetFreqDomain_SPDIFRX + 3465 .LVL274: +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3466 .loc 1 1210 3 is_stmt 1 view .LVU996 +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3467 .loc 1 1210 10 is_stmt 0 view .LVU997 + 3468 0012 FBE7 b .L267 + 3469 .L272: + 3470 .align 2 + 3471 .L271: + 3472 0014 00380240 .word 1073887232 + 3473 .cfi_endproc + 3474 .LFE310: + 3476 .section .text.RCC_PLLI2S_GetFreqDomain_I2S,"ax",%progbits + 3477 .align 1 + 3478 .global RCC_PLLI2S_GetFreqDomain_I2S + 3479 .syntax unified + 3480 .thumb + 3481 .thumb_func + 3482 .fpu fpv5-d16 + 3484 RCC_PLLI2S_GetFreqDomain_I2S: + 3485 .LFB322: +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** #endif /* SPDIFRX */ +1541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /** +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @brief Return PLLI2S clock frequency used for I2S domain +1544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** * @retval PLLI2S clock frequency (in Hz) +1545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t RCC_PLLI2S_GetFreqDomain_I2S(void) +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3486 .loc 1 1547 1 is_stmt 1 view -0 + 3487 .cfi_startproc + 3488 @ args = 0, pretend = 0, frame = 0 + 3489 @ frame_needed = 0, uses_anonymous_args = 0 + 3490 @ link register save eliminated. +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t pllinputfreq = 0U, pllsource = 0U; + 3491 .loc 1 1548 3 view .LVU999 + 3492 .LVL275: +1549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** /* PLLI2S_VCO = (HSE_VALUE or HSI_VALUE / PLLM) * PLLI2SN +1551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** I2S Domain clock = PLLI2S_VCO / PLLI2SR +1552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** */ +1553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllsource = LL_RCC_PLL_GetMainSource(); + 3493 .loc 1 1553 3 view .LVU1000 + 3494 .LBB454: + 3495 .LBI454: +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3496 .loc 2 3461 26 view .LVU1001 + 3497 .LBB455: +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3498 .loc 2 3463 3 view .LVU1002 +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3499 .loc 2 3463 21 is_stmt 0 view .LVU1003 + 3500 0000 0D4B ldr r3, .L276 + 3501 0002 5B68 ldr r3, [r3, #4] + 3502 .LVL276: + ARM GAS /tmp/ccTMI75D.s page 185 + + +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3503 .loc 2 3463 21 view .LVU1004 + 3504 .LBE455: + 3505 .LBE454: +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** switch (pllsource) + 3506 .loc 1 1555 3 is_stmt 1 view .LVU1005 + 3507 0004 13F4800F tst r3, #4194304 + 3508 0008 13D0 beq .L275 +1556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLLI2S clock source */ +1558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSE_VALUE; + 3509 .loc 1 1558 20 is_stmt 0 view .LVU1006 + 3510 000a 0C4B ldr r3, .L276+4 + 3511 .LVL277: + 3512 .L274: +1559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** +1561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** case LL_RCC_PLLSOURCE_HSI: /* HSI used as PLLI2S clock source */ +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** default: +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** pllinputfreq = HSI_VALUE; +1564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; +1565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } +1566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** return __LL_RCC_CALC_PLLI2S_I2S_FREQ(pllinputfreq, LL_RCC_PLL_GetDivider(), + 3513 .loc 1 1566 3 is_stmt 1 view .LVU1007 + 3514 .LBB456: + 3515 .LBI456: +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3516 .loc 2 3601 26 view .LVU1008 + 3517 .LBB457: +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3518 .loc 2 3603 3 view .LVU1009 +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3519 .loc 2 3603 21 is_stmt 0 view .LVU1010 + 3520 000c 0A4A ldr r2, .L276 + 3521 000e 5068 ldr r0, [r2, #4] +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3522 .loc 2 3603 10 view .LVU1011 + 3523 0010 00F03F00 and r0, r0, #63 + 3524 .LBE457: + 3525 .LBE456: + 3526 .loc 1 1566 10 view .LVU1012 + 3527 0014 B3FBF0F3 udiv r3, r3, r0 + 3528 .LVL278: + 3529 .LBB458: + 3530 .LBI458: +4040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3531 .loc 2 4040 26 is_stmt 1 view .LVU1013 + 3532 .LBB459: +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3533 .loc 2 4042 3 view .LVU1014 +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3534 .loc 2 4042 21 is_stmt 0 view .LVU1015 + 3535 0018 D2F88400 ldr r0, [r2, #132] +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3536 .loc 2 4042 10 view .LVU1016 + 3537 001c C0F38810 ubfx r0, r0, #6, #9 + ARM GAS /tmp/ccTMI75D.s page 186 + + + 3538 .LBE459: + 3539 .LBE458: + 3540 .loc 1 1566 10 view .LVU1017 + 3541 0020 00FB03F3 mul r3, r0, r3 + 3542 .LBB460: + 3543 .LBI460: +4081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3544 .loc 2 4081 26 is_stmt 1 view .LVU1018 + 3545 .LBB461: +4083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3546 .loc 2 4083 3 view .LVU1019 +4083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3547 .loc 2 4083 21 is_stmt 0 view .LVU1020 + 3548 0024 D2F88400 ldr r0, [r2, #132] + 3549 .LBE461: + 3550 .LBE460: + 3551 .loc 1 1566 10 view .LVU1021 + 3552 0028 C0F30270 ubfx r0, r0, #28, #3 +1567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** LL_RCC_PLLI2S_GetN(), LL_RCC_PLLI2S_GetR()); +1568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3553 .loc 1 1568 1 view .LVU1022 + 3554 002c B3FBF0F0 udiv r0, r3, r0 + 3555 0030 7047 bx lr + 3556 .LVL279: + 3557 .L275: +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3558 .loc 1 1563 20 view .LVU1023 + 3559 0032 034B ldr r3, .L276+8 + 3560 .LVL280: +1563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3561 .loc 1 1563 20 view .LVU1024 + 3562 0034 EAE7 b .L274 + 3563 .L277: + 3564 0036 00BF .align 2 + 3565 .L276: + 3566 0038 00380240 .word 1073887232 + 3567 003c 40787D01 .word 25000000 + 3568 0040 0024F400 .word 16000000 + 3569 .cfi_endproc + 3570 .LFE322: + 3572 .section .text.LL_RCC_GetI2SClockFreq,"ax",%progbits + 3573 .align 1 + 3574 .global LL_RCC_GetI2SClockFreq + 3575 .syntax unified + 3576 .thumb + 3577 .thumb_func + 3578 .fpu fpv5-d16 + 3580 LL_RCC_GetI2SClockFreq: + 3581 .LVL281: + 3582 .LFB300: + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t i2s_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 3583 .loc 1 679 1 is_stmt 1 view -0 + 3584 .cfi_startproc + 3585 @ args = 0, pretend = 0, frame = 0 + 3586 @ frame_needed = 0, uses_anonymous_args = 0 + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 3587 .loc 1 680 3 view .LVU1026 + ARM GAS /tmp/ccTMI75D.s page 187 + + + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 3588 .loc 1 683 3 view .LVU1027 + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3589 .loc 1 685 3 view .LVU1028 + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3590 .loc 1 685 6 is_stmt 0 view .LVU1029 + 3591 0000 B0F5000F cmp r0, #8388608 + 3592 0004 01D0 beq .L286 + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 3593 .loc 1 680 12 view .LVU1030 + 3594 0006 0020 movs r0, #0 + 3595 .LVL282: + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 3596 .loc 1 705 1 view .LVU1031 + 3597 0008 7047 bx lr + 3598 .LVL283: + 3599 .L286: + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** uint32_t i2s_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + 3600 .loc 1 679 1 view .LVU1032 + 3601 000a 08B5 push {r3, lr} + 3602 .LCFI16: + 3603 .cfi_def_cfa_offset 8 + 3604 .cfi_offset 3, -8 + 3605 .cfi_offset 14, -4 + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3606 .loc 1 688 5 is_stmt 1 view .LVU1033 + 3607 .LVL284: + 3608 .LBB462: + 3609 .LBI462: +2862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3610 .loc 2 2862 26 view .LVU1034 + 3611 .LBB463: +2864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3612 .loc 2 2864 3 view .LVU1035 +2864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3613 .loc 2 2864 21 is_stmt 0 view .LVU1036 + 3614 000c 074B ldr r3, .L288 + 3615 000e 9B68 ldr r3, [r3, #8] + 3616 .LVL285: +2864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3617 .loc 2 2864 21 view .LVU1037 + 3618 .LBE463: + 3619 .LBE462: + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3620 .loc 1 688 5 view .LVU1038 + 3621 0010 1842 tst r0, r3 + 3622 0012 08D1 bne .L281 + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3623 .loc 1 691 9 is_stmt 1 view .LVU1039 + 3624 .LBB464: + 3625 .LBI464: +3711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 3626 .loc 2 3711 26 view .LVU1040 + 3627 .LBB465: +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3628 .loc 2 3713 3 view .LVU1041 +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + ARM GAS /tmp/ccTMI75D.s page 188 + + + 3629 .loc 2 3713 11 is_stmt 0 view .LVU1042 + 3630 0014 054B ldr r3, .L288 + 3631 0016 1868 ldr r0, [r3] + 3632 .LVL286: +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 3633 .loc 2 3713 11 view .LVU1043 + 3634 .LBE465: + 3635 .LBE464: + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** { + 3636 .loc 1 691 12 view .LVU1044 + 3637 0018 10F00060 ands r0, r0, #134217728 + 3638 001c 00D1 bne .L287 + 3639 .LVL287: + 3640 .L278: + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** + 3641 .loc 1 705 1 view .LVU1045 + 3642 001e 08BD pop {r3, pc} + 3643 .LVL288: + 3644 .L287: + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3645 .loc 1 693 11 is_stmt 1 view .LVU1046 + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3646 .loc 1 693 27 is_stmt 0 view .LVU1047 + 3647 0020 FFF7FEFF bl RCC_PLLI2S_GetFreqDomain_I2S + 3648 .LVL289: + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3649 .loc 1 693 27 view .LVU1048 + 3650 0024 FBE7 b .L278 + 3651 .LVL290: + 3652 .L281: + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** break; + 3653 .loc 1 699 23 view .LVU1049 + 3654 0026 0248 ldr r0, .L288+4 + 3655 .LVL291: + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3656 .loc 1 704 3 is_stmt 1 view .LVU1050 + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_rcc.c **** } + 3657 .loc 1 704 10 is_stmt 0 view .LVU1051 + 3658 0028 F9E7 b .L278 + 3659 .L289: + 3660 002a 00BF .align 2 + 3661 .L288: + 3662 002c 00380240 .word 1073887232 + 3663 0030 0080BB00 .word 12288000 + 3664 .cfi_endproc + 3665 .LFE300: + 3667 .section .rodata.aRCC_PLLSAIDIVRPrescTable,"a" + 3668 .align 2 + 3669 .set .LANCHOR0,. + 0 + 3672 aRCC_PLLSAIDIVRPrescTable: + 3673 0000 02040810 .ascii "\002\004\010\020" + 3674 .text + 3675 .Letext0: + 3676 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 3677 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h" + 3678 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 3679 .file 6 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + ARM GAS /tmp/ccTMI75D.s page 189 + + + ARM GAS /tmp/ccTMI75D.s page 190 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_ll_rcc.c + /tmp/ccTMI75D.s:17 .text.LL_RCC_DeInit:0000000000000000 $t + /tmp/ccTMI75D.s:25 .text.LL_RCC_DeInit:0000000000000000 LL_RCC_DeInit + /tmp/ccTMI75D.s:182 .text.LL_RCC_DeInit:000000000000008c $d + /tmp/ccTMI75D.s:189 .text.LL_RCC_GetCECClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:196 .text.LL_RCC_GetCECClockFreq:0000000000000000 LL_RCC_GetCECClockFreq + /tmp/ccTMI75D.s:274 .text.LL_RCC_GetCECClockFreq:000000000000002c $d + /tmp/ccTMI75D.s:279 .text.RCC_GetHCLKClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:286 .text.RCC_GetHCLKClockFreq:0000000000000000 RCC_GetHCLKClockFreq + /tmp/ccTMI75D.s:317 .text.RCC_GetHCLKClockFreq:0000000000000010 $d + /tmp/ccTMI75D.s:323 .text.RCC_GetPCLK1ClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:330 .text.RCC_GetPCLK1ClockFreq:0000000000000000 RCC_GetPCLK1ClockFreq + /tmp/ccTMI75D.s:361 .text.RCC_GetPCLK1ClockFreq:0000000000000010 $d + /tmp/ccTMI75D.s:367 .text.RCC_GetPCLK2ClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:374 .text.RCC_GetPCLK2ClockFreq:0000000000000000 RCC_GetPCLK2ClockFreq + /tmp/ccTMI75D.s:405 .text.RCC_GetPCLK2ClockFreq:0000000000000010 $d + /tmp/ccTMI75D.s:411 .text.RCC_PLL_GetFreqDomain_SYS:0000000000000000 $t + /tmp/ccTMI75D.s:418 .text.RCC_PLL_GetFreqDomain_SYS:0000000000000000 RCC_PLL_GetFreqDomain_SYS + /tmp/ccTMI75D.s:503 .text.RCC_PLL_GetFreqDomain_SYS:0000000000000038 $d + /tmp/ccTMI75D.s:510 .text.RCC_GetSystemClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:517 .text.RCC_GetSystemClockFreq:0000000000000000 RCC_GetSystemClockFreq + /tmp/ccTMI75D.s:570 .text.RCC_GetSystemClockFreq:0000000000000020 $d + /tmp/ccTMI75D.s:577 .text.LL_RCC_GetSystemClocksFreq:0000000000000000 $t + /tmp/ccTMI75D.s:584 .text.LL_RCC_GetSystemClocksFreq:0000000000000000 LL_RCC_GetSystemClocksFreq + /tmp/ccTMI75D.s:630 .text.LL_RCC_GetUSARTClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:637 .text.LL_RCC_GetUSARTClockFreq:0000000000000000 LL_RCC_GetUSARTClockFreq + /tmp/ccTMI75D.s:1009 .text.LL_RCC_GetUSARTClockFreq:0000000000000160 $d + /tmp/ccTMI75D.s:1019 .text.LL_RCC_GetUARTClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:1026 .text.LL_RCC_GetUARTClockFreq:0000000000000000 LL_RCC_GetUARTClockFreq + /tmp/ccTMI75D.s:1398 .text.LL_RCC_GetUARTClockFreq:0000000000000168 $d + /tmp/ccTMI75D.s:1408 .text.LL_RCC_GetI2CClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:1415 .text.LL_RCC_GetI2CClockFreq:0000000000000000 LL_RCC_GetI2CClockFreq + /tmp/ccTMI75D.s:1707 .text.LL_RCC_GetI2CClockFreq:0000000000000108 $d + /tmp/ccTMI75D.s:1717 .text.LL_RCC_GetLPTIMClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:1724 .text.LL_RCC_GetLPTIMClockFreq:0000000000000000 LL_RCC_GetLPTIMClockFreq + /tmp/ccTMI75D.s:1855 .text.LL_RCC_GetLPTIMClockFreq:0000000000000064 $d + /tmp/ccTMI75D.s:1861 .text.LL_RCC_GetDFSDMClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:1868 .text.LL_RCC_GetDFSDMClockFreq:0000000000000000 LL_RCC_GetDFSDMClockFreq + /tmp/ccTMI75D.s:1926 .text.LL_RCC_GetDFSDMClockFreq:0000000000000024 $d + /tmp/ccTMI75D.s:1931 .text.RCC_PLL_GetFreqDomain_48M:0000000000000000 $t + /tmp/ccTMI75D.s:1938 .text.RCC_PLL_GetFreqDomain_48M:0000000000000000 RCC_PLL_GetFreqDomain_48M + /tmp/ccTMI75D.s:2021 .text.RCC_PLL_GetFreqDomain_48M:0000000000000034 $d + /tmp/ccTMI75D.s:2028 .text.RCC_PLLSAI_GetFreqDomain_SAI:0000000000000000 $t + /tmp/ccTMI75D.s:2035 .text.RCC_PLLSAI_GetFreqDomain_SAI:0000000000000000 RCC_PLLSAI_GetFreqDomain_SAI + /tmp/ccTMI75D.s:2129 .text.RCC_PLLSAI_GetFreqDomain_SAI:0000000000000044 $d + /tmp/ccTMI75D.s:2136 .text.RCC_PLLSAI_GetFreqDomain_48M:0000000000000000 $t + /tmp/ccTMI75D.s:2143 .text.RCC_PLLSAI_GetFreqDomain_48M:0000000000000000 RCC_PLLSAI_GetFreqDomain_48M + /tmp/ccTMI75D.s:2228 .text.RCC_PLLSAI_GetFreqDomain_48M:000000000000003c $d + /tmp/ccTMI75D.s:2235 .text.LL_RCC_GetSDMMCClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:2242 .text.LL_RCC_GetSDMMCClockFreq:0000000000000000 LL_RCC_GetSDMMCClockFreq + /tmp/ccTMI75D.s:2441 .text.LL_RCC_GetSDMMCClockFreq:0000000000000090 $d + /tmp/ccTMI75D.s:2446 .text.LL_RCC_GetRNGClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:2453 .text.LL_RCC_GetRNGClockFreq:0000000000000000 LL_RCC_GetRNGClockFreq + /tmp/ccTMI75D.s:2541 .text.LL_RCC_GetRNGClockFreq:0000000000000030 $d + /tmp/ccTMI75D.s:2546 .text.LL_RCC_GetUSBClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:2553 .text.LL_RCC_GetUSBClockFreq:0000000000000000 LL_RCC_GetUSBClockFreq + ARM GAS /tmp/ccTMI75D.s page 191 + + + /tmp/ccTMI75D.s:2641 .text.LL_RCC_GetUSBClockFreq:0000000000000030 $d + /tmp/ccTMI75D.s:2646 .text.RCC_PLLSAI_GetFreqDomain_LTDC:0000000000000000 $t + /tmp/ccTMI75D.s:2653 .text.RCC_PLLSAI_GetFreqDomain_LTDC:0000000000000000 RCC_PLLSAI_GetFreqDomain_LTDC + /tmp/ccTMI75D.s:2749 .text.RCC_PLLSAI_GetFreqDomain_LTDC:0000000000000048 $d + /tmp/ccTMI75D.s:2757 .text.LL_RCC_GetLTDCClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:2764 .text.LL_RCC_GetLTDCClockFreq:0000000000000000 LL_RCC_GetLTDCClockFreq + /tmp/ccTMI75D.s:2812 .text.LL_RCC_GetLTDCClockFreq:0000000000000014 $d + /tmp/ccTMI75D.s:2817 .text.RCC_PLLI2S_GetFreqDomain_SAI:0000000000000000 $t + /tmp/ccTMI75D.s:2824 .text.RCC_PLLI2S_GetFreqDomain_SAI:0000000000000000 RCC_PLLI2S_GetFreqDomain_SAI + /tmp/ccTMI75D.s:2919 .text.RCC_PLLI2S_GetFreqDomain_SAI:0000000000000044 $d + /tmp/ccTMI75D.s:2926 .text.LL_RCC_GetSAIClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:2933 .text.LL_RCC_GetSAIClockFreq:0000000000000000 LL_RCC_GetSAIClockFreq + /tmp/ccTMI75D.s:3238 .text.LL_RCC_GetSAIClockFreq:0000000000000108 $d + /tmp/ccTMI75D.s:3247 .text.LL_RCC_GetDFSDMAudioClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:3254 .text.LL_RCC_GetDFSDMAudioClockFreq:0000000000000000 LL_RCC_GetDFSDMAudioClockFreq + /tmp/ccTMI75D.s:3313 .text.LL_RCC_GetDFSDMAudioClockFreq:0000000000000020 $d + /tmp/ccTMI75D.s:3318 .text.RCC_PLLI2S_GetFreqDomain_SPDIFRX:0000000000000000 $t + /tmp/ccTMI75D.s:3325 .text.RCC_PLLI2S_GetFreqDomain_SPDIFRX:0000000000000000 RCC_PLLI2S_GetFreqDomain_SPDIFRX + /tmp/ccTMI75D.s:3410 .text.RCC_PLLI2S_GetFreqDomain_SPDIFRX:000000000000003c $d + /tmp/ccTMI75D.s:3417 .text.LL_RCC_GetSPDIFRXClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:3424 .text.LL_RCC_GetSPDIFRXClockFreq:0000000000000000 LL_RCC_GetSPDIFRXClockFreq + /tmp/ccTMI75D.s:3472 .text.LL_RCC_GetSPDIFRXClockFreq:0000000000000014 $d + /tmp/ccTMI75D.s:3477 .text.RCC_PLLI2S_GetFreqDomain_I2S:0000000000000000 $t + /tmp/ccTMI75D.s:3484 .text.RCC_PLLI2S_GetFreqDomain_I2S:0000000000000000 RCC_PLLI2S_GetFreqDomain_I2S + /tmp/ccTMI75D.s:3566 .text.RCC_PLLI2S_GetFreqDomain_I2S:0000000000000038 $d + /tmp/ccTMI75D.s:3573 .text.LL_RCC_GetI2SClockFreq:0000000000000000 $t + /tmp/ccTMI75D.s:3580 .text.LL_RCC_GetI2SClockFreq:0000000000000000 LL_RCC_GetI2SClockFreq + /tmp/ccTMI75D.s:3662 .text.LL_RCC_GetI2SClockFreq:000000000000002c $d + /tmp/ccTMI75D.s:3668 .rodata.aRCC_PLLSAIDIVRPrescTable:0000000000000000 $d + /tmp/ccTMI75D.s:3672 .rodata.aRCC_PLLSAIDIVRPrescTable:0000000000000000 aRCC_PLLSAIDIVRPrescTable + +UNDEFINED SYMBOLS +AHBPrescTable +APBPrescTable diff --git a/build/stm32f7xx_ll_rcc.o b/build/stm32f7xx_ll_rcc.o new file mode 100644 index 0000000..d331cc9 Binary files /dev/null and b/build/stm32f7xx_ll_rcc.o differ diff --git a/build/stm32f7xx_ll_sdmmc.d b/build/stm32f7xx_ll_sdmmc.d new file mode 100644 index 0000000..67d561b --- /dev/null +++ b/build/stm32f7xx_ll_sdmmc.d @@ -0,0 +1,64 @@ +build/stm32f7xx_ll_sdmmc.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/stm32f7xx_ll_sdmmc.lst b/build/stm32f7xx_ll_sdmmc.lst new file mode 100644 index 0000000..6409ab0 --- /dev/null +++ b/build/stm32f7xx_ll_sdmmc.lst @@ -0,0 +1,6130 @@ +ARM GAS /tmp/ccODg7xx.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_ll_sdmmc.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.SDMMC_GetCmdError,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 SDMMC_GetCmdError: + 25 .LVL0: + 26 .LFB186: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @file stm32f7xx_ll_sdmmc.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief SDMMC Low Layer HAL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * This file provides firmware functions to manage the following + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * functionalities of the SDMMC peripheral: + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + Initialization/de-initialization functions + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + I/O operation functions + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + Peripheral Control functions + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + Peripheral State functions + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ****************************************************************************** + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @attention + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * Copyright (c) 2017 STMicroelectronics. + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * All rights reserved. + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * This software is licensed under terms that can be found in the LICENSE file + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * in the root directory of this software component. + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ****************************************************************************** + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @verbatim + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ============================================================================== + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ##### SDMMC peripheral features ##### + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ============================================================================== + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] The SD/SDMMC MMC card host interface (SDMMC) provides an interface between the AHB + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** peripheral bus and MultiMedia cards (MMCs), SD memory cards, SDMMC cards and CE-ATA + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** devices. + ARM GAS /tmp/ccODg7xx.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] The SDMMC features include the following: + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Full compliance with MultiMedia Card System Specification Version 4.2. Card support + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** for three different databus modes: 1-bit (default), 4-bit and 8-bit + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Full compatibility with previous versions of MultiMedia Cards (forward compatibility) + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Full compliance with SD Memory Card Specifications Version 2.0 + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Full compliance with SD I/O Card Specification Version 2.0: card support for two + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** different data bus modes: 1-bit (default) and 4-bit + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Full support of the CE-ATA features (full compliance with CE-ATA digital protocol + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Rev1.1) + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Data transfer up to 48 MHz for the 8 bit mode + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Data and command output enable signals to control external bidirectional drivers + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ##### How to use this driver ##### + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ============================================================================== + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** This driver is a considered as a driver of service for external devices drivers + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** that interfaces with the SDMMC peripheral. + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** According to the device used (SD card/ MMC card / SDMMC card ...), a set of APIs + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** is used in the device's driver to perform SDMMC operations and functionalities. + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** This driver is almost transparent for the final user, it is only used to implement other + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** functionalities of the external device. + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) The SDMMC clock (SDMMCCLK = 48 MHz) is coming from a specific output (MSI, PLLUSB1CLK, + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** PLLUSB2CLK). Before start working with SDMMC peripheral make sure that the + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** PLL is well configured. + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The SDMMC peripheral uses two clock signals: + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) SDMMC adapter clock (SDMMCCLK = 48 MHz) + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) APB2 bus clock (PCLK2) + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** -@@- PCLK2 and SDMMC_CK clock frequencies must respect the following condition: + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Frequency(PCLK2) >= (3 / 8 x Frequency(SDMMC_CK)) + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Enable/Disable peripheral clock using RCC peripheral macros related to SDMMC + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** peripheral. + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Enable the Power ON State using the SDMMC_PowerState_ON() + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** function and disable it using the function SDMMC_PowerState_OFF(). + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Enable/Disable the clock using the __SDMMC_ENABLE()/__SDMMC_DISABLE() macros. + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) Enable/Disable the peripheral interrupts using the macros __SDMMC_ENABLE_IT() + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** and __SDMMC_DISABLE_IT() if you need to use interrupt mode. + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) When using the DMA mode + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Configure the DMA in the MSP layer of the external device + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Active the needed channel Request + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Enable the DMA using __SDMMC_DMA_ENABLE() macro or Disable it using the macro + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_DMA_DISABLE(). + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) To control the CPSM (Command Path State Machine) and send + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** commands to the card use the SDMMC_SendCommand(), + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_GetCommandResponse() and SDMMC_GetResponse() functions. First, user has + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** to fill the command structure (pointer to SDMMC_CmdInitTypeDef) according + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** to the selected command to be sent. + ARM GAS /tmp/ccODg7xx.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The parameters that should be filled are: + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Command Argument + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Command Index + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Command Response type + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Command Wait + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) CPSM Status (Enable or Disable). + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** -@@- To check if the command is well received, read the SDMMC_CMDRESP + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** register using the SDMMC_GetCommandResponse(). + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The SDMMC responses registers (SDMMC_RESP1 to SDMMC_RESP2), use the + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_GetResponse() function. + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (+) To control the DPSM (Data Path State Machine) and send/receive + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** data to/from the card use the SDMMC_DataConfig(), SDMMC_GetDataCounter(), + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_ReadFIFO(), SDMMC_WriteFIFO() and SDMMC_GetFIFOCount() functions. + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** *** Read Operations *** + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ======================= + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (#) First, user has to fill the data structure (pointer to + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_DataInitTypeDef) according to the selected data type to be received. + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The parameters that should be filled are: + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Data TimeOut + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Data Length + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Data Block size + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Data Transfer direction: should be from card (To SDMMC) + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Data Transfer mode + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) DPSM Status (Enable or Disable) + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (#) Configure the SDMMC resources to receive the data from the card + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** according to selected transfer mode (Refer to Step 8, 9 and 10). + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (#) Send the selected Read command (refer to step 11). + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (#) Use the SDMMC flags/interrupts to check the transfer status. + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** *** Write Operations *** + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ======================== + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (#) First, user has to fill the data structure (pointer to + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_DataInitTypeDef) according to the selected data type to be received. + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The parameters that should be filled are: + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Data TimeOut + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Data Length + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Data Block size + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Data Transfer direction: should be to card (To CARD) + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) Data Transfer mode + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (++) DPSM Status (Enable or Disable) + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (#) Configure the SDMMC resources to send the data to the card according to + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** selected transfer mode. + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (#) Send the selected Write command. + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (#) Use the SDMMC flags/interrupts to check the transfer status. + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** *** Command management operations *** + ARM GAS /tmp/ccODg7xx.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ===================================== + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (#) The commands used for Read/Write/Erase operations are managed in + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** separate functions. + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Each function allows to send the needed command with the related argument, + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** then check the response. + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** By the same approach, you could implement a command and check the response. + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @endverbatim + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ****************************************************************************** + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Includes ------------------------------------------------------------------*/ + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** #include "stm32f7xx_hal.h" + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** #if defined(SDMMC1) + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** @addtogroup STM32F7xx_HAL_Driver + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @{ + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** @defgroup SDMMC_LL SDMMC Low Layer + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Low layer module for SD + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @{ + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** #if defined(HAL_SD_MODULE_ENABLED) || defined(HAL_MMC_MODULE_ENABLED) + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Private typedef -----------------------------------------------------------*/ + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Private define ------------------------------------------------------------*/ + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Private macro -------------------------------------------------------------*/ + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Private variables ---------------------------------------------------------*/ + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Private function prototypes -----------------------------------------------*/ + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** static uint32_t SDMMC_GetCmdError(SDMMC_TypeDef *SDMMCx); + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Exported functions --------------------------------------------------------*/ + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** @defgroup SDMMC_LL_Exported_Functions SDMMC Low Layer Exported Functions + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @{ + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** @defgroup HAL_SDMMC_LL_Group1 Initialization de-initialization functions + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Initialization and Configuration functions + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @verbatim + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** =============================================================================== + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ##### Initialization/de-initialization functions ##### + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** =============================================================================== + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] This section provides functions allowing to: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @endverbatim + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @{ + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Initializes the SDMMC according to the specified + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * parameters in the SDMMC_InitTypeDef and create the associated handle. + ARM GAS /tmp/ccODg7xx.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param Init: SDMMC initialization structure + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** HAL_StatusTypeDef SDMMC_Init(SDMMC_TypeDef *SDMMCx, SDMMC_InitTypeDef Init) + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t tmpreg = 0; + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check the parameters */ + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_ALL_INSTANCE(SDMMCx)); + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CLOCK_EDGE(Init.ClockEdge)); + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CLOCK_BYPASS(Init.ClockBypass)); + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CLOCK_POWER_SAVE(Init.ClockPowerSave)); + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_BUS_WIDE(Init.BusWide)); + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(Init.HardwareFlowControl)); + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CLKDIV(Init.ClockDiv)); + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set SDMMC configuration parameters */ + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** tmpreg |= (Init.ClockEdge |\ + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.ClockBypass |\ + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.ClockPowerSave |\ + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.BusWide |\ + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.HardwareFlowControl |\ + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.ClockDiv + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ); + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Write to SDMMC CLKCR */ + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** MODIFY_REG(SDMMCx->CLKCR, CLKCR_CLEAR_MASK, tmpreg); + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return HAL_OK; + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @} + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** @defgroup HAL_SDMMC_LL_Group2 IO operation functions + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Data transfers functions + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @verbatim + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** =============================================================================== + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ##### I/O operation functions ##### + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** =============================================================================== + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** This subsection provides a set of functions allowing to manage the SDMMC data + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** transfers. + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @endverbatim + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @{ + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Read data (word) from Rx FIFO in blocking mode (polling) + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + ARM GAS /tmp/ccODg7xx.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_ReadFIFO(SDMMC_TypeDef *SDMMCx) + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Read data from Rx FIFO */ + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return (SDMMCx->FIFO); + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Write data (word) to Tx FIFO in blocking mode (polling) + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param pWriteData: pointer to data to write + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** HAL_StatusTypeDef SDMMC_WriteFIFO(SDMMC_TypeDef *SDMMCx, uint32_t *pWriteData) + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Write data to FIFO */ + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMCx->FIFO = *pWriteData; + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return HAL_OK; + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @} + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** @defgroup HAL_SDMMC_LL_Group3 Peripheral Control functions + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief management functions + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @verbatim + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** =============================================================================== + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ##### Peripheral Control functions ##### + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** =============================================================================== + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** This subsection provides a set of functions allowing to control the SDMMC data + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** transfers. + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @endverbatim + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @{ + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Set SDMMC Power state to ON. + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** HAL_StatusTypeDef SDMMC_PowerState_ON(SDMMC_TypeDef *SDMMCx) + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set power state to ON */ + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMCx->POWER = SDMMC_POWER_PWRCTRL; + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return HAL_OK; + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Set SDMMC Power state to OFF. + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + ARM GAS /tmp/ccODg7xx.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** HAL_StatusTypeDef SDMMC_PowerState_OFF(SDMMC_TypeDef *SDMMCx) + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set power state to OFF */ + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMCx->POWER = (uint32_t)0x00000000; + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return HAL_OK; + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Get SDMMC Power state. + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval Power status of the controller. The returned value can be one of the + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * following values: + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * - 0x00: Power OFF + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * - 0x02: Power UP + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * - 0x03: Power ON + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_GetPowerState(SDMMC_TypeDef *SDMMCx) + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return (SDMMCx->POWER & SDMMC_POWER_PWRCTRL); + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Configure the SDMMC command path according to the specified parameters in + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * SDMMC_CmdInitTypeDef structure and send the command + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param Command: pointer to a SDMMC_CmdInitTypeDef structure that contains + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * the configuration information for the SDMMC command + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** HAL_StatusTypeDef SDMMC_SendCommand(SDMMC_TypeDef *SDMMCx, SDMMC_CmdInitTypeDef *Command) + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t tmpreg = 0; + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check the parameters */ + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CMD_INDEX(Command->CmdIndex)); + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_RESPONSE(Command->Response)); + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_WAIT(Command->WaitForInterrupt)); + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CPSM(Command->CPSM)); + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set the SDMMC Argument value */ + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMCx->ARG = Command->Argument; + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set SDMMC command parameters */ + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** tmpreg |= (uint32_t)(Command->CmdIndex |\ + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Command->Response |\ + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Command->WaitForInterrupt |\ + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Command->CPSM); + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Write to SDMMC CMD register */ + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** MODIFY_REG(SDMMCx->CMD, CMD_CLEAR_MASK, tmpreg); + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return HAL_OK; + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Return the command index of last command for which response received + ARM GAS /tmp/ccODg7xx.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval Command index of the last command response received + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint8_t SDMMC_GetCommandResponse(SDMMC_TypeDef *SDMMCx) + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return (uint8_t)(SDMMCx->RESPCMD); + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Return the response received from the card for the last command + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param Response: Specifies the SDMMC response register. + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * This parameter can be one of the following values: + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @arg SDMMC_RESP1: Response Register 1 + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @arg SDMMC_RESP2: Response Register 2 + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @arg SDMMC_RESP3: Response Register 3 + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @arg SDMMC_RESP4: Response Register 4 + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval The Corresponding response register value + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_GetResponse(SDMMC_TypeDef *SDMMCx, uint32_t Response) + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t tmp; + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check the parameters */ + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_RESP(Response)); + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Get the response */ + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** tmp = (uint32_t)(&(SDMMCx->RESP1)) + Response; + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return (*(__IO uint32_t *) tmp); + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Configure the SDMMC data path according to the specified + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * parameters in the SDMMC_DataInitTypeDef. + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param Data : pointer to a SDMMC_DataInitTypeDef structure + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * that contains the configuration information for the SDMMC data. + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** HAL_StatusTypeDef SDMMC_ConfigData(SDMMC_TypeDef *SDMMCx, SDMMC_DataInitTypeDef* Data) + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t tmpreg = 0; + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check the parameters */ + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_DATA_LENGTH(Data->DataLength)); + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_BLOCK_SIZE(Data->DataBlockSize)); + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_TRANSFER_DIR(Data->TransferDir)); + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_TRANSFER_MODE(Data->TransferMode)); + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_DPSM(Data->DPSM)); + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set the SDMMC Data TimeOut value */ + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMCx->DTIMER = Data->DataTimeOut; + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set the SDMMC DataLength value */ + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMCx->DLEN = Data->DataLength; + ARM GAS /tmp/ccODg7xx.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set the SDMMC data configuration parameters */ + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** tmpreg |= (uint32_t)(Data->DataBlockSize |\ + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Data->TransferDir |\ + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Data->TransferMode |\ + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Data->DPSM); + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Write to SDMMC DCTRL */ + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** MODIFY_REG(SDMMCx->DCTRL, DCTRL_CLEAR_MASK, tmpreg); + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return HAL_OK; + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Returns number of remaining data bytes to be transferred. + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval Number of remaining data bytes to be transferred + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_GetDataCounter(SDMMC_TypeDef *SDMMCx) + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return (SDMMCx->DCOUNT); + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Get the FIFO data + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval Data received + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_GetFIFOCount(SDMMC_TypeDef *SDMMCx) + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return (SDMMCx->FIFO); + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Sets one of the two options of inserting read wait interval. + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMC_ReadWaitMode: SDMMC Read Wait operation mode. + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * This parameter can be: + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @arg SDMMC_READ_WAIT_MODE_CLK: Read Wait control by stopping SDMMCCLK + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @arg SDMMC_READ_WAIT_MODE_DATA2: Read Wait control using SDMMC_DATA2 + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval None + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** HAL_StatusTypeDef SDMMC_SetSDMMCReadWaitMode(SDMMC_TypeDef *SDMMCx, uint32_t SDMMC_ReadWaitMode) + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check the parameters */ + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_READWAIT_MODE(SDMMC_ReadWaitMode)); + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set SDMMC read wait mode */ + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** MODIFY_REG(SDMMCx->DCTRL, SDMMC_DCTRL_RWMOD, SDMMC_ReadWaitMode); + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return HAL_OK; + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @} + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + ARM GAS /tmp/ccODg7xx.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** @defgroup HAL_SDMMC_LL_Group4 Command management functions + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Data transfers functions + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @verbatim + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** =============================================================================== + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ##### Commands management functions ##### + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** =============================================================================== + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** This subsection provides a set of functions allowing to manage the needed commands. + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @endverbatim + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @{ + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Data Block Length command and check the response + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdBlockLength(SDMMC_TypeDef *SDMMCx, uint32_t BlockSize) + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set Block Size for Card */ + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)BlockSize; + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_BLOCKLEN; + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SET_BLOCKLEN, SDMMC_CMDTIMEOUT); + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Read Single Block command and check the response + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdReadSingleBlock(SDMMC_TypeDef *SDMMCx, uint32_t ReadAdd) + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set Block Size for Card */ + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)ReadAdd; + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_READ_SINGLE_BLOCK; + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + ARM GAS /tmp/ccODg7xx.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_READ_SINGLE_BLOCK, SDMMC_CMDTIMEOUT); + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Read Multi Block command and check the response + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdReadMultiBlock(SDMMC_TypeDef *SDMMCx, uint32_t ReadAdd) + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set Block Size for Card */ + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)ReadAdd; + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_READ_MULT_BLOCK; + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_READ_MULT_BLOCK, SDMMC_CMDTIMEOUT); + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Write Single Block command and check the response + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdWriteSingleBlock(SDMMC_TypeDef *SDMMCx, uint32_t WriteAdd) + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set Block Size for Card */ + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)WriteAdd; + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_WRITE_SINGLE_BLOCK; + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_WRITE_SINGLE_BLOCK, SDMMC_CMDTIMEOUT); + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Write Multi Block command and check the response + ARM GAS /tmp/ccODg7xx.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdWriteMultiBlock(SDMMC_TypeDef *SDMMCx, uint32_t WriteAdd) + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set Block Size for Card */ + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)WriteAdd; + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_WRITE_MULT_BLOCK; + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_WRITE_MULT_BLOCK, SDMMC_CMDTIMEOUT); + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Start Address Erase command for SD and check the response + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSDEraseStartAdd(SDMMC_TypeDef *SDMMCx, uint32_t StartAdd) + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set Block Size for Card */ + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)StartAdd; + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_ERASE_GRP_START; + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SD_ERASE_GRP_START, SDMMC_CMDTIMEOUT); + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the End Address Erase command for SD and check the response + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSDEraseEndAdd(SDMMC_TypeDef *SDMMCx, uint32_t EndAdd) + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set Block Size for Card */ + ARM GAS /tmp/ccODg7xx.s page 13 + + + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)EndAdd; + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_ERASE_GRP_END; + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SD_ERASE_GRP_END, SDMMC_CMDTIMEOUT); + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Start Address Erase command and check the response + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdEraseStartAdd(SDMMC_TypeDef *SDMMCx, uint32_t StartAdd) + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set Block Size for Card */ + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)StartAdd; + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE_GRP_START; + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_ERASE_GRP_START, SDMMC_CMDTIMEOUT); + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the End Address Erase command and check the response + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdEraseEndAdd(SDMMC_TypeDef *SDMMCx, uint32_t EndAdd) + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set Block Size for Card */ + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)EndAdd; + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE_GRP_END; + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_ERASE_GRP_END, SDMMC_CMDTIMEOUT); + ARM GAS /tmp/ccODg7xx.s page 14 + + + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Erase command and check the response + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdErase(SDMMC_TypeDef *SDMMCx) + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set Block Size for Card */ + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = 0U; + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE; + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_ERASE, SDMMC_MAXERASETIMEOUT); + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Stop Transfer command and check the response. + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdStopTransfer(SDMMC_TypeDef *SDMMCx) + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Send CMD12 STOP_TRANSMISSION */ + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = 0U; + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_STOP_TRANSMISSION; + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_STOP_TRANSMISSION, SDMMC_STOPTRANSFERTIMEOUT); + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Select Deselect command and check the response. + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param addr: Address of the card to be selected + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + ARM GAS /tmp/ccODg7xx.s page 15 + + + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSelDesel(SDMMC_TypeDef *SDMMCx, uint64_t Addr) + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Send CMD7 SDMMC_SEL_DESEL_CARD */ + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)Addr; + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEL_DESEL_CARD; + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SEL_DESEL_CARD, SDMMC_CMDTIMEOUT); + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Go Idle State command and check the response. + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdGoIdleState(SDMMC_TypeDef *SDMMCx) + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = 0U; + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_GO_IDLE_STATE; + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_NO; + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdError(SDMMCx); + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Operating Condition command and check the response. + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdOperCond(SDMMC_TypeDef *SDMMCx) + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Send CMD8 to verify SD card interface operating condition */ + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Argument: - [31:12]: Reserved (shall be set to '0') + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** - [11:8]: Supply Voltage (VHS) 0x1 (Range: 2.7-3.6 V) + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** - [7:0]: Check Pattern (recommended 0xAA) */ + ARM GAS /tmp/ccODg7xx.s page 16 + + + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* CMD Response: R7 */ + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = SDMMC_CHECK_PATTERN; + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SEND_EXT_CSD; + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp7(SDMMCx); + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Application command to verify that that the next command + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * is an application specific com-mand rather than a standard command + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * and check the response. + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param Argument: Command Argument + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdAppCommand(SDMMC_TypeDef *SDMMCx, uint32_t Argument) + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)Argument; + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_APP_CMD; + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* If there is a HAL_ERROR, it is a MMC card, else + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** it is a SD card: SD card 2.0 (voltage range mismatch) + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** or SD card 1.x */ + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_APP_CMD, SDMMC_CMDTIMEOUT); + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the command asking the accessed card to send its operating + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * condition register (OCR) + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param Argument: Command Argument + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdAppOperCommand(SDMMC_TypeDef *SDMMCx, uint32_t Argument) + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = SDMMC_VOLTAGE_WINDOW_SD | Argument; + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_OP_COND; + ARM GAS /tmp/ccODg7xx.s page 17 + + + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp3(SDMMCx); + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Bus Width command and check the response. + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param BusWidth: BusWidth + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdBusWidth(SDMMC_TypeDef *SDMMCx, uint32_t BusWidth) + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = (uint32_t)BusWidth; + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_APP_SD_SET_BUSWIDTH; + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_APP_SD_SET_BUSWIDTH, SDMMC_CMDTIMEOUT); + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Send SCR command and check the response. + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSendSCR(SDMMC_TypeDef *SDMMCx) + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Send CMD51 SD_APP_SEND_SCR */ + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = 0U; + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_SEND_SCR; + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SD_APP_SEND_SCR, SDMMC_CMDTIMEOUT); + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + ARM GAS /tmp/ccODg7xx.s page 18 + + + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Send CID command and check the response. + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSendCID(SDMMC_TypeDef *SDMMCx) + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Send CMD2 ALL_SEND_CID */ + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = 0U; + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ALL_SEND_CID; + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_LONG; + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp2(SDMMCx); + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Send CSD command and check the response. + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param Argument: Command Argument + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSendCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument) + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Send CMD9 SEND_CSD */ + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = Argument; + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_CSD; + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_LONG; + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp2(SDMMCx); + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Send CSD command and check the response. + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param pRCA: Card RCA + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ + ARM GAS /tmp/ccODg7xx.s page 19 + + +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSetRelAdd(SDMMC_TypeDef *SDMMCx, uint16_t *pRCA) +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Send CMD3 SD_CMD_SET_REL_ADDR */ +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = 0U; +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_REL_ADDR; +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp6(SDMMCx, SDMMC_CMD_SET_REL_ADDR, pRCA); +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Set Relative Address command to MMC card (not SD card). +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx Pointer to SDMMC register base +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param RCA Card RCA +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSetRelAddMmc(SDMMC_TypeDef *SDMMCx, uint16_t RCA) +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Send CMD3 SD_CMD_SET_REL_ADDR */ +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = ((uint32_t)RCA << 16U); +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_REL_ADDR; +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SET_REL_ADDR, SDMMC_CMDTIMEOUT); +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Status command and check the response. +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param Argument: Command Argument +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSendStatus(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = Argument; +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_STATUS; + ARM GAS /tmp/ccODg7xx.s page 20 + + +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SEND_STATUS, SDMMC_CMDTIMEOUT); +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Status register command and check the response. +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdStatusRegister(SDMMC_TypeDef *SDMMCx) +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = 0U; +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_STATUS; +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_SD_APP_STATUS, SDMMC_CMDTIMEOUT); +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Sends host capacity support information and activates the card's +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * initialization process. Send SDMMC_CMD_SEND_OP_COND command +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @parame Argument: Argument used for the command +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdOpCondition(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = Argument; +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_OP_COND; +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp3(SDMMCx); +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; + ARM GAS /tmp/ccODg7xx.s page 21 + + +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Checks switchable function and switch card function. SDMMC_CMD_HS_SWITCH command +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx: Pointer to SDMMC register base +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @parame Argument: Argument used for the command +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSwitch(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Send CMD6 to activate SDR50 Mode and Power Limit 1.44W */ +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* CMD Response: R1 */ +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = Argument; /* SDMMC_SDR25_SWITCH_PATTERN */ +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SWITCH; +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_HS_SWITCH, SDMMC_CMDTIMEOUT); +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Send the Send EXT_CSD command and check the response. +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx Pointer to SDMMC register base +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param Argument Command Argument +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval HAL status +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_CmdSendEXTCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument) +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Send CMD9 SEND_CSD */ +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Argument = Argument; +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SEND_EXT_CSD; +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check for error conditions */ +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** errorstate = SDMMC_GetCmdResp1(SDMMCx, SDMMC_CMD_HS_SEND_EXT_CSD,SDMMC_CMDTIMEOUT); +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return errorstate; +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @} +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + ARM GAS /tmp/ccODg7xx.s page 22 + + +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** @defgroup HAL_SDMMC_LL_Group5 Responses management functions +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Responses functions +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @verbatim +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** =============================================================================== +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ##### Responses management functions ##### +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** =============================================================================== +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** [..] +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** This subsection provides a set of functions allowing to manage the needed responses. +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** @endverbatim +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @{ +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Checks for error conditions for R1 response. +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx Pointer to SDMMC register base +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SD_CMD: The sent command index +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval SD Card error state +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_GetCmdResp1(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint32_t Timeout) +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t response_r1; +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* 8 is the number of required instructions cycles for the below loop statement. +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The Timeout is expressed in ms */ +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t count = Timeout * (SystemCoreClock / 8U /1000U); +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** do +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if (count-- == 0U) +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_TIMEOUT; +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sta_reg = SDMMCx->STA; +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT)) +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT); +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_RSP_TIMEOUT; +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL)) +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL); +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_CRC_FAIL; +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Nothing to do */ +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Clear all the static flags */ +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS); + ARM GAS /tmp/ccODg7xx.s page 23 + + +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check response received is of desired command */ +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if(SDMMC_GetCommandResponse(SDMMCx) != SD_CMD) +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_CRC_FAIL; +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* We have received response, retrieve it for analysis */ +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** response_r1 = SDMMC_GetResponse(SDMMCx, SDMMC_RESP1); +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if((response_r1 & SDMMC_OCR_ERRORBITS) == SDMMC_ALLZERO) +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_NONE; +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_ADDR_OUT_OF_RANGE) == SDMMC_OCR_ADDR_OUT_OF_RANGE) +1244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_ADDR_OUT_OF_RANGE; +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_ADDR_MISALIGNED) == SDMMC_OCR_ADDR_MISALIGNED) +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_ADDR_MISALIGNED; +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_BLOCK_LEN_ERR) == SDMMC_OCR_BLOCK_LEN_ERR) +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_BLOCK_LEN_ERR; +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_ERASE_SEQ_ERR) == SDMMC_OCR_ERASE_SEQ_ERR) +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_ERASE_SEQ_ERR; +1258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_BAD_ERASE_PARAM) == SDMMC_OCR_BAD_ERASE_PARAM) +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_BAD_ERASE_PARAM; +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_WRITE_PROT_VIOLATION) == SDMMC_OCR_WRITE_PROT_VIOLATION) +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_WRITE_PROT_VIOLATION; +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_LOCK_UNLOCK_FAILED) == SDMMC_OCR_LOCK_UNLOCK_FAILED) +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_LOCK_UNLOCK_FAILED; +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_COM_CRC_FAILED) == SDMMC_OCR_COM_CRC_FAILED) +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_COM_CRC_FAILED; +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_ILLEGAL_CMD) == SDMMC_OCR_ILLEGAL_CMD) +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_ILLEGAL_CMD; +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_CARD_ECC_FAILED) == SDMMC_OCR_CARD_ECC_FAILED) +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CARD_ECC_FAILED; +1282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_CC_ERROR) == SDMMC_OCR_CC_ERROR) +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CC_ERR; + ARM GAS /tmp/ccODg7xx.s page 24 + + +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_STREAM_READ_UNDERRUN) == SDMMC_OCR_STREAM_READ_UNDERRUN) +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_STREAM_READ_UNDERRUN; +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_STREAM_WRITE_OVERRUN) == SDMMC_OCR_STREAM_WRITE_OVERRUN) +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_STREAM_WRITE_OVERRUN; +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_CID_CSD_OVERWRITE) == SDMMC_OCR_CID_CSD_OVERWRITE) +1296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CID_CSD_OVERWRITE; +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_WP_ERASE_SKIP) == SDMMC_OCR_WP_ERASE_SKIP) +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_WP_ERASE_SKIP; +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_CARD_ECC_DISABLED) == SDMMC_OCR_CARD_ECC_DISABLED) +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CARD_ECC_DISABLED; +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_ERASE_RESET) == SDMMC_OCR_ERASE_RESET) +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_ERASE_RESET; +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_OCR_AKE_SEQ_ERROR) == SDMMC_OCR_AKE_SEQ_ERROR) +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_AKE_SEQ_ERR; +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_GENERAL_UNKNOWN_ERR; +1318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Checks for error conditions for R2 (CID or CSD) response. +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx Pointer to SDMMC register base +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval SD Card error state +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_GetCmdResp2(SDMMC_TypeDef *SDMMCx) +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* 8 is the number of required instructions cycles for the below loop statement. +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The SDMMC_CMDTIMEOUT is expressed in ms */ +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** do +1334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if (count-- == 0U) +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_TIMEOUT; +1338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sta_reg = SDMMCx->STA; +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); +1342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + ARM GAS /tmp/ccODg7xx.s page 25 + + +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if (__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT)) +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT); +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_RSP_TIMEOUT; +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if (__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL)) +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL); +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_CRC_FAIL; +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* No error flag set */ +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Clear all the static flags */ +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS); +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_NONE; +1363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Checks for error conditions for R3 (OCR) response. +1367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx Pointer to SDMMC register base +1368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval SD Card error state +1369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_GetCmdResp3(SDMMC_TypeDef *SDMMCx) +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; +1373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* 8 is the number of required instructions cycles for the below loop statement. +1374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The SDMMC_CMDTIMEOUT is expressed in ms */ +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); +1376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** do +1378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if (count-- == 0U) +1380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_TIMEOUT; +1382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sta_reg = SDMMCx->STA; +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); +1386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT)) +1388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT); +1390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_RSP_TIMEOUT; +1392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else +1394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Clear all the static flags */ +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS); +1397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_NONE; + ARM GAS /tmp/ccODg7xx.s page 26 + + +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Checks for error conditions for R6 (RCA) response. +1404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx Pointer to SDMMC register base +1405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SD_CMD: The sent command index +1406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param pRCA: Pointer to the variable that will contain the SD card relative +1407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * address RCA +1408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval SD Card error state +1409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_GetCmdResp6(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint16_t *pRCA) +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t response_r1; +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; +1414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* 8 is the number of required instructions cycles for the below loop statement. +1416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The SDMMC_CMDTIMEOUT is expressed in ms */ +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); +1418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** do +1420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if (count-- == 0U) +1422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_TIMEOUT; +1424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sta_reg = SDMMCx->STA; +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); +1428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT)) +1430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT); +1432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_RSP_TIMEOUT; +1434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL)) +1436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL); +1438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_CRC_FAIL; +1440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else +1442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Nothing to do */ +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check response received is of desired command */ +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if(SDMMC_GetCommandResponse(SDMMCx) != SD_CMD) +1448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_CRC_FAIL; +1450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Clear all the static flags */ +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS); +1454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* We have received response, retrieve it. */ +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** response_r1 = SDMMC_GetResponse(SDMMCx, SDMMC_RESP1); + ARM GAS /tmp/ccODg7xx.s page 27 + + +1457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if((response_r1 & (SDMMC_R6_GENERAL_UNKNOWN_ERROR | SDMMC_R6_ILLEGAL_CMD | SDMMC_R6_COM_CRC_FAILE +1459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** *pRCA = (uint16_t) (response_r1 >> 16); +1461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_NONE; +1463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_R6_ILLEGAL_CMD) == SDMMC_R6_ILLEGAL_CMD) +1465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_ILLEGAL_CMD; +1467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if((response_r1 & SDMMC_R6_COM_CRC_FAILED) == SDMMC_R6_COM_CRC_FAILED) +1469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_COM_CRC_FAILED; +1471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else +1473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_GENERAL_UNKNOWN_ERR; +1475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Checks for error conditions for R7 response. +1480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx Pointer to SDMMC register base +1481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval SD Card error state +1482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t SDMMC_GetCmdResp7(SDMMC_TypeDef *SDMMCx) +1484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; +1486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* 8 is the number of required instructions cycles for the below loop statement. +1487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The SDMMC_CMDTIMEOUT is expressed in ms */ +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); +1489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** do +1491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if (count-- == 0U) +1493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_TIMEOUT; +1495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sta_reg = SDMMCx->STA; +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); +1499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT)) +1501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Card is SD V2.0 compliant */ +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CTIMEOUT); +1504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_RSP_TIMEOUT; +1506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL)) +1508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Card is SD V2.0 compliant */ +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CCRCFAIL); +1511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_CMD_CRC_FAIL; +1513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + ARM GAS /tmp/ccODg7xx.s page 28 + + +1514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** else +1515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Nothing to do */ +1517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if(__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CMDREND)) +1520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Card is SD V2.0 compliant */ +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_FLAG_CMDREND); +1523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_NONE; +1526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @} +1531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Private function ----------------------------------------------------------*/ +1534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** @addtogroup SD_Private_Functions +1535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @{ +1536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /** +1539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @brief Checks for error conditions for CMD0. +1540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @param SDMMCx Pointer to SDMMC register base +1541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** * @retval SD Card error state +1542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** */ +1543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** static uint32_t SDMMC_GetCmdError(SDMMC_TypeDef *SDMMCx) +1544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 28 .loc 1 1544 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. +1545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* 8 is the number of required instructions cycles for the below loop statement. +1546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** The SDMMC_CMDTIMEOUT is expressed in ms */ +1547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t count = SDMMC_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + 33 .loc 1 1547 3 view .LVU1 + 34 .loc 1 1547 61 is_stmt 0 view .LVU2 + 35 0000 0B4B ldr r3, .L5 + 36 0002 1B68 ldr r3, [r3] + 37 0004 0B4A ldr r2, .L5+4 + 38 0006 A2FB0323 umull r2, r3, r2, r3 + 39 000a 5B0A lsrs r3, r3, #9 + 40 .loc 1 1547 12 view .LVU3 + 41 000c 41F28832 movw r2, #5000 + 42 0010 02FB03F3 mul r3, r2, r3 + 43 .LVL1: + 44 .L3: +1548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** do + 45 .loc 1 1549 3 is_stmt 1 view .LVU4 +1550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** if (count-- == 0U) + 46 .loc 1 1551 5 view .LVU5 + ARM GAS /tmp/ccODg7xx.s page 29 + + + 47 0014 1A46 mov r2, r3 + 48 .loc 1 1551 14 is_stmt 0 view .LVU6 + 49 0016 013B subs r3, r3, #1 + 50 .LVL2: + 51 .loc 1 1551 8 view .LVU7 + 52 0018 3AB1 cbz r2, .L4 +1552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { +1553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_TIMEOUT; +1554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } +1555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(!__SDMMC_GET_FLAG(SDMMCx, SDMMC_FLAG_CMDSENT)); + 53 .loc 1 1556 9 is_stmt 1 view .LVU8 + 54 .loc 1 1556 11 is_stmt 0 view .LVU9 + 55 001a 426B ldr r2, [r0, #52] + 56 .loc 1 1556 3 view .LVU10 + 57 001c 12F0800F tst r2, #128 + 58 0020 F8D0 beq .L3 +1557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Clear all the static flags */ +1559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** __SDMMC_CLEAR_FLAG(SDMMCx, SDMMC_STATIC_CMD_FLAGS); + 59 .loc 1 1559 3 is_stmt 1 view .LVU11 + 60 0022 C523 movs r3, #197 + 61 .LVL3: + 62 .loc 1 1559 3 is_stmt 0 view .LVU12 + 63 0024 8363 str r3, [r0, #56] +1560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** +1561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return SDMMC_ERROR_NONE; + 64 .loc 1 1561 3 is_stmt 1 view .LVU13 + 65 .loc 1 1561 10 is_stmt 0 view .LVU14 + 66 0026 0020 movs r0, #0 + 67 .LVL4: + 68 .loc 1 1561 10 view .LVU15 + 69 0028 7047 bx lr + 70 .LVL5: + 71 .L4: +1553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 72 .loc 1 1553 14 view .LVU16 + 73 002a 4FF00040 mov r0, #-2147483648 + 74 .LVL6: +1562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 75 .loc 1 1562 1 view .LVU17 + 76 002e 7047 bx lr + 77 .L6: + 78 .align 2 + 79 .L5: + 80 0030 00000000 .word SystemCoreClock + 81 0034 D34D6210 .word 274877907 + 82 .cfi_endproc + 83 .LFE186: + 85 .section .text.SDMMC_Init,"ax",%progbits + 86 .align 1 + 87 .global SDMMC_Init + 88 .syntax unified + 89 .thumb + 90 .thumb_func + 91 .fpu fpv5-d16 + 93 SDMMC_Init: + ARM GAS /tmp/ccODg7xx.s page 30 + + + 94 .LVL7: + 95 .LFB141: + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t tmpreg = 0; + 96 .loc 1 208 1 is_stmt 1 view -0 + 97 .cfi_startproc + 98 @ args = 28, pretend = 16, frame = 0 + 99 @ frame_needed = 0, uses_anonymous_args = 0 + 100 @ link register save eliminated. + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t tmpreg = 0; + 101 .loc 1 208 1 is_stmt 0 view .LVU19 + 102 0000 84B0 sub sp, sp, #16 + 103 .LCFI0: + 104 .cfi_def_cfa_offset 16 + 105 0002 0DF1040C add ip, sp, #4 + 106 0006 8CE80E00 stm ip, {r1, r2, r3} + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 107 .loc 1 209 3 is_stmt 1 view .LVU20 + 108 .LVL8: + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CLOCK_EDGE(Init.ClockEdge)); + 109 .loc 1 212 3 view .LVU21 + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CLOCK_BYPASS(Init.ClockBypass)); + 110 .loc 1 213 3 view .LVU22 + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CLOCK_POWER_SAVE(Init.ClockPowerSave)); + 111 .loc 1 214 3 view .LVU23 + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_BUS_WIDE(Init.BusWide)); + 112 .loc 1 215 3 view .LVU24 + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(Init.HardwareFlowControl)); + 113 .loc 1 216 3 view .LVU25 + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CLKDIV(Init.ClockDiv)); + 114 .loc 1 217 3 view .LVU26 + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 115 .loc 1 218 3 view .LVU27 + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.ClockBypass |\ + 116 .loc 1 221 3 view .LVU28 + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.ClockBypass |\ + 117 .loc 1 221 39 is_stmt 0 view .LVU29 + 118 000a 0B46 mov r3, r1 + 119 000c 1343 orrs r3, r3, r2 + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.BusWide |\ + 120 .loc 1 223 18 view .LVU30 + 121 000e 039A ldr r2, [sp, #12] + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.ClockPowerSave |\ + 122 .loc 1 222 39 view .LVU31 + 123 0010 1343 orrs r3, r3, r2 + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.HardwareFlowControl |\ + 124 .loc 1 224 18 view .LVU32 + 125 0012 049A ldr r2, [sp, #16] + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.BusWide |\ + 126 .loc 1 223 39 view .LVU33 + 127 0014 1343 orrs r3, r3, r2 + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.ClockDiv + 128 .loc 1 225 18 view .LVU34 + 129 0016 059A ldr r2, [sp, #20] + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.HardwareFlowControl |\ + 130 .loc 1 224 39 view .LVU35 + 131 0018 1343 orrs r3, r3, r2 + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ); + ARM GAS /tmp/ccODg7xx.s page 31 + + + 132 .loc 1 226 18 view .LVU36 + 133 001a 069A ldr r2, [sp, #24] + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Init.ClockDiv + 134 .loc 1 225 39 view .LVU37 + 135 001c 1343 orrs r3, r3, r2 + 136 .LVL9: + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 137 .loc 1 230 3 is_stmt 1 view .LVU38 + 138 001e 4168 ldr r1, [r0, #4] + 139 0020 034A ldr r2, .L9 + 140 0022 0A40 ands r2, r2, r1 + 141 0024 1343 orrs r3, r3, r2 + 142 .LVL10: + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 143 .loc 1 230 3 is_stmt 0 view .LVU39 + 144 0026 4360 str r3, [r0, #4] + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 145 .loc 1 232 3 is_stmt 1 view .LVU40 + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 146 .loc 1 233 1 is_stmt 0 view .LVU41 + 147 0028 0020 movs r0, #0 + 148 .LVL11: + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 149 .loc 1 233 1 view .LVU42 + 150 002a 04B0 add sp, sp, #16 + 151 .LCFI1: + 152 .cfi_def_cfa_offset 0 + 153 002c 7047 bx lr + 154 .L10: + 155 002e 00BF .align 2 + 156 .L9: + 157 0030 0081FFFF .word -32512 + 158 .cfi_endproc + 159 .LFE141: + 161 .section .text.SDMMC_ReadFIFO,"ax",%progbits + 162 .align 1 + 163 .global SDMMC_ReadFIFO + 164 .syntax unified + 165 .thumb + 166 .thumb_func + 167 .fpu fpv5-d16 + 169 SDMMC_ReadFIFO: + 170 .LVL12: + 171 .LFB142: + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Read data from Rx FIFO */ + 172 .loc 1 261 1 is_stmt 1 view -0 + 173 .cfi_startproc + 174 @ args = 0, pretend = 0, frame = 0 + 175 @ frame_needed = 0, uses_anonymous_args = 0 + 176 @ link register save eliminated. + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 177 .loc 1 263 3 view .LVU44 + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 178 .loc 1 263 17 is_stmt 0 view .LVU45 + 179 0000 D0F88000 ldr r0, [r0, #128] + 180 .LVL13: + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + ARM GAS /tmp/ccODg7xx.s page 32 + + + 181 .loc 1 264 1 view .LVU46 + 182 0004 7047 bx lr + 183 .cfi_endproc + 184 .LFE142: + 186 .section .text.SDMMC_WriteFIFO,"ax",%progbits + 187 .align 1 + 188 .global SDMMC_WriteFIFO + 189 .syntax unified + 190 .thumb + 191 .thumb_func + 192 .fpu fpv5-d16 + 194 SDMMC_WriteFIFO: + 195 .LVL14: + 196 .LFB143: + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Write data to FIFO */ + 197 .loc 1 273 1 is_stmt 1 view -0 + 198 .cfi_startproc + 199 @ args = 0, pretend = 0, frame = 0 + 200 @ frame_needed = 0, uses_anonymous_args = 0 + 201 @ link register save eliminated. + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 202 .loc 1 275 3 view .LVU48 + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 203 .loc 1 275 18 is_stmt 0 view .LVU49 + 204 0000 0B68 ldr r3, [r1] + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 205 .loc 1 275 16 view .LVU50 + 206 0002 C0F88030 str r3, [r0, #128] + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 207 .loc 1 277 3 is_stmt 1 view .LVU51 + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 208 .loc 1 278 1 is_stmt 0 view .LVU52 + 209 0006 0020 movs r0, #0 + 210 .LVL15: + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 211 .loc 1 278 1 view .LVU53 + 212 0008 7047 bx lr + 213 .cfi_endproc + 214 .LFE143: + 216 .section .text.SDMMC_PowerState_ON,"ax",%progbits + 217 .align 1 + 218 .global SDMMC_PowerState_ON + 219 .syntax unified + 220 .thumb + 221 .thumb_func + 222 .fpu fpv5-d16 + 224 SDMMC_PowerState_ON: + 225 .LVL16: + 226 .LFB144: + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set power state to ON */ + 227 .loc 1 305 1 is_stmt 1 view -0 + 228 .cfi_startproc + 229 @ args = 0, pretend = 0, frame = 0 + 230 @ frame_needed = 0, uses_anonymous_args = 0 + 231 @ link register save eliminated. + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 232 .loc 1 307 3 view .LVU55 + ARM GAS /tmp/ccODg7xx.s page 33 + + + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 233 .loc 1 307 17 is_stmt 0 view .LVU56 + 234 0000 0323 movs r3, #3 + 235 0002 0360 str r3, [r0] + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 236 .loc 1 309 3 is_stmt 1 view .LVU57 + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 237 .loc 1 310 1 is_stmt 0 view .LVU58 + 238 0004 0020 movs r0, #0 + 239 .LVL17: + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 240 .loc 1 310 1 view .LVU59 + 241 0006 7047 bx lr + 242 .cfi_endproc + 243 .LFE144: + 245 .section .text.SDMMC_PowerState_OFF,"ax",%progbits + 246 .align 1 + 247 .global SDMMC_PowerState_OFF + 248 .syntax unified + 249 .thumb + 250 .thumb_func + 251 .fpu fpv5-d16 + 253 SDMMC_PowerState_OFF: + 254 .LVL18: + 255 .LFB145: + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set power state to OFF */ + 256 .loc 1 318 1 is_stmt 1 view -0 + 257 .cfi_startproc + 258 @ args = 0, pretend = 0, frame = 0 + 259 @ frame_needed = 0, uses_anonymous_args = 0 + 260 @ link register save eliminated. + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Set power state to OFF */ + 261 .loc 1 318 1 is_stmt 0 view .LVU61 + 262 0000 0346 mov r3, r0 + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 263 .loc 1 320 3 is_stmt 1 view .LVU62 + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 264 .loc 1 320 17 is_stmt 0 view .LVU63 + 265 0002 0020 movs r0, #0 + 266 .LVL19: + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 267 .loc 1 320 17 view .LVU64 + 268 0004 1860 str r0, [r3] + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 269 .loc 1 322 3 is_stmt 1 view .LVU65 + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 270 .loc 1 323 1 is_stmt 0 view .LVU66 + 271 0006 7047 bx lr + 272 .cfi_endproc + 273 .LFE145: + 275 .section .text.SDMMC_GetPowerState,"ax",%progbits + 276 .align 1 + 277 .global SDMMC_GetPowerState + 278 .syntax unified + 279 .thumb + 280 .thumb_func + 281 .fpu fpv5-d16 + ARM GAS /tmp/ccODg7xx.s page 34 + + + 283 SDMMC_GetPowerState: + 284 .LVL20: + 285 .LFB146: + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return (SDMMCx->POWER & SDMMC_POWER_PWRCTRL); + 286 .loc 1 335 1 is_stmt 1 view -0 + 287 .cfi_startproc + 288 @ args = 0, pretend = 0, frame = 0 + 289 @ frame_needed = 0, uses_anonymous_args = 0 + 290 @ link register save eliminated. + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 291 .loc 1 336 3 view .LVU68 + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 292 .loc 1 336 17 is_stmt 0 view .LVU69 + 293 0000 0068 ldr r0, [r0] + 294 .LVL21: + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 295 .loc 1 337 1 view .LVU70 + 296 0002 00F00300 and r0, r0, #3 + 297 0006 7047 bx lr + 298 .cfi_endproc + 299 .LFE146: + 301 .section .text.SDMMC_SendCommand,"ax",%progbits + 302 .align 1 + 303 .global SDMMC_SendCommand + 304 .syntax unified + 305 .thumb + 306 .thumb_func + 307 .fpu fpv5-d16 + 309 SDMMC_SendCommand: + 310 .LVL22: + 311 .LFB147: + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t tmpreg = 0; + 312 .loc 1 348 1 is_stmt 1 view -0 + 313 .cfi_startproc + 314 @ args = 0, pretend = 0, frame = 0 + 315 @ frame_needed = 0, uses_anonymous_args = 0 + 316 @ link register save eliminated. + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 317 .loc 1 349 3 view .LVU72 + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_RESPONSE(Command->Response)); + 318 .loc 1 352 3 view .LVU73 + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_WAIT(Command->WaitForInterrupt)); + 319 .loc 1 353 3 view .LVU74 + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_CPSM(Command->CPSM)); + 320 .loc 1 354 3 view .LVU75 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 321 .loc 1 355 3 view .LVU76 + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 322 .loc 1 358 3 view .LVU77 + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 323 .loc 1 358 24 is_stmt 0 view .LVU78 + 324 0000 0B68 ldr r3, [r1] + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 325 .loc 1 358 15 view .LVU79 + 326 0002 8360 str r3, [r0, #8] + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Command->Response |\ + 327 .loc 1 361 3 is_stmt 1 view .LVU80 + ARM GAS /tmp/ccODg7xx.s page 35 + + + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Command->Response |\ + 328 .loc 1 361 31 is_stmt 0 view .LVU81 + 329 0004 4B68 ldr r3, [r1, #4] + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Command->WaitForInterrupt |\ + 330 .loc 1 362 31 view .LVU82 + 331 0006 8A68 ldr r2, [r1, #8] + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Command->Response |\ + 332 .loc 1 361 50 view .LVU83 + 333 0008 1343 orrs r3, r3, r2 + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Command->CPSM); + 334 .loc 1 363 31 view .LVU84 + 335 000a CA68 ldr r2, [r1, #12] + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Command->WaitForInterrupt |\ + 336 .loc 1 362 50 view .LVU85 + 337 000c 1343 orrs r3, r3, r2 + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 338 .loc 1 364 31 view .LVU86 + 339 000e 0A69 ldr r2, [r1, #16] + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Command->CPSM); + 340 .loc 1 363 50 view .LVU87 + 341 0010 1343 orrs r3, r3, r2 + 342 .LVL23: + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 343 .loc 1 367 3 is_stmt 1 view .LVU88 + 344 0012 C168 ldr r1, [r0, #12] + 345 .LVL24: + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 346 .loc 1 367 3 is_stmt 0 view .LVU89 + 347 0014 024A ldr r2, .L17 + 348 0016 0A40 ands r2, r2, r1 + 349 0018 1343 orrs r3, r3, r2 + 350 .LVL25: + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 351 .loc 1 367 3 view .LVU90 + 352 001a C360 str r3, [r0, #12] + 353 .LVL26: + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 354 .loc 1 369 3 is_stmt 1 view .LVU91 + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 355 .loc 1 370 1 is_stmt 0 view .LVU92 + 356 001c 0020 movs r0, #0 + 357 .LVL27: + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 358 .loc 1 370 1 view .LVU93 + 359 001e 7047 bx lr + 360 .L18: + 361 .align 2 + 362 .L17: + 363 0020 00F0FFFF .word -4096 + 364 .cfi_endproc + 365 .LFE147: + 367 .section .text.SDMMC_GetCommandResponse,"ax",%progbits + 368 .align 1 + 369 .global SDMMC_GetCommandResponse + 370 .syntax unified + 371 .thumb + 372 .thumb_func + ARM GAS /tmp/ccODg7xx.s page 36 + + + 373 .fpu fpv5-d16 + 375 SDMMC_GetCommandResponse: + 376 .LVL28: + 377 .LFB148: + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return (uint8_t)(SDMMCx->RESPCMD); + 378 .loc 1 378 1 is_stmt 1 view -0 + 379 .cfi_startproc + 380 @ args = 0, pretend = 0, frame = 0 + 381 @ frame_needed = 0, uses_anonymous_args = 0 + 382 @ link register save eliminated. + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 383 .loc 1 379 3 view .LVU95 + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 384 .loc 1 379 26 is_stmt 0 view .LVU96 + 385 0000 0069 ldr r0, [r0, #16] + 386 .LVL29: + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 387 .loc 1 380 1 view .LVU97 + 388 0002 C0B2 uxtb r0, r0 + 389 0004 7047 bx lr + 390 .cfi_endproc + 391 .LFE148: + 393 .section .text.SDMMC_GetResponse,"ax",%progbits + 394 .align 1 + 395 .global SDMMC_GetResponse + 396 .syntax unified + 397 .thumb + 398 .thumb_func + 399 .fpu fpv5-d16 + 401 SDMMC_GetResponse: + 402 .LVL30: + 403 .LFB149: + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t tmp; + 404 .loc 1 395 1 is_stmt 1 view -0 + 405 .cfi_startproc + 406 @ args = 0, pretend = 0, frame = 0 + 407 @ frame_needed = 0, uses_anonymous_args = 0 + 408 @ link register save eliminated. + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 409 .loc 1 396 3 view .LVU99 + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 410 .loc 1 399 3 view .LVU100 + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 411 .loc 1 402 3 view .LVU101 + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 412 .loc 1 402 20 is_stmt 0 view .LVU102 + 413 0000 1430 adds r0, r0, #20 + 414 .LVL31: + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 415 .loc 1 404 3 is_stmt 1 view .LVU103 + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 416 .loc 1 404 11 is_stmt 0 view .LVU104 + 417 0002 4058 ldr r0, [r0, r1] + 418 .LVL32: + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 419 .loc 1 405 1 view .LVU105 + 420 0004 7047 bx lr + ARM GAS /tmp/ccODg7xx.s page 37 + + + 421 .cfi_endproc + 422 .LFE149: + 424 .section .text.SDMMC_ConfigData,"ax",%progbits + 425 .align 1 + 426 .global SDMMC_ConfigData + 427 .syntax unified + 428 .thumb + 429 .thumb_func + 430 .fpu fpv5-d16 + 432 SDMMC_ConfigData: + 433 .LVL33: + 434 .LFB150: + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t tmpreg = 0; + 435 .loc 1 416 1 is_stmt 1 view -0 + 436 .cfi_startproc + 437 @ args = 0, pretend = 0, frame = 0 + 438 @ frame_needed = 0, uses_anonymous_args = 0 + 439 @ link register save eliminated. + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 440 .loc 1 417 3 view .LVU107 + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_BLOCK_SIZE(Data->DataBlockSize)); + 441 .loc 1 420 3 view .LVU108 + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_TRANSFER_DIR(Data->TransferDir)); + 442 .loc 1 421 3 view .LVU109 + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_TRANSFER_MODE(Data->TransferMode)); + 443 .loc 1 422 3 view .LVU110 + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** assert_param(IS_SDMMC_DPSM(Data->DPSM)); + 444 .loc 1 423 3 view .LVU111 + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 445 .loc 1 424 3 view .LVU112 + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 446 .loc 1 427 3 view .LVU113 + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 447 .loc 1 427 24 is_stmt 0 view .LVU114 + 448 0000 0B68 ldr r3, [r1] + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 449 .loc 1 427 18 view .LVU115 + 450 0002 4362 str r3, [r0, #36] + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 451 .loc 1 430 3 is_stmt 1 view .LVU116 + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 452 .loc 1 430 22 is_stmt 0 view .LVU117 + 453 0004 4B68 ldr r3, [r1, #4] + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 454 .loc 1 430 16 view .LVU118 + 455 0006 8362 str r3, [r0, #40] + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Data->TransferDir |\ + 456 .loc 1 433 3 is_stmt 1 view .LVU119 + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Data->TransferDir |\ + 457 .loc 1 433 28 is_stmt 0 view .LVU120 + 458 0008 8B68 ldr r3, [r1, #8] + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Data->TransferMode |\ + 459 .loc 1 434 28 view .LVU121 + 460 000a CA68 ldr r2, [r1, #12] + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Data->TransferDir |\ + 461 .loc 1 433 44 view .LVU122 + 462 000c 1343 orrs r3, r3, r2 + ARM GAS /tmp/ccODg7xx.s page 38 + + + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Data->DPSM); + 463 .loc 1 435 28 view .LVU123 + 464 000e 0A69 ldr r2, [r1, #16] + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Data->TransferMode |\ + 465 .loc 1 434 44 view .LVU124 + 466 0010 1343 orrs r3, r3, r2 + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 467 .loc 1 436 28 view .LVU125 + 468 0012 4A69 ldr r2, [r1, #20] + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** Data->DPSM); + 469 .loc 1 435 44 view .LVU126 + 470 0014 1343 orrs r3, r3, r2 + 471 .LVL34: + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 472 .loc 1 439 3 is_stmt 1 view .LVU127 + 473 0016 C26A ldr r2, [r0, #44] + 474 0018 22F0F702 bic r2, r2, #247 + 475 001c 1343 orrs r3, r3, r2 + 476 .LVL35: + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 477 .loc 1 439 3 is_stmt 0 view .LVU128 + 478 001e C362 str r3, [r0, #44] + 479 .LVL36: + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 480 .loc 1 441 3 is_stmt 1 view .LVU129 + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 481 .loc 1 443 1 is_stmt 0 view .LVU130 + 482 0020 0020 movs r0, #0 + 483 .LVL37: + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 484 .loc 1 443 1 view .LVU131 + 485 0022 7047 bx lr + 486 .cfi_endproc + 487 .LFE150: + 489 .section .text.SDMMC_GetDataCounter,"ax",%progbits + 490 .align 1 + 491 .global SDMMC_GetDataCounter + 492 .syntax unified + 493 .thumb + 494 .thumb_func + 495 .fpu fpv5-d16 + 497 SDMMC_GetDataCounter: + 498 .LVL38: + 499 .LFB151: + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return (SDMMCx->DCOUNT); + 500 .loc 1 451 1 is_stmt 1 view -0 + 501 .cfi_startproc + 502 @ args = 0, pretend = 0, frame = 0 + 503 @ frame_needed = 0, uses_anonymous_args = 0 + 504 @ link register save eliminated. + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 505 .loc 1 452 3 view .LVU133 + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 506 .loc 1 452 17 is_stmt 0 view .LVU134 + 507 0000 006B ldr r0, [r0, #48] + 508 .LVL39: + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + ARM GAS /tmp/ccODg7xx.s page 39 + + + 509 .loc 1 453 1 view .LVU135 + 510 0002 7047 bx lr + 511 .cfi_endproc + 512 .LFE151: + 514 .section .text.SDMMC_GetFIFOCount,"ax",%progbits + 515 .align 1 + 516 .global SDMMC_GetFIFOCount + 517 .syntax unified + 518 .thumb + 519 .thumb_func + 520 .fpu fpv5-d16 + 522 SDMMC_GetFIFOCount: + 523 .LVL40: + 524 .LFB152: + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** return (SDMMCx->FIFO); + 525 .loc 1 461 1 is_stmt 1 view -0 + 526 .cfi_startproc + 527 @ args = 0, pretend = 0, frame = 0 + 528 @ frame_needed = 0, uses_anonymous_args = 0 + 529 @ link register save eliminated. + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 530 .loc 1 462 3 view .LVU137 + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 531 .loc 1 462 17 is_stmt 0 view .LVU138 + 532 0000 D0F88000 ldr r0, [r0, #128] + 533 .LVL41: + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 534 .loc 1 463 1 view .LVU139 + 535 0004 7047 bx lr + 536 .cfi_endproc + 537 .LFE152: + 539 .section .text.SDMMC_SetSDMMCReadWaitMode,"ax",%progbits + 540 .align 1 + 541 .global SDMMC_SetSDMMCReadWaitMode + 542 .syntax unified + 543 .thumb + 544 .thumb_func + 545 .fpu fpv5-d16 + 547 SDMMC_SetSDMMCReadWaitMode: + 548 .LVL42: + 549 .LFB153: + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* Check the parameters */ + 550 .loc 1 475 1 is_stmt 1 view -0 + 551 .cfi_startproc + 552 @ args = 0, pretend = 0, frame = 0 + 553 @ frame_needed = 0, uses_anonymous_args = 0 + 554 @ link register save eliminated. + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 555 .loc 1 477 3 view .LVU141 + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 556 .loc 1 480 3 view .LVU142 + 557 0000 C36A ldr r3, [r0, #44] + 558 0002 23F48063 bic r3, r3, #1024 + 559 0006 0B43 orrs r3, r3, r1 + 560 0008 C362 str r3, [r0, #44] + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 561 .loc 1 482 3 view .LVU143 + ARM GAS /tmp/ccODg7xx.s page 40 + + + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 562 .loc 1 483 1 is_stmt 0 view .LVU144 + 563 000a 0020 movs r0, #0 + 564 .LVL43: + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 565 .loc 1 483 1 view .LVU145 + 566 000c 7047 bx lr + 567 .cfi_endproc + 568 .LFE153: + 570 .section .text.SDMMC_CmdGoIdleState,"ax",%progbits + 571 .align 1 + 572 .global SDMMC_CmdGoIdleState + 573 .syntax unified + 574 .thumb + 575 .thumb_func + 576 .fpu fpv5-d16 + 578 SDMMC_CmdGoIdleState: + 579 .LVL44: + 580 .LFB166: + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 581 .loc 1 799 1 is_stmt 1 view -0 + 582 .cfi_startproc + 583 @ args = 0, pretend = 0, frame = 24 + 584 @ frame_needed = 0, uses_anonymous_args = 0 + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 585 .loc 1 799 1 is_stmt 0 view .LVU147 + 586 0000 10B5 push {r4, lr} + 587 .LCFI2: + 588 .cfi_def_cfa_offset 8 + 589 .cfi_offset 4, -8 + 590 .cfi_offset 14, -4 + 591 0002 86B0 sub sp, sp, #24 + 592 .LCFI3: + 593 .cfi_def_cfa_offset 32 + 594 0004 0446 mov r4, r0 + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 595 .loc 1 800 3 is_stmt 1 view .LVU148 + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 596 .loc 1 801 3 view .LVU149 + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_GO_IDLE_STATE; + 597 .loc 1 803 3 view .LVU150 + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_GO_IDLE_STATE; + 598 .loc 1 803 34 is_stmt 0 view .LVU151 + 599 0006 0023 movs r3, #0 + 600 0008 0193 str r3, [sp, #4] + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_NO; + 601 .loc 1 804 3 is_stmt 1 view .LVU152 + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_NO; + 602 .loc 1 804 34 is_stmt 0 view .LVU153 + 603 000a 0293 str r3, [sp, #8] + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 604 .loc 1 805 3 is_stmt 1 view .LVU154 + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 605 .loc 1 805 34 is_stmt 0 view .LVU155 + 606 000c 0393 str r3, [sp, #12] + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 607 .loc 1 806 3 is_stmt 1 view .LVU156 + ARM GAS /tmp/ccODg7xx.s page 41 + + + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 608 .loc 1 806 34 is_stmt 0 view .LVU157 + 609 000e 0493 str r3, [sp, #16] + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 610 .loc 1 807 3 is_stmt 1 view .LVU158 + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 611 .loc 1 807 34 is_stmt 0 view .LVU159 + 612 0010 4FF48063 mov r3, #1024 + 613 0014 0593 str r3, [sp, #20] + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 614 .loc 1 808 3 is_stmt 1 view .LVU160 + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 615 .loc 1 808 9 is_stmt 0 view .LVU161 + 616 0016 01A9 add r1, sp, #4 + 617 0018 FFF7FEFF bl SDMMC_SendCommand + 618 .LVL45: + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 619 .loc 1 811 3 is_stmt 1 view .LVU162 + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 620 .loc 1 811 16 is_stmt 0 view .LVU163 + 621 001c 2046 mov r0, r4 + 622 001e FFF7FEFF bl SDMMC_GetCmdError + 623 .LVL46: + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 624 .loc 1 813 3 is_stmt 1 view .LVU164 + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 625 .loc 1 814 1 is_stmt 0 view .LVU165 + 626 0022 06B0 add sp, sp, #24 + 627 .LCFI4: + 628 .cfi_def_cfa_offset 8 + 629 @ sp needed + 630 0024 10BD pop {r4, pc} + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 631 .loc 1 814 1 view .LVU166 + 632 .cfi_endproc + 633 .LFE166: + 635 .section .text.SDMMC_GetCmdResp1,"ax",%progbits + 636 .align 1 + 637 .global SDMMC_GetCmdResp1 + 638 .syntax unified + 639 .thumb + 640 .thumb_func + 641 .fpu fpv5-d16 + 643 SDMMC_GetCmdResp1: + 644 .LVL47: + 645 .LFB181: +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t response_r1; + 646 .loc 1 1192 1 is_stmt 1 view -0 + 647 .cfi_startproc + 648 @ args = 0, pretend = 0, frame = 0 + 649 @ frame_needed = 0, uses_anonymous_args = 0 +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t response_r1; + 650 .loc 1 1192 1 is_stmt 0 view .LVU168 + 651 0000 38B5 push {r3, r4, r5, lr} + 652 .LCFI5: + 653 .cfi_def_cfa_offset 16 + 654 .cfi_offset 3, -16 + ARM GAS /tmp/ccODg7xx.s page 42 + + + 655 .cfi_offset 4, -12 + 656 .cfi_offset 5, -8 + 657 .cfi_offset 14, -4 + 658 0002 0446 mov r4, r0 + 659 0004 0D46 mov r5, r1 +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; + 660 .loc 1 1193 3 is_stmt 1 view .LVU169 +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 661 .loc 1 1194 3 view .LVU170 +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 662 .loc 1 1198 3 view .LVU171 +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 663 .loc 1 1198 52 is_stmt 0 view .LVU172 + 664 0006 504B ldr r3, .L55 + 665 0008 1B68 ldr r3, [r3] + 666 000a 5049 ldr r1, .L55+4 + 667 .LVL48: +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 668 .loc 1 1198 52 view .LVU173 + 669 000c A1FB0313 umull r1, r3, r1, r3 + 670 0010 5B0A lsrs r3, r3, #9 +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 671 .loc 1 1198 12 view .LVU174 + 672 0012 03FB02F2 mul r2, r3, r2 + 673 .LVL49: + 674 .L29: +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 675 .loc 1 1200 3 is_stmt 1 view .LVU175 +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 676 .loc 1 1202 5 view .LVU176 + 677 0016 1346 mov r3, r2 +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 678 .loc 1 1202 14 is_stmt 0 view .LVU177 + 679 0018 013A subs r2, r2, #1 + 680 .LVL50: +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 681 .loc 1 1202 8 view .LVU178 + 682 001a 002B cmp r3, #0 + 683 001c 5DD0 beq .L32 +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + 684 .loc 1 1206 5 is_stmt 1 view .LVU179 +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + 685 .loc 1 1206 13 is_stmt 0 view .LVU180 + 686 001e 636B ldr r3, [r4, #52] + 687 .LVL51: +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + 688 .loc 1 1207 9 is_stmt 1 view .LVU181 +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 689 .loc 1 1208 10 is_stmt 0 view .LVU182 + 690 0020 13F0450F tst r3, #69 + 691 0024 F7D0 beq .L29 +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + 692 .loc 1 1207 95 discriminator 1 view .LVU183 + 693 0026 13F4006F tst r3, #2048 + 694 002a F4D1 bne .L29 +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 695 .loc 1 1210 3 is_stmt 1 view .LVU184 + ARM GAS /tmp/ccODg7xx.s page 43 + + +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 696 .loc 1 1210 6 is_stmt 0 view .LVU185 + 697 002c 636B ldr r3, [r4, #52] + 698 .LVL52: +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 699 .loc 1 1210 5 view .LVU186 + 700 002e 13F0040F tst r3, #4 + 701 0032 06D1 bne .L53 +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 702 .loc 1 1216 8 is_stmt 1 view .LVU187 +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 703 .loc 1 1216 11 is_stmt 0 view .LVU188 + 704 0034 636B ldr r3, [r4, #52] +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 705 .loc 1 1216 10 view .LVU189 + 706 0036 13F0010F tst r3, #1 + 707 003a 05D0 beq .L31 +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 708 .loc 1 1218 5 is_stmt 1 view .LVU190 + 709 003c 0120 movs r0, #1 + 710 .LVL53: +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 711 .loc 1 1218 5 is_stmt 0 view .LVU191 + 712 003e A063 str r0, [r4, #56] +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 713 .loc 1 1220 5 is_stmt 1 view .LVU192 +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 714 .loc 1 1220 12 is_stmt 0 view .LVU193 + 715 0040 4DE0 b .L27 + 716 .LVL54: + 717 .L53: +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 718 .loc 1 1212 5 is_stmt 1 view .LVU194 + 719 0042 0420 movs r0, #4 + 720 .LVL55: +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 721 .loc 1 1212 5 is_stmt 0 view .LVU195 + 722 0044 A063 str r0, [r4, #56] +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 723 .loc 1 1214 5 is_stmt 1 view .LVU196 +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 724 .loc 1 1214 12 is_stmt 0 view .LVU197 + 725 0046 4AE0 b .L27 + 726 .LVL56: + 727 .L31: +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 728 .loc 1 1225 3 is_stmt 1 view .LVU198 +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 729 .loc 1 1228 3 view .LVU199 + 730 0048 C523 movs r3, #197 + 731 004a A363 str r3, [r4, #56] +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 732 .loc 1 1231 3 view .LVU200 +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 733 .loc 1 1231 6 is_stmt 0 view .LVU201 + 734 004c 2046 mov r0, r4 + 735 .LVL57: + ARM GAS /tmp/ccODg7xx.s page 44 + + +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 736 .loc 1 1231 6 view .LVU202 + 737 004e FFF7FEFF bl SDMMC_GetCommandResponse + 738 .LVL58: +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 739 .loc 1 1231 5 view .LVU203 + 740 0052 A842 cmp r0, r5 + 741 0054 01D0 beq .L54 +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 742 .loc 1 1233 12 view .LVU204 + 743 0056 0120 movs r0, #1 + 744 0058 41E0 b .L27 + 745 .L54: +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 746 .loc 1 1237 3 is_stmt 1 view .LVU205 +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 747 .loc 1 1237 17 is_stmt 0 view .LVU206 + 748 005a 0021 movs r1, #0 + 749 005c 2046 mov r0, r4 + 750 005e FFF7FEFF bl SDMMC_GetResponse + 751 .LVL59: + 752 0062 0346 mov r3, r0 + 753 .LVL60: +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 754 .loc 1 1239 3 is_stmt 1 view .LVU207 +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 755 .loc 1 1239 19 is_stmt 0 view .LVU208 + 756 0064 3A48 ldr r0, .L55+8 + 757 .LVL61: +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 758 .loc 1 1239 19 view .LVU209 + 759 0066 1840 ands r0, r0, r3 +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 760 .loc 1 1239 5 view .LVU210 + 761 0068 C8B3 cbz r0, .L27 +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 762 .loc 1 1243 8 is_stmt 1 view .LVU211 +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 763 .loc 1 1243 10 is_stmt 0 view .LVU212 + 764 006a 002B cmp r3, #0 + 765 006c 38DB blt .L34 +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 766 .loc 1 1247 8 is_stmt 1 view .LVU213 +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 767 .loc 1 1247 10 is_stmt 0 view .LVU214 + 768 006e 13F0804F tst r3, #1073741824 + 769 0072 38D1 bne .L35 +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 770 .loc 1 1251 8 is_stmt 1 view .LVU215 +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 771 .loc 1 1251 10 is_stmt 0 view .LVU216 + 772 0074 13F0005F tst r3, #536870912 + 773 0078 37D1 bne .L36 +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 774 .loc 1 1255 8 is_stmt 1 view .LVU217 +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 775 .loc 1 1255 10 is_stmt 0 view .LVU218 + ARM GAS /tmp/ccODg7xx.s page 45 + + + 776 007a 13F0805F tst r3, #268435456 + 777 007e 36D1 bne .L37 +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 778 .loc 1 1259 8 is_stmt 1 view .LVU219 +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 779 .loc 1 1259 10 is_stmt 0 view .LVU220 + 780 0080 13F0006F tst r3, #134217728 + 781 0084 36D1 bne .L38 +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 782 .loc 1 1263 8 is_stmt 1 view .LVU221 +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 783 .loc 1 1263 10 is_stmt 0 view .LVU222 + 784 0086 13F0806F tst r3, #67108864 + 785 008a 36D1 bne .L39 +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 786 .loc 1 1267 8 is_stmt 1 view .LVU223 +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 787 .loc 1 1267 10 is_stmt 0 view .LVU224 + 788 008c 13F0807F tst r3, #16777216 + 789 0090 36D1 bne .L40 +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 790 .loc 1 1271 8 is_stmt 1 view .LVU225 +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 791 .loc 1 1271 10 is_stmt 0 view .LVU226 + 792 0092 13F4000F tst r3, #8388608 + 793 0096 36D1 bne .L41 +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 794 .loc 1 1275 8 is_stmt 1 view .LVU227 +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 795 .loc 1 1275 10 is_stmt 0 view .LVU228 + 796 0098 13F4800F tst r3, #4194304 + 797 009c 36D1 bne .L42 +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 798 .loc 1 1279 8 is_stmt 1 view .LVU229 +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 799 .loc 1 1279 10 is_stmt 0 view .LVU230 + 800 009e 13F4001F tst r3, #2097152 + 801 00a2 36D1 bne .L43 +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 802 .loc 1 1283 8 is_stmt 1 view .LVU231 +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 803 .loc 1 1283 10 is_stmt 0 view .LVU232 + 804 00a4 13F4801F tst r3, #1048576 + 805 00a8 36D1 bne .L44 +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 806 .loc 1 1287 8 is_stmt 1 view .LVU233 +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 807 .loc 1 1287 10 is_stmt 0 view .LVU234 + 808 00aa 13F4802F tst r3, #262144 + 809 00ae 36D1 bne .L45 +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 810 .loc 1 1291 8 is_stmt 1 view .LVU235 +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 811 .loc 1 1291 10 is_stmt 0 view .LVU236 + 812 00b0 13F4003F tst r3, #131072 + 813 00b4 36D1 bne .L46 +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + ARM GAS /tmp/ccODg7xx.s page 46 + + + 814 .loc 1 1295 8 is_stmt 1 view .LVU237 +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 815 .loc 1 1295 10 is_stmt 0 view .LVU238 + 816 00b6 13F4803F tst r3, #65536 + 817 00ba 36D1 bne .L47 +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 818 .loc 1 1299 8 is_stmt 1 view .LVU239 +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 819 .loc 1 1299 10 is_stmt 0 view .LVU240 + 820 00bc 13F4004F tst r3, #32768 + 821 00c0 36D1 bne .L48 +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 822 .loc 1 1303 8 is_stmt 1 view .LVU241 +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 823 .loc 1 1303 10 is_stmt 0 view .LVU242 + 824 00c2 13F4804F tst r3, #16384 + 825 00c6 36D1 bne .L49 +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 826 .loc 1 1307 8 is_stmt 1 view .LVU243 +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 827 .loc 1 1307 10 is_stmt 0 view .LVU244 + 828 00c8 13F4005F tst r3, #8192 + 829 00cc 36D1 bne .L50 +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 830 .loc 1 1311 8 is_stmt 1 view .LVU245 +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 831 .loc 1 1311 10 is_stmt 0 view .LVU246 + 832 00ce 13F0080F tst r3, #8 + 833 00d2 36D0 beq .L51 +1313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 834 .loc 1 1313 12 view .LVU247 + 835 00d4 4FF40000 mov r0, #8388608 + 836 00d8 01E0 b .L27 + 837 .LVL62: + 838 .L32: +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 839 .loc 1 1204 14 view .LVU248 + 840 00da 4FF00040 mov r0, #-2147483648 + 841 .LVL63: + 842 .L27: +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 843 .loc 1 1319 1 view .LVU249 + 844 00de 38BD pop {r3, r4, r5, pc} + 845 .LVL64: + 846 .L34: +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 847 .loc 1 1245 12 view .LVU250 + 848 00e0 4FF00070 mov r0, #33554432 + 849 00e4 FBE7 b .L27 + 850 .L35: +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 851 .loc 1 1249 12 view .LVU251 + 852 00e6 4020 movs r0, #64 + 853 00e8 F9E7 b .L27 + 854 .L36: +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 855 .loc 1 1253 12 view .LVU252 + ARM GAS /tmp/ccODg7xx.s page 47 + + + 856 00ea 8020 movs r0, #128 + 857 00ec F7E7 b .L27 + 858 .L37: +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 859 .loc 1 1257 12 view .LVU253 + 860 00ee 4FF48070 mov r0, #256 + 861 00f2 F4E7 b .L27 + 862 .L38: +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 863 .loc 1 1261 12 view .LVU254 + 864 00f4 4FF40070 mov r0, #512 + 865 00f8 F1E7 b .L27 + 866 .L39: +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 867 .loc 1 1265 12 view .LVU255 + 868 00fa 4FF48060 mov r0, #1024 + 869 00fe EEE7 b .L27 + 870 .L40: +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 871 .loc 1 1269 12 view .LVU256 + 872 0100 4FF40060 mov r0, #2048 + 873 0104 EBE7 b .L27 + 874 .L41: +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 875 .loc 1 1273 12 view .LVU257 + 876 0106 4FF48050 mov r0, #4096 + 877 010a E8E7 b .L27 + 878 .L42: +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 879 .loc 1 1277 12 view .LVU258 + 880 010c 4FF40050 mov r0, #8192 + 881 0110 E5E7 b .L27 + 882 .L43: +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 883 .loc 1 1281 12 view .LVU259 + 884 0112 4FF48040 mov r0, #16384 + 885 0116 E2E7 b .L27 + 886 .L44: +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 887 .loc 1 1285 12 view .LVU260 + 888 0118 4FF40040 mov r0, #32768 + 889 011c DFE7 b .L27 + 890 .L45: +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 891 .loc 1 1289 12 view .LVU261 + 892 011e 4FF40030 mov r0, #131072 + 893 0122 DCE7 b .L27 + 894 .L46: +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 895 .loc 1 1293 12 view .LVU262 + 896 0124 4FF48020 mov r0, #262144 + 897 0128 D9E7 b .L27 + 898 .L47: +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 899 .loc 1 1297 12 view .LVU263 + 900 012a 4FF40020 mov r0, #524288 + 901 012e D6E7 b .L27 + ARM GAS /tmp/ccODg7xx.s page 48 + + + 902 .L48: +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 903 .loc 1 1301 12 view .LVU264 + 904 0130 4FF48010 mov r0, #1048576 + 905 0134 D3E7 b .L27 + 906 .L49: +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 907 .loc 1 1305 12 view .LVU265 + 908 0136 4FF40010 mov r0, #2097152 + 909 013a D0E7 b .L27 + 910 .L50: +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 911 .loc 1 1309 12 view .LVU266 + 912 013c 4FF48000 mov r0, #4194304 + 913 0140 CDE7 b .L27 + 914 .L51: +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 915 .loc 1 1317 12 view .LVU267 + 916 0142 4FF48030 mov r0, #65536 + 917 0146 CAE7 b .L27 + 918 .L56: + 919 .align 2 + 920 .L55: + 921 0148 00000000 .word SystemCoreClock + 922 014c D34D6210 .word 274877907 + 923 0150 08E0FFFD .word -33562616 + 924 .cfi_endproc + 925 .LFE181: + 927 .section .text.SDMMC_CmdBlockLength,"ax",%progbits + 928 .align 1 + 929 .global SDMMC_CmdBlockLength + 930 .syntax unified + 931 .thumb + 932 .thumb_func + 933 .fpu fpv5-d16 + 935 SDMMC_CmdBlockLength: + 936 .LVL65: + 937 .LFB154: + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 938 .loc 1 510 1 is_stmt 1 view -0 + 939 .cfi_startproc + 940 @ args = 0, pretend = 0, frame = 24 + 941 @ frame_needed = 0, uses_anonymous_args = 0 + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 942 .loc 1 510 1 is_stmt 0 view .LVU269 + 943 0000 30B5 push {r4, r5, lr} + 944 .LCFI6: + 945 .cfi_def_cfa_offset 12 + 946 .cfi_offset 4, -12 + 947 .cfi_offset 5, -8 + 948 .cfi_offset 14, -4 + 949 0002 87B0 sub sp, sp, #28 + 950 .LCFI7: + 951 .cfi_def_cfa_offset 40 + 952 0004 0446 mov r4, r0 + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 953 .loc 1 511 3 is_stmt 1 view .LVU270 + ARM GAS /tmp/ccODg7xx.s page 49 + + + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 954 .loc 1 512 3 view .LVU271 + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_BLOCKLEN; + 955 .loc 1 515 3 view .LVU272 + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_BLOCKLEN; + 956 .loc 1 515 34 is_stmt 0 view .LVU273 + 957 0006 0191 str r1, [sp, #4] + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 958 .loc 1 516 3 is_stmt 1 view .LVU274 + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 959 .loc 1 516 34 is_stmt 0 view .LVU275 + 960 0008 1025 movs r5, #16 + 961 000a 0295 str r5, [sp, #8] + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 962 .loc 1 517 3 is_stmt 1 view .LVU276 + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 963 .loc 1 517 34 is_stmt 0 view .LVU277 + 964 000c 4023 movs r3, #64 + 965 000e 0393 str r3, [sp, #12] + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 966 .loc 1 518 3 is_stmt 1 view .LVU278 + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 967 .loc 1 518 34 is_stmt 0 view .LVU279 + 968 0010 0023 movs r3, #0 + 969 0012 0493 str r3, [sp, #16] + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 970 .loc 1 519 3 is_stmt 1 view .LVU280 + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 971 .loc 1 519 34 is_stmt 0 view .LVU281 + 972 0014 4FF48063 mov r3, #1024 + 973 0018 0593 str r3, [sp, #20] + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 974 .loc 1 520 3 is_stmt 1 view .LVU282 + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 975 .loc 1 520 9 is_stmt 0 view .LVU283 + 976 001a 01A9 add r1, sp, #4 + 977 .LVL66: + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 978 .loc 1 520 9 view .LVU284 + 979 001c FFF7FEFF bl SDMMC_SendCommand + 980 .LVL67: + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 981 .loc 1 523 3 is_stmt 1 view .LVU285 + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 982 .loc 1 523 16 is_stmt 0 view .LVU286 + 983 0020 41F28832 movw r2, #5000 + 984 0024 2946 mov r1, r5 + 985 0026 2046 mov r0, r4 + 986 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 987 .LVL68: + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 988 .loc 1 525 3 is_stmt 1 view .LVU287 + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 989 .loc 1 526 1 is_stmt 0 view .LVU288 + 990 002c 07B0 add sp, sp, #28 + 991 .LCFI8: + 992 .cfi_def_cfa_offset 12 + ARM GAS /tmp/ccODg7xx.s page 50 + + + 993 @ sp needed + 994 002e 30BD pop {r4, r5, pc} + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 995 .loc 1 526 1 view .LVU289 + 996 .cfi_endproc + 997 .LFE154: + 999 .section .text.SDMMC_CmdReadSingleBlock,"ax",%progbits + 1000 .align 1 + 1001 .global SDMMC_CmdReadSingleBlock + 1002 .syntax unified + 1003 .thumb + 1004 .thumb_func + 1005 .fpu fpv5-d16 + 1007 SDMMC_CmdReadSingleBlock: + 1008 .LVL69: + 1009 .LFB155: + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1010 .loc 1 534 1 is_stmt 1 view -0 + 1011 .cfi_startproc + 1012 @ args = 0, pretend = 0, frame = 24 + 1013 @ frame_needed = 0, uses_anonymous_args = 0 + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1014 .loc 1 534 1 is_stmt 0 view .LVU291 + 1015 0000 30B5 push {r4, r5, lr} + 1016 .LCFI9: + 1017 .cfi_def_cfa_offset 12 + 1018 .cfi_offset 4, -12 + 1019 .cfi_offset 5, -8 + 1020 .cfi_offset 14, -4 + 1021 0002 87B0 sub sp, sp, #28 + 1022 .LCFI10: + 1023 .cfi_def_cfa_offset 40 + 1024 0004 0446 mov r4, r0 + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1025 .loc 1 535 3 is_stmt 1 view .LVU292 + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1026 .loc 1 536 3 view .LVU293 + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_READ_SINGLE_BLOCK; + 1027 .loc 1 539 3 view .LVU294 + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_READ_SINGLE_BLOCK; + 1028 .loc 1 539 34 is_stmt 0 view .LVU295 + 1029 0006 0191 str r1, [sp, #4] + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1030 .loc 1 540 3 is_stmt 1 view .LVU296 + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1031 .loc 1 540 34 is_stmt 0 view .LVU297 + 1032 0008 1125 movs r5, #17 + 1033 000a 0295 str r5, [sp, #8] + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1034 .loc 1 541 3 is_stmt 1 view .LVU298 + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1035 .loc 1 541 34 is_stmt 0 view .LVU299 + 1036 000c 4023 movs r3, #64 + 1037 000e 0393 str r3, [sp, #12] + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1038 .loc 1 542 3 is_stmt 1 view .LVU300 + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + ARM GAS /tmp/ccODg7xx.s page 51 + + + 1039 .loc 1 542 34 is_stmt 0 view .LVU301 + 1040 0010 0023 movs r3, #0 + 1041 0012 0493 str r3, [sp, #16] + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1042 .loc 1 543 3 is_stmt 1 view .LVU302 + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1043 .loc 1 543 34 is_stmt 0 view .LVU303 + 1044 0014 4FF48063 mov r3, #1024 + 1045 0018 0593 str r3, [sp, #20] + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1046 .loc 1 544 3 is_stmt 1 view .LVU304 + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1047 .loc 1 544 9 is_stmt 0 view .LVU305 + 1048 001a 01A9 add r1, sp, #4 + 1049 .LVL70: + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1050 .loc 1 544 9 view .LVU306 + 1051 001c FFF7FEFF bl SDMMC_SendCommand + 1052 .LVL71: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1053 .loc 1 547 3 is_stmt 1 view .LVU307 + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1054 .loc 1 547 16 is_stmt 0 view .LVU308 + 1055 0020 41F28832 movw r2, #5000 + 1056 0024 2946 mov r1, r5 + 1057 0026 2046 mov r0, r4 + 1058 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1059 .LVL72: + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1060 .loc 1 549 3 is_stmt 1 view .LVU309 + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1061 .loc 1 550 1 is_stmt 0 view .LVU310 + 1062 002c 07B0 add sp, sp, #28 + 1063 .LCFI11: + 1064 .cfi_def_cfa_offset 12 + 1065 @ sp needed + 1066 002e 30BD pop {r4, r5, pc} + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1067 .loc 1 550 1 view .LVU311 + 1068 .cfi_endproc + 1069 .LFE155: + 1071 .section .text.SDMMC_CmdReadMultiBlock,"ax",%progbits + 1072 .align 1 + 1073 .global SDMMC_CmdReadMultiBlock + 1074 .syntax unified + 1075 .thumb + 1076 .thumb_func + 1077 .fpu fpv5-d16 + 1079 SDMMC_CmdReadMultiBlock: + 1080 .LVL73: + 1081 .LFB156: + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1082 .loc 1 558 1 is_stmt 1 view -0 + 1083 .cfi_startproc + 1084 @ args = 0, pretend = 0, frame = 24 + 1085 @ frame_needed = 0, uses_anonymous_args = 0 + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + ARM GAS /tmp/ccODg7xx.s page 52 + + + 1086 .loc 1 558 1 is_stmt 0 view .LVU313 + 1087 0000 30B5 push {r4, r5, lr} + 1088 .LCFI12: + 1089 .cfi_def_cfa_offset 12 + 1090 .cfi_offset 4, -12 + 1091 .cfi_offset 5, -8 + 1092 .cfi_offset 14, -4 + 1093 0002 87B0 sub sp, sp, #28 + 1094 .LCFI13: + 1095 .cfi_def_cfa_offset 40 + 1096 0004 0446 mov r4, r0 + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1097 .loc 1 559 3 is_stmt 1 view .LVU314 + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1098 .loc 1 560 3 view .LVU315 + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_READ_MULT_BLOCK; + 1099 .loc 1 563 3 view .LVU316 + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_READ_MULT_BLOCK; + 1100 .loc 1 563 34 is_stmt 0 view .LVU317 + 1101 0006 0191 str r1, [sp, #4] + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1102 .loc 1 564 3 is_stmt 1 view .LVU318 + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1103 .loc 1 564 34 is_stmt 0 view .LVU319 + 1104 0008 1225 movs r5, #18 + 1105 000a 0295 str r5, [sp, #8] + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1106 .loc 1 565 3 is_stmt 1 view .LVU320 + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1107 .loc 1 565 34 is_stmt 0 view .LVU321 + 1108 000c 4023 movs r3, #64 + 1109 000e 0393 str r3, [sp, #12] + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1110 .loc 1 566 3 is_stmt 1 view .LVU322 + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1111 .loc 1 566 34 is_stmt 0 view .LVU323 + 1112 0010 0023 movs r3, #0 + 1113 0012 0493 str r3, [sp, #16] + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1114 .loc 1 567 3 is_stmt 1 view .LVU324 + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1115 .loc 1 567 34 is_stmt 0 view .LVU325 + 1116 0014 4FF48063 mov r3, #1024 + 1117 0018 0593 str r3, [sp, #20] + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1118 .loc 1 568 3 is_stmt 1 view .LVU326 + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1119 .loc 1 568 9 is_stmt 0 view .LVU327 + 1120 001a 01A9 add r1, sp, #4 + 1121 .LVL74: + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1122 .loc 1 568 9 view .LVU328 + 1123 001c FFF7FEFF bl SDMMC_SendCommand + 1124 .LVL75: + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1125 .loc 1 571 3 is_stmt 1 view .LVU329 + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + ARM GAS /tmp/ccODg7xx.s page 53 + + + 1126 .loc 1 571 16 is_stmt 0 view .LVU330 + 1127 0020 41F28832 movw r2, #5000 + 1128 0024 2946 mov r1, r5 + 1129 0026 2046 mov r0, r4 + 1130 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1131 .LVL76: + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1132 .loc 1 573 3 is_stmt 1 view .LVU331 + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1133 .loc 1 574 1 is_stmt 0 view .LVU332 + 1134 002c 07B0 add sp, sp, #28 + 1135 .LCFI14: + 1136 .cfi_def_cfa_offset 12 + 1137 @ sp needed + 1138 002e 30BD pop {r4, r5, pc} + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1139 .loc 1 574 1 view .LVU333 + 1140 .cfi_endproc + 1141 .LFE156: + 1143 .section .text.SDMMC_CmdWriteSingleBlock,"ax",%progbits + 1144 .align 1 + 1145 .global SDMMC_CmdWriteSingleBlock + 1146 .syntax unified + 1147 .thumb + 1148 .thumb_func + 1149 .fpu fpv5-d16 + 1151 SDMMC_CmdWriteSingleBlock: + 1152 .LVL77: + 1153 .LFB157: + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1154 .loc 1 582 1 is_stmt 1 view -0 + 1155 .cfi_startproc + 1156 @ args = 0, pretend = 0, frame = 24 + 1157 @ frame_needed = 0, uses_anonymous_args = 0 + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1158 .loc 1 582 1 is_stmt 0 view .LVU335 + 1159 0000 30B5 push {r4, r5, lr} + 1160 .LCFI15: + 1161 .cfi_def_cfa_offset 12 + 1162 .cfi_offset 4, -12 + 1163 .cfi_offset 5, -8 + 1164 .cfi_offset 14, -4 + 1165 0002 87B0 sub sp, sp, #28 + 1166 .LCFI16: + 1167 .cfi_def_cfa_offset 40 + 1168 0004 0446 mov r4, r0 + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1169 .loc 1 583 3 is_stmt 1 view .LVU336 + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1170 .loc 1 584 3 view .LVU337 + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_WRITE_SINGLE_BLOCK; + 1171 .loc 1 587 3 view .LVU338 + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_WRITE_SINGLE_BLOCK; + 1172 .loc 1 587 34 is_stmt 0 view .LVU339 + 1173 0006 0191 str r1, [sp, #4] + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1174 .loc 1 588 3 is_stmt 1 view .LVU340 + ARM GAS /tmp/ccODg7xx.s page 54 + + + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1175 .loc 1 588 34 is_stmt 0 view .LVU341 + 1176 0008 1825 movs r5, #24 + 1177 000a 0295 str r5, [sp, #8] + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1178 .loc 1 589 3 is_stmt 1 view .LVU342 + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1179 .loc 1 589 34 is_stmt 0 view .LVU343 + 1180 000c 4023 movs r3, #64 + 1181 000e 0393 str r3, [sp, #12] + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1182 .loc 1 590 3 is_stmt 1 view .LVU344 + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1183 .loc 1 590 34 is_stmt 0 view .LVU345 + 1184 0010 0023 movs r3, #0 + 1185 0012 0493 str r3, [sp, #16] + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1186 .loc 1 591 3 is_stmt 1 view .LVU346 + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1187 .loc 1 591 34 is_stmt 0 view .LVU347 + 1188 0014 4FF48063 mov r3, #1024 + 1189 0018 0593 str r3, [sp, #20] + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1190 .loc 1 592 3 is_stmt 1 view .LVU348 + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1191 .loc 1 592 9 is_stmt 0 view .LVU349 + 1192 001a 01A9 add r1, sp, #4 + 1193 .LVL78: + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1194 .loc 1 592 9 view .LVU350 + 1195 001c FFF7FEFF bl SDMMC_SendCommand + 1196 .LVL79: + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1197 .loc 1 595 3 is_stmt 1 view .LVU351 + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1198 .loc 1 595 16 is_stmt 0 view .LVU352 + 1199 0020 41F28832 movw r2, #5000 + 1200 0024 2946 mov r1, r5 + 1201 0026 2046 mov r0, r4 + 1202 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1203 .LVL80: + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1204 .loc 1 597 3 is_stmt 1 view .LVU353 + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1205 .loc 1 598 1 is_stmt 0 view .LVU354 + 1206 002c 07B0 add sp, sp, #28 + 1207 .LCFI17: + 1208 .cfi_def_cfa_offset 12 + 1209 @ sp needed + 1210 002e 30BD pop {r4, r5, pc} + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1211 .loc 1 598 1 view .LVU355 + 1212 .cfi_endproc + 1213 .LFE157: + 1215 .section .text.SDMMC_CmdWriteMultiBlock,"ax",%progbits + 1216 .align 1 + 1217 .global SDMMC_CmdWriteMultiBlock + ARM GAS /tmp/ccODg7xx.s page 55 + + + 1218 .syntax unified + 1219 .thumb + 1220 .thumb_func + 1221 .fpu fpv5-d16 + 1223 SDMMC_CmdWriteMultiBlock: + 1224 .LVL81: + 1225 .LFB158: + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1226 .loc 1 606 1 is_stmt 1 view -0 + 1227 .cfi_startproc + 1228 @ args = 0, pretend = 0, frame = 24 + 1229 @ frame_needed = 0, uses_anonymous_args = 0 + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1230 .loc 1 606 1 is_stmt 0 view .LVU357 + 1231 0000 30B5 push {r4, r5, lr} + 1232 .LCFI18: + 1233 .cfi_def_cfa_offset 12 + 1234 .cfi_offset 4, -12 + 1235 .cfi_offset 5, -8 + 1236 .cfi_offset 14, -4 + 1237 0002 87B0 sub sp, sp, #28 + 1238 .LCFI19: + 1239 .cfi_def_cfa_offset 40 + 1240 0004 0446 mov r4, r0 + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1241 .loc 1 607 3 is_stmt 1 view .LVU358 + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1242 .loc 1 608 3 view .LVU359 + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_WRITE_MULT_BLOCK; + 1243 .loc 1 611 3 view .LVU360 + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_WRITE_MULT_BLOCK; + 1244 .loc 1 611 34 is_stmt 0 view .LVU361 + 1245 0006 0191 str r1, [sp, #4] + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1246 .loc 1 612 3 is_stmt 1 view .LVU362 + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1247 .loc 1 612 34 is_stmt 0 view .LVU363 + 1248 0008 1925 movs r5, #25 + 1249 000a 0295 str r5, [sp, #8] + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1250 .loc 1 613 3 is_stmt 1 view .LVU364 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1251 .loc 1 613 34 is_stmt 0 view .LVU365 + 1252 000c 4023 movs r3, #64 + 1253 000e 0393 str r3, [sp, #12] + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1254 .loc 1 614 3 is_stmt 1 view .LVU366 + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1255 .loc 1 614 34 is_stmt 0 view .LVU367 + 1256 0010 0023 movs r3, #0 + 1257 0012 0493 str r3, [sp, #16] + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1258 .loc 1 615 3 is_stmt 1 view .LVU368 + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1259 .loc 1 615 34 is_stmt 0 view .LVU369 + 1260 0014 4FF48063 mov r3, #1024 + 1261 0018 0593 str r3, [sp, #20] + ARM GAS /tmp/ccODg7xx.s page 56 + + + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1262 .loc 1 616 3 is_stmt 1 view .LVU370 + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1263 .loc 1 616 9 is_stmt 0 view .LVU371 + 1264 001a 01A9 add r1, sp, #4 + 1265 .LVL82: + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1266 .loc 1 616 9 view .LVU372 + 1267 001c FFF7FEFF bl SDMMC_SendCommand + 1268 .LVL83: + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1269 .loc 1 619 3 is_stmt 1 view .LVU373 + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1270 .loc 1 619 16 is_stmt 0 view .LVU374 + 1271 0020 41F28832 movw r2, #5000 + 1272 0024 2946 mov r1, r5 + 1273 0026 2046 mov r0, r4 + 1274 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1275 .LVL84: + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1276 .loc 1 621 3 is_stmt 1 view .LVU375 + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1277 .loc 1 622 1 is_stmt 0 view .LVU376 + 1278 002c 07B0 add sp, sp, #28 + 1279 .LCFI20: + 1280 .cfi_def_cfa_offset 12 + 1281 @ sp needed + 1282 002e 30BD pop {r4, r5, pc} + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1283 .loc 1 622 1 view .LVU377 + 1284 .cfi_endproc + 1285 .LFE158: + 1287 .section .text.SDMMC_CmdSDEraseStartAdd,"ax",%progbits + 1288 .align 1 + 1289 .global SDMMC_CmdSDEraseStartAdd + 1290 .syntax unified + 1291 .thumb + 1292 .thumb_func + 1293 .fpu fpv5-d16 + 1295 SDMMC_CmdSDEraseStartAdd: + 1296 .LVL85: + 1297 .LFB159: + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1298 .loc 1 630 1 is_stmt 1 view -0 + 1299 .cfi_startproc + 1300 @ args = 0, pretend = 0, frame = 24 + 1301 @ frame_needed = 0, uses_anonymous_args = 0 + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1302 .loc 1 630 1 is_stmt 0 view .LVU379 + 1303 0000 30B5 push {r4, r5, lr} + 1304 .LCFI21: + 1305 .cfi_def_cfa_offset 12 + 1306 .cfi_offset 4, -12 + 1307 .cfi_offset 5, -8 + 1308 .cfi_offset 14, -4 + 1309 0002 87B0 sub sp, sp, #28 + 1310 .LCFI22: + ARM GAS /tmp/ccODg7xx.s page 57 + + + 1311 .cfi_def_cfa_offset 40 + 1312 0004 0446 mov r4, r0 + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1313 .loc 1 631 3 is_stmt 1 view .LVU380 + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1314 .loc 1 632 3 view .LVU381 + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_ERASE_GRP_START; + 1315 .loc 1 635 3 view .LVU382 + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_ERASE_GRP_START; + 1316 .loc 1 635 34 is_stmt 0 view .LVU383 + 1317 0006 0191 str r1, [sp, #4] + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1318 .loc 1 636 3 is_stmt 1 view .LVU384 + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1319 .loc 1 636 34 is_stmt 0 view .LVU385 + 1320 0008 2025 movs r5, #32 + 1321 000a 0295 str r5, [sp, #8] + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1322 .loc 1 637 3 is_stmt 1 view .LVU386 + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1323 .loc 1 637 34 is_stmt 0 view .LVU387 + 1324 000c 4023 movs r3, #64 + 1325 000e 0393 str r3, [sp, #12] + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1326 .loc 1 638 3 is_stmt 1 view .LVU388 + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1327 .loc 1 638 34 is_stmt 0 view .LVU389 + 1328 0010 0023 movs r3, #0 + 1329 0012 0493 str r3, [sp, #16] + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1330 .loc 1 639 3 is_stmt 1 view .LVU390 + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1331 .loc 1 639 34 is_stmt 0 view .LVU391 + 1332 0014 4FF48063 mov r3, #1024 + 1333 0018 0593 str r3, [sp, #20] + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1334 .loc 1 640 3 is_stmt 1 view .LVU392 + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1335 .loc 1 640 9 is_stmt 0 view .LVU393 + 1336 001a 01A9 add r1, sp, #4 + 1337 .LVL86: + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1338 .loc 1 640 9 view .LVU394 + 1339 001c FFF7FEFF bl SDMMC_SendCommand + 1340 .LVL87: + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1341 .loc 1 643 3 is_stmt 1 view .LVU395 + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1342 .loc 1 643 16 is_stmt 0 view .LVU396 + 1343 0020 41F28832 movw r2, #5000 + 1344 0024 2946 mov r1, r5 + 1345 0026 2046 mov r0, r4 + 1346 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1347 .LVL88: + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1348 .loc 1 645 3 is_stmt 1 view .LVU397 + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + ARM GAS /tmp/ccODg7xx.s page 58 + + + 1349 .loc 1 646 1 is_stmt 0 view .LVU398 + 1350 002c 07B0 add sp, sp, #28 + 1351 .LCFI23: + 1352 .cfi_def_cfa_offset 12 + 1353 @ sp needed + 1354 002e 30BD pop {r4, r5, pc} + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1355 .loc 1 646 1 view .LVU399 + 1356 .cfi_endproc + 1357 .LFE159: + 1359 .section .text.SDMMC_CmdSDEraseEndAdd,"ax",%progbits + 1360 .align 1 + 1361 .global SDMMC_CmdSDEraseEndAdd + 1362 .syntax unified + 1363 .thumb + 1364 .thumb_func + 1365 .fpu fpv5-d16 + 1367 SDMMC_CmdSDEraseEndAdd: + 1368 .LVL89: + 1369 .LFB160: + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1370 .loc 1 654 1 is_stmt 1 view -0 + 1371 .cfi_startproc + 1372 @ args = 0, pretend = 0, frame = 24 + 1373 @ frame_needed = 0, uses_anonymous_args = 0 + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1374 .loc 1 654 1 is_stmt 0 view .LVU401 + 1375 0000 30B5 push {r4, r5, lr} + 1376 .LCFI24: + 1377 .cfi_def_cfa_offset 12 + 1378 .cfi_offset 4, -12 + 1379 .cfi_offset 5, -8 + 1380 .cfi_offset 14, -4 + 1381 0002 87B0 sub sp, sp, #28 + 1382 .LCFI25: + 1383 .cfi_def_cfa_offset 40 + 1384 0004 0446 mov r4, r0 + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1385 .loc 1 655 3 is_stmt 1 view .LVU402 + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1386 .loc 1 656 3 view .LVU403 + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_ERASE_GRP_END; + 1387 .loc 1 659 3 view .LVU404 + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_ERASE_GRP_END; + 1388 .loc 1 659 34 is_stmt 0 view .LVU405 + 1389 0006 0191 str r1, [sp, #4] + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1390 .loc 1 660 3 is_stmt 1 view .LVU406 + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1391 .loc 1 660 34 is_stmt 0 view .LVU407 + 1392 0008 2125 movs r5, #33 + 1393 000a 0295 str r5, [sp, #8] + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1394 .loc 1 661 3 is_stmt 1 view .LVU408 + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1395 .loc 1 661 34 is_stmt 0 view .LVU409 + 1396 000c 4023 movs r3, #64 + ARM GAS /tmp/ccODg7xx.s page 59 + + + 1397 000e 0393 str r3, [sp, #12] + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1398 .loc 1 662 3 is_stmt 1 view .LVU410 + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1399 .loc 1 662 34 is_stmt 0 view .LVU411 + 1400 0010 0023 movs r3, #0 + 1401 0012 0493 str r3, [sp, #16] + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1402 .loc 1 663 3 is_stmt 1 view .LVU412 + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1403 .loc 1 663 34 is_stmt 0 view .LVU413 + 1404 0014 4FF48063 mov r3, #1024 + 1405 0018 0593 str r3, [sp, #20] + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1406 .loc 1 664 3 is_stmt 1 view .LVU414 + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1407 .loc 1 664 9 is_stmt 0 view .LVU415 + 1408 001a 01A9 add r1, sp, #4 + 1409 .LVL90: + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1410 .loc 1 664 9 view .LVU416 + 1411 001c FFF7FEFF bl SDMMC_SendCommand + 1412 .LVL91: + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1413 .loc 1 667 3 is_stmt 1 view .LVU417 + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1414 .loc 1 667 16 is_stmt 0 view .LVU418 + 1415 0020 41F28832 movw r2, #5000 + 1416 0024 2946 mov r1, r5 + 1417 0026 2046 mov r0, r4 + 1418 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1419 .LVL92: + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1420 .loc 1 669 3 is_stmt 1 view .LVU419 + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1421 .loc 1 670 1 is_stmt 0 view .LVU420 + 1422 002c 07B0 add sp, sp, #28 + 1423 .LCFI26: + 1424 .cfi_def_cfa_offset 12 + 1425 @ sp needed + 1426 002e 30BD pop {r4, r5, pc} + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1427 .loc 1 670 1 view .LVU421 + 1428 .cfi_endproc + 1429 .LFE160: + 1431 .section .text.SDMMC_CmdEraseStartAdd,"ax",%progbits + 1432 .align 1 + 1433 .global SDMMC_CmdEraseStartAdd + 1434 .syntax unified + 1435 .thumb + 1436 .thumb_func + 1437 .fpu fpv5-d16 + 1439 SDMMC_CmdEraseStartAdd: + 1440 .LVL93: + 1441 .LFB161: + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1442 .loc 1 678 1 is_stmt 1 view -0 + ARM GAS /tmp/ccODg7xx.s page 60 + + + 1443 .cfi_startproc + 1444 @ args = 0, pretend = 0, frame = 24 + 1445 @ frame_needed = 0, uses_anonymous_args = 0 + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1446 .loc 1 678 1 is_stmt 0 view .LVU423 + 1447 0000 30B5 push {r4, r5, lr} + 1448 .LCFI27: + 1449 .cfi_def_cfa_offset 12 + 1450 .cfi_offset 4, -12 + 1451 .cfi_offset 5, -8 + 1452 .cfi_offset 14, -4 + 1453 0002 87B0 sub sp, sp, #28 + 1454 .LCFI28: + 1455 .cfi_def_cfa_offset 40 + 1456 0004 0446 mov r4, r0 + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1457 .loc 1 679 3 is_stmt 1 view .LVU424 + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1458 .loc 1 680 3 view .LVU425 + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE_GRP_START; + 1459 .loc 1 683 3 view .LVU426 + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE_GRP_START; + 1460 .loc 1 683 34 is_stmt 0 view .LVU427 + 1461 0006 0191 str r1, [sp, #4] + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1462 .loc 1 684 3 is_stmt 1 view .LVU428 + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1463 .loc 1 684 34 is_stmt 0 view .LVU429 + 1464 0008 2325 movs r5, #35 + 1465 000a 0295 str r5, [sp, #8] + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1466 .loc 1 685 3 is_stmt 1 view .LVU430 + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1467 .loc 1 685 34 is_stmt 0 view .LVU431 + 1468 000c 4023 movs r3, #64 + 1469 000e 0393 str r3, [sp, #12] + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1470 .loc 1 686 3 is_stmt 1 view .LVU432 + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1471 .loc 1 686 34 is_stmt 0 view .LVU433 + 1472 0010 0023 movs r3, #0 + 1473 0012 0493 str r3, [sp, #16] + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1474 .loc 1 687 3 is_stmt 1 view .LVU434 + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1475 .loc 1 687 34 is_stmt 0 view .LVU435 + 1476 0014 4FF48063 mov r3, #1024 + 1477 0018 0593 str r3, [sp, #20] + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1478 .loc 1 688 3 is_stmt 1 view .LVU436 + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1479 .loc 1 688 9 is_stmt 0 view .LVU437 + 1480 001a 01A9 add r1, sp, #4 + 1481 .LVL94: + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1482 .loc 1 688 9 view .LVU438 + 1483 001c FFF7FEFF bl SDMMC_SendCommand + ARM GAS /tmp/ccODg7xx.s page 61 + + + 1484 .LVL95: + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1485 .loc 1 691 3 is_stmt 1 view .LVU439 + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1486 .loc 1 691 16 is_stmt 0 view .LVU440 + 1487 0020 41F28832 movw r2, #5000 + 1488 0024 2946 mov r1, r5 + 1489 0026 2046 mov r0, r4 + 1490 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1491 .LVL96: + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1492 .loc 1 693 3 is_stmt 1 view .LVU441 + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1493 .loc 1 694 1 is_stmt 0 view .LVU442 + 1494 002c 07B0 add sp, sp, #28 + 1495 .LCFI29: + 1496 .cfi_def_cfa_offset 12 + 1497 @ sp needed + 1498 002e 30BD pop {r4, r5, pc} + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1499 .loc 1 694 1 view .LVU443 + 1500 .cfi_endproc + 1501 .LFE161: + 1503 .section .text.SDMMC_CmdEraseEndAdd,"ax",%progbits + 1504 .align 1 + 1505 .global SDMMC_CmdEraseEndAdd + 1506 .syntax unified + 1507 .thumb + 1508 .thumb_func + 1509 .fpu fpv5-d16 + 1511 SDMMC_CmdEraseEndAdd: + 1512 .LVL97: + 1513 .LFB162: + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1514 .loc 1 702 1 is_stmt 1 view -0 + 1515 .cfi_startproc + 1516 @ args = 0, pretend = 0, frame = 24 + 1517 @ frame_needed = 0, uses_anonymous_args = 0 + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1518 .loc 1 702 1 is_stmt 0 view .LVU445 + 1519 0000 30B5 push {r4, r5, lr} + 1520 .LCFI30: + 1521 .cfi_def_cfa_offset 12 + 1522 .cfi_offset 4, -12 + 1523 .cfi_offset 5, -8 + 1524 .cfi_offset 14, -4 + 1525 0002 87B0 sub sp, sp, #28 + 1526 .LCFI31: + 1527 .cfi_def_cfa_offset 40 + 1528 0004 0446 mov r4, r0 + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1529 .loc 1 703 3 is_stmt 1 view .LVU446 + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1530 .loc 1 704 3 view .LVU447 + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE_GRP_END; + 1531 .loc 1 707 3 view .LVU448 + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE_GRP_END; + ARM GAS /tmp/ccODg7xx.s page 62 + + + 1532 .loc 1 707 34 is_stmt 0 view .LVU449 + 1533 0006 0191 str r1, [sp, #4] + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1534 .loc 1 708 3 is_stmt 1 view .LVU450 + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1535 .loc 1 708 34 is_stmt 0 view .LVU451 + 1536 0008 2425 movs r5, #36 + 1537 000a 0295 str r5, [sp, #8] + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1538 .loc 1 709 3 is_stmt 1 view .LVU452 + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1539 .loc 1 709 34 is_stmt 0 view .LVU453 + 1540 000c 4023 movs r3, #64 + 1541 000e 0393 str r3, [sp, #12] + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1542 .loc 1 710 3 is_stmt 1 view .LVU454 + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1543 .loc 1 710 34 is_stmt 0 view .LVU455 + 1544 0010 0023 movs r3, #0 + 1545 0012 0493 str r3, [sp, #16] + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1546 .loc 1 711 3 is_stmt 1 view .LVU456 + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1547 .loc 1 711 34 is_stmt 0 view .LVU457 + 1548 0014 4FF48063 mov r3, #1024 + 1549 0018 0593 str r3, [sp, #20] + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1550 .loc 1 712 3 is_stmt 1 view .LVU458 + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1551 .loc 1 712 9 is_stmt 0 view .LVU459 + 1552 001a 01A9 add r1, sp, #4 + 1553 .LVL98: + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1554 .loc 1 712 9 view .LVU460 + 1555 001c FFF7FEFF bl SDMMC_SendCommand + 1556 .LVL99: + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1557 .loc 1 715 3 is_stmt 1 view .LVU461 + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1558 .loc 1 715 16 is_stmt 0 view .LVU462 + 1559 0020 41F28832 movw r2, #5000 + 1560 0024 2946 mov r1, r5 + 1561 0026 2046 mov r0, r4 + 1562 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1563 .LVL100: + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1564 .loc 1 717 3 is_stmt 1 view .LVU463 + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1565 .loc 1 718 1 is_stmt 0 view .LVU464 + 1566 002c 07B0 add sp, sp, #28 + 1567 .LCFI32: + 1568 .cfi_def_cfa_offset 12 + 1569 @ sp needed + 1570 002e 30BD pop {r4, r5, pc} + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1571 .loc 1 718 1 view .LVU465 + 1572 .cfi_endproc + ARM GAS /tmp/ccODg7xx.s page 63 + + + 1573 .LFE162: + 1575 .section .text.SDMMC_CmdErase,"ax",%progbits + 1576 .align 1 + 1577 .global SDMMC_CmdErase + 1578 .syntax unified + 1579 .thumb + 1580 .thumb_func + 1581 .fpu fpv5-d16 + 1583 SDMMC_CmdErase: + 1584 .LVL101: + 1585 .LFB163: + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1586 .loc 1 726 1 is_stmt 1 view -0 + 1587 .cfi_startproc + 1588 @ args = 0, pretend = 0, frame = 24 + 1589 @ frame_needed = 0, uses_anonymous_args = 0 + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1590 .loc 1 726 1 is_stmt 0 view .LVU467 + 1591 0000 30B5 push {r4, r5, lr} + 1592 .LCFI33: + 1593 .cfi_def_cfa_offset 12 + 1594 .cfi_offset 4, -12 + 1595 .cfi_offset 5, -8 + 1596 .cfi_offset 14, -4 + 1597 0002 87B0 sub sp, sp, #28 + 1598 .LCFI34: + 1599 .cfi_def_cfa_offset 40 + 1600 0004 0446 mov r4, r0 + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1601 .loc 1 727 3 is_stmt 1 view .LVU468 + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1602 .loc 1 728 3 view .LVU469 + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE; + 1603 .loc 1 731 3 view .LVU470 + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE; + 1604 .loc 1 731 34 is_stmt 0 view .LVU471 + 1605 0006 0023 movs r3, #0 + 1606 0008 0193 str r3, [sp, #4] + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1607 .loc 1 732 3 is_stmt 1 view .LVU472 + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1608 .loc 1 732 34 is_stmt 0 view .LVU473 + 1609 000a 2625 movs r5, #38 + 1610 000c 0295 str r5, [sp, #8] + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1611 .loc 1 733 3 is_stmt 1 view .LVU474 + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1612 .loc 1 733 34 is_stmt 0 view .LVU475 + 1613 000e 4022 movs r2, #64 + 1614 0010 0392 str r2, [sp, #12] + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1615 .loc 1 734 3 is_stmt 1 view .LVU476 + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1616 .loc 1 734 34 is_stmt 0 view .LVU477 + 1617 0012 0493 str r3, [sp, #16] + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1618 .loc 1 735 3 is_stmt 1 view .LVU478 + ARM GAS /tmp/ccODg7xx.s page 64 + + + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1619 .loc 1 735 34 is_stmt 0 view .LVU479 + 1620 0014 4FF48063 mov r3, #1024 + 1621 0018 0593 str r3, [sp, #20] + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1622 .loc 1 736 3 is_stmt 1 view .LVU480 + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1623 .loc 1 736 9 is_stmt 0 view .LVU481 + 1624 001a 01A9 add r1, sp, #4 + 1625 001c FFF7FEFF bl SDMMC_SendCommand + 1626 .LVL102: + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1627 .loc 1 739 3 is_stmt 1 view .LVU482 + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1628 .loc 1 739 16 is_stmt 0 view .LVU483 + 1629 0020 4FF21862 movw r2, #63000 + 1630 0024 2946 mov r1, r5 + 1631 0026 2046 mov r0, r4 + 1632 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1633 .LVL103: + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1634 .loc 1 741 3 is_stmt 1 view .LVU484 + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1635 .loc 1 742 1 is_stmt 0 view .LVU485 + 1636 002c 07B0 add sp, sp, #28 + 1637 .LCFI35: + 1638 .cfi_def_cfa_offset 12 + 1639 @ sp needed + 1640 002e 30BD pop {r4, r5, pc} + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1641 .loc 1 742 1 view .LVU486 + 1642 .cfi_endproc + 1643 .LFE163: + 1645 .section .text.SDMMC_CmdStopTransfer,"ax",%progbits + 1646 .align 1 + 1647 .global SDMMC_CmdStopTransfer + 1648 .syntax unified + 1649 .thumb + 1650 .thumb_func + 1651 .fpu fpv5-d16 + 1653 SDMMC_CmdStopTransfer: + 1654 .LVL104: + 1655 .LFB164: + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1656 .loc 1 750 1 is_stmt 1 view -0 + 1657 .cfi_startproc + 1658 @ args = 0, pretend = 0, frame = 24 + 1659 @ frame_needed = 0, uses_anonymous_args = 0 + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1660 .loc 1 750 1 is_stmt 0 view .LVU488 + 1661 0000 30B5 push {r4, r5, lr} + 1662 .LCFI36: + 1663 .cfi_def_cfa_offset 12 + 1664 .cfi_offset 4, -12 + 1665 .cfi_offset 5, -8 + 1666 .cfi_offset 14, -4 + 1667 0002 87B0 sub sp, sp, #28 + ARM GAS /tmp/ccODg7xx.s page 65 + + + 1668 .LCFI37: + 1669 .cfi_def_cfa_offset 40 + 1670 0004 0446 mov r4, r0 + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1671 .loc 1 751 3 is_stmt 1 view .LVU489 + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1672 .loc 1 752 3 view .LVU490 + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_STOP_TRANSMISSION; + 1673 .loc 1 755 3 view .LVU491 + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_STOP_TRANSMISSION; + 1674 .loc 1 755 34 is_stmt 0 view .LVU492 + 1675 0006 0023 movs r3, #0 + 1676 0008 0193 str r3, [sp, #4] + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1677 .loc 1 756 3 is_stmt 1 view .LVU493 + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1678 .loc 1 756 34 is_stmt 0 view .LVU494 + 1679 000a 0C25 movs r5, #12 + 1680 000c 0295 str r5, [sp, #8] + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1681 .loc 1 757 3 is_stmt 1 view .LVU495 + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1682 .loc 1 757 34 is_stmt 0 view .LVU496 + 1683 000e 4022 movs r2, #64 + 1684 0010 0392 str r2, [sp, #12] + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1685 .loc 1 758 3 is_stmt 1 view .LVU497 + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1686 .loc 1 758 34 is_stmt 0 view .LVU498 + 1687 0012 0493 str r3, [sp, #16] + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1688 .loc 1 759 3 is_stmt 1 view .LVU499 + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1689 .loc 1 759 34 is_stmt 0 view .LVU500 + 1690 0014 4FF48063 mov r3, #1024 + 1691 0018 0593 str r3, [sp, #20] + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1692 .loc 1 760 3 is_stmt 1 view .LVU501 + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1693 .loc 1 760 9 is_stmt 0 view .LVU502 + 1694 001a 01A9 add r1, sp, #4 + 1695 001c FFF7FEFF bl SDMMC_SendCommand + 1696 .LVL105: + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1697 .loc 1 763 3 is_stmt 1 view .LVU503 + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1698 .loc 1 763 16 is_stmt 0 view .LVU504 + 1699 0020 034A ldr r2, .L79 + 1700 0022 2946 mov r1, r5 + 1701 0024 2046 mov r0, r4 + 1702 0026 FFF7FEFF bl SDMMC_GetCmdResp1 + 1703 .LVL106: + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1704 .loc 1 765 3 is_stmt 1 view .LVU505 + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1705 .loc 1 766 1 is_stmt 0 view .LVU506 + 1706 002a 07B0 add sp, sp, #28 + ARM GAS /tmp/ccODg7xx.s page 66 + + + 1707 .LCFI38: + 1708 .cfi_def_cfa_offset 12 + 1709 @ sp needed + 1710 002c 30BD pop {r4, r5, pc} + 1711 .LVL107: + 1712 .L80: + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1713 .loc 1 766 1 view .LVU507 + 1714 002e 00BF .align 2 + 1715 .L79: + 1716 0030 00E1F505 .word 100000000 + 1717 .cfi_endproc + 1718 .LFE164: + 1720 .section .text.SDMMC_CmdSelDesel,"ax",%progbits + 1721 .align 1 + 1722 .global SDMMC_CmdSelDesel + 1723 .syntax unified + 1724 .thumb + 1725 .thumb_func + 1726 .fpu fpv5-d16 + 1728 SDMMC_CmdSelDesel: + 1729 .LVL108: + 1730 .LFB165: + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1731 .loc 1 775 1 is_stmt 1 view -0 + 1732 .cfi_startproc + 1733 @ args = 0, pretend = 0, frame = 24 + 1734 @ frame_needed = 0, uses_anonymous_args = 0 + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1735 .loc 1 775 1 is_stmt 0 view .LVU509 + 1736 0000 30B5 push {r4, r5, lr} + 1737 .LCFI39: + 1738 .cfi_def_cfa_offset 12 + 1739 .cfi_offset 4, -12 + 1740 .cfi_offset 5, -8 + 1741 .cfi_offset 14, -4 + 1742 0002 87B0 sub sp, sp, #28 + 1743 .LCFI40: + 1744 .cfi_def_cfa_offset 40 + 1745 0004 0446 mov r4, r0 + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1746 .loc 1 776 3 is_stmt 1 view .LVU510 + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1747 .loc 1 777 3 view .LVU511 + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEL_DESEL_CARD; + 1748 .loc 1 780 3 view .LVU512 + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEL_DESEL_CARD; + 1749 .loc 1 780 34 is_stmt 0 view .LVU513 + 1750 0006 0192 str r2, [sp, #4] + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1751 .loc 1 781 3 is_stmt 1 view .LVU514 + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1752 .loc 1 781 34 is_stmt 0 view .LVU515 + 1753 0008 0725 movs r5, #7 + 1754 000a 0295 str r5, [sp, #8] + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1755 .loc 1 782 3 is_stmt 1 view .LVU516 + ARM GAS /tmp/ccODg7xx.s page 67 + + + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1756 .loc 1 782 34 is_stmt 0 view .LVU517 + 1757 000c 4023 movs r3, #64 + 1758 000e 0393 str r3, [sp, #12] + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1759 .loc 1 783 3 is_stmt 1 view .LVU518 + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1760 .loc 1 783 34 is_stmt 0 view .LVU519 + 1761 0010 0023 movs r3, #0 + 1762 0012 0493 str r3, [sp, #16] + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1763 .loc 1 784 3 is_stmt 1 view .LVU520 + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1764 .loc 1 784 34 is_stmt 0 view .LVU521 + 1765 0014 4FF48063 mov r3, #1024 + 1766 0018 0593 str r3, [sp, #20] + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1767 .loc 1 785 3 is_stmt 1 view .LVU522 + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1768 .loc 1 785 9 is_stmt 0 view .LVU523 + 1769 001a 01A9 add r1, sp, #4 + 1770 001c FFF7FEFF bl SDMMC_SendCommand + 1771 .LVL109: + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1772 .loc 1 788 3 is_stmt 1 view .LVU524 + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1773 .loc 1 788 16 is_stmt 0 view .LVU525 + 1774 0020 41F28832 movw r2, #5000 + 1775 0024 2946 mov r1, r5 + 1776 0026 2046 mov r0, r4 + 1777 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1778 .LVL110: + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1779 .loc 1 790 3 is_stmt 1 view .LVU526 + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1780 .loc 1 791 1 is_stmt 0 view .LVU527 + 1781 002c 07B0 add sp, sp, #28 + 1782 .LCFI41: + 1783 .cfi_def_cfa_offset 12 + 1784 @ sp needed + 1785 002e 30BD pop {r4, r5, pc} + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1786 .loc 1 791 1 view .LVU528 + 1787 .cfi_endproc + 1788 .LFE165: + 1790 .section .text.SDMMC_CmdAppCommand,"ax",%progbits + 1791 .align 1 + 1792 .global SDMMC_CmdAppCommand + 1793 .syntax unified + 1794 .thumb + 1795 .thumb_func + 1796 .fpu fpv5-d16 + 1798 SDMMC_CmdAppCommand: + 1799 .LVL111: + 1800 .LFB168: + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1801 .loc 1 853 1 is_stmt 1 view -0 + ARM GAS /tmp/ccODg7xx.s page 68 + + + 1802 .cfi_startproc + 1803 @ args = 0, pretend = 0, frame = 24 + 1804 @ frame_needed = 0, uses_anonymous_args = 0 + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1805 .loc 1 853 1 is_stmt 0 view .LVU530 + 1806 0000 30B5 push {r4, r5, lr} + 1807 .LCFI42: + 1808 .cfi_def_cfa_offset 12 + 1809 .cfi_offset 4, -12 + 1810 .cfi_offset 5, -8 + 1811 .cfi_offset 14, -4 + 1812 0002 87B0 sub sp, sp, #28 + 1813 .LCFI43: + 1814 .cfi_def_cfa_offset 40 + 1815 0004 0446 mov r4, r0 + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1816 .loc 1 854 3 is_stmt 1 view .LVU531 + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1817 .loc 1 855 3 view .LVU532 + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_APP_CMD; + 1818 .loc 1 857 3 view .LVU533 + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_APP_CMD; + 1819 .loc 1 857 34 is_stmt 0 view .LVU534 + 1820 0006 0191 str r1, [sp, #4] + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1821 .loc 1 858 3 is_stmt 1 view .LVU535 + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1822 .loc 1 858 34 is_stmt 0 view .LVU536 + 1823 0008 3725 movs r5, #55 + 1824 000a 0295 str r5, [sp, #8] + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1825 .loc 1 859 3 is_stmt 1 view .LVU537 + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1826 .loc 1 859 34 is_stmt 0 view .LVU538 + 1827 000c 4023 movs r3, #64 + 1828 000e 0393 str r3, [sp, #12] + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1829 .loc 1 860 3 is_stmt 1 view .LVU539 + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1830 .loc 1 860 34 is_stmt 0 view .LVU540 + 1831 0010 0023 movs r3, #0 + 1832 0012 0493 str r3, [sp, #16] + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1833 .loc 1 861 3 is_stmt 1 view .LVU541 + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1834 .loc 1 861 34 is_stmt 0 view .LVU542 + 1835 0014 4FF48063 mov r3, #1024 + 1836 0018 0593 str r3, [sp, #20] + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1837 .loc 1 862 3 is_stmt 1 view .LVU543 + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1838 .loc 1 862 9 is_stmt 0 view .LVU544 + 1839 001a 01A9 add r1, sp, #4 + 1840 .LVL112: + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1841 .loc 1 862 9 view .LVU545 + 1842 001c FFF7FEFF bl SDMMC_SendCommand + ARM GAS /tmp/ccODg7xx.s page 69 + + + 1843 .LVL113: + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1844 .loc 1 868 3 is_stmt 1 view .LVU546 + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1845 .loc 1 868 16 is_stmt 0 view .LVU547 + 1846 0020 41F28832 movw r2, #5000 + 1847 0024 2946 mov r1, r5 + 1848 0026 2046 mov r0, r4 + 1849 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1850 .LVL114: + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1851 .loc 1 870 3 is_stmt 1 view .LVU548 + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1852 .loc 1 871 1 is_stmt 0 view .LVU549 + 1853 002c 07B0 add sp, sp, #28 + 1854 .LCFI44: + 1855 .cfi_def_cfa_offset 12 + 1856 @ sp needed + 1857 002e 30BD pop {r4, r5, pc} + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1858 .loc 1 871 1 view .LVU550 + 1859 .cfi_endproc + 1860 .LFE168: + 1862 .section .text.SDMMC_CmdBusWidth,"ax",%progbits + 1863 .align 1 + 1864 .global SDMMC_CmdBusWidth + 1865 .syntax unified + 1866 .thumb + 1867 .thumb_func + 1868 .fpu fpv5-d16 + 1870 SDMMC_CmdBusWidth: + 1871 .LVL115: + 1872 .LFB170: + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1873 .loc 1 905 1 is_stmt 1 view -0 + 1874 .cfi_startproc + 1875 @ args = 0, pretend = 0, frame = 24 + 1876 @ frame_needed = 0, uses_anonymous_args = 0 + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1877 .loc 1 905 1 is_stmt 0 view .LVU552 + 1878 0000 30B5 push {r4, r5, lr} + 1879 .LCFI45: + 1880 .cfi_def_cfa_offset 12 + 1881 .cfi_offset 4, -12 + 1882 .cfi_offset 5, -8 + 1883 .cfi_offset 14, -4 + 1884 0002 87B0 sub sp, sp, #28 + 1885 .LCFI46: + 1886 .cfi_def_cfa_offset 40 + 1887 0004 0446 mov r4, r0 + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1888 .loc 1 906 3 is_stmt 1 view .LVU553 + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1889 .loc 1 907 3 view .LVU554 + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_APP_SD_SET_BUSWIDTH; + 1890 .loc 1 909 3 view .LVU555 + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_APP_SD_SET_BUSWIDTH; + ARM GAS /tmp/ccODg7xx.s page 70 + + + 1891 .loc 1 909 34 is_stmt 0 view .LVU556 + 1892 0006 0191 str r1, [sp, #4] + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1893 .loc 1 910 3 is_stmt 1 view .LVU557 + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1894 .loc 1 910 34 is_stmt 0 view .LVU558 + 1895 0008 0625 movs r5, #6 + 1896 000a 0295 str r5, [sp, #8] + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1897 .loc 1 911 3 is_stmt 1 view .LVU559 + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1898 .loc 1 911 34 is_stmt 0 view .LVU560 + 1899 000c 4023 movs r3, #64 + 1900 000e 0393 str r3, [sp, #12] + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1901 .loc 1 912 3 is_stmt 1 view .LVU561 + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1902 .loc 1 912 34 is_stmt 0 view .LVU562 + 1903 0010 0023 movs r3, #0 + 1904 0012 0493 str r3, [sp, #16] + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1905 .loc 1 913 3 is_stmt 1 view .LVU563 + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1906 .loc 1 913 34 is_stmt 0 view .LVU564 + 1907 0014 4FF48063 mov r3, #1024 + 1908 0018 0593 str r3, [sp, #20] + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1909 .loc 1 914 3 is_stmt 1 view .LVU565 + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1910 .loc 1 914 9 is_stmt 0 view .LVU566 + 1911 001a 01A9 add r1, sp, #4 + 1912 .LVL116: + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1913 .loc 1 914 9 view .LVU567 + 1914 001c FFF7FEFF bl SDMMC_SendCommand + 1915 .LVL117: + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1916 .loc 1 917 3 is_stmt 1 view .LVU568 + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1917 .loc 1 917 16 is_stmt 0 view .LVU569 + 1918 0020 41F28832 movw r2, #5000 + 1919 0024 2946 mov r1, r5 + 1920 0026 2046 mov r0, r4 + 1921 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1922 .LVL118: + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1923 .loc 1 919 3 is_stmt 1 view .LVU570 + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1924 .loc 1 920 1 is_stmt 0 view .LVU571 + 1925 002c 07B0 add sp, sp, #28 + 1926 .LCFI47: + 1927 .cfi_def_cfa_offset 12 + 1928 @ sp needed + 1929 002e 30BD pop {r4, r5, pc} + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1930 .loc 1 920 1 view .LVU572 + 1931 .cfi_endproc + ARM GAS /tmp/ccODg7xx.s page 71 + + + 1932 .LFE170: + 1934 .section .text.SDMMC_CmdSendSCR,"ax",%progbits + 1935 .align 1 + 1936 .global SDMMC_CmdSendSCR + 1937 .syntax unified + 1938 .thumb + 1939 .thumb_func + 1940 .fpu fpv5-d16 + 1942 SDMMC_CmdSendSCR: + 1943 .LVL119: + 1944 .LFB171: + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1945 .loc 1 928 1 is_stmt 1 view -0 + 1946 .cfi_startproc + 1947 @ args = 0, pretend = 0, frame = 24 + 1948 @ frame_needed = 0, uses_anonymous_args = 0 + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 1949 .loc 1 928 1 is_stmt 0 view .LVU574 + 1950 0000 30B5 push {r4, r5, lr} + 1951 .LCFI48: + 1952 .cfi_def_cfa_offset 12 + 1953 .cfi_offset 4, -12 + 1954 .cfi_offset 5, -8 + 1955 .cfi_offset 14, -4 + 1956 0002 87B0 sub sp, sp, #28 + 1957 .LCFI49: + 1958 .cfi_def_cfa_offset 40 + 1959 0004 0446 mov r4, r0 + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 1960 .loc 1 929 3 is_stmt 1 view .LVU575 + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1961 .loc 1 930 3 view .LVU576 + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_SEND_SCR; + 1962 .loc 1 933 3 view .LVU577 + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_SEND_SCR; + 1963 .loc 1 933 34 is_stmt 0 view .LVU578 + 1964 0006 0023 movs r3, #0 + 1965 0008 0193 str r3, [sp, #4] + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1966 .loc 1 934 3 is_stmt 1 view .LVU579 + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 1967 .loc 1 934 34 is_stmt 0 view .LVU580 + 1968 000a 3325 movs r5, #51 + 1969 000c 0295 str r5, [sp, #8] + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1970 .loc 1 935 3 is_stmt 1 view .LVU581 + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 1971 .loc 1 935 34 is_stmt 0 view .LVU582 + 1972 000e 4022 movs r2, #64 + 1973 0010 0392 str r2, [sp, #12] + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1974 .loc 1 936 3 is_stmt 1 view .LVU583 + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 1975 .loc 1 936 34 is_stmt 0 view .LVU584 + 1976 0012 0493 str r3, [sp, #16] + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1977 .loc 1 937 3 is_stmt 1 view .LVU585 + ARM GAS /tmp/ccODg7xx.s page 72 + + + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 1978 .loc 1 937 34 is_stmt 0 view .LVU586 + 1979 0014 4FF48063 mov r3, #1024 + 1980 0018 0593 str r3, [sp, #20] + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1981 .loc 1 938 3 is_stmt 1 view .LVU587 + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1982 .loc 1 938 9 is_stmt 0 view .LVU588 + 1983 001a 01A9 add r1, sp, #4 + 1984 001c FFF7FEFF bl SDMMC_SendCommand + 1985 .LVL120: + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1986 .loc 1 941 3 is_stmt 1 view .LVU589 + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1987 .loc 1 941 16 is_stmt 0 view .LVU590 + 1988 0020 41F28832 movw r2, #5000 + 1989 0024 2946 mov r1, r5 + 1990 0026 2046 mov r0, r4 + 1991 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 1992 .LVL121: + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 1993 .loc 1 943 3 is_stmt 1 view .LVU591 + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 1994 .loc 1 944 1 is_stmt 0 view .LVU592 + 1995 002c 07B0 add sp, sp, #28 + 1996 .LCFI50: + 1997 .cfi_def_cfa_offset 12 + 1998 @ sp needed + 1999 002e 30BD pop {r4, r5, pc} + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2000 .loc 1 944 1 view .LVU593 + 2001 .cfi_endproc + 2002 .LFE171: + 2004 .section .text.SDMMC_CmdSetRelAddMmc,"ax",%progbits + 2005 .align 1 + 2006 .global SDMMC_CmdSetRelAddMmc + 2007 .syntax unified + 2008 .thumb + 2009 .thumb_func + 2010 .fpu fpv5-d16 + 2012 SDMMC_CmdSetRelAddMmc: + 2013 .LVL122: + 2014 .LFB175: +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2015 .loc 1 1027 1 is_stmt 1 view -0 + 2016 .cfi_startproc + 2017 @ args = 0, pretend = 0, frame = 24 + 2018 @ frame_needed = 0, uses_anonymous_args = 0 +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2019 .loc 1 1027 1 is_stmt 0 view .LVU595 + 2020 0000 30B5 push {r4, r5, lr} + 2021 .LCFI51: + 2022 .cfi_def_cfa_offset 12 + 2023 .cfi_offset 4, -12 + 2024 .cfi_offset 5, -8 + 2025 .cfi_offset 14, -4 + 2026 0002 87B0 sub sp, sp, #28 + ARM GAS /tmp/ccODg7xx.s page 73 + + + 2027 .LCFI52: + 2028 .cfi_def_cfa_offset 40 + 2029 0004 0446 mov r4, r0 +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 2030 .loc 1 1028 3 is_stmt 1 view .LVU596 +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2031 .loc 1 1029 3 view .LVU597 +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_REL_ADDR; + 2032 .loc 1 1032 3 view .LVU598 +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_REL_ADDR; + 2033 .loc 1 1032 51 is_stmt 0 view .LVU599 + 2034 0006 0904 lsls r1, r1, #16 + 2035 .LVL123: +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_REL_ADDR; + 2036 .loc 1 1032 34 view .LVU600 + 2037 0008 0191 str r1, [sp, #4] +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2038 .loc 1 1033 3 is_stmt 1 view .LVU601 +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2039 .loc 1 1033 34 is_stmt 0 view .LVU602 + 2040 000a 0325 movs r5, #3 + 2041 000c 0295 str r5, [sp, #8] +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2042 .loc 1 1034 3 is_stmt 1 view .LVU603 +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2043 .loc 1 1034 34 is_stmt 0 view .LVU604 + 2044 000e 4023 movs r3, #64 + 2045 0010 0393 str r3, [sp, #12] +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2046 .loc 1 1035 3 is_stmt 1 view .LVU605 +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2047 .loc 1 1035 34 is_stmt 0 view .LVU606 + 2048 0012 0023 movs r3, #0 + 2049 0014 0493 str r3, [sp, #16] +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2050 .loc 1 1036 3 is_stmt 1 view .LVU607 +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2051 .loc 1 1036 34 is_stmt 0 view .LVU608 + 2052 0016 4FF48063 mov r3, #1024 + 2053 001a 0593 str r3, [sp, #20] +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2054 .loc 1 1037 3 is_stmt 1 view .LVU609 +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2055 .loc 1 1037 9 is_stmt 0 view .LVU610 + 2056 001c 01A9 add r1, sp, #4 + 2057 001e FFF7FEFF bl SDMMC_SendCommand + 2058 .LVL124: +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2059 .loc 1 1040 3 is_stmt 1 view .LVU611 +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2060 .loc 1 1040 16 is_stmt 0 view .LVU612 + 2061 0022 41F28832 movw r2, #5000 + 2062 0026 2946 mov r1, r5 + 2063 0028 2046 mov r0, r4 + 2064 002a FFF7FEFF bl SDMMC_GetCmdResp1 + 2065 .LVL125: +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + ARM GAS /tmp/ccODg7xx.s page 74 + + + 2066 .loc 1 1042 3 is_stmt 1 view .LVU613 +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2067 .loc 1 1043 1 is_stmt 0 view .LVU614 + 2068 002e 07B0 add sp, sp, #28 + 2069 .LCFI53: + 2070 .cfi_def_cfa_offset 12 + 2071 @ sp needed + 2072 0030 30BD pop {r4, r5, pc} +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2073 .loc 1 1043 1 view .LVU615 + 2074 .cfi_endproc + 2075 .LFE175: + 2077 .section .text.SDMMC_CmdSendStatus,"ax",%progbits + 2078 .align 1 + 2079 .global SDMMC_CmdSendStatus + 2080 .syntax unified + 2081 .thumb + 2082 .thumb_func + 2083 .fpu fpv5-d16 + 2085 SDMMC_CmdSendStatus: + 2086 .LVL126: + 2087 .LFB176: +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2088 .loc 1 1052 1 is_stmt 1 view -0 + 2089 .cfi_startproc + 2090 @ args = 0, pretend = 0, frame = 24 + 2091 @ frame_needed = 0, uses_anonymous_args = 0 +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2092 .loc 1 1052 1 is_stmt 0 view .LVU617 + 2093 0000 30B5 push {r4, r5, lr} + 2094 .LCFI54: + 2095 .cfi_def_cfa_offset 12 + 2096 .cfi_offset 4, -12 + 2097 .cfi_offset 5, -8 + 2098 .cfi_offset 14, -4 + 2099 0002 87B0 sub sp, sp, #28 + 2100 .LCFI55: + 2101 .cfi_def_cfa_offset 40 + 2102 0004 0446 mov r4, r0 +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 2103 .loc 1 1053 3 is_stmt 1 view .LVU618 +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2104 .loc 1 1054 3 view .LVU619 +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_STATUS; + 2105 .loc 1 1056 3 view .LVU620 +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_STATUS; + 2106 .loc 1 1056 34 is_stmt 0 view .LVU621 + 2107 0006 0191 str r1, [sp, #4] +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2108 .loc 1 1057 3 is_stmt 1 view .LVU622 +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2109 .loc 1 1057 34 is_stmt 0 view .LVU623 + 2110 0008 0D25 movs r5, #13 + 2111 000a 0295 str r5, [sp, #8] +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2112 .loc 1 1058 3 is_stmt 1 view .LVU624 +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + ARM GAS /tmp/ccODg7xx.s page 75 + + + 2113 .loc 1 1058 34 is_stmt 0 view .LVU625 + 2114 000c 4023 movs r3, #64 + 2115 000e 0393 str r3, [sp, #12] +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2116 .loc 1 1059 3 is_stmt 1 view .LVU626 +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2117 .loc 1 1059 34 is_stmt 0 view .LVU627 + 2118 0010 0023 movs r3, #0 + 2119 0012 0493 str r3, [sp, #16] +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2120 .loc 1 1060 3 is_stmt 1 view .LVU628 +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2121 .loc 1 1060 34 is_stmt 0 view .LVU629 + 2122 0014 4FF48063 mov r3, #1024 + 2123 0018 0593 str r3, [sp, #20] +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2124 .loc 1 1061 3 is_stmt 1 view .LVU630 +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2125 .loc 1 1061 9 is_stmt 0 view .LVU631 + 2126 001a 01A9 add r1, sp, #4 + 2127 .LVL127: +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2128 .loc 1 1061 9 view .LVU632 + 2129 001c FFF7FEFF bl SDMMC_SendCommand + 2130 .LVL128: +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2131 .loc 1 1064 3 is_stmt 1 view .LVU633 +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2132 .loc 1 1064 16 is_stmt 0 view .LVU634 + 2133 0020 41F28832 movw r2, #5000 + 2134 0024 2946 mov r1, r5 + 2135 0026 2046 mov r0, r4 + 2136 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 2137 .LVL129: +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2138 .loc 1 1066 3 is_stmt 1 view .LVU635 +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2139 .loc 1 1067 1 is_stmt 0 view .LVU636 + 2140 002c 07B0 add sp, sp, #28 + 2141 .LCFI56: + 2142 .cfi_def_cfa_offset 12 + 2143 @ sp needed + 2144 002e 30BD pop {r4, r5, pc} +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2145 .loc 1 1067 1 view .LVU637 + 2146 .cfi_endproc + 2147 .LFE176: + 2149 .section .text.SDMMC_CmdStatusRegister,"ax",%progbits + 2150 .align 1 + 2151 .global SDMMC_CmdStatusRegister + 2152 .syntax unified + 2153 .thumb + 2154 .thumb_func + 2155 .fpu fpv5-d16 + 2157 SDMMC_CmdStatusRegister: + 2158 .LVL130: + 2159 .LFB177: + ARM GAS /tmp/ccODg7xx.s page 76 + + +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2160 .loc 1 1075 1 is_stmt 1 view -0 + 2161 .cfi_startproc + 2162 @ args = 0, pretend = 0, frame = 24 + 2163 @ frame_needed = 0, uses_anonymous_args = 0 +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2164 .loc 1 1075 1 is_stmt 0 view .LVU639 + 2165 0000 30B5 push {r4, r5, lr} + 2166 .LCFI57: + 2167 .cfi_def_cfa_offset 12 + 2168 .cfi_offset 4, -12 + 2169 .cfi_offset 5, -8 + 2170 .cfi_offset 14, -4 + 2171 0002 87B0 sub sp, sp, #28 + 2172 .LCFI58: + 2173 .cfi_def_cfa_offset 40 + 2174 0004 0446 mov r4, r0 +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 2175 .loc 1 1076 3 is_stmt 1 view .LVU640 +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2176 .loc 1 1077 3 view .LVU641 +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_STATUS; + 2177 .loc 1 1079 3 view .LVU642 +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_STATUS; + 2178 .loc 1 1079 34 is_stmt 0 view .LVU643 + 2179 0006 0023 movs r3, #0 + 2180 0008 0193 str r3, [sp, #4] +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2181 .loc 1 1080 3 is_stmt 1 view .LVU644 +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2182 .loc 1 1080 34 is_stmt 0 view .LVU645 + 2183 000a 0D25 movs r5, #13 + 2184 000c 0295 str r5, [sp, #8] +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2185 .loc 1 1081 3 is_stmt 1 view .LVU646 +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2186 .loc 1 1081 34 is_stmt 0 view .LVU647 + 2187 000e 4022 movs r2, #64 + 2188 0010 0392 str r2, [sp, #12] +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2189 .loc 1 1082 3 is_stmt 1 view .LVU648 +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2190 .loc 1 1082 34 is_stmt 0 view .LVU649 + 2191 0012 0493 str r3, [sp, #16] +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2192 .loc 1 1083 3 is_stmt 1 view .LVU650 +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2193 .loc 1 1083 34 is_stmt 0 view .LVU651 + 2194 0014 4FF48063 mov r3, #1024 + 2195 0018 0593 str r3, [sp, #20] +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2196 .loc 1 1084 3 is_stmt 1 view .LVU652 +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2197 .loc 1 1084 9 is_stmt 0 view .LVU653 + 2198 001a 01A9 add r1, sp, #4 + 2199 001c FFF7FEFF bl SDMMC_SendCommand + 2200 .LVL131: + ARM GAS /tmp/ccODg7xx.s page 77 + + +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2201 .loc 1 1087 3 is_stmt 1 view .LVU654 +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2202 .loc 1 1087 16 is_stmt 0 view .LVU655 + 2203 0020 41F28832 movw r2, #5000 + 2204 0024 2946 mov r1, r5 + 2205 0026 2046 mov r0, r4 + 2206 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 2207 .LVL132: +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2208 .loc 1 1089 3 is_stmt 1 view .LVU656 +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2209 .loc 1 1090 1 is_stmt 0 view .LVU657 + 2210 002c 07B0 add sp, sp, #28 + 2211 .LCFI59: + 2212 .cfi_def_cfa_offset 12 + 2213 @ sp needed + 2214 002e 30BD pop {r4, r5, pc} +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2215 .loc 1 1090 1 view .LVU658 + 2216 .cfi_endproc + 2217 .LFE177: + 2219 .section .text.SDMMC_CmdSwitch,"ax",%progbits + 2220 .align 1 + 2221 .global SDMMC_CmdSwitch + 2222 .syntax unified + 2223 .thumb + 2224 .thumb_func + 2225 .fpu fpv5-d16 + 2227 SDMMC_CmdSwitch: + 2228 .LVL133: + 2229 .LFB179: +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2230 .loc 1 1124 1 is_stmt 1 view -0 + 2231 .cfi_startproc + 2232 @ args = 0, pretend = 0, frame = 24 + 2233 @ frame_needed = 0, uses_anonymous_args = 0 +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2234 .loc 1 1124 1 is_stmt 0 view .LVU660 + 2235 0000 30B5 push {r4, r5, lr} + 2236 .LCFI60: + 2237 .cfi_def_cfa_offset 12 + 2238 .cfi_offset 4, -12 + 2239 .cfi_offset 5, -8 + 2240 .cfi_offset 14, -4 + 2241 0002 87B0 sub sp, sp, #28 + 2242 .LCFI61: + 2243 .cfi_def_cfa_offset 40 + 2244 0004 0446 mov r4, r0 +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 2245 .loc 1 1125 3 is_stmt 1 view .LVU661 +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2246 .loc 1 1126 3 view .LVU662 +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SWITCH; + 2247 .loc 1 1130 3 view .LVU663 +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SWITCH; + 2248 .loc 1 1130 34 is_stmt 0 view .LVU664 + ARM GAS /tmp/ccODg7xx.s page 78 + + + 2249 0006 0191 str r1, [sp, #4] +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2250 .loc 1 1131 3 is_stmt 1 view .LVU665 +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2251 .loc 1 1131 34 is_stmt 0 view .LVU666 + 2252 0008 0625 movs r5, #6 + 2253 000a 0295 str r5, [sp, #8] +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2254 .loc 1 1132 3 is_stmt 1 view .LVU667 +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2255 .loc 1 1132 34 is_stmt 0 view .LVU668 + 2256 000c 4023 movs r3, #64 + 2257 000e 0393 str r3, [sp, #12] +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2258 .loc 1 1133 3 is_stmt 1 view .LVU669 +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2259 .loc 1 1133 34 is_stmt 0 view .LVU670 + 2260 0010 0023 movs r3, #0 + 2261 0012 0493 str r3, [sp, #16] +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2262 .loc 1 1134 3 is_stmt 1 view .LVU671 +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2263 .loc 1 1134 34 is_stmt 0 view .LVU672 + 2264 0014 4FF48063 mov r3, #1024 + 2265 0018 0593 str r3, [sp, #20] +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2266 .loc 1 1135 3 is_stmt 1 view .LVU673 +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2267 .loc 1 1135 9 is_stmt 0 view .LVU674 + 2268 001a 01A9 add r1, sp, #4 + 2269 .LVL134: +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2270 .loc 1 1135 9 view .LVU675 + 2271 001c FFF7FEFF bl SDMMC_SendCommand + 2272 .LVL135: +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2273 .loc 1 1138 3 is_stmt 1 view .LVU676 +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2274 .loc 1 1138 16 is_stmt 0 view .LVU677 + 2275 0020 41F28832 movw r2, #5000 + 2276 0024 2946 mov r1, r5 + 2277 0026 2046 mov r0, r4 + 2278 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 2279 .LVL136: +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2280 .loc 1 1140 3 is_stmt 1 view .LVU678 +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2281 .loc 1 1141 1 is_stmt 0 view .LVU679 + 2282 002c 07B0 add sp, sp, #28 + 2283 .LCFI62: + 2284 .cfi_def_cfa_offset 12 + 2285 @ sp needed + 2286 002e 30BD pop {r4, r5, pc} +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2287 .loc 1 1141 1 view .LVU680 + 2288 .cfi_endproc + 2289 .LFE179: + ARM GAS /tmp/ccODg7xx.s page 79 + + + 2291 .section .text.SDMMC_CmdSendEXTCSD,"ax",%progbits + 2292 .align 1 + 2293 .global SDMMC_CmdSendEXTCSD + 2294 .syntax unified + 2295 .thumb + 2296 .thumb_func + 2297 .fpu fpv5-d16 + 2299 SDMMC_CmdSendEXTCSD: + 2300 .LVL137: + 2301 .LFB180: +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2302 .loc 1 1150 1 is_stmt 1 view -0 + 2303 .cfi_startproc + 2304 @ args = 0, pretend = 0, frame = 24 + 2305 @ frame_needed = 0, uses_anonymous_args = 0 +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2306 .loc 1 1150 1 is_stmt 0 view .LVU682 + 2307 0000 30B5 push {r4, r5, lr} + 2308 .LCFI63: + 2309 .cfi_def_cfa_offset 12 + 2310 .cfi_offset 4, -12 + 2311 .cfi_offset 5, -8 + 2312 .cfi_offset 14, -4 + 2313 0002 87B0 sub sp, sp, #28 + 2314 .LCFI64: + 2315 .cfi_def_cfa_offset 40 + 2316 0004 0446 mov r4, r0 +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 2317 .loc 1 1151 3 is_stmt 1 view .LVU683 +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2318 .loc 1 1152 3 view .LVU684 +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SEND_EXT_CSD; + 2319 .loc 1 1155 3 view .LVU685 +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SEND_EXT_CSD; + 2320 .loc 1 1155 34 is_stmt 0 view .LVU686 + 2321 0006 0191 str r1, [sp, #4] +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2322 .loc 1 1156 3 is_stmt 1 view .LVU687 +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2323 .loc 1 1156 34 is_stmt 0 view .LVU688 + 2324 0008 0825 movs r5, #8 + 2325 000a 0295 str r5, [sp, #8] +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2326 .loc 1 1157 3 is_stmt 1 view .LVU689 +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2327 .loc 1 1157 34 is_stmt 0 view .LVU690 + 2328 000c 4023 movs r3, #64 + 2329 000e 0393 str r3, [sp, #12] +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2330 .loc 1 1158 3 is_stmt 1 view .LVU691 +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2331 .loc 1 1158 34 is_stmt 0 view .LVU692 + 2332 0010 0023 movs r3, #0 + 2333 0012 0493 str r3, [sp, #16] +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2334 .loc 1 1159 3 is_stmt 1 view .LVU693 +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + ARM GAS /tmp/ccODg7xx.s page 80 + + + 2335 .loc 1 1159 34 is_stmt 0 view .LVU694 + 2336 0014 4FF48063 mov r3, #1024 + 2337 0018 0593 str r3, [sp, #20] +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2338 .loc 1 1160 3 is_stmt 1 view .LVU695 +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2339 .loc 1 1160 9 is_stmt 0 view .LVU696 + 2340 001a 01A9 add r1, sp, #4 + 2341 .LVL138: +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2342 .loc 1 1160 9 view .LVU697 + 2343 001c FFF7FEFF bl SDMMC_SendCommand + 2344 .LVL139: +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2345 .loc 1 1163 3 is_stmt 1 view .LVU698 +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2346 .loc 1 1163 16 is_stmt 0 view .LVU699 + 2347 0020 41F28832 movw r2, #5000 + 2348 0024 2946 mov r1, r5 + 2349 0026 2046 mov r0, r4 + 2350 0028 FFF7FEFF bl SDMMC_GetCmdResp1 + 2351 .LVL140: +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2352 .loc 1 1165 3 is_stmt 1 view .LVU700 +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2353 .loc 1 1166 1 is_stmt 0 view .LVU701 + 2354 002c 07B0 add sp, sp, #28 + 2355 .LCFI65: + 2356 .cfi_def_cfa_offset 12 + 2357 @ sp needed + 2358 002e 30BD pop {r4, r5, pc} +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2359 .loc 1 1166 1 view .LVU702 + 2360 .cfi_endproc + 2361 .LFE180: + 2363 .section .text.SDMMC_GetCmdResp2,"ax",%progbits + 2364 .align 1 + 2365 .global SDMMC_GetCmdResp2 + 2366 .syntax unified + 2367 .thumb + 2368 .thumb_func + 2369 .fpu fpv5-d16 + 2371 SDMMC_GetCmdResp2: + 2372 .LVL141: + 2373 .LFB182: +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; + 2374 .loc 1 1327 1 is_stmt 1 view -0 + 2375 .cfi_startproc + 2376 @ args = 0, pretend = 0, frame = 0 + 2377 @ frame_needed = 0, uses_anonymous_args = 0 + 2378 @ link register save eliminated. +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; + 2379 .loc 1 1327 1 is_stmt 0 view .LVU704 + 2380 0000 0146 mov r1, r0 +1328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* 8 is the number of required instructions cycles for the below loop statement. + 2381 .loc 1 1328 3 is_stmt 1 view .LVU705 +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + ARM GAS /tmp/ccODg7xx.s page 81 + + + 2382 .loc 1 1331 3 view .LVU706 +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2383 .loc 1 1331 61 is_stmt 0 view .LVU707 + 2384 0002 144B ldr r3, .L107 + 2385 0004 1B68 ldr r3, [r3] + 2386 0006 144A ldr r2, .L107+4 + 2387 0008 A2FB0323 umull r2, r3, r2, r3 + 2388 000c 5B0A lsrs r3, r3, #9 +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2389 .loc 1 1331 12 view .LVU708 + 2390 000e 41F28832 movw r2, #5000 + 2391 0012 02FB03F3 mul r3, r2, r3 + 2392 .LVL142: + 2393 .L101: +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2394 .loc 1 1333 3 is_stmt 1 view .LVU709 +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2395 .loc 1 1335 5 view .LVU710 + 2396 0016 1A46 mov r2, r3 +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2397 .loc 1 1335 14 is_stmt 0 view .LVU711 + 2398 0018 013B subs r3, r3, #1 + 2399 .LVL143: +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2400 .loc 1 1335 8 view .LVU712 + 2401 001a BAB1 cbz r2, .L104 +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + 2402 .loc 1 1339 5 is_stmt 1 view .LVU713 +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + 2403 .loc 1 1339 13 is_stmt 0 view .LVU714 + 2404 001c 4A6B ldr r2, [r1, #52] + 2405 .LVL144: +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + 2406 .loc 1 1340 9 is_stmt 1 view .LVU715 +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2407 .loc 1 1341 10 is_stmt 0 view .LVU716 + 2408 001e 12F0450F tst r2, #69 + 2409 0022 F8D0 beq .L101 +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + 2410 .loc 1 1340 95 discriminator 1 view .LVU717 + 2411 0024 12F4006F tst r2, #2048 + 2412 0028 F5D1 bne .L101 +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2413 .loc 1 1343 3 is_stmt 1 view .LVU718 +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2414 .loc 1 1343 7 is_stmt 0 view .LVU719 + 2415 002a 4B6B ldr r3, [r1, #52] + 2416 .LVL145: +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2417 .loc 1 1343 6 view .LVU720 + 2418 002c 13F0040F tst r3, #4 + 2419 0030 06D1 bne .L105 +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2420 .loc 1 1349 8 is_stmt 1 view .LVU721 +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2421 .loc 1 1349 12 is_stmt 0 view .LVU722 + 2422 0032 486B ldr r0, [r1, #52] + ARM GAS /tmp/ccODg7xx.s page 82 + + + 2423 .LVL146: +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2424 .loc 1 1349 11 view .LVU723 + 2425 0034 10F00100 ands r0, r0, #1 + 2426 0038 05D1 bne .L106 +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2427 .loc 1 1359 5 is_stmt 1 view .LVU724 + 2428 003a C523 movs r3, #197 + 2429 003c 8B63 str r3, [r1, #56] +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2430 .loc 1 1362 3 view .LVU725 +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2431 .loc 1 1362 10 is_stmt 0 view .LVU726 + 2432 003e 7047 bx lr + 2433 .LVL147: + 2434 .L105: +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2435 .loc 1 1345 5 is_stmt 1 view .LVU727 + 2436 0040 0420 movs r0, #4 + 2437 .LVL148: +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2438 .loc 1 1345 5 is_stmt 0 view .LVU728 + 2439 0042 8863 str r0, [r1, #56] +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2440 .loc 1 1347 5 is_stmt 1 view .LVU729 +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2441 .loc 1 1347 12 is_stmt 0 view .LVU730 + 2442 0044 7047 bx lr + 2443 .L106: +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2444 .loc 1 1351 5 is_stmt 1 view .LVU731 + 2445 0046 0120 movs r0, #1 + 2446 0048 8863 str r0, [r1, #56] +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2447 .loc 1 1353 5 view .LVU732 +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2448 .loc 1 1353 12 is_stmt 0 view .LVU733 + 2449 004a 7047 bx lr + 2450 .LVL149: + 2451 .L104: +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2452 .loc 1 1337 14 view .LVU734 + 2453 004c 4FF00040 mov r0, #-2147483648 + 2454 .LVL150: +1363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2455 .loc 1 1363 1 view .LVU735 + 2456 0050 7047 bx lr + 2457 .L108: + 2458 0052 00BF .align 2 + 2459 .L107: + 2460 0054 00000000 .word SystemCoreClock + 2461 0058 D34D6210 .word 274877907 + 2462 .cfi_endproc + 2463 .LFE182: + 2465 .section .text.SDMMC_CmdSendCID,"ax",%progbits + 2466 .align 1 + 2467 .global SDMMC_CmdSendCID + ARM GAS /tmp/ccODg7xx.s page 83 + + + 2468 .syntax unified + 2469 .thumb + 2470 .thumb_func + 2471 .fpu fpv5-d16 + 2473 SDMMC_CmdSendCID: + 2474 .LVL151: + 2475 .LFB172: + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2476 .loc 1 952 1 is_stmt 1 view -0 + 2477 .cfi_startproc + 2478 @ args = 0, pretend = 0, frame = 24 + 2479 @ frame_needed = 0, uses_anonymous_args = 0 + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2480 .loc 1 952 1 is_stmt 0 view .LVU737 + 2481 0000 10B5 push {r4, lr} + 2482 .LCFI66: + 2483 .cfi_def_cfa_offset 8 + 2484 .cfi_offset 4, -8 + 2485 .cfi_offset 14, -4 + 2486 0002 86B0 sub sp, sp, #24 + 2487 .LCFI67: + 2488 .cfi_def_cfa_offset 32 + 2489 0004 0446 mov r4, r0 + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 2490 .loc 1 953 3 is_stmt 1 view .LVU738 + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2491 .loc 1 954 3 view .LVU739 + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ALL_SEND_CID; + 2492 .loc 1 957 3 view .LVU740 + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ALL_SEND_CID; + 2493 .loc 1 957 34 is_stmt 0 view .LVU741 + 2494 0006 0023 movs r3, #0 + 2495 0008 0193 str r3, [sp, #4] + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_LONG; + 2496 .loc 1 958 3 is_stmt 1 view .LVU742 + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_LONG; + 2497 .loc 1 958 34 is_stmt 0 view .LVU743 + 2498 000a 0222 movs r2, #2 + 2499 000c 0292 str r2, [sp, #8] + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2500 .loc 1 959 3 is_stmt 1 view .LVU744 + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2501 .loc 1 959 34 is_stmt 0 view .LVU745 + 2502 000e C022 movs r2, #192 + 2503 0010 0392 str r2, [sp, #12] + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2504 .loc 1 960 3 is_stmt 1 view .LVU746 + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2505 .loc 1 960 34 is_stmt 0 view .LVU747 + 2506 0012 0493 str r3, [sp, #16] + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2507 .loc 1 961 3 is_stmt 1 view .LVU748 + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2508 .loc 1 961 34 is_stmt 0 view .LVU749 + 2509 0014 4FF48063 mov r3, #1024 + 2510 0018 0593 str r3, [sp, #20] + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + ARM GAS /tmp/ccODg7xx.s page 84 + + + 2511 .loc 1 962 3 is_stmt 1 view .LVU750 + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2512 .loc 1 962 9 is_stmt 0 view .LVU751 + 2513 001a 01A9 add r1, sp, #4 + 2514 001c FFF7FEFF bl SDMMC_SendCommand + 2515 .LVL152: + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2516 .loc 1 965 3 is_stmt 1 view .LVU752 + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2517 .loc 1 965 16 is_stmt 0 view .LVU753 + 2518 0020 2046 mov r0, r4 + 2519 0022 FFF7FEFF bl SDMMC_GetCmdResp2 + 2520 .LVL153: + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2521 .loc 1 967 3 is_stmt 1 view .LVU754 + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2522 .loc 1 968 1 is_stmt 0 view .LVU755 + 2523 0026 06B0 add sp, sp, #24 + 2524 .LCFI68: + 2525 .cfi_def_cfa_offset 8 + 2526 @ sp needed + 2527 0028 10BD pop {r4, pc} + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2528 .loc 1 968 1 view .LVU756 + 2529 .cfi_endproc + 2530 .LFE172: + 2532 .section .text.SDMMC_CmdSendCSD,"ax",%progbits + 2533 .align 1 + 2534 .global SDMMC_CmdSendCSD + 2535 .syntax unified + 2536 .thumb + 2537 .thumb_func + 2538 .fpu fpv5-d16 + 2540 SDMMC_CmdSendCSD: + 2541 .LVL154: + 2542 .LFB173: + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2543 .loc 1 977 1 is_stmt 1 view -0 + 2544 .cfi_startproc + 2545 @ args = 0, pretend = 0, frame = 24 + 2546 @ frame_needed = 0, uses_anonymous_args = 0 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2547 .loc 1 977 1 is_stmt 0 view .LVU758 + 2548 0000 10B5 push {r4, lr} + 2549 .LCFI69: + 2550 .cfi_def_cfa_offset 8 + 2551 .cfi_offset 4, -8 + 2552 .cfi_offset 14, -4 + 2553 0002 86B0 sub sp, sp, #24 + 2554 .LCFI70: + 2555 .cfi_def_cfa_offset 32 + 2556 0004 0446 mov r4, r0 + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 2557 .loc 1 978 3 is_stmt 1 view .LVU759 + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2558 .loc 1 979 3 view .LVU760 + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_CSD; + ARM GAS /tmp/ccODg7xx.s page 85 + + + 2559 .loc 1 982 3 view .LVU761 + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_CSD; + 2560 .loc 1 982 34 is_stmt 0 view .LVU762 + 2561 0006 0191 str r1, [sp, #4] + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_LONG; + 2562 .loc 1 983 3 is_stmt 1 view .LVU763 + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_LONG; + 2563 .loc 1 983 34 is_stmt 0 view .LVU764 + 2564 0008 0923 movs r3, #9 + 2565 000a 0293 str r3, [sp, #8] + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2566 .loc 1 984 3 is_stmt 1 view .LVU765 + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2567 .loc 1 984 34 is_stmt 0 view .LVU766 + 2568 000c C023 movs r3, #192 + 2569 000e 0393 str r3, [sp, #12] + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2570 .loc 1 985 3 is_stmt 1 view .LVU767 + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2571 .loc 1 985 34 is_stmt 0 view .LVU768 + 2572 0010 0023 movs r3, #0 + 2573 0012 0493 str r3, [sp, #16] + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2574 .loc 1 986 3 is_stmt 1 view .LVU769 + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2575 .loc 1 986 34 is_stmt 0 view .LVU770 + 2576 0014 4FF48063 mov r3, #1024 + 2577 0018 0593 str r3, [sp, #20] + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2578 .loc 1 987 3 is_stmt 1 view .LVU771 + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2579 .loc 1 987 9 is_stmt 0 view .LVU772 + 2580 001a 01A9 add r1, sp, #4 + 2581 .LVL155: + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2582 .loc 1 987 9 view .LVU773 + 2583 001c FFF7FEFF bl SDMMC_SendCommand + 2584 .LVL156: + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2585 .loc 1 990 3 is_stmt 1 view .LVU774 + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2586 .loc 1 990 16 is_stmt 0 view .LVU775 + 2587 0020 2046 mov r0, r4 + 2588 0022 FFF7FEFF bl SDMMC_GetCmdResp2 + 2589 .LVL157: + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2590 .loc 1 992 3 is_stmt 1 view .LVU776 + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2591 .loc 1 993 1 is_stmt 0 view .LVU777 + 2592 0026 06B0 add sp, sp, #24 + 2593 .LCFI71: + 2594 .cfi_def_cfa_offset 8 + 2595 @ sp needed + 2596 0028 10BD pop {r4, pc} + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2597 .loc 1 993 1 view .LVU778 + 2598 .cfi_endproc + ARM GAS /tmp/ccODg7xx.s page 86 + + + 2599 .LFE173: + 2601 .section .text.SDMMC_GetCmdResp3,"ax",%progbits + 2602 .align 1 + 2603 .global SDMMC_GetCmdResp3 + 2604 .syntax unified + 2605 .thumb + 2606 .thumb_func + 2607 .fpu fpv5-d16 + 2609 SDMMC_GetCmdResp3: + 2610 .LVL158: + 2611 .LFB183: +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; + 2612 .loc 1 1371 1 is_stmt 1 view -0 + 2613 .cfi_startproc + 2614 @ args = 0, pretend = 0, frame = 0 + 2615 @ frame_needed = 0, uses_anonymous_args = 0 + 2616 @ link register save eliminated. +1371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; + 2617 .loc 1 1371 1 is_stmt 0 view .LVU780 + 2618 0000 0146 mov r1, r0 +1372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* 8 is the number of required instructions cycles for the below loop statement. + 2619 .loc 1 1372 3 is_stmt 1 view .LVU781 +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2620 .loc 1 1375 3 view .LVU782 +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2621 .loc 1 1375 61 is_stmt 0 view .LVU783 + 2622 0002 104B ldr r3, .L119 + 2623 0004 1B68 ldr r3, [r3] + 2624 0006 104A ldr r2, .L119+4 + 2625 0008 A2FB0323 umull r2, r3, r2, r3 + 2626 000c 5B0A lsrs r3, r3, #9 +1375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2627 .loc 1 1375 12 view .LVU784 + 2628 000e 41F28832 movw r2, #5000 + 2629 0012 02FB03F3 mul r3, r2, r3 + 2630 .LVL159: + 2631 .L115: +1377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2632 .loc 1 1377 3 is_stmt 1 view .LVU785 +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2633 .loc 1 1379 5 view .LVU786 + 2634 0016 1A46 mov r2, r3 +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2635 .loc 1 1379 14 is_stmt 0 view .LVU787 + 2636 0018 013B subs r3, r3, #1 + 2637 .LVL160: +1379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2638 .loc 1 1379 8 view .LVU788 + 2639 001a 82B1 cbz r2, .L117 +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + 2640 .loc 1 1383 5 is_stmt 1 view .LVU789 +1383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + 2641 .loc 1 1383 13 is_stmt 0 view .LVU790 + 2642 001c 4A6B ldr r2, [r1, #52] + 2643 .LVL161: +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + 2644 .loc 1 1384 9 is_stmt 1 view .LVU791 + ARM GAS /tmp/ccODg7xx.s page 87 + + +1385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2645 .loc 1 1385 10 is_stmt 0 view .LVU792 + 2646 001e 12F0450F tst r2, #69 + 2647 0022 F8D0 beq .L115 +1384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + 2648 .loc 1 1384 95 discriminator 1 view .LVU793 + 2649 0024 12F4006F tst r2, #2048 + 2650 0028 F5D1 bne .L115 +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2651 .loc 1 1387 3 is_stmt 1 view .LVU794 +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2652 .loc 1 1387 6 is_stmt 0 view .LVU795 + 2653 002a 486B ldr r0, [r1, #52] + 2654 .LVL162: +1387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2655 .loc 1 1387 5 view .LVU796 + 2656 002c 10F00400 ands r0, r0, #4 + 2657 0030 02D1 bne .L118 +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2658 .loc 1 1396 5 is_stmt 1 view .LVU797 + 2659 0032 C523 movs r3, #197 + 2660 .LVL163: +1396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2661 .loc 1 1396 5 is_stmt 0 view .LVU798 + 2662 0034 8B63 str r3, [r1, #56] +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2663 .loc 1 1399 3 is_stmt 1 view .LVU799 +1399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2664 .loc 1 1399 10 is_stmt 0 view .LVU800 + 2665 0036 7047 bx lr + 2666 .LVL164: + 2667 .L118: +1389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2668 .loc 1 1389 5 is_stmt 1 view .LVU801 + 2669 0038 0420 movs r0, #4 + 2670 003a 8863 str r0, [r1, #56] +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2671 .loc 1 1391 5 view .LVU802 +1391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2672 .loc 1 1391 12 is_stmt 0 view .LVU803 + 2673 003c 7047 bx lr + 2674 .LVL165: + 2675 .L117: +1381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2676 .loc 1 1381 14 view .LVU804 + 2677 003e 4FF00040 mov r0, #-2147483648 + 2678 .LVL166: +1400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2679 .loc 1 1400 1 view .LVU805 + 2680 0042 7047 bx lr + 2681 .L120: + 2682 .align 2 + 2683 .L119: + 2684 0044 00000000 .word SystemCoreClock + 2685 0048 D34D6210 .word 274877907 + 2686 .cfi_endproc + 2687 .LFE183: + ARM GAS /tmp/ccODg7xx.s page 88 + + + 2689 .section .text.SDMMC_CmdAppOperCommand,"ax",%progbits + 2690 .align 1 + 2691 .global SDMMC_CmdAppOperCommand + 2692 .syntax unified + 2693 .thumb + 2694 .thumb_func + 2695 .fpu fpv5-d16 + 2697 SDMMC_CmdAppOperCommand: + 2698 .LVL167: + 2699 .LFB169: + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2700 .loc 1 881 1 is_stmt 1 view -0 + 2701 .cfi_startproc + 2702 @ args = 0, pretend = 0, frame = 24 + 2703 @ frame_needed = 0, uses_anonymous_args = 0 + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2704 .loc 1 881 1 is_stmt 0 view .LVU807 + 2705 0000 10B5 push {r4, lr} + 2706 .LCFI72: + 2707 .cfi_def_cfa_offset 8 + 2708 .cfi_offset 4, -8 + 2709 .cfi_offset 14, -4 + 2710 0002 86B0 sub sp, sp, #24 + 2711 .LCFI73: + 2712 .cfi_def_cfa_offset 32 + 2713 0004 0446 mov r4, r0 + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 2714 .loc 1 882 3 is_stmt 1 view .LVU808 + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2715 .loc 1 883 3 view .LVU809 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_OP_COND; + 2716 .loc 1 885 3 view .LVU810 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_OP_COND; + 2717 .loc 1 885 60 is_stmt 0 view .LVU811 + 2718 0006 0A4B ldr r3, .L123 + 2719 0008 0B43 orrs r3, r3, r1 + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_OP_COND; + 2720 .loc 1 885 34 view .LVU812 + 2721 000a 0193 str r3, [sp, #4] + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2722 .loc 1 886 3 is_stmt 1 view .LVU813 + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2723 .loc 1 886 34 is_stmt 0 view .LVU814 + 2724 000c 2923 movs r3, #41 + 2725 000e 0293 str r3, [sp, #8] + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2726 .loc 1 887 3 is_stmt 1 view .LVU815 + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2727 .loc 1 887 34 is_stmt 0 view .LVU816 + 2728 0010 4023 movs r3, #64 + 2729 0012 0393 str r3, [sp, #12] + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2730 .loc 1 888 3 is_stmt 1 view .LVU817 + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2731 .loc 1 888 34 is_stmt 0 view .LVU818 + 2732 0014 0023 movs r3, #0 + 2733 0016 0493 str r3, [sp, #16] + ARM GAS /tmp/ccODg7xx.s page 89 + + + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2734 .loc 1 889 3 is_stmt 1 view .LVU819 + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2735 .loc 1 889 34 is_stmt 0 view .LVU820 + 2736 0018 4FF48063 mov r3, #1024 + 2737 001c 0593 str r3, [sp, #20] + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2738 .loc 1 890 3 is_stmt 1 view .LVU821 + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2739 .loc 1 890 9 is_stmt 0 view .LVU822 + 2740 001e 01A9 add r1, sp, #4 + 2741 .LVL168: + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2742 .loc 1 890 9 view .LVU823 + 2743 0020 FFF7FEFF bl SDMMC_SendCommand + 2744 .LVL169: + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2745 .loc 1 893 3 is_stmt 1 view .LVU824 + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2746 .loc 1 893 16 is_stmt 0 view .LVU825 + 2747 0024 2046 mov r0, r4 + 2748 0026 FFF7FEFF bl SDMMC_GetCmdResp3 + 2749 .LVL170: + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2750 .loc 1 895 3 is_stmt 1 view .LVU826 + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2751 .loc 1 896 1 is_stmt 0 view .LVU827 + 2752 002a 06B0 add sp, sp, #24 + 2753 .LCFI74: + 2754 .cfi_def_cfa_offset 8 + 2755 @ sp needed + 2756 002c 10BD pop {r4, pc} + 2757 .LVL171: + 2758 .L124: + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2759 .loc 1 896 1 view .LVU828 + 2760 002e 00BF .align 2 + 2761 .L123: + 2762 0030 00001080 .word -2146435072 + 2763 .cfi_endproc + 2764 .LFE169: + 2766 .section .text.SDMMC_CmdOpCondition,"ax",%progbits + 2767 .align 1 + 2768 .global SDMMC_CmdOpCondition + 2769 .syntax unified + 2770 .thumb + 2771 .thumb_func + 2772 .fpu fpv5-d16 + 2774 SDMMC_CmdOpCondition: + 2775 .LVL172: + 2776 .LFB178: +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 2777 .loc 1 1100 1 is_stmt 1 view -0 + 2778 .cfi_startproc + 2779 @ args = 0, pretend = 0, frame = 24 + 2780 @ frame_needed = 0, uses_anonymous_args = 0 +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + ARM GAS /tmp/ccODg7xx.s page 90 + + + 2781 .loc 1 1100 1 is_stmt 0 view .LVU830 + 2782 0000 10B5 push {r4, lr} + 2783 .LCFI75: + 2784 .cfi_def_cfa_offset 8 + 2785 .cfi_offset 4, -8 + 2786 .cfi_offset 14, -4 + 2787 0002 86B0 sub sp, sp, #24 + 2788 .LCFI76: + 2789 .cfi_def_cfa_offset 32 + 2790 0004 0446 mov r4, r0 +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 2791 .loc 1 1101 3 is_stmt 1 view .LVU831 +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2792 .loc 1 1102 3 view .LVU832 +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_OP_COND; + 2793 .loc 1 1104 3 view .LVU833 +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_OP_COND; + 2794 .loc 1 1104 34 is_stmt 0 view .LVU834 + 2795 0006 0191 str r1, [sp, #4] +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2796 .loc 1 1105 3 is_stmt 1 view .LVU835 +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 2797 .loc 1 1105 34 is_stmt 0 view .LVU836 + 2798 0008 0123 movs r3, #1 + 2799 000a 0293 str r3, [sp, #8] +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2800 .loc 1 1106 3 is_stmt 1 view .LVU837 +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 2801 .loc 1 1106 34 is_stmt 0 view .LVU838 + 2802 000c 4023 movs r3, #64 + 2803 000e 0393 str r3, [sp, #12] +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2804 .loc 1 1107 3 is_stmt 1 view .LVU839 +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 2805 .loc 1 1107 34 is_stmt 0 view .LVU840 + 2806 0010 0023 movs r3, #0 + 2807 0012 0493 str r3, [sp, #16] +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2808 .loc 1 1108 3 is_stmt 1 view .LVU841 +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 2809 .loc 1 1108 34 is_stmt 0 view .LVU842 + 2810 0014 4FF48063 mov r3, #1024 + 2811 0018 0593 str r3, [sp, #20] +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2812 .loc 1 1109 3 is_stmt 1 view .LVU843 +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2813 .loc 1 1109 9 is_stmt 0 view .LVU844 + 2814 001a 01A9 add r1, sp, #4 + 2815 .LVL173: +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2816 .loc 1 1109 9 view .LVU845 + 2817 001c FFF7FEFF bl SDMMC_SendCommand + 2818 .LVL174: +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2819 .loc 1 1112 3 is_stmt 1 view .LVU846 +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2820 .loc 1 1112 16 is_stmt 0 view .LVU847 + ARM GAS /tmp/ccODg7xx.s page 91 + + + 2821 0020 2046 mov r0, r4 + 2822 0022 FFF7FEFF bl SDMMC_GetCmdResp3 + 2823 .LVL175: +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2824 .loc 1 1114 3 is_stmt 1 view .LVU848 +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2825 .loc 1 1115 1 is_stmt 0 view .LVU849 + 2826 0026 06B0 add sp, sp, #24 + 2827 .LCFI77: + 2828 .cfi_def_cfa_offset 8 + 2829 @ sp needed + 2830 0028 10BD pop {r4, pc} +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2831 .loc 1 1115 1 view .LVU850 + 2832 .cfi_endproc + 2833 .LFE178: + 2835 .section .text.SDMMC_GetCmdResp6,"ax",%progbits + 2836 .align 1 + 2837 .global SDMMC_GetCmdResp6 + 2838 .syntax unified + 2839 .thumb + 2840 .thumb_func + 2841 .fpu fpv5-d16 + 2843 SDMMC_GetCmdResp6: + 2844 .LVL176: + 2845 .LFB184: +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t response_r1; + 2846 .loc 1 1411 1 is_stmt 1 view -0 + 2847 .cfi_startproc + 2848 @ args = 0, pretend = 0, frame = 0 + 2849 @ frame_needed = 0, uses_anonymous_args = 0 +1411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t response_r1; + 2850 .loc 1 1411 1 is_stmt 0 view .LVU852 + 2851 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 2852 .LCFI78: + 2853 .cfi_def_cfa_offset 24 + 2854 .cfi_offset 3, -24 + 2855 .cfi_offset 4, -20 + 2856 .cfi_offset 5, -16 + 2857 .cfi_offset 6, -12 + 2858 .cfi_offset 7, -8 + 2859 .cfi_offset 14, -4 + 2860 0002 0546 mov r5, r0 + 2861 0004 0E46 mov r6, r1 + 2862 0006 1746 mov r7, r2 +1412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; + 2863 .loc 1 1412 3 is_stmt 1 view .LVU853 +1413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2864 .loc 1 1413 3 view .LVU854 +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2865 .loc 1 1417 3 view .LVU855 +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2866 .loc 1 1417 61 is_stmt 0 view .LVU856 + 2867 0008 234B ldr r3, .L141 + 2868 000a 1B68 ldr r3, [r3] + 2869 000c 234A ldr r2, .L141+4 + 2870 .LVL177: + ARM GAS /tmp/ccODg7xx.s page 92 + + +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2871 .loc 1 1417 61 view .LVU857 + 2872 000e A2FB0323 umull r2, r3, r2, r3 + 2873 0012 5B0A lsrs r3, r3, #9 +1417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2874 .loc 1 1417 12 view .LVU858 + 2875 0014 41F28832 movw r2, #5000 + 2876 0018 02FB03F3 mul r3, r2, r3 + 2877 .LVL178: + 2878 .L129: +1419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2879 .loc 1 1419 3 is_stmt 1 view .LVU859 +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2880 .loc 1 1421 5 view .LVU860 + 2881 001c 1A46 mov r2, r3 +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2882 .loc 1 1421 14 is_stmt 0 view .LVU861 + 2883 001e 013B subs r3, r3, #1 + 2884 .LVL179: +1421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2885 .loc 1 1421 8 view .LVU862 + 2886 0020 8AB3 cbz r2, .L133 +1425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + 2887 .loc 1 1425 5 is_stmt 1 view .LVU863 +1425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + 2888 .loc 1 1425 13 is_stmt 0 view .LVU864 + 2889 0022 6C6B ldr r4, [r5, #52] + 2890 .LVL180: +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + 2891 .loc 1 1426 9 is_stmt 1 view .LVU865 +1427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2892 .loc 1 1427 10 is_stmt 0 view .LVU866 + 2893 0024 14F0450F tst r4, #69 + 2894 0028 F8D0 beq .L129 +1426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + 2895 .loc 1 1426 95 discriminator 1 view .LVU867 + 2896 002a 14F4006F tst r4, #2048 + 2897 002e F5D1 bne .L129 +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2898 .loc 1 1429 3 is_stmt 1 view .LVU868 +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2899 .loc 1 1429 6 is_stmt 0 view .LVU869 + 2900 0030 6B6B ldr r3, [r5, #52] + 2901 .LVL181: +1429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2902 .loc 1 1429 5 view .LVU870 + 2903 0032 13F0040F tst r3, #4 + 2904 0036 06D1 bne .L138 +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2905 .loc 1 1435 8 is_stmt 1 view .LVU871 +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2906 .loc 1 1435 11 is_stmt 0 view .LVU872 + 2907 0038 6B6B ldr r3, [r5, #52] +1435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2908 .loc 1 1435 10 view .LVU873 + 2909 003a 13F0010F tst r3, #1 + 2910 003e 05D0 beq .L131 + ARM GAS /tmp/ccODg7xx.s page 93 + + +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2911 .loc 1 1437 5 is_stmt 1 view .LVU874 + 2912 0040 0120 movs r0, #1 + 2913 .LVL182: +1437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2914 .loc 1 1437 5 is_stmt 0 view .LVU875 + 2915 0042 A863 str r0, [r5, #56] +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2916 .loc 1 1439 5 is_stmt 1 view .LVU876 +1439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2917 .loc 1 1439 12 is_stmt 0 view .LVU877 + 2918 0044 21E0 b .L127 + 2919 .LVL183: + 2920 .L138: +1431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2921 .loc 1 1431 5 is_stmt 1 view .LVU878 + 2922 0046 0420 movs r0, #4 + 2923 .LVL184: +1431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2924 .loc 1 1431 5 is_stmt 0 view .LVU879 + 2925 0048 A863 str r0, [r5, #56] +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2926 .loc 1 1433 5 is_stmt 1 view .LVU880 +1433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2927 .loc 1 1433 12 is_stmt 0 view .LVU881 + 2928 004a 1EE0 b .L127 + 2929 .LVL185: + 2930 .L131: +1444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2931 .loc 1 1444 3 is_stmt 1 view .LVU882 +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2932 .loc 1 1447 3 view .LVU883 +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2933 .loc 1 1447 6 is_stmt 0 view .LVU884 + 2934 004c 2846 mov r0, r5 + 2935 .LVL186: +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2936 .loc 1 1447 6 view .LVU885 + 2937 004e FFF7FEFF bl SDMMC_GetCommandResponse + 2938 .LVL187: +1447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2939 .loc 1 1447 5 view .LVU886 + 2940 0052 B042 cmp r0, r6 + 2941 0054 01D0 beq .L139 +1449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2942 .loc 1 1449 12 view .LVU887 + 2943 0056 0120 movs r0, #1 + 2944 0058 17E0 b .L127 + 2945 .L139: +1453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2946 .loc 1 1453 3 is_stmt 1 view .LVU888 + 2947 005a C523 movs r3, #197 + 2948 005c AB63 str r3, [r5, #56] +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2949 .loc 1 1456 3 view .LVU889 +1456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2950 .loc 1 1456 17 is_stmt 0 view .LVU890 + ARM GAS /tmp/ccODg7xx.s page 94 + + + 2951 005e 0021 movs r1, #0 + 2952 0060 2846 mov r0, r5 + 2953 0062 FFF7FEFF bl SDMMC_GetResponse + 2954 .LVL188: + 2955 0066 0346 mov r3, r0 + 2956 .LVL189: +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2957 .loc 1 1458 3 is_stmt 1 view .LVU891 +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2958 .loc 1 1458 5 is_stmt 0 view .LVU892 + 2959 0068 10F46040 ands r0, r0, #57344 + 2960 .LVL190: +1458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2961 .loc 1 1458 5 view .LVU893 + 2962 006c 08D0 beq .L140 +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2963 .loc 1 1464 8 is_stmt 1 view .LVU894 +1464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2964 .loc 1 1464 10 is_stmt 0 view .LVU895 + 2965 006e 13F4804F tst r3, #16384 + 2966 0072 0BD1 bne .L135 +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2967 .loc 1 1468 8 is_stmt 1 view .LVU896 +1468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 2968 .loc 1 1468 10 is_stmt 0 view .LVU897 + 2969 0074 13F4004F tst r3, #32768 + 2970 0078 0BD0 beq .L136 +1470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2971 .loc 1 1470 12 view .LVU898 + 2972 007a 4FF48050 mov r0, #4096 + 2973 007e 04E0 b .L127 + 2974 .L140: +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2975 .loc 1 1460 5 is_stmt 1 view .LVU899 +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2976 .loc 1 1460 13 is_stmt 0 view .LVU900 + 2977 0080 1B0C lsrs r3, r3, #16 + 2978 .LVL191: +1460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2979 .loc 1 1460 11 view .LVU901 + 2980 0082 3B80 strh r3, [r7] @ movhi +1462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2981 .loc 1 1462 5 is_stmt 1 view .LVU902 +1462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2982 .loc 1 1462 12 is_stmt 0 view .LVU903 + 2983 0084 01E0 b .L127 + 2984 .LVL192: + 2985 .L133: +1423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2986 .loc 1 1423 14 view .LVU904 + 2987 0086 4FF00040 mov r0, #-2147483648 + 2988 .LVL193: + 2989 .L127: +1476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 2990 .loc 1 1476 1 view .LVU905 + 2991 008a F8BD pop {r3, r4, r5, r6, r7, pc} + 2992 .LVL194: + ARM GAS /tmp/ccODg7xx.s page 95 + + + 2993 .L135: +1466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2994 .loc 1 1466 12 view .LVU906 + 2995 008c 4FF40050 mov r0, #8192 + 2996 0090 FBE7 b .L127 + 2997 .L136: +1474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 2998 .loc 1 1474 12 view .LVU907 + 2999 0092 4FF48030 mov r0, #65536 + 3000 0096 F8E7 b .L127 + 3001 .L142: + 3002 .align 2 + 3003 .L141: + 3004 0098 00000000 .word SystemCoreClock + 3005 009c D34D6210 .word 274877907 + 3006 .cfi_endproc + 3007 .LFE184: + 3009 .section .text.SDMMC_CmdSetRelAdd,"ax",%progbits + 3010 .align 1 + 3011 .global SDMMC_CmdSetRelAdd + 3012 .syntax unified + 3013 .thumb + 3014 .thumb_func + 3015 .fpu fpv5-d16 + 3017 SDMMC_CmdSetRelAdd: + 3018 .LVL195: + 3019 .LFB174: +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 3020 .loc 1 1002 1 is_stmt 1 view -0 + 3021 .cfi_startproc + 3022 @ args = 0, pretend = 0, frame = 24 + 3023 @ frame_needed = 0, uses_anonymous_args = 0 +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 3024 .loc 1 1002 1 is_stmt 0 view .LVU909 + 3025 0000 70B5 push {r4, r5, r6, lr} + 3026 .LCFI79: + 3027 .cfi_def_cfa_offset 16 + 3028 .cfi_offset 4, -16 + 3029 .cfi_offset 5, -12 + 3030 .cfi_offset 6, -8 + 3031 .cfi_offset 14, -4 + 3032 0002 86B0 sub sp, sp, #24 + 3033 .LCFI80: + 3034 .cfi_def_cfa_offset 40 + 3035 0004 0446 mov r4, r0 + 3036 0006 0D46 mov r5, r1 +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 3037 .loc 1 1003 3 is_stmt 1 view .LVU910 +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3038 .loc 1 1004 3 view .LVU911 +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_REL_ADDR; + 3039 .loc 1 1007 3 view .LVU912 +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_REL_ADDR; + 3040 .loc 1 1007 34 is_stmt 0 view .LVU913 + 3041 0008 0023 movs r3, #0 + 3042 000a 0193 str r3, [sp, #4] +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + ARM GAS /tmp/ccODg7xx.s page 96 + + + 3043 .loc 1 1008 3 is_stmt 1 view .LVU914 +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 3044 .loc 1 1008 34 is_stmt 0 view .LVU915 + 3045 000c 0326 movs r6, #3 + 3046 000e 0296 str r6, [sp, #8] +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 3047 .loc 1 1009 3 is_stmt 1 view .LVU916 +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 3048 .loc 1 1009 34 is_stmt 0 view .LVU917 + 3049 0010 4022 movs r2, #64 + 3050 0012 0392 str r2, [sp, #12] +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 3051 .loc 1 1010 3 is_stmt 1 view .LVU918 +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 3052 .loc 1 1010 34 is_stmt 0 view .LVU919 + 3053 0014 0493 str r3, [sp, #16] +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 3054 .loc 1 1011 3 is_stmt 1 view .LVU920 +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 3055 .loc 1 1011 34 is_stmt 0 view .LVU921 + 3056 0016 4FF48063 mov r3, #1024 + 3057 001a 0593 str r3, [sp, #20] +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3058 .loc 1 1012 3 is_stmt 1 view .LVU922 +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3059 .loc 1 1012 9 is_stmt 0 view .LVU923 + 3060 001c 01A9 add r1, sp, #4 + 3061 .LVL196: +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3062 .loc 1 1012 9 view .LVU924 + 3063 001e FFF7FEFF bl SDMMC_SendCommand + 3064 .LVL197: +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3065 .loc 1 1015 3 is_stmt 1 view .LVU925 +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3066 .loc 1 1015 16 is_stmt 0 view .LVU926 + 3067 0022 2A46 mov r2, r5 + 3068 0024 3146 mov r1, r6 + 3069 0026 2046 mov r0, r4 + 3070 0028 FFF7FEFF bl SDMMC_GetCmdResp6 + 3071 .LVL198: +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 3072 .loc 1 1017 3 is_stmt 1 view .LVU927 +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3073 .loc 1 1018 1 is_stmt 0 view .LVU928 + 3074 002c 06B0 add sp, sp, #24 + 3075 .LCFI81: + 3076 .cfi_def_cfa_offset 16 + 3077 @ sp needed + 3078 002e 70BD pop {r4, r5, r6, pc} +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3079 .loc 1 1018 1 view .LVU929 + 3080 .cfi_endproc + 3081 .LFE174: + 3083 .section .text.SDMMC_GetCmdResp7,"ax",%progbits + 3084 .align 1 + 3085 .global SDMMC_GetCmdResp7 + ARM GAS /tmp/ccODg7xx.s page 97 + + + 3086 .syntax unified + 3087 .thumb + 3088 .thumb_func + 3089 .fpu fpv5-d16 + 3091 SDMMC_GetCmdResp7: + 3092 .LVL199: + 3093 .LFB185: +1484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; + 3094 .loc 1 1484 1 is_stmt 1 view -0 + 3095 .cfi_startproc + 3096 @ args = 0, pretend = 0, frame = 0 + 3097 @ frame_needed = 0, uses_anonymous_args = 0 + 3098 @ link register save eliminated. +1484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t sta_reg; + 3099 .loc 1 1484 1 is_stmt 0 view .LVU931 + 3100 0000 0146 mov r1, r0 +1485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** /* 8 is the number of required instructions cycles for the below loop statement. + 3101 .loc 1 1485 3 is_stmt 1 view .LVU932 +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3102 .loc 1 1488 3 view .LVU933 +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3103 .loc 1 1488 61 is_stmt 0 view .LVU934 + 3104 0002 164B ldr r3, .L153 + 3105 0004 1B68 ldr r3, [r3] + 3106 0006 164A ldr r2, .L153+4 + 3107 0008 A2FB0323 umull r2, r3, r2, r3 + 3108 000c 5B0A lsrs r3, r3, #9 +1488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3109 .loc 1 1488 12 view .LVU935 + 3110 000e 41F28832 movw r2, #5000 + 3111 0012 02FB03F3 mul r3, r2, r3 + 3112 .LVL200: + 3113 .L147: +1490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3114 .loc 1 1490 3 is_stmt 1 view .LVU936 +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3115 .loc 1 1492 5 view .LVU937 + 3116 0016 1A46 mov r2, r3 +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3117 .loc 1 1492 14 is_stmt 0 view .LVU938 + 3118 0018 013B subs r3, r3, #1 + 3119 .LVL201: +1492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3120 .loc 1 1492 8 view .LVU939 + 3121 001a E2B1 cbz r2, .L150 +1496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + 3122 .loc 1 1496 5 is_stmt 1 view .LVU940 +1496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** }while(((sta_reg & (SDMMC_FLAG_CCRCFAIL | SDMMC_FLAG_CMDREND | SDMMC_FLAG_CTIMEOUT)) == 0U) || + 3123 .loc 1 1496 13 is_stmt 0 view .LVU941 + 3124 001c 4A6B ldr r2, [r1, #52] + 3125 .LVL202: +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + 3126 .loc 1 1497 9 is_stmt 1 view .LVU942 +1498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3127 .loc 1 1498 10 is_stmt 0 view .LVU943 + 3128 001e 12F0450F tst r2, #69 + 3129 0022 F8D0 beq .L147 + ARM GAS /tmp/ccODg7xx.s page 98 + + +1497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** ((sta_reg & SDMMC_FLAG_CMDACT) != 0U )); + 3130 .loc 1 1497 95 discriminator 1 view .LVU944 + 3131 0024 12F4006F tst r2, #2048 + 3132 0028 F5D1 bne .L147 +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3133 .loc 1 1500 3 is_stmt 1 view .LVU945 +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3134 .loc 1 1500 6 is_stmt 0 view .LVU946 + 3135 002a 4B6B ldr r3, [r1, #52] + 3136 .LVL203: +1500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3137 .loc 1 1500 5 view .LVU947 + 3138 002c 13F0040F tst r3, #4 + 3139 0030 0BD1 bne .L151 +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3140 .loc 1 1507 8 is_stmt 1 view .LVU948 +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3141 .loc 1 1507 11 is_stmt 0 view .LVU949 + 3142 0032 4B6B ldr r3, [r1, #52] +1507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3143 .loc 1 1507 10 view .LVU950 + 3144 0034 13F00103 ands r3, r3, #1 + 3145 0038 0AD1 bne .L152 +1517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3146 .loc 1 1517 3 is_stmt 1 view .LVU951 +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3147 .loc 1 1519 3 view .LVU952 +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3148 .loc 1 1519 6 is_stmt 0 view .LVU953 + 3149 003a 486B ldr r0, [r1, #52] + 3150 .LVL204: +1519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** { + 3151 .loc 1 1519 5 view .LVU954 + 3152 003c 10F04000 ands r0, r0, #64 + 3153 0040 0BD0 beq .L145 +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 3154 .loc 1 1522 5 is_stmt 1 view .LVU955 + 3155 0042 4022 movs r2, #64 + 3156 .LVL205: +1522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 3157 .loc 1 1522 5 is_stmt 0 view .LVU956 + 3158 0044 8A63 str r2, [r1, #56] +1525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3159 .loc 1 1525 10 view .LVU957 + 3160 0046 1846 mov r0, r3 + 3161 0048 7047 bx lr + 3162 .LVL206: + 3163 .L151: +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3164 .loc 1 1503 5 is_stmt 1 view .LVU958 + 3165 004a 0420 movs r0, #4 + 3166 .LVL207: +1503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3167 .loc 1 1503 5 is_stmt 0 view .LVU959 + 3168 004c 8863 str r0, [r1, #56] +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 3169 .loc 1 1505 5 is_stmt 1 view .LVU960 + ARM GAS /tmp/ccODg7xx.s page 99 + + +1505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 3170 .loc 1 1505 12 is_stmt 0 view .LVU961 + 3171 004e 7047 bx lr + 3172 .LVL208: + 3173 .L152: +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3174 .loc 1 1510 5 is_stmt 1 view .LVU962 + 3175 0050 0120 movs r0, #1 + 3176 .LVL209: +1510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3177 .loc 1 1510 5 is_stmt 0 view .LVU963 + 3178 0052 8863 str r0, [r1, #56] +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 3179 .loc 1 1512 5 is_stmt 1 view .LVU964 +1512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 3180 .loc 1 1512 12 is_stmt 0 view .LVU965 + 3181 0054 7047 bx lr + 3182 .LVL210: + 3183 .L150: +1494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 3184 .loc 1 1494 14 view .LVU966 + 3185 0056 4FF00040 mov r0, #-2147483648 + 3186 .LVL211: + 3187 .L145: +1527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3188 .loc 1 1527 1 view .LVU967 + 3189 005a 7047 bx lr + 3190 .L154: + 3191 .align 2 + 3192 .L153: + 3193 005c 00000000 .word SystemCoreClock + 3194 0060 D34D6210 .word 274877907 + 3195 .cfi_endproc + 3196 .LFE185: + 3198 .section .text.SDMMC_CmdOperCond,"ax",%progbits + 3199 .align 1 + 3200 .global SDMMC_CmdOperCond + 3201 .syntax unified + 3202 .thumb + 3203 .thumb_func + 3204 .fpu fpv5-d16 + 3206 SDMMC_CmdOperCond: + 3207 .LVL212: + 3208 .LFB167: + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 3209 .loc 1 822 1 is_stmt 1 view -0 + 3210 .cfi_startproc + 3211 @ args = 0, pretend = 0, frame = 24 + 3212 @ frame_needed = 0, uses_anonymous_args = 0 + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** SDMMC_CmdInitTypeDef sdmmc_cmdinit; + 3213 .loc 1 822 1 is_stmt 0 view .LVU969 + 3214 0000 10B5 push {r4, lr} + 3215 .LCFI82: + 3216 .cfi_def_cfa_offset 8 + 3217 .cfi_offset 4, -8 + 3218 .cfi_offset 14, -4 + 3219 0002 86B0 sub sp, sp, #24 + ARM GAS /tmp/ccODg7xx.s page 100 + + + 3220 .LCFI83: + 3221 .cfi_def_cfa_offset 32 + 3222 0004 0446 mov r4, r0 + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** uint32_t errorstate; + 3223 .loc 1 823 3 is_stmt 1 view .LVU970 + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3224 .loc 1 824 3 view .LVU971 + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SEND_EXT_CSD; + 3225 .loc 1 831 3 view .LVU972 + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SEND_EXT_CSD; + 3226 .loc 1 831 34 is_stmt 0 view .LVU973 + 3227 0006 4FF4D573 mov r3, #426 + 3228 000a 0193 str r3, [sp, #4] + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 3229 .loc 1 832 3 is_stmt 1 view .LVU974 + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.Response = SDMMC_RESPONSE_SHORT; + 3230 .loc 1 832 34 is_stmt 0 view .LVU975 + 3231 000c 0823 movs r3, #8 + 3232 000e 0293 str r3, [sp, #8] + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 3233 .loc 1 833 3 is_stmt 1 view .LVU976 + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.WaitForInterrupt = SDMMC_WAIT_NO; + 3234 .loc 1 833 34 is_stmt 0 view .LVU977 + 3235 0010 4023 movs r3, #64 + 3236 0012 0393 str r3, [sp, #12] + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 3237 .loc 1 834 3 is_stmt 1 view .LVU978 + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** sdmmc_cmdinit.CPSM = SDMMC_CPSM_ENABLE; + 3238 .loc 1 834 34 is_stmt 0 view .LVU979 + 3239 0014 0023 movs r3, #0 + 3240 0016 0493 str r3, [sp, #16] + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 3241 .loc 1 835 3 is_stmt 1 view .LVU980 + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** (void)SDMMC_SendCommand(SDMMCx, &sdmmc_cmdinit); + 3242 .loc 1 835 34 is_stmt 0 view .LVU981 + 3243 0018 4FF48063 mov r3, #1024 + 3244 001c 0593 str r3, [sp, #20] + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3245 .loc 1 836 3 is_stmt 1 view .LVU982 + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3246 .loc 1 836 9 is_stmt 0 view .LVU983 + 3247 001e 01A9 add r1, sp, #4 + 3248 0020 FFF7FEFF bl SDMMC_SendCommand + 3249 .LVL213: + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3250 .loc 1 839 3 is_stmt 1 view .LVU984 + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3251 .loc 1 839 16 is_stmt 0 view .LVU985 + 3252 0024 2046 mov r0, r4 + 3253 0026 FFF7FEFF bl SDMMC_GetCmdResp7 + 3254 .LVL214: + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** } + 3255 .loc 1 841 3 is_stmt 1 view .LVU986 + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3256 .loc 1 842 1 is_stmt 0 view .LVU987 + 3257 002a 06B0 add sp, sp, #24 + 3258 .LCFI84: + ARM GAS /tmp/ccODg7xx.s page 101 + + + 3259 .cfi_def_cfa_offset 8 + 3260 @ sp needed + 3261 002c 10BD pop {r4, pc} + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.c **** + 3262 .loc 1 842 1 view .LVU988 + 3263 .cfi_endproc + 3264 .LFE167: + 3266 .text + 3267 .Letext0: + 3268 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 3269 .file 3 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 3270 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h" + 3271 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h" + 3272 .file 6 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h" + ARM GAS /tmp/ccODg7xx.s page 102 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_ll_sdmmc.c + /tmp/ccODg7xx.s:17 .text.SDMMC_GetCmdError:0000000000000000 $t + /tmp/ccODg7xx.s:24 .text.SDMMC_GetCmdError:0000000000000000 SDMMC_GetCmdError + /tmp/ccODg7xx.s:80 .text.SDMMC_GetCmdError:0000000000000030 $d + /tmp/ccODg7xx.s:86 .text.SDMMC_Init:0000000000000000 $t + /tmp/ccODg7xx.s:93 .text.SDMMC_Init:0000000000000000 SDMMC_Init + /tmp/ccODg7xx.s:157 .text.SDMMC_Init:0000000000000030 $d + /tmp/ccODg7xx.s:162 .text.SDMMC_ReadFIFO:0000000000000000 $t + /tmp/ccODg7xx.s:169 .text.SDMMC_ReadFIFO:0000000000000000 SDMMC_ReadFIFO + /tmp/ccODg7xx.s:187 .text.SDMMC_WriteFIFO:0000000000000000 $t + /tmp/ccODg7xx.s:194 .text.SDMMC_WriteFIFO:0000000000000000 SDMMC_WriteFIFO + /tmp/ccODg7xx.s:217 .text.SDMMC_PowerState_ON:0000000000000000 $t + /tmp/ccODg7xx.s:224 .text.SDMMC_PowerState_ON:0000000000000000 SDMMC_PowerState_ON + /tmp/ccODg7xx.s:246 .text.SDMMC_PowerState_OFF:0000000000000000 $t + /tmp/ccODg7xx.s:253 .text.SDMMC_PowerState_OFF:0000000000000000 SDMMC_PowerState_OFF + /tmp/ccODg7xx.s:276 .text.SDMMC_GetPowerState:0000000000000000 $t + /tmp/ccODg7xx.s:283 .text.SDMMC_GetPowerState:0000000000000000 SDMMC_GetPowerState + /tmp/ccODg7xx.s:302 .text.SDMMC_SendCommand:0000000000000000 $t + /tmp/ccODg7xx.s:309 .text.SDMMC_SendCommand:0000000000000000 SDMMC_SendCommand + /tmp/ccODg7xx.s:363 .text.SDMMC_SendCommand:0000000000000020 $d + /tmp/ccODg7xx.s:368 .text.SDMMC_GetCommandResponse:0000000000000000 $t + /tmp/ccODg7xx.s:375 .text.SDMMC_GetCommandResponse:0000000000000000 SDMMC_GetCommandResponse + /tmp/ccODg7xx.s:394 .text.SDMMC_GetResponse:0000000000000000 $t + /tmp/ccODg7xx.s:401 .text.SDMMC_GetResponse:0000000000000000 SDMMC_GetResponse + /tmp/ccODg7xx.s:425 .text.SDMMC_ConfigData:0000000000000000 $t + /tmp/ccODg7xx.s:432 .text.SDMMC_ConfigData:0000000000000000 SDMMC_ConfigData + /tmp/ccODg7xx.s:490 .text.SDMMC_GetDataCounter:0000000000000000 $t + /tmp/ccODg7xx.s:497 .text.SDMMC_GetDataCounter:0000000000000000 SDMMC_GetDataCounter + /tmp/ccODg7xx.s:515 .text.SDMMC_GetFIFOCount:0000000000000000 $t + /tmp/ccODg7xx.s:522 .text.SDMMC_GetFIFOCount:0000000000000000 SDMMC_GetFIFOCount + /tmp/ccODg7xx.s:540 .text.SDMMC_SetSDMMCReadWaitMode:0000000000000000 $t + /tmp/ccODg7xx.s:547 .text.SDMMC_SetSDMMCReadWaitMode:0000000000000000 SDMMC_SetSDMMCReadWaitMode + /tmp/ccODg7xx.s:571 .text.SDMMC_CmdGoIdleState:0000000000000000 $t + /tmp/ccODg7xx.s:578 .text.SDMMC_CmdGoIdleState:0000000000000000 SDMMC_CmdGoIdleState + /tmp/ccODg7xx.s:636 .text.SDMMC_GetCmdResp1:0000000000000000 $t + /tmp/ccODg7xx.s:643 .text.SDMMC_GetCmdResp1:0000000000000000 SDMMC_GetCmdResp1 + /tmp/ccODg7xx.s:921 .text.SDMMC_GetCmdResp1:0000000000000148 $d + /tmp/ccODg7xx.s:928 .text.SDMMC_CmdBlockLength:0000000000000000 $t + /tmp/ccODg7xx.s:935 .text.SDMMC_CmdBlockLength:0000000000000000 SDMMC_CmdBlockLength + /tmp/ccODg7xx.s:1000 .text.SDMMC_CmdReadSingleBlock:0000000000000000 $t + /tmp/ccODg7xx.s:1007 .text.SDMMC_CmdReadSingleBlock:0000000000000000 SDMMC_CmdReadSingleBlock + /tmp/ccODg7xx.s:1072 .text.SDMMC_CmdReadMultiBlock:0000000000000000 $t + /tmp/ccODg7xx.s:1079 .text.SDMMC_CmdReadMultiBlock:0000000000000000 SDMMC_CmdReadMultiBlock + /tmp/ccODg7xx.s:1144 .text.SDMMC_CmdWriteSingleBlock:0000000000000000 $t + /tmp/ccODg7xx.s:1151 .text.SDMMC_CmdWriteSingleBlock:0000000000000000 SDMMC_CmdWriteSingleBlock + /tmp/ccODg7xx.s:1216 .text.SDMMC_CmdWriteMultiBlock:0000000000000000 $t + /tmp/ccODg7xx.s:1223 .text.SDMMC_CmdWriteMultiBlock:0000000000000000 SDMMC_CmdWriteMultiBlock + /tmp/ccODg7xx.s:1288 .text.SDMMC_CmdSDEraseStartAdd:0000000000000000 $t + /tmp/ccODg7xx.s:1295 .text.SDMMC_CmdSDEraseStartAdd:0000000000000000 SDMMC_CmdSDEraseStartAdd + /tmp/ccODg7xx.s:1360 .text.SDMMC_CmdSDEraseEndAdd:0000000000000000 $t + /tmp/ccODg7xx.s:1367 .text.SDMMC_CmdSDEraseEndAdd:0000000000000000 SDMMC_CmdSDEraseEndAdd + /tmp/ccODg7xx.s:1432 .text.SDMMC_CmdEraseStartAdd:0000000000000000 $t + /tmp/ccODg7xx.s:1439 .text.SDMMC_CmdEraseStartAdd:0000000000000000 SDMMC_CmdEraseStartAdd + /tmp/ccODg7xx.s:1504 .text.SDMMC_CmdEraseEndAdd:0000000000000000 $t + /tmp/ccODg7xx.s:1511 .text.SDMMC_CmdEraseEndAdd:0000000000000000 SDMMC_CmdEraseEndAdd + /tmp/ccODg7xx.s:1576 .text.SDMMC_CmdErase:0000000000000000 $t + ARM GAS /tmp/ccODg7xx.s page 103 + + + /tmp/ccODg7xx.s:1583 .text.SDMMC_CmdErase:0000000000000000 SDMMC_CmdErase + /tmp/ccODg7xx.s:1646 .text.SDMMC_CmdStopTransfer:0000000000000000 $t + /tmp/ccODg7xx.s:1653 .text.SDMMC_CmdStopTransfer:0000000000000000 SDMMC_CmdStopTransfer + /tmp/ccODg7xx.s:1716 .text.SDMMC_CmdStopTransfer:0000000000000030 $d + /tmp/ccODg7xx.s:1721 .text.SDMMC_CmdSelDesel:0000000000000000 $t + /tmp/ccODg7xx.s:1728 .text.SDMMC_CmdSelDesel:0000000000000000 SDMMC_CmdSelDesel + /tmp/ccODg7xx.s:1791 .text.SDMMC_CmdAppCommand:0000000000000000 $t + /tmp/ccODg7xx.s:1798 .text.SDMMC_CmdAppCommand:0000000000000000 SDMMC_CmdAppCommand + /tmp/ccODg7xx.s:1863 .text.SDMMC_CmdBusWidth:0000000000000000 $t + /tmp/ccODg7xx.s:1870 .text.SDMMC_CmdBusWidth:0000000000000000 SDMMC_CmdBusWidth + /tmp/ccODg7xx.s:1935 .text.SDMMC_CmdSendSCR:0000000000000000 $t + /tmp/ccODg7xx.s:1942 .text.SDMMC_CmdSendSCR:0000000000000000 SDMMC_CmdSendSCR + /tmp/ccODg7xx.s:2005 .text.SDMMC_CmdSetRelAddMmc:0000000000000000 $t + /tmp/ccODg7xx.s:2012 .text.SDMMC_CmdSetRelAddMmc:0000000000000000 SDMMC_CmdSetRelAddMmc + /tmp/ccODg7xx.s:2078 .text.SDMMC_CmdSendStatus:0000000000000000 $t + /tmp/ccODg7xx.s:2085 .text.SDMMC_CmdSendStatus:0000000000000000 SDMMC_CmdSendStatus + /tmp/ccODg7xx.s:2150 .text.SDMMC_CmdStatusRegister:0000000000000000 $t + /tmp/ccODg7xx.s:2157 .text.SDMMC_CmdStatusRegister:0000000000000000 SDMMC_CmdStatusRegister + /tmp/ccODg7xx.s:2220 .text.SDMMC_CmdSwitch:0000000000000000 $t + /tmp/ccODg7xx.s:2227 .text.SDMMC_CmdSwitch:0000000000000000 SDMMC_CmdSwitch + /tmp/ccODg7xx.s:2292 .text.SDMMC_CmdSendEXTCSD:0000000000000000 $t + /tmp/ccODg7xx.s:2299 .text.SDMMC_CmdSendEXTCSD:0000000000000000 SDMMC_CmdSendEXTCSD + /tmp/ccODg7xx.s:2364 .text.SDMMC_GetCmdResp2:0000000000000000 $t + /tmp/ccODg7xx.s:2371 .text.SDMMC_GetCmdResp2:0000000000000000 SDMMC_GetCmdResp2 + /tmp/ccODg7xx.s:2460 .text.SDMMC_GetCmdResp2:0000000000000054 $d + /tmp/ccODg7xx.s:2466 .text.SDMMC_CmdSendCID:0000000000000000 $t + /tmp/ccODg7xx.s:2473 .text.SDMMC_CmdSendCID:0000000000000000 SDMMC_CmdSendCID + /tmp/ccODg7xx.s:2533 .text.SDMMC_CmdSendCSD:0000000000000000 $t + /tmp/ccODg7xx.s:2540 .text.SDMMC_CmdSendCSD:0000000000000000 SDMMC_CmdSendCSD + /tmp/ccODg7xx.s:2602 .text.SDMMC_GetCmdResp3:0000000000000000 $t + /tmp/ccODg7xx.s:2609 .text.SDMMC_GetCmdResp3:0000000000000000 SDMMC_GetCmdResp3 + /tmp/ccODg7xx.s:2684 .text.SDMMC_GetCmdResp3:0000000000000044 $d + /tmp/ccODg7xx.s:2690 .text.SDMMC_CmdAppOperCommand:0000000000000000 $t + /tmp/ccODg7xx.s:2697 .text.SDMMC_CmdAppOperCommand:0000000000000000 SDMMC_CmdAppOperCommand + /tmp/ccODg7xx.s:2762 .text.SDMMC_CmdAppOperCommand:0000000000000030 $d + /tmp/ccODg7xx.s:2767 .text.SDMMC_CmdOpCondition:0000000000000000 $t + /tmp/ccODg7xx.s:2774 .text.SDMMC_CmdOpCondition:0000000000000000 SDMMC_CmdOpCondition + /tmp/ccODg7xx.s:2836 .text.SDMMC_GetCmdResp6:0000000000000000 $t + /tmp/ccODg7xx.s:2843 .text.SDMMC_GetCmdResp6:0000000000000000 SDMMC_GetCmdResp6 + /tmp/ccODg7xx.s:3004 .text.SDMMC_GetCmdResp6:0000000000000098 $d + /tmp/ccODg7xx.s:3010 .text.SDMMC_CmdSetRelAdd:0000000000000000 $t + /tmp/ccODg7xx.s:3017 .text.SDMMC_CmdSetRelAdd:0000000000000000 SDMMC_CmdSetRelAdd + /tmp/ccODg7xx.s:3084 .text.SDMMC_GetCmdResp7:0000000000000000 $t + /tmp/ccODg7xx.s:3091 .text.SDMMC_GetCmdResp7:0000000000000000 SDMMC_GetCmdResp7 + /tmp/ccODg7xx.s:3193 .text.SDMMC_GetCmdResp7:000000000000005c $d + /tmp/ccODg7xx.s:3199 .text.SDMMC_CmdOperCond:0000000000000000 $t + /tmp/ccODg7xx.s:3206 .text.SDMMC_CmdOperCond:0000000000000000 SDMMC_CmdOperCond + +UNDEFINED SYMBOLS +SystemCoreClock diff --git a/build/stm32f7xx_ll_sdmmc.o b/build/stm32f7xx_ll_sdmmc.o new file mode 100644 index 0000000..1a52482 Binary files /dev/null and b/build/stm32f7xx_ll_sdmmc.o differ diff --git a/build/stm32f7xx_ll_spi.d b/build/stm32f7xx_ll_spi.d new file mode 100644 index 0000000..dbe9ddb --- /dev/null +++ b/build/stm32f7xx_ll_spi.d @@ -0,0 +1,70 @@ +build/stm32f7xx_ll_spi.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: diff --git a/build/stm32f7xx_ll_spi.lst b/build/stm32f7xx_ll_spi.lst new file mode 100644 index 0000000..08175b7 --- /dev/null +++ b/build/stm32f7xx_ll_spi.lst @@ -0,0 +1,5257 @@ +ARM GAS /tmp/cc532wt1.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_ll_spi.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.LL_SPI_DeInit,"ax",%progbits + 17 .align 1 + 18 .global LL_SPI_DeInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 LL_SPI_DeInit: + 26 .LVL0: + 27 .LFB451: + 28 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @file stm32f7xx_ll_spi.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @brief SPI LL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #if defined(USE_FULL_LL_DRIVER) + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Includes ------------------------------------------------------------------*/ + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #include "stm32f7xx_ll_spi.h" + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #include "stm32f7xx_ll_bus.h" + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #include "stm32f7xx_ll_rcc.h" + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #ifdef USE_FULL_ASSERT + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #include "stm32_assert.h" + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #else + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define assert_param(expr) ((void)0U) + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #endif /* USE_FULL_ASSERT */ + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + ARM GAS /tmp/cc532wt1.s page 2 + + + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @addtogroup STM32F7xx_LL_Driver + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #if defined (SPI1) || defined (SPI2) || defined (SPI3) || defined (SPI4) || defined (SPI5) || defin + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @addtogroup SPI_LL + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Private types -------------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Private variables ---------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Private constants ---------------------------------------------------------*/ + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @defgroup SPI_LL_Private_Constants SPI Private Constants + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* SPI registers Masks */ + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define SPI_CR1_CLEAR_MASK (SPI_CR1_CPHA | SPI_CR1_CPOL | SPI_CR1_MSTR | \ + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_CR1_BR | SPI_CR1_LSBFIRST | SPI_CR1_SSI | \ + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_CR1_SSM | SPI_CR1_RXONLY | SPI_CR1_CRCL | \ + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_CR1_CRCNEXT | SPI_CR1_CRCEN | SPI_CR1_BIDIOE | \ + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_CR1_BIDIMODE) + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @} + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Private macros ------------------------------------------------------------*/ + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @defgroup SPI_LL_Private_Macros SPI Private Macros + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_SPI_TRANSFER_DIRECTION(__VALUE__) (((__VALUE__) == LL_SPI_FULL_DUPLEX) \ + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_SIMPLEX_RX) \ + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_HALF_DUPLEX_RX) \ + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_HALF_DUPLEX_TX)) + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_SPI_MODE(__VALUE__) (((__VALUE__) == LL_SPI_MODE_MASTER) \ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_MODE_SLAVE)) + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_SPI_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_SPI_DATAWIDTH_4BIT) \ + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_5BIT) \ + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_6BIT) \ + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_7BIT) \ + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_8BIT) \ + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_9BIT) \ + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_10BIT) \ + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_11BIT) \ + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_12BIT) \ + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_13BIT) \ + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_14BIT) \ + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_15BIT) \ + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_DATAWIDTH_16BIT)) + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_SPI_POLARITY(__VALUE__) (((__VALUE__) == LL_SPI_POLARITY_LOW) \ + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_POLARITY_HIGH)) + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_SPI_PHASE(__VALUE__) (((__VALUE__) == LL_SPI_PHASE_1EDGE) \ + ARM GAS /tmp/cc532wt1.s page 3 + + + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_PHASE_2EDGE)) + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_SPI_NSS(__VALUE__) (((__VALUE__) == LL_SPI_NSS_SOFT) \ + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_NSS_HARD_INPUT) \ + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_NSS_HARD_OUTPUT)) + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_SPI_BAUDRATE(__VALUE__) (((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV2) \ + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV4) \ + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV8) \ + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV16) \ + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV32) \ + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV64) \ + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV128) \ + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV256)) + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_SPI_BITORDER(__VALUE__) (((__VALUE__) == LL_SPI_LSB_FIRST) \ + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_MSB_FIRST)) + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_SPI_CRCCALCULATION(__VALUE__) (((__VALUE__) == LL_SPI_CRCCALCULATION_ENABLE) \ + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_SPI_CRCCALCULATION_DISABLE)) + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_SPI_CRC_POLYNOMIAL(__VALUE__) ((__VALUE__) >= 0x1U) + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @} + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Private function prototypes -----------------------------------------------*/ + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Exported functions --------------------------------------------------------*/ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @addtogroup SPI_LL_Exported_Functions + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @addtogroup SPI_LL_EF_Init + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @brief De-initialize the SPI registers to their default reset values. + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param SPIx SPI Instance + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @retval An ErrorStatus enumeration value: + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - SUCCESS: SPI registers are de-initialized + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - ERROR: SPI registers are not de-initialized + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ErrorStatus LL_SPI_DeInit(SPI_TypeDef *SPIx) + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 29 .loc 1 134 1 view -0 + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 33 @ link register save eliminated. + 34 .loc 1 134 1 is_stmt 0 view .LVU1 + 35 0000 0346 mov r3, r0 + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ErrorStatus status = ERROR; + 36 .loc 1 135 3 is_stmt 1 view .LVU2 + 37 .LVL1: + ARM GAS /tmp/cc532wt1.s page 4 + + + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Check the parameters */ + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_SPI_ALL_INSTANCE(SPIx)); + 38 .loc 1 138 3 view .LVU3 + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #if defined(SPI1) + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (SPIx == SPI1) + 39 .loc 1 141 3 view .LVU4 + 40 .loc 1 141 6 is_stmt 0 view .LVU5 + 41 0002 2D4A ldr r2, .L15 + 42 0004 9042 cmp r0, r2 + 43 0006 10D0 beq .L9 + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 44 .loc 1 135 15 view .LVU6 + 45 0008 0120 movs r0, #1 + 46 .LVL2: + 47 .L2: + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Force reset of SPI clock */ + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_SPI1); + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Release reset of SPI clock */ + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_SPI1); + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** status = SUCCESS; + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #endif /* SPI1 */ + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #if defined(SPI2) + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (SPIx == SPI2) + 48 .loc 1 153 3 is_stmt 1 view .LVU7 + 49 .loc 1 153 6 is_stmt 0 view .LVU8 + 50 000a 2C4A ldr r2, .L15+4 + 51 000c 9342 cmp r3, r2 + 52 000e 18D0 beq .L10 + 53 .LVL3: + 54 .L3: + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Force reset of SPI clock */ + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_SPI2); + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Release reset of SPI clock */ + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_SPI2); + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** status = SUCCESS; + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #endif /* SPI2 */ + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #if defined(SPI3) + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (SPIx == SPI3) + 55 .loc 1 165 3 is_stmt 1 view .LVU9 + 56 .loc 1 165 6 is_stmt 0 view .LVU10 + 57 0010 2B4A ldr r2, .L15+8 + 58 0012 9342 cmp r3, r2 + 59 0014 21D0 beq .L11 + 60 .LVL4: + 61 .L4: + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Force reset of SPI clock */ + ARM GAS /tmp/cc532wt1.s page 5 + + + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_SPI3); + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Release reset of SPI clock */ + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_SPI3); + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** status = SUCCESS; + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #endif /* SPI3 */ + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #if defined(SPI4) + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (SPIx == SPI4) + 62 .loc 1 177 3 is_stmt 1 view .LVU11 + 63 .loc 1 177 6 is_stmt 0 view .LVU12 + 64 0016 2B4A ldr r2, .L15+12 + 65 0018 9342 cmp r3, r2 + 66 001a 2AD0 beq .L12 + 67 .LVL5: + 68 .L5: + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Force reset of SPI clock */ + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_SPI4); + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Release reset of SPI clock */ + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_SPI4); + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** status = SUCCESS; + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #endif /* SPI4 */ + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #if defined(SPI5) + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (SPIx == SPI5) + 69 .loc 1 189 3 is_stmt 1 view .LVU13 + 70 .loc 1 189 6 is_stmt 0 view .LVU14 + 71 001c 2A4A ldr r2, .L15+16 + 72 001e 9342 cmp r3, r2 + 73 0020 33D0 beq .L13 + 74 .LVL6: + 75 .L6: + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Force reset of SPI clock */ + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_SPI5); + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Release reset of SPI clock */ + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_SPI5); + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** status = SUCCESS; + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #endif /* SPI5 */ + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #if defined(SPI6) + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (SPIx == SPI6) + 76 .loc 1 201 3 is_stmt 1 view .LVU15 + 77 .loc 1 201 6 is_stmt 0 view .LVU16 + 78 0022 2A4A ldr r2, .L15+20 + 79 0024 9342 cmp r3, r2 + 80 0026 3CD0 beq .L14 + 81 .LVL7: + 82 .L7: + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Force reset of SPI clock */ + ARM GAS /tmp/cc532wt1.s page 6 + + + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_SPI6); + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Release reset of SPI clock */ + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_SPI6); + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** status = SUCCESS; + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #endif /* SPI6 */ + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** return status; + 83 .loc 1 213 3 is_stmt 1 view .LVU17 + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 84 .loc 1 214 1 is_stmt 0 view .LVU18 + 85 0028 7047 bx lr + 86 .LVL8: + 87 .L9: + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 88 .loc 1 144 5 is_stmt 1 view .LVU19 + 89 .LBB34: + 90 .LBI34: + 91 .file 2 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @file stm32f7xx_ll_bus.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Header file of BUS LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @verbatim + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ##### RCC Limitations ##### + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ============================================================================== + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** A delay between an RCC peripheral clock enable and the effective peripheral + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** enabling should be taken into account in order to manage the peripheral read/write + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** from/to registers. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (+) This delay depends on the peripheral mapping. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (++) AHB & APB peripherals, 1 dummy read is necessary + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** Workarounds: + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @endverbatim + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @attention + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * Copyright (c) 2017 STMicroelectronics. + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * All rights reserved. + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * This software is licensed under terms that can be found in the LICENSE file in + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * the root directory of this software component. + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifndef __STM32F7xx_LL_BUS_H + ARM GAS /tmp/cc532wt1.s page 7 + + + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define __STM32F7xx_LL_BUS_H + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifdef __cplusplus + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** extern "C" { + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Includes ------------------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #include "stm32f7xx.h" + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @addtogroup STM32F7xx_LL_Driver + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC) + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL BUS + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private types -------------------------------------------------------------*/ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private variables ---------------------------------------------------------*/ + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private constants ---------------------------------------------------------*/ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private macros ------------------------------------------------------------*/ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported types ------------------------------------------------------------*/ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported constants --------------------------------------------------------*/ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOA RCC_AHB1ENR_GPIOAEN + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOB RCC_AHB1ENR_GPIOBEN + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOC RCC_AHB1ENR_GPIOCEN + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOD RCC_AHB1ENR_GPIODEN + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOE RCC_AHB1ENR_GPIOEEN + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOF RCC_AHB1ENR_GPIOFEN + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOG RCC_AHB1ENR_GPIOGEN + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOH RCC_AHB1ENR_GPIOHEN + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOI RCC_AHB1ENR_GPIOIEN + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOJ) + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOJ RCC_AHB1ENR_GPIOJEN + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOJ */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOK) + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOK RCC_AHB1ENR_GPIOKEN + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOK */ + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_CRC RCC_AHB1ENR_CRCEN + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_BKPSRAM RCC_AHB1ENR_BKPSRAMEN + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DTCMRAM RCC_AHB1ENR_DTCMRAMEN + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHB1ENR_DMA1EN + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHB1ENR_DMA2EN + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DMA2D) + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2D RCC_AHB1ENR_DMA2DEN + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DMA2D */ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(ETH) + ARM GAS /tmp/cc532wt1.s page 8 + + + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMAC RCC_AHB1ENR_ETHMACEN + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACTX RCC_AHB1ENR_ETHMACTXEN + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACRX RCC_AHB1ENR_ETHMACRXEN + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACPTP RCC_AHB1ENR_ETHMACPTPEN + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* ETH */ + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHS RCC_AHB1ENR_OTGHSEN + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHSULPI RCC_AHB1ENR_OTGHSULPIEN + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_AXI RCC_AHB1LPENR_AXILPEN + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_FLITF RCC_AHB1LPENR_FLITFLPEN + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHB1LPENR_SRAM1LPEN + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM2 RCC_AHB1LPENR_SRAM2LPEN + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DCMI) + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_DCMI RCC_AHB2ENR_DCMIEN + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DCMI */ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(JPEG) + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_JPEG RCC_AHB2ENR_JPEGEN + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* JPEG */ + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CRYP) + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_CRYP RCC_AHB2ENR_CRYPEN + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CRYP */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(AES) + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_AES RCC_AHB2ENR_AESEN + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* AES */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(HASH) + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_HASH RCC_AHB2ENR_HASHEN + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* HASH */ + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_RNG RCC_AHB2ENR_RNGEN + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_OTGFS RCC_AHB2ENR_OTGFSEN + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB3_GRP1_PERIPH AHB3 GRP1 PERIPH + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_ALL 0xFFFFFFFFU + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_FMC RCC_AHB3ENR_FMCEN + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_QSPI RCC_AHB3ENR_QSPIEN + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN + ARM GAS /tmp/cc532wt1.s page 9 + + + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM12 RCC_APB1ENR_TIM12EN + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM13 RCC_APB1ENR_TIM13EN + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM14 RCC_APB1ENR_TIM14EN + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APB1ENR_LPTIM1EN + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPDIFRX) + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPDIFRX RCC_APB1ENR_SPDIFRXEN + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPDIFRX */ + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C3 RCC_APB1ENR_I2C3EN + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(I2C4) + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C4 RCC_APB1ENR_I2C4EN + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* I2C4 */ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR_CAN1EN + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN2) + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR_CAN2EN + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN2 */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN3) + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN3 RCC_APB1ENR_CAN3EN + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN3 */ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CEC) + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CEC RCC_APB1ENR_CECEN + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CEC */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART7 RCC_APB1ENR_UART7EN + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART8 RCC_APB1ENR_UART8EN + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC_APB1ENR_RTCEN) + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APB1ENR_RTCEN + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* RCC_APB1ENR_RTCEN */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART6 RCC_APB2ENR_USART6EN + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC2 RCC_APB2ENR_ADC2EN + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC3 RCC_APB2ENR_ADC3EN + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC1 RCC_APB2ENR_SDMMC1EN + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SDMMC2) + ARM GAS /tmp/cc532wt1.s page 10 + + + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC2 RCC_APB2ENR_SDMMC2EN + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SDMMC2 */ + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI4 RCC_APB2ENR_SPI4EN + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI5 RCC_APB2ENR_SPI5EN + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPI6) + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI6 RCC_APB2ENR_SPI6EN + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPI6 */ + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI1 RCC_APB2ENR_SAI1EN + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI2 RCC_APB2ENR_SAI2EN + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(LTDC) + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_LTDC RCC_APB2ENR_LTDCEN + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* LTDC */ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DSI) + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DSI RCC_APB2ENR_DSIEN + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DSI */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DFSDM1_Channel0) + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DFSDM1 RCC_APB2ENR_DFSDM1EN + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DFSDM1_Channel0 */ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(MDIOS) + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_MDIO RCC_APB2ENR_MDIOEN + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* MDIOS */ + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(USB_HS_PHYC) + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_OTGPHYC RCC_APB2ENR_OTGPHYCEN + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* USB_HS_PHYC */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC RCC_APB2RSTR_ADCRST + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported macro ------------------------------------------------------------*/ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported functions --------------------------------------------------------*/ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB1 AHB1 + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB1 peripherals clock. + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_EnableClock\n + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_EnableClock\n + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_EnableClock\n + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_EnableClock\n + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_EnableClock\n + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_EnableClock\n + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_EnableClock\n + ARM GAS /tmp/cc532wt1.s page 11 + + + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_EnableClock\n + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_EnableClock\n + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_EnableClock\n + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_EnableClock\n + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_EnableClock\n + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_EnableClock\n + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_EnableClock\n + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_EnableClock\n + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_EnableClock\n + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_EnableClock\n + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_EnableClock\n + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_EnableClock\n + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_EnableClock\n + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_EnableClock\n + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_EnableClock\n + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIEN LL_AHB1_GRP1_EnableClock + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB1 peripheral clock is enabled or not + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_IsEnabledClock\n + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_IsEnabledClock\n + ARM GAS /tmp/cc532wt1.s page 12 + + + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_IsEnabledClock\n + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_IsEnabledClock\n + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_IsEnabledClock\n + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_IsEnabledClock\n + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_IsEnabledClock\n + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_IsEnabledClock\n + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_IsEnabledClock\n + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_IsEnabledClock\n + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_IsEnabledClock\n + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_IsEnabledClock\n + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_IsEnabledClock\n + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_IsEnabledClock\n + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_IsEnabledClock\n + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_IsEnabledClock\n + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_IsEnabledClock\n + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_IsEnabledClock + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB1ENR, Periphs) == Periphs); + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB1 peripherals clock. + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_DisableClock\n + ARM GAS /tmp/cc532wt1.s page 13 + + + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_DisableClock\n + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_DisableClock\n + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_DisableClock\n + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_DisableClock\n + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_DisableClock\n + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_DisableClock\n + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_DisableClock\n + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_DisableClock\n + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_DisableClock\n + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_DisableClock\n + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_DisableClock\n + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_DisableClock\n + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_DisableClock\n + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_DisableClock\n + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_DisableClock\n + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_DisableClock\n + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_DisableClock\n + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_DisableClock\n + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_DisableClock\n + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_DisableClock\n + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_DisableClock\n + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_DisableClock + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1ENR, Periphs); + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB1 peripherals reset. + ARM GAS /tmp/cc532wt1.s page 14 + + + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ForceReset\n + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ForceReset\n + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ForceReset\n + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ForceReset\n + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ForceReset\n + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ForceReset\n + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ForceReset\n + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ForceReset\n + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ForceReset\n + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ForceReset\n + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ForceReset\n + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ForceReset\n + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset\n + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ForceReset\n + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ForceReset\n + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ForceReset\n + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ForceReset + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1RSTR, Periphs); + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB1 peripherals reset. + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ReleaseReset\n + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ReleaseReset\n + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ReleaseReset\n + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ReleaseReset\n + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ReleaseReset\n + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ReleaseReset\n + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ReleaseReset\n + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ReleaseReset\n + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ReleaseReset\n + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ReleaseReset\n + ARM GAS /tmp/cc532wt1.s page 15 + + + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ReleaseReset\n + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ReleaseReset\n + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ReleaseReset\n + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ReleaseReset + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1RSTR, Periphs); + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB1 peripheral clocks in low-power mode + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1LPENR GPIOALPEN LL_AHB1_GRP1_EnableClockLowPower\n + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOBLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOCLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIODLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOELPEN LL_AHB1_GRP1_EnableClockLowPower\n + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOFLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOGLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOHLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOILPEN LL_AHB1_GRP1_EnableClockLowPower\n + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOJLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOKLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR CRCLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR AXILPEN LL_AHB1_GRP1_EnableClockLowPower\n + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR FLITFLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM1LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM2LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR BKPSRAMLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DTCMRAMLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA1LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2LPEN LL_AHB1_GRP1_EnableClockLowPower\n + ARM GAS /tmp/cc532wt1.s page 16 + + + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2DLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACTXLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACRXLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACPTPLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSULPILPEN LL_AHB1_GRP1_EnableClockLowPower + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_AXI + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_FLITF + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM2 + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_EnableClockLowPower(uint32_t Periphs) + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1LPENR, Periphs); + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB1LPENR, Periphs); + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB1 peripheral clocks in low-power mode + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1LPENR GPIOALPEN LL_AHB1_GRP1_DisableClockLowPower\n + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOBLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOCLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIODLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOELPEN LL_AHB1_GRP1_DisableClockLowPower\n + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOFLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOGLPEN LL_AHB1_GRP1_DisableClockLowPower\n + ARM GAS /tmp/cc532wt1.s page 17 + + + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOHLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOILPEN LL_AHB1_GRP1_DisableClockLowPower\n + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOJLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOKLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR CRCLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR AXILPEN LL_AHB1_GRP1_DisableClockLowPower\n + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR FLITFLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM1LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM2LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR BKPSRAMLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DTCMRAMLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA1LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2DLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACTXLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACRXLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACPTPLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSULPILPEN LL_AHB1_GRP1_DisableClockLowPower + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_AXI + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_FLITF + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM2 + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_DisableClockLowPower(uint32_t Periphs) + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1LPENR, Periphs); + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + ARM GAS /tmp/cc532wt1.s page 18 + + + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB2 AHB2 + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB2 peripherals clock. + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_EnableClock\n + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_EnableClock\n + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_EnableClock\n + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_EnableClock\n + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_EnableClock\n + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_EnableClock\n + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_EnableClock + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs) + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2ENR, Periphs); + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB2 peripheral clock is enabled or not + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_IsEnabledClock\n + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_IsEnabledClock\n + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_IsEnabledClock\n + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_IsEnabledClock\n + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_IsEnabledClock\n + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_IsEnabledClock\n + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_IsEnabledClock + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + ARM GAS /tmp/cc532wt1.s page 19 + + + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB2_GRP1_IsEnabledClock(uint32_t Periphs) + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB2ENR, Periphs) == Periphs); + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB2 peripherals clock. + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_DisableClock\n + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_DisableClock\n + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_DisableClock\n + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_DisableClock\n + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_DisableClock\n + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_DisableClock\n + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_DisableClock + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_DisableClock(uint32_t Periphs) + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2ENR, Periphs); + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB2 peripherals reset. + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2RSTR DCMIRST LL_AHB2_GRP1_ForceReset\n + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR JPEGRST LL_AHB2_GRP1_ForceReset\n + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR CRYPRST LL_AHB2_GRP1_ForceReset\n + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR AESRST LL_AHB2_GRP1_ForceReset\n + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR HASHRST LL_AHB2_GRP1_ForceReset\n + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR RNGRST LL_AHB2_GRP1_ForceReset\n + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ForceReset + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_ForceReset(uint32_t Periphs) + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + ARM GAS /tmp/cc532wt1.s page 20 + + + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2RSTR, Periphs); + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB2 peripherals reset. + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2RSTR DCMIRST LL_AHB2_GRP1_ReleaseReset\n + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR JPEGRST LL_AHB2_GRP1_ReleaseReset\n + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR CRYPRST LL_AHB2_GRP1_ReleaseReset\n + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR AESRST LL_AHB2_GRP1_ReleaseReset\n + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR HASHRST LL_AHB2_GRP1_ReleaseReset\n + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR RNGRST LL_AHB2_GRP1_ReleaseReset\n + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ReleaseReset + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_ReleaseReset(uint32_t Periphs) + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2RSTR, Periphs); + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB2 peripheral clocks in low-power mode + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2LPENR DCMILPEN LL_AHB2_GRP1_EnableClockLowPower\n + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR JPEGLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR CRYPLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR AESLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR HASHLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR RNGLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR OTGFSLPEN LL_AHB2_GRP1_EnableClockLowPower + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_EnableClockLowPower(uint32_t Periphs) + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2LPENR, Periphs); + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB2LPENR, Periphs); + ARM GAS /tmp/cc532wt1.s page 21 + + + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB2 peripheral clocks in low-power mode + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2LPENR DCMILPEN LL_AHB2_GRP1_DisableClockLowPower\n + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR JPEGLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR CRYPLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR AESLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR HASHLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR RNGLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR OTGFSLPEN LL_AHB2_GRP1_DisableClockLowPower + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_DisableClockLowPower(uint32_t Periphs) + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2LPENR, Periphs); + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB3 AHB3 + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB3 peripherals clock. + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_EnableClock\n + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_EnableClock + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_EnableClock(uint32_t Periphs) + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3ENR, Periphs); + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB3ENR, Periphs); + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + ARM GAS /tmp/cc532wt1.s page 22 + + + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB3 peripheral clock is enabled or not + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_IsEnabledClock\n + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_IsEnabledClock + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB3_GRP1_IsEnabledClock(uint32_t Periphs) + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB3ENR, Periphs) == Periphs); + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB3 peripherals clock. + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_DisableClock\n + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_DisableClock + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_DisableClock(uint32_t Periphs) + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3ENR, Periphs); + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB3 peripherals reset. + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ForceReset\n + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3RSTR QSPIRST LL_AHB3_GRP1_ForceReset + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_ALL + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_ForceReset(uint32_t Periphs) + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3RSTR, Periphs); + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB3 peripherals reset. + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ReleaseReset\n + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3RSTR QSPIRST LL_AHB3_GRP1_ReleaseReset + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + ARM GAS /tmp/cc532wt1.s page 23 + + + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_ReleaseReset(uint32_t Periphs) + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3RSTR, Periphs); + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB3 peripheral clocks in low-power mode + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3LPENR FMCLPEN LL_AHB3_GRP1_EnableClockLowPower\n + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3LPENR QSPILPEN LL_AHB3_GRP1_EnableClockLowPower + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_EnableClockLowPower(uint32_t Periphs) + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3LPENR, Periphs); + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB3LPENR, Periphs); + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB3 peripheral clocks in low-power mode + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3LPENR FMCLPEN LL_AHB3_GRP1_DisableClockLowPower\n + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3LPENR QSPILPEN LL_AHB3_GRP1_DisableClockLowPower + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_DisableClockLowPower(uint32_t Periphs) + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3LPENR, Periphs); + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_APB1 APB1 + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB1 peripherals clock. +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_EnableClock\n +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_EnableClock\n + ARM GAS /tmp/cc532wt1.s page 24 + + +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_EnableClock\n +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_EnableClock\n +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_EnableClock\n +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_EnableClock\n +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_EnableClock\n +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_EnableClock\n +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_EnableClock\n +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_EnableClock\n +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_EnableClock\n +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_EnableClock\n +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_EnableClock\n +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_EnableClock\n +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_EnableClock\n +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_EnableClock\n +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_EnableClock\n +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_EnableClock\n +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_EnableClock\n +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_EnableClock\n +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_EnableClock\n +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_EnableClock\n +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_EnableClock\n +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_EnableClock\n +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_EnableClock\n +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_EnableClock\n +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_EnableClock\n +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_EnableClock\n +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_EnableClock\n +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_EnableClock\n +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_EnableClock +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR + ARM GAS /tmp/cc532wt1.s page 25 + + +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1ENR, Periphs); +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB1ENR, Periphs); +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if APB1 peripheral clock is enabled or not +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_IsEnabledClock\n +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_IsEnabledClock\n +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_IsEnabledClock\n +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_IsEnabledClock\n +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_IsEnabledClock\n +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_IsEnabledClock\n +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_IsEnabledClock\n +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_IsEnabledClock\n +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_IsEnabledClock\n +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_IsEnabledClock\n +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_IsEnabledClock\n +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_IsEnabledClock\n +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_IsEnabledClock\n +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_IsEnabledClock\n +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_IsEnabledClock\n +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_IsEnabledClock\n +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_IsEnabledClock\n +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_IsEnabledClock\n +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_IsEnabledClock\n +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_IsEnabledClock\n +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_IsEnabledClock\n +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_IsEnabledClock\n +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_IsEnabledClock\n +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_IsEnabledClock\n +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_IsEnabledClock\n +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_IsEnabledClock\n +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_IsEnabledClock\n +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_IsEnabledClock\n +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_IsEnabledClock\n +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_IsEnabledClock\n +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_IsEnabledClock +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + ARM GAS /tmp/cc532wt1.s page 26 + + +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs) +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->APB1ENR, Periphs) == Periphs); +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB1 peripherals clock. +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_DisableClock\n +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_DisableClock\n +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_DisableClock\n +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_DisableClock\n +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_DisableClock\n +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_DisableClock\n +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_DisableClock\n +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_DisableClock\n +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_DisableClock\n +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_DisableClock\n +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_DisableClock\n +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_DisableClock\n +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_DisableClock\n +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_DisableClock\n +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_DisableClock\n +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_DisableClock\n +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_DisableClock\n +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_DisableClock\n +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_DisableClock\n +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_DisableClock\n +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_DisableClock\n + ARM GAS /tmp/cc532wt1.s page 27 + + +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_DisableClock\n +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_DisableClock\n +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_DisableClock\n +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_DisableClock\n +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_DisableClock\n +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_DisableClock\n +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_DisableClock\n +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_DisableClock\n +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_DisableClock\n +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_DisableClock +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs) +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1ENR, Periphs); +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force APB1 peripherals reset. +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ForceReset\n +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM3RST LL_APB1_GRP1_ForceReset\n +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM4RST LL_APB1_GRP1_ForceReset\n +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM5RST LL_APB1_GRP1_ForceReset\n + ARM GAS /tmp/cc532wt1.s page 28 + + +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM6RST LL_APB1_GRP1_ForceReset\n +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM7RST LL_APB1_GRP1_ForceReset\n +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM12RST LL_APB1_GRP1_ForceReset\n +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM13RST LL_APB1_GRP1_ForceReset\n +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM14RST LL_APB1_GRP1_ForceReset\n +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR LPTIM1RST LL_APB1_GRP1_ForceReset\n +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR WWDGRST LL_APB1_GRP1_ForceReset\n +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI2RST LL_APB1_GRP1_ForceReset\n +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI3RST LL_APB1_GRP1_ForceReset\n +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPDIFRXRST LL_APB1_GRP1_ForceReset\n +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART2RST LL_APB1_GRP1_ForceReset\n +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART3RST LL_APB1_GRP1_ForceReset\n +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART4RST LL_APB1_GRP1_ForceReset\n +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART5RST LL_APB1_GRP1_ForceReset\n +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C1RST LL_APB1_GRP1_ForceReset\n +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C2RST LL_APB1_GRP1_ForceReset\n +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C3RST LL_APB1_GRP1_ForceReset\n +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C4RST LL_APB1_GRP1_ForceReset\n +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN1RST LL_APB1_GRP1_ForceReset\n +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN2RST LL_APB1_GRP1_ForceReset\n +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN3RST LL_APB1_GRP1_ForceReset\n +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CECRST LL_APB1_GRP1_ForceReset\n +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR PWRRST LL_APB1_GRP1_ForceReset\n +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR DACRST LL_APB1_GRP1_ForceReset\n +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART7RST LL_APB1_GRP1_ForceReset\n +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART8RST LL_APB1_GRP1_ForceReset +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 + ARM GAS /tmp/cc532wt1.s page 29 + + +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs) +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1RSTR, Periphs); +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release APB1 peripherals reset. +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ReleaseReset\n +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM3RST LL_APB1_GRP1_ReleaseReset\n +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM4RST LL_APB1_GRP1_ReleaseReset\n +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM5RST LL_APB1_GRP1_ReleaseReset\n +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM6RST LL_APB1_GRP1_ReleaseReset\n +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM7RST LL_APB1_GRP1_ReleaseReset\n +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM12RST LL_APB1_GRP1_ReleaseReset\n +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM13RST LL_APB1_GRP1_ReleaseReset\n +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM14RST LL_APB1_GRP1_ReleaseReset\n +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR LPTIM1RST LL_APB1_GRP1_ReleaseReset\n +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR WWDGRST LL_APB1_GRP1_ReleaseReset\n +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI2RST LL_APB1_GRP1_ReleaseReset\n +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI3RST LL_APB1_GRP1_ReleaseReset\n +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPDIFRXRST LL_APB1_GRP1_ReleaseReset\n +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART2RST LL_APB1_GRP1_ReleaseReset\n +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART3RST LL_APB1_GRP1_ReleaseReset\n +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART4RST LL_APB1_GRP1_ReleaseReset\n +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART5RST LL_APB1_GRP1_ReleaseReset\n +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C1RST LL_APB1_GRP1_ReleaseReset\n +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C2RST LL_APB1_GRP1_ReleaseReset\n +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C3RST LL_APB1_GRP1_ReleaseReset\n +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C4RST LL_APB1_GRP1_ReleaseReset\n +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN1RST LL_APB1_GRP1_ReleaseReset\n +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN2RST LL_APB1_GRP1_ReleaseReset\n +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN3RST LL_APB1_GRP1_ReleaseReset\n +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CECRST LL_APB1_GRP1_ReleaseReset\n +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR PWRRST LL_APB1_GRP1_ReleaseReset\n +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR DACRST LL_APB1_GRP1_ReleaseReset\n +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART7RST LL_APB1_GRP1_ReleaseReset\n +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART8RST LL_APB1_GRP1_ReleaseReset +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + ARM GAS /tmp/cc532wt1.s page 30 + + +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs) +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1RSTR, Periphs); +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB1 peripheral clocks in low-power mode +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM5LPEN LL_APB1_GRP1_EnableClockLowPower\n +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM6LPEN LL_APB1_GRP1_EnableClockLowPower\n +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM7LPEN LL_APB1_GRP1_EnableClockLowPower\n +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM12LPEN LL_APB1_GRP1_EnableClockLowPower\n +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM13LPEN LL_APB1_GRP1_EnableClockLowPower\n +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM14LPEN LL_APB1_GRP1_EnableClockLowPower\n +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR LPTIM1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR WWDGLPEN LL_APB1_GRP1_EnableClockLowPower\n +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPDIFRXLPEN LL_APB1_GRP1_EnableClockLowPower\n +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART5LPEN LL_APB1_GRP1_EnableClockLowPower\n +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CECLPEN LL_APB1_GRP1_EnableClockLowPower\n +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR PWRLPEN LL_APB1_GRP1_EnableClockLowPower\n +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR DACLPEN LL_APB1_GRP1_EnableClockLowPower\n +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART7LPEN LL_APB1_GRP1_EnableClockLowPower\n +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART8LPEN LL_APB1_GRP1_EnableClockLowPower\n +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR RTCLPEN LL_APB1_GRP1_EnableClockLowPower + ARM GAS /tmp/cc532wt1.s page 31 + + +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_EnableClockLowPower(uint32_t Periphs) +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1LPENR, Periphs); +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB1LPENR, Periphs); +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB1 peripheral clocks in low-power mode +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM5LPEN LL_APB1_GRP1_DisableClockLowPower\n +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM6LPEN LL_APB1_GRP1_DisableClockLowPower\n +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM7LPEN LL_APB1_GRP1_DisableClockLowPower\n +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM12LPEN LL_APB1_GRP1_DisableClockLowPower\n +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM13LPEN LL_APB1_GRP1_DisableClockLowPower\n +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM14LPEN LL_APB1_GRP1_DisableClockLowPower\n +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR LPTIM1LPEN LL_APB1_GRP1_DisableClockLowPower\n + ARM GAS /tmp/cc532wt1.s page 32 + + +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR WWDGLPEN LL_APB1_GRP1_DisableClockLowPower\n +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPDIFRXLPEN LL_APB1_GRP1_DisableClockLowPower\n +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART5LPEN LL_APB1_GRP1_DisableClockLowPower\n +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C1LPEN LL_APB1_GRP1_DisableClockLowPower\n +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN1LPEN LL_APB1_GRP1_DisableClockLowPower\n +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CECLPEN LL_APB1_GRP1_DisableClockLowPower\n +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR PWRLPEN LL_APB1_GRP1_DisableClockLowPower\n +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR DACLPEN LL_APB1_GRP1_DisableClockLowPower\n +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART7LPEN LL_APB1_GRP1_DisableClockLowPower\n +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART8LPEN LL_APB1_GRP1_DisableClockLowPower\n +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR RTCLPEN LL_APB1_GRP1_DisableClockLowPower +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + ARM GAS /tmp/cc532wt1.s page 33 + + +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_DisableClockLowPower(uint32_t Periphs) +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1LPENR, Periphs); +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_APB2 APB2 +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB2 peripherals clock. +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_EnableClock\n +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM8EN LL_APB2_GRP1_EnableClock\n +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART1EN LL_APB2_GRP1_EnableClock\n +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART6EN LL_APB2_GRP1_EnableClock\n +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC1EN LL_APB2_GRP1_EnableClock\n +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC2EN LL_APB2_GRP1_EnableClock\n +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC3EN LL_APB2_GRP1_EnableClock\n +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC1EN LL_APB2_GRP1_EnableClock\n +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC2EN LL_APB2_GRP1_EnableClock\n +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI4EN LL_APB2_GRP1_EnableClock\n +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SYSCFGEN LL_APB2_GRP1_EnableClock\n +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM9EN LL_APB2_GRP1_EnableClock\n +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM10EN LL_APB2_GRP1_EnableClock\n +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM11EN LL_APB2_GRP1_EnableClock\n +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI5EN LL_APB2_GRP1_EnableClock\n +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI6EN LL_APB2_GRP1_EnableClock\n +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI1EN LL_APB2_GRP1_EnableClock\n +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI2EN LL_APB2_GRP1_EnableClock\n +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR LTDCEN LL_APB2_GRP1_EnableClock\n +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DSIEN LL_APB2_GRP1_EnableClock\n +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DFSDM1EN LL_APB2_GRP1_EnableClock\n +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR MDIOEN LL_APB2_GRP1_EnableClock\n +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR OTGPHYCEN LL_APB2_GRP1_EnableClock +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) + ARM GAS /tmp/cc532wt1.s page 34 + + +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB2ENR, Periphs); +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB2ENR, Periphs); +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if APB2 peripheral clock is enabled or not +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_IsEnabledClock\n +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM8EN LL_APB2_GRP1_IsEnabledClock\n +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock\n +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART6EN LL_APB2_GRP1_IsEnabledClock\n +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC1EN LL_APB2_GRP1_IsEnabledClock\n +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC2EN LL_APB2_GRP1_IsEnabledClock\n +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC3EN LL_APB2_GRP1_IsEnabledClock\n +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC1EN LL_APB2_GRP1_IsEnabledClock\n +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC2EN LL_APB2_GRP1_IsEnabledClock\n +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI4EN LL_APB2_GRP1_IsEnabledClock\n +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SYSCFGEN LL_APB2_GRP1_IsEnabledClock\n +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM9EN LL_APB2_GRP1_IsEnabledClock\n +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM10EN LL_APB2_GRP1_IsEnabledClock\n +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM11EN LL_APB2_GRP1_IsEnabledClock\n +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI5EN LL_APB2_GRP1_IsEnabledClock\n +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI6EN LL_APB2_GRP1_IsEnabledClock\n +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI1EN LL_APB2_GRP1_IsEnabledClock\n +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI2EN LL_APB2_GRP1_IsEnabledClock\n +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR LTDCEN LL_APB2_GRP1_IsEnabledClock\n +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DSIEN LL_APB2_GRP1_IsEnabledClock\n +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DFSDM1EN LL_APB2_GRP1_IsEnabledClock\n +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR MDIOEN LL_APB2_GRP1_IsEnabledClock\n +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR OTGPHYCEN LL_APB2_GRP1_IsEnabledClock +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + ARM GAS /tmp/cc532wt1.s page 35 + + +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs) +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->APB2ENR, Periphs) == Periphs); +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB2 peripherals clock. +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_DisableClock\n +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM8EN LL_APB2_GRP1_DisableClock\n +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART1EN LL_APB2_GRP1_DisableClock\n +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART6EN LL_APB2_GRP1_DisableClock\n +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC1EN LL_APB2_GRP1_DisableClock\n +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC2EN LL_APB2_GRP1_DisableClock\n +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC3EN LL_APB2_GRP1_DisableClock\n +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC1EN LL_APB2_GRP1_DisableClock\n +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC2EN LL_APB2_GRP1_DisableClock\n +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI4EN LL_APB2_GRP1_DisableClock\n +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SYSCFGEN LL_APB2_GRP1_DisableClock\n +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM9EN LL_APB2_GRP1_DisableClock\n +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM10EN LL_APB2_GRP1_DisableClock\n +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM11EN LL_APB2_GRP1_DisableClock\n +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI5EN LL_APB2_GRP1_DisableClock\n +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI6EN LL_APB2_GRP1_DisableClock\n +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI1EN LL_APB2_GRP1_DisableClock\n +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI2EN LL_APB2_GRP1_DisableClock\n +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR LTDCEN LL_APB2_GRP1_DisableClock\n +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DSIEN LL_APB2_GRP1_DisableClock\n +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DFSDM1EN LL_APB2_GRP1_DisableClock\n +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR MDIOEN LL_APB2_GRP1_DisableClock\n +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR OTGPHYCEN LL_APB2_GRP1_DisableClock +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 + ARM GAS /tmp/cc532wt1.s page 36 + + +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs) +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB2ENR, Periphs); +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force APB2 peripherals reset. +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset\n +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM8RST LL_APB2_GRP1_ForceReset\n +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset\n +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART6RST LL_APB2_GRP1_ForceReset\n +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR ADCRST LL_APB2_GRP1_ForceReset\n +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC1RST LL_APB2_GRP1_ForceReset\n +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC2RST LL_APB2_GRP1_ForceReset\n +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI4RST LL_APB2_GRP1_ForceReset\n +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SYSCFGRST LL_APB2_GRP1_ForceReset\n +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM9RST LL_APB2_GRP1_ForceReset\n +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM10RST LL_APB2_GRP1_ForceReset\n +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM11RST LL_APB2_GRP1_ForceReset\n +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI5RST LL_APB2_GRP1_ForceReset\n +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI6RST LL_APB2_GRP1_ForceReset\n +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI1RST LL_APB2_GRP1_ForceReset\n +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI2RST LL_APB2_GRP1_ForceReset\n +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR LTDCRST LL_APB2_GRP1_ForceReset\n +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DSIRST LL_APB2_GRP1_ForceReset\n +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DFSDM1RST LL_APB2_GRP1_ForceReset\n +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR MDIORST LL_APB2_GRP1_ForceReset\n +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR OTGPHYCRST LL_APB2_GRP1_ForceReset +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ALL +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC + ARM GAS /tmp/cc532wt1.s page 37 + + +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs) + 92 .loc 2 1768 22 view .LVU20 + 93 .LBB35: +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB2RSTR, Periphs); + 94 .loc 2 1770 3 view .LVU21 + 95 002a 02F58432 add r2, r2, #67584 + 96 002e 516A ldr r1, [r2, #36] + 97 0030 41F48051 orr r1, r1, #4096 + 98 0034 5162 str r1, [r2, #36] + 99 .LVL9: + 100 .loc 2 1770 3 is_stmt 0 view .LVU22 + 101 .LBE35: + 102 .LBE34: + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 103 .loc 1 147 5 is_stmt 1 view .LVU23 + 104 .LBB36: + 105 .LBI36: +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release APB2 peripherals reset. +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2RSTR TIM1RST LL_APB2_GRP1_ReleaseReset\n +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM8RST LL_APB2_GRP1_ReleaseReset\n +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART1RST LL_APB2_GRP1_ReleaseReset\n +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART6RST LL_APB2_GRP1_ReleaseReset\n +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR ADCRST LL_APB2_GRP1_ReleaseReset\n +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC1RST LL_APB2_GRP1_ReleaseReset\n +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC2RST LL_APB2_GRP1_ReleaseReset\n +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI1RST LL_APB2_GRP1_ReleaseReset\n +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI4RST LL_APB2_GRP1_ReleaseReset\n +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SYSCFGRST LL_APB2_GRP1_ReleaseReset\n +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM9RST LL_APB2_GRP1_ReleaseReset\n +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM10RST LL_APB2_GRP1_ReleaseReset\n +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM11RST LL_APB2_GRP1_ReleaseReset\n +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI5RST LL_APB2_GRP1_ReleaseReset\n + ARM GAS /tmp/cc532wt1.s page 38 + + +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI6RST LL_APB2_GRP1_ReleaseReset\n +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI1RST LL_APB2_GRP1_ReleaseReset\n +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI2RST LL_APB2_GRP1_ReleaseReset\n +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR LTDCRST LL_APB2_GRP1_ReleaseReset\n +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DSIRST LL_APB2_GRP1_ReleaseReset\n +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DFSDM1RST LL_APB2_GRP1_ReleaseReset\n +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR MDIORST LL_APB2_GRP1_ReleaseReset\n +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR OTGPHYCRST LL_APB2_GRP1_ReleaseReset +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ALL +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs) + 106 .loc 2 1825 22 view .LVU24 + 107 .LBB37: +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB2RSTR, Periphs); + 108 .loc 2 1827 3 view .LVU25 + 109 0036 516A ldr r1, [r2, #36] + 110 0038 21F48051 bic r1, r1, #4096 + 111 003c 5162 str r1, [r2, #36] + 112 .LVL10: + 113 .loc 2 1827 3 is_stmt 0 view .LVU26 + 114 .LBE37: + 115 .LBE36: + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 116 .loc 1 149 5 is_stmt 1 view .LVU27 + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 117 .loc 1 149 12 is_stmt 0 view .LVU28 + 118 003e 0020 movs r0, #0 + 119 .LVL11: + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 120 .loc 1 149 12 view .LVU29 + ARM GAS /tmp/cc532wt1.s page 39 + + + 121 0040 E3E7 b .L2 + 122 .LVL12: + 123 .L10: + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 124 .loc 1 156 5 is_stmt 1 view .LVU30 + 125 .LBB38: + 126 .LBI38: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 127 .loc 2 1295 22 view .LVU31 + 128 .LBB39: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 129 .loc 2 1297 3 view .LVU32 + 130 0042 02F50032 add r2, r2, #131072 + 131 0046 116A ldr r1, [r2, #32] + 132 0048 41F48041 orr r1, r1, #16384 + 133 004c 1162 str r1, [r2, #32] + 134 .LVL13: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 135 .loc 2 1297 3 is_stmt 0 view .LVU33 + 136 .LBE39: + 137 .LBE38: + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 138 .loc 1 159 5 is_stmt 1 view .LVU34 + 139 .LBB40: + 140 .LBI40: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 141 .loc 2 1367 22 view .LVU35 + 142 .LBB41: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 143 .loc 2 1369 3 view .LVU36 + 144 004e 116A ldr r1, [r2, #32] + 145 0050 21F48041 bic r1, r1, #16384 + 146 0054 1162 str r1, [r2, #32] + 147 .LVL14: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 148 .loc 2 1369 3 is_stmt 0 view .LVU37 + 149 .LBE41: + 150 .LBE40: + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 151 .loc 1 161 5 is_stmt 1 view .LVU38 + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 152 .loc 1 161 12 is_stmt 0 view .LVU39 + 153 0056 0020 movs r0, #0 + 154 0058 DAE7 b .L3 + 155 .LVL15: + 156 .L11: + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 157 .loc 1 168 5 is_stmt 1 view .LVU40 + 158 .LBB42: + 159 .LBI42: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 160 .loc 2 1295 22 view .LVU41 + 161 .LBB43: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 162 .loc 2 1297 3 view .LVU42 + 163 005a 02F5FE32 add r2, r2, #130048 + 164 005e 116A ldr r1, [r2, #32] + ARM GAS /tmp/cc532wt1.s page 40 + + + 165 0060 41F40041 orr r1, r1, #32768 + 166 0064 1162 str r1, [r2, #32] + 167 .LVL16: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 168 .loc 2 1297 3 is_stmt 0 view .LVU43 + 169 .LBE43: + 170 .LBE42: + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 171 .loc 1 171 5 is_stmt 1 view .LVU44 + 172 .LBB44: + 173 .LBI44: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 174 .loc 2 1367 22 view .LVU45 + 175 .LBB45: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 176 .loc 2 1369 3 view .LVU46 + 177 0066 116A ldr r1, [r2, #32] + 178 0068 21F40041 bic r1, r1, #32768 + 179 006c 1162 str r1, [r2, #32] + 180 .LVL17: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 181 .loc 2 1369 3 is_stmt 0 view .LVU47 + 182 .LBE45: + 183 .LBE44: + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 184 .loc 1 173 5 is_stmt 1 view .LVU48 + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 185 .loc 1 173 12 is_stmt 0 view .LVU49 + 186 006e 0020 movs r0, #0 + 187 0070 D1E7 b .L4 + 188 .LVL18: + 189 .L12: + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 190 .loc 1 180 5 is_stmt 1 view .LVU50 + 191 .LBB46: + 192 .LBI46: +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 193 .loc 2 1768 22 view .LVU51 + 194 .LBB47: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 195 .loc 2 1770 3 view .LVU52 + 196 0072 02F58232 add r2, r2, #66560 + 197 0076 516A ldr r1, [r2, #36] + 198 0078 41F40051 orr r1, r1, #8192 + 199 007c 5162 str r1, [r2, #36] + 200 .LVL19: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 201 .loc 2 1770 3 is_stmt 0 view .LVU53 + 202 .LBE47: + 203 .LBE46: + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 204 .loc 1 183 5 is_stmt 1 view .LVU54 + 205 .LBB48: + 206 .LBI48: +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 207 .loc 2 1825 22 view .LVU55 + 208 .LBB49: + ARM GAS /tmp/cc532wt1.s page 41 + + + 209 .loc 2 1827 3 view .LVU56 + 210 007e 516A ldr r1, [r2, #36] + 211 0080 21F40051 bic r1, r1, #8192 + 212 0084 5162 str r1, [r2, #36] + 213 .LVL20: + 214 .loc 2 1827 3 is_stmt 0 view .LVU57 + 215 .LBE49: + 216 .LBE48: + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 217 .loc 1 185 5 is_stmt 1 view .LVU58 + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 218 .loc 1 185 12 is_stmt 0 view .LVU59 + 219 0086 0020 movs r0, #0 + 220 0088 C8E7 b .L5 + 221 .LVL21: + 222 .L13: + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 223 .loc 1 192 5 is_stmt 1 view .LVU60 + 224 .LBB50: + 225 .LBI50: +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 226 .loc 2 1768 22 view .LVU61 + 227 .LBB51: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 228 .loc 2 1770 3 view .LVU62 + 229 008a 02F56842 add r2, r2, #59392 + 230 008e 516A ldr r1, [r2, #36] + 231 0090 41F48011 orr r1, r1, #1048576 + 232 0094 5162 str r1, [r2, #36] + 233 .LVL22: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 234 .loc 2 1770 3 is_stmt 0 view .LVU63 + 235 .LBE51: + 236 .LBE50: + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 237 .loc 1 195 5 is_stmt 1 view .LVU64 + 238 .LBB52: + 239 .LBI52: +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 240 .loc 2 1825 22 view .LVU65 + 241 .LBB53: + 242 .loc 2 1827 3 view .LVU66 + 243 0096 516A ldr r1, [r2, #36] + 244 0098 21F48011 bic r1, r1, #1048576 + 245 009c 5162 str r1, [r2, #36] + 246 .LVL23: + 247 .loc 2 1827 3 is_stmt 0 view .LVU67 + 248 .LBE53: + 249 .LBE52: + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 250 .loc 1 197 5 is_stmt 1 view .LVU68 + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 251 .loc 1 197 12 is_stmt 0 view .LVU69 + 252 009e 0020 movs r0, #0 + 253 00a0 BFE7 b .L6 + 254 .LVL24: + 255 .L14: + ARM GAS /tmp/cc532wt1.s page 42 + + + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 256 .loc 1 204 5 is_stmt 1 view .LVU70 + 257 .LBB54: + 258 .LBI54: +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 259 .loc 2 1768 22 view .LVU71 + 260 .LBB55: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 261 .loc 2 1770 3 view .LVU72 + 262 00a2 0B4B ldr r3, .L15+24 + 263 .LVL25: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 264 .loc 2 1770 3 is_stmt 0 view .LVU73 + 265 00a4 5A6A ldr r2, [r3, #36] + 266 00a6 42F40012 orr r2, r2, #2097152 + 267 00aa 5A62 str r2, [r3, #36] + 268 .LVL26: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 269 .loc 2 1770 3 view .LVU74 + 270 .LBE55: + 271 .LBE54: + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 272 .loc 1 207 5 is_stmt 1 view .LVU75 + 273 .LBB56: + 274 .LBI56: +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 275 .loc 2 1825 22 view .LVU76 + 276 .LBB57: + 277 .loc 2 1827 3 view .LVU77 + 278 00ac 5A6A ldr r2, [r3, #36] + 279 00ae 22F40012 bic r2, r2, #2097152 + 280 00b2 5A62 str r2, [r3, #36] + 281 .LVL27: + 282 .loc 2 1827 3 is_stmt 0 view .LVU78 + 283 .LBE57: + 284 .LBE56: + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 285 .loc 1 209 5 is_stmt 1 view .LVU79 + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 286 .loc 1 209 12 is_stmt 0 view .LVU80 + 287 00b4 0020 movs r0, #0 + 288 00b6 B7E7 b .L7 + 289 .L16: + 290 .align 2 + 291 .L15: + 292 00b8 00300140 .word 1073819648 + 293 00bc 00380040 .word 1073756160 + 294 00c0 003C0040 .word 1073757184 + 295 00c4 00340140 .word 1073820672 + 296 00c8 00500140 .word 1073827840 + 297 00cc 00540140 .word 1073828864 + 298 00d0 00380240 .word 1073887232 + 299 .cfi_endproc + 300 .LFE451: + 302 .section .text.LL_SPI_Init,"ax",%progbits + 303 .align 1 + 304 .global LL_SPI_Init + ARM GAS /tmp/cc532wt1.s page 43 + + + 305 .syntax unified + 306 .thumb + 307 .thumb_func + 308 .fpu fpv5-d16 + 310 LL_SPI_Init: + 311 .LVL28: + 312 .LFB452: + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @brief Initialize the SPI registers according to the specified parameters in SPI_InitStruct. + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @note As some bits in SPI configuration registers can only be written when the SPI is disable + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * SPI peripheral should be in disabled state prior calling this function. Otherwise, ERRO + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param SPIx SPI Instance + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param SPI_InitStruct pointer to a @ref LL_SPI_InitTypeDef structure + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @retval An ErrorStatus enumeration value. (Return always SUCCESS) + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ErrorStatus LL_SPI_Init(SPI_TypeDef *SPIx, LL_SPI_InitTypeDef *SPI_InitStruct) + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 313 .loc 1 225 1 is_stmt 1 view -0 + 314 .cfi_startproc + 315 @ args = 0, pretend = 0, frame = 0 + 316 @ frame_needed = 0, uses_anonymous_args = 0 + 317 @ link register save eliminated. + 318 .loc 1 225 1 is_stmt 0 view .LVU82 + 319 0000 0346 mov r3, r0 + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ErrorStatus status = ERROR; + 320 .loc 1 226 3 is_stmt 1 view .LVU83 + 321 .LVL29: + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Check the SPI Instance SPIx*/ + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_SPI_ALL_INSTANCE(SPIx)); + 322 .loc 1 229 3 view .LVU84 + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Check the SPI parameters from SPI_InitStruct*/ + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_SPI_TRANSFER_DIRECTION(SPI_InitStruct->TransferDirection)); + 323 .loc 1 232 3 view .LVU85 + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_SPI_MODE(SPI_InitStruct->Mode)); + 324 .loc 1 233 3 view .LVU86 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_SPI_DATAWIDTH(SPI_InitStruct->DataWidth)); + 325 .loc 1 234 3 view .LVU87 + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_SPI_POLARITY(SPI_InitStruct->ClockPolarity)); + 326 .loc 1 235 3 view .LVU88 + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_SPI_PHASE(SPI_InitStruct->ClockPhase)); + 327 .loc 1 236 3 view .LVU89 + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_SPI_NSS(SPI_InitStruct->NSS)); + 328 .loc 1 237 3 view .LVU90 + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_SPI_BAUDRATE(SPI_InitStruct->BaudRate)); + 329 .loc 1 238 3 view .LVU91 + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_SPI_BITORDER(SPI_InitStruct->BitOrder)); + 330 .loc 1 239 3 view .LVU92 + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_SPI_CRCCALCULATION(SPI_InitStruct->CRCCalculation)); + 331 .loc 1 240 3 view .LVU93 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (LL_SPI_IsEnabled(SPIx) == 0x00000000U) + 332 .loc 1 242 3 view .LVU94 + 333 .LBB58: + 334 .LBI58: + ARM GAS /tmp/cc532wt1.s page 44 + + + 335 .file 3 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @file stm32f7xx_ll_spi.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Header file of SPI LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #ifndef STM32F7xx_LL_SPI_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define STM32F7xx_LL_SPI_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined (SPI1) || defined (SPI2) || defined (SPI3) || defined (SPI4) || defined (SPI5) || defin + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL SPI + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Private macros ------------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported types ------------------------------------------------------------*/ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined(USE_FULL_LL_DRIVER) + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_ES_INIT SPI Exported Init structure + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief SPI Init structures definition + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** typedef struct + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t TransferDirection; /*!< Specifies the SPI unidirectional or bidirectional data mod + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_TRANSFER_M + ARM GAS /tmp/cc532wt1.s page 45 + + + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t Mode; /*!< Specifies the SPI mode (Master/Slave). + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_MODE. + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t DataWidth; /*!< Specifies the SPI data width. + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_DATAWIDTH. + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t ClockPolarity; /*!< Specifies the serial clock steady state. + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_POLARITY. + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t ClockPhase; /*!< Specifies the clock active edge for the bit capture. + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_PHASE. + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t NSS; /*!< Specifies whether the NSS signal is managed by hardware (N + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_NSS_MODE. + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t BaudRate; /*!< Specifies the BaudRate prescaler value which will be used + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_BAUDRATEPR + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** @note The communication clock is derived from the master c + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t BitOrder; /*!< Specifies whether data transfers start from MSB or LSB bit + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_BIT_ORDER. + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not. + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref SPI_LL_EC_CRC_CALCUL + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t CRCPoly; /*!< Specifies the polynomial used for the CRC calculation. + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter must be a number between Min_Data = 0x00 an + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } LL_SPI_InitTypeDef; + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif /* USE_FULL_LL_DRIVER */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported constants --------------------------------------------------------*/ + ARM GAS /tmp/cc532wt1.s page 46 + + + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_Exported_Constants SPI Exported Constants + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_GET_FLAG Get Flags Defines + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Flags defines which can be used with LL_SPI_ReadReg function + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_RXNE SPI_SR_RXNE /*!< Rx buffer not empty flag + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_TXE SPI_SR_TXE /*!< Tx buffer empty flag + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_BSY SPI_SR_BSY /*!< Busy flag + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_CRCERR SPI_SR_CRCERR /*!< CRC error flag + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_MODF SPI_SR_MODF /*!< Mode fault flag + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_OVR SPI_SR_OVR /*!< Overrun flag + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SR_FRE SPI_SR_FRE /*!< TI mode frame format erro + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_IT IT Defines + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CR2_RXNEIE SPI_CR2_RXNEIE /*!< Rx buffer not empty inter + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CR2_TXEIE SPI_CR2_TXEIE /*!< Tx buffer empty interrupt + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CR2_ERRIE SPI_CR2_ERRIE /*!< Error interrupt enable + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_MODE Operation Mode + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI) /*!< Master configuratio + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_MODE_SLAVE 0x00000000U /*!< Slave configuration + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_PROTOCOL Serial Protocol + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_PROTOCOL_MOTOROLA 0x00000000U /*!< Motorola mode. Used as de + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_PROTOCOL_TI (SPI_CR2_FRF) /*!< TI mode + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_PHASE Clock Phase + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_PHASE_1EDGE 0x00000000U /*!< First clock transition is + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_PHASE_2EDGE (SPI_CR1_CPHA) /*!< Second clock transition i + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + ARM GAS /tmp/cc532wt1.s page 47 + + + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_POLARITY Clock Polarity + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_POLARITY_LOW 0x00000000U /*!< Clock to 0 when idle */ + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_POLARITY_HIGH (SPI_CR1_CPOL) /*!< Clock to 1 when idle */ + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_BAUDRATEPRESCALER Baud Rate Prescaler + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV2 0x00000000U /*!< Baud + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV4 (SPI_CR1_BR_0) /*!< Baud + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV8 (SPI_CR1_BR_1) /*!< Baud + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV16 (SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< Baud + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV32 (SPI_CR1_BR_2) /*!< Baud + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV64 (SPI_CR1_BR_2 | SPI_CR1_BR_0) /*!< Baud + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV128 (SPI_CR1_BR_2 | SPI_CR1_BR_1) /*!< Baud + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_BAUDRATEPRESCALER_DIV256 (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< Baud + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_BIT_ORDER Transmission Bit Order + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_LSB_FIRST (SPI_CR1_LSBFIRST) /*!< Data is transmitted/recei + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_MSB_FIRST 0x00000000U /*!< Data is transmitted/recei + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_TRANSFER_MODE Transfer Mode + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_FULL_DUPLEX 0x00000000U /*!< Full-Duplex mo + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_SIMPLEX_RX (SPI_CR1_RXONLY) /*!< Simplex Rx mod + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_HALF_DUPLEX_RX (SPI_CR1_BIDIMODE) /*!< Half-Duplex Rx + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_HALF_DUPLEX_TX (SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE) /*!< Half-Duplex Tx + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_NSS_MODE Slave Select Pin Mode + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_NSS_SOFT (SPI_CR1_SSM) /*!< NSS managed inter + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_NSS_HARD_INPUT 0x00000000U /*!< NSS pin used in I + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_NSS_HARD_OUTPUT (((uint32_t)SPI_CR2_SSOE << 16U)) /*!< NSS pin used in O + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_DATAWIDTH Datawidth + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + ARM GAS /tmp/cc532wt1.s page 48 + + + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_4BIT (SPI_CR2_DS_0 | SPI_CR2_DS_1) + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_5BIT (SPI_CR2_DS_2) + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_6BIT (SPI_CR2_DS_2 | SPI_CR2_DS_0) + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_7BIT (SPI_CR2_DS_2 | SPI_CR2_DS_1) + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_8BIT (SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0) + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_9BIT (SPI_CR2_DS_3) + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_10BIT (SPI_CR2_DS_3 | SPI_CR2_DS_0) + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_11BIT (SPI_CR2_DS_3 | SPI_CR2_DS_1) + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_12BIT (SPI_CR2_DS_3 | SPI_CR2_DS_1 | SPI_CR2_DS_0) + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_13BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2) + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_14BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_0) + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_15BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1) + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DATAWIDTH_16BIT (SPI_CR2_DS_3 | SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined(USE_FULL_LL_DRIVER) + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_CRC_CALCULATION CRC Calculation + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CRCCALCULATION_DISABLE 0x00000000U /*!< CRC calculation disabled + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CRCCALCULATION_ENABLE (SPI_CR1_CRCEN) /*!< CRC calculation enabled + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif /* USE_FULL_LL_DRIVER */ + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_CRC_LENGTH CRC Length + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CRC_8BIT 0x00000000U /*!< 8-bit CRC length */ + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_CRC_16BIT (SPI_CR1_CRCL) /*!< 16-bit CRC length */ + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_RX_FIFO_TH RX FIFO Threshold + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_TH_HALF 0x00000000U /*!< RXNE event is generated i + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_TH_QUARTER (SPI_CR2_FRXTH) /*!< RXNE event is generated i + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_RX_FIFO RX FIFO Level + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_EMPTY 0x00000000U /*!< FIFO reception em + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_QUARTER_FULL (SPI_SR_FRLVL_0) /*!< FIFO reception 1/ + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_HALF_FULL (SPI_SR_FRLVL_1) /*!< FIFO reception 1/ + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_RX_FIFO_FULL (SPI_SR_FRLVL_1 | SPI_SR_FRLVL_0) /*!< FIFO reception fu + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + ARM GAS /tmp/cc532wt1.s page 49 + + + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_TX_FIFO TX FIFO Level + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_TX_FIFO_EMPTY 0x00000000U /*!< FIFO transmission + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_TX_FIFO_QUARTER_FULL (SPI_SR_FTLVL_0) /*!< FIFO transmission + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_TX_FIFO_HALF_FULL (SPI_SR_FTLVL_1) /*!< FIFO transmission + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_TX_FIFO_FULL (SPI_SR_FTLVL_1 | SPI_SR_FTLVL_0) /*!< FIFO transmission + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_DMA_PARITY DMA Parity + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DMA_PARITY_EVEN 0x00000000U /*!< Select DMA parity Even */ + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_DMA_PARITY_ODD 0x00000001U /*!< Select DMA parity Odd */ + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported macro ------------------------------------------------------------*/ + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_Exported_Macros SPI Exported Macros + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EM_WRITE_READ Common Write and read registers Macros + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Write a value in SPI register + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __INSTANCE__ SPI Instance + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __REG__ Register to be written + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __VALUE__ Value to be written in the register + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Read a value in SPI register + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __INSTANCE__ SPI Instance + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __REG__ Register to be read + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Register value + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_SPI_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + ARM GAS /tmp/cc532wt1.s page 50 + + + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported functions --------------------------------------------------------*/ + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_Exported_Functions SPI Exported Functions + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_Configuration Configuration + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable SPI peripheral + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 SPE LL_SPI_Enable + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_Enable(SPI_TypeDef *SPIx) + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR1, SPI_CR1_SPE); + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable SPI peripheral + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note When disabling the SPI, follow the procedure described in the Reference Manual. + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 SPE LL_SPI_Disable + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_Disable(SPI_TypeDef *SPIx) + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE); + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if SPI peripheral is enabled + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 SPE LL_SPI_IsEnabled + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabled(SPI_TypeDef *SPIx) + 336 .loc 3 381 26 view .LVU95 + 337 .LBB59: + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR1, SPI_CR1_SPE) == (SPI_CR1_SPE)) ? 1UL : 0UL); + 338 .loc 3 383 3 view .LVU96 + 339 .loc 3 383 12 is_stmt 0 view .LVU97 + 340 0002 0268 ldr r2, [r0] + 341 .loc 3 383 69 view .LVU98 + 342 0004 12F0400F tst r2, #64 + 343 0008 36D1 bne .L20 + 344 .LBE59: + 345 .LBE58: + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ErrorStatus status = ERROR; + 346 .loc 1 225 1 view .LVU99 + 347 000a 10B4 push {r4} + 348 .LCFI0: + 349 .cfi_def_cfa_offset 4 + ARM GAS /tmp/cc532wt1.s page 51 + + + 350 .cfi_offset 4, -4 + 351 .LVL30: + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /*---------------------------- SPIx CR1 Configuration ------------------------ + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * Configure SPIx CR1 with parameters: + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - TransferDirection: SPI_CR1_BIDIMODE, SPI_CR1_BIDIOE and SPI_CR1_RXONLY bits + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - Master/Slave Mode: SPI_CR1_MSTR bit + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - ClockPolarity: SPI_CR1_CPOL bit + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - ClockPhase: SPI_CR1_CPHA bit + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - NSS management: SPI_CR1_SSM bit + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - BaudRate prescaler: SPI_CR1_BR[2:0] bits + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - BitOrder: SPI_CR1_LSBFIRST bit + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - CRCCalculation: SPI_CR1_CRCEN bit + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** MODIFY_REG(SPIx->CR1, + 352 .loc 1 255 5 is_stmt 1 view .LVU100 + 353 000c 0268 ldr r2, [r0] + 354 000e 1D48 ldr r0, .L27 + 355 .LVL31: + 356 .loc 1 255 5 is_stmt 0 view .LVU101 + 357 0010 1040 ands r0, r0, r2 + 358 0012 0A68 ldr r2, [r1] + 359 0014 4C68 ldr r4, [r1, #4] + 360 0016 2243 orrs r2, r2, r4 + 361 0018 CC68 ldr r4, [r1, #12] + 362 001a 2243 orrs r2, r2, r4 + 363 001c 0C69 ldr r4, [r1, #16] + 364 001e 2243 orrs r2, r2, r4 + 365 0020 4C69 ldr r4, [r1, #20] + 366 0022 2243 orrs r2, r2, r4 + 367 0024 8C69 ldr r4, [r1, #24] + 368 0026 2243 orrs r2, r2, r4 + 369 0028 CC69 ldr r4, [r1, #28] + 370 002a 2243 orrs r2, r2, r4 + 371 002c 0C6A ldr r4, [r1, #32] + 372 002e 2243 orrs r2, r2, r4 + 373 0030 0243 orrs r2, r2, r0 + 374 0032 1A60 str r2, [r3] + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_CR1_CLEAR_MASK, + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->TransferDirection | SPI_InitStruct->Mode | + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->ClockPolarity | SPI_InitStruct->ClockPhase | + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->NSS | SPI_InitStruct->BaudRate | + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->BitOrder | SPI_InitStruct->CRCCalculation); + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /*---------------------------- SPIx CR2 Configuration ------------------------ + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * Configure SPIx CR2 with parameters: + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - DataWidth: DS[3:0] bits + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - NSS management: SSOE bit + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** MODIFY_REG(SPIx->CR2, + 375 .loc 1 267 5 is_stmt 1 view .LVU102 + 376 0034 5868 ldr r0, [r3, #4] + 377 0036 144A ldr r2, .L27+4 + 378 0038 0240 ands r2, r2, r0 + 379 003a 8868 ldr r0, [r1, #8] + 380 003c B1F816C0 ldrh ip, [r1, #22] + 381 0040 40EA0C00 orr r0, r0, ip + ARM GAS /tmp/cc532wt1.s page 52 + + + 382 0044 0243 orrs r2, r2, r0 + 383 0046 5A60 str r2, [r3, #4] + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_CR2_DS | SPI_CR2_SSOE, + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->DataWidth | (SPI_InitStruct->NSS >> 16U)); + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Set Rx FIFO to Quarter (1 Byte) in case of 8 Bits mode. No DataPacking by default */ + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (SPI_InitStruct->DataWidth < LL_SPI_DATAWIDTH_9BIT) + 384 .loc 1 272 5 view .LVU103 + 385 .loc 1 272 23 is_stmt 0 view .LVU104 + 386 0048 8A68 ldr r2, [r1, #8] + 387 .loc 1 272 8 view .LVU105 + 388 004a B2F5006F cmp r2, #2048 + 389 004e 03D2 bcs .L19 + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_SPI_SetRxFIFOThreshold(SPIx, LL_SPI_RX_FIFO_TH_QUARTER); + 390 .loc 1 274 7 is_stmt 1 view .LVU106 + 391 .LVL32: + 392 .LBB60: + 393 .LBI60: + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set SPI operation mode to Master or Slave + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 MSTR LL_SPI_SetMode\n + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 SSI LL_SPI_SetMode + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param Mode This parameter can be one of the following values: + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MODE_MASTER + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MODE_SLAVE + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetMode(SPI_TypeDef *SPIx, uint32_t Mode) + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI, Mode); + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get SPI operation mode (Master or Slave) + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 MSTR LL_SPI_GetMode\n + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 SSI LL_SPI_GetMode + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MODE_MASTER + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MODE_SLAVE + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetMode(SPI_TypeDef *SPIx) + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI)); + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set serial protocol used + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 FRF LL_SPI_SetStandard + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param Standard This parameter can be one of the following values: + ARM GAS /tmp/cc532wt1.s page 53 + + + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PROTOCOL_MOTOROLA + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PROTOCOL_TI + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard) + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_FRF, Standard); + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get serial protocol used + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 FRF LL_SPI_GetStandard + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PROTOCOL_MOTOROLA + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PROTOCOL_TI + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetStandard(SPI_TypeDef *SPIx) + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_FRF)); + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set clock phase + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * This bit is not used in SPI TI mode. + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CPHA LL_SPI_SetClockPhase + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param ClockPhase This parameter can be one of the following values: + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PHASE_1EDGE + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PHASE_2EDGE + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetClockPhase(SPI_TypeDef *SPIx, uint32_t ClockPhase) + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_CPHA, ClockPhase); + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get clock phase + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CPHA LL_SPI_GetClockPhase + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PHASE_1EDGE + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_PHASE_2EDGE + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetClockPhase(SPI_TypeDef *SPIx) + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPHA)); + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set clock polarity + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * This bit is not used in SPI TI mode. + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CPOL LL_SPI_SetClockPolarity + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + ARM GAS /tmp/cc532wt1.s page 54 + + + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param ClockPolarity This parameter can be one of the following values: + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_POLARITY_LOW + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_POLARITY_HIGH + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity) + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_CPOL, ClockPolarity); + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get clock polarity + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CPOL LL_SPI_GetClockPolarity + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_POLARITY_LOW + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_POLARITY_HIGH + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetClockPolarity(SPI_TypeDef *SPIx) + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPOL)); + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set baud rate prescaler + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note These bits should not be changed when communication is ongoing. SPI BaudRate = fPCLK/Pr + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 BR LL_SPI_SetBaudRatePrescaler + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param BaudRate This parameter can be one of the following values: + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2 + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4 + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8 + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16 + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32 + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64 + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256 + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetBaudRatePrescaler(SPI_TypeDef *SPIx, uint32_t BaudRate) + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_BR, BaudRate); + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get baud rate prescaler + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 BR LL_SPI_GetBaudRatePrescaler + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2 + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4 + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8 + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16 + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32 + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64 + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128 + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256 + ARM GAS /tmp/cc532wt1.s page 55 + + + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetBaudRatePrescaler(SPI_TypeDef *SPIx) + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_BR)); + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set transfer bit order + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. This bit is not used in S + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 LSBFIRST LL_SPI_SetTransferBitOrder + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param BitOrder This parameter can be one of the following values: + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_LSB_FIRST + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MSB_FIRST + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetTransferBitOrder(SPI_TypeDef *SPIx, uint32_t BitOrder) + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_LSBFIRST, BitOrder); + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get transfer bit order + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 LSBFIRST LL_SPI_GetTransferBitOrder + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_LSB_FIRST + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_MSB_FIRST + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetTransferBitOrder(SPI_TypeDef *SPIx) + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_LSBFIRST)); + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set transfer direction mode + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note For Half-Duplex mode, Rx Direction is set by default. + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * In master mode, the MOSI pin is used and in slave mode, the MISO pin is used for Half-D + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 RXONLY LL_SPI_SetTransferDirection\n + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 BIDIMODE LL_SPI_SetTransferDirection\n + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 BIDIOE LL_SPI_SetTransferDirection + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param TransferDirection This parameter can be one of the following values: + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_FULL_DUPLEX + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_SIMPLEX_RX + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_HALF_DUPLEX_RX + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_HALF_DUPLEX_TX + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetTransferDirection(SPI_TypeDef *SPIx, uint32_t TransferDirection) + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE, TransferDirection); + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get transfer direction mode + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 RXONLY LL_SPI_GetTransferDirection\n + ARM GAS /tmp/cc532wt1.s page 56 + + + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 BIDIMODE LL_SPI_GetTransferDirection\n + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * CR1 BIDIOE LL_SPI_GetTransferDirection + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_FULL_DUPLEX + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_SIMPLEX_RX + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_HALF_DUPLEX_RX + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_HALF_DUPLEX_TX + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetTransferDirection(SPI_TypeDef *SPIx) + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE)); + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set frame data width + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 DS LL_SPI_SetDataWidth + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param DataWidth This parameter can be one of the following values: + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_4BIT + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_5BIT + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_6BIT + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_7BIT + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_8BIT + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_9BIT + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_10BIT + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_11BIT + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_12BIT + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_13BIT + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_14BIT + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_15BIT + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_16BIT + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetDataWidth(SPI_TypeDef *SPIx, uint32_t DataWidth) + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_DS, DataWidth); + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get frame data width + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 DS LL_SPI_GetDataWidth + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_4BIT + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_5BIT + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_6BIT + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_7BIT + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_8BIT + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_9BIT + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_10BIT + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_11BIT + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_12BIT + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_13BIT + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_14BIT + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_15BIT + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DATAWIDTH_16BIT + ARM GAS /tmp/cc532wt1.s page 57 + + + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetDataWidth(SPI_TypeDef *SPIx) + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_DS)); + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set threshold of RXFIFO that triggers an RXNE event + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 FRXTH LL_SPI_SetRxFIFOThreshold + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param Threshold This parameter can be one of the following values: + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_TH_HALF + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_TH_QUARTER + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetRxFIFOThreshold(SPI_TypeDef *SPIx, uint32_t Threshold) + 394 .loc 3 665 22 view .LVU107 + 395 .LBB61: + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_FRXTH, Threshold); + 396 .loc 3 667 3 view .LVU108 + 397 0050 5A68 ldr r2, [r3, #4] + 398 0052 42F48052 orr r2, r2, #4096 + 399 0056 5A60 str r2, [r3, #4] + 400 .LVL33: + 401 .L19: + 402 .loc 3 667 3 is_stmt 0 view .LVU109 + 403 .LBE61: + 404 .LBE60: + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /*---------------------------- SPIx CRCPR Configuration ---------------------- + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * Configure SPIx CRCPR with parameters: + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - CRCPoly: CRCPOLY[15:0] bits + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (SPI_InitStruct->CRCCalculation == LL_SPI_CRCCALCULATION_ENABLE) + 405 .loc 1 281 5 is_stmt 1 view .LVU110 + 406 .loc 1 281 23 is_stmt 0 view .LVU111 + 407 0058 0A6A ldr r2, [r1, #32] + 408 .loc 1 281 8 view .LVU112 + 409 005a B2F5005F cmp r2, #8192 + 410 005e 07D0 beq .L26 + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_SPI_CRC_POLYNOMIAL(SPI_InitStruct->CRCPoly)); + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_SPI_SetCRCPolynomial(SPIx, SPI_InitStruct->CRCPoly); + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** status = SUCCESS; + 411 .loc 1 286 12 view .LVU113 + 412 0060 0020 movs r0, #0 + 413 .L18: + 414 .LVL34: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Activate the SPI mode (Reset I2SMOD bit in I2SCFGR register) */ + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD); + 415 .loc 1 290 3 is_stmt 1 view .LVU114 + 416 0062 DA69 ldr r2, [r3, #28] + ARM GAS /tmp/cc532wt1.s page 58 + + + 417 0064 22F40062 bic r2, r2, #2048 + 418 0068 DA61 str r2, [r3, #28] + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** return status; + 419 .loc 1 291 3 view .LVU115 + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 420 .loc 1 292 1 is_stmt 0 view .LVU116 + 421 006a 5DF8044B ldr r4, [sp], #4 + 422 .LCFI1: + 423 .cfi_remember_state + 424 .cfi_restore 4 + 425 .cfi_def_cfa_offset 0 + 426 006e 7047 bx lr + 427 .LVL35: + 428 .L26: + 429 .LCFI2: + 430 .cfi_restore_state + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** LL_SPI_SetCRCPolynomial(SPIx, SPI_InitStruct->CRCPoly); + 431 .loc 1 283 7 is_stmt 1 view .LVU117 + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 432 .loc 1 284 7 view .LVU118 + 433 .LBB62: + 434 .LBI62: + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get threshold of RXFIFO that triggers an RXNE event + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 FRXTH LL_SPI_GetRxFIFOThreshold + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_TH_HALF + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_TH_QUARTER + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetRxFIFOThreshold(SPI_TypeDef *SPIx) + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_FRXTH)); + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_CRC_Management CRC Management + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable CRC + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCEN LL_SPI_EnableCRC + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableCRC(SPI_TypeDef *SPIx) + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR1, SPI_CR1_CRCEN); + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + ARM GAS /tmp/cc532wt1.s page 59 + + + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable CRC + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCEN LL_SPI_DisableCRC + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableCRC(SPI_TypeDef *SPIx) + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR1, SPI_CR1_CRCEN); + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if CRC is enabled + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCEN LL_SPI_IsEnabledCRC + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledCRC(SPI_TypeDef *SPIx) + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR1, SPI_CR1_CRCEN) == (SPI_CR1_CRCEN)) ? 1UL : 0UL); + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set CRC Length + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCL LL_SPI_SetCRCWidth + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param CRCLength This parameter can be one of the following values: + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_CRC_8BIT + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_CRC_16BIT + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetCRCWidth(SPI_TypeDef *SPIx, uint32_t CRCLength) + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_CRCL, CRCLength); + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get CRC Length + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCL LL_SPI_GetCRCWidth + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_CRC_8BIT + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_CRC_16BIT + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetCRCWidth(SPI_TypeDef *SPIx) + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CRCL)); + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set CRCNext to transfer CRC on the line + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit has to be written as soon as the last data is written in the SPIx_DR register. + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 CRCNEXT LL_SPI_SetCRCNext + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + ARM GAS /tmp/cc532wt1.s page 60 + + + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetCRCNext(SPI_TypeDef *SPIx) + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR1, SPI_CR1_CRCNEXT); + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set polynomial for CRC calculation + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CRCPR CRCPOLY LL_SPI_SetCRCPolynomial + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param CRCPoly This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFF + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetCRCPolynomial(SPI_TypeDef *SPIx, uint32_t CRCPoly) + 435 .loc 3 774 22 view .LVU119 + 436 .LBB63: + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** WRITE_REG(SPIx->CRCPR, (uint16_t)CRCPoly); + 437 .loc 3 776 3 view .LVU120 + 438 0070 8A8C ldrh r2, [r1, #36] + 439 0072 1A61 str r2, [r3, #16] + 440 .LVL36: + 441 .loc 3 776 3 is_stmt 0 view .LVU121 + 442 .LBE63: + 443 .LBE62: + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 444 .loc 1 286 12 view .LVU122 + 445 0074 0020 movs r0, #0 + 446 .LBB65: + 447 .LBB64: + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 448 .loc 3 777 1 view .LVU123 + 449 0076 F4E7 b .L18 + 450 .LVL37: + 451 .L20: + 452 .LCFI3: + 453 .cfi_def_cfa_offset 0 + 454 .cfi_restore 4 + 455 .loc 3 777 1 view .LVU124 + 456 .LBE64: + 457 .LBE65: + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 458 .loc 1 226 15 view .LVU125 + 459 0078 0120 movs r0, #1 + 460 .LVL38: + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** return status; + 461 .loc 1 290 3 is_stmt 1 view .LVU126 + 462 007a DA69 ldr r2, [r3, #28] + 463 007c 22F40062 bic r2, r2, #2048 + 464 0080 DA61 str r2, [r3, #28] + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 465 .loc 1 291 3 view .LVU127 + 466 .loc 1 292 1 is_stmt 0 view .LVU128 + 467 0082 7047 bx lr + 468 .L28: + 469 .align 2 + ARM GAS /tmp/cc532wt1.s page 61 + + + 470 .L27: + 471 0084 4000FFFF .word -65472 + 472 0088 FBF0FFFF .word -3845 + 473 .cfi_endproc + 474 .LFE452: + 476 .section .text.LL_SPI_StructInit,"ax",%progbits + 477 .align 1 + 478 .global LL_SPI_StructInit + 479 .syntax unified + 480 .thumb + 481 .thumb_func + 482 .fpu fpv5-d16 + 484 LL_SPI_StructInit: + 485 .LVL39: + 486 .LFB453: + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @brief Set each @ref LL_SPI_InitTypeDef field to default value. + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param SPI_InitStruct pointer to a @ref LL_SPI_InitTypeDef structure + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * whose fields will be set to default values. + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @retval None + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct) + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 487 .loc 1 301 1 is_stmt 1 view -0 + 488 .cfi_startproc + 489 @ args = 0, pretend = 0, frame = 0 + 490 @ frame_needed = 0, uses_anonymous_args = 0 + 491 @ link register save eliminated. + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Set SPI_InitStruct fields to default values */ + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->TransferDirection = LL_SPI_FULL_DUPLEX; + 492 .loc 1 303 3 view .LVU130 + 493 .loc 1 303 37 is_stmt 0 view .LVU131 + 494 0000 0023 movs r3, #0 + 495 0002 0360 str r3, [r0] + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->Mode = LL_SPI_MODE_SLAVE; + 496 .loc 1 304 3 is_stmt 1 view .LVU132 + 497 .loc 1 304 37 is_stmt 0 view .LVU133 + 498 0004 4360 str r3, [r0, #4] + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->DataWidth = LL_SPI_DATAWIDTH_8BIT; + 499 .loc 1 305 3 is_stmt 1 view .LVU134 + 500 .loc 1 305 37 is_stmt 0 view .LVU135 + 501 0006 4FF4E062 mov r2, #1792 + 502 000a 8260 str r2, [r0, #8] + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->ClockPolarity = LL_SPI_POLARITY_LOW; + 503 .loc 1 306 3 is_stmt 1 view .LVU136 + 504 .loc 1 306 37 is_stmt 0 view .LVU137 + 505 000c C360 str r3, [r0, #12] + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->ClockPhase = LL_SPI_PHASE_1EDGE; + 506 .loc 1 307 3 is_stmt 1 view .LVU138 + 507 .loc 1 307 37 is_stmt 0 view .LVU139 + 508 000e 0361 str r3, [r0, #16] + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->NSS = LL_SPI_NSS_HARD_INPUT; + 509 .loc 1 308 3 is_stmt 1 view .LVU140 + 510 .loc 1 308 37 is_stmt 0 view .LVU141 + 511 0010 4361 str r3, [r0, #20] + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV2; + ARM GAS /tmp/cc532wt1.s page 62 + + + 512 .loc 1 309 3 is_stmt 1 view .LVU142 + 513 .loc 1 309 37 is_stmt 0 view .LVU143 + 514 0012 8361 str r3, [r0, #24] + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->BitOrder = LL_SPI_MSB_FIRST; + 515 .loc 1 310 3 is_stmt 1 view .LVU144 + 516 .loc 1 310 37 is_stmt 0 view .LVU145 + 517 0014 C361 str r3, [r0, #28] + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + 518 .loc 1 311 3 is_stmt 1 view .LVU146 + 519 .loc 1 311 37 is_stmt 0 view .LVU147 + 520 0016 0362 str r3, [r0, #32] + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_InitStruct->CRCPoly = 7U; + 521 .loc 1 312 3 is_stmt 1 view .LVU148 + 522 .loc 1 312 37 is_stmt 0 view .LVU149 + 523 0018 0723 movs r3, #7 + 524 001a 4362 str r3, [r0, #36] + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 525 .loc 1 313 1 view .LVU150 + 526 001c 7047 bx lr + 527 .cfi_endproc + 528 .LFE453: + 530 .section .text.LL_I2S_DeInit,"ax",%progbits + 531 .align 1 + 532 .global LL_I2S_DeInit + 533 .syntax unified + 534 .thumb + 535 .thumb_func + 536 .fpu fpv5-d16 + 538 LL_I2S_DeInit: + 539 .LVL40: + 540 .LFB454: + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @} + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @} + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @} + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @addtogroup I2S_LL + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Private types -------------------------------------------------------------*/ + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Private variables ---------------------------------------------------------*/ + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Private constants ---------------------------------------------------------*/ + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @defgroup I2S_LL_Private_Constants I2S Private Constants + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* I2S registers Masks */ + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define I2S_I2SCFGR_CLEAR_MASK (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | \ + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_I2SCFGR_CKPOL | SPI_I2SCFGR_I2SSTD | \ + ARM GAS /tmp/cc532wt1.s page 63 + + + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_I2SCFGR_I2SCFG | SPI_I2SCFGR_I2SMOD ) + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define I2S_I2SPR_CLEAR_MASK 0x0002U + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @} + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Private macros ------------------------------------------------------------*/ + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @defgroup I2S_LL_Private_Macros I2S Private Macros + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_I2S_DATAFORMAT(__VALUE__) (((__VALUE__) == LL_I2S_DATAFORMAT_16B) \ + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_DATAFORMAT_16B_EXTENDED) \ + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_DATAFORMAT_24B) \ + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_DATAFORMAT_32B)) + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_I2S_CPOL(__VALUE__) (((__VALUE__) == LL_I2S_POLARITY_LOW) \ + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_POLARITY_HIGH)) + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_I2S_STANDARD(__VALUE__) (((__VALUE__) == LL_I2S_STANDARD_PHILIPS) \ + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_STANDARD_MSB) \ + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_STANDARD_LSB) \ + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_STANDARD_PCM_SHORT) \ + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_STANDARD_PCM_LONG)) + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_I2S_MODE(__VALUE__) (((__VALUE__) == LL_I2S_MODE_SLAVE_TX) \ + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_MODE_SLAVE_RX) \ + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_MODE_MASTER_TX) \ + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_MODE_MASTER_RX)) + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_I2S_MCLK_OUTPUT(__VALUE__) (((__VALUE__) == LL_I2S_MCLK_OUTPUT_ENABLE) \ + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_MCLK_OUTPUT_DISABLE)) + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_I2S_AUDIO_FREQ(__VALUE__) ((((__VALUE__) >= LL_I2S_AUDIOFREQ_8K) \ + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** && ((__VALUE__) <= LL_I2S_AUDIOFREQ_192K)) \ + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_AUDIOFREQ_DEFAULT)) + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_I2S_PRESCALER_LINEAR(__VALUE__) ((__VALUE__) >= 0x2U) + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** #define IS_LL_I2S_PRESCALER_PARITY(__VALUE__) (((__VALUE__) == LL_I2S_PRESCALER_PARITY_EVEN) \ + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** || ((__VALUE__) == LL_I2S_PRESCALER_PARITY_ODD)) + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @} + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Private function prototypes -----------------------------------------------*/ + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Exported functions --------------------------------------------------------*/ + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @addtogroup I2S_LL_Exported_Functions + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** @addtogroup I2S_LL_EF_Init + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @{ + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + ARM GAS /tmp/cc532wt1.s page 64 + + + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @brief De-initialize the SPI/I2S registers to their default reset values. + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param SPIx SPI Instance + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @retval An ErrorStatus enumeration value: + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - SUCCESS: SPI registers are de-initialized + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - ERROR: SPI registers are not de-initialized + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ErrorStatus LL_I2S_DeInit(SPI_TypeDef *SPIx) + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 541 .loc 1 404 1 is_stmt 1 view -0 + 542 .cfi_startproc + 543 @ args = 0, pretend = 0, frame = 0 + 544 @ frame_needed = 0, uses_anonymous_args = 0 + 545 .loc 1 404 1 is_stmt 0 view .LVU152 + 546 0000 08B5 push {r3, lr} + 547 .LCFI4: + 548 .cfi_def_cfa_offset 8 + 549 .cfi_offset 3, -8 + 550 .cfi_offset 14, -4 + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** return LL_SPI_DeInit(SPIx); + 551 .loc 1 405 3 is_stmt 1 view .LVU153 + 552 .loc 1 405 10 is_stmt 0 view .LVU154 + 553 0002 FFF7FEFF bl LL_SPI_DeInit + 554 .LVL41: + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 555 .loc 1 406 1 view .LVU155 + 556 0006 08BD pop {r3, pc} + 557 .cfi_endproc + 558 .LFE454: + 560 .section .text.LL_I2S_Init,"ax",%progbits + 561 .align 1 + 562 .global LL_I2S_Init + 563 .syntax unified + 564 .thumb + 565 .thumb_func + 566 .fpu fpv5-d16 + 568 LL_I2S_Init: + 569 .LVL42: + 570 .LFB455: + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @brief Initializes the SPI/I2S registers according to the specified parameters in I2S_InitStru + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @note As some bits in SPI configuration registers can only be written when the SPI is disable + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * SPI peripheral should be in disabled state prior calling this function. Otherwise, ERRO + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param SPIx SPI Instance + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param I2S_InitStruct pointer to a @ref LL_I2S_InitTypeDef structure + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @retval An ErrorStatus enumeration value: + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - SUCCESS: SPI registers are Initialized + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - ERROR: SPI registers are not Initialized + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ErrorStatus LL_I2S_Init(SPI_TypeDef *SPIx, LL_I2S_InitTypeDef *I2S_InitStruct) + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 571 .loc 1 419 1 is_stmt 1 view -0 + 572 .cfi_startproc + 573 @ args = 0, pretend = 0, frame = 0 + 574 @ frame_needed = 0, uses_anonymous_args = 0 + 575 .loc 1 419 1 is_stmt 0 view .LVU157 + 576 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + ARM GAS /tmp/cc532wt1.s page 65 + + + 577 .LCFI5: + 578 .cfi_def_cfa_offset 24 + 579 .cfi_offset 3, -24 + 580 .cfi_offset 4, -20 + 581 .cfi_offset 5, -16 + 582 .cfi_offset 6, -12 + 583 .cfi_offset 7, -8 + 584 .cfi_offset 14, -4 + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** uint32_t i2sdiv = 2U; + 585 .loc 1 420 3 is_stmt 1 view .LVU158 + 586 .LVL43: + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** uint32_t i2sodd = 0U; + 587 .loc 1 421 3 view .LVU159 + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** uint32_t packetlength = 1U; + 588 .loc 1 422 3 view .LVU160 + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** uint32_t tmp; + 589 .loc 1 423 3 view .LVU161 + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** uint32_t sourceclock; + 590 .loc 1 424 3 view .LVU162 + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** ErrorStatus status = ERROR; + 591 .loc 1 425 3 view .LVU163 + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Check the I2S parameters */ + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_I2S_ALL_INSTANCE(SPIx)); + 592 .loc 1 428 3 view .LVU164 + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_I2S_MODE(I2S_InitStruct->Mode)); + 593 .loc 1 429 3 view .LVU165 + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_I2S_STANDARD(I2S_InitStruct->Standard)); + 594 .loc 1 430 3 view .LVU166 + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_I2S_DATAFORMAT(I2S_InitStruct->DataFormat)); + 595 .loc 1 431 3 view .LVU167 + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_I2S_MCLK_OUTPUT(I2S_InitStruct->MCLKOutput)); + 596 .loc 1 432 3 view .LVU168 + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_I2S_AUDIO_FREQ(I2S_InitStruct->AudioFreq)); + 597 .loc 1 433 3 view .LVU169 + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_I2S_CPOL(I2S_InitStruct->ClockPolarity)); + 598 .loc 1 434 3 view .LVU170 + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (LL_I2S_IsEnabled(SPIx) == 0x00000000U) + 599 .loc 1 436 3 view .LVU171 + 600 .LBB66: + 601 .LBI66: + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get polynomial for CRC calculation + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CRCPR CRCPOLY LL_SPI_GetCRCPolynomial + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetCRCPolynomial(SPI_TypeDef *SPIx) + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_REG(SPIx->CRCPR)); + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get Rx CRC + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll RXCRCR RXCRC LL_SPI_GetRxCRC + ARM GAS /tmp/cc532wt1.s page 66 + + + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetRxCRC(SPI_TypeDef *SPIx) + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_REG(SPIx->RXCRCR)); + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get Tx CRC + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll TXCRCR TXCRC LL_SPI_GetTxCRC + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetTxCRC(SPI_TypeDef *SPIx) + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_REG(SPIx->TXCRCR)); + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_NSS_Management Slave Select Pin Management + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set NSS mode + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note LL_SPI_NSS_SOFT Mode is not used in SPI TI mode. + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 SSM LL_SPI_SetNSSMode\n + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 SSOE LL_SPI_SetNSSMode + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param NSS This parameter can be one of the following values: + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_SOFT + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_HARD_INPUT + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_HARD_OUTPUT + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetNSSMode(SPI_TypeDef *SPIx, uint32_t NSS) + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR1, SPI_CR1_SSM, NSS); + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_SSOE, ((uint32_t)(NSS >> 16U))); + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get NSS mode + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR1 SSM LL_SPI_GetNSSMode\n + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 SSOE LL_SPI_GetNSSMode + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_SOFT + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_HARD_INPUT + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_NSS_HARD_OUTPUT + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetNSSMode(SPI_TypeDef *SPIx) + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + ARM GAS /tmp/cc532wt1.s page 67 + + + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t Ssm = (READ_BIT(SPIx->CR1, SPI_CR1_SSM)); + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t Ssoe = (READ_BIT(SPIx->CR2, SPI_CR2_SSOE) << 16U); + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (Ssm | Ssoe); + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable NSS pulse management + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. This bit is not used in S + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 NSSP LL_SPI_EnableNSSPulseMgt + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableNSSPulseMgt(SPI_TypeDef *SPIx) + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_NSSP); + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable NSS pulse management + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. This bit is not used in S + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 NSSP LL_SPI_DisableNSSPulseMgt + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableNSSPulseMgt(SPI_TypeDef *SPIx) + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_NSSP); + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if NSS pulse is enabled + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit should not be changed when communication is ongoing. This bit is not used in S + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 NSSP LL_SPI_IsEnabledNSSPulse + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledNSSPulse(SPI_TypeDef *SPIx) + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_NSSP) == (SPI_CR2_NSSP)) ? 1UL : 0UL); + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_FLAG_Management FLAG Management + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if Rx buffer is not empty + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR RXNE LL_SPI_IsActiveFlag_RXNE + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_RXNE(SPI_TypeDef *SPIx) + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + ARM GAS /tmp/cc532wt1.s page 68 + + + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_RXNE) == (SPI_SR_RXNE)) ? 1UL : 0UL); + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if Tx buffer is empty + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR TXE LL_SPI_IsActiveFlag_TXE + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_TXE(SPI_TypeDef *SPIx) + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_TXE) == (SPI_SR_TXE)) ? 1UL : 0UL); + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get CRC error flag + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR CRCERR LL_SPI_IsActiveFlag_CRCERR + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_CRCERR(SPI_TypeDef *SPIx) + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_CRCERR) == (SPI_SR_CRCERR)) ? 1UL : 0UL); + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get mode fault error flag + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR MODF LL_SPI_IsActiveFlag_MODF + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_MODF(SPI_TypeDef *SPIx) + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_MODF) == (SPI_SR_MODF)) ? 1UL : 0UL); + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get overrun error flag + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR OVR LL_SPI_IsActiveFlag_OVR + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_OVR(SPI_TypeDef *SPIx) + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_OVR) == (SPI_SR_OVR)) ? 1UL : 0UL); + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get busy flag + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note The BSY flag is cleared under any one of the following conditions: + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * -When the SPI is correctly disabled + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * -When a fault is detected in Master mode (MODF bit set to 1) + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * -In Master mode, when it finishes a data transmission and no new data is ready to be + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * sent + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * -In Slave mode, when the BSY flag is set to '0' for at least one SPI clock cycle between + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * each data transfer. + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR BSY LL_SPI_IsActiveFlag_BSY + ARM GAS /tmp/cc532wt1.s page 69 + + + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_BSY(SPI_TypeDef *SPIx) + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_BSY) == (SPI_SR_BSY)) ? 1UL : 0UL); + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get frame format error flag + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR FRE LL_SPI_IsActiveFlag_FRE + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_FRE(SPI_TypeDef *SPIx) + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->SR, SPI_SR_FRE) == (SPI_SR_FRE)) ? 1UL : 0UL); + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get FIFO reception Level + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR FRLVL LL_SPI_GetRxFIFOLevel + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_EMPTY + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_QUARTER_FULL + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_HALF_FULL + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_RX_FIFO_FULL + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetRxFIFOLevel(SPI_TypeDef *SPIx) + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->SR, SPI_SR_FRLVL)); + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get FIFO Transmission Level +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR FTLVL LL_SPI_GetTxFIFOLevel +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_TX_FIFO_EMPTY +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_TX_FIFO_QUARTER_FULL +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_TX_FIFO_HALF_FULL +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_TX_FIFO_FULL +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetTxFIFOLevel(SPI_TypeDef *SPIx) +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->SR, SPI_SR_FTLVL)); +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Clear CRC error flag +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR CRCERR LL_SPI_ClearFlag_CRCERR +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_ClearFlag_CRCERR(SPI_TypeDef *SPIx) +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { + ARM GAS /tmp/cc532wt1.s page 70 + + +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->SR, SPI_SR_CRCERR); +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Clear mode fault error flag +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note Clearing this flag is done by a read access to the SPIx_SR +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * register followed by a write access to the SPIx_CR1 register +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR MODF LL_SPI_ClearFlag_MODF +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_ClearFlag_MODF(SPI_TypeDef *SPIx) +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __IO uint32_t tmpreg_sr; +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** tmpreg_sr = SPIx->SR; +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** (void) tmpreg_sr; +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE); +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Clear overrun error flag +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note Clearing this flag is done by a read access to the SPIx_DR +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * register followed by a read access to the SPIx_SR register +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR OVR LL_SPI_ClearFlag_OVR +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_ClearFlag_OVR(SPI_TypeDef *SPIx) +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __IO uint32_t tmpreg; +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** tmpreg = SPIx->DR; +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** (void) tmpreg; +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** tmpreg = SPIx->SR; +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** (void) tmpreg; +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Clear frame format error flag +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note Clearing this flag is done by reading SPIx_SR register +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll SR FRE LL_SPI_ClearFlag_FRE +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_ClearFlag_FRE(SPI_TypeDef *SPIx) +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __IO uint32_t tmpreg; +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** tmpreg = SPIx->SR; +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** (void) tmpreg; +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_IT_Management Interrupt Management +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + ARM GAS /tmp/cc532wt1.s page 71 + + +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable error interrupt +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit controls the generation of an interrupt when an error condition occurs (CRCERR +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 ERRIE LL_SPI_EnableIT_ERR +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableIT_ERR(SPI_TypeDef *SPIx) +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_ERRIE); +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable Rx buffer not empty interrupt +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXNEIE LL_SPI_EnableIT_RXNE +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableIT_RXNE(SPI_TypeDef *SPIx) +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_RXNEIE); +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable Tx buffer empty interrupt +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXEIE LL_SPI_EnableIT_TXE +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableIT_TXE(SPI_TypeDef *SPIx) +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_TXEIE); +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable error interrupt +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @note This bit controls the generation of an interrupt when an error condition occurs (CRCERR +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 ERRIE LL_SPI_DisableIT_ERR +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableIT_ERR(SPI_TypeDef *SPIx) +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_ERRIE); +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable Rx buffer not empty interrupt +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXNEIE LL_SPI_DisableIT_RXNE +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableIT_RXNE(SPI_TypeDef *SPIx) +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_RXNEIE); +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } + ARM GAS /tmp/cc532wt1.s page 72 + + +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable Tx buffer empty interrupt +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXEIE LL_SPI_DisableIT_TXE +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableIT_TXE(SPI_TypeDef *SPIx) +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_TXEIE); +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if error interrupt is enabled +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 ERRIE LL_SPI_IsEnabledIT_ERR +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_ERR(SPI_TypeDef *SPIx) +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_ERRIE) == (SPI_CR2_ERRIE)) ? 1UL : 0UL); +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if Rx buffer not empty interrupt is enabled +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXNEIE LL_SPI_IsEnabledIT_RXNE +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_RXNE(SPI_TypeDef *SPIx) +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_RXNEIE) == (SPI_CR2_RXNEIE)) ? 1UL : 0UL); +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if Tx buffer empty interrupt +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXEIE LL_SPI_IsEnabledIT_TXE +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_TXE(SPI_TypeDef *SPIx) +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_TXEIE) == (SPI_CR2_TXEIE)) ? 1UL : 0UL); +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_DMA_Management DMA Management +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable DMA Rx +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXDMAEN LL_SPI_EnableDMAReq_RX +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance + ARM GAS /tmp/cc532wt1.s page 73 + + +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableDMAReq_RX(SPI_TypeDef *SPIx) +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_RXDMAEN); +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable DMA Rx +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXDMAEN LL_SPI_DisableDMAReq_RX +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableDMAReq_RX(SPI_TypeDef *SPIx) +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_RXDMAEN); +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if DMA Rx is enabled +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 RXDMAEN LL_SPI_IsEnabledDMAReq_RX +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_RX(SPI_TypeDef *SPIx) +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_RXDMAEN) == (SPI_CR2_RXDMAEN)) ? 1UL : 0UL); +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Enable DMA Tx +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXDMAEN LL_SPI_EnableDMAReq_TX +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_EnableDMAReq_TX(SPI_TypeDef *SPIx) +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->CR2, SPI_CR2_TXDMAEN); +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable DMA Tx +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXDMAEN LL_SPI_DisableDMAReq_TX +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_DisableDMAReq_TX(SPI_TypeDef *SPIx) +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->CR2, SPI_CR2_TXDMAEN); +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if DMA Tx is enabled +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 TXDMAEN LL_SPI_IsEnabledDMAReq_TX +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + ARM GAS /tmp/cc532wt1.s page 74 + + +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_TX(SPI_TypeDef *SPIx) +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->CR2, SPI_CR2_TXDMAEN) == (SPI_CR2_TXDMAEN)) ? 1UL : 0UL); +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set parity of Last DMA reception +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 LDMARX LL_SPI_SetDMAParity_RX +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param Parity This parameter can be one of the following values: +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_ODD +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_EVEN +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetDMAParity_RX(SPI_TypeDef *SPIx, uint32_t Parity) +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_LDMARX, (Parity << SPI_CR2_LDMARX_Pos)); +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get parity configuration for Last DMA reception +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 LDMARX LL_SPI_GetDMAParity_RX +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_ODD +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_EVEN +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetDMAParity_RX(SPI_TypeDef *SPIx) +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_LDMARX) >> SPI_CR2_LDMARX_Pos); +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Set parity of Last DMA transmission +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 LDMATX LL_SPI_SetDMAParity_TX +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param Parity This parameter can be one of the following values: +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_ODD +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_EVEN +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_SetDMAParity_TX(SPI_TypeDef *SPIx, uint32_t Parity) +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** MODIFY_REG(SPIx->CR2, SPI_CR2_LDMATX, (Parity << SPI_CR2_LDMATX_Pos)); +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get parity configuration for Last DMA transmission +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll CR2 LDMATX LL_SPI_GetDMAParity_TX +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Returned value can be one of the following values: +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_ODD +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @arg @ref LL_SPI_DMA_PARITY_EVEN +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_GetDMAParity_TX(SPI_TypeDef *SPIx) +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t)(READ_BIT(SPIx->CR2, SPI_CR2_LDMATX) >> SPI_CR2_LDMATX_Pos); + ARM GAS /tmp/cc532wt1.s page 75 + + +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Get the data register address used for DMA transfer +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll DR DR LL_SPI_DMA_GetRegAddr +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Address of data register +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_SPI_DMA_GetRegAddr(SPI_TypeDef *SPIx) +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint32_t) &(SPIx->DR); +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_DATA_Management DATA Management +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Read 8-Bits in the data register +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll DR DR LL_SPI_ReceiveData8 +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFF +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint8_t LL_SPI_ReceiveData8(SPI_TypeDef *SPIx) +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (*((__IO uint8_t *)&SPIx->DR)); +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Read 16-Bits in the data register +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll DR DR LL_SPI_ReceiveData16 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFFFF +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint16_t LL_SPI_ReceiveData16(SPI_TypeDef *SPIx) +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return (uint16_t)(READ_REG(SPIx->DR)); +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Write 8-Bits in the data register +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll DR DR LL_SPI_TransmitData8 +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param TxData Value between Min_Data=0x00 and Max_Data=0xFF +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_TransmitData8(SPI_TypeDef *SPIx, uint8_t TxData) +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined (__GNUC__) +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __IO uint8_t *spidr = ((__IO uint8_t *)&SPIx->DR); +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** *spidr = TxData; +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #else +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** *((__IO uint8_t *)&SPIx->DR) = TxData; + ARM GAS /tmp/cc532wt1.s page 76 + + +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif /* __GNUC__ */ +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Write 16-Bits in the data register +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll DR DR LL_SPI_TransmitData16 +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param TxData Value between Min_Data=0x00 and Max_Data=0xFFFF +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_SPI_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData) +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined (__GNUC__) +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __IO uint16_t *spidr = ((__IO uint16_t *)&SPIx->DR); +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** *spidr = TxData; +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #else +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SPIx->DR = TxData; +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif /* __GNUC__ */ +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined(USE_FULL_LL_DRIVER) +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EF_Init Initialization and de-initialization functions +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** ErrorStatus LL_SPI_DeInit(SPI_TypeDef *SPIx); +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** ErrorStatus LL_SPI_Init(SPI_TypeDef *SPIx, LL_SPI_InitTypeDef *SPI_InitStruct); +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct); +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif /* USE_FULL_LL_DRIVER */ +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL I2S +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Private variables ---------------------------------------------------------*/ +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Private constants ---------------------------------------------------------*/ +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Private macros ------------------------------------------------------------*/ +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported types ------------------------------------------------------------*/ +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined(USE_FULL_LL_DRIVER) +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_ES_INIT I2S Exported Init structure +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + ARM GAS /tmp/cc532wt1.s page 77 + + +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief I2S Init structure definition +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** typedef struct +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t Mode; /*!< Specifies the I2S operating mode. +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref I2S_LL_EC_MODE +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t Standard; /*!< Specifies the standard used for the I2S communication. +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref I2S_LL_EC_STANDARD +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t DataFormat; /*!< Specifies the data format for the I2S communication. +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref I2S_LL_EC_DATA_FORMA +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t MCLKOutput; /*!< Specifies whether the I2S MCLK output is enabled or not. +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref I2S_LL_EC_MCLK_OUTPU +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t AudioFreq; /*!< Specifies the frequency selected for the I2S communication +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref I2S_LL_EC_AUDIO_FREQ +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** Audio Frequency can be modified afterwards using Reference +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** and unitary functions @ref LL_I2S_SetPrescalerLinear() and +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** uint32_t ClockPolarity; /*!< Specifies the idle state of the I2S clock. +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This parameter can be a value of @ref I2S_LL_EC_POLARITY +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** This feature can be modified afterwards using unitary func +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } LL_I2S_InitTypeDef; +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif /*USE_FULL_LL_DRIVER*/ +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported constants --------------------------------------------------------*/ +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_Exported_Constants I2S Exported Constants +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_EC_GET_FLAG Get Flags Defines +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Flags defines which can be used with LL_I2S_ReadReg function +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ + ARM GAS /tmp/cc532wt1.s page 78 + + +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_SR_RXNE LL_SPI_SR_RXNE /*!< Rx buffer not empty flag +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_SR_TXE LL_SPI_SR_TXE /*!< Tx buffer empty flag +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_SR_BSY LL_SPI_SR_BSY /*!< Busy flag +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_SR_UDR SPI_SR_UDR /*!< Underrun flag +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_SR_OVR LL_SPI_SR_OVR /*!< Overrun flag +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_SR_FRE LL_SPI_SR_FRE /*!< TI mode frame format erro +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup SPI_LL_EC_IT IT Defines +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_CR2_RXNEIE LL_SPI_CR2_RXNEIE /*!< Rx buffer not empty inter +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_CR2_TXEIE LL_SPI_CR2_TXEIE /*!< Tx buffer empty interrupt +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_CR2_ERRIE LL_SPI_CR2_ERRIE /*!< Error interrupt enable +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_EC_DATA_FORMAT Data format +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_DATAFORMAT_16B 0x00000000U /*!< Data +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_DATAFORMAT_16B_EXTENDED (SPI_I2SCFGR_CHLEN) /*!< Data +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_DATAFORMAT_24B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0) /*!< Data +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_DATAFORMAT_32B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_1) /*!< Data +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_EC_POLARITY Clock Polarity +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_POLARITY_LOW 0x00000000U /*!< Clock steady state is low +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_POLARITY_HIGH (SPI_I2SCFGR_CKPOL) /*!< Clock steady state is hig +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_EC_STANDARD I2s Standard +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_STANDARD_PHILIPS 0x00000000U +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_STANDARD_MSB (SPI_I2SCFGR_I2SSTD_0) +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_STANDARD_LSB (SPI_I2SCFGR_I2SSTD_1) +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_STANDARD_PCM_SHORT (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1) +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_STANDARD_PCM_LONG (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1 | SPI_I2SCF +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_EC_MODE Operation Mode +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ + ARM GAS /tmp/cc532wt1.s page 79 + + +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_MODE_SLAVE_TX 0x00000000U /*!< Slave +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_MODE_SLAVE_RX (SPI_I2SCFGR_I2SCFG_0) /*!< Slave +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_MODE_MASTER_TX (SPI_I2SCFGR_I2SCFG_1) /*!< Maste +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_MODE_MASTER_RX (SPI_I2SCFGR_I2SCFG_0 | SPI_I2SCFGR_I2SCFG_1) /*!< Maste +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_EC_PRESCALER_FACTOR Prescaler Factor +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_PRESCALER_PARITY_EVEN 0x00000000U /*!< Odd factor: Real divider +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_PRESCALER_PARITY_ODD (SPI_I2SPR_ODD >> 8U) /*!< Odd factor: Real divider +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #if defined(USE_FULL_LL_DRIVER) +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_EC_MCLK_OUTPUT MCLK Output +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_MCLK_OUTPUT_DISABLE 0x00000000U /*!< Master clock output is di +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_MCLK_OUTPUT_ENABLE (SPI_I2SPR_MCKOE) /*!< Master clock output is en +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_EC_AUDIO_FREQ Audio Frequency +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_AUDIOFREQ_192K 192000U /*!< Audio Frequency configuration 192000 +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_AUDIOFREQ_96K 96000U /*!< Audio Frequency configuration 96000 +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_AUDIOFREQ_48K 48000U /*!< Audio Frequency configuration 48000 +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_AUDIOFREQ_44K 44100U /*!< Audio Frequency configuration 44100 +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_AUDIOFREQ_32K 32000U /*!< Audio Frequency configuration 32000 +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_AUDIOFREQ_22K 22050U /*!< Audio Frequency configuration 22050 +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_AUDIOFREQ_16K 16000U /*!< Audio Frequency configuration 16000 +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_AUDIOFREQ_11K 11025U /*!< Audio Frequency configuration 11025 +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_AUDIOFREQ_8K 8000U /*!< Audio Frequency configuration 8000 +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_AUDIOFREQ_DEFAULT 2U /*!< Audio Freq not specified. Register I2 +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #endif /* USE_FULL_LL_DRIVER */ +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported macro ------------------------------------------------------------*/ +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_Exported_Macros I2S Exported Macros +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_EM_WRITE_READ Common Write and read registers Macros + ARM GAS /tmp/cc532wt1.s page 80 + + +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Write a value in I2S register +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __INSTANCE__ I2S Instance +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __REG__ Register to be written +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __VALUE__ Value to be written in the register +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Read a value in I2S register +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __INSTANCE__ I2S Instance +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param __REG__ Register to be read +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval Register value +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** #define LL_I2S_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @} +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /* Exported functions --------------------------------------------------------*/ +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_Exported_Functions I2S Exported Functions +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** @defgroup I2S_LL_EF_Configuration Configuration +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @{ +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Select I2S mode and Enable I2S peripheral +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll I2SCFGR I2SMOD LL_I2S_Enable\n +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * I2SCFGR I2SE LL_I2S_Enable +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_I2S_Enable(SPI_TypeDef *SPIx) +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** SET_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE); +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Disable I2S peripheral +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll I2SCFGR I2SE LL_I2S_Disable +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval None +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE void LL_I2S_Disable(SPI_TypeDef *SPIx) + ARM GAS /tmp/cc532wt1.s page 81 + + +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE); +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** } +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** /** +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @brief Check if I2S peripheral is enabled +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @rmtoll I2SCFGR I2SE LL_I2S_IsEnabled +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @param SPIx SPI Instance +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** * @retval State of bit (1 or 0). +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** */ +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** __STATIC_INLINE uint32_t LL_I2S_IsEnabled(SPI_TypeDef *SPIx) + 602 .loc 3 1658 26 view .LVU172 + 603 .LBB67: +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** { +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h **** return ((READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SE) == (SPI_I2SCFGR_I2SE)) ? 1UL : 0UL); + 604 .loc 3 1660 3 view .LVU173 + 605 .loc 3 1660 12 is_stmt 0 view .LVU174 + 606 0002 C669 ldr r6, [r0, #28] + 607 .loc 3 1660 83 view .LVU175 + 608 0004 16F48066 ands r6, r6, #1024 + 609 0008 49D1 bne .L39 + 610 000a 0446 mov r4, r0 + 611 000c 0D46 mov r5, r1 + 612 .LVL44: + 613 .loc 3 1660 83 view .LVU176 + 614 .LBE67: + 615 .LBE66: + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /*---------------------------- SPIx I2SCFGR Configuration -------------------- + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * Configure SPIx I2SCFGR with parameters: + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - Mode: SPI_I2SCFGR_I2SCFG[1:0] bit + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - Standard: SPI_I2SCFGR_I2SSTD[1:0] and SPI_I2SCFGR_PCMSYNC bits + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - DataFormat: SPI_I2SCFGR_CHLEN and SPI_I2SCFGR_DATLEN bits + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - ClockPolarity: SPI_I2SCFGR_CKPOL bit + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Write to SPIx I2SCFGR */ + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** MODIFY_REG(SPIx->I2SCFGR, + 616 .loc 1 447 5 is_stmt 1 view .LVU177 + 617 000e C269 ldr r2, [r0, #28] + 618 0010 244B ldr r3, .L45 + 619 0012 1340 ands r3, r3, r2 + 620 0014 0A68 ldr r2, [r1] + 621 0016 4968 ldr r1, [r1, #4] + 622 .LVL45: + 623 .loc 1 447 5 is_stmt 0 view .LVU178 + 624 0018 0A43 orrs r2, r2, r1 + 625 001a A968 ldr r1, [r5, #8] + 626 001c 0A43 orrs r2, r2, r1 + 627 001e 6969 ldr r1, [r5, #20] + 628 0020 0A43 orrs r2, r2, r1 + 629 0022 1343 orrs r3, r3, r2 + 630 0024 43F40063 orr r3, r3, #2048 + 631 0028 C361 str r3, [r0, #28] + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** I2S_I2SCFGR_CLEAR_MASK, + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** I2S_InitStruct->Mode | I2S_InitStruct->Standard | + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** I2S_InitStruct->DataFormat | I2S_InitStruct->ClockPolarity | + ARM GAS /tmp/cc532wt1.s page 82 + + + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** SPI_I2SCFGR_I2SMOD); + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /*---------------------------- SPIx I2SPR Configuration ---------------------- + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * Configure SPIx I2SPR with parameters: + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - MCLKOutput: SPI_I2SPR_MCKOE bit + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * - AudioFreq: SPI_I2SPR_I2SDIV[7:0] and SPI_I2SPR_ODD bits + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* If the requested audio frequency is not the default, compute the prescaler (i2sodd, i2sdiv) + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * else, default values are used: i2sodd = 0U, i2sdiv = 2U. + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (I2S_InitStruct->AudioFreq != LL_I2S_AUDIOFREQ_DEFAULT) + 632 .loc 1 462 5 is_stmt 1 view .LVU179 + 633 .loc 1 462 23 is_stmt 0 view .LVU180 + 634 002a 2B69 ldr r3, [r5, #16] + 635 .loc 1 462 8 view .LVU181 + 636 002c 022B cmp r3, #2 + 637 002e 32D0 beq .L40 + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Check the frame length (For the Prescaler computing) + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * Default value: LL_I2S_DATAFORMAT_16B (packetlength = 1U). + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (I2S_InitStruct->DataFormat != LL_I2S_DATAFORMAT_16B) + 638 .loc 1 467 7 is_stmt 1 view .LVU182 + 639 .loc 1 467 25 is_stmt 0 view .LVU183 + 640 0030 AB68 ldr r3, [r5, #8] + 641 .loc 1 467 10 view .LVU184 + 642 0032 2BBB cbnz r3, .L41 + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** uint32_t tmp; + 643 .loc 1 422 12 view .LVU185 + 644 0034 0127 movs r7, #1 + 645 .L35: + 646 .LVL46: + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Packet length is 32 bits */ + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** packetlength = 2U; + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* If an external I2S clock has to be used, the specific define should be set + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** in the project configuration or in the stm32f7xx_ll_rcc.h file */ + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Get the I2S source clock value */ + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** sourceclock = LL_RCC_GetI2SClockFreq(LL_RCC_I2S1_CLKSOURCE); + 647 .loc 1 476 7 is_stmt 1 view .LVU186 + 648 .loc 1 476 21 is_stmt 0 view .LVU187 + 649 0036 4FF40000 mov r0, #8388608 + 650 .LVL47: + 651 .loc 1 476 21 view .LVU188 + 652 003a FFF7FEFF bl LL_RCC_GetI2SClockFreq + 653 .LVL48: + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Compute the Real divider depending on the MCLK output state with a floating point */ + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if (I2S_InitStruct->MCLKOutput == LL_I2S_MCLK_OUTPUT_ENABLE) + 654 .loc 1 479 7 is_stmt 1 view .LVU189 + 655 .loc 1 479 25 is_stmt 0 view .LVU190 + 656 003e EB68 ldr r3, [r5, #12] + 657 .loc 1 479 10 view .LVU191 + 658 0040 B3F5007F cmp r3, #512 + ARM GAS /tmp/cc532wt1.s page 83 + + + 659 0044 1ED0 beq .L44 + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* MCLK output is enabled */ + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** tmp = (((((sourceclock / 256U) * 10U) / I2S_InitStruct->AudioFreq)) + 5U); + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** else + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* MCLK output is disabled */ + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** tmp = (((((sourceclock / (32U * packetlength)) * 10U) / I2S_InitStruct->AudioFreq)) + 5U); + 660 .loc 1 487 9 is_stmt 1 view .LVU192 + 661 .loc 1 487 39 is_stmt 0 view .LVU193 + 662 0046 7F01 lsls r7, r7, #5 + 663 .LVL49: + 664 .loc 1 487 32 view .LVU194 + 665 0048 B0FBF7F0 udiv r0, r0, r7 + 666 .LVL50: + 667 .loc 1 487 56 view .LVU195 + 668 004c 00EB8000 add r0, r0, r0, lsl #2 + 669 0050 4300 lsls r3, r0, #1 + 670 .loc 1 487 79 view .LVU196 + 671 0052 2869 ldr r0, [r5, #16] + 672 .loc 1 487 63 view .LVU197 + 673 0054 B3FBF0F3 udiv r3, r3, r0 + 674 .loc 1 487 13 view .LVU198 + 675 0058 0533 adds r3, r3, #5 + 676 .LVL51: + 677 .L37: + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Remove the floating point */ + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** tmp = tmp / 10U; + 678 .loc 1 491 7 is_stmt 1 view .LVU199 + 679 .loc 1 491 11 is_stmt 0 view .LVU200 + 680 005a 134A ldr r2, .L45+4 + 681 005c A2FB0323 umull r2, r3, r2, r3 + 682 .LVL52: + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Check the parity of the divider */ + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** i2sodd = (tmp & (uint16_t)0x0001U); + 683 .loc 1 494 7 is_stmt 1 view .LVU201 + 684 .loc 1 494 14 is_stmt 0 view .LVU202 + 685 0060 C3F3C002 ubfx r2, r3, #3, #1 + 686 .LVL53: + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Compute the i2sdiv prescaler */ + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** i2sdiv = ((tmp - i2sodd) / 2U); + 687 .loc 1 497 7 is_stmt 1 view .LVU203 + 688 .loc 1 497 22 is_stmt 0 view .LVU204 + 689 0064 C2EBD303 rsb r3, r2, r3, lsr #3 + 690 .LVL54: + 691 .loc 1 497 14 view .LVU205 + 692 0068 5B08 lsrs r3, r3, #1 + 693 .LVL55: + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Get the Mask for the Odd bit (SPI_I2SPR[8]) register */ + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** i2sodd = (i2sodd << 8U); + 694 .loc 1 500 7 is_stmt 1 view .LVU206 + ARM GAS /tmp/cc532wt1.s page 84 + + + 695 .loc 1 500 14 is_stmt 0 view .LVU207 + 696 006a 1202 lsls r2, r2, #8 + 697 .LVL56: + 698 .L34: + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Test if the divider is 1 or 0 or greater than 0xFF */ + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** if ((i2sdiv < 2U) || (i2sdiv > 0xFFU)) + 699 .loc 1 504 5 is_stmt 1 view .LVU208 + 700 .loc 1 504 23 is_stmt 0 view .LVU209 + 701 006c 991E subs r1, r3, #2 + 702 .loc 1 504 8 view .LVU210 + 703 006e FD29 cmp r1, #253 + 704 0070 13D8 bhi .L42 + 705 0072 1646 mov r6, r2 + 706 .LVL57: + 707 .L38: + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Set the default values */ + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** i2sdiv = 2U; + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** i2sodd = 0U; + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Write to SPIx I2SPR register the computed value */ + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** WRITE_REG(SPIx->I2SPR, i2sdiv | i2sodd | I2S_InitStruct->MCLKOutput); + 708 .loc 1 512 5 is_stmt 1 view .LVU211 + 709 0074 3343 orrs r3, r3, r6 + 710 .LVL58: + 711 .loc 1 512 5 is_stmt 0 view .LVU212 + 712 0076 EA68 ldr r2, [r5, #12] + 713 0078 1343 orrs r3, r3, r2 + 714 007a 2362 str r3, [r4, #32] + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** status = SUCCESS; + 715 .loc 1 514 5 is_stmt 1 view .LVU213 + 716 .LVL59: + 717 .loc 1 514 12 is_stmt 0 view .LVU214 + 718 007c 0020 movs r0, #0 + 719 .LVL60: + 720 .L33: + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** return status; + 721 .loc 1 516 3 is_stmt 1 view .LVU215 + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 722 .loc 1 517 1 is_stmt 0 view .LVU216 + 723 007e F8BD pop {r3, r4, r5, r6, r7, pc} + 724 .LVL61: + 725 .L41: + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 726 .loc 1 470 22 view .LVU217 + 727 0080 0227 movs r7, #2 + 728 0082 D8E7 b .L35 + 729 .LVL62: + 730 .L44: + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 731 .loc 1 482 9 is_stmt 1 view .LVU218 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + ARM GAS /tmp/cc532wt1.s page 85 + + + 732 .loc 1 482 32 is_stmt 0 view .LVU219 + 733 0084 000A lsrs r0, r0, #8 + 734 .LVL63: + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 735 .loc 1 482 40 view .LVU220 + 736 0086 00EB8000 add r0, r0, r0, lsl #2 + 737 008a 4300 lsls r3, r0, #1 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 738 .loc 1 482 63 view .LVU221 + 739 008c 2869 ldr r0, [r5, #16] + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 740 .loc 1 482 47 view .LVU222 + 741 008e B3FBF0F3 udiv r3, r3, r0 + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 742 .loc 1 482 13 view .LVU223 + 743 0092 0533 adds r3, r3, #5 + 744 .LVL64: + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 745 .loc 1 482 13 view .LVU224 + 746 0094 E1E7 b .L37 + 747 .LVL65: + 748 .L40: + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** uint32_t packetlength = 1U; + 749 .loc 1 421 12 view .LVU225 + 750 0096 3246 mov r2, r6 + 751 0098 E8E7 b .L34 + 752 .LVL66: + 753 .L42: + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** i2sodd = 0U; + 754 .loc 1 507 14 view .LVU226 + 755 009a 0223 movs r3, #2 + 756 .LVL67: + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** i2sodd = 0U; + 757 .loc 1 507 14 view .LVU227 + 758 009c EAE7 b .L38 + 759 .LVL68: + 760 .L39: + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 761 .loc 1 425 15 view .LVU228 + 762 009e 0120 movs r0, #1 + 763 .LVL69: + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 764 .loc 1 425 15 view .LVU229 + 765 00a0 EDE7 b .L33 + 766 .L46: + 767 00a2 00BF .align 2 + 768 .L45: + 769 00a4 C0F4FFFF .word -2880 + 770 00a8 CDCCCCCC .word -858993459 + 771 .cfi_endproc + 772 .LFE455: + 774 .section .text.LL_I2S_StructInit,"ax",%progbits + 775 .align 1 + 776 .global LL_I2S_StructInit + 777 .syntax unified + 778 .thumb + 779 .thumb_func + ARM GAS /tmp/cc532wt1.s page 86 + + + 780 .fpu fpv5-d16 + 782 LL_I2S_StructInit: + 783 .LVL70: + 784 .LFB456: + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @brief Set each @ref LL_I2S_InitTypeDef field to default value. + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param I2S_InitStruct pointer to a @ref LL_I2S_InitTypeDef structure + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * whose fields will be set to default values. + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @retval None + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** void LL_I2S_StructInit(LL_I2S_InitTypeDef *I2S_InitStruct) + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 785 .loc 1 526 1 is_stmt 1 view -0 + 786 .cfi_startproc + 787 @ args = 0, pretend = 0, frame = 0 + 788 @ frame_needed = 0, uses_anonymous_args = 0 + 789 @ link register save eliminated. + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /*--------------- Reset I2S init structure parameters values -----------------*/ + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** I2S_InitStruct->Mode = LL_I2S_MODE_SLAVE_TX; + 790 .loc 1 528 3 view .LVU231 + 791 .loc 1 528 37 is_stmt 0 view .LVU232 + 792 0000 0023 movs r3, #0 + 793 0002 0360 str r3, [r0] + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** I2S_InitStruct->Standard = LL_I2S_STANDARD_PHILIPS; + 794 .loc 1 529 3 is_stmt 1 view .LVU233 + 795 .loc 1 529 37 is_stmt 0 view .LVU234 + 796 0004 4360 str r3, [r0, #4] + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** I2S_InitStruct->DataFormat = LL_I2S_DATAFORMAT_16B; + 797 .loc 1 530 3 is_stmt 1 view .LVU235 + 798 .loc 1 530 37 is_stmt 0 view .LVU236 + 799 0006 8360 str r3, [r0, #8] + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** I2S_InitStruct->MCLKOutput = LL_I2S_MCLK_OUTPUT_DISABLE; + 800 .loc 1 531 3 is_stmt 1 view .LVU237 + 801 .loc 1 531 37 is_stmt 0 view .LVU238 + 802 0008 C360 str r3, [r0, #12] + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** I2S_InitStruct->AudioFreq = LL_I2S_AUDIOFREQ_DEFAULT; + 803 .loc 1 532 3 is_stmt 1 view .LVU239 + 804 .loc 1 532 37 is_stmt 0 view .LVU240 + 805 000a 0222 movs r2, #2 + 806 000c 0261 str r2, [r0, #16] + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** I2S_InitStruct->ClockPolarity = LL_I2S_POLARITY_LOW; + 807 .loc 1 533 3 is_stmt 1 view .LVU241 + 808 .loc 1 533 37 is_stmt 0 view .LVU242 + 809 000e 4361 str r3, [r0, #20] + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 810 .loc 1 534 1 view .LVU243 + 811 0010 7047 bx lr + 812 .cfi_endproc + 813 .LFE456: + 815 .section .text.LL_I2S_ConfigPrescaler,"ax",%progbits + 816 .align 1 + 817 .global LL_I2S_ConfigPrescaler + 818 .syntax unified + 819 .thumb + 820 .thumb_func + 821 .fpu fpv5-d16 + ARM GAS /tmp/cc532wt1.s page 87 + + + 823 LL_I2S_ConfigPrescaler: + 824 .LVL71: + 825 .LFB457: + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /** + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @brief Set linear and parity prescaler. + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @note To calculate value of PrescalerLinear(I2SDIV[7:0] bits) and PrescalerParity(ODD bit)\n + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * Check Audio frequency table and formulas inside Reference Manual (SPI/I2S). + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param SPIx SPI Instance + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param PrescalerLinear value Min_Data=0x02 and Max_Data=0xFF. + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @param PrescalerParity This parameter can be one of the following values: + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @arg @ref LL_I2S_PRESCALER_PARITY_ODD + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** * @retval None + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** */ + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** void LL_I2S_ConfigPrescaler(SPI_TypeDef *SPIx, uint32_t PrescalerLinear, uint32_t PrescalerParity) + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** { + 826 .loc 1 548 1 is_stmt 1 view -0 + 827 .cfi_startproc + 828 @ args = 0, pretend = 0, frame = 0 + 829 @ frame_needed = 0, uses_anonymous_args = 0 + 830 @ link register save eliminated. + 831 .loc 1 548 1 is_stmt 0 view .LVU245 + 832 0000 10B4 push {r4} + 833 .LCFI6: + 834 .cfi_def_cfa_offset 4 + 835 .cfi_offset 4, -4 + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Check the I2S parameters */ + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_I2S_ALL_INSTANCE(SPIx)); + 836 .loc 1 550 3 is_stmt 1 view .LVU246 + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_I2S_PRESCALER_LINEAR(PrescalerLinear)); + 837 .loc 1 551 3 view .LVU247 + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** assert_param(IS_LL_I2S_PRESCALER_PARITY(PrescalerParity)); + 838 .loc 1 552 3 view .LVU248 + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** /* Write to SPIx I2SPR */ + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_I2SDIV | SPI_I2SPR_ODD, PrescalerLinear | (PrescalerParity << 8 + 839 .loc 1 555 3 view .LVU249 + 840 0002 046A ldr r4, [r0, #32] + 841 0004 044B ldr r3, .L50 + 842 0006 2340 ands r3, r3, r4 + 843 0008 41EA0221 orr r1, r1, r2, lsl #8 + 844 .LVL72: + 845 .loc 1 555 3 is_stmt 0 view .LVU250 + 846 000c 0B43 orrs r3, r3, r1 + 847 000e 0362 str r3, [r0, #32] + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_spi.c **** } + 848 .loc 1 556 1 view .LVU251 + 849 0010 5DF8044B ldr r4, [sp], #4 + 850 .LCFI7: + 851 .cfi_restore 4 + 852 .cfi_def_cfa_offset 0 + 853 0014 7047 bx lr + 854 .L51: + 855 0016 00BF .align 2 + 856 .L50: + 857 0018 00FEFFFF .word -512 + ARM GAS /tmp/cc532wt1.s page 88 + + + 858 .cfi_endproc + 859 .LFE457: + 861 .text + 862 .Letext0: + 863 .file 4 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 864 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 865 .file 6 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 866 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + ARM GAS /tmp/cc532wt1.s page 89 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_ll_spi.c + /tmp/cc532wt1.s:17 .text.LL_SPI_DeInit:0000000000000000 $t + /tmp/cc532wt1.s:25 .text.LL_SPI_DeInit:0000000000000000 LL_SPI_DeInit + /tmp/cc532wt1.s:292 .text.LL_SPI_DeInit:00000000000000b8 $d + /tmp/cc532wt1.s:303 .text.LL_SPI_Init:0000000000000000 $t + /tmp/cc532wt1.s:310 .text.LL_SPI_Init:0000000000000000 LL_SPI_Init + /tmp/cc532wt1.s:471 .text.LL_SPI_Init:0000000000000084 $d + /tmp/cc532wt1.s:477 .text.LL_SPI_StructInit:0000000000000000 $t + /tmp/cc532wt1.s:484 .text.LL_SPI_StructInit:0000000000000000 LL_SPI_StructInit + /tmp/cc532wt1.s:531 .text.LL_I2S_DeInit:0000000000000000 $t + /tmp/cc532wt1.s:538 .text.LL_I2S_DeInit:0000000000000000 LL_I2S_DeInit + /tmp/cc532wt1.s:561 .text.LL_I2S_Init:0000000000000000 $t + /tmp/cc532wt1.s:568 .text.LL_I2S_Init:0000000000000000 LL_I2S_Init + /tmp/cc532wt1.s:769 .text.LL_I2S_Init:00000000000000a4 $d + /tmp/cc532wt1.s:775 .text.LL_I2S_StructInit:0000000000000000 $t + /tmp/cc532wt1.s:782 .text.LL_I2S_StructInit:0000000000000000 LL_I2S_StructInit + /tmp/cc532wt1.s:816 .text.LL_I2S_ConfigPrescaler:0000000000000000 $t + /tmp/cc532wt1.s:823 .text.LL_I2S_ConfigPrescaler:0000000000000000 LL_I2S_ConfigPrescaler + /tmp/cc532wt1.s:857 .text.LL_I2S_ConfigPrescaler:0000000000000018 $d + +UNDEFINED SYMBOLS +LL_RCC_GetI2SClockFreq diff --git a/build/stm32f7xx_ll_spi.o b/build/stm32f7xx_ll_spi.o new file mode 100644 index 0000000..d004b39 Binary files /dev/null and b/build/stm32f7xx_ll_spi.o differ diff --git a/build/stm32f7xx_ll_tim.d b/build/stm32f7xx_ll_tim.d new file mode 100644 index 0000000..42a7842 --- /dev/null +++ b/build/stm32f7xx_ll_tim.d @@ -0,0 +1,68 @@ +build/stm32f7xx_ll_tim.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: diff --git a/build/stm32f7xx_ll_tim.lst b/build/stm32f7xx_ll_tim.lst new file mode 100644 index 0000000..4f5ac25 --- /dev/null +++ b/build/stm32f7xx_ll_tim.lst @@ -0,0 +1,11765 @@ +ARM GAS /tmp/ccI26Lsx.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_ll_tim.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.OC1Config,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 OC1Config: + 25 .LVL0: + 26 .LFB391: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @file stm32f7xx_ll_tim.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief TIM LL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(USE_FULL_LL_DRIVER) + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Includes ------------------------------------------------------------------*/ + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #include "stm32f7xx_ll_tim.h" + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #include "stm32f7xx_ll_bus.h" + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #ifdef USE_FULL_ASSERT + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #include "stm32_assert.h" + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #else + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define assert_param(expr) ((void)0U) + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* USE_FULL_ASSERT */ + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @{ + ARM GAS /tmp/ccI26Lsx.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined (TIM1) || defined (TIM8) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defi + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** @addtogroup TIM_LL + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Private constants ---------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Private macros ------------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** @addtogroup TIM_LL_Private_Macros + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @{ + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_COUNTERMODE(__VALUE__) (((__VALUE__) == LL_TIM_COUNTERMODE_UP) \ + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_COUNTERMODE_DOWN) \ + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_UP) \ + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_DOWN) \ + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_UP_DOWN)) + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_CLOCKDIVISION(__VALUE__) (((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV1) \ + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV2) \ + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV4)) + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_OCMODE(__VALUE__) (((__VALUE__) == LL_TIM_OCMODE_FROZEN) \ + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_ACTIVE) \ + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_INACTIVE) \ + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_TOGGLE) \ + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_FORCED_INACTIVE) \ + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_FORCED_ACTIVE) \ + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_PWM1) \ + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_PWM2) \ + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_RETRIG_OPM1) \ + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_RETRIG_OPM2) \ + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_COMBINED_PWM1) \ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_COMBINED_PWM2) \ + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_ASYMMETRIC_PWM1) \ + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCMODE_ASYMMETRIC_PWM2)) + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_OCSTATE(__VALUE__) (((__VALUE__) == LL_TIM_OCSTATE_DISABLE) \ + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCSTATE_ENABLE)) + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_OCPOLARITY(__VALUE__) (((__VALUE__) == LL_TIM_OCPOLARITY_HIGH) \ + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCPOLARITY_LOW)) + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_OCIDLESTATE(__VALUE__) (((__VALUE__) == LL_TIM_OCIDLESTATE_LOW) \ + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OCIDLESTATE_HIGH)) + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_ACTIVEINPUT(__VALUE__) (((__VALUE__) == LL_TIM_ACTIVEINPUT_DIRECTTI) \ + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_ACTIVEINPUT_INDIRECTTI) \ + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_ACTIVEINPUT_TRC)) + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_ICPSC(__VALUE__) (((__VALUE__) == LL_TIM_ICPSC_DIV1) \ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_ICPSC_DIV2) \ + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_ICPSC_DIV4) \ + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_ICPSC_DIV8)) + ARM GAS /tmp/ccI26Lsx.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_IC_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_IC_FILTER_FDIV1) \ + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N2) \ + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N4) \ + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N8) \ + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV2_N6) \ + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV2_N8) \ + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV4_N6) \ + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV4_N8) \ + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV8_N6) \ + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV8_N8) \ + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N5) \ + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N6) \ + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N8) \ + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N5) \ + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N6) \ + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N8)) + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_IC_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_IC_POLARITY_RISING) \ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_POLARITY_FALLING) \ + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_POLARITY_BOTHEDGE)) + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_ENCODERMODE(__VALUE__) (((__VALUE__) == LL_TIM_ENCODERMODE_X2_TI1) \ + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_ENCODERMODE_X2_TI2) \ + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_ENCODERMODE_X4_TI12)) + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_IC_POLARITY_ENCODER(__VALUE__) (((__VALUE__) == LL_TIM_IC_POLARITY_RISING) \ + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_IC_POLARITY_FALLING)) + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_OSSR_STATE(__VALUE__) (((__VALUE__) == LL_TIM_OSSR_DISABLE) \ + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OSSR_ENABLE)) + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_OSSI_STATE(__VALUE__) (((__VALUE__) == LL_TIM_OSSI_DISABLE) \ + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_OSSI_ENABLE)) + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_LOCK_LEVEL(__VALUE__) (((__VALUE__) == LL_TIM_LOCKLEVEL_OFF) \ + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_LOCKLEVEL_1) \ + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_LOCKLEVEL_2) \ + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_LOCKLEVEL_3)) + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_BREAK_STATE(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_DISABLE) \ + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_ENABLE)) + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_BREAK_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_POLARITY_LOW) \ + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_POLARITY_HIGH)) + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_BREAK_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1) \ + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1_N2) \ + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1_N4) \ + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV1_N8) \ + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV2_N6) \ + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV2_N8) \ + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV4_N6) \ + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV4_N8) \ + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV8_N6) \ + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV8_N8) \ + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV16_N5) \ + ARM GAS /tmp/ccI26Lsx.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV16_N6) \ + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV16_N8) \ + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV32_N5) \ + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV32_N6) \ + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK_FILTER_FDIV32_N8)) + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_BREAK2_STATE(__VALUE__) (((__VALUE__) == LL_TIM_BREAK2_DISABLE) \ + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_ENABLE)) + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_BREAK2_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_BREAK2_POLARITY_LOW) \ + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_POLARITY_HIGH)) + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_BREAK2_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1) \ + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1_N2) \ + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1_N4) \ + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV1_N8) \ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV2_N6) \ + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV2_N8) \ + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV4_N6) \ + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV4_N8) \ + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV8_N6) \ + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV8_N8) \ + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV16_N5) \ + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV16_N6) \ + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV16_N8) \ + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV32_N5) \ + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV32_N6) \ + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_BREAK2_FILTER_FDIV32_N8)) + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #define IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(__VALUE__) (((__VALUE__) == LL_TIM_AUTOMATICOUTPUT_DISABLE + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** || ((__VALUE__) == LL_TIM_AUTOMATICOUTPUT_ENAB + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @} + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Private function prototypes -----------------------------------------------*/ + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** @defgroup TIM_LL_Private_Functions TIM Private Functions + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @{ + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC1Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC2Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC3Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC4Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC5Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC6Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus IC1Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus IC2Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus IC3Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus IC4Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @} + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Exported functions --------------------------------------------------------*/ + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** @addtogroup TIM_LL_Exported_Functions + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @{ + ARM GAS /tmp/ccI26Lsx.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** @addtogroup TIM_LL_EF_Init + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @{ + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Set TIMx registers to their reset values. + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer instance + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: invalid TIMx instance + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus LL_TIM_DeInit(const TIM_TypeDef *TIMx) + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus result = SUCCESS; + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_INSTANCE(TIMx)); + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (TIMx == TIM1) + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM1); + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM1); + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM2) + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM2); + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM2); + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM3) + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM3) + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM3); + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM3); + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM3 */ + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM4) + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM4) + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM4); + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM4); + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM4 */ + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM5) + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM5) + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM5); + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM5); + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM5 */ + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM6) + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM6) + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM6); + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM6); + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + ARM GAS /tmp/ccI26Lsx.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM6 */ + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined (TIM7) + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM7) + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM7); + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM7); + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM7 */ + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM8) + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM8) + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM8); + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM8); + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM8 */ + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM9) + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM9) + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM9); + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM9); + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM9 */ + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM10) + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM10) + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM10); + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM10); + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM10 */ + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM11) + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM11) + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM11); + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM11); + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM11 */ + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM12) + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM12) + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM12); + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM12); + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM12 */ + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM13) + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM13) + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM13); + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM13); + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM13 */ + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #if defined(TIM14) + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else if (TIMx == TIM14) + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM14); + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM14); + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** #endif /* TIM14 */ + ARM GAS /tmp/ccI26Lsx.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** else + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = ERROR; + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return result; + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Set the fields of the time base unit configuration data structure + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * to their default values. + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_InitStruct pointer to a @ref LL_TIM_InitTypeDef structure (time base unit configura + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval None + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct) + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->Prescaler = (uint16_t)0x0000; + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->CounterMode = LL_TIM_COUNTERMODE_UP; + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->Autoreload = 0xFFFFFFFFU; + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->RepetitionCounter = 0x00000000U; + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx time base unit. + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_InitStruct pointer to a @ref LL_TIM_InitTypeDef structure + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * (TIMx time base unit configuration data structure) + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, const LL_TIM_InitTypeDef *TIM_InitStruct) + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpcr1; + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_INSTANCE(TIMx)); + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_COUNTERMODE(TIM_InitStruct->CounterMode)); + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_CLOCKDIVISION(TIM_InitStruct->ClockDivision)); + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpcr1 = LL_TIM_ReadReg(TIMx, CR1); + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Counter Mode */ + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpcr1, (TIM_CR1_DIR | TIM_CR1_CMS), TIM_InitStruct->CounterMode); + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the clock division */ + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpcr1, TIM_CR1_CKD, TIM_InitStruct->ClockDivision); + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CR1 */ + ARM GAS /tmp/ccI26Lsx.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CR1, tmpcr1); + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Autoreload value */ + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_SetAutoReload(TIMx, TIM_InitStruct->Autoreload); + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Prescaler value */ + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_SetPrescaler(TIMx, TIM_InitStruct->Prescaler); + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Repetition Counter value */ + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_SetRepetitionCounter(TIMx, TIM_InitStruct->RepetitionCounter); + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Generate an update event to reload the Prescaler + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** and the repetition counter value (if applicable) immediately */ + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_GenerateEvent_UPDATE(TIMx); + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Set the fields of the TIMx output channel configuration data + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * structure to their default values. + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * (the output channel configuration data structure) + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval None + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct) + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCMode = LL_TIM_OCMODE_FROZEN; + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCState = LL_TIM_OCSTATE_DISABLE; + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCNState = LL_TIM_OCSTATE_DISABLE; + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->CompareValue = 0x00000000U; + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCPolarity = LL_TIM_OCPOLARITY_HIGH; + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCNPolarity = LL_TIM_OCPOLARITY_HIGH; + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCIdleState = LL_TIM_OCIDLESTATE_LOW; + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCNIdleState = LL_TIM_OCIDLESTATE_LOW; + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx output channel. + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param Channel This parameter can be one of the following values: + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @arg @ref LL_TIM_CHANNEL_CH1 + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @arg @ref LL_TIM_CHANNEL_CH2 + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @arg @ref LL_TIM_CHANNEL_CH3 + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @arg @ref LL_TIM_CHANNEL_CH4 + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @arg @ref LL_TIM_CHANNEL_CH5 + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @arg @ref LL_TIM_CHANNEL_CH6 + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure (TIMx output channe + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * data structure) + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx output channel is initialized + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: TIMx output channel is not initialized + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + ARM GAS /tmp/ccI26Lsx.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_OC_InitTypeDef *TIM_OC + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus result = ERROR; + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** switch (Channel) + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH1: + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = OC1Config(TIMx, TIM_OC_InitStruct); + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH2: + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = OC2Config(TIMx, TIM_OC_InitStruct); + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH3: + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = OC3Config(TIMx, TIM_OC_InitStruct); + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH4: + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = OC4Config(TIMx, TIM_OC_InitStruct); + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH5: + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = OC5Config(TIMx, TIM_OC_InitStruct); + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH6: + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = OC6Config(TIMx, TIM_OC_InitStruct); + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** default: + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return result; + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Set the fields of the TIMx input channel configuration data + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * structure to their default values. + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_ICInitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (the input channel c + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * data structure) + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval None + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_ICInitStruct->ICPolarity = LL_TIM_IC_POLARITY_RISING; + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_ICInitStruct->ICActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_ICInitStruct->ICPrescaler = LL_TIM_ICPSC_DIV1; + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_ICInitStruct->ICFilter = LL_TIM_IC_FILTER_FDIV1; + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx input channel. + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param Channel This parameter can be one of the following values: + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @arg @ref LL_TIM_CHANNEL_CH1 + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @arg @ref LL_TIM_CHANNEL_CH2 + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @arg @ref LL_TIM_CHANNEL_CH3 + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @arg @ref LL_TIM_CHANNEL_CH4 + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_IC_InitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (TIMx input channel + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * structure) + ARM GAS /tmp/ccI26Lsx.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx output channel is initialized + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: TIMx output channel is not initialized + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_IC_InitTypeDef *TIM_IC + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus result = ERROR; + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** switch (Channel) + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH1: + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = IC1Config(TIMx, TIM_IC_InitStruct); + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH2: + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = IC2Config(TIMx, TIM_IC_InitStruct); + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH3: + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = IC3Config(TIMx, TIM_IC_InitStruct); + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH4: + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** result = IC4Config(TIMx, TIM_IC_InitStruct); + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** default: + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return result; + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Fills each TIM_EncoderInitStruct field with its default value + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (encoder i + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * configuration data structure) + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval None + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct) + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->EncoderMode = LL_TIM_ENCODERMODE_X2_TI1; + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING; + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2Polarity = LL_TIM_IC_POLARITY_RISING; + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2Prescaler = LL_TIM_ICPSC_DIV1; + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2Filter = LL_TIM_IC_FILTER_FDIV1; + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the encoder interface of the timer instance. + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (TIMx enco + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * configuration data structure) + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable + ARM GAS /tmp/ccI26Lsx.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, const LL_TIM_ENCODER_InitTypeDef *TIM_EncoderIni + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr1; + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccer; + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx)); + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ENCODERMODE(TIM_EncoderInitStruct->EncoderMode)); + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC1Polarity)); + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC1ActiveInput)); + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC1Prescaler)); + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC1Filter)); + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC2Polarity)); + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC2ActiveInput)); + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC2Prescaler)); + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC2Filter)); + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the CC1 and CC2: Reset the CC1E and CC2E Bits */ + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIMx->CCER &= (uint32_t)~(TIM_CCER_CC1E | TIM_CCER_CC2E); + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCMR1 register value */ + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCER register value */ + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer = LL_TIM_ReadReg(TIMx, CCER); + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Configure TI1 */ + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC); + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1ActiveInput >> 16U); + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Filter >> 16U); + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Prescaler >> 16U); + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Configure TI2 */ + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC2S | TIM_CCMR1_IC2F | TIM_CCMR1_IC2PSC); + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2ActiveInput >> 8U); + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Filter >> 8U); + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Prescaler >> 8U); + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set TI1 and TI2 polarity and enable TI1 and TI2 */ + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer &= (uint32_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP | TIM_CCER_CC2P | TIM_CCER_CC2NP); + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC1Polarity); + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC2Polarity << 4U); + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set encoder mode */ + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_SetEncoderMode(TIMx, TIM_EncoderInitStruct->EncoderMode); + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCMR1 */ + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCER */ + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCER, tmpccer); + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + ARM GAS /tmp/ccI26Lsx.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Set the fields of the TIMx Hall sensor interface configuration data + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * structure to their default values. + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (HAL + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * configuration data structure) + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval None + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct) + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_HallSensorInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING; + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_HallSensorInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_HallSensorInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_HallSensorInitStruct->CommutationDelay = 0U; + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the Hall sensor interface of the timer instance. + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note TIMx CH1, CH2 and CH3 inputs connected through a XOR + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * to the TI1 input channel + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note TIMx slave mode controller is configured in reset mode. + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** Selected internal trigger is TI1F_ED. + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note Channel 1 is configured as input, IC1 is mapped on TRC. + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note Captured value stored in TIMx_CCR1 correspond to the time elapsed + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * between 2 changes on the inputs. It gives information about motor speed. + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note Channel 2 is configured in output PWM 2 mode. + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note Compare value stored in TIMx_CCR2 corresponds to the commutation delay. + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note OC2REF is selected as trigger output on TRGO. + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note LL_TIM_IC_POLARITY_BOTHEDGE must not be used for TI1 when it is used + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * when TIMx operates in Hall sensor interface mode. + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (TIM + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * interface configuration data structure) + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, const LL_TIM_HALLSENSOR_InitTypeDef *TIM_Hall + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpcr2; + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr1; + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccer; + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpsmcr; + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(TIMx)); + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_HallSensorInitStruct->IC1Polarity)); + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ICPSC(TIM_HallSensorInitStruct->IC1Prescaler)); + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_FILTER(TIM_HallSensorInitStruct->IC1Filter)); + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the CC1 and CC2: Reset the CC1E and CC2E Bits */ + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIMx->CCER &= (uint32_t)~(TIM_CCER_CC1E | TIM_CCER_CC2E); + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CR2 register value */ + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCMR1 register value */ + ARM GAS /tmp/ccI26Lsx.s page 13 + + + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCER register value */ + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer = LL_TIM_ReadReg(TIMx, CCER); + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx SMCR register value */ + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpsmcr = LL_TIM_ReadReg(TIMx, SMCR); + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Connect TIMx_CH1, CH2 and CH3 pins to the TI1 input */ + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpcr2 |= TIM_CR2_TI1S; + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* OC2REF signal is used as trigger output (TRGO) */ + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpcr2 |= LL_TIM_TRGO_OC2REF; + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Configure the slave mode controller */ + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpsmcr &= (uint32_t)~(TIM_SMCR_TS | TIM_SMCR_SMS); + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpsmcr |= LL_TIM_TS_TI1F_ED; + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpsmcr |= LL_TIM_SLAVEMODE_RESET; + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Configure input channel 1 */ + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC); + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(LL_TIM_ACTIVEINPUT_TRC >> 16U); + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Filter >> 16U); + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Prescaler >> 16U); + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Configure input channel 2 */ + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 &= (uint32_t)~(TIM_CCMR1_OC2M | TIM_CCMR1_OC2FE | TIM_CCMR1_OC2PE | TIM_CCMR1_OC2CE); + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(LL_TIM_OCMODE_PWM2 << 8U); + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set Channel 1 polarity and enable Channel 1 and Channel2 */ + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer &= (uint32_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP | TIM_CCER_CC2P | TIM_CCER_CC2NP); + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_HallSensorInitStruct->IC1Polarity); + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CR2 */ + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx SMCR */ + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, SMCR, tmpsmcr); + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCMR1 */ + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCER */ + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCER, tmpccer); + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCR2 */ + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_OC_SetCompareCH2(TIMx, TIM_HallSensorInitStruct->CommutationDelay); + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Set the fields of the Break and Dead Time configuration data structure + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * to their default values. + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * data structure) + ARM GAS /tmp/ccI26Lsx.s page 14 + + + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval None + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct) + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->OSSRState = LL_TIM_OSSR_DISABLE; + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->OSSIState = LL_TIM_OSSI_DISABLE; + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->LockLevel = LL_TIM_LOCKLEVEL_OFF; + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->DeadTime = (uint8_t)0x00; + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->BreakState = LL_TIM_BREAK_DISABLE; + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->BreakPolarity = LL_TIM_BREAK_POLARITY_LOW; + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->BreakFilter = LL_TIM_BREAK_FILTER_FDIV1; + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->Break2State = LL_TIM_BREAK2_DISABLE; + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->Break2Polarity = LL_TIM_BREAK2_POLARITY_LOW; + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->Break2Filter = LL_TIM_BREAK2_FILTER_FDIV1; + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->AutomaticOutput = LL_TIM_AUTOMATICOUTPUT_DISABLE; + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the Break and Dead Time feature of the timer instance. + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note As the bits BK2P, BK2E, BK2F[3:0], BKF[3:0], AOE, BKP, BKE, OSSI, OSSR + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * and DTG[7:0] can be write-locked depending on the LOCK configuration, it + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * can be necessary to configure all of them during the first write access to + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * the TIMx_BDTR register. + 740:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + 741:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * a timer instance provides a break input. + 742:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not + 743:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * a timer instance provides a second break input. + 744:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance + 745:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead + 746:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * data structure) + 747:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: + 748:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: Break and Dead Time is initialized + 749:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable + 750:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 751:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, const LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct) + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpbdtr = 0; + 754:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 755:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_BREAK_INSTANCE(TIMx)); + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OSSR_STATE(TIM_BDTRInitStruct->OSSRState)); + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OSSI_STATE(TIM_BDTRInitStruct->OSSIState)); + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_LOCK_LEVEL(TIM_BDTRInitStruct->LockLevel)); + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK_STATE(TIM_BDTRInitStruct->BreakState)); + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK_POLARITY(TIM_BDTRInitStruct->BreakPolarity)); + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(TIM_BDTRInitStruct->AutomaticOutput)); + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK_FILTER(TIM_BDTRInitStruct->BreakFilter)); + 764:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 765:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State, + 766:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** the OSSI State, the dead time value and the Automatic Output Enable Bit */ + 767:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 768:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the BDTR bits */ + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, TIM_BDTRInitStruct->DeadTime); + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, TIM_BDTRInitStruct->LockLevel); + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, TIM_BDTRInitStruct->OSSIState); + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, TIM_BDTRInitStruct->OSSRState); + ARM GAS /tmp/ccI26Lsx.s page 15 + + + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, TIM_BDTRInitStruct->BreakState); + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, TIM_BDTRInitStruct->BreakPolarity); + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, TIM_BDTRInitStruct->AutomaticOutput); + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, TIM_BDTRInitStruct->BreakFilter); + 777:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (IS_TIM_BKIN2_INSTANCE(TIMx)) + 779:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK2_STATE(TIM_BDTRInitStruct->Break2State)); + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK2_POLARITY(TIM_BDTRInitStruct->Break2Polarity)); + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK2_FILTER(TIM_BDTRInitStruct->Break2Filter)); + 783:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 784:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the BREAK2 input related BDTR bit-fields */ + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2F, (TIM_BDTRInitStruct->Break2Filter)); + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, TIM_BDTRInitStruct->Break2State); + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, TIM_BDTRInitStruct->Break2Polarity); + 788:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 789:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 790:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set TIMx_BDTR */ + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, BDTR, tmpbdtr); + 792:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 795:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 796:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @} + 797:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 798:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 799:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 800:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @} + 801:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 802:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 803:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** @addtogroup TIM_LL_Private_Functions TIM Private Functions + 804:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Private functions + 805:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @{ + 806:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 807:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 808:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx output channel 1. + 809:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance + 810:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_OCInitStruct pointer to the the TIMx output channel 1 configuration data structure + 811:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: + 812:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized + 813:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable + 814:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 815:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC1Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) + 816:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 28 .loc 1 816 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 33 .loc 1 816 1 is_stmt 0 view .LVU1 + 34 0000 70B4 push {r4, r5, r6} + 35 .LCFI0: + 36 .cfi_def_cfa_offset 12 + 37 .cfi_offset 4, -12 + 38 .cfi_offset 5, -8 + 39 .cfi_offset 6, -4 + 817:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr1; + ARM GAS /tmp/ccI26Lsx.s page 16 + + + 40 .loc 1 817 3 is_stmt 1 view .LVU2 + 818:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccer; + 41 .loc 1 818 3 view .LVU3 + 819:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpcr2; + 42 .loc 1 819 3 view .LVU4 + 820:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 821:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ + 822:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + 43 .loc 1 822 3 view .LVU5 + 823:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + 44 .loc 1 823 3 view .LVU6 + 824:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + 45 .loc 1 824 3 view .LVU7 + 825:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + 46 .loc 1 825 3 view .LVU8 + 826:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 827:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the Channel 1: Reset the CC1E Bit */ + 828:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** CLEAR_BIT(TIMx->CCER, TIM_CCER_CC1E); + 47 .loc 1 828 3 view .LVU9 + 48 0002 036A ldr r3, [r0, #32] + 49 0004 23F00103 bic r3, r3, #1 + 50 0008 0362 str r3, [r0, #32] + 829:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 830:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCER register value */ + 831:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer = LL_TIM_ReadReg(TIMx, CCER); + 51 .loc 1 831 3 view .LVU10 + 52 .loc 1 831 11 is_stmt 0 view .LVU11 + 53 000a 036A ldr r3, [r0, #32] + 54 .LVL1: + 832:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 833:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CR2 register value */ + 834:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + 55 .loc 1 834 3 is_stmt 1 view .LVU12 + 56 .loc 1 834 10 is_stmt 0 view .LVU13 + 57 000c 4268 ldr r2, [r0, #4] + 58 .LVL2: + 835:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 836:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCMR1 register value */ + 837:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + 59 .loc 1 837 3 is_stmt 1 view .LVU14 + 60 .loc 1 837 12 is_stmt 0 view .LVU15 + 61 000e 8569 ldr r5, [r0, #24] + 62 .LVL3: + 838:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 839:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Reset Capture/Compare selection Bits */ + 840:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** CLEAR_BIT(tmpccmr1, TIM_CCMR1_CC1S); + 63 .loc 1 840 3 is_stmt 1 view .LVU16 + 841:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 842:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Compare Mode */ + 843:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccmr1, TIM_CCMR1_OC1M, TIM_OCInitStruct->OCMode); + 64 .loc 1 843 3 view .LVU17 + 65 0010 164C ldr r4, .L4 + 66 0012 2C40 ands r4, r4, r5 + 67 0014 0D68 ldr r5, [r1] + 68 .LVL4: + 69 .loc 1 843 3 is_stmt 0 view .LVU18 + 70 0016 2C43 orrs r4, r4, r5 + ARM GAS /tmp/ccI26Lsx.s page 17 + + + 71 .LVL5: + 844:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 845:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Compare Polarity */ + 846:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC1P, TIM_OCInitStruct->OCPolarity); + 72 .loc 1 846 3 is_stmt 1 view .LVU19 + 73 0018 23F00203 bic r3, r3, #2 + 74 .LVL6: + 75 .loc 1 846 3 is_stmt 0 view .LVU20 + 76 001c 0D69 ldr r5, [r1, #16] + 77 001e 2B43 orrs r3, r3, r5 + 78 .LVL7: + 847:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 848:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output State */ + 849:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC1E, TIM_OCInitStruct->OCState); + 79 .loc 1 849 3 is_stmt 1 view .LVU21 + 80 0020 23F00103 bic r3, r3, #1 + 81 .LVL8: + 82 .loc 1 849 3 is_stmt 0 view .LVU22 + 83 0024 4D68 ldr r5, [r1, #4] + 84 0026 2B43 orrs r3, r3, r5 + 85 .LVL9: + 850:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 851:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 86 .loc 1 851 3 is_stmt 1 view .LVU23 + 87 .loc 1 851 6 is_stmt 0 view .LVU24 + 88 0028 114E ldr r6, .L4+4 + 89 002a 124D ldr r5, .L4+8 + 90 002c A842 cmp r0, r5 + 91 002e 18BF it ne + 92 0030 B042 cmpne r0, r6 + 93 0032 12D1 bne .L2 + 852:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 853:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + 94 .loc 1 853 5 is_stmt 1 view .LVU25 + 854:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + 95 .loc 1 854 5 view .LVU26 + 855:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + 96 .loc 1 855 5 view .LVU27 + 856:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + 97 .loc 1 856 5 view .LVU28 + 857:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 858:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the complementary output Polarity */ + 859:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC1NP, TIM_OCInitStruct->OCNPolarity << 2U); + 98 .loc 1 859 5 view .LVU29 + 99 0034 23F00803 bic r3, r3, #8 + 100 .LVL10: + 101 .loc 1 859 5 is_stmt 0 view .LVU30 + 102 0038 4D69 ldr r5, [r1, #20] + 103 003a 43EA8503 orr r3, r3, r5, lsl #2 + 104 .LVL11: + 860:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 861:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the complementary output State */ + 862:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC1NE, TIM_OCInitStruct->OCNState << 2U); + 105 .loc 1 862 5 is_stmt 1 view .LVU31 + 106 003e 23F00403 bic r3, r3, #4 + 107 .LVL12: + 108 .loc 1 862 5 is_stmt 0 view .LVU32 + ARM GAS /tmp/ccI26Lsx.s page 18 + + + 109 0042 8D68 ldr r5, [r1, #8] + 110 .loc 1 862 5 view .LVU33 + 111 0044 43EA8503 orr r3, r3, r5, lsl #2 + 112 .LVL13: + 863:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 864:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Idle state */ + 865:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpcr2, TIM_CR2_OIS1, TIM_OCInitStruct->OCIdleState); + 113 .loc 1 865 5 is_stmt 1 view .LVU34 + 114 0048 22F48072 bic r2, r2, #256 + 115 .LVL14: + 116 .loc 1 865 5 is_stmt 0 view .LVU35 + 117 004c 8D69 ldr r5, [r1, #24] + 118 004e 2A43 orrs r2, r2, r5 + 119 .LVL15: + 866:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 867:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the complementary output Idle state */ + 868:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpcr2, TIM_CR2_OIS1N, TIM_OCInitStruct->OCNIdleState << 1U); + 120 .loc 1 868 5 is_stmt 1 view .LVU36 + 121 0050 22F40072 bic r2, r2, #512 + 122 .LVL16: + 123 .loc 1 868 5 is_stmt 0 view .LVU37 + 124 0054 CD69 ldr r5, [r1, #28] + 125 0056 42EA4502 orr r2, r2, r5, lsl #1 + 126 .LVL17: + 127 .L2: + 869:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 870:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 871:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CR2 */ + 872:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + 128 .loc 1 872 3 is_stmt 1 view .LVU38 + 129 005a 4260 str r2, [r0, #4] + 873:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 874:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCMR1 */ + 875:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + 130 .loc 1 875 3 view .LVU39 + 131 005c 8461 str r4, [r0, #24] + 876:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 877:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Capture Compare Register value */ + 878:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_OC_SetCompareCH1(TIMx, TIM_OCInitStruct->CompareValue); + 132 .loc 1 878 3 view .LVU40 + 133 005e CA68 ldr r2, [r1, #12] + 134 .LVL18: + 135 .LBB82: + 136 .LBI82: + 137 .file 2 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @file stm32f7xx_ll_tim.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Header file of TIM LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * This software is licensed under terms that can be found in the LICENSE file + ARM GAS /tmp/ccI26Lsx.s page 19 + + + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #ifndef __STM32F7xx_LL_TIM_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __STM32F7xx_LL_TIM_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined (TIM1) || defined (TIM8) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defi + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL TIM + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Private_Variables TIM Private Variables + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t OFFSET_TAB_CCMRx[] = + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 0: TIMx_CH1 */ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 1: TIMx_CH1N */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 2: TIMx_CH2 */ + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x00U, /* 3: TIMx_CH2N */ + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x04U, /* 4: TIMx_CH3 */ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x04U, /* 5: TIMx_CH3N */ + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x04U, /* 6: TIMx_CH4 */ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x3CU, /* 7: TIMx_CH5 */ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0x3CU /* 8: TIMx_CH6 */ + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_OCxx[] = + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: OC1M, OC1FE, OC1PE */ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 1: - NA */ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 2: OC2M, OC2FE, OC2PE */ + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 3: - NA */ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 4: OC3M, OC3FE, OC3PE */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 5: - NA */ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 6: OC4M, OC4FE, OC4PE */ + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 7: OC5M, OC5FE, OC5PE */ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U /* 8: OC6M, OC6FE, OC6PE */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + ARM GAS /tmp/ccI26Lsx.s page 20 + + + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_ICxx[] = + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: CC1S, IC1PSC, IC1F */ + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 1: - NA */ + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 2: CC2S, IC2PSC, IC2F */ + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 3: - NA */ + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 4: CC3S, IC3PSC, IC3F */ + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 5: - NA */ + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 6: CC4S, IC4PSC, IC4F */ + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 7: - NA */ + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U /* 8: - NA */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_CCxP[] = + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: CC1P */ + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 2U, /* 1: CC1NP */ + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 4U, /* 2: CC2P */ + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 6U, /* 3: CC2NP */ + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 4: CC3P */ + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 10U, /* 5: CC3NP */ + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 12U, /* 6: CC4P */ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 16U, /* 7: CC5P */ + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 20U /* 8: CC6P */ + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** static const uint8_t SHIFT_TAB_OISx[] = + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U, /* 0: OIS1 */ + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 1U, /* 1: OIS1N */ + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 2U, /* 2: OIS2 */ + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 3U, /* 3: OIS2N */ + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 4U, /* 4: OIS3 */ + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 5U, /* 5: OIS3N */ + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 6U, /* 6: OIS4 */ + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 8U, /* 7: OIS5 */ + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 10U /* 8: OIS6 */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** }; + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private constants ---------------------------------------------------------*/ + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Private_Constants TIM Private Constants + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(TIM_BREAK_INPUT_SUPPORT) + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Defines used for the bit position in the register and perform offsets */ + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM_POSITION_BRK_SOURCE (POSITION_VAL(Source) & 0x1FUL) + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Generic bit definitions for TIMx_AF1 register */ + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIMx_AF1_BKINP TIM1_AF1_BKINP /*!< BRK BKIN input polarity */ + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* TIM_BREAK_INPUT_SUPPORT */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Remap mask definitions */ + ARM GAS /tmp/ccI26Lsx.s page 21 + + + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIMx_OR_RMP_SHIFT 16U + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIMx_OR_RMP_MASK 0x0000FFFFU + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM2_OR_RMP_MASK (TIM2_OR_ITR1_RMP << TIMx_OR_RMP_SHIFT) + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM5_OR_RMP_MASK (TIM5_OR_TI4_RMP << TIMx_OR_RMP_SHIFT) + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM11_OR_RMP_MASK (TIM11_OR_TI1_RMP << TIMx_OR_RMP_SHIFT) + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */ + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_1 ((uint8_t)0x7F) + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_2 ((uint8_t)0x3F) + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_3 ((uint8_t)0x1F) + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_DELAY_4 ((uint8_t)0x1F) + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */ + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_1 ((uint8_t)0x00) + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_2 ((uint8_t)0x80) + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_3 ((uint8_t)0xC0) + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define DT_RANGE_4 ((uint8_t)0xE0) + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Private macros ------------------------------------------------------------*/ + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Private_Macros TIM Private Macros + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @brief Convert channel id into channel index. + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CHANNEL__ This parameter can be one of the following values: + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval none + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \ + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\ + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\ + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\ + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\ + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\ + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U :\ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH4) ? 6U :\ + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CHANNEL__) == LL_TIM_CHANNEL_CH5) ? 7U : 8U) + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @brief Calculate the deadtime sampling period(in ps). + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz). + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CKD__ This parameter can be one of the following values: + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval none + ARM GAS /tmp/ccI26Lsx.s page 22 + + + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define TIM_CALC_DTS(__TIMCLK__, __CKD__) \ + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__)) : \ + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \ + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U))) + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Exported types ------------------------------------------------------------*/ + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(USE_FULL_LL_DRIVER) + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_ES_INIT TIM Exported Init structure + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Time Base configuration structure definition. + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint16_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data=0x0000 and Max_D + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetPrescaler().*/ + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t CounterMode; /*!< Specifies the counter mode. + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE. + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetCounterMode().*/ + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Autoreload; /*!< Specifies the auto reload value to be loaded into the active + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Auto-Reload Register at the next update event. + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter must be a number between Min_Data=0x0000 and Max_ + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Some timer instances may support 32 bits counters. In that case + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** be a number between 0x0000 and 0xFFFFFFFF. + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetAutoReload().*/ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ClockDivision; /*!< Specifies the clock division. + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION. + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetClockDivision().*/ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downc + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** reaches zero, an update event is generated and counting restarts + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** from the RCR value (N). + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This means in PWM mode that (N+1) corresponds to: + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** - the number of PWM periods in edge-aligned mode + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** - the number of half PWM period in center-aligned mode + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** GP timers: this parameter must be a number between Min_Data = 0x + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Max_Data = 0xFF. + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Advanced timers: this parameter must be a number between Min_Dat + ARM GAS /tmp/ccI26Lsx.s page 23 + + + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Max_Data = 0xFFFF. + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetRepetitionCounter().*/ + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_InitTypeDef; + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Output Compare configuration structure definition. + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCMode; /*!< Specifies the output mode. + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCMODE. + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetMode().*/ + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCState; /*!< Specifies the TIM Output Compare state. + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functions + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCNState; /*!< Specifies the TIM complementary Output Compare state. + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functions + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t CompareValue; /*!< Specifies the Compare value to be loaded into the Capture Compare Re + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data=0x0000 and Max_Data= + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** LL_TIM_OC_SetCompareCHx (x=1..6).*/ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCPolarity; /*!< Specifies the output polarity. + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetPolarity().*/ + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetPolarity().*/ + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetIdleState().*/ + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccI26Lsx.s page 24 + + + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetIdleState().*/ + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_OC_InitTypeDef; + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Input Capture configuration structure definition. + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICActiveInput; /*!< Specifies the input. + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetActiveInput().*/ + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ICFilter; /*!< Specifies the input capture filter. + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_IC_InitTypeDef; + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Encoder interface configuration structure definition. + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t EncoderMode; /*!< Specifies the encoder resolution (x2 or x4). + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE. + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetEncoderMode().*/ + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1ActiveInput; /*!< Specifies the TI1 input source + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccI26Lsx.s page 25 + + + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetActiveInput().*/ + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2Polarity; /*!< Specifies the active edge of TI2 input. + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2ActiveInput; /*!< Specifies the TI2 input source + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetActiveInput().*/ + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2Prescaler; /*!< Specifies the TI2 input prescaler value. + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC2Filter; /*!< Specifies the TI2 input filter. + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_ENCODER_InitTypeDef; + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief TIM Hall sensor interface configuration structure definition. + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPolarity().*/ + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** Prescaler must be set to get a maximum counter period longer th + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** time interval between 2 consecutive changes on the Hall inputs. + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_ICPSC. + ARM GAS /tmp/ccI26Lsx.s page 26 + + + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetPrescaler().*/ + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref TIM_LL_EC_IC_FILTER. + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_IC_SetFilter().*/ + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t CommutationDelay; /*!< Specifies the compare value to be loaded into the Capture Compa + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** A positive pulse (TRGO event) is generated with a programmable + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** a change occurs on the Hall inputs. + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data = 0x0000 and Ma + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary function + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetCompareCH2().*/ + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_HALLSENSOR_InitTypeDef; + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief BDTR (Break and Dead Time) structure definition + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** typedef struct + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OSSRState; /*!< Specifies the Off-State selection used in Run mode. + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OSSR + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetOffStates() + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field cannot be modified as long as LOCK level + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t OSSIState; /*!< Specifies the Off-State used in Idle state. + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_OSSI + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_SetOffStates() + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field cannot be modified as long as LOCK level + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t LockLevel; /*!< Specifies the LOCK level parameters. + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note The LOCK bits can be written only once after the reset. + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** register has been written, their content is frozen until the + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t DeadTime; /*!< Specifies the delay time between the switching-off and the + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** switching-on of the outputs. + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a number between Min_Data = 0x00 and Ma + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_OC_SetDeadTime() + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + ARM GAS /tmp/ccI26Lsx.s page 27 + + + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint16_t BreakState; /*!< Specifies whether the TIM Break input is enabled or not. + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK() + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARIT + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK() + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t BreakFilter; /*!< Specifies the TIM Break Filter. + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK_FILTER + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK() + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Break2State; /*!< Specifies whether the TIM Break2 input is enabled or not. + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK2_ENABLE + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_EnableBRK2() or @ref LL_TIM_DisableBRK2() + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Break2Polarity; /*!< Specifies the TIM Break2 Input pin polarity. + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK2_POLARI + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK2() + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Break2Filter; /*!< Specifies the TIM Break2 Filter. + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_BREAK2_FILTER + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_ConfigBRK2() + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled + ARM GAS /tmp/ccI26Lsx.s page 28 + + + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTP + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** This feature can be modified afterwards using unitary functio + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAut + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @note This bit-field can not be modified as long as LOCK leve + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** programmed. */ + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } LL_TIM_BDTR_InitTypeDef; + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* USE_FULL_LL_DRIVER */ + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Exported constants --------------------------------------------------------*/ + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Exported_Constants TIM Exported Constants + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Flags defines which can be used with LL_TIM_ReadReg function. + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_UIF TIM_SR_UIF /*!< Update interrupt flag */ + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC1IF TIM_SR_CC1IF /*!< Capture/compare 1 interrup + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC2IF TIM_SR_CC2IF /*!< Capture/compare 2 interrup + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC3IF TIM_SR_CC3IF /*!< Capture/compare 3 interrup + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC4IF TIM_SR_CC4IF /*!< Capture/compare 4 interrup + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC5IF TIM_SR_CC5IF /*!< Capture/compare 5 interrup + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC6IF TIM_SR_CC6IF /*!< Capture/compare 6 interrup + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_COMIF TIM_SR_COMIF /*!< COM interrupt flag */ + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_TIF TIM_SR_TIF /*!< Trigger interrupt flag */ + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_BIF TIM_SR_BIF /*!< Break interrupt flag */ + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_B2IF TIM_SR_B2IF /*!< Second break interrupt fla + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC1OF TIM_SR_CC1OF /*!< Capture/Compare 1 overcapt + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC2OF TIM_SR_CC2OF /*!< Capture/Compare 2 overcapt + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC3OF TIM_SR_CC3OF /*!< Capture/Compare 3 overcapt + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_CC4OF TIM_SR_CC4OF /*!< Capture/Compare 4 overcapt + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_SR_SBIF TIM_SR_SBIF /*!< System Break interrupt fla + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(USE_FULL_LL_DRIVER) + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_BREAK_ENABLE Break Enable + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK_DISABLE 0x00000000U /*!< Break function disabled */ + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break function enabled */ + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_BREAK2_ENABLE Break2 Enable + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK2_DISABLE 0x00000000U /*!< Break2 function disabled */ + ARM GAS /tmp/ccI26Lsx.s page 29 + + + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_BREAK2_ENABLE TIM_BDTR_BK2E /*!< Break2 function enabled */ + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_AUTOMATICOUTPUT_ENABLE Automatic output enable + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by softw + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* USE_FULL_LL_DRIVER */ + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_IT IT Defines + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief IT defines which can be used with LL_TIM_ReadReg and LL_TIM_WriteReg functions. + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_UIE TIM_DIER_UIE /*!< Update interrupt enable */ + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC1IE TIM_DIER_CC1IE /*!< Capture/compare 1 interrup + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC2IE TIM_DIER_CC2IE /*!< Capture/compare 2 interrup + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC3IE TIM_DIER_CC3IE /*!< Capture/compare 3 interrup + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_CC4IE TIM_DIER_CC4IE /*!< Capture/compare 4 interrup + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_COMIE TIM_DIER_COMIE /*!< COM interrupt enable */ + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_TIE TIM_DIER_TIE /*!< Trigger interrupt enable * + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_DIER_BIE TIM_DIER_BIE /*!< Break interrupt enable */ + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_UPDATESOURCE Update Source + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_UPDATESOURCE_REGULAR 0x00000000U /*!< Counter overflow/underflow + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_UPDATESOURCE_COUNTER TIM_CR1_URS /*!< Only counter overflow/unde + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_ONEPULSEMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_ONEPULSEMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_UP 0x00000000U /*!< Counter used as upcounter + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_DOWN TIM_CR1_DIR /*!< Counter used as downcounte + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_CENTER_DOWN TIM_CR1_CMS_0 /*!< The counter counts up and + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_CENTER_UP TIM_CR1_CMS_1 /*!< The counter counts up and + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERMODE_CENTER_UP_DOWN TIM_CR1_CMS /*!< The counter counts up and + ARM GAS /tmp/ccI26Lsx.s page 30 + + + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CLOCKDIVISION Clock Division + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CLOCKDIVISION_DIV1 0x00000000U /*!< tDTS=tCK_INT */ + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CLOCKDIVISION_DIV2 TIM_CR1_CKD_0 /*!< tDTS=2*tCK_INT */ + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CLOCKDIVISION_DIV4 TIM_CR1_CKD_1 /*!< tDTS=4*tCK_INT */ + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_COUNTERDIRECTION Counter Direction + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERDIRECTION_UP 0x00000000U /*!< Timer counter counts up */ + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_COUNTERDIRECTION_DOWN TIM_CR1_DIR /*!< Timer counter counts down + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CCUPDATESOURCE Capture Compare Update Source + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCUPDATESOURCE_COMG_ONLY 0x00000000U /*!< Capture/compare control bi + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI TIM_CR2_CCUS /*!< Capture/compare control bi + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CCDMAREQUEST Capture Compare DMA Request + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCDMAREQUEST_CC 0x00000000U /*!< CCx DMA request sent when + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CCDMAREQUEST_UPDATE TIM_CR2_CCDS /*!< CCx DMA requests sent when + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_LOCKLEVEL Lock Level + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_OFF 0x00000000U /*!< LOCK OFF - No bit is write + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_1 TIM_BDTR_LOCK_0 /*!< LOCK Level 1 */ + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_2 TIM_BDTR_LOCK_1 /*!< LOCK Level 2 */ + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_LOCKLEVEL_3 TIM_BDTR_LOCK /*!< LOCK Level 3 */ + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_CHANNEL Channel + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH1 TIM_CCER_CC1E /*!< Timer input/output channel 1 + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH1N TIM_CCER_CC1NE /*!< Timer complementary output ch + ARM GAS /tmp/ccI26Lsx.s page 31 + + + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH2 TIM_CCER_CC2E /*!< Timer input/output channel 2 + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH2N TIM_CCER_CC2NE /*!< Timer complementary output ch + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH3 TIM_CCER_CC3E /*!< Timer input/output channel 3 + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH3N TIM_CCER_CC3NE /*!< Timer complementary output ch + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH4 TIM_CCER_CC4E /*!< Timer input/output channel 4 + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH5 TIM_CCER_CC5E /*!< Timer output channel 5 */ + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_CHANNEL_CH6 TIM_CCER_CC6E /*!< Timer output channel 6 */ + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(USE_FULL_LL_DRIVER) + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCSTATE Output Configuration State + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCSTATE_DISABLE 0x00000000U /*!< OCx is not active */ + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCSTATE_ENABLE TIM_CCER_CC1E /*!< OCx signal is output on + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* USE_FULL_LL_DRIVER */ + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** Legacy definitions for compatibility purpose + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @cond 0 + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASSYMETRIC_PWM1 LL_TIM_OCMODE_ASYMMETRIC_PWM1 + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASSYMETRIC_PWM2 LL_TIM_OCMODE_ASYMMETRIC_PWM2 + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** @endcond + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCMODE Output Configuration Mode + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_FROZEN 0x00000000U + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ACTIVE TIM_CCMR1_OC1M_0 + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_INACTIVE TIM_CCMR1_OC1M_1 + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_TOGGLE (TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_FORCED_INACTIVE TIM_CCMR1_OC1M_2 + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_FORCED_ACTIVE (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0) + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_PWM1 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1) + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1 + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_RETRIG_OPM1 TIM_CCMR1_OC1M_3 + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_RETRIG_OPM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0) + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_COMBINED_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_2) + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_COMBINED_PWM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC1 + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASYMMETRIC_PWM1 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1 + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCMODE_ASYMMETRIC_PWM2 (TIM_CCMR1_OC1M_3 | TIM_CCMR1_OC1M) + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCPOLARITY Output Configuration Polarity + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCPOLARITY_HIGH 0x00000000U /*!< OCxactive high*/ + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< OCxactive low*/ + ARM GAS /tmp/ccI26Lsx.s page 32 + + + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EC_OCIDLESTATE Output Configuration Idle State + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_OCIDLESTATE_LOW 0x00000000U /*!__REG__, (__VAL +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Read a value in TIM register. +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __INSTANCE__ TIM Instance +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __REG__ Register to be read +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Register value +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__) +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro retrieving the UIFCPY flag from the counter value. +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_GETFLAG_UIFCPY (@ref LL_TIM_GetCounter ()); +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Relevant only if UIF flag remapping has been enabled (UIF status bit is copied +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * to TIMx_CNT register bit 31) +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CNT__ Counter value +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval UIF status bit +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_GETFLAG_UIFCPY(__CNT__) \ +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (READ_BIT((__CNT__), TIM_CNT_UIFCPY) >> TIM_CNT_UIFCPY_Pos) +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested de + ARM GAS /tmp/ccI26Lsx.s page 40 + + +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120); +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CKD__ This parameter can be one of the following values: +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __DT__ deadtime duration (in ns) +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval DTG[0:7] +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__) \ +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__))) & DT_DELAY_1) : +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__C +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMC +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__C +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMC +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__ +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMC +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** 0U) +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the prescaler value to achieve the required counter clock freq +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000); +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __CNTCLK__ counter clock frequency (in Hz) +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Prescaler value (between Min_Data=0 and Max_Data=65535) +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__) \ +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)((((__TIMCLK__) + (__CNTCLK__)/2U)/(__CNTCLK__)) - 1U +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the auto-reload value to achieve the required output signal fr +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000); +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PSC__ prescaler +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __FREQ__ output signal frequency (in Hz) +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \ +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U)) +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the compare value required to achieve the required timer outpu +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * active/inactive delay. +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10); +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PSC__ prescaler +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __DELAY__ timer output compare active/inactive delay (in us) +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Compare value (between Min_Data=0 and Max_Data=65535) +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__) \ +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \ +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U)))) +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccI26Lsx.s page 41 + + +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro calculating the auto-reload value to achieve the required pulse duration +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (when the timer operates in one pulse mode). +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20); +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __TIMCLK__ timer input clock frequency (in Hz) +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PSC__ prescaler +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __DELAY__ timer output compare active/inactive delay (in us) +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __PULSE__ pulse duration (in us) +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__) \ +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \ +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__)))) +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief HELPER macro retrieving the ratio of the input capture prescaler +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ()); +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param __ICPSC__ This parameter can be one of the following values: +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV2 +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV4 +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV8 +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Input capture prescaler ratio (1, 2, 4 or 8) +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__) \ +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos))) +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /* Exported functions --------------------------------------------------------*/ +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_Exported_Functions TIM Exported Functions +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Time_Base Time Base configuration +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable timer counter. +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CEN LL_TIM_EnableCounter +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx) +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_CEN); +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable timer counter. +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CEN LL_TIM_DisableCounter +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/ccI26Lsx.s page 42 + + +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx) +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN); +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the timer counter is enabled. +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CEN LL_TIM_IsEnabledCounter +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(const TIM_TypeDef *TIMx) +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL); +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable update event generation. +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UDIS LL_TIM_EnableUpdateEvent +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx) +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS); +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable update event generation. +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UDIS LL_TIM_DisableUpdateEvent +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx) +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_UDIS); +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether update event generation is enabled. +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UDIS LL_TIM_IsEnabledUpdateEvent +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Inverted state of bit (0 or 1). +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(const TIM_TypeDef *TIMx) +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL); +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set update event source +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * generate an update interrupt or DMA request if enabled: +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * - Counter overflow/underflow +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * - Setting the UG bit +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * - Update generation through the slave mode controller +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter + ARM GAS /tmp/ccI26Lsx.s page 43 + + +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * overflow/underflow generates an update interrupt or DMA request if enabled. +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 URS LL_TIM_SetUpdateSource +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param UpdateSource This parameter can be one of the following values: +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_REGULAR +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_COUNTER +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource) +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource); +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual event update source +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 URS LL_TIM_GetUpdateSource +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_REGULAR +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_UPDATESOURCE_COUNTER +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(const TIM_TypeDef *TIMx) +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS)); +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set one pulse mode (one shot v.s. repetitive). +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 OPM LL_TIM_SetOnePulseMode +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param OnePulseMode This parameter can be one of the following values: +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode) +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode); +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual one pulse mode. +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 OPM LL_TIM_GetOnePulseMode +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(const TIM_TypeDef *TIMx) +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM)); +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the timer counter counting mode. +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * check whether or not the counter mode selection feature is supported + ARM GAS /tmp/ccI26Lsx.s page 44 + + +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * by a timer instance. +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * requires a timer reset to avoid unexpected direction +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * due to DIR bit readonly in center aligned mode. +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 DIR LL_TIM_SetCounterMode\n +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR1 CMS LL_TIM_SetCounterMode +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CounterMode This parameter can be one of the following values: +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_UP +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_DOWN +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode) +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode); +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual counter mode. +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * check whether or not the counter mode selection feature is supported +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * by a timer instance. +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 DIR LL_TIM_GetCounterMode\n +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR1 CMS LL_TIM_GetCounterMode +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_UP +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_DOWN +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetCounterMode(const TIM_TypeDef *TIMx) +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t counter_mode; +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CMS)); +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** if (counter_mode == 0U) +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return counter_mode; +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable auto-reload (ARR) preload. +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 ARPE LL_TIM_EnableARRPreload +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx) +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + ARM GAS /tmp/ccI26Lsx.s page 45 + + +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_ARPE); +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable auto-reload (ARR) preload. +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 ARPE LL_TIM_DisableARRPreload +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx) +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE); +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether auto-reload (ARR) preload is enabled. +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 ARPE LL_TIM_IsEnabledARRPreload +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(const TIM_TypeDef *TIMx) +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL); +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the division ratio between the timer clock and the sampling clock used by the dead +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (when supported) and the digital filters. +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not the clock division feature is supported by the timer +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * instance. +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CKD LL_TIM_SetClockDivision +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ClockDivision This parameter can be one of the following values: +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision) +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision); +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the actual division ratio between the timer clock and the sampling clock used by t +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * generators (when supported) and the digital filters. +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not the clock division feature is supported by the timer +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * instance. +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 CKD LL_TIM_GetClockDivision +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/ccI26Lsx.s page 46 + + +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetClockDivision(const TIM_TypeDef *TIMx) +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD)); +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the counter value. +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CNT CNT LL_TIM_SetCounter +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF) +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter) +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CNT, Counter); +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the counter value. +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CNT CNT LL_TIM_GetCounter +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF or 0xFFFFFFFF) +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetCounter(const TIM_TypeDef *TIMx) +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CNT)); +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current direction of the counter +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 DIR LL_TIM_GetDirection +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERDIRECTION_UP +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_COUNTERDIRECTION_DOWN +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetDirection(const TIM_TypeDef *TIMx) +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the prescaler value. +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1). +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The prescaler can be changed on the fly as this control register is buffered. The new +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * prescaler ratio is taken into account at the next update event. +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll PSC PSC LL_TIM_SetPrescaler +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Prescaler between Min_Data=0 and Max_Data=65535 +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler) + ARM GAS /tmp/ccI26Lsx.s page 47 + + +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->PSC, Prescaler); +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the prescaler value. +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll PSC PSC LL_TIM_GetPrescaler +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Prescaler value between Min_Data=0 and Max_Data=65535 +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetPrescaler(const TIM_TypeDef *TIMx) +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->PSC)); +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the auto-reload value. +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The counter is blocked while the auto-reload value is null. +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll ARR ARR LL_TIM_SetAutoReload +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param AutoReload between Min_Data=0 and Max_Data=65535 +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload) +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->ARR, AutoReload); +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the auto-reload value. +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll ARR ARR LL_TIM_GetAutoReload +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Auto-reload value +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetAutoReload(const TIM_TypeDef *TIMx) +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->ARR)); +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the repetition counter value. +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note For advanced timer instances RepetitionCounter can be up to 65535. +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a repetition counter. +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll RCR REP LL_TIM_SetRepetitionCounter +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param RepetitionCounter between Min_Data=0 and Max_Data=255 or 65535 for advanced timer. +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter) +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->RCR, RepetitionCounter); + ARM GAS /tmp/ccI26Lsx.s page 48 + + +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the repetition counter value. +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a repetition counter. +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll RCR REP LL_TIM_GetRepetitionCounter +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Repetition counter value +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(const TIM_TypeDef *TIMx) +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->RCR)); +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Force a continuous copy of the update interrupt flag (UIF) into the timer counter regis +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This allows both the counter value and a potential roll-over condition signalled by the U +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * in an atomic way. +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UIFREMAP LL_TIM_EnableUIFRemap +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableUIFRemap(TIM_TypeDef *TIMx) +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR1, TIM_CR1_UIFREMAP); +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable update interrupt flag (UIF) remapping. +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR1 UIFREMAP LL_TIM_DisableUIFRemap +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableUIFRemap(TIM_TypeDef *TIMx) +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR1, TIM_CR1_UIFREMAP); +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether update interrupt flag (UIF) copy is set. +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Counter Counter value +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveUIFCPY(const uint32_t Counter) +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (((Counter & TIM_CNT_UIFCPY) == (TIM_CNT_UIFCPY)) ? 1UL : 0UL); +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + ARM GAS /tmp/ccI26Lsx.s page 49 + + +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written, +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * they are updated only when a commutation event (COM) occurs. +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Only on channels that have a complementary output. +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance is able to generate a commutation event. +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCPC LL_TIM_CC_EnablePreload +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx) +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR2, TIM_CR2_CCPC); +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance is able to generate a commutation event. +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCPC LL_TIM_CC_DisablePreload +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx) +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC); +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare control bits (CCxE, CCxNE and OCxM) preload is en +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCPC LL_TIM_CC_IsEnabledPreload +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledPreload(const TIM_TypeDef *TIMx) +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR2, TIM_CR2_CCPC) == (TIM_CR2_CCPC)) ? 1UL : 0UL); +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM). +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance is able to generate a commutation event. +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCUS LL_TIM_CC_SetUpdate +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CCUpdateSource This parameter can be one of the following values: +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource) +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource); +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the trigger of the capture/compare DMA request. + ARM GAS /tmp/ccI26Lsx.s page 50 + + +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCDS LL_TIM_CC_SetDMAReqTrigger +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DMAReqTrigger This parameter can be one of the following values: +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_CC +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger) +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger); +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get actual trigger of the capture/compare DMA request. +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 CCDS LL_TIM_CC_GetDMAReqTrigger +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_CC +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(const TIM_TypeDef *TIMx) +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS)); +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the lock level to freeze the +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * configuration of several capture/compare parameters. +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the lock mechanism is supported by a timer instance. +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR LOCK LL_TIM_CC_SetLockLevel +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param LockLevel This parameter can be one of the following values: +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_OFF +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_1 +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_2 +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_LOCKLEVEL_3 +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel) +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel); +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare channels. +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1E LL_TIM_CC_EnableChannel\n +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NE LL_TIM_CC_EnableChannel\n +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2E LL_TIM_CC_EnableChannel\n +1829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NE LL_TIM_CC_EnableChannel\n +1830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3E LL_TIM_CC_EnableChannel\n +1831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NE LL_TIM_CC_EnableChannel\n +1832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4E LL_TIM_CC_EnableChannel\n +1833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5E LL_TIM_CC_EnableChannel\n +1834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6E LL_TIM_CC_EnableChannel +1835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channels This parameter can be a combination of the following values: + ARM GAS /tmp/ccI26Lsx.s page 51 + + +1837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +1841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +1843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +1849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CCER, Channels); +1851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare channels. +1855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1E LL_TIM_CC_DisableChannel\n +1856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NE LL_TIM_CC_DisableChannel\n +1857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2E LL_TIM_CC_DisableChannel\n +1858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NE LL_TIM_CC_DisableChannel\n +1859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3E LL_TIM_CC_DisableChannel\n +1860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NE LL_TIM_CC_DisableChannel\n +1861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4E LL_TIM_CC_DisableChannel\n +1862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5E LL_TIM_CC_DisableChannel\n +1863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6E LL_TIM_CC_DisableChannel +1864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channels This parameter can be a combination of the following values: +1866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +1868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +1870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +1872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +1878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CCER, Channels); +1880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether channel(s) is(are) enabled. +1884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1E LL_TIM_CC_IsEnabledChannel\n +1885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NE LL_TIM_CC_IsEnabledChannel\n +1886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2E LL_TIM_CC_IsEnabledChannel\n +1887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NE LL_TIM_CC_IsEnabledChannel\n +1888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3E LL_TIM_CC_IsEnabledChannel\n +1889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NE LL_TIM_CC_IsEnabledChannel\n +1890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4E LL_TIM_CC_IsEnabledChannel\n +1891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5E LL_TIM_CC_IsEnabledChannel\n +1892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6E LL_TIM_CC_IsEnabledChannel +1893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance + ARM GAS /tmp/ccI26Lsx.s page 52 + + +1894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channels This parameter can be a combination of the following values: +1895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +1897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +1899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +1901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +1905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(const TIM_TypeDef *TIMx, uint32_t Channels) +1907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL); +1909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +1913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Output_Channel Output channel configuration +1916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +1917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure an output channel. +1920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_OC_ConfigOutput\n +1921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_OC_ConfigOutput\n +1922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_OC_ConfigOutput\n +1923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_OC_ConfigOutput\n +1924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 CC5S LL_TIM_OC_ConfigOutput\n +1925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 CC6S LL_TIM_OC_ConfigOutput\n +1926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1P LL_TIM_OC_ConfigOutput\n +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_OC_ConfigOutput\n +1928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_OC_ConfigOutput\n +1929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_OC_ConfigOutput\n +1930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5P LL_TIM_OC_ConfigOutput\n +1931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6P LL_TIM_OC_ConfigOutput\n +1932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS1 LL_TIM_OC_ConfigOutput\n +1933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2 LL_TIM_OC_ConfigOutput\n +1934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3 LL_TIM_OC_ConfigOutput\n +1935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS4 LL_TIM_OC_ConfigOutput\n +1936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS5 LL_TIM_OC_ConfigOutput\n +1937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS6 LL_TIM_OC_ConfigOutput +1938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +1940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Configuration This parameter must be a combination of all the following values: +1947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW +1948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH +1949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/ccI26Lsx.s page 53 + + +1951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configura +1952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +1954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel])); +1956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), +1957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]); +1958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), +1959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]); +1960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +1961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +1962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +1963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Define the behavior of the output reference signal OCxREF from which +1964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * OCx and OCxN (when relevant) are derived. +1965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1M LL_TIM_OC_SetMode\n +1966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2M LL_TIM_OC_SetMode\n +1967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3M LL_TIM_OC_SetMode\n +1968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4M LL_TIM_OC_SetMode\n +1969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5M LL_TIM_OC_SetMode\n +1970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6M LL_TIM_OC_SetMode +1971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +1972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +1973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +1974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +1975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +1976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +1977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +1978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +1979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Mode This parameter can be one of the following values: +1980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FROZEN +1981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ACTIVE +1982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_INACTIVE +1983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_TOGGLE +1984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE +1985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE +1986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM1 +1987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM2 +1988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM1 +1989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM2 +1990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM1 +1991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM2 +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM1 +1993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM2 +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +1995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +1996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode) +1997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +1998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +1999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT +2001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the output compare mode of an output channel. +2005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1M LL_TIM_OC_GetMode\n +2006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2M LL_TIM_OC_GetMode\n +2007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3M LL_TIM_OC_GetMode\n + ARM GAS /tmp/ccI26Lsx.s page 54 + + +2008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4M LL_TIM_OC_GetMode\n +2009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5M LL_TIM_OC_GetMode\n +2010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6M LL_TIM_OC_GetMode +2011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FROZEN +2021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ACTIVE +2022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_INACTIVE +2023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_TOGGLE +2024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE +2025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE +2026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM1 +2027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_PWM2 +2028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM1 +2029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_RETRIG_OPM2 +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM1 +2031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_COMBINED_PWM2 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM1 +2033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCMODE_ASYMMETRIC_PWM2 +2034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetMode(const TIM_TypeDef *TIMx, uint32_t Channel) +2036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT +2040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the polarity of an output channel. +2044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_OC_SetPolarity\n +2045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_OC_SetPolarity\n +2046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_OC_SetPolarity\n +2047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_OC_SetPolarity\n +2048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_OC_SetPolarity\n +2049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_OC_SetPolarity\n +2050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_OC_SetPolarity\n +2051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5P LL_TIM_OC_SetPolarity\n +2052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6P LL_TIM_OC_SetPolarity +2053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Polarity This parameter can be one of the following values: + ARM GAS /tmp/ccI26Lsx.s page 55 + + +2065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_HIGH +2066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_LOW +2067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity) +2070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), Polarity << SHIFT_TAB_CCxP[i +2073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the polarity of an output channel. +2077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_OC_GetPolarity\n +2078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_OC_GetPolarity\n +2079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_OC_GetPolarity\n +2080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_OC_GetPolarity\n +2081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_OC_GetPolarity\n +2082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_OC_GetPolarity\n +2083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_OC_GetPolarity\n +2084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC5P LL_TIM_OC_GetPolarity\n +2085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC6P LL_TIM_OC_GetPolarity +2086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_HIGH +2099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCPOLARITY_LOW +2100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +2102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChan +2105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the IDLE state of an output channel +2109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function is significant only for the timer instances +2110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * supporting the break feature. Macro IS_TIM_BREAK_INSTANCE(TIMx) +2111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * can be used to check whether or not a timer instance provides +2112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a break input. +2113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 OIS1 LL_TIM_OC_SetIdleState\n +2114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_SetIdleState\n +2115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2 LL_TIM_OC_SetIdleState\n +2116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_SetIdleState\n +2117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3 LL_TIM_OC_SetIdleState\n +2118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3N LL_TIM_OC_SetIdleState\n +2119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS4 LL_TIM_OC_SetIdleState\n +2120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS5 LL_TIM_OC_SetIdleState\n +2121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS6 LL_TIM_OC_SetIdleState + ARM GAS /tmp/ccI26Lsx.s page 56 + + +2122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param IdleState This parameter can be one of the following values: +2134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_LOW +2135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_HIGH +2136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState +2139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), IdleState << SHIFT_TAB_OISx[iC +2142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the IDLE state of an output channel +2146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 OIS1 LL_TIM_OC_GetIdleState\n +2147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_GetIdleState\n +2148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2 LL_TIM_OC_GetIdleState\n +2149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS2N LL_TIM_OC_GetIdleState\n +2150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3 LL_TIM_OC_GetIdleState\n +2151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS3N LL_TIM_OC_GetIdleState\n +2152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS4 LL_TIM_OC_GetIdleState\n +2153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS5 LL_TIM_OC_GetIdleState\n +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CR2 OIS6 LL_TIM_OC_GetIdleState +2155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1N +2159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2N +2161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3N +2163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_LOW +2168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OCIDLESTATE_HIGH +2169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(const TIM_TypeDef *TIMx, uint32_t Channel) +2171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChanne +2174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable fast mode for the output channel. +2178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Acts only if the channel is configured in PWM1 or PWM2 mode. + ARM GAS /tmp/ccI26Lsx.s page 57 + + +2179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1FE LL_TIM_OC_EnableFast\n +2180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2FE LL_TIM_OC_EnableFast\n +2181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3FE LL_TIM_OC_EnableFast\n +2182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4FE LL_TIM_OC_EnableFast\n +2183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5FE LL_TIM_OC_EnableFast\n +2184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6FE LL_TIM_OC_EnableFast +2185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel) +2196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); +2200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable fast mode for the output channel. +2205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1FE LL_TIM_OC_DisableFast\n +2206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2FE LL_TIM_OC_DisableFast\n +2207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3FE LL_TIM_OC_DisableFast\n +2208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4FE LL_TIM_OC_DisableFast\n +2209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5FE LL_TIM_OC_DisableFast\n +2210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6FE LL_TIM_OC_DisableFast +2211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel) +2222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); +2226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether fast mode is enabled for the output channel. +2231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1FE LL_TIM_OC_IsEnabledFast\n +2232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2FE LL_TIM_OC_IsEnabledFast\n +2233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3FE LL_TIM_OC_IsEnabledFast\n +2234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4FE LL_TIM_OC_IsEnabledFast\n +2235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5FE LL_TIM_OC_IsEnabledFast\n + ARM GAS /tmp/ccI26Lsx.s page 58 + + +2236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6FE LL_TIM_OC_IsEnabledFast +2237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(const TIM_TypeDef *TIMx, uint32_t Channel) +2248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]; +2252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +2253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable compare register (TIMx_CCRx) preload for the output channel. +2257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1PE LL_TIM_OC_EnablePreload\n +2258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2PE LL_TIM_OC_EnablePreload\n +2259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3PE LL_TIM_OC_EnablePreload\n +2260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4PE LL_TIM_OC_EnablePreload\n +2261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5PE LL_TIM_OC_EnablePreload\n +2262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6PE LL_TIM_OC_EnablePreload +2263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +2274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +2278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable compare register (TIMx_CCRx) preload for the output channel. +2282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1PE LL_TIM_OC_DisablePreload\n +2283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2PE LL_TIM_OC_DisablePreload\n +2284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3PE LL_TIM_OC_DisablePreload\n +2285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4PE LL_TIM_OC_DisablePreload\n +2286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5PE LL_TIM_OC_DisablePreload\n +2287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6PE LL_TIM_OC_DisablePreload +2288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 + ARM GAS /tmp/ccI26Lsx.s page 59 + + +2293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +2299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +2303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channe +2307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1PE LL_TIM_OC_IsEnabledPreload\n +2308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2PE LL_TIM_OC_IsEnabledPreload\n +2309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3PE LL_TIM_OC_IsEnabledPreload\n +2310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4PE LL_TIM_OC_IsEnabledPreload\n +2311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5PE LL_TIM_OC_IsEnabledPreload\n +2312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6PE LL_TIM_OC_IsEnabledPreload +2313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(const TIM_TypeDef *TIMx, uint32_t Channel) +2324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]; +2328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +2329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable clearing the output channel on an external event. +2333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function can only be used in Output compare and PWM modes. It does not work in Force +2334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether +2335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance can clear the OCxREF signal on an external event. +2336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1CE LL_TIM_OC_EnableClear\n +2337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2CE LL_TIM_OC_EnableClear\n +2338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3CE LL_TIM_OC_EnableClear\n +2339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4CE LL_TIM_OC_EnableClear\n +2340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5CE LL_TIM_OC_EnableClear\n +2341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6CE LL_TIM_OC_EnableClear +2342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 + ARM GAS /tmp/ccI26Lsx.s page 60 + + +2350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel) +2353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +2357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable clearing the output channel on an external event. +2361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether +2362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance can clear the OCxREF signal on an external event. +2363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1CE LL_TIM_OC_DisableClear\n +2364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2CE LL_TIM_OC_DisableClear\n +2365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3CE LL_TIM_OC_DisableClear\n +2366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4CE LL_TIM_OC_DisableClear\n +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5CE LL_TIM_OC_DisableClear\n +2368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6CE LL_TIM_OC_DisableClear +2369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel) +2380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +2384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates clearing the output channel on an external event is enabled for the output ch +2388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function enables clearing the output channel on an external event. +2389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note This function can only be used in Output compare and PWM modes. It does not work in Force +2390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether +2391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance can clear the OCxREF signal on an external event. +2392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 OC1CE LL_TIM_OC_IsEnabledClear\n +2393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 OC2CE LL_TIM_OC_IsEnabledClear\n +2394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC3CE LL_TIM_OC_IsEnabledClear\n +2395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 OC4CE LL_TIM_OC_IsEnabledClear\n +2396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC5CE LL_TIM_OC_IsEnabledClear\n +2397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR3 OC6CE LL_TIM_OC_IsEnabledClear +2398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH5 +2405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH6 +2406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). + ARM GAS /tmp/ccI26Lsx.s page 61 + + +2407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(const TIM_TypeDef *TIMx, uint32_t Channel) +2409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]; +2413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +2414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal an +2418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the Ocx and OCxN signals). +2419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +2420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * dead-time insertion feature is supported by a timer instance. +2421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter +2422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR DTG LL_TIM_OC_SetDeadTime +2423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DeadTime between Min_Data=0 and Max_Data=255 +2425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime) +2428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime); +2430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 1 (TIMx_CCR1). +2434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not +2438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 1 is supported by a timer instance. +2439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR1 CCR1 LL_TIM_OC_SetCompareCH1 +2440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue) + 138 .loc 2 2444 22 view .LVU41 + 139 .LBB83: +2445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR1, CompareValue); + 140 .loc 2 2446 3 view .LVU42 + 141 0060 4263 str r2, [r0, #52] + 142 .LVL19: + 143 .loc 2 2446 3 is_stmt 0 view .LVU43 + 144 .LBE83: + 145 .LBE82: + 879:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 880:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCER */ + 881:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCER, tmpccer); + 146 .loc 1 881 3 is_stmt 1 view .LVU44 + 147 0062 0362 str r3, [r0, #32] + 882:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 883:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 148 .loc 1 883 3 view .LVU45 + 884:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + ARM GAS /tmp/ccI26Lsx.s page 62 + + + 149 .loc 1 884 1 is_stmt 0 view .LVU46 + 150 0064 0020 movs r0, #0 + 151 .LVL20: + 152 .loc 1 884 1 view .LVU47 + 153 0066 70BC pop {r4, r5, r6} + 154 .LCFI1: + 155 .cfi_restore 6 + 156 .cfi_restore 5 + 157 .cfi_restore 4 + 158 .cfi_def_cfa_offset 0 + 159 .LVL21: + 160 .loc 1 884 1 view .LVU48 + 161 0068 7047 bx lr + 162 .L5: + 163 006a 00BF .align 2 + 164 .L4: + 165 006c 8CFFFEFF .word -65652 + 166 0070 00000140 .word 1073807360 + 167 0074 00040140 .word 1073808384 + 168 .cfi_endproc + 169 .LFE391: + 171 .section .text.OC2Config,"ax",%progbits + 172 .align 1 + 173 .syntax unified + 174 .thumb + 175 .thumb_func + 176 .fpu fpv5-d16 + 178 OC2Config: + 179 .LVL22: + 180 .LFB392: + 885:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 886:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 887:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx output channel 2. + 888:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance + 889:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_OCInitStruct pointer to the the TIMx output channel 2 configuration data structure + 890:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: + 891:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized + 892:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable + 893:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 894:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC2Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) + 895:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 181 .loc 1 895 1 is_stmt 1 view -0 + 182 .cfi_startproc + 183 @ args = 0, pretend = 0, frame = 0 + 184 @ frame_needed = 0, uses_anonymous_args = 0 + 185 @ link register save eliminated. + 186 .loc 1 895 1 is_stmt 0 view .LVU50 + 187 0000 70B4 push {r4, r5, r6} + 188 .LCFI2: + 189 .cfi_def_cfa_offset 12 + 190 .cfi_offset 4, -12 + 191 .cfi_offset 5, -8 + 192 .cfi_offset 6, -4 + 896:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr1; + 193 .loc 1 896 3 is_stmt 1 view .LVU51 + 897:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccer; + 194 .loc 1 897 3 view .LVU52 + ARM GAS /tmp/ccI26Lsx.s page 63 + + + 898:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpcr2; + 195 .loc 1 898 3 view .LVU53 + 899:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 900:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ + 901:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_CC2_INSTANCE(TIMx)); + 196 .loc 1 901 3 view .LVU54 + 902:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + 197 .loc 1 902 3 view .LVU55 + 903:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + 198 .loc 1 903 3 view .LVU56 + 904:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + 199 .loc 1 904 3 view .LVU57 + 905:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 906:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the Channel 2: Reset the CC2E Bit */ + 907:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** CLEAR_BIT(TIMx->CCER, TIM_CCER_CC2E); + 200 .loc 1 907 3 view .LVU58 + 201 0002 036A ldr r3, [r0, #32] + 202 0004 23F01003 bic r3, r3, #16 + 203 0008 0362 str r3, [r0, #32] + 908:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 909:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCER register value */ + 910:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer = LL_TIM_ReadReg(TIMx, CCER); + 204 .loc 1 910 3 view .LVU59 + 205 .loc 1 910 11 is_stmt 0 view .LVU60 + 206 000a 036A ldr r3, [r0, #32] + 207 .LVL23: + 911:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 912:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CR2 register value */ + 913:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + 208 .loc 1 913 3 is_stmt 1 view .LVU61 + 209 .loc 1 913 10 is_stmt 0 view .LVU62 + 210 000c 4268 ldr r2, [r0, #4] + 211 .LVL24: + 914:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 915:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCMR1 register value */ + 916:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + 212 .loc 1 916 3 is_stmt 1 view .LVU63 + 213 .loc 1 916 12 is_stmt 0 view .LVU64 + 214 000e 8569 ldr r5, [r0, #24] + 215 .LVL25: + 917:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 918:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Reset Capture/Compare selection Bits */ + 919:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** CLEAR_BIT(tmpccmr1, TIM_CCMR1_CC2S); + 216 .loc 1 919 3 is_stmt 1 view .LVU65 + 920:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 921:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Output Compare Mode */ + 922:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccmr1, TIM_CCMR1_OC2M, TIM_OCInitStruct->OCMode << 8U); + 217 .loc 1 922 3 view .LVU66 + 218 0010 184C ldr r4, .L9 + 219 0012 2C40 ands r4, r4, r5 + 220 0014 0D68 ldr r5, [r1] + 221 .LVL26: + 222 .loc 1 922 3 is_stmt 0 view .LVU67 + 223 0016 44EA0524 orr r4, r4, r5, lsl #8 + 224 .LVL27: + 923:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 924:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Compare Polarity */ + ARM GAS /tmp/ccI26Lsx.s page 64 + + + 925:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC2P, TIM_OCInitStruct->OCPolarity << 4U); + 225 .loc 1 925 3 is_stmt 1 view .LVU68 + 226 001a 23F02003 bic r3, r3, #32 + 227 .LVL28: + 228 .loc 1 925 3 is_stmt 0 view .LVU69 + 229 001e 0D69 ldr r5, [r1, #16] + 230 0020 43EA0513 orr r3, r3, r5, lsl #4 + 231 .LVL29: + 926:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 927:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output State */ + 928:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC2E, TIM_OCInitStruct->OCState << 4U); + 232 .loc 1 928 3 is_stmt 1 view .LVU70 + 233 0024 23F01003 bic r3, r3, #16 + 234 .LVL30: + 235 .loc 1 928 3 is_stmt 0 view .LVU71 + 236 0028 4D68 ldr r5, [r1, #4] + 237 .loc 1 928 3 view .LVU72 + 238 002a 43EA0513 orr r3, r3, r5, lsl #4 + 239 .LVL31: + 929:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 930:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 240 .loc 1 930 3 is_stmt 1 view .LVU73 + 241 .loc 1 930 6 is_stmt 0 view .LVU74 + 242 002e 124E ldr r6, .L9+4 + 243 0030 124D ldr r5, .L9+8 + 244 0032 A842 cmp r0, r5 + 245 0034 18BF it ne + 246 0036 B042 cmpne r0, r6 + 247 0038 13D1 bne .L7 + 931:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 932:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + 248 .loc 1 932 5 is_stmt 1 view .LVU75 + 933:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + 249 .loc 1 933 5 view .LVU76 + 934:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + 250 .loc 1 934 5 view .LVU77 + 935:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + 251 .loc 1 935 5 view .LVU78 + 936:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 937:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the complementary output Polarity */ + 938:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC2NP, TIM_OCInitStruct->OCNPolarity << 6U); + 252 .loc 1 938 5 view .LVU79 + 253 003a 23F08003 bic r3, r3, #128 + 254 .LVL32: + 255 .loc 1 938 5 is_stmt 0 view .LVU80 + 256 003e 4D69 ldr r5, [r1, #20] + 257 0040 43EA8513 orr r3, r3, r5, lsl #6 + 258 .LVL33: + 939:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 940:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the complementary output State */ + 941:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC2NE, TIM_OCInitStruct->OCNState << 6U); + 259 .loc 1 941 5 is_stmt 1 view .LVU81 + 260 0044 23F04003 bic r3, r3, #64 + 261 .LVL34: + 262 .loc 1 941 5 is_stmt 0 view .LVU82 + 263 0048 8D68 ldr r5, [r1, #8] + 264 .loc 1 941 5 view .LVU83 + ARM GAS /tmp/ccI26Lsx.s page 65 + + + 265 004a 43EA8513 orr r3, r3, r5, lsl #6 + 266 .LVL35: + 942:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 943:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Idle state */ + 944:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpcr2, TIM_CR2_OIS2, TIM_OCInitStruct->OCIdleState << 2U); + 267 .loc 1 944 5 is_stmt 1 view .LVU84 + 268 004e 22F48062 bic r2, r2, #1024 + 269 .LVL36: + 270 .loc 1 944 5 is_stmt 0 view .LVU85 + 271 0052 8D69 ldr r5, [r1, #24] + 272 0054 42EA8502 orr r2, r2, r5, lsl #2 + 273 .LVL37: + 945:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 946:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the complementary output Idle state */ + 947:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpcr2, TIM_CR2_OIS2N, TIM_OCInitStruct->OCNIdleState << 3U); + 274 .loc 1 947 5 is_stmt 1 view .LVU86 + 275 0058 22F40062 bic r2, r2, #2048 + 276 .LVL38: + 277 .loc 1 947 5 is_stmt 0 view .LVU87 + 278 005c CD69 ldr r5, [r1, #28] + 279 .loc 1 947 5 view .LVU88 + 280 005e 42EAC502 orr r2, r2, r5, lsl #3 + 281 .LVL39: + 282 .L7: + 948:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 949:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 950:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CR2 */ + 951:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + 283 .loc 1 951 3 is_stmt 1 view .LVU89 + 284 0062 4260 str r2, [r0, #4] + 952:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 953:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCMR1 */ + 954:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + 285 .loc 1 954 3 view .LVU90 + 286 0064 8461 str r4, [r0, #24] + 955:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 956:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Capture Compare Register value */ + 957:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_OC_SetCompareCH2(TIMx, TIM_OCInitStruct->CompareValue); + 287 .loc 1 957 3 view .LVU91 + 288 0066 CA68 ldr r2, [r1, #12] + 289 .LVL40: + 290 .LBB84: + 291 .LBI84: +2447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 2 (TIMx_CCR2). +2451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not +2455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 2 is supported by a timer instance. +2456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR2 CCR2 LL_TIM_OC_SetCompareCH2 +2457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/ccI26Lsx.s page 66 + + +2461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue) + 292 .loc 2 2461 22 view .LVU92 + 293 .LBB85: +2462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR2, CompareValue); + 294 .loc 2 2463 3 view .LVU93 + 295 0068 8263 str r2, [r0, #56] + 296 .LVL41: + 297 .loc 2 2463 3 is_stmt 0 view .LVU94 + 298 .LBE85: + 299 .LBE84: + 958:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 959:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCER */ + 960:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCER, tmpccer); + 300 .loc 1 960 3 is_stmt 1 view .LVU95 + 301 006a 0362 str r3, [r0, #32] + 961:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 962:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 302 .loc 1 962 3 view .LVU96 + 963:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 303 .loc 1 963 1 is_stmt 0 view .LVU97 + 304 006c 0020 movs r0, #0 + 305 .LVL42: + 306 .loc 1 963 1 view .LVU98 + 307 006e 70BC pop {r4, r5, r6} + 308 .LCFI3: + 309 .cfi_restore 6 + 310 .cfi_restore 5 + 311 .cfi_restore 4 + 312 .cfi_def_cfa_offset 0 + 313 .LVL43: + 314 .loc 1 963 1 view .LVU99 + 315 0070 7047 bx lr + 316 .L10: + 317 0072 00BF .align 2 + 318 .L9: + 319 0074 FF8CFFFE .word -16806657 + 320 0078 00000140 .word 1073807360 + 321 007c 00040140 .word 1073808384 + 322 .cfi_endproc + 323 .LFE392: + 325 .section .text.OC3Config,"ax",%progbits + 326 .align 1 + 327 .syntax unified + 328 .thumb + 329 .thumb_func + 330 .fpu fpv5-d16 + 332 OC3Config: + 333 .LVL44: + 334 .LFB393: + 964:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 965:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 966:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx output channel 3. + 967:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance + 968:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_OCInitStruct pointer to the the TIMx output channel 3 configuration data structure + 969:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: + 970:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized + ARM GAS /tmp/ccI26Lsx.s page 67 + + + 971:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable + 972:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + 973:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC3Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) + 974:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 335 .loc 1 974 1 is_stmt 1 view -0 + 336 .cfi_startproc + 337 @ args = 0, pretend = 0, frame = 0 + 338 @ frame_needed = 0, uses_anonymous_args = 0 + 339 @ link register save eliminated. + 340 .loc 1 974 1 is_stmt 0 view .LVU101 + 341 0000 70B4 push {r4, r5, r6} + 342 .LCFI4: + 343 .cfi_def_cfa_offset 12 + 344 .cfi_offset 4, -12 + 345 .cfi_offset 5, -8 + 346 .cfi_offset 6, -4 + 975:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr2; + 347 .loc 1 975 3 is_stmt 1 view .LVU102 + 976:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccer; + 348 .loc 1 976 3 view .LVU103 + 977:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpcr2; + 349 .loc 1 977 3 view .LVU104 + 978:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 979:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ + 980:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_CC3_INSTANCE(TIMx)); + 350 .loc 1 980 3 view .LVU105 + 981:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + 351 .loc 1 981 3 view .LVU106 + 982:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + 352 .loc 1 982 3 view .LVU107 + 983:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + 353 .loc 1 983 3 view .LVU108 + 984:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 985:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the Channel 3: Reset the CC3E Bit */ + 986:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** CLEAR_BIT(TIMx->CCER, TIM_CCER_CC3E); + 354 .loc 1 986 3 view .LVU109 + 355 0002 036A ldr r3, [r0, #32] + 356 0004 23F48073 bic r3, r3, #256 + 357 0008 0362 str r3, [r0, #32] + 987:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 988:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCER register value */ + 989:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer = LL_TIM_ReadReg(TIMx, CCER); + 358 .loc 1 989 3 view .LVU110 + 359 .loc 1 989 11 is_stmt 0 view .LVU111 + 360 000a 036A ldr r3, [r0, #32] + 361 .LVL45: + 990:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 991:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CR2 register value */ + 992:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + 362 .loc 1 992 3 is_stmt 1 view .LVU112 + 363 .loc 1 992 10 is_stmt 0 view .LVU113 + 364 000c 4268 ldr r2, [r0, #4] + 365 .LVL46: + 993:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 994:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCMR2 register value */ + 995:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr2 = LL_TIM_ReadReg(TIMx, CCMR2); + 366 .loc 1 995 3 is_stmt 1 view .LVU114 + ARM GAS /tmp/ccI26Lsx.s page 68 + + + 367 .loc 1 995 12 is_stmt 0 view .LVU115 + 368 000e C569 ldr r5, [r0, #28] + 369 .LVL47: + 996:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 997:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Reset Capture/Compare selection Bits */ + 998:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** CLEAR_BIT(tmpccmr2, TIM_CCMR2_CC3S); + 370 .loc 1 998 3 is_stmt 1 view .LVU116 + 999:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1000:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Output Compare Mode */ +1001:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccmr2, TIM_CCMR2_OC3M, TIM_OCInitStruct->OCMode); + 371 .loc 1 1001 3 view .LVU117 + 372 0010 174C ldr r4, .L14 + 373 0012 2C40 ands r4, r4, r5 + 374 0014 0D68 ldr r5, [r1] + 375 .LVL48: + 376 .loc 1 1001 3 is_stmt 0 view .LVU118 + 377 0016 2C43 orrs r4, r4, r5 + 378 .LVL49: +1002:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1003:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Compare Polarity */ +1004:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC3P, TIM_OCInitStruct->OCPolarity << 8U); + 379 .loc 1 1004 3 is_stmt 1 view .LVU119 + 380 0018 23F40073 bic r3, r3, #512 + 381 .LVL50: + 382 .loc 1 1004 3 is_stmt 0 view .LVU120 + 383 001c 0D69 ldr r5, [r1, #16] + 384 001e 43EA0523 orr r3, r3, r5, lsl #8 + 385 .LVL51: +1005:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1006:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output State */ +1007:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC3E, TIM_OCInitStruct->OCState << 8U); + 386 .loc 1 1007 3 is_stmt 1 view .LVU121 + 387 0022 23F48073 bic r3, r3, #256 + 388 .LVL52: + 389 .loc 1 1007 3 is_stmt 0 view .LVU122 + 390 0026 4D68 ldr r5, [r1, #4] + 391 .loc 1 1007 3 view .LVU123 + 392 0028 43EA0523 orr r3, r3, r5, lsl #8 + 393 .LVL53: +1008:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1009:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 394 .loc 1 1009 3 is_stmt 1 view .LVU124 + 395 .loc 1 1009 6 is_stmt 0 view .LVU125 + 396 002c 114E ldr r6, .L14+4 + 397 002e 124D ldr r5, .L14+8 + 398 0030 A842 cmp r0, r5 + 399 0032 18BF it ne + 400 0034 B042 cmpne r0, r6 + 401 0036 13D1 bne .L12 +1010:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { +1011:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + 402 .loc 1 1011 5 is_stmt 1 view .LVU126 +1012:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + 403 .loc 1 1012 5 view .LVU127 +1013:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + 404 .loc 1 1013 5 view .LVU128 +1014:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + ARM GAS /tmp/ccI26Lsx.s page 69 + + + 405 .loc 1 1014 5 view .LVU129 +1015:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1016:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the complementary output Polarity */ +1017:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC3NP, TIM_OCInitStruct->OCNPolarity << 10U); + 406 .loc 1 1017 5 view .LVU130 + 407 0038 23F40063 bic r3, r3, #2048 + 408 .LVL54: + 409 .loc 1 1017 5 is_stmt 0 view .LVU131 + 410 003c 4D69 ldr r5, [r1, #20] + 411 003e 43EA8523 orr r3, r3, r5, lsl #10 + 412 .LVL55: +1018:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1019:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the complementary output State */ +1020:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC3NE, TIM_OCInitStruct->OCNState << 10U); + 413 .loc 1 1020 5 is_stmt 1 view .LVU132 + 414 0042 23F48063 bic r3, r3, #1024 + 415 .LVL56: + 416 .loc 1 1020 5 is_stmt 0 view .LVU133 + 417 0046 8D68 ldr r5, [r1, #8] + 418 .loc 1 1020 5 view .LVU134 + 419 0048 43EA8523 orr r3, r3, r5, lsl #10 + 420 .LVL57: +1021:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1022:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Idle state */ +1023:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpcr2, TIM_CR2_OIS3, TIM_OCInitStruct->OCIdleState << 4U); + 421 .loc 1 1023 5 is_stmt 1 view .LVU135 + 422 004c 22F48052 bic r2, r2, #4096 + 423 .LVL58: + 424 .loc 1 1023 5 is_stmt 0 view .LVU136 + 425 0050 8D69 ldr r5, [r1, #24] + 426 0052 42EA0512 orr r2, r2, r5, lsl #4 + 427 .LVL59: +1024:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1025:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the complementary output Idle state */ +1026:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpcr2, TIM_CR2_OIS3N, TIM_OCInitStruct->OCNIdleState << 5U); + 428 .loc 1 1026 5 is_stmt 1 view .LVU137 + 429 0056 22F40052 bic r2, r2, #8192 + 430 .LVL60: + 431 .loc 1 1026 5 is_stmt 0 view .LVU138 + 432 005a CD69 ldr r5, [r1, #28] + 433 .loc 1 1026 5 view .LVU139 + 434 005c 42EA4512 orr r2, r2, r5, lsl #5 + 435 .LVL61: + 436 .L12: +1027:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } +1028:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1029:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CR2 */ +1030:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + 437 .loc 1 1030 3 is_stmt 1 view .LVU140 + 438 0060 4260 str r2, [r0, #4] +1031:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1032:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCMR2 */ +1033:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCMR2, tmpccmr2); + 439 .loc 1 1033 3 view .LVU141 + 440 0062 C461 str r4, [r0, #28] +1034:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1035:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Capture Compare Register value */ + ARM GAS /tmp/ccI26Lsx.s page 70 + + +1036:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_OC_SetCompareCH3(TIMx, TIM_OCInitStruct->CompareValue); + 441 .loc 1 1036 3 view .LVU142 + 442 0064 CA68 ldr r2, [r1, #12] + 443 .LVL62: + 444 .LBB86: + 445 .LBI86: +2464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 3 (TIMx_CCR3). +2468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not +2472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel is supported by a timer instance. +2473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR3 CCR3 LL_TIM_OC_SetCompareCH3 +2474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue) + 446 .loc 2 2478 22 view .LVU143 + 447 .LBB87: +2479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR3, CompareValue); + 448 .loc 2 2480 3 view .LVU144 + 449 0066 C263 str r2, [r0, #60] + 450 .LVL63: + 451 .loc 2 2480 3 is_stmt 0 view .LVU145 + 452 .LBE87: + 453 .LBE86: +1037:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1038:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCER */ +1039:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCER, tmpccer); + 454 .loc 1 1039 3 is_stmt 1 view .LVU146 + 455 0068 0362 str r3, [r0, #32] +1040:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1041:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 456 .loc 1 1041 3 view .LVU147 +1042:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 457 .loc 1 1042 1 is_stmt 0 view .LVU148 + 458 006a 0020 movs r0, #0 + 459 .LVL64: + 460 .loc 1 1042 1 view .LVU149 + 461 006c 70BC pop {r4, r5, r6} + 462 .LCFI5: + 463 .cfi_restore 6 + 464 .cfi_restore 5 + 465 .cfi_restore 4 + 466 .cfi_def_cfa_offset 0 + 467 .LVL65: + 468 .loc 1 1042 1 view .LVU150 + 469 006e 7047 bx lr + 470 .L15: + 471 .align 2 + 472 .L14: + 473 0070 8CFFFEFF .word -65652 + ARM GAS /tmp/ccI26Lsx.s page 71 + + + 474 0074 00000140 .word 1073807360 + 475 0078 00040140 .word 1073808384 + 476 .cfi_endproc + 477 .LFE393: + 479 .section .text.OC4Config,"ax",%progbits + 480 .align 1 + 481 .syntax unified + 482 .thumb + 483 .thumb_func + 484 .fpu fpv5-d16 + 486 OC4Config: + 487 .LVL66: + 488 .LFB394: +1043:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1044:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** +1045:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx output channel 4. +1046:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance +1047:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_OCInitStruct pointer to the the TIMx output channel 4 configuration data structure +1048:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: +1049:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized +1050:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable +1051:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ +1052:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC4Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +1053:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 489 .loc 1 1053 1 is_stmt 1 view -0 + 490 .cfi_startproc + 491 @ args = 0, pretend = 0, frame = 0 + 492 @ frame_needed = 0, uses_anonymous_args = 0 + 493 @ link register save eliminated. + 494 .loc 1 1053 1 is_stmt 0 view .LVU152 + 495 0000 70B4 push {r4, r5, r6} + 496 .LCFI6: + 497 .cfi_def_cfa_offset 12 + 498 .cfi_offset 4, -12 + 499 .cfi_offset 5, -8 + 500 .cfi_offset 6, -4 +1054:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr2; + 501 .loc 1 1054 3 is_stmt 1 view .LVU153 +1055:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccer; + 502 .loc 1 1055 3 view .LVU154 +1056:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpcr2; + 503 .loc 1 1056 3 view .LVU155 +1057:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1058:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ +1059:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_CC4_INSTANCE(TIMx)); + 504 .loc 1 1059 3 view .LVU156 +1060:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + 505 .loc 1 1060 3 view .LVU157 +1061:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + 506 .loc 1 1061 3 view .LVU158 +1062:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + 507 .loc 1 1062 3 view .LVU159 +1063:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1064:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the Channel 4: Reset the CC4E Bit */ +1065:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** CLEAR_BIT(TIMx->CCER, TIM_CCER_CC4E); + 508 .loc 1 1065 3 view .LVU160 + 509 0002 036A ldr r3, [r0, #32] + ARM GAS /tmp/ccI26Lsx.s page 72 + + + 510 0004 23F48053 bic r3, r3, #4096 + 511 0008 0362 str r3, [r0, #32] +1066:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1067:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCER register value */ +1068:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer = LL_TIM_ReadReg(TIMx, CCER); + 512 .loc 1 1068 3 view .LVU161 + 513 .loc 1 1068 11 is_stmt 0 view .LVU162 + 514 000a 036A ldr r3, [r0, #32] + 515 .LVL67: +1069:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1070:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CR2 register value */ +1071:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + 516 .loc 1 1071 3 is_stmt 1 view .LVU163 + 517 .loc 1 1071 10 is_stmt 0 view .LVU164 + 518 000c 4468 ldr r4, [r0, #4] + 519 .LVL68: +1072:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1073:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCMR2 register value */ +1074:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr2 = LL_TIM_ReadReg(TIMx, CCMR2); + 520 .loc 1 1074 3 is_stmt 1 view .LVU165 + 521 .loc 1 1074 12 is_stmt 0 view .LVU166 + 522 000e C569 ldr r5, [r0, #28] + 523 .LVL69: +1075:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1076:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Reset Capture/Compare selection Bits */ +1077:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** CLEAR_BIT(tmpccmr2, TIM_CCMR2_CC4S); + 524 .loc 1 1077 3 is_stmt 1 view .LVU167 +1078:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1079:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Output Compare Mode */ +1080:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccmr2, TIM_CCMR2_OC4M, TIM_OCInitStruct->OCMode << 8U); + 525 .loc 1 1080 3 view .LVU168 + 526 0010 104A ldr r2, .L19 + 527 0012 2A40 ands r2, r2, r5 + 528 0014 0D68 ldr r5, [r1] + 529 .LVL70: + 530 .loc 1 1080 3 is_stmt 0 view .LVU169 + 531 0016 42EA0522 orr r2, r2, r5, lsl #8 + 532 .LVL71: +1081:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1082:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Compare Polarity */ +1083:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC4P, TIM_OCInitStruct->OCPolarity << 12U); + 533 .loc 1 1083 3 is_stmt 1 view .LVU170 + 534 001a 23F40053 bic r3, r3, #8192 + 535 .LVL72: + 536 .loc 1 1083 3 is_stmt 0 view .LVU171 + 537 001e 0D69 ldr r5, [r1, #16] + 538 0020 43EA0533 orr r3, r3, r5, lsl #12 + 539 .LVL73: +1084:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1085:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output State */ +1086:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC4E, TIM_OCInitStruct->OCState << 12U); + 540 .loc 1 1086 3 is_stmt 1 view .LVU172 + 541 0024 23F48053 bic r3, r3, #4096 + 542 .LVL74: + 543 .loc 1 1086 3 is_stmt 0 view .LVU173 + 544 0028 4D68 ldr r5, [r1, #4] + 545 .loc 1 1086 3 view .LVU174 + ARM GAS /tmp/ccI26Lsx.s page 73 + + + 546 002a 43EA0533 orr r3, r3, r5, lsl #12 + 547 .LVL75: +1087:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1088:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 548 .loc 1 1088 3 is_stmt 1 view .LVU175 + 549 .loc 1 1088 6 is_stmt 0 view .LVU176 + 550 002e 0A4E ldr r6, .L19+4 + 551 0030 0A4D ldr r5, .L19+8 + 552 0032 A842 cmp r0, r5 + 553 0034 18BF it ne + 554 0036 B042 cmpne r0, r6 + 555 0038 04D1 bne .L17 +1089:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { +1090:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + 556 .loc 1 1090 5 is_stmt 1 view .LVU177 +1091:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1092:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Idle state */ +1093:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpcr2, TIM_CR2_OIS4, TIM_OCInitStruct->OCIdleState << 6U); + 557 .loc 1 1093 5 view .LVU178 + 558 003a 24F48044 bic r4, r4, #16384 + 559 .LVL76: + 560 .loc 1 1093 5 is_stmt 0 view .LVU179 + 561 003e 8D69 ldr r5, [r1, #24] + 562 0040 44EA8514 orr r4, r4, r5, lsl #6 + 563 .LVL77: + 564 .L17: +1094:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } +1095:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1096:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CR2 */ +1097:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + 565 .loc 1 1097 3 is_stmt 1 view .LVU180 + 566 0044 4460 str r4, [r0, #4] +1098:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1099:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCMR2 */ +1100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCMR2, tmpccmr2); + 567 .loc 1 1100 3 view .LVU181 + 568 0046 C261 str r2, [r0, #28] +1101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Capture Compare Register value */ +1103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_OC_SetCompareCH4(TIMx, TIM_OCInitStruct->CompareValue); + 569 .loc 1 1103 3 view .LVU182 + 570 0048 CA68 ldr r2, [r1, #12] + 571 .LVL78: + 572 .LBB88: + 573 .LBI88: +2481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 4 (TIMx_CCR4). +2485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations compare value can be between 0x00000000 and 0xFFFFFFFF. +2486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not +2489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 4 is supported by a timer instance. +2490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR4 CCR4 LL_TIM_OC_SetCompareCH4 +2491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 + ARM GAS /tmp/ccI26Lsx.s page 74 + + +2493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue) + 574 .loc 2 2495 22 view .LVU183 + 575 .LBB89: +2496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR4, CompareValue); + 576 .loc 2 2497 3 view .LVU184 + 577 004a 0264 str r2, [r0, #64] + 578 .LVL79: + 579 .loc 2 2497 3 is_stmt 0 view .LVU185 + 580 .LBE89: + 581 .LBE88: +1104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCER */ +1106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCER, tmpccer); + 582 .loc 1 1106 3 is_stmt 1 view .LVU186 + 583 004c 0362 str r3, [r0, #32] +1107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 584 .loc 1 1108 3 view .LVU187 +1109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 585 .loc 1 1109 1 is_stmt 0 view .LVU188 + 586 004e 0020 movs r0, #0 + 587 .LVL80: + 588 .loc 1 1109 1 view .LVU189 + 589 0050 70BC pop {r4, r5, r6} + 590 .LCFI7: + 591 .cfi_restore 6 + 592 .cfi_restore 5 + 593 .cfi_restore 4 + 594 .cfi_def_cfa_offset 0 + 595 .LVL81: + 596 .loc 1 1109 1 view .LVU190 + 597 0052 7047 bx lr + 598 .L20: + 599 .align 2 + 600 .L19: + 601 0054 FF8CFFFE .word -16806657 + 602 0058 00000140 .word 1073807360 + 603 005c 00040140 .word 1073808384 + 604 .cfi_endproc + 605 .LFE394: + 607 .section .text.OC5Config,"ax",%progbits + 608 .align 1 + 609 .syntax unified + 610 .thumb + 611 .thumb_func + 612 .fpu fpv5-d16 + 614 OC5Config: + 615 .LVL82: + 616 .LFB395: +1110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** +1112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx output channel 5. +1113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance +1114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_OCInitStruct pointer to the the TIMx output channel 5 configuration data structure + ARM GAS /tmp/ccI26Lsx.s page 75 + + +1115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: +1116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized +1117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable +1118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ +1119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC5Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +1120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 617 .loc 1 1120 1 is_stmt 1 view -0 + 618 .cfi_startproc + 619 @ args = 0, pretend = 0, frame = 0 + 620 @ frame_needed = 0, uses_anonymous_args = 0 + 621 @ link register save eliminated. + 622 .loc 1 1120 1 is_stmt 0 view .LVU192 + 623 0000 30B4 push {r4, r5} + 624 .LCFI8: + 625 .cfi_def_cfa_offset 8 + 626 .cfi_offset 4, -8 + 627 .cfi_offset 5, -4 +1121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr3; + 628 .loc 1 1121 3 is_stmt 1 view .LVU193 +1122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccer; + 629 .loc 1 1122 3 view .LVU194 +1123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ +1125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_CC5_INSTANCE(TIMx)); + 630 .loc 1 1125 3 view .LVU195 +1126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + 631 .loc 1 1126 3 view .LVU196 +1127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + 632 .loc 1 1127 3 view .LVU197 +1128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + 633 .loc 1 1128 3 view .LVU198 +1129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + 634 .loc 1 1129 3 view .LVU199 +1130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + 635 .loc 1 1130 3 view .LVU200 +1131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the Channel 5: Reset the CC5E Bit */ +1133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** CLEAR_BIT(TIMx->CCER, TIM_CCER_CC5E); + 636 .loc 1 1133 3 view .LVU201 + 637 0002 036A ldr r3, [r0, #32] + 638 0004 23F48033 bic r3, r3, #65536 + 639 0008 0362 str r3, [r0, #32] +1134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCER register value */ +1136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer = LL_TIM_ReadReg(TIMx, CCER); + 640 .loc 1 1136 3 view .LVU202 + 641 .loc 1 1136 11 is_stmt 0 view .LVU203 + 642 000a 036A ldr r3, [r0, #32] + 643 .LVL83: +1137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCMR3 register value */ +1139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr3 = LL_TIM_ReadReg(TIMx, CCMR3); + 644 .loc 1 1139 3 is_stmt 1 view .LVU204 + 645 .loc 1 1139 12 is_stmt 0 view .LVU205 + 646 000c 446D ldr r4, [r0, #84] + 647 .LVL84: +1140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + ARM GAS /tmp/ccI26Lsx.s page 76 + + +1141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Output Compare Mode */ +1142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccmr3, TIM_CCMR3_OC5M, TIM_OCInitStruct->OCMode); + 648 .loc 1 1142 3 is_stmt 1 view .LVU206 + 649 000e 114A ldr r2, .L24 + 650 0010 2240 ands r2, r2, r4 + 651 0012 0C68 ldr r4, [r1] + 652 .LVL85: + 653 .loc 1 1142 3 is_stmt 0 view .LVU207 + 654 0014 2243 orrs r2, r2, r4 + 655 .LVL86: +1143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Compare Polarity */ +1145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC5P, TIM_OCInitStruct->OCPolarity << 16U); + 656 .loc 1 1145 3 is_stmt 1 view .LVU208 + 657 0016 23F40033 bic r3, r3, #131072 + 658 .LVL87: + 659 .loc 1 1145 3 is_stmt 0 view .LVU209 + 660 001a 0C69 ldr r4, [r1, #16] + 661 001c 43EA0443 orr r3, r3, r4, lsl #16 + 662 .LVL88: +1146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output State */ +1148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC5E, TIM_OCInitStruct->OCState << 16U); + 663 .loc 1 1148 3 is_stmt 1 view .LVU210 + 664 0020 23F48033 bic r3, r3, #65536 + 665 .LVL89: + 666 .loc 1 1148 3 is_stmt 0 view .LVU211 + 667 0024 4C68 ldr r4, [r1, #4] + 668 .loc 1 1148 3 view .LVU212 + 669 0026 43EA0443 orr r3, r3, r4, lsl #16 + 670 .LVL90: +1149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 671 .loc 1 1150 3 is_stmt 1 view .LVU213 + 672 .loc 1 1150 6 is_stmt 0 view .LVU214 + 673 002a 0B4D ldr r5, .L24+4 + 674 002c 0B4C ldr r4, .L24+8 + 675 002e A042 cmp r0, r4 + 676 0030 18BF it ne + 677 0032 A842 cmpne r0, r5 + 678 0034 06D1 bne .L22 +1151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { +1152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + 679 .loc 1 1152 5 is_stmt 1 view .LVU215 +1153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + 680 .loc 1 1153 5 view .LVU216 +1154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Idle state */ +1156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(TIMx->CR2, TIM_CR2_OIS5, TIM_OCInitStruct->OCIdleState << 8U); + 681 .loc 1 1156 5 view .LVU217 + 682 0036 4468 ldr r4, [r0, #4] + 683 0038 24F48034 bic r4, r4, #65536 + 684 003c 8D69 ldr r5, [r1, #24] + 685 003e 44EA0524 orr r4, r4, r5, lsl #8 + 686 0042 4460 str r4, [r0, #4] + 687 .L22: +1157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + ARM GAS /tmp/ccI26Lsx.s page 77 + + +1158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } +1159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCMR3 */ +1161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCMR3, tmpccmr3); + 688 .loc 1 1161 3 view .LVU218 + 689 0044 4265 str r2, [r0, #84] +1162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Capture Compare Register value */ +1164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_OC_SetCompareCH5(TIMx, TIM_OCInitStruct->CompareValue); + 690 .loc 1 1164 3 view .LVU219 + 691 0046 CA68 ldr r2, [r1, #12] + 692 .LVL91: + 693 .LBB90: + 694 .LBI90: +2498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 5 (TIMx_CCR5). +2502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC5_INSTANCE(TIMx) can be used to check whether or not +2503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 5 is supported by a timer instance. +2504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR5 CCR5 LL_TIM_OC_SetCompareCH5 +2505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH5(TIM_TypeDef *TIMx, uint32_t CompareValue) + 695 .loc 2 2509 22 view .LVU220 + 696 .LBB91: +2510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCR5, TIM_CCR5_CCR5, CompareValue); + 697 .loc 2 2511 3 view .LVU221 + 698 0048 816D ldr r1, [r0, #88] + 699 .LVL92: + 700 .loc 2 2511 3 is_stmt 0 view .LVU222 + 701 004a 8265 str r2, [r0, #88] + 702 .LVL93: + 703 .loc 2 2511 3 view .LVU223 + 704 .LBE91: + 705 .LBE90: +1165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCER */ +1167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCER, tmpccer); + 706 .loc 1 1167 3 is_stmt 1 view .LVU224 + 707 004c 0362 str r3, [r0, #32] +1168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 708 .loc 1 1169 3 view .LVU225 +1170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 709 .loc 1 1170 1 is_stmt 0 view .LVU226 + 710 004e 0020 movs r0, #0 + 711 .LVL94: + 712 .loc 1 1170 1 view .LVU227 + 713 0050 30BC pop {r4, r5} + 714 .LCFI9: + 715 .cfi_restore 5 + 716 .cfi_restore 4 + 717 .cfi_def_cfa_offset 0 + ARM GAS /tmp/ccI26Lsx.s page 78 + + + 718 0052 7047 bx lr + 719 .L25: + 720 .align 2 + 721 .L24: + 722 0054 8FFFFEFF .word -65649 + 723 0058 00000140 .word 1073807360 + 724 005c 00040140 .word 1073808384 + 725 .cfi_endproc + 726 .LFE395: + 728 .section .text.OC6Config,"ax",%progbits + 729 .align 1 + 730 .syntax unified + 731 .thumb + 732 .thumb_func + 733 .fpu fpv5-d16 + 735 OC6Config: + 736 .LVL95: + 737 .LFB396: +1171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** +1173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx output channel 6. +1174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance +1175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_OCInitStruct pointer to the the TIMx output channel 6 configuration data structure +1176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: +1177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized +1178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable +1179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ +1180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus OC6Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +1181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 738 .loc 1 1181 1 is_stmt 1 view -0 + 739 .cfi_startproc + 740 @ args = 0, pretend = 0, frame = 0 + 741 @ frame_needed = 0, uses_anonymous_args = 0 + 742 @ link register save eliminated. + 743 .loc 1 1181 1 is_stmt 0 view .LVU229 + 744 0000 30B4 push {r4, r5} + 745 .LCFI10: + 746 .cfi_def_cfa_offset 8 + 747 .cfi_offset 4, -8 + 748 .cfi_offset 5, -4 +1182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr3; + 749 .loc 1 1182 3 is_stmt 1 view .LVU230 +1183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccer; + 750 .loc 1 1183 3 view .LVU231 +1184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ +1186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_CC6_INSTANCE(TIMx)); + 751 .loc 1 1186 3 view .LVU232 +1187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + 752 .loc 1 1187 3 view .LVU233 +1188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + 753 .loc 1 1188 3 view .LVU234 +1189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + 754 .loc 1 1189 3 view .LVU235 +1190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + 755 .loc 1 1190 3 view .LVU236 +1191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + ARM GAS /tmp/ccI26Lsx.s page 79 + + + 756 .loc 1 1191 3 view .LVU237 +1192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the Channel 5: Reset the CC6E Bit */ +1194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** CLEAR_BIT(TIMx->CCER, TIM_CCER_CC6E); + 757 .loc 1 1194 3 view .LVU238 + 758 0002 036A ldr r3, [r0, #32] + 759 0004 23F48013 bic r3, r3, #1048576 + 760 0008 0362 str r3, [r0, #32] +1195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCER register value */ +1197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer = LL_TIM_ReadReg(TIMx, CCER); + 761 .loc 1 1197 3 view .LVU239 + 762 .loc 1 1197 11 is_stmt 0 view .LVU240 + 763 000a 036A ldr r3, [r0, #32] + 764 .LVL96: +1198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Get the TIMx CCMR3 register value */ +1200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr3 = LL_TIM_ReadReg(TIMx, CCMR3); + 765 .loc 1 1200 3 is_stmt 1 view .LVU241 + 766 .loc 1 1200 12 is_stmt 0 view .LVU242 + 767 000c 446D ldr r4, [r0, #84] + 768 .LVL97: +1201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Output Compare Mode */ +1203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccmr3, TIM_CCMR3_OC6M, TIM_OCInitStruct->OCMode << 8U); + 769 .loc 1 1203 3 is_stmt 1 view .LVU243 + 770 000e 114A ldr r2, .L29 + 771 0010 2240 ands r2, r2, r4 + 772 0012 0C68 ldr r4, [r1] + 773 .LVL98: + 774 .loc 1 1203 3 is_stmt 0 view .LVU244 + 775 0014 42EA0422 orr r2, r2, r4, lsl #8 + 776 .LVL99: +1204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Compare Polarity */ +1206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC6P, TIM_OCInitStruct->OCPolarity << 20U); + 777 .loc 1 1206 3 is_stmt 1 view .LVU245 + 778 0018 23F40013 bic r3, r3, #2097152 + 779 .LVL100: + 780 .loc 1 1206 3 is_stmt 0 view .LVU246 + 781 001c 0C69 ldr r4, [r1, #16] + 782 001e 43EA0453 orr r3, r3, r4, lsl #20 + 783 .LVL101: +1207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output State */ +1209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpccer, TIM_CCER_CC6E, TIM_OCInitStruct->OCState << 20U); + 784 .loc 1 1209 3 is_stmt 1 view .LVU247 + 785 0022 23F48013 bic r3, r3, #1048576 + 786 .LVL102: + 787 .loc 1 1209 3 is_stmt 0 view .LVU248 + 788 0026 4C68 ldr r4, [r1, #4] + 789 .loc 1 1209 3 view .LVU249 + 790 0028 43EA0453 orr r3, r3, r4, lsl #20 + 791 .LVL103: +1210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** if (IS_TIM_BREAK_INSTANCE(TIMx)) + 792 .loc 1 1211 3 is_stmt 1 view .LVU250 + ARM GAS /tmp/ccI26Lsx.s page 80 + + + 793 .loc 1 1211 6 is_stmt 0 view .LVU251 + 794 002c 0A4D ldr r5, .L29+4 + 795 002e 0B4C ldr r4, .L29+8 + 796 0030 A042 cmp r0, r4 + 797 0032 18BF it ne + 798 0034 A842 cmpne r0, r5 + 799 0036 06D1 bne .L27 +1212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { +1213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + 800 .loc 1 1213 5 is_stmt 1 view .LVU252 +1214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + 801 .loc 1 1214 5 view .LVU253 +1215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Output Idle state */ +1217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(TIMx->CR2, TIM_CR2_OIS6, TIM_OCInitStruct->OCIdleState << 10U); + 802 .loc 1 1217 5 view .LVU254 + 803 0038 4468 ldr r4, [r0, #4] + 804 003a 24F48024 bic r4, r4, #262144 + 805 003e 8D69 ldr r5, [r1, #24] + 806 0040 44EA8524 orr r4, r4, r5, lsl #10 + 807 0044 4460 str r4, [r0, #4] + 808 .L27: +1218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } +1219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCMR3 */ +1221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCMR3, tmpccmr3); + 809 .loc 1 1221 3 view .LVU255 + 810 0046 4265 str r2, [r0, #84] +1222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the Capture Compare Register value */ +1224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_OC_SetCompareCH6(TIMx, TIM_OCInitStruct->CompareValue); + 811 .loc 1 1224 3 view .LVU256 + 812 0048 CA68 ldr r2, [r1, #12] + 813 .LVL104: + 814 .LBB92: + 815 .LBI92: +2512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set compare value for output channel 6 (TIMx_CCR6). +2516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC6_INSTANCE(TIMx) can be used to check whether or not +2517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 6 is supported by a timer instance. +2518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR6 CCR6 LL_TIM_OC_SetCompareCH6 +2519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param CompareValue between Min_Data=0 and Max_Data=65535 +2521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_OC_SetCompareCH6(TIM_TypeDef *TIMx, uint32_t CompareValue) + 816 .loc 2 2523 22 view .LVU257 + 817 .LBB93: +2524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->CCR6, CompareValue); + 818 .loc 2 2525 3 view .LVU258 + 819 004a C265 str r2, [r0, #92] + 820 .LVL105: + 821 .loc 2 2525 3 is_stmt 0 view .LVU259 + 822 .LBE93: + ARM GAS /tmp/ccI26Lsx.s page 81 + + + 823 .LBE92: +1225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Write to TIMx CCER */ +1227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_TIM_WriteReg(TIMx, CCER, tmpccer); + 824 .loc 1 1227 3 is_stmt 1 view .LVU260 + 825 004c 0362 str r3, [r0, #32] +1228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 826 .loc 1 1229 3 view .LVU261 +1230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 827 .loc 1 1230 1 is_stmt 0 view .LVU262 + 828 004e 0020 movs r0, #0 + 829 .LVL106: + 830 .loc 1 1230 1 view .LVU263 + 831 0050 30BC pop {r4, r5} + 832 .LCFI11: + 833 .cfi_restore 5 + 834 .cfi_restore 4 + 835 .cfi_def_cfa_offset 0 + 836 0052 7047 bx lr + 837 .L30: + 838 .align 2 + 839 .L29: + 840 0054 FF8FFFFE .word -16805889 + 841 0058 00000140 .word 1073807360 + 842 005c 00040140 .word 1073808384 + 843 .cfi_endproc + 844 .LFE396: + 846 .section .text.IC1Config,"ax",%progbits + 847 .align 1 + 848 .syntax unified + 849 .thumb + 850 .thumb_func + 851 .fpu fpv5-d16 + 853 IC1Config: + 854 .LVL107: + 855 .LFB397: +1231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** +1233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx input channel 1. +1234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance +1235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_ICInitStruct pointer to the the TIMx input channel 1 configuration data structure +1236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: +1237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized +1238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable +1239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ +1240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus IC1Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +1241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 856 .loc 1 1241 1 is_stmt 1 view -0 + 857 .cfi_startproc + 858 @ args = 0, pretend = 0, frame = 0 + 859 @ frame_needed = 0, uses_anonymous_args = 0 + 860 @ link register save eliminated. + 861 .loc 1 1241 1 is_stmt 0 view .LVU265 + 862 0000 10B4 push {r4} + 863 .LCFI12: + 864 .cfi_def_cfa_offset 4 + ARM GAS /tmp/ccI26Lsx.s page 82 + + + 865 .cfi_offset 4, -4 +1242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ +1243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + 866 .loc 1 1243 3 is_stmt 1 view .LVU266 +1244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + 867 .loc 1 1244 3 view .LVU267 +1245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + 868 .loc 1 1245 3 view .LVU268 +1246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + 869 .loc 1 1246 3 view .LVU269 +1247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + 870 .loc 1 1247 3 view .LVU270 +1248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the Channel 1: Reset the CC1E Bit */ +1250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIMx->CCER &= (uint32_t)~TIM_CCER_CC1E; + 871 .loc 1 1250 3 view .LVU271 + 872 .loc 1 1250 14 is_stmt 0 view .LVU272 + 873 0002 036A ldr r3, [r0, #32] + 874 0004 23F00103 bic r3, r3, #1 + 875 0008 0362 str r3, [r0, #32] +1251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Input and set the filter and the prescaler value */ +1253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(TIMx->CCMR1, + 876 .loc 1 1253 3 is_stmt 1 view .LVU273 + 877 000a 8369 ldr r3, [r0, #24] + 878 000c 23F0FF03 bic r3, r3, #255 + 879 0010 4A68 ldr r2, [r1, #4] + 880 0012 CC68 ldr r4, [r1, #12] + 881 0014 2243 orrs r2, r2, r4 + 882 0016 8C68 ldr r4, [r1, #8] + 883 0018 2243 orrs r2, r2, r4 + 884 001a 43EA1243 orr r3, r3, r2, lsr #16 + 885 001e 8361 str r3, [r0, #24] +1254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC), +1255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPr +1256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Polarity and set the CC1E Bit */ +1258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(TIMx->CCER, + 886 .loc 1 1258 3 view .LVU274 + 887 0020 036A ldr r3, [r0, #32] + 888 0022 23F00A03 bic r3, r3, #10 + 889 0026 0A68 ldr r2, [r1] + 890 0028 1343 orrs r3, r3, r2 + 891 002a 43F00103 orr r3, r3, #1 + 892 002e 0362 str r3, [r0, #32] +1259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_CCER_CC1P | TIM_CCER_CC1NP), +1260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_ICInitStruct->ICPolarity | TIM_CCER_CC1E)); +1261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 893 .loc 1 1262 3 view .LVU275 +1263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 894 .loc 1 1263 1 is_stmt 0 view .LVU276 + 895 0030 0020 movs r0, #0 + 896 .LVL108: + 897 .loc 1 1263 1 view .LVU277 + 898 0032 5DF8044B ldr r4, [sp], #4 + 899 .LCFI13: + ARM GAS /tmp/ccI26Lsx.s page 83 + + + 900 .cfi_restore 4 + 901 .cfi_def_cfa_offset 0 + 902 0036 7047 bx lr + 903 .cfi_endproc + 904 .LFE397: + 906 .section .text.IC2Config,"ax",%progbits + 907 .align 1 + 908 .syntax unified + 909 .thumb + 910 .thumb_func + 911 .fpu fpv5-d16 + 913 IC2Config: + 914 .LVL109: + 915 .LFB398: +1264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** +1266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx input channel 2. +1267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance +1268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_ICInitStruct pointer to the the TIMx input channel 2 configuration data structure +1269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: +1270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized +1271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable +1272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ +1273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus IC2Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +1274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 916 .loc 1 1274 1 is_stmt 1 view -0 + 917 .cfi_startproc + 918 @ args = 0, pretend = 0, frame = 0 + 919 @ frame_needed = 0, uses_anonymous_args = 0 + 920 @ link register save eliminated. + 921 .loc 1 1274 1 is_stmt 0 view .LVU279 + 922 0000 10B4 push {r4} + 923 .LCFI14: + 924 .cfi_def_cfa_offset 4 + 925 .cfi_offset 4, -4 +1275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ +1276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_CC2_INSTANCE(TIMx)); + 926 .loc 1 1276 3 is_stmt 1 view .LVU280 +1277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + 927 .loc 1 1277 3 view .LVU281 +1278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + 928 .loc 1 1278 3 view .LVU282 +1279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + 929 .loc 1 1279 3 view .LVU283 +1280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + 930 .loc 1 1280 3 view .LVU284 +1281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the Channel 2: Reset the CC2E Bit */ +1283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIMx->CCER &= (uint32_t)~TIM_CCER_CC2E; + 931 .loc 1 1283 3 view .LVU285 + 932 .loc 1 1283 14 is_stmt 0 view .LVU286 + 933 0002 036A ldr r3, [r0, #32] + 934 0004 23F01003 bic r3, r3, #16 + 935 0008 0362 str r3, [r0, #32] +1284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Input and set the filter and the prescaler value */ +1286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(TIMx->CCMR1, + ARM GAS /tmp/ccI26Lsx.s page 84 + + + 936 .loc 1 1286 3 is_stmt 1 view .LVU287 + 937 000a 8369 ldr r3, [r0, #24] + 938 000c 23F47F43 bic r3, r3, #65280 + 939 0010 4A68 ldr r2, [r1, #4] + 940 0012 CC68 ldr r4, [r1, #12] + 941 0014 2243 orrs r2, r2, r4 + 942 0016 8C68 ldr r4, [r1, #8] + 943 0018 2243 orrs r2, r2, r4 + 944 001a 43EA1223 orr r3, r3, r2, lsr #8 + 945 001e 8361 str r3, [r0, #24] +1287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_CCMR1_CC2S | TIM_CCMR1_IC2F | TIM_CCMR1_IC2PSC), +1288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPr +1289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Polarity and set the CC2E Bit */ +1291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(TIMx->CCER, + 946 .loc 1 1291 3 view .LVU288 + 947 0020 036A ldr r3, [r0, #32] + 948 0022 23F0A003 bic r3, r3, #160 + 949 0026 0A68 ldr r2, [r1] + 950 0028 43EA0213 orr r3, r3, r2, lsl #4 + 951 002c 43F01003 orr r3, r3, #16 + 952 0030 0362 str r3, [r0, #32] +1292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_CCER_CC2P | TIM_CCER_CC2NP), +1293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ((TIM_ICInitStruct->ICPolarity << 4U) | TIM_CCER_CC2E)); +1294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 953 .loc 1 1295 3 view .LVU289 +1296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 954 .loc 1 1296 1 is_stmt 0 view .LVU290 + 955 0032 0020 movs r0, #0 + 956 .LVL110: + 957 .loc 1 1296 1 view .LVU291 + 958 0034 5DF8044B ldr r4, [sp], #4 + 959 .LCFI15: + 960 .cfi_restore 4 + 961 .cfi_def_cfa_offset 0 + 962 0038 7047 bx lr + 963 .cfi_endproc + 964 .LFE398: + 966 .section .text.IC3Config,"ax",%progbits + 967 .align 1 + 968 .syntax unified + 969 .thumb + 970 .thumb_func + 971 .fpu fpv5-d16 + 973 IC3Config: + 974 .LVL111: + 975 .LFB399: +1297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** +1299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx input channel 3. +1300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance +1301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_ICInitStruct pointer to the the TIMx input channel 3 configuration data structure +1302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: +1303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized +1304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable +1305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ + ARM GAS /tmp/ccI26Lsx.s page 85 + + +1306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus IC3Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +1307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 976 .loc 1 1307 1 is_stmt 1 view -0 + 977 .cfi_startproc + 978 @ args = 0, pretend = 0, frame = 0 + 979 @ frame_needed = 0, uses_anonymous_args = 0 + 980 @ link register save eliminated. + 981 .loc 1 1307 1 is_stmt 0 view .LVU293 + 982 0000 10B4 push {r4} + 983 .LCFI16: + 984 .cfi_def_cfa_offset 4 + 985 .cfi_offset 4, -4 +1308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ +1309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_CC3_INSTANCE(TIMx)); + 986 .loc 1 1309 3 is_stmt 1 view .LVU294 +1310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + 987 .loc 1 1310 3 view .LVU295 +1311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + 988 .loc 1 1311 3 view .LVU296 +1312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + 989 .loc 1 1312 3 view .LVU297 +1313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + 990 .loc 1 1313 3 view .LVU298 +1314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the Channel 3: Reset the CC3E Bit */ +1316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIMx->CCER &= (uint32_t)~TIM_CCER_CC3E; + 991 .loc 1 1316 3 view .LVU299 + 992 .loc 1 1316 14 is_stmt 0 view .LVU300 + 993 0002 036A ldr r3, [r0, #32] + 994 0004 23F48073 bic r3, r3, #256 + 995 0008 0362 str r3, [r0, #32] +1317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Input and set the filter and the prescaler value */ +1319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(TIMx->CCMR2, + 996 .loc 1 1319 3 is_stmt 1 view .LVU301 + 997 000a C369 ldr r3, [r0, #28] + 998 000c 23F0FF03 bic r3, r3, #255 + 999 0010 4A68 ldr r2, [r1, #4] + 1000 0012 CC68 ldr r4, [r1, #12] + 1001 0014 2243 orrs r2, r2, r4 + 1002 0016 8C68 ldr r4, [r1, #8] + 1003 0018 2243 orrs r2, r2, r4 + 1004 001a 43EA1243 orr r3, r3, r2, lsr #16 + 1005 001e C361 str r3, [r0, #28] +1320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_CCMR2_CC3S | TIM_CCMR2_IC3F | TIM_CCMR2_IC3PSC), +1321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPr +1322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Polarity and set the CC3E Bit */ +1324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(TIMx->CCER, + 1006 .loc 1 1324 3 view .LVU302 + 1007 0020 036A ldr r3, [r0, #32] + 1008 0022 23F42063 bic r3, r3, #2560 + 1009 0026 0A68 ldr r2, [r1] + 1010 0028 43EA0223 orr r3, r3, r2, lsl #8 + 1011 002c 43F48073 orr r3, r3, #256 + 1012 0030 0362 str r3, [r0, #32] +1325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_CCER_CC3P | TIM_CCER_CC3NP), + ARM GAS /tmp/ccI26Lsx.s page 86 + + +1326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ((TIM_ICInitStruct->ICPolarity << 8U) | TIM_CCER_CC3E)); +1327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 1013 .loc 1 1328 3 view .LVU303 +1329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1014 .loc 1 1329 1 is_stmt 0 view .LVU304 + 1015 0032 0020 movs r0, #0 + 1016 .LVL112: + 1017 .loc 1 1329 1 view .LVU305 + 1018 0034 5DF8044B ldr r4, [sp], #4 + 1019 .LCFI17: + 1020 .cfi_restore 4 + 1021 .cfi_def_cfa_offset 0 + 1022 0038 7047 bx lr + 1023 .cfi_endproc + 1024 .LFE399: + 1026 .section .text.IC4Config,"ax",%progbits + 1027 .align 1 + 1028 .syntax unified + 1029 .thumb + 1030 .thumb_func + 1031 .fpu fpv5-d16 + 1033 IC4Config: + 1034 .LVL113: + 1035 .LFB400: +1330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** +1332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @brief Configure the TIMx input channel 4. +1333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIMx Timer Instance +1334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @param TIM_ICInitStruct pointer to the the TIMx input channel 4 configuration data structure +1335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * @retval An ErrorStatus enumeration value: +1336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - SUCCESS: TIMx registers are de-initialized +1337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** * - ERROR: not applicable +1338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** */ +1339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** static ErrorStatus IC4Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +1340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1036 .loc 1 1340 1 is_stmt 1 view -0 + 1037 .cfi_startproc + 1038 @ args = 0, pretend = 0, frame = 0 + 1039 @ frame_needed = 0, uses_anonymous_args = 0 + 1040 @ link register save eliminated. + 1041 .loc 1 1340 1 is_stmt 0 view .LVU307 + 1042 0000 10B4 push {r4} + 1043 .LCFI18: + 1044 .cfi_def_cfa_offset 4 + 1045 .cfi_offset 4, -4 +1341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Check the parameters */ +1342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_TIM_CC4_INSTANCE(TIMx)); + 1046 .loc 1 1342 3 is_stmt 1 view .LVU308 +1343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + 1047 .loc 1 1343 3 view .LVU309 +1344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + 1048 .loc 1 1344 3 view .LVU310 +1345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + 1049 .loc 1 1345 3 view .LVU311 +1346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + 1050 .loc 1 1346 3 view .LVU312 + ARM GAS /tmp/ccI26Lsx.s page 87 + + +1347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Disable the Channel 4: Reset the CC4E Bit */ +1349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIMx->CCER &= (uint32_t)~TIM_CCER_CC4E; + 1051 .loc 1 1349 3 view .LVU313 + 1052 .loc 1 1349 14 is_stmt 0 view .LVU314 + 1053 0002 036A ldr r3, [r0, #32] + 1054 0004 23F48053 bic r3, r3, #4096 + 1055 0008 0362 str r3, [r0, #32] +1350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Input and set the filter and the prescaler value */ +1352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(TIMx->CCMR2, + 1056 .loc 1 1352 3 is_stmt 1 view .LVU315 + 1057 000a C369 ldr r3, [r0, #28] + 1058 000c 23F47F43 bic r3, r3, #65280 + 1059 0010 4A68 ldr r2, [r1, #4] + 1060 0012 CC68 ldr r4, [r1, #12] + 1061 0014 2243 orrs r2, r2, r4 + 1062 0016 8C68 ldr r4, [r1, #8] + 1063 0018 2243 orrs r2, r2, r4 + 1064 001a 43EA1223 orr r3, r3, r2, lsr #8 + 1065 001e C361 str r3, [r0, #28] +1353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_CCMR2_CC4S | TIM_CCMR2_IC4F | TIM_CCMR2_IC4PSC), +1354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPr +1355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Select the Polarity and set the CC4E Bit */ +1357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(TIMx->CCER, + 1066 .loc 1 1357 3 view .LVU316 + 1067 0020 036A ldr r3, [r0, #32] + 1068 0022 23F42043 bic r3, r3, #40960 + 1069 0026 0A68 ldr r2, [r1] + 1070 0028 43EA0233 orr r3, r3, r2, lsl #12 + 1071 002c 43F48053 orr r3, r3, #4096 + 1072 0030 0362 str r3, [r0, #32] +1358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** (TIM_CCER_CC4P | TIM_CCER_CC4NP), +1359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ((TIM_ICInitStruct->ICPolarity << 12U) | TIM_CCER_CC4E)); +1360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** +1361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** return SUCCESS; + 1073 .loc 1 1361 3 view .LVU317 +1362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1074 .loc 1 1362 1 is_stmt 0 view .LVU318 + 1075 0032 0020 movs r0, #0 + 1076 .LVL114: + 1077 .loc 1 1362 1 view .LVU319 + 1078 0034 5DF8044B ldr r4, [sp], #4 + 1079 .LCFI19: + 1080 .cfi_restore 4 + 1081 .cfi_def_cfa_offset 0 + 1082 0038 7047 bx lr + 1083 .cfi_endproc + 1084 .LFE400: + 1086 .section .text.LL_TIM_DeInit,"ax",%progbits + 1087 .align 1 + 1088 .global LL_TIM_DeInit + 1089 .syntax unified + 1090 .thumb + 1091 .thumb_func + 1092 .fpu fpv5-d16 + ARM GAS /tmp/ccI26Lsx.s page 88 + + + 1094 LL_TIM_DeInit: + 1095 .LVL115: + 1096 .LFB378: + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus result = SUCCESS; + 1097 .loc 1 217 1 is_stmt 1 view -0 + 1098 .cfi_startproc + 1099 @ args = 0, pretend = 0, frame = 0 + 1100 @ frame_needed = 0, uses_anonymous_args = 0 + 1101 @ link register save eliminated. + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1102 .loc 1 218 3 view .LVU321 + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1103 .loc 1 221 3 view .LVU322 + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1104 .loc 1 223 3 view .LVU323 + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1105 .loc 1 223 6 is_stmt 0 view .LVU324 + 1106 0000 6B4B ldr r3, .L69 + 1107 0002 9842 cmp r0, r3 + 1108 0004 2CD0 beq .L55 + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1109 .loc 1 228 8 is_stmt 1 view .LVU325 + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1110 .loc 1 228 11 is_stmt 0 view .LVU326 + 1111 0006 B0F1804F cmp r0, #1073741824 + 1112 000a 35D0 beq .L56 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1113 .loc 1 234 8 is_stmt 1 view .LVU327 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1114 .loc 1 234 11 is_stmt 0 view .LVU328 + 1115 000c 694B ldr r3, .L69+4 + 1116 000e 9842 cmp r0, r3 + 1117 0010 3DD0 beq .L57 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1118 .loc 1 241 8 is_stmt 1 view .LVU329 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1119 .loc 1 241 11 is_stmt 0 view .LVU330 + 1120 0012 694B ldr r3, .L69+8 + 1121 0014 9842 cmp r0, r3 + 1122 0016 46D0 beq .L58 + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1123 .loc 1 248 8 is_stmt 1 view .LVU331 + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1124 .loc 1 248 11 is_stmt 0 view .LVU332 + 1125 0018 684B ldr r3, .L69+12 + 1126 001a 9842 cmp r0, r3 + 1127 001c 4FD0 beq .L59 + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1128 .loc 1 255 8 is_stmt 1 view .LVU333 + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1129 .loc 1 255 11 is_stmt 0 view .LVU334 + 1130 001e 684B ldr r3, .L69+16 + 1131 0020 9842 cmp r0, r3 + 1132 0022 58D0 beq .L60 + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1133 .loc 1 262 8 is_stmt 1 view .LVU335 + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + ARM GAS /tmp/ccI26Lsx.s page 89 + + + 1134 .loc 1 262 11 is_stmt 0 view .LVU336 + 1135 0024 674B ldr r3, .L69+20 + 1136 0026 9842 cmp r0, r3 + 1137 0028 61D0 beq .L61 + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1138 .loc 1 269 8 is_stmt 1 view .LVU337 + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1139 .loc 1 269 11 is_stmt 0 view .LVU338 + 1140 002a 674B ldr r3, .L69+24 + 1141 002c 9842 cmp r0, r3 + 1142 002e 6AD0 beq .L62 + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1143 .loc 1 276 8 is_stmt 1 view .LVU339 + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1144 .loc 1 276 11 is_stmt 0 view .LVU340 + 1145 0030 664B ldr r3, .L69+28 + 1146 0032 9842 cmp r0, r3 + 1147 0034 73D0 beq .L63 + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1148 .loc 1 283 8 is_stmt 1 view .LVU341 + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1149 .loc 1 283 11 is_stmt 0 view .LVU342 + 1150 0036 664B ldr r3, .L69+32 + 1151 0038 9842 cmp r0, r3 + 1152 003a 7CD0 beq .L64 + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1153 .loc 1 290 8 is_stmt 1 view .LVU343 + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1154 .loc 1 290 11 is_stmt 0 view .LVU344 + 1155 003c 654B ldr r3, .L69+36 + 1156 003e 9842 cmp r0, r3 + 1157 0040 00F08580 beq .L65 + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1158 .loc 1 297 8 is_stmt 1 view .LVU345 + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1159 .loc 1 297 11 is_stmt 0 view .LVU346 + 1160 0044 644B ldr r3, .L69+40 + 1161 0046 9842 cmp r0, r3 + 1162 0048 00F08D80 beq .L66 + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1163 .loc 1 304 8 is_stmt 1 view .LVU347 + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1164 .loc 1 304 11 is_stmt 0 view .LVU348 + 1165 004c 634B ldr r3, .L69+44 + 1166 004e 9842 cmp r0, r3 + 1167 0050 00F09580 beq .L67 + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1168 .loc 1 311 8 is_stmt 1 view .LVU349 + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1169 .loc 1 311 11 is_stmt 0 view .LVU350 + 1170 0054 624B ldr r3, .L69+48 + 1171 0056 9842 cmp r0, r3 + 1172 0058 00F09D80 beq .L68 + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1173 .loc 1 319 12 view .LVU351 + 1174 005c 0120 movs r0, #1 + 1175 .LVL116: + ARM GAS /tmp/ccI26Lsx.s page 90 + + + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1176 .loc 1 322 3 is_stmt 1 view .LVU352 + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1177 .loc 1 323 1 is_stmt 0 view .LVU353 + 1178 005e 7047 bx lr + 1179 .LVL117: + 1180 .L55: + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM1); + 1181 .loc 1 225 5 is_stmt 1 view .LVU354 + 1182 .LBB94: + 1183 .LBI94: + 1184 .file 3 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @file stm32f7xx_ll_bus.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Header file of BUS LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @verbatim + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ##### RCC Limitations ##### + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ============================================================================== + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** A delay between an RCC peripheral clock enable and the effective peripheral + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** enabling should be taken into account in order to manage the peripheral read/write + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** from/to registers. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (+) This delay depends on the peripheral mapping. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (++) AHB & APB peripherals, 1 dummy read is necessary + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** Workarounds: + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @endverbatim + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @attention + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * Copyright (c) 2017 STMicroelectronics. + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * All rights reserved. + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * This software is licensed under terms that can be found in the LICENSE file in + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * the root directory of this software component. + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifndef __STM32F7xx_LL_BUS_H + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define __STM32F7xx_LL_BUS_H + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifdef __cplusplus + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** extern "C" { + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Includes ------------------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #include "stm32f7xx.h" + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + ARM GAS /tmp/ccI26Lsx.s page 91 + + + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @addtogroup STM32F7xx_LL_Driver + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC) + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL BUS + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private types -------------------------------------------------------------*/ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private variables ---------------------------------------------------------*/ + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private constants ---------------------------------------------------------*/ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private macros ------------------------------------------------------------*/ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported types ------------------------------------------------------------*/ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported constants --------------------------------------------------------*/ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOA RCC_AHB1ENR_GPIOAEN + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOB RCC_AHB1ENR_GPIOBEN + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOC RCC_AHB1ENR_GPIOCEN + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOD RCC_AHB1ENR_GPIODEN + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOE RCC_AHB1ENR_GPIOEEN + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOF RCC_AHB1ENR_GPIOFEN + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOG RCC_AHB1ENR_GPIOGEN + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOH RCC_AHB1ENR_GPIOHEN + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOI RCC_AHB1ENR_GPIOIEN + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOJ) + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOJ RCC_AHB1ENR_GPIOJEN + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOJ */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOK) + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOK RCC_AHB1ENR_GPIOKEN + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOK */ + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_CRC RCC_AHB1ENR_CRCEN + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_BKPSRAM RCC_AHB1ENR_BKPSRAMEN + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DTCMRAM RCC_AHB1ENR_DTCMRAMEN + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHB1ENR_DMA1EN + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHB1ENR_DMA2EN + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DMA2D) + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2D RCC_AHB1ENR_DMA2DEN + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DMA2D */ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(ETH) + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMAC RCC_AHB1ENR_ETHMACEN + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACTX RCC_AHB1ENR_ETHMACTXEN + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACRX RCC_AHB1ENR_ETHMACRXEN + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACPTP RCC_AHB1ENR_ETHMACPTPEN + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* ETH */ + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHS RCC_AHB1ENR_OTGHSEN + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHSULPI RCC_AHB1ENR_OTGHSULPIEN + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_AXI RCC_AHB1LPENR_AXILPEN + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_FLITF RCC_AHB1LPENR_FLITFLPEN + ARM GAS /tmp/ccI26Lsx.s page 92 + + + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHB1LPENR_SRAM1LPEN + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM2 RCC_AHB1LPENR_SRAM2LPEN + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DCMI) + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_DCMI RCC_AHB2ENR_DCMIEN + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DCMI */ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(JPEG) + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_JPEG RCC_AHB2ENR_JPEGEN + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* JPEG */ + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CRYP) + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_CRYP RCC_AHB2ENR_CRYPEN + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CRYP */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(AES) + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_AES RCC_AHB2ENR_AESEN + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* AES */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(HASH) + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_HASH RCC_AHB2ENR_HASHEN + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* HASH */ + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_RNG RCC_AHB2ENR_RNGEN + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_OTGFS RCC_AHB2ENR_OTGFSEN + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB3_GRP1_PERIPH AHB3 GRP1 PERIPH + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_ALL 0xFFFFFFFFU + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_FMC RCC_AHB3ENR_FMCEN + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_QSPI RCC_AHB3ENR_QSPIEN + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM12 RCC_APB1ENR_TIM12EN + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM13 RCC_APB1ENR_TIM13EN + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM14 RCC_APB1ENR_TIM14EN + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APB1ENR_LPTIM1EN + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN + ARM GAS /tmp/ccI26Lsx.s page 93 + + + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPDIFRX) + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPDIFRX RCC_APB1ENR_SPDIFRXEN + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPDIFRX */ + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C3 RCC_APB1ENR_I2C3EN + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(I2C4) + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C4 RCC_APB1ENR_I2C4EN + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* I2C4 */ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR_CAN1EN + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN2) + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR_CAN2EN + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN2 */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN3) + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN3 RCC_APB1ENR_CAN3EN + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN3 */ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CEC) + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CEC RCC_APB1ENR_CECEN + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CEC */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART7 RCC_APB1ENR_UART7EN + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART8 RCC_APB1ENR_UART8EN + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC_APB1ENR_RTCEN) + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APB1ENR_RTCEN + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* RCC_APB1ENR_RTCEN */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART6 RCC_APB2ENR_USART6EN + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC2 RCC_APB2ENR_ADC2EN + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC3 RCC_APB2ENR_ADC3EN + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC1 RCC_APB2ENR_SDMMC1EN + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SDMMC2) + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC2 RCC_APB2ENR_SDMMC2EN + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SDMMC2 */ + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI4 RCC_APB2ENR_SPI4EN + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI5 RCC_APB2ENR_SPI5EN + ARM GAS /tmp/ccI26Lsx.s page 94 + + + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPI6) + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI6 RCC_APB2ENR_SPI6EN + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPI6 */ + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI1 RCC_APB2ENR_SAI1EN + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI2 RCC_APB2ENR_SAI2EN + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(LTDC) + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_LTDC RCC_APB2ENR_LTDCEN + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* LTDC */ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DSI) + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DSI RCC_APB2ENR_DSIEN + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DSI */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DFSDM1_Channel0) + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DFSDM1 RCC_APB2ENR_DFSDM1EN + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DFSDM1_Channel0 */ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(MDIOS) + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_MDIO RCC_APB2ENR_MDIOEN + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* MDIOS */ + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(USB_HS_PHYC) + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_OTGPHYC RCC_APB2ENR_OTGPHYCEN + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* USB_HS_PHYC */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC RCC_APB2RSTR_ADCRST + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported macro ------------------------------------------------------------*/ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported functions --------------------------------------------------------*/ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB1 AHB1 + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB1 peripherals clock. + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_EnableClock\n + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_EnableClock\n + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_EnableClock\n + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_EnableClock\n + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_EnableClock\n + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_EnableClock\n + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_EnableClock\n + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_EnableClock\n + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_EnableClock\n + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_EnableClock\n + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_EnableClock\n + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_EnableClock\n + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_EnableClock\n + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_EnableClock\n + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_EnableClock\n + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_EnableClock\n + ARM GAS /tmp/ccI26Lsx.s page 95 + + + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_EnableClock\n + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_EnableClock\n + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_EnableClock\n + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_EnableClock\n + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_EnableClock\n + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_EnableClock\n + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIEN LL_AHB1_GRP1_EnableClock + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB1 peripheral clock is enabled or not + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_IsEnabledClock\n + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_IsEnabledClock\n + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_IsEnabledClock\n + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_IsEnabledClock\n + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_IsEnabledClock\n + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_IsEnabledClock\n + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_IsEnabledClock\n + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_IsEnabledClock\n + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_IsEnabledClock\n + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_IsEnabledClock\n + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_IsEnabledClock\n + ARM GAS /tmp/ccI26Lsx.s page 96 + + + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_IsEnabledClock\n + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_IsEnabledClock\n + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_IsEnabledClock\n + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_IsEnabledClock\n + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_IsEnabledClock\n + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_IsEnabledClock\n + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_IsEnabledClock + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB1ENR, Periphs) == Periphs); + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB1 peripherals clock. + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_DisableClock\n + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_DisableClock\n + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_DisableClock\n + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_DisableClock\n + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_DisableClock\n + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_DisableClock\n + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_DisableClock\n + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_DisableClock\n + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_DisableClock\n + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_DisableClock\n + ARM GAS /tmp/ccI26Lsx.s page 97 + + + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_DisableClock\n + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_DisableClock\n + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_DisableClock\n + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_DisableClock\n + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_DisableClock\n + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_DisableClock\n + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_DisableClock\n + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_DisableClock\n + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_DisableClock\n + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_DisableClock\n + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_DisableClock\n + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_DisableClock\n + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_DisableClock + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1ENR, Periphs); + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB1 peripherals reset. + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ForceReset\n + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ForceReset\n + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ForceReset\n + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ForceReset\n + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ForceReset\n + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ForceReset\n + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ForceReset\n + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ForceReset\n + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ForceReset\n + ARM GAS /tmp/ccI26Lsx.s page 98 + + + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ForceReset\n + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ForceReset\n + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ForceReset\n + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset\n + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ForceReset\n + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ForceReset\n + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ForceReset\n + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ForceReset + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1RSTR, Periphs); + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB1 peripherals reset. + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ReleaseReset\n + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ReleaseReset\n + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ReleaseReset\n + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ReleaseReset\n + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ReleaseReset\n + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ReleaseReset\n + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ReleaseReset\n + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ReleaseReset\n + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ReleaseReset\n + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ReleaseReset\n + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ReleaseReset\n + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ReleaseReset\n + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ReleaseReset\n + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ReleaseReset + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + ARM GAS /tmp/ccI26Lsx.s page 99 + + + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1RSTR, Periphs); + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB1 peripheral clocks in low-power mode + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1LPENR GPIOALPEN LL_AHB1_GRP1_EnableClockLowPower\n + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOBLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOCLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIODLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOELPEN LL_AHB1_GRP1_EnableClockLowPower\n + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOFLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOGLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOHLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOILPEN LL_AHB1_GRP1_EnableClockLowPower\n + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOJLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOKLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR CRCLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR AXILPEN LL_AHB1_GRP1_EnableClockLowPower\n + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR FLITFLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM1LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM2LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR BKPSRAMLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DTCMRAMLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA1LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2DLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACTXLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACRXLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACPTPLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSULPILPEN LL_AHB1_GRP1_EnableClockLowPower + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + ARM GAS /tmp/ccI26Lsx.s page 100 + + + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_AXI + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_FLITF + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM2 + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_EnableClockLowPower(uint32_t Periphs) + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1LPENR, Periphs); + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB1LPENR, Periphs); + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB1 peripheral clocks in low-power mode + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1LPENR GPIOALPEN LL_AHB1_GRP1_DisableClockLowPower\n + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOBLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOCLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIODLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOELPEN LL_AHB1_GRP1_DisableClockLowPower\n + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOFLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOGLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOHLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOILPEN LL_AHB1_GRP1_DisableClockLowPower\n + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOJLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOKLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR CRCLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR AXILPEN LL_AHB1_GRP1_DisableClockLowPower\n + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR FLITFLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM1LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM2LPEN LL_AHB1_GRP1_DisableClockLowPower\n + ARM GAS /tmp/ccI26Lsx.s page 101 + + + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR BKPSRAMLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DTCMRAMLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA1LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2DLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACTXLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACRXLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACPTPLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSULPILPEN LL_AHB1_GRP1_DisableClockLowPower + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_AXI + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_FLITF + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM2 + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_DisableClockLowPower(uint32_t Periphs) + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1LPENR, Periphs); + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB2 AHB2 + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + ARM GAS /tmp/ccI26Lsx.s page 102 + + + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB2 peripherals clock. + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_EnableClock\n + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_EnableClock\n + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_EnableClock\n + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_EnableClock\n + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_EnableClock\n + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_EnableClock\n + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_EnableClock + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs) + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2ENR, Periphs); + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB2 peripheral clock is enabled or not + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_IsEnabledClock\n + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_IsEnabledClock\n + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_IsEnabledClock\n + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_IsEnabledClock\n + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_IsEnabledClock\n + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_IsEnabledClock\n + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_IsEnabledClock + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB2_GRP1_IsEnabledClock(uint32_t Periphs) + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB2ENR, Periphs) == Periphs); + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB2 peripherals clock. + ARM GAS /tmp/ccI26Lsx.s page 103 + + + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_DisableClock\n + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_DisableClock\n + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_DisableClock\n + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_DisableClock\n + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_DisableClock\n + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_DisableClock\n + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_DisableClock + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_DisableClock(uint32_t Periphs) + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2ENR, Periphs); + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB2 peripherals reset. + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2RSTR DCMIRST LL_AHB2_GRP1_ForceReset\n + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR JPEGRST LL_AHB2_GRP1_ForceReset\n + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR CRYPRST LL_AHB2_GRP1_ForceReset\n + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR AESRST LL_AHB2_GRP1_ForceReset\n + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR HASHRST LL_AHB2_GRP1_ForceReset\n + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR RNGRST LL_AHB2_GRP1_ForceReset\n + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ForceReset + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_ForceReset(uint32_t Periphs) + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2RSTR, Periphs); + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB2 peripherals reset. + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2RSTR DCMIRST LL_AHB2_GRP1_ReleaseReset\n + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR JPEGRST LL_AHB2_GRP1_ReleaseReset\n + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR CRYPRST LL_AHB2_GRP1_ReleaseReset\n + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR AESRST LL_AHB2_GRP1_ReleaseReset\n + ARM GAS /tmp/ccI26Lsx.s page 104 + + + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR HASHRST LL_AHB2_GRP1_ReleaseReset\n + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR RNGRST LL_AHB2_GRP1_ReleaseReset\n + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ReleaseReset + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_ReleaseReset(uint32_t Periphs) + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2RSTR, Periphs); + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB2 peripheral clocks in low-power mode + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2LPENR DCMILPEN LL_AHB2_GRP1_EnableClockLowPower\n + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR JPEGLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR CRYPLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR AESLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR HASHLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR RNGLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR OTGFSLPEN LL_AHB2_GRP1_EnableClockLowPower + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_EnableClockLowPower(uint32_t Periphs) + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2LPENR, Periphs); + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB2LPENR, Periphs); + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB2 peripheral clocks in low-power mode + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2LPENR DCMILPEN LL_AHB2_GRP1_DisableClockLowPower\n + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR JPEGLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR CRYPLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR AESLPEN LL_AHB2_GRP1_DisableClockLowPower\n + ARM GAS /tmp/ccI26Lsx.s page 105 + + + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR HASHLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR RNGLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR OTGFSLPEN LL_AHB2_GRP1_DisableClockLowPower + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_DisableClockLowPower(uint32_t Periphs) + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2LPENR, Periphs); + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB3 AHB3 + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB3 peripherals clock. + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_EnableClock\n + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_EnableClock + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_EnableClock(uint32_t Periphs) + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3ENR, Periphs); + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB3ENR, Periphs); + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB3 peripheral clock is enabled or not + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_IsEnabledClock\n + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_IsEnabledClock + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + ARM GAS /tmp/ccI26Lsx.s page 106 + + + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB3_GRP1_IsEnabledClock(uint32_t Periphs) + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB3ENR, Periphs) == Periphs); + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB3 peripherals clock. + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_DisableClock\n + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_DisableClock + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_DisableClock(uint32_t Periphs) + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3ENR, Periphs); + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB3 peripherals reset. + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ForceReset\n + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3RSTR QSPIRST LL_AHB3_GRP1_ForceReset + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_ALL + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_ForceReset(uint32_t Periphs) + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3RSTR, Periphs); + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB3 peripherals reset. + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ReleaseReset\n + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3RSTR QSPIRST LL_AHB3_GRP1_ReleaseReset + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_ReleaseReset(uint32_t Periphs) + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3RSTR, Periphs); + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + ARM GAS /tmp/ccI26Lsx.s page 107 + + + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB3 peripheral clocks in low-power mode + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3LPENR FMCLPEN LL_AHB3_GRP1_EnableClockLowPower\n + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3LPENR QSPILPEN LL_AHB3_GRP1_EnableClockLowPower + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_EnableClockLowPower(uint32_t Periphs) + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3LPENR, Periphs); + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB3LPENR, Periphs); + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB3 peripheral clocks in low-power mode + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3LPENR FMCLPEN LL_AHB3_GRP1_DisableClockLowPower\n + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3LPENR QSPILPEN LL_AHB3_GRP1_DisableClockLowPower + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_DisableClockLowPower(uint32_t Periphs) + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3LPENR, Periphs); + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_APB1 APB1 + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB1 peripherals clock. +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_EnableClock\n +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_EnableClock\n +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_EnableClock\n +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_EnableClock\n +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_EnableClock\n +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_EnableClock\n +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_EnableClock\n +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_EnableClock\n +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_EnableClock\n +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_EnableClock\n +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_EnableClock\n + ARM GAS /tmp/ccI26Lsx.s page 108 + + +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_EnableClock\n +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_EnableClock\n +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_EnableClock\n +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_EnableClock\n +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_EnableClock\n +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_EnableClock\n +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_EnableClock\n +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_EnableClock\n +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_EnableClock\n +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_EnableClock\n +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_EnableClock\n +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_EnableClock\n +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_EnableClock\n +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_EnableClock\n +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_EnableClock\n +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_EnableClock\n +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_EnableClock\n +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_EnableClock\n +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_EnableClock\n +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_EnableClock +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) + ARM GAS /tmp/ccI26Lsx.s page 109 + + +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1ENR, Periphs); +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB1ENR, Periphs); +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if APB1 peripheral clock is enabled or not +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_IsEnabledClock\n +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_IsEnabledClock\n +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_IsEnabledClock\n +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_IsEnabledClock\n +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_IsEnabledClock\n +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_IsEnabledClock\n +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_IsEnabledClock\n +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_IsEnabledClock\n +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_IsEnabledClock\n +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_IsEnabledClock\n +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_IsEnabledClock\n +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_IsEnabledClock\n +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_IsEnabledClock\n +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_IsEnabledClock\n +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_IsEnabledClock\n +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_IsEnabledClock\n +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_IsEnabledClock\n +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_IsEnabledClock\n +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_IsEnabledClock\n +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_IsEnabledClock\n +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_IsEnabledClock\n +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_IsEnabledClock\n +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_IsEnabledClock\n +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_IsEnabledClock\n +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_IsEnabledClock\n +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_IsEnabledClock\n +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_IsEnabledClock\n +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_IsEnabledClock\n +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_IsEnabledClock\n +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_IsEnabledClock\n +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_IsEnabledClock +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + ARM GAS /tmp/ccI26Lsx.s page 110 + + +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs) +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->APB1ENR, Periphs) == Periphs); +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB1 peripherals clock. +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_DisableClock\n +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_DisableClock\n +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_DisableClock\n +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_DisableClock\n +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_DisableClock\n +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_DisableClock\n +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_DisableClock\n +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_DisableClock\n +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_DisableClock\n +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_DisableClock\n +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_DisableClock\n +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_DisableClock\n +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_DisableClock\n +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_DisableClock\n +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_DisableClock\n +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_DisableClock\n +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_DisableClock\n +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_DisableClock\n +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_DisableClock\n +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_DisableClock\n +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_DisableClock\n +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_DisableClock\n +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_DisableClock\n +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_DisableClock\n +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_DisableClock\n +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_DisableClock\n +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_DisableClock\n +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_DisableClock\n +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_DisableClock\n +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_DisableClock\n + ARM GAS /tmp/ccI26Lsx.s page 111 + + +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_DisableClock +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs) +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1ENR, Periphs); +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force APB1 peripherals reset. +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ForceReset\n +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM3RST LL_APB1_GRP1_ForceReset\n +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM4RST LL_APB1_GRP1_ForceReset\n +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM5RST LL_APB1_GRP1_ForceReset\n +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM6RST LL_APB1_GRP1_ForceReset\n +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM7RST LL_APB1_GRP1_ForceReset\n +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM12RST LL_APB1_GRP1_ForceReset\n +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM13RST LL_APB1_GRP1_ForceReset\n +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM14RST LL_APB1_GRP1_ForceReset\n +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR LPTIM1RST LL_APB1_GRP1_ForceReset\n +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR WWDGRST LL_APB1_GRP1_ForceReset\n +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI2RST LL_APB1_GRP1_ForceReset\n +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI3RST LL_APB1_GRP1_ForceReset\n + ARM GAS /tmp/ccI26Lsx.s page 112 + + +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPDIFRXRST LL_APB1_GRP1_ForceReset\n +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART2RST LL_APB1_GRP1_ForceReset\n +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART3RST LL_APB1_GRP1_ForceReset\n +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART4RST LL_APB1_GRP1_ForceReset\n +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART5RST LL_APB1_GRP1_ForceReset\n +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C1RST LL_APB1_GRP1_ForceReset\n +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C2RST LL_APB1_GRP1_ForceReset\n +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C3RST LL_APB1_GRP1_ForceReset\n +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C4RST LL_APB1_GRP1_ForceReset\n +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN1RST LL_APB1_GRP1_ForceReset\n +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN2RST LL_APB1_GRP1_ForceReset\n +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN3RST LL_APB1_GRP1_ForceReset\n +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CECRST LL_APB1_GRP1_ForceReset\n +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR PWRRST LL_APB1_GRP1_ForceReset\n +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR DACRST LL_APB1_GRP1_ForceReset\n +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART7RST LL_APB1_GRP1_ForceReset\n +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART8RST LL_APB1_GRP1_ForceReset +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs) +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1RSTR, Periphs); +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + ARM GAS /tmp/ccI26Lsx.s page 113 + + +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release APB1 peripherals reset. +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ReleaseReset\n +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM3RST LL_APB1_GRP1_ReleaseReset\n +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM4RST LL_APB1_GRP1_ReleaseReset\n +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM5RST LL_APB1_GRP1_ReleaseReset\n +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM6RST LL_APB1_GRP1_ReleaseReset\n +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM7RST LL_APB1_GRP1_ReleaseReset\n +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM12RST LL_APB1_GRP1_ReleaseReset\n +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM13RST LL_APB1_GRP1_ReleaseReset\n +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM14RST LL_APB1_GRP1_ReleaseReset\n +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR LPTIM1RST LL_APB1_GRP1_ReleaseReset\n +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR WWDGRST LL_APB1_GRP1_ReleaseReset\n +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI2RST LL_APB1_GRP1_ReleaseReset\n +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI3RST LL_APB1_GRP1_ReleaseReset\n +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPDIFRXRST LL_APB1_GRP1_ReleaseReset\n +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART2RST LL_APB1_GRP1_ReleaseReset\n +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART3RST LL_APB1_GRP1_ReleaseReset\n +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART4RST LL_APB1_GRP1_ReleaseReset\n +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART5RST LL_APB1_GRP1_ReleaseReset\n +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C1RST LL_APB1_GRP1_ReleaseReset\n +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C2RST LL_APB1_GRP1_ReleaseReset\n +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C3RST LL_APB1_GRP1_ReleaseReset\n +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C4RST LL_APB1_GRP1_ReleaseReset\n +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN1RST LL_APB1_GRP1_ReleaseReset\n +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN2RST LL_APB1_GRP1_ReleaseReset\n +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN3RST LL_APB1_GRP1_ReleaseReset\n +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CECRST LL_APB1_GRP1_ReleaseReset\n +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR PWRRST LL_APB1_GRP1_ReleaseReset\n +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR DACRST LL_APB1_GRP1_ReleaseReset\n +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART7RST LL_APB1_GRP1_ReleaseReset\n +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART8RST LL_APB1_GRP1_ReleaseReset +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + ARM GAS /tmp/ccI26Lsx.s page 114 + + +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs) +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1RSTR, Periphs); +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB1 peripheral clocks in low-power mode +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM5LPEN LL_APB1_GRP1_EnableClockLowPower\n +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM6LPEN LL_APB1_GRP1_EnableClockLowPower\n +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM7LPEN LL_APB1_GRP1_EnableClockLowPower\n +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM12LPEN LL_APB1_GRP1_EnableClockLowPower\n +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM13LPEN LL_APB1_GRP1_EnableClockLowPower\n +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM14LPEN LL_APB1_GRP1_EnableClockLowPower\n +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR LPTIM1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR WWDGLPEN LL_APB1_GRP1_EnableClockLowPower\n +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPDIFRXLPEN LL_APB1_GRP1_EnableClockLowPower\n +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART5LPEN LL_APB1_GRP1_EnableClockLowPower\n +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CECLPEN LL_APB1_GRP1_EnableClockLowPower\n +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR PWRLPEN LL_APB1_GRP1_EnableClockLowPower\n +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR DACLPEN LL_APB1_GRP1_EnableClockLowPower\n +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART7LPEN LL_APB1_GRP1_EnableClockLowPower\n +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART8LPEN LL_APB1_GRP1_EnableClockLowPower\n +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR RTCLPEN LL_APB1_GRP1_EnableClockLowPower +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 + ARM GAS /tmp/ccI26Lsx.s page 115 + + +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_EnableClockLowPower(uint32_t Periphs) +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1LPENR, Periphs); +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB1LPENR, Periphs); +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB1 peripheral clocks in low-power mode +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM5LPEN LL_APB1_GRP1_DisableClockLowPower\n +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM6LPEN LL_APB1_GRP1_DisableClockLowPower\n +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM7LPEN LL_APB1_GRP1_DisableClockLowPower\n +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM12LPEN LL_APB1_GRP1_DisableClockLowPower\n +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM13LPEN LL_APB1_GRP1_DisableClockLowPower\n +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM14LPEN LL_APB1_GRP1_DisableClockLowPower\n +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR LPTIM1LPEN LL_APB1_GRP1_DisableClockLowPower\n +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR WWDGLPEN LL_APB1_GRP1_DisableClockLowPower\n +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPDIFRXLPEN LL_APB1_GRP1_DisableClockLowPower\n +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART5LPEN LL_APB1_GRP1_DisableClockLowPower\n +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C1LPEN LL_APB1_GRP1_DisableClockLowPower\n + ARM GAS /tmp/ccI26Lsx.s page 116 + + +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN1LPEN LL_APB1_GRP1_DisableClockLowPower\n +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CECLPEN LL_APB1_GRP1_DisableClockLowPower\n +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR PWRLPEN LL_APB1_GRP1_DisableClockLowPower\n +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR DACLPEN LL_APB1_GRP1_DisableClockLowPower\n +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART7LPEN LL_APB1_GRP1_DisableClockLowPower\n +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART8LPEN LL_APB1_GRP1_DisableClockLowPower\n +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR RTCLPEN LL_APB1_GRP1_DisableClockLowPower +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_DisableClockLowPower(uint32_t Periphs) +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1LPENR, Periphs); +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + ARM GAS /tmp/ccI26Lsx.s page 117 + + +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_APB2 APB2 +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB2 peripherals clock. +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_EnableClock\n +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM8EN LL_APB2_GRP1_EnableClock\n +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART1EN LL_APB2_GRP1_EnableClock\n +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART6EN LL_APB2_GRP1_EnableClock\n +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC1EN LL_APB2_GRP1_EnableClock\n +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC2EN LL_APB2_GRP1_EnableClock\n +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC3EN LL_APB2_GRP1_EnableClock\n +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC1EN LL_APB2_GRP1_EnableClock\n +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC2EN LL_APB2_GRP1_EnableClock\n +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI4EN LL_APB2_GRP1_EnableClock\n +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SYSCFGEN LL_APB2_GRP1_EnableClock\n +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM9EN LL_APB2_GRP1_EnableClock\n +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM10EN LL_APB2_GRP1_EnableClock\n +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM11EN LL_APB2_GRP1_EnableClock\n +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI5EN LL_APB2_GRP1_EnableClock\n +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI6EN LL_APB2_GRP1_EnableClock\n +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI1EN LL_APB2_GRP1_EnableClock\n +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI2EN LL_APB2_GRP1_EnableClock\n +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR LTDCEN LL_APB2_GRP1_EnableClock\n +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DSIEN LL_APB2_GRP1_EnableClock\n +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DFSDM1EN LL_APB2_GRP1_EnableClock\n +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR MDIOEN LL_APB2_GRP1_EnableClock\n +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR OTGPHYCEN LL_APB2_GRP1_EnableClock +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + ARM GAS /tmp/ccI26Lsx.s page 118 + + +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB2ENR, Periphs); +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB2ENR, Periphs); +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if APB2 peripheral clock is enabled or not +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_IsEnabledClock\n +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM8EN LL_APB2_GRP1_IsEnabledClock\n +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock\n +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART6EN LL_APB2_GRP1_IsEnabledClock\n +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC1EN LL_APB2_GRP1_IsEnabledClock\n +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC2EN LL_APB2_GRP1_IsEnabledClock\n +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC3EN LL_APB2_GRP1_IsEnabledClock\n +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC1EN LL_APB2_GRP1_IsEnabledClock\n +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC2EN LL_APB2_GRP1_IsEnabledClock\n +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI4EN LL_APB2_GRP1_IsEnabledClock\n +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SYSCFGEN LL_APB2_GRP1_IsEnabledClock\n +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM9EN LL_APB2_GRP1_IsEnabledClock\n +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM10EN LL_APB2_GRP1_IsEnabledClock\n +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM11EN LL_APB2_GRP1_IsEnabledClock\n +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI5EN LL_APB2_GRP1_IsEnabledClock\n +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI6EN LL_APB2_GRP1_IsEnabledClock\n +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI1EN LL_APB2_GRP1_IsEnabledClock\n +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI2EN LL_APB2_GRP1_IsEnabledClock\n +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR LTDCEN LL_APB2_GRP1_IsEnabledClock\n +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DSIEN LL_APB2_GRP1_IsEnabledClock\n +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DFSDM1EN LL_APB2_GRP1_IsEnabledClock\n +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR MDIOEN LL_APB2_GRP1_IsEnabledClock\n +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR OTGPHYCEN LL_APB2_GRP1_IsEnabledClock +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 + ARM GAS /tmp/ccI26Lsx.s page 119 + + +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs) +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->APB2ENR, Periphs) == Periphs); +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB2 peripherals clock. +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_DisableClock\n +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM8EN LL_APB2_GRP1_DisableClock\n +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART1EN LL_APB2_GRP1_DisableClock\n +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART6EN LL_APB2_GRP1_DisableClock\n +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC1EN LL_APB2_GRP1_DisableClock\n +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC2EN LL_APB2_GRP1_DisableClock\n +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC3EN LL_APB2_GRP1_DisableClock\n +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC1EN LL_APB2_GRP1_DisableClock\n +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC2EN LL_APB2_GRP1_DisableClock\n +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI4EN LL_APB2_GRP1_DisableClock\n +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SYSCFGEN LL_APB2_GRP1_DisableClock\n +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM9EN LL_APB2_GRP1_DisableClock\n +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM10EN LL_APB2_GRP1_DisableClock\n +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM11EN LL_APB2_GRP1_DisableClock\n +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI5EN LL_APB2_GRP1_DisableClock\n +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI6EN LL_APB2_GRP1_DisableClock\n +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI1EN LL_APB2_GRP1_DisableClock\n +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI2EN LL_APB2_GRP1_DisableClock\n +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR LTDCEN LL_APB2_GRP1_DisableClock\n +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DSIEN LL_APB2_GRP1_DisableClock\n +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DFSDM1EN LL_APB2_GRP1_DisableClock\n +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR MDIOEN LL_APB2_GRP1_DisableClock\n +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR OTGPHYCEN LL_APB2_GRP1_DisableClock +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 + ARM GAS /tmp/ccI26Lsx.s page 120 + + +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs) +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB2ENR, Periphs); +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force APB2 peripherals reset. +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset\n +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM8RST LL_APB2_GRP1_ForceReset\n +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset\n +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART6RST LL_APB2_GRP1_ForceReset\n +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR ADCRST LL_APB2_GRP1_ForceReset\n +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC1RST LL_APB2_GRP1_ForceReset\n +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC2RST LL_APB2_GRP1_ForceReset\n +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI4RST LL_APB2_GRP1_ForceReset\n +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SYSCFGRST LL_APB2_GRP1_ForceReset\n +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM9RST LL_APB2_GRP1_ForceReset\n +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM10RST LL_APB2_GRP1_ForceReset\n +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM11RST LL_APB2_GRP1_ForceReset\n +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI5RST LL_APB2_GRP1_ForceReset\n +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI6RST LL_APB2_GRP1_ForceReset\n +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI1RST LL_APB2_GRP1_ForceReset\n +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI2RST LL_APB2_GRP1_ForceReset\n +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR LTDCRST LL_APB2_GRP1_ForceReset\n +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DSIRST LL_APB2_GRP1_ForceReset\n +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DFSDM1RST LL_APB2_GRP1_ForceReset\n +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR MDIORST LL_APB2_GRP1_ForceReset\n +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR OTGPHYCRST LL_APB2_GRP1_ForceReset +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ALL +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 + ARM GAS /tmp/ccI26Lsx.s page 121 + + +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs) + 1185 .loc 3 1768 22 view .LVU355 + 1186 .LBB95: +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB2RSTR, Periphs); + 1187 .loc 3 1770 3 view .LVU356 + 1188 0060 03F59C33 add r3, r3, #79872 + 1189 0064 5A6A ldr r2, [r3, #36] + 1190 0066 42F00102 orr r2, r2, #1 + 1191 006a 5A62 str r2, [r3, #36] + 1192 .LVL118: + 1193 .loc 3 1770 3 is_stmt 0 view .LVU357 + 1194 .LBE95: + 1195 .LBE94: + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1196 .loc 1 226 5 is_stmt 1 view .LVU358 + 1197 .LBB96: + 1198 .LBI96: +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release APB2 peripherals reset. +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2RSTR TIM1RST LL_APB2_GRP1_ReleaseReset\n +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM8RST LL_APB2_GRP1_ReleaseReset\n +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART1RST LL_APB2_GRP1_ReleaseReset\n +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART6RST LL_APB2_GRP1_ReleaseReset\n +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR ADCRST LL_APB2_GRP1_ReleaseReset\n +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC1RST LL_APB2_GRP1_ReleaseReset\n +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC2RST LL_APB2_GRP1_ReleaseReset\n +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI1RST LL_APB2_GRP1_ReleaseReset\n +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI4RST LL_APB2_GRP1_ReleaseReset\n +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SYSCFGRST LL_APB2_GRP1_ReleaseReset\n +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM9RST LL_APB2_GRP1_ReleaseReset\n +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM10RST LL_APB2_GRP1_ReleaseReset\n +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM11RST LL_APB2_GRP1_ReleaseReset\n +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI5RST LL_APB2_GRP1_ReleaseReset\n +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI6RST LL_APB2_GRP1_ReleaseReset\n +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI1RST LL_APB2_GRP1_ReleaseReset\n +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI2RST LL_APB2_GRP1_ReleaseReset\n +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR LTDCRST LL_APB2_GRP1_ReleaseReset\n +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DSIRST LL_APB2_GRP1_ReleaseReset\n +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DFSDM1RST LL_APB2_GRP1_ReleaseReset\n +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR MDIORST LL_APB2_GRP1_ReleaseReset\n +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR OTGPHYCRST LL_APB2_GRP1_ReleaseReset +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + ARM GAS /tmp/ccI26Lsx.s page 122 + + +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ALL +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs) + 1199 .loc 3 1825 22 view .LVU359 + 1200 .LBB97: +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB2RSTR, Periphs); + 1201 .loc 3 1827 3 view .LVU360 + 1202 006c 5A6A ldr r2, [r3, #36] + 1203 006e 22F00102 bic r2, r2, #1 + 1204 0072 5A62 str r2, [r3, #36] + 1205 .LBE97: + 1206 .LBE96: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1207 .loc 1 218 15 is_stmt 0 view .LVU361 + 1208 0074 0020 movs r0, #0 + 1209 .LVL119: + 1210 .LBB99: + 1211 .LBB98: +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1212 .loc 3 1828 1 view .LVU362 + 1213 0076 7047 bx lr + 1214 .LVL120: + 1215 .L56: + 1216 .loc 3 1828 1 view .LVU363 + 1217 .LBE98: + 1218 .LBE99: + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM2); + 1219 .loc 1 230 5 is_stmt 1 view .LVU364 + 1220 .LBB100: + 1221 .LBI100: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + ARM GAS /tmp/ccI26Lsx.s page 123 + + + 1222 .loc 3 1295 22 view .LVU365 + 1223 .LBB101: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1224 .loc 3 1297 3 view .LVU366 + 1225 0078 5A4B ldr r3, .L69+52 + 1226 007a 1A6A ldr r2, [r3, #32] + 1227 007c 42F00102 orr r2, r2, #1 + 1228 0080 1A62 str r2, [r3, #32] + 1229 .LVL121: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1230 .loc 3 1297 3 is_stmt 0 view .LVU367 + 1231 .LBE101: + 1232 .LBE100: + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1233 .loc 1 231 5 is_stmt 1 view .LVU368 + 1234 .LBB102: + 1235 .LBI102: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1236 .loc 3 1367 22 view .LVU369 + 1237 .LBB103: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1238 .loc 3 1369 3 view .LVU370 + 1239 0082 1A6A ldr r2, [r3, #32] + 1240 0084 22F00102 bic r2, r2, #1 + 1241 0088 1A62 str r2, [r3, #32] + 1242 .LBE103: + 1243 .LBE102: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1244 .loc 1 218 15 is_stmt 0 view .LVU371 + 1245 008a 0020 movs r0, #0 + 1246 .LVL122: + 1247 .LBB105: + 1248 .LBB104: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1249 .loc 3 1370 1 view .LVU372 + 1250 008c 7047 bx lr + 1251 .LVL123: + 1252 .L57: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1253 .loc 3 1370 1 view .LVU373 + 1254 .LBE104: + 1255 .LBE105: + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM3); + 1256 .loc 1 236 5 is_stmt 1 view .LVU374 + 1257 .LBB106: + 1258 .LBI106: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1259 .loc 3 1295 22 view .LVU375 + 1260 .LBB107: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1261 .loc 3 1297 3 view .LVU376 + 1262 008e 03F50D33 add r3, r3, #144384 + 1263 0092 1A6A ldr r2, [r3, #32] + 1264 0094 42F00202 orr r2, r2, #2 + 1265 0098 1A62 str r2, [r3, #32] + 1266 .LVL124: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + ARM GAS /tmp/ccI26Lsx.s page 124 + + + 1267 .loc 3 1297 3 is_stmt 0 view .LVU377 + 1268 .LBE107: + 1269 .LBE106: + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1270 .loc 1 237 5 is_stmt 1 view .LVU378 + 1271 .LBB108: + 1272 .LBI108: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1273 .loc 3 1367 22 view .LVU379 + 1274 .LBB109: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1275 .loc 3 1369 3 view .LVU380 + 1276 009a 1A6A ldr r2, [r3, #32] + 1277 009c 22F00202 bic r2, r2, #2 + 1278 00a0 1A62 str r2, [r3, #32] + 1279 .LBE109: + 1280 .LBE108: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1281 .loc 1 218 15 is_stmt 0 view .LVU381 + 1282 00a2 0020 movs r0, #0 + 1283 .LVL125: + 1284 .LBB111: + 1285 .LBB110: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1286 .loc 3 1370 1 view .LVU382 + 1287 00a4 7047 bx lr + 1288 .LVL126: + 1289 .L58: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1290 .loc 3 1370 1 view .LVU383 + 1291 .LBE110: + 1292 .LBE111: + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM4); + 1293 .loc 1 243 5 is_stmt 1 view .LVU384 + 1294 .LBB112: + 1295 .LBI112: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1296 .loc 3 1295 22 view .LVU385 + 1297 .LBB113: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1298 .loc 3 1297 3 view .LVU386 + 1299 00a6 03F50C33 add r3, r3, #143360 + 1300 00aa 1A6A ldr r2, [r3, #32] + 1301 00ac 42F00402 orr r2, r2, #4 + 1302 00b0 1A62 str r2, [r3, #32] + 1303 .LVL127: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1304 .loc 3 1297 3 is_stmt 0 view .LVU387 + 1305 .LBE113: + 1306 .LBE112: + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1307 .loc 1 244 5 is_stmt 1 view .LVU388 + 1308 .LBB114: + 1309 .LBI114: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1310 .loc 3 1367 22 view .LVU389 + 1311 .LBB115: + ARM GAS /tmp/ccI26Lsx.s page 125 + + +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1312 .loc 3 1369 3 view .LVU390 + 1313 00b2 1A6A ldr r2, [r3, #32] + 1314 00b4 22F00402 bic r2, r2, #4 + 1315 00b8 1A62 str r2, [r3, #32] + 1316 .LBE115: + 1317 .LBE114: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1318 .loc 1 218 15 is_stmt 0 view .LVU391 + 1319 00ba 0020 movs r0, #0 + 1320 .LVL128: + 1321 .LBB117: + 1322 .LBB116: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1323 .loc 3 1370 1 view .LVU392 + 1324 00bc 7047 bx lr + 1325 .LVL129: + 1326 .L59: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1327 .loc 3 1370 1 view .LVU393 + 1328 .LBE116: + 1329 .LBE117: + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM5); + 1330 .loc 1 250 5 is_stmt 1 view .LVU394 + 1331 .LBB118: + 1332 .LBI118: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1333 .loc 3 1295 22 view .LVU395 + 1334 .LBB119: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1335 .loc 3 1297 3 view .LVU396 + 1336 00be 03F50B33 add r3, r3, #142336 + 1337 00c2 1A6A ldr r2, [r3, #32] + 1338 00c4 42F00802 orr r2, r2, #8 + 1339 00c8 1A62 str r2, [r3, #32] + 1340 .LVL130: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1341 .loc 3 1297 3 is_stmt 0 view .LVU397 + 1342 .LBE119: + 1343 .LBE118: + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1344 .loc 1 251 5 is_stmt 1 view .LVU398 + 1345 .LBB120: + 1346 .LBI120: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1347 .loc 3 1367 22 view .LVU399 + 1348 .LBB121: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1349 .loc 3 1369 3 view .LVU400 + 1350 00ca 1A6A ldr r2, [r3, #32] + 1351 00cc 22F00802 bic r2, r2, #8 + 1352 00d0 1A62 str r2, [r3, #32] + 1353 .LBE121: + 1354 .LBE120: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1355 .loc 1 218 15 is_stmt 0 view .LVU401 + 1356 00d2 0020 movs r0, #0 + ARM GAS /tmp/ccI26Lsx.s page 126 + + + 1357 .LVL131: + 1358 .LBB123: + 1359 .LBB122: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1360 .loc 3 1370 1 view .LVU402 + 1361 00d4 7047 bx lr + 1362 .LVL132: + 1363 .L60: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1364 .loc 3 1370 1 view .LVU403 + 1365 .LBE122: + 1366 .LBE123: + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM6); + 1367 .loc 1 257 5 is_stmt 1 view .LVU404 + 1368 .LBB124: + 1369 .LBI124: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1370 .loc 3 1295 22 view .LVU405 + 1371 .LBB125: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1372 .loc 3 1297 3 view .LVU406 + 1373 00d6 03F50A33 add r3, r3, #141312 + 1374 00da 1A6A ldr r2, [r3, #32] + 1375 00dc 42F01002 orr r2, r2, #16 + 1376 00e0 1A62 str r2, [r3, #32] + 1377 .LVL133: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1378 .loc 3 1297 3 is_stmt 0 view .LVU407 + 1379 .LBE125: + 1380 .LBE124: + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1381 .loc 1 258 5 is_stmt 1 view .LVU408 + 1382 .LBB126: + 1383 .LBI126: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1384 .loc 3 1367 22 view .LVU409 + 1385 .LBB127: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1386 .loc 3 1369 3 view .LVU410 + 1387 00e2 1A6A ldr r2, [r3, #32] + 1388 00e4 22F01002 bic r2, r2, #16 + 1389 00e8 1A62 str r2, [r3, #32] + 1390 .LBE127: + 1391 .LBE126: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1392 .loc 1 218 15 is_stmt 0 view .LVU411 + 1393 00ea 0020 movs r0, #0 + 1394 .LVL134: + 1395 .LBB129: + 1396 .LBB128: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1397 .loc 3 1370 1 view .LVU412 + 1398 00ec 7047 bx lr + 1399 .LVL135: + 1400 .L61: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1401 .loc 3 1370 1 view .LVU413 + ARM GAS /tmp/ccI26Lsx.s page 127 + + + 1402 .LBE128: + 1403 .LBE129: + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM7); + 1404 .loc 1 264 5 is_stmt 1 view .LVU414 + 1405 .LBB130: + 1406 .LBI130: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1407 .loc 3 1295 22 view .LVU415 + 1408 .LBB131: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1409 .loc 3 1297 3 view .LVU416 + 1410 00ee 03F50933 add r3, r3, #140288 + 1411 00f2 1A6A ldr r2, [r3, #32] + 1412 00f4 42F02002 orr r2, r2, #32 + 1413 00f8 1A62 str r2, [r3, #32] + 1414 .LVL136: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1415 .loc 3 1297 3 is_stmt 0 view .LVU417 + 1416 .LBE131: + 1417 .LBE130: + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1418 .loc 1 265 5 is_stmt 1 view .LVU418 + 1419 .LBB132: + 1420 .LBI132: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1421 .loc 3 1367 22 view .LVU419 + 1422 .LBB133: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1423 .loc 3 1369 3 view .LVU420 + 1424 00fa 1A6A ldr r2, [r3, #32] + 1425 00fc 22F02002 bic r2, r2, #32 + 1426 0100 1A62 str r2, [r3, #32] + 1427 .LBE133: + 1428 .LBE132: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1429 .loc 1 218 15 is_stmt 0 view .LVU421 + 1430 0102 0020 movs r0, #0 + 1431 .LVL137: + 1432 .LBB135: + 1433 .LBB134: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1434 .loc 3 1370 1 view .LVU422 + 1435 0104 7047 bx lr + 1436 .LVL138: + 1437 .L62: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1438 .loc 3 1370 1 view .LVU423 + 1439 .LBE134: + 1440 .LBE135: + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM8); + 1441 .loc 1 271 5 is_stmt 1 view .LVU424 + 1442 .LBB136: + 1443 .LBI136: +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1444 .loc 3 1768 22 view .LVU425 + 1445 .LBB137: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + ARM GAS /tmp/ccI26Lsx.s page 128 + + + 1446 .loc 3 1770 3 view .LVU426 + 1447 0106 03F59A33 add r3, r3, #78848 + 1448 010a 5A6A ldr r2, [r3, #36] + 1449 010c 42F00202 orr r2, r2, #2 + 1450 0110 5A62 str r2, [r3, #36] + 1451 .LVL139: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1452 .loc 3 1770 3 is_stmt 0 view .LVU427 + 1453 .LBE137: + 1454 .LBE136: + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1455 .loc 1 272 5 is_stmt 1 view .LVU428 + 1456 .LBB138: + 1457 .LBI138: +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1458 .loc 3 1825 22 view .LVU429 + 1459 .LBB139: +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1460 .loc 3 1827 3 view .LVU430 + 1461 0112 5A6A ldr r2, [r3, #36] + 1462 0114 22F00202 bic r2, r2, #2 + 1463 0118 5A62 str r2, [r3, #36] + 1464 .LBE139: + 1465 .LBE138: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1466 .loc 1 218 15 is_stmt 0 view .LVU431 + 1467 011a 0020 movs r0, #0 + 1468 .LVL140: + 1469 .LBB141: + 1470 .LBB140: + 1471 .loc 3 1828 1 view .LVU432 + 1472 011c 7047 bx lr + 1473 .LVL141: + 1474 .L63: + 1475 .loc 3 1828 1 view .LVU433 + 1476 .LBE140: + 1477 .LBE141: + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM9); + 1478 .loc 1 278 5 is_stmt 1 view .LVU434 + 1479 .LBB142: + 1480 .LBI142: +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1481 .loc 3 1768 22 view .LVU435 + 1482 .LBB143: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1483 .loc 3 1770 3 view .LVU436 + 1484 011e 03F57843 add r3, r3, #63488 + 1485 0122 5A6A ldr r2, [r3, #36] + 1486 0124 42F48032 orr r2, r2, #65536 + 1487 0128 5A62 str r2, [r3, #36] + 1488 .LVL142: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1489 .loc 3 1770 3 is_stmt 0 view .LVU437 + 1490 .LBE143: + 1491 .LBE142: + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1492 .loc 1 279 5 is_stmt 1 view .LVU438 + ARM GAS /tmp/ccI26Lsx.s page 129 + + + 1493 .LBB144: + 1494 .LBI144: +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1495 .loc 3 1825 22 view .LVU439 + 1496 .LBB145: +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1497 .loc 3 1827 3 view .LVU440 + 1498 012a 5A6A ldr r2, [r3, #36] + 1499 012c 22F48032 bic r2, r2, #65536 + 1500 0130 5A62 str r2, [r3, #36] + 1501 .LBE145: + 1502 .LBE144: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1503 .loc 1 218 15 is_stmt 0 view .LVU441 + 1504 0132 0020 movs r0, #0 + 1505 .LVL143: + 1506 .LBB147: + 1507 .LBB146: + 1508 .loc 3 1828 1 view .LVU442 + 1509 0134 7047 bx lr + 1510 .LVL144: + 1511 .L64: + 1512 .loc 3 1828 1 view .LVU443 + 1513 .LBE146: + 1514 .LBE147: + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM10); + 1515 .loc 1 285 5 is_stmt 1 view .LVU444 + 1516 .LBB148: + 1517 .LBI148: +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1518 .loc 3 1768 22 view .LVU445 + 1519 .LBB149: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1520 .loc 3 1770 3 view .LVU446 + 1521 0136 03F57443 add r3, r3, #62464 + 1522 013a 5A6A ldr r2, [r3, #36] + 1523 013c 42F40032 orr r2, r2, #131072 + 1524 0140 5A62 str r2, [r3, #36] + 1525 .LVL145: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1526 .loc 3 1770 3 is_stmt 0 view .LVU447 + 1527 .LBE149: + 1528 .LBE148: + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1529 .loc 1 286 5 is_stmt 1 view .LVU448 + 1530 .LBB150: + 1531 .LBI150: +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1532 .loc 3 1825 22 view .LVU449 + 1533 .LBB151: +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1534 .loc 3 1827 3 view .LVU450 + 1535 0142 5A6A ldr r2, [r3, #36] + 1536 0144 22F40032 bic r2, r2, #131072 + 1537 0148 5A62 str r2, [r3, #36] + 1538 .LBE151: + 1539 .LBE150: + ARM GAS /tmp/ccI26Lsx.s page 130 + + + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1540 .loc 1 218 15 is_stmt 0 view .LVU451 + 1541 014a 0020 movs r0, #0 + 1542 .LVL146: + 1543 .LBB153: + 1544 .LBB152: + 1545 .loc 3 1828 1 view .LVU452 + 1546 014c 7047 bx lr + 1547 .LVL147: + 1548 .L65: + 1549 .loc 3 1828 1 view .LVU453 + 1550 .LBE152: + 1551 .LBE153: + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM11); + 1552 .loc 1 292 5 is_stmt 1 view .LVU454 + 1553 .LBB154: + 1554 .LBI154: +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1555 .loc 3 1768 22 view .LVU455 + 1556 .LBB155: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1557 .loc 3 1770 3 view .LVU456 + 1558 014e 03F57043 add r3, r3, #61440 + 1559 0152 5A6A ldr r2, [r3, #36] + 1560 0154 42F48022 orr r2, r2, #262144 + 1561 0158 5A62 str r2, [r3, #36] + 1562 .LVL148: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1563 .loc 3 1770 3 is_stmt 0 view .LVU457 + 1564 .LBE155: + 1565 .LBE154: + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1566 .loc 1 293 5 is_stmt 1 view .LVU458 + 1567 .LBB156: + 1568 .LBI156: +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1569 .loc 3 1825 22 view .LVU459 + 1570 .LBB157: +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1571 .loc 3 1827 3 view .LVU460 + 1572 015a 5A6A ldr r2, [r3, #36] + 1573 015c 22F48022 bic r2, r2, #262144 + 1574 0160 5A62 str r2, [r3, #36] + 1575 .LBE157: + 1576 .LBE156: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1577 .loc 1 218 15 is_stmt 0 view .LVU461 + 1578 0162 0020 movs r0, #0 + 1579 .LVL149: + 1580 .LBB159: + 1581 .LBB158: + 1582 .loc 3 1828 1 view .LVU462 + 1583 0164 7047 bx lr + 1584 .LVL150: + 1585 .L66: + 1586 .loc 3 1828 1 view .LVU463 + 1587 .LBE158: + ARM GAS /tmp/ccI26Lsx.s page 131 + + + 1588 .LBE159: + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM12); + 1589 .loc 1 299 5 is_stmt 1 view .LVU464 + 1590 .LBB160: + 1591 .LBI160: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1592 .loc 3 1295 22 view .LVU465 + 1593 .LBB161: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1594 .loc 3 1297 3 view .LVU466 + 1595 0166 03F50833 add r3, r3, #139264 + 1596 016a 1A6A ldr r2, [r3, #32] + 1597 016c 42F04002 orr r2, r2, #64 + 1598 0170 1A62 str r2, [r3, #32] + 1599 .LVL151: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1600 .loc 3 1297 3 is_stmt 0 view .LVU467 + 1601 .LBE161: + 1602 .LBE160: + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1603 .loc 1 300 5 is_stmt 1 view .LVU468 + 1604 .LBB162: + 1605 .LBI162: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1606 .loc 3 1367 22 view .LVU469 + 1607 .LBB163: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1608 .loc 3 1369 3 view .LVU470 + 1609 0172 1A6A ldr r2, [r3, #32] + 1610 0174 22F04002 bic r2, r2, #64 + 1611 0178 1A62 str r2, [r3, #32] + 1612 .LBE163: + 1613 .LBE162: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1614 .loc 1 218 15 is_stmt 0 view .LVU471 + 1615 017a 0020 movs r0, #0 + 1616 .LVL152: + 1617 .LBB165: + 1618 .LBB164: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1619 .loc 3 1370 1 view .LVU472 + 1620 017c 7047 bx lr + 1621 .LVL153: + 1622 .L67: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1623 .loc 3 1370 1 view .LVU473 + 1624 .LBE164: + 1625 .LBE165: + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM13); + 1626 .loc 1 306 5 is_stmt 1 view .LVU474 + 1627 .LBB166: + 1628 .LBI166: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1629 .loc 3 1295 22 view .LVU475 + 1630 .LBB167: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1631 .loc 3 1297 3 view .LVU476 + ARM GAS /tmp/ccI26Lsx.s page 132 + + + 1632 017e 03F50733 add r3, r3, #138240 + 1633 0182 1A6A ldr r2, [r3, #32] + 1634 0184 42F08002 orr r2, r2, #128 + 1635 0188 1A62 str r2, [r3, #32] + 1636 .LVL154: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1637 .loc 3 1297 3 is_stmt 0 view .LVU477 + 1638 .LBE167: + 1639 .LBE166: + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1640 .loc 1 307 5 is_stmt 1 view .LVU478 + 1641 .LBB168: + 1642 .LBI168: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1643 .loc 3 1367 22 view .LVU479 + 1644 .LBB169: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1645 .loc 3 1369 3 view .LVU480 + 1646 018a 1A6A ldr r2, [r3, #32] + 1647 018c 22F08002 bic r2, r2, #128 + 1648 0190 1A62 str r2, [r3, #32] + 1649 .LBE169: + 1650 .LBE168: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1651 .loc 1 218 15 is_stmt 0 view .LVU481 + 1652 0192 0020 movs r0, #0 + 1653 .LVL155: + 1654 .LBB171: + 1655 .LBB170: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1656 .loc 3 1370 1 view .LVU482 + 1657 0194 7047 bx lr + 1658 .LVL156: + 1659 .L68: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1660 .loc 3 1370 1 view .LVU483 + 1661 .LBE170: + 1662 .LBE171: + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM14); + 1663 .loc 1 313 5 is_stmt 1 view .LVU484 + 1664 .LBB172: + 1665 .LBI172: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1666 .loc 3 1295 22 view .LVU485 + 1667 .LBB173: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1668 .loc 3 1297 3 view .LVU486 + 1669 0196 03F50633 add r3, r3, #137216 + 1670 019a 1A6A ldr r2, [r3, #32] + 1671 019c 42F48072 orr r2, r2, #256 + 1672 01a0 1A62 str r2, [r3, #32] + 1673 .LVL157: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1674 .loc 3 1297 3 is_stmt 0 view .LVU487 + 1675 .LBE173: + 1676 .LBE172: + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + ARM GAS /tmp/ccI26Lsx.s page 133 + + + 1677 .loc 1 314 5 is_stmt 1 view .LVU488 + 1678 .LBB174: + 1679 .LBI174: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 1680 .loc 3 1367 22 view .LVU489 + 1681 .LBB175: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 1682 .loc 3 1369 3 view .LVU490 + 1683 01a2 1A6A ldr r2, [r3, #32] + 1684 01a4 22F48072 bic r2, r2, #256 + 1685 01a8 1A62 str r2, [r3, #32] + 1686 .LBE175: + 1687 .LBE174: + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1688 .loc 1 218 15 is_stmt 0 view .LVU491 + 1689 01aa 0020 movs r0, #0 + 1690 .LVL158: + 1691 .LBB177: + 1692 .LBB176: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 1693 .loc 3 1370 1 view .LVU492 + 1694 01ac 7047 bx lr + 1695 .L70: + 1696 01ae 00BF .align 2 + 1697 .L69: + 1698 01b0 00000140 .word 1073807360 + 1699 01b4 00040040 .word 1073742848 + 1700 01b8 00080040 .word 1073743872 + 1701 01bc 000C0040 .word 1073744896 + 1702 01c0 00100040 .word 1073745920 + 1703 01c4 00140040 .word 1073746944 + 1704 01c8 00040140 .word 1073808384 + 1705 01cc 00400140 .word 1073823744 + 1706 01d0 00440140 .word 1073824768 + 1707 01d4 00480140 .word 1073825792 + 1708 01d8 00180040 .word 1073747968 + 1709 01dc 001C0040 .word 1073748992 + 1710 01e0 00200040 .word 1073750016 + 1711 01e4 00380240 .word 1073887232 + 1712 .LBE176: + 1713 .LBE177: + 1714 .cfi_endproc + 1715 .LFE378: + 1717 .section .text.LL_TIM_StructInit,"ax",%progbits + 1718 .align 1 + 1719 .global LL_TIM_StructInit + 1720 .syntax unified + 1721 .thumb + 1722 .thumb_func + 1723 .fpu fpv5-d16 + 1725 LL_TIM_StructInit: + 1726 .LVL159: + 1727 .LFB379: + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 1728 .loc 1 332 1 is_stmt 1 view -0 + 1729 .cfi_startproc + 1730 @ args = 0, pretend = 0, frame = 0 + ARM GAS /tmp/ccI26Lsx.s page 134 + + + 1731 @ frame_needed = 0, uses_anonymous_args = 0 + 1732 @ link register save eliminated. + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->CounterMode = LL_TIM_COUNTERMODE_UP; + 1733 .loc 1 334 3 view .LVU494 + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->CounterMode = LL_TIM_COUNTERMODE_UP; + 1734 .loc 1 334 37 is_stmt 0 view .LVU495 + 1735 0000 0023 movs r3, #0 + 1736 0002 0380 strh r3, [r0] @ movhi + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->Autoreload = 0xFFFFFFFFU; + 1737 .loc 1 335 3 is_stmt 1 view .LVU496 + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->Autoreload = 0xFFFFFFFFU; + 1738 .loc 1 335 37 is_stmt 0 view .LVU497 + 1739 0004 4360 str r3, [r0, #4] + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + 1740 .loc 1 336 3 is_stmt 1 view .LVU498 + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + 1741 .loc 1 336 37 is_stmt 0 view .LVU499 + 1742 0006 4FF0FF32 mov r2, #-1 + 1743 000a 8260 str r2, [r0, #8] + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->RepetitionCounter = 0x00000000U; + 1744 .loc 1 337 3 is_stmt 1 view .LVU500 + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_InitStruct->RepetitionCounter = 0x00000000U; + 1745 .loc 1 337 37 is_stmt 0 view .LVU501 + 1746 000c C360 str r3, [r0, #12] + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1747 .loc 1 338 3 is_stmt 1 view .LVU502 + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1748 .loc 1 338 37 is_stmt 0 view .LVU503 + 1749 000e 0361 str r3, [r0, #16] + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1750 .loc 1 339 1 view .LVU504 + 1751 0010 7047 bx lr + 1752 .cfi_endproc + 1753 .LFE379: + 1755 .section .text.LL_TIM_Init,"ax",%progbits + 1756 .align 1 + 1757 .global LL_TIM_Init + 1758 .syntax unified + 1759 .thumb + 1760 .thumb_func + 1761 .fpu fpv5-d16 + 1763 LL_TIM_Init: + 1764 .LVL160: + 1765 .LFB380: + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpcr1; + 1766 .loc 1 351 1 is_stmt 1 view -0 + 1767 .cfi_startproc + 1768 @ args = 0, pretend = 0, frame = 0 + 1769 @ frame_needed = 0, uses_anonymous_args = 0 + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpcr1; + 1770 .loc 1 351 1 is_stmt 0 view .LVU506 + 1771 0000 30B5 push {r4, r5, lr} + 1772 .LCFI20: + 1773 .cfi_def_cfa_offset 12 + 1774 .cfi_offset 4, -12 + 1775 .cfi_offset 5, -8 + 1776 .cfi_offset 14, -4 + ARM GAS /tmp/ccI26Lsx.s page 135 + + + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1777 .loc 1 352 3 is_stmt 1 view .LVU507 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_COUNTERMODE(TIM_InitStruct->CounterMode)); + 1778 .loc 1 355 3 view .LVU508 + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_CLOCKDIVISION(TIM_InitStruct->ClockDivision)); + 1779 .loc 1 356 3 view .LVU509 + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1780 .loc 1 357 3 view .LVU510 + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1781 .loc 1 359 3 view .LVU511 + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1782 .loc 1 359 10 is_stmt 0 view .LVU512 + 1783 0002 0368 ldr r3, [r0] + 1784 .LVL161: + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1785 .loc 1 361 3 is_stmt 1 view .LVU513 + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1786 .loc 1 361 7 is_stmt 0 view .LVU514 + 1787 0004 3B4A ldr r2, .L81 + 1788 0006 9042 cmp r0, r2 + 1789 0008 14BF ite ne + 1790 000a 4FF0000E movne lr, #0 + 1791 000e 4FF0010E moveq lr, #1 + 1792 0012 B0F1804F cmp r0, #1073741824 + 1793 0016 14BF ite ne + 1794 0018 7246 movne r2, lr + 1795 001a 4EF00102 orreq r2, lr, #1 + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1796 .loc 1 361 6 view .LVU515 + 1797 001e AAB9 cbnz r2, .L73 + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1798 .loc 1 361 7 discriminator 1 view .LVU516 + 1799 0020 354C ldr r4, .L81+4 + 1800 0022 A042 cmp r0, r4 + 1801 0024 14BF ite ne + 1802 0026 0024 movne r4, #0 + 1803 0028 0124 moveq r4, #1 + 1804 002a 344D ldr r5, .L81+8 + 1805 002c A842 cmp r0, r5 + 1806 002e 0DD0 beq .L73 + 1807 0030 64B9 cbnz r4, .L73 + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1808 .loc 1 361 7 discriminator 2 view .LVU517 + 1809 0032 04F18044 add r4, r4, #1073741824 + 1810 0036 04F58234 add r4, r4, #66560 + 1811 003a A042 cmp r0, r4 + 1812 003c 14BF ite ne + 1813 003e 0024 movne r4, #0 + 1814 0040 0124 moveq r4, #1 + 1815 0042 05F50065 add r5, r5, #2048 + 1816 0046 A842 cmp r0, r5 + 1817 0048 00D0 beq .L73 + 1818 004a 1CB1 cbz r4, .L74 + 1819 .L73: + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1820 .loc 1 364 5 is_stmt 1 view .LVU518 + 1821 004c 23F07003 bic r3, r3, #112 + ARM GAS /tmp/ccI26Lsx.s page 136 + + + 1822 .LVL162: + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1823 .loc 1 364 5 is_stmt 0 view .LVU519 + 1824 0050 4C68 ldr r4, [r1, #4] + 1825 0052 2343 orrs r3, r3, r4 + 1826 .LVL163: + 1827 .L74: + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1828 .loc 1 367 3 is_stmt 1 view .LVU520 + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1829 .loc 1 367 6 is_stmt 0 view .LVU521 + 1830 0054 002A cmp r2, #0 + 1831 0056 33D1 bne .L76 + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1832 .loc 1 367 7 discriminator 1 view .LVU522 + 1833 0058 274A ldr r2, .L81+4 + 1834 005a 9042 cmp r0, r2 + 1835 005c 14BF ite ne + 1836 005e 0022 movne r2, #0 + 1837 0060 0122 moveq r2, #1 + 1838 0062 264C ldr r4, .L81+8 + 1839 0064 A042 cmp r0, r4 + 1840 0066 2BD0 beq .L76 + 1841 0068 52BB cbnz r2, .L76 + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1842 .loc 1 367 7 discriminator 2 view .LVU523 + 1843 006a 02F18042 add r2, r2, #1073741824 + 1844 006e 02F58232 add r2, r2, #66560 + 1845 0072 9042 cmp r0, r2 + 1846 0074 14BF ite ne + 1847 0076 0022 movne r2, #0 + 1848 0078 0122 moveq r2, #1 + 1849 007a 04F50064 add r4, r4, #2048 + 1850 007e A042 cmp r0, r4 + 1851 0080 1ED0 beq .L76 + 1852 0082 EAB9 cbnz r2, .L76 + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1853 .loc 1 367 7 discriminator 3 view .LVU524 + 1854 0084 1E4A ldr r2, .L81+12 + 1855 0086 9042 cmp r0, r2 + 1856 0088 14BF ite ne + 1857 008a 0022 movne r2, #0 + 1858 008c 0122 moveq r2, #1 + 1859 008e 04F59A34 add r4, r4, #78848 + 1860 0092 A042 cmp r0, r4 + 1861 0094 14D0 beq .L76 + 1862 0096 9AB9 cbnz r2, .L76 + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1863 .loc 1 367 7 discriminator 4 view .LVU525 + 1864 0098 1A4A ldr r2, .L81+16 + 1865 009a 9042 cmp r0, r2 + 1866 009c 14BF ite ne + 1867 009e 0022 movne r2, #0 + 1868 00a0 0122 moveq r2, #1 + 1869 00a2 04F50064 add r4, r4, #2048 + 1870 00a6 A042 cmp r0, r4 + 1871 00a8 0AD0 beq .L76 + ARM GAS /tmp/ccI26Lsx.s page 137 + + + 1872 00aa 4AB9 cbnz r2, .L76 + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1873 .loc 1 367 7 discriminator 5 view .LVU526 + 1874 00ac 164A ldr r2, .L81+20 + 1875 00ae 9042 cmp r0, r2 + 1876 00b0 14BF ite ne + 1877 00b2 0022 movne r2, #0 + 1878 00b4 0122 moveq r2, #1 + 1879 00b6 A4F59634 sub r4, r4, #76800 + 1880 00ba A042 cmp r0, r4 + 1881 00bc 00D0 beq .L76 + 1882 00be 22B1 cbz r2, .L77 + 1883 .L76: + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1884 .loc 1 370 5 is_stmt 1 view .LVU527 + 1885 00c0 23F4407C bic ip, r3, #768 + 1886 00c4 CB68 ldr r3, [r1, #12] + 1887 .LVL164: + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1888 .loc 1 370 5 is_stmt 0 view .LVU528 + 1889 00c6 4CEA0303 orr r3, ip, r3 + 1890 .LVL165: + 1891 .L77: + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1892 .loc 1 374 3 is_stmt 1 view .LVU529 + 1893 00ca 0360 str r3, [r0] + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1894 .loc 1 377 3 view .LVU530 + 1895 00cc 8A68 ldr r2, [r1, #8] + 1896 .LVL166: + 1897 .LBB178: + 1898 .LBI178: +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 1899 .loc 2 1635 22 view .LVU531 + 1900 .LBB179: +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 1901 .loc 2 1637 3 view .LVU532 + 1902 00ce C262 str r2, [r0, #44] + 1903 .LVL167: +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 1904 .loc 2 1637 3 is_stmt 0 view .LVU533 + 1905 .LBE179: + 1906 .LBE178: + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1907 .loc 1 380 3 is_stmt 1 view .LVU534 + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1908 .loc 1 380 43 is_stmt 0 view .LVU535 + 1909 00d0 0A88 ldrh r2, [r1] + 1910 .LVL168: + 1911 .LBB180: + 1912 .LBI180: +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 1913 .loc 2 1608 22 is_stmt 1 view .LVU536 + 1914 .LBB181: +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 1915 .loc 2 1610 3 view .LVU537 + 1916 00d2 8262 str r2, [r0, #40] + ARM GAS /tmp/ccI26Lsx.s page 138 + + + 1917 .LVL169: +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 1918 .loc 2 1610 3 is_stmt 0 view .LVU538 + 1919 .LBE181: + 1920 .LBE180: + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1921 .loc 1 382 3 is_stmt 1 view .LVU539 + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1922 .loc 1 382 7 is_stmt 0 view .LVU540 + 1923 00d4 0D4A ldr r2, .L81+24 + 1924 00d6 9042 cmp r0, r2 + 1925 00d8 14BF ite ne + 1926 00da 7346 movne r3, lr + 1927 00dc 4EF00103 orreq r3, lr, #1 + 1928 .LVL170: + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 1929 .loc 1 382 6 view .LVU541 + 1930 00e0 0BB1 cbz r3, .L79 + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1931 .loc 1 385 5 is_stmt 1 view .LVU542 + 1932 00e2 0B69 ldr r3, [r1, #16] + 1933 .LVL171: + 1934 .LBB182: + 1935 .LBI182: +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 1936 .loc 2 1663 22 view .LVU543 + 1937 .LBB183: +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 1938 .loc 2 1665 3 view .LVU544 + 1939 00e4 0363 str r3, [r0, #48] + 1940 .LVL172: + 1941 .L79: +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 1942 .loc 2 1665 3 is_stmt 0 view .LVU545 + 1943 .LBE183: + 1944 .LBE182: + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1945 .loc 1 390 3 is_stmt 1 view .LVU546 + 1946 .LBB184: + 1947 .LBI184: +2526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR1) set for output channel 1. +2530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not +2534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 1 is supported by a timer instance. +2535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR1 CCR1 LL_TIM_OC_GetCompareCH1 +2536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(const TIM_TypeDef *TIMx) +2540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR1)); +2542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + ARM GAS /tmp/ccI26Lsx.s page 139 + + +2543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR2) set for output channel 2. +2546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not +2550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 2 is supported by a timer instance. +2551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR2 CCR2 LL_TIM_OC_GetCompareCH2 +2552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(const TIM_TypeDef *TIMx) +2556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR2)); +2558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR3) set for output channel 3. +2562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not +2566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 3 is supported by a timer instance. +2567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR3 CCR3 LL_TIM_OC_GetCompareCH3 +2568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(const TIM_TypeDef *TIMx) +2572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR3)); +2574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR4) set for output channel 4. +2578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned compare value can be between 0x00000000 and 0xFF +2579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not +2582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 4 is supported by a timer instance. +2583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR4 CCR4 LL_TIM_OC_GetCompareCH4 +2584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(const TIM_TypeDef *TIMx) +2588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR4)); +2590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR5) set for output channel 5. +2594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC5_INSTANCE(TIMx) can be used to check whether or not +2595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 5 is supported by a timer instance. +2596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR5 CCR5 LL_TIM_OC_GetCompareCH5 +2597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/ccI26Lsx.s page 140 + + +2600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH5(const TIM_TypeDef *TIMx) +2601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_BIT(TIMx->CCR5, TIM_CCR5_CCR5)); +2603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get compare value (TIMx_CCR6) set for output channel 6. +2607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC6_INSTANCE(TIMx) can be used to check whether or not +2608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * output channel 6 is supported by a timer instance. +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR6 CCR6 LL_TIM_OC_GetCompareCH6 +2610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CompareValue (between Min_Data=0 and Max_Data=65535) +2612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH6(const TIM_TypeDef *TIMx) +2614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR6)); +2616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Select on which reference signal the OC5REF is combined to. +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_COMBINED3PHASEPWM_INSTANCE(TIMx) can be used to check +2621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports the combined 3-phase PWM mode. +2622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR5 GC5C3 LL_TIM_SetCH5CombinedChannels\n +2623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCR5 GC5C2 LL_TIM_SetCH5CombinedChannels\n +2624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCR5 GC5C1 LL_TIM_SetCH5CombinedChannels +2625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param GroupCH5 This parameter can be a combination of the following values: +2627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_NONE +2628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_OC1REFC +2629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_OC2REFC +2630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_GROUPCH5_OC3REFC +2631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetCH5CombinedChannels(TIM_TypeDef *TIMx, uint32_t GroupCH5) +2634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCR5, (TIM_CCR5_GC5C3 | TIM_CCR5_GC5C2 | TIM_CCR5_GC5C1), GroupCH5); +2636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +2640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Input_Channel Input channel configuration +2643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +2644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure input channel. +2647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_IC_Config\n +2648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC1PSC LL_TIM_IC_Config\n +2649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC1F LL_TIM_IC_Config\n +2650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_IC_Config\n +2651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2PSC LL_TIM_IC_Config\n +2652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2F LL_TIM_IC_Config\n +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_IC_Config\n +2654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3PSC LL_TIM_IC_Config\n +2655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3F LL_TIM_IC_Config\n +2656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_IC_Config\n + ARM GAS /tmp/ccI26Lsx.s page 141 + + +2657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4PSC LL_TIM_IC_Config\n +2658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4F LL_TIM_IC_Config\n +2659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1P LL_TIM_IC_Config\n +2660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_IC_Config\n +2661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_IC_Config\n +2662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_IC_Config\n +2663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_IC_Config\n +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_IC_Config\n +2665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_IC_Config\n +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4NP LL_TIM_IC_Config +2667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Configuration This parameter must be a combination of all the following values: +2674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_ +2675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8 +2676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8 +2677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING or @ref LL_TIM_I +2678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +2681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChanne +2685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S)) +2686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** << SHIFT_TAB_ICxx[iChannel]); +2687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), +2688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]); +2689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the active input. +2693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_IC_SetActiveInput\n +2694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_IC_SetActiveInput\n +2695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_IC_SetActiveInput\n +2696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_IC_SetActiveInput +2697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICActiveInput This parameter can be one of the following values: +2704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI +2705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI +2706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_TRC +2707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiv +2710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT + ARM GAS /tmp/ccI26Lsx.s page 142 + + +2714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current active input. +2718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 CC1S LL_TIM_IC_GetActiveInput\n +2719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 CC2S LL_TIM_IC_GetActiveInput\n +2720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC3S LL_TIM_IC_GetActiveInput\n +2721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 CC4S LL_TIM_IC_GetActiveInput +2722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI +2731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ACTIVEINPUT_TRC +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(const TIM_TypeDef *TIMx, uint32_t Channel) +2734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChann +2738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the prescaler of input channel. +2742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1PSC LL_TIM_IC_SetPrescaler\n +2743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2PSC LL_TIM_IC_SetPrescaler\n +2744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3PSC LL_TIM_IC_SetPrescaler\n +2745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4PSC LL_TIM_IC_SetPrescaler +2746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICPrescaler This parameter can be one of the following values: +2753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 +2754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV2 +2755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV4 +2756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV8 +2757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescal +2760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT +2764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current prescaler value acting on an input channel. +2768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1PSC LL_TIM_IC_GetPrescaler\n +2769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2PSC LL_TIM_IC_GetPrescaler\n +2770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3PSC LL_TIM_IC_GetPrescaler\n + ARM GAS /tmp/ccI26Lsx.s page 143 + + +2771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4PSC LL_TIM_IC_GetPrescaler +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV1 +2780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV2 +2781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV4 +2782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ICPSC_DIV8 +2783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(const TIM_TypeDef *TIMx, uint32_t Channel) +2785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iCha +2789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the input filter duration. +2793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1F LL_TIM_IC_SetFilter\n +2794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2F LL_TIM_IC_SetFilter\n +2795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3F LL_TIM_IC_SetFilter\n +2796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4F LL_TIM_IC_SetFilter +2797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICFilter This parameter can be one of the following values: +2804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1 +2805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 +2807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 +2808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 +2809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 +2810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 +2811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 +2812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 +2813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 +2814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 +2815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 +2816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 +2817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 +2818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 +2819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 +2820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter) +2823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iC +2826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ +2827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + ARM GAS /tmp/ccI26Lsx.s page 144 + + +2828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the input filter duration. +2831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCMR1 IC1F LL_TIM_IC_GetFilter\n +2832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR1 IC2F LL_TIM_IC_GetFilter\n +2833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC3F LL_TIM_IC_GetFilter\n +2834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCMR2 IC4F LL_TIM_IC_GetFilter +2835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1 +2843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 +2844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 +2845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 +2846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 +2847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 +2848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 +2849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 +2850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 +2851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 +2852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 +2853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 +2854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 +2855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 +2856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 +2857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 +2858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(const TIM_TypeDef *TIMx, uint32_t Channel) +2860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CC +2863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChann +2864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the input channel polarity. +2868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_IC_SetPolarity\n +2869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_IC_SetPolarity\n +2870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_IC_SetPolarity\n +2871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_IC_SetPolarity\n +2872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_IC_SetPolarity\n +2873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_IC_SetPolarity\n +2874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_IC_SetPolarity\n +2875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4NP LL_TIM_IC_SetPolarity +2876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ICPolarity This parameter can be one of the following values: +2883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_RISING +2884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_FALLING + ARM GAS /tmp/ccI26Lsx.s page 145 + + +2885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE +2886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity +2889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), +2892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** ICPolarity << SHIFT_TAB_CCxP[iChannel]); +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get the current input channel polarity. +2897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCER CC1P LL_TIM_IC_GetPolarity\n +2898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC1NP LL_TIM_IC_GetPolarity\n +2899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2P LL_TIM_IC_GetPolarity\n +2900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC2NP LL_TIM_IC_GetPolarity\n +2901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3P LL_TIM_IC_GetPolarity\n +2902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC3NP LL_TIM_IC_GetPolarity\n +2903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4P LL_TIM_IC_GetPolarity\n +2904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * CCER CC4NP LL_TIM_IC_GetPolarity +2905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Channel This parameter can be one of the following values: +2907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH1 +2908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH2 +2909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH3 +2910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CHANNEL_CH4 +2911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval Returned value can be one of the following values: +2912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_RISING +2913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_FALLING +2914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_IC_POLARITY_BOTHEDGE +2915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +2917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); +2919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >> +2920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SHIFT_TAB_CCxP[iChannel]); +2921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Connect the TIMx_CH1, CH2 and CH3 pins to the TI1 input (XOR combination). +2925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not +2926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an XOR input. +2927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 TI1S LL_TIM_IC_EnableXORCombination +2928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx) +2932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->CR2, TIM_CR2_TI1S); +2934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disconnect the TIMx_CH1, CH2 and CH3 pins from the TI1 input. +2938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not +2939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an XOR input. +2940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 TI1S LL_TIM_IC_DisableXORCombination +2941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance + ARM GAS /tmp/ccI26Lsx.s page 146 + + +2942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +2943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx) +2945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S); +2947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input. +2951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not +2952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an XOR input. +2953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 TI1S LL_TIM_IC_IsEnabledXORCombination +2954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +2956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(const TIM_TypeDef *TIMx) +2958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL); +2960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 1. +2964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +2965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not +2968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 1 is supported by a timer instance. +2969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR1 CCR1 LL_TIM_IC_GetCaptureCH1 +2970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +2972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(const TIM_TypeDef *TIMx) +2974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR1)); +2976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 2. +2980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +2981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +2983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not +2984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 2 is supported by a timer instance. +2985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR2 CCR2 LL_TIM_IC_GetCaptureCH2 +2986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +2987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +2988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +2989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(const TIM_TypeDef *TIMx) +2990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +2991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR2)); +2992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +2993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +2994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +2995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 3. +2996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +2997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +2998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. + ARM GAS /tmp/ccI26Lsx.s page 147 + + +2999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not +3000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 3 is supported by a timer instance. +3001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR3 CCR3 LL_TIM_IC_GetCaptureCH3 +3002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +3004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(const TIM_TypeDef *TIMx) +3006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR3)); +3008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Get captured value for input channel 4. +3012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note In 32-bit timer implementations returned captured value can be between 0x00000000 and 0xF +3013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_32B_COUNTER_INSTANCE(TIMx) can be used to check +3014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports a 32 bits counter. +3015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not +3016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * input channel 4 is supported by a timer instance. +3017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CCR4 CCR4 LL_TIM_IC_GetCaptureCH4 +3018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) +3020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(const TIM_TypeDef *TIMx) +3022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return (uint32_t)(READ_REG(TIMx->CCR4)); +3024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection +3031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable external clock mode 2. +3035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ET +3036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ECE LL_TIM_EnableExternalClock +3039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx) +3043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->SMCR, TIM_SMCR_ECE); +3045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable external clock mode 2. +3049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ECE LL_TIM_DisableExternalClock +3052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx) + ARM GAS /tmp/ccI26Lsx.s page 148 + + +3056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE); +3058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether external clock mode 2 is enabled. +3062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ECE LL_TIM_IsEnabledExternalClock +3065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(const TIM_TypeDef *TIMx) +3069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL); +3071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the clock source of the counter clock. +3075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note when selected clock source is external clock mode 1, the timer input +3076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput() +3077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * function. This timer input must be configured by calling +3078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * the @ref LL_TIM_IC_Config() function. +3079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check +3080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode1. +3081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check +3082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports external clock mode2. +3083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR SMS LL_TIM_SetClockSource\n +3084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * SMCR ECE LL_TIM_SetClockSource +3085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ClockSource This parameter can be one of the following values: +3087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL +3088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1 +3089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2 +3090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource) +3093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource); +3095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the encoder interface mode. +3099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check +3100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance supports the encoder mode. +3101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR SMS LL_TIM_SetEncoderMode +3102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param EncoderMode This parameter can be one of the following values: +3104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ENCODERMODE_X2_TI1 +3105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ENCODERMODE_X2_TI2 +3106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ENCODERMODE_X4_TI12 +3107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode) +3110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode); +3112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + ARM GAS /tmp/ccI26Lsx.s page 149 + + +3113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration +3119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the trigger output (TRGO) used for timer synchronization . +3123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check +3124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance can operate as a master timer. +3125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 MMS LL_TIM_SetTriggerOutput +3126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TimerSynchronization This parameter can be one of the following values: +3128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_RESET +3129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_ENABLE +3130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_UPDATE +3131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_CC1IF +3132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC1REF +3133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC2REF +3134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC3REF +3135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO_OC4REF +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization) +3139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization); +3141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the trigger output 2 (TRGO2) used for ADC synchronization . +3145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_TRGO2_INSTANCE(TIMx) can be used to check +3146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * whether or not a timer instance can be used for ADC synchronization. +3147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll CR2 MMS2 LL_TIM_SetTriggerOutput2 +3148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer Instance +3149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ADCSynchronization This parameter can be one of the following values: +3150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_RESET +3151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_ENABLE +3152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_UPDATE +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_CC1F +3154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC1 +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC2 +3156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC3 +3157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4 +3158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC5 +3159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC6 +3160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4_RISINGFALLING +3161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC6_RISINGFALLING +3162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4_RISING_OC6_RISING +3163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC4_RISING_OC6_FALLING +3164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC5_RISING_OC6_RISING +3165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TRGO2_OC5_RISING_OC6_FALLING +3166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetTriggerOutput2(TIM_TypeDef *TIMx, uint32_t ADCSynchronization) +3169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + ARM GAS /tmp/ccI26Lsx.s page 150 + + +3170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->CR2, TIM_CR2_MMS2, ADCSynchronization); +3171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the synchronization mode of a slave timer. +3175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR SMS LL_TIM_SetSlaveMode +3178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param SlaveMode This parameter can be one of the following values: +3180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_DISABLED +3181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_RESET +3182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_GATED +3183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_TRIGGER +3184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_SLAVEMODE_COMBINED_RESETTRIGGER +3185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode) +3188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode); +3190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the selects the trigger input to be used to synchronize the counter. +3194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR TS LL_TIM_SetTriggerInput +3197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TriggerInput This parameter can be one of the following values: +3199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR0 +3200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR1 +3201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR2 +3202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ITR3 +3203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_TI1F_ED +3204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_TI1FP1 +3205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_TI2FP2 +3206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TS_ETRF +3207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput) +3210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput); +3212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the Master/Slave mode. +3216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR MSM LL_TIM_EnableMasterSlaveMode +3219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx) +3223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->SMCR, TIM_SMCR_MSM); +3225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccI26Lsx.s page 151 + + +3227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the Master/Slave mode. +3229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR MSM LL_TIM_DisableMasterSlaveMode +3232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx) +3236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM); +3238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the Master/Slave mode is enabled. +3242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance can operate as a slave timer. +3244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR MSM LL_TIM_IsEnabledMasterSlaveMode +3245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(const TIM_TypeDef *TIMx) +3249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL); +3251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure the external trigger (ETR) input. +3255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not +3256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides an external trigger input. +3257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SMCR ETP LL_TIM_ConfigETR\n +3258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * SMCR ETPS LL_TIM_ConfigETR\n +3259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * SMCR ETF LL_TIM_ConfigETR +3260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ETRPolarity This parameter can be one of the following values: +3262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED +3263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_POLARITY_INVERTED +3264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ETRPrescaler This parameter can be one of the following values: +3265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV1 +3266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV2 +3267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV4 +3268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_PRESCALER_DIV8 +3269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param ETRFilter This parameter can be one of the following values: +3270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1 +3271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2 +3272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4 +3273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8 +3274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6 +3275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8 +3276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6 +3277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8 +3278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6 +3279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8 +3280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5 +3281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6 +3282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8 +3283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5 + ARM GAS /tmp/ccI26Lsx.s page 152 + + +3284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6 +3285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8 +3286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescale +3289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t ETRFilter) +3290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | +3292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Break_Function Break function configuration +3299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the break function. +3303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BKE LL_TIM_EnableBRK +3306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx) +3310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_BKE); +3312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the break function. +3316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BKE LL_TIM_DisableBRK +3317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx) +3323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE); +3325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure the break input. +3329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BKP LL_TIM_ConfigBRK\n +3332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * BDTR BKF LL_TIM_ConfigBRK +3333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakPolarity This parameter can be one of the following values: +3335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_POLARITY_LOW +3336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_POLARITY_HIGH +3337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakFilter This parameter can be one of the following values: +3338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1 +3339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N2 +3340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N4 + ARM GAS /tmp/ccI26Lsx.s page 153 + + +3341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV1_N8 +3342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV2_N6 +3343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV2_N8 +3344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV4_N6 +3345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV4_N8 +3346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV8_N6 +3347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV8_N8 +3348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N5 +3349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N6 +3350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV16_N8 +3351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N5 +3352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N6 +3353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_FILTER_FDIV32_N8 +3354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity, +3357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t BreakFilter) +3358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP | TIM_BDTR_BKF, BreakPolarity | BreakFilter); +3360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the break 2 function. +3364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not +3365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a second break input. +3366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BK2E LL_TIM_EnableBRK2 +3367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableBRK2(TIM_TypeDef *TIMx) +3371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_BK2E); +3373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the break 2 function. +3377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not +3378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a second break input. +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BK2E LL_TIM_DisableBRK2 +3380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableBRK2(TIM_TypeDef *TIMx) +3384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BK2E); +3386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configure the break 2 input. +3390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BKIN2_INSTANCE(TIMx) can be used to check whether or not +3391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a second break input. +3392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR BK2P LL_TIM_ConfigBRK2\n +3393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * BDTR BK2F LL_TIM_ConfigBRK2 +3394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Break2Polarity This parameter can be one of the following values: +3396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_POLARITY_LOW +3397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_POLARITY_HIGH + ARM GAS /tmp/ccI26Lsx.s page 154 + + +3398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Break2Filter This parameter can be one of the following values: +3399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1 +3400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N2 +3401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N4 +3402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV1_N8 +3403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV2_N6 +3404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV2_N8 +3405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV4_N6 +3406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV4_N8 +3407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV8_N6 +3408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV8_N8 +3409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N5 +3410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N6 +3411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV16_N8 +3412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N5 +3413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N6 +3414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK2_FILTER_FDIV32_N8 +3415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigBRK2(TIM_TypeDef *TIMx, uint32_t Break2Polarity, uint32_t Break2F +3418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_BK2P | TIM_BDTR_BK2F, Break2Polarity | Break2Filter); +3420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Select the outputs off state (enabled v.s. disabled) in Idle and Run modes. +3424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR OSSI LL_TIM_SetOffStates\n +3427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * BDTR OSSR LL_TIM_SetOffStates +3428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param OffStateIdle This parameter can be one of the following values: +3430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSI_DISABLE +3431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSI_ENABLE +3432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param OffStateRun This parameter can be one of the following values: +3433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSR_DISABLE +3434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_OSSR_ENABLE +3435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStat +3438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun); +3440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable automatic output (MOE can be set by software or automatically when a break input +3444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR AOE LL_TIM_EnableAutomaticOutput +3447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx) +3451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_AOE); +3453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccI26Lsx.s page 155 + + +3455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable automatic output (MOE can be set only by software). +3457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR AOE LL_TIM_DisableAutomaticOutput +3460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx) +3464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE); +3466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether automatic output is enabled. +3470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR AOE LL_TIM_IsEnabledAutomaticOutput +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(const TIM_TypeDef *TIMx) +3477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL); +3479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the outputs (set the MOE bit in TIMx_BDTR register). +3483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by +3484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * software and is reset in case of break or break2 event +3485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR MOE LL_TIM_EnableAllOutputs +3488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx) +3492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->BDTR, TIM_BDTR_MOE); +3494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the outputs (reset the MOE bit in TIMx_BDTR register). +3498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by +3499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * software and is reset in case of break or break2 event. +3500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR MOE LL_TIM_DisableAllOutputs +3503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx) +3507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE); +3509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + ARM GAS /tmp/ccI26Lsx.s page 156 + + +3512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether outputs are enabled. +3513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not +3514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a timer instance provides a break input. +3515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll BDTR MOE LL_TIM_IsEnabledAllOutputs +3516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(const TIM_TypeDef *TIMx) +3520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL); +3522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #if defined(TIM_BREAK_INPUT_SUPPORT) +3525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable the signals connected to the designated timer break input. +3527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether +3528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance allows for break input selection. +3529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll AF1 BKINE LL_TIM_EnableBreakInputSource\n +3530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF1 BKDFBKE LL_TIM_EnableBreakInputSource\n +3531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2INE LL_TIM_EnableBreakInputSource\n +3532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2DFBKE LL_TIM_EnableBreakInputSource +3533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakInput This parameter can be one of the following values: +3535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN +3536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 +3537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Source This parameter can be one of the following values: +3538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_BKIN +3539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK +3540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableBreakInputSource(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_t +3543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); +3545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(*pReg, Source); +3546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable the signals connected to the designated timer break input. +3550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether +3551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance allows for break input selection. +3552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll AF1 BKINE LL_TIM_DisableBreakInputSource\n +3553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF1 BKDFBKE LL_TIM_DisableBreakInputSource\n +3554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2INE LL_TIM_DisableBreakInputSource\n +3555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2DFBKE LL_TIM_DisableBreakInputSource +3556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakInput This parameter can be one of the following values: +3558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN +3559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 +3560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Source This parameter can be one of the following values: +3561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_BKIN +3562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK +3563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableBreakInputSource(TIM_TypeDef *TIMx, uint32_t BreakInput, uint32_ +3566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); +3568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(*pReg, Source); + ARM GAS /tmp/ccI26Lsx.s page 157 + + +3569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Set the polarity of the break signal for the timer break input. +3573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_BREAKSOURCE_INSTANCE(TIMx) can be used to check whether +3574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * or not a timer instance allows for break input selection. +3575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll AF1 BKINP LL_TIM_SetBreakInputSourcePolarity\n +3576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF1 BKDFBKP LL_TIM_SetBreakInputSourcePolarity\n +3577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2INP LL_TIM_SetBreakInputSourcePolarity\n +3578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * AF2 BK2DFBKP LL_TIM_SetBreakInputSourcePolarity +3579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param BreakInput This parameter can be one of the following values: +3581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN +3582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BREAK_INPUT_BKIN2 +3583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Source This parameter can be one of the following values: +3584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_BKIN +3585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_SOURCE_DF1BK +3586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Polarity This parameter can be one of the following values: +3587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_POLARITY_LOW +3588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_BKIN_POLARITY_HIGH +3589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetBreakInputSourcePolarity(TIM_TypeDef *TIMx, uint32_t BreakInput, uin +3592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** uint32_t Polarity) +3593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->AF1) + BreakInput)); +3595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(*pReg, (TIMx_AF1_BKINP << TIM_POSITION_BRK_SOURCE), (Polarity << TIM_POSITION_BRK_SOUR +3596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** #endif /* TIM_BREAK_INPUT_SUPPORT */ +3598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Configures the timer DMA burst feature. +3607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or +3608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * not a timer instance supports the DMA burst mode. +3609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DCR DBL LL_TIM_ConfigDMABurst\n +3610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * DCR DBA LL_TIM_ConfigDMABurst +3611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DMABurstBaseAddress This parameter can be one of the following values: +3613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CR1 +3614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CR2 +3615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR +3616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_DIER +3617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_SR +3618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_EGR +3619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1 +3620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2 +3621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCER +3622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CNT +3623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_PSC +3624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_ARR +3625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_RCR + ARM GAS /tmp/ccI26Lsx.s page 158 + + +3626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1 +3627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2 +3628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3 +3629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4 +3630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR +3631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_OR +3632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR3 +3633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR5 +3634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR6 +3635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_AF1 (*) +3636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_BASEADDR_AF2 (*) +3637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (*) value not defined in all devices +3638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param DMABurstLength This parameter can be one of the following values: +3639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER +3640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS +3641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS +3642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS +3643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS +3644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS +3645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS +3646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS +3647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS +3648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS +3649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS +3650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS +3651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS +3652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS +3653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS +3654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS +3655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS +3656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS +3657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_ +3660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength)); +3662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_Timer_Inputs_Remapping Timer input remapping +3669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Remap TIM inputs (input channel, internal/external triggers). +3673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @note Macro IS_TIM_REMAP_INSTANCE(TIMx) can be used to check whether or not +3674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * a some timer inputs can be remapped. +3675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll TIM2_OR ITR1_RMP LL_TIM_SetRemap\n +3676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM5_OR TI4_RMP LL_TIM_SetRemap\n +3677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM11_OR TI1_RMP LL_TIM_SetRemap +3678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param Remap Remap param depends on the TIMx. Description available only +3680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * in CHM version of the User Manual (not in .pdf). +3681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * Otherwise see Reference Manual description of OR registers. +3682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * + ARM GAS /tmp/ccI26Lsx.s page 159 + + +3683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * Below description summarizes "Timer Instance" and "Remap" param combinations: +3684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM2: one of the following values +3686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * ITR1_RMP can be one of the following values +3688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_TIM8_TRGO +3689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_ETH_PTP +3690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_FS_SOF +3691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM2_ITR1_RMP_OTG_HS_SOF +3692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM5: one of the following values +3694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_GPIO +3696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_LSI +3697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_LSE +3698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM5_TI4_RMP_RTC +3699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * TIM11: one of the following values +3701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_GPIO +3703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_SPDIFRX +3704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_HSE +3705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @arg @ref LL_TIM_TIM11_TI1_RMP_MCO1 +3706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * +3707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_SetRemap(TIM_TypeDef *TIMx, uint32_t Remap) +3710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** MODIFY_REG(TIMx->OR, (Remap >> TIMx_OR_RMP_SHIFT), (Remap & TIMx_OR_RMP_MASK)); +3712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +3716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management +3719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +3720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the update interrupt flag (UIF). +3723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR UIF LL_TIM_ClearFlag_UPDATE +3724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx) +3728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_UIF)); +3730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether update interrupt flag (UIF) is set (update interrupt is pending). +3734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR UIF LL_TIM_IsActiveFlag_UPDATE +3735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(const TIM_TypeDef *TIMx) +3739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + ARM GAS /tmp/ccI26Lsx.s page 160 + + +3740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL); +3741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 1 interrupt flag (CC1F). +3745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC1IF LL_TIM_ClearFlag_CC1 +3746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx) +3750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF)); +3752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 1 interrupt flag (CC1F) is set (Capture/Compare 1 inte +3756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC1IF LL_TIM_IsActiveFlag_CC1 +3757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(const TIM_TypeDef *TIMx) +3761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL); +3763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 2 interrupt flag (CC2F). +3767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC2IF LL_TIM_ClearFlag_CC2 +3768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx) +3772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF)); +3774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 2 interrupt flag (CC2F) is set (Capture/Compare 2 inte +3778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC2IF LL_TIM_IsActiveFlag_CC2 +3779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(const TIM_TypeDef *TIMx) +3783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL); +3785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 3 interrupt flag (CC3F). +3789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC3IF LL_TIM_ClearFlag_CC3 +3790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx) +3794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF)); +3796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + ARM GAS /tmp/ccI26Lsx.s page 161 + + +3797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 3 interrupt flag (CC3F) is set (Capture/Compare 3 inte +3800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC3IF LL_TIM_IsActiveFlag_CC3 +3801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(const TIM_TypeDef *TIMx) +3805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL); +3807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 4 interrupt flag (CC4F). +3811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC4IF LL_TIM_ClearFlag_CC4 +3812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx) +3816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF)); +3818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 4 interrupt flag (CC4F) is set (Capture/Compare 4 inte +3822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC4IF LL_TIM_IsActiveFlag_CC4 +3823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(const TIM_TypeDef *TIMx) +3827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL); +3829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 5 interrupt flag (CC5F). +3833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC5IF LL_TIM_ClearFlag_CC5 +3834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC5(TIM_TypeDef *TIMx) +3838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC5IF)); +3840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 5 interrupt flag (CC5F) is set (Capture/Compare 5 inte +3844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC5IF LL_TIM_IsActiveFlag_CC5 +3845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC5(const TIM_TypeDef *TIMx) +3849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC5IF) == (TIM_SR_CC5IF)) ? 1UL : 0UL); +3851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + ARM GAS /tmp/ccI26Lsx.s page 162 + + +3854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 6 interrupt flag (CC6F). +3855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC6IF LL_TIM_ClearFlag_CC6 +3856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC6(TIM_TypeDef *TIMx) +3860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC6IF)); +3862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 6 interrupt flag (CC6F) is set (Capture/Compare 6 inte +3866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC6IF LL_TIM_IsActiveFlag_CC6 +3867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC6(const TIM_TypeDef *TIMx) +3871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC6IF) == (TIM_SR_CC6IF)) ? 1UL : 0UL); +3873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the commutation interrupt flag (COMIF). +3877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR COMIF LL_TIM_ClearFlag_COM +3878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_COM(TIM_TypeDef *TIMx) +3882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_COMIF)); +3884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether commutation interrupt flag (COMIF) is set (commutation interrupt is pe +3888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR COMIF LL_TIM_IsActiveFlag_COM +3889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(const TIM_TypeDef *TIMx) +3893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF)) ? 1UL : 0UL); +3895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the trigger interrupt flag (TIF). +3899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR TIF LL_TIM_ClearFlag_TRIG +3900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx) +3904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_TIF)); +3906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether trigger interrupt flag (TIF) is set (trigger interrupt is pending). +3910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR TIF LL_TIM_IsActiveFlag_TRIG + ARM GAS /tmp/ccI26Lsx.s page 163 + + +3911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(const TIM_TypeDef *TIMx) +3915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL); +3917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the break interrupt flag (BIF). +3921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR BIF LL_TIM_ClearFlag_BRK +3922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_BRK(TIM_TypeDef *TIMx) +3926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_BIF)); +3928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether break interrupt flag (BIF) is set (break interrupt is pending). +3932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR BIF LL_TIM_IsActiveFlag_BRK +3933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(const TIM_TypeDef *TIMx) +3937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF)) ? 1UL : 0UL); +3939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the break 2 interrupt flag (B2IF). +3943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR B2IF LL_TIM_ClearFlag_BRK2 +3944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_BRK2(TIM_TypeDef *TIMx) +3948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_B2IF)); +3950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether break 2 interrupt flag (B2IF) is set (break 2 interrupt is pending). +3954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR B2IF LL_TIM_IsActiveFlag_BRK2 +3955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK2(const TIM_TypeDef *TIMx) +3959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_B2IF) == (TIM_SR_B2IF)) ? 1UL : 0UL); +3961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF). +3965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC1OF LL_TIM_ClearFlag_CC1OVR +3966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None + ARM GAS /tmp/ccI26Lsx.s page 164 + + +3968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx) +3970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF)); +3972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set +3976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (Capture/Compare 1 interrupt is pending). +3977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC1OF LL_TIM_IsActiveFlag_CC1OVR +3978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +3980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(const TIM_TypeDef *TIMx) +3982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL); +3984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF). +3988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC2OF LL_TIM_ClearFlag_CC2OVR +3989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +3990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +3991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +3992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx) +3993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +3994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF)); +3995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +3996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +3997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +3998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set +3999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (Capture/Compare 2 over-capture interrupt is pending). +4000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC2OF LL_TIM_IsActiveFlag_CC2OVR +4001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(const TIM_TypeDef *TIMx) +4005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL); +4007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF). +4011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC3OF LL_TIM_ClearFlag_CC3OVR +4012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx) +4016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF)); +4018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set +4022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (Capture/Compare 3 over-capture interrupt is pending). +4023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC3OF LL_TIM_IsActiveFlag_CC3OVR +4024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance + ARM GAS /tmp/ccI26Lsx.s page 165 + + +4025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(const TIM_TypeDef *TIMx) +4028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL); +4030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF). +4034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC4OF LL_TIM_ClearFlag_CC4OVR +4035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx) +4039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF)); +4041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set +4045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * (Capture/Compare 4 over-capture interrupt is pending). +4046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR CC4OF LL_TIM_IsActiveFlag_CC4OVR +4047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(const TIM_TypeDef *TIMx) +4051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL); +4053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Clear the system break interrupt flag (SBIF). +4057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR SBIF LL_TIM_ClearFlag_SYSBRK +4058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_ClearFlag_SYSBRK(TIM_TypeDef *TIMx) +4062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** WRITE_REG(TIMx->SR, ~(TIM_SR_SBIF)); +4064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicate whether system break interrupt flag (SBIF) is set (system break interrupt is p +4068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll SR SBIF LL_TIM_IsActiveFlag_SYSBRK +4069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_SYSBRK(const TIM_TypeDef *TIMx) +4073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->SR, TIM_SR_SBIF) == (TIM_SR_SBIF)) ? 1UL : 0UL); +4075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +4079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_IT_Management IT-Management + ARM GAS /tmp/ccI26Lsx.s page 166 + + +4082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +4083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable update interrupt (UIE). +4086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER UIE LL_TIM_EnableIT_UPDATE +4087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx) +4091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_UIE); +4093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable update interrupt (UIE). +4097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER UIE LL_TIM_DisableIT_UPDATE +4098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableIT_UPDATE(TIM_TypeDef *TIMx) +4102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_UIE); +4104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the update interrupt (UIE) is enabled. +4108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER UIE LL_TIM_IsEnabledIT_UPDATE +4109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(const TIM_TypeDef *TIMx) +4113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE)) ? 1UL : 0UL); +4115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare 1 interrupt (CC1IE). +4119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC1IE LL_TIM_EnableIT_CC1 +4120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableIT_CC1(TIM_TypeDef *TIMx) +4124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_CC1IE); +4126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare 1 interrupt (CC1IE). +4130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC1IE LL_TIM_DisableIT_CC1 +4131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableIT_CC1(TIM_TypeDef *TIMx) +4135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1IE); +4137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** + ARM GAS /tmp/ccI26Lsx.s page 167 + + +4139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare 1 interrupt (CC1IE) is enabled. +4141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC1IE LL_TIM_IsEnabledIT_CC1 +4142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(const TIM_TypeDef *TIMx) +4146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE)) ? 1UL : 0UL); +4148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare 2 interrupt (CC2IE). +4152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC2IE LL_TIM_EnableIT_CC2 +4153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableIT_CC2(TIM_TypeDef *TIMx) +4157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_CC2IE); +4159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare 2 interrupt (CC2IE). +4163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC2IE LL_TIM_DisableIT_CC2 +4164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableIT_CC2(TIM_TypeDef *TIMx) +4168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2IE); +4170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare 2 interrupt (CC2IE) is enabled. +4174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC2IE LL_TIM_IsEnabledIT_CC2 +4175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(const TIM_TypeDef *TIMx) +4179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE)) ? 1UL : 0UL); +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare 3 interrupt (CC3IE). +4185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC3IE LL_TIM_EnableIT_CC3 +4186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableIT_CC3(TIM_TypeDef *TIMx) +4190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_CC3IE); +4192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare 3 interrupt (CC3IE). + ARM GAS /tmp/ccI26Lsx.s page 168 + + +4196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC3IE LL_TIM_DisableIT_CC3 +4197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableIT_CC3(TIM_TypeDef *TIMx) +4201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3IE); +4203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare 3 interrupt (CC3IE) is enabled. +4207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC3IE LL_TIM_IsEnabledIT_CC3 +4208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(const TIM_TypeDef *TIMx) +4212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE)) ? 1UL : 0UL); +4214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare 4 interrupt (CC4IE). +4218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC4IE LL_TIM_EnableIT_CC4 +4219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableIT_CC4(TIM_TypeDef *TIMx) +4223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_CC4IE); +4225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare 4 interrupt (CC4IE). +4229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC4IE LL_TIM_DisableIT_CC4 +4230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableIT_CC4(TIM_TypeDef *TIMx) +4234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4IE); +4236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare 4 interrupt (CC4IE) is enabled. +4240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC4IE LL_TIM_IsEnabledIT_CC4 +4241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(const TIM_TypeDef *TIMx) +4245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE)) ? 1UL : 0UL); +4247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable commutation interrupt (COMIE). +4251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER COMIE LL_TIM_EnableIT_COM +4252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance + ARM GAS /tmp/ccI26Lsx.s page 169 + + +4253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableIT_COM(TIM_TypeDef *TIMx) +4256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_COMIE); +4258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable commutation interrupt (COMIE). +4262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER COMIE LL_TIM_DisableIT_COM +4263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableIT_COM(TIM_TypeDef *TIMx) +4267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_COMIE); +4269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the commutation interrupt (COMIE) is enabled. +4273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER COMIE LL_TIM_IsEnabledIT_COM +4274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(const TIM_TypeDef *TIMx) +4278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE)) ? 1UL : 0UL); +4280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable trigger interrupt (TIE). +4284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER TIE LL_TIM_EnableIT_TRIG +4285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableIT_TRIG(TIM_TypeDef *TIMx) +4289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_TIE); +4291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable trigger interrupt (TIE). +4295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER TIE LL_TIM_DisableIT_TRIG +4296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableIT_TRIG(TIM_TypeDef *TIMx) +4300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_TIE); +4302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the trigger interrupt (TIE) is enabled. +4306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER TIE LL_TIM_IsEnabledIT_TRIG +4307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ + ARM GAS /tmp/ccI26Lsx.s page 170 + + +4310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(const TIM_TypeDef *TIMx) +4311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE)) ? 1UL : 0UL); +4313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable break interrupt (BIE). +4317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER BIE LL_TIM_EnableIT_BRK +4318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableIT_BRK(TIM_TypeDef *TIMx) +4322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_BIE); +4324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable break interrupt (BIE). +4328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER BIE LL_TIM_DisableIT_BRK +4329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableIT_BRK(TIM_TypeDef *TIMx) +4333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_BIE); +4335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the break interrupt (BIE) is enabled. +4339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER BIE LL_TIM_IsEnabledIT_BRK +4340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(const TIM_TypeDef *TIMx) +4344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE)) ? 1UL : 0UL); +4346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +4350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_DMA_Management DMA Management +4353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +4354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable update DMA request (UDE). +4357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER UDE LL_TIM_EnableDMAReq_UPDATE +4358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableDMAReq_UPDATE(TIM_TypeDef *TIMx) +4362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_UDE); +4364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** + ARM GAS /tmp/ccI26Lsx.s page 171 + + +4367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable update DMA request (UDE). +4368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER UDE LL_TIM_DisableDMAReq_UPDATE +4369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableDMAReq_UPDATE(TIM_TypeDef *TIMx) +4373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_UDE); +4375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the update DMA request (UDE) is enabled. +4379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER UDE LL_TIM_IsEnabledDMAReq_UPDATE +4380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(const TIM_TypeDef *TIMx) +4384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE)) ? 1UL : 0UL); +4386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare 1 DMA request (CC1DE). +4390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC1DE LL_TIM_EnableDMAReq_CC1 +4391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableDMAReq_CC1(TIM_TypeDef *TIMx) +4395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_CC1DE); +4397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare 1 DMA request (CC1DE). +4401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC1DE LL_TIM_DisableDMAReq_CC1 +4402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableDMAReq_CC1(TIM_TypeDef *TIMx) +4406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1DE); +4408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare 1 DMA request (CC1DE) is enabled. +4412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC1DE LL_TIM_IsEnabledDMAReq_CC1 +4413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(const TIM_TypeDef *TIMx) +4417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE)) ? 1UL : 0UL); +4419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare 2 DMA request (CC2DE). +4423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC2DE LL_TIM_EnableDMAReq_CC2 + ARM GAS /tmp/ccI26Lsx.s page 172 + + +4424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableDMAReq_CC2(TIM_TypeDef *TIMx) +4428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_CC2DE); +4430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare 2 DMA request (CC2DE). +4434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC2DE LL_TIM_DisableDMAReq_CC2 +4435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableDMAReq_CC2(TIM_TypeDef *TIMx) +4439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2DE); +4441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare 2 DMA request (CC2DE) is enabled. +4445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC2DE LL_TIM_IsEnabledDMAReq_CC2 +4446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(const TIM_TypeDef *TIMx) +4450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE)) ? 1UL : 0UL); +4452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare 3 DMA request (CC3DE). +4456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC3DE LL_TIM_EnableDMAReq_CC3 +4457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableDMAReq_CC3(TIM_TypeDef *TIMx) +4461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_CC3DE); +4463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare 3 DMA request (CC3DE). +4467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC3DE LL_TIM_DisableDMAReq_CC3 +4468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableDMAReq_CC3(TIM_TypeDef *TIMx) +4472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3DE); +4474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare 3 DMA request (CC3DE) is enabled. +4478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC3DE LL_TIM_IsEnabledDMAReq_CC3 +4479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). + ARM GAS /tmp/ccI26Lsx.s page 173 + + +4481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(const TIM_TypeDef *TIMx) +4483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE)) ? 1UL : 0UL); +4485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable capture/compare 4 DMA request (CC4DE). +4489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC4DE LL_TIM_EnableDMAReq_CC4 +4490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableDMAReq_CC4(TIM_TypeDef *TIMx) +4494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_CC4DE); +4496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable capture/compare 4 DMA request (CC4DE). +4500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC4DE LL_TIM_DisableDMAReq_CC4 +4501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableDMAReq_CC4(TIM_TypeDef *TIMx) +4505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4DE); +4507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the capture/compare 4 DMA request (CC4DE) is enabled. +4511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER CC4DE LL_TIM_IsEnabledDMAReq_CC4 +4512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(const TIM_TypeDef *TIMx) +4516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE)) ? 1UL : 0UL); +4518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable commutation DMA request (COMDE). +4522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER COMDE LL_TIM_EnableDMAReq_COM +4523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableDMAReq_COM(TIM_TypeDef *TIMx) +4527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_COMDE); +4529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable commutation DMA request (COMDE). +4533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER COMDE LL_TIM_DisableDMAReq_COM +4534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableDMAReq_COM(TIM_TypeDef *TIMx) + ARM GAS /tmp/ccI26Lsx.s page 174 + + +4538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_COMDE); +4540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the commutation DMA request (COMDE) is enabled. +4544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER COMDE LL_TIM_IsEnabledDMAReq_COM +4545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(const TIM_TypeDef *TIMx) +4549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE)) ? 1UL : 0UL); +4551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Enable trigger interrupt (TDE). +4555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER TDE LL_TIM_EnableDMAReq_TRIG +4556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_EnableDMAReq_TRIG(TIM_TypeDef *TIMx) +4560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->DIER, TIM_DIER_TDE); +4562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Disable trigger interrupt (TDE). +4566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER TDE LL_TIM_DisableDMAReq_TRIG +4567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_DisableDMAReq_TRIG(TIM_TypeDef *TIMx) +4571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** CLEAR_BIT(TIMx->DIER, TIM_DIER_TDE); +4573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Indicates whether the trigger interrupt (TDE) is enabled. +4577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll DIER TDE LL_TIM_IsEnabledDMAReq_TRIG +4578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval State of bit (1 or 0). +4580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(const TIM_TypeDef *TIMx) +4582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** return ((READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE)) ? 1UL : 0UL); +4584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } +4585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @} +4588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** +4590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** @defgroup TIM_LL_EF_EVENT_Management EVENT-Management +4591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @{ +4592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** /** +4594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @brief Generate an update event. + ARM GAS /tmp/ccI26Lsx.s page 175 + + +4595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @rmtoll EGR UG LL_TIM_GenerateEvent_UPDATE +4596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @param TIMx Timer instance +4597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** * @retval None +4598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** */ +4599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** __STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE(TIM_TypeDef *TIMx) + 1948 .loc 2 4599 22 view .LVU547 + 1949 .LBB185: +4600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { +4601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** SET_BIT(TIMx->EGR, TIM_EGR_UG); + 1950 .loc 2 4601 3 view .LVU548 + 1951 00e6 4369 ldr r3, [r0, #20] + 1952 00e8 43F00103 orr r3, r3, #1 + 1953 00ec 4361 str r3, [r0, #20] + 1954 .LVL173: + 1955 .loc 2 4601 3 is_stmt 0 view .LVU549 + 1956 .LBE185: + 1957 .LBE184: + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 1958 .loc 1 392 3 is_stmt 1 view .LVU550 + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1959 .loc 1 393 1 is_stmt 0 view .LVU551 + 1960 00ee 0020 movs r0, #0 + 1961 .LVL174: + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 1962 .loc 1 393 1 view .LVU552 + 1963 00f0 30BD pop {r4, r5, pc} + 1964 .L82: + 1965 00f2 00BF .align 2 + 1966 .L81: + 1967 00f4 00000140 .word 1073807360 + 1968 00f8 00080040 .word 1073743872 + 1969 00fc 00040040 .word 1073742848 + 1970 0100 00440140 .word 1073824768 + 1971 0104 00180040 .word 1073747968 + 1972 0108 00200040 .word 1073750016 + 1973 010c 00040140 .word 1073808384 + 1974 .cfi_endproc + 1975 .LFE380: + 1977 .section .text.LL_TIM_OC_StructInit,"ax",%progbits + 1978 .align 1 + 1979 .global LL_TIM_OC_StructInit + 1980 .syntax unified + 1981 .thumb + 1982 .thumb_func + 1983 .fpu fpv5-d16 + 1985 LL_TIM_OC_StructInit: + 1986 .LVL175: + 1987 .LFB381: + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 1988 .loc 1 403 1 is_stmt 1 view -0 + 1989 .cfi_startproc + 1990 @ args = 0, pretend = 0, frame = 0 + 1991 @ frame_needed = 0, uses_anonymous_args = 0 + 1992 @ link register save eliminated. + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCState = LL_TIM_OCSTATE_DISABLE; + 1993 .loc 1 405 3 view .LVU554 + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCState = LL_TIM_OCSTATE_DISABLE; + ARM GAS /tmp/ccI26Lsx.s page 176 + + + 1994 .loc 1 405 35 is_stmt 0 view .LVU555 + 1995 0000 0023 movs r3, #0 + 1996 0002 0360 str r3, [r0] + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCNState = LL_TIM_OCSTATE_DISABLE; + 1997 .loc 1 406 3 is_stmt 1 view .LVU556 + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCNState = LL_TIM_OCSTATE_DISABLE; + 1998 .loc 1 406 35 is_stmt 0 view .LVU557 + 1999 0004 4360 str r3, [r0, #4] + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->CompareValue = 0x00000000U; + 2000 .loc 1 407 3 is_stmt 1 view .LVU558 + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->CompareValue = 0x00000000U; + 2001 .loc 1 407 35 is_stmt 0 view .LVU559 + 2002 0006 8360 str r3, [r0, #8] + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCPolarity = LL_TIM_OCPOLARITY_HIGH; + 2003 .loc 1 408 3 is_stmt 1 view .LVU560 + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCPolarity = LL_TIM_OCPOLARITY_HIGH; + 2004 .loc 1 408 35 is_stmt 0 view .LVU561 + 2005 0008 C360 str r3, [r0, #12] + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCNPolarity = LL_TIM_OCPOLARITY_HIGH; + 2006 .loc 1 409 3 is_stmt 1 view .LVU562 + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCNPolarity = LL_TIM_OCPOLARITY_HIGH; + 2007 .loc 1 409 35 is_stmt 0 view .LVU563 + 2008 000a 0361 str r3, [r0, #16] + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCIdleState = LL_TIM_OCIDLESTATE_LOW; + 2009 .loc 1 410 3 is_stmt 1 view .LVU564 + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCIdleState = LL_TIM_OCIDLESTATE_LOW; + 2010 .loc 1 410 35 is_stmt 0 view .LVU565 + 2011 000c 4361 str r3, [r0, #20] + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCNIdleState = LL_TIM_OCIDLESTATE_LOW; + 2012 .loc 1 411 3 is_stmt 1 view .LVU566 + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_OC_InitStruct->OCNIdleState = LL_TIM_OCIDLESTATE_LOW; + 2013 .loc 1 411 35 is_stmt 0 view .LVU567 + 2014 000e 8361 str r3, [r0, #24] + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2015 .loc 1 412 3 is_stmt 1 view .LVU568 + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2016 .loc 1 412 35 is_stmt 0 view .LVU569 + 2017 0010 C361 str r3, [r0, #28] + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2018 .loc 1 413 1 view .LVU570 + 2019 0012 7047 bx lr + 2020 .cfi_endproc + 2021 .LFE381: + 2023 .section .text.LL_TIM_OC_Init,"ax",%progbits + 2024 .align 1 + 2025 .global LL_TIM_OC_Init + 2026 .syntax unified + 2027 .thumb + 2028 .thumb_func + 2029 .fpu fpv5-d16 + 2031 LL_TIM_OC_Init: + 2032 .LVL176: + 2033 .LFB382: + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus result = ERROR; + 2034 .loc 1 432 1 is_stmt 1 view -0 + 2035 .cfi_startproc + 2036 @ args = 0, pretend = 0, frame = 0 + ARM GAS /tmp/ccI26Lsx.s page 177 + + + 2037 @ frame_needed = 0, uses_anonymous_args = 0 + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus result = ERROR; + 2038 .loc 1 432 1 is_stmt 0 view .LVU572 + 2039 0000 08B5 push {r3, lr} + 2040 .LCFI21: + 2041 .cfi_def_cfa_offset 8 + 2042 .cfi_offset 3, -8 + 2043 .cfi_offset 14, -4 + 2044 0002 0B46 mov r3, r1 + 2045 0004 1146 mov r1, r2 + 2046 .LVL177: + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2047 .loc 1 433 3 is_stmt 1 view .LVU573 + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2048 .loc 1 435 3 view .LVU574 + 2049 0006 B3F5805F cmp r3, #4096 + 2050 000a 1DD0 beq .L85 + 2051 000c 0ED8 bhi .L86 + 2052 000e 102B cmp r3, #16 + 2053 0010 17D0 beq .L87 + 2054 0012 B3F5807F cmp r3, #256 + 2055 0016 02D1 bne .L94 + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2056 .loc 1 444 7 view .LVU575 + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2057 .loc 1 444 16 is_stmt 0 view .LVU576 + 2058 0018 FFF7FEFF bl OC3Config + 2059 .LVL178: + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH4: + 2060 .loc 1 445 7 is_stmt 1 view .LVU577 + 2061 001c 05E0 b .L90 + 2062 .LVL179: + 2063 .L94: + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2064 .loc 1 435 3 is_stmt 0 view .LVU578 + 2065 001e 012B cmp r3, #1 + 2066 0020 02D1 bne .L95 + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2067 .loc 1 438 7 is_stmt 1 view .LVU579 + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2068 .loc 1 438 16 is_stmt 0 view .LVU580 + 2069 0022 FFF7FEFF bl OC1Config + 2070 .LVL180: + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH2: + 2071 .loc 1 439 7 is_stmt 1 view .LVU581 + 2072 0026 00E0 b .L90 + 2073 .LVL181: + 2074 .L95: + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2075 .loc 1 435 3 is_stmt 0 view .LVU582 + 2076 0028 0120 movs r0, #1 + 2077 .LVL182: + 2078 .L90: + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2079 .loc 1 459 3 is_stmt 1 view .LVU583 + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2080 .loc 1 460 1 is_stmt 0 view .LVU584 + ARM GAS /tmp/ccI26Lsx.s page 178 + + + 2081 002a 08BD pop {r3, pc} + 2082 .LVL183: + 2083 .L86: + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2084 .loc 1 435 3 view .LVU585 + 2085 002c B3F5803F cmp r3, #65536 + 2086 0030 0DD0 beq .L91 + 2087 0032 B3F5801F cmp r3, #1048576 + 2088 0036 02D1 bne .L96 + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2089 .loc 1 453 7 is_stmt 1 view .LVU586 + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2090 .loc 1 453 16 is_stmt 0 view .LVU587 + 2091 0038 FFF7FEFF bl OC6Config + 2092 .LVL184: + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** default: + 2093 .loc 1 454 7 is_stmt 1 view .LVU588 + 2094 003c F5E7 b .L90 + 2095 .LVL185: + 2096 .L96: + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2097 .loc 1 435 3 is_stmt 0 view .LVU589 + 2098 003e 0120 movs r0, #1 + 2099 .LVL186: + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2100 .loc 1 435 3 view .LVU590 + 2101 0040 F3E7 b .L90 + 2102 .LVL187: + 2103 .L87: + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2104 .loc 1 441 7 is_stmt 1 view .LVU591 + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2105 .loc 1 441 16 is_stmt 0 view .LVU592 + 2106 0042 FFF7FEFF bl OC2Config + 2107 .LVL188: + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH3: + 2108 .loc 1 442 7 is_stmt 1 view .LVU593 + 2109 0046 F0E7 b .L90 + 2110 .LVL189: + 2111 .L85: + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2112 .loc 1 447 7 view .LVU594 + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2113 .loc 1 447 16 is_stmt 0 view .LVU595 + 2114 0048 FFF7FEFF bl OC4Config + 2115 .LVL190: + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH5: + 2116 .loc 1 448 7 is_stmt 1 view .LVU596 + 2117 004c EDE7 b .L90 + 2118 .LVL191: + 2119 .L91: + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2120 .loc 1 450 7 view .LVU597 + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2121 .loc 1 450 16 is_stmt 0 view .LVU598 + 2122 004e FFF7FEFF bl OC5Config + 2123 .LVL192: + ARM GAS /tmp/ccI26Lsx.s page 179 + + + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH6: + 2124 .loc 1 451 7 is_stmt 1 view .LVU599 + 2125 0052 EAE7 b .L90 + 2126 .cfi_endproc + 2127 .LFE382: + 2129 .section .text.LL_TIM_IC_StructInit,"ax",%progbits + 2130 .align 1 + 2131 .global LL_TIM_IC_StructInit + 2132 .syntax unified + 2133 .thumb + 2134 .thumb_func + 2135 .fpu fpv5-d16 + 2137 LL_TIM_IC_StructInit: + 2138 .LVL193: + 2139 .LFB383: + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 2140 .loc 1 470 1 view -0 + 2141 .cfi_startproc + 2142 @ args = 0, pretend = 0, frame = 0 + 2143 @ frame_needed = 0, uses_anonymous_args = 0 + 2144 @ link register save eliminated. + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_ICInitStruct->ICActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + 2145 .loc 1 472 3 view .LVU601 + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_ICInitStruct->ICActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + 2146 .loc 1 472 35 is_stmt 0 view .LVU602 + 2147 0000 0023 movs r3, #0 + 2148 0002 0360 str r3, [r0] + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_ICInitStruct->ICPrescaler = LL_TIM_ICPSC_DIV1; + 2149 .loc 1 473 3 is_stmt 1 view .LVU603 + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_ICInitStruct->ICPrescaler = LL_TIM_ICPSC_DIV1; + 2150 .loc 1 473 35 is_stmt 0 view .LVU604 + 2151 0004 4FF48032 mov r2, #65536 + 2152 0008 4260 str r2, [r0, #4] + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_ICInitStruct->ICFilter = LL_TIM_IC_FILTER_FDIV1; + 2153 .loc 1 474 3 is_stmt 1 view .LVU605 + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_ICInitStruct->ICFilter = LL_TIM_IC_FILTER_FDIV1; + 2154 .loc 1 474 35 is_stmt 0 view .LVU606 + 2155 000a 8360 str r3, [r0, #8] + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2156 .loc 1 475 3 is_stmt 1 view .LVU607 + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2157 .loc 1 475 35 is_stmt 0 view .LVU608 + 2158 000c C360 str r3, [r0, #12] + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2159 .loc 1 476 1 view .LVU609 + 2160 000e 7047 bx lr + 2161 .cfi_endproc + 2162 .LFE383: + 2164 .section .text.LL_TIM_IC_Init,"ax",%progbits + 2165 .align 1 + 2166 .global LL_TIM_IC_Init + 2167 .syntax unified + 2168 .thumb + 2169 .thumb_func + 2170 .fpu fpv5-d16 + 2172 LL_TIM_IC_Init: + 2173 .LVL194: + ARM GAS /tmp/ccI26Lsx.s page 180 + + + 2174 .LFB384: + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus result = ERROR; + 2175 .loc 1 493 1 is_stmt 1 view -0 + 2176 .cfi_startproc + 2177 @ args = 0, pretend = 0, frame = 0 + 2178 @ frame_needed = 0, uses_anonymous_args = 0 + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** ErrorStatus result = ERROR; + 2179 .loc 1 493 1 is_stmt 0 view .LVU611 + 2180 0000 08B5 push {r3, lr} + 2181 .LCFI22: + 2182 .cfi_def_cfa_offset 8 + 2183 .cfi_offset 3, -8 + 2184 .cfi_offset 14, -4 + 2185 0002 0B46 mov r3, r1 + 2186 0004 1146 mov r1, r2 + 2187 .LVL195: + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2188 .loc 1 494 3 is_stmt 1 view .LVU612 + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2189 .loc 1 496 3 view .LVU613 + 2190 0006 B3F5807F cmp r3, #256 + 2191 000a 14D0 beq .L99 + 2192 000c 08D8 bhi .L100 + 2193 000e 012B cmp r3, #1 + 2194 0010 0ED0 beq .L101 + 2195 0012 102B cmp r3, #16 + 2196 0014 02D1 bne .L106 + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2197 .loc 1 502 7 view .LVU614 + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2198 .loc 1 502 16 is_stmt 0 view .LVU615 + 2199 0016 FFF7FEFF bl IC2Config + 2200 .LVL196: + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH3: + 2201 .loc 1 503 7 is_stmt 1 view .LVU616 + 2202 001a 08E0 b .L103 + 2203 .LVL197: + 2204 .L106: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2205 .loc 1 496 3 is_stmt 0 view .LVU617 + 2206 001c 0120 movs r0, #1 + 2207 .LVL198: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2208 .loc 1 496 3 view .LVU618 + 2209 001e 06E0 b .L103 + 2210 .LVL199: + 2211 .L100: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2212 .loc 1 496 3 view .LVU619 + 2213 0020 B3F5805F cmp r3, #4096 + 2214 0024 02D1 bne .L107 + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2215 .loc 1 508 7 is_stmt 1 view .LVU620 + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2216 .loc 1 508 16 is_stmt 0 view .LVU621 + 2217 0026 FFF7FEFF bl IC4Config + 2218 .LVL200: + ARM GAS /tmp/ccI26Lsx.s page 181 + + + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** default: + 2219 .loc 1 509 7 is_stmt 1 view .LVU622 + 2220 002a 00E0 b .L103 + 2221 .LVL201: + 2222 .L107: + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2223 .loc 1 496 3 is_stmt 0 view .LVU623 + 2224 002c 0120 movs r0, #1 + 2225 .LVL202: + 2226 .L103: + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2227 .loc 1 514 3 is_stmt 1 view .LVU624 + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2228 .loc 1 515 1 is_stmt 0 view .LVU625 + 2229 002e 08BD pop {r3, pc} + 2230 .LVL203: + 2231 .L101: + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2232 .loc 1 499 7 is_stmt 1 view .LVU626 + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2233 .loc 1 499 16 is_stmt 0 view .LVU627 + 2234 0030 FFF7FEFF bl IC1Config + 2235 .LVL204: + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH2: + 2236 .loc 1 500 7 is_stmt 1 view .LVU628 + 2237 0034 FBE7 b .L103 + 2238 .LVL205: + 2239 .L99: + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2240 .loc 1 505 7 view .LVU629 + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** break; + 2241 .loc 1 505 16 is_stmt 0 view .LVU630 + 2242 0036 FFF7FEFF bl IC3Config + 2243 .LVL206: + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** case LL_TIM_CHANNEL_CH4: + 2244 .loc 1 506 7 is_stmt 1 view .LVU631 + 2245 003a F8E7 b .L103 + 2246 .cfi_endproc + 2247 .LFE384: + 2249 .section .text.LL_TIM_ENCODER_StructInit,"ax",%progbits + 2250 .align 1 + 2251 .global LL_TIM_ENCODER_StructInit + 2252 .syntax unified + 2253 .thumb + 2254 .thumb_func + 2255 .fpu fpv5-d16 + 2257 LL_TIM_ENCODER_StructInit: + 2258 .LVL207: + 2259 .LFB385: + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 2260 .loc 1 524 1 view -0 + 2261 .cfi_startproc + 2262 @ args = 0, pretend = 0, frame = 0 + 2263 @ frame_needed = 0, uses_anonymous_args = 0 + 2264 @ link register save eliminated. + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING; + 2265 .loc 1 526 3 view .LVU633 + ARM GAS /tmp/ccI26Lsx.s page 182 + + + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING; + 2266 .loc 1 526 41 is_stmt 0 view .LVU634 + 2267 0000 0123 movs r3, #1 + 2268 0002 0360 str r3, [r0] + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + 2269 .loc 1 527 3 is_stmt 1 view .LVU635 + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + 2270 .loc 1 527 41 is_stmt 0 view .LVU636 + 2271 0004 0023 movs r3, #0 + 2272 0006 4360 str r3, [r0, #4] + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + 2273 .loc 1 528 3 is_stmt 1 view .LVU637 + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + 2274 .loc 1 528 41 is_stmt 0 view .LVU638 + 2275 0008 4FF48032 mov r2, #65536 + 2276 000c 8260 str r2, [r0, #8] + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + 2277 .loc 1 529 3 is_stmt 1 view .LVU639 + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + 2278 .loc 1 529 41 is_stmt 0 view .LVU640 + 2279 000e C360 str r3, [r0, #12] + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2Polarity = LL_TIM_IC_POLARITY_RISING; + 2280 .loc 1 530 3 is_stmt 1 view .LVU641 + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2Polarity = LL_TIM_IC_POLARITY_RISING; + 2281 .loc 1 530 41 is_stmt 0 view .LVU642 + 2282 0010 0361 str r3, [r0, #16] + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + 2283 .loc 1 531 3 is_stmt 1 view .LVU643 + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + 2284 .loc 1 531 41 is_stmt 0 view .LVU644 + 2285 0012 4361 str r3, [r0, #20] + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2Prescaler = LL_TIM_ICPSC_DIV1; + 2286 .loc 1 532 3 is_stmt 1 view .LVU645 + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2Prescaler = LL_TIM_ICPSC_DIV1; + 2287 .loc 1 532 41 is_stmt 0 view .LVU646 + 2288 0014 8261 str r2, [r0, #24] + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2Filter = LL_TIM_IC_FILTER_FDIV1; + 2289 .loc 1 533 3 is_stmt 1 view .LVU647 + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_EncoderInitStruct->IC2Filter = LL_TIM_IC_FILTER_FDIV1; + 2290 .loc 1 533 41 is_stmt 0 view .LVU648 + 2291 0016 C361 str r3, [r0, #28] + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2292 .loc 1 534 3 is_stmt 1 view .LVU649 + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2293 .loc 1 534 41 is_stmt 0 view .LVU650 + 2294 0018 0362 str r3, [r0, #32] + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2295 .loc 1 535 1 view .LVU651 + 2296 001a 7047 bx lr + 2297 .cfi_endproc + 2298 .LFE385: + 2300 .section .text.LL_TIM_ENCODER_Init,"ax",%progbits + 2301 .align 1 + 2302 .global LL_TIM_ENCODER_Init + 2303 .syntax unified + 2304 .thumb + 2305 .thumb_func + ARM GAS /tmp/ccI26Lsx.s page 183 + + + 2306 .fpu fpv5-d16 + 2308 LL_TIM_ENCODER_Init: + 2309 .LVL208: + 2310 .LFB386: + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr1; + 2311 .loc 1 547 1 is_stmt 1 view -0 + 2312 .cfi_startproc + 2313 @ args = 0, pretend = 0, frame = 0 + 2314 @ frame_needed = 0, uses_anonymous_args = 0 + 2315 @ link register save eliminated. + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr1; + 2316 .loc 1 547 1 is_stmt 0 view .LVU653 + 2317 0000 30B4 push {r4, r5} + 2318 .LCFI23: + 2319 .cfi_def_cfa_offset 8 + 2320 .cfi_offset 4, -8 + 2321 .cfi_offset 5, -4 + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccer; + 2322 .loc 1 548 3 is_stmt 1 view .LVU654 + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2323 .loc 1 549 3 view .LVU655 + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ENCODERMODE(TIM_EncoderInitStruct->EncoderMode)); + 2324 .loc 1 552 3 view .LVU656 + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC1Polarity)); + 2325 .loc 1 553 3 view .LVU657 + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC1ActiveInput)); + 2326 .loc 1 554 3 view .LVU658 + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC1Prescaler)); + 2327 .loc 1 555 3 view .LVU659 + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC1Filter)); + 2328 .loc 1 556 3 view .LVU660 + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC2Polarity)); + 2329 .loc 1 557 3 view .LVU661 + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC2ActiveInput)); + 2330 .loc 1 558 3 view .LVU662 + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC2Prescaler)); + 2331 .loc 1 559 3 view .LVU663 + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC2Filter)); + 2332 .loc 1 560 3 view .LVU664 + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2333 .loc 1 561 3 view .LVU665 + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2334 .loc 1 564 3 view .LVU666 + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2335 .loc 1 564 14 is_stmt 0 view .LVU667 + 2336 0002 036A ldr r3, [r0, #32] + 2337 0004 23F01103 bic r3, r3, #17 + 2338 0008 0362 str r3, [r0, #32] + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2339 .loc 1 567 3 is_stmt 1 view .LVU668 + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2340 .loc 1 567 12 is_stmt 0 view .LVU669 + 2341 000a 8369 ldr r3, [r0, #24] + 2342 .LVL209: + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2343 .loc 1 570 3 is_stmt 1 view .LVU670 + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + ARM GAS /tmp/ccI26Lsx.s page 184 + + + 2344 .loc 1 570 11 is_stmt 0 view .LVU671 + 2345 000c 026A ldr r2, [r0, #32] + 2346 .LVL210: + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1ActiveInput >> 16U); + 2347 .loc 1 573 3 is_stmt 1 view .LVU672 + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1ActiveInput >> 16U); + 2348 .loc 1 573 12 is_stmt 0 view .LVU673 + 2349 000e 23F0FF03 bic r3, r3, #255 + 2350 .LVL211: + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Filter >> 16U); + 2351 .loc 1 574 3 is_stmt 1 view .LVU674 + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Filter >> 16U); + 2352 .loc 1 574 64 is_stmt 0 view .LVU675 + 2353 0012 4C89 ldrh r4, [r1, #10] + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Filter >> 16U); + 2354 .loc 1 574 12 view .LVU676 + 2355 0014 1C43 orrs r4, r4, r3 + 2356 .LVL212: + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Prescaler >> 16U); + 2357 .loc 1 575 3 is_stmt 1 view .LVU677 + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Prescaler >> 16U); + 2358 .loc 1 575 59 is_stmt 0 view .LVU678 + 2359 0016 4B8A ldrh r3, [r1, #18] + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Prescaler >> 16U); + 2360 .loc 1 575 12 view .LVU679 + 2361 0018 1C43 orrs r4, r4, r3 + 2362 .LVL213: + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2363 .loc 1 576 3 is_stmt 1 view .LVU680 + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2364 .loc 1 576 62 is_stmt 0 view .LVU681 + 2365 001a CB89 ldrh r3, [r1, #14] + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2366 .loc 1 576 12 view .LVU682 + 2367 001c 2343 orrs r3, r3, r4 + 2368 .LVL214: + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2ActiveInput >> 8U); + 2369 .loc 1 579 3 is_stmt 1 view .LVU683 + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2ActiveInput >> 8U); + 2370 .loc 1 579 12 is_stmt 0 view .LVU684 + 2371 001e 23F47F43 bic r3, r3, #65280 + 2372 .LVL215: + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Filter >> 8U); + 2373 .loc 1 580 3 is_stmt 1 view .LVU685 + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Filter >> 8U); + 2374 .loc 1 580 47 is_stmt 0 view .LVU686 + 2375 0022 8C69 ldr r4, [r1, #24] + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Filter >> 8U); + 2376 .loc 1 580 12 view .LVU687 + 2377 0024 43EA1423 orr r3, r3, r4, lsr #8 + 2378 .LVL216: + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Prescaler >> 8U); + 2379 .loc 1 581 3 is_stmt 1 view .LVU688 + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Prescaler >> 8U); + 2380 .loc 1 581 47 is_stmt 0 view .LVU689 + 2381 0028 0C6A ldr r4, [r1, #32] + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Prescaler >> 8U); + ARM GAS /tmp/ccI26Lsx.s page 185 + + + 2382 .loc 1 581 12 view .LVU690 + 2383 002a 43EA1423 orr r3, r3, r4, lsr #8 + 2384 .LVL217: + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2385 .loc 1 582 3 is_stmt 1 view .LVU691 + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2386 .loc 1 582 47 is_stmt 0 view .LVU692 + 2387 002e CC69 ldr r4, [r1, #28] + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2388 .loc 1 582 12 view .LVU693 + 2389 0030 43EA1423 orr r3, r3, r4, lsr #8 + 2390 .LVL218: + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC1Polarity); + 2391 .loc 1 585 3 is_stmt 1 view .LVU694 + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC1Polarity); + 2392 .loc 1 585 11 is_stmt 0 view .LVU695 + 2393 0034 22F0AA04 bic r4, r2, #170 + 2394 .LVL219: + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC2Polarity << 4U); + 2395 .loc 1 586 3 is_stmt 1 view .LVU696 + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC2Polarity << 4U); + 2396 .loc 1 586 46 is_stmt 0 view .LVU697 + 2397 0038 4A68 ldr r2, [r1, #4] + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC2Polarity << 4U); + 2398 .loc 1 586 11 view .LVU698 + 2399 003a 2243 orrs r2, r2, r4 + 2400 .LVL220: + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + 2401 .loc 1 587 3 is_stmt 1 view .LVU699 + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + 2402 .loc 1 587 46 is_stmt 0 view .LVU700 + 2403 003c 4C69 ldr r4, [r1, #20] + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + 2404 .loc 1 587 11 view .LVU701 + 2405 003e 42EA0412 orr r2, r2, r4, lsl #4 + 2406 .LVL221: + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2407 .loc 1 588 3 is_stmt 1 view .LVU702 + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2408 .loc 1 588 11 is_stmt 0 view .LVU703 + 2409 0042 42F01102 orr r2, r2, #17 + 2410 .LVL222: + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2411 .loc 1 591 3 is_stmt 1 view .LVU704 + 2412 0046 0968 ldr r1, [r1] + 2413 .LVL223: + 2414 .LBB186: + 2415 .LBI186: +3109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 2416 .loc 2 3109 22 view .LVU705 + 2417 .LBB187: +3111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 2418 .loc 2 3111 3 view .LVU706 + 2419 0048 8568 ldr r5, [r0, #8] + 2420 004a 044C ldr r4, .L111 + 2421 004c 2C40 ands r4, r4, r5 + 2422 004e 2143 orrs r1, r1, r4 + ARM GAS /tmp/ccI26Lsx.s page 186 + + + 2423 .LVL224: +3111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 2424 .loc 2 3111 3 is_stmt 0 view .LVU707 + 2425 0050 8160 str r1, [r0, #8] + 2426 .LVL225: +3111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 2427 .loc 2 3111 3 view .LVU708 + 2428 .LBE187: + 2429 .LBE186: + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2430 .loc 1 594 3 is_stmt 1 view .LVU709 + 2431 0052 8361 str r3, [r0, #24] + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2432 .loc 1 597 3 view .LVU710 + 2433 0054 0262 str r2, [r0, #32] + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2434 .loc 1 599 3 view .LVU711 + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2435 .loc 1 600 1 is_stmt 0 view .LVU712 + 2436 0056 0020 movs r0, #0 + 2437 .LVL226: + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2438 .loc 1 600 1 view .LVU713 + 2439 0058 30BC pop {r4, r5} + 2440 .LCFI24: + 2441 .cfi_restore 5 + 2442 .cfi_restore 4 + 2443 .cfi_def_cfa_offset 0 + 2444 005a 7047 bx lr + 2445 .L112: + 2446 .align 2 + 2447 .L111: + 2448 005c F8FFFEFF .word -65544 + 2449 .cfi_endproc + 2450 .LFE386: + 2452 .section .text.LL_TIM_HALLSENSOR_StructInit,"ax",%progbits + 2453 .align 1 + 2454 .global LL_TIM_HALLSENSOR_StructInit + 2455 .syntax unified + 2456 .thumb + 2457 .thumb_func + 2458 .fpu fpv5-d16 + 2460 LL_TIM_HALLSENSOR_StructInit: + 2461 .LVL227: + 2462 .LFB387: + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 2463 .loc 1 610 1 is_stmt 1 view -0 + 2464 .cfi_startproc + 2465 @ args = 0, pretend = 0, frame = 0 + 2466 @ frame_needed = 0, uses_anonymous_args = 0 + 2467 @ link register save eliminated. + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_HallSensorInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + 2468 .loc 1 612 3 view .LVU715 + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_HallSensorInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + 2469 .loc 1 612 47 is_stmt 0 view .LVU716 + 2470 0000 0023 movs r3, #0 + 2471 0002 0360 str r3, [r0] + ARM GAS /tmp/ccI26Lsx.s page 187 + + + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_HallSensorInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + 2472 .loc 1 613 3 is_stmt 1 view .LVU717 + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_HallSensorInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + 2473 .loc 1 613 47 is_stmt 0 view .LVU718 + 2474 0004 4360 str r3, [r0, #4] + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_HallSensorInitStruct->CommutationDelay = 0U; + 2475 .loc 1 614 3 is_stmt 1 view .LVU719 + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_HallSensorInitStruct->CommutationDelay = 0U; + 2476 .loc 1 614 47 is_stmt 0 view .LVU720 + 2477 0006 8360 str r3, [r0, #8] + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2478 .loc 1 615 3 is_stmt 1 view .LVU721 + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2479 .loc 1 615 47 is_stmt 0 view .LVU722 + 2480 0008 C360 str r3, [r0, #12] + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2481 .loc 1 616 1 view .LVU723 + 2482 000a 7047 bx lr + 2483 .cfi_endproc + 2484 .LFE387: + 2486 .section .text.LL_TIM_HALLSENSOR_Init,"ax",%progbits + 2487 .align 1 + 2488 .global LL_TIM_HALLSENSOR_Init + 2489 .syntax unified + 2490 .thumb + 2491 .thumb_func + 2492 .fpu fpv5-d16 + 2494 LL_TIM_HALLSENSOR_Init: + 2495 .LVL228: + 2496 .LFB388: + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpcr2; + 2497 .loc 1 640 1 is_stmt 1 view -0 + 2498 .cfi_startproc + 2499 @ args = 0, pretend = 0, frame = 0 + 2500 @ frame_needed = 0, uses_anonymous_args = 0 + 2501 @ link register save eliminated. + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpcr2; + 2502 .loc 1 640 1 is_stmt 0 view .LVU725 + 2503 0000 70B4 push {r4, r5, r6} + 2504 .LCFI25: + 2505 .cfi_def_cfa_offset 12 + 2506 .cfi_offset 4, -12 + 2507 .cfi_offset 5, -8 + 2508 .cfi_offset 6, -4 + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccmr1; + 2509 .loc 1 641 3 is_stmt 1 view .LVU726 + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpccer; + 2510 .loc 1 642 3 view .LVU727 + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpsmcr; + 2511 .loc 1 643 3 view .LVU728 + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2512 .loc 1 644 3 view .LVU729 + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_HallSensorInitStruct->IC1Polarity)); + 2513 .loc 1 647 3 view .LVU730 + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_ICPSC(TIM_HallSensorInitStruct->IC1Prescaler)); + 2514 .loc 1 648 3 view .LVU731 + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_IC_FILTER(TIM_HallSensorInitStruct->IC1Filter)); + ARM GAS /tmp/ccI26Lsx.s page 188 + + + 2515 .loc 1 649 3 view .LVU732 + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2516 .loc 1 650 3 view .LVU733 + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2517 .loc 1 653 3 view .LVU734 + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2518 .loc 1 653 14 is_stmt 0 view .LVU735 + 2519 0002 036A ldr r3, [r0, #32] + 2520 0004 23F01103 bic r3, r3, #17 + 2521 0008 0362 str r3, [r0, #32] + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2522 .loc 1 656 3 is_stmt 1 view .LVU736 + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2523 .loc 1 656 10 is_stmt 0 view .LVU737 + 2524 000a 4568 ldr r5, [r0, #4] + 2525 .LVL229: + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2526 .loc 1 659 3 is_stmt 1 view .LVU738 + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2527 .loc 1 659 12 is_stmt 0 view .LVU739 + 2528 000c 8269 ldr r2, [r0, #24] + 2529 .LVL230: + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2530 .loc 1 662 3 is_stmt 1 view .LVU740 + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2531 .loc 1 662 11 is_stmt 0 view .LVU741 + 2532 000e 036A ldr r3, [r0, #32] + 2533 .LVL231: + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2534 .loc 1 665 3 is_stmt 1 view .LVU742 + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2535 .loc 1 665 11 is_stmt 0 view .LVU743 + 2536 0010 8668 ldr r6, [r0, #8] + 2537 .LVL232: + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2538 .loc 1 668 3 is_stmt 1 view .LVU744 + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2539 .loc 1 671 3 view .LVU745 + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2540 .loc 1 671 10 is_stmt 0 view .LVU746 + 2541 0012 45F0D005 orr r5, r5, #208 + 2542 .LVL233: + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpsmcr |= LL_TIM_TS_TI1F_ED; + 2543 .loc 1 674 3 is_stmt 1 view .LVU747 + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpsmcr |= LL_TIM_TS_TI1F_ED; + 2544 .loc 1 674 11 is_stmt 0 view .LVU748 + 2545 0016 124C ldr r4, .L116 + 2546 0018 3440 ands r4, r4, r6 + 2547 .LVL234: + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpsmcr |= LL_TIM_SLAVEMODE_RESET; + 2548 .loc 1 675 3 is_stmt 1 view .LVU749 + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2549 .loc 1 676 3 view .LVU750 + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2550 .loc 1 676 11 is_stmt 0 view .LVU751 + 2551 001a 44F04404 orr r4, r4, #68 + 2552 .LVL235: + ARM GAS /tmp/ccI26Lsx.s page 189 + + + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(LL_TIM_ACTIVEINPUT_TRC >> 16U); + 2553 .loc 1 679 3 is_stmt 1 view .LVU752 + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(LL_TIM_ACTIVEINPUT_TRC >> 16U); + 2554 .loc 1 679 12 is_stmt 0 view .LVU753 + 2555 001e 22F0FF02 bic r2, r2, #255 + 2556 .LVL236: + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Filter >> 16U); + 2557 .loc 1 680 3 is_stmt 1 view .LVU754 + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Filter >> 16U); + 2558 .loc 1 680 12 is_stmt 0 view .LVU755 + 2559 0022 42F00302 orr r2, r2, #3 + 2560 .LVL237: + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Prescaler >> 16U); + 2561 .loc 1 681 3 is_stmt 1 view .LVU756 + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Prescaler >> 16U); + 2562 .loc 1 681 62 is_stmt 0 view .LVU757 + 2563 0026 B1F80AC0 ldrh ip, [r1, #10] + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Prescaler >> 16U); + 2564 .loc 1 681 12 view .LVU758 + 2565 002a 4CEA0202 orr r2, ip, r2 + 2566 .LVL238: + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2567 .loc 1 682 3 is_stmt 1 view .LVU759 + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2568 .loc 1 682 65 is_stmt 0 view .LVU760 + 2569 002e B1F806C0 ldrh ip, [r1, #6] + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2570 .loc 1 682 12 view .LVU761 + 2571 0032 4CEA020C orr ip, ip, r2 + 2572 .LVL239: + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(LL_TIM_OCMODE_PWM2 << 8U); + 2573 .loc 1 685 3 is_stmt 1 view .LVU762 + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccmr1 |= (uint32_t)(LL_TIM_OCMODE_PWM2 << 8U); + 2574 .loc 1 685 12 is_stmt 0 view .LVU763 + 2575 0036 0B4A ldr r2, .L116+4 + 2576 0038 0CEA0202 and r2, ip, r2 + 2577 .LVL240: + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2578 .loc 1 686 3 is_stmt 1 view .LVU764 + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2579 .loc 1 686 12 is_stmt 0 view .LVU765 + 2580 003c 42F4E042 orr r2, r2, #28672 + 2581 .LVL241: + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_HallSensorInitStruct->IC1Polarity); + 2582 .loc 1 689 3 is_stmt 1 view .LVU766 + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_HallSensorInitStruct->IC1Polarity); + 2583 .loc 1 689 11 is_stmt 0 view .LVU767 + 2584 0040 23F0AA0C bic ip, r3, #170 + 2585 .LVL242: + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + 2586 .loc 1 690 3 is_stmt 1 view .LVU768 + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + 2587 .loc 1 690 49 is_stmt 0 view .LVU769 + 2588 0044 0B68 ldr r3, [r1] + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + 2589 .loc 1 690 11 view .LVU770 + 2590 0046 43EA0C03 orr r3, r3, ip + ARM GAS /tmp/ccI26Lsx.s page 190 + + + 2591 .LVL243: + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2592 .loc 1 691 3 is_stmt 1 view .LVU771 + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2593 .loc 1 691 11 is_stmt 0 view .LVU772 + 2594 004a 43F01103 orr r3, r3, #17 + 2595 .LVL244: + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2596 .loc 1 694 3 is_stmt 1 view .LVU773 + 2597 004e 4560 str r5, [r0, #4] + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2598 .loc 1 697 3 view .LVU774 + 2599 0050 8460 str r4, [r0, #8] + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2600 .loc 1 700 3 view .LVU775 + 2601 0052 8261 str r2, [r0, #24] + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2602 .loc 1 703 3 view .LVU776 + 2603 0054 0362 str r3, [r0, #32] + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2604 .loc 1 706 3 view .LVU777 + 2605 0056 CB68 ldr r3, [r1, #12] + 2606 .LVL245: + 2607 .LBB188: + 2608 .LBI188: +2461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** { + 2609 .loc 2 2461 22 view .LVU778 + 2610 .LBB189: +2463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 2611 .loc 2 2463 3 view .LVU779 + 2612 0058 8363 str r3, [r0, #56] + 2613 .LVL246: +2463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h **** } + 2614 .loc 2 2463 3 is_stmt 0 view .LVU780 + 2615 .LBE189: + 2616 .LBE188: + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2617 .loc 1 708 3 is_stmt 1 view .LVU781 + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2618 .loc 1 709 1 is_stmt 0 view .LVU782 + 2619 005a 0020 movs r0, #0 + 2620 .LVL247: + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2621 .loc 1 709 1 view .LVU783 + 2622 005c 70BC pop {r4, r5, r6} + 2623 .LCFI26: + 2624 .cfi_restore 6 + 2625 .cfi_restore 5 + 2626 .cfi_restore 4 + 2627 .cfi_def_cfa_offset 0 + 2628 .LVL248: + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2629 .loc 1 709 1 view .LVU784 + 2630 005e 7047 bx lr + 2631 .L117: + 2632 .align 2 + 2633 .L116: + ARM GAS /tmp/ccI26Lsx.s page 191 + + + 2634 0060 88FFFEFF .word -65656 + 2635 0064 FF03FFFE .word -16841729 + 2636 .cfi_endproc + 2637 .LFE388: + 2639 .section .text.LL_TIM_BDTR_StructInit,"ax",%progbits + 2640 .align 1 + 2641 .global LL_TIM_BDTR_StructInit + 2642 .syntax unified + 2643 .thumb + 2644 .thumb_func + 2645 .fpu fpv5-d16 + 2647 LL_TIM_BDTR_StructInit: + 2648 .LVL249: + 2649 .LFB389: + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /* Set the default configuration */ + 2650 .loc 1 719 1 is_stmt 1 view -0 + 2651 .cfi_startproc + 2652 @ args = 0, pretend = 0, frame = 0 + 2653 @ frame_needed = 0, uses_anonymous_args = 0 + 2654 @ link register save eliminated. + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->OSSIState = LL_TIM_OSSI_DISABLE; + 2655 .loc 1 721 3 view .LVU786 + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->OSSIState = LL_TIM_OSSI_DISABLE; + 2656 .loc 1 721 39 is_stmt 0 view .LVU787 + 2657 0000 0023 movs r3, #0 + 2658 0002 0360 str r3, [r0] + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->LockLevel = LL_TIM_LOCKLEVEL_OFF; + 2659 .loc 1 722 3 is_stmt 1 view .LVU788 + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->LockLevel = LL_TIM_LOCKLEVEL_OFF; + 2660 .loc 1 722 39 is_stmt 0 view .LVU789 + 2661 0004 4360 str r3, [r0, #4] + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->DeadTime = (uint8_t)0x00; + 2662 .loc 1 723 3 is_stmt 1 view .LVU790 + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->DeadTime = (uint8_t)0x00; + 2663 .loc 1 723 39 is_stmt 0 view .LVU791 + 2664 0006 8360 str r3, [r0, #8] + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->BreakState = LL_TIM_BREAK_DISABLE; + 2665 .loc 1 724 3 is_stmt 1 view .LVU792 + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->BreakState = LL_TIM_BREAK_DISABLE; + 2666 .loc 1 724 39 is_stmt 0 view .LVU793 + 2667 0008 0373 strb r3, [r0, #12] + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->BreakPolarity = LL_TIM_BREAK_POLARITY_LOW; + 2668 .loc 1 725 3 is_stmt 1 view .LVU794 + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->BreakPolarity = LL_TIM_BREAK_POLARITY_LOW; + 2669 .loc 1 725 39 is_stmt 0 view .LVU795 + 2670 000a C381 strh r3, [r0, #14] @ movhi + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->BreakFilter = LL_TIM_BREAK_FILTER_FDIV1; + 2671 .loc 1 726 3 is_stmt 1 view .LVU796 + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->BreakFilter = LL_TIM_BREAK_FILTER_FDIV1; + 2672 .loc 1 726 39 is_stmt 0 view .LVU797 + 2673 000c 0361 str r3, [r0, #16] + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->Break2State = LL_TIM_BREAK2_DISABLE; + 2674 .loc 1 727 3 is_stmt 1 view .LVU798 + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->Break2State = LL_TIM_BREAK2_DISABLE; + 2675 .loc 1 727 39 is_stmt 0 view .LVU799 + 2676 000e 4361 str r3, [r0, #20] + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->Break2Polarity = LL_TIM_BREAK2_POLARITY_LOW; + ARM GAS /tmp/ccI26Lsx.s page 192 + + + 2677 .loc 1 728 3 is_stmt 1 view .LVU800 + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->Break2Polarity = LL_TIM_BREAK2_POLARITY_LOW; + 2678 .loc 1 728 39 is_stmt 0 view .LVU801 + 2679 0010 8361 str r3, [r0, #24] + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->Break2Filter = LL_TIM_BREAK2_FILTER_FDIV1; + 2680 .loc 1 729 3 is_stmt 1 view .LVU802 + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->Break2Filter = LL_TIM_BREAK2_FILTER_FDIV1; + 2681 .loc 1 729 39 is_stmt 0 view .LVU803 + 2682 0012 C361 str r3, [r0, #28] + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->AutomaticOutput = LL_TIM_AUTOMATICOUTPUT_DISABLE; + 2683 .loc 1 730 3 is_stmt 1 view .LVU804 + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** TIM_BDTRInitStruct->AutomaticOutput = LL_TIM_AUTOMATICOUTPUT_DISABLE; + 2684 .loc 1 730 39 is_stmt 0 view .LVU805 + 2685 0014 0362 str r3, [r0, #32] + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2686 .loc 1 731 3 is_stmt 1 view .LVU806 + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2687 .loc 1 731 39 is_stmt 0 view .LVU807 + 2688 0016 4362 str r3, [r0, #36] + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2689 .loc 1 732 1 view .LVU808 + 2690 0018 7047 bx lr + 2691 .cfi_endproc + 2692 .LFE389: + 2694 .section .text.LL_TIM_BDTR_Init,"ax",%progbits + 2695 .align 1 + 2696 .global LL_TIM_BDTR_Init + 2697 .syntax unified + 2698 .thumb + 2699 .thumb_func + 2700 .fpu fpv5-d16 + 2702 LL_TIM_BDTR_Init: + 2703 .LVL250: + 2704 .LFB390: + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpbdtr = 0; + 2705 .loc 1 752 1 is_stmt 1 view -0 + 2706 .cfi_startproc + 2707 @ args = 0, pretend = 0, frame = 0 + 2708 @ frame_needed = 0, uses_anonymous_args = 0 + 2709 @ link register save eliminated. + 752:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** uint32_t tmpbdtr = 0; + 2710 .loc 1 752 1 is_stmt 0 view .LVU810 + 2711 0000 10B4 push {r4} + 2712 .LCFI27: + 2713 .cfi_def_cfa_offset 4 + 2714 .cfi_offset 4, -4 + 753:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2715 .loc 1 753 3 is_stmt 1 view .LVU811 + 2716 .LVL251: + 756:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OSSR_STATE(TIM_BDTRInitStruct->OSSRState)); + 2717 .loc 1 756 3 view .LVU812 + 757:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_OSSI_STATE(TIM_BDTRInitStruct->OSSIState)); + 2718 .loc 1 757 3 view .LVU813 + 758:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_LOCK_LEVEL(TIM_BDTRInitStruct->LockLevel)); + 2719 .loc 1 758 3 view .LVU814 + 759:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK_STATE(TIM_BDTRInitStruct->BreakState)); + 2720 .loc 1 759 3 view .LVU815 + ARM GAS /tmp/ccI26Lsx.s page 193 + + + 760:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK_POLARITY(TIM_BDTRInitStruct->BreakPolarity)); + 2721 .loc 1 760 3 view .LVU816 + 761:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(TIM_BDTRInitStruct->AutomaticOutput)); + 2722 .loc 1 761 3 view .LVU817 + 762:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK_FILTER(TIM_BDTRInitStruct->BreakFilter)); + 2723 .loc 1 762 3 view .LVU818 + 763:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2724 .loc 1 763 3 view .LVU819 + 769:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, TIM_BDTRInitStruct->LockLevel); + 2725 .loc 1 769 3 view .LVU820 + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, TIM_BDTRInitStruct->OSSIState); + 2726 .loc 1 770 3 view .LVU821 + 2727 0002 0B7B ldrb r3, [r1, #12] @ zero_extendqisi2 + 2728 .LVL252: + 770:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, TIM_BDTRInitStruct->OSSIState); + 2729 .loc 1 770 3 is_stmt 0 view .LVU822 + 2730 0004 8A68 ldr r2, [r1, #8] + 2731 0006 1343 orrs r3, r3, r2 + 2732 .LVL253: + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, TIM_BDTRInitStruct->OSSRState); + 2733 .loc 1 771 3 is_stmt 1 view .LVU823 + 2734 0008 23F48063 bic r3, r3, #1024 + 2735 .LVL254: + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, TIM_BDTRInitStruct->OSSRState); + 2736 .loc 1 771 3 is_stmt 0 view .LVU824 + 2737 000c 4A68 ldr r2, [r1, #4] + 2738 .LVL255: + 771:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, TIM_BDTRInitStruct->OSSRState); + 2739 .loc 1 771 3 view .LVU825 + 2740 000e 1343 orrs r3, r3, r2 + 2741 .LVL256: + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, TIM_BDTRInitStruct->BreakState); + 2742 .loc 1 772 3 is_stmt 1 view .LVU826 + 2743 0010 23F40063 bic r3, r3, #2048 + 2744 .LVL257: + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, TIM_BDTRInitStruct->BreakState); + 2745 .loc 1 772 3 is_stmt 0 view .LVU827 + 2746 0014 0A68 ldr r2, [r1] + 2747 .LVL258: + 772:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, TIM_BDTRInitStruct->BreakState); + 2748 .loc 1 772 3 view .LVU828 + 2749 0016 1343 orrs r3, r3, r2 + 2750 .LVL259: + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, TIM_BDTRInitStruct->BreakPolarity); + 2751 .loc 1 773 3 is_stmt 1 view .LVU829 + 2752 0018 23F48053 bic r3, r3, #4096 + 2753 .LVL260: + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, TIM_BDTRInitStruct->BreakPolarity); + 2754 .loc 1 773 3 is_stmt 0 view .LVU830 + 2755 001c CA89 ldrh r2, [r1, #14] + 2756 .LVL261: + 773:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, TIM_BDTRInitStruct->BreakPolarity); + 2757 .loc 1 773 3 view .LVU831 + 2758 001e 1343 orrs r3, r3, r2 + 2759 .LVL262: + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, TIM_BDTRInitStruct->AutomaticOutput); + 2760 .loc 1 774 3 is_stmt 1 view .LVU832 + ARM GAS /tmp/ccI26Lsx.s page 194 + + + 2761 0020 23F40053 bic r3, r3, #8192 + 2762 .LVL263: + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, TIM_BDTRInitStruct->AutomaticOutput); + 2763 .loc 1 774 3 is_stmt 0 view .LVU833 + 2764 0024 0A69 ldr r2, [r1, #16] + 2765 .LVL264: + 774:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, TIM_BDTRInitStruct->AutomaticOutput); + 2766 .loc 1 774 3 view .LVU834 + 2767 0026 1343 orrs r3, r3, r2 + 2768 .LVL265: + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, TIM_BDTRInitStruct->BreakFilter); + 2769 .loc 1 775 3 is_stmt 1 view .LVU835 + 2770 0028 23F48043 bic r3, r3, #16384 + 2771 .LVL266: + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, TIM_BDTRInitStruct->BreakFilter); + 2772 .loc 1 775 3 is_stmt 0 view .LVU836 + 2773 002c 4A6A ldr r2, [r1, #36] + 2774 .LVL267: + 775:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BKF, TIM_BDTRInitStruct->BreakFilter); + 2775 .loc 1 775 3 view .LVU837 + 2776 002e 1343 orrs r3, r3, r2 + 2777 .LVL268: + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2778 .loc 1 776 3 is_stmt 1 view .LVU838 + 2779 0030 23F47023 bic r3, r3, #983040 + 2780 .LVL269: + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2781 .loc 1 776 3 is_stmt 0 view .LVU839 + 2782 0034 4A69 ldr r2, [r1, #20] + 2783 .LVL270: + 776:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2784 .loc 1 776 3 view .LVU840 + 2785 0036 1343 orrs r3, r3, r2 + 2786 .LVL271: + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2787 .loc 1 778 3 is_stmt 1 view .LVU841 + 778:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** { + 2788 .loc 1 778 6 is_stmt 0 view .LVU842 + 2789 0038 0B4C ldr r4, .L122 + 2790 003a 0C4A ldr r2, .L122+4 + 2791 003c 9042 cmp r0, r2 + 2792 003e 18BF it ne + 2793 0040 A042 cmpne r0, r4 + 2794 0042 0BD1 bne .L120 + 780:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK2_POLARITY(TIM_BDTRInitStruct->Break2Polarity)); + 2795 .loc 1 780 5 is_stmt 1 view .LVU843 + 781:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** assert_param(IS_LL_TIM_BREAK2_FILTER(TIM_BDTRInitStruct->Break2Filter)); + 2796 .loc 1 781 5 view .LVU844 + 782:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2797 .loc 1 782 5 view .LVU845 + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, TIM_BDTRInitStruct->Break2State); + 2798 .loc 1 785 5 view .LVU846 + 2799 0044 23F47003 bic r3, r3, #15728640 + 2800 .LVL272: + 785:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2E, TIM_BDTRInitStruct->Break2State); + 2801 .loc 1 785 5 is_stmt 0 view .LVU847 + 2802 0048 0A6A ldr r2, [r1, #32] + ARM GAS /tmp/ccI26Lsx.s page 195 + + + 2803 004a 1343 orrs r3, r3, r2 + 2804 .LVL273: + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, TIM_BDTRInitStruct->Break2Polarity); + 2805 .loc 1 786 5 is_stmt 1 view .LVU848 + 2806 004c 23F08073 bic r3, r3, #16777216 + 2807 .LVL274: + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, TIM_BDTRInitStruct->Break2Polarity); + 2808 .loc 1 786 5 is_stmt 0 view .LVU849 + 2809 0050 8A69 ldr r2, [r1, #24] + 2810 .LVL275: + 786:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** MODIFY_REG(tmpbdtr, TIM_BDTR_BK2P, TIM_BDTRInitStruct->Break2Polarity); + 2811 .loc 1 786 5 view .LVU850 + 2812 0052 1343 orrs r3, r3, r2 + 2813 .LVL276: + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2814 .loc 1 787 5 is_stmt 1 view .LVU851 + 2815 0054 23F00073 bic r3, r3, #33554432 + 2816 .LVL277: + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2817 .loc 1 787 5 is_stmt 0 view .LVU852 + 2818 0058 CA69 ldr r2, [r1, #28] + 2819 .LVL278: + 787:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2820 .loc 1 787 5 view .LVU853 + 2821 005a 1343 orrs r3, r3, r2 + 2822 .LVL279: + 2823 .L120: + 791:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** + 2824 .loc 1 791 3 is_stmt 1 view .LVU854 + 2825 005c 4364 str r3, [r0, #68] + 793:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** } + 2826 .loc 1 793 3 view .LVU855 + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 2827 .loc 1 794 1 is_stmt 0 view .LVU856 + 2828 005e 0020 movs r0, #0 + 2829 .LVL280: + 794:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_tim.c **** /** + 2830 .loc 1 794 1 view .LVU857 + 2831 0060 5DF8044B ldr r4, [sp], #4 + 2832 .LCFI28: + 2833 .cfi_restore 4 + 2834 .cfi_def_cfa_offset 0 + 2835 0064 7047 bx lr + 2836 .L123: + 2837 0066 00BF .align 2 + 2838 .L122: + 2839 0068 00000140 .word 1073807360 + 2840 006c 00040140 .word 1073808384 + 2841 .cfi_endproc + 2842 .LFE390: + 2844 .text + 2845 .Letext0: + 2846 .file 4 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 2847 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 2848 .file 6 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + ARM GAS /tmp/ccI26Lsx.s page 196 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_ll_tim.c + /tmp/ccI26Lsx.s:17 .text.OC1Config:0000000000000000 $t + /tmp/ccI26Lsx.s:24 .text.OC1Config:0000000000000000 OC1Config + /tmp/ccI26Lsx.s:165 .text.OC1Config:000000000000006c $d + /tmp/ccI26Lsx.s:172 .text.OC2Config:0000000000000000 $t + /tmp/ccI26Lsx.s:178 .text.OC2Config:0000000000000000 OC2Config + /tmp/ccI26Lsx.s:319 .text.OC2Config:0000000000000074 $d + /tmp/ccI26Lsx.s:326 .text.OC3Config:0000000000000000 $t + /tmp/ccI26Lsx.s:332 .text.OC3Config:0000000000000000 OC3Config + /tmp/ccI26Lsx.s:473 .text.OC3Config:0000000000000070 $d + /tmp/ccI26Lsx.s:480 .text.OC4Config:0000000000000000 $t + /tmp/ccI26Lsx.s:486 .text.OC4Config:0000000000000000 OC4Config + /tmp/ccI26Lsx.s:601 .text.OC4Config:0000000000000054 $d + /tmp/ccI26Lsx.s:608 .text.OC5Config:0000000000000000 $t + /tmp/ccI26Lsx.s:614 .text.OC5Config:0000000000000000 OC5Config + /tmp/ccI26Lsx.s:722 .text.OC5Config:0000000000000054 $d + /tmp/ccI26Lsx.s:729 .text.OC6Config:0000000000000000 $t + /tmp/ccI26Lsx.s:735 .text.OC6Config:0000000000000000 OC6Config + /tmp/ccI26Lsx.s:840 .text.OC6Config:0000000000000054 $d + /tmp/ccI26Lsx.s:847 .text.IC1Config:0000000000000000 $t + /tmp/ccI26Lsx.s:853 .text.IC1Config:0000000000000000 IC1Config + /tmp/ccI26Lsx.s:907 .text.IC2Config:0000000000000000 $t + /tmp/ccI26Lsx.s:913 .text.IC2Config:0000000000000000 IC2Config + /tmp/ccI26Lsx.s:967 .text.IC3Config:0000000000000000 $t + /tmp/ccI26Lsx.s:973 .text.IC3Config:0000000000000000 IC3Config + /tmp/ccI26Lsx.s:1027 .text.IC4Config:0000000000000000 $t + /tmp/ccI26Lsx.s:1033 .text.IC4Config:0000000000000000 IC4Config + /tmp/ccI26Lsx.s:1087 .text.LL_TIM_DeInit:0000000000000000 $t + /tmp/ccI26Lsx.s:1094 .text.LL_TIM_DeInit:0000000000000000 LL_TIM_DeInit + /tmp/ccI26Lsx.s:1698 .text.LL_TIM_DeInit:00000000000001b0 $d + /tmp/ccI26Lsx.s:1718 .text.LL_TIM_StructInit:0000000000000000 $t + /tmp/ccI26Lsx.s:1725 .text.LL_TIM_StructInit:0000000000000000 LL_TIM_StructInit + /tmp/ccI26Lsx.s:1756 .text.LL_TIM_Init:0000000000000000 $t + /tmp/ccI26Lsx.s:1763 .text.LL_TIM_Init:0000000000000000 LL_TIM_Init + /tmp/ccI26Lsx.s:1967 .text.LL_TIM_Init:00000000000000f4 $d + /tmp/ccI26Lsx.s:1978 .text.LL_TIM_OC_StructInit:0000000000000000 $t + /tmp/ccI26Lsx.s:1985 .text.LL_TIM_OC_StructInit:0000000000000000 LL_TIM_OC_StructInit + /tmp/ccI26Lsx.s:2024 .text.LL_TIM_OC_Init:0000000000000000 $t + /tmp/ccI26Lsx.s:2031 .text.LL_TIM_OC_Init:0000000000000000 LL_TIM_OC_Init + /tmp/ccI26Lsx.s:2130 .text.LL_TIM_IC_StructInit:0000000000000000 $t + /tmp/ccI26Lsx.s:2137 .text.LL_TIM_IC_StructInit:0000000000000000 LL_TIM_IC_StructInit + /tmp/ccI26Lsx.s:2165 .text.LL_TIM_IC_Init:0000000000000000 $t + /tmp/ccI26Lsx.s:2172 .text.LL_TIM_IC_Init:0000000000000000 LL_TIM_IC_Init + /tmp/ccI26Lsx.s:2250 .text.LL_TIM_ENCODER_StructInit:0000000000000000 $t + /tmp/ccI26Lsx.s:2257 .text.LL_TIM_ENCODER_StructInit:0000000000000000 LL_TIM_ENCODER_StructInit + /tmp/ccI26Lsx.s:2301 .text.LL_TIM_ENCODER_Init:0000000000000000 $t + /tmp/ccI26Lsx.s:2308 .text.LL_TIM_ENCODER_Init:0000000000000000 LL_TIM_ENCODER_Init + /tmp/ccI26Lsx.s:2448 .text.LL_TIM_ENCODER_Init:000000000000005c $d + /tmp/ccI26Lsx.s:2453 .text.LL_TIM_HALLSENSOR_StructInit:0000000000000000 $t + /tmp/ccI26Lsx.s:2460 .text.LL_TIM_HALLSENSOR_StructInit:0000000000000000 LL_TIM_HALLSENSOR_StructInit + /tmp/ccI26Lsx.s:2487 .text.LL_TIM_HALLSENSOR_Init:0000000000000000 $t + /tmp/ccI26Lsx.s:2494 .text.LL_TIM_HALLSENSOR_Init:0000000000000000 LL_TIM_HALLSENSOR_Init + /tmp/ccI26Lsx.s:2634 .text.LL_TIM_HALLSENSOR_Init:0000000000000060 $d + /tmp/ccI26Lsx.s:2640 .text.LL_TIM_BDTR_StructInit:0000000000000000 $t + /tmp/ccI26Lsx.s:2647 .text.LL_TIM_BDTR_StructInit:0000000000000000 LL_TIM_BDTR_StructInit + /tmp/ccI26Lsx.s:2695 .text.LL_TIM_BDTR_Init:0000000000000000 $t + ARM GAS /tmp/ccI26Lsx.s page 197 + + + /tmp/ccI26Lsx.s:2702 .text.LL_TIM_BDTR_Init:0000000000000000 LL_TIM_BDTR_Init + /tmp/ccI26Lsx.s:2839 .text.LL_TIM_BDTR_Init:0000000000000068 $d + +NO UNDEFINED SYMBOLS diff --git a/build/stm32f7xx_ll_tim.o b/build/stm32f7xx_ll_tim.o new file mode 100644 index 0000000..23cffa6 Binary files /dev/null and b/build/stm32f7xx_ll_tim.o differ diff --git a/build/stm32f7xx_ll_usart.d b/build/stm32f7xx_ll_usart.d new file mode 100644 index 0000000..65789a2 --- /dev/null +++ b/build/stm32f7xx_ll_usart.d @@ -0,0 +1,70 @@ +build/stm32f7xx_ll_usart.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: diff --git a/build/stm32f7xx_ll_usart.lst b/build/stm32f7xx_ll_usart.lst new file mode 100644 index 0000000..69839ab --- /dev/null +++ b/build/stm32f7xx_ll_usart.lst @@ -0,0 +1,5259 @@ +ARM GAS /tmp/cc1GpNf6.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_ll_usart.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.LL_USART_DeInit,"ax",%progbits + 17 .align 1 + 18 .global LL_USART_DeInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 LL_USART_DeInit: + 26 .LVL0: + 27 .LFB542: + 28 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @file stm32f7xx_ll_usart.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @brief USART LL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #if defined(USE_FULL_LL_DRIVER) + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Includes ------------------------------------------------------------------*/ + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #include "stm32f7xx_ll_usart.h" + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #include "stm32f7xx_ll_rcc.h" + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #include "stm32f7xx_ll_bus.h" + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #ifdef USE_FULL_ASSERT + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #include "stm32_assert.h" + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #else + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define assert_param(expr) ((void)0U) + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #endif /* USE_FULL_ASSERT */ + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** @addtogroup STM32F7xx_LL_Driver + ARM GAS /tmp/cc1GpNf6.s page 2 + + + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #if defined(USART1) || defined(USART2) || defined(USART3) || defined(USART6) \ + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || defined(UART4) || defined(UART5) || defined(UART7) || defined(UART8) + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** @addtogroup USART_LL + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @{ + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Private types -------------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Private variables ---------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Private constants ---------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** @addtogroup USART_LL_Private_Constants + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @{ + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Definition of default baudrate value used for USART initialisation */ + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define USART_DEFAULT_BAUDRATE (9600U) + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @} + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Private macros ------------------------------------------------------------*/ + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** @addtogroup USART_LL_Private_Macros + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @{ + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* __BAUDRATE__ The maximum Baud Rate is derived from the maximum clock available + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * divided by the smallest oversampling used on the USART (i.e. 8) */ + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) <= 27000000U) + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* __VALUE__ In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_BRR_MIN(__VALUE__) ((__VALUE__) >= 16U) + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_DIRECTION(__VALUE__) (((__VALUE__) == LL_USART_DIRECTION_NONE) \ + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_DIRECTION_RX) \ + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_DIRECTION_TX) \ + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_DIRECTION_TX_RX)) + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_PARITY(__VALUE__) (((__VALUE__) == LL_USART_PARITY_NONE) \ + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_PARITY_EVEN) \ + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_PARITY_ODD)) + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_USART_DATAWIDTH_7B) \ + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_DATAWIDTH_8B) \ + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_DATAWIDTH_9B)) + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_OVERSAMPLING(__VALUE__) (((__VALUE__) == LL_USART_OVERSAMPLING_16) \ + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_OVERSAMPLING_8)) + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_LASTBITCLKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_LASTCLKPULSE_NO_OUTPUT) \ + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_LASTCLKPULSE_OUTPUT)) + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_CLOCKPHASE(__VALUE__) (((__VALUE__) == LL_USART_PHASE_1EDGE) \ + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_PHASE_2EDGE)) + ARM GAS /tmp/cc1GpNf6.s page 3 + + + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_CLOCKPOLARITY(__VALUE__) (((__VALUE__) == LL_USART_POLARITY_LOW) \ + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_POLARITY_HIGH)) + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_CLOCKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_CLOCK_DISABLE) \ + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_CLOCK_ENABLE)) + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_STOPBITS(__VALUE__) (((__VALUE__) == LL_USART_STOPBITS_0_5) \ + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_STOPBITS_1) \ + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_STOPBITS_1_5) \ + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_STOPBITS_2)) + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** #define IS_LL_USART_HWCONTROL(__VALUE__) (((__VALUE__) == LL_USART_HWCONTROL_NONE) \ + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_HWCONTROL_RTS) \ + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_HWCONTROL_CTS) \ + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** || ((__VALUE__) == LL_USART_HWCONTROL_RTS_CTS)) + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @} + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Private function prototypes -----------------------------------------------*/ + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Exported functions --------------------------------------------------------*/ + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** @addtogroup USART_LL_Exported_Functions + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @{ + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** @addtogroup USART_LL_EF_Init + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @{ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @brief De-initialize USART registers (Registers restored to their default values). + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @param USARTx USART Instance + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @retval An ErrorStatus enumeration value: + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - SUCCESS: USART registers are de-initialized + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - ERROR: USART registers are not de-initialized + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** ErrorStatus LL_USART_DeInit(const USART_TypeDef *USARTx) + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 29 .loc 1 128 1 view -0 + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 33 @ link register save eliminated. + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** ErrorStatus status = SUCCESS; + 34 .loc 1 129 3 view .LVU1 + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Check the parameters */ + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_UART_INSTANCE(USARTx)); + 35 .loc 1 132 3 view .LVU2 + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** if (USARTx == USART1) + 36 .loc 1 134 3 view .LVU3 + 37 .loc 1 134 6 is_stmt 0 view .LVU4 + 38 0000 3C4B ldr r3, .L19 + ARM GAS /tmp/cc1GpNf6.s page 4 + + + 39 0002 9842 cmp r0, r3 + 40 0004 16D0 beq .L11 + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Force reset of USART clock */ + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_USART1); + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Release reset of USART clock */ + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_USART1); + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == USART2) + 41 .loc 1 142 8 is_stmt 1 view .LVU5 + 42 .loc 1 142 11 is_stmt 0 view .LVU6 + 43 0006 3C4B ldr r3, .L19+4 + 44 0008 9842 cmp r0, r3 + 45 000a 1FD0 beq .L12 + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Force reset of USART clock */ + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_USART2); + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Release reset of USART clock */ + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_USART2); + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == USART3) + 46 .loc 1 150 8 is_stmt 1 view .LVU7 + 47 .loc 1 150 11 is_stmt 0 view .LVU8 + 48 000c 3B4B ldr r3, .L19+8 + 49 000e 9842 cmp r0, r3 + 50 0010 28D0 beq .L13 + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Force reset of USART clock */ + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_USART3); + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Release reset of USART clock */ + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_USART3); + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == UART4) + 51 .loc 1 158 8 is_stmt 1 view .LVU9 + 52 .loc 1 158 11 is_stmt 0 view .LVU10 + 53 0012 3B4B ldr r3, .L19+12 + 54 0014 9842 cmp r0, r3 + 55 0016 31D0 beq .L14 + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Force reset of UART clock */ + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART4); + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Release reset of UART clock */ + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART4); + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == UART5) + 56 .loc 1 166 8 is_stmt 1 view .LVU11 + 57 .loc 1 166 11 is_stmt 0 view .LVU12 + 58 0018 3A4B ldr r3, .L19+16 + 59 001a 9842 cmp r0, r3 + 60 001c 3AD0 beq .L15 + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Force reset of UART clock */ + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART5); + ARM GAS /tmp/cc1GpNf6.s page 5 + + + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Release reset of UART clock */ + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART5); + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == USART6) + 61 .loc 1 174 8 is_stmt 1 view .LVU13 + 62 .loc 1 174 11 is_stmt 0 view .LVU14 + 63 001e 3A4B ldr r3, .L19+20 + 64 0020 9842 cmp r0, r3 + 65 0022 43D0 beq .L16 + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Force reset of USART clock */ + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_USART6); + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Release reset of USART clock */ + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_USART6); + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == UART7) + 66 .loc 1 182 8 is_stmt 1 view .LVU15 + 67 .loc 1 182 11 is_stmt 0 view .LVU16 + 68 0024 394B ldr r3, .L19+24 + 69 0026 9842 cmp r0, r3 + 70 0028 4CD0 beq .L17 + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Force reset of UART clock */ + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART7); + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Release reset of UART clock */ + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART7); + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == UART8) + 71 .loc 1 190 8 is_stmt 1 view .LVU17 + 72 .loc 1 190 11 is_stmt 0 view .LVU18 + 73 002a 394B ldr r3, .L19+28 + 74 002c 9842 cmp r0, r3 + 75 002e 55D0 beq .L18 + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Force reset of UART clock */ + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART8); + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Release reset of UART clock */ + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART8); + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** status = ERROR; + 76 .loc 1 200 12 view .LVU19 + 77 0030 0120 movs r0, #1 + 78 .LVL1: + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** return (status); + 79 .loc 1 203 3 is_stmt 1 view .LVU20 + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 80 .loc 1 204 1 is_stmt 0 view .LVU21 + 81 0032 7047 bx lr + 82 .LVL2: + ARM GAS /tmp/cc1GpNf6.s page 6 + + + 83 .L11: + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 84 .loc 1 137 5 is_stmt 1 view .LVU22 + 85 .LBB44: + 86 .LBI44: + 87 .file 2 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @file stm32f7xx_ll_bus.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Header file of BUS LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @verbatim + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ##### RCC Limitations ##### + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ============================================================================== + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** A delay between an RCC peripheral clock enable and the effective peripheral + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** enabling should be taken into account in order to manage the peripheral read/write + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** from/to registers. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (+) This delay depends on the peripheral mapping. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (++) AHB & APB peripherals, 1 dummy read is necessary + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** [..] + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** Workarounds: + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** @endverbatim + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @attention + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * Copyright (c) 2017 STMicroelectronics. + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * All rights reserved. + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * This software is licensed under terms that can be found in the LICENSE file in + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * the root directory of this software component. + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** ****************************************************************************** + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifndef __STM32F7xx_LL_BUS_H + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define __STM32F7xx_LL_BUS_H + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #ifdef __cplusplus + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** extern "C" { + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Includes ------------------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #include "stm32f7xx.h" + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @addtogroup STM32F7xx_LL_Driver + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC) + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + ARM GAS /tmp/cc1GpNf6.s page 7 + + + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL BUS + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private types -------------------------------------------------------------*/ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private variables ---------------------------------------------------------*/ + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private constants ---------------------------------------------------------*/ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Private macros ------------------------------------------------------------*/ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported types ------------------------------------------------------------*/ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported constants --------------------------------------------------------*/ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOA RCC_AHB1ENR_GPIOAEN + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOB RCC_AHB1ENR_GPIOBEN + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOC RCC_AHB1ENR_GPIOCEN + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOD RCC_AHB1ENR_GPIODEN + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOE RCC_AHB1ENR_GPIOEEN + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOF RCC_AHB1ENR_GPIOFEN + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOG RCC_AHB1ENR_GPIOGEN + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOH RCC_AHB1ENR_GPIOHEN + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOI RCC_AHB1ENR_GPIOIEN + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOJ) + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOJ RCC_AHB1ENR_GPIOJEN + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOJ */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(GPIOK) + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_GPIOK RCC_AHB1ENR_GPIOKEN + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* GPIOK */ + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_CRC RCC_AHB1ENR_CRCEN + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_BKPSRAM RCC_AHB1ENR_BKPSRAMEN + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DTCMRAM RCC_AHB1ENR_DTCMRAMEN + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHB1ENR_DMA1EN + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHB1ENR_DMA2EN + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DMA2D) + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_DMA2D RCC_AHB1ENR_DMA2DEN + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DMA2D */ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(ETH) + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMAC RCC_AHB1ENR_ETHMACEN + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACTX RCC_AHB1ENR_ETHMACTXEN + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACRX RCC_AHB1ENR_ETHMACRXEN + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_ETHMACPTP RCC_AHB1ENR_ETHMACPTPEN + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* ETH */ + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHS RCC_AHB1ENR_OTGHSEN + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_OTGHSULPI RCC_AHB1ENR_OTGHSULPIEN + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_AXI RCC_AHB1LPENR_AXILPEN + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_FLITF RCC_AHB1LPENR_FLITFLPEN + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHB1LPENR_SRAM1LPEN + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB1_GRP1_PERIPH_SRAM2 RCC_AHB1LPENR_SRAM2LPEN + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + ARM GAS /tmp/cc1GpNf6.s page 8 + + + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DCMI) + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_DCMI RCC_AHB2ENR_DCMIEN + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DCMI */ + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(JPEG) + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_JPEG RCC_AHB2ENR_JPEGEN + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* JPEG */ + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CRYP) + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_CRYP RCC_AHB2ENR_CRYPEN + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CRYP */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(AES) + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_AES RCC_AHB2ENR_AESEN + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* AES */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(HASH) + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_HASH RCC_AHB2ENR_HASHEN + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* HASH */ + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_RNG RCC_AHB2ENR_RNGEN + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB2_GRP1_PERIPH_OTGFS RCC_AHB2ENR_OTGFSEN + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_AHB3_GRP1_PERIPH AHB3 GRP1 PERIPH + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_ALL 0xFFFFFFFFU + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_FMC RCC_AHB3ENR_FMCEN + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_AHB3_GRP1_PERIPH_QSPI RCC_AHB3ENR_QSPIEN + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM12 RCC_APB1ENR_TIM12EN + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM13 RCC_APB1ENR_TIM13EN + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_TIM14 RCC_APB1ENR_TIM14EN + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APB1ENR_LPTIM1EN + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPDIFRX) + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_SPDIFRX RCC_APB1ENR_SPDIFRXEN + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPDIFRX */ + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN + ARM GAS /tmp/cc1GpNf6.s page 9 + + + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C3 RCC_APB1ENR_I2C3EN + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(I2C4) + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_I2C4 RCC_APB1ENR_I2C4EN + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* I2C4 */ + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR_CAN1EN + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN2) + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR_CAN2EN + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN2 */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CAN3) + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CAN3 RCC_APB1ENR_CAN3EN + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CAN3 */ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(CEC) + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_CEC RCC_APB1ENR_CECEN + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* CEC */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART7 RCC_APB1ENR_UART7EN + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_UART8 RCC_APB1ENR_UART8EN + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(RCC_APB1ENR_RTCEN) + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APB1ENR_RTCEN + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* RCC_APB1ENR_RTCEN */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_USART6 RCC_APB2ENR_USART6EN + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC2 RCC_APB2ENR_ADC2EN + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC3 RCC_APB2ENR_ADC3EN + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC1 RCC_APB2ENR_SDMMC1EN + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SDMMC2) + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SDMMC2 RCC_APB2ENR_SDMMC2EN + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SDMMC2 */ + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI4 RCC_APB2ENR_SPI4EN + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI5 RCC_APB2ENR_SPI5EN + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(SPI6) + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SPI6 RCC_APB2ENR_SPI6EN + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* SPI6 */ + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI1 RCC_APB2ENR_SAI1EN + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_SAI2 RCC_APB2ENR_SAI2EN + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(LTDC) + ARM GAS /tmp/cc1GpNf6.s page 10 + + + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_LTDC RCC_APB2ENR_LTDCEN + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* LTDC */ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DSI) + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DSI RCC_APB2ENR_DSIEN + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DSI */ + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(DFSDM1_Channel0) + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_DFSDM1 RCC_APB2ENR_DFSDM1EN + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* DFSDM1_Channel0 */ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(MDIOS) + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_MDIO RCC_APB2ENR_MDIOEN + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* MDIOS */ + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #if defined(USB_HS_PHYC) + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_OTGPHYC RCC_APB2ENR_OTGPHYCEN + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #endif /* USB_HS_PHYC */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** #define LL_APB2_GRP1_PERIPH_ADC RCC_APB2RSTR_ADCRST + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported macro ------------------------------------------------------------*/ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Exported functions --------------------------------------------------------*/ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB1 AHB1 + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB1 peripherals clock. + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_EnableClock\n + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_EnableClock\n + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_EnableClock\n + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_EnableClock\n + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_EnableClock\n + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_EnableClock\n + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_EnableClock\n + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_EnableClock\n + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_EnableClock\n + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_EnableClock\n + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_EnableClock\n + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_EnableClock\n + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_EnableClock\n + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_EnableClock\n + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_EnableClock\n + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_EnableClock\n + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_EnableClock\n + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_EnableClock\n + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_EnableClock\n + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_EnableClock\n + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_EnableClock\n + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_EnableClock\n + ARM GAS /tmp/cc1GpNf6.s page 11 + + + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIEN LL_AHB1_GRP1_EnableClock + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1ENR, Periphs); + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB1 peripheral clock is enabled or not + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_IsEnabledClock\n + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_IsEnabledClock\n + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_IsEnabledClock\n + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_IsEnabledClock\n + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_IsEnabledClock\n + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_IsEnabledClock\n + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_IsEnabledClock\n + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_IsEnabledClock\n + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_IsEnabledClock\n + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_IsEnabledClock\n + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_IsEnabledClock\n + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_IsEnabledClock\n + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_IsEnabledClock\n + ARM GAS /tmp/cc1GpNf6.s page 12 + + + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_IsEnabledClock\n + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_IsEnabledClock\n + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_IsEnabledClock\n + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_IsEnabledClock\n + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_IsEnabledClock\n + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_IsEnabledClock + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB1ENR, Periphs) == Periphs); + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB1 peripherals clock. + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1ENR GPIOAEN LL_AHB1_GRP1_DisableClock\n + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOBEN LL_AHB1_GRP1_DisableClock\n + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOCEN LL_AHB1_GRP1_DisableClock\n + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIODEN LL_AHB1_GRP1_DisableClock\n + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOEEN LL_AHB1_GRP1_DisableClock\n + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOFEN LL_AHB1_GRP1_DisableClock\n + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOGEN LL_AHB1_GRP1_DisableClock\n + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOHEN LL_AHB1_GRP1_DisableClock\n + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOIEN LL_AHB1_GRP1_DisableClock\n + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOJEN LL_AHB1_GRP1_DisableClock\n + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR GPIOKEN LL_AHB1_GRP1_DisableClock\n + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR CRCEN LL_AHB1_GRP1_DisableClock\n + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR BKPSRAMEN LL_AHB1_GRP1_DisableClock\n + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DTCMRAMEN LL_AHB1_GRP1_DisableClock\n + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA1EN LL_AHB1_GRP1_DisableClock\n + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2EN LL_AHB1_GRP1_DisableClock\n + ARM GAS /tmp/cc1GpNf6.s page 13 + + + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR DMA2DEN LL_AHB1_GRP1_DisableClock\n + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACEN LL_AHB1_GRP1_DisableClock\n + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACTXEN LL_AHB1_GRP1_DisableClock\n + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACRXEN LL_AHB1_GRP1_DisableClock\n + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR ETHMACPTPEN LL_AHB1_GRP1_DisableClock\n + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSEN LL_AHB1_GRP1_DisableClock\n + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1ENR OTGHSULPIENDEN LL_AHB1_GRP1_DisableClock + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1ENR, Periphs); + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB1 peripherals reset. + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ForceReset\n + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ForceReset\n + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ForceReset\n + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ForceReset\n + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ForceReset\n + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ForceReset\n + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ForceReset\n + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ForceReset\n + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ForceReset\n + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ForceReset\n + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ForceReset\n + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ForceReset\n + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset\n + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ForceReset\n + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ForceReset\n + ARM GAS /tmp/cc1GpNf6.s page 14 + + + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ForceReset\n + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ForceReset + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1RSTR, Periphs); + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB1 peripherals reset. + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1RSTR GPIOARST LL_AHB1_GRP1_ReleaseReset\n + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOBRST LL_AHB1_GRP1_ReleaseReset\n + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOCRST LL_AHB1_GRP1_ReleaseReset\n + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIODRST LL_AHB1_GRP1_ReleaseReset\n + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOERST LL_AHB1_GRP1_ReleaseReset\n + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOFRST LL_AHB1_GRP1_ReleaseReset\n + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOGRST LL_AHB1_GRP1_ReleaseReset\n + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOHRST LL_AHB1_GRP1_ReleaseReset\n + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOIRST LL_AHB1_GRP1_ReleaseReset\n + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOJRST LL_AHB1_GRP1_ReleaseReset\n + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR GPIOKRST LL_AHB1_GRP1_ReleaseReset\n + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ReleaseReset\n + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR ETHMACRST LL_AHB1_GRP1_ReleaseReset\n + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1RSTR OTGHSRST LL_AHB1_GRP1_ReleaseReset + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + ARM GAS /tmp/cc1GpNf6.s page 15 + + + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1RSTR, Periphs); + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB1 peripheral clocks in low-power mode + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1LPENR GPIOALPEN LL_AHB1_GRP1_EnableClockLowPower\n + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOBLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOCLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIODLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOELPEN LL_AHB1_GRP1_EnableClockLowPower\n + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOFLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOGLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOHLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOILPEN LL_AHB1_GRP1_EnableClockLowPower\n + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOJLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOKLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR CRCLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR AXILPEN LL_AHB1_GRP1_EnableClockLowPower\n + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR FLITFLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM1LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM2LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR BKPSRAMLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DTCMRAMLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA1LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2LPEN LL_AHB1_GRP1_EnableClockLowPower\n + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2DLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACTXLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACRXLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACPTPLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSLPEN LL_AHB1_GRP1_EnableClockLowPower\n + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSULPILPEN LL_AHB1_GRP1_EnableClockLowPower + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + ARM GAS /tmp/cc1GpNf6.s page 16 + + + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_AXI + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_FLITF + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM2 + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_EnableClockLowPower(uint32_t Periphs) + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB1LPENR, Periphs); + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB1LPENR, Periphs); + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB1 peripheral clocks in low-power mode + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB1LPENR GPIOALPEN LL_AHB1_GRP1_DisableClockLowPower\n + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOBLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOCLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIODLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOELPEN LL_AHB1_GRP1_DisableClockLowPower\n + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOFLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOGLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOHLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOILPEN LL_AHB1_GRP1_DisableClockLowPower\n + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOJLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR GPIOKLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR CRCLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR AXILPEN LL_AHB1_GRP1_DisableClockLowPower\n + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR FLITFLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM1LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR SRAM2LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR BKPSRAMLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DTCMRAMLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA1LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2LPEN LL_AHB1_GRP1_DisableClockLowPower\n + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR DMA2DLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACLPEN LL_AHB1_GRP1_DisableClockLowPower\n + ARM GAS /tmp/cc1GpNf6.s page 17 + + + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACTXLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACRXLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR ETHMACPTPLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSLPEN LL_AHB1_GRP1_DisableClockLowPower\n + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB1LPENR OTGHSULPILPEN LL_AHB1_GRP1_DisableClockLowPower + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOI + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOJ (*) + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOK (*) + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_AXI + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_FLITF + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM2 + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_BKPSRAM + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DTCMRAM + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACPTP (*) + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHS + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB1_GRP1_PERIPH_OTGHSULPI + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB1_GRP1_DisableClockLowPower(uint32_t Periphs) + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB1LPENR, Periphs); + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB2 AHB2 + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB2 peripherals clock. + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_EnableClock\n + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_EnableClock\n + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_EnableClock\n + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_EnableClock\n + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_EnableClock\n + ARM GAS /tmp/cc1GpNf6.s page 18 + + + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_EnableClock\n + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_EnableClock + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs) + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2ENR, Periphs); + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB2 peripheral clock is enabled or not + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_IsEnabledClock\n + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_IsEnabledClock\n + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_IsEnabledClock\n + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_IsEnabledClock\n + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_IsEnabledClock\n + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_IsEnabledClock\n + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_IsEnabledClock + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB2_GRP1_IsEnabledClock(uint32_t Periphs) + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB2ENR, Periphs) == Periphs); + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB2 peripherals clock. + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2ENR DCMIEN LL_AHB2_GRP1_DisableClock\n + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR JPEGEN LL_AHB2_GRP1_DisableClock\n + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR CRYPEN LL_AHB2_GRP1_DisableClock\n + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR AESEN LL_AHB2_GRP1_DisableClock\n + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR HASHEN LL_AHB2_GRP1_DisableClock\n + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR RNGEN LL_AHB2_GRP1_DisableClock\n + ARM GAS /tmp/cc1GpNf6.s page 19 + + + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2ENR OTGFSEN LL_AHB2_GRP1_DisableClock + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_DisableClock(uint32_t Periphs) + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2ENR, Periphs); + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB2 peripherals reset. + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2RSTR DCMIRST LL_AHB2_GRP1_ForceReset\n + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR JPEGRST LL_AHB2_GRP1_ForceReset\n + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR CRYPRST LL_AHB2_GRP1_ForceReset\n + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR AESRST LL_AHB2_GRP1_ForceReset\n + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR HASHRST LL_AHB2_GRP1_ForceReset\n + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR RNGRST LL_AHB2_GRP1_ForceReset\n + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ForceReset + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_ForceReset(uint32_t Periphs) + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2RSTR, Periphs); + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB2 peripherals reset. + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2RSTR DCMIRST LL_AHB2_GRP1_ReleaseReset\n + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR JPEGRST LL_AHB2_GRP1_ReleaseReset\n + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR CRYPRST LL_AHB2_GRP1_ReleaseReset\n + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR AESRST LL_AHB2_GRP1_ReleaseReset\n + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR HASHRST LL_AHB2_GRP1_ReleaseReset\n + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR RNGRST LL_AHB2_GRP1_ReleaseReset\n + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ReleaseReset + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + ARM GAS /tmp/cc1GpNf6.s page 20 + + + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_ReleaseReset(uint32_t Periphs) + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2RSTR, Periphs); + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB2 peripheral clocks in low-power mode + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2LPENR DCMILPEN LL_AHB2_GRP1_EnableClockLowPower\n + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR JPEGLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR CRYPLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR AESLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR HASHLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR RNGLPEN LL_AHB2_GRP1_EnableClockLowPower\n + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR OTGFSLPEN LL_AHB2_GRP1_EnableClockLowPower + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_EnableClockLowPower(uint32_t Periphs) + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB2LPENR, Periphs); + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB2LPENR, Periphs); + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB2 peripheral clocks in low-power mode + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB2LPENR DCMILPEN LL_AHB2_GRP1_DisableClockLowPower\n + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR JPEGLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR CRYPLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR AESLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR HASHLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR RNGLPEN LL_AHB2_GRP1_DisableClockLowPower\n + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB2LPENR OTGFSLPEN LL_AHB2_GRP1_DisableClockLowPower + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_JPEG (*) + ARM GAS /tmp/cc1GpNf6.s page 21 + + + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_CRYP (*) + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB2_GRP1_DisableClockLowPower(uint32_t Periphs) + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB2LPENR, Periphs); + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_AHB3 AHB3 + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB3 peripherals clock. + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_EnableClock\n + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_EnableClock + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_EnableClock(uint32_t Periphs) + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3ENR, Periphs); + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB3ENR, Periphs); + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if AHB3 peripheral clock is enabled or not + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_IsEnabledClock\n + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_IsEnabledClock + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_AHB3_GRP1_IsEnabledClock(uint32_t Periphs) + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->AHB3ENR, Periphs) == Periphs); + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + ARM GAS /tmp/cc1GpNf6.s page 22 + + + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB3 peripherals clock. + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_DisableClock\n + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3ENR QSPIEN LL_AHB3_GRP1_DisableClock + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_DisableClock(uint32_t Periphs) + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3ENR, Periphs); + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force AHB3 peripherals reset. + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ForceReset\n + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3RSTR QSPIRST LL_AHB3_GRP1_ForceReset + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_ALL + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_ForceReset(uint32_t Periphs) + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3RSTR, Periphs); + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release AHB3 peripherals reset. + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ReleaseReset\n + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3RSTR QSPIRST LL_AHB3_GRP1_ReleaseReset + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_ReleaseReset(uint32_t Periphs) + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3RSTR, Periphs); + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable AHB3 peripheral clocks in low-power mode + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3LPENR FMCLPEN LL_AHB3_GRP1_EnableClockLowPower\n + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3LPENR QSPILPEN LL_AHB3_GRP1_EnableClockLowPower + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + ARM GAS /tmp/cc1GpNf6.s page 23 + + + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_EnableClockLowPower(uint32_t Periphs) + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->AHB3LPENR, Periphs); + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->AHB3LPENR, Periphs); + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable AHB3 peripheral clocks in low-power mode + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll AHB3LPENR FMCLPEN LL_AHB3_GRP1_DisableClockLowPower\n + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * AHB3LPENR QSPILPEN LL_AHB3_GRP1_DisableClockLowPower + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_AHB3_GRP1_DisableClockLowPower(uint32_t Periphs) + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->AHB3LPENR, Periphs); + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_APB1 APB1 + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB1 peripherals clock. +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_EnableClock\n +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_EnableClock\n +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_EnableClock\n +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_EnableClock\n +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_EnableClock\n +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_EnableClock\n +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_EnableClock\n +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_EnableClock\n +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_EnableClock\n +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_EnableClock\n +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_EnableClock\n +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_EnableClock\n +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_EnableClock\n +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_EnableClock\n +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_EnableClock\n +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_EnableClock\n +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_EnableClock\n + ARM GAS /tmp/cc1GpNf6.s page 24 + + +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_EnableClock\n +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_EnableClock\n +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_EnableClock\n +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_EnableClock\n +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_EnableClock\n +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_EnableClock\n +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_EnableClock\n +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_EnableClock\n +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_EnableClock\n +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_EnableClock\n +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_EnableClock\n +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_EnableClock\n +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_EnableClock\n +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_EnableClock +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1ENR, Periphs); +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB1ENR, Periphs); +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; + ARM GAS /tmp/cc1GpNf6.s page 25 + + +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if APB1 peripheral clock is enabled or not +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_IsEnabledClock\n +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_IsEnabledClock\n +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_IsEnabledClock\n +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_IsEnabledClock\n +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_IsEnabledClock\n +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_IsEnabledClock\n +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_IsEnabledClock\n +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_IsEnabledClock\n +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_IsEnabledClock\n +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_IsEnabledClock\n +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_IsEnabledClock\n +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_IsEnabledClock\n +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_IsEnabledClock\n +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_IsEnabledClock\n +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_IsEnabledClock\n +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_IsEnabledClock\n +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_IsEnabledClock\n +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_IsEnabledClock\n +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_IsEnabledClock\n +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_IsEnabledClock\n +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_IsEnabledClock\n +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_IsEnabledClock\n +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_IsEnabledClock\n +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_IsEnabledClock\n +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_IsEnabledClock\n +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_IsEnabledClock\n +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_IsEnabledClock\n +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_IsEnabledClock\n +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_IsEnabledClock\n +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_IsEnabledClock\n +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_IsEnabledClock +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + ARM GAS /tmp/cc1GpNf6.s page 26 + + +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs) +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->APB1ENR, Periphs) == Periphs); +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB1 peripherals clock. +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_DisableClock\n +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM3EN LL_APB1_GRP1_DisableClock\n +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM4EN LL_APB1_GRP1_DisableClock\n +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM5EN LL_APB1_GRP1_DisableClock\n +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM6EN LL_APB1_GRP1_DisableClock\n +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM7EN LL_APB1_GRP1_DisableClock\n +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM12EN LL_APB1_GRP1_DisableClock\n +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM13EN LL_APB1_GRP1_DisableClock\n +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR TIM14EN LL_APB1_GRP1_DisableClock\n +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR LPTIM1EN LL_APB1_GRP1_DisableClock\n +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR WWDGEN LL_APB1_GRP1_DisableClock\n +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI2EN LL_APB1_GRP1_DisableClock\n +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPI3EN LL_APB1_GRP1_DisableClock\n +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR SPDIFRXEN LL_APB1_GRP1_DisableClock\n +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART2EN LL_APB1_GRP1_DisableClock\n +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR USART3EN LL_APB1_GRP1_DisableClock\n +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART4EN LL_APB1_GRP1_DisableClock\n +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART5EN LL_APB1_GRP1_DisableClock\n +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C1EN LL_APB1_GRP1_DisableClock\n +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C2EN LL_APB1_GRP1_DisableClock\n +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C3EN LL_APB1_GRP1_DisableClock\n +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR I2C4EN LL_APB1_GRP1_DisableClock\n +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN1EN LL_APB1_GRP1_DisableClock\n +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN2EN LL_APB1_GRP1_DisableClock\n +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CAN3EN LL_APB1_GRP1_DisableClock\n +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR CECEN LL_APB1_GRP1_DisableClock\n +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR PWREN LL_APB1_GRP1_DisableClock\n +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR DACEN LL_APB1_GRP1_DisableClock\n +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART7EN LL_APB1_GRP1_DisableClock\n +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR UART8EN LL_APB1_GRP1_DisableClock\n +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1ENR RTCEN LL_APB1_GRP1_DisableClock +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 + ARM GAS /tmp/cc1GpNf6.s page 27 + + +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs) +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1ENR, Periphs); +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force APB1 peripherals reset. +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ForceReset\n +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM3RST LL_APB1_GRP1_ForceReset\n +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM4RST LL_APB1_GRP1_ForceReset\n +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM5RST LL_APB1_GRP1_ForceReset\n +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM6RST LL_APB1_GRP1_ForceReset\n +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM7RST LL_APB1_GRP1_ForceReset\n +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM12RST LL_APB1_GRP1_ForceReset\n +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM13RST LL_APB1_GRP1_ForceReset\n +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM14RST LL_APB1_GRP1_ForceReset\n +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR LPTIM1RST LL_APB1_GRP1_ForceReset\n +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR WWDGRST LL_APB1_GRP1_ForceReset\n +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI2RST LL_APB1_GRP1_ForceReset\n +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI3RST LL_APB1_GRP1_ForceReset\n +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPDIFRXRST LL_APB1_GRP1_ForceReset\n +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART2RST LL_APB1_GRP1_ForceReset\n +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART3RST LL_APB1_GRP1_ForceReset\n +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART4RST LL_APB1_GRP1_ForceReset\n +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART5RST LL_APB1_GRP1_ForceReset\n +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C1RST LL_APB1_GRP1_ForceReset\n + ARM GAS /tmp/cc1GpNf6.s page 28 + + +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C2RST LL_APB1_GRP1_ForceReset\n +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C3RST LL_APB1_GRP1_ForceReset\n +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C4RST LL_APB1_GRP1_ForceReset\n +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN1RST LL_APB1_GRP1_ForceReset\n +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN2RST LL_APB1_GRP1_ForceReset\n +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN3RST LL_APB1_GRP1_ForceReset\n +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CECRST LL_APB1_GRP1_ForceReset\n +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR PWRRST LL_APB1_GRP1_ForceReset\n +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR DACRST LL_APB1_GRP1_ForceReset\n +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART7RST LL_APB1_GRP1_ForceReset\n +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART8RST LL_APB1_GRP1_ForceReset +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs) +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1RSTR, Periphs); +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release APB1 peripherals reset. +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ReleaseReset\n +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM3RST LL_APB1_GRP1_ReleaseReset\n +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM4RST LL_APB1_GRP1_ReleaseReset\n +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM5RST LL_APB1_GRP1_ReleaseReset\n + ARM GAS /tmp/cc1GpNf6.s page 29 + + +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM6RST LL_APB1_GRP1_ReleaseReset\n +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM7RST LL_APB1_GRP1_ReleaseReset\n +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM12RST LL_APB1_GRP1_ReleaseReset\n +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM13RST LL_APB1_GRP1_ReleaseReset\n +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR TIM14RST LL_APB1_GRP1_ReleaseReset\n +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR LPTIM1RST LL_APB1_GRP1_ReleaseReset\n +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR WWDGRST LL_APB1_GRP1_ReleaseReset\n +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI2RST LL_APB1_GRP1_ReleaseReset\n +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPI3RST LL_APB1_GRP1_ReleaseReset\n +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR SPDIFRXRST LL_APB1_GRP1_ReleaseReset\n +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART2RST LL_APB1_GRP1_ReleaseReset\n +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR USART3RST LL_APB1_GRP1_ReleaseReset\n +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART4RST LL_APB1_GRP1_ReleaseReset\n +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART5RST LL_APB1_GRP1_ReleaseReset\n +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C1RST LL_APB1_GRP1_ReleaseReset\n +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C2RST LL_APB1_GRP1_ReleaseReset\n +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C3RST LL_APB1_GRP1_ReleaseReset\n +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR I2C4RST LL_APB1_GRP1_ReleaseReset\n +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN1RST LL_APB1_GRP1_ReleaseReset\n +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN2RST LL_APB1_GRP1_ReleaseReset\n +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CAN3RST LL_APB1_GRP1_ReleaseReset\n +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR CECRST LL_APB1_GRP1_ReleaseReset\n +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR PWRRST LL_APB1_GRP1_ReleaseReset\n +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR DACRST LL_APB1_GRP1_ReleaseReset\n +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART7RST LL_APB1_GRP1_ReleaseReset\n +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1RSTR UART8RST LL_APB1_GRP1_ReleaseReset +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 + ARM GAS /tmp/cc1GpNf6.s page 30 + + +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs) +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1RSTR, Periphs); +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB1 peripheral clocks in low-power mode +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM5LPEN LL_APB1_GRP1_EnableClockLowPower\n +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM6LPEN LL_APB1_GRP1_EnableClockLowPower\n +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM7LPEN LL_APB1_GRP1_EnableClockLowPower\n +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM12LPEN LL_APB1_GRP1_EnableClockLowPower\n +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM13LPEN LL_APB1_GRP1_EnableClockLowPower\n +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM14LPEN LL_APB1_GRP1_EnableClockLowPower\n +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR LPTIM1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR WWDGLPEN LL_APB1_GRP1_EnableClockLowPower\n +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPDIFRXLPEN LL_APB1_GRP1_EnableClockLowPower\n +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART5LPEN LL_APB1_GRP1_EnableClockLowPower\n +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C4LPEN LL_APB1_GRP1_EnableClockLowPower\n +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN1LPEN LL_APB1_GRP1_EnableClockLowPower\n +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN2LPEN LL_APB1_GRP1_EnableClockLowPower\n +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN3LPEN LL_APB1_GRP1_EnableClockLowPower\n +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CECLPEN LL_APB1_GRP1_EnableClockLowPower\n +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR PWRLPEN LL_APB1_GRP1_EnableClockLowPower\n +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR DACLPEN LL_APB1_GRP1_EnableClockLowPower\n +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART7LPEN LL_APB1_GRP1_EnableClockLowPower\n +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART8LPEN LL_APB1_GRP1_EnableClockLowPower\n +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR RTCLPEN LL_APB1_GRP1_EnableClockLowPower +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) + ARM GAS /tmp/cc1GpNf6.s page 31 + + +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_EnableClockLowPower(uint32_t Periphs) +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB1LPENR, Periphs); +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB1LPENR, Periphs); +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB1 peripheral clocks in low-power mode +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM5LPEN LL_APB1_GRP1_DisableClockLowPower\n +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM6LPEN LL_APB1_GRP1_DisableClockLowPower\n +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM7LPEN LL_APB1_GRP1_DisableClockLowPower\n +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM12LPEN LL_APB1_GRP1_DisableClockLowPower\n +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM13LPEN LL_APB1_GRP1_DisableClockLowPower\n +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR TIM14LPEN LL_APB1_GRP1_DisableClockLowPower\n +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR LPTIM1LPEN LL_APB1_GRP1_DisableClockLowPower\n +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR WWDGLPEN LL_APB1_GRP1_DisableClockLowPower\n +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPI3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR SPDIFRXLPEN LL_APB1_GRP1_DisableClockLowPower\n +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR USART3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART5LPEN LL_APB1_GRP1_DisableClockLowPower\n +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C1LPEN LL_APB1_GRP1_DisableClockLowPower\n +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C3LPEN LL_APB1_GRP1_DisableClockLowPower\n +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR I2C4LPEN LL_APB1_GRP1_DisableClockLowPower\n +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN1LPEN LL_APB1_GRP1_DisableClockLowPower\n +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN2LPEN LL_APB1_GRP1_DisableClockLowPower\n +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CAN3LPEN LL_APB1_GRP1_DisableClockLowPower\n + ARM GAS /tmp/cc1GpNf6.s page 32 + + +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR CECLPEN LL_APB1_GRP1_DisableClockLowPower\n +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR PWRLPEN LL_APB1_GRP1_DisableClockLowPower\n +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR DACLPEN LL_APB1_GRP1_DisableClockLowPower\n +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART7LPEN LL_APB1_GRP1_DisableClockLowPower\n +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR UART8LPEN LL_APB1_GRP1_DisableClockLowPower\n +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB1LPENR RTCLPEN LL_APB1_GRP1_DisableClockLowPower +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_WWDG +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_SPDIFRX (*) +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART2 +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_USART3 +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART4 +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART5 +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_I2C4 (*) +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CAN3 (*) +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_PWR +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART7 +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_UART8 +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB1_GRP1_DisableClockLowPower(uint32_t Periphs) +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB1LPENR, Periphs); +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @} +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** @defgroup BUS_LL_EF_APB2 APB2 +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @{ +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Enable APB2 peripherals clock. + ARM GAS /tmp/cc1GpNf6.s page 33 + + +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_EnableClock\n +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM8EN LL_APB2_GRP1_EnableClock\n +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART1EN LL_APB2_GRP1_EnableClock\n +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART6EN LL_APB2_GRP1_EnableClock\n +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC1EN LL_APB2_GRP1_EnableClock\n +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC2EN LL_APB2_GRP1_EnableClock\n +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC3EN LL_APB2_GRP1_EnableClock\n +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC1EN LL_APB2_GRP1_EnableClock\n +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC2EN LL_APB2_GRP1_EnableClock\n +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI4EN LL_APB2_GRP1_EnableClock\n +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SYSCFGEN LL_APB2_GRP1_EnableClock\n +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM9EN LL_APB2_GRP1_EnableClock\n +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM10EN LL_APB2_GRP1_EnableClock\n +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM11EN LL_APB2_GRP1_EnableClock\n +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI5EN LL_APB2_GRP1_EnableClock\n +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI6EN LL_APB2_GRP1_EnableClock\n +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI1EN LL_APB2_GRP1_EnableClock\n +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI2EN LL_APB2_GRP1_EnableClock\n +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR LTDCEN LL_APB2_GRP1_EnableClock\n +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DSIEN LL_APB2_GRP1_EnableClock\n +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DFSDM1EN LL_APB2_GRP1_EnableClock\n +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR MDIOEN LL_APB2_GRP1_EnableClock\n +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR OTGPHYCEN LL_APB2_GRP1_EnableClock +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __IO uint32_t tmpreg; +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB2ENR, Periphs); + ARM GAS /tmp/cc1GpNf6.s page 34 + + +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /* Delay after an RCC peripheral clock enabling */ +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** tmpreg = READ_BIT(RCC->APB2ENR, Periphs); +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** (void)tmpreg; +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Check if APB2 peripheral clock is enabled or not +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_IsEnabledClock\n +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM8EN LL_APB2_GRP1_IsEnabledClock\n +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock\n +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART6EN LL_APB2_GRP1_IsEnabledClock\n +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC1EN LL_APB2_GRP1_IsEnabledClock\n +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC2EN LL_APB2_GRP1_IsEnabledClock\n +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC3EN LL_APB2_GRP1_IsEnabledClock\n +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC1EN LL_APB2_GRP1_IsEnabledClock\n +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC2EN LL_APB2_GRP1_IsEnabledClock\n +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI4EN LL_APB2_GRP1_IsEnabledClock\n +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SYSCFGEN LL_APB2_GRP1_IsEnabledClock\n +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM9EN LL_APB2_GRP1_IsEnabledClock\n +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM10EN LL_APB2_GRP1_IsEnabledClock\n +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM11EN LL_APB2_GRP1_IsEnabledClock\n +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI5EN LL_APB2_GRP1_IsEnabledClock\n +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI6EN LL_APB2_GRP1_IsEnabledClock\n +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI1EN LL_APB2_GRP1_IsEnabledClock\n +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI2EN LL_APB2_GRP1_IsEnabledClock\n +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR LTDCEN LL_APB2_GRP1_IsEnabledClock\n +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DSIEN LL_APB2_GRP1_IsEnabledClock\n +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DFSDM1EN LL_APB2_GRP1_IsEnabledClock\n +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR MDIOEN LL_APB2_GRP1_IsEnabledClock\n +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR OTGPHYCEN LL_APB2_GRP1_IsEnabledClock +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * + ARM GAS /tmp/cc1GpNf6.s page 35 + + +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval State of Periphs (1 or 0). +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs) +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** return (READ_BIT(RCC->APB2ENR, Periphs) == Periphs); +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Disable APB2 peripherals clock. +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2ENR TIM1EN LL_APB2_GRP1_DisableClock\n +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM8EN LL_APB2_GRP1_DisableClock\n +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART1EN LL_APB2_GRP1_DisableClock\n +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR USART6EN LL_APB2_GRP1_DisableClock\n +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC1EN LL_APB2_GRP1_DisableClock\n +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC2EN LL_APB2_GRP1_DisableClock\n +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR ADC3EN LL_APB2_GRP1_DisableClock\n +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC1EN LL_APB2_GRP1_DisableClock\n +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SDMMC2EN LL_APB2_GRP1_DisableClock\n +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI4EN LL_APB2_GRP1_DisableClock\n +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SYSCFGEN LL_APB2_GRP1_DisableClock\n +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM9EN LL_APB2_GRP1_DisableClock\n +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM10EN LL_APB2_GRP1_DisableClock\n +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR TIM11EN LL_APB2_GRP1_DisableClock\n +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI5EN LL_APB2_GRP1_DisableClock\n +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SPI6EN LL_APB2_GRP1_DisableClock\n +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI1EN LL_APB2_GRP1_DisableClock\n +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR SAI2EN LL_APB2_GRP1_DisableClock\n +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR LTDCEN LL_APB2_GRP1_DisableClock\n +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DSIEN LL_APB2_GRP1_DisableClock\n +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR DFSDM1EN LL_APB2_GRP1_DisableClock\n +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR MDIOEN LL_APB2_GRP1_DisableClock\n +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2ENR OTGPHYCEN LL_APB2_GRP1_DisableClock +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + ARM GAS /tmp/cc1GpNf6.s page 36 + + +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs) +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB2ENR, Periphs); +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Force APB2 peripherals reset. +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset\n +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM8RST LL_APB2_GRP1_ForceReset\n +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset\n +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART6RST LL_APB2_GRP1_ForceReset\n +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR ADCRST LL_APB2_GRP1_ForceReset\n +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC1RST LL_APB2_GRP1_ForceReset\n +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC2RST LL_APB2_GRP1_ForceReset\n +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI4RST LL_APB2_GRP1_ForceReset\n +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SYSCFGRST LL_APB2_GRP1_ForceReset\n +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM9RST LL_APB2_GRP1_ForceReset\n +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM10RST LL_APB2_GRP1_ForceReset\n +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM11RST LL_APB2_GRP1_ForceReset\n +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI5RST LL_APB2_GRP1_ForceReset\n +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI6RST LL_APB2_GRP1_ForceReset\n +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI1RST LL_APB2_GRP1_ForceReset\n +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI2RST LL_APB2_GRP1_ForceReset\n +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR LTDCRST LL_APB2_GRP1_ForceReset\n +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DSIRST LL_APB2_GRP1_ForceReset\n +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DFSDM1RST LL_APB2_GRP1_ForceReset\n +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR MDIORST LL_APB2_GRP1_ForceReset\n +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR OTGPHYCRST LL_APB2_GRP1_ForceReset +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ALL +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + ARM GAS /tmp/cc1GpNf6.s page 37 + + +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs) + 88 .loc 2 1768 22 view .LVU23 + 89 .LBB45: +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** SET_BIT(RCC->APB2RSTR, Periphs); + 90 .loc 2 1770 3 view .LVU24 + 91 0034 03F59433 add r3, r3, #75776 + 92 0038 5A6A ldr r2, [r3, #36] + 93 003a 42F01002 orr r2, r2, #16 + 94 003e 5A62 str r2, [r3, #36] + 95 .LVL3: + 96 .loc 2 1770 3 is_stmt 0 view .LVU25 + 97 .LBE45: + 98 .LBE44: + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 99 .loc 1 140 5 is_stmt 1 view .LVU26 + 100 .LBB46: + 101 .LBI46: +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** /** +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @brief Release APB2 peripherals reset. +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @rmtoll APB2RSTR TIM1RST LL_APB2_GRP1_ReleaseReset\n +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM8RST LL_APB2_GRP1_ReleaseReset\n +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART1RST LL_APB2_GRP1_ReleaseReset\n +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR USART6RST LL_APB2_GRP1_ReleaseReset\n +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR ADCRST LL_APB2_GRP1_ReleaseReset\n +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC1RST LL_APB2_GRP1_ReleaseReset\n +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SDMMC2RST LL_APB2_GRP1_ReleaseReset\n +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI1RST LL_APB2_GRP1_ReleaseReset\n +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI4RST LL_APB2_GRP1_ReleaseReset\n +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SYSCFGRST LL_APB2_GRP1_ReleaseReset\n +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM9RST LL_APB2_GRP1_ReleaseReset\n +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM10RST LL_APB2_GRP1_ReleaseReset\n +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR TIM11RST LL_APB2_GRP1_ReleaseReset\n +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI5RST LL_APB2_GRP1_ReleaseReset\n +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SPI6RST LL_APB2_GRP1_ReleaseReset\n +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI1RST LL_APB2_GRP1_ReleaseReset\n +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR SAI2RST LL_APB2_GRP1_ReleaseReset\n +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR LTDCRST LL_APB2_GRP1_ReleaseReset\n +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DSIRST LL_APB2_GRP1_ReleaseReset\n +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR DFSDM1RST LL_APB2_GRP1_ReleaseReset\n +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR MDIORST LL_APB2_GRP1_ReleaseReset\n +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * APB2RSTR OTGPHYCRST LL_APB2_GRP1_ReleaseReset +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @param Periphs This parameter can be a combination of the following values: +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ALL +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART1 +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_USART6 +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_ADC + ARM GAS /tmp/cc1GpNf6.s page 38 + + +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC2 (*) +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI5 +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SPI6 (*) +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_MDIO (*) +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @arg @ref LL_APB2_GRP1_PERIPH_OTGPHYC (*) +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * (*) value not defined in all devices. +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** * @retval None +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** */ +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** __STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs) + 102 .loc 2 1825 22 view .LVU27 + 103 .LBB47: +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** CLEAR_BIT(RCC->APB2RSTR, Periphs); + 104 .loc 2 1827 3 view .LVU28 + 105 0040 5A6A ldr r2, [r3, #36] + 106 0042 22F01002 bic r2, r2, #16 + 107 0046 5A62 str r2, [r3, #36] + 108 .LBE47: + 109 .LBE46: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 110 .loc 1 129 15 is_stmt 0 view .LVU29 + 111 0048 0020 movs r0, #0 + 112 .LVL4: + 113 .LBB49: + 114 .LBB48: +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 115 .loc 2 1828 1 view .LVU30 + 116 004a 7047 bx lr + 117 .LVL5: + 118 .L12: + 119 .loc 2 1828 1 view .LVU31 + 120 .LBE48: + 121 .LBE49: + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 122 .loc 1 145 5 is_stmt 1 view .LVU32 + 123 .LBB50: + 124 .LBI50: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 125 .loc 2 1295 22 view .LVU33 + 126 .LBB51: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 127 .loc 2 1297 3 view .LVU34 + 128 004c 03F5FA33 add r3, r3, #128000 + 129 0050 1A6A ldr r2, [r3, #32] + ARM GAS /tmp/cc1GpNf6.s page 39 + + + 130 0052 42F40032 orr r2, r2, #131072 + 131 0056 1A62 str r2, [r3, #32] + 132 .LVL6: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 133 .loc 2 1297 3 is_stmt 0 view .LVU35 + 134 .LBE51: + 135 .LBE50: + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 136 .loc 1 148 5 is_stmt 1 view .LVU36 + 137 .LBB52: + 138 .LBI52: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 139 .loc 2 1367 22 view .LVU37 + 140 .LBB53: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 141 .loc 2 1369 3 view .LVU38 + 142 0058 1A6A ldr r2, [r3, #32] + 143 005a 22F40032 bic r2, r2, #131072 + 144 005e 1A62 str r2, [r3, #32] + 145 .LBE53: + 146 .LBE52: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 147 .loc 1 129 15 is_stmt 0 view .LVU39 + 148 0060 0020 movs r0, #0 + 149 .LVL7: + 150 .LBB55: + 151 .LBB54: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 152 .loc 2 1370 1 view .LVU40 + 153 0062 7047 bx lr + 154 .LVL8: + 155 .L13: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 156 .loc 2 1370 1 view .LVU41 + 157 .LBE54: + 158 .LBE55: + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 159 .loc 1 153 5 is_stmt 1 view .LVU42 + 160 .LBB56: + 161 .LBI56: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 162 .loc 2 1295 22 view .LVU43 + 163 .LBB57: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 164 .loc 2 1297 3 view .LVU44 + 165 0064 03F5F833 add r3, r3, #126976 + 166 0068 1A6A ldr r2, [r3, #32] + 167 006a 42F48022 orr r2, r2, #262144 + 168 006e 1A62 str r2, [r3, #32] + 169 .LVL9: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 170 .loc 2 1297 3 is_stmt 0 view .LVU45 + 171 .LBE57: + 172 .LBE56: + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 173 .loc 1 156 5 is_stmt 1 view .LVU46 + 174 .LBB58: + ARM GAS /tmp/cc1GpNf6.s page 40 + + + 175 .LBI58: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 176 .loc 2 1367 22 view .LVU47 + 177 .LBB59: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 178 .loc 2 1369 3 view .LVU48 + 179 0070 1A6A ldr r2, [r3, #32] + 180 0072 22F48022 bic r2, r2, #262144 + 181 0076 1A62 str r2, [r3, #32] + 182 .LBE59: + 183 .LBE58: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 184 .loc 1 129 15 is_stmt 0 view .LVU49 + 185 0078 0020 movs r0, #0 + 186 .LVL10: + 187 .LBB61: + 188 .LBB60: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 189 .loc 2 1370 1 view .LVU50 + 190 007a 7047 bx lr + 191 .LVL11: + 192 .L14: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 193 .loc 2 1370 1 view .LVU51 + 194 .LBE60: + 195 .LBE61: + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 196 .loc 1 161 5 is_stmt 1 view .LVU52 + 197 .LBB62: + 198 .LBI62: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 199 .loc 2 1295 22 view .LVU53 + 200 .LBB63: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 201 .loc 2 1297 3 view .LVU54 + 202 007c 03F5F633 add r3, r3, #125952 + 203 0080 1A6A ldr r2, [r3, #32] + 204 0082 42F40022 orr r2, r2, #524288 + 205 0086 1A62 str r2, [r3, #32] + 206 .LVL12: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 207 .loc 2 1297 3 is_stmt 0 view .LVU55 + 208 .LBE63: + 209 .LBE62: + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 210 .loc 1 164 5 is_stmt 1 view .LVU56 + 211 .LBB64: + 212 .LBI64: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 213 .loc 2 1367 22 view .LVU57 + 214 .LBB65: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 215 .loc 2 1369 3 view .LVU58 + 216 0088 1A6A ldr r2, [r3, #32] + 217 008a 22F40022 bic r2, r2, #524288 + 218 008e 1A62 str r2, [r3, #32] + 219 .LBE65: + ARM GAS /tmp/cc1GpNf6.s page 41 + + + 220 .LBE64: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 221 .loc 1 129 15 is_stmt 0 view .LVU59 + 222 0090 0020 movs r0, #0 + 223 .LVL13: + 224 .LBB67: + 225 .LBB66: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 226 .loc 2 1370 1 view .LVU60 + 227 0092 7047 bx lr + 228 .LVL14: + 229 .L15: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 230 .loc 2 1370 1 view .LVU61 + 231 .LBE66: + 232 .LBE67: + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 233 .loc 1 169 5 is_stmt 1 view .LVU62 + 234 .LBB68: + 235 .LBI68: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 236 .loc 2 1295 22 view .LVU63 + 237 .LBB69: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 238 .loc 2 1297 3 view .LVU64 + 239 0094 03F5F433 add r3, r3, #124928 + 240 0098 1A6A ldr r2, [r3, #32] + 241 009a 42F48012 orr r2, r2, #1048576 + 242 009e 1A62 str r2, [r3, #32] + 243 .LVL15: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 244 .loc 2 1297 3 is_stmt 0 view .LVU65 + 245 .LBE69: + 246 .LBE68: + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 247 .loc 1 172 5 is_stmt 1 view .LVU66 + 248 .LBB70: + 249 .LBI70: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 250 .loc 2 1367 22 view .LVU67 + 251 .LBB71: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 252 .loc 2 1369 3 view .LVU68 + 253 00a0 1A6A ldr r2, [r3, #32] + 254 00a2 22F48012 bic r2, r2, #1048576 + 255 00a6 1A62 str r2, [r3, #32] + 256 .LBE71: + 257 .LBE70: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 258 .loc 1 129 15 is_stmt 0 view .LVU69 + 259 00a8 0020 movs r0, #0 + 260 .LVL16: + 261 .LBB73: + 262 .LBB72: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 263 .loc 2 1370 1 view .LVU70 + 264 00aa 7047 bx lr + ARM GAS /tmp/cc1GpNf6.s page 42 + + + 265 .LVL17: + 266 .L16: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 267 .loc 2 1370 1 view .LVU71 + 268 .LBE72: + 269 .LBE73: + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 270 .loc 1 177 5 is_stmt 1 view .LVU72 + 271 .LBB74: + 272 .LBI74: +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 273 .loc 2 1768 22 view .LVU73 + 274 .LBB75: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 275 .loc 2 1770 3 view .LVU74 + 276 00ac 03F59233 add r3, r3, #74752 + 277 00b0 5A6A ldr r2, [r3, #36] + 278 00b2 42F02002 orr r2, r2, #32 + 279 00b6 5A62 str r2, [r3, #36] + 280 .LVL18: +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 281 .loc 2 1770 3 is_stmt 0 view .LVU75 + 282 .LBE75: + 283 .LBE74: + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 284 .loc 1 180 5 is_stmt 1 view .LVU76 + 285 .LBB76: + 286 .LBI76: +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 287 .loc 2 1825 22 view .LVU77 + 288 .LBB77: +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 289 .loc 2 1827 3 view .LVU78 + 290 00b8 5A6A ldr r2, [r3, #36] + 291 00ba 22F02002 bic r2, r2, #32 + 292 00be 5A62 str r2, [r3, #36] + 293 .LBE77: + 294 .LBE76: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 295 .loc 1 129 15 is_stmt 0 view .LVU79 + 296 00c0 0020 movs r0, #0 + 297 .LVL19: + 298 .LBB79: + 299 .LBB78: + 300 .loc 2 1828 1 view .LVU80 + 301 00c2 7047 bx lr + 302 .LVL20: + 303 .L17: + 304 .loc 2 1828 1 view .LVU81 + 305 .LBE78: + 306 .LBE79: + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 307 .loc 1 185 5 is_stmt 1 view .LVU82 + 308 .LBB80: + 309 .LBI80: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 310 .loc 2 1295 22 view .LVU83 + ARM GAS /tmp/cc1GpNf6.s page 43 + + + 311 .LBB81: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 312 .loc 2 1297 3 view .LVU84 + 313 00c4 03F5E033 add r3, r3, #114688 + 314 00c8 1A6A ldr r2, [r3, #32] + 315 00ca 42F08042 orr r2, r2, #1073741824 + 316 00ce 1A62 str r2, [r3, #32] + 317 .LVL21: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 318 .loc 2 1297 3 is_stmt 0 view .LVU85 + 319 .LBE81: + 320 .LBE80: + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 321 .loc 1 188 5 is_stmt 1 view .LVU86 + 322 .LBB82: + 323 .LBI82: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 324 .loc 2 1367 22 view .LVU87 + 325 .LBB83: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 326 .loc 2 1369 3 view .LVU88 + 327 00d0 1A6A ldr r2, [r3, #32] + 328 00d2 22F08042 bic r2, r2, #1073741824 + 329 00d6 1A62 str r2, [r3, #32] + 330 .LBE83: + 331 .LBE82: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 332 .loc 1 129 15 is_stmt 0 view .LVU89 + 333 00d8 0020 movs r0, #0 + 334 .LVL22: + 335 .LBB85: + 336 .LBB84: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 337 .loc 2 1370 1 view .LVU90 + 338 00da 7047 bx lr + 339 .LVL23: + 340 .L18: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 341 .loc 2 1370 1 view .LVU91 + 342 .LBE84: + 343 .LBE85: + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 344 .loc 1 193 5 is_stmt 1 view .LVU92 + 345 .LBB86: + 346 .LBI86: +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 347 .loc 2 1295 22 view .LVU93 + 348 .LBB87: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 349 .loc 2 1297 3 view .LVU94 + 350 00dc 03F5DE33 add r3, r3, #113664 + 351 00e0 1A6A ldr r2, [r3, #32] + 352 00e2 42F00042 orr r2, r2, #-2147483648 + 353 00e6 1A62 str r2, [r3, #32] + 354 .LVL24: +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 355 .loc 2 1297 3 is_stmt 0 view .LVU95 + ARM GAS /tmp/cc1GpNf6.s page 44 + + + 356 .LBE87: + 357 .LBE86: + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 358 .loc 1 196 5 is_stmt 1 view .LVU96 + 359 .LBB88: + 360 .LBI88: +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** { + 361 .loc 2 1367 22 view .LVU97 + 362 .LBB89: +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** } + 363 .loc 2 1369 3 view .LVU98 + 364 00e8 1A6A ldr r2, [r3, #32] + 365 00ea 22F00042 bic r2, r2, #-2147483648 + 366 00ee 1A62 str r2, [r3, #32] + 367 .LBE89: + 368 .LBE88: + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 369 .loc 1 129 15 is_stmt 0 view .LVU99 + 370 00f0 0020 movs r0, #0 + 371 .LVL25: + 372 .LBB91: + 373 .LBB90: +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h **** + 374 .loc 2 1370 1 view .LVU100 + 375 00f2 7047 bx lr + 376 .L20: + 377 .align 2 + 378 .L19: + 379 00f4 00100140 .word 1073811456 + 380 00f8 00440040 .word 1073759232 + 381 00fc 00480040 .word 1073760256 + 382 0100 004C0040 .word 1073761280 + 383 0104 00500040 .word 1073762304 + 384 0108 00140140 .word 1073812480 + 385 010c 00780040 .word 1073772544 + 386 0110 007C0040 .word 1073773568 + 387 .LBE90: + 388 .LBE91: + 389 .cfi_endproc + 390 .LFE542: + 392 .section .text.LL_USART_Init,"ax",%progbits + 393 .align 1 + 394 .global LL_USART_Init + 395 .syntax unified + 396 .thumb + 397 .thumb_func + 398 .fpu fpv5-d16 + 400 LL_USART_Init: + 401 .LVL26: + 402 .LFB543: + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @brief Initialize USART registers according to the specified + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * parameters in USART_InitStruct. + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @note As some bits in USART configuration registers can only be written when + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * the USART is disabled (USART_CR1_UE bit =0), USART Peripheral should be in disabled sta + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * this function. Otherwise, ERROR result will be returned. + ARM GAS /tmp/cc1GpNf6.s page 45 + + + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @note Baud rate value stored in USART_InitStruct BaudRate field, should be valid (different f + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @param USARTx USART Instance + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @param USART_InitStruct pointer to a LL_USART_InitTypeDef structure + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * that contains the configuration information for the specified USART peripheral. + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @retval An ErrorStatus enumeration value: + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - SUCCESS: USART registers are initialized according to USART_InitStruct content + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - ERROR: Problem occurred during USART Registers initialization + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, const LL_USART_InitTypeDef *USART_InitStruct) + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 403 .loc 1 221 1 is_stmt 1 view -0 + 404 .cfi_startproc + 405 @ args = 0, pretend = 0, frame = 0 + 406 @ frame_needed = 0, uses_anonymous_args = 0 + 407 .loc 1 221 1 is_stmt 0 view .LVU102 + 408 0000 38B5 push {r3, r4, r5, lr} + 409 .LCFI0: + 410 .cfi_def_cfa_offset 16 + 411 .cfi_offset 3, -16 + 412 .cfi_offset 4, -12 + 413 .cfi_offset 5, -8 + 414 .cfi_offset 14, -4 + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** ErrorStatus status = ERROR; + 415 .loc 1 222 3 is_stmt 1 view .LVU103 + 416 .LVL27: + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + 417 .loc 1 223 3 view .LVU104 + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Check the parameters */ + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_UART_INSTANCE(USARTx)); + 418 .loc 1 226 3 view .LVU105 + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_BAUDRATE(USART_InitStruct->BaudRate)); + 419 .loc 1 227 3 view .LVU106 + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_DATAWIDTH(USART_InitStruct->DataWidth)); + 420 .loc 1 228 3 view .LVU107 + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_STOPBITS(USART_InitStruct->StopBits)); + 421 .loc 1 229 3 view .LVU108 + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_PARITY(USART_InitStruct->Parity)); + 422 .loc 1 230 3 view .LVU109 + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_DIRECTION(USART_InitStruct->TransferDirection)); + 423 .loc 1 231 3 view .LVU110 + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_HWCONTROL(USART_InitStruct->HardwareFlowControl)); + 424 .loc 1 232 3 view .LVU111 + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_OVERSAMPLING(USART_InitStruct->OverSampling)); + 425 .loc 1 233 3 view .LVU112 + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* USART needs to be in disabled state, in order to be able to configure some bits in + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** CRx registers */ + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** if (LL_USART_IsEnabled(USARTx) == 0U) + 426 .loc 1 237 3 view .LVU113 + 427 .LBB100: + 428 .LBI100: + 429 .file 3 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @file stm32f7xx_ll_usart.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @author MCD Application Team + ARM GAS /tmp/cc1GpNf6.s page 46 + + + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Header file of USART LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #ifndef STM32F7xx_LL_USART_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define STM32F7xx_LL_USART_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART1) || defined(USART2) || defined(USART3) || defined(USART6) \ + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** || defined(UART4) || defined(UART5) || defined(UART7) || defined(UART8) + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL USART + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private types -------------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private variables ---------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private constants ---------------------------------------------------------*/ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Private_Constants USART Private Constants + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Private macros ------------------------------------------------------------*/ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USE_FULL_LL_DRIVER) + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Private_Macros USART Private Macros + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /*USE_FULL_LL_DRIVER*/ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported types ------------------------------------------------------------*/ + ARM GAS /tmp/cc1GpNf6.s page 47 + + + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USE_FULL_LL_DRIVER) + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_ES_INIT USART Exported Init structures + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief LL USART Init Structure definition + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** typedef struct + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t BaudRate; /*!< This field defines expected Usart communication baud rat + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetBaudRate().*/ + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t DataWidth; /*!< Specifies the number of data bits transmitted or receive + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_DATAWI + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetDataWidth().*/ + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t StopBits; /*!< Specifies the number of stop bits transmitted. + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_STOPBI + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetStopBitsLength().*/ + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t Parity; /*!< Specifies the parity mode. + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_PARITY + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetParity().*/ + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t TransferDirection; /*!< Specifies whether the Receive and/or Transmit mode is en + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_DIRECT + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetTransferDirection().*/ + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t HardwareFlowControl; /*!< Specifies whether the hardware flow control mode is enab + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_HWCONT + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetHWFlowCtrl().*/ + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t OverSampling; /*!< Specifies whether USART oversampling mode is 16 or 8. + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_OVERSA + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This feature can be modified afterwards using unitary + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** function @ref LL_USART_SetOverSampling().*/ + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } LL_USART_InitTypeDef; + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief LL USART Clock Init Structure definition + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/cc1GpNf6.s page 48 + + + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** typedef struct + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t ClockOutput; /*!< Specifies whether the USART clock is enabled or disabled + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_CLOCK. + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** @ref LL_USART_EnableSCLKOutput() or @ref LL_USART_Disabl + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t ClockPolarity; /*!< Specifies the steady state of the serial clock. + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_POLARI + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** functions @ref LL_USART_SetClockPolarity(). + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t ClockPhase; /*!< Specifies the clock transition on which the bit capture + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_PHASE. + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** functions @ref LL_USART_SetClockPhase(). + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t LastBitClockPulse; /*!< Specifies whether the clock pulse corresponding to the l + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** data bit (MSB) has to be output on the SCLK pin in synch + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** This parameter can be a value of @ref USART_LL_EC_LASTCL + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USART HW configuration can be modified afterwards using + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** functions @ref LL_USART_SetLastClkPulseOutput(). + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** For more details, refer to description of this function. + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } LL_USART_ClockInitTypeDef; + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USE_FULL_LL_DRIVER */ + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported constants --------------------------------------------------------*/ + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Exported_Constants USART Exported Constants + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_CLEAR_FLAG Clear Flags Defines + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Flags defines which can be used with LL_USART_WriteReg function + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_PECF USART_ICR_PECF /*!< Parity error cle + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_FECF USART_ICR_FECF /*!< Framing error cl + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_NCF USART_ICR_NCF /*!< Noise error dete + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_ORECF USART_ICR_ORECF /*!< Overrun error cl + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_IDLECF USART_ICR_IDLECF /*!< Idle line detect + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_TCCF USART_ICR_TCCF /*!< Transmission com + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_TCBGTCF USART_ICR_TCBGTCF /*!< Transmission com + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_LBDCF USART_ICR_LBDCF /*!< LIN break detect + ARM GAS /tmp/cc1GpNf6.s page 49 + + + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_CTSCF USART_ICR_CTSCF /*!< CTS clear flag * + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_RTOCF USART_ICR_RTOCF /*!< Receiver timeout + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_EOBCF USART_ICR_EOBCF /*!< End of block cle + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_CMCF USART_ICR_CMCF /*!< Character match + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ICR_WUCF USART_ICR_WUCF /*!< Wakeup from Stop + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_GET_FLAG Get Flags Defines + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Flags defines which can be used with LL_USART_ReadReg function + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_PE USART_ISR_PE /*!< Parity error fla + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_FE USART_ISR_FE /*!< Framing error fl + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_NE USART_ISR_NE /*!< Noise detected f + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_ORE USART_ISR_ORE /*!< Overrun error fl + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_IDLE USART_ISR_IDLE /*!< Idle line detect + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_RXNE USART_ISR_RXNE /*!< Read data regist + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TC USART_ISR_TC /*!< Transmission com + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TXE USART_ISR_TXE /*!< Transmit data re + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_LBDF USART_ISR_LBDF /*!< LIN break detect + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_CTSIF USART_ISR_CTSIF /*!< CTS interrupt fl + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_CTS USART_ISR_CTS /*!< CTS flag */ + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_RTOF USART_ISR_RTOF /*!< Receiver timeout + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_EOBF USART_ISR_EOBF /*!< End of block fla + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_ABRE USART_ISR_ABRE /*!< Auto baud rate e + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_ABRF USART_ISR_ABRF /*!< Auto baud rate f + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_BUSY USART_ISR_BUSY /*!< Busy flag */ + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_CMF USART_ISR_CMF /*!< Character match + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_SBKF USART_ISR_SBKF /*!< Send break flag + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_RWU USART_ISR_RWU /*!< Receiver wakeup + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_WUF USART_ISR_WUF /*!< Wakeup from Stop + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TEACK USART_ISR_TEACK /*!< Transmit enable + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_ISR_REACK) + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_REACK USART_ISR_REACK /*!< Receive enable a + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_ISR_REACK */ + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ISR_TCBGT USART_ISR_TCBGT /*!< Transmission com + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_IT IT Defines + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief IT defines which can be used with LL_USART_ReadReg and LL_USART_WriteReg functions + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_IDLEIE USART_CR1_IDLEIE /*!< IDLE interrupt e + ARM GAS /tmp/cc1GpNf6.s page 50 + + + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_RXNEIE USART_CR1_RXNEIE /*!< Read data regist + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_TCIE USART_CR1_TCIE /*!< Transmission com + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_TXEIE USART_CR1_TXEIE /*!< Transmit data re + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_PEIE USART_CR1_PEIE /*!< Parity error */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_CMIE USART_CR1_CMIE /*!< Character match + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_RTOIE USART_CR1_RTOIE /*!< Receiver timeout + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR1_EOBIE USART_CR1_EOBIE /*!< End of Block int + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR2_LBDIE USART_CR2_LBDIE /*!< LIN break detect + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_EIE USART_CR3_EIE /*!< Error interrupt + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_CTSIE USART_CR3_CTSIE /*!< CTS interrupt en + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUFIE) + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_WUFIE USART_CR3_WUFIE /*!< Wakeup from Stop + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUFIE */ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_TCBGT_SUPPORT) + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CR3_TCBGTIE USART_CR3_TCBGTIE /*!< Transmission com + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_TCBGT_SUPPORT */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DIRECTION Communication Direction + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_NONE 0x00000000U /*!< Transmitter + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_RX USART_CR1_RE /*!< Transmitter + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_TX USART_CR1_TE /*!< Transmitter + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DIRECTION_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< Transmitter + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_PARITY Parity Control + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PARITY_NONE 0x00000000U /*!< Parity co + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PARITY_EVEN USART_CR1_PCE /*!< Parity co + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< Parity co + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_WAKEUP Wakeup + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_IDLELINE 0x00000000U /*!< USART wake up from Mute + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ADDRESSMARK USART_CR1_WAKE /*!< USART wake up from Mute + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DATAWIDTH Datawidth + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DATAWIDTH_7B USART_CR1_M1 /*!< 7 bits word length : S + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DATAWIDTH_8B 0x00000000U /*!< 8 bits word length : S + ARM GAS /tmp/cc1GpNf6.s page 51 + + + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DATAWIDTH_9B USART_CR1_M0 /*!< 9 bits word length : S + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_OVERSAMPLING Oversampling + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_OVERSAMPLING_16 0x00000000U /*!< Oversampling by 16 */ + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_OVERSAMPLING_8 USART_CR1_OVER8 /*!< Oversampling by 8 */ + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USE_FULL_LL_DRIVER) + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_CLOCK Clock Signal + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CLOCK_DISABLE 0x00000000U /*!< Clock signal not provid + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_CLOCK_ENABLE USART_CR2_CLKEN /*!< Clock signal provided * + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /*USE_FULL_LL_DRIVER*/ + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_LASTCLKPULSE Last Clock Pulse + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LASTCLKPULSE_NO_OUTPUT 0x00000000U /*!< The clock pulse of the l + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LASTCLKPULSE_OUTPUT USART_CR2_LBCL /*!< The clock pulse of the l + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_PHASE Clock Phase + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PHASE_1EDGE 0x00000000U /*!< The first clock transiti + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_PHASE_2EDGE USART_CR2_CPHA /*!< The second clock transit + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_POLARITY Clock Polarity + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_POLARITY_LOW 0x00000000U /*!< Steady low value on SCLK + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_POLARITY_HIGH USART_CR2_CPOL /*!< Steady high value on SCL + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_STOPBITS Stop Bits + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_0_5 USART_CR2_STOP_0 /*!< 0.5 + ARM GAS /tmp/cc1GpNf6.s page 52 + + + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_1 0x00000000U /*!< 1 s + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) /*!< 1.5 + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_STOPBITS_2 USART_CR2_STOP_1 /*!< 2 s + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_TXRX TX RX Pins Swap + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXRX_STANDARD 0x00000000U /*!< TX/RX pins are used as d + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXRX_SWAPPED (USART_CR2_SWAP) /*!< TX and RX pins functions + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_RXPIN_LEVEL RX Pin Active Level Inversion + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_RXPIN_LEVEL_STANDARD 0x00000000U /*!< RX pin signal works usin + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_RXPIN_LEVEL_INVERTED (USART_CR2_RXINV) /*!< RX pin signal values are + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_TXPIN_LEVEL TX Pin Active Level Inversion + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXPIN_LEVEL_STANDARD 0x00000000U /*!< TX pin signal works usin + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_TXPIN_LEVEL_INVERTED (USART_CR2_TXINV) /*!< TX pin signal values are + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_BINARY_LOGIC Binary Data Inversion + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BINARY_LOGIC_POSITIVE 0x00000000U /*!< Logical data from the da + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BINARY_LOGIC_NEGATIVE USART_CR2_DATAINV /*!< Logical data from the da + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_BITORDER Bit Order + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BITORDER_LSBFIRST 0x00000000U /*!< data is transmitted/rece + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_BITORDER_MSBFIRST USART_CR2_MSBFIRST /*!< data is transmitted/rece + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_AUTOBAUD_DETECT_ON Autobaud Detection + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_STARTBIT 0x00000000U /*!< Me + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE USART_CR2_ABRMODE_0 /*!< Fa + ARM GAS /tmp/cc1GpNf6.s page 53 + + + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME USART_CR2_ABRMODE_1 /*!< 0x + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_AUTOBAUD_DETECT_ON_55_FRAME (USART_CR2_ABRMODE_1 | USART_CR2_ABRMODE_0) /*!< 0x + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_ADDRESS_DETECT Address Length Detection + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ADDRESS_DETECT_4B 0x00000000U /*!< 4-bit address detection + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ADDRESS_DETECT_7B USART_CR2_ADDM7 /*!< 7-bit address detection + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_HWCONTROL Hardware Control + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_NONE 0x00000000U /*!< CTS and R + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_RTS USART_CR3_RTSE /*!< RTS outpu + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_CTS USART_CR3_CTSE /*!< CTS mode + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /*!< CTS and R + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUS) + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_WAKEUP_ON Wakeup Activation + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ON_ADDRESS 0x00000000U /*!< Wake u + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1 /*!< Wake u + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WAKEUP_ON_RXNE (USART_CR3_WUS_0 | USART_CR3_WUS_1) /*!< Wake u + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUS */ + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_IRDA_POWER IrDA Power + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_IRDA_POWER_NORMAL 0x00000000U /*!< IrDA normal power mode * + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_IRDA_POWER_LOW USART_CR3_IRLP /*!< IrDA low power mode */ + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_LINBREAK_DETECT LIN Break Detection Length + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LINBREAK_DETECT_10B 0x00000000U /*!< 10-bit break detection m + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_LINBREAK_DETECT_11B USART_CR2_LBDL /*!< 11-bit break detection m + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + ARM GAS /tmp/cc1GpNf6.s page 54 + + + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DE_POLARITY Driver Enable Polarity + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DE_POLARITY_HIGH 0x00000000U /*!< DE signal is active high + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DE_POLARITY_LOW USART_CR3_DEP /*!< DE signal is active low + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EC_DMA_REG_DATA DMA Register Data + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DMA_REG_DATA_TRANSMIT 0x00000000U /*!< Get address of data regis + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_DMA_REG_DATA_RECEIVE 0x00000001U /*!< Get address of data regis + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported macro ------------------------------------------------------------*/ + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Exported_Macros USART Exported Macros + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EM_WRITE_READ Common Write and read registers Macros + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Write a value in USART register + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __INSTANCE__ USART Instance + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __REG__ Register to be written + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __VALUE__ Value to be written in the register + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VAL + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Read a value in USART register + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __INSTANCE__ USART Instance + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __REG__ Register to be read + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Register value + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define LL_USART_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EM_Exported_Macros_Helper Exported_Macros_Helper + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/cc1GpNf6.s page 55 + + + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Compute USARTDIV value according to Peripheral Clock and + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * expected Baud Rate in 8 bits sampling mode (32 bits value of USARTDIV is returned) + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __BAUDRATE__ Baud rate value to achieve + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval USARTDIV value to be used for BRR register filling in OverSampling_8 case + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) ((((__PERIPHCLK__)*2U)\ + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ((__BAUDRATE__)/2U))/(__BAUDRATE_ + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Compute USARTDIV value according to Peripheral Clock and + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * expected Baud Rate in 16 bits sampling mode (32 bits value of USARTDIV is returned) + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param __BAUDRATE__ Baud rate value to achieve + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval USARTDIV value to be used for BRR register filling in OverSampling_16 case + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #define __LL_USART_DIV_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (((__PERIPHCLK__) + ((__BAUDRATE__)/ + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @} + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /* Exported functions --------------------------------------------------------*/ + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_Exported_Functions USART Exported Functions + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** @defgroup USART_LL_EF_Configuration Configuration functions + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @{ + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART Enable + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UE LL_USART_Enable + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_Enable(USART_TypeDef *USARTx) + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR1, USART_CR1_UE); + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART Disable (all USART prescalers and outputs are disabled) + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When USART is disabled, USART prescalers and outputs are stopped immediately, + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * and current operations are discarded. The configuration of the USART is kept, but all t + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * flags, in the USARTx_ISR are set to their default values. + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UE LL_USART_Disable + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_Disable(USART_TypeDef *USARTx) + ARM GAS /tmp/cc1GpNf6.s page 56 + + + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR1, USART_CR1_UE); + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if USART is enabled + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UE LL_USART_IsEnabled + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabled(const USART_TypeDef *USARTx) + 430 .loc 3 585 26 view .LVU114 + 431 .LBB101: + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)) ? 1UL : 0UL); + 432 .loc 3 587 3 view .LVU115 + 433 .loc 3 587 12 is_stmt 0 view .LVU116 + 434 0002 0368 ldr r3, [r0] + 435 .loc 3 587 73 view .LVU117 + 436 0004 13F0010F tst r3, #1 + 437 0008 75D1 bne .L33 + 438 000a 0446 mov r4, r0 + 439 000c 0D46 mov r5, r1 + 440 .LVL28: + 441 .loc 3 587 73 view .LVU118 + 442 .LBE101: + 443 .LBE100: + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /*---------------------------- USART CR1 Configuration --------------------- + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * Configure USARTx CR1 (USART Word Length, Parity, Mode and Oversampling bits) with parameters + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - DataWidth: USART_CR1_M bits according to USART_InitStruct->DataWidth value + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - Parity: USART_CR1_PCE, USART_CR1_PS bits according to USART_InitStruct->Parity + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - TransferDirection: USART_CR1_TE, USART_CR1_RE bits according to USART_InitStruct->Transfe + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - Oversampling: USART_CR1_OVER8 bit according to USART_InitStruct->OverSampling value. + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** MODIFY_REG(USARTx->CR1, + 444 .loc 1 246 5 is_stmt 1 view .LVU119 + 445 000e 0368 ldr r3, [r0] + 446 0010 3B4A ldr r2, .L48 + 447 0012 1A40 ands r2, r2, r3 + 448 0014 4B68 ldr r3, [r1, #4] + 449 0016 C968 ldr r1, [r1, #12] + 450 .LVL29: + 451 .loc 1 246 5 is_stmt 0 view .LVU120 + 452 0018 0B43 orrs r3, r3, r1 + 453 001a 2969 ldr r1, [r5, #16] + 454 001c 0B43 orrs r3, r3, r1 + 455 001e A969 ldr r1, [r5, #24] + 456 0020 0B43 orrs r3, r3, r1 + 457 0022 1343 orrs r3, r3, r2 + 458 0024 0360 str r3, [r0] + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** (USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8), + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** (USART_InitStruct->DataWidth | USART_InitStruct->Parity | + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_InitStruct->TransferDirection | USART_InitStruct->OverSampling)); + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /*---------------------------- USART CR2 Configuration --------------------- + ARM GAS /tmp/cc1GpNf6.s page 57 + + + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * Configure USARTx CR2 (Stop bits) with parameters: + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - Stop Bits: USART_CR2_STOP bits according to USART_InitStruct->StopBits value. + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - CLKEN, CPOL, CPHA and LBCL bits are to be configured using LL_USART_ClockInit(). + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_USART_SetStopBitsLength(USARTx, USART_InitStruct->StopBits); + 459 .loc 1 257 5 is_stmt 1 view .LVU121 + 460 0026 AB68 ldr r3, [r5, #8] + 461 .LVL30: + 462 .LBB102: + 463 .LBI102: + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART enabled in STOP Mode. + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is enabled, USART is able to wake up the MCU from Stop mode, provide + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * USART clock selection is HSI or LSE in RCC. + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UESM LL_USART_EnableInStopMode + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableInStopMode(USART_TypeDef *USARTx) + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_UESM); + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART disabled in STOP Mode. + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is disabled, USART is not able to wake up the MCU from Stop mode + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UESM LL_USART_DisableInStopMode + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableInStopMode(USART_TypeDef *USARTx) + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_UESM); + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if USART is enabled in STOP Mode (able to wake up MCU from Stop mode or not) + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 UESM LL_USART_IsEnabledInStopMode + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledInStopMode(const USART_TypeDef *USARTx) + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_UESM) == (USART_CR1_UESM)) ? 1UL : 0UL); + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_UCESM) + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/cc1GpNf6.s page 58 + + + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART Clock enabled in STOP Mode + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is called, USART Clock is enabled while in STOP mode + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 UCESM LL_USART_EnableClockInStopMode + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableClockInStopMode(USART_TypeDef *USARTx) + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_UCESM); + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief USART clock disabled in STOP Mode + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note When this function is called, USART Clock is disabled while in STOP mode + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 UCESM LL_USART_DisableClockInStopMode + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableClockInStopMode(USART_TypeDef *USARTx) + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_UCESM); + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if USART clock is enabled in STOP Mode + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 UCESM LL_USART_IsClockEnabledInStopMode + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsClockEnabledInStopMode(const USART_TypeDef *USARTx) + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (READ_BIT(USARTx->CR3, USART_CR3_UCESM) == (USART_CR3_UCESM)); + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_UCESM */ + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM*/ + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Receiver Enable (Receiver is enabled and begins searching for a start bit) + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_EnableDirectionRx + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDirectionRx(USART_TypeDef *USARTx) + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RE); + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Receiver Disable + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_DisableDirectionRx + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDirectionRx(USART_TypeDef *USARTx) + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RE); + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + ARM GAS /tmp/cc1GpNf6.s page 59 + + + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Transmitter Enable + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TE LL_USART_EnableDirectionTx + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableDirectionTx(USART_TypeDef *USARTx) + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TE); + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Transmitter Disable + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 TE LL_USART_DisableDirectionTx + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableDirectionTx(USART_TypeDef *USARTx) + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TE); + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure simultaneously enabled/disabled states + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * of Transmitter and Receiver + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_SetTransferDirection\n + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 TE LL_USART_SetTransferDirection + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param TransferDirection This parameter can be one of the following values: + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_NONE + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_RX + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX_RX + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTransferDirection(USART_TypeDef *USARTx, uint32_t TransferDirectio + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_MODIFY_REG(USARTx->CR1, USART_CR1_RE | USART_CR1_TE, TransferDirection); + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return enabled/disabled states of Transmitter and Receiver + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 RE LL_USART_GetTransferDirection\n + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 TE LL_USART_GetTransferDirection + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_NONE + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_RX + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DIRECTION_TX_RX + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTransferDirection(const USART_TypeDef *USARTx) + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_RE | USART_CR1_TE)); + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/cc1GpNf6.s page 60 + + + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Parity (enabled/disabled and parity mode if enabled). + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note This function selects if hardware parity control (generation and detection) is enabled + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * When the parity control is enabled (Odd or Even), computed parity bit is inserted at th + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (9th or 8th bit depending on data width) and parity is checked on the received data. + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PS LL_USART_SetParity\n + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 PCE LL_USART_SetParity + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Parity This parameter can be one of the following values: + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_NONE + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_EVEN + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_ODD + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetParity(USART_TypeDef *USARTx, uint32_t Parity) + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE, Parity); + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Parity configuration (enabled/disabled and parity mode if enabled) + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PS LL_USART_GetParity\n + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 PCE LL_USART_GetParity + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_NONE + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_EVEN + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_ODD + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetParity(const USART_TypeDef *USARTx) + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE)); + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Receiver Wake Up method from Mute mode. + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 WAKE LL_USART_SetWakeUpMethod + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Method This parameter can be one of the following values: + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_IDLELINE + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetWakeUpMethod(USART_TypeDef *USARTx, uint32_t Method) + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_WAKE, Method); + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Receiver Wake Up method from Mute mode + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 WAKE LL_USART_GetWakeUpMethod + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_IDLELINE + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetWakeUpMethod(const USART_TypeDef *USARTx) + ARM GAS /tmp/cc1GpNf6.s page 61 + + + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_WAKE)); + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Word length (i.e. nb of data bits, excluding start and stop bits) + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 M0 LL_USART_SetDataWidth\n + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M1 LL_USART_SetDataWidth + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param DataWidth This parameter can be one of the following values: + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_7B + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_8B + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_9B + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetDataWidth(USART_TypeDef *USARTx, uint32_t DataWidth) + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_M, DataWidth); + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Word length (i.e. nb of data bits, excluding start and stop bits) + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 M0 LL_USART_GetDataWidth\n + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M1 LL_USART_GetDataWidth + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_7B + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_8B + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_9B + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetDataWidth(const USART_TypeDef *USARTx) + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_M)); + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Allow switch between Mute Mode and Active mode + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 MME LL_USART_EnableMuteMode + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableMuteMode(USART_TypeDef *USARTx) + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_MME); + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Prevent Mute Mode use. Set Receiver in active mode permanently. + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 MME LL_USART_DisableMuteMode + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableMuteMode(USART_TypeDef *USARTx) + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_MME); + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/cc1GpNf6.s page 62 + + + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if switch between Mute Mode and Active mode is allowed + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 MME LL_USART_IsEnabledMuteMode + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledMuteMode(const USART_TypeDef *USARTx) + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR1, USART_CR1_MME) == (USART_CR1_MME)) ? 1UL : 0UL); + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Oversampling to 8-bit or 16-bit mode + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 OVER8 LL_USART_SetOverSampling + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param OverSampling This parameter can be one of the following values: + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetOverSampling(USART_TypeDef *USARTx, uint32_t OverSampling) + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_OVER8, OverSampling); + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Oversampling mode + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 OVER8 LL_USART_GetOverSampling + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetOverSampling(const USART_TypeDef *USARTx) + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_OVER8)); + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure if Clock pulse of the last data bit is output to the SCLK pin or not + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBCL LL_USART_SetLastClkPulseOutput + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param LastBitClockPulse This parameter can be one of the following values: + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetLastClkPulseOutput(USART_TypeDef *USARTx, uint32_t LastBitClockPul + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_LBCL, LastBitClockPulse); + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve Clock pulse of the last data bit output configuration + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (Last bit Clock pulse output to the SCLK pin or not) + ARM GAS /tmp/cc1GpNf6.s page 63 + + + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 LBCL LL_USART_GetLastClkPulseOutput + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetLastClkPulseOutput(const USART_TypeDef *USARTx) + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBCL)); + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select the phase of the clock output on the SCLK pin in synchronous mode + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPHA LL_USART_SetClockPhase + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param ClockPhase This parameter can be one of the following values: + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_1EDGE + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetClockPhase(USART_TypeDef *USARTx, uint32_t ClockPhase) + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_CPHA, ClockPhase); + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return phase of the clock output on the SCLK pin in synchronous mode + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPHA LL_USART_GetClockPhase + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_1EDGE + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetClockPhase(const USART_TypeDef *USARTx) + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPHA)); + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select the polarity of the clock output on the SCLK pin in synchronous mode + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPOL LL_USART_SetClockPolarity + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param ClockPolarity This parameter can be one of the following values: + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_LOW + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_HIGH + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetClockPolarity(USART_TypeDef *USARTx, uint32_t ClockPolarity) + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/cc1GpNf6.s page 64 + + + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_CPOL, ClockPolarity); + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return polarity of the clock output on the SCLK pin in synchronous mode + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPOL LL_USART_GetClockPolarity + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_LOW + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_HIGH + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetClockPolarity(const USART_TypeDef *USARTx) + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPOL)); + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Clock signal format (Phase Polarity and choice about output of last bit clock + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clock Phase configuration using @ref LL_USART_SetClockPhase() function +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Clock Polarity configuration using @ref LL_USART_SetClockPolarity() function +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Output of Last bit Clock pulse configuration using @ref LL_USART_SetLastClkPulseOutpu +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CPHA LL_USART_ConfigClock\n +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 CPOL LL_USART_ConfigClock\n +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 LBCL LL_USART_ConfigClock +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Phase This parameter can be one of the following values: +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_1EDGE +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PHASE_2EDGE +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Polarity This parameter can be one of the following values: +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_LOW +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_POLARITY_HIGH +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param LBCPOutput This parameter can be one of the following values: +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigClock(USART_TypeDef *USARTx, uint32_t Phase, uint32_t Polarity, +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, Phase | Polarity | LBCP +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Clock output on SCLK pin +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_EnableSCLKOutput +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableSCLKOutput(USART_TypeDef *USARTx) +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_CLKEN); + ARM GAS /tmp/cc1GpNf6.s page 65 + + +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Clock output on SCLK pin +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_DisableSCLKOutput +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableSCLKOutput(USART_TypeDef *USARTx) +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_CLKEN); +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Clock output on SCLK pin is enabled +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_INSTANCE(USARTx) can be used to check whether or not +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Synchronous mode is supported by the USARTx instance. +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 CLKEN LL_USART_IsEnabledSCLKOutput +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledSCLKOutput(const USART_TypeDef *USARTx) +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_CLKEN) == (USART_CR2_CLKEN)) ? 1UL : 0UL); +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set the length of the stop bits +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 STOP LL_USART_SetStopBitsLength +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param StopBits This parameter can be one of the following values: +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_0_5 +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1 +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1_5 +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_2 +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetStopBitsLength(USART_TypeDef *USARTx, uint32_t StopBits) + 464 .loc 3 1073 22 view .LVU122 + 465 .LBB103: +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); + 466 .loc 3 1075 3 view .LVU123 + 467 0028 4268 ldr r2, [r0, #4] + 468 002a 22F44052 bic r2, r2, #12288 + 469 002e 1343 orrs r3, r3, r2 + 470 .LVL31: + 471 .loc 3 1075 3 is_stmt 0 view .LVU124 + 472 0030 4360 str r3, [r0, #4] + 473 .LVL32: + 474 .loc 3 1075 3 view .LVU125 + 475 .LBE103: + 476 .LBE102: + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /*---------------------------- USART CR3 Configuration --------------------- + ARM GAS /tmp/cc1GpNf6.s page 66 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * Configure USARTx CR3 (Hardware Flow Control) with parameters: + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - HardwareFlowControl: USART_CR3_RTSE, USART_CR3_CTSE bits according to + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * USART_InitStruct->HardwareFlowControl value. + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_USART_SetHWFlowCtrl(USARTx, USART_InitStruct->HardwareFlowControl); + 477 .loc 1 264 5 is_stmt 1 view .LVU126 + 478 0032 6B69 ldr r3, [r5, #20] + 479 .LVL33: + 480 .LBB104: + 481 .LBI104: +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve the length of the stop bits +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 STOP LL_USART_GetStopBitsLength +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_0_5 +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1 +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1_5 +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_2 +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetStopBitsLength(const USART_TypeDef *USARTx) +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_STOP)); +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Character frame format (Datawidth, Parity control, Stop Bits) +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Call of this function is equivalent to following function call sequence : +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Data Width configuration using @ref LL_USART_SetDataWidth() function +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Parity Control and mode configuration using @ref LL_USART_SetParity() function +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * - Stop bits configuration using @ref LL_USART_SetStopBitsLength() function +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR1 PS LL_USART_ConfigCharacter\n +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 PCE LL_USART_ConfigCharacter\n +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M0 LL_USART_ConfigCharacter\n +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR1 M1 LL_USART_ConfigCharacter\n +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 STOP LL_USART_ConfigCharacter +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param DataWidth This parameter can be one of the following values: +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_7B +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_8B +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_DATAWIDTH_9B +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Parity This parameter can be one of the following values: +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_NONE +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_EVEN +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_PARITY_ODD +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param StopBits This parameter can be one of the following values: +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_0_5 +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_1_5 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_STOPBITS_2 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigCharacter(USART_TypeDef *USARTx, uint32_t DataWidth, uint32_t P +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t StopBits) +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + ARM GAS /tmp/cc1GpNf6.s page 67 + + +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE | USART_CR1_M, Parity | DataWidth); +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure TX/RX pins swapping setting. +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 SWAP LL_USART_SetTXRXSwap +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param SwapConfig This parameter can be one of the following values: +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_STANDARD +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_SWAPPED +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTXRXSwap(USART_TypeDef *USARTx, uint32_t SwapConfig) +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_SWAP, SwapConfig); +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve TX/RX pins swapping configuration. +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 SWAP LL_USART_GetTXRXSwap +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_STANDARD +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXRX_SWAPPED +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTXRXSwap(const USART_TypeDef *USARTx) +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_SWAP)); +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure RX pin active level logic +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RXINV LL_USART_SetRXPinLevel +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PinInvMethod This parameter can be one of the following values: +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_STANDARD +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_INVERTED +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetRXPinLevel(USART_TypeDef *USARTx, uint32_t PinInvMethod) +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_RXINV, PinInvMethod); +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve RX pin active level logic configuration +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RXINV LL_USART_GetRXPinLevel +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_STANDARD +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_RXPIN_LEVEL_INVERTED +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetRXPinLevel(const USART_TypeDef *USARTx) +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_RXINV)); +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + ARM GAS /tmp/cc1GpNf6.s page 68 + + +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure TX pin active level logic +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 TXINV LL_USART_SetTXPinLevel +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PinInvMethod This parameter can be one of the following values: +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_STANDARD +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_INVERTED +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTXPinLevel(USART_TypeDef *USARTx, uint32_t PinInvMethod) +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_TXINV, PinInvMethod); +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve TX pin active level logic configuration +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 TXINV LL_USART_GetTXPinLevel +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_STANDARD +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_TXPIN_LEVEL_INVERTED +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTXPinLevel(const USART_TypeDef *USARTx) +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_TXINV)); +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure Binary data logic. +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Allow to define how Logical data from the data register are send/received : +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * either in positive/direct logic (1=H, 0=L) or in negative/inverse logic (1=L, 0=H) +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 DATAINV LL_USART_SetBinaryDataLogic +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param DataLogic This parameter can be one of the following values: +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_POSITIVE +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_NEGATIVE +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetBinaryDataLogic(USART_TypeDef *USARTx, uint32_t DataLogic) +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_DATAINV, DataLogic); +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Retrieve Binary data configuration +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 DATAINV LL_USART_GetBinaryDataLogic +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_POSITIVE +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BINARY_LOGIC_NEGATIVE +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetBinaryDataLogic(const USART_TypeDef *USARTx) +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_DATAINV)); +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/cc1GpNf6.s page 69 + + +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure transfer bit order (either Less or Most Significant Bit First) +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note MSB First means data is transmitted/received with the MSB first, following the start bi +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LSB First means data is transmitted/received with data bit 0 first, following the start +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 MSBFIRST LL_USART_SetTransferBitOrder +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param BitOrder This parameter can be one of the following values: +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_LSBFIRST +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_MSBFIRST +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetTransferBitOrder(USART_TypeDef *USARTx, uint32_t BitOrder) +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_MSBFIRST, BitOrder); +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return transfer bit order (either Less or Most Significant Bit First) +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note MSB First means data is transmitted/received with the MSB first, following the start bi +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * LSB First means data is transmitted/received with data bit 0 first, following the start +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 MSBFIRST LL_USART_GetTransferBitOrder +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_LSBFIRST +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_BITORDER_MSBFIRST +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetTransferBitOrder(const USART_TypeDef *USARTx) +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_MSBFIRST)); +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Auto Baud-Rate Detection +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABREN LL_USART_EnableAutoBaudRate +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableAutoBaudRate(USART_TypeDef *USARTx) +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_ABREN); +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Auto Baud-Rate Detection +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABREN LL_USART_DisableAutoBaudRate +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableAutoBaudRate(USART_TypeDef *USARTx) +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_ABREN); +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + ARM GAS /tmp/cc1GpNf6.s page 70 + + +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Auto Baud-Rate Detection mechanism is enabled +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABREN LL_USART_IsEnabledAutoBaud +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledAutoBaud(const USART_TypeDef *USARTx) +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_ABREN) == (USART_CR2_ABREN)) ? 1UL : 0UL); +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Auto Baud-Rate mode bits +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABRMODE LL_USART_SetAutoBaudRateMode +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param AutoBaudRateMode This parameter can be one of the following values: +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_STARTBIT +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_55_FRAME +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetAutoBaudRateMode(USART_TypeDef *USARTx, uint32_t AutoBaudRateMode) +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_ABRMODE, AutoBaudRateMode); +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Auto Baud-Rate mode +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(USARTx) can be used to check whether or +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Auto Baud Rate detection feature is supported by the USARTx instance. +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ABRMODE LL_USART_GetAutoBaudRateMode +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_STARTBIT +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_AUTOBAUD_DETECT_ON_55_FRAME +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetAutoBaudRateMode(const USART_TypeDef *USARTx) +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ABRMODE)); +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Receiver Timeout +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RTOEN LL_USART_EnableRxTimeout +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableRxTimeout(USART_TypeDef *USARTx) +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR2, USART_CR2_RTOEN); + ARM GAS /tmp/cc1GpNf6.s page 71 + + +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Receiver Timeout +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RTOEN LL_USART_DisableRxTimeout +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableRxTimeout(USART_TypeDef *USARTx) +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR2, USART_CR2_RTOEN); +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Receiver Timeout feature is enabled +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 RTOEN LL_USART_IsEnabledRxTimeout +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledRxTimeout(const USART_TypeDef *USARTx) +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR2, USART_CR2_RTOEN) == (USART_CR2_RTOEN)) ? 1UL : 0UL); +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Set Address of the USART node. +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note This is used in multiprocessor communication during Mute mode or Stop mode, +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * for wake up with address mark detection. +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note 4bits address node is used when 4-bit Address Detection is selected in ADDM7. +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (b7-b4 should be set to 0) +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * 8bits address node is used when 7-bit Address Detection is selected in ADDM7. +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (This is used in multiprocessor communication during Mute mode or Stop mode, +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * for wake up with 7-bit address mark detection. +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * The MSB of the character sent by the transmitter should be equal to 1. +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * It may also be used for character detection during normal reception, +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Mute mode inactive (for example, end of block detection in ModBus protocol). +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * In this case, the whole received character (8-bit) is compared to the ADD[7:0] +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * value and CMF flag is set on match) +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ADD LL_USART_ConfigNodeAddress\n +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR2 ADDM7 LL_USART_ConfigNodeAddress +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param AddressLen This parameter can be one of the following values: +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_4B +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_7B +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param NodeAddress 4 or 7 bit Address of the USART node. +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_ConfigNodeAddress(USART_TypeDef *USARTx, uint32_t AddressLen, uint32_ +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR2, USART_CR2_ADD | USART_CR2_ADDM7, +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** (uint32_t)(AddressLen | (NodeAddress << USART_CR2_ADD_Pos))); +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return 8 bit Address of the USART node as set in ADD field of CR2. +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note If 4-bit Address Detection is selected in ADDM7, +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * only 4bits (b3-b0) of returned value are relevant (b31-b4 are not relevant) + ARM GAS /tmp/cc1GpNf6.s page 72 + + +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * If 7-bit Address Detection is selected in ADDM7, +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * only 8bits (b7-b0) of returned value are relevant (b31-b8 are not relevant) +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ADD LL_USART_GetNodeAddress +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Address of the USART node (Value between Min_Data=0 and Max_Data=255) +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetNodeAddress(const USART_TypeDef *USARTx) +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADD) >> USART_CR2_ADD_Pos); +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return Length of Node Address used in Address Detection mode (7-bit or 4-bit) +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR2 ADDM7 LL_USART_GetNodeAddressLen +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_4B +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_ADDRESS_DETECT_7B +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetNodeAddressLen(const USART_TypeDef *USARTx) +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADDM7)); +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable RTS HW Flow Control +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_EnableRTSHWFlowCtrl +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableRTSHWFlowCtrl(USART_TypeDef *USARTx) +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_RTSE); +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable RTS HW Flow Control +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_DisableRTSHWFlowCtrl +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableRTSHWFlowCtrl(USART_TypeDef *USARTx) +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_RTSE); +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable CTS HW Flow Control +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSE LL_USART_EnableCTSHWFlowCtrl +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None + ARM GAS /tmp/cc1GpNf6.s page 73 + + +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableCTSHWFlowCtrl(USART_TypeDef *USARTx) +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_CTSE); +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable CTS HW Flow Control +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 CTSE LL_USART_DisableCTSHWFlowCtrl +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableCTSHWFlowCtrl(USART_TypeDef *USARTx) +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_CTSE); +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure HW Flow Control mode (both CTS and RTS) +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_SetHWFlowCtrl\n +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 CTSE LL_USART_SetHWFlowCtrl +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param HardwareFlowControl This parameter can be one of the following values: +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_NONE +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_CTS +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS_CTS +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetHWFlowCtrl(USART_TypeDef *USARTx, uint32_t HardwareFlowControl) + 482 .loc 3 1498 22 view .LVU127 + 483 .LBB105: +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE, HardwareFlowControl); + 484 .loc 3 1500 3 view .LVU128 + 485 0034 8268 ldr r2, [r0, #8] + 486 0036 22F44072 bic r2, r2, #768 + 487 003a 1343 orrs r3, r3, r2 + 488 .LVL34: + 489 .loc 3 1500 3 is_stmt 0 view .LVU129 + 490 003c 8360 str r3, [r0, #8] + 491 .LVL35: + 492 .loc 3 1500 3 view .LVU130 + 493 .LBE105: + 494 .LBE104: + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /*---------------------------- USART BRR Configuration --------------------- + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * Retrieve Clock frequency used for USART Peripheral + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** if (USARTx == USART1) + 495 .loc 1 269 5 is_stmt 1 view .LVU131 + 496 .loc 1 269 8 is_stmt 0 view .LVU132 + 497 003e 314B ldr r3, .L48+4 + ARM GAS /tmp/cc1GpNf6.s page 74 + + + 498 0040 9842 cmp r0, r3 + 499 0042 16D0 beq .L38 + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** periphclk = LL_RCC_GetUSARTClockFreq(LL_RCC_USART1_CLKSOURCE); + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == USART2) + 500 .loc 1 273 10 is_stmt 1 view .LVU133 + 501 .loc 1 273 13 is_stmt 0 view .LVU134 + 502 0044 304B ldr r3, .L48+8 + 503 0046 9842 cmp r0, r3 + 504 0048 1CD0 beq .L39 + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** periphclk = LL_RCC_GetUSARTClockFreq(LL_RCC_USART2_CLKSOURCE); + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == USART3) + 505 .loc 1 277 10 is_stmt 1 view .LVU135 + 506 .loc 1 277 13 is_stmt 0 view .LVU136 + 507 004a 304B ldr r3, .L48+12 + 508 004c 9842 cmp r0, r3 + 509 004e 1DD0 beq .L40 + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** periphclk = LL_RCC_GetUSARTClockFreq(LL_RCC_USART3_CLKSOURCE); + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == UART4) + 510 .loc 1 281 10 is_stmt 1 view .LVU137 + 511 .loc 1 281 13 is_stmt 0 view .LVU138 + 512 0050 2F4B ldr r3, .L48+16 + 513 0052 9842 cmp r0, r3 + 514 0054 1ED0 beq .L41 + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** periphclk = LL_RCC_GetUARTClockFreq(LL_RCC_UART4_CLKSOURCE); + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == UART5) + 515 .loc 1 285 10 is_stmt 1 view .LVU139 + 516 .loc 1 285 13 is_stmt 0 view .LVU140 + 517 0056 2F4B ldr r3, .L48+20 + 518 0058 9842 cmp r0, r3 + 519 005a 1FD0 beq .L42 + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** periphclk = LL_RCC_GetUARTClockFreq(LL_RCC_UART5_CLKSOURCE); + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == USART6) + 520 .loc 1 289 10 is_stmt 1 view .LVU141 + 521 .loc 1 289 13 is_stmt 0 view .LVU142 + 522 005c 2E4B ldr r3, .L48+24 + 523 005e 9842 cmp r0, r3 + 524 0060 21D0 beq .L43 + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** periphclk = LL_RCC_GetUSARTClockFreq(LL_RCC_USART6_CLKSOURCE); + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == UART7) + 525 .loc 1 293 10 is_stmt 1 view .LVU143 + 526 .loc 1 293 13 is_stmt 0 view .LVU144 + 527 0062 2E4B ldr r3, .L48+28 + 528 0064 9842 cmp r0, r3 + 529 0066 23D0 beq .L44 + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + ARM GAS /tmp/cc1GpNf6.s page 75 + + + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** periphclk = LL_RCC_GetUARTClockFreq(LL_RCC_UART7_CLKSOURCE); + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else if (USARTx == UART8) + 530 .loc 1 297 10 is_stmt 1 view .LVU145 + 531 .loc 1 297 13 is_stmt 0 view .LVU146 + 532 0068 2D4B ldr r3, .L48+32 + 533 006a 9842 cmp r0, r3 + 534 006c 25D0 beq .L45 + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + 535 .loc 1 222 15 view .LVU147 + 536 006e 0120 movs r0, #1 + 537 .LVL36: + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + 538 .loc 1 222 15 view .LVU148 + 539 0070 42E0 b .L22 + 540 .LVL37: + 541 .L38: + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 542 .loc 1 271 7 is_stmt 1 view .LVU149 + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 543 .loc 1 271 19 is_stmt 0 view .LVU150 + 544 0072 0320 movs r0, #3 + 545 .LVL38: + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 546 .loc 1 271 19 view .LVU151 + 547 0074 FFF7FEFF bl LL_RCC_GetUSARTClockFreq + 548 .LVL39: + 549 .L24: + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** periphclk = LL_RCC_GetUARTClockFreq(LL_RCC_UART8_CLKSOURCE); + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Nothing to do, as error code is already assigned to ERROR value */ + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 550 .loc 1 304 5 is_stmt 1 view .LVU152 + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Configure the USART Baud Rate : + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** - valid baud rate value (different from 0) is required + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** - Peripheral clock as returned by RCC service, should be valid (different from 0). + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** if ((periphclk != LL_RCC_PERIPH_FREQUENCY_NO) + 551 .loc 1 310 5 view .LVU153 + 552 .loc 1 310 8 is_stmt 0 view .LVU154 + 553 0078 0028 cmp r0, #0 + 554 007a 3ED0 beq .L35 + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** && (USART_InitStruct->BaudRate != 0U)) + 555 .loc 1 311 29 view .LVU155 + 556 007c 2B68 ldr r3, [r5] + 557 .loc 1 311 9 view .LVU156 + 558 007e 0BBB cbnz r3, .L46 + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + 559 .loc 1 222 15 view .LVU157 + 560 0080 0120 movs r0, #1 + 561 .LVL40: + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + 562 .loc 1 222 15 view .LVU158 + ARM GAS /tmp/cc1GpNf6.s page 76 + + + 563 0082 39E0 b .L22 + 564 .LVL41: + 565 .L39: + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 566 .loc 1 275 7 is_stmt 1 view .LVU159 + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 567 .loc 1 275 19 is_stmt 0 view .LVU160 + 568 0084 0C20 movs r0, #12 + 569 .LVL42: + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 570 .loc 1 275 19 view .LVU161 + 571 0086 FFF7FEFF bl LL_RCC_GetUSARTClockFreq + 572 .LVL43: + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 573 .loc 1 275 19 view .LVU162 + 574 008a F5E7 b .L24 + 575 .LVL44: + 576 .L40: + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 577 .loc 1 279 7 is_stmt 1 view .LVU163 + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 578 .loc 1 279 19 is_stmt 0 view .LVU164 + 579 008c 3020 movs r0, #48 + 580 .LVL45: + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 581 .loc 1 279 19 view .LVU165 + 582 008e FFF7FEFF bl LL_RCC_GetUSARTClockFreq + 583 .LVL46: + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 584 .loc 1 279 19 view .LVU166 + 585 0092 F1E7 b .L24 + 586 .LVL47: + 587 .L41: + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 588 .loc 1 283 7 is_stmt 1 view .LVU167 + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 589 .loc 1 283 19 is_stmt 0 view .LVU168 + 590 0094 C020 movs r0, #192 + 591 .LVL48: + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 592 .loc 1 283 19 view .LVU169 + 593 0096 FFF7FEFF bl LL_RCC_GetUARTClockFreq + 594 .LVL49: + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 595 .loc 1 283 19 view .LVU170 + 596 009a EDE7 b .L24 + 597 .LVL50: + 598 .L42: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 599 .loc 1 287 7 is_stmt 1 view .LVU171 + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 600 .loc 1 287 19 is_stmt 0 view .LVU172 + 601 009c 4FF44070 mov r0, #768 + 602 .LVL51: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 603 .loc 1 287 19 view .LVU173 + 604 00a0 FFF7FEFF bl LL_RCC_GetUARTClockFreq + ARM GAS /tmp/cc1GpNf6.s page 77 + + + 605 .LVL52: + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 606 .loc 1 287 19 view .LVU174 + 607 00a4 E8E7 b .L24 + 608 .LVL53: + 609 .L43: + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 610 .loc 1 291 7 is_stmt 1 view .LVU175 + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 611 .loc 1 291 19 is_stmt 0 view .LVU176 + 612 00a6 4FF44060 mov r0, #3072 + 613 .LVL54: + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 614 .loc 1 291 19 view .LVU177 + 615 00aa FFF7FEFF bl LL_RCC_GetUSARTClockFreq + 616 .LVL55: + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 617 .loc 1 291 19 view .LVU178 + 618 00ae E3E7 b .L24 + 619 .LVL56: + 620 .L44: + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 621 .loc 1 295 7 is_stmt 1 view .LVU179 + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 622 .loc 1 295 19 is_stmt 0 view .LVU180 + 623 00b0 4FF44050 mov r0, #12288 + 624 .LVL57: + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 625 .loc 1 295 19 view .LVU181 + 626 00b4 FFF7FEFF bl LL_RCC_GetUARTClockFreq + 627 .LVL58: + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 628 .loc 1 295 19 view .LVU182 + 629 00b8 DEE7 b .L24 + 630 .LVL59: + 631 .L45: + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 632 .loc 1 299 7 is_stmt 1 view .LVU183 + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 633 .loc 1 299 19 is_stmt 0 view .LVU184 + 634 00ba 4FF44040 mov r0, #49152 + 635 .LVL60: + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 636 .loc 1 299 19 view .LVU185 + 637 00be FFF7FEFF bl LL_RCC_GetUARTClockFreq + 638 .LVL61: + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 639 .loc 1 299 19 view .LVU186 + 640 00c2 D9E7 b .L24 + 641 .L46: + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** status = SUCCESS; + 642 .loc 1 313 7 is_stmt 1 view .LVU187 + 643 .LVL62: + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_USART_SetBaudRate(USARTx, + 644 .loc 1 314 7 view .LVU188 + 645 00c4 AA69 ldr r2, [r5, #24] + ARM GAS /tmp/cc1GpNf6.s page 78 + + + 646 .LVL63: + 647 .LBB106: + 648 .LBI106: +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return HW Flow Control configuration (both CTS and RTS) +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Hardware Flow control feature is supported by the USARTx instance. +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 RTSE LL_USART_GetHWFlowCtrl\n +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * CR3 CTSE LL_USART_GetHWFlowCtrl +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_NONE +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_CTS +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_HWCONTROL_RTS_CTS +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetHWFlowCtrl(const USART_TypeDef *USARTx) +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE)); +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable One bit sampling method +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 ONEBIT LL_USART_EnableOneBitSamp +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableOneBitSamp(USART_TypeDef *USARTx) +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_ONEBIT); +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable One bit sampling method +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 ONEBIT LL_USART_DisableOneBitSamp +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableOneBitSamp(USART_TypeDef *USARTx) +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_ONEBIT); +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if One bit sampling method is enabled +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 ONEBIT LL_USART_IsEnabledOneBitSamp +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledOneBitSamp(const USART_TypeDef *USARTx) +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_ONEBIT) == (USART_CR3_ONEBIT)) ? 1UL : 0UL); +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** + ARM GAS /tmp/cc1GpNf6.s page 79 + + +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Enable Overrun detection +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 OVRDIS LL_USART_EnableOverrunDetect +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_EnableOverrunDetect(USART_TypeDef *USARTx) +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** CLEAR_BIT(USARTx->CR3, USART_CR3_OVRDIS); +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Disable Overrun detection +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 OVRDIS LL_USART_DisableOverrunDetect +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_DisableOverrunDetect(USART_TypeDef *USARTx) +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** SET_BIT(USARTx->CR3, USART_CR3_OVRDIS); +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Indicate if Overrun detection is enabled +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 OVRDIS LL_USART_IsEnabledOverrunDetect +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval State of bit (1 or 0). +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_IsEnabledOverrunDetect(const USART_TypeDef *USARTx) +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return ((READ_BIT(USARTx->CR3, USART_CR3_OVRDIS) != USART_CR3_OVRDIS) ? 1UL : 0UL); +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR1_UESM) +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #if defined(USART_CR3_WUS) +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Select event type for Wake UP Interrupt Flag (WUS[1:0] bits) +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUS LL_USART_SetWKUPType +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param Type This parameter can be one of the following values: +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_ADDRESS +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_STARTBIT +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_RXNE +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetWKUPType(USART_TypeDef *USARTx, uint32_t Type) +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** MODIFY_REG(USARTx->CR3, USART_CR3_WUS, Type); +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Return event type for Wake UP Interrupt Flag (WUS[1:0] bits) +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Macro IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * Wake-up from Stop mode feature is supported by the USARTx instance. +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll CR3 WUS LL_USART_GetWKUPType +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance + ARM GAS /tmp/cc1GpNf6.s page 80 + + +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval Returned value can be one of the following values: +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_ADDRESS +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_STARTBIT +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_WAKEUP_ON_RXNE +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE uint32_t LL_USART_GetWKUPType(const USART_TypeDef *USARTx) +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_WUS)); +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR3_WUS */ +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** #endif /* USART_CR1_UESM */ +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** /** +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @brief Configure USART BRR register for achieving expected Baud Rate value. +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Compute and set USARTDIV value in BRR Register (full BRR content) +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * according to used Peripheral Clock, Oversampling mode, and expected Baud Rate values +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note Peripheral clock and Baud rate values provided as function parameters should be valid +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * (Baud rate value != 0) +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @note In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @rmtoll BRR BRR LL_USART_SetBaudRate +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param USARTx USART Instance +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param PeriphClk Peripheral Clock +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param OverSampling This parameter can be one of the following values: +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_16 +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @arg @ref LL_USART_OVERSAMPLING_8 +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @param BaudRate Baud Rate +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** * @retval None +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** */ +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** __STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverS + 649 .loc 3 1640 22 view .LVU189 + 650 .LBB107: +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t BaudRate) +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t usartdiv; + 651 .loc 3 1643 3 view .LVU190 +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** uint32_t brrtemp; + 652 .loc 3 1644 3 view .LVU191 +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** if (OverSampling == LL_USART_OVERSAMPLING_8) + 653 .loc 3 1646 3 view .LVU192 + 654 .loc 3 1646 6 is_stmt 0 view .LVU193 + 655 00c6 B2F5004F cmp r2, #32768 + 656 00ca 07D0 beq .L47 +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** usartdiv = (uint16_t)(__LL_USART_DIV_SAMPLING8(PeriphClk, BaudRate)); +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp = usartdiv & 0xFFF0U; +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USARTx->BRR = brrtemp; +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** else +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING16(PeriphClk, BaudRate)); + 657 .loc 3 1655 5 is_stmt 1 view .LVU194 + 658 .loc 3 1655 30 is_stmt 0 view .LVU195 + 659 00cc 00EB5300 add r0, r0, r3, lsr #1 + 660 .LVL64: + 661 .loc 3 1655 30 view .LVU196 + ARM GAS /tmp/cc1GpNf6.s page 81 + + + 662 00d0 B0FBF3F3 udiv r3, r0, r3 + 663 .LVL65: + 664 .loc 3 1655 30 view .LVU197 + 665 00d4 9BB2 uxth r3, r3 + 666 .loc 3 1655 17 view .LVU198 + 667 00d6 E360 str r3, [r4, #12] + 668 .LVL66: + 669 .L32: + 670 .loc 3 1655 17 view .LVU199 + 671 .LBE107: + 672 .LBE106: + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_USART_SetBaudRate(USARTx, + 673 .loc 1 313 14 view .LVU200 + 674 00d8 0020 movs r0, #0 + 675 .LBB109: + 676 .LBB108: +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 677 .loc 3 1657 1 view .LVU201 + 678 00da 0DE0 b .L22 + 679 .LVL67: + 680 .L47: +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp = usartdiv & 0xFFF0U; + 681 .loc 3 1648 5 is_stmt 1 view .LVU202 +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp = usartdiv & 0xFFF0U; + 682 .loc 3 1648 27 is_stmt 0 view .LVU203 + 683 00dc 5A08 lsrs r2, r3, #1 + 684 .LVL68: +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp = usartdiv & 0xFFF0U; + 685 .loc 3 1648 27 view .LVU204 + 686 00de 02EB4000 add r0, r2, r0, lsl #1 + 687 .LVL69: +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp = usartdiv & 0xFFF0U; + 688 .loc 3 1648 27 view .LVU205 + 689 00e2 B0FBF3F3 udiv r3, r0, r3 + 690 .LVL70: +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); + 691 .loc 3 1649 5 is_stmt 1 view .LVU206 +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); + 692 .loc 3 1649 13 is_stmt 0 view .LVU207 + 693 00e6 4FF6F072 movw r2, #65520 + 694 00ea 1A40 ands r2, r2, r3 + 695 .LVL71: +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USARTx->BRR = brrtemp; + 696 .loc 3 1650 5 is_stmt 1 view .LVU208 +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USARTx->BRR = brrtemp; + 697 .loc 3 1650 16 is_stmt 0 view .LVU209 + 698 00ec C3F34203 ubfx r3, r3, #1, #3 + 699 .LVL72: +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** USARTx->BRR = brrtemp; + 700 .loc 3 1650 13 view .LVU210 + 701 00f0 1343 orrs r3, r3, r2 + 702 .LVL73: +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 703 .loc 3 1651 5 is_stmt 1 view .LVU211 +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 704 .loc 3 1651 17 is_stmt 0 view .LVU212 + ARM GAS /tmp/cc1GpNf6.s page 82 + + + 705 00f2 E360 str r3, [r4, #12] + 706 .LVL74: +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 707 .loc 3 1651 17 view .LVU213 + 708 00f4 F0E7 b .L32 + 709 .LVL75: + 710 .L33: +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 711 .loc 3 1651 17 view .LVU214 + 712 .LBE108: + 713 .LBE109: + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + 714 .loc 1 222 15 view .LVU215 + 715 00f6 0120 movs r0, #1 + 716 .LVL76: + 717 .L22: + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** periphclk, + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_InitStruct->OverSampling, + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_InitStruct->BaudRate); + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Check BRR is greater than or equal to 16d */ + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_BRR_MIN(USARTx->BRR)); + 718 .loc 1 320 7 is_stmt 1 view .LVU216 + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Endif (=> USART not in Disabled state => return ERROR) */ + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** return (status); + 719 .loc 1 325 3 view .LVU217 + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 720 .loc 1 326 1 is_stmt 0 view .LVU218 + 721 00f8 38BD pop {r3, r4, r5, pc} + 722 .LVL77: + 723 .L35: + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + 724 .loc 1 222 15 view .LVU219 + 725 00fa 0120 movs r0, #1 + 726 .LVL78: + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + 727 .loc 1 222 15 view .LVU220 + 728 00fc FCE7 b .L22 + 729 .L49: + 730 00fe 00BF .align 2 + 731 .L48: + 732 0100 F369FFEF .word -268473869 + 733 0104 00100140 .word 1073811456 + 734 0108 00440040 .word 1073759232 + 735 010c 00480040 .word 1073760256 + 736 0110 004C0040 .word 1073761280 + 737 0114 00500040 .word 1073762304 + 738 0118 00140140 .word 1073812480 + 739 011c 00780040 .word 1073772544 + 740 0120 007C0040 .word 1073773568 + 741 .cfi_endproc + 742 .LFE543: + 744 .section .text.LL_USART_StructInit,"ax",%progbits + 745 .align 1 + ARM GAS /tmp/cc1GpNf6.s page 83 + + + 746 .global LL_USART_StructInit + 747 .syntax unified + 748 .thumb + 749 .thumb_func + 750 .fpu fpv5-d16 + 752 LL_USART_StructInit: + 753 .LVL79: + 754 .LFB544: + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @brief Set each @ref LL_USART_InitTypeDef field to default value. + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @param USART_InitStruct pointer to a @ref LL_USART_InitTypeDef structure + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * whose fields will be set to default values. + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @retval None + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** void LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct) + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 755 .loc 1 336 1 is_stmt 1 view -0 + 756 .cfi_startproc + 757 @ args = 0, pretend = 0, frame = 0 + 758 @ frame_needed = 0, uses_anonymous_args = 0 + 759 @ link register save eliminated. + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Set USART_InitStruct fields to default values */ + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_InitStruct->BaudRate = USART_DEFAULT_BAUDRATE; + 760 .loc 1 338 3 view .LVU222 + 761 .loc 1 338 41 is_stmt 0 view .LVU223 + 762 0000 4FF41653 mov r3, #9600 + 763 0004 0360 str r3, [r0] + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_InitStruct->DataWidth = LL_USART_DATAWIDTH_8B; + 764 .loc 1 339 3 is_stmt 1 view .LVU224 + 765 .loc 1 339 41 is_stmt 0 view .LVU225 + 766 0006 0023 movs r3, #0 + 767 0008 4360 str r3, [r0, #4] + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_InitStruct->StopBits = LL_USART_STOPBITS_1; + 768 .loc 1 340 3 is_stmt 1 view .LVU226 + 769 .loc 1 340 41 is_stmt 0 view .LVU227 + 770 000a 8360 str r3, [r0, #8] + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_InitStruct->Parity = LL_USART_PARITY_NONE ; + 771 .loc 1 341 3 is_stmt 1 view .LVU228 + 772 .loc 1 341 41 is_stmt 0 view .LVU229 + 773 000c C360 str r3, [r0, #12] + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_InitStruct->TransferDirection = LL_USART_DIRECTION_TX_RX; + 774 .loc 1 342 3 is_stmt 1 view .LVU230 + 775 .loc 1 342 41 is_stmt 0 view .LVU231 + 776 000e 0C22 movs r2, #12 + 777 0010 0261 str r2, [r0, #16] + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_InitStruct->HardwareFlowControl = LL_USART_HWCONTROL_NONE; + 778 .loc 1 343 3 is_stmt 1 view .LVU232 + 779 .loc 1 343 41 is_stmt 0 view .LVU233 + 780 0012 4361 str r3, [r0, #20] + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_InitStruct->OverSampling = LL_USART_OVERSAMPLING_16; + 781 .loc 1 344 3 is_stmt 1 view .LVU234 + 782 .loc 1 344 41 is_stmt 0 view .LVU235 + 783 0014 8361 str r3, [r0, #24] + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 784 .loc 1 345 1 view .LVU236 + ARM GAS /tmp/cc1GpNf6.s page 84 + + + 785 0016 7047 bx lr + 786 .cfi_endproc + 787 .LFE544: + 789 .section .text.LL_USART_ClockInit,"ax",%progbits + 790 .align 1 + 791 .global LL_USART_ClockInit + 792 .syntax unified + 793 .thumb + 794 .thumb_func + 795 .fpu fpv5-d16 + 797 LL_USART_ClockInit: + 798 .LVL80: + 799 .LFB545: + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @brief Initialize USART Clock related settings according to the + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * specified parameters in the USART_ClockInitStruct. + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @note As some bits in USART configuration registers can only be written when + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * the USART is disabled (USART_CR1_UE bit =0), USART Peripheral should be in disabled sta + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * this function. Otherwise, ERROR result will be returned. + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @param USARTx USART Instance + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @param USART_ClockInitStruct pointer to a @ref LL_USART_ClockInitTypeDef structure + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * that contains the Clock configuration information for the specified USART peripheral. + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @retval An ErrorStatus enumeration value: + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - SUCCESS: USART registers related to Clock settings are initialized according + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * to USART_ClockInitStruct content + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - ERROR: Problem occurred during USART Registers initialization + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, const LL_USART_ClockInitTypeDef *USART_ClockI + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 800 .loc 1 362 1 is_stmt 1 view -0 + 801 .cfi_startproc + 802 @ args = 0, pretend = 0, frame = 0 + 803 @ frame_needed = 0, uses_anonymous_args = 0 + 804 @ link register save eliminated. + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** ErrorStatus status = SUCCESS; + 805 .loc 1 363 3 view .LVU238 + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Check USART Instance and Clock signal output parameters */ + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_UART_INSTANCE(USARTx)); + 806 .loc 1 366 3 view .LVU239 + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_CLOCKOUTPUT(USART_ClockInitStruct->ClockOutput)); + 807 .loc 1 367 3 view .LVU240 + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* USART needs to be in disabled state, in order to be able to configure some bits in + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** CRx registers */ + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** if (LL_USART_IsEnabled(USARTx) == 0U) + 808 .loc 1 371 3 view .LVU241 + 809 .LBB110: + 810 .LBI110: + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 811 .loc 3 585 26 view .LVU242 + 812 .LBB111: + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 813 .loc 3 587 3 view .LVU243 + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 814 .loc 3 587 12 is_stmt 0 view .LVU244 + ARM GAS /tmp/cc1GpNf6.s page 85 + + + 815 0000 0368 ldr r3, [r0] + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 816 .loc 3 587 73 view .LVU245 + 817 0002 13F0010F tst r3, #1 + 818 0006 18D1 bne .L54 + 819 .LVL81: + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 820 .loc 3 587 73 view .LVU246 + 821 .LBE111: + 822 .LBE110: + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* If USART Clock signal is disabled */ + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** if (USART_ClockInitStruct->ClockOutput == LL_USART_CLOCK_DISABLE) + 823 .loc 1 374 5 is_stmt 1 view .LVU247 + 824 .loc 1 374 30 is_stmt 0 view .LVU248 + 825 0008 0B68 ldr r3, [r1] + 826 .loc 1 374 8 view .LVU249 + 827 000a 2BB9 cbnz r3, .L53 + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Deactivate Clock signal delivery : + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - Disable Clock Output: USART_CR2_CLKEN cleared + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_USART_DisableSCLKOutput(USARTx); + 828 .loc 1 379 7 is_stmt 1 view .LVU250 + 829 .LVL82: + 830 .LBB112: + 831 .LBI112: +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** { + 832 .loc 3 1044 22 view .LVU251 + 833 .LBB113: +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** } + 834 .loc 3 1046 3 view .LVU252 + 835 000c 4368 ldr r3, [r0, #4] + 836 000e 23F40063 bic r3, r3, #2048 + 837 0012 4360 str r3, [r0, #4] + 838 .LBE113: + 839 .LBE112: + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 840 .loc 1 363 15 is_stmt 0 view .LVU253 + 841 0014 0020 movs r0, #0 + 842 .LVL83: + 843 .LBB115: + 844 .LBB114: +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 845 .loc 3 1047 1 view .LVU254 + 846 0016 7047 bx lr + 847 .LVL84: + 848 .L53: +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h **** + 849 .loc 3 1047 1 view .LVU255 + 850 .LBE114: + 851 .LBE115: + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** ErrorStatus status = SUCCESS; + 852 .loc 1 362 1 view .LVU256 + 853 0018 10B4 push {r4} + 854 .LCFI1: + 855 .cfi_def_cfa_offset 4 + ARM GAS /tmp/cc1GpNf6.s page 86 + + + 856 .cfi_offset 4, -4 + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Ensure USART instance is USART capable */ + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_USART_INSTANCE(USARTx)); + 857 .loc 1 384 7 is_stmt 1 view .LVU257 + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Check clock related parameters */ + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_CLOCKPOLARITY(USART_ClockInitStruct->ClockPolarity)); + 858 .loc 1 387 7 view .LVU258 + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_CLOCKPHASE(USART_ClockInitStruct->ClockPhase)); + 859 .loc 1 388 7 view .LVU259 + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** assert_param(IS_LL_USART_LASTBITCLKOUTPUT(USART_ClockInitStruct->LastBitClockPulse)); + 860 .loc 1 389 7 view .LVU260 + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /*---------------------------- USART CR2 Configuration ----------------------- + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * Configure USARTx CR2 (Clock signal related bits) with parameters: + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - Enable Clock Output: USART_CR2_CLKEN set + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - Clock Polarity: USART_CR2_CPOL bit according to USART_ClockInitStruct->Cloc + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - Clock Phase: USART_CR2_CPHA bit according to USART_ClockInitStruct->Cloc + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * - Last Bit Clock Pulse Output: USART_CR2_LBCL bit according to USART_ClockInitStruct->Last + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** MODIFY_REG(USARTx->CR2, + 861 .loc 1 398 7 view .LVU261 + 862 001a 4368 ldr r3, [r0, #4] + 863 001c 23F47063 bic r3, r3, #3840 + 864 0020 4A68 ldr r2, [r1, #4] + 865 0022 8C68 ldr r4, [r1, #8] + 866 0024 2243 orrs r2, r2, r4 + 867 0026 C968 ldr r1, [r1, #12] + 868 .LVL85: + 869 .loc 1 398 7 is_stmt 0 view .LVU262 + 870 0028 0A43 orrs r2, r2, r1 + 871 002a 1343 orrs r3, r3, r2 + 872 002c 43F40063 orr r3, r3, #2048 + 873 0030 4360 str r3, [r0, #4] + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 874 .loc 1 363 15 view .LVU263 + 875 0032 0020 movs r0, #0 + 876 .LVL86: + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_CR2_CLKEN | USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_CR2_CLKEN | USART_ClockInitStruct->ClockPolarity | + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_ClockInitStruct->ClockPhase | USART_ClockInitStruct->LastBitClockPulse); + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Else (USART not in Disabled state => return ERROR */ + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** else + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** status = ERROR; + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** return (status); + 877 .loc 1 410 3 is_stmt 1 view .LVU264 + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 878 .loc 1 411 1 is_stmt 0 view .LVU265 + 879 0034 5DF8044B ldr r4, [sp], #4 + ARM GAS /tmp/cc1GpNf6.s page 87 + + + 880 .LCFI2: + 881 .cfi_restore 4 + 882 .cfi_def_cfa_offset 0 + 883 0038 7047 bx lr + 884 .LVL87: + 885 .L54: + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 886 .loc 1 407 12 view .LVU266 + 887 003a 0120 movs r0, #1 + 888 .LVL88: + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 889 .loc 1 410 3 is_stmt 1 view .LVU267 + 890 .loc 1 411 1 is_stmt 0 view .LVU268 + 891 003c 7047 bx lr + 892 .cfi_endproc + 893 .LFE545: + 895 .section .text.LL_USART_ClockStructInit,"ax",%progbits + 896 .align 1 + 897 .global LL_USART_ClockStructInit + 898 .syntax unified + 899 .thumb + 900 .thumb_func + 901 .fpu fpv5-d16 + 903 LL_USART_ClockStructInit: + 904 .LVL89: + 905 .LFB546: + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /** + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @brief Set each field of a @ref LL_USART_ClockInitTypeDef type structure to default value. + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @param USART_ClockInitStruct pointer to a @ref LL_USART_ClockInitTypeDef structure + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * whose fields will be set to default values. + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** * @retval None + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** */ + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** void LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct) + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** { + 906 .loc 1 420 1 is_stmt 1 view -0 + 907 .cfi_startproc + 908 @ args = 0, pretend = 0, frame = 0 + 909 @ frame_needed = 0, uses_anonymous_args = 0 + 910 @ link register save eliminated. + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** /* Set LL_USART_ClockInitStruct fields with default values */ + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_ClockInitStruct->ClockOutput = LL_USART_CLOCK_DISABLE; + 911 .loc 1 422 3 view .LVU270 + 912 .loc 1 422 44 is_stmt 0 view .LVU271 + 913 0000 0023 movs r3, #0 + 914 0002 0360 str r3, [r0] + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_ClockInitStruct->ClockPolarity = LL_USART_POLARITY_LOW; /* Not relevant when + 915 .loc 1 423 3 is_stmt 1 view .LVU272 + 916 .loc 1 423 44 is_stmt 0 view .LVU273 + 917 0004 4360 str r3, [r0, #4] + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_USART_CLOCK_DI + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_ClockInitStruct->ClockPhase = LL_USART_PHASE_1EDGE; /* Not relevant when + 918 .loc 1 425 3 is_stmt 1 view .LVU274 + 919 .loc 1 425 44 is_stmt 0 view .LVU275 + 920 0006 8360 str r3, [r0, #8] + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_USART_CLOCK_DI + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** USART_ClockInitStruct->LastBitClockPulse = LL_USART_LASTCLKPULSE_NO_OUTPUT; /* Not relevant when + ARM GAS /tmp/cc1GpNf6.s page 88 + + + 921 .loc 1 427 3 is_stmt 1 view .LVU276 + 922 .loc 1 427 44 is_stmt 0 view .LVU277 + 923 0008 C360 str r3, [r0, #12] + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** LL_USART_CLOCK_DI + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usart.c **** } + 924 .loc 1 429 1 view .LVU278 + 925 000a 7047 bx lr + 926 .cfi_endproc + 927 .LFE546: + 929 .text + 930 .Letext0: + 931 .file 4 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 932 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 933 .file 6 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + 934 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + ARM GAS /tmp/cc1GpNf6.s page 89 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_ll_usart.c + /tmp/cc1GpNf6.s:17 .text.LL_USART_DeInit:0000000000000000 $t + /tmp/cc1GpNf6.s:25 .text.LL_USART_DeInit:0000000000000000 LL_USART_DeInit + /tmp/cc1GpNf6.s:379 .text.LL_USART_DeInit:00000000000000f4 $d + /tmp/cc1GpNf6.s:393 .text.LL_USART_Init:0000000000000000 $t + /tmp/cc1GpNf6.s:400 .text.LL_USART_Init:0000000000000000 LL_USART_Init + /tmp/cc1GpNf6.s:732 .text.LL_USART_Init:0000000000000100 $d + /tmp/cc1GpNf6.s:745 .text.LL_USART_StructInit:0000000000000000 $t + /tmp/cc1GpNf6.s:752 .text.LL_USART_StructInit:0000000000000000 LL_USART_StructInit + /tmp/cc1GpNf6.s:790 .text.LL_USART_ClockInit:0000000000000000 $t + /tmp/cc1GpNf6.s:797 .text.LL_USART_ClockInit:0000000000000000 LL_USART_ClockInit + /tmp/cc1GpNf6.s:896 .text.LL_USART_ClockStructInit:0000000000000000 $t + /tmp/cc1GpNf6.s:903 .text.LL_USART_ClockStructInit:0000000000000000 LL_USART_ClockStructInit + +UNDEFINED SYMBOLS +LL_RCC_GetUSARTClockFreq +LL_RCC_GetUARTClockFreq diff --git a/build/stm32f7xx_ll_usart.o b/build/stm32f7xx_ll_usart.o new file mode 100644 index 0000000..2e8c512 Binary files /dev/null and b/build/stm32f7xx_ll_usart.o differ diff --git a/build/stm32f7xx_ll_utils.d b/build/stm32f7xx_ll_utils.d new file mode 100644 index 0000000..acf4b33 --- /dev/null +++ b/build/stm32f7xx_ll_utils.d @@ -0,0 +1,72 @@ +build/stm32f7xx_ll_utils.o: \ + Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: diff --git a/build/stm32f7xx_ll_utils.lst b/build/stm32f7xx_ll_utils.lst new file mode 100644 index 0000000..edc8121 --- /dev/null +++ b/build/stm32f7xx_ll_utils.lst @@ -0,0 +1,8361 @@ +ARM GAS /tmp/ccLtUKRp.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "stm32f7xx_ll_utils.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.UTILS_GetPLLOutputFrequency,"ax",%progbits + 17 .align 1 + 18 .arch armv7e-m + 19 .syntax unified + 20 .thumb + 21 .thumb_func + 22 .fpu fpv5-d16 + 24 UTILS_GetPLLOutputFrequency: + 25 .LVL0: + 26 .LFB411: + 27 .file 1 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c" + 1:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @file stm32f7xx_ll_utils.c + 4:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief UTILS LL module driver. + 6:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * + 9:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * + 12:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * + 16:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Includes ------------------------------------------------------------------*/ + 19:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #include "stm32f7xx_ll_utils.h" + 20:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #include "stm32f7xx_ll_rcc.h" + 21:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #include "stm32f7xx_ll_system.h" + 22:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #include "stm32f7xx_ll_pwr.h" + 23:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #ifdef USE_FULL_ASSERT + 24:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #include "stm32_assert.h" + 25:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #else + 26:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define assert_param(expr) ((void)0U) + 27:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #endif /* USE_FULL_ASSERT */ + 28:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 29:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** @addtogroup STM32F7xx_LL_Driver + 30:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @{ + 31:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + ARM GAS /tmp/ccLtUKRp.s page 2 + + + 32:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 33:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** @addtogroup UTILS_LL + 34:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @{ + 35:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 36:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 37:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Private types -------------------------------------------------------------*/ + 38:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Private variables ---------------------------------------------------------*/ + 39:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Private constants ---------------------------------------------------------*/ + 40:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** @addtogroup UTILS_LL_Private_Constants + 41:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @{ + 42:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 43:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_MAX_FREQUENCY_SCALE1 216000000U /*!< Maximum frequency for system clock at power sca + 44:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_MAX_FREQUENCY_SCALE2 180000000U /*!< Maximum frequency for system clock at pow + 45:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_MAX_FREQUENCY_SCALE3 144000000U /*!< Maximum frequency for system clock at pow + 46:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 47:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Defines used for PLL range */ + 48:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_PLLVCO_INPUT_MIN 950000U /*!< Frequency min for PLLVCO input, in Hz * + 49:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_PLLVCO_INPUT_MAX 2100000U /*!< Frequency max for PLLVCO input, in Hz * + 50:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_PLLVCO_OUTPUT_MIN 100000000U /*!< Frequency min for PLLVCO output, in Hz * + 51:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_PLLVCO_OUTPUT_MAX 432000000U /*!< Frequency max for PLLVCO output, in Hz * + 52:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 53:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Defines used for HSE range */ + 54:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_HSE_FREQUENCY_MIN 4000000U /*!< Frequency min for HSE frequency, in Hz + 55:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_HSE_FREQUENCY_MAX 26000000U /*!< Frequency max for HSE frequency, in Hz + 56:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 57:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Defines used for FLASH latency according to HCLK Frequency */ + 58:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE1_LATENCY1_FREQ 30000000U /*!< HCLK frequency to set FLASH latency 1 in p + 59:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE1_LATENCY2_FREQ 60000000U /*!< HCLK frequency to set FLASH latency 2 in p + 60:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE1_LATENCY3_FREQ 90000000U /*!< HCLK frequency to set FLASH latency 3 in p + 61:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE1_LATENCY4_FREQ 120000000U /*!< HCLK frequency to set FLASH latency 4 in p + 62:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE1_LATENCY5_FREQ 150000000U /*!< HCLK frequency to set FLASH latency 5 in p + 63:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE1_LATENCY6_FREQ 180000000U /*!< HCLK frequency to set FLASH latency 6 in p + 64:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE1_LATENCY7_FREQ 210000000U /*!< HCLK frequency to set FLASH latency 7 in p + 65:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE2_LATENCY1_FREQ 30000000U /*!< HCLK frequency to set FLASH latency 1 in p + 66:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE2_LATENCY2_FREQ 60000000U /*!< HCLK frequency to set FLASH latency 2 in p + 67:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE2_LATENCY3_FREQ 90000000U /*!< HCLK frequency to set FLASH latency 3 in p + 68:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE2_LATENCY4_FREQ 120000000U /*!< HCLK frequency to set FLASH latency 4 in p + 69:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE2_LATENCY5_FREQ 150000000U /*!< HCLK frequency to set FLASH latency 5 in p + 70:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE3_LATENCY1_FREQ 30000000U /*!< HCLK frequency to set FLASH latency 1 in p + 71:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE3_LATENCY2_FREQ 60000000U /*!< HCLK frequency to set FLASH latency 2 in p + 72:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE3_LATENCY3_FREQ 90000000U /*!< HCLK frequency to set FLASH latency 3 in p + 73:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define UTILS_SCALE3_LATENCY4_FREQ 120000000U /*!< HCLK frequency to set FLASH latency 4 in p + 74:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 75:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @} + 76:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 77:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 78:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Private macros ------------------------------------------------------------*/ + 79:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** @addtogroup UTILS_LL_Private_Macros + 80:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @{ + 81:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 82:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_SYSCLK_DIV(__VALUE__) (((__VALUE__) == LL_RCC_SYSCLK_DIV_1) \ + 83:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_SYSCLK_DIV_2) \ + 84:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_SYSCLK_DIV_4) \ + 85:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_SYSCLK_DIV_8) \ + 86:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_SYSCLK_DIV_16) \ + 87:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_SYSCLK_DIV_64) \ + 88:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_SYSCLK_DIV_128) \ + ARM GAS /tmp/ccLtUKRp.s page 3 + + + 89:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_SYSCLK_DIV_256) \ + 90:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_SYSCLK_DIV_512)) + 91:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 92:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_APB1_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB1_DIV_1) \ + 93:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_APB1_DIV_2) \ + 94:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_APB1_DIV_4) \ + 95:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_APB1_DIV_8) \ + 96:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_APB1_DIV_16)) + 97:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 98:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_APB2_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB2_DIV_1) \ + 99:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_APB2_DIV_2) \ + 100:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_APB2_DIV_4) \ + 101:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_APB2_DIV_8) \ + 102:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_APB2_DIV_16)) + 103:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 104:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_PLLM_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLLM_DIV_2) \ + 105:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_3) \ + 106:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_4) \ + 107:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_5) \ + 108:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_6) \ + 109:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_7) \ + 110:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_8) \ + 111:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_9) \ + 112:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_10) \ + 113:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_11) \ + 114:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_12) \ + 115:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_13) \ + 116:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_14) \ + 117:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_15) \ + 118:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_16) \ + 119:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_17) \ + 120:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_18) \ + 121:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_19) \ + 122:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_20) \ + 123:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_21) \ + 124:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_22) \ + 125:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_23) \ + 126:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_24) \ + 127:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_25) \ + 128:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_26) \ + 129:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_27) \ + 130:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_28) \ + 131:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_29) \ + 132:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_30) \ + 133:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_31) \ + 134:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_32) \ + 135:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_33) \ + 136:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_34) \ + 137:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_35) \ + 138:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_36) \ + 139:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_37) \ + 140:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_38) \ + 141:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_39) \ + 142:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_40) \ + 143:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_41) \ + 144:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_42) \ + 145:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_43) \ + ARM GAS /tmp/ccLtUKRp.s page 4 + + + 146:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_44) \ + 147:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_45) \ + 148:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_46) \ + 149:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_47) \ + 150:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_48) \ + 151:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_49) \ + 152:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_50) \ + 153:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_51) \ + 154:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_52) \ + 155:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_53) \ + 156:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_54) \ + 157:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_55) \ + 158:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_56) \ + 159:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_57) \ + 160:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_58) \ + 161:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_59) \ + 162:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_60) \ + 163:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_61) \ + 164:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_62) \ + 165:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLM_DIV_63)) + 166:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 167:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_PLLN_VALUE(__VALUE__) ((50 <= (__VALUE__)) && ((__VALUE__) <= 432)) + 168:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 169:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_PLLP_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLLP_DIV_2) \ + 170:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLP_DIV_4) \ + 171:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLP_DIV_6) \ + 172:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__VALUE__) == LL_RCC_PLLP_DIV_8)) + 173:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 174:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_PLLVCO_INPUT(__VALUE__) ((UTILS_PLLVCO_INPUT_MIN <= (__VALUE__)) && ((__VALUE_ + 175:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 176:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_PLLVCO_OUTPUT(__VALUE__) ((UTILS_PLLVCO_OUTPUT_MIN <= (__VALUE__)) && ((__VALUE + 177:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 178:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_PLL_FREQUENCY(__VALUE__) ((LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTA + 179:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTA + 180:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE3)) + 181:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 182:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_HSE_BYPASS(__STATE__) (((__STATE__) == LL_UTILS_HSEBYPASS_ON) \ + 183:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** || ((__STATE__) == LL_UTILS_HSEBYPASS_OFF)) + 184:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 185:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** #define IS_LL_UTILS_HSE_FREQUENCY(__FREQUENCY__) (((__FREQUENCY__) >= UTILS_HSE_FREQUENCY_MIN) && ( + 186:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 187:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @} + 188:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 189:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Private function prototypes -----------------------------------------------*/ + 190:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** @defgroup UTILS_LL_Private_Functions UTILS Private functions + 191:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @{ + 192:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 193:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** static uint32_t UTILS_GetPLLOutputFrequency(uint32_t PLL_InputFrequency, + 194:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct); + 195:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** static ErrorStatus UTILS_EnablePLLAndSwitchSystem(uint32_t SYSCLK_Frequency, LL_UTILS_ClkInitTypeDe + 196:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** static ErrorStatus UTILS_PLL_IsBusy(void); + 197:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 198:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @} + 199:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 200:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 201:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Exported functions --------------------------------------------------------*/ + 202:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** @addtogroup UTILS_LL_Exported_Functions + ARM GAS /tmp/ccLtUKRp.s page 5 + + + 203:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @{ + 204:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 205:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 206:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** @addtogroup UTILS_LL_EF_DELAY + 207:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @{ + 208:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 209:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 210:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 211:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief This function configures the Cortex-M SysTick source to have 1ms time base. + 212:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @note When a RTOS is used, it is recommended to avoid changing the Systick + 213:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * configuration by calling this function, for a delay use rather osDelay RTOS service. + 214:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param HCLKFrequency HCLK frequency in Hz + 215:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @note HCLK frequency can be calculated thanks to RCC helper macro or function @ref LL_RCC_Get + 216:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @retval None + 217:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 218:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** void LL_Init1msTick(uint32_t HCLKFrequency) + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 220:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Use frequency provided in argument */ + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_InitTick(HCLKFrequency, 1000U); + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 223:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 224:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 225:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief This function provides accurate delay (in milliseconds) based + 226:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * on SysTick counter flag + 227:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @note When a RTOS is used, it is recommended to avoid using blocking delay + 228:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * and use rather osDelay service. + 229:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @note To respect 1ms timebase, user should call @ref LL_Init1msTick function which + 230:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * will configure Systick to 1ms + 231:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param Delay specifies the delay time length, in milliseconds. + 232:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @retval None + 233:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 234:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** void LL_mDelay(uint32_t Delay) + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** __IO uint32_t tmp = SysTick->CTRL; /* Clear the COUNTFLAG first */ + 237:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Add this code to indicate that local variable is not used */ + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ((void)tmp); + 239:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 240:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Add a period to guaranty minimum wait */ + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(Delay < LL_MAX_DELAY) + 242:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** Delay++; + 244:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 245:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (Delay) + 247:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0U) + 249:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** Delay--; + 251:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 252:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 254:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 255:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 256:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @} + 257:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 258:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 259:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** @addtogroup UTILS_EF_SYSTEM + ARM GAS /tmp/ccLtUKRp.s page 6 + + + 260:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief System Configuration functions + 261:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * + 262:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** @verbatim + 263:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** =============================================================================== + 264:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ##### System Configuration functions ##### + 265:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** =============================================================================== + 266:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** [..] + 267:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** System, AHB and APB buses clocks configuration + 268:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 269:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (+) The maximum frequency of the SYSCLK, HCLK, PCLK1 and PCLK2 is 216000000 Hz. + 270:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** @endverbatim + 271:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** @internal + 272:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** Depending on the device voltage range, the maximum frequency should be + 273:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** adapted accordingly: + 274:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) +-------------------------------------------------------------------------------- + 275:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) | Wait states | HCLK clock frequency (MHz) + 276:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) | |--------------------------------------------------------------- + 277:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) | (Latency) | voltage range | voltage range | voltage range | + 278:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) | | 2.7V - 3.6V | 2.4V - 2.7V | 2.1V - 2.7V | + 279:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |----------------|-------------------|-------------------|-------------------|--- + 280:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |0WS(1CPU cycle) | 0 < HCLK <= 30 | 0 < HCLK <= 24 | 0 < HCLK <= 22 | + 281:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |----------------|-------------------|-------------------|-------------------|--- + 282:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |1WS(2CPU cycle) | 30 < HCLK <= 60 | 24 < HCLK <= 48 | 22 < HCLK <= 44 | 2 + 283:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |----------------|-------------------|-------------------|-------------------|--- + 284:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |2WS(3CPU cycle) | 60 < HCLK <= 90 | 48 < HCLK <= 72 | 44 < HCLK <= 66 | 4 + 285:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |----------------|-------------------|-------------------|-------------------|--- + 286:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |3WS(4CPU cycle) | 90 < HCLK <= 120 | 72 < HCLK <= 96 | 66 < HCLK <= 88 | 6 + 287:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |----------------|-------------------|-------------------|-------------------|--- + 288:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |4WS(5CPU cycle) | 120 < HCLK <= 150 | 96 < HCLK <= 120 | 88 < HCLK <= 110 | 8 + 289:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |----------------|-------------------|-------------------|-------------------|--- + 290:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |5WS(6CPU cycle) | 150 < HCLK <= 180 | 120 < HCLK <= 144 | 110 < HCLK <= 132 | 10 + 291:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |----------------|-------------------|-------------------|-------------------|--- + 292:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |6WS(7CPU cycle) | 180 < HCLK <= 210 | 144 < HCLK <= 168 | 132 < HCLK <= 154 | 12 + 293:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |----------------|-------------------|-------------------|-------------------|--- + 294:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |7WS(8CPU cycle) | 210 < HCLK <= 216 | 168 < HCLK <= 192 | 154 < HCLK <= 176 | 14 + 295:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |----------------|-------------------|-------------------|-------------------|--- + 296:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |8WS(9CPU cycle) | -- | 192 < HCLK <= 216 | 176 < HCLK <= 198 | 16 + 297:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |----------------|-------------------|-------------------|-------------------|--- + 298:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) |9WS(10CPU cycle)| -- | -- | 198 < HCLK <= 216 | + 299:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** (++) +-------------------------------------------------------------------------------- + 300:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 301:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** @endinternal + 302:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @{ + 303:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 304:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 305:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 306:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief This function sets directly SystemCoreClock CMSIS variable. + 307:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @note Variable can be calculated also through SystemCoreClockUpdate function. + 308:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro) + 309:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @retval None + 310:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 311:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** void LL_SetSystemCoreClock(uint32_t HCLKFrequency) + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 313:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* HCLK clock frequency */ + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** SystemCoreClock = HCLKFrequency; + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 316:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + ARM GAS /tmp/ccLtUKRp.s page 7 + + + 317:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 318:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief Update number of Flash wait states in line with new frequency and current + 319:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** voltage range. + 320:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @note This Function support ONLY devices with supply voltage (voltage range) between 2.7V and + 321:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param HCLK_Frequency HCLK frequency + 322:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @retval An ErrorStatus enumeration value: + 323:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - SUCCESS: Latency has been modified + 324:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - ERROR: Latency cannot be modified + 325:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 326:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus LL_SetFlashLatency(uint32_t HCLK_Frequency) + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t timeout; + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t getlatency; + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t latency = LL_FLASH_LATENCY_0; /* default value 0WS */ + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 332:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 333:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Frequency cannot be equal to 0 */ + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(HCLK_Frequency == 0U) + 335:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = ERROR; + 337:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 338:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else + 339:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE1) + 341:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(LL_PWR_IsEnabledOverDriveMode() != 0U) + 343:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(HCLK_Frequency > UTILS_SCALE1_LATENCY7_FREQ) + 345:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 346:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 210 < HCLK <= 216 => 7WS (8 CPU cycles) */ + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_7; + 348:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 349:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else /* (HCLK_Frequency > UTILS_SCALE1_LATENCY6_FREQ) */ + 350:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 351:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 180 < HCLK <= 210 => 6WS (7 CPU cycles) */ + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_6; + 353:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 354:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if((HCLK_Frequency > UTILS_SCALE1_LATENCY5_FREQ) && (latency == LL_FLASH_LATENCY_0)) + 356:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 357:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 150 < HCLK <= 180 => 5WS (6 CPU cycles) */ + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_5; + 359:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else if((HCLK_Frequency > UTILS_SCALE1_LATENCY4_FREQ) && (latency == LL_FLASH_LATENCY_0)) + 361:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 362:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 120 < HCLK <= 150 => 4WS (5 CPU cycles) */ + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_4; + 364:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else if((HCLK_Frequency > UTILS_SCALE1_LATENCY3_FREQ) && (latency == LL_FLASH_LATENCY_0)) + 366:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 367:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 90 < HCLK <= 120 => 3WS (4 CPU cycles) */ + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_3; + 369:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else if((HCLK_Frequency > UTILS_SCALE1_LATENCY2_FREQ) && (latency == LL_FLASH_LATENCY_0)) + 371:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 372:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 60 < HCLK <= 90 => 2WS (3 CPU cycles) */ + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_2; + ARM GAS /tmp/ccLtUKRp.s page 8 + + + 374:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 375:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else + 376:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if((HCLK_Frequency > UTILS_SCALE1_LATENCY1_FREQ) && (latency == LL_FLASH_LATENCY_0)) + 378:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 379:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 30 < HCLK <= 60 => 1WS (2 CPU cycles) */ + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_1; + 381:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 382:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* else HCLK_Frequency < 30MHz default LL_FLASH_LATENCY_0 0WS */ + 383:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 384:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else if(LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE2) + 386:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(HCLK_Frequency > UTILS_SCALE2_LATENCY5_FREQ) + 388:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 389:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 150 < HCLK <= 168 OR 150 < HCLK <= 180 (when OverDrive mode is enable) => 5WS (6 CPU cyc + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_5; + 391:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else if(HCLK_Frequency > UTILS_SCALE2_LATENCY4_FREQ) + 393:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 394:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 120 < HCLK <= 150 => 4WS (5 CPU cycles) */ + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_4; + 396:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else if(HCLK_Frequency > UTILS_SCALE2_LATENCY3_FREQ) + 398:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 399:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 90 < HCLK <= 120 => 3WS (4 CPU cycles) */ + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_3; + 401:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else if(HCLK_Frequency > UTILS_SCALE2_LATENCY2_FREQ) + 403:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 404:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 60 < HCLK <= 90 => 2WS (3 CPU cycles) */ + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_2; + 406:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 407:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else + 408:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(HCLK_Frequency > UTILS_SCALE2_LATENCY1_FREQ) + 410:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 411:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 30 < HCLK <= 60 => 1WS (2 CPU cycles) */ + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_1; + 413:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 414:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* else HCLK_Frequency < 24MHz default LL_FLASH_LATENCY_0 0WS */ + 415:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 416:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 417:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else /* Scale 3 */ + 418:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(HCLK_Frequency > UTILS_SCALE3_LATENCY4_FREQ) + 420:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 421:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 120 < HCLK <= 144 => 4WS (5 CPU cycles) */ + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_4; + 423:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else if(HCLK_Frequency > UTILS_SCALE3_LATENCY3_FREQ) + 425:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 426:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 90 < HCLK <= 120 => 3WS (4 CPU cycles) */ + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_3; + 428:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else if(HCLK_Frequency > UTILS_SCALE3_LATENCY2_FREQ) + 430:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + ARM GAS /tmp/ccLtUKRp.s page 9 + + + 431:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 60 < HCLK <= 90 => 2WS (3 CPU cycles) */ + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_2; + 433:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 434:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else + 435:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(HCLK_Frequency > UTILS_SCALE3_LATENCY1_FREQ) + 437:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 438:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* 30 < HCLK <= 60 => 1WS (2 CPU cycles) */ + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** latency = LL_FLASH_LATENCY_1; + 440:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 441:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* else HCLK_Frequency < 22MHz default LL_FLASH_LATENCY_0 0WS */ + 442:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 443:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 444:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if (status != ERROR) + 446:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_FLASH_SetLatency(latency); + 448:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 449:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Check that the new number of wait states is taken into account to access the Flash + 450:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** memory by reading the FLASH_ACR register */ + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** timeout = 2; + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** do + 453:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 454:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Wait for Flash latency to be updated */ + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** getlatency = LL_FLASH_GetLatency(); + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** timeout--; + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } while ((getlatency != latency) && (timeout > 0)); + 458:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(getlatency != latency) + 460:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = ERROR; + 462:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 463:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else + 464:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = SUCCESS; + 466:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 467:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 468:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** return status; + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 471:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 472:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 473:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief This function configures system clock at maximum frequency with HSI as clock source of + 474:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @note The application need to ensure that PLL is disabled. + 475:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @note Function is based on the following formula: + 476:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - PLL output frequency = (((HSI frequency / PLLM) * PLLN) / PLLP) + 477:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - PLLM: ensure that the VCO input frequency ranges from 0.95 to 2.1 MHz (PLLVCO_input = + 478:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - PLLN: ensure that the VCO output frequency is between 100 and 432 MHz (PLLVCO_output + 479:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - PLLP: ensure that max frequency at 216000000 Hz is reach (PLLVCO_output / PLLP) + 480:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + 481:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * the configuration information for the PLL. + 482:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + 483:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * the configuration information for the BUS prescalers. + 484:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @retval An ErrorStatus enumeration value: + 485:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - SUCCESS: Max frequency configuration done + 486:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - ERROR: Max frequency configuration not done + 487:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + ARM GAS /tmp/ccLtUKRp.s page 10 + + + 488:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + 489:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t pllfreq = 0U; + 493:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 494:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Check if one of the PLL is enabled */ + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(UTILS_PLL_IsBusy() == SUCCESS) + 496:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 497:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Calculate the new PLL output frequency */ + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** pllfreq = UTILS_GetPLLOutputFrequency(HSI_VALUE, UTILS_PLLInitStruct); + 499:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 500:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Enable HSI if not enabled */ + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(LL_RCC_HSI_IsReady() != 1U) + 502:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_HSI_Enable(); + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (LL_RCC_HSI_IsReady() != 1U) + 505:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 506:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Wait for HSI ready */ + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 508:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 509:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 510:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Configure PLL */ + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSI, UTILS_PLLInitStruct->PLLM, UTILS_PLLInitStruc + 512:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** UTILS_PLLInitStruct->PLLP); + 513:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 514:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Enable PLL and switch system clock to PLL */ + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = UTILS_EnablePLLAndSwitchSystem(pllfreq, UTILS_ClkInitStruct); + 516:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 517:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else + 518:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 519:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Current PLL configuration cannot be modified */ + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = ERROR; + 521:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 522:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** return status; + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 525:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 526:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 527:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief This function configures system clock with HSE as clock source of the PLL + 528:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @note The application need to ensure that PLL is disabled. + 529:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @note Function is based on the following formula: + 530:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - PLL output frequency = (((HSE frequency / PLLM) * PLLN) / PLLP) + 531:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - PLLM: ensure that the VCO input frequency ranges from 0.95 to 2.10 MHz (PLLVCO_input + 532:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - PLLN: ensure that the VCO output frequency is between 100 and 432 MHz (PLLVCO_output + 533:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - PLLP: ensure that max frequency at 216000000 Hz is reached (PLLVCO_output / PLLP) + 534:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param HSEFrequency Value between Min_Data = 4000000 and Max_Data = 26000000 + 535:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param HSEBypass This parameter can be one of the following values: + 536:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @arg @ref LL_UTILS_HSEBYPASS_ON + 537:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @arg @ref LL_UTILS_HSEBYPASS_OFF + 538:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + 539:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * the configuration information for the PLL. + 540:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + 541:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * the configuration information for the BUS prescalers. + 542:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @retval An ErrorStatus enumeration value: + 543:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - SUCCESS: Max frequency configuration done + 544:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - ERROR: Max frequency configuration not done + ARM GAS /tmp/ccLtUKRp.s page 11 + + + 545:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 546:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass, + 547:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_Clk + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t pllfreq = 0U; + 551:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 552:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Check the parameters */ + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_HSE_FREQUENCY(HSEFrequency)); + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_HSE_BYPASS(HSEBypass)); + 555:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 556:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Check if one of the PLL is enabled */ + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(UTILS_PLL_IsBusy() == SUCCESS) + 558:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 559:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Calculate the new PLL output frequency */ + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** pllfreq = UTILS_GetPLLOutputFrequency(HSEFrequency, UTILS_PLLInitStruct); + 561:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 562:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Enable HSE if not enabled */ + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(LL_RCC_HSE_IsReady() != 1U) + 564:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 565:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Check if need to enable HSE bypass feature or not */ + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(HSEBypass == LL_UTILS_HSEBYPASS_ON) + 567:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_HSE_EnableBypass(); + 569:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 570:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else + 571:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_HSE_DisableBypass(); + 573:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 574:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 575:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Enable HSE */ + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_HSE_Enable(); + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (LL_RCC_HSE_IsReady() != 1U) + 578:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 579:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Wait for HSE ready */ + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 581:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 582:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 583:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Configure PLL */ + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, UTILS_PLLInitStruct->PLLM, UTILS_PLLInitStruc + 585:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** UTILS_PLLInitStruct->PLLP); + 586:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 587:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Enable PLL and switch system clock to PLL */ + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = UTILS_EnablePLLAndSwitchSystem(pllfreq, UTILS_ClkInitStruct); + 589:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 590:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** else + 591:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 592:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Current PLL configuration cannot be modified */ + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = ERROR; + 594:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 595:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** return status; + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 598:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 599:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 600:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @} + 601:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + ARM GAS /tmp/ccLtUKRp.s page 12 + + + 602:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 603:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 604:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @} + 605:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 606:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 607:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** @addtogroup UTILS_LL_Private_Functions + 608:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @{ + 609:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 610:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 611:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief Function to check that PLL can be modified + 612:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param PLL_InputFrequency PLL input frequency (in Hz) + 613:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + 614:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * the configuration information for the PLL. + 615:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @retval PLL output frequency (in Hz) + 616:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 617:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** static uint32_t UTILS_GetPLLOutputFrequency(uint32_t PLL_InputFrequency, LL_UTILS_PLLInitTypeDef *U + 618:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 28 .loc 1 618 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 619:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t pllfreq = 0U; + 33 .loc 1 619 3 view .LVU1 + 620:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 621:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Check the parameters */ + 622:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_PLLM_VALUE(UTILS_PLLInitStruct->PLLM)); + 34 .loc 1 622 3 view .LVU2 + 623:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_PLLN_VALUE(UTILS_PLLInitStruct->PLLN)); + 35 .loc 1 623 3 view .LVU3 + 624:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_PLLP_VALUE(UTILS_PLLInitStruct->PLLP)); + 36 .loc 1 624 3 view .LVU4 + 625:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 626:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Check different PLL parameters according to RM */ + 627:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* - PLLM: ensure that the VCO input frequency ranges from 0.95 to 2.1 MHz. */ + 628:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** pllfreq = PLL_InputFrequency / (UTILS_PLLInitStruct->PLLM & (RCC_PLLCFGR_PLLM >> RCC_PLLCFGR_PLLM + 37 .loc 1 628 3 view .LVU5 + 38 .loc 1 628 54 is_stmt 0 view .LVU6 + 39 0000 0B68 ldr r3, [r1] + 40 .loc 1 628 61 view .LVU7 + 41 0002 03F03F03 and r3, r3, #63 + 42 .loc 1 628 11 view .LVU8 + 43 0006 B0FBF3F0 udiv r0, r0, r3 + 44 .LVL1: + 629:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_PLLVCO_INPUT(pllfreq)); + 45 .loc 1 629 3 is_stmt 1 view .LVU9 + 630:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 631:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* - PLLN: ensure that the VCO output frequency is between 100 and 432 MHz.*/ + 632:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** pllfreq = pllfreq * (UTILS_PLLInitStruct->PLLN & (RCC_PLLCFGR_PLLN >> RCC_PLLCFGR_PLLN_Pos)); + 46 .loc 1 632 3 view .LVU10 + 47 .loc 1 632 43 is_stmt 0 view .LVU11 + 48 000a 4B68 ldr r3, [r1, #4] + 49 .loc 1 632 50 view .LVU12 + 50 000c C3F30803 ubfx r3, r3, #0, #9 + 51 .loc 1 632 11 view .LVU13 + 52 0010 03FB00F0 mul r0, r3, r0 + 53 .LVL2: + ARM GAS /tmp/ccLtUKRp.s page 13 + + + 633:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_PLLVCO_OUTPUT(pllfreq)); + 54 .loc 1 633 3 is_stmt 1 view .LVU14 + 634:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 635:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* - PLLP: ensure that max frequency at 216000000 Hz is reached */ + 636:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** pllfreq = pllfreq / (((UTILS_PLLInitStruct->PLLP >> RCC_PLLCFGR_PLLP_Pos) + 1) * 2); + 55 .loc 1 636 3 view .LVU15 + 56 .loc 1 636 52 is_stmt 0 view .LVU16 + 57 0014 4B89 ldrh r3, [r1, #10] + 58 .loc 1 636 77 view .LVU17 + 59 0016 0133 adds r3, r3, #1 + 60 .loc 1 636 82 view .LVU18 + 61 0018 5B00 lsls r3, r3, #1 + 62 .LVL3: + 637:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_PLL_FREQUENCY(pllfreq)); + 63 .loc 1 637 3 is_stmt 1 view .LVU19 + 638:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 639:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** return pllfreq; + 64 .loc 1 639 3 view .LVU20 + 640:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 65 .loc 1 640 1 is_stmt 0 view .LVU21 + 66 001a B0FBF3F0 udiv r0, r0, r3 + 67 .LVL4: + 68 .loc 1 640 1 view .LVU22 + 69 001e 7047 bx lr + 70 .cfi_endproc + 71 .LFE411: + 73 .section .text.UTILS_PLL_IsBusy,"ax",%progbits + 74 .align 1 + 75 .syntax unified + 76 .thumb + 77 .thumb_func + 78 .fpu fpv5-d16 + 80 UTILS_PLL_IsBusy: + 81 .LFB412: + 641:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 642:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 643:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief Function to check that PLL can be modified + 644:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @retval An ErrorStatus enumeration value: + 645:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - SUCCESS: PLL modification can be done + 646:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - ERROR: PLL is busy + 647:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 648:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** static ErrorStatus UTILS_PLL_IsBusy(void) + 649:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 82 .loc 1 649 1 is_stmt 1 view -0 + 83 .cfi_startproc + 84 @ args = 0, pretend = 0, frame = 0 + 85 @ frame_needed = 0, uses_anonymous_args = 0 + 86 @ link register save eliminated. + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 87 .loc 1 650 3 view .LVU24 + 88 .LVL5: + 651:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 652:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Check if PLL is busy*/ + 653:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(LL_RCC_PLL_IsReady() != 0U) + 89 .loc 1 653 3 view .LVU25 + 90 .LBB54: + 91 .LBI54: + ARM GAS /tmp/ccLtUKRp.s page 14 + + + 92 .file 2 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @file stm32f7xx_ll_rcc.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Header file of RCC LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * This software is licensed under terms that can be found in the LICENSE file in + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ****************************************************************************** + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #ifndef __STM32F7xx_LL_RCC_H + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __STM32F7xx_LL_RCC_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #ifdef __cplusplus + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** extern "C" { + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Includes ------------------------------------------------------------------*/ + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #include "stm32f7xx.h" + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @addtogroup STM32F7xx_LL_Driver + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC) + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL RCC + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Private types -------------------------------------------------------------*/ + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Private variables ---------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Private_Variables RCC Private Variables + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_DCKCFGR1_PLLSAIDIVR) + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** static const uint8_t aRCC_PLLSAIDIVRPrescTable[4] = {2, 4, 8, 16}; + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_DCKCFGR1_PLLSAIDIVR */ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Private constants ---------------------------------------------------------*/ + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Private macros ------------------------------------------------------------*/ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(USE_FULL_LL_DRIVER) + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Private_Macros RCC Private Macros + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + ARM GAS /tmp/ccLtUKRp.s page 15 + + + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /*USE_FULL_LL_DRIVER*/ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Exported types ------------------------------------------------------------*/ + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(USE_FULL_LL_DRIVER) + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Exported_Types RCC Exported Types + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup LL_ES_CLOCK_FREQ Clocks Frequency Structure + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief RCC Clocks Frequency Structure + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** typedef struct + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** uint32_t SYSCLK_Frequency; /*!< SYSCLK clock frequency */ + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** uint32_t HCLK_Frequency; /*!< HCLK clock frequency */ + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** uint32_t PCLK1_Frequency; /*!< PCLK1 clock frequency */ + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** uint32_t PCLK2_Frequency; /*!< PCLK2 clock frequency */ + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } LL_RCC_ClocksTypeDef; + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* USE_FULL_LL_DRIVER */ + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Exported constants --------------------------------------------------------*/ + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Exported_Constants RCC Exported Constants + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_OSC_VALUES Oscillator Values adaptation + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Defines used to adapt values of different oscillators + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note These values could be modified in the user environment according to + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * HW set-up. + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (HSE_VALUE) + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define HSE_VALUE 25000000U /*!< Value of the HSE oscillator in Hz */ + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* HSE_VALUE */ + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (HSI_VALUE) + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define HSI_VALUE 16000000U /*!< Value of the HSI oscillator in Hz */ + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* HSI_VALUE */ + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (LSE_VALUE) + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LSE_VALUE 32768U /*!< Value of the LSE oscillator in Hz */ + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* LSE_VALUE */ + ARM GAS /tmp/ccLtUKRp.s page 16 + + + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (LSI_VALUE) + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LSI_VALUE 32000U /*!< Value of the LSI oscillator in Hz */ + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* LSI_VALUE */ + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (EXTERNAL_CLOCK_VALUE) + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define EXTERNAL_CLOCK_VALUE 12288000U /*!< Value of the I2S_CKIN external oscillator in Hz */ + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* EXTERNAL_CLOCK_VALUE */ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (EXTERNAL_SAI1_CLOCK_VALUE) + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define EXTERNAL_SAI1_CLOCK_VALUE 48000U /*!< Value of the SAI1_EXTCLK external oscillator in Hz + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* EXTERNAL_SAI1_CLOCK_VALUE */ + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if !defined (EXTERNAL_SAI2_CLOCK_VALUE) + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define EXTERNAL_SAI2_CLOCK_VALUE 48000U /*!< Value of the SAI2_EXTCLK external oscillator in Hz + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* EXTERNAL_SAI2_CLOCK_VALUE */ + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_CLEAR_FLAG Clear Flags Defines + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Flags defines which can be used with LL_RCC_WriteReg function + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSIRDYC RCC_CIR_LSIRDYC /*!< LSI Ready Interrupt Clear */ + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSERDYC RCC_CIR_LSERDYC /*!< LSE Ready Interrupt Clear */ + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSIRDYC RCC_CIR_HSIRDYC /*!< HSI Ready Interrupt Clear */ + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSERDYC RCC_CIR_HSERDYC /*!< HSE Ready Interrupt Clear */ + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLRDYC RCC_CIR_PLLRDYC /*!< PLL Ready Interrupt Clear */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLI2SRDYC RCC_CIR_PLLI2SRDYC /*!< PLLI2S Ready Interrupt Clear */ + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLSAIRDYC RCC_CIR_PLLSAIRDYC /*!< PLLSAI Ready Interrupt Clear */ + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_CSSC RCC_CIR_CSSC /*!< Clock Security System Interrupt + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_GET_FLAG Get Flags Defines + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Flags defines which can be used with LL_RCC_ReadReg function + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSIRDYF RCC_CIR_LSIRDYF /*!< LSI Ready Interrupt flag */ + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSERDYF RCC_CIR_LSERDYF /*!< LSE Ready Interrupt flag */ + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSIRDYF RCC_CIR_HSIRDYF /*!< HSI Ready Interrupt flag */ + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSERDYF RCC_CIR_HSERDYF /*!< HSE Ready Interrupt flag */ + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLRDYF RCC_CIR_PLLRDYF /*!< PLL Ready Interrupt flag */ + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLI2SRDYF RCC_CIR_PLLI2SRDYF /*!< PLLI2S Ready Interrupt flag */ + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLSAIRDYF RCC_CIR_PLLSAIRDYF /*!< PLLSAI Ready Interrupt flag */ + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_CSSF RCC_CIR_CSSF /*!< Clock Security System Interrupt + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_LPWRRSTF RCC_CSR_LPWRRSTF /*!< Low-Power reset flag */ + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_PINRSTF RCC_CSR_PINRSTF /*!< PIN reset flag */ + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_PORRSTF RCC_CSR_PORRSTF /*!< POR/PDR reset flag */ + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_SFTRSTF RCC_CSR_SFTRSTF /*!< Software Reset flag */ + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_IWDGRSTF RCC_CSR_IWDGRSTF /*!< Independent Watchdog reset flag + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_WWDGRSTF RCC_CSR_WWDGRSTF /*!< Window watchdog reset flag */ + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CSR_BORRSTF RCC_CSR_BORRSTF /*!< BOR reset flag */ + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + ARM GAS /tmp/ccLtUKRp.s page 17 + + + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_IT IT Defines + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief IT defines which can be used with LL_RCC_ReadReg and LL_RCC_WriteReg functions + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSIRDYIE RCC_CIR_LSIRDYIE /*!< LSI Ready Interrupt Enable */ + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_LSERDYIE RCC_CIR_LSERDYIE /*!< LSE Ready Interrupt Enable */ + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSIRDYIE RCC_CIR_HSIRDYIE /*!< HSI Ready Interrupt Enable */ + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_HSERDYIE RCC_CIR_HSERDYIE /*!< HSE Ready Interrupt Enable */ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLRDYIE RCC_CIR_PLLRDYIE /*!< PLL Ready Interrupt Enable */ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLI2SRDYIE RCC_CIR_PLLI2SRDYIE /*!< PLLI2S Ready Interrupt Enable + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CIR_PLLSAIRDYIE RCC_CIR_PLLSAIRDYIE /*!< PLLSAI Ready Interrupt Enable + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_LSEDRIVE LSE oscillator drive capability + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LSEDRIVE_LOW 0x00000000U /*!< Xtal mode lower driving cap + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_0 /*!< Xtal mode medium high drivi + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_1 /*!< Xtal mode medium low drivin + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV /*!< Xtal mode higher driving ca + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SYS_CLKSOURCE System clock switch + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_HSI RCC_CFGR_SW_HSI /*!< HSI selection as system clock */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_HSE RCC_CFGR_SW_HSE /*!< HSE selection as system clock */ + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_PLL RCC_CFGR_SW_PLL /*!< PLL selection as system clock */ + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SYS_CLKSOURCE_STATUS System clock switch status + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */ + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */ + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYS_CLKSOURCE_STATUS_PLL RCC_CFGR_SWS_PLL /*!< PLL used as system clock */ + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SYSCLK_DIV AHB prescaler + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_1 RCC_CFGR_HPRE_DIV1 /*!< SYSCLK not divided */ + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_2 RCC_CFGR_HPRE_DIV2 /*!< SYSCLK divided by 2 */ + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_4 RCC_CFGR_HPRE_DIV4 /*!< SYSCLK divided by 4 */ + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_8 RCC_CFGR_HPRE_DIV8 /*!< SYSCLK divided by 8 */ + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_16 RCC_CFGR_HPRE_DIV16 /*!< SYSCLK divided by 16 */ + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_64 RCC_CFGR_HPRE_DIV64 /*!< SYSCLK divided by 64 */ + ARM GAS /tmp/ccLtUKRp.s page 18 + + + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_128 RCC_CFGR_HPRE_DIV128 /*!< SYSCLK divided by 128 */ + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_256 RCC_CFGR_HPRE_DIV256 /*!< SYSCLK divided by 256 */ + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SYSCLK_DIV_512 RCC_CFGR_HPRE_DIV512 /*!< SYSCLK divided by 512 */ + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_APB1_DIV APB low-speed prescaler (APB1) + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB1_DIV_1 RCC_CFGR_PPRE1_DIV1 /*!< HCLK not divided */ + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB1_DIV_2 RCC_CFGR_PPRE1_DIV2 /*!< HCLK divided by 2 */ + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB1_DIV_4 RCC_CFGR_PPRE1_DIV4 /*!< HCLK divided by 4 */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB1_DIV_8 RCC_CFGR_PPRE1_DIV8 /*!< HCLK divided by 8 */ + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB1_DIV_16 RCC_CFGR_PPRE1_DIV16 /*!< HCLK divided by 16 */ + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_APB2_DIV APB high-speed prescaler (APB2) + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB2_DIV_1 RCC_CFGR_PPRE2_DIV1 /*!< HCLK not divided */ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB2_DIV_2 RCC_CFGR_PPRE2_DIV2 /*!< HCLK divided by 2 */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB2_DIV_4 RCC_CFGR_PPRE2_DIV4 /*!< HCLK divided by 4 */ + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB2_DIV_8 RCC_CFGR_PPRE2_DIV8 /*!< HCLK divided by 8 */ + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_APB2_DIV_16 RCC_CFGR_PPRE2_DIV16 /*!< HCLK divided by 16 */ + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_MCOxSOURCE MCO source selection + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1SOURCE_HSI (uint32_t)(RCC_CFGR_MCO1|0x00000000U) + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1SOURCE_LSE (uint32_t)(RCC_CFGR_MCO1|(RCC_CFGR_MCO1_0 >> 16U)) + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1SOURCE_HSE (uint32_t)(RCC_CFGR_MCO1|(RCC_CFGR_MCO1_1 >> 16U)) + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1SOURCE_PLLCLK (uint32_t)(RCC_CFGR_MCO1|((RCC_CFGR_MCO1_1|RCC_CFGR_MCO1 + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2SOURCE_SYSCLK (uint32_t)(RCC_CFGR_MCO2|0x00000000U) + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2SOURCE_PLLI2S (uint32_t)(RCC_CFGR_MCO2|(RCC_CFGR_MCO2_0 >> 16U)) + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2SOURCE_HSE (uint32_t)(RCC_CFGR_MCO2|(RCC_CFGR_MCO2_1 >> 16U)) + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2SOURCE_PLLCLK (uint32_t)(RCC_CFGR_MCO2|((RCC_CFGR_MCO2_1|RCC_CFGR_MCO2 + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_MCOx_DIV MCO prescaler + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1_DIV_1 (uint32_t)(RCC_CFGR_MCO1PRE|0x00000000U) + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1_DIV_2 (uint32_t)(RCC_CFGR_MCO1PRE|(RCC_CFGR_MCO1PRE_2 >> 16U)) + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1_DIV_3 (uint32_t)(RCC_CFGR_MCO1PRE|((RCC_CFGR_MCO1PRE_2|RCC_CFG + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1_DIV_4 (uint32_t)(RCC_CFGR_MCO1PRE|((RCC_CFGR_MCO1PRE_2|RCC_CFG + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO1_DIV_5 (uint32_t)(RCC_CFGR_MCO1PRE|(RCC_CFGR_MCO1PRE >> 16U)) + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2_DIV_1 (uint32_t)(RCC_CFGR_MCO2PRE|0x00000000U) + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2_DIV_2 (uint32_t)(RCC_CFGR_MCO2PRE|(RCC_CFGR_MCO2PRE_2 >> 16U)) + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2_DIV_3 (uint32_t)(RCC_CFGR_MCO2PRE|((RCC_CFGR_MCO2PRE_2|RCC_CFG + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2_DIV_4 (uint32_t)(RCC_CFGR_MCO2PRE|((RCC_CFGR_MCO2PRE_2|RCC_CFG + ARM GAS /tmp/ccLtUKRp.s page 19 + + + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_MCO2_DIV_5 (uint32_t)(RCC_CFGR_MCO2PRE|(RCC_CFGR_MCO2PRE >> 16U)) + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_RTC_HSEDIV HSE prescaler for RTC clock + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_NOCLOCK 0x00000000U /*!< HSE not divided */ + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_2 RCC_CFGR_RTCPRE_1 /*!< HSE clock divided by 2 */ + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_3 (RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) /*!< HSE cl + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_4 RCC_CFGR_RTCPRE_2 /*!< HSE clock divided by 4 */ + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_5 (RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) /*!< HSE cl + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_6 (RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) /*!< HSE cl + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_7 (RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_8 RCC_CFGR_RTCPRE_3 /*!< HSE clock divided by 8 */ + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_9 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0) /*!< HSE cl + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_10 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1) /*!< HSE cl + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_11 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_12 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2) /*!< HSE cl + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_13 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_14 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_15 (RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1| + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_16 RCC_CFGR_RTCPRE_4 /*!< HSE clock divided by 16 */ + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_17 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_0) /*!< HSE cl + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_18 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1) /*!< HSE cl + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_19 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_1|RCC_CFGR_RTCPRE_0) + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_20 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2) /*!< HSE cl + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_21 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_0) + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_22 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1) + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_23 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_2|RCC_CFGR_RTCPRE_1| + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_24 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3) /*!< HSE cl + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_25 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_0) + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_26 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1) + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_27 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_1| + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_28 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2) + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_29 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2| + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_30 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2| + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_HSE_DIV_31 (RCC_CFGR_RTCPRE_4|RCC_CFGR_RTCPRE_3|RCC_CFGR_RTCPRE_2| + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(USE_FULL_LL_DRIVER) + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PERIPH_FREQUENCY Peripheral clock frequency + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PERIPH_FREQUENCY_NO 0x00000000U /*!< No clock enabled for th + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PERIPH_FREQUENCY_NA 0xFFFFFFFFU /*!< Frequency cannot be pro + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* USE_FULL_LL_DRIVER */ + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_USARTx_CLKSOURCE Peripheral USART clock source selection + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + ARM GAS /tmp/ccLtUKRp.s page 20 + + + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART1_CLKSOURCE_PCLK2 (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | 0x00000000U + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART1_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | RCC_DCKCFGR + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART1_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | RCC_DCKCFGR + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART1_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART1SEL << 16U) | RCC_DCKCFGR + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART2_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | 0x00000000U + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART2_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | RCC_DCKCFGR + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART2_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | RCC_DCKCFGR + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART2_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART2SEL << 16U) | RCC_DCKCFGR + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART3_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | 0x00000000U + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART3_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | RCC_DCKCFGR + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART3_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | RCC_DCKCFGR + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART3_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART3SEL << 16U) | RCC_DCKCFGR + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART6_CLKSOURCE_PCLK2 (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | 0x00000000U + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART6_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | RCC_DCKCFGR + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART6_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | RCC_DCKCFGR + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART6_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_USART6SEL << 16U) | RCC_DCKCFGR + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_UARTx_CLKSOURCE Peripheral UART clock source selection + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART4_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | 0x00000000U) + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART4_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | RCC_DCKCFGR2_ + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART4_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | RCC_DCKCFGR2_ + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART4_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART4SEL << 16U) | RCC_DCKCFGR2_ + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART5_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | 0x00000000U) + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART5_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | RCC_DCKCFGR2_ + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART5_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | RCC_DCKCFGR2_ + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART5_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART5SEL << 16U) | RCC_DCKCFGR2_ + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART7_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | 0x00000000U) + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART7_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | RCC_DCKCFGR2_ + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART7_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | RCC_DCKCFGR2_ + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART7_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART7SEL << 16U) | RCC_DCKCFGR2_ + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART8_CLKSOURCE_PCLK1 (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | 0x00000000U) + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART8_CLKSOURCE_SYSCLK (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | RCC_DCKCFGR2_ + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART8_CLKSOURCE_HSI (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | RCC_DCKCFGR2_ + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART8_CLKSOURCE_LSE (uint32_t)((RCC_DCKCFGR2_UART8SEL << 16U) | RCC_DCKCFGR2_ + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_I2Cx_CLKSOURCE Peripheral I2C clock source selection + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C1_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C1SEL|0x00000000U) /*!< PCLK1 + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C1_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C1SEL|(RCC_DCKCFGR2_I2C1SEL_0 + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C1_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C1SEL|(RCC_DCKCFGR2_I2C1SEL_1 + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C2_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C2SEL|0x00000000U) /*!< PCLK1 + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C2_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C2SEL|(RCC_DCKCFGR2_I2C2SEL_0 + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C2_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C2SEL|(RCC_DCKCFGR2_I2C2SEL_1 + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C3_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C3SEL|0x00000000U) /*!< PCLK1 + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C3_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C3SEL|(RCC_DCKCFGR2_I2C3SEL_0 + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C3_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C3SEL|(RCC_DCKCFGR2_I2C3SEL_1 + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(I2C4) + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C4_CLKSOURCE_PCLK1 (uint32_t)(RCC_DCKCFGR2_I2C4SEL|0x00000000U) /*!< PCLK1 + ARM GAS /tmp/ccLtUKRp.s page 21 + + + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C4_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_I2C4SEL|(RCC_DCKCFGR2_I2C4SEL_0 + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C4_CLKSOURCE_HSI (uint32_t)(RCC_DCKCFGR2_I2C4SEL|(RCC_DCKCFGR2_I2C4SEL_1 + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* I2C4 */ + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_LPTIM1_CLKSOURCE Peripheral LPTIM clock source selection + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LPTIM1_CLKSOURCE_PCLK1 0x00000000U /*!< PCLK1 clock used as LP + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LPTIM1_CLKSOURCE_LSI RCC_DCKCFGR2_LPTIM1SEL_0 /*!< LSI oscillator clock u + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LPTIM1_CLKSOURCE_HSI RCC_DCKCFGR2_LPTIM1SEL_1 /*!< HSI oscillator clock u + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LPTIM1_CLKSOURCE_LSE (uint32_t)(RCC_DCKCFGR2_LPTIM1SEL_1 | RCC_DCKCFGR2_LPTI + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SAIx_CLKSOURCE Peripheral SAI clock source selection + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI1_CLKSOURCE_PLLSAI (uint32_t)(RCC_DCKCFGR1_SAI1SEL | 0x00000000U) + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI1_CLKSOURCE_PLLI2S (uint32_t)(RCC_DCKCFGR1_SAI1SEL | (RCC_DCKCFGR1_SAI1SEL_ + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI1_CLKSOURCE_PIN (uint32_t)(RCC_DCKCFGR1_SAI1SEL | (RCC_DCKCFGR1_SAI1SEL_ + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_SAI1SEL_PLLSRC_SUPPORT) + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI1_CLKSOURCE_PLLSRC (uint32_t)(RCC_DCKCFGR1_SAI1SEL | (RCC_DCKCFGR1_SAI1SEL + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_SAI1SEL_PLLSRC_SUPPORT */ + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI2_CLKSOURCE_PLLSAI (uint32_t)(RCC_DCKCFGR1_SAI2SEL | 0x00000000U) + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI2_CLKSOURCE_PLLI2S (uint32_t)(RCC_DCKCFGR1_SAI2SEL | (RCC_DCKCFGR1_SAI2SEL_ + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI2_CLKSOURCE_PIN (uint32_t)(RCC_DCKCFGR1_SAI2SEL | (RCC_DCKCFGR1_SAI2SEL_ + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_SAI2SEL_PLLSRC_SUPPORT) + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI2_CLKSOURCE_PLLSRC (uint32_t)(RCC_DCKCFGR1_SAI2SEL | (RCC_DCKCFGR1_SAI2SEL + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_SAI2SEL_PLLSRC_SUPPORT */ + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SDMMCx_CLKSOURCE Peripheral SDMMC clock source selection + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK (uint32_t)(RCC_DCKCFGR2_SDMMC1SEL | 0x00000000U) + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC1_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_SDMMC1SEL | (RCC_DCKCFGR2_SD + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(SDMMC2) + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK (uint32_t)(RCC_DCKCFGR2_SDMMC2SEL | 0x00000000U) + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC2_CLKSOURCE_SYSCLK (uint32_t)(RCC_DCKCFGR2_SDMMC2SEL | (RCC_DCKCFGR2_SD + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* SDMMC2 */ + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_RNG_CLKSOURCE Peripheral RNG clock source selection + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RNG_CLKSOURCE_PLL 0x00000000U /*!< PLL clock used as RNG clock s + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RNG_CLKSOURCE_PLLSAI RCC_DCKCFGR2_CK48MSEL /*!< PLLSAI clock used as RNG cloc + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + ARM GAS /tmp/ccLtUKRp.s page 22 + + + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_USB_CLKSOURCE Peripheral USB clock source selection + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USB_CLKSOURCE_PLL 0x00000000U /*!< PLL clock used as USB clock s + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USB_CLKSOURCE_PLLSAI RCC_DCKCFGR2_CK48MSEL /*!< PLLSAI1 clock used as USB clo + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DSI_CLKSOURCE Peripheral DSI clock source selection + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DSI_CLKSOURCE_PHY 0x00000000U /*!< DSI-PHY clock used as DSI byte + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DSI_CLKSOURCE_PLL RCC_DCKCFGR2_DSISEL /*!< PLL clock used as DSI byte lan + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(CEC) + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_CEC_CLKSOURCE Peripheral CEC clock source selection + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CEC_CLKSOURCE_LSE 0x00000000U /*!< LSE oscillator clock + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CEC_CLKSOURCE_HSI_DIV488 RCC_DCKCFGR2_CECSEL /*!< HSI oscillator clock + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* CEC */ + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_I2S1_CLKSOURCE Peripheral I2S clock source selection + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2S1_CLKSOURCE_PLLI2S 0x00000000U /*!< I2S oscillator clock + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2S1_CLKSOURCE_PIN RCC_CFGR_I2SSRC /*!< External pin clock u + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_CK48M_CLKSOURCE Peripheral 48Mhz domain clock source selection + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CK48M_CLKSOURCE_PLL 0x00000000U /*!< PLL oscillator clock + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CK48M_CLKSOURCE_PLLSAI RCC_DCKCFGR2_CK48MSEL /*!< PLLSAI oscillator cl + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DFSDM1_Channel0) + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DFSDM1_AUDIO_CLKSOURCE Peripheral DFSDM Audio clock source selection + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 0x00000000U /*!< SAI1 clock used as D + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2 RCC_DCKCFGR1_ADFSDM1SEL /*!< SAI2 clock used as D + ARM GAS /tmp/ccLtUKRp.s page 23 + + + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DFSDM1_CLKSOURCE Peripheral DFSDM clock source selection + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_CLKSOURCE_PCLK2 0x00000000U /*!< PCLK2 clock used as + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_CLKSOURCE_SYSCLK RCC_DCKCFGR1_DFSDM1SEL /*!< System clock used as + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DFSDM1_Channel0 */ + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_USARTx Peripheral USART get clock source + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART1_CLKSOURCE RCC_DCKCFGR2_USART1SEL /*!< USART1 Clock source selectio + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART2_CLKSOURCE RCC_DCKCFGR2_USART2SEL /*!< USART2 Clock source selectio + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART3_CLKSOURCE RCC_DCKCFGR2_USART3SEL /*!< USART3 Clock source selectio + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USART6_CLKSOURCE RCC_DCKCFGR2_USART6SEL /*!< USART6 Clock source selectio + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_UARTx Peripheral UART get clock source + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART4_CLKSOURCE RCC_DCKCFGR2_UART4SEL /*!< UART4 Clock source selection + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART5_CLKSOURCE RCC_DCKCFGR2_UART5SEL /*!< UART5 Clock source selection + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART7_CLKSOURCE RCC_DCKCFGR2_UART7SEL /*!< UART7 Clock source selection + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_UART8_CLKSOURCE RCC_DCKCFGR2_UART8SEL /*!< UART8 Clock source selection + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_I2Cx Peripheral I2C get clock source + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C1_CLKSOURCE RCC_DCKCFGR2_I2C1SEL /*!< I2C1 Clock source selection * + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C2_CLKSOURCE RCC_DCKCFGR2_I2C2SEL /*!< I2C2 Clock source selection * + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C3_CLKSOURCE RCC_DCKCFGR2_I2C3SEL /*!< I2C3 Clock source selection * + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(I2C4) + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2C4_CLKSOURCE RCC_DCKCFGR2_I2C4SEL /*!< I2C4 Clock source selection * + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* I2C4 */ + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_LPTIM1 Peripheral LPTIM get clock source + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LPTIM1_CLKSOURCE RCC_DCKCFGR2_LPTIM1SEL /*!< LPTIM1 Clock source selectio + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + ARM GAS /tmp/ccLtUKRp.s page 24 + + + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SAIx Peripheral SAI get clock source + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI1_CLKSOURCE RCC_DCKCFGR1_SAI1SEL /*!< SAI1 Clock source selection */ + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SAI2_CLKSOURCE RCC_DCKCFGR1_SAI2SEL /*!< SAI2 Clock source selection */ + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SDMMCx Peripheral SDMMC get clock source + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC1_CLKSOURCE RCC_DCKCFGR2_SDMMC1SEL /*!< SDMMC1 Clock source selectio + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(SDMMC2) + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SDMMC2_CLKSOURCE RCC_DCKCFGR2_SDMMC2SEL /*!< SDMMC2 Clock source selectio + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* SDMMC2 */ + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_CK48M Peripheral CK48M get clock source + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CK48M_CLKSOURCE RCC_DCKCFGR2_CK48MSEL /*!< CK48M Domain clock source sel + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_RNG Peripheral RNG get clock source + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RNG_CLKSOURCE RCC_DCKCFGR2_CK48MSEL /*!< RNG Clock source selection */ + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_USB Peripheral USB get clock source + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_USB_CLKSOURCE RCC_DCKCFGR2_CK48MSEL /*!< USB Clock source selection */ + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(CEC) + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_CEC Peripheral CEC get clock source + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_CEC_CLKSOURCE RCC_DCKCFGR2_CECSEL /*!< CEC Clock source selection */ + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* CEC */ + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_I2S1 Peripheral I2S get clock source + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + ARM GAS /tmp/ccLtUKRp.s page 25 + + + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_I2S1_CLKSOURCE RCC_CFGR_I2SSRC /*!< I2S Clock source selection */ + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DFSDM1_Channel0) + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DFSDM_AUDIO Peripheral DFSDM Audio get clock source + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_AUDIO_CLKSOURCE RCC_DCKCFGR1_ADFSDM1SEL /*!< DFSDM Audio Clock source se + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DFSDM Peripheral DFSDM get clock source + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DFSDM1_CLKSOURCE RCC_DCKCFGR1_DFSDM1SEL /*!< DFSDM Clock source selection + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DFSDM1_Channel0 */ + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_DSI Peripheral DSI get clock source + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_DSI_CLKSOURCE RCC_DCKCFGR2_DSISEL /*!< DSI Clock source selection */ + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(LTDC) + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_LTDC Peripheral LTDC get clock source + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_LTDC_CLKSOURCE RCC_DCKCFGR1_PLLSAIDIVR /*!< LTDC Clock source selection + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* LTDC */ + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(SPDIFRX) + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_SPDIFRX Peripheral SPDIFRX get clock source + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SPDIFRX1_CLKSOURCE RCC_PLLI2SCFGR_PLLI2SP /*!< SPDIFRX Clock source select + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* SPDIFRX */ + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_RTC_CLKSOURCE RTC clock source selection + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_CLKSOURCE_NONE 0x00000000U /*!< No clock used as RTC clock + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_CLKSOURCE_LSE RCC_BDCR_RTCSEL_0 /*!< LSE oscillator clock used a + ARM GAS /tmp/ccLtUKRp.s page 26 + + + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_CLKSOURCE_LSI RCC_BDCR_RTCSEL_1 /*!< LSI oscillator clock used a + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_RTC_CLKSOURCE_HSE RCC_BDCR_RTCSEL /*!< HSE oscillator clock divide + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_TIM_CLKPRESCALER Timers clocks prescalers selection + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_TIM_PRESCALER_TWICE 0x00000000U /*!< Timers clock to twice + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_TIM_PRESCALER_FOUR_TIMES RCC_DCKCFGR1_TIMPRE /*!< Timers clock to four + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSOURCE PLL, PLLI2S and PLLSAI entry clock source + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI /*!< HSI16 clock selected as PLL + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE /*!< HSE clock selected as PLL e + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLM_DIV PLL, PLLI2S and PLLSAI division factor + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_2 (RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI2S and PLLSAI divisio + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_3 (RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_4 (RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI2S and PLLSAI divisio + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_5 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_6 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_7 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_P + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_8 (RCC_PLLCFGR_PLLM_3) /*!< PLL, PLLI2S and PLLSAI divisio + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_9 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_10 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_11 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_P + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_12 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_13 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_14 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_15 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_16 (RCC_PLLCFGR_PLLM_4) /*!< PLL, PLLI2S and PLLSAI divisio + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_17 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_18 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_19 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_P + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_20 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_21 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_22 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_23 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_24 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3) /*!< PLL, PLLI + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_25 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_26 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_27 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_28 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_29 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_30 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_31 (RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + ARM GAS /tmp/ccLtUKRp.s page 27 + + + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_32 (RCC_PLLCFGR_PLLM_5) /*!< PLL, PLLI2S and PLLSAI divisio + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_33 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_0) /*!< PLL, PLLI + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_34 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_1) /*!< PLL, PLLI + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_35 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_P + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_36 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2) /*!< PLL, PLLI + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_37 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_38 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_39 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_P + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_40 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3) /*!< PLL, PLLI + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_41 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_42 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_43 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_44 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_45 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_46 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_47 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_P + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_48 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4) /*!< PLL, PLLI + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_49 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_50 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_51 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_52 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_53 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_54 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_55 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_56 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_57 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_58 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_59 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_60 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_61 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_62 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLM_DIV_63 (RCC_PLLCFGR_PLLM_5 | RCC_PLLCFGR_PLLM_4 | RCC_PLLCFGR_P + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLCFGR_PLLR) + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLR_DIV PLL division factor (PLLR) + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_2 (RCC_PLLCFGR_PLLR_1) /*!< Main PLL d + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_3 (RCC_PLLCFGR_PLLR_1|RCC_PLLCFGR_PLLR_0) /*!< Main PLL d + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_4 (RCC_PLLCFGR_PLLR_2) /*!< Main PLL d + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_5 (RCC_PLLCFGR_PLLR_2|RCC_PLLCFGR_PLLR_0) /*!< Main PLL d + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_6 (RCC_PLLCFGR_PLLR_2|RCC_PLLCFGR_PLLR_1) /*!< Main PLL d + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLR_DIV_7 (RCC_PLLCFGR_PLLR) /*!< Main PLL d + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLCFGR_PLLR */ + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLP_DIV PLL division factor (PLLP) + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLP_DIV_2 0x00000000U /*!< Main PLL division factor for + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLP_DIV_4 RCC_PLLCFGR_PLLP_0 /*!< Main PLL division factor for + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLP_DIV_6 RCC_PLLCFGR_PLLP_1 /*!< Main PLL division factor for + ARM GAS /tmp/ccLtUKRp.s page 28 + + + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLP_DIV_8 (RCC_PLLCFGR_PLLP_1 | RCC_PLLCFGR_PLLP_0) /*!< Main PL + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLQ_DIV PLL division factor (PLLQ) + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_2 RCC_PLLCFGR_PLLQ_1 /*!< Main PLL di + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_3 (RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL di + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_4 RCC_PLLCFGR_PLLQ_2 /*!< Main PLL di + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_5 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL di + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_6 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_1) /*!< Main PLL di + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_7 (RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_ + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_8 RCC_PLLCFGR_PLLQ_3 /*!< Main PLL di + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_9 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_0) /*!< Main PLL di + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_10 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_1) /*!< Main PLL di + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_11 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_1|RCC_PLLCFGR_PLLQ_ + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_12 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2) /*!< Main PLL di + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_13 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_ + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_14 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_ + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLQ_DIV_15 (RCC_PLLCFGR_PLLQ_3|RCC_PLLCFGR_PLLQ_2|RCC_PLLCFGR_PLLQ_ + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLL_SPRE_SEL PLL Spread Spectrum Selection + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SPREAD_SELECT_CENTER 0x00000000U /*!< PLL center spread spe + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_SPREAD_SELECT_DOWN RCC_SSCGR_SPREADSEL /*!< PLL down spread spect + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLI2SQ PLLI2SQ division factor (PLLI2SQ) + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_2 RCC_PLLI2SCFGR_PLLI2SQ_1 /*!< PLLI2S division fact + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_3 (RCC_PLLI2SCFGR_PLLI2SQ_1 | RCC_PLLI2SCFGR_PLLI2SQ_0) + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_4 RCC_PLLI2SCFGR_PLLI2SQ_2 /*!< PLLI2S division fact + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_5 (RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_0) + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_6 (RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_1) + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_7 (RCC_PLLI2SCFGR_PLLI2SQ_2 | RCC_PLLI2SCFGR_PLLI2SQ_1 | RC + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_8 RCC_PLLI2SCFGR_PLLI2SQ_3 /*!< PLLI2S division fact + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_9 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_0) + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_10 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_1) + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_11 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_1 | RC + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_12 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2) + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_13 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RC + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_14 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RC + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SQ_DIV_15 (RCC_PLLI2SCFGR_PLLI2SQ_3 | RCC_PLLI2SCFGR_PLLI2SQ_2 | RC + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLI2SDIVQ PLLI2SDIVQ division factor (PLLI2SDIVQ) + ARM GAS /tmp/ccLtUKRp.s page 29 + + + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_1 0x00000000U /*!< PLLI2S division f + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_2 RCC_DCKCFGR1_PLLI2SDIVQ_0 /*!< PLLI2S division f + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_3 RCC_DCKCFGR1_PLLI2SDIVQ_1 /*!< PLLI2S division f + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_4 (RCC_DCKCFGR1_PLLI2SDIVQ_1 | RCC_DCKCFGR1_PLLI2SDIVQ_0) + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_5 RCC_DCKCFGR1_PLLI2SDIVQ_2 /*!< PLLI2S division f + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_6 (RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_0) + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_7 (RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1) + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_8 (RCC_DCKCFGR1_PLLI2SDIVQ_2 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_9 RCC_DCKCFGR1_PLLI2SDIVQ_3 /*!< PLLI2S division f + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_10 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_0) + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_11 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_1) + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_12 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_13 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2) + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_14 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_15 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_16 (RCC_DCKCFGR1_PLLI2SDIVQ_3 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_17 RCC_DCKCFGR1_PLLI2SDIVQ_4 /*!< PLLI2S division f + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_18 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_0) + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_19 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_1) + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_20 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_1 | + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_21 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2) + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_22 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_23 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_24 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_2 | + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_25 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3) + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_26 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_27 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_28 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_29 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_30 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_31 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SDIVQ_DIV_32 (RCC_DCKCFGR1_PLLI2SDIVQ_4 | RCC_DCKCFGR1_PLLI2SDIVQ_3 | + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLI2SR PLLI2SR division factor (PLLI2SR) + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_2 RCC_PLLI2SCFGR_PLLI2SR_1 + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_3 (RCC_PLLI2SCFGR_PLLI2SR_1 | RCC_PLLI2SCFGR_PLLI2SR_0) + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_4 RCC_PLLI2SCFGR_PLLI2SR_2 + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_5 (RCC_PLLI2SCFGR_PLLI2SR_2 | RCC_PLLI2SCFGR_PLLI2SR_0) + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_6 (RCC_PLLI2SCFGR_PLLI2SR_2 | RCC_PLLI2SCFGR_PLLI2SR_1) + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SR_DIV_7 (RCC_PLLI2SCFGR_PLLI2SR_2 | RCC_PLLI2SCFGR_PLLI2SR_1 | RC + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLI2SCFGR_PLLI2SP) + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLI2SP PLLI2SP division factor (PLLI2SP) + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SP_DIV_2 0x00000000U /*!< PLLI2S division factor for PL + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SP_DIV_4 RCC_PLLI2SCFGR_PLLI2SP_0 /*!< PLLI2S division fact + ARM GAS /tmp/ccLtUKRp.s page 30 + + + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SP_DIV_6 RCC_PLLI2SCFGR_PLLI2SP_1 /*!< PLLI2S division fact + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLI2SP_DIV_8 (RCC_PLLI2SCFGR_PLLI2SP_1 | RCC_PLLI2SCFGR_PLLI2SP_0) + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLI2SCFGR_PLLI2SP */ + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSAIQ PLLSAIQ division factor (PLLSAIQ) + 920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_2 RCC_PLLSAICFGR_PLLSAIQ_1 /*!< PLLSAI division fact + 923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_3 (RCC_PLLSAICFGR_PLLSAIQ_1 | RCC_PLLSAICFGR_PLLSAIQ_0) + 924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_4 RCC_PLLSAICFGR_PLLSAIQ_2 /*!< PLLSAI division fact + 925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_5 (RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_0) + 926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_6 (RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_1) + 927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_7 (RCC_PLLSAICFGR_PLLSAIQ_2 | RCC_PLLSAICFGR_PLLSAIQ_1 | RC + 928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_8 RCC_PLLSAICFGR_PLLSAIQ_3 /*!< PLLSAI division fact + 929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_9 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_0) + 930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_10 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_1) + 931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_11 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_1 | RC + 932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_12 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2) + 933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_13 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2 | RC + 934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_14 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2 | RC + 935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIQ_DIV_15 (RCC_PLLSAICFGR_PLLSAIQ_3 | RCC_PLLSAICFGR_PLLSAIQ_2 | RC + 936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSAIDIVQ PLLSAIDIVQ division factor (PLLSAIDIVQ) + 941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_1 0x00000000U /*!< PLLSAI division factor for + 944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_2 RCC_DCKCFGR1_PLLSAIDIVQ_0 /*!< PLLSAI division f + 945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_3 RCC_DCKCFGR1_PLLSAIDIVQ_1 /*!< PLLSAI division f + 946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_4 (RCC_DCKCFGR1_PLLSAIDIVQ_1 | RCC_DCKCFGR1_PLLSAIDIVQ_0) + 947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_5 RCC_DCKCFGR1_PLLSAIDIVQ_2 /*!< PLLSAI division f + 948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_6 (RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_0) + 949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_7 (RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1) + 950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_8 (RCC_DCKCFGR1_PLLSAIDIVQ_2 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | + 951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_9 RCC_DCKCFGR1_PLLSAIDIVQ_3 /*!< PLLSAI division f + 952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_10 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_0) + 953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_11 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_1) + 954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_12 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | + 955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_13 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2) + 956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_14 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_15 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_16 (RCC_DCKCFGR1_PLLSAIDIVQ_3 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_17 RCC_DCKCFGR1_PLLSAIDIVQ_4 /*!< PLLSAI division fa + 960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_18 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_0) + 961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_19 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_1) + 962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_20 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_1 | + 963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_21 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2) + 964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_22 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_23 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_24 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_2 | + 967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_25 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3) + 968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_26 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + ARM GAS /tmp/ccLtUKRp.s page 31 + + + 969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_27 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_28 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_29 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_30 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_31 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVQ_DIV_32 (RCC_DCKCFGR1_PLLSAIDIVQ_4 | RCC_DCKCFGR1_PLLSAIDIVQ_3 | + 975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLSAICFGR_PLLSAIR) + 980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSAIR PLLSAIR division factor (PLLSAIR) + 981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_2 RCC_PLLSAICFGR_PLLSAIR_1 + 984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_3 (RCC_PLLSAICFGR_PLLSAIR_1 | RCC_PLLSAICFGR_PLLSAIR_0) + 985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_4 RCC_PLLSAICFGR_PLLSAIR_2 + 986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_5 (RCC_PLLSAICFGR_PLLSAIR_2 | RCC_PLLSAICFGR_PLLSAIR_0) + 987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_6 (RCC_PLLSAICFGR_PLLSAIR_2 | RCC_PLLSAICFGR_PLLSAIR_1) + 988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIR_DIV_7 (RCC_PLLSAICFGR_PLLSAIR_2 | RCC_PLLSAICFGR_PLLSAIR_1 | RC + 989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + 990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} + 991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLSAICFGR_PLLSAIR */ + 993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_DCKCFGR1_PLLSAIDIVR) + 995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSAIDIVR PLLSAIDIVR division factor (PLLSAIDIVR) + 996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ + 997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + 998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVR_DIV_2 0x00000000U /*!< PLLSAI division factor for P + 999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVR_DIV_4 RCC_DCKCFGR1_PLLSAIDIVR_0 /*!< PLLSAI division fac +1000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVR_DIV_8 RCC_DCKCFGR1_PLLSAIDIVR_1 /*!< PLLSAI division fac +1001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIDIVR_DIV_16 (RCC_DCKCFGR1_PLLSAIDIVR_1 | RCC_DCKCFGR1_PLLSAIDIVR_0) +1002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_DCKCFGR1_PLLSAIDIVR */ +1006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EC_PLLSAIP PLLSAIP division factor (PLLSAIP) +1008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIP_DIV_2 0x00000000U /*!< PLLSAI division factor for +1011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIP_DIV_4 RCC_PLLSAICFGR_PLLSAIP_0 /*!< PLLSAI division fact +1012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIP_DIV_6 RCC_PLLSAICFGR_PLLSAIP_1 /*!< PLLSAI division fact +1013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_PLLSAIP_DIV_8 (RCC_PLLSAICFGR_PLLSAIP_1 | RCC_PLLSAICFGR_PLLSAIP_0) +1014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Exported macro ------------------------------------------------------------*/ +1023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Exported_Macros RCC Exported Macros +1024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + ARM GAS /tmp/ccLtUKRp.s page 32 + + +1026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EM_WRITE_READ Common Write and read registers Macros +1028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Write a value in RCC register +1033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __REG__ Register to be written +1034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __VALUE__ Value to be written in the register +1035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_WriteReg(__REG__, __VALUE__) WRITE_REG(RCC->__REG__, (__VALUE__)) +1038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Read a value in RCC register +1041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __REG__ Register to be read +1042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Register value +1043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define LL_RCC_ReadReg(__REG__) READ_REG(RCC->__REG__) +1045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EM_CALC_FREQ Calculate frequencies +1050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLCLK frequency on system domain +1055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLCLK_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetP ()); +1057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 + ARM GAS /tmp/ccLtUKRp.s page 33 + + +1083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLN__ Between 50 and 432 +1122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLP__ This parameter can be one of the following values: +1123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_2 +1124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_4 +1125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_6 +1126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_8 +1127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLL clock frequency (in Hz) +1128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLCLK_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLP__) ((__INPUTFREQ__) / ( +1130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((((__PLLP__) >> RCC_PLLCFGR_PLLP_Pos ) + 1U) * 2U)) +1131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLCLK frequency used on 48M domain +1134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLCLK_48M_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetQ ()); +1136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 + ARM GAS /tmp/ccLtUKRp.s page 34 + + +1140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 + ARM GAS /tmp/ccLtUKRp.s page 35 + + +1197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLN__ Between 50 and 432 +1201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLQ__ This parameter can be one of the following values: +1202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_2 +1203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_3 +1204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_4 +1205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_5 +1206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_6 +1207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_7 +1208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_8 +1209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_9 +1210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_10 +1211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_11 +1212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_12 +1213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_13 +1214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_14 +1215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_15 +1216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLL clock frequency (in Hz) +1217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLCLK_48M_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLQ__) ((__INPUTFREQ__) +1219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((__PLLQ__) >> RCC_PLLCFGR_PLLQ_Pos )) +1220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) +1222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLCLK frequency used on DSI +1224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLCLK_DSI_FREQ (HSE_VALUE, @ref LL_RCC_PLL_GetDivider (), +1225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetR ()); +1226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 + ARM GAS /tmp/ccLtUKRp.s page 36 + + +1254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLN__ Between 50 and 432 +1291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLR__ This parameter can be one of the following values: +1292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_2 +1293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_3 +1294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_4 +1295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_5 +1296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_6 +1297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_7 +1298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLL clock frequency (in Hz) +1299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLCLK_DSI_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLR__) ((__INPUTFREQ__) +1301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((__PLLR__) >> RCC_PLLCFGR_PLLR_Pos )) +1302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ +1303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLSAI frequency used for SAI1 and SAI2 domains +1306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLSAI_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLSAI_GetN (), @ref LL_RCC_PLLSAI_GetQ (), @ref LL_RCC_PLLSAI_GetDIVQ +1308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 + ARM GAS /tmp/ccLtUKRp.s page 37 + + +1311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 + ARM GAS /tmp/ccLtUKRp.s page 38 + + +1368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIN__ Between 50 and 432 +1373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIQ__ This parameter can be one of the following values: +1374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_2 +1375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_3 +1376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_4 +1377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_5 +1378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_6 +1379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_7 +1380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_8 +1381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_9 +1382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_10 +1383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_11 +1384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_12 +1385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_13 +1386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_14 +1387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIQ_DIV_15 +1388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIDIVQ__ This parameter can be one of the following values: +1389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_1 +1390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_2 +1391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_3 +1392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_4 +1393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_5 +1394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_6 +1395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_7 +1396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_8 +1397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_9 +1398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_10 +1399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_11 +1400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_12 +1401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_13 +1402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_14 +1403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_15 +1404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_16 +1405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_17 +1406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_18 +1407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_19 +1408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_20 +1409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_21 +1410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_22 +1411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_23 +1412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_24 +1413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_25 +1414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_26 +1415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_27 +1416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_28 +1417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_29 +1418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_30 +1419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_31 +1420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVQ_DIV_32 +1421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLSAI clock frequency (in Hz) +1422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLSAI_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAIN__, __PLLSAIQ__, __PLLSAIDI +1424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** (((__PLLSAIQ__) >> RCC_PLLSAICFGR_PLLSAIQ_Pos) * (((__PLLSAIDIVQ__) >> RCC_DCKCF + ARM GAS /tmp/ccLtUKRp.s page 39 + + +1425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLSAI frequency used on 48Mhz domain +1428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLSAI_48M_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLSAI_GetN (), @ref LL_RCC_PLLSAI_GetP ()); +1430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 + ARM GAS /tmp/ccLtUKRp.s page 40 + + +1482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIN__ Between 50 and 432 +1495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIP__ This parameter can be one of the following values: +1496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_2 +1497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_4 +1498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_6 +1499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIP_DIV_8 +1500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLSAI clock frequency (in Hz) +1501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLSAI_48M_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAIN__, __PLLSAIP__) (((__INPUT +1503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((((__PLLSAIP__) >> RCC_PLLSAICFGR_PLLSAIP_Pos) + 1U ) * 2U)) +1504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(LTDC) +1506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLSAI frequency used for LTDC domain +1508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLSAI_LTDC_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLSAI_GetN (), @ref LL_RCC_PLLSAI_GetR (), @ref LL_RCC_PLLSAI_GetDIVR +1510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 + ARM GAS /tmp/ccLtUKRp.s page 41 + + +1539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIN__ Between 50 and 432 +1575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIR__ This parameter can be one of the following values: +1576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_2 +1577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_3 +1578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_4 +1579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_5 +1580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_6 +1581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIR_DIV_7 +1582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLSAIDIVR__ This parameter can be one of the following values: +1583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_2 +1584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_4 +1585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_8 +1586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSAIDIVR_DIV_16 +1587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLSAI clock frequency (in Hz) +1588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLSAI_LTDC_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAIN__, __PLLSAIR__, __PLLSAID +1590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** (((__PLLSAIR__) >> RCC_PLLSAICFGR_PLLSAIR_Pos) * (aRCC_PLLSAIDIVRPrescTable[(__P +1591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* LTDC */ +1592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLI2S frequency used for SAI1 and SAI2 domains +1595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLI2S_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + ARM GAS /tmp/ccLtUKRp.s page 42 + + +1596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLI2S_GetN (), @ref LL_RCC_PLLI2S_GetQ (), @ref LL_RCC_PLLI2S_GetDIVQ +1597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 + ARM GAS /tmp/ccLtUKRp.s page 43 + + +1653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SN__ Between 50 and 432 +1662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SQ__ This parameter can be one of the following values: +1663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_2 +1664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_3 +1665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_4 +1666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_5 +1667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_6 +1668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_7 +1669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_8 +1670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_9 +1671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_10 +1672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_11 +1673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_12 +1674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_13 +1675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_14 +1676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_15 +1677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SDIVQ__ This parameter can be one of the following values: +1678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_1 +1679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_2 +1680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_3 +1681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_4 +1682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_5 +1683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_6 +1684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_7 +1685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_8 +1686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_9 +1687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_10 +1688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_11 +1689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_12 +1690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_13 +1691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_14 +1692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_15 +1693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_16 +1694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_17 +1695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_18 +1696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_19 +1697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_20 +1698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_21 +1699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_22 +1700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_23 +1701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_24 +1702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_25 +1703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_26 +1704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_27 +1705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_28 +1706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_29 +1707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_30 +1708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_31 +1709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_32 + ARM GAS /tmp/ccLtUKRp.s page 44 + + +1710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLI2S clock frequency (in Hz) +1711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLI2S_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLI2SN__, __PLLI2SQ__, __PLLI2SDI +1713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** (((__PLLI2SQ__) >> RCC_PLLI2SCFGR_PLLI2SQ_Pos) * (((__PLLI2SDIVQ__) >> RCC_DCKCF +1714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(SPDIFRX) +1716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLI2S frequency used on SPDIFRX domain +1718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLI2S_SPDIFRX_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLI2S_GetN (), @ref LL_RCC_PLLI2S_GetP ()); +1720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +1744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 + ARM GAS /tmp/ccLtUKRp.s page 45 + + +1767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SN__ Between 50 and 432 +1785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SP__ This parameter can be one of the following values: +1786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_2 +1787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_4 +1788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_6 +1789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_8 +1790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLI2S clock frequency (in Hz) +1791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLI2S_SPDIFRX_FREQ(__INPUTFREQ__, __PLLM__, __PLLI2SN__, __PLLI2SP__) (((__I +1793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((((__PLLI2SP__) >> RCC_PLLI2SCFGR_PLLI2SP_Pos) + 1U) * 2U)) +1794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* SPDIFRX */ +1795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PLLI2S frequency used for I2S domain +1798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note ex: @ref __LL_RCC_CALC_PLLI2S_I2S_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), +1799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @ref LL_RCC_PLLI2S_GetN (), @ref LL_RCC_PLLI2S_GetR ()); +1800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI) +1801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLM__ This parameter can be one of the following values: +1802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +1803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +1804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +1805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +1806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +1807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +1808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +1809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +1810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +1811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +1812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +1813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +1814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +1815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +1816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +1817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +1818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +1819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +1820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +1821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +1822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +1823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 + ARM GAS /tmp/ccLtUKRp.s page 46 + + +1824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +1825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +1826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +1827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +1828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +1829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +1830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +1831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +1832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +1833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +1834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +1835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +1836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +1837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +1838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +1839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +1840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +1841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +1842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +1843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +1844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +1845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +1846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +1847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +1848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +1849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +1850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +1851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +1852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +1853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +1854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +1855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +1856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +1857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +1858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +1859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +1860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +1861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +1862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +1863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +1864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SN__ Between 50 and 432 +1865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __PLLI2SR__ This parameter can be one of the following values: +1866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_2 +1867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_3 +1868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_4 +1869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_5 +1870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_6 +1871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_7 +1872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PLLI2S clock frequency (in Hz) +1873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PLLI2S_I2S_FREQ(__INPUTFREQ__, __PLLM__, __PLLI2SN__, __PLLI2SR__) (((__INPUT +1875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** ((__PLLI2SR__) >> RCC_PLLI2SCFGR_PLLI2SR_Pos)) +1876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the HCLK frequency +1879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __SYSCLKFREQ__ SYSCLK frequency (based on HSE/HSI/PLLCLK) +1880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __AHBPRESCALER__ This parameter can be one of the following values: + ARM GAS /tmp/ccLtUKRp.s page 47 + + +1881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_1 +1882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_2 +1883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_4 +1884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_8 +1885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_16 +1886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_64 +1887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_128 +1888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_256 +1889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_512 +1890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval HCLK clock frequency (in Hz) +1891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_HCLK_FREQ(__SYSCLKFREQ__, __AHBPRESCALER__) ((__SYSCLKFREQ__) >> AHBPrescTabl +1893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PCLK1 frequency (ABP1) +1896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __HCLKFREQ__ HCLK frequency +1897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __APB1PRESCALER__ This parameter can be one of the following values: +1898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_1 +1899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_2 +1900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_4 +1901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_8 +1902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_16 +1903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PCLK1 clock frequency (in Hz) +1904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PCLK1_FREQ(__HCLKFREQ__, __APB1PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[ +1906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Helper macro to calculate the PCLK2 frequency (ABP2) +1909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __HCLKFREQ__ HCLK frequency +1910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param __APB2PRESCALER__ This parameter can be one of the following values: +1911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_1 +1912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_2 +1913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_4 +1914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_8 +1915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_16 +1916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval PCLK2 clock frequency (in Hz) +1917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #define __LL_RCC_CALC_PCLK2_FREQ(__HCLKFREQ__, __APB2PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[ +1919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /* Exported functions --------------------------------------------------------*/ +1929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_Exported_Functions RCC Exported Functions +1930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_HSE HSE +1934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +1935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + ARM GAS /tmp/ccLtUKRp.s page 48 + + +1938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable the Clock Security System. +1939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR CSSON LL_RCC_HSE_EnableCSS +1940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSE_EnableCSS(void) +1943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_CSSON); +1945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable HSE external oscillator (HSE Bypass) +1949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSEBYP LL_RCC_HSE_EnableBypass +1950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSE_EnableBypass(void) +1953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_HSEBYP); +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable HSE external oscillator (HSE Bypass) +1959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSEBYP LL_RCC_HSE_DisableBypass +1960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSE_DisableBypass(void) +1963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); +1965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable HSE crystal oscillator (HSE ON) +1969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSEON LL_RCC_HSE_Enable +1970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSE_Enable(void) +1973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_HSEON); +1975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable HSE crystal oscillator (HSE ON) +1979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSEON LL_RCC_HSE_Disable +1980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +1981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSE_Disable(void) +1983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_HSEON); +1985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if HSE oscillator Ready +1989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSERDY LL_RCC_HSE_IsReady +1990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +1991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void) +1993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY)); + ARM GAS /tmp/ccLtUKRp.s page 49 + + +1995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +1996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +1997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +1998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +1999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_HSI HSI +2002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable HSI oscillator +2007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSION LL_RCC_HSI_Enable +2008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSI_Enable(void) +2011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_HSION); +2013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable HSI oscillator +2017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSION LL_RCC_HSI_Disable +2018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSI_Disable(void) +2021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_HSION); +2023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if HSI clock is ready +2027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSIRDY LL_RCC_HSI_IsReady +2028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +2029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void) +2031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY)); +2033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get HSI Calibration value +2037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note When HSITRIM is written, HSICAL is updated with the sum of +2038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * HSITRIM and the factory trim value +2039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSICAL LL_RCC_HSI_GetCalibration +2040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between Min_Data = 0x00 and Max_Data = 0xFF +2041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibration(void) +2043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_HSICAL) >> RCC_CR_HSICAL_Pos); +2045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set HSI Calibration trimming +2049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note user-programmable trimming value that is added to the HSICAL +2050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note Default value is 16, which, when added to the HSICAL value, +2051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * should trim the HSI to 16 MHz +/- 1 % + ARM GAS /tmp/ccLtUKRp.s page 50 + + +2052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSITRIM LL_RCC_HSI_SetCalibTrimming +2053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Value Between Min_Data = 0 and Max_Data = 31 +2054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value) +2057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CR, RCC_CR_HSITRIM, Value << RCC_CR_HSITRIM_Pos); +2059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get HSI Calibration trimming +2063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR HSITRIM LL_RCC_HSI_GetCalibTrimming +2064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between Min_Data = 0 and Max_Data = 31 +2065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibTrimming(void) +2067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos); +2069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_LSE LSE +2076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable Low Speed External (LSE) crystal. +2081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEON LL_RCC_LSE_Enable +2082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSE_Enable(void) +2085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); +2087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable Low Speed External (LSE) crystal. +2091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEON LL_RCC_LSE_Disable +2092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSE_Disable(void) +2095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); +2097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable external clock source (LSE bypass). +2101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEBYP LL_RCC_LSE_EnableBypass +2102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSE_EnableBypass(void) +2105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +2107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + ARM GAS /tmp/ccLtUKRp.s page 51 + + +2109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable external clock source (LSE bypass). +2111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEBYP LL_RCC_LSE_DisableBypass +2112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSE_DisableBypass(void) +2115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +2117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set LSE oscillator drive capability +2121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note The oscillator is in Xtal mode when it is not in bypass mode. +2122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEDRV LL_RCC_LSE_SetDriveCapability +2123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param LSEDrive This parameter can be one of the following values: +2124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_LOW +2125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH +2126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW +2127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_HIGH +2128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSE_SetDriveCapability(uint32_t LSEDrive) +2131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, LSEDrive); +2133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get LSE oscillator drive capability +2137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSEDRV LL_RCC_LSE_GetDriveCapability +2138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_LOW +2140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH +2141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW +2142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LSEDRIVE_HIGH +2143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_LSE_GetDriveCapability(void) +2145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_LSEDRV)); +2147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if LSE oscillator Ready +2151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR LSERDY LL_RCC_LSE_IsReady +2152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +2153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void) +2155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY)); +2157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_LSI LSI +2164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + ARM GAS /tmp/ccLtUKRp.s page 52 + + +2166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable LSI Oscillator +2169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CSR LSION LL_RCC_LSI_Enable +2170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSI_Enable(void) +2173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CSR, RCC_CSR_LSION); +2175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable LSI Oscillator +2179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CSR LSION LL_RCC_LSI_Disable +2180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_LSI_Disable(void) +2183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); +2185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if LSI is Ready +2189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CSR LSIRDY LL_RCC_LSI_IsReady +2190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +2191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void) +2193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY)); +2195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_System System +2202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure the system clock source +2207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR SW LL_RCC_SetSysClkSource +2208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_HSI +2210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE +2211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL +2212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source) +2215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); +2217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get the system clock source +2221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR SWS LL_RCC_GetSysClkSource +2222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: + ARM GAS /tmp/ccLtUKRp.s page 53 + + +2223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI +2224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE +2225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL +2226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void) +2228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); +2230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set AHB prescaler +2234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR HPRE LL_RCC_SetAHBPrescaler +2235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Prescaler This parameter can be one of the following values: +2236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_1 +2237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_2 +2238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_4 +2239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_8 +2240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_16 +2241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_64 +2242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_128 +2243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_256 +2244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_512 +2245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler) +2248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, Prescaler); +2250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set APB1 prescaler +2254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR PPRE1 LL_RCC_SetAPB1Prescaler +2255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Prescaler This parameter can be one of the following values: +2256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_1 +2257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_2 +2258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_4 +2259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_8 +2260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_16 +2261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler) +2264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, Prescaler); +2266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set APB2 prescaler +2270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR PPRE2 LL_RCC_SetAPB2Prescaler +2271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Prescaler This parameter can be one of the following values: +2272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_1 +2273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_2 +2274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_4 +2275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_8 +2276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_16 +2277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler) + ARM GAS /tmp/ccLtUKRp.s page 54 + + +2280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, Prescaler); +2282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get AHB prescaler +2286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR HPRE LL_RCC_GetAHBPrescaler +2287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_1 +2289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_2 +2290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_4 +2291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_8 +2292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_16 +2293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_64 +2294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_128 +2295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_256 +2296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SYSCLK_DIV_512 +2297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void) +2299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HPRE)); +2301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get APB1 prescaler +2305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR PPRE1 LL_RCC_GetAPB1Prescaler +2306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_1 +2308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_2 +2309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_4 +2310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_8 +2311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB1_DIV_16 +2312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void) +2314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1)); +2316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get APB2 prescaler +2320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR PPRE2 LL_RCC_GetAPB2Prescaler +2321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_1 +2323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_2 +2324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_4 +2325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_8 +2326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_APB2_DIV_16 +2327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetAPB2Prescaler(void) +2329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2)); +2331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + ARM GAS /tmp/ccLtUKRp.s page 55 + + +2337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_MCO MCO +2338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure MCOx +2343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR MCO1 LL_RCC_ConfigMCO\n +2344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * CFGR MCO1PRE LL_RCC_ConfigMCO\n +2345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * CFGR MCO2 LL_RCC_ConfigMCO\n +2346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * CFGR MCO2PRE LL_RCC_ConfigMCO +2347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param MCOxSource This parameter can be one of the following values: +2348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1SOURCE_HSI +2349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1SOURCE_LSE +2350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1SOURCE_HSE +2351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1SOURCE_PLLCLK +2352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2SOURCE_SYSCLK +2353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2SOURCE_PLLI2S +2354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2SOURCE_HSE +2355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2SOURCE_PLLCLK +2356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param MCOxPrescaler This parameter can be one of the following values: +2357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1_DIV_1 +2358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1_DIV_2 +2359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1_DIV_3 +2360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1_DIV_4 +2361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO1_DIV_5 +2362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2_DIV_1 +2363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2_DIV_2 +2364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2_DIV_3 +2365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2_DIV_4 +2366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_MCO2_DIV_5 +2367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_ConfigMCO(uint32_t MCOxSource, uint32_t MCOxPrescaler) +2370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, (MCOxSource & 0xFFFF0000U) | (MCOxPrescaler & 0xFFFF0000U), (MCOxSource << +2372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_Peripheral_Clock_Source Peripheral Clock Source +2379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure USARTx clock source +2384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 USART1SEL LL_RCC_SetUSARTClockSource\n +2385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART2SEL LL_RCC_SetUSARTClockSource\n +2386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART3SEL LL_RCC_SetUSARTClockSource\n +2387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART6SEL LL_RCC_SetUSARTClockSource +2388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param USARTxSource This parameter can be one of the following values: +2389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_PCLK2 +2390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_SYSCLK +2391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_HSI +2392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_LSE +2393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_PCLK1 + ARM GAS /tmp/ccLtUKRp.s page 56 + + +2394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_SYSCLK +2395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_HSI +2396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_LSE +2397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_PCLK1 +2398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_SYSCLK +2399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_HSI +2400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_LSE +2401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_PCLK2 +2402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_SYSCLK +2403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_HSI +2404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_LSE +2405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetUSARTClockSource(uint32_t USARTxSource) +2408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, (USARTxSource >> 16U), (USARTxSource & 0x0000FFFFU)); +2410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure UARTx clock source +2414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 UART4SEL LL_RCC_SetUARTClockSource\n +2415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART5SEL LL_RCC_SetUARTClockSource\n +2416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART7SEL LL_RCC_SetUARTClockSource\n +2417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART8SEL LL_RCC_SetUARTClockSource +2418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param UARTxSource This parameter can be one of the following values: +2419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_PCLK1 +2420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_SYSCLK +2421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_HSI +2422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_LSE +2423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_PCLK1 +2424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_SYSCLK +2425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_HSI +2426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_LSE +2427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_PCLK1 +2428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_SYSCLK +2429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_HSI +2430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_LSE +2431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_PCLK1 +2432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_SYSCLK +2433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_HSI +2434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_LSE +2435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetUARTClockSource(uint32_t UARTxSource) +2438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, (UARTxSource >> 16U), (UARTxSource & 0x0000FFFFU)); +2440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure I2Cx clock source +2444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 I2C1SEL LL_RCC_SetI2CClockSource\n +2445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C2SEL LL_RCC_SetI2CClockSource\n +2446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C3SEL LL_RCC_SetI2CClockSource\n +2447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C4SEL LL_RCC_SetI2CClockSource +2448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param I2CxSource This parameter can be one of the following values: +2449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_PCLK1 +2450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_SYSCLK + ARM GAS /tmp/ccLtUKRp.s page 57 + + +2451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_HSI +2452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_PCLK1 +2453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_SYSCLK +2454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_HSI +2455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_PCLK1 +2456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_SYSCLK +2457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_HSI +2458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK1 (*) +2459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_SYSCLK (*) +2460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI (*) +2461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetI2CClockSource(uint32_t I2CxSource) +2466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, (I2CxSource & 0xFFFF0000U), (I2CxSource << 16U)); +2468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure LPTIMx clock source +2472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 LPTIM1SEL LL_RCC_SetLPTIMClockSource +2473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param LPTIMxSource This parameter can be one of the following values: +2474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 +2475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI +2476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_HSI +2477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE +2478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetLPTIMClockSource(uint32_t LPTIMxSource) +2481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_LPTIM1SEL, LPTIMxSource); +2483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure SAIx clock source +2487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 SAI1SEL LL_RCC_SetSAIClockSource\n +2488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR1 SAI2SEL LL_RCC_SetSAIClockSource +2489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param SAIxSource This parameter can be one of the following values: +2490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSAI +2491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLI2S +2492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PIN +2493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSRC (*) +2494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSAI +2495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLI2S +2496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PIN +2497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSRC (*) +2498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetSAIClockSource(uint32_t SAIxSource) +2503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, (SAIxSource & 0xFFFF0000U), (SAIxSource << 16U)); +2505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + ARM GAS /tmp/ccLtUKRp.s page 58 + + +2508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure SDMMC clock source +2509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 SDMMC1SEL LL_RCC_SetSDMMCClockSource\n +2510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 SDMMC2SEL LL_RCC_SetSDMMCClockSource +2511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param SDMMCxSource This parameter can be one of the following values: +2512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK +2513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_SYSCLK +2514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK (*) +2515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_SYSCLK (*) +2516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetSDMMCClockSource(uint32_t SDMMCxSource) +2521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, (SDMMCxSource & 0xFFFF0000U), (SDMMCxSource << 16U)); +2523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure 48Mhz domain clock source +2527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_SetCK48MClockSource +2528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param CK48MxSource This parameter can be one of the following values: +2529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLL +2530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLLSAI +2531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetCK48MClockSource(uint32_t CK48MxSource) +2534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, CK48MxSource); +2536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure RNG clock source +2540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_SetRNGClockSource +2541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param RNGxSource This parameter can be one of the following values: +2542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL +2543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RNG_CLKSOURCE_PLLSAI +2544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetRNGClockSource(uint32_t RNGxSource) +2547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, RNGxSource); +2549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure USB clock source +2553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_SetUSBClockSource +2554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param USBxSource This parameter can be one of the following values: +2555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USB_CLKSOURCE_PLL +2556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USB_CLKSOURCE_PLLSAI +2557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetUSBClockSource(uint32_t USBxSource) +2560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CK48MSEL, USBxSource); +2562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(CEC) + ARM GAS /tmp/ccLtUKRp.s page 59 + + +2565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure CEC clock source +2567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CECSEL LL_RCC_SetCECClockSource +2568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE +2570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CEC_CLKSOURCE_HSI_DIV488 +2571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetCECClockSource(uint32_t Source) +2574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_CECSEL, Source); +2576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* CEC */ +2578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure I2S clock source +2581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR I2SSRC LL_RCC_SetI2SClockSource +2582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2S1_CLKSOURCE_PLLI2S +2584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2S1_CLKSOURCE_PIN +2585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetI2SClockSource(uint32_t Source) +2588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_I2SSRC, Source); +2590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) +2593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure DSI clock source +2595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 DSISEL LL_RCC_SetDSIClockSource +2596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY +2598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL +2599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetDSIClockSource(uint32_t Source) +2602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR2, RCC_DCKCFGR2_DSISEL, Source); +2604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ +2606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DFSDM1_Channel0) +2608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure DFSDM Audio clock source +2610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 ADFSDM1SEL LL_RCC_SetDFSDMAudioClockSource +2611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 +2613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2 +2614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetDFSDMAudioClockSource(uint32_t Source) +2617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_ADFSDM1SEL, Source); +2619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + ARM GAS /tmp/ccLtUKRp.s page 60 + + +2622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure DFSDM Kernel clock source +2623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 DFSDM1SEL LL_RCC_SetDFSDMClockSource +2624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2 +2626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK +2627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetDFSDMClockSource(uint32_t Source) +2630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_DFSDM1SEL, Source); +2632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DFSDM1_Channel0 */ +2634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get USARTx clock source +2637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 USART1SEL LL_RCC_GetUSARTClockSource\n +2638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART2SEL LL_RCC_GetUSARTClockSource\n +2639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART3SEL LL_RCC_GetUSARTClockSource\n +2640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 USART6SEL LL_RCC_GetUSARTClockSource +2641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param USARTx This parameter can be one of the following values: +2642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE +2643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE +2644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE +2645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE +2646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_PCLK2 +2648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_SYSCLK +2649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_HSI +2650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART1_CLKSOURCE_LSE +2651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_PCLK1 +2652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_SYSCLK +2653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_HSI +2654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART2_CLKSOURCE_LSE +2655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_PCLK1 +2656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_SYSCLK +2657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_HSI +2658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART3_CLKSOURCE_LSE +2659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_PCLK2 +2660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_SYSCLK +2661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_HSI +2662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USART6_CLKSOURCE_LSE +2663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetUSARTClockSource(uint32_t USARTx) +2665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, USARTx) | (USARTx << 16U)); +2667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get UARTx clock source +2671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 UART4SEL LL_RCC_GetUARTClockSource\n +2672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART5SEL LL_RCC_GetUARTClockSource\n +2673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART7SEL LL_RCC_GetUARTClockSource\n +2674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 UART8SEL LL_RCC_GetUARTClockSource +2675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param UARTx This parameter can be one of the following values: +2676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE +2677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE +2678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE + ARM GAS /tmp/ccLtUKRp.s page 61 + + +2679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE +2680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_PCLK1 +2682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_SYSCLK +2683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_HSI +2684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART4_CLKSOURCE_LSE +2685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_PCLK1 +2686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_SYSCLK +2687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_HSI +2688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART5_CLKSOURCE_LSE +2689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_PCLK1 +2690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_SYSCLK +2691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_HSI +2692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART7_CLKSOURCE_LSE +2693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_PCLK1 +2694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_SYSCLK +2695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_HSI +2696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_UART8_CLKSOURCE_LSE +2697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetUARTClockSource(uint32_t UARTx) +2699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, UARTx) | (UARTx << 16U)); +2701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2Cx clock source +2705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 I2C1SEL LL_RCC_GetI2CClockSource\n +2706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C2SEL LL_RCC_GetI2CClockSource\n +2707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C3SEL LL_RCC_GetI2CClockSource\n +2708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 I2C4SEL LL_RCC_GetI2CClockSource +2709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param I2Cx This parameter can be one of the following values: +2710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE +2711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE +2712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE +2713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE (*) +2714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_PCLK1 +2716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_SYSCLK +2717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C1_CLKSOURCE_HSI +2718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_PCLK1 +2719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_SYSCLK +2720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C2_CLKSOURCE_HSI +2721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_PCLK1 +2722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_SYSCLK +2723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C3_CLKSOURCE_HSI +2724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK1 (*) +2725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_SYSCLK (*) +2726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI (*) +2727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetI2CClockSource(uint32_t I2Cx) +2731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)((READ_BIT(RCC->DCKCFGR2, I2Cx) >> 16U) | I2Cx); +2733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + ARM GAS /tmp/ccLtUKRp.s page 62 + + +2736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get LPTIMx clock source +2737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 LPTIM1SEL LL_RCC_GetLPTIMClockSource +2738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param LPTIMx This parameter can be one of the following values: +2739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE +2740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 +2742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI +2743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_HSI +2744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE +2745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetLPTIMClockSource(uint32_t LPTIMx) +2747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, RCC_DCKCFGR2_LPTIM1SEL)); +2749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get SAIx clock source +2753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 SAI1SEL LL_RCC_GetSAIClockSource\n +2754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR1 SAI2SEL LL_RCC_GetSAIClockSource +2755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param SAIx This parameter can be one of the following values: +2756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE +2757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE +2758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSAI +2760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLI2S +2761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PIN +2762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSRC (*) +2763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSAI +2764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLI2S +2765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PIN +2766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSRC (*) +2767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetSAIClockSource(uint32_t SAIx) +2771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, SAIx) >> 16U | SAIx); +2773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get SDMMCx clock source +2777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 SDMMC1SEL LL_RCC_GetSDMMCClockSource\n +2778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR2 SDMMC2SEL LL_RCC_GetSDMMCClockSource +2779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param SDMMCx This parameter can be one of the following values: +2780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE +2781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE (*) +2782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_PLL48CLK +2784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_SYSCLK +2785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_PLL48CLK (*) +2786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SDMMC2_CLKSOURCE_SYSCLK (*) +2787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * +2788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * (*) value not defined in all devices. +2789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetSDMMCClockSource(uint32_t SDMMCx) +2791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, SDMMCx) >> 16U | SDMMCx); + ARM GAS /tmp/ccLtUKRp.s page 63 + + +2793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get 48Mhz domain clock source +2797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_GetCK48MClockSource +2798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param CK48Mx This parameter can be one of the following values: +2799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CK48M_CLKSOURCE +2800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLL +2802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CK48M_CLKSOURCE_PLLSAI +2803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetCK48MClockSource(uint32_t CK48Mx) +2805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, CK48Mx)); +2807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get RNGx clock source +2811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_GetRNGClockSource +2812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param RNGx This parameter can be one of the following values: +2813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RNG_CLKSOURCE +2814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL +2816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RNG_CLKSOURCE_PLLSAI +2817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetRNGClockSource(uint32_t RNGx) +2819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, RNGx)); +2821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get USBx clock source +2825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CK48MSEL LL_RCC_GetUSBClockSource +2826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param USBx This parameter can be one of the following values: +2827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USB_CLKSOURCE +2828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USB_CLKSOURCE_PLL +2830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_USB_CLKSOURCE_PLLSAI +2831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetUSBClockSource(uint32_t USBx) +2833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, USBx)); +2835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(CEC) +2838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get CEC Clock Source +2840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 CECSEL LL_RCC_GetCECClockSource +2841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param CECx This parameter can be one of the following values: +2842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CEC_CLKSOURCE +2843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CEC_CLKSOURCE_LSE +2845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_CEC_CLKSOURCE_HSI_DIV488 +2846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetCECClockSource(uint32_t CECx) +2848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, CECx)); + ARM GAS /tmp/ccLtUKRp.s page 64 + + +2850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* CEC */ +2852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2S Clock Source +2855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR I2SSRC LL_RCC_GetI2SClockSource +2856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param I2Sx This parameter can be one of the following values: +2857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2S1_CLKSOURCE +2858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2S1_CLKSOURCE_PLLI2S +2860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_I2S1_CLKSOURCE_PIN +2861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetI2SClockSource(uint32_t I2Sx) +2863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, I2Sx)); +2865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DFSDM1_Channel0) +2868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get DFSDM Audio Clock Source +2870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 ADFSDM1SEL LL_RCC_GetDFSDMAudioClockSource +2871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param DFSDMx This parameter can be one of the following values: +2872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE +2873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 +2875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI2 +2876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetDFSDMAudioClockSource(uint32_t DFSDMx) +2878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, DFSDMx)); +2880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get DFSDM Audio Clock Source +2884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 DFSDM1SEL LL_RCC_GetDFSDMClockSource +2885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param DFSDMx This parameter can be one of the following values: +2886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE +2887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2 +2889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK +2890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetDFSDMClockSource(uint32_t DFSDMx) +2892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, DFSDMx)); +2894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DFSDM1_Channel0 */ +2896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) +2898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get DSI Clock Source +2900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR2 DSISEL LL_RCC_GetDSIClockSource +2901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param DSIx This parameter can be one of the following values: +2902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DSI_CLKSOURCE +2903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY +2905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL +2906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ + ARM GAS /tmp/ccLtUKRp.s page 65 + + +2907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetDSIClockSource(uint32_t DSIx) +2908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR2, DSIx)); +2910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ +2912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +2915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_RTC RTC +2918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +2919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set RTC Clock Source +2923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note Once the RTC clock source has been selected, it cannot be changed anymore unless +2924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * the Backup domain is reset, or unless a failure is detected on LSE (LSECSSD is +2925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * set). The BDRST bit can be used to reset them. +2926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR RTCSEL LL_RCC_SetRTCClockSource +2927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +2928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE +2929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE +2930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI +2931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE +2932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetRTCClockSource(uint32_t Source) +2935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, Source); +2937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get RTC Clock Source +2941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR RTCSEL LL_RCC_GetRTCClockSource +2942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +2943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE +2944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE +2945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI +2946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE +2947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetRTCClockSource(void) +2949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)); +2951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable RTC +2955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR RTCEN LL_RCC_EnableRTC +2956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_EnableRTC(void) +2959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +2961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + ARM GAS /tmp/ccLtUKRp.s page 66 + + +2964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable RTC +2965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR RTCEN LL_RCC_DisableRTC +2966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_DisableRTC(void) +2969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +2971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if RTC has been enabled or not +2975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR RTCEN LL_RCC_IsEnabledRTC +2976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +2977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_IsEnabledRTC(void) +2979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->BDCR, RCC_BDCR_RTCEN) == (RCC_BDCR_RTCEN)); +2981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Force the Backup domain reset +2985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR BDRST LL_RCC_ForceBackupDomainReset +2986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_ForceBackupDomainReset(void) +2989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +2990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->BDCR, RCC_BDCR_BDRST); +2991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +2992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +2993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +2994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Release the Backup domain reset +2995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll BDCR BDRST LL_RCC_ReleaseBackupDomainReset +2996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +2997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +2998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_ReleaseBackupDomainReset(void) +2999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST); +3001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set HSE Prescalers for RTC Clock +3005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR RTCPRE LL_RCC_SetRTC_HSEPrescaler +3006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Prescaler This parameter can be one of the following values: +3007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_NOCLOCK +3008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_2 +3009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_3 +3010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_4 +3011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_5 +3012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_6 +3013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_7 +3014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_8 +3015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_9 +3016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_10 +3017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_11 +3018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_12 +3019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_13 +3020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_14 + ARM GAS /tmp/ccLtUKRp.s page 67 + + +3021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_15 +3022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_16 +3023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_17 +3024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_18 +3025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_19 +3026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_20 +3027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_21 +3028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_22 +3029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_23 +3030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_24 +3031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_25 +3032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_26 +3033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_27 +3034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_28 +3035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_29 +3036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_30 +3037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_31 +3038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetRTC_HSEPrescaler(uint32_t Prescaler) +3041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->CFGR, RCC_CFGR_RTCPRE, Prescaler); +3043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get HSE Prescalers for RTC Clock +3047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CFGR RTCPRE LL_RCC_GetRTC_HSEPrescaler +3048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_NOCLOCK +3050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_2 +3051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_3 +3052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_4 +3053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_5 +3054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_6 +3055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_7 +3056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_8 +3057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_9 +3058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_10 +3059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_11 +3060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_12 +3061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_13 +3062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_14 +3063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_15 +3064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_16 +3065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_17 +3066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_18 +3067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_19 +3068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_20 +3069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_21 +3070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_22 +3071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_23 +3072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_24 +3073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_25 +3074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_26 +3075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_27 +3076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_28 +3077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_29 + ARM GAS /tmp/ccLtUKRp.s page 68 + + +3078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_30 +3079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_RTC_HSE_DIV_31 +3080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetRTC_HSEPrescaler(void) +3082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_RTCPRE)); +3084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +3088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_TIM_CLOCK_PRESCALER TIM +3091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +3092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Set Timers Clock Prescalers +3096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 TIMPRE LL_RCC_SetTIMPrescaler +3097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Prescaler This parameter can be one of the following values: +3098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_TIM_PRESCALER_TWICE +3099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_TIM_PRESCALER_FOUR_TIMES +3100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_SetTIMPrescaler(uint32_t Prescaler) +3103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_TIMPRE, Prescaler); +3105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Timers Clock Prescalers +3109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 TIMPRE LL_RCC_GetTIMPrescaler +3110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_TIM_PRESCALER_TWICE +3112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_TIM_PRESCALER_FOUR_TIMES +3113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_GetTIMPrescaler(void) +3115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_TIMPRE)); +3117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +3121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_PLL PLL +3124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +3125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable PLL +3129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLON LL_RCC_PLL_Enable +3130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_Enable(void) +3133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_PLLON); + ARM GAS /tmp/ccLtUKRp.s page 69 + + +3135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable PLL +3139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note Cannot be disabled if the PLL clock is used as the system clock +3140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLON LL_RCC_PLL_Disable +3141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_Disable(void) +3144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_PLLON); +3146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if PLL Ready +3150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLRDY LL_RCC_PLL_IsReady +3151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +3152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void) + 93 .loc 2 3153 26 view .LVU26 + 94 .LBB55: +3154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == (RCC_CR_PLLRDY)); + 95 .loc 2 3155 3 view .LVU27 + 96 .loc 2 3155 11 is_stmt 0 view .LVU28 + 97 0000 0A4B ldr r3, .L9 + 98 0002 1B68 ldr r3, [r3] + 99 .LBE55: + 100 .LBE54: + 101 .loc 1 653 5 view .LVU29 + 102 0004 13F0007F tst r3, #33554432 + 103 0008 0DD1 bne .L6 + 650:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 104 .loc 1 650 15 view .LVU30 + 105 000a 0020 movs r0, #0 + 106 .L3: + 107 .LVL6: + 654:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 655:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* PLL configuration cannot be modified */ + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = ERROR; + 657:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 658:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 659:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Check if PLLSAI is busy*/ + 660:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(LL_RCC_PLLSAI_IsReady() != 0U) + 108 .loc 1 660 3 is_stmt 1 view .LVU31 + 109 .LBB56: + 110 .LBI56: +3156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLL used for SYSCLK Domain +3160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLP can be written only when PLL is disabled +3163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_SYS\n +3164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_SYS\n +3165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_SYS\n + ARM GAS /tmp/ccLtUKRp.s page 70 + + +3166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLP LL_RCC_PLL_ConfigDomain_SYS +3167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 + ARM GAS /tmp/ccLtUKRp.s page 71 + + +3223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +3234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLP This parameter can be one of the following values: +3235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_2 +3236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_4 +3237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_6 +3238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_8 +3239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SYS(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uin +3242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_P +3244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); +3245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLL used for 48Mhz domain clock +3249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLQ can be written only when PLL is disabled +3252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for USB, RNG, SDMMC1 +3253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_48M\n +3254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_48M\n +3255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_48M\n +3256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLQ LL_RCC_PLL_ConfigDomain_48M +3257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 + ARM GAS /tmp/ccLtUKRp.s page 72 + + +3280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +3324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLQ This parameter can be one of the following values: +3325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_2 +3326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_3 +3327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_4 +3328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_5 +3329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_6 +3330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_7 +3331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_8 +3332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_9 +3333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_10 +3334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_11 +3335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_12 +3336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_13 + ARM GAS /tmp/ccLtUKRp.s page 73 + + +3337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_14 +3338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_15 +3339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_ConfigDomain_48M(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uin +3342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_P +3344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLQ); +3345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(DSI) +3348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLL used for DSI clock +3350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLR can be written only when PLL is disabled +3353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for DSI +3354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_DSI\n +3355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_DSI\n +3356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_DSI\n +3357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLR LL_RCC_PLL_ConfigDomain_DSI +3358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 + ARM GAS /tmp/ccLtUKRp.s page 74 + + +3394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +3425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLR This parameter can be one of the following values: +3426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_2 +3427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_3 +3428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_4 +3429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_5 +3430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_6 +3431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_7 +3432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_ConfigDomain_DSI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uin +3435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_P +3437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLR); +3438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* DSI */ +3440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLL clock source +3443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_SetMainSource +3444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLSource This parameter can be one of the following values: +3445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_SetMainSource(uint32_t PLLSource) +3450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + ARM GAS /tmp/ccLtUKRp.s page 75 + + +3451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, PLLSource); +3452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get the oscillator used as PLL clock source. +3456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_GetMainSource +3457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetMainSource(void) +3462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC)); +3464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Main PLL multiplication factor for VCO +3468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLN LL_RCC_PLL_GetN +3469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between 50 and 432 +3470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetN(void) +3472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); +3474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Main PLL division factor for PLLP +3478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLP LL_RCC_PLL_GetP +3479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_2 +3481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_4 +3482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_6 +3483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLP_DIV_8 +3484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetP(void) +3486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP)); +3488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Main PLL division factor for PLLQ +3492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for PLL48MCLK selected for USB, RNG, SDMMC (48 MHz clock) +3493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLQ LL_RCC_PLL_GetQ +3494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_2 +3496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_3 +3497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_4 +3498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_5 +3499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_6 +3500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_7 +3501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_8 +3502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_9 +3503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_10 +3504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_11 +3505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_12 +3506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_13 +3507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_14 + ARM GAS /tmp/ccLtUKRp.s page 76 + + +3508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLQ_DIV_15 +3509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetQ(void) +3511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ)); +3513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLCFGR_PLLR) +3516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Main PLL division factor for PLLR +3518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for PLLCLK (system clock) +3519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLR LL_RCC_PLL_GetR +3520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_2 +3522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_3 +3523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_4 +3524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_5 +3525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_6 +3526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLR_DIV_7 +3527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetR(void) +3529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR)); +3531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLCFGR_PLLR */ +3533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Division factor for the main PLL and other PLL +3536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLM LL_RCC_PLL_GetDivider +3537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 + ARM GAS /tmp/ccLtUKRp.s page 77 + + +3565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetDivider(void) +3602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM)); +3604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure Spread Spectrum used for PLL +3608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note These bits must be written before enabling PLL +3609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR MODPER LL_RCC_PLL_ConfigSpreadSpectrum\n +3610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * SSCGR INCSTEP LL_RCC_PLL_ConfigSpreadSpectrum\n +3611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * SSCGR SPREADSEL LL_RCC_PLL_ConfigSpreadSpectrum +3612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Mod Between Min_Data=0 and Max_Data=8191 +3613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Inc Between Min_Data=0 and Max_Data=32767 +3614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Sel This parameter can be one of the following values: +3615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SPREAD_SELECT_CENTER +3616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SPREAD_SELECT_DOWN +3617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_ConfigSpreadSpectrum(uint32_t Mod, uint32_t Inc, uint32_t Sel) +3620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->SSCGR, RCC_SSCGR_MODPER | RCC_SSCGR_INCSTEP | RCC_SSCGR_SPREADSEL, Mod | (Inc << + ARM GAS /tmp/ccLtUKRp.s page 78 + + +3622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Spread Spectrum Modulation Period for PLL +3626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR MODPER LL_RCC_PLL_GetPeriodModulation +3627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between Min_Data=0 and Max_Data=8191 +3628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetPeriodModulation(void) +3630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->SSCGR, RCC_SSCGR_MODPER)); +3632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Spread Spectrum Incrementation Step for PLL +3636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note Must be written before enabling PLL +3637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR INCSTEP LL_RCC_PLL_GetStepIncrementation +3638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between Min_Data=0 and Max_Data=32767 +3639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetStepIncrementation(void) +3641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->SSCGR, RCC_SSCGR_INCSTEP) >> RCC_SSCGR_INCSTEP_Pos); +3643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get Spread Spectrum Selection for PLL +3647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note Must be written before enabling PLL +3648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR SPREADSEL LL_RCC_PLL_GetSpreadSelection +3649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +3650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SPREAD_SELECT_CENTER +3651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_SPREAD_SELECT_DOWN +3652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLL_GetSpreadSelection(void) +3654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->SSCGR, RCC_SSCGR_SPREADSEL)); +3656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable Spread Spectrum for PLL. +3660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR SSCGEN LL_RCC_PLL_SpreadSpectrum_Enable +3661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_SpreadSpectrum_Enable(void) +3664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->SSCGR, RCC_SSCGR_SSCGEN); +3666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable Spread Spectrum for PLL. +3670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll SSCGR SSCGEN LL_RCC_PLL_SpreadSpectrum_Disable +3671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLL_SpreadSpectrum_Disable(void) +3674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->SSCGR, RCC_SSCGR_SSCGEN); +3676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** + ARM GAS /tmp/ccLtUKRp.s page 79 + + +3679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +3680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_PLLI2S PLLI2S +3683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +3684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable PLLI2S +3688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLI2SON LL_RCC_PLLI2S_Enable +3689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLI2S_Enable(void) +3692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_PLLI2SON); +3694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable PLLI2S +3698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLI2SON LL_RCC_PLLI2S_Disable +3699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLI2S_Disable(void) +3702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_PLLI2SON); +3704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if PLLI2S Ready +3708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLI2SRDY LL_RCC_PLLI2S_IsReady +3709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +3710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_IsReady(void) +3712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CR, RCC_CR_PLLI2SRDY) == (RCC_CR_PLLI2SRDY)); +3714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLLI2S used for SAI1 and SAI2 domain clock +3718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLQ can be written only when PLLI2S is disabled +3721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for SAI1 and SAI2 +3722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLI2S_ConfigDomain_SAI\n +3723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLLI2S_ConfigDomain_SAI\n +3724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_ConfigDomain_SAI\n +3725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SQ LL_RCC_PLLI2S_ConfigDomain_SAI\n +3726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * DCKCFGR1 PLLI2SDIVQ LL_RCC_PLLI2S_ConfigDomain_SAI +3727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 + ARM GAS /tmp/ccLtUKRp.s page 80 + + +3736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 + ARM GAS /tmp/ccLtUKRp.s page 81 + + +3793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +3794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLQ This parameter can be one of the following values: +3795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_2 +3796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_3 +3797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_4 +3798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_5 +3799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_6 +3800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_7 +3801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_8 +3802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_9 +3803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_10 +3804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_11 +3805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_12 +3806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_13 +3807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_14 +3808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_15 +3809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLDIVQ This parameter can be one of the following values: +3810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_1 +3811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_2 +3812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_3 +3813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_4 +3814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_5 +3815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_6 +3816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_7 +3817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_8 +3818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_9 +3819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_10 +3820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_11 +3821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_12 +3822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_13 +3823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_14 +3824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_15 +3825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_16 +3826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_17 +3827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_18 +3828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_19 +3829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_20 +3830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_21 +3831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_22 +3832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_23 +3833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_24 +3834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_25 +3835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_26 +3836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_27 +3837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_28 +3838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_29 +3839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_30 +3840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_31 +3841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_32 +3842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLI2S_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, +3845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); +3847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN | RCC_PLLI2SCFGR_PLLI2SQ, PLLN << RCC_PLLI2SCF +3848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLI2SDIVQ, PLLDIVQ); +3849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + ARM GAS /tmp/ccLtUKRp.s page 82 + + +3850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(SPDIFRX) +3852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLLI2S used for SPDIFRX domain clock +3854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLP can be written only when PLLI2S is disabled +3857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for SPDIFRX +3858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLI2S_ConfigDomain_SPDIFRX\n +3859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLLI2S_ConfigDomain_SPDIFRX\n +3860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_ConfigDomain_SPDIFRX\n +3861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SP LL_RCC_PLLI2S_ConfigDomain_SPDIFRX +3862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 +3873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 + ARM GAS /tmp/ccLtUKRp.s page 83 + + +3907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +3909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +3910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +3911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +3912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +3913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +3914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +3915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +3916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +3917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +3918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +3919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +3920:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +3921:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +3922:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +3923:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +3924:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +3925:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +3926:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +3927:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +3928:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +3929:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLP This parameter can be one of the following values: +3930:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_2 +3931:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_4 +3932:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_6 +3933:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_8 +3934:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +3935:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +3936:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLI2S_ConfigDomain_SPDIFRX(uint32_t Source, uint32_t PLLM, uint32_t PL +3937:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +3938:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); +3939:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN | RCC_PLLI2SCFGR_PLLI2SP, PLLN << RCC_PLLI2SCF +3940:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +3941:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* SPDIFRX */ +3942:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +3943:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +3944:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Configure PLLI2S used for I2S1 domain clock +3945:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLL Source and PLLM Divider can be written only when PLL, +3946:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2S and PLLSAI are disabled +3947:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note PLLN/PLLR can be written only when PLLI2S is disabled +3948:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note This can be selected for I2S +3949:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLI2S_ConfigDomain_I2S\n +3950:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLCFGR PLLM LL_RCC_PLLI2S_ConfigDomain_I2S\n +3951:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_ConfigDomain_I2S\n +3952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * PLLI2SCFGR PLLI2SR LL_RCC_PLLI2S_ConfigDomain_I2S +3953:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param Source This parameter can be one of the following values: +3954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSI +3955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLSOURCE_HSE +3956:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLM This parameter can be one of the following values: +3957:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_2 +3958:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_3 +3959:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_4 +3960:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_5 +3961:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_6 +3962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_7 +3963:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_8 + ARM GAS /tmp/ccLtUKRp.s page 84 + + +3964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_9 +3965:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_10 +3966:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_11 +3967:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_12 +3968:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_13 +3969:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_14 +3970:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_15 +3971:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_16 +3972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_17 +3973:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_18 +3974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_19 +3975:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_20 +3976:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_21 +3977:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_22 +3978:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_23 +3979:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_24 +3980:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_25 +3981:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_26 +3982:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_27 +3983:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_28 +3984:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_29 +3985:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_30 +3986:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_31 +3987:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_32 +3988:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_33 +3989:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_34 +3990:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_35 +3991:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_36 +3992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_37 +3993:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_38 +3994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_39 +3995:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_40 +3996:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_41 +3997:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_42 +3998:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_43 +3999:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_44 +4000:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_45 +4001:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_46 +4002:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_47 +4003:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_48 +4004:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_49 +4005:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_50 +4006:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_51 +4007:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_52 +4008:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_53 +4009:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_54 +4010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_55 +4011:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_56 +4012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_57 +4013:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_58 +4014:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_59 +4015:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_60 +4016:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_61 +4017:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_62 +4018:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLM_DIV_63 +4019:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLN Between 50 and 432 +4020:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @param PLLR This parameter can be one of the following values: + ARM GAS /tmp/ccLtUKRp.s page 85 + + +4021:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_2 +4022:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_3 +4023:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_4 +4024:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_5 +4025:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_6 +4026:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_7 +4027:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +4028:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4029:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLI2S_ConfigDomain_I2S(uint32_t Source, uint32_t PLLM, uint32_t PLLN, +4030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4031:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); +4032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** MODIFY_REG(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN | RCC_PLLI2SCFGR_PLLI2SR, PLLN << RCC_PLLI2SCF +4033:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4034:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4035:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4036:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2SPLL multiplication factor for VCO +4037:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLI2SCFGR PLLI2SN LL_RCC_PLLI2S_GetN +4038:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Between 50 and 432 +4039:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4040:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetN(void) +4041:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4042:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SN) >> RCC_PLLI2SCFGR_PLLI2SN_Pos +4043:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4044:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4045:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4046:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2SPLL division factor for PLLI2SQ +4047:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLI2SCFGR PLLI2SQ LL_RCC_PLLI2S_GetQ +4048:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4049:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_2 +4050:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_3 +4051:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_4 +4052:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_5 +4053:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_6 +4054:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_7 +4055:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_8 +4056:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_9 +4057:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_10 +4058:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_11 +4059:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_12 +4060:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_13 +4061:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_14 +4062:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SQ_DIV_15 +4063:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4064:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetQ(void) +4065:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4066:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SQ)); +4067:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4068:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4069:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4070:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2SPLL division factor for PLLI2SR +4071:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for PLLI2SCLK (I2S clock) +4072:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLI2SCFGR PLLI2SR LL_RCC_PLLI2S_GetR +4073:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4074:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_2 +4075:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_3 +4076:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_4 +4077:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_5 + ARM GAS /tmp/ccLtUKRp.s page 86 + + +4078:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_6 +4079:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SR_DIV_7 +4080:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4081:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetR(void) +4082:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4083:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SR)); +4084:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4085:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4086:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #if defined(RCC_PLLI2SCFGR_PLLI2SP) +4087:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4088:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2SPLL division factor for PLLI2SP +4089:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used for PLLSPDIFRXCLK (SPDIFRX clock) +4090:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll PLLI2SCFGR PLLI2SP LL_RCC_PLLI2S_GetP +4091:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4092:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_2 +4093:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_4 +4094:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_6 +4095:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SP_DIV_8 +4096:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4097:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetP(void) +4098:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4099:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->PLLI2SCFGR, RCC_PLLI2SCFGR_PLLI2SP)); +4100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** #endif /* RCC_PLLI2SCFGR_PLLI2SP */ +4102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Get I2SPLL division factor for PLLI2SDIVQ +4105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @note used PLLSAI1CLK, PLLSAI2CLK selected (SAI1 and SAI2 clock) +4106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll DCKCFGR1 PLLI2SDIVQ LL_RCC_PLLI2S_GetDIVQ +4107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval Returned value can be one of the following values: +4108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_1 +4109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_2 +4110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_3 +4111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_4 +4112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_5 +4113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_6 +4114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_7 +4115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_8 +4116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_9 +4117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_10 +4118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_11 +4119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_12 +4120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_13 +4121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_14 +4122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_15 +4123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_16 +4124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_17 +4125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_18 +4126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_19 +4127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_20 +4128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_21 +4129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_22 +4130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_23 +4131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_24 +4132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_25 +4133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_26 +4134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_27 + ARM GAS /tmp/ccLtUKRp.s page 87 + + +4135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_28 +4136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_29 +4137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_30 +4138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_31 +4139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @arg @ref LL_RCC_PLLI2SDIVQ_DIV_32 +4140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetDIVQ(void) +4142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (uint32_t)(READ_BIT(RCC->DCKCFGR1, RCC_DCKCFGR1_PLLI2SDIVQ)); +4144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @} +4148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** @defgroup RCC_LL_EF_PLLSAI PLLSAI +4151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @{ +4152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Enable PLLSAI +4156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLSAION LL_RCC_PLLSAI_Enable +4157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +4158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLSAI_Enable(void) +4160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** SET_BIT(RCC->CR, RCC_CR_PLLSAION); +4162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Disable PLLSAI +4166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLSAION LL_RCC_PLLSAI_Disable +4167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval None +4168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE void LL_RCC_PLLSAI_Disable(void) +4170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** CLEAR_BIT(RCC->CR, RCC_CR_PLLSAION); +4172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } +4173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** +4174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** /** +4175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @brief Check if PLLSAI Ready +4176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @rmtoll CR PLLSAIRDY LL_RCC_PLLSAI_IsReady +4177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** * @retval State of bit (1 or 0). +4178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** */ +4179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** __STATIC_INLINE uint32_t LL_RCC_PLLSAI_IsReady(void) + 111 .loc 2 4179 26 view .LVU32 + 112 .LBB57: +4180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { +4181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** return (READ_BIT(RCC->CR, RCC_CR_PLLSAIRDY) == (RCC_CR_PLLSAIRDY)); + 113 .loc 2 4181 3 view .LVU33 + 114 .loc 2 4181 11 is_stmt 0 view .LVU34 + 115 000c 074B ldr r3, .L9 + 116 000e 1B68 ldr r3, [r3] + 117 .LBE57: + 118 .LBE56: + 119 .loc 1 660 5 view .LVU35 + 120 0010 13F0005F tst r3, #536870912 + ARM GAS /tmp/ccLtUKRp.s page 88 + + + 121 0014 00D0 beq .L4 + 661:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 662:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* PLLSAI1 configuration cannot be modified */ + 663:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = ERROR; + 122 .loc 1 663 12 view .LVU36 + 123 0016 0120 movs r0, #1 + 124 .LVL7: + 125 .L4: + 664:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 665:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Check if PLLI2S is busy*/ + 666:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(LL_RCC_PLLI2S_IsReady() != 0U) + 126 .loc 1 666 3 is_stmt 1 view .LVU37 + 127 .LBB58: + 128 .LBI58: +3711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 129 .loc 2 3711 26 view .LVU38 + 130 .LBB59: +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 131 .loc 2 3713 3 view .LVU39 +3713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 132 .loc 2 3713 11 is_stmt 0 view .LVU40 + 133 0018 044B ldr r3, .L9 + 134 001a 1B68 ldr r3, [r3] + 135 .LBE59: + 136 .LBE58: + 137 .loc 1 666 5 view .LVU41 + 138 001c 13F0006F tst r3, #134217728 + 139 0020 00D0 beq .L5 + 667:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 668:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* PLLI2S configuration cannot be modified */ + 669:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = ERROR; + 140 .loc 1 669 12 view .LVU42 + 141 0022 0120 movs r0, #1 + 142 .LVL8: + 143 .L5: + 670:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 671:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** return status; + 144 .loc 1 671 3 is_stmt 1 view .LVU43 + 672:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 145 .loc 1 672 1 is_stmt 0 view .LVU44 + 146 0024 7047 bx lr + 147 .LVL9: + 148 .L6: + 656:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 149 .loc 1 656 12 view .LVU45 + 150 0026 0120 movs r0, #1 + 151 0028 F0E7 b .L3 + 152 .L10: + 153 002a 00BF .align 2 + 154 .L9: + 155 002c 00380240 .word 1073887232 + 156 .cfi_endproc + 157 .LFE412: + 159 .section .text.LL_Init1msTick,"ax",%progbits + 160 .align 1 + 161 .global LL_Init1msTick + 162 .syntax unified + ARM GAS /tmp/ccLtUKRp.s page 89 + + + 163 .thumb + 164 .thumb_func + 165 .fpu fpv5-d16 + 167 LL_Init1msTick: + 168 .LVL10: + 169 .LFB405: + 219:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Use frequency provided in argument */ + 170 .loc 1 219 1 is_stmt 1 view -0 + 171 .cfi_startproc + 172 @ args = 0, pretend = 0, frame = 0 + 173 @ frame_needed = 0, uses_anonymous_args = 0 + 174 @ link register save eliminated. + 221:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 175 .loc 1 221 3 view .LVU47 + 176 .LBB60: + 177 .LBI60: + 178 .file 3 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @file stm32f7xx_ll_utils.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief Header file of UTILS LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** @verbatim + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** ============================================================================== + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** ##### How to use this driver ##### + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** ============================================================================== + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** [..] + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** The LL UTILS driver contains a set of generic APIs that can be + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** used by user: + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** (+) Device electronic signature + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** (+) Timing functions + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** (+) PLL configuration functions + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** @endverbatim + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** ****************************************************************************** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @attention + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * Copyright (c) 2017 STMicroelectronics. + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * All rights reserved. + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * This software is licensed under terms that can be found in the LICENSE file + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * in the root directory of this software component. + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** ****************************************************************************** + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #ifndef __STM32F7xx_LL_UTILS_H + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define __STM32F7xx_LL_UTILS_H + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #ifdef __cplusplus + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** extern "C" { + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #endif + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Includes ------------------------------------------------------------------*/ + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #include "stm32f7xx.h" + ARM GAS /tmp/ccLtUKRp.s page 90 + + + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @addtogroup STM32F7xx_LL_Driver + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @defgroup UTILS_LL UTILS + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Private types -------------------------------------------------------------*/ + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Private variables ---------------------------------------------------------*/ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Private constants ---------------------------------------------------------*/ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @defgroup UTILS_LL_Private_Constants UTILS Private Constants + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Max delay can be used in LL_mDelay */ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define LL_MAX_DELAY 0xFFFFFFFFU + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief Unique device ID register base address + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define UID_BASE_ADDRESS UID_BASE + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief Flash size data register base address + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define FLASHSIZE_BASE_ADDRESS FLASHSIZE_BASE + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief Package data register base address + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define PACKAGE_BASE_ADDRESS PACKAGE_BASE + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @} + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Private macros ------------------------------------------------------------*/ + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @defgroup UTILS_LL_Private_Macros UTILS Private Macros + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @} + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Exported types ------------------------------------------------------------*/ + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @defgroup UTILS_LL_ES_INIT UTILS Exported structures + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief UTILS PLL structure definition + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** typedef struct + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** { + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** uint32_t PLLM; /*!< Division factor for PLL VCO input clock. + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This parameter can be a value of @ref RCC_LL_EC_PLLM_DIV + ARM GAS /tmp/ccLtUKRp.s page 91 + + + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This feature can be modified afterwards using unitary function + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** uint32_t PLLN; /*!< Multiplication factor for PLL VCO output clock. + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This parameter must be a number between Min_Data = 50 and Max_Data = 432 + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This feature can be modified afterwards using unitary function + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** uint32_t PLLP; /*!< Division for the main system clock. + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This parameter can be a value of @ref RCC_LL_EC_PLLP_DIV + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This feature can be modified afterwards using unitary function + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** } LL_UTILS_PLLInitTypeDef; + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief UTILS System, AHB and APB buses clock configuration structure definition + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** typedef struct + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** { + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This parameter can be a value of @ref RCC_LL_EC_SYSCLK_DIV + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This feature can be modified afterwards using unitary functi + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** @ref LL_RCC_SetAHBPrescaler(). */ + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from t + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This parameter can be a value of @ref RCC_LL_EC_APB1_DIV + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This feature can be modified afterwards using unitary functi + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** @ref LL_RCC_SetAPB1Prescaler(). */ + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from t + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This parameter can be a value of @ref RCC_LL_EC_APB2_DIV + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** This feature can be modified afterwards using unitary functi + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** @ref LL_RCC_SetAPB2Prescaler(). */ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** } LL_UTILS_ClkInitTypeDef; + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @} + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Exported constants --------------------------------------------------------*/ + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @defgroup UTILS_LL_Exported_Constants UTILS Exported Constants + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @defgroup UTILS_EC_HSE_BYPASS HSE Bypass activation + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define LL_UTILS_HSEBYPASS_OFF 0x00000000U /*!< HSE Bypass is not enabled + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define LL_UTILS_HSEBYPASS_ON 0x00000001U /*!< HSE Bypass is enabled + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + ARM GAS /tmp/ccLtUKRp.s page 92 + + + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @} + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @defgroup UTILS_EC_PACKAGETYPE PACKAGE TYPE + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define LL_UTILS_PACKAGETYPE_LQFP100 0x00000100U /*!< LQFP100 package type + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define LL_UTILS_PACKAGETYPE_LQFP144_WLCSP143 0x00000200U /*!< LQFP144 or WLCSP143 packag + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define LL_UTILS_PACKAGETYPE_WLCSP180_LQFP176_UFBGA176 0x00000300U /*!< WLCSP180, LQFP176 or UFBGA + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define LL_UTILS_PACKAGETYPE_LQFP176_LQFP208_TFBGA216 0x00000400U /*!< LQFP176, LQFP208 or TFBGA2 + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define LL_UTILS_PACKAGETYPE_TFBGA216_LQFP176_LQFP208 0x00000500U /*!< LQFP176, LQFP208 or TFBGA2 + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define LL_UTILS_PACKAGETYPE_LQFP176_TFBGA216_LQFP208 0x00000600U /*!< LQFP176, LQFP208 or TFBGA2 + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** #define LL_UTILS_PACKAGETYPE_LQFP208_LQFP176_TFBGA216 0x00000700U /*!< LQFP176, LQFP208 or TFBGA2 + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @} + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @} + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Exported macro ------------------------------------------------------------*/ + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Exported functions --------------------------------------------------------*/ + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @defgroup UTILS_LL_Exported_Functions UTILS Exported Functions + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @defgroup UTILS_EF_DEVICE_ELECTRONIC_SIGNATURE DEVICE ELECTRONIC SIGNATURE + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief Get Word0 of the unique device identifier (UID based on 96 bits) + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @retval UID[31:0] + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** __STATIC_INLINE uint32_t LL_GetUID_Word0(void) + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** { + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** return (uint32_t)(READ_REG(*((uint32_t *)UID_BASE_ADDRESS))); + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** } + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief Get Word1 of the unique device identifier (UID based on 96 bits) + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @retval UID[63:32] + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** __STATIC_INLINE uint32_t LL_GetUID_Word1(void) + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** { + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 4U)))); + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** } + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief Get Word2 of the unique device identifier (UID based on 96 bits) + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @retval UID[95:64] + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** __STATIC_INLINE uint32_t LL_GetUID_Word2(void) + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** { + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 8U)))); + ARM GAS /tmp/ccLtUKRp.s page 93 + + + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** } + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief Get Flash memory size + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @note This bitfield indicates the size of the device Flash memory expressed in + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * Kbytes. As an example, 0x040 corresponds to 64 Kbytes. + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @retval FLASH_SIZE[15:0]: Flash memory size + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** __STATIC_INLINE uint32_t LL_GetFlashSize(void) + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** { + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** return (uint32_t)(READ_REG(*((uint32_t *)FLASHSIZE_BASE_ADDRESS)) & 0xFFFFU); + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** } + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief Get Package type + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @retval Returned value can be one of the following values: + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @arg @ref LL_UTILS_PACKAGETYPE_LQFP100 + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @arg @ref LL_UTILS_PACKAGETYPE_LQFP144_WLCSP143 (*) + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @arg @ref LL_UTILS_PACKAGETYPE_WLCSP180_LQFP176_UFBGA176 (*) + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @arg @ref LL_UTILS_PACKAGETYPE_LQFP176_LQFP208_TFBGA216 (*) + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * (*) value not defined in all devices. + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** __STATIC_INLINE uint32_t LL_GetPackageType(void) + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** { + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** return (uint32_t)(READ_REG(*((uint32_t *)PACKAGE_BASE_ADDRESS)) & 0x0700U); + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** } + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @} + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** @defgroup UTILS_LL_EF_DELAY DELAY + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @{ + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /** + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @brief This function configures the Cortex-M SysTick source of the time base. + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro) + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @note When a RTOS is used, it is recommended to avoid changing the SysTick + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * configuration by calling this function, for a delay use rather osDelay RTOS service. + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @param Ticks Frequency of Ticks (Hz) + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** * @retval None + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** */ + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** __STATIC_INLINE void LL_InitTick(uint32_t HCLKFrequency, uint32_t Ticks) + 179 .loc 3 256 22 view .LVU48 + 180 .LBB61: + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** { + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** /* Configure the SysTick to have interrupt in 1ms time base */ + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** SysTick->LOAD = (uint32_t)((HCLKFrequency / Ticks) - 1UL); /* set reload register */ + 181 .loc 3 259 3 view .LVU49 + 182 .loc 3 259 46 is_stmt 0 view .LVU50 + 183 0000 064B ldr r3, .L12 + 184 0002 A3FB0023 umull r2, r3, r3, r0 + 185 0006 9B09 lsrs r3, r3, #6 + 186 .loc 3 259 20 view .LVU51 + 187 0008 013B subs r3, r3, #1 + ARM GAS /tmp/ccLtUKRp.s page 94 + + + 188 .loc 3 259 18 view .LVU52 + 189 000a 4FF0E022 mov r2, #-536813568 + 190 000e 5361 str r3, [r2, #20] + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 191 .loc 3 260 3 is_stmt 1 view .LVU53 + 192 .loc 3 260 18 is_stmt 0 view .LVU54 + 193 0010 0023 movs r3, #0 + 194 0012 9361 str r3, [r2, #24] + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h **** SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 195 .loc 3 261 3 is_stmt 1 view .LVU55 + 196 .loc 3 261 18 is_stmt 0 view .LVU56 + 197 0014 0523 movs r3, #5 + 198 0016 1361 str r3, [r2, #16] + 199 .LVL11: + 200 .loc 3 261 18 view .LVU57 + 201 .LBE61: + 202 .LBE60: + 222:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 203 .loc 1 222 1 view .LVU58 + 204 0018 7047 bx lr + 205 .L13: + 206 001a 00BF .align 2 + 207 .L12: + 208 001c D34D6210 .word 274877907 + 209 .cfi_endproc + 210 .LFE405: + 212 .section .text.LL_mDelay,"ax",%progbits + 213 .align 1 + 214 .global LL_mDelay + 215 .syntax unified + 216 .thumb + 217 .thumb_func + 218 .fpu fpv5-d16 + 220 LL_mDelay: + 221 .LVL12: + 222 .LFB406: + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** __IO uint32_t tmp = SysTick->CTRL; /* Clear the COUNTFLAG first */ + 223 .loc 1 235 1 is_stmt 1 view -0 + 224 .cfi_startproc + 225 @ args = 0, pretend = 0, frame = 8 + 226 @ frame_needed = 0, uses_anonymous_args = 0 + 227 @ link register save eliminated. + 235:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** __IO uint32_t tmp = SysTick->CTRL; /* Clear the COUNTFLAG first */ + 228 .loc 1 235 1 is_stmt 0 view .LVU60 + 229 0000 82B0 sub sp, sp, #8 + 230 .LCFI0: + 231 .cfi_def_cfa_offset 8 + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Add this code to indicate that local variable is not used */ + 232 .loc 1 236 3 is_stmt 1 view .LVU61 + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Add this code to indicate that local variable is not used */ + 233 .loc 1 236 31 is_stmt 0 view .LVU62 + 234 0002 4FF0E023 mov r3, #-536813568 + 235 0006 1B69 ldr r3, [r3, #16] + 236:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Add this code to indicate that local variable is not used */ + 236 .loc 1 236 18 view .LVU63 + 237 0008 0193 str r3, [sp, #4] + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + ARM GAS /tmp/ccLtUKRp.s page 95 + + + 238 .loc 1 238 3 is_stmt 1 view .LVU64 + 238:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 239 .loc 1 238 4 is_stmt 0 view .LVU65 + 240 000a 019B ldr r3, [sp, #4] + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 241 .loc 1 241 3 is_stmt 1 view .LVU66 + 241:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 242 .loc 1 241 5 is_stmt 0 view .LVU67 + 243 000c B0F1FF3F cmp r0, #-1 + 244 0010 00D0 beq .L17 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 245 .loc 1 243 5 is_stmt 1 view .LVU68 + 243:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 246 .loc 1 243 10 is_stmt 0 view .LVU69 + 247 0012 0130 adds r0, r0, #1 + 248 .LVL13: + 249 .L17: + 246:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 250 .loc 1 246 9 is_stmt 1 view .LVU70 + 251 0014 38B1 cbz r0, .L20 + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 252 .loc 1 248 5 view .LVU71 + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 253 .loc 1 248 16 is_stmt 0 view .LVU72 + 254 0016 4FF0E023 mov r3, #-536813568 + 255 001a 1B69 ldr r3, [r3, #16] + 248:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 256 .loc 1 248 7 view .LVU73 + 257 001c 13F4803F tst r3, #65536 + 258 0020 F8D0 beq .L17 + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 259 .loc 1 250 7 is_stmt 1 view .LVU74 + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 260 .loc 1 250 12 is_stmt 0 view .LVU75 + 261 0022 0138 subs r0, r0, #1 + 262 .LVL14: + 250:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 263 .loc 1 250 12 view .LVU76 + 264 0024 F6E7 b .L17 + 265 .L20: + 253:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 266 .loc 1 253 1 view .LVU77 + 267 0026 02B0 add sp, sp, #8 + 268 .LCFI1: + 269 .cfi_def_cfa_offset 0 + 270 @ sp needed + 271 0028 7047 bx lr + 272 .cfi_endproc + 273 .LFE406: + 275 .section .text.LL_SetSystemCoreClock,"ax",%progbits + 276 .align 1 + 277 .global LL_SetSystemCoreClock + 278 .syntax unified + 279 .thumb + 280 .thumb_func + 281 .fpu fpv5-d16 + 283 LL_SetSystemCoreClock: + ARM GAS /tmp/ccLtUKRp.s page 96 + + + 284 .LVL15: + 285 .LFB407: + 312:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* HCLK clock frequency */ + 286 .loc 1 312 1 is_stmt 1 view -0 + 287 .cfi_startproc + 288 @ args = 0, pretend = 0, frame = 0 + 289 @ frame_needed = 0, uses_anonymous_args = 0 + 290 @ link register save eliminated. + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 291 .loc 1 314 3 view .LVU79 + 314:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 292 .loc 1 314 19 is_stmt 0 view .LVU80 + 293 0000 014B ldr r3, .L22 + 294 0002 1860 str r0, [r3] + 315:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 295 .loc 1 315 1 view .LVU81 + 296 0004 7047 bx lr + 297 .L23: + 298 0006 00BF .align 2 + 299 .L22: + 300 0008 00000000 .word SystemCoreClock + 301 .cfi_endproc + 302 .LFE407: + 304 .section .text.LL_SetFlashLatency,"ax",%progbits + 305 .align 1 + 306 .global LL_SetFlashLatency + 307 .syntax unified + 308 .thumb + 309 .thumb_func + 310 .fpu fpv5-d16 + 312 LL_SetFlashLatency: + 313 .LVL16: + 314 .LFB408: + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t timeout; + 315 .loc 1 327 1 is_stmt 1 view -0 + 316 .cfi_startproc + 317 @ args = 0, pretend = 0, frame = 0 + 318 @ frame_needed = 0, uses_anonymous_args = 0 + 319 @ link register save eliminated. + 328:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t getlatency; + 320 .loc 1 328 3 view .LVU83 + 329:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t latency = LL_FLASH_LATENCY_0; /* default value 0WS */ + 321 .loc 1 329 3 view .LVU84 + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 322 .loc 1 330 3 view .LVU85 + 331:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 323 .loc 1 331 3 view .LVU86 + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 324 .loc 1 334 3 view .LVU87 + 334:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 325 .loc 1 334 5 is_stmt 0 view .LVU88 + 326 0000 0028 cmp r0, #0 + 327 0002 00F09B80 beq .L31 + 327:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t timeout; + 328 .loc 1 327 1 view .LVU89 + 329 0006 10B4 push {r4} + 330 .LCFI2: + ARM GAS /tmp/ccLtUKRp.s page 97 + + + 331 .cfi_def_cfa_offset 4 + 332 .cfi_offset 4, -4 + 333 0008 0346 mov r3, r0 + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 334 .loc 1 340 5 is_stmt 1 view .LVU90 + 335 .LBB62: + 336 .LBI62: + 337 .file 4 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @file stm32f7xx_ll_pwr.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Header file of PWR LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #ifndef __STM32F7xx_LL_PWR_H + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define __STM32F7xx_LL_PWR_H + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #ifdef __cplusplus + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** extern "C" { + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #endif + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /* Includes ------------------------------------------------------------------*/ + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #include "stm32f7xx.h" + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @addtogroup STM32F7xx_LL_Driver + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #if defined(PWR) + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL PWR + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /* Private types -------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /* Private variables ---------------------------------------------------------*/ + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /* Private constants ---------------------------------------------------------*/ + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /* Private macros ------------------------------------------------------------*/ + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /* Exported types ------------------------------------------------------------*/ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /* Exported constants --------------------------------------------------------*/ + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_Exported_Constants PWR Exported Constants + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + ARM GAS /tmp/ccLtUKRp.s page 98 + + + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Flags defines which can be used with LL_PWR_WriteReg function + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CR1_CSBF PWR_CR1_CSBF /*!< Clear standby flag */ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CR2_CWUF6 PWR_CR2_CWUF6 /*!< Clear WKUP pin 6 */ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CR2_CWUF5 PWR_CR2_CWUF5 /*!< Clear WKUP pin 5 */ + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CR2_CWUF4 PWR_CR2_CWUF4 /*!< Clear WKUP pin 4 */ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CR2_CWUF3 PWR_CR2_CWUF3 /*!< Clear WKUP pin 3 */ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CR2_CWUF2 PWR_CR2_CWUF2 /*!< Clear WKUP pin 2 */ + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CR2_CWUF1 PWR_CR2_CWUF1 /*!< Clear WKUP pin 1 */ + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @} + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Flags defines which can be used with LL_PWR_ReadReg function + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR1_WUIF PWR_CSR1_WUIF /*!< Wakeup flag */ + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR1_SBF PWR_CSR1_SBF /*!< Standby flag */ + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR1_PVDO PWR_CSR1_PVDO /*!< Power voltage detector outp + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR1_BRR PWR_CSR1_BRR /*!< Backup Regulator ready flag + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR1_VOSRDY PWR_CSR1_VOSRDY /*!< Voltage scaling select flag + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR1_ODRDY PWR_CSR1_ODRDY /*!< Over-drive mode ready */ + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR1_ODSWRDY PWR_CSR1_ODSWRDY /*!< Over-drive mode switching r + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR1_UDRDY PWR_CSR1_UDRDY /*!< Under-drive ready flag */ + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR2_EWUP1 PWR_CSR2_EWUP1 /*!< Enable WKUP pin 1 */ + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR2_EWUP2 PWR_CSR2_EWUP2 /*!< Enable WKUP pin 2 */ + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR2_EWUP3 PWR_CSR2_EWUP3 /*!< Enable WKUP pin 3 */ + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR2_EWUP4 PWR_CSR2_EWUP4 /*!< Enable WKUP pin 4 */ + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR2_EWUP5 PWR_CSR2_EWUP5 /*!< Enable WKUP pin 5 */ + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_CSR2_EWUP6 PWR_CSR2_EWUP6 /*!< Enable WKUP pin 6 */ + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @} + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_EC_MODE_PWR Mode Power + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_MODE_STOP_MAINREGU 0x00000000U + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_MODE_STOP_MAINREGU_UNDERDRIVE (PWR_CR1_MRUDS | PWR_CR1_FPDS) + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_MODE_STOP_LPREGU PWR_CR1_LPDS + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_MODE_STOP_LPREGU_UNDERDRIVE (PWR_CR1_LPDS | PWR_CR1_LPUDS | PWR_CR1_FPDS) + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_MODE_STANDBY PWR_CR1_PDDS + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @} + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_EC_REGU_VOLTAGE Regulator Voltage + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_REGU_VOLTAGE_SCALE3 PWR_CR1_VOS_0 + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_REGU_VOLTAGE_SCALE2 PWR_CR1_VOS_1 + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_REGU_VOLTAGE_SCALE1 (PWR_CR1_VOS_0 | PWR_CR1_VOS_1) + ARM GAS /tmp/ccLtUKRp.s page 99 + + + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @} + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_EC_REGU_MODE_DS_MODE Regulator Mode In Deep Sleep Mode + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_REGU_DSMODE_MAIN 0x00000000U /*!< Voltage Regulator in mai + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_REGU_DSMODE_LOW_POWER PWR_CR1_LPDS /*!< Voltage Regulator in low + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @} + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_EC_PVDLEVEL Power Voltage Detector Level + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_PVDLEVEL_0 PWR_CR1_PLS_LEV0 /*!< Voltage threshold detected by + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_PVDLEVEL_1 PWR_CR1_PLS_LEV1 /*!< Voltage threshold detected by + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_PVDLEVEL_2 PWR_CR1_PLS_LEV2 /*!< Voltage threshold detected by + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_PVDLEVEL_3 PWR_CR1_PLS_LEV3 /*!< Voltage threshold detected by + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_PVDLEVEL_4 PWR_CR1_PLS_LEV4 /*!< Voltage threshold detected by + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_PVDLEVEL_5 PWR_CR1_PLS_LEV5 /*!< Voltage threshold detected by + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_PVDLEVEL_6 PWR_CR1_PLS_LEV6 /*!< Voltage threshold detected by + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_PVDLEVEL_7 PWR_CR1_PLS_LEV7 /*!< Voltage threshold detected by + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @} + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_EC_WAKEUP_PIN Wakeup Pins + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_WAKEUP_PIN1 PWR_CSR2_EWUP1 /*!< WKUP pin 1 : PA0 */ + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_WAKEUP_PIN2 PWR_CSR2_EWUP2 /*!< WKUP pin 2 : PA2 */ + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_WAKEUP_PIN3 PWR_CSR2_EWUP3 /*!< WKUP pin 3 : PC1 */ + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_WAKEUP_PIN4 PWR_CSR2_EWUP4 /*!< WKUP pin 4 : PC13 */ + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_WAKEUP_PIN5 PWR_CSR2_EWUP5 /*!< WKUP pin 5 : PI8 */ + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_WAKEUP_PIN6 PWR_CSR2_EWUP6 /*!< WKUP pin 6 : PI11 */ + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @} + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @} + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /* Exported macro ------------------------------------------------------------*/ + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_Exported_Macros PWR Exported Macros + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_EM_WRITE_READ Common write and read registers Macros + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Write a value in PWR register + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @param __REG__ Register to be written + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @param __VALUE__ Value to be written in the register + ARM GAS /tmp/ccLtUKRp.s page 100 + + + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval None + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__)) + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Read a value in PWR register + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @param __REG__ Register to be read + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval Register value + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** #define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__) + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @} + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @} + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /* Exported functions --------------------------------------------------------*/ + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_Exported_Functions PWR Exported Functions + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** @defgroup PWR_LL_EF_Configuration Configuration + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @{ + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Enable Under Drive Mode + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 UDEN LL_PWR_EnableUnderDriveMode + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @note This mode is enabled only with STOP low power mode. + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * In this mode, the 1.2V domain is preserved in reduced leakage mode. This + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * mode is only available when the main Regulator or the low power Regulator + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * is in low voltage mode. + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @note If the Under-drive mode was enabled, it is automatically disabled after + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * exiting Stop mode. + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * When the voltage Regulator operates in Under-drive mode, an additional + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * startup delay is induced when waking up from Stop mode. + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval None + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE void LL_PWR_EnableUnderDriveMode(void) + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** SET_BIT(PWR->CR1, PWR_CR1_UDEN); + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Disable Under Drive Mode + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 UDEN LL_PWR_DisableUnderDriveMode + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval None + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE void LL_PWR_DisableUnderDriveMode(void) + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** CLEAR_BIT(PWR->CR1, PWR_CR1_UDEN); + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Check if Under Drive Mode is enabled + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 UDEN LL_PWR_IsEnabledUnderDriveMode + ARM GAS /tmp/ccLtUKRp.s page 101 + + + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval State of bit (1 or 0). + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE uint32_t LL_PWR_IsEnabledUnderDriveMode(void) + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** return (READ_BIT(PWR->CR1, PWR_CR1_UDEN) == (PWR_CR1_UDEN)); + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Enable Over drive switching + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 ODSWEN LL_PWR_EnableOverDriveSwitching + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval None + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE void LL_PWR_EnableOverDriveSwitching(void) + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** SET_BIT(PWR->CR1, PWR_CR1_ODSWEN); + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Disable Over drive switching + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 ODSWEN LL_PWR_DisableOverDriveSwitching + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval None + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE void LL_PWR_DisableOverDriveSwitching(void) + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** CLEAR_BIT(PWR->CR1, PWR_CR1_ODSWEN); + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Check if Over drive switching is enabled + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 ODSWEN LL_PWR_IsEnabledOverDriveSwitching + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval State of bit (1 or 0). + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE uint32_t LL_PWR_IsEnabledOverDriveSwitching(void) + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** return (READ_BIT(PWR->CR1, PWR_CR1_ODSWEN) == (PWR_CR1_ODSWEN)); + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Enable Over drive Mode + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 ODEN LL_PWR_EnableOverDriveMode + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval None + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE void LL_PWR_EnableOverDriveMode(void) + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** SET_BIT(PWR->CR1, PWR_CR1_ODEN); + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Disable Over drive Mode + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 ODEN LL_PWR_DisableOverDriveMode + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval None + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE void LL_PWR_DisableOverDriveMode(void) + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** CLEAR_BIT(PWR->CR1, PWR_CR1_ODEN); + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + ARM GAS /tmp/ccLtUKRp.s page 102 + + + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Check if Over drive switching is enabled + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 ODEN LL_PWR_IsEnabledOverDriveMode + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval State of bit (1 or 0). + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE uint32_t LL_PWR_IsEnabledOverDriveMode(void) + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** return (READ_BIT(PWR->CR1, PWR_CR1_ODEN) == (PWR_CR1_ODEN)); + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Set the main internal Regulator output voltage + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 VOS LL_PWR_SetRegulVoltageScaling + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @param VoltageScaling This parameter can be one of the following values: + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1 + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2 + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3 + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval None + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling) + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling); + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** /** + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @brief Get the main internal Regulator output voltage + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @rmtoll CR1 VOS LL_PWR_GetRegulVoltageScaling + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @retval Returned value can be one of the following values: + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1 + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2 + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE3 + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** */ + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** __STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void) + 338 .loc 4 310 26 view .LVU91 + 339 .LBB63: + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_VOS)); + 340 .loc 4 312 3 view .LVU92 + 341 .loc 4 312 21 is_stmt 0 view .LVU93 + 342 000a 4E4A ldr r2, .L54 + 343 000c 1268 ldr r2, [r2] + 344 .loc 4 312 10 view .LVU94 + 345 000e 02F44042 and r2, r2, #49152 + 346 .LBE63: + 347 .LBE62: + 340:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 348 .loc 1 340 7 view .LVU95 + 349 0012 B2F5404F cmp r2, #49152 + 350 0016 14D0 beq .L52 + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 351 .loc 1 385 10 is_stmt 1 view .LVU96 + 352 .LBB64: + 353 .LBI64: + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 354 .loc 4 310 26 view .LVU97 + 355 .LBB65: + 356 .loc 4 312 3 view .LVU98 + ARM GAS /tmp/ccLtUKRp.s page 103 + + + 357 .loc 4 312 21 is_stmt 0 view .LVU99 + 358 0018 4A4A ldr r2, .L54 + 359 001a 1268 ldr r2, [r2] + 360 .loc 4 312 10 view .LVU100 + 361 001c 02F44042 and r2, r2, #49152 + 362 .LBE65: + 363 .LBE64: + 385:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 364 .loc 1 385 12 view .LVU101 + 365 0020 B2F5004F cmp r2, #32768 + 366 0024 41D0 beq .L53 + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 367 .loc 1 419 7 is_stmt 1 view .LVU102 + 419:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 368 .loc 1 419 9 is_stmt 0 view .LVU103 + 369 0026 484A ldr r2, .L54+4 + 370 0028 9042 cmp r0, r2 + 371 002a 64D8 bhi .L43 + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 372 .loc 1 424 12 is_stmt 1 view .LVU104 + 424:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 373 .loc 1 424 14 is_stmt 0 view .LVU105 + 374 002c 474A ldr r2, .L54+8 + 375 002e 9042 cmp r0, r2 + 376 0030 7ED8 bhi .L44 + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 377 .loc 1 429 12 is_stmt 1 view .LVU106 + 429:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 378 .loc 1 429 14 is_stmt 0 view .LVU107 + 379 0032 474A ldr r2, .L54+12 + 380 0034 9042 cmp r0, r2 + 381 0036 7DD8 bhi .L45 + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 382 .loc 1 436 9 is_stmt 1 view .LVU108 + 436:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 383 .loc 1 436 11 is_stmt 0 view .LVU109 + 384 0038 464A ldr r2, .L54+16 + 385 003a 9042 cmp r0, r2 + 386 003c 7CD8 bhi .L46 + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 387 .loc 1 330 12 view .LVU110 + 388 003e 0020 movs r0, #0 + 389 .LVL17: + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 390 .loc 1 330 12 view .LVU111 + 391 0040 5AE0 b .L28 + 392 .LVL18: + 393 .L52: + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 394 .loc 1 342 7 is_stmt 1 view .LVU112 + 395 .LBB66: + 396 .LBI66: + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** { + 397 .loc 4 283 26 view .LVU113 + 398 .LBB67: + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 399 .loc 4 285 3 view .LVU114 + ARM GAS /tmp/ccLtUKRp.s page 104 + + + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 400 .loc 4 285 11 is_stmt 0 view .LVU115 + 401 0042 404A ldr r2, .L54 + 402 0044 1068 ldr r0, [r2] + 403 .LVL19: + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h **** } + 404 .loc 4 285 11 view .LVU116 + 405 .LBE67: + 406 .LBE66: + 342:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 407 .loc 1 342 9 view .LVU117 + 408 0046 10F48030 ands r0, r0, #65536 + 409 004a 03D0 beq .L27 + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 410 .loc 1 344 11 is_stmt 1 view .LVU118 + 344:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 411 .loc 1 344 13 is_stmt 0 view .LVU119 + 412 004c 424A ldr r2, .L54+20 + 413 004e 9342 cmp r3, r2 + 414 0050 29D9 bls .L32 + 347:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 415 .loc 1 347 21 view .LVU120 + 416 0052 0720 movs r0, #7 + 417 .L27: + 418 .LVL20: + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 419 .loc 1 355 7 is_stmt 1 view .LVU121 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 420 .loc 1 355 68 is_stmt 0 view .LVU122 + 421 0054 B0FA80F2 clz r2, r0 + 422 0058 5209 lsrs r2, r2, #5 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 423 .loc 1 355 56 view .LVU123 + 424 005a 404C ldr r4, .L54+24 + 425 005c A342 cmp r3, r4 + 426 005e 94BF ite ls + 427 0060 0021 movls r1, #0 + 428 0062 02F00101 andhi r1, r2, #1 + 355:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 429 .loc 1 355 9 view .LVU124 + 430 0066 0029 cmp r1, #0 + 431 0068 33D1 bne .L33 + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 432 .loc 1 360 12 is_stmt 1 view .LVU125 + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 433 .loc 1 360 61 is_stmt 0 view .LVU126 + 434 006a 374C ldr r4, .L54+4 + 435 006c A342 cmp r3, r4 + 436 006e 94BF ite ls + 437 0070 0021 movls r1, #0 + 438 0072 02F00101 andhi r1, r2, #1 + 360:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 439 .loc 1 360 14 view .LVU127 + 440 0076 71BB cbnz r1, .L34 + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 441 .loc 1 365 12 is_stmt 1 view .LVU128 + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + ARM GAS /tmp/ccLtUKRp.s page 105 + + + 442 .loc 1 365 61 is_stmt 0 view .LVU129 + 443 0078 344C ldr r4, .L54+8 + 444 007a A342 cmp r3, r4 + 445 007c 94BF ite ls + 446 007e 0021 movls r1, #0 + 447 0080 02F00101 andhi r1, r2, #1 + 365:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 448 .loc 1 365 14 view .LVU130 + 449 0084 49BB cbnz r1, .L35 + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 450 .loc 1 370 12 is_stmt 1 view .LVU131 + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 451 .loc 1 370 61 is_stmt 0 view .LVU132 + 452 0086 324C ldr r4, .L54+12 + 453 0088 A342 cmp r3, r4 + 454 008a 94BF ite ls + 455 008c 0021 movls r1, #0 + 456 008e 02F00101 andhi r1, r2, #1 + 370:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 457 .loc 1 370 14 view .LVU133 + 458 0092 21BB cbnz r1, .L36 + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 459 .loc 1 377 9 is_stmt 1 view .LVU134 + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 460 .loc 1 377 58 is_stmt 0 view .LVU135 + 461 0094 2F49 ldr r1, .L54+16 + 462 0096 8B42 cmp r3, r1 + 463 0098 94BF ite ls + 464 009a 0022 movls r2, #0 + 465 009c 02F00102 andhi r2, r2, #1 + 377:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 466 .loc 1 377 11 view .LVU136 + 467 00a0 52B3 cbz r2, .L28 + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 468 .loc 1 380 19 view .LVU137 + 469 00a2 0120 movs r0, #1 + 470 .LVL21: + 380:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 471 .loc 1 380 19 view .LVU138 + 472 00a4 28E0 b .L28 + 473 .LVL22: + 474 .L32: + 352:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 475 .loc 1 352 21 view .LVU139 + 476 00a6 0620 movs r0, #6 + 477 00a8 D4E7 b .L27 + 478 .LVL23: + 479 .L53: + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 480 .loc 1 387 7 is_stmt 1 view .LVU140 + 387:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 481 .loc 1 387 9 is_stmt 0 view .LVU141 + 482 00aa 02F10F62 add r2, r2, #149946368 + 483 00ae 02F5A342 add r2, r2, #20864 + 484 00b2 9042 cmp r0, r2 + 485 00b4 15D8 bhi .L38 + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + ARM GAS /tmp/ccLtUKRp.s page 106 + + + 486 .loc 1 392 12 is_stmt 1 view .LVU142 + 392:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 487 .loc 1 392 14 is_stmt 0 view .LVU143 + 488 00b6 244A ldr r2, .L54+4 + 489 00b8 9042 cmp r0, r2 + 490 00ba 14D8 bhi .L39 + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 491 .loc 1 397 12 is_stmt 1 view .LVU144 + 397:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 492 .loc 1 397 14 is_stmt 0 view .LVU145 + 493 00bc 234A ldr r2, .L54+8 + 494 00be 9042 cmp r0, r2 + 495 00c0 13D8 bhi .L40 + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 496 .loc 1 402 12 is_stmt 1 view .LVU146 + 402:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 497 .loc 1 402 14 is_stmt 0 view .LVU147 + 498 00c2 234A ldr r2, .L54+12 + 499 00c4 9042 cmp r0, r2 + 500 00c6 12D8 bhi .L41 + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 501 .loc 1 409 9 is_stmt 1 view .LVU148 + 409:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 502 .loc 1 409 11 is_stmt 0 view .LVU149 + 503 00c8 224A ldr r2, .L54+16 + 504 00ca 9042 cmp r0, r2 + 505 00cc 11D8 bhi .L42 + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 506 .loc 1 330 12 view .LVU150 + 507 00ce 0020 movs r0, #0 + 508 .LVL24: + 330:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 509 .loc 1 330 12 view .LVU151 + 510 00d0 12E0 b .L28 + 511 .LVL25: + 512 .L33: + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 513 .loc 1 358 17 view .LVU152 + 514 00d2 0520 movs r0, #5 + 515 .LVL26: + 358:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 516 .loc 1 358 17 view .LVU153 + 517 00d4 10E0 b .L28 + 518 .LVL27: + 519 .L34: + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 520 .loc 1 363 17 view .LVU154 + 521 00d6 0420 movs r0, #4 + 522 .LVL28: + 363:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 523 .loc 1 363 17 view .LVU155 + 524 00d8 0EE0 b .L28 + 525 .LVL29: + 526 .L35: + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 527 .loc 1 368 17 view .LVU156 + 528 00da 0320 movs r0, #3 + ARM GAS /tmp/ccLtUKRp.s page 107 + + + 529 .LVL30: + 368:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 530 .loc 1 368 17 view .LVU157 + 531 00dc 0CE0 b .L28 + 532 .LVL31: + 533 .L36: + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 534 .loc 1 373 17 view .LVU158 + 535 00de 0220 movs r0, #2 + 536 .LVL32: + 373:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 537 .loc 1 373 17 view .LVU159 + 538 00e0 0AE0 b .L28 + 539 .LVL33: + 540 .L38: + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 541 .loc 1 390 17 view .LVU160 + 542 00e2 0520 movs r0, #5 + 543 .LVL34: + 390:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 544 .loc 1 390 17 view .LVU161 + 545 00e4 08E0 b .L28 + 546 .LVL35: + 547 .L39: + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 548 .loc 1 395 17 view .LVU162 + 549 00e6 0420 movs r0, #4 + 550 .LVL36: + 395:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 551 .loc 1 395 17 view .LVU163 + 552 00e8 06E0 b .L28 + 553 .LVL37: + 554 .L40: + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 555 .loc 1 400 17 view .LVU164 + 556 00ea 0320 movs r0, #3 + 557 .LVL38: + 400:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 558 .loc 1 400 17 view .LVU165 + 559 00ec 04E0 b .L28 + 560 .LVL39: + 561 .L41: + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 562 .loc 1 405 17 view .LVU166 + 563 00ee 0220 movs r0, #2 + 564 .LVL40: + 405:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 565 .loc 1 405 17 view .LVU167 + 566 00f0 02E0 b .L28 + 567 .LVL41: + 568 .L42: + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 569 .loc 1 412 19 view .LVU168 + 570 00f2 0120 movs r0, #1 + 571 .LVL42: + 412:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 572 .loc 1 412 19 view .LVU169 + ARM GAS /tmp/ccLtUKRp.s page 108 + + + 573 00f4 00E0 b .L28 + 574 .LVL43: + 575 .L43: + 422:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 576 .loc 1 422 17 view .LVU170 + 577 00f6 0420 movs r0, #4 + 578 .LVL44: + 579 .L28: + 445:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 580 .loc 1 445 5 is_stmt 1 view .LVU171 + 447:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 581 .loc 1 447 7 view .LVU172 + 582 .LBB68: + 583 .LBI68: + 584 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h" + 1:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 2:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** ****************************************************************************** + 3:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @file stm32f7xx_ll_system.h + 4:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @author MCD Application Team + 5:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Header file of SYSTEM LL module. + 6:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** ****************************************************************************** + 7:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @attention + 8:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * + 9:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * Copyright (c) 2017 STMicroelectronics. + 10:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * All rights reserved. + 11:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * + 12:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * This software is licensed under terms that can be found in the LICENSE file + 13:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * in the root directory of this software component. + 14:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * If no LICENSE file comes with this software, it is provided AS-IS. + 15:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * + 16:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** ****************************************************************************** + 17:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** @verbatim + 18:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** ============================================================================== + 19:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** ##### How to use this driver ##### + 20:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** ============================================================================== + 21:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** [..] + 22:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** The LL SYSTEM driver contains a set of generic APIs that can be + 23:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** used by user: + 24:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** (+) Some of the FLASH features need to be handled in the SYSTEM file. + 25:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** (+) Access to DBGCMU registers + 26:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** (+) Access to SYSCFG registers + 27:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 28:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** @endverbatim + 29:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** ****************************************************************************** + 30:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 31:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 32:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /* Define to prevent recursive inclusion -------------------------------------*/ + 33:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #ifndef __STM32F7xx_LL_SYSTEM_H + 34:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define __STM32F7xx_LL_SYSTEM_H + 35:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 36:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #ifdef __cplusplus + 37:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** extern "C" { + 38:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif + 39:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 40:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /* Includes ------------------------------------------------------------------*/ + 41:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #include "stm32f7xx.h" + 42:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + ARM GAS /tmp/ccLtUKRp.s page 109 + + + 43:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @addtogroup STM32F7xx_LL_Driver + 44:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 45:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 46:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 47:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) + 48:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 49:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL SYSTEM + 50:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 51:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 52:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 53:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /* Private types -------------------------------------------------------------*/ + 54:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /* Private variables ---------------------------------------------------------*/ + 55:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 56:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /* Private constants ---------------------------------------------------------*/ + 57:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants + 58:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 59:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 60:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 61:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 62:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 63:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 64:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 65:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /* Private macros ------------------------------------------------------------*/ + 66:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 67:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /* Exported types ------------------------------------------------------------*/ + 68:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /* Exported constants --------------------------------------------------------*/ + 69:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants + 70:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 71:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 72:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 73:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_REMAP SYSCFG REMAP + 74:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 75:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 76:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_REMAP_BOOT0 0x00000000U /*! + 77:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_REMAP_BOOT1 SYSCFG_MEMRMP_MEM_BOOT /*! + 78:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 79:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 80:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 81:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 82:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 83:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(SYSCFG_MEMRMP_SWP_FB) + 84:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_BANKMODE SYSCFG BANK MODE + 85:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 86:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 87:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_BANKMODE_BANK1 0x00000000U /*!< Flash Bank 1 base address m + 88:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** and Flash Bank 2 base address + 89:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 90:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_BANKMODE_BANK2 SYSCFG_MEMRMP_SWP_FB /*!< Flash Bank 2 base address m + 91:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** and Flash Bank 1 base address + 92:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 93:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 94:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 95:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* SYSCFG_MEMRMP_SWP_FB */ + 96:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 97:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(SYSCFG_PMC_MII_RMII_SEL) + 98:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_PMC SYSCFG PMC + 99:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + ARM GAS /tmp/ccLtUKRp.s page 110 + + + 100:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 101:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_PMC_ETHMII 0x00000000U /*!< + 102:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_PMC_ETHRMII (uint32_t)SYSCFG_PMC_MII_RMII_SEL /*!< + 103:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 104:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 105:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 106:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 107:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* SYSCFG_PMC_MII_RMII_SEL */ + 108:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 109:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_I2C_FASTMODEPLUS SYSCFG I2C FASTMODEPLUS + 110:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 111:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 112:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(SYSCFG_PMC_I2C1_FMP) + 113:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 SYSCFG_PMC_I2C1_FMP /*!< Enable Fast Mode Plus + 114:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 SYSCFG_PMC_I2C2_FMP /*!< Enable Fast Mode Plus + 115:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 SYSCFG_PMC_I2C3_FMP /*!< Enable Fast Mode Plus + 116:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* SYSCFG_PMC_I2C1_FMP */ + 117:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(SYSCFG_PMC_I2C4_FMP) + 118:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 SYSCFG_PMC_I2C4_FMP /*!< Enable Fast Mode Plus + 119:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* SYSCFG_PMC_I2C4_FMP */ + 120:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(SYSCFG_PMC_I2C_PB6_FMP) + 121:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_I2C_FASTMODEPLUS_PB6 SYSCFG_PMC_I2C_PB6_FMP /*!< Enable Fast Mode Plus + 122:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_I2C_FASTMODEPLUS_PB7 SYSCFG_PMC_I2C_PB7_FMP /*!< Enable Fast Mode Plus + 123:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_I2C_FASTMODEPLUS_PB8 SYSCFG_PMC_I2C_PB8_FMP /*!< Enable Fast Mode Plus + 124:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_I2C_FASTMODEPLUS_PB9 SYSCFG_PMC_I2C_PB9_FMP /*!< Enable Fast Mode Plus + 125:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* SYSCFG_PMC_I2C_PB6_FMP */ + 126:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 127:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 128:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 129:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 130:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_EXTI_PORT SYSCFG EXTI PORT + 131:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 133:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTA 0U /*!< EXTI PORT A + 134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTB 1U /*!< EXTI PORT B + 135:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTC 2U /*!< EXTI PORT C + 136:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTD 3U /*!< EXTI PORT D + 137:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTE 4U /*!< EXTI PORT E + 138:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(GPIOF) + 139:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTF 5U /*!< EXTI PORT F + 140:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* GPIOF */ + 141:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(GPIOG) + 142:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTG 6U /*!< EXTI PORT G + 143:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* GPIOG */ + 144:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTH 7U /*!< EXTI PORT H + 145:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(GPIOI) + 146:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTI 8U /*!< EXTI PORT I + 147:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* GPIOI */ + 148:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(GPIOJ) + 149:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTJ 9U /*!< EXTI PORT J + 150:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* GPIOJ */ + 151:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(GPIOK) + 152:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_PORTK 10U /*!< EXTI PORT k + 153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* GPIOK */ + 154:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 156:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + ARM GAS /tmp/ccLtUKRp.s page 111 + + + 157:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 158:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_EXTI_LINE SYSCFG EXTI LINE + 159:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 160:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 161:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE0 (0x000FU << 16U | 0U) /*!< EXTI_POSITION_0 | EXTICR[0] + 162:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE1 (0x00F0U << 16U | 0U) /*!< EXTI_POSITION_4 | EXTICR[0] + 163:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE2 (0x0F00U << 16U | 0U) /*!< EXTI_POSITION_8 | EXTICR[0] + 164:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE3 (0xF000U << 16U | 0U) /*!< EXTI_POSITION_12 | EXTICR[0] + 165:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE4 (0x000FU << 16U | 1U) /*!< EXTI_POSITION_0 | EXTICR[1] + 166:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE5 (0x00F0U << 16U | 1U) /*!< EXTI_POSITION_4 | EXTICR[1] + 167:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE6 (0x0F00U << 16U | 1U) /*!< EXTI_POSITION_8 | EXTICR[1] + 168:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE7 (0xF000U << 16U | 1U) /*!< EXTI_POSITION_12 | EXTICR[1] + 169:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE8 (0x000FU << 16U | 2U) /*!< EXTI_POSITION_0 | EXTICR[2] + 170:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE9 (0x00F0U << 16U | 2U) /*!< EXTI_POSITION_4 | EXTICR[2] + 171:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE10 (0x0F00U << 16U | 2U) /*!< EXTI_POSITION_8 | EXTICR[2] + 172:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE11 (0xF000U << 16U | 2U) /*!< EXTI_POSITION_12 | EXTICR[2] + 173:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE12 (0x000FU << 16U | 3U) /*!< EXTI_POSITION_0 | EXTICR[3] + 174:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE13 (0x00F0U << 16U | 3U) /*!< EXTI_POSITION_4 | EXTICR[3] + 175:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE14 (0x0F00U << 16U | 3U) /*!< EXTI_POSITION_8 | EXTICR[3] + 176:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_EXTI_LINE15 (0xF000U << 16U | 3U) /*!< EXTI_POSITION_12 | EXTICR[3] + 177:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 178:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 179:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 180:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 181:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_TIMBREAK SYSCFG TIMER BREAK + 182:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 183:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 184:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(SYSCFG_CBR_CLL) + 185:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_TIMBREAK_LOCKUP SYSCFG_CBR_CLL /*!< Enables and locks the Lockup out + 186:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** lockup state) of Cortex-M7 with + 187:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_TIMBREAK_PVD SYSCFG_CBR_PVDL /*!< Enables and locks the PVD connec + 188:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** It also locks (write protect) th + 189:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** of the power controller */ + 190:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* SYSCFG_CBR_CLL */ + 191:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 192:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 193:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 194:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_CMP_PD SYSCFG CMP PD + 195:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 196:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 197:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_DISABLE_CMP_PD 0x00000000U /*!< I/O compensation cell power- + 198:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_SYSCFG_ENABLE_CMP_PD SYSCFG_CMPCR_CMP_PD /*!< I/O compensation cell enable + 199:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 200:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 201:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 202:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 203:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_TRACE DBGMCU TRACE Pin Assignment + 204:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 205:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 206:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_TRACE_NONE 0x00000000U /*!< TRA + 207:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_TRACE_ASYNCH DBGMCU_CR_TRACE_IOEN /*!< TRA + 208:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_TRACE_SYNCH_SIZE1 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_0) /*!< TRA + 209:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_TRACE_SYNCH_SIZE2 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_1) /*!< TRA + 210:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_TRACE_SYNCH_SIZE4 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE) /*!< TRA + 211:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 212:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 213:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + ARM GAS /tmp/ccLtUKRp.s page 112 + + + 214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 215:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP_IP DBGMCU APB1 GRP1 STOP IP + 216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 217:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 218:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_TIM2_STOP DBGMCU_APB1_FZ_DBG_TIM2_STOP /*!< TIM2 counter + 219:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_TIM3_STOP DBGMCU_APB1_FZ_DBG_TIM3_STOP /*!< TIM3 counter + 220:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_TIM4_STOP DBGMCU_APB1_FZ_DBG_TIM4_STOP /*!< TIM4 counter + 221:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_TIM5_STOP DBGMCU_APB1_FZ_DBG_TIM5_STOP /*!< TIM5 counter + 222:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_TIM6_STOP DBGMCU_APB1_FZ_DBG_TIM6_STOP /*!< TIM6 counter + 223:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_TIM7_STOP DBGMCU_APB1_FZ_DBG_TIM7_STOP /*!< TIM7 counter + 224:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_TIM12_STOP DBGMCU_APB1_FZ_DBG_TIM12_STOP /*!< TIM12 counter + 225:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_TIM13_STOP DBGMCU_APB1_FZ_DBG_TIM13_STOP /*!< TIM13 counter + 226:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_TIM14_STOP DBGMCU_APB1_FZ_DBG_TIM14_STOP /*!< TIM14 counter + 227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_LPTIM1_STOP DBGMCU_APB1_FZ_DBG_LPTIM1_STOP /*!< LPTIIM1 count + 228:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_RTC_STOP DBGMCU_APB1_FZ_DBG_RTC_STOP /*!< RTC counter s + 229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_WWDG_STOP DBGMCU_APB1_FZ_DBG_WWDG_STOP /*!< Debug Window + 230:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_IWDG_STOP DBGMCU_APB1_FZ_DBG_IWDG_STOP /*!< Debug Indepen + 231:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_I2C1_STOP DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT /*!< I2C1 SMBUS ti + 232:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_I2C2_STOP DBGMCU_APB1_FZ_DBG_I2C2_SMBUS_TIMEOUT /*!< I2C2 SMBUS ti + 233:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_I2C3_STOP DBGMCU_APB1_FZ_DBG_I2C3_SMBUS_TIMEOUT /*!< I2C3 SMBUS ti + 234:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT) + 235:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_I2C4_STOP DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT /*!< I2C4 SMBUS ti + 236:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* DBGMCU_APB1_FZ_DBG_I2C4_SMBUS_TIMEOUT */ + 237:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_CAN1_STOP DBGMCU_APB1_FZ_DBG_CAN1_STOP /*!< CAN1 debug st + 238:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(DBGMCU_APB1_FZ_DBG_CAN2_STOP) + 239:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_CAN2_STOP DBGMCU_APB1_FZ_DBG_CAN2_STOP /*!< CAN2 debug st + 240:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* DBGMCU_APB1_FZ_DBG_CAN2_STOP */ + 241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(DBGMCU_APB1_FZ_DBG_CAN3_STOP) + 242:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB1_GRP1_CAN3_STOP DBGMCU_APB1_FZ_DBG_CAN3_STOP /*!< CAN3 debug st + 243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /*DBGMCU_APB1_FZ_DBG_CAN3_STOP*/ + 244:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 245:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 246:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 248:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP_IP DBGMCU APB2 GRP1 STOP IP + 249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 250:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 251:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB2_GRP1_TIM1_STOP DBGMCU_APB2_FZ_DBG_TIM1_STOP /*!< TIM1 counter stopp + 252:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB2_GRP1_TIM8_STOP DBGMCU_APB2_FZ_DBG_TIM8_STOP /*!< TIM8 counter stopp + 253:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB2_GRP1_TIM9_STOP DBGMCU_APB2_FZ_DBG_TIM9_STOP /*!< TIM9 counter stopp + 254:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB2_GRP1_TIM10_STOP DBGMCU_APB2_FZ_DBG_TIM10_STOP /*!< TIM10 counter stop + 255:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_DBGMCU_APB2_GRP1_TIM11_STOP DBGMCU_APB2_FZ_DBG_TIM11_STOP /*!< TIM11 counter stop + 256:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 257:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 258:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 259:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 260:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY + 261:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 262:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH Zero wait state */ + 264:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH One wait state */ + 265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH Two wait states */ + 266:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH Three wait states */ + 267:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH Four wait states */ + 268:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH five wait state */ + 269:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH six wait state */ + 270:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH seven wait states */ + ARM GAS /tmp/ccLtUKRp.s page 113 + + + 271:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_8 FLASH_ACR_LATENCY_8WS /*!< FLASH eight wait states */ + 272:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_9 FLASH_ACR_LATENCY_9WS /*!< FLASH nine wait states */ + 273:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_10 FLASH_ACR_LATENCY_10WS /*!< FLASH ten wait states */ + 274:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_11 FLASH_ACR_LATENCY_11WS /*!< FLASH eleven wait states * + 275:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_12 FLASH_ACR_LATENCY_12WS /*!< FLASH twelve wait states * + 276:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_13 FLASH_ACR_LATENCY_13WS /*!< FLASH thirteen wait states + 277:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_14 FLASH_ACR_LATENCY_14WS /*!< FLASH fourteen wait states + 278:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #define LL_FLASH_LATENCY_15 FLASH_ACR_LATENCY_15WS /*!< FLASH fifteen wait states + 279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 280:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 282:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 283:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 284:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 285:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 286:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 287:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /* Exported macro ------------------------------------------------------------*/ + 288:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 289:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /* Exported functions --------------------------------------------------------*/ + 290:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions + 291:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 292:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 293:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 294:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EF_SYSCFG SYSCFG + 295:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 296:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 297:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 298:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 299:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Enables the FMC Memory Mapping Swapping + 300:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_MEMRMP SWP_FMC LL_SYSCFG_EnableFMCMemorySwapping + 301:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @note SDRAM is accessible at 0x60000000 and NOR/RAM + 302:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * is accessible at 0xC0000000 + 303:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 304:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 305:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_SYSCFG_EnableFMCMemorySwapping(void) + 306:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 307:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** SET_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FMC_0); + 308:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 309:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 310:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 311:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Disables the FMC Memory Mapping Swapping + 312:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_MEMRMP SWP_FMC LL_SYSCFG_DisableFMCMemorySwapping + 313:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @note SDRAM is accessible at 0xC0000000 (default mapping) + 314:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * and NOR/RAM is accessible at 0x60000000 (default mapping) + 315:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 316:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 317:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_SYSCFG_DisableFMCMemorySwapping(void) + 318:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 319:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** CLEAR_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FMC); + 320:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 321:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 322:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 323:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Enables the Compensation Cell + 324:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_CMPCR CMP_PD LL_SYSCFG_EnableCompensationCell + 325:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @note The I/O compensation cell can be used only when the device supply + 326:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * voltage ranges from 2.4 to 3.6 V + 327:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + ARM GAS /tmp/ccLtUKRp.s page 114 + + + 328:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 329:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_SYSCFG_EnableCompensationCell(void) + 330:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 331:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** SET_BIT(SYSCFG->CMPCR, SYSCFG_CMPCR_CMP_PD); + 332:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 333:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 334:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 335:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Disables the Compensation Cell + 336:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_CMPCR CMP_PD LL_SYSCFG_DisableCompensationCell + 337:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @note The I/O compensation cell can be used only when the device supply + 338:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * voltage ranges from 2.4 to 3.6 V + 339:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 340:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 341:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_SYSCFG_DisableCompensationCell(void) + 342:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 343:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** CLEAR_BIT(SYSCFG->CMPCR, SYSCFG_CMPCR_CMP_PD); + 344:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 345:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 346:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 347:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Get Compensation Cell ready Flag + 348:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_CMPCR READY LL_SYSCFG_IsActiveFlag_CMPCR + 349:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval State of bit (1 or 0). + 350:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 351:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_CMPCR(void) + 352:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 353:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** return (READ_BIT(SYSCFG->CMPCR, SYSCFG_CMPCR_READY) == (SYSCFG_CMPCR_READY)); + 354:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 355:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 356:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 357:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 358:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Get the memory boot mapping as configured by user + 359:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_MEMRMP MEM_BOOT LL_SYSCFG_GetRemapMemoryBoot + 360:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval Returned value can be one of the following values: + 361:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_REMAP_BOOT0 + 362:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_REMAP_BOOT1 + 363:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * + 364:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * (*) value not defined in all devices + 365:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 366:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE uint32_t LL_SYSCFG_GetRemapMemoryBoot(void) + 367:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 368:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** return (uint32_t)(READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_BOOT)); + 369:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 370:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 371:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(SYSCFG_PMC_MII_RMII_SEL) + 372:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 373:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Select Ethernet PHY interface + 374:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_PMC MII_RMII_SEL LL_SYSCFG_SetPHYInterface + 375:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Interface This parameter can be one of the following values: + 376:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_PMC_ETHMII + 377:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_PMC_ETHRMII + 378:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 379:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 380:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_SYSCFG_SetPHYInterface(uint32_t Interface) + 381:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 382:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** MODIFY_REG(SYSCFG->PMC, SYSCFG_PMC_MII_RMII_SEL, Interface); + 383:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 384:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + ARM GAS /tmp/ccLtUKRp.s page 115 + + + 385:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 386:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Get Ethernet PHY interface + 387:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_PMC MII_RMII_SEL LL_SYSCFG_GetPHYInterface + 388:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval Returned value can be one of the following values: + 389:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_PMC_ETHMII + 390:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_PMC_ETHRMII + 391:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 392:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 393:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE uint32_t LL_SYSCFG_GetPHYInterface(void) + 394:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 395:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** return (uint32_t)(READ_BIT(SYSCFG->PMC, SYSCFG_PMC_MII_RMII_SEL)); + 396:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 397:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* SYSCFG_PMC_MII_RMII_SEL */ + 398:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 399:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 400:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(SYSCFG_MEMRMP_SWP_FB) + 401:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 402:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Select Flash bank mode (Bank flashed at 0x08000000) + 403:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_MEMRMP FB_MODE LL_SYSCFG_SetFlashBankMode + 404:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Bank This parameter can be one of the following values: + 405:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_BANKMODE_BANK1 + 406:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_BANKMODE_BANK2 + 407:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 408:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 409:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_SYSCFG_SetFlashBankMode(uint32_t Bank) + 410:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 411:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB, Bank); + 412:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 413:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 414:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 415:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Get Flash bank mode (Bank flashed at 0x08000000) + 416:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_MEMRMP FB_MODE LL_SYSCFG_GetFlashBankMode + 417:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval Returned value can be one of the following values: + 418:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_BANKMODE_BANK1 + 419:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_BANKMODE_BANK2 + 420:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 421:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE uint32_t LL_SYSCFG_GetFlashBankMode(void) + 422:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 423:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** return (uint32_t)(READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_SWP_FB)); + 424:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 425:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 426:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* SYSCFG_MEMRMP_SWP_FB */ + 427:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 428:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(SYSCFG_PMC_I2C1_FMP) + 429:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 430:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Enable the I2C fast mode plus driving capability. + 431:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_PMC I2C_PBx_FMP LL_SYSCFG_EnableFastModePlus\n + 432:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_PMC I2Cx_FMP LL_SYSCFG_EnableFastModePlus + 433:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param ConfigFastModePlus This parameter can be a combination of the following values: + 434:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6 + 435:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7 + 436:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*) + 437:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*) + 438:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 + 439:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*) + 440:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 + 441:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4(*) + ARM GAS /tmp/ccLtUKRp.s page 116 + + + 442:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * + 443:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * (*) value not defined in all devices + 444:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 445:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 446:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_SYSCFG_EnableFastModePlus(uint32_t ConfigFastModePlus) + 447:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 448:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** SET_BIT(SYSCFG->PMC, ConfigFastModePlus); + 449:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 450:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 451:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 452:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Disable the I2C fast mode plus driving capability. + 453:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_PMC I2C_PBx_FMP LL_SYSCFG_DisableFastModePlus\n + 454:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_PMC I2Cx_FMP LL_SYSCFG_DisableFastModePlus + 455:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param ConfigFastModePlus This parameter can be a combination of the following values: + 456:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6 + 457:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7 + 458:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*) + 459:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*) + 460:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 + 461:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*) + 462:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 + 463:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 + 464:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * (*) value not defined in all devices + 465:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 466:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 467:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_SYSCFG_DisableFastModePlus(uint32_t ConfigFastModePlus) + 468:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 469:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** CLEAR_BIT(SYSCFG->PMC, ConfigFastModePlus); + 470:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 471:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* SYSCFG_PMC_I2C1_FMP */ + 472:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 473:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 474:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 475:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Configure source input for the EXTI external interrupt. + 476:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_EXTICR1 EXTIx LL_SYSCFG_SetEXTISource\n + 477:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_EXTICR2 EXTIx LL_SYSCFG_SetEXTISource\n + 478:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_EXTICR3 EXTIx LL_SYSCFG_SetEXTISource\n + 479:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_EXTICR4 EXTIx LL_SYSCFG_SetEXTISource + 480:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Port This parameter can be one of the following values: + 481:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTA + 482:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTB + 483:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTC + 484:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTD + 485:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTE + 486:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTF + 487:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTG + 488:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTH + 489:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTI + 490:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTJ + 491:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTK + 492:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * + 493:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * (*) value not defined in all devices + 494:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Line This parameter can be one of the following values: + 495:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE0 + 496:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE1 + 497:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE2 + 498:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE3 + ARM GAS /tmp/ccLtUKRp.s page 117 + + + 499:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE4 + 500:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE5 + 501:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE6 + 502:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE7 + 503:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE8 + 504:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE9 + 505:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE10 + 506:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE11 + 507:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE12 + 508:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE13 + 509:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE14 + 510:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE15 + 511:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 512:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 513:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_SYSCFG_SetEXTISource(uint32_t Port, uint32_t Line) + 514:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 515:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** MODIFY_REG(SYSCFG->EXTICR[Line & 0xFFU], (Line >> 16U), Port << POSITION_VAL((Line >> 16U))); + 516:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 517:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 518:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 519:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Get the configured defined for specific EXTI Line + 520:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll SYSCFG_EXTICR1 EXTIx LL_SYSCFG_GetEXTISource\n + 521:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_EXTICR2 EXTIx LL_SYSCFG_GetEXTISource\n + 522:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_EXTICR3 EXTIx LL_SYSCFG_GetEXTISource\n + 523:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_EXTICR4 EXTIx LL_SYSCFG_GetEXTISource + 524:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Line This parameter can be one of the following values: + 525:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE0 + 526:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE1 + 527:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE2 + 528:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE3 + 529:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE4 + 530:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE5 + 531:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE6 + 532:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE7 + 533:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE8 + 534:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE9 + 535:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE10 + 536:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE11 + 537:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE12 + 538:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE13 + 539:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE14 + 540:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_LINE15 + 541:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval Returned value can be one of the following values: + 542:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTA + 543:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTB + 544:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTC + 545:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTD + 546:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTE + 547:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTF + 548:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTG + 549:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTH + 550:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTI + 551:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTJ + 552:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_EXTI_PORTK + 553:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * (*) value not defined in all devices + 554:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 555:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE uint32_t LL_SYSCFG_GetEXTISource(uint32_t Line) + ARM GAS /tmp/ccLtUKRp.s page 118 + + + 556:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 557:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** return (uint32_t)(READ_BIT(SYSCFG->EXTICR[Line & 0xFFU], (Line >> 16U)) >> POSITION_VAL(Line >> 1 + 558:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 559:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 560:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #if defined(SYSCFG_CBR_CLL) + 561:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 562:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Set connections to TIM1/8/15/16/17 Break inputs + 563:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_CBR CLL LL_SYSCFG_SetTIMBreakInputs\n + 564:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_CBR PVDL LL_SYSCFG_SetTIMBreakInputs + 565:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Break This parameter can be a combination of the following values: + 566:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP + 567:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_TIMBREAK_PVD + 568:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 569:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 570:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_SYSCFG_SetTIMBreakInputs(uint32_t Break) + 571:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 572:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** MODIFY_REG(SYSCFG->CBR, SYSCFG_CBR_CLL | SYSCFG_CBR_PVDL, Break); + 573:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 574:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 575:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 576:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Get connections to TIM1/8/15/16/17 Break inputs + 577:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_CBR CLL LL_SYSCFG_GetTIMBreakInputs\n + 578:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * SYSCFG_CBR PVDL LL_SYSCFG_GetTIMBreakInputs + 579:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval Returned value can be can be a combination of the following values: + 580:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP + 581:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_SYSCFG_TIMBREAK_PVD + 582:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 583:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE uint32_t LL_SYSCFG_GetTIMBreakInputs(void) + 584:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 585:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** return (uint32_t)(READ_BIT(SYSCFG->CBR, SYSCFG_CBR_CLL | SYSCFG_CBR_PVDL)); + 586:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 587:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** #endif /* SYSCFG_CBR_CLL */ + 588:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 589:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 590:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 591:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 592:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 593:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU + 594:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 595:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 596:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 597:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 598:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Return the device identifier + 599:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @note For STM32F75xxx and STM32F74xxx devices, the device ID is 0x449 + 600:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @note For STM32F77xxx and STM32F76xxx devices, the device ID is 0x451 + 601:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @note For STM32F72xxx and STM32F73xxx devices, the device ID is 0x452 + 602:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_IDCODE DEV_ID LL_DBGMCU_GetDeviceID + 603:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval Values between Min_Data=0x00 and Max_Data=0xFFF + 604:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 605:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void) + 606:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 607:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID)); + 608:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 609:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 610:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 611:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Return the device revision identifier + 612:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @note This field indicates the revision of the device. + ARM GAS /tmp/ccLtUKRp.s page 119 + + + 613:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** For example, it is read as RevA -> 0x1000, Cat 2 revZ -> 0x1001 + 614:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_IDCODE REV_ID LL_DBGMCU_GetRevisionID + 615:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF + 616:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 617:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void) + 618:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 619:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> DBGMCU_IDCODE_REV_ID_Pos); + 620:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 621:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 622:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 623:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Enable the Debug Module during SLEEP mode + 624:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_EnableDBGSleepMode + 625:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 626:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 627:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_EnableDBGSleepMode(void) + 628:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 629:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); + 630:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 631:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 632:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 633:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Disable the Debug Module during SLEEP mode + 634:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_DisableDBGSleepMode + 635:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 636:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 637:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_DisableDBGSleepMode(void) + 638:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 639:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); + 640:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 641:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 642:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 643:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Enable the Debug Module during STOP mode + 644:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_EnableDBGStopMode + 645:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 646:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 647:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_EnableDBGStopMode(void) + 648:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 649:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); + 650:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 651:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 652:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 653:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Disable the Debug Module during STOP mode + 654:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_DisableDBGStopMode + 655:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 656:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 657:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_DisableDBGStopMode(void) + 658:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 659:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); + 660:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 661:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 662:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 663:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Enable the Debug Module during STANDBY mode + 664:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_EnableDBGStandbyMode + 665:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 666:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 667:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_EnableDBGStandbyMode(void) + 668:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 669:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); + ARM GAS /tmp/ccLtUKRp.s page 120 + + + 670:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 671:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 672:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 673:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Disable the Debug Module during STANDBY mode + 674:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_DisableDBGStandbyMode + 675:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 676:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 677:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_DisableDBGStandbyMode(void) + 678:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 679:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); + 680:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 681:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 682:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 683:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Set Trace pin assignment control + 684:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_SetTracePinAssignment\n + 685:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_CR TRACE_MODE LL_DBGMCU_SetTracePinAssignment + 686:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param PinAssignment This parameter can be one of the following values: + 687:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_TRACE_NONE + 688:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_TRACE_ASYNCH + 689:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1 + 690:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2 + 691:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4 + 692:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 693:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 694:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_SetTracePinAssignment(uint32_t PinAssignment) + 695:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 696:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** MODIFY_REG(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE, PinAssignment); + 697:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 698:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 699:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 700:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Get Trace pin assignment control + 701:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_GetTracePinAssignment\n + 702:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_CR TRACE_MODE LL_DBGMCU_GetTracePinAssignment + 703:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval Returned value can be one of the following values: + 704:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_TRACE_NONE + 705:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_TRACE_ASYNCH + 706:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1 + 707:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2 + 708:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4 + 709:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 710:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE uint32_t LL_DBGMCU_GetTracePinAssignment(void) + 711:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 712:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** return (uint32_t)(READ_BIT(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE)); + 713:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 714:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 715:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 716:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Freeze APB1 peripherals (group1 peripherals) + 717:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_APB1_FZ DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 718:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 719:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM4_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 720:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM5_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 721:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 722:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 723:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM12_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 724:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM13_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 725:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM14_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 726:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_LPTIM1_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + ARM GAS /tmp/ccLtUKRp.s page 121 + + + 727:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 728:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 729:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 730:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_I2C1_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 731:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_I2C2_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 732:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_I2C3_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 733:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_I2C4_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 734:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_CAN1_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 735:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_CAN2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + 736:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_CAN3_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph + 737:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Periphs This parameter can be a combination of the following values: + 738:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP + 739:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP + 740:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP + 741:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP + 742:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP + 743:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP + 744:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM12_STOP + 745:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM13_STOP + 746:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM14_STOP + 747:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP + 748:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP + 749:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + 750:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + 751:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + 752:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP + 753:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP + 754:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_I2C4_STOP (*) + 755:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_CAN1_STOP + 756:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_CAN2_STOP (*) + 757:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_CAN3_STOP (*) + 758:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * + 759:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * (*) value not defined in all devices. + 760:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 761:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 762:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs) + 763:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 764:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** SET_BIT(DBGMCU->APB1FZ, Periphs); + 765:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 766:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 767:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 768:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Unfreeze APB1 peripherals (group1 peripherals) + 769:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_APB1_FZ DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 770:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 771:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM4_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 772:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM5_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 773:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 774:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 775:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM12_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 776:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM13_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 777:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_TIM14_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 778:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_LPTIM1_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 779:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 780:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 781:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 782:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_I2C1_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 783:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_I2C2_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + ARM GAS /tmp/ccLtUKRp.s page 122 + + + 784:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_I2C3_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 785:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_I2C4_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 786:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_CAN1_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 787:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_CAN2_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + 788:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB1_FZ DBG_CAN3_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph + 789:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Periphs This parameter can be a combination of the following values: + 790:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP + 791:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP + 792:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP + 793:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP + 794:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP + 795:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP + 796:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM12_STOP + 797:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM13_STOP + 798:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_TIM14_STOP + 799:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP + 800:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP + 801:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + 802:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + 803:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + 804:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP + 805:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP + 806:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_I2C4_STOP (*) + 807:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_CAN1_STOP + 808:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_CAN2_STOP (*) + 809:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB1_GRP1_CAN3_STOP (*) + 810:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * (*) value not defined in all devices. + 811:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 812:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 813:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs) + 814:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 815:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** CLEAR_BIT(DBGMCU->APB1FZ, Periphs); + 816:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 817:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 818:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 819:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Freeze APB2 peripherals + 820:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_APB2_FZ DBG_TIM1_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + 821:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB2_FZ DBG_TIM8_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + 822:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB2_FZ DBG_TIM9_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + 823:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB2_FZ DBG_TIM10_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + 824:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB2_FZ DBG_TIM11_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph + 825:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Periphs This parameter can be a combination of the following values: + 826:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP + 827:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP + 828:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB2_GRP1_TIM9_STOP + 829:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB2_GRP1_TIM10_STOP + 830:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB2_GRP1_TIM11_STOP + 831:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * + 832:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * (*) value not defined in all devices. + 833:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 834:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 835:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs) + 836:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 837:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** SET_BIT(DBGMCU->APB2FZ, Periphs); + 838:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 839:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 840:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + ARM GAS /tmp/ccLtUKRp.s page 123 + + + 841:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Unfreeze APB2 peripherals + 842:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll DBGMCU_APB2_FZ DBG_TIM1_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + 843:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB2_FZ DBG_TIM8_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + 844:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB2_FZ DBG_TIM9_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + 845:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB2_FZ DBG_TIM10_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph\n + 846:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * DBGMCU_APB2_FZ DBG_TIM11_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph + 847:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Periphs This parameter can be a combination of the following values: + 848:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP + 849:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP + 850:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB2_GRP1_TIM9_STOP + 851:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB2_GRP1_TIM10_STOP + 852:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_DBGMCU_APB2_GRP1_TIM11_STOP + 853:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * + 854:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * (*) value not defined in all devices. + 855:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 856:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 857:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs) + 858:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 859:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** CLEAR_BIT(DBGMCU->APB2FZ, Periphs); + 860:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 861:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 862:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @} + 863:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 864:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 865:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** @defgroup SYSTEM_LL_EF_FLASH FLASH + 866:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @{ + 867:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 868:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 869:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 870:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Set FLASH Latency + 871:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll FLASH_ACR LATENCY LL_FLASH_SetLatency + 872:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @param Latency This parameter can be one of the following values: + 873:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_0 + 874:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_1 + 875:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_2 + 876:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_3 + 877:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_4 + 878:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_5 + 879:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_6 + 880:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_7 + 881:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_8 + 882:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_9 + 883:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_10 + 884:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_11 + 885:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_12 + 886:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_13 + 887:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_14 + 888:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_15 + 889:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval None + 890:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 891:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency) + 585 .loc 5 891 22 view .LVU173 + 586 .LBB69: + 892:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 893:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency); + 587 .loc 5 893 3 view .LVU174 + 588 00f8 194A ldr r2, .L54+28 + ARM GAS /tmp/ccLtUKRp.s page 124 + + + 589 00fa 1368 ldr r3, [r2] + 590 .LVL45: + 591 .loc 5 893 3 is_stmt 0 view .LVU175 + 592 00fc 23F00F03 bic r3, r3, #15 + 593 0100 0343 orrs r3, r3, r0 + 594 0102 1360 str r3, [r2] + 595 .LVL46: + 596 .loc 5 893 3 view .LVU176 + 597 .LBE69: + 598 .LBE68: + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** do + 599 .loc 1 451 7 is_stmt 1 view .LVU177 + 451:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** do + 600 .loc 1 451 15 is_stmt 0 view .LVU178 + 601 0104 0221 movs r1, #2 + 602 .LVL47: + 603 .L30: + 452:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 604 .loc 1 452 7 is_stmt 1 discriminator 1 view .LVU179 + 455:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** timeout--; + 605 .loc 1 455 7 discriminator 1 view .LVU180 + 606 .LBB70: + 607 .LBI70: + 894:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** } + 895:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** + 896:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** /** + 897:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @brief Get FLASH Latency + 898:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @rmtoll FLASH_ACR LATENCY LL_FLASH_GetLatency + 899:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @retval Returned value can be one of the following values: + 900:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_0 + 901:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_1 + 902:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_2 + 903:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_3 + 904:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_4 + 905:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_5 + 906:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_6 + 907:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_7 + 908:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_8 + 909:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_9 + 910:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_10 + 911:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_11 + 912:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_12 + 913:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_13 + 914:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_14 + 915:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** * @arg @ref LL_FLASH_LATENCY_15 + 916:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** */ + 917:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** __STATIC_INLINE uint32_t LL_FLASH_GetLatency(void) + 608 .loc 5 917 26 discriminator 1 view .LVU181 + 609 .LBB71: + 918:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** { + 919:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h **** return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY)); + 610 .loc 5 919 3 discriminator 1 view .LVU182 + 611 .loc 5 919 21 is_stmt 0 discriminator 1 view .LVU183 + 612 0106 164B ldr r3, .L54+28 + 613 0108 1B68 ldr r3, [r3] + 614 .loc 5 919 10 discriminator 1 view .LVU184 + 615 010a 03F00F03 and r3, r3, #15 + ARM GAS /tmp/ccLtUKRp.s page 125 + + + 616 .LVL48: + 617 .loc 5 919 10 discriminator 1 view .LVU185 + 618 .LBE71: + 619 .LBE70: + 456:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } while ((getlatency != latency) && (timeout > 0)); + 620 .loc 1 456 7 is_stmt 1 discriminator 1 view .LVU186 + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 621 .loc 1 457 15 discriminator 1 view .LVU187 + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 622 .loc 1 457 52 is_stmt 0 discriminator 1 view .LVU188 + 623 010e 0139 subs r1, r1, #1 + 624 .LVL49: + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 625 .loc 1 457 52 discriminator 1 view .LVU189 + 626 0110 14BF ite ne + 627 0112 0122 movne r2, #1 + 628 0114 0022 moveq r2, #0 + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 629 .loc 1 457 40 discriminator 1 view .LVU190 + 630 0116 9842 cmp r0, r3 + 631 0118 0CBF ite eq + 632 011a 0022 moveq r2, #0 + 633 011c 02F00102 andne r2, r2, #1 + 457:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 634 .loc 1 457 7 discriminator 1 view .LVU191 + 635 0120 002A cmp r2, #0 + 636 0122 F0D1 bne .L30 + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 637 .loc 1 459 7 is_stmt 1 view .LVU192 + 459:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 638 .loc 1 459 9 is_stmt 0 view .LVU193 + 639 0124 9842 cmp r0, r3 + 640 0126 0BD0 beq .L47 + 461:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 641 .loc 1 461 16 view .LVU194 + 642 0128 0120 movs r0, #1 + 643 .LVL50: + 644 .L25: + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 645 .loc 1 469 3 is_stmt 1 view .LVU195 + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 646 .loc 1 470 1 is_stmt 0 view .LVU196 + 647 012a 5DF8044B ldr r4, [sp], #4 + 648 .LCFI3: + 649 .cfi_remember_state + 650 .cfi_restore 4 + 651 .cfi_def_cfa_offset 0 + 652 012e 7047 bx lr + 653 .LVL51: + 654 .L44: + 655 .LCFI4: + 656 .cfi_restore_state + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 657 .loc 1 427 17 view .LVU197 + 658 0130 0320 movs r0, #3 + 659 .LVL52: + 427:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + ARM GAS /tmp/ccLtUKRp.s page 126 + + + 660 .loc 1 427 17 view .LVU198 + 661 0132 E1E7 b .L28 + 662 .LVL53: + 663 .L45: + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 664 .loc 1 432 17 view .LVU199 + 665 0134 0220 movs r0, #2 + 666 .LVL54: + 432:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 667 .loc 1 432 17 view .LVU200 + 668 0136 DFE7 b .L28 + 669 .LVL55: + 670 .L46: + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 671 .loc 1 439 19 view .LVU201 + 672 0138 0120 movs r0, #1 + 673 .LVL56: + 439:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 674 .loc 1 439 19 view .LVU202 + 675 013a DDE7 b .L28 + 676 .LVL57: + 677 .L31: + 678 .LCFI5: + 679 .cfi_def_cfa_offset 0 + 680 .cfi_restore 4 + 336:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 681 .loc 1 336 12 view .LVU203 + 682 013c 0120 movs r0, #1 + 683 .LVL58: + 469:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 684 .loc 1 469 3 is_stmt 1 view .LVU204 + 470:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 685 .loc 1 470 1 is_stmt 0 view .LVU205 + 686 013e 7047 bx lr + 687 .LVL59: + 688 .L47: + 689 .LCFI6: + 690 .cfi_def_cfa_offset 4 + 691 .cfi_offset 4, -4 + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 692 .loc 1 465 16 view .LVU206 + 693 0140 0020 movs r0, #0 + 694 .LVL60: + 465:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 695 .loc 1 465 16 view .LVU207 + 696 0142 F2E7 b .L25 + 697 .L55: + 698 .align 2 + 699 .L54: + 700 0144 00700040 .word 1073770496 + 701 0148 000E2707 .word 120000000 + 702 014c 804A5D05 .word 90000000 + 703 0150 00879303 .word 60000000 + 704 0154 80C3C901 .word 30000000 + 705 0158 8058840C .word 210000000 + 706 015c 80D1F008 .word 150000000 + 707 0160 003C0240 .word 1073888256 + ARM GAS /tmp/ccLtUKRp.s page 127 + + + 708 .cfi_endproc + 709 .LFE408: + 711 .section .text.UTILS_EnablePLLAndSwitchSystem,"ax",%progbits + 712 .align 1 + 713 .syntax unified + 714 .thumb + 715 .thumb_func + 716 .fpu fpv5-d16 + 718 UTILS_EnablePLLAndSwitchSystem: + 719 .LVL61: + 720 .LFB413: + 673:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 674:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /** + 675:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @brief Function to enable PLL and switch system clock to PLL + 676:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param SYSCLK_Frequency SYSCLK frequency + 677:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + 678:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * the configuration information for the BUS prescalers. + 679:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * @retval An ErrorStatus enumeration value: + 680:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - SUCCESS: No problem to switch system to PLL + 681:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** * - ERROR: Problem to switch system to PLL + 682:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** */ + 683:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** static ErrorStatus UTILS_EnablePLLAndSwitchSystem(uint32_t SYSCLK_Frequency, LL_UTILS_ClkInitTypeDe + 684:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 721 .loc 1 684 1 is_stmt 1 view -0 + 722 .cfi_startproc + 723 @ args = 0, pretend = 0, frame = 0 + 724 @ frame_needed = 0, uses_anonymous_args = 0 + 725 .loc 1 684 1 is_stmt 0 view .LVU209 + 726 0000 70B5 push {r4, r5, r6, lr} + 727 .LCFI7: + 728 .cfi_def_cfa_offset 16 + 729 .cfi_offset 4, -16 + 730 .cfi_offset 5, -12 + 731 .cfi_offset 6, -8 + 732 .cfi_offset 14, -4 + 733 0002 0C46 mov r4, r1 + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 734 .loc 1 685 3 is_stmt 1 view .LVU210 + 735 .LVL62: + 686:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t hclk_frequency = 0U; + 736 .loc 1 686 3 view .LVU211 + 687:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 688:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_SYSCLK_DIV(UTILS_ClkInitStruct->AHBCLKDivider)); + 737 .loc 1 688 3 view .LVU212 + 689:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_APB1_DIV(UTILS_ClkInitStruct->APB1CLKDivider)); + 738 .loc 1 689 3 view .LVU213 + 690:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_APB2_DIV(UTILS_ClkInitStruct->APB2CLKDivider)); + 739 .loc 1 690 3 view .LVU214 + 691:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 692:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Calculate HCLK frequency */ + 693:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** hclk_frequency = __LL_RCC_CALC_HCLK_FREQ(SYSCLK_Frequency, UTILS_ClkInitStruct->AHBCLKDivider); + 740 .loc 1 693 3 view .LVU215 + 741 .loc 1 693 20 is_stmt 0 view .LVU216 + 742 0004 0B68 ldr r3, [r1] + 743 0006 C3F30313 ubfx r3, r3, #4, #4 + 744 000a 254A ldr r2, .L68 + 745 000c D35C ldrb r3, [r2, r3] @ zero_extendqisi2 + ARM GAS /tmp/ccLtUKRp.s page 128 + + + 746 .loc 1 693 18 view .LVU217 + 747 000e 20FA03F5 lsr r5, r0, r3 + 748 .LVL63: + 694:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 695:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Increasing the number of wait states because of higher CPU frequency */ + 696:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(SystemCoreClock < hclk_frequency) + 749 .loc 1 696 3 is_stmt 1 view .LVU218 + 750 .loc 1 696 22 is_stmt 0 view .LVU219 + 751 0012 244B ldr r3, .L68+4 + 752 0014 1B68 ldr r3, [r3] + 753 .loc 1 696 5 view .LVU220 + 754 0016 AB42 cmp r3, r5 + 755 0018 31D3 bcc .L65 + 685:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t hclk_frequency = 0U; + 756 .loc 1 685 15 view .LVU221 + 757 001a 0026 movs r6, #0 + 758 .LVL64: + 759 .L57: + 697:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 698:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Set FLASH latency to highest latency */ + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = LL_SetFlashLatency(hclk_frequency); + 700:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 701:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 702:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Update system clock configuration */ + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(status == SUCCESS) + 704:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 705:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Enable PLL */ + 706:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_PLL_Enable(); + 760 .loc 1 706 5 is_stmt 1 view .LVU222 + 761 .LBB72: + 762 .LBI72: +3132:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 763 .loc 2 3132 22 view .LVU223 + 764 .LBB73: +3134:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 765 .loc 2 3134 3 view .LVU224 + 766 001c 224A ldr r2, .L68+8 + 767 001e 1368 ldr r3, [r2] + 768 0020 43F08073 orr r3, r3, #16777216 + 769 0024 1360 str r3, [r2] + 770 .L59: + 771 .LBE73: + 772 .LBE72: + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (LL_RCC_PLL_IsReady() != 1U) + 708:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 709:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Wait for PLL ready */ + 710:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 773 .loc 1 710 5 discriminator 1 view .LVU225 + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (LL_RCC_PLL_IsReady() != 1U) + 774 .loc 1 707 11 discriminator 1 view .LVU226 + 775 .LBB74: + 776 .LBI74: +3153:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 777 .loc 2 3153 26 discriminator 1 view .LVU227 + 778 .LBB75: +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 779 .loc 2 3155 3 discriminator 1 view .LVU228 + ARM GAS /tmp/ccLtUKRp.s page 129 + + +3155:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 780 .loc 2 3155 11 is_stmt 0 discriminator 1 view .LVU229 + 781 0026 204B ldr r3, .L68+8 + 782 0028 1B68 ldr r3, [r3] + 783 .LBE75: + 784 .LBE74: + 707:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (LL_RCC_PLL_IsReady() != 1U) + 785 .loc 1 707 11 discriminator 1 view .LVU230 + 786 002a 13F0007F tst r3, #33554432 + 787 002e FAD0 beq .L59 + 711:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 712:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Sysclk activation on the main PLL */ + 713:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_SetAHBPrescaler(UTILS_ClkInitStruct->AHBCLKDivider); + 788 .loc 1 713 5 is_stmt 1 view .LVU231 + 789 0030 2368 ldr r3, [r4] + 790 .LVL65: + 791 .LBB76: + 792 .LBI76: +2247:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 793 .loc 2 2247 22 view .LVU232 + 794 .LBB77: +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 795 .loc 2 2249 3 view .LVU233 + 796 0032 1D4A ldr r2, .L68+8 + 797 0034 9168 ldr r1, [r2, #8] + 798 0036 21F0F001 bic r1, r1, #240 + 799 003a 0B43 orrs r3, r3, r1 + 800 .LVL66: +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 801 .loc 2 2249 3 is_stmt 0 view .LVU234 + 802 003c 9360 str r3, [r2, #8] + 803 .LVL67: +2249:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 804 .loc 2 2249 3 view .LVU235 + 805 .LBE77: + 806 .LBE76: + 714:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); + 807 .loc 1 714 5 is_stmt 1 view .LVU236 + 808 .LBB78: + 809 .LBI78: +2214:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 810 .loc 2 2214 22 view .LVU237 + 811 .LBB79: +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 812 .loc 2 2216 3 view .LVU238 + 813 003e 9368 ldr r3, [r2, #8] + 814 0040 23F00303 bic r3, r3, #3 + 815 0044 43F00203 orr r3, r3, #2 + 816 0048 9360 str r3, [r2, #8] + 817 .LVL68: + 818 .L60: +2216:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 819 .loc 2 2216 3 is_stmt 0 view .LVU239 + 820 .LBE79: + 821 .LBE78: + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + 716:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + ARM GAS /tmp/ccLtUKRp.s page 130 + + + 717:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Wait for system clock switch to PLL */ + 718:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 822 .loc 1 718 5 is_stmt 1 discriminator 1 view .LVU240 + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + 823 .loc 1 715 11 discriminator 1 view .LVU241 + 824 .LBB80: + 825 .LBI80: +2227:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 826 .loc 2 2227 26 discriminator 1 view .LVU242 + 827 .LBB81: +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 828 .loc 2 2229 3 discriminator 1 view .LVU243 +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 829 .loc 2 2229 21 is_stmt 0 discriminator 1 view .LVU244 + 830 004a 174B ldr r3, .L68+8 + 831 004c 9B68 ldr r3, [r3, #8] +2229:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 832 .loc 2 2229 10 discriminator 1 view .LVU245 + 833 004e 03F00C03 and r3, r3, #12 + 834 .LBE81: + 835 .LBE80: + 715:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + 836 .loc 1 715 11 discriminator 1 view .LVU246 + 837 0052 082B cmp r3, #8 + 838 0054 F9D1 bne .L60 + 719:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 720:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Set APB1 & APB2 prescaler*/ + 721:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_SetAPB1Prescaler(UTILS_ClkInitStruct->APB1CLKDivider); + 839 .loc 1 721 5 is_stmt 1 view .LVU247 + 840 0056 6268 ldr r2, [r4, #4] + 841 .LVL69: + 842 .LBB82: + 843 .LBI82: +2263:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 844 .loc 2 2263 22 view .LVU248 + 845 .LBB83: +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 846 .loc 2 2265 3 view .LVU249 + 847 0058 134B ldr r3, .L68+8 + 848 005a 9968 ldr r1, [r3, #8] + 849 005c 21F4E051 bic r1, r1, #7168 + 850 0060 0A43 orrs r2, r2, r1 + 851 .LVL70: +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 852 .loc 2 2265 3 is_stmt 0 view .LVU250 + 853 0062 9A60 str r2, [r3, #8] + 854 .LVL71: +2265:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 855 .loc 2 2265 3 view .LVU251 + 856 .LBE83: + 857 .LBE82: + 722:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_RCC_SetAPB2Prescaler(UTILS_ClkInitStruct->APB2CLKDivider); + 858 .loc 1 722 5 is_stmt 1 view .LVU252 + 859 0064 A268 ldr r2, [r4, #8] + 860 .LVL72: + 861 .LBB84: + 862 .LBI84: + ARM GAS /tmp/ccLtUKRp.s page 131 + + +2279:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 863 .loc 2 2279 22 view .LVU253 + 864 .LBB85: +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 865 .loc 2 2281 3 view .LVU254 + 866 0066 9968 ldr r1, [r3, #8] + 867 0068 21F46041 bic r1, r1, #57344 + 868 006c 0A43 orrs r2, r2, r1 + 869 .LVL73: +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 870 .loc 2 2281 3 is_stmt 0 view .LVU255 + 871 006e 9A60 str r2, [r3, #8] + 872 .LVL74: + 873 .L58: +2281:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 874 .loc 2 2281 3 view .LVU256 + 875 .LBE85: + 876 .LBE84: + 723:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 724:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 725:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Decreasing the number of wait states because of lower CPU frequency */ + 726:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(SystemCoreClock > hclk_frequency) + 877 .loc 1 726 3 is_stmt 1 view .LVU257 + 878 .loc 1 726 22 is_stmt 0 view .LVU258 + 879 0070 0C4B ldr r3, .L68+4 + 880 0072 1B68 ldr r3, [r3] + 881 .loc 1 726 5 view .LVU259 + 882 0074 AB42 cmp r3, r5 + 883 0076 09D8 bhi .L66 + 884 .L61: + 885 .LVL75: + 727:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 728:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Set FLASH latency to lowest latency */ + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** status = LL_SetFlashLatency(hclk_frequency); + 730:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 731:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 732:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** /* Update SystemCoreClock variable */ + 733:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** if(status == SUCCESS) + 886 .loc 1 733 3 is_stmt 1 view .LVU260 + 887 .loc 1 733 5 is_stmt 0 view .LVU261 + 888 0078 6EB1 cbz r6, .L67 + 889 .L62: + 734:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** LL_SetSystemCoreClock(hclk_frequency); + 736:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 737:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 738:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** return status; + 890 .loc 1 738 3 is_stmt 1 view .LVU262 + 739:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 891 .loc 1 739 1 is_stmt 0 view .LVU263 + 892 007a 3046 mov r0, r6 + 893 007c 70BD pop {r4, r5, r6, pc} + 894 .LVL76: + 895 .L65: + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 896 .loc 1 699 5 is_stmt 1 view .LVU264 + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + ARM GAS /tmp/ccLtUKRp.s page 132 + + + 897 .loc 1 699 14 is_stmt 0 view .LVU265 + 898 007e 2846 mov r0, r5 + 899 .LVL77: + 699:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 900 .loc 1 699 14 view .LVU266 + 901 0080 FFF7FEFF bl LL_SetFlashLatency + 902 .LVL78: + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 903 .loc 1 703 3 is_stmt 1 view .LVU267 + 703:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 904 .loc 1 703 5 is_stmt 0 view .LVU268 + 905 0084 0646 mov r6, r0 + 906 0086 0028 cmp r0, #0 + 907 0088 F2D1 bne .L58 + 908 008a C7E7 b .L57 + 909 .LVL79: + 910 .L66: + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 911 .loc 1 729 5 is_stmt 1 view .LVU269 + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 912 .loc 1 729 14 is_stmt 0 view .LVU270 + 913 008c 2846 mov r0, r5 + 914 008e FFF7FEFF bl LL_SetFlashLatency + 915 .LVL80: + 916 0092 0646 mov r6, r0 + 917 .LVL81: + 729:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 918 .loc 1 729 14 view .LVU271 + 919 0094 F0E7 b .L61 + 920 .L67: + 735:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 921 .loc 1 735 5 is_stmt 1 view .LVU272 + 922 0096 2846 mov r0, r5 + 923 0098 FFF7FEFF bl LL_SetSystemCoreClock + 924 .LVL82: + 925 009c EDE7 b .L62 + 926 .L69: + 927 009e 00BF .align 2 + 928 .L68: + 929 00a0 00000000 .word AHBPrescTable + 930 00a4 00000000 .word SystemCoreClock + 931 00a8 00380240 .word 1073887232 + 932 .cfi_endproc + 933 .LFE413: + 935 .section .text.LL_PLL_ConfigSystemClock_HSI,"ax",%progbits + 936 .align 1 + 937 .global LL_PLL_ConfigSystemClock_HSI + 938 .syntax unified + 939 .thumb + 940 .thumb_func + 941 .fpu fpv5-d16 + 943 LL_PLL_ConfigSystemClock_HSI: + 944 .LVL83: + 945 .LFB409: + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 946 .loc 1 490 1 view -0 + 947 .cfi_startproc + ARM GAS /tmp/ccLtUKRp.s page 133 + + + 948 @ args = 0, pretend = 0, frame = 0 + 949 @ frame_needed = 0, uses_anonymous_args = 0 + 490:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 950 .loc 1 490 1 is_stmt 0 view .LVU274 + 951 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 952 .LCFI8: + 953 .cfi_def_cfa_offset 24 + 954 .cfi_offset 3, -24 + 955 .cfi_offset 4, -20 + 956 .cfi_offset 5, -16 + 957 .cfi_offset 6, -12 + 958 .cfi_offset 7, -8 + 959 .cfi_offset 14, -4 + 960 0002 0446 mov r4, r0 + 961 0004 0D46 mov r5, r1 + 491:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t pllfreq = 0U; + 962 .loc 1 491 3 is_stmt 1 view .LVU275 + 963 .LVL84: + 492:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 964 .loc 1 492 3 view .LVU276 + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 965 .loc 1 495 3 view .LVU277 + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 966 .loc 1 495 6 is_stmt 0 view .LVU278 + 967 0006 FFF7FEFF bl UTILS_PLL_IsBusy + 968 .LVL85: + 495:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 969 .loc 1 495 5 view .LVU279 + 970 000a 10BB cbnz r0, .L74 + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 971 .loc 1 498 5 is_stmt 1 view .LVU280 + 498:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 972 .loc 1 498 15 is_stmt 0 view .LVU281 + 973 000c 2146 mov r1, r4 + 974 000e 1248 ldr r0, .L76 + 975 0010 FFF7FEFF bl UTILS_GetPLLOutputFrequency + 976 .LVL86: + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 977 .loc 1 501 5 is_stmt 1 view .LVU282 + 978 .LBB86: + 979 .LBI86: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 980 .loc 2 2030 26 view .LVU283 + 981 .LBB87: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 982 .loc 2 2032 3 view .LVU284 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 983 .loc 2 2032 11 is_stmt 0 view .LVU285 + 984 0014 114B ldr r3, .L76+4 + 985 0016 1B68 ldr r3, [r3] + 986 .LBE87: + 987 .LBE86: + 501:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 988 .loc 1 501 7 view .LVU286 + 989 0018 13F0020F tst r3, #2 + 990 001c 09D1 bne .L72 + 503:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (LL_RCC_HSI_IsReady() != 1U) + ARM GAS /tmp/ccLtUKRp.s page 134 + + + 991 .loc 1 503 7 is_stmt 1 view .LVU287 + 992 .LBB88: + 993 .LBI88: +2010:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 994 .loc 2 2010 22 view .LVU288 + 995 .LBB89: +2012:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 996 .loc 2 2012 3 view .LVU289 + 997 001e 0F4A ldr r2, .L76+4 + 998 0020 1368 ldr r3, [r2] + 999 0022 43F00103 orr r3, r3, #1 + 1000 0026 1360 str r3, [r2] + 1001 .L73: + 1002 .LBE89: + 1003 .LBE88: + 507:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1004 .loc 1 507 7 discriminator 1 view .LVU290 + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1005 .loc 1 504 13 discriminator 1 view .LVU291 + 1006 .LBB90: + 1007 .LBI90: +2030:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1008 .loc 2 2030 26 discriminator 1 view .LVU292 + 1009 .LBB91: +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1010 .loc 2 2032 3 discriminator 1 view .LVU293 +2032:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1011 .loc 2 2032 11 is_stmt 0 discriminator 1 view .LVU294 + 1012 0028 0C4B ldr r3, .L76+4 + 1013 002a 1B68 ldr r3, [r3] + 1014 .LBE91: + 1015 .LBE90: + 504:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1016 .loc 1 504 13 discriminator 1 view .LVU295 + 1017 002c 13F0020F tst r3, #2 + 1018 0030 FAD0 beq .L73 + 1019 .L72: + 511:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** UTILS_PLLInitStruct->PLLP); + 1020 .loc 1 511 5 is_stmt 1 view .LVU296 + 1021 0032 2168 ldr r1, [r4] + 1022 0034 6668 ldr r6, [r4, #4] + 1023 0036 A268 ldr r2, [r4, #8] + 1024 .LVL87: + 1025 .LBB92: + 1026 .LBI92: +3241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1027 .loc 2 3241 22 view .LVU297 + 1028 .LBB93: +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); + 1029 .loc 2 3243 3 view .LVU298 + 1030 0038 084C ldr r4, .L76+4 + 1031 .LVL88: +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); + 1032 .loc 2 3243 3 is_stmt 0 view .LVU299 + 1033 003a 6768 ldr r7, [r4, #4] + 1034 003c 084B ldr r3, .L76+8 + 1035 003e 3B40 ands r3, r3, r7 + ARM GAS /tmp/ccLtUKRp.s page 135 + + + 1036 0040 41EA8611 orr r1, r1, r6, lsl #6 + 1037 .LVL89: +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); + 1038 .loc 2 3243 3 view .LVU300 + 1039 0044 0A43 orrs r2, r2, r1 + 1040 .LVL90: +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); + 1041 .loc 2 3243 3 view .LVU301 + 1042 0046 1343 orrs r3, r3, r2 + 1043 0048 6360 str r3, [r4, #4] + 1044 .LVL91: +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); + 1045 .loc 2 3243 3 view .LVU302 + 1046 .LBE93: + 1047 .LBE92: + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1048 .loc 1 515 5 is_stmt 1 view .LVU303 + 515:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1049 .loc 1 515 14 is_stmt 0 view .LVU304 + 1050 004a 2946 mov r1, r5 + 1051 004c FFF7FEFF bl UTILS_EnablePLLAndSwitchSystem + 1052 .LVL92: + 1053 .L71: + 523:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1054 .loc 1 523 3 is_stmt 1 view .LVU305 + 524:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 1055 .loc 1 524 1 is_stmt 0 view .LVU306 + 1056 0050 F8BD pop {r3, r4, r5, r6, r7, pc} + 1057 .LVL93: + 1058 .L74: + 520:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1059 .loc 1 520 12 view .LVU307 + 1060 0052 0120 movs r0, #1 + 1061 0054 FCE7 b .L71 + 1062 .L77: + 1063 0056 00BF .align 2 + 1064 .L76: + 1065 0058 0024F400 .word 16000000 + 1066 005c 00380240 .word 1073887232 + 1067 0060 0080BCFF .word -4423680 + 1068 .cfi_endproc + 1069 .LFE409: + 1071 .section .text.LL_PLL_ConfigSystemClock_HSE,"ax",%progbits + 1072 .align 1 + 1073 .global LL_PLL_ConfigSystemClock_HSE + 1074 .syntax unified + 1075 .thumb + 1076 .thumb_func + 1077 .fpu fpv5-d16 + 1079 LL_PLL_ConfigSystemClock_HSE: + 1080 .LVL94: + 1081 .LFB410: + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 1082 .loc 1 548 1 is_stmt 1 view -0 + 1083 .cfi_startproc + 1084 @ args = 0, pretend = 0, frame = 0 + 1085 @ frame_needed = 0, uses_anonymous_args = 0 + ARM GAS /tmp/ccLtUKRp.s page 136 + + + 548:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** ErrorStatus status = SUCCESS; + 1086 .loc 1 548 1 is_stmt 0 view .LVU309 + 1087 0000 F8B5 push {r3, r4, r5, r6, r7, lr} + 1088 .LCFI9: + 1089 .cfi_def_cfa_offset 24 + 1090 .cfi_offset 3, -24 + 1091 .cfi_offset 4, -20 + 1092 .cfi_offset 5, -16 + 1093 .cfi_offset 6, -12 + 1094 .cfi_offset 7, -8 + 1095 .cfi_offset 14, -4 + 1096 0002 0646 mov r6, r0 + 1097 0004 0F46 mov r7, r1 + 1098 0006 1446 mov r4, r2 + 1099 0008 1D46 mov r5, r3 + 549:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** uint32_t pllfreq = 0U; + 1100 .loc 1 549 3 is_stmt 1 view .LVU310 + 1101 .LVL95: + 550:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 1102 .loc 1 550 3 view .LVU311 + 553:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** assert_param(IS_LL_UTILS_HSE_BYPASS(HSEBypass)); + 1103 .loc 1 553 3 view .LVU312 + 554:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 1104 .loc 1 554 3 view .LVU313 + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1105 .loc 1 557 3 view .LVU314 + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1106 .loc 1 557 6 is_stmt 0 view .LVU315 + 1107 000a FFF7FEFF bl UTILS_PLL_IsBusy + 1108 .LVL96: + 557:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1109 .loc 1 557 5 view .LVU316 + 1110 000e 0028 cmp r0, #0 + 1111 0010 31D1 bne .L84 + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 1112 .loc 1 560 5 is_stmt 1 view .LVU317 + 560:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + 1113 .loc 1 560 15 is_stmt 0 view .LVU318 + 1114 0012 2146 mov r1, r4 + 1115 0014 3046 mov r0, r6 + 1116 0016 FFF7FEFF bl UTILS_GetPLLOutputFrequency + 1117 .LVL97: + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1118 .loc 1 563 5 is_stmt 1 view .LVU319 + 1119 .LBB94: + 1120 .LBI94: +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1121 .loc 2 1992 26 view .LVU320 + 1122 .LBB95: +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1123 .loc 2 1994 3 view .LVU321 +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1124 .loc 2 1994 11 is_stmt 0 view .LVU322 + 1125 001a 184B ldr r3, .L87 + 1126 001c 1B68 ldr r3, [r3] + 1127 .LBE95: + 1128 .LBE94: + ARM GAS /tmp/ccLtUKRp.s page 137 + + + 563:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1129 .loc 1 563 7 view .LVU323 + 1130 001e 13F4003F tst r3, #131072 + 1131 0022 10D1 bne .L80 + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1132 .loc 1 566 7 is_stmt 1 view .LVU324 + 566:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1133 .loc 1 566 9 is_stmt 0 view .LVU325 + 1134 0024 012F cmp r7, #1 + 1135 0026 20D0 beq .L86 + 572:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1136 .loc 1 572 9 is_stmt 1 view .LVU326 + 1137 .LBB96: + 1138 .LBI96: +1962:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1139 .loc 2 1962 22 view .LVU327 + 1140 .LBB97: +1964:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1141 .loc 2 1964 3 view .LVU328 + 1142 0028 144A ldr r2, .L87 + 1143 002a 1368 ldr r3, [r2] + 1144 002c 23F48023 bic r3, r3, #262144 + 1145 0030 1360 str r3, [r2] + 1146 .L82: + 1147 .LBE97: + 1148 .LBE96: + 576:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** while (LL_RCC_HSE_IsReady() != 1U) + 1149 .loc 1 576 7 view .LVU329 + 1150 .LBB98: + 1151 .LBI98: +1972:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1152 .loc 2 1972 22 view .LVU330 + 1153 .LBB99: +1974:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1154 .loc 2 1974 3 view .LVU331 + 1155 0032 124A ldr r2, .L87 + 1156 0034 1368 ldr r3, [r2] + 1157 0036 43F48033 orr r3, r3, #65536 + 1158 003a 1360 str r3, [r2] + 1159 .L83: + 1160 .LBE99: + 1161 .LBE98: + 580:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1162 .loc 1 580 7 discriminator 1 view .LVU332 + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1163 .loc 1 577 13 discriminator 1 view .LVU333 + 1164 .LBB100: + 1165 .LBI100: +1992:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1166 .loc 2 1992 26 discriminator 1 view .LVU334 + 1167 .LBB101: +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1168 .loc 2 1994 3 discriminator 1 view .LVU335 +1994:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1169 .loc 2 1994 11 is_stmt 0 discriminator 1 view .LVU336 + 1170 003c 0F4A ldr r2, .L87 + 1171 003e 1268 ldr r2, [r2] + ARM GAS /tmp/ccLtUKRp.s page 138 + + + 1172 .LBE101: + 1173 .LBE100: + 577:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** { + 1174 .loc 1 577 13 discriminator 1 view .LVU337 + 1175 0040 12F4003F tst r2, #131072 + 1176 0044 FAD0 beq .L83 + 1177 .L80: + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** UTILS_PLLInitStruct->PLLP); + 1178 .loc 1 584 5 is_stmt 1 view .LVU338 + 1179 0046 2268 ldr r2, [r4] + 1180 0048 6668 ldr r6, [r4, #4] + 1181 .LVL98: + 584:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** UTILS_PLLInitStruct->PLLP); + 1182 .loc 1 584 5 is_stmt 0 view .LVU339 + 1183 004a A168 ldr r1, [r4, #8] + 1184 .LVL99: + 1185 .LBB102: + 1186 .LBI102: +3241:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1187 .loc 2 3241 22 is_stmt 1 view .LVU340 + 1188 .LBB103: +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); + 1189 .loc 2 3243 3 view .LVU341 + 1190 004c 0B4C ldr r4, .L87 + 1191 .LVL100: +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); + 1192 .loc 2 3243 3 is_stmt 0 view .LVU342 + 1193 004e 6768 ldr r7, [r4, #4] + 1194 .LVL101: +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); + 1195 .loc 2 3243 3 view .LVU343 + 1196 0050 0B4B ldr r3, .L87+4 + 1197 0052 3B40 ands r3, r3, r7 + 1198 0054 42F48002 orr r2, r2, #4194304 + 1199 .LVL102: +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); + 1200 .loc 2 3243 3 view .LVU344 + 1201 0058 42EA8612 orr r2, r2, r6, lsl #6 + 1202 005c 0A43 orrs r2, r2, r1 + 1203 005e 1343 orrs r3, r3, r2 + 1204 0060 6360 str r3, [r4, #4] + 1205 .LVL103: +3243:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** Source | PLLM | PLLN << RCC_PLLCFGR_PLLN_Pos | PLLP); + 1206 .loc 2 3243 3 view .LVU345 + 1207 .LBE103: + 1208 .LBE102: + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1209 .loc 1 588 5 is_stmt 1 view .LVU346 + 588:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1210 .loc 1 588 14 is_stmt 0 view .LVU347 + 1211 0062 2946 mov r1, r5 + 1212 0064 FFF7FEFF bl UTILS_EnablePLLAndSwitchSystem + 1213 .LVL104: + 1214 .L79: + 596:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1215 .loc 1 596 3 is_stmt 1 view .LVU348 + 597:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** + ARM GAS /tmp/ccLtUKRp.s page 139 + + + 1216 .loc 1 597 1 is_stmt 0 view .LVU349 + 1217 0068 F8BD pop {r3, r4, r5, r6, r7, pc} + 1218 .LVL105: + 1219 .L86: + 568:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1220 .loc 1 568 9 is_stmt 1 view .LVU350 + 1221 .LBB104: + 1222 .LBI104: +1952:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** { + 1223 .loc 2 1952 22 view .LVU351 + 1224 .LBB105: +1954:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** } + 1225 .loc 2 1954 3 view .LVU352 + 1226 006a 044A ldr r2, .L87 + 1227 006c 1368 ldr r3, [r2] + 1228 006e 43F48023 orr r3, r3, #262144 + 1229 0072 1360 str r3, [r2] +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 1230 .loc 2 1955 1 is_stmt 0 view .LVU353 + 1231 0074 DDE7 b .L82 + 1232 .LVL106: + 1233 .L84: +1955:Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h **** + 1234 .loc 2 1955 1 view .LVU354 + 1235 .LBE105: + 1236 .LBE104: + 593:Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_utils.c **** } + 1237 .loc 1 593 12 view .LVU355 + 1238 0076 0120 movs r0, #1 + 1239 0078 F6E7 b .L79 + 1240 .L88: + 1241 007a 00BF .align 2 + 1242 .L87: + 1243 007c 00380240 .word 1073887232 + 1244 0080 0080BCFF .word -4423680 + 1245 .cfi_endproc + 1246 .LFE410: + 1248 .text + 1249 .Letext0: + 1250 .file 6 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 1251 .file 7 "Drivers/CMSIS/Include/core_cm7.h" + 1252 .file 8 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h" + 1253 .file 9 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + 1254 .file 10 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h" + ARM GAS /tmp/ccLtUKRp.s page 140 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 stm32f7xx_ll_utils.c + /tmp/ccLtUKRp.s:17 .text.UTILS_GetPLLOutputFrequency:0000000000000000 $t + /tmp/ccLtUKRp.s:24 .text.UTILS_GetPLLOutputFrequency:0000000000000000 UTILS_GetPLLOutputFrequency + /tmp/ccLtUKRp.s:74 .text.UTILS_PLL_IsBusy:0000000000000000 $t + /tmp/ccLtUKRp.s:80 .text.UTILS_PLL_IsBusy:0000000000000000 UTILS_PLL_IsBusy + /tmp/ccLtUKRp.s:155 .text.UTILS_PLL_IsBusy:000000000000002c $d + /tmp/ccLtUKRp.s:160 .text.LL_Init1msTick:0000000000000000 $t + /tmp/ccLtUKRp.s:167 .text.LL_Init1msTick:0000000000000000 LL_Init1msTick + /tmp/ccLtUKRp.s:208 .text.LL_Init1msTick:000000000000001c $d + /tmp/ccLtUKRp.s:213 .text.LL_mDelay:0000000000000000 $t + /tmp/ccLtUKRp.s:220 .text.LL_mDelay:0000000000000000 LL_mDelay + /tmp/ccLtUKRp.s:276 .text.LL_SetSystemCoreClock:0000000000000000 $t + /tmp/ccLtUKRp.s:283 .text.LL_SetSystemCoreClock:0000000000000000 LL_SetSystemCoreClock + /tmp/ccLtUKRp.s:300 .text.LL_SetSystemCoreClock:0000000000000008 $d + /tmp/ccLtUKRp.s:305 .text.LL_SetFlashLatency:0000000000000000 $t + /tmp/ccLtUKRp.s:312 .text.LL_SetFlashLatency:0000000000000000 LL_SetFlashLatency + /tmp/ccLtUKRp.s:700 .text.LL_SetFlashLatency:0000000000000144 $d + /tmp/ccLtUKRp.s:712 .text.UTILS_EnablePLLAndSwitchSystem:0000000000000000 $t + /tmp/ccLtUKRp.s:718 .text.UTILS_EnablePLLAndSwitchSystem:0000000000000000 UTILS_EnablePLLAndSwitchSystem + /tmp/ccLtUKRp.s:929 .text.UTILS_EnablePLLAndSwitchSystem:00000000000000a0 $d + /tmp/ccLtUKRp.s:936 .text.LL_PLL_ConfigSystemClock_HSI:0000000000000000 $t + /tmp/ccLtUKRp.s:943 .text.LL_PLL_ConfigSystemClock_HSI:0000000000000000 LL_PLL_ConfigSystemClock_HSI + /tmp/ccLtUKRp.s:1065 .text.LL_PLL_ConfigSystemClock_HSI:0000000000000058 $d + /tmp/ccLtUKRp.s:1072 .text.LL_PLL_ConfigSystemClock_HSE:0000000000000000 $t + /tmp/ccLtUKRp.s:1079 .text.LL_PLL_ConfigSystemClock_HSE:0000000000000000 LL_PLL_ConfigSystemClock_HSE + /tmp/ccLtUKRp.s:1243 .text.LL_PLL_ConfigSystemClock_HSE:000000000000007c $d + +UNDEFINED SYMBOLS +SystemCoreClock +AHBPrescTable diff --git a/build/stm32f7xx_ll_utils.o b/build/stm32f7xx_ll_utils.o new file mode 100644 index 0000000..8658589 Binary files /dev/null and b/build/stm32f7xx_ll_utils.o differ diff --git a/build/syscall.d b/build/syscall.d new file mode 100644 index 0000000..35f3068 --- /dev/null +++ b/build/syscall.d @@ -0,0 +1,96 @@ +build/syscall.o: Middlewares/Third_Party/FatFs/src/option/syscall.c \ + Middlewares/Third_Party/FatFs/src/option/../ff.h \ + Middlewares/Third_Party/FatFs/src/option/../integer.h Inc/ffconf.h \ + Inc/main.h Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h Inc/bsp_driver_sd.h \ + Inc/fatfs_platform.h +Middlewares/Third_Party/FatFs/src/option/../ff.h: +Middlewares/Third_Party/FatFs/src/option/../integer.h: +Inc/ffconf.h: +Inc/main.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: +Inc/bsp_driver_sd.h: +Inc/fatfs_platform.h: diff --git a/build/syscall.lst b/build/syscall.lst new file mode 100644 index 0000000..dcc06d9 --- /dev/null +++ b/build/syscall.lst @@ -0,0 +1,30 @@ +ARM GAS /tmp/ccgoFeEr.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "syscall.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .Letext0: + 17 .file 1 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" + 18 .file 2 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" + 19 .file 3 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" + 20 .file 4 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + ARM GAS /tmp/ccgoFeEr.s page 2 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 syscall.c + +NO UNDEFINED SYMBOLS diff --git a/build/syscall.o b/build/syscall.o new file mode 100644 index 0000000..acd881b Binary files /dev/null and b/build/syscall.o differ diff --git a/build/syscalls.d b/build/syscalls.d new file mode 100644 index 0000000..d61fce2 --- /dev/null +++ b/build/syscalls.d @@ -0,0 +1 @@ +build/syscalls.o: Src/syscalls.c diff --git a/build/syscalls.lst b/build/syscalls.lst new file mode 100644 index 0000000..dc2f453 --- /dev/null +++ b/build/syscalls.lst @@ -0,0 +1,899 @@ +ARM GAS /tmp/cc9aEoPx.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "syscalls.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.initialise_monitor_handles,"ax",%progbits + 17 .align 1 + 18 .global initialise_monitor_handles + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 initialise_monitor_handles: + 26 .LFB25: + 27 .file 1 "Src/syscalls.c" + 1:Src/syscalls.c **** /** + 2:Src/syscalls.c **** ****************************************************************************** + 3:Src/syscalls.c **** * @file syscalls.c + 4:Src/syscalls.c **** * @author Auto-generated by STM32CubeMX + 5:Src/syscalls.c **** * @brief Minimal System calls file + 6:Src/syscalls.c **** * + 7:Src/syscalls.c **** * For more information about which c-functions + 8:Src/syscalls.c **** * need which of these lowlevel functions + 9:Src/syscalls.c **** * please consult the Newlib libc-manual + 10:Src/syscalls.c **** ****************************************************************************** + 11:Src/syscalls.c **** * @attention + 12:Src/syscalls.c **** * + 13:Src/syscalls.c **** * Copyright (c) 2020-2024 STMicroelectronics. + 14:Src/syscalls.c **** * All rights reserved. + 15:Src/syscalls.c **** * + 16:Src/syscalls.c **** * This software is licensed under terms that can be found in the LICENSE file + 17:Src/syscalls.c **** * in the root directory of this software component. + 18:Src/syscalls.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 19:Src/syscalls.c **** * + 20:Src/syscalls.c **** ****************************************************************************** + 21:Src/syscalls.c **** */ + 22:Src/syscalls.c **** + 23:Src/syscalls.c **** /* Includes */ + 24:Src/syscalls.c **** #include + 25:Src/syscalls.c **** #include + 26:Src/syscalls.c **** #include + 27:Src/syscalls.c **** #include + 28:Src/syscalls.c **** #include + 29:Src/syscalls.c **** #include + 30:Src/syscalls.c **** #include + 31:Src/syscalls.c **** #include + ARM GAS /tmp/cc9aEoPx.s page 2 + + + 32:Src/syscalls.c **** + 33:Src/syscalls.c **** + 34:Src/syscalls.c **** /* Variables */ + 35:Src/syscalls.c **** extern int __io_putchar(int ch) __attribute__((weak)); + 36:Src/syscalls.c **** extern int __io_getchar(void) __attribute__((weak)); + 37:Src/syscalls.c **** + 38:Src/syscalls.c **** + 39:Src/syscalls.c **** char *__env[1] = { 0 }; + 40:Src/syscalls.c **** char **environ = __env; + 41:Src/syscalls.c **** + 42:Src/syscalls.c **** + 43:Src/syscalls.c **** /* Functions */ + 44:Src/syscalls.c **** void initialise_monitor_handles() + 45:Src/syscalls.c **** { + 28 .loc 1 45 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 46:Src/syscalls.c **** } + 33 .loc 1 46 1 view .LVU1 + 34 0000 7047 bx lr + 35 .cfi_endproc + 36 .LFE25: + 38 .section .text._getpid,"ax",%progbits + 39 .align 1 + 40 .global _getpid + 41 .syntax unified + 42 .thumb + 43 .thumb_func + 44 .fpu fpv5-d16 + 46 _getpid: + 47 .LFB26: + 47:Src/syscalls.c **** + 48:Src/syscalls.c **** int _getpid(void) + 49:Src/syscalls.c **** { + 48 .loc 1 49 1 view -0 + 49 .cfi_startproc + 50 @ args = 0, pretend = 0, frame = 0 + 51 @ frame_needed = 0, uses_anonymous_args = 0 + 52 @ link register save eliminated. + 50:Src/syscalls.c **** return 1; + 53 .loc 1 50 3 view .LVU3 + 51:Src/syscalls.c **** } + 54 .loc 1 51 1 is_stmt 0 view .LVU4 + 55 0000 0120 movs r0, #1 + 56 0002 7047 bx lr + 57 .cfi_endproc + 58 .LFE26: + 60 .section .text._kill,"ax",%progbits + 61 .align 1 + 62 .global _kill + 63 .syntax unified + 64 .thumb + 65 .thumb_func + 66 .fpu fpv5-d16 + 68 _kill: + ARM GAS /tmp/cc9aEoPx.s page 3 + + + 69 .LVL0: + 70 .LFB27: + 52:Src/syscalls.c **** + 53:Src/syscalls.c **** int _kill(int pid, int sig) + 54:Src/syscalls.c **** { + 71 .loc 1 54 1 is_stmt 1 view -0 + 72 .cfi_startproc + 73 @ args = 0, pretend = 0, frame = 0 + 74 @ frame_needed = 0, uses_anonymous_args = 0 + 75 .loc 1 54 1 is_stmt 0 view .LVU6 + 76 0000 08B5 push {r3, lr} + 77 .LCFI0: + 78 .cfi_def_cfa_offset 8 + 79 .cfi_offset 3, -8 + 80 .cfi_offset 14, -4 + 55:Src/syscalls.c **** (void)pid; + 81 .loc 1 55 3 is_stmt 1 view .LVU7 + 56:Src/syscalls.c **** (void)sig; + 82 .loc 1 56 3 view .LVU8 + 57:Src/syscalls.c **** errno = EINVAL; + 83 .loc 1 57 3 view .LVU9 + 84 0002 FFF7FEFF bl __errno + 85 .LVL1: + 86 .loc 1 57 9 is_stmt 0 view .LVU10 + 87 0006 1623 movs r3, #22 + 88 0008 0360 str r3, [r0] + 58:Src/syscalls.c **** return -1; + 89 .loc 1 58 3 is_stmt 1 view .LVU11 + 59:Src/syscalls.c **** } + 90 .loc 1 59 1 is_stmt 0 view .LVU12 + 91 000a 4FF0FF30 mov r0, #-1 + 92 000e 08BD pop {r3, pc} + 93 .cfi_endproc + 94 .LFE27: + 96 .section .text._exit,"ax",%progbits + 97 .align 1 + 98 .global _exit + 99 .syntax unified + 100 .thumb + 101 .thumb_func + 102 .fpu fpv5-d16 + 104 _exit: + 105 .LVL2: + 106 .LFB28: + 60:Src/syscalls.c **** + 61:Src/syscalls.c **** void _exit (int status) + 62:Src/syscalls.c **** { + 107 .loc 1 62 1 is_stmt 1 view -0 + 108 .cfi_startproc + 109 @ Volatile: function does not return. + 110 @ args = 0, pretend = 0, frame = 0 + 111 @ frame_needed = 0, uses_anonymous_args = 0 + 112 .loc 1 62 1 is_stmt 0 view .LVU14 + 113 0000 08B5 push {r3, lr} + 114 .LCFI1: + 115 .cfi_def_cfa_offset 8 + 116 .cfi_offset 3, -8 + ARM GAS /tmp/cc9aEoPx.s page 4 + + + 117 .cfi_offset 14, -4 + 63:Src/syscalls.c **** _kill(status, -1); + 118 .loc 1 63 3 is_stmt 1 view .LVU15 + 119 0002 4FF0FF31 mov r1, #-1 + 120 0006 FFF7FEFF bl _kill + 121 .LVL3: + 122 .L6: + 64:Src/syscalls.c **** while (1) {} /* Make sure we hang here */ + 123 .loc 1 64 3 discriminator 1 view .LVU16 + 124 .loc 1 64 14 discriminator 1 view .LVU17 + 125 .loc 1 64 9 discriminator 1 view .LVU18 + 126 000a FEE7 b .L6 + 127 .cfi_endproc + 128 .LFE28: + 130 .section .text._read,"ax",%progbits + 131 .align 1 + 132 .weak _read + 133 .syntax unified + 134 .thumb + 135 .thumb_func + 136 .fpu fpv5-d16 + 138 _read: + 139 .LVL4: + 140 .LFB29: + 65:Src/syscalls.c **** } + 66:Src/syscalls.c **** + 67:Src/syscalls.c **** __attribute__((weak)) int _read(int file, char *ptr, int len) + 68:Src/syscalls.c **** { + 141 .loc 1 68 1 view -0 + 142 .cfi_startproc + 143 @ args = 0, pretend = 0, frame = 0 + 144 @ frame_needed = 0, uses_anonymous_args = 0 + 145 .loc 1 68 1 is_stmt 0 view .LVU20 + 146 0000 70B5 push {r4, r5, r6, lr} + 147 .LCFI2: + 148 .cfi_def_cfa_offset 16 + 149 .cfi_offset 4, -16 + 150 .cfi_offset 5, -12 + 151 .cfi_offset 6, -8 + 152 .cfi_offset 14, -4 + 153 0002 0C46 mov r4, r1 + 154 0004 1646 mov r6, r2 + 69:Src/syscalls.c **** (void)file; + 155 .loc 1 69 3 is_stmt 1 view .LVU21 + 70:Src/syscalls.c **** int DataIdx; + 156 .loc 1 70 3 view .LVU22 + 71:Src/syscalls.c **** + 72:Src/syscalls.c **** for (DataIdx = 0; DataIdx < len; DataIdx++) + 157 .loc 1 72 3 view .LVU23 + 158 .LVL5: + 159 .loc 1 72 16 is_stmt 0 view .LVU24 + 160 0006 0025 movs r5, #0 + 161 .loc 1 72 3 view .LVU25 + 162 0008 06E0 b .L9 + 163 .LVL6: + 164 .L10: + 73:Src/syscalls.c **** { + ARM GAS /tmp/cc9aEoPx.s page 5 + + + 74:Src/syscalls.c **** *ptr++ = __io_getchar(); + 165 .loc 1 74 5 is_stmt 1 discriminator 3 view .LVU26 + 166 .loc 1 74 14 is_stmt 0 discriminator 3 view .LVU27 + 167 000a FFF7FEFF bl __io_getchar + 168 .LVL7: + 169 .loc 1 74 9 discriminator 3 view .LVU28 + 170 000e 2146 mov r1, r4 + 171 .LVL8: + 172 .loc 1 74 12 discriminator 3 view .LVU29 + 173 0010 01F8010B strb r0, [r1], #1 + 174 .LVL9: + 72:Src/syscalls.c **** { + 175 .loc 1 72 36 is_stmt 1 discriminator 3 view .LVU30 + 72:Src/syscalls.c **** { + 176 .loc 1 72 43 is_stmt 0 discriminator 3 view .LVU31 + 177 0014 0135 adds r5, r5, #1 + 178 .LVL10: + 179 .loc 1 74 9 discriminator 3 view .LVU32 + 180 0016 0C46 mov r4, r1 + 181 .LVL11: + 182 .L9: + 72:Src/syscalls.c **** { + 183 .loc 1 72 21 is_stmt 1 discriminator 1 view .LVU33 + 72:Src/syscalls.c **** { + 184 .loc 1 72 3 is_stmt 0 discriminator 1 view .LVU34 + 185 0018 B542 cmp r5, r6 + 186 001a F6DB blt .L10 + 75:Src/syscalls.c **** } + 76:Src/syscalls.c **** + 77:Src/syscalls.c **** return len; + 187 .loc 1 77 3 is_stmt 1 view .LVU35 + 78:Src/syscalls.c **** } + 188 .loc 1 78 1 is_stmt 0 view .LVU36 + 189 001c 3046 mov r0, r6 + 190 001e 70BD pop {r4, r5, r6, pc} + 191 .loc 1 78 1 view .LVU37 + 192 .cfi_endproc + 193 .LFE29: + 195 .section .text._write,"ax",%progbits + 196 .align 1 + 197 .weak _write + 198 .syntax unified + 199 .thumb + 200 .thumb_func + 201 .fpu fpv5-d16 + 203 _write: + 204 .LVL12: + 205 .LFB30: + 79:Src/syscalls.c **** + 80:Src/syscalls.c **** __attribute__((weak)) int _write(int file, char *ptr, int len) + 81:Src/syscalls.c **** { + 206 .loc 1 81 1 is_stmt 1 view -0 + 207 .cfi_startproc + 208 @ args = 0, pretend = 0, frame = 0 + 209 @ frame_needed = 0, uses_anonymous_args = 0 + 210 .loc 1 81 1 is_stmt 0 view .LVU39 + 211 0000 70B5 push {r4, r5, r6, lr} + ARM GAS /tmp/cc9aEoPx.s page 6 + + + 212 .LCFI3: + 213 .cfi_def_cfa_offset 16 + 214 .cfi_offset 4, -16 + 215 .cfi_offset 5, -12 + 216 .cfi_offset 6, -8 + 217 .cfi_offset 14, -4 + 218 0002 0C46 mov r4, r1 + 219 0004 1646 mov r6, r2 + 82:Src/syscalls.c **** (void)file; + 220 .loc 1 82 3 is_stmt 1 view .LVU40 + 83:Src/syscalls.c **** int DataIdx; + 221 .loc 1 83 3 view .LVU41 + 84:Src/syscalls.c **** + 85:Src/syscalls.c **** for (DataIdx = 0; DataIdx < len; DataIdx++) + 222 .loc 1 85 3 view .LVU42 + 223 .LVL13: + 224 .loc 1 85 16 is_stmt 0 view .LVU43 + 225 0006 0025 movs r5, #0 + 226 .loc 1 85 3 view .LVU44 + 227 0008 04E0 b .L13 + 228 .LVL14: + 229 .L14: + 86:Src/syscalls.c **** { + 87:Src/syscalls.c **** __io_putchar(*ptr++); + 230 .loc 1 87 5 is_stmt 1 discriminator 3 view .LVU45 + 231 .loc 1 87 5 is_stmt 0 discriminator 3 view .LVU46 + 232 000a 14F8010B ldrb r0, [r4], #1 @ zero_extendqisi2 + 233 .LVL15: + 234 .loc 1 87 5 discriminator 3 view .LVU47 + 235 000e FFF7FEFF bl __io_putchar + 236 .LVL16: + 85:Src/syscalls.c **** { + 237 .loc 1 85 36 is_stmt 1 discriminator 3 view .LVU48 + 85:Src/syscalls.c **** { + 238 .loc 1 85 43 is_stmt 0 discriminator 3 view .LVU49 + 239 0012 0135 adds r5, r5, #1 + 240 .LVL17: + 241 .L13: + 85:Src/syscalls.c **** { + 242 .loc 1 85 21 is_stmt 1 discriminator 1 view .LVU50 + 85:Src/syscalls.c **** { + 243 .loc 1 85 3 is_stmt 0 discriminator 1 view .LVU51 + 244 0014 B542 cmp r5, r6 + 245 0016 F8DB blt .L14 + 88:Src/syscalls.c **** } + 89:Src/syscalls.c **** return len; + 246 .loc 1 89 3 is_stmt 1 view .LVU52 + 90:Src/syscalls.c **** } + 247 .loc 1 90 1 is_stmt 0 view .LVU53 + 248 0018 3046 mov r0, r6 + 249 001a 70BD pop {r4, r5, r6, pc} + 250 .loc 1 90 1 view .LVU54 + 251 .cfi_endproc + 252 .LFE30: + 254 .section .text._close,"ax",%progbits + 255 .align 1 + 256 .global _close + ARM GAS /tmp/cc9aEoPx.s page 7 + + + 257 .syntax unified + 258 .thumb + 259 .thumb_func + 260 .fpu fpv5-d16 + 262 _close: + 263 .LVL18: + 264 .LFB31: + 91:Src/syscalls.c **** + 92:Src/syscalls.c **** int _close(int file) + 93:Src/syscalls.c **** { + 265 .loc 1 93 1 is_stmt 1 view -0 + 266 .cfi_startproc + 267 @ args = 0, pretend = 0, frame = 0 + 268 @ frame_needed = 0, uses_anonymous_args = 0 + 269 @ link register save eliminated. + 94:Src/syscalls.c **** (void)file; + 270 .loc 1 94 3 view .LVU56 + 95:Src/syscalls.c **** return -1; + 271 .loc 1 95 3 view .LVU57 + 96:Src/syscalls.c **** } + 272 .loc 1 96 1 is_stmt 0 view .LVU58 + 273 0000 4FF0FF30 mov r0, #-1 + 274 .LVL19: + 275 .loc 1 96 1 view .LVU59 + 276 0004 7047 bx lr + 277 .cfi_endproc + 278 .LFE31: + 280 .section .text._fstat,"ax",%progbits + 281 .align 1 + 282 .global _fstat + 283 .syntax unified + 284 .thumb + 285 .thumb_func + 286 .fpu fpv5-d16 + 288 _fstat: + 289 .LVL20: + 290 .LFB32: + 97:Src/syscalls.c **** + 98:Src/syscalls.c **** + 99:Src/syscalls.c **** int _fstat(int file, struct stat *st) + 100:Src/syscalls.c **** { + 291 .loc 1 100 1 is_stmt 1 view -0 + 292 .cfi_startproc + 293 @ args = 0, pretend = 0, frame = 0 + 294 @ frame_needed = 0, uses_anonymous_args = 0 + 295 @ link register save eliminated. + 101:Src/syscalls.c **** (void)file; + 296 .loc 1 101 3 view .LVU61 + 102:Src/syscalls.c **** st->st_mode = S_IFCHR; + 297 .loc 1 102 3 view .LVU62 + 298 .loc 1 102 15 is_stmt 0 view .LVU63 + 299 0000 4FF40053 mov r3, #8192 + 300 0004 4B60 str r3, [r1, #4] + 103:Src/syscalls.c **** return 0; + 301 .loc 1 103 3 is_stmt 1 view .LVU64 + 104:Src/syscalls.c **** } + 302 .loc 1 104 1 is_stmt 0 view .LVU65 + ARM GAS /tmp/cc9aEoPx.s page 8 + + + 303 0006 0020 movs r0, #0 + 304 .LVL21: + 305 .loc 1 104 1 view .LVU66 + 306 0008 7047 bx lr + 307 .cfi_endproc + 308 .LFE32: + 310 .section .text._isatty,"ax",%progbits + 311 .align 1 + 312 .global _isatty + 313 .syntax unified + 314 .thumb + 315 .thumb_func + 316 .fpu fpv5-d16 + 318 _isatty: + 319 .LVL22: + 320 .LFB33: + 105:Src/syscalls.c **** + 106:Src/syscalls.c **** int _isatty(int file) + 107:Src/syscalls.c **** { + 321 .loc 1 107 1 is_stmt 1 view -0 + 322 .cfi_startproc + 323 @ args = 0, pretend = 0, frame = 0 + 324 @ frame_needed = 0, uses_anonymous_args = 0 + 325 @ link register save eliminated. + 108:Src/syscalls.c **** (void)file; + 326 .loc 1 108 3 view .LVU68 + 109:Src/syscalls.c **** return 1; + 327 .loc 1 109 3 view .LVU69 + 110:Src/syscalls.c **** } + 328 .loc 1 110 1 is_stmt 0 view .LVU70 + 329 0000 0120 movs r0, #1 + 330 .LVL23: + 331 .loc 1 110 1 view .LVU71 + 332 0002 7047 bx lr + 333 .cfi_endproc + 334 .LFE33: + 336 .section .text._lseek,"ax",%progbits + 337 .align 1 + 338 .global _lseek + 339 .syntax unified + 340 .thumb + 341 .thumb_func + 342 .fpu fpv5-d16 + 344 _lseek: + 345 .LVL24: + 346 .LFB34: + 111:Src/syscalls.c **** + 112:Src/syscalls.c **** int _lseek(int file, int ptr, int dir) + 113:Src/syscalls.c **** { + 347 .loc 1 113 1 is_stmt 1 view -0 + 348 .cfi_startproc + 349 @ args = 0, pretend = 0, frame = 0 + 350 @ frame_needed = 0, uses_anonymous_args = 0 + 351 @ link register save eliminated. + 114:Src/syscalls.c **** (void)file; + 352 .loc 1 114 3 view .LVU73 + 115:Src/syscalls.c **** (void)ptr; + ARM GAS /tmp/cc9aEoPx.s page 9 + + + 353 .loc 1 115 3 view .LVU74 + 116:Src/syscalls.c **** (void)dir; + 354 .loc 1 116 3 view .LVU75 + 117:Src/syscalls.c **** return 0; + 355 .loc 1 117 3 view .LVU76 + 118:Src/syscalls.c **** } + 356 .loc 1 118 1 is_stmt 0 view .LVU77 + 357 0000 0020 movs r0, #0 + 358 .LVL25: + 359 .loc 1 118 1 view .LVU78 + 360 0002 7047 bx lr + 361 .cfi_endproc + 362 .LFE34: + 364 .section .text._open,"ax",%progbits + 365 .align 1 + 366 .global _open + 367 .syntax unified + 368 .thumb + 369 .thumb_func + 370 .fpu fpv5-d16 + 372 _open: + 373 .LVL26: + 374 .LFB35: + 119:Src/syscalls.c **** + 120:Src/syscalls.c **** int _open(char *path, int flags, ...) + 121:Src/syscalls.c **** { + 375 .loc 1 121 1 is_stmt 1 view -0 + 376 .cfi_startproc + 377 @ args = 4, pretend = 12, frame = 0 + 378 @ frame_needed = 0, uses_anonymous_args = 1 + 379 @ link register save eliminated. + 380 .loc 1 121 1 is_stmt 0 view .LVU80 + 381 0000 0EB4 push {r1, r2, r3} + 382 .LCFI4: + 383 .cfi_def_cfa_offset 12 + 384 .cfi_offset 1, -12 + 385 .cfi_offset 2, -8 + 386 .cfi_offset 3, -4 + 122:Src/syscalls.c **** (void)path; + 387 .loc 1 122 3 is_stmt 1 view .LVU81 + 123:Src/syscalls.c **** (void)flags; + 388 .loc 1 123 3 view .LVU82 + 124:Src/syscalls.c **** /* Pretend like we always fail */ + 125:Src/syscalls.c **** return -1; + 389 .loc 1 125 3 view .LVU83 + 126:Src/syscalls.c **** } + 390 .loc 1 126 1 is_stmt 0 view .LVU84 + 391 0002 4FF0FF30 mov r0, #-1 + 392 .LVL27: + 393 .loc 1 126 1 view .LVU85 + 394 0006 03B0 add sp, sp, #12 + 395 .LCFI5: + 396 .cfi_restore 3 + 397 .cfi_restore 2 + 398 .cfi_restore 1 + 399 .cfi_def_cfa_offset 0 + 400 0008 7047 bx lr + ARM GAS /tmp/cc9aEoPx.s page 10 + + + 401 .cfi_endproc + 402 .LFE35: + 404 .section .text._wait,"ax",%progbits + 405 .align 1 + 406 .global _wait + 407 .syntax unified + 408 .thumb + 409 .thumb_func + 410 .fpu fpv5-d16 + 412 _wait: + 413 .LVL28: + 414 .LFB36: + 127:Src/syscalls.c **** + 128:Src/syscalls.c **** int _wait(int *status) + 129:Src/syscalls.c **** { + 415 .loc 1 129 1 is_stmt 1 view -0 + 416 .cfi_startproc + 417 @ args = 0, pretend = 0, frame = 0 + 418 @ frame_needed = 0, uses_anonymous_args = 0 + 419 .loc 1 129 1 is_stmt 0 view .LVU87 + 420 0000 08B5 push {r3, lr} + 421 .LCFI6: + 422 .cfi_def_cfa_offset 8 + 423 .cfi_offset 3, -8 + 424 .cfi_offset 14, -4 + 130:Src/syscalls.c **** (void)status; + 425 .loc 1 130 3 is_stmt 1 view .LVU88 + 131:Src/syscalls.c **** errno = ECHILD; + 426 .loc 1 131 3 view .LVU89 + 427 0002 FFF7FEFF bl __errno + 428 .LVL29: + 429 .loc 1 131 9 is_stmt 0 view .LVU90 + 430 0006 0A23 movs r3, #10 + 431 0008 0360 str r3, [r0] + 132:Src/syscalls.c **** return -1; + 432 .loc 1 132 3 is_stmt 1 view .LVU91 + 133:Src/syscalls.c **** } + 433 .loc 1 133 1 is_stmt 0 view .LVU92 + 434 000a 4FF0FF30 mov r0, #-1 + 435 000e 08BD pop {r3, pc} + 436 .cfi_endproc + 437 .LFE36: + 439 .section .text._unlink,"ax",%progbits + 440 .align 1 + 441 .global _unlink + 442 .syntax unified + 443 .thumb + 444 .thumb_func + 445 .fpu fpv5-d16 + 447 _unlink: + 448 .LVL30: + 449 .LFB37: + 134:Src/syscalls.c **** + 135:Src/syscalls.c **** int _unlink(char *name) + 136:Src/syscalls.c **** { + 450 .loc 1 136 1 is_stmt 1 view -0 + 451 .cfi_startproc + ARM GAS /tmp/cc9aEoPx.s page 11 + + + 452 @ args = 0, pretend = 0, frame = 0 + 453 @ frame_needed = 0, uses_anonymous_args = 0 + 454 .loc 1 136 1 is_stmt 0 view .LVU94 + 455 0000 08B5 push {r3, lr} + 456 .LCFI7: + 457 .cfi_def_cfa_offset 8 + 458 .cfi_offset 3, -8 + 459 .cfi_offset 14, -4 + 137:Src/syscalls.c **** (void)name; + 460 .loc 1 137 3 is_stmt 1 view .LVU95 + 138:Src/syscalls.c **** errno = ENOENT; + 461 .loc 1 138 3 view .LVU96 + 462 0002 FFF7FEFF bl __errno + 463 .LVL31: + 464 .loc 1 138 9 is_stmt 0 view .LVU97 + 465 0006 0223 movs r3, #2 + 466 0008 0360 str r3, [r0] + 139:Src/syscalls.c **** return -1; + 467 .loc 1 139 3 is_stmt 1 view .LVU98 + 140:Src/syscalls.c **** } + 468 .loc 1 140 1 is_stmt 0 view .LVU99 + 469 000a 4FF0FF30 mov r0, #-1 + 470 000e 08BD pop {r3, pc} + 471 .cfi_endproc + 472 .LFE37: + 474 .section .text._times,"ax",%progbits + 475 .align 1 + 476 .global _times + 477 .syntax unified + 478 .thumb + 479 .thumb_func + 480 .fpu fpv5-d16 + 482 _times: + 483 .LVL32: + 484 .LFB38: + 141:Src/syscalls.c **** + 142:Src/syscalls.c **** int _times(struct tms *buf) + 143:Src/syscalls.c **** { + 485 .loc 1 143 1 is_stmt 1 view -0 + 486 .cfi_startproc + 487 @ args = 0, pretend = 0, frame = 0 + 488 @ frame_needed = 0, uses_anonymous_args = 0 + 489 @ link register save eliminated. + 144:Src/syscalls.c **** (void)buf; + 490 .loc 1 144 3 view .LVU101 + 145:Src/syscalls.c **** return -1; + 491 .loc 1 145 3 view .LVU102 + 146:Src/syscalls.c **** } + 492 .loc 1 146 1 is_stmt 0 view .LVU103 + 493 0000 4FF0FF30 mov r0, #-1 + 494 .LVL33: + 495 .loc 1 146 1 view .LVU104 + 496 0004 7047 bx lr + 497 .cfi_endproc + 498 .LFE38: + 500 .section .text._stat,"ax",%progbits + 501 .align 1 + ARM GAS /tmp/cc9aEoPx.s page 12 + + + 502 .global _stat + 503 .syntax unified + 504 .thumb + 505 .thumb_func + 506 .fpu fpv5-d16 + 508 _stat: + 509 .LVL34: + 510 .LFB39: + 147:Src/syscalls.c **** + 148:Src/syscalls.c **** int _stat(char *file, struct stat *st) + 149:Src/syscalls.c **** { + 511 .loc 1 149 1 is_stmt 1 view -0 + 512 .cfi_startproc + 513 @ args = 0, pretend = 0, frame = 0 + 514 @ frame_needed = 0, uses_anonymous_args = 0 + 515 @ link register save eliminated. + 150:Src/syscalls.c **** (void)file; + 516 .loc 1 150 3 view .LVU106 + 151:Src/syscalls.c **** st->st_mode = S_IFCHR; + 517 .loc 1 151 3 view .LVU107 + 518 .loc 1 151 15 is_stmt 0 view .LVU108 + 519 0000 4FF40053 mov r3, #8192 + 520 0004 4B60 str r3, [r1, #4] + 152:Src/syscalls.c **** return 0; + 521 .loc 1 152 3 is_stmt 1 view .LVU109 + 153:Src/syscalls.c **** } + 522 .loc 1 153 1 is_stmt 0 view .LVU110 + 523 0006 0020 movs r0, #0 + 524 .LVL35: + 525 .loc 1 153 1 view .LVU111 + 526 0008 7047 bx lr + 527 .cfi_endproc + 528 .LFE39: + 530 .section .text._link,"ax",%progbits + 531 .align 1 + 532 .global _link + 533 .syntax unified + 534 .thumb + 535 .thumb_func + 536 .fpu fpv5-d16 + 538 _link: + 539 .LVL36: + 540 .LFB40: + 154:Src/syscalls.c **** + 155:Src/syscalls.c **** int _link(char *old, char *new) + 156:Src/syscalls.c **** { + 541 .loc 1 156 1 is_stmt 1 view -0 + 542 .cfi_startproc + 543 @ args = 0, pretend = 0, frame = 0 + 544 @ frame_needed = 0, uses_anonymous_args = 0 + 545 .loc 1 156 1 is_stmt 0 view .LVU113 + 546 0000 08B5 push {r3, lr} + 547 .LCFI8: + 548 .cfi_def_cfa_offset 8 + 549 .cfi_offset 3, -8 + 550 .cfi_offset 14, -4 + 157:Src/syscalls.c **** (void)old; + ARM GAS /tmp/cc9aEoPx.s page 13 + + + 551 .loc 1 157 3 is_stmt 1 view .LVU114 + 158:Src/syscalls.c **** (void)new; + 552 .loc 1 158 3 view .LVU115 + 159:Src/syscalls.c **** errno = EMLINK; + 553 .loc 1 159 3 view .LVU116 + 554 0002 FFF7FEFF bl __errno + 555 .LVL37: + 556 .loc 1 159 9 is_stmt 0 view .LVU117 + 557 0006 1F23 movs r3, #31 + 558 0008 0360 str r3, [r0] + 160:Src/syscalls.c **** return -1; + 559 .loc 1 160 3 is_stmt 1 view .LVU118 + 161:Src/syscalls.c **** } + 560 .loc 1 161 1 is_stmt 0 view .LVU119 + 561 000a 4FF0FF30 mov r0, #-1 + 562 000e 08BD pop {r3, pc} + 563 .cfi_endproc + 564 .LFE40: + 566 .section .text._fork,"ax",%progbits + 567 .align 1 + 568 .global _fork + 569 .syntax unified + 570 .thumb + 571 .thumb_func + 572 .fpu fpv5-d16 + 574 _fork: + 575 .LFB41: + 162:Src/syscalls.c **** + 163:Src/syscalls.c **** int _fork(void) + 164:Src/syscalls.c **** { + 576 .loc 1 164 1 is_stmt 1 view -0 + 577 .cfi_startproc + 578 @ args = 0, pretend = 0, frame = 0 + 579 @ frame_needed = 0, uses_anonymous_args = 0 + 580 0000 08B5 push {r3, lr} + 581 .LCFI9: + 582 .cfi_def_cfa_offset 8 + 583 .cfi_offset 3, -8 + 584 .cfi_offset 14, -4 + 165:Src/syscalls.c **** errno = EAGAIN; + 585 .loc 1 165 3 view .LVU121 + 586 0002 FFF7FEFF bl __errno + 587 .LVL38: + 588 .loc 1 165 9 is_stmt 0 view .LVU122 + 589 0006 0B23 movs r3, #11 + 590 0008 0360 str r3, [r0] + 166:Src/syscalls.c **** return -1; + 591 .loc 1 166 3 is_stmt 1 view .LVU123 + 167:Src/syscalls.c **** } + 592 .loc 1 167 1 is_stmt 0 view .LVU124 + 593 000a 4FF0FF30 mov r0, #-1 + 594 000e 08BD pop {r3, pc} + 595 .cfi_endproc + 596 .LFE41: + 598 .section .text._execve,"ax",%progbits + 599 .align 1 + 600 .global _execve + ARM GAS /tmp/cc9aEoPx.s page 14 + + + 601 .syntax unified + 602 .thumb + 603 .thumb_func + 604 .fpu fpv5-d16 + 606 _execve: + 607 .LVL39: + 608 .LFB42: + 168:Src/syscalls.c **** + 169:Src/syscalls.c **** int _execve(char *name, char **argv, char **env) + 170:Src/syscalls.c **** { + 609 .loc 1 170 1 is_stmt 1 view -0 + 610 .cfi_startproc + 611 @ args = 0, pretend = 0, frame = 0 + 612 @ frame_needed = 0, uses_anonymous_args = 0 + 613 .loc 1 170 1 is_stmt 0 view .LVU126 + 614 0000 08B5 push {r3, lr} + 615 .LCFI10: + 616 .cfi_def_cfa_offset 8 + 617 .cfi_offset 3, -8 + 618 .cfi_offset 14, -4 + 171:Src/syscalls.c **** (void)name; + 619 .loc 1 171 3 is_stmt 1 view .LVU127 + 172:Src/syscalls.c **** (void)argv; + 620 .loc 1 172 3 view .LVU128 + 173:Src/syscalls.c **** (void)env; + 621 .loc 1 173 3 view .LVU129 + 174:Src/syscalls.c **** errno = ENOMEM; + 622 .loc 1 174 3 view .LVU130 + 623 0002 FFF7FEFF bl __errno + 624 .LVL40: + 625 .loc 1 174 9 is_stmt 0 view .LVU131 + 626 0006 0C23 movs r3, #12 + 627 0008 0360 str r3, [r0] + 175:Src/syscalls.c **** return -1; + 628 .loc 1 175 3 is_stmt 1 view .LVU132 + 176:Src/syscalls.c **** } + 629 .loc 1 176 1 is_stmt 0 view .LVU133 + 630 000a 4FF0FF30 mov r0, #-1 + 631 000e 08BD pop {r3, pc} + 632 .cfi_endproc + 633 .LFE42: + 635 .global environ + 636 .global __env + 637 .section .bss.__env,"aw",%nobits + 638 .align 2 + 641 __env: + 642 0000 00000000 .space 4 + 643 .section .data.environ,"aw" + 644 .align 2 + 647 environ: + 648 0000 00000000 .word __env + 649 .weak __io_putchar + 650 .weak __io_getchar + 651 .text + 652 .Letext0: + 653 .file 2 "/usr/include/newlib/machine/_default_types.h" + 654 .file 3 "/usr/include/newlib/sys/_types.h" + ARM GAS /tmp/cc9aEoPx.s page 15 + + + 655 .file 4 "/usr/include/newlib/sys/_timeval.h" + 656 .file 5 "/usr/include/newlib/sys/_timespec.h" + 657 .file 6 "/usr/include/newlib/sys/types.h" + 658 .file 7 "/usr/include/newlib/sys/stat.h" + 659 .file 8 "/usr/include/newlib/sys/times.h" + 660 .file 9 "/usr/include/newlib/sys/errno.h" + ARM GAS /tmp/cc9aEoPx.s page 16 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 syscalls.c + /tmp/cc9aEoPx.s:17 .text.initialise_monitor_handles:0000000000000000 $t + /tmp/cc9aEoPx.s:25 .text.initialise_monitor_handles:0000000000000000 initialise_monitor_handles + /tmp/cc9aEoPx.s:39 .text._getpid:0000000000000000 $t + /tmp/cc9aEoPx.s:46 .text._getpid:0000000000000000 _getpid + /tmp/cc9aEoPx.s:61 .text._kill:0000000000000000 $t + /tmp/cc9aEoPx.s:68 .text._kill:0000000000000000 _kill + /tmp/cc9aEoPx.s:97 .text._exit:0000000000000000 $t + /tmp/cc9aEoPx.s:104 .text._exit:0000000000000000 _exit + /tmp/cc9aEoPx.s:131 .text._read:0000000000000000 $t + /tmp/cc9aEoPx.s:138 .text._read:0000000000000000 _read + /tmp/cc9aEoPx.s:196 .text._write:0000000000000000 $t + /tmp/cc9aEoPx.s:203 .text._write:0000000000000000 _write + /tmp/cc9aEoPx.s:255 .text._close:0000000000000000 $t + /tmp/cc9aEoPx.s:262 .text._close:0000000000000000 _close + /tmp/cc9aEoPx.s:281 .text._fstat:0000000000000000 $t + /tmp/cc9aEoPx.s:288 .text._fstat:0000000000000000 _fstat + /tmp/cc9aEoPx.s:311 .text._isatty:0000000000000000 $t + /tmp/cc9aEoPx.s:318 .text._isatty:0000000000000000 _isatty + /tmp/cc9aEoPx.s:337 .text._lseek:0000000000000000 $t + /tmp/cc9aEoPx.s:344 .text._lseek:0000000000000000 _lseek + /tmp/cc9aEoPx.s:365 .text._open:0000000000000000 $t + /tmp/cc9aEoPx.s:372 .text._open:0000000000000000 _open + /tmp/cc9aEoPx.s:405 .text._wait:0000000000000000 $t + /tmp/cc9aEoPx.s:412 .text._wait:0000000000000000 _wait + /tmp/cc9aEoPx.s:440 .text._unlink:0000000000000000 $t + /tmp/cc9aEoPx.s:447 .text._unlink:0000000000000000 _unlink + /tmp/cc9aEoPx.s:475 .text._times:0000000000000000 $t + /tmp/cc9aEoPx.s:482 .text._times:0000000000000000 _times + /tmp/cc9aEoPx.s:501 .text._stat:0000000000000000 $t + /tmp/cc9aEoPx.s:508 .text._stat:0000000000000000 _stat + /tmp/cc9aEoPx.s:531 .text._link:0000000000000000 $t + /tmp/cc9aEoPx.s:538 .text._link:0000000000000000 _link + /tmp/cc9aEoPx.s:567 .text._fork:0000000000000000 $t + /tmp/cc9aEoPx.s:574 .text._fork:0000000000000000 _fork + /tmp/cc9aEoPx.s:599 .text._execve:0000000000000000 $t + /tmp/cc9aEoPx.s:606 .text._execve:0000000000000000 _execve + /tmp/cc9aEoPx.s:647 .data.environ:0000000000000000 environ + /tmp/cc9aEoPx.s:641 .bss.__env:0000000000000000 __env + /tmp/cc9aEoPx.s:638 .bss.__env:0000000000000000 $d + /tmp/cc9aEoPx.s:644 .data.environ:0000000000000000 $d + +UNDEFINED SYMBOLS +__errno +__io_getchar +__io_putchar diff --git a/build/syscalls.o b/build/syscalls.o new file mode 100644 index 0000000..5ae61d0 Binary files /dev/null and b/build/syscalls.o differ diff --git a/build/sysmem.d b/build/sysmem.d new file mode 100644 index 0000000..aee2087 --- /dev/null +++ b/build/sysmem.d @@ -0,0 +1 @@ +build/sysmem.o: Src/sysmem.c diff --git a/build/sysmem.lst b/build/sysmem.lst new file mode 100644 index 0000000..6e0e567 --- /dev/null +++ b/build/sysmem.lst @@ -0,0 +1,230 @@ +ARM GAS /tmp/cc9NFVkD.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "sysmem.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text._sbrk,"ax",%progbits + 17 .align 1 + 18 .global _sbrk + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 _sbrk: + 26 .LVL0: + 27 .LFB0: + 28 .file 1 "Src/sysmem.c" + 1:Src/sysmem.c **** /** + 2:Src/sysmem.c **** ****************************************************************************** + 3:Src/sysmem.c **** * @file sysmem.c + 4:Src/sysmem.c **** * @author Generated by STM32CubeMX + 5:Src/sysmem.c **** * @brief System Memory calls file + 6:Src/sysmem.c **** * + 7:Src/sysmem.c **** * For more information about which C functions + 8:Src/sysmem.c **** * need which of these lowlevel functions + 9:Src/sysmem.c **** * please consult the newlib libc manual + 10:Src/sysmem.c **** ****************************************************************************** + 11:Src/sysmem.c **** * @attention + 12:Src/sysmem.c **** * + 13:Src/sysmem.c **** * Copyright (c) 2024 STMicroelectronics. + 14:Src/sysmem.c **** * All rights reserved. + 15:Src/sysmem.c **** * + 16:Src/sysmem.c **** * This software is licensed under terms that can be found in the LICENSE file + 17:Src/sysmem.c **** * in the root directory of this software component. + 18:Src/sysmem.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 19:Src/sysmem.c **** * + 20:Src/sysmem.c **** ****************************************************************************** + 21:Src/sysmem.c **** */ + 22:Src/sysmem.c **** + 23:Src/sysmem.c **** /* Includes */ + 24:Src/sysmem.c **** #include + 25:Src/sysmem.c **** #include + 26:Src/sysmem.c **** + 27:Src/sysmem.c **** /** + 28:Src/sysmem.c **** * Pointer to the current high watermark of the heap usage + 29:Src/sysmem.c **** */ + 30:Src/sysmem.c **** static uint8_t *__sbrk_heap_end = NULL; + ARM GAS /tmp/cc9NFVkD.s page 2 + + + 31:Src/sysmem.c **** + 32:Src/sysmem.c **** /** + 33:Src/sysmem.c **** * @brief _sbrk() allocates memory to the newlib heap and is used by malloc + 34:Src/sysmem.c **** * and others from the C library + 35:Src/sysmem.c **** * + 36:Src/sysmem.c **** * @verbatim + 37:Src/sysmem.c **** * ############################################################################ + 38:Src/sysmem.c **** * # .data # .bss # newlib heap # MSP stack # + 39:Src/sysmem.c **** * # # # # Reserved by _Min_Stack_Size # + 40:Src/sysmem.c **** * ############################################################################ + 41:Src/sysmem.c **** * ^-- RAM start ^-- _end _estack, RAM end --^ + 42:Src/sysmem.c **** * @endverbatim + 43:Src/sysmem.c **** * + 44:Src/sysmem.c **** * This implementation starts allocating at the '_end' linker symbol + 45:Src/sysmem.c **** * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack + 46:Src/sysmem.c **** * The implementation considers '_estack' linker symbol to be RAM end + 47:Src/sysmem.c **** * NOTE: If the MSP stack, at any point during execution, grows larger than the + 48:Src/sysmem.c **** * reserved size, please increase the '_Min_Stack_Size'. + 49:Src/sysmem.c **** * + 50:Src/sysmem.c **** * @param incr Memory size + 51:Src/sysmem.c **** * @return Pointer to allocated memory + 52:Src/sysmem.c **** */ + 53:Src/sysmem.c **** void *_sbrk(ptrdiff_t incr) + 54:Src/sysmem.c **** { + 29 .loc 1 54 1 view -0 + 30 .cfi_startproc + 31 @ args = 0, pretend = 0, frame = 0 + 32 @ frame_needed = 0, uses_anonymous_args = 0 + 33 .loc 1 54 1 is_stmt 0 view .LVU1 + 34 0000 10B5 push {r4, lr} + 35 .LCFI0: + 36 .cfi_def_cfa_offset 8 + 37 .cfi_offset 4, -8 + 38 .cfi_offset 14, -4 + 39 0002 0346 mov r3, r0 + 55:Src/sysmem.c **** extern uint8_t _end; /* Symbol defined in the linker script */ + 40 .loc 1 55 3 is_stmt 1 view .LVU2 + 56:Src/sysmem.c **** extern uint8_t _estack; /* Symbol defined in the linker script */ + 41 .loc 1 56 3 view .LVU3 + 57:Src/sysmem.c **** extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ + 42 .loc 1 57 3 view .LVU4 + 58:Src/sysmem.c **** const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; + 43 .loc 1 58 3 view .LVU5 + 44 .loc 1 58 18 is_stmt 0 view .LVU6 + 45 0004 0C4A ldr r2, .L8 + 46 0006 0D49 ldr r1, .L8+4 + 59:Src/sysmem.c **** const uint8_t *max_heap = (uint8_t *)stack_limit; + 47 .loc 1 59 3 is_stmt 1 view .LVU7 + 48 .LVL1: + 60:Src/sysmem.c **** uint8_t *prev_heap_end; + 49 .loc 1 60 3 view .LVU8 + 61:Src/sysmem.c **** + 62:Src/sysmem.c **** /* Initialize heap end at first call */ + 63:Src/sysmem.c **** if (NULL == __sbrk_heap_end) + 50 .loc 1 63 3 view .LVU9 + 51 .loc 1 63 12 is_stmt 0 view .LVU10 + 52 0008 0D48 ldr r0, .L8+8 + ARM GAS /tmp/cc9NFVkD.s page 3 + + + 53 .LVL2: + 54 .loc 1 63 12 view .LVU11 + 55 000a 0068 ldr r0, [r0] + 56 .loc 1 63 6 view .LVU12 + 57 000c 40B1 cbz r0, .L6 + 58 .L2: + 64:Src/sysmem.c **** { + 65:Src/sysmem.c **** __sbrk_heap_end = &_end; + 66:Src/sysmem.c **** } + 67:Src/sysmem.c **** + 68:Src/sysmem.c **** /* Protect heap from growing into the reserved MSP stack */ + 69:Src/sysmem.c **** if (__sbrk_heap_end + incr > max_heap) + 59 .loc 1 69 3 is_stmt 1 view .LVU13 + 60 .loc 1 69 23 is_stmt 0 view .LVU14 + 61 000e 0C48 ldr r0, .L8+8 + 62 0010 0068 ldr r0, [r0] + 63 0012 0344 add r3, r3, r0 + 64 .LVL3: + 65 .loc 1 69 6 view .LVU15 + 66 0014 521A subs r2, r2, r1 + 67 0016 9342 cmp r3, r2 + 68 0018 06D8 bhi .L7 + 70:Src/sysmem.c **** { + 71:Src/sysmem.c **** errno = ENOMEM; + 72:Src/sysmem.c **** return (void *)-1; + 73:Src/sysmem.c **** } + 74:Src/sysmem.c **** + 75:Src/sysmem.c **** prev_heap_end = __sbrk_heap_end; + 69 .loc 1 75 3 is_stmt 1 view .LVU16 + 70 .LVL4: + 76:Src/sysmem.c **** __sbrk_heap_end += incr; + 71 .loc 1 76 3 view .LVU17 + 72 .loc 1 76 19 is_stmt 0 view .LVU18 + 73 001a 094A ldr r2, .L8+8 + 74 001c 1360 str r3, [r2] + 77:Src/sysmem.c **** + 78:Src/sysmem.c **** return (void *)prev_heap_end; + 75 .loc 1 78 3 is_stmt 1 view .LVU19 + 76 .LVL5: + 77 .L1: + 79:Src/sysmem.c **** } + 78 .loc 1 79 1 is_stmt 0 view .LVU20 + 79 001e 10BD pop {r4, pc} + 80 .LVL6: + 81 .L6: + 65:Src/sysmem.c **** } + 82 .loc 1 65 5 is_stmt 1 view .LVU21 + 65:Src/sysmem.c **** } + 83 .loc 1 65 21 is_stmt 0 view .LVU22 + 84 0020 0748 ldr r0, .L8+8 + 85 0022 084C ldr r4, .L8+12 + 86 0024 0460 str r4, [r0] + 87 0026 F2E7 b .L2 + 88 .LVL7: + 89 .L7: + 71:Src/sysmem.c **** return (void *)-1; + 90 .loc 1 71 5 is_stmt 1 view .LVU23 + ARM GAS /tmp/cc9NFVkD.s page 4 + + + 91 0028 FFF7FEFF bl __errno + 92 .LVL8: + 71:Src/sysmem.c **** return (void *)-1; + 93 .loc 1 71 11 is_stmt 0 view .LVU24 + 94 002c 0C23 movs r3, #12 + 95 002e 0360 str r3, [r0] + 72:Src/sysmem.c **** } + 96 .loc 1 72 5 is_stmt 1 view .LVU25 + 72:Src/sysmem.c **** } + 97 .loc 1 72 12 is_stmt 0 view .LVU26 + 98 0030 4FF0FF30 mov r0, #-1 + 99 0034 F3E7 b .L1 + 100 .L9: + 101 0036 00BF .align 2 + 102 .L8: + 103 0038 00000000 .word _estack + 104 003c 00000000 .word _Min_Stack_Size + 105 0040 00000000 .word .LANCHOR0 + 106 0044 00000000 .word _end + 107 .cfi_endproc + 108 .LFE0: + 110 .section .bss.__sbrk_heap_end,"aw",%nobits + 111 .align 2 + 112 .set .LANCHOR0,. + 0 + 115 __sbrk_heap_end: + 116 0000 00000000 .space 4 + 117 .text + 118 .Letext0: + 119 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stddef.h" + 120 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 121 .file 4 "/usr/include/newlib/sys/errno.h" + ARM GAS /tmp/cc9NFVkD.s page 5 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 sysmem.c + /tmp/cc9NFVkD.s:17 .text._sbrk:0000000000000000 $t + /tmp/cc9NFVkD.s:25 .text._sbrk:0000000000000000 _sbrk + /tmp/cc9NFVkD.s:103 .text._sbrk:0000000000000038 $d + /tmp/cc9NFVkD.s:111 .bss.__sbrk_heap_end:0000000000000000 $d + /tmp/cc9NFVkD.s:115 .bss.__sbrk_heap_end:0000000000000000 __sbrk_heap_end + +UNDEFINED SYMBOLS +__errno +_estack +_Min_Stack_Size +_end diff --git a/build/sysmem.o b/build/sysmem.o new file mode 100644 index 0000000..9923853 Binary files /dev/null and b/build/sysmem.o differ diff --git a/build/system_stm32f7xx.d b/build/system_stm32f7xx.d new file mode 100644 index 0000000..2a7e4f2 --- /dev/null +++ b/build/system_stm32f7xx.d @@ -0,0 +1,63 @@ +build/system_stm32f7xx.o: Src/system_stm32f7xx.c \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ + Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ + Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ + Drivers/CMSIS/Include/mpu_armv7.h \ + Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ + Inc/stm32f7xx_hal_conf.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ + Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: +Drivers/CMSIS/Include/core_cm7.h: +Drivers/CMSIS/Include/cmsis_version.h: +Drivers/CMSIS/Include/cmsis_compiler.h: +Drivers/CMSIS/Include/cmsis_gcc.h: +Drivers/CMSIS/Include/mpu_armv7.h: +Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: +Inc/stm32f7xx_hal_conf.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: +Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: +Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: diff --git a/build/system_stm32f7xx.lst b/build/system_stm32f7xx.lst new file mode 100644 index 0000000..db7bc5e --- /dev/null +++ b/build/system_stm32f7xx.lst @@ -0,0 +1,570 @@ +ARM GAS /tmp/cc4hZZNo.s page 1 + + + 1 .cpu cortex-m7 + 2 .eabi_attribute 28, 1 + 3 .eabi_attribute 20, 1 + 4 .eabi_attribute 21, 1 + 5 .eabi_attribute 23, 3 + 6 .eabi_attribute 24, 1 + 7 .eabi_attribute 25, 1 + 8 .eabi_attribute 26, 1 + 9 .eabi_attribute 30, 1 + 10 .eabi_attribute 34, 1 + 11 .eabi_attribute 18, 4 + 12 .file "system_stm32f7xx.c" + 13 .text + 14 .Ltext0: + 15 .cfi_sections .debug_frame + 16 .section .text.SystemInit,"ax",%progbits + 17 .align 1 + 18 .global SystemInit + 19 .arch armv7e-m + 20 .syntax unified + 21 .thumb + 22 .thumb_func + 23 .fpu fpv5-d16 + 25 SystemInit: + 26 .LFB141: + 27 .file 1 "Src/system_stm32f7xx.c" + 1:Src/system_stm32f7xx.c **** /** + 2:Src/system_stm32f7xx.c **** ****************************************************************************** + 3:Src/system_stm32f7xx.c **** * @file system_stm32f7xx.c + 4:Src/system_stm32f7xx.c **** * @author MCD Application Team + 5:Src/system_stm32f7xx.c **** * @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File. + 6:Src/system_stm32f7xx.c **** * + 7:Src/system_stm32f7xx.c **** * This file provides two functions and one global variable to be called from + 8:Src/system_stm32f7xx.c **** * user application: + 9:Src/system_stm32f7xx.c **** * - SystemInit(): This function is called at startup just after reset and + 10:Src/system_stm32f7xx.c **** * before branch to main program. This call is made inside + 11:Src/system_stm32f7xx.c **** * the "startup_stm32f7xx.s" file. + 12:Src/system_stm32f7xx.c **** * + 13:Src/system_stm32f7xx.c **** * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + 14:Src/system_stm32f7xx.c **** * by the user application to setup the SysTick + 15:Src/system_stm32f7xx.c **** * timer or configure other parameters. + 16:Src/system_stm32f7xx.c **** * + 17:Src/system_stm32f7xx.c **** * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + 18:Src/system_stm32f7xx.c **** * be called whenever the core clock is changed + 19:Src/system_stm32f7xx.c **** * during program execution. + 20:Src/system_stm32f7xx.c **** * + 21:Src/system_stm32f7xx.c **** * + 22:Src/system_stm32f7xx.c **** ****************************************************************************** + 23:Src/system_stm32f7xx.c **** * @attention + 24:Src/system_stm32f7xx.c **** * + 25:Src/system_stm32f7xx.c **** * Copyright (c) 2016 STMicroelectronics. + 26:Src/system_stm32f7xx.c **** * All rights reserved. + 27:Src/system_stm32f7xx.c **** * + 28:Src/system_stm32f7xx.c **** * This software is licensed under terms that can be found in the LICENSE file + 29:Src/system_stm32f7xx.c **** * in the root directory of this software component. + 30:Src/system_stm32f7xx.c **** * If no LICENSE file comes with this software, it is provided AS-IS. + 31:Src/system_stm32f7xx.c **** * + ARM GAS /tmp/cc4hZZNo.s page 2 + + + 32:Src/system_stm32f7xx.c **** ****************************************************************************** + 33:Src/system_stm32f7xx.c **** */ + 34:Src/system_stm32f7xx.c **** + 35:Src/system_stm32f7xx.c **** /** @addtogroup CMSIS + 36:Src/system_stm32f7xx.c **** * @{ + 37:Src/system_stm32f7xx.c **** */ + 38:Src/system_stm32f7xx.c **** + 39:Src/system_stm32f7xx.c **** /** @addtogroup stm32f7xx_system + 40:Src/system_stm32f7xx.c **** * @{ + 41:Src/system_stm32f7xx.c **** */ + 42:Src/system_stm32f7xx.c **** + 43:Src/system_stm32f7xx.c **** /** @addtogroup STM32F7xx_System_Private_Includes + 44:Src/system_stm32f7xx.c **** * @{ + 45:Src/system_stm32f7xx.c **** */ + 46:Src/system_stm32f7xx.c **** + 47:Src/system_stm32f7xx.c **** #include "stm32f7xx.h" + 48:Src/system_stm32f7xx.c **** + 49:Src/system_stm32f7xx.c **** #if !defined (HSE_VALUE) + 50:Src/system_stm32f7xx.c **** #define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */ + 51:Src/system_stm32f7xx.c **** #endif /* HSE_VALUE */ + 52:Src/system_stm32f7xx.c **** + 53:Src/system_stm32f7xx.c **** #if !defined (HSI_VALUE) + 54:Src/system_stm32f7xx.c **** #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ + 55:Src/system_stm32f7xx.c **** #endif /* HSI_VALUE */ + 56:Src/system_stm32f7xx.c **** + 57:Src/system_stm32f7xx.c **** /** + 58:Src/system_stm32f7xx.c **** * @} + 59:Src/system_stm32f7xx.c **** */ + 60:Src/system_stm32f7xx.c **** + 61:Src/system_stm32f7xx.c **** /** @addtogroup STM32F7xx_System_Private_TypesDefinitions + 62:Src/system_stm32f7xx.c **** * @{ + 63:Src/system_stm32f7xx.c **** */ + 64:Src/system_stm32f7xx.c **** + 65:Src/system_stm32f7xx.c **** /** + 66:Src/system_stm32f7xx.c **** * @} + 67:Src/system_stm32f7xx.c **** */ + 68:Src/system_stm32f7xx.c **** + 69:Src/system_stm32f7xx.c **** /** @addtogroup STM32F7xx_System_Private_Defines + 70:Src/system_stm32f7xx.c **** * @{ + 71:Src/system_stm32f7xx.c **** */ + 72:Src/system_stm32f7xx.c **** + 73:Src/system_stm32f7xx.c **** /************************* Miscellaneous Configuration ************************/ + 74:Src/system_stm32f7xx.c **** + 75:Src/system_stm32f7xx.c **** /* Note: Following vector table addresses must be defined in line with linker + 76:Src/system_stm32f7xx.c **** configuration. */ + 77:Src/system_stm32f7xx.c **** /*!< Uncomment the following line if you need to relocate the vector table + 78:Src/system_stm32f7xx.c **** anywhere in Flash or Sram, else the vector table is kept at the automatic + 79:Src/system_stm32f7xx.c **** remap of boot address selected */ + 80:Src/system_stm32f7xx.c **** /* #define USER_VECT_TAB_ADDRESS */ + 81:Src/system_stm32f7xx.c **** + 82:Src/system_stm32f7xx.c **** #if defined(USER_VECT_TAB_ADDRESS) + 83:Src/system_stm32f7xx.c **** /*!< Uncomment the following line if you need to relocate your vector Table + 84:Src/system_stm32f7xx.c **** in Sram else user remap will be done in Flash. */ + 85:Src/system_stm32f7xx.c **** /* #define VECT_TAB_SRAM */ + 86:Src/system_stm32f7xx.c **** #if defined(VECT_TAB_SRAM) + 87:Src/system_stm32f7xx.c **** #define VECT_TAB_BASE_ADDRESS RAMDTCM_BASE /*!< Vector Table base address field. + 88:Src/system_stm32f7xx.c **** This value must be a multiple of 0x200. */ + ARM GAS /tmp/cc4hZZNo.s page 3 + + + 89:Src/system_stm32f7xx.c **** #define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + 90:Src/system_stm32f7xx.c **** This value must be a multiple of 0x200. */ + 91:Src/system_stm32f7xx.c **** #else + 92:Src/system_stm32f7xx.c **** #define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field. + 93:Src/system_stm32f7xx.c **** This value must be a multiple of 0x200. */ + 94:Src/system_stm32f7xx.c **** #define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + 95:Src/system_stm32f7xx.c **** This value must be a multiple of 0x200. */ + 96:Src/system_stm32f7xx.c **** #endif /* VECT_TAB_SRAM */ + 97:Src/system_stm32f7xx.c **** #endif /* USER_VECT_TAB_ADDRESS */ + 98:Src/system_stm32f7xx.c **** /******************************************************************************/ + 99:Src/system_stm32f7xx.c **** + 100:Src/system_stm32f7xx.c **** /** + 101:Src/system_stm32f7xx.c **** * @} + 102:Src/system_stm32f7xx.c **** */ + 103:Src/system_stm32f7xx.c **** + 104:Src/system_stm32f7xx.c **** /** @addtogroup STM32F7xx_System_Private_Macros + 105:Src/system_stm32f7xx.c **** * @{ + 106:Src/system_stm32f7xx.c **** */ + 107:Src/system_stm32f7xx.c **** + 108:Src/system_stm32f7xx.c **** /** + 109:Src/system_stm32f7xx.c **** * @} + 110:Src/system_stm32f7xx.c **** */ + 111:Src/system_stm32f7xx.c **** + 112:Src/system_stm32f7xx.c **** /** @addtogroup STM32F7xx_System_Private_Variables + 113:Src/system_stm32f7xx.c **** * @{ + 114:Src/system_stm32f7xx.c **** */ + 115:Src/system_stm32f7xx.c **** + 116:Src/system_stm32f7xx.c **** /* This variable is updated in three ways: + 117:Src/system_stm32f7xx.c **** 1) by calling CMSIS function SystemCoreClockUpdate() + 118:Src/system_stm32f7xx.c **** 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 119:Src/system_stm32f7xx.c **** 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + 120:Src/system_stm32f7xx.c **** Note: If you use this function to configure the system clock; then there + 121:Src/system_stm32f7xx.c **** is no need to call the 2 first functions listed above, since SystemCoreClock + 122:Src/system_stm32f7xx.c **** variable is updated automatically. + 123:Src/system_stm32f7xx.c **** */ + 124:Src/system_stm32f7xx.c **** uint32_t SystemCoreClock = 16000000; + 125:Src/system_stm32f7xx.c **** const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; + 126:Src/system_stm32f7xx.c **** const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; + 127:Src/system_stm32f7xx.c **** + 128:Src/system_stm32f7xx.c **** /** + 129:Src/system_stm32f7xx.c **** * @} + 130:Src/system_stm32f7xx.c **** */ + 131:Src/system_stm32f7xx.c **** + 132:Src/system_stm32f7xx.c **** /** @addtogroup STM32F7xx_System_Private_FunctionPrototypes + 133:Src/system_stm32f7xx.c **** * @{ + 134:Src/system_stm32f7xx.c **** */ + 135:Src/system_stm32f7xx.c **** + 136:Src/system_stm32f7xx.c **** /** + 137:Src/system_stm32f7xx.c **** * @} + 138:Src/system_stm32f7xx.c **** */ + 139:Src/system_stm32f7xx.c **** + 140:Src/system_stm32f7xx.c **** /** @addtogroup STM32F7xx_System_Private_Functions + 141:Src/system_stm32f7xx.c **** * @{ + 142:Src/system_stm32f7xx.c **** */ + 143:Src/system_stm32f7xx.c **** + 144:Src/system_stm32f7xx.c **** /** + 145:Src/system_stm32f7xx.c **** * @brief Setup the microcontroller system + ARM GAS /tmp/cc4hZZNo.s page 4 + + + 146:Src/system_stm32f7xx.c **** * Initialize the Embedded Flash Interface, the PLL and update the + 147:Src/system_stm32f7xx.c **** * SystemFrequency variable. + 148:Src/system_stm32f7xx.c **** * @param None + 149:Src/system_stm32f7xx.c **** * @retval None + 150:Src/system_stm32f7xx.c **** */ + 151:Src/system_stm32f7xx.c **** void SystemInit(void) + 152:Src/system_stm32f7xx.c **** { + 28 .loc 1 152 1 view -0 + 29 .cfi_startproc + 30 @ args = 0, pretend = 0, frame = 0 + 31 @ frame_needed = 0, uses_anonymous_args = 0 + 32 @ link register save eliminated. + 153:Src/system_stm32f7xx.c **** /* FPU settings ------------------------------------------------------------*/ + 154:Src/system_stm32f7xx.c **** #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + 155:Src/system_stm32f7xx.c **** SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ + 33 .loc 1 155 3 view .LVU1 + 34 .loc 1 155 14 is_stmt 0 view .LVU2 + 35 0000 034A ldr r2, .L2 + 36 0002 D2F88830 ldr r3, [r2, #136] + 37 0006 43F47003 orr r3, r3, #15728640 + 38 000a C2F88830 str r3, [r2, #136] + 156:Src/system_stm32f7xx.c **** #endif + 157:Src/system_stm32f7xx.c **** + 158:Src/system_stm32f7xx.c **** /* Configure the Vector Table location -------------------------------------*/ + 159:Src/system_stm32f7xx.c **** #if defined(USER_VECT_TAB_ADDRESS) + 160:Src/system_stm32f7xx.c **** SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM + 161:Src/system_stm32f7xx.c **** #endif /* USER_VECT_TAB_ADDRESS */ + 162:Src/system_stm32f7xx.c **** } + 39 .loc 1 162 1 view .LVU3 + 40 000e 7047 bx lr + 41 .L3: + 42 .align 2 + 43 .L2: + 44 0010 00ED00E0 .word -536810240 + 45 .cfi_endproc + 46 .LFE141: + 48 .section .text.SystemCoreClockUpdate,"ax",%progbits + 49 .align 1 + 50 .global SystemCoreClockUpdate + 51 .syntax unified + 52 .thumb + 53 .thumb_func + 54 .fpu fpv5-d16 + 56 SystemCoreClockUpdate: + 57 .LFB142: + 163:Src/system_stm32f7xx.c **** + 164:Src/system_stm32f7xx.c **** /** + 165:Src/system_stm32f7xx.c **** * @brief Update SystemCoreClock variable according to Clock Register Values. + 166:Src/system_stm32f7xx.c **** * The SystemCoreClock variable contains the core clock (HCLK), it can + 167:Src/system_stm32f7xx.c **** * be used by the user application to setup the SysTick timer or configure + 168:Src/system_stm32f7xx.c **** * other parameters. + 169:Src/system_stm32f7xx.c **** * + 170:Src/system_stm32f7xx.c **** * @note Each time the core clock (HCLK) changes, this function must be called + 171:Src/system_stm32f7xx.c **** * to update SystemCoreClock variable value. Otherwise, any configuration + 172:Src/system_stm32f7xx.c **** * based on this variable will be incorrect. + 173:Src/system_stm32f7xx.c **** * + 174:Src/system_stm32f7xx.c **** * @note - The system frequency computed by this function is not the real + ARM GAS /tmp/cc4hZZNo.s page 5 + + + 175:Src/system_stm32f7xx.c **** * frequency in the chip. It is calculated based on the predefined + 176:Src/system_stm32f7xx.c **** * constant and the selected clock source: + 177:Src/system_stm32f7xx.c **** * + 178:Src/system_stm32f7xx.c **** * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + 179:Src/system_stm32f7xx.c **** * + 180:Src/system_stm32f7xx.c **** * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + 181:Src/system_stm32f7xx.c **** * + 182:Src/system_stm32f7xx.c **** * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + 183:Src/system_stm32f7xx.c **** * or HSI_VALUE(*) multiplied/divided by the PLL factors. + 184:Src/system_stm32f7xx.c **** * + 185:Src/system_stm32f7xx.c **** * (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value + 186:Src/system_stm32f7xx.c **** * 16 MHz) but the real value may vary depending on the variations + 187:Src/system_stm32f7xx.c **** * in voltage and temperature. + 188:Src/system_stm32f7xx.c **** * + 189:Src/system_stm32f7xx.c **** * (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value + 190:Src/system_stm32f7xx.c **** * 25 MHz), user has to ensure that HSE_VALUE is same as the real + 191:Src/system_stm32f7xx.c **** * frequency of the crystal used. Otherwise, this function may + 192:Src/system_stm32f7xx.c **** * have wrong result. + 193:Src/system_stm32f7xx.c **** * + 194:Src/system_stm32f7xx.c **** * - The result of this function could be not correct when using fractional + 195:Src/system_stm32f7xx.c **** * value for HSE crystal. + 196:Src/system_stm32f7xx.c **** * + 197:Src/system_stm32f7xx.c **** * @param None + 198:Src/system_stm32f7xx.c **** * @retval None + 199:Src/system_stm32f7xx.c **** */ + 200:Src/system_stm32f7xx.c **** void SystemCoreClockUpdate(void) + 201:Src/system_stm32f7xx.c **** { + 58 .loc 1 201 1 is_stmt 1 view -0 + 59 .cfi_startproc + 60 @ args = 0, pretend = 0, frame = 0 + 61 @ frame_needed = 0, uses_anonymous_args = 0 + 62 @ link register save eliminated. + 202:Src/system_stm32f7xx.c **** uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2; + 63 .loc 1 202 3 view .LVU5 + 64 .LVL0: + 203:Src/system_stm32f7xx.c **** + 204:Src/system_stm32f7xx.c **** /* Get SYSCLK source -------------------------------------------------------*/ + 205:Src/system_stm32f7xx.c **** tmp = RCC->CFGR & RCC_CFGR_SWS; + 65 .loc 1 205 3 view .LVU6 + 66 .loc 1 205 12 is_stmt 0 view .LVU7 + 67 0000 224B ldr r3, .L12 + 68 0002 9B68 ldr r3, [r3, #8] + 69 .loc 1 205 7 view .LVU8 + 70 0004 03F00C03 and r3, r3, #12 + 71 .LVL1: + 206:Src/system_stm32f7xx.c **** + 207:Src/system_stm32f7xx.c **** switch (tmp) + 72 .loc 1 207 3 is_stmt 1 view .LVU9 + 73 0008 042B cmp r3, #4 + 74 000a 14D0 beq .L5 + 75 000c 082B cmp r3, #8 + 76 000e 16D0 beq .L6 + 77 0010 1BB1 cbz r3, .L11 + 208:Src/system_stm32f7xx.c **** { + 209:Src/system_stm32f7xx.c **** case 0x00: /* HSI used as system clock source */ + 210:Src/system_stm32f7xx.c **** SystemCoreClock = HSI_VALUE; + 211:Src/system_stm32f7xx.c **** break; + ARM GAS /tmp/cc4hZZNo.s page 6 + + + 212:Src/system_stm32f7xx.c **** case 0x04: /* HSE used as system clock source */ + 213:Src/system_stm32f7xx.c **** SystemCoreClock = HSE_VALUE; + 214:Src/system_stm32f7xx.c **** break; + 215:Src/system_stm32f7xx.c **** case 0x08: /* PLL used as system clock source */ + 216:Src/system_stm32f7xx.c **** + 217:Src/system_stm32f7xx.c **** /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N + 218:Src/system_stm32f7xx.c **** SYSCLK = PLL_VCO / PLL_P + 219:Src/system_stm32f7xx.c **** */ + 220:Src/system_stm32f7xx.c **** pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; + 221:Src/system_stm32f7xx.c **** pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; + 222:Src/system_stm32f7xx.c **** + 223:Src/system_stm32f7xx.c **** if (pllsource != 0) + 224:Src/system_stm32f7xx.c **** { + 225:Src/system_stm32f7xx.c **** /* HSE used as PLL clock source */ + 226:Src/system_stm32f7xx.c **** pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); + 227:Src/system_stm32f7xx.c **** } + 228:Src/system_stm32f7xx.c **** else + 229:Src/system_stm32f7xx.c **** { + 230:Src/system_stm32f7xx.c **** /* HSI used as PLL clock source */ + 231:Src/system_stm32f7xx.c **** pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); + 232:Src/system_stm32f7xx.c **** } + 233:Src/system_stm32f7xx.c **** + 234:Src/system_stm32f7xx.c **** pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; + 235:Src/system_stm32f7xx.c **** SystemCoreClock = pllvco/pllp; + 236:Src/system_stm32f7xx.c **** break; + 237:Src/system_stm32f7xx.c **** default: + 238:Src/system_stm32f7xx.c **** SystemCoreClock = HSI_VALUE; + 78 .loc 1 238 7 view .LVU10 + 79 .loc 1 238 23 is_stmt 0 view .LVU11 + 80 0012 1F4B ldr r3, .L12+4 + 81 .LVL2: + 82 .loc 1 238 23 view .LVU12 + 83 0014 1F4A ldr r2, .L12+8 + 84 0016 1A60 str r2, [r3] + 239:Src/system_stm32f7xx.c **** break; + 85 .loc 1 239 7 is_stmt 1 view .LVU13 + 86 0018 02E0 b .L8 + 87 .LVL3: + 88 .L11: + 210:Src/system_stm32f7xx.c **** break; + 89 .loc 1 210 7 view .LVU14 + 210:Src/system_stm32f7xx.c **** break; + 90 .loc 1 210 23 is_stmt 0 view .LVU15 + 91 001a 1D4B ldr r3, .L12+4 + 92 .LVL4: + 210:Src/system_stm32f7xx.c **** break; + 93 .loc 1 210 23 view .LVU16 + 94 001c 1D4A ldr r2, .L12+8 + 95 001e 1A60 str r2, [r3] + 211:Src/system_stm32f7xx.c **** case 0x04: /* HSE used as system clock source */ + 96 .loc 1 211 7 is_stmt 1 view .LVU17 + 97 .LVL5: + 98 .L8: + 240:Src/system_stm32f7xx.c **** } + 241:Src/system_stm32f7xx.c **** /* Compute HCLK frequency --------------------------------------------------*/ + 242:Src/system_stm32f7xx.c **** /* Get HCLK prescaler */ + 243:Src/system_stm32f7xx.c **** tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; + ARM GAS /tmp/cc4hZZNo.s page 7 + + + 99 .loc 1 243 3 view .LVU18 + 100 .loc 1 243 28 is_stmt 0 view .LVU19 + 101 0020 1A4B ldr r3, .L12 + 102 0022 9B68 ldr r3, [r3, #8] + 103 .loc 1 243 52 view .LVU20 + 104 0024 C3F30313 ubfx r3, r3, #4, #4 + 105 .loc 1 243 22 view .LVU21 + 106 0028 1B4A ldr r2, .L12+12 + 107 002a D15C ldrb r1, [r2, r3] @ zero_extendqisi2 + 108 .LVL6: + 244:Src/system_stm32f7xx.c **** /* HCLK frequency */ + 245:Src/system_stm32f7xx.c **** SystemCoreClock >>= tmp; + 109 .loc 1 245 3 is_stmt 1 view .LVU22 + 110 .loc 1 245 19 is_stmt 0 view .LVU23 + 111 002c 184A ldr r2, .L12+4 + 112 002e 1368 ldr r3, [r2] + 113 0030 CB40 lsrs r3, r3, r1 + 114 0032 1360 str r3, [r2] + 246:Src/system_stm32f7xx.c **** } + 115 .loc 1 246 1 view .LVU24 + 116 0034 7047 bx lr + 117 .LVL7: + 118 .L5: + 213:Src/system_stm32f7xx.c **** break; + 119 .loc 1 213 7 is_stmt 1 view .LVU25 + 213:Src/system_stm32f7xx.c **** break; + 120 .loc 1 213 23 is_stmt 0 view .LVU26 + 121 0036 164B ldr r3, .L12+4 + 122 .LVL8: + 213:Src/system_stm32f7xx.c **** break; + 123 .loc 1 213 23 view .LVU27 + 124 0038 184A ldr r2, .L12+16 + 125 003a 1A60 str r2, [r3] + 214:Src/system_stm32f7xx.c **** case 0x08: /* PLL used as system clock source */ + 126 .loc 1 214 7 is_stmt 1 view .LVU28 + 127 003c F0E7 b .L8 + 128 .LVL9: + 129 .L6: + 220:Src/system_stm32f7xx.c **** pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; + 130 .loc 1 220 7 view .LVU29 + 220:Src/system_stm32f7xx.c **** pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; + 131 .loc 1 220 23 is_stmt 0 view .LVU30 + 132 003e 134B ldr r3, .L12 + 133 .LVL10: + 220:Src/system_stm32f7xx.c **** pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; + 134 .loc 1 220 23 view .LVU31 + 135 0040 5968 ldr r1, [r3, #4] + 136 .LVL11: + 221:Src/system_stm32f7xx.c **** + 137 .loc 1 221 7 is_stmt 1 view .LVU32 + 221:Src/system_stm32f7xx.c **** + 138 .loc 1 221 17 is_stmt 0 view .LVU33 + 139 0042 5A68 ldr r2, [r3, #4] + 221:Src/system_stm32f7xx.c **** + 140 .loc 1 221 12 view .LVU34 + 141 0044 02F03F02 and r2, r2, #63 + 142 .LVL12: + ARM GAS /tmp/cc4hZZNo.s page 8 + + + 223:Src/system_stm32f7xx.c **** { + 143 .loc 1 223 7 is_stmt 1 view .LVU35 + 223:Src/system_stm32f7xx.c **** { + 144 .loc 1 223 10 is_stmt 0 view .LVU36 + 145 0048 11F4800F tst r1, #4194304 + 146 004c 13D0 beq .L9 + 226:Src/system_stm32f7xx.c **** } + 147 .loc 1 226 9 is_stmt 1 view .LVU37 + 226:Src/system_stm32f7xx.c **** } + 148 .loc 1 226 29 is_stmt 0 view .LVU38 + 149 004e 134B ldr r3, .L12+16 + 150 0050 B3FBF2F3 udiv r3, r3, r2 + 226:Src/system_stm32f7xx.c **** } + 151 .loc 1 226 44 view .LVU39 + 152 0054 0D4A ldr r2, .L12 + 153 .LVL13: + 226:Src/system_stm32f7xx.c **** } + 154 .loc 1 226 44 view .LVU40 + 155 0056 5268 ldr r2, [r2, #4] + 226:Src/system_stm32f7xx.c **** } + 156 .loc 1 226 74 view .LVU41 + 157 0058 C2F38812 ubfx r2, r2, #6, #9 + 226:Src/system_stm32f7xx.c **** } + 158 .loc 1 226 16 view .LVU42 + 159 005c 02FB03F3 mul r3, r2, r3 + 160 .LVL14: + 161 .L10: + 234:Src/system_stm32f7xx.c **** SystemCoreClock = pllvco/pllp; + 162 .loc 1 234 7 is_stmt 1 view .LVU43 + 234:Src/system_stm32f7xx.c **** SystemCoreClock = pllvco/pllp; + 163 .loc 1 234 20 is_stmt 0 view .LVU44 + 164 0060 0A4A ldr r2, .L12 + 165 0062 5268 ldr r2, [r2, #4] + 234:Src/system_stm32f7xx.c **** SystemCoreClock = pllvco/pllp; + 166 .loc 1 234 50 view .LVU45 + 167 0064 C2F30142 ubfx r2, r2, #16, #2 + 234:Src/system_stm32f7xx.c **** SystemCoreClock = pllvco/pllp; + 168 .loc 1 234 56 view .LVU46 + 169 0068 0132 adds r2, r2, #1 + 234:Src/system_stm32f7xx.c **** SystemCoreClock = pllvco/pllp; + 170 .loc 1 234 12 view .LVU47 + 171 006a 5200 lsls r2, r2, #1 + 172 .LVL15: + 235:Src/system_stm32f7xx.c **** break; + 173 .loc 1 235 7 is_stmt 1 view .LVU48 + 235:Src/system_stm32f7xx.c **** break; + 174 .loc 1 235 31 is_stmt 0 view .LVU49 + 175 006c B3FBF2F3 udiv r3, r3, r2 + 176 .LVL16: + 235:Src/system_stm32f7xx.c **** break; + 177 .loc 1 235 23 view .LVU50 + 178 0070 074A ldr r2, .L12+4 + 179 .LVL17: + 235:Src/system_stm32f7xx.c **** break; + 180 .loc 1 235 23 view .LVU51 + 181 0072 1360 str r3, [r2] + 236:Src/system_stm32f7xx.c **** default: + ARM GAS /tmp/cc4hZZNo.s page 9 + + + 182 .loc 1 236 7 is_stmt 1 view .LVU52 + 183 0074 D4E7 b .L8 + 184 .LVL18: + 185 .L9: + 231:Src/system_stm32f7xx.c **** } + 186 .loc 1 231 9 view .LVU53 + 231:Src/system_stm32f7xx.c **** } + 187 .loc 1 231 29 is_stmt 0 view .LVU54 + 188 0076 074B ldr r3, .L12+8 + 189 0078 B3FBF2F3 udiv r3, r3, r2 + 231:Src/system_stm32f7xx.c **** } + 190 .loc 1 231 44 view .LVU55 + 191 007c 034A ldr r2, .L12 + 192 .LVL19: + 231:Src/system_stm32f7xx.c **** } + 193 .loc 1 231 44 view .LVU56 + 194 007e 5268 ldr r2, [r2, #4] + 231:Src/system_stm32f7xx.c **** } + 195 .loc 1 231 74 view .LVU57 + 196 0080 C2F38812 ubfx r2, r2, #6, #9 + 231:Src/system_stm32f7xx.c **** } + 197 .loc 1 231 16 view .LVU58 + 198 0084 02FB03F3 mul r3, r2, r3 + 199 .LVL20: + 231:Src/system_stm32f7xx.c **** } + 200 .loc 1 231 16 view .LVU59 + 201 0088 EAE7 b .L10 + 202 .L13: + 203 008a 00BF .align 2 + 204 .L12: + 205 008c 00380240 .word 1073887232 + 206 0090 00000000 .word .LANCHOR0 + 207 0094 0024F400 .word 16000000 + 208 0098 00000000 .word .LANCHOR1 + 209 009c 40787D01 .word 25000000 + 210 .cfi_endproc + 211 .LFE142: + 213 .global APBPrescTable + 214 .global AHBPrescTable + 215 .global SystemCoreClock + 216 .section .data.SystemCoreClock,"aw" + 217 .align 2 + 218 .set .LANCHOR0,. + 0 + 221 SystemCoreClock: + 222 0000 0024F400 .word 16000000 + 223 .section .rodata.AHBPrescTable,"a" + 224 .align 2 + 225 .set .LANCHOR1,. + 0 + 228 AHBPrescTable: + 229 0000 00000000 .ascii "\000\000\000\000\000\000\000\000\001\002\003\004\006" + 229 00000000 + 229 01020304 + 229 06 + 230 000d 070809 .ascii "\007\010\011" + 231 .section .rodata.APBPrescTable,"a" + 232 .align 2 + 235 APBPrescTable: + ARM GAS /tmp/cc4hZZNo.s page 10 + + + 236 0000 00000000 .ascii "\000\000\000\000\001\002\003\004" + 236 01020304 + 237 .text + 238 .Letext0: + 239 .file 2 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" + 240 .file 3 "Drivers/CMSIS/Include/core_cm7.h" + 241 .file 4 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h" + 242 .file 5 "Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h" + ARM GAS /tmp/cc4hZZNo.s page 11 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 system_stm32f7xx.c + /tmp/cc4hZZNo.s:17 .text.SystemInit:0000000000000000 $t + /tmp/cc4hZZNo.s:25 .text.SystemInit:0000000000000000 SystemInit + /tmp/cc4hZZNo.s:44 .text.SystemInit:0000000000000010 $d + /tmp/cc4hZZNo.s:49 .text.SystemCoreClockUpdate:0000000000000000 $t + /tmp/cc4hZZNo.s:56 .text.SystemCoreClockUpdate:0000000000000000 SystemCoreClockUpdate + /tmp/cc4hZZNo.s:205 .text.SystemCoreClockUpdate:000000000000008c $d + /tmp/cc4hZZNo.s:235 .rodata.APBPrescTable:0000000000000000 APBPrescTable + /tmp/cc4hZZNo.s:228 .rodata.AHBPrescTable:0000000000000000 AHBPrescTable + /tmp/cc4hZZNo.s:221 .data.SystemCoreClock:0000000000000000 SystemCoreClock + /tmp/cc4hZZNo.s:217 .data.SystemCoreClock:0000000000000000 $d + /tmp/cc4hZZNo.s:224 .rodata.AHBPrescTable:0000000000000000 $d + /tmp/cc4hZZNo.s:232 .rodata.APBPrescTable:0000000000000000 $d + +NO UNDEFINED SYMBOLS diff --git a/build/system_stm32f7xx.o b/build/system_stm32f7xx.o new file mode 100644 index 0000000..b56cac1 Binary files /dev/null and b/build/system_stm32f7xx.o differ diff --git a/startup_stm32f767xx.s b/startup_stm32f767xx.s new file mode 100644 index 0000000..6591a88 --- /dev/null +++ b/startup_stm32f767xx.s @@ -0,0 +1,618 @@ +/** + ****************************************************************************** + * @file startup_stm32f767xx.s + * @author MCD Application Team + * @brief STM32F767xx Devices vector table for GCC based toolchain. + * This module performs: + * - Set the initial SP + * - Set the initial PC == Reset_Handler, + * - Set the vector table entries with the exceptions ISR address + * - Branches to main in the C library (which eventually + * calls main()). + * After Reset the Cortex-M7 processor is in Thread mode, + * priority is Privileged, and the Stack is set to Main. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + + .syntax unified + .cpu cortex-m7 + .fpu softvfp + .thumb + +.global g_pfnVectors +.global Default_Handler + +/* start address for the initialization values of the .data section. +defined in linker script */ +.word _sidata +/* start address for the .data section. defined in linker script */ +.word _sdata +/* end address for the .data section. defined in linker script */ +.word _edata +/* start address for the .bss section. defined in linker script */ +.word _sbss +/* end address for the .bss section. defined in linker script */ +.word _ebss +/* stack used for SystemInit_ExtMemCtl; always internal RAM used */ + +/** + * @brief This is the code that gets called when the processor first + * starts execution following a reset event. Only the absolutely + * necessary set is performed, after which the application + * supplied main() routine is called. + * @param None + * @retval : None +*/ + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr sp, =_estack /* set stack pointer */ + +/* Call the clock system initialization function.*/ + bl SystemInit + +/* Copy the data segment initializers from flash to SRAM */ + ldr r0, =_sdata + ldr r1, =_edata + ldr r2, =_sidata + movs r3, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r4, [r2, r3] + str r4, [r0, r3] + adds r3, r3, #4 + +LoopCopyDataInit: + adds r4, r0, r3 + cmp r4, r1 + bcc CopyDataInit + +/* Zero fill the bss segment. */ + ldr r2, =_sbss + ldr r4, =_ebss + movs r3, #0 + b LoopFillZerobss + +FillZerobss: + str r3, [r2] + adds r2, r2, #4 + +LoopFillZerobss: + cmp r2, r4 + bcc FillZerobss + +/* Call static constructors */ + bl __libc_init_array +/* Call the application's entry point.*/ + bl main + bx lr +.size Reset_Handler, .-Reset_Handler + +/** + * @brief This is the code that gets called when the processor receives an + * unexpected interrupt. This simply enters an infinite loop, preserving + * the system state for examination by a debugger. + * @param None + * @retval None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + .size Default_Handler, .-Default_Handler +/****************************************************************************** +* +* The minimal vector table for a Cortex M7. Note that the proper constructs +* must be placed on this to ensure that it ends up at physical address +* 0x0000.0000. +* +*******************************************************************************/ + .section .isr_vector,"a",%progbits + .type g_pfnVectors, %object + .size g_pfnVectors, .-g_pfnVectors + + +g_pfnVectors: + .word _estack + .word Reset_Handler + + .word NMI_Handler + .word HardFault_Handler + .word MemManage_Handler + .word BusFault_Handler + .word UsageFault_Handler + .word 0 + .word 0 + .word 0 + .word 0 + .word SVC_Handler + .word DebugMon_Handler + .word 0 + .word PendSV_Handler + .word SysTick_Handler + + /* External Interrupts */ + .word WWDG_IRQHandler /* Window WatchDog */ + .word PVD_IRQHandler /* PVD through EXTI Line detection */ + .word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */ + .word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */ + .word FLASH_IRQHandler /* FLASH */ + .word RCC_IRQHandler /* RCC */ + .word EXTI0_IRQHandler /* EXTI Line0 */ + .word EXTI1_IRQHandler /* EXTI Line1 */ + .word EXTI2_IRQHandler /* EXTI Line2 */ + .word EXTI3_IRQHandler /* EXTI Line3 */ + .word EXTI4_IRQHandler /* EXTI Line4 */ + .word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */ + .word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */ + .word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */ + .word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */ + .word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */ + .word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */ + .word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */ + .word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */ + .word CAN1_TX_IRQHandler /* CAN1 TX */ + .word CAN1_RX0_IRQHandler /* CAN1 RX0 */ + .word CAN1_RX1_IRQHandler /* CAN1 RX1 */ + .word CAN1_SCE_IRQHandler /* CAN1 SCE */ + .word EXTI9_5_IRQHandler /* External Line[9:5]s */ + .word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */ + .word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */ + .word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */ + .word TIM1_CC_IRQHandler /* TIM1 Capture Compare */ + .word TIM2_IRQHandler /* TIM2 */ + .word TIM3_IRQHandler /* TIM3 */ + .word TIM4_IRQHandler /* TIM4 */ + .word I2C1_EV_IRQHandler /* I2C1 Event */ + .word I2C1_ER_IRQHandler /* I2C1 Error */ + .word I2C2_EV_IRQHandler /* I2C2 Event */ + .word I2C2_ER_IRQHandler /* I2C2 Error */ + .word SPI1_IRQHandler /* SPI1 */ + .word SPI2_IRQHandler /* SPI2 */ + .word USART1_IRQHandler /* USART1 */ + .word USART2_IRQHandler /* USART2 */ + .word USART3_IRQHandler /* USART3 */ + .word EXTI15_10_IRQHandler /* External Line[15:10]s */ + .word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */ + .word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */ + .word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */ + .word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */ + .word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */ + .word TIM8_CC_IRQHandler /* TIM8 Capture Compare */ + .word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */ + .word FMC_IRQHandler /* FMC */ + .word SDMMC1_IRQHandler /* SDMMC1 */ + .word TIM5_IRQHandler /* TIM5 */ + .word SPI3_IRQHandler /* SPI3 */ + .word UART4_IRQHandler /* UART4 */ + .word UART5_IRQHandler /* UART5 */ + .word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */ + .word TIM7_IRQHandler /* TIM7 */ + .word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */ + .word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */ + .word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */ + .word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */ + .word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */ + .word ETH_IRQHandler /* Ethernet */ + .word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */ + .word CAN2_TX_IRQHandler /* CAN2 TX */ + .word CAN2_RX0_IRQHandler /* CAN2 RX0 */ + .word CAN2_RX1_IRQHandler /* CAN2 RX1 */ + .word CAN2_SCE_IRQHandler /* CAN2 SCE */ + .word OTG_FS_IRQHandler /* USB OTG FS */ + .word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */ + .word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */ + .word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */ + .word USART6_IRQHandler /* USART6 */ + .word I2C3_EV_IRQHandler /* I2C3 event */ + .word I2C3_ER_IRQHandler /* I2C3 error */ + .word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */ + .word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */ + .word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */ + .word OTG_HS_IRQHandler /* USB OTG HS */ + .word DCMI_IRQHandler /* DCMI */ + .word 0 /* Reserved */ + .word RNG_IRQHandler /* RNG */ + .word FPU_IRQHandler /* FPU */ + .word UART7_IRQHandler /* UART7 */ + .word UART8_IRQHandler /* UART8 */ + .word SPI4_IRQHandler /* SPI4 */ + .word SPI5_IRQHandler /* SPI5 */ + .word SPI6_IRQHandler /* SPI6 */ + .word SAI1_IRQHandler /* SAI1 */ + .word LTDC_IRQHandler /* LTDC */ + .word LTDC_ER_IRQHandler /* LTDC error */ + .word DMA2D_IRQHandler /* DMA2D */ + .word SAI2_IRQHandler /* SAI2 */ + .word QUADSPI_IRQHandler /* QUADSPI */ + .word LPTIM1_IRQHandler /* LPTIM1 */ + .word CEC_IRQHandler /* HDMI_CEC */ + .word I2C4_EV_IRQHandler /* I2C4 Event */ + .word I2C4_ER_IRQHandler /* I2C4 Error */ + .word SPDIF_RX_IRQHandler /* SPDIF_RX */ + .word 0 /* Reserved */ + .word DFSDM1_FLT0_IRQHandler /* DFSDM1 Filter 0 global Interrupt */ + .word DFSDM1_FLT1_IRQHandler /* DFSDM1 Filter 1 global Interrupt */ + .word DFSDM1_FLT2_IRQHandler /* DFSDM1 Filter 2 global Interrupt */ + .word DFSDM1_FLT3_IRQHandler /* DFSDM1 Filter 3 global Interrupt */ + .word SDMMC2_IRQHandler /* SDMMC2 */ + .word CAN3_TX_IRQHandler /* CAN3 TX */ + .word CAN3_RX0_IRQHandler /* CAN3 RX0 */ + .word CAN3_RX1_IRQHandler /* CAN3 RX1 */ + .word CAN3_SCE_IRQHandler /* CAN3 SCE */ + .word JPEG_IRQHandler /* JPEG */ + .word MDIOS_IRQHandler /* MDIOS */ + +/******************************************************************************* +* +* Provide weak aliases for each Exception handler to the Default_Handler. +* As they are weak aliases, any function with the same name will override +* this definition. +* +*******************************************************************************/ + .weak NMI_Handler + .thumb_set NMI_Handler,Default_Handler + + .weak HardFault_Handler + .thumb_set HardFault_Handler,Default_Handler + + .weak MemManage_Handler + .thumb_set MemManage_Handler,Default_Handler + + .weak BusFault_Handler + .thumb_set BusFault_Handler,Default_Handler + + .weak UsageFault_Handler + .thumb_set UsageFault_Handler,Default_Handler + + .weak SVC_Handler + .thumb_set SVC_Handler,Default_Handler + + .weak DebugMon_Handler + .thumb_set DebugMon_Handler,Default_Handler + + .weak PendSV_Handler + .thumb_set PendSV_Handler,Default_Handler + + .weak SysTick_Handler + .thumb_set SysTick_Handler,Default_Handler + + .weak WWDG_IRQHandler + .thumb_set WWDG_IRQHandler,Default_Handler + + .weak PVD_IRQHandler + .thumb_set PVD_IRQHandler,Default_Handler + + .weak TAMP_STAMP_IRQHandler + .thumb_set TAMP_STAMP_IRQHandler,Default_Handler + + .weak RTC_WKUP_IRQHandler + .thumb_set RTC_WKUP_IRQHandler,Default_Handler + + .weak FLASH_IRQHandler + .thumb_set FLASH_IRQHandler,Default_Handler + + .weak RCC_IRQHandler + .thumb_set RCC_IRQHandler,Default_Handler + + .weak EXTI0_IRQHandler + .thumb_set EXTI0_IRQHandler,Default_Handler + + .weak EXTI1_IRQHandler + .thumb_set EXTI1_IRQHandler,Default_Handler + + .weak EXTI2_IRQHandler + .thumb_set EXTI2_IRQHandler,Default_Handler + + .weak EXTI3_IRQHandler + .thumb_set EXTI3_IRQHandler,Default_Handler + + .weak EXTI4_IRQHandler + .thumb_set EXTI4_IRQHandler,Default_Handler + + .weak DMA1_Stream0_IRQHandler + .thumb_set DMA1_Stream0_IRQHandler,Default_Handler + + .weak DMA1_Stream1_IRQHandler + .thumb_set DMA1_Stream1_IRQHandler,Default_Handler + + .weak DMA1_Stream2_IRQHandler + .thumb_set DMA1_Stream2_IRQHandler,Default_Handler + + .weak DMA1_Stream3_IRQHandler + .thumb_set DMA1_Stream3_IRQHandler,Default_Handler + + .weak DMA1_Stream4_IRQHandler + .thumb_set DMA1_Stream4_IRQHandler,Default_Handler + + .weak DMA1_Stream5_IRQHandler + .thumb_set DMA1_Stream5_IRQHandler,Default_Handler + + .weak DMA1_Stream6_IRQHandler + .thumb_set DMA1_Stream6_IRQHandler,Default_Handler + + .weak ADC_IRQHandler + .thumb_set ADC_IRQHandler,Default_Handler + + .weak CAN1_TX_IRQHandler + .thumb_set CAN1_TX_IRQHandler,Default_Handler + + .weak CAN1_RX0_IRQHandler + .thumb_set CAN1_RX0_IRQHandler,Default_Handler + + .weak CAN1_RX1_IRQHandler + .thumb_set CAN1_RX1_IRQHandler,Default_Handler + + .weak CAN1_SCE_IRQHandler + .thumb_set CAN1_SCE_IRQHandler,Default_Handler + + .weak EXTI9_5_IRQHandler + .thumb_set EXTI9_5_IRQHandler,Default_Handler + + .weak TIM1_BRK_TIM9_IRQHandler + .thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler + + .weak TIM1_UP_TIM10_IRQHandler + .thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler + + .weak TIM1_TRG_COM_TIM11_IRQHandler + .thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler + + .weak TIM1_CC_IRQHandler + .thumb_set TIM1_CC_IRQHandler,Default_Handler + + .weak TIM2_IRQHandler + .thumb_set TIM2_IRQHandler,Default_Handler + + .weak TIM3_IRQHandler + .thumb_set TIM3_IRQHandler,Default_Handler + + .weak TIM4_IRQHandler + .thumb_set TIM4_IRQHandler,Default_Handler + + .weak I2C1_EV_IRQHandler + .thumb_set I2C1_EV_IRQHandler,Default_Handler + + .weak I2C1_ER_IRQHandler + .thumb_set I2C1_ER_IRQHandler,Default_Handler + + .weak I2C2_EV_IRQHandler + .thumb_set I2C2_EV_IRQHandler,Default_Handler + + .weak I2C2_ER_IRQHandler + .thumb_set I2C2_ER_IRQHandler,Default_Handler + + .weak SPI1_IRQHandler + .thumb_set SPI1_IRQHandler,Default_Handler + + .weak SPI2_IRQHandler + .thumb_set SPI2_IRQHandler,Default_Handler + + .weak USART1_IRQHandler + .thumb_set USART1_IRQHandler,Default_Handler + + .weak USART2_IRQHandler + .thumb_set USART2_IRQHandler,Default_Handler + + .weak USART3_IRQHandler + .thumb_set USART3_IRQHandler,Default_Handler + + .weak EXTI15_10_IRQHandler + .thumb_set EXTI15_10_IRQHandler,Default_Handler + + .weak RTC_Alarm_IRQHandler + .thumb_set RTC_Alarm_IRQHandler,Default_Handler + + .weak OTG_FS_WKUP_IRQHandler + .thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler + + .weak TIM8_BRK_TIM12_IRQHandler + .thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler + + .weak TIM8_UP_TIM13_IRQHandler + .thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler + + .weak TIM8_TRG_COM_TIM14_IRQHandler + .thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler + + .weak TIM8_CC_IRQHandler + .thumb_set TIM8_CC_IRQHandler,Default_Handler + + .weak DMA1_Stream7_IRQHandler + .thumb_set DMA1_Stream7_IRQHandler,Default_Handler + + .weak FMC_IRQHandler + .thumb_set FMC_IRQHandler,Default_Handler + + .weak SDMMC1_IRQHandler + .thumb_set SDMMC1_IRQHandler,Default_Handler + + .weak TIM5_IRQHandler + .thumb_set TIM5_IRQHandler,Default_Handler + + .weak SPI3_IRQHandler + .thumb_set SPI3_IRQHandler,Default_Handler + + .weak UART4_IRQHandler + .thumb_set UART4_IRQHandler,Default_Handler + + .weak UART5_IRQHandler + .thumb_set UART5_IRQHandler,Default_Handler + + .weak TIM6_DAC_IRQHandler + .thumb_set TIM6_DAC_IRQHandler,Default_Handler + + .weak TIM7_IRQHandler + .thumb_set TIM7_IRQHandler,Default_Handler + + .weak DMA2_Stream0_IRQHandler + .thumb_set DMA2_Stream0_IRQHandler,Default_Handler + + .weak DMA2_Stream1_IRQHandler + .thumb_set DMA2_Stream1_IRQHandler,Default_Handler + + .weak DMA2_Stream2_IRQHandler + .thumb_set DMA2_Stream2_IRQHandler,Default_Handler + + .weak DMA2_Stream3_IRQHandler + .thumb_set DMA2_Stream3_IRQHandler,Default_Handler + + .weak DMA2_Stream4_IRQHandler + .thumb_set DMA2_Stream4_IRQHandler,Default_Handler + + .weak ETH_IRQHandler + .thumb_set ETH_IRQHandler,Default_Handler + + .weak ETH_WKUP_IRQHandler + .thumb_set ETH_WKUP_IRQHandler,Default_Handler + + .weak CAN2_TX_IRQHandler + .thumb_set CAN2_TX_IRQHandler,Default_Handler + + .weak CAN2_RX0_IRQHandler + .thumb_set CAN2_RX0_IRQHandler,Default_Handler + + .weak CAN2_RX1_IRQHandler + .thumb_set CAN2_RX1_IRQHandler,Default_Handler + + .weak CAN2_SCE_IRQHandler + .thumb_set CAN2_SCE_IRQHandler,Default_Handler + + .weak OTG_FS_IRQHandler + .thumb_set OTG_FS_IRQHandler,Default_Handler + + .weak DMA2_Stream5_IRQHandler + .thumb_set DMA2_Stream5_IRQHandler,Default_Handler + + .weak DMA2_Stream6_IRQHandler + .thumb_set DMA2_Stream6_IRQHandler,Default_Handler + + .weak DMA2_Stream7_IRQHandler + .thumb_set DMA2_Stream7_IRQHandler,Default_Handler + + .weak USART6_IRQHandler + .thumb_set USART6_IRQHandler,Default_Handler + + .weak I2C3_EV_IRQHandler + .thumb_set I2C3_EV_IRQHandler,Default_Handler + + .weak I2C3_ER_IRQHandler + .thumb_set I2C3_ER_IRQHandler,Default_Handler + + .weak OTG_HS_EP1_OUT_IRQHandler + .thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler + + .weak OTG_HS_EP1_IN_IRQHandler + .thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler + + .weak OTG_HS_WKUP_IRQHandler + .thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler + + .weak OTG_HS_IRQHandler + .thumb_set OTG_HS_IRQHandler,Default_Handler + + .weak DCMI_IRQHandler + .thumb_set DCMI_IRQHandler,Default_Handler + + .weak RNG_IRQHandler + .thumb_set RNG_IRQHandler,Default_Handler + + .weak FPU_IRQHandler + .thumb_set FPU_IRQHandler,Default_Handler + + .weak UART7_IRQHandler + .thumb_set UART7_IRQHandler,Default_Handler + + .weak UART8_IRQHandler + .thumb_set UART8_IRQHandler,Default_Handler + + .weak SPI4_IRQHandler + .thumb_set SPI4_IRQHandler,Default_Handler + + .weak SPI5_IRQHandler + .thumb_set SPI5_IRQHandler,Default_Handler + + .weak SPI6_IRQHandler + .thumb_set SPI6_IRQHandler,Default_Handler + + .weak SAI1_IRQHandler + .thumb_set SAI1_IRQHandler,Default_Handler + + .weak LTDC_IRQHandler + .thumb_set LTDC_IRQHandler,Default_Handler + + .weak LTDC_ER_IRQHandler + .thumb_set LTDC_ER_IRQHandler,Default_Handler + + .weak DMA2D_IRQHandler + .thumb_set DMA2D_IRQHandler,Default_Handler + + .weak SAI2_IRQHandler + .thumb_set SAI2_IRQHandler,Default_Handler + + .weak QUADSPI_IRQHandler + .thumb_set QUADSPI_IRQHandler,Default_Handler + + .weak LPTIM1_IRQHandler + .thumb_set LPTIM1_IRQHandler,Default_Handler + + .weak CEC_IRQHandler + .thumb_set CEC_IRQHandler,Default_Handler + + .weak I2C4_EV_IRQHandler + .thumb_set I2C4_EV_IRQHandler,Default_Handler + + .weak I2C4_ER_IRQHandler + .thumb_set I2C4_ER_IRQHandler,Default_Handler + + .weak SPDIF_RX_IRQHandler + .thumb_set SPDIF_RX_IRQHandler,Default_Handler + + .weak DFSDM1_FLT0_IRQHandler + .thumb_set DFSDM1_FLT0_IRQHandler,Default_Handler + + .weak DFSDM1_FLT1_IRQHandler + .thumb_set DFSDM1_FLT1_IRQHandler,Default_Handler + + .weak DFSDM1_FLT2_IRQHandler + .thumb_set DFSDM1_FLT2_IRQHandler,Default_Handler + + .weak DFSDM1_FLT3_IRQHandler + .thumb_set DFSDM1_FLT3_IRQHandler,Default_Handler + + .weak SDMMC2_IRQHandler + .thumb_set SDMMC2_IRQHandler,Default_Handler + + .weak CAN3_TX_IRQHandler + .thumb_set CAN3_TX_IRQHandler,Default_Handler + + .weak CAN3_RX0_IRQHandler + .thumb_set CAN3_RX0_IRQHandler,Default_Handler + + .weak CAN3_RX1_IRQHandler + .thumb_set CAN3_RX1_IRQHandler,Default_Handler + + .weak CAN3_SCE_IRQHandler + .thumb_set CAN3_SCE_IRQHandler,Default_Handler + + .weak JPEG_IRQHandler + .thumb_set JPEG_IRQHandler,Default_Handler + + .weak MDIOS_IRQHandler + .thumb_set MDIOS_IRQHandler,Default_Handler + + +